Built motion from commit 5ec211cc.|2.5.37
authorAndrea Amorese <andrea.amorese@xenialab.it>
Thu, 21 Oct 2021 14:55:16 +0000 (16:55 +0200)
committerAndrea Amorese <andrea.amorese@xenialab.it>
Thu, 21 Oct 2021 14:55:16 +0000 (16:55 +0200)
1302 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/chat/i18n/en.json
public/app/main/apps/contactmanager/i18n/de.json
public/app/main/apps/dashboards/i18n/cs.json
public/app/main/apps/dashboards/i18n/de.json
public/app/main/apps/dashboards/i18n/en.json
public/app/main/apps/dashboards/i18n/et.json
public/app/main/apps/fax/i18n/cs.json
public/app/main/apps/fax/i18n/en.json
public/app/main/apps/fax/i18n/et.json
public/app/main/apps/mail/i18n/de.json
public/app/main/apps/mail/i18n/en.json
public/app/main/apps/marketplace/i18n/ar.json
public/app/main/apps/marketplace/i18n/cs.json
public/app/main/apps/marketplace/i18n/da.json
public/app/main/apps/marketplace/i18n/de.json
public/app/main/apps/marketplace/i18n/en.json
public/app/main/apps/marketplace/i18n/es.json
public/app/main/apps/marketplace/i18n/et.json
public/app/main/apps/marketplace/i18n/fa.json
public/app/main/apps/marketplace/i18n/fi.json
public/app/main/apps/marketplace/i18n/fr.json
public/app/main/apps/marketplace/i18n/he.json
public/app/main/apps/marketplace/i18n/hi.json
public/app/main/apps/marketplace/i18n/id.json
public/app/main/apps/marketplace/i18n/it.json
public/app/main/apps/marketplace/i18n/ja.json
public/app/main/apps/marketplace/i18n/ko.json
public/app/main/apps/marketplace/i18n/lt.json
public/app/main/apps/marketplace/i18n/lv.json
public/app/main/apps/marketplace/i18n/nl.json
public/app/main/apps/marketplace/i18n/no.json
public/app/main/apps/marketplace/i18n/pl.json
public/app/main/apps/marketplace/i18n/pt-BR.json
public/app/main/apps/marketplace/i18n/pt-PT.json
public/app/main/apps/marketplace/i18n/ru.json
public/app/main/apps/marketplace/i18n/sv.json
public/app/main/apps/marketplace/i18n/tr.json
public/app/main/apps/marketplace/i18n/zh-CN.json
public/app/main/apps/marketplace/i18n/zh-TW.json
public/app/main/apps/motiondialer/i18n/en.json
public/app/main/apps/motiondialer/i18n/it.json
public/app/main/apps/openchannel/i18n/de.json
public/app/main/apps/openchannel/i18n/en.json
public/app/main/apps/sms/i18n/en.json
public/app/main/apps/staff/i18n/ar.json
public/app/main/apps/staff/i18n/cs.json
public/app/main/apps/staff/i18n/da.json
public/app/main/apps/staff/i18n/de.json
public/app/main/apps/staff/i18n/en.json
public/app/main/apps/staff/i18n/es.json
public/app/main/apps/staff/i18n/et.json
public/app/main/apps/staff/i18n/fa.json
public/app/main/apps/staff/i18n/fi.json
public/app/main/apps/staff/i18n/fr.json
public/app/main/apps/staff/i18n/he.json
public/app/main/apps/staff/i18n/hi.json
public/app/main/apps/staff/i18n/id.json
public/app/main/apps/staff/i18n/it.json
public/app/main/apps/staff/i18n/ja.json
public/app/main/apps/staff/i18n/ko.json
public/app/main/apps/staff/i18n/lt.json
public/app/main/apps/staff/i18n/lv.json
public/app/main/apps/staff/i18n/nl.json
public/app/main/apps/staff/i18n/no.json
public/app/main/apps/staff/i18n/pl.json
public/app/main/apps/staff/i18n/pt-BR.json
public/app/main/apps/staff/i18n/pt-PT.json
public/app/main/apps/staff/i18n/ru.json
public/app/main/apps/staff/i18n/sv.json
public/app/main/apps/staff/i18n/tr.json
public/app/main/apps/staff/i18n/zh-CN.json
public/app/main/apps/staff/i18n/zh-TW.json
public/app/main/apps/tools/i18n/de.json
public/app/main/apps/tools/i18n/en.json
public/app/main/apps/tools/i18n/it.json
public/app/main/apps/voice/i18n/ar.json
public/app/main/apps/voice/i18n/cs.json
public/app/main/apps/voice/i18n/da.json
public/app/main/apps/voice/i18n/de.json
public/app/main/apps/voice/i18n/en.json
public/app/main/apps/voice/i18n/es.json
public/app/main/apps/voice/i18n/et.json
public/app/main/apps/voice/i18n/fa.json
public/app/main/apps/voice/i18n/fi.json
public/app/main/apps/voice/i18n/fr.json
public/app/main/apps/voice/i18n/he.json
public/app/main/apps/voice/i18n/hi.json
public/app/main/apps/voice/i18n/id.json
public/app/main/apps/voice/i18n/it.json
public/app/main/apps/voice/i18n/ja.json
public/app/main/apps/voice/i18n/ko.json
public/app/main/apps/voice/i18n/lt.json
public/app/main/apps/voice/i18n/lv.json
public/app/main/apps/voice/i18n/nl.json
public/app/main/apps/voice/i18n/no.json
public/app/main/apps/voice/i18n/pl.json
public/app/main/apps/voice/i18n/pt-BR.json
public/app/main/apps/voice/i18n/pt-PT.json
public/app/main/apps/voice/i18n/ru.json
public/app/main/apps/voice/i18n/sv.json
public/app/main/apps/voice/i18n/tr.json
public/app/main/apps/voice/i18n/zh-CN.json
public/app/main/apps/voice/i18n/zh-TW.json
public/app/main/apps/whatsapp/i18n/ar.json
public/app/main/apps/whatsapp/i18n/cs.json
public/app/main/apps/whatsapp/i18n/da.json
public/app/main/apps/whatsapp/i18n/de.json
public/app/main/apps/whatsapp/i18n/en.json
public/app/main/apps/whatsapp/i18n/es.json
public/app/main/apps/whatsapp/i18n/et.json
public/app/main/apps/whatsapp/i18n/fa.json
public/app/main/apps/whatsapp/i18n/fi.json
public/app/main/apps/whatsapp/i18n/fr.json
public/app/main/apps/whatsapp/i18n/he.json
public/app/main/apps/whatsapp/i18n/hi.json
public/app/main/apps/whatsapp/i18n/id.json
public/app/main/apps/whatsapp/i18n/it.json
public/app/main/apps/whatsapp/i18n/ja.json
public/app/main/apps/whatsapp/i18n/ko.json
public/app/main/apps/whatsapp/i18n/lt.json
public/app/main/apps/whatsapp/i18n/lv.json
public/app/main/apps/whatsapp/i18n/nl.json
public/app/main/apps/whatsapp/i18n/no.json
public/app/main/apps/whatsapp/i18n/pl.json
public/app/main/apps/whatsapp/i18n/pt-BR.json
public/app/main/apps/whatsapp/i18n/pt-PT.json
public/app/main/apps/whatsapp/i18n/ru.json
public/app/main/apps/whatsapp/i18n/sv.json
public/app/main/apps/whatsapp/i18n/tr.json
public/app/main/apps/whatsapp/i18n/zh-CN.json
public/app/main/apps/whatsapp/i18n/zh-TW.json
public/app/quick-panel/i18n/de.json
public/app/reset/i18n/de.json
public/app/toolbar/i18n/de.json
public/app/toolbar/i18n/en.json
public/app/toolbar/i18n/it.json
public/index.html
public/scripts/app.3eccb704.js [moved from public/scripts/app.285b5bd1.js with 51% similarity]
public/styles/app.0b303223.css [deleted file]
public/styles/app.53eff8d6.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/migrations/2.5.36.js [new file with mode: 0644]
server/migrations/2.5.37.js [new file with mode: 0644]
server/mysqldb/index.js
server/routes.js
server/rpc/index.js
server/safe-template.js [new file with mode: 0644]
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..14eba9b 100644 (file)
@@ -1301,12 +1301,12 @@ define({ "api": [
   },
   {
     "type": "post",
-    "url": "/api/auth/google",
+    "url": "/api/auth/local",
     "title": "Creates a new User token",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/auth/google -d '{\"name\": \"john.doe\", \"password\": \"password\"}' \\\n -H \"Content-Type: application/json\" -X POST",
+        "content": "curl https://{domain}/api/auth/local -d '{\"name\": \"john.doe\", \"password\": \"password\"}' \\\n -H \"Content-Type: application/json\" -X POST",
         "type": "json"
       }
     ],
@@ -1334,17 +1334,17 @@ define({ "api": [
     },
     "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/authGoogle/index.js",
+    "filename": "server/api/authLocal/index.js",
     "groupTitle": "Authentication"
   },
   {
     "type": "post",
-    "url": "/api/auth/local",
+    "url": "/api/auth/google",
     "title": "Creates a new User token",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/auth/local -d '{\"name\": \"john.doe\", \"password\": \"password\"}' \\\n -H \"Content-Type: application/json\" -X POST",
+        "content": "curl https://{domain}/api/auth/google -d '{\"name\": \"john.doe\", \"password\": \"password\"}' \\\n -H \"Content-Type: application/json\" -X POST",
         "type": "json"
       }
     ],
@@ -1372,7 +1372,7 @@ define({ "api": [
     },
     "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/authLocal/index.js",
+    "filename": "server/api/authGoogle/index.js",
     "groupTitle": "Authentication"
   },
   {
@@ -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"
@@ -20304,6 +20304,24 @@ define({ "api": [
   },
   {
     "type": "get",
+    "url": "/api/realtime/agents",
+    "title": "Gets realtime agents info",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/realtime/agents -v -u {name}:{password}  -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getAgents",
+    "group": "Realtime",
+    "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/realtime/index.js",
+    "groupTitle": "Realtime"
+  },
+  {
+    "type": "get",
     "url": "/api/realtime/queues",
     "title": "Gets realtime queues info",
     "examples": [
@@ -26240,12 +26258,12 @@ define({ "api": [
   },
   {
     "type": "delete",
-    "url": "/api/fax/queues/{id}/teams",
-    "title": "Remove teams from a queue",
+    "url": "/api/voice/Prefixes/{id}/teams",
+    "title": "Remove teams from a voice prefix",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/fax/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "content": "curl https://{domain}/api/voice/prefixes/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
@@ -26253,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/faxQueue/index.js",
+    "filename": "server/api/voicePrefix/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 +26289,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/chat/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/chat/queues/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
@@ -26289,7 +26307,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/chatQueue/index.js",
     "groupTitle": "Teams"
   },
   {
@@ -26312,12 +26330,12 @@ define({ "api": [
   },
   {
     "type": "delete",
-    "url": "/api/whatsapp/queues/{id}/teams",
+    "url": "/api/fax/queues/{id}/teams",
     "title": "Remove teams from a queue",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/whatsapp/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "content": "curl https://{domain}/api/fax/queues/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
@@ -26325,7 +26343,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/whatsappQueue/index.js",
+    "filename": "server/api/faxQueue/index.js",
     "groupTitle": "Teams"
   },
   {
@@ -26348,12 +26366,12 @@ define({ "api": [
   },
   {
     "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,25 @@ 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"
+  },
+  {
+    "type": "delete",
+    "url": "/api/whatsapp/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",
+        "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/whatsappQueue/index.js",
     "groupTitle": "Teams"
   },
   {
@@ -31389,6 +31425,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": [
@@ -32657,6 +32729,13 @@ define({ "api": [
             "optional": true,
             "field": "dialPredictiveIntervalMinThreshold",
             "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "dialPreviewAutoRecallMe",
+            "description": ""
           }
         ]
       }
@@ -33311,37 +33390,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..83294f5 100644 (file)
   },
   {
     "type": "post",
-    "url": "/api/auth/google",
+    "url": "/api/auth/local",
     "title": "Creates a new User token",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/auth/google -d '{\"name\": \"john.doe\", \"password\": \"password\"}' \\\n -H \"Content-Type: application/json\" -X POST",
+        "content": "curl https://{domain}/api/auth/local -d '{\"name\": \"john.doe\", \"password\": \"password\"}' \\\n -H \"Content-Type: application/json\" -X POST",
         "type": "json"
       }
     ],
     },
     "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/authGoogle/index.js",
+    "filename": "server/api/authLocal/index.js",
     "groupTitle": "Authentication"
   },
   {
     "type": "post",
-    "url": "/api/auth/local",
+    "url": "/api/auth/google",
     "title": "Creates a new User token",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/auth/local -d '{\"name\": \"john.doe\", \"password\": \"password\"}' \\\n -H \"Content-Type: application/json\" -X POST",
+        "content": "curl https://{domain}/api/auth/google -d '{\"name\": \"john.doe\", \"password\": \"password\"}' \\\n -H \"Content-Type: application/json\" -X POST",
         "type": "json"
       }
     ],
     },
     "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/authLocal/index.js",
+    "filename": "server/api/authGoogle/index.js",
     "groupTitle": "Authentication"
   },
   {
     "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/realtime/agents",
+    "title": "Gets realtime agents info",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/realtime/agents -v -u {name}:{password}  -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getAgents",
+    "group": "Realtime",
+    "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/realtime/index.js",
+    "groupTitle": "Realtime"
+  },
+  {
+    "type": "get",
     "url": "/api/realtime/queues",
     "title": "Gets realtime queues info",
     "examples": [
   },
   {
     "type": "delete",
-    "url": "/api/fax/queues/{id}/teams",
-    "title": "Remove teams from a queue",
+    "url": "/api/voice/Prefixes/{id}/teams",
+    "title": "Remove teams from a voice prefix",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/fax/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "content": "curl https://{domain}/api/voice/prefixes/{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/voicePrefix/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/chat/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/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/openchannelQueue/index.js",
+    "filename": "server/api/chatQueue/index.js",
     "groupTitle": "Teams"
   },
   {
   },
   {
     "type": "delete",
-    "url": "/api/whatsapp/queues/{id}/teams",
+    "url": "/api/fax/queues/{id}/teams",
     "title": "Remove teams from a queue",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/whatsapp/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "content": "curl https://{domain}/api/fax/queues/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
     "group": "Teams",
     "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/whatsappQueue/index.js",
+    "filename": "server/api/faxQueue/index.js",
     "groupTitle": "Teams"
   },
   {
   },
   {
     "type": "delete",
-    "url": "/api/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": "delete",
+    "url": "/api/whatsapp/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",
+        "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/whatsappQueue/index.js",
     "groupTitle": "Teams"
   },
   {
   },
   {
     "type": "post",
+    "url": "/api/voice/prefixes/{id}/teams",
+    "title": "Add teams to voice prefix",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/prefixes/{id}/teams -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddTeams",
+    "group": "Voice_Prefix",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voicePrefix/index.js",
+    "groupTitle": "Voice_Prefix"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/prefixes/{id}/teams",
+    "title": "Gets voice prefix team",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/prefixes/{id}/teams -v -u {name}:{password}  -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetTeams",
+    "group": "Voice_Prefix",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voicePrefix/index.js",
+    "groupTitle": "Voice_Prefix"
+  },
+  {
+    "type": "post",
     "url": "/api/voice/prefixes/{id}/users",
     "title": "Add agents to a prefix",
     "examples": [
             "optional": true,
             "field": "dialPredictiveIntervalMinThreshold",
             "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "dialPreviewAutoRecallMe",
+            "description": ""
           }
         ]
       }
     "groupTitle": "Voice_Recordings"
   },
   {
-    "type": "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 0d1b4f6..1814b6e 100644 (file)
@@ -1,6 +1,6 @@
 define({
   "name": "xCALLY Motion API",
-  "version": "2.5.34",
+  "version": "2.5.37",
   "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-18T06:58:50.834Z",
+    "time": "2021-10-21T14:40:31.439Z",
     "url": "http://apidocjs.com",
     "version": "0.24.0"
   }
index af5dd48..d788ba8 100644 (file)
@@ -1,6 +1,6 @@
 {
   "name": "xCALLY Motion API",
-  "version": "2.5.34",
+  "version": "2.5.37",
   "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-18T06:58:50.834Z",
+    "time": "2021-10-21T14:40:31.439Z",
     "url": "http://apidocjs.com",
     "version": "0.24.0"
   }
index 225e85b..cc37218 100644 (file)
@@ -1,6 +1,6 @@
 {
   "name": "motion",
-  "version": "2.5.34",
+  "version": "2.5.37",
   "description": "xCALLY Motion is the new Realtime asynchronous solution for your multichannel contact center over Asterisk.",
   "main": "server/app.js",
   "engines": {
@@ -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 88b668e..6e714eb 100644 (file)
       "WAITINGMESSAGE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
       "WAITINGTITLE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
       "RATINGSTARSNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Mandatory field"
+      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Mandatory field",
+      "EMAIL_ACCOUNT_REQUIRED": "Mandatory field"
     },
     "CM_FIELD": "Contact Manager Field",
     "CHATPROACTIVEACTIONS": "Proactive Actions",
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 b0683a9..7a77010 100644 (file)
     "ATTENTION": "Attention",
     "SOCIAL": "Social",
     "NO_JSCRIPTY_PROJECTS_AVAILABLE": "No Jscripty Projects available",
-    "OPENED": "Opened",
+    "OPENED": "Open",
     "FILTER": "Filter",
     "SELECT_STATUS": "Select Status",
     "SELECT_ACCOUNT": "Select Account",
index df9fabe..dbfb7c7 100644 (file)
@@ -1,10 +1,10 @@
 {
   "DASHBOARDS": {
-    "HOME": "Home",
+    "HOME": "Startseite",
     "CHAT": "Chat",
-    "MAIL": "Email",
-    "SMS": "Sms",
-    "OPENCHANNEL": "Open Channel",
+    "MAIL": "E-Mail",
+    "SMS": "SMS",
+    "OPENCHANNEL": "Offener Kanal",
     "FAX": "Fax",
     "RATING": "Bewertung",
     "FEEDBACK": "Feedback",
     "AGENT": "Agent",
     "CREATED_AT": "Erstellt am",
     "CLOSED_AT": "Geschlossen am",
-    "DISPOSITION": "Disposition",
+    "DISPOSITION": "Qualifizierung",
     "CONTACT": "Kontakt",
     "INTERACTION": "Interaktion",
     "BROWSER_NAME": "Browser Name",
     "BROWSER_VERSION": "Browser Version",
-    "OS_NAME": "Name des Betriebssystems",
-    "OS_VERSION": "Version des Betriebssystems",
+    "OS_NAME": "Betriebssystem Name",
+    "OS_VERSION": "Betriebssystem Version",
     "DEVICE_MODEL": "Gerätemodell",
     "DEVICE_VENDOR": "Gerätehersteller",
     "DEVICE_TYPE": "Gerätetyp",
-    "RECALLME": "Ruf mich zurück",
-    "DROP_RATE": "Abgebrochene Anrufrate",
+    "RECALLME": "Rückruf anfordern",
+    "DROP_RATE": "Abbruchrate Anrufe",
     "DROPPED": "Abgebrochen",
-    "DROPPED_TEXT": "Abgebrochene Anrufe aus der Warteschlange",
+    "DROPPED_TEXT": "Abgebrochene Anrufe innerhalb der Warteschlange",
     "DETAIL": "Detail",
     "MOTION_BULL": "Motion Bull",
     "LIMITED": "Limitiert",
     "LIMITED_TEXT": "IVR-Kampagnen Anrufe getätigt/limitiert",
     "DASHBOARDS": "Dashboards",
-    "RECORDINGS": "Aufnahmen",
-    "TODAY_MOTION_BULL_STATS": "Warteschlangen-Kampagnen Tagesstatistiken",
+    "RECORDINGS": "Aufzeichnungen",
+    "TODAY_MOTION_BULL_STATS": "Tagesstatistiken Warteschlangen",
     "ORIGINATED": "Gewählt",
     "ORIGINATED_TEXT": "Anrufe aus der Warteschlange gewählt",
     "UPDATE": "Aktualisieren",
     "MORE": "Mehr",
     "MOTIONDIALER": "Motion Dialer",
-    "DISPOSE": "Entsorgen",
+    "DISPOSE": "Qualifizieren",
     "QUEUES": "Warteschlangen",
-    "DIALER_CALL": "Dialer Anruf",
+    "DIALER_CALL": "Dialer-Anruf",
     "ELAPSED_TIME": "Abgelaufene Zeit",
     "EDIT": "Bearbeiten",
     "MERGE": "Zusammenführen",
     "DUPLICATE": "Duplizieren",
     "UNIQUEID": "Eindeutige ID",
     "CAMPAIGN": "Kampagne",
-    "NONE": "Keine",
+    "NONE": "Nichts",
     "NAME": "Name",
     "ANSWER_MACHINE": "Anrufbeantworter",
     "INTERESTED": "Interessiert",
     "NOT_INTERESTED": "Kein Interesse",
     "PERSONAL_INFO": "Persönliche Infos",
     "SOLD": "Verkauft",
-    "SPECIAL": "Spezielle",
+    "SPECIAL": "Speziell",
     "BLACKLIST": "Blacklist",
-    "RESCHEDULE": "Verschieben",
+    "RESCHEDULE": "erneut Planen",
     "FIRSTNAME": "Vorname",
     "LASTNAME": "Nachname",
-    "MOBILE": "Mobile",
+    "MOBILE": "Mobilnummer",
     "DATE_OF_BIRTH": "Geburtsdatum",
     "COMPANY": "Unternehmen",
     "TAG": "Tag",
     "POSTALCODE": "Postleitzahl",
     "CUSTOM_FIELDS": "Benutzerdefinierte Felder",
     "GENERAL": "Allgemein",
-    "VOICE": "Sprache",
+    "VOICE": "Sprachanrufe",
     "TODAY_IVR_CAMPAIGNS_STATS": "IVR-Tagesstatistiken",
-    "TODAY_INBOUND_STATS": "Inbound Warteschlangen Tagesstatistiken",
-    "TODAY_OUTBOUND_STATS": "Outbound Warteschlangen Tagesstatistiken",
-    "WAITING": "Anrufe in der Warteschlange",
+    "TODAY_INBOUND_STATS": "Tagesstatistiken - eingehende Warteschlangen",
+    "TODAY_OUTBOUND_STATS": "Tagesstatistiken - ausgehende Warteschlangen",
+    "WAITING": "Anrufe in Warteschlange",
     "TALKING": "Im Gespräch",
-    "INBOUND_ANSWERED": "Angenommen",
-    "OUTBOUND_ANSWERED": "Angenommen",
-    "ABANDONED": "Verlassen",
-    "TOTAL_OFFERED": "Insgesamt",
+    "INBOUND_ANSWERED": "Angenommen eingehend",
+    "OUTBOUND_ANSWERED": "Angenommen ausgehend",
+    "ABANDONED": "Abgebrochen",
+    "TOTAL_OFFERED": "Gesamt angeboten",
     "AVG_HOLD_TIME": "Durchschnittliche Wartezeit",
-    "INBOUND_ANSWER_RATE": "Angenommene Anrufrate",
-    "OUTBOUND_ANSWER_RATE": "Angenommene Anrufrate",
-    "ABANDON_RATE": "Verlassene Anrufrate",
-    "UNMANAGED": "Nicht verwaltete",
-    "TOTAL": "Insgesamt",
+    "INBOUND_ANSWER_RATE": "Antwortrate eingehend",
+    "OUTBOUND_ANSWER_RATE": "Antwortrate ausgehend",
+    "ABANDON_RATE": "Abbruchrate",
+    "UNMANAGED": "Nicht bearbeitet",
+    "TOTAL": "Gesamt",
     "TOT_DURATION": "Gesamtdauer",
     "AVG_DURATION": "Durchschnittliche Dauer",
     "HELP": {
-      "ORIGINATEDLIMITED": "IVR Kampagnen gewählt/Limitiert",
-      "DROPPED": "Die Gesamtzahl abgebrochener Anrufe aus der Warteschlange",
-      "DROP_RATE": "Die Rate aller abgebrochener Anrufe aus der Warteschlange",
-      "WAITING": "Die Gesamtzahl der wartenden Anrufe aus der Warteschlange",
-      "OUTBOUND_ANSWERED": "Die Gesamtzahl der angenommenen ausgehenden Anrufe",
-      "ABANDONED": "Die Gesamtzahl der abgebrochenen Anrufe aus der Warteschlange",
-      "TOTAL_OFFERED": "Die Gesamtzahl der Warteschlangenanrufe (angenommen + verlassen + nicht verwaltet in der letzten Warteschlange des Datenflusses). Beachten Sie, dass Anrufe, die in ein IVR und nicht in eine Warteschlange eingehen, nicht berücksichtigt werden.",
-      "AVG_HOLD_TIME": "Die durchschnittliche Interaktionswartezeit, d.h. die durchschnittliche Wartezeit auf die Antwort eines Agenten für alle vorhandenen Interaktionen.",
-      "OUTBOUND_ANSWER_RATE": "Die Rate aller angenommenen ausgehenden Anrufe",
-      "ABANDON_RATE": "Die Rate aller verlassenen Anrufe aus der Warteschlange",
-      "UNMANAGED": "Die Gesamtzahl der nicht verwalteten Warteschlangenanfrufe für alle vorhandenen Warteschlangen. Es enthält die Anrufe, die durch Timeout, Joinempty, Leavewhenempty und Exitwithkey abgebrochen werden (siehe Asterisk-Dokumentation für weitere Informationen).",
-      "TOTAL": "Die Gesamtzahl der ausgehenden Anrufe",
-      "TOT_DURATION": "Die Gesamtdauer aller ausgehenden Anrufe",
-      "AVG_DURATION": "Die durchschnittliche Dauer aller angenommenen ausgehenden Anrufe",
-      "ORIGINATED": "Die Gesamtzahl der in den Warteschlangenkampagnen gewählten Anrufe",
-      "ABANDONED_RATE": "Die Rate aller abgebrochenen Interaktionen",
-      "AVG_MANAGED_TIME": "Die durchschnittliche verwaltete Interaktionszeit, nämlich die durchschnittliche Zeit, die während des Gesprächs verbracht wird",
-      "MANAGED": "Die Gesamtzahl der abgeschlossenen Interaktionen",
-      "MANAGED_RATE": "Die verwaltete Rate aller Interaktionen",
-      "OPENED": "Die Gesamtzahl der aktiven Interaktionen",
-      "UNMANAGED_RATE": "Die nicht verwaltete Rate aller Interaktionen",
-      "VOICE_ABANDONED": "Die Gesamtzahl der aufgegebenen Warteschlangenanrufe unter Berücksichtigung aller vorhandenen Warteschlangen. Beachten Sie, dass Anrufe, die wegen Timeout und joinempty abgebrochen werden, nicht berücksichtigt werden",
-      "VOICE_ANSWERED": "Die Gesamtzahl der abgeschlossenen Warteschlangenanrufe für alle vorhandenen Warteschlangen",
-      "VOICE_ANSWER_RATE": "Die Antwortrate aller Warteschlangenanrufe",
-      "VOICE_AVG_HOLD_TIME": "Die durchschnittliche Wartezeit für Warteschlangen, nämlich die durchschnittliche Wartezeit auf die Antwort eines Agenten für alle vorhandenen Warteschlangen",
-      "VOICE_AVG_TALK_TIME": "Die durchschnittliche Gesprächszeit in der Warteschlange, nämlich die durchschnittliche Gesprächszeit für alle vorhandenen Warteschlangen",
-      "VOICE_TALKING": "Die Gesamtzahl der aktiven Warteschlangenanrufe für alle vorhandenen Warteschlangen",
-      "VOICE_TOTAL_OFFERED": "Die Gesamtzahl der Warteschlangenanrufe (angenommen + verlassen + nicht verwaltet in der letzten Warteschlange des Datenflusses). Beachten Sie, dass Anrufe, die in ein IVR und nicht in eine Warteschlange eingehen, nicht berücksichtigt werden.",
-      "VOICE_UNMANAGED": "Die Gesamtzahl der nicht verwalteten Warteschlangenanfrufe für alle vorhandenen Warteschlangen. Es enthält die Anrufe, die durch Timeout, Joinempty, Leavewhenempty und Exitwithkey abgebrochen werden (siehe Asterisk-Dokumentation für weitere Informationen).",
-      "VOICE_WAITING": "Die Gesamtanzahl der wartenden Warteschlangenanrufe für alle vorhandenen Warteschlangen",
-      "MANDATORY_DISPOSITION_ENABLED": "Obligatorische Disposition für dieses Konto aktiviert",
-      "EXACT_MATCH_FILTER": "Suche nach einer genauen Übereinstimmung",
-      "LIKE_FILTER": "Suchen Sie nach dem angegebenen Muster"
+      "ORIGINATEDLIMITED": "IVR Kampagnen gewählt/limitiert",
+      "DROPPED": "Gesamtzahl abgebrochener Anrufe innerhalb der Warteschlange",
+      "DROP_RATE": "Abbruchrate aller Anrufe in der Warteschlange",
+      "WAITING": "Gesamtzahl der wartenden Anrufe aus der Warteschlange",
+      "OUTBOUND_ANSWERED": "Gesamtzahl der angenommenen ausgehenden Anrufe",
+      "ABANDONED": "Gesamtzahl der abgebrochenen Anrufe innerhalb der Warteschlange",
+      "TOTAL_OFFERED": "Gesamtzahl der angebotenen Anrufe in der Warteschlange (angenommen + abgebrochen + nicht bearbeitet in der letzten Warteschlange des Callflows). Hinweis: Anrufe innerhalb der IVR werden nicht berücksichtigt.",
+      "AVG_HOLD_TIME": "Durchschnittliche Wartezeit einer Interaktion bis zur Beantwortung durch einen Agenten.",
+      "OUTBOUND_ANSWER_RATE": "Rate aller angenommenen ausgehenden Anrufe",
+      "ABANDON_RATE": "Rate aller abgebrochener Anrufe innerhalb der Warteschlange",
+      "UNMANAGED": "Gesamtzahl der nicht bearbeiteten Anrufe für alle Warteschlangen. Enthält die Anrufe, die durch Timeout, Joinempty, Leavewhenempty und Exitwithkey abgebrochen wurden (siehe Asterisk-Dokumentation für weitere Informationen).",
+      "TOTAL": "Gesamtzahl der ausgehenden Anrufe",
+      "TOT_DURATION": "Gesamtdauer aller ausgehenden Anrufe",
+      "AVG_DURATION": "Durchschnittliche Dauer aller angenommenen ausgehenden Anrufe",
+      "ORIGINATED": "Gesamtzahl der in den Warteschlangen-Kampagnen gewählten Anrufe",
+      "ABANDONED_RATE": "Rate aller abgebrochenen Interaktionen",
+      "AVG_MANAGED_TIME": "Durchschnittliche Bearbeitungszeit einer Interaktion",
+      "MANAGED": "Gesamtzahl der abgeschlossenen Interaktionen",
+      "MANAGED_RATE": "Rate aller bearbeiteten Anrufe",
+      "OPENED": "Gesamtzahl der aktiven Interaktionen",
+      "UNMANAGED_RATE": "Rate aller unbearbeiteten Interaktionen",
+      "VOICE_ABANDONED": "Gesamtzahl der abgebrochenen Anrufe in der Warteschlange unter Berücksichtigung aller vorhandenen Warteschlangen. Hinweis: Anrufe, die wegen Timeout und joinempty abgebrochen wurden, werden nicht berücksichtigt.",
+      "VOICE_ANSWERED": "Gesamtzahl der abgeschlossenen Anrufe für alle vorhandenen Warteschlangen",
+      "VOICE_ANSWER_RATE": "Antwortrate aller Anrufe in der Warteschlange",
+      "VOICE_AVG_HOLD_TIME": "Durchschnittliche Wartezeit bis zur Beantwortung durch einen Agenten für alle vorhandenen Warteschlangen",
+      "VOICE_AVG_TALK_TIME": "Durchschnittliche Gesprächszeit für alle Anrufe aus der Warteschlange ",
+      "VOICE_TALKING": "Gesamtzahl der aktiven Anrufe für alle vorhandenen Warteschlangen",
+      "VOICE_TOTAL_OFFERED": "Gesamtzahl der Anrufe der Warteschlangen (angenommen + abgebrochen + nicht bearbeitet in der letzten Warteschlange des Callflows). Hinweis: Anrufe innerhalb der IVR werden nicht berücksichtigt.",
+      "VOICE_UNMANAGED": "Gesamtzahl der nicht bearbeiteten Anrufe für alle vorhandenen Warteschlangen. Enthält die Anrufe, die durch Timeout, Joinempty, Leavewhenempty und Exitwithkey abgebrochen wurden (siehe Asterisk-Dokumentation für weitere Informationen).",
+      "VOICE_WAITING": "Gesamtanzahl der aktuell wartenden Anrufe für alle vorhandenen Warteschlangen",
+      "MANDATORY_DISPOSITION_ENABLED": "Kontaktqualifizierung erforderlich",
+      "EXACT_MATCH_FILTER": "Suche nach einer genauen Übereinstimmung der Suchbegriffe",
+      "LIKE_FILTER": "Suche nach variablen Übereinstimmungen der Suchbegriffe"
     },
     "ERRORS": {
       "FIRSTNAME_REQUIRED": "Der erste Name ist erforderlich",
       "CAMPAIGN_REQUIRED": "Pflichtfeld",
       "FAILED_INITIALIZATION": "Fehler während der Initialisierung"
     },
-    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
-    "WELCOME_TO_MOTION": "Willkommen bei Motion",
+    "NO_AVAILABLE_INFO": "Keine Information vorhanden",
+    "WELCOME_TO_MOTION": "Willkommen zu Motion",
     "WELCOME_MESSAGE": "Verwenden Sie die linke Seitenleiste, um durch die verfügbaren Abschnitte zu navigieren",
     "ADD": "Hinzufügen",
-    "CONTACTMANAGER": "Contact Manager",
+    "CONTACTMANAGER": "Kontaktmanager",
     "DASHBOARD": "Dashboard",
     "EDIT_CONTACT": "Kontakt bearbeiten",
     "EMAIL": "E-Mail",
     "NEW_CONTACT": "Neuer Kontakt",
     "PHONE": "Telefon",
     "SAVE": "Speichern",
-    "INBOUND_WAITING_CALLS": "Eingehende Anrufe in der Warteschlange",
+    "INBOUND_WAITING_CALLS": "Wartende Anrufe (Eingehend)",
     "CONTACTS": "Kontakte",
     "MYCONTACTS": "Meine Kontakte",
     "ADD_CONTACT": "Kontakt hinzufügen",
-    "RELOAD": "Neu laden",
+    "RELOAD": "Neu Laden",
     "WAITING_TEXT": "Wartende Interaktionen",
-    "TALKING_TEXT": "Aktive Anrufe in der Warteschlange",
-    "INBOUND_ANSWERED_TEXT": "Angenommene Anrufe in der Warteschlange",
-    "ABANDONED_TEXT": "Verlassene Anrufe in der Warteschlange",
-    "DROP_RATE_TEXT": "Rate abgebrochener Anrufe in der Warteschlange",
-    "TOTAL_OFFERED_TEXT": "Gesamtzahl der Interaktionen",
-    "AVG_HOLD_TIME_TEXT": "Durchschnittliche Wartezeit der Interaktionen",
-    "AVG_TALK_TIME_TEXT": "Gesprächszeit der Warteschlangenanrufe",
-    "INBOUND_ANSWER_RATE_TEXT": "Rate angenommener Anrufe in der Warteschlange ",
-    "UNMANAGED_TEXT": "Nicht verwaltete Interaktionen",
-    "TOTAL_TEXT": "Gesamtzahl ausgehender Anrufe",
-    "OUTBOUND_ANSWERED_TEXT": "Ausgehende angenommene Anrufe ",
+    "TALKING_TEXT": "Aktive Anrufe",
+    "INBOUND_ANSWERED_TEXT": "Angenommene Anrufe",
+    "ABANDONED_TEXT": "Abgebrochene Anrufe",
+    "DROP_RATE_TEXT": "Abbruchrate",
+    "TOTAL_OFFERED_TEXT": "Gesamt angebotene Interaktionen",
+    "AVG_HOLD_TIME_TEXT": "Durchschnittliche Wartezeit",
+    "AVG_TALK_TIME_TEXT": "Durchschnittliche Gesprächszeit",
+    "INBOUND_ANSWER_RATE_TEXT": "Antwortrate ",
+    "UNMANAGED_TEXT": "Nicht bearbeitete Interaktionen",
+    "TOTAL_TEXT": "Gesamt ausgehende Anrufe",
+    "OUTBOUND_ANSWERED_TEXT": "Beantwortete Anrufe (Ausgehend) ",
     "TOT_DURATION_TEXT": "Gesamtdauer ausgehender Anrufe ",
     "AVG_DURATION_TEXT": "Durchschnittliche Dauer ausgehender Anrufe",
     "OUTBOUND_ANSWER_RATE_TEXT": "Rate angenommener ausgehender Anrufe",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "Von",
-    "REPLY_PLACEHOLDER": "Geben Sie ein und drücken Sie die Eingabetaste, um eine Nachricht zu senden",
+    "OF": "von",
+    "REPLY_PLACEHOLDER": "Text eingeben und ENTER drücken zum Senden",
     "CONTACT_INFO": "Kontaktinformationen",
-    "CLOSE_AND_DISPOSE": "Schließen und Entsorgen",
-    "DISPOSITIONS": "Dispositionen",
-    "CLOSE_WITHOUT_DISPOSE": "Schließen ohne Entsorgen",
-    "ACCEPT": "Akzeptieren",
+    "CLOSE_AND_DISPOSE": "Schließen und Qualifizieren",
+    "DISPOSITIONS": "Qualifizierungen",
+    "CLOSE_WITHOUT_DISPOSE": "Schließen ohne Qualifizierung",
+    "ACCEPT": "Annehmen",
     "REJECT": "Ablehnen",
     "CLOSED": "Geschlossen",
-    "INFO": "Info",
+    "INFO": "Information",
     "NOTE": "Hinweis",
-    "ACCEPT_ELSEWHERE": "Anderswo akzeptiert",
+    "ACCEPT_ELSEWHERE": "Von anderem Teilnehmer angenommen",
     "ATTENTION": "Achtung",
     "SOCIAL": "Sozial",
     "NO_JSCRIPTY_PROJECTS_AVAILABLE": "Keine Jscripty-Projekte verfügbar",
     "FILTER": "Filter",
     "SELECT_STATUS": "Status auswählen",
     "SELECT_ACCOUNT": "Konto auswählen",
-    "SELECT_WEBSITE": "Wählen Sie die Webseite",
-    "ALL": "Alle",
+    "SELECT_WEBSITE": "Webseite auswählen",
+    "ALL": "Alles",
     "INTERACTIONS": "Interaktionen",
-    "STARTEDAT": "Gestartet am",
+    "STARTEDAT": "Begonnen am",
     "STATUS": "Status",
     "OPEN": "Öffnen",
-    "SHOW": "Zeigen",
+    "SHOW": "Anzeigen",
     "ME": "ICH",
     "NOT_ASSIGNED": "Nicht zugewiesen",
     "UNKNOWN": "Unbekannt",
-    "SELECT_USER": "Wählen Sie einen Benutzer",
+    "SELECT_USER": "Benutzer auswählen",
     "LAST_MESSAGE": "Letzte Nachricht",
     "USER": "Benutzer",
     "TAGS": "Tags",
     "SOURCE": "Quelle",
     "DESTINATION": "Ziel",
     "CALLERID": "Anrufer-ID",
-    "END_AT": "Ende am",
+    "END_AT": "Beendet am",
     "DURATION": "Dauer",
     "SHOW_DETAILS": "Details anzeigen",
     "HIDE_DETAILS": "Details ausblenden",
     "EXTERNAL_URL": "Externer Link",
     "SET_AS": "Festlegen als",
     "PENDING": "Ausstehend",
-    "CANNED_ANSWER_NOT_FOUND": "Es wurden keine vordefinierten Antworten gefunden",
-    "CANNED_ANSWER_SEARCH": "Geben Sie einen Text ein, um eine vordefinierte Antwort zu suchen",
+    "CANNED_ANSWER_NOT_FOUND": "Keine Textbausteine gefunden",
+    "CANNED_ANSWER_SEARCH": "Hier nach einem Textbaustein suchen",
     "NO_MAIL_ACCOUNTS_AVAILABLE": "Keine E-Mail-Konten verfügbar",
     "NO_FAX_ACCOUNTS_AVAILABLE": "Keine Fax-Konten verfügbar",
     "NO_SMS_ACCOUNTS_AVAILABLE": "Keine SMS-Konten verfügbar",
-    "FILTER_VOICE_QUEUES": "Sprachwarteschlangen filtern",
-    "LOADING_INTERACTION": "Wir laden die Interaktion ...",
+    "FILTER_VOICE_QUEUES": "Anrufwarteschlangen filtern",
+    "LOADING_INTERACTION": "Interaktion wird geladen",
     "JANUARY": "Januar",
     "FEBRUARY": "Februar",
     "MARCH": "März",
     "SELECT_DATE": "Datum auswählen",
     "SELECT_DATE_RANGE": "Wählen Sie einen Datumsbereich",
     "CLEAR": "Löschen",
-    "CALL_NUMBER": "Anruf",
+    "CALL_NUMBER": "Anrufen",
     "TRANSFER_NUMBER": "Transfer",
-    "CALL_SAVED": "Anruf richtig gespeichert",
-    "CALL_DISPOSED": "Anruf richtig entsorgt",
-    "CHANNEL_WAITING_TEXT": "Wartende Warteschlangen-Interaktionen",
+    "CALL_SAVED": "Anruf erfolgreich gespeichert",
+    "CALL_DISPOSED": "Anruf erfolgreich qualifiziert",
+    "CHANNEL_WAITING_TEXT": "Wartende Interaktionen",
     "CHANNEL_QUEUE": "Warteschlange",
-    "CHANNEL_FROM": "Von",
+    "CHANNEL_FROM": "von",
     "MARK_AS_UNREAD": "Als ungelesen markieren",
-    "SELECT_AGENT": "Wählen Sie den Agenten aus",
+    "SELECT_AGENT": "Agenten auswählen",
     "READ": "Gelesen",
-    "SELECT_READ_UNREAD": "Wählen Sie Lesen/Ungelesen",
-    "SELECT_SUBSTATUS": "Wählen Sie Substatus",
+    "SELECT_READ_UNREAD": "Wählen ob Lesen/Ungelesen",
+    "SELECT_SUBSTATUS": "Zwischenstatus auswählen",
     "UNREAD": "Ungelesen",
-    "ABANDONAT": "Verlassen",
-    "ABANDONEDQUEUECALLS": "Verlassene Warteschlangenanrufe",
+    "ABANDONAT": "Abgebrochen",
+    "ABANDONEDQUEUECALLS": "Abgebrochene Anrufe",
     "FREE": "Frei",
     "LASTASSIGNEDTO": "Zuletzt zugewiesen an",
     "QUEUE": "Warteschlange",
     "QUEUECALLEREXITAT": "Abgebrochen",
     "QUEUECALLEREXITREASON": "Grund",
     "RESERVED": "Reserviert",
-    "SELECT_CAMPAIGN": "Wählen Sie eine Warteschlange",
+    "SELECT_CAMPAIGN": "Warteschlange auswählen",
     "ASSIGNTO": "Zuweisen",
-    "CLICKRELOAD": "Neue verlassene Anrufe! Bitte neu laden",
+    "CLICKRELOAD": "Verpasste Anrufe! Bitte Seite erneut laden",
     "NOTAVAILABLE": "Nicht verfügbar",
-    "CURRENTLY_IN_USE_BY": "Derzeit im Einsatz von",
-    "CUSTOMER_JOURNEY": "Kundenreise",
+    "CURRENTLY_IN_USE_BY": "Derzeit verwendet von",
+    "CUSTOMER_JOURNEY": "Kundenhistorie",
     "NO_DATA_AVAILABLE": "Keine Daten verfügbar",
     "AGENTS": "Agenten",
     "TRANSFER": "Transfer",
-    "NO_DISPOSITION_SET": "Keine Disposition festgelegt",
-    "ABANDONED_RATE": "Verlassene Rate",
-    "ABANDONED_RATE_TEXT": "Rate verlassener Interaktionen",
-    "AVG_MANAGED_TIME": " Durchschnittliche Verwaltungszeit",
-    "AVG_MANAGED_TIME_TEXT": "Durchschnittliche Verwaltungszeit der Interkationen",
-    "MANAGED": "Verwaltet",
-    "MANAGED_RATE": "Verwaltete Rate",
-    "MANAGED_RATE_TEXT": "Verwaltete Interaktionsrate",
-    "MANAGED_TEXT": "Verwaltete Interaktionen",
-    "OPENED_TEXT": "Geöffnete Interaktionen",
+    "NO_DISPOSITION_SET": "Keine Qualifizierungen definiert",
+    "ABANDONED_RATE": "Abbruchrate",
+    "ABANDONED_RATE_TEXT": "Rate der abgebrochenen Anrufe innerhalb der Warteschlange",
+    "AVG_MANAGED_TIME": "Durchschnittliche Bearbeitungszeit",
+    "AVG_MANAGED_TIME_TEXT": "Durchschnittliche Bearbeitungszeit aller Interkationen",
+    "MANAGED": "Bearbeitet",
+    "MANAGED_RATE": "Bearbeitungsrate",
+    "MANAGED_RATE_TEXT": "Rate der bearbeiteten Interaktionen",
+    "MANAGED_TEXT": "Interaktionen bearbeitet",
+    "OPENED_TEXT": "Interaktionen geöffnet",
     "TODAY_INTERACTIONS_STATS": "Interaktionen Tagesstatistiken",
-    "UNMANAGED_RATE": "Nicht verwaltete Rate",
-    "UNMANAGED_RATE_TEXT": "Nicht verwaltete Interaktionsate",
-    "VOICE_ABANDONED": "Verlassen",
-    "VOICE_ABANDONED_TEXT": "Verlassene Warteschlangenanrufe",
-    "VOICE_ABANDON_RATE": "Verlassene Rate",
-    "VOICE_ABANDON_RATE_TEXT": "Rate verlassener Warteschlangenanrufe",
+    "UNMANAGED_RATE": "Rate nicht Bearbeitet",
+    "UNMANAGED_RATE_TEXT": "Rate der nicht bearbeiteten Interaktionen in der Warteschlange",
+    "VOICE_ABANDONED": "Abgebrochen",
+    "VOICE_ABANDONED_TEXT": "Abgebrochene Anrufe innerhalb der Warteschlange",
+    "VOICE_ABANDON_RATE": "Abbruchrate",
+    "VOICE_ABANDON_RATE_TEXT": "Rate der abgebrochenen Anrufe innerhalb der Warteschlange",
     "VOICE_ANSWERED": "Angenommen",
     "VOICE_ANSWERED_TEXT": "Angenommene Anrufe in der Warteschlange",
-    "VOICE_ANSWER_RATE": "Angenommene Rate",
+    "VOICE_ANSWER_RATE": "Antwortrate",
     "VOICE_ANSWER_RATE_TEXT": "Rate angenommener Anrufe in der Warteschlange",
     "VOICE_AVG_HOLD_TIME": "Durchschnittliche Wartezeit",
-    "VOICE_AVG_HOLD_TIME_TEXT": "Queue ruft AVG HOLD TIME an",
+    "VOICE_AVG_HOLD_TIME_TEXT": "Durchschnittliche Wartezeit aller Sprachanrufe",
     "VOICE_AVG_TALK_TIME": "Durchschnittliche Gesprächszeit",
-    "VOICE_AVG_TALK_TIME_TEXT": "Gesprächszeit der Anrufe in der Warteschlage",
+    "VOICE_AVG_TALK_TIME_TEXT": "Durchschnittliche Gesprächszeit aller Anrufe nach der Warteschleife",
     "VOICE_TALKING": "IM GESPRÄCH",
     "VOICE_TALKING_TEXT": "Aktive Anrufe in der Warteschlange",
-    "VOICE_TOTAL_OFFERED": "Insgesamt",
-    "VOICE_TOTAL_OFFERED_TEXT": "Gesamtzahl der Anrufe in der Warteschlange",
-    "VOICE_UNMANAGED": "Nicht verwaltet",
-    "VOICE_UNMANAGED_TEXT": "Nicht verwaltete Anrufe in der Warteschlange",
+    "VOICE_TOTAL_OFFERED": "Gesamt angeboten",
+    "VOICE_TOTAL_OFFERED_TEXT": "Gesamtzahl der angebotenen Anrufe in der Warteschlange",
+    "VOICE_UNMANAGED": "Nicht bearbeitet",
+    "VOICE_UNMANAGED_TEXT": "Nicht bearbeitete Anrufe in der Warteschlange",
     "VOICE_WAITING": "Wartende Anrufe",
     "VOICE_WAITING_TEXT": "Wartende Anrufe in der Warteschlange",
     "DOWNLOAD": "Herunterladen",
     "SCHEDULED_CALLS": "Geplante Anrufe",
-    "PRIVATE": "Privat",
+    "PRIVATE": "Persönlich",
     "PUBLIC": "Öffentlich",
-    "PUBLIC_INTERACTION": "Die Interaktion ist öffentlich",
+    "PUBLIC_INTERACTION": "Öffentliche Interaktion",
     "VISIBILITY": "Sichtbarkeit",
-    "INTERACTION_CLOSED": "Interaktion korrekt geschlossen",
-    "INTERACTION_CLOSED_DISPOSED": "Interaktion korrekt geschlossen und entsorgt",
-    "INTERACTION_DISPOSED": "Interaktion korrekt entsorgt",
-    "ASSIGNED_TO_OTHERS": "An andere zugewiesen",
-    "SELECT_ALL": "Alle auswählen",
+    "INTERACTION_CLOSED": "Interaktion erfolgreich geschlossen",
+    "INTERACTION_CLOSED_DISPOSED": "Interaktion erfolgreich geschlossen und qualifiziert",
+    "INTERACTION_DISPOSED": "Interaktion erfolgreich qualifiziert",
+    "ASSIGNED_TO_OTHERS": "An Andere zugewiesen",
+    "SELECT_ALL": "Alles auswählen",
     "CHAT_INTERACTIONS": "Chat-Interaktionen",
     "FAX_INTERACTIONS": "Fax-Interaktionen",
-    "ID": "Id",
+    "ID": "ID",
     "MAIL_INTERACTIONS": "E-Mail-Interaktionen",
-    "OPENCHANNEL_INTERACTIONS": "Open Channel-Interaktionen",
+    "OPENCHANNEL_INTERACTIONS": "Offener-Kanal-Interaktionen",
     "SMS_INTERACTIONS": "SMS-Interaktionen",
-    "CANCEL": "Stornieren",
-    "DRAFT": "Entwurf",
-    "DRAFT_SAVE_WARNING_MESSAGE": "Für diese Interaktion ist bereits ein Entwurf gespeichert. Sind Sie sicher, dass Sie ihn überschreiben möchten?",
+    "CANCEL": "Abbrechen",
+    "DRAFT": "Entwurf speichern",
+    "DRAFT_SAVE_WARNING_MESSAGE": "Für diese Interaktion ist bereits ein Entwurf gespeichert. Möchten Sie diesen überschreiben?",
     "DRAFT_SAVE_WARNING_TITLE": "Vorhandenen Entwurf überschreiben?",
     "OVERWRITE": "Überschreiben",
     "SAVE_AS_DRAFT": "Als Entwurf speichern",
     "UNTITLED": "Ohne Titel",
     "UPDATE_DRAFT": "Entwurf aktualisieren",
     "NO_AVAILABLE_INTERACTION": "Keine Interaktionen verfügbar",
-    "ACCOUNTINGDOC": "Buchhaltung",
+    "ACCOUNTINGDOC": "Abrechnungsdokumente",
     "ADD_PRODUCTPRICELIST": "PRODUKT HINZUFÜGEN",
     "AGENTFULLNAME": "Agent",
     "ALL_COMPANIES": "Alle Unternehmen",
-    "ALL_PRODUCTS": "Alle",
-    "ALL_STATUS": "Alle",
-    "ALL_STEP": "Alle",
+    "ALL_PRODUCTS": "Alles",
+    "ALL_STATUS": "Alles",
+    "ALL_STEP": "Alles",
     "ALL_WORKFLOW": "Alle Arbeitsabläufe",
     "ATTENDACELASTINVOICE": "Letzte Rechnung",
     "ATTENDACENEXTINVOICE": "Nächste Rechnung",
     "AUTHORIZED": "AUTORISIERT",
     "AUTOINVOICE": "SELBSTABRECHNUNG",
     "AUTOPROFORMA": "SELBST-PROFORMA",
-    "BALANCE": "BALANCE",
+    "BALANCE": "SALDO",
     "BY": "Durch",
     "CLONEPROFORMA": "Klon",
     "COMPANIES": "Unternehmen",
     "DOSSIERS": "Dossiers",
     "DOSSIER_INFO": "Information",
     "ENDDATE": "Ablaufdatum",
-    "FROM": "Von",
+    "FROM": "von",
     "GRAPHINVOICES": "Diagramm der Rechnungsemission",
     "INASSET": "Kapital",
     "INVOICE": "RECHNUNG",
     "INVOICEPAYED": "Bezahlt",
     "INVOICES": "RECHNUNGEN",
     "INVOICESTATUS": "Status",
-    "INVOICETOTAL": "Insgesamt",
+    "INVOICETOTAL": "Gesamt",
     "INVOICE_INFO": "Rechnung",
     "MANAGESALES": "Abonnements",
     "MOVEASSET": "Kapital",
     "QUOTATIONSTATUS": "Status",
     "QUOTATIONSUBSCRIPTION": "Dauer",
     "QUOTATIONTAX": "MwSt",
-    "QUOTATIONTOTAL": "Insgesamt",
+    "QUOTATIONTOTAL": "Gesamt",
     "QUOTATIONTOTALPRICE": "Gesamt netto",
-    "QUOTATIONTOTALS": "Insgesamt",
+    "QUOTATIONTOTALS": "Gesamt",
     "QUOTATIONTOTALTAX": "Gesamtsteuer",
     "QUOTATIONUNIT": "Einheit",
     "QUOTATIONVAT": "VAT",
     "TOTALPAYMENTS": "Gesamtzahlungen",
     "UPDATED_AT": "Geändert am",
     "UPDATE_PRODUCT": "Produkt aktualisieren",
-    "WORKFLOW": "Wählen Sie einen Arbeitsablauf",
+    "WORKFLOW": "Arbeitsablauf wählen",
     "YEARS": "Jahre",
     "CUSTOMER_IP": "Ursprüngliche IP-Adresse",
     "CUSTOMER_PORT": "Ursprünglicher TCP-Port",
     "ADVANCED_SEARCH": "Erweiterte Suche",
-    "AND": "Und",
+    "AND": "und",
     "APPLY": "Anwenden",
-    "CONTAINS": "Enthält",
+    "CONTAINS": "enthält",
     "DISABLED": "Deaktiviert",
     "ENABLED": "Aktiviert",
     "ENDING_DATE": "Enddatum",
     "ENDING_VALUE": "Endwert",
-    "ENDS_WITH": "Endet mit",
-    "EQUALS": "Gleich",
-    "IS_AMONG": "Ist unter",
-    "IS_BETWEEN": "Ist zwischen",
-    "IS_GREATER_THAN": "Ist größer als",
-    "IS_GREATER_THAN_OR_EQUAL_TO": "Ist größer oder gleich",
-    "IS_LESS_THAN": "Ist kleiner als",
-    "IS_LESS_THAN_OR_EQUAL_TO": "Ist kleiner oder gleich",
-    "IS_NOT_AMONG": "Ist nicht unter",
-    "IS_NOT_EQUAL": "Ist nicht gleich",
+    "ENDS_WITH": "endet mit",
+    "EQUALS": "gleich",
+    "IS_AMONG": "ist unter",
+    "IS_BETWEEN": "ist zwischen",
+    "IS_GREATER_THAN": "ist größer als",
+    "IS_GREATER_THAN_OR_EQUAL_TO": "ist größer oder gleich",
+    "IS_LESS_THAN": "ist kleiner als",
+    "IS_LESS_THAN_OR_EQUAL_TO": "ist kleiner oder gleich",
+    "IS_NOT_AMONG": "ist nicht innerhalb",
+    "IS_NOT_EQUAL": "ist nicht gleich",
     "MEET_ALL_CONDITIONS": "Alle Bedingungen erfüllen",
     "MEET_ANY_CONDITIONS": "Mindestens eine Bedingung erfüllen",
     "NEW_CONDITION": "Neue Bedingung",
     "SELECT_OPERATOR": "Operator auswählen",
     "STARTING_DATE": "Startdatum",
     "STARTING_VALUE": "Startwert",
-    "STARTS_WITH": "Beginnt mit",
+    "STARTS_WITH": "beginnt mit",
     "VALUE": "Wert",
     "VALUES": "Werte",
     "VALUE_RANGE_CHECK": "Wert muss größer sein als",
-    "CHOOSE": "Wählen",
+    "CHOOSE": "Auswählen",
     "DOWNLOAD_WITHOUT_ATTACHMENTS": "Herunterladen ohne Anhänge",
     "DOWNLOAD_WITH_ATTACHMENTS": "Mit Anhängen herunterladen",
-    "SELECT_QUEUE": "Wählen Sie eine Warteschlange aus",
+    "SELECT_QUEUE": "Warteschlange auswählen",
     "VIDAOOSESSION": "Videoanruf starten",
     "WHATSAPP": "WhatsApp Connector",
-    "WHATSAPP_INTERACTIONS": "WhatsApp Connector-Interaktionen",
+    "WHATSAPP_INTERACTIONS": "WhatsApp-Interaktionen",
     "LAST_UPDATED": "Zuletzt aktualisiert",
     "MATCHING_FIELD": "Übereinstimmendes Feld",
     "MULTIPLE_CONTACTS_FOUND": "Mehrere Kontakte für Nummer gefunden",
-    "SELECT": "Wählen",
+    "SELECT": "Auswählen",
     "SELECT_CONTACT": "Kontakt auswählen",
-    "WHICH_ONE_TO_USE": "Welches möchten Sie verwenden?",
+    "WHICH_ONE_TO_USE": "Welcher Eintrag soll verwendet werden?",
     "NO_WHATSAPP_ACCOUNTS_AVAILABLE": "Kein WhatsApp-Konto verfügbar",
-    "SECOND_LEVEL_DISPOSITION": "Disposition der zweiten Ebene",
-    "THIRD_LEVEL_DISPOSITION": "Disposition der dritten Ebene",
+    "SECOND_LEVEL_DISPOSITION": "Qualifizierung der zweiten Ebene",
+    "THIRD_LEVEL_DISPOSITION": "Qualifizierung der dritten Ebene",
     "LICENSE_EXPIRE_REMAINING_DAYS": "Ihre Lizenz läuft bald ab! Bitte wenden Sie sich an Ihren Administrator",
     "CREATEDAT": "Hergestellt in",
     "ELAPSED_ANSWERED": "Verstrichene Zeit seit dem Start des Anrufs",
     "ELAPSED_DISPOSED": "Verstrichene Zeit seit Beendigung des Anrufs",
-    "LOST_CONNECTION": "Probleme mit der Netzwerkkonnektivität. Bitte überprüfe deine Internetverbindung.",
+    "LOST_CONNECTION": "Probleme mit der Netzwerkkonnektivität. Bitte Internetverbindung prüfen.",
     "NO_RESULTS_AVAILABLE": "Keine Ergebnisse verfügbar",
-    "AUTOCLOSE": "Schließen Sie die Kontaktlasche nach der Entsorgung automatisch",
-    "AGENT_PRESENCE": "Agentenpräsenz",
-    "SELECT_TEAM": "Team auswählen",
-    "AVAILABLE": "Erhältlich"
+    "AUTOCLOSE": "Tab nach Qualifizierung automatisch schließen",
+    "AGENT_PRESENCE": "Bereitschaftsstatus",
+    "SELECT_TEAM": "Team auswählen"
   }
 }
index 1851427..f0ce997 100644 (file)
     "ATTENTION": "Attention",
     "SOCIAL": "Social",
     "NO_JSCRIPTY_PROJECTS_AVAILABLE": "No Jscripty Projects available",
-    "OPENED": "Opened",
+    "OPENED": "Open",
     "FILTER": "Filter",
     "SELECT_STATUS": "Select Status",
     "SELECT_ACCOUNT": "Select Account",
index e584f60..a52a198 100644 (file)
     "ATTENTION": "Attention",
     "SOCIAL": "Social",
     "NO_JSCRIPTY_PROJECTS_AVAILABLE": "No Jscripty Projects available",
-    "OPENED": "Opened",
+    "OPENED": "Open",
     "FILTER": "Filter",
     "SELECT_STATUS": "Select Status",
     "SELECT_ACCOUNT": "Select Account",
index 2944a52..7f93599 100644 (file)
     "SELECT_STATUS": "Select Status",
     "ALL": "All",
     "CLOSED": "Closed",
-    "OPENED": "Opened",
+    "OPENED": "Open",
     "SELECT_ACCOUNT": "Select Account",
     "INTERACTIONS": "Interactions",
     "CONTACT": "Contact",
index bc9aa75..bfa0d7e 100644 (file)
     "SELECT_STATUS": "Select Status",
     "ALL": "All",
     "CLOSED": "Closed",
-    "OPENED": "Opened",
+    "OPENED": "Open",
     "SELECT_ACCOUNT": "Select Account",
     "INTERACTIONS": "Interactions",
     "CONTACT": "Contact",
index 7e03440..ffbc857 100644 (file)
     "SELECT_STATUS": "Select Status",
     "ALL": "All",
     "CLOSED": "Closed",
-    "OPENED": "Opened",
+    "OPENED": "Open",
     "SELECT_ACCOUNT": "Select Account",
     "INTERACTIONS": "Interactions",
     "CONTACT": "Contact",
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 6183ea9..7a1ec06 100644 (file)
@@ -61,7 +61,7 @@
     "UNPAUSE": "End Pause",
     "DEFAULT_PAUSE": "Default pause",
     "LOGOUT": "Logout",
-    "AGENTADD_QUEUE": "Add agent to Email queue",
+    "AGENTADD_QUEUE": "Add Agent To Email Queue",
     "VOICE": "Voice",
     "CHAT": "Chat",
     "SMS": "Sms",
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 3964882..bc7a95d 100644 (file)
       "MACHINERETRYTIME": "Time in minutes before trying to call again a failed contact due to machine",
       "AGENTREJECTMAXRETRY": "Maximum number of times a contact is called before considering it closed, when the call failed for agent reject",
       "AGENTREJECTRETRYTIME": "Time in minutes before trying to call again a failed contact due to agent reject",
-      "MANDATORYDISPOSITIONPAUSEID": "Pause status to set during mandatory disposition"
+      "MANDATORYDISPOSITIONPAUSEID": "Pause status to set during mandatory disposition",
+      "PREVIEW_AUTO_RECALL_ME": "If enabled, the system will automatically generate the Recall Me calls; otherwise, the agent must do it manually"
     },
     "MUSICONHOLD": "Music On Hold",
     "ANNOUNCETOAGENT": "Announce To Agent",
     "MANDATORYDISPOSITION": "Mandatory disposition",
     "MANDATORYDISPOSITIONPAUSEID": "Mandatory disposition pause status",
     "TOOLTIP_SCREENRECORDING_ON": "Screen Recording in progress",
-    "TOOLTIP_SCREENRECORDING_OFF": "Screen Recording available"
+    "TOOLTIP_SCREENRECORDING_OFF": "Screen Recording available",
+    "PREVIEW_AUTO_RECALL_ME": "Automate Recall Me calls"
   }
 }
index 903bd47..e326679 100644 (file)
       "MACHINERETRYTIME": "Tempo in minuti prima di provare a richiamare un contatto non riuscito a causa della macchina",
       "NOSUCHNUMBERETRYTIME": "Tempo in minuti prima di provare a chiamare nuovamente un contatto non riuscito a causa di tale numero",
       "NOSUCHNUMBERMAXRETRY": "Numero massimo di volte in cui un contatto viene chiamato prima di considerarlo chiuso, quando la chiamata non è riuscita senza tale numero",
-      "NOSUCHNUMBERRETRYTIME": "Tempo in minuti prima di provare a chiamare di nuovo un contatto fallito a causa della mancanza di tale numero"
+      "NOSUCHNUMBERRETRYTIME": "Tempo in minuti prima di provare a chiamare di nuovo un contatto fallito a causa della mancanza di tale numero",
+      "PREVIEW_AUTO_RECALL_ME": "Se abilitato, il sistema genererà automaticamente le chiamate Recall Me, altrimenti l'agente dovrà effettuarle manualmente"
     },
     "MUSICONHOLD": "Musica di attesa",
     "ANNOUNCETOAGENT": "Annuncio all'Agente",
     "NOSUCHNUMBERMAXRETRY": "Numero massimo di tentativi",
     "NOSUCHNUMBERRETRYTIME": "Riprova [min]",
     "TOOLTIP_SCREENRECORDING_OFF": "Registrazione dello schermo disponibile",
-    "TOOLTIP_SCREENRECORDING_ON": "Registrazione dello schermo in corso"
+    "TOOLTIP_SCREENRECORDING_ON": "Registrazione dello schermo in corso",
+    "PREVIEW_AUTO_RECALL_ME": "Automatizza chiamate Recall Me"
   }
 }
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 49fbeed..8093eec 100644 (file)
     "PHONE_STATUS": "Phone Status",
     "PAUSE": "Pause",
     "LOGOUT": "Logout",
-    "AGENTADD_QUEUE": "Add agent to Open Channel queue",
+    "AGENTADD_QUEUE": "Add Agent To Open Channel Queue",
     "UNPAUSE": "End Pause",
     "DEFAULT_PAUSE": "Default pause",
     "LOGGED_IN": "Logged in",
index 9f9a57b..797230c 100644 (file)
     "PHONE_STATUS": "Phone Status",
     "PAUSE": "Pause",
     "LOGOUT": "Logout",
-    "AGENTADD_QUEUE": "Add agent to SMS queue",
+    "AGENTADD_QUEUE": "Add Agent To SMS Queue",
     "UNPAUSE": "End Pause",
     "DEFAULT_PAUSE": "Default pause",
     "LOGGED_IN": "Logged in",
index 932e20c..2513166 100644 (file)
     "AGENTADD_TEAM": "إضافة ممثل خدمة إلى فريق",
     "ALLOWCODECS": "السماح بالاكواد",
     "ALL_MODULES_AVAILABLE": "جميع الوحدات المتاحة",
-    "ALL_QUEUES_CHAT_INBOUND": " جميع قوائم الدردشة الواردة",
-    "ALL_QUEUES_FAX_INBOUND": "جميع قوائم انتظار الفاكس الواردة",
-    "ALL_QUEUES_MAIL_INBOUND": "كل قوائم البريد الإلكتروني الوارد",
-    "ALL_QUEUES_OPENCHANNEL_INBOUND": "جميع قوائم انتظار القنوات المفتوحة الواردة",
-    "ALL_QUEUES_SMS_INBOUND": "جميع قوائم الرسائل القصيرة الواردة",
-    "ALL_QUEUES_VOICE_INBOUND": "كل قوائم انتظار الصوت الواردة",
-    "ALL_QUEUES_VOICE_OUTBOUND": "جميع قوائم انتظار المكالمات الصادرة",
+    "ALL_CHAT_QUEUES": " جميع قوائم الدردشة الواردة",
+    "ALL_FAX_QUEUES": "جميع قوائم انتظار الفاكس الواردة",
+    "ALL_MAIL_QUEUES": "كل قوائم البريد الإلكتروني الوارد",
+    "ALL_OPENCHANNEL_QUEUES": "جميع قوائم انتظار القنوات المفتوحة الواردة",
+    "ALL_SMS_QUEUES": "جميع قوائم الرسائل القصيرة الواردة",
+    "ALL_VOICE_QUEUES": "كل قوائم انتظار الصوت الواردة",
+    "ALL_QUEUE_CAMPAIGNS": "جميع قوائم انتظار المكالمات الصادرة",
     "ALL_TEAMS": "جميع الفرق",
     "AUTOANSWER": "رد ألي",
     "AUTOINTERNAL": "توليد تلقائي للرقم الداخلي",
     "PERMISSIONS": "أذونات",
     "PERSONAL_INFO": "معلومات شخصية",
     "PICKUPGROUP": "مجموعة الرد على المكالمات",
-    "QUEUEADD_AGENT_CHAT_INBOUND": "إضافة ممثل خدمة إلى قوائم انتظار الدردشةالواردة",
-    "QUEUEADD_AGENT_FAX_INBOUND": "إضافة ممثل خدمة إلى قوائم انتظار الفاكس الواردة",
-    "QUEUEADD_AGENT_MAIL_INBOUND": "إضافة ممثل خدمة إلى قوائم البريد الإلكتروني الوارد",
-    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "إضافة ممثل خدمة لفتح قائمة انتظار القنوات الواردة",
-    "QUEUEADD_AGENT_SMS_INBOUND": "إضافة ممثل خدمة إلى قوائم انتظار SMS",
-    "QUEUEADD_AGENT_VOICE_INBOUND": "إضافة ممثل خدمة إلى قوائم انتظار الصوت الوارد",
-    "QUEUEADD_AGENT_VOICE_OUTBOUND": "إضافة ممثل خدمة لحملات المكالمات الصادرة",
+    "ADD_AGENT_TO_CHAT_QUEUES": "إضافة ممثل خدمة إلى قوائم انتظار الدردشةالواردة",
+    "ADD_AGENT_TO_FAX_QUEUES": "إضافة ممثل خدمة إلى قوائم انتظار الفاكس الواردة",
+    "ADD_AGENT_TO_MAIL_QUEUES": "إضافة ممثل خدمة إلى قوائم البريد الإلكتروني الوارد",
+    "ADD_AGENT_TO_OPENCHANNEL_QUEUES": "إضافة ممثل خدمة لفتح قائمة انتظار القنوات الواردة",
+    "ADD_AGENT_TO_SMS_QUEUES": "إضافة ممثل خدمة إلى قوائم انتظار SMS",
+    "ADD_AGENT_TO_VOICE_QUEUES": "إضافة ممثل خدمة إلى قوائم انتظار الصوت الوارد",
+    "ADD_AGENT_TO_QUEUE_CAMPAIGNS": "إضافة ممثل خدمة لحملات المكالمات الصادرة",
     "QUEUEADD_USER_CHAT_INBOUND": "إضافة مستخدم إلى قوائم الدردشة",
     "QUEUEADD_USER_FAX_INBOUND": "إضافة مستخدم إلى قوائم انتظار الفاكس",
     "QUEUEADD_USER_MAIL_INBOUND": "إضافة مستخدم إلى قوائم البريد الإلكتروني",
     "ROLE": "وظيفة",
     "ROWSPERPAGE": "صفوف لكل صفحة",
     "SELECTED_AGENTS": "ممثل خدمة_مختار",
-    "SELECTED_QUEUES_CHAT_INBOUND": "قوائم انتظار الدردشة المحددة",
-    "SELECTED_QUEUES_FAX_INBOUND": "قوائم انتظار الفاكس المحددة",
-    "SELECTED_QUEUES_MAIL_INBOUND": "قوائم انتظار البريد الإلكتروني المحددة",
-    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "قوائم محددة فتح القنوات المفتوحة",
-    "SELECTED_QUEUES_SMS_INBOUND": "قوائم انتظار الرسائل القصيرة المختارة",
-    "SELECTED_QUEUES_VOICE_INBOUND": "قوائم الانتظار الصوتية المحددة",
-    "SELECTED_QUEUES_VOICE_OUTBOUND": "حملات قائمة الانتظار المحددة",
+    "SELECTED_CHAT_QUEUES": "قوائم انتظار الدردشة المحددة",
+    "SELECTED_FAX_QUEUES": "قوائم انتظار الفاكس المحددة",
+    "SELECTED_MAIL_QUEUES": "قوائم انتظار البريد الإلكتروني المحددة",
+    "SELECTED_OPENCHANNEL_QUEUES": "قوائم محددة فتح القنوات المفتوحة",
+    "SELECTED_SMS_QUEUES": "قوائم انتظار الرسائل القصيرة المختارة",
+    "SELECTED_VOICE_QUEUES": "قوائم الانتظار الصوتية المحددة",
+    "SELECTED_QUEUE_CAMPAIGNS": "حملات قائمة الانتظار المحددة",
     "SELECTED_TEAMS": "فرق مختارة",
     "SETTINGS": "إعدادات",
     "SHOWWEBCONTROL": "ادارة عرض الويب",
     "BLOCKED": "مقفل",
     "DISABLED": "المعطلة",
     "REGENERATE": "تجديد",
-    "ALL_QUEUES_WHATSAPP_INBOUND": "جميع قوائم انتظار WhatsApp",
+    "ALL_WHATSAPP_QUEUES": "جميع قوائم انتظار WhatsApp",
     "ALL_WHATSAPPACCOUNTS": "جميع حسابات WhatsApp",
     "ALL_WHATSAPPQUEUES": "جميع قوائم انتظار Whataspp",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "إضافة عامل إلى قوائم انتظار WhatsApp",
+    "ADD_AGENT_TO_WHATSAPP_QUEUES": "إضافة عامل إلى قوائم انتظار WhatsApp",
     "QUEUEADD_USER_WHATSAPP_INBOUND": "إضافة المستخدم إلى قوائم انتظار WhatsApp",
-    "SELECTED_QUEUES_WHATSAPP_INBOUND": "قوائم انتظار WhatsApp المحددة",
+    "SELECTED_WHATSAPP_QUEUES": "قوائم انتظار WhatsApp المحددة",
     "SELECTED_WHATSAPPACCOUNTS": "حسابات WhatsApp المحددة",
     "SELECTED_WHATSAPPQUEUES": "قوائم انتظار WhatsApp المحددة",
     "USERADD_WHATSAPPACCOUNTS": "أضف حساب WhatsApp إلى المستخدم",
index a276dc9..fac07a2 100644 (file)
     "ALL_MODULES_AVAILABLE": "All modules available",
     "CALLGROUP": "Call Group",
     "PICKUPGROUP": "Pickup Group",
-    "QUEUEADD_AGENT_VOICE_OUTBOUND": "Add Agent to Queue Campaigns",
-    "QUEUEADD_AGENT_VOICE_INBOUND": "Add Agent to Voice Queues",
-    "QUEUEADD_AGENT_CHAT_INBOUND": "Add Agent to Chat Queues",
-    "QUEUEADD_AGENT_MAIL_INBOUND": "Add Agent to Email Queues",
-    "QUEUEADD_AGENT_SMS_INBOUND": "Add Agent to SMS Queues",
-    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Add Agent to Open Channel Queues",
-    "QUEUEADD_AGENT_FAX_INBOUND": "Add Agent to Fax Queues",
+    "ADD_AGENT_TO_QUEUE_CAMPAIGNS": "Add Agent to Queue Campaigns",
+    "ADD_AGENT_TO_VOICE_QUEUES": "Add Agent to Voice Queues",
+    "ADD_AGENT_TO_CHAT_QUEUES": "Add Agent to Chat Queues",
+    "ADD_AGENT_TO_MAIL_QUEUES": "Add Agent to Email Queues",
+    "ADD_AGENT_TO_SMS_QUEUES": "Add Agent to SMS Queues",
+    "ADD_AGENT_TO_OPENCHANNEL_QUEUES": "Add Agent to Open Channel Queues",
+    "ADD_AGENT_TO_FAX_QUEUES": "Add Agent to Fax Queues",
     "QUEUEADD_USER_VOICE_INBOUND": "Add User to Voice Queues",
     "QUEUEADD_USER_CHAT_INBOUND": "Add User to Chat Queues",
     "QUEUEADD_USER_MAIL_INBOUND": "Add User to Email Queues",
     "ALL_TEAMS": "All Teams",
     "SELECTED_TEAMS": "Selected Teams",
     "SELECTED_AGENTS": "Selected Agents",
-    "ALL_QUEUES_VOICE_OUTBOUND": "All Queue Campaigns",
-    "SELECTED_QUEUES_VOICE_OUTBOUND": "Selected Queue Campaigns",
-    "ALL_QUEUES_VOICE_INBOUND": "All Voice Queues",
-    "SELECTED_QUEUES_VOICE_INBOUND": "Selected Voice Queues",
-    "ALL_QUEUES_CHAT_INBOUND": "All Chat Queues",
-    "SELECTED_QUEUES_CHAT_INBOUND": "Selected Chat Queues",
-    "ALL_QUEUES_MAIL_INBOUND": "All Email Queues",
-    "SELECTED_QUEUES_MAIL_INBOUND": "Selected Email Queues",
-    "ALL_QUEUES_SMS_INBOUND": "All SMS Queues",
-    "SELECTED_QUEUES_SMS_INBOUND": "Selected SMS Queues",
-    "ALL_QUEUES_OPENCHANNEL_INBOUND": "All Open Channel Queues",
-    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Selected Open Channel Queues",
-    "ALL_QUEUES_FAX_INBOUND": "All Fax Queues",
-    "SELECTED_QUEUES_FAX_INBOUND": "Selected Fax Queues",
+    "ALL_QUEUE_CAMPAIGNS": "All Queue Campaigns",
+    "SELECTED_QUEUE_CAMPAIGNS": "Selected Queue Campaigns",
+    "ALL_VOICE_QUEUES": "All Voice Queues",
+    "SELECTED_VOICE_QUEUES": "Selected Voice Queues",
+    "ALL_CHAT_QUEUES": "All Chat Queues",
+    "SELECTED_CHAT_QUEUES": "Selected Chat Queues",
+    "ALL_MAIL_QUEUES": "All Email Queues",
+    "SELECTED_MAIL_QUEUES": "Selected Email Queues",
+    "ALL_SMS_QUEUES": "All SMS Queues",
+    "SELECTED_SMS_QUEUES": "Selected SMS Queues",
+    "ALL_OPENCHANNEL_QUEUES": "All Open Channel Queues",
+    "SELECTED_OPENCHANNEL_QUEUES": "Selected Open Channel Queues",
+    "ALL_FAX_QUEUES": "All Fax Queues",
+    "SELECTED_FAX_QUEUES": "Selected Fax Queues",
     "VOICEMAIL": "Voicemail",
     "SHOWWEBCONTROL": "Typology",
     "PAGE": "Page",
     "ALL_OPENCHANNELACCOUNTS": "All Open Channel Accounts",
     "SELECTED_OPENCHANNELACCOUNTS": "Selected Open Channel Accounts",
     "ADD_USERPROFILE": "Přidat uživatelský profil",
-    "ALL_QUEUES_WHATSAPP_INBOUND": "Všechny fronty WhatsApp",
+    "ALL_WHATSAPP_QUEUES": "Všechny fronty WhatsApp",
     "ALL_WHATSAPPACCOUNTS": "Všechny účty WhatsApp",
     "ALL_WHATSAPPQUEUES": "Všechny fronty Whataspp",
     "APIKEY": "Klíč API",
     "PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE": "Neoprávněné jednání",
     "PERMISSIONS_WARNING_CLOSE": "Máte neuložené změny. Opravdu chcete ukončit bez uložení?",
     "PERMISSIONS_WARNING_ENABLE_ALL": "Všechny {{sectionName}} subsekce a jejich zdroje budou povoleny. Jste si jistý, že chcete pokračovat?",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Přidejte agenta do front WhatsApp",
+    "ADD_AGENT_TO_WHATSAPP_QUEUES": "Přidejte agenta do front WhatsApp",
     "QUEUEADD_USER_WHATSAPP_INBOUND": "Přidat uživatele do front WhatsApp",
     "QUEUES_ASSOCIATION": "{{channel}} Asociace front",
     "READ_PERMISSION": "Číst",
     "REMOVE": "Odstranit",
     "REPORT_TYPE": "Typ přehledu",
     "SECTIONS": "Sekce",
-    "SELECTED_QUEUES_WHATSAPP_INBOUND": "Vybrané fronty WhatsApp",
+    "SELECTED_WHATSAPP_QUEUES": "Vybrané fronty WhatsApp",
     "SELECTED_WHATSAPPACCOUNTS": "Vybrané účty WhatsApp",
     "SELECTED_WHATSAPPQUEUES": "Vybrané fronty WhatsApp",
     "SUMMARY": "souhrn",
index b52970f..963c618 100644 (file)
     "ALL_MODULES_AVAILABLE": "Alle moduler er tilgængelige",
     "CALLGROUP": "Gruppenummer",
     "PICKUPGROUP": "Opkaldshentningsgruppe",
-    "QUEUEADD_AGENT_VOICE_OUTBOUND": "Tilføj til kø Agent kampagner",
-    "QUEUEADD_AGENT_VOICE_INBOUND": "Tilføj Agent til Voice køer",
-    "QUEUEADD_AGENT_CHAT_INBOUND": "Tilføj Agent til Chat køer",
-    "QUEUEADD_AGENT_MAIL_INBOUND": "Tilføj Agent til Postkøer",
-    "QUEUEADD_AGENT_SMS_INBOUND": "Tilføj Agent til SMS KØER",
-    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Tilføj Agent åbne kanal køer",
-    "QUEUEADD_AGENT_FAX_INBOUND": "Tilføj Agent til Faxkøer",
+    "ADD_AGENT_TO_QUEUE_CAMPAIGNS": "Tilføj til kø Agent kampagner",
+    "ADD_AGENT_TO_VOICE_QUEUES": "Tilføj Agent til Voice køer",
+    "ADD_AGENT_TO_CHAT_QUEUES": "Tilføj Agent til Chat køer",
+    "ADD_AGENT_TO_MAIL_QUEUES": "Tilføj Agent til Postkøer",
+    "ADD_AGENT_TO_SMS_QUEUES": "Tilføj Agent til SMS KØER",
+    "ADD_AGENT_TO_OPENCHANNEL_QUEUES": "Tilføj Agent åbne kanal køer",
+    "ADD_AGENT_TO_FAX_QUEUES": "Tilføj Agent til Faxkøer",
     "QUEUEADD_USER_VOICE_INBOUND": "Tilføj brugeren til Voice køer",
     "QUEUEADD_USER_CHAT_INBOUND": "Tilføje en bruger til Chat køer",
     "QUEUEADD_USER_MAIL_INBOUND": "Tilføj brugeren til Postkøer",
     "ALL_TEAMS": "Alle hold",
     "SELECTED_TEAMS": "Udvalgte Teams",
     "SELECTED_AGENTS": "Udvalgte agenter",
-    "ALL_QUEUES_VOICE_OUTBOUND": "Alle Kø kampagner",
-    "SELECTED_QUEUES_VOICE_OUTBOUND": "Udvalgte Kampagner kø",
-    "ALL_QUEUES_VOICE_INBOUND": "Alle Voice køer",
-    "SELECTED_QUEUES_VOICE_INBOUND": "Valgt Voice køer",
-    "ALL_QUEUES_CHAT_INBOUND": "Alle Chat køer",
-    "SELECTED_QUEUES_CHAT_INBOUND": "Udvalgte Chat køer",
-    "ALL_QUEUES_MAIL_INBOUND": "Alle Postkøer",
-    "SELECTED_QUEUES_MAIL_INBOUND": "Udvalgte Postkøer",
-    "ALL_QUEUES_SMS_INBOUND": "Alle SMS-køer",
-    "SELECTED_QUEUES_SMS_INBOUND": "Udvalgte SMS KØER",
-    "ALL_QUEUES_OPENCHANNEL_INBOUND": "Alle åbne kanal køer",
-    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Valgte en åben kanal køer",
-    "ALL_QUEUES_FAX_INBOUND": "Alle Faxkøer",
-    "SELECTED_QUEUES_FAX_INBOUND": "Udvalgte Faxkøer",
+    "ALL_QUEUE_CAMPAIGNS": "Alle Kø kampagner",
+    "SELECTED_QUEUE_CAMPAIGNS": "Udvalgte Kampagner kø",
+    "ALL_VOICE_QUEUES": "Alle Voice køer",
+    "SELECTED_VOICE_QUEUES": "Valgt Voice køer",
+    "ALL_CHAT_QUEUES": "Alle Chat køer",
+    "SELECTED_CHAT_QUEUES": "Udvalgte Chat køer",
+    "ALL_MAIL_QUEUES": "Alle Postkøer",
+    "SELECTED_MAIL_QUEUES": "Udvalgte Postkøer",
+    "ALL_SMS_QUEUES": "Alle SMS-køer",
+    "SELECTED_SMS_QUEUES": "Udvalgte SMS KØER",
+    "ALL_OPENCHANNEL_QUEUES": "Alle åbne kanal køer",
+    "SELECTED_OPENCHANNEL_QUEUES": "Valgte en åben kanal køer",
+    "ALL_FAX_QUEUES": "Alle Faxkøer",
+    "SELECTED_FAX_QUEUES": "Udvalgte Faxkøer",
     "VOICEMAIL": "Telefonsvarer",
     "SHOWWEBCONTROL": "Vis Web Control",
     "PAGE": "Page",
     "BLOCKED": "Låst",
     "DISABLED": "Deaktiveret",
     "REGENERATE": "Regenerer",
-    "ALL_QUEUES_WHATSAPP_INBOUND": "Alle WhatsApp-køer",
+    "ALL_WHATSAPP_QUEUES": "Alle WhatsApp-køer",
     "ALL_WHATSAPPACCOUNTS": "Alle WhatsApp-konti",
     "ALL_WHATSAPPQUEUES": "Alle Whataspp-køer",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Føj agent til WhatsApp-køer",
+    "ADD_AGENT_TO_WHATSAPP_QUEUES": "Føj agent til WhatsApp-køer",
     "QUEUEADD_USER_WHATSAPP_INBOUND": "Føj bruger til WhatsApp-køer",
-    "SELECTED_QUEUES_WHATSAPP_INBOUND": "Valgte WhatsApp-køer",
+    "SELECTED_WHATSAPP_QUEUES": "Valgte WhatsApp-køer",
     "SELECTED_WHATSAPPACCOUNTS": "Valgte WhatsApp-konti",
     "SELECTED_WHATSAPPQUEUES": "Valgte WhatsApp-køer",
     "USERADD_WHATSAPPACCOUNTS": "Føj WhatsApp-konto til brugeren",
index b5e8a7a..d07b3e6 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",
+    "ADD_AGENT_TO_QUEUE_CAMPAIGNS": "Agenten hinzufügen - ausgehende Anrufe",
+    "ADD_AGENT_TO_VOICE_QUEUES": "Agenten hinzufügen - eingehende Anrufe",
+    "ADD_AGENT_TO_CHAT_QUEUES": "Agenten hinzufügen - Chat-Warteschlangen",
+    "ADD_AGENT_TO_MAIL_QUEUES": "Agenten hinzufügen - E-Mail-Warteschlangen",
+    "ADD_AGENT_TO_SMS_QUEUES": "Agenten hinzufügen - SMS-Warteschlangen",
+    "ADD_AGENT_TO_OPENCHANNEL_QUEUES": "Agenten hinzufügen - offener Kanal-Warteschlangen",
+    "ADD_AGENT_TO_FAX_QUEUES": "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_QUEUE_CAMPAIGNS": "Alle Warteschlangen - ausgehende Anrufe",
+    "SELECTED_QUEUE_CAMPAIGNS": "Gewählte Warteschlangen - ausgehende Anrufe",
+    "ALL_VOICE_QUEUES": "Alle Warteschlangen - eingehende Anrufe",
+    "SELECTED_VOICE_QUEUES": "Ausgewählte Warteschlangen - eingehende Anrufe",
+    "ALL_CHAT_QUEUES": "Alle Warteschlangen - Chat",
+    "SELECTED_CHAT_QUEUES": "Ausgewählte Warteschlangen - Chat",
+    "ALL_MAIL_QUEUES": "Alle Warteschlangen - E-Mail",
+    "SELECTED_MAIL_QUEUES": "Ausgewählte Warteschlangen - E-Mail",
+    "ALL_SMS_QUEUES": "Alle Warteschlangen - SMS",
+    "SELECTED_SMS_QUEUES": "Ausgewählte Warteschlangen - SMS",
+    "ALL_OPENCHANNEL_QUEUES": "Alle Warteschlangen - offener Kanal",
+    "SELECTED_OPENCHANNEL_QUEUES": "Ausgewählte Warteschlangen - offener Kanal",
+    "ALL_FAX_QUEUES": "Alle Warteschlangen - Fax",
+    "SELECTED_FAX_QUEUES": "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",
-    "ALL_QUEUES_WHATSAPP_INBOUND": "Alle WhatsApp-Warteschlangen",
+    "REGENERATE": "Erneut generieren",
+    "ALL_WHATSAPP_QUEUES": "Alle WhatsApp-Warteschlangen",
     "ALL_WHATSAPPACCOUNTS": "Alle WhatsApp-Konten",
     "ALL_WHATSAPPQUEUES": "Alle Whataspp-Warteschlangen",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Agent zu WhatsApp-Warteschlangen hinzufügen",
+    "ADD_AGENT_TO_WHATSAPP_QUEUES": "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_WHATSAPP_QUEUES": "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 556f7a7..15d1dea 100644 (file)
     "ALL_MODULES_AVAILABLE": "All modules available",
     "CALLGROUP": "Call Group",
     "PICKUPGROUP": "Pickup Group",
-    "QUEUEADD_AGENT_VOICE_OUTBOUND": "Add Agent to Queue Campaigns",
-    "QUEUEADD_AGENT_VOICE_INBOUND": "Add Agent to Voice Queues",
-    "QUEUEADD_AGENT_CHAT_INBOUND": "Add Agent to Chat Queues",
-    "QUEUEADD_AGENT_MAIL_INBOUND": "Add Agent to Email Queues",
-    "QUEUEADD_AGENT_SMS_INBOUND": "Add Agent to SMS Queues",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Add Agent to WhatsApp Queues",
-    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Add Agent to Open Channel Queues",
-    "QUEUEADD_AGENT_FAX_INBOUND": "Add Agent to Fax Queues",
+    "ADD_AGENT_TO_QUEUE_CAMPAIGNS": "Add Agent to Queue Campaigns",
+    "ADD_AGENT_TO_VOICE_QUEUES": "Add Agent to Voice Queues",
+    "ADD_AGENT_TO_CHAT_QUEUES": "Add Agent to Chat Queues",
+    "ADD_AGENT_TO_MAIL_QUEUES": "Add Agent to Email Queues",
+    "ADD_AGENT_TO_SMS_QUEUES": "Add Agent to SMS Queues",
+    "ADD_AGENT_TO_WHATSAPP_QUEUES": "Add Agent to WhatsApp Queues",
+    "ADD_AGENT_TO_OPENCHANNEL_QUEUES": "Add Agent to Open Channel Queues",
+    "ADD_AGENT_TO_FAX_QUEUES": "Add Agent to Fax Queues",
     "QUEUEADD_USER_VOICE_INBOUND": "Add User to Voice Queues",
     "QUEUEADD_USER_CHAT_INBOUND": "Add User to Chat Queues",
     "QUEUEADD_USER_MAIL_INBOUND": "Add User to Email Queues",
     "ALL_TEAMS": "All Teams",
     "SELECTED_TEAMS": "Selected Teams",
     "SELECTED_AGENTS": "Selected Agents",
-    "ALL_QUEUES_VOICE_OUTBOUND": "All Queue Campaigns",
-    "SELECTED_QUEUES_VOICE_OUTBOUND": "Selected Queue Campaigns",
-    "ALL_QUEUES_VOICE_INBOUND": "All Voice Queues",
-    "SELECTED_QUEUES_VOICE_INBOUND": "Selected Voice Queues",
-    "ALL_QUEUES_CHAT_INBOUND": "All Chat Queues",
-    "SELECTED_QUEUES_CHAT_INBOUND": "Selected Chat Queues",
-    "ALL_QUEUES_MAIL_INBOUND": "All Email Queues",
-    "SELECTED_QUEUES_MAIL_INBOUND": "Selected Email Queues",
-    "ALL_QUEUES_SMS_INBOUND": "All SMS Queues",
-    "SELECTED_QUEUES_SMS_INBOUND": "Selected SMS Queues",
-    "ALL_QUEUES_WHATSAPP_INBOUND": "All WhatsApp Queues",
-    "SELECTED_QUEUES_WHATSAPP_INBOUND": "Selected WhatsApp Queues",
-    "ALL_QUEUES_OPENCHANNEL_INBOUND": "All Open Channel Queues",
-    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Selected Open Channel Queues",
-    "ALL_QUEUES_FAX_INBOUND": "All Fax Queues",
-    "SELECTED_QUEUES_FAX_INBOUND": "Selected Fax Queues",
+    "ALL_QUEUE_CAMPAIGNS": "All Queue Campaigns",
+    "SELECTED_QUEUE_CAMPAIGNS": "Selected Queue Campaigns",
+    "ALL_VOICE_QUEUES": "All Voice Queues",
+    "SELECTED_VOICE_QUEUES": "Selected Voice Queues",
+    "ALL_CHAT_QUEUES": "All Chat Queues",
+    "SELECTED_CHAT_QUEUES": "Selected Chat Queues",
+    "ALL_MAIL_QUEUES": "All Email Queues",
+    "SELECTED_MAIL_QUEUES": "Selected Email Queues",
+    "ALL_SMS_QUEUES": "All SMS Queues",
+    "SELECTED_SMS_QUEUES": "Selected SMS Queues",
+    "ALL_WHATSAPP_QUEUES": "All WhatsApp Queues",
+    "SELECTED_WHATSAPP_QUEUES": "Selected WhatsApp Queues",
+    "ALL_OPENCHANNEL_QUEUES": "All Open Channel Queues",
+    "SELECTED_OPENCHANNEL_QUEUES": "Selected Open Channel Queues",
+    "ALL_FAX_QUEUES": "All Fax Queues",
+    "SELECTED_FAX_QUEUES": "Selected Fax Queues",
     "VOICEMAIL": "Voicemail",
     "SHOWWEBCONTROL": "Typology",
     "PAGE": "Page",
     "SCREEN_RECORDINGS": "Screen Recordings",
     "JSCRIPTY_SESSIONS": "Jscripty Sessions",
     "CONTACT_MANAGER_LISTS": "Contact Manager Lists",
-    "CALLYSQUARE_RECORDINGS": "Cally Square Recordings"
+    "CALLYSQUARE_RECORDINGS": "Cally Square Recordings",
+    "IGNORE_AGENT_BREAK_STATUS_FOR_PREVIEW_CALLS": "Ignore agent break status for preview calls",
+    "SELECT_RECALLME_CAMPAIGN": "Select Recall Me Campaign"
   }
 }
index 42b1c9b..be2c3bd 100644 (file)
     "ALLOWCODECS": "Códecs permitidos",
     "ALL_AGENTS": "Todos los agentes",
     "ALL_MODULES_AVAILABLE": "Todos los módulos disponibles",
-    "ALL_QUEUES_CHAT_INBOUND": "Todas las colas de chat",
-    "ALL_QUEUES_FAX_INBOUND": "Todas las colas de fax",
-    "ALL_QUEUES_MAIL_INBOUND": "Todas Las Colas de Correo Electrónico",
-    "ALL_QUEUES_OPENCHANNEL_INBOUND": "Todas las colas de canales abiertos",
-    "ALL_QUEUES_SMS_INBOUND": "Todas las Colas de SMS",
-    "ALL_QUEUES_VOICE_INBOUND": "Todas las colas de voz",
+    "ALL_CHAT_QUEUES": "Todas las colas de chat",
+    "ALL_FAX_QUEUES": "Todas las colas de fax",
+    "ALL_MAIL_QUEUES": "Todas Las Colas de Correo Electrónico",
+    "ALL_OPENCHANNEL_QUEUES": "Todas las colas de canales abiertos",
+    "ALL_SMS_QUEUES": "Todas las Colas de SMS",
+    "ALL_VOICE_QUEUES": "Todas las colas de voz",
     "ALL_QUEUES_VOICE_OUTBOUND": "Todas Las Colas de Campañas",
     "ALL_TEAMS": "Todos los equipos",
     "ALL_USERS": "Todos los usuarios",
     "PHONE": "Teléfono",
     "PHONE_NUMBER": "Número de teléfono",
     "PICKUPGROUP": "Grupo de captura",
-    "QUEUEADD_AGENT_CHAT_INBOUND": "Agregar Agente a Cola de Chat",
-    "QUEUEADD_AGENT_FAX_INBOUND": "Agregar Agente a Cola de FAX",
-    "QUEUEADD_AGENT_MAIL_INBOUND": "Agregar Agente a Cola de Correo Electrónico",
-    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Agregar Agente a Cola de Canales Abiertos",
-    "QUEUEADD_AGENT_SMS_INBOUND": "Agregar agente a cola SMS",
-    "QUEUEADD_AGENT_VOICE_INBOUND": "Agregar Agente a cola de voz",
-    "QUEUEADD_AGENT_VOICE_OUTBOUND": "Agregar Agente a Colas de Campañas",
+    "ADD_AGENT_TO_CHAT_QUEUES": "Agregar Agente a Cola de Chat",
+    "ADD_AGENT_TO_FAX_QUEUES": "Agregar Agente a Cola de FAX",
+    "ADD_AGENT_TO_MAIL_QUEUES": "Agregar Agente a Cola de Correo Electrónico",
+    "ADD_AGENT_TO_OPENCHANNEL_QUEUES": "Agregar Agente a Cola de Canales Abiertos",
+    "ADD_AGENT_TO_SMS_QUEUES": "Agregar agente a cola SMS",
+    "ADD_AGENT_TO_VOICE_QUEUES": "Agregar Agente a cola de voz",
+    "ADD_AGENT_TO_QUEUE_CAMPAIGNS": "Agregar Agente a Colas de Campañas",
     "QUEUEADD_USER_CHAT_INBOUND": "Agregar Usuario a Cola de Chat",
     "QUEUEADD_USER_FAX_INBOUND": "Agregar Usuario a Cola de Fax",
     "QUEUEADD_USER_MAIL_INBOUND": "Agregar Usuario a Cola de Correo Electrónico",
     "SECURITY_SUITE": "Suite de seguridad",
     "SELECTED": "Seleccionado",
     "SELECTED_AGENTS": "Agentes seleccionados",
-    "SELECTED_QUEUES_CHAT_INBOUND": "Colas de Chat seleccionadas",
-    "SELECTED_QUEUES_FAX_INBOUND": "Colas de Fax seleccionadas",
-    "SELECTED_QUEUES_MAIL_INBOUND": "Colas de Correo Electrónico seleccionadas",
-    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Colas de Canal Abierto seleccionadas",
-    "SELECTED_QUEUES_SMS_INBOUND": "Colas SMS seleccionadas",
-    "SELECTED_QUEUES_VOICE_INBOUND": "Colas de voz seleccionadas",
-    "SELECTED_QUEUES_VOICE_OUTBOUND": "Campañas de cola seleccionadas",
+    "SELECTED_CHAT_QUEUES": "Colas de Chat seleccionadas",
+    "SELECTED_FAX_QUEUES": "Colas de Fax seleccionadas",
+    "SELECTED_MAIL_QUEUES": "Colas de Correo Electrónico seleccionadas",
+    "SELECTED_OPENCHANNEL_QUEUES": "Colas de Canal Abierto seleccionadas",
+    "SELECTED_SMS_QUEUES": "Colas SMS seleccionadas",
+    "SELECTED_VOICE_QUEUES": "Colas de voz seleccionadas",
+    "SELECTED_QUEUE_CAMPAIGNS": "Campañas de cola seleccionadas",
     "SELECTED_TEAMS": "Equipos seleccionados",
     "SELECT_ALL": "Seleccionar Todo",
     "SELECT_NONE": "No Seleccionar",
     "BLOCKED": "Bloqueado",
     "DISABLED": "Deshabilitado",
     "REGENERATE": "Regenerado",
-    "ALL_QUEUES_WHATSAPP_INBOUND": "Todas las colas de WhatsApp",
+    "ALL_WHATSAPP_QUEUES": "Todas las colas de WhatsApp",
     "ALL_WHATSAPPACCOUNTS": "Todas las cuentas de WhatsApp",
     "ALL_WHATSAPPQUEUES": "Todas las colas de Whataspp",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Agregar agente a las colas de WhatsApp",
+    "ADD_AGENT_TO_WHATSAPP_QUEUES": "Agregar agente a las colas de WhatsApp",
     "QUEUEADD_USER_WHATSAPP_INBOUND": "Agregar usuario a las colas de WhatsApp",
-    "SELECTED_QUEUES_WHATSAPP_INBOUND": "Colas de WhatsApp seleccionadas",
+    "SELECTED_WHATSAPP_QUEUES": "Colas de WhatsApp seleccionadas",
     "SELECTED_WHATSAPPACCOUNTS": "Cuentas de WhatsApp seleccionadas",
     "SELECTED_WHATSAPPQUEUES": "Colas de WhatsApp seleccionadas",
     "USERADD_WHATSAPPACCOUNTS": "Agregar cuenta de WhatsApp al usuario",
index 0c1d40c..a5d5bfc 100644 (file)
     "ALL_MODULES_AVAILABLE": "All modules available",
     "CALLGROUP": "Call Group",
     "PICKUPGROUP": "Pickup Group",
-    "QUEUEADD_AGENT_VOICE_OUTBOUND": "Add Agent to Queue Campaigns",
-    "QUEUEADD_AGENT_VOICE_INBOUND": "Add Agent to Voice Queues",
-    "QUEUEADD_AGENT_CHAT_INBOUND": "Add Agent to Chat Queues",
-    "QUEUEADD_AGENT_MAIL_INBOUND": "Add Agent to Email Queues",
-    "QUEUEADD_AGENT_SMS_INBOUND": "Add Agent to SMS Queues",
-    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Add Agent to Open Channel Queues",
-    "QUEUEADD_AGENT_FAX_INBOUND": "Add Agent to Fax Queues",
+    "ADD_AGENT_TO_QUEUE_CAMPAIGNS": "Add Agent to Queue Campaigns",
+    "ADD_AGENT_TO_VOICE_QUEUES": "Add Agent to Voice Queues",
+    "ADD_AGENT_TO_CHAT_QUEUES": "Add Agent to Chat Queues",
+    "ADD_AGENT_TO_MAIL_QUEUES": "Add Agent to Email Queues",
+    "ADD_AGENT_TO_SMS_QUEUES": "Add Agent to SMS Queues",
+    "ADD_AGENT_TO_OPENCHANNEL_QUEUES": "Add Agent to Open Channel Queues",
+    "ADD_AGENT_TO_FAX_QUEUES": "Add Agent to Fax Queues",
     "QUEUEADD_USER_VOICE_INBOUND": "Add User to Voice Queues",
     "QUEUEADD_USER_CHAT_INBOUND": "Add User to Chat Queues",
     "QUEUEADD_USER_MAIL_INBOUND": "Add User to Email Queues",
     "ALL_TEAMS": "All Teams",
     "SELECTED_TEAMS": "Selected Teams",
     "SELECTED_AGENTS": "Selected Agents",
-    "ALL_QUEUES_VOICE_OUTBOUND": "All Queue Campaigns",
-    "SELECTED_QUEUES_VOICE_OUTBOUND": "Selected Queue Campaigns",
-    "ALL_QUEUES_VOICE_INBOUND": "All Voice Queues",
-    "SELECTED_QUEUES_VOICE_INBOUND": "Selected Voice Queues",
-    "ALL_QUEUES_CHAT_INBOUND": "All Chat Queues",
-    "SELECTED_QUEUES_CHAT_INBOUND": "Selected Chat Queues",
-    "ALL_QUEUES_MAIL_INBOUND": "All Email Queues",
-    "SELECTED_QUEUES_MAIL_INBOUND": "Selected Email Queues",
-    "ALL_QUEUES_SMS_INBOUND": "All SMS Queues",
-    "SELECTED_QUEUES_SMS_INBOUND": "Selected SMS Queues",
-    "ALL_QUEUES_OPENCHANNEL_INBOUND": "All Open Channel Queues",
-    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Selected Open Channel Queues",
-    "ALL_QUEUES_FAX_INBOUND": "All Fax Queues",
-    "SELECTED_QUEUES_FAX_INBOUND": "Selected Fax Queues",
+    "ALL_QUEUE_CAMPAIGNS": "All Queue Campaigns",
+    "SELECTED_QUEUE_CAMPAIGNS": "Selected Queue Campaigns",
+    "ALL_VOICE_QUEUES": "All Voice Queues",
+    "SELECTED_VOICE_QUEUES": "Selected Voice Queues",
+    "ALL_CHAT_QUEUES": "All Chat Queues",
+    "SELECTED_CHAT_QUEUES": "Selected Chat Queues",
+    "ALL_MAIL_QUEUES": "All Email Queues",
+    "SELECTED_MAIL_QUEUES": "Selected Email Queues",
+    "ALL_SMS_QUEUES": "All SMS Queues",
+    "SELECTED_SMS_QUEUES": "Selected SMS Queues",
+    "ALL_OPENCHANNEL_QUEUES": "All Open Channel Queues",
+    "SELECTED_OPENCHANNEL_QUEUES": "Selected Open Channel Queues",
+    "ALL_FAX_QUEUES": "All Fax Queues",
+    "SELECTED_FAX_QUEUES": "Selected Fax Queues",
     "VOICEMAIL": "Voicemail",
     "SHOWWEBCONTROL": "Typology",
     "PAGE": "Page",
     "ALL_OPENCHANNELACCOUNTS": "All Open Channel Accounts",
     "SELECTED_OPENCHANNELACCOUNTS": "Selected Open Channel Accounts",
     "ADD_USERPROFILE": "Lisage kasutaja profiil",
-    "ALL_QUEUES_WHATSAPP_INBOUND": "Kõik WhatsApi järjekorrad",
+    "ALL_WHATSAPP_QUEUES": "Kõik WhatsApi järjekorrad",
     "ALL_WHATSAPPACCOUNTS": "Kõik WhatsApi kontod",
     "ALL_WHATSAPPQUEUES": "Kõik Whataspi järjekorrad",
     "APIKEY": "API-võti",
     "PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE": "Volitamata tegevus",
     "PERMISSIONS_WARNING_CLOSE": "Teil on salvestamata muudatusi. Kas soovite kindlasti väljuda salvestamata?",
     "PERMISSIONS_WARNING_ENABLE_ALL": "Kõik {{sectionName}} alajaotised ja nende ressursid lubatakse. Kas soovite kindlasti jätkata?",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Lisage agent WhatsApp'i järjekorda",
+    "ADD_AGENT_TO_WHATSAPP_QUEUES": "Lisage agent WhatsApp'i järjekorda",
     "QUEUEADD_USER_WHATSAPP_INBOUND": "Lisage kasutaja WhatsApp'i järjekorda",
     "QUEUES_ASSOCIATION": "{{channel}} Järjekordade liit",
     "READ_PERMISSION": "Loe",
     "REMOVE": "Eemalda",
     "REPORT_TYPE": "Aruande tüüp",
     "SECTIONS": "Sektsioonid",
-    "SELECTED_QUEUES_WHATSAPP_INBOUND": "Valitud WhatsApi järjekorrad",
+    "SELECTED_WHATSAPP_QUEUES": "Valitud WhatsApi järjekorrad",
     "SELECTED_WHATSAPPACCOUNTS": "Valitud WhatsApi kontod",
     "SELECTED_WHATSAPPQUEUES": "Valitud WhatsApi järjekorrad",
     "SUMMARY": "Kokkuvõte",
index 3b58309..d0cc3b7 100644 (file)
     "ALL_MODULES_AVAILABLE": "تمام ماژول ها موجود است",
     "CALLGROUP": "گروه تماس",
     "PICKUPGROUP": "گروه جمع آوری",
-    "QUEUEADD_AGENT_VOICE_OUTBOUND": "عامل به صف مبارزات خود را اضافه کنید",
-    "QUEUEADD_AGENT_VOICE_INBOUND": "عامل صفهای طولانی به صدا اضافه کنید",
-    "QUEUEADD_AGENT_CHAT_INBOUND": "افزودن عنصر به صفهای طولانی چت روم",
-    "QUEUEADD_AGENT_MAIL_INBOUND": "عامل صفهای طولانی به پست اضافه کنید",
-    "QUEUEADD_AGENT_SMS_INBOUND": "افزودن به صفهای طولانی عامل SMS",
-    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "عامل اضافه کنید تا کانال باز صفها",
-    "QUEUEADD_AGENT_FAX_INBOUND": "عامل صفهای طولانی به فكس را اضافه کنید",
+    "ADD_AGENT_TO_QUEUE_CAMPAIGNS": "عامل به صف مبارزات خود را اضافه کنید",
+    "ADD_AGENT_TO_VOICE_QUEUES": "عامل صفهای طولانی به صدا اضافه کنید",
+    "ADD_AGENT_TO_CHAT_QUEUES": "افزودن عنصر به صفهای طولانی چت روم",
+    "ADD_AGENT_TO_MAIL_QUEUES": "عامل صفهای طولانی به پست اضافه کنید",
+    "ADD_AGENT_TO_SMS_QUEUES": "افزودن به صفهای طولانی عامل SMS",
+    "ADD_AGENT_TO_OPENCHANNEL_QUEUES": "عامل اضافه کنید تا کانال باز صفها",
+    "ADD_AGENT_TO_FAX_QUEUES": "عامل صفهای طولانی به فكس را اضافه کنید",
     "QUEUEADD_USER_VOICE_INBOUND": "افزودن صدا به صفهای طولانی کاربر",
     "QUEUEADD_USER_CHAT_INBOUND": "افزودن به صفهای طولانی چت کاربر",
     "QUEUEADD_USER_MAIL_INBOUND": "افزودن به صفهای طولانی پست کاربر",
     "ALL_TEAMS": "همه تیم ها",
     "SELECTED_TEAMS": "تيم هاي برگزيده",
     "SELECTED_AGENTS": "عوامل انتخاب شده",
-    "ALL_QUEUES_VOICE_OUTBOUND": "همه صف مبارزات",
-    "SELECTED_QUEUES_VOICE_OUTBOUND": "توی صف مبارزات انتخابی",
-    "ALL_QUEUES_VOICE_INBOUND": "صدای همه صفها",
-    "SELECTED_QUEUES_VOICE_INBOUND": "صفهای طولانی صدای انتخاب شده",
-    "ALL_QUEUES_CHAT_INBOUND": "همه صفها چت روم",
-    "SELECTED_QUEUES_CHAT_INBOUND": "صفهای طولانی چت روم انتخاب می شود",
-    "ALL_QUEUES_MAIL_INBOUND": "همه صفها پستی",
-    "SELECTED_QUEUES_MAIL_INBOUND": "صفهای طولانی پیدا کرده انتخاب می شود",
-    "ALL_QUEUES_SMS_INBOUND": "همه صفها SMS",
-    "SELECTED_QUEUES_SMS_INBOUND": "صفهای طولانی انتخاب SMS",
-    "ALL_QUEUES_OPENCHANNEL_INBOUND": "همه صفها کانال باز",
-    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "صفهای طولانی انتخاب کانال را باز کنید",
-    "ALL_QUEUES_FAX_INBOUND": "همه صفها فكس",
-    "SELECTED_QUEUES_FAX_INBOUND": "صفهای طولانی فكس انتخاب می شود",
+    "ALL_QUEUE_CAMPAIGNS": "همه صف مبارزات",
+    "SELECTED_QUEUE_CAMPAIGNS": "توی صف مبارزات انتخابی",
+    "ALL_VOICE_QUEUES": "صدای همه صفها",
+    "SELECTED_VOICE_QUEUES": "صفهای طولانی صدای انتخاب شده",
+    "ALL_CHAT_QUEUES": "همه صفها چت روم",
+    "SELECTED_CHAT_QUEUES": "صفهای طولانی چت روم انتخاب می شود",
+    "ALL_MAIL_QUEUES": "همه صفها پستی",
+    "SELECTED_MAIL_QUEUES": "صفهای طولانی پیدا کرده انتخاب می شود",
+    "ALL_SMS_QUEUES": "همه صفها SMS",
+    "SELECTED_SMS_QUEUES": "صفهای طولانی انتخاب SMS",
+    "ALL_OPENCHANNEL_QUEUES": "همه صفها کانال باز",
+    "SELECTED_OPENCHANNEL_QUEUES": "صفهای طولانی انتخاب کانال را باز کنید",
+    "ALL_FAX_QUEUES": "همه صفها فكس",
+    "SELECTED_FAX_QUEUES": "صفهای طولانی فكس انتخاب می شود",
     "VOICEMAIL": "پست صوتی",
     "SHOWWEBCONTROL": "نمایش کنترل وب",
     "PAGE": "صفحه",
     "BLOCKED": "قفل شده",
     "DISABLED": "غیرفعال شده است",
     "REGENERATE": "بازسازی",
-    "ALL_QUEUES_WHATSAPP_INBOUND": "همه صف های WhatsApp",
+    "ALL_WHATSAPP_QUEUES": "همه صف های WhatsApp",
     "ALL_WHATSAPPACCOUNTS": "همه حساب های WhatsApp",
     "ALL_WHATSAPPQUEUES": "تمام صف های Whataspp",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "عامل را به صف های WhatsApp اضافه کنید",
+    "ADD_AGENT_TO_WHATSAPP_QUEUES": "عامل را به صف های WhatsApp اضافه کنید",
     "QUEUEADD_USER_WHATSAPP_INBOUND": "کاربر را به صف های WhatsApp اضافه کنید",
-    "SELECTED_QUEUES_WHATSAPP_INBOUND": "صف های WhatsApp انتخاب شده است",
+    "SELECTED_WHATSAPP_QUEUES": "صف های WhatsApp انتخاب شده است",
     "SELECTED_WHATSAPPACCOUNTS": "حساب های واتس اپ انتخاب شده است",
     "SELECTED_WHATSAPPQUEUES": "صف های WhatsApp انتخاب شده است",
     "USERADD_WHATSAPPACCOUNTS": "حساب WhatsApp را به کاربر اضافه کنید",
index 69b363b..13922c8 100644 (file)
     "ALL_MODULES_AVAILABLE": "Kaikki moduulit saatavilla",
     "CALLGROUP": "Call -ryhmän",
     "PICKUPGROUP": "Poimintaryhmääsi kuuluvassa alanumerossa.",
-    "QUEUEADD_AGENT_VOICE_OUTBOUND": "Lisää Edustajan jonoon kampanjoita",
-    "QUEUEADD_AGENT_VOICE_INBOUND": "Lisää agentin Voice jonot",
-    "QUEUEADD_AGENT_CHAT_INBOUND": "Lisää agentin Chat jonot",
-    "QUEUEADD_AGENT_MAIL_INBOUND": "Lisää agentin Mail jonot",
-    "QUEUEADD_AGENT_SMS_INBOUND": "Lisää agentin SMS jonot",
-    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Lisää agentin avoimen kanavan jonot",
-    "QUEUEADD_AGENT_FAX_INBOUND": "Lisää agentin faksi jonot",
+    "ADD_AGENT_TO_QUEUE_CAMPAIGNS": "Lisää Edustajan jonoon kampanjoita",
+    "ADD_AGENT_TO_VOICE_QUEUES": "Lisää agentin Voice jonot",
+    "ADD_AGENT_TO_CHAT_QUEUES": "Lisää agentin Chat jonot",
+    "ADD_AGENT_TO_MAIL_QUEUES": "Lisää agentin Mail jonot",
+    "ADD_AGENT_TO_SMS_QUEUES": "Lisää agentin SMS jonot",
+    "ADD_AGENT_TO_OPENCHANNEL_QUEUES": "Lisää agentin avoimen kanavan jonot",
+    "ADD_AGENT_TO_FAX_QUEUES": "Lisää agentin faksi jonot",
     "QUEUEADD_USER_VOICE_INBOUND": "Lisää käyttäjä Voice jonot",
     "QUEUEADD_USER_CHAT_INBOUND": "Lisää käyttäjä Chat jonot",
     "QUEUEADD_USER_MAIL_INBOUND": "Lisää käyttäjä Mail jonot",
     "ALL_TEAMS": "Kaikki joukkueet",
     "SELECTED_TEAMS": "Valittu työryhmille",
     "SELECTED_AGENTS": "Valitut edustajat",
-    "ALL_QUEUES_VOICE_OUTBOUND": "Kaikki jonoon kampanjoita",
-    "SELECTED_QUEUES_VOICE_OUTBOUND": "Valitun jonon kampanjoita",
-    "ALL_QUEUES_VOICE_INBOUND": "Kaikki Voice jonot",
-    "SELECTED_QUEUES_VOICE_INBOUND": "Valittu ääni jonot",
-    "ALL_QUEUES_CHAT_INBOUND": "Kaikki Chat jonot",
-    "SELECTED_QUEUES_CHAT_INBOUND": "Valitun Chat jonot",
-    "ALL_QUEUES_MAIL_INBOUND": "Kaikki posti jonot",
-    "SELECTED_QUEUES_MAIL_INBOUND": "Valittuna olevan jonot",
-    "ALL_QUEUES_SMS_INBOUND": "Kaikkiin tekstiviestilaatikoihin jonot",
-    "SELECTED_QUEUES_SMS_INBOUND": "Valittu SMS jonot",
-    "ALL_QUEUES_OPENCHANNEL_INBOUND": "Kaikki avoimen kanavan jonot",
-    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Valittu avoimen kanavan jonot",
-    "ALL_QUEUES_FAX_INBOUND": "Kaikki faksi jonot",
-    "SELECTED_QUEUES_FAX_INBOUND": "Valittu Fax jonot",
+    "ALL_QUEUE_CAMPAIGNS": "Kaikki jonoon kampanjoita",
+    "SELECTED_QUEUE_CAMPAIGNS": "Valitun jonon kampanjoita",
+    "ALL_VOICE_QUEUES": "Kaikki Voice jonot",
+    "SELECTED_VOICE_QUEUES": "Valittu ääni jonot",
+    "ALL_CHAT_QUEUES": "Kaikki Chat jonot",
+    "SELECTED_CHAT_QUEUES": "Valitun Chat jonot",
+    "ALL_MAIL_QUEUES": "Kaikki posti jonot",
+    "SELECTED_MAIL_QUEUES": "Valittuna olevan jonot",
+    "ALL_SMS_QUEUES": "Kaikkiin tekstiviestilaatikoihin jonot",
+    "SELECTED_SMS_QUEUES": "Valittu SMS jonot",
+    "ALL_OPENCHANNEL_QUEUES": "Kaikki avoimen kanavan jonot",
+    "SELECTED_OPENCHANNEL_QUEUES": "Valittu avoimen kanavan jonot",
+    "ALL_FAX_QUEUES": "Kaikki faksi jonot",
+    "SELECTED_FAX_QUEUES": "Valittu Fax jonot",
     "VOICEMAIL": "Vastaaja",
     "SHOWWEBCONTROL": "Näytä Web-ohjaus",
     "PAGE": "Sivu",
     "BLOCKED": "kiinni",
     "DISABLED": "deaktivoitu",
     "REGENERATE": "uudistua",
-    "ALL_QUEUES_WHATSAPP_INBOUND": "Kaikki WhatsApp-jonot",
+    "ALL_WHATSAPP_QUEUES": "Kaikki WhatsApp-jonot",
     "ALL_WHATSAPPACCOUNTS": "Kaikki WhatsApp-tilit",
     "ALL_WHATSAPPQUEUES": "Kaikki Whataspp -jonot",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Lisää agentti WhatsApp-jonoihin",
+    "ADD_AGENT_TO_WHATSAPP_QUEUES": "Lisää agentti WhatsApp-jonoihin",
     "QUEUEADD_USER_WHATSAPP_INBOUND": "Lisää käyttäjä WhatsApp-jonoihin",
-    "SELECTED_QUEUES_WHATSAPP_INBOUND": "Valitut WhatsApp -jonot",
+    "SELECTED_WHATSAPP_QUEUES": "Valitut WhatsApp -jonot",
     "SELECTED_WHATSAPPACCOUNTS": "Valitut WhatsApp-tilit",
     "SELECTED_WHATSAPPQUEUES": "Valitut WhatsApp -jonot",
     "USERADD_WHATSAPPACCOUNTS": "Lisää WhatsApp-tili käyttäjälle",
index ca9fb29..9465167 100644 (file)
     "ALL_MODULES_AVAILABLE": "Tous les modules disponibles",
     "CALLGROUP": "Groupe d'appel",
     "PICKUPGROUP": "Groupe d'interception",
-    "QUEUEADD_AGENT_VOICE_OUTBOUND": "Ajouter l'agent à la file d'attente Motion Bull",
-    "QUEUEADD_AGENT_VOICE_INBOUND": "Ajouter l'agent à la file d'attente voix",
-    "QUEUEADD_AGENT_CHAT_INBOUND": "Ajouter l'agent à la file d'attente discussion Chat",
-    "QUEUEADD_AGENT_MAIL_INBOUND": "Ajouter l'agent à la file d'attente Mail",
-    "QUEUEADD_AGENT_SMS_INBOUND": "Ajouter l'agent à la file d'attente SMS",
-    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Ajouter l'agent à la file d'attente Openchannel",
-    "QUEUEADD_AGENT_FAX_INBOUND": "Ajouter l'agent à la file d'attente Fax",
+    "ADD_AGENT_TO_QUEUE_CAMPAIGNS": "Ajouter l'agent à la file d'attente Motion Bull",
+    "ADD_AGENT_TO_VOICE_QUEUES": "Ajouter l'agent à la file d'attente voix",
+    "ADD_AGENT_TO_CHAT_QUEUES": "Ajouter l'agent à la file d'attente discussion Chat",
+    "ADD_AGENT_TO_MAIL_QUEUES": "Ajouter l'agent à la file d'attente Mail",
+    "ADD_AGENT_TO_SMS_QUEUES": "Ajouter l'agent à la file d'attente SMS",
+    "ADD_AGENT_TO_OPENCHANNEL_QUEUES": "Ajouter l'agent à la file d'attente Openchannel",
+    "ADD_AGENT_TO_FAX_QUEUES": "Ajouter l'agent à la file d'attente Fax",
     "QUEUEADD_USER_VOICE_INBOUND": "Ajouter un utilisateur à la file d'attente voix",
     "QUEUEADD_USER_CHAT_INBOUND": "Ajouter un utilisateur à la file d'attente chat",
     "QUEUEADD_USER_MAIL_INBOUND": "Ajouter un utilisateur à la file d'attente mail",
     "ALL_TEAMS": "Toutes les équipes",
     "SELECTED_TEAMS": "Equipe(s) sélectionnée(s)",
     "SELECTED_AGENTS": "Agent(s) sélectionné(s)",
-    "ALL_QUEUES_VOICE_OUTBOUND": "Toutes les campagnes Motion Bull",
-    "SELECTED_QUEUES_VOICE_OUTBOUND": "Campagne(s) Motion Bull sélectionnée(s)",
-    "ALL_QUEUES_VOICE_INBOUND": "Toutes les files d'attente voix",
-    "SELECTED_QUEUES_VOICE_INBOUND": "File(s) d'attente voix sélectionnée(s)",
-    "ALL_QUEUES_CHAT_INBOUND": "Toutes les files d'attentes Chat",
-    "SELECTED_QUEUES_CHAT_INBOUND": "File(s) d'attente Chat selectionnée(s)",
-    "ALL_QUEUES_MAIL_INBOUND": "Toutes les files d'attentes Mail",
-    "SELECTED_QUEUES_MAIL_INBOUND": "File(s) d'attente Mail sélectionnée(s)",
-    "ALL_QUEUES_SMS_INBOUND": "Toutes les files d'attentes SMS",
-    "SELECTED_QUEUES_SMS_INBOUND": "File(s) d'attente SMS sélectionnée(s)",
-    "ALL_QUEUES_OPENCHANNEL_INBOUND": "Toutes les files d'attente Openchannel",
-    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Files d'attente ",
-    "ALL_QUEUES_FAX_INBOUND": "Toutes les files d'attente Fax",
-    "SELECTED_QUEUES_FAX_INBOUND": "File(s) d'attente Fax sélectionnée(s)",
+    "ALL_QUEUE_CAMPAIGNS": "Toutes les campagnes Motion Bull",
+    "SELECTED_QUEUE_CAMPAIGNS": "Campagne(s) Motion Bull sélectionnée(s)",
+    "ALL_VOICE_QUEUES": "Toutes les files d'attente voix",
+    "SELECTED_VOICE_QUEUES": "File(s) d'attente voix sélectionnée(s)",
+    "ALL_CHAT_QUEUES": "Toutes les files d'attentes Chat",
+    "SELECTED_CHAT_QUEUES": "File(s) d'attente Chat selectionnée(s)",
+    "ALL_MAIL_QUEUES": "Toutes les files d'attentes Mail",
+    "SELECTED_MAIL_QUEUES": "File(s) d'attente Mail sélectionnée(s)",
+    "ALL_SMS_QUEUES": "Toutes les files d'attentes SMS",
+    "SELECTED_SMS_QUEUES": "File(s) d'attente SMS sélectionnée(s)",
+    "ALL_OPENCHANNEL_QUEUES": "Toutes les files d'attente Openchannel",
+    "SELECTED_OPENCHANNEL_QUEUES": "Files d'attente ",
+    "ALL_FAX_QUEUES": "Toutes les files d'attente Fax",
+    "SELECTED_FAX_QUEUES": "File(s) d'attente Fax sélectionnée(s)",
     "VOICEMAIL": "Messagerie vocale",
     "SHOWWEBCONTROL": "Type de connexion :",
     "PAGE": "Page",
     "BLOCKED": "Fermé à clé",
     "DISABLED": "Désactivée",
     "REGENERATE": "Régénérer",
-    "ALL_QUEUES_WHATSAPP_INBOUND": "Toutes les files d'attente WhatsApp",
+    "ALL_WHATSAPP_QUEUES": "Toutes les files d'attente WhatsApp",
     "ALL_WHATSAPPACCOUNTS": "Tous les comptes WhatsApp",
     "ALL_WHATSAPPQUEUES": "Toutes les files d'attente Whataspp",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Ajouter un agent aux files d'attente WhatsApp",
+    "ADD_AGENT_TO_WHATSAPP_QUEUES": "Ajouter un agent aux files d'attente WhatsApp",
     "QUEUEADD_USER_WHATSAPP_INBOUND": "Ajouter un utilisateur aux files d'attente WhatsApp",
-    "SELECTED_QUEUES_WHATSAPP_INBOUND": "Files d'attente WhatsApp sélectionnées",
+    "SELECTED_WHATSAPP_QUEUES": "Files d'attente WhatsApp sélectionnées",
     "SELECTED_WHATSAPPACCOUNTS": "Comptes WhatsApp sélectionnés",
     "SELECTED_WHATSAPPQUEUES": "Files d'attente WhatsApp sélectionnées",
     "USERADD_WHATSAPPACCOUNTS": "Ajouter un compte WhatsApp à l'utilisateur",
index d01f90d..bbdbf26 100644 (file)
     "ALL_MODULES_AVAILABLE": "כל המודולים זמינים",
     "CALLGROUP": "קבוצת שיחה",
     "PICKUPGROUP": "בחירת קבוצה",
-    "QUEUEADD_AGENT_VOICE_OUTBOUND": "הוספתף נציג למבצעי תורים",
-    "QUEUEADD_AGENT_VOICE_INBOUND": "הוספת נציג לתורי קול",
-    "QUEUEADD_AGENT_CHAT_INBOUND": "הוספת נציג לתורי צ'אט",
-    "QUEUEADD_AGENT_MAIL_INBOUND": "הוספת נציג לתורי דוא\"ל",
-    "QUEUEADD_AGENT_SMS_INBOUND": "הוספת נציג לתורי מסרונים",
-    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "הוספת נציג לתורי ערוצים פתוחים",
-    "QUEUEADD_AGENT_FAX_INBOUND": "הוספת נציג לתורי פקס",
+    "ADD_AGENT_TO_QUEUE_CAMPAIGNS": "הוספתף נציג למבצעי תורים",
+    "ADD_AGENT_TO_VOICE_QUEUES": "הוספת נציג לתורי קול",
+    "ADD_AGENT_TO_CHAT_QUEUES": "הוספת נציג לתורי צ'אט",
+    "ADD_AGENT_TO_MAIL_QUEUES": "הוספת נציג לתורי דוא\"ל",
+    "ADD_AGENT_TO_SMS_QUEUES": "הוספת נציג לתורי מסרונים",
+    "ADD_AGENT_TO_OPENCHANNEL_QUEUES": "הוספת נציג לתורי ערוצים פתוחים",
+    "ADD_AGENT_TO_FAX_QUEUES": "הוספת נציג לתורי פקס",
     "QUEUEADD_USER_VOICE_INBOUND": "הוספת משתמש לתורי קול",
     "QUEUEADD_USER_CHAT_INBOUND": "הוספת משתמש לתורי צ'אט",
     "QUEUEADD_USER_MAIL_INBOUND": "הוספת משתמש לתורי דוא\"ל",
     "ALL_TEAMS": "כל הצוותים",
     "SELECTED_TEAMS": "צוותים נבחרים",
     "SELECTED_AGENTS": "נציגים נבחרים",
-    "ALL_QUEUES_VOICE_OUTBOUND": "כל מבצעי התורים",
-    "SELECTED_QUEUES_VOICE_OUTBOUND": "מבצעי תורים נבחרים",
-    "ALL_QUEUES_VOICE_INBOUND": "כל תורי הקול",
-    "SELECTED_QUEUES_VOICE_INBOUND": "תורי קול נבחרים",
-    "ALL_QUEUES_CHAT_INBOUND": "כל תורי הצ'אט",
-    "SELECTED_QUEUES_CHAT_INBOUND": "תורי צ'אט נבחרים",
-    "ALL_QUEUES_MAIL_INBOUND": "כל תורי הדוא\"ל",
-    "SELECTED_QUEUES_MAIL_INBOUND": "תורי דוא\"ל נבחרים",
-    "ALL_QUEUES_SMS_INBOUND": "כל תורי ה-SMS",
-    "SELECTED_QUEUES_SMS_INBOUND": "תורי SMS נבחרים",
-    "ALL_QUEUES_OPENCHANNEL_INBOUND": "כל תורי הערוצים הפתוחים",
-    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "תורי ערוצים פתוחים נבחרים",
-    "ALL_QUEUES_FAX_INBOUND": "כל תורי הפקס",
-    "SELECTED_QUEUES_FAX_INBOUND": "תורי פקס נבחרים",
+    "ALL_QUEUE_CAMPAIGNS": "כל מבצעי התורים",
+    "SELECTED_QUEUE_CAMPAIGNS": "מבצעי תורים נבחרים",
+    "ALL_VOICE_QUEUES": "כל תורי הקול",
+    "SELECTED_VOICE_QUEUES": "תורי קול נבחרים",
+    "ALL_CHAT_QUEUES": "כל תורי הצ'אט",
+    "SELECTED_CHAT_QUEUES": "תורי צ'אט נבחרים",
+    "ALL_MAIL_QUEUES": "כל תורי הדוא\"ל",
+    "SELECTED_MAIL_QUEUES": "תורי דוא\"ל נבחרים",
+    "ALL_SMS_QUEUES": "כל תורי ה-SMS",
+    "SELECTED_SMS_QUEUES": "תורי SMS נבחרים",
+    "ALL_OPENCHANNEL_QUEUES": "כל תורי הערוצים הפתוחים",
+    "SELECTED_OPENCHANNEL_QUEUES": "תורי ערוצים פתוחים נבחרים",
+    "ALL_FAX_QUEUES": "כל תורי הפקס",
+    "SELECTED_FAX_QUEUES": "תורי פקס נבחרים",
     "VOICEMAIL": "הודעה קולית",
     "SHOWWEBCONTROL": "טיפולוגיה",
     "PAGE": "דף",
     "BLOCKED": "נעילה",
     "DISABLED": "ביטול",
     "REGENERATE": "התחדשות",
-    "ALL_QUEUES_WHATSAPP_INBOUND": "כל התורים ב- WhatsApp",
+    "ALL_WHATSAPP_QUEUES": "כל התורים ב- WhatsApp",
     "ALL_WHATSAPPACCOUNTS": "כל חשבונות WhatsApp",
     "ALL_WHATSAPPQUEUES": "כל התורים ב- Whataspp",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "הוסף סוכן לתורי WhatsApp",
+    "ADD_AGENT_TO_WHATSAPP_QUEUES": "הוסף סוכן לתורי WhatsApp",
     "QUEUEADD_USER_WHATSAPP_INBOUND": "הוסף משתמש לתורי WhatsApp",
-    "SELECTED_QUEUES_WHATSAPP_INBOUND": "תורי WhatsApp שנבחרו",
+    "SELECTED_WHATSAPP_QUEUES": "תורי WhatsApp שנבחרו",
     "SELECTED_WHATSAPPACCOUNTS": "חשבונות WhatsApp שנבחרו",
     "SELECTED_WHATSAPPQUEUES": "תורי WhatsApp שנבחרו",
     "USERADD_WHATSAPPACCOUNTS": "הוסף חשבון WhatsApp למשתמש",
index f21b5cf..bec04c4 100644 (file)
     "ALL_MODULES_AVAILABLE": "सभी उपलब्ध",
     "CALLGROUP": "समूह कॉल",
     "PICKUPGROUP": "Pickup समूह",
-    "QUEUEADD_AGENT_VOICE_OUTBOUND": "लोकतंत्रमें अभियानों एजेंट को जोड़ें",
-    "QUEUEADD_AGENT_VOICE_INBOUND": "ध्वनि स्वर जोड़ने के एजेंट को कतार",
-    "QUEUEADD_AGENT_CHAT_INBOUND": "चैट एजेंट को जोड़ने वाली कतारों",
-    "QUEUEADD_AGENT_MAIL_INBOUND": "मेल जोड़ना एजेंट को कतार",
-    "QUEUEADD_AGENT_SMS_INBOUND": "SMS के एजेंट को जोड़ने वाली कतारों",
-    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "एजेंट को जोड़ने के लिए खुले चैनल कतार",
-    "QUEUEADD_AGENT_FAX_INBOUND": "एजेंट को फैक्स कतार में जोड़ें",
+    "ADD_AGENT_TO_QUEUE_CAMPAIGNS": "लोकतंत्रमें अभियानों एजेंट को जोड़ें",
+    "ADD_AGENT_TO_VOICE_QUEUES": "ध्वनि स्वर जोड़ने के एजेंट को कतार",
+    "ADD_AGENT_TO_CHAT_QUEUES": "चैट एजेंट को जोड़ने वाली कतारों",
+    "ADD_AGENT_TO_MAIL_QUEUES": "मेल जोड़ना एजेंट को कतार",
+    "ADD_AGENT_TO_SMS_QUEUES": "SMS के एजेंट को जोड़ने वाली कतारों",
+    "ADD_AGENT_TO_OPENCHANNEL_QUEUES": "एजेंट को जोड़ने के लिए खुले चैनल कतार",
+    "ADD_AGENT_TO_FAX_QUEUES": "एजेंट को फैक्स कतार में जोड़ें",
     "QUEUEADD_USER_VOICE_INBOUND": "उपयोगकर्ता जोड़ें पर वॉयस कतार",
     "QUEUEADD_USER_CHAT_INBOUND": "उपयोगकर्ता जोड़ें से चैट कतार",
     "QUEUEADD_USER_MAIL_INBOUND": "उपयोगकर्ता जोड़ें से मेल कतार",
     "ALL_TEAMS": "सभी टीमें भाग लेंगी।",
     "SELECTED_TEAMS": "चयनित टीम",
     "SELECTED_AGENTS": "चयनित एजेंटों",
-    "ALL_QUEUES_VOICE_OUTBOUND": "सभी कतार अभियान",
-    "SELECTED_QUEUES_VOICE_OUTBOUND": "चयनित कतार अभियान",
-    "ALL_QUEUES_VOICE_INBOUND": "सभी वॉयस कतार",
-    "SELECTED_QUEUES_VOICE_INBOUND": "चयनित आवाज कतार",
-    "ALL_QUEUES_CHAT_INBOUND": "सभी चैट कतार",
-    "SELECTED_QUEUES_CHAT_INBOUND": "चयनित चैट कतार",
-    "ALL_QUEUES_MAIL_INBOUND": "हर मेल कतार",
-    "SELECTED_QUEUES_MAIL_INBOUND": "चयनित मेल कतार",
-    "ALL_QUEUES_SMS_INBOUND": "सभी SMS कतार",
-    "SELECTED_QUEUES_SMS_INBOUND": "चयनित SMS कतार",
-    "ALL_QUEUES_OPENCHANNEL_INBOUND": "सभी खुले चैनल कतार",
-    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "चयनित खुले चैनल कतार",
-    "ALL_QUEUES_FAX_INBOUND": "सभी फैक्स कतार",
-    "SELECTED_QUEUES_FAX_INBOUND": "चयनित फैक्स कतार",
+    "ALL_QUEUE_CAMPAIGNS": "सभी कतार अभियान",
+    "SELECTED_QUEUE_CAMPAIGNS": "चयनित कतार अभियान",
+    "ALL_VOICE_QUEUES": "सभी वॉयस कतार",
+    "SELECTED_VOICE_QUEUES": "चयनित आवाज कतार",
+    "ALL_CHAT_QUEUES": "सभी चैट कतार",
+    "SELECTED_CHAT_QUEUES": "चयनित चैट कतार",
+    "ALL_MAIL_QUEUES": "हर मेल कतार",
+    "SELECTED_MAIL_QUEUES": "चयनित मेल कतार",
+    "ALL_SMS_QUEUES": "सभी SMS कतार",
+    "SELECTED_SMS_QUEUES": "चयनित SMS कतार",
+    "ALL_OPENCHANNEL_QUEUES": "सभी खुले चैनल कतार",
+    "SELECTED_OPENCHANNEL_QUEUES": "चयनित खुले चैनल कतार",
+    "ALL_FAX_QUEUES": "सभी फैक्स कतार",
+    "SELECTED_FAX_QUEUES": "चयनित फैक्स कतार",
     "VOICEMAIL": "वॉयसमेल",
     "SHOWWEBCONTROL": "वेब नियंत्रण में दिखाएं",
     "PAGE": "पृष्ठ",
     "BLOCKED": "बंद",
     "DISABLED": "निष्क्रिय",
     "REGENERATE": "पुनः जेनरेट",
-    "ALL_QUEUES_WHATSAPP_INBOUND": "सभी WhatsApp कतारें",
+    "ALL_WHATSAPP_QUEUES": "सभी WhatsApp कतारें",
     "ALL_WHATSAPPACCOUNTS": "सभी व्हाट्सएप अकाउंट",
     "ALL_WHATSAPPQUEUES": "सभी व्हाट्सएप कतार",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "एजेंट को व्हाट्सएप कतार में जोड़ें",
+    "ADD_AGENT_TO_WHATSAPP_QUEUES": "एजेंट को व्हाट्सएप कतार में जोड़ें",
     "QUEUEADD_USER_WHATSAPP_INBOUND": "व्हाट्सएप कतार में उपयोगकर्ता जोड़ें",
-    "SELECTED_QUEUES_WHATSAPP_INBOUND": "चयनित व्हाट्सएप कतारें",
+    "SELECTED_WHATSAPP_QUEUES": "चयनित व्हाट्सएप कतारें",
     "SELECTED_WHATSAPPACCOUNTS": "व्हाट्सएप अकाउंट चुने",
     "SELECTED_WHATSAPPQUEUES": "चयनित व्हाट्सएप कतारें",
     "USERADD_WHATSAPPACCOUNTS": "उपयोगकर्ता के लिए WhatsApp खाता जोड़ें",
index 5efd94d..6a5dd29 100644 (file)
     "ALLOWCODECS": "Codec yang Diizinkan",
     "ALL_AGENTS": "Semua agen",
     "ALL_MODULES_AVAILABLE": "Semua modul tersedia",
-    "ALL_QUEUES_CHAT_INBOUND": "Semua Antrean Obrolan",
-    "ALL_QUEUES_FAX_INBOUND": "Semua Antrian Faks",
-    "ALL_QUEUES_MAIL_INBOUND": "Semua Antrian Email",
-    "ALL_QUEUES_OPENCHANNEL_INBOUND": "Semua Antrian Saluran Terbuka",
-    "ALL_QUEUES_SMS_INBOUND": "Semua Antrean SMS",
-    "ALL_QUEUES_VOICE_INBOUND": "Semua Antrian Suara",
-    "ALL_QUEUES_VOICE_OUTBOUND": "Semua Kampanye Antrean",
+    "ALL_CHAT_QUEUES": "Semua Antrean Obrolan",
+    "ALL_FAX_QUEUES": "Semua Antrian Faks",
+    "ALL_MAIL_QUEUES": "Semua Antrian Email",
+    "ALL_OPENCHANNEL_QUEUES": "Semua Antrian Saluran Terbuka",
+    "ALL_SMS_QUEUES": "Semua Antrean SMS",
+    "ALL_VOICE_QUEUES": "Semua Antrian Suara",
+    "ALL_QUEUE_CAMPAIGNS": "Semua Kampanye Antrean",
     "ALL_TEAMS": "Semua Tim",
     "ALL_USERS": "Semua pengguna",
     "AUTOANSWER": "Jawab otomatis",
     "PHONE": "Telepon",
     "PHONE_NUMBER": "Nomor telepon",
     "PICKUPGROUP": "Grup Penjemputan",
-    "QUEUEADD_AGENT_CHAT_INBOUND": "Tambahkan Agen ke Antrean Obrolan",
-    "QUEUEADD_AGENT_FAX_INBOUND": "Tambahkan Agen ke Antrean Faks",
-    "QUEUEADD_AGENT_MAIL_INBOUND": "Tambahkan Agen ke Antrean Email",
-    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Tambahkan Agen ke Open Channel Queues",
-    "QUEUEADD_AGENT_SMS_INBOUND": "Tambahkan Agen ke Antrean SMS",
-    "QUEUEADD_AGENT_VOICE_INBOUND": "Tambahkan Agen ke Antrian Suara",
-    "QUEUEADD_AGENT_VOICE_OUTBOUND": "Tambahkan Agen ke Kampanye Antrean",
+    "ADD_AGENT_TO_CHAT_QUEUES": "Tambahkan Agen ke Antrean Obrolan",
+    "ADD_AGENT_TO_FAX_QUEUES": "Tambahkan Agen ke Antrean Faks",
+    "ADD_AGENT_TO_MAIL_QUEUES": "Tambahkan Agen ke Antrean Email",
+    "ADD_AGENT_TO_OPENCHANNEL_QUEUES": "Tambahkan Agen ke Open Channel Queues",
+    "ADD_AGENT_TO_SMS_QUEUES": "Tambahkan Agen ke Antrean SMS",
+    "ADD_AGENT_TO_VOICE_QUEUES": "Tambahkan Agen ke Antrian Suara",
+    "ADD_AGENT_TO_QUEUE_CAMPAIGNS": "Tambahkan Agen ke Kampanye Antrean",
     "QUEUEADD_USER_CHAT_INBOUND": "Tambahkan Antrean Pengguna ke Obrolan",
     "QUEUEADD_USER_FAX_INBOUND": "Tambahkan User ke Fax Queues",
     "QUEUEADD_USER_MAIL_INBOUND": "Tambahkan Antrian Pengguna ke Email",
     "SECURITY_SUITE": "Suite Keamanan",
     "SELECTED": "Terpilih",
     "SELECTED_AGENTS": "Agen yang Dipilih",
-    "SELECTED_QUEUES_CHAT_INBOUND": "Antrean Obrolan Terpilih",
-    "SELECTED_QUEUES_FAX_INBOUND": "Antrian Faks yang Dipilih",
-    "SELECTED_QUEUES_MAIL_INBOUND": "Antrean Email Terpilih",
-    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Antrian Saluran Terbuka yang Dipilih",
-    "SELECTED_QUEUES_SMS_INBOUND": "Antrian SMS yang Dipilih",
-    "SELECTED_QUEUES_VOICE_INBOUND": "Antrean Suara yang Dipilih",
-    "SELECTED_QUEUES_VOICE_OUTBOUND": "Kampanye Antrian Terpilih",
+    "SELECTED_CHAT_QUEUES": "Antrean Obrolan Terpilih",
+    "SELECTED_FAX_QUEUES": "Antrian Faks yang Dipilih",
+    "SELECTED_MAIL_QUEUES": "Antrean Email Terpilih",
+    "SELECTED_OPENCHANNEL_QUEUES": "Antrian Saluran Terbuka yang Dipilih",
+    "SELECTED_SMS_QUEUES": "Antrian SMS yang Dipilih",
+    "SELECTED_VOICE_QUEUES": "Antrean Suara yang Dipilih",
+    "SELECTED_QUEUE_CAMPAIGNS": "Kampanye Antrian Terpilih",
     "SELECTED_TEAMS": "Tim yang Dipilih",
     "SELECT_ALL": "Pilih Semua",
     "SELECT_NONE": "Pilih Tidak Ada",
     "BLOCKED": "Terkunci",
     "DISABLED": "Dinonaktifkan",
     "REGENERATE": "Diperbaiki",
-    "ALL_QUEUES_WHATSAPP_INBOUND": "Semua Antrean WhatsApp",
+    "ALL_WHATSAPP_QUEUES": "Semua Antrean WhatsApp",
     "ALL_WHATSAPPACCOUNTS": "Semua Akun WhatsApp",
     "ALL_WHATSAPPQUEUES": "Semua Antrian Whataspp",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Tambahkan Agen ke Antrean WhatsApp",
+    "ADD_AGENT_TO_WHATSAPP_QUEUES": "Tambahkan Agen ke Antrean WhatsApp",
     "QUEUEADD_USER_WHATSAPP_INBOUND": "Tambahkan Pengguna ke Antrean WhatsApp",
-    "SELECTED_QUEUES_WHATSAPP_INBOUND": "Antrean WhatsApp yang Dipilih",
+    "SELECTED_WHATSAPP_QUEUES": "Antrean WhatsApp yang Dipilih",
     "SELECTED_WHATSAPPACCOUNTS": "Akun WhatsApp yang Dipilih",
     "SELECTED_WHATSAPPQUEUES": "Antrean WhatsApp yang Dipilih",
     "USERADD_WHATSAPPACCOUNTS": "Tambahkan Akun WhatsApp ke Pengguna",
index 111b886..4da6527 100644 (file)
     "ALL_MODULES_AVAILABLE": "Tutti i moduli disponibili",
     "CALLGROUP": "Call Group",
     "PICKUPGROUP": "Pickup Group",
-    "QUEUEADD_AGENT_VOICE_OUTBOUND": "Aggiungi Agente a Campagne Coda",
-    "QUEUEADD_AGENT_VOICE_INBOUND": "Aggiungi Agente a code Voce",
-    "QUEUEADD_AGENT_CHAT_INBOUND": "Aggiungi Agente a code Chat",
-    "QUEUEADD_AGENT_MAIL_INBOUND": "Aggiungi Agente a code Email",
-    "QUEUEADD_AGENT_SMS_INBOUND": "Aggiungi Agente a code SMS",
-    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Aggiungi Agente a code Open Channel",
-    "QUEUEADD_AGENT_FAX_INBOUND": "Aggiungi Agente a code Fax",
+    "ADD_AGENT_TO_QUEUE_CAMPAIGNS": "Aggiungi Agente a Campagne Coda",
+    "ADD_AGENT_TO_VOICE_QUEUES": "Aggiungi Agente a code Voce",
+    "ADD_AGENT_TO_CHAT_QUEUES": "Aggiungi Agente a code Chat",
+    "ADD_AGENT_TO_MAIL_QUEUES": "Aggiungi Agente a code Email",
+    "ADD_AGENT_TO_SMS_QUEUES": "Aggiungi Agente a code SMS",
+    "ADD_AGENT_TO_OPENCHANNEL_QUEUES": "Aggiungi Agente a code Open Channel",
+    "ADD_AGENT_TO_FAX_QUEUES": "Aggiungi Agente a code Fax",
     "QUEUEADD_USER_VOICE_INBOUND": "Aggiungi Utente a code Voce",
     "QUEUEADD_USER_CHAT_INBOUND": "Aggiungi Utente a code Chat",
     "QUEUEADD_USER_MAIL_INBOUND": "Aggiungi Utente a code Email",
     "ALL_TEAMS": "Tutti i Team",
     "SELECTED_TEAMS": "Team selezionati",
     "SELECTED_AGENTS": "Agenti selezionati",
-    "ALL_QUEUES_VOICE_OUTBOUND": "Tutte le Campagne Coda",
-    "SELECTED_QUEUES_VOICE_OUTBOUND": "Campagne Coda selezionate",
-    "ALL_QUEUES_VOICE_INBOUND": "Tutte le code",
-    "SELECTED_QUEUES_VOICE_INBOUND": "Code Voce selezionate",
-    "ALL_QUEUES_CHAT_INBOUND": "Tutte le code Chat",
-    "SELECTED_QUEUES_CHAT_INBOUND": "Code Chat selezionate",
-    "ALL_QUEUES_MAIL_INBOUND": "Tutte le code Email",
-    "SELECTED_QUEUES_MAIL_INBOUND": "Code Email selezionate",
-    "ALL_QUEUES_SMS_INBOUND": "Tutte le code SMS",
-    "SELECTED_QUEUES_SMS_INBOUND": "Code SMS selezionate",
-    "ALL_QUEUES_OPENCHANNEL_INBOUND": "Tutte le code Open Channel",
-    "ALL_QUEUES_FAX_INBOUND": "Tutte le code Fax",
-    "SELECTED_QUEUES_FAX_INBOUND": "Code Fax selezionate",
-    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Selezionare le code Open Channel",
+    "ALL_QUEUE_CAMPAIGNS": "Tutte le Campagne Coda",
+    "SELECTED_QUEUE_CAMPAIGNS": "Campagne Coda selezionate",
+    "ALL_VOICE_QUEUES": "Tutte le code",
+    "SELECTED_VOICE_QUEUES": "Code Voce selezionate",
+    "ALL_CHAT_QUEUES": "Tutte le code Chat",
+    "SELECTED_CHAT_QUEUES": "Code Chat selezionate",
+    "ALL_MAIL_QUEUES": "Tutte le code Email",
+    "SELECTED_MAIL_QUEUES": "Code Email selezionate",
+    "ALL_SMS_QUEUES": "Tutte le code SMS",
+    "SELECTED_SMS_QUEUES": "Code SMS selezionate",
+    "ALL_OPENCHANNEL_QUEUES": "Tutte le code Open Channel",
+    "ALL_FAX_QUEUES": "Tutte le code Fax",
+    "SELECTED_FAX_QUEUES": "Code Fax selezionate",
+    "SELECTED_OPENCHANNEL_QUEUES": "Selezionare le code Open Channel",
     "VOICEMAIL": "Voicemail",
     "RINGINUSE": "Squilla quando occupato",
     "SHOWWEBCONTROL": "Tipologia",
     "ENABLEVIDEOECORDING": "Abilita registrazione video",
     "BLOCKED": "Bloccato",
     "DISABLED": "Disattivato",
-    "ALL_QUEUES_WHATSAPP_INBOUND": "Tutte le code di WhatsApp",
+    "ALL_WHATSAPP_QUEUES": "Tutte le code di WhatsApp",
     "ALL_WHATSAPPACCOUNTS": "Tutti gli account WhatsApp",
     "ALL_WHATSAPPQUEUES": "Tutte le code Whataspp",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Aggiungi agente alle code di WhatsApp",
+    "ADD_AGENT_TO_WHATSAPP_QUEUES": "Aggiungi agente alle code di WhatsApp",
     "QUEUEADD_USER_WHATSAPP_INBOUND": "Aggiungi utente alle code di WhatsApp",
-    "SELECTED_QUEUES_WHATSAPP_INBOUND": "Code WhatsApp selezionate",
+    "SELECTED_WHATSAPP_QUEUES": "Code WhatsApp selezionate",
     "SELECTED_WHATSAPPACCOUNTS": "Account WhatsApp selezionati",
     "SELECTED_WHATSAPPQUEUES": "Code WhatsApp selezionate",
     "USERADD_WHATSAPPACCOUNTS": "Aggiungi account WhatsApp all'utente",
     "SCREEN_RECORDINGS": "Registrazioni Screen",
     "JSCRIPTY_SESSIONS": "Sessioni Jscripty",
     "CONTACT_MANAGER_LISTS": "Liste Manager Contatti",
-    "CALLYSQUARE_RECORDINGS": "Registrazioni Cally Square"
+    "CALLYSQUARE_RECORDINGS": "Registrazioni Cally Square",
+    "IGNORE_AGENT_BREAK_STATUS_FOR_PREVIEW_CALLS": "Ignora lo stato di pausa per le chiamate preview",
+    "SELECT_RECALLME_CAMPAIGN": "Seleziona Campagna Recall Me"
   }
 }
index d3fcbbc..d238731 100644 (file)
     "ALLOWCODECS": "許可されたコーデック",
     "ALL_AGENTS": "すべてのエージェント",
     "ALL_MODULES_AVAILABLE": "すべてのモジュールが利用可能です",
-    "ALL_QUEUES_CHAT_INBOUND": "すべてのチャットキュー",
-    "ALL_QUEUES_FAX_INBOUND": "すべてのFAXキュー",
-    "ALL_QUEUES_MAIL_INBOUND": "すべてのメールキュー",
-    "ALL_QUEUES_OPENCHANNEL_INBOUND": "すべてのオープンチャネルキュー",
-    "ALL_QUEUES_SMS_INBOUND": "すべてのSMSキュー",
-    "ALL_QUEUES_VOICE_INBOUND": "すべての音声キュー",
-    "ALL_QUEUES_VOICE_OUTBOUND": "すべてのキューキャンペーン",
+    "ALL_CHAT_QUEUES": "すべてのチャットキュー",
+    "ALL_FAX_QUEUES": "すべてのFAXキュー",
+    "ALL_MAIL_QUEUES": "すべてのメールキュー",
+    "ALL_OPENCHANNEL_QUEUES": "すべてのオープンチャネルキュー",
+    "ALL_SMS_QUEUES": "すべてのSMSキュー",
+    "ALL_VOICE_QUEUES": "すべての音声キュー",
+    "ALL_QUEUE_CAMPAIGNS": "すべてのキューキャンペーン",
     "ALL_TEAMS": "すべてのチーム",
     "ALL_USERS": "すべてのユーザー",
     "AUTOANSWER": "自動応答",
     "PHONE": "電話番号",
     "PHONE_NUMBER": "電話番号",
     "PICKUPGROUP": "ピックアップグループ",
-    "QUEUEADD_AGENT_CHAT_INBOUND": "チャットキューにエージェントを追加",
-    "QUEUEADD_AGENT_FAX_INBOUND": "FAXキューにエージェントを追加",
-    "QUEUEADD_AGENT_MAIL_INBOUND": "メールキューにエージェントを追加",
-    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "オープンチャネルキューにエージェントを追加",
-    "QUEUEADD_AGENT_SMS_INBOUND": "SMSキューにエージェントを追加",
-    "QUEUEADD_AGENT_VOICE_INBOUND": "音声キューにエージェントを追加",
-    "QUEUEADD_AGENT_VOICE_OUTBOUND": "キューキャンペーンにエージェントを追加",
+    "ADD_AGENT_TO_CHAT_QUEUES": "チャットキューにエージェントを追加",
+    "ADD_AGENT_TO_FAX_QUEUES": "FAXキューにエージェントを追加",
+    "ADD_AGENT_TO_MAIL_QUEUES": "メールキューにエージェントを追加",
+    "ADD_AGENT_TO_OPENCHANNEL_QUEUES": "オープンチャネルキューにエージェントを追加",
+    "ADD_AGENT_TO_SMS_QUEUES": "SMSキューにエージェントを追加",
+    "ADD_AGENT_TO_VOICE_QUEUES": "音声キューにエージェントを追加",
+    "ADD_AGENT_TO_QUEUE_CAMPAIGNS": "キューキャンペーンにエージェントを追加",
     "QUEUEADD_USER_CHAT_INBOUND": "チャットキューにユーザーを追加",
     "QUEUEADD_USER_FAX_INBOUND": "FAXキューにユーザーを追加",
     "QUEUEADD_USER_MAIL_INBOUND": "メールキューにユーザーを追加",
     "SECURITY_SUITE": "セキュリティスイート",
     "SELECTED": "選択された",
     "SELECTED_AGENTS": "選択されたエージェント",
-    "SELECTED_QUEUES_CHAT_INBOUND": "選択されたチャットキュー",
-    "SELECTED_QUEUES_FAX_INBOUND": "選択されたFAXキュー",
-    "SELECTED_QUEUES_MAIL_INBOUND": "選択されたメールキュー",
-    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "選択されたオープンチャンネルキュー",
-    "SELECTED_QUEUES_SMS_INBOUND": "選択されたSMSキュー",
-    "SELECTED_QUEUES_VOICE_INBOUND": "選択された音声キュー",
-    "SELECTED_QUEUES_VOICE_OUTBOUND": "選択されたキューキャンペーン",
+    "SELECTED_CHAT_QUEUES": "選択されたチャットキュー",
+    "SELECTED_FAX_QUEUES": "選択されたFAXキュー",
+    "SELECTED_MAIL_QUEUES": "選択されたメールキュー",
+    "SELECTED_OPENCHANNEL_QUEUES": "選択されたオープンチャンネルキュー",
+    "SELECTED_SMS_QUEUES": "選択されたSMSキュー",
+    "SELECTED_VOICE_QUEUES": "選択された音声キュー",
+    "SELECTED_QUEUE_CAMPAIGNS": "選択されたキューキャンペーン",
     "SELECTED_TEAMS": "選択されたチーム",
     "SELECT_ALL": "すべて選択",
     "SELECT_NONE": "選択解除",
     "BLOCKED": "ロック済み",
     "DISABLED": "無効化",
     "REGENERATE": "再生成",
-    "ALL_QUEUES_WHATSAPP_INBOUND": "すべてのWhatsAppキュー",
+    "ALL_WHATSAPP_QUEUES": "すべてのWhatsAppキュー",
     "ALL_WHATSAPPACCOUNTS": "すべてのWhatsAppアカウント",
     "ALL_WHATSAPPQUEUES": "すべてのWhatasppキュー",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "WhatsAppキューへのエージェントの追加",
+    "ADD_AGENT_TO_WHATSAPP_QUEUES": "WhatsAppキューへのエージェントの追加",
     "QUEUEADD_USER_WHATSAPP_INBOUND": "WhatsAppキューへのユーザーの追加",
-    "SELECTED_QUEUES_WHATSAPP_INBOUND": "選択されたWhatsAppキュー",
+    "SELECTED_WHATSAPP_QUEUES": "選択されたWhatsAppキュー",
     "SELECTED_WHATSAPPACCOUNTS": "選択されたWhatsAppアカウント",
     "SELECTED_WHATSAPPQUEUES": "選択されたWhatsAppキュー",
     "USERADD_WHATSAPPACCOUNTS": "WhatsAppアカウントをユーザーに追加",
index 5be8467..4ac634c 100644 (file)
     "ALL_MODULES_AVAILABLE": "전체 사용가능한 모듈",
     "CALLGROUP": "전화 그룹",
     "PICKUPGROUP": "응답 그룹",
-    "QUEUEADD_AGENT_VOICE_OUTBOUND": "상담원 발신 음성에 상담그룹 추가",
-    "QUEUEADD_AGENT_VOICE_INBOUND": "상담원 수신 음성에 상담그룹 추가",
-    "QUEUEADD_AGENT_CHAT_INBOUND": "상담원 수신 채팅에 상담그룹 추가",
-    "QUEUEADD_AGENT_MAIL_INBOUND": "상담원 수신 이메일에 상담그룹 추가",
-    "QUEUEADD_AGENT_SMS_INBOUND": "상담원 수신 SMS에 상담그룹 추가",
-    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "상담원 수신 오픈채널에 상담그룹 추가",
-    "QUEUEADD_AGENT_FAX_INBOUND": "상담원 수신 팩스에 상담그룹 추가",
+    "ADD_AGENT_TO_QUEUE_CAMPAIGNS": "상담원 발신 음성에 상담그룹 추가",
+    "ADD_AGENT_TO_VOICE_QUEUES": "상담원 수신 음성에 상담그룹 추가",
+    "ADD_AGENT_TO_CHAT_QUEUES": "상담원 수신 채팅에 상담그룹 추가",
+    "ADD_AGENT_TO_MAIL_QUEUES": "상담원 수신 이메일에 상담그룹 추가",
+    "ADD_AGENT_TO_SMS_QUEUES": "상담원 수신 SMS에 상담그룹 추가",
+    "ADD_AGENT_TO_OPENCHANNEL_QUEUES": "상담원 수신 오픈채널에 상담그룹 추가",
+    "ADD_AGENT_TO_FAX_QUEUES": "상담원 수신 팩스에 상담그룹 추가",
     "QUEUEADD_USER_VOICE_INBOUND": "상담원 수신 음성에 상담그룹 추가",
     "QUEUEADD_USER_CHAT_INBOUND": "상담원 수신 채팅에 상담그룹 추가",
     "QUEUEADD_USER_MAIL_INBOUND": "상담원 수신 이메일에 상담그룹 추가",
     "ALL_TEAMS": "전체 팀",
     "SELECTED_TEAMS": "선택된 팀",
     "SELECTED_AGENTS": "선택된 상담원",
-    "ALL_QUEUES_VOICE_OUTBOUND": "전체상담그룹 발신 음성",
-    "SELECTED_QUEUES_VOICE_OUTBOUND": "선택된 상담그룹 발신 음성",
-    "ALL_QUEUES_VOICE_INBOUND": "전체 상담그룹 수신 음성",
-    "SELECTED_QUEUES_VOICE_INBOUND": "선택된 상담그룹 수신 음성",
-    "ALL_QUEUES_CHAT_INBOUND": "전체 상담그룹 수신 채팅",
-    "SELECTED_QUEUES_CHAT_INBOUND": "선택된 상담그룹 수신 채팅",
-    "ALL_QUEUES_MAIL_INBOUND": "전체 상담그룹 수신 이메일",
-    "SELECTED_QUEUES_MAIL_INBOUND": "선택된 상담그룹 수신 이메일",
-    "ALL_QUEUES_SMS_INBOUND": "전체 상담그룹 수신 SMS",
-    "SELECTED_QUEUES_SMS_INBOUND": "선택된 상담그룹 수신 SMS",
-    "ALL_QUEUES_OPENCHANNEL_INBOUND": "전체 상담그룹 수신 오픈채널",
-    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "선택된 상담그룹 수신 오픈채널",
-    "ALL_QUEUES_FAX_INBOUND": "전체 상담그룹 수신 팩스",
-    "SELECTED_QUEUES_FAX_INBOUND": "선택된 상담그룹 수신 팩스",
+    "ALL_QUEUE_CAMPAIGNS": "전체상담그룹 발신 음성",
+    "SELECTED_QUEUE_CAMPAIGNS": "선택된 상담그룹 발신 음성",
+    "ALL_VOICE_QUEUES": "전체 상담그룹 수신 음성",
+    "SELECTED_VOICE_QUEUES": "선택된 상담그룹 수신 음성",
+    "ALL_CHAT_QUEUES": "전체 상담그룹 수신 채팅",
+    "SELECTED_CHAT_QUEUES": "선택된 상담그룹 수신 채팅",
+    "ALL_MAIL_QUEUES": "전체 상담그룹 수신 이메일",
+    "SELECTED_MAIL_QUEUES": "선택된 상담그룹 수신 이메일",
+    "ALL_SMS_QUEUES": "전체 상담그룹 수신 SMS",
+    "SELECTED_SMS_QUEUES": "선택된 상담그룹 수신 SMS",
+    "ALL_OPENCHANNEL_QUEUES": "전체 상담그룹 수신 오픈채널",
+    "SELECTED_OPENCHANNEL_QUEUES": "선택된 상담그룹 수신 오픈채널",
+    "ALL_FAX_QUEUES": "전체 상담그룹 수신 팩스",
+    "SELECTED_FAX_QUEUES": "선택된 상담그룹 수신 팩스",
     "VOICEMAIL": "보이스메일",
     "SHOWWEBCONTROL": "웹 제어 표시",
     "PAGE": "페이지",
     "BLOCKED": "잠김",
     "DISABLED": "비활성화",
     "REGENERATE": "재생",
-    "ALL_QUEUES_WHATSAPP_INBOUND": "모든 WhatsApp 대기열",
+    "ALL_WHATSAPP_QUEUES": "모든 WhatsApp 대기열",
     "ALL_WHATSAPPACCOUNTS": "모든 WhatsApp 계정",
     "ALL_WHATSAPPQUEUES": "모든 Whataspp 대기열",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "WhatsApp 대기열에 에이전트 추가",
+    "ADD_AGENT_TO_WHATSAPP_QUEUES": "WhatsApp 대기열에 에이전트 추가",
     "QUEUEADD_USER_WHATSAPP_INBOUND": "WhatsApp 대기열에 사용자 추가",
-    "SELECTED_QUEUES_WHATSAPP_INBOUND": "선택된 WhatsApp 대기열",
+    "SELECTED_WHATSAPP_QUEUES": "선택된 WhatsApp 대기열",
     "SELECTED_WHATSAPPACCOUNTS": "선택된 WhatsApp 계정",
     "SELECTED_WHATSAPPQUEUES": "선택된 WhatsApp 대기열",
     "USERADD_WHATSAPPACCOUNTS": "사용자에게 WhatsApp 계정 추가",
index 3c7408d..cb980f4 100644 (file)
     "ALL_MODULES_AVAILABLE": "Galimi visi moduliai",
     "CALLGROUP": "Skambučių grupė",
     "PICKUPGROUP": "Pikapų grupė",
-    "QUEUEADD_AGENT_VOICE_OUTBOUND": "Pridėti agentą prie eilės kampanijų",
-    "QUEUEADD_AGENT_VOICE_INBOUND": "Pridėti agentą prie balso eilių",
-    "QUEUEADD_AGENT_CHAT_INBOUND": "Pridėti agentą prie pokalbio eilių",
-    "QUEUEADD_AGENT_MAIL_INBOUND": "Pridėti agentą prie el. pašto eilių",
-    "QUEUEADD_AGENT_SMS_INBOUND": "Pridėti agentą prie SMS eilių",
-    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Pridėti agentą prie atviro kanalo eilių",
-    "QUEUEADD_AGENT_FAX_INBOUND": "Pridėti agentą prie fakso eilių",
+    "ADD_AGENT_TO_QUEUE_CAMPAIGNS": "Pridėti agentą prie eilės kampanijų",
+    "ADD_AGENT_TO_VOICE_QUEUES": "Pridėti agentą prie balso eilių",
+    "ADD_AGENT_TO_CHAT_QUEUES": "Pridėti agentą prie pokalbio eilių",
+    "ADD_AGENT_TO_MAIL_QUEUES": "Pridėti agentą prie el. pašto eilių",
+    "ADD_AGENT_TO_SMS_QUEUES": "Pridėti agentą prie SMS eilių",
+    "ADD_AGENT_TO_OPENCHANNEL_QUEUES": "Pridėti agentą prie atviro kanalo eilių",
+    "ADD_AGENT_TO_FAX_QUEUES": "Pridėti agentą prie fakso eilių",
     "QUEUEADD_USER_VOICE_INBOUND": "Pridėti vartotoją prie balso eilių",
     "QUEUEADD_USER_CHAT_INBOUND": "Pridėti vartotoją prie pokalbio eilių",
     "QUEUEADD_USER_MAIL_INBOUND": "Pridėti vartotoją prie el. pašto eilių",
     "ALL_TEAMS": "Visos komandos",
     "SELECTED_TEAMS": "Pasirinktos komandos",
     "SELECTED_AGENTS": "Pasirinkti agentai",
-    "ALL_QUEUES_VOICE_OUTBOUND": "Visos eilės kampanijos",
-    "SELECTED_QUEUES_VOICE_OUTBOUND": "Pasirinktos eilės kampanijos",
-    "ALL_QUEUES_VOICE_INBOUND": "Visos balso eilės",
-    "SELECTED_QUEUES_VOICE_INBOUND": "Pasirinktos balso eilės",
-    "ALL_QUEUES_CHAT_INBOUND": "Visos pokalbio eilės",
-    "SELECTED_QUEUES_CHAT_INBOUND": "Pasirinktos pokalbio eilės",
-    "ALL_QUEUES_MAIL_INBOUND": "Visos el. pašto eilės",
-    "SELECTED_QUEUES_MAIL_INBOUND": "Pasirinktos el. pašto eilės",
-    "ALL_QUEUES_SMS_INBOUND": "Visos SMS eilės",
-    "SELECTED_QUEUES_SMS_INBOUND": "Pasirinktos SMS eilės",
-    "ALL_QUEUES_OPENCHANNEL_INBOUND": "Visos atviro kanalo eilės",
-    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Pasirinktos atviro kanalo eilės",
-    "ALL_QUEUES_FAX_INBOUND": "Visos fakso eilės",
-    "SELECTED_QUEUES_FAX_INBOUND": "Pasirinktos fakso eilės",
+    "ALL_QUEUE_CAMPAIGNS": "Visos eilės kampanijos",
+    "SELECTED_QUEUE_CAMPAIGNS": "Pasirinktos eilės kampanijos",
+    "ALL_VOICE_QUEUES": "Visos balso eilės",
+    "SELECTED_VOICE_QUEUES": "Pasirinktos balso eilės",
+    "ALL_CHAT_QUEUES": "Visos pokalbio eilės",
+    "SELECTED_CHAT_QUEUES": "Pasirinktos pokalbio eilės",
+    "ALL_MAIL_QUEUES": "Visos el. pašto eilės",
+    "SELECTED_MAIL_QUEUES": "Pasirinktos el. pašto eilės",
+    "ALL_SMS_QUEUES": "Visos SMS eilės",
+    "SELECTED_SMS_QUEUES": "Pasirinktos SMS eilės",
+    "ALL_OPENCHANNEL_QUEUES": "Visos atviro kanalo eilės",
+    "SELECTED_OPENCHANNEL_QUEUES": "Pasirinktos atviro kanalo eilės",
+    "ALL_FAX_QUEUES": "Visos fakso eilės",
+    "SELECTED_FAX_QUEUES": "Pasirinktos fakso eilės",
     "VOICEMAIL": "Balso paštas",
     "SHOWWEBCONTROL": "Tipologija",
     "PAGE": "Puslapis",
     "PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE": "Neteisėtas veiksmas",
     "PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE": "Jums neleidžiama pasiekti pasirinkto skyriaus",
     "PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE": "Jums neleidžiama kurti šaltinio",
-    "ALL_QUEUES_WHATSAPP_INBOUND": "Visos „WhatsApp“ eilės",
+    "ALL_WHATSAPP_QUEUES": "Visos „WhatsApp“ eilės",
     "ALL_WHATSAPPACCOUNTS": "Visos „WhatsApp“ paskyros",
     "ALL_WHATSAPPQUEUES": "Visos „Whataspp“ eilės",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Pridėti agentą prie „WhatsApp“ eilių",
+    "ADD_AGENT_TO_WHATSAPP_QUEUES": "Pridėti agentą prie „WhatsApp“ eilių",
     "QUEUEADD_USER_WHATSAPP_INBOUND": "Pridėti vartotoją prie „WhatsApp“ eilių",
-    "SELECTED_QUEUES_WHATSAPP_INBOUND": "Pasirinktos „WhatsApp“ eilės",
+    "SELECTED_WHATSAPP_QUEUES": "Pasirinktos „WhatsApp“ eilės",
     "SELECTED_WHATSAPPACCOUNTS": "Pasirinktos „WhatsApp“ paskyros",
     "SELECTED_WHATSAPPQUEUES": "Pasirinktos „WhatsApp“ eilės",
     "USERADD_WHATSAPPACCOUNTS": "Pridėkite „WhatsApp“ abonementą prie vartotojo",
index 404cf61..e1f79b9 100644 (file)
     "ALL_MODULES_AVAILABLE": "Visi pieejamie moduļi",
     "CALLGROUP": "Zvanu grupa",
     "PICKUPGROUP": "Pacelšanas grupa",
-    "QUEUEADD_AGENT_VOICE_OUTBOUND": "Pievienot aģentu rindas kampaņām",
-    "QUEUEADD_AGENT_VOICE_INBOUND": "Pievienot pārstāvi balss rindām",
-    "QUEUEADD_AGENT_CHAT_INBOUND": "Pievienot aģentu tērzēšanas rindām",
-    "QUEUEADD_AGENT_MAIL_INBOUND": "Pievienot aģentu e-pasta rindām",
-    "QUEUEADD_AGENT_SMS_INBOUND": "Pievienot aģentu īsziņu rindām",
-    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Pievienot aģentu atvērtā kanāla rindām",
-    "QUEUEADD_AGENT_FAX_INBOUND": "Pievienot aģentu faksa rindām",
+    "ADD_AGENT_TO_QUEUE_CAMPAIGNS": "Pievienot aģentu rindas kampaņām",
+    "ADD_AGENT_TO_VOICE_QUEUES": "Pievienot pārstāvi balss rindām",
+    "ADD_AGENT_TO_CHAT_QUEUES": "Pievienot aģentu tērzēšanas rindām",
+    "ADD_AGENT_TO_MAIL_QUEUES": "Pievienot aģentu e-pasta rindām",
+    "ADD_AGENT_TO_SMS_QUEUES": "Pievienot aģentu īsziņu rindām",
+    "ADD_AGENT_TO_OPENCHANNEL_QUEUES": "Pievienot aģentu atvērtā kanāla rindām",
+    "ADD_AGENT_TO_FAX_QUEUES": "Pievienot aģentu faksa rindām",
     "QUEUEADD_USER_VOICE_INBOUND": "Pievienot lietotāju balss rindām",
     "QUEUEADD_USER_CHAT_INBOUND": "Pievienot lietotāju tērzēšanas rindām",
     "QUEUEADD_USER_MAIL_INBOUND": "Pievienot lietotāju e-pasta rindām",
     "ALL_TEAMS": "Visas komandas",
     "SELECTED_TEAMS": "Atlasītās komandas",
     "SELECTED_AGENTS": "Atlasītie aģenti",
-    "ALL_QUEUES_VOICE_OUTBOUND": "Visas rindas kampaņas",
-    "SELECTED_QUEUES_VOICE_OUTBOUND": "Atlasītās rindas kampaņas",
-    "ALL_QUEUES_VOICE_INBOUND": "Visas balss rindas",
-    "SELECTED_QUEUES_VOICE_INBOUND": "Atlasītās balss rindas",
-    "ALL_QUEUES_CHAT_INBOUND": "Visas tērzēšanas rindas",
-    "SELECTED_QUEUES_CHAT_INBOUND": "Atlasītās tērzēšanas rindas",
-    "ALL_QUEUES_MAIL_INBOUND": "Visas e-pasta rindas",
-    "SELECTED_QUEUES_MAIL_INBOUND": "Atlasītās e-pasta rindas",
-    "ALL_QUEUES_SMS_INBOUND": "Visas īsziņu rindas",
-    "SELECTED_QUEUES_SMS_INBOUND": "Atlasītās īsziņu rindas",
-    "ALL_QUEUES_OPENCHANNEL_INBOUND": "Visas Open Channel rindas",
-    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Atlasītās atvērto kanālu rindas",
-    "ALL_QUEUES_FAX_INBOUND": "Visas faksa rindas",
-    "SELECTED_QUEUES_FAX_INBOUND": "Atlasītās faksa rindas",
+    "ALL_QUEUE_CAMPAIGNS": "Visas rindas kampaņas",
+    "SELECTED_QUEUE_CAMPAIGNS": "Atlasītās rindas kampaņas",
+    "ALL_VOICE_QUEUES": "Visas balss rindas",
+    "SELECTED_VOICE_QUEUES": "Atlasītās balss rindas",
+    "ALL_CHAT_QUEUES": "Visas tērzēšanas rindas",
+    "SELECTED_CHAT_QUEUES": "Atlasītās tērzēšanas rindas",
+    "ALL_MAIL_QUEUES": "Visas e-pasta rindas",
+    "SELECTED_MAIL_QUEUES": "Atlasītās e-pasta rindas",
+    "ALL_SMS_QUEUES": "Visas īsziņu rindas",
+    "SELECTED_SMS_QUEUES": "Atlasītās īsziņu rindas",
+    "ALL_OPENCHANNEL_QUEUES": "Visas Open Channel rindas",
+    "SELECTED_OPENCHANNEL_QUEUES": "Atlasītās atvērto kanālu rindas",
+    "ALL_FAX_QUEUES": "Visas faksa rindas",
+    "SELECTED_FAX_QUEUES": "Atlasītās faksa rindas",
     "VOICEMAIL": "Balss pasts",
     "SHOWWEBCONTROL": "Tipoloģija",
     "PAGE": "Lappuse",
     "BLOCKED": "Slēgts",
     "DISABLED": "Deaktivizēts",
     "REGENERATE": "Atjaunot",
-    "ALL_QUEUES_WHATSAPP_INBOUND": "Visas WhatsApp rindas",
+    "ALL_WHATSAPP_QUEUES": "Visas WhatsApp rindas",
     "ALL_WHATSAPPACCOUNTS": "Visi WhatsApp konti",
     "ALL_WHATSAPPQUEUES": "Visas Kasaspa rindas",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Pievienojiet aģentu WhatsApp rindām",
+    "ADD_AGENT_TO_WHATSAPP_QUEUES": "Pievienojiet aģentu WhatsApp rindām",
     "QUEUEADD_USER_WHATSAPP_INBOUND": "Pievienojiet lietotāju WhatsApp rindām",
-    "SELECTED_QUEUES_WHATSAPP_INBOUND": "Atlasītās WhatsApp rindas",
+    "SELECTED_WHATSAPP_QUEUES": "Atlasītās WhatsApp rindas",
     "SELECTED_WHATSAPPACCOUNTS": "Atlasītie WhatsApp konti",
     "SELECTED_WHATSAPPQUEUES": "Atlasītās WhatsApp rindas",
     "USERADD_WHATSAPPACCOUNTS": "Pievienojiet WhatsApp kontu lietotājam",
index 835f03f..d00a035 100644 (file)
     "ALL_MODULES_AVAILABLE": "Alle modules beschikbaar",
     "CALLGROUP": "Groepsgesprek",
     "PICKUPGROUP": "Groepsgesprekken",
-    "QUEUEADD_AGENT_VOICE_OUTBOUND": "Agent toevoegen aan wachtrij campagnes",
-    "QUEUEADD_AGENT_VOICE_INBOUND": "Voeg Agent Voice wachtrijen",
-    "QUEUEADD_AGENT_CHAT_INBOUND": "Voeg Agent Chatwachtrijen",
-    "QUEUEADD_AGENT_MAIL_INBOUND": "Voeg Agent Mailwachtrijen",
-    "QUEUEADD_AGENT_SMS_INBOUND": "Voeg Agent naar SMS-wachtrijen",
-    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Voeg Agent Open kanaal wachtrijen",
-    "QUEUEADD_AGENT_FAX_INBOUND": "Voeg Agent Faxwachtrijen",
+    "ADD_AGENT_TO_QUEUE_CAMPAIGNS": "Agent toevoegen aan wachtrij campagnes",
+    "ADD_AGENT_TO_VOICE_QUEUES": "Voeg Agent Voice wachtrijen",
+    "ADD_AGENT_TO_CHAT_QUEUES": "Voeg Agent Chatwachtrijen",
+    "ADD_AGENT_TO_MAIL_QUEUES": "Voeg Agent Mailwachtrijen",
+    "ADD_AGENT_TO_SMS_QUEUES": "Voeg Agent naar SMS-wachtrijen",
+    "ADD_AGENT_TO_OPENCHANNEL_QUEUES": "Voeg Agent Open kanaal wachtrijen",
+    "ADD_AGENT_TO_FAX_QUEUES": "Voeg Agent Faxwachtrijen",
     "QUEUEADD_USER_VOICE_INBOUND": "Gebruiker toevoegen aan Voice-wachtrijen",
     "QUEUEADD_USER_CHAT_INBOUND": "Gebruiker toevoegen aan Chatwachtrijen",
     "QUEUEADD_USER_MAIL_INBOUND": "Gebruiker toevoegen aan Mailwachtrijen",
     "ALL_TEAMS": "Alle teams",
     "SELECTED_TEAMS": "Geselecteerde teams",
     "SELECTED_AGENTS": "Geselecteerde agenten",
-    "ALL_QUEUES_VOICE_OUTBOUND": "Alle Wachtrij campagnes",
-    "SELECTED_QUEUES_VOICE_OUTBOUND": "Geselecteerde Wachtrij campagnes",
-    "ALL_QUEUES_VOICE_INBOUND": "Alle spraak wachtrijen",
-    "SELECTED_QUEUES_VOICE_INBOUND": "Geselecteerde wachtrijen",
-    "ALL_QUEUES_CHAT_INBOUND": "Alle wachtrijen",
-    "SELECTED_QUEUES_CHAT_INBOUND": "Geselecteerde Chatwachtrijen",
-    "ALL_QUEUES_MAIL_INBOUND": "Alle Mailwachtrijen",
-    "SELECTED_QUEUES_MAIL_INBOUND": "Geselecteerde Mailwachtrijen",
-    "ALL_QUEUES_SMS_INBOUND": "Alle SMS-wachtrijen",
-    "SELECTED_QUEUES_SMS_INBOUND": "Geselecteerde SMS wachtrijen",
-    "ALL_QUEUES_OPENCHANNEL_INBOUND": "Alle open kanaal wachtrijen",
-    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Geselecteerde Open kanaal wachtrijen",
-    "ALL_QUEUES_FAX_INBOUND": "Alle Faxwachtrijen",
-    "SELECTED_QUEUES_FAX_INBOUND": "Geselecteerde Faxwachtrijen",
+    "ALL_QUEUE_CAMPAIGNS": "Alle Wachtrij campagnes",
+    "SELECTED_QUEUE_CAMPAIGNS": "Geselecteerde Wachtrij campagnes",
+    "ALL_VOICE_QUEUES": "Alle spraak wachtrijen",
+    "SELECTED_VOICE_QUEUES": "Geselecteerde wachtrijen",
+    "ALL_CHAT_QUEUES": "Alle wachtrijen",
+    "SELECTED_CHAT_QUEUES": "Geselecteerde Chatwachtrijen",
+    "ALL_MAIL_QUEUES": "Alle Mailwachtrijen",
+    "SELECTED_MAIL_QUEUES": "Geselecteerde Mailwachtrijen",
+    "ALL_SMS_QUEUES": "Alle SMS-wachtrijen",
+    "SELECTED_SMS_QUEUES": "Geselecteerde SMS wachtrijen",
+    "ALL_OPENCHANNEL_QUEUES": "Alle open kanaal wachtrijen",
+    "SELECTED_OPENCHANNEL_QUEUES": "Geselecteerde Open kanaal wachtrijen",
+    "ALL_FAX_QUEUES": "Alle Faxwachtrijen",
+    "SELECTED_FAX_QUEUES": "Geselecteerde Faxwachtrijen",
     "VOICEMAIL": "Voicemail",
     "SHOWWEBCONTROL": "Show Web Control",
     "PAGE": "Pagina",
     "BLOCKED": "Op slot",
     "DISABLED": "Gedeactiveerd",
     "REGENERATE": "Regenereren",
-    "ALL_QUEUES_WHATSAPP_INBOUND": "Alle WhatsApp-wachtrijen",
+    "ALL_WHATSAPP_QUEUES": "Alle WhatsApp-wachtrijen",
     "ALL_WHATSAPPACCOUNTS": "Alle WhatsApp-accounts",
     "ALL_WHATSAPPQUEUES": "Alle Whataspp-wachtrijen",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Voeg agent toe aan WhatsApp-wachtrijen",
+    "ADD_AGENT_TO_WHATSAPP_QUEUES": "Voeg agent toe aan WhatsApp-wachtrijen",
     "QUEUEADD_USER_WHATSAPP_INBOUND": "Gebruiker toevoegen aan WhatsApp-wachtrijen",
-    "SELECTED_QUEUES_WHATSAPP_INBOUND": "Geselecteerde WhatsApp-wachtrijen",
+    "SELECTED_WHATSAPP_QUEUES": "Geselecteerde WhatsApp-wachtrijen",
     "SELECTED_WHATSAPPACCOUNTS": "Geselecteerde WhatsApp-accounts",
     "SELECTED_WHATSAPPQUEUES": "Geselecteerde WhatsApp-wachtrijen",
     "USERADD_WHATSAPPACCOUNTS": "Voeg WhatsApp-account toe aan gebruiker",
index 1e918f6..cb1fbc7 100644 (file)
     "ALL_MODULES_AVAILABLE": "Alle moduler tilgjengelig",
     "CALLGROUP": "Ring gruppe",
     "PICKUPGROUP": "Pickup-gruppe",
-    "QUEUEADD_AGENT_VOICE_OUTBOUND": "Legg til Agent til kø-kampanjer",
-    "QUEUEADD_AGENT_VOICE_INBOUND": "Legg til Agent til Voice køer",
-    "QUEUEADD_AGENT_CHAT_INBOUND": "Legg til Agent til å prate køer",
-    "QUEUEADD_AGENT_MAIL_INBOUND": "Legg til Agent til post køer",
-    "QUEUEADD_AGENT_SMS_INBOUND": "Legg til Agent til SMS-køer",
-    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Legg til Agent for å åpne kanalen køer",
-    "QUEUEADD_AGENT_FAX_INBOUND": "Legg til Agent til faks køer",
+    "ADD_AGENT_TO_QUEUE_CAMPAIGNS": "Legg til Agent til kø-kampanjer",
+    "ADD_AGENT_TO_VOICE_QUEUES": "Legg til Agent til Voice køer",
+    "ADD_AGENT_TO_CHAT_QUEUES": "Legg til Agent til å prate køer",
+    "ADD_AGENT_TO_MAIL_QUEUES": "Legg til Agent til post køer",
+    "ADD_AGENT_TO_SMS_QUEUES": "Legg til Agent til SMS-køer",
+    "ADD_AGENT_TO_OPENCHANNEL_QUEUES": "Legg til Agent for å åpne kanalen køer",
+    "ADD_AGENT_TO_FAX_QUEUES": "Legg til Agent til faks køer",
     "QUEUEADD_USER_VOICE_INBOUND": "Legg brukeren til å stemme køer",
     "QUEUEADD_USER_CHAT_INBOUND": "Legg brukeren til å prate køer",
     "QUEUEADD_USER_MAIL_INBOUND": "Legg brukeren til post køer",
     "ALL_TEAMS": "Alle grupper",
     "SELECTED_TEAMS": "Valgte lag",
     "SELECTED_AGENTS": "Valgt agenter",
-    "ALL_QUEUES_VOICE_OUTBOUND": "Alle kø kampanjer",
-    "SELECTED_QUEUES_VOICE_OUTBOUND": "Valgte kø kampanjer",
-    "ALL_QUEUES_VOICE_INBOUND": "Alle Voice køer",
-    "SELECTED_QUEUES_VOICE_INBOUND": "Valgt stemme køer",
-    "ALL_QUEUES_CHAT_INBOUND": "Alle Chat køer",
-    "SELECTED_QUEUES_CHAT_INBOUND": "Valgt Chat køer",
-    "ALL_QUEUES_MAIL_INBOUND": "Alle post-køer",
-    "SELECTED_QUEUES_MAIL_INBOUND": "Valgt post køer",
-    "ALL_QUEUES_SMS_INBOUND": "Alle SMS-køer",
-    "SELECTED_QUEUES_SMS_INBOUND": "Valgt SMS køer",
-    "ALL_QUEUES_OPENCHANNEL_INBOUND": "Alle åpne kanal køer",
-    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Valgt åpen kanal køer",
-    "ALL_QUEUES_FAX_INBOUND": "Alle faks køer",
-    "SELECTED_QUEUES_FAX_INBOUND": "Valgt faks køer",
+    "ALL_QUEUE_CAMPAIGNS": "Alle kø kampanjer",
+    "SELECTED_QUEUE_CAMPAIGNS": "Valgte kø kampanjer",
+    "ALL_VOICE_QUEUES": "Alle Voice køer",
+    "SELECTED_VOICE_QUEUES": "Valgt stemme køer",
+    "ALL_CHAT_QUEUES": "Alle Chat køer",
+    "SELECTED_CHAT_QUEUES": "Valgt Chat køer",
+    "ALL_MAIL_QUEUES": "Alle post-køer",
+    "SELECTED_MAIL_QUEUES": "Valgt post køer",
+    "ALL_SMS_QUEUES": "Alle SMS-køer",
+    "SELECTED_SMS_QUEUES": "Valgt SMS køer",
+    "ALL_OPENCHANNEL_QUEUES": "Alle åpne kanal køer",
+    "SELECTED_OPENCHANNEL_QUEUES": "Valgt åpen kanal køer",
+    "ALL_FAX_QUEUES": "Alle faks køer",
+    "SELECTED_FAX_QUEUES": "Valgt faks køer",
     "VOICEMAIL": "Talebeskjed",
     "SHOWWEBCONTROL": "Vis Web-kontroll",
     "PAGE": "Siden",
     "BLOCKED": "Låst",
     "DISABLED": "Deaktivert",
     "REGENERATE": "regenerere",
-    "ALL_QUEUES_WHATSAPP_INBOUND": "Alle WhatsApp-køer",
+    "ALL_WHATSAPP_QUEUES": "Alle WhatsApp-køer",
     "ALL_WHATSAPPACCOUNTS": "Alle WhatsApp-kontoer",
     "ALL_WHATSAPPQUEUES": "Alle Whataspp-køer",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Legg agent til WhatsApp-køer",
+    "ADD_AGENT_TO_WHATSAPP_QUEUES": "Legg agent til WhatsApp-køer",
     "QUEUEADD_USER_WHATSAPP_INBOUND": "Legg til bruker i WhatsApp-køer",
-    "SELECTED_QUEUES_WHATSAPP_INBOUND": "Valgte WhatsApp-køer",
+    "SELECTED_WHATSAPP_QUEUES": "Valgte WhatsApp-køer",
     "SELECTED_WHATSAPPACCOUNTS": "Valgte WhatsApp-kontoer",
     "SELECTED_WHATSAPPQUEUES": "Valgte WhatsApp-køer",
     "USERADD_WHATSAPPACCOUNTS": "Legg WhatsApp-konto til brukeren",
index 6ed21f7..037d010 100644 (file)
     "ALL_MODULES_AVAILABLE": "Wszystkie dostępne moduły",
     "CALLGROUP": "Zaproszenie grupy",
     "PICKUPGROUP": "Grupy przejmowania połączeń",
-    "QUEUEADD_AGENT_VOICE_OUTBOUND": "Dodaj agenta do kolejki kampanie reklamowe",
-    "QUEUEADD_AGENT_VOICE_INBOUND": "Dodaj agenta do głosu kolejek",
-    "QUEUEADD_AGENT_CHAT_INBOUND": "Dodaj agenta do rozmów kolejek",
-    "QUEUEADD_AGENT_MAIL_INBOUND": "Dodaj agenta do kolejek poczty",
-    "QUEUEADD_AGENT_SMS_INBOUND": "Dodaj agenta do kolejki wiadomości SMS",
-    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Dodaj agenta do otwartego kanału kolejek",
-    "QUEUEADD_AGENT_FAX_INBOUND": "Dodaj agenta do kolejek faksu",
+    "ADD_AGENT_TO_QUEUE_CAMPAIGNS": "Dodaj agenta do kolejki kampanie reklamowe",
+    "ADD_AGENT_TO_VOICE_QUEUES": "Dodaj agenta do głosu kolejek",
+    "ADD_AGENT_TO_CHAT_QUEUES": "Dodaj agenta do rozmów kolejek",
+    "ADD_AGENT_TO_MAIL_QUEUES": "Dodaj agenta do kolejek poczty",
+    "ADD_AGENT_TO_SMS_QUEUES": "Dodaj agenta do kolejki wiadomości SMS",
+    "ADD_AGENT_TO_OPENCHANNEL_QUEUES": "Dodaj agenta do otwartego kanału kolejek",
+    "ADD_AGENT_TO_FAX_QUEUES": "Dodaj agenta do kolejek faksu",
     "QUEUEADD_USER_VOICE_INBOUND": "Dodaj użytkownika do głosu kolejek",
     "QUEUEADD_USER_CHAT_INBOUND": "Dodaj użytkownika do rozmów kolejek",
     "QUEUEADD_USER_MAIL_INBOUND": "Dodaj użytkownika do kolejek poczty",
     "ALL_TEAMS": "Wszystkie zespoły",
     "SELECTED_TEAMS": "Wybrane zespoły",
     "SELECTED_AGENTS": "Wybranych agentów",
-    "ALL_QUEUES_VOICE_OUTBOUND": "Wszystkie kampanie kolejki",
-    "SELECTED_QUEUES_VOICE_OUTBOUND": "Wybrane kampanie kolejki",
-    "ALL_QUEUES_VOICE_INBOUND": "Wszystkie notatki głosowe kolejek",
-    "SELECTED_QUEUES_VOICE_INBOUND": "Wybrane głos kolejek",
-    "ALL_QUEUES_CHAT_INBOUND": "Wszystkich kolejek czatu",
-    "SELECTED_QUEUES_CHAT_INBOUND": "Wybrany Czat kolejek",
-    "ALL_QUEUES_MAIL_INBOUND": "Wszystkich kolejek poczty",
-    "SELECTED_QUEUES_MAIL_INBOUND": "Wybrane kolejek poczty",
-    "ALL_QUEUES_SMS_INBOUND": "Wszystkich kolejek SMS",
-    "SELECTED_QUEUES_SMS_INBOUND": "Wybrany SMS kolejek",
-    "ALL_QUEUES_OPENCHANNEL_INBOUND": "Wszystkie Wiekszość kolejek",
-    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Wybrane Wiekszość kolejek",
-    "ALL_QUEUES_FAX_INBOUND": "Wszystkie kolejki faksów",
-    "SELECTED_QUEUES_FAX_INBOUND": "Wybrane Fax kolejek",
+    "ALL_QUEUE_CAMPAIGNS": "Wszystkie kampanie kolejki",
+    "SELECTED_QUEUE_CAMPAIGNS": "Wybrane kampanie kolejki",
+    "ALL_VOICE_QUEUES": "Wszystkie notatki głosowe kolejek",
+    "SELECTED_VOICE_QUEUES": "Wybrane głos kolejek",
+    "ALL_CHAT_QUEUES": "Wszystkich kolejek czatu",
+    "SELECTED_CHAT_QUEUES": "Wybrany Czat kolejek",
+    "ALL_MAIL_QUEUES": "Wszystkich kolejek poczty",
+    "SELECTED_MAIL_QUEUES": "Wybrane kolejek poczty",
+    "ALL_SMS_QUEUES": "Wszystkich kolejek SMS",
+    "SELECTED_SMS_QUEUES": "Wybrany SMS kolejek",
+    "ALL_OPENCHANNEL_QUEUES": "Wszystkie Wiekszość kolejek",
+    "SELECTED_OPENCHANNEL_QUEUES": "Wybrane Wiekszość kolejek",
+    "ALL_FAX_QUEUES": "Wszystkie kolejki faksów",
+    "SELECTED_FAX_QUEUES": "Wybrane Fax kolejek",
     "VOICEMAIL": "Poczta głosowa",
     "SHOWWEBCONTROL": "Pokaż Web Control",
     "PAGE": "Page",
     "BLOCKED": "Zablokowany",
     "DISABLED": "Dezaktywowano",
     "REGENERATE": "Zregenerować",
-    "ALL_QUEUES_WHATSAPP_INBOUND": "Wszystkie kolejki WhatsApp",
+    "ALL_WHATSAPP_QUEUES": "Wszystkie kolejki WhatsApp",
     "ALL_WHATSAPPACCOUNTS": "Wszystkie konta WhatsApp",
     "ALL_WHATSAPPQUEUES": "Wszystkie kolejki Whataspp",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Dodaj agenta do kolejek WhatsApp",
+    "ADD_AGENT_TO_WHATSAPP_QUEUES": "Dodaj agenta do kolejek WhatsApp",
     "QUEUEADD_USER_WHATSAPP_INBOUND": "Dodaj użytkownika do kolejek WhatsApp",
-    "SELECTED_QUEUES_WHATSAPP_INBOUND": "Wybrane kolejki WhatsApp",
+    "SELECTED_WHATSAPP_QUEUES": "Wybrane kolejki WhatsApp",
     "SELECTED_WHATSAPPACCOUNTS": "Wybrane konta WhatsApp",
     "SELECTED_WHATSAPPQUEUES": "Wybrane kolejki WhatsApp",
     "USERADD_WHATSAPPACCOUNTS": "Dodaj konto WhatsApp do użytkownika",
index bf2c9d3..9694b2c 100644 (file)
     "ALL_MODULES_AVAILABLE": "Todos os módulos disponíveis",
     "CALLGROUP": "Grupo de Chamadas",
     "PICKUPGROUP": "Grupo de retirada",
-    "QUEUEADD_AGENT_VOICE_OUTBOUND": "Adicionar agente a campanhas de fila",
-    "QUEUEADD_AGENT_VOICE_INBOUND": "Adicionar agente às filas de voz",
-    "QUEUEADD_AGENT_CHAT_INBOUND": "Adicionar agente às filas de Chat",
-    "QUEUEADD_AGENT_MAIL_INBOUND": "Adicionar agente às filas de emails",
-    "QUEUEADD_AGENT_SMS_INBOUND": "Adicionar agente às filas do SMS",
-    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Adicionar agente às filas do Open Channel",
-    "QUEUEADD_AGENT_FAX_INBOUND": "Adicionar agente às filas de fax",
+    "ADD_AGENT_TO_QUEUE_CAMPAIGNS": "Adicionar agente a campanhas de fila",
+    "ADD_AGENT_TO_VOICE_QUEUES": "Adicionar agente às filas de voz",
+    "ADD_AGENT_TO_CHAT_QUEUES": "Adicionar agente às filas de Chat",
+    "ADD_AGENT_TO_MAIL_QUEUES": "Adicionar agente às filas de emails",
+    "ADD_AGENT_TO_SMS_QUEUES": "Adicionar agente às filas do SMS",
+    "ADD_AGENT_TO_OPENCHANNEL_QUEUES": "Adicionar agente às filas do Open Channel",
+    "ADD_AGENT_TO_FAX_QUEUES": "Adicionar agente às filas de fax",
     "QUEUEADD_USER_VOICE_INBOUND": "Adicionar usuário às filas de voz",
     "QUEUEADD_USER_CHAT_INBOUND": "Adicionar usuário a filas de Chat",
     "QUEUEADD_USER_MAIL_INBOUND": "Adicionar usuário a filas de e-mail",
     "ALL_TEAMS": "Todas as equipes",
     "SELECTED_TEAMS": "Equipes Selecionadas",
     "SELECTED_AGENTS": "Agentes Selecionados",
-    "ALL_QUEUES_VOICE_OUTBOUND": "Todas as campanhas de filas",
-    "SELECTED_QUEUES_VOICE_OUTBOUND": "Campanhas de Filas Selecionadas",
-    "ALL_QUEUES_VOICE_INBOUND": "Todas as filas de voz",
-    "SELECTED_QUEUES_VOICE_INBOUND": "Filas de voz selecionadas",
-    "ALL_QUEUES_CHAT_INBOUND": "Todas as filas de Chat",
-    "SELECTED_QUEUES_CHAT_INBOUND": "Filas de Chat Selecionadas",
-    "ALL_QUEUES_MAIL_INBOUND": "Todas as filas de email",
-    "SELECTED_QUEUES_MAIL_INBOUND": "Filas de E-mail Selecionadas",
-    "ALL_QUEUES_SMS_INBOUND": "Todas as filas do SMS",
-    "SELECTED_QUEUES_SMS_INBOUND": "Filas SMS Selecionadas",
-    "ALL_QUEUES_OPENCHANNEL_INBOUND": "Todas as filas do Open Channel",
-    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Filas de Open Channel Selecionadas",
-    "ALL_QUEUES_FAX_INBOUND": "Todas as filas de fax",
-    "SELECTED_QUEUES_FAX_INBOUND": "Filas de fax selecionadas",
+    "ALL_QUEUE_CAMPAIGNS": "Todas as campanhas de filas",
+    "SELECTED_QUEUE_CAMPAIGNS": "Campanhas de Filas Selecionadas",
+    "ALL_VOICE_QUEUES": "Todas as filas de voz",
+    "SELECTED_VOICE_QUEUES": "Filas de voz selecionadas",
+    "ALL_CHAT_QUEUES": "Todas as filas de Chat",
+    "SELECTED_CHAT_QUEUES": "Filas de Chat Selecionadas",
+    "ALL_MAIL_QUEUES": "Todas as filas de email",
+    "SELECTED_MAIL_QUEUES": "Filas de E-mail Selecionadas",
+    "ALL_SMS_QUEUES": "Todas as filas do SMS",
+    "SELECTED_SMS_QUEUES": "Filas SMS Selecionadas",
+    "ALL_OPENCHANNEL_QUEUES": "Todas as filas do Open Channel",
+    "SELECTED_OPENCHANNEL_QUEUES": "Filas de Open Channel Selecionadas",
+    "ALL_FAX_QUEUES": "Todas as filas de fax",
+    "SELECTED_FAX_QUEUES": "Filas de fax selecionadas",
     "VOICEMAIL": "Correio de voz",
     "SHOWWEBCONTROL": "Tipologia",
     "PAGE": "Página",
     "BLOCKED": "Bloqueado",
     "DISABLED": "Desativado",
     "REGENERATE": "Regenerado",
-    "ALL_QUEUES_WHATSAPP_INBOUND": "Todas as filas de WhatsApp",
+    "ALL_WHATSAPP_QUEUES": "Todas as filas de WhatsApp",
     "ALL_WHATSAPPACCOUNTS": "Todas as contas WhatsApp",
     "ALL_WHATSAPPQUEUES": "Todas as filas Whataspp",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Adicionar agente às filas do WhatsApp",
+    "ADD_AGENT_TO_WHATSAPP_QUEUES": "Adicionar agente às filas do WhatsApp",
     "QUEUEADD_USER_WHATSAPP_INBOUND": "Adicionar usuário às filas do WhatsApp",
-    "SELECTED_QUEUES_WHATSAPP_INBOUND": "Filas de WhatsApp selecionadas",
+    "SELECTED_WHATSAPP_QUEUES": "Filas de WhatsApp selecionadas",
     "SELECTED_WHATSAPPACCOUNTS": "Contas WhatsApp selecionadas",
     "SELECTED_WHATSAPPQUEUES": "Filas de WhatsApp selecionadas",
     "USERADD_WHATSAPPACCOUNTS": "Adicionar conta WhatsApp ao usuário",
index 44742f9..2257104 100644 (file)
     "ALL_MODULES_AVAILABLE": "Todos os módulos disponíveis",
     "CALLGROUP": "Grupo de chamada",
     "PICKUPGROUP": "Grupo de captura",
-    "QUEUEADD_AGENT_VOICE_OUTBOUND": "Adicionar agente para fila de campanhas",
-    "QUEUEADD_AGENT_VOICE_INBOUND": "Adicionar agente para filas de voz",
-    "QUEUEADD_AGENT_CHAT_INBOUND": "Adicionar agente para filas de bate-papo",
-    "QUEUEADD_AGENT_MAIL_INBOUND": "Adicionar agente para filas de correio",
-    "QUEUEADD_AGENT_SMS_INBOUND": "Adicionar agente para filas de SMS",
-    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Adicionar agente para filas de canal aberto",
-    "QUEUEADD_AGENT_FAX_INBOUND": "Adicionar agente para filas de Fax",
+    "ADD_AGENT_TO_QUEUE_CAMPAIGNS": "Adicionar agente para fila de campanhas",
+    "ADD_AGENT_TO_VOICE_QUEUES": "Adicionar agente para filas de voz",
+    "ADD_AGENT_TO_CHAT_QUEUES": "Adicionar agente para filas de bate-papo",
+    "ADD_AGENT_TO_MAIL_QUEUES": "Adicionar agente para filas de correio",
+    "ADD_AGENT_TO_SMS_QUEUES": "Adicionar agente para filas de SMS",
+    "ADD_AGENT_TO_OPENCHANNEL_QUEUES": "Adicionar agente para filas de canal aberto",
+    "ADD_AGENT_TO_FAX_QUEUES": "Adicionar agente para filas de Fax",
     "QUEUEADD_USER_VOICE_INBOUND": "Adicionar usuário à filas de voz",
     "QUEUEADD_USER_CHAT_INBOUND": "Adicionar usuário para filas de bate-papo",
     "QUEUEADD_USER_MAIL_INBOUND": "Adicionar usuário ao Mail filas",
     "ALL_TEAMS": "Todas as equipas",
     "SELECTED_TEAMS": "Equipes selecionadas",
     "SELECTED_AGENTS": "Agentes selecionados",
-    "ALL_QUEUES_VOICE_OUTBOUND": "Todas as campanhas de fila",
-    "SELECTED_QUEUES_VOICE_OUTBOUND": "Campanhas de filas selecionado",
-    "ALL_QUEUES_VOICE_INBOUND": "Todas as filas de voz",
-    "SELECTED_QUEUES_VOICE_INBOUND": "Filas de voz selecionado",
-    "ALL_QUEUES_CHAT_INBOUND": "Todas as filas de bate-papo",
-    "SELECTED_QUEUES_CHAT_INBOUND": "Filas de chat selecionado",
-    "ALL_QUEUES_MAIL_INBOUND": "Todas as filas de correio",
-    "SELECTED_QUEUES_MAIL_INBOUND": "Filas de correio seleccionado",
-    "ALL_QUEUES_SMS_INBOUND": "Todas as filas de SMS",
-    "SELECTED_QUEUES_SMS_INBOUND": "Filas de SMS selecionado",
-    "ALL_QUEUES_OPENCHANNEL_INBOUND": "Todas as filas de canal aberto",
-    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Filas de abrir o canal seleccionado",
-    "ALL_QUEUES_FAX_INBOUND": "Todas as filas de Fax",
-    "SELECTED_QUEUES_FAX_INBOUND": "Filas de fax selecionado",
+    "ALL_QUEUE_CAMPAIGNS": "Todas as campanhas de fila",
+    "SELECTED_QUEUE_CAMPAIGNS": "Campanhas de filas selecionado",
+    "ALL_VOICE_QUEUES": "Todas as filas de voz",
+    "SELECTED_VOICE_QUEUES": "Filas de voz selecionado",
+    "ALL_CHAT_QUEUES": "Todas as filas de bate-papo",
+    "SELECTED_CHAT_QUEUES": "Filas de chat selecionado",
+    "ALL_MAIL_QUEUES": "Todas as filas de correio",
+    "SELECTED_MAIL_QUEUES": "Filas de correio seleccionado",
+    "ALL_SMS_QUEUES": "Todas as filas de SMS",
+    "SELECTED_SMS_QUEUES": "Filas de SMS selecionado",
+    "ALL_OPENCHANNEL_QUEUES": "Todas as filas de canal aberto",
+    "SELECTED_OPENCHANNEL_QUEUES": "Filas de abrir o canal seleccionado",
+    "ALL_FAX_QUEUES": "Todas as filas de Fax",
+    "SELECTED_FAX_QUEUES": "Filas de fax selecionado",
     "VOICEMAIL": "Correio de voz",
     "SHOWWEBCONTROL": "Mostrar Controlo Web",
     "PAGE": "Página",
     "BLOCKED": "Bloqueado",
     "DISABLED": "Desativado",
     "REGENERATE": "Regenerado",
-    "ALL_QUEUES_WHATSAPP_INBOUND": "Todas as filas de WhatsApp",
+    "ALL_WHATSAPP_QUEUES": "Todas as filas de WhatsApp",
     "ALL_WHATSAPPACCOUNTS": "Todas as contas WhatsApp",
     "ALL_WHATSAPPQUEUES": "Todas as filas Whataspp",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Adicionar agente às filas do WhatsApp",
+    "ADD_AGENT_TO_WHATSAPP_QUEUES": "Adicionar agente às filas do WhatsApp",
     "QUEUEADD_USER_WHATSAPP_INBOUND": "Adicionar usuário às filas do WhatsApp",
-    "SELECTED_QUEUES_WHATSAPP_INBOUND": "Filas de WhatsApp selecionadas",
+    "SELECTED_WHATSAPP_QUEUES": "Filas de WhatsApp selecionadas",
     "SELECTED_WHATSAPPACCOUNTS": "Contas WhatsApp selecionadas",
     "SELECTED_WHATSAPPQUEUES": "Filas de WhatsApp selecionadas",
     "USERADD_WHATSAPPACCOUNTS": "Adicionar conta WhatsApp ao usuário",
index 283239e..6927c6f 100644 (file)
     "ALL_MODULES_AVAILABLE": "Все модули",
     "CALLGROUP": "Вызов группы",
     "PICKUPGROUP": "Группы перехвата вызова",
-    "QUEUEADD_AGENT_VOICE_OUTBOUND": "Добавить оператора в очереди кампаний",
-    "QUEUEADD_AGENT_VOICE_INBOUND": "Добавить оператора в очереди голосовой связи",
-    "QUEUEADD_AGENT_CHAT_INBOUND": "Добавить оператора в чат очередей",
-    "QUEUEADD_AGENT_MAIL_INBOUND": "Добавить оператора в очереди сообщений электронной почты",
-    "QUEUEADD_AGENT_SMS_INBOUND": "Добавить оператора в очереди сообщений SMS",
-    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Добавить оператора в открытый канал очередей",
-    "QUEUEADD_AGENT_FAX_INBOUND": "Добавить оператора в очереди факса",
+    "ADD_AGENT_TO_QUEUE_CAMPAIGNS": "Добавить оператора в очереди кампаний",
+    "ADD_AGENT_TO_VOICE_QUEUES": "Добавить оператора в очереди голосовой связи",
+    "ADD_AGENT_TO_CHAT_QUEUES": "Добавить оператора в чат очередей",
+    "ADD_AGENT_TO_MAIL_QUEUES": "Добавить оператора в очереди сообщений электронной почты",
+    "ADD_AGENT_TO_SMS_QUEUES": "Добавить оператора в очереди сообщений SMS",
+    "ADD_AGENT_TO_OPENCHANNEL_QUEUES": "Добавить оператора в открытый канал очередей",
+    "ADD_AGENT_TO_FAX_QUEUES": "Добавить оператора в очереди факса",
     "QUEUEADD_USER_VOICE_INBOUND": "Добавить пользователя в очереди голосовой связи",
     "QUEUEADD_USER_CHAT_INBOUND": "Добавить пользователя в чат очередей",
     "QUEUEADD_USER_MAIL_INBOUND": "Добавить пользователя в очереди сообщений электронной почты",
     "ALL_TEAMS": "Все группы",
     "SELECTED_TEAMS": "Выбранные группы",
     "SELECTED_AGENTS": "Выбранные операторы",
-    "ALL_QUEUES_VOICE_OUTBOUND": "Все очереди кампаний",
-    "SELECTED_QUEUES_VOICE_OUTBOUND": "Выбранные очереди кампаний",
-    "ALL_QUEUES_VOICE_INBOUND": "Все голосовые очередей",
-    "SELECTED_QUEUES_VOICE_INBOUND": "Выбранный голос очередей",
-    "ALL_QUEUES_CHAT_INBOUND": "Все очереди чата",
-    "SELECTED_QUEUES_CHAT_INBOUND": "Выбранный чат очередей",
-    "ALL_QUEUES_MAIL_INBOUND": "Все очереди сообщений электронной почты",
-    "SELECTED_QUEUES_MAIL_INBOUND": "Выбранные очереди сообщений электронной почты",
-    "ALL_QUEUES_SMS_INBOUND": "Все очереди сообщений SMS",
-    "SELECTED_QUEUES_SMS_INBOUND": "Выбранные очереди сообщений SMS",
-    "ALL_QUEUES_OPENCHANNEL_INBOUND": "Все открытые канал очередей",
-    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Выбранные открытый канал очередей",
-    "ALL_QUEUES_FAX_INBOUND": "Все очереди факса",
-    "SELECTED_QUEUES_FAX_INBOUND": "Выбранный факс очередей",
+    "ALL_QUEUE_CAMPAIGNS": "Все очереди кампаний",
+    "SELECTED_QUEUE_CAMPAIGNS": "Выбранные очереди кампаний",
+    "ALL_VOICE_QUEUES": "Все голосовые очередей",
+    "SELECTED_VOICE_QUEUES": "Выбранный голос очередей",
+    "ALL_CHAT_QUEUES": "Все очереди чата",
+    "SELECTED_CHAT_QUEUES": "Выбранный чат очередей",
+    "ALL_MAIL_QUEUES": "Все очереди сообщений электронной почты",
+    "SELECTED_MAIL_QUEUES": "Выбранные очереди сообщений электронной почты",
+    "ALL_SMS_QUEUES": "Все очереди сообщений SMS",
+    "SELECTED_SMS_QUEUES": "Выбранные очереди сообщений SMS",
+    "ALL_OPENCHANNEL_QUEUES": "Все открытые канал очередей",
+    "SELECTED_OPENCHANNEL_QUEUES": "Выбранные открытый канал очередей",
+    "ALL_FAX_QUEUES": "Все очереди факса",
+    "SELECTED_FAX_QUEUES": "Выбранный факс очередей",
     "VOICEMAIL": "Голосовая почта",
     "SHOWWEBCONTROL": "Показать Web Control",
     "PAGE": "Страница",
       "PERMISSIONS_SAVED_SUCCESS_TITLE": "{{sectionName}} раздел сохранен",
       "PERMISSIONS_SAVED_SUCCESS_MESSAGE": "Разрешения успешно обновлены!"
     },
-    "ALL_QUEUES_WHATSAPP_INBOUND": "Все очереди WhatsApp",
+    "ALL_WHATSAPP_QUEUES": "Все очереди WhatsApp",
     "ALL_WHATSAPPACCOUNTS": "Все аккаунты WhatsApp",
     "ALL_WHATSAPPQUEUES": "Все очереди Whataspp",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Добавить агента в очереди WhatsApp",
+    "ADD_AGENT_TO_WHATSAPP_QUEUES": "Добавить агента в очереди WhatsApp",
     "QUEUEADD_USER_WHATSAPP_INBOUND": "Добавить пользователя в очереди WhatsApp",
-    "SELECTED_QUEUES_WHATSAPP_INBOUND": "Выбранные очереди WhatsApp",
+    "SELECTED_WHATSAPP_QUEUES": "Выбранные очереди WhatsApp",
     "SELECTED_WHATSAPPACCOUNTS": "Выбранные учетные записи WhatsApp",
     "SELECTED_WHATSAPPQUEUES": "Выбранные очереди WhatsApp",
     "USERADD_WHATSAPPACCOUNTS": "Добавить учетную запись WhatsApp к пользователю",
index 42ed1e8..6b43f2c 100644 (file)
     "ALL_MODULES_AVAILABLE": "Alla moduler är tillgängliga",
     "CALLGROUP": "Gruppsamtal",
     "PICKUPGROUP": "Gruppsamtal",
-    "QUEUEADD_AGENT_VOICE_OUTBOUND": "Lägg till agent till kökampanjer",
-    "QUEUEADD_AGENT_VOICE_INBOUND": "Lägg till agent till röstköer",
-    "QUEUEADD_AGENT_CHAT_INBOUND": "Lägg till agent till chattköer",
-    "QUEUEADD_AGENT_MAIL_INBOUND": "Lägg till agent till epostköer",
-    "QUEUEADD_AGENT_SMS_INBOUND": "Lägg till agent till SMS-köer",
-    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Lägg till agent till öppna kanal-köer",
-    "QUEUEADD_AGENT_FAX_INBOUND": "Lägg till agent till faxköer",
+    "ADD_AGENT_TO_QUEUE_CAMPAIGNS": "Lägg till agent till kökampanjer",
+    "ADD_AGENT_TO_VOICE_QUEUES": "Lägg till agent till röstköer",
+    "ADD_AGENT_TO_CHAT_QUEUES": "Lägg till agent till chattköer",
+    "ADD_AGENT_TO_MAIL_QUEUES": "Lägg till agent till epostköer",
+    "ADD_AGENT_TO_SMS_QUEUES": "Lägg till agent till SMS-köer",
+    "ADD_AGENT_TO_OPENCHANNEL_QUEUES": "Lägg till agent till öppna kanal-köer",
+    "ADD_AGENT_TO_FAX_QUEUES": "Lägg till agent till faxköer",
     "QUEUEADD_USER_VOICE_INBOUND": "Lägg till användare till röstköer",
     "QUEUEADD_USER_CHAT_INBOUND": "Lägg till användare i chattköer",
     "QUEUEADD_USER_MAIL_INBOUND": "Lägg till användare till epostköer",
     "ALL_TEAMS": "Alla grupper",
     "SELECTED_TEAMS": "Valda grupper",
     "SELECTED_AGENTS": "Valda agenter",
-    "ALL_QUEUES_VOICE_OUTBOUND": "Alla kökampanjer",
-    "SELECTED_QUEUES_VOICE_OUTBOUND": "Valda kökampanjer",
-    "ALL_QUEUES_VOICE_INBOUND": "Alla röstköer",
-    "SELECTED_QUEUES_VOICE_INBOUND": "Valda röstköer",
-    "ALL_QUEUES_CHAT_INBOUND": "All chattköer",
-    "SELECTED_QUEUES_CHAT_INBOUND": "Valda chattköer",
-    "ALL_QUEUES_MAIL_INBOUND": "Alla epostköer",
-    "SELECTED_QUEUES_MAIL_INBOUND": "Valda epostköer",
-    "ALL_QUEUES_SMS_INBOUND": "Alla SMS-köer",
-    "SELECTED_QUEUES_SMS_INBOUND": "Valda SMS-köer",
-    "ALL_QUEUES_OPENCHANNEL_INBOUND": "Alla öppna kanal-köer",
-    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Valda öppna kanal-köer",
-    "ALL_QUEUES_FAX_INBOUND": "Alla faxköer",
-    "SELECTED_QUEUES_FAX_INBOUND": "Valda faxköer",
+    "ALL_QUEUE_CAMPAIGNS": "Alla kökampanjer",
+    "SELECTED_QUEUE_CAMPAIGNS": "Valda kökampanjer",
+    "ALL_VOICE_QUEUES": "Alla röstköer",
+    "SELECTED_VOICE_QUEUES": "Valda röstköer",
+    "ALL_CHAT_QUEUES": "All chattköer",
+    "SELECTED_CHAT_QUEUES": "Valda chattköer",
+    "ALL_MAIL_QUEUES": "Alla epostköer",
+    "SELECTED_MAIL_QUEUES": "Valda epostköer",
+    "ALL_SMS_QUEUES": "Alla SMS-köer",
+    "SELECTED_SMS_QUEUES": "Valda SMS-köer",
+    "ALL_OPENCHANNEL_QUEUES": "Alla öppna kanal-köer",
+    "SELECTED_OPENCHANNEL_QUEUES": "Valda öppna kanal-köer",
+    "ALL_FAX_QUEUES": "Alla faxköer",
+    "SELECTED_FAX_QUEUES": "Valda faxköer",
     "VOICEMAIL": "Röstmeddelande",
     "SHOWWEBCONTROL": "Typologi",
     "PAGE": "Sid",
     "BLOCKED": "låst",
     "DISABLED": "Inaktiverad",
     "REGENERATE": "Regenerera",
-    "ALL_QUEUES_WHATSAPP_INBOUND": "Alla WhatsApp-köer",
+    "ALL_WHATSAPP_QUEUES": "Alla WhatsApp-köer",
     "ALL_WHATSAPPACCOUNTS": "Alla WhatsApp-konton",
     "ALL_WHATSAPPQUEUES": "Alla Whataspp-köer",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Lägg till agent i WhatsApp-köer",
+    "ADD_AGENT_TO_WHATSAPP_QUEUES": "Lägg till agent i WhatsApp-köer",
     "QUEUEADD_USER_WHATSAPP_INBOUND": "Lägg till användare i WhatsApp-köer",
-    "SELECTED_QUEUES_WHATSAPP_INBOUND": "Valda WhatsApp-köer",
+    "SELECTED_WHATSAPP_QUEUES": "Valda WhatsApp-köer",
     "SELECTED_WHATSAPPACCOUNTS": "Valda WhatsApp-konton",
     "SELECTED_WHATSAPPQUEUES": "Valda WhatsApp-köer",
     "USERADD_WHATSAPPACCOUNTS": "Lägg till WhatsApp-konto till användaren",
index 0b27de9..bec8cc8 100644 (file)
     "ALL_MODULES_AVAILABLE": "Tüm modülü bulunmaktadır.",
     "CALLGROUP": "Çağrı Grup",
     "PICKUPGROUP": "Toplayıcı Grup",
-    "QUEUEADD_AGENT_VOICE_OUTBOUND": "Add Ajans Kuyruk Kampanyaları",
-    "QUEUEADD_AGENT_VOICE_INBOUND": "Add Ajans Sesli Kuyrukları",
-    "QUEUEADD_AGENT_CHAT_INBOUND": "Add Ajans Sohbet Kuyrukları",
-    "QUEUEADD_AGENT_MAIL_INBOUND": "Add Ajans Posta Kuyrukları",
-    "QUEUEADD_AGENT_SMS_INBOUND": "Add Ajans SMS Kuyrukları",
-    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Add Agent Açık Kanal Kuyrukları",
-    "QUEUEADD_AGENT_FAX_INBOUND": "Add Ajans Faks Kuyrukları",
+    "ADD_AGENT_TO_QUEUE_CAMPAIGNS": "Add Ajans Kuyruk Kampanyaları",
+    "ADD_AGENT_TO_VOICE_QUEUES": "Add Ajans Sesli Kuyrukları",
+    "ADD_AGENT_TO_CHAT_QUEUES": "Add Ajans Sohbet Kuyrukları",
+    "ADD_AGENT_TO_MAIL_QUEUES": "Add Ajans Posta Kuyrukları",
+    "ADD_AGENT_TO_SMS_QUEUES": "Add Ajans SMS Kuyrukları",
+    "ADD_AGENT_TO_OPENCHANNEL_QUEUES": "Add Agent Açık Kanal Kuyrukları",
+    "ADD_AGENT_TO_FAX_QUEUES": "Add Ajans Faks Kuyrukları",
     "QUEUEADD_USER_VOICE_INBOUND": "Kullanıcı Ekle Sesli Kuyrukları",
     "QUEUEADD_USER_CHAT_INBOUND": "Kullanıcı Ekle Sohbet Kuyrukları",
     "QUEUEADD_USER_MAIL_INBOUND": "Kullanıcı Ekle Posta Kuyrukları",
     "ALL_TEAMS": "Tüm takımlar",
     "SELECTED_TEAMS": "Seçilen Ekipleri",
     "SELECTED_AGENTS": "Seçilen maddeler",
-    "ALL_QUEUES_VOICE_OUTBOUND": "Sırada tüm Kampanyalar",
-    "SELECTED_QUEUES_VOICE_OUTBOUND": "Seçilen Kuyruk Kampanyaları",
-    "ALL_QUEUES_VOICE_INBOUND": "Tüm Ses Kuyrukları",
-    "SELECTED_QUEUES_VOICE_INBOUND": "Seçilen Ses Kuyrukları",
-    "ALL_QUEUES_CHAT_INBOUND": "Tüm Sohbet Kuyrukları",
-    "SELECTED_QUEUES_CHAT_INBOUND": "Seçilen Sohbet Kuyrukları",
-    "ALL_QUEUES_MAIL_INBOUND": "Tüm Posta Kuyrukları",
-    "SELECTED_QUEUES_MAIL_INBOUND": "Seçilen Posta Kuyrukları",
-    "ALL_QUEUES_SMS_INBOUND": "Tüm SMS Kuyrukları",
-    "SELECTED_QUEUES_SMS_INBOUND": "Seçilen SMS Kuyrukları",
-    "ALL_QUEUES_OPENCHANNEL_INBOUND": "Tüm Açık Kanal Kuyrukları",
-    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Seçilen Açık Kanal Kuyrukları",
-    "ALL_QUEUES_FAX_INBOUND": "Tüm Faks Kuyrukları",
-    "SELECTED_QUEUES_FAX_INBOUND": "Seçilen Faks Kuyrukları",
+    "ALL_QUEUE_CAMPAIGNS": "Sırada tüm Kampanyalar",
+    "SELECTED_QUEUE_CAMPAIGNS": "Seçilen Kuyruk Kampanyaları",
+    "ALL_VOICE_QUEUES": "Tüm Ses Kuyrukları",
+    "SELECTED_VOICE_QUEUES": "Seçilen Ses Kuyrukları",
+    "ALL_CHAT_QUEUES": "Tüm Sohbet Kuyrukları",
+    "SELECTED_CHAT_QUEUES": "Seçilen Sohbet Kuyrukları",
+    "ALL_MAIL_QUEUES": "Tüm Posta Kuyrukları",
+    "SELECTED_MAIL_QUEUES": "Seçilen Posta Kuyrukları",
+    "ALL_SMS_QUEUES": "Tüm SMS Kuyrukları",
+    "SELECTED_SMS_QUEUES": "Seçilen SMS Kuyrukları",
+    "ALL_OPENCHANNEL_QUEUES": "Tüm Açık Kanal Kuyrukları",
+    "SELECTED_OPENCHANNEL_QUEUES": "Seçilen Açık Kanal Kuyrukları",
+    "ALL_FAX_QUEUES": "Tüm Faks Kuyrukları",
+    "SELECTED_FAX_QUEUES": "Seçilen Faks Kuyrukları",
     "VOICEMAIL": "Sesli Posta",
     "SHOWWEBCONTROL": "Show Web Kontrolü",
     "PAGE": "Sayfa",
     "ALL_QUEUES_WHATSAPP_INBOUND": "Tüm WhatsApp Sıraları",
     "ALL_WHATSAPPACCOUNTS": "Tüm WhatsApp Hesapları",
     "ALL_WHATSAPPQUEUES": "Tüm Whataspp Kuyrukları",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "WhatsApp Sıralarına Ajan Ekle",
+    "ADD_AGENT_TO_WHATSAPP_QUEUES": "WhatsApp Sıralarına Ajan Ekle",
     "QUEUEADD_USER_WHATSAPP_INBOUND": "WhatsApp Sıralarına Kullanıcı Ekle",
-    "SELECTED_QUEUES_WHATSAPP_INBOUND": "Seçili WhatsApp Sıraları",
+    "SELECTED_WHATSAPP_QUEUES": "Seçili WhatsApp Sıraları",
     "SELECTED_WHATSAPPACCOUNTS": "Seçili WhatsApp Hesapları",
     "SELECTED_WHATSAPPQUEUES": "Seçili WhatsApp Sıraları",
     "USERADD_WHATSAPPACCOUNTS": "Kullanıcıya WhatsApp Hesabı Ekleyin",
index dc853d6..36581c3 100644 (file)
     "ALL_MODULES_AVAILABLE": "所有模块都可用",
     "CALLGROUP": "通话组",
     "PICKUPGROUP": "代答组",
-    "QUEUEADD_AGENT_VOICE_OUTBOUND": "代理添加到队列活动",
-    "QUEUEADD_AGENT_VOICE_INBOUND": "代理添加到语音队列",
-    "QUEUEADD_AGENT_CHAT_INBOUND": "代理添加到文本交谈的队列",
-    "QUEUEADD_AGENT_MAIL_INBOUND": "代理添加到邮件队列。",
-    "QUEUEADD_AGENT_SMS_INBOUND": "代理添加到 SMS 队列。",
-    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "代理添加到打开的通道的队列。",
-    "QUEUEADD_AGENT_FAX_INBOUND": "代理添加到传真队列。",
+    "ADD_AGENT_TO_QUEUE_CAMPAIGNS": "代理添加到队列活动",
+    "ADD_AGENT_TO_VOICE_QUEUES": "代理添加到语音队列",
+    "ADD_AGENT_TO_CHAT_QUEUES": "代理添加到文本交谈的队列",
+    "ADD_AGENT_TO_MAIL_QUEUES": "代理添加到邮件队列。",
+    "ADD_AGENT_TO_SMS_QUEUES": "代理添加到 SMS 队列。",
+    "ADD_AGENT_TO_OPENCHANNEL_QUEUES": "代理添加到打开的通道的队列。",
+    "ADD_AGENT_TO_FAX_QUEUES": "代理添加到传真队列。",
     "QUEUEADD_USER_VOICE_INBOUND": "将用户添加到语音队列",
     "QUEUEADD_USER_CHAT_INBOUND": "将用户添加到文本交谈的队列",
     "QUEUEADD_USER_MAIL_INBOUND": "将用户添加到邮件队列。",
     "ALL_TEAMS": "所有的团队",
     "SELECTED_TEAMS": "选定的组",
     "SELECTED_AGENTS": "选定的座席",
-    "ALL_QUEUES_VOICE_OUTBOUND": "所有队列活动",
-    "SELECTED_QUEUES_VOICE_OUTBOUND": "选定的队列活动",
-    "ALL_QUEUES_VOICE_INBOUND": "所有的语音队列",
-    "SELECTED_QUEUES_VOICE_INBOUND": "选定的语音队列",
-    "ALL_QUEUES_CHAT_INBOUND": "所有的聊天队列",
-    "SELECTED_QUEUES_CHAT_INBOUND": "选中 “文本交谈” 队列。",
-    "ALL_QUEUES_MAIL_INBOUND": "所有的邮件队列。",
-    "SELECTED_QUEUES_MAIL_INBOUND": "选中的邮件队列。",
-    "ALL_QUEUES_SMS_INBOUND": "所有的 SMS 队列。",
-    "SELECTED_QUEUES_SMS_INBOUND": "选中的短信队列。",
-    "ALL_QUEUES_OPENCHANNEL_INBOUND": "所有打开的通道的队列。",
-    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "选中的已经打开的通道的队列。",
-    "ALL_QUEUES_FAX_INBOUND": "所有的传真队列。",
-    "SELECTED_QUEUES_FAX_INBOUND": "选定的传真队列。",
+    "ALL_QUEUE_CAMPAIGNS": "所有队列活动",
+    "SELECTED_QUEUE_CAMPAIGNS": "选定的队列活动",
+    "ALL_VOICE_QUEUES": "所有的语音队列",
+    "SELECTED_VOICE_QUEUES": "选定的语音队列",
+    "ALL_CHAT_QUEUES": "所有的聊天队列",
+    "SELECTED_CHAT_QUEUES": "选中 “文本交谈” 队列。",
+    "ALL_MAIL_QUEUES": "所有的邮件队列。",
+    "SELECTED_MAIL_QUEUES": "选中的邮件队列。",
+    "ALL_SMS_QUEUES": "所有的 SMS 队列。",
+    "SELECTED_SMS_QUEUES": "选中的短信队列。",
+    "ALL_OPENCHANNEL_QUEUES": "所有打开的通道的队列。",
+    "SELECTED_OPENCHANNEL_QUEUES": "选中的已经打开的通道的队列。",
+    "ALL_FAX_QUEUES": "所有的传真队列。",
+    "SELECTED_FAX_QUEUES": "选定的传真队列。",
     "VOICEMAIL": "语音邮件",
     "SHOWWEBCONTROL": "显示 Web 控件",
     "PAGE": "页面",
     "BLOCKED": "已锁定",
     "DISABLED": "已停用",
     "REGENERATE": "再生",
-    "ALL_QUEUES_WHATSAPP_INBOUND": "所有WhatsApp队列",
+    "ALL_WHATSAPP_QUEUES": "所有WhatsApp队列",
     "ALL_WHATSAPPACCOUNTS": "所有WhatsApp帐户",
     "ALL_WHATSAPPQUEUES": "所有Whataspp队列",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "将代理添加到WhatsApp队列",
+    "ADD_AGENT_TO_WHATSAPP_QUEUES": "将代理添加到WhatsApp队列",
     "QUEUEADD_USER_WHATSAPP_INBOUND": "将用户添加到WhatsApp队列",
-    "SELECTED_QUEUES_WHATSAPP_INBOUND": "选定的WhatsApp队列",
+    "SELECTED_WHATSAPP_QUEUES": "选定的WhatsApp队列",
     "SELECTED_WHATSAPPACCOUNTS": "选定的WhatsApp帐户",
     "SELECTED_WHATSAPPQUEUES": "选定的WhatsApp队列",
     "USERADD_WHATSAPPACCOUNTS": "将WhatsApp帐户添加到用户",
index 0e215f0..9922b63 100644 (file)
     "ALL_MODULES_AVAILABLE": "所有的模組可供使用",
     "CALLGROUP": "通話群組",
     "PICKUPGROUP": "代接群組",
-    "QUEUEADD_AGENT_VOICE_OUTBOUND": "值機員新增至佇列活動",
-    "QUEUEADD_AGENT_VOICE_INBOUND": "新增值機員至語音佇列",
-    "QUEUEADD_AGENT_CHAT_INBOUND": "值機員新增至文字交談」佇列",
-    "QUEUEADD_AGENT_MAIL_INBOUND": "值機員新增至郵件佇列",
-    "QUEUEADD_AGENT_SMS_INBOUND": "新增值機員至 SMS 佇列",
-    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "新增值機員以開啟通道佇列",
-    "QUEUEADD_AGENT_FAX_INBOUND": "值機員新增至傳真佇列",
+    "ADD_AGENT_TO_QUEUE_CAMPAIGNS": "值機員新增至佇列活動",
+    "ADD_AGENT_TO_VOICE_QUEUES": "新增值機員至語音佇列",
+    "ADD_AGENT_TO_CHAT_QUEUES": "值機員新增至文字交談」佇列",
+    "ADD_AGENT_TO_MAIL_QUEUES": "值機員新增至郵件佇列",
+    "ADD_AGENT_TO_SMS_QUEUES": "新增值機員至 SMS 佇列",
+    "ADD_AGENT_TO_OPENCHANNEL_QUEUES": "新增值機員以開啟通道佇列",
+    "ADD_AGENT_TO_FAX_QUEUES": "值機員新增至傳真佇列",
     "QUEUEADD_USER_VOICE_INBOUND": "新增使用者至語音佇列",
     "QUEUEADD_USER_CHAT_INBOUND": "將使用者新增到文字交談」佇列",
     "QUEUEADD_USER_MAIL_INBOUND": "新增使用者至郵件佇列",
     "ALL_TEAMS": "所有群組",
     "SELECTED_TEAMS": "選取群組",
     "SELECTED_AGENTS": "已選取的值機人員",
-    "ALL_QUEUES_VOICE_OUTBOUND": "所有佇列活動",
-    "SELECTED_QUEUES_VOICE_OUTBOUND": "所選取的佇列活動",
-    "ALL_QUEUES_VOICE_INBOUND": "所有語音通話佇列",
-    "SELECTED_QUEUES_VOICE_INBOUND": "選取語音通話佇列",
-    "ALL_QUEUES_CHAT_INBOUND": "所有聊天佇列",
-    "SELECTED_QUEUES_CHAT_INBOUND": "選取的文字交談佇列",
-    "ALL_QUEUES_MAIL_INBOUND": "所有郵件佇列",
-    "SELECTED_QUEUES_MAIL_INBOUND": "選定的郵件佇列",
-    "ALL_QUEUES_SMS_INBOUND": "所有 SMS 佇列",
-    "SELECTED_QUEUES_SMS_INBOUND": "所選簡訊佇列",
-    "ALL_QUEUES_OPENCHANNEL_INBOUND": "所有開啟通道佇列",
-    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "選取開啟通道佇列",
-    "ALL_QUEUES_FAX_INBOUND": "所有傳真佇列",
-    "SELECTED_QUEUES_FAX_INBOUND": "選取的傳真佇列",
+    "ALL_QUEUE_CAMPAIGNS": "所有佇列活動",
+    "SELECTED_QUEUE_CAMPAIGNS": "所選取的佇列活動",
+    "ALL_VOICE_QUEUES": "所有語音通話佇列",
+    "SELECTED_VOICE_QUEUES": "選取語音通話佇列",
+    "ALL_CHAT_QUEUES": "所有聊天佇列",
+    "SELECTED_CHAT_QUEUES": "選取的文字交談佇列",
+    "ALL_MAIL_QUEUES": "所有郵件佇列",
+    "SELECTED_MAIL_QUEUES": "選定的郵件佇列",
+    "ALL_SMS_QUEUES": "所有 SMS 佇列",
+    "SELECTED_SMS_QUEUES": "所選簡訊佇列",
+    "ALL_OPENCHANNEL_QUEUES": "所有開啟通道佇列",
+    "SELECTED_OPENCHANNEL_QUEUES": "選取開啟通道佇列",
+    "ALL_FAX_QUEUES": "所有傳真佇列",
+    "SELECTED_FAX_QUEUES": "選取的傳真佇列",
     "VOICEMAIL": "語音信箱",
     "SHOWWEBCONTROL": "顯示 Web 控制",
     "PAGE": "頁面",
     "BLOCKED": "已鎖定",
     "DISABLED": "已停用",
     "REGENERATE": "再生",
-    "ALL_QUEUES_WHATSAPP_INBOUND": "所有WhatsApp隊列",
+    "ALL_WHATSAPP_QUEUES": "所有WhatsApp隊列",
     "ALL_WHATSAPPACCOUNTS": "所有WhatsApp帳戶",
     "ALL_WHATSAPPQUEUES": "所有Whataspp隊列",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "將代理添加到WhatsApp隊列",
+    "ADD_AGENT_TO_WHATSAPP_QUEUES": "將代理添加到WhatsApp隊列",
     "QUEUEADD_USER_WHATSAPP_INBOUND": "將用戶添加到WhatsApp隊列",
-    "SELECTED_QUEUES_WHATSAPP_INBOUND": "選定的WhatsApp隊列",
+    "SELECTED_WHATSAPP_QUEUES": "選定的WhatsApp隊列",
     "SELECTED_WHATSAPPACCOUNTS": "選定的WhatsApp帳戶",
     "SELECTED_WHATSAPPQUEUES": "選定的WhatsApp隊列",
     "USERADD_WHATSAPPACCOUNTS": "將WhatsApp帳戶添加到用戶",
index 6207bf0..d62768d 100644 (file)
     "BOT": "Voicebot",
     "CALL": "Anruf",
     "NAME": "Name",
-    "TRUNKS": "Amtsleitungen",
-    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
+    "TRUNKS": "Trunks",
+    "SEARCH_FOR_ANYONE": "Suche",
     "ERRORS": {
-      "NAME_REQUIRED": "Der Name ist erforderlich",
-      "HOST_REQUIRED": "Der Host wird benötigt",
-      "DEFAULTUSER_REQUIRED": "Der Standardbenutzer ist erforderlich",
-      "CALLERID_REQUIRED": "Die Anrufer-ID ist erforderlich",
-      "KEY_REQUIRED": "Der Schlüssel ist erforderlich",
-      "CONFIRM_NOT_MATCH": "Die Kennwörter nicht übereinstimmen",
-      "VALIDITYSTART_REQUIRED": "Die Startzeit ist erforderlich",
-      "VALIDITYEND_REQUIRED": "Das Ende der Zeit ist erforderlich",
+      "NAME_REQUIRED": "Name ist erforderlich",
+      "HOST_REQUIRED": "Host wird benötigt",
+      "DEFAULTUSER_REQUIRED": "Standardbenutzer ist erforderlich",
+      "CALLERID_REQUIRED": "Anrufer-ID ist erforderlich",
+      "KEY_REQUIRED": "Schlüssel ist erforderlich",
+      "CONFIRM_NOT_MATCH": "Die Passwörter stimmen nicht überein",
+      "VALIDITYSTART_REQUIRED": "Startzeit ist erforderlich",
+      "VALIDITYEND_REQUIRED": "Endzeit ist erforderlich",
       "MONTHDAY_REQUIRED": "Tag des Monats ist erforderlich",
-      "HOUR_REQUIRED": "Die Stunde ist erforderlich",
-      "CONTENT_REQUIRED": "Der Inhalt ist erforderlich",
-      "URL_REQUIRED": "Die URL ist erforderlich",
-      "URL_MUST_VALID_URL": "Die URL muss gültig sein",
-      "APPLICATION_REQUIRED": "Die Anwendung ist erforderlich",
-      "ARGUMENTS_REQUIRED": "Die Argumente sind erforderlich",
-      "NAME_MUST_VALID_PATTERN": "Der Name muss in einem gültigen Format geschrieben werden",
-      "POLLING_INTERVAL_REQUIRED": "Das Abfrageintervall ist erforderlich",
-      "TITLE_REQUIRED": "Der Titel ist erforderlich",
-      "EMAILADDRESS_REQUIRED": "Die E-Mail Adresse ist erforderlich",
-      "EVENTVARIABLES_REQUIRED": "Pflichtfeld",
-      "TYPE_REQUIRED": "Pflichtfeld",
-      "VALUE_REQUIRED": "Pflichtfeld",
-      "ACCOUNT_REQUIRED": "Pflichtfeld",
-      "FIELD_REQUIRED": "Pflichtfeld",
-      "INTEGRATION_REQUIRED": "Pflichtfeld",
-      "LIST_REQUIRED": "Pflichtfeld",
-      "TEMPLATE_REQUIRED": "Pflichtfeld",
-      "AUTOCREATECONTACT_REQUIRED": "Pflichtfeld",
-      "OUTBOUNDROUTE_REQUIRED": "Pflichtfeld",
-      "QUEUE_REQUIRED": "Pflichtfeld",
-      "TIME_RANGE_TO_REQUIRED": "Pflichtfeld",
-      "WEEK_DAYS_TO_REQUIRED": "Pflichtfeld",
-      "MONTH_DAYS_TO_REQUIRED": "Pflichtfeld",
-      "MONTH_TO_REQUIRED": "Pflichtfeld",
+      "HOUR_REQUIRED": "Stunde ist erforderlich",
+      "CONTENT_REQUIRED": "Inhalt ist erforderlich",
+      "URL_REQUIRED": "URL ist erforderlich",
+      "URL_MUST_VALID_URL": "URL ungültiges Format",
+      "APPLICATION_REQUIRED": "Anwendung ist erforderlich",
+      "ARGUMENTS_REQUIRED": "Bedingungen sind erforderlich",
+      "NAME_MUST_VALID_PATTERN": "Name ungültiges Format",
+      "POLLING_INTERVAL_REQUIRED": "Abfrageintervall ist erforderlich",
+      "TITLE_REQUIRED": "Titel ist erforderlich",
+      "EMAILADDRESS_REQUIRED": "E-Mail Adresse ist erforderlich",
+      "EVENTVARIABLES_REQUIRED": "Variablen sind erforderlich",
+      "TYPE_REQUIRED": "Typ ist erforderlich",
+      "VALUE_REQUIRED": "Wert ist erforderlich",
+      "ACCOUNT_REQUIRED": "Konto ist erforderlich",
+      "FIELD_REQUIRED": "Feld ist erforderlich",
+      "INTEGRATION_REQUIRED": "Integration ist erforderlich",
+      "LIST_REQUIRED": "Liste ist erforderlich",
+      "TEMPLATE_REQUIRED": "Vorlage ist erforderlich",
+      "AUTOCREATECONTACT_REQUIRED": "Kontakterstellung erforderlich",
+      "OUTBOUNDROUTE_REQUIRED": "Ausgehende Route erforderlich",
+      "QUEUE_REQUIRED": "Warteschlange erforderlich",
+      "TIME_RANGE_TO_REQUIRED": "Zeitintervall erforderlich",
+      "WEEK_DAYS_TO_REQUIRED": "Wochentage erforderlich",
+      "MONTH_DAYS_TO_REQUIRED": "Tage des Monats erforderlich",
+      "MONTH_TO_REQUIRED": "Monat erforderlich",
       "TIME_RANGE_FROM_INVALID": "Falsches Format",
       "TIME_RANGE_TO_INVALID": "Falsches Format",
-      "ACTION_REQUIRED": "Pflichtfeld",
-      "CONFIGURATION_REQUIRED": "Pflichtfeld",
-      "PROJECT_REQUIRED": "Pflichtfeld",
-      "LOCATION_REQUIRED": "Pflichtfeld",
-      "FONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
-      "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "FONTSIZE_REQUIRED": "Pflichtfeld",
-      "PATH_REQUIRED": "Pflichtfeld",
-      "FORMAT_REQUIRED": "Pflichtfeld",
-      "REPORT_REQUIRED": "Pflichtfeld",
-      "REFRESH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "REFRESH_REQUIRED": "Pflichtfeld",
-      "TITLE_MAX_LENGTH": "Der Wert muss eine maximale Länge von {{max}} haben",
-      "NAME_MAX_LENGTH": "Der Wert muss eine maximale Länge von {{max}} haben",
-      "OUTPUT_REQUIRED": "Pflichtfeld",
-      "REPORTFOLDER_REQUIRED": "Pflichtfeld",
-      "REPORTSUBFOLDER_REQUIRED": "Pflichtfeld",
-      "REPORTTYPE_REQUIRED": "Pflichtfeld",
-      "AGENT_REQUIRED": "Pflichtfeld",
-      "INFO_REQUIRED": "Pflichtfeld",
-      "SCRIPT_REQUIRED": "Pflichtfeld",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
-      "TIMEOUT_REQUIRED": "Pflichtfeld",
-      "AUTOCREATE_FIELD_REQUIRED": "Pflichtfeld"
+      "ACTION_REQUIRED": "Aktion erforderlich",
+      "CONFIGURATION_REQUIRED": "Konfiguration erforderlich",
+      "PROJECT_REQUIRED": "Projekt erforderlich",
+      "LOCATION_REQUIRED": "Standort erforderlich",
+      "FONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "FONTSIZE_REQUIRED": "Schriftgröße erforderlich",
+      "PATH_REQUIRED": "Pfad erforderlich",
+      "FORMAT_REQUIRED": "Format erforderlich",
+      "REPORT_REQUIRED": "Report erforderlich",
+      "REFRESH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "REFRESH_REQUIRED": "Aktualisieren erforderlich",
+      "TITLE_MAX_LENGTH": "Titel darf eine maximale Länge haben von {{max}} ",
+      "NAME_MAX_LENGTH": "Name darf eine maximale Länge haben von {{max}} ",
+      "OUTPUT_REQUIRED": "Ausgabe erforderlich",
+      "REPORTFOLDER_REQUIRED": "Ordner erforderlich",
+      "REPORTSUBFOLDER_REQUIRED": "Unterordner erforderlich",
+      "REPORTTYPE_REQUIRED": "Reporttyp erforderlich",
+      "AGENT_REQUIRED": "Agent erforderlich",
+      "INFO_REQUIRED": "Information erforderlich",
+      "SCRIPT_REQUIRED": "Skript erforderlich",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "TIMEOUT_REQUIRED": "Timeout erforderlich",
+      "AUTOCREATE_FIELD_REQUIRED": "Automatisches Erstellen erforderlich"
     },
     "HOST": "Host",
-    "SECRET": "Geheimnis",
-    "DEFAULTUSER": "Default User",
+    "SECRET": "Secret",
+    "DEFAULTUSER": "Standardnutzer",
     "DESCRIPTION": "Beschreibung",
-    "ADD_TRUNK": "Amtsleitung hinzufügen",
+    "ADD_TRUNK": "Trunk hinzufügen",
     "HELP": {
-      "SECRET": "Kennwort für die Authentifizierung, wenden Sie sich an den Anbieter.",
+      "SECRET": "Kennwort für die Authentifizierung, wenden Sie sich an den Systemadministrator.",
       "HOST": "Die Domäne oder den Hostnamen für den Anbieter.",
       "DEFAULTUSER": "Authentifizierung Benutzernamen, wenden Sie sich an den Anbieter.",
       "CALLERID": "Die Anrufer-ID im Format \"name\" <Nummer>.",
-      "REGISTRY": "Die amtsleitung Registry, die von einigen Anbietern, die in der Regel defaultuser:Secret@host.",
-      "FROMDOMAIN": "Legt Standardeinstellungen von:domain in SIP-Nachrichten als SIP-ua (Client). Einige Ziele können die obligatorische Identität Name anstatt nur die IP-Adresse.",
-      "FROMUSER": "Rovider wie ihr sie kennt. Dies ist der Benutzer, um anstelle der Anrufer-ID beim Tätigen von Anrufen zu anderen Peer (SIP-Proxy). Nur gültig für den Typ=peer.",
+      "REGISTRY": "Die SIP-Registry, die von einigen Anbietern, die in der Regel defaultuser:Secret@host.",
+      "FROMDOMAIN": "Legt Standardeinstellungen von:domain in SIP-Nachrichten als SIP-ua (Client).",
+      "FROMUSER": "SIP-Nutzereinstellungen. Nur gültig für den Typ=peer.",
       "OUTBOUNDPROXY": "IP-Adresse oder DNS-SRV-Ressourceneintrag name (ausgenommen die _sip._udp-Präfix): SRV Name, den Hostnamen oder die IP-Adresse des ausgehenden SIP-Proxy. Senden Sie ausgehende Signale zu diesem Proxy und nicht direkt an die Geräte. Nur gültig für den Typ=peer.",
-      "PORT": "Die Nummer des Ports, zu dem Sie eine Verbindung herstellen möchten wir auf der anderen Seite.",
-      "CONTEXT": "Die nutzbaren Rahmen für den Trunk.",
-      "TYPE": "Legt das SIP-Rolle innerhalb der Sternchen. User: Wird verwendet, um die Authentifizierung für eingehende - Peer: für ausgehende Anrufe - Freund: Deckt sowohl die Eigenschaften der oben genannten.",
-      "DTMFMODE": "Wie DTMF (Dual-Tone Multi-Frequency): RFC2833: Die Standardeinstellung, die DTMF gesendet mit RTP, aber außerhalb der Audio Stream. INBAND DTMF gesendet wird: Die in der Audio Stream des aktuellen Gesprächs, wird über die Lautsprecher hörbar. Erfordert eine hohe CPU-Last. INFO: Diese Methode ist zwar sehr zuverlässig, es ist nicht für alle TK-Anlagen und viele SIP-Trunk.",
-      "NAT": "Ändert das Verhalten von Sternchen für Clients hinter einer Firewall.Wenn der Komma-getrennten Optionen ist \"Nein\", Asterisk ignoriert alle anderen Einstellungen und die nat=No.",
+      "PORT": "Die Nummer des Ports, zu dem Sie eine Verbindung herstellen möchten.",
+      "CONTEXT": "Die nutzbaren Kontext für den Trunk.",
+      "TYPE": "Definiert die SIP-Rolle innerhalb der Anwendung. User: Authentifizierung für eingehende Verbindungen; Peer: für ausgehende Verbindungen - Freund: Beide Eigenschaften werden erfüllt",
+      "DTMFMODE": "Sendeart von DTMF-Tönen (Dual-Tone Multi-Frequency): RFC2833: Standardeinstellung, DMTF wird über RTP gesendet (außerhalb des Audiostreams) - INBAND DTMF wird innerhalb des Audiostreams gesendet, über die Lautsprecher hörbar. Erfordert eine höhere CPU-Last.",
+      "NAT": "Ändert das Verhalten von Sternchen für Clients hinter einer Firewall. Wenn \"Nein\", ignoriert der Asterisk alle anderen Einstellungen und die nat=No.",
       "QUALIFY": "Legt fest, wann die SIP erreichbar ist.",
       "ALLOWCODECS": "Erlaubt Codecs in der Reihenfolge ihrer Präferenz.",
-      "INSECURE": "Legt fest, wie Verbindungen mit Peer, dass unsichere Einstellungen.",
-      "CALL_LIMIT": "Die Anzahl der eingehenden und abgehenden Anrufe, die zu einer Zeit.",
-      "DIRECTMEDIA": "Sternchen standardmäßig versucht, die RTP-Stream direkt aus den Anrufer an den Angerufenen. Einige Geräte werden nicht unterstützt wird (vor allem, wenn einer von Ihnen hinter einem NAT-Gerät befindet). Die Standardeinstellung ist Ja. Wenn Sie alle Clients hinter einem NAT-Gerät befindet, oder aus einem anderen Grund nicht möchten, dass Sternchen in der Audiospur, können Sie diese ausschalten.",
-      "CALLCOUNTER": "Aktivieren Sie die Zähler auf Geräte.",
-      "ADD_PHONE_TO_URI": "Legen Sie fest, ob die Provider ';user=Telefon\" an den URL.",
-      "TRUST_REMOTE_PARTY_ID": "Wenn Remote-Party-ID definieren sollte.",
-      "SEND_REMOTE_PARTY_ID_HEADER": "Status",
-      "ENCRYPTION": "Festlegen, ob die Remote-Party-ID gesendet werden soll (standardmäßig auf Nein).",
+      "INSECURE": "Erlaubt unsichere Einstellungen für peer",
+      "CALL_LIMIT": "Maximale Anzahl aller gleichzeitigen ein- und ausgehenden Anrufe",
+      "DIRECTMEDIA": "Der Asterisk versucht, den RTP-Stream im Standard direkt zwischen dem Anrufer und dem Angerufenen aufzubauen. Manche Geräte (z.B. Firewalls) unterstützen diese Funktion nicht. Daher kann hier eine Umstellung erfolgen.",
+      "CALLCOUNTER": "Aktivieren der Anrufzähler für die Geräte",
+      "ADD_PHONE_TO_URI": "Fügt im SIP den user=phone zur URL hinzu",
+      "TRUST_REMOTE_PARTY_ID": "Soll der URL der anderen Partei vertraut werden?",
+      "SEND_REMOTE_PARTY_ID_HEADER": "Soll die ID der anderen Partei gesendet werden?",
+      "ENCRYPTION": "Legt fest, ob die Verbindung über SRTP verschlüsselt vorliegt. Sollte das peer kein SRTP unterstützen, werden Anrufe mit dem HANGUPCAUSE=58 beendet.",
       "TRANSPORT": "Festlegen der Standardeinstellungen für Transporte. Die Reihenfolge bestimmt den primären Standard.",
-      "OTHERFIELDS": "Weitere Felder hinzufügen, in der Amtsleitungen conf-Dateien. In Sternchen format (key=value), jedes Feld auf einer Zeile.",
-      "EMAILADDRESS": "Sie können mehrere Adressen mit Kommata (z. b. John.doe@xcally.com, jane.miller@xcally.com)",
+      "OTHERFIELDS": "Weitere Felder hinzufügen, in der Trunks conf-Dateien. In Sternchen format (key=value), jedes Feld auf einer Zeile.",
+      "EMAILADDRESS": "Mehrere Adressen mit Komma getrennt eingeben: (z. b. John.doe@xcally.com, jane.miller@xcally.com)",
       "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
-      "EVENTVARIABLES": "Wenn aktiviert, Es fügt alle Event Variablen an die Url",
+      "EVENTVARIABLES": "Fügt die Event-Variablen der URL hinzu",
       "T38PT_UDPTL": "Es: Ja, Redundanz, maxdatagram = 400",
       "EMAILBCCADDRESS": "Fügen Sie eine oder mehrere durch Kommas getrennte Adressen hinzu (z. B. john.doe@xcally.com, jane.miller@xcally.com).",
       "EMAILCCADDRESS": "Fügen Sie eine oder mehrere durch Kommas getrennte Adressen hinzu (z. B. john.doe@xcally.com, jane.miller@xcally.com).",
-      "BODY": "Wenn nicht ausgefüllt, wird der Standardwert gesendet",
+      "BODY": "(RAW-JSON-Format) Wenn nicht ausgefüllt, wird der Standardwert verwendet",
       "INFO": "Titel einfügen",
       "SCRIPT": "Skript einfügen",
       "SCRIPT_INFO": "Fügen Sie eine Beschreibung für das Skript ein",
       "SCRIPT_TYPE": "Geben Sie eine Typologie für das Skript ein (zB curl, bash ...)",
-      "HEADERS": "Hinweis: Der Header-Abschnitt muss im RAW-JSON-Format {\"key\": \"value\"} vorliegen.\nHinweis: Wenn nicht ausgefüllt, wird der Standardwert gesendet",
-      "TIMEOUT": "Zeitüberschreitung in Sekunden anfordern. Der Wert muss zwischen 1 und 10 liegen und der Standardwert ist 5."
+      "HEADERS": "Hinweis: Der Header-Abschnitt muss im RAW-JSON-Format {\"key\": \"value\"} vorliegen.\nHinweis: Wenn nicht ausgefüllt, wird der Standardwert verwendet",
+      "TIMEOUT": "Zeitüberschreitung in Sekunden anfordern. Der Wert muss zwischen 1 und 10 liegen - Standardwert ist 5."
     },
     "EDIT_TRUNK": "Trunk bearbeiten",
-    "DELETE_TRUNK": "Löschen Sie Trunk",
+    "DELETE_TRUNK": "Trunk löschen",
     "CREATED_AT": "Erstellt am",
     "SETTINGS": "Einstellungen",
-    "ADVANCED": "Erweiterte",
+    "ADVANCED": "Erweitert",
     "OTHER": "Andere",
     "ACTIVE": "Aktiv",
     "CONTEXT": "Kontext",
-    "CALLERID": "Die Anrufer-ID",
+    "CALLERID": "Anrufer-ID",
     "TYPE": "Typ",
-    "DTMFMODE": "Mfv-Modus",
+    "DTMFMODE": "DTMF-Modus",
     "NAT": "NAT",
     "QUALIFY": "Qualifizieren",
     "ALLOWCODECS": "Codecs erlaubt",
     "INSECURE": "Unsicher",
     "REGISTRY": "Registrierung",
-    "DIRECTMEDIA": "Direkte Medien",
+    "DIRECTMEDIA": "Direct Media",
     "CALLCOUNTER": "Anrufzähler",
-    "FROMDOMAIN": "Aus der Domäne",
-    "FROMUSER": "Vom Benutzer",
-    "OUTBOUNDPROXY": "Ausgehender Proxy",
-    "ADD_PHONE_TO_URI": "Telefon hinzufügen, URL",
-    "TRUST_REMOTE_PARTY_ID": "Vertrauen Gegenstelle ID",
-    "SEND_REMOTE_PARTY_ID_HEADER": "Senden einer Partner-ID Header",
+    "FROMDOMAIN": "From Domain",
+    "FROMUSER": "From Nutzer",
+    "OUTBOUNDPROXY": "Outbound Proxy",
+    "ADD_PHONE_TO_URI": "Telefon zur URL hinzufügen",
+    "TRUST_REMOTE_PARTY_ID": "Trust Remote Party ID",
+    "SEND_REMOTE_PARTY_ID_HEADER": "Remote Party im Header senden",
     "ENCRYPTION": "Verschlüsselung",
-    "PORT": "Hafen",
-    "TRANSPORT": "Verkehr",
+    "PORT": "Port",
+    "TRANSPORT": "Transport",
     "SAVE": "Speichern",
     "VARIABLES": "Variablen",
     "ADD_VARIABLE": "Variable hinzufügen",
     "EDIT_VARIABLE": "Variable bearbeiten",
     "DELETE_VARIABLE": "Variable löschen",
-    "SELECTED": "Ausgewählte",
-    "SELECT_ALL": "Alle auswählen",
-    "SELECT_NONE": "Wählen Sie \"Keine\"",
+    "SELECTED": "Ausgewählt",
+    "SELECT_ALL": "Alles auswählen",
+    "SELECT_NONE": "Nichts auswählen",
     "TAGS": "Tags",
-    "ADD_TAG": "Variable hinzufügen",
-    "EDIT_TAG": "Variable bearbeiten",
-    "DELETE_TAG": "Variable löschen",
+    "ADD_TAG": "Tag hinzufügen",
+    "EDIT_TAG": "Tag bearbeiten",
+    "DELETE_TAG": "Tag löschen",
     "PAUSES": "Pausen",
     "ADD_PAUSE": "Pause hinzufügen",
     "EDIT_PAUSE": "Pause bearbeiten",
     "DELETE_PAUSE": "Pause löschen",
-    "ADD_CANNEDANSWER": "Vordefinierte Antwort hinzufügen",
-    "EDIT_CANNEDANSWER": "Vordefinierte Antwort bearbeiten",
-    "DELETE_CANNEDANSWER": "Vordefinierte Antwort löschen",
+    "ADD_CANNEDANSWER": "Textvorlage hinzufügen",
+    "EDIT_CANNEDANSWER": "Textvorlage bearbeiten",
+    "DELETE_CANNEDANSWER": "Testvorlage löschen",
     "KEY": "Schlüssel",
     "VALUE": "Wert",
-    "SOUNDS": "Sounds",
-    "EDIT_SOUND": "Ton bearbeiten",
-    "DELETE_SOUND": "Sound löschen",
-    "FINISH": "Fertig stellen",
+    "SOUNDS": "Audiodateien",
+    "EDIT_SOUND": "Audiodatei bearbeiten",
+    "DELETE_SOUND": "Audiodatei löschen",
+    "FINISH": "Abschließen",
     "DROP_TO_UPLOAD": "Drop hochladen",
     "TRIGGERS": "Trigger",
-    "EDIT_TRIGGER": "Auslöser bearbeiten",
-    "DELETE_TRIGGER": "Auslöser löschen",
+    "EDIT_TRIGGER": "Trigger bearbeiten",
+    "DELETE_TRIGGER": "Trigger löschen",
     "ADD_TRIGGER": "Trigger hinzufügen",
     "DELETE": "Löschen",
-    "AUTOMATIONS": "Automatisierungen",
-    "EDIT_AUTOMATION": "Bearbeiten einer Automation",
+    "AUTOMATIONS": "Automation",
+    "EDIT_AUTOMATION": "Automation bearbeiten",
     "DELETE_AUTOMATION": "Automation löschen",
     "ADD_AUTOMATION": "Automation hinzufügen",
     "INTERVALS": "Intervalle",
     "EDIT_INTERVAL": "Intervall bearbeiten",
-    "DELETE_INTERVAL": "Intervall für Löschen.",
+    "DELETE_INTERVAL": "Intervall löschen",
     "ADD_INTERVAL": "Intervall hinzufügen",
     "TOOLS": "Werkzeuge",
-    "ID": "Id",
+    "ID": "ID",
     "AUDIO": "Audio",
-    "DOWNLOAD_SOUND": "Download Sound",
-    "UPLOAD_SOUND": "Werkzeuge",
+    "DOWNLOAD_SOUND": "Audiodatei herunterladen",
+    "UPLOAD_SOUND": "Audiodatei hochladen",
     "CHANNEL": "Kanal",
     "NEW_TRIGGER": "Neue Trigger",
     "GENERAL": "Allgemein",
     "STATUS": "Status",
     "CONDITIONS&ACTIONS": "Bedingungen und Aktionen",
-    "ALLCONDITIONS": "Alle diese Bedingungen erfüllen:",
-    "ANYCONDITIONS": "Treffen diese Voraussetzungen:",
-    "ACTIONS": "Aktionen:",
+    "ALLCONDITIONS": "Alle Bedingungen werden erfüllt",
+    "ANYCONDITIONS": "Einige Bedingungen werden erfüllt",
+    "ACTIONS": "Aktionen",
     "NEW_AUTOMATION": "Neue Automation",
     "TIMEOUT": "Timeout",
     "PEERSTATUS": "Peer Status",
-    "CALL_LIMIT": "Anrufe beschränken",
-    "OTHERFIELDS": "Andere Felder",
+    "CALL_LIMIT": "Anrufe limitieren",
+    "OTHERFIELDS": "Weitere Felder",
     "NEW_VARIABLE": "Neue Variable",
     "NEW_TAG": "Neuer Tag",
     "NEW_PAUSE": "Neue Pause",
-    "NEW_CANNEDANSWER": "Neue vordefinierte Antwort",
+    "NEW_CANNEDANSWER": "Neue Textvorlage",
     "CONFIRM_PASSWORD": "Passwort bestätigen",
-    "NEW_TRUNK": "Neue Leitung",
-    "FROM": "Von",
-    "TO": "Zu",
-    "WEEKDAY": "Woche Tag",
-    "MONTHDAY": "Monat Tag",
+    "NEW_TRUNK": "Neuer Trunk",
+    "FROM": "von",
+    "TO": "an",
+    "WEEKDAY": "Wochentag",
+    "MONTHDAY": "Monatstag",
     "MONTH": "Monat",
     "ALWAYS": "Immer",
     "MON": "Montag",
     "PASSWORD": "Passwort",
     "CUSTOMDASHBOARDS": "Benutzerdefinierte Dashboards",
     "NEW_CUSTOMDASHBOARD": "Neues benutzerdefiniertes Dashboard",
-    "ADD_CUSTOMDASHBOARD": "Hinzufügen von benutzerdefinierten Dashboard",
-    "EDIT_CUSTOMDASHBOARD": "Benutzerdefinierte Dashboards bearbeiten",
-    "DELETE_CUSTOMDASHBOARD": "Benutzerdefiniertes Dashboard löschen.",
-    "SCHEDULER": "Scheduler",
-    "NEW_SCHEDULE": "Neuer Zeitplan",
-    "ADD_SCHEDULE": "Zeitplan hinzufügen",
-    "EDIT_SCHEDULE": "Zeitplan bearbeiten",
-    "DELETE_SCHEDULE": "Zeitplan löschen",
+    "ADD_CUSTOMDASHBOARD": "Benutzerdefiniertes Dashboard hinzufügen",
+    "EDIT_CUSTOMDASHBOARD": "Benutzerdefiniertes Dashboard bearbeiten",
+    "DELETE_CUSTOMDASHBOARD": "Benutzerdefiniertes Dashboard löschen",
+    "SCHEDULER": "Berichtsplanung",
+    "NEW_SCHEDULE": "Neue Planung",
+    "ADD_SCHEDULE": "Planung hinzufügen",
+    "EDIT_SCHEDULE": "Planung bearbeiten",
+    "DELETE_SCHEDULE": "Planung löschen",
     "SENDMAIL": "E-Mail senden",
     "CONFIGURATION": "Konfiguration",
     "MAIL": "E-Mail",
     "REPORTTYPE": "Berichtstyp",
     "REPORT": "Bericht",
-    "OUTPUT": "Ausgang",
+    "OUTPUT": "Ausgabe",
     "EXECUTEON": "Ausführung",
-    "REPORTRANGE": "Berichtsbereich",
+    "REPORTRANGE": "Bereich",
     "VALIDITYSTART": "Startzeit",
     "VALIDITYEND": "Endzeit",
     "EXECUTEEVERY": "Alle ausführen",
     "MONTHLY": "Monatlich",
     "PREVIOUS_DAY": "Vorheriger Tag",
     "LAST_SEVEN_DAYS": "Letzte sieben Tage",
-    "LAST_THIRTY_DAYS": "33 verbotenen letzte Tage",
+    "LAST_THIRTY_DAYS": "Letzte 30 Tage",
     "LAST_MONTH": "Letzter Monat",
-    "WEEKDAYS": "Woche Tage",
+    "WEEKDAYS": "Wochentage",
     "HOUR": "Stunde",
     "DEFAULT": "Standard",
     "CSV": "CSV",
     "15MIN": "15 Minuten",
     "30MIN": "30 Minuten",
     "1H": "1 Stunde",
-    "VOICE": "Voice",
+    "VOICE": "Sprachanrufe",
     "CHAT": "Chat",
     "SMS": "SMS",
     "OPENCHANNEL": "Offener Kanal",
     "ADD_ALLCONDITION": "Bedingung hinzufügen",
     "EDIT_ACTION": "Aktion bearbeiten",
     "DELETE_ACTION": "Aktion löschen",
-    "NEW_ACTION": "Neue Maßnahme",
+    "NEW_ACTION": "Neue Aktion",
     "ADD_ACTION": "Aktion hinzufügen",
     "QUEUE": "Warteschlange",
     "CALL_STATUS": "Anrufstatus",
-    "OUTBOUNDROUTE": "Abgehende Routen",
-    "EQUALS": "Ist gleich",
-    "NOT_EQUALS": "Nicht gleich",
-    "CONTACT_MANAGER": "Contacts Manager",
+    "OUTBOUNDROUTE": "Ausgehende Routen",
+    "EQUALS": "ist gleich",
+    "NOT_EQUALS": "ist nicht gleich",
+    "CONTACT_MANAGER": "Kontaktmanager",
     "INTEGRATIONS": "Integrationen",
     "MOTIONBAR": "Motion Bar",
     "JSCRIPTY": "Jscripty",
-    "URL_FORWARD": "URL Weiterleitung",
-    "WEB_POPUP": "Web Popup",
+    "URL_FORWARD": "URL-Weiterleitung",
+    "WEB_POPUP": "Web-Popup",
     "LIST": "Liste",
     "INTEGRATION": "Integration",
     "TEMPLATE": "Vorlage",
     "OPERATOR": "Betreiber",
     "NO_INTERVALS_AVAILABLE": "Keine Intervalle zur Verfügung",
     "YES": "Ja",
-    "NO": "Keine",
+    "NO": "Nein",
     "SUBJECT": "Betreff",
-    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
+    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
     "BROWSER": "Browser",
     "INTERVAL": "Intervall",
-    "INFO": "Info",
+    "INFO": "Information",
     "TIME_RANGE": "Zeitbereich",
-    "WEEK_DAYS": "Woche Tage",
-    "MONTH_DAYS": "Monat Tage",
+    "WEEK_DAYS": "Wochentage",
+    "MONTH_DAYS": "Monatstage",
     "MONTHS": "Monate",
-    "DROP_TO_UPLOAD_MESSAGE": "Sie können auch Audiodateien hier ablegen\" hochzuladen. Nur MP3-, WAV-, GSM-Max. 15 MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Dateien hier hinein ziehen zum Hochladen. Unterstütze Formate: .mp3, .wav, .gsm; Max. Dateigröße: 15 MB",
     "POLLING_INTERVAL": "Abfrageintervall (Sekunden)",
-    "DASHBOARD": "Armaturenbrett",
-    "NEW_DASHBOARDITEM": "Neue Dashboard Widget",
+    "DASHBOARD": "Dashboard",
+    "NEW_DASHBOARDITEM": "Neues Dashboard-Widget",
     "COUNTER": "Zähler",
     "IFRAME": "IFrame",
     "CLOCK": "Uhr",
-    "ADD_DASHBOARDITEM": "Dashboard Widget hinzufügen",
-    "EDIT_WIDGET": "Bearbeiten Widget",
-    "DELETE_WIDGET": "Löschen Widget",
-    "FLIP_WIDGET": "Flip Widget",
+    "ADD_DASHBOARDITEM": "Dashboard-Widget hinzufügen",
+    "EDIT_WIDGET": "Widget bearbeiten",
+    "DELETE_WIDGET": "Widget löschen",
+    "FLIP_WIDGET": "Widget drehen",
     "TITLE": "Titel",
     "UPDATE": "Aktualisieren",
     "LAYOUT": "Layout",
     "FOREGROUND_COLOR": "Vordergrundfarbe",
     "FOREGROUND_TITLE_COLOR": "Vordergrund Titel Farbe",
     "THEME": "Thema",
-    "LIGHT": "Licht",
+    "LIGHT": "Hell",
     "DARK": "Dunkel",
     "TIMEZONE": "Zeitzone",
-    "DIGITAL_FORMAT": "Digitale Datum Format",
+    "DIGITAL_FORMAT": "Digitales Datumsformat",
     "TOOLS_QUERY": "Abfrage",
-    "SELECT": "Wählen Sie",
+    "SELECT": "Auswählen",
     "WHERE": "Wo",
     "BACK": "Zurück",
     "PROJECT": "Projekt",
-    "GOTOREALTIME_TRUNK": "In Echtzeit, Trunk gehen",
-    "GOTO_TRUNK": "Um die Leitungsbündel gehen",
-    "CRON": "Cron",
+    "GOTOREALTIME_TRUNK": "Zum Echtzeitmonitoring SIP-Trunks gehen",
+    "GOTO_TRUNK": "Zum SIP-Trunk gehen",
+    "CRON": "CrOn",
     "MINUTES": "Minuten",
     "HOURLY": "Stündlich",
     "YEARLY": "Jährlich",
     "EVERY": "Jede",
     "MINUTE": "Minute",
-    "ON_SECOND": "Im 2.",
-    "HOUR_ON_MINUTE": "Stunde Minute",
-    "AND_SECOND": "Und 2.",
-    "DAY_AT": "Tag an",
+    "ON_SECOND": "Zur Sekunde",
+    "HOUR_ON_MINUTE": "Stunde zur Minute",
+    "AND_SECOND": "und Sekunde",
+    "DAY_AT": "Am Tag",
     "START_TIME": "Startzeit",
-    "ON_THE": "Auf der",
-    "OF_EVERY": "Jedes",
+    "ON_THE": "Am",
+    "OF_EVERY": "An jedem",
     "MONTH_AT": "Monat",
-    "AT": "An",
+    "AT": "Um",
     "LAST": "Letzte",
     "LASTUNIT": "Einheit",
     "MAILACCOUNT": "E-Mail Konto",
-    "OF": "Von",
+    "OF": "von",
     "PAST_THE_HOUR": "Nach der vollen Stunde",
     "DAY": "Tag",
     "WEEK": "Woche",
     "YEAR": "Jahr",
-    "ON": "Auf",
+    "ON": "Am",
     "PAI": "P-Asserted-Identity",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OUTBOUND_ROUTE": "Abgehende Routen",
-    "EVENTVARIABLES": "Bei Variablen",
+    "OUTBOUND_ROUTE": "Ausgehende Routen",
+    "EVENTVARIABLES": "Event-Variablen",
     "FAX": "Fax",
     "INTERACTION": "Interaktion",
     "MESSAGE": "Nachricht",
     "T38PT_UDPTL": "T38 pt Udptl",
-    "AUTOCREATECONTACT": "Erstellen Sie automatisch",
+    "AUTOCREATECONTACT": "Automatische Kontakterstellung",
     "COLOR": "Farbe",
-    "LOCATION": "Lage",
-    "NEW_TAB": "Neue Registerkarte",
+    "LOCATION": "Standort",
+    "NEW_TAB": "Neuer Tab",
     "NEW_WINDOW": "Neues Fenster",
-    "WINDOWWIDTH": "Fenster Breite (px)",
+    "WINDOWWIDTH": "Fensterbreite (px)",
     "WINDOWHEIGHT": "Fensterhöhe (px)",
     "EDIT_DASHBOARDITEM": "Dashboard-Widget bearbeiten",
     "FONTSIZE": "Schriftgröße",
     "FOREGROUND": "Vordergrund",
     "NONE": "Keiner",
     "TOTAL": "Gesamt",
-    "ABANDONED": "Verlassen",
+    "ABANDONED": "Abgebrochen",
     "WAITING": "Warten",
-    "TALKING": "Reden",
-    "ANSWERED": "Antwortete",
-    "UNMANAGED": "Nicht verwaltet",
+    "TALKING": "im Gespräch",
+    "ANSWERED": "Beantwortet",
+    "UNMANAGED": "Nicht bearbeitet",
     "CUSTOMTYPE": "Benutzerdefiniert [Pfad]",
     "WEBREPORT": "Webbericht",
     "PIECHART": "Kuchendiagramm",
     "MULTIBARCHART": "Multibar-Diagramm",
     "MOVE_WIDGET": "Widget verschieben",
-    "USERADD_CUSTOMDASHBOARD": "Hinzufügen von Benutzerberechtigungen",
-    "GOTODASHBOARD_CUSTOMDASHBOARD": "Gehe zum Vorschau-Dashboard",
-    "GOTO_CUSTOMDASHBOARD": "Gehe zum Vorschau-Dashboard",
+    "USERADD_CUSTOMDASHBOARD": "Berechtigungen hinzufügen",
+    "GOTODASHBOARD_CUSTOMDASHBOARD": "Vorschau Dashboard",
+    "GOTO_CUSTOMDASHBOARD": "Vorschau Dashboard",
     "METRIC": "Metrisch",
-    "FILTERVOICEQUEUES": "Voice-Warteschlangen filtern",
+    "FILTERVOICEQUEUES": "Anruf-Warteschlangen filtern",
     "SERIE1": "Serie 1",
     "SERIE2": "Serie 2",
     "SERIE3": "Serie 3",
     "ALL_USERS": "Alle Nutzer",
     "SELECTED_USERS": "Ausgewählte Benutzer",
     "ADD_WIDGET": "Widget hinzufügen",
-    "NEXTCONTACT": "Nächster",
+    "NEXTCONTACT": "Nächster Kontakt",
     "SENDIFEMPTY": "Senden, wenn leer",
-    "CANCEL": "Stornieren",
+    "CANCEL": "Abbrechen",
     "UPLOADING": "Hochladen",
-    "EMAILBCCADDRESS": "Bcc",
-    "EMAILCCADDRESS": "Cc",
-    "RUN_SCHEDULE": "Zeitplan ausführen",
-    "ADD_DISPOSITION": "Disposition hinzufügen",
-    "DELETE_DISPOSITION": "Disposition löschen",
-    "DISPOSITIONS": "Dispositionen",
-    "EDIT_DISPOSITION": "Disposition bearbeiten",
-    "NEW_DISPOSITION": "Neue Disposition",
-    "CLONE_TRUNK": "Klon-Trunk",
-    "BODY": "Karosserie",
-    "CANNEDANSWERS": "Vordefinierte Antworten",
+    "EMAILBCCADDRESS": "BCC",
+    "EMAILCCADDRESS": "CC",
+    "RUN_SCHEDULE": "Zeitplanung ausführen",
+    "ADD_DISPOSITION": "Qualifizierung hinzufügen",
+    "DELETE_DISPOSITION": "Qualifizierung löschen",
+    "DISPOSITIONS": "Qualifizierungen",
+    "EDIT_DISPOSITION": "Qualifizierung bearbeiten",
+    "NEW_DISPOSITION": "Neue Qualifizierung",
+    "CLONE_TRUNK": "Trunk klonen",
+    "BODY": "Textinhalt",
+    "CANNEDANSWERS": "Textvorlagen",
     "REPORTFOLDER": "Berichtsordner",
-    "REPORTSUBFOLDER": "Unterordner melden",
-    "PREVIOUSCONTACT": "Bisherige",
+    "REPORTSUBFOLDER": "Unterordner",
+    "PREVIOUSCONTACT": "Vorherigen Kontakt",
     "VIDEOSUPPORT": "Video-Unterstützung",
     "AGENT": "Agent",
     "HEADERS": "Überschriften",
     "SCRIPT": "Skript",
-    "SCRIPT_INFO": "Info",
+    "SCRIPT_INFO": "Information",
     "SCRIPT_TYPE": "Art",
     "MOTION_TAB": "Neue Registerkarte \"Agent Dashboard\"",
     "WHATSAPP": "WhatsApp Connector",
     "AUTOCREATE_FIELD": "Feld automatisch erstellen",
-    "GLOBALS": "Globals",
+    "GLOBALS": "Globale Werte",
     "SEARCH_FIELDS": "Suchfelder",
     "STANDARD": "Standard",
     "MOTION_BAR": "Motion Bar",
     "ALL": "Alle",
-    "ALL_DISPOSITIONS": "Alle Dispositionen",
-    "FIRST_LEVEL_DISPOSITION": "First Level Disposition",
-    "LEVEL": "Niveau",
-    "SECOND_LEVEL_DISPOSITION": "Disposition der zweiten Ebene",
-    "SELECT_LEVEL": "Wählen Sie eine Ebene",
-    "TITLEFONTSIZE": "Schrifttitelgröße"
+    "ALL_DISPOSITIONS": "Alle Qualifizierungen",
+    "FIRST_LEVEL_DISPOSITION": "Qualifizierung der ersten Ebene",
+    "LEVEL": "Ebene",
+    "SECOND_LEVEL_DISPOSITION": "Qualifizierung der zweiten Ebene",
+    "SELECT_LEVEL": "Ebene auswählen",
+    "TITLEFONTSIZE": "Schriftgröße Titel"
   }
 }
index bf0d36b..b0c7106 100644 (file)
@@ -20,6 +20,7 @@
     "LINK": "Link [https://]",
     "BACKGROUND": "Background",
     "FOREGROUND": "Foreground",
+    "IGNOREDIALERCONTACTID": "Ignore dialer contact Id",
     "NONE": "None",
     "TOTAL": "Total",
     "ABANDONED": "Abandoned",
@@ -74,6 +75,7 @@
       "TYPE_REQUIRED": "Mandatory field",
       "VALUE_REQUIRED": "Mandatory field",
       "ACCOUNT_REQUIRED": "Mandatory field",
+      "IGNOREDIALERCONTACTID_REQUIRED": "Ignore dialer contact Id field is required",
       "FIELD_REQUIRED": "Mandatory field",
       "NAME_REQUIRED": "Mandatory field",
       "HOST_REQUIRED": "Mandatory field",
index c6b75fe..1e98efe 100644 (file)
@@ -19,6 +19,7 @@
     "LINK": "Link [https://]",
     "BACKGROUND": "Background",
     "FOREGROUND": "Foreground",
+    "IGNOREDIALERCONTACTID": "Ignora il contact Id del dialer",
     "NONE": "Nessuno",
     "TOTAL": "Totale",
     "ABANDONED": "Abbandonate",
@@ -98,6 +99,7 @@
       "TYPE_REQUIRED": "Campo obbligatorio",
       "VALUE_REQUIRED": "Campo obbligatorio",
       "ACCOUNT_REQUIRED": "Campo obbligatorio",
+      "IGNOREDIALERCONTACTID_REQUIRED": "Campo obbligatorio",
       "FIELD_REQUIRED": "Campo obbligatorio",
       "TIME_RANGE_TO_REQUIRED": "Campo obbligatorio",
       "WEEK_DAYS_TO_REQUIRED": "Campo obbligatorio",
index 91d5165..254759d 100644 (file)
     "SERVICELEVEL": "مستوى الخدمة",
     "SECOND_LEVEL_DISPOSITION": "ترتيب المستوى الثاني",
     "THIRD_LEVEL_DISPOSITION": "الترتيب الثالث",
+    "TEAMADD_VOICEPREFIX": "أضف الفريق إلى البادئة",
     "ALIAS": "الاسم المستعار"
   }
 }
index 5fe900e..3f3b98d 100644 (file)
     "SERVICELEVEL": "Úroveň služby",
     "SECOND_LEVEL_DISPOSITION": "Dispozice druhé úrovně",
     "THIRD_LEVEL_DISPOSITION": "Dispozice třetí úrovně",
+    "TEAMADD_VOICEPREFIX": "Přidat tým k předponě",
     "ALIAS": "Alias"
   }
 }
index 67570a2..ea7f1fe 100644 (file)
     "SERVICELEVEL": "Serviceniveau",
     "SECOND_LEVEL_DISPOSITION": "Andet niveau disposition",
     "THIRD_LEVEL_DISPOSITION": "Tredje niveau disposition",
+    "TEAMADD_VOICEPREFIX": "Føj team til præfiks",
     "ALIAS": "Alias"
   }
 }
index c698d09..bd7bae8 100644 (file)
@@ -1,68 +1,68 @@
 {
   "VOICE": {
-    "GOTO_VOICEQUEUE": "Zu Realtime Voice Warteschlangen gehen",
-    "GOTOREALTIME_VOICEQUEUE": "Zu Realtime Voice Warteschlangen gehen",
+    "GOTO_VOICEQUEUE": "Zur Anruf-Warteschlange gehen",
+    "GOTOREALTIME_VOICEQUEUE": "Zur Echtzeitansicht Anruf-Warteschlange gehen",
     "NAME": "Name",
     "LOGOUT": "An-/Abmelden",
-    "VOICEQUEUES": "Voice Warteschlangen",
-    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
+    "VOICEQUEUES": "Anruf-Warteschlangen",
+    "SEARCH_FOR_ANYONE": "Suche",
     "BACK": "Zurück",
-    "SELECTED": "Ausgewählte",
-    "SELECT_ALL": "Alle auswählen",
-    "SELECT_NONE": "Wählen Sie \"Keine\"",
-    "DELETE_VOICEDISPOSITION": "Disposition löschen",
-    "EDIT_VOICEDISPOSITION": "Edit Voice Disposition",
-    "EDIT_VOICEQUEUE": "Edit Voice Warteschlange",
-    "DELETE_VOICEQUEUE": "Warteschlange löschen",
-    "MOHSOUNDS": "Die MOH-Sounds",
+    "SELECTED": "Ausgewählt",
+    "SELECT_ALL": "Alles auswählen",
+    "SELECT_NONE": "Nichts auswählen",
+    "DELETE_VOICEDISPOSITION": "Qualifizierung löschen",
+    "EDIT_VOICEDISPOSITION": "Qualifizierung bearbeiten",
+    "EDIT_VOICEQUEUE": "Anruf-Warteschlange bearbeiten",
+    "DELETE_VOICEQUEUE": "Anruf-Warteschlange löschen",
+    "MOHSOUNDS": "MOH-Töne",
     "STRATEGY": "Strategie",
     "DESCRIPTION": "Beschreibung",
-    "ADD_VOICEQUEUE": "Hinzufügen von Warteschlangen",
+    "ADD_VOICEQUEUE": "Warteschlangen hinzufügen",
     "CREATED_AT": "Erstellt am",
-    "CANT_PLAY_GSM_AUDIO_FILES": "Nicht gsm-Audiodateien",
+    "CANT_PLAY_GSM_AUDIO_FILES": "Nicht GSM-Audiodateien",
     "APPLICATIONS_LIST": "Liste der Anwendungen",
     "LEGEND": {
       "CUSTOM_APPLICATION": "(*) - Benutzerdefinierte Anwendung."
     },
     "ERRORS": {
-      "NAME_REQUIRED": "Der Name ist erforderlich",
-      "APPLICATION_NAME_REQUIRED": "Der Name der Anwendung ist erforderlich",
-      "TIMEOUT_REQUIRED": "Der Timeout ist erforderlich",
-      "PHONENUMBER_REQUIRED": "Die Telefonnummer ist erforderlich",
-      "CONTEXT_REQUIRED": "Der Rahmen ist erforderlich",
-      "DESTINATIONPATTERN_REQUIRED": "Das Ziel-pattern ist erforderlich",
-      "FULLNAME_REQUIRED": "Der vollständige Name ist erforderlich",
-      "EMAIL_REQUIRED": "Die E-Mail ist erforderlich",
-      "EMAIL_MUST_VALID": "Die e-Mail muss in einem gültigen Format",
-      "MAILBOX_REQUIRED": "Die Mailbox ist erforderlich",
-      "PASSWORD_REQUIRED": "Das Kennwort ist erforderlich",
-      "CONFIRM_NOT_MATCH": "Die Kennwörter stimmen nicht überein.",
-      "TIMEZONE_REQUIRED": "Die Zeitzone ist erforderlich",
-      "PREFIX_REQUIRED": "Das Präfix ist erforderlich",
-      "OPTIONS_REQUIRED": "Die Optionen sind Erforderlich",
-      "AFTERCALLWORKDURATION_REQUIRED": "Die Arbeit nach Anruf Dauer ist erforderlich",
-      "TECHNOLOGY/RESOURCE_REQUIRED": "Die Technologie/Ressource erforderlich ist",
-      "PHONE_REQUIRED": "Die Telefonnummer ist erforderlich",
-      "VALUE_REQUIRED": "Der Wert ist erforderlich",
-      "EXTENSION_REQUIRED": "Die Verlängerung ist erforderlich",
-      "PRIORITY_REQUIRED": "Die Priorität ist erforderlich",
-      "NAME_MUST_VALID_PATTERN": "Der Name muss in einem gültigen Format geschrieben werden",
-      "APPLICATION_REQUIRED": "Die Anwendung ist erforderlich",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Timeout muss größer als oder gleich",
-      "MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die max. Länge muss größer als oder gleich",
-      "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Wiederholung muss größer als oder gleich",
-      "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Nachlese Zeit muss größer als oder gleich",
-      "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Das Gewicht muss größer als oder gleich",
-      "ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Häufigkeit verkünden muss größer als oder gleich",
-      "MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Min Frequenz ankündigen muss größer als oder gleich",
-      "PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die periodische Frequenz ankündigen muss größer als oder gleich",
-      "AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Arbeit nach Anruf Dauer muss größer als oder gleich",
-      "MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Verzögerung muss größer als oder gleich",
-      "POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Position muss größer als oder gleich",
-      "CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Den Schnitt stellen muss größer als oder gleich",
-      "MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Muss die Max Sekunden größer als oder gleich",
-      "MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Max Meldungen muss größer als oder gleich",
-      "MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Die Max Meldungen muss kleiner als oder gleich",
+      "NAME_REQUIRED": "Name ist erforderlich",
+      "APPLICATION_NAME_REQUIRED": "Name der Anwendung ist erforderlich",
+      "TIMEOUT_REQUIRED": "Timeout ist erforderlich",
+      "PHONENUMBER_REQUIRED": "Telefonnummer ist erforderlich",
+      "CONTEXT_REQUIRED": "Kontext ist erforderlich",
+      "DESTINATIONPATTERN_REQUIRED": "Ziel-Pattern ist erforderlich",
+      "FULLNAME_REQUIRED": "Vollständiger Name ist erforderlich",
+      "EMAIL_REQUIRED": "E-Mail ist erforderlich",
+      "EMAIL_MUST_VALID": "E-Mail Format ungültig",
+      "MAILBOX_REQUIRED": "Mailbox ist erforderlich",
+      "PASSWORD_REQUIRED": "Passwort ist erforderlich",
+      "CONFIRM_NOT_MATCH": "Die Passwörter stimmen nicht überein",
+      "TIMEZONE_REQUIRED": "Zeitzone ist erforderlich",
+      "PREFIX_REQUIRED": "Präfix ist erforderlich",
+      "OPTIONS_REQUIRED": "Bedingungen sind Erforderlich",
+      "AFTERCALLWORKDURATION_REQUIRED": "Dauer Nacharbeit ist erforderlich",
+      "TECHNOLOGY/RESOURCE_REQUIRED": "Ressource ist erforderlich",
+      "PHONE_REQUIRED": "Telefonnummer ist erforderlich",
+      "VALUE_REQUIRED": "Wert ist erforderlich",
+      "EXTENSION_REQUIRED": "Nebenstelle ist erforderlich",
+      "PRIORITY_REQUIRED": "Priorität ist erforderlich",
+      "NAME_MUST_VALID_PATTERN": "Format Name ungültig",
+      "APPLICATION_REQUIRED": "Anwendung ist erforderlich",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Timeout muss größer oder gleich sein als",
+      "MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die max. Länge muss größer oder gleich sein als",
+      "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wiederversuche muss größer oder gleich sein als",
+      "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Nacharbeit Zeit muss größer oder gleich sein als",
+      "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gewichtung muss größer oder gleich sein als",
+      "ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Frequenz der Ansagen muss größer oder gleich sein als",
+      "MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Min. Frequenz der Ansagen muss größer oder gleich sein als",
+      "PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wiederholende Frequenz der Ansagen muss größer oder gleich sein als",
+      "AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Nacharbeit Zeit muss größer oder gleich sein als",
+      "MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Verzögerung muss größer oder gleich sein als",
+      "POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Position muss größer oder gleich sein als",
+      "CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Schnitt muss größer oder gleich sein als",
+      "MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Max. Sekundenmuss größer oder gleich sein als",
+      "MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Max. Nachrichten muss größer oder gleich sein als",
+      "MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Max. Nachrichten muss kleiner oder gleich sein als",
       "CALLERIDALL_MUST_VALID_PATTERN": "Falsches Format",
       "OUTBOUNDROUTE_REQUIRED": "Pflichtfeld",
       "VARIABLE_REQUIRED": "Pflichtfeld",
       "TRUNK_REQUIRED": "Pflichtfeld",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Pflichtfeld",
       "PROJECT_REQUIRED": "Pflichtfeld",
-      "PENALTY_REQUIRED": "Sie müssen einen Wert für die Strafe angeben"
+      "PENALTY_REQUIRED": "Wert für Verzögerung erforderlich"
     },
     "GENERAL": "Allgemein",
     "TIMEOUT": "Timeout",
     "MAXLENGTH": "Maximale Länge",
-    "RETRY": "Versuchen Sie es erneut",
-    "WRAPUPTIME": "-Zeit",
-    "WEIGHT": "Gewicht",
-    "JOINWHENEMPTY": "Melden Sie wenn sie leer sind",
-    "LEAVEWHENEMPTY": "Wenn sie leer lassen",
+    "RETRY": "Bitte erneut versuchen",
+    "WRAPUPTIME": "Nacharbeit",
+    "WEIGHT": "Gewichtung",
+    "JOINWHENEMPTY": "Beitreten, wenn leer",
+    "LEAVEWHENEMPTY": "Verlassen, wenn leer",
     "HELP": {
-      "TIMEOUT": "Gibt die Anzahl von Sekunden an, die das Gerät.",
-      "MAXLENGTH": "Gibt die maximale Anzahl der Anrufer, die in der Warteschlange. Ein Wert von Null bedeutet, dass eine unbegrenzte Anzahl von Anrufern in der Warteschlange sind erlaubt.",
-      "RETRY": "Gibt die Anzahl der Sekunden, die gewartet wird, bevor das nächste Mitglied in die Warteschlange, wenn der Wert für die Zeitüberschreitung erschöpft ist, während versucht wird, den ein Mitglied der Warteschlange.",
-      "WRAPUPTIME": "Die Anzahl der Sekunden, die ein Mitglied in einer Warteschlange verfügbar, nachdem Sie einen Anruf.",
-      "WEIGHT": "Legt das Gewicht einer Warteschlange. Eine Warteschlange mit einem höheren Gewicht definiert werden erste Priorität, wenn Mitglieder, die mit mehreren Warteschlangen.",
-      "JOINWHENEMPTY": "Steuert, ob ein Anrufer wird zur Warteschlange hinzugefügt werden, wenn keine Mitglieder verfügbar sind.",
-      "LEAVEWHENEMPTY": "Zur Kontrolle, ob die Anrufer aus der Warteschlange, wenn die Mitglieder nicht mehr bereit sind, Anrufe zu beantworten.",
-      "ANNOUNCEFREQUENCY": "Legt fest, wie oft sollten wir den Anrufer ankündigen und/oder geschätzte Wartezeit in der Warteschlange. Setzen Sie diesen Wert auf Null, um die Funktion zu deaktivieren.",
-      "MINANNOUNCEFREQUENCY": "Gibt die minimale Zeit, die verstreichen müssen, bevor wir Ihnen die Anrufer in der Warteschlange wieder. Dieser wird verwendet, wenn der Anrufer die Position kann sich häufig ändern, um zu verhindern, dass der Anrufer hören mehrere Updates in einem kurzen Zeitraum.",
-      "PERIODICANNOUNCEFREQUENCY": "Gibt an, wie oft wir sollten regelmäßige Ansagen, die dem Anrufer vorgespielt werden.",
-      "ANNOUNCEPOSITIONLIMIT": "Sie kann verwendet werden, wenn Sie definiert haben, verkünden-Position entweder als Begrenzung oder mehr.",
-      "AFTERCALLWORKDURATION": "Die Dauer der Pause durch die Option \"Arbeit nach Anruf",
-      "MEMBERDELAY": "Sie kann verwendet werden, wenn Sie wollen, dass es eine Verzögerung, bevor der Anrufer und Mitglied der Warteschlange, die miteinander verbunden sind.",
-      "MUSICONHOLD": "Setzt die Musik klasse verwendet werden, die von einer bestimmten Warteschlange an.",
-      "ANNOUNCETOAGENT": "Für die Wiedergabe einer Ansage auf den Agenten, der den Anruf entgegengenommen hat, ihn wissen zu lassen, was der Anrufer die Warteschlange aus.",
-      "RANDOMPERIODICANNOUNCE": "Falls auf Ja eingestellt, wird die festgelegte regelmäßige Mitteilungen in einer zufälligen Reihenfolge.",
-      "ANNOUNCEHOLDTIME": "Legt fest, ob die geschätzte Wartezeit gespielt werden sollte zusammen mit den regelmäßigen Ankündigungen.",
-      "ANNOUNCECALLERPOSITION": "Legt fest, ob es sich bei dem Anrufer seine Position in der Warteschlange mitgeteilt werden sollten. Wenn die Einstellung Nein lautet, die Position wird nicht bekannt gegeben. Falls auf Ja eingestellt, wird die Position des Anrufers wird immer bekannt gegeben. Wenn der Wert überschritten wird, wird der Anrufer hört ihre Position in der Warteschlange nur, wenn er sich innerhalb der Grenze von AK-Position. Wenn der Wert auf Mehr, hört der Anrufer ihre Position, wenn es über die Zahl von AK-Position.",
-      "REPORTHOLDTIMEAGENT": "Die Berichterstattung über die CLI des Anrufers mit der Zeit in der Warteschleife in der Warteschlange vor.",
-      "PERIODICANNOUNCE": "Eine Reihe von regelmäßigen Mitteilungen gespielt zu werden, in der Reihenfolge wiedergegeben, in der sie definiert sind.",
-      "HOLDTIMEANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"Hold\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
-      "YOUARENEXTANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"Sie sind jetzt in erster Linie\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
-      "THEREAREANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"Es gibt\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
-      "WAITINGCALLSANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"Wartende Anrufe\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
-      "ESTIMATEDHOLDTIMEANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"Die voraussichtliche Wartezeit ist\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
-      "MINUTESANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"min\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
-      "MINUTEANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"min\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
-      "SECONDSANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"Sekunden\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
-      "THANKYOUANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"Vielen Dank für Ihre Geduld.\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
-      "AFTERCALLWORK": "Wenn der Agent aktiv ist, wird auf eine Pause nach einer abgeschlossenen Anruf in der Warteschlange",
-      "AUTOPAUSE": "Aktiviert/Deaktiviert die automatische Unterbrechung der Mitglieder, die es versäumen, um einen Anruf zu beantworten. Wenn aktiv, wird diese Mitgliedstaaten angehalten zu werden in allen Warteschlangen er Mitglied ist.",
-      "RINGINUSE": "Verwendet werden, um zu vermeiden, Senden von Anrufen an Mitglieder, deren Status im Einsatz ist.",
-      "TIMEOUTRESTART": "Falls auf Ja eingestellt, wird das Timeout für einen Agenten zu beantworten, wenn entweder ein Besetztzeichen oder wird mit dem Status \"Überlastung des Kanals.",
-      "CONTEXT": "Ermöglicht einem Anrufer zu beenden, die die Warteschlange durch Drücken einer einzigen Taste MFV-Ziffer. Wenn Sie einen Kontext angegeben ist und der Anrufer gibt eine Zahl, Ziffer wird versuchen, die angepasst werden können, im Rahmen festgelegt, und es wird auch weiterhin die Ausführung Nummernplan.",
-      "SETINTERFACEVARIABLES": "Falls auf Ja eingestellt, kurz vor dem Anrufer, die mit einer Warteschlange, die einige Variablen werden(siehe wiki)",
-      "SETQUEUEVARIABLES": "Falls auf Ja eingestellt, kurz vor dem Anrufer, die mit einer Warteschlange und kurz vor dem Anrufer die Warteschlange verlassen einige Variablen werden(siehe wiki)",
-      "SETQUEUEENTRYVARIABLES": "Falls auf Ja eingestellt, kurz vor dem Anrufer, die mit einer Warteschlange, die einige Variablen werden(siehe wiki)",
+      "TIMEOUT": "Zeitüberschreitung in Sekunden",
+      "MAXLENGTH": "Maximaler Anrufer in der Warteschlange. Wenn Wert 0, dann keine Begrenzung.",
+      "RETRY": "Klingelzeit in Sekunden pro Mitglied. Danach erfolgt ein weiterer Versuch bei der nächsten freien Nebenstelle.",
+      "WRAPUPTIME": "Nacharbeitszeit in Sekunden, bis ein Nutzer nach einem Anruf wieder verfügbar ist.",
+      "WEIGHT": "Gewichtung der Warteschlange. Ein höherer Wert bedeutet eine Priorisierung gegenüber anderen Warteschlangen.",
+      "JOINWHENEMPTY": "Legt fest, ob ein Anruf in die Warteschlange eintreten kann, wenn dort keine Nutzer angemeldet sind.",
+      "LEAVEWHENEMPTY": "Wirft den Anruf aus der Warteschlange, wenn dort kein Nutzer angemeldet ist.",
+      "ANNOUNCEFREQUENCY": "Intervall für automatische Ansagen der Wartezeit, Position, etc. Der Wert 0 deaktiviert diese Option.",
+      "MINANNOUNCEFREQUENCY": "Minimales Intervall für die Ansagen der Wartezeit. Verhindert, dass ein Nutzer bei häufigen Wechsel der Warteposition zu viele Ansagen erhält.",
+      "PERIODICANNOUNCEFREQUENCY": "Legt fest, wie oft die sich wiederholenden Ansagen gespielt werden sollen",
+      "ANNOUNCEPOSITIONLIMIT": "Wird verwendet, wenn der Wert für die Warteposition auf \"Limitierung\" oder \"Mehr\" gestellt wird.",
+      "AFTERCALLWORKDURATION": "Die Dauer der Nacharbeit nach einem Anruf",
+      "MEMBERDELAY": "Erstellt eine Verzögerung des Anrufes für bestimmte Agenten. Kann zum Skillbasierten Routing verwendet werden.",
+      "MUSICONHOLD": "Legt die Haltemusik auf Basis der Warteschlange fest",
+      "ANNOUNCETOAGENT": "Legt fest, ob der Agent vor Annahme des Anrufes einen Hinweis auf die eingehende Warteschlange hört",
+      "RANDOMPERIODICANNOUNCE": "Bei ja, werden die zugewiesenen Ansagen zufällig abgespielt",
+      "ANNOUNCEHOLDTIME": "Spielt die geschätzte Wartezeit zusammen oder ohne die sich wiederholenden Ansagen ab.",
+      "ANNOUNCECALLERPOSITION": "Definiert die Ansage der Warteposition für den Anrufer. Nein = Niemals; Ja = Immer; Limitierung = nur, wenn die Zeit innerhalb dem eingetragenen Wert liegt; Mehr = nur, wenn die Zeit oberhalb dem eingetragenen Wert liegt ",
+      "REPORTHOLDTIMEAGENT": "Haltezeiten der Agenten in den Berichten verwenden",
+      "PERIODICANNOUNCE": "Sich wiederholende Ansagen; können je nach Konfiguration in definierter Reihenfolge oder zufällig abgespielt werden.",
+      "HOLDTIMEANNOUNCE": "Ansage der Wartezeit. Leer lassen zum Überspringen",
+      "YOUARENEXTANNOUNCE": "Ansage \"Sie sind an erster Position der Warteschlange\", Leer lassen zum Überspringen",
+      "THEREAREANNOUNCE": "Ansage \"Es befinden sich..\" Leer lassen zum Überspringen",
+      "WAITINGCALLSANNOUNCE": "Ansage \"...Anrufe in der Warteschlange\" Leer lassen zum Überspringen",
+      "ESTIMATEDHOLDTIMEANNOUNCE": "Ansage: \"Die geschätzte Wartezeit beträgt derzeit...\" Leer lassen zum Überspringen",
+      "MINUTESANNOUNCE": "Ansage \"Minuten\"",
+      "MINUTEANNOUNCE": "Ansage \"Minute\"",
+      "SECONDSANNOUNCE": "Ansage \"Sekunden\" Leer lassen zum Überspringen",
+      "THANKYOUANNOUNCE": "Ansage \"Vielen Dank für Ihre Geduld\" Leer lassen zum Überspringen",
+      "AFTERCALLWORK": "Wenn aktiviert, erhalten die Agenten eine kurze Pause nach jedem Anruf",
+      "AUTOPAUSE": "Aktiviert/Deaktiviert die automatische Pause der Agenten, bei einem verpassten Anruf. Hinweis: bezieht sich dann auf alle Anruf-Warteschlangen des Agenten.",
+      "RINGINUSE": "Verhindert das Klingeln bei Agenten, deren Nebenstelle in Verwendung ist",
+      "TIMEOUTRESTART": "Wenn ja, wird die Zeitüberschreitung bei Agenten mit \"Besetzt\" oder \"Verbindungsfehler\"-Status übersprungen",
+      "CONTEXT": "Ermöglicht einem Anrufer, durch Drücken einer einzelnen Taste, die Warteschlange zu verlassen.",
+      "SETINTERFACEVARIABLES": "Definiert die Variablen im Interface, welche bei einem Anruf übergeben werden können. ",
+      "SETQUEUEVARIABLES": "Definiert die Variablen in der Warteschlange, welche bei einem Anruf übergeben werden können. ",
+      "SETQUEUEENTRYVARIABLES": "Definiert die Variablen beim Eintritt in die Warteschlange, welche bei einem Anruf übergeben werden können. ",
       "RECORDING": "Aktivieren der Aufzeichnung",
-      "VOICEMAIL_CONTEXT": "Im Rahmen der relativen Erweiterung.",
+      "VOICEMAIL_CONTEXT": "Kontext der verwendeten Nebenstellen",
       "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
       "CALLERIDALL": "Unterstützte Formate: \"CallerId\" & lt; number & gt;",
       "CALLER_ID": "Unterstützte Formate: \"CallerId\" & lt; number & gt;",
-      "MANDATORYDISPOSITIONPAUSEID": "Pausenstatus, der während der Zwangsdisposition festgelegt werden soll",
-      "SERVICELEVEL": "Zweite Einstellungen für Service Level (Standard = 0, kein SL). Wird für Service Level-Statistiken verwendet (Anrufe werden innerhalb des Service Level-Zeitrahmens beantwortet)",
-      "MONITORFORMAT": "Gibt das Format der Aufnahmedatei an. Wenn es auf 'inaktiv' gesetzt ist, werden Anrufe nicht aufgezeichnet",
-      "SAVE_ROUTES": "Die Streckenführung wurde geändert. Denken Sie daran, zu speichern, wenn Sie Ihre Änderungen nicht verlieren möchten."
+      "MANDATORYDISPOSITIONPAUSEID": "Pausenstatus, welcher während einer erforderlichen Qualifizierung verwendet wird",
+      "SERVICELEVEL": "Zweite Einstellungen für Service-Level (Standard = 0, kein SL). Wird für Service Level-Statistiken verwendet (Anrufe werden innerhalb des Service Level-Zeitrahmens beantwortet)",
+      "MONITORFORMAT": "Gibt das Format der Aufzeichnungsdatei an. Bei 'inaktiv', werden Anrufe nicht aufgezeichnet"
     },
-    "MUSICONHOLD": "Musik auf Halten",
-    "ANNOUNCETOAGENT": "Geben Sie Agent",
-    "ANNOUNCEMENTS": "Ankündigungen",
-    "ADVANCED": "Erweiterte",
-    "ANNOUNCEFREQUENCY": "Frequenz ankündigen",
-    "MINANNOUNCEFREQUENCY": "Minimale Frequenz ankündigen",
-    "PERIODICANNOUNCEFREQUENCY": "Periodische Frequenz ankündigen",
-    "RANDOMPERIODICANNOUNCE": "Random Periodische verkünden",
-    "ANNOUNCEHOLDTIME": "Geben Sie Zeit",
-    "ANNOUNCECALLERPOSITION": "Position des Anrufers bekannt",
-    "ANNOUNCEPOSITIONLIMIT": "Geben Position Limit",
-    "REPORTHOLDTIMEAGENT": "Bericht Agenten",
-    "PERIODICANNOUNCE": "Periodische verkünden",
-    "HOLDTIMEANNOUNCE": "Zeit in der Warteschleife verkünden",
-    "YOUARENEXTANNOUNCE": "\"Sie sind weiter' verkünden",
-    "THEREAREANNOUNCE": "'Es gibt' verkünden",
-    "WAITINGCALLSANNOUNCE": "Wartende Anrufe,",
-    "ESTIMATEDHOLDTIMEANNOUNCE": "Geschätzte Zeit halten,",
-    "MINUTESANNOUNCE": "Minuten ankündigen",
-    "MINUTEANNOUNCE": "Minute verkünden",
-    "SECONDSANNOUNCE": "Sekunden,",
+    "MUSICONHOLD": "Wartemusik",
+    "ANNOUNCETOAGENT": "Ansage an Agenten",
+    "ANNOUNCEMENTS": "Ansagen",
+    "ADVANCED": "Erweitert",
+    "ANNOUNCEFREQUENCY": "Ansagefrequenz",
+    "MINANNOUNCEFREQUENCY": "Min. Ansagefrequenz",
+    "PERIODICANNOUNCEFREQUENCY": "Frequenz wiederholende Ansagen",
+    "RANDOMPERIODICANNOUNCE": "Zufällige Ansagen",
+    "ANNOUNCEHOLDTIME": "Wartezeit ansagen",
+    "ANNOUNCECALLERPOSITION": "Warteposition ansagen",
+    "ANNOUNCEPOSITIONLIMIT": "Limitierung Warteposition ansagen",
+    "REPORTHOLDTIMEAGENT": "Haltezeit in Agentenbericht",
+    "PERIODICANNOUNCE": "Wiederholende Ansagen",
+    "HOLDTIMEANNOUNCE": "Wartezeit ansagen",
+    "YOUARENEXTANNOUNCE": "Erste Position",
+    "THEREAREANNOUNCE": "Es befinden sich",
+    "WAITINGCALLSANNOUNCE": "Wartende Anrufe",
+    "ESTIMATEDHOLDTIMEANNOUNCE": "Geschätzte Wartezeit ansagen",
+    "MINUTESANNOUNCE": "Minuten",
+    "MINUTEANNOUNCE": "Minute",
+    "SECONDSANNOUNCE": "Sekunden",
     "THANKYOUANNOUNCE": "'Vielen Dank' verkünden",
     "AUTOPAUSE": "Auto Pause",
-    "AFTERCALLWORK": "Arbeit nach Anruf",
-    "AFTERCALLWORKDURATION": "Arbeit nach Anruf Dauer",
-    "RINGINUSE": "Ring in Verwendung",
-    "MEMBERDELAY": "Die Verzögerung",
-    "TIMEOUTRESTART": "Timeout starten",
+    "AFTERCALLWORK": "Nacharbeit",
+    "AFTERCALLWORKDURATION": "Dauer Nacharbeit",
+    "RINGINUSE": "Klingeln bei Besetzt",
+    "MEMBERDELAY": "Verzögerung",
+    "TIMEOUTRESTART": "Zeitüberschreitung",
     "MONITORFORMAT": "Aufzeichnungsformat",
-    "SETINTERFACEVARIABLES": "Die Interface- Variablen",
-    "SETQUEUEVARIABLES": "Die Warteschlange Variablen",
-    "SETQUEUEENTRYVARIABLES": "Die Warteschlange ENTRY-Variablen",
+    "SETINTERFACEVARIABLES": "Interface-Variablen",
+    "SETQUEUEVARIABLES": "Warteschlangen-Variablen",
+    "SETQUEUEENTRYVARIABLES": "Warteschlangen-Eintritts-Variablen",
     "VARIABLE": "Variable",
-    "CONTEXT": "Kontext",
+    "CONTEXT": "Kontext Austritt aus Warteschlange",
     "SAVE": "Speichern",
     "SETTINGS": "Einstellungen",
-    "INBOUNDROUTES": "Ankommende Routen",
+    "INBOUNDROUTES": "Eingehende Routen",
     "PHONENUMBER": "Telefonnummer",
     "ADD_INBOUNDROUTE": "Eingehende Route hinzufügen",
-    "EDIT_INBOUNDROUTE": "Route für eingehende Anrufe bearbeiten.",
-    "DELETE_INBOUNDROUTE": "Löschen der Route für eingehende Anrufe",
+    "EDIT_INBOUNDROUTE": "Eingehende Route bearbeiten",
+    "DELETE_INBOUNDROUTE": "Eingehende Route löschen",
     "ACTIONS": "Aktionen",
-    "OUTBOUNDROUTES": "Abgehende Routen",
-    "DESTINATIONPATTERN": "Ziel Muster",
+    "OUTBOUNDROUTES": "Ausgehende Routen",
+    "DESTINATIONPATTERN": "Ziel-Pattern",
     "ADD_OUTBOUNDROUTE": "Ausgehende Route hinzufügen",
-    "EDIT_OUTBOUNDROUTE": "Abgehende Route bearbeiten",
-    "DELETE_OUTBOUNDROUTE": "Abgehende Route löschen",
-    "CUTDIGITS": "Die Ziffern",
-    "RECORDING": "Aufnahme",
+    "EDIT_OUTBOUNDROUTE": "Ausgehende Route bearbeiten",
+    "DELETE_OUTBOUNDROUTE": "Ausgehende Route löschen",
+    "CUTDIGITS": "Ziffern",
+    "RECORDING": "Aufzeichnung",
     "RECORDINGFORMAT": "Aufzeichnungsformat",
     "INTERNALROUTES": "Interne Routen",
-    "ADD_INTERNALROUTE": "Fügen Sie interne Routen",
+    "ADD_INTERNALROUTE": "Interne Route hinzufügen",
     "EDIT_INTERNALROUTE": "Interne Route bearbeiten",
-    "DELETE_INTERNALROUTE": "Interne Routen löschen",
+    "DELETE_INTERNALROUTE": "Interne Route löschen",
     "CONTEXTS": "Kontexte",
-    "ADD_CONTEXT": "Rahmen hinzufügen",
+    "ADD_CONTEXT": "Kontext hinzufügen",
     "EDIT_CONTEXT": "Kontext bearbeiten",
-    "DELETE_CONTEXT": "Löschen von Rahmen",
-    "VOICEMAILS": "Von Voicemails",
-    "ADD_VOICEMAIL": "Fügen Sie Voicemail",
-    "EDIT_VOICEMAIL": "Bearbeiten von Voicemail",
+    "DELETE_CONTEXT": "Kontext löschen",
+    "VOICEMAILS": "Voicemails",
+    "ADD_VOICEMAIL": "Voicemail hinzufügen",
+    "EDIT_VOICEMAIL": "Voicemail bearbeiten",
     "DELETE_VOICEMAIL": "Voicemail löschen",
-    "FULLNAME": "Voller Name",
+    "FULLNAME": "Vollständiger Name",
     "EMAIL": "E-Mail",
     "MAILBOX": "Mailbox",
     "PASSWORD": "Passwort",
     "CONFIRM_PASSWORD": "Passwort bestätigen",
     "TIMEZONE": "Zeitzone",
-    "ATTACH": "Befestigen Sie",
+    "ATTACH": "Anhängen",
     "ENVELOPE": "Umschlag",
     "DELETE": "Löschen",
     "EMAILBODY": "E-Mail-Text",
     "EMAILSUBJECT": "Betreff der E-Mail",
-    "MAXSECONDS": "In Sekunden",
+    "MAXSECONDS": "Max. Sekunden",
     "MAXMESSAGES": "Max. Nachrichten",
     "MESSAGES": "Nachrichten",
     "SORT": "Sortieren",
-    "ADD_MUSICONHOLD": "Hinzufügen von Musik auf Halten",
-    "MUSICONHOLDS": "Musik auf Halten",
-    "EDIT_MUSICONHOLD": "Bearbeiten Musik auf Halten",
-    "DELETE_MUSICONHOLD": "Löschen Sie Musik auf Halten",
+    "ADD_MUSICONHOLD": "Wartemusik hinzufügen",
+    "MUSICONHOLDS": "Wartemusik",
+    "EDIT_MUSICONHOLD": "Wartemusik bearbeiten",
+    "DELETE_MUSICONHOLD": "Wartemusik löschen",
     "DIRECTORY": "Verzeichnis",
     "AUDIOFILES": "Audiodateien",
-    "RECORDINGS": "Aufnahmen",
-    "CHANSPY": "ChanSpy",
+    "RECORDINGS": "Aufzeichnungen",
+    "CHANSPY": "Listen-In",
     "PREFIX": "Präfix",
     "OPTIONS": "Optionen",
-    "AUTH": "Auth",
-    "ADD_CHANSPY": "Fügen Sie ChanSpy",
-    "EDIT_CHANSPY": "Bearbeiten Sie ChanSpy",
-    "DELETE_CHANSPY": "Löschen Sie ChanSpy",
+    "AUTH": "Authentifizierung",
+    "ADD_CHANSPY": "Listen-In hinzufügen",
+    "EDIT_CHANSPY": "Listen-In bearbeiten",
+    "DELETE_CHANSPY": "Listen-In löschen",
     "AGENTS": "Agenten",
     "TELEPHONES": "Telefone",
     "QUEUES": "Warteschlangen",
-    "QUEUE_CALLS": "Anrufe aus einer Warteschlange",
-    "QUEUE_PARAMETERS": "Queue Parameter",
+    "QUEUE_CALLS": "Anrufe in Warteschlange",
+    "QUEUE_PARAMETERS": "Warteschlangen Parameter",
     "ABANDONED_CALLS": "Abgebrochene Anrufe",
     "OUTBOUND_CALLS": "Ausgehende Anrufe",
     "AGI": "AGI",
-    "DIAL": "Kurzwahl",
+    "DIAL": "Wählen",
     "CALLYSQUARE": "CallySquare",
-    "INTERNALDIAL": "Interne Wahl",
-    "EXTERNALDIAL": "Externes Wählen",
-    "RINGGROUP": "Ring-Gruppe",
+    "INTERNALDIAL": "Interner Anruf",
+    "EXTERNALDIAL": "Externer Anruf",
+    "RINGGROUP": "Rufgruppe",
     "PLAYBACK": "Wiedergabe",
     "QUEUE": "Warteschlange",
-    "SET": "Set",
+    "SET": "Einstellen",
     "VOICEMAIL": "Voicemail",
     "GOTO": "Gehe zu",
     "HANGUP": "Auflegen",
-    "CUSTOM": "Benutzerdefinierte",
+    "CUSTOM": "Benutzerdefiniert",
     "PROJECT": "Cally-Square Projekt",
     "TECHNOLOGY/RESOURCE": "Technologie-/Ressourcen",
     "URL": "URL",
-    "EDIT_APP": "Anwendung bearbeiten.",
+    "EDIT_APP": "App bearbeiten.",
     "EDIT_INTERVAL": "Intervall bearbeiten",
-    "DELETE_APP": "Anwendung löschen",
+    "DELETE_APP": "App löschen",
     "INTERVALS": "Intervalle",
     "USER": "Benutzer",
-    "TRUNK": "Amtsleitung",
+    "TRUNK": "Trunk",
     "PHONE": "Telefon",
     "AUDIO_FILES": "Audiodateien",
-    "ANNOUNCE_OVERRIDES": "Überschreibt ankündigen",
+    "ANNOUNCE_OVERRIDES": "Überschreibungen ankündigen",
     "MACRO": "Makro",
     "GOSUB": "GoSub",
     "RULE": "Regel",
     "ANSWER": "Antwort",
     "VALUE": "Wert",
     "MAILBOX@CONTEXT": "Mailbox@Kontext",
-    "EXTENSION": "Erweiterung",
+    "EXTENSION": "Nebenstelle",
     "PRIORITY": "Priorität",
-    "HANGUP_CAUSE": "Ursache auflegen",
-    "OUTBOUNDDIAL": "Wählen Sie für abgehende Anrufe",
-    "CALLER_ID": "Die Anrufer-ID",
+    "HANGUP_CAUSE": "Ablehnungsgrund",
+    "OUTBOUNDDIAL": "Extern wählen",
+    "CALLER_ID": "Anrufer-ID",
     "NO_MESSAGE_AVAILABLE": "Keine Meldungen vorhanden",
     "NO_SOUND_AVAILABLE": "Kein Ton verfügbar",
-    "VOICERECORDINGS": "Sprachaufnahmen",
-    "CHANSPIES": "Chan Spies",
-    "VOICE": "Voice",
+    "VOICERECORDINGS": "Sprachaufzeichnungen",
+    "CHANSPIES": "Listen-Ins",
+    "VOICE": "Anrufe",
     "REALTIME": "Echtzeit",
-    "ID": "Id",
+    "ID": "ID",
     "VOICEMAIL_CONTEXT": "Kontext",
     "NO_MOHSOUND_AVAILABLE": "Keine Wartemusik verfügbar",
     "FILE": "Datei",
-    "ADD_MOHSOUND": "Hinzufügen von Musik auf Halten sound",
-    "DOWNLOAD_MOHSOUND": "Download Music-on-Hold sound",
-    "DELETE_MOHSOUND": "Löschen Sie Music On Hold sound",
+    "ADD_MOHSOUND": "Musik bei Halten hinzufügen",
+    "DOWNLOAD_MOHSOUND": "Musik bei Halten herunterladen",
+    "DELETE_MOHSOUND": "Musik bei Halten löschen",
     "UNIQUEID": "Eindeutige ID",
     "AGENT": "Agent",
     "TYPE": "Typ",
     "RATING": "Bewertung",
     "AUDIO": "Audio",
     "DATE": "Datum",
-    "NEW_VOICEQUEUE": "Neue Stimme der Warteschlange",
-    "NEW_INBOUNDROUTE": "Neue Route für eingehende Anrufe",
-    "NEW_OUTBOUNDROUTE": "Neue abgehende Route",
-    "NEW_INTERNALROUTE": "Neue interne Routen",
-    "NEW_CONTEXT": "Neue Kontext",
+    "NEW_VOICEQUEUE": "Neue Anruf-Warteschlange",
+    "NEW_INBOUNDROUTE": "Neue eingehende Route",
+    "NEW_OUTBOUNDROUTE": "Neue ausgehende Route",
+    "NEW_INTERNALROUTE": "Neue interne Route",
+    "NEW_CONTEXT": "Neuer Kontext",
     "NEW_VOICEMAIL": "Neue Voicemail",
-    "NEW_MUSICONHOLD": "Neue Musik auf Halten",
-    "NEW_CHANSPY": "Neue ChanSpy",
-    "PENALTY": "Strafe",
-    "ADD_TEAM_TO_VOICEQUEUE": "Team hinzufügen, Warteschlange",
-    "ADD_AGENT_TO_VOICEQUEUE": "Hinzufügen von Agenten der Warteschlange an die Mailbox",
-    "EDIT_DIAL": "Wählen Sie Bearbeiten.",
+    "NEW_MUSICONHOLD": "Neue Haltemusik",
+    "NEW_CHANSPY": "Neuer Listen-In",
+    "PENALTY": "Verzögerung",
+    "ADD_TEAM_TO_VOICEQUEUE": "Team zur Warteschlange hinzufügen",
+    "ADD_AGENT_TO_VOICEQUEUE": "Agenten zur Warteschlange hinzufügen",
+    "EDIT_DIAL": "Wählen anpassen",
     "EDIT_AGI": "AGI bearbeiten",
-    "EDIT_INTERNALDIAL": "Interne Wahl bearbeiten.",
-    "EDIT_EXTERNALDIAL": "Wählen Sie Externen bearbeiten",
-    "EDIT_RINGGROUP": "Gruppe bearbeiten",
-    "EDIT_PLAYBACK": "Bearbeiten Sie die Wiedergabe",
-    "EDIT_QUEUE": "Bearbeiten von Warteschlangen",
-    "EDIT_SET": "Bearbeiten",
-    "EDIT_GOTO": "Gehe zu bearbeiten.",
-    "EDIT_HANGUP": "Bearbeiten Sie Auflegen",
-    "EDIT_CUSTOM": "Bearbeiten von benutzerdefinierten",
+    "EDIT_INTERNALDIAL": "Internes Wählen bearbeiten",
+    "EDIT_EXTERNALDIAL": "Externes Wählen bearbeiten",
+    "EDIT_RINGGROUP": "Rufgruppe bearbeiten",
+    "EDIT_PLAYBACK": "Wiedergabe bearbeiten",
+    "EDIT_QUEUE": "Warteschlange bearbeiten",
+    "EDIT_SET": "Set bearbeiten",
+    "EDIT_GOTO": "Gehe zu bearbeiten",
+    "EDIT_HANGUP": "Auflegen bearbeiten",
+    "EDIT_CUSTOM": "Benutzerdef. Einstellungen bearbeiten",
     "DURATION": "Dauer",
-    "RECEIVED_AT": "Empfangen am",
+    "RECEIVED_AT": "Eingegangen am",
     "YES": "Ja",
-    "NO": "Keine",
-    "HANGUPCAUSE_1": "1 = Nicht zugewiesene Nummer",
-    "HANGUPCAUSE_16": "16 = Normail Anruf löschen",
-    "HANGUPCAUSE_17": "17 = Benutzer besetzt",
-    "HANGUPCAUSE_18": "18 = Keine Reaktion (Telefon Gerät nicht verbunden)",
+    "NO": "Nein",
+    "HANGUPCAUSE_1": "1 = Nummer nicht zugewiesen",
+    "HANGUPCAUSE_16": "16 = Beenden durch Nutzer",
+    "HANGUPCAUSE_17": "17 = Besetzt",
+    "HANGUPCAUSE_18": "18 = Keine Antwort (Nebenstelle nicht verbunden)",
     "HANGUPCAUSE_21": "21 = Anruf abgelehnt",
-    "HANGUPCAUSE_22": "22 = Anzahl geändert",
-    "HANGUPCAUSE_27": "27 = Ziel nicht in Ordnung",
-    "HANGUPCAUSE_38": "38 = Netzwerk aus, um",
+    "HANGUPCAUSE_22": "22 = Nummer geändert",
+    "HANGUPCAUSE_27": "27 = Ziel nicht verfügbar",
+    "HANGUPCAUSE_38": "38 = Netzwerk nicht verfügbar",
     "HANGUPCAUSE_41": "41 = vorübergehende Störung",
-    "RANDOM": "Random",
+    "RANDOM": "Zufall",
     "ALPHABETICAL": "Alphabetisch",
     "NO_APPS_AVAILABLE": "Keine Anwendungen verfügbar",
-    "DOWNLOAD_VOICERECORDING": "Download Voice Recording",
-    "DELETE_VOICERECORDING": "Löschen von Voice Recording",
-    "INTERNAL": "Interne",
+    "DOWNLOAD_VOICERECORDING": "Sprachaufzeichnung herunterladen",
+    "DELETE_VOICERECORDING": "Sprachaufzeichnung löschen",
+    "INTERNAL": "Intern",
     "PHONE_STATE": "Telefonstatus",
     "PHONE_STATUS": "Telefonstatus",
     "TRUNK_STATUS": "Trunk Status",
     "REGISTERED": "Registriert",
-    "UNREGISTERED": "Unregistrierte",
+    "UNREGISTERED": "Nicht registriert",
     "LAGGED": "Zurück",
     "REACHABLE": "Erreichbar",
     "UNREACHABLE": "Nicht erreichbar",
     "UNKNOWN": "Unbekannt",
-    "NOT_INUSE": "Nicht in Gebrauch",
-    "INUSE": "Im Einsatz",
+    "NOT_INUSE": "Nicht in Verwendung",
+    "INUSE": "In Verwendung",
     "BUSY": "Besetzt",
     "INVALID": "Ungültig",
     "UNAVAILABLE": "Nicht verfügbar",
     "RINGING": "Klingeln",
-    "ONHOLD": "Auf Halten",
-    "RING": "Ring",
-    "UP": "Bis",
-    "INFO": "Info",
-    "TRUNKS": "Amtsleitungen",
+    "ONHOLD": "Halten",
+    "RING": "Klingeln",
+    "UP": "Nach Oben",
+    "INFO": "Information",
+    "TRUNKS": "Trunks",
     "REGISTRY": "Registrierung",
-    "NO_REGISTRY": "Keine registry",
+    "NO_REGISTRY": "Keine Registrierung",
     "LOGGED_IN": "Angemeldet",
     "PAUSED": "Angehalten",
-    "WAITING": "Warten",
-    "TALKING": "Sprechen",
-    "DID": "Haben",
+    "WAITING": "Wartezustand",
+    "TALKING": "Im Gespräch",
+    "DID": "DID",
     "CALLER": "Anrufer",
-    "TOTAL": "Insgesamt",
+    "TOTAL": "Gesamt",
     "ANSWERED": "Beantwortet",
     "ABANDONED": "Abgebrochen",
-    "UNMANAGED": "Nicht verwaltete",
-    "AVG_HOLD_TIME": "Durchschnittl. Warteschleifenzeit",
-    "AVG_DURATION": "Av-Dauer",
-    "AVG_BILLABLE": "Avg Fakturierbaren",
-    "SOURCE": "Quelle",
+    "UNMANAGED": "Nicht bearbeitet",
+    "AVG_HOLD_TIME": "Durchschnittliche Wartezeit",
+    "AVG_DURATION": "Durchschnittliche Dauer",
+    "AVG_BILLABLE": "Durchschnittliche abrechenbare Zeit",
+    "SOURCE": "Ursprung",
     "DESTINATION": "Ziel",
     "REJECTED": "Abgelehnt",
     "FAILED": "Fehlgeschlagen",
-    "CALLED": "Aufgerufen",
+    "CALLED": "Angerufen",
     "CONNECTED": "Verbunden",
     "NO_RATING": "Keine Bewertung",
-    "EDIT_VOICERECORDING": "Edit Voice Recording",
+    "EDIT_VOICERECORDING": "Sprachaufzeichnungen verwalten",
     "APPLICATION_NAME": "Name der Anwendung",
     "ARGUMENTS": "Argumente",
-    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
-    "ADD_AGENT_TO_QUEUE": "Agent zur Warteschlange hinzufügen",
-    "DEFAULT_PAUSE": "Standard PAUSE",
+    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
+    "ADD_AGENT_TO_QUEUE": "Agenten zur Warteschlange hinzufügen",
+    "DEFAULT_PAUSE": "Standard Pause",
     "PAUSE": "Pause",
-    "UNPAUSE": "Pause",
-    "REDIRECT_TO_NUMBER": "Umleiten zu: Anzahl",
-    "REDIRECT_TO_AGENT": "Umleiten zu: Agent",
-    "AGENTADD_VOICEQUEUE": "Hinzufügen von Agenten der Warteschlange an die Mailbox",
+    "UNPAUSE": "Fortsetzen",
+    "REDIRECT_TO_NUMBER": "Weiterleiten an Nummer",
+    "REDIRECT_TO_AGENT": "Weiterleiten an Agenten",
+    "AGENTADD_VOICEQUEUE": "Agenten zu Anruf-Warteschlange hinzufügen",
     "APPLICATION": "Anwendung",
     "FILES": "Dateien",
     "FORMAT": "Format",
     "MODE": "Modus",
     "RECORD": "Datensatz",
-    "TEAMADD_VOICEQUEUE": "Hinzufügen Team voicequeue",
-    "NEW_MOHSOUND": "Neue Musik auf Halten",
-    "DOWNLOAD_MESSAGE": "Download",
+    "TEAMADD_VOICEQUEUE": "Team zur Anruf-Warteschlange hinzufügen",
+    "NEW_MOHSOUND": "Neue Wartemusik",
+    "DOWNLOAD_MESSAGE": "Herunterladen",
     "DELETE_MESSAGE": "Löschen",
     "QUEUE_PARAMS": "Queue Parameter",
-    "TOTAL_OFFERED": "Insgesamt",
+    "TOTAL_OFFERED": "Gesamt",
     "READY": "Bereit",
-    "AGENTADD_QUEUE": "Agent hinzufügen Warteschlangen zu Voice",
-    "AGENTSADD_QUEUE": "Hinzufügen von Agenten der Warteschlange an die Mailbox",
-    "ALL_TEAMS": "Alle Mannschaften",
+    "AGENTADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
+    "AGENTSADD_QUEUE": "Agenten zur Warteschlangen hinzufügen",
+    "ALL_TEAMS": "Alle Teams",
     "SELECTED_TEAMS": "Ausgewählte Teams",
     "ALL_AGENTS": "Alle Agenten",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
     "CLOSING": "Schließen",
     "TAGS": "Tags",
     "WAITING_FOR_AGENT": "Warten auf Agenten",
-    "EDIT_OUTBOUNDDIAL": "Bearbeiten ausgehenden DFÜ",
-    "ACCOUNTNAME": "Konto Name",
+    "EDIT_OUTBOUNDDIAL": "Wählverhalten ausgehend bearbeiten",
+    "ACCOUNTNAME": "Kontoname",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "Von",
-    "DISPOSITION": "Disposition",
+    "OF": "von",
+    "DISPOSITION": "Qualifizierung",
     "WAITING_FOR_AGENTS": "Warten auf Agenten",
     "CHAT": "Chat",
     "MAIL": "E-Mail",
     "OPENCHANNEL": "Offener Kanal",
     "FAX": "Fax",
     "NO_AGENT_ONLINE": "Kein Agent Online",
-    "PARTIALPAUSE": "Teilweise Pause",
+    "PARTIALPAUSE": "Teilpause",
     "STATUS": "Status",
     "TIMER": "Timer",
     "ALL": "Alle",
     "IDLE": "Leerlauf",
-    "EDIT_TRUNK": "Bearbeiten Trunk",
+    "EDIT_TRUNK": "Trunk bearbeiten",
     "ACTIVE": "Aktiv",
-    "CLEAR": "klar",
+    "CLEAR": "Leeren",
     "CALLS": "Anrufe",
-    "STARTEDAT": "Fing an bei",
-    "ENDEDAT": "Beendet bei",
-    "TAG": "Etikett",
-    "DETAILS": "Einzelheiten",
+    "STARTEDAT": "Startdatum",
+    "ENDEDAT": "Enddatum",
+    "TAG": "Tag",
+    "DETAILS": "Details",
     "BILLABLESECONDS": "Abrechenbare Sekunden",
-    "ANSWEREDAT": "Beantwortet bei",
-    "NOTE": "Hinweis",
+    "ANSWEREDAT": "Beantwortet am",
+    "NOTE": "Notiz",
     "CLOSE": "Schließen",
-    "SELECT_DATE": "Wählen Sie Startdatum",
-    "SELECT_TYPE": "Art auswählen",
-    "ABANDONEDCALLS": "Verlassene Warteschlangenanrufe",
+    "SELECT_DATE": "Startdatum auswählen",
+    "SELECT_TYPE": "Typ auswählen",
+    "ABANDONEDCALLS": "Abgebrochene Anrufe",
     "ADD_VOICEPREFIX": "Präfix hinzufügen",
-    "AGENTADD_VOICEPREFIX": "Fügen Sie Agent zu Präfix hinzu",
+    "AGENTADD_VOICEPREFIX": "Agentenpräfix hinzufügen",
     "DELETE_VOICEPREFIX": "Präfix löschen",
     "EDIT_VOICEPREFIX": "Präfix bearbeiten",
     "NEW_VOICEPREFIX": "Neues Präfix",
-    "VOICEPREFIXES": "Vorgegebene Präfixe",
+    "VOICEPREFIXES": "Präfixe für Sprachanrufe",
     "CALLERIDALL": "Anruferidentifikation",
     "OUTBOUNDROUTE": "Ausgehende Route",
-    "LOGIN_TIME": "Login-Zeit",
-    "PAUSE_TIME": "Pausenzeit",
+    "LOGIN_TIME": "Zeit angemeldet",
+    "PAUSE_TIME": "Zeit in Pause",
     "DIALER": "Dialer",
-    "INBOUND": "Eingehende",
+    "INBOUND": "Eingehend",
     "OUTBOUND": "Ausgehend",
-    "MANDATORYDISPOSITION": "Zwingende Disposition",
-    "MANDATORYDISPOSITIONPAUSEID": "Status der obligatorischen Dispositionspause",
-    "TEAMS_ASSOCIATION": "Vereinigung der Mannschaften",
+    "MANDATORYDISPOSITION": "Qualifikation erforderlich",
+    "MANDATORYDISPOSITIONPAUSEID": "PausenID bei erforderlicher Qualifizierung",
+    "TEAMS_ASSOCIATION": "Teamzuweisung",
     "CANT_DOWNLOAD_THIS_FILE": "Diese Datei kann nicht heruntergeladen werden",
     "FILE_NOT_FOUND": "Datei nicht gefunden",
     "SCREENRECORDING": "Bildschirmaufzeichnung verwalten",
-    "START_SCREENRECORDING": "Starten Sie die Bildschirmaufnahme",
-    "STOP_SCREENRECORDING": "Beenden Sie die Bildschirmaufnahme",
-    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufnahme verfügbar",
-    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufnahme läuft",
-    "WRONG_EXTENSION": "Die Datei weist die falsche Erweiterung auf",
+    "START_SCREENRECORDING": "Bildschirmaufzeichnung starten",
+    "STOP_SCREENRECORDING": "Bildschirmaufzeichnung beenden",
+    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufzeichnung verfügbar",
+    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufzeichnung läuft",
+    "WRONG_EXTENSION": "Ungültige Dateiendung",
     "DOWNLOADTRANSCRIBE_VOICERECORDING": "Transkript herunterladen",
     "FAILUREREASON": "Fehlergrund",
-    "RUNSENTIMENT_VOICERECORDING": "Führen Sie Sentiment",
-    "RUNTRANSCRIBESENTIMENT_VOICERECORDING": "Führen Sie Transcribe & Sentiment aus",
-    "RUNTRANSCRIBE_VOICERECORDING": "Führen Sie Transcribe aus",
-    "SENTIMENT": "Gefühl",
-    "SENTIMENTANALYSIS": "Stimmungsanalyse",
+    "RUNSENTIMENT_VOICERECORDING": "Starten Sprachaufzeichnung inkl. Sentiment",
+    "RUNTRANSCRIBESENTIMENT_VOICERECORDING": "Transkription und Sentinemtaufzeichnung starten",
+    "RUNTRANSCRIBE_VOICERECORDING": "Transkription starten",
+    "SENTIMENT": "Sentiment",
+    "SENTIMENTANALYSIS": "Sentiment-Analyse",
     "SENTIMENT_MIXED": "Gemischt",
     "SENTIMENT_NEGATIVE": "Negativ",
     "SENTIMENT_NEUTRAL": "Neutral",
     "SENTIMENT_POSITIVE": "Positiv",
     "TEXT": "Text",
     "TRANSCRIBE": "Transkribieren",
-    "TRANSCRIBESTATUS_COMPLETED": "Abgeschlossen",
-    "TRANSCRIBESTATUS_FAILED": "Gescheitert",
+    "TRANSCRIBESTATUS_COMPLETED": "Transkription abgeschlossen",
+    "TRANSCRIBESTATUS_FAILED": "Transkription fehlgeschlagen",
     "TRANSCRIBESTATUS_IN_PROGRESS": "In Bearbeitung",
     "TRANSCRIBESTATUS_NEW": "Neu",
     "TRANSCRIPT": "Transkript",
     "TRANSCRIPTANALYSIS": "Transkript & Analyse",
     "SERVICELEVEL": "Service Level",
-    "SECOND_LEVEL_DISPOSITION": "Disposition der zweiten Ebene",
-    "THIRD_LEVEL_DISPOSITION": "Disposition der dritten Ebene",
+    "SECOND_LEVEL_DISPOSITION": "Qualifizierung der zweiten Ebene",
+    "THIRD_LEVEL_DISPOSITION": "Qualifizierung der dritten Ebene",
+    "TEAMADD_VOICEPREFIX": "Team zum Präfix hinzufügen",
     "ALIAS": "Alias"
   }
 }
index 0e070f7..28d2655 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",
     "RUNSENTIMENT_VOICERECORDING": "Run Sentiment",
     "SENTIMENT": "Sentiment",
     "SERVICELEVEL": "Service level",
+    "MAXCAPACITY": "Max capacity",
+    "WORKING": "Working",
     "LEGEND": {
       "CUSTOM_APPLICATION": "(*) - Custom application"
     },
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..bf5b0d2 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",
     "RUNTRANSCRIBE_VOICERECORDING": "Esegui Transcribe",
     "RUNTRANSCRIBESENTIMENT_VOICERECORDING": "Esegui Transcribe&Sentiment",
     "RUNSENTIMENT_VOICERECORDING": "Esegui Sentiment",
+    "MAXCAPACITY": "Capacità massima",
+    "WORKING": "Attivo",
     "LEGEND": {
       "CUSTOM_APPLICATION": "(*) - Applicatione Custom"
     },
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..2d8b1f5 100644 (file)
@@ -30,6 +30,7 @@
     "AUTHTOKEN": "Auth Token",
     "AUTOREPLY": "Auto Reply",
     "BACK": "Back",
+    "BASEURL": "Base URL",
     "BOTNAME": "Bot Name",
     "BUSY": "Busy",
     "CANNED_ANSWER_NOT_FOUND": "No Canned Answers were found",
@@ -86,6 +87,7 @@
       "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less or equal than",
       "AGENTTRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
       "AUTHTOKEN_REQUIRED": "Mandatory Field",
+      "BASEURL_REQUIRED": "Mandatory Field",
       "BOTNAME_REQUIRED": "Mandatory Field",
       "COMMAND_REQUIRED": "Mandatory Field",
       "CONDITION_REQUIRED": "Mandatory Field",
     "LASTMESSAGE": "Last Message",
     "LEXREGION": "Region",
     "LIST": "List",
-    "LOGGED_IN": "Logged In (SIP Connected)",
+    "LOGGED_IN": "Logged In",
     "LOGIN_TIME": "Login Time",
     "LOGOUT": "Logout",
     "MANDATORYDISPOSITION": "Mandatory Disposition",
     "NOTIFICATIONSOUND": "Sound",
     "NOTIFICATIONTEMPLATE": "Template",
     "OF": "of",
-    "OPENED": "Opened",
+    "OPENED": "Open",
     "PAGE": "Page",
     "PARTIALPAUSE": "Partial Pause",
     "PAUSE": "Pause",
     "READY": "Ready",
     "REALTIME": "Realtime",
     "RECEIVEURL": "Receive URL",
+    "DELIVERYREPORTURL": "Delivery report URL",
     "REFRESH_INTERACTIONS": "Refresh Interactions",
     "REMOTE": "Remote",
     "ROWSPERPAGE": "Rows per page",
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 213b97e..39dd215 100644 (file)
     "DELETE_WHATSAPPDISPOSITION": "Elimina la disposizione di WhatsApp",
     "DIALOGFLOW": "DialogFlow",
     "DISPOSITION": "Disposizione",
-    "DISPOSITIONS": "disposizioni",
+    "DISPOSITIONS": "Disposizioni",
     "DOWNLOAD_INTERACTION": "Scarica",
     "DOWNLOAD_WITHOUT_ATTACHMENTS": "Scarica senza allegati",
     "DOWNLOAD_WITH_ATTACHMENTS": "Scarica con allegati",
     "FALSEPRIORITY": "Priorità falsa",
     "GOTOP": "Andare in cima",
     "GO_TO_WHATSAPPACCOUNTS": "Vai all'account",
-    "INTERACTIONS": "interazioni",
+    "INTERACTIONS": "Interazioni",
     "INTERACTIONS_WHATSAPPACCOUNT": "Vai a Interazioni",
     "KEY": "Chiave",
     "LEXREGION": "Regione",
     "QUEUETRANSFER": "Trasferimento in coda",
     "QUEUETRANSFERTIMEOUT": "Timeout trasferimento coda",
     "RECEIVEURL": "Ricevi URL",
+    "DELIVERYREPORTURL": "Consegna URL",
     "REFRESH_INTERACTIONS": "Aggiorna interazioni",
     "REMOTE": "A distanza",
     "SECRETACCESSKEY": "Chiave di accesso segreta",
     "TOKEN": "Gettone",
     "TRANSFER": "Trasferimento",
     "TRUEPRIORITY": "Vera priorità",
-    "TYPE": "genere",
+    "TYPE": "Genere",
     "VALUE": "Valore",
     "VARIABLE": "Variabile",
     "WAITFORTHEASSIGNEDAGENT": "Attendi l'agente assegnato",
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 945c4cb..39a5cef 100644 (file)
     "NOTIFICATION_TITLE_RECIPIENT": "to {{recipient}}",
     "USER_FORCE_LOGOUT": "{{ip}} has logged in with your credentials. \nMultiple logins are not allowed",
     "LOGOUT": "Logout",
-    "SESSION_TIMEOUT": "The session will be automatically closed after 60 seconds"
+    "SESSION_TIMEOUT": "The session will be automatically closed after 60 seconds",
+    "HELP": {
+      "PREVIEW_RECALLME": "This is a Recall Me call scheduled for {{date}}"
+    }
   }
 }
index adb2f85..25ff681 100644 (file)
     "NOTIFICATION_TITLE_RECIPIENT": "a {{recipient}}",
     "USER_FORCE_LOGOUT": "{{ip}} si è connesso con le tue credenziali. \nNon sono consentite connessioni multiple",
     "LOGOUT": "Disconnettersi",
-    "SESSION_TIMEOUT": "La sessione verrà chiusa automaticamente dopo 60 secondi"
+    "SESSION_TIMEOUT": "La sessione verrà chiusa automaticamente dopo 60 secondi",
+    "HELP": {
+      "PREVIEW_RECALLME": "Questa è una chiamata Recall Me programmata per il {{date}}"
+    }
   }
 }
index aea4f53..523b058 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.53eff8d6.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.285b5bd1.js"></script>
+  <script src="scripts/app.3eccb704.js"></script>
 
   <!-- CKEDITOR -->
   <script src="assets/plugins/ckeditor/ckeditor.js"></script>
similarity index 51%
rename from public/scripts/app.285b5bd1.js
rename to public/scripts/app.3eccb704.js
index a3d13a9..edd4776 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){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"mailAccount",action:"getDispositions",field:"name",params:{id:m.mailAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.mailAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.mailAccountInteractions.rows.length;n+=1){var t=m.mailAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){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,p).$promise}function v(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||g(),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 h(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 f(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:{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")}}]},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(){v(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=p,m.getMailAccountInteractions=g,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,g()}}).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=v,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){v(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.realtime","app.dashboards","app.staff","app.contactmanager","app.voice","app.chat","app.mail","app.sms","app.openchannel","app.fax","app.tools","app.callysquare","app.analytics","app.integrations","app.settings","app.motiondialer","app.help","app.jscripty","app.marketplace","app.plugins","app.video","app.whatsapp","app.login","app.forgot","app.reset","app.errors"])}(),function(){"use strict";function e(e,n){e.state("app.login",{url:"/login?token&userId",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.login":{templateUrl:"app/login/login.html",controller:"LoginController as vm"}},bodyClass:"login"}),n.addPart("app/login")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.login",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.analytics",{abstract:!0,url:"/analytics"}).state("app.analytics.metrics",{url:"/metrics",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/metrics/metrics.html",controller:"MetricsController as vm"}},resolve:{metrics:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("analyticMetric@get",{fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Metrics",fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1201})}]},authenticate:!0,permissionId:1201,bodyClass:"analytics"}).state("app.analytics.extractedReports",{url:"/extractedReports",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/extractedReports/extractedReports.html",controller:"ExtractedReportsController as vm"}},resolve:{extractedReports:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("analyticExtractedReport@get",{fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ExtractedReports",fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1202})}]},authenticate:!0,permissionId:1202,bodyClass:"analytics"}),n.addPart("app/main/apps/analytics")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.analytics",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.analytics.reports"]).config(e)}(),function(){"use strict";function e(e){e.state("app.analytics.reports",{url:"/reports",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/reports/reports.html",controller:"ReportsController as vm"}},resolve:{treeReports:["apiResolver",function(e){return e.resolve("analyticTreeReport@get",{fields:"id,tree",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1203})}]},authenticate:!0,permissionId:1203,bodyClass:"analytics"}).state("app.analytics.reports.edit",{url:"/:id?tab",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/reports/edit/view.html",controller:"ReportController as vm"}},resolve:{report:["apiResolver","$stateParams","$q","describeTable",function(e,n,a,i){var s;return e.resolve("analyticCustomReport@get",{fields:"createdAt,updatedAt,id,name,description,table,conditions,joins",id:n.id}).then(function(e){var n=[];if((s=e).joins)try{s.joins=JSON.parse(s.joins);for(var t=0;t<s.joins.length;t+=1)n.push(i.getColumns(s.joins[t].foreignTable))}catch(e){console.log(e)}return a.all(n)}).then(function(e){for(var n=0;n<e.length;n+=1)s.joins[n].foreignTableFields=_.difference(_.keys(e[n]),["$promise","$resolved"]);return s})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1203})}]},authenticate:!0,permissionId:1203,bodyClass:"analytics"})}e.$inject=["$stateProvider"],angular.module("app.analytics.reports",["ngJsTree"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.callysquare",{abstract:!0,url:"/callysquare"}).state("app.callysquare.odbcs",{url:"/odbcs",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/odbcs/odbcs.html",controller:"OdbcsController as vm"}},resolve:{odbcs:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareOdbc@get",{fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ODBC",fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1101})}]},authenticate:!0,permissionId:1101,bodyClass:"callysquare"}).state("app.callysquare.squareRecordings",{url:"/squareRecordings",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/squareRecordings/squareRecordings.html",controller:"SquareRecordingsController as vm"}},resolve:{squareRecordings:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareRecording@get",{fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SquareRecordings",fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadCallySquareRecordings",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1102})}]},authenticate:!0,permissionId:1102,bodyClass:"callysquare"}),n.addPart("app/main/apps/callysquare")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.callysquare",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.callysquare.projects"]).config(e)}(),function(){"use strict";function e(e){e.state("app.callysquare.projects",{url:"/projects",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/projects/projects.html",controller:"ProjectsController as vm"}},resolve:{projects:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareProject@get",{fields:"id,name,description,notes",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SquareProjects",fields:"id,name,description,notes",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1103})}]},authenticate:!0,permissionId:1103,bodyClass:"callysquare"}).state("app.callysquare.projects.edit",{url:"/:id",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/projects/edit/view.html",controller:"ProjectController as vm"}},params:{crudPermissions:void 0},resolve:{project:["apiResolver","$stateParams",function(e,n){return e.resolve("squareProject@get",{id:n.id})}],users:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,fullname,role",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Users",mergeResources:!0,fields:"id,fullname,role",sort:"name",nolimit:!0})}],trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",sort:"name",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",type:"inbound",fields:"id,name",sort:"name",nolimit:!0})}],sounds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("sound@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Sounds",fields:"id,name",sort:"name",nolimit:!0})}],variables:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("variable@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Variables",fields:"id,name",sort:"name",nolimit:!0})}],databases:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareOdbc@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ODBC",fields:"id,name",sort:"name",nolimit:!0})}],projects:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareProject@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SquareProjects",fields:"id,name",sort:"name",nolimit:!0})}],contexts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceContext@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Contexts",fields:"id,name",sort:"name",nolimit:!0})}],intervals:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("interval@get",{fields:"id,name,IntervalId",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Intervals",fields:"id,name,IntervalId",sort:"name",nolimit:!0})}],mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"id,name",sort:"name",nolimit:!0})}],templates:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("template@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Templates",fields:"id,name",sort:"name",nolimit:!0})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"name",nolimit:!0})}],smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"id,name",sort:"name",nolimit:!0})}],pauses:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("pause@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Pauses",fields:"id,name",sort:"name",nolimit:!0})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1103})}]},authenticate:!0,permissionId:1103,bodyClass:"callysquare"})}e.$inject=["$stateProvider"],angular.module("app.callysquare.projects",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.chat",{abstract:!0,url:"/chat"}).state("app.chat.chatQueues",{url:"/chatQueues",views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatQueues/chatQueues.html",controller:"ChatQueuesController as vm"}},resolve:{chatQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("chatQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:501,bodyClass:"chat"}).state("app.chat.chatQueues.edit",{url:"/:id?tab",params:{chatQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatQueues/edit/view.html",controller:"ChatQueueController as vm"}},resolve:{chatQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("chatQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:501,bodyClass:"chat"}).state("app.chat.chatWebsites",{url:"/chatWebsites",views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatWebsites/chatWebsites.html",controller:"ChatWebsitesController as vm"}},resolve:{chatWebsites:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("chatWebsite@get",{fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatWebsites",fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:502})}]},authenticate:!0,permissionId:502,bodyClass:"chat"}).state("app.chat.chatWebsites.edit",{url:"/:id?tab",params:{chatWebsite:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatWebsites/edit/view.html",controller:"ChatWebsiteController as vm"}},resolve:{chatWebsite:["apiResolver","$stateParams",function(e,n){return e.resolve("chatWebsite@get",{fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:502})}]},authenticate:!0,permissionId:502,bodyClass:"chat"}),n.addPart("app/main/apps/chat")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.chat",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.chat.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.chat.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/chat/views/realtime/realtime.html",controller:"ChatRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:510})}]},authenticate:!0,permissionId:510}).state("app.chat.realtime.agents",{url:"/agents",params:{channel:"chat"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:510}).state("app.chat.realtime.queues",{url:"/queues",controller:"QueuesChatRealtimeController as vm",templateUrl:"app/main/apps/chat/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"ChatQueues":void 0,channel:"chat",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:510})}e.$inject=["$stateProvider"],angular.module("app.chat.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.contactmanager",{abstract:!0,url:"/contactmanager"}).state("app.contactmanager.lists",{url:"/lists",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/lists/lists.html",controller:"ListsController as vm"}},resolve:{lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadContactManagerLists",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:301})}]},authenticate:!0,permissionId:301,bodyClass:"contactmanager"}).state("app.contactmanager.lists.edit",{url:"/:id?tab",params:{list:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/lists/edit/view.html",controller:"ListController as vm"}},resolve:{list:["apiResolver","$stateParams",function(e,n){return e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:301})}]},authenticate:!0,permissionId:301,bodyClass:"contactmanager"}).state("app.contactmanager.companies",{url:"/companies",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/companies/companies.html",controller:"CompaniesController as vm"}},resolve:{companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get",{fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies",fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:302})}]},authenticate:!0,permissionId:302,bodyClass:"contactmanager"}).state("app.contactmanager.companies.edit",{url:"/:id?tab",params:{company:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/companies/edit/view.html",controller:"CompanyController as vm"}},resolve:{company:["apiResolver","$stateParams",function(e,n){return e.resolve("cmCompany@get",{fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:302})}]},authenticate:!0,permissionId:302,bodyClass:"contactmanager"}).state("app.contactmanager.globalCustomFields",{url:"/globalCustomFields",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/globalCustomFields.html",controller:"GlobalCustomFieldsController as vm"}},resolve:{globalCustomFields:["apiResolver","Auth",function(e,n){return e.resolve("cmCustomField@get",{fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",sort:"-updatedAt",ListId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:304})}]},authenticate:!0,permissionId:304,bodyClass:"contactmanager"}),n.addPart("app/main/apps/contactmanager")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.contactmanager",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.contactmanager.contacts"]).config(e)}(),function(){"use strict";function e(e){e.state("app.contactmanager.contacts",{url:"/contacts?ListId&CompanyId",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/contacts/contacts.html",controller:"ContactsController as vm"}},resolve:{contacts:["apiResolver","Auth","$stateParams",function(e,n,t){return n.hasRole("admin")?e.resolve("cmContact@get",_.merge({includeAll:!0,sort:"-updatedAt",limit:10,offset:0},t)):e.resolve("userProfile@getResources",_.merge({id:n.getCurrentUser().userProfileId,section:"Contacts",includeAll:!0,sort:"-updatedAt",limit:10,offset:0},t))}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",nolimit:!0})}],listsMap:["lists",function(e){for(var n={},t=0;t<e.rows.length;t++)n[e.rows[t].id]=e.rows[t].name;return n}],companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies",fields:"id,name",sort:"name",nolimit:!0})}],companiesMap:["companies",function(e){for(var n={},t=0;t<e.rows.length;t++)n[e.rows[t].id]=e.rows[t].name;return n}],tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags",fields:"id,name",sort:"name",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:303})}]},authenticate:!0,permissionId:303,bodyClass:"contactmanager"}).state("app.contactmanager.contacts.edit",{url:"/:id?tab",params:{crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/contacts/edit/view.html",controller:"ContactController as vm"}},resolve:{contact:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@get",{id:n.id}).then(function(e){return e.dateOfBirth&&(e.dateOfBirth=new Date(e.dateOfBirth)),e}).catch(function(e){console.error(e)})}],hoppers:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHoppers",{id:n.id,fields:"id,phone,scheduledat,priority,recallme,VoiceQueueId,CampaignId,UserId",sort:"-updatedAt",limit:10,offset:0})}],finals:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHopperFinals",{id:n.id,fields:"id,uniqueid,calleridnum,statedesc,starttime,disposition",sort:"-updatedAt",limit:10,offset:0})}],histories:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHopperHistories",{id:n.id,fields:"id,uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-updatedAt",limit:10,offset:0})}],jscriptySessions:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getJscriptySessions",{id:n.id,fields:"id,starttime,endtime,membername,projectname",sort:"-starttime",limit:10,offset:0})}],companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get"):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies"})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",nolimit:!0})}],customFields:["apiResolver","contact",function(e,n){return n.ListId?e.resolve("cmList@getCustomFields",{id:n.ListId}):null}],tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{sort:"name"}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:303})}]},authenticate:!0,permissionId:303,bodyClass:"contactmanager"})}e.$inject=["$stateProvider"],angular.module("app.contactmanager.contacts",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.dashboards",{abstract:!0,url:"/dashboards"}),n.addPart("app/main/apps/dashboards")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.dashboards",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.dashboards.general","app.dashboards.custom"]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.custom",{url:"/custom/:id",views:{"content@app":{templateUrl:"app/main/apps/dashboards/views/custom/custom.html",controller:"DashboardCustomController as vm"}},resolve:{voiceQueues:["apiResolver","Auth",function(n,e){var a;return(e.hasRole("admin")?n.resolve("voiceQueue@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"VoiceQueues",mergeResources:!0,fields:"id,name",channel:"voice",nolimit:!0})).then(function(e){return a=e,n.resolve("rpc@getVoiceQueues")}).then(function(e){if(e)for(var n,t=0;t<e.rows.length;t+=1)(n=_.find(a.rows,{id:e.rows[t].id}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged","abandoned"]));return a})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:100})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.custom",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.general",{url:"/general",views:{"content@app":{templateProvider:["$stateParams","$templateFactory","Auth",function(e,n,t){return t.isAgent()?n.fromUrl("app/main/apps/dashboards/views/general/agent/agent.general.html",e):n.fromUrl("app/main/apps/dashboards/views/general/user/user.general.html",e)}],controllerProvider:["Auth",function(e){return e.isAgent()?"AgentDashboardGeneralController as vm":"UserDashboardGeneralController as vm"}]}},resolve:{globalUserLists:["apiResolver","Auth",function(e,n){return e.resolve("user@getLists",{id:n.getCurrentUser().id,sort:"name",nolimit:!0})}],globalLists:["apiResolver",function(e){return e.resolve("cmList@get",{sort:"name",nolimit:!0})}],globalTags:["apiResolver",function(e){return e.resolve("tag@get",{sort:"name",nolimit:!0})}],globalCompanies:["apiResolver",function(e){return e.resolve("cmCompany@get",{sort:"name",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.general",["ngMaterialDateRangePicker","app.dashboards.general.user"]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.general.voice",{url:"/voice",data:{selectedTab:0},views:{voice:{templateUrl:"app/main/apps/dashboards/views/general/user/voice/user.general.voice.html",controller:"UserVoiceDashboardGeneralController as vm"}},resolve:{rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}],inboundQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"inbound",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",fields:"id,name",type:"inbound",channel:"voice",nolimit:!0})}],outbound:["apiResolver",function(e){return e.resolve("rpc@getOutbound")}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.dialer",{url:"/dialer",data:{selectedTab:1},views:{dialer:{templateUrl:"app/main/apps/dashboards/views/general/user/dialer/user.general.dialer.html",controller:"UserVoiceDashboardDialerController as vm"}},resolve:{rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}],outboundQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"outbound",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",fields:"id,name",type:"outbound",channel:"voice",nolimit:!0})}],rpcCampaigns:["apiResolver",function(e){return e.resolve("rpc@getCampaigns")}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.chat",{url:"/chat",data:{selectedTab:2},views:{chat:{templateUrl:"app/main/apps/dashboards/views/general/user/chat/user.general.chat.html",controller:"UserChatDashboardGeneralController as vm"}},resolve:{chatInteractions:["apiResolver",function(e){return e.resolve("chatInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],chatWebsites:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("chatWebsite@get",{fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,header_offline,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardTranscript,forwardOffline,forwardOfflineAddress,IntervalId,timezone,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatWebsites",fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,header_offline,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardTranscript,forwardOffline,forwardOfflineAddress,IntervalId,timezone,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.mail",{url:"/mail",data:{selectedTab:3},views:{mail:{templateUrl:"app/main/apps/dashboards/views/general/user/mail/user.general.mail.html",controller:"UserMailDashboardGeneralController as vm"}},resolve:{mailInteractions:["apiResolver",function(e){return e.resolve("mailInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.sms",{url:"/sms",data:{selectedTab:4},views:{sms:{templateUrl:"app/main/apps/dashboards/views/general/user/sms/user.general.sms.html",controller:"UserSmsDashboardGeneralController as vm"}},resolve:{smsInteractions:["apiResolver",function(e){return e.resolve("smsInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,smsMethod,applicationId,accountId,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,smsMethod,applicationId,accountId,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.openchannel",{url:"/openchannel",data:{selectedTab:5},views:{openchannel:{templateUrl:"app/main/apps/dashboards/views/general/user/openchannel/user.general.openchannel.html",controller:"UserOpenchannelDashboardGeneralController as vm"}},resolve:{openchannelInteractions:["apiResolver",function(e){return e.resolve("openchannelInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],openchannelAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,description,receiveUri,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelAccounts",fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,description,receiveUri,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.fax",{url:"/fax",data:{selectedTab:6},views:{fax:{templateUrl:"app/main/apps/dashboards/views/general/user/fax/user.general.fax.html",controller:"UserFaxDashboardGeneralController as vm"}},resolve:{faxInteractions:["apiResolver",function(e){return e.resolve("faxInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.whatsapp",{url:"/whatsapp",data:{selectedTab:7},views:{whatsapp:{templateUrl:"app/main/apps/dashboards/views/general/user/whatsapp/user.general.whatsapp.html",controller:"UserWhatsappDashboardGeneralController as vm"}},resolve:{whatsappInteractions:["apiResolver",function(e){return e.resolve("whatsappInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],whatsappAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,whatsappMethod,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappAccounts",fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,whatsappMethod,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.general.user",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.fax",{abstract:!0,url:"/fax"}).state("app.fax.faxQueues",{url:"/faxQueues",views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxQueues/faxQueues.html",controller:"FaxQueuesController as vm"}},resolve:{faxQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:901,bodyClass:"fax"}).state("app.fax.faxQueues.edit",{url:"/:id?tab",params:{faxQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxQueues/edit/view.html",controller:"FaxQueueController as vm"}},resolve:{faxQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("faxQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:901,bodyClass:"fax"}).state("app.fax.faxAccounts",{url:"/faxAccounts",views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxAccounts/faxAccounts.html",controller:"FaxAccountsController as vm"}},resolve:{faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}]},authenticate:!0,permissionId:902,bodyClass:"fax"}).state("app.fax.faxAccounts.edit",{url:"/:id?tab",params:{faxAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxAccounts/edit/view.html",controller:"FaxAccountController as vm"}},resolve:{faxAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("faxAccount@get",{fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}]},authenticate:!0,permissionId:902,bodyClass:"fax"}),n.addPart("app/main/apps/fax")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.fax",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.fax.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.fax.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/fax/views/realtime/realtime.html",controller:"FaxRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:910})}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.agents",{url:"/agents",params:{channel:"fax"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.trunks",{url:"/trunks",controller:"TrunksFaxRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/trunks/view.html",resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}],rpcTrunks:["apiResolver",function(e){return e.resolve("rpc@getTrunks")}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.queues",{url:"/queues",controller:"QueuesFaxRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"FaxQueues":void 0,channel:"fax",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.accounts",{url:"/accounts",controller:"FaxAccountsRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/accounts/view.html",resolve:{faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}],rpcFaxAccounts:["apiResolver",function(e){return e.resolve("rpc@getFaxAccounts")}]},authenticate:!0,permissionId:910})}e.$inject=["$stateProvider"],angular.module("app.fax.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.help",{abstract:!0,url:"/help"}),n.addPart("app/main/apps/help")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.help",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.help.about"]).config(e)}(),function(){"use strict";function e(e){e.state("app.help.about",{url:"/about",views:{"content@app":{templateUrl:"app/main/apps/help/views/about/about.html",controller:"AboutController as vm"}},resolve:{info:["apiResolver",function(e){return e.resolve("version@get")}]},authenticate:!0,permissionId:1600,bodyClass:"help"})}e.$inject=["$stateProvider"],angular.module("app.help.about",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.integrations",{abstract:!0,url:"/integrations"}).state("app.integrations.zendeskAccounts",{url:"/zendeskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zendeskAccounts/zendeskAccounts.html",controller:"ZendeskAccountsController as vm"}},resolve:{zendeskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intZendeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ZendeskAccounts",fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1301})}]},authenticate:!0,permissionId:1301,bodyClass:"integrations"}).state("app.integrations.zendeskAccounts.edit",{url:"/:id?tab",params:{zendeskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/view.html",controller:"ZendeskAccountController as vm"}},resolve:{zendeskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intZendeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1301})}]},authenticate:!0,permissionId:1301,bodyClass:"integrations"}).state("app.integrations.salesforceAccounts",{url:"/salesforceAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/salesforceAccounts/salesforceAccounts.html",controller:"SalesforceAccountsController as vm"}},resolve:{salesforceAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intSalesforceAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SalesforceAccounts",fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1302})}]},authenticate:!0,permissionId:1302,bodyClass:"integrations"}).state("app.integrations.salesforceAccounts.edit",{url:"/:id?tab",params:{salesforceAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/view.html",controller:"SalesforceAccountController as vm"}},resolve:{salesforceAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intSalesforceAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1302})}]},authenticate:!0,permissionId:1302,bodyClass:"integrations"}).state("app.integrations.freshdeskAccounts",{url:"/freshdeskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/freshdeskAccounts.html",controller:"FreshdeskAccountsController as vm"}},resolve:{freshdeskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intFreshdeskAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FreshdeskAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1303})}]},authenticate:!0,permissionId:1303,bodyClass:"integrations"}).state("app.integrations.freshdeskAccounts.edit",{url:"/:id?tab",params:{freshdeskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/view.html",controller:"FreshdeskAccountController as vm"}},resolve:{freshdeskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intFreshdeskAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1303})}]},authenticate:!0,permissionId:1303,bodyClass:"integrations"}).state("app.integrations.sugarcrmAccounts",{url:"/sugarcrmAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/sugarcrmAccounts.html",controller:"SugarcrmAccountsController as vm"}},resolve:{sugarcrmAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intSugarcrmAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SugarcrmAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1305})}]},authenticate:!0,permissionId:1305,bodyClass:"integrations"}).state("app.integrations.sugarcrmAccounts.edit",{url:"/:id?tab",params:{sugarcrmAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/view.html",controller:"SugarcrmAccountController as vm"}},resolve:{sugarcrmAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intSugarcrmAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1305})}]},authenticate:!0,permissionId:1305,bodyClass:"integrations"}).state("app.integrations.deskAccounts",{url:"/deskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/deskAccounts/deskAccounts.html",controller:"DeskAccountsController as vm"}},resolve:{deskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intDeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"DeskAccounts",fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1306})}]},authenticate:!0,permissionId:1306,bodyClass:"integrations"}).state("app.integrations.deskAccounts.edit",{url:"/:id?tab",params:{deskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/view.html",controller:"DeskAccountController as vm"}},resolve:{deskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intDeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1306})}]},authenticate:!0,permissionId:1306,bodyClass:"integrations"}).state("app.integrations.zohoAccounts",{url:"/zohoAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zohoAccounts/zohoAccounts.html",controller:"ZohoAccountsController as vm"}},resolve:{zohoAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intZohoAccount@get",{fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ZohoAccounts",fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1307})}]},authenticate:!0,permissionId:1307,bodyClass:"integrations"}).state("app.integrations.zohoAccounts.edit",{url:"/:id?tab",params:{zohoAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/view.html",controller:"ZohoAccountController as vm"}},resolve:{zohoAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intZohoAccount@get",{fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1307})}]},authenticate:!0,permissionId:1307,bodyClass:"integrations"}).state("app.integrations.vtigerAccounts",{url:"/vtigerAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/vtigerAccounts/vtigerAccounts.html",controller:"VtigerAccountsController as vm"}},resolve:{vtigerAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intVtigerAccount@get",{fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VtigerAccounts",fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1308})}]},authenticate:!0,permissionId:1308,bodyClass:"integrations"}).state("app.integrations.vtigerAccounts.edit",{url:"/:id?tab",params:{vtigerAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/view.html",controller:"VtigerAccountController as vm"}},resolve:{vtigerAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intVtigerAccount@get",{fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1308})}]},authenticate:!0,permissionId:1308,bodyClass:"integrations"}).state("app.integrations.dynamics365Accounts",{url:"/dynamics365Accounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/dynamics365Accounts.html",controller:"Dynamics365AccountsController as vm"}},resolve:{dynamics365Accounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intDynamics365Account@get",{fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dynamics365Accounts",fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1309})}]},authenticate:!0,permissionId:1309,bodyClass:"integrations"}).state("app.integrations.dynamics365Accounts.edit",{url:"/:id?tab",params:{dynamics365Account:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/view.html",controller:"Dynamics365AccountController as vm"}},resolve:{dynamics365Account:["apiResolver","$stateParams",function(e,n){return e.resolve("intDynamics365Account@get",{fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1309})}]},authenticate:!0,permissionId:1309,bodyClass:"integrations"}).state("app.integrations.servicenowAccounts",{url:"/servicenowAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/servicenowAccounts/servicenowAccounts.html",controller:"ServicenowAccountsController as vm"}},resolve:{servicenowAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intServicenowAccount@get",{fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ServicenowAccounts",fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1310})}]},authenticate:!0,permissionId:1310,bodyClass:"integrations"}).state("app.integrations.servicenowAccounts.edit",{url:"/:id?tab",params:{servicenowAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/view.html",controller:"ServicenowAccountController as vm"}},resolve:{servicenowAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intServicenowAccount@get",{fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1310})}]},authenticate:!0,permissionId:1310,bodyClass:"integrations"}).state("app.integrations.freshsalesAccounts",{url:"/freshsalesAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/freshsalesAccounts.html",controller:"FreshsalesAccountsController as vm"}},resolve:{freshsalesAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intFreshsalesAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FreshsalesAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1304})}]},authenticate:!0,permissionId:1304,bodyClass:"integrations"}).state("app.integrations.freshsalesAccounts.edit",{url:"/:id?tab",params:{freshsalesAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/view.html",controller:"FreshsalesAccountController as vm"}},resolve:{freshsalesAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intFreshsalesAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1304})}]},authenticate:!0,permissionId:1304,bodyClass:"integrations"}),n.addPart("app/main/apps/integrations")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.integrations",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.jscripty",{abstract:!0,url:"/jscripty"}).state("app.jscripty.projects",{url:"/projects",views:{"content@app":{templateUrl:"app/main/apps/jscripty/views/projects/projects.html",controller:"JscriptyProjectsController as vm"}},resolve:{projects:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("jscriptyProject@get",{fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Projects",fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadJscriptySessions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1701})}]},authenticate:!0,permissionId:1701,bodyClass:"jscripty"}).state("app.jscripty.projects.edit",{url:"/:id?tab",params:{project:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/jscripty/views/projects/edit/view.html",controller:"JscriptyProjectController as vm"}},resolve:{project:["apiResolver","$stateParams",function(e,n){return e.resolve("jscriptyProject@get",{fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadJscriptySessions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1701})}]},authenticate:!0,permissionId:1701,bodyClass:"jscripty"}),n.addPart("app/main/apps/jscripty")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.jscripty",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.mail",{abstract:!0,url:"/mail"}).state("app.mail.mailQueues",{url:"/mailQueues",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailQueues/mailQueues.html",controller:"MailQueuesController as vm"}},resolve:{mailQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:601,bodyClass:"mail"}).state("app.mail.mailQueues.edit",{url:"/:id?tab",params:{mailQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailQueues/edit/view.html",controller:"MailQueueController as vm"}},resolve:{mailQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("mailQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:601,bodyClass:"mail"}).state("app.mail.mailAccounts",{url:"/mailAccounts",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailAccounts/mailAccounts.html",controller:"MailAccountsController as vm"}},resolve:{mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}]},authenticate:!0,permissionId:602,bodyClass:"mail"}).state("app.mail.mailAccounts.edit",{url:"/:id?tab",params:{mailAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailAccounts/edit/view.html",controller:"MailAccountController as vm"}},resolve:{mailAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}]},authenticate:!0,permissionId:602,bodyClass:"mail"}).state("app.mail.mailSubtatuses",{url:"/mailSubtatuses",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailSubtatuses/mailSubtatuses.html",controller:"MailSubstatusesController as vm"}},resolve:{mailSubtatuses:["apiResolver","Auth",function(e,n){return e.resolve("mailSubstatus@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:603})}]},authenticate:!0,permissionId:603,bodyClass:"mail"}),n.addPart("app/main/apps/mail")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.mail",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.mail.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.mail.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/mail/views/realtime/realtime.html",controller:"MailRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:610})}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.agents",{url:"/agents",params:{channel:"mail"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.queues",{url:"/queues",controller:"QueuesMailRealtimeController as vm",templateUrl:"app/main/apps/mail/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"MailQueues":void 0,channel:"mail",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.accounts",{url:"/accounts",controller:"MailAccountsRealtimeController as vm",templateUrl:"app/main/apps/mail/views/realtime/accounts/view.html",resolve:{mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}],rpcMailAccounts:["apiResolver",function(e){return e.resolve("rpc@getMailAccounts")}]},authenticate:!0,permissionId:610})}e.$inject=["$stateProvider"],angular.module("app.mail.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.marketplace",{abstract:!0,url:"/marketplace"}).state("app.marketplace.plugins",{url:"/plugins",views:{"content@app":{templateUrl:"app/main/apps/marketplace/views/plugins/plugins.html",controller:"MarketplacePluginsController as vm"}},resolve:{plugins:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("plugin@get",{fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Plugins",fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1801})}]},authenticate:!0,permissionId:1801,bodyClass:"marketplace"}).state("app.marketplace.plugins.edit",{url:"/:id?tab",params:{plugin:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/marketplace/views/plugins/edit/view.html",controller:"MarketplacePluginController as vm"}},resolve:{plugin:["apiResolver","$stateParams",function(e,n){return e.resolve("plugin@get",{fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1801})}]},authenticate:!0,permissionId:1801,bodyClass:"marketplace"}),n.addPart("app/main/apps/marketplace")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.marketplace",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.motiondialer",{abstract:!0,url:"/motiondialer"}).state("app.motiondialer.queueCampaigns",{url:"/queueCampaigns",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/queueCampaigns.html",controller:"QueueCampaignsController as vm"}},resolve:{queueCampaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1501,bodyClass:"motiondialer"}).state("app.motiondialer.queueCampaigns.edit",{url:"/:id?tab",params:{queueCampaign:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/view.html",controller:"QueueCampaignController as vm"}},resolve:{queueCampaign:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1501,bodyClass:"motiondialer"}).state("app.motiondialer.ivrCampaigns",{url:"/ivrCampaigns",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/ivrCampaigns.html",controller:"IvrCampaignsController as vm"}},resolve:{ivrCampaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("campaign@get",{fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"IvrCampaigns",fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}]},authenticate:!0,permissionId:1502,bodyClass:"motiondialer"}).state("app.motiondialer.ivrCampaigns.edit",{url:"/:id?tab",params:{ivrCampaign:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/view.html",controller:"IvrCampaignController as vm"}},resolve:{ivrCampaign:["apiResolver","$stateParams",function(e,n){return e.resolve("campaign@get",{fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}]},authenticate:!0,permissionId:1502,bodyClass:"motiondialer"}),n.addPart("app/main/apps/motiondialer")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.motiondialer",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.motiondialer.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.motiondialer.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/realtime/realtime.html",controller:"MotionDialerRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1510})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.agents",{url:"/agents",params:{channel:"voice",direction:"outbound"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queues",{url:"/queues",controller:"QueuesMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"QueueCampaigns":void 0,channel:"voice",type:"outbound",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queue_calls",{url:"/queue_calls",controller:"QueueCallsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queue_calls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}],rpcVoiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels")}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.abandonedcalls",{url:"/abandonedcalls",controller:"AbandonedCallsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/abandonedcalls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"createdAt,updatedAt,id,name",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queue_params",{url:"/queue_params",controller:"QueueParamsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queue_params/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.ivr_campaigns",{url:"/ivr_campaigns",controller:"IvrCampaignsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/ivr_campaigns/view.html",resolve:{campaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("campaign@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"IvrCampaigns",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}],rpcCampaigns:["apiResolver",function(e){return e.resolve("rpc@getCampaigns")}]},authenticate:!0,permissionId:1510})}e.$inject=["$stateProvider"],angular.module("app.motiondialer.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.openchannel",{abstract:!0,url:"/openchannel"}).state("app.openchannel.openchannelQueues",{url:"/openchannelQueues",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelQueues/openchannelQueues.html",controller:"OpenchannelQueuesController as vm"}},resolve:{openchannelQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:801,bodyClass:"openchannel"}).state("app.openchannel.openchannelQueues.edit",{url:"/:id?tab",params:{openchannelQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/view.html",controller:"OpenchannelQueueController as vm"}},resolve:{openchannelQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("openchannelQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:801,bodyClass:"openchannel"}).state("app.openchannel.openchannelAccounts",{url:"/openchannelAccounts",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/openchannelAccounts.html",controller:"OpenchannelAccountsController as vm"}},resolve:{openchannelAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelAccounts",fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:802})}]},authenticate:!0,permissionId:802,bodyClass:"openchannel"}).state("app.openchannel.openchannelAccounts.edit",{url:"/:id?tab",params:{openchannelAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/view.html",controller:"OpenchannelAccountController as vm"}},resolve:{openchannelAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:802})}]},authenticate:!0,permissionId:802,bodyClass:"openchannel"}),n.addPart("app/main/apps/openchannel")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.openchannel",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.openchannel.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.openchannel.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/realtime/realtime.html",controller:"OpenchannelRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:810})}]},authenticate:!0,permissionId:810}).state("app.openchannel.realtime.agents",{url:"/agents",params:{channel:"openchannel"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:810}).state("app.openchannel.realtime.queues",{url:"/queues",controller:"QueuesOpenchannelRealtimeController as vm",templateUrl:"app/main/apps/openchannel/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"OpenchannelQueues":void 0,channel:"openchannel",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:810})}e.$inject=["$stateProvider"],angular.module("app.openchannel.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.plugins",{abstract:!0,url:"/plugins"}),n.addPart("app/main/apps/plugins")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.plugins",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.plugins.plugin"]).config(e)}(),function(){"use strict";function e(e){e.state("app.plugins.plugin",{url:"/plugin/:id",views:{"content@app":{templateUrl:"app/main/apps/plugins/views/plugin/plugin.html",controller:"PluginController as vm"}},resolve:{},authenticate:!0,bodyClass:"plugins"})}e.$inject=["$stateProvider"],angular.module("app.plugins.plugin",[]).config(e)}(),function(){"use strict";angular.module("app.realtime",[])}(),function(){"use strict";function e(e,n,t,a){e.state("app.settings",{abstract:!0,url:"/settings"}).state("app.settings.generals",{url:"/generals",views:{"content@app":{templateUrl:"app/main/apps/settings/views/generals/generals.html",controller:"GeneralsController as vm"}},resolve:{generals:["apiResolver",function(e){return e.resolve("setting@get",{fields:"createdAt,updatedAt,id,min_internal,securePassword,callRecordingEncryption,chatTimeout,phoneBarAutoUpdater,defaultScreenRecordingPath,phoneBarAutoUpdaterUrl,enableEmailPreview,split,splitSizeCsv,splitSizePdf,splitSizeXlsx,searchOnEnterKey,messagesAlignment,phoneBarRememberMeEnabled,rtlSupport,allowedLoginAttempts,blockDuration,loginMailFrequency,language,bucket,transcribe,transcribeRegion,transcribeAccountId,sentiment,sentimentRegion,sentimentAccountId,googleSsoEnabled,enforcePasswordHistory,passwordHistoryLimit,enablePrivacyPolicyEmail,privacyPolicyEmail,enablePrivacyPolicyName,privacyPolicyName,enablePrivacyPolicyNumber,privacyPolicyNumber,chatInteractionsReloadTimeout,mailInteractionsReloadTimeout,openchannelInteractionsReloadTimeout,smsInteractionsReloadTimeout,whatsappInteractionsReloadTimeout,stopRecordingOnTransfer",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.smtps",{url:"/smtps",views:{"content@app":{templateUrl:"app/main/apps/settings/views/smtps/smtps.html",controller:"SmtpController as vm"}},resolve:{smtps:["apiResolver",function(e){return e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,service,name,email,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,description",service:"1",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.networks",{url:"/networks",views:{"content@app":{templateUrl:"app/main/apps/settings/views/networks/networks.html",controller:"NetworksController as vm"}},resolve:{networks:["apiResolver",function(e){return e.resolve("network@get",{fields:"createdAt,updatedAt,id,type,value,username,password",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.customizations",{url:"/customizations",views:{"content@app":{templateUrl:"app/main/apps/settings/views/customizations/customizations.html",controller:"CustomizationsController as vm"}},resolve:{customizations:["apiResolver",function(e){return e.resolve("setting@get",{fields:"createdAt,updatedAt,id,defaultLogo,defaultLoginLogo,defaultFavicon,defaultHeaderWhiteLabel,headerWhiteLabel,defaultPageTitle,pageTitle,defaultPreferred",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.cloudProviders",{url:"/cloudProviders",views:{"content@app":{templateUrl:"app/main/apps/settings/views/cloudProviders/cloudProviders.html",controller:"CloudProvidersController as vm"}},resolve:{cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"createdAt,updatedAt,id,name,service,data2,data1",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}),n.addPart("app/main/apps/settings")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.settings",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.settings.updates","app.settings.license","app.settings.system"]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.license",{url:"/license",views:{"content@app":{templateUrl:"app/main/apps/settings/views/license/license.html",controller:"LicenseController as vm"}},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.license",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.system",{url:"/system?tab",views:{"content@app":{templateUrl:"app/main/apps/settings/views/system/system.html",controller:"SystemController as vm"}},resolve:{system:["apiResolver",function(e){return e.resolve("system@get")}],processes:["apiResolver",function(e){return e.resolve("pm2@get")}]},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.system",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.updates",{url:"/updates",views:{"content@app":{templateUrl:"app/main/apps/settings/views/updates/updates.html",controller:"UpdatesController as vm"}},resolve:{version:["apiResolver",function(e){return e.resolve("version@get",{latest:!0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1400})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.updates",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.sms",{abstract:!0,url:"/sms"}).state("app.sms.smsQueues",{url:"/smsQueues",views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsQueues/smsQueues.html",controller:"SmsQueuesController as vm"}},resolve:{smsQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:701,bodyClass:"sms"}).state("app.sms.smsQueues.edit",{url:"/:id?tab",params:{smsQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsQueues/edit/view.html",controller:"SmsQueueController as vm"}},resolve:{smsQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("smsQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:701,bodyClass:"sms"}).state("app.sms.smsAccounts",{url:"/smsAccounts",views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsAccounts/smsAccounts.html",controller:"SmsAccountsController as vm"}},resolve:{smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:702})}]},authenticate:!0,permissionId:702,bodyClass:"sms"}).state("app.sms.smsAccounts.edit",{url:"/:id?tab",params:{smsAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsAccounts/edit/view.html",controller:"SmsAccountController as vm"}},resolve:{smsAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:702})}]},authenticate:!0,permissionId:702,bodyClass:"sms"}),n.addPart("app/main/apps/sms")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.sms",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.sms.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.sms.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/sms/views/realtime/realtime.html",controller:"SmsRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:710})}]},authenticate:!0,permissionId:710}).state("app.sms.realtime.agents",{url:"/agents",params:{channel:"sms"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:710}).state("app.sms.realtime.queues",{url:"/queues",controller:"QueuesSmsRealtimeController as vm",templateUrl:"app/main/apps/sms/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"SmsQueues":void 0,channel:"sms",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:710})}e.$inject=["$stateProvider"],angular.module("app.sms.realtime",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.staff",{abstract:!0,url:"/staff"}).state("app.staff.users",{url:"/users",views:{"content@app":{templateUrl:"app/main/apps/staff/views/users/users.html",controller:"UsersController as vm"}},resolve:{users:["apiResolver",function(e){return e.resolve("user@get",{fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked",role:"admin,user",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:201})}]},authenticate:!0,permissionId:201,bodyClass:"staff"}).state("app.staff.users.edit",{url:"/:id?tab",params:{user:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/users/edit/view.html",controller:"UserController as vm"}},resolve:{user:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:201})}]},authenticate:!0,permissionId:201,bodyClass:"staff"}).state("app.staff.agents",{url:"/agents",views:{"content@app":{templateUrl:"app/main/apps/staff/views/agents/agents.html",controller:"AgentsController as vm"}},resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls",role:"agent",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls",role:"agent",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:202,bodyClass:"staff"}).state("app.staff.agents.edit",{url:"/:id?tab",params:{agent:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/agents/edit/view.html",controller:"AgentController as vm"}},resolve:{agent:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:202,bodyClass:"staff"}).state("app.staff.telephones",{url:"/telephones",views:{"content@app":{templateUrl:"app/main/apps/staff/views/telephones/telephones.html",controller:"TelephonesController as vm"}},resolve:{telephones:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Telephones",fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}]},authenticate:!0,permissionId:203,bodyClass:"staff"}).state("app.staff.telephones.edit",{url:"/:id?tab",params:{telephone:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/telephones/edit/view.html",controller:"TelephoneController as vm"}},resolve:{telephone:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}]},authenticate:!0,permissionId:203,bodyClass:"staff"}).state("app.staff.teams",{url:"/teams",views:{"content@app":{templateUrl:"app/main/apps/staff/views/teams/teams.html",controller:"TeamsController as vm"}},resolve:{teams:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("team@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Teams",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:204})}]},authenticate:!0,permissionId:204,bodyClass:"staff"}).state("app.staff.userProfiles",{url:"/userProfiles",views:{"content@app":{templateUrl:"app/main/apps/staff/views/userProfiles/userProfiles.html",controller:"UserProfilesController as vm"}},resolve:{userProfiles:["apiResolver",function(e){return e.resolve("userProfile@get",{fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:205})}]},authenticate:!0,permissionId:205,bodyClass:"staff"}).state("app.staff.userProfiles.edit",{url:"/:id?tab",params:{userProfile:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/userProfiles/edit/view.html",controller:"UserProfileController as vm"}},resolve:{userProfile:["apiResolver","$stateParams",function(e,n){return e.resolve("userProfile@get",{fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:205})}]},authenticate:!0,permissionId:205,bodyClass:"staff"}),n.addPart("app/main/apps/staff")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.staff",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.tools",{abstract:!0,url:"/tools"}).state("app.tools.cannedAnswers",{url:"/cannedAnswers",views:{"content@app":{templateUrl:"app/main/apps/tools/views/cannedAnswers/cannedAnswers.html",controller:"CannedAnswersController as vm"}},resolve:{cannedAnswers:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cannedAnswer@get",{fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"CannedAnswers",fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1001})}]},authenticate:!0,permissionId:1001,bodyClass:"tools"}).state("app.tools.customDashboards",{url:"/customDashboards",views:{"content@app":{templateUrl:"app/main/apps/tools/views/customDashboards/customDashboards.html",controller:"CustomDashboardsController as vm"}},resolve:{customDashboards:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("dashboard@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"CustomDashboards",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1003})}]},authenticate:!0,permissionId:1003,bodyClass:"tools"}).state("app.tools.customDashboards.edit",{url:"/:id?tab",params:{customDashboard:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/customDashboards/edit/view.html",controller:"CustomDashboardController as vm"}},resolve:{customDashboard:["apiResolver","$stateParams",function(e,n){return e.resolve("dashboard@get",{fields:"createdAt,updatedAt,id,name,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1003})}]},authenticate:!0,permissionId:1003,bodyClass:"tools"}).state("app.tools.intervals",{url:"/intervals",views:{"content@app":{templateUrl:"app/main/apps/tools/views/intervals/intervals.html",controller:"IntervalsController as vm"}},resolve:{intervals:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("interval@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Intervals",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1004})}]},authenticate:!0,permissionId:1004,bodyClass:"tools"}).state("app.tools.intervals.edit",{url:"/:id?tab",params:{interval:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/intervals/edit/view.html",controller:"IntervalController as vm"}},resolve:{interval:["apiResolver","$stateParams",function(e,n){return e.resolve("interval@get",{fields:"createdAt,updatedAt,id,name,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1004})}]},authenticate:!0,permissionId:1004,bodyClass:"tools"}).state("app.tools.pauses",{url:"/pauses",views:{"content@app":{templateUrl:"app/main/apps/tools/views/pauses/pauses.html",controller:"PausesController as vm"}},resolve:{pauses:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("pause@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Pauses",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1005})}]},authenticate:!0,permissionId:1005,bodyClass:"tools"}).state("app.tools.schedules",{url:"/schedules",views:{"content@app":{templateUrl:"app/main/apps/tools/views/schedules/schedules.html",controller:"SchedulesController as vm"}},resolve:{schedules:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("schedule@get",{fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Scheduler",fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1006})}]},authenticate:!0,permissionId:1006,bodyClass:"tools"}).state("app.tools.sounds",{url:"/sounds",views:{"content@app":{templateUrl:"app/main/apps/tools/views/sounds/sounds.html",controller:"SoundsController as vm"}},resolve:{sounds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("sound@get",{fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Sounds",fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1007})}]},authenticate:!0,permissionId:1007,bodyClass:"tools"}).state("app.tools.tags",{url:"/tags",views:{"content@app":{templateUrl:"app/main/apps/tools/views/tags/tags.html",controller:"TagsController as vm"}},resolve:{tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{fields:"createdAt,updatedAt,id,name,description,color",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags",fields:"createdAt,updatedAt,id,name,description,color",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1008})}]},authenticate:!0,permissionId:1008,bodyClass:"tools"}).state("app.tools.templates",{url:"/templates",views:{"content@app":{templateUrl:"app/main/apps/tools/views/templates/templates.html",controller:"TemplatesController as vm"}},resolve:{templates:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("template@get",{fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Templates",fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1009})}]},authenticate:!0,permissionId:1009,bodyClass:"tools"}).state("app.tools.trunks",{url:"/trunks",views:{"content@app":{templateUrl:"app/main/apps/tools/views/trunks/trunks.html",controller:"TrunksController as vm"}},resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}]},authenticate:!0,permissionId:1011,bodyClass:"tools"}).state("app.tools.trunks.edit",{url:"/:id?tab",params:{trunk:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/trunks/edit/view.html",controller:"TrunkController as vm"}},resolve:{trunk:["apiResolver","$stateParams",function(e,n){return e.resolve("trunk@get",{fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}]},authenticate:!0,permissionId:1011,bodyClass:"tools"}).state("app.tools.variables",{url:"/variables",views:{"content@app":{templateUrl:"app/main/apps/tools/views/variables/variables.html",controller:"VariablesController as vm"}},resolve:{variables:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("variable@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Variables",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1012})}]},authenticate:!0,permissionId:1012,bodyClass:"tools"}),n.addPart("app/main/apps/tools")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.tools",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.tools.dispositions","app.tools.triggers"]).config(e)}(),function(){"use strict";function e(e){e.state("app.tools.dispositions",{url:"/dispositions",views:{"content@app":{templateUrl:"app/main/apps/tools/views/dispositions/dispositions.html",controller:"DispositionsController as vm"}},resolve:{dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1002})}]},authenticate:!0,permissionId:1002,bodyClass:"tools"})}e.$inject=["$stateProvider"],angular.module("app.tools.dispositions",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.tools.triggers",{url:"/triggers",views:{"content@app":{templateUrl:"app/main/apps/tools/views/triggers/triggers.html",controller:"TriggersController as vm"}},resolve:{triggers:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trigger@get",{fields:"createdAt,updatedAt,id,name,channel,status,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Triggers",fields:"createdAt,updatedAt,id,name,channel,status,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1010})}]},authenticate:!0,permissionId:1010,bodyClass:"tools"}).state("app.tools.triggers.edit",{url:"/:id?tab",params:{trigger:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/triggers/edit/view.html",controller:"TriggerController as vm"}},resolve:{trigger:["apiResolver","$stateParams",function(e,n){return e.resolve("trigger@get",{fields:"createdAt,updatedAt,id,name,channel,status,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1010})}]},authenticate:!0,permissionId:1010,bodyClass:"tools"})}e.$inject=["$stateProvider"],angular.module("app.tools.triggers",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.video",{abstract:!0,url:"/video"}).state("app.video.screenRecordings",{url:"/screenRecordings",views:{"content@app":{templateUrl:"app/main/apps/video/views/screenRecordings/screenRecordings.html",controller:"ScreenRecordingsController as vm"}},resolve:{screenRecordings:["apiResolver","Auth","msUtils",function(e,n,t){return n.hasRole("admin")?e.resolve("screenRecording@get",{fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:t.firstLastDayMonth(),includeAll:"true",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ScreenRecordings",fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:t.firstLastDayMonth(),includeAll:"true",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadScreenRecordings",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2001})}]},authenticate:!0,permissionId:2001,bodyClass:"video"}),n.addPart("app/main/apps/video")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.video",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.inboundRoutes",{url:"/inboundRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/inboundRoutes/inboundRoutes.html",controller:"InboundRoutesController as vm"}},resolve:{inboundRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"InboundRoutes",fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:402})}]},authenticate:!0,permissionId:402,bodyClass:"voice"}).state("app.voice.inboundRoutes.edit",{url:"/:id?tab",params:{inboundRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/inboundRoutes/edit/view.html",controller:"InboundRouteController as vm"}},resolve:{inboundRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:402})}]},authenticate:!0,permissionId:402,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.inboundRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.internalRoutes",{url:"/internalRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/internalRoutes/internalRoutes.html",controller:"InternalRoutesController as vm"}},resolve:{internalRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"InternalRoutes",fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:404})}]},authenticate:!0,permissionId:404,bodyClass:"voice"}).state("app.voice.internalRoutes.edit",{url:"/:id?tab",params:{internalRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/internalRoutes/edit/view.html",controller:"InternalRouteController as vm"}},resolve:{internalRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:404})}]},authenticate:!0,permissionId:404,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.internalRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.outboundRoutes",{url:"/outboundRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/outboundRoutes/outboundRoutes.html",controller:"OutboundRoutesController as vm"}},resolve:{outboundRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OutboundRoutes",fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:403})}]},authenticate:!0,permissionId:403,bodyClass:"voice"}).state("app.voice.outboundRoutes.edit",{url:"/:id?tab",params:{outboundRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/outboundRoutes/edit/view.html",controller:"OutboundRouteController as vm"}},resolve:{outboundRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:403})}]},authenticate:!0,permissionId:403,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.outboundRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/voice/views/realtime/realtime.html",controller:"VoiceRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:411})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.agents",{url:"/agents",params:{channel:"voice",direction:"inbound"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.telephones",{url:"/telephones",controller:"TelephonesVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/telephones/view.html",resolve:{telephones:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,fullname,userpic,internal",role:"telephone",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Telephones",fields:"id,fullname,userpic,internal",role:"telephone",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}],rpcTelephones:["apiResolver",function(e){return e.resolve("rpc@getTelephones")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.trunks",{url:"/trunks",controller:"TrunksVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/trunks/view.html",resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}],rpcTrunks:["apiResolver",function(e){return e.resolve("rpc@getTrunks")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queues",{url:"/queues",controller:"QueuesVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"VoiceQueues":void 0,channel:"voice",type:"inbound",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queue_calls",{url:"/queue_calls",controller:"QueueCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queue_calls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}],rpcVoiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.abandonedcalls",{url:"/abandonedcalls",controller:"AbandonedCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/abandonedcalls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"createdAt,updatedAt,id,name",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queue_params",{url:"/queue_params",controller:"QueueParamsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queue_params/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.outbound_calls",{url:"/outbound_calls",controller:"OutboundCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/outbound_calls/view.html",resolve:{rpcCalls:["apiResolver",function(e){return e.resolve("rpc@getOutboundChannels")}]},authenticate:!0,permissionId:411})}e.$inject=["$stateProvider"],angular.module("app.voice.realtime",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.voice",{abstract:!0,url:"/voice"}).state("app.voice.voiceQueues",{url:"/voiceQueues",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceQueues/voiceQueues.html",controller:"VoiceQueuesController as vm"}},resolve:{voiceQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:401,bodyClass:"voice"}).state("app.voice.voiceQueues.edit",{url:"/:id?tab",params:{voiceQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceQueues/edit/view.html",controller:"VoiceQueueController as vm"}},resolve:{voiceQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:401,bodyClass:"voice"}).state("app.voice.contexts",{url:"/contexts",views:{"content@app":{templateUrl:"app/main/apps/voice/views/contexts/contexts.html",controller:"ContextsController as vm"}},resolve:{contexts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceContext@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Contexts",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:405})}]},authenticate:!0,permissionId:405,bodyClass:"voice"}).state("app.voice.voicemails",{url:"/voicemails",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicemails/voicemails.html",controller:"VoicemailsController as vm"}},resolve:{voicemails:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceMail@get",{fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Voicemails",fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:406})}]},authenticate:!0,permissionId:406,bodyClass:"voice"}).state("app.voice.voicemails.edit",{url:"/:id?tab",params:{voicemail:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicemails/edit/view.html",controller:"VoicemailController as vm"}},resolve:{voicemail:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceMail@get",{fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:406})}]},authenticate:!0,permissionId:406,bodyClass:"voice"}).state("app.voice.musiconholds",{url:"/musiconholds",views:{"content@app":{templateUrl:"app/main/apps/voice/views/musiconholds/musiconholds.html",controller:"MusicOnHoldsController as vm"}},resolve:{musiconholds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceMusicOnHold@get",{fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MusicOnHolds",fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:407})}]},authenticate:!0,permissionId:407,bodyClass:"voice"}).state("app.voice.musiconholds.edit",{url:"/:id?tab",params:{musiconhold:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/musiconholds/edit/view.html",controller:"MusicOnHoldController as vm"}},resolve:{musiconhold:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceMusicOnHold@get",{fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:407})}]},authenticate:!0,permissionId:407,bodyClass:"voice"}).state("app.voice.voiceRecordings",{url:"/voiceRecordings",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceRecordings/voiceRecordings.html",controller:"VoiceRecordingsController as vm"}},resolve:{voiceRecordings:["apiResolver","Auth","msUtils",function(e,n,t){return n.hasRole("admin")?e.resolve("voiceRecording@get",{fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:t.firstLastDayMonth(),limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceRecordings",fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:t.firstLastDayMonth(),limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadVoiceRecordings",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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",params:{channel:"whatsapp"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:2110}).state("app.whatsapp.realtime.queues",{url:"/queues",controller:"QueuesWhatsappRealtimeController as vm",templateUrl:"app/main/apps/whatsapp/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"WhatsappQueues":void 0,channel:"whatsapp",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2110})}e.$inject=["$stateProvider"],angular.module("app.whatsapp.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.whatsapp",{abstract:!0,url:"/whatsapp"}).state("app.whatsapp.whatsappQueues",{url:"/whatsappQueues",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/whatsappQueues.html",controller:"WhatsappQueuesController as vm"}},resolve:{whatsappQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2101,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappQueues.edit",{url:"/:id?tab",params:{whatsappQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/view.html",controller:"WhatsappQueueController as vm"}},resolve:{whatsappQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("whatsappQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2101,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappAccounts",{url:"/whatsappAccounts",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/whatsappAccounts.html",controller:"WhatsappAccountsController as vm"}},resolve:{whatsappAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description,baseUrl",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappAccounts",fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2102})}]},authenticate:!0,permissionId:2102,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappAccounts.edit",{url:"/:id?tab",params:{whatsappAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/view.html",controller:"WhatsappAccountController as vm"}},resolve:{whatsappAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description,baseUrl",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2102})}]},authenticate:!0,permissionId:2102,bodyClass:"whatsapp"}),n.addPart("app/main/apps/whatsapp")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.whatsapp",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.whatsapp.realtime"]).config(e)}(),function(){"use strict";angular.module("app.navigation",[]).config(function(){})}(),function(){"use strict";function e(e,n){e.addPart("app/quick-panel")}e.$inject=["$translatePartialLoaderProvider","msApiProvider"],angular.module("app.quick-panel",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.reset",{url:"/reset/:token",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.reset":{templateUrl:"app/reset/reset.html",controller:"ResetPasswordController as vm"}},bodyClass:"reset"}),n.addPart("app/reset")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.reset",[]).config(e)}(),function(){"use strict";function e(e){e.addPart("app/toolbar")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.toolbar",[]).config(e)}(),function(){"use strict";function e(e){e.interceptors.push("authInterceptor")}e.$inject=["$httpProvider"],angular.module("app.auth").config(e)}(),function(){"use strict";function e(e){e.onBefore({to:function(e){return!0===e.authenticate}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService;return n.isLoggedIn()?n.retrieveUser().catch(function(){return t.target("app.login",void 0,{reload:!0})}):t.target("app.login",void 0,{reload:!0})}),e.onStart({to:function(e){return"app.login"!==e.name}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService,a=e.$to();if(n.hasRole("agent")&&"app.dashboards.general"!=a.name)return t.target("app.dashboards.general",{redirect:!1},{reload:!0})}),e.onFinish({to:function(e){return"app.help"===e.parent.name}},function(e){var n=e.router.stateService;if("app.help"===e.$to().parent.name){var t=e.injector().get("settingsManager"),a=t?t.get():null;if(!a||!a.viewHelpSection)return n.target("app.dashboards.general",{redirect:!1},{reload:!0})}}),e.onFinish({to:function(e){return e.permissionId}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService,a=e.$to();if(n.hasRole("user")){if(!n.hasPermission(a.permissionId))return t.target("app.dashboards.general",{redirect:!1},{reload:!0});var i=e.params().id?Number(e.params().id):void 0;if(i)return n.hasResourcePermission(a.permissionId,i).catch(function(){return t.target(a.parent.name,{redirect:!1},{reload:!0})})}}),e.onFinish({to:function(e){return"app.dashboards.general"===e.parent.name}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService;e.$to();if(n.hasRole("user")&&!n.hasPermission(100))return t.target("app.dashboards.general",{redirect:!1},{reload:!0})})}e.$inject=["$transitions"],angular.module("app.auth").run(e)}(),function(){"use strict";function e(a,i,o,n,s,r,l){var d;return{getToken:e,getCurrentUser:function(){return d},getPermissions:h,hasChildrenPermissions:function(e){return!!e&&_.some(e,function(e){return t(e)})},hasModulePermissions:function(i){return o(function(a,n){g()?a(!0):r.userProfileSection.get({userProfileId:d.userProfileId}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(_.isEmpty(n))a(!1);else{var t=_.filter(n,function(e){return e.enabled});a(_.some(t,["category",i]))}}).catch(function(e){n(e)})})},hasModulesPermissions:function(s){return o(function(a,n){var i={};g()?(s.forEach(function(e){i[e]=!0}),a(i)):r.userProfileSection.get({userProfileId:d.userProfileId}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(_.isEmpty(n))a({});else{var t=_(n).filter(function(e){return e.enabled&&_.includes(s,e.category)}).uniqBy(function(e){return e.category}).map(function(e){return e.category}).value();t.forEach(function(e){i[e]=!0}),a(i)}}).catch(function(e){n(e)})})},hasRole:function(e){return!!d&&d.role===e},hasPermission:t,hasResourcePermission:function(e,s){return o(function(a,i){return r.userProfileSection.get({userProfileId:d.userProfileId,sectionId:e}).$promise.then(function(e){var n=e.rows[0];if(n.autoAssociation)return a();var t=l.getActiveItem().node;return t.permissions&&!1===t.permissions.association?a():r.userProfileResource.get({sectionId:n.id,nolimit:!0}).$promise.then(function(e){var n=e.rows;_.some(n,["resourceId",s])?a():i()})}).catch(function(e){i("Error retrieving user profile permissions",e)})})},hasSectionPermissions:function(a){return o(function(e,n){var t={};return f().then(function(){_.includes(d.permissions,a)&&(t[a]=!0),e(t)}).catch(function(e){n(e)})})},hasSectionsPermissions:function(a){return o(function(e,n){var t={};if(!g())return f().then(function(){a.forEach(function(e){_.includes(d.permissions,e)&&(t[e]=!0)}),e(t)}).catch(function(e){n(e)});a.forEach(function(e){t[e]=!0}),e(t)})},isAgent:p,isAdmin:g,isLoggedIn:function(){return!!e()},isTelephone:function(){return"telephone"===d.role},isUser:v,login:function(e){return o(function(n,t){r.auth.local(e).$promise.then(function(e){return i.put("motion.token",e.token),r.user.get({id:e.id}).$promise}).then(function(e){(d=e).lastLoginAt=moment().format("YYYY-MM-DD HH:mm:ss"),b("LOCAL_LOGIN")}).then(function(){if(p()&&1===d.showWebBar&&d.hotdesk)return a.show({controller:"HotDeskDialogController",controllerAs:"vm",templateUrl:"app/auth/services/hotdesk/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,resolve:{telephones:["apiResolver",function(e){return e.resolve("user@get",{fields:"id,fullname,name,internal",role:"telephone",nolimit:!0})}]}})}).then(function(e){return p()&&0!==d.showWebBar?c(e):g()||v()?m(!0):void 0}).then(function(e){d=_.assign(d,e),n()}).catch(function(e){t(e)})})},logout:function(t){return o(function(e,n){t?(u(),e()):o.resolve().then(function(){return p()&&0!==d.showWebBar?o(function(e,n){r.user.logout({id:d.id,device:"web"}).$promise.then(function(){e()}).catch(function(e){n(e)})}):g()||v()?m(!1):void 0}).then(function(){u(),e()}).catch(function(e){n(e)})})},parseCrudPermissions:function(e){return g()?{readOnly:!1,canEdit:!0,canDelete:!0}:e?{readOnly:!(!_.includes(e,"r")||1!==e.length),canEdit:!!_.includes(e,"e"),canDelete:!!_.includes(e,"d")}:{readOnly:!0,canEdit:!1,canDelete:!1}},queueLogin:c,reloadPermissions:f,removeCookies:u,retrieveUser:function(){return o(function(n,t){r.user.whoami().$promise.then(function(n){return"user"===n.role?h(n.userProfileId).then(function(e){return n.permissions=e,n}):n}).then(function(e){n(d=e)}).catch(function(e){t(e)})})},setCurrentUser:function(e){d=_.merge(d,e)},getAuthenticationType:function(){return n.localStorage["motion.authenticationtype"]||"NONE"},loginSSO:function(e){return b("SSO_LOGIN"),"/api/auth/"+e}};function e(){return i.get("motion.token")}function c(e){return o(function(n,t){r.user.login({id:d.id,device:"web",intrf:e}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function m(a){return o(function(n,t){var e={online:a,lastLoginAt:a?moment().format("YYYY-MM-DD HH:mm:ss"):void 0};r.user.update({id:d.id},e).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function u(){i.remove("motion.token"),d&&(n.localStorage.removeItem("motion.user:"+d.id),n.localStorage.removeItem("motion.authenticationtype"),d=null)}function p(){return"agent"===d.role}function g(){return"admin"===d.role}function v(){return"user"===d.role}function t(e){return!!d&&_.includes(d.permissions,e)}function h(e){var a=[];return o(function(n,t){return e||n(a),r.userProfile.getSections({id:e}).$promise.then(function(e){for(var n=0;n<e.length;n++){var t=e[n];a.push(t.sectionId),t.subsections&&(a=_.concat(a,t.subsections))}return a}).then(function(e){n(e)}).catch(function(e){t("Error retrieving user profile permissions",e)})})}function f(){return o(function(n,t){h(d.userProfileId).then(function(e){d.permissions=e,n()}).catch(function(e){t(e)})})}function b(e){n.localStorage["motion.authenticationtype"]=e}}e.$inject=["$mdDialog","$cookies","$q","$window","$document","api","msNavigationService"],angular.module("app.auth").factory("Auth",e)}(),function(){"use strict";function e(n,e){this.telephones=e,this.closeDialog=function(e){n.hide(e)},e.count&&(this.name=e.rows[0].name)}e.$inject=["$mdDialog","telephones"],angular.module("app.auth").controller("HotDeskDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s;return{request:function(e){var n=t.get("motion.token");return e.headers=e.headers||{},i.isSameOrigin(e.url)&&n&&(e.headers.Authorization="Bearer "+n),e},responseError:function(e){switch(e.status){case 401:t.remove("motion.token"),(s||(s=a.get("$state"))).go("app.login")}return n.reject(e)}}}e.$inject=["$rootScope","$q","$cookies","$injector","Util"],angular.module("app.auth").factory("authInterceptor",e)}(),function(){"use strict";function e(n){var t={safeCb:function(e){return angular.isFunction(e)?e:angular.noop},urlParse:function(e){var n=document.createElement("a");return n.href=e,""===n.host&&(n.href=n.href),n},isSameOrigin:function(i,e){return i=t.urlParse(i),(e=(e=e&&[].concat(e)||[]).map(t.urlParse)).push(n.location),1<=(e=e.filter(function(e){var n=i.hostname===e.hostname,t=i.protocol===e.protocol,a=i.port===e.port||""===e.port&&("80"===i.port||"443"===i.port);return n&&t&&a})).length}};return t}e.$inject=["$window"],angular.module("app.auth").factory("Util",e)}(),function(){"use strict";angular.module("app.core").provider("motionConfig",function(){var t={disableCustomScrollbars:!1,disableMdInkRippleOnMobile:!0,disableCustomScrollbarsOnMobile:!0};this.config=function(e){t=angular.extend({},t,e)},this.$get=function(){var e={getConfig:function(e){if(angular.isUndefined(t[e]))return!1;return t[e]},setConfig:function(e,n){t[e]=n}};return e}})}(),function(){"use strict";function e(e,n,t,a){n.debugEnabled(!0),e.config({tabindex:!1}),a.config({disableCustomScrollbars:!1,disableCustomScrollbarsOnMobile:!0,disableMdInkRippleOnMobile:!0}),t.config({wheelPropagation:!0})}e.$inject=["$ariaProvider","$logProvider","msScrollConfigProvider","motionConfigProvider"],angular.module("app.core").config(e)}(),function(){"use strict";function e(e,n,t){(n.generate(),t.getConfig("disableMdInkRippleOnMobile")&&e.isMobile())&&angular.element("body").attr("md-no-ink",!0);e.isMobile()&&angular.element("html").addClass("is-mobile");var a=e.detectBrowser();if(a){var i=a.browser+" "+a.version+" "+a.os;angular.element("html").addClass(i)}}e.$inject=["msUtils","motionGenerator","motionConfig"],angular.module("app.core").run(e)}(),function(){"use strict";function e(n,e,t,a,i,s){var l=this;function o(){var e=_.filter(l.searchOptions.conditions,["disabled",!1]),o=[],r="";if(_(e).groupBy("name").forEach(function(e){var n=e[0],t=1<e.length,a=n.query.column;if(t){var i=_(e).groupBy(function(e){return e.query.operator}).mapValues(function(e){return _.chain(e).map(function(e){return e.query.value}).flattenDeep().value()}).value(),s=[];_.keys(i).forEach(function(e){var n=i[e],t=e;_.includes(["$between","$in","$notIn"],e)?t+="["+n+"]":n.forEach(function(e){t+="["+e+"]"}),s.push(t)}),r+=a+":="+s.join(":=")}else r=a+":="+n.query.operator+"["+n.query.value+"]";o.push(r)}),0!==o.length){var n="["+l.searchOptions.matchType+"]";return n+=o.join("||")}}function r(){var e=n.localStorage.getItem("motion2."+s+":"+l.currentUser.id);return e?JSON.parse(e):{}}function d(e){n.localStorage.setItem("motion2."+s+":"+l.currentUser.id,JSON.stringify(e))}function c(){if(s){var e=r();e.advancedSearch=_.omit(l.searchOptions,"fields"),d(e)}}function m(){return!!r().advancedSearch}l.currentUser=t.getCurrentUser(),l.searchOptions={matchType:"$and",conditions:[],fields:i},l.toolbarColor=a,l.onInit=function(){if(s){var e=r();e.hasOwnProperty("advancedSearch")&&(l.searchOptions=_.merge(l.searchOptions,e.advancedSearch))}},l.applyFilter=function(){c(),e.hide({apply:!0,value:o()})},l.clearConditions=function(){l.searchOptions.conditions=[],function(){if(s){var e=r();delete e.advancedSearch,e.query&&delete e.query.search,d(e)}}()},l.minimize=function(){c(),e.hide({apply:!m(),value:o()||m()?!_.isEmpty(l.searchOptions.conditions):void 0})},l.close=function(){e.hide({apply:!m(),value:o()||m()?!_.isEmpty(l.searchOptions.conditions):void 0})}}e.$inject=["$window","$mdDialog","Auth","color","fields","storagePath"],angular.module("app.core").controller("AdvancedSearchController",e)}(),function(){"use strict";function e(a){return{restrict:"A",link:function(e,n,t){e.$watch(t.focusOn,function(e){a(function(){e?n[0].focus():n[0].blur()})})}}}e.$inject=["$timeout"],angular.module("app.core").directive("focusOn",e)}(),function(){"use strict";function e(o,l,d){return{restrict:"E",compile:function(e,n){var s;return n.code||(s=e.html(),e.empty()),function(t,a,r){r.code&&(s=t.$eval(r.code));var i=t.$eval(r.shouldInterpolate);l.when(s).then(function(e){if(e){i&&(e=d(e)(t));var n=angular.element('<pre><code class="highlight" ng-non-bindable></code></pre>');a.append(n),o(function(){!function(e,n){var t=n.find("code"),a=e.split("\n"),i=(a=a.filter(function(e){return e.trim().length}))[0].match(/^\s*/)[0],s=new RegExp("^"+i);a=a.map(function(e){return e.replace(s,"").replace(/\s+$/,"")});var o=hljs.highlight(r.language||r.lang,a.join("\n"),!0);o.value=o.value.replace(/=<span class="hljs-value">""<\/span>/gi,"").replace("<head>","").replace("<head/>",""),t.append(o.value).addClass("highlight")}(e,n)},34,!1)}})}}}}e.$inject=["$timeout","$q","$interpolate"],angular.module("app.core").directive("hljs",e)}(),function(){"use strict";function e(a,i,s,o){var r=this;function n(){var a=r.selectedField.options&&!_.isEmpty(r.selectedField.options.extraOperators),i=r.selectedField.options&&!_.isEmpty(r.selectedField.options.excludedOperators);r.availableOperators=_.filter(r.operators,function(n){var e=!n.applyTo||_.includes(n.applyTo,r.selectedField.type);n.isExtra=a&&_.some(r.selectedField.options.extraOperators,function(e){return e===n.type});var t=_.includes(n.excludeFrom,r.selectedField.type)||i&&_.includes(r.selectedField.options.excludedOperators,n.type);if((e||n.isExtra)&&!t)return n})}function t(){!r.value||_.isArray(r.value)&&_.isEmpty(r.value)?r.isValidCondition=!1:r.selectedOperator&&"$between"===r.selectedOperator.type?r.isValidCondition=!(!r.endRangeValue||!r.isValidRange):r.isValidCondition=!0}function e(){"number"===r.selectedField.type?_.isNumber(r.endRangeValue)?r.isValidRange=Number(r.endRangeValue)>Number(r.value):r.isValidRange=!0:"date"===r.selectedField.type&&(r.maxDateRange=moment(r.endRangeValue).subtract(1,"day"),r.isValidRange=!0),t()}function l(){var e=c();r.options.conditions.push(e),u()}function d(){var e=c(),n=_.findIndex(r.options.conditions,"style");r.options.conditions.splice(n,1,e),u(),r.pendingCondition.style=null,r.pendingCondition=void 0}function c(){return{name:r.selectedField.name,operator:a.instant("DASHBOARDS."+r.selectedOperator.translate),value:r.value,endValue:r.endRangeValue,displayValue:m(r.value),displayEndValue:m(r.endRangeValue),query:{column:r.selectedField.column,operator:r.selectedOperator.type,value:function(){var e,n=r.value,t=r.endRangeValue;switch(r.selectedField.type){case"date":var a=moment(n).utcOffset(0,!0).format("YYYY-MM-DD");if("$between"===r.selectedOperator.type){var i=moment(t).utcOffset(0,!0).format("YYYY-MM-DD");e=[a,i]}else e=a;break;case"number":e="$between"===r.selectedOperator.type?[n,t]:n;break;case"multiselect":var s=r.selectedField.options.field||"id";e=_.map(n,s);break;case"select":e=n.id;break;case"autocomplete":e=r.selectedOperator.isExtra?n:n.id;break;default:e=n}return e}()},disabled:!1}}function m(e){var n;if(e){switch(r.selectedField.type){case"date":n=moment(e).format("YYYY-MM-DD");break;case"multiselect":var t=_.map(e,function(e){return e.name});n="$eq"===r.selectedOperator.type?t.join(" or "):t.join(" and ");break;case"select":n=e.name;break;case"autocomplete":n=r.selectedOperator.isExtra?e:e.displayValue;break;default:n=e}return n}}function u(){r.value=null,r.endRangeValue=null,r.minDateRange=null,r.maxDateRange=null,r.isValidCondition=!1}r.operators=r.availableOperators=[{type:"$eq",symbol:"=",translate:"EQUALS",excludeFrom:["multiselect"]},{type:"$ne",symbol:"≠",translate:"IS_NOT_EQUAL",excludeFrom:["multiselect"]},{type:"$in",symbol:"∈",translate:"IS_AMONG",applyTo:["multiselect"]},{type:"$notIn",symbol:"∉",translate:"IS_NOT_AMONG",applyTo:["multiselect"]},{type:"$substring",symbol:"⊃",translate:"CONTAINS",applyTo:["text"]},{type:"$startsWith",symbol:"a..",translate:"STARTS_WITH",applyTo:["text"]},{type:"$endsWith",symbol:"..a",translate:"ENDS_WITH",applyTo:["text"]},{type:"$lt",symbol:"<",translate:"IS_LESS_THAN",applyTo:["date","number"]},{type:"$gt",symbol:">",translate:"IS_GREATER_THAN",applyTo:["date","number"]},{type:"$lte",symbol:"≤",translate:"IS_LESS_THAN_OR_EQUAL_TO",applyTo:["date","number"]},{type:"$gte",symbol:"≥",translate:"IS_GREATER_THAN_OR_EQUAL_TO",applyTo:["date","number"]},{type:"$between",symbol:"≬",translate:"IS_BETWEEN",applyTo:["date","number"]}],r.addCondition=l,r.editCondition=function(e){r.pendingCondition=e,r.pendingCondition.style="md-amber-200-bg",r.selectedField=_.find(r.options.fields,["name",r.pendingCondition.name]),n(),r.selectedOperator=_.find(r.availableOperators,["type",r.pendingCondition.query.operator]),"date"===r.selectedField.type&&"string"==typeof r.pendingCondition.value?(r.value=new Date(r.pendingCondition.value),r.minDateRange=moment(r.value).add(1,"day"),r.endRangeValue=r.pendingCondition.endValue?new Date(r.pendingCondition.endValue):void 0):(r.value=r.pendingCondition.value,r.endRangeValue=r.pendingCondition.endValue);r.isValidRange=!0,r.isValidCondition=!0},r.updateCondition=d,r.cancelUpdateCondition=function(){r.pendingCondition.style=null,r.pendingCondition=void 0},r.setConditionStatus=function(e){e.style=e.disabled?void 0:"chip-disabled",e.disabled=!e.disabled},r.removeCondition=function(){_.isEmpty(r.options.conditions)&&r.clearFilter()},r.getValues=function(){var n=angular.copy(r.selectedField.options.route);if("autocomplete"===r.selectedField.type)for(var e=0;e<Object.keys(n.params).length;e++){var t=Object.keys(n.params)[e];"@autocomplete"===n.params[t]&&(n.params[t]=r.searchText)}{if(!r.selectedField.values)return s[n.model][n.action](n.params).$promise.then(function(e){if("autocomplete"!==r.selectedField.type)return r.selectedField.values=e.rows;var n=r.searchText?_.filter(e.rows,function(e){e.displayValue="";for(var n=0;n<r.selectedField.options.searchFields.length;n++){var t=r.selectedField.options.searchFields[n],a=e[t]||"";e.displayValue+=a+" "}return _.trimEnd(e.displayValue),_.includes(e.displayValue.toLowerCase(),r.searchText.toLowerCase())}):[];return i.when(n)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:n.model.toUpperCase()+"."+n.action.toUpperCase(),msg:e.data?JSON.stringify(e.data.message):e.toString()})});r.selectedField.values.forEach(function(e){e.translate&&(e.name=a.instant(e.translate))})}},r.onFieldChange=function(){r.value=void 0,r.endRangeValue=void 0,r.searchText=void 0,r.isValidCondition=!1,n(),r.autoSelectOperator=1===r.availableOperators.length,r.autoSelectOperator||(r.selectedOperator=void 0)},r.onOperatorChange=function(e){r.isValidRange=!0,r.selectedOperator&&(e?e.applyTo?0<_.difference(r.selectedOperator.applyTo,e.applyTo).length&&(r.value=null):r.selectedOperator.applyTo&&(r.value=null):r.value=null,"between"!=r.selectedOperator.type&&(r.endRangeValue=null),r.selectedField.options&&!_.isEmpty(r.selectedField.options.extraOperators)&&(r.selectedOperator.isExtra=_.some(r.selectedField.options.extraOperators,function(e){return e===r.selectedOperator.type})));t()},r.onValueChange=function(){r.selectedOperator&&"$between"===r.selectedOperator.type?"number"===r.selectedField.type?e():"date"===r.selectedField.type&&(r.minDateRange=moment(r.value).add(1,"day"),t()):t()},r.checkRange=e,r.handleKeyboardAction=function(){r.pendingCondition?d():l()}}e.$inject=["$translate","$q","api","toasty"],angular.module("app.core").directive("msAdvancedSearch",function(){return{restrict:"E",scope:{options:"=",clearFilter:"&"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-advanced-search/ms-advanced-search.html"}})}(),function(){"use strict";angular.module("app.core").directive("msCard",function(){return{restrict:"E",scope:{templatePath:"=template",card:"=ngModel",vm:"=viewModel"},template:'<div class="ms-card-content-wrapper" ng-include="templatePath" onload="cardTemplateLoaded()"></div>',compile:function(e){return e.addClass("ms-card"),function(e,n){e.cardTemplateLoaded=function(){e.$emit("msCard::cardTemplateLoaded",n)}}}}})}(),function(){"use strict";angular.module("app.core").directive("msChipColor",function(){return{restrict:"A",link:function(e,i,n){n.$observe("msChipColor",function(e){var n=i.parent().parent();if(n.hasClass("md-background-bg md-hue-3")||n.addClass("md-background-bg md-hue-3"),_.isEmpty(e)){var t=n[0].className.split(" "),a=t.indexOf("md-hue-3");t.length=a+1,n[0].className=t.join(" ")}else n.addClass(e)})}}})}(),function(){"use strict";angular.module("app.core").directive("msClickToCall",function(){return{restrict:"E",scope:{type:"=",disabled:"=",target:"=",prefix:"=",license:"="},controller:["$scope","$rootScope","$http","$translate","$document","$mdDialog","Auth","toasty","api",function(t,n,a,i,s,o,e,r,l){function d(e){switch(t.currentUser.showWebBar){case 0:return m("http://127.0.0.1:"+(t.currentUser.phoneBarRemoteControlPort||"9888")+"/api/originate/"+c(e));case 2:return n.$broadcast("webrtc::call",{target:c(e)})}}function c(e){return _.isNil(e)?"":e.replace(/[^\w.+#*\-]+/g,"")}function m(e){return a.get(e).success(function(){r.success({title:"Successful call",msg:"Call properly handled!"})}).error(function(e){r.error({title:"PhoneBar API Error",msg:i.instant("CONTACTMANAGER.ERRORS.PHONEBAR_API")})})}t.currentUser=e.getCurrentUser(),t.privacy=t.currentUser.privacyEnabled,t.showMenu=function(){return t.target&&t.target.indexOf("@")<0&&t.target!=t.currentUser.internal&&t.target!=t.currentUser.name&&(0==t.currentUser.showWebBar&&t.currentUser.phoneBarRemoteControl||2==t.currentUser.showWebBar&&t.license.webrtc)&&!t.disabled},t.call=function(e){return 2!==t.currentUser.showWebBar?(n=e,l.user.getVoicePrefixes({id:t.currentUser.id}).$promise.then(function(e){if(e.count)return o.show({controller:"PrefixDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/prefix/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!0,locals:{prefixes:e,required:t.currentUser.phoneBarPrefixRequired}})}).then(function(e){t.currentUser.phoneBarPrefixRequired?e&&-1!==e&&d(e+n):e&&-1!==e?d(e+n):e||d(n)})):d(e);var n},t.transfer=function(e){switch(t.currentUser.showWebBar){case 0:return m("http://127.0.0.1:"+(t.currentUser.phoneBarRemoteControlPort||"9888")+"/api/transfer?number="+c(e));case 2:n.$broadcast("webrtc::transfer",{target:c(e)})}}}],templateUrl:"app/core/directives/ms-click-to-call/ms-click-to-call.html"}})}(),function(){"use strict";function e(i){return{require:"ngModel",priority:1,link:function(e,n,t,a){a.$formatters.push(i.formatter),a.$parsers.push(i.parser)}}}e.$inject=["msDatepickerFixConfig"],angular.module("app.core").provider("msDatepickerFixConfig",function(){var n={formatter:function(e){return e?""===e?e:new Date(e):""},parser:function(e){return e?moment(e).add(moment(e).utcOffset(),"m").toDate():""}};this.config=function(e){n=angular.extend({},n,e)},this.$get=function(){return n}}).directive("msDatepickerFix",e)}(),function(){"use strict";function e(s){return{restrict:"E",scope:{id:"=",model:"=",element:"=",title:"=",path:"="},replace:!0,link:function(n,e){var t=!1,a={};a.id=n.id,_.isNil(n.path)||(a.path=n.path);var i=document.createElement(n.element);i.setAttribute("preload","none"),i.setAttribute("controls","true"),"audio"===n.element&&i.setAttribute("style","width: 265px;"),"video"===n.element&&i.setAttribute("style","max-width: 500px;"),i.setAttribute("title",n.title),i.setAttribute("src"," "),i.onplay=function(e){t||(t=!0,e.preventDefault(),s[n.model].download(a).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type});i.setAttribute("type",e.type),i.setAttribute("src",URL.createObjectURL(t)),i.play()}).catch(function(e){console.error(e)}))},e.append(i)}}}e.$inject=["api"],angular.module("app.core").directive("msDialogRecording",e)}(),function(){"use strict";function e(i){return{restrict:"A",link:function(t,a){a.bind("click",function(e){var n=i('<div layout="row" class="spinner-overlay" layout-sm="column" layout-align="center center" aria-label="wait"><md-progress-circular md-mode="indeterminate"></md-progress-circular></div>')(t);a.closest("md-dialog").prepend(n)})}}}e.$inject=["$compile"],angular.module("app.core").directive("msDialogSpinner",e)}(),function(){"use strict";function e(){var o=this;function a(e,n,t,a){var i=[];if(0<=t)i.push(e[t]),n.push(e[t]),e.splice(t,1);else{for(var s=0;s<e.length;s++)void 0!==e[s].isValid&&e[s].isValid&&n.push(e[s]);for(s=e.length-1;0<=s;s--)e[s].isValid&&e.splice(s,1);i=n}o.options.transferCallback&&o.options.transferCallback(i,a)}o.canTransfer=function(e,n,t){if(void 0!==e.isValid&&e.isValid)return t?a(n.selectedItems,n.items,n.selectedItems.indexOf(e),t):a(n.items,n.selectedItems,n.items.indexOf(e),t)},o.transfer=a,o.getLine=function(e,n){var t="";if(_.isNil(n))return t;{if(_.isArray(n)){for(var a=0;a<n.length;a++)t+=" "+(e[n[a]]?e[n[a]]:"");return t}return e[n]?e[n]:""}}}angular.module("app.core").directive("msDualMultiselect",function(){return{restrict:"E",scope:{options:"=",readOnly:"=",addDisabled:"<"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-dual-multiselect/ms-dual-multiselect.html"}})}(),function(){"use strict";function e(a){return{restrict:"E",replace:!0,scope:{onReply:"&",ngModel:"=",ctrlMethods:"=",pickerPosition:"=",search:"=",recentEmojis:"=",placeholder:"="},template:'<textarea class="emojionearea"></textarea>',link:function(t,e){var n=e.emojioneArea({pickerPosition:t.pickerPosition,search:t.search,recentEmojis:t.recentEmojis,placeholder:a.instant(t.placeholder||"Type a message"),attributes:{spellcheck:!0},events:{keyup:function(e,n){t.ngModel=this.getText(),t.onReply({event:n,body:this.getText()})},emojibtn_click:function(){t.ngModel=this.getText()}}});t.ngModel&&n[0].emojioneArea.setText(t.ngModel),t.internalControl=t.ctrlMethods||{},t.internalControl.setText=function(e){n[0].emojioneArea.setText(e)},t.internalControl.getText=function(){return n[0].emojioneArea.getText()},t.$watch("ngModel",function(e){e||n[0].emojioneArea.setText("")})}}}e.$inject=["$translate"],angular.module("app.core").directive("msEmojiArea",e)}(),function(){"use strict";angular.module("app.core").directive("msFontFamily",function(){return{restrict:"E",scope:{ngModel:"="},controller:["$scope",function(e){e.fonts=[{option:"Arial",value:"Arial,Helvetica,sans-serif"},{option:"Century Gothic",value:"Century Gothic,Futura,Didact Gothic,san-serif"},{option:"Calibri",value:"Calibri, Verdana, Geneva, sans-serif"},{option:"Comic Sans MS",value:"Comic Sans MS,cursive"},{option:"Courier New",value:"Courier New,Courier,monospace"},{option:"Georgia",value:"Georgia,serif"},{option:"Lucida Sans Unicode",value:"Lucida Sans Unicode,Lucida Grande,sans-serif"},{option:"Tahoma",value:"Tahoma,Geneva,sans-serif"},{option:"Times New Roman",value:"Times New Roman,Times,serif"},{option:"Trebuchet MS",value:"Trebuchet MS,Helvetica,sans-serif"},{option:"Verdana",value:"Verdana,Geneva,sans-serif"}]}],templateUrl:"app/core/directives/ms-font-family/ms-font-family.html"}})}(),function(){"use strict";angular.module("app.core").controller("MsFormWizardController",function(){var n=this;function e(){return n.forms.length}function t(){return 0===n.selectedIndex}function a(){return n.selectedIndex===e()-1}n.forms=[],n.selectedIndex=0,n.registerForm=function(e){n.forms.push(e)},n.previousStep=function(){if(t())return;n.selectedIndex--},n.nextStep=function(){if(a())return;n.selectedIndex++},n.firstStep=function(){n.selectedIndex=0},n.lastStep=function(){n.selectedIndex=e()-1},n.totalSteps=e,n.isFirstStep=t,n.isLastStep=a,n.currentStepInvalid=function(){return angular.isDefined(n.forms[n.selectedIndex])&&n.forms[n.selectedIndex].$invalid},n.previousStepInvalid=function(){return 0<n.selectedIndex&&angular.isDefined(n.forms[n.selectedIndex-1])&&n.forms[n.selectedIndex-1].$invalid},n.formsIncomplete=function(){for(var e=0;e<n.forms.length;e++)if(n.forms[e].$invalid)return!0;return!1},n.resetForm=function(){for(var e=n.selectedIndex=0;e<n.forms.length;e++)n.forms[e].$setPristine(),n.forms[e].$setUntouched()}}).directive("msFormWizard",function(){return{restrict:"E",scope:!0,controller:"MsFormWizardController as msWizard",compile:function(e){return e.addClass("ms-form-wizard"),function(){}}}}).directive("msFormWizardForm",function(){return{restrict:"A",require:["form","^msFormWizard"],compile:function(e){return e.addClass("ms-form-wizard-form"),function(e,n,t,a){var i=a[0],s=a[1];s.registerForm(i)}}}})}(),function(){"use strict";function e(i){return{restrict:"E",scope:{onClose:"&"},transclude:!0,templateUrl:"app/core/directives/ms-info-bar/ms-info-bar.html",link:function(e,n){var t=i.find("ms-info-bar-active"),a="ms-info-bar-active";t.addClass(a),e.removeInfoBar=function(){t.removeClass(a),n.remove(),e.onClose&&e.onClose(),e.$destroy()}}}}e.$inject=["$document"],angular.module("app.core").directive("msInfoBar",e)}(),function(){"use strict";function e(r,a,l,e){var d=this,n={columnCount:5,respectItemOrder:!1,reLayoutDebounce:400,responsive:{md:3,sm:2,xs:1}},t=!0;function i(){t&&e.cancel(t),t=e(function(){!function(){d.containerPos=d.container[0].getBoundingClientRect(),function(){d.columnCount=d.options.columnCount,l("gt-md")?d.columnCount=d.options.columnCount:l("md")?d.columnCount=d.columnCount>d.options.responsive.md?d.options.responsive.md:d.columnCount:l("sm")?d.columnCount=d.columnCount>d.options.responsive.sm?d.options.responsive.sm:d.columnCount:d.columnCount=d.options.responsive.xs;d.columnWidth=d.containerPos.width/d.columnCount}(),r.$broadcast("msMasonry:relayoutStarted"),d.items=d.container.find("ms-masonry-item");for(var e=Array.apply(null,new Array(d.columnCount)).map(function(){return 0}),n=0;n<d.items.length;n++){var t,a,i,s,o=d.items[n];(o=angular.element(o)).scope()&&o.scope().$broadcast("msMasonryItem:startReLayout"),o.css({width:d.columnWidth}),d.options.respectItemOrder?(i=n%d.columnCount,s=e[i]):(s=Math.min.apply(Math,e),i=e.indexOf(s)),e[i]=s+o[0].getBoundingClientRect().height,t=Math.round(i*d.columnWidth),a=s,o.css({transform:"translate3d("+t+"px,"+a+"px,0px)"}),o.addClass("placed"),o.scope()&&o.scope().$broadcast("msMasonryItem:finishReLayout")}}(),r.$broadcast("msMasonry:relayoutFinished")},d.options.reLayoutDebounce)}d.options=null,d.container=[],d.containerPos="",d.columnWidth="",d.items=[],d.reLayout=i,d.initialize=function(){d.options=d.options?angular.extend(n,d.options):n,r.$watch(function(){return d.container.width()},function(e,n){e!==n&&i()})},d.waitImagesLoaded=function(e,n){if("undefined"!=typeof imagesLoaded){var t=a.imagesLoaded(e);t.on("done",function(){n()})}else n()},r.$on("msMasonry:relayout",function(){i()})}function n(o){return{restrict:"AEC",controller:"msMasonryController",compile:function(i,s){return{pre:function(e,n,t,a){a.options=angular.fromJson(s.options||"{}"),a.container=i},post:function(e,n,t,a){o(function(){a.initialize()})}}}}}e.$inject=["$scope","$window","$mdMedia","$timeout"],n.$inject=["$timeout"],angular.module("app.core").controller("msMasonryController",e).directive("msMasonry",n).directive("msMasonryItem",function(){return{restrict:"AEC",require:"^msMasonry",priority:1,link:function(e,n,t,a){a.waitImagesLoaded(n,function(){a.reLayout()}),e.$on("msMasonryItem:finishReLayout",function(){e.$watch(function(){return n.height()},function(e,n){e!==n&&a.reLayout()})}),n.on("$destroy",function(){a.reLayout()})}}})}(),function(){"use strict";function e(t,e,a,i){var s=this;function o(e,n){s.selectedPalette=e,s.selectedHues=n}function r(){o(!(s.selectedColor={palette:"",hue:"",class:""}),!1),d()}function l(e,n){s.selectedColor={palette:e,hue:n,class:"md-"+e+"-"+n+"-bg",bgColorValue:i.rgba(s.palettes[e][n].value),fgColorValue:i.rgba(s.palettes[e][n].contrast)},"obj"!==s.msModelType||angular.equals(s.selectedColor,s.modelCtrl.$viewValue)||d(),o(e,s.palettes[e]),t.$selectedColor=s.selectedColor}function d(){"class"===s.msModelType?s.modelCtrl.$setViewValue(s.selectedColor.class):"obj"===s.msModelType&&s.modelCtrl.$setViewValue(s.selectedColor)}s.palettes=e,s.selectedPalette=!1,s.selectedHues=!1,t.$selectedColor={},s.activateHueSelection=o,s.selectColor=function(e,n){l(e,n),d(),a.hide()},s.removeColor=r,t.$watch("ngModel",function(){if(!s.modelCtrl.$viewValue||""===s.modelCtrl.$viewValue)return void r();var e,n;if("class"===s.msModelType){var t=s.modelCtrl.$viewValue.split("-");n=5<=t.length?(e=t[1]+"-"+t[2],t[3]):(e=t[1],t[2])}else"obj"===s.msModelType&&(e=s.modelCtrl.$viewValue.palette,n=s.modelCtrl.$viewValue.hue||500);l(e,n)})}e.$inject=["$scope","$mdColorPalette","$mdMenu","motionGenerator"],angular.module("app.core").controller("msMaterialColorPickerController",e).directive("msMaterialColorPicker",function(){return{require:["msMaterialColorPicker","ngModel"],restrict:"E",scope:{ngModel:"=",msModelType:"@?"},controller:"msMaterialColorPickerController as vm",transclude:!0,templateUrl:"app/core/directives/ms-material-color-picker/ms-material-color-picker.html",link:function(e,n,t,a,i){var s=a[0];s.modelCtrl=a[1],s.msModelType=e.msModelType||"class",i(e,function(e){(e=e.filter(function(e,n){return 1===n.nodeType})).length&&n.find("ms-color-picker-button").replaceWith(e)})}}})}(),function(){"use strict";function e(p,g,v){return{restrict:"A",link:function(e,n,t){var a="true"===t.msNavIsFolded,i=!1,s=angular.element(p[0].body),o=angular.element('<div id="ms-nav-fold-open-overlay"></div>'),r=angular.element('<div id="ms-nav-fold-close-overlay"></div>'),l=n.parent();function d(){s.addClass("ms-nav-folded"),g.$broadcast("msNav::forceCollapse"),n.scrollTop(0),l.append(o),o.on("mouseenter touchstart",function(e){c(e),i=!0})}function c(e){angular.isDefined(e)&&e.preventDefault(),s.addClass("ms-nav-folded-open"),g.$broadcast("msNav::expandMatchingToggles"),l.find(o).remove(),l.parent().append(r),r.on("mouseenter touchstart",function(e){m(e),i=!1})}function m(e){angular.isDefined(e)&&e.preventDefault(),g.$broadcast("msNav::forceCollapse"),n.scrollTop(0),s.removeClass("ms-nav-folded-open"),l.parent().find(r).remove(),l.append(o),o.on("mouseenter touchstart",function(e){c(e),i=!0})}function u(){s.removeClass("ms-nav-folded ms-nav-folded-open"),g.$broadcast("msNav::expandMatchingToggles"),n.off("mouseenter mouseleave")}v.setFoldable(e,n,a),a?d():u(),e.toggleFold=function(){(a=!a)?d():u()},e.openFolded=c,e.closeFolded=m,e.isNavFoldedOpen=function(){return i},e.$on("$destroy",function(){o.off("mouseenter touchstart"),r.off("mouseenter touchstart"),n.off("mouseenter mouseleave")})}}}function n(t,a,i){return{restrict:"E",scope:{},controller:"MsNavController",compile:function(e){return e.addClass("ms-nav"),function(e){t.$broadcast("msNav::expandMatchingToggles");var n=t.$on("$stateChangeSuccess",function(){t.$broadcast("msNav::expandMatchingToggles"),a.when("navigation").then(function(e){e.close(),i.isNavFoldedOpen()&&i.closeFolded()})});e.$on("$destroy",function(){n()})}}}}function t(m,u,p,g){return{restrict:"A",require:"^msNav",scope:!0,compile:function(e,n){return e.addClass("ms-nav-toggle"),angular.isUndefined(n.collapsed)&&(n.collapsed=!0),e.attr("collapsed",n.collapsed),function(a,i,e,t){var s={expanded:"expanded",expandAnimation:"expand-animation",collapseAnimation:"collapse-animation"},n=i.find("a"),o=[],r=/\(.*\)/g;function l(){return"true"===i.attr("collapsed")}function d(){var e=u.defer();if(!l())return e.reject({error:!0}),e.promise;i.attr("collapsed",!1);var n=angular.element(i.find("ms-nav-toggle-items")[0]);n.css({position:"absolute",visibility:"hidden",display:"block",height:"auto"});var t=n[0].offsetHeight;return n.css({position:"",visibility:"",display:"",height:""}),a.$evalAsync(function(){p.animate(n,{display:"block",height:"0px"},{height:t+"px"},s.expandAnimation).then(function(){n.addClass(s.expanded),n.css({height:""}),e.resolve({success:!0})})}),e.promise}function c(){var e=u.defer();if(l())return e.reject({error:!0}),e.promise;i.attr("collapsed",!0);var n=angular.element(i.find("ms-nav-toggle-items")[0]),t=n[0].offsetHeight;return a.$evalAsync(function(){p.animate(n,{height:t+"px"},{height:"0px"},s.collapseAnimation).then(function(){n.removeClass(s.expanded),n.css({display:"",height:""}),e.resolve({success:!0})})}),e.promise}angular.forEach(n,function(e){var n=angular.element(e).attr("ui-sref");angular.isUndefined(n)||(n=n.replace(r,""),o.push(n))}),t.setToggleItem(i,a),i.children(".ms-nav-button").on("click",function(){if(t.isDisabled())return;t.disable(),l()?(t.clearLockedItems(),a.$emit("msNav::pushToLockedList"),m.$broadcast("msNav::collapse"),d().then(function(){t.enable()})):a.$broadcast("msNav::forceCollapse")}),a.$on("$destroy",function(){i.children(".ms-nav-button").off("click")}),a.$on("msNav::collapse",function(){var e=t.getLockedItems(),n=!1;angular.forEach(e,function(e){angular.equals(e.scope,a)&&(n=!0)}),n||c().then(function(){t.enable()})}),a.$on("msNav::forceCollapse",function(){c().then(function(){t.enable()})}),a.$on("msNav::expandMatchingToggles",function(){var n=g.current.name,t=!1;angular.forEach(o,function(e){n===e&&(t=!0)}),t?d():c()}),a.$on("msNav::pushToLockedList",function(){t.setLockedItem(i,a)})}}}}e.$inject=["$document","$rootScope","msNavFoldService"],n.$inject=["$rootScope","$mdComponentRegistry","msNavFoldService"],t.$inject=["$rootScope","$q","$animate","$state"],angular.module("app.core").factory("msNavFoldService",function(){var t={};return{setFoldable:function(e,n){t={scope:e,element:n}},isNavFoldedOpen:function(){return t.scope.isNavFoldedOpen()},toggleFold:function(){t.scope.toggleFold()},openFolded:function(){t.scope.openFolded()},closeFolded:function(){t.scope.closeFolded()}}}).directive("msNavIsFolded",e).controller("MsNavController",function(){var e=this,n=!1,t=[],a=[];e.isDisabled=function(){return n},e.enable=function(){n=!1},e.disable=function(){n=!0},e.setToggleItem=function(e,n){t.push({element:e,scope:n})},e.getLockedItems=function(){return a},e.setLockedItem=function(e,n){a.push({element:e,scope:n})},e.clearLockedItems=function(){a=[]}}).directive("msNav",n).directive("msNavTitle",function(){return{restrict:"A",compile:function(e){return e.addClass("ms-nav-title"),function(){}}}}).directive("msNavButton",function(){return{restrict:"AE",compile:function(e){return e.addClass("ms-nav-button"),function(){}}}}).directive("msNavToggle",t)}(),function(){"use strict";function e(e,n){e.root?this.navigation=n.getNavigation(e.root):this.navigation=n.getNavigation(),this.toggleHorizontalMobileMenu=function(){angular.element("body").toggleClass("ms-navigation-horizontal-mobile-menu-active")},n.sort()}function n(c,m,u,p){return{restrict:"E",scope:{folded:"=",root:"@"},controller:"MsNavigationController as vm",templateUrl:"app/core/directives/ms-navigation/templates/vertical.html",transclude:!0,compile:function(e){return e.addClass("ms-navigation"),function(e,n){var t=angular.element("body"),a=angular.element('<div id="ms-navigation-fold-expander"></div>'),i=angular.element('<div id="ms-navigation-fold-collapser"></div>'),s=u("navigation");function o(e){if(p.setFolded(e),e)c.$broadcast("msNavigation::collapse"),t.addClass("ms-navigation-folded"),r();else{var n=p.getActiveItem();n&&n.scope.$emit("msNavigation::stateMatched"),t.removeClass("ms-navigation-folded ms-navigation-folded-open"),i.remove()}}function r(){n.parent().append(a),m(function(){a.on("mouseenter touchstart",l)})}function l(e){e&&e.preventDefault(),p.setFoldedOpen(!0);var n=p.getActiveItem();n&&n.scope.$emit("msNavigation::stateMatched"),t.addClass("ms-navigation-folded-open"),a.remove(),t.find("#main").append(i),i.on("mouseenter touchstart",d)}function d(e){e&&e.preventDefault(),p.setFoldedOpen(!1),c.$broadcast("msNavigation::collapse"),t.removeClass("ms-navigation-folded-open"),i.remove(),r()}p.setNavigationScope(e),function(){null===p.getFolded()&&p.setFolded(e.folded);p.getFolded()&&(m(function(){c.$broadcast("msNavigation::collapse")}),t.addClass("ms-navigation-folded"),r())}(),e.$watch(function(){return s.isLockedOpen()},function(e,n){if(!angular.isUndefined(e)&&!angular.equals(e,n)&&p.getFolded())if(e)c.$broadcast("msNavigation::collapse");else{var t=p.getActiveItem();t&&t.scope.$emit("msNavigation::stateMatched")}}),e.$watch("folded",function(e,n){angular.isUndefined(e)||angular.equals(e,n)||o(e)}),e.toggleFolded=function(){o(!p.getFolded())},e.$on("$stateChangeStart",function(){s.close()}),e.$on("$destroy",function(){i.off("mouseenter touchstart"),a.off("mouseenter touchstart")})}}}}function t(t,e,a,i,n,s){var o=this;o.element=e,o.node=t.node,o.hasChildren=void 0,o.collapsed=void 0,o.collapsable=void 0,o.group=void 0,o.animateHeightClass="animate-height",o.toggleCollapsed=function(){o.collapsed?o.expand():o.collapse()},o.collapse=function(){var e=o.element.children("ul"),n=e[0].offsetHeight;t.$evalAsync(function(){o.collapsed=!0,o.element.addClass("collapsing"),i.animate(e,{display:"block",height:n+"px"},{height:"0px"},o.animateHeightClass).then(function(){e.css({display:"",height:""}),o.element.removeClass("collapsing")}),t.$broadcast("msNavigation::collapse")})},o.expand=function(){var e=o.element.children("ul");e.css({position:"absolute",visibility:"hidden",display:"block",height:"auto"});var n=e[0].offsetHeight;e.css({position:"",visibility:"",display:"",height:""}),t.$evalAsync(function(){o.collapsed=!1,o.element.addClass("expanding"),i.animate(e,{display:"block",height:"0px"},{height:n+"px"},o.animateHeightClass).then(function(){e.css({height:""}),o.element.removeClass("expanding")}),a.$broadcast("msNavigation::collapse",o.node._path)})},o.getClass=function(){return o.node.class},o.isHidden=function(){if(angular.isDefined(o.node.hidden)&&angular.isFunction(o.node.hidden))return o.node.hidden();return!1},function(){o.hasChildren=0<o.node.children.length,o.group=!(!angular.isDefined(o.node.group)||!0!==o.node.group),!o.hasChildren||o.group?o.collapsable=!1:o.collapsable=!(!angular.isUndefined(o.node.collapsable)&&"boolean"==typeof o.node.collapsable&&!0!==o.node.collapsable);o.collapsable?o.collapsed=!(!angular.isUndefined(o.node.collapsed)&&"boolean"==typeof o.node.collapsed&&!0!==o.node.collapsed):o.collapsed=!1;if(o.node.state===n.current.name||n.includes(o.node.state)){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;t.$emit("msNavigation::stateMatched"),s.setActiveItem(o.node,t)}t.$on("msNavigation::stateMatched",function(){o.collapsable&&o.collapsed&&t.$evalAsync(function(){o.collapsed=!1})}),t.$on("msNavigation::collapse",function(e,n){if(!o.collapsed&&o.collapsable)if(angular.isUndefined(n))o.collapse();else{var t=n.split("."),a=[],i=s.getActiveItem();if(i&&(a=i.node._path.split(".")),-1<t.indexOf(o.node._id))return;if(-1<a.indexOf(o.node._id))return;o.collapse()}}),t.$on("$stateChangeSuccess",function(){if(o.node.state===n.current.name){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;s.setActiveItem(o.node,t),a.$broadcast("msNavigation::collapse",o.node._path)}if(n.includes(o.node.state)){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;t.$emit("msNavigation::stateMatched")}})}()}function a(n){return{restrict:"E",scope:{root:"@"},controller:"MsNavigationController as vm",templateUrl:"app/core/directives/ms-navigation/templates/horizontal.html",transclude:!0,compile:function(e){return e.addClass("ms-navigation-horizontal"),function(e){n.setNavigationScope(e)}}}}function i(t,e,n,a,i){var s=this;s.element=e,s.node=t.node,s.hasChildren=void 0,s.group=void 0,s.getClass=function(){return s.node.class},function(){if(s.isActive=!1,s.hasChildren=0<s.node.children.length,s.group=!(!angular.isDefined(s.node.group)||!0!==s.node.group),s.node.state===a.current.name||a.includes(s.node.state)){if(angular.isDefined(s.node.stateParams)&&angular.isDefined(a.params)&&!angular.equals(s.node.stateParams,a.params))return;t.$emit("msNavigation::stateMatched"),i.setActiveItem(s.node,t)}t.$on("msNavigation::stateMatched",function(){s.hasChildren&&t.$evalAsync(function(){s.isActive=!0})}),t.$on("msNavigation::clearActive",function(){if(s.hasChildren){var e=[],n=i.getActiveItem();n&&(e=n.node._path.split(".")),-1<e.indexOf(s.node._id)?t.$evalAsync(function(){s.isActive=!0}):t.$evalAsync(function(){s.isActive=!1})}}),t.$on("$stateChangeSuccess",function(){if(s.node.state===a.current.name||a.includes(s.node.state)){if(angular.isDefined(s.node.stateParams)&&angular.isDefined(a.params)&&!angular.equals(s.node.stateParams,a.params))return;i.setActiveItem(s.node,t),n.$broadcast("msNavigation::clearActive")}})}()}function s(i){return{restrict:"A",require:"^msNavigationHorizontalNode",compile:function(e){return e.addClass("ms-navigation-horizontal-item"),function(e,n,t,a){n.on("click",function(){if(!a.hasChildren||i("gt-md"))return;n.toggleClass("expanded")}),e.$on("$destroy",function(){n.off("click")})}}}}e.$inject=["$scope","msNavigationService"],n.$inject=["$rootScope","$timeout","$mdSidenav","msNavigationService"],t.$inject=["$scope","$element","$rootScope","$animate","$state","msNavigationService"],a.$inject=["msNavigationService"],i.$inject=["$scope","$element","$rootScope","$state","msNavigationService"],s.$inject=["$mdMedia"],angular.module("app.core").provider("msNavigationService",function(){var r=angular.injector(["ng"]).get("$log"),l=[];function d(e,n){if(angular.isString(e)){for(var t=e.split("."),a=t[t.length-1],i=function(e){var n=l;if(1===e.length)return n;e.pop();for(var t=0;t<e.length;t++){for(var a=e[t],i=!0,s=0;s<n.length;s++)if(n[s]._id===a){n=n[s].children,i=!1;break}if(i){var o={_id:a,_path:e.join("."),title:a,weight:1,children:[]};n.push(o),n=o.children}}return n}(t),s=!1,o=0;o<i.length;o++)if(i[o]._id===a){s=i[o];break}s?(angular.extend(s,n),s.uisref=u(s)):(n.children=[],!angular.isUndefined(n.weight)&&angular.isNumber(n.weight)||(n.weight=1),n._id=a,n._path=e,n.uisref=u(n),i.push(n))}else r.error("path must be a string (eg. `dashboard.project`)")}function c(e){if(angular.isString(e)){for(var n=l,t=e.split("."),a=0;a<t.length;a++)for(var i=t[a],s=0;s<n.length;s++)if(n[s]._id===i){if(n[s]._path===e)return n.splice(s,1),!0;n=n[s].children;break}return!1}r.error("path must be a string (eg. `dashboard.project`)")}function m(e){e||(e=l).sort(a);for(var n=0;n<e.length;n++){var t=e[n].children;1<t.length&&t.sort(a),0<t.length&&m(t)}}function a(e,n){return parseInt(e.weight)-parseInt(n.weight)}function u(e){var n="";return angular.isDefined(e.state)&&(n=e.state,angular.isDefined(e.stateParams)&&angular.isObject(e.stateParams)&&(n=n+"("+angular.toJson(e.stateParams)+")")),n}this.saveItem=d,this.deleteItem=c,this.sortByWeight=m,this.$get=function(){var t=null,n=null,a=null,i=null,e={saveItem:d,deleteItem:c,sort:m,clearNavigation:function(){l=[],n&&(n.vm.navigation=l)},setActiveItem:function(e,n){t={node:e,scope:n}},getActiveItem:function(){return t},getNavigation:s,getFlatNavigation:o,setNavigationScope:function(e){n=e},setFolded:function(e){a=e},getFolded:function(){return a},setFoldedOpen:function(e){i=e},getFoldedOpen:function(){return i},toggleFolded:function(){n.toggleFolded()},getSectionId:function(n,t){var e=o(),a=_.find(e,function(e){return t?e.route===n&&e.title.toLowerCase()===t.toLowerCase():e.route===n});return a?a.id:0}};return e;function s(e){if(e){for(var n=0;n<l.length;n++)if(l[n]._id===e)return[l[n]];return null}return l}function o(e){var n=s(e);return function e(n){var t=[];for(var a=0;a<n.length;a++){var i=angular.copy(n[a]);i.children=[],t.push(i),0<n[a].children.length&&(t=t.concat(e(n[a].children)))}return t}(n)}}}).controller("MsNavigationController",e).directive("msNavigation",n).controller("MsNavigationNodeController",t).directive("msNavigationNode",function(){return{restrict:"A",bindToController:{node:"=msNavigationNode"},controller:"MsNavigationNodeController as vm",compile:function(e){return e.addClass("ms-navigation-node"),function(e,n,t,a){n.addClass(a.getClass()),a.group&&n.addClass("group")}}}}).directive("msNavigationItem",function(){return{restrict:"A",require:"^msNavigationNode",compile:function(e){return e.addClass("ms-navigation-item"),function(e,n,t,a){a.collapsable&&n.on("click",a.toggleCollapsed),e.$on("$destroy",function(){n.off("click")})}}}}).directive("msNavigationHorizontal",a).controller("MsNavigationHorizontalNodeController",i).directive("msNavigationHorizontalNode",function(){return{restrict:"A",bindToController:{node:"=msNavigationHorizontalNode"},controller:"MsNavigationHorizontalNodeController as vm",compile:function(e){return e.addClass("ms-navigation-horizontal-node"),function(e,n,t,a){n.addClass(a.getClass()),a.group&&n.addClass("group")}}}}).directive("msNavigationHorizontalItem",s)}(),function(){"use strict";function e(p,t,g,e,a,i,n,u,s,o,v,h,f,b,r,A){var E=this,l=["ringingId","speakerId","microphoneId","ringingVolume","speakerVolume","microphoneVolume","ringingMute","speakerMute","microphoneMute"],d=JSON.parse(n.localStorage.getItem("motion2.user:"+E.conf.id))||{webrtc:{ringingVolume:.5,speakerVolume:.5,microphoneVolume:1,ringingMute:!1,speakerMute:!1,microphoneMute:!1}};function c(l){var d,c,m;return E.initDeviceInProgress=!0,navigator.mediaDevices.getUserMedia({audio:!0}).then(function(e){return E.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/silence.ogg"),E.soundPlayer.play().catch(function(e){console.log(e.message)}),e.getTracks().forEach(function(e){e.stop()}),navigator.mediaDevices.enumerateDevices()}).then(function(e){var n=_.filter(e,function(e){return"audioinput"===e.kind&&"default"!==e.deviceId&&"communications"!==e.deviceId});if(0<n.length){var t=_.find(e,function(e){return"default"===e.deviceId&&"audioinput"===e.kind});if(m=_.find(n,function(e){return e.groupId===t.groupId}),E.conf.microphoneId&&!l){var a=_.find(n,function(e){return e.deviceId===E.conf.microphoneId});a&&(m=a)}E.conf.microphoneId=m.deviceId}else v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_MICROPHONE_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"});E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0,R("microphone",!1);var i=_.filter(e,function(e){return"audiooutput"===e.kind&&"default"!==e.deviceId&&"communications"!==e.deviceId});if(0<i.length){var s=_.find(e,function(e){return"default"===e.deviceId&&"audiooutput"===e.kind});if(c=d=_.find(i,function(e){return e.groupId===s.groupId}),E.conf.speakerId&&!l){var o=_.find(i,function(e){return e.deviceId===E.conf.speakerId});o&&(c=o)}if(E.conf.speakerId=c.deviceId,E.conf.ringingId&&!l){var r=_.find(i,function(e){return e.deviceId===E.conf.ringingId});r&&(d=r)}E.conf.ringingId=d.deviceId}else v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_SPEAKER_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"});return R("speaker",!1)}).then(function(){return R("ringing",!1)}).then(function(){if(jabra)return jabra.init().then(function(){return E.isJabraInitialized=!0,jabra.getInstallInfo()}).then(function(){return jabra.getUserDeviceMediaExt()}).then(function(e){m&&c&&d&&e&&_.includes([m.groupId,c.groupId,d.groupId],e.deviceInfo.browserGroupId)&&(console.log("Jabra library correctly initialized and device correctly installed"),E.isJabraEnabled=!0,jabra.onHook(),jabra.addEventListener("acceptcall",function(e){var n=_.last(E.sessions);n?"incoming"===n.direction&&n.isInProgress()?E.answer(n):console.error("Unable to find a valid call to answer",e):console.error("Unable to answer the call",e)}.bind(this)),jabra.addEventListener("mute",function(){R("microphone",E.conf.microphoneMute=!0)}.bind(this)),jabra.addEventListener("unmute",function(){E.conf.microphoneMute=!1,R("microphone",!0)}.bind(this)),jabra.addEventListener("flash",function(){E.jabraSession.localHold?E.unhold(E.jabraSession):E.hold(E.jabraSession)}.bind(this)),jabra.addEventListener("endcall",function(){o(function(e){for(var n=null,t=0;t<E.sessions.length;t++)_.has(E.sessions[t],"localHold")&&E.sessions[t].localHold||(n=E.sessions[t]);e(n)}).then(function(e){null!==e&&E.terminate(e)})}.bind(this)))}).catch(function(e){console.warn("Error initializing Jabra integration",e)})}).catch(function(e){console.error("Unable to init media devices",e),"NotFoundError"===e.name&&v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"})}).finally(function(){E.initDeviceInProgress=!1,y(),DetectRTC.load(function(){E.conf.hasMicrophone=DetectRTC.hasMicrophone,E.conf.hasSpeakers="Chrome"!==DetectRTC.browser.name&&"Edge"!==DetectRTC.browser.name&&"Opera"!==DetectRTC.browser.name||DetectRTC.hasSpeakers,E.conf.isWebRTCSupported=DetectRTC.isWebRTCSupported,E.conf.osName=DetectRTC.osName,E.conf.osVersion=DetectRTC.osVersion,E.conf.browserName=DetectRTC.browser.name,E.conf.browserVersion=DetectRTC.browser.version,E.conf.license&&E.conf.isWebRTCSupported&&E.conf.hasMicrophone&&E.conf.hasSpeakers&&"https"===E.conf.protocol&&("chrome"===E.conf.browserName.toLowerCase()||"opera"===E.conf.browserName.toLowerCase()||"safari"===E.conf.browserName.toLowerCase())?E.register||E.ua.start():E.conf.license||v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"})}.bind(this))})}function y(){d.webrtc=_.pick(E.conf,l),n.localStorage.setItem("motion2.user:"+E.conf.id,JSON.stringify(d))}function S(e,n,t){console.debug("addCall -> target, inbound, fullname",e,n,t),E.calls.unshift({target:e,fullname:t||e,inbound:n,time:moment().format("HH:mm")}),50<E.calls.length&&E.calls.pop()}function T(e){console.debug("answer -> session",e),e.notification&&(e.notification.close(),e.notification=null),E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0,e.answer(E.sessionConf),E.isJabraEnabled&&(jabra.offHook(),E.jabraSession=e)}function I(e,n){console.debug("terminate -> session",e),e.notification&&(e.notification.close(),e.notification=null);var t={};if(n?t.status_code=n:e.isEstablished()||(t.status_code=603),e.terminate(t),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var a=_.last(E.sessions);a.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=a):jabra.offHook()}}function C(t){return console.debug("getVoiceChannels -> session",t),h.rpc.getVoiceChannels().$promise.then(function(e){var n=_.find(e.rows,function(e){return e.sipcalllinkedid===t.call_id?e:e.sipcalluniqueid===t.call_id?e:null});n&&(t.monitor=n.monitor,t.uniqueid=n.uniqueid,t.monitors=n.monitors)})}function O(e){console.debug("onAddstream -> data",e),this.remotePlayer.srcObject=e.stream,this.remotePlayer.play()}function w(){E.canGoInConference=!1,E.isInConference=!1,E.currentconferenceSessions=[]}function R(e,n){switch(e){case"ringing":E.soundPlayer.muted=E.conf.ringingMute,E.conf.ringingId&&E.soundPlayer.setSinkId(E.conf.ringingId).then(function(){E.soundPlayer.volume=E.conf.ringingVolume}).then(function(){n&&y()}).catch(function(e){console.info(e.message,E.conf.ringingId)});break;case"speaker":E.remotePlayer.muted=E.conf.speakerMute,E.conf.speakerId&&E.remotePlayer.setSinkId(E.conf.speakerId).then(function(){E.remotePlayer.volume=E.conf.speakerVolume}).then(function(){n&&y()}).catch(function(e){console.info(e.message,E.conf.speakerId)});break;case"microphone":for(var t=0;t<E.sessions.length;t+=1)E.conf.microphoneMute?E.sessions[t].mute():E.sessions[t].unmute();jabra&&E.isJabraEnabled&&(E.conf.microphoneMute?jabra.mute():jabra.unmute()),n&&y();break;default:console.log("unknown device")}}function m(){E.target="",document.getElementById("ms-target").blur(),document.getElementById("ms-target").value="",p.$broadcast("angucomplete-alt:clearInput","ms-target-wrap")}function x(n){return h.user.getVoicePrefixes({id:E.conf.id}).$promise.then(function(e){if(e.count)return a.show({controller:"PrefixDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/prefix/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{prefixes:e,required:E.conf.phoneBarPrefixRequired}})}).then(function(e){if(E.conf.phoneBarPrefixRequired){if(e&&-1!==e)return e+n}else{if(e&&-1!==e)return e+n;if(!e)return n}})}function N(){if(E.isInConference){var e=E.sessions[0].connection.getReceivers()[0],n=E.sessions[1].connection.getReceivers()[0],t=new MediaStream;t.addTrack(e.track),t.addTrack(n.track);var a=document.getElementById("remote-audio");a.srcObject=t;var i=a.play();void 0!==i&&i.then(function(){}).catch(function(e){console.log(e)})}}function D(e,n,t,a){return console.debug("onReferCallback -> session, textContent, position, delay",e,n,t,a),function(){i.show(i.simple().textContent(n).position(t).hideDelay(a)),I(e)}}function P(n){return console.debug("findSessionBySessionId -> sessionId, vm_pb.sessions",n,E.sessions),_.find(E.sessions,function(e){return e.call_id==n})}function L(e,n){return console.debug("callCallback -> url, params",e,n),s({url:e,method:"GET",params:n})}e(function(){},999),E.currentUser=b.getCurrentUser(),E.direction="right",E.selectedMode="md-scale",E.target="",E.showDialpad=!1,E.soundPlayer=document.getElementById(E.conf.soundPlayerId),E.remotePlayer=document.getElementById(E.conf.remotePlayerId),E.soundPlayer.volume=1,E.sessionConf={mediaConstraints:{audio:!0,video:!1},pcConfig:{iceServers:[]}},E.sessions=[],E.calls=[],E.callbackQueue=[],E.canGoInConference=!1,E.isInConference=!1,E.currentConferenceSessions=[],E.ua=new JsSIP.UA({sockets:[new JsSIP.WebSocketInterface("wss://"+E.conf.host+":"+E.conf.wssPort+"/ws")],uri:new JsSIP.URI("sip",E.conf.name,E.conf.host,5060,null,null).toString(),authorization_user:E.conf.name,ha1:E.conf.ha1,realm:E.conf.realm,user_agent:E.conf.ua,session_timers_refresh_method:"invite",register_expires:E.conf.phoneBarExpires||60,register:!0}),E.conf=_.merge(d.webrtc,E.conf),E.initDeviceInProgress=!1,E.isJabraEnabled=!1,E.isJabraInitialized=!1,E.jabraSession=null,E.jabraClicked=!1,E.buttonClicked=!1,E.originateInProgress=!1,t.bind("keyup",function(e){switch(e.keyCode){case 27:g(function(){E.showDialpad=!1})}}),E.$onInit=function(){c(!1),navigator.mediaDevices.ondevicechange=function(){E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,c(!(E.isJabraEnabled=!1))}).catch(function(e){console.error("Unable to shutdown Jabra library",e)}):c(!0))};var e=[h.network.get({type:"turn",nolimit:!0}).$promise,h.network.get({type:"stun",nolimit:!0}).$promise];o.all(e).then(function(e){var n=e[0].rows,t=e[1].rows,a=[],i=[];t.forEach(function(e){i.push("stun:"+e.value)}),a.push({urls:i}),n.forEach(function(e){var n={urls:"turn:"+e.value};e.username&&(n.username=e.username),e.password&&(n.credential=e.password),a.push(n)}),E.sessionConf.pcConfig={iceServers:a}}),this.ua.on("registered",function(){this.registered=!0}.bind(this)),this.ua.on("unregistered",function(){this.registered=!1}.bind(this)),this.ua.on("newRTCSession",function(e){console.debug("onNewRTCSession -> data",e);var n,t,a,i,s,o=e.session,r=!0,l="",d=0;switch(e.originator){case"local":o.outgoing=!0,o.name=e.request.ruri.user,o.user=e.request.ruri.user,S(o.user,!1),t=e.request.extraHeaders,a="X-callback-url",s=_.find(t,function(e){return _.startsWith(e,a)}),n=!!s&&_.trim(s.replace(a,"").replace(i||":","")),E.isJabraEnabled&&(E.jabraSession&&jabra.resume(),E.jabraSession=o,jabra.offHook());break;case"remote":var c=b.getCurrentUser();c.voicePause&&c.phoneBarDnd&&(r=!1);var m=e.request.getHeader("Call-Type")||"";if(c.ignorePauseForPreviewCalls&&"PREVIEW"===m&&(r=!0),E.originateInProgress&&(r=!1),r&&(o.incoming=!0,o.name=e.request.from.display_name,o.user=e.request.from.uri.user,l=e.request.getHeader("X-Answer-Mode")||"",d=e.request.getHeader("X-Answer-After")||0,function(n){console.debug("getNotification -> session",n);var e=n.name?n.name+" <"+n.user+">":n.user;E.currentUser.privacyEnabled&&(e=A.mask(e)),f.create("Incoming call from: ",e,null,function(){T(n)},function(){I(n)},E.conf.autoAnswer).then(function(e){n.notification=e}).catch(function(e){console.error("Error creating notification for incoming call",e)})}(e.session),S(e.session.user,!0),E.isJabraEnabled&&jabra.ring(),E.conf.autoAnswer&&g(function(){o.isInProgress()&&(o.autoAnswer=!0,T(o))},E.conf.autoAnswerDelay?1e3*E.conf.autoAnswerDelay:0),console.debug("xAnswerMode",l),console.debug("xAnswerAfterSec",d),"auto"==l.toLowerCase())){var u=0==d?500:1e3*d;console.debug("auto answer enabled after:"+u+" ms"),g(function(){o.isInProgress()&&(o.autoAnswer=!0,T(o))},u)}}r?(o.call_id=e.request.call_id,n&&L(E.callbackQueue[o.call_id]=n,{call_id:o.call_id}).then(function(){console.log('callbackurl:"'+n+'" called successfully')}).catch(function(e){console.log('fail callbackurl:"'+n+'" err:',e)}),o.connection&&(o.connection.onaddstream=O.bind(this)),o.iceCandidateTimeout=null,o.on("progress",function(e,n){console.debug("onProgress -> session, data",e,n);var t=!1;switch(n.originator){case"local":this.conf.ringingMute||(this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/incoming-call.ogg"),t=!0);break;case"remote":this.putOtherCallsOnHold(e),this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/outgoing-call.ogg"),t=!0}E.originateInProgress&&(E.originateInProgress=!1),t&&(this.soundPlayer.loop="loop",this.soundPlayer.play().catch(function(e){console.log(e.message)})),C(e).then(function(){var n=E.callbackQueue[e.call_id];n&&L(n,{uniqueid:e.uniqueid,call_id:e.call_id,number_called:e.user}).then(function(){console.log('callbackurl:"'+n+'" called successfully')}).catch(function(e){console.log('fail callbackurl:"'+n+'" err:',e)}).finally(function(){delete E.callbackQueue[e.call_id]})}).catch(function(e){console.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("confirmed",function(e,n){console.debug("onConfirmed -> session, data",e,n);var t=document.getElementById("div_session_"+e.id.substr(0,32));t&&$(t).scope().$broadcast("timer-start"),e.confirmed=!0,"remote"===n.originator&&e.connection&&(e.connection.onaddstream=O.bind(this),_.head(e.connection.getRemoteStreams())&&(this.remotePlayer.srcObject=_.head(e.connection.getRemoteStreams()),this.remotePlayer.play())),this.soundPlayer.pause(),this.soundPlayer.loop=null,this.putOtherCallsOnHold(e),e.autoAnswer&&(this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/beep.ogg"),this.soundPlayer.play().catch(function(e){console.log("Unable to play autoAnswer notification",e)})),E.canGoInConference=2==E.sessions.length,C(e).catch(function(e){console.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("hold",function(e,n){console.debug("onHold -> session, data",e,n),"local"===n.originator&&(e.localHold=!0)}.bind(this,o)),o.on("unhold",function(e,n){console.debug("onUnhold -> session, data",e,n),"local"===n.originator&&(e.localHold=!1)}.bind(this,o)),o.on("ended",function(e,n){if(console.debug("onEnded -> session, data",e,n),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&(w(),E.buttonClicked=!0),_.remove(this.sessions,{id:e.id}),2!==E.sessions.length&&(E.canGoInConference=!1),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var t=_.last(E.sessions);t.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=t):jabra.offHook()}0===E.sessions.length&&E.currentUser.voicePause&&h.user.pause({id:E.currentUser.id,type:_.startsWith(E.currentUser.pauseType,"#")?E.currentUser.pauseType.substring(1):E.currentUser.pauseType}).$promise.catch(function(e){v.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:PAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})}),E.conf.microphoneMute=!1,E.initDevice("microphone",!0)}.bind(this,o)),o.on("failed",function(e,n){if(console.debug("onFailed -> session, data",e,n),this.soundPlayer.pause(),this.soundPlayer.loop=null,e.notification&&e.notification.close(),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&w(),E.originateInProgress&&(E.originateInProgress=!1),_.remove(this.sessions,{id:e.id}),2!==E.sessions.length&&(E.canGoInConference=!1),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var t=_.last(E.sessions);t.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=t):jabra.offHook()}}.bind(this,o)),o.on("icecandidate",function(e,n){console.debug("onIcecandidate -> session, data",e,n),null!==e.iceCandidateTimeout&&clearTimeout(e.iceCandidateTimeout),e.iceCandidateTimeout=setTimeout(n.ready,1e3)}.bind(this,o)),E.sessions.push(o),g(function(){p.$apply(),console.debug("onNewRTCSession -> vm_pb.sessions",E.sessions)})):I(o,486)}.bind(this)),r.on("webbar:originate",function(e){console.debug("originateHook -> payload",e);var n=e.callNumber,t=e.callerId,a=e.callbackUrl;E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0;var i=n.replace(/ /g,"");if(i=(i=i.replace(/\(/g,"")).replace(/\)/g,"")){var s=angular.copy(E.sessionConf);s.extraHeaders=[],t&&s.extraHeaders.push("X-CID: "+t),a&&s.extraHeaders.push("X-callback-url: "+a),E.originateInProgress=!0,E.ua.call(i,s)}}.bind(this)),r.on("webbar:hangup",function(e){console.debug("hangupHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(P(e.sessionId)),0==n.length))console.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];console.log("hangupHook -> sessionToHangup",a),E.terminate(a)}}.bind(this)),r.on("webbar:answer",function(e){var n;console.debug("answerHook -> payload",e),n=e.sessionId?P(e.sessionId):_.find(E.sessions,function(e){return e.incoming&&!e.confirmed}),e.sessionId&&!n&&console.warn("call with session Id "+e.sessionId+" not found"),n&&E.answer(n)}.bind(this)),r.on("webbar:hold",function(e){console.debug("holdHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(P(e.sessionId)),0==n.length))console.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];E.hold(a)}}.bind(this)),r.on("webbar:unhold",function(e){if(console.debug("holdHook -> payload",e),e.sessionId){var n=P(e.sessionId);n?E.unhold(n):console.warn("call with session Id "+e.sessionId+" not found")}else console.error("sessionId required")}.bind(this)),r.on("webbar:transfer",function(e){if(console.debug("transferHook -> payload",e),e.sessionId)if(e.transferNumber){var n=P(e.sessionId);n?n.refer(e.transferNumber,{eventHandlers:{requestSucceeded:D(n,"requestSucceeded","top right",3e3),requestFailed:D(n,"requestFailed","top right",3e3)}}):console.warn("call with session Id "+e.sessionId+" not found")}else console.error("transferNumber required");else console.error("sessionId required")}.bind(this)),r.on("webbar:stopmonitors",function(e){if(e.agentId===E.currentUser.id){var n=_.find(E.sessions,["uniqueid",e.uniqueid]);if(!n)return;n.monitors.forEach(function(e){e.status="pause"}),n.monitor=!1}}.bind(this))}.bind(this),E.type=function(e,n){var t=e;switch(E.target||(E.target=""),n&&(E.target+=e,p.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target)),e){case"*":t="asterisk";break;case"#":t="pound"}E.conf.enableDtmfTone&&(E.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/dialpad/"+t+".ogg"),E.soundPlayer.play().catch(function(e){console.log(e.message)}));for(var a=0;a<E.sessions.length;a+=1)E.sessions[a].isEstablished()&&!E.sessions[a].isOnHold().local&&E.sessions[a].sendDTMF(e)},E.call=function(){if(E.target&&E.target!==E.conf.name&&E.target!==E.conf.internal){E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0;var e=E.target.replace(/ /g,"");return x(e=(e=e.replace(/\(/g,"")).replace(/\)/g,"")).then(function(e){e&&E.ua.call(e,E.sessionConf)}).then(function(){m()})}},E.hold=function(e){console.debug("hold -> session",e),e.hold({useUpdate:!1}),E.isJabraEnabled&&(jabra.hold(),jabra.onHook())},E.refer=function(n){console.debug("refer -> session",n);var e=a.prompt().title("Transfer").textContent("Type the target").placeholder("Target").ariaLabel("Target").ok("Transfer").cancel("Cancel");a.show(e).then(function(e){return x(e.replace(/ /g,"").replace(/\(/g,"").replace(/\)/g,""))}).then(function(e){n.refer(e,{eventHandlers:{requestSucceeded:D(n,"requestSucceeded","top right",3e3),requestFailed:D(n,"requestFailed","top right",3e3)}})})},E.record=function(e){console.debug("record -> session",e),a.show({controller:"RecordDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/record/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{session:e,sessions:E.sessions}})},E.unhold=function(e){console.debug("unhold -> session",e),e.unhold({useUpdate:!1}),E.putOtherCallsOnHold(e),E.isJabraEnabled&&(jabra.offHook(),jabra.resume())},E.answer=T,E.terminate=I,E.selectSession=function(e){console.debug("selectSession -> session",e),E.unhold(e)},E.typeWrapper=function(e){switch(e.key.toLowerCase()){case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":case"*":case"#":E.type(e.key);break;case"enter":E.call()}},E.toggleDialpad=function(){E.showDialpad=!E.showDialpad},E.referAttended=function(e){console.debug("referAttended -> session",e),a.show({controller:"ReferAttendedDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/referAttended/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{session:e,sessions:_.reject(E.sessions,{id:e.id}),isJabraEnabled:E.isJabraEnabled}})},E.closeDialpad=function(){E.showDialpad=!1},E.initDevice=R,E.putOtherCallsOnHold=function(e){if(console.debug("putOtherCallsOnHold -> session",e),1<E.sessions.length)for(var n=0;n<E.sessions.length;n+=1)E.sessions[n].id===e.id||E.sessions[n].isOnHold().remote||E.sessions[n].hold({useUpdate:!1})},E.targetChanged=function(e){e?/^(\w|\.|\+|#|\*|\(|\)|\s|-)*$/.test(e)?(E.target=e,p.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target)):E.target?p.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target):m():m()},E.targetSelected=function(e){e&&(E.target=e.originalObject.target,E.call(),m())},E.start3WayConf=function(){E.isInConference=!0,E.canGoInConference=!1,E.currentConferenceSessions.push(E.sessions[0].id),E.currentConferenceSessions.push(E.sessions[1].id);var e=new AudioContext,n=E.sessions[0].connection.getSenders()[0],t=E.sessions[0].connection.getReceivers()[0];t.track.addEventListener("unmute",function(){setTimeout(function(){N()},1e3)},!1);var a=E.sessions[1].connection.getSenders()[0],i=E.sessions[1].connection.getReceivers()[0];i.track.addEventListener("unmute",function(){setTimeout(function(){N()},1e3)},!1),E.sessions[0].unhold({useUpdate:!1}),E.sessions[1].unhold({useUpdate:!1}),t.track.enabled=!0,i.track.enabled=!0;var s=new MediaStream,o=e.createMediaStreamDestination();o=(e=new AudioContext).createMediaStreamDestination();var r=e.createMediaStreamSource(new MediaStream([i.track]));r.connect(o),(r=e.createMediaStreamSource(new MediaStream([n.track]))).connect(o),n.replaceTrack(o.stream.getTracks()[0]).then(function(){}),o=e.createMediaStreamDestination(),(r=e.createMediaStreamSource(new MediaStream([t.track]))).connect(o),(r=e.createMediaStreamSource(new MediaStream([a.track]))).connect(o),a.replaceTrack(o.stream.getTracks()[0]).then(function(){s.addTrack(t.track),s.addTrack(i.track);var e=document.getElementById("remote-audio");e.srcObject=s;var n=e.play();void 0!==n&&n.then(function(){}).catch(function(e){console.log(e)})})},E.patchConference=N,p.$on("webrtc::settings",function(e){a.show({controller:"SettingsController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/settings/settings.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{devices:function(){return navigator.mediaDevices.enumerateDevices()}},locals:{conf:E.conf,activeSessions:E.sessions}}).then(function(e){e&&(E.conf=e,E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,c(E.isJabraEnabled=!1)}).catch(function(e){console.error("Unable to shutdown Jabra library",e)}):c(!1)))})}),p.$on("webrtc::logout",function(){E.ua.stop(),jabra&&E.isJabraInitialized&&jabra.shutdown(),navigator.mediaDevices.ondevicechange=function(){}}),p.$on("webrtc::call",function(e,n){console.debug("onRemoteCall -> evt, data",e,n),n.target&&(E.target=n.target,E.call())}),p.$on("webrtc::transfer",function(e,n){if(console.debug("onRemoteTransfer -> evt, data",e,n),n.target)for(var t=0;t<E.sessions.length;t+=1)if(E.sessions[t].isEstablished()&&!E.sessions[t].isOnHold().local)return x(n.target).then(function(e){e&&E.sessions[t].refer(e,{eventHandlers:{requestSucceeded:D(E.sessions[t],"requestSucceeded","top right",3e3),requestFailed:D(E.sessions[t],"requestFailed","top right",3e3)}})})}),p.$on("$destroy",function(){console.debug("$destroy event fired"),r.removeAllListeners("webbar:originate"),r.removeAllListeners("webbar:hangup"),r.removeAllListeners("webbar:answer"),r.removeAllListeners("webbar:hold"),r.removeAllListeners("webbar:unhold"),r.removeAllListeners("webbar:transfer"),r.removeAllListeners("webbar:stopmonitors")})}e.$inject=["$scope","$document","$timeout","$interval","$mdDialog","$mdToast","$window","$translate","$http","$q","toasty","api","motNotification","Auth","socket","privacyManager"],angular.module("app.core").controller("MsPhonebarController",e).directive("msPhonebar",function(){return{restrict:"E",scope:{conf:"=",sessions:"="},require:"msPhonebar",controller:"MsPhonebarController",controllerAs:"vm_pb",bindToController:!0,templateUrl:"assets/ms-phonebar/ms-phonebar.html"}})}(),function(){"use strict";function e(n,e,t){var a=this;a.prefixes=e,a.required=t,a.closeDialog=function(e){n.hide(e)},a.keyPress=function(e){13===e.keyCode&&this.call()},a.call=function(){n.hide(a.prefix)}}e.$inject=["$mdDialog","prefixes","required"],angular.module("app.core").controller("PrefixDialogController",e)}(),function(){"use strict";function e(i){return{restrict:"C",controller:["$scope","$element",function(e,n){function t(){n.css("display","inline"),i(a,1e3)}function a(){n.css("display","none"),i(t,1e3)}t()}],replace:!0}}function n(n,i,s,e,t){var o=this;function a(n,e){console.log("startMonitor");var t=i.defer(),a=(e||n.filename.replace(/^.*[\\\/]/,"")).split(".")[0];return s.rpc.startMonitor({uniqueid:o.session.uniqueid,filename:a,format:"wav"}).$promise.then(function(e){n.filename=a+".wav",n.mixmonitorid=e.mixmonitorid,n.status="rec",o.session.monitor=!0,t.resolve(n)}).catch(function(e){t.reject(e)}),t.promise}o.title="Record",o.sessions=e,o.session=t,o.closeDialog=function(){n.hide()},o.addRecording=function(){var e=n.prompt({skipHide:!0}).title("Start new recording").textContent("Type the file name.").placeholder("File name").ariaLabel("File name").initialValue(function(){function e(){return Math.floor(65536*(1+Math.random())).toString(16).substring(1)}return e()+e()+"-"+e()+"-"+e()+"-"+e()+"-"+e()+e()+e()}()).ok("Start").cancel("Cancel");n.show(e).then(function(e){return a({},e)}).then(function(e){o.session.monitors.push(e)})},o.stop=function(n){return console.log("stopMonitor"),s.rpc.stopMonitor({uniqueid:o.session.uniqueid,mixmonitorid:n.mixmonitorid}).$promise.then(function(e){n.status="pause",o.session.monitor=_.includes(o.session.monitors,{status:"rec"})}).catch(function(e){console.error(e)})},o.start=a}e.$inject=["$timeout"],n.$inject=["$mdDialog","$q","api","sessions","session"],angular.module("app.core").directive("msBlink",e).controller("RecordDialogController",n)}(),function(){"use strict";function e(n,s,a,i,e){var o=this;function r(e,n,t,a,i){return console.debug("onTransferCallback -> session, textContent, position, delay",e,n,t,a),function(){s.show(s.simple().textContent(n).position(t).hideDelay(a)),e.terminate(),jabra&&i&&jabra.onHook(),l()}}function l(e){n.hide(e)}o.title="Refer Attended",o.sessions=a,o.session=i,o.isJabraEnabled=e,o.sessionTarget=null,a.length&&(o.target=a[0].user),o.closeDialog=l,o.transfer=function(){var e,n,t=_.find(a,function(e){if(e.user===o.target)return e});n=t.outgoing?(e=t,o.session):(e=o.session,t);n.refer(e.user,{replaces:e,eventHandlers:{requestSucceeded:r(i,"requestSucceeded","top right",3e3,o.isJabraEnabled),requestFailed:r(i,"requestFailed","top right",3e3,o.isJabraEnabled)}})}}e.$inject=["$mdDialog","$mdToast","sessions","session","isJabraEnabled"],angular.module("app.core").controller("ReferAttendedDialogController",e)}(),function(){"use strict";function e(e,s,n,t){var a=this;function i(e,n,t){var a;if(s[t]){if(a=_.find(e,function(e){return e.deviceId===s[t]}))return a.deviceId;var i=_.findIndex(e,function(e){return e.kind===n});if(0<=i)return e[i].deviceId}else(a=_.find(e,function(e){return e.kind===n}))&&(s[t]=a.deviceId);return s[t]||null}_.remove(n,function(e){return"audioinput"===e.kind&&("default"===e.deviceId||"communications"===e.deviceId)||"audiooutput"===e.kind&&("default"===e.deviceId||"communications"===e.deviceId)}),s.ringingId=i(n,"audiooutput","ringingId"),s.speakerId=i(n,"audiooutput","speakerId"),s.microphoneId=i(n,"audioinput","microphoneId"),s.ringingVolume=s.ringingVolume||.5,s.speakerVolume=s.speakerVolume||.5,s.microphoneVolume=s.microphoneVolume||1,s.ringingMute=s.ringingMute||!1,s.speakerMute=s.speakerMute||!1,s.microphoneMute=s.microphoneMute||!1,a.conf=angular.copy(s),a.devices=n,a.activeSessions=t,a.saveSettings=function(){e.hide(a.conf)},a.closeDialog=function(){e.hide()},a.isCompatibleBrowser=function(){return"chrome"===a.conf.browserName.toLowerCase()||"opera"===a.conf.browserName.toLowerCase()||"safari"===a.conf.browserName.toLowerCase()}}e.$inject=["$mdDialog","conf","devices","activeSessions"],angular.module("app.toolbar").controller("SettingsController",e)}(),function(){"use strict";function e(t,a){var i=this;function s(e){var n=e.key,t={param:i.query[n],resources:e.options,placeholder:e.placeholder,ngValue:e.ngValue};a.setPlaceholder(t).then(function(e){i.placeholders[n]=e})}i.pickerModels={},i.placeholders={},i.localizationMap=t.localizationMap,i.onMultiselectInit=function(e){s(e)},i.onDateRangeInit=function(e){var n=e.key;i.query[n]?i.pickerModels[n]=t.setSelectedDate(i.query[n]):i.pickerModels[n]={dateStart:null}},i.onMultiselectSelection=function(e,n){n&&(s(e),i.search())},i.onDateRangeSelection=function(e){var n=e.key;i.pickerModels[n].dateStart?!0===e.useFromToKeys?i.query[n]={from:moment(i.pickerModels[n].dateStart).utcOffset(0,!0).format(),to:moment(i.pickerModels[n].dateEnd).utcOffset(0,!0).add(23,"hours").add(59,"minutes").add(59,"seconds").format()}:i.query[n]={$gte:moment(i.pickerModels[n].dateStart).utcOffset(0,!0).format(),$lte:moment(i.pickerModels[n].dateEnd).utcOffset(0,!0).add(23,"hours").add(59,"minutes").add(59,"seconds").format()}:i.query[n]=void 0;i.search()},i.clearDate=function(e){var n=e.key;i.pickerModels[n]={dateStart:null},delete i.query[n],i.search()},i.clearSelection=function(e){var n=e.key,t=e.ngValue||"id";i.query[n]=!1===e.clearAll?[_.head(e.options)[t]]:[],s(e),i.search()},i.selectAll=function(e){var n=e.key,t=e.ngValue||"id";i.query[n]=_.map(e.options,t),s(e),i.search()}}function n(p,e){var g={localizationMap:e,setSelectedDate:function(e){var n=e.$gte?new Date(moment.utc(e.$gte).format("YYYY-MM-DD")):new Date(moment.utc(e.from).format("YYYY-MM-DD")),t=e.$lte?new Date(moment.utc(e.$lte).format("YYYY-MM-DD")):new Date(moment.utc(e.to).format("YYYY-MM-DD")),a={dateStart:new Date(n.getFullYear(),n.getMonth(),n.getDate()),dateEnd:new Date(t.getFullYear(),t.getMonth(),t.getDate())};return a.selectedTemplateName=(i=a,moment(i.dateStart).isSame(i.dateEnd)?(u=i,moment().startOf("day").isSame(u.dateStart)?g.localizationMap.Today:(m=i,moment().subtract(1,"days").startOf("day").isSame(m.dateStart)?g.localizationMap.Yesterday:p("date")(i.dateStart,"dd MMM yyyy"))):(c=i,moment().startOf("isoWeek").isSame(c.dateStart,"day")&&moment().endOf("isoWeek").isSame(c.dateEnd,"day")?g.localizationMap["This Week"]:(d=i,moment().subtract(1,"weeks").startOf("isoWeek").isSame(d.dateStart,"day")&&moment().subtract(1,"weeks").endOf("isoWeek").isSame(d.dateEnd,"day")?g.localizationMap["Last Week"]:(l=i,moment().startOf("month").isSame(l.dateStart,"day")&&moment().endOf("month").isSame(l.dateEnd,"day")?g.localizationMap["This Month"]:(r=i,moment().subtract(1,"months").startOf("month").isSame(r.dateStart,"day")&&moment().subtract(1,"months").endOf("month").isSame(r.dateEnd,"day")?g.localizationMap["Last Month"]:(o=i,moment().startOf("year").isSame(o.dateStart,"day")&&moment().endOf("year").isSame(o.dateEnd,"day")?g.localizationMap["This Year"]:(s=i,moment().subtract(1,"years").startOf("year").isSame(s.dateStart,"day")&&moment().subtract(1,"years").endOf("year").isSame(s.dateEnd,"day")?g.localizationMap["Last Year"]:p("date")(i.dateStart,"dd"+(i.dateStart.getMonth()!==i.dateEnd.getMonth()||i.dateStart.getFullYear()!==i.dateEnd.getFullYear()?" MMM":"")+(i.dateStart.getFullYear()!==i.dateEnd.getFullYear()?" yyyy":""))+" - "+p("date")(i.dateEnd,"dd MMM yyyy")))))))),a;var i,s,o,r,l,d,c,m,u}};return g}n.$inject=["$filter","dateFilterLocalizationFactory"],e.$inject=["dateRangeManager","quickFilterManager"],angular.module("app.core").directive("msQuickFilter",function(){return{restrict:"E",scope:{query:"=",filters:"=",search:"&"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-quick-filter/ms-quick-filter.html"}}).factory("dateRangeManager",n)}(),function(){"use strict";angular.module("app.core").directive("msRandomClass",function(){return{restrict:"A",scope:{msRandomClass:"="},link:function(e,n){var t=e.msRandomClass[Math.floor(Math.random()*e.msRandomClass.length)];n.addClass(t)}}})}(),function(){"use strict";function e(i){return{restrict:"E",scope:{id:"=",model:"=",download:"="},replace:!0,link:function(n,e){var t=!1,a=document.createElement("audio");n.download||a.setAttribute("controlsList","nodownload"),a.setAttribute("preload","none"),a.setAttribute("controls",""),a.setAttribute("style","width: 265px;"),a.setAttribute("src"," "),a.onplay=function(e){t||(t=!0,e.preventDefault(),i[n.model||"voiceRecording"].download({id:n.id}).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type});a.setAttribute("type",e.type),a.setAttribute("src",URL.createObjectURL(t)),a.play()}).catch(function(e){console.error(e)}))},e.append(a)}}}e.$inject=["api"],angular.module("app.core").directive("msRecording",e)}(),function(){"use strict";angular.module("app.core").directive("msResponsiveTable",function(){return{restrict:"A",link:function(e,n){var t=angular.element('<div class="ms-responsive-table-wrapper"></div>');n.after(t),t.append(n)}}})}(),function(){"use strict";function e(s,o,n,t){return{restrict:"AE",compile:function(e){if(!(t.getConfig("disableCustomScrollbars")||t.getConfig("disableCustomScrollbarsOnMobile")&&n.isMobile()))return e.addClass("ms-scroll"),function(e,n,t){var a={};function i(){PerfectScrollbar.update(n[0])}t.msScroll&&(a=e.$eval(t.msScroll)),a=angular.extend({},o.getConfig(),a),s(function(){PerfectScrollbar.initialize(n[0],a)},0),n.on("mouseenter",i),e.$watch(function(){return n.prop("scrollHeight")},function(e,n){angular.isUndefined(e)||angular.equals(e,n)||i()}),e.$watch(function(){return n.prop("scrollWidth")},function(e,n){angular.isUndefined(e)||angular.equals(e,n)||i()}),e.$on("$destroy",function(){n.off("mouseenter"),PerfectScrollbar.destroy(n[0])})}}}}e.$inject=["$timeout","msScrollConfig","msUtils","motionConfig"],angular.module("app.core").provider("msScrollConfig",function(){var n={wheelSpeed:1,wheelPropagation:!1,swipePropagation:!0,minScrollbarLength:null,maxScrollbarLength:null,useBothWheelAxes:!1,useKeyboard:!0,suppressScrollX:!1,suppressScrollY:!1,scrollXMarginOffset:0,scrollYMarginOffset:0,stopPropagationOnClick:!0};this.config=function(e){n=angular.extend({},n,e)},this.$get=function(){var e={getConfig:function(){return n}};return e}}).directive("msScroll",e)}(),function(){"use strict";function e(n,i,s,e){var o=this;function t(){angular.isArray(o.onSearch)?a(o.onSearch):o.onResultClick?(o.resultsLoading=!0,n.$parent.$eval("vm.search(query)",{query:o.query.filter}).then(function(e){a(e)}).catch(function(){a([])}).finally(function(){o.resultsLoading=!1})):o.onSearch()}function a(e){o.expanded&&(void 0===e||angular.isArray(e)||null===e)&&(o.selectedResultIndex=0,o.results=e)}function r(){o.expanded=!0,o.displayOn=!0,n.expand()}function l(e){!1!==e&&(o.query.filter=void 0,o.onResultClick?a(null):t()),o.expanded=!1,n.collapse()}function d(e){o.onResultClick&&o.onResultClick({item:e}),l()}function c(){var e=i.find(".ms-search-bar-results"),n=angular.element(e.find(".result")[o.selectedResultIndex]);if(e&&n){var t=n.position().top-8,a=n.position().top+n.outerHeight()+8;o.ignoreMouseEvents=!0,s.cancel(o.mouseEventIgnoreTimeout),o.mouseEventIgnoreTimeout=s(function(){o.ignoreMouseEvents=!1},250),e.scrollTop()>t&&e.scrollTop(t),a>e.height()+e.scrollTop()&&e.scrollTop(a-e.height())}}o.queryOptions={debounce:o.debounce||0},o.searchOnEnterKey=e.get().searchOnEnterKey||!1,o.resultsLoading=!1,o.results=null,o.selectedResultIndex=0,o.ignoreMouseEvents=!1,o.expandBar=r,o.collapseBar=l,o.blurCollapse=function(){if(!o.collapseOnBlur)return;l()},o.onKeyDown=function(e){var n=e.keyCode;-1<[27,38,40].indexOf(n)&&e.preventDefault();switch(n){case 13:if(!o.onResultClick)return t();if(!o.results)return;d(o.results[o.selectedResultIndex]);break;case 27:l();break;case 38:0<=o.selectedResultIndex-1&&(o.selectedResultIndex--,c());break;case 40:if(!o.results)return;o.selectedResultIndex+1<o.results.length&&(o.selectedResultIndex++,c())}},o.absorbEvent=function(e){e.preventDefault()},o.handleMouseenter=function(e){if(o.ignoreMouseEvents)return;o.selectedResultIndex=e},o.handleResultClick=d,n.$watch("vm.displayOn",function(e){angular.isUndefined(e)||(!0!==e||o.expanded?e||!1===o.expanded||l(!1):r())}),n.$watch("vm.query.filter",function(e,n){if(!angular.isUndefined(e)&&0!==e.length&&!angular.equals(e,n)&&!1!==o.displayOn){if(o.expanded){if(!0===o.searchOnEnterKey&&!o.onResultClick)return;if(o.minChars&&o.minChars>e.length)return}else r();t()}})}function n(a){return{restrict:"E",scope:{query:"=?",debounce:"=?",direction:"@",iconColor:"@",onSearch:"&",onResultClick:"&?",onExpand:"&?",onCollapse:"&?",collapseOnBlur:"<?",minChars:"<?",displayOn:"=?"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-search-bar/ms-search-bar.html",compile:function(e){return e.addClass("ms-search-bar"),{post:function(n,t){n.collapse=function(){if(t.removeClass("expanded"),"down"===n.vm.direction){t.removeClass("down");var e=t.closest("md-toolbar");e&&e.removeClass("h-128")}a.find("body").removeClass("ms-search-bar-expanded")},n.expand=function(){if(t.addClass("expanded"),"down"===n.vm.direction){t.addClass("down");var e=t.closest("md-toolbar");e&&e.addClass("h-128")}a.find("body").addClass("ms-search-bar-expanded")}}}}}}e.$inject=["$scope","$element","$timeout","settingsManager"],n.$inject=["$document"],angular.module("app.core").controller("MsSearchBarController",e).directive("msSearchBar",n)}(),function(){"use strict";function e(e,t,i,o,r,l){var d=this;d.query="",d.queryOptions={debounce:300},d.resultsLoading=!1,d.selectedResultIndex=0,d.ignoreMouseEvents=!1,d.mobileBarActive=!1,d.results=null,d.shortcuts=[],d.sortableOptions={ghostClass:"ghost",forceFallback:!0,fallbackClass:"dragging",onSort:function(){d.saveShortcuts()}},d.populateResults=function(){for(var e=[],n=l.getFlatNavigation(),t=r.defer(),a=0;a<n.length;a++)n[a].uisref&&e.push(n[a]);if(d.query){e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(d.query)))return!0});for(var i=0;i<e.length;i++){e[i].hasShortcut=!1;for(var s=0;s<d.shortcuts.length;s++)if(d.shortcuts[s]._id===e[i]._id){e[i].hasShortcut=!0;break}}}else 0<d.shortcuts.length&&(e=d.shortcuts);return d.selectedResultIndex=0,o(function(){t.resolve(e)},250),t.promise},d.loadShortcuts=function(){var e=r.defer(),n=angular.fromJson(t.get("motion.shortcuts"));angular.isUndefined(n)&&(n=[{title:"Agents",icon:"icon-account-multiple",state:"app.staff.agents",weight:5,children:[],uisref:"app.staff.agents",hasShortcut:!0},{title:"License",icon:"icon-cog",state:"app.settings.license",weight:10,children:[],uisref:"app.settings.license",hasShortcut:!0}],t.put("motion.shortcuts",angular.toJson(n)));return e.resolve(n),e.promise},d.saveShortcuts=function(){var e=r.defer();return t.put("motion.shortcuts",angular.toJson(d.shortcuts)),o(function(){e.resolve({success:!0})},250),e.promise},d.addShortcut=function(e){e.hasShortcut=!0,d.shortcuts.push(e),d.saveShortcuts()},d.removeShortcut=function(e){e.hasShortcut=!1;for(var n=0;n<d.shortcuts.length;n++)d.shortcuts[n]._id===e._id&&(d.shortcuts.splice(n,1),d.query||(0===d.shortcuts.length?d.results=null:n>=d.shortcuts.length&&(d.selectedResultIndex=d.shortcuts.length-1)));d.saveShortcuts()},d.handleResultClick=function(e){e.hasShortcut?d.removeShortcut(e):d.addShortcut(e)},d.absorbEvent=function(e){e.preventDefault()},d.handleKeydown=function(e){var n=e.keyCode;-1<[38,40].indexOf(n)&&e.preventDefault();switch(n){case 13:d.handleResultClick(d.results[d.selectedResultIndex]);break;case 38:0<=d.selectedResultIndex-1&&(d.selectedResultIndex--,d.ensureSelectedResultIsVisible());break;case 40:d.selectedResultIndex+1<d.results.length&&(d.selectedResultIndex++,d.ensureSelectedResultIsVisible())}},d.handleMouseenter=function(e){if(d.ignoreMouseEvents)return;d.selectedResultIndex=e},d.temporarilyIgnoreMouseEvents=function(){d.ignoreMouseEvents=!0,o.cancel(d.mouseEventIgnoreTimeout),d.mouseEventIgnoreTimeout=o(function(){d.ignoreMouseEvents=!1},250)},d.ensureSelectedResultIsVisible=function(){var e=i.find("#ms-shortcut-add-menu").find(".results"),n=angular.element(e.find(".result")[d.selectedResultIndex]);if(e&&n){var t=n.position().top-8,a=n.position().top+n.outerHeight()+8;d.temporarilyIgnoreMouseEvents(),e.scrollTop()>t&&e.scrollTop(t),a>e.height()+e.scrollTop()&&e.scrollTop(a-e.height())}},d.toggleMobileBar=function(){d.mobileBarActive=!d.mobileBarActive},d.loadShortcuts().then(function(e){d.shortcuts=e,0<d.shortcuts.length&&(d.results=e)}),e.$watch("MsShortcuts.query",function(e,n){angular.isUndefined(e)||angular.equals(e,n)||(d.resultsLoading=!0,d.populateResults().then(function(e){d.results=e},function(){d.results=[]}).finally(function(){d.resultsLoading=!1}))})}e.$inject=["$scope","$cookies","$document","$timeout","$q","msNavigationService"],angular.module("app.core").controller("MsShortcutsController",e).directive("msShortcuts",function(){return{restrict:"E",scope:{},require:"msShortcuts",controller:"MsShortcutsController as MsShortcuts",bindToController:{},templateUrl:"app/core/directives/ms-shortcuts/ms-shortcuts.html",compile:function(e){return e.addClass("ms-shortcuts"),function(e,n){}}}})}(),function(){"use strict";angular.module("app.core").directive("msSidenavHelper",function(){return{restrict:"A",require:"^mdSidenav",link:function(e,n,t,a){e.$watch(function(){return a.isOpen()&&!a.isLockedOpen()},function(e){angular.isUndefined(e)||(n.parent().toggleClass("full-height",e),angular.element("html").toggleClass("sidenav-open",e))})}}})}(),function(){"use strict";function e(a){return{restrict:"E",link:function(e,n){var t=e.$on("msSplashScreen::remove",function(){a.leave(n).then(function(){t(),e=n=null})})}}}e.$inject=["$animate"],angular.module("app.core").directive("msSplashScreen",e)}(),function(){"use strict";function e(e){var i=this;function n(){i.setCurrentStep(1)}function t(e){return o(e)?i.steps[e-1].scope.optionalStep:null}function a(e){return o(e)?!!i.steps[e-1].scope.hideStep:null}function s(e){return o(e)?!!t(e)||i.steps[e-1].form.$valid:null}function o(e){return!(angular.isUndefined(e)||e<1||e>i.steps.length)}i.mainForm=void 0,i.orientation="horizontal",i.steps=[],i.currentStep=void 0,i.currentStepNumber=1,i.setOrientation=function(e){i.orientation=e||"horizontal"},i.registerMainForm=function(e){i.mainForm=e},i.registerStep=function(e,n,t){var a={element:e,scope:n,form:t,stepNumber:n.step||i.steps.length+1,stepTitle:n.stepTitle,stepTitleTranslate:n.stepTitleTranslate};return i.steps.push(a),i.steps.sort(function(e,n){return e.stepNumber-n.stepNumber}),a},i.setupSteps=function(){i.setCurrentStep(i.currentStepNumber)},i.resetForm=function(){e(function(){for(var e=0;e<i.steps.length;e++)i.steps[e].form.$setPristine(),i.steps[e].form.$setUntouched();i.mainForm.$setPristine(),i.mainForm.$setUntouched(),n()})},i.setCurrentStep=function(e){if(!o(e))return;if(i.currentStepNumber=e,"horizontal"===i.orientation){for(var n=0;n<i.steps.length;n++)i.steps[n].element.hide();i.steps[i.currentStepNumber-1].element.show()}else if("vertical"===i.orientation){for(var t=0;t<i.steps.length;t++)i.steps[t].element.find(".ms-stepper-step-content").hide();i.steps[i.currentStepNumber-1].element.find(".ms-stepper-step-content").show()}},i.gotoStep=function(e){if(a(e))return;i.setCurrentStep(e)},i.gotoPreviousStep=function(){for(var e=i.currentStepNumber-1,n=e;1<=n;n--)if(!a(n)){e=n;break}i.setCurrentStep(e)},i.gotoNextStep=function(){for(var e=i.currentStepNumber+1,n=e;n<=i.steps.length;n++)if(!a(n)){e=n;break}i.setCurrentStep(e)},i.gotoFirstStep=n,i.gotoLastStep=function(){i.setCurrentStep(i.steps.length)},i.isFirstStep=function(){return 1===i.currentStepNumber},i.isLastStep=function(){return i.currentStepNumber===i.steps.length},i.isStepCurrent=function(e){return o(e)?i.currentStepNumber===e:null},i.isStepDisabled=function(e){if(!o(e))return null;for(var n=!1,t=1;t<e;t++)if(!s(t)){n=!0;break}return n},i.isStepOptional=t,i.isStepHidden=a,i.filterHiddenStep=function(e){return!a(e.stepNumber)},i.isStepValid=s,i.isStepNumberValid=o,i.isFormValid=function(){return i.mainForm.$valid}}function n(o){return{restrict:"A",scope:{},require:["form","msVerticalStepper"],priority:1001,controller:"MsStepperController as MsStepper",bindToController:{model:"=ngModel"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/vertical/vertical.html",compile:function(e){return e.addClass("ms-stepper"),function(e,n,t,a){var i=a[0],s=a[1];o(function(){s.setOrientation("vertical"),s.registerMainForm(i),s.setupSteps()})}}}}e.$inject=["$timeout"],n.$inject=["$timeout"],angular.module("app.core").controller("MsStepperController",e).directive("msHorizontalStepper",function(){return{restrict:"A",scope:{},require:["form","msHorizontalStepper"],priority:1001,controller:"MsStepperController as MsStepper",bindToController:{model:"=ngModel"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/horizontal/horizontal.html",compile:function(e){return e.addClass("ms-stepper"),function(e,n,t,a){var i=a[0],s=a[1];s.setOrientation("horizontal"),s.registerMainForm(i),s.setupSteps()}}}}).directive("msHorizontalStepperStep",function(){return{restrict:"E",require:["form","^msHorizontalStepper"],priority:1e3,scope:{step:"=?",stepTitle:"=?",stepTitleTranslate:"=?",optionalStep:"=?",hideStep:"=?"},compile:function(e){return e.addClass("ms-stepper-step"),function(e,n,t,a){var i=a[0],s=a[1];e.optionalStep=angular.isDefined(t.optionalStep),s.registerStep(n,e,i),n.hide()}}}}).directive("msVerticalStepper",n).directive("msVerticalStepperStep",function(){return{restrict:"E",require:["form","^msVerticalStepper"],priority:1e3,scope:{step:"=?",stepTitle:"=?",stepTitleTranslate:"=?",optionalStep:"=?",hideStep:"=?"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/vertical/step/vertical-step.html",compile:function(e){return e.addClass("ms-stepper-step"),function(e,n,t,a){var i=a[0],s=a[1];e.optionalStep=angular.isDefined(t.optionalStep),e.stepInfo=s.registerStep(n,e,i),e.MsStepper=s,n.find(".ms-stepper-step-content").hide()}}}})}(),function(){"use strict";function e(e){return{restrict:"E",scope:{},transclude:!0,controller:"MsTabScrollController",controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-tab-scroll/ms-tab-scroll.html",compile:function(e){return e.addClass("ms-tab-scroll"),function(e,n){}}}}e.$inject=["$document"],angular.module("app.core").controller("MsTabScrollController",function(){function n(){var e=document.getElementById("bar-container"),n=document.getElementById("tab-container");return n.scrollWidth>e.scrollWidth&&0==e.scrollLeft&&0==n.scrollLeft?"right":n.scrollWidth>e.scrollWidth&&n.scrollLeft>e.scrollLeft&&e.scrollWidth+n.scrollLeft>=n.scrollWidth?"left":n.scrollWidth>e.scrollWidth&&n.scrollLeft>e.scrollLeft&&e.scrollWidth+n.scrollLeft<n.scrollWidth?"both":"none"}this.onTabScroll=function(e){"left"==e?$("#tab-container").stop().animate({scrollLeft:"-=400"},1e3):$("#tab-container").stop().animate({scrollLeft:"+=400"},1e3)},this.canScroll=function(e){switch(n()){case"both":return!0;case"left":return"left"==e;case"right":return"right"==e;case"none":default:return!1}}}).directive("msTabScroll",e)}(),function(){"use strict";function e(m,u){return{scope:!0,require:"^msTimeline",compile:function(e){return e.addClass("ms-timeline-item").addClass("hidden"),function(e,t,n,a){var i=72,s=!1,o=!1,r=a.getScrollEl();!function(){t.find("ms-card")?e.$on("msCard::cardTemplateLoaded",function(e,n){var t=angular.element(n[0]);d(t).then(function(){m(function(){s=!0})})}):d(t).then(function(){m(function(){s=!0})});r.on("scroll",c),c()}();var l=e.$watch(function(){return s&&o},function(e,n){angular.equals(e,n)||e&&(t.removeClass("hidden").addClass("animate"),l())},!0);function d(e){var n=u.defer(),t=e.find("img");return 0<t.length?t.on("load",function(){n.resolve("Image is loaded")}):n.resolve("No images"),n.promise}function c(){r.scrollTop()+r.height()>t.position().top+i&&(m(function(){o=!0}),r.off("scroll",c))}}}}}e.$inject=["$timeout","$q"],angular.module("app.core").controller("MsTimelineController",function(){var n=this;n.scrollEl=void 0,n.setScrollEl=function(e){n.scrollEl=e},n.getScrollEl=function(){return n.scrollEl}}).directive("msTimeline",function(){return{scope:{msTimeline:"=?",loadMore:"&?msTimelineLoadMore"},controller:"MsTimelineController",compile:function(e){return e.addClass("ms-timeline"),function(e,n,t,a){var i=angular.element('<div class="ms-timeline-loader md-accent-bg md-whiteframe-4dp"><span class="spinner animate-rotate"></span></div>');n.append(i);var s={scrollEl:"#content"};s=angular.extend(s,e.msTimeline,{});var o=angular.element(s.scrollEl);a.setScrollEl(o);var r=144;function l(){o.scrollTop()+o.height()+r>i.position().top&&(i.addClass("show"),c(),e.loadMore&&e.loadMore().then(function(){i.removeClass("show"),d()},function(){i.remove()}))}function d(){o.on("scroll",l)}function c(){o.off("scroll",l)}d(),e.$on("$destroy",function(){c()})}}}}).directive("msTimelineItem",e)}(),function(){"use strict";function e(a,e,n,i,t){var r=this;function s(){!function(){r.millis=l().diff(moment(r.startingTime));var e=moment.duration(r.millis),n=e.seconds(),t=e.minutes(),a=e.hours(),i=e.days(),s=e.months(),o=e.years();r.seconds=n<10?"0"+n:n,r.minutes=t<10?"0"+t:t,r.hours=a<10?"0"+a:a,r.days=i<10?"0"+i:i,r.months=s<10?"0"+s:s,r.years=o<10?"0"+o:o,r.timer=0<r.days?r.days+"d ":r.hours+":"+r.minutes+":"+r.seconds}(),r.timeoutId=setTimeout(function(){s(),a.$digest()},r.interval)}function l(e){var n=(e||moment()).utcOffset(a.serverDateOffset).format("YYYY-MM-DD HH:mm:ss");return moment(n)}function o(){n(function(n,t){try{if(a.serverDateOffset)return void n(l());i.setting.getDate().$promise.then(function(e){a.serverDateOffset=e.offset,n(moment(e.now))})}catch(e){t(e)}}).then(function(e){var n=r.startTime?moment(r.startTime):void 0;r.startTime?n.isAfter(e,"hour")||n.isBefore(e,"hour")?r.startingTime=l(n):r.startingTime=n:r.startingTime=e,s()}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.getDate",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}o(),a.$watch("vm.startTime",function(e,n){angular.isUndefined(e)||0!==e.length&&(angular.equals(e,n)||o())}),a.$on("timer-start",function(){r.startTime=void 0,o()}),e.bind("$destroy",function(){r.timeoutId&&clearTimeout(r.timeoutId)})}e.$inject=["$scope","$element","$q","api","toasty"],angular.module("app.core").directive("timer",function(){return{restrict:"EA",replace:!1,scope:{startTime:"=?",interval:"=?"},template:"<span ng-cloak>{{ vm.timer }}</span>",compile:function(){return{pre:function(e,n,t){e.interval=t.interval||1e3}}},controller:e,controllerAs:"vm",bindToController:!0}})}(),function(){"use strict";angular.module("app.core").directive("msTimezone",function(){return{restrict:"E",scope:{ngModel:"="},controller:["$scope",function(e){e.timezone=[{name:"Europe/Andorra",utcOffset:60,offsetStr:"+01:00",countries:["AD"]},{name:"Asia/Dubai",utcOffset:240,offsetStr:"+04:00",countries:["AE","OM"]},{name:"Asia/Kabul",utcOffset:270,offsetStr:"+04:30",countries:["AF"]},{name:"Europe/Tirane",utcOffset:60,offsetStr:"+01:00",countries:["AL"]},{name:"Asia/Yerevan",utcOffset:240,offsetStr:"+04:00",countries:["AM"]},{name:"Antarctica/Rothera",utcOffset:-180,offsetStr:"-03:00",countries:["AQ"]},{name:"Antarctica/Palmer",utcOffset:-180,offsetStr:"-03:00",countries:["AQ"]},{name:"Antarctica/Mawson",utcOffset:300,offsetStr:"+05:00",countries:["AQ"]},{name:"Antarctica/Davis",utcOffset:420,offsetStr:"+07:00",countries:["AQ"]},{name:"Antarctica/Casey",utcOffset:480,offsetStr:"+08:00",countries:["AQ"]},{name:"Antarctica/Vostok",utcOffset:360,offsetStr:"+06:00",countries:["AQ"]},{name:"Antarctica/DumontDUrville",utcOffset:600,offsetStr:"+10:00",countries:["AQ"]},{name:"Antarctica/Syowa",utcOffset:180,offsetStr:"+03:00",countries:["AQ"]},{name:"Antarctica/Troll",utcOffset:0,offsetStr:"+00:00",countries:["AQ"]},{name:"America/Argentina/Buenos_Aires",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Cordoba",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Salta",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Jujuy",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Tucuman",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Catamarca",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/La_Rioja",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/San_Juan",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Mendoza",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/San_Luis",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Rio_Gallegos",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Ushuaia",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"Pacific/Pago_Pago",utcOffset:-660,offsetStr:"-11:00",countries:["AS","UM"]},{name:"Europe/Vienna",utcOffset:60,offsetStr:"+01:00",countries:["AT"]},{name:"Australia/Lord_Howe",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Antarctica/Macquarie",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Hobart",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Currie",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Melbourne",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Sydney",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Broken_Hill",utcOffset:630,offsetStr:"+10:30",countries:["AU"]},{name:"Australia/Brisbane",utcOffset:600,offsetStr:"+10:00",countries:["AU"]},{name:"Australia/Lindeman",utcOffset:600,offsetStr:"+10:00",countries:["AU"]},{name:"Australia/Adelaide",utcOffset:630,offsetStr:"+10:30",countries:["AU"]},{name:"Australia/Darwin",utcOffset:570,offsetStr:"+09:30",countries:["AU"]},{name:"Australia/Perth",utcOffset:480,offsetStr:"+08:00",countries:["AU"]},{name:"Australia/Eucla",utcOffset:525,offsetStr:"+08:45",countries:["AU"]},{name:"Asia/Baku",utcOffset:240,offsetStr:"+04:00",countries:["AZ"]},{name:"America/Barbados",utcOffset:-240,offsetStr:"-04:00",countries:["BB"]},{name:"Asia/Dhaka",utcOffset:360,offsetStr:"+06:00",countries:["BD"]},{name:"Europe/Brussels",utcOffset:60,offsetStr:"+01:00",countries:["BE"]},{name:"Europe/Sofia",utcOffset:120,offsetStr:"+02:00",countries:["BG"]},{name:"Atlantic/Bermuda",utcOffset:-240,offsetStr:"-04:00",countries:["BM"]},{name:"Asia/Brunei",utcOffset:480,offsetStr:"+08:00",countries:["BN"]},{name:"America/La_Paz",utcOffset:-240,offsetStr:"-04:00",countries:["BO"]},{name:"America/Noronha",utcOffset:-120,offsetStr:"-02:00",countries:["BR"]},{name:"America/Belem",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Fortaleza",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Recife",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Araguaina",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Maceio",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Bahia",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Sao_Paulo",utcOffset:-120,offsetStr:"-02:00",countries:["BR"]},{name:"America/Campo_Grande",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Cuiaba",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Santarem",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Porto_Velho",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Boa_Vista",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Manaus",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Eirunepe",utcOffset:-300,offsetStr:"-05:00",countries:["BR"]},{name:"America/Rio_Branco",utcOffset:-300,offsetStr:"-05:00",countries:["BR"]},{name:"America/Nassau",utcOffset:-300,offsetStr:"-05:00",countries:["BS"]},{name:"Asia/Thimphu",utcOffset:360,offsetStr:"+06:00",countries:["BT"]},{name:"Europe/Minsk",utcOffset:180,offsetStr:"+03:00",countries:["BY"]},{name:"America/Belize",utcOffset:-360,offsetStr:"-06:00",countries:["BZ"]},{name:"America/St_Johns",utcOffset:-210,offsetStr:"-03:30",countries:["CA"]},{name:"America/Halifax",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Glace_Bay",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Moncton",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Goose_Bay",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Blanc-Sablon",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Toronto",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Nipigon",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Thunder_Bay",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Iqaluit",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Pangnirtung",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Resolute",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Atikokan",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Rankin_Inlet",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Winnipeg",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Rainy_River",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Regina",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Swift_Current",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Edmonton",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Cambridge_Bay",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Yellowknife",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Inuvik",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Creston",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Dawson_Creek",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Fort_Nelson",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Vancouver",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"America/Whitehorse",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"America/Dawson",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"Indian/Cocos",utcOffset:390,offsetStr:"+06:30",countries:["CC"]},{name:"Europe/Zurich",utcOffset:60,offsetStr:"+01:00",countries:["CH","DE","LI"]},{name:"Africa/Abidjan",utcOffset:0,offsetStr:"+00:00",countries:["CI","BF","GM","GN","ML","MR","SH","SL","SN","ST","TG"]},{name:"Pacific/Rarotonga",utcOffset:-600,offsetStr:"-10:00",countries:["CK"]},{name:"America/Santiago",utcOffset:-180,offsetStr:"-03:00",countries:["CL"]},{name:"Pacific/Easter",utcOffset:-300,offsetStr:"-05:00",countries:["CL"]},{name:"Asia/Shanghai",utcOffset:480,offsetStr:"+08:00",countries:["CN"]},{name:"Asia/Urumqi",utcOffset:360,offsetStr:"+06:00",countries:["CN"]},{name:"America/Bogota",utcOffset:-300,offsetStr:"-05:00",countries:["CO"]},{name:"America/Costa_Rica",utcOffset:-360,offsetStr:"-06:00",countries:["CR"]},{name:"America/Havana",utcOffset:-300,offsetStr:"-05:00",countries:["CU"]},{name:"Atlantic/Cape_Verde",utcOffset:-60,offsetStr:"-01:00",countries:["CV"]},{name:"America/Curacao",utcOffset:-240,offsetStr:"-04:00",countries:["CW","AW","BQ","SX"]},{name:"Indian/Christmas",utcOffset:420,offsetStr:"+07:00",countries:["CX"]},{name:"Asia/Nicosia",utcOffset:120,offsetStr:"+02:00",countries:["CY"]},{name:"Europe/Prague",utcOffset:60,offsetStr:"+01:00",countries:["CZ","SK"]},{name:"Europe/Berlin",utcOffset:60,offsetStr:"+01:00",countries:["DE"]},{name:"Europe/Copenhagen",utcOffset:60,offsetStr:"+01:00",countries:["DK"]},{name:"America/Santo_Domingo",utcOffset:-240,offsetStr:"-04:00",countries:["DO"]},{name:"Africa/Algiers",utcOffset:60,offsetStr:"+01:00",countries:["DZ"]},{name:"America/Guayaquil",utcOffset:-300,offsetStr:"-05:00",countries:["EC"]},{name:"Pacific/Galapagos",utcOffset:-360,offsetStr:"-06:00",countries:["EC"]},{name:"Europe/Tallinn",utcOffset:120,offsetStr:"+02:00",countries:["EE"]},{name:"Africa/Cairo",utcOffset:120,offsetStr:"+02:00",countries:["EG"]},{name:"Africa/El_Aaiun",utcOffset:0,offsetStr:"+00:00",countries:["EH"]},{name:"Europe/Madrid",utcOffset:60,offsetStr:"+01:00",countries:["ES"]},{name:"Africa/Ceuta",utcOffset:60,offsetStr:"+01:00",countries:["ES"]},{name:"Atlantic/Canary",utcOffset:0,offsetStr:"+00:00",countries:["ES"]},{name:"Europe/Helsinki",utcOffset:120,offsetStr:"+02:00",countries:["FI","AX"]},{name:"Pacific/Fiji",utcOffset:720,offsetStr:"+12:00",countries:["FJ"]},{name:"Atlantic/Stanley",utcOffset:-180,offsetStr:"-03:00",countries:["FK"]},{name:"Pacific/Chuuk",utcOffset:600,offsetStr:"+10:00",countries:["FM"]},{name:"Pacific/Pohnpei",utcOffset:660,offsetStr:"+11:00",countries:["FM"]},{name:"Pacific/Kosrae",utcOffset:660,offsetStr:"+11:00",countries:["FM"]},{name:"Atlantic/Faroe",utcOffset:0,offsetStr:"+00:00",countries:["FO"]},{name:"Europe/Paris",utcOffset:60,offsetStr:"+01:00",countries:["FR"]},{name:"Europe/London",utcOffset:0,offsetStr:"+00:00",countries:["GB","GG","IM","JE"]},{name:"Asia/Tbilisi",utcOffset:240,offsetStr:"+04:00",countries:["GE"]},{name:"America/Cayenne",utcOffset:-180,offsetStr:"-03:00",countries:["GF"]},{name:"Africa/Accra",utcOffset:0,offsetStr:"+00:00",countries:["GH"]},{name:"Europe/Gibraltar",utcOffset:60,offsetStr:"+01:00",countries:["GI"]},{name:"America/Godthab",utcOffset:-180,offsetStr:"-03:00",countries:["GL"]},{name:"America/Danmarkshavn",utcOffset:0,offsetStr:"+00:00",countries:["GL"]},{name:"America/Scoresbysund",utcOffset:-60,offsetStr:"-01:00",countries:["GL"]},{name:"America/Thule",utcOffset:-240,offsetStr:"-04:00",countries:["GL"]},{name:"Europe/Athens",utcOffset:120,offsetStr:"+02:00",countries:["GR"]},{name:"Atlantic/South_Georgia",utcOffset:-120,offsetStr:"-02:00",countries:["GS"]},{name:"America/Guatemala",utcOffset:-360,offsetStr:"-06:00",countries:["GT"]},{name:"Pacific/Guam",utcOffset:600,offsetStr:"+10:00",countries:["GU","MP"]},{name:"Africa/Bissau",utcOffset:0,offsetStr:"+00:00",countries:["GW"]},{name:"America/Guyana",utcOffset:-240,offsetStr:"-04:00",countries:["GY"]},{name:"Asia/Hong_Kong",utcOffset:480,offsetStr:"+08:00",countries:["HK"]},{name:"America/Tegucigalpa",utcOffset:-360,offsetStr:"-06:00",countries:["HN"]},{name:"America/Port-au-Prince",utcOffset:-300,offsetStr:"-05:00",countries:["HT"]},{name:"Europe/Budapest",utcOffset:60,offsetStr:"+01:00",countries:["HU"]},{name:"Asia/Jakarta",utcOffset:420,offsetStr:"+07:00",countries:["ID"]},{name:"Asia/Pontianak",utcOffset:420,offsetStr:"+07:00",countries:["ID"]},{name:"Asia/Makassar",utcOffset:480,offsetStr:"+08:00",countries:["ID"]},{name:"Asia/Jayapura",utcOffset:540,offsetStr:"+09:00",countries:["ID"]},{name:"Europe/Dublin",utcOffset:0,offsetStr:"+00:00",countries:["IE"]},{name:"Asia/Jerusalem",utcOffset:120,offsetStr:"+02:00",countries:["IL"]},{name:"Asia/Kolkata",utcOffset:330,offsetStr:"+05:30",countries:["IN"]},{name:"Indian/Chagos",utcOffset:360,offsetStr:"+06:00",countries:["IO"]},{name:"Asia/Baghdad",utcOffset:180,offsetStr:"+03:00",countries:["IQ"]},{name:"Asia/Tehran",utcOffset:210,offsetStr:"+03:30",countries:["IR"]},{name:"Atlantic/Reykjavik",utcOffset:0,offsetStr:"+00:00",countries:["IS"]},{name:"Europe/Rome",utcOffset:60,offsetStr:"+01:00",countries:["IT","SM","VA"]},{name:"America/Jamaica",utcOffset:-300,offsetStr:"-05:00",countries:["JM"]},{name:"Asia/Amman",utcOffset:120,offsetStr:"+02:00",countries:["JO"]},{name:"Asia/Tokyo",utcOffset:540,offsetStr:"+09:00",countries:["JP"]},{name:"Africa/Nairobi",utcOffset:180,offsetStr:"+03:00",countries:["KE","DJ","ER","ET","KM","MG","SO","TZ","UG","YT"]},{name:"Asia/Bishkek",utcOffset:360,offsetStr:"+06:00",countries:["KG"]},{name:"Pacific/Tarawa",utcOffset:720,offsetStr:"+12:00",countries:["KI"]},{name:"Pacific/Enderbury",utcOffset:780,offsetStr:"+13:00",countries:["KI"]},{name:"Pacific/Kiritimati",utcOffset:840,offsetStr:"+14:00",countries:["KI"]},{name:"Asia/Pyongyang",utcOffset:510,offsetStr:"+08:30",countries:["KP"]},{name:"Asia/Seoul",utcOffset:540,offsetStr:"+09:00",countries:["KR"]},{name:"America/Cayman",utcOffset:-300,offsetStr:"-05:00",countries:["KY"]},{name:"Asia/Almaty",utcOffset:360,offsetStr:"+06:00",countries:["KZ"]},{name:"Asia/Qyzylorda",utcOffset:360,offsetStr:"+06:00",countries:["KZ"]},{name:"Asia/Aqtobe",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Aqtau",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Oral",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Beirut",utcOffset:120,offsetStr:"+02:00",countries:["LB"]},{name:"Asia/Colombo",utcOffset:330,offsetStr:"+05:30",countries:["LK"]},{name:"Africa/Monrovia",utcOffset:0,offsetStr:"+00:00",countries:["LR"]},{name:"Europe/Vilnius",utcOffset:120,offsetStr:"+02:00",countries:["LT"]},{name:"Europe/Luxembourg",utcOffset:60,offsetStr:"+01:00",countries:["LU"]},{name:"Europe/Riga",utcOffset:120,offsetStr:"+02:00",countries:["LV"]},{name:"Africa/Tripoli",utcOffset:120,offsetStr:"+02:00",countries:["LY"]},{name:"Africa/Casablanca",utcOffset:0,offsetStr:"+00:00",countries:["MA"]},{name:"Europe/Monaco",utcOffset:60,offsetStr:"+01:00",countries:["MC"]},{name:"Europe/Chisinau",utcOffset:120,offsetStr:"+02:00",countries:["MD"]},{name:"Pacific/Majuro",utcOffset:720,offsetStr:"+12:00",countries:["MH"]},{name:"Pacific/Kwajalein",utcOffset:720,offsetStr:"+12:00",countries:["MH"]},{name:"Asia/Rangoon",utcOffset:390,offsetStr:"+06:30",countries:["MM"]},{name:"Asia/Ulaanbaatar",utcOffset:480,offsetStr:"+08:00",countries:["MN"]},{name:"Asia/Hovd",utcOffset:420,offsetStr:"+07:00",countries:["MN"]},{name:"Asia/Choibalsan",utcOffset:480,offsetStr:"+08:00",countries:["MN"]},{name:"Asia/Macau",utcOffset:480,offsetStr:"+08:00",countries:["MO"]},{name:"America/Martinique",utcOffset:-240,offsetStr:"-04:00",countries:["MQ"]},{name:"Europe/Malta",utcOffset:60,offsetStr:"+01:00",countries:["MT"]},{name:"Indian/Mauritius",utcOffset:240,offsetStr:"+04:00",countries:["MU"]},{name:"Indian/Maldives",utcOffset:300,offsetStr:"+05:00",countries:["MV"]},{name:"America/Mexico_City",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Cancun",utcOffset:-300,offsetStr:"-05:00",countries:["MX"]},{name:"America/Merida",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Monterrey",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Matamoros",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Mazatlan",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Chihuahua",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Ojinaga",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Hermosillo",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Tijuana",utcOffset:-480,offsetStr:"-08:00",countries:["MX"]},{name:"America/Santa_Isabel",utcOffset:-480,offsetStr:"-08:00",countries:["MX"]},{name:"America/Bahia_Banderas",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"Asia/Kuala_Lumpur",utcOffset:480,offsetStr:"+08:00",countries:["MY"]},{name:"Asia/Kuching",utcOffset:480,offsetStr:"+08:00",countries:["MY"]},{name:"Africa/Maputo",utcOffset:120,offsetStr:"+02:00",countries:["MZ","BI","BW","CD","MW","RW","ZM","ZW"]},{name:"Africa/Windhoek",utcOffset:120,offsetStr:"+02:00",countries:["NA"]},{name:"Pacific/Noumea",utcOffset:660,offsetStr:"+11:00",countries:["NC"]},{name:"Pacific/Norfolk",utcOffset:660,offsetStr:"+11:00",countries:["NF"]},{name:"Africa/Lagos",utcOffset:60,offsetStr:"+01:00",countries:["NG","AO","BJ","CD","CF","CG","CM","GA","GQ","NE"]},{name:"America/Managua",utcOffset:-360,offsetStr:"-06:00",countries:["NI"]},{name:"Europe/Amsterdam",utcOffset:60,offsetStr:"+01:00",countries:["NL"]},{name:"Europe/Oslo",utcOffset:60,offsetStr:"+01:00",countries:["NO","SJ"]},{name:"Asia/Kathmandu",utcOffset:345,offsetStr:"+05:45",countries:["NP"]},{name:"Pacific/Nauru",utcOffset:720,offsetStr:"+12:00",countries:["NR"]},{name:"Pacific/Niue",utcOffset:-660,offsetStr:"-11:00",countries:["NU"]},{name:"Pacific/Auckland",utcOffset:780,offsetStr:"+13:00",countries:["NZ","AQ"]},{name:"Pacific/Chatham",utcOffset:825,offsetStr:"+13:45",countries:["NZ"]},{name:"America/Panama",utcOffset:-300,offsetStr:"-05:00",countries:["PA"]},{name:"America/Lima",utcOffset:-300,offsetStr:"-05:00",countries:["PE"]},{name:"Pacific/Tahiti",utcOffset:-600,offsetStr:"-10:00",countries:["PF"]},{name:"Pacific/Marquesas",utcOffset:-570,offsetStr:"-09:30",countries:["PF"]},{name:"Pacific/Gambier",utcOffset:-540,offsetStr:"-09:00",countries:["PF"]},{name:"Pacific/Port_Moresby",utcOffset:600,offsetStr:"+10:00",countries:["PG"]},{name:"Pacific/Bougainville",utcOffset:660,offsetStr:"+11:00",countries:["PG"]},{name:"Asia/Manila",utcOffset:480,offsetStr:"+08:00",countries:["PH"]},{name:"Asia/Karachi",utcOffset:300,offsetStr:"+05:00",countries:["PK"]},{name:"Europe/Warsaw",utcOffset:60,offsetStr:"+01:00",countries:["PL"]},{name:"America/Miquelon",utcOffset:-180,offsetStr:"-03:00",countries:["PM"]},{name:"Pacific/Pitcairn",utcOffset:-480,offsetStr:"-08:00",countries:["PN"]},{name:"America/Puerto_Rico",utcOffset:-240,offsetStr:"-04:00",countries:["PR"]},{name:"Asia/Gaza",utcOffset:120,offsetStr:"+02:00",countries:["PS"]},{name:"Asia/Hebron",utcOffset:120,offsetStr:"+02:00",countries:["PS"]},{name:"Europe/Lisbon",utcOffset:0,offsetStr:"+00:00",countries:["PT"]},{name:"Atlantic/Madeira",utcOffset:0,offsetStr:"+00:00",countries:["PT"]},{name:"Atlantic/Azores",utcOffset:-60,offsetStr:"-01:00",countries:["PT"]},{name:"Pacific/Palau",utcOffset:540,offsetStr:"+09:00",countries:["PW"]},{name:"America/Asuncion",utcOffset:-180,offsetStr:"-03:00",countries:["PY"]},{name:"Asia/Qatar",utcOffset:180,offsetStr:"+03:00",countries:["QA","BH"]},{name:"Indian/Reunion",utcOffset:240,offsetStr:"+04:00",countries:["RE","TF"]},{name:"Europe/Bucharest",utcOffset:120,offsetStr:"+02:00",countries:["RO"]},{name:"Europe/Belgrade",utcOffset:60,offsetStr:"+01:00",countries:["RS","BA","HR","ME","MK","SI"]},{name:"Europe/Kaliningrad",utcOffset:120,offsetStr:"+02:00",countries:["RU"]},{name:"Europe/Moscow",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Simferopol",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Volgograd",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Samara",utcOffset:240,offsetStr:"+04:00",countries:["RU"]},{name:"Asia/Yekaterinburg",utcOffset:300,offsetStr:"+05:00",countries:["RU"]},{name:"Asia/Omsk",utcOffset:360,offsetStr:"+06:00",countries:["RU"]},{name:"Asia/Novosibirsk",utcOffset:360,offsetStr:"+06:00",countries:["RU"]},{name:"Asia/Novokuznetsk",utcOffset:420,offsetStr:"+07:00",countries:["RU"]},{name:"Asia/Krasnoyarsk",utcOffset:420,offsetStr:"+07:00",countries:["RU"]},{name:"Asia/Irkutsk",utcOffset:480,offsetStr:"+08:00",countries:["RU"]},{name:"Asia/Chita",utcOffset:480,offsetStr:"+08:00",countries:["RU"]},{name:"Asia/Yakutsk",utcOffset:540,offsetStr:"+09:00",countries:["RU"]},{name:"Asia/Khandyga",utcOffset:540,offsetStr:"+09:00",countries:["RU"]},{name:"Asia/Vladivostok",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Sakhalin",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Ust-Nera",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Magadan",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Srednekolymsk",utcOffset:660,offsetStr:"+11:00",countries:["RU"]},{name:"Asia/Kamchatka",utcOffset:720,offsetStr:"+12:00",countries:["RU"]},{name:"Asia/Anadyr",utcOffset:720,offsetStr:"+12:00",countries:["RU"]},{name:"Asia/Riyadh",utcOffset:180,offsetStr:"+03:00",countries:["SA","KW","YE"]},{name:"Pacific/Guadalcanal",utcOffset:660,offsetStr:"+11:00",countries:["SB"]},{name:"Indian/Mahe",utcOffset:240,offsetStr:"+04:00",countries:["SC"]},{name:"Africa/Khartoum",utcOffset:180,offsetStr:"+03:00",countries:["SD","SS"]},{name:"Europe/Stockholm",utcOffset:60,offsetStr:"+01:00",countries:["SE"]},{name:"Asia/Singapore",utcOffset:480,offsetStr:"+08:00",countries:["SG"]},{name:"America/Paramaribo",utcOffset:-180,offsetStr:"-03:00",countries:["SR"]},{name:"America/El_Salvador",utcOffset:-360,offsetStr:"-06:00",countries:["SV"]},{name:"Asia/Damascus",utcOffset:120,offsetStr:"+02:00",countries:["SY"]},{name:"America/Grand_Turk",utcOffset:-240,offsetStr:"-04:00",countries:["TC"]},{name:"Africa/Ndjamena",utcOffset:60,offsetStr:"+01:00",countries:["TD"]},{name:"Indian/Kerguelen",utcOffset:300,offsetStr:"+05:00",countries:["TF"]},{name:"Asia/Bangkok",utcOffset:420,offsetStr:"+07:00",countries:["TH","KH","LA","VN"]},{name:"Asia/Dushanbe",utcOffset:300,offsetStr:"+05:00",countries:["TJ"]},{name:"Pacific/Fakaofo",utcOffset:780,offsetStr:"+13:00",countries:["TK"]},{name:"Asia/Dili",utcOffset:540,offsetStr:"+09:00",countries:["TL"]},{name:"Asia/Ashgabat",utcOffset:300,offsetStr:"+05:00",countries:["TM"]},{name:"Africa/Tunis",utcOffset:60,offsetStr:"+01:00",countries:["TN"]},{name:"Pacific/Tongatapu",utcOffset:780,offsetStr:"+13:00",countries:["TO"]},{name:"Europe/Istanbul",utcOffset:120,offsetStr:"+02:00",countries:["TR"]},{name:"America/Port_of_Spain",utcOffset:-240,offsetStr:"-04:00",countries:["TT","AG","AI","BL","DM","GD","GP","KN","LC","MF","MS","VC","VG","VI"]},{name:"Pacific/Funafuti",utcOffset:720,offsetStr:"+12:00",countries:["TV"]},{name:"Asia/Taipei",utcOffset:480,offsetStr:"+08:00",countries:["TW"]},{name:"Europe/Kiev",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Europe/Uzhgorod",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Europe/Zaporozhye",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Pacific/Wake",utcOffset:720,offsetStr:"+12:00",countries:["UM"]},{name:"America/New_York",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Detroit",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Kentucky/Louisville",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Kentucky/Monticello",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Indianapolis",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Vincennes",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Winamac",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Marengo",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Petersburg",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Vevay",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Chicago",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Indiana/Tell_City",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Indiana/Knox",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Menominee",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/Center",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/New_Salem",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/Beulah",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Denver",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Boise",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Phoenix",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Los_Angeles",utcOffset:-480,offsetStr:"-08:00",countries:["US"]},{name:"America/Metlakatla",utcOffset:-480,offsetStr:"-08:00",countries:["US"]},{name:"America/Anchorage",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Juneau",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Sitka",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Yakutat",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Nome",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Adak",utcOffset:-600,offsetStr:"-10:00",countries:["US"]},{name:"Pacific/Honolulu",utcOffset:-600,offsetStr:"-10:00",countries:["US","UM"]},{name:"America/Montevideo",utcOffset:-180,offsetStr:"-03:00",countries:["UY"]},{name:"Asia/Samarkand",utcOffset:300,offsetStr:"+05:00",countries:["UZ"]},{name:"Asia/Tashkent",utcOffset:300,offsetStr:"+05:00",countries:["UZ"]},{name:"America/Caracas",utcOffset:-270,offsetStr:"-04:30",countries:["VE"]},{name:"Asia/Ho_Chi_Minh",utcOffset:420,offsetStr:"+07:00",countries:["VN"]},{name:"Pacific/Efate",utcOffset:660,offsetStr:"+11:00",countries:["VU"]},{name:"Pacific/Wallis",utcOffset:720,offsetStr:"+12:00",countries:["WF"]},{name:"Pacific/Apia",utcOffset:840,offsetStr:"+14:00",countries:["WS"]},{name:"Africa/Johannesburg",utcOffset:120,offsetStr:"+02:00",countries:["ZA","LS","SZ"]}]}],templateUrl:"app/core/directives/ms-timezone/ms-timezone.html"}})}(),function(){"use strict";angular.module("app.core").controller("MsWidgetEngineCounterController",function(){var a=this;a.filter=[],a.filtered=!1,a.fontSize=20,a.getCount=function(e){var n=0;if(e){a.fontSize=e.attrs[2]&&e.attrs[2].value?parseInt(e.attrs[2].value)-parseInt(e.attrs[2].value)%2:20,e.attrs[1].value&&e.attrs[1].value.length?(a.filtered=!0,a.filter=_.intersection(e.voiceQueuesSelected,e.attrs[1].value)):(a.filtered=!1,a.filter=e.voiceQueuesSelected);for(var t=0;t<e.voiceQueues.rows.length;t+=1)_.includes(a.filter,e.voiceQueues.rows[t].id)&&(n+=e.voiceQueues.rows[t][e.attrs[0].value]?parseInt(e.voiceQueues.rows[t][e.attrs[0].value]):0)}return n}})}(),function(){"use strict";function e(o,e){var r=this;r.filter=[],r.filtered=!1,r.properties=[],r.multiBarChart={labels:["QUEUE_NAME"],series:["TOTAL"],data:[[50]],options:{responsive:!0,legend:{display:!0,fontColor:"#2196f3"},scales:{xAxes:[{gridLines:{display:!0},ticks:{fontColor:"#2196f3",stepSize:1,beginAtZero:!0}}],yAxes:[{gridLines:{display:!1},ticks:{fontColor:"#2196f3"}}]}}},r.getMultiBarChart=function(e){e&&(e.attrs&&function(e){r.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[3].value&&e.attrs[3].value.length?(r.filtered=!0,r.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(r.filtered=!1,r.filter=e.voiceQueuesSelected);if(r.multiBarChart.series.length>r.properties.length){var n=r.multiBarChart.series.length-r.properties.length;r.multiBarChart.series.splice(0,n),r.multiBarChart.data.splice(0,n)}for(var t=0;t<r.properties.length;t+=1){if(r.multiBarChart.series[t]=o.instant("TOOLS."+r.properties[t].toUpperCase()),_.isNil(r.multiBarChart.data[t])&&(r.multiBarChart.data[t]=[]),r.multiBarChart.labels.length>r.filter.length){var a=r.multiBarChart.labels.length-r.filter.length;r.multiBarChart.labels.splice(0,a),r.multiBarChart.data[t].splice(0,a)}for(var i=0,s=0;i<e.voiceQueues.rows.length;i+=1)_.includes(r.filter,e.voiceQueues.rows[i].id)&&(r.multiBarChart.labels[s]=e.voiceQueues.rows[i].name,r.multiBarChart.data[t][s]=e.voiceQueues.rows[i][r.properties[t]]?parseInt(e.voiceQueues.rows[i][r.properties[t]]):0,s+=1)}}(e),e.foreground&&function(e){r.multiBarChart.options.legend.fontColor=e.foreground;for(var n=0;n<r.multiBarChart.options.scales.xAxes.length;n+=1)r.multiBarChart.options.scales.xAxes[n].ticks.fontColor=e.foreground;for(var t=0;t<r.multiBarChart.options.scales.yAxes.length;t+=1)r.multiBarChart.options.scales.yAxes[t].ticks.fontColor=e.foreground}(e))}}e.$inject=["$translate","socket"],angular.module("app.core").controller("MsWidgetEngineMultibarChartController",e)}(),function(){"use strict";function e(s){var o=this;o.filter=[],o.filtered=!1,o.properties=[],o.pieChart={labels:["ANSWERED"],data:[30],options:{responsive:!0,legend:{display:!0}}},o.getPieChart=function(e){e&&(e.attrs&&function(e){o.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[3].value&&e.attrs[3].value.length?(o.filtered=!0,o.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(o.filtered=!1,o.filter=e.voiceQueuesSelected);if(o.pieChart.labels.length>o.properties.length){var n=o.pieChart.labels.length-o.properties.length;o.pieChart.labels.splice(0,n),o.pieChart.data.splice(0,n)}for(var t=0,a=0;t<o.properties.length;t+=1){o.pieChart.labels[t]=s.instant("TOOLS."+o.properties[t].toUpperCase());for(var i=0;i<e.voiceQueues.rows.length;i+=1)_.includes(o.filter,e.voiceQueues.rows[i].id)&&(a+=e.voiceQueues.rows[i][o.properties[t]]?parseInt(e.voiceQueues.rows[i][o.properties[t]]):0);o.pieChart.data[t]=a,a=0}}(e),e.foreground&&(n=e,o.pieChart.options.legend.fontColor=n.foreground));var n}}e.$inject=["$translate"],angular.module("app.core").controller("MsWidgetEnginePieChartController",e)}(),function(){"use strict";function e(e,t,a,i){var s=this;function n(e){s.results=e||{count:0,rows:[]}}function o(){s.query.offset=(s.query.page-1)*s.query.limit,s.promise=i[s.reportRoute].run(s.query,n).$promise}s.countDown=0,s.refresh=0,s.title="",s.columns=[],s.results={rows:[],count:0},s.query={limit:10,page:1,startDate:moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),endDate:moment().endOf("day").format("YYYY-MM-DD HH:mm:ss"),output:"web"},s.onInit=function e(n){n&&n.attrs&&(n.attrs[0]&&n.attrs[0].value&&(s.query.id=n.attrs[0].value,i.analyticFieldReport.get({fields:"field,alias",nolimit:!0,DefaultReportId:"default"===n.attrs[0].type?n.attrs[0].value:void 0,CustomReportId:"custom"===n.attrs[0].type?n.attrs[0].value:void 0}).$promise.then(function(e){switch(e&&e.rows&&(s.columns=e.rows),n.attrs[0].type){case"default":s.reportRoute="analyticDefaultReport";break;case"custom":s.reportRoute="analyticCustomReport"}return i[s.reportRoute].get({id:n.attrs[0].value,fields:"id,name"}).$promise}).then(function(e){e&&e.name&&(s.title=e.name),o()}).catch(function(e){console.log(e)})),n.attrs[1]&&n.attrs[1].value&&(s.refresh=parseInt(n.attrs[1].value),!_.isNaN(s.refresh)&&0<s.refresh?(s.countDown=parseInt(n.attrs[1].value),s.interval=a(function(){s.countDown-=1},1e3,0),s.timeout=t(function(){s.interval&&a.cancel(s.interval),e(n)},1e3*s.refresh)):(s.interval&&a.cancel(s.interval),s.timeout&&t.cancel(s.timeout))))},s.getResults=o,s.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n},e.$on("$destroy",function(){s.interval&&a.cancel(s.interval),s.timeout&&t.cancel(s.timeout)})}e.$inject=["$scope","$timeout","$interval","api"],angular.module("app.core").controller("MsWidgetEngineWebReportController",e)}(),function(){"use strict";function e(e,n){this.getTrustedURL=function(e){return n.trustAsResourceUrl(e)}}function n(e){return{restrict:"E",scope:{config:"=?",onEdit:"&?",onDelete:"&?"},require:"msWidgetEngine",controller:"MsWidgetEngineController",controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-widget-engine/ms-widget-engine.html"}}e.$inject=["$mdDialog","$sce"],n.$inject=["$document"],angular.module("app.core").controller("MsWidgetEngineController",e).directive("msWidgetEngine",n)}(),function(){"use strict";function e(e,n){var t=this;t.flipped=!1,t.flip=function(){if(!angular.isDefined(e.flippable)||!0!==e.flippable)return;t.flipped=!t.flipped,n.toggleClass("flipped",t.flipped)}}e.$inject=["$scope","$element"],angular.module("app.core").controller("MsWidgetController",e).directive("msWidget",function(){return{restrict:"E",scope:{flippable:"=?"},controller:"MsWidgetController",transclude:!0,compile:function(e){return e.addClass("ms-widget"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)})}}}}).directive("msWidgetFront",function(){return{restrict:"E",require:"^msWidget",transclude:!0,compile:function(e){return e.addClass("ms-widget-front"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)}),e.flipWidget=a.flip}}}}).directive("msWidgetBack",function(){return{restrict:"E",require:"^msWidget",transclude:!0,compile:function(e){return e.addClass("ms-widget-back"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)}),e.flipWidget=a.flip}}}})}(),function(){"use strict";function e(s,n,o,r){return{restrict:"A",require:"?ngModel",link:function(t,a,e,i){o.isAdmin()||o.isTelephone()||(""!==e.privacy||o.getCurrentUser().privacyEnabled)&&!1!==t.$eval(e.privacy)&&(i?(i.$formatters.push(function(e){if(!e)return e;var n=r.mask(e);return i.$setViewValue(n),i.$render(),i.$viewValue}),i.$parsers.push(function(){return i.$modelValue}),a[0].disabled=!0):n(function(){s(a.contents())(t);var e=a.text();if(e){var n=r.mask(e);a.text(n)}}))}}}e.$inject=["$compile","$timeout","Auth","privacyManager"],angular.module("app.core").directive("privacy",e)}(),function(){"use strict";function e(o,r,i,l,d){var e={get:function(s,a){return o(function(n,t){0===a.offset&&(s=void 0);var e=_.merge({},a);i.cmContact.getJourney(e).$promise.then(function(e){var a,n=_(e.rows).uniqBy(function(e){return e.channel}).map("channel").value();return(a=n,o(function(e,n){var t=a.map(function(n){if("voice"!==n){var e="get"+_.startCase(n)+("chat"===n?"Websites":"Accounts");return i.user[e]({id:l.getCurrentUser().id,attributes:["id","name"],nolimit:!0}).$promise.then(function(e){c[n]=e.rows})}});return o.all(t).then(function(){e()}).catch(function(e){n(e)})})).then(function(){return e.rows.forEach(function(e){var n;e.canOpen=function(e){switch(e.channel){case"chat":return!!c.chat&&_.some(c.chat,["id",e.ChatWebsiteId]);case"fax":return!!c.fax&&_.some(c.fax,["id",e.FaxAccountId]);case"mail":return!!c.mail&&_.some(c.mail,["id",e.MailAccountId]);case"openchannel":return!!c.openchannel&&_.some(c.openchannel,["id",e.OpenchannelAccountId]);case"sms":return!!c.sms&&_.some(c.sms,["id",e.SmsAccountId]);case"voice":return!0;case"whatsapp":return!!c.whatsapp&&_.some(c.whatsapp,["id",e.WhatsappAccountId]);default:return!1}}(e),e.dispositionsValues=(n=e).disposition?"("+_.compact([n.disposition,n.secondDisposition,n.thirdDisposition]).join(" - ")+")":"("+r.instant("DASHBOARDS.NO_DISPOSITION_SET")+")",e.style=function(e){switch(e.channel){case"chat":return{color:"green-A700",icon:"icon-hangouts"};case"fax":return{color:"blue-grey-A200",icon:"icon-deskphone"};case"mail":return{color:"teal",icon:"icon-email"};case"openchannel":return{color:"amber-A200",icon:"icon-google-earth"};case"sms":return{color:"orange",icon:"icon-message-text"};case"voice":return{color:"blue-A700",icon:"icon-phone"};case"whatsapp":return{color:"lime-A700",icon:"icon-whatsapp"}}}(e)}),a=s,i=e,o(function(e,n){try{var t={journey:a?_.union(a,i.rows):i.rows};t.loadMore=0<i.count-t.journey.length,e(t)}catch(e){n(e)}});var a,i})}).then(function(e){n(e)}).catch(function(e){d.error({title:r.instant("CONTACTMANAGER.CUSTOMER_JOURNEY"),msg:r.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),t(e)})})},getQuery:function(){return{range:{from:moment().subtract(3,"M").startOf("month").format("YYYY-MM-DD HH:mm:ss"),to:moment().endOf("month").format("YYYY-MM-DD HH:mm:ss")},limit:10,offset:0}},getQuickFilters:function(){return[{name:"Channel",key:"channel",type:"select",label:"INTEGRATIONS.CHANNEL",customOptions:[{value:void 0,translate:"DASHBOARDS.ALL"},{value:"voice",translate:"DASHBOARDS.VOICE"},{value:"chat",translate:"DASHBOARDS.CHAT"},{value:"mail",translate:"DASHBOARDS.MAIL"},{value:"sms",translate:"DASHBOARDS.SMS"},{value:"fax",translate:"DASHBOARDS.FAX"},{value:"openchannel",translate:"DASHBOARDS.OPENCHANNEL"},{value:"whatsapp",translate:"DASHBOARDS.WHATSAPP"}]},{name:"Start Date",key:"range",type:"date",label:"DASHBOARDS.SELECT_DATE",useFromToKeys:!0}]}},c={};return e}e.$inject=["$q","$translate","api","Auth","toasty"],angular.module("app.core").factory("customerJourneyManager",e)}(),function(){"use strict";function e(t,a,n,i,s){var o={},r={},l={},d={};function c(){r=i.getCurrentUser();var e=n.localStorage.getItem("motion2.home:"+r.id);if(l=e?JSON.parse(e).currentSidebarTab:"dashboard",d=n.localStorage.getItem("motion2.home."+l+":"+r.id)){var a=JSON.parse(d);a.drafts?r.privacyEnabled&&Object.keys(a.drafts).forEach(function(e){var n=a.drafts[e].title,t=n.split(/-(.+)/)[1].trim();a.drafts[e].title=n.replace(t,s.mask(t))}):a.drafts={},d=a}else d={drafts:{}};return d.drafts}function m(){_.isEmpty(o.drafts)?delete d.drafts:d.drafts=o.drafts,n.localStorage.setItem("motion2.home."+l+":"+r.id,JSON.stringify(d))}return o.init=function(){o.drafts=c()},o.getByInteraction=function(n){return o.drafts=c(),_.find(_.values(o.drafts),function(e){return e.interaction&&e.interaction.id===n})},o.removeByInteraction=function(n){o.drafts=c();var e=_.find(_.values(o.drafts),function(e){return e.interaction&&e.interaction.id===n});e&&(delete o.drafts[e.id],m())},o.add=function(e){o.drafts=c();var n=a.instant("DASHBOARDS.UNTITLED");e.contact?n=e.contact.firstName||e.contact.email:_.isEmpty(e.message.subject)||(n=e.message.subject);var t={type:"draft",title:e.account.key+" - "+n,channel:e.channel,content:e.message,account:e.account,interaction:e.interaction,id:_.random(1e10),openedAt:new Date,saved:!1};o.drafts[t.id]=t,m()},o.update=function(e){o.drafts=c();var n=o.drafts[e.id];n&&(n.content=e.message,o.drafts[e.id]=n,m())},o.open=function(e){o.drafts=c();var n=o.drafts[e];n&&t.$broadcast("open"+_.startCase(l)+"Draft",n)},o.remove=function(e){o.drafts=c(),o.drafts[e]&&(delete o.drafts[e],m())},o}e.$inject=["$rootScope","$translate","$window","Auth","privacyManager"],angular.module("app.core").factory("draftManager",e)}(),function(){"use strict";function e(i){function s(e,n){var t=i.localStorage.getItem(e),a=t?JSON.parse(t):{};return n?a[n]:a}function o(e,n){return i.localStorage.setItem(e,JSON.stringify(n))}return{get:s,set:o,update:function(e,n,t){var a=s(e);t?a[t]=n:a=n;return o(e,a)}}}e.$inject=["$window"],angular.module("app.core").factory("localStorageManager",e)}(),function(){"use strict";function e(i){function s(e,n){var t=i.get(),a=0;if(t)switch(n){case"email":a=t.privacyPolicyEmail;break;case"number":a=t.privacyPolicyNumber;break;default:a=t.privacyPolicyName}return _.isNil(a)?e:0===a||a>e.length?e.replace(/./g,"*"):e.substring(0,e.length-a).padEnd(e.length,"*")}function o(e){return _.startsWith(e,"<")&&_.endsWith(e,">")&&(e=e.substring(1,e.length-1)),/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)}function r(e){if(_.startsWith(e,"<")&&_.endsWith(e,">")){var n=!0;e=e.substring(1,e.length-1)}var t=e.split("@")[0],a=e.split("@")[1],i="";return n&&(i+="<"),i+=s(t,"email"),i+="@",i+=s(a,"email"),n&&(i+=">"),i}return{mask:function n(e){t=e,e=t.replace(/\s\s+/g," ").trim();var t;{if(o(e))return r(e);if(/^[+]?[0-9|.|\-|\s]*$/.test(e))return s(e,"number");var a=[],i=e.split(" ");return 1===i.length?s(e):(i.forEach(function(e){a.push(n(e))}),a.join(" "))}}}}e.$inject=["settingsManager"],angular.module("app.core").factory("privacyManager",e)}(),function(){"use strict";function e(e,s){return{setPlaceholder:function(a){var i;return e(function(n,e){try{if(_.isEmpty(a.resources))i=s.instant("DASHBOARDS.NONE");else if(_.isEmpty(a.param))i=a.placeholder?s.instant(a.placeholder):s.instant("DASHBOARDS.CHOOSE");else if(a.param.length===a.resources.length)i=s.instant("DASHBOARDS.ALL");else{var t=a.ngValue||"id";i=_(a.resources).filter(function(e){return _.includes(a.param,e[t])}).map("name").value().join(", ")}n(i)}catch(e){console.log("QuickFilterManager::setPlaceholder",e),n(null)}})}}}e.$inject=["$q","$translate"],angular.module("app.core").factory("quickFilterManager",e)}(),function(){"use strict";function e(t){var e={getAgentStatus:function(e){var n="unknown";n=o(e)?"pause":o(e,!0)?"*pause":function(e){if("idle"!==e.voiceStatus&&e.voicePause)return!(e.voiceStatus="pause");return _.every([e.chatStatus,e.faxStatus,e.mailStatus,e.openchannelStatus,e.smsStatus,e.voiceStatus,e.whatsappStatus],r)}(e)?"idle":"busy";return n},setAgentStatusDisplayValue:function(e){var n=e.globalStatus;"pause"===e.globalStatus?n=e.pauseType||t.instant("VOICE.DEFAULT_PAUSE"):"*pause"===e.globalStatus&&(n="*"+(e.pauseType||t.instant("VOICE.DEFAULT_PAUSE")));e.globalStatusDisplayValue=n},updateBusyCounter:s,updateQueue:function(e,n,t,a){var i=t.paused;!1===e.online?(t.online=!1,n.loggedInDb-=1,t.paused?(t.paused=!1,n.paused-=1):n.available-=1):t.online?!e[a+"Pause"]||t.paused||o(e,!0)?!e[a+"Pause"]&&t.paused?(t.paused=!1,t.talking||t.busy||(n.paused-=1,n.available+=1)):e[a+"Pause"]&&t.paused&&(t.talking||t.busy||(n.busy-=1,i||(n.paused+=1))):(t.paused=!0,t.talking||t.busy||(i||(n.paused+=1),0<n.available&&(n.available-=1))):(t.online=!0,n.loggedInDb+=1,n.available+=1);s(n)},updateVoiceQueue:function(e,n){e.loggedIn===e.available&&0<e.waiting&&(e.available-=e.waiting);var t=e.loggedIn-e.available-e.talking-e.waiting-n.paused;t<0?(n.paused-=Math.abs(t),n.waitingOrTalking=!0):0<t&&n.waitingOrTalking&&(n.paused+=1,delete n.waitingOrTalking);_.merge(n,_.pick(e,"inbound"===n.type?a:i)),"outbound"===n.type&&_.isNil(e.startPredictive)&&(n.startPredictive=void 0);s(n)}},a=["loggedIn","available","waiting","talking","paused"],i=["loggedIn","available","waiting","talking","pTalking","originated","message","dialActive","dialMethod","Trunk","paused","startPredictive","startProgressive","erlangCalls","erlangCallToSecond","erlangAbandonmentRate","erlangBusyFactor","dialPredictiveInterval","dialPredictiveIntervalMaxThreshold","dialPredictiveIntervalMinThreshold","predictiveIntervalAvailable","predictiveIntervalTotalCalls","predictiveIntervalAnsweredCalls","predictiveIntervalDroppedCallsTimeout","predictiveIntervalDroppedCallsCallersExit","predictiveIntervalAvgHoldtime","predictiveIntervalAvgTalktime"];function s(e){var n=_.filter(e.agents,["busy",!0]).length,t=e.loggedInDb-e.available-e.paused-e.talking-e.waiting;t<0&&(t=0),e.busy=t<n?n:t}function o(e,n){var t=[e.chatPause,e.faxPause,e.mailPause,e.openchannelPause,e.smsPause,e.voicePause,e.whatsappPause];if(!n)return _.every(t);var a=_.filter(t);return 0<a.length&&a.length<t.length}function r(e){if(_.isNil(e))return!0;return _.includes(["idle","unknown","unavailable","ringing"],e)}return e}e.$inject=["$translate"],angular.module("app.core").factory("realtimeManager",e)}(),function(){"use strict";angular.module("app.core").factory("settingsManager",function(){var n={};return{get:function(){return n},set:function(e){e&&(n=e.toJSON())}}})}(),function(){"use strict";function e(c,m){function u(e,n,t){if(_.isEmpty(n))return t;for(var a=0;a<n.length;a++){var i=n[a].key,s=_.find(e,function(e){return e[i]===n[a].value});s&&(_.some(t,["id",s.id])||(s.canSelect=!1,t.push(s)))}return t}return{getResources:function(a,i,s,o,r,l,d){return c(function(t,n){o||(o={}),d||(d="get"),a[s][d](o).$promise.then(function(e){var t=e.rows;if("admin"===i.role)return t;var n=m.getSectionId(s,l);return a.userProfileSection.get({userProfileId:i.userProfileId,sectionId:n}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?t:a.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(t,{id:e.resourceId})});return u(t,r,n)}):c.resolve().then(function(){return e=s,_.includes(["voiceContext"],e)?(o.defaultEntry=1,a[s][d](o).$promise.then(function(e){return e.rows})):[];var e}).then(function(e){return u(t,r,e)})})}).then(function(e){var n={rows:_.orderBy(e,[o.sort]),count:e.length};t(n)}).catch(function(e){n(e)})})}}}e.$inject=["$q","msNavigationService"],angular.module("app.core").factory("userProfileManager",e)}(),function(){"use strict";angular.module("app.core").filter("altDate",function(){return function(e){var n=Date.now()-new Date(e);return n<36e5?moment(e).fromNow():n<864e5?moment(e).format("HH:mm"):n<6048e5?moment(e).format("dddd"):moment(e).calendar()}})}(),function(){"use strict";function e(n){return function(e){return n.trustAsHtml(e)}}e.$inject=["$sce"],angular.module("app.core").filter("toTrusted",e).filter("htmlToPlaintext",function(){return function(e){return String(e).replace(/<[^>]+>/gm,"")}}).filter("nospace",function(){return function(e){return e?e.replace(/ /g,""):""}}).filter("humanizeDoc",function(){return function(e){if(e)return"directive"===e.type?e.name.replace(/([A-Z])/g,function(e){return"-"+e.toLowerCase()}):e.label||e.name}})}(),function(){"use strict";angular.module("app.core").filter("capitalize",function(){return function(e){return e?_.capitalize(e):""}})}(),function(){"use strict";angular.module("app.core").filter("filterByIds",function(){return function(e,n){if(0===e.length||!n)return e;if(0===n.length)return[];for(var t=[],a=0;a<e.length;a++){for(var i=e[a],s=!1,o=0;o<n.length;o++){var r=n[o];if(i.id===r){s=!0;break}}s&&t.push(i)}return t}})}(),function(){"use strict";angular.module("app.core").filter("filterByPropIds",function(){return function(e,n,t){if(0===e.length||!t||0===t.length)return e;for(var a=[],i=0;i<e.length;i++){for(var s=e[i],o=!1,r=0;r<t.length;r++){var l=t[r];if(-1<s[n].indexOf(l)){o=!0;break}}o&&a.push(s)}return a}})}(),function(){"use strict";angular.module("app.core").filter("getOptionByValue",function(){return function(e,n,t){if(void 0===e)return"";if(!n)return"";t||(t="option");var a=_.find(n,["value",e]);return a?a[t]:""}})}(),function(){"use strict";angular.module("app.core").filter("orderByDate",function(){return function(e){var n=[];return angular.forEach(e,function(e){n.push(e)}),n.sort(function(e,n){return e.hasOwnProperty("openedAt")&&n.hasOwnProperty("openedAt")?e.openedAt>n.openedAt?1:-1:1}),n}})}(),function(){"use strict";angular.module("app.core").filter("secToTime",function(){return function(e){e&&(e=e.toString().replace(",",""));var n=Math.floor(e/86400),t=e%86400,a=new Date(1e3*t).toISOString().substring(11,19);return a.replace(/^(\d+)/,function(e){return(""+(Number(e)+24*n)).padStart(2,"0")})}})}(),function(){"use strict";angular.module("app.core").filter("snakecase",function(){return function(e){return e?_.snakeCase(e):""}})}(),function(){"use strict";angular.module("app.core").filter("startcase",function(){return function(e){return e?_.startCase(e):""}})}(),function(){"use strict";angular.module("app.core").filter("filterByTags",function(){return function(e,t){if(0===e.length||0===t.length)return e;var a=[];return e.forEach(function(e){var n=t.every(function(n){var t=!1;return e.tags.forEach(function(e){e.name!==n.name||(t=!0)}),t});n&&a.push(e)}),a}}).filter("filterSingleByTags",function(){return function(e,n){if(0!==e.length&&0!==n.length){if(e.length<n.length)return[];var t=[],a=n.every(function(n){var t=!1;return e.forEach(function(e){e.name!==n.name||(t=!0)}),t});return a&&t.push(e),t}}})}(),function(){"use strict";angular.module("app.core").filter("toInteger",function(){return function(e){if(e&&"string"==typeof e)return parseInt(e)}})}(),function(){"use strict";function m(e,n,t,a){this.id=Math.random().toString(36).substring(2,15)+Math.random().toString(36).substring(2,15),this.title=e,this.body=n,this.accept=t,this.reject=a,this.close=i}function u(){return/Chrome/.test(navigator.userAgent)&&/Google Inc/.test(navigator.vendor)}function i(){var t=this;navigator.serviceWorker.ready.then(function(e){e.getNotifications().then(function(e){var n=_.find(e,function(e){return e.data.id===t.id});n&&n.close()})})}angular.module("app.dashboards").provider("motNotification",function(){return{$get:[function(){var d,t,c=[];"serviceWorker"in navigator&&u()?navigator.serviceWorker.register("notification.js").then(function(e){(d=e).update(),d.installing?t=d.installing:d.waiting?t=d.waiting:d.active&&(t=d.active)}).catch(function(e){console.error("Service worker registration failed",e)}):console.error("Service Worker is not supported");return navigator.serviceWorker.addEventListener("message",function(e){if(e.source===t){var n=_.find(c,{id:e.data.id});if(n)switch(e.data.action){case"accept":n.accept&&n.accept();break;case"reject":n.reject&&n.reject()}}}),{create:function(e,i,s,o,r,l){return new Promise(function(t,n){var a;u()&&(window.document.hidden||window.document.mozHidden||window.document.webkitHidden)?(a=new m(e||"MyTitle",i||"MyBody",o,r),c.push(a),a?window.Notification.requestPermission().then(function(e){if("granted"===e)return d.showNotification(a.title,{body:a.body,requireInteraction:!0,icon:s||"assets/images/business/queueCampaigns.jpg",data:{id:a.id},actions:[{action:"accept",title:"Accept"},{action:"reject",title:"Reject"}]})}).then(function(e){if(l){for(var n=0;n<c.length;n++)c[n].close();t()}else t(a)}).catch(function(e){n(e)}):n(new Error("Notification creating error"))):t()})}}}]}})}(),function(){"use strict";function e(l,d,c){return{resolve:function(e,n){var t=e.split("@"),a=t[0],i=t[1],s=n||{};if(!a||!i)return d.error("apiResolver.resolve requires correct action parameter (ResourceName@methodName)"),!1;var o=l.defer(),r=function(e){for(var n=e.split("."),t=c,a=0;a<n.length;a++){if(angular.isUndefined(t[n[a]])){d.error('Resource part "'+n[a]+'" is not defined!'),t=!1;break}t=t[n[a]]}return t||!1}(a);r?r[i](s,function(e){o.resolve(e)},function(e){o.reject(e)}):(d.error('Resource "'+a+'" is not defined in the api service!'),o.reject('Resource "'+a+'" is not defined in the api service!'));return o.promise}}}e.$inject=["$q","$log","api"],angular.module("app.core").factory("apiResolver",e)}(),function(){"use strict";function e(e){return{showLoadingIndicator:function(){e.loadingProgress=!0},hideLoadingIndicator:function(){e.loadingProgress=!1}}}e.$inject=["$rootScope"],angular.module("app.core").factory("LoadingIndicatorService",e)}(),function(){"use strict";angular.module("app.core").provider("msApi",function(){var t=angular.injector(["ng"]).get("$log"),a="",v=[];function n(e){a=e}function i(){return a}function s(e,n){angular.isString(e)?angular.isArray(n)?v[e]={url:a+(n[0]||""),paramDefaults:n[1]||[],actions:n[2]||[],options:n[3]||{}}:t.error('"resource" must be an array and it must follow $resource definition'):t.error('"path" must be a string (eg. `dashboard.project`)')}this.setBaseUrl=n,this.getBaseUrl=i,this.getApiObject=function(){return v},this.register=s,this.$get=["$log","$q","$resource","$rootScope",function(m,u,p,g){var e={setBaseUrl:n,getBaseUrl:i,register:s,resolve:function(e,n){g.$broadcast("msApi::resolveStart");var t=e.split("@"),a=t[0],i=t[1],s=n||{};if(!a||!i)return m.error("msApi.resolve requires correct action parameter (resourceName@methodName)"),!1;var o=u.defer(),r=v[a];if(r){var l=p(r.url,r.paramDefaults,r.actions,r.options);l[i](s,function(e){o.resolve(e),g.$broadcast("msApi::resolveSuccess")},function(e){o.reject(e),g.$broadcast("msApi::resolveError")})}else m.error('Resource "'+a+'" is not defined in the api service!'),o.reject('Resource "'+a+'" is not defined in the api service!');return o.promise},request:function(e,n,t,a){g.$broadcast("msApi::requestStart");var i=e.split("@"),s=i[0],o=i[1],r=n||{};if(!s||!o)return m.error("msApi.resolve requires correct action parameter (resourceName@methodName)"),!1;var l=u.defer(),d=v[s];if(d){var c=p(d.url,d.paramDefaults,d.actions,d.options);c[o](r,function(e){g.$broadcast("msApi::requestSuccess"),l.resolve(e),angular.isDefined(t)&&angular.isFunction(t)&&t(e)},function(e){g.$broadcast("msApi::requestError"),l.reject(e),angular.isDefined(a)&&angular.isFunction(a)&&a(e)})}else m.error('Resource "'+s+'" is not defined in the api service!'),l.reject('Resource "'+s+'" is not defined in the api service!');return l.promise}};return e}]})}(),function(){"use strict";function e(l){var e=new MobileDetect(l.navigator.userAgent),d=null;return{exists:function(e,n){return-1<n.indexOf(e)},detectBrowser:function(){if(d)return d;var e=[{string:l.navigator.userAgent,subString:"Edge",versionSearch:"Edge",identity:"Edge"},{string:l.navigator.userAgent,subString:"Chrome",identity:"Chrome"},{string:l.navigator.userAgent,subString:"OmniWeb",versionSearch:"OmniWeb/",identity:"OmniWeb"},{string:l.navigator.vendor,subString:"Apple",versionSearch:"Version",identity:"Safari"},{prop:l.opera,identity:"Opera"},{string:l.navigator.vendor,subString:"iCab",identity:"iCab"},{string:l.navigator.vendor,subString:"KDE",identity:"Konqueror"},{string:l.navigator.userAgent,subString:"Firefox",identity:"Firefox"},{string:l.navigator.vendor,subString:"Camino",identity:"Camino"},{string:l.navigator.userAgent,subString:"Netscape",identity:"Netscape"},{string:l.navigator.userAgent,subString:"MSIE",identity:"Explorer",versionSearch:"MSIE"},{string:l.navigator.userAgent,subString:"Trident/7",identity:"Explorer",versionSearch:"rv"},{string:l.navigator.userAgent,subString:"Gecko",identity:"Mozilla",versionSearch:"rv"},{string:l.navigator.userAgent,subString:"Mozilla",identity:"Netscape",versionSearch:"Mozilla"}],n=[{string:l.navigator.platform,subString:"Win",identity:"Windows"},{string:l.navigator.platform,subString:"Mac",identity:"Mac"},{string:l.navigator.platform,subString:"Linux",identity:"Linux"},{string:l.navigator.platform,subString:"iPhone",identity:"iPhone"},{string:l.navigator.platform,subString:"iPod",identity:"iPod"},{string:l.navigator.platform,subString:"iPad",identity:"iPad"},{string:l.navigator.platform,subString:"Android",identity:"Android"}],i="";function t(e){for(var n=0;n<e.length;n++){var t=e[n].string,a=e[n].prop;if(i=e[n].versionSearch||e[n].identity,t){if(-1!==t.indexOf(e[n].subString))return e[n].identity}else if(a)return e[n].identity}}function a(e){var n=e.indexOf(i);if(-1!==n)return parseInt(e.substring(n+i.length+1))}var s=t(e)||"unknown-browser",o=a(l.navigator.userAgent)||a(l.navigator.appVersion)||"unknown-version",r=t(n)||"unknown-os";return s=s.toLowerCase(),o=s+"-"+o,r=r.toLowerCase(),d={browser:s,version:o,os:r}},guidGenerator:function(){var e=function(){return(65536*(1+Math.random())||0).toString(16).substring(1)};return e()+e()+e()+e()+e()+e()},isMobile:function(){return e.mobile()},toggleInArray:function(e,n){-1===n.indexOf(e)?n.push(e):n.splice(n.indexOf(e),1)},firstLastDayMonth:function(){return{$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()}}}}e.$inject=["$window"],angular.module("app.core").factory("msUtils",e)}(),function(){"use strict";function e(e,n){var t=this;t.themes=n.themes,t.layoutModes=[{label:"Boxed",value:"boxed"},{label:"Wide",value:"wide"}],t.layoutStyles=[{label:"Vertical Navigation",value:"verticalNavigation",figure:"/assets/images/theme-options/vertical-nav.jpg"},{label:"Vertical Navigation with Fullwidth Toolbar",value:"verticalNavigationFullwidthToolbar",figure:"/assets/images/theme-options/vertical-nav-with-full-toolbar.jpg"},{label:"Vertical Navigation with Fullwidth Toolbar 2",value:"verticalNavigationFullwidthToolbar2",figure:"/assets/images/theme-options/vertical-nav-with-full-toolbar-2.jpg"},{label:"Horizontal Navigation",value:"horizontalNavigation",figure:"/assets/images/theme-options/horizontal-nav.jpg"},{label:"Content with Toolbar",value:"contentWithToolbar",figure:"/assets/images/theme-options/content-with-toolbar.jpg"},{label:"Content Only",value:"contentOnly",figure:"/assets/images/theme-options/content-only.jpg"}],t.layoutMode="wide",t.layoutStyle=e.get("motion.layoutStyle")||"verticalNavigation",t.setActiveTheme=function(e){n.setActiveTheme(e)},t.getActiveTheme=function(){return n.themes.active},t.updateLayoutMode=function(){angular.element("body").toggleClass("boxed","boxed"===t.layoutMode)},t.updateLayoutStyle=function(){e.put("motion.layoutStyle",t.layoutStyle),location.reload()}}function n(n){return{restrict:"E",scope:{},controller:"MsThemeOptionsController as vm",templateUrl:"app/core/theme-options/theme-options.html",compile:function(e){return e.addClass("ms-theme-options"),function(e){e.toggleOptionsSidenav=function(){n("motion-theme-options").toggle()}}}}}e.$inject=["$cookies","motionTheming"],n.$inject=["$mdSidenav"],angular.module("app.core").controller("MsThemeOptionsController",e).directive("msThemeOptions",n)}(),function(){"use strict";function e(i,a,s){var o={};return{generate:function(){var e=angular.copy(s.getRegisteredThemes()),a=angular.copy(s.getRegisteredPalettes());angular.forEach(e,function(t){o[t.name]={},angular.forEach(t.colors,function(e,n){o[t.name][n]={name:e.name,levels:{default:{color:l(a[e.name][e.hues.default].value),contrast1:l(a[e.name][e.hues.default].contrast,1),contrast2:l(a[e.name][e.hues.default].contrast,2),contrast3:l(a[e.name][e.hues.default].contrast,3),contrast4:l(a[e.name][e.hues.default].contrast,4)},hue1:{color:l(a[e.name][e.hues["hue-1"]].value),contrast1:l(a[e.name][e.hues["hue-1"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-1"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-1"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-1"]].contrast,4)},hue2:{color:l(a[e.name][e.hues["hue-2"]].value),contrast1:l(a[e.name][e.hues["hue-2"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-2"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-2"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-2"]].contrast,4)},hue3:{color:l(a[e.name][e.hues["hue-3"]].value),contrast1:l(a[e.name][e.hues["hue-3"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-3"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-3"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-3"]].contrast,4)}}}})}),function(e){var n=angular.copy(e);angular.forEach(n,function(t){angular.forEach(t,function(e,n){t[n]=e.levels,t[n].color=e.levels.default.color,t[n].contrast1=e.levels.default.contrast1,t[n].contrast2=e.levels.default.contrast2,t[n].contrast3=e.levels.default.contrast3,t[n].contrast4=e.levels.default.contrast4,delete t[n].default})}),s.setThemesList(n);var t=i.get("motion.selectedTheme");t?s.setActiveTheme(t):s.setActiveTheme("default")}(o);var r={};angular.forEach(o,function(e,n){var t,a,i,s,o;(r={})["@themeName"]=n,angular.forEach(e,function(e,a){angular.forEach(e.levels,function(e,t){angular.forEach(e,function(e,n){r["@"+a+d(t)+d(n)]=e})})}),t=r,a=new RegExp(Object.keys(t).join("|"),"gi"),i='/* Content hack because they wont fix */\n/* https://github.com/angular/material/pull/8067 */\n[md-theme="@themeName"] md-content.md-hue-1,\nmd-content.md-@themeName-theme.md-hue-1 {\n    color: @backgroundHue1Contrast1;\n    background-color: @backgroundHue1Color;\n}\n\n[md-theme="@themeName"] md-content.md-hue-2,\nmd-content.md-@themeName-theme.md-hue-2 {\n    color: @backgroundHue2Contrast1;\n    background-color: @backgroundHue2Color;\n}\n\n[md-theme="@themeName"] md-content.md-hue-3,\n md-content.md-@themeName-theme.md-hue-3 {\n    color: @backgroundHue3Contrast1;\n    background-color: @backgroundHue3Color;\n}\n\n/* Text Colors */\n[md-theme="@themeName"] a {\n    color: @accentDefaultColor;\n}\n\n[md-theme="@themeName"] .secondary-text,\n[md-theme="@themeName"] .icon {\n    color: @backgroundDefaultContrast2;\n}\n\n[md-theme="@themeName"] .hint-text,\n[md-theme="@themeName"] .disabled-text {\n    color: @backgroundDefaultContrast3;\n}\n\n[md-theme="@themeName"] .fade-text,\n[md-theme="@themeName"] .divider {\n    color: @backgroundDefaultContrast4;\n}\n\n/* Primary */\n[md-theme="@themeName"] .md-primary-bg {\n    background-color: @primaryDefaultColor;\n    color: @primaryDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg .secondary-text,\n[md-theme="@themeName"] .md-primary-bg .icon {\n    color: @primaryDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg .hint-text,\n[md-theme="@themeName"] .md-primary-bg .disabled-text {\n    color: @primaryDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg .fade-text,\n[md-theme="@themeName"] .md-primary-bg .divider {\n    color: @primaryDefaultContrast4;\n}\n\n/* Primary, Hue-1 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 {\n    background-color: @primaryHue1Color;\n    color: @primaryHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .icon {\n    color: @primaryHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .disabled-text {\n    color: @primaryHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .divider {\n    color: @primaryHue1Contrast4;\n}\n\n/* Primary, Hue-2 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 {\n    background-color: @primaryHue2Color;\n    color: @primaryHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .icon {\n    color: @primaryHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .disabled-text {\n    color: @primaryHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .divider {\n    color: @primaryHue2Contrast4;\n}\n\n/* Primary, Hue-3 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 {\n    background-color: @primaryHue3Color;\n    color: @primaryHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .icon {\n    color: @primaryHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .disabled-text {\n    color: @primaryHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .divider {\n    color: @primaryHue3Contrast4;\n}\n\n/* Primary foreground */\n[md-theme="@themeName"] .md-primary-fg {\n    color: @primaryDefaultColor !important;\n}\n\n/* Primary foreground, Hue-1 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-1 {\n    color: @primaryHue1Color !important;\n}\n\n/* Primary foreground, Hue-2 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-2 {\n    color: @primaryHue2Color !important;\n}\n\n/* Primary foreground, Hue-3 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-3 {\n    color: @primaryHue3Color !important;\n}\n\n/* Accent */\n[md-theme="@themeName"] .md-accent-bg {\n    background-color: @accentDefaultColor;\n    color: @accentDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg .secondary-text,\n[md-theme="@themeName"] .md-accent-bg .icon {\n    color: @accentDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg .hint-text,\n[md-theme="@themeName"] .md-accent-bg .disabled-text {\n    color: @accentDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg .fade-text,\n[md-theme="@themeName"] .md-accent-bg .divider {\n    color: @accentDefaultContrast4;\n}\n\n/* Accent, Hue-1 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 {\n    background-color: @accentHue1Color;\n    color: @accentHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .icon {\n    color: @accentHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .disabled-text {\n    color: @accentHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .divider {\n    color: @accentHue1Contrast4;\n}\n\n/* Accent, Hue-2 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 {\n    background-color: @accentHue2Color;\n    color: @accentHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .icon {\n    color: @accentHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .disabled-text {\n    color: @accentHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .divider {\n    color: @accentHue2Contrast4;\n}\n\n/* Accent, Hue-3 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 {\n    background-color: @accentHue3Color;\n    color: @accentHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .icon {\n    color: @accentHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .disabled-text {\n    color: @accentHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .divider {\n    color: @accentHue3Contrast4;\n}\n\n/* Accent foreground */\n[md-theme="@themeName"] .md-accent-fg {\n    color: @accentDefaultColor !important;\n}\n\n/* Accent foreground, Hue-1 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-1 {\n    color: @accentHue1Color !important;\n}\n\n/* Accent foreground, Hue-2 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-2 {\n    color: @accentHue2Color !important;\n}\n\n/* Accent foreground, Hue-3 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-3 {\n    color: @accentHue3Color !important;\n}\n\n/* Warn */\n[md-theme="@themeName"] .md-warn-bg {\n    background-color: @warnDefaultColor;\n    color: @warnDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg .secondary-text,\n[md-theme="@themeName"] .md-warn-bg .icon {\n    color: @warnDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg .hint-text,\n[md-theme="@themeName"] .md-warn-bg .disabled-text {\n    color: @warnDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg .fade-text,\n[md-theme="@themeName"] .md-warn-bg .divider {\n    color: @warnDefaultContrast4;\n}\n\n/* Warn, Hue-1 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 {\n    background-color: @warnHue1Color;\n    color: @warnHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .icon {\n    color: @warnHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .disabled-text {\n    color: @warnHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .divider {\n    color: @warnHue1Contrast4;\n}\n\n/* Warn, Hue-2 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 {\n    background-color: @warnHue2Color;\n    color: @warnHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .icon {\n    color: @warnHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .disabled-text {\n    color: @warnHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .divider {\n    color: @warnHue2Contrast4;\n}\n\n/* Warn, Hue-3 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 {\n    background-color: @warnHue3Color;\n    color: @warnHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .icon {\n    color: @warnHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .disabled-text {\n    color: @warnHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .divider {\n    color: @warnHue3Contrast4;\n}\n\n/* Warn foreground */\n[md-theme="@themeName"] .md-warn-fg {\n    color: @warnDefaultColor !important;\n}\n\n/* Warn foreground, Hue-1 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-1 {\n    color: @warnHue1Color !important;\n}\n\n/* Warn foreground, Hue-2 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-2 {\n    color: @warnHue2Color !important;\n}\n\n/* Warn foreground, Hue-3 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-3 {\n    color: @warnHue3Color !important;\n}\n\n/* Background */\n[md-theme="@themeName"] .md-background-bg {\n    background-color: @backgroundDefaultColor;\n    color: @backgroundDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg .secondary-text,\n[md-theme="@themeName"] .md-background-bg .icon {\n    color: @backgroundDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg .hint-text,\n[md-theme="@themeName"] .md-background-bg .disabled-text {\n    color: @backgroundDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg .fade-text,\n[md-theme="@themeName"] .md-background-bg .divider {\n    color: @backgroundDefaultContrast4;\n}\n\n/* Background, Hue-1 */\n[md-theme="@themeName"] .md-background-bg.md-hue-1 {\n    background-color: @backgroundHue1Color;\n    color: @backgroundHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .icon {\n    color: @backgroundHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .disabled-text {\n    color: @backgroundHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .divider {\n    color: @backgroundHue1Contrast4;\n}\n\n/* Background, Hue-2 */\n[md-theme="@themeName"] .md-background-bg.md-hue-2 {\n    background-color: @backgroundHue2Color;\n    color: @backgroundHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .icon {\n    color: @backgroundHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .disabled-text {\n    color: @backgroundHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .divider {\n    color: @backgroundHue2Contrast4;\n}\n\n/* Background, Hue-3 */\n[md-theme="@themeName"] .md-background-bg.md-hue-3 {\n    background-color: @backgroundHue3Color;\n    color: @backgroundHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .icon {\n    color: @backgroundHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .disabled-text {\n    color: @backgroundHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .divider {\n    color: @backgroundHue3Contrast4;\n}\n\n/* Background foreground */\n[md-theme="@themeName"] .md-background-fg {\n    color: @backgroundDefaultColor !important;\n}\n\n/* Background foreground, Hue-1 */\n[md-theme="@themeName"] .md-background-fg.md-hue-1 {\n    color: @backgroundHue1Color !important;\n}\n\n/* Background foreground, Hue-2 */\n[md-theme="@themeName"] .md-background-fg.md-hue-2 {\n    color: @backgroundHue2Color !important;\n}\n\n/* Background foreground, Hue-3 */\n[md-theme="@themeName"] .md-background-fg.md-hue-3 {\n    color: @backgroundHue3Color !important;\n}'.replace(a,function(e){return t[e]}),s=angular.element("head"),(o=angular.element('<style type="text/css"></style>')).html(i),s.append(o)})},rgba:l};function l(e,n){var t=n||!1;return 4===e.length&&255===e[0]&&255===e[1]&&255===e[2]&&e.splice(3,4),t&&(e=function(e,n){var t={white:{1:"1",2:"0.7",3:"0.3",4:"0.12"},black:{1:"0.87",2:"0.54",3:"0.26",4:"0.12"}};255===e[0]&&255===e[1]&&255===e[2]?e[3]=t.white[n]:0===e[0]&&0===e[1]&&0===e[2]&&(e[3]=t.black[n]);return e}(e,t)),3===e.length?"rgb("+e.join(",")+")":4===e.length?"rgba("+e.join(",")+")":void a.error("Invalid number of arguments supplied in the color array: "+e.length+"\nThe array must have 3 or 4 colors.")}function d(e){return e.charAt(0).toUpperCase()+e.slice(1)}}e.$inject=["$cookies","$log","motionTheming"],angular.module("app.core").factory("motionGenerator",e)}(),function(){"use strict";angular.module("app.core").constant("motionPalettes",[{name:"motion-blue",options:{50:"#ebf1fa",100:"#c2d4ef",200:"#9ab8e5",300:"#78a0dc",400:"#5688d3",500:"#3470ca",600:"#2e62b1",700:"#275498",800:"#21467e",900:"#1a3865",A100:"#c2d4ef",A200:"#9ab8e5",A400:"#5688d3",A700:"#275498",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 A100",contrastStrongLightColors:"300 400"}},{name:"motion-paleblue",options:{50:"#ececee",100:"#c5c6cb",200:"#9ea1a9",300:"#7d818c",400:"#5c616f",500:"#3c4252",600:"#353a48",700:"#2d323e",800:"#262933",900:"#1e2129",A100:"#c5c6cb",A200:"#9ea1a9",A400:"#5c616f",A700:"#2d323e",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 A100",contrastStrongLightColors:"300 400"}}])}(),function(){"use strict";angular.module("app.core").constant("motionThemes",{default:{primary:{name:"motion-paleblue",hues:{default:"700","hue-1":"500","hue-2":"600","hue-3":"400"}},accent:{name:"light-blue",hues:{default:"600","hue-1":"400","hue-2":"700","hue-3":"A100"}},warn:{name:"red"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}},pinkTheme:{primary:{name:"blue-grey",hues:{default:"800","hue-1":"600","hue-2":"400","hue-3":"A100"}},accent:{name:"pink",hues:{default:"400","hue-1":"300","hue-2":"600","hue-3":"A100"}},warn:{name:"blue"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}},tealTheme:{primary:{name:"motion-blue",hues:{default:"900","hue-1":"600","hue-2":"500","hue-3":"A100"}},accent:{name:"teal",hues:{default:"500","hue-1":"400","hue-2":"600","hue-3":"A100"}},warn:{name:"deep-orange"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}}})}(),function(){"use strict";function e(t,e,n){var a;angular.injector(["ngCookies"]).invoke(["$cookies",function(e){a=e}]);var i=a.getObject("motion.customTheme");i&&(n.custom=i),t.alwaysWatchTheme(!0),angular.forEach(e,function(e){t.definePalette(e.name,e.options)}),angular.forEach(n,function(e,n){t.theme(n).primaryPalette(e.primary.name,e.primary.hues).accentPalette(e.accent.name,e.accent.hues).warnPalette(e.warn.name,e.warn.hues).backgroundPalette(e.background.name,e.background.hues)})}e.$inject=["$mdThemingProvider","motionPalettes","motionThemes"],angular.module("app.core").config(e)}(),function(){"use strict";function e(n,t,e){var a={getRegisteredPalettes:function(){return e.PALETTES},getRegisteredThemes:function(){return e.THEMES},setActiveTheme:function(e){if(angular.isUndefined(a.themes.list[e]))return angular.isUndefined(a.themes.list.default)?void t.error('You must have at least one theme named "default"'):(t.warn('The theme "'+e+'" does not exist! Falling back to the "default" theme.'),a.themes.active.name="default",a.themes.active.theme=a.themes.list.default,void n.put("motion.selectedTheme",a.themes.active.name));a.themes.active.name=e,a.themes.active.theme=a.themes.list[e],n.put("motion.selectedTheme",e)},setThemesList:function(e){a.themes.list=e},themes:{list:{},active:{name:"",theme:{}}}};return a}e.$inject=["$cookies","$log","$mdTheming"],angular.module("app.core").service("motionTheming",e)}(),function(){"use strict";function e(n,s,o,r){this.search=function(n){for(var e=[],t=r.getFlatNavigation(),a=o.defer(),i=0;i<t.length;i+=1)t[i].uisref&&e.push(t[i]);n&&(e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(n)))return!0}));return s(function(){a.resolve(e)},1e3),a.promise},this.searchResultClick=function(e){e.uisref&&(e.stateParams?n.go(e.state,e.stateParams):n.go(e.state))}}e.$inject=["$state","$timeout","$q","msNavigationService"],angular.module("app.errors.error-404").controller("Error404Controller",e)}(),function(){"use strict";function e(e,n){var t=this;t.code="",t.send=!1,t.error=e.params,t.sendReport=function(){n.post("/api/jira",t.error).then(function(e){t.send=!0,e.data&&(t.code=e.data.id)},function(e){t.send=!1})}}e.$inject=["$state","$http"],angular.module("app.errors.error-500").controller("Error500Controller",e)}(),function(){"use strict";function e(e,n){var t=this;t.currentUser=e.getCurrentUser(),t.cookieAlertHide=n.get("motion.cookieAlertHide:"+t.currentUser.id)||!1,t.cookieAlertOnClose=function(){n.put("motion.cookieAlertHide:"+t.currentUser.id,!0)}}e.$inject=["Auth","$cookies"],angular.module("app.footer").controller("FooterController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.form={},s.forgotPassword=function(){return i.auth.forgot(s.form).$promise.then(function(){n.success({title:t.instant("FORGOTPASSWORD.LINK_SENT"),msg:t.instant("FORGOTPASSWORD.LINNK_SENT_MESSAGE")})}).catch(function(e){e&&n.error({title:t.instant("FORGOTPASSWORD.PASSWORD_RESET_ERROR"),msg:e.data?e.data.message||e.message||e:e.message||e})})},s.onInit=function(){e.isLoggedIn()&&a.go("app.dashboards.general")}}e.$inject=["Auth","toasty","$translate","$state","api"],angular.module("app.forgot").controller("ForgotPasswordController",e)}(),function(){"use strict";function e(e,n){var t=this;t.currentUser=e.getCurrentUser(),t.newsAlertHide=n.get("motion.newsAlertHide:"+t.currentUser.id)||!1,t.newsAlertOnClose=function(){n.put("motion.newsAlertHide:"+t.currentUser.id,!0)}}e.$inject=["Auth","$cookies"],angular.module("app.header").controller("HeaderController",e)}(),function(){"use strict";function e(e,o){var r={getResourcesByRole:function(e,n,t,a,i,s){return o.getResources(r,e,n,t,a,i,s)}};return r.baseUrl="api/",r.auth=e(r.baseUrl+"auth/local",{},{local:{method:"post",url:r.baseUrl+"auth/local"},forgot:{method:"post",url:r.baseUrl+"auth/local/forgot"},reset:{method:"post",url:r.baseUrl+"auth/local/reset/:token",params:{token:"@token"}},user:{method:"get",url:r.baseUrl+"auth/local/user/:token",params:{token:"@token"}},google:{method:"post",url:r.baseUrl+"auth/google"}}),r.jira=e(r.baseUrl+"jira"),r.rpc=e(r.baseUrl+"rpc",{},{startMonitor:{method:"get",url:r.baseUrl+"rpc/voice/channels/:uniqueid/mixmonitor",params:{uniqueid:"@uniqueid"}},stopMonitor:{method:"get",url:r.baseUrl+"rpc/voice/channels/:uniqueid/stopmixmonitor",params:{uniqueid:"@uniqueid"}},getVoiceChannels:{method:"get",url:r.baseUrl+"rpc/voice/channels"},getVoiceQueues:{method:"get",url:r.baseUrl+"rpc/voice/queues"},getChatQueues:{method:"get",url:r.baseUrl+"rpc/chat/queues"},getMailQueues:{method:"get",url:r.baseUrl+"rpc/mail/queues"},getSmsQueues:{method:"get",url:r.baseUrl+"rpc/sms/queues"},getWhatsappQueues:{method:"get",url:r.baseUrl+"rpc/whatsapp/queues"},getOpenchannelQueues:{method:"get",url:r.baseUrl+"rpc/openchannel/queues"},getFaxQueues:{method:"get",url:r.baseUrl+"rpc/fax/queues"},getVoiceQueuesPreview:{method:"get",url:r.baseUrl+"rpc/voice/queues/preview/:id"},getVoiceQueuesChannels:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels"},getVoiceQueuesChannel:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid"},getVoiceQueuesChannelHangup:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid/hangup"},getVoiceQueuesChannelRedirect:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid/redirect/:exten"},getOutbound:{method:"get",url:r.baseUrl+"rpc/outbound"},getOutboundChannels:{method:"get",url:r.baseUrl+"rpc/outbound/channels"},getAgents:{method:"get",url:r.baseUrl+"rpc/agents"},setAgentCapacity:{method:"put",url:r.baseUrl+"rpc/agents/:id/capacity",params:{id:"@id"}},getTelephones:{method:"get",url:r.baseUrl+"rpc/telephones"},getTrunks:{method:"get",url:r.baseUrl+"rpc/trunks"},getCampaigns:{method:"get",url:r.baseUrl+"rpc/campaigns"},getMailAccounts:{method:"get",url:r.baseUrl+"rpc/mail/accounts"},getFaxAccounts:{method:"get",url:r.baseUrl+"rpc/fax/accounts"},getChatQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/chat/queues/waitinginteractions"},getMailQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/mail/queues/waitinginteractions"},getOpenchannelQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/openchannel/queues/waitinginteractions"},getOpenchannelQueuesIdWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/openchannel/queues/:id/waitinginteractions"},getSmsQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/sms/queues/waitinginteractions"},getFaxQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/fax/queues/waitinginteractions"},getWhatsappQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/whatsapp/queues/waitinginteractions"},mailQueueNotify:{method:"post",url:r.baseUrl+"rpc/mail/queues/:id/notify",params:{id:"@id"}},chatQueueNotify:{method:"post",url:r.baseUrl+"rpc/chat/queues/:id/notify",params:{id:"@id"}},faxQueueNotify:{method:"post",url:r.baseUrl+"rpc/fax/queues/:id/notify",params:{id:"@id"}},smsQueueNotify:{method:"post",url:r.baseUrl+"rpc/sms/queues/:id/notify",params:{id:"@id"}},openchannelQueueNotify:{method:"post",url:r.baseUrl+"rpc/openchannel/queues/:id/notify",params:{id:"@id"}},agentNotify:{method:"post",url:r.baseUrl+"rpc/agents/:id/notify",params:{id:"@id"}}}),r.version=e(r.baseUrl+"version",{},{fetch:{method:"get",url:r.baseUrl+"version/fetch"},reset:{method:"get",url:r.baseUrl+"version/reset"},pull:{method:"get",url:r.baseUrl+"version/pull"},restart:{method:"get",url:r.baseUrl+"version/restart"},migrations:{method:"get",url:r.baseUrl+"version/migrations"}}),r.system=e(r.baseUrl+"system",{},{killProcess:{method:"get",url:r.baseUrl+"system/process/:pid/kill",params:{pid:"@pid"}}}),r.pm2=e(r.baseUrl+"pm2/:id",{id:"@id"},{update:{method:"put",isArray:!0}}),r.user=e(r.baseUrl+"users/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"users/describe"},clone:{method:"post",url:r.baseUrl+"users/:id/clone",params:{includeAll:"@includeAll"}},addContacts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/contacts"},bulkCreate:{isArray:!1,method:"post",url:r.baseUrl+"users/create_many"},changePassword:{isArray:!1,method:"put",url:r.baseUrl+"users/:id/password"},addQueues:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/queues"},removeQueues:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/queues"},addAvatar:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/avatar"},getAvatar:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/avatar"},getOpenTabs:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/open_tabs"},getContacts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/contacts"},getQueues:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/queues"},getVoiceQueuesRt:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/queues_rt"},getGroups:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/groups"},getRecordings:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/recordings"},getScreenRecordings:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/screen_recordings"},getChatInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/chat/interactions"},getOpenchannelInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/openchannel/interactions"},getMailInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/mail/interactions"},getSmsInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/sms/interactions"},getFaxInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/fax/interactions"},getWhatsappInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/whatsapp/interactions"},login:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/login"},logout:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/logout"},pause:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/pause"},unpause:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/unpause"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/teams"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/lists"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/agents"},addChatInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/chat_interactions"},removeChatInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/chat_interactions"},addMailInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/mail_interactions"},removeMailInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/mail_interactions"},addFaxInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/fax_interactions"},removeFaxInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/fax_interactions"},addSmsInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/sms_interactions"},removeSmsInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/sms_interactions"},addOpenchannelInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/openchannel_interactions"},removeOpenchannelInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/openchannel_interactions"},addWhatsappInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/whatsapp_interactions"},removeWhatsappInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/whatsapp_interactions"},getVoicePrefixes:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/prefixes"},getFaxAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/fax_accounts"},addFaxAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/fax_accounts"},removeFaxAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/fax_accounts"},getMailAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/mail_accounts"},addMailAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/mail_accounts"},removeMailAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/mail_accounts"},getOpenchannelAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/openchannel_accounts"},addOpenchannelAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/openchannel_accounts"},removeOpenchannelAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/openchannel_accounts"},getSmsAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/sms_accounts"},addSmsAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/sms_accounts"},removeSmsAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/sms_accounts"},getChatWebsites:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/chat_websites"},addChatWebsites:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/chat_websites"},removeChatWebsites:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/chat_websites"},getWhatsappAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/whatsapp_accounts"},addWhatsappAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/whatsapp_accounts"},removeWhatsappAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/whatsapp_accounts"},getSquareProjects:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/square_projects"},addSquareProjects:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/square_projects"},removeSquareProjects:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/square_projects"},getScheduledCalls:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/scheduled_calls"},getApiKey:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/api_key"},createApiKey:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/api_key"},removeApiKey:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/api_key"},whoami:{isArray:!1,method:"get",url:r.baseUrl+"users/whoami"},getPresence:{isArray:!1,method:"get",url:r.baseUrl+"users/presence"}}),r.voiceChanSpy=e(r.baseUrl+"voice/chanspy/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/chanspy/describe"},clone:{method:"post",url:r.baseUrl+"voice/chanspy/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceContext=e(r.baseUrl+"voice/contexts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/contexts/describe"},clone:{method:"post",url:r.baseUrl+"voice/contexts/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceExtension=e(r.baseUrl+"voice/extensions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/extensions/describe"},clone:{method:"post",url:r.baseUrl+"voice/extensions/:id/clone",params:{includeAll:"@includeAll"}},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"voice/extensions/:id/applications"}}),r.voiceMusicOnHold=e(r.baseUrl+"voice/mohs/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mohs/describe"},clone:{method:"post",url:r.baseUrl+"voice/mohs/:id/clone",params:{includeAll:"@includeAll"}},addSound:{isArray:!1,method:"post",url:r.baseUrl+"voice/mohs/:id/sounds"},removeSound:{isArray:!1,method:"delete",url:r.baseUrl+"voice/mohs/:id/sounds/:id2"},getSounds:{isArray:!1,method:"get",url:r.baseUrl+"voice/mohs/:id/sounds"}}),r.voiceQueue=e(r.baseUrl+"voice/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/queues/describe"},clone:{method:"post",url:r.baseUrl+"voice/queues/:id/clone",params:{includeAll:"@includeAll"}},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_finals"},getHopperBlacks:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_black"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"voice/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"voice/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/users"},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/members"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/lists"},addLists:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/lists"},removeLists:{isArray:!0,method:"delete",url:r.baseUrl+"voice/queues/:id/lists"},getBlackLists:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/blacklists"},addBlackLists:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/blacklists"},removeBlackLists:{isArray:!0,method:"delete",url:r.baseUrl+"voice/queues/:id/blacklists"}}),r.voiceRecording=e(r.baseUrl+"voice/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/recordings/describe"},clone:{method:"post",url:r.baseUrl+"voice/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},downloads:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/downloads"},runTranscribe:{isArray:!1,method:"post",url:r.baseUrl+"voice/recordings/:id/transcribe"},downloadTranscribe:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/transcribe",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.screenRecording=e(r.baseUrl+"screen/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"screen/recordings/describe"},clone:{method:"post",url:r.baseUrl+"screen/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"screen/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.voiceMail=e(r.baseUrl+"voice/mails/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mails/describe"},clone:{method:"post",url:r.baseUrl+"voice/mails/:id/clone",params:{includeAll:"@includeAll"}},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"voice/mails/:id/messages"}}),r.voiceMailMessage=e(r.baseUrl+"voice/mails/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mails/messages/describe"},clone:{method:"post",url:r.baseUrl+"voice/mails/messages/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"voice/mails/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.voiceCallReport=e(r.baseUrl+"voice/calls/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/calls/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/calls/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceDialReport=e(r.baseUrl+"voice/dials/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/dials/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/dials/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceAgentReport=e(r.baseUrl+"voice/agents/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/agents/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/agents/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceQueueReport=e(r.baseUrl+"voice/queues/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/queues/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/queues/reports/:id/clone",params:{includeAll:"@includeAll"}},getVoiceQueuesReport:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/reports/index"}}),r.memberReport=e(r.baseUrl+"members/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"members/reports/describe"},clone:{method:"post",url:r.baseUrl+"members/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.trunk=e(r.baseUrl+"trunks/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"trunks/describe"},clone:{method:"post",url:r.baseUrl+"trunks/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceTransferReport=e(r.baseUrl+"voice/transfers/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/transfers/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/transfers/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailServerOut=e(r.baseUrl+"mail/out_servers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/out_servers/describe"},clone:{method:"post",url:r.baseUrl+"mail/out_servers/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailAccount=e(r.baseUrl+"mail/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/accounts/describe"},clone:{method:"post",url:r.baseUrl+"mail/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/canned_answers"},getImap:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/in_servers"},addImap:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/in_servers"},removeImap:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/in_servers"},getSmtp:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/out_servers"},addSmtp:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/out_servers"},removeSmtp:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/out_servers"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/interactions"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/applications"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/messages"},send:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/send"},verifySmtp:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/verify"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"mail/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/users"}}),r.mailQueue=e(r.baseUrl+"mail/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/queues/describe"},clone:{method:"post",url:r.baseUrl+"mail/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"mail/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"mail/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"mail/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"mail/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/users"}}),r.mailSubstatus=e(r.baseUrl+"mail/substatuses/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/substatuses/describe"},clone:{method:"post",url:r.baseUrl+"mail/substatuses/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailInteraction=e(r.baseUrl+"mail/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/interactions/describe"},clone:{method:"post",url:r.baseUrl+"mail/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"mail/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"mail/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"mail/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"mail/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"mail/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.mailMessage=e(r.baseUrl+"mail/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/messages/describe"},clone:{method:"post",url:r.baseUrl+"mail/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"mail/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"mail/messages/:id/reject"},download:{isArray:!1,method:"get",url:r.baseUrl+"mail/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.mailApplication=e(r.baseUrl+"mail/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/applications/describe"},clone:{method:"post",url:r.baseUrl+"mail/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailQueueReport=e(r.baseUrl+"mail/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"mail/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.dashboard=e(r.baseUrl+"dashboards/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dashboards/describe"},clone:{method:"post",url:r.baseUrl+"dashboards/:id/clone",params:{includeAll:"@includeAll"}},addItem:{isArray:!1,method:"post",url:r.baseUrl+"dashboards/:id/items"},getItems:{isArray:!1,method:"get",url:r.baseUrl+"dashboards/:id/items"}}),r.dashboardItem=e(r.baseUrl+"dashboards/items/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dashboards/items/describe"},clone:{method:"post",url:r.baseUrl+"dashboards/items/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxAccount=e(r.baseUrl+"fax/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/accounts/describe"},clone:{method:"post",url:r.baseUrl+"fax/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/canned_answers"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/interactions"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/applications"},addAccountApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/addaccountapplications"},updateAccountApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/updateaccountapplications"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/messages"},send:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/send"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"fax/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/users"}}),r.faxApplication=e(r.baseUrl+"fax/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/applications/describe"},clone:{method:"post",url:r.baseUrl+"fax/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxInteraction=e(r.baseUrl+"fax/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/interactions/describe"},clone:{method:"post",url:r.baseUrl+"fax/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"fax/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"fax/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"fax/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"fax/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"fax/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.faxMessage=e(r.baseUrl+"fax/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/messages/describe"},clone:{method:"post",url:r.baseUrl+"fax/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"fax/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"fax/messages/:id/reject"},download:{isArray:!1,method:"get",url:r.baseUrl+"fax/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.faxQueue=e(r.baseUrl+"fax/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/queues/describe"},clone:{method:"post",url:r.baseUrl+"fax/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"fax/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"fax/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"fax/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"fax/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/users"}}),r.faxQueueReport=e(r.baseUrl+"fax/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"fax/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsAccount=e(r.baseUrl+"sms/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/accounts/describe"},clone:{method:"post",url:r.baseUrl+"sms/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/canned_answers"},notify:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/notify"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/applications"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/interactions"},send:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/send"},status:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/status"},statusGet:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/status"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"sms/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/users"}}),r.smsApplication=e(r.baseUrl+"sms/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/applications/describe"},clone:{method:"post",url:r.baseUrl+"sms/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsInteraction=e(r.baseUrl+"sms/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/interactions/describe"},clone:{method:"post",url:r.baseUrl+"sms/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"sms/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"sms/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"sms/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"sms/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"sms/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.smsMessage=e(r.baseUrl+"sms/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/messages/describe"},clone:{method:"post",url:r.baseUrl+"sms/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"sms/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"sms/messages/:id/reject"},status:{isArray:!1,method:"post",url:r.baseUrl+"sms/messages/:id/status"}}),r.smsQueue=e(r.baseUrl+"sms/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/queues/describe"},clone:{method:"post",url:r.baseUrl+"sms/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"sms/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"sms/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"sms/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"sms/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/users"}}),r.openchannelAccount=e(r.baseUrl+"openchannel/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/accounts/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},notify:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/notify"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/applications"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/interactions"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/users"},send:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/send"}}),r.openchannelApplication=e(r.baseUrl+"openchannel/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/applications/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.openchannelInteraction=e(r.baseUrl+"openchannel/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/interactions/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.openchannelMessage=e(r.baseUrl+"openchannel/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/messages/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"openchannel/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"openchannel/messages/:id/reject"}}),r.openchannelQueue=e(r.baseUrl+"openchannel/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/queues/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/users"}}),r.chatWebsite=e(r.baseUrl+"chat/websites/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/websites/describe"},clone:{method:"post",url:r.baseUrl+"chat/websites/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/canned_answers"},addLogo:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/logo"},addAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/avatar"},addCustomerAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/customer_avatar"},addSystemAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/system_avatar"},getLogo:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/logo"},getAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/avatar"},getCustomerAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/customer_avatar"},getSystemAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/system_avatar"},notify:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/notify"},offline:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/offline"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/interactions"},getSnippet:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/snippet"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/applications"},addProactiveActions:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/proactive_actions"},getProactiveActions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/proactive_actions"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/fields"},getOfflineMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/offline_messages"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"chat/websites/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/users"}}),r.openchannelQueueReport=e(r.baseUrl+"openchannel/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatApplication=e(r.baseUrl+"chat/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/applications/describe"},clone:{method:"post",url:r.baseUrl+"chat/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatInteraction=e(r.baseUrl+"chat/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/interactions/describe"},clone:{method:"post",url:r.baseUrl+"chat/interactions/:id/clone",params:{includeAll:"@includeAll"}},createVidaooSession:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/vidaoo"},customUpdate:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/custom_update"},abandon:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/abandon"},attachmentUpload:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/attachment_upload"},attachmentDownload:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/attachment_download"},close:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/close"},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/messages"},getMyMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/my_messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"chat/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.chatMessage=e(r.baseUrl+"chat/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"chat/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"chat/messages/:id/reject"}}),r.chatOfflineMessage=e(r.baseUrl+"chat/offline_messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/offline_messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/offline_messages/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatQueue=e(r.baseUrl+"chat/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/queues/describe"},clone:{method:"post",url:r.baseUrl+"chat/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"chat/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"chat/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"chat/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"chat/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/users"}}),r.chatGroup=e(r.baseUrl+"chat/groups/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/groups/describe"},clone:{method:"post",url:r.baseUrl+"chat/groups/:id/clone",params:{includeAll:"@includeAll"}},getUnread:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/unread"},addMembers:{isArray:!0,method:"post",url:r.baseUrl+"chat/groups/:id/members"},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/members"},removeMembers:{isArray:!1,method:"delete",url:r.baseUrl+"chat/groups/:id/members"},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"chat/groups/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/messages"}}),r.chatProactiveAction=e(r.baseUrl+"chat/proactive_actions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/proactive_actions/describe"},clone:{method:"post",url:r.baseUrl+"chat/proactive_actions/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmCompany=e(r.baseUrl+"cm/companies/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/companies/describe"},clone:{method:"post",url:r.baseUrl+"cm/companies/:id/clone",params:{includeAll:"@includeAll"}},addContacts:{isArray:!1,method:"post",url:r.baseUrl+"cm/companies/:id/contacts"},getContacts:{isArray:!1,method:"get",url:r.baseUrl+"cm/companies/:id/contacts"}}),r.cmContact=e(r.baseUrl+"cm/contacts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/contacts/describe"},clone:{method:"post",url:r.baseUrl+"cm/contacts/:id/clone",params:{includeAll:"@includeAll"}},merge:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/merge"},bulkCreate:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/create_many"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"cm/contacts/:id/tags"},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hopper_finals"},getJscriptySessions:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/jscripty_sessions"},uploadCsv:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/csv"},upload:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/upload"},import:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/upload/:id"},getJourney:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/journey"}}),r.cmHopper=e(r.baseUrl+"cm/hopper/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper/:id/clone",params:{includeAll:"@includeAll"}},getPreview:{isArray:!1,method:"post",url:r.baseUrl+"cm/hopper/preview"},getOpenContacts:{isArray:!1,method:"get",url:r.baseUrl+"cm/hopper/opencontacts"}}),r.cmHopperBlack=e(r.baseUrl+"cm/hopper_black/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_black/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_black/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmHopperFinal=e(r.baseUrl+"cm/hopper_final/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_final/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_final/:id/clone",params:{includeAll:"@includeAll"}},countContactsQueueCampaignHopperFinal:{isArray:!0,method:"get",url:r.baseUrl+"cm/hopper_final/voice/queue/countAttributes/:id"},countContactsIvrCampaignHopperFinal:{isArray:!0,method:"get",url:r.baseUrl+"cm/hopper_final/campaign/countAttributes/:id"},moveContactsQueueCampaignHopperFinal:{isArray:!0,method:"post",url:r.baseUrl+"cm/hopper_final/voice/queue/moveContacts/:id"},moveContactsIvrCampaignHopperFinal:{isArray:!0,method:"post",url:r.baseUrl+"cm/hopper_final/voice/campaign/moveContacts/:id"},checkContactHopper:{isArray:!1,method:"post",url:r.baseUrl+"cm/hopper_final/checkContactHopper"}}),r.cmHopperHistory=e(r.baseUrl+"cm/hopper_history/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_history/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_history/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmCustomField=e(r.baseUrl+"cm/custom_fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/custom_fields/describe"},clone:{method:"post",url:r.baseUrl+"cm/custom_fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.action=e(r.baseUrl+"actions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"actions/describe"},clone:{method:"post",url:r.baseUrl+"actions/:id/clone",params:{includeAll:"@includeAll"}}}),r.automation=e(r.baseUrl+"automations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"automations/describe"},clone:{method:"post",url:r.baseUrl+"automations/:id/clone",params:{includeAll:"@includeAll"}},addConditions:{isArray:!1,method:"post",url:r.baseUrl+"automations/:id/conditions"},getConditions:{isArray:!1,method:"get",url:r.baseUrl+"automations/:id/conditions"},addActions:{isArray:!1,method:"post",url:r.baseUrl+"automations/:id/actions"},getActions:{isArray:!1,method:"get",url:r.baseUrl+"automations/:id/actions"}}),r.cannedAnswer=e(r.baseUrl+"canned_answers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"canned_answers/describe"},clone:{method:"post",url:r.baseUrl+"canned_answers/:id/clone",params:{includeAll:"@includeAll"}}}),r.disposition=e(r.baseUrl+"dispositions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dispositions/describe"},clone:{method:"post",url:r.baseUrl+"dispositions/:id/clone",params:{includeAll:"@includeAll"}}}),r.condition=e(r.baseUrl+"conditions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"conditions/describe"},clone:{method:"post",url:r.baseUrl+"conditions/:id/clone",params:{includeAll:"@includeAll"}}}),r.interval=e(r.baseUrl+"intervals/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"intervals/describe"},clone:{method:"post",url:r.baseUrl+"intervals/:id/clone",params:{includeAll:"@includeAll"}},addInterval:{isArray:!1,method:"post",url:r.baseUrl+"intervals/:id/sub_intervals"},getIntervals:{isArray:!1,method:"get",url:r.baseUrl+"intervals/:id/sub_intervals"},addIntervals:{isArray:!0,method:"post",url:r.baseUrl+"intervals/:id/sub_intervals/create_many"}}),r.pause=e(r.baseUrl+"pauses/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"pauses/describe"},clone:{method:"post",url:r.baseUrl+"pauses/:id/clone",params:{includeAll:"@includeAll"}}}),r.cdr=e(r.baseUrl+"cdr/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cdr/describe"},clone:{method:"post",url:r.baseUrl+"cdr/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceQueuesLog=e(r.baseUrl+"voiceQueuesLog/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voiceQueuesLog/describe"},clone:{method:"post",url:r.baseUrl+"voiceQueuesLog/:id/clone",params:{includeAll:"@includeAll"}}}),r.schedule=e(r.baseUrl+"schedules/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"schedules/describe"},clone:{method:"post",url:r.baseUrl+"schedules/:id/clone",params:{includeAll:"@includeAll"}},run:{isArray:!1,method:"get",url:r.baseUrl+"schedules/:id/run"}}),r.sound=e(r.baseUrl+"sounds/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sounds/describe"},clone:{method:"post",url:r.baseUrl+"sounds/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"sounds/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},delete:{isArray:!1,method:"delete",url:r.baseUrl+"sounds/:id"}}),r.tag=e(r.baseUrl+"tags/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"tags/describe"},clone:{method:"post",url:r.baseUrl+"tags/:id/clone",params:{includeAll:"@includeAll"}}}),r.template=e(r.baseUrl+"templates/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"templates/describe"},clone:{method:"post",url:r.baseUrl+"templates/:id/clone",params:{includeAll:"@includeAll"}}}),r.trigger=e(r.baseUrl+"triggers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"triggers/describe"},clone:{method:"post",url:r.baseUrl+"triggers/:id/clone",params:{includeAll:"@includeAll"}},addAllCondition:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/all_conditions"},addAnyCondition:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/any_conditions"},getAllConditions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/all_conditions"},getAnyConditions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/any_conditions"},addAction:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/actions"},getActions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/actions"}}),r.variable=e(r.baseUrl+"variables/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"variables/describe"},clone:{method:"post",url:r.baseUrl+"variables/:id/clone",params:{includeAll:"@includeAll"}}}),r.integration=e(r.baseUrl+"integrations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/:id/clone",params:{includeAll:"@includeAll"}}}),r.integrationReport=e(r.baseUrl+"integrations/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/reports/describe"},clone:{method:"post",url:r.baseUrl+"integrations/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.analyticCustomReport=e(r.baseUrl+"analytics/custom_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/custom_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/custom_reports/:id/clone",params:{includeAll:"@includeAll"}},preview:{isArray:!0,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/preview"},run:{isArray:!1,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/run"},query:{isArray:!1,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/query"}}),r.analyticDefaultReport=e(r.baseUrl+"analytics/default_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/default_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/default_reports/:id/clone",params:{includeAll:"@includeAll"}},preview:{isArray:!0,method:"get",url:r.baseUrl+"analytics/default_reports/:id/preview"},run:{isArray:!1,method:"get",url:r.baseUrl+"analytics/default_reports/:id/run"},query:{isArray:!1,method:"get",url:r.baseUrl+"analytics/default_reports/:id/query"}}),r.analyticExtractedReport=e(r.baseUrl+"analytics/extracted_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/extracted_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/extracted_reports/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"analytics/extracted_reports/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.analyticMetric=e(r.baseUrl+"analytics/metrics/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/metrics/describe"},clone:{method:"post",url:r.baseUrl+"analytics/metrics/:id/clone",params:{includeAll:"@includeAll"}}}),r.analyticFieldReport=e(r.baseUrl+"analytics/field_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/field_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/field_reports/:id/clone",params:{includeAll:"@includeAll"}},bulkCreate:{method:"post",url:r.baseUrl+"analytics/field_reports/create_many",isArray:!0},bulkDestroy:{method:"delete",url:r.baseUrl+"analytics/field_reports/destroy_many",isArray:!0},addFields:{isArray:!0,method:"post",url:r.baseUrl+"analytics/field_reports/:id/create_many"}}),r.analyticTreeReport=e(r.baseUrl+"analytics/tree_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/tree_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/tree_reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.intSalesforceAccount=e(r.baseUrl+"integrations/salesforce/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/salesforce/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/accounts/:id/fields"}}),r.intSalesforceConfiguration=e(r.baseUrl+"integrations/salesforce/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/descriptions"}}),r.intSalesforceField=e(r.baseUrl+"integrations/salesforce/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intSugarcrmAccount=e(r.baseUrl+"integrations/sugarcrm/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/fields"}}),r.intSugarcrmConfiguration=e(r.baseUrl+"integrations/sugarcrm/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/descriptions"}}),r.intSugarcrmField=e(r.baseUrl+"integrations/sugarcrm/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intDeskAccount=e(r.baseUrl+"integrations/desk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/desk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/accounts/:id/fields"}}),r.intDeskConfiguration=e(r.baseUrl+"integrations/desk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/desk/configurations/:id/tags"}}),r.intDeskField=e(r.baseUrl+"integrations/desk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intZohoAccount=e(r.baseUrl+"integrations/zoho/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/zoho/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/accounts/:id/fields"}}),r.intZohoConfiguration=e(r.baseUrl+"integrations/zoho/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/descriptions"}}),r.intZohoField=e(r.baseUrl+"integrations/zoho/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intZendeskAccount=e(r.baseUrl+"integrations/zendesk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/zendesk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/accounts/:id/fields"}}),r.intZendeskConfiguration=e(r.baseUrl+"integrations/zendesk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/zendesk/configurations/:id/tags"}}),r.intZendeskField=e(r.baseUrl+"integrations/zendesk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intFreshdeskAccount=e(r.baseUrl+"integrations/freshdesk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/freshdesk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/:id/fields"}}),r.intFreshdeskConfiguration=e(r.baseUrl+"integrations/freshdesk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/freshdesk/configurations/:id/tags"}}),r.intFreshdeskField=e(r.baseUrl+"integrations/freshdesk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intVtigerAccount=e(r.baseUrl+"integrations/vtiger/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/vtiger/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/accounts/:id/fields"}}),r.intVtigerConfiguration=e(r.baseUrl+"integrations/vtiger/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/descriptions"}}),r.intVtigerField=e(r.baseUrl+"integrations/vtiger/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intServicenowAccount=e(r.baseUrl+"integrations/servicenow/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/servicenow/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/accounts/:id/fields"}}),r.intServicenowConfiguration=e(r.baseUrl+"integrations/servicenow/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/descriptions"}}),r.intServicenowField=e(r.baseUrl+"integrations/servicenow/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intDynamics365Account=e(r.baseUrl+"integrations/dynamics365/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/dynamics365/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/:id/fields"}}),r.intDynamics365Configuration=e(r.baseUrl+"integrations/dynamics365/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/descriptions"}}),r.intDynamics365Field=e(r.baseUrl+"integrations/dynamics365/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intFreshsalesAccount=e(r.baseUrl+"integrations/freshsales/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/freshsales/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/accounts/:id/fields"}}),r.intFreshsalesConfiguration=e(r.baseUrl+"integrations/freshsales/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/configurations/:id/clone",params:{includeAll:"@includeAll"}},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/descriptions"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/fields"}}),r.intFreshsalesField=e(r.baseUrl+"integrations/freshsales/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.network=e(r.baseUrl+"networks/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"networks/describe"},clone:{method:"post",url:r.baseUrl+"networks/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatQueueReport=e(r.baseUrl+"chat/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"chat/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatInternalMessage=e(r.baseUrl+"chat/internal/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/internal/messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/internal/messages/:id/clone",params:{includeAll:"@includeAll"}},getUsers:{isArray:!1,method:"get",url:r.baseUrl+"chat/internal/messages/users"}}),r.jscriptyAnswerReport=e(r.baseUrl+"jscripty/answers/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/answers/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/answers/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptyQuestionReport=e(r.baseUrl+"jscripty/questions/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/questions/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/questions/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptySessionReport=e(r.baseUrl+"jscripty/sessions/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/sessions/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/sessions/reports/:id/clone",params:{includeAll:"@includeAll"}},getQuestions:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/sessions/reports/:id/questions"}}),r.smsQueueReport=e(r.baseUrl+"sms/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"sms/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.squareReport=e(r.baseUrl+"square/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/reports/describe"},clone:{method:"post",url:r.baseUrl+"square/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.squareReportDetail=e(r.baseUrl+"square/details/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/details/reports/describe"},clone:{method:"post",url:r.baseUrl+"square/details/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptyProject=e(r.baseUrl+"jscripty/projects/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/projects/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/projects/:id/clone",params:{includeAll:"@includeAll"}},getSessions:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/sessions"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/answers"},getSummary:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/summary",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.setting=e(r.baseUrl+"settings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"settings/describe"},clone:{method:"post",url:r.baseUrl+"settings/:id/clone",params:{includeAll:"@includeAll"}},addLogo:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/logo"},addLogoLogin:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/logo_login"},getLogo:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/logo"},getLogoLogin:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/logo_login"},gdpr:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/gdpr"},addPreferred:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/preferred"},getPreferred:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/preferred"},addFavicon:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/favicon"},getFavicon:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/favicon"},getDate:{isArray:!1,method:"get",url:r.baseUrl+"settings/now"}}),r.squareOdbc=e(r.baseUrl+"square/odbc/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/odbc/describe"},clone:{method:"post",url:r.baseUrl+"square/odbc/:id/clone",params:{includeAll:"@includeAll"}},test:{isArray:!1,method:"get",url:r.baseUrl+"square/odbc/:id/test"}}),r.squareProject=e(r.baseUrl+"square/projects/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/projects/describe"},clone:{method:"post",url:r.baseUrl+"square/projects/:id/clone",params:{includeAll:"@includeAll"}},addUsers:{isArray:!0,method:"post",url:r.baseUrl+"square/projects/:id/users"},removeUsers:{isArray:!1,method:"delete",url:r.baseUrl+"square/projects/:id/users"},getUsers:{isArray:!1,method:"get",url:r.baseUrl+"square/projects/:id/users"}}),r.squareRecording=e(r.baseUrl+"square/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/recordings/describe"},clone:{method:"post",url:r.baseUrl+"square/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"square/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.squareMessage=e(r.baseUrl+"square/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/messages/describe"},clone:{method:"post",url:r.baseUrl+"square/messages/:id/clone",params:{includeAll:"@includeAll"}}}),r.team=e(r.baseUrl+"teams/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"teams/describe"},clone:{method:"post",url:r.baseUrl+"teams/:id/clone",params:{includeAll:"@includeAll"}},getQueues:{isArray:!0,method:"get",url:r.baseUrl+"teams/:id/queues"},addQueues:{isArray:!0,method:"post",url:r.baseUrl+"teams/:id/queues"},removeQueues:{isArray:!1,method:"delete",url:r.baseUrl+"teams/:id/queues"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"teams/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"teams/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"teams/:id/users"}}),r.license=e(r.baseUrl+"license/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"license/describe"},clone:{method:"post",url:r.baseUrl+"license/:id/clone",params:{includeAll:"@includeAll"}}}),r.campaign=e(r.baseUrl+"campaigns/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"campaigns/describe"},clone:{method:"post",url:r.baseUrl+"campaigns/:id/clone",params:{includeAll:"@includeAll"}},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_finals"},getHopperBlacks:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_black"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/lists"},addLists:{isArray:!0,method:"post",url:r.baseUrl+"campaigns/:id/lists"},removeLists:{isArray:!0,method:"delete",url:r.baseUrl+"campaigns/:id/lists"},getBlackLists:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/blacklists"},addBlackLists:{isArray:!0,method:"post",url:r.baseUrl+"campaigns/:id/blacklists"},removeBlackLists:{isArray:!0,method:"delete",url:r.baseUrl+"campaigns/:id/blacklists"}}),r.migration=e(r.baseUrl+"migrations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"migrations/describe"},clone:{method:"post",url:r.baseUrl+"migrations/:id/clone",params:{includeAll:"@includeAll"}}}),r.attachment=e(r.baseUrl+"attachments/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"attachments/describe"},clone:{method:"post",url:r.baseUrl+"attachments/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"attachments/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.plugin=e(r.baseUrl+"plugins/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"plugins/describe"},clone:{method:"post",url:r.baseUrl+"plugins/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"plugins/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},upload:{isArray:!1,method:"post",url:r.baseUrl+"plugins/"},delete:{isArray:!1,method:"delete",url:r.baseUrl+"plugins/:id"},webhookGet:{isArray:!1,method:"get",url:r.baseUrl+"plugins/webhook"},webhookPost:{isArray:!1,method:"post",url:r.baseUrl+"plugins/webhook"}}),r.mailTransferReport=e(r.baseUrl+"mail/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"mail/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatTransferReport=e(r.baseUrl+"chat/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"chat/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxTransferReport=e(r.baseUrl+"fax/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"fax/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.openchannelTransferReport=e(r.baseUrl+"openchannel/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsTransferReport=e(r.baseUrl+"sms/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"sms/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmList=e(r.baseUrl+"cm/lists/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/lists/describe"},clone:{method:"post",url:r.baseUrl+"cm/lists/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"cm/lists/:id/dispositions"},addContacts:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/contacts"},getContacts:{isArray:!0,method:"get",url:r.baseUrl+"cm/lists/:id/contacts"},getContactsCsv:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/contacts/csv",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},addCustomField:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/fields"},getCustomFields:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/fields"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"cm/lists/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"cm/lists/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/users"}}),r.voicePrefix=e(r.baseUrl+"voice/prefixes/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/prefixes/describe"},clone:{method:"post",url:r.baseUrl+"voice/prefixes/:id/clone",params:{includeAll:"@includeAll"}},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"voice/prefixes/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"voice/prefixes/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"voice/prefixes/:id/users"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"voice/prefixes/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"voice/prefixes/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"voice/prefixes/:id/teams"}}),r.userProfile=e(r.baseUrl+"userProfiles/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfiles/describe"},clone:{method:"post",url:r.baseUrl+"userProfiles/:id/clone",params:{includeAll:"@includeAll"}},addSections:{isArray:!0,method:"post",url:r.baseUrl+"userProfiles/:id/sections"},removeSections:{isArray:!1,method:"delete",url:r.baseUrl+"userProfiles/:id/sections"},getSections:{isArray:!0,method:"get",url:r.baseUrl+"userProfiles/:id/sections"},addResources:{isArray:!0,method:"post",url:r.baseUrl+"userProfiles/:id/resources"},removeResources:{isArray:!1,method:"delete",url:r.baseUrl+"userProfiles/:id/resources"},getResources:{isArray:!1,method:"get",url:r.baseUrl+"userProfiles/:id/resources"}}),r.userProfileSection=e(r.baseUrl+"userProfile/sections/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfile/sections/describe"},clone:{method:"post",url:r.baseUrl+"userProfile/sections/:id/clone",params:{includeAll:"@includeAll"}}}),r.userProfileResource=e(r.baseUrl+"userProfile/resources/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfile/resources/describe"},clone:{method:"post",url:r.baseUrl+"userProfile/resources/:id/clone",params:{includeAll:"@includeAll"}}}),r.userNotification=e(r.baseUrl+"userNotifications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userNotifications/describe"},clone:{method:"post",url:r.baseUrl+"userNotifications/:id/clone",params:{includeAll:"@includeAll"}},sendUserNotification:{isArray:!1,method:"post",url:r.baseUrl+"userNotifications/"}}),r.whatsappAccount=e(r.baseUrl+"whatsapp/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/accounts/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/users"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/applications"},notify:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/notify"},send:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/send"}}),r.whatsappApplication=e(r.baseUrl+"whatsapp/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/applications/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappInteraction=e(r.baseUrl+"whatsapp/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/interactions/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.whatsappMessage=e(r.baseUrl+"whatsapp/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/messages/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"whatsapp/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"whatsapp/messages/:id/reject"},status:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/messages/:id/status"}}),r.whatsappQueueReport=e(r.baseUrl+"whatsapp/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappTransferReport=e(r.baseUrl+"whatsapp/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappQueue=e(r.baseUrl+"whatsapp/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/queues/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/users"}}),r.cloudProvider=e(r.baseUrl+"cloudProviders/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cloudProviders/describe"},clone:{method:"post",url:r.baseUrl+"cloudProviders/:id/clone",params:{includeAll:"@includeAll"}}}),r.realtime=e(r.baseUrl+"realtime",{},{getAgents:{isArray:!1,method:"get",url:r.baseUrl+"realtime/agents"},getQueues:{isArray:!1,method:"get",url:r.baseUrl+"realtime/queues"}}),r}e.$inject=["$resource","userProfileManager"],angular.module("motion").factory("api",e)}(),function(){"use strict";function e(e,n){n.setConfig({position:"top-right",sound:!1,html:!0,theme:"material"}),e.useLoader("$translatePartialLoader",{urlTemplate:"{part}/i18n/{lang}.json"}),e.preferredLanguage("en"),e.fallbackLanguage("en"),e.useSanitizeValueStrategy(null)}e.$inject=["$translateProvider","toastyConfigProvider"],angular.module("motion").config(e)}(),function(){"use strict";angular.module("motion")}(),function(){"use strict";function e(e,n,t,a){var i=this;i.themes=e.themes,i.direction="ltr";var s=t.get("motion.language");s&&(n.use(s),0<=["ar","fa","he"].indexOf(s)&&a.setting.get({id:1}).$promise.then(function(e){e&&e.rtlSupport&&(i.direction="rtl")}).catch(function(e){e&&toasty.error({title:"Error",msg:e.data?e.data.message||e.message||e:e.message||e})}))}e.$inject=["motionTheming","$translate","$cookies","api"],angular.module("motion").controller("IndexController",e)}(),function(){"use strict";function e(a,i){return function(e){var n=new Date,t=new Date(e);return t.getDate()===n.getDate()&&t.getMonth()===n.getMonth()&&t.getFullYear()===n.getFullYear()?a("date")(t.getTime(),"shortTime"):t.getDate()===n.getDate()-1&&t.getMonth()===n.getMonth()&&t.getFullYear()===n.getFullYear()?i.instant("DASHBOARDS.YESTERDAY")+" "+a("date")(t.getTime(),"shortTime"):a("date")(t.getTime(),"MMM d, y h:mm a")}}function n(e){return{Today:e.instant("DASHBOARDS.TODAY"),Yesterday:e.instant("DASHBOARDS.YESTERDAY"),"This Week":e.instant("DASHBOARDS.THIS_WEEK"),"Last Week":e.instant("DASHBOARDS.LAST_WEEK"),"This Month":e.instant("DASHBOARDS.THIS_MONTH"),"Last Month":e.instant("DASHBOARDS.LAST_MONTH"),"This Year":e.instant("DASHBOARDS.THIS_YEAR"),"Last Year":e.instant("DASHBOARDS.LAST_YEAR"),January:e.instant("DASHBOARDS.JANUARY"),February:e.instant("DASHBOARDS.FEBRUARY"),March:e.instant("DASHBOARDS.MARCH"),April:e.instant("DASHBOARDS.APRIL"),May:e.instant("DASHBOARDS.MAY"),June:e.instant("DASHBOARDS.JUNE"),July:e.instant("DASHBOARDS.JULY"),August:e.instant("DASHBOARDS.AUGUST"),September:e.instant("DASHBOARDS.SEPTEMBER"),October:e.instant("DASHBOARDS.OCTOBER"),November:e.instant("DASHBOARDS.NOVEMBER"),December:e.instant("DASHBOARDS.DECEMBER"),Mon:e.instant("DASHBOARDS.MON"),Tue:e.instant("DASHBOARDS.TUE"),Wed:e.instant("DASHBOARDS.WED"),Thu:e.instant("DASHBOARDS.THU"),Fri:e.instant("DASHBOARDS.FRI"),Sat:e.instant("DASHBOARDS.SAT"),Sun:e.instant("DASHBOARDS.SUN")}}e.$inject=["$filter","$translate"],n.$inject=["$translate"],angular.module("motion").filter("limitObjectFromTo",function(){return function(e,n,t){var a,i={},s=0;for(a in e)if(t<=s&&(i[a]=e[a]),++s===t+n)break;return i}}).filter("formatdate",e).factory("IndexFactory",function(){var e=[{value:"jan"},{value:"feb"},{value:"mar"},{value:"apr"},{value:"may"},{value:"jun"},{value:"jul"},{value:"aug"},{value:"sep"},{value:"oct"},{value:"nov"},{value:"dec"}],n=[{value:"1"},{value:"2"},{value:"3"},{value:"4"},{value:"5"},{value:"6"},{value:"7"},{value:"8"},{value:"9"},{value:"10"},{value:"11"},{value:"12"}],t=[{value:"mon"},{value:"tue"},{value:"wed"},{value:"thu"},{value:"fri"},{value:"sat"},{value:"sun"}],a=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31];return{getMonthName:function(){return e},getMonthNumber:function(){return n},getDaysOfWeek:function(){return t},getDaysOfMonth:function(){return a}}}).factory("dateFilterLocalizationFactory",n).factory("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,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"ChatQueues":void 0,channel:"chat",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("CHAT.CHATQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditChatQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("chat_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userChatQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.ChatQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userChatQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.ChatQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"chat")})}),e.$on("$destroy",function(){r.removeAllListeners("chat_queue:save"),r.removeAllListeners("userChatQueue:remove"),r.removeAllListeners("userChatQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.chat").controller("QueuesChatRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.chat.realtime.agents":this.selectedTab=0;break;case"app.chat.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.chat.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.chat.realtime.agents");break;case 1:t.go("app.chat.realtime.queues");break;default:t.go("app.chat.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.chat").controller("ChatRealtimeController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.companies=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="companies",f.listOrder="",f.listOrderAsc=null,f.selectedCompanies=[],f.query={fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){a.go("app.contactmanager.companies.edit",{id:e.id,company:e,crudPermissions:f.crudPermissions})},f.gotocontactsgoto=function(t,e){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{CompanyId:t.id}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{CompanyId:t.id})}},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("company")+"?").htmlContent("<b>"+(e.name||"company")+"</b> will be deleted.").ariaLabel("delete company").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCompanies=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmCompany.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Companies",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCompany=function(e,n){i.show({controller:"CreateOrEditCompanyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/companies/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{company:n,companies:f.companies.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCompany=y,f.exportSelectedCompanies=function(){var e=angular.copy(f.selectedCompanies);return f.selectedCompanies=[],e},f.deleteSelectedCompanies=function(e){var n=i.confirm().title("Are you sure want to delete the selected companies?").htmlContent("<b>"+f.selectedCompanies.length+" selected</b> will be deleted.").ariaLabel("delete Companys").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCompanies.forEach(function(e){y(e)}),f.selectedCompanies=[]})},f.deselectCompanies=function(){f.selectedCompanies=[]},f.selectAllCompanies=function(){f.selectedCompanies=f.companies.rows};var b=!0,A=1;function E(e){f.companies=e||{count:0,rows:[]}}function y(e){m.cmCompany.delete({id:e.id}).$promise.then(function(){_.remove(f.companies.rows,{id:e.id}),f.companies.count-=1,f.companies.rows.length||f.getCompanies(),p.success({title:_.startCase("Company")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmCompany"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmCompany",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCompanies())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","companies","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("CompaniesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_COMPANY",g.company=angular.copy(l),g.companies=r,g.newCompany=!1,g.company||(g.company={},g.title="CONTACTMANAGER.NEW_COMPANY",g.newCompany=!0),g.addNewCompany=function(){g.errors=[],d.cmCompany.save(g.company).$promise.then(function(e){g.companies.unshift(e.toJSON()),o.success({title:"Company properly created",msg:g.company.name?g.company.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCompany=function(){g.errors=[],d.cmCompany.update({id:g.company.id},g.company).$promise.then(function(e){var n=_.find(g.companies,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Company properly saved!",msg:g.company.name?g.company.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCompany=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The company will be deleted.").ariaLabel("Delete Company").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmCompany.delete({id:g.company.id}).$promise.then(function(){_.remove(g.companies,{id:g.company.id}),o.success({title:"Company properly deleted!",msg:(g.company.name||"company")+" has been deleted!"}),v(g.company)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","companies","company","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditCompanyDialogController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.company=c||a.params.company||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=a.params.tab||0,u.gotogoto=function(t,e){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{CompanyId:t.id}):l.info({title:i.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:i.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{CompanyId:t.id})}},u.alert=l.info,u.gotoCompanies=function(){a.go("app.contactmanager.companies",{},{reload:"app.contactmanager.companies"})},u.saveCompany=function(){r.cmCompany.update({id:u.company.id},u.company).$promise.then(function(){l.success({title:"Company updated!",msg:u.company.name?u.company.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmCompany",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","company","userProfileSection"],angular.module("app.contactmanager").controller("CompanyController",e)}(),function(){"use strict";function e(n,i,t,a,e,s,o,r,l,d,c,m,u,p,g,v,h,f,b){var A=this;A.currentUser=f.getCurrentUser(),A.license=b,A.userProfile=r,A.userProfileSection=l&&1==l.count?l.rows[0]:null,A.crudPermissions=f.parseCrudPermissions(A.userProfileSection?A.userProfileSection.crudPermissions:null);var E=60,y=1024*E*1024;A.ngFlowOptions={target:"api/cm/contacts/upload",singleFile:!0,maxChunkRetries:1,chunkSize:y,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},A.contacts=c||{count:0,rows:[]},A.options={hidden:!1,hover:!1,isOpen:!1},A.table="cm_contacts",A.selectedContacts=[],A.lists=m||{rows:[],count:0},A.companies=p||{rows:[],count:0},A.tags=v||{rows:[],count:0},A.listsMap=u,A.companiesMap=g,A.selectedTags=[],A.selectedList=null,A.selectedCompany=null,A.query=_.merge({includeAll:!0,sort:"-updatedAt",limit:10,offset:0,page:1},e),A.editdialog=function(e,n){a.go("app.contactmanager.contacts.edit",{id:e.id,crudPermissions:A.crudPermissions})},A.deleteconfirm=function(e,n){var t=s.confirm().title("Are you sure want to delete the contact?").htmlContent("<b>"+(e.firstName||e.email||e.phone||"Contact")+"</b> will be deleted.").ariaLabel("delete contact").targetEvent(n).ok("OK").cancel("CANCEL");s.show(t).then(function(){C(e)})},A.success=I,A.getContacts=function(){A.query.offset=(A.query.page-1)*A.query.limit,f.hasRole("admin")?A.promise=d.cmContact.get(A.query,I).$promise:(A.query.id=A.userProfile.id,A.query.ListId=A.query.ListId?A.query.ListId:_.map(A.lists.rows,"id"),A.query.CompanyId=A.query.CompanyId?A.query.CompanyId:_(A.companies.rows).filter({canSelect:void 0}).map("id").value(),A.query.section="Contacts",A.promise=d.userProfile.getResources(A.query,I).$promise)},A.getAssignedCompanies=function(){if(!f.hasRole("admin")){var e=_(A.contacts.rows).map(function(e){return{id:e.CompanyId}}).uniqBy("id").filter(function(e){return e.id&&0<e.id}).pullAllBy(A.companies.rows,"id").value();if(!_.isEmpty(e)){var n=[];e.forEach(function(e){n.push(d.cmCompany.get({id:e.id,fields:"id,name"}).$promise)}),o.all(n).then(function(e){e.forEach(function(e){var n=e.toJSON();n.canSelect=!1,A.companies.rows.push(n);var t={};t[n.id]=n.name,A.companiesMap=_.assignIn(A.companiesMap,t)})}).catch(function(e){h.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_COMPANY",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}},A.mergeContact=function(e,n){s.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",nolimit:!0})}]},locals:{contacts:A.contacts.rows}})},A.duplicateContact=function(e,n){s.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",nolimit:!0})}]},locals:{contacts:A.contacts.rows}})},A.createOrEditContact=function(e,n){n&&n.dateOfBirth&&(n.dateOfBirth=new Date(n.dateOfBirth));s.show({controller:"CreateOrEditContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{ListId:A.query.ListId||a.params.ListId,CompanyId:A.query.CompanyId||a.params.CompanyId,contact:n,contacts:A.contacts.rows,companies:A.companies,lists:A.lists,setting:null,crudPermissions:A.crudPermissions}})},A.deleteContact=C,A.exportSelectedContacts=function(){var e=angular.copy(A.selectedContacts);return A.selectedContacts=[],e},A.deleteSelectedContacts=function(e){var n=s.confirm().title("Are you sure want to delete the selected contacts?").htmlContent("<b>"+A.selectedContacts.length+" selected</b> will be deleted.").ariaLabel("delete Contacts").targetEvent(e).ok("OK").cancel("CANCEL");s.show(n).then(function(){A.selectedContacts.forEach(function(e){C(e)}),A.selectedContacts=[]})},A.deselectContacts=function(){A.selectedContacts=[]},A.selectAllContacts=function(){A.selectedContacts=A.contacts.rows},A.createTag=function(e){var n=s.prompt().title("What would you name your tag?").placeholder("Tag name").ariaLabel("Tag name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.tag.save({name:e});h.error({title:"Error creating tag!",msg:"Invalid tag name."})}).then(function(e){e&&(A.tags.rows.push(e),h.success({title:"Tag properly created!",msg:e.tag?e.name+" has been created!":""}))})},A.createList=function(e){var n=s.prompt().title("What would you name your list?").placeholder("List name").ariaLabel("List name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.cmList.save({name:e});h.error({title:"Error creating list!",msg:"Invalid list name."})}).then(function(e){e&&(A.lists.rows.push(e),h.success({title:"List properly created!",msg:e.name?e.name+" has been created!":""}))})},A.createCompany=function(e){var n=s.prompt().title("What would you name your company?").placeholder("Company name").ariaLabel("Company name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.cmCompany.save({name:e});h.error({title:"Error creating company!",msg:"Invalid company name."})}).then(function(e){e&&(A.companies.rows.push(e),h.success({title:"Company properly created!",msg:e.name?e.name+" has been created!":""}))})},A.importContacts=function(e,n,t){var a=JSON.parse(n);s.show({controller:"ImportContactsDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/import/import.html",parent:angular.element(i.body),clickOutsideToClose:!1,locals:{lists:m,companies:p,file:a.file,fields:a.fields,license:A.license}}).then(function(){A.getContacts()}).catch(function(e){console.error()})},A.hasPermission=function(){return f.hasPermission(303)||f.hasRole("admin")},A.fileAdded=function(e){var n=["csv"];if(!_.includes(n,e.getExtension()))return h.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>y)return h.error({title:"File too big",msg:"The max allowed size is "+E+"MB"}),!1;return!0},a.params.ListId&&(A.selectedList=a.params.ListId),a.params.CompanyId&&(A.selectedCompany=a.params.CompanyId),n.$watch("vm.options.isOpen",function(e){e?t(function(){n.tooltipVisible=A.options.isOpen},600):n.tooltipVisible=A.options.isOpen});var S=!0,T=1;function I(e){A.contacts=e||{count:0,rows:[]}}function C(e){d.cmContact.delete({id:e.id}).$promise.then(function(){_.remove(A.contacts.rows,{id:e.id}),A.contacts.count-=1,A.contacts.rows.length||A.getContacts(),h.success({title:"Contact deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){A.errors=e.data.errors||[{message:e.toString(),type:"api.contact.delete"}];for(var n=0;n<e.data.errors.length;n++)h.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else h.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}n.$watch("vm.query.filter",function(e,n){S?t(function(){S=!1}):(n||(T=A.query.page),e!==n&&(A.query.page=1),e||(A.query.page=T),A.getContacts())},!0),n.$watch("vm.selectedList",function(e,n){e!==n&&(A.query.ListId=A.selectedList||void 0,A.getContacts())}),n.$watch("vm.selectedCompany",function(e,n){e!==n&&(A.query.CompanyId=A.selectedCompany||void 0,A.getContacts())}),n.$watch("vm.selectedTags",function(e,n){(e.length||n.length)&&A.getContacts()})}e.$inject=["$scope","$document","$timeout","$state","$stateParams","$mdDialog","$q","userProfile","userProfileSection","api","contacts","lists","listsMap","companies","companiesMap","tags","toasty","Auth","license"],angular.module("app.contactmanager").controller("ContactsController",e)}(),function(){"use strict";function e(t,a,e,n,i,s,o,r,l,d){var c=this;function m(e){if(e)return l.cmList.getCustomFields({id:e}).$promise.then(function(e){if(e){c.customFields=e;var n=_.map(c.customFields.rows,function(e){return"cf_"+e.id});return l.cmContact.get({id:c.contact.id,attributes:n,raw:!0}).$promise.then(function(e){c.contact=_.merge(c.contact,e)})}}).then(function(){c.customFields.rows.forEach(function(e){"datetime"===e.type&&c.contact["cf_"+e.id]&&(c.contact["cf_"+e.id]=u(c.contact["cf_"+e.id]))}),Object.keys(c.contact).forEach(function(e){if(_.startsWith(e,"cf_")){var n=e.split("_")[1];_.some(c.customFields.rows,["id",Number(n)])||delete c.contact["cf_"+n]}})}).catch(function(e){console.error(e)});c.customFields={rows:[],count:0}}function u(e){return null===e?void 0:new Date(e)}function p(){t.hide()}c.errors=[],c.title="CONTACTMANAGER.EDIT_CONTACT",c.crudPermissions=d,c.contact=angular.copy(s),c.contacts=e||{rows:[],count:0},c.lists=n||{rows:[],count:0},c.companies=i||{rows:[],count:0},c.customFields={rows:[],count:0},c.newContact=!1,c.contact?(delete c.contact.List,m(c.contact.ListId)):(c.contact={ListId:o?parseInt(o,10):void 0,CompanyId:r?parseInt(r,10):void 0},c.title="CONTACTMANAGER.NEW_CONTACT",c.newContact=!0),c.addNewContact=function(){c.errors=[],l.cmContact.save(c.contact).$promise.then(function(e){c.contacts.unshift(e),a.success({title:"Contact properly created",msg:c.contact.name?c.contact.name+" has been created!":""}),p()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contacts.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveContact=function(){c.errors=[],l.cmContact.update({id:c.contact.id},c.contact).$promise.then(function(e){var n=_.find(c.contacts,{id:e.id});n&&_.merge(n,e),a.success({title:"Contact properly saved!",msg:c.contact.name?c.contact.name+" has been saved!":""}),p()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.contact.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteContact=function(e){c.errors=[];var n=t.confirm().title("Are you sure?").content("The contact will be deleted.").ariaLabel("Delete Contact").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){l.cmContact.delete({id:c.contact.id}).$promise.then(function(){_.remove(c.contacts,{id:c.contact.id}),a.success({title:"Contact properly deleted!",msg:c.contact.name?c.contact.name+" has been deleted!":""}),p()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.contact.delete"}]})},function(){})},c.closeDialog=p,c.getCustomFields=m,c.getDateFromString=u}e.$inject=["$mdDialog","toasty","contacts","lists","companies","contact","ListId","CompanyId","api","crudPermissions"],angular.module("app.tools").controller("CreateOrEditContactDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(){e.hide()}o.errors=[],o.title="CONTACTMANAGER.COPY_CONTACT",o.contact=angular.copy(t),o.lists=i||{rows:[],count:0},o.addNewContact=function(){o.errors=[],delete o.contact.id,o.contact.tags&&!o.contact.tags.length&&delete o.contact.tags;s.cmContact.save(o.contact).$promise.then(function(e){a.unshift(e),n.success({title:"Contact properly created",msg:o.contact.name?o.contact.name+" has been created!":""}),r()}).catch(function(e){console.error(e),o.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}]})},o.closeDialog=r}e.$inject=["$mdDialog","toasty","contact","contacts","lists","api"],angular.module("app.tools").controller("DuplicateContactDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e){a.hide(e)}d.errors=[],d.title="CONTACTMANAGER.EDIT_HOPPER",d.hopper=angular.copy(o),d.hoppers=s,d.newHopper=!1,d.crudPermissions=l,d.hopper||(d.hopper={},d.title="CONTACTMANAGER.NEW_HOPPER",d.newHopper=!0),d.saveHopper=function(){d.errors=[],r.cmHopper.update({id:d.hopper.id},d.hopper).$promise.then(function(e){var n=_.find(d.hoppers,{id:e.id});n&&_.merge(n,e),i.success({title:"Hopper properly saved!",msg:d.hopper.name?d.hopper.name+" has been saved!":""}),c(e)}).catch(function(e){console.error(e),d.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}]})},d.getDateFromString=function(e){return null===e?void 0:new Date(e)},d.closeDialog=c}e.$inject=["$scope","$state","$location","$mdDialog","toasty","hoppers","hopper","api","crudPermissions"],angular.module("app.contactmanager.contacts").controller("EditHopperDialogController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y){var S=this;function T(n){return function(e){S[n]=e||{count:0,rows:[]}}}function I(){S.queryHopper.offset=(S.queryHopper.page-1)*S.queryHopper.limit,S.queryHopper.id=S.contact.id,S.promise=r.cmContact.getHoppers(S.queryHopper,T("hoppers")).$promise}function C(){S.queryFinal.offset=(S.queryFinal.page-1)*S.queryFinal.limit,S.queryFinal.id=S.contact.id,S.promise=r.cmContact.getHopperFinals(S.queryFinal,T("finals")).$promise}function O(){S.queryHistory.offset=(S.queryHistory.page-1)*S.queryHistory.limit,S.queryHistory.id=S.contact.id,S.promise=r.cmContact.getHopperHistories(S.queryHistory,T("histories")).$promise}function w(e){S.journeyIsLoading=!0;var n=_.merge(S.journeyOptions,{id:S.contact.id,offset:e||0});return y.get(S.journey,n).then(function(e){S.journey=e.journey,S.canLoadMoreJourney=e.loadMore}).finally(function(){S.journeyIsLoading=!1})}S.currentUser=A.getCurrentUser(),S.license=b,S.journey=[],S.contact=l||{},S.hoppers=d||{rows:[],count:0},S.finals=c||{rows:[],count:0},S.histories=m||{rows:[],count:0},S.companies=p||{rows:[],count:0},S.lists=g||{rows:[],count:0},S.customFields=v||{rows:[],count:0},S.tags=h||{rows:[],count:0},S.jscriptySessions=f||{rows:[],count:0},S.journeyOptions=y.getQuery(),S.quickFilters=y.getQuickFilters(),S.journeyTimelineOptions={scrollEl:"#journey-content"},S.userProfileSection=E&&1==E.count?E.rows[0]:null,S.crudPermissions=A.parseCrudPermissions(S.userProfileSection?S.userProfileSection.crudPermissions:null),S.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),S.queryHopper={fields:"id,phone,scheduledat,priority,recallme,VoiceQueueId,CampaignId,UserId",sort:"-updatedAt",limit:10,page:1},S.queryFinal={fields:"id,uniqueid,calleridnum,statedesc,starttime,disposition",sort:"-id",limit:10,page:1},S.queryHistory={fields:"id,uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-id",limit:10,page:1},S.queryJscriptySession={fields:"id,starttime,endtime,membername,projectname",sort:"-starttime",limit:10,page:1},S.selectedTab=n.params.tab||0,S.onInit=function(){A.hasRole("admin")||(function(){if(!_.some(S.companies.rows,{id:S.contact.CompanyId}))r.cmCompany.get({id:S.contact.CompanyId,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,S.companies.rows.push(n)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_COMPANY",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}(),function(){var e=_.map(S.contact.Tags,function(e){return{id:e.id,name:e.name}});if(!_.isEmpty(e))for(var n=0;n<e.length;n++)_.some(S.tags.rows,{id:e.id})||(e[n].canSelect=!1,S.tags.rows.push(e[n]))}());return r.user.get({fields:"id,fullname",nolimit:!0}).$promise.then(function(e){S.users=e||{count:0,rows:[]},S.usersMap=_.mapValues(_.keyBy(S.users.rows,"id"),"fullname"),S.Tags=_.map(S.contact.Tags,"id")}).finally(function(){S.contact&&w()})},S.gotoContacts=function(){n.go("app.contactmanager.contacts",{},{reload:!0,notify:!0})},S.duplicateContact=function(e){i.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,resolve:{lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name"}):e.resolve("userProfile@getResources",{id:S.currentUser.userProfileId,section:"Lists",fields:"id,name"})}]},locals:{contacts:u.rows,contact:l}})},S.saveContact=function(){r.cmContact.update({id:S.contact.id},S.contact).$promise.then(function(){o.success({title:"Contact updated!",msg:S.contact.name?S.contact.name+" has been updated!":""})}).then(function(){return r.cmContact.setTags({id:S.contact.id,ids:S.Tags}).$promise}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEcontact",msg:e.data?JSON.stringify(e.data):e.toString()})})},S.editCompany=function(e,n){var t=_.find(S.companies.rows,{id:n});i.show({controller:"CreateOrEditCompanyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/companies/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{companies:[],license:null,setting:null,crudPermissions:!1===t.canSelect?{readOnly:!0,canEdit:!1,canDelete:!1}:r.userProfileSection.get({userProfileId:S.currentUser.userProfileId,sectionId:302}).$promise.then(function(e){var n=e.rows?e.rows[0]:null;return A.parseCrudPermissions(n?n.crudPermissions:null)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"API:GET_COMPANY_SECTION",msg:e.data?JSON.stringify(e.data):e.toString()})})},resolve:{company:["apiResolver",function(e){return e.resolve("cmCompany@get",{id:n})}]}})},S.onSelectList=function(e){if(S.contact.ListId){var n=i.confirm().title("You are selecting the list number: "+S.contact.ListId).textContent("Warning! You won't select a different list for the contact "+S.contact.firstName||S.contact.lastName||S.contact.id).targetEvent(e).ok("Ok").cancel("Cancel");return i.show(n).then(S.onSelectListSuccess).catch(function(){S.contact.ListId=null})}},S.onSelectListSuccess=function(){return r.cmList.getCustomFields({id:S.contact.ListId}).$promise.then(function(e){S.customFields=e||{rows:[],count:0}}).catch(function(e){console.error(e)})},S.getDateFromString=function(e){return null===e?void 0:new Date(e)},S.getHoppers=I,S.getFinals=C,S.getHistories=O,S.getJscriptySessions=function(){S.queryJscriptySession.offset=(S.queryJscriptySession.page-1)*S.queryJscriptySession.limit,S.queryJscriptySession.id=S.contact.id,S.promise=r.cmContact.getJscriptySessions(S.queryJscriptySession,T("jscriptySessions")).$promise},S.deleteconfirm=function(n,e){var t=i.confirm().title("Are you sure want to delete the agent?").htmlContent("<b>"+(n.phone||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){var e;e=n,r.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(S.hoppers.rows,{id:e.id}),S.hoppers.count--,S.hoppers.rows.length||S.getHoppers(),o.success({title:"Hopper deleted!",msg:e.phone?e.phone+" has been deleted!":""})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEhopper",msg:e.data?JSON.stringify(e.data):e.toString()})})},function(){console.log("CANCEL")})},S.editHopper=function(e,n){i.show({controller:"CreateOrEditHopperVoiceQueueIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.createOrEditIvrCampaignHopper=function(e,n){i.show({controller:"CreateOrEditHopperCampaignIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.getCustomerJourney=w,S.loadMoreJourney=function(){return s(function(e,n){var t=S.journey.length;return e(w(t))})};var R=!0,x=1;e.$watch("vm.queryHopper.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryHopper.page),e!==n&&(S.queryHopper.page=1),e||(S.queryHopper.page=x),I())}),e.$watch("vm.queryFinal.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryFinal.page),e!==n&&(S.queryFinal.page=1),e||(S.queryFinal.page=x),C())}),e.$watch("vm.queryHistory.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryHistory.page),e!==n&&(S.queryHistory.page=1),e||(S.queryHistory.page=x),O())})}e.$inject=["$scope","$timeout","$state","$document","$mdDialog","$q","toasty","api","contact","hoppers","finals","histories","contacts","companies","lists","customFields","tags","jscriptySessions","license","Auth","userProfileSection","customerJourneyManager"],angular.module("app.contactmanager.contacts").controller("ContactController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;g.processing=!1,g.stopping=!0,g.license=p,g.pid=0,g.result={finish:!1,rows:0,affectedRows:0,failedRows:0,duplicatedRows:0,errors:[]},g.contactFields=[{key:"firstName",required:!0},{key:"lastName",required:!1},{key:"phone",required:!0},{key:"mobile",required:!1},{key:"email",required:!1},{key:"dateOfBirth",required:!1},{key:"country",required:!1},{key:"city",required:!1},{key:"street",required:!1},{key:"postalCode",required:!1},{key:"fax",required:!1}],g.motionBullFields=[{key:"UserId",required:!1},{key:"scheduledat",required:!1},{key:"priority",required:!1}],g.binding={},g.duplicate=[],g.lists=s||{rows:[],count:0},g.companies=o||{rows:[],count:0},g.customFields={rows:[],count:0},g.fields=u||[],g.closeDialog=function(){d.removeAllListeners("contact:import:"+v),n.hide()},g.onChangeList=function(){return l.cmList.getCustomFields({id:g.ListId}).$promise.then(function(e){g.customFields=e}).catch(function(e){console.error(e)})},g.uploadCsv=function(){g.processing=moment(),l.cmContact.import({id:m.filename,binding:g.binding,ListId:g.ListId,CompanyId:g.CompanyId,duplicates:g.duplicates,socket_timestamp:v}).$promise.then(function(e){g.stopping=!1,e&&e.pid&&(g.pid=e.pid)}).catch(function(e){g.processing=!1,r.error({title:"Import process failed!",msg:"Please retry with a new file"})})},g.getHeaderErrors=function(){var e=u;return e.push("contact_import_error"),e},g.getArrayErrors=function(){for(var e=[],n=0;n<g.result.errors.length;n+=1){var t=g.result.errors[n].row;t.contact_import_error=g.result.errors[n].message,e.push(t)}return e},g.stopUpload=function(){if(g.stopping=!0,g.pid)return l.system.killProcess({pid:g.pid}).$promise.then(function(e){r.success({title:"CSV import process stopped!",msg:"Import has been stopped!"})}).catch(function(e){r.error({title:"CSV stop import process failed!",msg:"pid is unknown"})})};var v=moment().unix();d.on("contact:import:"+v,function(t){i(function(){if(g.result.rows=t.rows,t.errors)for(var e=0;e<t.errors.length;e++)g.result.errors.push(t.errors[e]);if(t.finish){g.result.finish=!0,g.result.affectedRows=t.affectedRows,g.result.failedRows=g.result.errors.length;var n=g.result.rows-g.result.affectedRows-g.result.errors.length;n&&0<n&&(g.duplicates.length?g.result.duplicatedRows=n:g.result.failedRows+=n),g.result.elapsed=moment().diff(g.processing,"seconds")}})}),c.$on("$destroy",function(){d.removeAllListeners("contact:import:"+v)})}e.$inject=["$cookies","$mdDialog","$interval","$q","$timeout","lists","companies","toasty","api","socket","$scope","file","fields","license"],angular.module("app.tools").controller("ImportContactsDialogController",e)}(),function(){"use strict";function e(i,e,s,n,o,t,r){var a=this;a.errors=[],a.title="CONTACTMANAGER.MERGE_CONTACT",a.contact=angular.copy(n),a.lists=t||[],a.change=function(){a.searchTerm?r.cmContact.get({fields:"id,firstName,lastName,phone,email",filter:a.searchTerm,ListId:n.ListId}).$promise.then(function(e){a.contacts=e.rows}).catch(function(e){console.error(e)}):a.contacts=[]},a.showConfirm=function(e,n,t){var a=i.confirm({skipHide:!0}).title("Would you like to merge your contacs?").textContent("All unfilled values of the contact #"+t.id+" will be overwritten by the fields of the contact #"+n.id+".").targetEvent(e).ok("Ok").cancel("Cancel");i.show(a).then(function(){return r.cmContact.merge({to:t.id,from:n.id}).$promise}).then(function(e){i.hide({new:e,to:t,from:n}),_.remove(o,{id:t.id}),_.remove(o,{id:n.id}),o.unshift(e)}).then(function(){s.success({title:"Contact properly merged!"})}).catch(function(e){e&&e.status&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:MERGE_CONTACT",msg:e.data?JSON.stringify(e.data):e.toString()})})},a.closeDialog=function(){i.hide()}}e.$inject=["$mdDialog","$scope","toasty","contact","contacts","lists","api"],angular.module("app.tools").controller("MergeContactDialogController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){t.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_GLOBALCUSTOMFIELD",g.sortable={animation:800,sort:!0,onSort:function(e){a.globalCustomFieldForm.$pristine=!1}},g.globalCustomField=l,g.globalCustomFields=r,g.newGlobalCustomField=!1,g.globalCustomField||(g.globalCustomField={type:"text",actionType:"voice"},g.title="CONTACTMANAGER.NEW_GLOBALCUSTOMFIELD",g.newGlobalCustomField=!0),a.$watch("vm.globalCustomField.type",function(e,n){if(e!==n)switch(e){case"text":g.globalCustomField.values="";break;case"select":g.globalCustomField.values=[]}}),g.addNewGlobalCustomField=function(){g.errors=[],d.cmCustomField.save(g.globalCustomField).$promise.then(function(e){g.globalCustomFields.unshift(e.toJSON()),o.success({title:"GlobalCustomField properly created",msg:g.globalCustomField.name?g.globalCustomField.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveGlobalCustomField=function(){g.errors=[],d.cmCustomField.update({id:g.globalCustomField.id},g.globalCustomField).$promise.then(function(e){var n=_.find(g.globalCustomFields,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"GlobalCustomField properly saved!",msg:g.globalCustomField.name?g.globalCustomField.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteGlobalCustomField=function(e){g.errors=[];var n=t.confirm().title("Are you sure?").content("The globalCustomField will be deleted.").ariaLabel("Delete GlobalCustomField").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){d.cmCustomField.delete({id:g.globalCustomField.id}).$promise.then(function(){_.remove(g.globalCustomFields,{id:g.globalCustomField.id}),o.success({title:"GlobalCustomField properly deleted!",msg:(g.globalCustomField.name||"globalCustomField")+" has been deleted!"}),v(g.globalCustomField)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.addItem=function(e){e.push({value:"New Item"}),a.globalCustomFieldForm.$pristine=!1},g.removeItem=function(e,n){e.splice(n,1),a.globalCustomFieldForm.$pristine=!1},g.removeItems=function(e){for(var n=e.length,t=0;t<n;t++)e.splice(0,1);a.globalCustomFieldForm.$pristine=!1},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","globalCustomFields","globalCustomField","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditGlobalCustomFieldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.globalCustomFields=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="globalCustomFields",f.listOrder="",f.listOrderAsc=null,f.selectedGlobalCustomFields=[],f.query={fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",sort:"-updatedAt",ListId:"null",limit:10,page:1},f.arraytype=_.keyBy([{option:"Text",value:"'text'"},{option:"Select",value:"'select'"},{option:"Number",value:"'number'"},{option:"Switch",value:"'switch'"},{option:"Datetime",value:"'datetime'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayactionType=_.keyBy([{option:"Voice",value:"'voice'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditGlobalCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{globalCustomField:e,globalCustomFields:f.globalCustomFields.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("globalCustomField")+"?").htmlContent("<b>"+(e.name||"globalCustomField")+"</b> will be deleted.").ariaLabel("delete globalCustomField").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getGlobalCustomFields=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmCustomField.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="GlobalCustomFields",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditGlobalCustomField=function(e,n){i.show({controller:"CreateOrEditGlobalCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{globalCustomField:n,globalCustomFields:f.globalCustomFields.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteGlobalCustomField=y,f.exportSelectedGlobalCustomFields=function(){var e=angular.copy(f.selectedGlobalCustomFields);return f.selectedGlobalCustomFields=[],e},f.deleteSelectedGlobalCustomFields=function(e){var n=i.confirm().title("Are you sure want to delete the selected globalCustomFields?").htmlContent("<b>"+f.selectedGlobalCustomFields.length+" selected</b> will be deleted.").ariaLabel("delete GlobalCustomFields").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedGlobalCustomFields.forEach(function(e){y(e)}),f.selectedGlobalCustomFields=[]})},f.deselectGlobalCustomFields=function(){f.selectedGlobalCustomFields=[]},f.selectAllGlobalCustomFields=function(){f.selectedGlobalCustomFields=f.globalCustomFields.rows};var b=!0,A=1;function E(e){f.globalCustomFields=e||{count:0,rows:[]}}function y(e){m.cmCustomField.delete({id:e.id}).$promise.then(function(){_.remove(f.globalCustomFields.rows,{id:e.id}),f.globalCustomFields.count-=1,f.globalCustomFields.rows.length||f.getGlobalCustomFields(),p.success({title:_.startCase("GlobalCustomField")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmCustomField"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmCustomField",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getGlobalCustomFields())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","globalCustomFields","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("GlobalCustomFieldsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_LIST",g.list=angular.copy(l),g.lists=r,g.newList=!1,g.list||(g.list={},g.title="CONTACTMANAGER.NEW_LIST",g.newList=!0),g.addNewList=function(){g.errors=[],d.cmList.save(g.list).$promise.then(function(e){g.lists.unshift(e.toJSON()),o.success({title:"List properly created",msg:g.list.name?g.list.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveList=function(){g.errors=[],d.cmList.update({id:g.list.id},g.list).$promise.then(function(e){var n=_.find(g.lists,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"List properly saved!",msg:g.list.name?g.list.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteList=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The list will be deleted.").ariaLabel("Delete List").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmList.delete({id:g.list.id}).$promise.then(function(){_.remove(g.lists,{id:g.list.id}),o.success({title:"List properly deleted!",msg:(g.list.name||"list")+" has been deleted!"}),v(g.list)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","lists","list","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditListDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.cmList.getAgents({id:c.list.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserList?"penalty "+e.UserList.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.list=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.cmList.removeAgents({id:c.list.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.cmList.addAgents({id:c.list.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CONTACTMANAGER.ALL_AGENTS"),labelSelected:r.instant("CONTACTMANAGER.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","list","lists","realtime","$translate","Auth","crudPermissions"],angular.module("app.contactmanager").controller("ListagentaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.listCustomFields=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.cmList.getCustomFields(m.query,u).$promise}function g(e){d.cmCustomField.delete({id:e.id}).$promise.then(function(){_.remove(m.listCustomFields.rows,{id:e.id}),m.listCustomFields.count-=1,m.listCustomFields.rows.length||p(),l.success({title:"CustomField deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcmList"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.list={},m.listCustomFields={count:0,rows:[]},m.selectedListCustomFields=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",limit:10,page:1},m.arraytype=_.keyBy([{option:"Text",value:"'text'"},{option:"Select",value:"'select'"},{option:"Number",value:"'number'"},{option:"Switch",value:"'switch'"},{option:"Datetime",value:"'datetime'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.arrayactionType=_.keyBy([{option:"Voice",value:"'voice'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.list=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ListId=m.list.id,m.query.id=m.list.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the customField?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("customField #")+e.id||"customField")+"</b> will be deleted.").ariaLabel("delete customField").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getListCustomFields=p,m.createOrEditListCustomField=function(e,n){o.show({controller:"CreateOrEditCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/customFields/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{list:m.list,customField:n,customFields:m.listCustomFields.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedListCustomFields=function(){var e=angular.copy(m.selectedListCustomFields);return m.selectedListCustomFields=[],e},m.deleteListCustomField=g,m.deleteSelectedListCustomFields=function(e){var n=o.confirm().title("Are you sure want to delete the selected customFields?").htmlContent("<b>"+m.selectedListCustomFields.length+" selected</b> will be deleted.").ariaLabel("delete customFields").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedListCustomFields.forEach(function(e){g(e)}),m.selectedListCustomFields=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.contactmanager").controller("ListCustomFieldsController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){t.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_CUSTOMFIELD",g.sortable={animation:800,sort:!0,onSort:function(e){a.customFieldForm.$pristine=!1}},g.customField=l,g.customFields=r,g.newCustomField=!1,g.customField||(g.customField={type:"text",actionType:"voice"},g.title="CONTACTMANAGER.NEW_CUSTOMFIELD",g.newCustomField=!0),e.params.id&&(g.customField.ListId=e.params.id),a.$watch("vm.customField.type",function(e,n){if(e!==n)switch(e){case"text":g.customField.values="";break;case"select":g.customField.values=[]}}),g.addNewCustomField=function(){g.errors=[],d.cmList.addCustomField({id:e.params.id},g.customField).$promise.then(function(e){g.customFields.unshift(e.toJSON()),o.success({title:"CustomField properly created",msg:g.customField.name?g.customField.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomField=function(){g.errors=[],d.cmCustomField.update({id:g.customField.id},g.customField).$promise.then(function(e){var n=_.find(g.customFields,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CustomField properly saved!",msg:g.customField.name?g.customField.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomField=function(e){g.errors=[];var n=t.confirm().title("Are you sure?").content("The customField will be deleted.").ariaLabel("Delete CustomField").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){d.cmCustomField.delete({id:g.customField.id}).$promise.then(function(){_.remove(g.customFields,{id:g.customField.id}),o.success({title:"CustomField properly deleted!",msg:(g.customField.name||"customField")+" has been deleted!"}),v(g.customField)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.addItem=function(e){e.push({value:"New Item"}),a.customFieldForm.$pristine=!1},g.removeItem=function(e,n){e.splice(n,1),a.customFieldForm.$pristine=!1},g.removeItems=function(e){for(var n=e.length,t=0;t<n;t++)e.splice(0,1);a.customFieldForm.$pristine=!1},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customFields","customField","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditCustomFieldDialogController",e)}(),function(){"use strict";function e(a,e,t,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.list=c||a.params.list||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=a.params.tab||0,u.gotogoto=function(t,e){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{ListId:t.id}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{ListId:t.id})}},u.agentadddialog=function(e,n){t.show({controller:"ListagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{list:e,lists:u.lists?u.lists.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoLists=function(){a.go("app.contactmanager.lists",{},{reload:"app.contactmanager.lists"})},u.saveList=function(){r.cmList.update({id:u.list.id},u.list).$promise.then(function(){l.success({title:"List updated!",msg:u.list.name?u.list.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","list","userProfileSection"],angular.module("app.contactmanager").controller("ListController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.cmList.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.list=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ListId=m.list.id,m.query.id=m.list.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.list.id,field:"ListId",route:"cmList"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.contactmanager").controller("ListDispositionsController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.lists=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="lists",f.listOrder="",f.listOrderAsc=null,f.selectedLists=[],f.query={fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){a.go("app.contactmanager.lists.edit",{id:e.id,list:e,crudPermissions:f.crudPermissions})},f.gotocontactsgoto=function(t,e){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{ListId:t.id}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{ListId:t.id})}},f.exportcsvcontactsexport=function(i,e){return m.cmList.getContactsCsv({id:i.id,nolimit:!0}).$promise.then(function(e){if(void 0!==e.length){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","exportContacts_"+i.id+".csv"),a.click()}else p.info({title:"EXPORT",msg:"The list is empty"})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.agentadddialog=function(e,n){i.show({controller:"ListagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{list:e,lists:f.lists?f.lists.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("list")+"?").htmlContent("<b>"+(e.name||"list")+"</b> will be deleted.").ariaLabel("delete list").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getLists=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmList.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Lists",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditList=function(e,n){i.show({controller:"CreateOrEditListDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{list:n,lists:f.lists.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteList=y,f.exportSelectedLists=function(){var e=angular.copy(f.selectedLists);return f.selectedLists=[],e},f.deleteSelectedLists=function(e){var n=i.confirm().title("Are you sure want to delete the selected lists?").htmlContent("<b>"+f.selectedLists.length+" selected</b> will be deleted.").ariaLabel("delete Lists").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedLists.forEach(function(e){y(e)}),f.selectedLists=[]})},f.deselectLists=function(){f.selectedLists=[]},f.selectAllLists=function(){f.selectedLists=f.lists.rows};var b=!0,A=1;function E(e){f.lists=e||{count:0,rows:[]}}function y(e){m.cmList.delete({id:e.id}).$promise.then(function(){_.remove(f.lists.rows,{id:e.id}),f.lists.count-=1,f.lists.rows.length||f.getLists(),p.success({title:_.startCase("List")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmList"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmList",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getLists())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","lists","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("ListsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;d.currentUser=s.getCurrentUser(),d.userProfile=r,d.userProfileSection=l&&1==l.count?l.rows[0]:null,d.crudPermissions=s.parseCrudPermissions(d.userProfileSection?d.userProfileSection.crudPermissions:null),d.customDashboard={},d.voiceQueues=o&&o.count?o:{count:0,rows:[]},d.voiceQueuesSelected=o&&o.count?_.map(o.rows,"id"):[],d.interval=n(function(){},1e3),d.onChangeVoiceQueues=function(){for(var e=0;e<d.customDashboard.widgets.length;e+=1)d.customDashboard.widgets[e].voiceQueuesSelected=d.voiceQueuesSelected},d.goToEdit=function(){e.go("app.tools.customDashboards.edit",{id:d.customDashboard.id,tab:1})},i.onWithoutApply("voice_queue:save",function(e){var n=_.find(d.voiceQueues.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),a.dashboard.get({id:e.params.id}).$promise.then(function(e){if(e)return d.customDashboard=e,d.customDashboard.widgets=[],d.customDashboard.preview=!0,d.customDashboard.draggable={enabled:!1},d.customDashboard.resizable={enabled:!1},a.dashboard.getItems({id:d.customDashboard.id}).$promise}).then(function(e){if(e&&e.count&&e.rows)for(var n=0;n<e.rows.length;n+=1)e.rows[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+e.rows[n].type+"/ms-widget-engine."+e.rows[n].type+".html",e.rows[n].voiceQueues=d.voiceQueues,e.rows[n].voiceQueuesSelected=d.voiceQueuesSelected,d.customDashboard.widgets.push(e.rows[n])}).catch(function(e){d.customDashboard=void 0}),t.$on("$destroy",function(){i.removeAllListeners("voice_queue:save"),d.interval&&n.cancel(d.interval)})}e.$inject=["$state","$interval","$scope","api","socket","Auth","voiceQueues","userProfile","userProfileSection"],angular.module("app.dashboards.custom").controller("DashboardCustomController",e)}(),function(){"use strict";function e(e,i,s,o,r,l,n,d,t,a,c,m,u,p,g,v,h,f,b){var A=this;function E(e){var n={};for(var t in A.tabs)A.tabs.hasOwnProperty(t)&&(n[t]=_.pick(A.tabs[t],["type","title","channel","icon","color","autoCreate","id","saved","badges","openedAt"]),_.isNil(A.tabs[t].contact)||(n[t].contact=_.pick(A.tabs[t].contact,["id","ListId"])),_.isNil(A.tabs[t].calls)||(n[t].calls=A.tabs[t].calls),A.tabs[t].interaction&&(n[t].interaction=_.pick(A.tabs[t].interaction,["id","OpenchannelAccountId","MailAccountId","ChatWebsiteId","FaxAccountId","SmsAccountId","WhatsappAccountId","closed","draft"])));var a=JSON.parse(s.localStorage.getItem("motion2.user:"+A.user.id));a?(a.tabs=n,a.currentTab=A.currentTab,a.autoClose=A.autoClose):a={tabs:n,currentTab:A.currentTab,autoClose:A.autoClose},s.localStorage.setItem("motion2.user:"+A.user.id,JSON.stringify(a)),e&&y(e)}function y(e){if(_.isNil(e)||e&&"interaction"===e.type){var n={id:A.user.id,online:!0,capacity:{mail:0,fax:0,sms:0,whatsapp:0,openchannel:0,chat:0},interaction:{mail:[],fax:[],sms:[],whatsapp:[],openchannel:[],chat:[]}};for(var t in A.tabs)A.tabs.hasOwnProperty(t)&&n.capacity.hasOwnProperty(A.tabs[t].channel)&&A.tabs[t].interaction&&!A.tabs[t].interaction.closed&&(n.capacity[A.tabs[t].channel]+=1,n.interaction[A.tabs[t].channel].push(A.tabs[t].interaction.id));if(!_.isEqual(A.agentCapacity,n.capacity))return A.agentCapacity=n.capacity,d.rpc.setAgentCapacity(n)}}function S(e){A.tabs[e.id]&&(!function(e){if(e.channel&&e.interaction)d.user["remove"+_.upperFirst(e.channel)+"Interactions"]({id:A.user.id,ids:[e.interaction.id]}).$promise.catch(function(e){console.error(e)})}(A.tabs[e.id]),delete A.tabs[e.id],A.currentTab=0,E(e))}function T(e){e.id=_.random(1e10),e.openedAt=(new Date).toISOString(),e.saved=!1,e.badges=0,A.tabs[e.id]=e,A.currentTab=e.id,E(e)}function I(n){return _.find(A.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id==n.interactionId&&e.channel==n.channel})}function C(n,t){var e,a,i={type:"contact",title:n?(e=n,a="",e&&(e.firstName||e.lastName?(e.firstName&&(a+=e.firstName+" "),e.lastName&&(a+=e.lastName)):e.phone&&(a=e.phone)),a=A.user.privacyEnabled?b.mask(a):a):o.instant("DASHBOARDS.NEW_CONTACT"),icon:"icon-account-circle",color:"red",contact:n,calls:t?[t]:[],autoCreate:t?t.autoCreate:0};if(t&&(t.answertime||(t.answertime=t.agentconnectAt),(t.agentcompleteAt||t.endtime)&&N(t)),n){var s=_.find(A.tabs,function(e){return e.contact&&e.contact.id?"contact"===e.type&&e.contact&&e.contact.id==n.id:"contact"===e.type&&e.contact&&e.contact.phone==n.phone});if(s){if(t)return d.voiceCallReport.get({uniqueid:t.uniqueid}).$promise.then(function(e){(e&&0<e.rows.length&&(t.disposedAt=_.first(e.rows).endtime),s.calls)?_.find(s.calls,function(e){return e.uniqueid===t.uniqueid})||s.calls.push(t):s.calls=[t];A.currentTab=s.id})}else{if(n.ListId)return d.disposition.get({ListId:n.ListId,nolimit:!0}).$promise.then(function(e){return i.dispositions=e,d.cmList.getCustomFields({id:n.ListId,nolimit:!0}).$promise}).then(function(e){i.customFields=e}).catch(D()).finally(function(){T(i)});T(i)}}else T(i)}function O(n,t){var e=_.find(A.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id===t.id&&e.channel===n});e?(e.isDraft=t.isDraft||!1,A.currentTab=e.id):T(e={type:"interaction",title:n?n.toUpperCase():"openchannel",icon:function(e){switch(e){case"chat":return"icon-hangouts";case"mail":return"icon-email";case"sms":return"icon-message-text";case"openchannel":return"icon-google-earth";case"fax":return"icon-deskphone";case"whatsapp":return"icon-whatsapp";default:return"icon-hangouts"}}(n),color:function(e){switch(e){case"chat":return"green-A700";case"mail":return"teal";case"sms":return"orange";case"openchannel":return"amber-A200";case"fax":return"blue-grey-A200";case"whatsapp":return"lime-A700";default:return"grey"}}(n),channel:n,interaction:t,isDraft:t.isDraft||!1})}function w(e){e&&e.uniqueid&&A.notifications[e.uniqueid]&&(a.clear(A.notifications[e.uniqueid]),delete A.notifications[e.uniqueid])}function R(n){var t=n.uniqueid;for(var e in console.debug("onVoiceChannelRemove -> evt",n),A.tabs)if(A.tabs.hasOwnProperty(e)){var a=A.tabs[e];if(a.calls){console.debug("onVoiceChannelRemove ->  key, tab, tab.calls",e,a,a.calls);var i=_.findIndex(a.calls,function(e){return e.uniqueid===t});i<0&&0<=(i=_.findIndex(a.calls,function(e){return e.uniqueid===n.linkedid}))&&(t=n.linkedid),0<=i&&!a.calls[i].disposedAt?(console.debug("Allowing disposition for call %s",a.calls[i].uniqueid),N(a.calls[i])):console.debug("Call %s not found or already completed",a.calls[i].uniqueid),a.contact&&a.contact.id&&l(x(t,a.contact.id,a),1e3)}}E()}function x(n,e,t){return function(){if(_.find(t.calls,function(e){return e.uniqueid===n}))return d.voiceCallReport.update({id:n,ContactId:e}).$promise.catch(function(e){console.error(e)})}}function N(e){e.disposedAt=new Date}function D(){return function(e){if(404===e.status)a.warning({title:o.instant("DASHBOARDS.ATTENTION"),msg:o.instant("DASHBOARDS.ACCEPT_ELSEWHERE")});else if(e.data&&e.data.errors&&e.data.errors.length){A.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}}A.license=g,A.setting=v,A.detectBrowser=f.detectBrowser(),A.user=n.getCurrentUser(),A.currentTab=0,A.notifications={},A.tabs={},A.agentCapacity={},A.autoClose=!1,A.globalUserLists=c||{count:0,rows:[]},A.globalLists=m||{count:0,rows:[]},A.globalCompanies=u||{count:0,rows:[]},A.globalTags=p||{count:0,rows:[]},A.onClickTab=function(e){A.currentTab=e,E(A.tabs[e])},A.isActiveTab=function(e){return e===A.currentTab},A.alreadyExistsTab=I,A.addContactTab=C,A.addInteractionTab=O,A.addTab=T,A.removeTab=S,A.updateLocalStorage=E,A.closeTab=function(e){var n=i.confirm().title("interaction"===e.type?"Do you want to close the interaction?":"Are you sure want to close the "+e.type+"?").textContent("interaction"===e.type?"":"The "+e.type+" has been modified. Closing will lose all changes!").ariaLabel("Close Contact").ok("interaction"===e.type?"YES":"OK").cancel("interaction"===e.type?"NO":"CANCEL");{if(!e.saved){var t=A.user.voicePause||A.user.chatPause||A.user.mailPause||A.user.openchannelPause||A.user.faxPause,a=!1;return"interaction"===e.type&&(a=e.interaction.Account.mandatoryDisposition),i.show(n).then(function(){"interaction"===e.type&&i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(r.body),onRemoving:function(e,n){A.user&&a&&!t&&d.user.unpause({id:A.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:!a,escapeToClose:!a,locals:{user:A.user,channel:e.channel,interaction:e.interaction}}),S(e)}).catch(function(){"interaction"===e.type&&S(e)})}var a=!1;if(_.forEach(e.calls,function(e){e.mandatoryDisposition&&(a=!0)}),"contact"===e.type&&0<e.calls.length){if(!a)return n._options.textContent="There is a call that hasn't been disposed yet.",i.show(n).then(function(){S(e)});alert=i.alert().title("Warning").textContent("There is a call that hasn't been disposed yet.").ok("OK"),i.show(alert).finally(function(){alert=void 0})}else S(e)}},t.on("trigger:contactmanager",function(n){if(!_.isNil(n.contacts)&&1===n.contacts.length)return void C(n.contact,n.evt);i.show({controller:"ContactSelectionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/contact/selection/dialog.html",parent:angular.element(r.body),locals:{contacts:n.contacts,callNumber:n.evt.routeId?n.evt.destcalleridnum:n.evt.calleridnum}}).then(function(e){C(e,n.evt)})}),t.on("trigger:jscripty",function(t){return d.jscriptyProject.get({id:t.ProjectId}).$promise.then(function(n){if(n){if(!_.isUndefined(t["xmd-contactid"]))return d.cmContact.get({id:t["xmd-contactid"]}).$promise.then(function(e){try{n.formData=Mustache.render(n.formData,_.merge(t,{user:A.user,contact:e}))}catch(e){console.error(e)}T({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t,contact:e})}).catch(D());try{n.formData=Mustache.render(n.formData,_.merge(t,{user:A.user}))}catch(e){console.error(e)}T({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t})}}).catch(D())}),t.on("trigger:bot",function(n){var t=n.calleridname&&"<unknown>"!==n.calleridname?n.calleridname:n.calleridnum,a=n.calleridnum;return d.squareMessage.get({fields:"id",limit:1,offset:0,uniqueid:n.uniqueid}).$promise.then(function(e){e.count&&T({type:"bot",title:t+" <"+a+">",icon:"fas fa-robot",color:"pink",data:{uniqueid:n.uniqueid}})})}),t.on("trigger:browser:url",function(e){if(e&&e.uri)if(e.uri=_.replace(e.uri,"&lt%3B",""),e.uri=_.replace(e.uri,"=&gt%3B=",""),e.uriLocation)switch(e.uriLocation){case"0":s.open(e.uri);break;case"1":s.open(e.uri,"_blank","width="+(e.windowWidth||"800")+",height="+e.windowHeight||"600");break;case"2":var n={type:"iframe",title:e.uri,icon:"icon-google-earth",color:"blue",src:e.uri};T(n);break;default:s.open(e.uri)}else s.open(e.uri)}),t.on("trigger:browser:popup",function(e){e&&e.html&&T({type:"popup",title:e.calleridnum||"popup",icon:"icon-tablet",color:"grey",html:e.html})}),t.on("notification:save",function(e){if(e&&e.uniqueid){t=e,h.isSupported()?h.requestPermission().then(function(){var e,n;n={autoClose:!0,duration:10,showOnPageHidden:!0,icon:"../../../../../../../assets/images/avatars/customer.png",body:(e=t).queue?"Queue: "+e.queue:"",focusOnclick:!0,closeOnClick:!0},h.show(e.title,n)},function(e){console.error("Please enable browser notifications!",e)}):console.error("Browser notifications are not supported by the browser. Normal notifications will be used.");var n=I(e);if(n){if(d[e.channel+"Message"])return A.currentTab!==n.id&&(n.badges+=1),d[e.channel+"Message"].accept({id:e.id,UserId:A.user.id}).$promise.catch(D())}else a.wait({title:e.title,msg:e.msg||"",showClose:!1,clickToClose:!1,timeout:!1,sound:e.sound,html:!0,shake:e.shake||!1,onAdd:function(){A.notifications[e.uniqueid]=this.id},onAccept:function(){if(w(e),d[e.channel+"Message"])return d[e.channel+"Message"].accept({id:e.id,UserId:A.user.id,manual:!0}).$promise.then(function(e){O(e.channel,e.interaction),a.success({title:"Message properly accepted!",msg:"Message has been accepted!"})}).catch(D())},onReject:function(){if(w(e),d[e.channel+"Message"])return d[e.channel+"Message"].reject({id:e.id,UserId:A.user.id}).$promise.then(function(e){a.success({title:"Message properly rejected!",msg:"Message has been rejected!"})}).catch(D())}})}var t}),t.on("notification:remove",w),t.on("voice_queue_channel:remove",R),t.on("voice_outbound_channel:remove",R),function(){var e=s.localStorage.getItem("motion2.user:"+A.user.id);if(e)try{e=JSON.parse(e),A.tabs=e.tabs?e.tabs:{},A.currentTab=e.currentTab?e.currentTab:0,A.autoClose=!!e.autoClose&&e.autoClose,y(A.tabs[A.currentTab])}catch(e){console.error(e)}}(),e.$on("$destroy",function(){for(var e in A.notifications)A.notifications.hasOwnProperty(e)&&w({uniqueid:e});t.removeAllListeners("trigger:contactmanager"),t.removeAllListeners("trigger:jscripty"),t.removeAllListeners("trigger:browser:url"),t.removeAllListeners("trigger:browser:popup"),t.removeAllListeners("notification:save"),t.removeAllListeners("notification:remove"),t.removeAllListeners("voice_queue_channel:remove"),t.removeAllListeners("voice_outbound_channel:remove")})}e.$inject=["$scope","$mdDialog","$window","$translate","$document","$timeout","Auth","api","socket","toasty","globalUserLists","globalLists","globalCompanies","globalTags","license","setting","desktopNotification","msUtils","privacyManager"],angular.module("app.dashboards").controller("AgentDashboardGeneralController",e)}(),function(){"use strict";angular.module("app.dashboards").provider("desktopNotification",function(){var f={autoClose:!0,duration:5,showOnPageHidden:!1};return{config:function(e){for(var n in e)f.hasOwnProperty(n)&&null!=e[n]&&(f[n]=e[n])},$get:["$q","$timeout","$window","PERMISSIONS",function(e,u,n,p){var g=n.Notification||n.mozNotification||n.webkitNotification;return{isSupported:v,currentPermission:h,requestPermission:function(){if(!v())return e.reject("Notification API not supported");var t=e.defer();Promise.resolve(g.requestPermission)==g.requestPermission?g.requestPermission().then(function(e){p.GRANTED===e?t.resolve(e):t.reject(e)}):g.requestPermission(function(e,n){p.GRANTED===e?t.resolve(e):t.reject(e)});return t.promise},show:function(e,n){if(n=n||{},!v()||(t=e,a=n,i=angular.isString(t),s=!a.onClick||angular.isFunction(a.onClick),!i||!s)||function(e){if(e||f.showOnPageHidden)return!(window.document.hidden||window.document.mozHidden||window.document.webkitHidden)}(n.showOnPageHidden)||h()!==p.GRANTED)return;var t,a,i,s;var o=new g(e,n),r=n.duration||f.duration,l=void 0===n.autoClose?f.autoClose:n.autoClose;o.onclick=function(){n.onClick&&n.onClick(),n.focusOnclick&&window.focus(),n.closeOnClick&&o.close()},l&&(d=o,c=r,m=1e3*c,u(d.close.bind(d),m,!1));var d,c,m;return o},permissions:{default:p.DEFAULT,granted:p.GRANTED,denied:p.DENIED}};function v(){return!(void 0===g)}function h(){return(g||{}).permission}}]}}).provider("msNavigationAgentService",function(){var r=angular.injector(["ng"]).get("$log"),l=[];function n(e,n){if(angular.isString(e)){for(var t=e.split("."),a=t[t.length-1],i=function(e){var n=l;if(1===e.length)return n;e.pop();for(var t=0;t<e.length;t++){for(var a=e[t],i=!0,s=0;s<n.length;s++)if(n[s]._id===a){n=n[s].children,i=!1;break}if(i){var o={_id:a,_path:e.join("."),title:a,weight:1,children:[]};n.push(o),n=o.children}}return n}(t),s=!1,o=0;o<i.length;o++)if(i[o]._id===a){s=i[o];break}s?(angular.extend(s,n),s.uisref=d(s)):(n.children=[],!angular.isUndefined(n.weight)&&angular.isNumber(n.weight)||(n.weight=1),n._id=a,n._path=e,n.uisref=d(n),i.push(n))}else r.error("path must be a string (eg. `dashboard.project`)")}function d(e){var n="";return angular.isDefined(e.state)&&(n=e.state,angular.isDefined(e.stateParams)&&angular.isObject(e.stateParams)&&(n=n+"("+angular.toJson(e.stateParams)+")")),n}this.saveItem=n,this.deleteItem=function(e){if(!angular.isString(e))return void r.error("path must be a string (eg. `dashboard.project`)");for(var n=l,t=e.split("."),a=0;a<t.length;a++)for(var i=t[a],s=0;s<n.length;s++)if(n[s]._id===i){if(n[s]._path===e)return n.splice(s,1),!0;n=n[s].children;break}return!1},this.$get=function(){var e={saveItem:n,getNavigation:function(e){if(e){for(var n=0;n<l.length;n++)if(l[n]._id===e)return[l[n]];return null}return l}};return e}}).constant("PERMISSIONS",{DEFAULT:"default",GRANTED:"granted",DENIED:"denied"})}(),function(){"use strict";function e(t){var a=this;a.setting={},a.messages={count:0,rows:[]},a.showInteraction=!1,a.init=function(e,n){{if(a.setting=n,a.tab=e,a.tab.saved=!0,a.tab&&a.tab.data&&a.tab.data.uniqueid)return t.squareMessage.get({uniqueid:a.tab.data.uniqueid}).$promise.then(function(e){a.messages=e}).finally(function(){a.showInteraction=!0});a.showInteraction=!0}},a.getMessagesAlignment=function(e){switch(a.setting.messagesAlignment){case"left":return"in"==e.direction?e.direction:"out-left-aligned";case"right":return"in"==e.direction?"in-right-aligned":e.direction;default:return e.direction}}}e.$inject=["api"],angular.module("app.dashboards").controller("AgentGeneralBotController",e)}(),function(){"use strict";function e(a,d,c,t,m,i,u,p,s,o,e,r,n,l){var g=this;function v(){g.errors=[],u.cmContact.save(g.contact).$promise.then(function(e){g.contact.id=e.id,g.newContact=!1;var n=e.firstName||e.phone;return g.tab.title=g.user.privacyEnabled?l.mask(n):n,g.tab.contact=g.contact,u.user.addContacts({id:s.getCurrentUser().id,ids:[e.id]})}).then(function(){g.detailForm.$pristine=!0,g.customFieldsForm.$pristine=!0,p.success({title:"Contact properly created",msg:g.contact.firstName?g.contact.firstName+" has been created!":""})}).then(function(){return u.cmContact.setTags({id:g.contact.id,ids:g.tab.Tags}).$promise}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}function h(n){return function(e){g[n]=e||{count:0,rows:[]}}}function f(){g.contact&&g.contact.id&&(g.queryHopper.ContactId=g.contact.id,g.queryHopper.offset=(g.queryHopper.page-1)*g.queryHopper.limit,g.promise=u.cmHopper.get(g.queryHopper,h("hoppers")).$promise)}function b(){g.contact&&g.contact.id&&(g.queryFinal.ContactId=g.contact.id,g.queryFinal.offset=(g.queryFinal.page-1)*g.queryFinal.limit,g.promise=u.cmHopperFinal.get(g.queryFinal,h("finals")).$promise)}function A(){g.contact&&g.contact.id&&(g.queryHistory.ContactId=g.contact.id,g.queryHistory.offset=(g.queryHistory.page-1)*g.queryHistory.limit,g.promise=u.cmHopperHistory.get(g.queryHistory,h("histories")).$promise)}function E(e){return null===e?void 0:new Date(e)}function y(e){g.journeyIsLoading=!0;var n=_.merge(g.journeyOptions,{id:g.contact.id,offset:e||0});return r.get(g.journey,n).then(function(e){g.journey=e.journey,g.canLoadMoreJourney=e.loadMore}).finally(function(){g.journeyIsLoading=!1})}g.user=s.getCurrentUser(),g.detectBrowser=e.detectBrowser(),g.journey=[],g.queryHopper={fields:"id,phone,scheduledat",sort:"-updatedAt",limit:10,page:1},g.queryFinal={fields:"uniqueid,calleridnum,statedesc,starttime,disposition,secondDisposition,thirdDisposition",sort:"-updatedAt",limit:10,page:1},g.queryHistory={fields:"uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-updatedAt",limit:10,page:1},g.hoppers={rows:[],count:0},g.finals={rows:[],count:0},g.histories={rows:[],count:0},g.journeyOptions=r.getQuery(),g.quickFilters=r.getQuickFilters(),g.addNewContact=v,g.saveContact=function(){g.errors=[],u.cmContact.update({id:g.contact.id},g.contact).$promise.then(function(e){var n=e.firstName||e.phone;return g.tab.title=g.user.privacyEnabled?l.mask(n):n,g.tab.contact=g.contact,m.$parent.vm.updateLocalStorage(),u.user.addContacts({id:s.getCurrentUser().id,ids:[e.id]})}).then(function(){return u.cmContact.setTags({id:g.contact.id,ids:g.tab.Tags}).$promise}).then(function(){g.detailForm.$pristine=!0,g.customFieldsForm.$pristine=!0,p.success({title:"Contact properly updated!",msg:g.contact.name?g.contact.name+" has been updated!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.getCustomFields=function(e){return u.cmList.getCustomFields({id:e}).$promise.then(function(e){g.tab.customFields=e}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"LIST:GETCustomFields",msg:e.data?JSON.stringify(e.data):e.toString()})})},g.call=m.$parent.vm.call,g.disposeCall=function(e,i){if(g.newContact)return void p.error({title:"ATTENTION",msg:"Please save the contact before disposing!"});d.show({controller:"DisposeCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/contact/dispose/dialog.html",parent:angular.element(c.body),targetEvent:i,clickOutsideToClose:!i.mandatoryDisposition,escapeToClose:!i.mandatoryDisposition,resolve:{globalDispositions:["apiResolver",function(e){return e.resolve("disposition@get",{MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}]},onRemoving:function(e,n){g.user&&i.mandatoryDisposition&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){console.error(e)})},locals:{dispositions:g.tab.dispositions,contact:g.contact,call:i,availableCalls:g.tab.calls.length,autoClose:m.$parent.vm.autoClose}}).then(function(e){var n=e[0];for(var t in m.$parent.vm.autoClose=e[1],n&&("BLACKLIST"===n?p.success({title:o.instant("DASHBOARDS.INFO"),msg:o.instant("DASHBOARDS.CALL_DISPOSED")+" "+n}):"RECALLME"===n||"RESCHEDULE"===n||p.success({title:o.instant("DASHBOARDS.INFO"),msg:o.instant("DASHBOARDS.CALL_SAVED")})),m.$parent.$parent.$parent.vm.tabs)if(m.$parent.$parent.$parent.vm.tabs.hasOwnProperty(t)){var a=m.$parent.$parent.$parent.vm.tabs[t];_.remove(a.calls,function(e){return e.uniqueid===i.uniqueid})}0===g.tab.calls.length&&m.$parent.vm.autoClose&&m.$parent.vm.removeTab(g.tab),m.$parent.vm.updateLocalStorage()})},g.checkCallStatus=function(n){return g.checkingCallStatus=!0,u.voiceCallReport.get({uniqueid:n.uniqueid}).$promise.then(function(e){e&&0<e.rows.length&&(n.disposedAt=_.first(e.rows).endtime)}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"VOICE_CALL_REPORT:GET",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){g.checkingCallStatus=!1})},g.duplicateContact=function(e){d.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(c.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:g.contact.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:s.getCurrentUser().id,fields:"id,name"})}]},locals:{contacts:[]}})},g.mergeContact=function(e){d.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(c.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:g.contact.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:s.getCurrentUser().id,fields:"id,name"})}]},locals:{contacts:[]}}).then(function(e){if(e){for(var n in m.$parent.$parent.$parent.vm.tabs)if(m.$parent.$parent.$parent.vm.tabs.hasOwnProperty(n)){var t=m.$parent.$parent.$parent.vm.tabs[n];t&&t.contact&&(e.from&&e.from.id&&e.from.id===t.contact.id&&m.$parent.$parent.$parent.vm.removeTab(t),e.to&&e.to.id&&e.to.id===t.contact.id&&m.$parent.$parent.$parent.vm.removeTab(t))}e.new&&m.$parent.$parent.$parent.vm.addContactTab(e.new)}})},g.getDateFromString=E,g.addJscriptyTab=function(e){try{e.formData=Mustache.render(e.formData,{contact:g.contact,user:g.user})}catch(e){console.error(e)}try{m.$parent.$parent.$parent.vm.addTab({type:"jscripty",title:e.name,icon:"icon-script",color:"grey",project:e,contact:g.contact})}catch(e){p.error({title:"ERROR OPENING JSCRIPTY PROJECT",msg:"The project cannot be started"+JSON.stringify(e)})}},g.getHoppers=f,g.getFinals=b,g.getHistories=A,g.getJscriptyProjects=function(){if(g.jscriptyProjects)return;return g.loadingJscriptyProjects=!0,u.jscriptyProject.get({fields:"createdAt,updatedAt,id,name,description,createdAt,formData,enableUncompleteSave",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.jscriptyProjects=e||{count:0,rows:[]}}).catch(function(){p.error({title:o.instant("JSCRIPTY.JSCRIPTY"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.JSCRIPTY_GET_ERROR")})}).finally(function(){g.loadingJscriptyProjects=!1})},g.getAccounts=function(n){if(g[n+"Accounts"])return;var e="get"+_.startCase(n)+"Accounts";return g.loadingAccounts=!0,u.user[e]({id:g.user.id,attributes:["id","name"],nolimit:!0}).$promise.then(function(e){g[n+"Accounts"]=e||{count:0,rows:[]}}).catch(function(){p.error({title:o.instant(n.toUpperCase()+"."+n.toUpperCase()+"ACCOUNTS"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.ACCOUNTS_GET_ERROR",{channel:o.instant("DASHBOARDS."+n.toUpperCase())})})}).finally(function(){g.loadingAccounts=!1})},g.composeInteraction=function(e,o,r,n){var l=o.toLowerCase();d.show({controller:"Compose"+o+"InteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/"+o.toLowerCase()+"/dialog.html",parent:angular.element(c.body),clickOutsideToClose:!1,locals:{account:r,message:{to:"mail"==l?n:n.split(",")},type:"new",interaction:{Contact:g.contact}},fullscreen:!0}).then(function(s){if(!s||_.isNil(s.message)||!s.message.savedAsDraft)return u[l+"Account"].send({id:r.id},s).$promise.then(function(e){if("Mail"===o){var n=e;if(n&&n.Messages&&n.Messages.length){if(s.attachments&&s.attachments.length)for(var t=0;t<s.attachments.length;t+=1)u.attachment.update({id:s.attachments[t].id},{MailMessageId:_.head(n.Messages).id});if(p.success({title:"Message properly sent!",msg:"Message has been sent!"}),n.closed){n.disposition=null;var a=!r.mandatoryDisposition,i=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause;d.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(c.body),onRemoving:function(e,n){g.user&&r.mandatoryDisposition&&!i&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:a,escapeToClose:a,locals:{user:g.user,channel:"mail",interaction:n}})}else m.$parent.vm.addInteractionTab("mail",n)}}else p.success({title:"Message properly sent!",msg:"Message has been sent!"}),m.$parent.vm.addInteractionTab(l,e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"fax"===l?p.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:o.toUpperCase()+"ACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});var e={type:"draft",channel:"mail",account:r,contact:g.contact,id:g.tab.id,openedAt:new Date,saved:!1,title:r.key+" - Untitled",content:s.message},n=a.localStorage.getItem("motion2.home.mail:"+g.user.id);if(n){var t=JSON.parse(n);t.drafts||(t.drafts={}),n=t}else n={drafts:{}};n.drafts[g.tab.id]=e,a.localStorage.setItem("motion2.home.mail:"+g.user.id,JSON.stringify(n))})},g.init=function(n,e){return g.tab=n,m.$watchGroup(["vm.detailForm.$pristine","vm.customFieldsForm.$pristine"],function(e){g.tab.saved=e[0]&&e[1]}),g.license=e,g.contact=g.tab.contact,g.newContact=!1,g.currentTab=0,u.user.get({fields:"id,fullname",nolimit:!0}).$promise.then(function(e){g.users=e||{count:0,rows:[]},g.usersMap=_.mapValues(_.keyBy(g.users.rows,"id"),"fullname")}).then(function(){for(var e=[],n=0;n<g.tab.calls.length;n++){var t=g.tab.calls[n];e.push(u.voiceCallReport.get({uniqueid:t.uniqueid}).$promise.then(function(e){e&&0<e.rows.length&&(t.disposedAt=_.first(e.rows).endtime)}))}return i.all(e)}).then(function(){return u.user.getLists({id:g.user.id,nolimit:!0}).$promise}).then(function(e){if(g.lists=e||{count:0,rows:[]},g.contact&&g.contact.ListId){if(g.list=_.find(g.lists.rows,{id:g.contact.ListId}),g.list)return;return u.cmList.get({id:g.contact.ListId}).$promise.then(function(e){e&&(g.list=e,g.lists.rows=_.unionBy(g.lists.rows,[g.list]))})}}).then(function(){if(g.contact&&g.contact.id){var e={id:g.contact.id,ListId:g.contact.ListId,limit:1,offset:0,sort:"-updatedAt"};return u.cmContact.get(e).$promise.then(function(e){return g.contact=e,g.tab.contact=e,u.user.addContacts({id:g.user.id,ids:[g.contact.id]})}).then(function(){if(g.contact.ListId)return u.disposition.get({ListId:g.contact.ListId,nolimit:!0}).$promise.then(function(e){return g.tab.dispositions=e,u.cmList.getCustomFields({id:g.contact.ListId,nolimit:!0}).$promise}).then(function(e){g.tab.customFields=e})}).then(function(){try{g.tab.companies=m.$parent.$parent.$parent.vm.globalCompanies,g.tab.tags=m.$parent.$parent.$parent.vm.globalTags,g.tab.autoCreate=0}catch(e){}f(),b(),A()}).then(function(){return u.cmContact.getTags({id:g.contact.id}).$promise.then(function(e){g.tab.Tags=_.map(e.rows,"id")})})}return g.newContact=!0,n.autoCreate?v():void 0}).finally(function(){g.contact&&g.contact.id&&(y(),g.contact.dateOfBirth=E(g.contact.dateOfBirth))})},g.hasPermission=function(e){return s.hasPermission(e)},g.openInteraction=function(e){try{return m.$parent.$parent.$parent.vm.addInteractionTab(e.channel,e)}catch(e){p.error({title:o.instant("CONTACTMANAGER.CUSTOMER_JOURNEY"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.INTERACTION_OPEN_ERROR")})}},g.getCustomerJourney=y,g.loadMoreJourney=function(){return i(function(e,n){var t=g.journey.length;return e(y(t))})},m.$on("$destroy",function(){}),m.$watch("currentTab",function(e,n){1===g.currentTab&&(f(),b(),A())});var S=!0,T=1;m.$watch("queryHopper.filter",function(e,n){S?t(function(){S=!1}):(n||(T=g.queryHopper.page),e!==n&&(g.queryHopper.page=1),e||(g.queryHopper.page=T),f())}),m.$watch("queryFinal.filter",function(e,n){S?t(function(){S=!1}):(n||(T=g.queryFinal.page),e!==n&&(g.queryFinal.page=1),e||(g.queryFinal.page=T),b())}),m.$watch("queryHistory.filter",function(e,n){S?t(function(){S=!1}):(n||(T=g.queryHistory.page),e!==n&&(g.queryHistory.page=1),e||(g.queryHistory.page=T),A())})}e.$inject=["$window","$mdDialog","$document","$timeout","$scope","$q","api","toasty","Auth","$translate","msUtils","customerJourneyManager","draftManager","privacyManager"],angular.module("app.dashboards").controller("AgentGeneralContactController",e)}(),function(){"use strict";function e(n,t,i,s,o,e,a,r,l,d,c,m,u){var p=this;function g(){return i(function(n,e){o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name,dialActive,dialMethod",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){p.queueCampaigns=e||{count:0,rows:[]},n()}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.getBlackLists",msg:e.data?JSON.stringify(e.data):e.toString()})})})}function v(){var e=p.selectedDisposition?p.selectedDisposition.name.toLowerCase():void 0;return{id:p.call.uniqueid,disposition:p.firstLevelDisposition?p.firstLevelDisposition.name:null,secondDisposition:p.secondLevelDisposition?p.secondLevelDisposition.name:null,thirdDisposition:p.thirdLevelDisposition?p.thirdLevelDisposition.name:null,dispositionat:moment(),amd:"amd"===e,fax:"fax"===e,blacklist:"blacklist"===e,recallme:"recallme"===e,UserId:"recallme"===e?d.getCurrentUser().id:null,OwnerId:d.getCurrentUser().id}}function h(e){t.hide([e,p.autoClose])}p.user=d.getCurrentUser(),p.isReschedule=!1,p.recallme=!1,p.queueCampaign=void 0,p.queueCampaigns={count:0,rows:[]},p.dispositions=_.orderBy(_.concat([],e.rows,a.rows),["name"],["asc"]),p.contact=l,p.call=r,p.note=p.call.note||void 0,p.dialerCall=!1,p.hasBlackLists=!1,p.availableCalls=m,p.autoClose=u,p.hopper={minDate:new Date,dateTime:new Date},p.call&&p.call.variables&&p.call.variables["xmd-voicequeueid"]?(p.dialerCall=!0,o.voiceQueue.getBlackLists({id:p.call.variables["xmd-voicequeueid"]}).$promise.then(function(e){e&&e.rows&&0<e.rows.length&&(p.hasBlackLists=!0)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.getBlackLists",msg:e.data?JSON.stringify(e.data):e.toString()})})):g(),p.onDispositionChange=function(e){switch(e){case"first":p.selectedDisposition=p.firstLevelDisposition,p.anySecondLevelDisposition=_.some(p.dispositions,["ParentId",p.firstLevelDisposition.id]),p.secondLevelDisposition=void 0,p.thirdLevelDisposition=void 0,p.anyThirdLevelDisposition=!1;break;case"second":p.selectedDisposition=p.secondLevelDisposition,p.anyThirdLevelDisposition=_.some(p.dispositions,["ParentId",p.secondLevelDisposition.id]);break;case"third":p.selectedDisposition=p.thirdLevelDisposition}},p.clearDispositionSelection=function(e){"second"===e?(p.secondLevelDisposition=void 0,p.thirdLevelDisposition=void 0,p.selectedDisposition=p.firstLevelDisposition):"third"===e&&(p.thirdLevelDisposition=void 0,p.selectedDisposition=p.secondLevelDisposition)},p.saveDisposition=function(e){p.selectedDisposition=_.isNil(e)?p.selectedDisposition:{name:e},e&&(p.firstLevelDisposition=p.selectedDisposition);p.call.note=p.note,o.voiceCallReport.update({id:p.call.uniqueid,userDisposition:p.firstLevelDisposition?p.firstLevelDisposition.name:null,userSecondDisposition:p.secondLevelDisposition?p.secondLevelDisposition.name:null,userThirdDisposition:p.thirdLevelDisposition?p.thirdLevelDisposition.name:null,note:p.note,UserId:d.getCurrentUser().id,ContactId:p.contact.id}).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICECALLREPORT",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.voiceRecording.get({uniqueid:p.call.uniqueid}).$promise.then(function(e){if(e)for(var n=0;n<e.rows.length;n+=1)o.voiceRecording.update({id:e.rows[n].id,userDisposition:p.firstLevelDisposition?p.firstLevelDisposition.name:null,userSecondDisposition:p.secondLevelDisposition?p.secondLevelDisposition.name:null,userThirdDisposition:p.thirdLevelDisposition?p.thirdLevelDisposition.name:null}).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICERECORDING",msg:e.data?JSON.stringify(e.data):e.toString()})})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICERECORDING",msg:e.data?JSON.stringify(e.data):e.toString()})}),p.dialerCall&&(o.cmHopperFinal.update(v()).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECMHOPPERFINAL",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.cmHopperHistory.update(v()).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECMHOPPERHISTORY",msg:e.data?JSON.stringify(e.data):e.toString()})}));if(_.isNil(p.selectedDisposition))h(p.selectedDisposition?p.selectedDisposition.name.toUpperCase():"");else switch(p.selectedDisposition.name.toLowerCase()){case"blacklist":p.call&&p.call.variables&&p.call.variables["xmd-voicequeueid"]&&function(e){if(e)o.voiceQueue.getBlackLists({id:e,type:"outbound",fields:"id"}).$promise.then(function(e){var n=[];if(e&&0<e.count){for(var t=0;t<e.rows.length;t+=1){var a=angular.copy(p.contact);delete a.id,a.ListId=e.rows[t].id,n.push(o.cmContact.save(a).$promise)}return i.all(n)}s.success({title:c.instant("DASHBOARDS.INFO"),msg:c.instant("DASHBOARDS.NOTAVAILABLE")+" "+p.selectedDisposition}),p.selectedDisposition=void 0}).then(function(e){e&&h(p.selectedDisposition?p.selectedDisposition.name.toUpperCase():"")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEBLACKLIST",msg:e.data?JSON.stringify(e.data):e.toString()}),h(p.selectedDisposition?p.selectedDisposition.name.toUpperCase():"")})}(p.call.variables["xmd-voicequeueid"]);break;case"reschedule":p.isReschedule=!0,p.recallme=!1;break;case"recallme":p.isReschedule=!0,p.recallme=!0,p.user.selectRecallMeCampaign&&g().then(function(){p.originalCampaign=_.find(p.queueCampaigns.rows,["id",p.call.variables["xmd-voicequeueid"]]);var e=JSON.parse(n.localStorage.getItem("motion2.user:"+p.user.id));p.queueCampaign=e.previewCampaignId?_.find(p.queueCampaigns.rows,["id",Number(e.previewCampaignId)]):p.originalCampaign});break;default:h(p.selectedDisposition?p.selectedDisposition.name.toUpperCase():"")}},p.closeDialog=function(){t.cancel()},p.saveReschedule=function(){p.disable=!0;var e=p.queueCampaign?p.queueCampaign.id:null;p.dialerCall&&(e=p.queueCampaign&&"preview"===p.originalCampaign.dialMethod?p.queueCampaign.id:Number(p.call["xmd-voicequeueid"]));return o.cmHopper.save({phone:p.contact.phone,UserId:p.recallme?d.getCurrentUser().id:null,ContactId:p.contact.id,ListId:p.contact.ListId,VoiceQueueId:e,scheduledat:moment(p.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),priority:3,recallme:p.recallme,OwnerId:d.getCurrentUser().id}).$promise.then(function(){if(p.dialerCall&&(o.cmHopperFinal.update({id:p.call.uniqueid,rescheduled:!0,rescheduledat:moment(p.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),recallme:p.recallme}).$promise.catch(function(e){console.log(e)}),p.user.selectRecallMeCampaign&&"preview"===p.originalCampaign.dialMethod)){var e=JSON.parse(n.localStorage.getItem("motion2.user:"+p.user.id));e.previewCampaignId=p.queueCampaign.id,n.localStorage.setItem("motion2.user:"+p.user.id,JSON.stringify(e))}}).then(function(){s.success({title:c.instant("DASHBOARDS.INFO"),msg:c.instant("DASHBOARDS.CALL_DISPOSED")+" "+(p.recallme?c.instant("DASHBOARDS.RECALLME"):c.instant("DASHBOARDS.RESCHEDULE"))})}).catch(function(e){h(p.selectedDisposition?p.selectedDisposition.name.toUpperCase():"")}).finally(function(){p.disable=!1,h(p.selectedDisposition?p.selectedDisposition.name.toUpperCase():"")})}}e.$inject=["$window","$mdDialog","$q","toasty","api","dispositions","globalDispositions","call","contact","Auth","$translate","availableCalls","autoClose"],angular.module("app.staff").controller("DisposeCallDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.call=l,u.contact=r,u.hopper={minDate:new Date,dateTime:new Date},u.closeDialog=function(){a.cancel()},u.saveDialog=function(){return u.disable=!0,o.cmHopper.save({phone:u.contact.phone,UserId:c?d.getCurrentUser().id:null,ContactId:u.contact.id,ListId:u.contact.ListId,VoiceQueueId:Number(u.call["xmd-voicequeueid"]),scheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),priority:3,recallme:c,OwnerId:d.getCurrentUser().id}).$promise.then(function(){o.cmHopperFinal.update({id:u.call.uniqueid,rescheduled:!0,rescheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),recallme:c}).$promise}).then(function(){s.success({title:m.instant("DASHBOARDS.INFO"),msg:m.instant("DASHBOARDS.CALL_DISPOSED")+" "+(c?m.instant("DASHBOARDS.RECALLME"):m.instant("DASHBOARDS.RESCHEDULE"))}),a.hide()}).catch(function(e){a.cancel(e)}).finally(function(){u.disable=!1})}}e.$inject=["$scope","$state","$location","$mdDialog","$timeout","toasty","api","contact","call","Auth","recallme","$translate"],angular.module("app.staff").controller("RescheduleCallDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s){var o=this;o.callNumber=i,o.page=1,o.onInit=function(){n.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){o.lists=_.chain(e.rows).keyBy("id").mapValues("name").value(),n.cmCustomField.get({fields:"id,alias",nolimit:!0}).$promise.then(function(e){o.customFields=e.rows,o.contacts=_.map(t,function(t){return Object.keys(t).forEach(function(e){if(Number(t[e])===Number(o.callNumber))if(e.startsWith("cf_")){var n=_.find(o.customFields,["id",Number(_.trimStart(e,"cf_"))]);t.matchingField=n?n.alias:a.instant("DASHBOARDS.UNKNOWN")}else t.matchingField=e}),t})})}).then(function(){o.paginatedContacts=_.chunk(t,4)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},o.selectContact=function(){e.hide(o.selectedContact)}}e.$inject=["$mdDialog","$translate","api","contacts","callNumber","toasty"],angular.module("app.dashboards").controller("ContactSelectionController",e)}(),function(){"use strict";function e(e,n){var t=n(function(){},999);e.$on("$destroy",function(){t&&(n.cancel(t),t=null)})}e.$inject=["$scope","$interval"],angular.module("app.dashboards").controller("AgentHomeAbandonedController",e)}(),function(){"use strict";function e(e,n,a,i,t,s,o,r,l,d){var c=this;function m(){return o.disposition.get({fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise.then(function(e){return c.dispositions=e?e.rows:[],o.user.getQueues({id:r.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise}).then(function(e){c.queues=e||{count:0,rows:[]},c.queuesMap=_.mapValues(_.keyBy(c.queues.rows,"name"),"name"),c.defaultQueues=c.queues.rows?_.map(c.queues.rows,"name").join(","):void 0}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.currentUser.name,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:c.queues.rows,ngValue:"name",clearAll:!1}]}).catch(function(e){console.log(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.abandoned.bull.calls:"+c.currentUser.id);if(e)(e=JSON.parse(e)).query&&(c.query=_.merge(e.query,c.query));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};c.query.createdAt=n}c.isSearchBarVisible=!!c.query.filter,u()})}function u(){c.query.queue=c.query.queue||c.defaultQueues.split(","),c.query.offset=(c.query.page-1)*c.query.limit;var e={query:c.query};t.localStorage.setItem("motion2.home.abandoned.bull.calls:"+c.currentUser.id,JSON.stringify(e)),c.promise=o.voiceQueueReport.getVoiceQueuesReport(c.query,p).$promise}function p(e){c.abandonedCalls=e||{count:0,rows:[]},c.refresh=!0}c.showTooltip=!1,c.refresh=!0,c.disable=[],c.dispositions={count:0,rows:[]},c.currentUser=r.getCurrentUser(),c.queues={},c.abandonedCalls={count:0,rows:[]},c.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"outbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},c.getAbandonedCalls=u,c.refreshAbandonedCalls=function(){c.showTooltip=!1,u()},c.onInit=m,c.reserved=function(e){e&&(c.disable[e.id]=!0,o.voiceQueueReport.update({id:e.id,lastAssignedTo:e.assigned?c.currentUser.name:null,assigned:e.assigned}).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[e.id]=!1,e.lastAssignedTo=e.assigned?c.currentUser.name:null}))},c.dispose=function(t){a.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(i.body),targetEvent:t,locals:{dispositions:c.dispositions,call:t}}).then(function(e){if(e){c.disable[t.id]=!0;var n={id:t.id,lastAssignedTo:t.assigned?c.currentUser.name:null,assigned:t.assigned,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[t.id]=!1,t.disposition=e.firstLevel,t.secondDisposition=e.secondLevel,t.thirdDisposition=e.thirdLevel})}})},c.call=e.$parent.$parent.$parent.$parent.vm.call,c.transfer=e.$parent.$parent.$parent.$parent.vm.transfer,c.webcall=e.$parent.$parent.$parent.$parent.vm.webcall,c.webtransfer=e.$parent.$parent.$parent.$parent.vm.webtransfer,l.onWithoutApply("voiceQueueReport:save",function(e){c.queuesMap&&"outbound"===e.type&&c.queuesMap[e.queue]&&(c.showTooltip=!0)}),l.onWithoutApply("voiceQueueReport:update",function(e){if(e){var n=_.findIndex(c.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(c.abandonedCalls.rows[n],e)}}),m(),e.$on("$destroy",function(){l.removeAllListeners("voiceQueueReport:save"),l.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeAbandonedBullController",e)}(),function(){"use strict";function e(n,e,t){var a=this;a.dispositions=e,a.call=t,a.note=a.call.note||void 0,a.onDispositionChange=function(e){switch(e){case"first":a.selectedDisposition=a.firstLevelDisposition,a.anySecondLevelDisposition=_.some(a.dispositions,["ParentId",a.firstLevelDisposition.id]),a.secondLevelDisposition=void 0,a.thirdLevelDisposition=void 0,a.anyThirdLevelDisposition=!1;break;case"second":a.selectedDisposition=a.secondLevelDisposition,a.anyThirdLevelDisposition=_.some(a.dispositions,["ParentId",a.secondLevelDisposition.id]);break;case"third":a.selectedDisposition=a.thirdLevelDisposition}},a.clearDispositionSelection=function(e){"second"===e?(a.secondLevelDisposition=void 0,a.thirdLevelDisposition=void 0,a.selectedDisposition=a.firstLevelDisposition):"third"===e&&(a.thirdLevelDisposition=void 0,a.selectedDisposition=a.secondLevelDisposition)},a.saveDisposition=function(){a.call.note=a.note;var e={firstLevel:a.firstLevelDisposition?a.firstLevelDisposition.name:void 0,secondLevel:a.secondLevelDisposition?a.secondLevelDisposition.name:void 0,thirdLevel:a.thirdLevelDisposition?a.thirdLevelDisposition.name:void 0};n.hide(e)},a.closeDialog=function(){n.cancel()}}e.$inject=["$mdDialog","dispositions","call"],angular.module("app.dashboards").controller("DisposeAbandonedCallDialogController",e)}(),function(){"use strict";function e(e,n,a,i,t,s,o,r,l,d){var c=this;function m(){return o.disposition.get({fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise.then(function(e){return c.dispositions=e?e.rows:[],o.user.getQueues({id:r.getCurrentUser().id,fields:"id,name",channel:"voice",type:"inbound",nolimit:!0}).$promise}).then(function(e){c.queues=e||{count:0,rows:[]},c.queuesMap=_.mapValues(_.keyBy(c.queues.rows,"name"),"name"),c.defaultQueues=c.queues.rows?_.map(c.queues.rows,"name").join(","):void 0}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.currentUser.name,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_QUEUE",options:c.queues.rows,ngValue:"name",clearAll:!1}]}).catch(function(e){console.log(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.abandoned.voice.calls:"+c.currentUser.id);if(e)(e=JSON.parse(e)).query&&(c.query=_.merge(e.query,c.query));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};c.query.createdAt=n}c.isSearchBarVisible=!!c.query.filter,u()})}function u(){c.query.queue=c.query.queue||c.defaultQueues.split(","),c.query.offset=(c.query.page-1)*c.query.limit;var e={query:c.query};t.localStorage.setItem("motion2.home.abandoned.voice.calls:"+c.currentUser.id,JSON.stringify(e)),c.promise=o.voiceQueueReport.getVoiceQueuesReport(c.query,p).$promise}function p(e){c.abandonedCalls=e||{count:0,rows:[]},c.refresh=!0}c.showTooltip=!1,c.refresh=!0,c.disable=[],c.dispositions={count:0,rows:[]},c.currentUser=r.getCurrentUser(),c.queues={},c.abandonedCalls={count:0,rows:[]},c.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"inbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},c.getAbandonedCalls=u,c.refreshAbandonedCalls=function(){c.showTooltip=!1,u()},c.onInit=m,c.reserved=function(e){e&&(c.disable[e.id]=!0,o.voiceQueueReport.update({id:e.id,lastAssignedTo:e.assigned?c.currentUser.name:null,assigned:e.assigned}).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[e.id]=!1,e.lastAssignedTo=e.assigned?c.currentUser.name:null}))},c.dispose=function(t){a.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(i.body),targetEvent:t,locals:{dispositions:c.dispositions,call:t}}).then(function(e){if(e){c.disable[t.id]=!0;var n={id:t.id,lastAssignedTo:t.assigned?c.currentUser.name:null,assigned:t.assigned,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[t.id]=!1,t.disposition=e.firstLevel,t.secondDisposition=e.secondLevel,t.thirdDisposition=e.thirdLevel})}})},c.call=e.$parent.$parent.$parent.$parent.vm.call,c.transfer=e.$parent.$parent.$parent.$parent.vm.transfer,c.webcall=e.$parent.$parent.$parent.$parent.vm.webcall,c.webtransfer=e.$parent.$parent.$parent.$parent.vm.webtransfer,l.onWithoutApply("voiceQueueReport:save",function(e){c.queuesMap&&"inbound"===e.type&&c.queuesMap[e.queue]&&(c.showTooltip=!0)}),l.onWithoutApply("voiceQueueReport:update",function(e){if(e){var n=_.findIndex(c.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(c.abandonedCalls.rows[n],e)}}),m(),e.$on("$destroy",function(){l.removeAllListeners("voiceQueueReport:save"),l.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeAbandonedVoiceController",e)}(),function(){"use strict";function e(n,a,t,e,i){var s=this;s.user=t.getCurrentUser(),s.license={},s.plugin={},s.setting={},s.sidebar="dashboard",s.draftManager=i,s.navigation=e.getNavigation(),s.addContactTab=n.$parent.vm.addContactTab,s.addInteractionTab=n.$parent.vm.addInteractionTab,s.init=function(e,n){s.license=e,s.setting=n;var t=a.localStorage.getItem("motion2.home:"+s.user.id);if(t){try{t=JSON.parse(t),s.sidebar=t.currentSidebarTab?t.currentSidebarTab:"dashboard"}catch(e){console.error(e),s.sidebar="dashboard"}"mail"===s.sidebar&&s.draftManager.init()}},s.changeSidebarTab=function(e){s.sidebar=e.view,"plugin"===s.sidebar&&(s.plugin=e.stateParams,s.pluginId=e.id,n.$broadcast("pluginUpdated",{plugin:s.plugin}));a.localStorage.setItem("motion2.home:"+s.user.id,JSON.stringify({currentSidebarTab:e.view}))},s.hasPermission=function(e){return t.hasPermission(e)},n.$watch("vm_home.sidebar",function(e,n){"mail"===e?s.draftManager.init():s.draftManager.drafts={}})}e.$inject=["$scope","$window","Auth","msNavigationAgentService","draftManager"],angular.module("app.dashboards").controller("AgentGeneralHomeController",e)}(),function(){"use strict";function e(t,n,i,s,a,o,r,e,l,d){var c=this;function m(e){!c.reloadingInteractions&&0<c.setting.chatInteractionsReloadTimeout&&A(!0),c.searchInProgress=!1,c.reloadingInteractions=!1,c.chatInteractions=e||{count:0,rows:[]};for(var n=0;n<c.chatInteractions.rows.length;n+=1)p(c.chatInteractions.rows[n])}function u(e,n){c.searchInProgress=!0,e||(c.query.page=1),c.query.offset=(c.query.page-1)*c.query.limit;var t=a.localStorage.getItem("motion2.home.chat:"+c.user.id);(t=t?JSON.parse(t):{}).query=c.query,a.localStorage.setItem("motion2.home.chat:"+c.user.id,JSON.stringify(t)),c.promise=r.chatInteraction.get(c.query,m).$promise}function p(e){"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function g(e){var n=_.find(c.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function v(e){var n=_.find(c.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function h(e){if(e){var n=_.find(c.chatInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),c.query.sort){var t=_.startsWith(c.query.sort,"-")?"desc":"asc";c.chatInteractions.rows=_.orderBy(c.chatInteractions.rows,_.trimStart(c.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===c.setting.chatInteractionsReloadTimeout&&u(c.query.page)}}function f(e){if(e){var n=_.find(c.chatInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function b(e){if(e&&!e.secret){var n=_.find(c.chatInteractions.rows,{id:e.ChatInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function A(e){e&&c.interactionsInterval&&n.cancel(c.interactionsInterval),c.interactionsInterval=n(function(){c.reloadingInteractions=!0,c.searchInProgress||u()},1e3*c.setting.chatInteractionsReloadTimeout)}c.user=e.getCurrentUser(),c.license={},c.setting={},c.tags={count:0,rows:[]},c.chatInteractions={count:0,rows:[]},c.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},c.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Customer Ip",column:"customerIp",type:"text",options:{excludedOperators:["$eq","$ne","$startsWith","$endsWith"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Website",column:"ChatWebsiteId",type:"multiselect",options:{route:{model:"user",action:"getChatWebsites",params:{id:c.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},c.sectionColor="green-A700",c.onInit=function(e,n){return c.license=e,c.setting=n,r.user["get"+_.upperFirst("ChatWebsites")]({id:c.user.id,nolimit:!0}).$promise.then(function(e){return c.chatAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){c.tags=e||{count:0,rows:[]}}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Website",key:"ChatWebsiteId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:c.chatAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:c.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.chat:"+c.user.id);if(e)try{(e=JSON.parse(e)).query&&(c.query=_.merge(c.query,e.query),_.isEmpty(c.chatAccounts.rows)?c.query.ChatWebsiteId=[]:_.isEmpty(c.query.ChatWebsiteId)&&(c.query.ChatWebsiteId=_(c.chatAccounts.rows).map("id").take().value()),c.query.sort&&0<=c.query.sort.indexOf("lastMessage")&&(c.query=_.omit(c.query,"sort")),c.query.includeAll=!0,c.isSearchBarVisible=!(c.query.search||!c.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={ChatWebsiteId:_.map(c.chatAccounts.rows,"id"),createdAt:n};c.query=_.merge(c.query,t)}l.on("chatInteraction:save",h),l.on("chatInteraction:update",h),l.on("chatInteractionTags:save",f),l.on("chatMessage:save",b),l.on("chatMessage:update",b),l.on("user_has_chat_interactions:save",g),l.on("user_has_chat_interactions:remove",v),u(c.query.page),0<c.setting.chatInteractionsReloadTimeout&&A()})},c.success=m,c.getChatInteractions=u,c.showChatInteraction=function(e,n){t.$parent.vm.addInteractionTab("chat",n)},c.downloadChatInteraction=function(e,s,n){r.chatInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="chat-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadChatInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.disposeInteraction=function(e,t){var a=c.user.voicePause||c.user.chatPause||c.user.mailPause||c.user.openchannelPause||c.user.faxPause,n=!t.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(s.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){c.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:c.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:c.user,channel:"chat",interaction:t}})},c.getContactLabel=p,c.getAgentLabel=function(e){if(e.UserId)return e.UserId===c.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},c.getChatWebsiteLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},c.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{color:c.sectionColor,fields:c.advancedSearch.fields,storagePath:"home.chat"},fullscreen:!0}).then(function(e){c.isSearchBarVisible=!(e.value||!c.query.filter),e.apply&&(c.query.search=e.value,u())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},t.$on("$destroy",function(){l.removeAllListeners("chatMessage:save"),l.removeAllListeners("chatMessage:update"),l.removeAllListeners("chatInteraction:save"),l.removeAllListeners("chatInteractionTags:save"),l.removeAllListeners("chatInteraction:update"),l.removeAllListeners("user_has_chat_interactions:save"),l.removeAllListeners("user_has_chat_interactions:remove"),c.interactionsInterval&&n.cancel(c.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeChatController",e)}(),function(){"use strict";function e(t,n,e,a,i,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.contacts=e||{count:0,rows:[]}}function c(e,n){l.searchInProgress=!0,o.cmContact.describe({id:l.query.ListId}).$promise.then(function(e){return _(e.toJSON()).omit("UserId").values().map(function(e){return function(e){var n={name:_.startCase(e.displayName),column:e.columnName,options:{}};if(e.custom)switch(e.custom.type){case"text":n.type="text";break;case"select":n.type="multiselect",n.values=_.map(JSON.parse(e.custom.values),function(e,n){return{id:n,name:e.value,value:e.value}}),n.options.field="name";break;case"switch":n.type="select",n.values=[{id:1,translate:"DASHBOARDS.ENABLED"},{id:0,translate:"DASHBOARDS.DISABLED"}],n.options.excludedOperators=["$ne"];break;case"number":n.type="number";break;case"datetime":n.type="date"}else switch(e.columnName){case"dateOfBirth":n.type="date";break;case"CompanyId":n.name="Company",n.type="autocomplete",n.options.route={model:"cmCompany",action:"get",params:{fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;case"ListId":n.name="List",n.type="autocomplete",n.options.route={model:"user",action:"getLists",params:{id:l.currentUser.id,fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;default:_.includes(e.type.toLowerCase(),"int")?n.type="number":_.includes(e.type.toLowerCase(),"date")?n.type="date":n.type="text"}return n}(e)}).value()}).then(function(e){l.advancedSearch.fields=e;var n=_.findIndex(e,function(e){return _.startsWith(e.column,"cf_")})||e.length-1;n<0&&(n=e.length),l.advancedSearch.fields.splice(n,0,{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"DESCRIBE_CM_CONTACTS",msg:e.data?JSON.stringify(e.data.message):e.toString()})}),e||(l.query.page=1),l.query.offset=(l.query.page-1)*l.query.limit;var t=i.localStorage.getItem("motion2.home.contacts:"+l.currentUser.id);(t=t?JSON.parse(t):{}).query=l.query,i.localStorage.setItem("motion2.home.contacts:"+l.currentUser.id,JSON.stringify(t)),l.promise=o.cmContact.get(l.query,d).$promise}l.currentUser=s.getCurrentUser(),l.lists={},l.contacts={count:0,rows:[]},l.tags={count:0,rows:[]},l.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1},l.advancedSearch={fields:[]},l.sectionColor="red",l.getContacts=c,l.refreshContacts=function(){c()},l.mergeContact=function(e,n){a.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.duplicateContact=function(e,n){a.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.openContact=function(e){return o.cmContact.get({id:e}).$promise.then(function(e){n.$parent.vm.addContactTab(e)})},l.call=n.$parent.vm.call,l.onInit=function(){o.user.getLists({id:l.currentUser.id,fields:"id,name,dialPrefix",sort:"name",nolimit:!0}).$promise.then(function(e){return l.lists=e||{count:0,rows:[]},l.listsMap=_.keyBy(l.lists.rows,"id"),o.tag.get({sort:"name"}).$promise}).then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"List",key:"ListId",type:"multiselect",label:"CONTACTMANAGER.SELECT_LIST",options:l.lists.rows,clearAll:!1},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:l.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=i.localStorage.getItem("motion2.home.contacts:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query),_.isEmpty(l.lists.rows)?l.query.ListId=[]:_.isEmpty(l.query.ListId)&&(l.query.ListId=_(l.lists.rows).map("id").take().value()))}catch(e){console.log(e)}else l.query.ListId=_.map(l.lists.rows,"id");l.isSearchBarVisible=!(l.query.search||!l.query.filter),c()})},l.openAdvancedSearch=function(){a.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{color:l.sectionColor,fields:l.advancedSearch.fields,storagePath:"home.contacts"},fullscreen:!0}).then(function(e){l.isSearchBarVisible=!(e.value||!l.query.filter),e.apply&&(l.query.search=e.value,c())}).catch(function(e){r.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}e.$inject=["$document","$scope","$timeout","$mdDialog","$window","Auth","api","toasty"],angular.module("app.dashboards").controller("AgentHomeContactsController",e)}(),function(){"use strict";function e(e,n){var t=n(function(){},999);e.$on("$destroy",function(){t&&(n.cancel(t),t=null)})}e.$inject=["$scope","$interval"],angular.module("app.dashboards").controller("AgentHomeDashboardController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["type","waiting","dialMethod","dialActive"];function u(e){c.voiceQueuesTotal=e.count?e.count:0,c.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.voiceQueues,function(e,n){c.rpcVoiceQueues[n]&&(c.voiceQueues[n].waiting=c.rpcVoiceQueues[n].waiting||0)})}c.voiceQueues={},c.voiceQueuesTotal=0,c.rpcVoiceQueues={},c.getVoiceQueues={},c.rpcVoiceQueuesChannels={},c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.load=!0,c.query={id:r.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",type:"outbound",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=u,c.getVoiceQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,u).$promise},c.getSize=function(e){return _.size(e)},c.onSaveQueue=function(e){c.voiceQueues[e.id]&&c.rpcVoiceQueues[e.id]&&(c.rpcVoiceQueues[e.id]=e,_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onSaveChannel=function(e){"outbound"===e.type&&(e.queuecallerleaveAt?(delete c.rpcVoiceQueuesChannels[e.uniqueid],c.load&&c.deleteVoiceQueuesChannels.push(e.uniqueid)):(c.rpcVoiceQueuesChannels[e.uniqueid]=e,c.load&&(c.addVoiceQueuesChannels[e.uniqueid]=e)))},c.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getVoiceQueues()},c.onSaveVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]=_.pick(e,m))},c.onUpdateVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]&&_.merge(c.rpcVoiceQueues[e.id],_.pick(e,m)),c.voiceQueues[e.id]&&_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onRemoveVoiceQueue=function(e){_.isNil(e)||(delete c.rpcVoiceQueues[e.id],delete c.voiceQueues[e.id])},l.onWithoutApply("voice_queue:save",c.onSaveQueue),l.onWithoutApply("voice_queue_channel:save",c.onSaveChannel),l.onWithoutApply("userVoiceQueue:save",c.onUserVoiceQueue),l.onWithoutApply("userVoiceQueue:remove",c.onUserVoiceQueue),l.onWithoutApply("voiceQueue:save",c.onSaveVoiceQueue),l.onWithoutApply("voiceQueue:remove",c.onRemoveVoiceQueue),l.onWithoutApply("voiceQueue:update",c.onUpdateVoiceQueue),o.rpc.getVoiceQueues().$promise.then(function(e){return c.rpcVoiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},o.rpc.getVoiceQueuesChannels().$promise}).then(function(e){c.rpcVoiceQueuesChannels=e?_.keyBy(e.rows?_.filter(e.rows,{type:"outbound",queuecallerleaveAt:null}):[],"uniqueid"):{}}).catch(function(e){console.error(e)}).finally(function(){_.merge(c.rpcVoiceQueuesChannels,c.addVoiceQueuesChannels);for(var e=0;e<c.deleteVoiceQueuesChannels.length;e+=1)delete c.rpcVoiceQueuesChannels[c.deleteVoiceQueuesChannels[e]];c.load=!1,c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.getVoiceQueues()});var p=!0,g=1;e.$watch("vm_dc.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getVoiceQueues())}),e.$on("$destroy",function(){l.removeAllListeners("voice_queue:save"),l.removeAllListeners("voice_queue_channel:save"),l.removeAllListeners("userVoiceQueue:save"),l.removeAllListeners("userVoiceQueue:remove"),l.removeAllListeners("voiceQueue:save"),l.removeAllListeners("voiceQueue:update"),l.removeAllListeners("voiceQueue:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardBullController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcChatQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.chatQueuesTotal=e.count?e.count:0,c.chatQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.chatQueues,function(e,n){c.rpcChatQueues[n]&&(c.chatQueues[n].waiting=c.rpcChatQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.chatQueues={},c.chatQueuesTotal=0,c.rpcChatQueues={},c.paginatedInteractions=[],c.deleteChatQueuesWaitingInteractions=[],c.rpcChatQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"chat",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getChatQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.chatQueues[e.id]&&c.rpcChatQueues[e.id]&&(_.merge(c.rpcChatQueues[e.id],_.pick(e,m)),_.merge(c.chatQueues[e.id],_.pick(e,m)))},c.onSaveChatQueue=function(e){_.isNil(e)||(c.rpcChatQueues[e.id]=_.pick(e,m))},c.onUpdateChatQueue=function(e){_.isNil(e)||(c.rpcChatQueues[e.id]&&_.merge(c.rpcChatQueues[e.id],_.pick(e,m)),c.chatQueues[e.id]&&_.merge(c.chatQueues[e.id],_.pick(e,m)))},c.onRemoveChatQueue=function(e){_.isNil(e)||(delete c.rpcChatQueues[e.id],delete c.chatQueues[e.id])},c.onSaveUserChatQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getChatQueues()},c.onRemoveUserChatQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getChatQueues()},c.onSaveChatQueueChannel=function(e){c.chatQueues[e.queue_id]&&(c.rpcChatQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveChatQueueChannel=function(e){delete c.rpcChatQueuesWaitingInteractions[e.id],u&&c.deleteChatQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("chat_queue:save",c.onSaveQueue),l.onWithoutApply("chatQueue:save",c.onSaveChatQueue),l.onWithoutApply("chatQueue:update",c.onUpdateChatQueue),l.onWithoutApply("chatQueue:remove",c.onRemoveChatQueue),l.onWithoutApply("userChatQueue:save",c.onSaveUserChatQueue),l.onWithoutApply("userChatQueue:remove",c.onRemoveUserChatQueue),l.onWithoutApply("chat_queue_waiting_interaction:save",c.onSaveChatQueueChannel),l.onWithoutApply("chat_queue_waiting_interaction:remove",c.onRemoveChatQueueChannel),o.rpc.getChatQueues().$promise.then(function(e){c.rpcChatQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"chat"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getChatQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcChatQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteChatQueuesWaitingInteractions.length;e+=1)delete c.rpcChatQueuesWaitingInteractions[c.deleteChatQueuesWaitingInteractions[e]];u=!1,c.deleteChatQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getChatQueues())}),e.$on("$destroy",function(){l.removeAllListeners("chat_queue:save"),l.removeAllListeners("chatQueue:save"),l.removeAllListeners("chatQueue:update"),l.removeAllListeners("chatQueue:remove"),l.removeAllListeners("userChatQueue:save"),l.removeAllListeners("userChatQueue:remove"),l.removeAllListeners("chat_queue_waiting_interaction:save"),l.removeAllListeners("chat_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelChatController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcFaxQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.faxQueuesTotal=e.count?e.count:0,c.faxQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.faxQueues,function(e,n){c.rpcFaxQueues[n]&&(c.faxQueues[n].waiting=c.rpcFaxQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.faxQueues={},c.faxQueuesTotal=0,c.rpcFaxQueues={},c.paginatedInteractions=[],c.deleteFaxQueuesWaitingInteractions=[],c.rpcFaxQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"fax",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getFaxQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.faxQueues[e.id]&&c.rpcFaxQueues[e.id]&&(_.merge(c.rpcFaxQueues[e.id],_.pick(e,m)),_.merge(c.faxQueues[e.id],_.pick(e,m)))},c.onSaveFaxQueue=function(e){_.isNil(e)||(c.rpcFaxQueues[e.id]=_.pick(e,m))},c.onUpdateFaxQueue=function(e){_.isNil(e)||(c.rpcFaxQueues[e.id]&&_.merge(c.rpcFaxQueues[e.id],_.pick(e,m)),c.faxQueues[e.id]&&_.merge(c.faxQueues[e.id],_.pick(e,m)))},c.onRemoveFaxQueue=function(e){_.isNil(e)||(delete c.rpcFaxQueues[e.id],delete c.faxQueues[e.id])},c.onSaveUserFaxQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getFaxQueues()},c.onRemoveUserFaxQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getFaxQueues()},c.onSaveFaxQueueChannel=function(e){c.faxQueues[e.queue_id]&&(c.rpcFaxQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveFaxQueueChannel=function(e){delete c.rpcFaxQueuesWaitingInteractions[e.id],u&&c.deleteFaxQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("fax_queue:save",c.onSaveQueue),l.onWithoutApply("faxQueue:save",c.onSaveFaxQueue),l.onWithoutApply("faxQueue:update",c.onUpdateFaxQueue),l.onWithoutApply("faxQueue:remove",c.onRemoveFaxQueue),l.onWithoutApply("userFaxQueue:save",c.onSaveUserFaxQueue),l.onWithoutApply("userFaxQueue:remove",c.onRemoveUserFaxQueue),l.onWithoutApply("fax_queue_waiting_interaction:save",c.onSaveFaxQueueChannel),l.onWithoutApply("fax_queue_waiting_interaction:remove",c.onRemoveFaxQueueChannel),o.rpc.getFaxQueues().$promise.then(function(e){c.rpcFaxQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"fax"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getFaxQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcFaxQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteFaxQueuesWaitingInteractions.length;e+=1)delete c.rpcFaxQueuesWaitingInteractions[c.deleteFaxQueuesWaitingInteractions[e]];u=!1,c.deleteFaxQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getFaxQueues())}),e.$on("$destroy",function(){l.removeAllListeners("fax_queue:save"),l.removeAllListeners("faxQueue:save"),l.removeAllListeners("faxQueue:update"),l.removeAllListeners("faxQueue:remove"),l.removeAllListeners("userFaxQueue:save"),l.removeAllListeners("userFaxQueue:remove"),l.removeAllListeners("fax_queue_waiting_interaction:save"),l.removeAllListeners("fax_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelFaxController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcMailQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.mailQueuesTotal=e.count?e.count:0,c.mailQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.mailQueues,function(e,n){c.rpcMailQueues[n]&&(c.mailQueues[n].waiting=c.rpcMailQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.mailQueues={},c.mailQueuesTotal=0,c.rpcMailQueues={},c.paginatedInteractions=[],c.deleteMailQueuesWaitingInteractions=[],c.rpcMailQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"mail",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getMailQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.mailQueues[e.id]&&c.rpcMailQueues[e.id]&&(_.merge(c.rpcMailQueues[e.id],_.pick(e,m)),_.merge(c.mailQueues[e.id],_.pick(e,m)))},c.onSaveMailQueue=function(e){_.isNil(e)||(c.rpcMailQueues[e.id]=_.pick(e,m))},c.onUpdateMailQueue=function(e){_.isNil(e)||(c.rpcMailQueues[e.id]&&_.merge(c.rpcMailQueues[e.id],_.pick(e,m)),c.mailQueues[e.id]&&_.merge(c.mailQueues[e.id],_.pick(e,m)))},c.onRemoveMailQueue=function(e){_.isNil(e)||(delete c.rpcMailQueues[e.id],delete c.mailQueues[e.id])},c.onSaveUserMailQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getMailQueues()},c.onRemoveUserMailQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getMailQueues()},c.onSaveMailQueueChannel=function(e){c.mailQueues[e.queue_id]&&(c.rpcMailQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveMailQueueChannel=function(e){delete c.rpcMailQueuesWaitingInteractions[e.id],u&&c.deleteMailQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("mail_queue:save",c.onSaveQueue),l.onWithoutApply("mailQueue:save",c.onSaveMailQueue),l.onWithoutApply("mailQueue:update",c.onUpdateMailQueue),l.onWithoutApply("mailQueue:remove",c.onRemoveMailQueue),l.onWithoutApply("userMailQueue:save",c.onSaveUserMailQueue),l.onWithoutApply("userMailQueue:remove",c.onRemoveUserMailQueue),l.onWithoutApply("mail_queue_waiting_interaction:save",c.onSaveMailQueueChannel),l.onWithoutApply("mail_queue_waiting_interaction:remove",c.onRemoveMailQueueChannel),o.rpc.getMailQueues().$promise.then(function(e){c.rpcMailQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"mail"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getMailQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcMailQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteMailQueuesWaitingInteractions.length;e+=1)delete c.rpcMailQueuesWaitingInteractions[c.deleteMailQueuesWaitingInteractions[e]];u=!1,c.deleteMailQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getMailQueues())}),e.$on("$destroy",function(){l.removeAllListeners("mail_queue:save"),l.removeAllListeners("mailQueue:save"),l.removeAllListeners("mailQueue:update"),l.removeAllListeners("mailQueue:remove"),l.removeAllListeners("userMailQueue:save"),l.removeAllListeners("userMailQueue:remove"),l.removeAllListeners("mail_queue_waiting_interaction:save"),l.removeAllListeners("mail_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelMailController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcOpenchannelQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.openchannelQueuesTotal=e.count?e.count:0,c.openchannelQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.openchannelQueues,function(e,n){c.rpcOpenchannelQueues[n]&&(c.openchannelQueues[n].waiting=c.rpcOpenchannelQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.openchannelQueues={},c.openchannelQueuesTotal=0,c.rpcOpenchannelQueues={},c.paginatedInteractions=[],c.deleteOpenchannelQueuesWaitingInteractions=[],c.rpcOpenchannelQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"openchannel",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getOpenchannelQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.openchannelQueues[e.id]&&c.rpcOpenchannelQueues[e.id]&&(_.merge(c.rpcOpenchannelQueues[e.id],_.pick(e,m)),_.merge(c.openchannelQueues[e.id],_.pick(e,m)))},c.onSaveOpenchannelQueue=function(e){_.isNil(e)||(c.rpcOpenchannelQueues[e.id]=_.pick(e,m))},c.onUpdateOpenchannelQueue=function(e){_.isNil(e)||(c.rpcOpenchannelQueues[e.id]&&_.merge(c.rpcOpenchannelQueues[e.id],_.pick(e,m)),c.openchannelQueues[e.id]&&_.merge(c.openchannelQueues[e.id],_.pick(e,m)))},c.onRemoveOpenchannelQueue=function(e){_.isNil(e)||(delete c.rpcOpenchannelQueues[e.id],delete c.openchannelQueues[e.id])},c.onSaveUserOpenchannelQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getOpenchannelQueues()},c.onRemoveUserOpenchannelQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getOpenchannelQueues()},c.onSaveOpenchannelQueueChannel=function(e){c.openchannelQueues[e.queue_id]&&(c.rpcOpenchannelQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveOpenchannelQueueChannel=function(e){delete c.rpcOpenchannelQueuesWaitingInteractions[e.id],u&&c.deleteOpenchannelQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("openchannel_queue:save",c.onSaveQueue),l.onWithoutApply("openchannelQueue:save",c.onSaveOpenchannelQueue),l.onWithoutApply("openchannelQueue:update",c.onUpdateOpenchannelQueue),l.onWithoutApply("openchannelQueue:remove",c.onRemoveOpenchannelQueue),l.onWithoutApply("userOpenchannelQueue:save",c.onSaveUserOpenchannelQueue),l.onWithoutApply("userOpenchannelQueue:remove",c.onRemoveUserOpenchannelQueue),l.onWithoutApply("openchannel_queue_waiting_interaction:save",c.onSaveOpenchannelQueueChannel),l.onWithoutApply("openchannel_queue_waiting_interaction:remove",c.onRemoveOpenchannelQueueChannel),o.rpc.getOpenchannelQueues().$promise.then(function(e){c.rpcOpenchannelQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"openchannel"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getOpenchannelQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcOpenchannelQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteOpenchannelQueuesWaitingInteractions.length;e+=1)delete c.rpcOpenchannelQueuesWaitingInteractions[c.deleteOpenchannelQueuesWaitingInteractions[e]];u=!1,c.deleteOpenchannelQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getOpenchannelQueues())}),e.$on("$destroy",function(){l.removeAllListeners("openchannel_queue:save"),l.removeAllListeners("openchannelQueue:save"),l.removeAllListeners("openchannelQueue:update"),l.removeAllListeners("openchannelQueue:remove"),l.removeAllListeners("userOpenchannelQueue:save"),l.removeAllListeners("userOpenchannelQueue:remove"),l.removeAllListeners("openchannel_queue_waiting_interaction:save"),l.removeAllListeners("openchannel_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelOpenchannelController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcSmsQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.smsQueuesTotal=e.count?e.count:0,c.smsQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.smsQueues,function(e,n){c.rpcSmsQueues[n]&&(c.smsQueues[n].waiting=c.rpcSmsQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.smsQueues={},c.smsQueuesTotal=0,c.rpcSmsQueues={},c.paginatedInteractions=[],c.deleteSmsQueuesWaitingInteractions=[],c.rpcSmsQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"sms",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getSmsQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.smsQueues[e.id]&&c.rpcSmsQueues[e.id]&&(_.merge(c.rpcSmsQueues[e.id],_.pick(e,m)),_.merge(c.smsQueues[e.id],_.pick(e,m)))},c.onSaveSmsQueue=function(e){_.isNil(e)||(c.rpcSmsQueues[e.id]=_.pick(e,m))},c.onUpdateSmsQueue=function(e){_.isNil(e)||(c.rpcSmsQueues[e.id]&&_.merge(c.rpcSmsQueues[e.id],_.pick(e,m)),c.smsQueues[e.id]&&_.merge(c.smsQueues[e.id],_.pick(e,m)))},c.onRemoveSmsQueue=function(e){_.isNil(e)||(delete c.rpcSmsQueues[e.id],delete c.smsQueues[e.id])},c.onSaveUserSmsQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getSmsQueues()},c.onRemoveUserSmsQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getSmsQueues()},c.onSaveSmsQueueChannel=function(e){c.smsQueues[e.queue_id]&&(c.rpcSmsQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveSmsQueueChannel=function(e){delete c.rpcSmsQueuesWaitingInteractions[e.id],u&&c.deleteSmsQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("sms_queue:save",c.onSaveQueue),l.onWithoutApply("smsQueue:save",c.onSaveSmsQueue),l.onWithoutApply("smsQueue:update",c.onUpdateSmsQueue),l.onWithoutApply("smsQueue:remove",c.onRemoveSmsQueue),l.onWithoutApply("userSmsQueue:save",c.onSaveUserSmsQueue),l.onWithoutApply("userSmsQueue:remove",c.onRemoveUserSmsQueue),l.onWithoutApply("sms_queue_waiting_interaction:save",c.onSaveSmsQueueChannel),l.onWithoutApply("sms_queue_waiting_interaction:remove",c.onRemoveSmsQueueChannel),o.rpc.getSmsQueues().$promise.then(function(e){c.rpcSmsQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"sms"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getSmsQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcSmsQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteSmsQueuesWaitingInteractions.length;e+=1)delete c.rpcSmsQueuesWaitingInteractions[c.deleteSmsQueuesWaitingInteractions[e]];u=!1,c.deleteSmsQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getSmsQueues())}),e.$on("$destroy",function(){l.removeAllListeners("sms_queue:save"),l.removeAllListeners("smsQueue:save"),l.removeAllListeners("smsQueue:update"),l.removeAllListeners("smsQueue:remove"),l.removeAllListeners("userSmsQueue:save"),l.removeAllListeners("userSmsQueue:remove"),l.removeAllListeners("sms_queue_waiting_interaction:save"),l.removeAllListeners("sms_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelSmsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["type","waiting","dialMethod","dialActive"];function u(e){c.voiceQueuesTotal=e.count?e.count:0,c.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.voiceQueues,function(e,n){c.rpcVoiceQueues[n]&&(c.voiceQueues[n].waiting=c.rpcVoiceQueues[n].waiting||0)})}c.voiceQueues={},c.voiceQueuesTotal=0,c.rpcVoiceQueues={},c.getVoiceQueues={},c.rpcVoiceQueuesChannels={},c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.load=!0,c.query={id:r.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",type:"inbound",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=u,c.getVoiceQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,u).$promise},c.getSize=function(e){return _.size(e)},c.onSaveQueue=function(e){c.voiceQueues[e.id]&&c.rpcVoiceQueues[e.id]&&(c.rpcVoiceQueues[e.id]=e,_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onSaveChannel=function(e){"inbound"===e.type&&(e.queuecallerleaveAt?(delete c.rpcVoiceQueuesChannels[e.uniqueid],c.load&&c.deleteVoiceQueuesChannels.push(e.uniqueid)):(c.rpcVoiceQueuesChannels[e.uniqueid]=e,c.load&&(c.addVoiceQueuesChannels[e.uniqueid]=e)))},c.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getVoiceQueues()},c.onSaveVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]=_.pick(e,m))},c.onUpdateVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]&&_.merge(c.rpcVoiceQueues[e.id],_.pick(e,m)),c.voiceQueues[e.id]&&_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onRemoveVoiceQueue=function(e){_.isNil(e)||(delete c.rpcVoiceQueues[e.id],delete c.voiceQueues[e.id])},l.onWithoutApply("voice_queue:save",c.onSaveQueue),l.onWithoutApply("voice_queue_channel:save",c.onSaveChannel),l.onWithoutApply("userVoiceQueue:save",c.onUserVoiceQueue),l.onWithoutApply("userVoiceQueue:remove",c.onUserVoiceQueue),l.onWithoutApply("voiceQueue:save",c.onSaveVoiceQueue),l.onWithoutApply("voiceQueue:remove",c.onRemoveVoiceQueue),l.onWithoutApply("voiceQueue:update",c.onUpdateVoiceQueue),o.user.getQueues(c.query).$promise.then(function(e){return c.myQueues=e,o.rpc.getVoiceQueues().$promise}).then(function(e){for(var n=e.rows,t=_.keyBy(n,"id"),a=0;a<c.myQueues.count;a++){var i=c.myQueues.rows[a];c.rpcVoiceQueues[i.id]=t[i.id]}return o.rpc.getVoiceQueuesChannels().$promise}).then(function(e){c.rpcVoiceQueuesChannels=e?_.keyBy(e.rows?_.filter(e.rows,function(e){return!("inbound"!==e.type||e.queuecallerleaveAt||!_.find(c.myQueues.rows,{name:e.queue}))}):[],"uniqueid"):{}}).catch(function(e){console.error(e)}).finally(function(){_.merge(c.rpcVoiceQueuesChannels,c.addVoiceQueuesChannels);for(var e=0;e<c.deleteVoiceQueuesChannels.length;e+=1)delete c.rpcVoiceQueuesChannels[c.deleteVoiceQueuesChannels[e]];c.load=!1,c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.getVoiceQueues()});var p=!0,g=1;e.$watch("vm_dc.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getVoiceQueues())}),e.$on("$destroy",function(){l.removeAllListeners("voice_queue:save"),l.removeAllListeners("voice_queue_channel:save"),l.removeAllListeners("userVoiceQueue:save"),l.removeAllListeners("userVoiceQueue:remove"),l.removeAllListeners("voiceQueue:save"),l.removeAllListeners("voiceQueue:update"),l.removeAllListeners("voiceQueue:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardVoiceController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcWhatsappQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.whatsappQueuesTotal=e.count?e.count:0,c.whatsappQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.whatsappQueues,function(e,n){c.rpcWhatsappQueues[n]&&(c.whatsappQueues[n].waiting=c.rpcWhatsappQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.whatsappQueues={},c.whatsappQueuesTotal=0,c.rpcWhatsappQueues={},c.paginatedInteractions=[],c.deleteWhatsappQueuesWaitingInteractions=[],c.rpcWhatsappQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"whatsapp",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getWhatsappQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.whatsappQueues[e.id]&&c.rpcWhatsappQueues[e.id]&&(_.merge(c.rpcWhatsappQueues[e.id],_.pick(e,m)),_.merge(c.whatsappQueues[e.id],_.pick(e,m)))},c.onSaveWhatsappQueue=function(e){_.isNil(e)||(c.rpcWhatsappQueues[e.id]=_.pick(e,m))},c.onUpdateWhatsappQueue=function(e){_.isNil(e)||(c.rpcWhatsappQueues[e.id]&&_.merge(c.rpcWhatsappQueues[e.id],_.pick(e,m)),c.whatsappQueues[e.id]&&_.merge(c.whatsappQueues[e.id],_.pick(e,m)))},c.onRemoveWhatsappQueue=function(e){_.isNil(e)||(delete c.rpcWhatsappQueues[e.id],delete c.whatsappQueues[e.id])},c.onSaveUserWhatsappQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getWhatsappQueues()},c.onRemoveUserWhatsappQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getWhatsappQueues()},c.onSaveWhatsappQueueChannel=function(e){c.whatsappQueues[e.queue_id]&&(c.rpcWhatsappQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveWhatsappQueueChannel=function(e){delete c.rpcWhatsappQueuesWaitingInteractions[e.id],u&&c.deleteWhatsappQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("whatsapp_queue:save",c.onSaveQueue),l.onWithoutApply("whatsappQueue:save",c.onSaveWhatsappQueue),l.onWithoutApply("whatsappQueue:update",c.onUpdateWhatsappQueue),l.onWithoutApply("whatsappQueue:remove",c.onRemoveWhatsappQueue),l.onWithoutApply("userWhatsappQueue:save",c.onSaveUserWhatsappQueue),l.onWithoutApply("userWhatsappQueue:remove",c.onRemoveUserWhatsappQueue),l.onWithoutApply("whatsapp_queue_waiting_interaction:save",c.onSaveWhatsappQueueChannel),l.onWithoutApply("whatsapp_queue_waiting_interaction:remove",c.onRemoveWhatsappQueueChannel),o.rpc.getWhatsappQueues().$promise.then(function(e){c.rpcWhatsappQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"whatsapp"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getWhatsappQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcWhatsappQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteWhatsappQueuesWaitingInteractions.length;e+=1)delete c.rpcWhatsappQueuesWaitingInteractions[c.deleteWhatsappQueuesWaitingInteractions[e]];u=!1,c.deleteWhatsappQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getWhatsappQueues())}),e.$on("$destroy",function(){l.removeAllListeners("whatsapp_queue:save"),l.removeAllListeners("whatsappQueue:save"),l.removeAllListeners("whatsappQueue:update"),l.removeAllListeners("whatsappQueue:remove"),l.removeAllListeners("userWhatsappQueue:save"),l.removeAllListeners("userWhatsappQueue:remove"),l.removeAllListeners("whatsapp_queue_waiting_interaction:save"),l.removeAllListeners("whatsapp_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelWhatsappController",e)}(),function(){"use strict";function e(i,t,s,o,a,n,r,e,l,d,c){var m=this;function u(e){!m.reloadingInteractions&&0<m.setting.faxInteractionsReloadTimeout&&function(e){e&&m.interactionsInterval&&t.cancel(m.interactionsInterval);m.interactionsInterval=t(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},1e3*m.setting.faxInteractionsReloadTimeout)}(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.faxInteractions=e||{count:0,rows:[]};for(var n=0;n<m.faxInteractions.rows.length;n+=1)g(m.faxInteractions.rows[n])}function p(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.fax:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.fax:"+m.user.id,JSON.stringify(t)),m.promise=r.faxInteraction.get(m.query,u).$promise}function g(e){e.contactInfo=e.Contact?e.Contact.fax:void 0,"Unknown"===e.contactName&&(e.contactName=n.instant("DASHBOARDS.UNKNOWN"))}function v(e){var n=_.find(m.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function h(e){var n=_.find(m.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(e){if(e){var n=_.find(m.faxInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.faxInteractions.rows=_.orderBy(m.faxInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else p(m.query.page)}}function b(e){if(e){var n=_.find(m.faxInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function A(e){if(e&&!e.secret){var n=_.find(m.faxInteractions.rows,{id:e.FaxInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.faxInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"FaxAccountId",type:"multiselect",options:{route:{model:"user",action:"getFaxAccounts",params:{id:m.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},m.sectionColor="blue-grey",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("faxAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.faxAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"FaxAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.faxAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.fax:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.faxAccounts.rows)?m.query.FaxAccountId=[]:_.isEmpty(m.query.FaxAccountId)&&(m.query.FaxAccountId=_(m.faxAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={FaxAccountId:_.map(m.faxAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("faxInteraction:save",f),l.on("faxInteraction:update",f),l.on("faxInteractionTags:save",b),l.on("faxMessage:save",A),l.on("faxMessage:update",A),l.on("user_has_fax_interactions:save",v),l.on("user_has_fax_interactions:remove",h),p(m.query.page)})},m.success=u,m.getFaxInteractions=p,m.showFaxInteraction=function(e,n){i.$parent.vm.addInteractionTab("fax",n)},m.downloadFaxInteraction=function(e,s,n){r.faxInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="fax-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadFaxInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"fax",interaction:t}})},m.getContactLabel=g,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?n.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return n.instant("DASHBOARDS.NOT_ASSIGNED")},m.getFaxAccountLabel=function(e){if(e.Account)return e.Account.key;return n.instant("DASHBOARDS.UNKNOWN")},m.composeFaxInteraction=function(e,a){s.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.faxAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$parent.vm.addInteractionTab("fax",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()})})}var t={channel:"fax",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.fax"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,p())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("faxMessage:save"),l.removeAllListeners("faxMessage:update"),l.removeAllListeners("faxInteraction:save"),l.removeAllListeners("faxInteractionTags:save"),l.removeAllListeners("faxInteraction:update"),l.removeAllListeners("user_has_fax_interactions:save"),l.removeAllListeners("user_has_fax_interactions:remove"),m.interactionsInterval&&t.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeFaxController",e)}(),function(){"use strict";function e(o,n,r,l,a,t,d,e,i,c,m){var u=this;function s(e){!u.reloadingInteractions&&0<u.setting.mailInteractionsReloadTimeout&&y(!0),u.searchInProgress=!1,u.reloadingInteractions=!1,u.mailInteractions=e||{count:0,rows:[]};for(var n=0;n<u.mailInteractions.rows.length;n+=1)v(u.mailInteractions.rows[n])}function p(e,n){u.searchInProgress=!0,e||(u.query.page=1),(void 0===u.query.closed||null===u.query.closed||u.query.closed)&&delete u.query.substatus,u.query.offset=(u.query.page-1)*u.query.limit;var t=a.localStorage.getItem("motion2.home.mail:"+u.user.id);(t=t?JSON.parse(t):{}).query=u.query,a.localStorage.setItem("motion2.home.mail:"+u.user.id,JSON.stringify(t)),u.promise=d.mailInteraction.get(u.query,s).$promise}function g(e,n){o.$parent.vm.addInteractionTab("mail",n)}function v(e){_.isEmpty(e.to)||!e.Account||_.includes(e.to,e.Account.email)?e.contactInfo=e.Contact?e.Contact.email:void 0:e.contactInfo=e.to.split("<").pop().split(">")[0],"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function h(e){var n=_.find(u.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function f(e){var n=_.find(u.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function b(e){if(e){var n=_.find(u.mailInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),u.query.sort){var t=_.startsWith(u.query.sort,"-")?"desc":"asc";u.mailInteractions.rows=_.orderBy(u.mailInteractions.rows,_.trimStart(u.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===u.setting.mailInteractionsReloadTimeout&&p(u.query.page)}}function A(e){if(e){var n=_.find(u.mailInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function E(e){if(e&&!e.secret){var n=_.find(u.mailInteractions.rows,{id:e.MailInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function y(e){e&&u.interactionsInterval&&n.cancel(u.interactionsInterval),u.interactionsInterval=n(function(){u.reloadingInteractions=!0,u.searchInProgress||p()},1e3*u.setting.mailInteractionsReloadTimeout)}u.user=e.getCurrentUser(),u.license={},u.setting={},u.tags={count:0,rows:[]},u.mailInteractions={count:0,rows:[]},u.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},u.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"plainBody",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Substatus",column:"substatus",type:"multiselect",options:{field:"name",route:{model:"mailSubstatus",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"MailAccountId",type:"multiselect",options:{route:{model:"user",action:"getMailAccounts",params:{id:u.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},u.sectionColor="teal",u.onInit=function(e,n){return u.license=e,u.setting=n,d.user["get"+_.upperFirst("mailAccounts")]({id:u.user.id,nolimit:!0}).$promise.then(function(e){return u.mailAccounts=e||{count:0,rows:[]},d.tag.get({sort:"name"}).$promise}).then(function(e){u.tags=e||{count:0,rows:[]}}).then(function(){return d.mailSubstatus.get({nolimit:!0}).$promise}).then(function(e){u.subStatuses=e||{count:0,rows:[]}}).then(function(){u.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Substatus",key:"substatus",type:"select",label:"DASHBOARDS.SELECT_SUBSTATUS",options:u.subStatuses.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NONE"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name",ngIf:"closed === 0"},{name:"Account",key:"MailAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:u.mailAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:u.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:u.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.mail:"+u.user.id);if(e)try{(e=JSON.parse(e)).query&&(u.query=_.merge(u.query,e.query),_.isEmpty(u.mailAccounts.rows)?u.query.MailAccountId=[]:_.isEmpty(u.query.MailAccountId)&&(u.query.MailAccountId=_(u.mailAccounts.rows).map("id").take().value()),u.query.sort&&0<=u.query.sort.indexOf("lastMessage")&&(u.query=_.omit(u.query,"sort")),u.query.includeAll=!0,u.isSearchBarVisible=!(u.query.search||!u.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={MailAccountId:_.map(u.mailAccounts.rows,"id"),createdAt:n};u.query=_.merge(u.query,t)}i.on("mailInteraction:save",b),i.on("mailInteraction:update",b),i.on("mailInteractionTags:save",A),i.on("mailMessage:save",E),i.on("mailMessage:update",E),i.on("user_has_mail_interactions:save",h),i.on("user_has_mail_interactions:remove",f),p(u.query.page),0<u.setting.mailInteractionsReloadTimeout&&y()})},u.success=s,u.getMailInteractions=p,u.showMailInteraction=g,u.downloadMailInteraction=function(e,s,n){d.mailInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="mail-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadMailInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.disposeInteraction=function(e,t){var a=u.user.voicePause||u.user.chatPause||u.user.mailPause||u.user.openchannelPause||u.user.faxPause,n=!t.Account.mandatoryDisposition;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){u.user&&t.Account.mandatoryDisposition&&!a&&d.user.unpause({id:u.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:u.user,channel:"mail",interaction:t}})},u.getContactLabel=v,u.getAgentLabel=function(e){if(e.UserId)return e.UserId===u.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},u.getMailAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},u.composeMailInteraction=function(e,s){r.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{account:s,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var i=e;return d.mailAccount.send({id:s.id},i).$promise.then(function(e){if(e&&e.Messages&&e.Messages.length){if(i.attachments&&i.attachments.length)for(var n=0;n<i.attachments.length;n+=1)d.attachment.update({id:i.attachments[n].id},{MailMessageId:_.head(e.Messages).id});if(c.success({title:"Message properly sent!",msg:"Message has been sent!"}),e.closed){e.disposition=null;var t=!s.mandatoryDisposition,a=u.user.voicePause||u.user.chatPause||u.user.mailPause||u.user.openchannelPause||u.user.faxPause;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),onRemoving:function(e,n){u.user&&s.mandatoryDisposition&&!a&&d.user.unpause({id:u.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:u.user,channel:"mail",interaction:e}})}else o.$parent.vm.addInteractionTab("mail",e)}}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"MAILACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var n={channel:"mail",account:s,message:e.message,contact:e.contact};m.add(n)}})},u.openAdvancedSearch=function(){r.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{color:u.sectionColor,fields:u.advancedSearch.fields,storagePath:"home.mail"},fullscreen:!0}).then(function(e){u.isSearchBarVisible=!(e.value||!u.query.filter),e.apply&&(u.query.search=e.value,p())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},o.$on("openMailDraft",function(e,s){s.interaction?(s.interaction.isDraft=!0,g(null,s.interaction)):r.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{account:s.account,message:s.content,type:"draft",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var i=e;return d.mailAccount.send({id:s.account.id},i).$promise.then(function(e){if(m.remove(s.id),e&&e.Messages&&e.Messages.length){if(i.attachments&&i.attachments.length)for(var n=0;n<i.attachments.length;n+=1)d.attachment.update({id:i.attachments[n].id},{MailMessageId:_.head(e.Messages).id});if(c.success({title:"Message properly sent!",msg:"Message has been sent!"}),e.closed){e.disposition=null;var t=!s.account.mandatoryDisposition,a=u.user.voicePause||u.user.chatPause||u.user.mailPause||u.user.openchannelPause||u.user.faxPause;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),onRemoving:function(e,n){u.user&&s.account.mandatoryDisposition&&!a&&d.user.unpause({id:u.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:u.user,channel:"mail",interaction:e}})}else o.$parent.vm.addInteractionTab("mail",e)}}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"MAILACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var n={id:s.id,channel:"mail",account:e.account,message:e.message};m.update(n)}})}),o.$on("$destroy",function(){i.removeAllListeners("mailMessage:save"),i.removeAllListeners("mailMessage:update"),i.removeAllListeners("mailInteraction:save"),i.removeAllListeners("mailInteractionTags:save"),i.removeAllListeners("mailInteraction:update"),i.removeAllListeners("user_has_mail_interactions:save"),i.removeAllListeners("user_has_mail_interactions:remove"),u.interactionsInterval&&n.cancel(u.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeMailController",e)}(),function(){"use strict";function e(t,a,e,i,n,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.contacts=e||{count:0,rows:[]}}function c(e,n){l.searchInProgress=!0,s.cmContact.describe({id:l.query.ListId}).$promise.then(function(e){return _(e.toJSON()).omit("UserId").values().map(function(e){return function(e){var n={name:_.startCase(e.displayName),column:e.columnName,options:{}};if(e.custom)switch(e.custom.type){case"text":n.type="text";break;case"select":n.type="multiselect",n.values=_.map(JSON.parse(e.custom.values),function(e,n){return{id:n,name:e.value,value:e.value}}),n.options.field="name";break;case"switch":n.type="select",n.values=[{id:1,translate:"DASHBOARDS.ENABLED"},{id:0,translate:"DASHBOARDS.DISABLED"}],n.options.excludedOperators=["$ne"];break;case"number":n.type="number";break;case"datetime":n.type="date"}else switch(e.columnName){case"dateOfBirth":n.type="date";break;case"CompanyId":n.name="Company",n.type="autocomplete",n.options.route={model:"cmCompany",action:"get",params:{fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;case"ListId":n.name="List",n.type="autocomplete",n.options.route={model:"user",action:"getLists",params:{id:l.currentUser.id,fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;default:_.includes(e.type.toLowerCase(),"int")?n.type="number":_.includes(e.type.toLowerCase(),"date")?n.type="date":n.type="text"}return n}(e)}).value()}).then(function(e){l.advancedSearch.fields=e;var n=_.findIndex(e,function(e){return _.startsWith(e.column,"cf_")})||e.length-1;n<0&&(n=e.length),l.advancedSearch.fields.splice(n,0,{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"DESCRIBE_CM_CONTACTS",msg:e.data?JSON.stringify(e.data.message):e.toString()})}),e||(l.query.page=1),l.query.offset=(l.query.page-1)*l.query.limit;var t=o.localStorage.getItem("motion2.home.mycontacts:"+l.currentUser.id);(t=t?JSON.parse(t):{}).query=l.query,o.localStorage.setItem("motion2.home.mycontacts:"+l.currentUser.id,JSON.stringify(t)),l.query.search&&(l.advancedQuery=_.omit(l.query,"id")),l.promise=l.query.search?s.cmContact.get(l.advancedQuery,d).$promise:s.user.getContacts(l.query,d).$promise}l.currentUser=n.getCurrentUser(),l.lists={},l.contacts={count:0,rows:[]},l.tags={count:0,rows:[]},l.query={includeAll:!0,id:l.currentUser.id,sort:"-updatedAt",limit:10,page:1},l.advancedSearch={fields:[]},l.sectionColor="red",l.getContacts=c,l.refreshContacts=function(){c()},l.mergeContact=function(e,n){i.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.duplicateContact=function(e,n){i.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.openContact=function(e,n){a.$parent.vm.addContactTab(n)},l.call=a.$parent.vm.call,l.onInit=function(){s.cmList.get({fields:"id,name,dialPrefix",sort:"name",nolimit:!0}).$promise.then(function(e){return l.lists=e||{count:0,rows:[]},l.listsMap=_.keyBy(l.lists.rows,"id"),s.tag.get({sort:"name"}).$promise}).then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"List",key:"ListId",type:"multiselect",label:"CONTACTMANAGER.SELECT_LIST",options:l.lists.rows,clearAll:!1},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:l.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=o.localStorage.getItem("motion2.home.mycontacts:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query),_.isEmpty(l.lists.rows)?l.query.ListId=[]:_.isEmpty(l.query.ListId)&&(l.query.ListId=_(l.lists.rows).map("id").take().value()))}catch(e){console.error(e)}else l.query.ListId=_.map(l.lists.rows,"id");l.isSearchBarVisible=!(l.query.search||!l.query.filter),c()})},l.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{color:l.sectionColor,fields:l.advancedSearch.fields,storagePath:"home.mycontacts"},fullscreen:!0}).then(function(e){l.isSearchBarVisible=!(e.value||!l.query.filter),e.apply&&(l.query.search=e.value?e.value+="||User:=$eq["+l.currentUser.id+"]":e.value,c())}).catch(function(e){r.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}e.$inject=["$document","$scope","$timeout","$mdDialog","Auth","api","$window","toasty"],angular.module("app.dashboards").controller("AgentHomeMyContactsController",e)}(),function(){"use strict";function e(i,n,s,o,a,t,r,e,l,d,c){var m=this;function u(e){!m.reloadingInteractions&&0<m.setting.openchannelInteractionsReloadTimeout&&E(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.openchannelInteractions=e||{count:0,rows:[]};for(var n=0;n<m.openchannelInteractions.rows.length;n+=1)g(m.openchannelInteractions.rows[n])}function p(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.openchannel:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.openchannel:"+m.user.id,JSON.stringify(t)),m.promise=r.openchannelInteraction.get(m.query,u).$promise}function g(e){"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function v(e){var n=_.find(m.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function h(e){var n=_.find(m.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(e){if(e){var n=_.find(m.openchannelInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.openchannelInteractions.rows=_.orderBy(m.openchannelInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===m.setting.openchannelInteractionsReloadTimeout&&p(m.query.page)}}function b(e){if(e){var n=_.find(m.openchannelInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function A(e){if(e&&!e.secret){var n=_.find(m.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function E(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},1e3*m.setting.openchannelInteractionsReloadTimeout)}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.openchannelInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"OpenchannelAccountId",type:"multiselect",options:{route:{model:"user",action:"getOpenchannelAccounts",params:{id:m.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},m.sectionColor="amber",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("openchannelAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.openchannelAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"OpenchannelAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.openchannelAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.openchannel:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.openchannelAccounts.rows)?m.query.OpenchannelAccountId=[]:_.isEmpty(m.query.OpenchannelAccountId)&&(m.query.OpenchannelAccountId=_(m.openchannelAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={OpenchannelAccountId:_.map(m.openchannelAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("openchannelInteraction:save",f),l.on("openchannelInteraction:update",f),l.on("openchannelInteractionTags:save",b),l.on("openchannelMessage:save",A),l.on("openchannelMessage:update",A),l.on("user_has_openchannel_interactions:save",v),l.on("user_has_openchannel_interactions:remove",h),p(m.query.page),0<m.setting.openchannelInteractionsReloadTimeout&&E()})},m.success=u,m.getOpenchannelInteractions=p,m.showOpenchannelInteraction=function(e,n){i.$parent.vm.addInteractionTab("openchannel",n)},m.downloadOpenchannelInteraction=function(e,s,n){r.openchannelInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="openchannel-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadOpenchannelInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"openchannel",interaction:t}})},m.getContactLabel=g,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},m.getOpenchannelAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},m.composeOpenchannelInteraction=function(e,a){s.show({controller:"ComposeOpenchannelInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.openchannelAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$parent.vm.addInteractionTab("openchannel",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"OPENCHANNELACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var t={channel:"openchannel",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.openchannel"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,p())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("openchannelMessage:save"),l.removeAllListeners("openchannelMessage:update"),l.removeAllListeners("openchannelInteraction:save"),l.removeAllListeners("openchannelInteractionTags:save"),l.removeAllListeners("openchannelInteraction:update"),l.removeAllListeners("user_has_openchannel_interactions:save"),l.removeAllListeners("user_has_openchannel_interactions:remove"),m.interactionsInterval&&n.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeOpenchannelController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e,n,t){d.license=e,d.setting=n,d.plugin=t}d.currentUser=o.getCurrentUser(),d.plugin={},d.onInit=c,d.getTrustedURL=function(){return s.trustAsResourceUrl(d.plugin.agentUrl)},c(),n.$on("pluginUpdated",function(e,n){d.plugin=n.plugin})}e.$inject=["$document","$scope","$timeout","$mdDialog","$stateParams","$sce","Auth","api","$window"],angular.module("app.dashboards").controller("AgentHomePluginsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(){d.agentsQuery.offset=(d.agentsQuery.page-1)*d.agentsQuery.limit,l.update("motion2.home.presence.agents:"+d.currentUser.id,d.agentsQuery,"query"),i.user.getPresence(d.agentsQuery).$promise.then(function(e){d.agents={count:e.count,rows:_.filter(e.rows,function(e){return e.id!==d.currentUser.id})}}).catch(function(){r.error({title:t.instant("DASHBOARDS.AGENT_PRESENCE"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")})})}function m(){d.queuesQuery.offset=(d.queuesQuery.page-1)*d.queuesQuery.limit,l.update("motion2.home.presence.queues:"+d.currentUser.id,d.queuesQuery,"query"),i.voiceQueue.get(d.queuesQuery).$promise.then(function(e){return d.voiceQueues=e||{rows:[],count:0},i.rpc.getVoiceQueuesChannels().$promise.then(function(e){e.rows.forEach(function(e){var n=_.find(d.voiceQueues.rows,["name",e.name]);n&&(n.calls||(n.calls=[]),n.calls.push(e))})})}).catch(function(){r.error({title:t.instant("VOICE.VOICEQUEUES"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")})})}function u(e){return 0===d.selectedTab?e:"xcallyQueueExtension"+e}function p(e,n,t,a){var i=_.find(d.agents.rows,["id",e]);i&&(i.status=!1===n?"offline":a?"pause":"unavailable"===t?t:_.includes(["idle","unknown","ringing",null,void 0],t)?"online":"busy")}function g(e){e.id!==d.currentUser.id&&p(e.id,e.online,e.voiceStatus,e.voicePause)}d.currentUser=s.getCurrentUser(),d.agents={count:0,rows:[]},d.agentsQuery={fields:"id,name,internal,online",role:"agent",sort:"name",limit:10,page:1},d.queuesQuery={fields:"id,name",type:"inbound",sort:"name",limit:10,page:1},d.onAgentsTabSelection=function(){if(d.agentsQuery.filter||d.agentsQuery.teams||d.agentsQuery.queues)return;_.merge(d.agentsQuery,l.get("motion2.home.presence.agents:"+d.currentUser.id,"query")),d.isSearchBarVisible=!!d.agentsQuery.filter,a.all([a(function(n,e){i.team.get({fields:"id,name",sort:"name",nolimit:!0}).$promise.then(function(e){d.teams=e||{rows:[],count:0},n()}).catch(function(){r.error({title:t.instant("STAFF.TEAMS"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),e()})}),a(function(n,e){i.voiceQueue.get({fields:"id,name",type:"inbound",sort:"name",nolimit:!0}).$promise.then(function(e){d.queues=e||{rows:[],count:0},n()}).catch(function(){r.error({title:t.instant("VOICE.VOICEQUEUES"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),e()})})]).then(function(){d.quickFilters=[{name:"Team",key:"teams",type:"multiselect",label:"DASHBOARDS.SELECT_TEAM",options:d.teams.rows},{name:"Queue",key:"queues",type:"multiselect",label:"DASHBOARDS.SELECT_QUEUE",options:d.queues.rows}],c()}).catch(function(){r.error({title:t.instant("DASHBOARDS.AGENT_PRESENCE"),msg:t.instant("DASHBOARDS.ERRORS.FAILED_INITIALIZATION")})})},d.onQueuesTabSelection=function(){if(d.queuesQuery.filter)return;_.merge(d.queuesQuery,l.get("motion2.home.presence.queues:"+d.currentUser.id,"query")),d.isSearchBarVisible=!!d.queuesQuery.filter,m()},d.getAgents=c,d.getVoiceQueues=m,d.originateCall=function(e){n.$broadcast("webrtc::call",{target:u(e)})},d.transferCall=function(e){n.$broadcast("webrtc::transfer",{target:u(e)})},o.on("user:presence",function(e){if(e.id===d.currentUser.id)return;p(e.id,e.online,e.voiceStatus,e.voicePause)}),o.on("user:update",g),o.on("voice_queue_presence:save",function(e){if(!d.voiceQueues&&d.voiceQueues.rows)return;var n=_.find(d.voiceQueues.rows,["name",e.name]);if(!n)return;n.calls||(n.calls=[]);if(_.some(n.calls,["uniqueid",e.uniqueid]))return;n.calls.push(e)}),o.on("voice_queue_presence:remove",function(e){var n=_.find(d.voiceQueues.rows,["name",e.name]);if(!n)return;_.remove(n.calls,["uniqueid",e.uniqueid])}),e.$on("$destroy",function(){o.removeListener("user:update",g),o.removeAllListeners("user:presence"),o.removeAllListeners("voice_queue_presence:save"),o.removeAllListeners("voice_queue_presence:remove")})}e.$inject=["$scope","$rootScope","$translate","$q","api","Auth","socket","toasty","localStorageManager"],angular.module("app.dashboards").controller("AgentHomePresenceController",e)}(),function(){"use strict";function e(e,t,n,a,o,i){var s=this;function r(e){s.searchInProgress=!1,s.voiceRecordings=e||{count:0,rows:[]}}function l(){s.searchInProgress=!0,s.query.offset=(s.query.page-1)*s.query.limit;var e={query:s.query};t.localStorage.setItem("motion2.home.recordings:"+s.currentUser.id,JSON.stringify(e)),s.promise=a.voiceRecording.get(s.query,r).$promise}s.currentUser=i.getCurrentUser(),s.voiceRecordings={},s.table="voiceRecordings",s.query={UserId:s.currentUser.id,fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,rating,audio,transcribeStatus,UserId",sort:"-updatedAt",limit:10,page:1,type:null},s.downloadfile=function(i,e){return a.voiceRecording.download({id:i.id,exists:!0}).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download",i.uniqueid+i.format),a.click()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.downloadtranscribe=function(s,e){return a.voiceRecording.downloadTranscribe({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.success=r,s.getVoiceRecordings=l,s.onInit=function(){s.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Type",key:"type",type:"select",label:"VOICE.SELECT_TYPE",customOptions:[{value:"internal",translate:"VOICE.INTERNAL"},{value:"inbound",translate:"VOICE.INBOUND"},{value:"outbound",translate:"VOICE.OUTBOUND"},{value:"dialer",translate:"VOICE.DIALER"},{value:null,translate:"VOICE.ALL"}]}];var e=t.localStorage.getItem("motion2.home.recordings:"+s.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(s.query=_.merge(s.query,e.query))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};s.query.createdAt=n}s.isSearchBarVisible=!!s.query.filter,l()}}e.$inject=["$scope","$window","$timeout","api","toasty","Auth"],angular.module("app.dashboards").controller("AgentHomeRecordingsController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,r,n){var l=this;function d(e){l.searchInProgress=!1,l.scheduledCalls=e||{count:0,rows:[]}}l.currentUser=n.getCurrentUser(),l.priorities=["Lowest","Low","Medium","High","Highest"],l.crudPermissions={readOnly:!1,canEdit:!0,canDelete:!0},l.scheduledCalls={},l.query={id:l.currentUser.id,fields:"id,phone,scheduledat,recallme,priority,UserId,OwnerId",sort:"scheduledat",limit:10,page:1},l.queueCampaigns={rows:[],count:0},l.success=d,l.getScheduledCalls=function(){l.searchInProgress=!0,l.query.id=l.currentUser.id,l.query.includeAll=!0,l.query.offset=(l.query.page-1)*l.query.limit;var e={query:l.query};t.localStorage.setItem("motion2.home.scheduled:"+l.currentUser.id,JSON.stringify(e)),l.promise=r.user.getScheduledCalls(l.query,d).$promise},l.onInit=function(){r.user.getQueues({id:n.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){l.queueCampaigns=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"Start Date",key:"scheduledat",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Campaigns",key:"VoiceQueueId",type:"multiselect",label:"MOTIONDIALER.SELECT_CAMPAIGN",options:l.queueCampaigns.rows}]}).catch(function(e){console.error(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.scheduled:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.omit(e.query,["filter"]))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};l.query.scheduledat=n}l.getScheduledCalls()})},l.isDateBeforeToday=function(e){return moment(e).isBefore(moment())},l.createOrEditQueueCampaignHopper=function(e,n){i.show({controller:"CreateOrEditHopperVoiceQueueIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:null,hopper:n,hoppers:l.scheduledCalls.rows,license:null,setting:null,crudPermissions:l.crudPermissions}})},l.deleteConfirm=function(n,e){var t=i.confirm().title("Are you sure want to delete the scheduled call?").htmlContent("<b>Scheduled call</b> will be deleted.").ariaLabel("delete scheduled call").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){var e;e=n,r.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(l.scheduledCalls.rows,{id:e.id}),l.scheduledCalls.count-=1,l.scheduledCalls.rows.length||l.getScheduledCalls(),o.success({title:"Scheduled call deleted!",msg:e.name?"Scheduled call has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETE_HOPPER"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETE_HOPPER",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})};var c=!0,m=1;e.$watch("vm.query.filter",function(e,n){c?a(function(){c=!1}):(n||(m=l.query.page),e!==n&&(l.query.page=1),e||(l.query.page=m),l.getScheduledCalls())})}e.$inject=["$scope","$window","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.dashboards").controller("AgentHomeScheduledCallsController",e)}(),function(){"use strict";function e(i,n,s,o,a,t,r,e,l,d,c){var m=this;function u(e){!m.reloadingInteractions&&0<m.setting.smsInteractionsReloadTimeout&&E(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.smsInteractions=e||{count:0,rows:[]};for(var n=0;n<m.smsInteractions.rows.length;n+=1)g(m.smsInteractions.rows[n])}function p(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.sms:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.sms:"+m.user.id,JSON.stringify(t)),m.promise=r.smsInteraction.get(m.query,u).$promise}function g(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function v(e){var n=_.find(m.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function h(e){var n=_.find(m.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(e){if(e){var n=_.find(m.smsInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.smsInteractions.rows=_.orderBy(m.smsInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===m.setting.smsInteractionsReloadTimeout&&p(m.query.page)}}function b(e){if(e){var n=_.find(m.smsInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function A(e){if(e&&!e.secret){var n=_.find(m.smsInteractions.rows,{id:e.SmsInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function E(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},1e3*m.setting.smsInteractionsReloadTimeout)}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.smsInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"SmsAccountId",type:"multiselect",options:{route:{model:"user",action:"getSmsAccounts",params:{id:m.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},m.sectionColor="orange",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("smsAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.smsAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"SmsAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.smsAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.sms:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.smsAccounts.rows)?m.query.SmsAccountId=[]:_.isEmpty(m.query.SmsAccountId)&&(m.query.SmsAccountId=_(m.smsAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={SmsAccountId:_.map(m.smsAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("smsInteraction:save",f),l.on("smsInteraction:update",f),l.on("smsInteractionTags:save",b),l.on("smsMessage:save",A),l.on("smsMessage:update",A),l.on("user_has_sms_interactions:save",v),l.on("user_has_sms_interactions:remove",h),p(m.query.page),0<m.setting.smsInteractionsReloadTimeout&&E()})},m.success=u,m.getSmsInteractions=p,m.showSmsInteraction=function(e,n){i.$parent.vm.addInteractionTab("sms",n)},m.downloadSmsInteraction=function(e,s,n){r.smsInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="sms-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadSmsInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"sms",interaction:t}})},m.getContactLabel=g,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},m.getSmsAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},m.composeSmsInteraction=function(e,a){s.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.smsAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$parent.vm.addInteractionTab("sms",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SMSACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var t={channel:"sms",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.sms"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,p())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("smsMessage:save"),l.removeAllListeners("smsMessage:update"),l.removeAllListeners("smsInteraction:save"),l.removeAllListeners("smsInteractionTags:save"),l.removeAllListeners("smsInteraction:update"),l.removeAllListeners("user_has_sms_interactions:save"),l.removeAllListeners("user_has_sms_interactions:remove"),m.interactionsInterval&&n.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeSmsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.voiceCalls=e||{count:0,rows:[]}}function c(){l.searchInProgress=!0,l.query.offset=(l.query.page-1)*l.query.limit;var e={query:l.query};s.localStorage.setItem("motion2.home.voice:"+l.currentUser.id,JSON.stringify(e)),l.promise=a.voiceCallReport.get(l.query,d).$promise}l.currentUser=e.getCurrentUser(),l.voiceCalls={},l.table="voiceCalls",l.query={UserId:l.currentUser.id,fields:"id,type,uniqueid,tag,starttime,endtime,source,destination,userDisposition,userSecondDisposition,userThirdDisposition,note,duration,billableseconds,answertime",sort:"-updatedAt",limit:10,page:1,type:null},l.success=d,l.getVoiceCalls=c,l.onInit=function(){return a.tag.get({sort:"name"}).$promise.then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Type",key:"type",type:"select",label:"VOICE.SELECT_TYPE",customOptions:[{value:"internal",translate:"VOICE.INTERNAL"},{value:"inbound",translate:"VOICE.INBOUND"},{value:"outbound",translate:"VOICE.OUTBOUND"},{value:"dialer",translate:"VOICE.DIALER"},{value:null,translate:"VOICE.ALL"}]}]}).catch(function(e){i.error({title:"Init error",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}),l.tags={count:0,rows:[]}}).finally(function(){var e=s.localStorage.getItem("motion2.home.voice:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};l.query.createdAt=n}l.isSearchBarVisible=!!l.query.filter,c()})},l.showDetails=function(e){n.show({controller:"AgentHomeVoiceDetailsController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/voice/details/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{call:e}})}}e.$inject=["$mdDialog","$document","api","toasty","Auth","$window","$scope","$timeout"],angular.module("app.dashboards").controller("AgentHomeVoiceController",e)}(),function(){"use strict";function e(e,n){this.call=n,this.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","call"],angular.module("app.dashboards").controller("AgentHomeVoiceDetailsController",e)}(),function(){"use strict";function e(i,n,s,o,a,t,r,e,l,d,c){var m=this;function u(e){!m.reloadingInteractions&&0<m.setting.whatsappInteractionsReloadTimeout&&E(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.whatsappInteractions=e||{count:0,rows:[]};for(var n=0;n<m.whatsappInteractions.rows.length;n+=1)g(m.whatsappInteractions.rows[n])}function p(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.whatsapp:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.whatsapp:"+m.user.id,JSON.stringify(t)),m.promise=r.whatsappInteraction.get(m.query,u).$promise}function g(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function v(e){var n=_.find(m.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function h(e){var n=_.find(m.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(e){if(e){var n=_.find(m.whatsappInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.whatsappInteractions.rows=_.orderBy(m.whatsappInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===m.setting.whatsappInteractionsReloadTimeout&&p(m.query.page)}}function b(e){if(e){var n=_.find(m.whatsappInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function A(e){if(e&&!e.secret){var n=_.find(m.whatsappInteractions.rows,{id:e.WhatsappInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function E(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},1e3*m.setting.whatsappInteractionsReloadTimeout)}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.whatsappInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"WhatsappAccountId",type:"multiselect",options:{route:{model:"user",action:"getWhatsappAccounts",params:{id:m.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},m.sectionColor="lime-A700",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("whatsappAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.whatsappAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"WhatsappAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.whatsappAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.whatsapp:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.whatsappAccounts.rows)?m.query.WhatsappAccountId=[]:_.isEmpty(m.query.WhatsappAccountId)&&(m.query.WhatsappAccountId=_(m.whatsappAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={WhatsappAccountId:_.map(m.whatsappAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("whatsappInteraction:save",f),l.on("whatsappInteraction:update",f),l.on("whatsappInteractionTags:save",b),l.on("whatsappMessage:save",A),l.on("whatsappMessage:update",A),l.on("user_has_whatsapp_interactions:save",v),l.on("user_has_whatsapp_interactions:remove",h),p(m.query.page),0<m.setting.whatsappInteractionsReloadTimeout&&E()})},m.success=u,m.getWhatsappInteractions=p,m.showWhatsappInteraction=function(e,n){i.$parent.vm.addInteractionTab("whatsapp",n)},m.downloadWhatsappInteraction=function(e,s,n){r.whatsappInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="whatsapp-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadWhatsappInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"whatsapp",interaction:t}})},m.getContactLabel=g,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},m.getWhatsappAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},m.composeWhatsappInteraction=function(e,a){s.show({controller:"ComposeWhatsappInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.whatsappAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$parent.vm.addInteractionTab("whatsapp",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"WHATSAPPACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var t={channel:"whatsapp",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.whatsapp"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,p())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("whatsappMessage:save"),l.removeAllListeners("whatsappMessage:update"),l.removeAllListeners("whatsappInteraction:save"),l.removeAllListeners("whatsappInteractionTags:save"),l.removeAllListeners("whatsappInteraction:update"),l.removeAllListeners("user_has_whatsapp_interactions:save"),l.removeAllListeners("user_has_whatsapp_interactions:remove"),m.interactionsInterval&&n.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeWhatsappController",e)}(),function(){"use strict";function e(e,n){var t=this;t.setting={},t.messages={count:0,rows:[]},t.showInteraction=!1,t.init=function(e,n){t.setting=n,t.tab=e,t.tab.saved=!0},t.getTrustedURL=function(){return n.trustAsResourceUrl(t.tab.src)}}e.$inject=["$scope","$sce"],angular.module("app.dashboards").controller("AgentGeneralIframeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v){var h=this,f=25,b=1024*f*1024;function A(){var e=h.user.voicePause||h.user.chatPause||h.user.mailPause||h.user.openchannelPause||h.user.faxPause,n=!h.tab.interaction.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(t.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(){h.user&&h.interaction.Account.mandatoryDisposition&&!e&&l.user.unpause({id:h.user.id}).$promise.catch(function(e){d.error(e.data?e.data.message:e.toString())})},locals:{user:h.user,channel:h.tab.channel,interaction:h.tab.interaction}}).then(function(e){h.tab.saved=Boolean(e),e&&a.$parent.$parent.$parent.vm.closeTab(h.tab)})}function E(e,n){h.tab.message=n,i.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:h.tab.message,type:e,interaction:h.interaction},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){if(e)if(e.message&&e.message.savedAsDraft)h.draft?p.update({id:h.draft.id,channel:"mail",account:h.account,message:e.message,contact:h.contact,interaction:h.interaction}):p.add({channel:"mail",account:h.account,message:e.message,contact:h.contact,interaction:h.interaction}),h.draft=p.getByInteraction(h.tab.interaction.id);else{var n=e;n&&S(n),n.Interaction&&h.interaction&&h.interaction.id&&(n.Interaction.id=h.interaction.id,l.mailInteraction.update(n.Interaction).$promise.then(function(e){e&&e.closed?(h.tab.saved=!0,h.interaction.closed=!0,A()):null!==n.Interaction.substatus&&(h.tab.saved=!0,h.tab.interaction.substatus=n.Interaction.substatus,a.$parent.$parent.$parent.vm.closeTab(h.tab))}).catch(function(e){d.error(e.data?e.data.message:e.toString())}))}}).finally(function(){h.tab.isDraft=!1})}function y(){"mail"!==h.tab.channel&&n(function(){var e=angular.element(t.find("md-content[name*='interaction-content-"+h.tab.id+"']"));e&&e[0]&&(e[0].scrollTop=e[0].scrollHeight)},0)}function S(i){if(i)return i["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"]=h.interaction["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"],i[_.capitalize(h.tab.channel)+"InteractionId"]=h.interaction.id,i.UserId=h.user.id,i.ContactId=h.interaction.ContactId,i.direction="out",i.secret=Boolean(h.tab.spy||i.secret),l[h.tab.channel+"Message"].save(i).$promise.then(function(e){if(e&&e.id&&!_.isEmpty(i.attachments)){for(var n=[],t=0;t<i.attachments.length;t++){var a=i.attachments[t];a.MailMessageId?n.push(l.attachment.clone({id:a.id},{name:a.name,basename:a.basename,type:a.type,MailMessageId:e.id}).$promise):n.push(l.attachment.update({id:a.id},{MailMessageId:e.id}).$promise)}return s.all(n)}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:SENDMESSAGE",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){"mail"===h.tab.channel&&i.isDraft&&(p.removeByInteraction(h.interaction.id),h.draft=null),h.tab.areaText="",y()})}function T(e){switch(h.tab.channel){case"mail":h.draft.content.originalMessage=e?_.find(h.interaction.Messages,["id",e]):h.interaction.Messages[h.interaction.Messages.length-1],E(h.draft.type,h.draft.content)}}function I(e){h.journeyIsLoading=!0;var n=_.merge(h.journeyOptions,{id:h.contact.id,offset:e||0});return g.get(h.journey,n).then(function(e){h.journey=e.journey,h.canLoadMoreJourney=e.loadMore}).finally(function(){h.journeyIsLoading=!1})}h.showFooter=!1,h.BTNLoadMore=0,h.showInteraction=!1,h.user=c.getCurrentUser(),h.detectBrowser=u.detectBrowser(),h.journey=[],h.acceptedMessages=[],h.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:b,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},h.ngFlow={flow:{}},h.selectedMailShowDetails={},h.selectedMailShowSystemMessage={},h.setting={},h.ctrlMethods={},h.embedOptions={fontSmiley:!0,sanitizeHtml:!0,emoji:!0,link:!0,linkTarget:"_blank"},h.journeyOptions=g.getQuery(),h.quickFilters=g.getQuickFilters(),h.init=function(e,n){h.tab=e,h.tab.saved=!0,h.tab.badges=0,h.setting=n||{},h.tab&&h.tab.channel&&h.tab.interaction&&(h.interaction=h.tab.interaction,l[h.tab.channel+"Interaction"].get({id:h.tab.interaction.id,includeAll:!0}).$promise.then(function(e){return e&&(h.interaction=e,h.tab.interaction=e),h.tab.saved=h.interaction.closed,h.queryMessage={id:h.interaction.id,includeAll:!0},"mail"===h.tab.channel?(h.queryMessage.sort="-id",h.queryMessage.offset=0,h.queryMessage.limit=3,h.queryMessage.inlineCss=!0):(h.queryMessage.sort="id",h.queryMessage.nolimit=!0),l[h.tab.channel+"Interaction"].getMessages(h.queryMessage).$promise}).then(function(e){return e&&(h.BTNLoadMore=e.count-h.queryMessage.limit),h.messages=e||{count:0,rows:[]},l["chat"===h.tab.channel?"chatWebsite":h.tab.channel+"Account"].get({id:h.interaction["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"]}).$promise}).then(function(e){if(h.account=e,h.tab.title=h.account.key||h.account.name,h.interaction.ContactId)return l.cmContact.get({id:h.interaction.ContactId}).$promise}).then(function(e){return e&&(h.contact=e),h.showInteraction=!0,h.contact?h.tab.title+=" - "+(h.user.privacyEnabled?v.mask(h.contact.firstName):h.contact.firstName):h.tab.title+=" - "+r.instant(h.tab.channel.toUpperCase()+".UNKNOWN"),l.user.get({fields:"id,fullname",nolimit:!0}).$promise}).then(function(e){h.users=e||{count:0,rows:[]},h.usersMap=_.mapValues(_.keyBy(h.users.rows,"id"),"fullname")}).then(function(){if(h.tab.channel&&h.interaction)return l.user["add"+_.upperFirst(h.tab.channel)+"Interactions"]({id:h.user.id,ids:[h.interaction.id]})}).then(function(){return l.mailSubstatus.get({sort:"name",nolimit:!0}).$promise}).then(function(e){h.subStatuses=e||{count:0,rows:[]}}).catch(function(){h.showInteraction=!0}).finally(function(){h.contact&&I(),function(){switch(h.user.role){case"admin":return h.downloadPermissions={attachments:!0,interactions:!0};case"agent":return h.downloadPermissions={attachments:h.user.downloadAttachments,interactions:h.user.downloadOmnichannelInteractions};case"user":l.userProfile.get({id:h.user.userProfileId,fields:"downloadAttachments,downloadOmnichannelInteractions"}).$promise.then(function(e){h.downloadPermissions={attachments:e.downloadAttachments,interactions:e.downloadOmnichannelInteractions}}).catch(function(){h.downloadPermissions={attachments:!1,interactions:!1}})}}(),function(){if(!h.tab.spy&&!h.interaction.closed){var t=[];if(h.messages.rows.forEach(function(e){if("in"===e.direction&&!e.read){var n=0===t.length;t.push(l[h.tab.channel+"Message"].accept({id:e.id,UserId:h.user.id,manual:n}).$promise),h.acceptedMessages.push(e.id)}}),"mail"===h.tab.channel){var e=_(h.interaction.Messages).filter({read:!1,direction:"in"}).differenceBy(h.messages.rows,"id").value();e.forEach(function(e){t.push(l.mailMessage.accept({id:e.id,UserId:h.user.id}).$promise),h.acceptedMessages.push(e.id)})}s.all(t)}}(),y(),m.on(h.tab.channel+"Message:save",h.onMessageSave),m.on(h.tab.channel+"Message:update",h.onMessageSave),m.on(h.tab.channel+"Interaction:save",h.onInteractionSave),m.on(h.tab.channel+"Interaction:update",h.onInteractionSave),m.on("user_has_"+h.tab.channel+"_interactions:save",h.onInteractionOpen),m.on("user_has_"+h.tab.channel+"_interactions:remove",h.onInteractionClose),h.tab.areaText=h.tab.areaText?h.tab.areaText:"",h.showFooter=!0,"mail"===h.tab.channel&&(h.draft=p.getByInteraction(h.tab.interaction.id),h.tab.isDraft&&(h.tab.interaction.closed?(p.removeByInteraction(h.tab.interaction.id),h.draft=null):T()))}))},h.getLabelByMessage=function(e){var n="loading...";if(e)return"in"===e.direction?e.Contact?e.Contact.firstName||"Anonymous":n:e.UserId?h.usersMap?h.usersMap[e.UserId]:n:"System"},h.openContact=function(e,n){try{h.tab&&!h.tab.spy&&a.$parent.$parent.$parent.vm.addContactTab(n||h.contact)}catch(e){d.error({title:"ERROR OPEN CONTACT",msg:"Unable to open the contact"})}},h.openInteraction=function(e){try{if(e.MailAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("mail",e);if(e.ChatWebsiteId)return a.$parent.$parent.$parent.vm.addInteractionTab("chat",e);if(e.SmsAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("sms",e);if(e.WhatsappAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("whatsapp",e);if(e.OpenchannelAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("openchannel",e);if(e.FaxAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("fax",e)}catch(e){d.error({title:"ERROR OPEN INTERACTION",msg:"Customer Journey can't open the interaction"})}},h.disposeInteraction=A,h.tagInteraction=function(){i.show({controller:"TagInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/tag/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,skipHide:Boolean(h.tab.spy),resolve:{tags:["apiResolver",function(e){return e.resolve("tag@get",{sort:"name",nolimit:!0,fields:"id,name,color"})}]},locals:{channel:h.tab.channel,interaction:h.tab.interaction}})},h.composeMailInteraction=function(n,e){if(e.inReplyTo){var t=_.find(h.messages.rows,{messageId:e.inReplyTo});if(!t)return l.mailMessage.get({messageId:e.inReplyTo}).$promise.then(function(e){E(n,e&&e.count?e.rows[0]:void 0)}).catch(function(e){d.error(e.data?e.data.message:e.toString()),E(n,void 0)});E(n,t)}else E(n,e)},h.composeFaxInteraction=function(e){var n={to:[]};n.to.push(h.contact.fax),i.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0}).then(function(e){return l.faxAccount.send({id:h.account.id},e).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$parent.vm.addInteractionTab("fax",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()})})})},h.composeSmsInteraction=function(e,n){i.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeWhatsappInteraction=function(e,n){i.show({controller:"ComposeWhatsappInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeChatInteraction=function(e,n){i.show({controller:"ComposeChatInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/chat/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeOpenchannelInteraction=function(e,n){i.show({controller:"ComposeOpenchannelInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.transferLastMessage=function(){if(h.interaction){var e=_.findLast(h.messages.rows,function(e){return"in"===e.direction});e?i.show({controller:"TransferMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/transfer/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,interaction:h.interaction,message:e,channel:h.tab.channel},resolve:{agents:["apiResolver",function(e){var n={fields:"id,name",$id:{ne:h.user.id},role:"agent",online:!0,sort:"name",nolimit:!0};return n[h.tab.channel+"Pause"]=!1,e.resolve("user@get",n)}],queues:["apiResolver",function(e){return e.resolve(h.tab.channel+"Queue@get",{fields:"id,name",sort:"name",nolimit:!0})}]}}).then(function(e){h.tab.saved=Boolean(e),e&&a.$parent.$parent.$parent.vm.closeTab(h.tab)}):d.error({title:"Invalid transfer",msg:"Message not found!"})}},h.downloadMessage=function(s,e){h.tab.channel&&s.id&&l[h.tab.channel+"Message"].download({id:s.id,attachments:e}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=h.tab.channel+"-message"+s.id+".eml";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.downloadMessage.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.downloadInteraction=function(s,e){h.tab.channel&&s.id&&l[h.tab.channel+"Interaction"].download({id:s.id,attachments:e}).$promise.then(function(e){var n=[e.buffer],t=h.tab.channel+"-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.inteactionMessage.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.openDraft=T,h.createVidaooSession=function(e){var n={id:e.id,account:e.Account,contact:e.Contact};return l.chatInteraction.createVidaooSession(n).$promise.then(function(){d.success({title:"Start Video Call",msg:"Session properly created."})}).catch(function(){d.error({title:"Start Video Call",msg:"Unable to create session!"})})},h.reply=function(e,n){if(e&&13===e.keyCode&&e.shiftKey)return;if(e&&13!==e.keyCode)return;if(""===n.trim())return;S(function(e){var n={},t="chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId";n[t]=h.interaction[t].toString(),n[_.capitalize(h.tab.channel)+"InteractionId"]=h.interaction.id,("sms"===h.tab.channel||"whatsapp"===h.tab.channel)&&(n.phone=h.interaction.phone);e&&(n.UserId=h.user.id,n.ContactId=h.interaction.ContactId,n.body=e);return n}(n.replace(/\n$/,"")))},h.upload=function(){h.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},h.ngFlow.flow.upload()},h.fileAdded=function(e){if(e.size>b)return d.error({title:"File too big",msg:"The max allowed size is "+f+"MB"}),!1;return!0},h.fileSuccess=function(e,n){var t=JSON.parse(n),a=t.name;"chat"===h.tab.channel&&(a='<a href="'+(h.account.remote?h.account.remote:o.protocol()+"://"+o.host())+"/api/chat/interactions/"+h.interaction.id+"/attachment_download?attachId="+t.id+"&token="+h.account.token+'" target="_self">'+t.name+"</a>");S({body:a,AttachmentId:t.id})},h.onMessageSave=function(e){if(e&&h.interaction.id!=e[_.capitalize(h.tab.channel)+"InteractionId"])return;var n=!1;h.messages?n=_.find(h.messages.rows,{id:e.id}):h.messages={rows:[],count:0};n?_.merge(n,e):("mail"===h.tab.channel?h.messages.rows.unshift(e):h.messages.rows.push(e),y())},h.onInteractionSave=function(e){if(e&&h.interaction.id!==e.id)return;e.closed&&(h.tab.saved=!0);_.merge(h.interaction,e)},h.searchTextChange=function(n){var t=s.defer(),a=[],e={},i="chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId";return e.filter=n,e[i]=h.account.id,l.cannedAnswer.get(e).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},h.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:h.user,account:h.account,interaction:h.interaction,contact:h.interaction&&h.interaction.Contact?h.interaction.Contact:{}};""!==h.tab.areaText&&(h.tab.areaText+=" "),h.tab.areaText+=e(t),h.ctrlMethods.setText(h.tab.areaText)}catch(e){""!==h.tab.areaText&&(h.tab.areaText+=" "),h.tab.areaText+=n.value,h.ctrlMethods.setText(h.tab.areaText)}h.selectedItem=null,h.changeDisplayCannedAnswerInputValue()}},h.getMessagesAlignment=function(e){if(e.secret&&h.user.id!=e.UserId)return"in";switch(h.setting.messagesAlignment){case"left":return"in"==e.direction?e.direction:"out-left-aligned";case"right":return"in"==e.direction?"in-right-aligned":e.direction;default:return e.direction}},h.displayCannedAnswerInput=!1,h.changeDisplayCannedAnswerInputValue=function(){h.displayCannedAnswerInput=!h.displayCannedAnswerInput},h.setAs=function(e){h.tab.channel&&h.interaction&&h.interaction.id&&l[h.tab.channel+"Interaction"].update({id:h.interaction.id,substatus:e}).$promise.catch(function(e){d.error(e.data?e.data.message:e.toString())})},h.markAsUnread=function(){if(h.tab.channel&&h.interaction&&h.interaction.id)if(h.acceptedMessages.length)for(var e=0;e<h.acceptedMessages.length;e+=1)l[h.tab.channel+"Message"].update({id:h.acceptedMessages[e],read:!1,UserId:null});else for(var n=0;n<h.messages.rows.length;n+=1)if("in"===h.messages.rows[n].direction){h.messages.rows[n].UserId===h.user.id?l[h.tab.channel+"Message"].update({id:h.messages.rows[n].id,read:!1,UserId:null}):d.error({title:"You can't mark as unread",msg:"You are not the owner of the last message!"});break}h.tab.saved=!0,a.$parent.$parent.$parent.vm.closeTab(h.tab)},h.getAttachments=function(n){return l.attachment.get({MailMessageId:n.id}).$promise.then(function(e){e&&e.rows&&(n.attachments=e.rows)}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},h.getAttachment=function(i){return l.attachment.download({id:i.id}).$promise.then(function(e){if(e){var n=new Blob([e.buffer],{type:e.type}),t=document.createElement("a"),a=window.URL.createObjectURL(n);t.href=a,t.target="_self",t.download=i.name,document.body.appendChild(t),t.click(),setTimeout(function(){document.body.removeChild(t),window.URL.revokeObjectURL(a)},100)}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},h.htmlToPlaintext=function(e){return e?String(e).replace(/<[^>]+>/gm,""):""},h.onInteractionOpen=function(e){var n;h.interaction.id==e[_.upperFirst(h.tab.channel)+"InteractionId"]&&(h.interaction.Users&&(n=_.find(h.interaction.Users,{id:e.UserId})),n||h.interaction.Users.push({id:e.UserId}))},h.onInteractionClose=function(e){h.interaction.id==e[_.upperFirst(h.tab.channel)+"InteractionId"]&&h.interaction.Users&&_.remove(h.interaction.Users,{id:e.UserId})},h.getCustomerJourney=I,h.loadNextPage=function(){var t=s.defer();if(h.queryMessage)return h.queryMessage.offset=h.messages.rows.length,l[h.tab.channel+"Interaction"].getMessages(h.queryMessage).$promise.then(function(e){for(var n=0;n<e.rows.length;n+=1)h.messages.rows.push(e.rows[n]),h.interaction.closed||"in"!==e.rows[n].direction||e.rows[n].read||(l[h.tab.channel+"Message"].accept({id:e.rows[n].id,UserId:h.user.id}),h.acceptedMessages.push(e.rows[n].id));return 0<e.rows.length&&(h.BTNLoadMore=h.BTNLoadMore-e.rows.length),t.resolve(e)}).catch(function(e){return t.reject(e)});return t.reject()},h.interactionTimelineOptions={scrollEl:"#interaction-content"},h.loadMoreJourney=function(){return s(function(e){var n=h.journey.length;return e(I(n))})},h.journeyTimelineOptions={scrollEl:"#journey-content"},a.$on("$destroy",function(){m.removeAllListeners(h.tab.channel+"Message:save"),m.removeAllListeners(h.tab.channel+"Message:update"),m.removeAllListeners(h.tab.channel+"Interaction:save"),m.removeAllListeners(h.tab.channel+"Interaction:update"),m.removeAllListeners("user_has_"+h.tab.channel+"_interactions:save"),m.removeAllListeners("user_has_"+h.tab.channel+"_interactions:remove")})}function n(a){return{scope:{ngBindHtmlUnsafe:"="},template:"<div ng-bind-html='trustedHtml'></div>",link:function(t){t.updateView=function(){var e,n=_.replace(t.ngBindHtmlUnsafe,'<div id="xm-mail-content"','<a style="cursor:pointer" class="toggle-details md-accent-color" onclick="document.getElementById(\''+(e="xm-mail-content-"+Math.floor(9999*Math.random()+1))+"').style.display='block'; this.parentNode.removeChild(this)\">See More</a><div id=\""+e+'" style="display:none"');t.trustedHtml=a.trustAsHtml(n)},t.$watch("ngBindHtmlUnsafe",function(e){t.updateView(e)})}}}e.$inject=["$cookies","$timeout","$document","$scope","$mdDialog","$q","$location","$translate","api","toasty","Auth","socket","msUtils","draftManager","customerJourneyManager","privacyManager"],n.$inject=["$sce"],angular.module("app.dashboards").directive("ngBindHtmlUnsafe",n).controller("AgentGeneralInteractionController",e)}(),function(){"use strict";angular.module("app.dashboards").factory("Emojis",function(){return{watchEmbedData:!1,sanitizeHtml:!1,fontSmiley:!1,emoji:!0,link:!0,linkTarget:"_blank",pdf:{embed:!0},image:{embed:!0},audio:{embed:!0},basicVideo:!1,gdevAuth:"xxxxxxxx",video:{embed:!1,width:null,height:null,ytTheme:"dark",details:!1,thumbnailQuality:"medium",autoPlay:!0},twitchtvEmbed:!0,dailymotionEmbed:!0,tedEmbed:!0,dotsubEmbed:!0,liveleakEmbed:!0,ustreamEmbed:!0,soundCloudEmbed:!0,soundCloudOptions:{height:160,themeColor:"f50000",autoPlay:!1,hideRelated:!1,showComments:!0,showUser:!0,showReposts:!1,visual:!1,download:!1},spotifyEmbed:!0,tweetEmbed:!0,tweetOptions:{maxWidth:550,hideMedia:!1,hideThread:!1,align:"none",lang:"en"},code:{highlight:!0,lineNumbers:!1},codepenEmbed:!0,codepenHeight:300,jsfiddleEmbed:!0,jsfiddleHeight:300,jsbinEmbed:!0,jsbinHeight:300,plunkerEmbed:!0,githubgistEmbed:!0,ideoneEmbed:!0,ideoneHeight:300}})}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,ChatAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeChatInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this,m=25,u=1024*m*1024;c.separatorKeys=[a.KEY_CODE.ENTER,a.KEY_CODE.COMMA,a.KEY_CODE.TAB],c.message={from:i.localstationid,to:_.isNil(s.to)||_.isEmpty(s.to)?[]:s.to,attachments:[]},c.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:u,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},c.ngFlow={flow:{}},c.send=function(e){1===c.message.attachments.length?c.message.to.length?(s.draft=void 0,t.hide({from:c.message.from,to:c.message.to,attach:c.message.attachments.length,attachments:c.message.attachments})):l.error("To is mandatory"):l.error("Attachment is mandatory")},c.upload=function(){c.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},c.ngFlow.flow.upload()},c.fileSuccess=function(e,n){try{(n=JSON.parse(n)).size=e.size,c.message.attachments.push(n)}catch(e){console.error(e)}},c.fileAdded=function(e){var n=["pdf","tif"];if(!_.includes(n,e.getExtension()))return l.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extensions: "+n.join()}),!1;if(e.size>u)return l.error({title:"File too big",msg:"The max allowed size is "+m+"MB"}),!1;return!0},c.getContact=function(e){var n="";e.firstName&&e.firstName!==e.fax&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.fax&&(n+=e.lastName+" ");return n+="<"+e.fax+">"},c.contactSearch=function(e){return i&&i.ListId?r.cmContact.get({ListId:i.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,fax"}).$promise.then(function(e){return e.rows}):[]},c.transformContact=function(e){var n=e;if(_.isObject(e))return e.fax;if(t=n,!/[&\/\\#,()$~%.'":;*?<>{}\s\\|a-zA-Z\pS!òàùè…_§°çéì-]/.test(t))return n;var t;return l.error("Fax "+n+" is not valid"),null},c.closeDialog=function(){s.draft=c.message,t.cancel()}}e.$inject=["$cookies","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q"],angular.module("app.dashboards").controller("ComposeFaxInteractionDialogController",e)}(),function(){"use strict";function e(n,e,i,t,a,s,o,r,l,d,c,m,u,p){var g=this,v=25,h=1024*v*1024;g.currentUser=m.getCurrentUser(),g.secret="note"===r,g.hiddenCC=!0,g.hiddenBCC=!0,g.verifySmtp=!0,g.errors=[],g.separatorKeys=[t.KEY_CODE.ENTER,t.KEY_CODE.COMMA,t.KEY_CODE.TAB],g.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,MailAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},g.selectedItemChange=function(n){if(n&&n.value&&g.ckEditorInstance)try{var e=_.template(n.value),t={user:g.currentUser,account:s,interaction:u,contact:u&&u.Contact?u.Contact:{}};g.ckEditorInstance.insertHtml(e(t))}catch(e){console.error(e),g.ckEditorInstance.insertHtml(n.value)}document.getElementById("html-area").focus(),g.selectedItem=null},g.onReadyEditor=function(e){try{g.ckEditorInstance=CKEDITOR.instances["html-area"]}catch(e){console.error("Unable to get Html Editor instance",e)}},_.templateSettings.interpolate=/{{([\s\S]+?)}}/g,g.fromTemplate=_.template("{{ name }} <{{ email }}>"),g.replyTemplate=_.template("On {{ date }}, at {{ time }}, {{ from }} wrote:"),g.forwardTemplate=_.template("Begin forwarded message:<br><br><strong>From:</strong> {{ from }}<br><strong>Subject:</strong> {{ subject }}<br><strong>Date:</strong> {{ date }}, at {{ time }}<br><strong>To:</strong> {{ to }}"),g.message={from:g.fromTemplate({name:s.name,email:s.email||s.Smtp.user}),to:[],cc:[],bcc:[],body:S(),type:r,attachments:[],showLastMessage:!0},g.draft=null,g.ckeditor={skin:"office2013",startupFocus:!0,language:"en",allowedContent:!0,extraPlugins:"font,colorbutton,autogrow,autoembed,autocorrect,googlethisterm,pastebase64",toolbarGroups:[{name:"styles",groups:["styles"]},{name:"clipboard",groups:["undo"]},{name:"colors",groups:["colors"]},{name:"basicstyles",groups:["basicstyles"]},{name:"paragraph",groups:["list","indent","align"]}],autoGrow_onStartup:!0,autoGrow_minHeight:g.secret?160:300,autoGrow_maxHeight:e.innerHeight-400,autocorrect_enabled:!0,disableNativeSpellChecker:!1,enterMode:CKEDITOR.ENTER_BR,font_defaultLabel:s.fontFamily?s.fontFamily.split(",")[0]:"Arial",fontSize_defaultLabel:s.fontSize||"12",removePlugins:"magicline"};for(var f=[],b=8;b<=72;b++)f.push(b+"/"+b+"pt");g.ckeditor.fontSize_sizes=f.join(";"),g.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:h,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},g.ngFlow={flow:{}},g.reply=function(e){angular.isDefined(o)&&(g.message.type="reply",g.message.to="in"===o.direction?o.from.split(","):o.to.split(","),g.message.subject=_.startsWith(o.subject,"Re:")?o.subject:"Re: "+o.subject,g.message.inReplyTo=o.messageId,g.message.body=S(),g.message.attachments=[],e&&o.cc&&(g.hiddenCC=!1,g.message.cc=o.cc.split(",")),g.message.showLastMessage=!1)},g.newMail=function(){angular.isDefined(o)&&(g.message.type="new",g.message.to=o.to?o.to.split(","):[])},g.forward=function(){if(angular.isDefined(o)){if(g.message.type="forward",g.message.subject=_.startsWith(o.subject,"Fwd:")?o.subject:"Fwd: "+o.subject,g.message.body=S(),o.Attachments&&o.Attachments.length)for(var e=0;e<o.Attachments.length;e++)g.message.attachments.push(o.Attachments[e]);g.message.showLastMessage=!1}},g.editDraft=function(){g.isDraft=!0,angular.isDefined(o)&&(o.savedAsDraft=!1,g.message=angular.copy(o),_.isEmpty(g.message.cc)||(g.hiddenCC=!1),_.isEmpty(g.message.bcc)||(g.hiddenBCC=!1))},g.send=function(e,n,t){if(!A&&g.message.to&&g.message.body)if(g.message.to.length)if(_.isEmpty(g.message.subject)){var a=i.confirm({skipHide:!0}).title("Warning").textContent("This message has no subject. Are you sure you want to send it?").ariaLabel("Warning").targetEvent(e).ok("Send Anyway").cancel("Cancel");i.show(a).then(function(){E(n,t)})}else E(n,t);else d.error("To is mandatory");A=!1},g.note=function(){g.type="note",g.secret=!0,g.message.body='<div style="font-family:'+s.fontFamily+";font-size:"+s.fontSize+'pt"><p></p></div>'},g.addNote=function(){g.message.body&&i.hide({secret:!0,body:g.message.body,attach:g.message.attachments.length,attachments:g.message.attachments})},g.upload=function(e){g.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+n.get("motion.token")},g.ngFlow.flow.upload()},g.fileSuccess=function(e,n){try{(n=JSON.parse(n)).size=e.size,g.message.attachments.push(n)}catch(e){console.error(e)}},g.removeAttachment=function(e){g.message.attachments=_.reject(g.message.attachments,{id:e.id}),e.MailMessageId||l.attachment.delete({id:e.id}).$promise.catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.attachment.delete",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.fileAdded=function(e){if(e.size>h)return d.error({title:"File too big",msg:"The max allowed size is "+v+"MB"}),!1;return!0},g.getContact=function(e){var n="";e.firstName&&e.firstName!==e.email&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.email&&(n+=e.lastName+" ");return n+="<"+e.email+">"},g.contactSearch=function(e){return s&&s.ListId?l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,email"}).$promise.then(function(e){return e.rows}):[]},g.transformContact=function(e,n){if(_.isObject(e))return(g.contact=e).email;if(_.isString(e)){if(y(e))return g.contact={email:e},e;for(var t=e.split(","),a=0;a<t.length;a+=1)y(t[a])?_.isArray(n)&&_.indexOf(n,t[a])<0&&n.push(t[a]):d.error("Email "+t[a]+" is not valid");return g.contact={email:e.split(",")[0]},null}return d.error("Email field is not valid"),null},g.saveDraft=function(){g.message.savedAsDraft=!0,g.draft=p.getByInteraction(u.id);var e={account:s,message:g.message,contact:g.contact,interaction:u};if(g.draft&&!g.isDraft){var n=i.confirm({skipHide:!0}).title(a.instant("DASHBOARDS.DRAFT_SAVE_WARNING_TITLE")).content(a.instant("DASHBOARDS.DRAFT_SAVE_WARNING_MESSAGE")).ariaLabel("Save draft").ok(a.instant("DASHBOARDS.OVERWRITE")).cancel(a.instant("DASHBOARDS.CANCEL"));i.show(n).then(function(){i.hide(e)})}else i.hide(e)},g.closeDialog=function(){i.cancel()},g.loadLastMessage=function(){g.message.body+=T(g.message.type)};var A=!(g.keyPress=function(e){13===e.keyCode&&(A=!0)});switch(r){case"reply":g.reply(!1);break;case"replyAll":g.reply(!0);break;case"forward":g.forward();break;case"draft":g.editDraft();break;case"new":g.newMail();break;case"note":g.note()}function E(e,n){var t={from:g.message.from,to:g.message.to.join(","),cc:g.message.cc.join(","),bcc:g.message.bcc.join(","),subject:g.message.subject,body:g.message.showLastMessage?g.message.body:g.message.body+T(g.message.type),inReplyTo:g.message.inReplyTo,attach:g.message.attachments.length,attachments:g.message.attachments,Interaction:{lastMsgDirection:"out",substatus:n},isDraft:g.isDraft};t.html='<div id="xm-mail-content">'+_.replace(t.body,'<div id="xm-mail-content"',"<div")+"</div>",e&&(t.Interaction.closed=!0),i.hide(t)}function y(e){return/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(e)}function S(){return'<div style="font-family:'+s.fontFamily+";font-size:"+s.fontSize+'pt">'+function(){if(_.isNil(s.template))return"";try{return _.template(s.template)({user:g.currentUser,account:s,interaction:u,contact:u&&u.Contact?u.Contact:{}})}catch(e){return console.error(e),""}}()+"</div>"}function T(e){var n='<div id="xm-mail-content"><blockquote type="cite">';switch(e){case"reply":case"replyAll":n+=g.replyTemplate({date:moment(o.createdAt).format("D MMM YYYY")||"",time:moment(o.createdAt).format("HH:mm")||"",from:_.escape(o.from)||""});break;case"forward":n+=g.forwardTemplate({date:moment(o.createdAt).format("D MMM YYYY")||"",time:moment(o.createdAt).format("HH:mm")||"",from:_.escape(o.from)||"",to:_.escape(o.to)||"",subject:_.escape(o.subject)||""})}var t,a,i=g.message.showLastMessage&&o.originalMessage?o.originalMessage.body:o.body;return n+="<br><br>",n+=(t=i?_.replace(i,'<div id="xm-mail-content"',"<div"):"",(a=t.match(/\<body[^>]*\>([^]*)\<\/body/m))?a[1]:t),n+="</blockquote></div>",e?n:""}l.mailSubstatus.get({nolimit:!0}).$promise.then(function(e){g.subStatuses=e||{count:0,rows:[]}}).catch(function(e){console.error(e)}),g.secret||l.mailAccount.verifySmtp({id:s.id}).$promise.catch(function(e){g.verifySmtp=!1,g.errors.push({message:e.data,type:e.status}),g.errors.push({message:"You can't reply or send an email. Please contact the administrator!",type:"500"})})}e.$inject=["$cookies","$window","$mdDialog","$mdConstant","$translate","account","message","type","api","toasty","$q","Auth","interaction","draftManager"],angular.module("app.dashboards").controller("ComposeMailInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,OpenchannelAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e[s.mapKey]&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e[s.mapKey]&&(n+=e.lastName+" ");return n+="<"+e[s.mapKey]+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId){var n="firstName,lastName,phone,mobile";return s.mapKey&&(n+=","+s.mapKey),l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:n}).$promise.then(function(e){return e.rows})}return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e[s.mapKey];return n},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeOpenchannelInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,SmsAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeSmsInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,WhatsappAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeWhatsappInteractionDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.errors=[],r.dispositions=[],r.interaction=angular.copy(e),r.interaction.disposition||(r.interaction.disposition=null),r.channel=i,r.apiRoute=r.channel+"Interaction",r.apiAccountRoute=r.channel+("chat"===r.channel?"Website":"Account"),r.accountProperty=_.capitalize(r.channel)+("chat"===r.channel?"Website":"Account")+"Id",r.firstLevelDisposition=null,r.mandatoryDisposition=!1,r.mandatoryDispositionPause="",r.wasUserInPause=s.voicePause||s.chatPause||s.mailPause||s.openchannelPause||s.faxPause,r.onInit=function(){var n=[],t={fields:"id,name,level,ParentId",sort:"name",nolimit:!0};t[r.accountProperty]=e[r.accountProperty],a[r.apiAccountRoute].get({id:e[r.accountProperty]}).$promise.then(function(e){return r.mandatoryDisposition=e.mandatoryDisposition,r.mandatoryDisposition&&(r.mandatoryDispositionPause=e.mandatoryDispositionPause.name),a.disposition.get(t).$promise}).then(function(e){return e.rows.length&&(n=_.concat(n,e.rows)),a.disposition.get({MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise}).then(function(e){e.rows.length&&(n=_.concat(n,e.rows))}).catch(function(e){console.error(e)}).finally(function(){r.dispositions=_.orderBy(n,["name"],["asc"]),r.mandatoryDisposition&&!r.wasUserInPause&&a.user.pause({id:s.id,type:r.mandatoryDispositionPause||"DEFAULT PAUSE"}).$promise.then(function(e){}).catch(function(e){console.error(e)})})},r.onDispositionChange=function(e){"first"===e?(r.anySecondLevelDisposition=!!r.firstLevelDisposition&&_.some(r.dispositions,["ParentId",r.firstLevelDisposition.id]),r.firstLevelDisposition||(r.secondLevelDisposition=void 0)):"second"===e&&(r.anyThirdLevelDisposition=_.some(r.dispositions,["ParentId",r.secondLevelDisposition.id]))},r.clearDispositionSelection=function(e){"second"===e?(r.secondLevelDisposition=void 0,r.thirdLevelDisposition=void 0):"third"===e&&(r.thirdLevelDisposition=void 0)},r.saveDisposition=function(){r.errors=[],r.interaction.UserId=s.id,r.interaction.closed=!0,r.interaction.closeReason="agent",r.interaction.disposition=r.firstLevelDisposition?r.firstLevelDisposition.name:null,r.interaction.secondDisposition=r.secondLevelDisposition?r.secondLevelDisposition.name:void 0,r.interaction.thirdDisposition=r.thirdLevelDisposition?r.thirdLevelDisposition.name:void 0,a[r.apiRoute]?a[r.apiRoute].update(_.pick(r.interaction,["MailAccountId","FaxAccountId","SmsAccountId","WhatsappAccountId","ChatWebsiteId","OpenchannelAccountId","closed","closeReason","disposition","secondDisposition","thirdDisposition","id","note","UserId"])).$promise.then(function(e){r.interaction=e,"mail"===r.channel&&o.removeByInteraction(r.interaction.id),t.success({title:"Interaction properly closed!",msg:"Interaction has been closed!"})}).then(function(){l(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.variable.update"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})}):l(!1)},r.closeDialog=l}e.$inject=["$mdDialog","toasty","api","interaction","channel","user","draftManager"],angular.module("app.dashboards").controller("DisposeInteractionDialogController",e)}(),function(){"use strict";function e(n,t,e,a,i,s){var o=this;function r(e){n.hide(e)}o.errors=[],o.tags=s,o.interaction=angular.copy(a),o.interaction.Tags=_.map(o.interaction.Tags,function(e){return{id:e.id,name:e.name,color:e.color}}),o.channel=i,o.autocompleteRequireMatch=!0,o.saveTag=function(){{if(o.errors=[],e[o.apiRoute])return e[o.apiRoute].addTags({id:o.interaction.id,ids:_.map(o.interaction.Tags,"id")}).$promise.then(function(){t.success({title:"Interaction properly tagged!",msg:"Interaction has been tagged!"}),a.Tags=o.interaction.Tags,r(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})});r(!1)}},o.closeDialog=r,o.apiRoute=o.channel+"Interaction"}e.$inject=["$mdDialog","toasty","api","interaction","channel","tags"],angular.module("app.dashboards").controller("TagInteractionDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r,l,d){var c=this;function m(e){n.hide(e)}c.channel=s.toLowerCase(),c.message=o,c.account=r,c.agents=l,c.queues=d,c.transfer={id:0,type:c.account.queueTransfer?"queue":"agent"},c.onTransfer=function(){m(!0),e(function(){var e="agent"===c.transfer.type?"agentNotify":c.channel+"QueueNotify";return a.rpc[e]({id:c.transfer.id,messageId:c.message.id,channel:c.channel}).$promise.then(function(){i.success({title:t.instant("DASHBOARDS.INFO"),msg:"queue"===c.transfer.type?t.instant("DASHBOARDS.NOTIFICATIONS.TRANSFER_QUEUE_EXECUTED"):t.instant("DASHBOARDS.NOTIFICATIONS.TRANSFER_AGENT_EXECUTED")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.rpc.notify"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.rpc.notify",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},5e3)},c.closeDialog=m}e.$inject=["$mdDialog","$timeout","$translate","api","toasty","channel","message","account","agents","queues"],angular.module("app.dashboards").controller("TransferMessageDialogController",e)}(),function(){"use strict";function e(i,m,s,e,u,o,r,t,n,a,l){var p=this;function d(){try{i.$parent.$parent.$parent.vm.updateLocalStorage()}catch(e){o.error({title:"ERROR UPDATE LOCAL TABS",msg:"Error updating locally stored tabs"})}}function c(t,e){var n,a,l=[],d=[],c=r.getCurrentUser();(n=c,a=m.defer(),p.project.sendUnpauseOnSubmit?u.user.unpause({id:n.id}).$promise.then(function(e){a.resolve()}).catch(function(e){console.log("err"),a.resolve()}):a.resolve(),a.promise).then(function(){return u.jscriptySessionReport.save({starttime:p.starttime,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,VoiceQueueId:p.call&&p.call["xmd-voicequeueid"]?p.call["xmd-voicequeueid"]:void 0,ProjectId:p.project&&p.project.id?p.project.id:void 0,projectname:p.project&&p.project.name?p.project.name:void 0,ContactId:p.contact&&p.contact.id?p.contact.id:void 0,completed:e}).$promise}).then(function(e){if(e)for(var n=p.getResponseSheetHeaders(),t=p.getResponseSheetRow(),a=p.getQuestionWithResponseList(),i=0;i<n.length;i+=1)if(!_.isEmpty(String(t[i]))){try{l.push(u.jscriptyQuestionReport.save({question:n[i],answer:"date"===a[i].type?moment(String(t[i])).format("YYYY-MM-DD"):"time"===a[i].type?moment(String(t[i])).format("HH:mm"):String(t[i]),questionId:a[i].id,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,SessionId:e.id,ProjectId:p.project.id,projectname:p.project.name}))}catch(e){console.error("Unable to convert question",e)}for(var s=String(t[i]).split(";"),o=0;o<s.length;o+=1){var r=s[o].trim();try{d.push(u.jscriptyAnswerReport.save({question:n[i],questionId:a[i].id,answer:"date"===a[i].type?moment(r).format("YYYY-MM-DD"):"time"===a[i].type?moment(r).format("HH:mm"):r,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,SessionId:e.id,ProjectId:p.project.id,projectname:p.project.name}))}catch(e){console.error("Unable to convert answer",e)}}}return m.all(l).then(function(){return m.all(d).then(function(){return e})})}).then(function(e){e?t.resolve(!0):t.reject()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()});t.reject()})}p.formViewer={},p.showResetButton=!0,p.showIncompleteSubmitButton=!1,p.detectBrowser=l.detectBrowser(),p.onSubmit=function(e,n){var t=m.defer();if(n){var a=s.confirm().title("Would you like to save your survey?").textContent("").ariaLabel("survey").targetEvent(e).ok("YES").cancel("NO");s.show(a).then(function(){c(t,!1)},function(){t.resolve()})}else c(t,!0);return t.promise.then(function(e){e&&(o.success({title:"Session saved",msg:"Your survey session has been properly saved!"}),function(e){try{i.$parent.$parent.$parent.vm.removeTab(e)}catch(e){o.error({title:"ERROR REMOVE TAB",msg:"Error while removing tab"})}}(p.tab))}).catch(function(e){o.error({title:"Session save error",msg:"There has been an error while trying to save your survey session!"})})},p.openContact=function(e,n){try{i.$parent.$parent.$parent.vm.addContactTab(n)}catch(e){o.error({title:"ERROR OPEN CONTACT",msg:"Jscripty can't open the contact"})}},p.isJsonString=function(e){if(_.isNil(e))return!1;try{JSON.parse(e)}catch(e){return!1}return!0},p.getResponseSheet=function(){return e.getResponseSheet(p.project.formData,p.project.responseData,!1)},p.getResponseSheetRow=function(){return e.getResponseSheetRow(p.project.formData,p.project.responseData)},p.getResponseSheetHeaders=function(){return e.getResponseSheetHeaders(p.project.formData,!1)},p.getQuestionWithResponseList=function(){return e.getQuestionWithResponseList(p.project.formData,p.project.responseData)},p.init=function(e){p.tab=e,p.tab&&(p.call=p.tab.call,p.starttime=p.tab.openedAt,p.contact=p.tab.contact,p.project=p.tab.project,p.project&&(_.isObjectLike(p.project.formData)?p.project.formData=p.project.formData:p.isJsonString(p.project.formData)?p.project.formData=JSON.parse(p.project.formData):p.project.formData=void 0,p.project.responseData=p.project.responseData||{},void 0!==p.project.currentPage&&a(function(){n.$broadcast("mwForm.pageEvents.changePage",{page:p.project.currentPage})}),i.$on("mwForm.pageEvents.pageCurrentChanged",function(e,n){if(n.currentPage&&(p.project.currentPage=n.currentPage.number-1,d(),p.project.enableUncompleteSave&&(1<=n.currentPage.number&&n.currentPage.number<p.project.formData.pages.length?p.showIncompleteSubmitButton=!0:p.showIncompleteSubmitButton=!1),p.project.formData&&p.project.formData.pages))for(var t=0,a=p.project.formData.pages.length;t<a;t++)if(n.currentPage.number<t+1&&p.project.formData.pages[t].elements)for(var i=0,s=p.project.formData.pages[t].elements.length;i<s;i++)"question"===p.project.formData.pages[t].elements[i].type&&p.project.formData.pages[t].elements[i].question&&delete p.project.responseData[p.project.formData.pages[t].elements[i].question.id]})))},p.resetViewer=function(e){if(p.formViewer.reset){var n=s.confirm().title(t.instant("JSCRIPTY.DO_YOU_WANT_TO_RESET_SESSION")).content(t.instant("JSCRIPTY.ALL_SURVEY_DATA_WILL_BE_LOST")).textContent("").ariaLabel("survey").targetEvent(e).ok(t.instant("JSCRIPTY.YES")).cancel(t.instant("JSCRIPTY.NO"));s.show(n).then(function(){p.showIncompleteSubmitButton=!1,p.project.currentPage=void 0,d(),p.formViewer.reset()})}}}e.$inject=["$scope","$q","$mdDialog","mwFormResponseUtils","api","toasty","Auth","$translate","$rootScope","$timeout","msUtils"],angular.module("app.dashboards").controller("AgentGeneralJscriptyController",e)}(),function(){"use strict";function e(t,a,e,n,i){var s=this;function o(){return function(e){if(404===e.status)a.info({title:t.instant("DASHBOARDS.ATTENTION"),msg:t.instant("DASHBOARDS.ACCEPT_ELSEWHERE")});else if(e.data&&e.data.errors&&e.data.errors.length){s.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}}s.notification=e,s.user=i.getCurrentUser(),s.accept=function(e){{if(n[s.notification.channel+"Message"])return n[s.notification.channel+"Message"].accept({id:s.notification.id,UserId:s.user.id,manual:!0}).$promise.then(function(e){a.success({title:"Message properly accepted!",msg:"Message has been accepted!"})}).catch(o());a.error({title:"API:ERROR",msg:"API accept message not found: "+s.notification.channel+"Message"})}},s.reject=function(e){{if(n[s.notification.channel+"Message"])return n[s.notification.channel+"Message"].reject({id:s.notification.id,UserId:s.user.id}).$promise.then(function(e){a.success({title:"Message properly rejected!",msg:"Message has been rejected!"})}).catch(o());a.error({title:"API:ERROR",msg:"API reject message not found: "+s.notification.channel+"Message"})}}}e.$inject=["$translate","toasty","notification","api","Auth"],angular.module("app.dashboards").controller("NotificationController",e)}(),function(){"use strict";angular.module("app.dashboards").controller("AgentGeneralPopupController",function(){var n=this;n.init=function(e){n.tab=e,n.tab&&(n.tab.saved=!0,n.html=n.tab.html)}})}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&"abandoned"===e.disposition?(i.inbound.abandoned+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)):e.closed&&!e.UserId&&e.disposition?(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)):e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.chatWebsites,{id:_.toNumber(e.ChatWebsiteId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.chatWebsites=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveChatInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateChatInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("chatInteraction:save",i.onSaveChatInteraction),n.on("chatInteraction:update",i.onUpdateChatInteraction),function(){if(0<Object.keys(i.chatWebsites).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("chatInteraction:save"),n.removeAllListeners("chatInteraction:update")})}e.$inject=["$scope","socket","chatInteractions","chatWebsites"],angular.module("app.dashboards").controller("UserChatDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r){var l=this;function d(){s({queues:l.outboundQueues,rpcQueues:l.rpcQueues}).then(function(e){l.inbound=e})}function c(){o({rpcCampaigns:l.rpcCampaigns}).then(function(e){l.ivr=e})}l.outboundQueues=a?_.keyBy(a.rows?a.rows:[],"id"):{},l.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},l.rpcCampaigns=r?_.keyBy(r.rows?r.rows:[],"id"):{},l.ivr={originated:0,limitCalls:0},l.inbound={waiting:0,talking:0,pTalking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0,outboundDropCallsDayCallersExit:0,outboundDropCallsDayTimeout:0},l.onSaveQueue=function(e){l.outboundQueues[e.id]&&l.rpcQueues[e.id]&&(l.rpcQueues[e.id]=e)},l.onSaveCampaign=function(e){l.rpcCampaigns[e.id]&&(l.rpcCampaigns[e.id]=e)},t.onWithoutApply("voice_queue:save",l.onSaveQueue),l.interval=n(function(){d(),c()},999),t.onWithoutApply("campaign:save",l.onSaveCampaign),d(),c(),e.$on("$destroy",function(){t.removeListener("voice_queue:save",l.onSaveQueue),t.removeAllListeners("campaign:save"),l.interval&&n.cancel(l.interval)})}e.$inject=["$scope","$interval","socket","outboundQueues","rpcQueues","initializeRealtimeQueue","initializeRealtimeCampaign","rpcCampaigns"],angular.module("app.dashboards").controller("UserVoiceDashboardDialerController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.faxAccounts,{id:_.toNumber(e.FaxAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.faxAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveFaxInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateFaxInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("faxInteraction:save",i.onSaveFaxInteraction),n.on("faxInteraction:update",i.onUpdateFaxInteraction),function(){if(0<Object.keys(i.faxAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("faxInteraction:save"),n.removeAllListeners("faxInteraction:update")})}e.$inject=["$scope","socket","faxInteractions","faxAccounts"],angular.module("app.dashboards").controller("UserFaxDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.mailAccounts,{id:_.toNumber(e.MailAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.mailAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveMailInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateMailInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("mailInteraction:save",i.onSaveMailInteraction),n.on("mailInteraction:update",i.onUpdateMailInteraction),function(){if(0<Object.keys(i.mailAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("mailInteraction:save"),n.removeAllListeners("mailInteraction:update")})}e.$inject=["$scope","socket","mailInteractions","mailAccounts"],angular.module("app.dashboards").controller("UserMailDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.openchannelAccounts,{id:_.toNumber(e.OpenchannelAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.openchannelAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveOpenchannelInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateOpenchannelInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("openchannelInteraction:save",i.onSaveOpenchannelInteraction),n.on("openchannelInteraction:update",i.onUpdateOpenchannelInteraction),function(){if(0<Object.keys(i.openchannelAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("openchannelInteraction:save"),n.removeAllListeners("openchannelInteraction:update")})}e.$inject=["$scope","socket","openchannelInteractions","openchannelAccounts"],angular.module("app.dashboards").controller("UserOpenchannelDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.smsAccounts,{id:_.toNumber(e.SmsAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.smsAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveSmsInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateSmsInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("smsInteraction:save",i.onSaveSmsInteraction),n.on("smsInteraction:update",i.onUpdateSmsInteraction),function(){if(0<Object.keys(i.smsAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("smsInteraction:save"),n.removeAllListeners("smsInteraction:update")})}e.$inject=["$scope","socket","smsInteractions","smsAccounts"],angular.module("app.dashboards").controller("UserSmsDashboardGeneralController",e)}(),function(){"use strict";function e(t){var i=[],s=function(){var t=i[0],a={waiting:0,talking:0,pTalking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0,originated:0,outboundDropCallsDayCallersExit:0,outboundDropCallsDayTimeout:0};_.forIn(t.queues,function(e,n){t.rpcQueues[n]&&(a.waiting+=t.rpcQueues[n].waiting||0,a.talking+=(t.rpcQueues[n].talking||0)+(t.rpcQueues[n].pTalking||0),a.answered+=t.rpcQueues[n].answered||0,a.abandoned+=t.rpcQueues[n].abandoned||0,a.sumHoldTime+=t.rpcQueues[n].sumHoldTime||0,a.sumBillable+=t.rpcQueues[n].sumBillable||0,a.total+=t.rpcQueues[n].total||0,a.originated+=t.rpcQueues[n].originated||0,a.outboundDropCallsDayCallersExit+=t.rpcQueues[n].outboundDropCallsDayCallersExit||0,a.outboundDropCallsDayTimeout+=t.rpcQueues[n].outboundDropCallsDayTimeout||0)});var e=a.total-a.answered-a.abandoned;a.unmanaged=0<e?e:0,a.avgHoldTime=Math.round(0<a.total?a.sumHoldTime/a.total:0),a.avgHoldTime=new Date(1e3*a.avgHoldTime).toISOString().substr(11,8),a.avgTalkTime=Math.round(0<a.answered?a.sumBillable/a.answered:0),a.avgTalkTime=new Date(1e3*a.avgTalkTime).toISOString().substr(11,8),a.answerRate=Math.round((0<a.total?a.answered/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.abandonRate=Math.round((0<a.total?a.abandoned/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundDropRate=Math.round((0<a.total?a.outboundDropCallsDayTimeout/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundAbandonRate=Math.round((0<a.total?a.outboundDropCallsDayCallersExit/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundanswerRate=0<100-a.outboundDropRate-a.outboundAbandonRate&&a.total?100-a.outboundDropRate-a.outboundAbandonRate:0,i.shift(),t.defer.resolve(a),0<i.length&&s()};return function(e){var n=t.defer();return i.push({queues:e.queues,rpcQueues:e.rpcQueues,defer:n}),1===i.length&&s(),n.promise}}function n(t){var i=[],s=function(){var t=i[0],a={originated:0,limitCalls:0};_.forIn(t.rpcCampaigns,function(e,n){t.rpcCampaigns[n]&&(a.originated+=t.rpcCampaigns[n].originated||0,a.limitCalls+=t.rpcCampaigns[n].limitCalls||0)}),i.shift(),t.defer.resolve(a),0<i.length&&s()};return function(e){var n=t.defer();return i.push({rpcCampaigns:e.rpcCampaigns,defer:n}),1===i.length&&s(),n.promise}}function t(t,a,e){var i=this;i.license=e,i.onInit=function(){if(i.hasDashboardPermissions=!a.hasRole("user")||a.hasPermission(101),i.hasDashboardPermissions){var e=t.current.name;switch(e){case"app.dashboards.general":n=[],i.license.voice&&n.push("app.dashboards.general.voice"),i.license.dialer&&n.push("app.dashboards.general.dialer"),i.license.chat&&n.push("app.dashboards.general.chat"),i.license.mail&&n.push("app.dashboards.general.mail"),i.license.messaging&&n.push("app.dashboards.general.sms"),i.license.openchannel&&n.push("app.dashboards.general.openchannel"),i.license.fax&&n.push("app.dashboards.general.fax"),i.license.whatsapp&&n.push("app.dashboards.general.whatsapp"),0<n.length&&t.go(_.first(n));break;case"app.dashboards.general.voice":i.selectedTab=0;break;case"app.dashboards.general.dialer":i.selectedTab=1;break;case"app.dashboards.general.chat":i.selectedTab=2;break;case"app.dashboards.general.mail":i.selectedTab=3;break;case"app.dashboards.general.sms":i.selectedTab=4;break;case"app.dashboards.general.openchannel":i.selectedTab=5;break;case"app.dashboards.general.fax":i.selectedTab=6;break;case"app.dashboards.general.whatsapp":i.selectedTab=7}}var n}}e.$inject=["$q"],n.$inject=["$q"],t.$inject=["$state","Auth","license"],angular.module("app.dashboards").factory("initializeRealtimeQueue",e).factory("initializeRealtimeCampaign",n).controller("UserDashboardGeneralController",t)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(){s({queues:o.inboundQueues,rpcQueues:o.rpcQueues}).then(function(e){o.inbound=e})}o.inboundQueues=t?_.keyBy(t.rows?t.rows:[],"id"):{},o.rpcQueues=a?_.keyBy(a.rows?a.rows:[],"id"):{},o.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},o.outbound=i||{answered:0,sumBillable:0,sumDuration:0,sumHoldTime:0,total:0},o.onSaveQueue=function(e){o.inboundQueues[e.id]&&o.rpcQueues[e.id]&&(o.rpcQueues[e.id]=e,r())},o.onSaveOutbound=function(e){o.outbound=e},n.on("voice_queue:save",o.onSaveQueue),n.on("voice_outbound:save",o.onSaveOutbound),r(),e.$on("$destroy",function(){n.removeListener("voice_queue:save",o.onSaveQueue),n.removeAllListeners("voice_outbound:save")})}e.$inject=["$scope","socket","inboundQueues","rpcQueues","outbound","initializeRealtimeQueue"],angular.module("app.dashboards").controller("UserVoiceDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.whatsappAccounts,{id:_.toNumber(e.WhatsappAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.whatsappAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveWhatsappInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateWhatsappInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("whatsappInteraction:save",i.onSaveWhatsappInteraction),n.on("whatsappInteraction:update",i.onUpdateWhatsappInteraction),function(){if(0<Object.keys(i.whatsappAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("whatsappInteraction:save"),n.removeAllListeners("whatsappInteraction:update")})}e.$inject=["$scope","socket","whatsappInteractions","whatsappAccounts"],angular.module("app.dashboards").controller("UserWhatsappDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="FAX.EDIT_FAXACCOUNT",g.faxAccount=angular.copy(l),g.faxAccounts=r,g.newFaxAccount=!1,g.faxAccount||(g.faxAccount={waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="FAX.NEW_FAXACCOUNT",g.newFaxAccount=!0),n.params.id&&(g.faxAccount.FaxAccountId=n.params.id),g.addNewFaxAccount=function(){g.errors=[],d.faxAccount.addAccountApplications(g.faxAccount).$promise.then(function(e){g.faxAccounts.unshift(e.toJSON()),o.success({title:"FaxAccount properly created",msg:g.faxAccount.name?g.faxAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFaxAccount=function(){g.errors=[],d.faxAccount.updateAccountApplications(g.faxAccount).$promise.then(function(e){var n=_.find(g.faxAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FaxAccount properly saved!",msg:g.faxAccount.name?g.faxAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFaxAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The faxAccount will be deleted.").ariaLabel("Delete FaxAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.faxAccount.delete({id:g.faxAccount.id}).$promise.then(function(){_.remove(g.faxAccounts,{id:g.faxAccount.id}),o.success({title:"FaxAccount properly deleted!",msg:(g.faxAccount.name||"faxAccount")+" has been deleted!"}),v(g.faxAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})}),t=null;if(g.faxAccount&&(t=_.find(g.trunks,{id:Number(g.faxAccount.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.trunks,{id:t.id});a.canSelect=!1,n.push(a)}g.trunks=n})}else{var t=[],a=null;g.faxAccount&&(a=_.find(g.trunks,{id:Number(g.faxAccount.TrunkId)}));for(var i=0;i<g.trunks.length;i++)a&&g.trunks[i].id===a.id&&(g.trunks[i].canSelect=!1,t.push(g.trunks[i]));g.trunks=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.faxAccount&&(t=_.find(g.lists,{id:Number(g.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.faxAccount&&(a=_.find(g.lists,{id:Number(g.faxAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","faxAccounts","faxAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.fax").controller("CreateOrEditFaxAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.faxAccountApps.rows.length){var t=r.faxAccountApps.rows[n]?r.faxAccountApps.rows[n]:r.faxAccountApps.rows[0];i.show({controller:"EditFaxAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccountApp:t,faxAccount:r.faxAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.faxAccountApps.rows[n]=e:r.faxAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.faxAccountApps.rows.length;t++,0){var a=r.faxAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.faxAccount.context,a.exten=r.faxAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.faxAccount.addApplications({id:r.faxAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.faxAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.faxAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.faxAccount={},r.faxAccountApps={count:0,rows:[]},r.selectedFaxAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"FaxQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"faxQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:901}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,defaultValue:300,required:!0,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",role:"agent",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.faxAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getFaxAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.faxAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getFaxAccountApps=function(){r.promise=o.faxAccount.getApplications(r.query,t).$promise},r.editFaxAccountApp=n,r.editInterval=function(e,n){if(r.faxAccountApps.rows.length){var t=r.faxAccountApps.rows[n]?r.faxAccountApps.rows[n]:r.faxAccountApps.rows[0];i.show({controller:"EditFaxAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteFaxAccountApp=function(e){_.remove(r.faxAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedFaxAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedFaxAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedFaxAccountApps.forEach(function(e){_.remove(r.faxAccountApps.rows,{id:e.id})}),r.selectedFaxAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.fax").controller("FaxAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxAccount.getAgents({id:c.faxAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserFaxAccount?"penalty "+e.UserFaxAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.faxAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxAccount.removeAgents({id:c.faxAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxAccount.addAgents({id:c.faxAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("FAX.ALL_AGENTS"),labelSelected:r.instant("FAX.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","faxAccount","faxAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditFaxAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("fax")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.faxQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.faxQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:901}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountApptagDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.faxAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.faxAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.FaxAccountId=m.faxAccount.id,m.query.id=m.faxAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.faxAccount.id,field:"FaxAccountId",route:"faxAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.fax").controller("FaxAccountDispositionsController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.faxAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.faxAccountInteractions.rows.length;n+=1){var t=m.faxAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.faxInteraction.get(m.query,u).$promise}function g(e){d.faxInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.faxAccountInteractions.rows,{id:e.id}),m.faxAccountInteractions.count-=1,m.faxAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETfaxAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.fax):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.faxAccount={},m.faxAccountInteractions={count:0,rows:[]},m.selectedFaxAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.faxAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.FaxAccountId=m.faxAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.faxInteractionDownload=function(s,e,n){return d.faxInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="fax-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getFaxAccountInteractions=p,m.createOrEditFaxAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccount:m.faxAccount,interaction:n,interactions:m.faxAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spyfaxInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"fax",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"fax.faxAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||FaxAccountId:=$eq["+m.faxAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedFaxAccountInteractions=function(){var e=angular.copy(m.selectedFaxAccountInteractions);return m.selectedFaxAccountInteractions=[],e},m.deleteFaxAccountInteraction=g,m.deleteSelectedFaxAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedFaxAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedFaxAccountInteractions.forEach(function(e){g(e)}),m.selectedFaxAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.fax").controller("FaxAccountInteractionsController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=n,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=e.protocol()+"://"+e.host(),p.faxAccount=c||t.params.faxAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=t.params.tab||0,p.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.accounts",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.accounts",{})}},p.agentadddialog=function(e,n){a.show({controller:"FaxAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxAccount:e,faxAccounts:p.faxAccounts?p.faxAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoFaxAccounts=function(){t.go("app.fax.faxAccounts",{},{reload:"app.fax.faxAccounts"})},p.saveFaxAccount=function(){r.faxAccount.updateAccountApplications(p.faxAccount).$promise.then(function(){l.success({title:"FaxAccount updated!",msg:p.faxAccount.name?p.faxAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.trunks,{id:e.resourceId})}),t=null;if(p.faxAccount&&(t=_.find(p.trunks,{id:Number(p.faxAccount.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.trunks,{id:t.id});a.canSelect=!1,n.push(a)}p.trunks=n})}else{var t=[],a=null;p.faxAccount&&(a=_.find(p.trunks,{id:Number(p.faxAccount.TrunkId)}));for(var i=0;i<p.trunks.length;i++)a&&p.trunks[i].id===a.id&&(p.trunks[i].canSelect=!1,t.push(p.trunks[i]));p.trunks=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.faxAccount&&(t=_.find(p.lists,{id:Number(p.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.faxAccount&&(a=_.find(p.lists,{id:Number(p.faxAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","faxAccount","userProfile","userProfileSection"],angular.module("app.fax").controller("FaxAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.faxAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="faxAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFaxAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.arrayecm=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayminrate=_.keyBy([{option:"2400",value:"'2400'"},{option:"4800",value:"'4800'"},{option:"7200",value:"'7200'"},{option:"9600",value:"'9600'"},{option:"12000",value:"'12000'"},{option:"14400",value:"'14400'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymaxrate=_.keyBy([{option:"2400",value:"'2400'"},{option:"4800",value:"'4800'"},{option:"7200",value:"'7200'"},{option:"9600",value:"'9600'"},{option:"12000",value:"'12000'"},{option:"14400",value:"'14400'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytech=_.keyBy([{option:"SIP",value:"'SIP'"},{option:"IAX",value:"'IAX'"},{option:"DADHI",value:"'DADHI'"},{option:"KHOMP",value:"'KHOMP'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.fax.faxAccounts.edit",{id:e.id,faxAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.fax.faxAccounts.edit",{id:e.id,tab:5})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.accounts",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.accounts",{})}},f.agentadddialog=function(e,n){i.show({controller:"FaxAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxAccount:e,faxAccounts:f.faxAccounts?f.faxAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("faxAccount")+"?").htmlContent("<b>"+(e.name||"faxAccount")+"</b> will be deleted.").ariaLabel("delete faxAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFaxAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.faxAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FaxAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFaxAccount=function(e,n){i.show({controller:"CreateOrEditFaxAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccount:n,faxAccounts:f.faxAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFaxAccount=y,f.exportSelectedFaxAccounts=function(){var e=angular.copy(f.selectedFaxAccounts);return f.selectedFaxAccounts=[],e},f.deleteSelectedFaxAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected faxAccounts?").htmlContent("<b>"+f.selectedFaxAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FaxAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFaxAccounts.forEach(function(e){y(e)}),f.selectedFaxAccounts=[]})},f.deselectFaxAccounts=function(){f.selectedFaxAccounts=[]},f.selectAllFaxAccounts=function(){f.selectedFaxAccounts=f.faxAccounts.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})}),a=null;a=[],f.faxAccounts.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.trunks,{id:e.id});n.canSelect=!1,t.push(n)}}),f.trunks=t})}else{var t=[],a=[];f.faxAccounts.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)});for(var i=0;i<f.trunks.length;i++){_.some(a,{id:f.trunks[i].id})&&(f.trunks[i].canSelect=!1,t.push(f.trunks[i]))}f.trunks=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.faxAccount&&(t=_.find(f.lists,{id:Number(f.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.faxAccount&&(a=_.find(f.lists,{id:Number(f.faxAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.faxAccounts=e||{count:0,rows:[]}}function y(e){m.faxAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.faxAccounts.rows,{id:e.id}),f.faxAccounts.count-=1,f.faxAccounts.rows.length||f.getFaxAccounts(),p.success({title:_.startCase("FaxAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEfaxAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEfaxAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFaxAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","faxAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.fax").controller("FaxAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="FAX.EDIT_FAXQUEUE",g.faxQueue=angular.copy(l),g.faxQueues=r,g.newFaxQueue=!1,g.faxQueue||(g.faxQueue={strategy:"beepall",timeout:10},g.title="FAX.NEW_FAXQUEUE",g.newFaxQueue=!0),g.addNewFaxQueue=function(){g.errors=[],d.faxQueue.save(g.faxQueue).$promise.then(function(e){g.faxQueues.unshift(e.toJSON()),o.success({title:"FaxQueue properly created",msg:g.faxQueue.name?g.faxQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFaxQueue=function(){g.errors=[],d.faxQueue.update({id:g.faxQueue.id},g.faxQueue).$promise.then(function(e){var n=_.find(g.faxQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FaxQueue properly saved!",msg:g.faxQueue.name?g.faxQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFaxQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The faxQueue will be deleted.").ariaLabel("Delete FaxQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.faxQueue.delete({id:g.faxQueue.id}).$promise.then(function(){_.remove(g.faxQueues,{id:g.faxQueue.id}),o.success({title:"FaxQueue properly deleted!",msg:(g.faxQueue.name||"faxQueue")+" has been deleted!"}),v(g.faxQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","faxQueues","faxQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.fax").controller("CreateOrEditFaxQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxQueue.getAgents({id:c.faxQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserFaxQueue?"penalty "+e.UserFaxQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.faxQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.removeAgents({id:c.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.addAgents({id:c.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("FAX.ALL_AGENTS"),labelSelected:r.instant("FAX.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","faxQueue","faxQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxQueue.getTeams({id:l.faxQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.faxQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("FAX.ALL_TEAMS"),labelSelected:t.instant("FAX.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.removeTeams({id:l.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.addTeams({id:l.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","faxQueue","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.faxQueue=c||e.params.faxQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"FaxQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:u.faxQueues?u.faxQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:u.faxQueues?u.faxQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoFaxQueues=function(){e.go("app.fax.faxQueues",{},{reload:"app.fax.faxQueues"})},u.saveFaxQueue=function(){r.faxQueue.update({id:u.faxQueue.id},u.faxQueue).$promise.then(function(){l.success({title:"FaxQueue updated!",msg:u.faxQueue.name?u.faxQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","faxQueue","userProfileSection"],angular.module("app.fax").controller("FaxQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.faxQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="faxQueues",f.listOrder="",f.listOrderAsc=null,f.selectedFaxQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.fax.faxQueues.edit",{id:e.id,faxQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"FaxQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:f.faxQueues?f.faxQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:f.faxQueues?f.faxQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("faxQueue")+"?").htmlContent("<b>"+(e.name||"faxQueue")+"</b> will be deleted.").ariaLabel("delete faxQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.queues",{})}},f.success=E,f.getFaxQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.faxQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FaxQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFaxQueue=function(e,n){i.show({controller:"CreateOrEditFaxQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:f.faxQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFaxQueue=y,f.exportSelectedFaxQueues=function(){var e=angular.copy(f.selectedFaxQueues);return f.selectedFaxQueues=[],e},f.deleteSelectedFaxQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected faxQueues?").htmlContent("<b>"+f.selectedFaxQueues.length+" selected</b> will be deleted.").ariaLabel("delete FaxQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFaxQueues.forEach(function(e){y(e)}),f.selectedFaxQueues=[]})},f.deselectFaxQueues=function(){f.selectedFaxQueues=[]},f.selectAllFaxQueues=function(){f.selectedFaxQueues=f.faxQueues.rows};var b=!0,A=1;function E(e){f.faxQueues=e||{count:0,rows:[]}}function y(e){m.faxQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.faxQueues.rows,{id:e.id}),f.faxQueues.count-=1,f.faxQueues.rows.length||f.getFaxQueues(),p.success({title:_.startCase("FaxQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEfaxQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEfaxQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFaxQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","faxQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.fax").controller("FaxQueuesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){_.forIn(p.faxAccounts,function(e,n){p.rpcFaxAccounts[n]&&_.merge(e,p.rpcFaxAccounts[n])}),_.forIn(p.faxAccounts,function(n,e){var t={id:e,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};s.faxAccount.getMessages(t).$promise.then(function(e){return e&&(n.in=e.count||0,n.lastIn=e.rows&&e.rows.length?e.rows[0].createdAt:void 0),t.direction="out",s.faxAccount.getMessages(t).$promise}).then(function(e){e&&(n.out=e.count||0,n.lastOut=e.rows&&e.rows.length?e.rows[0].createdAt:void 0)}).catch(function(e){console.log(e)})})}p.currentUser=u.getCurrentUser(),p.count=l&&l.count?l.count:0,p.faxAccounts=l?_.keyBy(l.rows?l.rows:[],"id"):{},p.rpcFaxAccounts=d?_.keyBy(d.rows?d.rows:[],"id"):{},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.query={sort:"-name",limit:10,page:1},p.success=f,p.$onInit=g,p.getFaxAccounts=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=s.faxAccount.get(p.query,f).$promise:(p.query.id=p.userProfile.id,p.query.section="FaxAccounts",p.promise=s.userProfile.getResources(p.query,f).$promise)},p.onSave=function(e){p.faxAccounts[e.id]&&_.merge(p.faxAccounts[e.id],e)},p.onFaxMessageSave=function(e){p.faxAccounts[e.FaxAccountId]&&("in"==e.direction?(p.faxAccounts[e.FaxAccountId].in+=1,p.faxAccounts[e.FaxAccountId].lastIn=e.createdAt):(p.faxAccounts[e.FaxAccountId].out+=1,p.faxAccounts[e.FaxAccountId].lastOut=e.createdAt))},p.goToFaxAccount=function(e,n){i.go("app.fax.faxAccounts.edit",{id:n.id,faxAccount:n})},p.order=[],_.forIn(p.faxAccounts,function(e,n){p.order.push(e.id)}),o.on("faxAccount:save",p.onSave),o.on("faxAccount:update",p.onSave),o.on("faxMessage:save",p.onFaxMessageSave);var v=!0,h=1;function f(e){if(p.faxAccounts=e?_.keyBy(e.rows?e.rows:[],"id"):{},e.rows){p.order=[];for(var n=0;n<e.rows.length;n++)p.order.push(e.rows[n].id)}g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=h),p.getFaxAccounts())}),e.$on("$destroy",function(){o.removeAllListeners("faxAccount:save"),o.removeAllListeners("faxAccount:update"),o.removeAllListeners("faxMessage:save")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$state","api","socket","toasty","faxAccounts","rpcFaxAccounts","userProfile","userProfileSection","Auth"],angular.module("app.fax").controller("FaxAccountsRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"FaxQueues":void 0,channel:"fax",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("FAX.FAXQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditFaxQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("fax_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userFaxQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.FaxQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userFaxQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.FaxQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"fax")})}),e.$on("$destroy",function(){r.removeAllListeners("fax_queue:save"),r.removeAllListeners("userFaxQueue:remove"),r.removeAllListeners("userFaxQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.fax").controller("QueuesFaxRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.fax.realtime.agents":this.selectedTab=0;break;case"app.fax.realtime.trunks":this.selectedTab=1;break;case"app.fax.realtime.queues":this.selectedTab=2;break;case"app.fax.realtime.accounts":this.selectedTab=3;break;default:this.selectedTab=0,t.go("app.fax.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.fax.realtime.agents");break;case 1:t.go("app.fax.realtime.trunks");break;case 2:t.go("app.fax.realtime.queues");break;case 3:t.go("app.fax.realtime.accounts");break;default:t.go("app.fax.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.fax").controller("FaxRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m){var u=this,p=["status","stateRegistry","registry","host","port","internal","state","status"];function g(){for(var e,n=0;n<u.trunks.length;n+=1)0<=(e=_.findIndex(u.rpcTrunks,["id",u.trunks[n].id]))&&_.merge(u.trunks[n],_.pick(u.rpcTrunks[e],p))}function v(e,n,t){0<=n&&_.merge(e[n],_.pick(t,p))}u.currentUser=m.getCurrentUser(),u.count=a.count,u.trunks=a?a.rows:[],u.rpcTrunks=i&&i.rows?i.rows:[],u.query={fields:"id,name",active:!0,sort:"-updatedAt",limit:10,page:1},u.statusClass=r.status,u.stateClass=r.state,u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.success=b,u.$onInit=g,u.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},u.getTrunks=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=s.trunk.get(u.query,b).$promise:(u.query.id=u.userProfile.id,u.query.section="Trunks",u.promise=s.userProfile.getResources(u.query,b).$promise)},u.goToTrunk=function(e,n){l.go("app.tools.trunks.edit",{id:n.id})},u.onSave=function(e){var n=_.findIndex(u.trunks,["id",e.id]),t=_.findIndex(u.rpcTrunks,["id",e.id]);v(u.trunks,n,e),v(u.rpcTrunks,t,e)},o.on("trunk:save",u.onSave);var h=!0,f=1;function b(e){u.count=e.count,u.trunks=e&&e.rows?e.rows:[],g()}e.$watch("vm.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=f),u.getTrunks())}),e.$on("$destroy",function(){o.removeAllListeners("trunk:save")})}e.$inject=["$scope","$timeout","$mdDialog","trunks","rpcTrunks","api","socket","helperClasses","$state","userProfile","userProfileSection","Auth"],angular.module("app.fax").controller("TrunksFaxRealtimeController",e)}(),function(){"use strict";function e(e,n){this.info=e,this.license=n}e.$inject=["info","license"],angular.module("app.help.about").controller("AboutController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DESKACCOUNT",g.deskAccount=angular.copy(l),g.deskAccounts=r,g.newDeskAccount=!1,g.deskAccount||(g.deskAccount={type:"integrationTab",authType:"basic",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_DESKACCOUNT",g.newDeskAccount=!0),g.addNewDeskAccount=function(){g.errors=[],d.intDeskAccount.save(g.deskAccount).$promise.then(function(e){g.deskAccounts.unshift(e.toJSON()),o.success({title:"DeskAccount properly created",msg:g.deskAccount.name?g.deskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDeskAccount=function(){g.errors=[],d.intDeskAccount.update({id:g.deskAccount.id},g.deskAccount).$promise.then(function(e){var n=_.find(g.deskAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"DeskAccount properly saved!",msg:g.deskAccount.name?g.deskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The deskAccount will be deleted.").ariaLabel("Delete DeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDeskAccount.delete({id:g.deskAccount.id}).$promise.then(function(){_.remove(g.deskAccounts,{id:g.deskAccount.id}),o.success({title:"DeskAccount properly deleted!",msg:(g.deskAccount.name||"deskAccount")+" has been deleted!"}),v(g.deskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","deskAccounts","deskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskAccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.deskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="deskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedDeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayauthType=_.keyBy([{option:"Basic",value:"'basic'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.deskAccounts.edit",{id:e.id,deskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intDeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"DeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"DeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("deskAccount")+"?").htmlContent("<b>"+(e.name||"deskAccount")+"</b> will be deleted.").ariaLabel("delete deskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getDeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intDeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="DeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditDeskAccount=function(e,n){i.show({controller:"CreateOrEditDeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{deskAccount:n,deskAccounts:f.deskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteDeskAccount=y,f.exportSelectedDeskAccounts=function(){var e=angular.copy(f.selectedDeskAccounts);return f.selectedDeskAccounts=[],e},f.deleteSelectedDeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected deskAccounts?").htmlContent("<b>"+f.selectedDeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete DeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedDeskAccounts.forEach(function(e){y(e)}),f.selectedDeskAccounts=[]})},f.deselectDeskAccounts=function(){f.selectedDeskAccounts=[]},f.selectAllDeskAccounts=function(){f.selectedDeskAccounts=f.deskAccounts.rows};var b=!0,A=1;function E(e){f.deskAccounts=e||{count:0,rows:[]}}function y(e){m.intDeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.deskAccounts.rows,{id:e.id}),f.deskAccounts.count-=1,f.deskAccounts.rows.length||f.getDeskAccounts(),p.success({title:_.startCase("DeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintDeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintDeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getDeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","deskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("DeskAccountsController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.deskAccount={},o.deskConfiguration={},o.configurations=[],o.selectedDeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.deskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intDeskAccount.getConfigurations({id:o.deskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getDeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getDeskConfiguration=function(e){o.deskConfiguration=o.configurations[e],o.selectedDeskConfiguration=e,i.intDeskConfiguration.getSubjects({id:o.deskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intDeskConfiguration.getDescriptions({id:o.deskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intDeskConfiguration.getFields({id:o.deskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intDeskConfiguration.getTags({id:o.deskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditDeskConfiguration=function(e,n){a.show({controller:"CreateOrEditDeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{deskConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getDeskConfiguration(0)})},o.deleteDeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the deskConfiguration?").htmlContent("<b>"+(n.name||"deskConfiguration")+"</b> will be deleted.").ariaLabel("delete deskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intDeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"DeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getDeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intDeskConfiguration.setTags({id:o.deskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("DeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DESKCONFIGURATION",g.deskConfiguration=angular.copy(l),g.configurations=r,g.newDeskConfiguration=!1,g.deskConfiguration||(g.deskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_DESKCONFIGURATION",g.newDeskConfiguration=!0),g.addNewDeskConfiguration=function(){g.errors=[],d.intDeskAccount.addConfiguration({id:n.params.id},g.deskConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"DeskConfiguration properly created",msg:g.deskConfiguration.name?g.deskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDeskConfiguration=function(){g.errors=[],d.intDeskConfiguration.update({id:g.deskConfiguration.id},g.deskConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"DeskConfiguration properly saved!",msg:g.deskConfiguration.name?g.deskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The deskConfiguration will be deleted.").ariaLabel("Delete DeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDeskConfiguration.delete({id:g.deskConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.deskConfiguration.id}),o.success({title:"DeskConfiguration properly deleted!",msg:(g.deskConfiguration.name||"deskConfiguration")+" has been deleted!"}),v(g.deskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","deskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intDeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.deskAccount=c||e.params.deskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoDeskAccounts=function(){e.go("app.integrations.deskAccounts",{},{reload:"app.integrations.deskAccounts"})},u.saveDeskAccount=function(){r.intDeskAccount.update({id:u.deskAccount.id},u.deskAccount).$promise.then(function(){l.success({title:"DeskAccount updated!",msg:u.deskAccount.name?u.deskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintDeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","deskAccount","userProfileSection"],angular.module("app.integrations").controller("DeskAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DYNAMICS365ACCOUNT",g.dynamics365Account=angular.copy(l),g.dynamics365Accounts=r,g.newDynamics365Account=!1,g.dynamics365Account||(g.dynamics365Account={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_DYNAMICS365ACCOUNT",g.newDynamics365Account=!0),g.addNewDynamics365Account=function(){g.errors=[],d.intDynamics365Account.save(g.dynamics365Account).$promise.then(function(e){g.dynamics365Accounts.unshift(e.toJSON()),o.success({title:"Dynamics365Account properly created",msg:g.dynamics365Account.name?g.dynamics365Account.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDynamics365Account=function(){g.errors=[],d.intDynamics365Account.update({id:g.dynamics365Account.id},g.dynamics365Account).$promise.then(function(e){var n=_.find(g.dynamics365Accounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Dynamics365Account properly saved!",msg:g.dynamics365Account.name?g.dynamics365Account.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDynamics365Account=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dynamics365Account will be deleted.").ariaLabel("Delete Dynamics365Account").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDynamics365Account.delete({id:g.dynamics365Account.id}).$promise.then(function(){_.remove(g.dynamics365Accounts,{id:g.dynamics365Account.id}),o.success({title:"Dynamics365Account properly deleted!",msg:(g.dynamics365Account.name||"dynamics365Account")+" has been deleted!"}),v(g.dynamics365Account)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","dynamics365Accounts","dynamics365Account","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365AccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.dynamics365Accounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="dynamics365Accounts",f.listOrder="",f.listOrderAsc=null,f.selectedDynamics365Accounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.dynamics365Accounts.edit",{id:e.id,dynamics365Account:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intDynamics365Account.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"Dynamics365Account properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"Dynamics365Account properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("dynamics365Account")+"?").htmlContent("<b>"+(e.name||"dynamics365Account")+"</b> will be deleted.").ariaLabel("delete dynamics365Account").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getDynamics365Accounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intDynamics365Account.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Dynamics365Accounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditDynamics365Account=function(e,n){i.show({controller:"CreateOrEditDynamics365AccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{dynamics365Account:n,dynamics365Accounts:f.dynamics365Accounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteDynamics365Account=y,f.exportSelectedDynamics365Accounts=function(){var e=angular.copy(f.selectedDynamics365Accounts);return f.selectedDynamics365Accounts=[],e},f.deleteSelectedDynamics365Accounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected dynamics365Accounts?").htmlContent("<b>"+f.selectedDynamics365Accounts.length+" selected</b> will be deleted.").ariaLabel("delete Dynamics365Accounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedDynamics365Accounts.forEach(function(e){y(e)}),f.selectedDynamics365Accounts=[]})},f.deselectDynamics365Accounts=function(){f.selectedDynamics365Accounts=[]},f.selectAllDynamics365Accounts=function(){f.selectedDynamics365Accounts=f.dynamics365Accounts.rows};var b=!0,A=1;function E(e){f.dynamics365Accounts=e||{count:0,rows:[]}}function y(e){m.intDynamics365Account.delete({id:e.id}).$promise.then(function(){_.remove(f.dynamics365Accounts.rows,{id:e.id}),f.dynamics365Accounts.count-=1,f.dynamics365Accounts.rows.length||f.getDynamics365Accounts(),p.success({title:_.startCase("Dynamics365Account")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintDynamics365Account"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintDynamics365Account",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getDynamics365Accounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","dynamics365Accounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("Dynamics365AccountsController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.dynamics365Account={},o.dynamics365Configuration={},o.configurations=[],o.selectedDynamics365Configuration=-1,o.crudPermissions,o.init=function(e,n){o.dynamics365Account=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intDynamics365Account.getConfigurations({id:o.dynamics365Account.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getDynamics365Configuration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getDynamics365Configuration=function(e){o.dynamics365Configuration=o.configurations[e],o.selectedDynamics365Configuration=e,i.intDynamics365Configuration.getSubjects({id:o.dynamics365Configuration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intDynamics365Configuration.getDescriptions({id:o.dynamics365Configuration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intDynamics365Configuration.getFields({id:o.dynamics365Configuration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditDynamics365Configuration=function(e,n){a.show({controller:"CreateOrEditDynamics365ConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{dynamics365Configuration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getDynamics365Configuration(0)})},o.deleteDynamics365Configuration=function(e,n){var t=a.confirm().title("Are you sure want to delete the dynamics365Configuration?").htmlContent("<b>"+(n.name||"dynamics365Configuration")+"</b> will be deleted.").ariaLabel("delete dynamics365Configuration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intDynamics365Configuration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"Dynamics365Configuration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getDynamics365Configuration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("Dynamics365AccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DYNAMICS365CONFIGURATION",g.dynamics365Configuration=angular.copy(l),g.configurations=r,g.newDynamics365Configuration=!1,g.dynamics365Configuration||(g.dynamics365Configuration={channel:"voice",type:"inbound",ticketType:"incident"},g.title="INTEGRATIONS.NEW_DYNAMICS365CONFIGURATION",g.newDynamics365Configuration=!0),g.addNewDynamics365Configuration=function(){g.errors=[],d.intDynamics365Account.addConfiguration({id:n.params.id},g.dynamics365Configuration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"Dynamics365Configuration properly created",msg:g.dynamics365Configuration.name?g.dynamics365Configuration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDynamics365Configuration=function(){g.errors=[],d.intDynamics365Configuration.update({id:g.dynamics365Configuration.id},g.dynamics365Configuration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Dynamics365Configuration properly saved!",msg:g.dynamics365Configuration.name?g.dynamics365Configuration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDynamics365Configuration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dynamics365Configuration will be deleted.").ariaLabel("Delete Dynamics365Configuration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDynamics365Configuration.delete({id:g.dynamics365Configuration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.dynamics365Configuration.id}),o.success({title:"Dynamics365Configuration properly deleted!",msg:(g.dynamics365Configuration.name||"dynamics365Configuration")+" has been deleted!"}),v(g.dynamics365Configuration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","dynamics365Configuration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365ConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDynamics365Field.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDynamics365Field.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDynamics365Field.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intDynamics365Account.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365AccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.dynamics365Account=c||e.params.dynamics365Account||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoDynamics365Accounts=function(){e.go("app.integrations.dynamics365Accounts",{},{reload:"app.integrations.dynamics365Accounts"})},u.saveDynamics365Account=function(){r.intDynamics365Account.update({id:u.dynamics365Account.id},u.dynamics365Account).$promise.then(function(){l.success({title:"Dynamics365Account updated!",msg:u.dynamics365Account.name?u.dynamics365Account.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintDynamics365Account",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","dynamics365Account","userProfileSection"],angular.module("app.integrations").controller("Dynamics365AccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHDESKACCOUNT",g.freshdeskAccount=angular.copy(l),g.freshdeskAccounts=r,g.newFreshdeskAccount=!1,g.freshdeskAccount||(g.freshdeskAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_FRESHDESKACCOUNT",g.newFreshdeskAccount=!0),g.addNewFreshdeskAccount=function(){g.errors=[],d.intFreshdeskAccount.save(g.freshdeskAccount).$promise.then(function(e){g.freshdeskAccounts.unshift(e.toJSON()),o.success({title:"FreshdeskAccount properly created",msg:g.freshdeskAccount.name?g.freshdeskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshdeskAccount=function(){g.errors=[],d.intFreshdeskAccount.update({id:g.freshdeskAccount.id},g.freshdeskAccount).$promise.then(function(e){var n=_.find(g.freshdeskAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshdeskAccount properly saved!",msg:g.freshdeskAccount.name?g.freshdeskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshdeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshdeskAccount will be deleted.").ariaLabel("Delete FreshdeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshdeskAccount.delete({id:g.freshdeskAccount.id}).$promise.then(function(){_.remove(g.freshdeskAccounts,{id:g.freshdeskAccount.id}),o.success({title:"FreshdeskAccount properly deleted!",msg:(g.freshdeskAccount.name||"freshdeskAccount")+" has been deleted!"}),v(g.freshdeskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","freshdeskAccounts","freshdeskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.freshdeskAccount={},o.freshdeskConfiguration={},o.configurations=[],o.selectedFreshdeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.freshdeskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intFreshdeskAccount.getConfigurations({id:o.freshdeskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getFreshdeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getFreshdeskConfiguration=function(e){o.freshdeskConfiguration=o.configurations[e],o.selectedFreshdeskConfiguration=e,i.intFreshdeskConfiguration.getSubjects({id:o.freshdeskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intFreshdeskConfiguration.getDescriptions({id:o.freshdeskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intFreshdeskConfiguration.getFields({id:o.freshdeskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intFreshdeskConfiguration.getTags({id:o.freshdeskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditFreshdeskConfiguration=function(e,n){a.show({controller:"CreateOrEditFreshdeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshdeskConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getFreshdeskConfiguration(0)})},o.deleteFreshdeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the freshdeskConfiguration?").htmlContent("<b>"+(n.name||"freshdeskConfiguration")+"</b> will be deleted.").ariaLabel("delete freshdeskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intFreshdeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"FreshdeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getFreshdeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intFreshdeskConfiguration.setTags({id:o.freshdeskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("FreshdeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHDESKCONFIGURATION",g.freshdeskConfiguration=angular.copy(l),g.configurations=r,g.newFreshdeskConfiguration=!1,g.freshdeskConfiguration||(g.freshdeskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_FRESHDESKCONFIGURATION",g.newFreshdeskConfiguration=!0),g.addNewFreshdeskConfiguration=function(){g.errors=[],d.intFreshdeskAccount.addConfiguration({id:n.params.id},g.freshdeskConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"FreshdeskConfiguration properly created",msg:g.freshdeskConfiguration.name?g.freshdeskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshdeskConfiguration=function(){g.errors=[],d.intFreshdeskConfiguration.update({id:g.freshdeskConfiguration.id},g.freshdeskConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshdeskConfiguration properly saved!",msg:g.freshdeskConfiguration.name?g.freshdeskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshdeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshdeskConfiguration will be deleted.").ariaLabel("Delete FreshdeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshdeskConfiguration.delete({id:g.freshdeskConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.freshdeskConfiguration.id}),o.success({title:"FreshdeskConfiguration properly deleted!",msg:(g.freshdeskConfiguration.name||"freshdeskConfiguration")+" has been deleted!"}),v(g.freshdeskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","freshdeskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshdeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshdeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intFreshdeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intFreshdeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.freshdeskAccount=c||e.params.freshdeskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoFreshdeskAccounts=function(){e.go("app.integrations.freshdeskAccounts",{},{reload:"app.integrations.freshdeskAccounts"})},u.saveFreshdeskAccount=function(){r.intFreshdeskAccount.update({id:u.freshdeskAccount.id},u.freshdeskAccount).$promise.then(function(){l.success({title:"FreshdeskAccount updated!",msg:u.freshdeskAccount.name?u.freshdeskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintFreshdeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","freshdeskAccount","userProfileSection"],angular.module("app.integrations").controller("FreshdeskAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.freshdeskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="freshdeskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFreshdeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.freshdeskAccounts.edit",{id:e.id,freshdeskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intFreshdeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"FreshdeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"FreshdeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("freshdeskAccount")+"?").htmlContent("<b>"+(e.name||"freshdeskAccount")+"</b> will be deleted.").ariaLabel("delete freshdeskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFreshdeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intFreshdeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FreshdeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFreshdeskAccount=function(e,n){i.show({controller:"CreateOrEditFreshdeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshdeskAccount:n,freshdeskAccounts:f.freshdeskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFreshdeskAccount=y,f.exportSelectedFreshdeskAccounts=function(){var e=angular.copy(f.selectedFreshdeskAccounts);return f.selectedFreshdeskAccounts=[],e},f.deleteSelectedFreshdeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected freshdeskAccounts?").htmlContent("<b>"+f.selectedFreshdeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FreshdeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFreshdeskAccounts.forEach(function(e){y(e)}),f.selectedFreshdeskAccounts=[]})},f.deselectFreshdeskAccounts=function(){f.selectedFreshdeskAccounts=[]},f.selectAllFreshdeskAccounts=function(){f.selectedFreshdeskAccounts=f.freshdeskAccounts.rows};var b=!0,A=1;function E(e){f.freshdeskAccounts=e||{count:0,rows:[]}}function y(e){m.intFreshdeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.freshdeskAccounts.rows,{id:e.id}),f.freshdeskAccounts.count-=1,f.freshdeskAccounts.rows.length||f.getFreshdeskAccounts(),p.success({title:_.startCase("FreshdeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintFreshdeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintFreshdeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFreshdeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","freshdeskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("FreshdeskAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHSALESACCOUNT",g.freshsalesAccount=angular.copy(l),g.freshsalesAccounts=r,g.newFreshsalesAccount=!1,g.freshsalesAccount||(g.freshsalesAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_FRESHSALESACCOUNT",g.newFreshsalesAccount=!0),g.addNewFreshsalesAccount=function(){g.errors=[],d.intFreshsalesAccount.save(g.freshsalesAccount).$promise.then(function(e){g.freshsalesAccounts.unshift(e.toJSON()),o.success({title:"FreshsalesAccount properly created",msg:g.freshsalesAccount.name?g.freshsalesAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshsalesAccount=function(){g.errors=[],d.intFreshsalesAccount.update({id:g.freshsalesAccount.id},g.freshsalesAccount).$promise.then(function(e){var n=_.find(g.freshsalesAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshsalesAccount properly saved!",msg:g.freshsalesAccount.name?g.freshsalesAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshsalesAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshsalesAccount will be deleted.").ariaLabel("Delete FreshsalesAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshsalesAccount.delete({id:g.freshsalesAccount.id}).$promise.then(function(){_.remove(g.freshsalesAccounts,{id:g.freshsalesAccount.id}),o.success({title:"FreshsalesAccount properly deleted!",msg:(g.freshsalesAccount.name||"freshsalesAccount")+" has been deleted!"}),v(g.freshsalesAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","freshsalesAccounts","freshsalesAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.freshsalesAccount={},o.freshsalesConfiguration={},o.configurations=[],o.selectedFreshsalesConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.freshsalesAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intFreshsalesAccount.getConfigurations({id:o.freshsalesAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getFreshsalesConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getFreshsalesConfiguration=function(e){o.freshsalesConfiguration=o.configurations[e],o.selectedFreshsalesConfiguration=e,i.intFreshsalesConfiguration.getSubjects({id:o.freshsalesConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intFreshsalesConfiguration.getDescriptions({id:o.freshsalesConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intFreshsalesConfiguration.getFields({id:o.freshsalesConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditFreshsalesConfiguration=function(e,n){a.show({controller:"CreateOrEditFreshsalesConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshsalesConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getFreshsalesConfiguration(0)})},o.deleteFreshsalesConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the freshsalesConfiguration?").htmlContent("<b>"+(n.name||"freshsalesConfiguration")+"</b> will be deleted.").ariaLabel("delete freshsalesConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intFreshsalesConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"FreshsalesConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getFreshsalesConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("FreshsalesAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHSALESCONFIGURATION",g.freshsalesConfiguration=angular.copy(l),g.configurations=r,g.newFreshsalesConfiguration=!1,g.freshsalesConfiguration||(g.freshsalesConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_FRESHSALESCONFIGURATION",g.newFreshsalesConfiguration=!0),g.addNewFreshsalesConfiguration=function(){g.errors=[],d.intFreshsalesAccount.addConfiguration({id:n.params.id},g.freshsalesConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"FreshsalesConfiguration properly created",msg:g.freshsalesConfiguration.name?g.freshsalesConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshsalesConfiguration=function(){g.errors=[],d.intFreshsalesConfiguration.update({id:g.freshsalesConfiguration.id},g.freshsalesConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshsalesConfiguration properly saved!",msg:g.freshsalesConfiguration.name?g.freshsalesConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshsalesConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshsalesConfiguration will be deleted.").ariaLabel("Delete FreshsalesConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshsalesConfiguration.delete({id:g.freshsalesConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.freshsalesConfiguration.id}),o.success({title:"FreshsalesConfiguration properly deleted!",msg:(g.freshsalesConfiguration.name||"freshsalesConfiguration")+" has been deleted!"}),v(g.freshsalesConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","freshsalesConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshsalesField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshsalesField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intFreshsalesField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intFreshsalesAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.freshsalesAccount=c||e.params.freshsalesAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoFreshsalesAccounts=function(){e.go("app.integrations.freshsalesAccounts",{},{reload:"app.integrations.freshsalesAccounts"})},u.saveFreshsalesAccount=function(){r.intFreshsalesAccount.update({id:u.freshsalesAccount.id},u.freshsalesAccount).$promise.then(function(){l.success({title:"FreshsalesAccount updated!",msg:u.freshsalesAccount.name?u.freshsalesAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintFreshsalesAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","freshsalesAccount","userProfileSection"],angular.module("app.integrations").controller("FreshsalesAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.freshsalesAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="freshsalesAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFreshsalesAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.freshsalesAccounts.edit",{id:e.id,freshsalesAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intFreshsalesAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"FreshsalesAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"FreshsalesAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("freshsalesAccount")+"?").htmlContent("<b>"+(e.name||"freshsalesAccount")+"</b> will be deleted.").ariaLabel("delete freshsalesAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFreshsalesAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intFreshsalesAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FreshsalesAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFreshsalesAccount=function(e,n){i.show({controller:"CreateOrEditFreshsalesAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshsalesAccount:n,freshsalesAccounts:f.freshsalesAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFreshsalesAccount=y,f.exportSelectedFreshsalesAccounts=function(){var e=angular.copy(f.selectedFreshsalesAccounts);return f.selectedFreshsalesAccounts=[],e},f.deleteSelectedFreshsalesAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected freshsalesAccounts?").htmlContent("<b>"+f.selectedFreshsalesAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FreshsalesAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFreshsalesAccounts.forEach(function(e){y(e)}),f.selectedFreshsalesAccounts=[]})},f.deselectFreshsalesAccounts=function(){f.selectedFreshsalesAccounts=[]},f.selectAllFreshsalesAccounts=function(){f.selectedFreshsalesAccounts=f.freshsalesAccounts.rows};var b=!0,A=1;function E(e){f.freshsalesAccounts=e||{count:0,rows:[]}}function y(e){m.intFreshsalesAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.freshsalesAccounts.rows,{id:e.id}),f.freshsalesAccounts.count-=1,f.freshsalesAccounts.rows.length||f.getFreshsalesAccounts(),p.success({title:_.startCase("FreshsalesAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintFreshsalesAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintFreshsalesAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFreshsalesAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","freshsalesAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("FreshsalesAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SALESFORCEACCOUNT",g.salesforceAccount=angular.copy(l),g.salesforceAccounts=r,g.newSalesforceAccount=!1,g.salesforceAccount||(g.salesforceAccount={type:"integrationTab",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SALESFORCEACCOUNT",g.newSalesforceAccount=!0),g.addNewSalesforceAccount=function(){g.errors=[],d.intSalesforceAccount.save(g.salesforceAccount).$promise.then(function(e){g.salesforceAccounts.unshift(e.toJSON()),o.success({title:"SalesforceAccount properly created",msg:g.salesforceAccount.name?g.salesforceAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSalesforceAccount=function(){g.errors=[],d.intSalesforceAccount.update({id:g.salesforceAccount.id},g.salesforceAccount).$promise.then(function(e){var n=_.find(g.salesforceAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SalesforceAccount properly saved!",msg:g.salesforceAccount.name?g.salesforceAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSalesforceAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The salesforceAccount will be deleted.").ariaLabel("Delete SalesforceAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSalesforceAccount.delete({id:g.salesforceAccount.id}).$promise.then(function(){_.remove(g.salesforceAccounts,{id:g.salesforceAccount.id}),o.success({title:"SalesforceAccount properly deleted!",msg:(g.salesforceAccount.name||"salesforceAccount")+" has been deleted!"}),v(g.salesforceAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","salesforceAccounts","salesforceAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function n(){return"Case"===o.salesforceConfiguration.ticketType&&("lead"===o.salesforceConfiguration.moduleCreate||_.includes(["lead","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch))}function r(){return _.includes(["lead","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function l(){return _.includes(["contact","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function d(){return _.includes(["account","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function c(){return i.intSalesforceConfiguration.update({id:o.salesforceConfiguration.id},o.salesforceConfiguration).$promise.then(function(){s.success({title:"Module updated!",msg:"Module has been updated!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function m(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function u(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.salesforceAccount={},o.salesforceConfiguration={},o.configurations=[],o.selectedSalesforceConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.salesforceAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intSalesforceAccount.getConfigurations({id:o.salesforceAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getSalesforceConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getSalesforceConfiguration=function(e){o.salesforceConfiguration=o.configurations[e],o.salesforceConfiguration.isLead=n(),o.salesforceConfiguration.isLeadSearch=r(),o.salesforceConfiguration.isContactSearch=l(),o.salesforceConfiguration.isAccountSearch=d(),o.selectedSalesforceConfiguration=e,i.intSalesforceConfiguration.getSubjects({id:o.salesforceConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intSalesforceConfiguration.getDescriptions({id:o.salesforceConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intSalesforceConfiguration.getFields({id:o.salesforceConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditSalesforceConfiguration=function(e,n){a.show({controller:"CreateOrEditSalesforceConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{salesforceConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getSalesforceConfiguration(0)})},o.deleteSalesforceConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the salesforceConfiguration?").htmlContent("<b>"+(n.name||"salesforceConfiguration")+"</b> will be deleted.").ariaLabel("delete salesforceConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intSalesforceConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"SalesforceConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getSalesforceConfiguration(0)})},function(){console.log("CANCEL")})},o.selectChangedAdvanced=function(){o.salesforceConfiguration.isLead=n(),o.salesforceConfiguration.isLeadSearch=r(),o.salesforceConfiguration.isContactSearch=l(),o.salesforceConfiguration.isAccountSearch=d(),c()},o.salesforceConfiguration.isLead=!1,o.salesforceConfiguration.isLeadSearch=!1,o.salesforceConfiguration.isContactSearch=!1,o.salesforceConfiguration.isAccountSearch=!1,o.checkIsLead=n,o.checkIsLeadSearch=r,o.checkIsContactSearch=l,o.checkIsAccountSearch=d,o.saveSalesforceConfiguration=c,o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){m(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){m(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){u(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){u(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){p(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){p(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("SalesforceAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SALESFORCECONFIGURATION",g.salesforceConfiguration=angular.copy(l),g.configurations=r,g.newSalesforceConfiguration=!1,g.salesforceConfiguration||(g.salesforceConfiguration={channel:"voice",type:"inbound",ticketType:"Task"},g.title="INTEGRATIONS.NEW_SALESFORCECONFIGURATION",g.newSalesforceConfiguration=!0),g.addNewSalesforceConfiguration=function(){g.errors=[],d.intSalesforceAccount.addConfiguration({id:n.params.id},g.salesforceConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"SalesforceConfiguration properly created",msg:g.salesforceConfiguration.name?g.salesforceConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSalesforceConfiguration=function(){g.errors=[],d.intSalesforceConfiguration.update({id:g.salesforceConfiguration.id},g.salesforceConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SalesforceConfiguration properly saved!",msg:g.salesforceConfiguration.name?g.salesforceConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSalesforceConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The salesforceConfiguration will be deleted.").ariaLabel("Delete SalesforceConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSalesforceConfiguration.delete({id:g.salesforceConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.salesforceConfiguration.id}),o.success({title:"SalesforceConfiguration properly deleted!",msg:(g.salesforceConfiguration.name||"salesforceConfiguration")+" has been deleted!"}),v(g.salesforceConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","salesforceConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSalesforceField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSalesforceField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intSalesforceField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intSalesforceAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.salesforceAccount=c||e.params.salesforceAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoSalesforceAccounts=function(){e.go("app.integrations.salesforceAccounts",{},{reload:"app.integrations.salesforceAccounts"})},u.saveSalesforceAccount=function(){r.intSalesforceAccount.update({id:u.salesforceAccount.id},u.salesforceAccount).$promise.then(function(){l.success({title:"SalesforceAccount updated!",msg:u.salesforceAccount.name?u.salesforceAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintSalesforceAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","salesforceAccount","userProfileSection"],angular.module("app.integrations").controller("SalesforceAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.salesforceAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="salesforceAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSalesforceAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.salesforceAccounts.edit",{id:e.id,salesforceAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intSalesforceAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"SalesforceAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"SalesforceAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("salesforceAccount")+"?").htmlContent("<b>"+(e.name||"salesforceAccount")+"</b> will be deleted.").ariaLabel("delete salesforceAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSalesforceAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intSalesforceAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SalesforceAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSalesforceAccount=function(e,n){i.show({controller:"CreateOrEditSalesforceAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{salesforceAccount:n,salesforceAccounts:f.salesforceAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSalesforceAccount=y,f.exportSelectedSalesforceAccounts=function(){var e=angular.copy(f.selectedSalesforceAccounts);return f.selectedSalesforceAccounts=[],e},f.deleteSelectedSalesforceAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected salesforceAccounts?").htmlContent("<b>"+f.selectedSalesforceAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SalesforceAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSalesforceAccounts.forEach(function(e){y(e)}),f.selectedSalesforceAccounts=[]})},f.deselectSalesforceAccounts=function(){f.selectedSalesforceAccounts=[]},f.selectAllSalesforceAccounts=function(){f.selectedSalesforceAccounts=f.salesforceAccounts.rows};var b=!0,A=1;function E(e){f.salesforceAccounts=e||{count:0,rows:[]}}function y(e){m.intSalesforceAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.salesforceAccounts.rows,{id:e.id}),f.salesforceAccounts.count-=1,f.salesforceAccounts.rows.length||f.getSalesforceAccounts(),p.success({title:_.startCase("SalesforceAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintSalesforceAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintSalesforceAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSalesforceAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","salesforceAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("SalesforceAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SERVICENOWACCOUNT",g.servicenowAccount=angular.copy(l),g.servicenowAccounts=r,g.newServicenowAccount=!1,g.servicenowAccount||(g.servicenowAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SERVICENOWACCOUNT",g.newServicenowAccount=!0),g.addNewServicenowAccount=function(){g.errors=[],d.intServicenowAccount.save(g.servicenowAccount).$promise.then(function(e){g.servicenowAccounts.unshift(e.toJSON()),o.success({title:"ServicenowAccount properly created",msg:g.servicenowAccount.name?g.servicenowAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveServicenowAccount=function(){g.errors=[],d.intServicenowAccount.update({id:g.servicenowAccount.id},g.servicenowAccount).$promise.then(function(e){var n=_.find(g.servicenowAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ServicenowAccount properly saved!",msg:g.servicenowAccount.name?g.servicenowAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteServicenowAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The servicenowAccount will be deleted.").ariaLabel("Delete ServicenowAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intServicenowAccount.delete({id:g.servicenowAccount.id}).$promise.then(function(){_.remove(g.servicenowAccounts,{id:g.servicenowAccount.id}),o.success({title:"ServicenowAccount properly deleted!",msg:(g.servicenowAccount.name||"servicenowAccount")+" has been deleted!"}),v(g.servicenowAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","servicenowAccounts","servicenowAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.servicenowAccount={},o.servicenowConfiguration={},o.configurations=[],o.selectedServicenowConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.servicenowAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intServicenowAccount.getConfigurations({id:o.servicenowAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getServicenowConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getServicenowConfiguration=function(e){o.servicenowConfiguration=o.configurations[e],o.selectedServicenowConfiguration=e,i.intServicenowConfiguration.getSubjects({id:o.servicenowConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intServicenowConfiguration.getDescriptions({id:o.servicenowConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intServicenowConfiguration.getFields({id:o.servicenowConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditServicenowConfiguration=function(e,n){a.show({controller:"CreateOrEditServicenowConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{servicenowConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getServicenowConfiguration(0)})},o.deleteServicenowConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the servicenowConfiguration?").htmlContent("<b>"+(n.name||"servicenowConfiguration")+"</b> will be deleted.").ariaLabel("delete servicenowConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intServicenowConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"ServicenowConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getServicenowConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ServicenowAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SERVICENOWCONFIGURATION",g.servicenowConfiguration=angular.copy(l),g.configurations=r,g.newServicenowConfiguration=!1,g.servicenowConfiguration||(g.servicenowConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_SERVICENOWCONFIGURATION",g.newServicenowConfiguration=!0),g.addNewServicenowConfiguration=function(){g.errors=[],d.intServicenowAccount.addConfiguration({id:n.params.id},g.servicenowConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"ServicenowConfiguration properly created",msg:g.servicenowConfiguration.name?g.servicenowConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveServicenowConfiguration=function(){g.errors=[],d.intServicenowConfiguration.update({id:g.servicenowConfiguration.id},g.servicenowConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ServicenowConfiguration properly saved!",msg:g.servicenowConfiguration.name?g.servicenowConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteServicenowConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The servicenowConfiguration will be deleted.").ariaLabel("Delete ServicenowConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intServicenowConfiguration.delete({id:g.servicenowConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.servicenowConfiguration.id}),o.success({title:"ServicenowConfiguration properly deleted!",msg:(g.servicenowConfiguration.name||"servicenowConfiguration")+" has been deleted!"}),v(g.servicenowConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","servicenowConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intServicenowField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intServicenowField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intServicenowField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intServicenowAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.servicenowAccount=c||e.params.servicenowAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoServicenowAccounts=function(){e.go("app.integrations.servicenowAccounts",{},{reload:"app.integrations.servicenowAccounts"})},u.saveServicenowAccount=function(){r.intServicenowAccount.update({id:u.servicenowAccount.id},u.servicenowAccount).$promise.then(function(){l.success({title:"ServicenowAccount updated!",msg:u.servicenowAccount.name?u.servicenowAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintServicenowAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","servicenowAccount","userProfileSection"],angular.module("app.integrations").controller("ServicenowAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.servicenowAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="servicenowAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedServicenowAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.servicenowAccounts.edit",{id:e.id,servicenowAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intServicenowAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ServicenowAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ServicenowAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("servicenowAccount")+"?").htmlContent("<b>"+(e.name||"servicenowAccount")+"</b> will be deleted.").ariaLabel("delete servicenowAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getServicenowAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intServicenowAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ServicenowAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditServicenowAccount=function(e,n){i.show({controller:"CreateOrEditServicenowAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{servicenowAccount:n,servicenowAccounts:f.servicenowAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteServicenowAccount=y,f.exportSelectedServicenowAccounts=function(){var e=angular.copy(f.selectedServicenowAccounts);return f.selectedServicenowAccounts=[],e},f.deleteSelectedServicenowAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected servicenowAccounts?").htmlContent("<b>"+f.selectedServicenowAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ServicenowAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedServicenowAccounts.forEach(function(e){y(e)}),f.selectedServicenowAccounts=[]})},f.deselectServicenowAccounts=function(){f.selectedServicenowAccounts=[]},f.selectAllServicenowAccounts=function(){f.selectedServicenowAccounts=f.servicenowAccounts.rows};var b=!0,A=1;function E(e){f.servicenowAccounts=e||{count:0,rows:[]}}function y(e){m.intServicenowAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.servicenowAccounts.rows,{id:e.id}),f.servicenowAccounts.count-=1,f.servicenowAccounts.rows.length||f.getServicenowAccounts(),p.success({title:_.startCase("ServicenowAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintServicenowAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintServicenowAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getServicenowAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","servicenowAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ServicenowAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SUGARCRMACCOUNT",g.sugarcrmAccount=angular.copy(l),g.sugarcrmAccounts=r,g.newSugarcrmAccount=!1,g.sugarcrmAccount||(g.sugarcrmAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SUGARCRMACCOUNT",g.newSugarcrmAccount=!0),g.addNewSugarcrmAccount=function(){g.errors=[],d.intSugarcrmAccount.save(g.sugarcrmAccount).$promise.then(function(e){g.sugarcrmAccounts.unshift(e.toJSON()),o.success({title:"SugarcrmAccount properly created",msg:g.sugarcrmAccount.name?g.sugarcrmAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSugarcrmAccount=function(){g.errors=[],d.intSugarcrmAccount.update({id:g.sugarcrmAccount.id},g.sugarcrmAccount).$promise.then(function(e){var n=_.find(g.sugarcrmAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SugarcrmAccount properly saved!",msg:g.sugarcrmAccount.name?g.sugarcrmAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSugarcrmAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sugarcrmAccount will be deleted.").ariaLabel("Delete SugarcrmAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSugarcrmAccount.delete({id:g.sugarcrmAccount.id}).$promise.then(function(){_.remove(g.sugarcrmAccounts,{id:g.sugarcrmAccount.id}),o.success({title:"SugarcrmAccount properly deleted!",msg:(g.sugarcrmAccount.name||"sugarcrmAccount")+" has been deleted!"}),v(g.sugarcrmAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","sugarcrmAccounts","sugarcrmAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.sugarcrmAccount={},o.sugarcrmConfiguration={},o.configurations=[],o.selectedSugarcrmConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.sugarcrmAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intSugarcrmAccount.getConfigurations({id:o.sugarcrmAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getSugarcrmConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getSugarcrmConfiguration=function(e){o.sugarcrmConfiguration=o.configurations[e],o.selectedSugarcrmConfiguration=e,i.intSugarcrmConfiguration.getSubjects({id:o.sugarcrmConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intSugarcrmConfiguration.getDescriptions({id:o.sugarcrmConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intSugarcrmConfiguration.getFields({id:o.sugarcrmConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditSugarcrmConfiguration=function(e,n){a.show({controller:"CreateOrEditSugarcrmConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{sugarcrmConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getSugarcrmConfiguration(0)})},o.deleteSugarcrmConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the sugarcrmConfiguration?").htmlContent("<b>"+(n.name||"sugarcrmConfiguration")+"</b> will be deleted.").ariaLabel("delete sugarcrmConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intSugarcrmConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"SugarcrmConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getSugarcrmConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("SugarcrmAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SUGARCRMCONFIGURATION",g.sugarcrmConfiguration=angular.copy(l),g.configurations=r,g.newSugarcrmConfiguration=!1,g.sugarcrmConfiguration||(g.sugarcrmConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_SUGARCRMCONFIGURATION",g.newSugarcrmConfiguration=!0),g.addNewSugarcrmConfiguration=function(){g.errors=[],d.intSugarcrmAccount.addConfiguration({id:n.params.id},g.sugarcrmConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"SugarcrmConfiguration properly created",msg:g.sugarcrmConfiguration.name?g.sugarcrmConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSugarcrmConfiguration=function(){g.errors=[],d.intSugarcrmConfiguration.update({id:g.sugarcrmConfiguration.id},g.sugarcrmConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SugarcrmConfiguration properly saved!",msg:g.sugarcrmConfiguration.name?g.sugarcrmConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSugarcrmConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sugarcrmConfiguration will be deleted.").ariaLabel("Delete SugarcrmConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSugarcrmConfiguration.delete({id:g.sugarcrmConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.sugarcrmConfiguration.id}),o.success({title:"SugarcrmConfiguration properly deleted!",msg:(g.sugarcrmConfiguration.name||"sugarcrmConfiguration")+" has been deleted!"}),v(g.sugarcrmConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","sugarcrmConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSugarcrmField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSugarcrmField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intSugarcrmField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intSugarcrmAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.sugarcrmAccount=c||e.params.sugarcrmAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoSugarcrmAccounts=function(){e.go("app.integrations.sugarcrmAccounts",{},{reload:"app.integrations.sugarcrmAccounts"})},u.saveSugarcrmAccount=function(){r.intSugarcrmAccount.update({id:u.sugarcrmAccount.id},u.sugarcrmAccount).$promise.then(function(){l.success({title:"SugarcrmAccount updated!",msg:u.sugarcrmAccount.name?u.sugarcrmAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintSugarcrmAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","sugarcrmAccount","userProfileSection"],angular.module("app.integrations").controller("SugarcrmAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.sugarcrmAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="sugarcrmAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSugarcrmAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.sugarcrmAccounts.edit",{id:e.id,sugarcrmAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intSugarcrmAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"SugarcrmAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"SugarcrmAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("sugarcrmAccount")+"?").htmlContent("<b>"+(e.name||"sugarcrmAccount")+"</b> will be deleted.").ariaLabel("delete sugarcrmAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSugarcrmAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intSugarcrmAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SugarcrmAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSugarcrmAccount=function(e,n){i.show({controller:"CreateOrEditSugarcrmAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sugarcrmAccount:n,sugarcrmAccounts:f.sugarcrmAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSugarcrmAccount=y,f.exportSelectedSugarcrmAccounts=function(){var e=angular.copy(f.selectedSugarcrmAccounts);return f.selectedSugarcrmAccounts=[],e},f.deleteSelectedSugarcrmAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected sugarcrmAccounts?").htmlContent("<b>"+f.selectedSugarcrmAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SugarcrmAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSugarcrmAccounts.forEach(function(e){y(e)}),f.selectedSugarcrmAccounts=[]})},f.deselectSugarcrmAccounts=function(){f.selectedSugarcrmAccounts=[]},f.selectAllSugarcrmAccounts=function(){f.selectedSugarcrmAccounts=f.sugarcrmAccounts.rows};var b=!0,A=1;function E(e){f.sugarcrmAccounts=e||{count:0,rows:[]}}function y(e){m.intSugarcrmAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.sugarcrmAccounts.rows,{id:e.id}),f.sugarcrmAccounts.count-=1,f.sugarcrmAccounts.rows.length||f.getSugarcrmAccounts(),p.success({title:_.startCase("SugarcrmAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintSugarcrmAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintSugarcrmAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSugarcrmAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","sugarcrmAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("SugarcrmAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_VTIGERACCOUNT",g.vtigerAccount=angular.copy(l),g.vtigerAccounts=r,g.newVtigerAccount=!1,g.vtigerAccount||(g.vtigerAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_VTIGERACCOUNT",g.newVtigerAccount=!0),g.addNewVtigerAccount=function(){g.errors=[],d.intVtigerAccount.save(g.vtigerAccount).$promise.then(function(e){g.vtigerAccounts.unshift(e.toJSON()),o.success({title:"VtigerAccount properly created",msg:g.vtigerAccount.name?g.vtigerAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVtigerAccount=function(){g.errors=[],d.intVtigerAccount.update({id:g.vtigerAccount.id},g.vtigerAccount).$promise.then(function(e){var n=_.find(g.vtigerAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VtigerAccount properly saved!",msg:g.vtigerAccount.name?g.vtigerAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVtigerAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The vtigerAccount will be deleted.").ariaLabel("Delete VtigerAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intVtigerAccount.delete({id:g.vtigerAccount.id}).$promise.then(function(){_.remove(g.vtigerAccounts,{id:g.vtigerAccount.id}),o.success({title:"VtigerAccount properly deleted!",msg:(g.vtigerAccount.name||"vtigerAccount")+" has been deleted!"}),v(g.vtigerAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","vtigerAccounts","vtigerAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.vtigerAccount={},o.vtigerConfiguration={},o.configurations=[],o.selectedVtigerConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.vtigerAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intVtigerAccount.getConfigurations({id:o.vtigerAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getVtigerConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getVtigerConfiguration=function(e){o.vtigerConfiguration=o.configurations[e],o.selectedVtigerConfiguration=e,i.intVtigerConfiguration.getSubjects({id:o.vtigerConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intVtigerConfiguration.getDescriptions({id:o.vtigerConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intVtigerConfiguration.getFields({id:o.vtigerConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditVtigerConfiguration=function(e,n){a.show({controller:"CreateOrEditVtigerConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{vtigerConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getVtigerConfiguration(0)})},o.deleteVtigerConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the vtigerConfiguration?").htmlContent("<b>"+(n.name||"vtigerConfiguration")+"</b> will be deleted.").ariaLabel("delete vtigerConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intVtigerConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"VtigerConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getVtigerConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("VtigerAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_VTIGERCONFIGURATION",g.vtigerConfiguration=angular.copy(l),g.configurations=r,g.newVtigerConfiguration=!1,g.vtigerConfiguration||(g.vtigerConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_VTIGERCONFIGURATION",g.newVtigerConfiguration=!0),g.addNewVtigerConfiguration=function(){g.errors=[],d.intVtigerAccount.addConfiguration({id:n.params.id},g.vtigerConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"VtigerConfiguration properly created",msg:g.vtigerConfiguration.name?g.vtigerConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVtigerConfiguration=function(){g.errors=[],d.intVtigerConfiguration.update({id:g.vtigerConfiguration.id},g.vtigerConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VtigerConfiguration properly saved!",msg:g.vtigerConfiguration.name?g.vtigerConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVtigerConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The vtigerConfiguration will be deleted.").ariaLabel("Delete VtigerConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intVtigerConfiguration.delete({id:g.vtigerConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.vtigerConfiguration.id}),o.success({title:"VtigerConfiguration properly deleted!",msg:(g.vtigerConfiguration.name||"vtigerConfiguration")+" has been deleted!"}),v(g.vtigerConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","vtigerConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intVtigerField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intVtigerField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intVtigerField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intVtigerAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.vtigerAccount=c||e.params.vtigerAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoVtigerAccounts=function(){e.go("app.integrations.vtigerAccounts",{},{reload:"app.integrations.vtigerAccounts"})},u.saveVtigerAccount=function(){r.intVtigerAccount.update({id:u.vtigerAccount.id},u.vtigerAccount).$promise.then(function(){l.success({title:"VtigerAccount updated!",msg:u.vtigerAccount.name?u.vtigerAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintVtigerAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","vtigerAccount","userProfileSection"],angular.module("app.integrations").controller("VtigerAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.vtigerAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="vtigerAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedVtigerAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.vtigerAccounts.edit",{id:e.id,vtigerAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intVtigerAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"VtigerAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"VtigerAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("vtigerAccount")+"?").htmlContent("<b>"+(e.name||"vtigerAccount")+"</b> will be deleted.").ariaLabel("delete vtigerAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVtigerAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intVtigerAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VtigerAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVtigerAccount=function(e,n){i.show({controller:"CreateOrEditVtigerAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{vtigerAccount:n,vtigerAccounts:f.vtigerAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVtigerAccount=y,f.exportSelectedVtigerAccounts=function(){var e=angular.copy(f.selectedVtigerAccounts);return f.selectedVtigerAccounts=[],e},f.deleteSelectedVtigerAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected vtigerAccounts?").htmlContent("<b>"+f.selectedVtigerAccounts.length+" selected</b> will be deleted.").ariaLabel("delete VtigerAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVtigerAccounts.forEach(function(e){y(e)}),f.selectedVtigerAccounts=[]})},f.deselectVtigerAccounts=function(){f.selectedVtigerAccounts=[]},f.selectAllVtigerAccounts=function(){f.selectedVtigerAccounts=f.vtigerAccounts.rows};var b=!0,A=1;function E(e){f.vtigerAccounts=e||{count:0,rows:[]}}function y(e){m.intVtigerAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.vtigerAccounts.rows,{id:e.id}),f.vtigerAccounts.count-=1,f.vtigerAccounts.rows.length||f.getVtigerAccounts(),p.success({title:_.startCase("VtigerAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintVtigerAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintVtigerAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVtigerAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","vtigerAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("VtigerAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZENDESKACCOUNT",g.zendeskAccount=angular.copy(l),g.zendeskAccounts=r,g.newZendeskAccount=!1,g.zendeskAccount||(g.zendeskAccount={type:"integrationTab",authType:"password",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_ZENDESKACCOUNT",g.newZendeskAccount=!0),g.addNewZendeskAccount=function(){g.errors=[],d.intZendeskAccount.save(g.zendeskAccount).$promise.then(function(e){g.zendeskAccounts.unshift(e.toJSON()),o.success({title:"ZendeskAccount properly created",msg:g.zendeskAccount.name?g.zendeskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZendeskAccount=function(){g.errors=[],d.intZendeskAccount.update({id:g.zendeskAccount.id},g.zendeskAccount).$promise.then(function(e){var n=_.find(g.zendeskAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZendeskAccount properly saved!",msg:g.zendeskAccount.name?g.zendeskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZendeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zendeskAccount will be deleted.").ariaLabel("Delete ZendeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZendeskAccount.delete({id:g.zendeskAccount.id}).$promise.then(function(){_.remove(g.zendeskAccounts,{id:g.zendeskAccount.id}),o.success({title:"ZendeskAccount properly deleted!",msg:(g.zendeskAccount.name||"zendeskAccount")+" has been deleted!"}),v(g.zendeskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zendeskAccounts","zendeskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskAccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZendeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZendeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intZendeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intZendeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.zendeskAccount=c||e.params.zendeskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoZendeskAccounts=function(){e.go("app.integrations.zendeskAccounts",{},{reload:"app.integrations.zendeskAccounts"})},u.saveZendeskAccount=function(){r.intZendeskAccount.update({id:u.zendeskAccount.id},u.zendeskAccount).$promise.then(function(){l.success({title:"ZendeskAccount updated!",msg:u.zendeskAccount.name?u.zendeskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintZendeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","zendeskAccount","userProfileSection"],angular.module("app.integrations").controller("ZendeskAccountController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.zendeskAccount={},o.zendeskConfiguration={},o.zendeskConfigurations=[],o.selectedZendeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.zendeskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intZendeskAccount.getConfigurations({id:o.zendeskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.zendeskConfigurations=e.rows?e.rows:[],o.zendeskConfigurations.length&&o.getZendeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getZendeskConfiguration=function(e){o.zendeskConfiguration=o.zendeskConfigurations[e],o.selectedZendeskConfiguration=e,i.intZendeskConfiguration.getSubjects({id:o.zendeskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intZendeskConfiguration.getDescriptions({id:o.zendeskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intZendeskConfiguration.getFields({id:o.zendeskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intZendeskConfiguration.getTags({id:o.zendeskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditZendeskConfiguration=function(e,n){a.show({controller:"CreateOrEditZendeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/zendeskConfigurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{zendeskConfiguration:n,zendeskConfigurations:o.zendeskConfigurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getZendeskConfiguration(0)})},o.deleteZendeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the zendeskConfiguration?").htmlContent("<b>"+(n.name||"zendeskConfiguration")+"</b> will be deleted.").ariaLabel("delete zendeskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intZendeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.zendeskConfigurations,{id:n.id}),s.success({title:"ZendeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getZendeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intZendeskConfiguration.setTags({id:o.zendeskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ZendeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZENDESKCONFIGURATION",g.zendeskConfiguration=angular.copy(l),g.zendeskConfigurations=r,g.newZendeskConfiguration=!1,g.zendeskConfiguration||(g.zendeskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_ZENDESKCONFIGURATION",g.newZendeskConfiguration=!0),g.addNewZendeskConfiguration=function(){g.errors=[],d.intZendeskAccount.addConfiguration({id:n.params.id},g.zendeskConfiguration).$promise.then(function(e){g.zendeskConfigurations.unshift(e.toJSON()),o.success({title:"ZendeskConfiguration properly created",msg:g.zendeskConfiguration.name?g.zendeskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZendeskConfiguration=function(){g.errors=[],d.intZendeskConfiguration.update({id:g.zendeskConfiguration.id},g.zendeskConfiguration).$promise.then(function(e){var n=_.find(g.zendeskConfigurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZendeskConfiguration properly saved!",msg:g.zendeskConfiguration.name?g.zendeskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZendeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zendeskConfiguration will be deleted.").ariaLabel("Delete ZendeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZendeskConfiguration.delete({id:g.zendeskConfiguration.id}).$promise.then(function(){_.remove(g.zendeskConfigurations,{id:g.zendeskConfiguration.id}),o.success({title:"ZendeskConfiguration properly deleted!",msg:(g.zendeskConfiguration.name||"zendeskConfiguration")+" has been deleted!"}),v(g.zendeskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zendeskConfigurations","zendeskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.zendeskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="zendeskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedZendeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayauthType=_.keyBy([{option:"Password",value:"'password'"},{option:"Token",value:"'token'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.zendeskAccounts.edit",{id:e.id,zendeskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intZendeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ZendeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ZendeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("zendeskAccount")+"?").htmlContent("<b>"+(e.name||"zendeskAccount")+"</b> will be deleted.").ariaLabel("delete zendeskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getZendeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intZendeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ZendeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditZendeskAccount=function(e,n){i.show({controller:"CreateOrEditZendeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{zendeskAccount:n,zendeskAccounts:f.zendeskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteZendeskAccount=y,f.exportSelectedZendeskAccounts=function(){var e=angular.copy(f.selectedZendeskAccounts);return f.selectedZendeskAccounts=[],e},f.deleteSelectedZendeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected zendeskAccounts?").htmlContent("<b>"+f.selectedZendeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ZendeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedZendeskAccounts.forEach(function(e){y(e)}),f.selectedZendeskAccounts=[]})},f.deselectZendeskAccounts=function(){f.selectedZendeskAccounts=[]},f.selectAllZendeskAccounts=function(){f.selectedZendeskAccounts=f.zendeskAccounts.rows};var b=!0,A=1;function E(e){f.zendeskAccounts=e||{count:0,rows:[]}}function y(e){m.intZendeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.zendeskAccounts.rows,{id:e.id}),f.zendeskAccounts.count-=1,f.zendeskAccounts.rows.length||f.getZendeskAccounts(),p.success({title:_.startCase("ZendeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintZendeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintZendeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getZendeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","zendeskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ZendeskAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZOHOACCOUNT",g.zohoAccount=angular.copy(l),g.zohoAccounts=r,g.newZohoAccount=!1,g.zohoAccount||(g.zohoAccount={host:"zoho.com",zone:"EU",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_ZOHOACCOUNT",g.newZohoAccount=!0),g.addNewZohoAccount=function(){g.errors=[],d.intZohoAccount.save(g.zohoAccount).$promise.then(function(e){g.zohoAccounts.unshift(e.toJSON()),o.success({title:"ZohoAccount properly created",msg:g.zohoAccount.name?g.zohoAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZohoAccount=function(){g.errors=[],d.intZohoAccount.update({id:g.zohoAccount.id},g.zohoAccount).$promise.then(function(e){var n=_.find(g.zohoAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZohoAccount properly saved!",msg:g.zohoAccount.name?g.zohoAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZohoAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zohoAccount will be deleted.").ariaLabel("Delete ZohoAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZohoAccount.delete({id:g.zohoAccount.id}).$promise.then(function(){_.remove(g.zohoAccounts,{id:g.zohoAccount.id}),o.success({title:"ZohoAccount properly deleted!",msg:(g.zohoAccount.name||"zohoAccount")+" has been deleted!"}),v(g.zohoAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zohoAccounts","zohoAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.zohoAccount={},o.zohoConfiguration={},o.configurations=[],o.selectedZohoConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.zohoAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intZohoAccount.getConfigurations({id:o.zohoAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getZohoConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getZohoConfiguration=function(e){o.zohoConfiguration=o.configurations[e],o.selectedZohoConfiguration=e,i.intZohoConfiguration.getSubjects({id:o.zohoConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intZohoConfiguration.getDescriptions({id:o.zohoConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intZohoConfiguration.getFields({id:o.zohoConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditZohoConfiguration=function(e,n){a.show({controller:"CreateOrEditZohoConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{zohoConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getZohoConfiguration(0)})},o.deleteZohoConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the zohoConfiguration?").htmlContent("<b>"+(n.name||"zohoConfiguration")+"</b> will be deleted.").ariaLabel("delete zohoConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intZohoConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"ZohoConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getZohoConfiguration(0)})},function(){console.log("CANCEL")})},o.selectChangedAdvanced=function(){i.intZohoConfiguration.update({id:o.zohoConfiguration.id},o.zohoConfiguration).$promise.then(function(){s.success({title:"Module updated!",msg:"Module has been updated!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ZohoAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZOHOCONFIGURATION",g.zohoConfiguration=angular.copy(l),g.configurations=r,g.newZohoConfiguration=!1,g.zohoConfiguration||(g.zohoConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_ZOHOCONFIGURATION",g.newZohoConfiguration=!0),g.addNewZohoConfiguration=function(){g.errors=[],d.intZohoAccount.addConfiguration({id:n.params.id},g.zohoConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"ZohoConfiguration properly created",msg:g.zohoConfiguration.name?g.zohoConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZohoConfiguration=function(){g.errors=[],d.intZohoConfiguration.update({id:g.zohoConfiguration.id},g.zohoConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZohoConfiguration properly saved!",msg:g.zohoConfiguration.name?g.zohoConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZohoConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zohoConfiguration will be deleted.").ariaLabel("Delete ZohoConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZohoConfiguration.delete({id:g.zohoConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.zohoConfiguration.id}),o.success({title:"ZohoConfiguration properly deleted!",msg:(g.zohoConfiguration.name||"zohoConfiguration")+" has been deleted!"}),v(g.zohoConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","zohoConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZohoField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZohoField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intZohoField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intZohoAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.zohoAccount=c||e.params.zohoAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoZohoAccounts=function(){e.go("app.integrations.zohoAccounts",{},{reload:"app.integrations.zohoAccounts"})},u.saveZohoAccount=function(){r.intZohoAccount.update({id:u.zohoAccount.id},u.zohoAccount).$promise.then(function(){l.success({title:"ZohoAccount updated!",msg:u.zohoAccount.name?u.zohoAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintZohoAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","zohoAccount","userProfileSection"],angular.module("app.integrations").controller("ZohoAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.zohoAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="zohoAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedZohoAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arrayhost=_.keyBy([{option:"zoho.com",value:"'zoho.com'"},{option:"zoho.eu",value:"'zoho.eu'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayzone=_.keyBy([{option:"US",value:"'US'"},{option:"AU",value:"'AU'"},{option:"EU",value:"'EU'"},{option:"IN",value:"'IN'"},{option:"CN",value:"'CN'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.zohoAccounts.edit",{id:e.id,zohoAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intZohoAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ZohoAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ZohoAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("zohoAccount")+"?").htmlContent("<b>"+(e.name||"zohoAccount")+"</b> will be deleted.").ariaLabel("delete zohoAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getZohoAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intZohoAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ZohoAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditZohoAccount=function(e,n){i.show({controller:"CreateOrEditZohoAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{zohoAccount:n,zohoAccounts:f.zohoAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteZohoAccount=y,f.exportSelectedZohoAccounts=function(){var e=angular.copy(f.selectedZohoAccounts);return f.selectedZohoAccounts=[],e},f.deleteSelectedZohoAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected zohoAccounts?").htmlContent("<b>"+f.selectedZohoAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ZohoAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedZohoAccounts.forEach(function(e){y(e)}),f.selectedZohoAccounts=[]})},f.deselectZohoAccounts=function(){f.selectedZohoAccounts=[]},f.selectAllZohoAccounts=function(){f.selectedZohoAccounts=f.zohoAccounts.rows};var b=!0,A=1;function E(e){f.zohoAccounts=e||{count:0,rows:[]}}function y(e){m.intZohoAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.zohoAccounts.rows,{id:e.id}),f.zohoAccounts.count-=1,f.zohoAccounts.rows.length||f.getZohoAccounts(),p.success({title:_.startCase("ZohoAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintZohoAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintZohoAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getZohoAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","zohoAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ZohoAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="JSCRIPTY.EDIT_PROJECT",g.project=angular.copy(l),g.projects=r,g.newProject=!1,g.project||(g.project={enableUncompleteSave:!0,sendUnpauseOnSubmit:!0},g.title="JSCRIPTY.NEW_PROJECT",g.newProject=!0),g.addNewProject=function(){g.errors=[],d.jscriptyProject.save(g.project).$promise.then(function(e){g.projects.unshift(e.toJSON()),o.success({title:"Project properly created",msg:g.project.name?g.project.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveProject=function(){g.errors=[],d.jscriptyProject.update({id:g.project.id},g.project).$promise.then(function(e){var n=_.find(g.projects,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Project properly saved!",msg:g.project.name?g.project.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteProject=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The project will be deleted.").ariaLabel("Delete Project").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.jscriptyProject.delete({id:g.project.id}).$promise.then(function(){_.remove(g.projects,{id:g.project.id}),o.success({title:"Project properly deleted!",msg:(g.project.name||"project")+" has been deleted!"}),v(g.project)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","projects","project","api","Auth","license","setting","crudPermissions"],angular.module("app.jscripty").controller("CreateOrEditProjectDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o){var r=this;r.currentUser=i.getCurrentUser(),r.project={},r.localizationMap=o;var l=new Date;r.pickerModel={dateStart:new Date(l.getFullYear(),l.getMonth(),1),dateEnd:new Date(l.getFullYear(),l.getMonth()+1,0),selectedTemplate:"TM"},r.init=function(e,n){r.project=e,r.userProfile=n,r.getAnswers()},r.getSummary=function(){return a.jscriptyProject.getSummary({id:r.project.id,startTime:{$gte:r.pickerModel.dateStart,$lte:moment(r.pickerModel.dateEnd).add(23,"hours").add(59,"minutes").add(59,"seconds").format()},nolimit:!0}).$promise.then(function(e){if(void 0!==e.length){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","jscriptyProjectSummary_"+r.project.id+".csv"),a.click()}else s.info({title:"EXPORT",msg:"No answers available"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.getSummary",msg:e.data?JSON.stringify(e.data):e.toString()})})},r.getAnswers=function(){return r.hasIdAnswers=!1,a.jscriptyProject.getAnswers({id:r.project.id,sort:"-createdAt,questionId",createdAt:{$gte:moment(r.pickerModel.dateStart).add(0,"hours").add(0,"minutes").add(0,"seconds").utcOffset(0,!0).format(),$lte:moment(r.pickerModel.dateEnd).add(23,"hours").add(59,"minutes").add(59,"seconds").utcOffset(0,!0).format()},nolimit:!0}).$promise.then(function(e){if(e&&e.rows&&e.hasOwnProperty("count")){r.answers={};for(var n=0,t=e.count;n<t;n++)e.rows[n].questionId&&(r.hasIdAnswers=!0,r.answers.hasOwnProperty(e.rows[n].questionId)||(r.answers[e.rows[n].questionId]={question:e.rows[n].question,answers:{},sum:0}),""===e.rows[n].answer&&(e.rows[n].answer="NO_ANSWER"),r.answers[e.rows[n].questionId].answers[e.rows[n].answer]?r.answers[e.rows[n].questionId].answers[e.rows[n].answer]+=1:r.answers[e.rows[n].questionId].answers[e.rows[n].answer]=1,r.answers[e.rows[n].questionId].sum+=1)}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETANSWERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$mdDialog","$document","$window","api","Auth","toasty","dateFilterLocalizationFactory"],angular.module("app.jscripty").controller("ProjectAnswersController",e)}(),function(){"use strict";angular.module("app.jscripty").controller("ProjectBuilderController",function(){var n=this;n.project={},n.optionsBuilder={questionTypes:["text","textarea","radio","checkbox","select","number","date","time","email","range","url"],elementTypes:["question","paragraph"]},n.init=function(e){n.project=e,_.isObjectLike(e.formData)?n.project.formData=e.formData:n.isJsonString(e.formData)?n.project.formData=JSON.parse(e.formData):n.project.formData={}},n.isJsonString=function(e){if(_.isNil(e))return!1;try{JSON.parse(e)}catch(e){return!1}return!0}})}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newProject=!0,r.project=angular.copy(i),r.projects=s,r.title=o.instant("JSCRIPTY.CLONE_PROJECT"),i&&i.name&&(r.title+=": "+i.name),r.cloneProject=function(){return e.jscriptyProject.clone({id:i.id},r.project).$promise.then(function(e){r.projects.unshift(e.toJSON()),a.success({title:"Project properly cloned",msg:r.project.name?r.project.name+" has been cloned!":""}),t.go("app.jscripty.projects.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","project","projects","$translate"],angular.module("app.jscripty").controller("ProjectcloneController",e)}(),function(){"use strict";function e(a,i,n){var o=this;o.project={},o.responseData={},o.formViewer={},o.init=function(e){o.project=e,n.$on("mwForm.pageEvents.pageCurrentChanged",function(e,n){if(n.currentPage&&o.project.formData&&o.project.formData.pages)for(var t=0,a=o.project.formData.pages.length;t<a;t++)if(n.currentPage.number<t+1&&o.project.formData.pages[t].elements)for(var i=0,s=o.project.formData.pages[t].elements.length;i<s;i++)"question"===o.project.formData.pages[t].elements[i].type&&o.project.formData.pages[t].elements[i].question&&delete o.responseData[o.project.formData.pages[t].elements[i].question.id]})},o.onSubmit=function(e){var n=a.defer(),t=i.confirm().title("Would you like to save your survey?").textContent("").ariaLabel("survey").targetEvent(e).ok("SAVE").cancel("CANCEL");return i.show(t).then(function(){n.resolve(!0)},function(){n.reject()}),n.promise},o.resetViewer=function(){o.formViewer.reset&&o.formViewer.reset()}}e.$inject=["$q","$mdDialog","$scope"],angular.module("app.jscripty").controller("ProjectViewerController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.projectSessions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.jscriptyProject.getSessions(m.query,u).$promise}function g(e){d.jscriptySessionReport.delete({id:e.id}).$promise.then(function(){_.remove(m.projectSessions.rows,{id:e.id}),m.projectSessions.count-=1,m.projectSessions.rows.length||p(),l.success({title:"Session deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETjscriptyProject"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETjscriptyProject",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.project={},m.projectSessions={count:0,rows:[]},m.selectedProjectSessions=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,starttime,endtime,membername,calleridnum,completed",sort:"-starttime",limit:10,page:1},m.init=function(e,n,t){m.project=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.id=m.project.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the session?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("session #")+e.id||"session")+"</b> will be deleted.").ariaLabel("delete session").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getProjectSessions=p,m.createOrEditProjectSession=function(e,n){o.show({controller:"CreateOrEditSessionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:m.project,session:n,sessions:m.projectSessions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.showQuestionsProjectSession=function(e,t){o.show({controller:"ShowQuestionsSessionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,resolve:{questions:["apiResolver","$stateParams",function(e,n){return e.resolve("jscriptySessionReport@getQuestions",{fields:"question,answer",sort:"id",id:t.id})}]},locals:{project:m.project,session:t}})},m.exportSelectedProjectSessions=function(){var e=angular.copy(m.selectedProjectSessions);return m.selectedProjectSessions=[],e},m.deleteProjectSession=g,m.deleteSelectedProjectSessions=function(e){var n=o.confirm().title("Are you sure want to delete the selected sessions?").htmlContent("<b>"+m.selectedProjectSessions.length+" selected</b> will be deleted.").ariaLabel("delete sessions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedProjectSessions.forEach(function(e){g(e)}),m.selectedProjectSessions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.jscripty").controller("ProjectSessionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){this.title="JSCRIPTY.SESSION_RESULTS",this.session=s,this.questions=o,this.project=r,this.closeDialog=function(e){a.hide(e)}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","session","questions","project","api"],angular.module("app.jscripty").controller("ShowQuestionsSessionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.project=c||e.params.project||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.clonedialog=function(e,n){t.show({controller:"ProjectcloneController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/clone/clone.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{project:e,projects:p.projects?p.projects.rows:[],crudPermissions:p.crudPermissions}})},p.alert=l.info,p.gotoProjects=function(){e.go("app.jscripty.projects",{},{reload:"app.jscripty.projects"})},p.saveProject=function(){r.jscriptyProject.update({id:p.project.id},p.project).$promise.then(function(){l.success({title:"Project updated!",msg:p.project.name?p.project.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETjscriptyProject",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","project","userProfile","userProfileSection"],angular.module("app.jscripty").controller("JscriptyProjectController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.projects=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="projects",f.listOrder="",f.listOrderAsc=null,f.selectedProjects=[],f.query={fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.jscripty.projects.edit",{id:e.id,project:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"ProjectcloneController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{project:e,projects:f.projects?f.projects.rows:[],crudPermissions:f.crudPermissions}})},f.sessionsgoto=function(e,n){t.go("app.jscripty.projects.edit",{id:e.id,tab:3})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("project")+"?").htmlContent("<b>"+(e.name||"project")+"</b> will be deleted.").ariaLabel("delete project").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getProjects=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.jscriptyProject.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Projects",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditProject=function(e,n){i.show({controller:"CreateOrEditProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:n,projects:f.projects.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteProject=y,f.exportSelectedProjects=function(){var e=angular.copy(f.selectedProjects);return f.selectedProjects=[],e},f.deleteSelectedProjects=function(e){var n=i.confirm().title("Are you sure want to delete the selected projects?").htmlContent("<b>"+f.selectedProjects.length+" selected</b> will be deleted.").ariaLabel("delete Projects").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedProjects.forEach(function(e){y(e)}),f.selectedProjects=[]})},f.deselectProjects=function(){f.selectedProjects=[]},f.selectAllProjects=function(){f.selectedProjects=f.projects.rows};var b=!0,A=1;function E(e){f.projects=e||{count:0,rows:[]}}function y(e){m.jscriptyProject.delete({id:e.id}).$promise.then(function(){_.remove(f.projects.rows,{id:e.id}),f.projects.count-=1,f.projects.rows.length||f.getProjects(),p.success({title:_.startCase("Project")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEjscriptyProject"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEjscriptyProject",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getProjects())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","projects","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.jscripty").controller("JscriptyProjectsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILACCOUNT",g.mailAccount=angular.copy(l),g.mailAccounts=r,g.newMailAccount=!1,g.mailAccount||(g.mailAccount={active:!0,cservice:"null",cauthentication:!0,fontSize:13,waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="MAIL.NEW_MAILACCOUNT",g.newMailAccount=!0),n.params.id&&(g.mailAccount.MailAccountId=n.params.id),g.addNewMailAccount=function(){g.errors=[],d.mailAccount.save(g.mailAccount).$promise.then(function(e){g.mailAccounts.unshift(e.toJSON()),o.success({title:"MailAccount properly created",msg:g.mailAccount.name?g.mailAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailAccount=function(){g.errors=[],d.mailAccount.update({id:g.mailAccount.id},g.mailAccount).$promise.then(function(e){var n=_.find(g.mailAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailAccount properly saved!",msg:g.mailAccount.name?g.mailAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailAccount=function(e){if(g.mailAccount.service)return o.error({title:"Mail Account not deleted!",msg:"You can't remove service account"});g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailAccount will be deleted.").ariaLabel("Delete MailAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailAccount.delete({id:g.mailAccount.id}).$promise.then(function(){_.remove(g.mailAccounts,{id:g.mailAccount.id}),o.success({title:"MailAccount properly deleted!",msg:(g.mailAccount.name||"mailAccount")+" has been deleted!"}),v(g.mailAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.mailAccount&&(t=_.find(g.lists,{id:Number(g.mailAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.mailAccount&&(a=_.find(g.lists,{id:Number(g.mailAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailAccounts","mailAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.mailAccountApps.rows.length){var t=r.mailAccountApps.rows[n]?r.mailAccountApps.rows[n]:r.mailAccountApps.rows[0];i.show({controller:"EditMailAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccountApp:t,mailAccount:r.mailAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.mailAccountApps.rows[n]=e:r.mailAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.mailAccountApps.rows.length;t++,0){var a=r.mailAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.mailAccount.context,a.exten=r.mailAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.mailAccount.addApplications({id:r.mailAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.mailAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.mailAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.mailAccount={},r.mailAccountApps={count:0,rows:[]},r.selectedMailAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"MailQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"mailQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:601}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Reply_Type",name:"replyType",type:"select",defaultValue:"1",values:[{option:"Reply",value:"0"},{option:"Reply All",value:"1"}],required:!0,param:1},{title:"Text",name:"text",type:"html",required:!0,param:2}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.mailAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getMailAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.mailAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getMailAccountApps=function(){r.promise=o.mailAccount.getApplications(r.query,t).$promise},r.editMailAccountApp=n,r.editInterval=function(e,n){if(r.mailAccountApps.rows.length){var t=r.mailAccountApps.rows[n]?r.mailAccountApps.rows[n]:r.mailAccountApps.rows[0];i.show({controller:"EditMailAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteMailAccountApp=function(e){_.remove(r.mailAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedMailAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedMailAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedMailAccountApps.forEach(function(e){_.remove(r.mailAccountApps.rows,{id:e.id})}),r.selectedMailAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.mail").controller("MailAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailAccount.getAgents({id:c.mailAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserMailAccount?"penalty "+e.UserMailAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.mailAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailAccount.removeAgents({id:c.mailAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailAccount.addAgents({id:c.mailAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("MAIL.ALL_AGENTS"),labelSelected:r.instant("MAIL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","mailAccount","mailAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.agent.text=d.slice(2,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.autoreply.text=d.slice(2,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.replyType=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.autoreply.text=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.autoreply.times=1,l.autoreply.replyType=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.replyType,e[2]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.close.text=d.slice(2,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.gotoif.text=d.slice(2,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.gotop.text=d.slice(2,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditMailAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.noop.text=d.slice(2,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.queue.text=d.slice(2,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("mail")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.mailQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.mailQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:601}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.system.text=d.slice(2,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.tag.text=d.slice(2,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.mailAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.mailAccountInteractions.rows.length;n+=1){var t=m.mailAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,(void 0===m.query.closed||null===m.query.closed||m.query.closed)&&delete m.query.substatus,m.promise=d.mailInteraction.get(m.query,u).$promise}function g(e){d.mailInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.mailAccountInteractions.rows,{id:e.id}),m.mailAccountInteractions.count-=1,m.mailAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETmailAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){_.isEmpty(e.to)||_.includes(e.to,m.mailAccount.email)?e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.email||""):e.contactName=i.instant("MAIL.UNKNOWN"):(e.contactName=e.to.split(" <")[0],e.contactInfo=e.to.split("<").pop().split(">")[0])}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.mailAccount={},m.mailAccountInteractions={count:0,rows:[]},m.selectedMailAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.mailAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.MailAccountId=m.mailAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"plainBody",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Substatus",column:"substatus",type:"multiselect",options:{field:"name",route:{model:"mailSubstatus",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){return d.mailSubstatus.get({nolimit:!0}).$promise.then(function(e){m.subStatuses=e||{count:0,rows:[]}})}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Substatus",key:"substatus",type:"select",label:"DASHBOARDS.SELECT_SUBSTATUS",options:m.subStatuses.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NONE"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name",ngIf:"closed === 0"},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.mailInteractionDownload=function(s,e,n){return d.mailInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="mail-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getMailAccountInteractions=p,m.createOrEditMailAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:m.mailAccount,interaction:n,interactions:m.mailAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spymailInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"mail",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"mail.mailAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||MailAccountId:=$eq["+m.mailAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedMailAccountInteractions=function(){var e=angular.copy(m.selectedMailAccountInteractions);return m.selectedMailAccountInteractions=[],e},m.deleteMailAccountInteraction=g,m.deleteSelectedMailAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedMailAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMailAccountInteractions.forEach(function(e){g(e)}),m.selectedMailAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.mail").controller("MailAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.mailAccountMailCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.mailAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.mailAccountMailCannedAnswers.rows,{id:e.id}),m.mailAccountMailCannedAnswers.count-=1,m.mailAccountMailCannedAnswers.rows.length||p(),l.success({title:"MailCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETmailAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.mailAccount={},m.mailAccountMailCannedAnswers={count:0,rows:[]},m.selectedMailAccountMailCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.mailAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.MailAccountId=m.mailAccount.id,m.query.id=m.mailAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the mailCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("mailCannedAnswer #")+e.id||"mailCannedAnswer")+"</b> will be deleted.").ariaLabel("delete mailCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getMailAccountMailCannedAnswers=p,m.createOrEditMailAccountMailCannedAnswer=function(e,n){o.show({controller:"CreateOrEditMailCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/mailCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:m.mailAccount,mailCannedAnswer:n,mailCannedAnswers:m.mailAccountMailCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedMailAccountMailCannedAnswers=function(){var e=angular.copy(m.selectedMailAccountMailCannedAnswers);return m.selectedMailAccountMailCannedAnswers=[],e},m.deleteMailAccountMailCannedAnswer=g,m.deleteSelectedMailAccountMailCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected mailCannedAnswers?").htmlContent("<b>"+m.selectedMailAccountMailCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete mailCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMailAccountMailCannedAnswers.forEach(function(e){g(e)}),m.selectedMailAccountMailCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.mail").controller("MailAccountMailCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILCANNEDANSWER",g.mailCannedAnswer=angular.copy(l),g.mailCannedAnswers=r,g.newMailCannedAnswer=!1,g.mailCannedAnswer||(g.mailCannedAnswer={},g.title="MAIL.NEW_MAILCANNEDANSWER",g.newMailCannedAnswer=!0),n.params.id&&(g.mailCannedAnswer.MailAccountId=n.params.id),g.addNewMailCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.mailCannedAnswer).$promise.then(function(e){g.mailCannedAnswers.unshift(e.toJSON()),o.success({title:"MailCannedAnswer properly created",msg:g.mailCannedAnswer.name?g.mailCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.mailCannedAnswer.id},g.mailCannedAnswer).$promise.then(function(e){var n=_.find(g.mailCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailCannedAnswer properly saved!",msg:g.mailCannedAnswer.name?g.mailCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailCannedAnswer will be deleted.").ariaLabel("Delete MailCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.mailCannedAnswer.id}).$promise.then(function(){_.remove(g.mailCannedAnswers,{id:g.mailCannedAnswer.id}),o.success({title:"MailCannedAnswer properly deleted!",msg:(g.mailCannedAnswer.name||"mailCannedAnswer")+" has been deleted!"}),v(g.mailCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailCannedAnswers","mailCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.mailAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.mailAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.MailAccountId=m.mailAccount.id,m.query.id=m.mailAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.mailAccount.id,field:"MailAccountId",route:"mailAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.mail").controller("MailAccountDispositionsController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=n,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=e.protocol()+"://"+e.host(),p.mailAccount=c||t.params.mailAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=t.params.tab||0,p.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.mail.realtime.accounts",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.mail.realtime.accounts",{})}},p.agentadddialog=function(e,n){a.show({controller:"MailAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailAccount:e,mailAccounts:p.mailAccounts?p.mailAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoMailAccounts=function(){t.go("app.mail.mailAccounts",{},{reload:"app.mail.mailAccounts"})},p.saveMailAccount=function(){r.mailAccount.update({id:p.mailAccount.id},p.mailAccount).$promise.then(function(){l.success({title:"MailAccount updated!",msg:p.mailAccount.name?p.mailAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.mailAccount&&(t=_.find(p.lists,{id:Number(p.mailAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.mailAccount&&(a=_.find(p.lists,{id:Number(p.mailAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","mailAccount","userProfile","userProfileSection"],angular.module("app.mail").controller("MailAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedMailAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.arraycservice=_.keyBy([{option:"Custom",value:"null"},{option:"Gmail",value:"'gmail'"},{option:"Hotmail",value:"'hotmail'"},{option:"Yahoo",value:"'yahoo'"},{option:"Outlook365",value:"'outlook365'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f["arrayImap.service"]=_.keyBy([{option:"Custom",value:"null"},{option:"Gmail",value:"'gmail'"},{option:"Hotmail",value:"'hotmail'"},{option:"Yahoo",value:"'yahoo'"},{option:"Outlook365",value:"'outlook365'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f["arraySmtp.service"]=_.keyBy([{option:"Custom",value:"null"},{option:"Gmail",value:"'gmail'"},{option:"Hotmail",value:"'hotmail'"},{option:"Yahoo",value:"'yahoo'"},{option:"Outlook365",value:"'outlook365'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.mail.mailAccounts.edit",{id:e.id,mailAccount:e,crudPermissions:f.crudPermissions})},f.verifysmtpverifysmtp=function(e,n){{if(e&&e.id)return m.mailAccount.verifySmtp({id:e.id}).$promise.then(function(){p.success({title:"Smtp properly verified",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"Smtp properly verified",msg:e.data?JSON.stringify(e.data):e.toString()})});p.error({title:"Smtp properly verified",msg:"Smpt id unknown"})}},f.interactionsgoto=function(e,n){t.go("app.mail.mailAccounts.edit",{id:e.id,tab:7})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.mail.realtime.accounts",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.mail.realtime.accounts",{})}},f.agentadddialog=function(e,n){i.show({controller:"MailAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailAccount:e,mailAccounts:f.mailAccounts?f.mailAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailAccount")+"?").htmlContent("<b>"+(e.name||"mailAccount")+"</b> will be deleted.").ariaLabel("delete mailAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMailAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailAccount=function(e,n){i.show({controller:"CreateOrEditMailAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:n,mailAccounts:f.mailAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailAccount=y,f.exportSelectedMailAccounts=function(){var e=angular.copy(f.selectedMailAccounts);return f.selectedMailAccounts=[],e},f.deleteSelectedMailAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailAccounts?").htmlContent("<b>"+f.selectedMailAccounts.length+" selected</b> will be deleted.").ariaLabel("delete MailAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailAccounts.forEach(function(e){y(e)}),f.selectedMailAccounts=[]})},f.deselectMailAccounts=function(){f.selectedMailAccounts=[]},f.selectAllMailAccounts=function(){f.selectedMailAccounts=f.mailAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.mailAccount&&(t=_.find(f.lists,{id:Number(f.mailAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.mailAccount&&(a=_.find(f.lists,{id:Number(f.mailAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.mailAccounts=e||{count:0,rows:[]}}function y(e){if(e.service)return p.error({title:"Mail Account not deleted!",msg:"You can't remove service account"});m.mailAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.mailAccounts.rows,{id:e.id}),f.mailAccounts.count-=1,f.mailAccounts.rows.length||f.getMailAccounts(),p.success({title:_.startCase("MailAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILQUEUE",g.mailQueue=angular.copy(l),g.mailQueues=r,g.newMailQueue=!1,g.mailQueue||(g.mailQueue={strategy:"beepall",timeout:10},g.title="MAIL.NEW_MAILQUEUE",g.newMailQueue=!0),g.addNewMailQueue=function(){g.errors=[],d.mailQueue.save(g.mailQueue).$promise.then(function(e){g.mailQueues.unshift(e.toJSON()),o.success({title:"MailQueue properly created",msg:g.mailQueue.name?g.mailQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailQueue=function(){g.errors=[],d.mailQueue.update({id:g.mailQueue.id},g.mailQueue).$promise.then(function(e){var n=_.find(g.mailQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailQueue properly saved!",msg:g.mailQueue.name?g.mailQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailQueue will be deleted.").ariaLabel("Delete MailQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailQueue.delete({id:g.mailQueue.id}).$promise.then(function(){_.remove(g.mailQueues,{id:g.mailQueue.id}),o.success({title:"MailQueue properly deleted!",msg:(g.mailQueue.name||"mailQueue")+" has been deleted!"}),v(g.mailQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailQueues","mailQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailQueue.getAgents({id:c.mailQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserMailQueue?"penalty "+e.UserMailQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.mailQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.removeAgents({id:c.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.addAgents({id:c.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("MAIL.ALL_AGENTS"),labelSelected:r.instant("MAIL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","mailQueue","mailQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailQueue.getTeams({id:l.mailQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.mailQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MAIL.ALL_TEAMS"),labelSelected:t.instant("MAIL.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.removeTeams({id:l.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.addTeams({id:l.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","mailQueue","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.mailQueue=c||e.params.mailQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"MailQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:u.mailQueues?u.mailQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:u.mailQueues?u.mailQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoMailQueues=function(){e.go("app.mail.mailQueues",{},{reload:"app.mail.mailQueues"})},u.saveMailQueue=function(){r.mailQueue.update({id:u.mailQueue.id},u.mailQueue).$promise.then(function(){l.success({title:"MailQueue updated!",msg:u.mailQueue.name?u.mailQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","mailQueue","userProfileSection"],angular.module("app.mail").controller("MailQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailQueues",f.listOrder="",f.listOrderAsc=null,f.selectedMailQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.mail.mailQueues.edit",{id:e.id,mailQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"MailQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:f.mailQueues?f.mailQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:f.mailQueues?f.mailQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailQueue")+"?").htmlContent("<b>"+(e.name||"mailQueue")+"</b> will be deleted.").ariaLabel("delete mailQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.mail.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.mail.realtime.queues",{})}},f.success=E,f.getMailQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailQueue=function(e,n){i.show({controller:"CreateOrEditMailQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:f.mailQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailQueue=y,f.exportSelectedMailQueues=function(){var e=angular.copy(f.selectedMailQueues);return f.selectedMailQueues=[],e},f.deleteSelectedMailQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailQueues?").htmlContent("<b>"+f.selectedMailQueues.length+" selected</b> will be deleted.").ariaLabel("delete MailQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailQueues.forEach(function(e){y(e)}),f.selectedMailQueues=[]})},f.deselectMailQueues=function(){f.selectedMailQueues=[]},f.selectAllMailQueues=function(){f.selectedMailQueues=f.mailQueues.rows};var b=!0,A=1;function E(e){f.mailQueues=e||{count:0,rows:[]}}function y(e){m.mailQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.mailQueues.rows,{id:e.id}),f.mailQueues.count-=1,f.mailQueues.rows.length||f.getMailQueues(),p.success({title:_.startCase("MailQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILSUBSTATUS",g.mailSubstatus=angular.copy(l),g.mailSubtatuses=r,g.newMailSubstatus=!1,g.mailSubstatus||(g.mailSubstatus={},g.title="MAIL.NEW_MAILSUBSTATUS",g.newMailSubstatus=!0),g.addNewMailSubstatus=function(){g.errors=[],d.mailSubstatus.save(g.mailSubstatus).$promise.then(function(e){g.mailSubtatuses.unshift(e.toJSON()),o.success({title:"MailSubstatus properly created",msg:g.mailSubstatus.name?g.mailSubstatus.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailSubstatus=function(){g.errors=[],d.mailSubstatus.update({id:g.mailSubstatus.id},g.mailSubstatus).$promise.then(function(e){var n=_.find(g.mailSubtatuses,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailSubstatus properly saved!",msg:g.mailSubstatus.name?g.mailSubstatus.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailSubstatus=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailSubstatus will be deleted.").ariaLabel("Delete MailSubstatus").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailSubstatus.delete({id:g.mailSubstatus.id}).$promise.then(function(){_.remove(g.mailSubtatuses,{id:g.mailSubstatus.id}),o.success({title:"MailSubstatus properly deleted!",msg:(g.mailSubstatus.name||"mailSubstatus")+" has been deleted!"}),v(g.mailSubstatus)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailSubtatuses","mailSubstatus","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailSubstatusDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailSubtatuses=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailSubtatuses",f.listOrder="",f.listOrderAsc=null,f.selectedMailSubstatuses=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditMailSubstatusDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailSubtatuses/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailSubstatus:e,mailSubtatuses:f.mailSubtatuses.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailSubstatus")+"?").htmlContent("<b>"+(e.name||"mailSubstatus")+"</b> will be deleted.").ariaLabel("delete mailSubstatus").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMailSubstatuses=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailSubstatus.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailSubstatuses",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailSubstatus=function(e,n){i.show({controller:"CreateOrEditMailSubstatusDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailSubtatuses/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailSubstatus:n,mailSubtatuses:f.mailSubtatuses.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailSubstatus=y,f.exportSelectedMailSubstatuses=function(){var e=angular.copy(f.selectedMailSubstatuses);return f.selectedMailSubstatuses=[],e},f.deleteSelectedMailSubstatuses=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailSubtatuses?").htmlContent("<b>"+f.selectedMailSubstatuses.length+" selected</b> will be deleted.").ariaLabel("delete MailSubstatuss").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailSubstatuses.forEach(function(e){y(e)}),f.selectedMailSubstatuses=[]})},f.deselectMailSubstatuses=function(){f.selectedMailSubstatuses=[]},f.selectAllMailSubstatuses=function(){f.selectedMailSubstatuses=f.mailSubtatuses.rows};var b=!0,A=1;function E(e){f.mailSubtatuses=e||{count:0,rows:[]}}function y(e){m.mailSubstatus.delete({id:e.id}).$promise.then(function(){_.remove(f.mailSubtatuses.rows,{id:e.id}),f.mailSubtatuses.count-=1,f.mailSubtatuses.rows.length||f.getMailSubstatuses(),p.success({title:_.startCase("MailSubstatus")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailSubstatus"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailSubstatus",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailSubstatuses())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailSubtatuses","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailSubstatusesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){_.forIn(p.mailAccounts,function(e,n){p.rpcMailAccounts[n]&&_.merge(e,p.rpcMailAccounts[n])}),_.forIn(p.mailAccounts,function(n,e){var t={id:e,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};s.mailAccount.getMessages(t).$promise.then(function(e){return e&&(n.in=e.count||0,n.lastIn=e.rows&&e.rows.length?e.rows[0].createdAt:void 0),t.direction="out",s.mailAccount.getMessages(t).$promise}).then(function(e){e&&(n.out=e.count||0,n.lastOut=e.rows&&e.rows.length?e.rows[0].createdAt:void 0)}).catch(function(e){console.log(e)})})}p.currentUser=u.getCurrentUser(),p.count=l&&l.count?l.count:0,p.mailAccounts=l?_.keyBy(l.rows?l.rows:[],"id"):{},p.rpcMailAccounts=d?_.keyBy(d.rows?d.rows:[],"id"):{},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.query={sort:"-name",limit:10,page:1},p.success=f,p.$onInit=g,p.getMailAccounts=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=s.mailAccount.get(p.query,f).$promise:(p.query.id=p.userProfile.id,p.query.section="MailAccounts",p.promise=s.userProfile.getResources(p.query,f).$promise)},p.onSave=function(e){p.mailAccounts[e.id]&&_.merge(p.mailAccounts[e.id],e)},p.onMailMessageSave=function(e){p.mailAccounts[e.MailAccountId]&&("in"==e.direction?(p.mailAccounts[e.MailAccountId].in+=1,p.mailAccounts[e.MailAccountId].lastIn=e.createdAt):(p.mailAccounts[e.MailAccountId].out+=1,p.mailAccounts[e.MailAccountId].lastOut=e.createdAt))},p.goToMailAccount=function(e,n){i.go("app.mail.mailAccounts.edit",{id:n.id,mailAccount:n})},p.verifySmtp=function(e,n){{if(n&&n.id)return s.mailAccount.verifySmtp({id:n.id}).$promise.then(function(){r.success({title:"Smtp properly verified",msg:"Connection succeded!"})}).catch(function(e){r.error({title:"Smtp properly verified",msg:e.data?JSON.stringify(e.data):e.toString()})});r.error({title:"Smtp properly verified",msg:"Smpt id unknown"})}},p.order=[],_.forIn(p.mailAccounts,function(e,n){p.order.push(e.id)}),o.on("mailAccount:save",p.onSave),o.on("mailAccount:update",p.onSave),o.on("mailMessage:save",p.onMailMessageSave);var v=!0,h=1;function f(e){if(p.mailAccounts=e?_.keyBy(e.rows?e.rows:[],"id"):{},e.rows){p.order=[];for(var n=0;n<e.rows.length;n++)p.order.push(e.rows[n].id)}g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=h),p.getMailAccounts())}),e.$on("$destroy",function(){o.removeAllListeners("mailAccount:save"),o.removeAllListeners("mailAccount:update"),o.removeAllListeners("mailMessage:save")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$state","api","socket","toasty","mailAccounts","rpcMailAccounts","userProfile","userProfileSection","Auth"],angular.module("app.mail").controller("MailAccountsRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"MailQueues":void 0,channel:"mail",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("MAIL.MAILQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditMailQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("mail_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userMailQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.MailQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userMailQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.MailQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"mail")})}),e.$on("$destroy",function(){r.removeAllListeners("mail_queue:save"),r.removeAllListeners("userMailQueue:remove"),r.removeAllListeners("userMailQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.mail").controller("QueuesMailRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.mail.realtime.agents":this.selectedTab=0;break;case"app.mail.realtime.queues":this.selectedTab=1;break;case"app.mail.realtime.accounts":this.selectedTab=2;break;default:this.selectedTab=0,t.go("app.mail.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.mail.realtime.agents");break;case 1:t.go("app.mail.realtime.queues");break;case 2:t.go("app.mail.realtime.accounts");break;default:t.go("app.mail.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.mail").controller("MailRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MARKETPLACE.EDIT_PLUGIN",g.plugin=angular.copy(l),g.plugins=r,g.newPlugin=!1,g.plugin||(g.plugin={},g.title="MARKETPLACE.NEW_PLUGIN",g.newPlugin=!0),g.addNewPlugin=function(){g.errors=[],d.plugin.save(g.plugin).$promise.then(function(e){g.plugins.unshift(e.toJSON()),o.success({title:"Plugin properly created",msg:g.plugin.name?g.plugin.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savePlugin=function(){g.errors=[],d.plugin.update({id:g.plugin.id},g.plugin).$promise.then(function(e){var n=_.find(g.plugins,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Plugin properly saved!",msg:g.plugin.name?g.plugin.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletePlugin=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The plugin will be deleted.").ariaLabel("Delete Plugin").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.plugin.delete({id:g.plugin.id}).$promise.then(function(){_.remove(g.plugins,{id:g.plugin.id}),o.success({title:"Plugin properly deleted!",msg:(g.plugin.name||"plugin")+" has been deleted!"}),v(g.plugin)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","plugins","plugin","api","Auth","license","setting","crudPermissions"],angular.module("app.marketplace").controller("CreateOrEditPluginDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.plugin=c||e.params.plugin||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoPlugins=function(){e.go("app.marketplace.plugins",{},{reload:"app.marketplace.plugins"})},u.savePlugin=function(){r.plugin.update({id:u.plugin.id},u.plugin).$promise.then(function(){l.success({title:"Plugin updated!",msg:u.plugin.name?u.plugin.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETplugin",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","plugin","userProfileSection"],angular.module("app.marketplace").controller("MarketplacePluginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.plugins=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="plugins",f.listOrder="",f.listOrderAsc=null,f.selectedPlugins=[],f.query={fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,page:1},f.installing=!1,f.arraysidebar=_.keyBy([{option:"Always",value:"'always'"},{option:"Admin Only",value:"'adminOnly'"},{option:"Agent Only",value:"'agentOnly'"},{option:"Never",value:"'never'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.installplugin=function(e){{if("script"!==e.type)return e.active=!0,m.plugin.update({id:e.id},e).$promise.then(function(){p.success({title:"Plugin installed!",msg:e.name?e.name+" has been installed!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});f.installing=!0,m.pm2.save({name:e.scriptName,script:e.path+"/"+e.scriptPath}).$promise.then(function(){return e.active=!0,m.plugin.update({id:e.id},e).$promise}).then(function(){f.installing=!1,p.success({title:"Plugin installed!",msg:e.name?e.name+" has been installed!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.save"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.save",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}},f.editstate=function(e,n){t.go("app.marketplace.plugins.edit",{id:e.id,plugin:e,crudPermissions:f.crudPermissions})},f.stopplugin=function(e,n){var t=i.confirm().title("Are you sure want to stop the plugin attached process?").htmlContent("<b>"+(e.name||"plugin")+"</b> attached process will be stoppped.").ariaLabel("stop plugin process").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){var t;t=e,m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.update({id:n.pm_id,status:"stopped"}).$promise.then(function(){p.success({title:"Process stopped!",msg:"Attached pm2 process successfully stopped"})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})},f.restartplugin=function(e,n){var t=i.confirm().title("Are you sure want to restart the plugin attached process?").htmlContent("<b>"+(e.name||"plugin")+"</b> attached process will be restarted.").ariaLabel("restart plugin process").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){var t;t=e,m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.update({id:n.pm_id,status:"online"}).$promise.then(function(){p.success({title:"Process restarted!",msg:"Attached pm2 process successfully restarted"})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})},f.downloadfile2=function(s,e){return m.plugin.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.name.replace(" ","_").toLowerCase()+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.uninstallplugin=function(e,n){var t=i.confirm().title("Are you sure want to uninstall the plugin?").htmlContent("<b>"+(e.name||"plugin")+"</b> will be uninstalled.").ariaLabel("uninstall plugin").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){!function(t){"script"===t.type&&m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.delete({id:n.pm_id,name:t.scriptName}).$promise}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});t.active=!1,m.plugin.update({id:t.id},t).$promise.then(function(){p.success({title:"Plugin uninstalled!",msg:t.name?t.name+" has been uninstalled!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}(e)},function(){console.log("CANCEL")})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("plugin")+"?").htmlContent("<b>"+(e.name||"plugin")+"</b> will be deleted.").ariaLabel("delete plugin").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getPlugins=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.plugin.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Plugins",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditPlugin=function(e,n){i.show({controller:"CreateOrEditPluginDialogController",controllerAs:"vm",templateUrl:"app/main/apps/marketplace/views/plugins/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{plugin:n,plugins:f.plugins.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletePlugin=y,f.exportSelectedPlugins=function(){var e=angular.copy(f.selectedPlugins);return f.selectedPlugins=[],e},f.deleteSelectedPlugins=function(e){var n=i.confirm().title("Are you sure want to delete the selected plugins?").htmlContent("<b>"+f.selectedPlugins.length+" selected</b> will be deleted.").ariaLabel("delete Plugins").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedPlugins.forEach(function(e){y(e)}),f.selectedPlugins=[]})},f.deselectPlugins=function(){f.selectedPlugins=[]},f.selectAllPlugins=function(){f.selectedPlugins=f.plugins.rows},f.uploadPlugin=function(e){i.show({controller:"UploadPluginDialogController",controllerAs:"vm",templateUrl:"app/main/apps/marketplace/views/plugins/upload/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{plugins:f.plugins.rows}})};var b=!0,A=1;function E(e){f.plugins=e||{count:0,rows:[]}}function y(t){t.active&&"script"==t.type&&m.pm2.get().$promise.then(function(e){if(!e||!e.rows)return p.error({title:"Plugin not deleted!",msg:"Failed to retrieve pm2 processes"});var n=_.find(e.rows,{name:t.scriptName});n?m.pm2.delete({id:n.pm_id,name:t.scriptName}).$promise:console.log("No '%s' process found",t.scriptName)}).catch(function(e){return p.error({title:"PM2 process not found!",msg:"Failed to delete the attached pm2 process"})}),m.plugin.delete({id:t.id}).$promise.then(function(){_.remove(f.plugins.rows,{id:t.id}),f.plugins.count-=1,f.plugins.rows.length||f.getPlugins(),p.success({title:_.startCase("Plugin")+" deleted!",msg:t.name?t.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEplugin"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEplugin",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getPlugins())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","plugins","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.marketplace").controller("MarketplacePluginsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this,r=4,l=1024*r*1024;o.currentUser=s.getCurrentUser(),o.errors=[],o.title="MARKETPLACE.UPLOAD_PLUGIN",o.plugins=a,o.uploadPlugins=[],o.uploadState="none",o.plugin={},o.ngFlowOptions={maxChunkRetries:1,chunkSize:l,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0,target:"api/plugins"},o.ngFlow={flow:{}},o.dropping=!1,o.fileAdded=function(e){var n=["zip"];if(!_.includes(n,e.getExtension()))return t.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>l)return t.error({title:"File too big",msg:"The max allowed size is "+r+"MB"}),!1;return o.plugin={id:e.uniqueIdentifier,file:e},o.uploadPlugins.unshift(o.plugin),!0},o.upload=function(){o.uploadState="uploading",o.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},o.ngFlow.flow.opts.query={role:o.currentUser.role,userProfileId:o.currentUser.userProfileId},o.ngFlow.flow.upload()},o.fileSuccess=function(a,e){o.plugins.unshift(JSON.parse(e)),angular.forEach(o.uploadPlugins,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result}}})},o.uploadError=function(e,n){o.ngFlow.flow.cancel(),t.error({title:"Upload error",msg:"Cannot upload the plugin"}),o.uploadState="failed"},o.uploadComplete=function(){"failed"!==o.uploadState&&(o.uploadState="completed",t.success({title:"Upload completed",msg:o.plugin.file.name+" uploaded successfully"}))},o.closeDialog=function(){n.hide()}}e.$inject=["$cookies","$mdDialog","toasty","plugins","api","Auth"],angular.module("app.marketplace").controller("UploadPluginDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_IVRCAMPAIGN",g.ivrCampaign=angular.copy(l),g.ivrCampaigns=r,g.newIvrCampaign=!1,g.ivrCampaign||(g.ivrCampaign={active:!0,type:"ivr",dialCheckDuplicateType:"always",dialCutDigit:0,limitCalls:30,dialRandomLastDigitCallerIdNumber:0,dialOriginateTimeout:30,dialGlobalMaxRetry:4,dialCongestionMaxRetry:3,dialCongestionRetryFrequency:150,dialBusyMaxRetry:3,dialBusyRetryFrequency:150,dialNoAnswerMaxRetry:3,dialNoAnswerRetryFrequency:150,dialNoSuchNumberMaxRetry:3,dialNoSuchNumberRetryFrequency:150,dialDropMaxRetry:3,dialDropRetryFrequency:150,dialAbandonedMaxRetry:3,dialAbandonedRetryFrequency:150,dialMachineMaxRetry:3,dialMachineRetryFrequency:150,dialAgentRejectMaxRetry:3,dialAgentRejectRetryFrequency:150,dialOrderByScheduledAt:"ASC",dialGlobalInterval:"07:00-22:00,*,*,*",dialAMDInitialSilence:2500,dialAMDGreeting:1500,dialAMDAfterGreetingSilence:800,dialAMDTotalAnalysisTime:5e3,dialAMDMinWordLength:100,dialAMDBetweenWordsSilence:50,dialAMDMaximumNumberOfWords:3,dialAMDSilenceThreshold:256,dialAMDMaximumWordLength:5e3},g.title="MOTIONDIALER.NEW_IVRCAMPAIGN",g.newIvrCampaign=!0),g.addNewIvrCampaign=function(){g.errors=[],d.campaign.save(g.ivrCampaign).$promise.then(function(e){g.ivrCampaigns.unshift(e.toJSON()),o.success({title:"IvrCampaign properly created",msg:g.ivrCampaign.name?g.ivrCampaign.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveIvrCampaign=function(){g.errors=[],d.campaign.update({id:g.ivrCampaign.id},g.ivrCampaign).$promise.then(function(e){var n=_.find(g.ivrCampaigns,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"IvrCampaign properly saved!",msg:g.ivrCampaign.name?g.ivrCampaign.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteIvrCampaign=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The ivrCampaign will be deleted.").ariaLabel("Delete IvrCampaign").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.campaign.delete({id:g.ivrCampaign.id}).$promise.then(function(){_.remove(g.ivrCampaigns,{id:g.ivrCampaign.id}),o.success({title:"IvrCampaign properly deleted!",msg:(g.ivrCampaign.name||"ivrCampaign")+" has been deleted!"}),v(g.ivrCampaign)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})});g.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.trunks=n})}else g.trunks=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.projects=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.projects=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.projects,{id:e.resourceId})}),t=null;if(g.ivrCampaign&&(t=_.find(g.projects,{id:Number(g.ivrCampaign.SquareProjectId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.projects,{id:t.id});a.canSelect=!1,n.push(a)}g.projects=n})}else{var t=[],a=null;g.ivrCampaign&&(a=_.find(g.projects,{id:Number(g.ivrCampaign.SquareProjectId)}));for(var i=0;i<g.projects.length;i++)a&&g.projects[i].id===a.id&&(g.projects[i].canSelect=!1,t.push(g.projects[i]));g.projects=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.ivrCampaign&&(t=_.find(g.interval,{id:Number(g.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.ivrCampaign&&(a=_.find(g.interval,{id:Number(g.ivrCampaign.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","ivrCampaigns","ivrCampaign","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditIvrCampaignDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.ivrCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.ivrCampaign=n,d.crudPermissions=l,d.apiRoute="campaign",d.getApi="getBlackLists",d.addApi="addBlackLists",d.removeApi="removeBlackLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","ivrCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("IvrCampaignblacklistaddController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newIvrCampaign=!0,r.ivrCampaign=angular.copy(i),r.ivrCampaigns=s,r.title=o.instant("MOTIONDIALER.CLONE_IVRCAMPAIGN"),i&&i.name&&(r.title+=": "+i.name),r.cloneIvrCampaign=function(){return e.campaign.clone({id:i.id},r.ivrCampaign).$promise.then(function(e){r.ivrCampaigns.unshift(e.toJSON()),a.success({title:"IvrCampaign properly cloned",msg:r.ivrCampaign.name?r.ivrCampaign.name+" has been cloned!":""}),t.go("app.motiondialer.ivrCampaigns.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","ivrCampaign","ivrCampaigns","$translate"],angular.module("app.motiondialer").controller("IvrCampaigncloneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperBlacks=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperBlacks(m.query,u).$promise}function g(e){d.hopperBlack.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperBlacks.rows,{id:e.id}),m.ivrCampaignHopperBlacks.count-=1,m.ivrCampaignHopperBlacks.rows.length||p(),l.success({title:"HopperBlack deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHopperBlacks={count:0,rows:[]},m.selectedIvrCampaignHopperBlacks=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,ContactId,phone",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperBlack?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperBlack #")+e.id||"hopperBlack")+"</b> will be deleted.").ariaLabel("delete hopperBlack").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperBlacks=p,m.createOrEditIvrCampaignHopperBlack=function(e,n){o.show({controller:"CreateOrEditHopperBlackDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperBlacks/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperBlack:n,hopperBlacks:m.ivrCampaignHopperBlacks.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperBlacks=function(){var e=angular.copy(m.selectedIvrCampaignHopperBlacks);return m.selectedIvrCampaignHopperBlacks=[],e},m.deleteIvrCampaignHopperBlack=g,m.deleteSelectedIvrCampaignHopperBlacks=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperBlacks?").htmlContent("<b>"+m.selectedIvrCampaignHopperBlacks.length+" selected</b> will be deleted.").ariaLabel("delete hopperBlacks").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperBlacks.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperBlacks=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperBlacksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperFinals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperFinals(m.query,u).$promise}function g(e){d.hopperFinal.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperFinals.rows,{id:e.id}),m.ivrCampaignHopperFinals.count-=1,m.ivrCampaignHopperFinals.rows.length||p(),l.success({title:"HopperFinal deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(a){d.cmHopperFinal.checkContactHopper(a).$promise.then(function(e){l.info({title:"The contact is in the hopper",msg:"Contact ID "+e.ContactId})}).catch(function(e){var n,t;"Not Found"===e.data?d.cmHopper.save((n=a,t={},t.phone=n.calleridnum,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=0,t.countcongestionretry=0,t.countnoanswerretry=0,t.countglobal=0,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=n.deleted?null:n.UserId,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.priority=n.recallme?3:2,t.recallme=!!n.recallme,t)).$promise.then(function(e){var n,t;l.info({title:"Restored Contact",msg:"Contact ID "+e.ContactId}),e.ContactId&&d.cmHopperHistory.save(((t={}).calleridnum=(n=a).calleridnum,t.calleridname=n.calleridname,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=n.countbusyretry,t.countcongestionretry=n.countcongestionretry,t.countnoanswerretry=n.countnoanswerretry,t.countglobal=n.countglobal,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=c.getCurrentUser().id,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.editedat=moment().format("YYYY-MM-DD HH:mm:ss"),t.edited=!0,t.state=25,t.statedesc="Restored",t.campaign=n.campaign,t.campaigntype=n.VoiceQueueId?"queue":"ivr",t))}).catch(function(e){_.isNil(e.data)||"Validation error"!==e.data.message?l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}):l.info({title:"The contact is in the hopper",msg:"Contact ID "+a.ContactId})}):l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.contacts={},m.ivrCampaign={},m.ivrCampaignHopperFinals={count:0,rows:[]},m.selectedIvrCampaignHopperFinals=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,countglobal,scheduledat,starttime,responsetime,endtime,disposition,ListId,UserId,VoiceQueueId,CampaignId,recallme,deleted,campaign",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperFinal?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperFinal #")+e.id||"hopperFinal")+"</b> will be deleted.").ariaLabel("delete hopperFinal").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperFinals=p,m.createOrEditIvrCampaignHopperFinal=function(e,n){o.show({controller:"CreateOrEditHopperFinalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperFinals/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperFinal:n,hopperFinals:m.ivrCampaignHopperFinals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperFinals=function(){var e=angular.copy(m.selectedIvrCampaignHopperFinals);return m.selectedIvrCampaignHopperFinals=[],e},m.deleteIvrCampaignHopperFinal=g,m.deleteSelectedIvrCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperFinals?").htmlContent("<b>"+m.selectedIvrCampaignHopperFinals.length+" selected</b> will be deleted.").ariaLabel("delete hopperFinals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperFinals.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperFinals=[]})},m.moveIvrCampaignHopperFinal=v,m.moveContactsIvrCampaignHopperFinal=function(e){d.cmHopperFinal.moveContactsIvrCampaignHopperFinal({id:m.query.id,state:e}).$promise.then(function(e){_.isNil(e)&&_.isNil(e[0])?l.info({title:"Restored Contacts",msg:"0"}):l.info({title:"Restored Contacts",msg:JSON.stringify(e[0].affectedRows)})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.countContactsIvrCampaignHopperFinal=function(e){d.cmHopperFinal.countContactsIvrCampaignHopperFinal({id:e}).$promise.then(function(e){_.merge(m.contacts,e[0])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.moveConfirm=function(e,n){var t=o.confirm().title("Are you sure want to restore the contact?").htmlContent("<b>Contact</b> will be restored.").ariaLabel("Restore Contact").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.moveSelectedIvrCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to restore the selected contacts?").htmlContent("<b> Contacts selected</b> will be restored.").ariaLabel("Restore Contacts").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperFinals.forEach(function(e){v(e)}),m.selectedIvrCampaignHopperFinals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperFinalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperHistories=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperHistories(m.query,u).$promise}function g(e){d.hopperHistory.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperHistories.rows,{id:e.id}),m.ivrCampaignHopperHistories.count-=1,m.ivrCampaignHopperHistories.rows.length||p(),l.success({title:"HopperHistory deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHopperHistories={count:0,rows:[]},m.selectedIvrCampaignHopperHistories=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,scheduledat,starttime,responsetime,endtime",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperHistory?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperHistory #")+e.id||"hopperHistory")+"</b> will be deleted.").ariaLabel("delete hopperHistory").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperHistories=p,m.createOrEditIvrCampaignHopperHistory=function(e,n){o.show({controller:"CreateOrEditHopperHistoryDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperHistories/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperHistory:n,hopperHistories:m.ivrCampaignHopperHistories.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperHistories=function(){var e=angular.copy(m.selectedIvrCampaignHopperHistories);return m.selectedIvrCampaignHopperHistories=[],e},m.deleteIvrCampaignHopperHistory=g,m.deleteSelectedIvrCampaignHopperHistories=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperHistories?").htmlContent("<b>"+m.selectedIvrCampaignHopperHistories.length+" selected</b> will be deleted.").ariaLabel("delete hopperHistories").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperHistories.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperHistories=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperHistoriesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHoppers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHoppers(m.query,u).$promise}function g(e){d.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHoppers.rows,{id:e.id}),m.ivrCampaignHoppers.count-=1,m.ivrCampaignHoppers.rows.length||p(),l.success({title:"Hopper deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHoppers={count:0,rows:[]},m.selectedIvrCampaignHoppers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,ContactId,phone,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,scheduledat,priority",sort:"-updatedAt",limit:10,page:1},m.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopper?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopper #")+e.id||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHoppers=p,m.createOrEditIvrCampaignHopper=function(e,n){o.show({controller:"CreateOrEditHopperCampaignIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopper:n,hoppers:m.ivrCampaignHoppers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHoppers=function(){var e=angular.copy(m.selectedIvrCampaignHoppers);return m.selectedIvrCampaignHoppers=[],e},m.deleteIvrCampaignHopper=g,m.deleteSelectedIvrCampaignHoppers=function(e){var n=o.confirm().title("Are you sure want to delete the selected hoppers?").htmlContent("<b>"+m.selectedIvrCampaignHoppers.length+" selected</b> will be deleted.").ariaLabel("delete hoppers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHoppers.forEach(function(e){g(e)}),m.selectedIvrCampaignHoppers=[]})},c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.agents,{id:e.resourceId})});m.agents.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),m.agents=n})}else m.agents=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHoppersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_HOPPER",g.hopper=angular.copy(l),g.hoppers=r,g.newHopper=!1,g.hopper||(g.hopper={},g.title="MOTIONDIALER.NEW_HOPPER",g.newHopper=!0),n.params.id&&(g.hopper.CampaignId=n.params.id),g.addNewHopper=function(){g.errors=[],d.cmHopper.save(g.hopper).$promise.then(function(e){g.hoppers.unshift(e.toJSON()),o.success({title:"Hopper properly created",msg:g.hopper.name?g.hopper.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveHopper=function(){var t,a,i,s;g.errors=[],g.hopper.UserId=g.hopper.recallme?g.hopper.UserId:null,g.hopper.OwnerId=c.getCurrentUser().id,d.cmHopper.get({id:g.hopper.id,attributes:["scheduledat"]}).$promise.then(function(e){t=_.isNil(e)||_.isEmpty(e)?moment().format("YYYY-MM-DD HH:mm:ss"):e.scheduledat}).finally(function(){d.cmHopper.update({id:g.hopper.id},_.omit(g.hopper,["VoiceQueueId","CampaignId","ContactId","ListId"])).$promise.then(function(e){a=e,d.cmContact.get({id:a.ContactId,attributes:["firstName","lastName"]}).$promise.then(function(e){_.isNil(e)||_.isNil(e.firstName)||(i=e.firstName,_.isNil(e.lastName)||(i+=" "+e.lastName))}).catch(function(){i=void 0}).finally(function(){d.campaign.get({raw:!1,id:a.CampaignId,attributes:["name"]}).$promise.then(function(e){s=e.name}).catch(function(e){s=void 0}).finally(function(){d.cmHopperHistory.save({state:24,statedesc:"Edited",scheduledat:t,calleridnum:a.phone,calleridname:i,campaigntype:a.VoiceQueueId?"queue":"ivr",campaign:s,editedat:moment().format("YYYY-MM-DD HH:mm:ss"),edited:!0,ListId:a.ListId,UserId:c.getCurrentUser().id,VoiceQueueId:a.VoiceQueueId,CampaignId:a.CampaignId,ContactId:a.ContactId,callback:a.callback,callbackuniqueid:a.callbackuniqueid,countbusyretry:a.countbusyretry,countcongestionretry:a.countcongestionretry,countglobal:a.countglobal,countnoanswerretry:a.countnoanswerretry,followuptime:a.followuptime,recallme:a.recallme})})});var n=_.find(g.hoppers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Hopper properly saved!",msg:g.hopper.name?g.hopper.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})})},g.deleteHopper=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The hopper will be deleted.").ariaLabel("Delete Hopper").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmHopper.delete({id:g.hopper.id}).$promise.then(function(){_.remove(g.hoppers,{id:g.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(g.hopper.name||"hopper")+" has been deleted!"}),v(g.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.agents,{id:e.resourceId})});g.agents.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.agents=n})}else g.agents=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","hoppers","hopper","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditHopperCampaignIdDialogController",e)}(),function(){"use strict";function e(t,a){var i=this;i.ivrCampaign={},i.init=function(n){i.ivrCampaign=n,t.cmHopper.get({limit:0,CampaignId:n.id}).$promise.then(function(e){return i.total=e.count||0,t.cmHopper.get({limit:0,CampaignId:n.id,active:!1,countbusyretry:0,countcongestionretry:0,countnoanswerretry:0,countnosuchnumberretry:0,countdropretry:0,countabandonedretry:0,countmachineretry:0,countagentrejectretry:0}).$promise}).then(function(e){return i.fresh=e.count||0,t.cmHopperFinal.get({limit:0,CampaignId:n.id}).$promise}).then(function(e){i.closed=e.count||0}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["api","toasty"],angular.module("app.motiondialer").controller("IvrCampaignHopperStatisticsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.ivrCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.ivrCampaign=n,d.crudPermissions=l,d.apiRoute="campaign",d.getApi="getLists",d.addApi="addLists",d.removeApi="removeLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","ivrCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("IvrCampaignlistaddController",e)}(),function(){"use strict";function e(e,n,a,i,s,t,o,r){var l=this;function d(){n.hide()}function c(e,n){var t=n.id;o.enqueue(function(){return i.campaign.removeLists({id:e,ids:t}).$promise.then(function(){return i.campaign.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){a.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}l.selected=[],l.items=t||[],l.loading=!1,l.closeDialog=d,l.exists=function(e,n){return-1<n.indexOf(e)},l.toggle=function(e,n){var t=n.indexOf(e);-1<t?n.splice(t,1):n.push(e)},l.isIndeterminate=function(){return 0!==l.selected.length&&l.selected.length!==l.items.length},l.isChecked=function(){return l.selected.length===l.items.length},l.toggleAll=function(){l.selected.length===l.items.length?l.selected=[]:(0===l.selected.length||0<l.selected.length)&&(l.selected=l.items.slice(0))},l.listSelected=function(){l.loading=!0,r(function(e,n){for(var t=0;t<l.selected.length;t+=1)c(s.id,l.selected[t]);var a;a=e,o.enqueue(function(){return a()})}).finally(function(){l.loading=!1,d()})}}e.$inject=["$scope","$mdDialog","toasty","api","ivrCampaign","listsCampaign","Sequence","$q"],angular.module("app.motiondialer").controller("IvrCampaignresetlistController",e)}(),function(){"use strict";function e(t,e,i,s,a,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.ivrCampaign=c||t.params.ivrCampaign||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){i.show({controller:"IvrCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.listadddialog=function(e,n){i.show({controller:"IvrCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.blacklistadddialog=function(e,n){i.show({controller:"IvrCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.resetlistdialog=function(n,t){r.campaign.getLists({id:n.id,fields:"id,name",nolimit:!0}).$promise.then(function(a){if(_.isNil(a.rows)||_.isEmpty(a.rows))l.info({title:"Campaign Without Lists"});else if(1===a.rows.length){var e=i.confirm().title("Are you sure want to reset the list "+a.rows[0].name+" ?").htmlContent("<b>"+a.rows[0].name+"</b> will be reset.").ariaLabel("Reset List").targetEvent(t).ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n,t;e=u.ivrCampaign.id,n=a.rows[0],t=n.id,r.campaign.removeLists({id:e,ids:t}).$promise.then(function(){return r.campaign.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){l.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ivrCampaign.REMOVELIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}else i.show({controller:"IvrCampaignresetlistController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/resetlist/resetlist.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!1,locals:{ivrCampaign:n,listsCampaign:a?a.rows:[]}})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.ivr_campaigns",{}):l.info({title:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.ivr_campaigns",{})}},u.alert=l.info,u.gotoIvrCampaigns=function(){t.go("app.motiondialer.ivrCampaigns",{},{reload:"app.motiondialer.ivrCampaigns"})},u.saveIvrCampaign=function(){r.campaign.update({id:u.ivrCampaign.id},u.ivrCampaign).$promise.then(function(){l.success({title:"IvrCampaign updated!",msg:u.ivrCampaign.name?u.ivrCampaign.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.trunks,{id:e.resourceId})});u.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.trunks=n})}else u.trunks=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),t=null;if(u.ivrCampaign&&(t=_.find(u.projects,{id:Number(u.ivrCampaign.SquareProjectId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.projects,{id:t.id});a.canSelect=!1,n.push(a)}u.projects=n})}else{var t=[],a=null;u.ivrCampaign&&(a=_.find(u.projects,{id:Number(u.ivrCampaign.SquareProjectId)}));for(var i=0;i<u.projects.length;i++)a&&u.projects[i].id===a.id&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.interval,{id:e.resourceId})}),t=null;if(u.ivrCampaign&&(t=_.find(u.interval,{id:Number(u.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.interval,{id:t.id});a.canSelect=!1,n.push(a)}u.interval=n})}else{var t=[],a=null;u.ivrCampaign&&(a=_.find(u.interval,{id:Number(u.ivrCampaign.IntervalId)}));for(var i=0;i<u.interval.length;i++)a&&u.interval[i].id===a.id&&(u.interval[i].canSelect=!1,t.push(u.interval[i]));u.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","ivrCampaign","userProfileSection"],angular.module("app.motiondialer").controller("IvrCampaignController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.ivrCampaigns=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="ivrCampaigns",f.listOrder="",f.listOrderAsc=null,f.selectedIvrCampaigns=[],f.query={fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,page:1},f.arraydialCheckDuplicateType=_.keyBy([{option:"ALWAYS",value:"'always'"},{option:"NEVER",value:"'never'"},{option:"ONLY_IF_OPEN",value:"'onlyIfOpen'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialOrderByScheduledAt=_.keyBy([{option:"DESC",value:"'DESC'"},{option:"ASC",value:"'ASC'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.motiondialer.ivrCampaigns.edit",{id:e.id,ivrCampaign:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"IvrCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.listadddialog=function(e,n){i.show({controller:"IvrCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.blacklistadddialog=function(e,n){i.show({controller:"IvrCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("ivrCampaign")+"?").htmlContent("<b>"+(e.name||"ivrCampaign")+"</b> will be deleted.").ariaLabel("delete ivrCampaign").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.ivr_campaigns",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.ivr_campaigns",{})}},f.success=E,f.getIvrCampaigns=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.campaign.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="IvrCampaigns",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditIvrCampaign=function(e,n){i.show({controller:"CreateOrEditIvrCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:n,ivrCampaigns:f.ivrCampaigns.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteIvrCampaign=y,f.exportSelectedIvrCampaigns=function(){var e=angular.copy(f.selectedIvrCampaigns);return f.selectedIvrCampaigns=[],e},f.deleteSelectedIvrCampaigns=function(e){var n=i.confirm().title("Are you sure want to delete the selected ivrCampaigns?").htmlContent("<b>"+f.selectedIvrCampaigns.length+" selected</b> will be deleted.").ariaLabel("delete IvrCampaigns").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedIvrCampaigns.forEach(function(e){y(e)}),f.selectedIvrCampaigns=[]})},f.deselectIvrCampaigns=function(){f.selectedIvrCampaigns=[]},f.selectAllIvrCampaigns=function(){f.selectedIvrCampaigns=f.ivrCampaigns.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})});f.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),f.trunks=n})}else f.trunks=[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.projects=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.projects=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.projects,{id:e.resourceId})}),a=null;a=[],f.ivrCampaigns.rows.forEach(function(e){var n=_.find(f.projects,{id:Number(e.SquareProjectId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),f.projects=t})}else{var t=[],a=[];f.ivrCampaigns.rows.forEach(function(e){var n=_.find(f.projects,{id:Number(e.SquareProjectId)});a.push(n)});for(var i=0;i<f.projects.length;i++){_.some(a,{id:f.projects[i].id})&&(f.projects[i].canSelect=!1,t.push(f.projects[i]))}f.projects=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.ivrCampaign&&(t=_.find(f.interval,{id:Number(f.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.ivrCampaign&&(a=_.find(f.interval,{id:Number(f.ivrCampaign.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.ivrCampaigns=e||{count:0,rows:[]}}function y(e){m.campaign.delete({id:e.id}).$promise.then(function(){_.remove(f.ivrCampaigns.rows,{id:e.id}),f.ivrCampaigns.count-=1,f.ivrCampaigns.rows.length||f.getIvrCampaigns(),p.success({title:_.startCase("IvrCampaign")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcampaign"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getIvrCampaigns())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","ivrCampaigns","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.motiondialer").controller("IvrCampaignsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_QUEUECAMPAIGN",g.queueCampaign=angular.copy(l),g.queueCampaigns=r,g.newQueueCampaign=!1,g.queueCampaign||(g.queueCampaign={dialActive:!0,type:"outbound",dialCheckDuplicateType:"always",dialCutDigit:0,autopause:"no",ringinuse:"no",timeoutrestart:"no",setinterfacevar:"no",setqueuevar:"no",setqueueentryvar:"no",dialOrderByScheduledAt:"ASC",dialGlobalInterval:"07:00-22:00,*,*,*",dialAMDInitialSilence:2500,dialAMDGreeting:1500,dialAMDAfterGreetingSilence:800,dialAMDTotalAnalysisTime:5e3,dialAMDMinWordLength:100,dialAMDBetweenWordsSilence:50,dialAMDMaximumNumberOfWords:3,dialAMDSilenceThreshold:256,dialAMDMaximumWordLength:5e3,dialMethod:"progressive",dialPowerLevel:1,dialPredictiveOptimization:"dropRate",dialPredictiveOptimizationPercentage:3,dialPredictiveInterval:10,dialLimitQueue:0,dialRandomLastDigitCallerIdNumber:0,dialOriginateTimeout:30,dialQueueOptions:"tTxX",dialQueueTimeout:3,strategy:"rrmemory",timeout:3,retry:3,weight:1,dialGlobalMaxRetry:4,dialCongestionMaxRetry:3,dialCongestionRetryFrequency:150,dialBusyMaxRetry:3,dialBusyRetryFrequency:150,dialNoAnswerMaxRetry:3,dialNoAnswerRetryFrequency:150,dialNoSuchNumberMaxRetry:3,dialNoSuchNumberRetryFrequency:150,dialDropMaxRetry:3,dialDropRetryFrequency:150,dialAbandonedMaxRetry:3,dialAbandonedRetryFrequency:150,dialMachineMaxRetry:3,dialMachineRetryFrequency:150,dialAgentRejectMaxRetry:3,dialAgentRejectRetryFrequency:150,dialPredictiveIntervalMaxThreshold:20,dialPredictiveIntervalMinThreshold:10},g.title="MOTIONDIALER.NEW_QUEUECAMPAIGN",g.newQueueCampaign=!0),g.addNewQueueCampaign=function(){g.errors=[],d.voiceQueue.save(g.queueCampaign).$promise.then(function(e){g.queueCampaigns.unshift(e.toJSON()),o.success({title:"QueueCampaign properly created",msg:g.queueCampaign.name?g.queueCampaign.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveQueueCampaign=function(){g.errors=[],d.voiceQueue.update({id:g.queueCampaign.id},g.queueCampaign).$promise.then(function(e){var n=_.find(g.queueCampaigns,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"QueueCampaign properly saved!",msg:g.queueCampaign.name?g.queueCampaign.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteQueueCampaign=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The queueCampaign will be deleted.").ariaLabel("Delete QueueCampaign").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceQueue.delete({id:g.queueCampaign.id}).$promise.then(function(){_.remove(g.queueCampaigns,{id:g.queueCampaign.id}),o.success({title:"QueueCampaign properly deleted!",msg:(g.queueCampaign.name||"queueCampaign")+" has been deleted!"}),v(g.queueCampaign)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})}),t=null;if(g.queueCampaign&&(t=_.find(g.trunks,{id:Number(g.queueCampaign.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.trunks,{id:t.id});a.canSelect=!1,n.push(a)}g.trunks=n})}else{var t=[],a=null;g.queueCampaign&&(a=_.find(g.trunks,{id:Number(g.queueCampaign.TrunkId)}));for(var i=0;i<g.trunks.length;i++)a&&g.trunks[i].id===a.id&&(g.trunks[i].canSelect=!1,t.push(g.trunks[i]));g.trunks=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.queueCampaign&&(t=_.find(g.interval,{id:Number(g.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.queueCampaign&&(a=_.find(g.interval,{id:Number(g.queueCampaign.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","queueCampaigns","queueCampaign","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditQueueCampaignDialogController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.voiceQueue.getAgents({id:c.queueCampaign.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.queueCampaign=n,c.crudPermissions=r,c.penalty=0,c.realtime=i,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.voiceQueue.removeAgents({id:c.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else{for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.voiceQueue.addAgents({id:c.queueCampaign.id,ids:_.map(o,"id"),penalty:_.trim(s,"penalty "),realtime:c.realtime||!1}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("MOTIONDIALER.ALL_AGENTS"),labelSelected:s.instant("MOTIONDIALER.SELECTED_AGENTS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","queueCampaigns","realtime","$translate","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.queueCampaign=n,d.crudPermissions=l,d.apiRoute="voiceQueue",d.getApi="getBlackLists",d.addApi="addBlackLists",d.removeApi="removeBlackLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignblacklistaddController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newQueueCampaign=!0,r.queueCampaign=angular.copy(i),r.queueCampaigns=s,r.title=o.instant("MOTIONDIALER.CLONE_QUEUECAMPAIGN"),i&&i.name&&(r.title+=": "+i.name),r.cloneQueueCampaign=function(){return e.voiceQueue.clone({id:i.id},r.queueCampaign).$promise.then(function(e){r.queueCampaigns.unshift(e.toJSON()),a.success({title:"QueueCampaign properly cloned",msg:r.queueCampaign.name?r.queueCampaign.name+" has been cloned!":""}),t.go("app.motiondialer.queueCampaigns.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","queueCampaign","queueCampaigns","$translate"],angular.module("app.motiondialer").controller("QueueCampaigncloneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperBlacks=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperBlacks(m.query,u).$promise}function g(e){d.hopperBlack.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperBlacks.rows,{id:e.id}),m.queueCampaignHopperBlacks.count-=1,m.queueCampaignHopperBlacks.rows.length||p(),l.success({title:"HopperBlack deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHopperBlacks={count:0,rows:[]},m.selectedQueueCampaignHopperBlacks=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,ContactId,phone",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperBlack?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperBlack #")+e.id||"hopperBlack")+"</b> will be deleted.").ariaLabel("delete hopperBlack").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperBlacks=p,m.createOrEditQueueCampaignHopperBlack=function(e,n){o.show({controller:"CreateOrEditHopperBlackDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperBlacks/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperBlack:n,hopperBlacks:m.queueCampaignHopperBlacks.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperBlacks=function(){var e=angular.copy(m.selectedQueueCampaignHopperBlacks);return m.selectedQueueCampaignHopperBlacks=[],e},m.deleteQueueCampaignHopperBlack=g,m.deleteSelectedQueueCampaignHopperBlacks=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperBlacks?").htmlContent("<b>"+m.selectedQueueCampaignHopperBlacks.length+" selected</b> will be deleted.").ariaLabel("delete hopperBlacks").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperBlacks.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperBlacks=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperBlacksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperFinals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperFinals(m.query,u).$promise}function g(e){d.hopperFinal.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperFinals.rows,{id:e.id}),m.queueCampaignHopperFinals.count-=1,m.queueCampaignHopperFinals.rows.length||p(),l.success({title:"HopperFinal deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(a){d.cmHopperFinal.checkContactHopper(a).$promise.then(function(e){l.info({title:"The contact is in the hopper",msg:"Contact ID "+e.ContactId})}).catch(function(e){var n,t;"Not Found"===e.data?d.cmHopper.save((n=a,t={},t.phone=n.calleridnum,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=0,t.countcongestionretry=0,t.countnoanswerretry=0,t.countglobal=0,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=n.deleted?null:n.UserId,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.priority=n.recallme?3:2,t.recallme=!!n.recallme,t)).$promise.then(function(e){var n,t;l.info({title:"Restored Contact",msg:"Contact ID "+e.ContactId}),e.ContactId&&d.cmHopperHistory.save(((t={}).calleridnum=(n=a).calleridnum,t.calleridname=n.calleridname,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=n.countbusyretry,t.countcongestionretry=n.countcongestionretry,t.countnoanswerretry=n.countnoanswerretry,t.countglobal=n.countglobal,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=c.getCurrentUser().id,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.editedat=moment().format("YYYY-MM-DD HH:mm:ss"),t.edited=!0,t.state=25,t.statedesc="Restored",t.campaign=n.campaign,t.campaigntype=n.VoiceQueueId?"queue":"ivr",t))}).catch(function(e){_.isNil(e.data)||"Validation error"!==e.data.message?l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}):l.info({title:"The contact is in the hopper",msg:"Contact ID "+a.ContactId})}):l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.contacts={},m.queueCampaign={},m.queueCampaignHopperFinals={count:0,rows:[]},m.selectedQueueCampaignHopperFinals=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,countglobal,scheduledat,starttime,responsetime,endtime,disposition,secondDisposition,thirdDisposition,ListId,UserId,VoiceQueueId,CampaignId,recallme,deleted,campaign",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperFinal?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperFinal #")+e.id||"hopperFinal")+"</b> will be deleted.").ariaLabel("delete hopperFinal").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperFinals=p,m.createOrEditQueueCampaignHopperFinal=function(e,n){o.show({controller:"CreateOrEditHopperFinalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperFinals/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperFinal:n,hopperFinals:m.queueCampaignHopperFinals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperFinals=function(){var e=angular.copy(m.selectedQueueCampaignHopperFinals);return m.selectedQueueCampaignHopperFinals=[],e},m.deleteQueueCampaignHopperFinal=g,m.deleteSelectedQueueCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperFinals?").htmlContent("<b>"+m.selectedQueueCampaignHopperFinals.length+" selected</b> will be deleted.").ariaLabel("delete hopperFinals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperFinals.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperFinals=[]})},m.moveQueueCampaignHopperFinal=v,m.moveContactsQueueCampaignHopperFinal=function(e){d.cmHopperFinal.moveContactsQueueCampaignHopperFinal({id:m.query.id,state:e}).$promise.then(function(e){_.isNil(e)&&_.isNil(e[0])?l.info({title:"Restored Contacts",msg:"0"}):l.info({title:"Restored Contacts",msg:JSON.stringify(e[0].affectedRows)})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.countContactsQueueCampaignHopperFinal=function(e){d.cmHopperFinal.countContactsQueueCampaignHopperFinal({id:e}).$promise.then(function(e){_.merge(m.contacts,e[0])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.moveConfirm=function(e,n){var t=o.confirm().title("Are you sure want to restore the contact?").htmlContent("<b>Contact</b> will be restored.").ariaLabel("Restore Contact").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.moveSelectedQueueCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to restore the selected contacts?").htmlContent("<b> Contacts selected</b> will be restored.").ariaLabel("Restore Contacts").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperFinals.forEach(function(e){v(e)}),m.selectedQueueCampaignHopperFinals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperFinalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperHistories=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperHistories(m.query,u).$promise}function g(e){d.hopperHistory.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperHistories.rows,{id:e.id}),m.queueCampaignHopperHistories.count-=1,m.queueCampaignHopperHistories.rows.length||p(),l.success({title:"HopperHistory deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHopperHistories={count:0,rows:[]},m.selectedQueueCampaignHopperHistories=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,scheduledat,starttime,responsetime,endtime",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperHistory?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperHistory #")+e.id||"hopperHistory")+"</b> will be deleted.").ariaLabel("delete hopperHistory").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperHistories=p,m.createOrEditQueueCampaignHopperHistory=function(e,n){o.show({controller:"CreateOrEditHopperHistoryDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperHistories/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperHistory:n,hopperHistories:m.queueCampaignHopperHistories.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperHistories=function(){var e=angular.copy(m.selectedQueueCampaignHopperHistories);return m.selectedQueueCampaignHopperHistories=[],e},m.deleteQueueCampaignHopperHistory=g,m.deleteSelectedQueueCampaignHopperHistories=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperHistories?").htmlContent("<b>"+m.selectedQueueCampaignHopperHistories.length+" selected</b> will be deleted.").ariaLabel("delete hopperHistories").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperHistories.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperHistories=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperHistoriesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHoppers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHoppers(m.query,u).$promise}function g(e){d.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHoppers.rows,{id:e.id}),m.queueCampaignHoppers.count-=1,m.queueCampaignHoppers.rows.length||p(),l.success({title:"Hopper deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHoppers={count:0,rows:[]},m.selectedQueueCampaignHoppers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,ContactId,phone,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,scheduledat,priority,recallme,UserId",sort:"-updatedAt",limit:10,page:1},m.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopper?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopper #")+e.id||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHoppers=p,m.createOrEditQueueCampaignHopper=function(e,n){o.show({controller:"CreateOrEditHopperVoiceQueueIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopper:n,hoppers:m.queueCampaignHoppers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHoppers=function(){var e=angular.copy(m.selectedQueueCampaignHoppers);return m.selectedQueueCampaignHoppers=[],e},m.deleteQueueCampaignHopper=g,m.deleteSelectedQueueCampaignHoppers=function(e){var n=o.confirm().title("Are you sure want to delete the selected hoppers?").htmlContent("<b>"+m.selectedQueueCampaignHoppers.length+" selected</b> will be deleted.").ariaLabel("delete hoppers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHoppers.forEach(function(e){g(e)}),m.selectedQueueCampaignHoppers=[]})},c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.agents,{id:e.resourceId})}),t=null;if(m.queueCampaign&&(t=_.find(m.agents,{id:Number(m.queueCampaign.UserId)})),t&&!_.some(n,["id",t.id])){var a=_.find(m.agents,{id:t.id});a.canSelect=!1,n.push(a)}m.agents=n})}else{var t=[],a=null;m.queueCampaign&&(a=_.find(m.agents,{id:Number(m.queueCampaign.UserId)}));for(var i=0;i<m.agents.length;i++)a&&m.agents[i].id===a.id&&(m.agents[i].canSelect=!1,t.push(m.agents[i]));m.agents=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHoppersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_HOPPER",g.hopper=angular.copy(l),g.hoppers=r,g.newHopper=!1,g.hopper||(g.hopper={},g.title="MOTIONDIALER.NEW_HOPPER",g.newHopper=!0),n.params.id&&(g.hopper.VoiceQueueId=n.params.id),g.addNewHopper=function(){g.errors=[],d.cmHopper.save(g.hopper).$promise.then(function(e){g.hoppers.unshift(e.toJSON()),o.success({title:"Hopper properly created",msg:g.hopper.name?g.hopper.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveHopper=function(){var t,a,i,s;g.errors=[],g.hopper.UserId=g.hopper.recallme?g.hopper.UserId:null,g.hopper.OwnerId=c.getCurrentUser().id,d.cmHopper.get({id:g.hopper.id,attributes:["scheduledat"]}).$promise.then(function(e){t=_.isNil(e)||_.isEmpty(e)?moment().format("YYYY-MM-DD HH:mm:ss"):e.scheduledat}).finally(function(){d.cmHopper.update({id:g.hopper.id},_.omit(g.hopper,["VoiceQueueId","CampaignId","ContactId","ListId"])).$promise.then(function(e){a=e,d.cmContact.get({id:a.ContactId,attributes:["firstName","lastName"]}).$promise.then(function(e){_.isNil(e)||_.isNil(e.firstName)||(i=e.firstName,_.isNil(e.lastName)||(i+=" "+e.lastName))}).catch(function(){i=void 0}).finally(function(){d.voiceQueue.get({raw:!1,id:a.VoiceQueueId,attributes:["name"]}).$promise.then(function(e){s=e.name}).catch(function(e){s=void 0}).finally(function(){d.cmHopperHistory.save({state:24,statedesc:"Edited",scheduledat:t,calleridnum:a.phone,calleridname:i,campaigntype:a.VoiceQueueId?"queue":"ivr",campaign:s,editedat:moment().format("YYYY-MM-DD HH:mm:ss"),edited:!0,ListId:a.ListId,UserId:c.getCurrentUser().id,VoiceQueueId:a.VoiceQueueId,CampaignId:a.CampaignId,ContactId:a.ContactId,callback:a.callback,callbackuniqueid:a.callbackuniqueid,countbusyretry:a.countbusyretry,countcongestionretry:a.countcongestionretry,countglobal:a.countglobal,countnoanswerretry:a.countnoanswerretry,followuptime:a.followuptime,recallme:a.recallme})})});var n=_.find(g.hoppers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Hopper properly saved!",msg:g.hopper.name?g.hopper.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})})},g.deleteHopper=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The hopper will be deleted.").ariaLabel("Delete Hopper").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmHopper.delete({id:g.hopper.id}).$promise.then(function(){_.remove(g.hoppers,{id:g.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(g.hopper.name||"hopper")+" has been deleted!"}),v(g.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.agents,{id:e.resourceId})}),t=null;if(g.hopper&&(t=_.find(g.agents,{id:Number(g.hopper.UserId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.agents,{id:t.id});a.canSelect=!1,n.push(a)}g.agents=n})}else{var t=[],a=null;g.hopper&&(a=_.find(g.agents,{id:Number(g.hopper.UserId)}));for(var i=0;i<g.agents.length;i++)a&&g.agents[i].id===a.id&&(g.agents[i].canSelect=!1,t.push(g.agents[i]));g.agents=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","hoppers","hopper","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditHopperVoiceQueueIdDialogController",e)}(),function(){"use strict";function e(t,a){var i=this;i.queueCampaign={},i.init=function(n){i.queueCampaign=n,t.cmHopper.get({limit:0,VoiceQueueId:n.id}).$promise.then(function(e){return i.total=e.count||0,t.cmHopper.get({limit:0,VoiceQueueId:n.id,active:!1,countbusyretry:0,countcongestionretry:0,countnoanswerretry:0,countnosuchnumberretry:0,countdropretry:0,countabandonedretry:0,countmachineretry:0,countagentrejectretry:0}).$promise}).then(function(e){return i.fresh=e.count||0,t.cmHopperFinal.get({limit:0,VoiceQueueId:n.id}).$promise}).then(function(e){i.closed=e.count||0}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["api","toasty"],angular.module("app.motiondialer").controller("QueueCampaignHopperStatisticsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.queueCampaign=n,d.crudPermissions=l,d.apiRoute="voiceQueue",d.getApi="getLists",d.addApi="addLists",d.removeApi="removeLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignlistaddController",e)}(),function(){"use strict";function e(e,n,a,i,s,t,o,r){var l=this;function d(){n.hide()}function c(e,n){var t=n.id;o.enqueue(function(){return i.voiceQueue.removeLists({id:e,ids:t}).$promise.then(function(){return i.voiceQueue.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){a.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}l.selected=[],l.items=t||[],l.loading=!1,l.closeDialog=d,l.exists=function(e,n){return-1<n.indexOf(e)},l.toggle=function(e,n){var t=n.indexOf(e);-1<t?n.splice(t,1):n.push(e)},l.isIndeterminate=function(){return 0!==l.selected.length&&l.selected.length!==l.items.length},l.isChecked=function(){return l.selected.length===l.items.length},l.toggleAll=function(){l.selected.length===l.items.length?l.selected=[]:(0===l.selected.length||0<l.selected.length)&&(l.selected=l.items.slice(0))},l.listSelected=function(){l.loading=!0,r(function(e,n){for(var t=0;t<l.selected.length;t+=1)c(s.id,l.selected[t]);var a;a=e,o.enqueue(function(){return a()})}).finally(function(){l.loading=!1,d()})}}e.$inject=["$scope","$mdDialog","toasty","api","queueCampaign","listsCampaign","Sequence","$q"],angular.module("app.motiondialer").controller("QueueCampaignresetlistController",e)}(),function(){"use strict";function e(e,i,a,s,n,t,o,r){var l=this;function d(){return i(function(t,n){return i(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:i(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),i(function(n,t){return s.voiceQueue.getTeams({id:l.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.queueCampaign=n,l.crudPermissions=r,l.penalty=0,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"penalty",labelAll:t.instant("MOTIONDIALER.ALL_TEAMS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_TEAMS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+l.penalty});var t=_.xorWith(l.startingSelectedItems,l.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):i(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceWith(l.selectedItems,l.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,i(function(e,n){_.isEmpty(t)?e():s.voiceQueue.removeTeams({id:l.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return a=n,i(function(e,n){if(!_.isEmpty(a)){var t=_.map(a,function(e){return{id:e.id,penalty:_.trim(e.penalty,"penalty ")}});return s.voiceQueue.addTeams({id:l.queueCampaign.id,teams:t}).$promise.then(function(){e()}).catch(function(e){n(e)})}e()});var a}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),a.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignteamaddController",e)}(),function(){"use strict";function e(t,e,i,s,a,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.queueCampaign=c||t.params.queueCampaign||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){i.show({controller:"QueueCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.listadddialog=function(e,n){i.show({controller:"QueueCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.blacklistadddialog=function(e,n){i.show({controller:"QueueCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.teamadddialog=function(e,n){i.show({controller:"QueueCampaignteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){i.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.resetlistdialog=function(n,t){r.voiceQueue.getLists({id:n.id,fields:"id,name",nolimit:!0}).$promise.then(function(a){if(_.isNil(a.rows)||_.isEmpty(a.rows))l.info({title:"Campaign Without Lists"});else if(1===a.rows.length){var e=i.confirm().title("Are you sure want to reset the list "+a.rows[0].name+" ?").htmlContent("<b>"+a.rows[0].name+"</b> will be reset.").ariaLabel("Reset List").targetEvent(t).ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n,t;e=u.queueCampaign.id,n=a.rows[0],t=n.id,r.voiceQueue.removeLists({id:e,ids:t}).$promise.then(function(){return r.voiceQueue.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){l.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.REMOVELIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}else i.show({controller:"QueueCampaignresetlistController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/resetlist/resetlist.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!1,locals:{queueCampaign:n,listsCampaign:a?a.rows:[]}})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.queues",{}):l.info({title:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.queues",{})}},u.alert=l.info,u.gotoQueueCampaigns=function(){t.go("app.motiondialer.queueCampaigns",{},{reload:"app.motiondialer.queueCampaigns"})},u.saveQueueCampaign=function(){r.voiceQueue.update({id:u.queueCampaign.id},u.queueCampaign).$promise.then(function(){l.success({title:"QueueCampaign updated!",msg:u.queueCampaign.name?u.queueCampaign.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MUSICONHOLDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:407}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.musiconholds,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.musiconholds,{name:u.queueCampaign.musiconhold})),t&&!_.some(n,["id",t.id])){var a=_.find(u.musiconholds,{id:t.id});a.canSelect=!1,n.push(a)}u.musiconholds=n}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true",defaultEntry:1}).$promise.then(function(e){u.musiconholds=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmusiconholds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.trunks,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.trunks,{id:Number(u.queueCampaign.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.trunks,{id:t.id});a.canSelect=!1,n.push(a)}u.trunks=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.trunks,{id:Number(u.queueCampaign.TrunkId)}));for(var i=0;i<u.trunks.length;i++)a&&u.trunks[i].id===a.id&&(u.trunks[i].canSelect=!1,t.push(u.trunks[i]));u.trunks=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.projects,{name:u.queueCampaign.dialQueueProject})),t&&!_.some(n,["id",t.id])){var a=_.find(u.projects,{id:t.id});a.canSelect=!1,n.push(a)}u.projects=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.projects,{name:u.queueCampaign.dialQueueProject}));for(var i=0;i<u.projects.length;i++)a&&u.projects[i].id===a.id&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.interval,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.interval,{id:Number(u.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.interval,{id:t.id});a.canSelect=!1,n.push(a)}u.interval=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.interval,{id:Number(u.queueCampaign.IntervalId)}));for(var i=0;i<u.interval.length;i++)a&&u.interval[i].id===a.id&&(u.interval[i].canSelect=!1,t.push(u.interval[i]));u.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.pauses,{id:e.resourceId})});u.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.pauses=n})}else u.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","queueCampaign","userProfileSection"],angular.module("app.motiondialer").controller("QueueCampaignController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.queueCampaigns=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="queueCampaigns",f.listOrder="",f.listOrderAsc=null,f.selectedQueueCampaigns=[],f.query={fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,page:1},f.arraydialCheckDuplicateType=_.keyBy([{option:"ALWAYS",value:"'always'"},{option:"NEVER",value:"'never'"},{option:"ONLY_IF_OPEN",value:"'onlyIfOpen'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayautopause=_.keyBy([{option:"Yes",value:"'all'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayringinuse=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytimeoutrestart=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymonitor_format=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'wav49'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetinterfacevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueuevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueueentryvar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialOrderByScheduledAt=_.keyBy([{option:"DESC",value:"'DESC'"},{option:"ASC",value:"'ASC'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialMethod=_.keyBy([{option:"Progressive",value:"'progressive'"},{option:"PowerDialing",value:"'power'"},{option:"Predictive",value:"'predictive'"},{option:"Preview",value:"'preview'"},{option:"BookedProgressive",value:"'booked'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialPredictiveOptimization=_.keyBy([{option:"AgentBusyFactor",value:"'agentBusyFactor'"},{option:"DropRate",value:"'dropRate'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraystrategy=_.keyBy([{option:"Round Robin Memory",value:"'rrmemory'"},{option:"Round Robin",value:"'roundrobin'",ngIf:"vm.queueCampaign.dialMethod === 'booked'"},{option:"Least Recent",value:"'leastrecent'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Fewest Calls",value:"'fewestcalls'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Random",value:"'random'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Linear",value:"'linear'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Weight Random",value:"'wrandom'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.motiondialer.queueCampaigns.edit",{id:e.id,queueCampaign:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"QueueCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.listadddialog=function(e,n){i.show({controller:"QueueCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.blacklistadddialog=function(e,n){i.show({controller:"QueueCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.teamadddialog=function(e,n){i.show({controller:"QueueCampaignteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("queueCampaign")+"?").htmlContent("<b>"+(e.name||"queueCampaign")+"</b> will be deleted.").ariaLabel("delete queueCampaign").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.queues",{})}},f.success=E,f.getQueueCampaigns=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="QueueCampaigns",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditQueueCampaign=function(e,n){i.show({controller:"CreateOrEditQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:f.queueCampaigns.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteQueueCampaign=y,f.exportSelectedQueueCampaigns=function(){var e=angular.copy(f.selectedQueueCampaigns);return f.selectedQueueCampaigns=[],e},f.deleteSelectedQueueCampaigns=function(e){var n=i.confirm().title("Are you sure want to delete the selected queueCampaigns?").htmlContent("<b>"+f.selectedQueueCampaigns.length+" selected</b> will be deleted.").ariaLabel("delete QueueCampaigns").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedQueueCampaigns.forEach(function(e){y(e)}),f.selectedQueueCampaigns=[]})},f.deselectQueueCampaigns=function(){f.selectedQueueCampaigns=[]},f.selectAllQueueCampaigns=function(){f.selectedQueueCampaigns=f.queueCampaigns.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})}),a=null;a=[],f.queueCampaigns.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.trunks,{id:e.id});n.canSelect=!1,t.push(n)}}),f.trunks=t})}else{var t=[],a=[];f.queueCampaigns.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)});for(var i=0;i<f.trunks.length;i++){_.some(a,{id:f.trunks[i].id})&&(f.trunks[i].canSelect=!1,t.push(f.trunks[i]))}f.trunks=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.queueCampaign&&(t=_.find(f.interval,{id:Number(f.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.queueCampaign&&(a=_.find(f.interval,{id:Number(f.queueCampaign.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.queueCampaigns=e||{count:0,rows:[]}}function y(e){m.voiceQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.queueCampaigns.rows,{id:e.id}),f.queueCampaigns.count-=1,f.queueCampaigns.rows.length||f.getQueueCampaigns(),p.success({title:_.startCase("QueueCampaign")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getQueueCampaigns())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","queueCampaigns","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.motiondialer").controller("QueueCampaignsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){return[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",options:g.agents.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:g.queues.rows,ngValue:"name"}]}function h(){return g.refresh=!1,0===g.queues.count?f(null):(g.query.queue=1===g.queues.count?g.queues.rows[0].name:g.query.queue,void 0===g.query.queue&&(g.query.queue=_.map(g.queues.rows,"name")),_.isEmpty(g.query.queue)?f(null):(g.query.offset=(g.query.page-1)*g.query.limit,i.localStorage.setItem("motion2.realtime.abandoned.bull.abandonedCalls:"+g.currentUser.id,JSON.stringify({query:_.omit(g.query,"queue")})),void(g.promise=o.voiceQueueReport.getVoiceQueuesReport(g.query,f).$promise)))}function f(e){g.abandonedCalls=e||{count:0,rows:[]},!1,g.refresh=!0}g.currentUser=d.getCurrentUser(),g.agents=u||[],g.dispositions=p.rows,g.abandonedCalls={count:0,rows:[]},g.showTooltip=!1,g.refresh=!0,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=d.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"outbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},g.getAbandonedCalls=h,g.refreshAbandonedCalls=function(){g.showTooltip=!1,h()},g.assignTo=function(e,n){e&&o.voiceQueueReport.update({id:e.id,lastAssignedTo:n?n.name:null,assigned:!!n}).$promise.catch(function(e){console.log(e)})},g.dispose=function(t){n.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(a.body),targetEvent:t,locals:{dispositions:g.dispositions,call:t}}).then(function(e){if(e){var n={id:t.id,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)})}})},g.onSaveVoiceQueueReport=function(e){e&&g.queuesMap&&"outbound"===queue.type&&g.queuesMap[e.queue]&&(g.showTooltip=!0)},g.onUpdateVoiceQueueReport=function(e){if(e){var n=_.findIndex(g.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(g.abandonedCalls.rows[n],e)}},c.onWithoutApply("voiceQueueReport:save",g.onSaveVoiceQueueReport),c.on("voiceQueueReport:update",g.onUpdateVoiceQueueReport),function(){var e=i.localStorage.getItem("motion2.realtime.abandoned.bull.abandonedCalls:"+g.currentUser.id);if(e)(e=JSON.parse(e))&&e.query&&(g.query=_.merge(e.query,_.omit(g.query,["sort","limit","page"])),g.query=_.omit(g.query,"filter"));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};g.query.createdAt=n}d.hasRole("admin")?o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()}):o.userProfile.getResources({id:g.currentUser.userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()})}();var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?t(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())}),e.$on("$destroy",function(){c.removeAllListeners("voiceQueueReport:save"),c.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","userProfile","userProfileSection","Auth","socket","toasty","agents","dispositions"],angular.module("app.motiondialer").controller("AbandonedCallsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,a,i,n,s,o,r,l,d,c,m){var u=this,p=["name","active","limitCalls","message","originated","IntervalId","SquareProjectId","Trunk","TrunkId","ivrAnswerCallsDay","dialQueueProject","ivrTotalCallsDays","description"];function g(){_.forIn(u.campaigns,function(e,n){u.rpcCampaigns[n]&&_.merge(e,_.pick(u.rpcCampaigns[n],p))})}u.currentUser=m.getCurrentUser(),u.count=o.count,u.campaigns=o?_.keyBy(o.rows?o.rows:[],"id"):{},u.rpcCampaigns=s?_.keyBy(s.rows?s.rows:[],"id"):{},u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={sort:"-updatedAt",limit:10,page:1},u.success=f,u.getCampaigns=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=r.campaign.get(u.query,f).$promise:(u.query.id=u.userProfile.id,u.query.section="IvrCampaigns",u.promise=r.userProfile.getResources(u.query,f).$promise)},u.onSave=function(e){u.campaigns[e.id]&&(_.merge(u.campaigns[e.id],_.pick(e,p)),_.merge(u.rpcCampaigns[e.id],_.pick(e,p)))},u.$onInit=g,u.createOrEditIvrCampaign=function(e,n){a.show({controller:"CreateOrEditIvrCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:n,ivrCampaigns:_.values(u.campaigns),license:null,setting:null,crudPermissions:u.crudPermissions}})},l.onWithoutApply("campaign:save",u.onSave),u.interval=n(function(){},999);var v=!0,h=1;function f(e){u.count=e.count,u.campaigns=e?_.keyBy(e.rows?e.rows:[],"id"):{},g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=h),u.getCampaigns())}),e.$on("$destroy",function(){l.removeAllListeners("campaign:save"),u.interval&&n.cancel(u.interval)})}e.$inject=["$scope","$timeout","$mdDialog","$document","$interval","rpcCampaigns","campaigns","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("IvrCampaignsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,a,o,t,i,s,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.queues=t?_.keyBy(t.rows?t.rows:[],"name"):{},p.rpcVoiceQueuesChannelsTmp=i?_.keyBy(i.rows?_.filter(i.rows,{type:"outbound"}):[],"uniqueid"):{},p.rpcVoiceQueuesChannels={},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.queryChannels={limit:10,page:1},p.getAvailableAgents=function(){p.availableAgents=null,s.rpc.getAgents().$promise.then(function(e){for(var n=[],t=e?e.rows:[],a=_.filter(t,{online:!0,voicePause:!1,voiceStatus:"idle"}),i=0;i<a.length;i++){var s=_.find(o.rows,["id",a[i].id]);s&&n.push(s)}p.availableAgents=n}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.getSize=function(e){return _.size(e)},p.$onInit=function(){_.forIn(p.rpcVoiceQueuesChannelsTmp,function(e,n){_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[n]=e)})},p.onSave=function(e){"outbound"===e.type&&_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[e.uniqueid]=e)},p.onRemove=function(e){p.rpcVoiceQueuesChannels[e.uniqueid]&&delete p.rpcVoiceQueuesChannels[e.uniqueid]},p.hangup=function(n){return s.rpc.getVoiceQueuesChannelHangup({uniqueid:n}).$promise.then(function(e){d.success({title:"Channel "+n+" properly hangup!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToAgent=function(n,e,t){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e,context:t}).$promise.then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToNumber=function(e,n){var t=a.prompt().title("Which number do you want transfer the call to?").placeholder("Number").targetEvent(e).ok("Ok").cancel("Cancel");return a.show(t).then(function(e){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e}).$promise}).then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){e&&d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},r.on("voice_queue_channel:save",p.onSave),r.on("voice_queue_channel:remove",p.onRemove),e.$on("$destroy",function(){r.removeAllListeners("voice_queue_channel:save"),r.removeAllListeners("voice_queue_channel:remove")})}e.$inject=["$scope","$timeout","$mdDialog","agents","queues","rpcVoiceQueuesChannels","api","socket","helperClasses","toasty","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("QueueCallsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["total","answered","sumHoldTime","sumDuration","sumBillable","outboundNoAnswerCallsDay","outboundBusyCallsDay","outboundCongestionCallsDay","outboundNoSuchCallsDay","outboundUnknownCallsDay","outboundDropCallsDayTimeout","outboundDropCallsDayCallersExit","outboundBlacklistCallsDay","outboundOriginateFailureCallsDay","outboundAnswerAgiCallsDay","outboundReCallsDay","outboundRejectCallsDay"];function u(){_.forIn(c.queues,function(e,n){c.rpcQueues[n]&&_.merge(e,_.pick(c.rpcQueues[n],m))})}c.count=a.count,c.queues=a?_.keyBy(a.rows?a.rows:[],"id"):{},c.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},c.userProfile=r,c.userProfileSection=l&&1==l.count?l.rows[0]:null,c.crudPermissions=d.parseCrudPermissions(c.userProfileSection?c.userProfileSection.crudPermissions:null),d.hasRole("admin")?c.query={type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1}:c.query={id:d.getCurrentUser().id,channel:"voice",type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1},c.success=v,c.getQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,d.hasRole("admin")?c.promise=s.voiceQueue.get(c.query,v).$promise:(c.query.id=c.userProfile.id,c.query.section="QueueCampaigns",c.promise=s.userProfile.getResources(c.query,v).$promise)},c.onSave=function(e){c.queues[e.id]&&_.merge(c.queues[e.id],_.pick(e,m))},c.$onInit=u,o.onWithoutApply("voice_queue:save",c.onSave),c.interval=n(function(){},999);var p=!0,g=1;function v(e){c.count=e.count,c.queues=e?_.keyBy(e.rows?e.rows:[],"id"):{},u()}e.$watch("vm.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getQueues())}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),c.interval&&n.cancel(c.interval)})}e.$inject=["$scope","$timeout","$interval","queues","rpcQueues","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("QueueParamsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"QueueCampaigns":void 0,channel:"voice",type:"outbound",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("VOICE.VOICEQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:u.queues.rows,realtime:!0,crudPermissions:u.crudPermissions}})},u.showPredictiveQueueCampaignInfo=function(e,n){t.show({controller:"PredictiveQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queues/predictive/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n}})},r.onWithoutApply("voice_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&m.updateVoiceQueue(e,n)}),r.on("userVoiceQueueRt:save",function(e){var n=_.find(u.queues.rows,["id",e.MotionDialerQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("user:agentconnect",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);if(n){if(!t.agentconnected)return;t.queue?n.talking=!0:n.busy=!0,m.updateBusyCounter(e)}})}),r.on("user:agentcomplete",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(n.talking?n.talking=!1:n.busy&&(n.busy=!1),m.updateBusyCounter(e))})}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"voice")})}),e.$on("$destroy",function(){r.removeAllListeners("voice_queue:save"),r.removeAllListeners("userVoiceQueueRt:save"),r.removeAllListeners("user:agentconnect"),r.removeAllListeners("user:agentcomplete"),r.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.motiondialer").controller("QueuesMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,t){this.queueCampaign=t,this.addMinutes=function(e,n){return moment(e).add("m",n).format("HH:mm:ss")},this.setFormatTime=function(e){return moment(e).format("HH:mm:ss")},this.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$interval","queueCampaign"],angular.module("app.motiondialer").controller("PredictiveQueueCampaignDialogController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.motiondialer.realtime.agents":this.selectedTab=0;break;case"app.motiondialer.realtime.queues":this.selectedTab=1;break;case"app.motiondialer.realtime.queue_calls":this.selectedTab=2;break;case"app.motiondialer.realtime.abandonedcalls":this.selectedTab=3;break;case"app.motiondialer.realtime.queue_params":this.selectedTab=4;break;case"app.motiondialer.realtime.ivr_campaigns":this.selectedTab=5;break;default:this.selectedTab=0,t.go("app.motiondialer.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.motiondialer.realtime.agents");break;case 1:t.go("app.motiondialer.realtime.queues");break;case 2:t.go("app.motiondialer.realtime.queue_calls");break;case 3:t.go("app.motiondialer.realtime.abandonedcalls");break;case 4:t.go("app.motiondialer.realtime.queue_params");break;case 5:t.go("app.motiondialer.realtime.ivr_campaigns");break;default:t.go("app.motiondialer.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.motiondialer").controller("MotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELACCOUNT",g.openchannelAccount=angular.copy(l),g.openchannelAccounts=r,g.newOpenchannelAccount=!1,g.openchannelAccount||(g.openchannelAccount={waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="OPENCHANNEL.NEW_OPENCHANNELACCOUNT",g.newOpenchannelAccount=!0),n.params.id&&(g.openchannelAccount.OpenchannelAccountId=n.params.id),g.addNewOpenchannelAccount=function(){g.errors=[],d.openchannelAccount.save(g.openchannelAccount).$promise.then(function(e){g.openchannelAccounts.unshift(e.toJSON()),o.success({title:"OpenchannelAccount properly created",msg:g.openchannelAccount.name?g.openchannelAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelAccount=function(){g.errors=[],d.openchannelAccount.update({id:g.openchannelAccount.id},g.openchannelAccount).$promise.then(function(e){var n=_.find(g.openchannelAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"OpenchannelAccount properly saved!",msg:g.openchannelAccount.name?g.openchannelAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelAccount will be deleted.").ariaLabel("Delete OpenchannelAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.openchannelAccount.delete({id:g.openchannelAccount.id}).$promise.then(function(){_.remove(g.openchannelAccounts,{id:g.openchannelAccount.id}),o.success({title:"OpenchannelAccount properly deleted!",msg:(g.openchannelAccount.name||"openchannelAccount")+" has been deleted!"}),v(g.openchannelAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.openchannelAccount&&(t=_.find(g.lists,{id:Number(g.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.openchannelAccount&&(a=_.find(g.lists,{id:Number(g.openchannelAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelAccounts","openchannelAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.openchannelAccountApps.rows.length){var t=r.openchannelAccountApps.rows[n]?r.openchannelAccountApps.rows[n]:r.openchannelAccountApps.rows[0];i.show({controller:"EditOpenchannelAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccountApp:t,openchannelAccount:r.openchannelAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.openchannelAccountApps.rows[n]=e:r.openchannelAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.openchannelAccountApps.rows.length;t++,0){var a=r.openchannelAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.openchannelAccount.context,a.exten=r.openchannelAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.openchannelAccount.addApplications({id:r.openchannelAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.openchannelAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.openchannelAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.openchannelAccount={},r.openchannelAccountApps={count:0,rows:[]},r.selectedOpenchannelAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]},{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"OpenchannelQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"openchannelQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:801}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,defaultValue:300,required:!0,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",role:"agent",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.openchannelAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getOpenchannelAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.openchannelAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getOpenchannelAccountApps=function(){r.promise=o.openchannelAccount.getApplications(r.query,t).$promise},r.editOpenchannelAccountApp=n,r.editInterval=function(e,n){if(r.openchannelAccountApps.rows.length){var t=r.openchannelAccountApps.rows[n]?r.openchannelAccountApps.rows[n]:r.openchannelAccountApps.rows[0];i.show({controller:"EditOpenchannelAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteOpenchannelAccountApp=function(e){_.remove(r.openchannelAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedOpenchannelAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedOpenchannelAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedOpenchannelAccountApps.forEach(function(e){_.remove(r.openchannelAccountApps.rows,{id:e.id})}),r.selectedOpenchannelAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelAccount.getAgents({id:c.openchannelAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserOpenchannelAccount?"penalty "+e.UserOpenchannelAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.openchannelAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelAccount.removeAgents({id:c.openchannelAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelAccount.addAgents({id:c.openchannelAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("OPENCHANNEL.ALL_AGENTS"),labelSelected:r.instant("OPENCHANNEL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","openchannelAccount","openchannelAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditOpenchannelAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("openChannel")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.openchannelQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.openchannelQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:801}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.openchannelAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.openchannelAccountInteractions.rows.length;n+=1){var t=m.openchannelAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.openchannelInteraction.get(m.query,u).$promise}function g(e){d.openchannelInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.openchannelAccountInteractions.rows,{id:e.id}),m.openchannelAccountInteractions.count-=1,m.openchannelAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.from?e.contactName=e.from:e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("OPENCHANNEL.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.openchannelAccount={},m.openchannelAccountInteractions={count:0,rows:[]},m.selectedOpenchannelAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.openchannelAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.OpenchannelAccountId=m.openchannelAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.openchannelInteractionDownload=function(s,e,n){return d.openchannelInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="openchannel-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getOpenchannelAccountInteractions=p,m.createOrEditOpenchannelAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:m.openchannelAccount,interaction:n,interactions:m.openchannelAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spyopenchannelInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"openchannel",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"openchannel.openchannelAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||OpenchannelAccountId:=$eq["+m.openchannelAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedOpenchannelAccountInteractions=function(){var e=angular.copy(m.selectedOpenchannelAccountInteractions);return m.selectedOpenchannelAccountInteractions=[],e},m.deleteOpenchannelAccountInteraction=g,m.deleteSelectedOpenchannelAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedOpenchannelAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedOpenchannelAccountInteractions.forEach(function(e){g(e)}),m.selectedOpenchannelAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.openchannelAccountOpenchannelCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.openchannelAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.openchannelAccountOpenchannelCannedAnswers.rows,{id:e.id}),m.openchannelAccountOpenchannelCannedAnswers.count-=1,m.openchannelAccountOpenchannelCannedAnswers.rows.length||p(),l.success({title:"OpenchannelCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.openchannelAccount={},m.openchannelAccountOpenchannelCannedAnswers={count:0,rows:[]},m.selectedOpenchannelAccountOpenchannelCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.openchannelAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.OpenchannelAccountId=m.openchannelAccount.id,m.query.id=m.openchannelAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the openchannelCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("openchannelCannedAnswer #")+e.id||"openchannelCannedAnswer")+"</b> will be deleted.").ariaLabel("delete openchannelCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getOpenchannelAccountOpenchannelCannedAnswers=p,m.createOrEditOpenchannelAccountOpenchannelCannedAnswer=function(e,n){o.show({controller:"CreateOrEditOpenchannelCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/openchannelCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:m.openchannelAccount,openchannelCannedAnswer:n,openchannelCannedAnswers:m.openchannelAccountOpenchannelCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedOpenchannelAccountOpenchannelCannedAnswers=function(){var e=angular.copy(m.selectedOpenchannelAccountOpenchannelCannedAnswers);return m.selectedOpenchannelAccountOpenchannelCannedAnswers=[],e},m.deleteOpenchannelAccountOpenchannelCannedAnswer=g,m.deleteSelectedOpenchannelAccountOpenchannelCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected openchannelCannedAnswers?").htmlContent("<b>"+m.selectedOpenchannelAccountOpenchannelCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete openchannelCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedOpenchannelAccountOpenchannelCannedAnswers.forEach(function(e){g(e)}),m.selectedOpenchannelAccountOpenchannelCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountOpenchannelCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELCANNEDANSWER",g.openchannelCannedAnswer=angular.copy(l),g.openchannelCannedAnswers=r,g.newOpenchannelCannedAnswer=!1,g.openchannelCannedAnswer||(g.openchannelCannedAnswer={},g.title="OPENCHANNEL.NEW_OPENCHANNELCANNEDANSWER",g.newOpenchannelCannedAnswer=!0),n.params.id&&(g.openchannelCannedAnswer.OpenchannelAccountId=n.params.id),g.addNewOpenchannelCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.openchannelCannedAnswer).$promise.then(function(e){g.openchannelCannedAnswers.unshift(e.toJSON()),o.success({title:"OpenchannelCannedAnswer properly created",msg:g.openchannelCannedAnswer.name?g.openchannelCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.openchannelCannedAnswer.id},g.openchannelCannedAnswer).$promise.then(function(e){var n=_.find(g.openchannelCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"OpenchannelCannedAnswer properly saved!",msg:g.openchannelCannedAnswer.name?g.openchannelCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelCannedAnswer will be deleted.").ariaLabel("Delete OpenchannelCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.openchannelCannedAnswer.id}).$promise.then(function(){_.remove(g.openchannelCannedAnswers,{id:g.openchannelCannedAnswer.id}),o.success({title:"OpenchannelCannedAnswer properly deleted!",msg:(g.openchannelCannedAnswer.name||"openchannelCannedAnswer")+" has been deleted!"}),v(g.openchannelCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelCannedAnswers","openchannelCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.openchannelAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.openchannelAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.OpenchannelAccountId=m.openchannelAccount.id,m.query.id=m.openchannelAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.openchannelAccount.id,field:"OpenchannelAccountId",route:"openchannelAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.openchannelAccount=c||e.params.openchannelAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"OpenchannelAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelAccount:e,openchannelAccounts:p.openchannelAccounts?p.openchannelAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoOpenchannelAccounts=function(){e.go("app.openchannel.openchannelAccounts",{},{reload:"app.openchannel.openchannelAccounts"})},p.saveOpenchannelAccount=function(){r.openchannelAccount.update({id:p.openchannelAccount.id},p.openchannelAccount).$promise.then(function(){l.success({title:"OpenchannelAccount updated!",msg:p.openchannelAccount.name?p.openchannelAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.openchannelAccount&&(t=_.find(p.lists,{id:Number(p.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.openchannelAccount&&(a=_.find(p.lists,{id:Number(p.openchannelAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),r.cmContact.describe({id:p.openchannelAccount.ListId}).$promise.then(function(e){p.fields=[];e=_.values(e.toJSON());for(var n=["id","createdAt","updatedAt","deletedAt","scheduledat","ListId","CompanyId"],t=0;t<e.length;t++)_.includes(n,e[t].columnName)||p.fields.push(e[t])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_FIELDS",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","openchannelAccount","userProfile","userProfileSection"],angular.module("app.openchannel").controller("OpenchannelAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.openchannelAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="openchannelAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedOpenchannelAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.openchannel.openchannelAccounts.edit",{id:e.id,openchannelAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.openchannel.openchannelAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"OpenchannelAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelAccount:e,openchannelAccounts:f.openchannelAccounts?f.openchannelAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("openchannelAccount")+"?").htmlContent("<b>"+(e.name||"openchannelAccount")+"</b> will be deleted.").ariaLabel("delete openchannelAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getOpenchannelAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.openchannelAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="OpenchannelAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOpenchannelAccount=function(e,n){i.show({controller:"CreateOrEditOpenchannelAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:n,openchannelAccounts:f.openchannelAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOpenchannelAccount=y,f.exportSelectedOpenchannelAccounts=function(){var e=angular.copy(f.selectedOpenchannelAccounts);return f.selectedOpenchannelAccounts=[],e},f.deleteSelectedOpenchannelAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected openchannelAccounts?").htmlContent("<b>"+f.selectedOpenchannelAccounts.length+" selected</b> will be deleted.").ariaLabel("delete OpenchannelAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedOpenchannelAccounts.forEach(function(e){y(e)}),f.selectedOpenchannelAccounts=[]})},f.deselectOpenchannelAccounts=function(){f.selectedOpenchannelAccounts=[]},f.selectAllOpenchannelAccounts=function(){f.selectedOpenchannelAccounts=f.openchannelAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.openchannelAccount&&(t=_.find(f.lists,{id:Number(f.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.openchannelAccount&&(a=_.find(f.lists,{id:Number(f.openchannelAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.openchannelAccounts=e||{count:0,rows:[]}}function y(e){m.openchannelAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.openchannelAccounts.rows,{id:e.id}),f.openchannelAccounts.count-=1,f.openchannelAccounts.rows.length||f.getOpenchannelAccounts(),p.success({title:_.startCase("OpenchannelAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getOpenchannelAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","openchannelAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.openchannel").controller("OpenchannelAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELQUEUE",g.openchannelQueue=angular.copy(l),g.openchannelQueues=r,g.newOpenchannelQueue=!1,g.openchannelQueue||(g.openchannelQueue={strategy:"beepall",timeout:10},g.title="OPENCHANNEL.NEW_OPENCHANNELQUEUE",g.newOpenchannelQueue=!0),g.addNewOpenchannelQueue=function(){g.errors=[],d.openchannelQueue.save(g.openchannelQueue).$promise.then(function(e){g.openchannelQueues.unshift(e.toJSON()),o.success({title:"OpenchannelQueue properly created",msg:g.openchannelQueue.name?g.openchannelQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelQueue=function(){g.errors=[],d.openchannelQueue.update({id:g.openchannelQueue.id},g.openchannelQueue).$promise.then(function(e){var n=_.find(g.openchannelQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"OpenchannelQueue properly saved!",msg:g.openchannelQueue.name?g.openchannelQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelQueue will be deleted.").ariaLabel("Delete OpenchannelQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.openchannelQueue.delete({id:g.openchannelQueue.id}).$promise.then(function(){_.remove(g.openchannelQueues,{id:g.openchannelQueue.id}),o.success({title:"OpenchannelQueue properly deleted!",msg:(g.openchannelQueue.name||"openchannelQueue")+" has been deleted!"}),v(g.openchannelQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelQueues","openchannelQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelQueue.getAgents({id:c.openchannelQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserOpenchannelQueue?"penalty "+e.UserOpenchannelQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.openchannelQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.removeAgents({id:c.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.addAgents({id:c.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("OPENCHANNEL.ALL_AGENTS"),labelSelected:r.instant("OPENCHANNEL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","openchannelQueue","openchannelQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelQueue.getTeams({id:l.openchannelQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.openchannelQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("OPENCHANNEL.ALL_TEAMS"),labelSelected:t.instant("OPENCHANNEL.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.removeTeams({id:l.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.addTeams({id:l.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","openchannelQueue","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.openchannelQueue=c||e.params.openchannelQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"OpenchannelQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:u.openchannelQueues?u.openchannelQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:u.openchannelQueues?u.openchannelQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoOpenchannelQueues=function(){e.go("app.openchannel.openchannelQueues",{},{reload:"app.openchannel.openchannelQueues"})},u.saveOpenchannelQueue=function(){r.openchannelQueue.update({id:u.openchannelQueue.id},u.openchannelQueue).$promise.then(function(){l.success({title:"OpenchannelQueue updated!",msg:u.openchannelQueue.name?u.openchannelQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","openchannelQueue","userProfileSection"],angular.module("app.openchannel").controller("OpenchannelQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.openchannelQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="openchannelQueues",f.listOrder="",f.listOrderAsc=null,f.selectedOpenchannelQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.openchannel.openchannelQueues.edit",{id:e.id,openchannelQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"OpenchannelQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:f.openchannelQueues?f.openchannelQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:f.openchannelQueues?f.openchannelQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("openchannelQueue")+"?").htmlContent("<b>"+(e.name||"openchannelQueue")+"</b> will be deleted.").ariaLabel("delete openchannelQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:810}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.openchannel.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.openchannel.realtime.queues",{})}},f.success=E,f.getOpenchannelQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.openchannelQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="OpenchannelQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOpenchannelQueue=function(e,n){i.show({controller:"CreateOrEditOpenchannelQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:f.openchannelQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOpenchannelQueue=y,f.exportSelectedOpenchannelQueues=function(){var e=angular.copy(f.selectedOpenchannelQueues);return f.selectedOpenchannelQueues=[],e},f.deleteSelectedOpenchannelQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected openchannelQueues?").htmlContent("<b>"+f.selectedOpenchannelQueues.length+" selected</b> will be deleted.").ariaLabel("delete OpenchannelQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedOpenchannelQueues.forEach(function(e){y(e)}),f.selectedOpenchannelQueues=[]})},f.deselectOpenchannelQueues=function(){f.selectedOpenchannelQueues=[]},f.selectAllOpenchannelQueues=function(){f.selectedOpenchannelQueues=f.openchannelQueues.rows};var b=!0,A=1;function E(e){f.openchannelQueues=e||{count:0,rows:[]}}function y(e){m.openchannelQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.openchannelQueues.rows,{id:e.id}),f.openchannelQueues.count-=1,f.openchannelQueues.rows.length||f.getOpenchannelQueues(),p.success({title:_.startCase("OpenchannelQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEopenchannelQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEopenchannelQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getOpenchannelQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","openchannelQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.openchannel").controller("OpenchannelQueuesController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"OpenchannelQueues":void 0,channel:"openchannel",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("OPENCHANNEL.OPENCHANNELQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditOpenchannelQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("openchannel_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userOpenchannelQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.OpenchannelQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userOpenchannelQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.OpenchannelQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"openchannel")})}),e.$on("$destroy",function(){r.removeAllListeners("openchannel_queue:save"),r.removeAllListeners("userOpenchannelQueue:remove"),r.removeAllListeners("userOpenchannelQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.openchannel").controller("QueuesOpenchannelRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.openchannel.realtime.agents":this.selectedTab=0;break;case"app.openchannel.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.openchannel.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.openchannel.realtime.agents");break;case 1:t.go("app.openchannel.realtime.queues");break;default:t.go("app.openchannel.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.openchannel").controller("OpenchannelRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.currentUser=s.getCurrentUser(),o.plugin={},o.getTrustedURL=function(){return t.trustAsResourceUrl(o.plugin.adminUrl)},a.plugin.get({id:e.params.id}).$promise.then(function(e){if(e)return o.plugin=e,a.plugin.get({id:o.plugin.id}).$promise}).catch(function(e){o.plugin=void 0})}e.$inject=["$state","$scope","$sce","api","socket","Auth"],angular.module("app.plugins.plugin").controller("PluginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this,h=t(function(){},999);function f(){v.agents.rows.forEach(function(e){g.setAgentStatusDisplayValue(e)})}function b(){v.query.offset=(v.query.page-1)*v.query.limit,v.promise=l.realtime.getAgents(v.query).$promise.then(function(e){v.agents=e,f()}).catch(function(e){c.error({title:s.instant("VOICE.AGENTS"),msg:e.status?JSON.stringify(e.data):e.toString()})})}function A(e){_.remove(v.agents.rows,["id",e.id])}v.currentUser=u.getCurrentUser(),v.channel=n.params.channel,v.queueType=n.params.direction,v.agents=o,v.pauses=r||{count:0,rows:[]},v.license=p,v.userProfileSection=m&&1==m.count?m.rows[0]:null,v.crudPermissions=u.parseCrudPermissions(v.userProfileSection?v.userProfileSection.crudPermissions:null),v.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},v.getAgents=b,v.logout=function(e){return l.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){A(e),c.success({title:"Agent logout",msg:e.fullname+"  properly logout"})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:s.instant("VOICE.LOGOUT"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.addQueue=function(e,n){a.show({controller:"AgentQueueAddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,channel:v.channel,direction:v.queueType,crudPermissions:v.crudPermissions}})},v.pause=function(e,n){return l.user.pause({id:e.id,type:n}).$promise.catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:s.instant("VOICE.PAUSE"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.unpause=function(e){return l.user.unpause({id:e.id}).$promise.catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:s.instant("VOICE.UNPAUSE"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.manageScreenRecording=function(e,n){return l.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:s.instant("VOICE.SCREENRECORDING"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.on("user:save",function(e){var n=_.find(v.agents.rows,["id",e.id]);n&&(_.merge(n,e),n.globalStatus=g.getAgentStatus(n),g.setAgentStatusDisplayValue(n))}),d.on("user:update",function(e){var n=_.find(v.agents.rows,["id",e.id]);if(n){if(!1===e.online)return A(n);_.merge(n,e),n.globalStatus=g.getAgentStatus(n),g.setAgentStatusDisplayValue(n)}else e.online&&b()}),d.on("user:agentconnect",function(e){var n=_.find(v.agents.rows,["id",e.id]);if(n){if(!e.agentconnected)return;_.merge(n,_.pick(e,["queue","destconnectedlinenum","routealias"]))}}),d.on("user:agentcomplete",function(e){if("ATTENDED"===e.transfer)return;var n=_.find(v.agents.rows,["id",e.id]);n&&(delete n.queue,delete n.destconnectedlinenum,delete n.routealias)}),f(),e.$on("$destroy",function(){d.removeAllListeners("user:save"),d.removeAllListeners("user:update"),d.removeAllListeners("user:agentconnect"),d.removeAllListeners("user:agentcomplete"),h&&t.cancel(h)})}e.$inject=["$scope","$state","$interval","$mdDialog","$document","$translate","agents","pauses","api","socket","toasty","userProfileSection","Auth","license","realtimeManager"],angular.module("app.realtime").controller("AgentsRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this;v.license=p,v.setting=g,v.currentUser=u.getCurrentUser(),v.cloudProviders=l||{count:0,rows:[]},v.table="cloudProviders",v.listOrder="",v.listOrderAsc=null,v.selectedAiTools=[],v.query={fields:"createdAt,updatedAt,id,name,service,data2,data1",sort:"-updatedAt",limit:10,page:1},v.arrayservice=_.keyBy([{option:"AmazonAWS",value:"'AmazonAWS'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),v.editdialog=function(e,n){i.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{cloudProvider:e,cloudProviders:v.cloudProviders.rows,license:v.license,setting:null,crudPermissions:v.crudPermissions}})},v.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("cloudProvider")+"?").htmlContent("<b>"+(e.name||"cloudProvider")+"</b> will be deleted.").ariaLabel("delete cloudProvider").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){A(e)},function(){console.log("CANCEL")})},v.success=b,v.getAiTools=function(){v.query.offset=(v.query.page-1)*v.query.limit,u.hasRole("admin")?v.promise=d.cloudProvider.get(v.query,b).$promise:(v.query.id=v.userProfile.id,v.query.section="AiTools",v.promise=d.userProfile.getResources(v.query,b).$promise)},v.createOrEditCloudProvider=function(e,n){i.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{cloudProvider:n,cloudProviders:v.cloudProviders.rows,license:v.license,setting:v.setting,crudPermissions:v.crudPermissions}})},v.deleteCloudProvider=A,v.exportSelectedAiTools=function(){var e=angular.copy(v.selectedAiTools);return v.selectedAiTools=[],e},v.deleteSelectedAiTools=function(e){var n=i.confirm().title("Are you sure want to delete the selected cloudProviders?").htmlContent("<b>"+v.selectedAiTools.length+" selected</b> will be deleted.").ariaLabel("delete CloudProviders").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){v.selectedAiTools.forEach(function(e){A(e)}),v.selectedAiTools=[]})},v.deselectAiTools=function(){v.selectedAiTools=[]},v.selectAllAiTools=function(){v.selectedAiTools=v.cloudProviders.rows};var h=!0,f=1;function b(e){v.cloudProviders=e||{count:0,rows:[]}}function A(e){d.cloudProvider.delete({id:e.id}).$promise.then(function(){_.remove(v.cloudProviders.rows,{id:e.id}),v.cloudProviders.count-=1,v.cloudProviders.rows.length||v.getAiTools(),m.success({title:_.startCase("CloudProvider")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcloudProvider"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcloudProvider",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){h?o(function(){h=!1}):(n||(f=v.query.page),e!==n&&(v.query.page=1),e||(v.query.page=f),v.getAiTools())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","cloudProviders","api","msUtils","toasty","Auth","license","setting"],angular.module("app.settings").controller("CloudProvidersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(e){a.hide(e)}p.currentUser=c.getCurrentUser(),p.errors=[],p.setting=u,p.license=m,p.hasModulePermissions={},p.passwordPattern=p.setting&&p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.title="SETTINGS.EDIT_CLOUDPROVIDER",p.cloudProvider=angular.copy(l),p.cloudProviders=r,p.newCloudProvider=!1,p.cloudProvider||(p.cloudProvider={},p.title="SETTINGS.NEW_CLOUDPROVIDER",p.newCloudProvider=!0),p.addNewCloudProvider=function(){p.errors=[],d.cloudProvider.save(p.cloudProvider).$promise.then(function(e){p.cloudProviders.unshift(e.toJSON()),o.success({title:"CloudProvider properly created",msg:p.cloudProvider.name?p.cloudProvider.name+" has been created!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveCloudProvider=function(){p.errors=[],d.cloudProvider.update({id:p.cloudProvider.id},p.cloudProvider).$promise.then(function(e){var n=_.find(p.cloudProviders,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CloudProvider properly saved!",msg:p.cloudProvider.name?p.cloudProvider.name+" has been saved!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteCloudProvider=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The cloudProvider will be deleted.").ariaLabel("Delete CloudProvider").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cloudProvider.delete({id:p.cloudProvider.id}).$promise.then(function(){_.remove(p.cloudProviders,{id:p.cloudProvider.id}),o.success({title:"CloudProvider properly deleted!",msg:(p.cloudProvider.name||"cloudProvider")+" has been deleted!"}),g(p.cloudProvider)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.getDateFromString=function(e){return null===e?void 0:new Date(e)},p.closeDialog=g}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","cloudProviders","cloudProvider","api","Auth","license","setting"],angular.module("app.settings").controller("CreateOrEditCloudProviderDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_CUSTOMIZATION",g.customization=angular.copy(l),g.customizations=r,g.newCustomization=!1,g.customization||(g.customization={},g.title="SETTINGS.NEW_CUSTOMIZATION",g.newCustomization=!0),g.addNewCustomization=function(){g.errors=[],d.setting.save(g.customization).$promise.then(function(e){g.customizations.unshift(e.toJSON()),o.success({title:"Customization properly created",msg:g.customization.name?g.customization.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomization=function(){g.errors=[],d.setting.update({id:g.customization.id},g.customization).$promise.then(function(e){var n=_.find(g.customizations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Customization properly saved!",msg:g.customization.name?g.customization.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomization=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The customization will be deleted.").ariaLabel("Delete Customization").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.setting.delete({id:g.customization.id}).$promise.then(function(){_.remove(g.customizations,{id:g.customization.id}),o.success({title:"Customization properly deleted!",msg:(g.customization.name||"customization")+" has been deleted!"}),v(g.customization)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customizations","customization","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditCustomizationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.customizations=e,s.customization={},s.customizations&&s.customizations.rows&&s.customizations.rows.length&&(s.customization=s.customizations.rows[0]),s.saveCustomization=function(){s.customization.id?n.setting.update({id:s.customization.id},s.customization).$promise.then(function(){t.success({title:"Customization updated!",msg:s.customization.name?s.customization.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.setting.save(s.customization).$promise.then(function(e){_.merge(s.customization,e),t.success({title:"Customization updated!",msg:s.customization.name?s.customization.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["customizations","api","toasty","license","Auth"],angular.module("app.settings").controller("CustomizationsController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg","ico"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/favicon".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationfaviconController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/logo".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationlogoController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/logo_login".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationlogologinController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/preferred".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationpreferredController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_GENERAL",g.general=angular.copy(l),g.generals=r,g.newGeneral=!1,g.general||(g.general={min_internal:1e3,chatTimeout:30,phoneBarAutoUpdater:!0,phoneBarAutoUpdaterUrl:"https://www.xcally.com/bar/phonebar/autoupdater.xml",splitSizeCsv:5e3,splitSizePdf:1e3,splitSizeXlsx:5e3,messagesAlignment:"alternate",phoneBarRememberMeEnabled:!0,allowedLoginAttempts:5,blockDuration:10,loginMailFrequency:10,enforcePasswordHistory:!0,passwordHistoryLimit:3},g.title="SETTINGS.NEW_GENERAL",g.newGeneral=!0),g.addNewGeneral=function(){g.errors=[],d.setting.save(g.general).$promise.then(function(e){g.generals.unshift(e.toJSON()),o.success({title:"General properly created",msg:g.general.name?g.general.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveGeneral=function(){g.errors=[],d.setting.update({id:g.general.id},g.general).$promise.then(function(e){var n=_.find(g.generals,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"General properly saved!",msg:g.general.name?g.general.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteGeneral=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The general will be deleted.").ariaLabel("Delete General").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.setting.delete({id:g.general.id}).$promise.then(function(){_.remove(g.generals,{id:g.general.id}),o.success({title:"General properly deleted!",msg:(g.general.name||"general")+" has been deleted!"}),v(g.general)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.cloudProvider.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.cloudProviders=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CLOUDPROVIDERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","generals","general","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditGeneralDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.generals=e,s.general={},s.generals&&s.generals.rows&&s.generals.rows.length&&(s.general=s.generals.rows[0]),_.isNil(s.general.privacyPolicyEmail)||(s.general.enablePrivacyPolicyEmail=!0),_.isNil(s.general.privacyPolicyName)||(s.general.enablePrivacyPolicyName=!0),_.isNil(s.general.privacyPolicyNumber)||(s.general.enablePrivacyPolicyNumber=!0),n.cloudProvider.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){s.cloudProviders=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CLOUDPROVIDERS",msg:e.data?JSON.stringify(e.data):e.toString()})}),s.saveGeneral=function(){s.general.enablePrivacyPolicyEmail||(s.general.privacyPolicyEmail=null),s.general.enablePrivacyPolicyNumber||(s.general.privacyPolicyNumber=null),s.general.enablePrivacyPolicyName||(s.general.privacyPolicyName=null),s.general.id?n.setting.update({id:s.general.id},s.general).$promise.then(function(){t.success({title:"General updated!",msg:s.general.name?s.general.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.setting.save(s.general).$promise.then(function(e){_.merge(s.general,e),t.success({title:"General updated!",msg:s.general.name?s.general.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.onPrivacyPolicyChange=function(e){switch(e){case"email":s.general.enablePrivacyPolicyEmail&&!s.general.privacyPolicyEmail&&(s.general.privacyPolicyEmail=0);break;case"name":s.general.enablePrivacyPolicyName&&!s.general.privacyPolicyName&&(s.general.privacyPolicyName=0);break;case"number":s.general.enablePrivacyPolicyNumber&&!s.general.privacyPolicyNumber&&(s.general.privacyPolicyNumber=0)}}}e.$inject=["generals","api","toasty","license","Auth"],angular.module("app.settings").controller("GeneralsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s){var o=this;o.license=i||{},o.agents=0,o.users=0,o.telephones=0,o.channels=[{name:"voice",icon:"icon-phone"},{name:"chat",icon:"icon-hangouts"},{name:"mail",icon:"icon-email"},{name:"messaging",icon:"icon-message-text"},{name:"fax",icon:"icon-deskphone"},{name:"openchannel",icon:"icon-google-earth"},{name:"whatsapp",icon:"icon-whatsapp"}],o.modules=[{name:"cm",icon:"icon-account-circle"},{name:"dialer",icon:"icon-crosshairs"},{name:"jscripty",icon:"icon-console"}],o.addons=[{name:"webrtc",icon:"icon-server-plus"},{name:"jaws",icon:"icon-fish"},{name:"custom",icon:"icon-table-edit"},{name:"screenrecording",icon:"icon-video"},{name:"ai",icon:"icon-text-to-speech"}],o.sessions=[{name:"callysquare",icon:"icon-sitemap",restart:!0,label:"channels",enabled:"voice"},{name:"virtual",icon:"icon-dots-horizontal",restart:!1,label:"sessions",enabled:"chat"}],o.others=[{name:"update",icon:"icon-cloud-download"}],o.requestLicense=function(e){t.show({controller:"RequestLicenseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/license/request/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:i,channels:o.channels,modules:o.modules,addons:o.addons,sessions:o.sessions,others:o.others}})},o.updateLicense=function(e){t.show({controller:"UpdateLicenseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/license/update/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:i}})},o.gotoProcess=function(e){a.go("app.settings.system",{tab:1})},s.user.get({fields:"id",role:"agent",online:!0}).$promise.then(function(e){return o.agents=e&&e.count?e.count:0,s.user.get({fields:"id",role:"user,admin"}).$promise}).then(function(e){return o.users=e&&e.count?e.count:0,s.user.get({fields:"id",role:"telephone"}).$promise}).then(function(e){o.telephones=e&&e.count?e.count:0}).catch(function(e){console.log(e)})}e.$inject=["$document","$mdDialog","$state","license","toasty","api"],angular.module("app.settings.license").controller("LicenseController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(){e.hide()}m.errors=[],m.user=d.getCurrentUser(),m.license=angular.copy(t),m.channels=a,m.modules=i,m.addons=s,m.sessions=o,m.others=r,m.license.name=m.user.fullname,m.license.email=m.user.email,m.sendRequest=function(){for(var e in m.errors=[],m.table="||FIELD||OLD||NEW||\n",m.license)m.license.hasOwnProperty(e)&&!_.includes(["$promise","$resolved"],e)&&(t[e]===m.license[e]?m.table+="|"+e+"|"+(void 0!==t[e]?t[e]:"")+"|"+m.license[e]+"|\n":m.table+="|"+e+"|{color:red}"+(void 0!==t[e]?t[e]:"")+"{color}|*"+m.license[e]+"*|\n");l.jira.save({key:"MOTLICENSE",summary:"Motion License Request",description:m.table,issuetype:"License Request"}).$promise.then(function(e){n.success({title:"Request sent!",msg:c.instant("SETTINGS.LICENSE_REQUEST_SENT"),timeout:15e3}),u()}).catch(function(e){console.error(e),m.errors=[{message:c.instant("SETTINGS.JIRA_ERROR_MESSAGE"),type:"api.jira"}]})},m.closeDialog=u}e.$inject=["$mdDialog","toasty","license","channels","modules","addons","sessions","others","api","Auth","$translate"],angular.module("app.settings.license").controller("RequestLicenseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.errors=[],s.license=angular.copy(t),s.licenseKey,s.updateLicense=function(){return a.license.update({id:1,key:s.licenseKey}).$promise.then(function(e){e&&(e.demo?n.error({title:"License update failed!",msg:"Invalid license key"}):n.success({title:"License properly updated!",msg:"The license has been updated!"}))}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATElicense",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","toasty","license","api","$translate"],angular.module("app.settings.license").controller("UpdateLicenseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(e){a.hide(e)}p.currentUser=c.getCurrentUser(),p.errors=[],p.setting=u,p.license=m,p.hasModulePermissions={},p.passwordPattern=p.setting&&p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.title="SETTINGS.EDIT_NETWORK",p.network=angular.copy(l),p.networks=r,p.newNetwork=!1,p.network||(p.network={type:"localnet"},p.title="SETTINGS.NEW_NETWORK",p.newNetwork=!0),p.addNewNetwork=function(){p.errors=[],d.network.save(p.network).$promise.then(function(e){p.networks.unshift(e.toJSON()),o.success({title:"Network properly created",msg:p.network.name?p.network.name+" has been created!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveNetwork=function(){p.errors=[],d.network.update({id:p.network.id},p.network).$promise.then(function(e){var n=_.find(p.networks,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Network properly saved!",msg:p.network.name?p.network.name+" has been saved!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteNetwork=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The network will be deleted.").ariaLabel("Delete Network").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.network.delete({id:p.network.id}).$promise.then(function(){_.remove(p.networks,{id:p.network.id}),o.success({title:"Network properly deleted!",msg:(p.network.name||"network")+" has been deleted!"}),g(p.network)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.getDateFromString=function(e){return null===e?void 0:new Date(e)},p.closeDialog=g}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","networks","network","api","Auth","license","setting"],angular.module("app.settings").controller("CreateOrEditNetworkDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this;v.license=p,v.setting=g,v.currentUser=u.getCurrentUser(),v.networks=l||{count:0,rows:[]},v.table="networks",v.listOrder="",v.listOrderAsc=null,v.selectedNetworks=[],v.query={fields:"createdAt,updatedAt,id,type,value,username,password",sort:"-updatedAt",limit:10,page:1},v.arraytype=_.keyBy([{option:"LocalNET",value:"'localnet'"},{option:"ExternIP",value:"'externip'"},{option:"Turn",value:"'turn'"},{option:"Stun",value:"'stun'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),v.editdialog=function(e,n){i.show({controller:"CreateOrEditNetworkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/networks/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{network:e,networks:v.networks.rows,license:v.license,setting:null,crudPermissions:v.crudPermissions}})},v.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("network")+"?").htmlContent("<b>"+(e.name||"network")+"</b> will be deleted.").ariaLabel("delete network").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){A(e)},function(){console.log("CANCEL")})},v.success=b,v.getNetworks=function(){v.query.offset=(v.query.page-1)*v.query.limit,u.hasRole("admin")?v.promise=d.network.get(v.query,b).$promise:(v.query.id=v.userProfile.id,v.query.section="Networks",v.promise=d.userProfile.getResources(v.query,b).$promise)},v.createOrEditNetwork=function(e,n){i.show({controller:"CreateOrEditNetworkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/networks/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{network:n,networks:v.networks.rows,license:v.license,setting:v.setting,crudPermissions:v.crudPermissions}})},v.deleteNetwork=A,v.exportSelectedNetworks=function(){var e=angular.copy(v.selectedNetworks);return v.selectedNetworks=[],e},v.deleteSelectedNetworks=function(e){var n=i.confirm().title("Are you sure want to delete the selected networks?").htmlContent("<b>"+v.selectedNetworks.length+" selected</b> will be deleted.").ariaLabel("delete Networks").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){v.selectedNetworks.forEach(function(e){A(e)}),v.selectedNetworks=[]})},v.deselectNetworks=function(){v.selectedNetworks=[]},v.selectAllNetworks=function(){v.selectedNetworks=v.networks.rows};var h=!0,f=1;function b(e){v.networks=e||{count:0,rows:[]}}function A(e){d.network.delete({id:e.id}).$promise.then(function(){_.remove(v.networks.rows,{id:e.id}),v.networks.count-=1,v.networks.rows.length||v.getNetworks(),m.success({title:_.startCase("Network")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEnetwork"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEnetwork",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){h?o(function(){h=!1}):(n||(f=v.query.page),e!==n&&(v.query.page=1),e||(v.query.page=f),v.getNetworks())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","networks","api","msUtils","toasty","Auth","license","setting"],angular.module("app.settings").controller("NetworksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_SMTP",g.smtp=angular.copy(l),g.smtps=r,g.newSmtp=!1,g.smtp||(g.smtp={service:!0},g.title="SETTINGS.NEW_SMTP",g.newSmtp=!0),g.addNewSmtp=function(){g.errors=[],d.mailAccount.save(g.smtp).$promise.then(function(e){g.smtps.unshift(e.toJSON()),o.success({title:"Smtp properly created",msg:g.smtp.name?g.smtp.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmtp=function(){g.errors=[],d.mailAccount.update({id:g.smtp.id},g.smtp).$promise.then(function(e){var n=_.find(g.smtps,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Smtp properly saved!",msg:g.smtp.name?g.smtp.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmtp=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smtp will be deleted.").ariaLabel("Delete Smtp").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailAccount.delete({id:g.smtp.id}).$promise.then(function(){_.remove(g.smtps,{id:g.smtp.id}),o.success({title:"Smtp properly deleted!",msg:(g.smtp.name||"smtp")+" has been deleted!"}),v(g.smtp)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smtps","smtp","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditSmtpDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.smtps=e,s.smtp={},s.smtps&&s.smtps.rows&&s.smtps.rows.length?s.smtp=s.smtps.rows[0]:s.smtp={service:!0,Smtp:{service:null}},s.saveSmtp=function(){s.smtp.id?n.mailAccount.update({id:s.smtp.id},s.smtp).$promise.then(function(){t.success({title:"Smtp updated!",msg:s.smtp.name?s.smtp.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.mailAccount.save(s.smtp).$promise.then(function(e){_.merge(s.smtp,e),t.success({title:"Smtp updated!",msg:s.smtp.name?s.smtp.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.verifySmtp=function(){s.smtp.id&&n.mailAccount.verifySmtp({id:s.smtp.id}).$promise.then(function(){t.success({title:"Smtp verified!",msg:s.smtp.name?s.smtp.name+" has been verified!":""})}).catch(function(e){t.error({title:"Smtp not verified! Remember to save before to verify!",msg:e.data?JSON.stringify(e.data):e.toString(),timeout:1e4})})}}e.$inject=["smtps","api","toasty","license","Auth"],angular.module("app.settings").controller("SmtpController",e)}(),function(){"use strict";function e(e,i,s,n,t,a,o,r){var l,d=this;d.system=t||{},d.processes=a?a.rows:[],d.processLimit=7,d.selectedTab=n.params.tab||0,d.getInfo=function(){return r.system.get().$promise.then(function(e){_.merge(d.system,e)}).catch(d.cancelInterval)},d.getProcesses=function(){return r.pm2.get().$promise.then(function(e){_.merge(d.processes,e?e.rows:[])}).catch(d.cancelInterval)},d.cancelInterval=function(e){i.cancel(l)},d.updateProcess=function(e,n,t){var a=s.confirm().title("Would you like to change the status of the process #"+n+"?").textContent("The status will be changed to: "+t.toUpperCase()).ariaLabel("Lucky day").targetEvent(e).ok("Ok").cancel("Cancel");s.show(a).then(function(){return r.pm2.update({id:n,status:t})}).then(function(){i(d.getProcesses,1e3,1)}).then(function(){o.success({title:"Process updated!",msg:"Status properly changed to: "+t})})},l=i(d.getInfo,5e3),e.$on("$destroy",function(){d.cancelInterval()})}e.$inject=["$scope","$interval","$mdDialog","$state","system","processes","toasty","api"],angular.module("app.settings.system").controller("SystemController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.title="SETTINGS.UPDATE",s.progress=0,s.updating=!0,s.output="Waiting...",s.success=!0,s.interval=n(function(){s.progress<90&&(s.progress+=1)},1e3),s.closeDialog=function(){e.hide()},s.reload=function(){t.location.reload()},s.stopInterval=function(){angular.isDefined(s.interval)&&(n.cancel(s.interval),s.interval=void 0);s.progress=100,s.updating=!1},i.version.fetch().$promise.then(function(e){return s.output=e.output+"...",i.version.reset().$promise}).then(function(e){return s.output=e.output+"...",i.version.pull().$promise}).then(function(e){return s.output=e.output+"...",i.version.migrations().$promise}).then(function(e){return s.output=e.output+"...",i.version.restart().$promise}).then(function(e){s.output="Waiting to restart motion...",a(function(){s.stopInterval()},3e4)}).catch(function(e){s.success=!1,s.stopInterval(),s.output=JSON.stringify(e)})}e.$inject=["$mdDialog","$interval","$window","$timeout","api"],angular.module("app.settings").controller("UpdateDialogController",e)}(),function(){"use strict";function e(t,e,a,n,i){this.version=n||{},this.updateConfirm=function(e){var n=t.confirm().title("Would you like to update your system?").htmlContent('The system request time for the update should be below 1 minute.<br><br>Do you agree the terms of this <a href="http://www.xcally.com/support/eula-xcally-license-en.pdf" target="_blank">End User License Agreement<a>?').ariaLabel("").targetEvent(e).clickOutsideToClose(!0).parent(angular.element(a.body)).ok("I agree").cancel("Disagree");t.show(n).then(function(){t.show({controller:"UpdateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/updates/update/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!1})})}}e.$inject=["$mdDialog","$interval","$document","version","toasty"],angular.module("app.settings").controller("UpdatesController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"SmsQueues":void 0,channel:"sms",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("SMS.SMSQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditSmsQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("sms_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userSmsQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.SmsQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userSmsQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.SmsQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"sms")})}),e.$on("$destroy",function(){r.removeAllListeners("sms_queue:save"),r.removeAllListeners("userSmsQueue:remove"),r.removeAllListeners("userSmsQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.sms").controller("QueuesSmsRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.sms.realtime.agents":this.selectedTab=0;break;case"app.sms.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.sms.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.sms.realtime.agents");break;case 1:t.go("app.sms.realtime.queues");break;default:t.go("app.sms.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.sms").controller("SmsRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSACCOUNT",g.smsAccount=angular.copy(l),g.smsAccounts=r,g.newSmsAccount=!1,g.smsAccount||(g.smsAccount={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),type:"twilio",waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="SMS.NEW_SMSACCOUNT",g.newSmsAccount=!0),n.params.id&&(g.smsAccount.SmsAccountId=n.params.id),g.addNewSmsAccount=function(){g.errors=[],d.smsAccount.save(g.smsAccount).$promise.then(function(e){g.smsAccounts.unshift(e.toJSON()),o.success({title:"SmsAccount properly created",msg:g.smsAccount.name?g.smsAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsAccount=function(){g.errors=[],d.smsAccount.update({id:g.smsAccount.id},g.smsAccount).$promise.then(function(e){var n=_.find(g.smsAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SmsAccount properly saved!",msg:g.smsAccount.name?g.smsAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsAccount will be deleted.").ariaLabel("Delete SmsAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.smsAccount.delete({id:g.smsAccount.id}).$promise.then(function(){_.remove(g.smsAccounts,{id:g.smsAccount.id}),o.success({title:"SmsAccount properly deleted!",msg:(g.smsAccount.name||"smsAccount")+" has been deleted!"}),v(g.smsAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.smsAccount&&(t=_.find(g.lists,{id:Number(g.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.smsAccount&&(a=_.find(g.lists,{id:Number(g.smsAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsAccounts","smsAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.smsAccountApps.rows.length){var t=r.smsAccountApps.rows[n]?r.smsAccountApps.rows[n]:r.smsAccountApps.rows[0];i.show({controller:"EditSmsAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccountApp:t,smsAccount:r.smsAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.smsAccountApps.rows[n]=e:r.smsAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.smsAccountApps.rows.length;t++,0){var a=r.smsAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.smsAccount.context,a.exten=r.smsAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.smsAccount.addApplications({id:r.smsAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.smsAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.smsAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.smsAccount={},r.smsAccountApps={count:0,rows:[]},r.selectedSmsAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"SmsQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"smsQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:701}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.smsAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getSmsAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.smsAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getSmsAccountApps=function(){r.promise=o.smsAccount.getApplications(r.query,t).$promise},r.editSmsAccountApp=n,r.editInterval=function(e,n){if(r.smsAccountApps.rows.length){var t=r.smsAccountApps.rows[n]?r.smsAccountApps.rows[n]:r.smsAccountApps.rows[0];i.show({controller:"EditSmsAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteSmsAccountApp=function(e){_.remove(r.smsAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedSmsAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedSmsAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedSmsAccountApps.forEach(function(e){_.remove(r.smsAccountApps.rows,{id:e.id})}),r.selectedSmsAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.sms").controller("SmsAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsAccount.getAgents({id:c.smsAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserSmsAccount?"penalty "+e.UserSmsAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.smsAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsAccount.removeAgents({id:c.smsAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsAccount.addAgents({id:c.smsAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("SMS.ALL_AGENTS"),labelSelected:r.instant("SMS.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","smsAccount","smsAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditSmsAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("sms")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.smsQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.smsQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.smsAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.smsAccountInteractions.rows.length;n+=1){var t=m.smsAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.smsInteraction.get(m.query,u).$promise}function g(e){d.smsInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.smsAccountInteractions.rows,{id:e.id}),m.smsAccountInteractions.count-=1,m.smsAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.mobile):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.smsAccount={},m.smsAccountInteractions={count:0,rows:[]},m.selectedSmsAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.smsAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.SmsAccountId=m.smsAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.smsInteractionDownload=function(s,e,n){return d.smsInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="sms-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getSmsAccountInteractions=p,m.createOrEditSmsAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:m.smsAccount,interaction:n,interactions:m.smsAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spysmsInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"sms",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"sms.smsAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||SmsAccountId:=$eq["+m.smsAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedSmsAccountInteractions=function(){var e=angular.copy(m.selectedSmsAccountInteractions);return m.selectedSmsAccountInteractions=[],e},m.deleteSmsAccountInteraction=g,m.deleteSelectedSmsAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedSmsAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedSmsAccountInteractions.forEach(function(e){g(e)}),m.selectedSmsAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.sms").controller("SmsAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.smsAccountSmsCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.smsAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.smsAccountSmsCannedAnswers.rows,{id:e.id}),m.smsAccountSmsCannedAnswers.count-=1,m.smsAccountSmsCannedAnswers.rows.length||p(),l.success({title:"SmsCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.smsAccount={},m.smsAccountSmsCannedAnswers={count:0,rows:[]},m.selectedSmsAccountSmsCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.smsAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.SmsAccountId=m.smsAccount.id,m.query.id=m.smsAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the smsCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("smsCannedAnswer #")+e.id||"smsCannedAnswer")+"</b> will be deleted.").ariaLabel("delete smsCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getSmsAccountSmsCannedAnswers=p,m.createOrEditSmsAccountSmsCannedAnswer=function(e,n){o.show({controller:"CreateOrEditSmsCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/smsCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:m.smsAccount,smsCannedAnswer:n,smsCannedAnswers:m.smsAccountSmsCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedSmsAccountSmsCannedAnswers=function(){var e=angular.copy(m.selectedSmsAccountSmsCannedAnswers);return m.selectedSmsAccountSmsCannedAnswers=[],e},m.deleteSmsAccountSmsCannedAnswer=g,m.deleteSelectedSmsAccountSmsCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected smsCannedAnswers?").htmlContent("<b>"+m.selectedSmsAccountSmsCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete smsCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedSmsAccountSmsCannedAnswers.forEach(function(e){g(e)}),m.selectedSmsAccountSmsCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.sms").controller("SmsAccountSmsCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSCANNEDANSWER",g.smsCannedAnswer=angular.copy(l),g.smsCannedAnswers=r,g.newSmsCannedAnswer=!1,g.smsCannedAnswer||(g.smsCannedAnswer={},g.title="SMS.NEW_SMSCANNEDANSWER",g.newSmsCannedAnswer=!0),n.params.id&&(g.smsCannedAnswer.SmsAccountId=n.params.id),g.addNewSmsCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.smsCannedAnswer).$promise.then(function(e){g.smsCannedAnswers.unshift(e.toJSON()),o.success({title:"SmsCannedAnswer properly created",msg:g.smsCannedAnswer.name?g.smsCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.smsCannedAnswer.id},g.smsCannedAnswer).$promise.then(function(e){var n=_.find(g.smsCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SmsCannedAnswer properly saved!",msg:g.smsCannedAnswer.name?g.smsCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsCannedAnswer will be deleted.").ariaLabel("Delete SmsCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.smsCannedAnswer.id}).$promise.then(function(){_.remove(g.smsCannedAnswers,{id:g.smsCannedAnswer.id}),o.success({title:"SmsCannedAnswer properly deleted!",msg:(g.smsCannedAnswer.name||"smsCannedAnswer")+" has been deleted!"}),v(g.smsCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsCannedAnswers","smsCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.smsAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.smsAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.SmsAccountId=m.smsAccount.id,m.query.id=m.smsAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.smsAccount.id,field:"SmsAccountId",route:"smsAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.sms").controller("SmsAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.smsAccount=c||e.params.smsAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"SmsAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsAccount:e,smsAccounts:p.smsAccounts?p.smsAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoSmsAccounts=function(){e.go("app.sms.smsAccounts",{},{reload:"app.sms.smsAccounts"})},p.saveSmsAccount=function(){r.smsAccount.update({id:p.smsAccount.id},p.smsAccount).$promise.then(function(){l.success({title:"SmsAccount updated!",msg:p.smsAccount.name?p.smsAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.smsAccount&&(t=_.find(p.lists,{id:Number(p.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.smsAccount&&(a=_.find(p.lists,{id:Number(p.smsAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","smsAccount","userProfile","userProfileSection"],angular.module("app.sms").controller("SmsAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.smsAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="smsAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSmsAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Twilio",value:"'twilio'"},{option:"Skebby",value:"'skebby'"},{option:"Connectel",value:"'connectel'"},{option:"ClickSend",value:"'clicksend'"},{option:"Plivo",value:"'plivo'"},{option:"Infobip",value:"'infobip'"},{option:"Clickatell",value:"'clickatell'"},{option:"Bandwidth",value:"'bandwidth'"},{option:"CSCTelecom",value:"'csc'"},{option:"Intelepeer",value:"'intelepeer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysmsMethod=_.keyBy([{option:"Basic",value:"'SI'"},{option:"Classic",value:"'TI'"},{option:"Classic+",value:"'GP'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.sms.smsAccounts.edit",{id:e.id,smsAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.sms.smsAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"SmsAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsAccount:e,smsAccounts:f.smsAccounts?f.smsAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("smsAccount")+"?").htmlContent("<b>"+(e.name||"smsAccount")+"</b> will be deleted.").ariaLabel("delete smsAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSmsAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.smsAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SmsAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSmsAccount=function(e,n){i.show({controller:"CreateOrEditSmsAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:n,smsAccounts:f.smsAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSmsAccount=y,f.exportSelectedSmsAccounts=function(){var e=angular.copy(f.selectedSmsAccounts);return f.selectedSmsAccounts=[],e},f.deleteSelectedSmsAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected smsAccounts?").htmlContent("<b>"+f.selectedSmsAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SmsAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSmsAccounts.forEach(function(e){y(e)}),f.selectedSmsAccounts=[]})},f.deselectSmsAccounts=function(){f.selectedSmsAccounts=[]},f.selectAllSmsAccounts=function(){f.selectedSmsAccounts=f.smsAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.smsAccount&&(t=_.find(f.lists,{id:Number(f.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.smsAccount&&(a=_.find(f.lists,{id:Number(f.smsAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.smsAccounts=e||{count:0,rows:[]}}function y(e){m.smsAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.smsAccounts.rows,{id:e.id}),f.smsAccounts.count-=1,f.smsAccounts.rows.length||f.getSmsAccounts(),p.success({title:_.startCase("SmsAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSmsAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","smsAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.sms").controller("SmsAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSQUEUE",g.smsQueue=angular.copy(l),g.smsQueues=r,g.newSmsQueue=!1,g.smsQueue||(g.smsQueue={strategy:"beepall",timeout:10},g.title="SMS.NEW_SMSQUEUE",g.newSmsQueue=!0),g.addNewSmsQueue=function(){g.errors=[],d.smsQueue.save(g.smsQueue).$promise.then(function(e){g.smsQueues.unshift(e.toJSON()),o.success({title:"SmsQueue properly created",msg:g.smsQueue.name?g.smsQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsQueue=function(){g.errors=[],d.smsQueue.update({id:g.smsQueue.id},g.smsQueue).$promise.then(function(e){var n=_.find(g.smsQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SmsQueue properly saved!",msg:g.smsQueue.name?g.smsQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsQueue will be deleted.").ariaLabel("Delete SmsQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.smsQueue.delete({id:g.smsQueue.id}).$promise.then(function(){_.remove(g.smsQueues,{id:g.smsQueue.id}),o.success({title:"SmsQueue properly deleted!",msg:(g.smsQueue.name||"smsQueue")+" has been deleted!"}),v(g.smsQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsQueues","smsQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsQueue.getAgents({id:c.smsQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserSmsQueue?"penalty "+e.UserSmsQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.smsQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.removeAgents({id:c.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.addAgents({id:c.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("SMS.ALL_AGENTS"),labelSelected:r.instant("SMS.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","smsQueue","smsQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsQueue.getTeams({id:l.smsQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.smsQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("SMS.ALL_TEAMS"),labelSelected:t.instant("SMS.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.removeTeams({id:l.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.addTeams({id:l.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","smsQueue","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.smsQueue=c||e.params.smsQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"SmsQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:u.smsQueues?u.smsQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:u.smsQueues?u.smsQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoSmsQueues=function(){e.go("app.sms.smsQueues",{},{reload:"app.sms.smsQueues"})},u.saveSmsQueue=function(){r.smsQueue.update({id:u.smsQueue.id},u.smsQueue).$promise.then(function(){l.success({title:"SmsQueue updated!",msg:u.smsQueue.name?u.smsQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","smsQueue","userProfileSection"],angular.module("app.sms").controller("SmsQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.smsQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="smsQueues",f.listOrder="",f.listOrderAsc=null,f.selectedSmsQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.sms.smsQueues.edit",{id:e.id,smsQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"SmsQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:f.smsQueues?f.smsQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:f.smsQueues?f.smsQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("smsQueue")+"?").htmlContent("<b>"+(e.name||"smsQueue")+"</b> will be deleted.").ariaLabel("delete smsQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:710}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.sms.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.sms.realtime.queues",{})}},f.success=E,f.getSmsQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.smsQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SmsQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSmsQueue=function(e,n){i.show({controller:"CreateOrEditSmsQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:f.smsQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSmsQueue=y,f.exportSelectedSmsQueues=function(){var e=angular.copy(f.selectedSmsQueues);return f.selectedSmsQueues=[],e},f.deleteSelectedSmsQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected smsQueues?").htmlContent("<b>"+f.selectedSmsQueues.length+" selected</b> will be deleted.").ariaLabel("delete SmsQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSmsQueues.forEach(function(e){y(e)}),f.selectedSmsQueues=[]})},f.deselectSmsQueues=function(){f.selectedSmsQueues=[]},f.selectAllSmsQueues=function(){f.selectedSmsQueues=f.smsQueues.rows};var b=!0,A=1;function E(e){f.smsQueues=e||{count:0,rows:[]}}function y(e){m.smsQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.smsQueues.rows,{id:e.id}),f.smsQueues.count-=1,f.smsQueues.rows.length||f.getSmsQueues(),p.success({title:_.startCase("SmsQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsmsQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsmsQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSmsQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","smsQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.sms").controller("SmsQueuesController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u){var p=this;function g(e){p.agents=e||{count:0,rows:[]}}function v(e){l.user.delete({id:e.id}).$promise.then(function(){_.remove(p.agents.rows,{id:e.id}),p.agents.count-=1,p.agents.rows.length||p.getAgents(),d.success({title:_.startCase("Agent")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}p.license=m,p.setting=u,p.currentUser=c.getCurrentUser(),p.agents=s||{count:0,rows:[]},p.userProfile=o,p.userProfileSection=r&&1==r.count?r.rows[0]:null,p.crudPermissions=c.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.selectedAgents=[],p.query={fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls",role:"agent",sort:"-updatedAt",limit:10,page:1},p.showWebBarOptions=[{option:"Phonebar",value:0},{option:"External",value:1},{option:"WebRTC",value:2}],p.editstate=function(e){n.go("app.staff.agents.edit",{id:e.id,agent:e,crudPermissions:p.crudPermissions})},p.teamadddialog=function(e,n){a.show({controller:"AgentteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:p.agents?p.agents.rows:[],crudPermissions:p.crudPermissions}})},p.deleteconfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the "+_.startCase("agent")+"?").htmlContent("<b>"+(e.name||"agent")+"</b> will be deleted.").ariaLabel("delete agent").targetEvent(n).ok("OK").cancel("CANCEL");a.show(t).then(function(){v(e)})},p.success=g,p.getAgents=function(){p.query.offset=(p.query.page-1)*p.query.limit,c.hasRole("admin")?p.promise=l.user.get(p.query,g).$promise:(p.query.id=p.userProfile.id,p.query.section="Agents",p.promise=l.userProfile.getResources(p.query,g).$promise)},p.createOrEditAgent=function(e,n){a.show({controller:"CreateOrEditAgentDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{agent:n,agents:p.agents.rows,license:p.license,setting:p.setting,crudPermissions:p.crudPermissions}})},p.deleteAgent=v,p.exportSelectedAgents=function(){var e=angular.copy(p.selectedAgents);return p.selectedAgents=[],e},p.deleteSelectedAgents=function(e){var n=a.confirm().title("Are you sure want to delete the selected agents?").htmlContent("<b>"+p.selectedAgents.length+" selected</b> will be deleted.").ariaLabel("delete Agents").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){p.selectedAgents.forEach(function(e){v(e)}),p.selectedAgents=[]})},p.deselectAgents=function(){p.selectedAgents=[]},p.selectAllAgents=function(){p.selectedAgents=p.agents.rows};var h=!0,f=1;e.$watch("vm.query.filter",function(e,n){h?i(function(){h=!1}):(n||(f=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=f),p.getAgents())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","agents","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.staff").controller("AgentsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_AGENT",g.agent=angular.copy(l),g.agents=r,g.newAgent=!1,g.agent||(g.agent={role:"agent",showWebBar:"0",autointernal:!0,wssPort:8089,type:"friend",context:"from-sip",phoneBarRemoteControl:!0,phoneBarRemoteControlPort:9888,allowmessenger:!0,downloadAttachments:!0,downloadOmnichannelInteractions:!0,downloadVoiceRecordings:!0},g.title="STAFF.NEW_AGENT",g.newAgent=!0),g.addNewAgent=function(){g.errors=[],d.user.save(g.agent).$promise.then(function(e){g.agents.unshift(e.toJSON()),o.success({title:"Agent properly created",msg:g.agent.name?g.agent.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveAgent=function(){g.errors=[],d.user.update({id:g.agent.id},g.agent).$promise.then(function(e){var n=_.find(g.agents,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Agent properly saved!",msg:g.agent.name?g.agent.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteAgent=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The agent will be deleted.").ariaLabel("Delete Agent").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.user.delete({id:g.agent.id}).$promise.then(function(){_.remove(g.agents,{id:g.agent.id}),o.success({title:"Agent properly deleted!",msg:(g.agent.name||"agent")+" has been deleted!"}),v(g.agent)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","agents","agent","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditAgentDialogController",e)}(),function(){"use strict";function e(e,a){var i=this;i.agent={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.agent.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.agent.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.agent=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="api/users/"+i.agent.id+"/avatar",i.agent.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.staff").controller("Agentchange_avatarController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.agent=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.agent.id,newPassword:r.password};r.currentUser.id==r.agent.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"Agent password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.agent.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.agent.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.agentForm.password.$setValidity("oldPasswordMatch",!1):t.agentForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","agent","setting","Auth"],angular.module("app.staff").controller("AgentchangepasswordController",e)}(),function(){"use strict";function e(e,n,i,t,s){var o=this;o.agent={},o.navigation=t.getNavigation(),o.crudPermissions,o.init=function(e,n){o.agent=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1}},o.onChange=function(n,t){if((t||n).enabled){if(t)t.enabled=!0,o.agent.permissions.push(t.id);else for(var e=0;e<n.children.length;e++)n.children[e].enabled=!0,o.agent.permissions.push(n.children[e].id);n.enabled=!0,o.agent.permissions.push(n.id)}else if(t)t.enabled=!1,_.remove(o.agent.permissions,function(e){return t.id===e}),_.filter(n.children,{enabled:!1}).length===n.children.length&&(n.enabled=!1,_.remove(o.agent.permissions,function(e){return n.id===e}));else{n.enabled=!1,_.remove(o.agent.permissions,function(e){return n.id===e});for(var a=0;a<n.children.length;a++)n.children[a].enabled=!1,_.remove(o.agent.permissions,function(e){return n.children[a].id===e})}return i.user.update({id:o.agent.id,permissions:_.uniq(o.agent.permissions)}).$promise.then(function(){s.success({title:"agent updated!",msg:o.agent.name?o.agent.name+" has been updated!":""})}).catch(function(e){console.error(e)})}}e.$inject=["$document","$mdDialog","api","msNavigationAgentService","toasty"],angular.module("app.staff").controller("AgentPermissionsController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d[c.apiName].get({fields:"id,name,strategy,type",channel:c.channel,type:"voice"===c.channel?c.direction:void 0,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.user.getQueues({id:c.agent.id,fields:"id,name,strategy,type,penalty",nolimit:!0,type:"voice"===c.channel?c.direction:void 0,channel:c.channel}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return"voice"===c.channel&&(n.penalty=void 0!==n&&void 0!==e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"penalty 0"),n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.agent=n,c.crudPermissions=r,c.penalty=0,c.channel=t,c.direction=i,c.apiName=c.channel+"Queue",c.title=s.instant("STAFF.ADD_AGENT_TO_"+("outbound"===c.direction?"QUEUE_CAMPAIGNS":c.channel.toUpperCase()+"_QUEUES")),c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"type",line3:"voice"===c.channel?"penalty":"",labelAll:s.instant("STAFF.ALL_"+("outbound"===c.direction?"QUEUE_CAMPAIGNS":c.channel.toUpperCase()+"_QUEUES")),labelSelected:s.instant("STAFF.SELECTED_"+("outbound"===c.direction?"QUEUE_CAMPAIGNS":c.channel.toUpperCase()+"_QUEUES")),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}},c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){var e;switch(c.channel){case"voice":switch(c.direction){case"inbound":e="VoiceQueues";break;case"outbound":e="QueueCampaigns"}break;case"chat":e="ChatQueues";break;case"mail":e="MailQueues";break;case"sms":e="SmsQueues";break;case"openchannel":e="OpenchannelQueues";break;case"fax":e="FaxQueues"}d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:e}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveQueues=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.user.removeQueues({id:c.agent.id,ids:_.map(t,"id"),channel:c.channel}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else if("voice"===c.channel){for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.user.addQueues({id:c.agent.id,ids:_.map(o,"id"),channel:c.channel,penalty:_.trim(s,"penalty ")}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}else d.user.addQueues({id:c.agent.id,ids:_.map(r,"id"),channel:c.channel}).$promise.then(function(){e()}).catch(function(e){n(e)})});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Queues association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:QUEUES_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","agent","channel","direction","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("AgentQueueAddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.user.getTeams({id:l.agent.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.agent=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("STAFF.ALL_TEAMS"),labelSelected:t.instant("STAFF.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.user.removeTeams({id:l.agent.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.user.addTeams({id:l.agent.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","agent","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("AgentteamaddController",e)}(),function(){"use strict";function e(e,n,i,s,t,a,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=a,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.agent=c||e.params.agent||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.queueaddchannel=function(e,n,t,a){i.show({controller:"AgentQueueAddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{agent:e,agents:u.agents?u.agents.rows:[],channel:n,direction:a||"inbound",crudPermissions:u.crudPermissions}})},u.teamadddialog=function(e,n){i.show({controller:"AgentteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:u.agents?u.agents.rows:[],crudPermissions:u.crudPermissions}})},u.changepassworddialog=function(e,n){i.show({controller:"AgentchangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/changepassword/changepassword.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,setting:o,agents:u.agents?u.agents.rows:[],crudPermissions:u.crudPermissions}})},u.onEnableScreenRecordingByAgentSelection=function(){["phoneBarEnableAutomaticScreenRecording"].forEach(function(e){u.agent.phoneBarEnableScreenRecordingByAgent&&(u.agent[e]=!u.agent.phoneBarEnableScreenRecordingByAgent)})},u.onEnableAutomaticScreenRecordingSelection=function(){["phoneBarEnableScreenRecordingByAgent"].forEach(function(e){u.agent.phoneBarEnableAutomaticScreenRecording&&(u.agent[e]=!u.agent.phoneBarEnableAutomaticScreenRecording)})},u.alert=l.info,u.gotoAgents=function(){e.go("app.staff.agents",{},{reload:"app.staff.agents"})},u.saveAgent=function(){u.agent=_.omit(u.agent,"userpic"),r.user.update({id:u.agent.id},u.agent).$promise.then(function(){l.success({title:"Agent updated!",msg:u.agent.name?u.agent.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.agent&&(t=_.find(u.contexts,{name:u.agent.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","agent","userProfileSection"],angular.module("app.staff").controller("AgentController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_TEAM",g.team=angular.copy(l),g.teams=r,g.newTeam=!1,g.team||(g.team={},g.title="STAFF.NEW_TEAM",g.newTeam=!0),g.addNewTeam=function(){g.errors=[],d.team.save(g.team).$promise.then(function(e){g.teams.unshift(e.toJSON()),o.success({title:"Team properly created",msg:g.team.name?g.team.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTeam=function(){g.errors=[],d.team.update({id:g.team.id},g.team).$promise.then(function(e){var n=_.find(g.teams,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Team properly saved!",msg:g.team.name?g.team.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTeam=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The team will be deleted.").ariaLabel("Delete Team").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.team.delete({id:g.team.id}).$promise.then(function(){_.remove(g.teams,{id:g.team.id}),o.success({title:"Team properly deleted!",msg:(g.team.name||"team")+" has been deleted!"}),v(g.team)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","teams","team","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditTeamDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.team.getAgents({id:c.team.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserTeam?"penalty "+e.UserTeam.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.team=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.team.removeAgents({id:c.team.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.team.addAgents({id:c.team.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("STAFF.ALL_AGENTS"),labelSelected:r.instant("STAFF.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","team","teams","realtime","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("TeamagentaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.teams=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="teams",f.listOrder="",f.listOrderAsc=null,f.selectedTeams=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTeamDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{team:e,teams:f.teams.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"TeamagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{team:e,teams:f.teams?f.teams.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("team")+"?").htmlContent("<b>"+(e.name||"team")+"</b> will be deleted.").ariaLabel("delete team").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTeams=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.team.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Teams",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTeam=function(e,n){i.show({controller:"CreateOrEditTeamDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{team:n,teams:f.teams.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTeam=y,f.exportSelectedTeams=function(){var e=angular.copy(f.selectedTeams);return f.selectedTeams=[],e},f.deleteSelectedTeams=function(e){var n=i.confirm().title("Are you sure want to delete the selected teams?").htmlContent("<b>"+f.selectedTeams.length+" selected</b> will be deleted.").ariaLabel("delete Teams").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTeams.forEach(function(e){y(e)}),f.selectedTeams=[]})},f.deselectTeams=function(){f.selectedTeams=[]},f.selectAllTeams=function(){f.selectedTeams=f.teams.rows};var b=!0,A=1;function E(e){f.teams=e||{count:0,rows:[]}}function y(e){m.team.delete({id:e.id}).$promise.then(function(){_.remove(f.teams.rows,{id:e.id}),f.teams.count-=1,f.teams.rows.length||f.getTeams(),p.success({title:_.startCase("Team")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEteam"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEteam",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTeams())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","teams","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("TeamsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_TELEPHONE",g.telephone=angular.copy(l),g.telephones=r,g.newTelephone=!1,g.telephone||(g.telephone={role:"telephone",autointernal:!0,context:"from-sip"},g.title="STAFF.NEW_TELEPHONE",g.newTelephone=!0),g.addNewTelephone=function(){g.errors=[],d.user.save(g.telephone).$promise.then(function(e){g.telephones.unshift(e.toJSON()),o.success({title:"Telephone properly created",msg:g.telephone.name?g.telephone.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTelephone=function(){g.errors=[],d.user.update({id:g.telephone.id},g.telephone).$promise.then(function(e){var n=_.find(g.telephones,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Telephone properly saved!",msg:g.telephone.name?g.telephone.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTelephone=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The telephone will be deleted.").ariaLabel("Delete Telephone").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.user.delete({id:g.telephone.id}).$promise.then(function(){_.remove(g.telephones,{id:g.telephone.id}),o.success({title:"Telephone properly deleted!",msg:(g.telephone.name||"telephone")+" has been deleted!"}),v(g.telephone)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","telephones","telephone","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditTelephoneDialogController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.telephone=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.telephone.id,newPassword:r.password};r.currentUser.id==r.telephone.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"Telephone password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.telephone.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.telephone.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.telephoneForm.password.$setValidity("oldPasswordMatch",!1):t.telephoneForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","telephone","setting","Auth"],angular.module("app.staff").controller("TelephonechangepasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.telephone=c||e.params.telephone||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.changepassworddialog=function(e,n){t.show({controller:"TelephonechangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/telephones/edit/changepassword/changepassword.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{telephone:e,setting:o,telephones:u.telephones?u.telephones.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoTelephones=function(){e.go("app.staff.telephones",{},{reload:"app.staff.telephones"})},u.saveTelephone=function(){r.user.update({id:u.telephone.id},u.telephone).$promise.then(function(){l.success({title:"Telephone updated!",msg:u.telephone.name?u.telephone.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.telephone&&(t=_.find(u.contexts,{name:u.telephone.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","telephone","userProfileSection"],angular.module("app.staff").controller("TelephoneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.telephones=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="telephones",f.listOrder="",f.listOrderAsc=null,f.selectedTelephones=[],f.query={fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,page:1},f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayencryption=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.staff.telephones.edit",{id:e.id,telephone:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("telephone")+"?").htmlContent("<b>"+(e.name||"telephone")+"</b> will be deleted.").ariaLabel("delete telephone").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTelephones=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.user.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Telephones",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTelephone=function(e,n){i.show({controller:"CreateOrEditTelephoneDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/telephones/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{telephone:n,telephones:f.telephones.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTelephone=y,f.exportSelectedTelephones=function(){var e=angular.copy(f.selectedTelephones);return f.selectedTelephones=[],e},f.deleteSelectedTelephones=function(e){var n=i.confirm().title("Are you sure want to delete the selected telephones?").htmlContent("<b>"+f.selectedTelephones.length+" selected</b> will be deleted.").ariaLabel("delete Telephones").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTelephones.forEach(function(e){y(e)}),f.selectedTelephones=[]})},f.deselectTelephones=function(){f.selectedTelephones=[]},f.selectAllTelephones=function(){f.selectedTelephones=f.telephones.rows};var b=!0,A=1;function E(e){f.telephones=e||{count:0,rows:[]}}function y(e){m.user.delete({id:e.id}).$promise.then(function(){_.remove(f.telephones.rows,{id:e.id}),f.telephones.count-=1,f.telephones.rows.length||f.getTelephones(),p.success({title:_.startCase("Telephone")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTelephones())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","telephones","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("TelephonesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_USERPROFILE",g.userProfile=angular.copy(l),g.userProfiles=r,g.newUserProfile=!1,g.userProfile||(g.userProfile={crudPermissions:["r"],downloadAttachments:!0,downloadCallySquareRecordings:!0,downloadContactManagerLists:!0,downloadJscriptySessions:!0,downloadOmnichannelInteractions:!0,downloadScreenRecordings:!0,downloadVoiceRecordings:!0},g.title="STAFF.NEW_USERPROFILE",g.newUserProfile=!0),g.addNewUserProfile=function(){g.errors=[],d.userProfile.save(g.userProfile).$promise.then(function(e){var n,t;t=[],(n=e).crudPermissions.forEach(function(e){var n;switch(e){case"r":n="READ_PERMISSION";break;case"e":n="EDIT_PERMISSION";break;case"d":n="DELETE_PERMISSION"}t.push(s.instant("STAFF."+n))}),n.selectedcrudPermissions=t.join(", "),g.userProfiles.unshift(e.toJSON()),o.success({title:"UserProfile properly created",msg:g.userProfile.name?g.userProfile.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveUserProfile=function(){g.errors=[],d.userProfile.update({id:g.userProfile.id},g.userProfile).$promise.then(function(e){var n=_.find(g.userProfiles,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"UserProfile properly saved!",msg:g.userProfile.name?g.userProfile.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteUserProfile=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The userProfile will be deleted.").ariaLabel("Delete UserProfile").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.userProfile.delete({id:g.userProfile.id}).$promise.then(function(){_.remove(g.userProfiles,{id:g.userProfile.id}),o.success({title:"UserProfile properly deleted!",msg:(g.userProfile.name||"userProfile")+" has been deleted!"}),v(g.userProfile)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","userProfiles","userProfile","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditUserProfileDialogController",e)}(),function(){"use strict";function e(n,a,i,e,t,s,o){var r=this;function l(e){n.hide(e)}r.newUserProfile=!0,r.userProfile=angular.copy(t),r.userProfiles=s,r.title=o.instant("STAFF.CLONE_USERPROFILE"),t&&t.name&&(r.title+=": "+t.name),r.cloneUserProfile=function(){return e.userProfile.clone({id:t.id},r.userProfile).$promise.then(function(e){var n,t;t=[],(n=e).crudPermissions.forEach(function(e){var n;switch(e){case"r":n="READ_PERMISSION";break;case"e":n="EDIT_PERMISSION";break;case"d":n="DELETE_PERMISSION"}t.push(o.instant("STAFF."+n))}),n.selectedcrudPermissions=t.join(", "),r.userProfiles.unshift(e.toJSON()),i.success({title:"UserProfile properly cloned",msg:r.userProfile.name?r.userProfile.name+" has been cloned!":""}),a.go("app.staff.userProfiles.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.clone"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","userProfile","userProfiles","$translate"],angular.module("app.staff").controller("UserProfilecloneController",e)}(),function(){"use strict";function e(t,o,r,l,d,e,n,c){var m=this;function u(e,n){switch(e.allResourcesEnabled="full"===n,n){case"full":return _.find(m.statusList,["tag","full"]);case"partial":return _.find(m.statusList,["tag","partial"]);case"disabled":return _.find(m.statusList,["tag","disabled"]);case"unlicensed":return _.find(m.statusList,["tag","unlicensed"]);case"unknown":default:return _.find(m.statusList,["tag","unknown"])}}function p(e){return l(function(n,t){var o,a;void 0!==e.channel&&_.includes(e.route,"Queue")?(a=e,l(function(n,t){var e=void 0!==a.channel&&"bull"===a.channel?"outbound":"inbound";return d[a.route].get({fields:"id,name,strategy,type",channel:"bull"===a.channel?"voice":a.channel,type:e,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})).then(function(e){n(e)}).catch(function(e){t(e)}):(o=e,l(function(a,n){switch(o.route){case"voiceExtension":var e;switch(o.title){case"InboundRoutes":e="inbound";break;case"OutboundRoutes":e="outbound";break;case"InternalRoutes":e="internal"}break;case"interval":var t=!0;break;case"disposition":var i=!0;break;case"user":var s;switch(o.title){case"Agents":s="agent";break;case"Telephones":s="telephone";break;case"Users":s="user"}}if("Reports"===o.title){if(!o.reportType)return d.analyticDefaultReport.get({nolimit:!0}).$promise.then(function(t){d.analyticCustomReport.get({nolimit:!0}).$promise.then(function(e){var n=_.union(t.rows,e.rows);a({count:n.length,rows:n.rows})})}).catch(function(e){n(e)});switch(o.reportType){case"default":o.route="analyticDefaultReport";break;case"custom":o.route="analyticCustomReport"}}return d[o.route].get({role:s||void 0,type:e||void 0,VoiceExtensionId:e?"null":void 0,IntervalId:t?"null":void 0,MailAccountId:i?"null":void 0,FaxAccountId:i?"null":void 0,SmsAccountId:i?"null":void 0,OpenchannelAccountId:i?"null":void 0,ChatWebsiteId:i?"null":void 0,WhatsappAccountId:i?"null":void 0,ListId:i?"null":void 0,nolimit:!0}).$promise.then(function(e){a(e)}).catch(function(e){n(e)})})).then(function(e){n(e)}).catch(function(e){t(e)})})}function g(e,n,t){var a=e&&0<e.length?e[0]:null;if(!a)return t;var i,s,o=_.find(n,["sectionId",a.id]);return o?(n=_.remove(n,["sectionId",a.id]),(i=a,s=o.id,l(function(n,t){d.userProfileResource.get({sectionId:s}).$promise.then(function(n){return p(i).then(function(e){return _.differenceBy(n.rows,e.rows,"id")})}).then(function(e){_.isEmpty(e)?n():t()}).catch(function(e){t(e)})})).then(function(){return t="full",g(e.shift(),n,t)}).catch(function(e){return l.reject(e)})):void 0}function a(a){var t="Marketplace"===a.title?"AppZone":a.title;m.license?void 0===a.permissions||a.permissions.association?void 0===a.license||m.license[a.license]?d.userProfileSection.get({userProfileId:m.userProfile.id,category:t}).$promise.then(function(e){var n=e&&e.rows&&0<e.rows.length?e.rows:[];if("Dashboards"===a.title)return _.isEmpty(n)?"disabled":n[0].autoAssociation?"full":d.userProfileResource.get({sectionId:n[0].id,resourceId:101}).$promise.then(function(e){return(e&&e.rows?e.rows[0]:null)?"full":"partial"});var t=_.filter(a.children,function(e){return void 0!==e.permissions&&e.permissions.hidden?void 0:e});return n.length!==t.length?0===n.length?"disabled":"partial":_.every(n,["autoAssociation",!0])?"full":g(_.filter(t,function(e){return void 0===e.permissions||e.permissions.association?e:void 0}),n,"partial")}).then(function(e){a.status=u(a,e)}).catch(function(e){var n=e?"unknown":"partial";a.status=u(a,n),e&&c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GETRESOURCES("+t.toUpperCase()+")",msg:e.status?JSON.stringify(e.data):e.toString()})}):a.status=u(a,"unlicensed"):d.userProfileSection.get({userProfileId:m.userProfile.id,sectionId:a.id}).$promise.then(function(e){var n=(e&&1===e.rows.length?e.rows[0]:null)?"full":"disabled";a.status=u(a,n)}):a.status=u(a,"unknown")}m.userProfile={},m.license={},m.navigation=e.getNavigation(),m.modules=m.navigation[0].children,m.statusList=[{id:0,name:"Fully Enabled",color:"green-A700-bg",info:"All resources enabled",tag:"full"},{id:1,name:"Partially Enabled",color:"orange-A700-bg",info:"Some resources enabled",tag:"partial"},{id:2,name:"Disabled",color:"grey-A400-bg",info:"No resources enabled",tag:"disabled"},{id:3,name:"Unlicensed",color:"red-A700-bg",info:"Module not included in the license",tag:"unlicensed"},{id:4,name:"Unknown",color:"grey-A700-bg",info:"Unknown status",tag:"unknown"}],m.dashboardSections=[{title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",id:100}],m.init=function(e,n){m.userProfile=e,m.license=n},m.onChangeEnableAllResources=function(n){var e=void 0!==n.permissions&&!n.permissions.association,a="Marketplace"===n.title?"AppZone":n.title;if("Fully Enabled"!==n.status.name){var i=[];if(e)return i.push({category:a,sectionId:n.id,name:a,enabled:!0,crudPermissions:"red"}),d.userProfile.addSections({id:m.userProfile.id},i).$promise.then(function(){n.status=u(n,"full"),c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE_NO_RESOURCES",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})});var t=o.confirm({skipHide:!0}).title("Warning").textContent(r.instant("STAFF.PERMISSIONS_WARNING_ENABLE_ALL",{sectionName:r.instant(n.translate)})).ariaLabel("Warning").ok(r.instant("STAFF.CONFIRM")).cancel(r.instant("STAFF.CANCEL"));o.show(t).then(function(){switch(a){case"Dashboards":_.map(m.dashboardSections,function(e){i.push({category:a,sectionId:e.id,name:e.title,enabled:!0,autoAssociation:!0,crudPermissions:_.map(m.userProfile.crudPermissions).join("")})});break;default:_.map(n.children,function(e){var n=!(void 0===e.permissions||!e.permissions.hidden);if(!n){var t=e.title;switch(a){case"CallySquare":t="Projects"===t?"SquareProjects":t}i.push({category:a,sectionId:e.id,name:t,enabled:!0,autoAssociation:!0,crudPermissions:_.map(m.userProfile.crudPermissions).join("")})}})}return d.userProfile.addSections({id:m.userProfile.id},i).$promise.then(function(){n.status=u(n,"full"),c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})})}).catch(function(e){e?c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()}):n.status=u(n,n.status.tag)})}else if("Fully Enabled"===n.status.name){n.status=u(n,"disabled");var s=[];switch(a){case"Settings":case"Help":s=[n.id];break;case"Dashboards":s=_.map(m.dashboardSections,function(e){return e.id});break;default:s=_.map(n.children,function(e){return e.id})}return d.userProfile.removeSections({id:m.userProfile.id,ids:s}).$promise.then(function(){c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_DISABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_DISABLED_ALL_SUCCESS_MESSAGE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.REMOVESECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})})}},m.manageResources=function(e,n){o.show({controller:"UserProfilepermissionsmanageController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!1,locals:{userProfile:m.userProfile,userProfiles:[],section:e}}).then(function(){a(e)})},m.checkSectionResources=a}e.$inject=["$document","$mdDialog","$translate","$q","api","msNavigationService","Auth","toasty"],angular.module("app.staff").controller("UserProfilePermissionsController",e)}(),function(){"use strict";function e(n,t,i,o,r,e,a,l,s,d){var c=this;function m(){var a=void 0!==c.selectedSection.pending&&c.selectedSection.pending;return i(function(t,n){r.userProfileSection.get({userProfileId:c.userProfile.id,sectionId:c.selectedSection.id}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;a||(c.selectedSection.enabled=!!n&&!!n.enabled,c.selectedSection.autoAssociation=!!n&&!!n.autoAssociation,c.selectedSection.crudPermissions=v(n?n.crudPermissions:c.userProfile.crudPermissions)),t(n)}).catch(function(e){n(e)})})}function u(){return i(function(n,t){c.loadedSection?r.userProfileResource.get({sectionId:c.loadedSection.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)}):n(null)})}function p(){return i(function(n,t){void 0!==c.selectedSection.channel&&_.includes(c.selectedSection.route,"Queue")?i(function(n,t){var e=void 0!==c.selectedSection.channel&&"bull"===c.selectedSection.channel?"outbound":"inbound";return r[c.selectedSection.route].get({fields:"id,name,strategy,type",channel:"bull"===c.selectedSection.channel?"voice":c.selectedSection.channel,type:e,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){n(e)}).catch(function(e){t(e)}):i(function(n,t){var e,a;if("voiceExtension"===c.selectedSection.route)switch(c.selectedSection.title){case"InboundRoutes":e="inbound";break;case"OutboundRoutes":e="outbound";break;case"InternalRoutes":e="internal"}if("user"===c.selectedSection.route)switch(c.selectedSection.title){case"Agents":a="agent";break;case"Telephones":a="telephone";break;case"Users":a="user"}if("interval"===c.selectedSection.route)var i=!0;if("disposition"===c.selectedSection.route)var s=!0;if("Reports"===c.selectedSection.title&&(c.selectedSection.route="default"===c.selectedSection.reportType?"analyticDefaultReport":"analyticCustomReport"),"Dashboards"!==c.selectedSection.title)return r[c.selectedSection.route].get({role:a||void 0,type:e||void 0,VoiceExtensionId:e?"null":void 0,IntervalId:i?"null":void 0,MailAccountId:s?"null":void 0,FaxAccountId:s?"null":void 0,SmsAccountId:s?"null":void 0,OpenchannelAccountId:s?"null":void 0,ChatWebsiteId:s?"null":void 0,WhatsappAccountId:s?"null":void 0,ListId:s?"null":void 0,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)});n({count:1,rows:[{id:101,name:l.instant("DASHBOARDS.GENERAL")}]})}).then(function(e){n(e)}).catch(function(e){t(e)})})}function g(){var i=void 0!==c.selectedSection.pending&&c.selectedSection.pending,s=[];return u().then(function(e){var n;return s=e&&e.rows?e.rows:[],"Reports"===c.selectedSection.title&&(c.associatedReports=c.associatedReports?c.associatedReports:s,n=c.associatedReports,s=_.filter(n,{type:"default"===c.selectedSection.reportType?"DefaultReports":"CustomReports"})),void 0===c.selectedSection.permissions||c.selectedSection.permissions.association?p():{rows:[]}}).then(function(e){c.items=e.rows?_.map(e.rows,function(e){var n,t;return"Reports"===c.selectedSection.title&&(e.fullPath=(n=e.parent,t=c.treeStructure[0].text,t=function e(n,t,a){if(!a||_.isEmpty(a.children))return n;var a=_.find(a.children,function(e){return _.includes(t,e.id)?e:void 0});return n+=a?"/"+a.text:"",e(n,t,a)}(t,n,c.treeStructure[0])).replace(" ","_")),e.isValid=!0,e}):[],i||(c.selectedSection.selectedItems=_.map(s,function(e){return _.find(c.items,{id:e.resourceId})}));var n,t=_.differenceBy(c.selectedSection.selectedItems,c.items,"id");switch(_.isEmpty(t)||(c.selectedSection.selectedItems=_.pullAllBy(c.selectedSection.selectedItems,t,"id")),c.selectedSection.title){case"Contexts":c.selectedSection.selectedItems=_.filter(c.items,function(e){return e.defaultEntry?(e.isValid=!1,e):void 0!==_.find(s,{resourceId:e.id})?(e.isValid=!0,e):void 0});break;case"MusicOnHolds":c.selectedSection.selectedItems=_.filter(c.items,function(e){return e.defaultEntry?(e.isValid=!1,e):void 0!==_.find(s,{resourceId:e.id})?(e.isValid=!0,e):void 0});break;case"Reports":var a=(n=c.allReportsSelected,_.filter(n,function(e){return _.startsWith(e.parent,"default"===c.selectedSection.reportType?"motion":"custom")}));c.selectedSection.selectedItems=b(c.selectedSection.selectedItems),c.selectedSection.selectedItems=_.unionBy(c.selectedSection.selectedItems,a,"id")}c.dualMultiselectOptions.selectedItems=c.selectedSection.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.items,c.dualMultiselectOptions.selectedItems,"id")}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET"+c.selectedSection.title.toUpperCase(),msg:e.status?JSON.stringify(e.data):e.toString()})})}function v(e){return e&&(c.selectedSection.allowEdit=!!_.includes(e,"e"),c.selectedSection.allowDelete=!!_.includes(e,"d")),function(){var e=["r"];if(c.selectedSection.allowEdit)e.push("e");else{var n=_.indexOf(e,["e"]);0<n&&c.selectedSection.crudPermissions.replace("e","")}if(c.selectedSection.allowDelete)e.push("d");else{var n=_.indexOf(e,["d"]);0<n&&c.selectedSection.crudPermissions.replace("d","")}return e}()}function h(e){var n=_.findIndex(c.subsections,function(e){return e.id==c.selectedSection.id});c.subsections[n].pending=e,f()}function f(){return c.pendingChanges=_.some(c.subsections,["pending",!0])}function b(e){return _.remove(e,function(e){return _.startsWith(e.parent,"default"===c.selectedSection.reportType?"motion":"custom")})}function A(){_.isEmpty(c.selectedSection.selectedItems)?c.allReportsSelected=_.remove(c.allReportsSelected,function(e){return e.type===("default"===c.selectedSection.reportType?"CustomReports":"DefaultReports")}):c.selectedSection.selectedItems.forEach(function(e){_.some(c.allReportsSelected,{id:e.id,parent:e.parent})||c.allReportsSelected.push(e)})}c.userProfile=e,c.penalty=0,c.section=angular.copy(d),c.title=l.instant("STAFF.PERMISSIONS_SECTION_TITLE",{sectionName:l.instant(c.section.translate)}),c.items=[],c.selectedItems=[],c.subsections=_.filter(c.section.children,function(e){return void 0!==e.permissions&&e.permissions.hidden?void 0:e}),c.dashboardSections=[{title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",id:100}],c.dashboardItems=[],"Dashboards"===c.section.title&&(c.dashboardItems=c.subsections,c.subsections=c.dashboardSections),c.selectedSection=null,c.loadedSection=null,c.allReportsSelected=[],c.closeDialog=function(e){if(c.pendingChanges){var n=t.confirm({skipHide:!0}).title("Warning").textContent(l.instant("STAFF.PERMISSIONS_WARNING_CLOSE")).ariaLabel("Warning").targetEvent(e).ok(l.instant("STAFF.CLOSE")).cancel(l.instant("STAFF.CANCEL"));t.show(n).then(function(){t.hide()})}else t.hide()},c.onChangeSection=function(){return m().then(function(e){if(c.loadedSection=e,"Reports"===c.selectedSection.title)return i(function(n,t){r.analyticTreeReport.get({}).$promise.then(function(e){c.treeReports=e.rows||[],n(c.treeReports)}).catch(function(e){t(e)})}).then(function(){if(!c.selectedSection.reportType)return u().then(function(e){c.allReportsSelected=e?_.map(e.rows,function(e){return{id:e.resourceId,name:e.name,type:e.type}}):[]})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREE_REPORT_STRUCTURE",msg:e.data?JSON.stringify(e.data):e.toString()})});g()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET"+c.selectedSection.title.toUpperCase(),msg:e.status?JSON.stringify(e.data):e.toString()})})},c.onChangeVisibility=function(){c.selectedSection.enabled=!c.selectedSection.enabled,h(!0)},c.onChangeAutoAssociation=function(){if(!c.selectedSection.autoAssociation){for(var e=[],n=0;n<c.dualMultiselectOptions.items.length;n++)e.push(c.dualMultiselectOptions.items[n]),c.dualMultiselectOptions.selectedItems.push(c.dualMultiselectOptions.items[n]);c.dualMultiselectOptions.items=[],c.dualMultiselectOptions.transferCallback(e,!1)}h(!0)},c.onChangeReportType=function(){c.treeStructure="default"===c.selectedSection.reportType?c.treeReports[0]?angular.fromJson(c.treeReports[0].tree):[]:c.treeReports[1]?angular.fromJson(c.treeReports[1].tree):[],c.selectedSection.selectedItems&&(c.allReportsSelected=b(c.allReportsSelected),A());g()},c.setPermission=function(e){"edit"===e?c.selectedSection.allowEdit=!c.selectedSection.allowEdit:"delete"===e&&(c.selectedSection.allowDelete=!c.selectedSection.allowDelete);c.selectedSection.crudPermissions=v(),h(!0)},c.saveSection=function(){var a="Marketplace"===c.section.title?"AppZone":c.section.title,e=_(c.subsections).filter({pending:!0}).map(function(e){var n="CallySquare"===a&&"Projects"===e.title?"SquareProjects":e.title,t="Reports"===n?c.allReportsSelected:e.selectedItems;return"Integrations"===a&&(e.autoAssociation=!0),{category:a,sectionId:e.id,name:n,enabled:e.enabled,autoAssociation:e.autoAssociation,crudPermissions:_.map(e.crudPermissions).join(""),Resources:_.map(t,function(e){return{name:e.name,resourceId:e.id,type:function(e,n){if("Reports"!==e)return e;{if(n.parent){var t=_.startsWith(n.parent,"motion")?"Default":"Custom";return t+e}return n.type}}(n,e)}})}}).value();return r.userProfile.addSections({id:c.userProfile.id},e).$promise.then(function(){c.subsections.forEach(function(e){e.pending=void 0}),c.associatedReports=null,f(),"Reports"!==c.selectedSection.title||c.selectedSection.reportType||n.userProfileForm.$setPristine(),o.success({title:l.instant("STAFF.NOTIFICATIONS.PERMISSIONS_SAVED_SUCCESS_TITLE",{sectionName:l.instant(a.translate)}),msg:l.instant("STAFF.NOTIFICATIONS.PERMISSIONS_SAVED_SUCCESS_MESSAGE")})}).then(function(){return m().then(function(e){c.loadedSection=e})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",line4:"fullPath",labelAll:l.instant("STAFF.PERMISSIONS_ALL_RESOURCES"),labelSelected:l.instant("STAFF.PERMISSIONS_SELECTED_RESOURCES"),transferCallback:function(e,n){h(!0),n?(c.selectedSection.selectedItems=_.pullAllBy(c.selectedSection.selectedItems,e,"id"),c.selectedSection.autoAssociation=!1):c.selectedSection.selectedItems=_.unionBy(c.selectedSection.selectedItems,e,"id"),"Reports"===c.selectedSection.title&&A()}}}e.$inject=["$scope","$mdDialog","$q","toasty","api","userProfile","userProfiles","$translate","Auth","section"],angular.module("app.staff").controller("UserProfilepermissionsmanageController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.userProfile=c||e.params.userProfile||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.permissionsmanagedialog=function(e,n){t.show({controller:"UserProfilepermissionsmanageController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:u.userProfiles?u.userProfiles.rows:[],crudPermissions:u.crudPermissions}})},u.clonedialog=function(e,n){t.show({controller:"UserProfilecloneController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/clone/clone.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:u.userProfiles?u.userProfiles.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoUserProfiles=function(){e.go("app.staff.userProfiles",{},{reload:"app.staff.userProfiles"})},u.saveUserProfile=function(){r.userProfile.update({id:u.userProfile.id},u.userProfile).$promise.then(function(){l.success({title:"UserProfile updated!",msg:u.userProfile.name?u.userProfile.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuserProfile",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","userProfile","userProfileSection"],angular.module("app.staff").controller("UserProfileController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.userProfiles=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="userProfiles",f.listOrder="",f.listOrderAsc=null,f.selectedUserProfiles=[],f.query={fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",sort:"-updatedAt",limit:10,page:1},f.arraycrudPermissions=_.keyBy([{option:"Read_permission",value:"'r'",disabled:!0},{option:"Edit_permission",value:"'e'"},{option:"Delete_permission",value:"'d'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.userProfiles&&0<f.userProfiles.count&&f.userProfiles.rows.forEach(function(e){var n=[];e.crudPermissions.forEach(function(e){n.push(f.arraycrudPermissions[e].option)});var t=[];n.forEach(function(e){t.push(r.instant("STAFF."+e.toUpperCase()))}),e.selectedcrudPermissions=t.join(", ")}),f.editstate=function(e,n){t.go("app.staff.userProfiles.edit",{id:e.id,userProfile:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"UserProfilecloneController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:f.userProfiles?f.userProfiles.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("userProfile")+"?").htmlContent("<b>"+(e.name||"userProfile")+"</b> will be deleted.").ariaLabel("delete userProfile").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getUserProfiles=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.userProfile.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="UserProfiles",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditUserProfile=function(e,n){i.show({controller:"CreateOrEditUserProfileDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{userProfile:n,userProfiles:f.userProfiles.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteUserProfile=y,f.exportSelectedUserProfiles=function(){var e=angular.copy(f.selectedUserProfiles);return f.selectedUserProfiles=[],e},f.deleteSelectedUserProfiles=function(e){var n=i.confirm().title("Are you sure want to delete the selected userProfiles?").htmlContent("<b>"+f.selectedUserProfiles.length+" selected</b> will be deleted.").ariaLabel("delete UserProfiles").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedUserProfiles.forEach(function(e){y(e)}),f.selectedUserProfiles=[]})},f.deselectUserProfiles=function(){f.selectedUserProfiles=[]},f.selectAllUserProfiles=function(){f.selectedUserProfiles=f.userProfiles.rows};var b=!0,A=1;function E(e){f.userProfiles=e||{count:0,rows:[]}}function y(e){m.userProfile.delete({id:e.id}).$promise.then(function(){_.remove(f.userProfiles.rows,{id:e.id}),f.userProfiles.count-=1,f.userProfiles.rows.length||f.getUserProfiles(),p.success({title:_.startCase("UserProfile")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuserProfile"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuserProfile",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getUserProfiles())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","userProfiles","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("UserProfilesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_USER",g.user=angular.copy(l),g.users=r,g.newUser=!1,g.user||(g.user={role:"user",autointernal:!0,context:"from-sip"},g.title="STAFF.NEW_USER",g.newUser=!0),g.addNewUser=function(){g.errors=[],d.user.save(g.user).$promise.then(function(e){g.users.unshift(e.toJSON()),o.success({title:"User properly created",msg:g.user.name?g.user.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveUser=function(){g.errors=[],d.user.update({id:g.user.id},g.user).$promise.then(function(e){var n=_.find(g.users,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"User properly saved!",msg:g.user.name?g.user.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteUser=function(e){if(c.getCurrentUser().id===g.user.id)return o.error({title:"User not deleted!",msg:"You can't remove yourself"});g.errors=[];var n=a.confirm().title("Are you sure?").content("The user will be deleted.").ariaLabel("Delete User").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.user.delete({id:g.user.id}).$promise.then(function(){_.remove(g.users,{id:g.user.id}),o.success({title:"User properly deleted!",msg:(g.user.name||"user")+" has been deleted!"}),v(g.user)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.userProfiles=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","users","user","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditUserDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;function o(){e.hide()}s.currentUser=i.getCurrentUser(),s.errors=[],s.user=a,s.generateApiKey=function(){s.errors=[],t.user.createApiKey({id:s.user.id}).$promise.then(function(e){s.user.apiKey=e.api_key||"N/A",n.success({title:"User API key updated!"}),o()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.createApiKey",msg:e.data?JSON.stringify(e.data.message):e.toString()}),s.errors=e.data.errors||[{message:e.toString(),type:"api.user.createApiKey"}]})},s.removeApiKey=function(){s.errors=[],t.user.removeApiKey({id:s.user.id}).$promise.then(function(){s.user.apiKey="N/A",n.success({title:"User API key removed!"}),o()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.removeApiKey",msg:e.data?JSON.stringify(e.data.message):e.toString()}),s.errors=e.data.errors||[{message:e.toString(),type:"api.user.removeApiKey"}]})},s.closeDialog=o}e.$inject=["$mdDialog","toasty","api","user","Auth"],angular.module("app.staff").controller("UserapikeymanagerController",e)}(),function(){"use strict";function e(e,a){var i=this;i.user={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.user.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.user.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.user=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="api/users/"+i.user.id+"/avatar",i.user.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.staff").controller("Userchange_avatarController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.user=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.user.id,newPassword:r.password};r.currentUser.id==r.user.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"User password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.user.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.userForm.password.$setValidity("oldPasswordMatch",!1):t.userForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","user","setting","Auth"],angular.module("app.staff").controller("UserchangepasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.user=c||e.params.user||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.apikeymanagerdialog=function(e,n){t.show({controller:"UserapikeymanagerController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/edit/apikeymanager/apikeymanager.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{user:e,users:u.users?u.users.rows:[],crudPermissions:u.crudPermissions}})},u.changepassworddialog=function(e,n){t.show({controller:"UserchangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/edit/changepassword/changepassword.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{user:e,setting:o,users:u.users?u.users.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoUsers=function(){e.go("app.staff.users",{},{reload:"app.staff.users"})},u.saveUser=function(){u.user=_.omit(u.user,"userpic"),r.user.update({id:u.user.id},u.user).$promise.then(function(){l.success({title:"User updated!",msg:u.user.name?u.user.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),r.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.userProfiles=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})}),r.user.getApiKey({id:u.user.id}).$promise.then(function(e){u.user.apiKey=e.api_key?e.api_key:"N/A"}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_APIKEY",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","user","userProfileSection"],angular.module("app.staff").controller("UserController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.users=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="users",f.listOrder="",f.listOrderAsc=null,f.selectedUsers=[],f.query={fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked",role:"admin,user",sort:"-updatedAt",limit:10,page:1},f.arrayrole=_.keyBy([{option:"Admin",value:"'admin'"},{option:"User",value:"'user'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.staff.users.edit",{id:e.id,user:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("user")+"?").htmlContent("<b>"+(e.name||"user")+"</b> will be deleted.").ariaLabel("delete user").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getUsers=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.user.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Users",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditUser=function(e,n){i.show({controller:"CreateOrEditUserDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{user:n,users:f.users.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteUser=y,f.exportSelectedUsers=function(){var e=angular.copy(f.selectedUsers);return f.selectedUsers=[],e},f.deleteSelectedUsers=function(e){var n=i.confirm().title("Are you sure want to delete the selected users?").htmlContent("<b>"+f.selectedUsers.length+" selected</b> will be deleted.").ariaLabel("delete Users").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedUsers.forEach(function(e){y(e)}),f.selectedUsers=[]})},f.deselectUsers=function(){f.selectedUsers=[]},f.selectAllUsers=function(){f.selectedUsers=f.users.rows},m.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.userProfiles=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.users=e||{count:0,rows:[]}}function y(e){m.user.delete({id:e.id}).$promise.then(function(){_.remove(f.users.rows,{id:e.id}),f.users.count-=1,f.users.rows.length||f.getUsers(),p.success({title:_.startCase("User")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getUsers())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","users","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("UsersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.cannedAnswers=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="cannedAnswers",f.listOrder="",f.listOrderAsc=null,f.selectedCannedAnswers=[],f.query={fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/cannedAnswers/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{cannedAnswer:e,cannedAnswers:f.cannedAnswers.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("cannedAnswer")+"?").htmlContent("<b>"+(e.name||"cannedAnswer")+"</b> will be deleted.").ariaLabel("delete cannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCannedAnswers=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cannedAnswer.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="CannedAnswers",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCannedAnswer=function(e,n){i.show({controller:"CreateOrEditCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/cannedAnswers/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{cannedAnswer:n,cannedAnswers:f.cannedAnswers.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCannedAnswer=y,f.exportSelectedCannedAnswers=function(){var e=angular.copy(f.selectedCannedAnswers);return f.selectedCannedAnswers=[],e},f.deleteSelectedCannedAnswers=function(e){var n=i.confirm().title("Are you sure want to delete the selected cannedAnswers?").htmlContent("<b>"+f.selectedCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete CannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCannedAnswers.forEach(function(e){y(e)}),f.selectedCannedAnswers=[]})},f.deselectCannedAnswers=function(){f.selectedCannedAnswers=[]},f.selectAllCannedAnswers=function(){f.selectedCannedAnswers=f.cannedAnswers.rows};var b=!0,A=1;function E(e){f.cannedAnswers=e||{count:0,rows:[]}}function y(e){m.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(f.cannedAnswers.rows,{id:e.id}),f.cannedAnswers.count-=1,f.cannedAnswers.rows.length||f.getCannedAnswers(),p.success({title:_.startCase("CannedAnswer")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcannedAnswer"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcannedAnswer",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCannedAnswers())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","cannedAnswers","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("CannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_CANNEDANSWER",g.cannedAnswer=angular.copy(l),g.cannedAnswers=r,g.newCannedAnswer=!1,g.cannedAnswer||(g.cannedAnswer={},g.title="TOOLS.NEW_CANNEDANSWER",g.newCannedAnswer=!0),g.addNewCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.cannedAnswer).$promise.then(function(e){g.cannedAnswers.unshift(e.toJSON()),o.success({title:"CannedAnswer properly created",msg:g.cannedAnswer.name?g.cannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.cannedAnswer.id},g.cannedAnswer).$promise.then(function(e){var n=_.find(g.cannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CannedAnswer properly saved!",msg:g.cannedAnswer.name?g.cannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The cannedAnswer will be deleted.").ariaLabel("Delete CannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.cannedAnswer.id}).$promise.then(function(){_.remove(g.cannedAnswers,{id:g.cannedAnswer.id}),o.success({title:"CannedAnswer properly deleted!",msg:(g.cannedAnswer.name||"cannedAnswer")+" has been deleted!"}),v(g.cannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","cannedAnswers","cannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_CUSTOMDASHBOARD",g.customDashboard=angular.copy(l),g.customDashboards=r,g.newCustomDashboard=!1,g.customDashboard||(g.customDashboard={},g.title="TOOLS.NEW_CUSTOMDASHBOARD",g.newCustomDashboard=!0),g.addNewCustomDashboard=function(){g.errors=[],d.dashboard.save(g.customDashboard).$promise.then(function(e){g.customDashboards.unshift(e.toJSON()),o.success({title:"CustomDashboard properly created",msg:g.customDashboard.name?g.customDashboard.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomDashboard=function(){g.errors=[],d.dashboard.update({id:g.customDashboard.id},g.customDashboard).$promise.then(function(e){var n=_.find(g.customDashboards,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CustomDashboard properly saved!",msg:g.customDashboard.name?g.customDashboard.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomDashboard=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The customDashboard will be deleted.").ariaLabel("Delete CustomDashboard").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.dashboard.delete({id:g.customDashboard.id}).$promise.then(function(){_.remove(g.customDashboards,{id:g.customDashboard.id}),o.success({title:"CustomDashboard properly deleted!",msg:(g.customDashboard.name||"customDashboard")+" has been deleted!"}),v(g.customDashboard)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customDashboards","customDashboard","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditCustomDashboardDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.customDashboards=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="customDashboards",f.listOrder="",f.listOrderAsc=null,f.selectedCustomDashboards=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.tools.customDashboards.edit",{id:e.id,customDashboard:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"CustomDashboardcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{customDashboard:e,customDashboards:f.customDashboards?f.customDashboards.rows:[],crudPermissions:f.crudPermissions}})},f.gotodashboardgoto=function(e,n){t.go("app.dashboards.custom",{id:e.id})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("customDashboard")+"?").htmlContent("<b>"+(e.name||"customDashboard")+"</b> will be deleted.").ariaLabel("delete customDashboard").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCustomDashboards=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.dashboard.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="CustomDashboards",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCustomDashboard=function(e,n){i.show({controller:"CreateOrEditCustomDashboardDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{customDashboard:n,customDashboards:f.customDashboards.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCustomDashboard=y,f.exportSelectedCustomDashboards=function(){var e=angular.copy(f.selectedCustomDashboards);return f.selectedCustomDashboards=[],e},f.deleteSelectedCustomDashboards=function(e){var n=i.confirm().title("Are you sure want to delete the selected customDashboards?").htmlContent("<b>"+f.selectedCustomDashboards.length+" selected</b> will be deleted.").ariaLabel("delete CustomDashboards").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCustomDashboards.forEach(function(e){y(e)}),f.selectedCustomDashboards=[]})},f.deselectCustomDashboards=function(){f.selectedCustomDashboards=[]},f.selectAllCustomDashboards=function(){f.selectedCustomDashboards=f.customDashboards.rows};var b=!0,A=1;function E(e){f.customDashboards=e||{count:0,rows:[]}}function y(e){m.dashboard.delete({id:e.id}).$promise.then(function(){_.remove(f.customDashboards.rows,{id:e.id}),f.customDashboards.count-=1,f.customDashboards.rows.length||f.getCustomDashboards(),p.success({title:_.startCase("CustomDashboard")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdashboard"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdashboard",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCustomDashboards())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","customDashboards","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("CustomDashboardsController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newCustomDashboard=!0,r.customDashboard=angular.copy(i),r.customDashboards=s,r.title=o.instant("TOOLS.CLONE_CUSTOMDASHBOARD"),i&&i.name&&(r.title+=": "+i.name),r.cloneCustomDashboard=function(){return e.dashboard.clone({id:i.id,includeAll:!0},r.customDashboard).$promise.then(function(e){r.customDashboards.unshift(e.toJSON()),a.success({title:"CustomDashboard properly cloned",msg:r.customDashboard.name?r.customDashboard.name+" has been cloned!":""}),t.go("app.tools.customDashboards.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","customDashboard","customDashboards","$translate"],angular.module("app.tools").controller("CustomDashboardcloneController",e)}(),function(){"use strict";function e(t,a,e,i,s){var o=this;function r(e,n,t){return s.dashboardItem.update(t).$promise.catch(function(e){console.error(e)})}o.customDashboard={},o.voiceQueues=s.rpc.getVoiceQueues({fields:"id,name"}),o.init=function(e,n){return o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},o.customDashboard=e,o.customDashboard.draggable={enabled:!0,handle:".draggable",stop:r},o.customDashboard.resizable={enabled:!0,handle:".resizable",stop:r},o.customDashboard.widgets=[],s.dashboard.getItems({id:e.id}).$promise.then(function(e){if(e&&e.count&&e.rows)for(var n=0;n<e.rows.length;n+=1)e.rows[n].voiceQueues=o.voiceQueues,e.rows[n].voiceQueuesSelected=_.map(o.voiceQueues.rows,"id"),e.rows[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+e.rows[n].type+"/ms-widget-engine."+e.rows[n].type+".html",o.customDashboard.widgets.push(e.rows[n])}).catch(function(e){console.error(e)})},o.createOrEditWidget=function(e){if(e&&e.attrs)for(var n=0;n<e.attrs.length;n+=1)"attrReport"===e.attrs[n].name&&(e.reportType=e.attrs[n].type),e[e.attrs[n].name]=e.attrs[n].value;t.show({controller:"CreateOrEditDashboardItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/dashboard/dialog.html",parent:angular.element(a.body),clickOutsideToClose:!0,locals:{dashboarditem:e,dashboard:o.customDashboard.widgets,license:null,setting:null,crudPermissions:o.crudPermissions}}).then(function(e){if(e)for(var n=0;n<o.customDashboard.widgets.length;n+=1)o.customDashboard.widgets[n].id===e.id&&(o.customDashboard.widgets[n].attrs=e.attrs,o.customDashboard.widgets[n].voiceQueues=o.voiceQueues,o.customDashboard.widgets[n].voiceQueuesSelected=_.map(o.voiceQueues.rows,"id"),o.customDashboard.widgets[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+o.customDashboard.widgets[n].type+"/ms-widget-engine."+o.customDashboard.widgets[n].type+".html")})},o.deleteWidget=function(n){var e=t.confirm().title("Would you like to delete "+n.title+"?").textContent("").ariaLabel("Delete Widget").ok("YES").cancel("NO");t.show(e).then(function(){return s.dashboardItem.delete({id:n.id}).$promise.then(function(e){_.remove(o.customDashboard.widgets,{id:n.id}),i.success({title:"Widget deleted!",msg:n.name?n.name+" has been deleted!":"Widget has been deleted!"})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){o.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETE.customDashboard"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdashboard",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()});console.error(e)})})}}e.$inject=["$mdDialog","$document","socket","toasty","api"],angular.module("app.tools").controller("CustomDashboardItemsController",e)}(),function(){"use strict";function e(n,e,t,a,o,i,s,r,l,d,c,m,u,p){var g=this;g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_DASHBOARDITEM",g.dashboarditem=angular.copy(l),g.dashboard=r,g.newDashboardItem=!1,g.selectedReport=[],g.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},g.dashboarditem?"web-report"==g.dashboarditem.type&&(g.apiName="custom"===g.dashboarditem.reportType?"analyticCustomReport":"analyticDefaultReport",d[g.apiName].get({fields:"id,name,parent"}).$promise.then(function(e){g.currentReport=_.find(e.rows,{id:g.dashboarditem.attrReport}),g.dashboarditem.report=g.currentReport.name,g.query.parent=g.currentReport.parent})):(g.dashboarditem={type:"counter",titleFontSize:12,attrUrl:"https://",attrHourFormat:"HH:mm:ss",attrTimezone:"0.00",attrMetric:"total",attrSerie1:"total",attrSerie2:"null",attrSerie3:"null",attrRefresh:10,attrFontSize:20,foreground:"#2196f3",background:"#ffffff"},g.title="TOOLS.NEW_DASHBOARDITEM",g.newDashboardItem=!0),g.addNewDashboardItem=function(){g.errors=[],d.dashboard.addItem({id:e.params.id},g.dashboarditem).$promise.then(function(e){g.dashboard.unshift(e.toJSON()),s.success({title:"DashboardItem properly created",msg:g.dashboarditem.name?g.dashboarditem.name+" has been created!":""}),I(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.save"}];for(var n=0;n<e.data.errors.length;n+=1)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDashboardItem=function(){g.errors=[],d.dashboardItem.update({id:g.dashboarditem.id},g.dashboarditem).$promise.then(function(e){var n=_.find(g.dashboard,{id:e.id});n&&_.merge(n,e.toJSON()),s.success({title:"DashboardItem properly saved!",msg:g.dashboarditem.name?g.dashboarditem.name+" has been saved!":""}),I(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.update"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDashboardItem=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dashboarditem will be deleted.").ariaLabel("Delete DashboardItem").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.dashboardItem.delete({id:g.dashboarditem.id}).$promise.then(function(){_.remove(g.dashboard,{id:g.dashboarditem.id}),s.success({title:"DashboardItem properly deleted!",msg:(g.dashboarditem.name||"dashboarditem")+" has been deleted!"}),I(g.dashboarditem)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.delete"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.getReports=S,g.selectReport=function(){if(g.dashboarditem.report=g.selectedReport[0].name,g.dashboarditem.attrReport=g.selectedReport[0].id,g.dashboarditem.reportType=g.currentNode.custom?"custom":"default",!g.newDashboardItem){var e={name:"attrReport",type:g.dashboarditem.reportType,value:g.selectedReport[0].id};g.dashboarditem.attrs.splice(_.findIndex(g.dashboarditem.attrs,1,e))}n.dashboarditemForm.report.$setDirty(),a.hide()},g.closeReportDialog=function(){a.hide()},g.searchReport=function(){g.treeDefaultData=g.treeReports[0]?angular.fromJson(g.treeReports[0].tree):[],g.treeCustomData=g.treeReports[1]?angular.fromJson(g.treeReports[1].tree):[],g.treeConfig=(n={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},"admin"!==g.currentUser.role?d.userProfileSection.get({fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:g.currentUser.userProfileId,sectionId:1203}).$promise.then(function(e){return g.userProfileSection=e&&1==e.count?e.rows[0]:null,n}).catch(function(e){s.error({title:"ERROR",msg:e.message})}):n),g.treeDefaultEvents=f(!1),g.treeCustomEvents=f(!0),a.show({controller:function(){return g},controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/partialViews/reports/treeReports.html",autoWrap:!0,skipHide:!0});var n},g.closeDialog=I,d.analyticTreeReport.get({}).$promise.then(function(e){g.treeReports=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})});var v=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],h=null;function f(e){return e?{loaded:E,select_node:b}:{loaded:y,select_node:A}}function b(e,n){g.treeDefaultInstance.jstree(!0).deselect_all(),g.treeDefaultInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!0,g.currentPath=g.treeCustomInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticCustomReport",g.query.parent=n.node.id,S()}function A(e,n){g.treeCustomInstance.jstree(!0).deselect_all(),g.treeCustomInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!1,g.currentPath=g.treeDefaultInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticDefaultReport",g.query.parent=n.node.id,S()}function E(){if(!g.newDashboardItem&&"analyticCustomReport"===g.apiName){var e=g.treeCustomInstance.jstree(!0).get_node(g.query.parent);b(0,{node:e,selected:e.id})}}function y(){if(!g.newDashboardItem&&"analyticDefaultReport"===g.apiName){var e=g.treeDefaultInstance.jstree(!0).get_node(g.query.parent);A(0,{node:e,selected:e.id})}}function S(){if(g.query.offset=(g.query.page-1)*g.query.limit,g.apiName)if("admin"===g.currentUser.role)g.promise=d[g.apiName].get(g.query,T).$promise;else{if(!g.userProfileSection)return T(null);if(g.userProfileSection.autoAssociation)g.promise=d[g.apiName].get(g.query,T).$promise;else{var a=[];g.promise=d[g.apiName].get(g.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:g.userProfileSection.id,type:"analyticDefaultReport"===g.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),T({count:t.length,rows:t})}return T(null)}):T(null)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_REPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}}function T(e){g.reports=e||{count:0,rows:[]},g.newDashboardItem||g.selectedReport.push(_.find(g.reports.rows,{id:g.currentReport.id}))}function I(e){a.hide(e)}c.hasRole("admin")?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){g.voiceQueues=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){h=e.rows||[]}).then(function(){for(var e=[],n=0;n<v.length;n++)e.push(d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:v[n].id}).$promise);return o.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<v.length;a++){var i=_.find(n,["sectionId",v[a].id]);if(i)if(i.autoAssociation){var s=[];h.forEach(function(e){e.type===v[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise)}return o.all(t)}).then(function(e){var n=[],t=null;g.dashboarditem&&(t=_.find(h,{id:Number(g.dashboarditem.attrVoiceQueues)}));for(var a=0;a<e.length;a++){(e[a].rows||[]).forEach(function(e){n.push(e)})}t&&!_.some(n,["resourceId",t.id])&&h.forEach(function(e){e.id===t.id&&(e.canSelect=!1,n.push(e))}),g.voiceQueues=n}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","dashboard","dashboarditem","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditDashboardItemDialogController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.customDashboard=c||t.params.customDashboard||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){a.show({controller:"CustomDashboardcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/clone/clone.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{customDashboard:e,customDashboards:u.customDashboards?u.customDashboards.rows:[],crudPermissions:u.crudPermissions}})},u.gotogoto=function(e,n){t.go("app.dashboards.custom",{id:e.id})},u.alert=l.info,u.gotoCustomDashboards=function(){t.go("app.tools.customDashboards",{},{reload:"app.tools.customDashboards"})},u.saveCustomDashboard=function(){r.dashboard.update({id:u.customDashboard.id},u.customDashboard).$promise.then(function(){l.success({title:"CustomDashboard updated!",msg:u.customDashboard.name?u.customDashboard.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETdashboard",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","customDashboard","userProfileSection"],angular.module("app.tools").controller("CustomDashboardController",e)}(),function(){"use strict";function e(a,i,o,r,e,l,d,n,t,s,c){var m=this;if(m.currentUser=n.getCurrentUser(),m.disposition=angular.copy(e),m.setting=c,m.license=s,m.crudPermissions=t,m.newDisposition=!1,m.errors=[],m.disposition||(m.disposition={level:"first"},m.newDisposition=!0),l){var u=l.field;m.disposition[u]=l.id}function p(){return o(function(t,n){d.disposition.get({fields:"id,name,level,ParentId",sort:"id",nolimit:"true"}).$promise.then(function(e){var n=e.rows||[];return t(n)}).catch(function(e){n(e)})})}function g(e){"first"===e.level?m.firstLevelDisposition=e:(m.anySecondLevelDisposition=!0,m.secondLevelDisposition=e,m.firstLevelDisposition=_.find(m.dispositions,["id",m.secondLevelDisposition.ParentId]),m.firstLevelDisposition||p().then(function(){m.firstLevelDisposition=_.find(m.allDispositions,["id",m.secondLevelDisposition.ParentId]),m.firstLevelDisposition.canSelect=!1,m.dispositions.push(m.firstLevelDisposition)}))}function v(e){a.hide(e)}m.onInit=function(){var n="disposition";l?n=l.route:"user"===m.currentUser.role&&(n="userProfile");var t="get";l?t="getDispositions":"user"===m.currentUser.role&&(t="getResources");var e={fields:"id,name,level,ParentId",id:l?l.id:void 0,section:"user"===m.currentUser.role?"Dispositions":void 0,MailAccountId:l?void 0:"null",FaxAccountId:l?void 0:"null",SmsAccountId:l?void 0:"null",OpenchannelAccountId:l?void 0:"null",ChatWebsiteId:l?void 0:"null",WhatsappAccountId:l?void 0:"null",ListId:l?void 0:"null",sort:"id",nolimit:"true"};(a=n,i=t,s=e,o(function(t,n){d[a][i](s).$promise.then(function(e){var n=e.rows||[];return t(n)}).catch(function(e){n(e)})})).then(function(e){m.dispositions=angular.copy(e),m.newDisposition||function(){if("first"===m.disposition.level)return;if(m.parentDisposition=_.find(m.dispositions,["id",m.disposition.ParentId]),!m.parentDisposition)return p().then(function(e){m.allDispositions=e;for(var n=0;n<m.allDispositions.length;n++){var t=m.allDispositions[n];if(t.id===m.disposition.ParentId){g(t),t.canSelect=!1,m.dispositions.push(t);break}}});g(m.parentDisposition)}()}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:["api",n,t].join(":"),msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});var a,i,s},m.onFirstLevelSelection=function(){m.secondLevelDisposition=void 0,m.anySecondLevelDisposition=_.some(m.dispositions,function(e){return e.ParentId===m.firstLevelDisposition.id&&e.id!=m.disposition.id})},m.addNewDisposition=function(){m.errors=[],m.secondLevelDisposition?(m.disposition.ParentId=m.secondLevelDisposition.id,m.disposition.level="third"):m.firstLevelDisposition&&(m.disposition.ParentId=m.firstLevelDisposition.id,m.disposition.level="second");d.disposition.save(m.disposition).$promise.then(function(e){m.dispositions.unshift(e.toJSON()),r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_CREATED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.save"}];for(var n=0;n<e.data.errors.length;n+=1)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveDisposition=function(){m.errors=[],m.secondLevelDisposition?(m.disposition.ParentId=m.secondLevelDisposition.id,m.disposition.level="third"):m.firstLevelDisposition&&(m.disposition.ParentId=m.firstLevelDisposition.id,m.disposition.level="second");d.disposition.update({id:m.disposition.id},m.disposition).$promise.then(function(e){var n=_.find(m.dispositions,{id:e.id});n&&_.merge(n,e.toJSON()),r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_SAVED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.update"}];for(var n=0;n<e.data.errors.length;n++)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteDisposition=function(e){m.errors=[];var n=_.some(m.dispositions,["ParentId",m.disposition.id]),t=a.confirm({skipHide:!0}).title(i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(i.instant("TOOLS.NOTIFICATIONS."+(n?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:m.disposition.name})).ariaLabel("Delete disposition").ok(i.instant("TOOLS.DELETE")).cancel(i.instant("TOOLS.CANCEL")).targetEvent(e);a.show(t).then(function(){d.disposition.delete({id:m.disposition.id}).$promise.then(function(){r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.delete"}];for(var n=0;n<e.data.errors.length;n++)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},m.clearSelection=function(e){"first"===e?(m.firstLevelDisposition=void 0,m.secondLevelDisposition=void 0,m.anySecondLevelDisposition=!1):m.secondLevelDisposition=void 0},m.closeDialog=v}e.$inject=["$mdDialog","$translate","$q","toasty","disposition","model","api","Auth","crudPermissions","license","setting"],angular.module("app.tools").controller("CreateOrEditDispositionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v){var h=this;function f(e){h.dispositions=e||{count:0,rows:[]}}function b(){h.query.offset=(h.query.page-1)*h.query.limit,p.isAdmin()?h.promise=m.disposition.get(h.query,f).$promise:(h.query.id=h.userProfile.id,h.query.section="Dispositions",h.promise=m.userProfile.getResources(h.query,f).$promise)}function A(e){m.disposition.delete({id:e.id}).$promise.then(function(){b(),u.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){h.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)u.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else u.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}h.license=g,h.setting=v,h.currentUser=p.getCurrentUser(),h.dispositions=l||{count:0,rows:[]},h.userProfile=d,h.userProfileSection=c&&1==c.count?c.rows[0]:null,h.crudPermissions=p.parseCrudPermissions(h.userProfileSection?h.userProfileSection.crudPermissions:null),h.selectedDispositions=[],h.levels={first:"1st",second:"2nd",third:"3rd"},h.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,page:1},h.deleteconfirm=function(e,n){var t=_.some(h.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){A(e)})},h.success=f,h.getDispositions=b,h.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:null,license:h.license,setting:h.setting,crudPermissions:h.crudPermissions}}).then(function(e){!0===e&&b()})},h.deleteDisposition=A,h.exportSelectedDispositions=function(){var e=angular.copy(h.selectedDispositions);return h.selectedDispositions=[],e},h.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:h.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){h.selectedDispositions.forEach(function(e){A(e)}),h.selectedDispositions=[]})},h.deselectDispositions=function(){h.selectedDispositions=[]},h.selectAllDispositions=function(){h.selectedDispositions=h.dispositions.rows};var E=!0,y=1;e.$watch("vm.query.filter",function(e,n){E?o(function(){E=!1}):(n||(y=h.query.page),e!==n&&(h.query.page=1),e||(h.query.page=y),b())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","dispositions","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.tools").controller("DispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_INTERVAL",g.interval=angular.copy(l),g.intervals=r,g.newInterval=!1,g.interval||(g.interval={},g.title="TOOLS.NEW_INTERVAL",g.newInterval=!0),g.addNewInterval=function(){g.errors=[],d.interval.save(g.interval).$promise.then(function(e){g.intervals.unshift(e.toJSON()),o.success({title:"Interval properly created",msg:g.interval.name?g.interval.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveInterval=function(){g.errors=[],d.interval.update({id:g.interval.id},g.interval).$promise.then(function(e){var n=_.find(g.intervals,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Interval properly saved!",msg:g.interval.name?g.interval.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteInterval=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The interval will be deleted.").ariaLabel("Delete Interval").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.interval.delete({id:g.interval.id}).$promise.then(function(){_.remove(g.intervals,{id:g.interval.id}),o.success({title:"Interval properly deleted!",msg:(g.interval.name||"interval")+" has been deleted!"}),v(g.interval)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","intervals","interval","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditAppintervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.intervalIntervals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.interval.getIntervals(m.query,u).$promise}function g(e){d.interval.delete({id:e.id}).$promise.then(function(){_.remove(m.intervalIntervals.rows,{id:e.id}),m.intervalIntervals.count-=1,m.intervalIntervals.rows.length||p(),l.success({title:"Interval deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETinterval"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.interval={},m.intervalIntervals={count:0,rows:[]},m.selectedIntervalIntervals=[],m.crudPermissions,m.sortableTable={animation:100,onSort:function(e){d.interval.addIntervals({id:m.interval.id},e.models).$promise.then(function(e){m.intervalIntervals.rows=e}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:SORTABLETABLE",msg:e.data?JSON.stringify(e.data):e.toString()})})}},m.query={fields:"createdAt,updatedAt,id,name,interval",nolimit:"true",limit:10,page:1},m.init=function(e,n){m.interval=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.sortableTable.disabled=!m.crudPermissions.canEdit,m.query.id=m.interval.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interval?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interval #")+e.id||"interval")+"</b> will be deleted.").ariaLabel("delete interval").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIntervalIntervals=p,m.createOrEditIntervalInterval=function(e,n){o.show({controller:"EditAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/intervals/edit/apps/interval/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:m.interval,interval:n,intervals:m.intervalIntervals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIntervalIntervals=function(){var e=angular.copy(m.selectedIntervalIntervals);return m.selectedIntervalIntervals=[],e},m.deleteIntervalInterval=g,m.deleteSelectedIntervalIntervals=function(e){var n=o.confirm().title("Are you sure want to delete the selected intervals?").htmlContent("<b>"+m.selectedIntervalIntervals.length+" selected</b> will be deleted.").ariaLabel("delete intervals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIntervalIntervals.forEach(function(e){g(e)}),m.selectedIntervalIntervals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("IntervalIntervalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_INTERVAL",g.interval=angular.copy(l),g.intervals=r,g.newInterval=!1,g.interval||(g.interval={},g.title="TOOLS.NEW_INTERVAL",g.newInterval=!0),g.addNewInterval=function(){g.errors=[],d.interval.save(g.interval).$promise.then(function(e){g.intervals.unshift(e.toJSON()),o.success({title:"Interval properly created",msg:g.interval.name?g.interval.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveInterval=function(){g.errors=[],d.interval.update({id:g.interval.id},g.interval).$promise.then(function(e){var n=_.find(g.intervals,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Interval properly saved!",msg:g.interval.name?g.interval.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteInterval=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The interval will be deleted.").ariaLabel("Delete Interval").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.interval.delete({id:g.interval.id}).$promise.then(function(){_.remove(g.intervals,{id:g.interval.id}),o.success({title:"Interval properly deleted!",msg:(g.interval.name||"interval")+" has been deleted!"}),v(g.interval)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","intervals","interval","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.interval=c||e.params.interval||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoIntervals=function(){e.go("app.tools.intervals",{},{reload:"app.tools.intervals"})},u.saveInterval=function(){r.interval.update({id:u.interval.id},u.interval).$promise.then(function(){l.success({title:"Interval updated!",msg:u.interval.name?u.interval.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","interval","userProfileSection"],angular.module("app.tools").controller("IntervalController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.intervals=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="intervals",f.listOrder="",f.listOrderAsc=null,f.selectedIntervals=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,page:1},f.editstate=function(e,n){t.go("app.tools.intervals.edit",{id:e.id,interval:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("interval")+"?").htmlContent("<b>"+(e.name||"interval")+"</b> will be deleted.").ariaLabel("delete interval").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getIntervals=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.interval.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Intervals",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditInterval=function(e,n){i.show({controller:"CreateOrEditIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/intervals/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:n,intervals:f.intervals.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteInterval=y,f.exportSelectedIntervals=function(){var e=angular.copy(f.selectedIntervals);return f.selectedIntervals=[],e},f.deleteSelectedIntervals=function(e){var n=i.confirm().title("Are you sure want to delete the selected intervals?").htmlContent("<b>"+f.selectedIntervals.length+" selected</b> will be deleted.").ariaLabel("delete Intervals").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedIntervals.forEach(function(e){y(e)}),f.selectedIntervals=[]})},f.deselectIntervals=function(){f.selectedIntervals=[]},f.selectAllIntervals=function(){f.selectedIntervals=f.intervals.rows};var b=!0,A=1;function E(e){f.intervals=e||{count:0,rows:[]}}function y(e){m.interval.delete({id:e.id}).$promise.then(function(){_.remove(f.intervals.rows,{id:e.id}),f.intervals.count-=1,f.intervals.rows.length||f.getIntervals(),p.success({title:_.startCase("Interval")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEinterval"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEinterval",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getIntervals())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","intervals","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("IntervalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_PAUSE",g.pause=angular.copy(l),g.pauses=r,g.newPause=!1,g.pause||(g.pause={},g.title="TOOLS.NEW_PAUSE",g.newPause=!0),g.addNewPause=function(){g.errors=[],d.pause.save(g.pause).$promise.then(function(e){g.pauses.unshift(e.toJSON()),o.success({title:"Pause properly created",msg:g.pause.name?g.pause.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savePause=function(){g.errors=[],d.pause.update({id:g.pause.id},g.pause).$promise.then(function(e){var n=_.find(g.pauses,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Pause properly saved!",msg:g.pause.name?g.pause.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletePause=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The pause will be deleted.").ariaLabel("Delete Pause").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.pause.delete({id:g.pause.id}).$promise.then(function(){_.remove(g.pauses,{id:g.pause.id}),o.success({title:"Pause properly deleted!",msg:(g.pause.name||"pause")+" has been deleted!"}),v(g.pause)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","pauses","pause","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditPauseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.pauses=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="pauses",f.listOrder="",f.listOrderAsc=null,f.selectedPauses=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditPauseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/pauses/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{pause:e,pauses:f.pauses.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("pause")+"?").htmlContent("<b>"+(e.name||"pause")+"</b> will be deleted.").ariaLabel("delete pause").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getPauses=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.pause.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Pauses",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditPause=function(e,n){i.show({controller:"CreateOrEditPauseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/pauses/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{pause:n,pauses:f.pauses.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletePause=y,f.exportSelectedPauses=function(){var e=angular.copy(f.selectedPauses);return f.selectedPauses=[],e},f.deleteSelectedPauses=function(e){var n=i.confirm().title("Are you sure want to delete the selected pauses?").htmlContent("<b>"+f.selectedPauses.length+" selected</b> will be deleted.").ariaLabel("delete Pauses").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedPauses.forEach(function(e){y(e)}),f.selectedPauses=[]})},f.deselectPauses=function(){f.selectedPauses=[]},f.selectAllPauses=function(){f.selectedPauses=f.pauses.rows};var b=!0,A=1;function E(e){f.pauses=e||{count:0,rows:[]}}function y(e){m.pause.delete({id:e.id}).$promise.then(function(){_.remove(f.pauses.rows,{id:e.id}),f.pauses.count-=1,f.pauses.rows.length||f.getPauses(),p.success({title:_.startCase("Pause")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEpause"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEpause",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getPauses())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","pauses","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("PausesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;if(g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_SCHEDULE",g.schedule=angular.copy(l),g.schedules=r,g.newSchedule=!1,g.selectedReport=[],g.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},g.schedule){g.apiName=g.schedule.DefaultReportId?"analyticDefaultReport":"analyticCustomReport";var v=g.schedule.DefaultReportId?g.schedule.DefaultReportId:g.schedule.CustomReportId;d[g.apiName].get({fields:"id,name,parent"}).$promise.then(function(e){g.currentReport=_.find(e.rows,{id:v}),g.schedule.report=g.currentReport.name,g.query.parent=g.currentReport.parent})}else g.schedule={output:"xlsx",active:!0,startAt:new Date,endAt:new Date(Date.now()+2592e6),cron:"0 0 * * *",subtractNumber:1,subtractUnit:"days",sendMail:!1,sendIfEmpty:!0},g.title="TOOLS.NEW_SCHEDULE",g.newSchedule=!0;function h(e){return e?{loaded:A,select_node:f}:{loaded:E,select_node:b}}function f(e,n){g.treeDefaultInstance.jstree(!0).deselect_all(),g.treeDefaultInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!0,g.currentPath=g.treeCustomInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticCustomReport",g.query.parent=n.node.id,y()}function b(e,n){g.treeCustomInstance.jstree(!0).deselect_all(),g.treeCustomInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!1,g.currentPath=g.treeDefaultInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticDefaultReport",g.query.parent=n.node.id,y()}function A(){if(!g.newSchedule&&"analyticCustomReport"===g.apiName){var e=g.treeCustomInstance.jstree(!0).get_node(g.query.parent);f(0,{node:e,selected:e.id})}}function E(){if(!g.newSchedule&&"analyticDefaultReport"===g.apiName){var e=g.treeDefaultInstance.jstree(!0).get_node(g.query.parent);b(0,{node:e,selected:e.id})}}function y(){if(g.query.offset=(g.query.page-1)*g.query.limit,g.apiName)if("admin"===g.currentUser.role)g.promise=d[g.apiName].get(g.query,S).$promise;else{if(!g.userProfileSection)return S(null);if(g.userProfileSection.autoAssociation)g.promise=d[g.apiName].get(g.query,S).$promise;else{var a=[];g.promise=d[g.apiName].get(g.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:g.userProfileSection.id,type:"analyticDefaultReport"===g.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),S({count:t.length,rows:t})}return S(null)}):S(null)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_REPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}}function S(e){g.reports=e||{count:0,rows:[]},g.newSchedule||g.selectedReport.push(_.find(g.reports.rows,{id:g.currentReport.id}))}function T(e){a.hide(e)}g.addNewSchedule=function(){g.errors=[],d.schedule.save(g.schedule).$promise.then(function(e){g.schedules.unshift(e.toJSON()),o.success({title:"Schedule properly created",msg:g.schedule.name?g.schedule.name+" has been created!":""}),T(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSchedule=function(){g.errors=[],d.schedule.update({id:g.schedule.id},g.schedule).$promise.then(function(e){var n=_.find(g.schedules,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Schedule properly saved!",msg:g.schedule.name?g.schedule.name+" has been saved!":""}),T(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSchedule=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The schedule will be deleted.").ariaLabel("Delete Schedule").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.schedule.delete({id:g.schedule.id}).$promise.then(function(){_.remove(g.schedules,{id:g.schedule.id}),o.success({title:"Schedule properly deleted!",msg:(g.schedule.name||"schedule")+" has been deleted!"}),T(g.schedule)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.getReports=y,g.selectReport=function(){g.schedule.report=g.selectedReport[0].name,g.currentNode.custom?(g.schedule.CustomReportId=g.selectedReport[0].id,delete g.schedule.DefaultReportId):(g.schedule.DefaultReportId=g.selectedReport[0].id,delete g.schedule.CustomReportId);e.scheduleForm.report.$setDirty(),a.hide()},g.closeReportDialog=function(){a.hide()},g.searchReport=function(){g.treeDefaultData=g.treeReports[0]?angular.fromJson(g.treeReports[0].tree):[],g.treeCustomData=g.treeReports[1]?angular.fromJson(g.treeReports[1].tree):[],g.treeConfig=(n={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},"admin"!==g.currentUser.role?d.userProfileSection.get({fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:g.currentUser.userProfileId,sectionId:1203}).$promise.then(function(e){return g.userProfileSection=e&&1==e.count?e.rows[0]:null,n}).catch(function(e){o.error({title:"ERROR",msg:e.message})}):n),g.treeDefaultEvents=h(!1),g.treeCustomEvents=h(!0),a.show({controller:function(){return g},controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/partialViews/reports/treeReports.html",autoWrap:!0,skipHide:!0});var n},g.closeDialog=T,d.analyticTreeReport.get({}).$promise.then(function(e){g.treeReports=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.mailAccounts=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.mailAccounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.mailAccounts,{id:e.resourceId})}),t=null;if(g.schedule&&(t=_.find(g.mailAccounts,{id:Number(g.schedule.MailAccountId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.mailAccounts,{id:t.id});a.canSelect=!1,n.push(a)}g.mailAccounts=n})}else{var t=[],a=null;g.schedule&&(a=_.find(g.mailAccounts,{id:Number(g.schedule.MailAccountId)}));for(var i=0;i<g.mailAccounts.length;i++)a&&g.mailAccounts[i].id===a.id&&(g.mailAccounts[i].canSelect=!1,t.push(g.mailAccounts[i]));g.mailAccounts=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","schedules","schedule","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditScheduleDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.schedules=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="schedules",f.listOrder="",f.listOrderAsc=null,f.selectedScheduler=[],f.query={fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,page:1},f.arrayoutput=_.keyBy([{option:"CSV",value:"'csv'"},{option:"PDF",value:"'pdf'"},{option:"Excel",value:"'xlsx'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysubtractUnit=_.keyBy([{option:"Minutes",value:"'minutes'"},{option:"Hours",value:"'hours'"},{option:"Days",value:"'days'"},{option:"Weeks",value:"'weeks'"},{option:"Months",value:"'months'"},{option:"Quarters",value:"'quarters'"},{option:"Years",value:"'years'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditScheduleDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{schedule:e,schedules:f.schedules.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.runconfirm=function(e,n){var t=i.confirm().title("Are you sure want to run the schedule?").htmlContent("<b>"+(e.name||"schedule")+"</b> will be run.").ariaLabel("delete schedule").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){return m.schedule.run({id:e.id}).$promise},function(){console.log("CANCEL")})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("schedule")+"?").htmlContent("<b>"+(e.name||"schedule")+"</b> will be deleted.").ariaLabel("delete schedule").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getScheduler=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.schedule.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Scheduler",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSchedule=function(e,n){i.show({controller:"CreateOrEditScheduleDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{schedule:n,schedules:f.schedules.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSchedule=y,f.exportSelectedScheduler=function(){var e=angular.copy(f.selectedScheduler);return f.selectedScheduler=[],e},f.deleteSelectedScheduler=function(e){var n=i.confirm().title("Are you sure want to delete the selected schedules?").htmlContent("<b>"+f.selectedScheduler.length+" selected</b> will be deleted.").ariaLabel("delete Schedules").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedScheduler.forEach(function(e){y(e)}),f.selectedScheduler=[]})},f.deselectScheduler=function(){f.selectedScheduler=[]},f.selectAllScheduler=function(){f.selectedScheduler=f.schedules.rows},m.analyticTreeReport.get({}).$promise.then(function(e){f.treeReports=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.mailAccounts=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.mailAccounts=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.mailAccounts,{id:e.resourceId})}),t=null;if(f.schedule&&(t=_.find(f.mailAccounts,{id:Number(f.schedule.MailAccountId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.mailAccounts,{id:t.id});a.canSelect=!1,n.push(a)}f.mailAccounts=n})}else{var t=[],a=null;f.schedule&&(a=_.find(f.mailAccounts,{id:Number(f.schedule.MailAccountId)}));for(var i=0;i<f.mailAccounts.length;i++)a&&f.mailAccounts[i].id===a.id&&(f.mailAccounts[i].canSelect=!1,t.push(f.mailAccounts[i]));f.mailAccounts=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.schedules=e||{count:0,rows:[]}}function y(e){m.schedule.delete({id:e.id}).$promise.then(function(){_.remove(f.schedules.rows,{id:e.id}),f.schedules.count-=1,f.schedules.rows.length||f.getScheduler(),p.success({title:_.startCase("Schedule")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEschedule"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEschedule",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getScheduler())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","schedules","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("SchedulesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_SOUND",g.sound=angular.copy(l),g.sounds=r,g.newSound=!1,g.sound||(g.sound={},g.title="TOOLS.NEW_SOUND",g.newSound=!0),g.addNewSound=function(){g.errors=[],d.sound.save(g.sound).$promise.then(function(e){g.sounds.unshift(e.toJSON()),o.success({title:"Sound properly created",msg:g.sound.name?g.sound.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSound=function(){g.errors=[],d.sound.update({id:g.sound.id},g.sound).$promise.then(function(e){var n=_.find(g.sounds,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Sound properly saved!",msg:g.sound.name?g.sound.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSound=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sound will be deleted.").ariaLabel("Delete Sound").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.sound.delete({id:g.sound.id}).$promise.then(function(){_.remove(g.sounds,{id:g.sound.id}),o.success({title:"Sound properly deleted!",msg:(g.sound.name||"sound")+" has been deleted!"}),v(g.sound)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","sounds","sound","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.sounds=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="sounds",f.listOrder="",f.listOrderAsc=null,f.selectedSounds=[],f.query={fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{sound:e,sounds:f.sounds.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.downloadfile2=function(s,e){return m.sound.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.converted_format?s.save_name+"."+s.converted_format:s.save_name;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("sound")+"?").htmlContent("<b>"+(e.name||"sound")+"</b> will be deleted.").ariaLabel("delete sound").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSounds=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.sound.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Sounds",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSound=function(e,n){i.show({controller:"CreateOrEditSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sound:n,sounds:f.sounds.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSound=y,f.exportSelectedSounds=function(){var e=angular.copy(f.selectedSounds);return f.selectedSounds=[],e},f.deleteSelectedSounds=function(e){var n=i.confirm().title("Are you sure want to delete the selected sounds?").htmlContent("<b>"+f.selectedSounds.length+" selected</b> will be deleted.").ariaLabel("delete Sounds").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSounds.forEach(function(e){y(e)}),f.selectedSounds=[]})},f.deselectSounds=function(){f.selectedSounds=[]},f.selectAllSounds=function(){f.selectedSounds=f.sounds.rows},f.uploadSound=function(e){i.show({controller:"UploadSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/upload/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sounds:f.sounds.rows}})};var b=!0,A=1;function E(e){f.sounds=e||{count:0,rows:[]}}function y(e){m.sound.delete({id:e.id}).$promise.then(function(){_.remove(f.sounds.rows,{id:e.id}),f.sounds.count-=1,f.sounds.rows.length||f.getSounds(),p.success({title:_.startCase("Sound")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsound"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsound",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSounds())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","sounds","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("SoundsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this,r=15,l=1024*r*1024;o.currentUser=s.getCurrentUser(),o.errors=[],o.title="TOOLS.UPLOAD_SOUND",o.sounds=a,o.uploadSounds=[],o.uploadState="none",o.sound={},o.ngFlowOptions={maxChunkRetries:1,chunkSize:l,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0,target:"api/sounds"},o.ngFlow={flow:{}},o.dropping=!1,o.fileAdded=function(e){var n=["wav","mp3","gsm"];if(!_.includes(n,e.getExtension()))return t.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>l)return t.error({title:"File too big",msg:"The max allowed size is "+r+"MB"}),!1;return o.sound={id:e.uniqueIdentifier,file:e},o.uploadSounds.unshift(o.sound),!0},o.upload=function(){o.uploadState="uploading",o.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},o.ngFlow.flow.opts.query={role:o.currentUser.role,userProfileId:o.currentUser.userProfileId},o.ngFlow.flow.upload()},o.fileSuccess=function(a,e){o.sounds.unshift(JSON.parse(e)),angular.forEach(o.uploadSounds,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result}}})},o.uploadError=function(e,n){o.ngFlow.flow.cancel(),t.error({title:"Upload error",msg:"Cannot upload the sound"}),o.uploadState="failed"},o.uploadComplete=function(){"failed"!==o.uploadState&&(o.uploadState="completed",t.success({title:"Upload completed",msg:o.sound.file.name+" uploaded successfully"}))},o.closeDialog=function(){n.hide()}}e.$inject=["$cookies","$mdDialog","toasty","sounds","api","Auth"],angular.module("app.tools").controller("UploadSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TAG",g.tag=angular.copy(l),g.tags=r,g.newTag=!1,g.tag||(g.tag={},g.title="TOOLS.NEW_TAG",g.newTag=!0),g.addNewTag=function(){g.errors=[],d.tag.save(g.tag).$promise.then(function(e){g.tags.unshift(e.toJSON()),o.success({title:"Tag properly created",msg:g.tag.name?g.tag.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTag=function(){g.errors=[],d.tag.update({id:g.tag.id},g.tag).$promise.then(function(e){var n=_.find(g.tags,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Tag properly saved!",msg:g.tag.name?g.tag.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTag=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The tag will be deleted.").ariaLabel("Delete Tag").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.tag.delete({id:g.tag.id}).$promise.then(function(){_.remove(g.tags,{id:g.tag.id}),o.success({title:"Tag properly deleted!",msg:(g.tag.name||"tag")+" has been deleted!"}),v(g.tag)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","tags","tag","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTagDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.tags=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="tags",f.listOrder="",f.listOrderAsc=null,f.selectedTags=[],f.query={fields:"createdAt,updatedAt,id,name,description,color",sort:"name,-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTagDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/tags/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{tag:e,tags:f.tags.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("tag")+"?").htmlContent("<b>"+(e.name||"tag")+"</b> will be deleted.").ariaLabel("delete tag").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTags=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.tag.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Tags",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTag=function(e,n){i.show({controller:"CreateOrEditTagDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/tags/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{tag:n,tags:f.tags.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTag=y,f.exportSelectedTags=function(){var e=angular.copy(f.selectedTags);return f.selectedTags=[],e},f.deleteSelectedTags=function(e){var n=i.confirm().title("Are you sure want to delete the selected tags?").htmlContent("<b>"+f.selectedTags.length+" selected</b> will be deleted.").ariaLabel("delete Tags").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTags.forEach(function(e){y(e)}),f.selectedTags=[]})},f.deselectTags=function(){f.selectedTags=[]},f.selectAllTags=function(){f.selectedTags=f.tags.rows};var b=!0,A=1;function E(e){f.tags=e||{count:0,rows:[]}}function y(e){m.tag.delete({id:e.id}).$promise.then(function(){_.remove(f.tags.rows,{id:e.id}),f.tags.count-=1,f.tags.rows.length||f.getTags(),p.success({title:_.startCase("Tag")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtag"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtag",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTags())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","tags","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TagsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TEMPLATE",g.template=angular.copy(l),g.templates=r,g.newTemplate=!1,g.template||(g.template={},g.title="TOOLS.NEW_TEMPLATE",g.newTemplate=!0),g.addNewTemplate=function(){g.errors=[],d.template.save(g.template).$promise.then(function(e){g.templates.unshift(e.toJSON()),o.success({title:"Template properly created",msg:g.template.name?g.template.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTemplate=function(){g.errors=[],d.template.update({id:g.template.id},g.template).$promise.then(function(e){var n=_.find(g.templates,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Template properly saved!",msg:g.template.name?g.template.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTemplate=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The template will be deleted.").ariaLabel("Delete Template").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.template.delete({id:g.template.id}).$promise.then(function(){_.remove(g.templates,{id:g.template.id}),o.success({title:"Template properly deleted!",msg:(g.template.name||"template")+" has been deleted!"}),v(g.template)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","templates","template","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTemplateDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.templates=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="templates",f.listOrder="",f.listOrderAsc=null,f.selectedTemplates=[],f.query={fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTemplateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/templates/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{template:e,templates:f.templates.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("template")+"?").htmlContent("<b>"+(e.name||"template")+"</b> will be deleted.").ariaLabel("delete template").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTemplates=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.template.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Templates",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTemplate=function(e,n){i.show({controller:"CreateOrEditTemplateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/templates/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{template:n,templates:f.templates.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTemplate=y,f.exportSelectedTemplates=function(){var e=angular.copy(f.selectedTemplates);return f.selectedTemplates=[],e},f.deleteSelectedTemplates=function(e){var n=i.confirm().title("Are you sure want to delete the selected templates?").htmlContent("<b>"+f.selectedTemplates.length+" selected</b> will be deleted.").ariaLabel("delete Templates").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTemplates.forEach(function(e){y(e)}),f.selectedTemplates=[]})},f.deselectTemplates=function(){f.selectedTemplates=[]},f.selectAllTemplates=function(){f.selectedTemplates=f.templates.rows};var b=!0,A=1;function E(e){f.templates=e||{count:0,rows:[]}}function y(e){m.template.delete({id:e.id}).$promise.then(function(){_.remove(f.templates.rows,{id:e.id}),f.templates.count-=1,f.templates.rows.length||f.getTemplates(),p.success({title:_.startCase("Template")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtemplate"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtemplate",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTemplates())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","templates","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TemplatesController",e)}(),function(){"use strict";function e(t,a,i,e,n,s,o,r,l,d){var c=this;function m(e){t.hide(e)}c.currentUser=o.getCurrentUser(),c.trigger=angular.copy(n),c.triggers=angular.copy(e),c.setting=l,c.license=r,c.crudPermissions=d,c.newTrigger=!1,c.errors=[],c.trigger||(c.trigger={channel:"voice"},c.newTrigger=!0),c.addNewTrigger=function(){c.errors=[],s.trigger.save(c.trigger).$promise.then(function(e){c.triggers.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_CREATED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveTrigger=function(){c.errors=[],s.trigger.update({id:c.trigger.id},c.trigger).$promise.then(function(){c.triggers=_.map(c.triggers,function(e){return e.id===c.trigger.id?c.trigger:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_SAVED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteTrigger=function(e){c.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_MESSAGE",{name:c.trigger.name})).ariaLabel("Delete trigger").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){s.trigger.delete({id:c.trigger.id}).$promise.then(function(){c.triggers=_.filter(c.triggers,function(e){return e.id!==c.trigger.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},c.closeDialog=m}e.$inject=["$mdDialog","$translate","toasty","triggers","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTriggerDialogController",e)}(),function(){"use strict";function e(e,a,n,i,t,s,o,r){var l=this;function d(){_.some(l.triggerActions.rows,["action","contactManager"])&&(l.lists||(r.isAdmin()?o.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.lists=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.lists=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.lists,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if("contactManager"===e.action){var n=_.find(l.lists,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.lists,{id:e.id});n.canSelect=!1,t.push(n)}}),l.lists=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if("contactManager"===e.action){var n=_.find(l.lists,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<l.lists.length;i++)_.some(a,{id:l.lists[i].id})&&(l.lists[i].canSelect=!1,t.push(l.lists[i]));l.lists=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(l.triggerActions.rows,["action","integration"])&&_(l.triggerActions.rows).map(function(e){return"integration"===e.action?e.data1:void 0}).compact().uniq().value().forEach(function(e){var n=e+"Accounts";if(!l[n]){var t="int"+_.startCase(e)+"Account";o[t.replace(/\s+/g,"")].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l[n]=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+n.toUpperCase()+"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}),_.some(l.triggerActions.rows,function(e){return _.includes(["motionbar","browser"],e.action)})&&(l.templates||(r.isAdmin()?o.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l.templates=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l.templates=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1009}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.templates,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(l.templates,{id:Number(e.data2)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.templates,{id:e.id});n.canSelect=!1,t.push(n)}}),l.templates=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(l.templates,{id:Number(e.data2)});a.push(n)}});for(var i=0;i<l.templates.length;i++)_.some(a,{id:l.templates[i].id})&&(l.templates[i].canSelect=!1,t.push(l.templates[i]));l.templates=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(l.triggerActions.rows,["action","jscripty"])&&(l.projects||(r.isAdmin()?o.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.projects=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.projects=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.projects,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if("jscripty"===e.action){var n=_.find(l.projects,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),l.projects=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if("jscripty"===e.action){var n=_.find(l.projects,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<l.projects.length;i++)_.some(a,{id:l.projects[i].id})&&(l.projects[i].canSelect=!1,t.push(l.projects[i]));l.projects=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})})))}function c(e){l.triggerActions=e||{count:0,rows:[]},d()}function m(){l.query.offset=(l.query.page-1)*l.query.limit,l.promise=o.trigger.getActions(l.query,c).$promise}function u(e,n){o.action.delete({id:e.id}).$promise.then(function(){m(),n&&s.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}l.currentUser=r.getCurrentUser(),l.trigger={},l.triggerActions={count:0,rows:[]},l.selectedTriggerActions=[],l.query={fields:"id,action,contact,data1,data2,data3,data4,data5,data6,data7,createdAt,updatedAt",limit:10,page:1},l.integrationTypes={zendesk:"Zendesk",salesforce:"Salesforce",sugarcrm:"SugarCRM",freshdesk:"Freshdesk",desk:"Desk",zoho:"Zoho",vtiger:"vTiger",dynamics365:"Dynamics365",servicenow:"ServiceNow",freshsales:"Freshsales"},l.motionBarOptions={0:"Popup",1:"CTI URL",2:"Windows App"},l.onInit=function(e,n){l.trigger=e,l.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},l.query.ActionId=l.trigger.id,l.query.id=l.trigger.id,m()},l.success=c,l.getTriggerActions=m,l.createOrEditTriggerAction=function(e,n){i.show({controller:"CreateOrEditActionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/actions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:l.trigger,action:n,actions:l.triggerActions.rows,license:null,setting:null,crudPermissions:l.crudPermissions}}).then(function(e){e&&(l.triggerActions={count:e.length,rows:e},d())})},l.exportSelectedTriggerActions=function(){var e=angular.copy(l.selectedTriggerActions);return l.selectedTriggerActions=[],e},l.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETE_TITLE")).ariaLabel("Delete action").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){u(e,!0)})},l.deleteSelectedTriggerActions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETE_MESSAGE",{total:l.selectedTriggerActions.length})).ariaLabel("Delete actions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){l.selectedTriggerActions.forEach(function(e){u(e)}),l.selectedTriggerActions=[],s.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerActionsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s,o,r,l,d,c,m){var u=this;function p(){return new Promise(function(n,t){l.hasSectionsPermissions([1301,1302,1303,1304,1305,1306,1307,1308,1309,1310]).then(function(e){u.hasSectionPermissions=_.merge(u.hasSectionPermissions,e),n(u.hasSectionPermissions)}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SECTIONS_PERMISSIONS",msg:e.data?JSON.stringify(e.data):e.toString()}),t()})})}function g(){r.cmList.getCustomFields({id:u.action.data1,ListId:u.action.data1}).$promise.then(function(e){u.listFields=_.filter(e.rows,["type","text"]),u.listFields.forEach(function(e){e.columnName="cf_"+e.id})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LIST_CUSTOM_FIELDS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function v(){l.isAdmin()?r.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.templates=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.templates=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1009}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.templates,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(u.templates,{id:Number(e.data2)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.templates,{id:e.id});n.canSelect=!1,t.push(n)}}),u.templates=t})}else{var t=[],a=[];u.actions.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(u.templates,{id:Number(e.data2)});a.push(n)}});for(var i=0;i<u.templates.length;i++){_.some(a,{id:u.templates[i].id})&&(u.templates[i].canSelect=!1,t.push(u.templates[i]))}u.templates=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})})}function h(){switch(u.action.action){case"contactManager":u.lists||(l.isAdmin()?r.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.lists=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.lists,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if("contactManager"===e.action){var n=_.find(u.lists,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.lists,{id:e.id});n.canSelect=!1,t.push(n)}}),u.lists=t})}else{var t=[],a=[];u.actions.forEach(function(e){if("contactManager"===e.action){var n=_.find(u.lists,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<u.lists.length;i++)_.some(a,{id:u.lists[i].id})&&(u.lists[i].canSelect=!1,t.push(u.lists[i]));u.lists=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})),u.contactFields||r.cmContact.describe({}).$promise.then(function(e){u.contactFields=[],u.customFields=[];for(var n=_.values(e.toJSON()),t=0;t<n.length;t++)_.includes(u.allowedStandardFields,n[t].columnName)?u.contactFields.push(n[t]):_.startsWith(n[t].columnName,"cf_")&&"text"===n[t].custom.type&&u.customFields.push(n[t])}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE_CM_CONTACT",msg:e.data?JSON.stringify(e.data):e.toString()})}),u.action.data3=u.action.data3?u.action.data3.split(","):["phone"],"1"!==u.action.data2||u.action.data4||(u.action.data4="phone");break;case"jscripty":u.projects||(l.isAdmin()?r.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if("jscripty"===e.action){var n=_.find(u.projects,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),u.projects=t})}else{var t=[],a=[];u.actions.forEach(function(e){if("jscripty"===e.action){var n=_.find(u.projects,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<u.projects.length;i++)_.some(a,{id:u.projects[i].id})&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"urlForward":u.action.data5||(u.action.data5=5)}}function f(){u.editAccount||(u.action.data2=void 0,u.action.data3=void 0),u.action.isIntegrationDisabled=!u.newAction&&!function(){switch(u.action.data1){case"zendesk":return u.hasSectionPermissions[1301];case"salesforce":return u.hasSectionPermissions[1302];case"sugarcrm":return u.hasSectionPermissions[1305];case"freshdesk":return u.hasSectionPermissions[1303];case"desk":return u.hasSectionPermissions[1306];case"zoho":return u.hasSectionPermissions[1307];case"vtiger":return u.hasSectionPermissions[1308];case"dynamics365":return u.hasSectionPermissions[1309];case"servicenow":return u.hasSectionPermissions[1310];case"freshsales":return u.hasSectionPermissions[1304]}}();var e="int"+_.capitalize(u.action.data1)+"Account";r[e].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.accounts=e.rows||[],u.editAccount=!1}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.action.data1.toUpperCase()+"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function b(){u.action.data3=u.action.data3?u.action.data3:void 0;var e="int"+_.capitalize(u.action.data1)+"Configuration";r[e].get({fields:"id,name,AccountId",sort:"id",nolimit:"true"}).$promise.then(function(e){u.configurations=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.action.data1.toUpperCase()+"CONFIGURATIONS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function A(){var e=angular.copy(u.action);return _.isArray(e.data3)&&(e.data3=u.action.data3.join(",")),e}function E(e){t.hide(e)}u.currentUser=l.getCurrentUser(),void 0!==s&&"urlForward"===s.action&&s.data5&&(s.data5=parseInt(s.data5)),u.action=angular.copy(s),u.actions=angular.copy(e),u.setting=c,u.license=d,u.crudPermissions=m,u.newAction=!1,u.errors=[],u.trigger=angular.copy(o),u.action?function(){switch(u.editAccount=!0,u.action.action){case"integration":return new Promise(function(e){e(p())}).then(function(){return u.editAccount||(u.action.data2=void 0,u.action.data3=void 0,h()),f()}).then(function(){return b()});case"motionbar":case"browser":v()}u.editAccount=!1}():(u.action={},u.newAction=!0),u.action.ActionId=n.params.id||void 0,u.allowedStandardFields=["phone","mobile","fax"],u.addNewAction=function(){u.errors=[];var e=A();r.trigger.addAction({id:n.params.id},e).$promise.then(function(e){u.actions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_CREATED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.saveAction=function(){u.errors=[];var n=A();r.action.update({id:n.id},n).$promise.then(function(){u.actions=_.map(u.actions,function(e){return e.id===n.id?n:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_SAVED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.deleteAction=function(e){u.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETE_TITLE")).ariaLabel("Delete action").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){r.action.delete({id:u.action.id}).$promise.then(function(){u.actions=_.filter(u.actions,function(e){return e.id!==u.action.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},u.onActionInit=function(){l.hasModulePermissions("Integrations").then(function(e){u.hasIntegrationsPermissions=e}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MODULE_PERMISSIONS",msg:e.data?JSON.stringify(e.data):e.toString()})}),u.action.action&&h()},u.onIntegrationInit=p,u.onSearchFieldsInit=function(){u.newAction||g()},u.onActionSelection=function(){u.newAction&&(u.action.data1=void 0,u.action.data2=void 0,u.action.data3=void 0,u.action.data4=void 0,u.action.data5="urlForward"===u.action.action?5:void 0,h())},u.onIntegrationSelection=f,u.onListSelection=function(){g()},u.onTypeSelection=function(){"0"!==u.action.data1||u.templates?(u.action.data2=void 0,u.action.data4="1"===u.action.data1?0:void 0):v()},u.onAutocreateSelection=function(){"0"===u.action.data2&&(u.action.data4=void 0);u.action.data4||"1"!==u.action.data2||(u.action.data4="phone")},u.onIntegrationAccountSelection=b,u.closeDialog=E,u.onActionLocationChange=function(){u.editAccount||(u.action.data5=void 0,u.action.data6=void 0)}}e.$inject=["$state","$mdDialog","$translate","toasty","actions","action","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditActionDialogController",e)}(),function(){"use strict";function e(e,l,a,n,i,t,d,c,m){var u=this;function s(){var o,r;"voice"===u.trigger.channel?(_.some(u.allConditions.rows,["field","queue"])&&(u.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,m.isAdmin()?c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){u.queues=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(c.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];u.allConditions.rows.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),u.queues=t}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.allConditions.rows,["field","routeId"])&&(u.outboundRoutes||(m.isAdmin()?c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.outboundRoutes,{id:e.resourceId})}),a=null;a=[],u.triggerAllConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),u.outboundRoutes=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<u.outboundRoutes.length;i++)_.some(a,{id:u.outboundRoutes[i].id})&&(u.outboundRoutes[i].canSelect=!1,t.push(u.outboundRoutes[i]));u.outboundRoutes=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.allConditions.rows,["field","agent"])&&(u.agents||(m.isAdmin()?c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.agents,{id:e.resourceId})}),a=null;a=[],u.triggerAllConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),u.agents=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}});for(var i=0;i<u.agents.length;i++)_.some(a,{id:u.agents[i].id})&&(u.agents[i].canSelect=!1,t.push(u.agents[i]));u.agents=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})})))):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,t,n,a,i,s){var o=this;o.calls=i||{rows:[],count:0},o.query={limit:10,page:1},o.channelStatus=s.channelStatusOut,o.onSave=function(e){var n=_.find(o.calls.rows,{channel:e.channel});e.channelstatedesc=e.dialstatus?"up":"ring",n?_.merge(n,e):e.channel&&o.calls.rows.push(e)},o.onRemove=function(e){var n=_.findIndex(o.calls.rows,{channel:e.channel});0<=n&&(o.calls.rows[n].status="hangup");t(function(){o.calls.rows.splice(n,1)},5e3)},a.on("voice_outbound_channel:save",o.onSave),a.on("voice_outbound_channel:remove",o.onRemove),e.$on("$destroy",function(){a.removeAllListeners("voice_outbound_channel:save"),a.removeAllListeners("voice_outbound_channel:remove")})}e.$inject=["$scope","$timeout","api","socket","rpcCalls","helperClasses"],angular.module("app.voice").controller("OutboundCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,n,a,o,t,i,s,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.queues=t?_.keyBy(t.rows?t.rows:[],"name"):{},p.rpcVoiceQueuesChannelsTmp=i?_.keyBy(i.rows?_.filter(i.rows,{type:"inbound"}):[],"uniqueid"):{},p.rpcVoiceQueuesChannels={},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.queryChannels={limit:10,page:1},p.getAvailableAgents=function(){p.availableAgents=null,s.rpc.getAgents().$promise.then(function(e){for(var n=[],t=e?e.rows:[],a=_.filter(t,{online:!0,voicePause:!1,voiceStatus:"idle"}),i=0;i<a.length;i++){var s=_.find(o.rows,["id",a[i].id]);s&&n.push(s)}p.availableAgents=n}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.getSize=function(e){return _.size(e)},p.$onInit=function(){_.forIn(p.rpcVoiceQueuesChannelsTmp,function(e,n){_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[n]=e)})},p.onSave=function(e){"inbound"===e.type&&_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[e.uniqueid]=e)},p.onRemove=function(e){p.rpcVoiceQueuesChannels[e.uniqueid]&&delete p.rpcVoiceQueuesChannels[e.uniqueid]},p.hangup=function(n){return s.rpc.getVoiceQueuesChannelHangup({uniqueid:n}).$promise.then(function(e){d.success({title:"Channel "+n+" properly hangup!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToAgent=function(n,e,t){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e,context:t}).$promise.then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToNumber=function(e,n){var t=a.prompt().title("Which number do you want transfer the call to?").placeholder("Number").targetEvent(e).ok("Ok").cancel("Cancel");return a.show(t).then(function(e){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e}).$promise}).then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){e&&d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},r.on("voice_queue_channel:save",p.onSave),r.on("voice_queue_channel:remove",p.onRemove),e.$on("$destroy",function(){r.removeAllListeners("voice_queue_channel:save"),r.removeAllListeners("voice_queue_channel:remove")})}e.$inject=["$scope","$timeout","$mdDialog","agents","queues","rpcVoiceQueuesChannels","api","socket","helperClasses","toasty","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("QueueCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["total","answered","unmanaged","abandoned","sumHoldTime","sumDuration","sumBillable"];function u(){_.forIn(c.queues,function(e,n){c.rpcQueues[n]&&_.merge(e,_.pick(c.rpcQueues[n],m))})}c.count=a.count,c.queues=a?_.keyBy(a.rows?a.rows:[],"id"):{},c.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},c.userProfile=r,c.userProfileSection=l&&1==l.count?l.rows[0]:null,c.crudPermissions=d.parseCrudPermissions(c.userProfileSection?c.userProfileSection.crudPermissions:null),d.hasRole("admin")?c.query={type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1}:c.query={id:d.getCurrentUser().id,channel:"voice",type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1},c.success=v,c.getQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,d.hasRole("admin")?c.promise=s.voiceQueue.get(c.query,v).$promise:(c.query.id=c.userProfile.id,c.query.section="VoiceQueues",c.promise=s.userProfile.getResources(c.query,v).$promise)},c.onSave=function(e){c.queues[e.id]&&_.merge(c.queues[e.id],_.pick(e,m))},c.$onInit=u,o.onWithoutApply("voice_queue:save",c.onSave),c.interval=n(function(){},999);var p=!0,g=1;function v(e){c.count=e.count,c.queues=e?_.keyBy(e.rows?e.rows:[],"id"):{},u()}e.$watch("vm.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getQueues())}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),c.interval&&n.cancel(c.interval)})}e.$inject=["$scope","$timeout","$interval","queues","rpcQueues","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("QueueParamsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"VoiceQueues":void 0,channel:"voice",type:"inbound",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("VOICE.VOICEQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditVoiceQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:u.queues.rows,realtime:!0,crudPermissions:u.crudPermissions}})},r.onWithoutApply("voice_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&m.updateVoiceQueue(e,n)}),r.on("userVoiceQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.VoiceQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userVoiceQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.VoiceQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:agentconnect",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);if(n){if(!t.agentconnected)return;t.queue?n.talking=!0:n.busy=!0,m.updateBusyCounter(e)}})}),r.on("user:agentcomplete",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(n.talking?n.talking=!1:n.busy&&(n.busy=!1),m.updateBusyCounter(e))})}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"voice")})}),e.$on("$destroy",function(){r.removeAllListeners("voice_queue:save"),r.removeAllListeners("userVoiceQueue:remove"),r.removeAllListeners("userVoiceQueue:save"),r.removeAllListeners("user:agentconnect"),r.removeAllListeners("user:agentcomplete"),r.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.voice").controller("QueuesVoiceRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){var a=this;switch(a.selectedTab=0,t.current.name){case"app.voice.realtime.agents":a.selectedTab=0;break;case"app.voice.realtime.telephones":a.selectedTab=1;break;case"app.voice.realtime.trunks":a.selectedTab=2;break;case"app.voice.realtime.queues":a.selectedTab=3;break;case"app.voice.realtime.queue_calls":a.selectedTab=4;break;case"app.voice.realtime.abandonedcalls":a.selectedTab=5;break;case"app.voice.realtime.queue_params":a.selectedTab=6;break;case"app.voice.realtime.outbound_calls":a.selectedTab=7;break;default:a.selectedTab=0,t.go("app.voice.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.voice.realtime.agents");break;case 1:t.go("app.voice.realtime.telephones");break;case 2:t.go("app.voice.realtime.trunks");break;case 3:t.go("app.voice.realtime.queues");break;case 4:t.go("app.voice.realtime.queue_calls");break;case 5:t.go("app.voice.realtime.abandonedcalls");break;case 6:t.go("app.voice.realtime.queue_params");break;case 7:t.go("app.voice.realtime.outbound_calls");break;default:t.go("app.voice.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.voice").controller("VoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c){var m=this,u=["fullname","internal","state","status"];function p(){_.forIn(m.telephones,function(e,n){m.rpcTelephones[n]&&_.merge(e,_.pick(m.rpcTelephones[n],u))})}m.count=a.count,m.attributes=["fullname","internal","state","status","address"],m.telephones=a?_.keyBy(a.rows?a.rows:[],"id"):{},m.rpcTelephones=i?_.keyBy(i.rows?i.rows:[],"id"):{},m.userProfile=l,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={fields:"id,fullname,internal",role:"telephone",sort:"-updatedAt",limit:10,page:1},m.statusClass=r.status,m.stateClass=r.state,m.success=h,m.$onInit=p,m.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},m.getTelephones=function(){m.query.offset=(m.query.page-1)*m.query.limit,c.hasRole("admin")?m.promise=s.user.get(m.query,h).$promise:(m.query.id=m.userProfile.id,m.query.section="Telephones",m.promise=s.userProfile.getResources(m.query,h).$promise)},m.onSave=function(e){m.telephones[e.id]&&_.merge(m.telephones[e.id],_.pick(e,u))},o.on("telephone:save",m.onSave);var g=!0,v=1;function h(e){m.telephones=e?_.keyBy(e.rows?e.rows:[],"id"):{},p()}e.$watch("vm.query.filter",function(e,n){g?t(function(){g=!1}):(n||(v=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=v),m.getTelephones())}),e.$on("$destroy",function(){o.removeAllListeners("telephone:save")})}e.$inject=["$scope","$timeout","$mdDialog","telephones","rpcTelephones","api","socket","helperClasses","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("TelephonesVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m){var u=this,p=["status","stateRegistry","registry","host","port","internal","state","status"];function g(){for(var e,n=0;n<u.trunks.length;n+=1)0<=(e=_.findIndex(u.rpcTrunks,["id",u.trunks[n].id]))&&_.merge(u.trunks[n],_.pick(u.rpcTrunks[e],p))}function v(e,n,t){0<=n&&_.merge(e[n],_.pick(t,p))}u.currentUser=m.getCurrentUser(),u.count=a.count,u.trunks=a?a.rows:[],u.rpcTrunks=i&&i.rows?i.rows:[],u.query={fields:"id,name",active:!0,sort:"-updatedAt",limit:10,page:1},u.statusClass=r.status,u.stateClass=r.state,u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.success=b,u.$onInit=g,u.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},u.getTrunks=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=s.trunk.get(u.query,b).$promise:(u.query.id=u.userProfile.id,u.query.section="Trunks",u.promise=s.userProfile.getResources(u.query,b).$promise)},u.goToTrunk=function(e,n){l.go("app.tools.trunks.edit",{id:n.id})},u.onSave=function(e){var n=_.findIndex(u.trunks,["id",e.id]),t=_.findIndex(u.rpcTrunks,["id",e.id]);v(u.trunks,n,e),v(u.rpcTrunks,t,e)},o.on("trunk:save",u.onSave);var h=!0,f=1;function b(e){u.count=e.count,u.trunks=e&&e.rows?e.rows:[],g()}e.$watch("vm.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=f),u.getTrunks())}),e.$on("$destroy",function(){o.removeAllListeners("trunk:save")})}e.$inject=["$scope","$timeout","$mdDialog","trunks","rpcTrunks","api","socket","helperClasses","$state","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("TrunksVoiceRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEMAIL",g.voicemail=angular.copy(l),g.voicemails=r,g.newVoicemail=!1,g.voicemail||(g.voicemail={attach:"no"},g.title="VOICE.NEW_VOICEMAIL",g.newVoicemail=!0),g.addNewVoicemail=function(){g.errors=[],d.voiceMail.save(g.voicemail).$promise.then(function(e){g.voicemails.unshift(e.toJSON()),o.success({title:"Voicemail properly created",msg:g.voicemail.name?g.voicemail.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoicemail=function(){g.errors=[],d.voiceMail.update({id:g.voicemail.id},g.voicemail).$promise.then(function(e){var n=_.find(g.voicemails,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Voicemail properly saved!",msg:g.voicemail.name?g.voicemail.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoicemail=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voicemail will be deleted.").ariaLabel("Delete Voicemail").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMail.delete({id:g.voicemail.id}).$promise.then(function(){_.remove(g.voicemails,{id:g.voicemail.id}),o.success({title:"Voicemail properly deleted!",msg:(g.voicemail.name||"voicemail")+" has been deleted!"}),v(g.voicemail)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voicemails","voicemail","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoicemailDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.voicemailMessages=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceMail.getMessages(m.query,u).$promise}function g(e){d.voiceMailMessage.delete({id:e.id}).$promise.then(function(){_.remove(m.voicemailMessages.rows,{id:e.id}),m.voicemailMessages.count-=1,m.voicemailMessages.rows.length||p(),l.success({title:"Message deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceMail"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMail",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.voicemail={},m.voicemailMessages={count:0,rows:[]},m.selectedVoicemailMessages=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,callerid,duration,audio,stamp,msg_id",sort:"-stamp",limit:10,page:1},m.init=function(e,n){m.voicemail=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.id=m.voicemail.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the message?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("message #")+e.id||"message")+"</b> will be deleted.").ariaLabel("delete message").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.voiceMailMessageDownload=function(s,e,n){return d.voiceMailMessage.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="message"+s.id,a=new Blob(n,{type:e.type});t=s.msg_id+".wav";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getVoicemailMessages=p,m.createOrEditVoicemailMessage=function(e,n){o.show({controller:"CreateOrEditMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicemails/edit/messages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicemail:m.voicemail,message:n,messages:m.voicemailMessages.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedVoicemailMessages=function(){var e=angular.copy(m.selectedVoicemailMessages);return m.selectedVoicemailMessages=[],e},m.deleteVoicemailMessage=g,m.deleteSelectedVoicemailMessages=function(e){var n=o.confirm().title("Are you sure want to delete the selected messages?").htmlContent("<b>"+m.selectedVoicemailMessages.length+" selected</b> will be deleted.").ariaLabel("delete messages").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedVoicemailMessages.forEach(function(e){g(e)}),m.selectedVoicemailMessages=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.voice").controller("VoicemailMessagesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.voicemail=c||e.params.voicemail||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoVoicemails=function(){e.go("app.voice.voicemails",{},{reload:"app.voice.voicemails"})},u.saveVoicemail=function(){r.voiceMail.update({id:u.voicemail.id},u.voicemail).$promise.then(function(){l.success({title:"Voicemail updated!",msg:u.voicemail.name?u.voicemail.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMail",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.voicemail&&(t=_.find(u.contexts,{name:u.voicemail.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voicemail","userProfileSection"],angular.module("app.voice").controller("VoicemailController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voicemails=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voicemails",f.listOrder="",f.listOrderAsc=null,f.selectedVoicemails=[],f.query={fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,page:1},f.arrayattach=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayenvelope=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydelete=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.voicemails.edit",{id:e.id,voicemail:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voicemail")+"?").htmlContent("<b>"+(e.name||"voicemail")+"</b> will be deleted.").ariaLabel("delete voicemail").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVoicemails=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceMail.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Voicemails",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVoicemail=function(e,n){i.show({controller:"CreateOrEditVoicemailDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicemails/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicemail:n,voicemails:f.voicemails.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoicemail=y,f.exportSelectedVoicemails=function(){var e=angular.copy(f.selectedVoicemails);return f.selectedVoicemails=[],e},f.deleteSelectedVoicemails=function(e){var n=i.confirm().title("Are you sure want to delete the selected voicemails?").htmlContent("<b>"+f.selectedVoicemails.length+" selected</b> will be deleted.").ariaLabel("delete Voicemails").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoicemails.forEach(function(e){y(e)}),f.selectedVoicemails=[]})},f.deselectVoicemails=function(){f.selectedVoicemails=[]},f.selectAllVoicemails=function(){f.selectedVoicemails=f.voicemails.rows};var b=!0,A=1;function E(e){f.voicemails=e||{count:0,rows:[]}}function y(e){m.voiceMail.delete({id:e.id}).$promise.then(function(){_.remove(f.voicemails.rows,{id:e.id}),f.voicemails.count-=1,f.voicemails.rows.length||f.getVoicemails(),p.success({title:_.startCase("Voicemail")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceMail"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceMail",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoicemails())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voicemails","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoicemailsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEPREFIX",g.voicePrefix=angular.copy(l),g.voicePrefixes=r,g.newvoicePrefix=!1,g.voicePrefix||(g.voicePrefix={},g.title="VOICE.NEW_VOICEPREFIX",g.newvoicePrefix=!0),g.addNewvoicePrefix=function(){g.errors=[],d.voicePrefix.save(g.voicePrefix).$promise.then(function(e){g.voicePrefixes.unshift(e.toJSON()),o.success({title:"voicePrefix properly created",msg:g.voicePrefix.name?g.voicePrefix.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savevoicePrefix=function(){g.errors=[],d.voicePrefix.update({id:g.voicePrefix.id},g.voicePrefix).$promise.then(function(e){var n=_.find(g.voicePrefixes,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"voicePrefix properly saved!",msg:g.voicePrefix.name?g.voicePrefix.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletevoicePrefix=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voicePrefix will be deleted.").ariaLabel("Delete voicePrefix").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voicePrefix.delete({id:g.voicePrefix.id}).$promise.then(function(){_.remove(g.voicePrefixes,{id:g.voicePrefix.id}),o.success({title:"voicePrefix properly deleted!",msg:(g.voicePrefix.name||"voicePrefix")+" has been deleted!"}),v(g.voicePrefix)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){g.outboundRoutes=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){g.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.outboundRoutes,{id:e.resourceId})}),t=null;if(g.voicePrefix&&(t=_.find(g.outboundRoutes,{id:Number(g.voicePrefix.VoiceExtensionId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.outboundRoutes,{id:t.id});a.canSelect=!1,n.push(a)}g.outboundRoutes=n})}else{var t=[],a=null;g.voicePrefix&&(a=_.find(g.outboundRoutes,{id:Number(g.voicePrefix.VoiceExtensionId)}));for(var i=0;i<g.outboundRoutes.length;i++)a&&g.outboundRoutes[i].id===a.id&&(g.outboundRoutes[i].canSelect=!1,t.push(g.outboundRoutes[i]));g.outboundRoutes=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voicePrefixes","voicePrefix","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditvoicePrefixDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.voicePrefix.getAgents({id:c.voicePrefix.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UservoicePrefix?"penalty "+e.UservoicePrefix.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.voicePrefix=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.removeAgents({id:c.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.addAgents({id:c.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("VOICE.ALL_AGENTS"),labelSelected:r.instant("VOICE.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","voicePrefix","voicePrefixes","realtime","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("voicePrefixagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.voicePrefix.getTeams({id:l.voicePrefix.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.voicePrefix=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("VOICE.ALL_TEAMS"),labelSelected:t.instant("VOICE.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.removeTeams({id:l.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.addTeams({id:l.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","voicePrefix","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("voicePrefixteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voicePrefixes=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voicePrefixes",f.listOrder="",f.listOrderAsc=null,f.selectedVoicePrefixes=[],f.query={fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditvoicePrefixDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"voicePrefixagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes?f.voicePrefixes.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.teamadddialog=function(e,n){i.show({controller:"voicePrefixteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes?f.voicePrefixes.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voicePrefix")+"?").htmlContent("<b>"+(e.name||"voicePrefix")+"</b> will be deleted.").ariaLabel("delete voicePrefix").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVoicePrefixes=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voicePrefix.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VoicePrefixes",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditvoicePrefix=function(e,n){i.show({controller:"CreateOrEditvoicePrefixDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicePrefix:n,voicePrefixes:f.voicePrefixes.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletevoicePrefix=y,f.exportSelectedVoicePrefixes=function(){var e=angular.copy(f.selectedVoicePrefixes);return f.selectedVoicePrefixes=[],e},f.deleteSelectedVoicePrefixes=function(e){var n=i.confirm().title("Are you sure want to delete the selected voicePrefixes?").htmlContent("<b>"+f.selectedVoicePrefixes.length+" selected</b> will be deleted.").ariaLabel("delete voicePrefixs").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoicePrefixes.forEach(function(e){y(e)}),f.selectedVoicePrefixes=[]})},f.deselectVoicePrefixes=function(){f.selectedVoicePrefixes=[]},f.selectAllVoicePrefixes=function(){f.selectedVoicePrefixes=f.voicePrefixes.rows},g.hasRole("admin")?m.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){f.outboundRoutes=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){f.outboundRoutes=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.outboundRoutes,{id:e.resourceId})}),t=null;if(f.voicePrefix&&(t=_.find(f.outboundRoutes,{id:Number(f.voicePrefix.VoiceExtensionId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.outboundRoutes,{id:t.id});a.canSelect=!1,n.push(a)}f.outboundRoutes=n})}else{var t=[],a=null;f.voicePrefix&&(a=_.find(f.outboundRoutes,{id:Number(f.voicePrefix.VoiceExtensionId)}));for(var i=0;i<f.outboundRoutes.length;i++)a&&f.outboundRoutes[i].id===a.id&&(f.outboundRoutes[i].canSelect=!1,t.push(f.outboundRoutes[i]));f.outboundRoutes=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.voicePrefixes=e||{count:0,rows:[]}}function y(e){m.voicePrefix.delete({id:e.id}).$promise.then(function(){_.remove(f.voicePrefixes.rows,{id:e.id}),f.voicePrefixes.count-=1,f.voicePrefixes.rows.length||f.getVoicePrefixes(),p.success({title:_.startCase("voicePrefix")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoicePrefix"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoicePrefix",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoicePrefixes())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voicePrefixes","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoicePrefixesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEQUEUE",g.voiceQueue=angular.copy(l),g.voiceQueues=r,g.newVoiceQueue=!1,g.voiceQueue||(g.voiceQueue={type:"inbound",strategy:"ringall",timeout:15,retry:2,random_periodic_announce:"no",announce_holdtime:"no",announce_position:"no",reportholdtime:"no",autopause:"no",ringinuse:"no",timeoutrestart:"no",setinterfacevar:"no",setqueuevar:"no",setqueueentryvar:"no"},g.title="VOICE.NEW_VOICEQUEUE",g.newVoiceQueue=!0),g.addNewVoiceQueue=function(){g.errors=[],d.voiceQueue.save(g.voiceQueue).$promise.then(function(e){g.voiceQueues.unshift(e.toJSON()),o.success({title:"VoiceQueue properly created",msg:g.voiceQueue.name?g.voiceQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoiceQueue=function(){g.errors=[],d.voiceQueue.update({id:g.voiceQueue.id},g.voiceQueue).$promise.then(function(e){var n=_.find(g.voiceQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VoiceQueue properly saved!",msg:g.voiceQueue.name?g.voiceQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoiceQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voiceQueue will be deleted.").ariaLabel("Delete VoiceQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceQueue.delete({id:g.voiceQueue.id}).$promise.then(function(){_.remove(g.voiceQueues,{id:g.voiceQueue.id}),o.success({title:"VoiceQueue properly deleted!",msg:(g.voiceQueue.name||"voiceQueue")+" has been deleted!"}),v(g.voiceQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voiceQueues","voiceQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoiceQueueDialogController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.voiceQueue.getAgents({id:c.voiceQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.voiceQueue=n,c.crudPermissions=r,c.penalty=0,c.realtime=i,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.voiceQueue.removeAgents({id:c.voiceQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else{for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.voiceQueue.addAgents({id:c.voiceQueue.id,ids:_.map(o,"id"),penalty:_.trim(s,"penalty "),realtime:c.realtime||!1}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("VOICE.ALL_AGENTS"),labelSelected:s.instant("VOICE.SELECTED_AGENTS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","voiceQueue","voiceQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("VoiceQueueagentaddController",e)}(),function(){"use strict";function e(e,i,a,s,n,t,o,r){var l=this;function d(){return i(function(t,n){return i(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:i(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),i(function(n,t){return s.voiceQueue.getTeams({id:l.voiceQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.voiceQueue=n,l.crudPermissions=r,l.penalty=0,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"penalty",labelAll:t.instant("VOICE.ALL_TEAMS"),labelSelected:t.instant("VOICE.SELECTED_TEAMS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+l.penalty});var t=_.xorWith(l.startingSelectedItems,l.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):i(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceWith(l.selectedItems,l.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,i(function(e,n){_.isEmpty(t)?e():s.voiceQueue.removeTeams({id:l.voiceQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return a=n,i(function(e,n){if(!_.isEmpty(a)){var t=_.map(a,function(e){return{id:e.id,penalty:_.trim(e.penalty,"penalty ")}});return s.voiceQueue.addTeams({id:l.voiceQueue.id,teams:t}).$promise.then(function(){e()}).catch(function(e){n(e)})}e()});var a}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),a.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","voiceQueue","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("VoiceQueueteamaddController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.voiceQueue=c||t.params.voiceQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.teamadddialog=function(e,n){a.show({controller:"VoiceQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:u.voiceQueues?u.voiceQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){a.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:u.voiceQueues?u.voiceQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.queues",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.queues",{})}},u.alert=l.info,u.gotoVoiceQueues=function(){t.go("app.voice.voiceQueues",{},{reload:"app.voice.voiceQueues"})},u.saveVoiceQueue=function(){r.voiceQueue.update({id:u.voiceQueue.id},u.voiceQueue).$promise.then(function(){l.success({title:"VoiceQueue updated!",msg:u.voiceQueue.name?u.voiceQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MUSICONHOLDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:407}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.musiconholds,{id:e.resourceId})}),t=null;if(u.voiceQueue&&(t=_.find(u.musiconholds,{name:u.voiceQueue.musiconhold})),t&&!_.some(n,["id",t.id])){var a=_.find(u.musiconholds,{id:t.id});a.canSelect=!1,n.push(a)}u.musiconholds=n}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true",defaultEntry:1}).$promise.then(function(e){u.musiconholds=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmusiconholds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.sound.get({fields:"id,name,save_name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.sounds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.sound.get({fields:"id,name,save_name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.sounds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.sounds,{id:e.resourceId})});u.sounds.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.sounds=n})}else u.sounds=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.pauses,{id:e.resourceId})});u.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.pauses=n})}else u.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voiceQueue","userProfileSection"],angular.module("app.voice").controller("VoiceQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voiceQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voiceQueues",f.listOrder="",f.listOrderAsc=null,f.selectedVoiceQueues=[],f.query={fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Ringall",value:"'ringall'"},{option:"Round Robin Memory",value:"'rrmemory'"},{option:"Least Recent",value:"'leastrecent'"},{option:"Fewest Calls",value:"'fewestcalls'"},{option:"Random",value:"'random'"},{option:"Linear",value:"'linear'"},{option:"Weight Random",value:"'wrandom'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayjoinempty=_.keyBy([{option:"no",value:"'no'",disabled:"vm.voiceQueue.joinempty.length === 1  && vm.voiceQueue.joinempty[0] === 'no'"},{option:"yes",value:"'yes'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'yes'"},{option:"strict",value:"'strict'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'strict'"},{option:"loose",value:"'loose'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'loose'"},{option:"paused",value:"'paused'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'paused'"},{option:"penalty",value:"'penalty'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'penalty'"},{option:"inuse",value:"'inuse'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'inuse'"},{option:"ringing",value:"'ringing'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'ringing'"},{option:"unavailable",value:"'unavailable'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'unavailable'"},{option:"invalid",value:"'invalid'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'invalid'"},{option:"unknown",value:"'unknown'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'unknown'"},{option:"wrapup",value:"'wrapup'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'wrapup'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayleavewhenempty=_.keyBy([{option:"no",value:"'no'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'no'"},{option:"yes",value:"'yes'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'yes'"},{option:"strict",value:"'strict'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'strict'"},{option:"loose",value:"'loose'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'loose'"},{option:"paused",value:"'paused'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'paused'"},{option:"penalty",value:"'penalty'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'penalty'"},{option:"inuse",value:"'inuse'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'inuse'"},{option:"ringing",value:"'ringing'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'ringing'"},{option:"unavailable",value:"'unavailable'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'unavailable'"},{option:"invalid",value:"'invalid'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'invalid'"},{option:"unknown",value:"'unknown'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'unknown'"},{option:"wrapup",value:"'wrapup'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'wrapup'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayrandom_periodic_announce=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayannounce_holdtime=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Once",value:"'once'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayannounce_position=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Limit",value:"'limit'"},{option:"More",value:"'more'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayreportholdtime=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayautopause=_.keyBy([{option:"Yes",value:"'all'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayringinuse=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytimeoutrestart=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymonitor_format=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'wav49'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetinterfacevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueuevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueueentryvar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.voiceQueues.edit",{id:e.id,voiceQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"VoiceQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:f.voiceQueues?f.voiceQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:f.voiceQueues?f.voiceQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voiceQueue")+"?").htmlContent("<b>"+(e.name||"voiceQueue")+"</b> will be deleted.").ariaLabel("delete voiceQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.queues",{})}},f.success=E,f.getVoiceQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VoiceQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVoiceQueue=function(e,n){i.show({controller:"CreateOrEditVoiceQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:f.voiceQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoiceQueue=y,f.exportSelectedVoiceQueues=function(){var e=angular.copy(f.selectedVoiceQueues);return f.selectedVoiceQueues=[],e},f.deleteSelectedVoiceQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceQueues?").htmlContent("<b>"+f.selectedVoiceQueues.length+" selected</b> will be deleted.").ariaLabel("delete VoiceQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoiceQueues.forEach(function(e){y(e)}),f.selectedVoiceQueues=[]})},f.deselectVoiceQueues=function(){f.selectedVoiceQueues=[]},f.selectAllVoiceQueues=function(){f.selectedVoiceQueues=f.voiceQueues.rows};var b=!0,A=1;function E(e){f.voiceQueues=e||{count:0,rows:[]}}function y(e){m.voiceQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.voiceQueues.rows,{id:e.id}),f.voiceQueues.count-=1,f.voiceQueues.rows.length||f.getVoiceQueues(),p.success({title:_.startCase("VoiceQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoiceQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoiceQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICERECORDING",g.voiceRecording=angular.copy(l),g.voiceRecordings=r,g.newVoiceRecording=!1,g.voiceRecording||(g.voiceRecording={},g.title="VOICE.NEW_VOICERECORDING",g.newVoiceRecording=!0),g.addNewVoiceRecording=function(){g.errors=[],d.voiceRecording.save(g.voiceRecording).$promise.then(function(e){g.voiceRecordings.unshift(e.toJSON()),o.success({title:"VoiceRecording properly created",msg:g.voiceRecording.name?g.voiceRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoiceRecording=function(){g.errors=[],d.voiceRecording.update({id:g.voiceRecording.id},g.voiceRecording).$promise.then(function(e){var n=_.find(g.voiceRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VoiceRecording properly saved!",msg:g.voiceRecording.name?g.voiceRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoiceRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voiceRecording will be deleted.").ariaLabel("Delete VoiceRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceRecording.delete({id:g.voiceRecording.id}).$promise.then(function(){_.remove(g.voiceRecordings,{id:g.voiceRecording.id}),o.success({title:"VoiceRecording properly deleted!",msg:(g.voiceRecording.name||"voiceRecording")+" has been deleted!"}),v(g.voiceRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voiceRecordings","voiceRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoiceRecordingDialogController",e)}(),function(){"use strict";function e(e,n){var t=this;t.voiceRecording={},t.init=function(e){t.voiceRecording=e}}e.$inject=["api","toasty"],angular.module("app.voice").controller("VoiceRecordingSentimentStatisticsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.voiceRecording=c||e.params.voiceRecording||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoVoiceRecordings=function(){e.go("app.voice.voiceRecordings",{},{reload:"app.voice.voiceRecordings"})},u.saveVoiceRecording=function(){r.voiceRecording.update({id:u.voiceRecording.id},u.voiceRecording).$promise.then(function(){l.success({title:"VoiceRecording updated!",msg:u.voiceRecording.name?u.voiceRecording.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voiceRecording","userProfileSection"],angular.module("app.voice").controller("VoiceRecordingController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,l,r,d,c,m,u,p,g,v,h){var f=this;function b(n,e){return m.voiceRecording.runTranscribe({id:n.id,runSentiment:!1}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING"),msg:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING")+" succeded!"}),n.transcribeStatus=e.transcribeStatus}).catch(function(e){p.error({title:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}function A(n,e){return m.voiceRecording.runTranscribe({id:n.id,runSentiment:!0}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING"),msg:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING")+" succeded!"}),n.transcribeStatus=e.transcribeStatus}).catch(function(e){p.error({title:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}function E(e,n){return m.voiceRecording.runTranscribe({id:e.id,runSentiment:!0}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING"),msg:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING")+" succeded!"})}).catch(function(e){p.error({title:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voiceRecordings=r||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voiceRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedVoiceRecordings=[],f.query={fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:"@msUtils.firstLastDayMonth()",limit:10,page:1},f.query.createdAt=u.firstLastDayMonth(),f.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE_RANGE"}],f.editstate=function(e,n){t.go("app.voice.voiceRecordings.edit",{id:e.id,voiceRecording:e,crudPermissions:f.crudPermissions})},f.runtranscriberuntranscribesentiment=b,f.runtranscribesentimentruntranscribesentiment=A,f.runsentimentruntranscribesentiment=E,f.downloadtranscribefile2=function(s,e){var t=!1,n=_.isNil(s.format)?s.value.substring(s.value.lastIndexOf(".")):s.format;t=".mp4"===n;-1<s.value.lastIndexOf("/")?s.value.substring(s.value.lastIndexOf("/")+1):-1<s.value.lastIndexOf("\\")?s.value.substring(s.value.lastIndexOf("\\")+1):s.value;return m.voiceRecording.downloadTranscribe({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid+".txt";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.downloadfile2=function(r,e){var t=!1,n=_.isNil(r.format)?r.value.substring(r.value.lastIndexOf(".")):r.format;t=".mp4"===n;-1<r.value.lastIndexOf("/")?r.value.substring(r.value.lastIndexOf("/")+1):-1<r.value.lastIndexOf("\\")?r.value.substring(r.value.lastIndexOf("\\")+1):r.value;return m.voiceRecording.download({id:r.id}).$promise.then(function(e){var n,t,a=[e.buffer],i="download",s=new Blob(a,{type:e.type});n=r.value,t=-1<n.lastIndexOf("/")?n.substring(n.lastIndexOf("/")+1):-1<n.lastIndexOf("\\")?n.substring(n.lastIndexOf("\\")+1):n,i=(t=t.substring(0,t.lastIndexOf(".")))+r.format;var o=window.document.createElement("a");o.setAttribute("href",URL.createObjectURL(s)),o.setAttribute("download",i),document.body.appendChild(o),o.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voiceRecording")+"?").htmlContent("<b>"+(e.name||"voiceRecording")+"</b> will be deleted.").ariaLabel("delete voiceRecording").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){I(e)},function(){console.log("CANCEL")})},f.success=T,f.getVoiceRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceRecording.get(f.query,T).$promise:(f.query.id=f.userProfile.id,f.query.section="VoiceRecordings",f.promise=m.userProfile.getResources(f.query,T).$promise)},f.createOrEditVoiceRecording=function(e,n){i.show({controller:"CreateOrEditVoiceRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceRecordings/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceRecording:n,voiceRecordings:f.voiceRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoiceRecording=I,f.exportSelectedVoiceRecordings=function(){var e=angular.copy(f.selectedVoiceRecordings);return f.selectedVoiceRecordings=[],e},f.deleteSelectedVoiceRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceRecordings?").htmlContent("<b>"+f.selectedVoiceRecordings.length+" selected</b> will be deleted.").ariaLabel("delete VoiceRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoiceRecordings.forEach(function(e){I(e)}),f.selectedVoiceRecordings=[]})},f.deselectVoiceRecordings=function(){f.selectedVoiceRecordings=[]},f.selectAllVoiceRecordings=function(){f.selectedVoiceRecordings=f.voiceRecordings.rows},f.runtranscribeSelectedVoiceRecordings=function(n){f.selectedVoiceRecordings.forEach(function(e){b(e,n)}),f.selectedVoiceRecordings=[]},f.runtranscribesentimentSelectedVoiceRecordings=function(n){f.selectedVoiceRecordings.forEach(function(e){A(e,n)}),f.selectedVoiceRecordings=[]},f.runsentimentSelectedVoiceRecordings=function(n){f.selectedVoiceRecordings.forEach(function(e){E(e,n)}),f.selectedVoiceRecordings=[]};var y=!0,S=1;function T(e){f.voiceRecordings=e||{count:0,rows:[]}}function I(e){m.voiceRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.voiceRecordings.rows,{id:e.id}),f.voiceRecordings.count-=1,f.voiceRecordings.rows.length||f.getVoiceRecordings(),p.success({title:_.startCase("VoiceRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){y?o(function(){y=!1}):(n||(S=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=S),f.getVoiceRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoiceRecordingsController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"WhatsappQueues":void 0,channel:"whatsapp",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("WHATSAPP.WHATSAPPQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditWhatsappQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("whatsapp_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userWhatsappQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.WhatsappQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userWhatsappQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.WhatsappQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"whatsapp")})}),e.$on("$destroy",function(){r.removeAllListeners("whatsapp_queue:save"),r.removeAllListeners("userWhatsappQueue:remove"),r.removeAllListeners("userWhatsappQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.whatsapp").controller("QueuesWhatsappRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.whatsapp.realtime.agents":this.selectedTab=0;break;case"app.whatsapp.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.whatsapp.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.whatsapp.realtime.agents");break;case 1:t.go("app.whatsapp.realtime.queues");break;default:t.go("app.whatsapp.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.whatsapp").controller("WhatsappRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){"twilio"===g.whatsappAccount.type&&(g.whatsappAccount.baseUrl=null)}function h(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPACCOUNT",g.whatsappAccount=angular.copy(l),g.whatsappAccounts=r,g.newWhatsappAccount=!1,g.whatsappAccount||(g.whatsappAccount={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),type:"twilio",notificationSound:!0,queueTransferTimeout:300,waitForTheAssignedAgent:10,agentTransferTimeout:300},g.title="WHATSAPP.NEW_WHATSAPPACCOUNT",g.newWhatsappAccount=!0),n.params.id&&(g.whatsappAccount.WhatsappAccountId=n.params.id),g.addNewWhatsappAccount=function(){g.errors=[],v(),d.whatsappAccount.save(g.whatsappAccount).$promise.then(function(e){g.whatsappAccounts.unshift(e.toJSON()),o.success({title:"WhatsappAccount properly created",msg:g.whatsappAccount.name?g.whatsappAccount.name+" has been created!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappAccount=function(){g.errors=[],v(),d.whatsappAccount.update({id:g.whatsappAccount.id},g.whatsappAccount).$promise.then(function(e){var n=_.find(g.whatsappAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"WhatsappAccount properly saved!",msg:g.whatsappAccount.name?g.whatsappAccount.name+" has been saved!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappAccount will be deleted.").ariaLabel("Delete WhatsappAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.whatsappAccount.delete({id:g.whatsappAccount.id}).$promise.then(function(){_.remove(g.whatsappAccounts,{id:g.whatsappAccount.id}),o.success({title:"WhatsappAccount properly deleted!",msg:(g.whatsappAccount.name||"whatsappAccount")+" has been deleted!"}),h(g.whatsappAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=h,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.whatsappAccount&&(t=_.find(g.lists,{id:Number(g.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.whatsappAccount&&(a=_.find(g.lists,{id:Number(g.whatsappAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){g.pauses=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){g.pauses=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.pauses,{id:e.resourceId})});g.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.pauses=n})}else g.pauses=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappAccounts","whatsappAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.whatsappAccountApps.rows.length){var t=r.whatsappAccountApps.rows[n]?r.whatsappAccountApps.rows[n]:r.whatsappAccountApps.rows[0];i.show({controller:"EditWhatsappAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccountApp:t,whatsappAccount:r.whatsappAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.whatsappAccountApps.rows[n]=e:r.whatsappAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.whatsappAccountApps.rows.length;t++,0){var a=r.whatsappAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.whatsappAccount.context,a.exten=r.whatsappAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.whatsappAccount.addApplications({id:r.whatsappAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.whatsappAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.whatsappAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.whatsappAccount={},r.whatsappAccountApps={count:0,rows:[]},r.selectedWhatsappAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"WhatsappQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"whatsappQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:2102}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.whatsappAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getWhatsappAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.whatsappAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getWhatsappAccountApps=function(){r.promise=o.whatsappAccount.getApplications(r.query,t).$promise},r.editWhatsappAccountApp=n,r.editInterval=function(e,n){if(r.whatsappAccountApps.rows.length){var t=r.whatsappAccountApps.rows[n]?r.whatsappAccountApps.rows[n]:r.whatsappAccountApps.rows[0];i.show({controller:"EditWhatsappAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteWhatsappAccountApp=function(e){_.remove(r.whatsappAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedWhatsappAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedWhatsappAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedWhatsappAccountApps.forEach(function(e){_.remove(r.whatsappAccountApps.rows,{id:e.id})}),r.selectedWhatsappAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappAccount.getAgents({id:c.whatsappAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserWhatsappAccount?"penalty "+e.UserWhatsappAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.whatsappAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappAccount.removeAgents({id:c.whatsappAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappAccount.addAgents({id:c.whatsappAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("WHATSAPP.ALL_AGENTS"),labelSelected:r.instant("WHATSAPP.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","whatsappAccount","whatsappAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditWhatsappAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("whatsapp")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.whatsappQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.whatsappQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:2102}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.whatsappAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.whatsappAccountInteractions.rows.length;n+=1){var t=m.whatsappAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.whatsappInteraction.get(m.query,u).$promise}function g(e){d.whatsappInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.whatsappAccountInteractions.rows,{id:e.id}),m.whatsappAccountInteractions.count-=1,m.whatsappAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.whatsappAccount={},m.whatsappAccountInteractions={count:0,rows:[]},m.selectedWhatsappAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.whatsappAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.WhatsappAccountId=m.whatsappAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.whatsappInteractionDownload=function(s,e,n){return d.whatsappInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="whatsapp-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getWhatsappAccountInteractions=p,m.createOrEditWhatsappAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:m.whatsappAccount,interaction:n,interactions:m.whatsappAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spywhatsappInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"whatsapp",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"whatsapp.whatsappAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||WhatsappAccountId:=$eq["+m.whatsappAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedWhatsappAccountInteractions=function(){var e=angular.copy(m.selectedWhatsappAccountInteractions);return m.selectedWhatsappAccountInteractions=[],e},m.deleteWhatsappAccountInteraction=g,m.deleteSelectedWhatsappAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedWhatsappAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedWhatsappAccountInteractions.forEach(function(e){g(e)}),m.selectedWhatsappAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.whatsappAccount=c||e.params.whatsappAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.baseUrl=[{name:"US Production",url:"https://us1.whatsapp.api.sinch.com"},{name:"EU Production",url:"https://eu1.whatsapp.api.sinch.com"}],p.agentadddialog=function(e,n){t.show({controller:"WhatsappAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappAccount:e,whatsappAccounts:p.whatsappAccounts?p.whatsappAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoWhatsappAccounts=function(){e.go("app.whatsapp.whatsappAccounts",{},{reload:"app.whatsapp.whatsappAccounts"})},p.saveWhatsappAccount=function(){"twilio"===p.whatsappAccount.type&&(p.whatsappAccount.baseUrl=null);r.whatsappAccount.update({id:p.whatsappAccount.id},p.whatsappAccount).$promise.then(function(){l.success({title:"WhatsappAccount updated!",msg:p.whatsappAccount.name?p.whatsappAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.whatsappAccount&&(t=_.find(p.lists,{id:Number(p.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.whatsappAccount&&(a=_.find(p.lists,{id:Number(p.whatsappAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","whatsappAccount","userProfile","userProfileSection"],angular.module("app.whatsapp").controller("WhatsappAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.whatsappAccountWhatsappCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.whatsappAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.whatsappAccountWhatsappCannedAnswers.rows,{id:e.id}),m.whatsappAccountWhatsappCannedAnswers.count-=1,m.whatsappAccountWhatsappCannedAnswers.rows.length||p(),l.success({title:"WhatsappCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.whatsappAccount={},m.whatsappAccountWhatsappCannedAnswers={count:0,rows:[]},m.selectedWhatsappAccountWhatsappCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.whatsappAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.WhatsappAccountId=m.whatsappAccount.id,m.query.id=m.whatsappAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the whatsappCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("whatsappCannedAnswer #")+e.id||"whatsappCannedAnswer")+"</b> will be deleted.").ariaLabel("delete whatsappCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getWhatsappAccountWhatsappCannedAnswers=p,m.createOrEditWhatsappAccountWhatsappCannedAnswer=function(e,n){o.show({controller:"CreateOrEditWhatsappCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/whatsappCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:m.whatsappAccount,whatsappCannedAnswer:n,whatsappCannedAnswers:m.whatsappAccountWhatsappCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedWhatsappAccountWhatsappCannedAnswers=function(){var e=angular.copy(m.selectedWhatsappAccountWhatsappCannedAnswers);return m.selectedWhatsappAccountWhatsappCannedAnswers=[],e},m.deleteWhatsappAccountWhatsappCannedAnswer=g,m.deleteSelectedWhatsappAccountWhatsappCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected whatsappCannedAnswers?").htmlContent("<b>"+m.selectedWhatsappAccountWhatsappCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete whatsappCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedWhatsappAccountWhatsappCannedAnswers.forEach(function(e){g(e)}),m.selectedWhatsappAccountWhatsappCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountWhatsappCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPCANNEDANSWER",g.whatsappCannedAnswer=angular.copy(l),g.whatsappCannedAnswers=r,g.newWhatsappCannedAnswer=!1,g.whatsappCannedAnswer||(g.whatsappCannedAnswer={},g.title="WHATSAPP.NEW_WHATSAPPCANNEDANSWER",g.newWhatsappCannedAnswer=!0),n.params.id&&(g.whatsappCannedAnswer.WhatsappAccountId=n.params.id),g.addNewWhatsappCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.whatsappCannedAnswer).$promise.then(function(e){g.whatsappCannedAnswers.unshift(e.toJSON()),o.success({title:"WhatsappCannedAnswer properly created",msg:g.whatsappCannedAnswer.name?g.whatsappCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.whatsappCannedAnswer.id},g.whatsappCannedAnswer).$promise.then(function(e){var n=_.find(g.whatsappCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"WhatsappCannedAnswer properly saved!",msg:g.whatsappCannedAnswer.name?g.whatsappCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappCannedAnswer will be deleted.").ariaLabel("Delete WhatsappCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.whatsappCannedAnswer.id}).$promise.then(function(){_.remove(g.whatsappCannedAnswers,{id:g.whatsappCannedAnswer.id}),o.success({title:"WhatsappCannedAnswer properly deleted!",msg:(g.whatsappCannedAnswer.name||"whatsappCannedAnswer")+" has been deleted!"}),v(g.whatsappCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappCannedAnswers","whatsappCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.whatsappAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.whatsappAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.WhatsappAccountId=m.whatsappAccount.id,m.query.id=m.whatsappAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.whatsappAccount.id,field:"WhatsappAccountId",route:"whatsappAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.whatsappAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="whatsappAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedWhatsappAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description,baseUrl",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Twilio",value:"'twilio'"},{option:"Sinch",value:"'sinch'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.whatsapp.whatsappAccounts.edit",{id:e.id,whatsappAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.whatsapp.whatsappAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"WhatsappAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappAccount:e,whatsappAccounts:f.whatsappAccounts?f.whatsappAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("whatsappAccount")+"?").htmlContent("<b>"+(e.name||"whatsappAccount")+"</b> will be deleted.").ariaLabel("delete whatsappAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getWhatsappAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.whatsappAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="WhatsappAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditWhatsappAccount=function(e,n){i.show({controller:"CreateOrEditWhatsappAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:n,whatsappAccounts:f.whatsappAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteWhatsappAccount=y,f.exportSelectedWhatsappAccounts=function(){var e=angular.copy(f.selectedWhatsappAccounts);return f.selectedWhatsappAccounts=[],e},f.deleteSelectedWhatsappAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected whatsappAccounts?").htmlContent("<b>"+f.selectedWhatsappAccounts.length+" selected</b> will be deleted.").ariaLabel("delete WhatsappAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedWhatsappAccounts.forEach(function(e){y(e)}),f.selectedWhatsappAccounts=[]})},f.deselectWhatsappAccounts=function(){f.selectedWhatsappAccounts=[]},f.selectAllWhatsappAccounts=function(){f.selectedWhatsappAccounts=f.whatsappAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.whatsappAccount&&(t=_.find(f.lists,{id:Number(f.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.whatsappAccount&&(a=_.find(f.lists,{id:Number(f.whatsappAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){f.pauses=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){f.pauses=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.pauses,{id:e.resourceId})});f.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),f.pauses=n})}else f.pauses=[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.whatsappAccounts=e||{count:0,rows:[]}}function y(e){m.whatsappAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.whatsappAccounts.rows,{id:e.id}),f.whatsappAccounts.count-=1,f.whatsappAccounts.rows.length||f.getWhatsappAccounts(),p.success({title:_.startCase("WhatsappAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getWhatsappAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","whatsappAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.whatsapp").controller("WhatsappAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPQUEUE",g.whatsappQueue=angular.copy(l),g.whatsappQueues=r,g.newWhatsappQueue=!1,g.whatsappQueue||(g.whatsappQueue={strategy:"beepall",timeout:10},g.title="WHATSAPP.NEW_WHATSAPPQUEUE",g.newWhatsappQueue=!0),g.addNewWhatsappQueue=function(){g.errors=[],d.whatsappQueue.save(g.whatsappQueue).$promise.then(function(e){g.whatsappQueues.unshift(e.toJSON()),o.success({title:"WhatsappQueue properly created",msg:g.whatsappQueue.name?g.whatsappQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappQueue=function(){g.errors=[],d.whatsappQueue.update({id:g.whatsappQueue.id},g.whatsappQueue).$promise.then(function(e){var n=_.find(g.whatsappQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"WhatsappQueue properly saved!",msg:g.whatsappQueue.name?g.whatsappQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappQueue will be deleted.").ariaLabel("Delete WhatsappQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.whatsappQueue.delete({id:g.whatsappQueue.id}).$promise.then(function(){_.remove(g.whatsappQueues,{id:g.whatsappQueue.id}),o.success({title:"WhatsappQueue properly deleted!",msg:(g.whatsappQueue.name||"whatsappQueue")+" has been deleted!"}),v(g.whatsappQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappQueues","whatsappQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappQueue.getAgents({id:c.whatsappQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserWhatsappQueue?"penalty "+e.UserWhatsappQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.whatsappQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.removeAgents({id:c.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.addAgents({id:c.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("WHATSAPP.ALL_AGENTS"),labelSelected:r.instant("WHATSAPP.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","whatsappQueue","whatsappQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappQueue.getTeams({id:l.whatsappQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.whatsappQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("WHATSAPP.ALL_TEAMS"),labelSelected:t.instant("WHATSAPP.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.removeTeams({id:l.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.addTeams({id:l.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","whatsappQueue","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.whatsappQueue=c||e.params.whatsappQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"WhatsappQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:u.whatsappQueues?u.whatsappQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:u.whatsappQueues?u.whatsappQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoWhatsappQueues=function(){e.go("app.whatsapp.whatsappQueues",{},{reload:"app.whatsapp.whatsappQueues"})},u.saveWhatsappQueue=function(){r.whatsappQueue.update({id:u.whatsappQueue.id},u.whatsappQueue).$promise.then(function(){l.success({title:"WhatsappQueue updated!",msg:u.whatsappQueue.name?u.whatsappQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","whatsappQueue","userProfileSection"],angular.module("app.whatsapp").controller("WhatsappQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.whatsappQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="whatsappQueues",f.listOrder="",f.listOrderAsc=null,f.selectedWhatsappQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.whatsapp.whatsappQueues.edit",{id:e.id,whatsappQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"WhatsappQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:f.whatsappQueues?f.whatsappQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:f.whatsappQueues?f.whatsappQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("whatsappQueue")+"?").htmlContent("<b>"+(e.name||"whatsappQueue")+"</b> will be deleted.").ariaLabel("delete whatsappQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:2110}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.whatsapp.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.whatsapp.realtime.queues",{})}},f.success=E,f.getWhatsappQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.whatsappQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="WhatsappQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditWhatsappQueue=function(e,n){i.show({controller:"CreateOrEditWhatsappQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:f.whatsappQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteWhatsappQueue=y,f.exportSelectedWhatsappQueues=function(){var e=angular.copy(f.selectedWhatsappQueues);return f.selectedWhatsappQueues=[],e},f.deleteSelectedWhatsappQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected whatsappQueues?").htmlContent("<b>"+f.selectedWhatsappQueues.length+" selected</b> will be deleted.").ariaLabel("delete WhatsappQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedWhatsappQueues.forEach(function(e){y(e)}),f.selectedWhatsappQueues=[]})},f.deselectWhatsappQueues=function(){f.selectedWhatsappQueues=[]},f.selectAllWhatsappQueues=function(){f.selectedWhatsappQueues=f.whatsappQueues.rows};var b=!0,A=1;function E(e){f.whatsappQueues=e||{count:0,rows:[]}}function y(e){m.whatsappQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.whatsappQueues.rows,{id:e.id}),f.whatsappQueues.count-=1,f.whatsappQueues.rows.length||f.getWhatsappQueues(),p.success({title:_.startCase("WhatsappQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEwhatsappQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEwhatsappQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getWhatsappQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","whatsappQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.whatsapp").controller("WhatsappQueuesController",e)}(),function(){"use strict";function e(n,t,e,s,a,i,o,r,l,d,c){var m=this;function u(e,n){return{id:e,title:n.name||"NONAME",state:"app.dashboards.custom",stateParams:n,weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(e)&&!o.hasRole("admin")}}}function p(e,n){return{id:e,title:n.name||"NONAME",state:"app.plugins.plugin",stateParams:n,weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(e)&&!o.hasRole("admin")}}}function g(e,n){var t={user:_.pick(o.getCurrentUser(),["id","name","fullname","email","role","internal","interface"])};n.agentUrl=Mustache.render(n.agentUrl,t),a.saveItem("apps.home.plugin_"+e,{id:e,title:n.name,translate:n.name,state:"plugin_"+n.id,stateParams:n,view:"plugin",icon:n.icon,weight:12,hidden:function(){return!o.hasPermission(e)}})}function v(e){return _.map(e.children,function(e){return e.id})}i.clear(),m.isAgent=function(){return o.getCurrentUser()&&o.hasRole("agent")},s.saveItem("apps",{title:"APPS",group:!0,weight:1,hidden:function(){return o.hasRole("agent")}}),l.version.get().$promise.then(function(e){m.version=e&&e.current?e.current:"UNKNOWN"}).catch(function(e){m.version="UNKNOWN"}).finally(function(){s.saveItem("version",{title:"VERSION "+m.version,group:!0,weight:2,hidden:function(){return o.hasRole("agent")}})}),o.isLoggedIn()&&(r.gray&&i.warning({msg:e.instant("DASHBOARDS.LICENSE_EXPIRE_REMAINING_DAYS"),showClose:!0,timeout:!1}),l.dashboard.get().$promise.then(function(e){for(var n=0,t=0;t<e.rows.length;t+=1)n=99999+e.rows[t].id,s.saveItem("apps.dashboards.custom_"+n,u(n,e.rows[t]))}),l.plugin.get({active:!0}).$promise.then(function(e){var n=0;if(e.count){var t=_.filter(e.rows,function(e){return"never"!=e.sidebar&&"agentOnly"!=e.sidebar});if(0<t.length){s.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",permissions:{hidden:!0},weight:17,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}});for(var a=0;a<t.length;a+=1)n=88888+t[a].id,s.saveItem("apps.plugins.plugin_"+n,p(n,t[a]));s.sort()}var i=_.filter(e.rows,function(e){return"never"!=e.sidebar&&"adminOnly"!=e.sidebar});if(0<i.length)for(a=0;a<i.length;a+=1)g(n=88888+i[a].id,i[a])}})),r.custom&&!d.defaultPageTitle&&d.pageTitle&&angular.element("#pageTitle").html(d.pageTitle),s.saveItem("apps.dashboards",{id:100,title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",icon:"icon-tile-four",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.dashboards.general",{id:101,title:"General",route:"",translate:"DASHBOARDS.GENERAL",state:"app.dashboards.general",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(101)&&!o.hasRole("admin")}}),s.saveItem("apps.staff",{id:200,title:"Staff",translate:"STAFF.STAFF",icon:"icon-account-multiple",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.staff.users",{id:201,title:"Users",route:"user",translate:"STAFF.USERS",state:"app.staff.users",permissions:{hidden:!0},weight:1,hidden:function(){return o.hasRole("agent")||o.hasRole("user")||!o.hasPermission(201)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.agents",{id:202,title:"Agents",route:"user",translate:"STAFF.AGENTS",state:"app.staff.agents",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(202)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.telephones",{id:203,title:"Telephones",route:"user",translate:"STAFF.TELEPHONES",state:"app.staff.telephones",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(203)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.teams",{id:204,title:"Teams",route:"team",translate:"STAFF.TEAMS",state:"app.staff.teams",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(204)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.userProfiles",{id:205,title:"UserProfiles",route:"userProfile",translate:"STAFF.USERPROFILES",state:"app.staff.userProfiles",permissions:{hidden:!0},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(205)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager",{id:300,title:"ContactManager",translate:"CONTACTMANAGER.CONTACTMANAGER",icon:"icon-account-circle",license:"cm",weight:4,hidden:function(){return!r.cm||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.lists",{id:301,title:"Lists",route:"cmList",translate:"CONTACTMANAGER.LISTS",state:"app.contactmanager.lists",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(301)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.companies",{id:302,title:"Companies",route:"cmCompany",translate:"CONTACTMANAGER.COMPANIES",state:"app.contactmanager.companies",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(302)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.globalCustomFields",{id:304,title:"GlobalCustomFields",route:"cmCustomField",translate:"CONTACTMANAGER.GLOBALCUSTOMFIELDS",state:"app.contactmanager.globalCustomFields",permissions:{association:!1},weight:4,hidden:function(){return o.hasRole("agent")||!o.hasPermission(304)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.contacts",{id:303,title:"Contacts",route:"",translate:"CONTACTMANAGER.CONTACTS",state:"app.contactmanager.contacts",permissions:{association:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(303)&&!o.hasRole("admin")}}),s.saveItem("apps.voice",{id:400,title:"Voice",translate:"VOICE.VOICE",icon:"icon-phone",license:"voice",weight:5,hidden:function(){return!r.voice||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voiceQueues",{id:401,title:"VoiceQueues",route:"voiceQueue",channel:"voice",translate:"VOICE.VOICEQUEUES",state:"app.voice.voiceQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(401)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.contexts",{id:405,title:"Contexts",route:"voiceContext",translate:"VOICE.CONTEXTS",state:"app.voice.contexts",weight:5,hidden:function(){return o.hasRole("agent")||!o.hasPermission(405)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voicemails",{id:406,title:"Voicemails",route:"voiceMail",translate:"VOICE.VOICEMAILS",state:"app.voice.voicemails",weight:6,hidden:function(){return o.hasRole("agent")||!o.hasPermission(406)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.musiconholds",{id:407,title:"MusicOnHolds",route:"voiceMusicOnHold",translate:"VOICE.MUSICONHOLDS",state:"app.voice.musiconholds",weight:7,hidden:function(){return o.hasRole("agent")||!o.hasPermission(407)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voiceRecordings",{id:408,title:"VoiceRecordings",route:"voiceRecording",translate:"VOICE.VOICERECORDINGS",state:"app.voice.voiceRecordings",permissions:{association:!1,loading:!0},weight:8,hidden:function(){return o.hasRole("agent")||!o.hasPermission(408)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.chanSpies",{id:409,title:"ChanSpies",route:"voiceChanSpy",translate:"VOICE.CHANSPIES",state:"app.voice.chanSpies",weight:9,hidden:function(){return o.hasRole("agent")||!o.hasPermission(409)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voicePrefixes",{id:410,title:"VoicePrefixes",route:"voicePrefix",translate:"VOICE.VOICEPREFIXES",state:"app.voice.voicePrefixes",weight:10,hidden:function(){return o.hasRole("agent")||!o.hasPermission(410)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.inboundRoutes",{id:402,title:"InboundRoutes",route:"voiceExtension",translate:"VOICE.INBOUNDROUTES",state:"app.voice.inboundRoutes",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(402)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.outboundRoutes",{id:403,title:"OutboundRoutes",route:"voiceExtension",translate:"VOICE.OUTBOUNDROUTES",state:"app.voice.outboundRoutes",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(403)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.internalRoutes",{id:404,title:"InternalRoutes",route:"voiceExtension",translate:"VOICE.INTERNALROUTES",state:"app.voice.internalRoutes",weight:4,hidden:function(){return o.hasRole("agent")||!o.hasPermission(404)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.realtime",{id:411,title:"Realtime",route:"",translate:"VOICE.REALTIME",state:"app.voice.realtime",permissions:{association:!1,crud:!1},weight:11,hidden:function(){return o.hasRole("agent")||!o.hasPermission(411)&&!o.hasRole("admin")}}),s.saveItem("apps.chat",{id:500,title:"Chat",translate:"CHAT.CHAT",icon:"icon-hangouts",license:"chat",weight:6,hidden:function(){return!r.chat||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.chat.chatQueues",{id:501,title:"ChatQueues",route:"chatQueue",channel:"chat",translate:"CHAT.CHATQUEUES",state:"app.chat.chatQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(501)&&!o.hasRole("admin")}}),s.saveItem("apps.chat.chatWebsites",{id:502,title:"ChatWebsites",route:"chatWebsite",channel:"chat",translate:"CHAT.CHATWEBSITES",state:"app.chat.chatWebsites",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(502)&&!o.hasRole("admin")}}),s.saveItem("apps.chat.realtime",{id:510,title:"Realtime",route:"",translate:"CHAT.REALTIME",state:"app.chat.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(510)&&!o.hasRole("admin")}}),s.saveItem("apps.mail",{id:600,title:"Mail",translate:"MAIL.MAIL",icon:"icon-email",license:"mail",weight:7,hidden:function(){return!r.mail||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.mail.mailQueues",{id:601,title:"MailQueues",route:"mailQueue",channel:"mail",translate:"MAIL.MAILQUEUES",state:"app.mail.mailQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(601)&&!o.hasRole("admin")}}),s.saveItem("apps.mail.mailAccounts",{id:602,title:"MailAccounts",route:"mailAccount",channel:"mail",translate:"MAIL.MAILACCOUNTS",state:"app.mail.mailAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(602)&&!o.hasRole("admin")}}),s.saveItem("apps.mail.mailSubtatuses",{id:603,title:"MailSubstatuses",route:"mailSubstatus",channel:"mail",translate:"MAIL.MAILSUBSTATUSES",state:"app.mail.mailSubtatuses",permissions:{association:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(603)&&!o.hasRole("admin")}}),s.saveItem("apps.mail.realtime",{id:610,title:"Realtime",route:"",translate:"MAIL.REALTIME",state:"app.mail.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(610)&&!o.hasRole("admin")}}),s.saveItem("apps.sms",{id:700,title:"Sms",translate:"SMS.SMS",icon:"icon-message-text",license:"messaging",weight:8,hidden:function(){return!r.messaging||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.sms.smsQueues",{id:701,title:"SmsQueues",route:"smsQueue",channel:"sms",translate:"SMS.SMSQUEUES",state:"app.sms.smsQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(701)&&!o.hasRole("admin")}}),s.saveItem("apps.sms.smsAccounts",{id:702,title:"SmsAccounts",route:"smsAccount",channel:"sms",translate:"SMS.SMSACCOUNTS",state:"app.sms.smsAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(702)&&!o.hasRole("admin")}}),s.saveItem("apps.sms.realtime",{id:710,title:"Realtime",route:"",translate:"SMS.REALTIME",state:"app.sms.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(710)&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel",{id:800,title:"Openchannel",translate:"OPENCHANNEL.OPENCHANNEL",icon:"icon-google-earth",license:"openchannel",weight:9,hidden:function(){return!r.openchannel||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel.openchannelQueues",{id:801,title:"OpenchannelQueues",route:"openchannelQueue",channel:"openChannel",translate:"OPENCHANNEL.OPENCHANNELQUEUES",state:"app.openchannel.openchannelQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(801)&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel.openchannelAccounts",{id:802,title:"OpenchannelAccounts",route:"openchannelAccount",channel:"openChannel",translate:"OPENCHANNEL.OPENCHANNELACCOUNTS",state:"app.openchannel.openchannelAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(802)&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel.realtime",{id:810,title:"Realtime",route:"",translate:"OPENCHANNEL.REALTIME",state:"app.openchannel.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(810)&&!o.hasRole("admin")}}),s.saveItem("apps.fax",{id:900,title:"Fax",translate:"FAX.FAX",icon:"icon-deskphone",license:"fax",weight:10,hidden:function(){return!r.fax||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.fax.faxQueues",{id:901,title:"FaxQueues",route:"faxQueue",channel:"fax",translate:"FAX.FAXQUEUES",state:"app.fax.faxQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(901)&&!o.hasRole("admin")}}),s.saveItem("apps.fax.faxAccounts",{id:902,title:"FaxAccounts",route:"faxAccount",channel:"fax",translate:"FAX.FAXACCOUNTS",state:"app.fax.faxAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(902)&&!o.hasRole("admin")}}),s.saveItem("apps.fax.realtime",{id:910,title:"Realtime",route:"",translate:"FAX.REALTIME",state:"app.fax.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(910)&&!o.hasRole("admin")}}),s.saveItem("apps.tools",{id:1e3,title:"Tools",translate:"TOOLS.TOOLS",icon:"icon-auto-fix",weight:15,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.tools.cannedAnswers",{id:1001,title:"CannedAnswers",route:"cannedAnswer",translate:"TOOLS.CANNEDANSWERS",state:"app.tools.cannedAnswers",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1001)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.customDashboards",{id:1003,title:"CustomDashboards",route:"dashboard",translate:"TOOLS.CUSTOMDASHBOARDS",state:"app.tools.customDashboards",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1003)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.intervals",{id:1004,title:"Intervals",route:"interval",translate:"TOOLS.INTERVALS",state:"app.tools.intervals",weight:4,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1004)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.pauses",{id:1005,title:"Pauses",route:"pause",translate:"TOOLS.PAUSES",state:"app.tools.pauses",weight:5,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1005)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.schedules",{id:1006,title:"Scheduler",route:"schedule",translate:"TOOLS.SCHEDULER",state:"app.tools.schedules",weight:6,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1006)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.sounds",{id:1007,title:"Sounds",route:"sound",translate:"TOOLS.SOUNDS",state:"app.tools.sounds",weight:7,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1007)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.tags",{id:1008,title:"Tags",route:"tag",translate:"TOOLS.TAGS",state:"app.tools.tags",weight:8,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1008)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.templates",{id:1009,title:"Templates",route:"template",translate:"TOOLS.TEMPLATES",state:"app.tools.templates",weight:9,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1009)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.trunks",{id:1011,title:"Trunks",route:"trunk",translate:"TOOLS.TRUNKS",state:"app.tools.trunks",weight:11,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1011)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.variables",{id:1012,title:"Variables",route:"variable",translate:"TOOLS.VARIABLES",state:"app.tools.variables",weight:12,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1012)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.dispositions",{id:1002,title:"Dispositions",route:"disposition",translate:"TOOLS.DISPOSITIONS",state:"app.tools.dispositions",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1002)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.triggers",{id:1010,title:"Triggers",route:"trigger",translate:"TOOLS.TRIGGERS",state:"app.tools.triggers",weight:10,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1010)&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare",{id:1100,title:"CallySquare",translate:"CALLYSQUARE.CALLYSQUARE",icon:"icon-sitemap",license:"voice",weight:13,hidden:function(){return!r.voice||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare.odbcs",{id:1101,title:"ODBC",route:"squareOdbc",translate:"CALLYSQUARE.ODBC",state:"app.callysquare.odbcs",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1101)&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare.squareRecordings",{id:1102,title:"SquareRecordings",route:"squareRecording",translate:"CALLYSQUARE.SQUARERECORDINGS",state:"app.callysquare.squareRecordings",permissions:{association:!1,loading:!0},weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1102)&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare.projects",{id:1103,title:"Projects",route:"squareProject",translate:"CALLYSQUARE.PROJECTS",state:"app.callysquare.projects",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1103)&&!o.hasRole("admin")}}),s.saveItem("apps.analytics",{id:1200,title:"Analytics",translate:"ANALYTICS.ANALYTICS",icon:"icon-chart-line",weight:16,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.analytics.metrics",{id:1201,title:"Metrics",route:"analyticMetric",translate:"ANALYTICS.METRICS",state:"app.analytics.metrics",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1201)&&!o.hasRole("admin")}}),s.saveItem("apps.analytics.extractedReports",{id:1202,title:"ExtractedReports",route:"analyticExtractedReport",translate:"ANALYTICS.EXTRACTEDREPORTS",state:"app.analytics.extractedReports",permissions:{association:!1,loading:!0},weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1202)&&!o.hasRole("admin")}}),s.saveItem("apps.analytics.reports",{id:1203,title:"Reports",route:"",translate:"ANALYTICS.REPORTS",state:"app.analytics.reports",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1203)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations",{id:1300,title:"Integrations",translate:"INTEGRATIONS.INTEGRATIONS",icon:"icon-heart",weight:17,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.zendeskAccounts",{id:1301,title:"ZendeskAccounts",route:"intZendeskAccount",translate:"INTEGRATIONS.ZENDESKACCOUNTS",state:"app.integrations.zendeskAccounts",permissions:{association:!1,loading:!0},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1301)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.salesforceAccounts",{id:1302,title:"SalesforceAccounts",route:"intSalesforceAccount",translate:"INTEGRATIONS.SALESFORCEACCOUNTS",state:"app.integrations.salesforceAccounts",permissions:{association:!1,loading:!0},weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1302)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.freshdeskAccounts",{id:1303,title:"FreshdeskAccounts",route:"intFreshdeskAccount",translate:"INTEGRATIONS.FRESHDESKACCOUNTS",state:"app.integrations.freshdeskAccounts",permissions:{association:!1,loading:!0},weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1303)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.sugarcrmAccounts",{id:1305,title:"SugarcrmAccounts",route:"intSugarcrmAccount",translate:"INTEGRATIONS.SUGARCRMACCOUNTS",state:"app.integrations.sugarcrmAccounts",permissions:{association:!1,loading:!0},weight:4,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1305)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.deskAccounts",{id:1306,title:"DeskAccounts",route:"intDeskAccount",translate:"INTEGRATIONS.DESKACCOUNTS",state:"app.integrations.deskAccounts",permissions:{association:!1,loading:!0},weight:5,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1306)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.zohoAccounts",{id:1307,title:"ZohoAccounts",route:"intZohoAccount",translate:"INTEGRATIONS.ZOHOACCOUNTS",state:"app.integrations.zohoAccounts",permissions:{association:!1,loading:!0},weight:6,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1307)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.vtigerAccounts",{id:1308,title:"VtigerAccounts",route:"intVtigerAccount",translate:"INTEGRATIONS.VTIGERACCOUNTS",state:"app.integrations.vtigerAccounts",permissions:{association:!1,loading:!0},weight:7,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1308)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.dynamics365Accounts",{id:1309,title:"Dynamics365Accounts",route:"intDynamics365Account",translate:"INTEGRATIONS.DYNAMICS365ACCOUNTS",state:"app.integrations.dynamics365Accounts",permissions:{association:!1,loading:!0},weight:8,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1309)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.servicenowAccounts",{id:1310,title:"ServicenowAccounts",route:"intServicenowAccount",translate:"INTEGRATIONS.SERVICENOWACCOUNTS",state:"app.integrations.servicenowAccounts",permissions:{association:!1,loading:!0},weight:9,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1310)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.freshsalesAccounts",{id:1304,title:"FreshsalesAccounts",route:"intFreshsalesAccount",translate:"INTEGRATIONS.FRESHSALESACCOUNTS",state:"app.integrations.freshsalesAccounts",permissions:{association:!1,loading:!0},weight:10,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1304)&&!o.hasRole("admin")}}),s.saveItem("apps.settings",{id:1400,title:"Settings",translate:"SETTINGS.SETTINGS",icon:"icon-cog",permissions:{hidden:!0},weight:20,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")||o.hasRole("admin")&&!o.getCurrentUser().settingsEnabled}}),s.saveItem("apps.settings.generals",{id:1401,title:"General",route:"setting",translate:"SETTINGS.GENERAL",state:"app.settings.generals",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.smtps",{id:1402,title:"Smtp",route:"mailAccount",translate:"SETTINGS.SMTP",state:"app.settings.smtps",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.networks",{id:1403,title:"Networks",route:"network",translate:"SETTINGS.NETWORKS",state:"app.settings.networks",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.customizations",{id:1407,title:"Customizations",route:"setting",translate:"SETTINGS.CUSTOMIZATIONS",state:"app.settings.customizations",weight:1,hidden:function(){return!r.custom||o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.cloudProviders",{id:1408,title:"AiTools",route:"cloudProvider",translate:"SETTINGS.AITOOLS",state:"app.settings.cloudProviders",weight:1,hidden:function(){return!r.ai||o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.updates",{id:1404,title:"Updates",route:"",translate:"SETTINGS.UPDATES",state:"app.settings.updates",weight:1,hidden:function(){return!r.update||o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.license",{id:1405,title:"License",route:"",translate:"SETTINGS.LICENSE",state:"app.settings.license",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.system",{id:1406,title:"System",route:"",translate:"SETTINGS.SYSTEM",state:"app.settings.system",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer",{id:1500,title:"MotionDialer",translate:"MOTIONDIALER.MOTIONDIALER",icon:"icon-fire",license:"dialer",weight:5,hidden:function(){return!r.dialer||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer.queueCampaigns",{id:1501,title:"QueueCampaigns",route:"voiceQueue",channel:"bull",translate:"MOTIONDIALER.QUEUECAMPAIGNS",state:"app.motiondialer.queueCampaigns",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1501)&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer.ivrCampaigns",{id:1502,title:"IvrCampaigns",route:"campaign",translate:"MOTIONDIALER.IVRCAMPAIGNS",state:"app.motiondialer.ivrCampaigns",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1502)&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer.realtime",{id:1510,title:"Realtime",route:"",translate:"MOTIONDIALER.REALTIME",state:"app.motiondialer.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1510)&&!o.hasRole("admin")}}),s.saveItem("apps.help",{id:1600,title:"Help",translate:"HELP.HELP",icon:"icon-help",permissions:{association:!1},weight:21,hidden:function(){return!d.viewHelpSection||o.hasRole("agent")||!o.hasPermission(1600)&&!o.hasRole("admin")}}),s.saveItem("apps.help.about",{id:1601,title:"About",route:"",translate:"HELP.ABOUT",state:"app.help.about",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1600)&&!o.hasRole("admin")}}),s.saveItem("apps.jscripty",{id:1700,title:"jscripty",translate:"JSCRIPTY.JSCRIPTY",icon:"icon-script",license:"jscripty",weight:14,hidden:function(){return!r.jscripty||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.jscripty.projects",{id:1701,title:"Projects",route:"jscriptyProject",translate:"JSCRIPTY.PROJECTS",state:"app.jscripty.projects",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1701)&&!o.hasRole("admin")}}),s.saveItem("apps.marketplace",{id:1800,title:"Marketplace",translate:"MARKETPLACE.MARKETPLACE",icon:"icon-cart",weight:18,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.marketplace.plugins",{id:1801,title:"Plugins",route:"plugin",translate:"MARKETPLACE.PLUGINS",state:"app.marketplace.plugins",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1801)&&!o.hasRole("admin")}}),s.saveItem("apps.video",{id:2e3,title:"Video",translate:"VIDEO.VIDEO",icon:"icon-video",license:"screenrecording",weight:12,hidden:function(){return!r.screenrecording||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.video.screenRecordings",{id:2001,title:"ScreenRecordings",route:"screenRecording",translate:"VIDEO.SCREENRECORDINGS",state:"app.video.screenRecordings",permissions:{association:!1,loading:!0},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(2001)&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp",{id:2100,title:"Whatsapp",translate:"WHATSAPP.WHATSAPP",icon:"icon-whatsapp",license:"whatsapp",weight:11,hidden:function(){return!r.whatsapp||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp.whatsappQueues",{id:2101,title:"WhatsappQueues",route:"whatsappQueue",channel:"whatsapp",translate:"WHATSAPP.WHATSAPPQUEUES",state:"app.whatsapp.whatsappQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(2101)&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp.whatsappAccounts",{id:2102,title:"WhatsappAccounts",route:"whatsappAccount",channel:"whatsapp",translate:"WHATSAPP.WHATSAPPACCOUNTS",state:"app.whatsapp.whatsappAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(2102)&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp.realtime",{id:2110,title:"Realtime",route:"",translate:"WHATSAPP.REALTIME",state:"app.whatsapp.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(2110)&&!o.hasRole("admin")}}),s.sort(),a.saveItem("apps",{title:"APPS",group:!0,weight:1}),a.saveItem("apps.home",{id:100,title:"Home",translate:"DASHBOARDS.HOME",icon:"icon-home",weight:1}),a.saveItem("apps.home.dashboard",{id:101,title:"Dashboard",translate:"DASHBOARDS.DASHBOARD",state:"dashboard",view:"dashboard",icon:"icon-tile-four",iconClass:"cyan-500-fg",weight:1,hidden:function(){return!o.hasPermission(101)}}),a.saveItem("apps.home.agentPresence",{id:115,title:"AgentPresence",translate:"DASHBOARDS.AGENT_PRESENCE",state:"agentPresence",view:"agentPresence",icon:"icon-webcam",iconClass:"xenialab-violet-light-fg",weight:2,hidden:function(){return!o.hasPermission(115)}}),a.saveItem("apps.home.contacts",{id:102,title:"Contacts",translate:"DASHBOARDS.CONTACTS",state:"contacts",view:"contacts",icon:"icon-account-circle",iconClass:"red-fg",weight:3,hidden:function(){return!r.cm||!o.hasPermission(102)}}),a.saveItem("apps.home.mycontacts",{id:103,title:"Contacts",translate:"DASHBOARDS.MYCONTACTS",state:"mycontacts",view:"mycontacts",icon:"icon-account-multiple",iconClass:"red-fg",weight:4,hidden:function(){return!r.cm||!o.hasPermission(103)}}),a.saveItem("apps.home.scheduled",{id:113,title:"Scheduled Calls",translate:"DASHBOARDS.SCHEDULED_CALLS",state:"scheduled",view:"scheduled",icon:"icon-calendar-clock",iconClass:"blue-grey-fg",weight:5,hidden:function(){return!r.dialer||!o.hasPermission(113)}}),a.saveItem("apps.home.voice",{id:110,title:"Voice",translate:"DASHBOARDS.VOICE",state:"voice",view:"voice",icon:"icon-phone",iconClass:"blue-A700-fg",weight:6,hidden:function(){return!r.voice||!o.hasPermission(110)}}),a.saveItem("apps.home.abandoned",{id:111,title:"Abandoned",translate:"DASHBOARDS.ABANDONED",state:"abandoned",view:"abandoned",icon:"icon-phone-missed",iconClass:"blue-fg",weight:7,hidden:function(){return!r.voice||!o.hasPermission(111)}}),a.saveItem("apps.home.recordings",{id:104,title:"Recordings",translate:"DASHBOARDS.RECORDINGS",state:"recordings",view:"recordings",icon:"icon-audiobook",iconClass:"indigo-A100-fg",weight:8,hidden:function(){return!r.voice||!o.hasPermission(104)}}),a.saveItem("apps.home.chat",{id:105,title:"Chat",translate:"DASHBOARDS.CHAT",state:"chat",view:"chat",icon:"icon-hangouts",iconClass:"green-A700-fg",weight:9,hidden:function(){return!r.chat||!o.hasPermission(105)}}),a.saveItem("apps.home.mail",{id:106,title:"Mail",translate:"DASHBOARDS.MAIL",state:"mail",view:"mail",icon:"icon-email",iconClass:"teal-fg",weight:10,hidden:function(){return!r.mail||!o.hasPermission(106)}}),a.saveItem("apps.home.sms",{id:107,title:"Sms",translate:"DASHBOARDS.SMS",state:"sms",view:"sms",icon:"icon-message-text",iconClass:"orange-fg",weight:11,hidden:function(){return!r.messaging||!o.hasPermission(107)}}),a.saveItem("apps.home.openchannel",{id:108,title:"Openchannel",translate:"DASHBOARDS.OPENCHANNEL",state:"openchannel",view:"openchannel",icon:"icon-google-earth",iconClass:"amber-fg",weight:12,hidden:function(){return!r.openchannel||!o.hasPermission(108)}}),a.saveItem("apps.home.fax",{id:109,title:"Fax",translate:"DASHBOARDS.FAX",state:"fax",view:"fax",icon:"icon-deskphone",iconClass:"blue-grey-A200-fg",weight:13,hidden:function(){return!r.fax||!o.hasPermission(109)}}),a.saveItem("apps.home.whatsapp",{id:114,title:"Whatsapp",translate:"DASHBOARDS.WHATSAPP",state:"whatsapp",view:"whatsapp",icon:"icon-whatsapp",iconClass:"lime-A700-fg",weight:14,hidden:function(){return!r.whatsapp||!o.hasPermission(114)}}),n.$on("$viewContentAnimationEnded",function(e){e.targetScope.$id===n.$id&&t.$broadcast("msSplashScreen::remove")}),n.$on("socket:connect",function(){t.toastySocketLost&&(i.clear(t.toastySocketLost),t.toastySocketLost=void 0)}),n.$on("socket:disconnect",function(){t.toastySocketLost||i.warning({title:e.instant("TOOLBAR.WARNING"),msg:e.instant("DASHBOARDS.LOST_CONNECTION"),timeout:!1,onAdd:function(){t.toastySocketLost=this.id}})})}e.$inject=["$scope","$rootScope","$translate","msNavigationService","msNavigationAgentService","toasty","Auth","license","api","setting","socket"],angular.module("motion").controller("MainController",e)}(),function(){"use strict";function e(e,n,t,a,o,r){var i=this;function s(e){if(e&&e.id){var n=99999+e.id;o.saveItem("apps.dashboards.custom_"+n,{id:n,title:e.name||"NONAME",state:"app.dashboards.custom",stateParams:e,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(n)&&!r.hasRole("admin")}})}}function l(e){if(e&&e.id&&"never"!=e.sidebar)if(e.active){if("always"==e.sidebar||"adminOnly"==e.sidebar){o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1900)&&!r.hasRole("admin")}});var n=88888+e.id;o.saveItem("apps.plugins.plugin_"+n,{id:n,title:e.name||"NONAME",state:"app.plugins.plugin",stateParams:e,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(n)&&!r.hasRole("admin")}}),o.sort()}}else{n=88888+e.id;t=1900,a=n,i=o.getNavigation(),(s=_.find(i[0].children,{id:t}))&&_.some(s.children,{id:a})&&("always"==e.sidebar||"adminOnly"==e.sidebar)&&(o.deleteItem("apps.plugins.plugin_"+n),d(1900)||o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return!0}}))}var t,a,i,s}function d(e){var n=o.getNavigation(),t=_.find(n[0].children,{id:e});return!!(t&&0<t.children.length)}i.bodyEl=angular.element("body"),i.msScrollOptions={suppressScrollX:!0},i.setting=t,i.$onInit=function(){i.folded="true"===n.get("motion.folded")||!1},i.toggleMsNavigationFolded=function(){i.folded=!i.folded,n.put("motion.folded",i.folded)},i.getLogo=function(){return i.setting.defaultHeaderWhiteLabel?"xCALLY Motion":i.setting.headerWhiteLabel},a.on("dashboard:save",s),a.on("dashboard:update",s),a.on("dashboard:remove",function(e){if(e&&e.id){var n=99999+e.id;o.deleteItem("apps.dashboards.custom_"+n)}}),a.on("plugin:save",l),a.on("plugin:update",l),a.on("plugin:remove",function(e){if(e&&e.id&&"never"!=e.sidebar){var n=88888+e.id;"always"!=e.sidebar&&"adminOnly"!=e.sidebar||(o.deleteItem("apps.plugins.plugin_"+n),d(1900)||o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return!0}}))}}),e.$on("$stateChangeSuccess",function(){i.bodyEl.removeClass("ms-navigation-horizontal-mobile-menu-active")})}e.$inject=["$scope","$cookies","setting","socket","msNavigationService","Auth"],angular.module("app.navigation").controller("NavigationController",e)}(),function(){"use strict";function e(e,a,i,n,t,s,o,r){var l=this;function d(t){o.isSupported()?o.requestPermission().then(function(){var e,n;n={autoClose:!0,duration:10,showOnPageHidden:!0,icon:"api/users/"+(e=t).FromId+"/avatar",body:e.body||"",focusOnclick:!0,closeOnClick:!0},o.show(a.instant("QUICKPANEL.NEW_INTERNAL_MESSAGE"),n)},function(e){console.error("Please enable browser notifications!",e)}):console.error("Browser notifications are not supported by the browser. Normal notifications will be used.")}l.date=moment().format(),l.currentUser=n.getCurrentUser(),l.license=r,l.unreadTotalMessages=0,l.unreadTotalGroupMessages=0,l.userIsNotPhonebar=function(){return"admin"===l.currentUser.role||"user"===l.currentUser.role||"agent"===l.currentUser.role&&0!==l.currentUser.showWebBar},l.onMessageSave=function(e){e.ToId===l.currentUser.id&&e.FromId!==l.currentUser.id&&!e.read&&e.ChatGroupId&&(l.unreadTotalGroupMessages++,d(e));e.ToId!==l.currentUser.id||e.ChatGroupId||(l.unreadTotalMessages+=1,d(e))},l.onMessageUpdate=function(e){e.ToId===l.currentUser.id&&e.read&&0<l.unreadTotalMessages&&!e.ChatGroupId&&(l.unreadTotalMessages-=1);e.ToId==l.currentUser.id&&e.FromId!==l.currentUser.id&&e.ChatGroupId&&e.read&&0<l.unreadTotalGroupMessages&&l.unreadTotalGroupMessages--},t.on("chatInternalMessage:save",l.onMessageSave),t.on("chatInternalMessage:update",l.onMessageUpdate),s.chatInternalMessage.get({fields:"FromId",ToId:l.currentUser.id,read:!1,nolimit:!0,ChatGroupId:"null"}).$promise.then(function(e){return e&&e.count&&(l.unreadTotalMessages=e.count),s.user.getGroups({id:l.currentUser.id}).$promise}).then(function(e){for(var n=[],t=e.rows,a=0;a<t.length;a++)n.push(s.chatGroup.getUnread({id:t[a].id}).$promise);return i.all(n)}).then(function(e){for(var n=0;n<e.length;n++)l.unreadTotalGroupMessages+=e[n].count}).catch(function(e){console.error(e)}),e.$on("$destroy",function(){t.removeAllListeners("chatInternalMessage:save"),t.removeAllListeners("chatInternalMessage:update")})}e.$inject=["$scope","$translate","$q","Auth","socket","api","desktopNotification","license"],angular.module("app.quick-panel").controller("QuickPanelController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;function p(e){var n=angular.element("#chat-dialog");a(function(){n.animate({scrollTop:n[0].scrollHeight},e)},0)}function g(e){return _.isNil(e)?"":e.replace(/[^\w.+#*\-]+/g,"")}function v(e){return m.get(e).success(function(){n.success({title:"Successful call",msg:"Call properly handled!"})}).error(function(e){n.error({title:"PhoneBar API Error",msg:d.instant("CONTACTMANAGER.ERRORS.PHONEBAR_API")})})}u.currentUser=i.getCurrentUser(),u.user=void 0,u.users={count:0,rows:[]},u.standardDate=moment(0).format("YYYY-MM-DD HH:mm:ss"),u.unreadMessage={},u.replyMessage="",u.disabled=!1,u.init=function(e){u.license=e},u.toggleChat=function(e){if(e){if(!e.allowmessenger&&"agent"===e.role)return n.warning({title:d.instant("QUICKPANEL.WARNING"),msg:d.instant("QUICKPANEL.MESSENGER_DISABLED")}),void(u.user=void 0);u.user=e,u.replyMessage="",t.chatInternalMessage.get({sort:"createdAt",FromId:u.currentUser.id+","+e.id,ToId:u.currentUser.id+","+e.id,ChatGroupId:"null"}).$promise.then(function(e){if(e&&e.rows){u.user.messages=e;for(var n=0;n<u.user.messages.rows.length;n+=1)!1===u.user.messages.rows[n].read&&u.user.messages.rows[n].ToId===u.currentUser.id&&t.chatInternalMessage.update({id:u.user.messages.rows[n].id,read:!0})}}).finally(function(){p(0)})}else u.user=void 0},u.reply=function(){u.disabled=!0;Date.now();if(""===u.replyMessage)return void(u.disabled=!1);var e={FromId:u.currentUser.id,ToId:u.user.id,body:u.replyMessage,read:!1};u.replyMessage="",t.chatInternalMessage.save(e).$promise.then(function(e){u.user.messages.rows.push(e),u.user.lastMessageAt=e.createdAt,u.user.lastMessage=e,p(400)}).catch(function(e){}).finally(function(){u.disabled=!1})},u.onMessageSave=function(e){if(e.ToId===u.currentUser.id&&!e.ChatGroupId){u.user&&u.user.id===e.FromId?(u.user.messages.rows.push(e),p(0),t.chatInternalMessage.update({id:e.id,read:!0})):u.unreadMessage[e.FromId]=u.unreadMessage[e.FromId]?u.unreadMessage[e.FromId]+1:1;var n=_.find(u.users.rows,{id:e.FromId});n&&(n.lastMessageAt=e.createdAt,n.lastMessage=e)}},u.onMessageUpdate=function(e){if((e.FromId===u.currentUser.id||e.ToId===u.currentUser.id)&&!e.ChatGroupId){if(u.user){var n=_.find(u.user.messages.rows,{id:e.id});n&&_.merge(n,e)}var t=_.find(u.users.rows,{id:u.currentUser.id===e.FromId?e.ToId:e.FromId});t&&t.lastMessage&&_.merge(t.lastMessage,e),e.ToId===u.currentUser.id&&e.read&&0<u.unreadMessage[e.FromId]&&(u.unreadMessage[e.FromId]-=1)}},u.onUserUpdate=function(e){var n=_.find(u.users.rows,{id:e.id});n&&(_.isNil(e.online)||n.online===e.online||(n.online=e.online),_.isNil(e.allowmessenger)||n.allowmessenger===e.allowmessenger||(n.allowmessenger=e.allowmessenger))},u.webcall=function(e){c.$broadcast("webrtc::call",{target:g(e)})},u.call=function(e){return v("http://127.0.0.1:"+(u.user.phoneBarRemoteControlPort||"9888")+"/api/originate/"+g(e))},u.transfer=function(e){return v("http://127.0.0.1:"+(u.user.phoneBarRemoteControlPort||"9888")+"/api/transfer?number="+g(e))},s.on("chatInternalMessage:save",u.onMessageSave),s.on("chatInternalMessage:update",u.onMessageUpdate),s.on("user:update",u.onUserUpdate),o("quick-panel").onClose(function(){u.user=void 0}),t.chatInternalMessage.get({fields:"FromId",ToId:u.currentUser.id,read:!1,nolimit:!0,ChatGroupId:"null"}).$promise.then(function(e){u.unreadMessage=_.countBy(e.rows,"FromId")}).catch(function(e){}),t.chatInternalMessage.getUsers().$promise.then(function(e){u.users=e}).catch(function(e){console.error(e)}),e.$on("$destroy",function(){s.removeAllListeners("chatInternalMessage:save"),s.removeAllListeners("chatInternalMessage:update"),s.removeAllListeners("user:update")})}e.$inject=["$scope","toasty","api","$timeout","Auth","socket","$mdSidenav","$q","$interval","$translate","$rootScope","$http"],angular.module("app.quick-panel").controller("ChatInternalController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e){a.hide(e)}d.errors=[],d.title="QUICKPANEL.EDIT_CHATGROUP",d.group=angular.copy(r),d.currentUser=o.getCurrentUser(),d.members=l,d.newChatGroup=!0,d.group||(d.group={write:!0,members:[]},d.title="QUICKPANEL.NEW_CHATGROUP"),d.saveChatGroup=function(){var t;return d.errors=[],s.chatGroup.save({name:d.group.name,write:d.group.write}).$promise.then(function(e){var n=_.map(d.group.members,"id");return n.unshift(d.currentUser.id),t=e,s.chatGroup.addMembers({id:t.id,ids:n}).$promise}).then(function(){i.success({title:"Group properly saved!",msg:t.name+" has been saved!"}),c(t)}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.closeDialog=c,d.querySearch=function(e){return e?d.members.rows.filter((n=e,t=angular.lowercase(n),function(e){var n=e.name.toLowerCase();return-1!=n.indexOf(t)})):[];var n,t}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","Auth","group","members"],angular.module("app.quick-panel").controller("CreateOrEditChatGroupDialogController",e)}(),function(){"use strict";function e(e,t,a,s,n,o,i,r,l,d){var c=this;function m(){delete c.group}function u(e){var n=angular.element("#chat-group-dialog");a(function(){n.animate({scrollTop:n[0].scrollHeight},e)},0)}c.currentUser=i.getCurrentUser(),c.unreadGroupMessages={},c.groups={},c.participants,c.group,c.init=function(e){return c.license=e,r.user.getGroups({id:c.currentUser.id}).$promise.then(function(e){for(var n=0,t=[];n<e.rows.length;n++)e.rows[n].unreadGroupMessages=0,c.groups[e.rows[n].id]=e.rows[n],t.push(r.chatGroup.getUnread({id:e.rows[n].id}).$promise);return o.all(t)}).then(function(e){for(var n=0;n<e.length;n++)c.groups[e[n].id].unreadGroupMessages+=e[n].count}).catch(function(e){console.error(e)})},c.back=m,c.addGroup=function(e,n){s.show({controller:"CreateOrEditChatGroupDialogController",controllerAs:"vm",templateUrl:"app/quick-panel/tabs/groups/create/dialog.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{group:e,me:c.currentUser,license:null,setting:null},resolve:{members:function(){return i.hasRole("admin")?r.user.get({role:"agent"}).$promise:r.userProfile.getResources({id:i.getCurrentUser().userProfileId,section:"Agents",role:"agent"}).$promise}}}).then(function(e){e&&(c.groups[e.id]=e)}).catch(function(e){e&&console.error(e.message)})},c.deleteGroup=function(e,n){var t=s.confirm().title("Are you sure want to delete the selected group?").htmlContent("Group <b>"+e.name+"</b> will be deleted.").ariaLabel("delete Group").targetEvent(n).ok("OK").cancel("CANCEL");s.show(t).then(function(){return r.chatGroup.delete({id:e.id}).$promise}).then(function(){delete c.groups[e.id],d.success({title:"Group properly deleted!",msg:e.name+" has been deleted!"})}).catch(function(e){e&&d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatGroup.delete",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.groupsToArray=function(){return _.values(c.groups)},c.showMessageInfo=function(e,i){s.show({controller:"ShowMessageInfoDialogController",controllerAs:"vm",templateUrl:"app/quick-panel/tabs/groups/info/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{message:i},resolve:{data:function(){var a={messages:[]};return r.chatInternalMessage.get({ChatInternalMessageId:i.id}).$promise.then(function(e){var n=[];a.messages=e.rows,a.messages.unshift(i);for(var t=0;t<a.messages.length;t++)n.push(r.user.get({id:a.messages[t].ToId,fields:"id,name,fullname,userpic"}).$promise);return o.all(n)}).then(function(e){return a.users=e,a}).catch(function(e){e&&console.error(e)})}}}).then(function(){}).catch(function(e){e&&console.error(e.message)})},c.toggleChat=function(n){c.group={id:n.id,write:n.write,messages:{}},r.chatGroup.getMembers({id:n.id,fields:"id,name,fullname"}).$promise.then(function(e){return c.group.membersByKeys=_.keyBy(e.rows,"id"),c.group.members=_.differenceBy(e.rows,[{id:c.currentUser.id}],"id"),c.participants=_.map(c.group.members,"fullname").join(", "),r.chatGroup.getMessages({id:n.id,nolimit:!0}).$promise}).then(function(e){for(var n,t=0,a=[];t<e.count;t++)e.rows[t].ToId===c.currentUser.id&&(n=e.rows[t],c.group.messages[n.id]=n,e.rows[t].ToId!=c.currentUser.id||e.rows[t].FromId===c.currentUser.id||n.read||a.push(r.chatInternalMessage.update({id:n.id,read:!0})));return o.all(a)}).then(function(){u(400)}).catch(function(e){console.error(e.message)})},c.reply=function(){if(!c.replyMessage)return;var t={id:c.group.id,FromId:c.currentUser.id,ToId:c.currentUser.id,body:c.replyMessage,read:!0},a=[];c.replyMessage="",r.chatGroup.addMessage(t).$promise.then(function(e){t.read=!1,t.ChatInternalMessageId=e.id;for(var n=0;n<c.group.members.length;n++)c.group.members[n].id!==c.currentUser.id&&(t.ToId=c.group.members[n].id,a.push(r.chatGroup.addMessage(angular.copy(t)).$promise));return o.all(a)}).catch(function(e){console.log(e)})},l.on("chatInternalMessage:save",function(n){if(!c.group&&n.ToId===c.currentUser.id&&n.FromId!==c.currentUser.id&&!n.read&&n.ChatGroupId){var e=c.groups[n.ChatGroupId];if(!e)return r.chatGroup.get({id:n.ChatGroupId}).$promise.then(function(e){e.unreadGroupMessages=1,c.groups[e.id]=e});e.unreadGroupMessages||(e.unreadGroupMessages=0),e.unreadGroupMessages++}c.group&&n.ChatGroupId===c.group.id&&n.ToId===c.currentUser.id&&r.chatInternalMessage.update({id:n.id,read:!0}).$promise.then(function(){var e;e=n,c.group.messages[e.id]=e,u(400)})}),l.on("chatInternalMessage:update",function(e){e.ToId==c.currentUser.id&&e.FromId!==c.currentUser.id&&e.ChatGroupId&&e.read&&(0<c.groups[e.ChatGroupId].unreadGroupMessages&&c.groups[e.ChatGroupId].unreadGroupMessages--,c.group.messages[e.id]&&(c.group.messages[e.id].read=!0))}),l.on("chatGroup:remove",function(e){c.groups[e.id]&&delete c.groups[e.id]}),n("quick-panel").onClose(m),e.$on("$destroy",function(){l.removeAllListeners("chatInternalMessage:save"),l.removeAllListeners("chatInternalMessage:update"),l.removeAllListeners("chatGroup:remove")})}e.$inject=["$scope","$document","$timeout","$mdDialog","$mdSidenav","$q","Auth","api","socket","toasty"],angular.module("app.quick-panel").controller("ChatGroupController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r){this.data=r,this.title="QUICKPANEL.INFO",this.closeDialog=function(){a.hide()}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","Auth","data"],angular.module("app.quick-panel").controller("ShowMessageInfoDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.form={token:s.token},o.setting={},o.resetPassword=function(){return i.auth.reset(o.form).$promise.then(function(){n.success({title:t.instant("RESETPASSWORD.PASSWORD_RESET"),msg:t.instant("RESETPASSWORD.PASSWORD_RESET_MESSAGE")}),a.go("app.login")}).catch(function(e){e&&n.error({title:t.instant("RESETPASSWORD.PASSWORD_RESET_ERROR"),msg:e.data?e.data.message||e.message||e:e.message||e})})},o.onInit=function(){e.isLoggedIn()&&a.go("app.dashboards.general");return i.setting.gdpr({id:1}).$promise.then(function(e){o.setting=e,o.passwordPattern=o.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:""}).catch(function(e){e&&n.error({title:"Error",msg:e.data?e.data.message||e.message||e:e.message||e})})}}e.$inject=["Auth","toasty","$translate","$state","api","$stateParams"],angular.module("app.reset").controller("ResetPasswordController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.errors=[],r.user=i,r.setting=s,r.reset=o,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.savePassword=function(){r.errors=[],a.user.changePassword({id:r.user.id},{oldPassword:r.oldPassword,newPassword:r.password}).$promise.then(function(){n.show(n.simple().textContent("Your password properly updated").position("top right").hideDelay(5e3)),l()}).catch(function(e){console.error(e),r.errors=e.data.errors&&e.data.errors.length?e.data.errors:[{message:e.data.message||"Authorization error",type:"api.user.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.changePasswordForm.password.$setValidity("oldPasswordMatch",!1):t.changePasswordForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","$mdToast","api","user","setting","reset"],angular.module("app.toolbar").controller("ChangePasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r){var l=this;function d(e){_.isNil(e)&&s.cmHopper.update({id:l.preview.id,UserId:null}),a.hide()}l.customFieldsMap=r&&r.rows?_.mapValues(_.keyBy(r.rows,function(e){return"cf_"+e.id}),"name"):{},l.errors=[],l.hopperIds=[],l.preview=o,l.originated=!1,l.disable=!1,l.disableGetContact=!1,l.hopperIds.push(l.preview.id),l.originatePreview=function(){l.originated=!0,l.disable=!0,_.isEmpty(l.preview)?(i.error({title:"Message",msg:"Contact not available"}),l.disable=!1,l.hopperIds=[],d(!0)):s.rpc.getVoiceQueuesPreview({id:l.preview.id}).$promise.then(function(e){d(!0)}).catch(function(e){i.error({title:"Message",msg:e.data}),d(!0)}).finally(function(){l.disable=!1,l.hopperIds=[]})},l.closeDialog=d,l.nextContact=function(){return l.disableGetContact=!0,s.cmHopper.getPreview({hopperIds:l.hopperIds,direction:"next"}).$promise.then(function(e){l.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(l.hopperIds=[],a.hide(),i.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(l.originated||s.cmHopper.update({id:l.preview.id,UserId:null}),l.preview=e,l.hopperIds.push(l.preview.id))}).catch(function(e){if(l.disableGetContact=!1,l.hopperIds=[],404===e.status)l.getFirstAvailableContact();else if(e.data&&e.data.errors&&e.data.errors.length){a.hide();for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.hide(),i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.previousContact=function(){if(l.disableGetContact=!0,1<l.hopperIds.length){var e=_.without(l.hopperIds,l.preview.id);return s.cmHopper.getPreview({hopperIds:e,direction:"prev"}).$promise.then(function(e){l.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(l.hopperIds=[],a.hide(),i.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(_.remove(l.hopperIds,function(e){return e==l.preview.id}),l.originated||s.cmHopper.update({id:l.preview.id,UserId:null}),l.preview=e)}).catch(function(e){if(404===e.status)l.hopperIds=[l.preview.id],i.info({title:"PREVIEW",msg:"PREVIOUS CONTACTS NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length){l.hopperIds=[],a.hide();for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.hopperIds=[],a.hide(),i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}},l.getFirstAvailableContact=function(){return l.disableGetContact=!0,i.info({title:"PREVIEW",msg:"CONTACTS NOT AVAILABLE. REWINDING THE LIST"}),s.cmHopper.getPreview({hopperIds:[l.preview.id],direction:"next"}).$promise.then(function(e){_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(a.hide(),i.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(l.originated||s.cmHopper.update({id:l.preview.id,UserId:null}),l.preview=e,l.hopperIds.push(l.preview.id))}).catch(function(e){if(a.hide(),404===e.status)i.info({title:"PREVIEW",msg:"CONTACTS NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})}).finally(function(){l.disableGetContact=!1})},l.isCustomField=function(e){return _.startsWith(e,"cf_")},l.isHiddenField=function(e){return _.includes(["Company","CompanyId","ListId","UserId","createdAt","deletedAt","id","priority","scheduledat","tags","updatedAt","facebook","twitter","skype","wechat","teams","viber","line","telegram"],e)},l.isNil=function(e){return _.isNil(e)},e.$on("$destroy",function(){l.originated||s.cmHopper.update({id:l.preview.id,UserId:null})})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","preview","customFields"],angular.module("app.toolbar").controller("PreviewDialogController",e)}(),function(){"use strict";function e(n,t,s,a,o,e,i,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y){var S,T=this;T.voiceQueues={},T.polling=!0,t.global={search:""},T.pauses=[],T.license=b,T.currentUser=v.getCurrentUser(),T.unreadTotalMessages=0,T.unreadTotalGroupMessages=0,T.contacts=0,"agent"===T.currentUser.role&&(S=E(function(){_.some(T.voiceQueues,{dialMethod:"preview",dialActive:!0})&&T.license.dialer&&T.polling?(T.polling=!1,f.cmHopper.getOpenContacts().$promise.then(function(e){e&&_.isNumber(e.contacts)&&(T.contacts=e.contacts)}).finally(function(){T.polling=!0})):T.contacts=0},14999)),T.setting=A,T.bodyEl=angular.element("body"),T.conf={realm:"asterisk",host:e.host(),protocol:e.protocol(),soundPlayerId:"local-audio",remotePlayerId:"remote-audio",ua:"Motion WebRTC Bar 0.2.0",license:T.license.webrtc,phoneBarExpires:T.currentUser.phoneBarExpires,phoneBarPrefixRequired:T.currentUser.phoneBarPrefixRequired,wssPort:T.currentUser.wssPort},T.webRTCSessions=[],T.query={id:v.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",nolimit:!0},T.userStatusOptions=[{title:"Online",icon:"icon-checkbox-marked-circle",color:"#4CAF50"},{title:"Away",icon:"icon-clock",color:"#FFC107"},{title:"Do not Disturb",icon:"icon-minus-circle",color:"#F44336"},{title:"Invisible",icon:"icon-checkbox-blank-circle-outline",color:"#BDBDBD"},{title:"Offline",icon:"icon-checkbox-blank-circle-outline",color:"#616161"}],T.languages={ar:{title:"Arabic",translation:"TOOLBAR.ARABIC",code:"ar",flag:"ar"},da:{title:"Danish",translation:"TOOLBAR.DANISH",code:"da",flag:"da"},de:{title:"German",translation:"TOOLBAR.GERMAN",code:"de",flag:"de"},en:{title:"English",translation:"TOOLBAR.ENGLISH",code:"en",flag:"us"},es:{title:"Spanish",translation:"TOOLBAR.SPANISH",code:"es",flag:"es"},fa:{title:"Persian",translation:"TOOLBAR.PERSIAN",code:"fa",flag:"fa"},fi:{title:"Finnish",translation:"TOOLBAR.FINNISH",code:"fi",flag:"fi"},fr:{title:"French",translation:"TOOLBAR.FRENCH",code:"fr",flag:"fr"},he:{title:"Hebrew",translation:"TOOLBAR.HEBREW",code:"he",flag:"he"},hi:{title:"Hindi",translation:"TOOLBAR.HINDI",code:"hi",flag:"hi"},id:{title:"Indonesian",translation:"TOOLBAR.INDONESIAN",code:"id",flag:"id"},it:{title:"Italian",translation:"TOOLBAR.ITALIAN",code:"it",flag:"it"},ja:{title:"Japanese",translation:"TOOLBAR.JAPANESE",code:"ja",flag:"ja"},ko:{title:"Korean",translation:"TOOLBAR.KOREAN",code:"ko",flag:"ko"},lv:{title:"Latvian",translation:"TOOLBAR.LATVIAN",code:"lv",flag:"lv"},nl:{title:"Dutch",translation:"TOOLBAR.DUTCH",code:"nl",flag:"nl"},no:{title:"Norwegian",translation:"TOOLBAR.NORWEGIAN",code:"no",flag:"no"},pl:{title:"Polish",translation:"TOOLBAR.POLISH",code:"pl",flag:"pl"},"pt-BR":{title:"Brazilian",translation:"TOOLBAR.BRAZILIAN",code:"pt-BR",flag:"pt-BR"},"pt-PT":{title:"Portuguese",translation:"TOOLBAR.PORTUGUESE",code:"pt-PT",flag:"pt-PT"},ru:{title:"Russian",translation:"TOOLBAR.RUSSIAN",code:"ru",flag:"ru"},sv:{title:"Swedish",translation:"TOOLBAR.SWEDISH",code:"sv",flag:"sv"},tr:{title:"Turkish",translation:"TOOLBAR.TURKISH",code:"tr",flag:"tr"},"zh-CN":{title:"ChineseSimplified",translation:"TOOLBAR.CHINESESIMPLIFIED",code:"zh-CN",flag:"zh-CN"},"zh-TW":{title:"ChineseTraditional",translation:"TOOLBAR.CHINESETRADITIONAL",code:"zh-TW",flag:"zh-TW"}};var I=["ar","fa","he"];function C(){h.connect(),h.on("user:update",T.onUserUpdate),h.on("user:called",T.onUserCalled),h.on("chatInternalMessage:save",T.onInternalMessageSave),h.on("chatInternalMessage:update",T.onInternalMessageUpdate),h.on("userVoiceQueue:save",T.onUserVoiceQueue),h.on("voiceQueue:save",T.onVoiceQueue),h.on("userVoiceQueue:remove",T.onUserVoiceQueue),h.on("voiceQueue:remove",T.onVoiceQueue),h.on("voiceQueue:update",T.onVoiceQueue),h.on("user:forcelogout",D),h.on("userNotification:send",P)}function O(){h.disconnect("logout")}function w(e){T.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}function R(){T.promise=f.user.getQueues(T.query,w).$promise}function x(e){return O(),v.logout(e).then(function(){return t.$broadcast("webrtc::logout"),a.go("app.login")}).catch(function(e){console.error(e)})}function N(e,n){c.show({controller:"ChangePasswordController",controllerAs:"vm",templateUrl:"app/toolbar/changepassword/changepassword.html",parent:angular.element(m.body),targetEvent:e,clickOutsideToClose:!n,escapeToClose:!n,locals:{user:T.user,setting:A,reset:n}})}function D(e){if(console.debug("onForceLogout -> data",e),e.user.id===T.user.id&&0!==T.user.showWebBar)return O(),v.logout(!0).then(function(){t.$broadcast("webrtc::logout"),c.show(c.alert().parent(angular.element(m.body)).clickOutsideToClose(!1).escapeToClose(!1).title(r.instant("TOOLBAR.WARNING")).textContent(r.instant("TOOLBAR.USER_FORCE_LOGOUT",{ip:e.ip})).ok("OK")).then(function(){return a.go("app.login")})}).catch(function(e){console.error(e)})}function P(e){var n=e;if(T.currentUser.id===n.recipient){var t=r.instant("TOOLBAR.NOTIFICATION_TITLE",{sender:n.sender}),a=n.description?r.instant("TOOLBAR.NOTIFICATION_TITLE_RECIPIENT",{recipient:n.description}):null;p.wait({title:a?t+" "+a:t,msg:n.content,clickToClose:!1,timeout:!1,sound:n.beep,html:!0})}}T.toggleSidenav=function(e){i(e).toggle()},T.logout=x,T.changeLanguage=function(e){if(!T.languages.hasOwnProperty(e.code)){return void l.show({template:'<md-toast id="language-message" layout="column" layout-align="center start"><div class="md-toast-content">Motion supports multiple translations through angular-translate module, but currently we do not support the selected language. If you want to help us, send us a message.</div></md-toast>',hideDelay:7e3,position:"top right",parent:"#content"})}T.selectedLanguage=e,u.put("motion.language",e.code),r.use(e.code),"app.callysquare.projects.edit"===a.current.name&&d.location.reload();0<=I.indexOf(e.code)?p.info({title:r.instant("TOOLBAR.CHANGE_LANGUAGE_TITLE"),msg:r.instant("TOOLBAR.CHANGE_LANGUAGE_MESSAGE")}):n.$parent.$parent.vm.direction="ltr"},T.setUserStatus=function(e){T.userStatus=e},T.toggleHorizontalMobileMenu=function(){T.bodyEl.toggleClass("ms-navigation-horizontal-mobile-menu-active")},T.toggleMsNavigationFolded=function(){g.toggleFolded()},T.search=function(n){for(var e=[],t=g.getFlatNavigation(),a=s.defer(),i=0;i<t.length;i++)t[i].uisref&&e.push(t[i]);n&&(e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(n)))return!0}));return o(function(){a.resolve(e)},1e3),a.promise},T.searchResultClick=function(e){e.uisref&&(e.stateParams?a.go(e.state,e.stateParams):a.go(e.state))},T.openSettings=function(e){t.$broadcast("webrtc::settings")},T.changePassword=N,T.isAgent=function(){return v.getCurrentUser()&&v.hasRole("agent")},T.onUserUpdate=function(e){if(e.id===T.user.id)if("agent"===e.role&&_.isBoolean(e.online)&&!e.online)if(0!==T.user.showWebBar){var t;O();var n=c.confirm({title:r.instant("TOOLBAR.WARNING")+"!",htmlContent:"<span>"+r.instant("TOOLBAR.SOMEONE_LOGGED_YOU_OUT")+"</span><br><span>"+r.instant("TOOLBAR.SESSION_TIMEOUT")+"</span>",ariaLabel:r.instant("TOOLBAR.WARNING")+"!",ok:r.instant("TOOLBAR.STAY_LOGGED"),cancel:r.instant("TOOLBAR.LOGOUT"),onComplete:function(e,n){t=setTimeout(function(){c.cancel()},6e4)}});c.show(n).then(function(){return clearTimeout(t),v.queueLogin().then(function(){C(),_.merge(T.user,e),v.setCurrentUser(T.user)})}).catch(function(e){clearTimeout(t),x(!0)})}else x(!0);else _.merge(T.user,e),v.setCurrentUser(T.user)},T.onUserCalled=function(e){if(2===T.currentUser.showWebBar&&"agent"===T.currentUser.role){var n=T.currentUser.privacyEnabled?y.mask(e.calleridnum):e.calleridnum;p.info({title:"WebRTC Popup",msg:"<div>            <span>Call from: "+n+"</span><br>            <span>Queue: "+e.queue+"</span><br>            <span>Extra: "+(e.variables&&e.variables.extravar?e.variables.extravar:"Not defined")+"</span><br>            </div>",showClose:!0,timeout:1e4,html:!0})}},T.pause=function(e){var n=e||"DEFAULT PAUSE";_.some(T.webRTCSessions,["confirmed",!0])&&(n="#"+n);return f.user.pause({id:T.user.id,type:n}).$promise.catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:PAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})})},T.unpause=function(){return f.user.unpause({id:T.user.id}).$promise.catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UNPAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})})},T.preview=function(n){return T.disable=!0,f.cmHopper.getPreview().$promise.then(function(e){_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?p.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"}):c.show({controller:"PreviewDialogController",controllerAs:"vm",templateUrl:"app/toolbar/preview/dialog.html",parent:angular.element(m.body),targetEvent:n,clickOutsideToClose:!0,locals:{preview:e,currentUser:T.currentUser},resolve:{customFields:["apiResolver",function(e){return e.resolve("cmCustomField@get",{nolimit:!0})}]}})}).catch(function(e){if(404===e.status)p.info({title:"PREVIEW",msg:"CONTACT NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length){T.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}).finally(function(){T.disable=!1})},T.getLogo=function(){return T.setting.defaultHeaderWhiteLabel?"xCALLY Motion":T.setting.headerWhiteLabel},T.userIsNotPhonebar=function(){return"admin"===T.currentUser.role||"user"===T.currentUser.role||"agent"===T.currentUser.role&&0!==T.currentUser.showWebBar},T.onInternalMessageSave=function(e){e.ToId!==T.currentUser.id||e.ChatGroupId||(T.unreadTotalMessages+=1);e.ToId===T.currentUser.id&&e.FromId!==T.currentUser.id&&!e.read&&e.ChatGroupId&&T.unreadTotalGroupMessages++},T.onInternalMessageUpdate=function(e){e.ToId===T.currentUser.id&&e.read&&0<T.unreadTotalMessages&&!e.ChatGroupId&&(T.unreadTotalMessages-=1);e.ToId===T.currentUser.id&&e.read&&e.ChatGroupId&&0<T.unreadTotalGroupMessages&&T.unreadTotalGroupMessages--},T.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===v.getCurrentUser().id&&R()},T.onVoiceQueue=function(e){R()},function(){T.user=v.getCurrentUser(),T.conf.ha1=T.user.md5secret,T.conf.id=T.user.id,T.conf.name=T.user.name,T.conf.fullname=T.user.fullname,T.conf.internal=T.user.internal,T.conf.recording=T.user.phoneBarEnableRecording,T.conf.autoAnswer=T.user.phoneBarAutoAnswer,T.conf.enableSettings=T.user.phoneBarEnableSettings,T.conf.enableDtmfTone=T.user.phoneBarEnableDtmfTone,T.conf.autoAnswerDelay=T.user.phoneBarAutoAnswerDelay,T.userStatus=T.userStatusOptions[0];var e=u.get("motion.language");e&&T.languages.hasOwnProperty(e)?T.selectedLanguage=T.languages[e]:T.selectedLanguage=T.languages[r.preferredLanguage()];if(f.pause.get({fields:"name",nolimit:!0}).$promise.then(function(e){T.pauses=e.rows?e.rows:[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETPAUSES",msg:e.status?JSON.stringify(e.data):e.toString()})}),"LOCAL_LOGIN"==v.getAuthenticationType()&&T.setting.securePassword)if(T.user.passwordResetAt){var n=moment(T.user.passwordResetAt).add(T.setting.passwordExpiresDays||90,"day");moment().isAfter(n)?N(null,!0):moment().add(15,"day").isAfter(n)&&p.warning({title:r.instant("TOOLBAR.WARNING")+"!",msg:r.instant("TOOLBAR.PASSWORD_EXPIRE_REMAINING_DAYS")+": "+Math.ceil(n.diff(moment(),"days",!0)),timeout:2e4})}else N(null,!0)}(),R(),C(),f.chatInternalMessage.get({fields:"FromId",ToId:T.currentUser.id,read:!1,nolimit:!0}).$promise.then(function(e){T.unreadTotalMessages=e.rows.length}),n.$on("$destroy",function(){h.removeAllListeners("user:called"),h.removeAllListeners("user:update"),h.removeAllListeners("chatInternalMessage:save"),h.removeAllListeners("chatInternalMessage:update"),h.removeAllListeners("userVoiceQueue:save"),h.removeAllListeners("voiceQueue:save"),h.removeAllListeners("userVoiceQueue:remove"),h.removeAllListeners("voiceQueue:remove"),h.removeAllListeners("voiceQueue:update"),h.removeAllListeners("user:forcelogout"),h.removeAllListeners("userNotification:send"),S&&(E.cancel(S),S=null)})}e.$inject=["$scope","$rootScope","$q","$state","$timeout","$location","$mdSidenav","$translate","$mdToast","$window","$mdDialog","$document","$cookies","toasty","msNavigationService","Auth","socket","api","license","setting","$interval","privacyManager"],angular.module("app.toolbar").controller("ToolbarController",e)}();var urlParams=function(e){var n=new Object,t=e.lastIndexOf("?");if(0<t)for(var a=e.substring(t+1).split("&"),i=0;i<a.length;i++)0<(t=a[i].indexOf("="))&&(n[a[i].substring(0,t)]=a[i].substring(t+1));return n}(window.location.href),t0=new Date,MAX_REQUEST_SIZE=10485760,MAX_WIDTH=12e3,MAX_HEIGHT=12e3,EXPORT_URL="http://exp.draw.io/ImageExport2/export",SHARE_HOST="http://localhost:3000",SAVE_URL="api/square/projects/",VARIABLE_URL="/api/variables",STENCIL_PATH="/assets/plugins/square/stencils",SHAPES_PATH="/assets/plugins/square/shapes",IMAGE_PATH="/assets/plugins/square/images",STYLE_PATH="/assets/plugins/square/styles",CSS_PATH="/assets/plugins/square/styles",OPEN_FORM="api/square/projects/open",TEMPLATE_PATH="/assets/plugins/square/templates",RESOURCES_PATH="/assets/plugins/square/resources",RESOURCE_BASE=RESOURCES_PATH+"/grapheditor",CRUD_PERMISSIONS={readOnly:!1,canEdit:!1,canDelete:!1},tapAndHoldStartsConnection=!0,showConnectorImg=!0,mxLoadResources=!1,mxLanguages=["it","fr","ko","es","sv","ru","de","ja","zh-CN","zh-TW","nl","fi","da","pt-BR","pt-PT","no","hi","tr","fa"],mxLanguage="en",match=document.cookie.match(new RegExp("(^| )motion.language=([^;]+)"));match&&mxLanguages.includes(match[2])&&(mxLanguage=match[2]);var mxBasePath="assets/plugins/mxgraph",mxClient={VERSION:"2.0.0.0",IS_IE:0<=navigator.userAgent.indexOf("MSIE"),IS_IE6:0<=navigator.userAgent.indexOf("MSIE 6"),IS_QUIRKS:0<=navigator.userAgent.indexOf("MSIE")&&(null==document.documentMode||5==document.documentMode),VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:0<=navigator.userAgent.indexOf("Mozilla/")&&navigator.userAgent.indexOf("MSIE")<0,IS_OP:0<=navigator.userAgent.indexOf("Opera/"),IS_OT:navigator.userAgent.indexOf("Presto/2.4.")<0&&navigator.userAgent.indexOf("Presto/2.3.")<0&&navigator.userAgent.indexOf("Presto/2.2.")<0&&navigator.userAgent.indexOf("Presto/2.1.")<0&&navigator.userAgent.indexOf("Presto/2.0.")<0&&navigator.userAgent.indexOf("Presto/1.")<0,IS_SF:0<=navigator.userAgent.indexOf("AppleWebKit/")&&navigator.userAgent.indexOf("Chrome/")<0,IS_GC:0<=navigator.userAgent.indexOf("Chrome/"),IS_MT:0<=navigator.userAgent.indexOf("Firefox/")&&navigator.userAgent.indexOf("Firefox/1.")<0&&navigator.userAgent.indexOf("Firefox/2.")<0||0<=navigator.userAgent.indexOf("Iceweasel/")&&navigator.userAgent.indexOf("Iceweasel/1.")<0&&navigator.userAgent.indexOf("Iceweasel/2.")<0||0<=navigator.userAgent.indexOf("SeaMonkey/")&&navigator.userAgent.indexOf("SeaMonkey/1.")<0||0<=navigator.userAgent.indexOf("Iceape/")&&navigator.userAgent.indexOf("Iceape/1.")<0,IS_SVG:0<=navigator.userAgent.indexOf("Firefox/")||0<=navigator.userAgent.indexOf("Iceweasel/")||0<=navigator.userAgent.indexOf("Seamonkey/")||0<=navigator.userAgent.indexOf("Iceape/")||0<=navigator.userAgent.indexOf("Galeon/")||0<=navigator.userAgent.indexOf("Epiphany/")||0<=navigator.userAgent.indexOf("AppleWebKit/")||0<=navigator.userAgent.indexOf("Gecko/")||0<=navigator.userAgent.indexOf("Opera/"),NO_FO:0<=navigator.userAgent.indexOf("Firefox/1.")||0<=navigator.userAgent.indexOf("Iceweasel/1.")||0<=navigator.userAgent.indexOf("Firefox/2.")||0<=navigator.userAgent.indexOf("Iceweasel/2.")||0<=navigator.userAgent.indexOf("SeaMonkey/1.")||0<=navigator.userAgent.indexOf("Iceape/1.")||0<=navigator.userAgent.indexOf("Camino/1.")||0<=navigator.userAgent.indexOf("Epiphany/2.")||0<=navigator.userAgent.indexOf("Opera/")||0<=navigator.userAgent.indexOf("MSIE")||0<=navigator.userAgent.indexOf("Mozilla/2."),IS_VML:"MICROSOFT INTERNET EXPLORER"==navigator.appName.toUpperCase(),IS_MAC:0<navigator.userAgent.toUpperCase().indexOf("MACINTOSH"),IS_TOUCH:0<navigator.userAgent.toUpperCase().indexOf("IPAD")||0<navigator.userAgent.toUpperCase().indexOf("IPOD")||0<navigator.userAgent.toUpperCase().indexOf("IPHONE")||0<navigator.userAgent.toUpperCase().indexOf("ANDROID"),IS_LOCAL:document.location.href.indexOf("http://")<0&&document.location.href.indexOf("https://")<0,isBrowserSupported:function(){return mxClient.IS_VML||mxClient.IS_SVG},link:function(e,n,t){if(t=t||document,mxClient.IS_IE6)t.write('<link rel="'+e+'" href="'+n+'" charset="ISO-8859-1" type="text/css"/>');else{var a=t.createElement("link");a.setAttribute("rel",e),a.setAttribute("href",n),a.setAttribute("charset","ISO-8859-1"),a.setAttribute("type","text/css"),t.getElementsByTagName("head")[0].appendChild(a)}},include:function(e){document.write('<script src="'+e+'"><\/script>')},dispose:function(){for(var e=0;e<mxEvent.objects.length;e++)null!=mxEvent.objects[e].mxListenerList&&mxEvent.removeAllListeners(mxEvent.objects[e])}};if(mxClient.IS_OP&&mxClient.IS_OT?mxClient.CSS_PREFIX="O":mxClient.IS_SF||mxClient.IS_GC?mxClient.CSS_PREFIX="Webkit":mxClient.IS_MT?mxClient.CSS_PREFIX="Moz":mxClient.IS_IE&&9<=document.documentMode&&(mxClient.CSS_PREFIX="ms"),void 0===mxLoadResources&&(mxLoadResources=!0),"undefined"==typeof mxResourceExtension&&(mxResourceExtension=".txt"),"undefined"==typeof mxLoadStylesheets&&(mxLoadStylesheets=!0),void 0!==mxBasePath&&0<mxBasePath.length?("/"==mxBasePath.substring(mxBasePath.length-1)&&(mxBasePath=mxBasePath.substring(0,mxBasePath.length-1)),mxClient.basePath=mxBasePath):mxClient.basePath=".","undefined"!=typeof mxImageBasePath&&0<mxImageBasePath.length?("/"==mxImageBasePath.substring(mxImageBasePath.length-1)&&(mxImageBasePath=mxImageBasePath.substring(0,mxImageBasePath.length-1)),mxClient.imageBasePath=mxImageBasePath):mxClient.imageBasePath=mxClient.basePath+"/images",mxClient.language=void 0!==mxLanguage?mxLanguage:mxClient.IS_IE?navigator.userLanguage:navigator.language,mxClient.defaultLanguage="undefined"!=typeof mxDefaultLanguage?mxDefaultLanguage:"en",mxLoadStylesheets&&mxClient.link("stylesheet",mxClient.basePath+"/css/common.css"),void 0!==mxLanguages&&(mxClient.languages=mxLanguages),mxClient.IS_IE){if(9<=document.documentMode)mxClient.IS_VML=!1,mxClient.IS_SVG=!0;else{8==document.documentMode?(document.namespaces.add(mxClient.VML_PREFIX,"urn:schemas-microsoft-com:vml","#default#VML"),document.namespaces.add(mxClient.OFFICE_PREFIX,"urn:schemas-microsoft-com:office:office","#default#VML")):(document.namespaces.add(mxClient.VML_PREFIX,"urn:schemas-microsoft-com:vml"),document.namespaces.add(mxClient.OFFICE_PREFIX,"urn:schemas-microsoft-com:office:office"));var ss=document.createStyleSheet();ss.cssText="v\\:*{behavior:url(#default#VML)}o\\:*{behavior:url(#default#VML)}",mxLoadStylesheets&&mxClient.link("stylesheet",mxClient.basePath+"/css/explorer.css")}window.attachEvent("onunload",mxClient.dispose)}var mxLog={consoleName:"Console",TRACE:!1,DEBUG:!0,WARN:!0,buffer:"",init:function(){if(null==mxLog.window&&null!=document.body){var e=mxLog.consoleName+" - mxGraph "+mxClient.VERSION,n=document.createElement("table");n.setAttribute("width","100%"),n.setAttribute("height","100%");var t=document.createElement("tbody"),a=document.createElement("tr"),i=document.createElement("td");if(i.style.verticalAlign="top",mxLog.textarea=document.createElement("textarea"),mxLog.textarea.setAttribute("readOnly","true"),mxLog.textarea.style.height="100%",mxLog.textarea.style.resize="none",mxLog.textarea.value=mxLog.buffer,mxLog.textarea.style.width=mxClient.IS_NS&&"BackCompat"!=document.compatMode?"99%":"100%",i.appendChild(mxLog.textarea),a.appendChild(i),t.appendChild(a),a=document.createElement("tr"),mxLog.td=document.createElement("td"),mxLog.td.style.verticalAlign="top",mxLog.td.setAttribute("height","30px"),a.appendChild(mxLog.td),t.appendChild(a),n.appendChild(t),mxLog.addButton("Info",function(e){mxLog.info()}),mxLog.addButton("DOM",function(e){e=mxUtils.getInnerHtml(document.body),mxLog.debug(e)}),mxLog.addButton("Trace",function(e){mxLog.TRACE=!mxLog.TRACE,mxLog.TRACE?mxLog.debug("Tracing enabled"):mxLog.debug("Tracing disabled")}),mxLog.addButton("Copy",function(e){try{mxUtils.copy(mxLog.textarea.value)}catch(e){mxUtils.alert(e)}}),mxLog.addButton("Show",function(e){try{mxUtils.popup(mxLog.textarea.value)}catch(e){mxUtils.alert(e)}}),mxLog.addButton("Clear",function(e){mxLog.textarea.value=""}),a=t=0,a="number"==typeof window.innerWidth?(t=window.innerHeight,window.innerWidth):(t=document.documentElement.clientHeight||document.body.clientHeight,document.body.clientWidth),mxLog.window=new mxWindow(e,n,Math.max(0,a-320),Math.max(0,t-210),300,160),mxLog.window.setMaximizable(!0),mxLog.window.setScrollable(!1),mxLog.window.setResizable(!0),mxLog.window.setClosable(!0),mxLog.window.destroyOnClose=!1,(mxClient.IS_NS||mxClient.IS_IE)&&!mxClient.IS_GC&&!mxClient.IS_SF&&"BackCompat"!=document.compatMode){var s=mxLog.window.getElement();e=function(e,n){mxLog.textarea.style.height=Math.max(0,s.offsetHeight-70)+"px"};mxLog.window.addListener(mxEvent.RESIZE_END,e),mxLog.window.addListener(mxEvent.MAXIMIZE,e),mxLog.window.addListener(mxEvent.NORMALIZE,e),mxLog.textarea.style.height="92px"}}},info:function(){mxLog.writeln(mxUtils.toString(navigator))},addButton:function(e,n){var t=document.createElement("button");mxUtils.write(t,e),mxEvent.addListener(t,"click",n),mxLog.td.appendChild(t)},isVisible:function(){return null!=mxLog.window&&mxLog.window.isVisible()},show:function(){mxLog.setVisible(!0)},setVisible:function(e){null==mxLog.window&&mxLog.init(),null!=mxLog.window&&mxLog.window.setVisible(e)},enter:function(e){if(mxLog.TRACE)return mxLog.writeln("Entering "+e),(new Date).getTime()},leave:function(e,n){if(mxLog.TRACE){var t=0!=n?" ("+((new Date).getTime()-n)+" ms)":"";mxLog.writeln("Leaving "+e+t)}},debug:function(){mxLog.DEBUG&&mxLog.writeln.apply(this,arguments)},warn:function(){mxLog.WARN&&mxLog.writeln.apply(this,arguments)},write:function(){for(var e="",n=0;n<arguments.length;n++)e+=arguments[n],n<arguments.length-1&&(e+=" ");null!=mxLog.textarea?(mxLog.textarea.value+=e,0<=navigator.userAgent.indexOf("Presto/2.5")&&(mxLog.textarea.style.visibility="hidden",mxLog.textarea.style.visibility="visible"),mxLog.textarea.scrollTop=mxLog.textarea.scrollHeight):mxLog.buffer+=e},writeln:function(){for(var e="",n=0;n<arguments.length;n++)e+=arguments[n],n<arguments.length-1&&(e+=" ");mxLog.write(e+"\n")}},mxObjectIdentity={FIELD_NAME:"mxObjectId",counter:0,get:function(e){if("object"==typeof e&&null==e[mxObjectIdentity.FIELD_NAME]){var n=mxUtils.getFunctionName(e.constructor);e[mxObjectIdentity.FIELD_NAME]=n+"#"+mxObjectIdentity.counter++}return e[mxObjectIdentity.FIELD_NAME]},clear:function(e){"object"==typeof e&&delete e[mxObjectIdentity.FIELD_NAME]}};function mxDictionary(){this.clear()}mxDictionary.prototype.map=null,mxDictionary.prototype.clear=function(){this.map={}},mxDictionary.prototype.get=function(e){return e=mxObjectIdentity.get(e),this.map[e]},mxDictionary.prototype.put=function(e,n){var t=mxObjectIdentity.get(e),a=this.map[t];return this.map[t]=n,a},mxDictionary.prototype.remove=function(e){e=mxObjectIdentity.get(e);var n=this.map[e];return delete this.map[e],n},mxDictionary.prototype.getKeys=function(){var e,n=[];for(e in this.map)n.push(e);return n},mxDictionary.prototype.getValues=function(){var e,n=[];for(e in this.map)n.push(this.map[e]);return n},mxDictionary.prototype.visit=function(e){for(var n in this.map)e(n,this.map[n])};var mxResources={resources:[],extension:mxResourceExtension,resourcesEncoded:!1,loadDefaultBundle:!0,loadSpecialBundle:!0,isLanguageSupported:function(e){return null==mxClient.languages||0<=mxUtils.indexOf(mxClient.languages,e)},getDefaultBundle:function(e,n){return mxResources.loadDefaultBundle||!mxResources.isLanguageSupported(n)?e+mxResources.extension:null},getSpecialBundle:function(e,n){if(null==mxClient.languages||!this.isLanguageSupported(n)){var t=n.indexOf("-");0<t&&(n=n.substring(0,t))}return mxResources.loadSpecialBundle&&mxResources.isLanguageSupported(n)&&n!=mxClient.defaultLanguage?e+"_"+n+mxResources.extension:null},add:function(e,n){if((n=null!=n?n:mxClient.language)!=mxConstants.NONE){var t=mxResources.getDefaultBundle(e,n);if(null!=t)try{var a=mxUtils.load(t);a.isReady()&&mxResources.parse(a.getText())}catch(e){}if(null!=(t=mxResources.getSpecialBundle(e,n)))try{(a=mxUtils.load(t)).isReady()&&mxResources.parse(a.getText())}catch(e){}}},parse:function(e){if(null!=e){e=e.split("\n");for(var n=0;n<e.length;n++)if("#"!=e[n].charAt(0)){var t=e[n].indexOf("=");if(0<t){var a=e[n].substring(0,t),i=e[n].length;13==e[n].charCodeAt(i-1)&&i--,t=e[n].substring(t+1,i),this.resourcesEncoded?(t=t.replace(/\\(?=u[a-fA-F\d]{4})/g,"%"),mxResources.resources[a]=unescape(t)):mxResources.resources[a]=t}}}},get:function(e,n,t){if(null==(e=mxResources.resources[e])&&(e=t),null!=e&&null!=n){t=[];for(var a=null,i=0;i<e.length;i++){var s=e.charAt(i);"{"==s?a="":null!=a&&"}"==s?(0<=(a=parseInt(a)-1)&&a<n.length&&t.push(n[a]),a=null):null!=a?a+=s:t.push(s)}e=t.join("")}return e}};function mxPoint(e,n){this.x=null!=e?e:0,this.y=null!=n?n:0}function mxRectangle(e,n,t,a){mxPoint.call(this,e,n),this.width=null!=t?t:0,this.height=null!=a?a:0}mxPoint.prototype.x=null,mxPoint.prototype.y=null,mxPoint.prototype.equals=function(e){return e.x==this.x&&e.y==this.y},mxPoint.prototype.clone=function(){return mxUtils.clone(this)},mxRectangle.prototype=new mxPoint,mxRectangle.prototype.constructor=mxRectangle,mxRectangle.prototype.width=null,mxRectangle.prototype.height=null,mxRectangle.prototype.setRect=function(e,n,t,a){this.x=e,this.y=n,this.width=t,this.height=a},mxRectangle.prototype.getCenterX=function(){return this.x+this.width/2},mxRectangle.prototype.getCenterY=function(){return this.y+this.height/2},mxRectangle.prototype.add=function(e){if(null!=e){var n=Math.min(this.x,e.x),t=Math.min(this.y,e.y),a=Math.max(this.x+this.width,e.x+e.width);e=Math.max(this.y+this.height,e.y+e.height),this.x=n,this.y=t,this.width=a-n,this.height=e-t}},mxRectangle.prototype.grow=function(e){this.x-=e,this.y-=e,this.width+=2*e,this.height+=2*e},mxRectangle.prototype.getPoint=function(){return new mxPoint(this.x,this.y)},mxRectangle.prototype.equals=function(e){return e.x==this.x&&e.y==this.y&&e.width==this.width&&e.height==this.height};var mxEffects={animateChanges:function(l,d,c){var m=0,u=function(){for(var e=!1,n=0;n<d.length;n++){var t=d[n];if(t instanceof mxGeometryChange||t instanceof mxTerminalChange||t instanceof mxValueChange||t instanceof mxChildChange||t instanceof mxStyleChange){var a=l.getView().getState(t.cell||t.child,!1);if(null!=a)if(e=!0,t.constructor!=mxGeometryChange||l.model.isEdge(t.cell))mxUtils.setOpacity(a.shape.node,100*m/10);else{var i=l.getView().scale,s=(t.geometry.x-t.previous.x)*i,o=(t.geometry.y-t.previous.y)*i,r=(t.geometry.width-t.previous.width)*i;i=(t.geometry.height-t.previous.height)*i;0==m?(a.x-=s,a.y-=o,a.width-=r,a.height-=i):(a.x+=s/10,a.y+=o/10,a.width+=r/10,a.height+=i/10),l.cellRenderer.redraw(a),mxEffects.cascadeOpacity(l,t.cell,100*m/10)}}}m<10&&e?(m++,window.setTimeout(u,p)):null!=c&&c()},p=30;u()},cascadeOpacity:function(e,n,t){for(var a=e.model.getChildCount(n),i=0;i<a;i++){var s=e.model.getChildAt(n,i),o=e.getView().getState(s);null!=o&&(mxUtils.setOpacity(o.shape.node,t),mxEffects.cascadeOpacity(e,s,t))}if(null!=(n=e.model.getEdges(n)))for(i=0;i<n.length;i++)null!=(a=e.getView().getState(n[i]))&&mxUtils.setOpacity(a.shape.node,t)},fadeOut:function(e,n,t,a,i,s){a=a||40,i=i||30;var o=n||100;if(mxUtils.setOpacity(e,o),s||null==s){var r=function(){o=Math.max(o-a,0),mxUtils.setOpacity(e,o),0<o?window.setTimeout(r,i):(e.style.visibility="hidden",t&&e.parentNode&&e.parentNode.removeChild(e))};window.setTimeout(r,i)}else e.style.visibility="hidden",t&&e.parentNode&&e.parentNode.removeChild(e)}},mxUtils={errorResource:"none"!=mxClient.language?"error":"",closeResource:"none"!=mxClient.language?"close":"",errorImage:mxClient.imageBasePath+"/error.gif",removeCursors:function(e){if(null!=e.style&&(e.style.cursor=""),null!=(e=e.childNodes))for(var n=e.length,t=0;t<n;t+=1)mxUtils.removeCursors(e[t])},getCurrentStyle:mxClient.IS_IE?function(e){return null!=e?e.currentStyle:null}:function(e){return null!=e?window.getComputedStyle(e,""):null},hasScrollbars:function(e){return null!=(e=mxUtils.getCurrentStyle(e))&&("scroll"==e.overflow||"auto"==e.overflow)},bind:function(e,n){return function(){return n.apply(e,arguments)}},eval:function(a){var b=null;if(0<=a.indexOf("function"))try{eval("var _mxJavaScriptExpression="+a),b=_mxJavaScriptExpression,_mxJavaScriptExpression=null}catch(e){mxLog.warn(e.message+" while evaluating "+a)}else try{b=eval(a)}catch(e){mxLog.warn(e.message+" while evaluating "+a)}return b},findNode:function(e,n,t){var a=e.getAttribute(n);if(null!=a&&a==t)return e;for(e=e.firstChild;null!=e;){if(null!=(a=mxUtils.findNode(e,n,t)))return a;e=e.nextSibling}return null},findNodeByAttribute:9<=document.documentMode?function(e,n,t){var a=null;if(null!=e)if(e.nodeType==mxConstants.NODETYPE_ELEMENT&&e.getAttribute(n)==t)a=e;else for(e=e.firstChild;null!=e&&null==a;)a=mxUtils.findNodeByAttribute(e,n,t),e=e.nextSibling;return a}:mxClient.IS_IE?function(e,n,t){return null==e?null:e.ownerDocument.selectSingleNode("//*[@"+n+"='"+t+"']")}:function(e,n,t){return null==e?null:e.ownerDocument.evaluate("//*[@"+n+"='"+t+"']",e.ownerDocument,null,XPathResult.ANY_TYPE,null).iterateNext()},getFunctionName:function(e){var n=null;if(null!=e)if(null!=e.name)n=e.name;else{for(e=e.toString(),n=9;" "==e.charAt(n);)n++;var t=e.indexOf("(",n);n=e.substring(n,t)}return n},indexOf:function(e,n){if(null!=e&&null!=n)for(var t=0;t<e.length;t++)if(e[t]==n)return t;return-1},remove:function(e,n){var t=null;if("object"==typeof n)for(var a=mxUtils.indexOf(n,e);0<=a;)n.splice(a,1),t=e,a=mxUtils.indexOf(n,e);for(var i in n)n[i]==e&&(delete n[i],t=e);return t},isNode:function(e,n,t,a){return!(null==e||isNaN(e.nodeType)||null!=n&&e.nodeName.toLowerCase()!=n.toLowerCase())&&(null==t||e.getAttribute(t)==a)},getChildNodes:function(e,n){n=n||mxConstants.NODETYPE_ELEMENT;for(var t=[],a=e.firstChild;null!=a;)a.nodeType==n&&t.push(a),a=a.nextSibling;return t},createXmlDocument:function(){var e=null;return document.implementation&&document.implementation.createDocument?e=document.implementation.createDocument("","",null):window.ActiveXObject&&(e=new ActiveXObject("Microsoft.XMLDOM")),e},parseXml:mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?function(e){var n=mxUtils.createXmlDocument();return n.async="false",n.loadXML(e),n}:function(e){return(new DOMParser).parseFromString(e,"text/xml")},clearSelection:document.selection?function(){document.selection.empty()}:window.getSelection?function(){window.getSelection().removeAllRanges()}:void 0,getPrettyXml:function(e,n,t){var a=[];if(null!=e)if(n=n||"  ",t=t||"",e.nodeType==mxConstants.NODETYPE_TEXT)a.push(e.nodeValue);else{a.push(t+"<"+e.nodeName);var i=e.attributes;if(null!=i)for(var s=0;s<i.length;s++){var o=mxUtils.htmlEntities(i[s].nodeValue);a.push(" "+i[s].nodeName+'="'+o+'"')}if(null!=(i=e.firstChild)){for(a.push(">\n");null!=i;)a.push(mxUtils.getPrettyXml(i,n,t+n)),i=i.nextSibling;a.push(t+"</"+e.nodeName+">\n")}else a.push("/>\n")}return a.join("")},removeWhitespace:function(e,n){for(var t=n?e.previousSibling:e.nextSibling;null!=t&&t.nodeType==mxConstants.NODETYPE_TEXT;){var a=n?t.previousSibling:t.nextSibling,i=mxUtils.getTextContent(t);0==mxUtils.trim(i).length&&t.parentNode.removeChild(t),t=a}},htmlEntities:function(e,n){return e=(e=(e=(e=(e=(e||"").replace(/&/g,"&amp;")).replace(/"/g,"&quot;")).replace(/\'/g,"&#39;")).replace(/</g,"&lt;")).replace(/>/g,"&gt;"),(null==n||n)&&(e=e.replace(/\n/g,"&#xa;")),e},isVml:function(e){return null!=e&&"urn:schemas-microsoft-com:vml"==e.tagUrn},getXml:function(e,n){var t="";return null!=e&&(t=null==(t=e.xml)?e.innerHTML?e.innerHTML:(new XMLSerializer).serializeToString(e):t.replace(/\r\n\t[\t]*/g,"").replace(/>\r\n/g,">").replace(/\r\n/g,"\n")),t.replace(/\n/g,n||"&#xa;")},getTextContent:function(e){var n="";return null!=e&&(null!=e.firstChild&&(e=e.firstChild),n=e.nodeValue||""),n},getInnerHtml:mxClient.IS_IE?function(e){return null!=e?e.innerHTML:""}:function(e){return null!=e?(new XMLSerializer).serializeToString(e):""},getOuterHtml:mxClient.IS_IE?function(e){if(null==e)return"";if(null!=e.outerHTML)return e.outerHTML;var n=[];n.push("<"+e.nodeName);var t=e.attributes;if(null!=t)for(var a=0;a<t.length;a++){var i=t[a].nodeValue;null!=i&&0<i.length&&(n.push(" "),n.push(t[a].nodeName),n.push('="'),n.push(i),n.push('"'))}return 0==e.innerHTML.length?n.push("/>"):(n.push(">"),n.push(e.innerHTML),n.push("</"+e.nodeName+">")),n.join("")}:function(e){return null!=e?(new XMLSerializer).serializeToString(e):""},write:function(e,n){var t=e.ownerDocument.createTextNode(n);return null!=e&&e.appendChild(t),t},writeln:function(e,n){var t=e.ownerDocument.createTextNode(n);return null!=e&&(e.appendChild(t),e.appendChild(document.createElement("br"))),t},br:function(e,n){n=n||1;for(var t=null,a=0;a<n;a++)null!=e&&(t=e.ownerDocument.createElement("br"),e.appendChild(t));return t},button:function(e,n,t){return t=(t=null!=t?t:document).createElement("button"),mxUtils.write(t,e),mxEvent.addListener(t,"click",function(e){n(e)}),t},para:function(e,n){var t=document.createElement("p");return mxUtils.write(t,n),null!=e&&e.appendChild(t),t},addTransparentBackgroundFilter:function(e){e.style.filter+="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+mxClient.imageBasePath+"/transparent.gif', sizingMethod='scale')"},linkAction:function(e,n,t,a,i){return mxUtils.link(e,n,function(){t.execute(a)},i)},linkInvoke:function(e,n,t,a,i,s){return mxUtils.link(e,n,function(){t[a](i)},s)},link:function(e,n,t,a){var i=document.createElement("span");return i.style.color="blue",i.style.textDecoration="underline",i.style.cursor="pointer",null!=a&&(i.style.paddingLeft=a+"px"),mxEvent.addListener(i,"click",t),mxUtils.write(i,n),null!=e&&e.appendChild(i),i},fit:function(e){var n=parseInt(e.offsetLeft),t=parseInt(e.offsetWidth),a=document.body,i=document.documentElement,s=(a.scrollLeft||i.scrollLeft)+(a.clientWidth||i.clientWidth);s<n+t&&(e.style.left=Math.max(a.scrollLeft||i.scrollLeft,s-t)+"px"),n=parseInt(e.offsetTop),t=parseInt(e.offsetHeight),(s=(a.scrollTop||i.scrollTop)+Math.max(a.clientHeight||0,i.clientHeight))<n+t&&(e.style.top=Math.max(a.scrollTop||i.scrollTop,s-t)+"px")},open:function(e){if(mxClient.IS_NS){try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")}catch(e){return mxUtils.alert("Permission to read file denied."),""}var n=Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);return n.initWithPath(e),n.exists()?((e=Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream)).init(n,1,4,null),(n=Components.classes["@mozilla.org/scriptableinputstream;1"].createInstance(Components.interfaces.nsIScriptableInputStream)).init(e),n.read(n.available())):(mxUtils.alert("File not found."),"")}return e=(n=new ActiveXObject("Scripting.FileSystemObject").OpenTextFile(e,1)).readAll(),n.close(),e},save:function(e,n){if(mxClient.IS_NS){try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")}catch(e){return void mxUtils.alert("Permission to write file denied.")}var t=Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);t.initWithPath(e),t.exists()||t.create(0,420);var a=Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream);a.init(t,34,4,null),a.write(n,n.length),a.flush(),a.close()}else(t=new ActiveXObject("Scripting.FileSystemObject").CreateTextFile(e,!0)).Write(n),t.Close()},saveAs:function(e){var n=document.createElement("iframe");n.setAttribute("src",""),n.style.visibility="hidden",document.body.appendChild(n);try{if(mxClient.IS_NS){var t=n.contentDocument;t.open(),t.write(e),t.close();try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"),n.focus(),saveDocument(t)}catch(e){mxUtils.alert("Permission to save document denied.")}}else(t=n.contentWindow.document).write(e),t.execCommand("SaveAs",!1,document.location)}finally{document.body.removeChild(n)}},copy:function(e){if(window.clipboardData)window.clipboardData.setData("Text",e);else{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");var n=Components.classes["@mozilla.org/widget/clipboard;1"].createInstance(Components.interfaces.nsIClipboard);if(n){var t=Components.classes["@mozilla.org/widget/transferable;1"].createInstance(Components.interfaces.nsITransferable);if(t){t.addDataFlavor("text/unicode");var a=Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);a.data=e,t.setTransferData("text/unicode",a,2*e.length),n.setData(t,null,Components.interfaces.nsIClipboard.kGlobalClipboard)}}}},load:function(e){return(e=new mxXmlRequest(e,null,"GET",!1)).send(),e},get:function(e,n,t){return new mxXmlRequest(e,null,"GET").send(n,t)},post:function(e,n,t,a){return new mxXmlRequest(e,n).send(t,a)},submit:function(e,n,t,a){return new mxXmlRequest(e,n).simulate(t,a)},loadInto:function(e,n,t){mxClient.IS_IE?n.onreadystatechange=function(){4==n.readyState&&t()}:n.addEventListener("load",t,!1),n.load(e)},getValue:function(e,n,t){return null==(e=null!=e?e[n]:null)&&(e=t),e},getNumber:function(e,n,t){return null==(e=null!=e?e[n]:null)&&(e=t||0),Number(e)},getColor:function(e,n,t){return null==(e=null!=e?e[n]:null)?e=t:e==mxConstants.NONE&&(e=null),e},clone:function(e,n,t){t=null!=t&&t;var a=null;if(null!=e&&"function"==typeof e.constructor){var i;a=new e.constructor;for(i in e)i!=mxObjectIdentity.FIELD_NAME&&(null==n||mxUtils.indexOf(n,i)<0)&&(a[i]=t||"object"!=typeof e[i]?e[i]:mxUtils.clone(e[i]))}return a},equalPoints:function(e,n){if(null==e&&null!=n||null!=e&&null==n||null!=e&&null!=n&&e.length!=n.length)return!1;if(null!=e&&null!=n)for(var t=0;t<e.length;t++)if(e[t]==n[t]||null!=e[t]&&!e[t].equals(n[t]))return!1;return!0},equalEntries:function(e,n){if(null==e&&null!=n||null!=e&&null==n||null!=e&&null!=n&&e.length!=n.length)return!1;if(null!=e&&null!=n)for(var t in e)if(e[t]!=n[t])return!1;return!0},extend:function(e,n){var t=function(){};t.prototype=n.prototype,e.prototype=new t,e.prototype.constructor=e},toString:function(e){var n,t="";for(n in e)try{if(null==e[n])t+=n+" = [null]\n";else if("function"==typeof e[n])t+=n+" => [Function]\n";else if("object"==typeof e[n])t=t+(n+" => [")+mxUtils.getFunctionName(e[n].constructor)+"]\n";else t+=n+" = "+e[n]+"\n"}catch(e){t+=n+"="+e.message}return t},toRadians:function(e){return Math.PI*e/180},arcToCurves:function(e,n,t,a,i,s,o,r,l){if(r-=e,l-=n,0===t||0===a)return h;t=Math.abs(t),a=Math.abs(a);var d=-r/2,c=-l/2,m=Math.cos(i*Math.PI/180);i=m*d+(h=Math.sin(i*Math.PI/180))*c;d=-1*h*d+m*c;r=m*(c=(s=1<(v=(c=i*i)/(g=t*t)+(p=d*d)/(A=a*a))?(t*=Math.sqrt(v),a*=Math.sqrt(v),0):(v=1,s===o&&(v=-1),v*Math.sqrt((g*A-g*p-A*c)/(g*p+A*c))))*t*d/a)-h*(p=-1*s*a*i/t)+r/2,l=h*c+m*p+l/2,s=0<=(g=Math.atan2((d-p)/a,(i-c)/t)-Math.atan2(0,1))?g:2*Math.PI+g,i=0<=(g=Math.atan2((-d-p)/a,(-i-c)/t)-Math.atan2((d-p)/a,(i-c)/t))?g:2*Math.PI+g,0==o&&0<i?i-=2*Math.PI:0!=o&&i<0&&(i+=2*Math.PI),o=2*i/Math.PI,i/=o=Math.ceil(o<0?-1*o:o),d=8/3*Math.sin(i/4)*Math.sin(i/4)/Math.sin(i/2),c=m*t,m*=a,t*=h,a*=h;for(var u=Math.cos(s),p=-d*(c*(b=Math.sin(s))+a*u),g=-d*(t*b-m*u),v=A=0,h=[],f=0;f<o;++f){s+=i;var b,A=c*(u=Math.cos(s))-a*(b=Math.sin(s))+r,E=(v=t*u+m*b+l,-d*(c*b+a*u));u=-d*(t*b-m*u);h[b=6*f]=Number(p+e),h[b+1]=Number(g+n),h[b+2]=Number(A-E+e),h[b+3]=Number(v-u+n),h[b+4]=Number(A+e),h[b+5]=Number(v+n),p=A+E,g=v+u}return h},getBoundingBox:function(e,n){var t=null;if(null!=e&&null!=n&&0!=n){var a=mxUtils.toRadians(n),i=(t=Math.cos(a),Math.sin(a)),s=new mxPoint(e.x+e.width/2,e.y+e.height/2),o=new mxPoint(e.x,e.y),r=new mxPoint((a=new mxPoint(e.x+e.width,e.y)).x,e.y+e.height),l=new mxPoint(e.x,r.y);o=mxUtils.getRotatedPoint(o,t,i,s),a=mxUtils.getRotatedPoint(a,t,i,s),r=mxUtils.getRotatedPoint(r,t,i,s),l=mxUtils.getRotatedPoint(l,t,i,s);(t=new mxRectangle(o.x,o.y,0,0)).add(new mxRectangle(a.x,a.y,0,0)),t.add(new mxRectangle(r.x,r.y,0,0)),t.add(new mxRectangle(l.x,l.y,0,0))}return t},getRotatedPoint:function(e,n,t,a){a=null!=a?a:new mxPoint;var i=e.x-a.x;return new mxPoint(i*n-(e=e.y-a.y)*t+a.x,e*n+i*t+a.y)},getPortConstraints:function(e,n,t,a){return null==(e=mxUtils.getValue(e.style,mxConstants.STYLE_PORT_CONSTRAINT,null))?a:(a=e.toString(),e=mxConstants.DIRECTION_MASK_NONE,0<=a.indexOf(mxConstants.DIRECTION_NORTH)&&(e|=mxConstants.DIRECTION_MASK_NORTH),0<=a.indexOf(mxConstants.DIRECTION_WEST)&&(e|=mxConstants.DIRECTION_MASK_WEST),0<=a.indexOf(mxConstants.DIRECTION_SOUTH)&&(e|=mxConstants.DIRECTION_MASK_SOUTH),0<=a.indexOf(mxConstants.DIRECTION_EAST)&&(e|=mxConstants.DIRECTION_MASK_EAST),e)},reversePortConstraints:function(e){return(e&mxConstants.DIRECTION_MASK_WEST)<<3|(e&mxConstants.DIRECTION_MASK_NORTH)<<1|(e&mxConstants.DIRECTION_MASK_SOUTH)>>1|(e&mxConstants.DIRECTION_MASK_EAST)>>3},findNearestSegment:function(e,n,t){var a=-1;if(0<e.absolutePoints.length)for(var i=e.absolutePoints[0],s=null,o=1;o<e.absolutePoints.length;o++){var r=e.absolutePoints[o];i=mxUtils.ptSegDistSq(i.x,i.y,r.x,r.y,n,t);(null==s||i<s)&&(s=i,a=o-1),i=r}return a},rectangleIntersectsSegment:function(e,n,t){var a=e.y,i=e.x,s=a+e.height,o=i+e.width;e=n.x;var r=t.x;if(n.x>t.x&&(e=t.x,r=n.x),o<r&&(r=o),e<i&&(e=i),r<e)return!1;i=n.y,o=t.y;var l=t.x-n.x;return 1e-7<Math.abs(l)&&(i=(t=(t.y-n.y)/l)*e+(n=n.y-t*n.x),o=t*r+n),o<i&&(n=o,o=i,i=n),s<o&&(o=s),i<a&&(i=a),!(o<i)},contains:function(e,n,t){return e.x<=n&&e.x+e.width>=n&&e.y<=t&&e.y+e.height>=t},intersects:function(e,n){var t=e.width,a=e.height,i=n.width,s=n.height;if(i<=0||s<=0||t<=0||a<=0)return!1;var o=e.x,r=e.y,l=n.x,d=n.y;s+=d,t+=o,a+=r;return((i=i+l)<l||o<i)&&(s<d||r<s)&&(t<o||l<t)&&(a<r||d<a)},intersectsHotspot:function(e,n,t,a,i,s){if(i=null!=i?i:0,s=null!=s?s:0,0<(a=null!=a?a:1)){var o=e.getCenterX(),r=e.getCenterY(),l=e.width,d=e.height,c=mxUtils.getValue(e.style,mxConstants.STYLE_STARTSIZE)*e.view.scale;return 0<c&&(mxUtils.getValue(e.style,mxConstants.STYLE_HORIZONTAL,!0)?(r=e.y+c/2,d=c):(o=e.x+c/2,l=c)),l=Math.max(i,l*a),d=Math.max(i,d*a),0<s&&(l=Math.min(l,s),d=Math.min(d,s)),a=new mxRectangle(o-l/2,r-d/2,l,d),0!=(o=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))&&(i=Math.cos(-o),s=Math.sin(-o),o=new mxPoint(e.getCenterX(),e.getCenterY()),n=(e=mxUtils.getRotatedPoint(new mxPoint(n,t),i,s,o)).x,t=e.y),mxUtils.contains(a,n,t)}return!0},getOffset:function(e,n){var t=0,a=0;if(null!=n&&n){var i=document.body,s=document.documentElement;t=t+(i.scrollLeft||s.scrollLeft),a=a+(i.scrollTop||s.scrollTop)}for(;e.offsetParent;)t+=e.offsetLeft,a+=e.offsetTop,e=e.offsetParent;return new mxPoint(t,a)},getScrollOrigin:function(e){for(var n=document.body,t=document.documentElement,a=new mxPoint(n.scrollLeft||t.scrollLeft,n.scrollTop||t.scrollTop);null!=e&&e!=n&&e!=t;)!isNaN(e.scrollLeft)&&!isNaN(e.scrollTop)&&(a.x+=e.scrollLeft,a.y+=e.scrollTop),e=e.parentNode;return a},convertPoint:function(e,n,t){var a=mxUtils.getScrollOrigin(e);return(e=mxUtils.getOffset(e)).x-=a.x,e.y-=a.y,new mxPoint(n-e.x,t-e.y)},ltrim:function(e,n){return e.replace(RegExp("^["+(n||"\\s")+"]+","g"),"")},rtrim:function(e,n){return e.replace(RegExp("["+(n||"\\s")+"]+$","g"),"")},trim:function(e,n){return mxUtils.ltrim(mxUtils.rtrim(e,n),n)},isNumeric:function(e){return null!=e&&(null==e.length||0<e.length&&e.indexOf("0x")<0&&e.indexOf("0X")<0)&&!isNaN(e)},mod:function(e,n){return(e%n+n)%n},intersection:function(e,n,t,a,i,s,o,r){var l=(r-s)*(t-e)-(o-i)*(a-n);return o=((o-i)*(n-s)-(r-s)*(e-i))/l,i=((t-e)*(n-s)-(a-n)*(e-i))/l,0<=o&&o<=1&&0<=i&&i<=1?new mxPoint(e+o*(t-e),n+o*(a-n)):null},ptSegDistSq:function(e,n,t,a,i,s){return t=(i-=e)*(t-=e)+(s-=n)*(a-=n)<=0?0:(e=(i=t-i)*t+(s=a-s)*a)<=0?0:e*e/(t*t+a*a),(i=i*i+s*s-t)<0&&(i=0),i},relativeCcw:function(e,n,t,a,i,s){return 0==(e=(i-=e)*(a-=n)-(s-=n)*(t-=e))&&(0<(e=i*t+s*a)&&((e=(i-t)*t+(s-a)*a)<0&&(e=0))),e<0?-1:0<e?1:0},animateChanges:function(e,n){mxEffects.animateChanges.apply(this,arguments)},cascadeOpacity:function(e,n,t){mxEffects.cascadeOpacity.apply(this,arguments)},fadeOut:function(e,n,t,a,i,s){mxEffects.fadeOut.apply(this,arguments)},setOpacity:function(e,n){mxUtils.isVml(e)?e.style.filter=100<=n?null:"alpha(opacity="+n/5+")":mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?e.style.filter=100<=n?null:"alpha(opacity="+n+")":e.style.opacity=n/100},createImage:function(e){var n=null;return mxClient.IS_IE6&&"CSS1Compat"!=document.compatMode?((n=document.createElement(mxClient.VML_PREFIX+":image")).setAttribute("src",e),n.style.borderStyle="none"):((n=document.createElement("img")).setAttribute("src",e),n.setAttribute("border","0")),n},sortCells:function(e,i){i=null==i||i;var s=new mxDictionary;return e.sort(function(e,n){var t=s.get(e);null==t&&(t=mxCellPath.create(e).split(mxCellPath.PATH_SEPARATOR),s.put(e,t));var a=s.get(n);return null==a&&(a=mxCellPath.create(n).split(mxCellPath.PATH_SEPARATOR),s.put(n,a)),0==(t=mxCellPath.compare(t,a))?0:0<t==i?1:-1}),e},getStylename:function(e){return null!=e&&(e=e.split(";")[0]).indexOf("=")<0?e:""},getStylenames:function(e){var n=[];if(null!=e){e=e.split(";");for(var t=0;t<e.length;t++)e[t].indexOf("=")<0&&n.push(e[t])}return n},indexOfStylename:function(e,n){if(null!=e&&null!=n)for(var t=e.split(";"),a=0,i=0;i<t.length;i++){if(t[i]==n)return a;a+=t[i].length+1}return-1},addStylename:function(e,n){return mxUtils.indexOfStylename(e,n)<0&&(null==e?e="":0<e.length&&";"!=e.charAt(e.length-1)&&(e+=";"),e+=n),e},removeStylename:function(e,n){var t=[];if(null!=e)for(var a=e.split(";"),i=0;i<a.length;i++)a[i]!=n&&t.push(a[i]);return t.join(";")},removeAllStylenames:function(e){var n=[];if(null!=e){e=e.split(";");for(var t=0;t<e.length;t++)0<=e[t].indexOf("=")&&n.push(e[t])}return n.join(";")},setCellStyles:function(e,n,t,a){if(null!=n&&0<n.length){e.beginUpdate();try{for(var i=0;i<n.length;i++)if(null!=n[i]){var s=mxUtils.setStyle(e.getStyle(n[i]),t,a);e.setStyle(n[i],s)}}finally{e.endUpdate()}}},setStyle:function(e,n,t){var a=null!=t&&(void 0===t.length||0<t.length);if(null==e||0==e.length)a&&(e=n+"="+t);else{var i=e.indexOf(n+"=");i<0?a&&(a=";"==e.charAt(e.length-1)?"":";",e=e+a+n+"="+t):(n=a?n+"="+t:"",t=e.indexOf(";",i),a||t++,e=e.substring(0,i)+n+(i<t?e.substring(t):""))}return e},setCellStyleFlags:function(e,n,t,a,i){if(null!=n&&0<n.length){e.beginUpdate();try{for(var s=0;s<n.length;s++)if(null!=n[s]){var o=mxUtils.setStyleFlag(e.getStyle(n[s]),t,a,i);e.setStyle(n[s],o)}}finally{e.endUpdate()}}},setStyleFlag:function(e,n,t,a){if(null==e||0==e.length)e=a||null==a?n+"="+t:n+"=0";else{var i=e.indexOf(n+"=");if(i<0)i=";"==e.charAt(e.length-1)?"":";",e=a||null==a?e+i+n+"="+t:e+i+n+"=0";else{var s=e.indexOf(";",i),o="";o=s<0?e.substring(i+n.length+1):e.substring(i+n.length+1,s),o=null==a?parseInt(o)^t:a?parseInt(o)|t:parseInt(o)&~t;e=e.substring(0,i)+n+"="+o+(0<=s?e.substring(s):"")}}return e},getAlignmentAsPoint:function(e,n){var t=0,a=0;return e==mxConstants.ALIGN_CENTER?t=-.5:e==mxConstants.ALIGN_RIGHT&&(t=-1),n==mxConstants.ALIGN_MIDDLE?a=-.5:n==mxConstants.ALIGN_BOTTOM&&(a=-1),new mxPoint(t,a)},getSizeForString:function(e,n,t){n=null!=n?n:mxConstants.DEFAULT_FONTSIZE,t=null!=t?t:mxConstants.DEFAULT_FONTFAMILY;var a=document.createElement("div");return a.style.fontFamily=t,a.style.fontSize=Math.round(n)+"px",a.style.lineHeight=Math.round(n*mxConstants.LINE_HEIGHT)+"px",a.style.position="absolute",a.style.whiteSpace="nowrap",a.style.visibility="hidden",a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",a.innerHTML=e,document.body.appendChild(a),e=new mxRectangle(0,0,a.offsetWidth,a.offsetHeight),document.body.removeChild(a),e},getViewXml:function(e,n,t,a,i){a=null!=a?a:0,i=null!=i?i:0,n=null!=n?n:1,null==t&&(t=[e.getModel().getRoot()]);var s=e.getView(),o=null,r=s.isEventsEnabled();s.setEventsEnabled(!1);var l=s.drawPane,d=s.overlayPane;e.dialect==mxConstants.DIALECT_SVG?(s.drawPane=document.createElementNS(mxConstants.NS_SVG,"g"),s.canvas.appendChild(s.drawPane),s.overlayPane=document.createElementNS(mxConstants.NS_SVG,"g")):(s.drawPane=s.drawPane.cloneNode(!1),s.canvas.appendChild(s.drawPane),s.overlayPane=s.overlayPane.cloneNode(!1)),s.canvas.appendChild(s.overlayPane);var c=s.getTranslate();s.translate=new mxPoint(a,i),n=new mxTemporaryCellStates(e.getView(),n,t);try{o=(new mxCodec).encode(e.getView())}finally{n.destroy(),s.translate=c,s.canvas.removeChild(s.drawPane),s.canvas.removeChild(s.overlayPane),s.drawPane=l,s.overlayPane=d,s.setEventsEnabled(r)}return o},getScaleForPageCount:function(e,n,t,a){if(e<1)return 1;a=null!=a?a:0;var i=(t=null!=t?t:mxConstants.PAGE_FORMAT_A4_PORTRAIT).width-2*a;t=t.height-2*a,a=n.getGraphBounds().clone(),n=n.getView().getScale(),a.width/=n,a.height/=n,t=(n=a.width)/a.height/(i/t),a=Math.sqrt(e);var s=Math.sqrt(t);if(t=a*s,a/=s,t<1&&e<a){var o=a/e;a=e,t/=o}for(a<1&&e<t&&(o=t/e,t=e,a/=o),o=Math.ceil(t)*Math.ceil(a),s=0;e<o;){o=Math.floor(t)/t;var r=Math.floor(a)/a;if(1==o&&(o=Math.floor(t-1)/t),1==r&&(r=Math.floor(a-1)/a),t*=o=r<o?o:r,a*=o,o=Math.ceil(t)*Math.ceil(a),10<++s)break}return i*t/n*.99999},show:function(e,n,t,a){if(t=null!=t?t:0,a=null!=a?a:0,null==n?n=window.open().document:n.open(),t=-(i=e.getGraphBounds()).x+t,a=-i.y+a,mxClient.IS_IE){for(var i="<html><head>",s=document.getElementsByTagName("base"),o=0;o<s.length;o++)i+=s[o].outerHTML;for(i+="<style>",o=0;o<document.styleSheets.length;o++)try{i+=document.styleSheets(o).cssText}catch(e){}i+="</style></head>",i+="<body>",i+=e.container.innerHTML,i+="</body>",i+="<html>",n.writeln(i),n.close(),null!=(e=n.body.getElementsByTagName("DIV")[0])&&(e.style.position="absolute",e.style.left=t+"px",e.style.top=a+"px")}else{for(n.writeln("<html"),n.writeln("<head>"),s=document.getElementsByTagName("base"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(s=document.getElementsByTagName("link"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(s=document.getElementsByTagName("style"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(n.writeln("</head>"),n.writeln("</html>"),n.close(),null==n.body&&n.documentElement.appendChild(n.createElement("body")),n.body.style.overflow="auto",e=e.container.firstChild;null!=e;)o=e.cloneNode(!0),n.body.appendChild(o),e=e.nextSibling;null!=(e=n.getElementsByTagName("g")[0])&&(e.setAttribute("transform","translate("+t+","+a+")"),(t=e.ownerSVGElement).setAttribute("width",i.width+Math.max(i.x,0)+3),t.setAttribute("height",i.height+Math.max(i.y,0)+3))}return mxUtils.removeCursors(n.body),n},printScreen:function(e){var n=window.open();mxUtils.show(e,n.document),e=function(){n.focus(),n.print(),n.close()},mxClient.IS_GC?n.setTimeout(e,500):e()},popup:function(e,n){if(n){var t=document.createElement("div");t.style.overflow="scroll",t.style.width="636px",t.style.height="460px";var a=document.createElement("pre");a.innerHTML=mxUtils.htmlEntities(e,!1).replace(/\n/g,"<br>").replace(/ /g,"&nbsp;"),t.appendChild(a),(t=new mxWindow("Popup Window",t,document.body.clientWidth/2-320,(document.body.clientHeight||document.documentElement.clientHeight)/2-240,640,480,!1,!0)).setClosable(!0),t.setVisible(!0)}else mxClient.IS_NS?((t=window.open()).document.writeln("<pre>"+mxUtils.htmlEntities(e)+"</pre"),t.document.close()):((a=(t=window.open()).document.createElement("pre")).innerHTML=mxUtils.htmlEntities(e,!1).replace(/\n/g,"<br>").replace(/ /g,"&nbsp;"),t.document.body.appendChild(a))},alert:function(e){alert(e)},prompt:function(e,n){return prompt(e,n)},confirm:function(e){return confirm(e)},error:function(e,n,t,a){var i=document.createElement("div");i.style.padding="20px";var s=document.createElement("img");s.setAttribute("src",a||mxUtils.errorImage),s.setAttribute("valign","bottom"),s.style.verticalAlign="middle",i.appendChild(s),i.appendChild(document.createTextNode(" ")),i.appendChild(document.createTextNode(" ")),i.appendChild(document.createTextNode(" ")),mxUtils.write(i,e),e=document.body.clientWidth,a=document.body.clientHeight||document.documentElement.clientHeight;var o=new mxWindow(mxResources.get(mxUtils.errorResource)||mxUtils.errorResource,i,(e-n)/2,a/4,n,null,!1,!0);return t&&(mxUtils.br(i),n=document.createElement("p"),t=document.createElement("button"),mxClient.IS_IE?t.style.cssText="float:right":t.setAttribute("style","float:right"),mxEvent.addListener(t,"click",function(e){o.destroy()}),mxUtils.write(t,mxResources.get(mxUtils.closeResource)||mxUtils.closeResource),n.appendChild(t),i.appendChild(n),mxUtils.br(i),o.setClosable(!0)),o.setVisible(!0),o},makeDraggable:function(e,n,t,i,a,s,o,r,l,d){return(e=new mxDragSource(e,t)).dragOffset=new mxPoint(null!=a?a:0,null!=s?s:mxConstants.TOOLTIP_VERTICAL_OFFSET),e.autoscroll=o,e.setGuidesEnabled(!1),null!=l&&(e.highlightDropTargets=l),null!=d&&(e.getDropTarget=d),e.getGraphForEvent=function(e){return"function"==typeof n?n(e):n},null!=i&&(e.createDragElement=function(){return i.cloneNode(!0)},r&&(e.createPreviewElement=function(e){var n=i.cloneNode(!0),t=parseInt(n.style.width),a=parseInt(n.style.height);return n.style.width=Math.round(t*e.view.scale)+"px",n.style.height=Math.round(a*e.view.scale)+"px",n})),e}},mxConstants={DEFAULT_HOTSPOT:.3,MIN_HOTSPOT_SIZE:8,MAX_HOTSPOT_SIZE:0,RENDERING_HINT_EXACT:"exact",RENDERING_HINT_FASTER:"faster",RENDERING_HINT_FASTEST:"fastest",DIALECT_SVG:"svg",DIALECT_VML:"vml",DIALECT_MIXEDHTML:"mixedHtml",DIALECT_PREFERHTML:"preferHtml",DIALECT_STRICTHTML:"strictHtml",NS_SVG:"http://www.w3.org/2000/svg",NS_XHTML:"http://www.w3.org/1999/xhtml",NS_XLINK:"http://www.w3.org/1999/xlink",SHADOWCOLOR:"gray",SHADOW_OFFSET_X:2,SHADOW_OFFSET_Y:3,SHADOW_OPACITY:1,NODETYPE_ELEMENT:1,NODETYPE_ATTRIBUTE:2,NODETYPE_TEXT:3,NODETYPE_CDATA:4,NODETYPE_ENTITY_REFERENCE:5,NODETYPE_ENTITY:6,NODETYPE_PROCESSING_INSTRUCTION:7,NODETYPE_COMMENT:8,NODETYPE_DOCUMENT:9,NODETYPE_DOCUMENTTYPE:10,NODETYPE_DOCUMENT_FRAGMENT:11,NODETYPE_NOTATION:12,TOOLTIP_VERTICAL_OFFSET:16,DEFAULT_VALID_COLOR:"#00FF00",DEFAULT_INVALID_COLOR:"#FF0000",HIGHLIGHT_STROKEWIDTH:3,CURSOR_MOVABLE_VERTEX:"move",CURSOR_MOVABLE_EDGE:"move",CURSOR_LABEL_HANDLE:"default",CURSOR_BEND_HANDLE:"pointer",CURSOR_CONNECT:"pointer",HIGHLIGHT_COLOR:"#00FF00",CONNECT_TARGET_COLOR:"#0000FF",INVALID_CONNECT_TARGET_COLOR:"#FF0000",DROP_TARGET_COLOR:"#0000FF",VALID_COLOR:"#00FF00",INVALID_COLOR:"#FF0000",EDGE_SELECTION_COLOR:"#00FF00",VERTEX_SELECTION_COLOR:"#00FF00",VERTEX_SELECTION_STROKEWIDTH:1,EDGE_SELECTION_STROKEWIDTH:1,VERTEX_SELECTION_DASHED:!0,EDGE_SELECTION_DASHED:!0,GUIDE_COLOR:"#FF0000",GUIDE_STROKEWIDTH:1,OUTLINE_COLOR:"#0099FF",OUTLINE_STROKEWIDTH:mxClient.IS_IE?2:3,HANDLE_SIZE:7,LABEL_HANDLE_SIZE:4,HANDLE_FILLCOLOR:"#00FF00",HANDLE_STROKECOLOR:"black",LABEL_HANDLE_FILLCOLOR:"yellow",CONNECT_HANDLE_FILLCOLOR:"#0000FF",LOCKED_HANDLE_FILLCOLOR:"#FF0000",OUTLINE_HANDLE_FILLCOLOR:"#00FFFF",OUTLINE_HANDLE_STROKECOLOR:"#0033FF",DEFAULT_FONTFAMILY:"Arial,Helvetica",DEFAULT_FONTSIZE:11,LINE_HEIGHT:1.2,DEFAULT_FONTSTYLE:0,DEFAULT_STARTSIZE:40,DEFAULT_MARKERSIZE:6,DEFAULT_IMAGESIZE:24,ENTITY_SEGMENT:30,RECTANGLE_ROUNDING_FACTOR:.15,LINE_ARCSIZE:20,ARROW_SPACING:10,ARROW_WIDTH:30,ARROW_SIZE:30,PAGE_FORMAT_A4_PORTRAIT:new mxRectangle(0,0,826,1169),PAGE_FORMAT_A4_LANDSCAPE:new mxRectangle(0,0,1169,826),PAGE_FORMAT_LETTER_PORTRAIT:new mxRectangle(0,0,850,1100),PAGE_FORMAT_LETTER_LANDSCAPE:new mxRectangle(0,0,1100,850),NONE:"none",STYLE_PERIMETER:"perimeter",STYLE_SOURCE_PORT:"sourcePort",STYLE_TARGET_PORT:"targetPort",STYLE_PORT_CONSTRAINT:"portConstraint",STYLE_OPACITY:"opacity",STYLE_TEXT_OPACITY:"textOpacity",STYLE_OVERFLOW:"overflow",STYLE_ORTHOGONAL:"orthogonal",STYLE_EXIT_X:"exitX",STYLE_EXIT_Y:"exitY",STYLE_EXIT_PERIMETER:"exitPerimeter",STYLE_ENTRY_X:"entryX",STYLE_ENTRY_Y:"entryY",STYLE_ENTRY_PERIMETER:"entryPerimeter",STYLE_WHITE_SPACE:"whiteSpace",STYLE_ROTATION:"rotation",STYLE_FILLCOLOR:"fillColor",STYLE_SWIMLANE_FILLCOLOR:"swimlaneFillColor",STYLE_GRADIENTCOLOR:"gradientColor",STYLE_GRADIENT_DIRECTION:"gradientDirection",STYLE_STROKECOLOR:"strokeColor",STYLE_SEPARATORCOLOR:"separatorColor",STYLE_STROKEWIDTH:"strokeWidth",STYLE_ALIGN:"align",STYLE_VERTICAL_ALIGN:"verticalAlign",STYLE_LABEL_POSITION:"labelPosition",STYLE_VERTICAL_LABEL_POSITION:"verticalLabelPosition",STYLE_IMAGE_ASPECT:"imageAspect",STYLE_IMAGE_ALIGN:"imageAlign",STYLE_IMAGE_VERTICAL_ALIGN:"imageVerticalAlign",STYLE_GLASS:"glass",STYLE_IMAGE:"image",STYLE_IMAGE_WIDTH:"imageWidth",STYLE_IMAGE_HEIGHT:"imageHeight",STYLE_IMAGE_BACKGROUND:"imageBackground",STYLE_IMAGE_BORDER:"imageBorder",STYLE_FLIPH:"flipH",STYLE_FLIPV:"flipV",STYLE_NOLABEL:"noLabel",STYLE_NOEDGESTYLE:"noEdgeStyle",STYLE_LABEL_BACKGROUNDCOLOR:"labelBackgroundColor",STYLE_LABEL_BORDERCOLOR:"labelBorderColor",STYLE_LABEL_PADDING:"labelPadding",STYLE_INDICATOR_SHAPE:"indicatorShape",STYLE_INDICATOR_IMAGE:"indicatorImage",STYLE_INDICATOR_COLOR:"indicatorColor",STYLE_INDICATOR_STROKECOLOR:"indicatorStrokeColor",STYLE_INDICATOR_GRADIENTCOLOR:"indicatorGradientColor",STYLE_INDICATOR_SPACING:"indicatorSpacing",STYLE_INDICATOR_WIDTH:"indicatorWidth",STYLE_INDICATOR_HEIGHT:"indicatorHeight",STYLE_INDICATOR_DIRECTION:"indicatorDirection",STYLE_SHADOW:"shadow",STYLE_SEGMENT:"segment",STYLE_ENDARROW:"endArrow",STYLE_STARTARROW:"startArrow",STYLE_ENDSIZE:"endSize",STYLE_STARTSIZE:"startSize",STYLE_SWIMLANE_LINE:"swimlaneLine",STYLE_ENDFILL:"endFill",STYLE_STARTFILL:"startFill",STYLE_DASHED:"dashed",STYLE_DASH_PATTERN:"dashPattern",STYLE_ROUNDED:"rounded",STYLE_CURVED:"curved",STYLE_ARCSIZE:"arcSize",STYLE_SMOOTH:"smooth",STYLE_SOURCE_PERIMETER_SPACING:"sourcePerimeterSpacing",STYLE_TARGET_PERIMETER_SPACING:"targetPerimeterSpacing",STYLE_PERIMETER_SPACING:"perimeterSpacing",STYLE_SPACING:"spacing",STYLE_SPACING_TOP:"spacingTop",STYLE_SPACING_LEFT:"spacingLeft",STYLE_SPACING_BOTTOM:"spacingBottom",STYLE_SPACING_RIGHT:"spacingRight",STYLE_HORIZONTAL:"horizontal",STYLE_DIRECTION:"direction",STYLE_ELBOW:"elbow",STYLE_FONTCOLOR:"fontColor",STYLE_FONTFAMILY:"fontFamily",STYLE_FONTSIZE:"fontSize",STYLE_FONTSTYLE:"fontStyle",STYLE_AUTOSIZE:"autosize",STYLE_FOLDABLE:"foldable",STYLE_EDITABLE:"editable",STYLE_BENDABLE:"bendable",STYLE_MOVABLE:"movable",STYLE_RESIZABLE:"resizable",STYLE_CLONEABLE:"cloneable",STYLE_DELETABLE:"deletable",STYLE_SHAPE:"shape",STYLE_EDGE:"edgeStyle",STYLE_LOOP:"loopStyle",STYLE_ROUTING_CENTER_X:"routingCenterX",STYLE_ROUTING_CENTER_Y:"routingCenterY",FONT_BOLD:1,FONT_ITALIC:2,FONT_UNDERLINE:4,FONT_SHADOW:8,SHAPE_RECTANGLE:"rectangle",SHAPE_ELLIPSE:"ellipse",SHAPE_DOUBLE_ELLIPSE:"doubleEllipse",SHAPE_RHOMBUS:"rhombus",SHAPE_LINE:"line",SHAPE_IMAGE:"image",SHAPE_ARROW:"arrow",SHAPE_LABEL:"label",SHAPE_CYLINDER:"cylinder",SHAPE_SWIMLANE:"swimlane",SHAPE_CONNECTOR:"connector",SHAPE_ACTOR:"actor",SHAPE_CLOUD:"cloud",SHAPE_TRIANGLE:"triangle",SHAPE_HEXAGON:"hexagon",ARROW_CLASSIC:"classic",ARROW_BLOCK:"block",ARROW_OPEN:"open",ARROW_OVAL:"oval",ARROW_DIAMOND:"diamond",ARROW_DIAMOND_THIN:"diamondThin",ALIGN_LEFT:"left",ALIGN_CENTER:"center",ALIGN_RIGHT:"right",ALIGN_TOP:"top",ALIGN_MIDDLE:"middle",ALIGN_BOTTOM:"bottom",DIRECTION_NORTH:"north",DIRECTION_SOUTH:"south",DIRECTION_EAST:"east",DIRECTION_WEST:"west",DIRECTION_MASK_NONE:0,DIRECTION_MASK_WEST:1,DIRECTION_MASK_NORTH:2,DIRECTION_MASK_SOUTH:4,DIRECTION_MASK_EAST:8,DIRECTION_MASK_ALL:15,ELBOW_VERTICAL:"vertical",ELBOW_HORIZONTAL:"horizontal",EDGESTYLE_ELBOW:"elbowEdgeStyle",EDGESTYLE_ENTITY_RELATION:"entityRelationEdgeStyle",EDGESTYLE_LOOP:"loopEdgeStyle",EDGESTYLE_SIDETOSIDE:"sideToSideEdgeStyle",EDGESTYLE_TOPTOBOTTOM:"topToBottomEdgeStyle",EDGESTYLE_ORTHOGONAL:"orthogonalEdgeStyle",EDGESTYLE_SEGMENT:"segmentEdgeStyle",PERIMETER_ELLIPSE:"ellipsePerimeter",PERIMETER_RECTANGLE:"rectanglePerimeter",PERIMETER_RHOMBUS:"rhombusPerimeter",PERIMETER_TRIANGLE:"trianglePerimeter"};function mxEventObject(e){this.name=e,this.properties=[];for(var n=1;n<arguments.length;n+=2)null!=arguments[n+1]&&(this.properties[arguments[n]]=arguments[n+1])}function mxMouseEvent(e,n){this.evt=e,this.state=n}function mxEventSource(e){this.setEventSource(e)}mxEventObject.prototype.name=null,mxEventObject.prototype.properties=null,mxEventObject.prototype.consumed=!1,mxEventObject.prototype.getName=function(){return this.name},mxEventObject.prototype.getProperties=function(){return this.properties},mxEventObject.prototype.getProperty=function(e){return this.properties[e]},mxEventObject.prototype.isConsumed=function(){return this.consumed},mxEventObject.prototype.consume=function(){this.consumed=!0},mxMouseEvent.prototype.consumed=!1,mxMouseEvent.prototype.evt=null,mxMouseEvent.prototype.graphX=null,mxMouseEvent.prototype.graphY=null,mxMouseEvent.prototype.state=null,mxMouseEvent.prototype.getEvent=function(){return this.evt},mxMouseEvent.prototype.getSource=function(){return mxEvent.getSource(this.evt)},mxMouseEvent.prototype.isSource=function(e){if(null!=e)for(var n=this.getSource();null!=n;){if(n==e.node)return!0;n=n.parentNode}return!1},mxMouseEvent.prototype.getX=function(){return mxEvent.getClientX(this.getEvent())},mxMouseEvent.prototype.getY=function(){return mxEvent.getClientY(this.getEvent())},mxMouseEvent.prototype.getGraphX=function(){return this.graphX},mxMouseEvent.prototype.getGraphY=function(){return this.graphY},mxMouseEvent.prototype.getState=function(){return this.state},mxMouseEvent.prototype.getCell=function(){var e=this.getState();return null!=e?e.cell:null},mxMouseEvent.prototype.isPopupTrigger=function(){return mxEvent.isPopupTrigger(this.getEvent())},mxMouseEvent.prototype.isConsumed=function(){return this.consumed},mxMouseEvent.prototype.consume=function(e){(null==e||e)&&this.evt.preventDefault&&this.evt.preventDefault(),this.evt.returnValue=!1,this.consumed=!0},mxEventSource.prototype.eventListeners=null,mxEventSource.prototype.eventsEnabled=!0,mxEventSource.prototype.eventSource=null,mxEventSource.prototype.isEventsEnabled=function(){return this.eventsEnabled},mxEventSource.prototype.setEventsEnabled=function(e){this.eventsEnabled=e},mxEventSource.prototype.getEventSource=function(){return this.eventSource},mxEventSource.prototype.setEventSource=function(e){this.eventSource=e},mxEventSource.prototype.addListener=function(e,n){null==this.eventListeners&&(this.eventListeners=[]),this.eventListeners.push(e),this.eventListeners.push(n)},mxEventSource.prototype.removeListener=function(e){if(null!=this.eventListeners)for(var n=0;n<this.eventListeners.length;)this.eventListeners[n+1]==e?this.eventListeners.splice(n,2):n+=2},mxEventSource.prototype.fireEvent=function(e,n){if(null!=this.eventListeners&&this.isEventsEnabled()){null==e&&(e=new mxEventObject),null==n&&(n=this.getEventSource()),null==n&&(n=this);for(var t=[n,e],a=0;a<this.eventListeners.length;a+=2){var i=this.eventListeners[a];(null==i||i==e.getName())&&this.eventListeners[a+1].apply(this,t)}}};var mxEvent={objects:[],addListener:function(){var a=function(e,n,t){null==e.mxListenerList&&(e.mxListenerList=[],mxEvent.objects.push(e)),e.mxListenerList.push({name:n,f:t})};return window.addEventListener?function(e,n,t){e.addEventListener(n,t,!1),a(e,n,t)}:function(e,n,t){e.attachEvent("on"+n,t),a(e,n,t)}}(),removeListener:function(){var a=function(e,n,t){if(null!=e.mxListenerList){n=e.mxListenerList.length;for(var a=0;a<n;a++)if(e.mxListenerList[a].f==t){e.mxListenerList.splice(a,1);break}0==e.mxListenerList.length&&(e.mxListenerList=null)}};return window.removeEventListener?function(e,n,t){e.removeEventListener(n,t,!1),a(e,n,t)}:function(e,n,t){e.detachEvent("on"+n,t),a(e,n,t)}}(),removeAllListeners:function(e){var n=e.mxListenerList;if(null!=n)for(;0<n.length;){var t=n[0];mxEvent.removeListener(e,t.name,t.f)}},addGestureListeners:function(e,n,t,a){null!=n&&mxEvent.addListener(e,"mousedown",n),null!=t&&mxEvent.addListener(e,"mousemove",t),null!=a&&mxEvent.addListener(e,"mouseup",a),mxClient.IS_TOUCH&&(null!=n&&mxEvent.addListener(e,"touchstart",n),null!=t&&mxEvent.addListener(e,"touchmove",t),null!=a&&mxEvent.addListener(e,"touchend",a))},removeGestureListeners:function(e,n,t,a){null!=n&&mxEvent.removeListener(e,"mousedown",n),null!=t&&mxEvent.removeListener(e,"mousemove",t),null!=a&&mxEvent.removeListener(e,"mouseup",a),mxClient.IS_TOUCH&&(null!=n&&mxEvent.removeListener(e,"touchstart",n),null!=t&&mxEvent.removeListener(e,"touchmove",t),null!=a&&mxEvent.removeListener(e,"touchend",a))},redirectMouseEvents:function(e,t,n,a,i,s,o){var r=function(e){return"function"==typeof n?n(e):n};mxEvent.addGestureListeners(e,function(e){null!=a?a(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,r(e)))},function(e){null!=i?i(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,r(e)))},function(e){null!=s?s(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,r(e)))}),mxEvent.addListener(e,"dblclick",function(e){if(null!=o)o(e);else if(!mxEvent.isConsumed(e)){var n=r(e);t.dblClick(e,null!=n?n.cell:null)}})},release:function(e){if(null!=e&&(mxEvent.removeAllListeners(e),null!=(e=e.childNodes)))for(var n=e.length,t=0;t<n;t+=1)mxEvent.release(e[t])},addMouseWheelListener:function(t){if(null!=t){var e=function(e){null==e&&(e=window.event);var n=0;0!=(n=!mxClient.IS_NS||mxClient.IS_SF||mxClient.IS_GC?e.wheelDelta/120:-e.detail/2)&&t(e,0<n)};mxClient.IS_NS?mxEvent.addListener(window,mxClient.IS_SF||mxClient.IS_GC?"mousewheel":"DOMMouseScroll",e):mxEvent.addListener(document,"mousewheel",e)}},disableContextMenu:mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?function(e){mxEvent.addListener(e,"contextmenu",function(){return!1})}:function(e){e.setAttribute("oncontextmenu","return false;")},getSource:function(e){return null!=e.srcElement?e.srcElement:e.target},isConsumed:function(e){return null!=e.isConsumed&&e.isConsumed},isLeftMouseButton:function(e){return e.button==(mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?1:0)},isRightMouseButton:function(e){return 2==e.button},isPopupTrigger:function(e){return mxEvent.isRightMouseButton(e)||mxEvent.isShiftDown(e)&&!mxEvent.isControlDown(e)},isShiftDown:function(e){return null!=e&&e.shiftKey},isAltDown:function(e){return null!=e&&e.altKey},isControlDown:function(e){return null!=e&&e.ctrlKey},isMetaDown:function(e){return null!=e&&e.metaKey},getMainEvent:function(e){return"touchstart"!=e.type&&"touchmove"!=e.type||null==e.touches||null==e.touches[0]?"touchend"==e.type&&null!=e.changedTouches&&null!=e.changedTouches[0]&&(e=e.changedTouches[0]):e=e.touches[0],e},getClientX:function(e){return mxEvent.getMainEvent(e).clientX},getClientY:function(e){return mxEvent.getMainEvent(e).clientY},consume:function(e,n,t){t=null==t||t,(null==n||n)&&(e.preventDefault?(t&&e.stopPropagation(),e.preventDefault()):t&&(e.cancelBubble=!0)),e.isConsumed=!0,e.returnValue=!1},LABEL_HANDLE:-1,ROTATION_HANDLE:-2,MOUSE_DOWN:"mouseDown",MOUSE_MOVE:"mouseMove",MOUSE_UP:"mouseUp",ACTIVATE:"activate",RESIZE_START:"resizeStart",RESIZE:"resize",RESIZE_END:"resizeEnd",MOVE_START:"moveStart",MOVE:"move",MOVE_END:"moveEnd",PAN_START:"panStart",PAN:"pan",PAN_END:"panEnd",MINIMIZE:"minimize",NORMALIZE:"normalize",MAXIMIZE:"maximize",HIDE:"hide",SHOW:"show",CLOSE:"close",DESTROY:"destroy",REFRESH:"refresh",SIZE:"size",SELECT:"select",FIRED:"fired",GET:"get",RECEIVE:"receive",CONNECT:"connect",DISCONNECT:"disconnect",SUSPEND:"suspend",RESUME:"resume",MARK:"mark",SESSION:"session",ROOT:"root",POST:"post",OPEN:"open",SAVE:"save",BEFORE_ADD_VERTEX:"beforeAddVertex",ADD_VERTEX:"addVertex",AFTER_ADD_VERTEX:"afterAddVertex",DONE:"done",EXECUTE:"execute",EXECUTED:"executed",BEGIN_UPDATE:"beginUpdate",START_EDIT:"startEdit",END_UPDATE:"endUpdate",END_EDIT:"endEdit",BEFORE_UNDO:"beforeUndo",UNDO:"undo",REDO:"redo",CHANGE:"change",NOTIFY:"notify",LAYOUT_CELLS:"layoutCells",CLICK:"click",SCALE:"scale",TRANSLATE:"translate",SCALE_AND_TRANSLATE:"scaleAndTranslate",UP:"up",DOWN:"down",ADD:"add",REMOVE:"remove",CLEAR:"clear",ADD_CELLS:"addCells",CELLS_ADDED:"cellsAdded",MOVE_CELLS:"moveCells",CELLS_MOVED:"cellsMoved",RESIZE_CELLS:"resizeCells",CELLS_RESIZED:"cellsResized",TOGGLE_CELLS:"toggleCells",CELLS_TOGGLED:"cellsToggled",ORDER_CELLS:"orderCells",CELLS_ORDERED:"cellsOrdered",REMOVE_CELLS:"removeCells",CELLS_REMOVED:"cellsRemoved",GROUP_CELLS:"groupCells",UNGROUP_CELLS:"ungroupCells",REMOVE_CELLS_FROM_PARENT:"removeCellsFromParent",FOLD_CELLS:"foldCells",CELLS_FOLDED:"cellsFolded",ALIGN_CELLS:"alignCells",LABEL_CHANGED:"labelChanged",CONNECT_CELL:"connectCell",CELL_CONNECTED:"cellConnected",SPLIT_EDGE:"splitEdge",FLIP_EDGE:"flipEdge",START_EDITING:"startEditing",ADD_OVERLAY:"addOverlay",REMOVE_OVERLAY:"removeOverlay",UPDATE_CELL_SIZE:"updateCellSize",ESCAPE:"escape",CLICK:"click",DOUBLE_CLICK:"doubleClick",START:"start",RESET:"reset"};function mxXmlRequest(e,n,t,a,i,s){this.url=e,this.params=n,this.method=t||"POST",this.async=null==a||a,this.username=i,this.password=s}mxXmlRequest.prototype.url=null,mxXmlRequest.prototype.params=null,mxXmlRequest.prototype.method=null,mxXmlRequest.prototype.async=null,mxXmlRequest.prototype.binary=!1,mxXmlRequest.prototype.username=null,mxXmlRequest.prototype.password=null,mxXmlRequest.prototype.request=null,mxXmlRequest.prototype.isBinary=function(){return this.binary},mxXmlRequest.prototype.setBinary=function(e){this.binary=e},mxXmlRequest.prototype.getText=function(){return this.request.responseText},mxXmlRequest.prototype.isReady=function(){return 4==this.request.readyState},mxXmlRequest.prototype.getDocumentElement=function(){var e=this.getXml();return null!=e?e.documentElement:null},mxXmlRequest.prototype.getXml=function(){var e=this.request.responseXML;return(9<=document.documentMode||null==e||null==e.documentElement)&&(e=mxUtils.parseXml(this.request.responseText)),e},mxXmlRequest.prototype.getText=function(){return this.request.responseText},mxXmlRequest.prototype.getStatus=function(){return this.request.status},mxXmlRequest.prototype.create=window.XMLHttpRequest?function(){var e=new XMLHttpRequest;return this.isBinary()&&e.overrideMimeType&&e.overrideMimeType("text/plain; charset=x-user-defined"),e}:"undefined"!=typeof ActiveXObject?function(){return new ActiveXObject("Microsoft.XMLHTTP")}:void 0,mxXmlRequest.prototype.send=function(e,n){this.request=this.create(),null!=this.request&&(null!=e&&(this.request.onreadystatechange=mxUtils.bind(this,function(){this.isReady()&&(e(this),this.onreadystatechaange=null)})),this.request.open(this.method,this.url,this.async,this.username,this.password),this.setRequestHeaders(this.request,this.params),this.request.send(this.params))},mxXmlRequest.prototype.setRequestHeaders=function(e,n){null!=n&&e.setRequestHeader("Content-Type","application/x-www-form-urlencoded")},mxXmlRequest.prototype.simulate=function(e,n){var t=null;(e=e||document)==document&&(t=window.onbeforeunload,window.onbeforeunload=null);var a=e.createElement("form");a.setAttribute("method",this.method),a.setAttribute("action",this.url),null!=n&&a.setAttribute("target",n),a.style.display="none",a.style.visibility="hidden";for(var i=0<this.params.indexOf("&")?this.params.split("&"):this.params.split(),s=0;s<i.length;s++){if(0<(o=i[s].indexOf("="))){var o,r=i[s].substring(0,o),l=i[s].substring(o+1);(o=e.createElement("textarea")).setAttribute("name",r),l=l.replace(/\n/g,"&#xa;"),r=e.createTextNode(l),o.appendChild(r),a.appendChild(o)}}e.body.appendChild(a),a.submit(),e.body.removeChild(a),null!=t&&(window.onbeforeunload=t)};var mxClipboard={STEPSIZE:10,insertCount:1,cells:null,isEmpty:function(){return null==mxClipboard.cells},cut:function(e,n){return n=mxClipboard.copy(e,n),mxClipboard.insertCount=0,mxClipboard.removeCells(e,n),n},removeCells:function(e,n){e.removeCells(n)},copy:function(e,n){n=n||e.getSelectionCells();var t=e.getExportableCells(n);return mxClipboard.insertCount=1,mxClipboard.cells=e.cloneCells(t),t},paste:function(e){if(null!=mxClipboard.cells){var n=e.getImportableCells(mxClipboard.cells),t=mxClipboard.insertCount*mxClipboard.STEPSIZE,a=e.getDefaultParent();n=e.importCells(n,t,t,a);mxClipboard.insertCount++,e.setSelectionCells(n)}}};function mxWindow(e,n,t,a,i,s,o,r,l,d){null!=n&&(o=null==o||o,this.content=n,this.init(t,a,i,s,d),this.installMaximizeHandler(),this.installMinimizeHandler(),this.installCloseHandler(),this.setMinimizable(o),this.setTitle(e),(null==r||r)&&this.installMoveHandler(),null!=l&&null!=l.parentNode?l.parentNode.replaceChild(this.div,l):document.body.appendChild(this.div))}function mxForm(e){this.table=document.createElement("table"),this.table.className=e,this.body=document.createElement("tbody"),this.table.appendChild(this.body)}function mxImage(e,n,t){this.src=e,this.width=n,this.height=t}function mxDivResizer(e,n){if("div"==e.nodeName.toLowerCase()){null==n&&(n=window),this.div=e;var t=mxUtils.getCurrentStyle(e);null!=t&&(this.resizeWidth="auto"==t.width,this.resizeHeight="auto"==t.height),mxEvent.addListener(n,"resize",mxUtils.bind(this,function(e){this.handlingResize||(this.handlingResize=!0,this.resize(),this.handlingResize=!1)})),this.resize()}}function mxDragSource(e,n){this.element=e,this.dropHandler=n,mxEvent.addGestureListeners(e,mxUtils.bind(this,this.mouseDown))}function mxToolbar(e){this.container=e}function mxSession(n,e,t,a){this.model=n,this.urlInit=e,this.urlPoll=t,this.urlNotify=a,null!=n&&(this.codec=new mxCodec,this.codec.lookup=function(e){return n.getCell(e)}),n.addListener(mxEvent.NOTIFY,mxUtils.bind(this,function(e,n){var t=n.getProperty("edit");(null!=t&&this.debug||this.connected&&!this.suspended)&&this.notify("<edit>"+this.encodeChanges(t.changes,t.undone)+"</edit>")}))}function mxUndoableEdit(e,n){this.source=e,this.changes=[],this.significant=null==n||n}function mxUndoManager(e){this.size=null!=e?e:100,this.clear()}mxWindow.prototype=new mxEventSource,mxWindow.prototype.constructor=mxWindow,mxWindow.prototype.closeImage=mxClient.imageBasePath+"/close.gif",mxWindow.prototype.minimizeImage=mxClient.imageBasePath+"/minimize.gif",mxWindow.prototype.normalizeImage=mxClient.imageBasePath+"/normalize.gif",mxWindow.prototype.maximizeImage=mxClient.imageBasePath+"/maximize.gif",mxWindow.prototype.resizeImage=mxClient.imageBasePath+"/resize.gif",mxWindow.prototype.visible=!1,mxWindow.prototype.content=!1,mxWindow.prototype.minimumSize=new mxRectangle(0,0,50,40),mxWindow.prototype.title=!1,mxWindow.prototype.content=!1,mxWindow.prototype.destroyOnClose=!0,mxWindow.prototype.init=function(e,n,t,a,i){i=null!=i?i:"mxWindow",this.div=document.createElement("div"),this.div.className=i,this.div.style.left=e+"px",this.div.style.top=n+"px",this.table=document.createElement("table"),this.table.className=i,null!=t&&(mxClient.IS_IE||(this.div.style.width=t+"px"),this.table.style.width=t+"px"),null!=a&&(mxClient.IS_IE||(this.div.style.height=a+"px"),this.table.style.height=a+"px"),e=document.createElement("tbody"),n=document.createElement("tr"),this.title=document.createElement("td"),this.title.className=i+"Title",n.appendChild(this.title),e.appendChild(n),n=document.createElement("tr"),this.td=document.createElement("td"),this.td.className=i+"Pane",this.contentWrapper=document.createElement("div"),this.contentWrapper.className=i+"Pane",this.contentWrapper.style.width="100%",this.contentWrapper.appendChild(this.content),(mxClient.IS_IE||"DIV"!=this.content.nodeName.toUpperCase())&&(this.contentWrapper.style.height="100%"),this.td.appendChild(this.contentWrapper),n.appendChild(this.td),e.appendChild(n),this.table.appendChild(e),this.div.appendChild(this.table),i=mxUtils.bind(this,function(e){this.activate()}),mxEvent.addListener(this.title,"mousedown",i),mxEvent.addListener(this.table,"mousedown",i),mxClient.IS_TOUCH&&(mxEvent.addListener(this.title,"touchstart",i),mxEvent.addListener(this.table,"touchstart",i)),this.hide()},mxWindow.prototype.setTitle=function(e){for(var n=this.title.firstChild;null!=n;){var t=n.nextSibling;n.nodeType==mxConstants.NODETYPE_TEXT&&n.parentNode.removeChild(n),n=t}mxUtils.write(this.title,e||"")},mxWindow.prototype.setScrollable=function(e){navigator.userAgent.indexOf("Presto/2.5")<0&&(this.contentWrapper.style.overflow=e?"auto":"hidden")},mxWindow.prototype.activate=function(){if(mxWindow.activeWindow!=this){var e=null!=(e=mxUtils.getCurrentStyle(this.getElement()))?e.zIndex:3;if(mxWindow.activeWindow){var n=mxWindow.activeWindow.getElement();null!=n&&null!=n.style&&(n.style.zIndex=e)}n=mxWindow.activeWindow,this.getElement().style.zIndex=parseInt(e)+1,(mxWindow.activeWindow=this).fireEvent(new mxEventObject(mxEvent.ACTIVATE,"previousWindow",n))}},mxWindow.prototype.getElement=function(){return this.div},mxWindow.prototype.fit=function(){mxUtils.fit(this.div)},mxWindow.prototype.isResizable=function(){return null!=this.resize&&"none"!=this.resize.style.display},mxWindow.prototype.setResizable=function(e){e?null==this.resize?(this.resize=document.createElement("img"),this.resize.style.position="absolute",this.resize.style.bottom="2px",this.resize.style.right="2px",this.resize.setAttribute("src",mxClient.imageBasePath+"/resize.gif"),this.resize.style.cursor="nw-resize",mxEvent.addGestureListeners(this.resize,mxUtils.bind(this,function(e){this.activate();var a=mxEvent.getClientX(e),i=mxEvent.getClientY(e),s=this.div.offsetWidth,o=this.div.offsetHeight,n=mxUtils.bind(this,function(e){var n=mxEvent.getClientX(e)-a,t=mxEvent.getClientY(e)-i;this.setSize(s+n,o+t),this.fireEvent(new mxEventObject(mxEvent.RESIZE,"event",e)),mxEvent.consume(e)}),t=mxUtils.bind(this,function(e){mxEvent.removeGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.RESIZE_END,"event",e)),mxEvent.consume(e)});mxEvent.addGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.RESIZE_START,"event",e)),mxEvent.consume(e)}),null,null),this.div.appendChild(this.resize)):this.resize.style.display="inline":null!=this.resize&&(this.resize.style.display="none")},mxWindow.prototype.setSize=function(e,n){e=Math.max(this.minimumSize.width,e),n=Math.max(this.minimumSize.height,n),mxClient.IS_IE||(this.div.style.width=e+"px",this.div.style.height=n+"px"),this.table.style.width=e+"px",this.table.style.height=n+"px",mxClient.IS_IE||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px")},mxWindow.prototype.setMinimizable=function(e){this.minimize.style.display=e?"":"none"},mxWindow.prototype.getMinimumSize=function(){return new mxRectangle(0,0,0,this.title.offsetHeight)},mxWindow.prototype.installMinimizeHandler=function(){this.minimize=document.createElement("img"),this.minimize.setAttribute("src",this.minimizeImage),this.minimize.setAttribute("align","right"),this.minimize.setAttribute("title","Minimize"),this.minimize.style.cursor="pointer",this.minimize.style.marginRight="1px",this.minimize.style.display="none",this.title.appendChild(this.minimize);var t=!1,a=null,i=null,e=mxUtils.bind(this,function(e){if(this.activate(),t)t=!1,this.minimize.setAttribute("src",this.minimizeImage),this.minimize.setAttribute("title","Minimize"),this.contentWrapper.style.display="",this.maximize.style.display=a,mxClient.IS_IE||(this.div.style.height=i),this.table.style.height=i,null!=this.resize&&(this.resize.style.visibility=""),this.fireEvent(new mxEventObject(mxEvent.NORMALIZE,"event",e));else{t=!0,this.minimize.setAttribute("src",this.normalizeImage),this.minimize.setAttribute("title","Normalize"),this.contentWrapper.style.display="none",a=this.maximize.style.display,this.maximize.style.display="none",i=this.table.style.height;var n=this.getMinimumSize();0<n.height&&(mxClient.IS_IE||(this.div.style.height=n.height+"px"),this.table.style.height=n.height+"px"),0<n.width&&(mxClient.IS_IE||(this.div.style.width=n.width+"px"),this.table.style.width=n.width+"px"),null!=this.resize&&(this.resize.style.visibility="hidden"),this.fireEvent(new mxEventObject(mxEvent.MINIMIZE,"event",e))}mxEvent.consume(e)});mxEvent.addListener(this.minimize,"mousedown",e),mxClient.IS_TOUCH&&mxEvent.addListener(this.minimize,"touchstart",e)},mxWindow.prototype.setMaximizable=function(e){this.maximize.style.display=e?"":"none"},mxWindow.prototype.installMaximizeHandler=function(){this.maximize=document.createElement("img"),this.maximize.setAttribute("src",this.maximizeImage),this.maximize.setAttribute("align","right"),this.maximize.setAttribute("title","Maximize"),this.maximize.style.cursor="default",this.maximize.style.marginLeft="1px",this.maximize.style.cursor="pointer",this.maximize.style.display="none",this.title.appendChild(this.maximize);var t=!1,a=null,i=null,s=null,o=null,e=mxUtils.bind(this,function(e){if(this.activate(),"none"!=this.maximize.style.display){if(t)t=!1,this.maximize.setAttribute("src",this.maximizeImage),this.maximize.setAttribute("title","Maximize"),this.contentWrapper.style.display="",this.minimize.style.visibility="",this.div.style.left=a+"px",this.div.style.top=i+"px",mxClient.IS_IE||(this.div.style.height=s,this.div.style.width=o,"auto"!=(n=mxUtils.getCurrentStyle(this.contentWrapper)).overflow&&null==this.resize)||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px"),this.table.style.height=s,this.table.style.width=o,null!=this.resize&&(this.resize.style.visibility=""),this.fireEvent(new mxEventObject(mxEvent.NORMALIZE,"event",e));else{if(t=!0,this.maximize.setAttribute("src",this.normalizeImage),this.maximize.setAttribute("title","Normalize"),this.contentWrapper.style.display="",this.minimize.style.visibility="hidden",a=parseInt(this.div.style.left),i=parseInt(this.div.style.top),s=this.table.style.height,o=this.table.style.width,this.div.style.left="0px",this.div.style.top="0px",mxClient.IS_IE||(this.div.style.height=document.body.clientHeight-2+"px",this.div.style.width=document.body.clientWidth-2+"px"),this.table.style.width=document.body.clientWidth-2+"px",this.table.style.height=document.body.clientHeight-2+"px",null!=this.resize&&(this.resize.style.visibility="hidden"),!mxClient.IS_IE){var n=mxUtils.getCurrentStyle(this.contentWrapper);"auto"!=n.overflow&&null==this.resize||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px")}this.fireEvent(new mxEventObject(mxEvent.MAXIMIZE,"event",e))}mxEvent.consume(e)}});mxEvent.addGestureListeners(this.maximize,e),mxEvent.addListener(this.title,"dblclick",e)},mxWindow.prototype.installMoveHandler=function(){this.title.style.cursor="move",mxEvent.addGestureListeners(this.title,mxUtils.bind(this,function(e){var a=mxEvent.getClientX(e),i=mxEvent.getClientY(e),s=this.getX(),o=this.getY(),n=mxUtils.bind(this,function(e){var n=mxEvent.getClientX(e)-a,t=mxEvent.getClientY(e)-i;this.setLocation(s+n,o+t),this.fireEvent(new mxEventObject(mxEvent.MOVE,"event",e)),mxEvent.consume(e)}),t=mxUtils.bind(this,function(e){mxEvent.removeGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.MOVE_END,"event",e)),mxEvent.consume(e)});mxEvent.addGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.MOVE_START,"event",e)),mxEvent.consume(e)}))},mxWindow.prototype.setLocation=function(e,n){this.div.style.left=e+"px",this.div.style.top=n+"px"},mxWindow.prototype.getX=function(){return parseInt(this.div.style.left)},mxWindow.prototype.getY=function(){return parseInt(this.div.style.top)},mxWindow.prototype.installCloseHandler=function(){this.closeImg=document.createElement("img"),this.closeImg.setAttribute("src",this.closeImage),this.closeImg.setAttribute("align","right"),this.closeImg.setAttribute("title","Close"),this.closeImg.style.marginLeft="2px",this.closeImg.style.cursor="pointer",this.closeImg.style.display="none",this.title.insertBefore(this.closeImg,this.title.firstChild),mxEvent.addGestureListeners(this.closeImg,mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.CLOSE,"event",e)),this.destroyOnClose?this.destroy():this.setVisible(!1),mxEvent.consume(e)}))},mxWindow.prototype.setImage=function(e){this.image=document.createElement("img"),this.image.setAttribute("src",e),this.image.setAttribute("align","left"),this.image.style.marginRight="4px",this.image.style.marginLeft="0px",this.image.style.marginTop="-2px",this.title.insertBefore(this.image,this.title.firstChild)},mxWindow.prototype.setClosable=function(e){this.closeImg.style.display=e?"":"none"},mxWindow.prototype.isVisible=function(){return null!=this.div&&"hidden"!=this.div.style.visibility},mxWindow.prototype.setVisible=function(e){null!=this.div&&this.isVisible()!=e&&(e?this.show():this.hide())},mxWindow.prototype.show=function(){this.div.style.visibility="",this.activate();var e=mxUtils.getCurrentStyle(this.contentWrapper);mxClient.IS_IE||"auto"!=e.overflow&&null==this.resize||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px"),this.fireEvent(new mxEventObject(mxEvent.SHOW))},mxWindow.prototype.hide=function(){this.div.style.visibility="hidden",this.fireEvent(new mxEventObject(mxEvent.HIDE))},mxWindow.prototype.destroy=function(){this.fireEvent(new mxEventObject(mxEvent.DESTROY)),null!=this.div&&(mxEvent.release(this.div),this.div.parentNode.removeChild(this.div),this.div=null),this.contentWrapper=this.content=this.title=null},mxForm.prototype.table=null,mxForm.prototype.body=!1,mxForm.prototype.getTable=function(){return this.table},mxForm.prototype.addButtons=function(e,n){var t=document.createElement("tr"),a=document.createElement("td");t.appendChild(a);a=document.createElement("td");var i=document.createElement("button");mxUtils.write(i,mxResources.get("ok")||"OK"),a.appendChild(i),mxEvent.addListener(i,"click",function(){e()}),i=document.createElement("button"),mxUtils.write(i,mxResources.get("cancel")||"Cancel"),a.appendChild(i),mxEvent.addListener(i,"click",function(){n()}),t.appendChild(a),this.body.appendChild(t)},mxForm.prototype.addText=function(e,n){var t=document.createElement("input");return t.setAttribute("type","text"),t.value=n,this.addField(e,t)},mxForm.prototype.addCheckbox=function(e,n){var t=document.createElement("input");return t.setAttribute("type","checkbox"),this.addField(e,t),n&&(t.checked=!0),t},mxForm.prototype.addTextarea=function(e,n,t){var a=document.createElement("textarea");return mxClient.IS_NS&&t--,a.setAttribute("rows",t||2),a.value=n,this.addField(e,a)},mxForm.prototype.addCombo=function(e,n,t){var a=document.createElement("select");return null!=t&&a.setAttribute("size",t),n&&a.setAttribute("multiple","true"),this.addField(e,a)},mxForm.prototype.addOption=function(e,n,t,a){var i=document.createElement("option");mxUtils.writeln(i,n),i.setAttribute("value",t),a&&i.setAttribute("selected",a),e.appendChild(i)},mxForm.prototype.addField=function(e,n){var t=document.createElement("tr"),a=document.createElement("td");return mxUtils.write(a,e),t.appendChild(a),(a=document.createElement("td")).appendChild(n),t.appendChild(a),this.body.appendChild(t),n},mxImage.prototype.src=null,mxImage.prototype.width=null,mxImage.prototype.height=null,mxDivResizer.prototype.resizeWidth=!0,mxDivResizer.prototype.resizeHeight=!0,mxDivResizer.prototype.handlingResize=!1,mxDivResizer.prototype.resize=function(){var e=this.getDocumentWidth(),n=this.getDocumentHeight(),t=parseInt(this.div.style.left),a=parseInt(this.div.style.right),i=parseInt(this.div.style.top),s=parseInt(this.div.style.bottom);this.resizeWidth&&!isNaN(t)&&!isNaN(a)&&0<=t&&0<=a&&0<e-a-t&&(this.div.style.width=e-a-t+"px"),this.resizeHeight&&!isNaN(i)&&!isNaN(s)&&0<=i&&0<=s&&0<n-i-s&&(this.div.style.height=n-i-s+"px")},mxDivResizer.prototype.getDocumentWidth=function(){return document.body.clientWidth},mxDivResizer.prototype.getDocumentHeight=function(){return document.body.clientHeight},mxDragSource.prototype.element=null,mxDragSource.prototype.dropHandler=null,mxDragSource.prototype.dragOffset=null,mxDragSource.prototype.dragElement=null,mxDragSource.prototype.previewElement=null,mxDragSource.prototype.enabled=!0,mxDragSource.prototype.currentGraph=null,mxDragSource.prototype.currentDropTarget=null,mxDragSource.prototype.currentPoint=null,mxDragSource.prototype.currentGuide=null,mxDragSource.prototype.currentHighlight=null,mxDragSource.prototype.autoscroll=!0,mxDragSource.prototype.guidesEnabled=!0,mxDragSource.prototype.gridEnabled=!0,mxDragSource.prototype.highlightDropTargets=!0,mxDragSource.prototype.dragElementZIndex=100,mxDragSource.prototype.dragElementOpacity=70,mxDragSource.prototype.isEnabled=function(){return this.enabled},mxDragSource.prototype.setEnabled=function(e){this.enabled=e},mxDragSource.prototype.isGuidesEnabled=function(){return this.guidesEnabled},mxDragSource.prototype.setGuidesEnabled=function(e){this.guidesEnabled=e},mxDragSource.prototype.isGridEnabled=function(){return this.gridEnabled},mxDragSource.prototype.setGridEnabled=function(e){this.gridEnabled=e},mxDragSource.prototype.getGraphForEvent=function(e){return null},mxDragSource.prototype.getDropTarget=function(e,n,t){return e.getCellAt(n,t)},mxDragSource.prototype.createDragElement=function(e){return this.element.cloneNode(!0)},mxDragSource.prototype.createPreviewElement=function(e){return null},mxDragSource.prototype.mouseDown=function(e){this.enabled&&!mxEvent.isConsumed(e)&&null==this.mouseMoveHandler&&(this.startDrag(e),this.mouseMoveHandler=mxUtils.bind(this,this.mouseMove),this.mouseUpHandler=mxUtils.bind(this,this.mouseUp),mxEvent.addGestureListeners(document,null,this.mouseMoveHandler,this.mouseUpHandler),mxEvent.consume(e,!0,!1))},mxDragSource.prototype.startDrag=function(e){this.dragElement=this.createDragElement(e),this.dragElement.style.position="absolute",this.dragElement.style.zIndex=this.dragElementZIndex,mxUtils.setOpacity(this.dragElement,this.dragElementOpacity)},mxDragSource.prototype.stopDrag=function(e){null!=this.dragElement&&(null!=this.dragElement.parentNode&&this.dragElement.parentNode.removeChild(this.dragElement),this.dragElement=null)},mxDragSource.prototype.graphContainsEvent=function(e,n){var t=mxEvent.getClientX(n),a=mxEvent.getClientY(n),i=mxUtils.getOffset(e.container),s=mxUtils.getScrollOrigin();return t>=i.x-s.x&&a>=i.y-s.y&&t<=i.x-s.x+e.container.offsetWidth&&a<=i.y-s.y+e.container.offsetHeight},mxDragSource.prototype.mouseMove=function(e){if(null!=(n=this.getGraphForEvent(e))&&!this.graphContainsEvent(n,e)&&(n=null),n!=this.currentGraph&&(null!=this.currentGraph&&this.dragExit(this.currentGraph),this.currentGraph=n,null!=this.currentGraph&&this.dragEnter(this.currentGraph)),null!=this.currentGraph&&this.dragOver(this.currentGraph,e),null==this.dragElement||null!=this.previewElement&&"visible"==this.previewElement.style.visibility)null!=this.dragElement&&(this.dragElement.style.visibility="hidden");else{var n=mxEvent.getClientX(e),t=mxEvent.getClientY(e);null==this.dragElement.parentNode&&document.body.appendChild(this.dragElement),this.dragElement.style.visibility="visible",null!=this.dragOffset&&(n+=this.dragOffset.x,t+=this.dragOffset.y),n+=document.body.scrollLeft||document.documentElement.scrollLeft,t+=document.body.scrollTop||document.documentElement.scrollTop,this.dragElement.style.left=n+"px",this.dragElement.style.top=t+"px"}mxEvent.consume(e)},mxDragSource.prototype.mouseUp=function(e){if(null!=this.currentGraph){if(null!=this.currentPoint&&(null==this.previewElement||"hidden"!=this.previewElement.style.visibility)){var n=this.currentGraph.view.scale,t=this.currentGraph.view.translate;this.drop(this.currentGraph,e,this.currentDropTarget,this.currentPoint.x/n-t.x,this.currentPoint.y/n-t.y)}this.dragExit(this.currentGraph)}this.stopDrag(e),mxEvent.removeGestureListeners(document,null,this.mouseMoveHandler,this.mouseUpHandler),this.currentGraph=this.mouseUpHandler=this.mouseMoveHandler=null,mxEvent.consume(e)},mxDragSource.prototype.dragEnter=function(e){e.isMouseDown=!0,this.previewElement=this.createPreviewElement(e),this.isGuidesEnabled()&&null!=this.previewElement&&(this.currentGuide=new mxGuide(e,e.graphHandler.getGuideStates())),this.highlightDropTargets&&(this.currentHighlight=new mxCellHighlight(e,mxConstants.DROP_TARGET_COLOR))},mxDragSource.prototype.dragExit=function(e){this.currentPoint=this.currentDropTarget=null,e.isMouseDown=!1,null!=this.previewElement&&(null!=this.previewElement.parentNode&&this.previewElement.parentNode.removeChild(this.previewElement),this.previewElement=null),null!=this.currentGuide&&(this.currentGuide.destroy(),this.currentGuide=null),null!=this.currentHighlight&&(this.currentHighlight.destroy(),this.currentHighlight=null)},mxDragSource.prototype.dragOver=function(e,n){var t=mxUtils.getOffset(e.container),a=mxUtils.getScrollOrigin(e.container),i=mxEvent.getClientX(n)-t.x+a.x;t=mxEvent.getClientY(n)-t.y+a.y;if(e.autoScroll&&(null==this.autoscroll||this.autoscroll)&&e.scrollPointToVisible(i,t,e.autoExtend),null!=this.currentHighlight&&e.isDropEnabled()&&(this.currentDropTarget=this.getDropTarget(e,i,t),a=e.getView().getState(this.currentDropTarget),this.currentHighlight.highlight(a)),null!=this.previewElement){null==this.previewElement.parentNode&&(e.container.appendChild(this.previewElement),this.previewElement.style.zIndex="3",this.previewElement.style.position="absolute");a=this.isGridEnabled()&&e.isGridEnabledEvent(n);var s=!0;if(null!=this.currentGuide&&this.currentGuide.isEnabledForEvent(n))s=new mxRectangle(0,0,s=parseInt(this.previewElement.style.width),o=parseInt(this.previewElement.style.height)),t=new mxPoint(i,t),t=this.currentGuide.move(s,t,a),s=!1,i=t.x,t=t.y;else if(a){a=e.view.scale;var o=e.view.translate,r=e.gridSize/2;i=(e.snap(i/a-o.x-r)+o.x)*a,t=(e.snap(t/a-o.y-r)+o.y)*a}null!=this.currentGuide&&s&&this.currentGuide.hide(),null!=this.previewOffset&&(i+=this.previewOffset.x,t+=this.previewOffset.y),this.previewElement.style.left=Math.round(i)+"px",this.previewElement.style.top=Math.round(t)+"px",this.previewElement.style.visibility="visible"}this.currentPoint=new mxPoint(i,t)},mxDragSource.prototype.drop=function(e,n,t,a,i){this.dropHandler(e,n,t,a,i),e.container.focus()},mxToolbar.prototype=new mxEventSource,mxToolbar.prototype.constructor=mxToolbar,mxToolbar.prototype.container=null,mxToolbar.prototype.enabled=!0,mxToolbar.prototype.noReset=!1,mxToolbar.prototype.updateDefaultMode=!0,mxToolbar.prototype.addItem=function(e,n,t,a,i,s){var o=document.createElement(null!=n?"img":"button"),r=i||(null!=s?"mxToolbarMode":"mxToolbarItem");return o.className=r,o.setAttribute("src",n),null!=e&&(null!=n?o.setAttribute("title",e):mxUtils.write(o,e)),this.container.appendChild(o),null!=t&&(mxEvent.addListener(o,"click",t),mxClient.IS_TOUCH&&mxEvent.addListener(o,"touchend",t)),e=mxUtils.bind(this,function(e){null!=a?o.setAttribute("src",n):o.style.backgroundColor=""}),mxEvent.addGestureListeners(o,mxUtils.bind(this,function(e){if(null!=a?o.setAttribute("src",a):o.style.backgroundColor="gray",null!=s){null==this.menu&&(this.menu=new mxPopupMenu,this.menu.init());var n=this.currentImg;this.menu.isMenuShowing()&&this.menu.hideMenu(),n!=o&&(this.currentImg=o,this.menu.factoryMethod=s,n=new mxPoint(o.offsetLeft,o.offsetTop+o.offsetHeight),this.menu.popup(n.x,n.y,null,e),this.menu.isMenuShowing()&&(o.className=r+"Selected",this.menu.hideMenu=function(){mxPopupMenu.prototype.hideMenu.apply(this),o.className=r,this.currentImg=null}))}}),null,e),mxEvent.addListener(o,"mouseout",e),o},mxToolbar.prototype.addCombo=function(e){var n=document.createElement("div");n.style.display="inline",n.className="mxToolbarComboContainer";var t=document.createElement("select");return t.className=e||"mxToolbarCombo",n.appendChild(t),this.container.appendChild(n),t},mxToolbar.prototype.addActionCombo=function(e,n){var t=document.createElement("select");return t.className=n||"mxToolbarCombo",this.addOption(t,e,null),mxEvent.addListener(t,"change",function(e){var n=t.options[t.selectedIndex];t.selectedIndex=0,null!=n.funct&&n.funct(e)}),this.container.appendChild(t),t},mxToolbar.prototype.addOption=function(e,n,t){var a=document.createElement("option");return mxUtils.writeln(a,n),"function"==typeof t?a.funct=t:a.setAttribute("value",t),e.appendChild(a),a},mxToolbar.prototype.addSwitchMode=function(e,n,t,a,i){var s=document.createElement("img");return s.initialClassName=i||"mxToolbarMode",s.className=s.initialClassName,s.setAttribute("src",n),s.altIcon=a,null!=e&&s.setAttribute("title",e),mxEvent.addListener(s,"click",mxUtils.bind(this,function(e){null!=(e=this.selectedMode.altIcon)?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",e)):this.selectedMode.className=this.selectedMode.initialClassName,this.updateDefaultMode&&(this.defaultMode=s),null!=(e=(this.selectedMode=s).altIcon)?(s.altIcon=s.getAttribute("src"),s.setAttribute("src",e)):s.className=s.initialClassName+"Selected",this.fireEvent(new mxEventObject(mxEvent.SELECT)),t()})),this.container.appendChild(s),null==this.defaultMode&&(this.defaultMode=s,this.selectMode(s),t()),s},mxToolbar.prototype.addMode=function(e,n,t,a,i,s){s=null==s||s;var o=document.createElement(null!=n?"img":"button");return o.initialClassName=i||"mxToolbarMode",o.className=o.initialClassName,o.setAttribute("src",n),o.altIcon=a,null!=e&&o.setAttribute("title",e),this.enabled&&s&&(mxEvent.addListener(o,"click",mxUtils.bind(this,function(e){this.selectMode(o,t),this.noReset=!1})),mxEvent.addListener(o,"dblclick",mxUtils.bind(this,function(e){this.selectMode(o,t),this.noReset=!0})),null==this.defaultMode&&(this.defaultMode=o,this.defaultFunction=t,this.selectMode(o,t))),this.container.appendChild(o),o},mxToolbar.prototype.selectMode=function(e,n){if(this.selectedMode!=e){if(null!=this.selectedMode){var t=this.selectedMode.altIcon;null!=t?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",t)):this.selectedMode.className=this.selectedMode.initialClassName}this.selectedMode=e,null!=(t=this.selectedMode.altIcon)?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",t)):this.selectedMode.className=this.selectedMode.initialClassName+"Selected",this.fireEvent(new mxEventObject(mxEvent.SELECT,"function",n))}},mxToolbar.prototype.resetMode=function(e){(e||!this.noReset)&&this.selectedMode!=this.defaultMode&&this.selectMode(this.defaultMode,this.defaultFunction)},mxToolbar.prototype.addSeparator=function(e){return this.addItem(null,e,null)},mxToolbar.prototype.addBreak=function(){mxUtils.br(this.container)},mxToolbar.prototype.addLine=function(){var e=document.createElement("hr");e.style.marginRight="6px",e.setAttribute("size","1"),this.container.appendChild(e)},mxToolbar.prototype.destroy=function(){mxEvent.release(this.container),this.selectedMode=this.defaultFunction=this.defaultMode=this.container=null,null!=this.menu&&this.menu.destroy()},mxSession.prototype=new mxEventSource,mxSession.prototype.constructor=mxSession,mxSession.prototype.model=null,mxSession.prototype.urlInit=null,mxSession.prototype.urlPoll=null,mxSession.prototype.urlNotify=null,mxSession.prototype.codec=null,mxSession.prototype.linefeed="&#xa;",mxSession.prototype.escapePostData=!0,mxSession.prototype.significantRemoteChanges=!0,mxSession.prototype.sent=0,mxSession.prototype.received=0,mxSession.prototype.debug=!1,mxSession.prototype.connected=!1,mxSession.prototype.suspended=!1,mxSession.prototype.polling=!1,mxSession.prototype.start=function(){this.debug?(this.connected=!0,this.fireEvent(new mxEventObject(mxEvent.CONNECT))):this.connected||this.get(this.urlInit,mxUtils.bind(this,function(e){this.connected=!0,this.fireEvent(new mxEventObject(mxEvent.CONNECT)),this.poll()}))},mxSession.prototype.suspend=function(){this.connected&&!this.suspended&&(this.suspended=!0,this.fireEvent(new mxEventObject(mxEvent.SUSPEND)))},mxSession.prototype.resume=function(e,n,t){this.connected&&this.suspended&&(this.suspended=!1,this.fireEvent(new mxEventObject(mxEvent.RESUME)),this.polling||this.poll())},mxSession.prototype.stop=function(e){this.connected&&(this.connected=!1),this.fireEvent(new mxEventObject(mxEvent.DISCONNECT,"reason",e))},mxSession.prototype.poll=function(){this.connected&&!this.suspended&&null!=this.urlPoll?(this.polling=!0,this.get(this.urlPoll,mxUtils.bind(this,function(){this.poll()}))):this.polling=!1},mxSession.prototype.notify=function(e,n,t){null!=e&&0<e.length&&(null!=this.urlNotify&&(this.debug?(mxLog.show(),mxLog.debug("mxSession.notify: "+this.urlNotify+" xml="+e)):(e="<message><delta>"+e+"</delta></message>",this.escapePostData&&(e=encodeURIComponent(e)),mxUtils.post(this.urlNotify,"xml="+e,n,t))),this.sent+=e.length,this.fireEvent(new mxEventObject(mxEvent.NOTIFY,"url",this.urlNotify,"xml",e)))},mxSession.prototype.get=function(t,a,n){if(void 0!==mxUtils){var i=mxUtils.bind(this,function(e){null!=n?n(e):this.stop(e)});mxUtils.get(t,mxUtils.bind(this,function(e){if(void 0!==mxUtils)if(e.isReady()&&404!=e.getStatus()){if(this.received+=e.getText().length,this.fireEvent(new mxEventObject(mxEvent.GET,"url",t,"request",e)),this.isValidResponse(e)){if(0<e.getText().length){var n=e.getDocumentElement();null==n?i("Invalid response: "+e.getText()):this.receive(n)}null!=a&&a(e)}}else i("Response not ready")}),function(e){i("Transmission error")})}},mxSession.prototype.isValidResponse=function(e){return e.getText().indexOf("<?php")<0},mxSession.prototype.encodeChanges=function(e,n){for(var t="",a=n?-1:1,i=n?e.length-1:0;0<=i&&i<e.length;i+=a){var s=this.codec.encode(e[i]);t=t+mxUtils.getXml(s,this.linefeed)}return t},mxSession.prototype.receive=function(e){if(null!=e&&e.nodeType==mxConstants.NODETYPE_ELEMENT){var n=e.getAttribute("namespace");for(null!=n&&(this.model.prefix=n+"-"),n=e.firstChild;null!=n;){var t=n.nodeName.toLowerCase();"state"==t?this.processState(n):"delta"==t&&this.processDelta(n),n=n.nextSibling}this.fireEvent(new mxEventObject(mxEvent.RECEIVE,"node",e))}},mxSession.prototype.processState=function(e){new mxCodec(e.ownerDocument).decode(e.firstChild,this.model)},mxSession.prototype.processDelta=function(e){for(e=e.firstChild;null!=e;)"edit"==e.nodeName&&this.processEdit(e),e=e.nextSibling},mxSession.prototype.processEdit=function(e){if(0<(e=this.decodeChanges(e)).length){var n=this.createUndoableEdit(e);this.model.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",n,"changes",e)),this.model.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",n)),this.fireEvent(new mxEventObject(mxEvent.FIRED,"edit",n))}},mxSession.prototype.createUndoableEdit=function(e){var n=new mxUndoableEdit(this.model,this.significantRemoteChanges);return n.changes=e,n.notify=function(){n.source.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",n,"changes",n.changes)),n.source.fireEvent(new mxEventObject(mxEvent.NOTIFY,"edit",n,"changes",n.changes))},n},mxSession.prototype.decodeChanges=function(e){this.codec.document=e.ownerDocument;var n=[];for(e=e.firstChild;null!=e;){var t=this.decodeChange(e);null!=t&&n.push(t),e=e.nextSibling}return n},mxSession.prototype.decodeChange=function(e){var n=null;return e.nodeType==mxConstants.NODETYPE_ELEMENT&&(null!=(n="mxRootChange"==e.nodeName?new mxCodec(e.ownerDocument).decode(e):this.codec.decode(e))&&(n.model=this.model,n.execute(),"mxChildChange"==e.nodeName&&null==n.parent&&this.cellRemoved(n.child))),n},mxSession.prototype.cellRemoved=function(e,n){this.codec.putObject(e.getId(),e);for(var t=this.model.getChildCount(e),a=0;a<t;a++)this.cellRemoved(this.model.getChildAt(e,a))},mxUndoableEdit.prototype.source=null,mxUndoableEdit.prototype.changes=null,mxUndoableEdit.prototype.significant=null,mxUndoableEdit.prototype.undone=!1,mxUndoableEdit.prototype.redone=!1,mxUndoableEdit.prototype.isEmpty=function(){return 0==this.changes.length},mxUndoableEdit.prototype.isSignificant=function(){return this.significant},mxUndoableEdit.prototype.add=function(e){this.changes.push(e)},mxUndoableEdit.prototype.notify=function(){},mxUndoableEdit.prototype.die=function(){},mxUndoableEdit.prototype.undo=function(){if(!this.undone){this.source.fireEvent(new mxEventObject(mxEvent.START_EDIT));for(var e=this.changes.length-1;0<=e;e--){var n=this.changes[e];null!=n.execute?n.execute():null!=n.undo&&n.undo(),this.source.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",n))}this.undone=!0,this.redone=!1,this.source.fireEvent(new mxEventObject(mxEvent.END_EDIT))}this.notify()},mxUndoableEdit.prototype.redo=function(){if(!this.redone){this.source.fireEvent(new mxEventObject(mxEvent.START_EDIT));for(var e=this.changes.length,n=0;n<e;n++){var t=this.changes[n];null!=t.execute?t.execute():null!=t.redo&&t.redo(),this.source.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",t))}this.undone=!1,this.redone=!0,this.source.fireEvent(new mxEventObject(mxEvent.END_EDIT))}this.notify()},mxUndoManager.prototype=new mxEventSource,mxUndoManager.prototype.constructor=mxUndoManager,mxUndoManager.prototype.size=null,mxUndoManager.prototype.history=null,mxUndoManager.prototype.indexOfNextAdd=0,mxUndoManager.prototype.isEmpty=function(){return 0==this.history.length},mxUndoManager.prototype.clear=function(){this.history=[],this.indexOfNextAdd=0,this.fireEvent(new mxEventObject(mxEvent.CLEAR))},mxUndoManager.prototype.canUndo=function(){return 0<this.indexOfNextAdd},mxUndoManager.prototype.undo=function(){for(;0<this.indexOfNextAdd;){var e=this.history[--this.indexOfNextAdd];if(e.undo(),e.isSignificant()){this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",e));break}}},mxUndoManager.prototype.canRedo=function(){return this.indexOfNextAdd<this.history.length},mxUndoManager.prototype.redo=function(){for(var e=this.history.length;this.indexOfNextAdd<e;){var n=this.history[this.indexOfNextAdd++];if(n.redo(),n.isSignificant()){this.fireEvent(new mxEventObject(mxEvent.REDO,"edit",n));break}}},mxUndoManager.prototype.undoableEditHappened=function(e){this.trim(),0<this.size&&this.size==this.history.length&&this.history.shift(),this.history.push(e),this.indexOfNextAdd=this.history.length,this.fireEvent(new mxEventObject(mxEvent.ADD,"edit",e))},mxUndoManager.prototype.trim=function(){if(this.history.length>this.indexOfNextAdd)for(var e=this.history.splice(this.indexOfNextAdd,this.history.length-this.indexOfNextAdd),n=0;n<e.length;n++)e[n].die()};var mxUrlConverter=function(e){var t=!0,a=null,i=null;return{isEnabled:function(){return t},setEnabled:function(e){t=e},getBaseUrl:function(){return a},setBaseUrl:function(e){a=e},getBaseDomain:function(){return a},setBaseDomain:function(e){a=e},isRelativeUrl:function(e){return"http://"!=e.substring(0,7)&&"https://"!=e.substring(0,8)&&"data:image"!=e.substring(0,10)},convert:function(e){if(t&&this.isRelativeUrl(e)){if(null==a){i=location.protocol+"//"+location.host;var n=(a=i+location.pathname).lastIndexOf("/");0<n&&(a=a.substring(0,n+1))}e="/"==e.charAt(0)?i+e:a+e}return e}}};function mxPanningManager(s){this.thread=null,this.active=!1,this.dy=this.dx=this.t0y=this.t0x=this.tdy=this.tdx=0,this.scrollbars=!1,this.scrollTop=this.scrollLeft=0,this.mouseListener={mouseDown:function(e,n){},mouseMove:function(e,n){},mouseUp:mxUtils.bind(this,function(e,n){this.active&&this.stop()})},s.addMouseListener(this.mouseListener),mxEvent.addListener(document,"mouseup",mxUtils.bind(this,function(){this.active&&this.stop()}));var o=mxUtils.bind(this,function(){return this.scrollbars=mxUtils.hasScrollbars(s.container),this.scrollLeft=s.container.scrollLeft,this.scrollTop=s.container.scrollTop,window.setInterval(mxUtils.bind(this,function(){if(this.tdx-=this.dx,this.tdy-=this.dy,this.scrollbars){var e=-s.container.scrollLeft-Math.ceil(this.dx),n=-s.container.scrollTop-Math.ceil(this.dy);s.panGraph(e,n),s.panDx=this.scrollLeft-s.container.scrollLeft,s.panDy=this.scrollTop-s.container.scrollTop,s.fireEvent(new mxEventObject(mxEvent.PAN))}else s.panGraph(this.getDx(),this.getDy())}),this.delay)});this.isActive=function(){return active},this.getDx=function(){return Math.round(this.tdx)},this.getDy=function(){return Math.round(this.tdy)},this.start=function(){this.t0x=s.view.translate.x,this.t0y=s.view.translate.y,this.active=!0},this.panTo=function(e,n,t,a){this.active||this.start(),this.scrollLeft=s.container.scrollLeft,this.scrollTop=s.container.scrollTop,a=null!=a?a:0;var i=s.container;this.dx=e+(null!=t?t:0)-i.scrollLeft-i.clientWidth,this.dx<0&&Math.abs(this.dx)<this.border?this.dx=this.border+this.dx:this.dx=this.handleMouseOut?Math.max(this.dx,0):0,0==this.dx&&(this.dx=e-i.scrollLeft,this.dx=0<this.dx&&this.dx<this.border?this.dx-this.border:this.handleMouseOut?Math.min(0,this.dx):0),this.dy=n+a-i.scrollTop-i.clientHeight,this.dy<0&&Math.abs(this.dy)<this.border?this.dy=this.border+this.dy:this.dy=this.handleMouseOut?Math.max(this.dy,0):0,0==this.dy&&(this.dy=n-i.scrollTop,this.dy=0<this.dy&&this.dy<this.border?this.dy-this.border:this.handleMouseOut?Math.min(0,this.dy):0),0!=this.dx||0!=this.dy?(this.dx*=this.damper,this.dy*=this.damper,null==this.thread&&(this.thread=o())):null!=this.thread&&(window.clearInterval(this.thread),this.thread=null)},this.stop=function(){if(this.active)if(this.active=!1,null!=this.thread&&(window.clearInterval(this.thread),this.thread=null),this.tdy=this.tdx=0,this.scrollbars)s.panDx=0,s.panDy=0,s.fireEvent(new mxEventObject(mxEvent.PAN));else{var e=s.panDx,n=s.panDy;0==e&&0==n||(s.panGraph(0,0),s.view.setTranslate(this.t0x+e/s.view.scale,this.t0y+n/s.view.scale))}},this.destroy=function(){s.removeMouseListener(this.mouseListener)}}function mxPopupMenu(e){null!=(this.factoryMethod=e)&&this.init()}function mxAutoSaveManager(e){this.changeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.graphModelChanged(n.getProperty("edit").changes)}),this.setGraph(e)}function mxAnimation(e){this.delay=null!=e?e:20}function mxMorphing(e,n,t,a){mxAnimation.call(this,a),this.graph=e,this.steps=null!=n?n:6,this.ease=null!=t?t:1.5}function mxImageBundle(e){this.images=[],this.alt=null!=e&&e}function mxImageExport(){}function mxAbstractCanvas2D(){this.converter=this.createUrlConverter(),this.reset()}function mxXmlCanvas2D(e){mxAbstractCanvas2D.call(this),this.root=e,this.writeDefaults()}function mxSvgCanvas2D(e,n){mxAbstractCanvas2D.call(this),this.root=e,this.gradients=[],this.defs=null,this.styleEnabled=null!=n&&n;var t=null;if(e.ownerDocument!=document)for(t=e;null!=t&&"svg"!=t.nodeName;)t=t.parentNode;null!=t&&(0<t.getElementsByTagName("defs").length&&(this.defs=t.getElementsByTagName("defs")[0]),null==this.defs&&(this.defs=this.createElement("defs"),null!=t.firstChild?t.insertBefore(this.defs,t.firstChild):t.appendChild(this.defs)),this.styleEnabled&&this.defs.appendChild(this.createStyle()))}mxPanningManager.prototype.damper=1/6,mxPanningManager.prototype.delay=10,mxPanningManager.prototype.handleMouseOut=!0,mxPanningManager.prototype.border=0,mxPopupMenu.prototype=new mxEventSource,mxPopupMenu.prototype.constructor=mxPopupMenu,mxPopupMenu.prototype.submenuImage=mxClient.imageBasePath+"/submenu.gif",mxPopupMenu.prototype.zIndex=10006,mxPopupMenu.prototype.factoryMethod=null,mxPopupMenu.prototype.useLeftButtonForPopup=!1,mxPopupMenu.prototype.enabled=!0,mxPopupMenu.prototype.itemCount=0,mxPopupMenu.prototype.autoExpand=!1,mxPopupMenu.prototype.smartSeparators=!1,mxPopupMenu.prototype.labels=!0,mxPopupMenu.prototype.init=function(){this.table=document.createElement("table"),this.table.className="mxPopupMenu",this.tbody=document.createElement("tbody"),this.table.appendChild(this.tbody),this.div=document.createElement("div"),this.div.className="mxPopupMenu",this.div.style.display="inline",this.div.style.zIndex=this.zIndex,this.div.appendChild(this.table),mxEvent.disableContextMenu(this.div)},mxPopupMenu.prototype.isEnabled=function(){return this.enabled},mxPopupMenu.prototype.setEnabled=function(e){this.enabled=e},mxPopupMenu.prototype.isPopupTrigger=function(e){return e.isPopupTrigger()||this.useLeftButtonForPopup&&mxEvent.isLeftMouseButton(e.getEvent())},mxPopupMenu.prototype.addItem=function(e,n,t,a,i,s){a=a||this,this.itemCount++,a.willAddSeparator&&(a.containsItems&&this.addSeparator(a,!0),a.willAddSeparator=!1),a.containsItems=!0;var o=document.createElement("tr");o.className="mxPopupMenuItem";var r=document.createElement("td");return r.className="mxPopupMenuIcon",null!=n?((i=document.createElement("img")).src=n,r.appendChild(i)):null!=i&&((n=document.createElement("div")).className=i,r.appendChild(n)),o.appendChild(r),this.labels&&((r=document.createElement("td")).className="mxPopupMenuItem"+(null==s||s?"":" disabled"),mxUtils.write(r,e),r.align="left",o.appendChild(r),(e=document.createElement("td")).className="mxPopupMenuItem"+(null==s||s?"":" disabled"),e.style.paddingRight="6px",e.style.textAlign="right",o.appendChild(e),null==a.div&&this.createSubmenu(a)),a.tbody.appendChild(o),(null==s||s)&&(mxEvent.addGestureListeners(o,mxUtils.bind(this,function(e){this.eventReceiver=o,a.activeRow!=o&&a.activeRow!=a&&(null!=a.activeRow&&null!=a.activeRow.div.parentNode&&this.hideSubmenu(a),null!=o.div&&(this.showSubmenu(a,o),a.activeRow=o)),mxEvent.consume(e)}),mxUtils.bind(this,function(e){a.activeRow!=o&&a.activeRow!=a&&(null!=a.activeRow&&null!=a.activeRow.div.parentNode&&this.hideSubmenu(a),this.autoExpand&&null!=o.div&&(this.showSubmenu(a,o),a.activeRow=o)),o.className="mxPopupMenuItemHover"}),mxUtils.bind(this,function(e){this.eventReceiver==o&&(a.activeRow!=o&&this.hideMenu(),null!=t&&t(e)),this.eventReceiver=null,mxEvent.consume(e)})),mxEvent.addListener(o,"mouseout",mxUtils.bind(this,function(e){o.className="mxPopupMenuItem"}))),o},mxPopupMenu.prototype.createSubmenu=function(e){e.table=document.createElement("table"),e.table.className="mxPopupMenu",e.tbody=document.createElement("tbody"),e.table.appendChild(e.tbody),e.div=document.createElement("div"),e.div.className="mxPopupMenu",e.div.style.position="absolute",e.div.style.display="inline",e.div.style.zIndex=this.zIndex,e.div.appendChild(e.table);var n=document.createElement("img");n.setAttribute("src",this.submenuImage),td=e.firstChild.nextSibling.nextSibling,td.appendChild(n)},mxPopupMenu.prototype.showSubmenu=function(e,n){if(null!=n.div){n.div.style.left=e.div.offsetLeft+n.offsetLeft+n.offsetWidth-1+"px",n.div.style.top=e.div.offsetTop+n.offsetTop+"px",document.body.appendChild(n.div);var t=parseInt(n.div.offsetLeft),a=parseInt(n.div.offsetWidth),i=document.body,s=document.documentElement;t+a>(i.scrollLeft||s.scrollLeft)+(i.clientWidth||s.clientWidth)&&(n.div.style.left=e.div.offsetLeft-a+(mxClient.IS_IE?6:-6)+"px"),mxUtils.fit(n.div)}},mxPopupMenu.prototype.addSeparator=function(e,n){if(e=e||this,this.smartSeparators&&!n)e.willAddSeparator=!0;else if(null!=e.tbody){e.willAddSeparator=!1;var t=document.createElement("tr"),a=document.createElement("td");a.className="mxPopupMenuIcon",a.style.padding="0 0 0 0px",t.appendChild(a),(a=document.createElement("td")).style.padding="0 0 0 0px",a.setAttribute("colSpan","2");var i=document.createElement("hr");i.setAttribute("size","1"),a.appendChild(i),t.appendChild(a),e.tbody.appendChild(t)}},mxPopupMenu.prototype.popup=function(e,n,t,a){if(null!=this.div&&null!=this.tbody&&null!=this.factoryMethod){for(this.div.style.left=e+"px",this.div.style.top=n+"px";null!=this.tbody.firstChild;)mxEvent.release(this.tbody.firstChild),this.tbody.removeChild(this.tbody.firstChild);this.itemCount=0,this.factoryMethod(this,t,a),0<this.itemCount&&(this.showMenu(),this.fireEvent(new mxEventObject(mxEvent.SHOW)))}},mxPopupMenu.prototype.isMenuShowing=function(){return null!=this.div&&this.div.parentNode==document.body},mxPopupMenu.prototype.showMenu=function(){9<=document.documentMode&&(this.div.style.filter="none"),document.body.appendChild(this.div),mxUtils.fit(this.div)},mxPopupMenu.prototype.hideMenu=function(){null!=this.div&&(null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.hideSubmenu(this),this.containsItems=!1)},mxPopupMenu.prototype.hideSubmenu=function(e){null!=e.activeRow&&(this.hideSubmenu(e.activeRow),null!=e.activeRow.div.parentNode&&e.activeRow.div.parentNode.removeChild(e.activeRow.div),e.activeRow=null)},mxPopupMenu.prototype.destroy=function(){null!=this.div&&(mxEvent.release(this.div),null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.div=null)},mxAutoSaveManager.prototype=new mxEventSource,mxAutoSaveManager.prototype.constructor=mxAutoSaveManager,mxAutoSaveManager.prototype.graph=null,mxAutoSaveManager.prototype.autoSaveDelay=10,mxAutoSaveManager.prototype.autoSaveThrottle=2,mxAutoSaveManager.prototype.autoSaveThreshold=5,mxAutoSaveManager.prototype.ignoredChanges=0,mxAutoSaveManager.prototype.lastSnapshot=0,mxAutoSaveManager.prototype.enabled=!0,mxAutoSaveManager.prototype.changeHandler=null,mxAutoSaveManager.prototype.isEnabled=function(){return this.enabled},mxAutoSaveManager.prototype.setEnabled=function(e){this.enabled=e},mxAutoSaveManager.prototype.setGraph=function(e){null!=this.graph&&this.graph.getModel().removeListener(this.changeHandler),this.graph=e,null!=this.graph&&this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler)},mxAutoSaveManager.prototype.save=function(){},mxAutoSaveManager.prototype.graphModelChanged=function(e){(e=((new Date).getTime()-this.lastSnapshot)/1e3)>this.autoSaveDelay||this.ignoredChanges>=this.autoSaveThreshold&&e>this.autoSaveThrottle?(this.save(),this.reset()):this.ignoredChanges++},mxAutoSaveManager.prototype.reset=function(){this.lastSnapshot=(new Date).getTime(),this.ignoredChanges=0},mxAutoSaveManager.prototype.destroy=function(){this.setGraph(null)},mxAnimation.prototype=new mxEventSource,mxAnimation.prototype.constructor=mxAnimation,mxAnimation.prototype.delay=null,mxAnimation.prototype.thread=null,mxAnimation.prototype.startAnimation=function(){null==this.thread&&(this.thread=window.setInterval(mxUtils.bind(this,this.updateAnimation),this.delay))},mxAnimation.prototype.updateAnimation=function(){this.fireEvent(new mxEventObject(mxEvent.EXECUTE))},mxAnimation.prototype.stopAnimation=function(){null!=this.thread&&(window.clearInterval(this.thread),this.thread=null,this.fireEvent(new mxEventObject(mxEvent.DONE)))},mxMorphing.prototype=new mxAnimation,mxMorphing.prototype.constructor=mxMorphing,mxMorphing.prototype.graph=null,mxMorphing.prototype.steps=null,mxMorphing.prototype.step=0,mxMorphing.prototype.ease=null,mxMorphing.prototype.cells=null,mxMorphing.prototype.updateAnimation=function(){var e=new mxCellStatePreview(this.graph);if(null!=this.cells)for(var n=0;n<this.cells.length;n++)this.animateCell(cells[n],e,!1);else this.animateCell(this.graph.getModel().getRoot(),e,!0);this.show(e),(e.isEmpty()||this.step++>=this.steps)&&this.stopAnimation()},mxMorphing.prototype.show=function(e){e.show()},mxMorphing.prototype.animateCell=function(e,n,t){var a=this.graph.getView().getState(e),i=null;if(null!=a&&(i=this.getDelta(a),this.graph.getModel().isVertex(e)&&(0!=i.x||0!=i.y))){var s=this.graph.view.getTranslate(),o=this.graph.view.getScale();i.x+=s.x*o,i.y+=s.y*o,n.moveState(a,-i.x/this.ease,-i.y/this.ease)}if(t&&!this.stopRecursion(a,i))for(a=this.graph.getModel().getChildCount(e),i=0;i<a;i++)this.animateCell(this.graph.getModel().getChildAt(e,i),n,t)},mxMorphing.prototype.stopRecursion=function(e,n){return null!=n&&(0!=n.x||0!=n.y)},mxMorphing.prototype.getDelta=function(e){var n=this.getOriginForCell(e.cell),t=this.graph.getView().getTranslate(),a=this.graph.getView().getScale();return e=new mxPoint(e.x/a-t.x,e.y/a-t.y),new mxPoint((n.x-e.x)*a,(n.y-e.y)*a)},mxMorphing.prototype.getOriginForCell=function(e){var n=null;return null!=e&&(n=this.getOriginForCell(this.graph.getModel().getParent(e)),null!=(e=this.graph.getCellGeometry(e))&&(n.x+=e.x,n.y+=e.y)),null==n&&(n=new mxPoint(-(n=this.graph.view.getTranslate()).x,-n.y)),n},mxImageBundle.prototype.images=null,mxImageBundle.prototype.images=null,mxImageBundle.prototype.putImage=function(e,n,t){this.images[e]={value:n,fallback:t}},mxImageBundle.prototype.getImage=function(e){var n=null;return null!=e&&(null!=(e=this.images[e])&&(n=this.alt?e.fallback:e.value)),n},mxImageExport.prototype.includeOverlays=!1,mxImageExport.prototype.drawState=function(e,n){null!=e&&(this.visitStatesRecursive(e,n,this.drawCellState),this.includeOverlays&&this.visitStatesRecursive(e,n,this.drawOverlays))},mxImageExport.prototype.visitStatesRecursive=function(e,n,t){if(null!=e){t(e,n);for(var a=e.view.graph,i=a.model.getChildCount(e.cell),s=0;s<i;s++){var o=a.view.getState(a.model.getChildAt(e.cell,s));this.visitStatesRecursive(o,n,t)}}},mxImageExport.prototype.drawCellState=function(e,n){e.shape instanceof mxShape&&(n.save(),e.shape.paint(n),n.restore()),null!=e.text&&(n.save(),e.text.paint(n),n.restore())},mxImageExport.prototype.drawOverlays=function(e,t){null!=e.overlays&&e.overlays.visit(function(e,n){n instanceof mxShape&&n.paint(t)})},mxAbstractCanvas2D.prototype.state=null,mxAbstractCanvas2D.prototype.states=null,mxAbstractCanvas2D.prototype.path=null,mxAbstractCanvas2D.prototype.rotateHtml=!0,mxAbstractCanvas2D.prototype.lastX=0,mxAbstractCanvas2D.prototype.lastY=0,mxAbstractCanvas2D.prototype.moveOp="M",mxAbstractCanvas2D.prototype.lineOp="L",mxAbstractCanvas2D.prototype.quadOp="Q",mxAbstractCanvas2D.prototype.curveOp="C",mxAbstractCanvas2D.prototype.closeOp="Z",mxAbstractCanvas2D.prototype.pointerEvents=!1,mxAbstractCanvas2D.prototype.createUrlConverter=function(){return new mxUrlConverter},mxAbstractCanvas2D.prototype.reset=function(){this.state=this.createState(),this.states=[]},mxAbstractCanvas2D.prototype.createState=function(){return{dx:0,dy:0,scale:1,alpha:1,fillColor:null,fillAlpha:1,gradientColor:null,gradientAlpha:1,gradientDirection:null,strokeColor:null,strokeWidth:1,dashed:!1,dashPattern:"3 3",lineCap:"flat",lineJoin:"miter",miterLimit:10,fontColor:"#000000",fontBackgroundColor:null,fontBorderColor:null,fontSize:mxConstants.DEFAULT_FONTSIZE,fontFamily:mxConstants.DEFAULT_FONTFAMILY,fontStyle:0,shadow:!1,shadowColor:mxConstants.SHADOWCOLOR,shadowAlpha:mxConstants.SHADOW_OPACITY,shadowDx:mxConstants.SHADOW_OFFSET_X,shadowDy:mxConstants.SHADOW_OFFSET_Y,rotation:0,rotationCx:0,rotationCy:0}},mxAbstractCanvas2D.prototype.format=function(e){return Math.round(parseFloat(e))},mxAbstractCanvas2D.prototype.addOp=function(){if(null!=this.path&&(this.path.push(arguments[0]),2<arguments.length))for(var e=this.state,n=2;n<arguments.length;n+=2)this.lastX=arguments[n-1],this.lastY=arguments[n],this.path.push(this.format((this.lastX+e.dx)*e.scale)),this.path.push(this.format((this.lastY+e.dy)*e.scale))},mxAbstractCanvas2D.prototype.rotatePoint=function(e,n,t,a,i){return t*=Math.PI/180,mxUtils.getRotatedPoint(new mxPoint(e,n),Math.cos(t),Math.sin(t),new mxPoint(a,i))},mxAbstractCanvas2D.prototype.save=function(){this.states.push(this.state),this.state=mxUtils.clone(this.state)},mxAbstractCanvas2D.prototype.restore=function(){this.state=this.states.pop()},mxAbstractCanvas2D.prototype.scale=function(e){this.state.scale*=e,this.state.strokeWidth*=e},mxAbstractCanvas2D.prototype.translate=function(e,n){this.state.dx+=e,this.state.dy+=n},mxAbstractCanvas2D.prototype.setAlpha=function(e){this.state.alpha=e},mxAbstractCanvas2D.prototype.setFillColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fillColor=e,this.state.gradientColor=null},mxAbstractCanvas2D.prototype.setGradient=function(e,n,t,a,i,s,o,r,l){(t=this.state).fillColor=e,t.fillAlpha=null!=r?r:1,t.gradientColor=n,t.gradientAlpha=null!=l?l:1,t.gradientDirection=o},mxAbstractCanvas2D.prototype.setStrokeColor=function(e){e==mxConstants.NONE&&(e=null),this.state.strokeColor=e},mxAbstractCanvas2D.prototype.setStrokeWidth=function(e){this.state.strokeWidth=e},mxAbstractCanvas2D.prototype.setDashed=function(e){this.state.dashed=e},mxAbstractCanvas2D.prototype.setDashPattern=function(e){this.state.dashPattern=e},mxAbstractCanvas2D.prototype.setLineCap=function(e){this.state.lineCap=e},mxAbstractCanvas2D.prototype.setLineJoin=function(e){this.state.lineJoin=e},mxAbstractCanvas2D.prototype.setMiterLimit=function(e){this.state.miterLimit=e},mxAbstractCanvas2D.prototype.setFontColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontColor=e},mxAbstractCanvas2D.prototype.setFontBackgroundColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontBackgroundColor=e},mxAbstractCanvas2D.prototype.setFontBorderColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontBorderColor=e},mxAbstractCanvas2D.prototype.setFontSize=function(e){this.state.fontSize=e},mxAbstractCanvas2D.prototype.setFontFamily=function(e){this.state.fontFamily=e},mxAbstractCanvas2D.prototype.setFontStyle=function(e){null==e&&(e=0),this.state.fontStyle=e},mxAbstractCanvas2D.prototype.setShadow=function(e){this.state.shadow=e},mxAbstractCanvas2D.prototype.setShadowColor=function(e){e==mxConstants.NONE&&(e=null),this.state.shadowColor=e},mxAbstractCanvas2D.prototype.setShadowAlpha=function(e){this.state.shadowAlpha=e},mxAbstractCanvas2D.prototype.setShadowOffset=function(e,n){this.state.shadowDx=e,this.state.shadowDy=n},mxAbstractCanvas2D.prototype.begin=function(){this.lastY=this.lastX=0,this.path=[]},mxAbstractCanvas2D.prototype.moveTo=function(e,n){this.addOp(this.moveOp,e,n)},mxAbstractCanvas2D.prototype.lineTo=function(e,n){this.addOp(this.lineOp,e,n)},mxAbstractCanvas2D.prototype.quadTo=function(e,n,t,a){this.addOp(this.quadOp,e,n,t,a)},mxAbstractCanvas2D.prototype.curveTo=function(e,n,t,a,i,s){this.addOp(this.curveOp,e,n,t,a,i,s)},mxAbstractCanvas2D.prototype.arcTo=function(e,n,t,a,i,s,o){for(e=mxUtils.arcToCurves(this.lastX,this.lastY,e,n,t,a,i,s,o),n=0;n<e.length;n+=6)this.curveTo(e[n],e[n+1],e[n+2],e[n+3],e[n+4],e[n+5])},mxAbstractCanvas2D.prototype.close=function(e,n,t,a,i,s){this.addOp(this.closeOp)},mxAbstractCanvas2D.prototype.end=function(){},mxUtils.extend(mxXmlCanvas2D,mxAbstractCanvas2D),mxXmlCanvas2D.prototype.textEnabled=!0,mxXmlCanvas2D.prototype.compressed=!0,mxXmlCanvas2D.prototype.writeDefaults=function(){var e;(e=this.createElement("fontfamily")).setAttribute("family",mxConstants.DEFAULT_FONTFAMILY),this.root.appendChild(e),(e=this.createElement("fontsize")).setAttribute("size",mxConstants.DEFAULT_FONTSIZE),this.root.appendChild(e),(e=this.createElement("shadowcolor")).setAttribute("color",mxConstants.SHADOWCOLOR),this.root.appendChild(e),(e=this.createElement("shadowalpha")).setAttribute("alpha",mxConstants.SHADOW_OPACITY),this.root.appendChild(e),(e=this.createElement("shadowoffset")).setAttribute("dx",mxConstants.SHADOW_OFFSET_X),e.setAttribute("dy",mxConstants.SHADOW_OFFSET_Y),this.root.appendChild(e)},mxXmlCanvas2D.prototype.format=function(e){return parseFloat(parseFloat(e).toFixed(2))},mxXmlCanvas2D.prototype.createElement=function(e){return this.root.ownerDocument.createElement(e)},mxXmlCanvas2D.prototype.save=function(){this.compressed&&mxAbstractCanvas2D.prototype.save.apply(this,arguments),this.root.appendChild(this.createElement("save"))},mxXmlCanvas2D.prototype.restore=function(){this.compressed&&mxAbstractCanvas2D.prototype.restore.apply(this,arguments),this.root.appendChild(this.createElement("restore"))},mxXmlCanvas2D.prototype.scale=function(e){if(this.compressed){if(this.state.scale==e)return;mxAbstractCanvas2D.prototype.setAlpha.apply(this,arguments)}var n=this.createElement("scale");n.setAttribute("scale",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.translate=function(e,n){var t=this.createElement("translate");t.setAttribute("dx",this.format(e)),t.setAttribute("dy",this.format(n)),this.root.appendChild(t)},mxXmlCanvas2D.prototype.rotate=function(e,n,t,a,i){var s=this.createElement("rotate");(0!=e||n||t)&&(s.setAttribute("theta",this.format(e)),s.setAttribute("flipH",n?"1":"0"),s.setAttribute("flipV",t?"1":"0"),s.setAttribute("cx",this.format(a)),s.setAttribute("cy",this.format(i)),this.root.appendChild(s))},mxXmlCanvas2D.prototype.setAlpha=function(e){if(this.compressed){if(this.state.alpha==e)return;mxAbstractCanvas2D.prototype.setAlpha.apply(this,arguments)}var n=this.createElement("alpha");n.setAttribute("alpha",this.format(e)),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setFillColor=function(e){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fillColor==e)return;mxAbstractCanvas2D.prototype.setFillColor.apply(this,arguments)}var n=this.createElement("fillcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setGradient=function(e,n,t,a,i,s,o,r,l){if(null!=e&&null!=n){mxAbstractCanvas2D.prototype.setGradient.apply(this,arguments);var d=this.createElement("gradient");d.setAttribute("c1",e),d.setAttribute("c2",n),d.setAttribute("x",this.format(t)),d.setAttribute("y",this.format(a)),d.setAttribute("w",this.format(i)),d.setAttribute("h",this.format(s)),null!=o&&d.setAttribute("direction",o),null!=r&&d.setAttribute("alpha1",r),null!=l&&d.setAttribute("alpha2",l),this.root.appendChild(d)}},mxXmlCanvas2D.prototype.setStrokeColor=function(e){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.strokeColor==e)return;mxAbstractCanvas2D.prototype.setStrokeColor.apply(this,arguments)}var n=this.createElement("strokecolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setStrokeWidth=function(e){if(this.compressed){if(this.state.strokeWidth==e)return;mxAbstractCanvas2D.prototype.setStrokeWidth.apply(this,arguments)}var n=this.createElement("strokewidth");n.setAttribute("width",this.format(e)),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setDashed=function(e){if(this.compressed){if(this.state.dashed==e)return;mxAbstractCanvas2D.prototype.setDashed.apply(this,arguments)}var n=this.createElement("dashed");n.setAttribute("dashed",e?"1":"0"),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setDashPattern=function(e){if(this.compressed){if(this.state.dashPattern==e)return;mxAbstractCanvas2D.prototype.setDashPattern.apply(this,arguments)}var n=this.createElement("dashpattern");n.setAttribute("pattern",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setLineCap=function(e){if(this.compressed){if(this.state.lineCap==e)return;mxAbstractCanvas2D.prototype.setLineCap.apply(this,arguments)}var n=this.createElement("linecap");n.setAttribute("cap",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setLineJoin=function(e){if(this.compressed){if(this.state.lineJoin==e)return;mxAbstractCanvas2D.prototype.setLineJoin.apply(this,arguments)}var n=this.createElement("linejoin");n.setAttribute("join",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setMiterLimit=function(e){if(this.compressed){if(this.state.miterLimit==e)return;mxAbstractCanvas2D.prototype.setMiterLimit.apply(this,arguments)}var n=this.createElement("miterlimit");n.setAttribute("limit",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setFontColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontColor==e)return;mxAbstractCanvas2D.prototype.setFontColor.apply(this,arguments)}var n=this.createElement("fontcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontBackgroundColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontBackgroundColor==e)return;mxAbstractCanvas2D.prototype.setFontBackgroundColor.apply(this,arguments)}var n=this.createElement("fontbackgroundcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontBorderColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontBorderColor==e)return;mxAbstractCanvas2D.prototype.setFontBorderColor.apply(this,arguments)}var n=this.createElement("fontbordercolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontSize=function(e){if(this.textEnabled){if(this.compressed){if(this.state.fontSize==e)return;mxAbstractCanvas2D.prototype.setFontSize.apply(this,arguments)}var n=this.createElement("fontsize");n.setAttribute("size",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontFamily=function(e){if(this.textEnabled){if(this.compressed){if(this.state.fontFamily==e)return;mxAbstractCanvas2D.prototype.setFontFamily.apply(this,arguments)}var n=this.createElement("fontfamily");n.setAttribute("family",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontStyle=function(e){if(this.textEnabled){if(null==e&&(e=0),this.compressed){if(this.state.fontStyle==e)return;mxAbstractCanvas2D.prototype.setFontStyle.apply(this,arguments)}var n=this.createElement("fontstyle");n.setAttribute("style",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setShadow=function(e){if(this.compressed){if(this.state.shadow==e)return;mxAbstractCanvas2D.prototype.setShadow.apply(this,arguments)}var n=this.createElement("shadow");n.setAttribute("enabled",e?"1":"0"),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowColor=function(e){if(this.compressed){if(e==mxConstants.NONE&&(e=null),this.state.shadowColor==e)return;mxAbstractCanvas2D.prototype.setShadowColor.apply(this,arguments)}var n=this.createElement("shadowcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowAlpha=function(e){if(this.compressed){if(this.state.shadowAlpha==e)return;mxAbstractCanvas2D.prototype.setShadowAlpha.apply(this,arguments)}var n=this.createElement("shadowalpha");n.setAttribute("alpha",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowOffset=function(e,n){if(this.compressed){if(this.state.shadowDx==e&&this.state.shadowDy==n)return;mxAbstractCanvas2D.prototype.setShadowOffset.apply(this,arguments)}var t=this.createElement("shadowoffset");t.setAttribute("dx",e),t.setAttribute("dy",n),this.root.appendChild(t)},mxXmlCanvas2D.prototype.rect=function(e,n,t,a){var i=this.createElement("rect");i.setAttribute("x",this.format(e)),i.setAttribute("y",this.format(n)),i.setAttribute("w",this.format(t)),i.setAttribute("h",this.format(a)),this.root.appendChild(i)},mxXmlCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){var o=this.createElement("roundrect");o.setAttribute("x",this.format(e)),o.setAttribute("y",this.format(n)),o.setAttribute("w",this.format(t)),o.setAttribute("h",this.format(a)),o.setAttribute("dx",this.format(i)),o.setAttribute("dy",this.format(s)),this.root.appendChild(o)},mxXmlCanvas2D.prototype.ellipse=function(e,n,t,a){var i=this.createElement("ellipse");i.setAttribute("x",this.format(e)),i.setAttribute("y",this.format(n)),i.setAttribute("w",this.format(t)),i.setAttribute("h",this.format(a)),this.root.appendChild(i)},mxXmlCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){i=this.converter.convert(i);var l=this.createElement("image");l.setAttribute("x",this.format(e)),l.setAttribute("y",this.format(n)),l.setAttribute("w",this.format(t)),l.setAttribute("h",this.format(a)),l.setAttribute("src",i),l.setAttribute("aspect",s?"1":"0"),l.setAttribute("flipH",o?"1":"0"),l.setAttribute("flipV",r?"1":"0"),this.root.appendChild(l)},mxXmlCanvas2D.prototype.begin=function(){this.root.appendChild(this.createElement("begin")),this.lastY=this.lastX=0},mxXmlCanvas2D.prototype.moveTo=function(e,n){var t=this.createElement("move");t.setAttribute("x",this.format(e)),t.setAttribute("y",this.format(n)),this.root.appendChild(t),this.lastX=e,this.lastY=n},mxXmlCanvas2D.prototype.lineTo=function(e,n){var t=this.createElement("line");t.setAttribute("x",this.format(e)),t.setAttribute("y",this.format(n)),this.root.appendChild(t),this.lastX=e,this.lastY=n},mxXmlCanvas2D.prototype.quadTo=function(e,n,t,a){var i=this.createElement("quad");i.setAttribute("x1",this.format(e)),i.setAttribute("y1",this.format(n)),i.setAttribute("x2",this.format(t)),i.setAttribute("y2",this.format(a)),this.root.appendChild(i),this.lastX=t,this.lastY=a},mxXmlCanvas2D.prototype.curveTo=function(e,n,t,a,i,s){var o=this.createElement("curve");o.setAttribute("x1",this.format(e)),o.setAttribute("y1",this.format(n)),o.setAttribute("x2",this.format(t)),o.setAttribute("y2",this.format(a)),o.setAttribute("x3",this.format(i)),o.setAttribute("y3",this.format(s)),this.root.appendChild(o),this.lastX=i,this.lastY=s},mxXmlCanvas2D.prototype.close=function(){this.root.appendChild(this.createElement("close"))},mxXmlCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){mxUtils.isNode(i)&&(i=mxUtils.getOuterHtml(i));var u=this.createElement("text");u.setAttribute("x",this.format(e)),u.setAttribute("y",this.format(n)),u.setAttribute("w",this.format(t)),u.setAttribute("h",this.format(a)),u.setAttribute("str",i),null!=s&&u.setAttribute("align",s),null!=o&&u.setAttribute("valign",o),u.setAttribute("wrap",r?"1":"0"),null==l&&(l=""),u.setAttribute("format",l),null!=d&&u.setAttribute("fill",d?"1":"0"),null!=c&&u.setAttribute("clip",c?"1":"0"),null!=m&&u.setAttribute("rotation",m),this.root.appendChild(u)}},mxXmlCanvas2D.prototype.stroke=function(){this.root.appendChild(this.createElement("stroke"))},mxXmlCanvas2D.prototype.fill=function(){this.root.appendChild(this.createElement("fill"))},mxXmlCanvas2D.prototype.fillAndStroke=function(){this.root.appendChild(this.createElement("fillstroke"))},mxUtils.extend(mxSvgCanvas2D,mxAbstractCanvas2D),mxSvgCanvas2D.prototype.node=null,mxSvgCanvas2D.prototype.matchHtmlAlignment=!0,mxSvgCanvas2D.prototype.textEnabled=!0,mxSvgCanvas2D.prototype.foEnabled=!0,mxSvgCanvas2D.prototype.strokeTolerance=0,mxSvgCanvas2D.prototype.refCount=0,mxSvgCanvas2D.prototype.blockImagePointerEvents=!1,mxSvgCanvas2D.prototype.reset=function(){mxAbstractCanvas2D.prototype.reset.apply(this,arguments),this.gradients=[]},mxSvgCanvas2D.prototype.createStyle=function(e){return(e=this.createElement("style")).setAttribute("type","text/css"),mxUtils.write(e,"svg{font-family:"+mxConstants.DEFAULT_FONTFAMILY+";font-size:"+mxConstants.DEFAULT_FONTSIZE+";fill:none;stroke-miterlimit:10}"),e},mxSvgCanvas2D.prototype.createElement=function(e,n){if(null!=this.root.ownerDocument.createElementNS)return this.root.ownerDocument.createElementNS(n||mxConstants.NS_SVG,e);var t=this.root.ownerDocument.createElement(e);return null!=n&&t.setAttribute("xmlns",n),t},mxSvgCanvas2D.prototype.createGradientId=function(e,n,t,a,i){return"#"==e.charAt(0)&&(e=e.substring(1)),"#"==n.charAt(0)&&(n=n.substring(1)),e=e.toLowerCase()+"-"+t,n=n.toLowerCase()+"-"+a,(t=null)==i||i==mxConstants.DIRECTION_SOUTH?t="s":i==mxConstants.DIRECTION_EAST?t="e":(a=e,e=n,n=a,i==mxConstants.DIRECTION_NORTH?t="s":i==mxConstants.DIRECTION_WEST&&(t="e")),"mx-gradient-"+e+"-"+n+"-"+t},mxSvgCanvas2D.prototype.getSvgGradient=function(e,n,t,a,i){var s=this.createGradientId(e,n,t,a,i),o=this.gradients[s];if(null==o){var r=this.root.ownerSVGElement,l=0,d=s+"-"+l;if(null!=r)for(o=r.ownerDocument.getElementById(d);null!=o&&o.ownerSVGElement!=r;)d=s+"-"+l++,o=r.ownerDocument.getElementById(d);else d="id"+ ++this.refCount;null==o&&((o=this.createSvgGradient(e,n,t,a,i)).setAttribute("id",d),null!=this.defs?this.defs.appendChild(o):r.appendChild(o)),this.gradients[s]=o}return o.getAttribute("id")},mxSvgCanvas2D.prototype.createSvgGradient=function(e,n,t,a,i){var s=this.createElement("linearGradient");return s.setAttribute("x1","0%"),s.setAttribute("y1","0%"),s.setAttribute("x2","0%"),s.setAttribute("y2","0%"),null==i||i==mxConstants.DIRECTION_SOUTH?s.setAttribute("y2","100%"):i==mxConstants.DIRECTION_EAST?s.setAttribute("x2","100%"):i==mxConstants.DIRECTION_NORTH?s.setAttribute("y1","100%"):i==mxConstants.DIRECTION_WEST&&s.setAttribute("x1","100%"),t=t<1?";stop-opacity:"+t:"",(i=this.createElement("stop")).setAttribute("offset","0%"),i.setAttribute("style","stop-color:"+e+t),s.appendChild(i),t=a<1?";stop-opacity:"+a:"",(i=this.createElement("stop")).setAttribute("offset","100%"),i.setAttribute("style","stop-color:"+n+t),s.appendChild(i),s},mxSvgCanvas2D.prototype.addNode=function(e,n){var t=this.node,a=this.state;if(null!=t){if("path"==t.nodeName){if(!(null!=this.path&&0<this.path.length))return;t.setAttribute("d",this.path.join(" "))}e&&null!=a.fillColor?this.updateFill():this.styleEnabled||("ellipse"!=t.nodeName||!mxClient.IS_NS||mxClient.IS_GC||mxClient.IS_SF?t.setAttribute("fill","none"):t.setAttribute("fill","transparent"),e=!1),n&&null!=a.strokeColor?this.updateStroke():this.styleEnabled||t.setAttribute("stroke","none"),null!=a.transform&&0<a.transform.length&&t.setAttribute("transform",a.transform),a.shadow&&this.root.appendChild(this.createShadow(t)),0<this.strokeTolerance&&!e&&this.root.appendChild(this.createTolerance(t)),this.pointerEvents&&("path"!=t.nodeName||this.path[this.path.length-1]==this.closeOp)&&t.setAttribute("pointer-events","all"),this.root.appendChild(t)}},mxSvgCanvas2D.prototype.updateFill=function(){var e=this.state;e.alpha<1&&this.node.setAttribute("fill-opacity",e.alpha),null!=e.fillColor&&(null!=e.gradientColor?(e=this.getSvgGradient(e.fillColor,e.gradientColor,e.fillAlpha,e.gradientAlpha,e.gradientDirection),this.node.setAttribute("fill","url(#"+e+")")):this.node.setAttribute("fill",e.fillColor.toLowerCase()))},mxSvgCanvas2D.prototype.updateStroke=function(){var e=this.state;this.node.setAttribute("stroke",e.strokeColor.toLowerCase()),e.alpha<1&&this.node.setAttribute("stroke-opacity",e.alpha);var n=Math.max(1,this.format(e.strokeWidth*e.scale));1!=n&&this.node.setAttribute("stroke-width",n),"path"==this.node.nodeName&&this.updateStrokeAttributes(),e.dashed&&this.node.setAttribute("stroke-dasharray",this.createDashPattern(n))},mxSvgCanvas2D.prototype.updateStrokeAttributes=function(){var e=this.state;if(null!=e.lineJoin&&"miter"!=e.lineJoin&&this.node.setAttribute("stroke-linejoin",e.lineJoin),null!=e.lineCap){var n=e.lineCap;"flat"==n&&(n="butt"),"butt"!=n&&this.node.setAttribute("stroke-linecap",n)}null!=e.miterLimit&&(!this.styleEnabled||10!=e.miterLimit)&&this.node.setAttribute("stroke-miterlimit",e.miterLimit)},mxSvgCanvas2D.prototype.createDashPattern=function(e){var n=this.state.dashPattern.split(" "),t=[];if(0<n.length)for(var a=0;a<n.length;a++)t[a]=Number(n[a])*e;return t.join(" ")},mxSvgCanvas2D.prototype.createTolerance=function(e){e=e.cloneNode(!0);var n=parseFloat(e.getAttribute("stroke-width")||1)+this.strokeTolerance;return e.setAttribute("pointer-events","stroke"),e.setAttribute("visibility","hidden"),e.removeAttribute("stroke-dasharray"),e.setAttribute("stroke-width",n),e.setAttribute("fill","none"),e.setAttribute("stroke",mxClient.IS_OP?"none":"white"),e},mxSvgCanvas2D.prototype.createShadow=function(e){e=e.cloneNode(!0);var n=this.state;return"none"!=e.getAttribute("fill")&&e.setAttribute("fill",n.shadowColor),"none"!=e.getAttribute("stroke")&&e.setAttribute("stroke",n.shadowColor),e.setAttribute("transform","translate("+this.format(n.shadowDx*n.scale)+","+this.format(n.shadowDy*n.scale)+")"+(n.transform||"")),e.setAttribute("opacity",n.shadowAlpha),e},mxSvgCanvas2D.prototype.rotate=function(e,n,t,a,i){if(0!=e||n||t){var s=this.state;if(a+=s.dx,i+=s.dy,a*=s.scale,i*=s.scale,s.transform=s.transform||"",n&&t)e+=180;else if(n^t){var o=n?a:0,r=n?-1:1,l=t?i:0,d=t?-1:1;s.transform+="translate("+this.format(o)+","+this.format(l)+")scale("+this.format(r)+","+this.format(d)+")translate("+this.format(-o)+","+this.format(-l)+")"}(n?!t:t)&&(e*=-1),0!=e&&(s.transform+="rotate("+this.format(e)+","+this.format(a)+","+this.format(i)+")"),s.rotation+=e,s.rotationCx=a,s.rotationCy=i}},mxSvgCanvas2D.prototype.begin=function(){mxAbstractCanvas2D.prototype.begin.apply(this,arguments),this.node=this.createElement("path")},mxSvgCanvas2D.prototype.rect=function(e,n,t,a){var i=this.state,s=this.createElement("rect");s.setAttribute("x",this.format((e+i.dx)*i.scale)),s.setAttribute("y",this.format((n+i.dy)*i.scale)),s.setAttribute("width",this.format(t*i.scale)),s.setAttribute("height",this.format(a*i.scale)),this.node=s},mxSvgCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){this.rect(e,n,t,a),0<i&&this.node.setAttribute("rx",this.format(i*this.state.scale)),0<s&&this.node.setAttribute("ry",this.format(s*this.state.scale))},mxSvgCanvas2D.prototype.ellipse=function(e,n,t,a){var i=this.state,s=this.createElement("ellipse");s.setAttribute("cx",Math.round((e+t/2+i.dx)*i.scale)),s.setAttribute("cy",Math.round((n+a/2+i.dy)*i.scale)),s.setAttribute("rx",t/2*i.scale),s.setAttribute("ry",a/2*i.scale),this.node=s},mxSvgCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){i=this.converter.convert(i),s=null==s||s,o=null!=o&&o,r=null!=r&&r;var l=this.state;e+=l.dx,n+=l.dy;var d=this.createElement("image");if(d.setAttribute("x",this.format(e*l.scale)),d.setAttribute("y",this.format(n*l.scale)),d.setAttribute("width",this.format(t*l.scale)),d.setAttribute("height",this.format(a*l.scale)),null==d.setAttributeNS?d.setAttribute("xlink:href",i):d.setAttributeNS(mxConstants.NS_XLINK,"href",i),s||d.setAttribute("preserveAspectRatio","none"),l.alpha<1&&d.setAttribute("opacity",l.alpha),i=this.state.transform||"",o||r){var c=s=1,m=0,u=0;o&&(s=-1,m=-t-2*e),r&&(c=-1,u=-a-2*n),i+="scale("+s+","+c+")translate("+m+","+u+")"}0<i.length&&d.setAttribute("transform",i),this.root.appendChild(d),this.blockImagePointerEvents&&(d.setAttribute("style","pointer-events:none"),(d=this.createElement("rect")).setAttribute("visibility","hidden"),d.setAttribute("pointer-events","fill"),d.setAttribute("x",this.format(e*l.scale)),d.setAttribute("y",this.format(n*l.scale)),d.setAttribute("width",this.format(t*l.scale)),d.setAttribute("height",this.format(a*l.scale)),this.root.appendChild(d))},mxSvgCanvas2D.prototype.createDiv=function(e,n,t,a,i){return t=this.state,a="display:inline-block;font-size:"+Math.round(t.fontSize)+"px;font-family:"+t.fontFamily+";color:"+t.fontColor+";line-height:"+Math.round(t.fontSize*mxConstants.LINE_HEIGHT)+"px;"+a,(t.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(a+="font-weight:bold;"),(t.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(a+="font-style:italic;"),(t.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(a+="font-decoration:underline;"),n==mxConstants.ALIGN_CENTER?a+="text-align:center;":n==mxConstants.ALIGN_RIGHT&&(a+="text-align:right;"),n="",null!=t.fontBackgroundColor&&(n+="background-color:"+t.fontBackgroundColor+";"),null!=t.fontBorderColor&&(n+="border:1px solid "+t.fontBorderColor+";"),mxUtils.isNode(e)||((t=document.createElement("textarea")).innerHTML=e.replace(/&lt;/g,"&amp;lt;").replace(/&gt;/g,"&amp;gt;").replace(/</g,"&lt;").replace(/>/g,"&gt;"),e=t.value,i?a+=n:0<n.length&&(e='<div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;'+n+'">'+e+"</div>")),!mxClient.IS_IE&&document.createElementNS?((i=document.createElementNS("http://www.w3.org/1999/xhtml","div")).setAttribute("style",a),mxUtils.isNode(e)?this.root.ownerDocument!=document?i.appendChild(e.cloneNode(!0)):i.appendChild(e):i.innerHTML=e,i):(mxUtils.isNode(e)&&this.root.ownerDocument!=document&&(e=e.outerHTML),e=e.replace(/<br>/g,"<br />").replace(/<hr>/g,"<hr />"),mxUtils.parseXml('<div xmlns="http://www.w3.org/1999/xhtml" style="'+a+'">'+e+"</div>").documentElement)},mxSvgCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){m=null!=m?m:0;var u=this.state;if(e+=u.dx,n+=u.dy,this.foEnabled&&"html"==l){var p="vertical-align:top;";if(c?(p+="overflow:hidden;",0<a&&(p+="max-height:"+Math.round(a)+"px;"),0<t&&(p+="width:"+Math.round(t)+"px;")):d&&(p+="width:"+Math.round(t)+"px;",0<a&&(p+="max-height:"+Math.round(a)+"px;")),r?(!c&&0<t&&(p+="width:"+Math.round(t)+"px;"),p+="white-space:normal;"):p+="white-space:nowrap;",r=this.createElement("g"),u.alpha<1&&r.setAttribute("opacity",u.alpha),(l=this.createElement("foreignObject")).setAttribute("pointer-events","all"),null!=(p=this.createDiv(i,s,o,p,d))){r.appendChild(l),this.root.appendChild(r);var g=0;if(mxClient.IS_IE&&!mxClient.IS_SVG){var v=document.createElement("div");v.style.cssText=p.getAttribute("style"),v.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",v.style.visibility="hidden",v.innerHTML=mxUtils.isNode(i)?i.outerHTML:i,document.body.appendChild(v),g=v.offsetWidth,a=mxClient.IS_QUIRKS&&0<a&&c?Math.min(a,v.offsetHeight+2):v.offsetHeight,v.parentNode.removeChild(v),l.appendChild(p)}else this.root.ownerDocument!=document?(p.style.visibility="hidden",document.body.appendChild(p),g=p.offsetWidth,a=p.offsetHeight,l.appendChild(p),p.style.visibility=""):(l.appendChild(p),g=p.offsetWidth,a=p.offsetHeight);t=d?Math.max(t,g):g,u.alpha<1&&r.setAttribute("opacity",u.alpha),d=i=0,s==mxConstants.ALIGN_CENTER?i-=t/2:s==mxConstants.ALIGN_RIGHT&&(i-=t),e+=i,o==mxConstants.ALIGN_MIDDLE?d-=a/2:o==mxConstants.ALIGN_BOTTOM&&(d-=a),n+=d,s=1!=u.scale?"scale("+u.scale+")":"",0!=u.rotation&&this.rotateHtml?(s+="rotate("+u.rotation+","+t/2+","+a/2+")",e=(n=this.rotatePoint((e+t/2)*u.scale,(n+a/2)*u.scale,u.rotation,u.rotationCx,u.rotationCy)).x-t*u.scale/2,n=n.y-a*u.scale/2):(e*=u.scale,n*=u.scale),0!=m&&(s+="rotate("+m+","+-i+","+-d+")"),r.setAttribute("transform","translate("+Math.round(e)+","+Math.round(n)+")"+s),l.setAttribute("width",Math.round(Math.max(1,t))),l.setAttribute("height",Math.round(Math.max(1,a)))}}else this.plainText(e,n,t,a,i,s,o,r,d,c,m)}},mxSvgCanvas2D.prototype.createClip=function(e,n,t,a){for(var i="mx-clip-"+(e=Math.round(e))+"-"+(n=Math.round(n))+"-"+(t=Math.round(t))+"-"+(a=Math.round(a)),s=0,o=i+"-"+s;null!=document.getElementById(o);)o=i+"-"+ ++s;return clip=this.createElement("clipPath"),clip.setAttribute("id",o),(i=this.createElement("rect")).setAttribute("x",e),i.setAttribute("y",n),i.setAttribute("width",t),i.setAttribute("height",a),clip.appendChild(i),clip},mxSvgCanvas2D.prototype.plainText=function(e,n,t,a,i,s,o,r,l,d,c){c=null!=c?c:0,r=this.state;var m=Math.round(r.fontSize),u=this.createElement("g"),p=r.transform||"";if(0!=c&&(p+="rotate("+c+","+this.format(e*r.scale)+","+this.format(n*r.scale)+")"),d&&0<t&&0<a){var g=e;c=n,s==mxConstants.ALIGN_CENTER?g-=t/2:s==mxConstants.ALIGN_RIGHT&&(g-=t),o==mxConstants.ALIGN_MIDDLE?c-=a/2:o==mxConstants.ALIGN_BOTTOM&&(c-=a),c=this.createClip(g*r.scale-2,c*r.scale-2,t*r.scale+4,a*r.scale+4),null!=this.defs?this.defs.appendChild(c):this.root.appendChild(c),u.setAttribute("clip-path","url(#"+c.getAttribute("id")+")")}this.updateFont(u,s),"start"!=(c=s==mxConstants.ALIGN_RIGHT?"end":s==mxConstants.ALIGN_CENTER?"middle":"start")&&u.setAttribute("text-anchor",c),(!this.styleEnabled||m!=mxConstants.DEFAULT_FONTSIZE)&&u.setAttribute("font-size",Math.round(m*r.scale)+"px"),0<p.length&&u.setAttribute("transform",p),r.alpha<1&&u.setAttribute("opacity",r.alpha);p=i.split("\n"),g=Math.round(m*mxConstants.LINE_HEIGHT);var v=m+(p.length-1)*g;for(c=n+m-1,o==mxConstants.ALIGN_MIDDLE?c-=(a=(this.matchHtmlAlignment&&d&&0<a?Math.min(v,a):v)/2)+1:o==mxConstants.ALIGN_BOTTOM&&(c-=(a=this.matchHtmlAlignment&&d&&0<a?Math.min(v,a):v)+2),a=0;a<p.length;a++)0<p[a].length&&0<mxUtils.trim(p[a]).length&&((d=this.createElement("text")).setAttribute("x",this.format(e*r.scale)),d.setAttribute("y",this.format(c*r.scale)),mxUtils.write(d,p[a]),u.appendChild(d)),c+=g;this.root.appendChild(u),this.addTextBackground(u,i,e,n,t,v,s,o,l)},mxSvgCanvas2D.prototype.updateFont=function(e){var n=this.state;e.setAttribute("fill",n.fontColor),(!this.styleEnabled||n.fontFamily!=mxConstants.DEFAULT_FONTFAMILY)&&e.setAttribute("font-family",n.fontFamily),(n.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&e.setAttribute("font-weight","bold"),(n.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&e.setAttribute("font-style","italic"),(n.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&e.setAttribute("text-decoration","underline")},mxSvgCanvas2D.prototype.addTextBackground=function(e,n,t,a,i,s,o,r,l){var d=this.state;if(null!=d.fontBackgroundColor||null!=d.fontBorderColor){var c=null;null!=(c=l?(o==mxConstants.ALIGN_CENTER?t-=i/2:o==mxConstants.ALIGN_RIGHT&&(t-=i),r==mxConstants.ALIGN_MIDDLE?a-=s/2:r==mxConstants.ALIGN_BOTTOM&&(a-=s),new mxRectangle((t+1)*d.scale,a*d.scale,(i-2)*d.scale,(s+2)*d.scale)):null!=e.getBBox&&this.root.ownerDocument==document?(c=e.getBBox(),n=mxClient.IS_IE&&mxClient.IS_SVG,new mxRectangle(c.x,c.y+(n?0:1),c.width,c.height+(n?1:0))):((c=document.createElement("div")).style.lineHeight=Math.round(d.fontSize*mxConstants.LINE_HEIGHT)+"px",c.style.fontSize=Math.round(d.fontSize)+"px",c.style.fontFamily=d.fontFamily,c.style.whiteSpace="nowrap",c.style.position="absolute",c.style.visibility="hidden",c.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",c.style.zoom="1",(d.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(c.style.fontWeight="bold"),(d.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(c.style.fontStyle="italic"),n=mxUtils.htmlEntities(n,!1),c.innerHTML=n.replace(/\n/g,"<br/>"),document.body.appendChild(c),i=c.offsetWidth,s=c.offsetHeight,c.parentNode.removeChild(c),o==mxConstants.ALIGN_CENTER?t-=i/2:o==mxConstants.ALIGN_RIGHT&&(t-=i),r==mxConstants.ALIGN_MIDDLE?a-=s/2:r==mxConstants.ALIGN_BOTTOM&&(a-=s),new mxRectangle((t+1)*d.scale,(a+2)*d.scale,i*d.scale,(s+1)*d.scale)))&&((n=this.createElement("rect")).setAttribute("fill",d.fontBackgroundColor||"none"),n.setAttribute("stroke",d.fontBorderColor||"none"),n.setAttribute("x",Math.floor(c.x-1)),n.setAttribute("y",Math.floor(c.y-1)),n.setAttribute("width",Math.ceil(c.width+2)),n.setAttribute("height",Math.ceil(c.height)),d=null!=d.fontBorderColor?Math.max(1,this.format(d.scale)):0,n.setAttribute("stroke-width",d),this.root.ownerDocument==document&&1==mxUtils.mod(d,2)&&n.setAttribute("transform","translate(0.5, 0.5)"),e.insertBefore(n,e.firstChild))}},mxSvgCanvas2D.prototype.stroke=function(){this.addNode(!1,!0)},mxSvgCanvas2D.prototype.fill=function(){this.addNode(!0,!1)},mxSvgCanvas2D.prototype.fillAndStroke=function(){this.addNode(!0,!0)};var mxVmlCanvas2D=function(e){mxAbstractCanvas2D.call(this),this.root=e};function mxGuide(e,n){this.graph=e,this.setStates(n)}function mxStencil(e){this.desc=e,this.parseDescription(),this.parseConstraints()}function mxShape(e){this.stencil=e,this.strokewidth=1,this.rotation=0,this.opacity=100,this.flipV=this.flipH=!1}mxUtils.extend(mxVmlCanvas2D,mxAbstractCanvas2D),mxVmlCanvas2D.prototype.node=null,mxVmlCanvas2D.prototype.textEnabled=!0,mxVmlCanvas2D.prototype.moveOp="m",mxVmlCanvas2D.prototype.lineOp="l",mxVmlCanvas2D.prototype.curveOp="c",mxVmlCanvas2D.prototype.closeOp="x",mxVmlCanvas2D.prototype.rotatedHtmlBackground="",mxVmlCanvas2D.prototype.vmlScale=1,mxVmlCanvas2D.prototype.addNode=function(e,n){var t=this.node,a=this.state;if(null!=t){if("shape"==t.nodeName){if(!(null!=this.path&&0<this.path.length))return;t.path=this.path.join(" ")+" e",t.style.width=this.root.style.width,t.style.height=this.root.style.height,t.coordsize=parseInt(t.style.width)+" "+parseInt(t.style.height)}t.strokeweight=this.format(Math.max(1,a.strokeWidth*a.scale/this.vmlScale))+"px",a.shadow&&this.root.appendChild(this.createShadow(t,e&&null!=a.fillColor,n&&null!=a.strokeColor)),n&&null!=a.strokeColor?(t.stroked="true",t.strokecolor=a.strokeColor):t.stroked="false",t.appendChild(this.createStroke()),e&&null!=a.fillColor?t.appendChild(this.createFill()):!this.pointerEvents||"shape"==t.nodeName&&this.path[this.path.length-1]!=this.closeOp?t.filled="false":t.appendChild(this.createTransparentFill()),this.root.appendChild(t)}},mxVmlCanvas2D.prototype.createTransparentFill=function(){var e=document.createElement(mxClient.VML_PREFIX+":fill");return e.src=mxClient.imageBasePath+"/transparent.gif",e.type="tile",e},mxVmlCanvas2D.prototype.createFill=function(){var e=this.state,n=document.createElement(mxClient.VML_PREFIX+":fill");if(n.color=e.fillColor,null!=e.gradientColor){n.type="gradient",n.method="none",n.color2=e.gradientColor;var t=180-e.rotation;t=e.gradientDirection==mxConstants.DIRECTION_WEST?t-(90+("x"==this.root.style.flip?180:0)):e.gradientDirection==mxConstants.DIRECTION_EAST?t+(90+("x"==this.root.style.flip?180:0)):e.gradientDirection==mxConstants.DIRECTION_NORTH?t-(180+("y"==this.root.style.flip?-180:0)):t+("y"==this.root.style.flip?-180:0);"x"!=this.root.style.flip&&"y"!=this.root.style.flip||(t*=-1),n.angle=mxUtils.mod(t,360),n.opacity=100*e.alpha*e.fillAlpha+"%",n.setAttribute(mxClient.OFFICE_PREFIX+":opacity2",100*e.alpha*e.gradientAlpha+"%")}else e.alpha<1&&(n.opacity=100*e.alpha+"%");return n},mxVmlCanvas2D.prototype.createStroke=function(){var e=this.state,n=document.createElement(mxClient.VML_PREFIX+":stroke");return n.endcap=e.lineCap||"flat",n.joinstyle=e.lineJoin||"miter",n.miterlimit=e.miterLimit||"10",e.alpha<1&&(n.opacity=100*e.alpha+"%"),e.dashed&&(n.dashstyle=this.getVmlDashStyle()),n},mxVmlCanvas2D.prototype.getVmlDashStyle=function(){var e="dash";if(null!=this.state.dashPattern){var n=this.state.dashPattern.split(" ");0<n.length&&1==n[0]&&(e="0 2")}return e},mxVmlCanvas2D.prototype.createShadow=function(e,n,t){var a=this.state,i=-a.rotation*(Math.PI/180),s=Math.cos(i),o=(i=Math.sin(i),a.shadowDx*a.scale),r=a.shadowDy*a.scale;"x"==this.root.style.flip?o*=-1:"y"==this.root.style.flip&&(r*=-1);var l=e.cloneNode(!0);return l.style.marginLeft=Math.round(o*s-r*i)+"px",l.style.marginTop=Math.round(o*i+r*s)+"px",8==document.documentMode&&(l.strokeweight=e.strokeweight,"shape"==e.nodeName&&(l.path=this.path.join(" ")+" e",l.style.width=this.root.style.width,l.style.height=this.root.style.height,l.coordsize=parseInt(e.style.width)+" "+parseInt(e.style.height))),t?(l.strokecolor=a.shadowColor,l.appendChild(this.createShadowStroke())):l.stroked="false",n?l.appendChild(this.createShadowFill()):l.filled="false",l},mxVmlCanvas2D.prototype.createShadowFill=function(){var e=document.createElement(mxClient.VML_PREFIX+":fill");return e.color=this.state.shadowColor,e.opacity=100*this.state.alpha*this.state.shadowAlpha+"%",e},mxVmlCanvas2D.prototype.createShadowStroke=function(){var e=this.createStroke();return e.opacity=100*this.state.alpha*this.state.shadowAlpha+"%",e},mxVmlCanvas2D.prototype.rotate=function(e,n,t,a,i){n&&t?e+=180:n?this.root.style.flip="x":t&&(this.root.style.flip="y"),(n?!t:t)&&(e*=-1),this.root.style.rotation=e,this.state.rotation+=e,this.state.rotationCx=a,this.state.rotationCy=i},mxVmlCanvas2D.prototype.begin=function(){mxAbstractCanvas2D.prototype.begin.apply(this,arguments),this.node=document.createElement(mxClient.VML_PREFIX+":shape"),this.node.style.position="absolute"},mxVmlCanvas2D.prototype.quadTo=function(e,n,t,a){var i=this.state,s=(this.lastX+i.dx)*i.scale,o=(this.lastY+i.dy)*i.scale;e=(e+i.dx)*i.scale;o+=2/3*((n=(n+i.dy)*i.scale)-o);var r=(t=(t+i.dx)*i.scale)+2/3*(e-t);n=(a=(a+i.dy)*i.scale)+2/3*(n-a),this.path.push("c "+this.format(s+2/3*(e-s))+" "+this.format(o)+" "+this.format(r)+" "+this.format(n)+" "+this.format(t)+" "+this.format(a)),this.lastX=t/i.scale-i.dx,this.lastY=a/i.scale-i.dy},mxVmlCanvas2D.prototype.createRect=function(e,n,t,a,i){var s=this.state;return(e=document.createElement(e)).style.position="absolute",e.style.left=this.format((n+s.dx)*s.scale)+"px",e.style.top=this.format((t+s.dy)*s.scale)+"px",e.style.width=this.format(a*s.scale)+"px",e.style.height=this.format(i*s.scale)+"px",e},mxVmlCanvas2D.prototype.rect=function(e,n,t,a){this.node=this.createRect(mxClient.VML_PREFIX+":rect",e,n,t,a)},mxVmlCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){this.node=this.createRect(mxClient.VML_PREFIX+":roundrect",e,n,t,a),this.node.setAttribute("arcsize",Math.max(100*i/t,100*s/a)+"%")},mxVmlCanvas2D.prototype.ellipse=function(e,n,t,a){this.node=this.createRect(mxClient.VML_PREFIX+":oval",e,n,t,a)},mxVmlCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){var l=null;s?((l=this.createRect(mxClient.VML_PREFIX+":rect",e,n,t,a)).stroked="false",(e=document.createElement(mxClient.VML_PREFIX+":fill")).aspect=s?"atmost":"ignore",e.rotate="true",e.type="frame",e.src=i,l.appendChild(e)):(l=this.createRect(mxClient.VML_PREFIX+":image",e,n,t,a)).src=i,o&&r?l.style.rotation="180":o?l.style.flip="x":r&&(l.style.flip="y"),this.state.alpha<1&&(l.style.filter+="alpha(opacity="+100*this.state.alpha+")"),this.root.appendChild(l)},mxVmlCanvas2D.prototype.createDiv=function(e,n,t,a){t=document.createElement("div");var i=this.state,s="";return null!=i.fontBackgroundColor&&(s+="background-color:"+i.fontBackgroundColor+";"),null!=i.fontBorderColor&&(s+="border:1px solid "+i.fontBorderColor+";"),mxUtils.isNode(e)?t.appendChild(e):0<s.length&&!a?((a=document.createElement("div")).style.cssText=s,a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",a.innerHTML=e,t.appendChild(a)):(t.style.cssText=s,t.innerHTML=e),(e=t.style).fontSize=Math.round(i.fontSize/this.vmlScale)+"px",e.fontFamily=i.fontFamily,e.color=i.fontColor,e.verticalAlign="top",e.textAlign=n||"left",e.lineHeight=Math.round(i.fontSize*mxConstants.LINE_HEIGHT/this.vmlScale)+"px",(i.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(e.fontWeight="bold"),(i.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(e.fontStyle="italic"),(i.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(e.fontDecoration="underline"),t},mxVmlCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){var u=this.state;if("html"==l){null!=u.rotation&&(e=(n=this.rotatePoint(e,n,u.rotation,u.rotationCx,u.rotationCy)).x,n=n.y),8==document.documentMode?(e+=u.dx,n+=u.dy):(e*=u.scale,n*=u.scale),(l=8==document.documentMode?document.createElement(mxClient.VML_PREFIX+":group"):document.createElement("div")).style.position="absolute",l.style.display="inline",l.style.left=this.format(e)+"px",l.style.top=this.format(n)+"px",l.style.zoom=u.scale;var p=document.createElement("div");p.style.position="relative",p.style.display="inline";var g=(v=mxUtils.getAlignmentAsPoint(s,o)).x,v=v.y;if(i=this.createDiv(i,s,o,d),s=document.createElement("div"),r?(!c&&0<t&&(i.style.width=Math.round(t)+"px"),i.style.whiteSpace="normal"):i.style.whiteSpace="nowrap",r=u.rotation+(m||0),this.rotateHtml&&0!=r?(s.style.display="inline",s.style.zoom="1",s.appendChild(i),8==document.documentMode&&"DIV"!=this.root.nodeName?(p.appendChild(s),l.appendChild(p)):l.appendChild(s)):8==document.documentMode?(p.appendChild(i),l.appendChild(p)):(i.style.display="inline",l.appendChild(i)),"DIV"!=this.root.nodeName?((m=document.createElement(mxClient.VML_PREFIX+":rect")).stroked="false",m.filled="false",m.appendChild(l),this.root.appendChild(m)):this.root.appendChild(l),c?(i.style.overflow="hidden",0<t&&(i.style.width=Math.round(t)+"px"),0<a&&8==document.documentMode&&(i.style.maxHeight=Math.round(a)+"px")):d&&(i.style.width=t+"px",0<a&&(i.style.maxHeight=Math.round(a)+"px")),this.rotateHtml&&0!=r){t=r*(Math.PI/180),r=parseFloat(parseFloat(Math.cos(t)).toFixed(8)),m=parseFloat(parseFloat(Math.sin(-t)).toFixed(8)),(t%=2*Math.PI)<0&&(t+=2*Math.PI),(t%=Math.PI)>Math.PI/2&&(t=Math.PI-t),o=Math.cos(t);var h=Math.sin(t);8==document.documentMode&&(i.style.display="inline-block",s.style.display="inline-block",p.style.display="inline-block"),i.style.visibility="hidden",document.body.appendChild(i),t=i.offsetWidth,p=i.offsetHeight,mxClient.IS_QUIRKS&&(c||d)&&a<p&&(p=a,i.style.height=p+"px"),c=((a=p)-a*o+t*-h)/2-m*t*(g+.5)+r*a*(v+.5),d=(t-t*o+a*-h)/2+r*t*(g+.5)+m*a*(v+.5),"group"==l.nodeName&&"DIV"==this.root.nodeName?((g=document.createElement("div")).style.display="inline-block",g.style.position="absolute",g.style.left=this.format(e+(d-t/2)*u.scale)+"px",g.style.top=this.format(n+(c-a/2)*u.scale)+"px",l.parentNode.appendChild(g),g.appendChild(l)):(u=8==document.documentMode?1:u.scale,l.style.left=this.format(e+(d-t/2)*u)+"px",l.style.top=this.format(n+(c-a/2)*u)+"px"),s.style.filter="progid:DXImageTransform.Microsoft.Matrix(M11="+r+", M12="+m+", M21="+-m+", M22="+r+", sizingMethod='auto expand')",s.style.backgroundColor=this.rotatedHtmlBackground,this.state.alpha<1&&(s.style.filter+="alpha(opacity="+100*this.state.alpha+")"),i.style.visibility="",s.appendChild(i)}else 8!=document.documentMode?(i.style.verticalAlign="top",this.state.alpha<1&&(l.style.filter="alpha(opacity="+100*this.state.alpha+")"),u=i.parentNode,i.style.visibility="hidden",document.body.appendChild(i),t=i.offsetWidth,p=i.offsetHeight,mxClient.IS_QUIRKS&&c&&a<p&&(p=a,i.style.height=p+"px"),a=p,i.style.visibility="",u.appendChild(i),l.style.left=this.format(e+t*g*this.state.scale)+"px",l.style.top=this.format(n+a*v*this.state.scale)+"px"):(this.state.alpha<1&&(i.style.filter="alpha(opacity="+100*this.state.alpha+")"),p.style.left=100*g+"%",p.style.top=100*v+"%")}else this.plainText(e,n,t,a,mxUtils.htmlEntities(i,!1),s,o,r,l,d,c,m)}},mxVmlCanvas2D.prototype.plainText=function(e,n,t,a,i,s,o,r,l,d,c,m){e=(e+(a=this.state).dx)*a.scale,n=(n+a.dy)*a.scale,(t=document.createElement(mxClient.VML_PREFIX+":shape")).style.width="1px",t.style.height="1px",t.stroked="false",(d=document.createElement(mxClient.VML_PREFIX+":fill")).color=a.fontColor,d.opacity=100*a.alpha+"%",t.appendChild(d),(d=document.createElement(mxClient.VML_PREFIX+":path")).textpathok="true",d.v="m "+this.format(0)+" "+this.format(0)+" l "+this.format(1)+" "+this.format(0),t.appendChild(d),(d=document.createElement(mxClient.VML_PREFIX+":textpath")).style.cssText="v-text-align:"+s,d.style.align=s,d.style.fontFamily=a.fontFamily,d.string=i,d.on="true",s=Math.round(a.fontSize*a.scale/this.vmlScale),d.style.fontSize=s+"px",(a.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(d.style.fontWeight="bold"),(a.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(d.style.fontStyle="italic"),(a.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(d.style.textDecoration="underline"),a=s+((i=i.split("\n")).length-1)*s*mxConstants.LINE_HEIGHT,s=i=0,o==mxConstants.ALIGN_BOTTOM?s=-a/2:o!=mxConstants.ALIGN_MIDDLE&&(s=a/2),null!=m&&(o=(t.style.rotation=m)*(Math.PI/180),i=Math.sin(o)*s,s*=Math.cos(o)),t.appendChild(d),t.style.left=this.format(e-i)+"px",t.style.top=this.format(n+s)+"px",this.root.appendChild(t)},mxVmlCanvas2D.prototype.stroke=function(){this.addNode(!1,!0)},mxVmlCanvas2D.prototype.fill=function(){this.addNode(!0,!1)},mxVmlCanvas2D.prototype.fillAndStroke=function(){this.addNode(!0,!0)},mxGuide.prototype.graph=null,mxGuide.prototype.states=null,mxGuide.prototype.horizontal=!0,mxGuide.prototype.vertical=!0,mxGuide.prototype.guideX=null,mxGuide.prototype.guideY=null,mxGuide.prototype.setStates=function(e){this.states=e},mxGuide.prototype.isEnabledForEvent=function(e){return!0},mxGuide.prototype.getGuideTolerance=function(){return this.graph.gridSize*this.graph.view.scale/2},mxGuide.prototype.createGuideShape=function(e){return(e=new mxPolyline([],mxConstants.GUIDE_COLOR,mxConstants.GUIDE_STROKEWIDTH)).isDashed=!0,e},mxGuide.prototype.move=function(a,e,n){if(null!=this.states&&(this.horizontal||this.vertical)&&null!=a&&null!=e){var t=this.graph.getView().translate,i=this.graph.getView().scale,s=e.x,o=e.y,r=!1,l=!1,d=f=this.getGuideTolerance(),c=f;(f=a.clone()).x+=e.x,f.y+=e.y;var m=f.x,u=f.x+f.width,p=f.getCenterX(),g=f.y,v=f.y+f.height,h=f.getCenterY();e=function(e){e+=this.graph.panDx;var n=!1;if(Math.abs(e-p)<d?(s=e-a.getCenterX(),d=Math.abs(e-p),n=!0):Math.abs(e-m)<d?(s=e-a.x,d=Math.abs(e-m),n=!0):Math.abs(e-u)<d&&(s=e-a.x-a.width,d=Math.abs(e-u),n=!0),n){null==this.guideX&&(this.guideX=this.createGuideShape(!0),this.guideX.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.guideX.pointerEvents=!1,this.guideX.init(this.graph.getView().getOverlayPane()));var t=this.graph.container;e-=this.graph.panDx,this.guideX.points=[new mxPoint(e,-this.graph.panDy),new mxPoint(e,t.scrollHeight-3-this.graph.panDy)]}r=r||n};for(var f=function(e){e+=this.graph.panDy;var n=!1;if(Math.abs(e-h)<c?(o=e-a.getCenterY(),c=Math.abs(e-h),n=!0):Math.abs(e-g)<c?(o=e-a.y,c=Math.abs(e-g),n=!0):Math.abs(e-v)<c&&(o=e-a.y-a.height,c=Math.abs(e-v),n=!0),n){null==this.guideY&&(this.guideY=this.createGuideShape(!1),this.guideY.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.guideY.pointerEvents=!1,this.guideY.init(this.graph.getView().getOverlayPane()));var t=this.graph.container;e-=this.graph.panDy,this.guideY.points=[new mxPoint(-this.graph.panDx,e),new mxPoint(t.scrollWidth-3-this.graph.panDx,e)]}l=l||n},b=0;b<this.states.length;b++){var A=this.states[b];null!=A&&(this.horizontal&&(e.call(this,A.getCenterX()),e.call(this,A.x),e.call(this,A.x+A.width)),this.vertical&&(f.call(this,A.getCenterY()),f.call(this,A.y),f.call(this,A.y+A.height)))}r||null==this.guideX?null!=this.guideX&&(this.guideX.node.style.visibility="visible",this.guideX.redraw()):this.guideX.node.style.visibility="hidden",l||null==this.guideY?null!=this.guideY&&(this.guideY.node.style.visibility="visible",this.guideY.redraw()):this.guideY.node.style.visibility="hidden",n&&(r||(n=a.x-(this.graph.snap(a.x/i-t.x)+t.x)*i,s=this.graph.snap(s/i)*i-n),l||(t=a.y-(this.graph.snap(a.y/i-t.y)+t.y)*i,o=this.graph.snap(o/i)*i-t)),e=new mxPoint(s,o)}return e},mxGuide.prototype.hide=function(){null!=this.guideX&&(this.guideX.node.style.visibility="hidden"),null!=this.guideY&&(this.guideY.node.style.visibility="hidden")},mxGuide.prototype.destroy=function(){null!=this.guideX&&(this.guideX.destroy(),this.guideX=null),null!=this.guideY&&(this.guideY.destroy(),this.guideY=null)},mxStencil.defaultLocalized=!1,mxStencil.prototype.desc=null,mxStencil.prototype.constraints=null,mxStencil.prototype.aspect=null,mxStencil.prototype.w0=null,mxStencil.prototype.h0=null,mxStencil.prototype.bgNode=null,mxStencil.prototype.fgNode=null,mxStencil.prototype.strokewidth=null,mxStencil.prototype.parseDescription=function(){this.fgNode=this.desc.getElementsByTagName("foreground")[0],this.bgNode=this.desc.getElementsByTagName("background")[0],this.w0=Number(this.desc.getAttribute("w")||100),this.h0=Number(this.desc.getAttribute("h")||100);var e=this.desc.getAttribute("aspect");this.aspect=null!=e?e:"variable",e=this.desc.getAttribute("strokewidth"),this.strokewidth=null!=e?e:"1"},mxStencil.prototype.parseConstraints=function(){var e=this.desc.getElementsByTagName("connections")[0];if(null!=e&&(null!=(e=mxUtils.getChildNodes(e))&&0<e.length)){this.constraints=[];for(var n=0;n<e.length;n++)this.constraints.push(this.parseConstraint(e[n]))}},mxStencil.prototype.parseConstraint=function(e){var n=Number(e.getAttribute("x")),t=Number(e.getAttribute("y"));return e="1"==e.getAttribute("perimeter"),new mxConnectionConstraint(new mxPoint(n,t),e)},mxStencil.prototype.evaluateTextAttribute=function(e,n,t){return n=this.evaluateAttribute(e,n,t),e=e.getAttribute("localized"),(mxStencil.defaultLocalized&&null==e||"1"==e)&&(n=mxResources.get(n)),n},mxStencil.prototype.evaluateAttribute=function(e,n,t){return null==(n=e.getAttribute(n))&&(null!=(e=mxUtils.getTextContent(e))&&("function"==typeof(e=mxUtils.eval(e))&&(n=e(t)))),n},mxStencil.prototype.drawShape=function(e,n,t,a,i,s){this.drawChildren(e,n,t,a,i,s,this.bgNode,!1),this.drawChildren(e,n,t,a,i,s,this.fgNode,!0)},mxStencil.prototype.drawChildren=function(e,n,t,a,i,s,o,r){if(null!=o){var l=mxUtils.getValue(n.style,mxConstants.STYLE_DIRECTION,null);for(t=this.computeAspect(n.style,t,a,i,s,l),a=Math.min(t.width,t.height),a="inherit"==this.strokewidth?Number(mxUtils.getNumber(n.style,mxConstants.STYLE_STROKEWIDTH,1)):Number(this.strokewidth)*a,e.setStrokeWidth(a),o=o.firstChild;null!=o;)o.nodeType==mxConstants.NODETYPE_ELEMENT&&this.drawNode(e,n,o,t,r),o=o.nextSibling}},mxStencil.prototype.computeAspect=function(e,n,t,a,i,s){e=n,n=a/this.w0;var o=i/this.h0;if(s="north"==s||"south"==s){o=a/this.h0,n=i/this.w0;var r=(a-i)/2;e+=r,t-=r}return"fixed"==this.aspect&&(n=o=Math.min(n,o),s?(e+=(i-this.w0*n)/2,t+=(a-this.h0*o)/2):(e+=(a-this.w0*n)/2,t+=(i-this.h0*o)/2)),new mxRectangle(e,t,n,o)},mxStencil.prototype.drawNode=function(e,n,t,a,i){var s=t.nodeName,o=a.x,r=a.y,l=a.width,d=a.height,c=Math.min(l,d);if("save"==s)e.save();else if("restore"==s)e.restore();else if("path"==s)for(e.begin(),t=t.firstChild;null!=t;)t.nodeType==mxConstants.NODETYPE_ELEMENT&&this.drawNode(e,n,t,a,i),t=t.nextSibling;else if("close"==s)e.close();else if("move"==s)e.moveTo(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("line"==s)e.lineTo(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("quad"==s)e.quadTo(o+Number(t.getAttribute("x1"))*l,r+Number(t.getAttribute("y1"))*d,o+Number(t.getAttribute("x2"))*l,r+Number(t.getAttribute("y2"))*d);else if("curve"==s)e.curveTo(o+Number(t.getAttribute("x1"))*l,r+Number(t.getAttribute("y1"))*d,o+Number(t.getAttribute("x2"))*l,r+Number(t.getAttribute("y2"))*d,o+Number(t.getAttribute("x3"))*l,r+Number(t.getAttribute("y3"))*d);else if("arc"==s)e.arcTo(Number(t.getAttribute("rx"))*l,Number(t.getAttribute("ry"))*d,Number(t.getAttribute("x-axis-rotation")),Number(t.getAttribute("large-arc-flag")),Number(t.getAttribute("sweep-flag")),o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("rect"==s)e.rect(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d);else if("roundrect"==s)0==(n=t.getAttribute("arcsize"))&&(n=100*mxConstants.RECTANGLE_ROUNDING_FACTOR),c=Number(t.getAttribute("w"))*l,a=Number(t.getAttribute("h"))*d,n=Number(n)/100,n=Math.min(c*n,a*n),e.roundrect(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,c,a,n,n);else if("ellipse"==s)e.ellipse(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d);else if("image"==s)n=this.evaluateAttribute(t,"src",n),e.image(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d,n,!1,"1"==t.getAttribute("flipH"),"1"==t.getAttribute("flipV"));else if("text"==s){if(c=this.evaluateTextAttribute(t,"str",n),a="1"==t.getAttribute("vertical")?-90:0,"0"==t.getAttribute("align-shape")){var m=n.rotation,u=1==mxUtils.getValue(n.style,mxConstants.STYLE_FLIPH,0);n=1==mxUtils.getValue(n.style,mxConstants.STYLE_FLIPV,0),a=u&&n?a-m:u||n?a+m:a-m}a-=t.getAttribute("rotation"),e.text(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,0,0,c,t.getAttribute("align")||"left",t.getAttribute("valign")||"top",!1,"",!1,!1,a)}else if("include-shape"==s)null!=(m=mxStencilRegistry.getStencil(t.getAttribute("name")))&&(o+=Number(t.getAttribute("x"))*l,r+=Number(t.getAttribute("y"))*d,c=Number(t.getAttribute("w"))*l,a=Number(t.getAttribute("h"))*d,m.drawShape(e,n,o,r,c,a));else if("fillstroke"==s)e.fillAndStroke();else if("fill"==s)e.fill();else if("stroke"==s)e.stroke();else if("strokewidth"==s)e.setStrokeWidth(Number(t.getAttribute("width"))*c);else if("dashed"==s)e.setDashed("1"==t.getAttribute("dashed"));else if("dashpattern"==s){if(null!=(t=t.getAttribute("pattern"))){for(t=t.split(" "),l=[],d=0;d<t.length;d++)0<t[d].length&&l.push(Number(t[d])*c);t=l.join(" "),e.setDashPattern(t)}}else"strokecolor"==s?e.setStrokeColor(t.getAttribute("color")):"linecap"==s?e.setLineCap(t.getAttribute("cap")):"linejoin"==s?e.setLineJoin(t.getAttribute("join")):"miterlimit"==s?e.setMiterLimit(Number(t.getAttribute("limit"))):"fillcolor"==s?e.setFillColor(t.getAttribute("color")):"alpha"==s?e.setAlpha(t.getAttribute("alpha")):"fontcolor"==s?e.setFontColor(t.getAttribute("color")):"fontstyle"==s?e.setFontStyle(t.getAttribute("style")):"fontfamily"==s?e.setFontFamily(t.getAttribute("family")):"fontsize"==s&&e.setFontSize(Number(t.getAttribute("size"))*c);i&&("fillstroke"==s||"fill"==s||"stroke"==s)&&e.setShadow(!1)},mxShape.prototype.dialect=null,mxShape.prototype.scale=1,mxShape.prototype.bounds=null,mxShape.prototype.points=null,mxShape.prototype.node=null,mxShape.prototype.style=null,mxShape.prototype.style=null,mxShape.prototype.boundingBox=null,mxShape.prototype.stencil=null,mxShape.prototype.svgStrokeTolerance=6,mxShape.prototype.pointerEvents=!0,mxShape.prototype.stencilPointerEvents=!1,mxShape.prototype.vmlScale=1,mxShape.prototype.init=function(e){null==this.node&&(this.node=this.create(e),null!=e&&e.appendChild(this.node))},mxShape.prototype.isParseVml=function(){return!0},mxShape.prototype.isHtmlAllowed=function(){return!1},mxShape.prototype.getSvgScreenOffset=function(){return 1==mxUtils.mod(Math.max(1,Math.round(this.strokewidth*this.scale)),2)?.5:0},mxShape.prototype.create=function(e){return null!=e.ownerSVGElement?this.createSvg(e):8==document.documentMode||this.dialect==mxConstants.DIALECT_SVG||this.dialect!=mxConstants.DIALECT_VML&&this.isHtmlAllowed()?this.createHtml(e):this.createVml(e)},mxShape.prototype.createSvg=function(){return document.createElementNS(mxConstants.NS_SVG,"g")},mxShape.prototype.createVml=function(){var e=document.createElement(mxClient.VML_PREFIX+":group");return e.style.position="absolute",e},mxShape.prototype.createHtml=function(){var e=document.createElement("div");return e.style.position="absolute",e},mxShape.prototype.reconfigure=function(){this.redraw()},mxShape.prototype.redraw=function(){this.updateBoundsFromPoints(),this.checkBounds()?(this.node.style.visibility="","DIV"==this.node.nodeName&&this.isHtmlAllowed()?this.redrawHtmlShape():this.redrawShape(),this.updateBoundingBox()):(this.node.style.visibility="hidden",this.boundingBox=null)},mxShape.prototype.updateBoundsFromPoints=function(){var e=this.points;if(null!=e&&0<e.length&&null!=e[0]){this.bounds=new mxRectangle(Number(e[0].x),Number(e[0].y),1,1);for(var n=1;n<this.points.length;n++)null!=e[n]&&this.bounds.add(new mxRectangle(Number(e[n].x),Number(e[n].y),1,1))}},mxShape.prototype.checkBounds=function(){return null!=this.bounds&&!isNaN(this.bounds.x)&&!isNaN(this.bounds.y)&&!isNaN(this.bounds.width)&&!isNaN(this.bounds.height)&&0<this.bounds.width&&0<this.bounds.height},mxShape.prototype.createVmlGroup=function(){var e=document.createElement(mxClient.VML_PREFIX+":group");return e.style.position="absolute",e.style.width=this.node.style.width,e.style.height=this.node.style.height,e},mxShape.prototype.redrawShape=function(){var e=this.createCanvas();for(e.pointerEvents=this.pointerEvents;this.node.hasChildNodes();)this.node.removeChild(this.node.lastChild);this.paint(e),this.node!=e.root&&this.node.insertAdjacentHTML("beforeend",e.root.outerHTML),"DIV"==this.node.nodeName&&8==document.documentMode&&(this.node.style.filter="",(null==this.stencil||!this.stencilPointerEvents)&&mxUtils.addTransparentBackgroundFilter(this.node)),this.destroyCanvas(e)},mxShape.prototype.createCanvas=function(){var e=null,n=null;if(null!=this.node.ownerSVGElement)(e=new mxSvgCanvas2D(this.node,!1)).strokeTolerance=this.svgStrokeTolerance,e.blockImagePointerEvents=mxClient.IS_NS&&!mxClient.IS_SF&&!mxClient.IS_GC,0!=(n=this.getSvgScreenOffset())?this.node.setAttribute("transform","translate("+n+","+n+")"):this.node.removeAttribute("transform");else{this.updateVmlContainer();var t=Math.max(1,Math.round(this.bounds.width)),a=Math.max(1,Math.round(this.bounds.height));n=8==document.documentMode&&this.isParseVml()?this.createVmlGroup():this.node,e=new mxVmlCanvas2D(n,!1);""!=n.tagUrn&&(n.coordsize=t*this.vmlScale+","+a*this.vmlScale,e.scale(this.vmlScale),e.vmlScale=this.vmlScale),n=this.scale,e.translate(-Math.round(this.bounds.x/n),-Math.round(this.bounds.y/n))}return e},mxShape.prototype.updateVmlContainer=function(){this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px";var e=Math.max(1,Math.round(this.bounds.width)),n=Math.max(1,Math.round(this.bounds.height));this.node.style.width=e+"px",this.node.style.height=n+"px",this.node.style.overflow="visible"},mxShape.prototype.destroyCanvas=function(e){if(e instanceof mxSvgCanvas2D){for(var n in e.gradients){var t=e.gradients[n];t.mxRefCount=(t.mxRefCount||0)+1}this.releaseSvgGradients(this.oldGradients),this.oldGradients=e.gradients}},mxShape.prototype.paint=function(e){var n=this.scale,t=this.bounds.x/n,a=this.bounds.y/n,i=this.bounds.width/n,s=this.bounds.height/n;if(this.isPaintBoundsInverted()){t=t+(o=(i-s)/2),a=a-o;var o=i;i=s,s=o}if(this.updateTransform(e,t,a,i,s),this.configureCanvas(e,t,a,i,s),null!=this.stencil)this.paintStencilShape(e,t,a,i,s);else if(e.setStrokeWidth(this.strokewidth),null!=this.points){for(t=[],a=0;a<this.points.length;a++)t.push(new mxPoint(this.points[a].x/n,this.points[a].y/n));this.paintEdgeShape(e,t)}else this.paintVertexShape(e,t,a,i,s)},mxShape.prototype.configureCanvas=function(e,n,t,a,i){var s=null;null!=this.style&&(s=this.style.dashPattern),e.setAlpha(this.opacity/100),null!=this.isShadow&&e.setShadow(this.isShadow),null!=this.isDashed&&e.setDashed(this.isDashed),null!=s&&e.setDashPattern(s),null!=this.gradient?(n=this.getGradientBounds(e,n,t,a,i),e.setGradient(this.fill,this.gradient,n.x,n.y,n.width,n.height,this.gradientDirection)):e.setFillColor(this.fill),e.setStrokeColor(this.stroke)},mxShape.prototype.getGradientBounds=function(e,n,t,a,i){return new mxRectangle(n,t,a,i)},mxShape.prototype.updateTransform=function(e,n,t,a,i){e.scale(this.scale),e.rotate(this.getShapeRotation(),this.flipH,this.flipV,n+a/2,t+i/2)},mxShape.prototype.paintStencilShape=function(e,n,t,a,i){this.stencilPointerEvents&&(this.dialect==mxConstants.DIALECT_SVG?this.addTransparentBackgroundRectangle(this.node,n,t,a,i):8!=document.documentMode&&this.setTransparentBackgroundImage(this.node)),this.stencil.drawShape(e,this,n,t,a,i)},mxShape.prototype.paintVertexShape=function(e,n,t,a,i){this.paintBackground(e,n,t,a,i),e.setShadow(!1),this.paintForeground(e,n,t,a,i)},mxShape.prototype.paintBackground=function(e,n,t,a,i){},mxShape.prototype.paintForeground=function(e,n,t,a,i){},mxShape.prototype.paintEdgeShape=function(e,n){},mxShape.prototype.getArcSize=function(e,n){var t=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;return Math.min(e*t,n*t)},mxShape.prototype.paintGlassEffect=function(e,n,t,a,i,s){var o=Math.ceil(this.strokewidth/2);e.setGradient("#ffffff","#ffffff",n,t,a,.6*i,"south",.9,.1),e.begin(),s+=2*o,this.isRounded?(e.moveTo(n-o+s,t-o),e.quadTo(n-o,t-o,n-o,t-o+s),e.lineTo(n-o,t+.4*i),e.quadTo(n+.5*a,t+.7*i,n+a+o,t+.4*i),e.lineTo(n+a+o,t-o+s),e.quadTo(n+a+o,t-o,n+a+o-s,t-o)):(e.moveTo(n-o,t-o),e.lineTo(n-o,t+.4*i),e.quadTo(n+.5*a,t+.7*i,n+a+o,t+.4*i),e.lineTo(n+a+o,t-o)),e.close(),e.fill()},mxShape.prototype.apply=function(e){this.state=e,this.style=e.style,null!=this.style&&(this.fill=mxUtils.getValue(this.style,mxConstants.STYLE_FILLCOLOR,this.fill),this.gradient=mxUtils.getValue(this.style,mxConstants.STYLE_GRADIENTCOLOR,this.gradient),this.gradientDirection=mxUtils.getValue(this.style,mxConstants.STYLE_GRADIENT_DIRECTION,this.gradientDirection),this.opacity=mxUtils.getValue(this.style,mxConstants.STYLE_OPACITY,this.opacity),this.stroke=mxUtils.getValue(this.style,mxConstants.STYLE_STROKECOLOR,this.stroke),this.strokewidth=mxUtils.getNumber(this.style,mxConstants.STYLE_STROKEWIDTH,this.strokewidth),this.spacing=mxUtils.getValue(this.style,mxConstants.STYLE_SPACING,this.spacing),this.startSize=mxUtils.getNumber(this.style,mxConstants.STYLE_STARTSIZE,this.startSize),this.endSize=mxUtils.getNumber(this.style,mxConstants.STYLE_ENDSIZE,this.endSize),this.startArrow=mxUtils.getValue(this.style,mxConstants.STYLE_STARTARROW,this.startArrow),this.endArrow=mxUtils.getValue(this.style,mxConstants.STYLE_ENDARROW,this.endArrow),this.rotation=mxUtils.getValue(this.style,mxConstants.STYLE_ROTATION,this.rotation),this.direction=mxUtils.getValue(this.style,mxConstants.STYLE_DIRECTION,this.direction),this.flipH=1==mxUtils.getValue(this.style,mxConstants.STYLE_FLIPH,0),this.flipV=1==mxUtils.getValue(this.style,mxConstants.STYLE_FLIPV,0),null!=this.stencil&&(this.flipH=1==mxUtils.getValue(this.style,"stencilFlipH",0)||this.flipH,this.flipV=1==mxUtils.getValue(this.style,"stencilFlipV",0)||this.flipV),"north"!=this.direction&&"south"!=this.direction||(e=this.flipH,this.flipH=this.flipV,this.flipV=e),this.isShadow=1==mxUtils.getValue(this.style,mxConstants.STYLE_SHADOW,this.isShadow),this.isDashed=1==mxUtils.getValue(this.style,mxConstants.STYLE_DASHED,this.isDashed),this.isRounded=1==mxUtils.getValue(this.style,mxConstants.STYLE_ROUNDED,this.isRounded),this.glass=1==mxUtils.getValue(this.style,mxConstants.STYLE_GLASS,this.glass),"none"==this.fill&&(this.fill=null),"none"==this.gradient&&(this.gradient=null),"none"==this.stroke&&(this.stroke=null))},mxShape.prototype.setCursor=function(e){null==e&&(e=""),this.cursor=e,null!=this.node&&(this.node.style.cursor=e)},mxShape.prototype.getCursor=function(){return this.cursor},mxShape.prototype.updateBoundingBox=function(){if(null!=this.bounds){var e=this.createBoundingBox();if(null!=e){this.augmentBoundingBox(e);var n=this.getShapeRotation();0!=n&&(e=mxUtils.getBoundingBox(e,n)),e.x=Math.floor(e.x),e.y=Math.floor(e.y),e.width=Math.ceil(e.width),e.height=Math.ceil(e.height)}this.boundingBox=e}},mxShape.prototype.createBoundingBox=function(){var e=this.bounds.clone();if(this.isPaintBoundsInverted()){var n=(e.width-e.height)/2;e.x+=n,e.y-=n,n=e.width,e.width=e.height,e.height=n}return e},mxShape.prototype.augmentBoundingBox=function(e){this.isShadow&&(e.width+=Math.ceil(mxConstants.SHADOW_OFFSET_X*this.scale),e.height+=Math.ceil(mxConstants.SHADOW_OFFSET_Y*this.scale));var n=Math.ceil(this.strokewidth*this.scale);e.grow(Math.ceil(n/2))},mxShape.prototype.isPaintBoundsInverted=function(){return null==this.stencil&&("north"==this.direction||"south"==this.direction)},mxShape.prototype.getRotation=function(){return null!=this.rotation?this.rotation:0},mxShape.prototype.getTextRotation=function(){var e=this.getRotation();return 1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)&&(e+=mxText.prototype.verticalTextRotation),e},mxShape.prototype.getShapeRotation=function(){var e=this.getRotation();return null!=this.direction&&("north"==this.direction?e+=270:"west"==this.direction?e+=180:"south"==this.direction&&(e+=90)),e},mxShape.prototype.addTransparentBackgroundRectangle=function(e,n,t,a,i){(e=document.createElementNS(mxConstants.NS_SVG,"rect")).setAttribute("x",n),e.setAttribute("y",t),e.setAttribute("width",a),e.setAttribute("height",i),e.setAttribute("fill","none"),e.setAttribute("stroke","none"),e.setAttribute("pointer-events","all"),this.node.appendChild(e)},mxShape.prototype.setTransparentBackgroundImage=function(e){e.style.backgroundImage="url('"+mxClient.imageBasePath+"/transparent.gif')"},mxShape.prototype.releaseSvgGradients=function(e){if(null!=e)for(var n in e){var t=e[n];t.mxRefCount=(t.mxRefCount||0)-1,0==t.mxRefCount&&null!=t.parentNode&&t.parentNode.removeChild(t)}},mxShape.prototype.destroy=function(){null!=this.node&&(mxEvent.release(this.node),null!=this.node.parentNode&&this.node.parentNode.removeChild(this.node),this.node=null),this.releaseSvgGradients(this.oldGradients),this.oldGradients=null};var mxStencilRegistry={stencils:[],addStencil:function(e,n){mxStencilRegistry.stencils[e]=n},getStencil:function(e){return mxStencilRegistry.stencils[e]}},mxMarker={markers:[],addMarker:function(e,n){mxMarker.markers[e]=n},createMarker:function(e,n,t,a,i,s,o,r,l,d){var c=mxMarker.markers[t];return null!=c?c(e,n,t,a,i,s,o,r,l,d):null}};function mxActor(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxCloud(e,n,t,a){mxActor.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxRectangleShape(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxEllipse(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxDoubleEllipse(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxRhombus(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxPolyline(e,n,t){mxShape.call(this),this.points=e,this.stroke=n,this.strokewidth=null!=t?t:1}function mxArrow(e,n,t,a,i,s,o){mxShape.call(this),this.points=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1,this.arrowWidth=null!=i?i:mxConstants.ARROW_WIDTH,this.spacing=null!=s?s:mxConstants.ARROW_SPACING,this.endSize=null!=o?o:mxConstants.ARROW_SIZE}function mxText(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A){mxShape.call(this),this.value=e,this.bounds=n,this.color=null!=i?i:"black",this.align=null!=t?t:"",this.valign=null!=a?a:"",this.family=null!=s?s:mxConstants.DEFAULT_FONTFAMILY,this.size=null!=o?o:mxConstants.DEFAULT_FONTSIZE,this.fontStyle=null!=r?r:mxConstants.DEFAULT_FONTSTYLE,this.spacing=parseInt(l||2),this.spacingTop=this.spacing+parseInt(d||0),this.spacingRight=this.spacing+parseInt(c||0),this.spacingBottom=this.spacing+parseInt(m||0),this.spacingLeft=this.spacing+parseInt(u||0),this.horizontal=null==p||p,this.background=g,this.border=v,this.wrap=null!=h&&h,this.clipped=null!=f&&f,this.overflow=null!=b?b:"visible",this.labelPadding=null!=A?A:0,this.rotation=0}function mxTriangle(){mxActor.call(this)}function mxHexagon(){mxActor.call(this)}function mxLine(e,n,t){mxShape.call(this),this.bounds=e,this.stroke=n,this.strokewidth=null!=t?t:1}function mxImageShape(e,n,t,a,i){mxShape.call(this),this.bounds=e,this.image=n,this.fill=t,this.stroke=a,this.strokewidth=null!=i?i:1,this.shadow=!1}function mxLabel(e,n,t,a){mxRectangleShape.call(this,e,n,t,a)}function mxCylinder(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxConnector(e,n,t){mxPolyline.call(this,e,n,t)}function mxSwimlane(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxGraphLayout(e){this.graph=e}function mxStackLayout(e,n,t,a,i,s){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.spacing=null!=t?t:0,this.x0=null!=a?a:0,this.y0=null!=i?i:0,this.border=null!=s?s:0}function mxPartitionLayout(e,n,t,a){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.spacing=t||0,this.border=a||0}function mxCompactTreeLayout(e,n,t){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.invert=null!=t&&t}function WeightedCellSorter(e,n){this.cell=e,this.weightedValue=n}function mxFastOrganicLayout(e){mxGraphLayout.call(this,e)}function mxCircleLayout(e,n){mxGraphLayout.call(this,e),this.radius=null!=n?n:100}function mxParallelEdgeLayout(e){mxGraphLayout.call(this,e)}function mxCompositeLayout(e,n,t){mxGraphLayout.call(this,e),this.layouts=n,this.master=t}function mxEdgeLabelLayout(e,n){mxGraphLayout.call(this,e)}function mxGraphAbstractHierarchyCell(){this.x=[],this.y=[],this.temp=[]}function mxGraphHierarchyNode(e){mxGraphAbstractHierarchyCell.apply(this,arguments),this.cell=e}function mxGraphHierarchyEdge(e){mxGraphAbstractHierarchyCell.apply(this,arguments),this.edges=e}function mxGraphHierarchyModel(e,n,t,a,i){for(e.getGraph(),this.tightenToSource=i,this.roots=t,this.parent=a,this.vertexMapper={},this.edgeMapper={},this.maxRank=0,t=[],null==n&&(n=this.graph.getChildVertices(a)),this.maxRank=this.SOURCESCANSTARTRANK,this.createInternalCells(e,n,t),a=0;a<n.length;a++){i=t[a].connectsAsSource;for(var s=0;s<i.length;s++){var o=i[s];if(null!=(r=o.edges)&&0<r.length){var r=r[0],l=e.getVisibleTerminal(r,!1);l=mxCellPath.create(l),l=this.vertexMapper[l];t[a]==l&&(l=e.getVisibleTerminal(r,!0),l=mxCellPath.create(l),l=this.vertexMapper[l]),null!=l&&t[a]!=l&&(0==(o.target=l).connectsAsTarget.length&&(l.connectsAsTarget=[]),mxUtils.indexOf(l.connectsAsTarget,o)<0&&l.connectsAsTarget.push(o))}}t[a].temp[0]=1}}function mxHierarchicalLayoutStage(){}function mxMedianHybridCrossingReduction(e){this.layout=e}function MedianCellSorter(){}function mxMinimumCycleRemover(e){this.layout=e}function mxCoordinateAssignment(e,n,t,a,i,s){this.layout=e,this.intraCellSpacing=n,this.interRankCellSpacing=t,this.orientation=a,this.initialX=i,this.parallelEdgeSpacing=s}!function(){function e(e,n,t,a,i,s,o,r,l,d){n=1.118*i*l,r=1.118*s*l,i*=o+l,s*=o+l;var c=a.clone();return c.x-=n,c.y-=r,o=t!=mxConstants.ARROW_CLASSIC?1:.75,a.x+=-i*o-n,a.y+=-s*o-r,function(){e.begin(),e.moveTo(c.x,c.y),e.lineTo(c.x-i-s/2,c.y-s+i/2),t==mxConstants.ARROW_CLASSIC&&e.lineTo(c.x-3*i/4,c.y-3*s/4),e.lineTo(c.x+s/2-i,c.y-s-i/2),e.close(),d?e.fillAndStroke():e.stroke()}}function n(e,n,t,a,i,s,o,r,l,d){r=t==mxConstants.ARROW_DIAMOND?.7071:.9862,n=i*l*r,r*=s*l,i*=o+l,s*=o+l;var c=a.clone();c.x-=n,c.y-=r,a.x+=-i-n,a.y+=-s-r;var m=t==mxConstants.ARROW_DIAMOND?2:3.4;return function(){e.begin(),e.moveTo(c.x,c.y),e.lineTo(c.x-i/2-s/m,c.y+i/m-s/2),e.lineTo(c.x-i,c.y-s),e.lineTo(c.x-i/2+s/m,c.y-s/2-i/m),e.close(),d?e.fillAndStroke():e.stroke()}}mxMarker.addMarker("classic",e),mxMarker.addMarker("block",e),mxMarker.addMarker("open",function(e,n,t,a,i,s,o,r,l,d){n=1.118*i*l,t=1.118*s*l,i*=o+l,s*=o+l;var c=a.clone();return c.x-=n,c.y-=t,a.x+=2*-n,a.y+=2*-t,function(){e.begin(),e.moveTo(c.x-i-s/2,c.y-s+i/2),e.lineTo(c.x,c.y),e.lineTo(c.x+s/2-i,c.y-s-i/2),e.stroke()}}),mxMarker.addMarker("oval",function(e,n,t,a,i,s,o,r,l,d){var c=o/2,m=a.clone();return a.x-=i*c,a.y-=s*c,function(){e.ellipse(m.x-c,m.y-c,o,o),d?e.fillAndStroke():e.stroke()}}),mxMarker.addMarker("diamond",n),mxMarker.addMarker("diamondThin",n)}(),mxUtils.extend(mxActor,mxShape),mxActor.prototype.paintVertexShape=function(e,n,t,a,i){e.translate(n,t),e.begin(),this.redrawPath(e,n,t,a,i),e.fillAndStroke()},mxActor.prototype.redrawPath=function(e,n,t,a,i){n=a/3,e.moveTo(0,i),e.curveTo(0,3*i/5,0,2*i/5,a/2,2*i/5),e.curveTo(a/2-n,2*i/5,a/2-n,0,a/2,0),e.curveTo(a/2+n,0,a/2+n,2*i/5,a/2,2*i/5),e.curveTo(a,2*i/5,a,3*i/5,a,i),e.close()},mxUtils.extend(mxCloud,mxActor),mxCloud.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(.25*a,.25*i),e.curveTo(.05*a,.25*i,0,.5*i,.16*a,.55*i),e.curveTo(0,.66*i,.18*a,.9*i,.31*a,.8*i),e.curveTo(.4*a,i,.7*a,i,.8*a,.8*i),e.curveTo(a,.8*i,a,.6*i,.875*a,.5*i),e.curveTo(a,.3*i,.8*a,.1*i,.625*a,.2*i),e.curveTo(.5*a,.05*i,.3*a,.05*i,.25*a,.25*i),e.close()},mxUtils.extend(mxRectangleShape,mxShape),mxRectangleShape.prototype.isHtmlAllowed=function(){return!this.isRounded&&!this.glass&&0==this.rotation},mxRectangleShape.prototype.paintBackground=function(e,n,t,a,i){if(this.isRounded){var s=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;s=Math.min(a*s,i*s);e.roundrect(n,t,a,i,s,s)}else e.rect(n,t,a,i);e.fillAndStroke()},mxRectangleShape.prototype.paintForeground=function(e,n,t,a,i){this.glass&&this.paintGlassEffect(e,n,t,a,i,this.getArcSize(a+this.strokewidth,i+this.strokewidth))},mxRectangleShape.prototype.redrawHtmlShape=function(){this.updateHtmlBounds(this.node),this.updateHtmlFilters(this.node),this.updateHtmlColors(this.node)},mxRectangleShape.prototype.updateHtmlBounds=function(e){var n=9<=document.documentMode?0:Math.ceil(this.strokewidth*this.scale);e.style.borderWidth=Math.max(1,n)+"px",e.style.overflow="hidden",e.style.left=Math.round(this.bounds.x-n/2)+"px",e.style.top=Math.round(this.bounds.y-n/2)+"px","CSS1Compat"==document.compatMode&&(n=-n),e.style.width=Math.round(Math.max(0,this.bounds.width+n))+"px",e.style.height=Math.round(Math.max(0,this.bounds.height+n))+"px"},mxRectangleShape.prototype.updateHtmlColors=function(e){var n=this.stroke;null!=n&&n!=mxConstants.NONE?(e.style.borderColor=n,this.isDashed?e.style.borderStyle="dashed":0<this.strokewidth&&(e.style.borderStyle="solid"),e.style.borderWidth=Math.max(1,Math.ceil(this.strokewidth*this.scale))+"px"):e.style.borderWidth="0px",null!=(n=this.fill)&&n!=mxConstants.NONE?(e.style.backgroundColor=n,e.style.backgroundImage="none"):this.pointerEvents?e.style.backgroundColor="transparent":8==document.documentMode?mxUtils.addTransparentBackgroundFilter(e):this.setTransparentBackgroundImage(e)},mxRectangleShape.prototype.updateHtmlFilters=function(e){var n="";if(this.opacity<100&&(n+="alpha(opacity="+this.opacity+")"),this.isShadow&&(n+="progid:DXImageTransform.Microsoft.dropShadow (OffX='"+Math.round(mxConstants.SHADOW_OFFSET_X*this.scale)+"', OffY='"+Math.round(mxConstants.SHADOW_OFFSET_Y*this.scale)+"', Color='"+mxConstants.SHADOWCOLOR+"')"),this.gradient){var t=this.fill,a=this.gradient,i="0",s={east:0,south:1,west:2,north:3},o=null!=this.direction?s[this.direction]:0;null!=this.gradientDirection&&(o=mxUtils.mod(o+s[this.gradientDirection]-1,4)),1==o?(i="1",s=t,t=a,a=s):2==o?(s=t,t=a,a=s):3==o&&(i="1"),n+="progid:DXImageTransform.Microsoft.gradient(startColorStr='"+t+"', endColorStr='"+a+"', gradientType='"+i+"')"}e.style.filter=n},mxUtils.extend(mxEllipse,mxShape),mxEllipse.prototype.paintVertexShape=function(e,n,t,a,i){e.ellipse(n,t,a,i),e.fillAndStroke()},mxUtils.extend(mxDoubleEllipse,mxShape),mxDoubleEllipse.prototype.vmlScale=10,mxDoubleEllipse.prototype.paintBackground=function(e,n,t,a,i){e.ellipse(n,t,a,i),e.fillAndStroke()},mxDoubleEllipse.prototype.paintForeground=function(e,n,t,a,i){var s=Math.min(4,Math.min(a/5,i/5));i-=2*s,0<(a-=2*s)&&0<i&&e.ellipse(n+s,t+s,a,i),e.stroke()},mxUtils.extend(mxRhombus,mxShape),mxRhombus.prototype.paintVertexShape=function(e,n,t,a,i){var s=a/2,o=i/2;e.begin(),e.moveTo(n+s,t),e.lineTo(n+a,t+o),e.lineTo(n+s,t+i),e.lineTo(n,t+o),e.close(),e.fillAndStroke()},mxUtils.extend(mxPolyline,mxShape),mxPolyline.prototype.getRotation=function(){return 0},mxPolyline.prototype.paintEdgeShape=function(e,n){this.paintLine(e,n,this.isRounded)},mxPolyline.prototype.paintLine=function(e,n,t){var a=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2,i=n[0],s=n[n.length-1];e.begin(),e.moveTo(i.x,i.y);for(var o=1;o<n.length-1;o++){var r=n[o],l=i.x-r.x;i=i.y-r.y;if(t&&o<n.length-1&&(0!=l||0!=i)){var d=Math.sqrt(l*l+i*i);l=l*Math.min(a,d/2)/d,i=i*Math.min(a,d/2)/d;e.lineTo(r.x+l,r.y+i),l=(i=n[o+1]).x-r.x,i=i.y-r.y,d=Math.max(1,Math.sqrt(l*l+i*i)),l=l*Math.min(a,d/2)/d,i=i*Math.min(a,d/2)/d,l=r.x+l,i=r.y+i,e.quadTo(r.x,r.y,l,i),r=new mxPoint(l,i)}else e.lineTo(r.x,r.y);i=r}e.lineTo(s.x,s.y),e.stroke()},mxUtils.extend(mxArrow,mxShape),mxArrow.prototype.paintEdgeShape=function(e,n){var t=mxConstants.ARROW_SPACING,a=mxConstants.ARROW_WIDTH,i=mxConstants.ARROW_SIZE,s=n[0],o=n[n.length-1],r=o.x-s.x,l=o.y-s.y,d=(c=Math.sqrt(r*r+l*l))-2*t-i,c=(r=r/c,a*(l=l/c)/3),m=(a=-a*r/3,(i=s.x-c/2+t*r)+c),u=(s=s.y-a/2+t*l)+a,p=m+d*r,g=p+c,v=(d=u+d*l)+a,h=g-3*c,f=v-3*a;e.begin(),e.moveTo(i,s),e.lineTo(m,u),e.lineTo(p,d),e.lineTo(g,v),e.lineTo(o.x-t*r,o.y-t*l),e.lineTo(h,f),e.lineTo(h+c,f+a),e.close(),e.fillAndStroke()},mxUtils.extend(mxText,mxShape),mxText.prototype.baseSpacingTop=0,mxText.prototype.baseSpacingBottom=0,mxText.prototype.baseSpacingLeft=0,mxText.prototype.baseSpacingRight=0,mxText.prototype.replaceLinefeeds=!0,mxText.prototype.verticalTextRotation=-90,mxText.prototype.ignoreClippedStringSize=!0,mxText.prototype.ignoreStringSize=!1,mxText.prototype.isParseVml=function(){return!1},mxText.prototype.isHtmlAllowed=function(){return 8!=document.documentMode},mxText.prototype.getSvgScreenOffset=function(){return 0},mxText.prototype.checkBounds=function(){return!(null==this.bounds||isNaN(this.bounds.x)||isNaN(this.bounds.y)||isNaN(this.bounds.width)||isNaN(this.bounds.height))},mxText.prototype.updateBoundingBox=function(){var e=this.node;8==document.documentMode&&null!=e.firstChild&&(null!=(e=e.firstChild).firstChild&&(e=e.firstChild)),this.boundingBox=this.bounds.clone();var n=this.getTextRotation();if(this.ignoreStringSize||null==e||"fill"==this.overflow||this.clipped&&this.ignoreClippedStringSize)this.boundingBox.x+=this.margin.x*this.boundingBox.width,this.boundingBox.y+=this.margin.y*this.boundingBox.height;else{var t=null,a=null;if(null!=e.ownerSVGElement)if(null!=e.firstChild&&null!=e.firstChild.firstChild&&"foreignObject"==e.firstChild.firstChild.nodeName)e=e.firstChild.firstChild,t=this.wrap?this.bounds.width:parseInt(e.getAttribute("width"))*this.scale,a=parseInt(e.getAttribute("height"))*this.scale;else{if(0==(n=e.getBBox()).width&&0==n.height)return;this.boundingBox=new mxRectangle(n.x,n.y,n.width,n.height),n=0}else a=this.state.view.textDiv,a=null!=this.offsetWidth&&null!=this.offsetHeight?(t=this.wrap?this.bounds.width:this.offsetWidth*this.scale,this.offsetHeight*this.scale):null!=a?(this.updateFont(a),this.updateSize(a),mxUtils.isNode(this.value)?a.innerHTML=this.value.outerHTML:(t=this.replaceLinefeeds?this.value.replace(/\n/g,"<br/>"):this.value,a.innerHTML=t),t=this.wrap?this.bounds.width:a.offsetWidth*this.scale,a.offsetHeight*this.scale):(t=this.wrap?this.bounds.width:e.offsetWidth*this.scale,e.offsetHeight*this.scale);null!=t&&null!=a&&(this.boundingBox=new mxRectangle(this.bounds.x+this.margin.x*t,this.bounds.y+this.margin.y*a,t,a))}null!=this.boundingBox&&(0!=n&&(n=mxUtils.getBoundingBox(this.boundingBox,n),this.boundingBox.x=n.x,this.boundingBox.y=n.y,mxClient.IS_QUIRKS||(this.boundingBox.width=n.width,this.boundingBox.height=n.height)),this.boundingBox.x=Math.floor(this.boundingBox.x),this.boundingBox.y=Math.floor(this.boundingBox.y),this.boundingBox.width=Math.ceil(this.boundingBox.width),this.boundingBox.height=Math.ceil(this.boundingBox.height))},mxText.prototype.getShapeRotation=function(){return 0},mxText.prototype.getTextRotation=function(){return null!=this.state&&null!=this.state.shape?this.state.shape.getTextRotation():0},mxText.prototype.isPaintBoundsInverted=function(){return!this.horizontal&&null!=this.state&&this.state.view.graph.model.isVertex(this.state.cell)},mxText.prototype.configureCanvas=function(e,n,t,a,i){mxShape.prototype.configureCanvas.apply(this,arguments),e.setFontColor(this.color),e.setFontBackgroundColor(this.background),e.setFontBorderColor(this.border),e.setFontFamily(this.family),e.setFontSize(this.size),e.setFontStyle(this.fontStyle)},mxText.prototype.updateVmlContainer=function(){this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px",this.node.style.width="1px",this.node.style.height="1px",this.node.style.overflow="visible"},mxText.prototype.paint=function(e){var n=this.scale,t=this.bounds.x/n,a=this.bounds.y/n,i=this.bounds.width/n;n=this.bounds.height/n;this.updateTransform(e,t,a,i,n),this.configureCanvas(e,t,a,i,n);var s=mxUtils.isNode(this.value)||this.dialect==mxConstants.DIALECT_STRICTHTML,o=s||e instanceof mxVmlCanvas2D?"html":"",r=this.value;!s&&"html"==o&&(r=mxUtils.htmlEntities(r,!1)),r=!mxUtils.isNode(this.value)&&this.replaceLinefeeds&&"html"==o?r.replace(/\n/g,"<br/>"):r,e.text(t,a,i,n,r,this.align,this.valign,this.wrap,o,"fill"==this.overflow,this.clipped,this.getTextRotation())},mxText.prototype.redrawHtmlShape=function(){var e=this.node.style;e.opacity=this.opacity<1?this.opacity:"",e.overflow="",e.width="",e.height="",this.updateFont(this.node),this.updateSize(this.node),this.updateValue(),this.offsetHeight=this.offsetWidth=null,null!=mxClient.CSS_PREFIX?this.updateHtmlTransform():this.updateHtmlFilter()},mxText.prototype.updateHtmlTransform=function(){var e=this.getTextRotation(),n=this.node.style,t=this.margin.x,a=this.margin.y;0!=e?(n[mxClient.CSS_PREFIX+"TransformOrigin"]=100*-t+"% "+100*-a+"%",n[mxClient.CSS_PREFIX+"Transform"]="translate("+100*t+"%,"+100*a+"%)scale("+this.scale+") rotate("+e+"deg)"):(n[mxClient.CSS_PREFIX+"TransformOrigin"]="0% 0%",n[mxClient.CSS_PREFIX+"Transform"]="scale("+this.scale+")translate("+100*t+"%,"+100*a+"%)"),n.left=Math.round(this.bounds.x)+"px",n.top=Math.round(this.bounds.y)+"px"},mxText.prototype.updateHtmlFilter=function(){var e=this.node.style,n=this.margin.x,t=this.margin.y,a=this.scale;e.filter="";var i=0,s=0;if(null!=(r=null!=this.state?this.state.view.textDiv:null)){if(r.style.overflow="",r.style.height="",r.style.width="",this.updateFont(r),this.updateSize(r),mxUtils.isNode(this.value))r.innerHTML=this.value.outerHTML;else{var o=this.value;this.dialect!=mxConstants.DIALECT_STRICTHTML&&(o=mxUtils.htmlEntities(o,!1)),o=this.replaceLinefeeds?o.replace(/\n/g,"<br/>"):o,r.innerHTML=o}i=r.offsetWidth+2,s=r.offsetHeight+2}else i=this.node.offsetWidth,s=this.node.offsetHeight+1;this.offsetWidth=i,this.offsetHeight=s,r=this.bounds.width/a,o=this.bounds.height/a,mxClient.IS_QUIRKS&&(this.clipped||"fill"==this.overflow)&&0<o?(o=Math.min(o,s),e.height=Math.round(o+1)+"px"):o=s,"fill"!=this.overflow&&(mxClient.IS_QUIRKS&&(this.clipped||this.wrap)&&0<r?(r=Math.min(r,i),e.width=Math.round(r)+"px"):r=i);o*=a;var r=r*a,l=(i=this.getTextRotation()*(Math.PI/180),s=parseFloat(parseFloat(Math.cos(i)).toFixed(8)),parseFloat(parseFloat(Math.sin(-i)).toFixed(8)));(i=i%(2*Math.PI))<0&&(i+=2*Math.PI),(i%=Math.PI)>Math.PI/2&&(i=Math.PI-i);var d=Math.cos(i),c=Math.sin(-i),m=(o-o*d+r*c)/2+l*(n=r*-(n+.5))-s*(t=o*-(t+.5));0!=i&&(e.filter="progid:DXImageTransform.Microsoft.Matrix(M11="+s+", M12="+l+", M21="+-l+", M22="+s+", sizingMethod='auto expand')"),e.zoom=a,e.left=Math.round(this.bounds.x+((r-r*d+o*c)/2-s*n-l*t)-r/2)+"px",e.top=Math.round(this.bounds.y+m-o/2)+"px"},mxText.prototype.updateValue=function(){if(mxUtils.isNode(this.value))this.node.innerHTML="",this.node.appendChild(this.value);else{var e=this.value;this.dialect!=mxConstants.DIALECT_STRICTHTML&&(e=mxUtils.htmlEntities(e,!1));e=this.replaceLinefeeds?e.replace(/\n/g,"<br/>"):e;var n=null!=this.background&&this.background!=mxConstants.NONE?this.background:null,t=null!=this.border&&this.border!=mxConstants.NONE?this.border:null;if(null!=n||null!=t)if("fill"==this.overflow)null!=n&&(this.node.style.backgroundColor=n),null!=t&&(this.node.style.border="1px solid "+t);else{var a="";null!=n&&(a+="background-color:"+n+";"),null!=t&&(a+="border:1px solid "+t+";"),e='<div style="zoom:1;'+a+"display:inline-block;_display:inline;padding-bottom:1px;padding-right:1px;line-height:"+this.node.style.lineHeight+'">'+e+"</div>",this.node.style.lineHeight=""}this.node.innerHTML=e}},mxText.prototype.updateFont=function(e){(e=e.style).lineHeight=Math.round(this.size*mxConstants.LINE_HEIGHT)+"px",e.fontSize=Math.round(this.size)+"px",e.fontFamily=this.family,e.verticalAlign="top",e.color=this.color,e.fontWeight=(this.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD?"bold":"",e.fontStyle=(this.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC?"italic":"",e.fontDecoration=(this.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE?"underline":"",e.textAlign=this.align==mxConstants.ALIGN_CENTER?"center":this.align==mxConstants.ALIGN_RIGHT?"right":"left"},mxText.prototype.updateSize=function(e){var n=Math.round(this.bounds.width/this.scale),t=Math.round(this.bounds.height/this.scale);e=e.style,this.clipped?(e.overflow="hidden",0<t&&(e.maxHeight=t+"px"),0<n&&(e.width=n+"px")):"fill"==this.overflow&&(e.width=n+"px",0<t&&(e.maxHeight=t+"px")),this.wrap?(!this.clipped&&0<n&&(e.width=n+"px"),e.whiteSpace="normal"):e.whiteSpace="nowrap"},mxText.prototype.updateMargin=function(){this.margin=mxUtils.getAlignmentAsPoint(this.align,this.valign)},mxText.prototype.getSpacing=function(){return new mxPoint(this.align==mxConstants.ALIGN_CENTER?(this.spacingLeft-this.spacingRight)/2:this.align==mxConstants.ALIGN_RIGHT?-this.spacingRight-this.baseSpacingRight:this.spacingLeft+this.baseSpacingLeft,this.valign==mxConstants.ALIGN_MIDDLE?(this.spacingTop-this.spacingBottom)/2:this.valign==mxConstants.ALIGN_BOTTOM?-this.spacingBottom-this.baseSpacingBottom:this.spacingTop+this.baseSpacingTop)},mxUtils.extend(mxTriangle,mxActor),mxTriangle.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(0,0),e.lineTo(a,.5*i),e.lineTo(0,i),e.close()},mxUtils.extend(mxHexagon,mxActor),mxHexagon.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(.25*a,0),e.lineTo(.75*a,0),e.lineTo(a,.5*i),e.lineTo(.75*a,i),e.lineTo(.25*a,i),e.lineTo(0,.5*i),e.close()},mxUtils.extend(mxLine,mxShape),mxLine.prototype.paintVertexShape=function(e,n,t,a,i){t+=i/2,e.begin(),e.moveTo(n,t),e.lineTo(n+a,t),e.stroke()},mxUtils.extend(mxImageShape,mxRectangleShape),mxImageShape.prototype.preserveImageAspect=!0,mxImageShape.prototype.getSvgScreenOffset=function(){return mxClient.IS_IE?0:.5},mxImageShape.prototype.apply=function(e){mxShape.prototype.apply.apply(this,arguments),this.gradient=this.stroke=this.fill=null,null!=this.style&&(this.fill=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BACKGROUND),this.stroke=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BORDER),this.preserveImageAspect=1==mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_ASPECT,1),this.flipH=this.flipH||1==mxUtils.getValue(this.style,"imageFlipH",0),this.flipV=this.flipV||1==mxUtils.getValue(this.style,"imageFlipV",0))},mxImageShape.prototype.isHtmlAllowed=function(){return!this.preserveImageAspect},mxImageShape.prototype.createHtml=function(){var e=document.createElement("div");return e.style.position="absolute",e},mxImageShape.prototype.paintVertexShape=function(e,n,t,a,i){if(null!=this.image){var s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BACKGROUND,null),o=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BORDER,null);null==s&&null==o||(e.setFillColor(s),e.setStrokeColor(o),e.rect(n,t,a,i),e.fillAndStroke()),e.image(n,t,a,i,this.image,this.preserveImageAspect,!1,!1)}else mxRectangleShape.prototype.paintBackground.apply(this,arguments)},mxImageShape.prototype.redrawHtmlShape=function(){if(this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px",this.node.style.width=Math.max(0,Math.round(this.bounds.width))+"px",this.node.style.height=Math.max(0,Math.round(this.bounds.height))+"px",this.node.style.backgroundColor=this.fill||"",this.node.style.borderColor=this.stroke||"",this.node.innerHTML="",null!=this.image){var e=document.createElement(mxClient.IS_IE6||null==mxClient.CSS_PREFIX&&0!=this.rotation?mxClient.VML_PREFIX+":image":"img");e.style.position="absolute",e.src=this.image;var n=this.opacity<100?"alpha(opacity="+this.opacity+")":"";this.node.style.filter=n,this.flipH&&this.flipV?n+="progid:DXImageTransform.Microsoft.BasicImage(rotation=2)":this.flipH?n+="progid:DXImageTransform.Microsoft.BasicImage(mirror=1)":this.flipV&&(n+="progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"),e.style.filter!=n&&(e.style.filter=n),"image"==e.nodeName?e.style.rotation=this.rotation:e.style[mxClient.CSS_PREFIX+"Transform"]="rotate("+this.rotation+"deg)",e.style.width=this.node.style.width,e.style.height=this.node.style.height,this.node.style.backgroundImage="",this.node.appendChild(e)}else this.setTransparentBackgroundImage(this.node)},mxUtils.extend(mxLabel,mxRectangleShape),mxLabel.prototype.imageSize=mxConstants.DEFAULT_IMAGESIZE,mxLabel.prototype.spacing=2,mxLabel.prototype.indicatorSize=10,mxLabel.prototype.indicatorSpacing=2,mxLabel.prototype.init=function(e){mxShape.prototype.init.apply(this,arguments),null!=this.indicatorColor&&null!=this.indicatorShape&&(this.indicator=new this.indicatorShape,this.indicator.dialect=this.dialect,this.indicator.bounds=this.bounds,this.indicator.fill=this.indicatorColor,this.indicator.stroke=this.indicatorColor,this.indicator.gradient=this.indicatorGradientColor,this.indicator.direction=this.indicatorDirection,this.indicator.init(this.node))},mxLabel.prototype.redraw=function(){null!=this.indicator&&(this.indicator.fill=this.indicatorColor,this.indicator.stroke=this.indicatorColor,this.indicator.gradient=this.indicatorGradientColor,this.indicator.direction=this.indicatorDirection),mxShape.prototype.redraw.apply(this,arguments)},mxLabel.prototype.isHtmlAllowed=function(){return mxRectangleShape.prototype.isHtmlAllowed.apply(this,arguments)&&null==this.indicatorColor&&null==this.indicatorShape},mxLabel.prototype.paintForeground=function(e,n,t,a,i){this.paintImage(e,n,t,a,i),this.paintIndicator(e,n,t,a,i),mxRectangleShape.prototype.paintForeground.apply(this,arguments)},mxLabel.prototype.paintImage=function(e,n,t,a,i){null!=this.image&&(n=this.getImageBounds(n,t,a,i),e.image(n.x,n.y,n.width,n.height,this.image,!1,!1,!1))},mxLabel.prototype.getImageBounds=function(e,n,t,a){var i=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_ALIGN,mxConstants.ALIGN_LEFT),s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),o=mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_WIDTH,mxConstants.DEFAULT_IMAGESIZE),r=mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_HEIGHT,mxConstants.DEFAULT_IMAGESIZE),l=mxUtils.getNumber(this.style,mxConstants.STYLE_SPACING,this.spacing)+5;return new mxRectangle(e=i==mxConstants.ALIGN_CENTER?e+(t-o)/2:i==mxConstants.ALIGN_RIGHT?e+(t-o-l):e+l,n=s==mxConstants.ALIGN_TOP?n+l:s==mxConstants.ALIGN_BOTTOM?n+(a-r-l):n+(a-r)/2,o,r)},mxLabel.prototype.paintIndicator=function(e,n,t,a,i){null!=this.indicator?(this.indicator.bounds=this.getIndicatorBounds(n,t,a,i),this.indicator.paint(e)):null!=this.indicatorImage&&(n=this.getIndicatorBounds(n,t,a,i),e.image(n.x,n.y,n.width,n.height,this.indicatorImage,!1,!1,!1))},mxLabel.prototype.getIndicatorBounds=function(e,n,t,a){var i=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_ALIGN,mxConstants.ALIGN_LEFT),s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),o=mxUtils.getNumber(this.style,mxConstants.STYLE_INDICATOR_WIDTH,this.indicatorSize),r=mxUtils.getNumber(this.style,mxConstants.STYLE_INDICATOR_HEIGHT,this.indicatorSize),l=this.spacing+5;return new mxRectangle(e=i==mxConstants.ALIGN_RIGHT?e+(t-o-l):i==mxConstants.ALIGN_CENTER?e+(t-o)/2:e+l,n=s==mxConstants.ALIGN_BOTTOM?n+(a-r-l):s==mxConstants.ALIGN_TOP?n+l:n+(a-r)/2,o,r)},mxLabel.prototype.redrawHtmlShape=function(){for(mxRectangleShape.prototype.redrawHtmlShape.apply(this,arguments);this.node.hasChildNodes();)this.node.removeChild(this.node.lastChild);if(null!=this.image){var e=document.createElement("img");e.style.position="relative",e.setAttribute("border","0");var n=this.getImageBounds(this.bounds.x,this.bounds.y,this.bounds.width,this.bounds.height);n.x-=this.bounds.x,n.y-=this.bounds.y,e.style.left=Math.round(n.x)+"px",e.style.top=Math.round(n.y)+"px",e.style.width=Math.round(n.width)+"px",e.style.height=Math.round(n.height)+"px",e.src=this.image,this.node.appendChild(e)}},mxUtils.extend(mxCylinder,mxShape),mxCylinder.prototype.maxHeight=40,mxCylinder.prototype.svgStrokeTolerance=0,mxCylinder.prototype.paintVertexShape=function(e,n,t,a,i){e.translate(n,t),e.begin(),this.redrawPath(e,n,t,a,i,!1),e.fillAndStroke(),e.setShadow(!1),e.begin(),this.redrawPath(e,n,t,a,i,!0),e.stroke()},mxCylinder.prototype.redrawPath=function(e,n,t,a,i,s){n=Math.min(this.maxHeight,Math.round(i/5)),(s&&null!=this.fill||!s&&null==this.fill)&&(e.moveTo(0,n),e.curveTo(0,2*n,a,2*n,a,n),s||(e.stroke(),e.begin())),s||(e.moveTo(0,n),e.curveTo(0,-n/3,a,-n/3,a,n),e.lineTo(a,i-n),e.curveTo(a,i+n/3,0,i+n/3,0,i-n),e.close())},mxUtils.extend(mxConnector,mxPolyline),mxConnector.prototype.paintEdgeShape=function(e,n){var t=this.createMarker(e,n,!0),a=this.createMarker(e,n,!1);null==this.style||1!=this.style[mxConstants.STYLE_CURVED]?this.paintLine(e,n,this.isRounded):this.paintCurvedLine(e,n),e.setFillColor(this.stroke),e.setShadow(!1),e.setDashed(!1),null!=t&&t(),null!=a&&a()},mxConnector.prototype.paintCurvedLine=function(e,n){e.begin();var t=n[0],a=n.length;for(e.moveTo(t.x,t.y),t=1;t<a-2;t++){var i=n[t],s=n[t+1];e.quadTo(i.x,i.y,(i.x+s.x)/2,(i.y+s.y)/2)}i=n[a-2],s=n[a-1],e.quadTo(i.x,i.y,s.x,s.y),e.stroke()},mxConnector.prototype.createMarker=function(e,n,t){var a=n.length,i=t?n[1]:n[a-2],s=(a=(n=t?n[0]:n[a-1]).x-i.x,n.y-i.y),o=(i=a/(o=Math.max(1,Math.sqrt(a*a+s*s))),a=s/o,s=mxUtils.getNumber(this.style,t?mxConstants.STYLE_STARTSIZE:mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE),mxUtils.getValue(this.style,t?mxConstants.STYLE_STARTARROW:mxConstants.STYLE_ENDARROW));return mxMarker.createMarker(e,this,o,n,i,a,s,t,this.strokewidth,0!=this.style[t?mxConstants.STYLE_STARTFILL:mxConstants.STYLE_ENDFILL])},mxConnector.prototype.augmentBoundingBox=function(e){mxShape.prototype.augmentBoundingBox.apply(this,arguments);var n=0;mxUtils.getValue(this.style,mxConstants.STYLE_STARTARROW,mxConstants.NONE)!=mxConstants.NONE&&(n=mxUtils.getNumber(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_MARKERSIZE)+1),mxUtils.getValue(this.style,mxConstants.STYLE_ENDARROW,mxConstants.NONE)!=mxConstants.NONE&&(n=Math.max(n,mxUtils.getNumber(this.style,mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE))+1),e.grow(Math.ceil(n*this.scale))},mxUtils.extend(mxSwimlane,mxShape),mxSwimlane.prototype.imageSize=16,mxSwimlane.prototype.getGradientBounds=function(e,n,t,a,i){return new mxRectangle(n,t,a,Math.min(i,mxUtils.getValue(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)))},mxSwimlane.prototype.getRotation=function(){var e=mxShape.prototype.getRotation.apply(this,arguments);return 1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)&&(e+=mxText.prototype.verticalTextRotation),e},mxSwimlane.prototype.getTextRotation=function(){return this.getRotation()},mxSwimlane.prototype.isPaintBoundsInverted=function(){return mxShape.prototype.isPaintBoundsInverted.apply(this,arguments)||1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)},mxSwimlane.prototype.getArcSize=function(e,n,t){return 3*t*(mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100)},mxSwimlane.prototype.paintVertexShape=function(e,n,t,a,i){var s=Math.min(i,mxUtils.getValue(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)),o=mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE),r=1==mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_LINE,1),l=0;e.translate(n,t),this.isRounded?(l=this.getArcSize(a,i,s),this.paintRoundedSwimlane(e,n,t,a,i,s,l,o,r)):this.paintSwimlane(e,n,t,a,i,s,o,r),o=mxUtils.getValue(this.style,mxConstants.STYLE_SEPARATORCOLOR,mxConstants.NONE),this.paintSeparator(e,a,s,i,o),null!=this.image&&(i=this.getImageBounds(n,s,a,i),e.image(i.x-n,i.y-t,i.width,i.height,this.image,!1,!1,!1)),this.glass&&(e.setShadow(!1),this.paintGlassEffect(e,0,0,a,s,l))},mxSwimlane.prototype.paintSwimlane=function(e,n,t,a,i,s,o,r){o!=mxConstants.NONE&&(e.save(),e.setFillColor(o),e.rect(0,0,a,i),e.fillAndStroke(),e.restore(),e.setShadow(!1)),e.begin(),e.moveTo(0,s),e.lineTo(0,0),e.lineTo(a,0),e.lineTo(a,s),r&&e.close(),e.fillAndStroke(),s<i&&o==mxConstants.NONE&&(e.pointerEvents=!1,e.begin(),e.moveTo(0,s),e.lineTo(0,i),e.lineTo(a,i),e.lineTo(a,s),e.stroke())},mxSwimlane.prototype.paintRoundedSwimlane=function(e,n,t,a,i,s,o,r,l){r!=mxConstants.NONE&&(e.save(),e.setFillColor(r),e.roundrect(0,0,a,i,o,o),e.fillAndStroke(),e.restore(),e.setShadow(!1)),e.begin(),e.moveTo(a,s),e.lineTo(a,o),e.quadTo(a,0,a-Math.min(a/2,o),0),e.lineTo(Math.min(a/2,o),0),e.quadTo(0,0,0,o),e.lineTo(0,s),l&&e.close(),e.fillAndStroke(),s<i&&r==mxConstants.NONE&&(e.pointerEvents=!1,e.begin(),e.moveTo(0,s),e.lineTo(0,i-o),e.quadTo(0,i,Math.min(a/2,o),i),e.lineTo(a-Math.min(a/2,o),i),e.quadTo(a,i,a,i-o),e.lineTo(a,s),e.stroke())},mxSwimlane.prototype.paintSeparator=function(e,n,t,a,i){i!=mxConstants.NONE&&(e.setStrokeColor(i),e.setDashed(!0),e.begin(),e.moveTo(n,t),e.lineTo(n,a),e.stroke(),e.setDashed(!1))},mxSwimlane.prototype.getImageBounds=function(e,n,t,a){return new mxRectangle(e+t-this.imageSize,n,this.imageSize,this.imageSize)},mxGraphLayout.prototype.graph=null,mxGraphLayout.prototype.useBoundingBox=!0,mxGraphLayout.prototype.parent=null,mxGraphLayout.prototype.moveCell=function(e,n,t){},mxGraphLayout.prototype.execute=function(e){},mxGraphLayout.prototype.getGraph=function(){return this.graph},mxGraphLayout.prototype.getConstraint=function(e,n,t,a){return null!=(n=null!=(t=this.graph.view.getState(n))?t.style:this.graph.getCellStyle(n))?n[e]:null},mxGraphLayout.traverse=function(e,n,t,a,i){if(null!=t&&null!=e){n=null==n||n,i=i||[];var s=mxCellPath.create(e);if(null==i[s]&&(null==(a=t(i[s]=e,a))||a)&&0<(a=this.graph.model.getEdgeCount(e)))for(s=0;s<a;s++){var o=this.graph.model.getEdgeAt(e,s),r=this.graph.model.getTerminal(o,!0)==e;n&&!r||(r=this.graph.view.getVisibleTerminal(o,!r),this.traverse(r,n,t,o,i))}}},mxGraphLayout.prototype.isVertexMovable=function(e){return this.graph.isCellMovable(e)},mxGraphLayout.prototype.isVertexIgnored=function(e){return!this.graph.getModel().isVertex(e)||!this.graph.isCellVisible(e)},mxGraphLayout.prototype.isEdgeIgnored=function(e){var n=this.graph.getModel();return!n.isEdge(e)||!this.graph.isCellVisible(e)||null==n.getTerminal(e,!0)||null==n.getTerminal(e,!1)},mxGraphLayout.prototype.setEdgeStyleEnabled=function(e,n){this.graph.setCellStyles(mxConstants.STYLE_NOEDGESTYLE,n?"0":"1",[e])},mxGraphLayout.prototype.setOrthogonalEdge=function(e,n){this.graph.setCellStyles(mxConstants.STYLE_ORTHOGONAL,n?"1":"0",[e])},mxGraphLayout.prototype.getParentOffset=function(e){var n=new mxPoint;if(null!=e&&e!=this.parent){var t=this.graph.getModel();if(t.isAncestor(this.parent,e))for(var a=t.getGeometry(e);e!=this.parent;)n.x+=a.x,n.y+=a.y,e=t.getParent(e),a=t.getGeometry(e)}return n},mxGraphLayout.prototype.setEdgePoints=function(e,n){if(null!=e){var t=this.graph.model,a=t.getGeometry(e);if(null==a?(a=new mxGeometry).setRelative(!0):a=a.clone(),null!=this.parent&&null!=n)for(var i=t.getParent(e),s=(i=this.getParentOffset(i),0);s<n.length;s++)n[s].x-=i.x,n[s].y-=i.y;a.points=n,t.setGeometry(e,a)}},mxGraphLayout.prototype.setVertexLocation=function(e,n,t){var a=this.graph.getModel(),i=a.getGeometry(e),s=null;if(null!=i){if(s=new mxRectangle(n,t,i.width,i.height),this.useBoundingBox){var o=this.graph.getView().getState(e);if(null!=o&&null!=o.text&&null!=o.text.boundingBox){var r=this.graph.getView().scale,l=o.text.boundingBox;o.text.boundingBox.x<o.x&&(n+=(o.x-l.x)/r,s.width=l.width),o.text.boundingBox.y<o.y&&(t+=(o.y-l.y)/r,s.height=l.height)}}null!=this.parent&&(null!=(o=a.getParent(e))&&o!=this.parent&&(n-=(o=this.getParentOffset(o)).x,t-=o.y)),i.x==n&&i.y==t||((i=i.clone()).x=n,i.y=t,a.setGeometry(e,i))}return s},mxGraphLayout.prototype.getVertexBounds=function(e){var n=this.graph.getModel().getGeometry(e);if(this.useBoundingBox&&(null!=(r=this.graph.getView().getState(e))&&null!=r.text&&null!=r.text.boundingBox)){var t=this.graph.getView().scale,a=r.text.boundingBox,i=Math.max(r.x-a.x,0)/t,s=Math.max(r.y-a.y,0)/t,o=Math.max(a.x+a.width-(r.x+r.width),0)/t,r=Math.max(a.y+a.height-(r.y+r.height),0)/t;n=new mxRectangle(n.x-i,n.y-s,n.width+i+o,n.height+s+r)}return null!=this.parent&&(e=this.graph.getModel().getParent(e),n=n.clone(),null!=e&&e!=this.parent&&(e=this.getParentOffset(e),n.x+=e.x,n.y+=e.y)),new mxRectangle(n.x,n.y,n.width,n.height)},mxGraphLayout.prototype.arrangeGroups=function(e,n){this.graph.getModel().beginUpdate();try{for(var t=e.length-1;0<=t;t--){var a=e[t],i=this.graph.getChildVertices(a),s=this.graph.getBoundingBoxFromGeometry(i),o=this.graph.getCellGeometry(a),r=0,l=0;if(this.graph.isSwimlane(a)){var d=this.graph.getStartSize(a);r=d.width,l=d.height}null!=s&&null!=o&&((o=o.clone()).x=o.x+s.x-n-r,o.y=o.y+s.y-n-l,o.width=s.width+2*n+r,o.height=s.height+2*n+l,this.graph.getModel().setGeometry(a,o),this.graph.moveCells(i,n+r-s.x,n+l-s.y))}}finally{this.graph.getModel().endUpdate()}},mxStackLayout.prototype=new mxGraphLayout,mxStackLayout.prototype.constructor=mxStackLayout,mxStackLayout.prototype.horizontal=null,mxStackLayout.prototype.spacing=null,mxStackLayout.prototype.x0=null,mxStackLayout.prototype.y0=null,mxStackLayout.prototype.border=0,mxStackLayout.prototype.keepFirstLocation=!1,mxStackLayout.prototype.fill=!1,mxStackLayout.prototype.resizeParent=!1,mxStackLayout.prototype.resizeLast=!1,mxStackLayout.prototype.wrap=null,mxStackLayout.prototype.isHorizontal=function(){return this.horizontal},mxStackLayout.prototype.moveCell=function(e,n,t){var a=this.graph.getModel(),i=a.getParent(e),s=this.isHorizontal();if(null!=e&&null!=i){var o=0,r=0,l=a.getChildCount(i);for(n=s?n:t,null!=(o=this.graph.getView().getState(i))&&(n-=s?o.x:o.y),o=0;o<l;o++)if((t=a.getChildAt(i,o))!=e&&null!=(t=a.getGeometry(t))){if(t=s?t.x+t.width/2:t.y+t.height/2,r<n&&n<t)break;r=t}s=i.getIndex(e),s=Math.max(0,o-(s<o?1:0)),a.add(i,e,s)}},mxStackLayout.prototype.getParentSize=function(e){var n=this.graph.getModel(),t=n.getGeometry(e);return null!=this.graph.container&&(null==t&&n.isLayer(e)||e==this.graph.getView().currentRoot)&&(t=new mxRectangle(0,0,this.graph.container.offsetWidth-1,this.graph.container.offsetHeight-1)),t},mxStackLayout.prototype.execute=function(e){if(null!=e){var n=this.isHorizontal(),t=this.graph.getModel(),a=this.getParentSize(e),i=0;null!=a&&(i=n?a.height:a.width);i=i-(2*this.spacing+2*this.border);var s=this.x0+this.border,o=this.y0+this.border;if(this.graph.isSwimlane(e)){var r=this.graph.getCellStyle(e),l=mxUtils.getValue(r,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE);n==(r=mxUtils.getValue(r,mxConstants.STYLE_HORIZONTAL,!0))&&(i-=l),n?o+=l:s+=l}t.beginUpdate();try{l=0,r=null;for(var d=t.getChildCount(e),c=0;c<d;c++){var m=t.getChildAt(e,c);if(!this.isVertexIgnored(m)&&this.isVertexMovable(m)){var u=t.getGeometry(m);null!=u&&(u=u.clone(),null!=this.wrap&&null!=r&&(n&&r.x+r.width+u.width+2*this.spacing>this.wrap||!n&&r.y+r.height+u.height+2*this.spacing>this.wrap)&&(r=null,n?o+=l+this.spacing:s+=l+this.spacing,l=0),l=Math.max(l,n?u.height:u.width),null!=r?n?u.x=r.x+r.width+this.spacing:u.y=r.y+r.height+this.spacing:this.keepFirstLocation||(n?u.x=s:u.y=o),n?u.y=o:u.x=s,this.fill&&0<i&&(n?u.height=i:u.width=i),t.setGeometry(m,u),r=u)}}this.resizeParent&&null!=a&&null!=r&&!this.graph.isCellCollapsed(e)?(a=a.clone(),n?a.width=r.x+r.width+this.spacing:a.height=r.y+r.height+this.spacing,t.setGeometry(e,a)):this.resizeLast&&null!=a&&null!=r&&(n?r.width=a.width-r.x-this.spacing:r.height=a.height-r.y-this.spacing)}finally{t.endUpdate()}}},mxPartitionLayout.prototype=new mxGraphLayout,mxPartitionLayout.prototype.constructor=mxPartitionLayout,mxPartitionLayout.prototype.horizontal=null,mxPartitionLayout.prototype.spacing=null,mxPartitionLayout.prototype.border=null,mxPartitionLayout.prototype.resizeVertices=!0,mxPartitionLayout.prototype.isHorizontal=function(){return this.horizontal},mxPartitionLayout.prototype.moveCell=function(e,n,t){var a=(t=this.graph.getModel()).getParent(e);if(null!=e&&null!=a){var i=0,s=0,o=t.getChildCount(a);for(i=0;i<o;i++){var r=t.getChildAt(a,i);if(null!=(r=this.getVertexBounds(r))){if(r=r.x+r.width/2,s<n&&n<r)break;s=r}}n=a.getIndex(e),n=Math.max(0,i-(n<i?1:0)),t.add(a,e,n)}},mxPartitionLayout.prototype.execute=function(e){var n=this.isHorizontal(),t=this.graph.getModel(),a=t.getGeometry(e);if(null!=this.graph.container&&(null==a&&t.isLayer(e)||e==this.graph.getView().currentRoot)&&(a=new mxRectangle(0,0,this.graph.container.offsetWidth-1,this.graph.container.offsetHeight-1)),null!=a){for(var i=[],s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o);!this.isVertexIgnored(r)&&this.isVertexMovable(r)&&i.push(r)}if(0<(s=i.length)){var l=this.border,d=this.border,c=(c=n?a.height:a.width)-2*this.border;if(e=this.graph.isSwimlane(e)?this.graph.getStartSize(e):new mxRectangle,c-=n?e.height:e.width,l+=e.width,d+=e.height,e=this.border+(s-1)*this.spacing,0<(a=n?(a.width-l-e)/s:(a.height-d-e)/s)){t.beginUpdate();try{for(o=0;o<s;o++){r=i[o];var m=t.getGeometry(r);null!=m&&((m=m.clone()).x=l,m.y=d,n?(this.resizeVertices&&(m.width=a,m.height=c),l+=a+this.spacing):(this.resizeVertices&&(m.height=a,m.width=c),d+=a+this.spacing),t.setGeometry(r,m))}}finally{t.endUpdate()}}}}},mxCompactTreeLayout.prototype=new mxGraphLayout,mxCompactTreeLayout.prototype.constructor=mxCompactTreeLayout,mxCompactTreeLayout.prototype.horizontal=null,mxCompactTreeLayout.prototype.invert=null,mxCompactTreeLayout.prototype.resizeParent=!0,mxCompactTreeLayout.prototype.groupPadding=10,mxCompactTreeLayout.prototype.parentsChanged=null,mxCompactTreeLayout.prototype.moveTree=!1,mxCompactTreeLayout.prototype.levelDistance=10,mxCompactTreeLayout.prototype.nodeDistance=20,mxCompactTreeLayout.prototype.resetEdges=!0,mxCompactTreeLayout.prototype.prefHozEdgeSep=5,mxCompactTreeLayout.prototype.prefVertEdgeOff=4,mxCompactTreeLayout.prototype.minEdgeJetty=8,mxCompactTreeLayout.prototype.channelBuffer=4,mxCompactTreeLayout.prototype.edgeRouting=!0,mxCompactTreeLayout.prototype.isVertexIgnored=function(e){return mxGraphLayout.prototype.isVertexIgnored.apply(this,arguments)||0==this.graph.getConnections(e).length},mxCompactTreeLayout.prototype.isHorizontal=function(){return this.horizontal},mxCompactTreeLayout.prototype.execute=function(e,n){this.parent=e;var t=this.graph.getModel();if(null==n)if(0<this.graph.getEdges(e,t.getParent(e),this.invert,!this.invert,!1).length)n=e;else{if(0<(o=this.graph.findTreeRoots(e,!0,this.invert)).length)for(var a=0;a<o.length;a++)if(!this.isVertexIgnored(o[a])&&0<this.graph.getEdges(o[a],null,this.invert,!this.invert,!1).length){n=o[a];break}}if(null!=n){this.parentsChanged=this.resizeParent?{}:null,t.beginUpdate();try{var i=this.dfs(n,e);if(null!=i){this.layout(i);var s=this.graph.gridSize,o=s;if(!this.moveTree){var r=this.getVertexBounds(n);null!=r&&(s=r.x,o=r.y)}if((r=null)!=(r=this.isHorizontal()?this.horizontalLayout(i,s,o):this.verticalLayout(i,null,s,o))){var l=a=0;r.x<0&&(a=Math.abs(s-r.x)),r.y<0&&(l=Math.abs(o-r.y)),(0!=a||0!=l)&&this.moveNode(i,a,l),this.resizeParent&&this.adjustParents(),this.edgeRouting&&this.localEdgeProcessing(i)}}}finally{t.endUpdate()}}},mxCompactTreeLayout.prototype.moveNode=function(e,n,t){for(e.x+=n,e.y+=t,this.apply(e),e=e.child;null!=e;)this.moveNode(e,n,t),e=e.next},mxCompactTreeLayout.prototype.dfs=function(e,n,t){t=null!=t?t:[];var a=mxCellPath.create(e),i=null;if(null!=e&&null==t[a]&&!this.isVertexIgnored(e)){t[a]=e;i=this.createNode(e),a=this.graph.getModel();var s=null;e=this.graph.getEdges(e,n,this.invert,!this.invert,!1,!0);for(var o=this.graph.getView(),r=0;r<e.length;r++){var l=e[r];if(!this.isEdgeIgnored(l)){this.resetEdges&&this.setEdgePoints(l,null),this.edgeRouting&&(this.setEdgeStyleEnabled(l,!1),this.setEdgePoints(l,null));var d;l=null!=(d=o.getState(l))?d.getVisibleTerminal(this.invert):o.getVisibleTerminal(l,this.invert);null!=(d=this.dfs(l,n,t))&&null!=a.getGeometry(l)&&(null==s?i.child=d:s.next=d,s=d)}}}return i},mxCompactTreeLayout.prototype.layout=function(e){if(null!=e){for(var n=e.child;null!=n;)this.layout(n),n=n.next;null!=e.child?this.attachParent(e,this.join(e)):this.layoutLeaf(e)}},mxCompactTreeLayout.prototype.horizontalLayout=function(e,n,t,a){if(e.x+=n+e.offsetX,e.y+=t+e.offsetY,a=this.apply(e,a),null!=(n=e.child)){a=this.horizontalLayout(n,e.x,e.y,a),t=e.y+n.offsetY;for(var i=n.next;null!=i;)a=this.horizontalLayout(i,e.x+n.offsetX,t,a),t+=i.offsetY,i=i.next}return a},mxCompactTreeLayout.prototype.verticalLayout=function(e,n,t,a,i){if(e.x+=t+e.offsetY,e.y+=a+e.offsetX,i=this.apply(e,i),null!=(n=e.child))for(i=this.verticalLayout(n,e,e.x,e.y,i),t=e.x+n.offsetY,a=n.next;null!=a;)i=this.verticalLayout(a,e,t,e.y+n.offsetX,i),t+=a.offsetY,a=a.next;return i},mxCompactTreeLayout.prototype.attachParent=function(e,n){var t=this.nodeDistance+this.levelDistance,a=(n-e.width)/2-this.nodeDistance,i=a+e.width+2*this.nodeDistance-n;e.child.offsetX=t+e.height,e.child.offsetY=i,e.contour.upperHead=this.createLine(e.height,0,this.createLine(t,i,e.contour.upperHead)),e.contour.lowerHead=this.createLine(e.height,0,this.createLine(t,a,e.contour.lowerHead))},mxCompactTreeLayout.prototype.layoutLeaf=function(e){var n=2*this.nodeDistance;e.contour.upperTail=this.createLine(e.height+n,0),e.contour.upperHead=e.contour.upperTail,e.contour.lowerTail=this.createLine(0,-e.width-n),e.contour.lowerHead=this.createLine(e.height+n,0,e.contour.lowerTail)},mxCompactTreeLayout.prototype.join=function(e){var n=2*this.nodeDistance,t=e.child;e.contour=t.contour;var a=t.width+n,i=a;for(t=t.next;null!=t;){var s=this.merge(e.contour,t.contour);t.offsetY=s+a,t.offsetX=0,i+=s+(a=t.width+n),t=t.next}return i},mxCompactTreeLayout.prototype.merge=function(e,n){for(var t=0,a=0,i=0,s=e.lowerHead,o=n.upperHead;null!=o&&null!=s;){var r=this.offset(t,a,o.dx,o.dy,s.dx,s.dy);a=a+r,i=i+r;t+o.dx<=s.dx?(t+=o.dx,a+=o.dy,o=o.next):(t-=s.dx,a-=s.dy,s=s.next)}return null!=o?(t=this.bridge(e.upperTail,0,0,o,t,a),e.upperTail=null!=t.next?n.upperTail:t,e.lowerTail=n.lowerTail):null==(t=this.bridge(n.lowerTail,t,a,s,0,0)).next&&(e.lowerTail=t),e.lowerHead=n.lowerHead,i},mxCompactTreeLayout.prototype.offset=function(e,n,t,a,i,s){var o;return i<=e||e+t<=0?0:0<(o=0<i*a-t*s?e<0?e*a/t-n:0<e?e*s/i-n:-n:i<e+t?s-(n+(i-e)*a/t):e+t<i?(t+e)*s/i-(n+a):s-(n+a))?o:0},mxCompactTreeLayout.prototype.bridge=function(e,n,t,a,i,s){return n=i+a.dx-n,i=i=0,0==a.dx?i=a.dy:(i=n*a.dy,i/=a.dx),n=this.createLine(n,i,a.next),e.next=this.createLine(0,s+a.dy-i-t,n),n},mxCompactTreeLayout.prototype.createNode=function(e){var n={};return n.cell=e,n.x=0,n.y=0,n.width=0,n.height=0,null!=(e=this.getVertexBounds(e))&&(this.isHorizontal()?(n.width=e.height,n.height=e.width):(n.width=e.width,n.height=e.height)),n.offsetX=0,n.offsetY=0,n.contour={},n},mxCompactTreeLayout.prototype.apply=function(e,n){var t=this.graph.getModel(),a=e.cell,i=t.getGeometry(a);return null!=a&&null!=i&&(this.isVertexMovable(a)&&(i=this.setVertexLocation(a,e.x,e.y),this.resizeParent&&(t=t.getParent(a),a=mxCellPath.create(t),null==this.parentsChanged[a]&&(this.parentsChanged[a]=t))),n=null==n?new mxRectangle(i.x,i.y,i.width,i.height):new mxRectangle(Math.min(n.x,i.x),Math.min(n.y,i.y),Math.max(n.x+n.width,i.x+i.width),Math.max(n.y+n.height,i.y+i.height))),n},mxCompactTreeLayout.prototype.createLine=function(e,n,t){var a={};return a.dx=e,a.dy=n,a.next=t,a},mxCompactTreeLayout.prototype.adjustParents=function(){var e,n=[];for(e in this.parentsChanged)n.push(this.parentsChanged[e]);this.arrangeGroups(mxUtils.sortCells(n,!0),this.groupPadding)},mxCompactTreeLayout.prototype.localEdgeProcessing=function(e){for(this.processNodeOutgoing(e),e=e.child;null!=e;)this.localEdgeProcessing(e),e=e.next},mxCompactTreeLayout.prototype.processNodeOutgoing=function(e){for(var n=e.child,t=e.cell,a=0,i=[];null!=n;){a++;var s=n.x;this.horizontal&&(s=n.y),i.push(new WeightedCellSorter(n,s)),n=n.next}i.sort(WeightedCellSorter.prototype.compare),(s=e.width)>(o=(a+1)*this.prefHozEdgeSep)+2*this.prefHozEdgeSep&&(s-=2*this.prefHozEdgeSep),n=(e=s/a)/2,s>o+2*this.prefHozEdgeSep&&(n+=this.prefHozEdgeSep);s=this.minEdgeJetty-this.prefVertEdgeOff;for(var o=0,r=this.getVertexBounds(t),l=0;l<i.length;l++){for(var d=i[l].cell.cell,c=this.getVertexBounds(d),m=(d=this.graph.getEdgesBetween(t,d,!1),[]),u=0,p=0,g=0;g<d.length;g++)this.horizontal?(u=r.x+r.width,p=r.y+n,m.push(new mxPoint(u,p)),u=r.x+r.width+s,m.push(new mxPoint(u,p)),p=c.y+c.height/2):(u=r.x+n,p=r.y+r.height,m.push(new mxPoint(u,p)),p=r.y+r.height+s,m.push(new mxPoint(u,p)),u=c.x+c.width/2),m.push(new mxPoint(u,p)),this.setEdgePoints(d[g],m);l<a/2?s+=this.prefVertEdgeOff:a/2<l&&(s-=this.prefVertEdgeOff),n+=e,o=Math.max(o,s)}},WeightedCellSorter.prototype.weightedValue=0,WeightedCellSorter.prototype.nudge=!1,WeightedCellSorter.prototype.visited=!1,WeightedCellSorter.prototype.rankIndex=null,WeightedCellSorter.prototype.cell=null,WeightedCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.weightedValue>e.weightedValue?1:n.weightedValue<e.weightedValue?-1:n.nudge?1:-1:0},mxFastOrganicLayout.prototype=new mxGraphLayout,mxFastOrganicLayout.prototype.constructor=mxFastOrganicLayout,mxFastOrganicLayout.prototype.useInputOrigin=!0,mxFastOrganicLayout.prototype.resetEdges=!0,mxFastOrganicLayout.prototype.disableEdgeStyle=!0,mxFastOrganicLayout.prototype.forceConstant=50,mxFastOrganicLayout.prototype.forceConstantSquared=0,mxFastOrganicLayout.prototype.minDistanceLimit=2,mxFastOrganicLayout.prototype.maxDistanceLimit=500,mxFastOrganicLayout.prototype.minDistanceLimitSquared=4,mxFastOrganicLayout.prototype.initialTemp=200,mxFastOrganicLayout.prototype.temperature=0,mxFastOrganicLayout.prototype.maxIterations=0,mxFastOrganicLayout.prototype.iteration=0,mxFastOrganicLayout.prototype.allowedToRun=!0,mxFastOrganicLayout.prototype.isVertexIgnored=function(e){return mxGraphLayout.prototype.isVertexIgnored.apply(this,arguments)||0==this.graph.getConnections(e).length},mxFastOrganicLayout.prototype.execute=function(e){var n=this.graph.getModel();this.vertexArray=[];for(var t=this.graph.getChildVertices(e),a=0;a<t.length;a++)this.isVertexIgnored(t[a])||this.vertexArray.push(t[a]);var i=this.useInputOrigin?this.graph.view.getBounds(this.vertexArray):null,s=this.vertexArray.length;for(this.indices=[],this.dispX=[],this.dispY=[],this.cellLocation=[],this.isMoveable=[],this.neighbours=[],this.radius=[],this.radiusSquared=[],this.forceConstant<.001&&(this.forceConstant=.001),this.forceConstantSquared=this.forceConstant*this.forceConstant,a=0;a<this.vertexArray.length;a++){var o=this.vertexArray[a];this.cellLocation[a]=[];var r=mxCellPath.create(o);this.indices[r]=a;var l=this.getVertexBounds(o),d=l.width,c=l.height,m=l.x,u=l.y;this.cellLocation[a][0]=m+d/2,this.cellLocation[a][1]=u+c/2,this.radius[a]=Math.min(d,c),this.radiusSquared[a]=this.radius[a]*this.radius[a]}n.beginUpdate();try{for(a=0;a<s;a++){this.dispX[a]=0,this.dispY[a]=0,this.isMoveable[a]=this.isVertexMovable(this.vertexArray[a]);var p=this.graph.getConnections(this.vertexArray[a],e);t=this.graph.getOpposites(p,this.vertexArray[a]);for(this.neighbours[a]=[],d=0;d<t.length;d++){this.resetEdges&&this.graph.resetEdge(p[d]),this.disableEdgeStyle&&this.setEdgeStyleEnabled(p[d],!1);r=mxCellPath.create(t[d]);var g=this.indices[r];this.neighbours[a][d]=null!=g?g:a}}for(this.temperature=this.initialTemp,0==this.maxIterations&&(this.maxIterations=20*Math.sqrt(s)),this.iteration=0;this.iteration<this.maxIterations;this.iteration++){if(!this.allowedToRun)return;this.calcRepulsion(),this.calcAttraction(),this.calcPositions(),this.reduceTemperature()}for(e=t=null,a=0;a<this.vertexArray.length;a++)o=this.vertexArray[a],this.isVertexMovable(o)&&(null!=(l=this.getVertexBounds(o))&&(this.cellLocation[a][0]-=l.width/2,this.cellLocation[a][1]-=l.height/2,m=this.graph.snap(this.cellLocation[a][0]),u=this.graph.snap(this.cellLocation[a][1]),this.setVertexLocation(o,m,u),t=null==t?m:Math.min(t,m),e=null==e?u:Math.min(e,u)));a=1-(t||0),o=1-(e||0),null!=i&&(a+=i.x,o+=i.y),this.graph.moveCells(this.vertexArray,a,o)}finally{n.endUpdate()}},mxFastOrganicLayout.prototype.calcPositions=function(){for(var e=0;e<this.vertexArray.length;e++)if(this.isMoveable[e]){(t=Math.sqrt(this.dispX[e]*this.dispX[e]+this.dispY[e]*this.dispY[e]))<.001&&(t=.001);var n=this.dispX[e]/t*Math.min(t,this.temperature),t=this.dispY[e]/t*Math.min(t,this.temperature);this.dispX[e]=0,this.dispY[e]=0,this.cellLocation[e][0]+=n,this.cellLocation[e][1]+=t}},mxFastOrganicLayout.prototype.calcAttraction=function(){for(var e=0;e<this.vertexArray.length;e++)for(var n=0;n<this.neighbours[e].length;n++){var t=this.neighbours[e][n];if(e!=t&&this.isMoveable[e]&&this.isMoveable[t]){(a=(s=this.cellLocation[e][0]-this.cellLocation[t][0])*s+(o=this.cellLocation[e][1]-this.cellLocation[t][1])*o-this.radiusSquared[e]-this.radiusSquared[t])<this.minDistanceLimitSquared&&(a=this.minDistanceLimitSquared);var a,i=Math.sqrt(a),s=s/i*(a=a/this.forceConstant),o=o/i*a;this.dispX[e]-=s,this.dispY[e]-=o,this.dispX[t]+=s,this.dispY[t]+=o}}},mxFastOrganicLayout.prototype.calcRepulsion=function(){for(var e=this.vertexArray.length,n=0;n<e;n++)for(var t=n;t<e;t++){if(!this.allowedToRun)return;if(t!=n&&this.isMoveable[n]&&this.isMoveable[t]){var a=this.cellLocation[n][0]-this.cellLocation[t][0],i=this.cellLocation[n][1]-this.cellLocation[t][1];0==a&&(a=.01+Math.random()),0==i&&(i=.01+Math.random());var s=Math.sqrt(a*a+i*i),o=s-this.radius[n]-this.radius[t];o>this.maxDistanceLimit||(o<this.minDistanceLimit&&(o=this.minDistanceLimit),a=a/s*(o=this.forceConstantSquared/o),i=i/s*o,this.dispX[n]+=a,this.dispY[n]+=i,this.dispX[t]-=a,this.dispY[t]-=i)}}},mxFastOrganicLayout.prototype.reduceTemperature=function(){this.temperature=this.initialTemp*(1-this.iteration/this.maxIterations)},mxCircleLayout.prototype=new mxGraphLayout,mxCircleLayout.prototype.constructor=mxCircleLayout,mxCircleLayout.prototype.radius=null,mxCircleLayout.prototype.moveCircle=!1,mxCircleLayout.prototype.x0=0,mxCircleLayout.prototype.y0=0,mxCircleLayout.prototype.resetEdges=!0,mxCircleLayout.prototype.disableEdgeStyle=!0,mxCircleLayout.prototype.execute=function(e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0,a=null,i=null,s=[],o=n.getChildCount(e),r=0;r<o;r++){var l=n.getChildAt(e,r);if(this.isVertexIgnored(l))this.isEdgeIgnored(l)||(this.resetEdges&&this.graph.resetEdge(l),this.disableEdgeStyle&&this.setEdgeStyleEnabled(l,!1));else{s.push(l);var d=this.getVertexBounds(l);a=null==a?d.y:Math.min(a,d.y),i=null==i?d.x:Math.min(i,d.x),t=Math.max(t,Math.max(d.width,d.height))}}var c=this.getRadius(s.length,t);this.moveCircle&&(i=this.x0,a=this.y0),this.circle(s,c,i,a)}finally{n.endUpdate()}},mxCircleLayout.prototype.getRadius=function(e,n){return Math.max(e*n/Math.PI,this.radius)},mxCircleLayout.prototype.circle=function(e,n,t,a){for(var i=e.length,s=2*Math.PI/i,o=0;o<i;o++)this.isVertexMovable(e[o])&&this.setVertexLocation(e[o],t+n+n*Math.sin(o*s),a+n+n*Math.cos(o*s))},mxParallelEdgeLayout.prototype=new mxGraphLayout,mxParallelEdgeLayout.prototype.constructor=mxParallelEdgeLayout,mxParallelEdgeLayout.prototype.spacing=20,mxParallelEdgeLayout.prototype.execute=function(e){e=this.findParallels(e),this.graph.model.beginUpdate();try{for(var n in e){var t=e[n];1<t.length&&this.layout(t)}}finally{this.graph.model.endUpdate()}},mxParallelEdgeLayout.prototype.findParallels=function(e){for(var n=this.graph.getModel(),t=[],a=n.getChildCount(e),i=0;i<a;i++){var s=n.getChildAt(e,i);if(!this.isEdgeIgnored(s)){var o=this.getEdgeId(s);null!=o&&(null==t[o]&&(t[o]=[]),t[o].push(s))}}return t},mxParallelEdgeLayout.prototype.getEdgeId=function(e){var n=this.graph.getView(),t=n.getState(e),a=null!=t?t.getVisibleTerminal(!0):n.getVisibleTerminal(e,!0);return e=null!=t?t.getVisibleTerminal(!1):n.getVisibleTerminal(e,!1),null!=a&&null!=e?(a=mxCellPath.create(a),(e=mxCellPath.create(e))<a?e+"-"+a:a+"-"+e):null},mxParallelEdgeLayout.prototype.layout=function(e){var n=e[0];if((o=(t=this.graph.getModel()).getGeometry(t.getTerminal(n,!0)))==(s=t.getGeometry(t.getTerminal(n,!1)))){n=o.x+o.width+this.spacing;for(var t=o.y+o.height/2,a=0;a<e.length;a++)this.route(e[a],n,t),n+=this.spacing}else if(null!=o&&null!=s){n=o.x+o.width/2,t=o.y+o.height/2,a=s.x+s.width/2-n;var i=s.y+s.height/2-t,s=Math.sqrt(a*a+i*i),o=i*this.spacing/s;for(s=a*this.spacing/s,n=n+a/2+o*(e.length-1)/2,t=t+i/2-s*(e.length-1)/2,a=0;a<e.length;a++)this.route(e[a],n,t),n-=o,t+=s}},mxParallelEdgeLayout.prototype.route=function(e,n,t){this.graph.isCellMovable(e)&&this.setEdgePoints(e,[new mxPoint(n,t)])},mxCompositeLayout.prototype=new mxGraphLayout,mxCompositeLayout.prototype.constructor=mxCompositeLayout,mxCompositeLayout.prototype.layouts=null,mxCompositeLayout.prototype.master=null,mxCompositeLayout.prototype.moveCell=function(e,n,t){null!=this.master?this.master.move.apply(this.master,arguments):this.layouts[0].move.apply(this.layouts[0],arguments)},mxCompositeLayout.prototype.execute=function(e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0;t<this.layouts.length;t++)this.layouts[t].execute.apply(this.layouts[t],arguments)}finally{n.endUpdate()}},mxEdgeLabelLayout.prototype=new mxGraphLayout,mxEdgeLabelLayout.prototype.constructor=mxEdgeLabelLayout,mxEdgeLabelLayout.prototype.execute=function(e){for(var n=this.graph.view,t=this.graph.getModel(),a=[],i=[],s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o),l=n.getState(r);null!=l&&(this.isVertexIgnored(r)?this.isEdgeIgnored(r)||a.push(l):i.push(l))}this.placeLabels(i,a)},mxEdgeLabelLayout.prototype.placeLabels=function(e,n){var t=this.graph.getModel();t.beginUpdate();try{for(var a=0;a<n.length;a++){var i=n[a];if(null!=i&&null!=i.text&&null!=i.text.boundingBox)for(var s=0;s<e.length;s++){var o=e[s];null!=o&&this.avoid(i,o)}}}finally{t.endUpdate()}},mxEdgeLabelLayout.prototype.avoid=function(e,n){var t=this.graph.getModel(),a=e.text.boundingBox;if(mxUtils.intersects(a,n)){var i=-a.y-a.height+n.y,s=-a.y+n.y+n.height;i=Math.abs(i)<Math.abs(s)?i:s,s=-a.x-a.width+n.x,a=-a.x+n.x+n.width,a=Math.abs(s)<Math.abs(a)?s:a;Math.abs(a)<Math.abs(i)?i=0:a=0,null!=(s=t.getGeometry(e.cell))&&(null!=(s=s.clone()).offset?(s.offset.x+=a,s.offset.y+=i):s.offset=new mxPoint(a,i),t.setGeometry(e.cell,s))}},mxGraphAbstractHierarchyCell.prototype.maxRank=-1,mxGraphAbstractHierarchyCell.prototype.minRank=-1,mxGraphAbstractHierarchyCell.prototype.x=null,mxGraphAbstractHierarchyCell.prototype.y=null,mxGraphAbstractHierarchyCell.prototype.width=0,mxGraphAbstractHierarchyCell.prototype.height=0,mxGraphAbstractHierarchyCell.prototype.nextLayerConnectedCells=null,mxGraphAbstractHierarchyCell.prototype.previousLayerConnectedCells=null,mxGraphAbstractHierarchyCell.prototype.temp=null,mxGraphAbstractHierarchyCell.prototype.getNextLayerConnectedCells=function(e){return null},mxGraphAbstractHierarchyCell.prototype.getPreviousLayerConnectedCells=function(e){return null},mxGraphAbstractHierarchyCell.prototype.isEdge=function(){return!1},mxGraphAbstractHierarchyCell.prototype.isVertex=function(){return!1},mxGraphAbstractHierarchyCell.prototype.getGeneralPurposeVariable=function(e){return null},mxGraphAbstractHierarchyCell.prototype.setGeneralPurposeVariable=function(e,n){return null},mxGraphAbstractHierarchyCell.prototype.setX=function(e,n){this.isVertex()?this.x[0]=n:this.isEdge()&&(this.x[e-this.minRank-1]=n)},mxGraphAbstractHierarchyCell.prototype.getX=function(e){return this.isVertex()?this.x[0]:this.isEdge()?this.x[e-this.minRank-1]:0},mxGraphAbstractHierarchyCell.prototype.setY=function(e,n){this.isVertex()?this.y[0]=n:this.isEdge()&&(this.y[e-this.minRank-1]=n)},mxGraphHierarchyNode.prototype=new mxGraphAbstractHierarchyCell,mxGraphHierarchyNode.prototype.constructor=mxGraphHierarchyNode,mxGraphHierarchyNode.prototype.cell=null,mxGraphHierarchyNode.prototype.connectsAsTarget=[],mxGraphHierarchyNode.prototype.connectsAsSource=[],mxGraphHierarchyNode.prototype.hashCode=!1,mxGraphHierarchyNode.prototype.getRankValue=function(e){return this.maxRank},mxGraphHierarchyNode.prototype.getNextLayerConnectedCells=function(e){if(null==this.nextLayerConnectedCells){this.nextLayerConnectedCells=[],this.nextLayerConnectedCells[0]=[];for(var n=0;n<this.connectsAsTarget.length;n++){var t=this.connectsAsTarget[n];-1==t.maxRank||t.maxRank==e+1?this.nextLayerConnectedCells[0].push(t.source):this.nextLayerConnectedCells[0].push(t)}}return this.nextLayerConnectedCells[0]},mxGraphHierarchyNode.prototype.getPreviousLayerConnectedCells=function(e){if(null==this.previousLayerConnectedCells){this.previousLayerConnectedCells=[],this.previousLayerConnectedCells[0]=[];for(var n=0;n<this.connectsAsSource.length;n++){var t=this.connectsAsSource[n];-1==t.minRank||t.minRank==e-1?this.previousLayerConnectedCells[0].push(t.target):this.previousLayerConnectedCells[0].push(t)}}return this.previousLayerConnectedCells[0]},mxGraphHierarchyNode.prototype.isVertex=function(){return!0},mxGraphHierarchyNode.prototype.getGeneralPurposeVariable=function(e){return this.temp[0]},mxGraphHierarchyNode.prototype.setGeneralPurposeVariable=function(e,n){this.temp[0]=n},mxGraphHierarchyNode.prototype.isAncestor=function(e){if(null!=e&&null!=this.hashCode&&null!=e.hashCode&&this.hashCode.length<e.hashCode.length){if(this.hashCode==e.hashCode)return!0;if(null==this.hashCode||null==this.hashCode)return!1;for(var n=0;n<this.hashCode.length;n++)if(this.hashCode[n]!=e.hashCode[n])return!1;return!0}return!1},mxGraphHierarchyNode.prototype.getCoreCell=function(){return this.cell},mxGraphHierarchyEdge.prototype=new mxGraphAbstractHierarchyCell,mxGraphHierarchyEdge.prototype.constructor=mxGraphHierarchyEdge,mxGraphHierarchyEdge.prototype.edges=null,mxGraphHierarchyEdge.prototype.source=null,mxGraphHierarchyEdge.prototype.target=null,mxGraphHierarchyEdge.prototype.isReversed=!1,mxGraphHierarchyEdge.prototype.invert=function(e){e=this.source,this.source=this.target,this.target=e,this.isReversed=!this.isReversed},mxGraphHierarchyEdge.prototype.getNextLayerConnectedCells=function(e){if(null==this.nextLayerConnectedCells){this.nextLayerConnectedCells=[];for(var n=0;n<this.temp.length;n++)this.nextLayerConnectedCells[n]=[],n==this.temp.length-1?this.nextLayerConnectedCells[n].push(this.source):this.nextLayerConnectedCells[n].push(this)}return this.nextLayerConnectedCells[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.getPreviousLayerConnectedCells=function(e){if(null==this.previousLayerConnectedCells){this.previousLayerConnectedCells=[];for(var n=0;n<this.temp.length;n++)this.previousLayerConnectedCells[n]=[],0==n?this.previousLayerConnectedCells[n].push(this.target):this.previousLayerConnectedCells[n].push(this)}return this.previousLayerConnectedCells[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.isEdge=function(){return!0},mxGraphHierarchyEdge.prototype.getGeneralPurposeVariable=function(e){return this.temp[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.setGeneralPurposeVariable=function(e,n){this.temp[e-this.minRank-1]=n},mxGraphHierarchyEdge.prototype.getCoreCell=function(){return null!=this.edges&&0<this.edges.length?this.edges[0]:null},mxGraphHierarchyModel.prototype.maxRank=null,mxGraphHierarchyModel.prototype.vertexMapper=null,mxGraphHierarchyModel.prototype.edgeMapper=null,mxGraphHierarchyModel.prototype.ranks=null,mxGraphHierarchyModel.prototype.roots=null,mxGraphHierarchyModel.prototype.parent=null,mxGraphHierarchyModel.prototype.dfsCount=0,mxGraphHierarchyModel.prototype.SOURCESCANSTARTRANK=1e8,mxGraphHierarchyModel.prototype.tightenToSource=!1,mxGraphHierarchyModel.prototype.createInternalCells=function(e,n,t){for(var a=e.getGraph(),i=0;i<n.length;i++){t[i]=new mxGraphHierarchyNode(n[i]);var s=mxCellPath.create(n[i]);this.vertexMapper[s]=t[i],s=e.getEdges(n[i]),t[i].connectsAsSource=[];for(var o=0;o<s.length;o++){if((d=e.getVisibleTerminal(s[o],!1))!=n[i]&&d!=n[i]&&e.graph.model.isVertex(d)&&!e.isVertexIgnored(d)){var r=e.getEdgesBetween(n[i],d,!1),l=e.getEdgesBetween(n[i],d,!0),d=mxCellPath.create(r[0]);if(null!=r&&0<r.length&&null==this.edgeMapper[d]&&2*l.length>=r.length){l=new mxGraphHierarchyEdge(r);for(var c=0;c<r.length;c++){var m=r[c];d=mxCellPath.create(m);this.edgeMapper[d]=l,a.resetEdge(m),e.disableEdgeStyle&&(e.setEdgeStyleEnabled(m,!1),e.setOrthogonalEdge(m,!0))}l.source=t[i],mxUtils.indexOf(t[i].connectsAsSource,l)<0&&t[i].connectsAsSource.push(l)}}}t[i].temp[0]=0}},mxGraphHierarchyModel.prototype.initialRank=function(){var e=[];if(null!=this.roots)for(var n=0;n<this.roots.length;n++){var t=mxCellPath.create(this.roots[n]);null!=(t=this.vertexMapper[t])&&e.push(t)}for(var a in this.vertexMapper)(t=this.vertexMapper[a]).temp[0]=-1;for(var i=e.slice();0<e.length;){var s,o;s=(t=e[0]).connectsAsTarget,o=t.connectsAsSource;var r=!0,l=this.SOURCESCANSTARTRANK;for(n=0;n<s.length;n++){var d=s[n];if(5270620!=d.temp[0]){r=!1;break}d=d.source,l=Math.min(l,d.temp[0]-1)}if(r){if(t.temp[0]=l,this.maxRank=Math.min(this.maxRank,l),null!=o)for(n=0;n<o.length;n++)(d=o[n]).temp[0]=5270620,-1==(d=d.target).temp[0]&&(e.push(d),d.temp[0]=-2);e.shift()}else if(n=e.shift(),e.push(t),n==t&&1==e.length)break}for(a in this.vertexMapper)(t=this.vertexMapper[a]).temp[0]-=this.maxRank;for(n=0;n<i.length;n++)for(e=0,s=(t=i[n]).connectsAsSource,a=0;a<s.length;a++)d=(d=s[a]).target,t.temp[0]=Math.max(e,d.temp[0]+1),e=t.temp[0];this.maxRank=this.SOURCESCANSTARTRANK-this.maxRank},mxGraphHierarchyModel.prototype.fixRanks=function(){var s=[];this.ranks=[];for(var e=0;e<this.maxRank+1;e++)s[e]=[],this.ranks[e]=s[e];var n=null;if(null!=this.roots){var t=this.roots;for(n=[],e=0;e<t.length;e++){var a=mxCellPath.create(t[e]);n[e]=this.vertexMapper[a]}}this.visit(function(e,n,t,a,i){if(0==i&&n.maxRank<0&&n.minRank<0&&(s[n.temp[0]].push(n),n.maxRank=n.temp[0],n.minRank=n.temp[0],n.temp[0]=s[n.maxRank].length-1),null!=e&&null!=t&&1<e.maxRank-n.maxRank)for(t.maxRank=e.maxRank,t.minRank=n.maxRank,t.temp=[],t.x=[],t.y=[],e=t.minRank+1;e<t.maxRank;e++)s[e].push(t),t.setGeneralPurposeVariable(e,s[e].length-1)},n,!1,null)},mxGraphHierarchyModel.prototype.visit=function(e,n,t,a){if(null!=n){for(var i=0;i<n.length;i++){var s=n[i];null!=s&&(null==a&&(a={}),t?(s.hashCode=[],s.hashCode[0]=this.dfsCount,s.hashCode[1]=i,this.extendedDfs(null,s,null,e,a,s.hashCode,i,0)):this.dfs(null,s,null,e,a,0))}this.dfsCount++}},mxGraphHierarchyModel.prototype.dfs=function(e,n,t,a,i,s){if(null!=n){var o=mxCellPath.create(n.cell);if(null==i[o])for(a(e,i[o]=n,t,s,0),e=n.connectsAsSource.slice(),t=0;t<e.length;t++)o=e[t],this.dfs(n,o.target,o,a,i,s+1);else a(e,n,t,s,1)}},mxGraphHierarchyModel.prototype.extendedDfs=function(e,n,t,a,i,s,o,r){if(null!=n)if(null==e||null!=n.hashCode&&n.hashCode[0]==e.hashCode[0]||(s=e.hashCode.length+1,n.hashCode=e.hashCode.slice(),n.hashCode[s-1]=o),null==i[o=mxCellPath.create(n.cell)])for(a(e,i[o]=n,t,r,0),e=n.connectsAsSource.slice(),t=0;t<e.length;t++)o=e[t],this.extendedDfs(n,o.target,o,a,i,n.hashCode,t,r+1);else a(e,n,t,r,1)},mxHierarchicalLayoutStage.prototype.execute=function(e){},mxMedianHybridCrossingReduction.prototype=new mxHierarchicalLayoutStage,mxMedianHybridCrossingReduction.prototype.constructor=mxMedianHybridCrossingReduction,mxMedianHybridCrossingReduction.prototype.layout=null,mxMedianHybridCrossingReduction.prototype.maxIterations=24,mxMedianHybridCrossingReduction.prototype.nestedBestRanks=null,mxMedianHybridCrossingReduction.prototype.currentBestCrossings=0,mxMedianHybridCrossingReduction.prototype.iterationsWithoutImprovement=0,mxMedianHybridCrossingReduction.prototype.maxNoImprovementIterations=2,mxMedianHybridCrossingReduction.prototype.execute=function(e){e=this.layout.getModel(),this.nestedBestRanks=[];for(var n=0;n<e.ranks.length;n++)this.nestedBestRanks[n]=e.ranks[n].slice();var t=0,a=this.calculateCrossings(e);for(n=0;n<this.maxIterations&&t<this.maxNoImprovementIterations;n++){this.weightedMedian(n,e),this.transpose(n,e);var i=this.calculateCrossings(e);if(i<a)for(a=i,i=t=0;i<this.nestedBestRanks.length;i++)for(var s=e.ranks[i],o=0;o<s.length;o++){var r=s[o];this.nestedBestRanks[i][r.getGeneralPurposeVariable(i)]=r}else for(t++,i=0;i<this.nestedBestRanks.length;i++)for(s=e.ranks[i],o=0;o<s.length;o++)(r=s[o]).setGeneralPurposeVariable(i,o);if(0==a)break}for(t=[],a=[],n=0;n<e.maxRank+1;n++)a[n]=[],t[n]=a[n];for(n=0;n<this.nestedBestRanks.length;n++)for(i=0;i<this.nestedBestRanks[n].length;i++)a[n].push(this.nestedBestRanks[n][i]);e.ranks=t},mxMedianHybridCrossingReduction.prototype.calculateCrossings=function(e){for(var n=e.ranks.length,t=0,a=1;a<n;a++)t+=this.calculateRankCrossing(a,e);return t},mxMedianHybridCrossingReduction.prototype.calculateRankCrossing=function(e,n){for(var t=0,a=n.ranks[e],i=a.length,s=n.ranks[e-1].length,o=[],r=0;r<i;r++)o[r]=[];for(r=0;r<a.length;r++)for(var l=(c=a[r]).getGeneralPurposeVariable(e),d=c.getPreviousLayerConnectedCells(e),c=0;c<d.length;c++){var m=d[c].getGeneralPurposeVariable(e-1);o[l][m]=201207}for(r=0;r<i;r++)for(c=0;c<s;c++)if(201207==o[r][c]){for(a=r+1;a<i;a++)for(l=0;l<c;l++)201207==o[a][l]&&t++;for(a=0;a<r;a++)for(l=c+1;l<s;l++)201207==o[a][l]&&t++}return t/2},mxMedianHybridCrossingReduction.prototype.transpose=function(e,n){for(var t=!0,a=0;t&&a++<10;)for(var i=1==e%2&&1==a%2,s=(t=!1,0);s<n.ranks.length;s++){for(var o=n.ranks[s],r=[],l=0;l<o.length;l++){(b=(f=o[l]).getGeneralPurposeVariable(s))<0&&(b=l),r[b]=f}var d=b=f=null,c=null,m=null,u=null,p=null,g=null,v=null,h=null;for(l=0;l<o.length-1;l++){if(0==l){for(var f=(v=r[l]).getNextLayerConnectedCells(s),b=v.getPreviousLayerConnectedCells(s),A=(m=[],u=[],0);A<f.length;A++)m[A]=f[A].getGeneralPurposeVariable(s+1);for(A=0;A<b.length;A++)u[A]=b[A].getGeneralPurposeVariable(s-1)}else f=d,b=c,m=p,u=g,v=h;for(d=(h=r[l+1]).getNextLayerConnectedCells(s),c=h.getPreviousLayerConnectedCells(s),p=[],g=[],A=0;A<d.length;A++)p[A]=d[A].getGeneralPurposeVariable(s+1);for(A=0;A<c.length;A++)g[A]=c[A].getGeneralPurposeVariable(s-1);var E=0,y=0;for(A=0;A<m.length;A++)for(var S=0;S<p.length;S++)m[A]>p[S]&&E++,m[A]<p[S]&&y++;for(A=0;A<u.length;A++)for(S=0;S<g.length;S++)u[A]>g[S]&&E++,u[A]<g[S]&&y++;(y<E||y==E&&i)&&(d=v.getGeneralPurposeVariable(s),v.setGeneralPurposeVariable(s,h.getGeneralPurposeVariable(s)),h.setGeneralPurposeVariable(s,d),d=f,c=b,p=m,g=u,h=v,i||(t=!0))}}},mxMedianHybridCrossingReduction.prototype.weightedMedian=function(e,n){var t=0==e%2;if(t)for(var a=n.maxRank-1;0<=a;a--)this.medianRank(a,t);else for(a=1;a<n.maxRank;a++)this.medianRank(a,t)},mxMedianHybridCrossingReduction.prototype.medianRank=function(e,n){for(var t=this.nestedBestRanks[e].length,a=[],i=[],s=0;s<t;s++){var o,r,l=this.nestedBestRanks[e][s],d=new MedianCellSorter;d.cell=l,r=n?e+1:e-1,null!=(o=n?l.getNextLayerConnectedCells(e):l.getPreviousLayerConnectedCells(e))&&0!=o.length?(d.medianValue=this.medianValue(o,r),a.push(d)):i[l.getGeneralPurposeVariable(e)]=!0}for(a.sort(MedianCellSorter.prototype.compare),s=0;s<t;s++)null==i[s]&&(l=a.shift().cell).setGeneralPurposeVariable(e,s)},mxMedianHybridCrossingReduction.prototype.medianValue=function(e,n){for(var t=[],a=0,i=0;i<e.length;i++){var s=e[i];t[a++]=s.getGeneralPurposeVariable(n)}return t.sort(function(e,n){return e-n}),1==a%2?t[Math.floor(a/2)]:2==a?(t[0]+t[1])/2:(s=t[(i=a/2)-1]-t[0],a=t[a-1]-t[i],(t[i-1]*a+t[i]*s)/(s+a))},MedianCellSorter.prototype.medianValue=0,MedianCellSorter.prototype.cell=!1,MedianCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.medianValue>e.medianValue?-1:n.medianValue<e.medianValue?1:0:0},mxMinimumCycleRemover.prototype=new mxHierarchicalLayoutStage,mxMinimumCycleRemover.prototype.constructor=mxMinimumCycleRemover,mxMinimumCycleRemover.prototype.layout=null,mxMinimumCycleRemover.prototype.execute=function(e){var n=this.layout.getModel(),s={},o=mxUtils.clone(n.vertexMapper,null,!0),t=null;if(null!=n.roots){var a=n.roots;t=[];for(e=0;e<a.length;e++){var i=mxCellPath.create(a[e]);t[e]=n.vertexMapper[i]}}if(n.visit(function(e,n,t,a,i){n.isAncestor(e)&&(t.invert(),mxUtils.remove(t,e.connectsAsSource),e.connectsAsTarget.push(t),mxUtils.remove(t,n.connectsAsTarget),n.connectsAsSource.push(t)),e=mxCellPath.create(n.cell),s[e]=n,delete o[e]},t,!0,null),t=null,0<o.lenth&&(t=mxUtils.clone(o,null,!0)),e=mxUtils.clone(s,null,!0),n.visit(function(e,n,t,a,i){n.isAncestor(e)&&(t.invert(),mxUtils.remove(t,e.connectsAsSource),n.connectsAsSource.push(t),e.connectsAsTarget.push(t),mxUtils.remove(t,n.connectsAsTarget)),e=mxCellPath.create(n.cell),s[e]=n,delete o[e]},o,!0,e),a=this.layout.getGraph(),null!=t&&0<t.length)for(n=n.roots,e=0;e<t.length;e++)i=t[e].cell,0==a.getIncomingEdges(i).length&&n.push(i)};var mxHierarchicalEdgeStyle={ORTHOGONAL:1,POLYLINE:2,STRAIGHT:3,CURVE:4};function WeightedCellSorter(e,n){this.cell=e,this.weightedValue=n}function mxHierarchicalLayout(e,n,t){mxGraphLayout.call(this,e),this.orientation=null!=n?n:mxConstants.DIRECTION_NORTH,this.deterministic=null==t||t}function mxGraphModel(e){this.currentEdit=this.createUndoableEdit(),null!=e?this.setRoot(e):this.clear()}function mxRootChange(e,n){this.model=e,this.previous=this.root=n}function mxChildChange(e,n,t,a){this.model=e,this.previous=this.parent=n,this.child=t,this.previousIndex=this.index=a}function mxTerminalChange(e,n,t,a){this.model=e,this.cell=n,this.previous=this.terminal=t,this.source=a}function mxValueChange(e,n,t){this.model=e,this.cell=n,this.previous=this.value=t}function mxStyleChange(e,n,t){this.model=e,this.cell=n,this.previous=this.style=t}function mxGeometryChange(e,n,t){this.model=e,this.cell=n,this.previous=this.geometry=t}function mxCollapseChange(e,n,t){this.model=e,this.cell=n,this.previous=this.collapsed=t}function mxVisibleChange(e,n,t){this.model=e,this.cell=n,this.previous=this.visible=t}function mxCellAttributeChange(e,n,t){this.cell=e,this.attribute=n,this.previous=this.value=t}function mxCell(e,n,t){this.value=e,this.setGeometry(n),this.setStyle(t),null!=this.onInit&&this.onInit()}function mxGeometry(e,n,t,a){mxRectangle.call(this,e,n,t,a)}mxCoordinateAssignment.prototype=new mxHierarchicalLayoutStage,mxCoordinateAssignment.prototype.constructor=mxCoordinateAssignment,mxCoordinateAssignment.prototype.layout=null,mxCoordinateAssignment.prototype.intraCellSpacing=30,mxCoordinateAssignment.prototype.interRankCellSpacing=100,mxCoordinateAssignment.prototype.parallelEdgeSpacing=10,mxCoordinateAssignment.prototype.maxIterations=8,mxCoordinateAssignment.prototype.prefHozEdgeSep=5,mxCoordinateAssignment.prototype.prefVertEdgeOff=2,mxCoordinateAssignment.prototype.minEdgeJetty=12,mxCoordinateAssignment.prototype.channelBuffer=4,mxCoordinateAssignment.prototype.jettyPositions=null,mxCoordinateAssignment.prototype.orientation=mxConstants.DIRECTION_NORTH,mxCoordinateAssignment.prototype.initialX=null,mxCoordinateAssignment.prototype.limitX=null,mxCoordinateAssignment.prototype.currentXDelta=null,mxCoordinateAssignment.prototype.widestRank=null,mxCoordinateAssignment.prototype.rankTopY=null,mxCoordinateAssignment.prototype.rankBottomY=null,mxCoordinateAssignment.prototype.widestRankValue=null,mxCoordinateAssignment.prototype.rankWidths=null,mxCoordinateAssignment.prototype.rankY=null,mxCoordinateAssignment.prototype.fineTuning=!0,mxCoordinateAssignment.prototype.edgeStyle=mxHierarchicalEdgeStyle.POLYLINE,mxCoordinateAssignment.prototype.nextLayerConnectedCache=null,mxCoordinateAssignment.prototype.previousLayerConnectedCache=null,mxCoordinateAssignment.prototype.groupPadding=10,mxCoordinateAssignment.prototype.printStatus=function(){var e=this.layout.getModel();mxLog.show(),mxLog.writeln("======Coord assignment debug=======");for(var n=0;n<e.ranks.length;n++){mxLog.write("Rank ",n," : ");for(var t=e.ranks[n],a=0;a<t.length;a++)mxLog.write(t[a].getGeneralPurposeVariable(n),"  ");mxLog.writeln()}mxLog.writeln("====================================")},mxCoordinateAssignment.prototype.execute=function(e){this.jettyPositions=[],e=this.layout.getModel(),this.currentXDelta=0,this.initialCoords(this.layout.getGraph(),e),this.fineTuning&&this.minNode(e);var n=1e8;if(this.fineTuning)for(var t=0;t<this.maxIterations;t++){if(0!=t&&(this.medianPos(t,e),this.minNode(e)),this.currentXDelta<n){for(var a=0;a<e.ranks.length;a++)for(var i=e.ranks[a],s=0;s<i.length;s++){var o=i[s];o.setX(a,o.getGeneralPurposeVariable(a))}n=this.currentXDelta}else for(a=0;a<e.ranks.length;a++)for(i=e.ranks[a],s=0;s<i.length;s++)(o=i[s]).setGeneralPurposeVariable(a,o.getX(a));this.minPath(this.layout.getGraph(),e),this.currentXDelta=0}this.setCellLocations(this.layout.getGraph(),e)},mxCoordinateAssignment.prototype.minNode=function(e){for(var n=[],t=[],a=[],i=0;i<=e.maxRank;i++){a[i]=e.ranks[i];for(var s=0;s<a[i].length;s++){var o=a[i][s];(r=new WeightedCellSorter(o,i)).rankIndex=s,r.visited=!0,n.push(r),t[o=mxCellPath.create(o.getCoreCell())]=r}}for(e=10*n.length,s=0;0<n.length&&s<=e;){i=(r=n.shift()).cell;var r,l=r.weightedValue,d=parseInt(r.rankIndex),c=(o=i.getNextLayerConnectedCells(l),i.getPreviousLayerConnectedCells(l)),m=o.length,u=c.length,p=this.medianXValue(o,l+1),g=this.medianXValue(c,l-1),v=m+u,h=i.getGeneralPurposeVariable(l),f=h;if(0<v&&(f=(p*m+g*u)/v),m=!1,f<h-1?0==d?(i.setGeneralPurposeVariable(l,f),m=!0):(h=(h=(d=a[l][d-1]).getGeneralPurposeVariable(l))+d.width/2+this.intraCellSpacing+i.width/2)<f?(i.setGeneralPurposeVariable(l,f),m=!0):h<i.getGeneralPurposeVariable(l)-1&&(i.setGeneralPurposeVariable(l,h),m=!0):h+1<f&&(d==a[l].length-1?(i.setGeneralPurposeVariable(l,f),m=!0):f<(h=(h=(d=a[l][d+1]).getGeneralPurposeVariable(l))-d.width/2-this.intraCellSpacing-i.width/2)?(i.setGeneralPurposeVariable(l,f),m=!0):h>i.getGeneralPurposeVariable(l)+1&&(i.setGeneralPurposeVariable(l,h),m=!0)),m){for(i=0;i<o.length;i++)l=o[i],null!=(l=t[l=mxCellPath.create(l.getCoreCell())])&&0==l.visited&&(l.visited=!0,n.push(l));for(i=0;i<c.length;i++)l=c[i],null!=(l=t[l=mxCellPath.create(l.getCoreCell())])&&0==l.visited&&(l.visited=!0,n.push(l))}r.visited=!1,s++}},mxCoordinateAssignment.prototype.medianPos=function(e,n){if(0==e%2)for(var t=n.maxRank;0<t;t--)this.rankMedianPosition(t-1,n,t);else for(t=0;t<n.maxRank-1;t++)this.rankMedianPosition(t+1,n,t)},mxCoordinateAssignment.prototype.rankMedianPosition=function(e,n,t){n=n.ranks[e];for(var a=[],i=[],s=0;s<n.length;s++){var o=n[s];a[s]=new WeightedCellSorter,a[s].cell=o,a[s].rankIndex=s;var r=mxCellPath.create(o.getCoreCell());i[r]=a[s];var l=null;l=t<e?o.getPreviousLayerConnectedCells(e):o.getNextLayerConnectedCells(e);a[s].weightedValue=this.calculatedWeightedValue(o,l)}for(a.sort(WeightedCellSorter.prototype.compare),s=0;s<a.length;s++){r=0,o=a[s].cell,r=0,null!=(l=t<e?o.getPreviousLayerConnectedCells(e).slice():o.getNextLayerConnectedCells(e).slice())&&(r=0<(r=l.length)?this.medianXValue(l,t):o.getGeneralPurposeVariable(e));for(var d=0,c=(l=-1e8,a[s].rankIndex-1);0<=c;){var m;if(null!=(m=i[m=mxCellPath.create(n[c].getCoreCell())])){var u=m.cell;m.visited?(l=u.getGeneralPurposeVariable(e)+u.width/2+this.intraCellSpacing+d+o.width/2,c=-1):(d+=u.width+this.intraCellSpacing,c--)}}for(d=0,u=1e8,c=a[s].rankIndex+1;c<a.length;)if(null!=(m=i[m=mxCellPath.create(n[c].getCoreCell())])){var p=m.cell;m.visited?(u=p.getGeneralPurposeVariable(e)-p.width/2-this.intraCellSpacing-d-o.width/2,c=a.length):(d+=p.width+this.intraCellSpacing,c++)}l<=r&&r<=u?o.setGeneralPurposeVariable(e,r):r<l?(o.setGeneralPurposeVariable(e,l),this.currentXDelta+=l-r):u<r&&(o.setGeneralPurposeVariable(e,u),this.currentXDelta+=r-u),a[s].visited=!0}},mxCoordinateAssignment.prototype.calculatedWeightedValue=function(e,n){for(var t=0,a=0;a<n.length;a++){var i=n[a];e.isVertex()&&i.isVertex()?t++:t=e.isEdge()&&i.isEdge()?t+8:t+2}return t},mxCoordinateAssignment.prototype.medianXValue=function(e,n){if(0==e.length)return 0;for(var t=[],a=0;a<e.length;a++)t[a]=e[a].getGeneralPurposeVariable(n);return t.sort(function(e,n){return e-n}),1==e.length%2?t[Math.floor(e.length/2)]:(t[(a=e.length/2)-1]+t[a])/2},mxCoordinateAssignment.prototype.initialCoords=function(e,n){this.calculateWidestRank(e,n);for(var t=this.widestRank;0<=t;t--)t<n.maxRank&&this.rankCoordinates(t,e,n);for(t=this.widestRank+1;t<=n.maxRank;t++)0<t&&this.rankCoordinates(t,e,n)},mxCoordinateAssignment.prototype.rankCoordinates=function(e,n,t){n=t.ranks[e],t=0;for(var a=this.initialX+(this.widestRankValue-this.rankWidths[e])/2,i=!1,s=0;s<n.length;s++){var o=n[s];if(o.isVertex()){var r=this.layout.getVertexBounds(o.cell);null!=r?this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(o.width=r.width,o.height=r.height):(o.width=r.height,o.height=r.width):i=!0,t=Math.max(t,o.height)}else o.isEdge()&&(r=1,null!=o.edges?r=o.edges.length:mxLog.warn("edge.edges is null"),o.width=(r-1)*this.parallelEdgeSpacing);a+=o.width/2,o.setX(e,a),o.setGeneralPurposeVariable(e,a),a+=o.width/2,a+=this.intraCellSpacing}1==i&&mxLog.warn("At least one cell has no bounds")},mxCoordinateAssignment.prototype.calculateWidestRank=function(e,n){var t=-this.interRankCellSpacing,a=0;this.rankWidths=[],this.rankY=[];for(var i=n.maxRank;0<=i;i--){for(var s=0,o=n.ranks[i],r=this.initialX,l=!1,d=0;d<o.length;d++){var c=o[d];if(c.isVertex()){var m=this.layout.getVertexBounds(c.cell);null!=m?this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(c.width=m.width,c.height=m.height):(c.width=m.height,c.height=m.width):l=!0,s=Math.max(s,c.height)}else c.isEdge()&&(m=1,null!=c.edges?m=c.edges.length:mxLog.warn("edge.edges is null"),c.width=(m-1)*this.parallelEdgeSpacing);r+=c.width/2,c.setX(i,r),c.setGeneralPurposeVariable(i,r),r+=c.width/2,(r+=this.intraCellSpacing)>this.widestRankValue&&(this.widestRankValue=r,this.widestRank=i),this.rankWidths[i]=r}for(1==l&&mxLog.warn("At least one cell has no bounds"),this.rankY[i]=t,r=s/2+a/2+this.interRankCellSpacing,a=s,t=this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_WEST?t+r:t-r,d=0;d<o.length;d++)o[d].setY(i,t)}},mxCoordinateAssignment.prototype.minPath=function(e,n){var t,a=n.edgeMapper;for(t in a){var i=a[t];if(!(i.maxRank-i.minRank-1<1)){for(var s=i.getGeneralPurposeVariable(i.minRank+1),o=!0,r=0,l=i.minRank+2;l<i.maxRank;l++){s!=(d=i.getGeneralPurposeVariable(l))?(o=!1,s=d):r++}if(!o){o=s=0;var d=[],c=[],m=i.getGeneralPurposeVariable(i.minRank+1);for(l=i.minRank+1;l<i.maxRank-1;l++){var u=i.getX(l+1);m==u?(d[l-i.minRank-1]=m,s++):this.repositionValid(n,i,l+1,m)?(d[l-i.minRank-1]=m,s++):m=d[l-i.minRank-1]=u}for(m=i.getX(l),l=i.maxRank-1;l>i.minRank+1;l--)m==(u=i.getX(l-1))?(c[l-i.minRank-2]=m,o++):this.repositionValid(n,i,l-1,m)?(c[l-i.minRank-2]=m,o++):(c[l-i.minRank-2]=i.getX(l-1),m=u);if(r<o||r<s)if(s<=o)for(l=i.maxRank-2;l>i.minRank;l--)i.setX(l,c[l-i.minRank-1]);else if(o<s)for(l=i.minRank+2;l<i.maxRank;l++)i.setX(l,d[l-i.minRank-2])}}}},mxCoordinateAssignment.prototype.repositionValid=function(e,n,t,a){e=e.ranks[t];for(var i=-1,s=0;s<e.length;s++)if(n==e[s]){i=s;break}if(i<0)return!1;if(a<(s=n.getGeneralPurposeVariable(t))){if(0==i)return!0;if(!((t=(t=(e=e[i-1]).getGeneralPurposeVariable(t))+e.width/2+this.intraCellSpacing+n.width/2)<=a))return!1}else if(s<a){if(i==e.length-1)return!0;if(!(a<=(t=(t=(e=e[i+1]).getGeneralPurposeVariable(t))-e.width/2-this.intraCellSpacing-n.width/2)))return!1}return!0},mxCoordinateAssignment.prototype.setCellLocations=function(e,n){this.rankTopY=[],this.rankBottomY=[];for(var t=0;t<n.ranks.length;t++)this.rankTopY[t]=Number.MAX_VALUE,this.rankBottomY[t]=0;t=null,this.layout.resizeParent&&(t={});var a,i=n.edgeMapper,s=n.vertexMapper;for(a in s){var o=s[a];if(this.setVertexLocation(o),this.layout.resizeParent){o=e.model.getParent(o.cell);var r=mxCellPath.create(o);null==t[r]&&(t[r]=o)}}for(a in this.layout.resizeParent&&null!=t&&this.adjustParents(t),(this.edgeStyle==mxHierarchicalEdgeStyle.ORTHOGONAL||this.edgeStyle==mxHierarchicalEdgeStyle.POLYLINE||this.edgeStyle==mxHierarchicalEdgeStyle.CURVE)&&this.localEdgeProcessing(n),i)this.setEdgePosition(i[a])},mxCoordinateAssignment.prototype.adjustParents=function(e){var n,t=[];for(n in e)t.push(e[n]);this.layout.arrangeGroups(mxUtils.sortCells(t,!0),this.groupPadding)},mxCoordinateAssignment.prototype.localEdgeProcessing=function(e){for(var n=0;n<e.ranks.length;n++)for(var t=e.ranks[n],a=0;a<t.length;a++){var i=t[a];if(i.isVertex())for(var s=i.getPreviousLayerConnectedCells(n),o=n-1,r=0;r<2;r++){if(-1<o&&o<e.ranks.length&&null!=s&&0<s.length){for(var l=[],d=0;d<s.length;d++){var c=new WeightedCellSorter(s[d],s[d].getX(o));l.push(c)}l.sort(WeightedCellSorter.prototype.compare);var m=(c=i.x[0]-i.width/2)+i.width,u=s=0;for(o=[],d=0;d<l.length;d++){var p,g=l[d].cell;if(g.isVertex()){p=0==r?i.connectsAsSource:i.connectsAsTarget;for(var v=0;v<p.length;v++)p[v].source!=g&&p[v].target!=g||(s+=p[v].edges.length,u++,o.push(p[v]))}else s+=g.edges.length,u++,o.push(g)}for(i.width>(s+1)*this.prefHozEdgeSep+2*this.prefHozEdgeSep&&(c+=this.prefHozEdgeSep,m-=this.prefHozEdgeSep),c+=(l=(m-c)/s)/2,m=this.minEdgeJetty-this.prefVertEdgeOff,d=u=0;d<o.length;d++){for(g=o[d].edges.length,v=mxCellPath.create(o[d].edges[0]),null==(p=this.jettyPositions[v])&&(p=[],this.jettyPositions[v]=p),d<s/2?m+=this.prefVertEdgeOff:s/2<d&&(m-=this.prefVertEdgeOff),v=0;v<g;v++)p[4*v+2*r]=c,c+=l,p[4*v+2*r+1]=m;u=Math.max(u,m)}}s=i.getNextLayerConnectedCells(n),o=n+1}}},mxCoordinateAssignment.prototype.setEdgePosition=function(e){var n=0;if(101207!=e.temp[0]){var t=e.maxRank,a=e.minRank;t==a&&(t=e.source.maxRank,a=e.target.minRank);for(var i=0,s=mxCellPath.create(e.edges[0]),o=(s=this.jettyPositions[s],e.isReversed?e.target.cell:e.source.cell),r=this.layout.graph,l=0;l<e.edges.length;l++){var d=e.edges[l],c=this.layout.getVisibleTerminal(d,!0),m=r.model.getTerminal(d,!0),u=[],p=e.isReversed;if(c!=o&&(p=!p),null!=s){var g=p?2:0,v=p?this.rankTopY[a]:this.rankBottomY[t],h=s[4*i+1+g];p&&(h=-h),v+=h,g=s[4*i+g],m=r.model.getTerminal(d,!0),this.layout.isPort(m)&&r.model.getParent(m)==c&&(g=null!=(g=r.view.getState(m))?g.x:c.geometry.x+e.source.width*m.geometry.x),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(u.push(new mxPoint(g,v)),this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(g,v+h))):(u.push(new mxPoint(v,g)),this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(v+h,g)))}for(g=e.x.length-1,v=h=-1,c=e.maxRank-1,p&&(g=0,h=e.x.length,v=1,c=e.minRank+1);e.maxRank!=e.minRank&&g!=h;g+=v){m=e.x[g]+n;var f=(this.rankTopY[c]+this.rankBottomY[c+1])/2,b=(this.rankTopY[c-1]+this.rankBottomY[c])/2;if(p){var A=f;f=b,b=A}this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(u.push(new mxPoint(m,f)),u.push(new mxPoint(m,b))):(u.push(new mxPoint(f,m)),u.push(new mxPoint(b,m))),this.limitX=Math.max(this.limitX,m),c+=v}null!=s&&(g=p?2:0,v=p?this.rankBottomY[t]:this.rankTopY[a],h=s[4*i+3-g],p&&(h=-h),v-=h,g=s[4*i+2-g],p=r.model.getTerminal(d,!1),c=this.layout.getVisibleTerminal(d,!1),this.layout.isPort(p)&&r.model.getParent(p)==c&&(g=null!=(g=r.view.getState(p))?g.x:c.geometry.x+e.target.width*p.geometry.x),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(g,v-h)),u.push(new mxPoint(g,v))):(this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(v-h,g)),u.push(new mxPoint(v,g)))),e.isReversed&&this.processReversedEdge(e,d),this.layout.setEdgePoints(d,u),n=0==n?this.parallelEdgeSpacing:0<n?-n:-n+this.parallelEdgeSpacing,i++}e.temp[0]=101207}},mxCoordinateAssignment.prototype.setVertexLocation=function(e){var n=e.cell,t=e.x[0]-e.width/2,a=e.y[0]-e.height/2;this.rankTopY[e.minRank]=Math.min(this.rankTopY[e.minRank],a),this.rankBottomY[e.minRank]=Math.max(this.rankBottomY[e.minRank],a+e.height),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?this.layout.setVertexLocation(n,t,a):this.layout.setVertexLocation(n,a,t),this.limitX=Math.max(this.limitX,t+e.width)},mxCoordinateAssignment.prototype.processReversedEdge=function(e,n){},WeightedCellSorter.prototype.weightedValue=0,WeightedCellSorter.prototype.nudge=!1,WeightedCellSorter.prototype.visited=!1,WeightedCellSorter.prototype.rankIndex=null,WeightedCellSorter.prototype.cell=null,WeightedCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.weightedValue>e.weightedValue?-1:n.weightedValue<e.weightedValue?1:n.nudge?-1:1:0},mxHierarchicalLayout.prototype=new mxGraphLayout,mxHierarchicalLayout.prototype.constructor=mxHierarchicalLayout,mxHierarchicalLayout.prototype.roots=null,mxHierarchicalLayout.prototype.resizeParent=!1,mxHierarchicalLayout.prototype.moveParent=!1,mxHierarchicalLayout.prototype.parentBorder=0,mxHierarchicalLayout.prototype.intraCellSpacing=30,mxHierarchicalLayout.prototype.interRankCellSpacing=100,mxHierarchicalLayout.prototype.interHierarchySpacing=60,mxHierarchicalLayout.prototype.parallelEdgeSpacing=10,mxHierarchicalLayout.prototype.orientation=mxConstants.DIRECTION_NORTH,mxHierarchicalLayout.prototype.fineTuning=!0,mxHierarchicalLayout.prototype.tightenToSource=!0,mxHierarchicalLayout.prototype.disableEdgeStyle=!0,mxHierarchicalLayout.prototype.traverseAncestors=!0,mxHierarchicalLayout.prototype.model=null,mxHierarchicalLayout.prototype.edgesCache=null,mxHierarchicalLayout.prototype.getModel=function(){return this.model},mxHierarchicalLayout.prototype.execute=function(e,n){this.parent=e;var t=this.graph.model;if(this.edgesCache={},null!=n||null!=e){if(null!=n&&null!=e){for(var a=[],i=0;i<n.length;i++)t.isAncestor(e,n[i])&&a.push(n[i]);this.roots=a}else this.roots=n;t.beginUpdate();try{this.run(e),this.resizeParent&&!this.graph.isCellCollapsed(e)&&this.graph.updateGroupBounds([e],this.parentBorder,this.moveParent)}finally{t.endUpdate()}}},mxHierarchicalLayout.prototype.findRoots=function(e,n){var t=[];if(null!=e&&null!=n){var a,i=this.graph.model,s=null,o=-1e5;for(a in n){var r=n[a];if(i.isVertex(r)&&this.graph.isCellVisible(r)){for(var l=this.getEdges(r),d=0,c=0,m=0;m<l.length;m++)this.getVisibleTerminal(l[m],!0)==r?d++:c++;0==c&&0<d&&t.push(r),o<(l=d-c)&&(o=l,s=r)}}0==t.length&&null!=s&&t.push(s)}return t},mxHierarchicalLayout.prototype.getEdges=function(e){var n=mxCellPath.create(e);if(null!=this.edgesCache[n])return this.edgesCache[n];for(var t=this.graph.model,a=[],i=this.graph.isCellCollapsed(e),s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o);this.isPort(r)?a=a.concat(t.getEdges(r,!0,!0)):!i&&this.graph.isCellVisible(r)||(a=a.concat(t.getEdges(r,!0,!0)))}for(a=a.concat(t.getEdges(e,!0,!0)),t=[],o=0;o<a.length;o++)((i=this.getVisibleTerminal(a[o],!0))==(s=this.getVisibleTerminal(a[o],!1))||i!=s&&(s==e&&(null==this.parent||this.graph.isValidAncestor(i,this.parent,this.traverseAncestors))||i==e&&(null==this.parent||this.graph.isValidAncestor(s,this.parent,this.traverseAncestors))))&&t.push(a[o]);return this.edgesCache[n]=t},mxHierarchicalLayout.prototype.getVisibleTerminal=function(e,n){var t=null!=(t=this.graph.view.getState(e))?t.getVisibleTerminal(n):this.graph.view.getVisibleTerminal(e,n);return this.isPort(t)&&(t=this.graph.model.getParent(t)),t},mxHierarchicalLayout.prototype.run=function(e){var n=[],t=[];if(null==this.roots&&null!=e){var a={};this.filterDescendants(e,a),this.roots=[];var i,s=!0;for(i in a)if(null!=a[i]){s=!1;break}for(;!s;){var o=this.findRoots(e,a);for(s=0;s<o.length;s++){var r=[];n.push(r),this.traverse(o[s],!0,null,t,r,n,a)}for(s=0;s<o.length;s++)this.roots.push(o[s]);for(i in s=!0,a)if(null!=a[i]){s=!1;break}}}else for(s=0;s<roots.length;s++)r=[],n.push(r),traverse(roots.get(s),!0,null,t,r,n,null);for(s=t=0;s<n.length;s++){for(i in a=[],r=n[s])a.push(r[i]);this.model=new mxGraphHierarchyModel(this,a,this.roots,e,this.tightenToSource),this.cycleStage(e),this.layeringStage(),this.crossingStage(e),t=this.placementStage(t,e)}},mxHierarchicalLayout.prototype.filterDescendants=function(e,n){var t=this.graph.model;if(t.isVertex(e)&&e!=this.parent&&this.graph.isCellVisible(e)&&(n[mxCellPath.create(e)]=e),this.traverseAncestors||e==this.parent&&this.graph.isCellVisible(e))for(var a=t.getChildCount(e),i=0;i<a;i++){var s=t.getChildAt(e,i);this.isPort(s)||this.filterDescendants(s,n)}},mxHierarchicalLayout.prototype.isPort=function(e){return!!e.geometry.relative},mxHierarchicalLayout.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;for(var a=this.getEdges(e),i=[],s=0;s<a.length;s++){var o=this.getVisibleTerminal(a[s],!0),r=this.getVisibleTerminal(a[s],!1);(o==e&&r==n||!t&&o==n&&r==e)&&i.push(a[s])}return i},mxHierarchicalLayout.prototype.traverse=function(e,n,t,a,i,s,o){if(null!=e&&null!=a){var r=mxCellPath.create(e);if(null!=a[r]||null!=o&&null==o[r]){if(null==i[r])for(t=0;t<s.length;t++)if(null!=(e=s[t])[r]){for(l in i)e[l]=i[l];return s.pop(),e}}else{null==i[r]&&(i[r]=e),null==a[r]&&(a[r]=e),delete o[r];var l=this.getEdges(e);for(t=0;t<l.length;t++)r=this.getVisibleTerminal(l[t],!0)==e,(!n||r)&&(r=this.getVisibleTerminal(l[t],!r),i=this.traverse(r,n,l[t],a,i,s,o))}}return i},mxHierarchicalLayout.prototype.cycleStage=function(e){new mxMinimumCycleRemover(this).execute(e)},mxHierarchicalLayout.prototype.layeringStage=function(){this.model.initialRank(),this.model.fixRanks()},mxHierarchicalLayout.prototype.crossingStage=function(e){new mxMedianHybridCrossingReduction(this).execute(e)},mxHierarchicalLayout.prototype.placementStage=function(e,n){var t=new mxCoordinateAssignment(this,this.intraCellSpacing,this.interRankCellSpacing,this.orientation,e,this.parallelEdgeSpacing);return t.fineTuning=this.fineTuning,t.execute(n),t.limitX+this.interHierarchySpacing},mxGraphModel.prototype=new mxEventSource,mxGraphModel.prototype.constructor=mxGraphModel,mxGraphModel.prototype.root=null,mxGraphModel.prototype.cells=null,mxGraphModel.prototype.maintainEdgeParent=!0,mxGraphModel.prototype.createIds=!0,mxGraphModel.prototype.prefix="",mxGraphModel.prototype.postfix="",mxGraphModel.prototype.nextId=0,mxGraphModel.prototype.currentEdit=null,mxGraphModel.prototype.updateLevel=0,mxGraphModel.prototype.endingUpdate=!1,mxGraphModel.prototype.clear=function(){this.setRoot(this.createRoot())},mxGraphModel.prototype.isCreateIds=function(){return this.createIds},mxGraphModel.prototype.setCreateIds=function(e){this.createIds=e},mxGraphModel.prototype.createRoot=function(){var e=new mxCell;return e.insert(new mxCell),e},mxGraphModel.prototype.getCell=function(e){return null!=this.cells?this.cells[e]:null},mxGraphModel.prototype.filterCells=function(e,n){var t=null;if(null!=e){t=[];for(var a=0;a<e.length;a++)n(e[a])&&t.push(e[a])}return t},mxGraphModel.prototype.getDescendants=function(e){return this.filterDescendants(null,e)},mxGraphModel.prototype.filterDescendants=function(e,n){var t=[];n=n||this.getRoot(),(null==e||e(n))&&t.push(n);for(var a=this.getChildCount(n),i=0;i<a;i++){var s=this.getChildAt(n,i);t=t.concat(this.filterDescendants(e,s))}return t},mxGraphModel.prototype.getRoot=function(e){var n=e||this.root;if(null!=e)for(;null!=e;)n=e,e=this.getParent(e);return n},mxGraphModel.prototype.setRoot=function(e){return this.execute(new mxRootChange(this,e)),e},mxGraphModel.prototype.rootChanged=function(e){var n=this.root;return this.root=e,this.nextId=0,this.cells=null,this.cellAdded(e),n},mxGraphModel.prototype.isRoot=function(e){return null!=e&&this.root==e},mxGraphModel.prototype.isLayer=function(e){return this.isRoot(this.getParent(e))},mxGraphModel.prototype.isAncestor=function(e,n){for(;null!=n&&n!=e;)n=this.getParent(n);return n==e},mxGraphModel.prototype.contains=function(e){return this.isAncestor(this.root,e)},mxGraphModel.prototype.getParent=function(e){return null!=e?e.getParent():null},mxGraphModel.prototype.add=function(e,n,t){if(n!=e&&null!=e&&null!=n){null==t&&(t=this.getChildCount(e));var a=e!=this.getParent(n);this.execute(new mxChildChange(this,e,n,t)),this.maintainEdgeParent&&a&&this.updateEdgeParents(n)}return n},mxGraphModel.prototype.cellAdded=function(e){if(null!=e){if(null==e.getId()&&this.createIds&&e.setId(this.createId(e)),null!=e.getId())if((n=this.getCell(e.getId()))!=e){for(;null!=n;)e.setId(this.createId(e)),n=this.getCell(e.getId());null==this.cells&&(this.cells={}),this.cells[e.getId()]=e}mxUtils.isNumeric(e.getId())&&(this.nextId=Math.max(this.nextId,e.getId()));for(var n=this.getChildCount(e),t=0;t<n;t++)this.cellAdded(this.getChildAt(e,t))}},mxGraphModel.prototype.createId=function(e){return e=this.nextId,this.nextId++,this.prefix+e+this.postfix},mxGraphModel.prototype.updateEdgeParents=function(e,n){n=n||this.getRoot(e);for(var t=this.getChildCount(e),a=0;a<t;a++){var i=this.getChildAt(e,a);this.updateEdgeParents(i,n)}for(i=this.getEdgeCount(e),t=[],a=0;a<i;a++)t.push(this.getEdgeAt(e,a));for(a=0;a<t.length;a++)i=t[a],this.isAncestor(n,i)&&this.updateEdgeParent(i,n)},mxGraphModel.prototype.updateEdgeParent=function(e,n){for(var t=this.getTerminal(e,!0),a=this.getTerminal(e,!1),i=null;null!=t&&!this.isEdge(t)&&null!=t.geometry&&t.geometry.relative;)t=this.getParent(t);for(;null!=a&&!this.isEdge(a)&&null!=a.geometry&&a.geometry.relative;)a=this.getParent(a);if(this.isAncestor(n,t)&&this.isAncestor(n,a)&&(null!=(i=t==a?this.getParent(t):this.getNearestCommonAncestor(t,a))&&(this.getParent(i)!=this.root||this.isAncestor(i,e))&&this.getParent(e)!=i)){if(null!=(t=this.getGeometry(e))){var s=this.getOrigin(this.getParent(e)),o=this.getOrigin(i);a=o.x-s.x,s=o.y-s.y;(t=t.clone()).translate(-a,-s),this.setGeometry(e,t)}this.add(i,e,this.getChildCount(i))}},mxGraphModel.prototype.getOrigin=function(e){var n=null;return null!=e?(n=this.getOrigin(this.getParent(e)),this.isEdge(e)||null!=(e=this.getGeometry(e))&&(n.x+=e.x,n.y+=e.y)):n=new mxPoint,n},mxGraphModel.prototype.getNearestCommonAncestor=function(e,n){if(null!=e&&null!=n&&(null!=(s=mxCellPath.create(n))&&0<s.length)){var t=e,a=mxCellPath.create(t);if(s.length<a.length){t=n;var i=a,s=(a=s,i)}for(;null!=t;){if(i=this.getParent(t),0==s.indexOf(a+mxCellPath.PATH_SEPARATOR)&&null!=i)return t;a=mxCellPath.getParentPath(a),t=i}}return null},mxGraphModel.prototype.remove=function(e){return e==this.root?this.setRoot(null):null!=this.getParent(e)&&this.execute(new mxChildChange(this,null,e)),e},mxGraphModel.prototype.cellRemoved=function(e){if(null!=e&&null!=this.cells){for(var n=this.getChildCount(e)-1;0<=n;n--)this.cellRemoved(this.getChildAt(e,n));null!=this.cells&&null!=e.getId()&&delete this.cells[e.getId()]}},mxGraphModel.prototype.parentForCellChanged=function(e,n,t){var a=this.getParent(e);return null!=n?(n!=a||a.getIndex(e)!=t)&&n.insert(e,t):null!=a&&(t=a.getIndex(e),a.remove(t)),this.contains(a)||null==n?null==n&&this.cellRemoved(e):this.cellAdded(e),a},mxGraphModel.prototype.getChildCount=function(e){return null!=e?e.getChildCount():0},mxGraphModel.prototype.getChildAt=function(e,n){return null!=e?e.getChildAt(n):null},mxGraphModel.prototype.getChildren=function(e){return null!=e?e.children:null},mxGraphModel.prototype.getChildVertices=function(e){return this.getChildCells(e,!0,!1)},mxGraphModel.prototype.getChildEdges=function(e){return this.getChildCells(e,!1,!0)},mxGraphModel.prototype.getChildCells=function(e,n,t){n=null!=n&&n,t=null!=t&&t;for(var a=this.getChildCount(e),i=[],s=0;s<a;s++){var o=this.getChildAt(e,s);(!t&&!n||t&&this.isEdge(o)||n&&this.isVertex(o))&&i.push(o)}return i},mxGraphModel.prototype.getTerminal=function(e,n){return null!=e?e.getTerminal(n):null},mxGraphModel.prototype.setTerminal=function(e,n,t){var a=n!=this.getTerminal(e,t);return this.execute(new mxTerminalChange(this,e,n,t)),this.maintainEdgeParent&&a&&this.updateEdgeParent(e,this.getRoot()),n},mxGraphModel.prototype.setTerminals=function(e,n,t){this.beginUpdate();try{this.setTerminal(e,n,!0),this.setTerminal(e,t,!1)}finally{this.endUpdate()}},mxGraphModel.prototype.terminalForCellChanged=function(e,n,t){var a=this.getTerminal(e,t);return null!=n?n.insertEdge(e,t):null!=a&&a.removeEdge(e,t),a},mxGraphModel.prototype.getEdgeCount=function(e){return null!=e?e.getEdgeCount():0},mxGraphModel.prototype.getEdgeAt=function(e,n){return null!=e?e.getEdgeAt(n):null},mxGraphModel.prototype.getDirectedEdgeCount=function(e,n,t){for(var a=0,i=this.getEdgeCount(e),s=0;s<i;s++){var o=this.getEdgeAt(e,s);o!=t&&this.getTerminal(o,n)==e&&a++}return a},mxGraphModel.prototype.getConnections=function(e){return this.getEdges(e,!0,!0,!1)},mxGraphModel.prototype.getIncomingEdges=function(e){return this.getEdges(e,!0,!1,!1)},mxGraphModel.prototype.getOutgoingEdges=function(e){return this.getEdges(e,!1,!0,!1)},mxGraphModel.prototype.getEdges=function(e,n,t,a){n=null==n||n,t=null==t||t,a=null==a||a;for(var i=this.getEdgeCount(e),s=[],o=0;o<i;o++){var r=this.getEdgeAt(e,o),l=this.getTerminal(r,!0),d=this.getTerminal(r,!1);(a&&l==d||l!=d&&(n&&d==e||t&&l==e))&&s.push(r)}return s},mxGraphModel.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;var a=this.getEdgeCount(e),i=this.getEdgeCount(n),s=e,o=a;for(i<a&&(o=i,s=n),a=[],i=0;i<o;i++){var r=this.getEdgeAt(s,i),l=this.getTerminal(r,!0),d=this.getTerminal(r,!1);(l==e&&d==n||!t&&(d==e&&l==n))&&a.push(r)}return a},mxGraphModel.prototype.getOpposites=function(e,n,t,a){t=null==t||t,a=null==a||a;var i=[];if(null!=e)for(var s=0;s<e.length;s++){var o=this.getTerminal(e[s],!0),r=this.getTerminal(e[s],!1);o==n&&null!=r&&r!=n&&a?i.push(r):r==n&&null!=o&&o!=n&&t&&i.push(o)}return i},mxGraphModel.prototype.getTopmostCells=function(e){for(var n=[],t=0;t<e.length;t++){for(var a=e[t],i=!0,s=this.getParent(a);null!=s;){if(0<=mxUtils.indexOf(e,s)){i=!1;break}s=this.getParent(s)}i&&n.push(a)}return n},mxGraphModel.prototype.isVertex=function(e){return null!=e&&e.isVertex()},mxGraphModel.prototype.isEdge=function(e){return null!=e&&e.isEdge()},mxGraphModel.prototype.isConnectable=function(e){return null!=e&&e.isConnectable()},mxGraphModel.prototype.getValue=function(e){return null!=e?e.getValue():null},mxGraphModel.prototype.setValue=function(e,n){return this.execute(new mxValueChange(this,e,n)),n},mxGraphModel.prototype.valueForCellChanged=function(e,n){return e.valueChanged(n)},mxGraphModel.prototype.getGeometry=function(e,n){return null!=e?e.getGeometry():null},mxGraphModel.prototype.setGeometry=function(e,n){return n!=this.getGeometry(e)&&this.execute(new mxGeometryChange(this,e,n)),n},mxGraphModel.prototype.geometryForCellChanged=function(e,n){var t=this.getGeometry(e);return e.setGeometry(n),t},mxGraphModel.prototype.getStyle=function(e){return null!=e?e.getStyle():null},mxGraphModel.prototype.setStyle=function(e,n){return n!=this.getStyle(e)&&this.execute(new mxStyleChange(this,e,n)),n},mxGraphModel.prototype.styleForCellChanged=function(e,n){var t=this.getStyle(e);return e.setStyle(n),t},mxGraphModel.prototype.isCollapsed=function(e){return null!=e&&e.isCollapsed()},mxGraphModel.prototype.setCollapsed=function(e,n){return n!=this.isCollapsed(e)&&this.execute(new mxCollapseChange(this,e,n)),n},mxGraphModel.prototype.collapsedStateForCellChanged=function(e,n){var t=this.isCollapsed(e);return e.setCollapsed(n),t},mxGraphModel.prototype.isVisible=function(e){return null!=e&&e.isVisible()},mxGraphModel.prototype.setVisible=function(e,n){return n!=this.isVisible(e)&&this.execute(new mxVisibleChange(this,e,n)),n},mxGraphModel.prototype.visibleStateForCellChanged=function(e,n){var t=this.isVisible(e);return e.setVisible(n),t},mxGraphModel.prototype.execute=function(e){e.execute(),this.beginUpdate(),this.currentEdit.add(e),this.fireEvent(new mxEventObject(mxEvent.EXECUTE,"change",e)),this.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",e)),this.endUpdate()},mxGraphModel.prototype.beginUpdate=function(){this.updateLevel++,this.fireEvent(new mxEventObject(mxEvent.BEGIN_UPDATE)),1==this.updateLevel&&this.fireEvent(new mxEventObject(mxEvent.START_EDIT))},mxGraphModel.prototype.endUpdate=function(){if(this.updateLevel--,0==this.updateLevel&&this.fireEvent(new mxEventObject(mxEvent.END_EDIT)),!this.endingUpdate){this.endingUpdate=0==this.updateLevel,this.fireEvent(new mxEventObject(mxEvent.END_UPDATE,"edit",this.currentEdit));try{if(this.endingUpdate&&!this.currentEdit.isEmpty()){this.fireEvent(new mxEventObject(mxEvent.BEFORE_UNDO,"edit",this.currentEdit));var e=this.currentEdit;this.currentEdit=this.createUndoableEdit(),e.notify(),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",e))}}finally{this.endingUpdate=!1}}},mxGraphModel.prototype.createUndoableEdit=function(){var e=new mxUndoableEdit(this,!0);return e.notify=function(){e.source.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",e,"changes",e.changes)),e.source.fireEvent(new mxEventObject(mxEvent.NOTIFY,"edit",e,"changes",e.changes))},e},mxGraphModel.prototype.mergeChildren=function(e,n,t){t=null==t||t,this.beginUpdate();try{var a={};for(var i in this.mergeChildrenImpl(e,n,t,a),a){var s=a[i],o=this.getTerminal(s,!0);null!=o&&(o=a[mxCellPath.create(o)],this.setTerminal(s,o,!0)),null!=(o=this.getTerminal(s,!1))&&(o=a[mxCellPath.create(o)],this.setTerminal(s,o,!1))}}finally{this.endUpdate()}},mxGraphModel.prototype.mergeChildrenImpl=function(e,n,t,a){this.beginUpdate();try{for(var i=e.getChildCount(),s=0;s<i;s++){var o=e.getChildAt(s);if("function"==typeof o.getId){var r=o.getId(),l=null==r||this.isEdge(o)&&t?null:this.getCell(r);if(null==l){var d=o.clone();d.setId(r),d.setTerminal(o.getTerminal(!0),!0),d.setTerminal(o.getTerminal(!1),!1),l=n.insert(d),this.cellAdded(l)}a[mxCellPath.create(o)]=l,this.mergeChildrenImpl(o,l,t,a)}}}finally{this.endUpdate()}},mxGraphModel.prototype.getParents=function(e){var n=[];if(null!=e)for(var t={},a=0;a<e.length;a++){var i=this.getParent(e[a]);if(null!=i){var s=mxCellPath.create(i);null==t[s]&&(t[s]=i,n.push(i))}}return n},mxGraphModel.prototype.cloneCell=function(e){return null!=e?this.cloneCells([e],!0)[0]:null},mxGraphModel.prototype.cloneCells=function(e,n){for(var t={},a=[],i=0;i<e.length;i++)null!=e[i]?a.push(this.cloneCellImpl(e[i],t,n)):a.push(null);for(i=0;i<a.length;i++)null!=a[i]&&this.restoreClone(a[i],e[i],t);return a},mxGraphModel.prototype.cloneCellImpl=function(e,n,t){var a=this.cellCloned(e);if(n[mxObjectIdentity.get(e)]=a,t){t=this.getChildCount(e);for(var i=0;i<t;i++){var s=this.cloneCellImpl(this.getChildAt(e,i),n,!0);a.insert(s)}}return a},mxGraphModel.prototype.cellCloned=function(e){return e.clone()},mxGraphModel.prototype.restoreClone=function(e,n,t){null!=(a=this.getTerminal(n,!0))&&(null!=(a=t[mxObjectIdentity.get(a)])&&a.insertEdge(e,!0)),null!=(a=this.getTerminal(n,!1))&&(null!=(a=t[mxObjectIdentity.get(a)])&&a.insertEdge(e,!1));for(var a=this.getChildCount(e),i=0;i<a;i++)this.restoreClone(this.getChildAt(e,i),this.getChildAt(n,i),t)},mxRootChange.prototype.execute=function(){this.root=this.previous,this.previous=this.model.rootChanged(this.previous)},mxChildChange.prototype.execute=function(){var e=this.model.getParent(this.child),n=null!=e?e.getIndex(this.child):0;null==this.previous&&this.connect(this.child,!1),e=this.model.parentForCellChanged(this.child,this.previous,this.previousIndex),null!=this.previous&&this.connect(this.child,!0),this.parent=this.previous,this.previous=e,this.index=this.previousIndex,this.previousIndex=n},mxChildChange.prototype.connect=function(e,n){n=null==n||n;var t=e.getTerminal(!0),a=e.getTerminal(!1);for(null!=t&&(n?this.model.terminalForCellChanged(e,t,!0):this.model.terminalForCellChanged(e,null,!0)),null!=a&&(n?this.model.terminalForCellChanged(e,a,!1):this.model.terminalForCellChanged(e,null,!1)),e.setTerminal(t,!0),e.setTerminal(a,!1),t=this.model.getChildCount(e),a=0;a<t;a++)this.connect(this.model.getChildAt(e,a),n)},mxTerminalChange.prototype.execute=function(){this.terminal=this.previous,this.previous=this.model.terminalForCellChanged(this.cell,this.previous,this.source)},mxValueChange.prototype.execute=function(){this.value=this.previous,this.previous=this.model.valueForCellChanged(this.cell,this.previous)},mxStyleChange.prototype.execute=function(){this.style=this.previous,this.previous=this.model.styleForCellChanged(this.cell,this.previous)},mxGeometryChange.prototype.execute=function(){this.geometry=this.previous,this.previous=this.model.geometryForCellChanged(this.cell,this.previous)},mxCollapseChange.prototype.execute=function(){this.collapsed=this.previous,this.previous=this.model.collapsedStateForCellChanged(this.cell,this.previous)},mxVisibleChange.prototype.execute=function(){this.visible=this.previous,this.previous=this.model.visibleStateForCellChanged(this.cell,this.previous)},mxCellAttributeChange.prototype.execute=function(){var e=this.cell.getAttribute(this.attribute);null==this.previous?this.cell.value.removeAttribute(this.attribute):this.cell.setAttribute(this.attribute,this.previous),this.previous=e},mxCell.prototype.id=null,mxCell.prototype.value=null,mxCell.prototype.geometry=null,mxCell.prototype.style=null,mxCell.prototype.vertex=!1,mxCell.prototype.edge=!1,mxCell.prototype.connectable=!0,mxCell.prototype.visible=!0,mxCell.prototype.collapsed=!1,mxCell.prototype.parent=null,mxCell.prototype.source=null,mxCell.prototype.target=null,mxCell.prototype.children=null,mxCell.prototype.edges=null,mxCell.prototype.mxTransient="id value parent source target children edges".split(" "),mxCell.prototype.getId=function(){return this.id},mxCell.prototype.setId=function(e){this.id=e},mxCell.prototype.getValue=function(){return this.value},mxCell.prototype.setValue=function(e){this.value=e},mxCell.prototype.valueChanged=function(e){var n=this.getValue();return this.setValue(e),n},mxCell.prototype.getGeometry=function(){return this.geometry},mxCell.prototype.setGeometry=function(e){this.geometry=e},mxCell.prototype.getStyle=function(){return this.style},mxCell.prototype.setStyle=function(e){this.style=e},mxCell.prototype.isVertex=function(){return this.vertex},mxCell.prototype.setVertex=function(e){this.vertex=e},mxCell.prototype.isEdge=function(){return this.edge},mxCell.prototype.setEdge=function(e){this.edge=e},mxCell.prototype.isConnectable=function(){return this.connectable},mxCell.prototype.setConnectable=function(e){this.connectable=e},mxCell.prototype.isVisible=function(){return this.visible},mxCell.prototype.setVisible=function(e){this.visible=e},mxCell.prototype.isCollapsed=function(){return this.collapsed},mxCell.prototype.setCollapsed=function(e){this.collapsed=e},mxCell.prototype.getParent=function(){return this.parent},mxCell.prototype.setParent=function(e){this.parent=e},mxCell.prototype.getTerminal=function(e){return e?this.source:this.target},mxCell.prototype.setTerminal=function(e,n){return n?this.source=e:this.target=e,e},mxCell.prototype.getChildCount=function(){return null==this.children?0:this.children.length},mxCell.prototype.getIndex=function(e){return mxUtils.indexOf(this.children,e)},mxCell.prototype.getChildAt=function(e){return null==this.children?null:this.children[e]},mxCell.prototype.insert=function(e,n){return null!=e&&(null==n&&(n=this.getChildCount(),e.getParent()==this&&n--),e.removeFromParent(),e.setParent(this),null==this.children?(this.children=[],this.children.push(e)):this.children.splice(n,0,e)),e},mxCell.prototype.remove=function(e){var n=null;return null!=this.children&&0<=e&&(null!=(n=this.getChildAt(e))&&(this.children.splice(e,1),n.setParent(null))),n},mxCell.prototype.removeFromParent=function(){if(null!=this.parent){var e=this.parent.getIndex(this);this.parent.remove(e)}},mxCell.prototype.getEdgeCount=function(){return null==this.edges?0:this.edges.length},mxCell.prototype.getEdgeIndex=function(e){return mxUtils.indexOf(this.edges,e)},mxCell.prototype.getEdgeAt=function(e){return null==this.edges?null:this.edges[e]},mxCell.prototype.insertEdge=function(e,n){return null!=e&&(e.removeFromTerminal(n),e.setTerminal(this,n),null==this.edges||e.getTerminal(!n)!=this||mxUtils.indexOf(this.edges,e)<0)&&(null==this.edges&&(this.edges=[]),this.edges.push(e)),e},mxCell.prototype.removeEdge=function(e,n){if(null!=e){if(e.getTerminal(!n)!=this&&null!=this.edges){var t=this.getEdgeIndex(e);0<=t&&this.edges.splice(t,1)}e.setTerminal(null,n)}return e},mxCell.prototype.removeFromTerminal=function(e){var n=this.getTerminal(e);null!=n&&n.removeEdge(this,e)},mxCell.prototype.getAttribute=function(e,n){var t=this.getValue();return(null!=t&&t.nodeType==mxConstants.NODETYPE_ELEMENT?t.getAttribute(e):null)||n},mxCell.prototype.setAttribute=function(e,n){var t=this.getValue();null!=t&&t.nodeType==mxConstants.NODETYPE_ELEMENT&&t.setAttribute(e,n)},mxCell.prototype.clone=function(){var e=mxUtils.clone(this,this.mxTransient);return e.setValue(this.cloneValue()),e},mxCell.prototype.cloneValue=function(){var e=this.getValue();return null!=e&&("function"==typeof e.clone?e=e.clone():isNaN(e.nodeType)||(e=e.cloneNode(!0))),e},mxGeometry.prototype=new mxRectangle,mxGeometry.prototype.constructor=mxGeometry,mxGeometry.prototype.TRANSLATE_CONTROL_POINTS=!0,mxGeometry.prototype.alternateBounds=null,mxGeometry.prototype.sourcePoint=null,mxGeometry.prototype.targetPoint=null,mxGeometry.prototype.points=null,mxGeometry.prototype.offset=null,mxGeometry.prototype.relative=!1,mxGeometry.prototype.swap=function(){if(null!=this.alternateBounds){var e=new mxRectangle(this.x,this.y,this.width,this.height);this.x=this.alternateBounds.x,this.y=this.alternateBounds.y,this.width=this.alternateBounds.width,this.height=this.alternateBounds.height,this.alternateBounds=e}},mxGeometry.prototype.getTerminalPoint=function(e){return e?this.sourcePoint:this.targetPoint},mxGeometry.prototype.setTerminalPoint=function(e,n){return n?this.sourcePoint=e:this.targetPoint=e,e},mxGeometry.prototype.translate=function(e,n){if(this.clone(),this.relative||(this.x+=e,this.y+=n),null!=this.sourcePoint&&(this.sourcePoint.x+=e,this.sourcePoint.y+=n),null!=this.targetPoint&&(this.targetPoint.x+=e,this.targetPoint.y+=n),this.TRANSLATE_CONTROL_POINTS&&null!=this.points)for(var t=this.points.length,a=0;a<t;a++){var i=this.points[a];null!=i&&(i.x+=e,i.y+=n)}};var mxCellPath={PATH_SEPARATOR:".",create:function(e){var n="";if(null!=e)for(var t=e.getParent();null!=t;)n=t.getIndex(e)+mxCellPath.PATH_SEPARATOR+n,t=(e=t).getParent();return 1<(e=n.length)&&(n=n.substring(0,e-1)),n},getParentPath:function(e){if(null!=e){var n=e.lastIndexOf(mxCellPath.PATH_SEPARATOR);if(0<=n)return e.substring(0,n);if(0<e.length)return""}return null},resolve:function(e,n){var t=e;if(null!=n)for(var a=n.split(mxCellPath.PATH_SEPARATOR),i=0;i<a.length;i++)t=t.getChildAt(parseInt(a[i]));return t},compare:function(e,n){for(var t=Math.min(e.length,n.length),a=0,i=0;i<t;i++)if(e[i]!=n[i]){a=0==e[i].length||0==n[i].length?e[i]==n[i]?0:e[i]>n[i]?1:-1:(t=parseInt(e[i]))==(i=parseInt(n[i]))?0:i<t?1:-1;break}return 0==a&&((t=e.length)!=(i=n.length)&&(a=i<t?1:-1)),a}},mxPerimeter={RectanglePerimeter:function(e,n,t,a){n=e.getCenterX();var i=e.getCenterY(),s=Math.atan2(t.y-i,t.x-n),o=new mxPoint(0,0),r=Math.PI,l=Math.PI/2-s,d=Math.atan2(e.height,e.width);return s<-r+d||r-d<s?(o.x=e.x,o.y=i-e.width*Math.tan(s)/2):s<-d?(o.y=e.y,o.x=n-e.height*Math.tan(l)/2):s<d?(o.x=e.x+e.width,o.y=i+e.width*Math.tan(s)/2):(o.y=e.y+e.height,o.x=n+e.height*Math.tan(l)/2),a&&(t.x>=e.x&&t.x<=e.x+e.width?o.x=t.x:t.y>=e.y&&t.y<=e.y+e.height&&(o.y=t.y),t.x<e.x?o.x=e.x:t.x>e.x+e.width&&(o.x=e.x+e.width),t.y<e.y?o.y=e.y:t.y>e.y+e.height&&(o.y=e.y+e.height)),o},EllipsePerimeter:function(e,n,t,a){var i=e.x,s=e.y,o=e.width/2,r=e.height/2,l=i+o,d=s+r;n=t.x,t=t.y;var c=parseInt(n-l),m=parseInt(t-d);if(0==c&&0!=m)return new mxPoint(l,d+r*m/Math.abs(m));if(0==c&&0==m)return new mxPoint(n,t);if(a){if(s<=t&&t<=s+e.height)return e=t-d,e=Math.sqrt(o*o*(1-e*e/(r*r)))||0,n<=i&&(e=-e),new mxPoint(l+e,t);if(i<=n&&n<=i+e.width)return e=n-l,e=Math.sqrt(r*r*(1-e*e/(o*o)))||0,t<=s&&(e=-e),new mxPoint(n,d+e)}return d-=(i=m/c)*l,l=i*(o=(-(e=-2*l*(s=o*o*i*i+r*r))+(r=Math.sqrt(e*e-4*s*(o*o*i*i*l*l+r*r*l*l-o*o*r*r))))/(2*s))+d,d=i*(r=(-e-r)/(2*s))+d,i=Math.sqrt(Math.pow(o-n,2)+Math.pow(l-t,2)),n=Math.sqrt(Math.pow(r-n,2)+Math.pow(d-t,2)),s=t=0,s=i<n?(t=o,l):(t=r,d),new mxPoint(t,s)},RhombusPerimeter:function(e,n,t,a){n=e.x;var i=e.y,s=e.width,o=n+s/2,r=i+(e=e.height)/2,l=t.x;if(t=t.y,o==l)return new mxPoint(o,t<r?i:i+e);if(r==t)return new mxPoint(l<o?n:n+s,r);var d=o,c=r;return a&&(n<=l&&l<=n+s?d=l:i<=t&&t<=i+e&&(c=t)),l<o?t<r?mxUtils.intersection(l,t,d,c,o,i,n,r):mxUtils.intersection(l,t,d,c,o,i+e,n,r):t<r?mxUtils.intersection(l,t,d,c,o,i,n+s,r):mxUtils.intersection(l,t,d,c,o,i+e,n+s,r)},TrianglePerimeter:function(e,n,t,a){var i=(n=null!=n?n.style[mxConstants.STYLE_DIRECTION]:null)==mxConstants.DIRECTION_NORTH||n==mxConstants.DIRECTION_SOUTH,s=e.x,o=e.y,r=e.width,l=s+r/2,d=o+(e=e.height)/2,c=new mxPoint(s,o),m=new mxPoint(s+r,d),u=new mxPoint(s,o+e);n==mxConstants.DIRECTION_NORTH?(c=u,m=new mxPoint(l,o),u=new mxPoint(s+r,o+e)):n==mxConstants.DIRECTION_SOUTH?(m=new mxPoint(l,o+e),u=new mxPoint(s+r,o)):n==mxConstants.DIRECTION_WEST&&(c=new mxPoint(s+r,o),m=new mxPoint(s,d),u=new mxPoint(s+r,o+e));var p=t.x-l,g=t.y-d,v=(p=i?Math.atan2(p,g):Math.atan2(g,p),i?Math.atan2(r,e):Math.atan2(e,r));g=!1,g=n==mxConstants.DIRECTION_NORTH||n==mxConstants.DIRECTION_WEST?-v<p&&p<v:p<-Math.PI+v||p>Math.PI-v,v=null;return null==(v=g?a&&(i&&t.x>=c.x&&t.x<=u.x||!i&&t.y>=c.y&&t.y<=u.y)?i?new mxPoint(t.x,c.y):new mxPoint(c.x,t.y):n==mxConstants.DIRECTION_NORTH?new mxPoint(s+r/2+e*Math.tan(p)/2,o+e):n==mxConstants.DIRECTION_SOUTH?new mxPoint(s+r/2-e*Math.tan(p)/2,o):n==mxConstants.DIRECTION_WEST?new mxPoint(s+r,o+e/2+r*Math.tan(p)/2):new mxPoint(s,o+e/2-r*Math.tan(p)/2):(a&&(a=new mxPoint(l,d),t.y>=o&&t.y<=o+e?(a.x=i?l:n==mxConstants.DIRECTION_WEST?s+r:s,a.y=t.y):t.x>=s&&t.x<=s+r&&(a.x=t.x,a.y=i?n==mxConstants.DIRECTION_NORTH?o+e:o:d),l=a.x,d=a.y),i&&t.x<=s+r/2||!i&&t.y<=o+e/2?mxUtils.intersection(t.x,t.y,l,d,c.x,c.y,m.x,m.y):mxUtils.intersection(t.x,t.y,l,d,m.x,m.y,u.x,u.y)))&&(v=new mxPoint(l,d)),v}};function mxPrintPreview(e,n,t,a,i,s,o,r,l){this.graph=e,this.scale=null!=n?n:1/e.pageScale,this.border=null!=a?a:0,this.pageFormat=null!=t?t:e.pageFormat,this.title=null!=r?r:"Printer-friendly version",this.x0=null!=i?i:0,this.y0=null!=s?s:0,this.borderColor=o,this.pageSelector=null==l||l}function mxStylesheet(){this.styles={},this.putDefaultVertexStyle(this.createDefaultVertexStyle()),this.putDefaultEdgeStyle(this.createDefaultEdgeStyle())}function mxCellState(e,n,t){this.view=e,this.cell=n,this.style=t,this.origin=new mxPoint,this.absoluteOffset=new mxPoint}function mxGraphSelectionModel(e){this.graph=e,this.cells=[]}function mxSelectionChange(e,n,t){this.selectionModel=e,this.added=null!=n?n.slice():null,this.removed=null!=t?t.slice():null}function mxCellEditor(e){this.graph=e}function mxCellRenderer(){}mxPrintPreview.prototype.graph=null,mxPrintPreview.prototype.pageFormat=null,mxPrintPreview.prototype.scale=null,mxPrintPreview.prototype.border=0,mxPrintPreview.prototype.x0=0,mxPrintPreview.prototype.y0=0,mxPrintPreview.prototype.autoOrigin=!0,mxPrintPreview.prototype.printOverlays=!1,mxPrintPreview.prototype.borderColor=null,mxPrintPreview.prototype.title=null,mxPrintPreview.prototype.pageSelector=null,mxPrintPreview.prototype.wnd=null,mxPrintPreview.prototype.pageCount=0,mxPrintPreview.prototype.getWindow=function(){return this.wnd},mxPrintPreview.prototype.getDoctype=function(){var e="";return 8==document.documentMode&&(e='<meta http-equiv="X-UA-Compatible" content="IE=8">'),e},mxPrintPreview.prototype.open=function(e){var n=this.graph.cellRenderer.initializeOverlay,t=null;try{if(this.printOverlays&&(this.graph.cellRenderer.initializeOverlay=function(e,n){n.init(e.view.getDrawPane())}),null==this.wnd){this.wnd=window.open();var a=this.wnd.document,i=this.getDoctype();null!=i&&0<i.length&&a.writeln(i),a.writeln("<html>"),a.writeln("<head>"),this.writeHead(a,e),a.writeln("</head>"),a.writeln('<body class="mxPage">'),mxClient.link("stylesheet",mxClient.basePath+"/css/common.css",a),mxClient.IS_VML&&(a.namespaces.add("v","urn:schemas-microsoft-com:vml"),a.namespaces.add("o","urn:schemas-microsoft-com:office:office"),a.createStyleSheet().cssText="v\\:*{behavior:url(#default#VML)}o\\:*{behavior:url(#default#VML)}",mxClient.link("stylesheet",mxClient.basePath+"/css/explorer.css",a));var s=this.graph.getGraphBounds().clone(),o=this.graph.getView().getScale(),r=o/this.scale,l=this.graph.getView().getTranslate();this.autoOrigin||(this.x0=-l.x*this.scale,this.y0=-l.y*this.scale,s.width+=s.x,s.height+=s.y,s.x=0,this.border=s.y=0),s.width/=r,s.height/=r;var d=this.pageFormat.width-2*this.border,c=this.pageFormat.height-2*this.border,m=Math.max(1,Math.ceil((s.width+this.x0)/d)),u=Math.max(1,Math.ceil((s.height+this.y0)/c));this.pageCount=m*u;var p=mxUtils.bind(this,function(){if(this.pageSelector&&(1<u||1<m)){var e=this.createPageSelector(u,m);if(a.body.appendChild(e),mxClient.IS_IE){e.style.position="absolute";var n=function(){e.style.top=a.body.scrollTop+10+"px"};mxEvent.addListener(this.wnd,"scroll",function(e){n()}),mxEvent.addListener(this.wnd,"resize",function(e){n()})}}});if(e=function(e,n){if(null!=this.borderColor&&(e.style.borderColor=this.borderColor,e.style.borderStyle="solid",e.style.borderWidth="1px"),e.style.background="white",n&&(e.style.pageBreakAfter="always"),mxClient.IS_IE?(a.writeln(e.outerHTML),e.parentNode.removeChild(e)):(e.parentNode.removeChild(e),a.body.appendChild(e)),n){var t=a.createElement("hr");t.className="mxPageBreak",a.body.appendChild(t)}},null!=(f=this.getCoverPages(this.pageFormat.width,this.pageFormat.height)))for(var g=0;g<f.length;g++)e(f[g],!0);var v=this.getAppendices(this.pageFormat.width,this.pageFormat.height);for(g=0;g<u;g++)for(var h=g*c/this.scale-this.y0/this.scale+(s.y-l.y*o)/o,f=0;f<m;f++){if(null==this.wnd)return null;var b=f*d/this.scale-this.x0/this.scale+(s.x-l.x*o)/o,A=g*m+f+1;(t=this.renderPage(this.pageFormat.width,this.pageFormat.height,mxUtils.bind(this,function(e){this.addGraphFragment(-b,-h,this.scale,A,e)}))).setAttribute("id","mxPage-"+A),e(t,null!=v||g<u-1||f<m-1)}if(null!=v)for(g=0;g<v.length;g++)e(v[g],g<v.length);a.writeln("</body>"),a.writeln("</html>"),a.close(),p(),mxEvent.release(a.body)}this.wnd.focus()}catch(e){null!=t&&null!=t.parentNode&&t.parentNode.removeChild(t)}finally{this.graph.cellRenderer.initializeOverlay=n}return this.wnd},mxPrintPreview.prototype.writeHead=function(e,n){null!=this.title&&e.writeln("<title>"+this.title+"</title>"),e.writeln('<style type="text/css">'),e.writeln("@media print {"),e.writeln("  table.mxPageSelector { display: none; }"),e.writeln("  hr.mxPageBreak { display: none; }"),e.writeln("}"),e.writeln("@media screen {"),e.writeln("  table.mxPageSelector { position: fixed; right: 10px; top: 10px;font-family: Arial; font-size:10pt; border: solid 1px darkgray;background: white; border-collapse:collapse; }"),e.writeln("  table.mxPageSelector td { border: solid 1px gray; padding:4px; }"),e.writeln("  body.mxPage { background: gray; }"),e.writeln("}"),null!=n&&e.writeln(n),e.writeln("</style>")},mxPrintPreview.prototype.createPageSelector=function(e,n){var t=this.wnd.document,a=t.createElement("table");a.className="mxPageSelector",a.setAttribute("border","0");for(var i=t.createElement("tbody"),s=0;s<e;s++){for(var o=t.createElement("tr"),r=0;r<n;r++){var l=s*n+r+1,d=t.createElement("td");if(!mxClient.IS_NS||mxClient.IS_SF||mxClient.IS_GC){var c=t.createElement("a");c.setAttribute("href","#mxPage-"+l),mxUtils.write(c,l,t),d.appendChild(c)}else mxUtils.write(d,l,t);o.appendChild(d)}i.appendChild(o)}return a.appendChild(i),a},mxPrintPreview.prototype.renderPage=function(e,n,t){var a=document.createElement("div");try{a.style.width=e+"px",a.style.height=n+"px",a.style.overflow="hidden",a.style.pageBreakInside="avoid",a.style.position="relative";var i=document.createElement("div");i.style.top=this.border+"px",i.style.left=this.border+"px",i.style.width=e-2*this.border+"px",i.style.height=n-2*this.border+"px",i.style.overflow="hidden",this.graph.dialect==mxConstants.DIALECT_VML&&(i.style.position="absolute"),a.appendChild(i),document.body.appendChild(a),t(i)}catch(e){throw a.parentNode.removeChild(a),e}return a},mxPrintPreview.prototype.addGraphFragment=function(e,n,t,a,i){a=this.graph.getView();var s=this.graph.container;this.graph.container=i;var o=a.getCanvas(),r=a.getBackgroundPane(),l=a.getDrawPane(),d=a.getOverlayPane();this.graph.dialect==mxConstants.DIALECT_SVG?a.createSvg():this.graph.dialect==mxConstants.DIALECT_VML?a.createVml():a.createHtml();var c=a.isEventsEnabled();a.setEventsEnabled(!1);var m=this.graph.isEnabled();this.graph.setEnabled(!1);var u=a.getTranslate();a.translate=new mxPoint(e,n),e=null;try{var p=[this.graph.getModel().getRoot()];e=new mxTemporaryCellStates(a,t,p)}finally{if(mxClient.IS_IE)a.overlayPane.innerHTML="";else for(t=i.firstChild;null!=t;)p=t.nextSibling,"svg"==(n=t.nodeName.toLowerCase())?(t.setAttribute("width",parseInt(i.style.width)),t.setAttribute("height",parseInt(i.style.height))):"default"!=t.style.cursor&&"table"!=n&&t.parentNode.removeChild(t),t=p;a.overlayPane.parentNode.removeChild(a.overlayPane),this.graph.setEnabled(m),this.graph.container=s,a.canvas=o,a.backgroundPane=r,a.drawPane=l,a.overlayPane=d,a.translate=u,e.destroy(),a.setEventsEnabled(c)}},mxPrintPreview.prototype.getCoverPages=function(){return null},mxPrintPreview.prototype.getAppendices=function(){return null},mxPrintPreview.prototype.print=function(){var e=this.open();null!=e&&e.print()},mxPrintPreview.prototype.close=function(){null!=this.wnd&&(this.wnd.close(),this.wnd=null)},mxStylesheet.prototype.createDefaultVertexStyle=function(){var e={};return e[mxConstants.STYLE_SHAPE]=mxConstants.SHAPE_RECTANGLE,e[mxConstants.STYLE_PERIMETER]=mxPerimeter.RectanglePerimeter,e[mxConstants.STYLE_VERTICAL_ALIGN]=mxConstants.ALIGN_MIDDLE,e[mxConstants.STYLE_ALIGN]=mxConstants.ALIGN_CENTER,e[mxConstants.STYLE_FILLCOLOR]="#C3D9FF",e[mxConstants.STYLE_STROKECOLOR]="#6482B9",e[mxConstants.STYLE_FONTCOLOR]="#774400",e},mxStylesheet.prototype.createDefaultEdgeStyle=function(){var e={};return e[mxConstants.STYLE_SHAPE]=mxConstants.SHAPE_CONNECTOR,e[mxConstants.STYLE_ENDARROW]=mxConstants.ARROW_CLASSIC,e[mxConstants.STYLE_VERTICAL_ALIGN]=mxConstants.ALIGN_MIDDLE,e[mxConstants.STYLE_ALIGN]=mxConstants.ALIGN_CENTER,e[mxConstants.STYLE_STROKECOLOR]="#6482B9",e[mxConstants.STYLE_FONTCOLOR]="#446299",e},mxStylesheet.prototype.putDefaultVertexStyle=function(e){this.putCellStyle("defaultVertex",e)},mxStylesheet.prototype.putDefaultEdgeStyle=function(e){this.putCellStyle("defaultEdge",e)},mxStylesheet.prototype.getDefaultVertexStyle=function(){return this.styles.defaultVertex},mxStylesheet.prototype.getDefaultEdgeStyle=function(){return this.styles.defaultEdge},mxStylesheet.prototype.putCellStyle=function(e,n){this.styles[e]=n},mxStylesheet.prototype.getCellStyle=function(e,n){var t=n;if(null!=e&&0<e.length)for(var a=e.split(";"),i=(t=null!=t&&";"!=e.charAt(0)?mxUtils.clone(t):{},0);i<a.length;i++){var s=(o=a[i]).indexOf("=");if(0<=s){var o,r=o.substring(0,s);(o=o.substring(s+1))==mxConstants.NONE?delete t[r]:mxUtils.isNumeric(o)?t[r]=parseFloat(o):t[r]=o}else if(null!=(o=this.styles[o]))for(r in o)t[r]=o[r]}return t},mxCellState.prototype=new mxRectangle,mxCellState.prototype.constructor=mxCellState,mxCellState.prototype.view=null,mxCellState.prototype.cell=null,mxCellState.prototype.style=null,mxCellState.prototype.invalid=!0,mxCellState.prototype.invalidOrder=!1,mxCellState.prototype.orderChanged=!1,mxCellState.prototype.origin=null,mxCellState.prototype.absolutePoints=null,mxCellState.prototype.absoluteOffset=null,mxCellState.prototype.visibleSourceState=null,mxCellState.prototype.visibleTargetState=null,mxCellState.prototype.terminalDistance=0,mxCellState.prototype.length=0,mxCellState.prototype.segments=null,mxCellState.prototype.shape=null,mxCellState.prototype.text=null,mxCellState.prototype.getPerimeterBounds=function(e,n){if(e=e||0,n=null!=n?n:new mxRectangle(this.x,this.y,this.width,this.height),null!=this.shape&&null!=this.shape.stencil){var t=this.shape.stencil.computeAspect(this.style,n.x,n.y,n.width,n.height);n.x=t.x,n.y=t.y,n.width=this.shape.stencil.w0*t.width,n.height=this.shape.stencil.h0*t.height}return 0!=e&&n.grow(e),n},mxCellState.prototype.setAbsoluteTerminalPoint=function(e,n){n?(null==this.absolutePoints&&(this.absolutePoints=[]),0==this.absolutePoints.length?this.absolutePoints.push(e):this.absolutePoints[0]=e):null==this.absolutePoints?(this.absolutePoints=[],this.absolutePoints.push(null),this.absolutePoints.push(e)):1==this.absolutePoints.length?this.absolutePoints.push(e):this.absolutePoints[this.absolutePoints.length-1]=e},mxCellState.prototype.setCursor=function(e){null!=this.shape&&this.shape.setCursor(e),null!=this.text&&this.text.setCursor(e)},mxCellState.prototype.getVisibleTerminal=function(e){return null!=(e=this.getVisibleTerminalState(e))?e.cell:null},mxCellState.prototype.getVisibleTerminalState=function(e){return e?this.visibleSourceState:this.visibleTargetState},mxCellState.prototype.setVisibleTerminalState=function(e,n){n?this.visibleSourceState=e:this.visibleTargetState=e},mxCellState.prototype.destroy=function(){this.view.graph.cellRenderer.destroy(this)},mxCellState.prototype.clone=function(){var e=new mxCellState(this.view,this.cell,this.style);if(null!=this.absolutePoints){e.absolutePoints=[];for(var n=0;n<this.absolutePoints.length;n++)e.absolutePoints[n]=this.absolutePoints[n].clone()}return null!=this.origin&&(e.origin=this.origin.clone()),null!=this.absoluteOffset&&(e.absoluteOffset=this.absoluteOffset.clone()),null!=this.boundingBox&&(e.boundingBox=this.boundingBox.clone()),e.terminalDistance=this.terminalDistance,e.segments=this.segments,e.length=this.length,e.x=this.x,e.y=this.y,e.width=this.width,e.height=this.height,e},mxGraphSelectionModel.prototype=new mxEventSource,mxGraphSelectionModel.prototype.constructor=mxGraphSelectionModel,mxGraphSelectionModel.prototype.doneResource="none"!=mxClient.language?"done":"",mxGraphSelectionModel.prototype.updatingSelectionResource="none"!=mxClient.language?"updatingSelection":"",mxGraphSelectionModel.prototype.graph=null,mxGraphSelectionModel.prototype.singleSelection=!1,mxGraphSelectionModel.prototype.isSingleSelection=function(){return this.singleSelection},mxGraphSelectionModel.prototype.setSingleSelection=function(e){this.singleSelection=e},mxGraphSelectionModel.prototype.isSelected=function(e){return null!=e&&0<=mxUtils.indexOf(this.cells,e)},mxGraphSelectionModel.prototype.isEmpty=function(){return 0==this.cells.length},mxGraphSelectionModel.prototype.clear=function(){this.changeSelection(null,this.cells)},mxGraphSelectionModel.prototype.setCell=function(e){null!=e&&this.setCells([e])},mxGraphSelectionModel.prototype.setCells=function(e){if(null!=e){this.singleSelection&&(e=[this.getFirstSelectableCell(e)]);for(var n=[],t=0;t<e.length;t++)this.graph.isCellSelectable(e[t])&&n.push(e[t]);this.changeSelection(n,this.cells)}},mxGraphSelectionModel.prototype.getFirstSelectableCell=function(e){if(null!=e)for(var n=0;n<e.length;n++)if(this.graph.isCellSelectable(e[n]))return e[n];return null},mxGraphSelectionModel.prototype.addCell=function(e){null!=e&&this.addCells([e])},mxGraphSelectionModel.prototype.addCells=function(e){if(null!=e){var n=null;this.singleSelection&&(n=this.cells,e=[this.getFirstSelectableCell(e)]);for(var t=[],a=0;a<e.length;a++)!this.isSelected(e[a])&&this.graph.isCellSelectable(e[a])&&t.push(e[a]);this.changeSelection(t,n)}},mxGraphSelectionModel.prototype.removeCell=function(e){null!=e&&this.removeCells([e])},mxGraphSelectionModel.prototype.removeCells=function(e){if(null!=e){for(var n=[],t=0;t<e.length;t++)this.isSelected(e[t])&&n.push(e[t]);this.changeSelection(null,n)}},mxGraphSelectionModel.prototype.changeSelection=function(e,n){if(null!=e&&0<e.length&&null!=e[0]||null!=n&&0<n.length&&null!=n[0]){var t=new mxSelectionChange(this,e,n);t.execute();var a=new mxUndoableEdit(this,!1);a.add(t),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",a))}},mxGraphSelectionModel.prototype.cellAdded=function(e){null!=e&&!this.isSelected(e)&&this.cells.push(e)},mxGraphSelectionModel.prototype.cellRemoved=function(e){null!=e&&(0<=(e=mxUtils.indexOf(this.cells,e))&&this.cells.splice(e,1))},mxSelectionChange.prototype.execute=function(){var e=mxLog.enter("mxSelectionChange.execute");if(window.status=mxResources.get(this.selectionModel.updatingSelectionResource)||this.selectionModel.updatingSelectionResource,null!=this.removed)for(var n=0;n<this.removed.length;n++)this.selectionModel.cellRemoved(this.removed[n]);if(null!=this.added)for(n=0;n<this.added.length;n++)this.selectionModel.cellAdded(this.added[n]);n=this.added,this.added=this.removed,this.removed=n,window.status=mxResources.get(this.selectionModel.doneResource)||this.selectionModel.doneResource,mxLog.leave("mxSelectionChange.execute",e),this.selectionModel.fireEvent(new mxEventObject(mxEvent.CHANGE,"added",this.added,"removed",this.removed))},mxCellEditor.prototype.graph=null,mxCellEditor.prototype.textarea=null,mxCellEditor.prototype.editingCell=null,mxCellEditor.prototype.trigger=null,mxCellEditor.prototype.modified=!1,mxCellEditor.prototype.autoSize=!0,mxCellEditor.prototype.emptyLabelText="",mxCellEditor.prototype.textNode="",mxCellEditor.prototype.init=function(){this.textarea=document.createElement("textarea"),this.textarea.className="mxCellEditor",this.textarea.style.position="absolute",this.textarea.style.overflow="visible",this.textarea.setAttribute("cols","20"),this.textarea.setAttribute("rows","4"),mxClient.IS_NS&&(this.textarea.style.resize="none"),mxEvent.addListener(this.textarea,"blur",mxUtils.bind(this,function(e){this.focusLost()})),mxEvent.addListener(this.textarea,"keydown",mxUtils.bind(this,function(e){mxEvent.isConsumed(e)||(113==e.keyCode||this.graph.isEnterStopsCellEditing()&&13==e.keyCode&&!mxEvent.isControlDown(e)&&!mxEvent.isShiftDown(e)?(this.graph.stopEditing(!1),mxEvent.consume(e)):27==e.keyCode?(this.graph.stopEditing(!0),mxEvent.consume(e)):(this.clearOnChange&&(this.clearOnChange=!1,this.textarea.value=""),this.setModified(!0)))})),mxEvent.addListener(this.textarea,"keypress",mxUtils.bind(this,function(e){this.autoSize&&!mxEvent.isConsumed(e)&&setTimeout(mxUtils.bind(this,function(){this.resize()}),0)}))},mxCellEditor.prototype.resize=function(){if(null!=this.textDiv){var e=this.graph.getView().getState(this.editingCell),n=this.graph.isLabelClipped(e.cell),t=this.graph.isWrapping(e.cell);if(this.graph.getModel().isEdge(e.cell))this.bounds.x=e.absoluteOffset.x,this.bounds.y=e.absoluteOffset.y,this.bounds.width=0,this.bounds.height=0;else if(null!=this.bounds){this.bounds.x=e.x,this.bounds.y=e.y,this.bounds.width=e.width,this.bounds.height=e.height,(a=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER))==mxConstants.ALIGN_LEFT?this.bounds.x-=e.width:a==mxConstants.ALIGN_RIGHT&&(this.bounds.x+=e.width),(a=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?this.bounds.y-=e.height:a==mxConstants.ALIGN_BOTTOM&&(this.bounds.y+=e.height)}"\n"!=(a=this.textarea.value).charAt(a.length-1)&&""!=a||(a+="&nbsp;"),a=mxUtils.htmlEntities(a,!1),t?(this.textDiv.style.whiteSpace="normal",this.textDiv.style.width=this.bounds.width+"px"):a=a.replace(/ /g,"&nbsp;"),a=a.replace(/\n/g,"<br/>"),this.textDiv.innerHTML=a;var a=this.textDiv.offsetWidth+30,i=this.textDiv.offsetHeight+16;a=Math.max(a,40),i=Math.max(i,20);n&&(a=Math.min(this.bounds.width-4,a),i=Math.min(this.bounds.height,i));var s=null!=e.text?e.text.margin:null;null==s&&(s=mxUtils.getValue(e.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER),e=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),s=mxUtils.getAlignmentAsPoint(s,e)),null!=s&&(!n&&t||(this.textarea.style.left=Math.max(0,Math.round(this.bounds.x-s.x*this.bounds.width+s.x*a)-3)+"px"),this.textarea.style.top=Math.max(0,Math.round(this.bounds.y-s.y*this.bounds.height+s.y*i)+4)+"px"),!n&&t||(this.textarea.style.width=a+"px"),this.textarea.style.height=i+"px"}},mxCellEditor.prototype.isModified=function(){return this.modified},mxCellEditor.prototype.setModified=function(e){this.modified=e},mxCellEditor.prototype.focusLost=function(){this.stopEditing(!this.graph.isInvokesStopCellEditing())},mxCellEditor.prototype.startEditing=function(e,n){null==this.textarea&&this.init(),this.stopEditing(!0);var t=this.graph.getView().getState(e);if(null!=t){this.editingCell=e,this.trigger=n,(this.textNode=null)!=t.text&&this.isHideLabel(t)&&(this.textNode=t.text.node,this.textNode.style.visibility="hidden");var a=this.graph.getView().scale,i=(a=mxUtils.getValue(t.style,mxConstants.STYLE_FONTSIZE,mxConstants.DEFAULT_FONTSIZE)*a,mxUtils.getValue(t.style,mxConstants.STYLE_FONTFAMILY,mxConstants.DEFAULT_FONTFAMILY)),s=mxUtils.getValue(t.style,mxConstants.STYLE_FONTCOLOR,"black"),o=mxUtils.getValue(t.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT),r=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD,l=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC,d=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE;this.textarea.style.fontSize=Math.round(a)+"px",this.textarea.style.lineHeight=Math.round(a*mxConstants.LINE_HEIGHT)+"px",this.textarea.style.fontFamily=i,this.textarea.style.textAlign=o,this.textarea.style.color=s,this.textarea.style.fontWeight=r?"bold":"normal",this.textarea.style.fontStyle=l?"italic":"",this.textarea.style.textDecoration=d?"underline":"",this.textarea.style.overflow="auto",this.textarea.style.outline="none",this.bounds=a=this.getEditorBounds(t),this.textarea.style.left=a.x+"px",this.textarea.style.top=a.y+"px",this.textarea.style.width=a.width+"px",this.textarea.style.height=a.height+"px",this.textarea.style.zIndex=5,null==(t=this.getInitialValue(t,n))||0==t.length?(t=this.getEmptyLabelText(),this.clearOnChange=!0):this.clearOnChange=!1,this.setModified(!1),this.textarea.value=t,this.graph.container.appendChild(this.textarea),"none"!=this.textarea.style.display&&(this.autoSize&&(this.textDiv=this.createTextDiv(),document.body.appendChild(this.textDiv),this.resize()),this.textarea.focus(),this.textarea.select())}},mxCellEditor.prototype.createTextDiv=function(){var e=document.createElement("div"),n=e.style;return n.position="absolute",n.whiteSpace="nowrap",n.visibility="hidden",n.display=mxClient.IS_QUIRKS?"inline":"inline-block",n.zoom="1",n.verticalAlign="top",n.lineHeight=this.textarea.style.lineHeight,n.fontSize=this.textarea.style.fontSize,n.fontFamily=this.textarea.style.fontFamily,n.fontWeight=this.textarea.style.fontWeight,n.textAlign=this.textarea.style.textAlign,n.fontStyle=this.textarea.style.fontStyle,n.textDecoration=this.textarea.style.textDecoration,e},mxCellEditor.prototype.stopEditing=function(e){null!=this.editingCell&&(null!=this.textNode&&(this.textNode.style.visibility="visible",this.textNode=null),!e&&this.isModified()&&this.graph.labelChanged(this.editingCell,this.getCurrentValue(),this.trigger),null!=this.textDiv&&(document.body.removeChild(this.textDiv),this.textDiv=null),this.bounds=this.trigger=this.editingCell=null,this.textarea.blur(),this.textarea.parentNode.removeChild(this.textarea))},mxCellEditor.prototype.getInitialValue=function(e,n){return this.graph.getEditingValue(e.cell,n)},mxCellEditor.prototype.getCurrentValue=function(){return this.textarea.value.replace(/\r/g,"")},mxCellEditor.prototype.isHideLabel=function(e){return!0},mxCellEditor.prototype.getMinimumSize=function(e){var n=this.graph.getView().scale;return new mxRectangle(0,0,null==e.text?30:e.text.size*n+20,"left"==this.textarea.style.textAlign?120:40)},mxCellEditor.prototype.getEditorBounds=function(e){var n=this.graph.getModel().isEdge(e.cell),t=this.graph.getView().scale,a=(i=this.getMinimumSize(e)).width,i=i.height,s=parseInt(e.style[mxConstants.STYLE_SPACING]||2)*t,o=parseInt(e.style[mxConstants.STYLE_SPACING_TOP]||0)*t+s,r=parseInt(e.style[mxConstants.STYLE_SPACING_RIGHT]||0)*t+s,l=parseInt(e.style[mxConstants.STYLE_SPACING_BOTTOM]||0)*t+s;t=parseInt(e.style[mxConstants.STYLE_SPACING_LEFT]||0)*t+s,r=new mxRectangle(e.x,e.y,Math.max(a,e.width-t-r),Math.max(i,e.height-o-l));return n?(r.x=e.absoluteOffset.x,r.y=e.absoluteOffset.y,null!=e.text&&null!=e.text.boundingBox&&(0<e.text.boundingBox.x&&(r.x=e.text.boundingBox.x),0<e.text.boundingBox.y&&(r.y=e.text.boundingBox.y))):null!=e.text&&null!=e.text.boundingBox&&(r.x=Math.min(r.x,e.text.boundingBox.x),r.y=Math.min(r.y,e.text.boundingBox.y)),r.x+=t,r.y+=o,null!=e.text&&null!=e.text.boundingBox&&(n?(r.width=Math.max(a,e.text.boundingBox.width),r.height=Math.max(i,e.text.boundingBox.height)):(r.width=Math.max(r.width,e.text.boundingBox.width),r.height=Math.max(r.height,e.text.boundingBox.height))),this.graph.getModel().isVertex(e.cell)&&((n=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER))==mxConstants.ALIGN_LEFT?r.x-=e.width:n==mxConstants.ALIGN_RIGHT&&(r.x+=e.width),(n=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?r.y-=e.height:n==mxConstants.ALIGN_BOTTOM&&(r.y+=e.height)),r},mxCellEditor.prototype.getEmptyLabelText=function(e){return this.emptyLabelText},mxCellEditor.prototype.getEditingCell=function(){return this.editingCell},mxCellEditor.prototype.destroy=function(){null!=this.textarea&&(mxEvent.release(this.textarea),null!=this.textarea.parentNode&&this.textarea.parentNode.removeChild(this.textarea),this.textarea=null)},mxCellRenderer.prototype.defaultEdgeShape=mxConnector,mxCellRenderer.prototype.defaultVertexShape=mxRectangleShape,mxCellRenderer.prototype.defaultTextShape=mxText,mxCellRenderer.prototype.legacyControlPosition=!0,mxCellRenderer.prototype.defaultShapes={},mxCellRenderer.registerShape=function(e,n){mxCellRenderer.prototype.defaultShapes[e]=n},mxCellRenderer.registerShape(mxConstants.SHAPE_RECTANGLE,mxRectangleShape),mxCellRenderer.registerShape(mxConstants.SHAPE_ELLIPSE,mxEllipse),mxCellRenderer.registerShape(mxConstants.SHAPE_RHOMBUS,mxRhombus),mxCellRenderer.registerShape(mxConstants.SHAPE_CYLINDER,mxCylinder),mxCellRenderer.registerShape(mxConstants.SHAPE_CONNECTOR,mxConnector),mxCellRenderer.registerShape(mxConstants.SHAPE_ACTOR,mxActor),mxCellRenderer.registerShape(mxConstants.SHAPE_TRIANGLE,mxTriangle),mxCellRenderer.registerShape(mxConstants.SHAPE_HEXAGON,mxHexagon),mxCellRenderer.registerShape(mxConstants.SHAPE_CLOUD,mxCloud),mxCellRenderer.registerShape(mxConstants.SHAPE_LINE,mxLine),mxCellRenderer.registerShape(mxConstants.SHAPE_ARROW,mxArrow),mxCellRenderer.registerShape(mxConstants.SHAPE_DOUBLE_ELLIPSE,mxDoubleEllipse),mxCellRenderer.registerShape(mxConstants.SHAPE_SWIMLANE,mxSwimlane),mxCellRenderer.registerShape(mxConstants.SHAPE_IMAGE,mxImageShape),mxCellRenderer.registerShape(mxConstants.SHAPE_LABEL,mxLabel),mxCellRenderer.prototype.initialize=function(e,n){var t=e.view.graph.getModel();null!=e.view.graph.container&&null==e.shape&&e.cell!=e.view.currentRoot&&(t.isVertex(e.cell)||t.isEdge(e.cell))&&(this.createShape(e),null==e.shape||null!=n&&!n||(this.initializeShape(e),e.view.graph.ordered||t.isEdge(e.cell)?e.invalidOrder=!0:e.view.graph.keepEdgesInForeground&&null!=this.firstEdge&&(this.firstEdge.parentNode==e.shape.node.parentNode?this.insertState(e,this.firstEdge):this.firstEdge=null),e.shape.scale=e.view.scale,this.createCellOverlays(e),this.installListeners(e)))},mxCellRenderer.prototype.initializeShape=function(e){e.shape.init(e.view.getDrawPane())},mxCellRenderer.prototype.getPreviousStateInContainer=function(e,n){for(var t=null,a=e.view.graph,i=a.getModel(),s=e.cell,o=i.getParent(s);null!=o&&null==t;)t=this.findPreviousStateInContainer(a,o,s,n),s=o,o=i.getParent(s);return t},mxCellRenderer.prototype.findPreviousStateInContainer=function(e,n,t,a){var i=null,s=e.getModel();for(t=null!=t?n.getIndex(t)-1:s.getChildCount(n)-1;0<=t&&null==i;t--)i=this.findPreviousStateInContainer(e,s.getChildAt(n,t),null,a);return null!=i||(null==(i=e.view.getState(n))||null!=i.shape&&null!=i.shape.node&&i.shape.node.parentNode==a)||(i=null),i},mxCellRenderer.prototype.order=function(e){var n=e.shape.node.parentNode,t=this.getPreviousStateInContainer(e,n),a=n.firstChild;null!=t&&(a=t.shape.node,null!=t.text&&null!=t.text.node&&t.text.node.parentNode==n&&(a=t.text.node),a=a.nextSibling),this.insertState(e,a)},mxCellRenderer.prototype.orderEdge=function(e){var n=(t=e.view).graph.getModel();if(t.graph.keepEdgesInForeground)null!=this.firstEdge&&null!=this.firstEdge.parentNode&&this.firstEdge.parentNode==e.shape.node.parentNode||(this.firstEdge=e.shape.node);else if(t.graph.keepEdgesInBackground){var t,a=e.shape.node,i=a.parentNode;n=n.getParent(e.cell);null!=(i=null!=(t=t.getState(n))&&null!=t.shape&&null!=t.shape.node?t.shape.node.nextSibling:i.firstChild)&&i!=a&&this.insertState(e,i)}},mxCellRenderer.prototype.insertState=function(e,n){e.shape.node.parentNode.insertBefore(e.shape.node,n),null!=e.text&&null!=e.text.node&&e.text.node.parentNode==e.shape.node.parentNode&&e.shape.node.parentNode.insertBefore(e.text.node,e.shape.node.nextSibling)},mxCellRenderer.prototype.createShape=function(e){if(null!=e.style){var n=mxStencilRegistry.getStencil(e.style[mxConstants.STYLE_SHAPE]);null!=n?e.shape=new mxShape(n):(n=this.getShapeConstructor(e),e.shape=new n),e.shape.points=e.absolutePoints,e.shape.bounds=new mxRectangle(e.x,e.y,e.width,e.height),e.shape.dialect=e.view.graph.dialect,this.configureShape(e)}},mxCellRenderer.prototype.getShape=function(e){return null!=e?mxCellRenderer.prototype.defaultShapes[e]:null},mxCellRenderer.prototype.getShapeConstructor=function(e){var n=this.getShape(e.style[mxConstants.STYLE_SHAPE]);return null==n&&(n=e.view.graph.getModel().isEdge(e.cell)?this.defaultEdgeShape:this.defaultVertexShape),n},mxCellRenderer.prototype.configureShape=function(e){e.shape.apply(e),e.shape.image=e.view.graph.getImage(e),e.shape.indicatorShape=this.getShape(e.view.graph.getIndicatorShape(e)),e.shape.indicatorColor=e.view.graph.getIndicatorColor(e),e.shape.indicatorGradientColor=e.view.graph.getIndicatorGradientColor(e),e.shape.indicatorDirection=e.style[mxConstants.STYLE_INDICATOR_DIRECTION],e.shape.indicatorImage=e.view.graph.getIndicatorImage(e),this.postConfigureShape(e)},mxCellRenderer.prototype.postConfigureShape=function(e){null!=e.shape&&(this.resolveColor(e,"indicatorColor",mxConstants.STYLE_FILLCOLOR),this.resolveColor(e,"indicatorGradientColor",mxConstants.STYLE_GRADIENTCOLOR),this.resolveColor(e,"fill",mxConstants.STYLE_FILLCOLOR),this.resolveColor(e,"stroke",mxConstants.STYLE_STROKECOLOR),this.resolveColor(e,"gradient",mxConstants.STYLE_GRADIENTCOLOR))},mxCellRenderer.prototype.resolveColor=function(e,n,t){var a=e.shape[n],i=e.view.graph,s=null;"inherit"==a?s=i.model.getParent(e.cell):"swimlane"==a?(s=null!=i.model.getTerminal(e.cell,!1)?i.model.getTerminal(e.cell,!1):e.cell,s=i.getSwimlane(s),t=i.swimlaneIndicatorColorAttribute):"indicated"==a&&(e.shape[n]=e.shape.indicatorColor),null!=s&&(a=i.getView().getState(s),(e.shape[n]=null)!=a&&(e.shape[n]=null!=a.shape&&"indicatorColor"!=n?a.shape[n]:a.style[t]))},mxCellRenderer.prototype.getLabelValue=function(e){return e.view.graph.getLabel(e.cell)},mxCellRenderer.prototype.createLabel=function(t,e){var a=t.view.graph;if(a.getModel().isEdge(t.cell),0<t.style[mxConstants.STYLE_FONTSIZE]||null==t.style[mxConstants.STYLE_FONTSIZE]){var n=a.isHtmlLabel(t.cell)||null!=e&&mxUtils.isNode(e);t.text=new this.defaultTextShape(e,new mxRectangle,t.style[mxConstants.STYLE_ALIGN]||mxConstants.ALIGN_CENTER,a.getVerticalAlign(t),t.style[mxConstants.STYLE_FONTCOLOR],t.style[mxConstants.STYLE_FONTFAMILY],t.style[mxConstants.STYLE_FONTSIZE],t.style[mxConstants.STYLE_FONTSTYLE],t.style[mxConstants.STYLE_SPACING],t.style[mxConstants.STYLE_SPACING_TOP],t.style[mxConstants.STYLE_SPACING_RIGHT],t.style[mxConstants.STYLE_SPACING_BOTTOM],t.style[mxConstants.STYLE_SPACING_LEFT],t.style[mxConstants.STYLE_HORIZONTAL],t.style[mxConstants.STYLE_LABEL_BACKGROUNDCOLOR],t.style[mxConstants.STYLE_LABEL_BORDERCOLOR],a.isWrapping(t.cell)&&a.isHtmlLabel(t.cell),a.isLabelClipped(t.cell),t.style[mxConstants.STYLE_OVERFLOW],t.style[mxConstants.STYLE_LABEL_PADDING]),t.text.opacity=mxUtils.getValue(t.style,mxConstants.STYLE_TEXT_OPACITY,100),t.text.dialect=n?mxConstants.DIALECT_STRICTHTML:t.view.graph.dialect,t.text.state=t,this.initializeLabel(t);var i=!1,s=function(e){var n=t;return(mxClient.IS_TOUCH||i)&&(n=mxEvent.getClientX(e),e=mxEvent.getClientY(e),e=mxUtils.convertPoint(a.container,n,e),n=a.view.getState(a.getCellAt(e.x,e.y))),n};mxEvent.addGestureListeners(t.text.node,mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,t)),i=a.dialect!=mxConstants.DIALECT_SVG&&"IMG"==mxEvent.getSource(e).nodeName)}),mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,s(e)))}),mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,s(e))),i=!1)})),mxEvent.addListener(t.text.node,"dblclick",mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.dblClick(e,t.cell),mxEvent.consume(e))}))}},mxCellRenderer.prototype.initializeLabel=function(e){var n=e.view.graph;e.text.dialect!=mxConstants.DIALECT_SVG&&(mxClient.IS_SVG&&mxClient.NO_FO?e.text.init(n.container):mxUtils.isVml(e.view.getDrawPane())&&(null!=e.shape.label?e.text.init(e.shape.label):e.text.init(e.shape.node))),null==e.text.node&&(e.text.init(e.view.getDrawPane()),null!=e.shape&&null!=e.text&&e.shape.node.parentNode.insertBefore(e.text.node,e.shape.node.nextSibling))},mxCellRenderer.prototype.createCellOverlays=function(e){var n=e.view.graph.getCellOverlays(e.cell),t=null;if(null!=n){t=new mxDictionary;for(var a=0;a<n.length;a++){var i=null!=e.overlays?e.overlays.remove(n[a]):null;null==i&&((i=new mxImageShape(new mxRectangle,n[a].image.src)).dialect=e.view.graph.dialect,i.preserveImageAspect=!1,i.overlay=n[a],this.initializeOverlay(e,i),this.installCellOverlayListeners(e,n[a],i),null!=n[a].cursor&&(i.node.style.cursor=n[a].cursor)),t.put(n[a],i)}}null!=e.overlays&&e.overlays.visit(function(e,n){n.destroy()}),e.overlays=t},mxCellRenderer.prototype.initializeOverlay=function(e,n){n.init(e.view.getOverlayPane())},mxCellRenderer.prototype.installCellOverlayListeners=function(n,t,e){var a=n.view.graph;mxEvent.addListener(e.node,"click",function(e){a.isEditing()&&a.stopEditing(!a.isInvokesStopCellEditing()),t.fireEvent(new mxEventObject(mxEvent.CLICK,"event",e,"cell",n.cell))}),mxEvent.addGestureListeners(e.node,function(e){mxEvent.consume(e)},function(e){a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,n))}),mxClient.IS_TOUCH&&mxEvent.addListener(e.node,"touchend",function(e){t.fireEvent(new mxEventObject(mxEvent.CLICK,"event",e,"cell",n.cell))})},mxCellRenderer.prototype.createControl=function(t){var a=t.view.graph,e=a.getFoldingImage(t);if(a.foldingEnabled&&null!=e){if(null==t.control){var n=new mxRectangle(0,0,e.width,e.height);t.control=new mxImageShape(n,e.src),t.control.preserveImageAspect=!1,t.control.dialect=a.dialect,this.initControl(t,t.control,!0,function(e){if(a.isEnabled()){var n=!a.isCellCollapsed(t.cell);a.foldCells(n,!1,[t.cell]),mxEvent.consume(e)}})}}else null!=t.control&&(t.control.destroy(),t.control=null)},mxCellRenderer.prototype.initControl=function(n,e,t,a){var i=n.view.graph;return i.isHtmlLabel(n.cell)&&mxClient.NO_FO&&i.dialect==mxConstants.DIALECT_SVG?(e.dialect=mxConstants.DIALECT_PREFERHTML,e.init(i.container),e.node.style.zIndex=1):e.init(n.view.getOverlayPane()),e=e.innerNode||e.node,a&&(i.isEnabled()&&(e.style.cursor="pointer"),mxEvent.addListener(e,"click",a)),t&&mxEvent.addGestureListeners(e,function(e){i.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,n)),mxEvent.consume(e)},function(e){i.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,n))}),e},mxCellRenderer.prototype.isShapeEvent=function(e,n){return!0},mxCellRenderer.prototype.isLabelEvent=function(e,n){return!0},mxCellRenderer.prototype.installListeners=function(t){var a=t.view.graph,n=function(e){var n=t;return(a.dialect!=mxConstants.DIALECT_SVG&&"IMG"==mxEvent.getSource(e).nodeName||mxClient.IS_TOUCH)&&(n=mxEvent.getClientX(e),e=mxEvent.getClientY(e),e=mxUtils.convertPoint(a.container,n,e),n=a.view.getState(a.getCellAt(e.x,e.y))),n},i=!1;mxEvent.addListener(t.shape.node,"gesturestart",mxUtils.bind(this,function(e){a.lastTouchTime=0,i=!0,mxEvent.consume(e)})),mxEvent.addGestureListeners(t.shape.node,mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:t)):i&&mxEvent.consume(e)}),mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:n(e))):i&&mxEvent.consume(e)}),mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:n(e))):i&&mxEvent.consume(e)}));var s=mxClient.IS_TOUCH?"gestureend":"dblclick";mxEvent.addListener(t.shape.node,s,mxUtils.bind(this,function(e){i=!1,"gestureend"==s?(a.lastTouchTime=0,a.gestureEnabled&&(a.handleGesture(t,e),mxEvent.consume(e))):this.isShapeEvent(t,e)&&(a.dblClick(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:t.cell),mxEvent.consume(e))}))},mxCellRenderer.prototype.redrawLabel=function(e,n){var t=this.getLabelValue(e);if(null==e.text&&null!=t&&(mxUtils.isNode(t)||0<t.length)?this.createLabel(e,t):null==e.text||null!=t&&0!=t.length||(e.text.destroy(),e.text=null),null!=e.text){var a=(i=e.view.graph).isWrapping(e.cell),i=i.isLabelClipped(e.cell),s=this.getLabelBounds(e);!n&&e.text.value==t&&e.text.isWrapping==a&&e.text.isClipping==i&&e.text.scale==e.view.scale&&e.text.bounds.equals(s)||(e.text.value=t,e.text.bounds=s,e.text.scale=this.getTextScale(e),e.text.isWrapping=a,e.text.isClipping=i,e.text.redraw())}},mxCellRenderer.prototype.getTextScale=function(e){return e.view.scale},mxCellRenderer.prototype.getLabelBounds=function(e){var n=e.view.graph,t=e.view.scale,a=n.getModel().isEdge(e.cell),i=new mxRectangle(e.absoluteOffset.x,e.absoluteOffset.y);return e.text.updateMargin(),a?(a=e.text.getSpacing(),i.x+=a.x*t,i.y+=a.y*t,null!=(n=n.getCellGeometry(e.cell))&&(i.width=Math.max(0,e.text.margin.x*n.width*t-e.text.spacingLeft*t-e.text.spacingRight*t),i.height=Math.max(0,e.text.margin.y*n.height*t-e.text.spacingTop*t-e.text.spacingBottom*t))):(e.text.isPaintBoundsInverted()&&(a=i.x,i.x=i.y,i.y=a),i.x+=e.x,i.y+=e.y,i.width=Math.max(1,e.width),i.height=Math.max(1,e.height),n.isSwimlane(e.cell)&&(0<(n=n.getStartSize(e.cell)).width?(a=Math.min(i.width,n.width*t),e.shape.flipH&&(i.x+=i.width-a),i.width=a):0<n.height&&(a=Math.min(i.height,n.height*t),e.shape.flipV&&(i.y+=i.height-a),i.height=a)),this.rotateLabelBounds(e,i)),i},mxCellRenderer.prototype.rotateLabelBounds=function(e,n){if(e.text.isPaintBoundsInverted()){var t=(e.width-e.height)/2;n.x+=t,n.y-=t,t=n.width,n.width=n.height,n.height=t}if(n.x-=e.text.margin.x*n.width,n.y-=e.text.margin.y*n.height,"fill"!=e.style[mxConstants.STYLE_OVERFLOW]){t=e.view.scale;var a=e.text.getSpacing();n.x+=a.x*t,n.y+=a.y*t,n.width=Math.max(0,n.width-e.text.spacingLeft*t-e.text.spacingRight*t),n.height=Math.max(0,n.height-e.text.spacingTop*t-e.text.spacingBottom*t)}var i=e.text.getTextRotation();0!=i&&null!=e&&e.view.graph.model.isVertex(e.cell)&&(t=e.getCenterX(),a=e.getCenterY(),n.x!=t||n.y!=a)&&(i*=Math.PI/180,pt=mxUtils.getRotatedPoint(new mxPoint(n.x,n.y),Math.cos(i),Math.sin(i),new mxPoint(t,a)),n.x=pt.x,n.y=pt.y)},mxCellRenderer.prototype.redrawCellOverlays=function(s,o){if(this.createCellOverlays(s),null!=s.overlays){var r=mxUtils.mod(mxUtils.getValue(s.style,mxConstants.STYLE_ROTATION,0),90),e=mxUtils.toRadians(r),l=Math.cos(e),d=Math.sin(e);s.overlays.visit(function(e,n){var t=n.overlay.getBounds(s);if(!s.view.graph.getModel().isEdge(s.cell)&&null!=s.shape&&0!=r){var a=t.getCenterX(),i=t.getCenterY();a=(i=mxUtils.getRotatedPoint(new mxPoint(a,i),l,d,new mxPoint(s.getCenterX(),s.getCenterY()))).x,i=i.y;t.x=Math.round(a-t.width/2),t.y=Math.round(i-t.height/2)}!o&&null!=n.bounds&&n.scale==s.view.scale&&n.bounds.equals(t)||(n.bounds=t,n.scale=s.view.scale,n.redraw())})}},mxCellRenderer.prototype.redrawControl=function(e,n){if(null!=e.control){var t=this.getControlBounds(e),a=this.legacyControlPosition?mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0):e.shape.getTextRotation(),i=e.view.scale;!n&&e.control.scale==i&&e.control.bounds.equals(t)&&e.control.rotation==a||(e.control.rotation=a,e.control.bounds=t,e.control.scale=i,e.control.redraw())}},mxCellRenderer.prototype.getControlBounds=function(e){if(null==e.control)return null;var n=e.control.scale,t=e.control.bounds.width/n,a=(n=e.control.bounds.height/n,e.view.scale),i=e.getCenterX(),s=e.getCenterY();if(!e.view.graph.getModel().isEdge(e.cell)&&(i=e.x+t*a,s=e.y+n*a,null!=e.shape)){var o=e.shape.getShapeRotation();if(this.legacyControlPosition)o=mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0);else if(e.shape.isPaintBoundsInverted()){var r=(e.width-e.height)/2;i=i+r,s=s-r}0!=o&&(r=mxUtils.toRadians(o),o=Math.cos(r),r=Math.sin(r),i=(s=mxUtils.getRotatedPoint(new mxPoint(i,s),o,r,new mxPoint(e.getCenterX(),e.getCenterY()))).x,s=s.y)}return e.view.graph.getModel().isEdge(e.cell),new mxRectangle(Math.round(i-t/2*a),Math.round(s-n/2*a),Math.round(t*a),Math.round(n*a))},mxCellRenderer.prototype.redraw=function(e,n,t){if(null!=e.shape){var a=!1;e.view.graph.getModel().isEdge(e.cell),reconfigure=null!=n&&n,this.createControl(e),(e.orderChanged||e.invalidOrder)&&(e.view.graph.ordered?this.order(e):this.orderEdge(e)),!e.orderChanged&&mxUtils.equalEntries(e.shape.style,e.style)||(this.configureShape(e),n=!0),delete e.invalidOrder,delete e.orderChanged,!n&&null!=e.shape.bounds&&e.shape.scale==e.view.scale&&e.shape.bounds.equals(e)&&mxUtils.equalPoints(e.shape.points,e.absolutePoints)||(a=!0,e.shape.points=null!=e.absolutePoints?e.absolutePoints.slice():null,e.shape.bounds=new mxRectangle(e.x,e.y,e.width,e.height),e.shape.scale=e.view.scale,null==t||t?e.shape.redraw():e.shape.updateBoundingBox()),(null==t||t)&&(this.redrawLabel(e,a),this.redrawCellOverlays(e,a),this.redrawControl(e,a))}},mxCellRenderer.prototype.destroy=function(e){null!=e.shape&&(null!=e.text&&(e.text.destroy(),e.text=null),null!=e.overlays&&(e.overlays.visit(function(e,n){n.destroy()}),e.overlays=null),null!=e.control&&(e.control.destroy(),e.control=null),e.shape.destroy(),e.shape=null)};var mxEdgeStyle={EntityRelation:function(e,n,t,a,i){var s=e.view,o=s.graph;a=mxUtils.getValue(e.style,mxConstants.STYLE_SEGMENT,mxConstants.ENTITY_SEGMENT)*s.scale;var r=(d=e.absolutePoints)[0],l=d[d.length-1],d=!1;if(null!=r)(n=new mxCellState).x=r.x,n.y=r.y;else{if(null==n)return;var c=mxUtils.getPortConstraints(n,e,!0,mxConstants.DIRECTION_MASK_NONE);c!=mxConstants.DIRECTION_MASK_NONE?d=c==mxConstants.DIRECTION_MASK_WEST:(r=o.getCellGeometry(n.cell)).relative?d=r.x<=.5:null!=t&&(d=t.x+t.width<n.x)}r=!0,null!=l?((t=new mxCellState).x=l.x,t.y=l.y):null!=t&&((c=mxUtils.getPortConstraints(t,e,!1,mxConstants.DIRECTION_MASK_NONE))!=mxConstants.DIRECTION_MASK_NONE?r=c==mxConstants.DIRECTION_MASK_WEST:(e=o.getCellGeometry(t.cell)).relative?r=e.x<=.5:null!=n&&(r=n.x+n.width<t.x)),null!=n&&null!=t&&(e=d?n.x:n.x+n.width,n=s.getRoutingCenterY(n),o=r?t.x:t.x+t.width,t=s.getRoutingCenterY(t),s=new mxPoint(e+(d?-a:a),n),l=new mxPoint(o+(r?-a:a),t),d==r?(a=d?Math.min(e,o)-a:Math.max(e,o)+a,i.push(new mxPoint(a,n)),i.push(new mxPoint(a,t))):(s.x<l.x==d?(a=n+(t-n)/2,i.push(s),i.push(new mxPoint(s.x,a)),i.push(new mxPoint(l.x,a))):i.push(s),i.push(l)))},Loop:function(e,n,t,a,i){if(null!=n){var s=(t=e.view).graph;null!=(a=null!=a&&0<a.length?a[0]:null)&&(a=t.transformControlPoint(e,a),mxUtils.contains(n,a.x,a.y)&&(a=null));var o=0,r=0,l=0,d=0;s=mxUtils.getValue(e.style,mxConstants.STYLE_SEGMENT,s.gridSize)*t.scale;(e=mxUtils.getValue(e.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_WEST))==mxConstants.DIRECTION_NORTH||e==mxConstants.DIRECTION_SOUTH?(o=t.getRoutingCenterX(n),r=s):(l=t.getRoutingCenterY(n),d=s),null==a||a.x<n.x||a.x>n.x+n.width?null!=a?(o=a.x,d=Math.max(Math.abs(l-a.y),d)):e==mxConstants.DIRECTION_NORTH?l=n.y-2*r:e==mxConstants.DIRECTION_SOUTH?l=n.y+n.height+2*r:o=e==mxConstants.DIRECTION_EAST?n.x-2*d:n.x+n.width+2*d:null!=a&&(o=t.getRoutingCenterX(n),r=Math.max(Math.abs(o-a.x),d),l=a.y,d=0),i.push(new mxPoint(o-r,l-d)),i.push(new mxPoint(o+r,l+d))}},ElbowConnector:function(e,n,t,a,i){var s=null!=a&&0<a.length?a[0]:null,o=!1,r=!1;if(null!=n&&null!=t)if(null!=s){var l=Math.min(n.x,t.x),d=Math.max(n.x+n.width,t.x+t.width),c=(r=Math.min(n.y,t.y),Math.max(n.y+n.height,t.y+t.height));o=(s=e.view.transformControlPoint(e,s)).y<r||s.y>c,r=s.x<l||s.x>d}else(o=(l=Math.max(n.x,t.x))==(d=Math.min(n.x+n.width,t.x+t.width)))||(r=(r=Math.max(n.y,t.y))==(c=Math.min(n.y+n.height,t.y+t.height)));r||!o&&e.style[mxConstants.STYLE_ELBOW]!=mxConstants.ELBOW_VERTICAL?mxEdgeStyle.SideToSide(e,n,t,a,i):mxEdgeStyle.TopToBottom(e,n,t,a,i)},SideToSide:function(e,n,t,a,i){var s=e.view;a=null!=a&&0<a.length?a[0]:null;var o=(r=e.absolutePoints)[0],r=r[r.length-1];null!=a&&(a=s.transformControlPoint(e,a)),null!=o&&((n=new mxCellState).x=o.x,n.y=o.y),null!=r&&((t=new mxCellState).x=r.x,t.y=r.y),null!=n&&null!=t&&(e=Math.max(n.x,t.x),o=Math.min(n.x+n.width,t.x+t.width),e=null!=a?a.x:o+(e-o)/2,o=s.getRoutingCenterY(n),s=s.getRoutingCenterY(t),null!=a&&(a.y>=n.y&&a.y<=n.y+n.height&&(o=a.y),a.y>=t.y&&a.y<=t.y+t.height&&(s=a.y)),!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),!mxUtils.contains(t,e,s)&&!mxUtils.contains(n,e,s)&&i.push(new mxPoint(e,s)),1==i.length&&(null!=a?!mxUtils.contains(t,e,a.y)&&!mxUtils.contains(n,e,a.y)&&i.push(new mxPoint(e,a.y)):(s=Math.max(n.y,t.y),n=Math.min(n.y+n.height,t.y+t.height),i.push(new mxPoint(e,s+(n-s)/2)))))},TopToBottom:function(e,n,t,a,i){var s=e.view;a=null!=a&&0<a.length?a[0]:null;var o=(r=e.absolutePoints)[0],r=r[r.length-1];null!=a&&(a=s.transformControlPoint(e,a)),null!=o&&((n=new mxCellState).x=o.x,n.y=o.y),null!=r&&((t=new mxCellState).x=r.x,t.y=r.y),null!=n&&null!=t&&(o=Math.max(n.y,t.y),r=Math.min(n.y+n.height,t.y+t.height),e=s.getRoutingCenterX(n),null!=a&&a.x>=n.x&&a.x<=n.x+n.width&&(e=a.x),o=null!=a?a.y:r+(o-r)/2,!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),e=null!=a&&a.x>=t.x&&a.x<=t.x+t.width?a.x:s.getRoutingCenterX(t),!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),1==i.length&&(null!=a&&1==i.length?!mxUtils.contains(t,a.x,o)&&!mxUtils.contains(n,a.x,o)&&i.push(new mxPoint(a.x,o)):(s=Math.max(n.x,t.x),n=Math.min(n.x+n.width,t.x+t.width),i.push(new mxPoint(s+(n-s)/2,o)))))},SegmentConnector:function(e,n,t,a,i){var s=e.absolutePoints,o=!0,r=null,l=s[0];null==l&&null!=n?l=new mxPoint(e.view.getRoutingCenterX(n),e.view.getRoutingCenterY(n)):null!=l&&(l=l.clone());var d=s.length-1;if(null!=a&&0<a.length){r=e.view.transformControlPoint(e,a[0]);for(var c=n,m=s[0],u=!1,p=!1,g=(u=r,a.length),v=0;v<2;v++){var h=null!=m&&m.x==u.x,f=null!=m&&m.y==u.y,b=null!=c&&u.y>=c.y&&u.y<=c.y+c.height;c=null!=c&&u.x>=c.x&&u.x<=c.x+c.width,u=f||null==m&&b,p=h||null==m&&c;if(null!=m&&!f&&!h&&(b||c)){o=!b;break}if(p||u){o=u,1==v&&(o=0==a.length%2?u:p);break}c=t,m=s[d],u=e.view.transformControlPoint(e,a[g-1])}for(o&&(null!=s[0]&&s[0].y!=r.y||null==s[0]&&null!=n&&(r.y<n.y||r.y>n.y+n.height))?i.push(new mxPoint(l.x,r.y)):!o&&(null!=s[0]&&s[0].x!=r.x||null==s[0]&&null!=n&&(r.x<n.x||r.x>n.x+n.width))&&i.push(new mxPoint(r.x,l.y)),o?l.y=r.y:l.x=r.x,v=0;v<a.length;v++)o=!o,r=e.view.transformControlPoint(e,a[v]),o?l.y=r.y:l.x=r.x,i.push(l.clone())}else r=l,o=!0;if(null==(l=s[d])&&null!=t&&(l=new mxPoint(e.view.getRoutingCenterX(t),e.view.getRoutingCenterY(t))),o&&(null!=s[d]&&s[d].y!=r.y||null==s[d]&&null!=t&&(r.y<t.y||r.y>t.y+t.height))?i.push(new mxPoint(l.x,r.y)):!o&&(null!=s[d]&&s[d].x!=r.x||null==s[d]&&null!=t&&(r.x<t.x||r.x>t.x+t.width))&&i.push(new mxPoint(r.x,l.y)),null==s[0]&&null!=n)for(;1<i.length&&mxUtils.contains(n,i[1].x,i[1].y);)i=i.splice(1,1);if(null==s[d]&&null!=t)for(;1<i.length&&mxUtils.contains(t,i[i.length-1].x,i[i.length-1].y);)i=i.splice(i.length-1,1)},orthBuffer:10,dirVectors:[[-1,0],[0,-1],[1,0],[0,1],[-1,0],[0,-1],[1,0]],wayPoints1:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],routePatterns:[[[513,2308,2081,2562],[513,1090,514,2184,2114,2561],[513,1090,514,2564,2184,2562],[513,2308,2561,1090,514,2568,2308]],[[514,1057,513,2308,2081,2562],[514,2184,2114,2561],[514,2184,2562,1057,513,2564,2184],[514,1057,513,2568,2308,2561]],[[1090,514,1057,513,2308,2081,2562],[2114,2561],[1090,2562,1057,513,2564,2184],[1090,514,1057,513,2308,2561,2568]],[[2081,2562],[1057,513,1090,514,2184,2114,2561],[1057,513,1090,514,2184,2562,2564],[1057,2561,1090,514,2568,2308]]],inlineRoutePatterns:[[null,[2114,2568],null,null],[null,[514,2081,2114,2568],null,null],[null,[2114,2561],null,null],[[2081,2562],[1057,2114,2568],[2184,2562],null]],vertexSeperations:[],limits:[[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0]],LEFT_MASK:32,TOP_MASK:64,RIGHT_MASK:128,BOTTOM_MASK:256,LEFT:1,TOP:2,RIGHT:4,BOTTOM:8,SIDE_MASK:480,CENTER_MASK:512,SOURCE_MASK:1024,TARGET_MASK:2048,VERTEX_MASK:3072,OrthConnector:function(e,n,t,a,i){var s=e.view.graph,o=null!=n&&s.getModel().isEdge(n.cell);s=null!=t&&s.getModel().isEdge(t.cell);if(null!=a&&0<a.length||o||s)mxEdgeStyle.SegmentConnector(e,n,t,a,i);else{var r=(a=e.absolutePoints)[0],l=a[a.length-1];a=null!=n?n.x:r.x;o=null!=n?n.y:r.y;var d=null!=n?n.width:1,c=null!=n?n.height:1,m=null!=t?t.x:l.x,u=null!=t?t.y:l.y,p=null!=t?t.width:1,g=null!=t?t.height:1,v=(s=e.view.scale*mxEdgeStyle.orthBuffer,[mxConstants.DIRECTION_MASK_ALL,mxConstants.DIRECTION_MASK_ALL]);for(null!=n&&(v[0]=mxUtils.getPortConstraints(n,e,!0,mxConstants.DIRECTION_MASK_ALL)),null!=t&&(v[1]=mxUtils.getPortConstraints(t,e,!1,mxConstants.DIRECTION_MASK_ALL)),e=[0,0],a=[[a,o,d,c],[m,u,p,g]],d=0;d<2;d++)mxEdgeStyle.limits[d][1]=a[d][0]-s,mxEdgeStyle.limits[d][2]=a[d][1]-s,mxEdgeStyle.limits[d][4]=a[d][0]+a[d][2]+s,mxEdgeStyle.limits[d][8]=a[d][1]+a[d][3]+s;for(d=a[0][0]+a[0][2]/2-(a[1][0]+a[1][2]/2),c=a[0][1]+a[0][3]/2-(a[1][1]+a[1][3]/2),d<(o=0)?o=c<0?2:1:c<=0&&(o=3,0==d&&(o=2)),(c=null)!=n&&(c=r),n=[[.5,.5],[.5,.5]],d=0;d<2;d++)null!=c&&(n[d][0]=(c.x-a[d][0])/a[d][2],n[d][0]<.01?e[d]=mxConstants.DIRECTION_MASK_WEST:.99<n[d][0]&&(e[d]=mxConstants.DIRECTION_MASK_EAST),n[d][1]=(c.y-a[d][1])/a[d][3],n[d][1]<.01?e[d]=mxConstants.DIRECTION_MASK_NORTH:.99<n[d][1]&&(e[d]=mxConstants.DIRECTION_MASK_SOUTH)),(c=null)!=t&&(c=l);for(d=a[0][1]-(a[1][1]+a[1][3]),c=a[0][0]-(a[1][0]+a[1][2]),m=a[1][1]-(a[0][1]+a[0][3]),u=a[1][0]-(a[0][0]+a[0][2]),mxEdgeStyle.vertexSeperations[1]=Math.max(c-2*s,0),mxEdgeStyle.vertexSeperations[2]=Math.max(d-2*s,0),mxEdgeStyle.vertexSeperations[4]=Math.max(m-2*s,0),mxEdgeStyle.vertexSeperations[3]=Math.max(u-2*s,0),t=[],l=[],(r=[])[0]=u<=c?mxConstants.DIRECTION_MASK_WEST:mxConstants.DIRECTION_MASK_EAST,l[0]=m<=d?mxConstants.DIRECTION_MASK_NORTH:mxConstants.DIRECTION_MASK_SOUTH,r[1]=mxUtils.reversePortConstraints(r[0]),l[1]=mxUtils.reversePortConstraints(l[0]),c=u<=c?c:u,m=m<=d?d:m,p=!(u=[[0,0],[0,0]]),d=0;d<2;d++)0==e[d]&&(0==(r[d]&v[d])&&(r[d]=mxUtils.reversePortConstraints(r[d])),0==(l[d]&v[d])&&(l[d]=mxUtils.reversePortConstraints(l[d])),u[d][0]=l[d],u[d][1]=r[d]);for(2*s<m&&2*s<c&&(0<(r[0]&v[0])&&0<(l[1]&v[1])?(u[0][0]=r[0],u[0][1]=l[0],u[1][0]=l[1],u[1][1]=r[1],p=!0):0<(l[0]&v[0])&&0<(r[1]&v[1])&&(u[0][0]=l[0],u[0][1]=r[0],u[1][0]=r[1],u[1][1]=l[1],p=!0)),2*s<m&&!p&&(u[0][0]=l[0],u[0][1]=r[0],u[1][0]=l[1],u[1][1]=r[1],p=!0),2*s<c&&!p&&(u[0][0]=r[0],u[0][1]=l[0],u[1][0]=r[1],u[1][1]=l[1]),d=0;d<2;d++)0==e[d]&&(0==(u[d][0]&v[d])&&(u[d][0]=u[d][1]),t[d]=u[d][0]&v[d],t[d]|=(u[d][1]&v[d])<<8,t[d]|=(u[1-d][d]&v[d])<<16,t[d]|=(u[1-d][1-d]&v[d])<<24,0==(15&t[d])&&(t[d]<<=8),0==(3840&t[d])&&(t[d]=15&t[d]|t[d]>>8),0==(983040&t[d])&&(t[d]=65535&t[d]|(251658240&t[d])>>8),e[d]=15&t[d],v[d]==mxConstants.DIRECTION_MASK_WEST||v[d]==mxConstants.DIRECTION_MASK_NORTH||v[d]==mxConstants.DIRECTION_MASK_EAST||v[d]==mxConstants.DIRECTION_MASK_SOUTH)&&(e[d]=v[d]);switch(d=e[0]==mxConstants.DIRECTION_MASK_EAST?3:e[0],v=e[1]==mxConstants.DIRECTION_MASK_EAST?3:e[1],(d-=o)<1&&(d+=4),(v-=o)<1&&(v+=4),v=mxEdgeStyle.routePatterns[d-1][v-1],mxEdgeStyle.wayPoints1[0][0]=a[0][0],mxEdgeStyle.wayPoints1[0][1]=a[0][1],e[0]){case mxConstants.DIRECTION_MASK_WEST:mxEdgeStyle.wayPoints1[0][0]-=s,mxEdgeStyle.wayPoints1[0][1]+=n[0][1]*a[0][3];break;case mxConstants.DIRECTION_MASK_SOUTH:mxEdgeStyle.wayPoints1[0][0]+=n[0][0]*a[0][2],mxEdgeStyle.wayPoints1[0][1]+=a[0][3]+s;break;case mxConstants.DIRECTION_MASK_EAST:mxEdgeStyle.wayPoints1[0][0]+=a[0][2]+s,mxEdgeStyle.wayPoints1[0][1]+=n[0][1]*a[0][3];break;case mxConstants.DIRECTION_MASK_NORTH:mxEdgeStyle.wayPoints1[0][0]+=n[0][0]*a[0][2],mxEdgeStyle.wayPoints1[0][1]-=s}for(r=t=(s=0)<(e[0]&(mxConstants.DIRECTION_MASK_EAST|mxConstants.DIRECTION_MASK_WEST))?0:1,d=l=0;d<v.length;d++){g=(l=15&v[d])==mxConstants.DIRECTION_MASK_EAST?3:l,4<(g+=o)&&(g-=4),c=mxEdgeStyle.dirVectors[g-1],(l=0<g%2?0:1)!=t&&(s++,mxEdgeStyle.wayPoints1[s][0]=mxEdgeStyle.wayPoints1[s-1][0],mxEdgeStyle.wayPoints1[s][1]=mxEdgeStyle.wayPoints1[s-1][1]);var h=0<(v[d]&mxEdgeStyle.TARGET_MASK);p=0<(v[d]&mxEdgeStyle.SOURCE_MASK);15<(m=(m=(v[d]&mxEdgeStyle.SIDE_MASK)>>5)<<o)&&(m>>=4),u=0<(v[d]&mxEdgeStyle.CENTER_MASK),(p||h)&&m<9?(g=0,p=p?0:1,g=u&&0==l?a[p][0]+n[p][0]*a[p][2]:u?a[p][1]+n[p][1]*a[p][3]:mxEdgeStyle.limits[p][m],0==l?0<(m=(g-mxEdgeStyle.wayPoints1[s][0])*c[0])&&(mxEdgeStyle.wayPoints1[s][0]+=c[0]*m):0<(m=(g-mxEdgeStyle.wayPoints1[s][1])*c[1])&&(mxEdgeStyle.wayPoints1[s][1]+=c[1]*m)):u&&(mxEdgeStyle.wayPoints1[s][0]+=c[0]*Math.abs(mxEdgeStyle.vertexSeperations[g]/2),mxEdgeStyle.wayPoints1[s][1]+=c[1]*Math.abs(mxEdgeStyle.vertexSeperations[g]/2)),0<s&&mxEdgeStyle.wayPoints1[s][l]==mxEdgeStyle.wayPoints1[s-1][l]?s--:t=l}for(d=0;d<=s&&(d!=s||((0<(e[1]&(mxConstants.DIRECTION_MASK_EAST|mxConstants.DIRECTION_MASK_WEST))?0:1)==r?0:1)==(s+1)%2);d++)i.push(new mxPoint(mxEdgeStyle.wayPoints1[d][0],mxEdgeStyle.wayPoints1[d][1]))}},getRoutePattern:function(e,n,t,a){var i=e[0]==mxConstants.DIRECTION_MASK_EAST?3:e[0];return e=e[1]==mxConstants.DIRECTION_MASK_EAST?3:e[1],(i-=n)<1&&(i+=4),(e-=n)<1&&(e+=4),n=routePatterns[i-1][e-1],0!=t&&0!=a||null!=inlineRoutePatterns[i-1][e-1]&&(n=inlineRoutePatterns[i-1][e-1]),n}},mxStyleRegistry={values:[],putValue:function(e,n){mxStyleRegistry.values[e]=n},getValue:function(e){return mxStyleRegistry.values[e]},getName:function(e){for(var n in mxStyleRegistry.values)if(mxStyleRegistry.values[n]==e)return n;return null}};function mxGraphView(e){this.graph=e,this.translate=new mxPoint,this.graphBounds=new mxRectangle,this.states=new mxDictionary}function mxCurrentRootChange(e,n){if(this.view=e,this.previous=this.root=n,this.isUp=null==n,!this.isUp)for(var t=this.view.currentRoot,a=this.view.graph.getModel();null!=t;){if(t==n){this.isUp=!0;break}t=a.getParent(t)}}function mxGraph(e,n,t,a){this.mouseListeners=null,this.renderHint=t,this.dialect=mxClient.IS_SVG?mxConstants.DIALECT_SVG:t==mxConstants.RENDERING_HINT_EXACT&&mxClient.IS_VML?mxConstants.DIALECT_VML:t==mxConstants.RENDERING_HINT_FASTEST?mxConstants.DIALECT_STRICTHTML:t==mxConstants.RENDERING_HINT_FASTER?mxConstants.DIALECT_PREFERHTML:mxConstants.DIALECT_MIXEDHTML,this.model=null!=n?n:new mxGraphModel,this.multiplicities=[],this.imageBundles=[],this.cellRenderer=this.createCellRenderer(),this.setSelectionModel(this.createSelectionModel()),this.setStylesheet(null!=a?a:this.createStylesheet()),this.view=this.createGraphView(),this.graphModelChangeListener=mxUtils.bind(this,function(e,n){this.graphModelChanged(n.getProperty("edit").changes)}),this.model.addListener(mxEvent.CHANGE,this.graphModelChangeListener),this.createHandlers(),null!=e&&this.init(e),this.view.revalidate()}function mxCellOverlay(e,n,t,a,i,s){this.image=e,this.tooltip=n,this.align=null!=t?t:this.align,this.verticalAlign=null!=a?a:this.verticalAlign,this.offset=null!=i?i:new mxPoint,this.cursor=null!=s?s:"help"}function mxOutline(e,n){this.source=e,null!=n&&this.init(n)}function mxMultiplicity(e,n,t,a,i,s,o,r,l,d){this.source=e,this.type=n,this.attr=t,this.value=a,this.min=null!=i?i:0,this.max=null!=s?s:"n",this.validNeighbors=o,this.countError=mxResources.get(r)||r,this.typeError=mxResources.get(l)||l,this.validNeighborsAllowed=null==d||d}function mxLayoutManager(e){this.undoHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.beforeUndo(n.getProperty("edit"))}),this.moveHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsMoved(n.getProperty("cells"),n.getProperty("event"))}),this.setGraph(e)}function mxSpaceManager(e,n,t,a){this.resizeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.foldHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.shiftRightwards=null==n||n,this.shiftDownwards=null==t||t,this.extendParents=null==a||a,this.setGraph(e)}function mxSwimlaneManager(e,n,t,a){this.horizontal=null==n||n,this.addEnabled=null==t||t,this.resizeEnabled=null==a||a,this.addHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.isAddEnabled()&&this.cellsAdded(n.getProperty("cells"))}),this.resizeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.isResizeEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.setGraph(e)}function mxTemporaryCellStates(e,n,t){if(this.view=e,n=null!=n?n:1,this.oldBounds=e.getGraphBounds(),this.oldStates=e.getStates(),this.oldScale=e.getScale(),e.setStates(new mxDictionary),e.setScale(n),null!=t){n=e.createState(new mxCell);for(var a=0;a<t.length;a++)e.validateBounds(n,t[a]);var i=null;for(a=0;a<t.length;a++){var s=e.validatePoints(n,t[a]);null==i?i=s:i.add(s)}null==i&&(i=new mxRectangle),e.setGraphBounds(i)}}function mxCellStatePreview(e){this.graph=e,this.deltas={}}function mxConnectionConstraint(e,n){this.point=e,this.perimeter=null==n||n}function mxGraphHandler(e){this.graph=e,this.graph.addMouseListener(this),this.panHandler=mxUtils.bind(this,function(){this.updatePreviewShape()}),this.graph.addListener(mxEvent.PAN,this.panHandler)}function mxPanningHandler(e,n){null!=e&&(this.graph=e,this.factoryMethod=n,this.graph.addMouseListener(this),this.init())}function mxCellMarker(e,n,t,a){mxEventSource.call(this),null!=e&&(this.graph=e,this.validColor=null!=n?n:mxConstants.DEFAULT_VALID_COLOR,this.invalidColor=null!=n?t:mxConstants.DEFAULT_INVALID_COLOR,this.hotspot=null!=a?a:mxConstants.DEFAULT_HOTSPOT,this.highlight=new mxCellHighlight(e))}function mxSelectionCellsHandler(e){mxEventSource.call(this),this.graph=e,this.handlers=new mxDictionary,this.graph.addMouseListener(this),this.refreshHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.refresh()}),this.graph.getSelectionModel().addListener(mxEvent.CHANGE,this.refreshHandler),this.graph.getModel().addListener(mxEvent.CHANGE,this.refreshHandler),this.graph.getView().addListener(mxEvent.SCALE,this.refreshHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.refreshHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.refreshHandler),this.graph.getView().addListener(mxEvent.DOWN,this.refreshHandler),this.graph.getView().addListener(mxEvent.UP,this.refreshHandler)}function mxConnectionHandler(e,n){mxEventSource.call(this),null!=e&&(this.graph=e,this.factoryMethod=n,this.init())}function mxConstraintHandler(e){this.graph=e}function mxRubberband(e){null!=e&&(this.graph=e,this.graph.addMouseListener(this),this.panHandler=mxUtils.bind(this,function(){this.repaint()}),this.graph.addListener(mxEvent.PAN,this.panHandler),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}function mxVertexHandler(e){null!=e&&(this.state=e,this.init())}function mxEdgeHandler(e){null!=e&&(this.state=e,this.init())}function mxElbowEdgeHandler(e){mxEdgeHandler.call(this,e)}function mxEdgeSegmentHandler(e){mxEdgeHandler.call(this,e)}function mxKeyHandler(e,n){null!=e&&(this.graph=e,this.target=n||document.documentElement,this.normalKeys=[],this.shiftKeys=[],this.controlKeys=[],this.controlShiftKeys=[],mxEvent.addListener(this.target,"keydown",mxUtils.bind(this,function(e){this.keyDown(e)})),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}function mxTooltipHandler(e,n){null!=e&&(this.graph=e,this.delay=n||500,this.graph.addMouseListener(this))}function mxCellTracker(e,n,t){mxCellMarker.call(this,e,n),this.graph.addMouseListener(this),null!=t&&(this.getCell=t),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()}))}function mxCellHighlight(e,n,t,a){null!=e&&(this.graph=e,this.highlightColor=null!=n?n:mxConstants.DEFAULT_VALID_COLOR,this.strokeWidth=null!=t?t:mxConstants.HIGHLIGHT_STROKEWIDTH,this.dashed=null!=a&&a,this.repaintHandler=mxUtils.bind(this,function(){this.repaint()}),this.graph.getView().addListener(mxEvent.SCALE,this.repaintHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.repaintHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.repaintHandler),this.graph.getModel().addListener(mxEvent.CHANGE,this.repaintHandler),this.resetHandler=mxUtils.bind(this,function(){this.hide()}),this.graph.getView().addListener(mxEvent.DOWN,this.resetHandler),this.graph.getView().addListener(mxEvent.UP,this.resetHandler))}function mxDefaultKeyHandler(n){if(null!=n){this.editor=n,this.handler=new mxKeyHandler(n.graph);var t=this.handler.escape;this.handler.escape=function(e){t.apply(this,arguments),n.hideProperties(),n.fireEvent(new mxEventObject(mxEvent.ESCAPE,"event",e))}}}function mxDefaultPopupMenu(e){this.config=e}function mxDefaultToolbar(e,n){this.editor=n,null!=e&&null!=n&&this.init(e)}function mxEditor(e){this.actions=[],this.addActions(),null!=document.body&&(this.cycleAttributeValues=[],this.popupHandler=new mxDefaultPopupMenu,this.undoManager=new mxUndoManager,this.graph=this.createGraph(),this.toolbar=this.createToolbar(),this.keyHandler=new mxDefaultKeyHandler(this),this.configure(e),this.graph.swimlaneIndicatorColorAttribute=this.cycleAttributeName,!mxClient.IS_LOCAL&&null!=this.urlInit&&(this.session=this.createSession()),null!=this.onInit&&this.onInit(),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ELBOW,mxEdgeStyle.ElbowConnector),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ENTITY_RELATION,mxEdgeStyle.EntityRelation),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_LOOP,mxEdgeStyle.Loop),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_SIDETOSIDE,mxEdgeStyle.SideToSide),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_TOPTOBOTTOM,mxEdgeStyle.TopToBottom),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ORTHOGONAL,mxEdgeStyle.OrthConnector),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_SEGMENT,mxEdgeStyle.SegmentConnector),mxStyleRegistry.putValue(mxConstants.PERIMETER_ELLIPSE,mxPerimeter.EllipsePerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_RECTANGLE,mxPerimeter.RectanglePerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_RHOMBUS,mxPerimeter.RhombusPerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_TRIANGLE,mxPerimeter.TrianglePerimeter),mxGraphView.prototype=new mxEventSource,mxGraphView.prototype.constructor=mxGraphView,mxGraphView.prototype.EMPTY_POINT=new mxPoint,mxGraphView.prototype.doneResource="none"!=mxClient.language?"done":"",mxGraphView.prototype.updatingDocumentResource="none"!=mxClient.language?"updatingDocument":"",mxGraphView.prototype.allowEval=!1,mxGraphView.prototype.captureDocumentGesture=!0,mxGraphView.prototype.optimizeVmlReflows=!0,mxGraphView.prototype.rendering=!0,mxGraphView.prototype.graph=null,mxGraphView.prototype.currentRoot=null,mxGraphView.prototype.graphBounds=null,mxGraphView.prototype.scale=1,mxGraphView.prototype.translate=null,mxGraphView.prototype.updateStyle=!1,mxGraphView.prototype.getGraphBounds=function(){return this.graphBounds},mxGraphView.prototype.setGraphBounds=function(e){this.graphBounds=e},mxGraphView.prototype.getBounds=function(e){var n=null;if(null!=e&&0<e.length)for(var t=this.graph.getModel(),a=0;a<e.length;a++)if(t.isVertex(e[a])||t.isEdge(e[a])){var i=this.getState(e[a]);null!=i&&(null==n?n=new mxRectangle(i.x,i.y,i.width,i.height):n.add(i))}return n},mxGraphView.prototype.setCurrentRoot=function(e){if(this.currentRoot!=e){var n=new mxCurrentRootChange(this,e);n.execute();var t=new mxUndoableEdit(this,!1);t.add(n),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",t)),this.graph.sizeDidChange()}return e},mxGraphView.prototype.scaleAndTranslate=function(e,n,t){var a=this.scale,i=new mxPoint(this.translate.x,this.translate.y);this.scale==e&&this.translate.x==n&&this.translate.y==t||(this.scale=e,this.translate.x=n,this.translate.y=t,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.SCALE_AND_TRANSLATE,"scale",e,"previousScale",a,"translate",this.translate,"previousTranslate",i))},mxGraphView.prototype.getScale=function(){return this.scale},mxGraphView.prototype.setScale=function(e){var n=this.scale;this.scale!=e&&(this.scale=e,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.SCALE,"scale",e,"previousScale",n))},mxGraphView.prototype.getTranslate=function(){return this.translate},mxGraphView.prototype.setTranslate=function(e,n){var t=new mxPoint(this.translate.x,this.translate.y);this.translate.x==e&&this.translate.y==n||(this.translate.x=e,this.translate.y=n,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.TRANSLATE,"translate",this.translate,"previousTranslate",t))},mxGraphView.prototype.refresh=function(){null!=this.currentRoot&&this.clear(),this.revalidate()},mxGraphView.prototype.revalidate=function(){this.invalidate(),this.validate()},mxGraphView.prototype.clear=function(e,n,t){var a=this.graph.getModel();if(e=e||a.getRoot(),n=null!=n&&n,t=null==t||t,this.removeState(e),t&&(n||e!=this.currentRoot)){t=a.getChildCount(e);for(var i=0;i<t;i++)this.clear(a.getChildAt(e,i),n)}else this.invalidate(e)},mxGraphView.prototype.invalidate=function(e,n,t,a){var i=this.graph.getModel();if(e=e||i.getRoot(),n=null==n||n,t=null==t||t,a=null!=a&&a,null!=(o=this.getState(e))&&(o.invalid=!0,a&&(o.orderChanged=!0)),n)for(var s=i.getChildCount(e),o=0;o<s;o++){var r=i.getChildAt(e,o);this.invalidate(r,n,t,a)}if(t)for(a=i.getEdgeCount(e),o=0;o<a;o++)this.invalidate(i.getEdgeAt(e,o),n,t)},mxGraphView.prototype.validate=function(e){var n=mxLog.enter("mxGraphView.validate");window.status=mxResources.get(this.updatingDocumentResource)||this.updatingDocumentResource;var t=null;if(this.optimizeVmlReflows&&null!=this.canvas&&null==this.textDiv&&(8==document.documentMode||mxClient.IS_QUIRKS)){t=this.canvas.style.display,this.canvas.style.display="none";var a=document.createElement("div");a.style.position="absolute",a.style.whiteSpace="nowrap",a.style.visibility="hidden",a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",document.body.appendChild(a),this.textDiv=a}e=e||(null!=this.currentRoot?this.currentRoot:this.graph.getModel().getRoot()),this.validateBounds(null,e),null==(e=this.validatePoints(null,e))&&(e=new mxRectangle),this.setGraphBounds(e),this.validateBackground(),null!=t&&(this.canvas.style.display=t,document.body.removeChild(this.textDiv),this.textDiv=null),window.status=mxResources.get(this.doneResource)||this.doneResource,mxLog.leave("mxGraphView.validate",n)},mxGraphView.prototype.createBackgroundPageShape=function(e){return new mxRectangleShape(e,"white","black")},mxGraphView.prototype.validateBackground=function(){var e=this.graph.getBackgroundImage();if(null!=e){if(null==this.backgroundImage||this.backgroundImage.image!=e.src){null!=this.backgroundImage&&this.backgroundImage.destroy();var n=new mxRectangle(0,0,1,1);this.backgroundImage=new mxImageShape(n,e.src),this.backgroundImage.dialect=this.graph.dialect,this.backgroundImage.init(this.backgroundPane),this.backgroundImage.redraw()}this.redrawBackgroundImage(this.backgroundImage,e)}else null!=this.backgroundImage&&(this.backgroundImage.destroy(),this.backgroundImage=null);this.graph.pageVisible?(n=this.getBackgroundPageBounds(),null==this.backgroundPageShape?(this.backgroundPageShape=this.createBackgroundPageShape(n),this.backgroundPageShape.scale=this.scale,this.backgroundPageShape.isShadow=!0,this.backgroundPageShape.dialect=this.graph.dialect,this.backgroundPageShape.init(this.backgroundPane),this.backgroundPageShape.redraw(),mxEvent.addListener(this.backgroundPageShape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e)})),mxEvent.addGestureListeners(this.backgroundPageShape.node,mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){null!=this.graph.tooltipHandler&&this.graph.tooltipHandler.isHideOnHover()&&this.graph.tooltipHandler.hide(),this.graph.isMouseDown&&!mxEvent.isConsumed(e)&&this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}))):(this.backgroundPageShape.scale=this.scale,this.backgroundPageShape.bounds=n,this.backgroundPageShape.redraw())):null!=this.backgroundPageShape&&(this.backgroundPageShape.destroy(),this.backgroundPageShape=null)},mxGraphView.prototype.getBackgroundPageBounds=function(){var e=this.graph.pageFormat,n=this.scale*this.graph.pageScale;return new mxRectangle(this.scale*this.translate.x,this.scale*this.translate.y,e.width*n,e.height*n)},mxGraphView.prototype.redrawBackgroundImage=function(e,n){e.scale=this.scale,e.bounds.x=this.scale*this.translate.x,e.bounds.y=this.scale*this.translate.y,e.bounds.width=this.scale*n.width,e.bounds.height=this.scale*n.height,e.redraw()},mxGraphView.prototype.validateBounds=function(e,n){var t=this.graph.getModel(),a=this.getState(n,!0);if(null!=a&&a.invalid){if(this.graph.isCellVisible(n)){if(n!=this.currentRoot&&null!=e)if(a.absoluteOffset.x=0,a.absoluteOffset.y=0,a.origin.x=e.origin.x,a.origin.y=e.origin.y,null!=(s=this.graph.getCellGeometry(n))){if(!t.isEdge(n)){var i=s.offset||this.EMPTY_POINT;s.relative?(a.origin.x+=s.x*e.width/this.scale+i.x,a.origin.y+=s.y*e.height/this.scale+i.y):(a.absoluteOffset.x=this.scale*i.x,a.absoluteOffset.y=this.scale*i.y,a.origin.x+=s.x,a.origin.y+=s.y)}if(a.x=this.scale*(this.translate.x+a.origin.x),a.y=this.scale*(this.translate.y+a.origin.y),a.width=this.scale*s.width,a.height=this.scale*s.height,t.isVertex(n)){if(s.relative&&0!=(i=mxUtils.toRadians(e.style[mxConstants.STYLE_ROTATION]||"0"))){var s=Math.cos(i),o=(i=Math.sin(i),new mxPoint(a.getCenterX(),a.getCenterY())),r=new mxPoint(e.getCenterX(),e.getCenterY());s=mxUtils.getRotatedPoint(o,s,i,r);a.x=s.x-a.width/2,a.y=s.y-a.height/2}this.updateVertexLabelOffset(a)}}}else this.removeState(n);null!=(i=this.graph.getChildOffsetForCell(n))&&(a.origin.x+=i.x,a.origin.y+=i.y)}if(null!=a&&(!this.graph.isCellCollapsed(n)||n==this.currentRoot))for(s=t.getChildCount(n),i=0;i<s;i++)o=t.getChildAt(n,i),this.validateBounds(a,o)},mxGraphView.prototype.updateVertexLabelOffset=function(e){var n=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER);n==mxConstants.ALIGN_LEFT?e.absoluteOffset.x-=e.width:n==mxConstants.ALIGN_RIGHT&&(e.absoluteOffset.x+=e.width),(n=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?e.absoluteOffset.y-=e.height:n==mxConstants.ALIGN_BOTTOM&&(e.absoluteOffset.y+=e.height)},mxGraphView.prototype.validatePoints=function(e,n){var t=this.graph.getModel(),a=this.getState(n),i=null;if(null!=a){if(a.invalid){var s=this.graph.getCellGeometry(n);if(null!=s&&t.isEdge(n)){var o=this.getState(this.getVisibleTerminal(n,!0));if(a.setVisibleTerminalState(o,!0),null!=o&&t.isEdge(o.cell)&&!t.isAncestor(o.cell,n)){var r=this.getState(t.getParent(o.cell));this.validatePoints(r,o.cell)}var l=this.getState(this.getVisibleTerminal(n,!1));a.setVisibleTerminalState(l,!1),null!=l&&t.isEdge(l.cell)&&!t.isAncestor(l.cell,n)&&(r=this.getState(t.getParent(l.cell)),this.validatePoints(r,l.cell)),this.updateFixedTerminalPoints(a,o,l),this.updatePoints(a,s.points,o,l),this.updateFloatingTerminalPoints(a,o,l),this.updateEdgeBounds(a),this.updateEdgeLabelOffset(a)}else null!=s&&s.relative&&null!=e&&t.isEdge(e.cell)&&(null!=(s=this.getPoint(e,s))&&(a.x=s.x,a.y=s.y,s.x=s.x/this.scale-this.translate.x,s.y=s.y/this.scale-this.translate.y,a.origin=s,this.childMoved(e,a)));a.invalid=!1,n!=this.currentRoot&&this.graph.cellRenderer.redraw(a,!1,this.isRendering())}(t.isEdge(n)||t.isVertex(n))&&(null!=a.shape&&null!=a.shape.boundingBox&&(i=a.shape.boundingBox.clone()),null!=a.text&&!this.graph.isLabelClipped(a.cell)&&null!=a.text.boundingBox&&(null!=i?i.add(a.text.boundingBox):i=a.text.boundingBox.clone()))}if(null!=a&&(!this.graph.isCellCollapsed(n)||n==this.currentRoot))for(s=t.getChildCount(n),o=0;o<s;o++)r=t.getChildAt(n,o),null!=(r=this.validatePoints(a,r))&&(null==i?i=r:i.add(r));return i},mxGraphView.prototype.childMoved=function(e,n){var t=n.cell;if(!this.graph.isCellCollapsed(t)||t==this.currentRoot)for(var a=this.graph.getModel(),i=a.getChildCount(t),s=0;s<i;s++)this.validateBounds(n,a.getChildAt(t,s))},mxGraphView.prototype.updateFixedTerminalPoints=function(e,n,t){this.updateFixedTerminalPoint(e,n,!0,this.graph.getConnectionConstraint(e,n,!0)),this.updateFixedTerminalPoint(e,t,!1,this.graph.getConnectionConstraint(e,t,!1))},mxGraphView.prototype.updateFixedTerminalPoint=function(e,n,t,a){var i=null;if(null!=a&&(i=this.graph.getConnectionPoint(n,a)),null==i&&null==n){n=this.scale,a=this.translate;var s=e.origin;null!=(i=this.graph.getCellGeometry(e.cell).getTerminalPoint(t))&&(i=new mxPoint(n*(a.x+i.x+s.x),n*(a.y+i.y+s.y)))}e.setAbsoluteTerminalPoint(i,t)},mxGraphView.prototype.updatePoints=function(e,n,t,a){if(null!=e){var i=[];i.push(e.absolutePoints[0]);var s=this.getEdgeStyle(e,n,t,a);if(null!=s)s(e,t=this.getTerminalPort(e,t,!0),a=this.getTerminalPort(e,a,!1),n,i);else if(null!=n)for(s=0;s<n.length;s++)null!=n[s]&&(a=mxUtils.clone(n[s]),i.push(this.transformControlPoint(e,a)));n=e.absolutePoints,i.push(n[n.length-1]),e.absolutePoints=i}},mxGraphView.prototype.transformControlPoint=function(e,n){var t=e.origin;return new mxPoint(this.scale*(n.x+this.translate.x+t.x),this.scale*(n.y+this.translate.y+t.y))},mxGraphView.prototype.getEdgeStyle=function(e,n,t,a){return"string"==typeof(e=null!=t&&t==a?mxUtils.getValue(e.style,mxConstants.STYLE_LOOP,this.graph.defaultLoopStyle):mxUtils.getValue(e.style,mxConstants.STYLE_NOEDGESTYLE,!1)?null:e.style[mxConstants.STYLE_EDGE])&&(null==(n=mxStyleRegistry.getValue(e))&&this.isAllowEval()&&(n=mxUtils.eval(e)),e=n),"function"==typeof e?e:null},mxGraphView.prototype.updateFloatingTerminalPoints=function(e,n,t){var a=e.absolutePoints,i=a[0];null==a[a.length-1]&&null!=t&&this.updateFloatingTerminalPoint(e,t,n,!1),null==i&&null!=n&&this.updateFloatingTerminalPoint(e,n,t,!0)},mxGraphView.prototype.updateFloatingTerminalPoint=function(e,n,t,a){n=this.getTerminalPort(e,n,a);var i=this.getNextPoint(e,t,a),s=this.graph.isOrthogonal(e);t=mxUtils.toRadians(Number(n.style[mxConstants.STYLE_ROTATION]||"0"));var o=new mxPoint(n.getCenterX(),n.getCenterY());if(0!=t){var r=Math.cos(-t),l=Math.sin(-t);i=mxUtils.getRotatedPoint(i,r,l,o)}r=parseFloat(e.style[mxConstants.STYLE_PERIMETER_SPACING]||0),r+=parseFloat(e.style[a?mxConstants.STYLE_SOURCE_PERIMETER_SPACING:mxConstants.STYLE_TARGET_PERIMETER_SPACING]||0),n=this.getPerimeterPoint(n,i,0==t&&s,r),0!=t&&(r=Math.cos(t),l=Math.sin(t),n=mxUtils.getRotatedPoint(n,r,l,o)),e.setAbsoluteTerminalPoint(n,a)},mxGraphView.prototype.getTerminalPort=function(e,n,t){return null!=(e=mxUtils.getValue(e.style,t?mxConstants.STYLE_SOURCE_PORT:mxConstants.STYLE_TARGET_PORT))&&(null!=(e=this.getState(this.graph.getModel().getCell(e)))&&(n=e)),n},mxGraphView.prototype.getPerimeterPoint=function(e,n,t,a){var i=null;if(null!=e){var s=this.getPerimeterFunction(e);null!=s&&null!=n&&(0<(a=this.getPerimeterBounds(e,a)).width||0<a.height)&&(i=s(a,e,n,t)),null==i&&(i=this.getPoint(e))}return i},mxGraphView.prototype.getRoutingCenterX=function(e){var n=null!=e.style&&parseFloat(e.style[mxConstants.STYLE_ROUTING_CENTER_X])||0;return e.getCenterX()+n*e.width},mxGraphView.prototype.getRoutingCenterY=function(e){var n=null!=e.style&&parseFloat(e.style[mxConstants.STYLE_ROUTING_CENTER_Y])||0;return e.getCenterY()+n*e.height},mxGraphView.prototype.getPerimeterBounds=function(e,n){return n=null!=n?n:0,null!=e&&(n+=parseFloat(e.style[mxConstants.STYLE_PERIMETER_SPACING]||0)),e.getPerimeterBounds(n*this.scale)},mxGraphView.prototype.getPerimeterFunction=function(e){if("string"==typeof(e=e.style[mxConstants.STYLE_PERIMETER])){var n=mxStyleRegistry.getValue(e);null==n&&this.isAllowEval()&&(n=mxUtils.eval(e)),e=n}return"function"==typeof e?e:null},mxGraphView.prototype.getNextPoint=function(e,n,t){var a=null;return null!=(e=e.absolutePoints)&&(t||2<e.length||null==n)&&(a=e.length,a=e[t?Math.min(1,a-1):Math.max(0,a-2)]),null==a&&null!=n&&(a=new mxPoint(n.getCenterX(),n.getCenterY())),a},mxGraphView.prototype.getVisibleTerminal=function(e,n){for(var t=this.graph.getModel(),a=t.getTerminal(e,n),i=a;null!=a&&a!=this.currentRoot;)this.graph.isCellVisible(i)&&!this.graph.isCellCollapsed(a)||(i=a),a=t.getParent(a);return t.getParent(i)==t.getRoot()&&(i=null),i},mxGraphView.prototype.updateEdgeBounds=function(e){var n=e.absolutePoints;if(e.length=0,null!=n&&0<n.length){var t=n[0],a=n[n.length-1];if(null==t||null==a)e.cell!=this.currentRoot&&this.clear(e.cell,!0);else{if(t.x!=a.x||t.y!=a.y){var i=a.x-t.x,s=a.y-t.y;e.terminalDistance=Math.sqrt(i*i+s*s)}else e.terminalDistance=0;a=0;var o=[];if(null!=(s=t)){t=s.x;for(var r=s.y,l=t,d=r,c=1;c<n.length;c++){var m=n[c];null!=m&&(i=s.x-m.x,s=s.y-m.y,i=Math.sqrt(i*i+s*s),o.push(i),a+=i,s=m,t=Math.min(s.x,t),r=Math.min(s.y,r),l=Math.max(s.x,l),d=Math.max(s.y,d))}e.length=a,e.segments=o,e.x=t,e.y=r,e.width=Math.max(1,l-t),e.height=Math.max(1,d-r)}}}},mxGraphView.prototype.getPoint=function(e,n){var t=e.getCenterX(),a=e.getCenterY();if(null==e.segments||null!=n&&!n.relative)null!=n&&(null!=(d=n.offset)&&(t+=d.x,a+=d.y));else{for(var i=e.absolutePoints.length,s=(.5+(null!=n?n.x/2:0))*e.length,o=e.segments[0],r=0,l=1;r+o<s&&l<i-1;)r+=o,o=e.segments[l++];if(i=0==o?0:(s-r)/o,s=e.absolutePoints[l-1],l=e.absolutePoints[l],null!=s&&null!=l){if(r=t=a=0,null!=n){a=n.y;var d=n.offset;null!=d&&(t=d.x,r=d.y)}d=l.x-s.x,l=l.y-s.y,t=s.x+d*i+((0==o?0:l/o)*a+t)*this.scale,a=s.y+l*i-((0==o?0:d/o)*a-r)*this.scale}}return new mxPoint(t,a)},mxGraphView.prototype.getRelativePoint=function(e,n,t){if(null!=(i=this.graph.getModel().getGeometry(e.cell))){var a=e.absolutePoints.length;if(i.relative&&1<a){for(var i=e.length,s=e.segments,o=e.absolutePoints[0],r=e.absolutePoints[1],l=mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t),d=0,c=0,m=0,u=2;u<a;u++)c+=s[u-2],r=e.absolutePoints[u],(o=mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t))<=l&&(l=o,d=u-1,m=c),o=r;return a=s[d],o=e.absolutePoints[d],l=(r=e.absolutePoints[d+1]).x,s=r.y,s=(l=(e=o.x-l)-(l=n-l))*e+(s=(d=o.y-s)-(s=t-s))*d,a<(e=Math.sqrt(s<=0?0:s*s/(e*e+d*d)))&&(e=a),a=Math.sqrt(mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t)),-1==mxUtils.relativeCcw(o.x,o.y,r.x,r.y,n,t)&&(a=-a),new mxPoint((i/2-m-e)/i*-2,a/this.scale)}}return new mxPoint},mxGraphView.prototype.updateEdgeLabelOffset=function(e){var n=e.absolutePoints;if(e.absoluteOffset.x=e.getCenterX(),e.absoluteOffset.y=e.getCenterY(),null!=n&&0<n.length&&null!=e.segments)if((i=this.graph.getCellGeometry(e.cell)).relative){null!=(t=this.getPoint(e,i))&&(e.absoluteOffset=t)}else{var t=n[0],a=n[n.length-1];if(null!=t&&null!=a){n=a.x-t.x;var i,s=a.y-t.y,o=a=0;null!=(i=i.offset)&&(a=i.x,o=i.y),i=t.y+s/2+o*this.scale,e.absoluteOffset.x=t.x+n/2+a*this.scale,e.absoluteOffset.y=i}}},mxGraphView.prototype.getState=function(e,n){n=n||!1;var t=null;return null!=e&&(t=this.states.get(e),this.graph.isCellVisible(e)&&(null==t&&n&&this.graph.isCellVisible(e)?(t=this.createState(e),this.states.put(e,t)):n&&null!=t&&this.updateStyle&&(t.style=this.graph.getCellStyle(e)))),t},mxGraphView.prototype.isRendering=function(){return this.rendering},mxGraphView.prototype.setRendering=function(e){this.rendering=e},mxGraphView.prototype.isAllowEval=function(){return this.allowEval},mxGraphView.prototype.setAllowEval=function(e){this.allowEval=e},mxGraphView.prototype.getStates=function(){return this.states},mxGraphView.prototype.setStates=function(e){this.states=e},mxGraphView.prototype.getCellStates=function(e){if(null==e)return this.states;for(var n=[],t=0;t<e.length;t++){var a=this.getState(e[t]);null!=a&&n.push(a)}return n},mxGraphView.prototype.removeState=function(e){var n=null;return null!=e&&(null!=(n=this.states.remove(e))&&(this.graph.cellRenderer.destroy(n),n.destroy())),n},mxGraphView.prototype.createState=function(e){var n=this.graph.getCellStyle(e);return e=new mxCellState(this,e,n),this.graph.cellRenderer.initialize(e,this.isRendering()),e},mxGraphView.prototype.getCanvas=function(){return this.canvas},mxGraphView.prototype.getBackgroundPane=function(){return this.backgroundPane},mxGraphView.prototype.getDrawPane=function(){return this.drawPane},mxGraphView.prototype.getOverlayPane=function(){return this.overlayPane},mxGraphView.prototype.isContainerEvent=function(e){return(e=mxEvent.getSource(e))==this.graph.container||e.parentNode==this.backgroundPane||null!=e.parentNode&&e.parentNode.parentNode==this.backgroundPane||e==this.canvas.parentNode||e==this.canvas||e==this.backgroundPane||e==this.drawPane||e==this.overlayPane},mxGraphView.prototype.isScrollEvent=function(e){var n=mxUtils.getOffset(this.graph.container);e=new mxPoint(e.clientX-n.x,e.clientY-n.y);n=this.graph.container.offsetWidth;var t=this.graph.container.clientWidth;return t<n&&e.x>t+2&&e.x<=n||(n=this.graph.container.offsetHeight,(t=this.graph.container.clientHeight)<n&&e.y>t+2&&e.y<=n)},mxGraphView.prototype.init=function(){this.installListeners();var e=this.graph;e.dialect==mxConstants.DIALECT_SVG?this.createSvg():e.dialect==mxConstants.DIALECT_VML?this.createVml():this.createHtml()},mxGraphView.prototype.installListeners=function(){var a=this.graph,i=a.container;if(null!=i){mxEvent.addGestureListeners(i,mxUtils.bind(this,function(e){mxClient.IS_TOUCH&&a.isEditing()&&a.stopEditing(!a.isInvokesStopCellEditing()),this.isContainerEvent(e)&&(!mxClient.IS_IE&&!mxClient.IS_GC&&!mxClient.IS_OP&&!mxClient.IS_SF||!this.isScrollEvent(e))&&a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.isContainerEvent(e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.isContainerEvent(e)&&a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))})),mxEvent.addListener(i,"dblclick",mxUtils.bind(this,function(e){a.dblClick(e)}));a.addMouseListener({mouseDown:function(e,n){a.panningHandler.hideMenu()},mouseMove:function(){},mouseUp:function(){}}),this.moveHandler=mxUtils.bind(this,function(e){var n,t;null!=a.tooltipHandler&&a.tooltipHandler.isHideOnHover()&&a.tooltipHandler.hide(),this.captureDocumentGesture&&a.isMouseDown&&!mxEvent.isConsumed(e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,(n=e,t=null,mxClient.IS_TOUCH&&(t=mxEvent.getClientX(n),n=mxEvent.getClientY(n),n=mxUtils.convertPoint(i,t,n),t=a.view.getState(a.getCellAt(n.x,n.y))),t)))}),this.endHandler=mxUtils.bind(this,function(e){this.captureDocumentGesture&&a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}),mxEvent.addGestureListeners(document,null,this.moveHandler,this.endHandler)}},mxGraphView.prototype.createHtml=function(){var e=this.graph.container;null!=e&&(this.canvas=this.createHtmlPane("100%","100%"),this.backgroundPane=this.createHtmlPane("1px","1px"),this.drawPane=this.createHtmlPane("1px","1px"),this.overlayPane=this.createHtmlPane("1px","1px"),this.canvas.appendChild(this.backgroundPane),this.canvas.appendChild(this.drawPane),this.canvas.appendChild(this.overlayPane),e.appendChild(this.canvas),mxClient.IS_QUIRKS&&(e=mxUtils.bind(this,function(e){e=this.getGraphBounds(),this.updateHtmlCanvasSize(e.x+e.width+this.graph.border,e.y+e.height+this.graph.border)}),mxEvent.addListener(window,"resize",e)))},mxGraphView.prototype.updateHtmlCanvasSize=function(e,n){if(null!=this.graph.container){var t=this.graph.container.offsetHeight;this.canvas.style.width=this.graph.container.offsetWidth<e?e+"px":"100%",this.canvas.style.height=t<n?n+"px":"100%"}},mxGraphView.prototype.createHtmlPane=function(e,n){var t=document.createElement("DIV");return null!=e&&null!=n?(t.style.position="absolute",t.style.left="0px",t.style.top="0px",t.style.width=e,t.style.height=n):t.style.position="relative",t},mxGraphView.prototype.createVml=function(){var e=this.graph.container;if(null!=e){var n=e.offsetWidth,t=e.offsetHeight;this.canvas=this.createVmlPane(n,t),this.backgroundPane=this.createVmlPane(n,t),this.drawPane=this.createVmlPane(n,t),this.overlayPane=this.createVmlPane(n,t),this.canvas.appendChild(this.backgroundPane),this.canvas.appendChild(this.drawPane),this.canvas.appendChild(this.overlayPane),e.appendChild(this.canvas)}},mxGraphView.prototype.createVmlPane=function(e,n){var t=document.createElement(mxClient.VML_PREFIX+":group");return t.style.position="absolute",t.style.left="0px",t.style.top="0px",t.style.width=e+"px",t.style.height=n+"px",t.setAttribute("coordsize",e+","+n),t.setAttribute("coordorigin","0,0"),t},mxGraphView.prototype.createSvg=function(){var e=this.graph.container;this.canvas=document.createElementNS(mxConstants.NS_SVG,"g"),this.backgroundPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.backgroundPane),this.drawPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.drawPane),this.overlayPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.overlayPane);var n=document.createElementNS(mxConstants.NS_SVG,"svg");n.style.width="100%",n.style.height="100%",n.style.display="block",n.appendChild(this.canvas),null!=e&&(e.appendChild(n),"static"==mxUtils.getCurrentStyle(e).position&&(e.style.position="relative"))},mxGraphView.prototype.destroy=function(){var e=null!=this.canvas?this.canvas.ownerSVGElement:null;null==e&&(e=this.canvas),null!=e&&null!=e.parentNode&&(this.clear(this.currentRoot,!0),mxEvent.removeGestureListeners(document,null,this.moveHandler,this.endHandler),mxEvent.release(this.graph.container),e.parentNode.removeChild(e),this.overlayPane=this.drawPane=this.backgroundPane=this.canvas=this.endHandler=this.moveHandler=null)},mxCurrentRootChange.prototype.execute=function(){var e=this.view.currentRoot;this.view.currentRoot=this.previous,this.previous=e,null!=(e=this.view.graph.getTranslateForRoot(this.view.currentRoot))&&(this.view.translate=new mxPoint(-e.x,-e.y)),this.view.fireEvent(new mxEventObject(this.isUp?mxEvent.UP:mxEvent.DOWN,"root",this.view.currentRoot,"previous",this.previous)),this.isUp?(this.view.clear(this.view.currentRoot,!0),this.view.validate()):this.view.refresh(),this.isUp=!this.isUp},mxLoadResources&&mxResources.add(mxClient.basePath+"/resources/graph"),mxGraph.prototype=new mxEventSource,mxGraph.prototype.constructor=mxGraph,mxGraph.prototype.EMPTY_ARRAY=[],mxGraph.prototype.mouseListeners=null,mxGraph.prototype.isMouseDown=!1,mxGraph.prototype.model=null,mxGraph.prototype.view=null,mxGraph.prototype.stylesheet=null,mxGraph.prototype.selectionModel=null,mxGraph.prototype.cellEditor=null,mxGraph.prototype.cellRenderer=null,mxGraph.prototype.multiplicities=null,mxGraph.prototype.renderHint=null,mxGraph.prototype.dialect=null,mxGraph.prototype.gridSize=10,mxGraph.prototype.gridEnabled=!0,mxGraph.prototype.portsEnabled=!0,mxGraph.prototype.doubleTapEnabled=!0,mxGraph.prototype.doubleTapTimeout=700,mxGraph.prototype.doubleTapTolerance=25,mxGraph.prototype.lastTouchY=0,mxGraph.prototype.lastTouchY=0,mxGraph.prototype.lastTouchTime=0,mxGraph.prototype.gestureEnabled=!0,mxGraph.prototype.tolerance=4,mxGraph.prototype.defaultOverlap=.5,mxGraph.prototype.defaultParent=null,mxGraph.prototype.alternateEdgeStyle=null,mxGraph.prototype.backgroundImage=null,mxGraph.prototype.pageVisible=!1,mxGraph.prototype.pageBreaksVisible=!1,mxGraph.prototype.pageBreakColor="gray",mxGraph.prototype.pageBreakDashed=!0,mxGraph.prototype.minPageBreakDist=20,mxGraph.prototype.preferPageSize=!1,mxGraph.prototype.pageFormat=mxConstants.PAGE_FORMAT_A4_PORTRAIT,mxGraph.prototype.pageScale=1.5,mxGraph.prototype.enabled=!0,mxGraph.prototype.escapeEnabled=!0,mxGraph.prototype.invokesStopCellEditing=!0,mxGraph.prototype.enterStopsCellEditing=!1,mxGraph.prototype.useScrollbarsForPanning=!0,mxGraph.prototype.exportEnabled=!0,mxGraph.prototype.importEnabled=!0,mxGraph.prototype.cellsLocked=!1,mxGraph.prototype.cellsCloneable=!0,mxGraph.prototype.foldingEnabled=!0,mxGraph.prototype.cellsEditable=!0,mxGraph.prototype.cellsDeletable=!0,mxGraph.prototype.cellsMovable=!0,mxGraph.prototype.edgeLabelsMovable=!0,mxGraph.prototype.vertexLabelsMovable=!1,mxGraph.prototype.dropEnabled=!1,mxGraph.prototype.splitEnabled=!0,mxGraph.prototype.cellsResizable=!0,mxGraph.prototype.cellsBendable=!0,mxGraph.prototype.cellsSelectable=!0,mxGraph.prototype.cellsDisconnectable=!0,mxGraph.prototype.autoSizeCells=!1,mxGraph.prototype.autoScroll=!0,mxGraph.prototype.timerAutoScroll=!1,mxGraph.prototype.allowAutoPanning=!1,mxGraph.prototype.ignoreScrollbars=!1,mxGraph.prototype.autoExtend=!0,mxGraph.prototype.maximumGraphBounds=null,mxGraph.prototype.minimumGraphSize=null,mxGraph.prototype.minimumContainerSize=null,mxGraph.prototype.maximumContainerSize=null,mxGraph.prototype.resizeContainer=!1,mxGraph.prototype.border=0,mxGraph.prototype.ordered=!0,mxGraph.prototype.keepEdgesInForeground=!1,mxGraph.prototype.keepEdgesInBackground=!0,mxGraph.prototype.allowNegativeCoordinates=!0,mxGraph.prototype.constrainChildren=!0,mxGraph.prototype.extendParents=!0,mxGraph.prototype.extendParentsOnAdd=!0,mxGraph.prototype.collapseToPreferredSize=!0,mxGraph.prototype.zoomFactor=1.2,mxGraph.prototype.keepSelectionVisibleOnZoom=!1,mxGraph.prototype.centerZoom=!0,mxGraph.prototype.resetViewOnRootChange=!0,mxGraph.prototype.resetEdgesOnResize=!1,mxGraph.prototype.resetEdgesOnMove=!1,mxGraph.prototype.resetEdgesOnConnect=!0,mxGraph.prototype.allowLoops=!1,mxGraph.prototype.defaultLoopStyle=mxEdgeStyle.Loop,mxGraph.prototype.multigraph=!0,mxGraph.prototype.connectableEdges=!1,mxGraph.prototype.allowDanglingEdges=!0,mxGraph.prototype.cloneInvalidEdges=!1,mxGraph.prototype.disconnectOnMove=!0,mxGraph.prototype.labelsVisible=!0,mxGraph.prototype.htmlLabels=!1,mxGraph.prototype.swimlaneSelectionEnabled=!0,mxGraph.prototype.swimlaneNesting=!0,mxGraph.prototype.swimlaneIndicatorColorAttribute=mxConstants.STYLE_FILLCOLOR,mxGraph.prototype.imageBundles=null,mxGraph.prototype.minFitScale=.1,mxGraph.prototype.maxFitScale=8,mxGraph.prototype.panDx=0,mxGraph.prototype.panDy=0,mxGraph.prototype.collapsedImage=new mxImage(mxClient.imageBasePath+"/collapsed.gif",9,9),mxGraph.prototype.expandedImage=new mxImage(mxClient.imageBasePath+"/expanded.gif",9,9),mxGraph.prototype.warningImage=new mxImage("/assets/plugins/mxgraph/images/warning.gif",16,16),mxGraph.prototype.alreadyConnectedResource="none"!=mxClient.language?"alreadyConnected":"",mxGraph.prototype.containsValidationErrorsResource="none"!=mxClient.language?"containsValidationErrors":"",mxGraph.prototype.collapseExpandResource="none"!=mxClient.language?"collapse-expand":"",mxGraph.prototype.init=function(e){this.container=e,this.cellEditor=this.createCellEditor(),this.view.init(),this.sizeDidChange(),mxClient.IS_IE&&(mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})),mxEvent.addListener(e,"selectstart",mxUtils.bind(this,function(){return this.isEditing()}))),8==document.documentMode&&e.insertAdjacentHTML("beforeend",'<v:group style="DISPLAY: none;"></v:group>')},mxGraph.prototype.createHandlers=function(e){this.tooltipHandler=new mxTooltipHandler(this),this.tooltipHandler.setEnabled(!1),this.panningHandler=new mxPanningHandler(this),this.panningHandler.panningEnabled=!1,this.selectionCellsHandler=new mxSelectionCellsHandler(this),this.connectionHandler=new mxConnectionHandler(this),this.connectionHandler.setEnabled(!1),this.graphHandler=new mxGraphHandler(this)},mxGraph.prototype.createSelectionModel=function(){return new mxGraphSelectionModel(this)},mxGraph.prototype.createStylesheet=function(){return new mxStylesheet},mxGraph.prototype.createGraphView=function(){return new mxGraphView(this)},mxGraph.prototype.createCellRenderer=function(){return new mxCellRenderer},mxGraph.prototype.createCellEditor=function(){return new mxCellEditor(this)},mxGraph.prototype.getModel=function(){return this.model},mxGraph.prototype.getView=function(){return this.view},mxGraph.prototype.getStylesheet=function(){return this.stylesheet},mxGraph.prototype.setStylesheet=function(e){this.stylesheet=e},mxGraph.prototype.getSelectionModel=function(){return this.selectionModel},mxGraph.prototype.setSelectionModel=function(e){this.selectionModel=e},mxGraph.prototype.getSelectionCellsForChanges=function(e){for(var n=[],t=0;t<e.length;t++){var a=e[t];if(a.constructor!=mxRootChange){var i=null;a instanceof mxChildChange&&null==a.previous?i=a.child:null!=a.cell&&a.cell instanceof mxCell&&(i=a.cell),null!=i&&mxUtils.indexOf(n,i)<0&&n.push(i)}}return this.getModel().getTopmostCells(n)},mxGraph.prototype.graphModelChanged=function(e){for(var n=0;n<e.length;n++)this.processChange(e[n]);this.removeSelectionCells(this.getRemovedCellsForChanges(e)),this.view.validate(),this.sizeDidChange()},mxGraph.prototype.getRemovedCellsForChanges=function(e){for(var n=[],t=0;t<e.length;t++){var a=e[t];if(a instanceof mxRootChange)break;a instanceof mxChildChange?null!=a.previous&&null==a.parent&&(n=n.concat(this.model.getDescendants(a.child))):a instanceof mxVisibleChange&&(n=n.concat(this.model.getDescendants(a.cell)))}return n},mxGraph.prototype.processChange=function(e){if(e instanceof mxRootChange)this.clearSelection(),this.removeStateForCell(e.previous),this.resetViewOnRootChange&&(this.view.scale=1,this.view.translate.x=0,this.view.translate.y=0),this.fireEvent(new mxEventObject(mxEvent.ROOT));else if(e instanceof mxChildChange){var n=this.model.getParent(e.child);null!=n?this.view.invalidate(e.child,!0,!1,null!=e.previous):(this.removeStateForCell(e.child),this.view.currentRoot==e.child&&this.home()),n!=e.previous&&(null!=n&&this.view.invalidate(n,!1,!1),null!=e.previous&&this.view.invalidate(e.previous,!1,!1))}else e instanceof mxTerminalChange||e instanceof mxGeometryChange?this.view.invalidate(e.cell):e instanceof mxValueChange?this.view.invalidate(e.cell,!1,!1):e instanceof mxStyleChange?(this.view.invalidate(e.cell,!0,!0,!1),this.view.removeState(e.cell)):null!=e.cell&&e.cell instanceof mxCell&&this.removeStateForCell(e.cell)},mxGraph.prototype.removeStateForCell=function(e){for(var n=this.model.getChildCount(e),t=0;t<n;t++)this.removeStateForCell(this.model.getChildAt(e,t));this.view.removeState(e)},mxGraph.prototype.addCellOverlay=function(e,n){null==e.overlays&&(e.overlays=[]),e.overlays.push(n);var t=this.view.getState(e);return null!=t&&this.cellRenderer.redraw(t),this.fireEvent(new mxEventObject(mxEvent.ADD_OVERLAY,"cell",e,"overlay",n)),n},mxGraph.prototype.getCellOverlays=function(e){return e.overlays},mxGraph.prototype.removeCellOverlay=function(e,n){if(null==n)this.removeCellOverlays(e);else{var t=mxUtils.indexOf(e.overlays,n);0<=t?(e.overlays.splice(t,1),0==e.overlays.length&&(e.overlays=null),null!=(t=this.view.getState(e))&&this.cellRenderer.redraw(t),this.fireEvent(new mxEventObject(mxEvent.REMOVE_OVERLAY,"cell",e,"overlay",n))):n=null}return n},mxGraph.prototype.removeCellOverlays=function(e){var n=e.overlays;if(null!=n){e.overlays=null;var t=this.view.getState(e);for(null!=t&&this.cellRenderer.redraw(t),t=0;t<n.length;t++)this.fireEvent(new mxEventObject(mxEvent.REMOVE_OVERLAY,"cell",e,"overlay",n[t]))}return n},mxGraph.prototype.clearCellOverlays=function(e){e=null!=e?e:this.model.getRoot(),this.removeCellOverlays(e);for(var n=this.model.getChildCount(e),t=0;t<n;t++){var a=this.model.getChildAt(e,t);this.clearCellOverlays(a)}},mxGraph.prototype.setCellWarning=function(t,e,n,a){return null!=e&&0<e.length?(e=new mxCellOverlay(n=null!=n?n:this.warningImage,"<font color=red>"+e+"</font>"),a&&e.addListener(mxEvent.CLICK,mxUtils.bind(this,function(e,n){this.isEnabled()&&this.setSelectionCell(t)})),this.addCellOverlay(t,e)):(this.removeCellOverlays(t),null)},mxGraph.prototype.startEditing=function(e){this.startEditingAtCell(null,e)},mxGraph.prototype.startEditingAtCell=function(e,n){null==e&&(null!=(e=this.getSelectionCell())&&!this.isCellEditable(e)&&(e=null)),null!=e&&(this.fireEvent(new mxEventObject(mxEvent.START_EDITING,"cell",e,"event",n)),this.cellEditor.startEditing(e,n))},mxGraph.prototype.getEditingValue=function(e,n){return this.convertValueToString(e)},mxGraph.prototype.stopEditing=function(e){this.cellEditor.stopEditing(e)},mxGraph.prototype.labelChanged=function(e,n,t){this.model.beginUpdate();try{this.cellLabelChanged(e,n,this.isAutoSizeCell(e)),this.fireEvent(new mxEventObject(mxEvent.LABEL_CHANGED,"cell",e,"value",n,"event",t))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellLabelChanged=function(e,n,t){this.model.beginUpdate();try{this.model.setValue(e,n),t&&this.cellSizeUpdated(e,!1)}finally{this.model.endUpdate()}},mxGraph.prototype.escape=function(e){this.stopEditing(!0),this.connectionHandler.reset(),this.graphHandler.reset(),e=this.getSelectionCells();for(var n=0;n<e.length;n++){var t=this.view.getState(e[n]);null!=t&&null!=t.handler&&t.handler.reset()}},mxGraph.prototype.click=function(e){var n=e.getEvent(),t=e.getCell(),a=new mxEventObject(mxEvent.CLICK,"event",n,"cell",t);e.isConsumed()&&a.consume(),this.fireEvent(a),this.isEnabled()&&!mxEvent.isConsumed(n)&&!a.isConsumed()&&(null!=t?this.selectCellForEvent(t,n):(t=null,this.isSwimlaneSelectionEnabled()&&(t=this.getSwimlaneAt(e.getGraphX(),e.getGraphY())),null!=t?this.selectCellForEvent(t,n):this.isToggleEvent(n)||this.clearSelection()))},mxGraph.prototype.dblClick=function(e,n){var t=new mxEventObject(mxEvent.DOUBLE_CLICK,"event",e,"cell",n);this.fireEvent(t),this.isEnabled()&&!mxEvent.isConsumed(e)&&!t.isConsumed()&&null!=n&&this.isCellEditable(n)&&this.startEditingAtCell(n,e)},mxGraph.prototype.scrollPointToVisible=function(e,n,t,a){if(this.timerAutoScroll||!this.ignoreScrollbars&&!mxUtils.hasScrollbars(this.container))this.allowAutoPanning&&!this.panningHandler.active&&(null==this.panningManager&&(this.panningManager=this.createPanningManager()),this.panningManager.panTo(e+this.panDx,n+this.panDy));else{var i=this.container;if(a=null!=a?a:20,e>=i.scrollLeft&&n>=i.scrollTop&&e<=i.scrollLeft+i.clientWidth&&n<=i.scrollTop+i.clientHeight){var s=i.scrollLeft+i.clientWidth-e;if(s<a){if(e=i.scrollLeft,i.scrollLeft+=a-s,t&&e==i.scrollLeft){if(this.dialect==mxConstants.DIALECT_SVG){e=this.view.getDrawPane().ownerSVGElement;var o=this.container.scrollWidth+a-s}else o=Math.max(i.clientWidth,i.scrollWidth)+a-s,e=this.view.getCanvas();e.style.width=o+"px",i.scrollLeft+=a-s}}else(s=e-i.scrollLeft)<a&&(i.scrollLeft-=a-s);(s=i.scrollTop+i.clientHeight-n)<a?(e=i.scrollTop,i.scrollTop+=a-s,e==i.scrollTop&&t&&(this.dialect==mxConstants.DIALECT_SVG?(e=this.view.getDrawPane().ownerSVGElement,n=this.container.scrollHeight+a-s):(n=Math.max(i.clientHeight,i.scrollHeight)+a-s,e=this.view.getCanvas()),e.style.height=n+"px",i.scrollTop+=a-s)):(s=n-i.scrollTop)<a&&(i.scrollTop-=a-s)}}},mxGraph.prototype.createPanningManager=function(){return new mxPanningManager(this)},mxGraph.prototype.getBorderSizes=function(){function e(e){var n=0;n="thin"==e?2:"medium"==e?4:"thick"==e?6:parseInt(e);return isNaN(n)&&(n=0),n}var n=mxUtils.getCurrentStyle(this.container),t=new mxRectangle;return t.x=e(n.borderLeftWidth)+parseInt(n.paddingLeft||0),t.y=e(n.borderTopWidth)+parseInt(n.paddingTop||0),t.width=e(n.borderRightWidth)+parseInt(n.paddingRight||0),t.height=e(n.borderBottomWidth)+parseInt(n.paddingBottom||0),t},mxGraph.prototype.getPreferredPageSize=function(e,n,t){e=this.view.scale;var a=this.view.translate,i=this.pageFormat,s=e*this.pageScale;i=new mxRectangle(0,0,i.width*s,i.height*s);return n=this.pageBreaksVisible?Math.ceil(n/i.width):1,t=this.pageBreaksVisible?Math.ceil(t/i.height):1,new mxRectangle(0,0,n*i.width+2+a.x/e,t*i.height+2+a.y/e)},mxGraph.prototype.sizeDidChange=function(){var e=this.getGraphBounds();if(null!=this.container){var n=this.getBorder(),t=Math.max(0,e.x+e.width+1+n);n=Math.max(0,e.y+e.height+1+n);if(null!=this.minimumContainerSize&&(t=Math.max(t,this.minimumContainerSize.width),n=Math.max(n,this.minimumContainerSize.height)),this.resizeContainer&&this.doResizeContainer(t,n),this.preferPageSize||!mxClient.IS_IE&&this.pageVisible){var a=this.getPreferredPageSize(e,t,n);null!=a&&(t=a.width,n=a.height)}null!=this.minimumGraphSize&&(t=Math.max(t,this.minimumGraphSize.width*this.view.scale),n=Math.max(n,this.minimumGraphSize.height*this.view.scale)),t=Math.ceil(t-1),n=Math.ceil(n-1),this.dialect==mxConstants.DIALECT_SVG?((a=this.view.getDrawPane().ownerSVGElement).style.minWidth=Math.max(1,t)+"px",a.style.minHeight=Math.max(1,n)+"px",a.style.width="100%",a.style.height="100%"):mxClient.IS_QUIRKS?this.view.updateHtmlCanvasSize(Math.max(1,t),Math.max(1,n)):(this.view.canvas.style.minWidth=Math.max(1,t)+"px",this.view.canvas.style.minHeight=Math.max(1,n)+"px"),this.updatePageBreaks(this.pageBreaksVisible,t-1,n-1)}this.fireEvent(new mxEventObject(mxEvent.SIZE,"bounds",e))},mxGraph.prototype.doResizeContainer=function(e,n){if(mxClient.IS_IE)if(mxClient.IS_QUIRKS){var t=this.getBorderSizes();e+=Math.max(2,t.x+t.width+1),n+=Math.max(2,t.y+t.height+1)}else 9<=document.documentMode?(e+=3,n+=5):(e+=1,n+=1);else n+=1;null!=this.maximumContainerSize&&(e=Math.min(this.maximumContainerSize.width,e),n=Math.min(this.maximumContainerSize.height,n)),this.container.style.width=Math.ceil(e)+"px",this.container.style.height=Math.ceil(n)+"px"},mxGraph.prototype.updatePageBreaks=function(e,n,t){var a=this.view.scale,i=this.view.translate,s=this.pageFormat,o=a*this.pageScale;i=new mxRectangle(a*i.x,a*i.y,s.width*o,s.height*o);if(e=e&&Math.min(i.width,i.height)>this.minPageBreakDist,i.x=mxUtils.mod(i.x,i.width),i.y=mxUtils.mod(i.y,i.height),s=e?Math.ceil((n-i.x)/i.width):0,e=e?Math.ceil((t-i.y)/i.height):0,null==this.horizontalPageBreaks&&0<s&&(this.horizontalPageBreaks=[]),null!=this.horizontalPageBreaks){for(o=0;o<=s;o++){var r=[new mxPoint(i.x+o*i.width,1),new mxPoint(i.x+o*i.width,t)];null!=this.horizontalPageBreaks[o]?(this.horizontalPageBreaks[o].scale=1,this.horizontalPageBreaks[o].points=r,this.horizontalPageBreaks[o].redraw()):((r=new mxPolyline(r,this.pageBreakColor,this.scale)).dialect=this.dialect,r.isDashed=this.pageBreakDashed,r.scale=a,r.init(this.view.backgroundPane),r.redraw(),this.horizontalPageBreaks[o]=r)}for(o=s;o<this.horizontalPageBreaks.length;o++)this.horizontalPageBreaks[o].destroy();this.horizontalPageBreaks.splice(s,this.horizontalPageBreaks.length-s)}if(null==this.verticalPageBreaks&&0<e&&(this.verticalPageBreaks=[]),null!=this.verticalPageBreaks){for(o=0;o<=e;o++)r=[new mxPoint(1,i.y+o*i.height),new mxPoint(n,i.y+o*i.height)],null!=this.verticalPageBreaks[o]?(this.verticalPageBreaks[o].scale=1,this.verticalPageBreaks[o].points=r,this.verticalPageBreaks[o].redraw()):((r=new mxPolyline(r,this.pageBreakColor,a)).dialect=this.dialect,r.isDashed=this.pageBreakDashed,r.scale=a,r.init(this.view.backgroundPane),r.redraw(),this.verticalPageBreaks[o]=r);for(o=e;o<this.verticalPageBreaks.length;o++)this.verticalPageBreaks[o].destroy();this.verticalPageBreaks.splice(e,this.verticalPageBreaks.length-e)}},mxGraph.prototype.getCellStyle=function(e){var n=this.model.getStyle(e),t=null;t=this.model.isEdge(e)?this.stylesheet.getDefaultEdgeStyle():this.stylesheet.getDefaultVertexStyle();return null!=n&&(t=this.postProcessCellStyle(this.stylesheet.getCellStyle(n,t))),null==t&&(t=mxGraph.prototype.EMPTY_ARRAY),t},mxGraph.prototype.postProcessCellStyle=function(e){if(null!=e){var n=e[mxConstants.STYLE_IMAGE],t=this.getImageFromBundles(n);null!=t?e[mxConstants.STYLE_IMAGE]=t:t=n,null!=t&&"data:image/"==t.substring(0,11)&&(0<(n=t.indexOf(","))&&(t=t.substring(0,n)+";base64,"+t.substring(n+1)),e[mxConstants.STYLE_IMAGE]=t)}return e},mxGraph.prototype.setCellStyle=function(e,n){if(null!=(n=n||this.getSelectionCells())){this.model.beginUpdate();try{for(var t=0;t<n.length;t++)this.model.setStyle(n[t],e)}finally{this.model.endUpdate()}}},mxGraph.prototype.toggleCellStyle=function(e,n,t){t=t||this.getSelectionCell(),this.toggleCellStyles(e,n,[t])},mxGraph.prototype.toggleCellStyles=function(e,n,t){var a;(n=null!=n&&n,null!=(t=t||this.getSelectionCells())&&0<t.length)&&(null!=(a=null!=(a=this.view.getState(t[0]))?a.style:this.getCellStyle(t[0]))&&(n=mxUtils.getValue(a,e,n)?0:1,this.setCellStyles(e,n,t)))},mxGraph.prototype.setCellStyles=function(e,n,t){t=t||this.getSelectionCells(),mxUtils.setCellStyles(this.model,t,e,n)},mxGraph.prototype.toggleCellStyleFlags=function(e,n,t){this.setCellStyleFlags(e,n,null,t)},mxGraph.prototype.setCellStyleFlags=function(e,n,t,a){if(null!=(a=a||this.getSelectionCells())&&0<a.length){var i;if(null==t)null!=(i=null!=(i=this.view.getState(a[0]))?i.style:this.getCellStyle(a[0]))&&(t=(parseInt(i[e]||0)&n)!=n);mxUtils.setCellStyleFlags(this.model,a,e,n,t)}},mxGraph.prototype.alignCells=function(e,n,t){if(null==n&&(n=this.getSelectionCells()),null!=n&&1<n.length){if(null==t)for(var a=0;a<n.length;a++){var i=this.getCellGeometry(n[a]);if(null!=i&&!this.model.isEdge(n[a]))if(null==t){if(e==mxConstants.ALIGN_CENTER){t=i.x+i.width/2;break}if(e==mxConstants.ALIGN_RIGHT)t=i.x+i.width;else if(e==mxConstants.ALIGN_TOP)t=i.y;else{if(e==mxConstants.ALIGN_MIDDLE){t=i.y+i.height/2;break}t=e==mxConstants.ALIGN_BOTTOM?i.y+i.height:i.x}}else t=e==mxConstants.ALIGN_RIGHT?Math.max(t,i.x+i.width):e==mxConstants.ALIGN_TOP?Math.min(t,i.y):e==mxConstants.ALIGN_BOTTOM?Math.max(t,i.y+i.height):Math.min(t,i.x)}if(null!=t){this.model.beginUpdate();try{for(a=0;a<n.length;a++)null!=(i=this.getCellGeometry(n[a]))&&!this.model.isEdge(n[a])&&(i=i.clone(),e==mxConstants.ALIGN_CENTER?i.x=t-i.width/2:e==mxConstants.ALIGN_RIGHT?i.x=t-i.width:e==mxConstants.ALIGN_TOP?i.y=t:e==mxConstants.ALIGN_MIDDLE?i.y=t-i.height/2:e==mxConstants.ALIGN_BOTTOM?i.y=t-i.height:i.x=t,this.model.setGeometry(n[a],i));this.fireEvent(new mxEventObject(mxEvent.ALIGN_CELLS,"align",e,"cells",n))}finally{this.model.endUpdate()}}}return n},mxGraph.prototype.flipEdge=function(e){if(null!=e&&null!=this.alternateEdgeStyle){this.model.beginUpdate();try{var n=this.model.getStyle(e);null==n||0==n.length?this.model.setStyle(e,this.alternateEdgeStyle):this.model.setStyle(e,null),this.resetEdge(e),this.fireEvent(new mxEventObject(mxEvent.FLIP_EDGE,"edge",e))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.addImageBundle=function(e){this.imageBundles.push(e)},mxGraph.prototype.removeImageBundle=function(e){for(var n=[],t=0;t<this.imageBundles.length;t++)this.imageBundles[t]!=e&&n.push(this.imageBundles[t]);this.imageBundles=n},mxGraph.prototype.getImageFromBundles=function(e){if(null!=e)for(var n=0;n<this.imageBundles.length;n++){var t=this.imageBundles[n].getImage(e);if(null!=t)return t}return null},mxGraph.prototype.orderCells=function(e,n){null==n&&(n=mxUtils.sortCells(this.getSelectionCells(),!0)),this.model.beginUpdate();try{this.cellsOrdered(n,e),this.fireEvent(new mxEventObject(mxEvent.ORDER_CELLS,"back",e,"cells",n))}finally{this.model.endUpdate()}return n},mxGraph.prototype.cellsOrdered=function(e,n){if(null!=e){this.model.beginUpdate();try{for(var t=0;t<e.length;t++){var a=this.model.getParent(e[t]);n?this.model.add(a,e[t],t):this.model.add(a,e[t],this.model.getChildCount(a)-1)}this.fireEvent(new mxEventObject(mxEvent.CELLS_ORDERED,"back",n,"cells",e))}finally{this.model.endUpdate()}}},mxGraph.prototype.groupCells=function(e,n,t){null==t&&(t=mxUtils.sortCells(this.getSelectionCells(),!0)),t=this.getCellsForGroup(t),null==e&&(e=this.createGroupCell(t));var a=this.getBoundsForGroup(e,t,n);if(0<t.length&&null!=a){var i=this.model.getParent(e);null==i&&(i=this.model.getParent(t[0])),this.model.beginUpdate();try{null==this.getCellGeometry(e)&&this.model.setGeometry(e,new mxGeometry);var s=this.model.getChildCount(i);this.cellsAdded([e],i,s,null,null,!1),s=this.model.getChildCount(e),this.cellsAdded(t,e,s,null,null,!1,!1),this.cellsMoved(t,-a.x,-a.y,!1,!0),this.cellsResized([e],[a]),this.fireEvent(new mxEventObject(mxEvent.GROUP_CELLS,"group",e,"border",n,"cells",t))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.getCellsForGroup=function(e){var n=[];if(null!=e&&0<e.length){var t=this.model.getParent(e[0]);n.push(e[0]);for(var a=1;a<e.length;a++)this.model.getParent(e[a])==t&&n.push(e[a])}return n},mxGraph.prototype.getBoundsForGroup=function(e,n,t){return null!=(n=this.getBoundingBoxFromGeometry(n))&&(this.isSwimlane(e)&&(e=this.getStartSize(e),n.x-=e.width,n.y-=e.height,n.width+=e.width,n.height+=e.height),n.x-=t,n.y-=t,n.width+=2*t,n.height+=2*t),n},mxGraph.prototype.createGroupCell=function(e){return(e=new mxCell("")).setVertex(!0),e.setConnectable(!1),e},mxGraph.prototype.ungroupCells=function(e){var n=[];if(null==e){e=this.getSelectionCells();for(var t=[],a=0;a<e.length;a++)0<this.model.getChildCount(e[a])&&t.push(e[a]);e=t}if(null!=e&&0<e.length){this.model.beginUpdate();try{for(a=0;a<e.length;a++){if(null!=(i=this.model.getChildren(e[a]))&&0<i.length){var i=i.slice(),s=this.model.getParent(e[a]),o=this.model.getChildCount(s);this.cellsAdded(i,s,o,null,null,!0),n=n.concat(i)}}this.cellsRemoved(this.addAllEdges(e)),this.fireEvent(new mxEventObject(mxEvent.UNGROUP_CELLS,"cells",e))}finally{this.model.endUpdate()}}return n},mxGraph.prototype.removeCellsFromParent=function(e){null==e&&(e=this.getSelectionCells()),this.model.beginUpdate();try{var n=this.getDefaultParent(),t=this.model.getChildCount(n);this.cellsAdded(e,n,t,null,null,!0),this.fireEvent(new mxEventObject(mxEvent.REMOVE_CELLS_FROM_PARENT,"cells",e))}finally{this.model.endUpdate()}return e},mxGraph.prototype.updateGroupBounds=function(e,n,t){null==e&&(e=this.getSelectionCells()),n=null!=n?n:0,t=null!=t&&t,this.model.beginUpdate();try{for(var a=0;a<e.length;a++){if(null!=(r=this.getCellGeometry(e[a]))){var i=this.getChildCells(e[a]);if(null!=i&&0<i.length){var s=this.getBoundingBoxFromGeometry(i);if(0<s.width&&0<s.height){var o=this.isSwimlane(e[a])?this.getStartSize(e[a]):new mxRectangle,r=r.clone();t&&(r.x+=s.x-o.width-n,r.y+=s.y-o.height-n),r.width=s.width+o.width+2*n,r.height=s.height+o.height+2*n,this.model.setGeometry(e[a],r),this.moveCells(i,-s.x+o.width+n,-s.y+o.height+n)}}}}}finally{this.model.endUpdate()}return e},mxGraph.prototype.cloneCells=function(e,n){n=null==n||n;var t=null;if(null!=e){for(var a={},i=(t=[],0);i<e.length;i++){a[s=mxCellPath.create(e[i])]=e[i],t.push(e[i])}if(0<t.length){var s=this.view.scale,o=this.view.translate;for(t=this.model.cloneCells(e,!0),i=0;i<e.length;i++)if(!n&&this.model.isEdge(t[i])&&null!=this.getEdgeValidationError(t[i],this.model.getTerminal(t[i],!0),this.model.getTerminal(t[i],!1)))t[i]=null;else{var r=this.model.getGeometry(t[i]);if(null!=r){var l=this.view.getState(e[i]),d=this.view.getState(this.model.getParent(e[i]));if(null!=l&&null!=d){var c=d.origin.x;d=d.origin.y;if(this.model.isEdge(t[i])){l=l.absolutePoints;for(var m=this.model.getTerminal(e[i],!0),u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);for(null==m&&r.setTerminalPoint(new mxPoint(l[0].x/s-o.x,l[0].y/s-o.y),!0),m=this.model.getTerminal(e[i],!1),u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);if(null==m&&(m=l.length-1,r.setTerminalPoint(new mxPoint(l[m].x/s-o.x,l[m].y/s-o.y),!1)),null!=(r=r.points))for(l=0;l<r.length;l++)r[l].x+=c,r[l].y+=d}else r.x+=c,r.y+=d}}}}else t=[]}return t},mxGraph.prototype.insertVertex=function(e,n,t,a,i,s,o,r,l){return n=this.createVertex(e,n,t,a,i,s,o,r,l),this.addCell(n,e)},mxGraph.prototype.createVertex=function(e,n,t,a,i,s,o,r,l){return(e=new mxGeometry(a,i,s,o)).relative=null!=l&&l,(t=new mxCell(t,e,r)).setId(n),t.setVertex(!0),t.setConnectable(!0),t},mxGraph.prototype.insertEdge=function(e,n,t,a,i,s){return n=this.createEdge(e,n,t,a,i,s),this.addEdge(n,e,a,i)},mxGraph.prototype.createEdge=function(e,n,t,a,i,s){return(e=new mxCell(t,new mxGeometry,s)).setId(n),e.setEdge(!0),e.geometry.relative=!0,e},mxGraph.prototype.addEdge=function(e,n,t,a,i){return this.addCell(e,n,i,t,a)},mxGraph.prototype.addCell=function(e,n,t,a,i){return this.addCells([e],n,t,a,i)[0]},mxGraph.prototype.addCells=function(e,n,t,a,i){null==n&&(n=this.getDefaultParent()),null==t&&(t=this.model.getChildCount(n)),this.model.beginUpdate();try{this.cellsAdded(e,n,t,a,i,!1,!0),this.fireEvent(new mxEventObject(mxEvent.ADD_CELLS,"cells",e,"parent",n,"index",t,"source",a,"target",i))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsAdded=function(e,n,t,a,i,s,o){if(null!=e&&null!=n&&null!=t){this.model.beginUpdate();try{for(var r=null!=(d=s?this.view.getState(n):null)?d.origin:null,l=new mxPoint(0,0),d=0;d<e.length;d++)if(null==e[d])t--;else{var c=this.model.getParent(e[d]);if(null!=r&&e[d]!=n&&n!=c){var m=this.view.getState(c),u=null!=m?m.origin:l;if(null!=(p=this.model.getGeometry(e[d]))){var p,g=u.x-r.x,v=u.y-r.y;(p=p.clone()).translate(g,v),!p.relative&&this.model.isVertex(e[d])&&!this.isAllowNegativeCoordinates()&&(p.x=Math.max(0,p.x),p.y=Math.max(0,p.y)),this.model.setGeometry(e[d],p)}}n==c&&t+d>this.model.getChildCount(n)&&t--,this.model.add(n,e[d],t+d),this.isExtendParentsOnAdd()&&this.isExtendParent(e[d])&&this.extendParent(e[d]),(null==o||o)&&this.constrainChild(e[d]),null!=a&&this.cellConnected(e[d],a,!0),null!=i&&this.cellConnected(e[d],i,!1)}this.fireEvent(new mxEventObject(mxEvent.CELLS_ADDED,"cells",e,"parent",n,"index",t,"source",a,"target",i,"absolute",s))}finally{this.model.endUpdate()}}},mxGraph.prototype.removeCells=function(e,n){n=null==n||n,null==e&&(e=this.getDeletableCells(this.getSelectionCells())),n&&(e=this.getDeletableCells(this.addAllEdges(e))),this.model.beginUpdate();try{this.cellsRemoved(e),this.fireEvent(new mxEventObject(mxEvent.REMOVE_CELLS,"cells",e,"includeEdges",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsRemoved=function(e){if(null!=e&&0<e.length){var n=this.view.scale,t=this.view.translate;this.model.beginUpdate();try{for(var a={},i=0;i<e.length;i++){var s=mxCellPath.create(e[i]);a[s]=e[i]}for(i=0;i<e.length;i++){for(var o=this.getConnections(e[i]),r=0;r<o.length;r++)if(null==a[s=mxCellPath.create(o[r])]){if(null!=(d=this.model.getGeometry(o[r]))){var l=this.view.getState(o[r]);if(null!=l){var d=d.clone(),c=l.getVisibleTerminal(!0)==e[i],m=l.absolutePoints,u=c?0:m.length-1;d.setTerminalPoint(new mxPoint(m[u].x/n-t.x,m[u].y/n-t.y),c),this.model.setTerminal(o[r],null,c),this.model.setGeometry(o[r],d)}}}this.model.remove(e[i])}this.fireEvent(new mxEventObject(mxEvent.CELLS_REMOVED,"cells",e))}finally{this.model.endUpdate()}}},mxGraph.prototype.splitEdge=function(e,n,t,a,i){a=a||0,i=i||0,null==t&&(t=this.cloneCells([e])[0]);var s=this.model.getParent(e),o=this.model.getTerminal(e,!0);this.model.beginUpdate();try{this.cellsMoved(n,a,i,!1,!1),this.cellsAdded(n,s,this.model.getChildCount(s),null,null,!0),this.cellsAdded([t],s,this.model.getChildCount(s),o,n[0],!1),this.cellConnected(e,n[0],!0),this.fireEvent(new mxEventObject(mxEvent.SPLIT_EDGE,"edge",e,"cells",n,"newEdge",t,"dx",a,"dy",i))}finally{this.model.endUpdate()}return t},mxGraph.prototype.toggleCells=function(e,n,t){null==n&&(n=this.getSelectionCells()),t&&(n=this.addAllEdges(n)),this.model.beginUpdate();try{this.cellsToggled(n,e),this.fireEvent(new mxEventObject(mxEvent.TOGGLE_CELLS,"show",e,"cells",n,"includeEdges",t))}finally{this.model.endUpdate()}return n},mxGraph.prototype.cellsToggled=function(e,n){if(null!=e&&0<e.length){this.model.beginUpdate();try{for(var t=0;t<e.length;t++)this.model.setVisible(e[t],n)}finally{this.model.endUpdate()}}},mxGraph.prototype.foldCells=function(e,n,t,a){n=null!=n&&n,null==t&&(t=this.getFoldableCells(this.getSelectionCells(),e)),this.stopEditing(!1),this.model.beginUpdate();try{this.cellsFolded(t,e,n,a),this.fireEvent(new mxEventObject(mxEvent.FOLD_CELLS,"collapse",e,"recurse",n,"cells",t))}finally{this.model.endUpdate()}return t},mxGraph.prototype.cellsFolded=function(e,n,t,a){if(null!=e&&0<e.length){this.model.beginUpdate();try{for(var i=0;i<e.length;i++)if((!a||this.isCellFoldable(e[i],n))&&n!=this.isCellCollapsed(e[i])&&(this.model.setCollapsed(e[i],n),this.swapBounds(e[i],n),this.isExtendParent(e[i])&&this.extendParent(e[i]),t)){var s=this.model.getChildren(e[i]);this.foldCells(s,n,t)}this.fireEvent(new mxEventObject(mxEvent.CELLS_FOLDED,"cells",e,"collapse",n,"recurse",t))}finally{this.model.endUpdate()}}},mxGraph.prototype.swapBounds=function(e,n){if(null!=e){var t=this.model.getGeometry(e);null!=t&&(t=t.clone(),this.updateAlternateBounds(e,t,n),t.swap(),this.model.setGeometry(e,t))}},mxGraph.prototype.updateAlternateBounds=function(e,n,t){if(null!=e&&null!=n){if(t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e),null==n.alternateBounds){var a=n;this.collapseToPreferredSize&&(null!=(e=this.getPreferredSizeForCell(e))&&(a=e,0<(e=mxUtils.getValue(t,mxConstants.STYLE_STARTSIZE))&&(a.height=Math.max(a.height,e)))),n.alternateBounds=new mxRectangle(0,0,a.width,a.height)}if(null!=n.alternateBounds){n.alternateBounds.x=n.x,n.alternateBounds.y=n.y;var i=mxUtils.toRadians(t[mxConstants.STYLE_ROTATION]||"0");0!=i&&(e=n.alternateBounds.getCenterX()-n.getCenterX(),t=n.alternateBounds.getCenterY()-n.getCenterY(),a=Math.cos(i),i=Math.sin(i),n.alternateBounds.x+=a*e-i*t-e,n.alternateBounds.y+=i*e+a*t-t)}}},mxGraph.prototype.addAllEdges=function(e){var n=e.slice();return n.concat(this.getAllEdges(e))},mxGraph.prototype.getAllEdges=function(e){var n=[];if(null!=e)for(var t=0;t<e.length;t++){for(var a=this.model.getEdgeCount(e[t]),i=0;i<a;i++)n.push(this.model.getEdgeAt(e[t],i));a=this.model.getChildren(e[t]),n=n.concat(this.getAllEdges(a))}return n},mxGraph.prototype.updateCellSize=function(e,n){n=null!=n&&n,this.model.beginUpdate();try{this.cellSizeUpdated(e,n),this.fireEvent(new mxEventObject(mxEvent.UPDATE_CELL_SIZE,"cell",e,"ignoreChildren",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellSizeUpdated=function(e,n){if(null!=e){this.model.beginUpdate();try{var t=this.getPreferredSizeForCell(e),a=this.model.getGeometry(e);if(null!=t&&null!=a){var i=this.isCellCollapsed(e);a=a.clone();if(this.isSwimlane(e)){var s=this.view.getState(e),o=null!=s?s.style:this.getCellStyle(e),r=this.model.getStyle(e);null==r&&(r=""),mxUtils.getValue(o,mxConstants.STYLE_HORIZONTAL,!0)?(r=mxUtils.setStyle(r,mxConstants.STYLE_STARTSIZE,t.height+8),i&&(a.height=t.height+8),a.width=t.width):(r=mxUtils.setStyle(r,mxConstants.STYLE_STARTSIZE,t.width+8),i&&(a.width=t.width+8),a.height=t.height),this.model.setStyle(e,r)}else a.width=t.width,a.height=t.height;if(!n&&!i){var l=this.view.getBounds(this.model.getChildren(e));if(null!=l){var d=this.view.translate,c=this.view.scale,m=(l.y+l.height)/c-a.y-d.y;a.width=Math.max(a.width,(l.x+l.width)/c-a.x-d.x),a.height=Math.max(a.height,m)}}this.cellsResized([e],[a])}}finally{this.model.endUpdate()}}},mxGraph.prototype.getPreferredSizeForCell=function(e){var n=null;if(null!=e){var t=this.view.getState(e),a=null!=t?t.style:this.getCellStyle(e);if(null!=a&&!this.model.isEdge(e)){var i=a[mxConstants.STYLE_FONTSIZE]||mxConstants.DEFAULT_FONTSIZE,s=0;n=0;null==this.getImage(t)&&null==a[mxConstants.STYLE_IMAGE]||a[mxConstants.STYLE_SHAPE]!=mxConstants.SHAPE_LABEL||(a[mxConstants.STYLE_VERTICAL_ALIGN]==mxConstants.ALIGN_MIDDLE&&(s+=parseFloat(a[mxConstants.STYLE_IMAGE_WIDTH])||mxLabel.prototype.imageSize),a[mxConstants.STYLE_ALIGN]!=mxConstants.ALIGN_CENTER&&(n+=parseFloat(a[mxConstants.STYLE_IMAGE_HEIGHT])||mxLabel.prototype.imageSize)),s+=2*(a[mxConstants.STYLE_SPACING]||0),s+=a[mxConstants.STYLE_SPACING_LEFT]||0,s+=a[mxConstants.STYLE_SPACING_RIGHT]||0,n+=2*(a[mxConstants.STYLE_SPACING]||0),n+=a[mxConstants.STYLE_SPACING_TOP]||0,n+=a[mxConstants.STYLE_SPACING_BOTTOM]||0,null!=(t=this.getFoldingImage(t))&&(s+=t.width+8),n=null!=(t=this.getLabel(e))&&0<t.length?(this.isHtmlLabel(e)||(t=t.replace(/\n/g,"<br>")),e=(i=mxUtils.getSizeForString(t,i,a[mxConstants.STYLE_FONTFAMILY])).width+s,n=i.height+n,mxUtils.getValue(a,mxConstants.STYLE_HORIZONTAL,!0)||(a=n,n=e,e=a),this.gridEnabled&&(e=this.snap(e+this.gridSize/2),n=this.snap(n+this.gridSize/2)),new mxRectangle(0,0,e,n)):new mxRectangle(0,0,a=4*this.gridSize,a)}}return n},mxGraph.prototype.handleGesture=function(e,n){if(.2<Math.abs(1-n.scale)){var t=this.view.scale,a=this.view.translate,i=e.width*n.scale,s=e.height*n.scale,o=e.y-(s-e.height)/2;t=new mxRectangle(this.snap((e.x-(i-e.width)/2)/t)-a.x,this.snap(o/t)-a.y,this.snap(i/t),this.snap(s/t));this.resizeCell(e.cell,t)}},mxGraph.prototype.resizeCell=function(e,n){return this.resizeCells([e],[n])[0]},mxGraph.prototype.resizeCells=function(e,n){this.model.beginUpdate();try{this.cellsResized(e,n),this.fireEvent(new mxEventObject(mxEvent.RESIZE_CELLS,"cells",e,"bounds",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsResized=function(e,n){if(null!=e&&null!=n&&e.length==n.length){this.model.beginUpdate();try{for(var t=0;t<e.length;t++){var a=n[t],i=this.model.getGeometry(e[t]);if(null!=i&&(i.x!=a.x||i.y!=a.y||i.width!=a.width||i.height!=a.height)){if((i=i.clone()).relative){var s=i.offset;null!=s&&(s.x+=a.x-i.x,s.y+=a.y-i.y)}else i.x=a.x,i.y=a.y;i.width=a.width,i.height=a.height,!i.relative&&this.model.isVertex(e[t])&&!this.isAllowNegativeCoordinates()&&(i.x=Math.max(0,i.x),i.y=Math.max(0,i.y)),this.model.setGeometry(e[t],i),this.isExtendParent(e[t])&&this.extendParent(e[t])}}this.resetEdgesOnResize&&this.resetEdges(e),this.fireEvent(new mxEventObject(mxEvent.CELLS_RESIZED,"cells",e,"bounds",n))}finally{this.model.endUpdate()}}},mxGraph.prototype.extendParent=function(e){if(null!=e){var n=this.model.getParent(e),t=this.model.getGeometry(n);null!=n&&null!=t&&!this.isCellCollapsed(n)&&(null!=(e=this.model.getGeometry(e))&&(t.width<e.x+e.width||t.height<e.y+e.height))&&((t=t.clone()).width=Math.max(t.width,e.x+e.width),t.height=Math.max(t.height,e.y+e.height),this.cellsResized([n],[t]))}},mxGraph.prototype.importCells=function(e,n,t,a,i){return this.moveCells(e,n,t,!0,a,i)},mxGraph.prototype.moveCells=function(e,n,t,a,i,s){if(n=null!=n?n:0,t=null!=t?t:0,a=null!=a&&a,null!=e&&(0!=n||0!=t||a||null!=i)){this.model.beginUpdate();try{a&&(e=this.cloneCells(e,this.isCloneInvalidEdges()),null==i&&(i=this.getDefaultParent()));var o=this.isAllowNegativeCoordinates();if(null!=i&&this.setAllowNegativeCoordinates(!0),this.cellsMoved(e,n,t,!a&&this.isDisconnectOnMove()&&this.isAllowDanglingEdges(),null==i),this.setAllowNegativeCoordinates(o),null!=i){var r=this.model.getChildCount(i);this.cellsAdded(e,i,r,null,null,!0)}this.fireEvent(new mxEventObject(mxEvent.MOVE_CELLS,"cells",e,"dx",n,"dy",t,"clone",a,"target",i,"event",s))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.cellsMoved=function(e,n,t,a,i){if(null!=e&&(0!=n||0!=t)){this.model.beginUpdate();try{a&&this.disconnectGraph(e);for(var s=0;s<e.length;s++)this.translateCell(e[s],n,t),i&&this.constrainChild(e[s]);this.resetEdgesOnMove&&this.resetEdges(e),this.fireEvent(new mxEventObject(mxEvent.CELLS_MOVED,"cells",e,"dx",t,"dy",t,"disconnect",a))}finally{this.model.endUpdate()}}},mxGraph.prototype.translateCell=function(e,n,t){var a=this.model.getGeometry(e);null!=a&&((a=a.clone()).translate(n,t),!a.relative&&this.model.isVertex(e)&&!this.isAllowNegativeCoordinates()&&(a.x=Math.max(0,a.x),a.y=Math.max(0,a.y)),a.relative&&!this.model.isEdge(e)&&(null==a.offset?a.offset=new mxPoint(n,t):(a.offset.x+=n,a.offset.y+=t)),this.model.setGeometry(e,a))},mxGraph.prototype.getCellContainmentArea=function(e){if(null!=e&&!this.model.isEdge(e)){var n=this.model.getParent(e);if(n==this.getDefaultParent()||n==this.getCurrentRoot())return this.getMaximumGraphBounds();if(null!=n&&n!=this.getDefaultParent())if(null!=(i=this.model.getGeometry(n))){var t=e=0,a=i.width,i=i.height;return this.isSwimlane(n)&&(e=(n=this.getStartSize(n)).width,a-=n.width,t=n.height,i-=n.height),new mxRectangle(e,t,a,i)}}return null},mxGraph.prototype.getMaximumGraphBounds=function(){return this.maximumGraphBounds},mxGraph.prototype.constrainChild=function(e){if(null!=e){var n=this.model.getGeometry(e),t=this.isConstrainChild(e)?this.getCellContainmentArea(e):this.getMaximumGraphBounds();null!=n&&null!=t&&!n.relative&&(n.x<t.x||n.y<t.y||t.width<n.x+n.width||t.height<n.y+n.height)&&(e=this.getOverlap(e),0<t.width&&(n.x=Math.min(n.x,t.x+t.width-(1-e)*n.width)),0<t.height&&(n.y=Math.min(n.y,t.y+t.height-(1-e)*n.height)),n.x=Math.max(n.x,t.x-n.width*e),n.y=Math.max(n.y,t.y-n.height*e))}},mxGraph.prototype.resetEdges=function(e){if(null!=e){for(var n={},t=0;t<e.length;t++){var a=mxCellPath.create(e[t]);n[a]=e[t]}this.model.beginUpdate();try{for(t=0;t<e.length;t++){var i=this.model.getEdges(e[t]);if(null!=i)for(a=0;a<i.length;a++){var s=this.view.getState(i[a]),o=null!=s?s.getVisibleTerminal(!0):this.view.getVisibleTerminal(i[a],!0),r=null!=s?s.getVisibleTerminal(!1):this.view.getVisibleTerminal(i[a],!1),l=mxCellPath.create(o),d=mxCellPath.create(r);(null==n[l]||null==n[d])&&this.resetEdge(i[a])}this.resetEdges(this.model.getChildren(e[t]))}}finally{this.model.endUpdate()}}},mxGraph.prototype.resetEdge=function(e){var n=this.model.getGeometry(e);return null!=n&&null!=n.points&&0<n.points.length&&((n=n.clone()).points=[],this.model.setGeometry(e,n)),e},mxGraph.prototype.getAllConnectionConstraints=function(e,n){return null!=e&&null!=e.shape&&null!=e.shape.stencil?e.shape.stencil.constraints:null},mxGraph.prototype.getConnectionConstraint=function(e,n,t){n=null;var a=e.style[t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X];if(null!=a){var i=e.style[t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y];null!=i&&(n=new mxPoint(parseFloat(a),parseFloat(i)))}return a=!1,null!=n&&(a=mxUtils.getValue(e.style,t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,!0)),new mxConnectionConstraint(n,a)},mxGraph.prototype.setConnectionConstraint=function(e,n,t,a){if(null!=a){this.model.beginUpdate();try{null==a||null==a.point?(this.setCellStyles(t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X,null,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y,null,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,null,[e])):null!=a.point&&(this.setCellStyles(t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X,a.point.x,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y,a.point.y,[e]),a.perimeter?this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,null,[e]):this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,"0",[e]))}finally{this.model.endUpdate()}}},mxGraph.prototype.getConnectionPoint=function(e,n){var t=null;if(null!=e){var a=this.view.getPerimeterBounds(e),i=new mxPoint(a.getCenterX(),a.getCenterY()),s=e.style[mxConstants.STYLE_DIRECTION],o=0;if(null!=s&&("north"==s?o+=270:"west"==s?o+=180:"south"==s&&(o+=90),"north"==s||"south"==s)){a.x+=a.width/2-a.height/2,a.y+=a.height/2-a.width/2;var r=a.width;a.width=a.height,a.height=r}if(null!=n.point){var l=t=1,d=0,c=0;if(this.getModel().isVertex(e.cell)){var m=e.style[mxConstants.STYLE_FLIPH],u=e.style[mxConstants.STYLE_FLIPV];null!=e.shape.stencil&&(m=1==mxUtils.getValue(e.style,"stencilFlipH",0)||m,u=1==mxUtils.getValue(e.style,"stencilFlipV",0)||u),"north"!=s&&"south"!=s||(r=m,m=u,u=r),m&&(t=-1,d=-a.width),u&&(l=-1,c=-a.height)}t=new mxPoint(a.x+n.point.x*a.width*t-d,a.y+n.point.y*a.height*l-c)}s=e.style[mxConstants.STYLE_ROTATION]||0,n.perimeter?(0!=o&&null!=t&&(r=a=0,90==o?r=1:180==o?a=-1:270==s&&(r=-1),t=mxUtils.getRotatedPoint(t,a,r,i)),null!=t&&n.perimeter&&(t=this.view.getPerimeterPoint(e,t,!1))):s+=o,0!=s&&null!=t&&(o=mxUtils.toRadians(s),a=Math.cos(o),r=Math.sin(o),t=mxUtils.getRotatedPoint(t,a,r,i))}return t},mxGraph.prototype.connectCell=function(e,n,t,a){this.model.beginUpdate();try{var i=this.model.getTerminal(e,t);this.cellConnected(e,n,t,a),this.fireEvent(new mxEventObject(mxEvent.CONNECT_CELL,"edge",e,"terminal",n,"source",t,"previous",i))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellConnected=function(e,n,t,a){if(null!=e){this.model.beginUpdate();try{var i=this.model.getTerminal(e,t);this.setConnectionConstraint(e,n,t,a),this.isPortsEnabled()&&(a=null,this.isPort(n)&&(a=n.getId(),n=this.getTerminalForPort(n,t)),this.setCellStyles(t?mxConstants.STYLE_SOURCE_PORT:mxConstants.STYLE_TARGET_PORT,a,[e])),this.model.setTerminal(e,n,t),this.resetEdgesOnConnect&&this.resetEdge(e),this.fireEvent(new mxEventObject(mxEvent.CELL_CONNECTED,"edge",e,"terminal",n,"source",t,"previous",i))}finally{this.model.endUpdate()}}},mxGraph.prototype.disconnectGraph=function(e){if(null!=e){this.model.beginUpdate();try{for(var n=this.view.scale,t=this.view.translate,a={},i=0;i<e.length;i++){a[mxCellPath.create(e[i])]=e[i]}for(i=0;i<e.length;i++)if(this.model.isEdge(e[i])){if(null!=(r=this.model.getGeometry(e[i]))){var s=this.view.getState(e[i]),o=this.view.getState(this.model.getParent(e[i]));if(null!=s&&null!=o){var r=r.clone(),l=-o.origin.x,d=-o.origin.y,c=s.absolutePoints,m=this.model.getTerminal(e[i],!0);if(null!=m&&this.isCellDisconnectable(e[i],m,!0)){for(var u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);null==m&&(r.setTerminalPoint(new mxPoint(c[0].x/n-t.x+l,c[0].y/n-t.y+d),!0),this.model.setTerminal(e[i],null,!0))}var p=this.model.getTerminal(e[i],!1);if(null!=p&&this.isCellDisconnectable(e[i],p,!1)){for(var g=mxCellPath.create(p);null!=p&&null==a[g];)p=this.model.getParent(p),g=mxCellPath.create(p);if(null==p){var v=c.length-1;r.setTerminalPoint(new mxPoint(c[v].x/n-t.x+l,c[v].y/n-t.y+d),!1),this.model.setTerminal(e[i],null,!1)}}this.model.setGeometry(e[i],r)}}}}finally{this.model.endUpdate()}}},mxGraph.prototype.getCurrentRoot=function(){return this.view.currentRoot},mxGraph.prototype.getTranslateForRoot=function(e){return null},mxGraph.prototype.isPort=function(e){return!1},mxGraph.prototype.getTerminalForPort=function(e,n){return this.model.getParent(e)},mxGraph.prototype.getChildOffsetForCell=function(e){return null},mxGraph.prototype.enterGroup=function(e){null!=(e=e||this.getSelectionCell())&&this.isValidRoot(e)&&(this.view.setCurrentRoot(e),this.clearSelection())},mxGraph.prototype.exitGroup=function(){var e=this.model.getRoot(),n=this.getCurrentRoot();if(null!=n){for(var t=this.model.getParent(n);t!=e&&!this.isValidRoot(t)&&this.model.getParent(t)!=e;)t=this.model.getParent(t);t==e||this.model.getParent(t)==e?this.view.setCurrentRoot(null):this.view.setCurrentRoot(t),null!=this.view.getState(n)&&this.setSelectionCell(n)}},mxGraph.prototype.home=function(){var e=this.getCurrentRoot();null!=e&&(this.view.setCurrentRoot(null),null!=this.view.getState(e)&&this.setSelectionCell(e))},mxGraph.prototype.isValidRoot=function(e){return null!=e},mxGraph.prototype.getGraphBounds=function(){return this.view.getGraphBounds()},mxGraph.prototype.getCellBounds=function(e,n,t){var a=[e];if(n&&(a=a.concat(this.model.getEdges(e))),a=this.view.getBounds(a),t){t=this.model.getChildCount(e);for(var i=0;i<t;i++){var s=this.getCellBounds(this.model.getChildAt(e,i),n,!0);null!=a?a.add(s):a=s}}return a},mxGraph.prototype.getBoundingBoxFromGeometry=function(e,n){n=null!=n&&n;var t=null;if(null!=e)for(var a=0;a<e.length;a++)if(n||this.model.isVertex(e[a])){var i=this.getCellGeometry(e[a]);if(null!=i){var s=i.points;if(null!=s&&0<s.length){for(var o=new mxRectangle(s[0].x,s[0].y,0,0),r=function(e){null!=e&&o.add(new mxRectangle(e.x,e.y,0,0))},l=1;l<s.length;l++)r(s[l]);r(i.getTerminalPoint(!0)),r(i.getTerminalPoint(!1))}null==t?t=new mxRectangle(i.x,i.y,i.width,i.height):t.add(i)}}return t},mxGraph.prototype.refresh=function(e){this.view.clear(e,null==e),this.view.validate(),this.sizeDidChange(),this.fireEvent(new mxEventObject(mxEvent.REFRESH))},mxGraph.prototype.snap=function(e){return this.gridEnabled&&(e=Math.round(e/this.gridSize)*this.gridSize),e},mxGraph.prototype.panGraph=function(e,n){if(this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container))this.container.scrollLeft=-e,this.container.scrollTop=-n;else{var t=this.view.getCanvas();if(this.dialect==mxConstants.DIALECT_SVG)if(0==e&&0==n){if(mxClient.IS_IE?t.setAttribute("transform","translate("+e+","+n+")"):t.removeAttribute("transform"),null!=this.shiftPreview1){for(var a=this.shiftPreview1.firstChild;null!=a;){var i=a.nextSibling;this.container.appendChild(a),a=i}for(this.shiftPreview1.parentNode.removeChild(this.shiftPreview1),this.shiftPreview1=null,this.container.appendChild(t.parentNode),a=this.shiftPreview2.firstChild;null!=a;)i=a.nextSibling,this.container.appendChild(a),a=i;this.shiftPreview2.parentNode.removeChild(this.shiftPreview2),this.shiftPreview2=null}}else{if(t.setAttribute("transform","translate("+e+","+n+")"),null==this.shiftPreview1){this.shiftPreview1=document.createElement("div"),this.shiftPreview1.style.position="absolute",this.shiftPreview1.style.overflow="visible",this.shiftPreview2=document.createElement("div"),this.shiftPreview2.style.position="absolute",this.shiftPreview2.style.overflow="visible";var s=this.shiftPreview1;for(a=this.container.firstChild;null!=a;)i=a.nextSibling,a!=t.parentNode?s.appendChild(a):s=this.shiftPreview2,a=i;this.container.insertBefore(this.shiftPreview1,t.parentNode),this.container.appendChild(this.shiftPreview2)}this.shiftPreview1.style.left=e+"px",this.shiftPreview1.style.top=n+"px",this.shiftPreview2.style.left=e+"px",this.shiftPreview2.style.top=n+"px"}else t.style.left=e+"px",t.style.top=n+"px";this.panDx=e,this.panDy=n,this.fireEvent(new mxEventObject(mxEvent.PAN))}},mxGraph.prototype.zoomIn=function(){this.zoom(this.zoomFactor)},mxGraph.prototype.zoomOut=function(){this.zoom(1/this.zoomFactor)},mxGraph.prototype.zoomActual=function(){1==this.view.scale?this.view.setTranslate(0,0):(this.view.translate.x=0,this.view.translate.y=0,this.view.setScale(1))},mxGraph.prototype.zoomTo=function(e,n){this.zoom(e/this.view.scale,n)},mxGraph.prototype.zoom=function(e,n){n=null!=n?n:this.centerZoom;var t=this.view.scale*e,a=this.view.getState(this.getSelectionCell());if(this.keepSelectionVisibleOnZoom&&null!=a)a=new mxRectangle(a.x*e,a.y*e,a.width*e,a.height*e),this.view.scale=t,this.scrollRectToVisible(a)||(this.view.revalidate(),this.view.setScale(t));else if(n&&!mxUtils.hasScrollbars(this.container)){a=this.container.offsetWidth;var i=this.container.offsetHeight;if(1<e){var s=(e-1)/(2*t);a=a*-s,i=i*-s}else a*=s=(1/e-1)/(2*this.view.scale),i*=s;this.view.scaleAndTranslate(t,this.view.translate.x+a,this.view.translate.y+i)}else this.view.setScale(t),mxUtils.hasScrollbars(this.container)&&(i=a=0,n&&(a=this.container.offsetWidth*(e-1)/2,i=this.container.offsetHeight*(e-1)/2),this.container.scrollLeft=Math.round(this.container.scrollLeft*e+a),this.container.scrollTop=Math.round(this.container.scrollTop*e+i))},mxGraph.prototype.zoomToRect=function(e){var n=this.container.clientWidth/e.width/(this.container.clientHeight/e.height);e.x=Math.max(0,e.x),e.y=Math.max(0,e.y);var t=Math.min(this.container.scrollWidth,e.x+e.width),a=Math.min(this.container.scrollHeight,e.y+e.height);e.width=t-e.x,e.height=a-e.y,n<1?(t=((n=e.height/n)-e.height)/2,e.height=n,n=Math.min(e.y,t),e.y-=n,a=Math.min(this.container.scrollHeight,e.y+e.height),e.height=a-e.y):(t=((n*=e.width)-e.width)/2,e.width=n,n=Math.min(e.x,t),e.x-=n,t=Math.min(this.container.scrollWidth,e.x+e.width),e.width=t-e.x),n=this.container.clientWidth/e.width,t=this.view.scale*n,mxUtils.hasScrollbars(this.container)?(this.view.setScale(t),this.container.scrollLeft=Math.round(e.x*n),this.container.scrollTop=Math.round(e.y*n)):this.view.scaleAndTranslate(t,this.view.translate.x-e.x/this.view.scale,this.view.translate.y-e.y/this.view.scale)},mxGraph.prototype.fit=function(e,n){if(null!=this.container){e=null!=e?e:0,n=null!=n&&n;var t=this.container.clientWidth,a=this.container.clientHeight,i=this.view.getGraphBounds();n&&null!=i.x&&null!=i.y&&(i.width+=i.x,i.height+=i.y,i.x=0,i.y=0);var s=this.view.scale,o=i.width/s,r=i.height/s;null!=this.backgroundImage&&(o=Math.max(o,this.backgroundImage.width-i.x/s),r=Math.max(r,this.backgroundImage.height-i.y/s));var l=n?e:2*e;t=Math.floor(100*Math.min(t/(o+l),a/(r+l)))/100;null!=this.minFitScale&&(t=Math.max(t,this.minFitScale)),null!=this.maxFitScale&&(t=Math.min(t,this.maxFitScale)),n?this.view.scale!=t&&this.view.setScale(t):mxUtils.hasScrollbars(this.container)?(this.view.setScale(t),null!=i.x&&(this.container.scrollLeft=Math.round(i.x/s)*t-e-Math.max(0,(this.container.clientWidth-o*t)/2)),null!=i.y&&(this.container.scrollTop=Math.round(i.y/s)*t-e-Math.max(0,(this.container.clientHeight-r*t)/2))):this.view.scaleAndTranslate(t,null!=i.x?Math.floor(this.view.translate.x-i.x/s+e+1):e,null!=i.y?Math.floor(this.view.translate.y-i.y/s+e+1):e)}return this.view.scale},mxGraph.prototype.scrollCellToVisible=function(e,n){var t=-this.view.translate.x,a=-this.view.translate.y,i=this.view.getState(e);null!=i&&(t=new mxRectangle(t+i.x,a+i.y,i.width,i.height),n&&null!=this.container&&(a=this.container.clientWidth,i=this.container.clientHeight,t.x=t.getCenterX()-a/2,t.width=a,t.y=t.getCenterY()-i/2,t.height=i),this.scrollRectToVisible(t)&&this.view.setTranslate(this.view.translate.x,this.view.translate.y))},mxGraph.prototype.scrollRectToVisible=function(e){var n=!1;if(null!=e){var t=this.container.offsetWidth,a=this.container.offsetHeight,i=Math.min(t,e.width),s=Math.min(a,e.height);if(mxUtils.hasScrollbars(this.container)){t=this.container,e.x+=this.view.translate.x,e.y+=this.view.translate.y;var o=t.scrollLeft-e.x;a=Math.max(o-t.scrollLeft,0);0<o?t.scrollLeft-=o+2:0<(o=e.x+i-t.scrollLeft-t.clientWidth)&&(t.scrollLeft+=o+2),i=t.scrollTop-e.y,o=Math.max(0,i-t.scrollTop),0<i?t.scrollTop-=i+2:0<(i=e.y+s-t.scrollTop-t.clientHeight)&&(t.scrollTop+=i+2),!this.useScrollbarsForPanning&&(0!=a||0!=o)&&this.view.setTranslate(a,o)}else{o=-this.view.translate.x;var r=-this.view.translate.y,l=this.view.scale;e.x+i>o+t&&(this.view.translate.x-=(e.x+i-t-o)/l,n=!0),e.y+s>r+a&&(this.view.translate.y-=(e.y+s-a-r)/l,n=!0),e.x<o&&(this.view.translate.x+=(o-e.x)/l,n=!0),e.y<r&&(this.view.translate.y+=(r-e.y)/l,n=!0),n&&(this.view.refresh(),null!=this.selectionCellsHandler&&this.selectionCellsHandler.refresh())}}return n},mxGraph.prototype.getCellGeometry=function(e){return this.model.getGeometry(e)},mxGraph.prototype.isCellVisible=function(e){return this.model.isVisible(e)},mxGraph.prototype.isCellCollapsed=function(e){return this.model.isCollapsed(e)},mxGraph.prototype.isCellConnectable=function(e){return this.model.isConnectable(e)},mxGraph.prototype.isOrthogonal=function(e){var n=e.style[mxConstants.STYLE_ORTHOGONAL];return null!=n?n:(e=this.view.getEdgeStyle(e))==mxEdgeStyle.SegmentConnector||e==mxEdgeStyle.ElbowConnector||e==mxEdgeStyle.SideToSide||e==mxEdgeStyle.TopToBottom||e==mxEdgeStyle.EntityRelation||e==mxEdgeStyle.OrthConnector},mxGraph.prototype.isLoop=function(e){var n=e.getVisibleTerminalState(!0);return e=e.getVisibleTerminalState(!1),null!=n&&n==e},mxGraph.prototype.isCloneEvent=function(e){return mxEvent.isControlDown(e)},mxGraph.prototype.isToggleEvent=function(e){return mxClient.IS_MAC?mxEvent.isMetaDown(e):mxEvent.isControlDown(e)},mxGraph.prototype.isGridEnabledEvent=function(e){return null!=e&&!mxEvent.isAltDown(e)},mxGraph.prototype.isConstrainedEvent=function(e){return mxEvent.isShiftDown(e)},mxGraph.prototype.isForceMarqueeEvent=function(e){return mxEvent.isAltDown(e)},mxGraph.prototype.validationAlert=function(e){mxUtils.alert(e)},mxGraph.prototype.isEdgeValid=function(e,n,t){return null==this.getEdgeValidationError(e,n,t)},mxGraph.prototype.getEdgeValidationError=function(e,n,t){if(null!=e&&!this.isAllowDanglingEdges()&&(null==n||null==t))return"";if(null!=e&&null==this.model.getTerminal(e,!0)&&null==this.model.getTerminal(e,!1))return null;if(!this.allowLoops&&n==t&&null!=n||!this.isValidConnection(n,t))return"";if(null==n||null==t)return this.allowDanglingEdges?null:"";var a="";this.multigraph||(1<(i=this.model.getEdgesBetween(n,t,!0)).length||1==i.length&&i[0]!=e)&&(a+=(mxResources.get(this.alreadyConnectedResource)||this.alreadyConnectedResource)+"\n");var i=this.model.getDirectedEdgeCount(n,!0,e),s=this.model.getDirectedEdgeCount(t,!1,e);if(null!=this.multiplicities)for(var o=0;o<this.multiplicities.length;o++){var r=this.multiplicities[o].check(this,e,n,t,i,s);null!=r&&(a+=r)}return null!=(r=this.validateEdge(e,n,t))&&(a+=r),0<a.length?a:null},mxGraph.prototype.validateEdge=function(e,n,t){return null},mxGraph.prototype.validateGraph=function(e,n){e=null!=e?e:this.model.getRoot(),n=null!=n?n:{};for(var t=!0,a=this.model.getChildCount(e),i=0;i<a;i++){var s=this.model.getChildAt(e,i),o=n;this.isValidRoot(s)&&(o={}),null!=(o=this.validateGraph(s,o))?this.setCellWarning(s,o.replace(/\n/g,"<br>")):this.setCellWarning(s,null),t=t&&null==o}return a="",this.isCellCollapsed(e)&&!t&&(a+=(mxResources.get(this.containsValidationErrorsResource)||this.containsValidationErrorsResource)+"\n"),a=this.model.isEdge(e)?a+(this.getEdgeValidationError(e,this.model.getTerminal(e,!0),this.model.getTerminal(e,!1))||""):a+(this.getCellValidationError(e)||""),null!=(i=this.validateCell(e,n))&&(a+=i),null==this.model.getParent(e)&&this.view.validate(),0<a.length||!t?a:null},mxGraph.prototype.getCellValidationError=function(e){var n=this.model.getDirectedEdgeCount(e,!0),t=this.model.getDirectedEdgeCount(e,!1);e=this.model.getValue(e);var a="";if(null!=this.multiplicities)for(var i=0;i<this.multiplicities.length;i++){var s=this.multiplicities[i];s.source&&mxUtils.isNode(e,s.type,s.attr,s.value)&&(0==s.max&&0<n||1==s.min&&0==n||1==s.max&&1<n)?a+=s.countError+"\n":!s.source&&mxUtils.isNode(e,s.type,s.attr,s.value)&&(0==s.max&&0<t||1==s.min&&0==t||1==s.max&&1<t)&&(a+=s.countError+"\n")}return 0<a.length?a:null},mxGraph.prototype.validateCell=function(e,n){return null},mxGraph.prototype.getBackgroundImage=function(){return this.backgroundImage},mxGraph.prototype.setBackgroundImage=function(e){this.backgroundImage=e},mxGraph.prototype.getFoldingImage=function(e){if(null!=e&&this.foldingEnabled&&!this.getModel().isEdge(e.cell)){var n=this.isCellCollapsed(e.cell);if(this.isCellFoldable(e.cell,!n))return n?this.collapsedImage:this.expandedImage}return null},mxGraph.prototype.convertValueToString=function(e){if(null!=(e=this.model.getValue(e))){if(mxUtils.isNode(e))return e.nodeName;if("function"==typeof e.toString)return e.toString()}return""},mxGraph.prototype.getLabel=function(e){var n="";if(this.labelsVisible&&null!=e){var t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e);mxUtils.getValue(t,mxConstants.STYLE_NOLABEL,!1)||(n=this.convertValueToString(e))}return n},mxGraph.prototype.isHtmlLabel=function(e){return this.isHtmlLabels()},mxGraph.prototype.isHtmlLabels=function(){return this.htmlLabels},mxGraph.prototype.setHtmlLabels=function(e){this.htmlLabels=e},mxGraph.prototype.isWrapping=function(e){var n=this.view.getState(e);return null!=(e=null!=n?n.style:this.getCellStyle(e))&&"wrap"==e[mxConstants.STYLE_WHITE_SPACE]},mxGraph.prototype.isLabelClipped=function(e){var n=this.view.getState(e);return null!=(e=null!=n?n.style:this.getCellStyle(e))&&"hidden"==e[mxConstants.STYLE_OVERFLOW]},mxGraph.prototype.getTooltip=function(e,t,n,a){var i=null;return null!=e&&(null==e.control||t!=e.control.node&&t.parentNode!=e.control.node||(i=this.collapseExpandResource,i=mxResources.get(i)||i),null==i&&null!=e.overlays&&e.overlays.visit(function(e,n){null!=i||t!=n.node&&t.parentNode!=n.node||(i=n.overlay.toString())}),null==i&&(null!=(n=this.selectionCellsHandler.getHandler(e.cell))&&"function"==typeof n.getTooltipForNode&&(i=n.getTooltipForNode(t))),null==i&&(i=this.getTooltipForCell(e.cell))),i},mxGraph.prototype.getTooltipForCell=function(e){return null!=e&&null!=e.getTooltip?e.getTooltip():this.convertValueToString(e)},mxGraph.prototype.getCursorForCell=function(e){return null},mxGraph.prototype.getStartSize=function(e){var n=new mxRectangle,t=this.view.getState(e);return null!=(e=null!=t?t.style:this.getCellStyle(e))&&(t=parseInt(mxUtils.getValue(e,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)),mxUtils.getValue(e,mxConstants.STYLE_HORIZONTAL,!0)?n.height=t:n.width=t),n},mxGraph.prototype.getImage=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_IMAGE]:null},mxGraph.prototype.getVerticalAlign=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_VERTICAL_ALIGN]||mxConstants.ALIGN_MIDDLE:null},mxGraph.prototype.getIndicatorColor=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_COLOR]:null},mxGraph.prototype.getIndicatorGradientColor=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_GRADIENTCOLOR]:null},mxGraph.prototype.getIndicatorShape=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_SHAPE]:null},mxGraph.prototype.getIndicatorImage=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_IMAGE]:null},mxGraph.prototype.getBorder=function(){return this.border},mxGraph.prototype.setBorder=function(e){this.border=e},mxGraph.prototype.isSwimlane=function(e){var n;if(null!=e&&this.model.getParent(e)!=this.model.getRoot()&&(null!=(n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e))&&!this.model.isEdge(e)))return n[mxConstants.STYLE_SHAPE]==mxConstants.SHAPE_SWIMLANE;return!1},mxGraph.prototype.isResizeContainer=function(){return this.resizeContainer},mxGraph.prototype.setResizeContainer=function(e){this.resizeContainer=e},mxGraph.prototype.isEnabled=function(){return this.enabled},mxGraph.prototype.setEnabled=function(e){this.enabled=e},mxGraph.prototype.isEscapeEnabled=function(){return this.escapeEnabled},mxGraph.prototype.setEscapeEnabled=function(e){this.escapeEnabled=e},mxGraph.prototype.isInvokesStopCellEditing=function(){return this.invokesStopCellEditing},mxGraph.prototype.setInvokesStopCellEditing=function(e){this.invokesStopCellEditing=e},mxGraph.prototype.isEnterStopsCellEditing=function(){return this.enterStopsCellEditing},mxGraph.prototype.setEnterStopsCellEditing=function(e){this.enterStopsCellEditing=e},mxGraph.prototype.isCellLocked=function(e){var n=this.model.getGeometry(e);return this.isCellsLocked()||null!=n&&this.model.isVertex(e)&&n.relative},mxGraph.prototype.isCellsLocked=function(){return this.cellsLocked},mxGraph.prototype.setCellsLocked=function(e){this.cellsLocked=e},mxGraph.prototype.getCloneableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellCloneable(e)}))},mxGraph.prototype.isCellCloneable=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isCellsCloneable()&&0!=e[mxConstants.STYLE_CLONEABLE]},mxGraph.prototype.isCellsCloneable=function(){return this.cellsCloneable},mxGraph.prototype.setCellsCloneable=function(e){this.cellsCloneable=e},mxGraph.prototype.getExportableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.canExportCell(e)}))},mxGraph.prototype.canExportCell=function(e){return this.exportEnabled},mxGraph.prototype.getImportableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.canImportCell(e)}))},mxGraph.prototype.canImportCell=function(e){return this.importEnabled},mxGraph.prototype.isCellSelectable=function(e){return this.isCellsSelectable()},mxGraph.prototype.isCellsSelectable=function(){return this.cellsSelectable},mxGraph.prototype.setCellsSelectable=function(e){this.cellsSelectable=e},mxGraph.prototype.getDeletableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellDeletable(e)}))},mxGraph.prototype.isCellDeletable=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isCellsDeletable()&&0!=e[mxConstants.STYLE_DELETABLE]},mxGraph.prototype.isCellsDeletable=function(){return this.cellsDeletable},mxGraph.prototype.setCellsDeletable=function(e){this.cellsDeletable=e},mxGraph.prototype.isLabelMovable=function(e){return!this.isCellLocked(e)&&(this.model.isEdge(e)&&this.edgeLabelsMovable||this.model.isVertex(e)&&this.vertexLabelsMovable)},mxGraph.prototype.getMovableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellMovable(e)}))},mxGraph.prototype.isCellMovable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsMovable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_MOVABLE]},mxGraph.prototype.isCellsMovable=function(){return this.cellsMovable},mxGraph.prototype.setCellsMovable=function(e){this.cellsMovable=e},mxGraph.prototype.isGridEnabled=function(){return this.gridEnabled},mxGraph.prototype.setGridEnabled=function(e){this.gridEnabled=e},mxGraph.prototype.isPortsEnabled=function(){return this.portsEnabled},mxGraph.prototype.setPortsEnabled=function(e){this.portsEnabled=e},mxGraph.prototype.getGridSize=function(){return this.gridSize},mxGraph.prototype.setGridSize=function(e){this.gridSize=e},mxGraph.prototype.getTolerance=function(){return this.tolerance},mxGraph.prototype.setTolerance=function(e){this.tolerance=e},mxGraph.prototype.isVertexLabelsMovable=function(){return this.vertexLabelsMovable},mxGraph.prototype.setVertexLabelsMovable=function(e){this.vertexLabelsMovable=e},mxGraph.prototype.isEdgeLabelsMovable=function(){return this.edgeLabelsMovable},mxGraph.prototype.setEdgeLabelsMovable=function(e){this.edgeLabelsMovable=e},mxGraph.prototype.isSwimlaneNesting=function(){return this.swimlaneNesting},mxGraph.prototype.setSwimlaneNesting=function(e){this.swimlaneNesting=e},mxGraph.prototype.isSwimlaneSelectionEnabled=function(){return this.swimlaneSelectionEnabled},mxGraph.prototype.setSwimlaneSelectionEnabled=function(e){this.swimlaneSelectionEnabled=e},mxGraph.prototype.isMultigraph=function(){return this.multigraph},mxGraph.prototype.setMultigraph=function(e){this.multigraph=e},mxGraph.prototype.isAllowLoops=function(){return this.allowLoops},mxGraph.prototype.setAllowDanglingEdges=function(e){this.allowDanglingEdges=e},mxGraph.prototype.isAllowDanglingEdges=function(){return this.allowDanglingEdges},mxGraph.prototype.setConnectableEdges=function(e){this.connectableEdges=e},mxGraph.prototype.isConnectableEdges=function(){return this.connectableEdges},mxGraph.prototype.setCloneInvalidEdges=function(e){this.cloneInvalidEdges=e},mxGraph.prototype.isCloneInvalidEdges=function(){return this.cloneInvalidEdges},mxGraph.prototype.setAllowLoops=function(e){this.allowLoops=e},mxGraph.prototype.isDisconnectOnMove=function(){return this.disconnectOnMove},mxGraph.prototype.setDisconnectOnMove=function(e){this.disconnectOnMove=e},mxGraph.prototype.isDropEnabled=function(){return this.dropEnabled},mxGraph.prototype.setDropEnabled=function(e){this.dropEnabled=e},mxGraph.prototype.isSplitEnabled=function(){return this.splitEnabled},mxGraph.prototype.setSplitEnabled=function(e){this.splitEnabled=e},mxGraph.prototype.isCellResizable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsResizable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_RESIZABLE]},mxGraph.prototype.isCellsResizable=function(){return this.cellsResizable},mxGraph.prototype.setCellsResizable=function(e){this.cellsResizable=e},mxGraph.prototype.isTerminalPointMovable=function(e,n){return!0},mxGraph.prototype.isCellBendable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsBendable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_BENDABLE]},mxGraph.prototype.isCellsBendable=function(){return this.cellsBendable},mxGraph.prototype.setCellsBendable=function(e){this.cellsBendable=e},mxGraph.prototype.isCellEditable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsEditable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_EDITABLE]},mxGraph.prototype.isCellsEditable=function(){return this.cellsEditable},mxGraph.prototype.setCellsEditable=function(e){this.cellsEditable=e},mxGraph.prototype.isCellDisconnectable=function(e,n,t){return this.isCellsDisconnectable()&&!this.isCellLocked(e)},mxGraph.prototype.isCellsDisconnectable=function(){return this.cellsDisconnectable},mxGraph.prototype.setCellsDisconnectable=function(e){this.cellsDisconnectable=e},mxGraph.prototype.isValidSource=function(e){return null==e&&this.allowDanglingEdges||null!=e&&(!this.model.isEdge(e)||this.connectableEdges)&&this.isCellConnectable(e)},mxGraph.prototype.isValidTarget=function(e){return this.isValidSource(e)},mxGraph.prototype.isValidConnection=function(e,n){return this.isValidSource(e)&&this.isValidTarget(n)},mxGraph.prototype.setConnectable=function(e){this.connectionHandler.setEnabled(e)},mxGraph.prototype.isConnectable=function(e){return this.connectionHandler.isEnabled()},mxGraph.prototype.setTooltips=function(e){this.tooltipHandler.setEnabled(e)},mxGraph.prototype.setPanning=function(e){this.panningHandler.panningEnabled=e},mxGraph.prototype.isEditing=function(e){if(null==this.cellEditor)return!1;var n=this.cellEditor.getEditingCell();return null==e?null!=n:e==n},mxGraph.prototype.isAutoSizeCell=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isAutoSizeCells()||1==e[mxConstants.STYLE_AUTOSIZE]},mxGraph.prototype.isAutoSizeCells=function(){return this.autoSizeCells},mxGraph.prototype.setAutoSizeCells=function(e){this.autoSizeCells=e},mxGraph.prototype.isExtendParent=function(e){return!this.getModel().isEdge(e)&&this.isExtendParents()},mxGraph.prototype.isExtendParents=function(){return this.extendParents},mxGraph.prototype.setExtendParents=function(e){this.extendParents=e},mxGraph.prototype.isExtendParentsOnAdd=function(){return this.extendParentsOnAdd},mxGraph.prototype.setExtendParentsOnAdd=function(e){this.extendParentsOnAdd=e},mxGraph.prototype.isConstrainChild=function(e){return this.isConstrainChildren()&&!this.getModel().isEdge(this.getModel().getParent(e))},mxGraph.prototype.isConstrainChildren=function(){return this.constrainChildren},mxGraph.prototype.setConstrainChildren=function(e){this.constrainChildren=e},mxGraph.prototype.isAllowNegativeCoordinates=function(){return this.allowNegativeCoordinates},mxGraph.prototype.setAllowNegativeCoordinates=function(e){this.allowNegativeCoordinates=e},mxGraph.prototype.getOverlap=function(e){return this.isAllowOverlapParent(e)?this.defaultOverlap:0},mxGraph.prototype.isAllowOverlapParent=function(e){return!1},mxGraph.prototype.getFoldableCells=function(e,n){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellFoldable(e,n)}))},mxGraph.prototype.isCellFoldable=function(e,n){var t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e);return 0<this.model.getChildCount(e)&&0!=t[mxConstants.STYLE_FOLDABLE]},mxGraph.prototype.isValidDropTarget=function(e,n,t){return null!=e&&(this.isSplitEnabled()&&this.isSplitTarget(e,n,t)||!this.model.isEdge(e)&&(this.isSwimlane(e)||0<this.model.getChildCount(e)&&!this.isCellCollapsed(e)))},mxGraph.prototype.isSplitTarget=function(e,n,t){return!(!this.model.isEdge(e)||null==n||1!=n.length||!this.isCellConnectable(n[0])||null!=this.getEdgeValidationError(e,this.model.getTerminal(e,!0),n[0]))&&(t=this.model.getTerminal(e,!0),e=this.model.getTerminal(e,!1),!this.model.isAncestor(n[0],t)&&!this.model.isAncestor(n[0],e))},mxGraph.prototype.getDropTarget=function(e,n,t){if(!this.isSwimlaneNesting())for(var a=0;a<e.length;a++)if(this.isSwimlane(e[a]))return null;if((a=mxUtils.convertPoint(this.container,mxEvent.getClientX(n),mxEvent.getClientY(n))).x-=this.panDx,a.y-=this.panDy,a=this.getSwimlaneAt(a.x,a.y),null==t)t=a;else if(null!=a){for(var i=this.model.getParent(a);null!=i&&this.isSwimlane(i)&&i!=t;)i=this.model.getParent(i);i==t&&(t=a)}for(;null!=t&&!this.isValidDropTarget(t,e,n)&&!this.model.isLayer(t);)t=this.model.getParent(t);return!this.model.isLayer(t)&&mxUtils.indexOf(e,t)<0?t:null},mxGraph.prototype.getDefaultParent=function(){var e=this.defaultParent;return null==e&&(null==(e=this.getCurrentRoot())&&(e=this.model.getRoot(),e=this.model.getChildAt(e,0))),e},mxGraph.prototype.setDefaultParent=function(e){this.defaultParent=e},mxGraph.prototype.getSwimlane=function(e){for(;null!=e&&!this.isSwimlane(e);)e=this.model.getParent(e);return e},mxGraph.prototype.getSwimlaneAt=function(e,n,t){if(null!=(t=t||this.getDefaultParent()))for(var a=this.model.getChildCount(t),i=0;i<a;i++){var s=this.model.getChildAt(t,i),o=this.getSwimlaneAt(e,n,s);if(null!=o)return o;if(this.isSwimlane(s)&&(o=this.view.getState(s),this.intersects(o,e,n)))return s}return null},mxGraph.prototype.getCellAt=function(e,n,t,a,i){if(a=null==a||a,i=null==i||i,null!=(t=null!=t?t:this.getDefaultParent()))for(var s=this.model.getChildCount(t)-1;0<=s;s--){var o=this.model.getChildAt(t,s),r=this.getCellAt(e,n,o,a,i);if(null!=r)return r;if(this.isCellVisible(o)&&(i&&this.model.isEdge(o)||a&&this.model.isVertex(o))&&(r=this.view.getState(o),this.intersects(r,e,n)))return o}return null},mxGraph.prototype.intersects=function(e,n,t){if(null!=e){var a=e.absolutePoints;if(null!=a){e=this.tolerance*this.tolerance;for(var i=a[0],s=1;s<a.length;s++){var o=a[s];if(mxUtils.ptSegDistSq(i.x,i.y,o.x,o.y,n,t)<=e)return!0;i=o}}else if(0!=(i=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))&&(a=Math.cos(-i),i=Math.sin(-i),s=new mxPoint(e.getCenterX(),e.getCenterY()),n=(i=mxUtils.getRotatedPoint(new mxPoint(n,t),a,i,s)).x,t=i.y),mxUtils.contains(e,n,t))return!0}return!1},mxGraph.prototype.hitsSwimlaneContent=function(e,n,t){var a=this.getView().getState(e);if(e=this.getStartSize(e),null!=a){var i=this.getView().getScale();if(n-=a.x,t-=a.y,0<e.width&&0<n&&n>e.width*i||0<e.height&&0<t&&t>e.height*i)return!0}return!1},mxGraph.prototype.getChildVertices=function(e){return this.getChildCells(e,!0,!1)},mxGraph.prototype.getChildEdges=function(e){return this.getChildCells(e,!1,!0)},mxGraph.prototype.getChildCells=function(e,n,t){for(e=null!=e?e:this.getDefaultParent(),e=this.model.getChildCells(e,null!=n&&n,null!=t&&t),n=[],t=0;t<e.length;t++)this.isCellVisible(e[t])&&n.push(e[t]);return n},mxGraph.prototype.getConnections=function(e,n){return this.getEdges(e,n,!0,!0,!1)},mxGraph.prototype.getIncomingEdges=function(e,n){return this.getEdges(e,n,!0,!1,!1)},mxGraph.prototype.getOutgoingEdges=function(e,n){return this.getEdges(e,n,!1,!0,!1)},mxGraph.prototype.getEdges=function(e,n,t,a,i,s){t=null==t||t,a=null==a||a,i=null==i||i,s=null!=s&&s;for(var o=[],r=this.isCellCollapsed(e),l=this.model.getChildCount(e),d=0;d<l;d++){var c=this.model.getChildAt(e,d);!r&&this.isCellVisible(c)||(o=o.concat(this.model.getEdges(c,t,a)))}for(o=o.concat(this.model.getEdges(e,t,a)),r=[],d=0;d<o.length;d++)l=null!=(c=this.view.getState(o[d]))?c.getVisibleTerminal(!0):this.view.getVisibleTerminal(o[d],!0),c=null!=c?c.getVisibleTerminal(!1):this.view.getVisibleTerminal(o[d],!1),(i&&l==c||l!=c&&(t&&c==e&&(null==n||this.isValidAncestor(l,n,s))||a&&l==e&&(null==n||this.isValidAncestor(c,n,s))))&&r.push(o[d]);return r},mxGraph.prototype.isValidAncestor=function(e,n,t){return t?this.model.isAncestor(n,e):this.model.getParent(e)==n},mxGraph.prototype.getOpposites=function(e,n,t,a){t=null==t||t,a=null==a||a;var i=[],s={};if(null!=e)for(var o=0;o<e.length;o++){var r=null!=(l=this.view.getState(e[o]))?l.getVisibleTerminal(!0):this.view.getVisibleTerminal(e[o],!0),l=null!=l?l.getVisibleTerminal(!1):this.view.getVisibleTerminal(e[o],!1);if(r==n&&null!=l&&l!=n&&a){var d=mxCellPath.create(l);null==s[d]&&(s[d]=l,i.push(l))}else l==n&&null!=r&&r!=n&&t&&(null==s[d=mxCellPath.create(r)]&&(s[d]=r,i.push(r)))}return i},mxGraph.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;for(var a=this.getEdges(e),i=[],s=0;s<a.length;s++){var o=null!=(r=this.view.getState(a[s]))?r.getVisibleTerminal(!0):this.view.getVisibleTerminal(a[s],!0),r=null!=r?r.getVisibleTerminal(!1):this.view.getVisibleTerminal(a[s],!1);(o==e&&r==n||!t&&o==n&&r==e)&&i.push(a[s])}return i},mxGraph.prototype.getPointForEvent=function(e,n){var t=mxUtils.convertPoint(this.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),a=this.view.scale,i=this.view.translate,s=0!=n?this.gridSize/2:0;return t.x=this.snap(t.x/a-i.x-s),t.y=this.snap(t.y/a-i.y-s),t},mxGraph.prototype.getCells=function(e,n,t,a,i,s){if(s=null!=s?s:[],0<t||0<a){var o=e+t,r=n+a;if(null!=(i=i||this.getDefaultParent()))for(var l=this.model.getChildCount(i),d=0;d<l;d++){var c=this.model.getChildAt(i,d),m=this.view.getState(c);if(this.isCellVisible(c)&&null!=m){var u=m;0!=(m=mxUtils.getValue(m.style,mxConstants.STYLE_ROTATION)||0)&&(u=mxUtils.getBoundingBox(u,m)),u.x>=e&&u.y+u.height<=r&&u.y>=n&&u.x+u.width<=o?s.push(c):this.getCells(e,n,t,a,c,s)}}}return s},mxGraph.prototype.getCellsBeyond=function(e,n,t,a,i){var s=[];if((a||i)&&(null==t&&(t=this.getDefaultParent()),null!=t))for(var o=this.model.getChildCount(t),r=0;r<o;r++){var l=this.model.getChildAt(t,r),d=this.view.getState(l);this.isCellVisible(l)&&null!=d&&(!a||d.x>=e)&&(!i||d.y>=n)&&s.push(l)}return s},mxGraph.prototype.findTreeRoots=function(e,n,t){n=null!=n&&n,t=null!=t&&t;var a=[];if(null!=e){for(var i=this.getModel(),s=i.getChildCount(e),o=null,r=0,l=0;l<s;l++){var d=i.getChildAt(e,l);if(this.model.isVertex(d)&&this.isCellVisible(d)){for(var c=this.getConnections(d,n?e:null),m=0,u=0,p=0;p<c.length;p++)this.view.getVisibleTerminal(c[p],!0)==d?m++:u++;(t&&0==m&&0<u||!t&&0==u&&0<m)&&a.push(d),r<(c=t?u-m:m-u)&&(r=c,o=d)}}0==a.length&&null!=o&&a.push(o)}return a},mxGraph.prototype.traverse=function(e,n,t,a,i){if(null!=t&&null!=e){n=null==n||n,i=i||[];var s=mxCellPath.create(e);if(null==i[s]&&(null==(a=t(i[s]=e,a))||a)&&0<(a=this.model.getEdgeCount(e)))for(s=0;s<a;s++){var o=this.model.getEdgeAt(e,s),r=this.model.getTerminal(o,!0)==e;n&&!r||(r=this.model.getTerminal(o,!r),this.traverse(r,n,t,o,i))}}},mxGraph.prototype.isCellSelected=function(e){return this.getSelectionModel().isSelected(e)},mxGraph.prototype.isSelectionEmpty=function(){return this.getSelectionModel().isEmpty()},mxGraph.prototype.clearSelection=function(){return this.getSelectionModel().clear()},mxGraph.prototype.getSelectionCount=function(){return this.getSelectionModel().cells.length},mxGraph.prototype.getSelectionCell=function(){return this.getSelectionModel().cells[0]},mxGraph.prototype.getSelectionCells=function(){return this.getSelectionModel().cells.slice()},mxGraph.prototype.setSelectionCell=function(e){this.getSelectionModel().setCell(e)},mxGraph.prototype.setSelectionCells=function(e){this.getSelectionModel().setCells(e)},mxGraph.prototype.addSelectionCell=function(e){this.getSelectionModel().addCell(e)},mxGraph.prototype.addSelectionCells=function(e){this.getSelectionModel().addCells(e)},mxGraph.prototype.removeSelectionCell=function(e){this.getSelectionModel().removeCell(e)},mxGraph.prototype.removeSelectionCells=function(e){this.getSelectionModel().removeCells(e)},mxGraph.prototype.selectRegion=function(e,n){var t=this.getCells(e.x,e.y,e.width,e.height);return this.selectCellsForEvent(t,n),t},mxGraph.prototype.selectNextCell=function(){this.selectCell(!0)},mxGraph.prototype.selectPreviousCell=function(){this.selectCell()},mxGraph.prototype.selectParentCell=function(){this.selectCell(!1,!0)},mxGraph.prototype.selectChildCell=function(){this.selectCell(!1,!1,!0)},mxGraph.prototype.selectCell=function(e,n,t){var a=0<(i=this.selectionModel).cells.length?i.cells[0]:null;1<i.cells.length&&i.clear();var i=null!=a?this.model.getParent(a):this.getDefaultParent(),s=this.model.getChildCount(i);null==a&&0<s?(e=this.model.getChildAt(i,0),this.setSelectionCell(e)):null!=a&&!n||null==this.view.getState(i)||null==this.model.getGeometry(i)?null!=a&&t?0<this.model.getChildCount(a)&&(e=this.model.getChildAt(a,0),this.setSelectionCell(e)):0<s&&(n=i.getIndex(a),e=e?(n++,this.model.getChildAt(i,n%s)):(n--,this.model.getChildAt(i,n<0?s-1:n)),this.setSelectionCell(e)):this.getCurrentRoot()!=i&&this.setSelectionCell(i)},mxGraph.prototype.selectAll=function(e){e=e||this.getDefaultParent(),null!=(e=this.model.getChildren(e))&&this.setSelectionCells(e)},mxGraph.prototype.selectVertices=function(e){this.selectCells(!0,!1,e)},mxGraph.prototype.selectEdges=function(e){this.selectCells(!1,!0,e)},mxGraph.prototype.selectCells=function(n,t,e){e=e||this.getDefaultParent();var a=mxUtils.bind(this,function(e){return null!=this.view.getState(e)&&0==this.model.getChildCount(e)&&(this.model.isVertex(e)&&n||this.model.isEdge(e)&&t)});e=this.model.filterDescendants(a,e),this.setSelectionCells(e)},mxGraph.prototype.selectCellForEvent=function(e,n){var t=this.isCellSelected(e);this.isToggleEvent(n)?t?this.removeSelectionCell(e):this.addSelectionCell(e):(!t||1!=this.getSelectionCount())&&this.setSelectionCell(e)},mxGraph.prototype.selectCellsForEvent=function(e,n){this.isToggleEvent(n)?this.addSelectionCells(e):this.setSelectionCells(e)},mxGraph.prototype.createHandler=function(e){var n=null;return null!=e&&(n=this.model.isEdge(e.cell)?(n=this.view.getEdgeStyle(e),this.isLoop(e)||n==mxEdgeStyle.ElbowConnector||n==mxEdgeStyle.SideToSide||n==mxEdgeStyle.TopToBottom?new mxElbowEdgeHandler(e):n==mxEdgeStyle.SegmentConnector||n==mxEdgeStyle.OrthConnector?new mxEdgeSegmentHandler(e):new mxEdgeHandler(e)):new mxVertexHandler(e)),n},mxGraph.prototype.addMouseListener=function(e){null==this.mouseListeners&&(this.mouseListeners=[]),this.mouseListeners.push(e)},mxGraph.prototype.removeMouseListener=function(e){if(null!=this.mouseListeners)for(var n=0;n<this.mouseListeners.length;n++)if(this.mouseListeners[n]==e){this.mouseListeners.splice(n,1);break}},mxGraph.prototype.updateMouseEvent=function(e){if(null==e.graphX||null==e.graphY){var n=mxUtils.convertPoint(this.container,e.getX(),e.getY());e.graphX=n.x-this.panDx,e.graphY=n.y-this.panDy}},mxGraph.prototype.fireMouseEvent=function(e,n,t){if(null==t&&(t=this),this.updateMouseEvent(n),e==mxEvent.MOUSE_DOWN&&(this.isMouseDown=!0),mxClient.IS_TOUCH&&this.doubleTapEnabled&&e==mxEvent.MOUSE_DOWN){var a=(new Date).getTime();a-this.lastTouchTime<this.doubleTapTimeout&&Math.abs(this.lastTouchX-n.getX())<this.doubleTapTolerance&&Math.abs(this.lastTouchY-n.getY())<this.doubleTapTolerance?(this.lastTouchTime=0,this.dblClick(n.getEvent(),n.getCell()),n.getEvent().cancelBubble=!0):(this.lastTouchX=n.getX(),this.lastTouchY=n.getY(),this.lastTouchTime=a)}if(a=2!=n.getEvent().detail,mxClient.IS_IE&&"CSS1Compat"==document.compatMode&&((null!=this.lastMouseX&&Math.abs(this.lastMouseX-n.getX())>this.doubleTapTolerance||null!=this.lastMouseY&&Math.abs(this.lastMouseY-n.getY())>this.doubleTapTolerance)&&(a=!0),e==mxEvent.MOUSE_UP&&(this.lastMouseX=n.getX(),this.lastMouseY=n.getY())),(e!=mxEvent.MOUSE_UP||this.isMouseDown)&&a){if(e==mxEvent.MOUSE_UP&&(this.isMouseDown=!1),!this.isEditing()&&(mxClient.IS_OP||mxClient.IS_SF||mxClient.IS_GC||mxClient.IS_IE&&mxClient.IS_SVG||n.getEvent().target!=this.container)){if(e==mxEvent.MOUSE_MOVE&&this.isMouseDown&&this.autoScroll&&this.scrollPointToVisible(n.getGraphX(),n.getGraphY(),this.autoExtend),null!=this.mouseListeners)for(t=[t,n],n.getEvent().returnValue=!0,a=0;a<this.mouseListeners.length;a++){var i=this.mouseListeners[a];e==mxEvent.MOUSE_DOWN?i.mouseDown.apply(i,t):e==mxEvent.MOUSE_MOVE?i.mouseMove.apply(i,t):e==mxEvent.MOUSE_UP&&i.mouseUp.apply(i,t)}e==mxEvent.MOUSE_UP&&this.click(n)}}else e==mxEvent.MOUSE_UP&&(this.isMouseDown=!1)},mxGraph.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,null!=this.tooltipHandler&&this.tooltipHandler.destroy(),null!=this.selectionCellsHandler&&this.selectionCellsHandler.destroy(),null!=this.panningHandler&&this.panningHandler.destroy(),null!=this.connectionHandler&&this.connectionHandler.destroy(),null!=this.graphHandler&&this.graphHandler.destroy(),null!=this.cellEditor&&this.cellEditor.destroy(),null!=this.view&&this.view.destroy(),null!=this.model&&null!=this.graphModelChangeListener&&(this.model.removeListener(this.graphModelChangeListener),this.graphModelChangeListener=null),this.container=null)},mxCellOverlay.prototype=new mxEventSource,mxCellOverlay.prototype.constructor=mxCellOverlay,mxCellOverlay.prototype.image=null,mxCellOverlay.prototype.tooltip=null,mxCellOverlay.prototype.align=mxConstants.ALIGN_RIGHT,mxCellOverlay.prototype.verticalAlign=mxConstants.ALIGN_BOTTOM,mxCellOverlay.prototype.offset=null,mxCellOverlay.prototype.cursor=null,mxCellOverlay.prototype.defaultOverlap=.5,mxCellOverlay.prototype.getBounds=function(e){var n=e.view.graph.getModel().isEdge(e.cell),t=e.view.scale,a=null,i=this.image.width,s=this.image.height;return n?a=1==(n=e.absolutePoints).length%2?n[Math.floor(n.length/2)]:(e=n[(a=n.length/2)-1],n=n[a],new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2)):((a=new mxPoint).x=this.align==mxConstants.ALIGN_LEFT?e.x:this.align==mxConstants.ALIGN_CENTER?e.x+e.width/2:e.x+e.width,a.y=this.verticalAlign==mxConstants.ALIGN_TOP?e.y:this.verticalAlign==mxConstants.ALIGN_MIDDLE?e.y+e.height/2:e.y+e.height),new mxRectangle(Math.round(a.x-(i*this.defaultOverlap-this.offset.x)*t),Math.round(a.y-(s*this.defaultOverlap-this.offset.y)*t),i*t,s*t)},mxCellOverlay.prototype.toString=function(){return this.tooltip},mxOutline.prototype.source=null,mxOutline.prototype.outline=null,mxOutline.prototype.graphRenderHint=mxConstants.RENDERING_HINT_FASTER,mxOutline.prototype.enabled=!0,mxOutline.prototype.showViewport=!0,mxOutline.prototype.border=10,mxOutline.prototype.sizerSize=8,mxOutline.prototype.updateOnPan=!1,mxOutline.prototype.sizerImage=null,mxOutline.prototype.suspended=!1,mxOutline.prototype.init=function(e){this.outline=new mxGraph(e,this.source.getModel(),this.graphRenderHint,this.source.getStylesheet()),this.outline.foldingEnabled=!1,this.outline.autoScroll=!1;var n=this.outline.graphModelChanged;this.outline.graphModelChanged=mxUtils.bind(this,function(e){!this.suspended&&null!=this.outline&&n.apply(this.outline,arguments)}),mxClient.IS_SVG&&((e=this.outline.getView().getCanvas().parentNode).setAttribute("shape-rendering","optimizeSpeed"),e.setAttribute("image-rendering","optimizeSpeed")),this.outline.labelsVisible=!1,this.outline.setEnabled(!1),this.updateHandler=mxUtils.bind(this,function(e,n){!this.suspended&&!this.active&&this.update()}),this.source.getModel().addListener(mxEvent.CHANGE,this.updateHandler),this.outline.addMouseListener(this),(e=this.source.getView()).addListener(mxEvent.SCALE,this.updateHandler),e.addListener(mxEvent.TRANSLATE,this.updateHandler),e.addListener(mxEvent.SCALE_AND_TRANSLATE,this.updateHandler),e.addListener(mxEvent.DOWN,this.updateHandler),e.addListener(mxEvent.UP,this.updateHandler),mxEvent.addListener(this.source.container,"scroll",this.updateHandler),this.panHandler=mxUtils.bind(this,function(e){this.updateOnPan&&this.updateHandler.apply(this,arguments)}),this.source.addListener(mxEvent.PAN,this.panHandler),this.refreshHandler=mxUtils.bind(this,function(e){this.outline.setStylesheet(this.source.getStylesheet()),this.outline.refresh()}),this.source.addListener(mxEvent.REFRESH,this.refreshHandler),this.bounds=new mxRectangle(0,0,0,0),this.selectionBorder=new mxRectangleShape(this.bounds,null,mxConstants.OUTLINE_COLOR,mxConstants.OUTLINE_STROKEWIDTH),this.selectionBorder.dialect=this.outline.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.selectionBorder.init(this.outline.getView().getOverlayPane()),mxEvent.redirectMouseEvents(this.selectionBorder.node,this.outline),this.selectionBorder.node.style.background="",this.sizer=this.createSizer(),this.sizer.init(this.outline.getView().getOverlayPane()),this.enabled&&(this.sizer.node.style.cursor="pointer"),mxEvent.addListener(this.sizer.node,mxClient.IS_TOUCH?"touchstart":"mousedown",mxUtils.bind(this,function(e){this.outline.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))})),this.selectionBorder.node.style.display=this.showViewport?"":"none",this.sizer.node.style.display=this.selectionBorder.node.style.display,this.selectionBorder.node.style.cursor="move",this.update(!1)},mxOutline.prototype.isEnabled=function(){return this.enabled},mxOutline.prototype.setEnabled=function(e){this.enabled=e},mxOutline.prototype.setZoomEnabled=function(e){this.sizer.node.style.visibility=e?"visible":"hidden"},mxOutline.prototype.refresh=function(){this.update(!0)},mxOutline.prototype.createSizer=function(){var e=null!=this.sizerImage?new mxImageShape(new mxRectangle(0,0,this.sizerImage.width,this.sizerImage.height),this.sizerImage.src):new mxRectangleShape(new mxRectangle(0,0,this.sizerSize,this.sizerSize),mxConstants.OUTLINE_HANDLE_FILLCOLOR,mxConstants.OUTLINE_HANDLE_STROKECOLOR);return e.dialect=this.outline.dialect,e},mxOutline.prototype.getSourceContainerSize=function(){return new mxRectangle(0,0,this.source.container.scrollWidth,this.source.container.scrollHeight)},mxOutline.prototype.getOutlineOffset=function(e){return null},mxOutline.prototype.update=function(e){if(null!=this.source){var n=this.source.view.scale,t=new mxRectangle((t=this.source.getGraphBounds()).x/n+this.source.panDx,t.y/n+this.source.panDy,t.width/n,t.height/n),a=new mxRectangle(0,0,this.source.container.clientWidth/n,this.source.container.clientHeight/n);(s=t.clone()).add(a);var i=this.getSourceContainerSize(),s=(a=Math.max(i.width/n,s.width),n=Math.max(i.height/n,s.height),Math.max(0,this.outline.container.clientWidth-this.border));i=Math.max(0,this.outline.container.clientHeight-this.border);if(0<(s=Math.min(s/a,i/n))){this.outline.getView().scale!=s&&(this.outline.getView().scale=s,e=!0),(a=this.outline.getView()).currentRoot!=this.source.getView().currentRoot&&a.setCurrentRoot(this.source.getView().currentRoot);i=(n=this.source.view.translate).x+this.source.panDx;var o=n.y+this.source.panDy;null!=(s=this.getOutlineOffset(s))&&(i+=s.x,o+=s.y),t.x<0&&(i-=t.x),t.y<0&&(o-=t.y),a.translate.x==i&&a.translate.y==o||(a.translate.x=i,a.translate.y=o,e=!0);t=a.translate,i=(s=this.source.getView().scale)/a.scale,o=1/a.scale;var r=this.source.container;this.bounds=new mxRectangle((t.x-n.x-this.source.panDx)/o,(t.y-n.y-this.source.panDy)/o,r.clientWidth/i,r.clientHeight/i),this.bounds.x+=this.source.container.scrollLeft*a.scale/s,this.bounds.y+=this.source.container.scrollTop*a.scale/s,(t=this.selectionBorder.bounds).x==this.bounds.x&&t.y==this.bounds.y&&t.width==this.bounds.width&&t.height==this.bounds.height||(this.selectionBorder.bounds=this.bounds,this.selectionBorder.redraw()),t=this.sizer.bounds,a=new mxRectangle(this.bounds.x+this.bounds.width-t.width/2,this.bounds.y+this.bounds.height-t.height/2,t.width,t.height),t.x==a.x&&t.y==a.y&&t.width==a.width&&t.height==a.height||(this.sizer.bounds=a,"hidden"!=this.sizer.node.style.visibility&&this.sizer.redraw()),e&&this.outline.view.revalidate()}}},mxOutline.prototype.mouseDown=function(e,n){this.enabled&&this.showViewport&&(this.zoom=n.isSource(this.sizer),this.startX=n.getX(),this.startY=n.getY(),this.active=!0,this.source.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.source.container)?(this.dx0=this.source.container.scrollLeft,this.dy0=this.source.container.scrollTop):this.dy0=this.dx0=0),n.consume()},mxOutline.prototype.mouseMove=function(e,n){if(this.active){this.selectionBorder.node.style.display=this.showViewport?"":"none",this.sizer.node.style.display=this.selectionBorder.node.style.display;var t=n.getX()-this.startX,a=n.getY()-this.startY,i=null;if(this.zoom)a=t/((i=this.source.container).clientWidth/i.clientHeight),i=new mxRectangle(this.bounds.x,this.bounds.y,Math.max(1,this.bounds.width+t),Math.max(1,this.bounds.height+a)),this.selectionBorder.bounds=i,this.selectionBorder.redraw();else{var s=this.outline.getView().scale;i=new mxRectangle(this.bounds.x+t,this.bounds.y+a,this.bounds.width,this.bounds.height);this.selectionBorder.bounds=i,this.selectionBorder.redraw(),t=t/s*this.source.getView().scale,a=a/s*this.source.getView().scale,this.source.panGraph(-t-this.dx0,-a-this.dy0)}t=this.sizer.bounds,this.sizer.bounds=new mxRectangle(i.x+i.width-t.width/2,i.y+i.height-t.height/2,t.width,t.height),"hidden"!=this.sizer.node.style.visibility&&this.sizer.redraw(),n.consume()}},mxOutline.prototype.mouseUp=function(e,n){if(this.active){var t=n.getX()-this.startX,a=n.getY()-this.startY;if(0<Math.abs(t)||0<Math.abs(a)){if(this.zoom){a=this.selectionBorder.bounds.width;var i=this.source.getView().scale;this.source.zoomTo(i-t*i/a,!1)}else this.source.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.source.container)||(this.source.panGraph(0,0),t/=this.outline.getView().scale,a/=this.outline.getView().scale,i=this.source.getView().translate,this.source.getView().setTranslate(i.x-t,i.y-a));this.update(),n.consume()}this.index=null,this.active=!1}},mxOutline.prototype.destroy=function(){null!=this.source&&(this.source.removeListener(this.panHandler),this.source.removeListener(this.refreshHandler),this.source.getModel().removeListener(this.updateHandler),this.source.getView().removeListener(this.updateHandler),mxEvent.addListener(this.source.container,"scroll",this.updateHandler),this.source=null),null!=this.outline&&(this.outline.removeMouseListener(this),this.outline.destroy(),this.outline=null),null!=this.selectionBorder&&(this.selectionBorder.destroy(),this.selectionBorder=null),null!=this.sizer&&(this.sizer.destroy(),this.sizer=null)},mxMultiplicity.prototype.type=null,mxMultiplicity.prototype.attr=null,mxMultiplicity.prototype.value=null,mxMultiplicity.prototype.source=null,mxMultiplicity.prototype.min=null,mxMultiplicity.prototype.max=null,mxMultiplicity.prototype.validNeighbors=null,mxMultiplicity.prototype.validNeighborsAllowed=!0,mxMultiplicity.prototype.countError=null,mxMultiplicity.prototype.typeError=null,mxMultiplicity.prototype.check=function(e,n,t,a,i,s){var o="";return(this.source&&this.checkTerminal(e,t,n)||!this.source&&this.checkTerminal(e,a,n))&&(null!=this.countError&&(this.source&&(0==this.max||i>=this.max)||!this.source&&(0==this.max||s>=this.max))&&(o+=this.countError+"\n"),null!=this.validNeighbors&&null!=this.typeError&&0<this.validNeighbors.length&&(this.checkNeighbors(e,n,t,a)||(o+=this.typeError+"\n"))),0<o.length?o:null},mxMultiplicity.prototype.checkNeighbors=function(e,n,t,a){n=e.model.getValue(t),a=e.model.getValue(a),t=!this.validNeighborsAllowed;for(var i=this.validNeighbors,s=0;s<i.length;s++){if(this.source&&this.checkType(e,a,i[s])){t=this.validNeighborsAllowed;break}if(!this.source&&this.checkType(e,n,i[s])){t=this.validNeighborsAllowed;break}}return t},mxMultiplicity.prototype.checkTerminal=function(e,n,t){return n=e.model.getValue(n),this.checkType(e,n,this.type,this.attr,this.value)},mxMultiplicity.prototype.checkType=function(e,n,t,a,i){return null!=n&&(isNaN(n.nodeType)?n==t:mxUtils.isNode(n,t,a,i))},mxLayoutManager.prototype=new mxEventSource,mxLayoutManager.prototype.constructor=mxLayoutManager,mxLayoutManager.prototype.graph=null,mxLayoutManager.prototype.bubbling=!0,mxLayoutManager.prototype.enabled=!0,mxLayoutManager.prototype.updateHandler=null,mxLayoutManager.prototype.moveHandler=null,mxLayoutManager.prototype.isEnabled=function(){return this.enabled},mxLayoutManager.prototype.setEnabled=function(e){this.enabled=e},mxLayoutManager.prototype.isBubbling=function(){return this.bubbling},mxLayoutManager.prototype.setBubbling=function(e){this.bubbling=e},mxLayoutManager.prototype.getGraph=function(){return this.graph},mxLayoutManager.prototype.setGraph=function(e){if(null!=this.graph){var n=this.graph.getModel();n.removeListener(this.undoHandler),this.graph.removeListener(this.moveHandler)}this.graph=e,null!=this.graph&&((n=this.graph.getModel()).addListener(mxEvent.BEFORE_UNDO,this.undoHandler),this.graph.addListener(mxEvent.MOVE_CELLS,this.moveHandler))},mxLayoutManager.prototype.getLayout=function(e){return null},mxLayoutManager.prototype.beforeUndo=function(e){e=this.getCellsForChanges(e.changes);var n=this.getGraph().getModel();if(this.isBubbling())for(var t=n.getParents(e);0<t.length;)e=e.concat(t),t=n.getParents(t);this.layoutCells(mxUtils.sortCells(e,!1))},mxLayoutManager.prototype.cellsMoved=function(e,n){if(null!=e&&null!=n)for(var t=mxUtils.convertPoint(this.getGraph().container,mxEvent.getClientX(n),mxEvent.getClientY(n)),a=this.getGraph().getModel(),i=0;i<e.length;i++){var s=this.getLayout(a.getParent(e[i]));null!=s&&s.moveCell(e[i],t.x,t.y)}},mxLayoutManager.prototype.getCellsForChanges=function(e){for(var n=[],t={},a=0;a<e.length;a++){if((i=e[a])instanceof mxRootChange)return[];for(var i=this.getCellsForChange(i),s=0;s<i.length;s++)if(null!=i[s]){var o=mxCellPath.create(i[s]);null==t[o]&&(t[o]=i[s],n.push(i[s]))}}return n},mxLayoutManager.prototype.getCellsForChange=function(e){var n=this.getGraph().getModel();return e instanceof mxChildChange?[e.child,e.previous,n.getParent(e.child)]:e instanceof mxTerminalChange||e instanceof mxGeometryChange?[e.cell,n.getParent(e.cell)]:[]},mxLayoutManager.prototype.layoutCells=function(e){if(0<e.length){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=null,a=0;a<e.length;a++)e[a]!=n.getRoot()&&e[a]!=t&&(t=e[a],this.executeLayout(this.getLayout(t),t));this.fireEvent(new mxEventObject(mxEvent.LAYOUT_CELLS,"cells",e))}finally{n.endUpdate()}}},mxLayoutManager.prototype.executeLayout=function(e,n){null!=e&&null!=n&&e.execute(n)},mxLayoutManager.prototype.destroy=function(){this.setGraph(null)},mxSpaceManager.prototype=new mxEventSource,mxSpaceManager.prototype.constructor=mxSpaceManager,mxSpaceManager.prototype.graph=null,mxSpaceManager.prototype.enabled=!0,mxSpaceManager.prototype.shiftRightwards=!0,mxSpaceManager.prototype.shiftDownwards=!0,mxSpaceManager.prototype.extendParents=!0,mxSpaceManager.prototype.resizeHandler=null,mxSpaceManager.prototype.foldHandler=null,mxSpaceManager.prototype.isCellIgnored=function(e){return!this.getGraph().getModel().isVertex(e)},mxSpaceManager.prototype.isCellShiftable=function(e){return this.getGraph().getModel().isVertex(e)&&this.getGraph().isCellMovable(e)},mxSpaceManager.prototype.isEnabled=function(){return this.enabled},mxSpaceManager.prototype.setEnabled=function(e){this.enabled=e},mxSpaceManager.prototype.isShiftRightwards=function(){return this.shiftRightwards},mxSpaceManager.prototype.setShiftRightwards=function(e){this.shiftRightwards=e},mxSpaceManager.prototype.isShiftDownwards=function(){return this.shiftDownwards},mxSpaceManager.prototype.setShiftDownwards=function(e){this.shiftDownwards=e},mxSpaceManager.prototype.isExtendParents=function(){return this.extendParents},mxSpaceManager.prototype.setExtendParents=function(e){this.extendParents=e},mxSpaceManager.prototype.getGraph=function(){return this.graph},mxSpaceManager.prototype.setGraph=function(e){null!=this.graph&&(this.graph.removeListener(this.resizeHandler),this.graph.removeListener(this.foldHandler)),this.graph=e,null!=this.graph&&(this.graph.addListener(mxEvent.RESIZE_CELLS,this.resizeHandler),this.graph.addListener(mxEvent.FOLD_CELLS,this.foldHandler))},mxSpaceManager.prototype.cellsResized=function(e){if(null!=e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)if(!this.isCellIgnored(e[t])){this.cellResized(e[t]);break}}finally{n.endUpdate()}}},mxSpaceManager.prototype.cellResized=function(e){var n=this.getGraph(),t=n.getView(),a=n.getModel(),i=t.getState(e),s=t.getState(a.getParent(e));if(null!=i&&null!=s){var o=this.getCellsToShift(i),r=a.getGeometry(e);if(null!=o&&null!=r){var l=t.translate,d=t.scale,c=(t=i.x-s.origin.x-l.x*d,s=i.y-s.origin.y-l.y*d,l=i.x+i.width,i.y+i.height),m=i.width-r.width*d+t-r.x*d,u=i.height-r.height*d+s-r.y*d,p=1-r.width*d/i.width;i=1-r.height*d/i.height;a.beginUpdate();try{for(r=0;r<o.length;r++)o[r]!=e&&this.isCellShiftable(o[r])&&this.shiftCell(o[r],m,u,t,s,l,c,p,i,this.isExtendParents()&&n.isExtendParent(o[r]))}finally{a.endUpdate()}}}},mxSpaceManager.prototype.shiftCell=function(e,n,t,a,i,s,o,r,l,d){var c=(a=this.getGraph()).getView().getState(e);if(null!=c){var m=a.getModel();if(null!=(p=m.getGeometry(e))){m.beginUpdate();try{if(this.isShiftRightwards())if(c.x>=s)(p=p.clone()).translate(-n,0);else{var u=Math.max(0,c.x-x0);(p=p.clone()).translate(-r*u,0)}if(this.isShiftDownwards())if(c.y>=o)(p=p.clone()).translate(0,-t);else{var p,g=Math.max(0,c.y-i);(p=p.clone()).translate(0,-l*g)}p!=m.getGeometry(e)&&(m.setGeometry(e,p),d&&a.extendParent(e))}finally{m.endUpdate()}}}},mxSpaceManager.prototype.getCellsToShift=function(e){var n=this.getGraph(),t=n.getModel().getParent(e.cell),a=this.isShiftDownwards(),i=this.isShiftRightwards();return n.getCellsBeyond(e.x+(a?0:e.width),e.y+(a&&i?0:e.height),t,i,a)},mxSpaceManager.prototype.destroy=function(){this.setGraph(null)},mxSwimlaneManager.prototype=new mxEventSource,mxSwimlaneManager.prototype.constructor=mxSwimlaneManager,mxSwimlaneManager.prototype.graph=null,mxSwimlaneManager.prototype.enabled=!0,mxSwimlaneManager.prototype.horizontal=!0,mxSwimlaneManager.prototype.addEnabled=!0,mxSwimlaneManager.prototype.resizeEnabled=!0,mxSwimlaneManager.prototype.addHandler=null,mxSwimlaneManager.prototype.resizeHandler=null,mxSwimlaneManager.prototype.isEnabled=function(){return this.enabled},mxSwimlaneManager.prototype.setEnabled=function(e){this.enabled=e},mxSwimlaneManager.prototype.isHorizontal=function(){return this.horizontal},mxSwimlaneManager.prototype.setHorizontal=function(e){this.horizontal=e},mxSwimlaneManager.prototype.isAddEnabled=function(){return this.addEnabled},mxSwimlaneManager.prototype.setAddEnabled=function(e){this.addEnabled=e},mxSwimlaneManager.prototype.isResizeEnabled=function(){return this.resizeEnabled},mxSwimlaneManager.prototype.setResizeEnabled=function(e){this.resizeEnabled=e},mxSwimlaneManager.prototype.getGraph=function(){return this.graph},mxSwimlaneManager.prototype.setGraph=function(e){null!=this.graph&&(this.graph.removeListener(this.addHandler),this.graph.removeListener(this.resizeHandler)),this.graph=e,null!=this.graph&&(this.graph.addListener(mxEvent.ADD_CELLS,this.addHandler),this.graph.addListener(mxEvent.CELLS_RESIZED,this.resizeHandler))},mxSwimlaneManager.prototype.isSwimlaneIgnored=function(e){return!this.getGraph().isSwimlane(e)},mxSwimlaneManager.prototype.isCellHorizontal=function(e){if(this.graph.isSwimlane(e)){var n=this.graph.view.getState(e);return e=null!=n?n.style:this.graph.getCellStyle(e),1==mxUtils.getValue(e,mxConstants.STYLE_HORIZONTAL,1)}return!this.isHorizontal()},mxSwimlaneManager.prototype.cellsAdded=function(e){if(null!=e){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)this.isSwimlaneIgnored(e[t])||this.swimlaneAdded(e[t])}finally{n.endUpdate()}}},mxSwimlaneManager.prototype.swimlaneAdded=function(e){for(var n=this.getGraph().getModel(),t=n.getParent(e),a=n.getChildCount(t),i=null,s=0;s<a;s++){var o=n.getChildAt(t,s);if(o!=e&&!this.isSwimlaneIgnored(o)&&null!=(i=n.getGeometry(o)))break}null!=i&&this.resizeSwimlane(e,i.width,i.height)},mxSwimlaneManager.prototype.cellsResized=function(e){if(null!=e){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)if(!this.isSwimlaneIgnored(e[t])){var a=n.getGeometry(e[t]);if(null!=a){for(var i=new mxRectangle(0,0,a.width,a.height),s=o=e[t];null!=s;){var o=s,r=(s=n.getParent(s),this.graph.isSwimlane(s)?this.graph.getStartSize(s):new mxRectangle);i.width+=r.width,i.height+=r.height}this.resizeSwimlane(o,i.width,i.height)}}}finally{n.endUpdate()}}},mxSwimlaneManager.prototype.resizeSwimlane=function(e,n,t){var a=this.getGraph().getModel();a.beginUpdate();try{if(!this.isSwimlaneIgnored(e))if(null!=(r=a.getGeometry(e))){var i=this.isCellHorizontal(e);(i&&r.height!=t||!i&&r.width!=n)&&(r=r.clone(),i?r.height=t:r.width=n,a.setGeometry(e,r))}var s=this.graph.isSwimlane(e)?this.graph.getStartSize(e):new mxRectangle;n-=s.width,t-=s.height;for(var o=a.getChildCount(e),r=0;r<o;r++){var l=a.getChildAt(e,r);this.resizeSwimlane(l,n,t)}}finally{a.endUpdate()}},mxSwimlaneManager.prototype.destroy=function(){this.setGraph(null)},mxTemporaryCellStates.prototype.view=null,mxTemporaryCellStates.prototype.oldStates=null,mxTemporaryCellStates.prototype.oldBounds=null,mxTemporaryCellStates.prototype.oldScale=null,mxTemporaryCellStates.prototype.destroy=function(){this.view.setScale(this.oldScale),this.view.setStates(this.oldStates),this.view.setGraphBounds(this.oldBounds)},mxCellStatePreview.prototype.graph=null,mxCellStatePreview.prototype.deltas=null,mxCellStatePreview.prototype.count=0,mxCellStatePreview.prototype.isEmpty=function(){return 0==this.count},mxCellStatePreview.prototype.moveState=function(e,n,t,a,i){a=null==a||a,i=null==i||i;var s=mxCellPath.create(e.cell),o=this.deltas[s];return null==o?(o=new mxPoint(n,t),this.deltas[s]=o,this.count++):a?(o.X+=n,o.Y+=t):(o.X=n,o.Y=t),i&&this.addEdges(e),o},mxCellStatePreview.prototype.show=function(e){var n,t=this.graph.getModel(),a=t.getRoot();for(n in this.deltas){var i=mxCellPath.resolve(a,n),s=this.graph.view.getState(i),o=this.deltas[n];i=this.graph.view.getState(t.getParent(i));this.translateState(i,s,o.x,o.y)}for(n in this.deltas)i=mxCellPath.resolve(a,n),s=this.graph.view.getState(i),o=this.deltas[n],i=this.graph.view.getState(t.getParent(i)),this.revalidateState(i,s,o.x,o.y,e)},mxCellStatePreview.prototype.translateState=function(e,n,t,a){if(null!=n){var i=this.graph.getModel();if(i.isVertex(n.cell)){n.invalid=!0,this.graph.view.validateBounds(e,n.cell),e=i.getGeometry(n.cell);var s=mxCellPath.create(n.cell);0==t&&0==a||null==e||e.relative&&null==this.deltas[s]||(n.x+=t,n.y+=a)}for(e=i.getChildCount(n.cell),s=0;s<e;s++)this.translateState(n,this.graph.view.getState(i.getChildAt(n.cell,s)),t,a)}},mxCellStatePreview.prototype.revalidateState=function(e,n,t,a,i){if(null!=n){n.invalid=!0,this.graph.view.validatePoints(e,n.cell);var s=mxCellPath.create(n.cell),o=this.graph.getModel(),r=this.graph.getCellGeometry(n.cell);for(0==t&&0==a||null==r||!r.relative||!o.isVertex(n.cell)||null!=e&&!o.isVertex(e.cell)&&null==this.deltas[s]||(n.x+=t,n.y+=a,this.graph.cellRenderer.redraw(n)),null!=i&&i(n),e=o.getChildCount(n.cell),s=0;s<e;s++)this.revalidateState(n,this.graph.view.getState(o.getChildAt(n.cell,s)),t,a,i)}},mxCellStatePreview.prototype.addEdges=function(e){for(var n=this.graph.getModel(),t=n.getEdgeCount(e.cell),a=0;a<t;a++){var i=this.graph.view.getState(n.getEdgeAt(e.cell,a));null!=i&&this.moveState(i,0,0)}},mxConnectionConstraint.prototype.point=null,mxConnectionConstraint.prototype.perimeter=null,mxGraphHandler.prototype.graph=null,mxGraphHandler.prototype.maxCells=mxClient.IS_IE?20:50,mxGraphHandler.prototype.enabled=!0,mxGraphHandler.prototype.highlightEnabled=!0,mxGraphHandler.prototype.cloneEnabled=!0,mxGraphHandler.prototype.moveEnabled=!0,mxGraphHandler.prototype.guidesEnabled=!1,mxGraphHandler.prototype.guide=null,mxGraphHandler.prototype.currentDx=null,mxGraphHandler.prototype.currentDy=null,mxGraphHandler.prototype.updateCursor=!0,mxGraphHandler.prototype.selectEnabled=!0,mxGraphHandler.prototype.removeCellsFromParent=!0,mxGraphHandler.prototype.connectOnDrop=!1,mxGraphHandler.prototype.scrollOnMove=!0,mxGraphHandler.prototype.minimumSize=6,mxGraphHandler.prototype.previewColor="black",mxGraphHandler.prototype.htmlPreview=!1,mxGraphHandler.prototype.shape=null,mxGraphHandler.prototype.scaleGrid=!1,mxGraphHandler.prototype.rotationEnabled=!0,mxGraphHandler.prototype.isEnabled=function(){return this.enabled},mxGraphHandler.prototype.setEnabled=function(e){this.enabled=e},mxGraphHandler.prototype.isCloneEnabled=function(){return this.cloneEnabled},mxGraphHandler.prototype.setCloneEnabled=function(e){this.cloneEnabled=e},mxGraphHandler.prototype.isMoveEnabled=function(){return this.moveEnabled},mxGraphHandler.prototype.setMoveEnabled=function(e){this.moveEnabled=e},mxGraphHandler.prototype.isSelectEnabled=function(){return this.selectEnabled},mxGraphHandler.prototype.setSelectEnabled=function(e){this.selectEnabled=e},mxGraphHandler.prototype.isRemoveCellsFromParent=function(){return this.removeCellsFromParent},mxGraphHandler.prototype.setRemoveCellsFromParent=function(e){this.removeCellsFromParent=e},mxGraphHandler.prototype.getInitialCellForEvent=function(e){return e.getCell()},mxGraphHandler.prototype.isDelayedSelection=function(e){return this.graph.isCellSelected(e)},mxGraphHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&null!=n.getState()){var t=this.getInitialCellForEvent(n);if(this.cell=null,this.delayedSelection=this.isDelayedSelection(t),this.isSelectEnabled()&&!this.delayedSelection&&this.graph.selectCellForEvent(t,n.getEvent()),this.isMoveEnabled()){var a=this.graph.model,i=a.getGeometry(t);this.graph.isCellMovable(t)&&(!a.isEdge(t)||1<this.graph.getSelectionCount()||null!=i.points&&0<i.points.length||null==a.getTerminal(t,!0)||null==a.getTerminal(t,!1)||this.graph.allowDanglingEdges||this.graph.isCloneEvent(n.getEvent())&&this.graph.isCellsCloneable())&&this.start(t,n.getX(),n.getY()),this.cellWasClicked=!0,!mxClient.IS_SF&&!mxClient.IS_GC||"SELECT"!=n.getSource().nodeName?n.consume():mxClient.IS_SF&&"SELECT"==n.getSource().nodeName&&(this.cellWasClicked=!1,this.first=null)}}},mxGraphHandler.prototype.getGuideStates=function(){var e=this.graph.getDefaultParent(),n=this.graph.getModel(),t=mxUtils.bind(this,function(e){return null!=this.graph.view.getState(e)&&n.isVertex(e)&&null!=n.getGeometry(e)&&!n.getGeometry(e).relative});return this.graph.view.getCellStates(n.filterDescendants(t,e))},mxGraphHandler.prototype.getCells=function(e){return!this.delayedSelection&&this.graph.isCellMovable(e)?[e]:this.graph.getMovableCells(this.graph.getSelectionCells())},mxGraphHandler.prototype.getPreviewBounds=function(e){return null!=(e=this.getBoundingBox(e))&&(e.grow(-1,-1),e.width<this.minimumSize&&(e.x-=(this.minimumSize-e.width)/2,e.width=this.minimumSize),e.height<this.minimumSize&&(e.y-=(this.minimumSize-e.height)/2,e.height=this.minimumSize)),e},mxGraphHandler.prototype.getBoundingBox=function(e){var n=null;if(null!=e&&0<e.length)for(var t=this.graph.getModel(),a=0;a<e.length;a++)if(t.isVertex(e[a])||t.isEdge(e[a])){var i=this.graph.view.getState(e[a]);if(null!=i){var s=i;t.isVertex(e[a])&&null!=i.shape&&null!=i.shape.boundingBox&&(s=i.shape.boundingBox),null==n?n=new mxRectangle(s.x,s.y,s.width,s.height):n.add(s)}}return n},mxGraphHandler.prototype.createPreviewShape=function(e){return(e=new mxRectangleShape(e,null,this.previewColor)).isDashed=!0,this.htmlPreview?(e.dialect=mxConstants.DIALECT_STRICTHTML,e.init(this.graph.container)):(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),e.pointerEvents=!1),e},mxGraphHandler.prototype.start=function(e,n,t){this.cell=e,this.first=mxUtils.convertPoint(this.graph.container,n,t),this.cells=this.getCells(this.cell),this.bounds=this.graph.getView().getBounds(this.cells),this.pBounds=this.getPreviewBounds(this.cells),this.guidesEnabled&&(this.guide=new mxGuide(this.graph,this.getGuideStates()))},mxGraphHandler.prototype.useGuidesForEvent=function(e){return null==this.guide||this.guide.isEnabledForEvent(e.getEvent())},mxGraphHandler.prototype.snap=function(e){var n=this.scaleGrid?this.graph.view.scale:1;return e.x=this.graph.snap(e.x/n)*n,e.y=this.graph.snap(e.y/n)*n,e},mxGraphHandler.prototype.mouseMove=function(e,n){var t=this.graph;if(!n.isConsumed()&&t.isMouseDown&&null!=this.cell&&null!=this.first&&null!=this.bounds){var a=(s=mxUtils.convertPoint(t.container,n.getX(),n.getY())).x-this.first.x,i=s.y-this.first.y,s=t.tolerance;if(null!=this.shape||Math.abs(a)>s||Math.abs(i)>s){null==this.highlight&&(this.highlight=new mxCellHighlight(this.graph,mxConstants.DROP_TARGET_COLOR,3)),null==this.shape&&(this.shape=this.createPreviewShape(this.bounds));var o=t.isGridEnabledEvent(n.getEvent());s=!0;if(null!=this.guide&&this.useGuidesForEvent(n))s=!1,a=(i=this.guide.move(this.bounds,new mxPoint(a,i),o)).x,i=i.y;else if(o){var r=t.getView().translate,l=t.getView().scale;o=this.bounds.x-(t.snap(this.bounds.x/l-r.x)+r.x)*l,r=this.bounds.y-(t.snap(this.bounds.y/l-r.y)+r.y)*l,a=(i=this.snap(new mxPoint(a,i))).x-o,i=i.y-r}for(null!=this.guide&&s&&this.guide.hide(),t.isConstrainedEvent(n.getEvent())&&(Math.abs(a)>Math.abs(i)?i=0:a=0),this.currentDx=a,this.currentDy=i,this.updatePreviewShape(),s=null,i=n.getCell(),t.isDropEnabled()&&this.highlightEnabled&&(s=t.getDropTarget(this.cells,n.getEvent(),i)),o=s,r=t.getModel();null!=o&&o!=this.cells[0];)o=r.getParent(o);l=t.isCloneEvent(n.getEvent())&&t.isCellsCloneable()&&this.isCloneEnabled();var d=!1;null==(a=t.getView().getState(s))||null!=o||r.getParent(this.cell)==s&&!l?(this.target=null,this.connectOnDrop&&null!=i&&1==this.cells.length&&t.getModel().isVertex(i)&&t.isCellConnectable(i)&&(null!=(a=t.getView().getState(i))&&(t=null==t.getEdgeValidationError(null,this.cell,i)?mxConstants.VALID_COLOR:mxConstants.INVALID_CONNECT_TARGET_COLOR,this.setHighlightColor(t),d=!0))):(this.target!=s&&(this.target=s,this.setHighlightColor(mxConstants.DROP_TARGET_COLOR)),d=!0),null!=a&&d?this.highlight.highlight(a):this.highlight.hide()}n.consume(),mxEvent.consume(n.getEvent())}else!this.isMoveEnabled()&&!this.isCloneEnabled()||!this.updateCursor||n.isConsumed()||null==n.getState()||t.isMouseDown||(null==(a=t.getCursorForCell(n.getCell()))&&t.isEnabled()&&t.isCellMovable(n.getCell())&&(a=t.getModel().isEdge(n.getCell())?mxConstants.CURSOR_MOVABLE_EDGE:mxConstants.CURSOR_MOVABLE_VERTEX),n.getState().setCursor(a),n.consume())},mxGraphHandler.prototype.updatePreviewShape=function(){null!=this.shape&&(this.shape.bounds=new mxRectangle(Math.round(this.pBounds.x+this.currentDx-this.graph.panDx),Math.round(this.pBounds.y+this.currentDy-this.graph.panDy),this.pBounds.width,this.pBounds.height),this.shape.redraw())},mxGraphHandler.prototype.setHighlightColor=function(e){null!=this.highlight&&this.highlight.setHighlightColor(e)},mxGraphHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()){var t=this.graph;if(null!=this.cell&&null!=this.first&&null!=this.shape&&null!=this.currentDx&&null!=this.currentDy){var a=t.getView().scale,i=t.isCloneEvent(n.getEvent())&&t.isCellsCloneable()&&this.isCloneEnabled(),s=this.currentDx/a,o=(a=this.currentDy/a,n.getCell());this.connectOnDrop&&null==this.target&&null!=o&&t.getModel().isVertex(o)&&t.isCellConnectable(o)&&t.isEdgeValid(null,this.cell,o)?t.connectionHandler.connect(this.cell,o,n.getEvent()):(o=this.target,t.isSplitEnabled()&&t.isSplitTarget(o,this.cells,n.getEvent())?t.splitEdge(o,this.cells,null,s,a):this.moveCells(this.cells,s,a,i,this.target,n.getEvent()))}else this.isSelectEnabled()&&this.delayedSelection&&null!=this.cell&&this.selectDelayed(n)}this.cellWasClicked&&n.consume(),this.reset()},mxGraphHandler.prototype.selectDelayed=function(e){this.graph.selectCellForEvent(this.cell,e.getEvent())},mxGraphHandler.prototype.reset=function(){this.destroyShapes(),this.delayedSelection=this.cellWasClicked=!1,this.target=this.cell=this.first=this.guides=this.currentDy=this.currentDx=null},mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(e,n,t){if(this.graph.getModel().isVertex(e)){if(e=this.graph.getView().getState(e),t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(t),mxEvent.getClientY(t)),0!=(a=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))){n=Math.cos(-a);var a=Math.sin(-a),i=new mxPoint(e.getCenterX(),e.getCenterY());t=mxUtils.getRotatedPoint(t,n,a,i)}return null!=e&&!mxUtils.contains(e,t.x,t.y)}return!1},mxGraphHandler.prototype.moveCells=function(e,n,t,a,i,s){a&&(e=this.graph.getCloneableCells(e)),null==i&&this.isRemoveCellsFromParent()&&this.shouldRemoveCellsFromParent(this.graph.getModel().getParent(this.cell),e,s)&&(i=this.graph.getDefaultParent()),e=this.graph.moveCells(e,n-this.graph.panDx/this.graph.view.scale,t-this.graph.panDy/this.graph.view.scale,a,i,s),this.isSelectEnabled()&&this.scrollOnMove&&this.graph.scrollCellToVisible(e[0]),a&&this.graph.setSelectionCells(e)},mxGraphHandler.prototype.destroyShapes=function(){null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.guide&&(this.guide.destroy(),this.guide=null),null!=this.highlight&&(this.highlight.destroy(),this.highlight=null)},mxGraphHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),this.graph.removeListener(this.panHandler),this.destroyShapes()},mxPanningHandler.prototype=new mxPopupMenu,mxPanningHandler.prototype.constructor=mxPanningHandler,mxPanningHandler.prototype.graph=null,mxPanningHandler.prototype.triggerX=null,mxPanningHandler.prototype.triggerY=null,mxPanningHandler.prototype.usePopupTrigger=!0,mxPanningHandler.prototype.useLeftButtonForPanning=!1,mxPanningHandler.prototype.selectOnPopup=!0,mxPanningHandler.prototype.clearSelectionOnBackground=!0,mxPanningHandler.prototype.ignoreCell=!1,mxPanningHandler.prototype.previewEnabled=!0,mxPanningHandler.prototype.useGrid=!1,mxPanningHandler.prototype.panningEnabled=!0,mxPanningHandler.prototype.isPanningEnabled=function(){return this.panningEnabled},mxPanningHandler.prototype.setPanningEnabled=function(e){this.panningEnabled=e},mxPanningHandler.prototype.init=function(){mxPopupMenu.prototype.init.apply(this),mxEvent.addListener(this.div,mxClient.IS_TOUCH?"touchmove":"mousemove",mxUtils.bind(this,function(e){this.graph.tooltipHandler.hide()}))},mxPanningHandler.prototype.isPanningTrigger=function(e){var n=e.getEvent();return this.useLeftButtonForPanning&&(this.ignoreCell||null==e.getState())&&mxEvent.isLeftMouseButton(n)||mxEvent.isControlDown(n)&&mxEvent.isShiftDown(n)||this.usePopupTrigger&&mxEvent.isPopupTrigger(n)},mxPanningHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()){this.hideMenu(),this.dx0=-this.graph.container.scrollLeft,this.dy0=-this.graph.container.scrollTop;var t=mxUtils.convertPoint(this.graph.container,n.getX(),n.getY());this.triggerX=t.x,this.triggerY=t.y,this.popupTrigger=this.isPopupTrigger(n),this.panningTrigger=this.isPanningEnabled()&&this.isPanningTrigger(n),this.startX=n.getX(),this.startY=n.getY(),this.panningTrigger&&this.consumePanningTrigger(n)}},mxPanningHandler.prototype.consumePanningTrigger=function(e){e.consume()},mxPanningHandler.prototype.mouseMove=function(e,n){var t=n.getX()-this.startX,a=n.getY()-this.startY;if(this.active)this.previewEnabled&&(this.useGrid&&(t=this.graph.snap(t),a=this.graph.snap(a)),this.graph.panGraph(t+this.dx0,a+this.dy0)),this.fireEvent(new mxEventObject(mxEvent.PAN,"event",n)),n.consume();else if(this.panningTrigger){var i=this.active;this.active=Math.abs(t)>this.graph.tolerance||Math.abs(a)>this.graph.tolerance,!i&&this.active&&this.fireEvent(new mxEventObject(mxEvent.PAN_START,"event",n))}},mxPanningHandler.prototype.mouseUp=function(e,n){var t=Math.abs(n.getX()-this.startX),a=Math.abs(n.getY()-this.startY);if(this.active){if(!this.graph.useScrollbarsForPanning||!mxUtils.hasScrollbars(this.graph.container)){t=n.getX()-this.startX,a=n.getY()-this.startY,this.useGrid&&(t=this.graph.snap(t),a=this.graph.snap(a));var i=this.graph.getView().scale,s=this.graph.getView().translate;this.graph.panGraph(0,0),this.panGraph(s.x+t/i,s.y+a/i)}this.active=!1,this.fireEvent(new mxEventObject(mxEvent.PAN_END,"event",n)),n.consume()}else this.popupTrigger&&t<this.graph.tolerance&&a<this.graph.tolerance&&(t=this.getCellForPopupEvent(n),this.graph.isEnabled()&&this.selectOnPopup&&null!=t&&!this.graph.isCellSelected(t)?this.graph.setSelectionCell(t):this.clearSelectionOnBackground&&null==t&&this.graph.clearSelection(),this.graph.tooltipHandler.hide(),a=mxUtils.getScrollOrigin(),a=new mxPoint(n.getX()+a.x,n.getY()+a.y),this.popup(a.x+1,a.y+1,t,n.getEvent()),n.consume());this.popupTrigger=this.panningTrigger=!1},mxPanningHandler.prototype.getCellForPopupEvent=function(e){return e.getCell()},mxPanningHandler.prototype.panGraph=function(e,n){this.graph.getView().setTranslate(e,n)},mxPanningHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),mxPopupMenu.prototype.destroy.apply(this)},mxUtils.extend(mxCellMarker,mxEventSource),mxCellMarker.prototype.graph=null,mxCellMarker.prototype.enabled=!0,mxCellMarker.prototype.hotspot=mxConstants.DEFAULT_HOTSPOT,mxCellMarker.prototype.hotspotEnabled=!1,mxCellMarker.prototype.validColor=null,mxCellMarker.prototype.invalidColor=null,mxCellMarker.prototype.currentColor=null,mxCellMarker.prototype.validState=null,mxCellMarker.prototype.markedState=null,mxCellMarker.prototype.setEnabled=function(e){this.enabled=e},mxCellMarker.prototype.isEnabled=function(){return this.enabled},mxCellMarker.prototype.setHotspot=function(e){this.hotspot=e},mxCellMarker.prototype.getHotspot=function(){return this.hotspot},mxCellMarker.prototype.setHotspotEnabled=function(e){this.hotspotEnabled=e},mxCellMarker.prototype.isHotspotEnabled=function(){return this.hotspotEnabled},mxCellMarker.prototype.hasValidState=function(){return null!=this.validState},mxCellMarker.prototype.getValidState=function(){return this.validState},mxCellMarker.prototype.getMarkedState=function(){return this.markedState},mxCellMarker.prototype.reset=function(){(this.validState=null)!=this.markedState&&(this.markedState=null,this.unmark())},mxCellMarker.prototype.process=function(e){var n=null;if(this.isEnabled()){var t=null!=(n=this.getState(e))&&this.isValidState(n);e=this.getMarkerColor(e.getEvent(),n,t),this.validState=t?n:null,n==this.markedState&&e==this.currentColor||(this.currentColor=e,null!=n&&null!=this.currentColor?(this.markedState=n,this.mark()):null!=this.markedState&&(this.markedState=null,this.unmark()))}return n},mxCellMarker.prototype.markCell=function(e,n){var t=this.graph.getView().getState(e);null!=t&&(this.currentColor=null!=n?n:this.validColor,this.markedState=t,this.mark())},mxCellMarker.prototype.mark=function(){this.highlight.setHighlightColor(this.currentColor),this.highlight.highlight(this.markedState),this.fireEvent(new mxEventObject(mxEvent.MARK,"state",this.markedState))},mxCellMarker.prototype.unmark=function(){this.mark()},mxCellMarker.prototype.isValidState=function(e){return!0},mxCellMarker.prototype.getMarkerColor=function(e,n,t){return t?this.validColor:this.invalidColor},mxCellMarker.prototype.getState=function(e){var n=this.graph.getView();return cell=this.getCell(e),null!=(n=this.getStateToMark(n.getState(cell)))&&this.intersects(n,e)?n:null},mxCellMarker.prototype.getCell=function(e){return e.getCell()},mxCellMarker.prototype.getStateToMark=function(e){return e},mxCellMarker.prototype.intersects=function(e,n){return!this.hotspotEnabled||mxUtils.intersectsHotspot(e,n.getGraphX(),n.getGraphY(),this.hotspot,mxConstants.MIN_HOTSPOT_SIZE,mxConstants.MAX_HOTSPOT_SIZE)},mxCellMarker.prototype.destroy=function(){this.graph.getView().removeListener(this.resetHandler),this.graph.getModel().removeListener(this.resetHandler),this.highlight.destroy()},mxUtils.extend(mxSelectionCellsHandler,mxEventSource),mxSelectionCellsHandler.prototype.graph=null,mxSelectionCellsHandler.prototype.enabled=!0,mxSelectionCellsHandler.prototype.refreshHandler=null,mxSelectionCellsHandler.prototype.maxHandlers=100,mxSelectionCellsHandler.prototype.handlers=null,mxSelectionCellsHandler.prototype.isEnabled=function(){return this.enabled},mxSelectionCellsHandler.prototype.setEnabled=function(e){this.enabled=e},mxSelectionCellsHandler.prototype.getHandler=function(e){return this.handlers.get(e)},mxSelectionCellsHandler.prototype.reset=function(){this.handlers.visit(function(e,n){n.reset.apply(n)})},mxSelectionCellsHandler.prototype.refresh=function(){var e=this.handlers;this.handlers=new mxDictionary;for(var n=this.graph.getSelectionCells(),t=0;t<n.length;t++){var a=this.graph.view.getState(n[t]);if(null!=a){var i=e.remove(n[t]);null!=i&&(i.state!=a?(i.destroy(),i=null):i.redraw()),null==i&&(i=this.graph.createHandler(a),this.fireEvent(new mxEventObject(mxEvent.ADD,"state",a))),null!=i&&this.handlers.put(n[t],i)}}e.visit(mxUtils.bind(this,function(e,n){this.fireEvent(new mxEventObject(mxEvent.REMOVE,"state",n.state)),n.destroy()}))},mxSelectionCellsHandler.prototype.mouseDown=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseDown.apply(n,t)})}},mxSelectionCellsHandler.prototype.mouseMove=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseMove.apply(n,t)})}},mxSelectionCellsHandler.prototype.mouseUp=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseUp.apply(n,t)})}},mxSelectionCellsHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),null!=this.refreshHandler&&(this.graph.getSelectionModel().removeListener(this.refreshHandler),this.graph.getModel().removeListener(this.refreshHandler),this.graph.getView().removeListener(this.refreshHandler),this.refreshHandler=null)},mxUtils.extend(mxConnectionHandler,mxEventSource),mxConnectionHandler.prototype.graph=null,mxConnectionHandler.prototype.factoryMethod=!0,mxConnectionHandler.prototype.moveIconFront=!1,mxConnectionHandler.prototype.moveIconBack=!1,mxConnectionHandler.prototype.connectImage=null,mxConnectionHandler.prototype.targetConnectImage=!1,mxConnectionHandler.prototype.enabled=!0,mxConnectionHandler.prototype.select=!0,mxConnectionHandler.prototype.createTarget=!1;mxConnectionHandler.prototype.marker=null,mxConnectionHandler.prototype.constraintHandler=null,mxConnectionHandler.prototype.error=null,mxConnectionHandler.prototype.waypointsEnabled=!1,mxConnectionHandler.prototype.tapAndHoldEnabled=!0,mxConnectionHandler.prototype.tapAndHoldDelay=500,mxConnectionHandler.prototype.tapAndHoldInProgress=!1,mxConnectionHandler.prototype.tapAndHoldValid=!1,mxConnectionHandler.prototype.tapAndHoldTolerance=4,mxConnectionHandler.prototype.initialTouchX=0,mxConnectionHandler.prototype.initialTouchY=0,mxConnectionHandler.prototype.ignoreMouseDown=!1,mxConnectionHandler.prototype.first=null,mxConnectionHandler.prototype.connectIconOffset=new mxPoint(0,mxConstants.TOOLTIP_VERTICAL_OFFSET),mxConnectionHandler.prototype.edgeState=null,mxConnectionHandler.prototype.changeHandler=null,mxConnectionHandler.prototype.drillHandler=null,mxConnectionHandler.prototype.mouseDownCounter=0,mxConnectionHandler.prototype.movePreviewAway=mxClient.IS_VML,mxConnectionHandler.prototype.isEnabled=function(){return this.enabled},mxConnectionHandler.prototype.setEnabled=function(e){this.enabled=e},mxConnectionHandler.prototype.isCreateTarget=function(){return this.createTarget},mxConnectionHandler.prototype.setCreateTarget=function(e){this.createTarget=e},mxConnectionHandler.prototype.createShape=function(){var e=new mxPolyline([],mxConstants.INVALID_COLOR);if(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),e.svgStrokeTolerance=0,e.pointerEvents=!1,e.isDashed=!0,this.graph.dialect==mxConstants.DIALECT_SVG)e.node.setAttribute("pointer-events","none");else{var n=mxUtils.bind(this,function(e){return e=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),this.graph.view.getState(this.graph.getCellAt(e.x,e.y))});mxEvent.redirectMouseEvents(e.node,this.graph,n)}return e},mxConnectionHandler.prototype.init=function(){this.graph.addMouseListener(this),this.marker=this.createMarker(),this.constraintHandler=new mxConstraintHandler(this.graph),this.changeHandler=mxUtils.bind(this,function(e){null!=this.iconState&&(this.iconState=this.graph.getView().getState(this.iconState.cell)),null!=this.iconState?this.redrawIcons(this.icons,this.iconState):(this.destroyIcons(this.icons),this.previous=null),this.constraintHandler.reset()}),this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler),this.graph.getView().addListener(mxEvent.SCALE,this.changeHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.changeHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.changeHandler),this.drillHandler=mxUtils.bind(this,function(e){this.destroyIcons(this.icons)}),this.graph.addListener(mxEvent.START_EDITING,this.drillHandler),this.graph.getView().addListener(mxEvent.DOWN,this.drillHandler),this.graph.getView().addListener(mxEvent.UP,this.drillHandler)},mxConnectionHandler.prototype.isConnectableCell=function(e){return!0},mxConnectionHandler.prototype.createMarker=function(){var a=new mxCellMarker(this.graph);return a.hotspotEnabled=!0,a.getCell=mxUtils.bind(this,function(e,n){return n=mxCellMarker.prototype.getCell.apply(a,arguments),this.error=null,this.isConnectableCell(n)?(null!=n?this.isConnecting()?null!=this.previous&&(this.error=this.validateConnection(this.previous.cell,n),null!=this.error&&0==this.error.length&&(n=null,this.isCreateTarget()&&(this.error=null))):this.isValidSource(n)||(n=null):this.isConnecting()&&!this.isCreateTarget()&&!this.graph.allowDanglingEdges&&(this.error=""),n):null}),a.isValidState=mxUtils.bind(this,function(e){return this.isConnecting()?null==this.error:mxCellMarker.prototype.isValidState.apply(a,arguments)}),a.getMarkerColor=mxUtils.bind(this,function(e,n,t){return null==this.connectImage||this.isConnecting()?mxCellMarker.prototype.getMarkerColor.apply(a,arguments):null}),a.intersects=mxUtils.bind(this,function(e,n){return!(null==this.connectImage&&!this.isConnecting())||mxCellMarker.prototype.intersects.apply(a,arguments)}),a},mxConnectionHandler.prototype.start=function(e,n,t,a){this.previous=e,this.first=new mxPoint(n,t),this.edgeState=null!=a?a:this.createEdgeState(null),this.marker.currentColor=this.marker.validColor,this.marker.markedState=e,this.marker.mark(),this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous))},mxConnectionHandler.prototype.isConnecting=function(){return null!=this.first&&null!=this.shape},mxConnectionHandler.prototype.isValidSource=function(e){return this.graph.isValidSource(e)},mxConnectionHandler.prototype.isValidTarget=function(e){return!0},mxConnectionHandler.prototype.validateConnection=function(e,n){return this.isValidTarget(n)?this.graph.getEdgeValidationError(null,e,n):""},mxConnectionHandler.prototype.getConnectImage=function(e){return this.connectImage},mxConnectionHandler.prototype.isMoveIconToFrontForState=function(e){return null!=e.text&&e.text.node.parentNode==this.graph.container||this.moveIconFront},mxConnectionHandler.prototype.createIcons=function(e){if(null==(i=this.getConnectImage(e))||null==e)return null;this.iconState=e;var n=[],t=new mxImageShape(new mxRectangle(0,0,i.width,i.height),i.src,null,null,0);t.preserveImageAspect=!1,this.isMoveIconToFrontForState(e)?(t.dialect=mxConstants.DIALECT_STRICTHTML,t.init(this.graph.container)):(t.dialect=this.graph.dialect==mxConstants.DIALECT_SVG?mxConstants.DIALECT_SVG:mxConstants.DIALECT_VML,t.init(this.graph.getView().getOverlayPane()),this.moveIconBack&&null!=t.node.previousSibling&&t.node.parentNode.insertBefore(t.node,t.node.parentNode.firstChild)),t.node.style.cursor=mxConstants.CURSOR_CONNECT;var a=mxUtils.bind(this,function(){return null!=this.currentState?this.currentState:e}),i=mxUtils.bind(this,function(e){mxEvent.isConsumed(e)||(this.icon=t,this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,a())))});return mxEvent.redirectMouseEvents(t.node,this.graph,a,i),n.push(t),this.redrawIcons(n,this.iconState),n},mxConnectionHandler.prototype.redrawIcons=function(e,n){if(null!=e&&null!=e[0]&&null!=n){var t=this.getIconPosition(e[0],n);e[0].bounds.x=t.x,e[0].bounds.y=t.y,e[0].redraw()}},mxConnectionHandler.prototype.getIconPosition=function(e,n){var t=this.graph.getView().scale,a=n.getCenterX(),i=n.getCenterY();if(this.graph.isSwimlane(n.cell)){a=0!=(s=this.graph.getStartSize(n.cell)).width?n.x+s.width*t/2:a,i=0!=s.height?n.y+s.height*t/2:i;if(0!=(s=mxUtils.toRadians(mxUtils.getValue(n.style,mxConstants.STYLE_ROTATION)||0))){t=Math.cos(s);var s=Math.sin(s),o=new mxPoint(n.getCenterX(),n.getCenterY());a=(i=mxUtils.getRotatedPoint(new mxPoint(a,i),t,s,o)).x,i=i.y}}return new mxPoint(a-e.bounds.width/2,i-e.bounds.height/2)},mxConnectionHandler.prototype.destroyIcons=function(e){if(null!=e){this.iconState=null;for(var n=0;n<e.length;n++)e[n].destroy()}},mxConnectionHandler.prototype.isStartEvent=function(e){return!this.graph.isForceMarqueeEvent(e.getEvent())&&(null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentConstraint||null!=this.previous&&null==this.error&&(null==this.icons||null!=this.icons&&null!=this.icon))},mxConnectionHandler.prototype.mouseDown=function(e,n){if(this.mouseDownCounter++,this.isEnabled()&&this.graph.isEnabled()&&!n.isConsumed()&&!this.isConnecting()&&this.isStartEvent(n)){if(null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentPoint?(this.sourceConstraint=this.constraintHandler.currentConstraint,this.previous=this.constraintHandler.currentFocus,this.first=this.constraintHandler.currentPoint.clone()):this.first=new mxPoint(n.getGraphX(),n.getGraphY()),this.edgeState=this.createEdgeState(n),this.mouseDownCounter=1,this.waypointsEnabled&&null==this.shape&&(this.waypoints=null,this.shape=this.createShape()),null==this.previous&&null!=this.edgeState){var t=this.graph.getPointForEvent(n.getEvent());this.edgeState.cell.geometry.setTerminalPoint(t,!0)}this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous)),n.consume()}else if(mxClient.IS_TOUCH&&this.tapAndHoldEnabled&&!this.tapAndHoldInProgress&&this.isEnabled()&&this.graph.isEnabled()&&!this.isConnecting()){this.tapAndHoldInProgress=!0,this.initialTouchX=n.getX(),this.initialTouchY=n.getY();var a=this.graph.view.getState(this.marker.getCell(n));this.tapAndHoldThread&&window.clearTimeout(this.tapAndHoldThread),this.tapAndHoldThread=window.setTimeout(mxUtils.bind(this,function(){this.tapAndHoldValid&&this.tapAndHold(n,a),this.tapAndHoldValid=this.tapAndHoldInProgress=!1}),this.tapAndHoldDelay),this.tapAndHoldValid=!0}this.selectedIcon=this.icon,this.icon=null},mxConnectionHandler.prototype.tapAndHold=function(e,n){null!=n&&(this.marker.currentColor=this.marker.validColor,this.marker.markedState=n,this.marker.mark(),this.first=new mxPoint(e.getGraphX(),e.getGraphY()),this.edgeState=this.createEdgeState(e),this.previous=n,this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous)))},mxConnectionHandler.prototype.isImmediateConnectSource=function(e){return!this.graph.isCellMovable(e.cell)},mxConnectionHandler.prototype.createEdgeState=function(e){return null},mxConnectionHandler.prototype.updateCurrentState=function(e){var n=this.marker.process(e);this.constraintHandler.update(e,null==this.first),this.currentState=n},mxConnectionHandler.prototype.convertWaypoint=function(e){var n=this.graph.getView().getScale(),t=this.graph.getView().getTranslate();e.x=e.x/n-t.x,e.y=e.y/n-t.y},mxConnectionHandler.prototype.mouseMove=function(e,n){if(this.tapAndHoldValid&&(this.tapAndHoldValid=Math.abs(this.initialTouchX-n.getX())<this.tapAndHoldTolerance&&Math.abs(this.initialTouchY-n.getY())<this.tapAndHoldTolerance),n.isConsumed()||!this.ignoreMouseDown&&null==this.first&&this.graph.isMouseDown)this.constraintHandler.reset();else{if(!this.isEnabled()&&null!=this.currentState&&(this.destroyIcons(this.icons),this.currentState=null),(null!=this.first||this.isEnabled()&&this.graph.isEnabled())&&this.updateCurrentState(n),null!=this.first){var t=this.graph.getView().scale,a=null,i=t=new mxPoint(this.graph.snap(n.getGraphX()/t)*t,this.graph.snap(n.getGraphY()/t)*t);null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentPoint&&(a=this.constraintHandler.currentConstraint,i=this.constraintHandler.currentPoint.clone());var s=this.first;if(null!=this.selectedIcon){var o=this.selectedIcon.bounds.width,r=this.selectedIcon.bounds.height;null!=this.currentState&&this.targetConnectImage?(o=this.getIconPosition(this.selectedIcon,this.currentState),this.selectedIcon.bounds.x=o.x,this.selectedIcon.bounds.y=o.y):(o=new mxRectangle(n.getGraphX()+this.connectIconOffset.x,n.getGraphY()+this.connectIconOffset.y,o,r),this.selectedIcon.bounds=o),this.selectedIcon.redraw()}if(null!=this.edgeState){if(this.edgeState.absolutePoints=[null,null!=this.currentState?null:i],this.graph.view.updateFixedTerminalPoint(this.edgeState,this.previous,!0,this.sourceConstraint),null!=this.currentState&&(null==a&&(a=this.graph.getConnectionConstraint(this.edgeState,this.previous,!1)),this.edgeState.setAbsoluteTerminalPoint(null,!1),this.graph.view.updateFixedTerminalPoint(this.edgeState,this.currentState,!1,a)),(s=null)!=this.waypoints)for(s=[],i=0;i<this.waypoints.length;i++)a=this.waypoints[i].clone(),this.convertWaypoint(a),s[i]=a;this.graph.view.updatePoints(this.edgeState,s,this.previous,this.currentState),this.graph.view.updateFloatingTerminalPoints(this.edgeState,this.previous,this.currentState),i=this.edgeState.absolutePoints[this.edgeState.absolutePoints.length-1],s=this.edgeState.absolutePoints[0]}else null!=this.currentState&&null==this.constraintHandler.currentConstraint&&(null!=(o=this.getTargetPerimeterPoint(this.currentState,n))&&(i=o)),null==this.sourceConstraint&&null!=this.previous&&(null!=(o=this.getSourcePerimeterPoint(this.previous,null!=this.waypoints&&0<this.waypoints.length?this.waypoints[0]:i,n))&&(s=o));if(null==this.currentState&&this.movePreviewAway){if(o=s,null!=this.edgeState&&2<this.edgeState.absolutePoints.length&&(null!=(a=this.edgeState.absolutePoints[this.edgeState.absolutePoints.length-2])&&(o=a)),a=i.x-o.x,o=i.y-o.y,0==(r=Math.sqrt(a*a+o*o)))return;i.x-=4*a/r,i.y-=4*o/r}null==this.shape&&(a=Math.abs(t.x-this.first.x),o=Math.abs(t.y-this.first.y),a>this.graph.tolerance||o>this.graph.tolerance)&&(this.shape=this.createShape(),this.updateCurrentState(n)),null!=this.shape&&(null!=this.edgeState?this.shape.points=this.edgeState.absolutePoints:(t=[s],null!=this.waypoints&&(t=t.concat(this.waypoints)),t.push(i),this.shape.points=t),this.drawPreview()),mxEvent.consume(n.getEvent()),n.consume()}else this.isEnabled()&&this.graph.isEnabled()?this.previous!=this.currentState&&null==this.edgeState?(this.destroyIcons(this.icons),(this.icons=null)!=this.currentState&&null==this.error&&(this.icons=this.createIcons(this.currentState),null==this.icons&&(this.currentState.setCursor(mxConstants.CURSOR_CONNECT),n.consume())),this.previous=this.currentState):this.previous==this.currentState&&null!=this.currentState&&null==this.icons&&!this.graph.isMouseDown&&n.consume():this.constraintHandler.reset();if(null!=this.constraintHandler.currentConstraint&&this.marker.reset(),!this.graph.isMouseDown&&null!=this.currentState&&null!=this.icons){for(t=!1,s=n.getSource(),i=0;i<this.icons.length&&!t;i++)t=s==this.icons[i].node||s.parentNode==this.icons[i].node;t||this.updateIcons(this.currentState,this.icons,n)}}},mxConnectionHandler.prototype.getTargetPerimeterPoint=function(e,n){var t=null,a=(i=e.view).getPerimeterFunction(e);if(null!=a){var i,s=null!=this.waypoints&&0<this.waypoints.length?this.waypoints[this.waypoints.length-1]:new mxPoint(this.previous.getCenterX(),this.previous.getCenterY());null!=(i=a(i.getPerimeterBounds(e),this.edgeState,s,!1))&&(t=i)}else t=new mxPoint(e.getCenterX(),e.getCenterY());return t},mxConnectionHandler.prototype.getSourcePerimeterPoint=function(e,n,t){t=null;var a=e.view,i=a.getPerimeterFunction(e),s=new mxPoint(e.getCenterX(),e.getCenterY());if(null!=i){var o=mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0),r=-o*(Math.PI/180);0!=o&&(n=mxUtils.getRotatedPoint(new mxPoint(n.x,n.y),Math.cos(r),Math.sin(r),s)),null!=(e=i(a.getPerimeterBounds(e),e,n,!1))&&(0!=o&&(e=mxUtils.getRotatedPoint(new mxPoint(e.x,e.y),Math.cos(-r),Math.sin(-r),s)),t=e)}else t=s;return t},mxConnectionHandler.prototype.updateIcons=function(e,n,t){},mxConnectionHandler.prototype.isStopEvent=function(e){return null!=e.getState()},mxConnectionHandler.prototype.addWaypointForEvent=function(e){var n=mxUtils.convertPoint(this.graph.container,e.getX(),e.getY()),t=Math.abs(n.x-this.first.x);n=Math.abs(n.y-this.first.y);(null!=this.waypoints||1<this.mouseDownCounter&&(t>this.graph.tolerance||n>this.graph.tolerance))&&(null==this.waypoints&&(this.waypoints=[]),t=this.graph.view.scale,n=new mxPoint(this.graph.snap(e.getGraphX()/t)*t,this.graph.snap(e.getGraphY()/t)*t),this.waypoints.push(n))},mxConnectionHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()&&this.isConnecting()){if(this.waypointsEnabled&&!this.isStopEvent(n))return this.addWaypointForEvent(n),void n.consume();if(null==this.error){var t=null!=this.previous?this.previous.cell:null,a=null;null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(a=this.constraintHandler.currentFocus.cell),null==a&&this.marker.hasValidState()&&(a=this.marker.validState.cell),this.connect(t,a,n.getEvent(),n.getCell())}else null!=this.previous&&null!=this.marker.validState&&this.previous.cell==this.marker.validState.cell&&this.graph.selectCellForEvent(this.marker.source,evt),0<this.error.length&&this.graph.validationAlert(this.error);this.destroyIcons(this.icons),n.consume()}null!=this.first&&this.reset(),this.tapAndHoldValid=this.tapAndHoldInProgress=!1},mxConnectionHandler.prototype.reset=function(){null!=this.shape&&(this.shape.destroy(),this.shape=null),this.destroyIcons(this.icons),this.icons=null,this.marker.reset(),this.constraintHandler.reset(),this.sourceConstraint=this.error=this.previous=this.edgeState=this.selectedIcon=null,this.mouseDownCounter=0,this.icon=this.first=null,this.fireEvent(new mxEventObject(mxEvent.RESET))},mxConnectionHandler.prototype.drawPreview=function(){var e=null==this.error;this.shape.strokewidth=this.getEdgeWidth(e),e=this.getEdgeColor(e),this.shape.stroke=e,this.shape.redraw()},mxConnectionHandler.prototype.getEdgeColor=function(e){return e?mxConstants.VALID_COLOR:mxConstants.INVALID_COLOR},mxConnectionHandler.prototype.getEdgeWidth=function(e){return e?3:1},mxConnectionHandler.prototype.connect=function(e,n,t,a){if(null!=n||this.isCreateTarget()||this.graph.allowDanglingEdges){var i=this.graph.getModel(),s=null;i.beginUpdate();try{if(null!=e&&null==n&&this.isCreateTarget()&&null!=(n=this.createTargetVertex(t,e))){if(null!=(a=this.graph.getDropTarget([n],t,a))&&this.graph.getModel().isEdge(a))a=this.graph.getDefaultParent();else{var o=this.graph.getView().getState(a);if(null!=o){var r=i.getGeometry(n);r.x-=o.origin.x,r.y-=o.origin.y}}this.graph.addCell(n,a)}var l=this.graph.getDefaultParent();if(null!=e&&null!=n&&i.getParent(e)==i.getParent(n)&&i.getParent(i.getParent(e))!=i.getRoot()&&(l=i.getParent(e),null!=e.geometry&&e.geometry.relative&&null!=n.geometry&&n.geometry.relative&&(l=i.getParent(l))),r=o=null,null!=this.edgeState&&(o=this.edgeState.cell.value,r=this.edgeState.cell.style),null!=(s=this.insertEdge(l,null,o,e,n,r))){this.graph.setConnectionConstraint(s,e,!0,this.sourceConstraint),this.graph.setConnectionConstraint(s,n,!1,this.constraintHandler.currentConstraint),null!=this.edgeState&&i.setGeometry(s,this.edgeState.cell.geometry);var d=i.getGeometry(s);if(null==d&&((d=new mxGeometry).relative=!0,i.setGeometry(s,d)),null!=this.waypoints&&0<this.waypoints.length){var c=this.graph.view.scale,m=this.graph.view.translate;for(d.points=[],e=0;e<this.waypoints.length;e++){var u=this.waypoints[e];d.points.push(new mxPoint(u.x/c-m.x,u.y/c-m.y))}}null==n&&((u=this.graph.getPointForEvent(t,!1)).x-=this.graph.panDx/this.graph.view.scale,u.y-=this.graph.panDy/this.graph.view.scale,d.setTerminalPoint(u,!1)),this.fireEvent(new mxEventObject(mxEvent.CONNECT,"cell",s,"event",t,"target",a))}}catch(e){mxLog.show(),mxLog.debug(e.message)}finally{i.endUpdate()}this.select&&this.selectCells(s,n)}},mxConnectionHandler.prototype.selectCells=function(e,n){this.graph.setSelectionCell(e)},mxConnectionHandler.prototype.insertEdge=function(e,n,t,a,i,s){return null==this.factoryMethod?this.graph.insertEdge(e,n,t,a,i,s):(n=this.createEdge(t,a,i,s),this.graph.addEdge(n,e,a,i))},mxConnectionHandler.prototype.createTargetVertex=function(e,n){for(var t=this.graph.getCellGeometry(n);null!=t&&t.relative;)n=this.graph.getModel().getParent(n),t=this.graph.getCellGeometry(n);var a=this.graph.cloneCells([n])[0];if(null!=(t=this.graph.getModel().getGeometry(a))){var i=this.graph.getPointForEvent(e);if(t.x=this.graph.snap(i.x-t.width/2)-this.graph.panDx/this.graph.view.scale,t.y=this.graph.snap(i.y-t.height/2)-this.graph.panDy/this.graph.view.scale,null!=this.first){var s=this.graph.view.getState(n);if(null!=s){var o=this.getAlignmentTolerance();Math.abs(this.graph.snap(this.first.x)-this.graph.snap(i.x))<=o?t.x=s.x:Math.abs(this.graph.snap(this.first.y)-this.graph.snap(i.y))<=o&&(t.y=s.y)}}}return a},mxConnectionHandler.prototype.getAlignmentTolerance=function(){return this.graph.isGridEnabled()?this.graph.gridSize:this.graph.tolerance},mxConnectionHandler.prototype.createEdge=function(e,n,t,a){var i=null;return null!=this.factoryMethod&&(i=this.factoryMethod(n,t,a)),null==i&&((i=new mxCell(e||"")).setEdge(!0),i.setStyle(a),(e=new mxGeometry).relative=!0,i.setGeometry(e)),i},mxConnectionHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.marker&&(this.marker.destroy(),this.marker=null),null!=this.constraintHandler&&(this.constraintHandler.destroy(),this.constraintHandler=null),null!=this.changeHandler&&(this.graph.getModel().removeListener(this.changeHandler),this.graph.getView().removeListener(this.changeHandler),this.changeHandler=null),null!=this.drillHandler&&(this.graph.removeListener(this.drillHandler),this.graph.getView().removeListener(this.drillHandler),this.drillHandler=null)},mxConstraintHandler.prototype.pointImage=new mxImage(mxClient.imageBasePath+"/point.gif",5,5),mxConstraintHandler.prototype.graph=null,mxConstraintHandler.prototype.enabled=!0,mxConstraintHandler.prototype.highlightColor=mxConstants.DEFAULT_VALID_COLOR,mxConstraintHandler.prototype.isEnabled=function(){return this.enabled},mxConstraintHandler.prototype.setEnabled=function(e){this.enabled=e},mxConstraintHandler.prototype.reset=function(){if(null!=this.focusIcons){for(var e=0;e<this.focusIcons.length;e++)this.focusIcons[e].destroy();this.focusIcons=null}null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null),this.focusPoints=this.currentFocus=this.currentPoint=this.currentFocusArea=this.currentConstraint=null},mxConstraintHandler.prototype.getTolerance=function(){return this.graph.getTolerance()},mxConstraintHandler.prototype.getImageForConstraint=function(e,n,t){return this.pointImage},mxConstraintHandler.prototype.isEventIgnored=function(e,n){return!1},mxConstraintHandler.prototype.update=function(e,n){if(this.isEnabled()&&!this.isEventIgnored(e)){var t=this.getTolerance(),a=new mxRectangle(e.getGraphX()-t,e.getGraphY()-t,2*t,2*t),i=null!=e.getCell()&&this.graph.isCellConnectable(e.getCell());if((null==this.currentFocusArea||!mxUtils.intersects(this.currentFocusArea,a)||null!=e.getState()&&null!=this.currentFocus&&i)&&(this.currentFocusArea=null,e.getState()!=this.currentFocus))if(this.currentFocus=null,this.constraints=null!=e.getState()&&i?this.graph.getAllConnectionConstraints(e.getState(),n):null,null!=this.constraints){if(this.currentFocus=e.getState(),this.currentFocusArea=new mxRectangle(e.getState().x,e.getState().y,e.getState().width,e.getState().height),null!=this.focusIcons){for(i=0;i<this.focusIcons.length;i++)this.focusIcons[i].destroy();this.focusPoints=this.focusIcons=null}for(this.focusIcons=[],this.focusPoints=[],i=0;i<this.constraints.length;i++){var s,o=this.graph.getConnectionPoint(e.getState(),this.constraints[i]),r=(s=this.getImageForConstraint(e.getState(),this.constraints[i],o)).src;(s=new mxImageShape(s=new mxRectangle(o.x-s.width/2,o.y-s.height/2,s.width,s.height),r)).dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,s.preserveImageAspect=!1,s.init(this.graph.getView().getOverlayPane()),null!=s.node.previousSibling&&s.node.parentNode.insertBefore(s.node,s.node.parentNode.firstChild),r=mxUtils.bind(this,function(){return null!=this.currentFocus?this.currentFocus:e.getState()}),s.redraw(),mxEvent.redirectMouseEvents(s.node,this.graph,r),this.currentFocusArea.add(s.bounds),this.focusIcons.push(s),this.focusPoints.push(o)}this.currentFocusArea.grow(t)}else if(null!=this.focusIcons){for(null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null),i=0;i<this.focusIcons.length;i++)this.focusIcons[i].destroy();this.focusPoints=this.focusIcons=null}if(this.currentPoint=this.currentConstraint=null,null!=this.focusIcons&&null!=this.constraints&&(null==e.getState()||this.currentFocus==e.getState()))for(i=0;i<this.focusIcons.length;i++)if(mxUtils.intersects(this.focusIcons[i].bounds,a)){this.currentConstraint=this.constraints[i],this.currentPoint=this.focusPoints[i],(t=this.focusIcons[i].bounds.clone()).grow(mxClient.IS_IE?3:2),mxClient.IS_IE&&(t.width-=1,t.height-=1),null==this.focusHighlight?((t=new mxRectangleShape(t,null,this.highlightColor,3)).dialect=this.graph.dialect==mxConstants.DIALECT_SVG?mxConstants.DIALECT_SVG:mxConstants.DIALECT_VML,t.init(this.graph.getView().getOverlayPane()),this.focusHighlight=t,r=mxUtils.bind(this,function(){return null!=this.currentFocus?this.currentFocus:e.getState()}),mxEvent.redirectMouseEvents(t.node,this.graph,r)):(this.focusHighlight.bounds=t,this.focusHighlight.redraw());break}null==this.currentConstraint&&null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null)}},mxConstraintHandler.prototype.destroy=function(){this.reset()},mxRubberband.prototype.defaultOpacity=20,mxRubberband.prototype.enabled=!0,mxRubberband.prototype.div=null,mxRubberband.prototype.sharedDiv=null,mxRubberband.prototype.currentX=0,mxRubberband.prototype.currentY=0,mxRubberband.prototype.isEnabled=function(){return this.enabled},mxRubberband.prototype.setEnabled=function(e){this.enabled=e},mxRubberband.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()&&this.graph.isEnabled()&&(this.graph.isForceMarqueeEvent(n.getEvent())||null==n.getState())){var t=mxUtils.getOffset(this.graph.container),a=mxUtils.getScrollOrigin(this.graph.container);if(a.x-=t.x,a.y-=t.y,this.start(n.getX()+a.x,n.getY()+a.y),mxClient.IS_NS&&!mxClient.IS_SF&&!mxClient.IS_GC){var i=this.graph.container,s=function(e){e=new mxMouseEvent(e);var n=mxUtils.convertPoint(i,e.getX(),e.getY());return e.graphX=n.x,e.graphY=n.y,e};this.dragHandler=mxUtils.bind(this,function(e){this.mouseMove(this.graph,s(e))}),this.dropHandler=mxUtils.bind(this,function(e){this.mouseUp(this.graph,s(e))}),mxEvent.addListener(document,"mousemove",this.dragHandler),mxEvent.addListener(document,"mouseup",this.dropHandler)}n.consume(!1)}},mxRubberband.prototype.start=function(e,n){this.first=new mxPoint(e,n)},mxRubberband.prototype.mouseMove=function(e,n){if(!n.isConsumed()&&null!=this.first){var t=mxUtils.getScrollOrigin(this.graph.container),a=mxUtils.getOffset(this.graph.container);t.x-=a.x,t.y-=a.y;a=n.getX()+t.x,t=n.getY()+t.y;var i=this.first.x-a,s=this.first.y-t,o=this.graph.tolerance;(null!=this.div||Math.abs(i)>o||Math.abs(s)>o)&&(null==this.div&&(this.div=this.createShape()),mxUtils.clearSelection(),this.update(a,t),n.consume())}},mxRubberband.prototype.createShape=function(){return null==this.sharedDiv&&(this.sharedDiv=document.createElement("div"),this.sharedDiv.className="mxRubberband",mxUtils.setOpacity(this.sharedDiv,this.defaultOpacity)),this.graph.container.appendChild(this.sharedDiv),this.sharedDiv},mxRubberband.prototype.mouseUp=function(e,n){var t=null!=this.div;this.reset(),t&&(t=new mxRectangle(this.x,this.y,this.width,this.height),this.graph.selectRegion(t,n.getEvent()),n.consume())},mxRubberband.prototype.reset=function(){null!=this.div&&this.div.parentNode.removeChild(this.div),null!=this.dragHandler&&(mxEvent.removeListener(document,"mousemove",this.dragHandler),this.dragHandler=null),null!=this.dropHandler&&(mxEvent.removeListener(document,"mouseup",this.dropHandler),this.dropHandler=null),this.currentY=this.currentX=0,this.div=this.first=null},mxRubberband.prototype.update=function(e,n){this.currentX=e,this.currentY=n,this.repaint()},mxRubberband.prototype.repaint=function(){if(null!=this.div){var e=this.currentX-this.graph.panDx,n=this.currentY-this.graph.panDy;this.x=Math.min(this.first.x,e),this.y=Math.min(this.first.y,n),this.width=Math.max(this.first.x,e)-this.x,this.height=Math.max(this.first.y,n)-this.y,e=mxClient.IS_VML?this.graph.panDy:0,this.div.style.left=this.x+(mxClient.IS_VML?this.graph.panDx:0)+"px",this.div.style.top=this.y+e+"px",this.div.style.width=Math.max(1,this.width)+"px",this.div.style.height=Math.max(1,this.height)+"px"}},mxRubberband.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,this.graph.removeMouseListener(this),this.graph.removeListener(this.panHandler),this.reset(),null!=this.sharedDiv&&(this.sharedDiv=null))},mxVertexHandler.prototype.graph=null,mxVertexHandler.prototype.state=null,mxVertexHandler.prototype.singleSizer=!1,mxVertexHandler.prototype.index=null,mxVertexHandler.prototype.allowHandleBoundsCheck=!0,mxVertexHandler.prototype.handleImage=null,mxVertexHandler.prototype.tolerance=0,mxVertexHandler.prototype.rotationEnabled=!1,mxVertexHandler.prototype.rotationRaster=!0,mxVertexHandler.prototype.init=function(){if(this.graph=this.state.view.graph,this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.selectionBounds.x,this.selectionBounds.y,this.selectionBounds.width,this.selectionBounds.height),this.selectionBorder=this.createSelectionShape(this.bounds),this.selectionBorder.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.selectionBorder.pointerEvents=!1,this.selectionBorder.init(this.graph.getView().getOverlayPane()),this.graph.isCellMovable(this.state.cell)&&(this.selectionBorder.node.style.cursor=mxConstants.CURSOR_MOVABLE_VERTEX),mxEvent.redirectMouseEvents(this.selectionBorder.node,this.graph,this.state),mxGraphHandler.prototype.maxCells<=0||this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells){var e=this.graph.isCellResizable(this.state.cell);if(this.sizers=[],e||this.graph.isLabelMovable(this.state.cell)&&2<=this.state.width&&2<=this.state.height){var n=0;e&&(this.singleSizer||(this.sizers.push(this.createSizer("nw-resize",n++)),this.sizers.push(this.createSizer("n-resize",n++)),this.sizers.push(this.createSizer("ne-resize",n++)),this.sizers.push(this.createSizer("w-resize",n++)),this.sizers.push(this.createSizer("e-resize",n++)),this.sizers.push(this.createSizer("sw-resize",n++)),this.sizers.push(this.createSizer("s-resize",n++))),this.sizers.push(this.createSizer("se-resize",n++))),null!=(e=this.graph.model.getGeometry(this.state.cell))&&!e.relative&&!this.graph.isSwimlane(this.state.cell)&&this.graph.isLabelMovable(this.state.cell)&&(this.labelShape=this.createSizer(mxConstants.CURSOR_LABEL_HANDLE,mxEvent.LABEL_HANDLE,mxConstants.LABEL_HANDLE_SIZE,mxConstants.LABEL_HANDLE_FILLCOLOR),this.sizers.push(this.labelShape))}else this.graph.isCellMovable(this.state.cell)&&!this.graph.isCellResizable(this.state.cell)&&this.state.width<2&&this.state.height<2&&(this.labelShape=this.createSizer(mxConstants.CURSOR_MOVABLE_VERTEX,null,null,mxConstants.LABEL_HANDLE_FILLCOLOR),this.sizers.push(this.labelShape))}this.rotationEnabled&&(mxGraphHandler.prototype.maxCells<=0||this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells)&&(this.rotationShape=this.createSizer("pointer",mxEvent.ROTATION_HANDLE,mxConstants.HANDLE_SIZE+3,mxConstants.HANDLE_FILLCOLOR),this.sizers.push(this.rotationShape)),this.redraw()},mxVertexHandler.prototype.getSelectionBounds=function(e){return new mxRectangle(Math.round(e.x),Math.round(e.y),Math.round(e.width),Math.round(e.height))},mxVertexHandler.prototype.createSelectionShape=function(e){return(e=new mxRectangleShape(e,null,this.getSelectionColor())).strokewidth=this.getSelectionStrokeWidth(),e.isDashed=this.isSelectionDashed(),e},mxVertexHandler.prototype.getSelectionColor=function(){return mxConstants.VERTEX_SELECTION_COLOR},mxVertexHandler.prototype.getSelectionStrokeWidth=function(){return mxConstants.VERTEX_SELECTION_STROKEWIDTH},mxVertexHandler.prototype.isSelectionDashed=function(){return mxConstants.VERTEX_SELECTION_DASHED},mxVertexHandler.prototype.createSizer=function(e,n,t,a){return t=new mxRectangle(0,0,t=t||mxConstants.HANDLE_SIZE,t),(a=this.createSizerShape(t,n,a)).isHtmlAllowed()&&null!=this.state.text&&this.state.text.node.parentNode==this.graph.container?(a.bounds.height-=1,a.bounds.width-=1,a.dialect=mxConstants.DIALECT_STRICTHTML,a.init(this.graph.container)):(a.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,a.init(this.graph.getView().getOverlayPane())),mxEvent.redirectMouseEvents(a.node,this.graph,this.state),this.graph.isEnabled()&&(a.node.style.cursor=e),this.isSizerVisible(n)||(a.node.style.visibility="hidden"),a},mxVertexHandler.prototype.isSizerVisible=function(e){return!0},mxVertexHandler.prototype.createSizerShape=function(e,n,t){return null!=this.handleImage?(e.width=this.handleImage.width,e.height=this.handleImage.height,new mxImageShape(e,this.handleImage.src)):n==mxEvent.ROTATION_HANDLE?new mxEllipse(e,t||mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR):new mxRectangleShape(e,t||mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR)},mxVertexHandler.prototype.moveSizerTo=function(e,n,t){null!=e&&(e.bounds.x=Math.round(n-e.bounds.width/2),e.bounds.y=Math.round(t-e.bounds.height/2),e.redraw())},mxVertexHandler.prototype.getHandleForEvent=function(e){if(e.isSource(this.rotationShape))return mxEvent.ROTATION_HANDLE;if(e.isSource(this.labelShape))return mxEvent.LABEL_HANDLE;if(null!=this.sizers)for(var n=this.tolerance,t=(n=this.allowHandleBoundsCheck&&(mxClient.IS_IE||0<n)?new mxRectangle(e.getGraphX()-n,e.getGraphY()-n,2*n,2*n):null,0);t<this.sizers.length;t++)if(e.isSource(this.sizers[t])||null!=n&&mxUtils.intersects(this.sizers[t].bounds,n))return t;return null},mxVertexHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&(0<this.tolerance||n.getState()==this.state)){var t=this.getHandleForEvent(n);null!=t&&(this.start(n.getX(),n.getY(),t),n.consume())}},mxVertexHandler.prototype.start=function(e,n,t){e=mxUtils.convertPoint(this.graph.container,e,n),this.startX=e.x,this.startY=e.y,this.index=t,this.selectionBorder.node.style.display=t==mxEvent.ROTATION_HANDLE?"inline":"none",this.preview=this.createSelectionShape(this.bounds),mxClient.IS_SVG&&0!=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0")||null==this.state.text||this.state.text.node.parentNode!=this.graph.container?(this.preview.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.preview.init(this.graph.view.getOverlayPane())):(this.preview.dialect=mxConstants.DIALECT_STRICTHTML,this.preview.init(this.graph.container))},mxVertexHandler.prototype.mouseMove=function(e,n){if(n.isConsumed()||null==this.index)null!=this.getHandleForEvent(n)&&n.consume(!1);else{var t=new mxPoint(n.getGraphX(),n.getGraphY()),a=this.graph.isGridEnabledEvent(n.getEvent()),i=this.graph.getView().scale;if(this.index==mxEvent.LABEL_HANDLE)a&&(t.x=this.graph.snap(t.x/i)*i,t.y=this.graph.snap(t.y/i)*i),this.moveSizerTo(this.sizers[this.sizers.length-1],t.x,t.y);else if(this.index==mxEvent.ROTATION_HANDLE){var s=this.state.x+this.state.width/2-t.x,o=this.state.y+this.state.height/2-t.y;this.currentAlpha=0!=s?180*Math.atan(o/s)/Math.PI+90:o<0?180:0,0<s&&(this.currentAlpha-=180),this.rotationRaster&&(s=t.x-this.state.getCenterX(),o=t.y-this.state.getCenterY(),s=Math.abs(Math.sqrt(s*s+o*o)-this.state.height/2-20),s=Math.max(1,5*Math.min(3,Math.max(0,Math.round(80/Math.abs(s))))),this.currentAlpha=Math.round(this.currentAlpha/s)*s),this.selectionBorder.rotation=this.currentAlpha,this.selectionBorder.redraw()}else{var r=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),l=Math.cos(-r),d=Math.sin(-r),c=new mxPoint(this.state.getCenterX(),this.state.getCenterY()),m=(s=t.x-this.startX,o=t.y-this.startY,t=this.graph.view.translate,d*s+l*o);s=l*s-d*o;this.bounds=this.union(this.selectionBounds,s,m,this.index,a,i,t),l=Math.cos(r),c=(d=Math.sin(r))*(s=(o=new mxPoint(this.bounds.getCenterX(),this.bounds.getCenterY())).x-c.x)+l*(o=o.y-c.y)-o,this.bounds.x+=l*s-d*o-s,this.bounds.y+=c,this.drawPreview()}n.consume()}},mxVertexHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()&&null!=this.index&&null!=this.state){var t=new mxPoint(n.getGraphX(),n.getGraphY());this.graph.getModel().beginUpdate();try{if(this.index==mxEvent.ROTATION_HANDLE)null!=this.currentAlpha&&this.rotateCell(this.state.cell,this.currentAlpha-(this.state.style[mxConstants.STYLE_ROTATION]||0));else{var a=this.graph.isGridEnabledEvent(n.getEvent()),i=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),s=Math.cos(-i),o=Math.sin(-i),r=(t=o*(r=t.x-this.startX)+s*(l=t.y-this.startY),s*r-o*l),l=t,d=this.graph.view.scale;this.resizeCell(this.state.cell,r/d,l/d,this.index,a)}}finally{this.graph.getModel().endUpdate()}this.reset(),n.consume()}},mxVertexHandler.prototype.rotateCell=function(e,n){var t=this.graph.getModel();if(t.isVertex(e)){if(null!=(s=e==this.state?this.state:this.graph.view.getState(e))&&this.graph.setCellStyles(mxConstants.STYLE_ROTATION,(s.style[mxConstants.STYLE_ROTATION]||0)+n,[e]),this.state.cell!=e&&(null!=(s=this.graph.getCellGeometry(e))&&!s.relative))if(0!=n){var a=this.graph.getModel().getParent(e),i=this.graph.getCellGeometry(a);if(!s.relative&&null!=i){var s,o=mxUtils.toRadians(n),r=(a=Math.cos(o),o=Math.sin(o),new mxPoint(s.getCenterX(),s.getCenterY()));i=new mxPoint(i.width/2,i.height/2),a=mxUtils.getRotatedPoint(r,a,o,i);(s=s.clone()).x=a.x-s.width/2,s.y=a.y-s.height/2,t.setGeometry(e,s)}}else(s=s.clone()).x+=dx,s.y+=dy,t.setGeometry(e,s);for(s=t.getChildCount(e),a=0;a<s;a++)this.rotateCell(t.getChildAt(e,a),n)}},mxVertexHandler.prototype.reset=function(){this.index=this.currentAlpha=null,null!=this.preview&&(this.preview.destroy(),this.preview=null),null!=this.selectionBorder&&(this.selectionBorder.node.style.display="inline",this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.selectionBounds.x,this.selectionBounds.y,this.selectionBounds.width,this.selectionBounds.height),this.drawPreview())},mxVertexHandler.prototype.resizeCell=function(e,n,t,a,i){var s=this.graph.model.getGeometry(e);if(null!=s)if(a==mxEvent.LABEL_HANDLE)a=this.graph.view.scale,n=(this.labelShape.bounds.getCenterX()-this.startX)/a,t=(this.labelShape.bounds.getCenterY()-this.startY)/a,null==(s=s.clone()).offset?s.offset=new mxPoint(n,t):(s.offset.x+=n,s.offset.y+=t),this.graph.model.setGeometry(e,s);else{if(a=this.union(s,n,t,a,i,1,new mxPoint(0,0)),0!=(r=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"))){n=a.getCenterX()-s.getCenterX(),t=a.getCenterY()-s.getCenterY(),i=Math.cos(r);var o=Math.sin(r),r=i*n-o*t-n;n=o*n+i*t-t,t=a.x-s.x;var l=a.y-s.y,d=i*t-o*l;i=o*t+i*l,a.x+=r,a.y+=n,this.graph.isCellCollapsed(e)||0==r&&0==n||(t=s.x-a.x+d,l=s.y-a.y+i,this.moveChildren(e,t,l))}this.graph.resizeCell(e,a)}},mxVertexHandler.prototype.moveChildren=function(e,n,t){for(var a=this.graph.getModel(),i=a.getChildCount(e),s=0;s<i;s++){var o=a.getChildAt(e,s);if(a.isVertex(o)){var r=this.graph.getCellGeometry(o);null!=r&&!r.relative&&((r=r.clone()).x+=n,r.y+=t,a.setGeometry(o,r))}}},mxVertexHandler.prototype.union=function(e,n,t,a,i,s,o){if(this.singleSizer){o=e.x+e.width+n;var r=e.y+e.height+t;return i&&(o=this.graph.snap(o/s)*s,r=this.graph.snap(r/s)*s),(s=new mxRectangle(e.x,e.y,0,0)).add(new mxRectangle(o,r,0,0)),s}var l=(r=e.x-o.x*s)+e.width,d=e.y-o.y*s;return e=d+e.height,4<a?(e+=t,i&&(e=this.graph.snap(e/s)*s)):a<3&&(d+=t,i&&(d=this.graph.snap(d/s)*s)),0==a||3==a||5==a?(r+=n,i&&(r=this.graph.snap(r/s)*s)):2!=a&&4!=a&&7!=a||(l+=n,i&&(l=this.graph.snap(l/s)*s)),e-=d,(i=l-r)<0&&(r+=i,i=Math.abs(i)),e<0&&(d+=e,e=Math.abs(e)),new mxRectangle(r+o.x*s,d+o.y*s,i,e)},mxVertexHandler.prototype.redraw=function(){this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.state.x,this.state.y,this.state.width,this.state.height);var e=this.state;if(null!=this.sizers){var n=e.x+e.width,t=e.y+e.height;if(this.singleSizer)this.moveSizerTo(this.sizers[0],n,t);else{var a=e.x+e.width/2,i=e.y+e.height/2;if(1<this.sizers.length){var s=mxUtils.toRadians(e.style[mxConstants.STYLE_ROTATION]||"0"),o=Math.cos(s),r=(s=Math.sin(s),new mxPoint(e.getCenterX(),e.getCenterY())),l=mxUtils.getRotatedPoint(new mxPoint(e.x,e.y),o,s,r);this.moveSizerTo(this.sizers[0],l.x,l.y),l.x=a,l.y=e.y,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[1],l.x,l.y),l.x=n,l.y=e.y,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[2],l.x,l.y),l.x=e.x,l.y=i,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[3],l.x,l.y),l.x=n,l.y=i,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[4],l.x,l.y),l.x=e.x,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[5],l.x,l.y),l.x=a,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[6],l.x,l.y),l.x=n,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[7],l.x,l.y),this.moveSizerTo(this.sizers[8],a+e.absoluteOffset.x,i+e.absoluteOffset.y)}else 2<=this.state.width&&2<=this.state.height?this.moveSizerTo(this.sizers[0],a+e.absoluteOffset.x,i+e.absoluteOffset.y):this.moveSizerTo(this.sizers[0],e.x,e.y)}}null!=this.rotationShape&&(s=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),o=Math.cos(s),s=Math.sin(s),r=new mxPoint(this.state.getCenterX(),this.state.getCenterY()),l=mxUtils.getRotatedPoint(new mxPoint(e.x+e.width/2,e.y-16),o,s,r),this.moveSizerTo(this.rotationShape,l.x,l.y)),this.selectionBorder.rotation=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0"),this.drawPreview()},mxVertexHandler.prototype.drawPreview=function(){null!=this.preview&&(this.preview.bounds=this.bounds,this.preview.node.parentNode==this.graph.container&&(this.preview.bounds.width=Math.max(0,this.preview.bounds.width-1),this.preview.bounds.height=Math.max(0,this.preview.bounds.height-1)),this.preview.rotation=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0"),this.preview.redraw()),this.selectionBorder.bounds=this.bounds,this.selectionBorder.redraw()},mxVertexHandler.prototype.destroy=function(){if(null!=this.preview&&(this.preview.destroy(),this.preview=null),this.selectionBorder.destroy(),this.labelShape=this.selectionBorder=null,null!=this.sizers)for(var e=0;e<this.sizers.length;e++)this.sizers[e].destroy(),this.sizers[e]=null},mxEdgeHandler.prototype.graph=null,mxEdgeHandler.prototype.state=null,mxEdgeHandler.prototype.marker=null,mxEdgeHandler.prototype.constraintHandler=null,mxEdgeHandler.prototype.error=null,mxEdgeHandler.prototype.shape=null,mxEdgeHandler.prototype.bends=null,mxEdgeHandler.prototype.labelShape=null,mxEdgeHandler.prototype.cloneEnabled=!0,mxEdgeHandler.prototype.addEnabled=!1,mxEdgeHandler.prototype.removeEnabled=!1,mxEdgeHandler.prototype.preferHtml=!1,mxEdgeHandler.prototype.allowHandleBoundsCheck=!0,mxEdgeHandler.prototype.snapToTerminals=!1,mxEdgeHandler.prototype.handleImage=null,mxEdgeHandler.prototype.tolerance=0,mxEdgeHandler.prototype.init=function(){if(this.graph=this.state.view.graph,this.marker=this.createMarker(),this.constraintHandler=new mxConstraintHandler(this.graph),this.points=[],this.abspoints=this.getSelectionPoints(this.state),this.shape=this.createSelectionShape(this.abspoints),this.shape.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,this.shape.init(this.graph.getView().getOverlayPane()),this.shape.svgStrokeTolerance=0,this.shape.node.style.cursor=mxConstants.CURSOR_MOVABLE_EDGE,mxEvent.addListener(this.shape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e,this.state.cell)})),mxEvent.addGestureListeners(this.shape.node,mxUtils.bind(this,function(e){this.addEnabled&&this.isAddPointEvent(e)?this.addPoint(this.state,e):this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,this.state))}),mxUtils.bind(this,function(e){var n=this.state.cell;if(null!=this.index){var t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));n=this.graph.getCellAt(t.x,t.y);this.graph.isSwimlane(n)&&this.graph.hitsSwimlaneContent(n,t.x,t.y)&&(n=null)}this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,this.graph.getView().getState(n)))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,this.state))})),this.preferHtml=null!=this.state.text&&this.state.text.node.parentNode==this.graph.container,!this.preferHtml){var e=this.state.getVisibleTerminalState(!0);null!=e&&(this.preferHtml=null!=e.text&&e.text.node.parentNode==this.graph.container),this.preferHtml||null!=(e=this.state.getVisibleTerminalState(!1))&&(this.preferHtml=null!=e.text&&e.text.node.parentNode==this.graph.container)}(this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells||mxGraphHandler.prototype.maxCells<=0)&&(this.bends=this.createBends()),this.label=new mxPoint(this.state.absoluteOffset.x,this.state.absoluteOffset.y),this.labelShape=new mxRectangleShape(new mxRectangle,mxConstants.LABEL_HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR),this.labelShape.pointerEvents=!1,this.initBend(this.labelShape),this.labelShape.node.style.cursor=mxConstants.CURSOR_LABEL_HANDLE,mxEvent.redirectMouseEvents(this.labelShape.node,this.graph,this.state),this.redraw()},mxEdgeHandler.prototype.isAddPointEvent=function(e){return mxEvent.isShiftDown(e)},mxEdgeHandler.prototype.isRemovePointEvent=function(e){return mxEvent.isShiftDown(e)},mxEdgeHandler.prototype.getSelectionPoints=function(e){return e.absolutePoints},mxEdgeHandler.prototype.createSelectionShape=function(e){return(e=new mxPolyline(e,this.getSelectionColor())).strokewidth=this.getSelectionStrokeWidth(),e.isDashed=this.isSelectionDashed(),e},mxEdgeHandler.prototype.getSelectionColor=function(){return mxConstants.EDGE_SELECTION_COLOR},mxEdgeHandler.prototype.getSelectionStrokeWidth=function(){return mxConstants.EDGE_SELECTION_STROKEWIDTH},mxEdgeHandler.prototype.isSelectionDashed=function(){return mxConstants.EDGE_SELECTION_DASHED},mxEdgeHandler.prototype.isConnectableCell=function(e){return!0},mxEdgeHandler.prototype.createMarker=function(){var e=new mxCellMarker(this.graph),a=this;return e.getCell=function(e){var n=mxCellMarker.prototype.getCell.apply(this,arguments);if(!a.isConnectableCell(n))return null;var t=a.graph.getModel();return(n==a.state.cell||null!=n&&!a.graph.connectableEdges&&t.isEdge(n))&&(n=null),n},e.isValidState=function(e){var n=a.graph.getModel();n=null!=(n=a.graph.view.getTerminalPort(e,a.graph.view.getState(n.getTerminal(a.state.cell,!a.isSource)),!a.isSource))?n.cell:null;return a.error=a.validateConnection(a.isSource?e.cell:n,a.isSource?n:e.cell),null==a.error},e},mxEdgeHandler.prototype.validateConnection=function(e,n){return this.graph.getEdgeValidationError(this.state.cell,e,n)},mxEdgeHandler.prototype.createBends=function(){for(var e=this.state.cell,n=[],t=0;t<this.abspoints.length;t++)if(this.isHandleVisible(t)){var a=t==this.abspoints.length-1;if((a=0==t||a)||this.graph.isCellBendable(e)){var i=this.createHandleShape(t);if(this.initBend(i),mxClient.IS_TOUCH&&i.node.setAttribute("pointer-events","none"),this.isHandleEnabled(t))if(mxClient.IS_TOUCH){var s=mxUtils.bind(this,function(e){return e=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),this.graph.view.getState(this.graph.getCellAt(e.x,e.y))});mxEvent.redirectMouseEvents(i.node,this.graph,s)}else i.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(i.node,this.graph,this.state);n.push(i),a||(this.points.push(new mxPoint(0,0)),i.node.style.visibility="hidden")}}return n},mxEdgeHandler.prototype.isHandleEnabled=function(e){return!0},mxEdgeHandler.prototype.isHandleVisible=function(e){return!0},mxEdgeHandler.prototype.createHandleShape=function(e){return null!=this.handleImage?new mxImageShape(new mxRectangle(0,0,this.handleImage.width,this.handleImage.height),this.handleImage.src):(e=mxConstants.HANDLE_SIZE,this.preferHtml&&(e-=1),new mxRectangleShape(new mxRectangle(0,0,e,e),mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR))},mxEdgeHandler.prototype.initBend=function(e){this.preferHtml?(e.dialect=mxConstants.DIALECT_STRICTHTML,e.init(this.graph.container)):(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()))},mxEdgeHandler.prototype.getHandleForEvent=function(e){if(null!=this.bends)for(var n=this.tolerance,t=(n=this.allowHandleBoundsCheck&&(mxClient.IS_IE||0<n)?new mxRectangle(e.getGraphX()-n,e.getGraphY()-n,2*n,2*n):null,0);t<this.bends.length;t++)if((e.isSource(this.bends[t])||null!=n&&mxUtils.intersects(this.bends[t].bounds,n))&&"hidden"!=this.bends[t].node.style.visibility)return t;return!(e.isSource(this.labelShape)&&"hidden"!=this.labelShape.node.style.visibility||e.isSource(this.state.text))||(mxClient.IS_SF||mxClient.IS_GC)&&"SELECT"==e.getSource().nodeName?null:mxEvent.LABEL_HANDLE},mxEdgeHandler.prototype.mouseDown=function(e,n){var t=null;null!=(t=this.getHandleForEvent(n))&&!n.isConsumed()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&(this.removeEnabled&&this.isRemovePointEvent(n.getEvent())?this.removePoint(this.state,t):(t!=mxEvent.LABEL_HANDLE||this.graph.isLabelMovable(n.getCell()))&&this.start(n.getX(),n.getY(),t),n.consume())},mxEdgeHandler.prototype.start=function(e,n,t){this.startX=e,this.startY=n,this.isSource=null!=this.bends&&0==t,this.isTarget=null!=this.bends&&t==this.bends.length-1,this.isLabel=t==mxEvent.LABEL_HANDLE,this.isSource||this.isTarget?(e=this.state.cell,(null==(n=this.graph.model.getTerminal(e,this.isSource))&&this.graph.isTerminalPointMovable(e,this.isSource)||null!=n&&this.graph.isCellDisconnectable(e,n,this.isSource))&&(this.index=t)):this.index=t},mxEdgeHandler.prototype.clonePreviewState=function(e,n){return this.state.clone()},mxEdgeHandler.prototype.getSnapToTerminalTolerance=function(){return this.graph.gridSize*this.graph.view.scale/2},mxEdgeHandler.prototype.getPointForEvent=function(e){var t=new mxPoint(e.getGraphX(),e.getGraphY()),a=this.getSnapToTerminalTolerance(),n=this.graph.getView(),i=!1,s=!1;if(this.snapToTerminals&&0<a){var o=function(e){if(null!=e){var n=e.x;Math.abs(t.x-n)<a&&(t.x=n,i=!0),e=e.y,Math.abs(t.y-e)<a&&(t.y=e,s=!0)}},r=function(e){null!=e&&o.call(this,new mxPoint(n.getRoutingCenterX(e),n.getRoutingCenterY(e)))};if(r.call(this,this.state.getVisibleTerminalState(!0)),r.call(this,this.state.getVisibleTerminalState(!1)),null!=this.abspoints)for(r=0;r<this.abspoints;r++)r!=this.index&&o.call(this,this.abspoints[r])}return this.graph.isGridEnabledEvent(e.getEvent())&&(e=n.scale,r=n.translate,i||(t.x=(this.graph.snap(t.x/e-r.x)+r.x)*e),s||(t.y=(this.graph.snap(t.y/e-r.y)+r.y)*e)),t},mxEdgeHandler.prototype.getPreviewTerminalState=function(e){this.constraintHandler.update(e,this.isSource),this.marker.process(e),e=this.marker.getValidState();var n=null;return null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentConstraint&&this.marker.reset(),null!=e?n=e:null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(n=this.constraintHandler.currentFocus),n},mxEdgeHandler.prototype.getPreviewPoints=function(e){var n=null!=(n=this.graph.getCellGeometry(this.state.cell)).points?n.points.slice():null;return this.isSource||this.isTarget?this.graph.resetEdgesOnConnect&&(n=null):(this.convertPoint(e,!1),null==n?n=[e]:n[this.index-1]=e),n},mxEdgeHandler.prototype.updatePreviewState=function(e,n,t){var a=this.isSource?t:this.state.getVisibleTerminalState(!0),i=this.isTarget?t:this.state.getVisibleTerminalState(!1),s=this.graph.getConnectionConstraint(e,a,!0),o=this.graph.getConnectionConstraint(e,i,!1),r=this.constraintHandler.currentConstraint;null==r&&(r=new mxConnectionConstraint),this.isSource?s=r:this.isTarget&&(o=r),(!this.isSource||null!=a)&&e.view.updateFixedTerminalPoint(e,a,!0,s),(!this.isTarget||null!=i)&&e.view.updateFixedTerminalPoint(e,i,!1,o),(this.isSource||this.isTarget)&&null==t&&(e.setAbsoluteTerminalPoint(n,this.isSource),null==this.marker.getMarkedState()&&(this.error=this.graph.allowDanglingEdges?null:"")),e.view.updatePoints(e,this.points,a,i),e.view.updateFloatingTerminalPoints(e,a,i)},mxEdgeHandler.prototype.mouseMove=function(e,n){if(null!=this.index&&null!=this.marker){var t=this.getPointForEvent(n);if(this.isLabel)this.label.x=t.x,this.label.y=t.y;else{this.points=this.getPreviewPoints(t);var a=this.isSource||this.isTarget?this.getPreviewTerminalState(n):null,i=this.clonePreviewState(t,null!=a?a.cell:null);this.updatePreviewState(i,t,a),this.setPreviewColor(null==this.error?this.marker.validColor:this.marker.invalidColor),this.abspoints=i.absolutePoints,this.active=!0}this.drawPreview(),mxEvent.consume(n.getEvent()),n.consume()}else mxClient.IS_IE&&null!=this.getHandleForEvent(n)&&n.consume(!1)},mxEdgeHandler.prototype.mouseUp=function(e,n){if(null!=this.index&&null!=this.marker){var t=this.state.cell;if(n.getX()!=this.startX||n.getY()!=this.startY)if(null!=this.error)0<this.error.length&&this.graph.validationAlert(this.error);else if(this.isLabel)this.moveLabel(this.state,this.label.x,this.label.y);else if(this.isSource||this.isTarget){var a=null;if(null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(a=this.constraintHandler.currentFocus.cell),null==a&&this.marker.hasValidState()&&(a=this.marker.validState.cell),null!=a)t=this.connect(t,a,this.isSource,this.graph.isCloneEvent(n.getEvent())&&this.cloneEnabled&&this.graph.isCellsCloneable(),n);else if(this.graph.isAllowDanglingEdges()){(a=this.abspoints[this.isSource?0:this.abspoints.length-1]).x=a.x/this.graph.view.scale-this.graph.view.translate.x,a.y=a.y/this.graph.view.scale-this.graph.view.translate.y;var i=this.graph.getView().getState(this.graph.getModel().getParent(t));null!=i&&(a.x-=i.origin.x,a.y-=i.origin.y),a.x-=this.graph.panDx/this.graph.view.scale,a.y-=this.graph.panDy/this.graph.view.scale,this.changeTerminalPoint(t,a,this.isSource)}}else this.active?this.changePoints(t,this.points):(this.graph.getView().invalidate(this.state.cell),this.graph.getView().revalidate(this.state.cell));null!=this.marker&&(this.reset(),t!=this.state.cell&&this.graph.setSelectionCell(t)),n.consume()}},mxEdgeHandler.prototype.reset=function(){this.points=this.label=this.index=this.error=null,this.isTarget=this.isSource=this.isLabel=this.active=!1,this.marker.reset(),this.constraintHandler.reset(),this.setPreviewColor(mxConstants.EDGE_SELECTION_COLOR),this.redraw()},mxEdgeHandler.prototype.setPreviewColor=function(e){null!=this.shape&&(this.shape.stroke=e)},mxEdgeHandler.prototype.convertPoint=function(e,n){var t=this.graph.getView().getScale(),a=this.graph.getView().getTranslate();return n&&(e.x=this.graph.snap(e.x),e.y=this.graph.snap(e.y)),e.x=Math.round(e.x/t-a.x),e.y=Math.round(e.y/t-a.y),null!=(t=this.graph.getView().getState(this.graph.getModel().getParent(this.state.cell)))&&(e.x-=t.origin.x,e.y-=t.origin.y),e},mxEdgeHandler.prototype.moveLabel=function(e,n,t){var a=this.graph.getModel();if(null!=(i=a.getGeometry(e.cell))){var i=i.clone(),s=this.graph.getView().getRelativePoint(e,n,t);i.x=s.x,i.y=s.y;var o=this.graph.getView().scale;i.offset=new mxPoint(0,0),s=this.graph.view.getPoint(e,i),i.offset=new mxPoint((n-s.x)/o,(t-s.y)/o),a.setGeometry(e.cell,i)}},mxEdgeHandler.prototype.connect=function(e,n,t,a,i){var s=(i=this.graph.getModel()).getParent(e);i.beginUpdate();try{if(a){var o=e.clone();i.add(s,o,i.getChildCount(s));var r=i.getTerminal(e,!t);this.graph.connectCell(o,r,!t),e=o}var l=this.constraintHandler.currentConstraint;null==l&&(l=new mxConnectionConstraint),this.graph.connectCell(e,n,t,l)}finally{i.endUpdate()}return e},mxEdgeHandler.prototype.changeTerminalPoint=function(e,n,t){var a=this.graph.getModel(),i=a.getGeometry(e);if(null!=i){a.beginUpdate();try{(i=i.clone()).setTerminalPoint(n,t),a.setGeometry(e,i),this.graph.connectCell(e,null,t,new mxConnectionConstraint)}finally{a.endUpdate()}}},mxEdgeHandler.prototype.changePoints=function(e,n){var t=this.graph.getModel(),a=t.getGeometry(e);null!=a&&((a=a.clone()).points=n,t.setGeometry(e,a))},mxEdgeHandler.prototype.addPoint=function(e,n){var t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(n),mxEvent.getClientY(n)),a=this.graph.isGridEnabledEvent(n);this.convertPoint(t,a),this.addPointAt(e,t.x,t.y),mxEvent.consume(n)},mxEdgeHandler.prototype.addPointAt=function(e,n,t){var a=this.graph.getCellGeometry(e.cell);if(n=new mxPoint(n,t),null!=a){a=a.clone(),t=this.graph.view.translate;var i=this.graph.view.scale;t=mxUtils.findNearestSegment(e,(n.x+t.x)*i,(n.y+t.y)*i),null==a.points?a.points=[n]:a.points.splice(t,0,n),this.graph.getModel().setGeometry(e.cell,a),this.destroy(),this.init()}},mxEdgeHandler.prototype.removePoint=function(e,n){if(0<n&&n<this.abspoints.length-1){var t=this.graph.getCellGeometry(this.state.cell);null!=t&&null!=t.points&&((t=t.clone()).points.splice(n-1,1),this.graph.getModel().setGeometry(e.cell,t),this.destroy(),this.init())}},mxEdgeHandler.prototype.getHandleFillColor=function(e){e=0==e;var n=this.state.cell,t=this.graph.getModel().getTerminal(n,e),a=mxConstants.HANDLE_FILLCOLOR;return null!=t&&!this.graph.isCellDisconnectable(n,t,e)||null==t&&!this.graph.isTerminalPointMovable(n,e)?a=mxConstants.LOCKED_HANDLE_FILLCOLOR:null!=t&&this.graph.isCellDisconnectable(n,t,e)&&(a=mxConstants.CONNECT_HANDLE_FILLCOLOR),a},mxEdgeHandler.prototype.redraw=function(){this.abspoints=this.state.absolutePoints.slice();var e=this.state.cell,n=mxConstants.LABEL_HANDLE_SIZE;if(this.label=new mxPoint(this.state.absoluteOffset.x,this.state.absoluteOffset.y),this.labelShape.bounds=new mxRectangle(Math.round(this.label.x-n/2),Math.round(this.label.y-n/2),n,n),this.labelShape.redraw(),null!=(n=this.graph.getLabel(e))&&0<n.length&&this.graph.isLabelMovable(e)?this.labelShape.node.style.visibility="visible":this.labelShape.node.style.visibility="hidden",null!=this.bends&&0<this.bends.length){var t=this.abspoints.length-1,a=(e=this.abspoints[0],this.abspoints[0].y);n=this.bends[0].bounds;this.bends[0].bounds=new mxRectangle(Math.round(this.abspoints[0].x-n.width/2),Math.round(a-n.height/2),n.width,n.height),this.bends[0].fill=this.getHandleFillColor(0),this.bends[0].redraw();a=this.abspoints[t];var i=this.abspoints[t].x,s=(t=this.abspoints[t].y,this.bends.length-1);n=this.bends[s].bounds;this.bends[s].bounds=new mxRectangle(Math.round(i-n.width/2),Math.round(t-n.height/2),n.width,n.height),this.bends[s].fill=this.getHandleFillColor(s),this.bends[s].redraw(),this.redrawInnerBends(e,a)}this.drawPreview()},mxEdgeHandler.prototype.redrawInnerBends=function(e,n){var t=this.graph.getModel().getGeometry(this.state.cell).points;if(null!=t){null==this.points&&(this.points=[]);for(var a=1;a<this.bends.length-1;a++)if(null!=this.bends[a])if(null!=this.abspoints[a]){var i=this.abspoints[a].x,s=this.abspoints[a].y,o=this.bends[a].bounds;this.bends[a].node.style.visibility="visible",this.bends[a].bounds=new mxRectangle(Math.round(i-o.width/2),Math.round(s-o.height/2),o.width,o.height),this.bends[a].redraw(),this.points[a-1]=t[a-1]}else this.bends[a].destroy(),this.bends[a]=null}},mxEdgeHandler.prototype.drawPreview=function(){if(this.isLabel){var e=mxConstants.LABEL_HANDLE_SIZE;e=new mxRectangle(Math.round(this.label.x-e/2),Math.round(this.label.y-e/2),e,e);this.labelShape.bounds=e,this.labelShape.redraw()}else this.shape.points=this.abspoints,this.shape.redraw()},mxEdgeHandler.prototype.destroy=function(){if(null!=this.marker&&(this.marker.destroy(),this.marker=null),null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.labelShape&&(this.labelShape.destroy(),this.labelShape=null),null!=this.constraintHandler&&(this.constraintHandler.destroy(),this.constraintHandler=null),null!=this.bends)for(var e=0;e<this.bends.length;e++)null!=this.bends[e]&&(this.bends[e].destroy(),this.bends[e]=null)},mxUtils.extend(mxElbowEdgeHandler,mxEdgeHandler),mxElbowEdgeHandler.prototype=new mxEdgeHandler,mxElbowEdgeHandler.prototype.constructor=mxElbowEdgeHandler,mxElbowEdgeHandler.prototype.flipEnabled=!0,mxElbowEdgeHandler.prototype.doubleClickOrientationResource="none"!=mxClient.language?"doubleClickOrientation":"",mxElbowEdgeHandler.prototype.createBends=function(){var e=[],n=this.createHandleShape(0);return this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e.push(this.createVirtualBend()),this.points.push(new mxPoint(0,0)),n=this.createHandleShape(2),this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e},mxElbowEdgeHandler.prototype.createVirtualBend=function(){var e=this.createHandleShape();this.initBend(e);var n=this.getCursorForBend();return e.node.style.cursor=n,n=mxUtils.bind(this,function(e){!mxEvent.isConsumed(e)&&this.flipEnabled&&(this.graph.flipEdge(this.state.cell,e),mxEvent.consume(e))}),mxEvent.redirectMouseEvents(e.node,this.graph,this.state,null,null,null,n),this.graph.isCellBendable(this.state.cell)||(e.node.style.display="none"),e},mxElbowEdgeHandler.prototype.getCursorForBend=function(){return this.state.style[mxConstants.STYLE_EDGE]==mxEdgeStyle.TopToBottom||this.state.style[mxConstants.STYLE_EDGE]==mxConstants.EDGESTYLE_TOPTOBOTTOM||(this.state.style[mxConstants.STYLE_EDGE]==mxEdgeStyle.ElbowConnector||this.state.style[mxConstants.STYLE_EDGE]==mxConstants.EDGESTYLE_ELBOW)&&this.state.style[mxConstants.STYLE_ELBOW]==mxConstants.ELBOW_VERTICAL?"row-resize":"col-resize"},mxElbowEdgeHandler.prototype.getTooltipForNode=function(e){var n=null;return null==this.bends||null==this.bends[1]||e!=this.bends[1].node&&e.parentNode!=this.bends[1].node||(n=this.doubleClickOrientationResource,n=mxResources.get(n)||n),n},mxElbowEdgeHandler.prototype.convertPoint=function(e,n){var t=this.graph.getView().getScale(),a=this.graph.getView().getTranslate(),i=this.state.origin;n&&(e.x=this.graph.snap(e.x),e.y=this.graph.snap(e.y)),e.x=Math.round(e.x/t-a.x-i.x),e.y=Math.round(e.y/t-a.y-i.y)},mxElbowEdgeHandler.prototype.redrawInnerBends=function(e,n){var t=null==(t=null!=(t=this.graph.getModel().getGeometry(this.state.cell).points)?t[0]:null)?new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2):new mxPoint(this.graph.getView().scale*(t.x+this.graph.getView().translate.x+this.state.origin.x),this.graph.getView().scale*(t.y+this.graph.getView().translate.y+this.state.origin.y)),a=(i=this.bends[1].bounds).width,i=i.height;null==this.handleImage&&(i=a=mxConstants.HANDLE_SIZE);var s=new mxRectangle(Math.round(t.x-a/2),Math.round(t.y-i/2),a,i);null==this.handleImage&&"hidden"!=this.labelShape.node.style.visibility&&mxUtils.intersects(s,this.labelShape.bounds)&&(a+=3,i+=3,s=new mxRectangle(Math.round(t.x-a/2),Math.round(t.y-i/2),a,i)),this.bends[1].bounds=s,this.bends[1].redraw()},mxUtils.extend(mxEdgeSegmentHandler,mxEdgeHandler),mxEdgeSegmentHandler.prototype=new mxElbowEdgeHandler,mxEdgeSegmentHandler.prototype.constructor=mxEdgeSegmentHandler,mxEdgeSegmentHandler.prototype.getPreviewPoints=function(e){if(this.isSource||this.isTarget)return mxElbowEdgeHandler.prototype.getPreviewPoints.apply(this,arguments);this.convertPoint(e,!1);var n=this.state.absolutePoints,t=n[0].clone();this.convertPoint(t,!1);for(var a=[],i=1;i<n.length;i++){var s=n[i].clone();this.convertPoint(s,!1),i==this.index&&(t.x==s.x?(t.x=e.x,s.x=e.x):(t.y=e.y,s.y=e.y)),i<n.length-1&&a.push(s),t=s}if(1==a.length){if(t=this.state.view,i=this.state.getVisibleTerminalState(!0),null!=(s=this.state.getVisibleTerminalState(!1))&null!=i){var o=this.state.origin.x,r=this.state.origin.y;mxUtils.contains(s,a[0].x+o,a[0].y+r)?n[1].y==n[2].y?a[0].y=t.getRoutingCenterY(i)-r:a[0].x=t.getRoutingCenterX(i)-o:mxUtils.contains(i,a[0].x+o,a[0].y+r)&&(n[1].y==n[0].y?a[0].y=t.getRoutingCenterY(s)-r:a[0].x=t.getRoutingCenterX(s)-o)}}else 0==a.length&&(a=[e]);return a},mxEdgeSegmentHandler.prototype.createBends=function(){var e=[],n=this.createHandleShape(0);this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none");var t=this.state.absolutePoints;if(this.graph.isCellBendable(this.state.cell)){null==this.points&&(this.points=[]);for(var a=0;a<t.length-1;a++)n=this.createVirtualBend(),e.push(n),n.node.style.cursor=0==t[a].x-t[a+1].x?"col-resize":"row-resize",this.points.push(new mxPoint(0,0)),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none")}return n=this.createHandleShape(t.length),this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e},mxEdgeSegmentHandler.prototype.redraw=function(){this.refresh(),mxEdgeHandler.prototype.redraw.apply(this,arguments)},mxEdgeSegmentHandler.prototype.refresh=function(){if(null!=this.bends){for(var e=0;e<this.bends.length;e++)null!=this.bends[e]&&(this.bends[e].destroy(),this.bends[e]=null);this.bends=this.createBends()}},mxEdgeSegmentHandler.prototype.redrawInnerBends=function(e,n){if(this.graph.isCellBendable(this.state.cell)){var t=mxConstants.HANDLE_SIZE,a=this.state.absolutePoints;if(null!=a&&1<a.length)for(var i=0;i<this.state.absolutePoints.length-1;i++)if(null!=this.bends[i+1]){e=a[i],n=a[i+1];var s=new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2);this.bends[i+1].bounds=new mxRectangle(Math.round(s.x-t/2),Math.round(s.y-t/2),t,t),this.bends[i+1].redraw()}}},mxEdgeSegmentHandler.prototype.changePoints=function(e,n){n=[];var t=this.abspoints;if(1<t.length)for(var a=t[0],i=t[1],s=2;s<t.length;s++){var o=t[s];Math.round(a.x)==Math.round(i.x)&&Math.round(i.x)==Math.round(o.x)||Math.round(a.y)==Math.round(i.y)&&Math.round(i.y)==Math.round(o.y)||(i=(a=i).clone(),this.convertPoint(i,!1),n.push(i)),i=o}mxElbowEdgeHandler.prototype.changePoints.apply(this,arguments)},mxKeyHandler.prototype.graph=null,mxKeyHandler.prototype.target=null,mxKeyHandler.prototype.normalKeys=null,mxKeyHandler.prototype.shiftKeys=null,mxKeyHandler.prototype.controlKeys=null,mxKeyHandler.prototype.controlShiftKeys=null,mxKeyHandler.prototype.enabled=!0,mxKeyHandler.prototype.isEnabled=function(){return this.enabled},mxKeyHandler.prototype.setEnabled=function(e){this.enabled=e},mxKeyHandler.prototype.bindKey=function(e,n){this.normalKeys[e]=n},mxKeyHandler.prototype.bindShiftKey=function(e,n){this.shiftKeys[e]=n},mxKeyHandler.prototype.bindControlKey=function(e,n){this.controlKeys[e]=n},mxKeyHandler.prototype.bindControlShiftKey=function(e,n){this.controlShiftKeys[e]=n},mxKeyHandler.prototype.isControlDown=function(e){return mxEvent.isControlDown(e)},mxKeyHandler.prototype.getFunction=function(e){return null!=e?this.isControlDown(e)?mxEvent.isShiftDown(e)?this.controlShiftKeys[e.keyCode]:this.controlKeys[e.keyCode]:mxEvent.isShiftDown(e)?this.shiftKeys[e.keyCode]:this.normalKeys[e.keyCode]:null},mxKeyHandler.prototype.isGraphEvent=function(e){if((e=mxEvent.getSource(e))==this.target||e.parentNode==this.target||null!=this.graph.cellEditor&&e==this.graph.cellEditor.textarea)return!0;for(;null!=e;){if(e==this.graph.container)return!0;e=e.parentNode}return!1},mxKeyHandler.prototype.keyDown=function(e){if(this.graph.isEnabled()&&!mxEvent.isConsumed(e)&&this.isGraphEvent(e)&&this.isEnabled())if(27==e.keyCode)this.escape(e);else if(!this.graph.isEditing()){var n=this.getFunction(e);null!=n&&(n(e),mxEvent.consume(e))}},mxKeyHandler.prototype.escape=function(e){this.graph.isEscapeEnabled()&&this.graph.escape(e)},mxKeyHandler.prototype.destroy=function(){this.target=null},mxTooltipHandler.prototype.zIndex=10005,mxTooltipHandler.prototype.graph=null,mxTooltipHandler.prototype.delay=null,mxTooltipHandler.prototype.hideOnHover=!1,mxTooltipHandler.prototype.enabled=!0,mxTooltipHandler.prototype.isEnabled=function(){return this.enabled},mxTooltipHandler.prototype.setEnabled=function(e){this.enabled=e},mxTooltipHandler.prototype.isHideOnHover=function(){return this.hideOnHover},mxTooltipHandler.prototype.setHideOnHover=function(e){this.hideOnHover=e},mxTooltipHandler.prototype.init=function(){null!=document.body&&(this.div=document.createElement("div"),this.div.className="mxTooltip",this.div.style.visibility="hidden",this.div.style.zIndex=this.zIndex,document.body.appendChild(this.div),mxEvent.addListener(this.div,"mousedown",mxUtils.bind(this,function(e){this.hideTooltip()})))},mxTooltipHandler.prototype.mouseDown=function(e,n){this.reset(n,!1),this.hideTooltip()},mxTooltipHandler.prototype.mouseMove=function(e,n){n.getX()==this.lastX&&n.getY()==this.lastY||(this.reset(n,!0),(this.isHideOnHover()||n.getState()!=this.state||n.getSource()!=this.node&&(!this.stateSource||null!=n.getState()&&this.stateSource==(n.isSource(n.getState().shape)||!n.isSource(n.getState().text))))&&this.hideTooltip()),this.lastX=n.getX(),this.lastY=n.getY()},mxTooltipHandler.prototype.mouseUp=function(e,n){this.reset(n,!0),this.hideTooltip()},mxTooltipHandler.prototype.resetTimer=function(){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null)},mxTooltipHandler.prototype.reset=function(e,n){if(this.resetTimer(),n&&this.isEnabled()&&null!=e.getState()&&(null==this.div||"hidden"==this.div.style.visibility)){var t=e.getState(),a=e.getSource(),i=e.getX(),s=e.getY(),o=e.isSource(t.shape)||e.isSource(t.text);this.thread=window.setTimeout(mxUtils.bind(this,function(){if(!this.graph.isEditing()&&!this.graph.panningHandler.isMenuShowing()){var e=this.graph.getTooltip(t,a,i,s);this.show(e,i,s),this.state=t,this.node=a,this.stateSource=o}}),this.delay)}},mxTooltipHandler.prototype.hide=function(){this.resetTimer(),this.hideTooltip()},mxTooltipHandler.prototype.hideTooltip=function(){null!=this.div&&(this.div.style.visibility="hidden")},mxTooltipHandler.prototype.show=function(e,n,t){if(null!=e&&0<e.length){null==this.div&&this.init();var a=mxUtils.getScrollOrigin();this.div.style.left=n+a.x+"px",this.div.style.top=t+mxConstants.TOOLTIP_VERTICAL_OFFSET+a.y+"px",mxUtils.isNode(e)?(this.div.innerHTML="",this.div.appendChild(e)):this.div.innerHTML=e.replace(/\n/g,"<br>"),this.div.style.visibility="",mxUtils.fit(this.div)}},mxTooltipHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),mxEvent.release(this.div),null!=this.div&&null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.div=null},mxUtils.extend(mxCellTracker,mxCellMarker),mxCellTracker.prototype.mouseDown=function(e,n){},mxCellTracker.prototype.mouseMove=function(e,n){this.isEnabled()&&this.process(n)},mxCellTracker.prototype.mouseUp=function(e,n){this.reset()},mxCellTracker.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,this.graph.removeMouseListener(this),mxCellMarker.prototype.destroy.apply(this))},mxCellHighlight.prototype.keepOnTop=!1,mxCellHighlight.prototype.graph=!0,mxCellHighlight.prototype.state=null,mxCellHighlight.prototype.spacing=2,mxCellHighlight.prototype.resetHandler=null,mxCellHighlight.prototype.setHighlightColor=function(e){this.highlightColor=e,null!=this.shape&&(this.shape.stroke=e)},mxCellHighlight.prototype.drawHighlight=function(){this.shape=this.createShape(),this.repaint(),!this.keepOnTop&&this.shape.node.parentNode.firstChild!=this.shape.node&&this.shape.node.parentNode.insertBefore(this.shape.node,this.shape.node.parentNode.firstChild)},mxCellHighlight.prototype.createShape=function(){var e=null;return(e=this.graph.model.isEdge(this.state.cell)?new mxPolyline(this.state.absolutePoints,this.highlightColor,this.strokeWidth):new mxRectangleShape(new mxRectangle,null,this.highlightColor,this.strokeWidth)).dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),mxEvent.redirectMouseEvents(e.node,this.graph,this.state),e.svgStrokeTolerance=0,e.pointerEvents=!1,e.isDashed=this.dashed,e},mxCellHighlight.prototype.repaint=function(){if(null!=this.state&&null!=this.shape){var e=0;this.graph.model.isEdge(this.state.cell)?this.shape.points=this.state.absolutePoints:(this.shape.bounds=new mxRectangle(this.state.x-this.spacing,this.state.y-this.spacing,this.state.width+2*this.spacing,this.state.height+2*this.spacing),e=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0")),null!=this.state.shape&&this.shape.setCursor(this.state.shape.getCursor()),0!=e&&(this.shape.rotation=e),this.shape.redraw()}},mxCellHighlight.prototype.hide=function(){this.highlight(null)},mxCellHighlight.prototype.highlight=function(e){this.state!=e&&(null!=this.shape&&(this.shape.destroy(),this.shape=null),this.state=e,null!=this.state&&this.drawHighlight())},mxCellHighlight.prototype.destroy=function(){this.graph.getView().removeListener(this.repaintHandler),this.graph.getModel().removeListener(this.repaintHandler),this.graph.getView().removeListener(this.resetHandler),this.graph.getModel().removeListener(this.resetHandler),null!=this.shape&&(this.shape.destroy(),this.shape=null)},mxDefaultKeyHandler.prototype.editor=null,mxDefaultKeyHandler.prototype.handler=null,mxDefaultKeyHandler.prototype.bindAction=function(e,n,t){var a=mxUtils.bind(this,function(){this.editor.execute(n)});t?this.handler.bindControlKey(e,a):this.handler.bindKey(e,a)},mxDefaultKeyHandler.prototype.destroy=function(){this.handler.destroy(),this.handler=null},mxDefaultPopupMenu.prototype.imageBasePath=null,mxDefaultPopupMenu.prototype.config=null,mxDefaultPopupMenu.prototype.createMenu=function(e,n,t,a){if(null!=this.config){var i=this.createConditions(e,t,a);this.addItems(e,n,t,a,i,this.config.firstChild,null)}},mxDefaultPopupMenu.prototype.addItems=function(e,n,t,a,i,s,o){for(var r=!1;null!=s;){if("add"==s.nodeName){if(null==(l=s.getAttribute("if"))||i[l]){var l=s.getAttribute("as"),d=(l=mxResources.get(l)||l,mxUtils.eval(mxUtils.getTextContent(s))),c=s.getAttribute("action"),m=s.getAttribute("icon"),u=s.getAttribute("iconCls");r&&(n.addSeparator(o),r=!1),null!=m&&this.imageBasePath&&(m=this.imageBasePath+m),l=this.addAction(n,e,l,m,d,c,t,o,u),this.addItems(e,n,t,a,i,s.firstChild,l)}}else"separator"==s.nodeName&&(r=!0);s=s.nextSibling}},mxDefaultPopupMenu.prototype.addAction=function(e,n,t,a,i,s,o,r,l){return e.addItem(t,a,function(e){"function"==typeof i&&i.call(n,n,o,e),null!=s&&n.execute(s,o,e)},r,l)},mxDefaultPopupMenu.prototype.createConditions=function(e,n,t){var a=e.graph.getModel(),i=a.getChildCount(n),s=[];for(s.nocell=null==n,s.ncells=1<e.graph.getSelectionCount(),s.notRoot=a.getRoot()!=a.getParent(e.graph.getDefaultParent()),s.cell=null!=n,a=null!=n&&1==e.graph.getSelectionCount(),s.nonEmpty=a&&0<i,s.expandable=a&&e.graph.isCellFoldable(n,!1),s.collapsable=a&&e.graph.isCellFoldable(n,!0),s.validRoot=a&&e.graph.isValidRoot(n),s.emptyValidRoot=s.validRoot&&0==i,s.swimlane=a&&e.graph.isSwimlane(n),i=this.config.getElementsByTagName("condition"),a=0;a<i.length;a++){var o=mxUtils.eval(mxUtils.getTextContent(i[a])),r=i[a].getAttribute("name");null!=r&&"function"==typeof o&&(s[r]=o(e,n,t))}return s},mxDefaultToolbar.prototype.editor=null,mxDefaultToolbar.prototype.toolbar=null,mxDefaultToolbar.prototype.resetHandler=null,mxDefaultToolbar.prototype.spacing=4,mxDefaultToolbar.prototype.connectOnDrop=!1,mxDefaultToolbar.prototype.init=function(e){null!=e&&(this.toolbar=new mxToolbar(e),this.toolbar.addListener(mxEvent.SELECT,mxUtils.bind(this,function(e,n){var t=n.getProperty("function");this.editor.insertFunction=null!=t?mxUtils.bind(this,function(){t.apply(this,arguments),this.toolbar.resetMode()}):null})),this.resetHandler=mxUtils.bind(this,function(){null!=this.toolbar&&this.toolbar.resetMode(!0)}),this.editor.graph.addListener(mxEvent.DOUBLE_CLICK,this.resetHandler),this.editor.addListener(mxEvent.ESCAPE,this.resetHandler))},mxDefaultToolbar.prototype.addItem=function(e,n,t,a){var i=mxUtils.bind(this,function(){null!=t&&0<t.length&&this.editor.execute(t)});return this.toolbar.addItem(e,n,i,a)},mxDefaultToolbar.prototype.addSeparator=function(e){e=e||mxClient.imageBasePath+"/separator.gif",this.toolbar.addSeparator(e)},mxDefaultToolbar.prototype.addCombo=function(){return this.toolbar.addCombo()},mxDefaultToolbar.prototype.addActionCombo=function(e){return this.toolbar.addActionCombo(e)},mxDefaultToolbar.prototype.addActionOption=function(e,n,t){var a=mxUtils.bind(this,function(){this.editor.execute(t)});this.addOption(e,n,a)},mxDefaultToolbar.prototype.addOption=function(e,n,t){return this.toolbar.addOption(e,n,t)},mxDefaultToolbar.prototype.addMode=function(e,n,t,a,i){var s=mxUtils.bind(this,function(){this.editor.setMode(t),null!=i&&i(this.editor)});return this.toolbar.addSwitchMode(e,n,s,a)},mxDefaultToolbar.prototype.addPrototype=function(e,n,t,a,i,s){var o=function(){return"function"==typeof t?t():null!=t?t.clone():null},r=mxUtils.bind(this,function(e,n){"function"==typeof i?i(this.editor,o(),e,n):this.drop(o(),e,n),this.toolbar.resetMode(),mxEvent.consume(e)});return e=this.toolbar.addMode(e,n,r,a,null,s),this.installDropHandler(e,function(e,n,t){r(n,t)}),e},mxDefaultToolbar.prototype.drop=function(e,n,t){var a=this.editor.graph,i=a.getModel();if(null!=t&&!i.isEdge(t)&&this.connectOnDrop&&a.isCellConnectable(t))this.connect(e,n,t);else{for(;null!=t&&!a.isValidDropTarget(t,[e],n);)t=i.getParent(t);this.insert(e,n,t)}},mxDefaultToolbar.prototype.insert=function(e,n,t){var a=this.editor.graph;if(a.canImportCell(e)){var i=mxEvent.getClientX(n),s=mxEvent.getClientY(n);i=mxUtils.convertPoint(a.container,i,s);return a.isSplitEnabled()&&a.isSplitTarget(t,[e],n)?a.splitEdge(t,[e],null,i.x,i.y):this.editor.addVertex(t,e,i.x,i.y)}return null},mxDefaultToolbar.prototype.connect=function(e,n,t){var a=(n=this.editor.graph).getModel();if(null!=t&&n.isCellConnectable(e)&&n.isEdgeValid(null,t,e)){var i=null;a.beginUpdate();try{var s=a.getGeometry(t),o=a.getGeometry(e).clone();o.x=s.x+(s.width-o.width)/2,o.y=s.y+(s.height-o.height)/2;var r=this.spacing*n.gridSize,l=20*a.getDirectedEdgeCount(t,!0);this.editor.horizontalFlow?o.x+=(o.width+s.width)/2+r+l:o.y+=(o.height+s.height)/2+r+l,e.setGeometry(o);var d=a.getParent(t);if(n.addCell(e,d),n.constrainChild(e),i=this.editor.createEdge(t,e),null==a.getGeometry(i)){var c=new mxGeometry;c.relative=!0,a.setGeometry(i,c)}n.addEdge(i,d,t,e)}finally{a.endUpdate()}n.setSelectionCells([e,i]),n.scrollCellToVisible(e)}},mxDefaultToolbar.prototype.installDropHandler=function(n,t){var a=document.createElement("img");a.setAttribute("src",n.getAttribute("src"));var i=mxUtils.bind(this,function(e){a.style.width=2*n.offsetWidth+"px",a.style.height=2*n.offsetHeight+"px",mxUtils.makeDraggable(n,this.editor.graph,t,a),mxEvent.removeListener(a,"load",i)});mxClient.IS_IE?i():mxEvent.addListener(a,"load",i)},mxDefaultToolbar.prototype.destroy=function(){null!=this.resetHandler&&(this.editor.graph.removeListener("dblclick",this.resetHandler),this.editor.removeListener("escape",this.resetHandler),this.resetHandler=null),null!=this.toolbar&&(this.toolbar.destroy(),this.toolbar=null)},mxLoadResources&&mxResources.add(mxClient.basePath+"/resources/editor"),mxEditor.prototype=new mxEventSource,mxEditor.prototype.constructor=mxEditor,mxEditor.prototype.askZoomResource="none"!=mxClient.language?"askZoom":"",mxEditor.prototype.lastSavedResource="none"!=mxClient.language?"lastSaved":"",mxEditor.prototype.currentFileResource="none"!=mxClient.language?"currentFile":"",mxEditor.prototype.propertiesResource="none"!=mxClient.language?"properties":"",mxEditor.prototype.tasksResource="none"!=mxClient.language?"tasks":"",mxEditor.prototype.helpResource="none"!=mxClient.language?"help":"",mxEditor.prototype.outlineResource="none"!=mxClient.language?"outline":"",mxEditor.prototype.outline=null,mxEditor.prototype.graph=null,mxEditor.prototype.graphRenderHint=null,mxEditor.prototype.toolbar=null,mxEditor.prototype.session=null,mxEditor.prototype.status=null,mxEditor.prototype.popupHandler=null,mxEditor.prototype.undoManager=null,mxEditor.prototype.keyHandler=null,mxEditor.prototype.actions=null,mxEditor.prototype.dblClickAction="edit",mxEditor.prototype.swimlaneRequired=!1,mxEditor.prototype.disableContextMenu=!0,mxEditor.prototype.insertFunction=null,mxEditor.prototype.forcedInserting=!1,mxEditor.prototype.templates=null,mxEditor.prototype.defaultEdge=null,mxEditor.prototype.defaultEdgeStyle=null,mxEditor.prototype.defaultGroup=null,mxEditor.prototype.groupBorderSize=null,mxEditor.prototype.filename=null,mxEditor.prototype.linefeed="&#xa;",mxEditor.prototype.postParameterName="xml",mxEditor.prototype.escapePostData=!0,mxEditor.prototype.urlPost=null,mxEditor.prototype.urlImage=null,mxEditor.prototype.urlInit=null,mxEditor.prototype.urlNotify=null,mxEditor.prototype.urlPoll=null,mxEditor.prototype.horizontalFlow=!1,mxEditor.prototype.layoutDiagram=!1,mxEditor.prototype.swimlaneSpacing=0,mxEditor.prototype.maintainSwimlanes=!1,mxEditor.prototype.layoutSwimlanes=!1,mxEditor.prototype.cycleAttributeValues=null,mxEditor.prototype.cycleAttributeIndex=0,mxEditor.prototype.cycleAttributeName="fillColor",mxEditor.prototype.tasks=null,mxEditor.prototype.tasksWindowImage=null,mxEditor.prototype.tasksTop=20,mxEditor.prototype.help=null,mxEditor.prototype.helpWindowImage=null,mxEditor.prototype.urlHelp=null,mxEditor.prototype.helpWidth=300,mxEditor.prototype.helpHeight=260,mxEditor.prototype.propertiesWidth=240,mxEditor.prototype.propertiesHeight=null,mxEditor.prototype.movePropertiesDialog=!1,mxEditor.prototype.validating=!1,mxEditor.prototype.modified=!1,mxEditor.prototype.isModified=function(){return this.modified},mxEditor.prototype.setModified=function(e){this.modified=e},mxEditor.prototype.addActions=function(){this.addAction("save",function(e){e.save()}),this.addAction("print",function(e){new mxPrintPreview(e.graph,1).open()}),this.addAction("show",function(e){mxUtils.show(e.graph,null,10,10)}),this.addAction("exportImage",function(e){var n=e.getUrlImage();if(null==n||mxClient.IS_LOCAL)e.execute("show");else{var t=mxUtils.getViewXml(e.graph,1);t=mxUtils.getXml(t,"\n");mxUtils.submit(n,e.postParameterName+"="+encodeURIComponent(t),document,"_blank")}}),this.addAction("refresh",function(e){e.graph.refresh()}),this.addAction("cut",function(e){e.graph.isEnabled()&&mxClipboard.cut(e.graph)}),this.addAction("copy",function(e){e.graph.isEnabled()&&mxClipboard.copy(e.graph)}),this.addAction("paste",function(e){e.graph.isEnabled()&&mxClipboard.paste(e.graph)}),this.addAction("delete",function(e){e.graph.isEnabled()&&e.graph.removeCells()}),this.addAction("group",function(e){e.graph.isEnabled()&&e.graph.setSelectionCell(e.groupCells())}),this.addAction("ungroup",function(e){e.graph.isEnabled()&&e.graph.setSelectionCells(e.graph.ungroupCells())}),this.addAction("removeFromParent",function(e){e.graph.isEnabled()&&e.graph.removeCellsFromParent()}),this.addAction("undo",function(e){e.graph.isEnabled()&&e.undo()}),this.addAction("redo",function(e){e.graph.isEnabled()&&e.redo()}),this.addAction("zoomIn",function(e){e.graph.zoomIn()}),this.addAction("zoomOut",function(e){e.graph.zoomOut()}),this.addAction("actualSize",function(e){e.graph.zoomActual()}),this.addAction("fit",function(e){e.graph.fit()}),this.addAction("showProperties",function(e,n){e.showProperties(n)}),this.addAction("selectAll",function(e){e.graph.isEnabled()&&e.graph.selectAll()}),this.addAction("selectNone",function(e){e.graph.isEnabled()&&e.graph.clearSelection()}),this.addAction("selectVertices",function(e){e.graph.isEnabled()&&e.graph.selectVertices()}),this.addAction("selectEdges",function(e){e.graph.isEnabled()&&e.graph.selectEdges()}),this.addAction("edit",function(e,n){e.graph.isEnabled()&&e.graph.isCellEditable(n)&&e.graph.startEditingAtCell(n)}),this.addAction("toBack",function(e,n){e.graph.isEnabled()&&e.graph.orderCells(!0)}),this.addAction("toFront",function(e,n){e.graph.isEnabled()&&e.graph.orderCells(!1)}),this.addAction("enterGroup",function(e,n){e.graph.enterGroup(n)}),this.addAction("exitGroup",function(e){e.graph.exitGroup()}),this.addAction("home",function(e){e.graph.home()}),this.addAction("selectPrevious",function(e){e.graph.isEnabled()&&e.graph.selectPreviousCell()}),this.addAction("selectNext",function(e){e.graph.isEnabled()&&e.graph.selectNextCell()}),this.addAction("selectParent",function(e){e.graph.isEnabled()&&e.graph.selectParentCell()}),this.addAction("selectChild",function(e){e.graph.isEnabled()&&e.graph.selectChildCell()}),this.addAction("collapse",function(e){e.graph.isEnabled()&&e.graph.foldCells(!0)}),this.addAction("collapseAll",function(e){if(e.graph.isEnabled()){var n=e.graph.getChildVertices();e.graph.foldCells(!0,!1,n)}}),this.addAction("expand",function(e){e.graph.isEnabled()&&e.graph.foldCells(!1)}),this.addAction("expandAll",function(e){if(e.graph.isEnabled()){var n=e.graph.getChildVertices();e.graph.foldCells(!1,!1,n)}}),this.addAction("bold",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_BOLD)}),this.addAction("italic",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_ITALIC)}),this.addAction("underline",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_UNDERLINE)}),this.addAction("shadow",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_SHADOW)}),this.addAction("alignCellsLeft",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_LEFT)}),this.addAction("alignCellsCenter",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_CENTER)}),this.addAction("alignCellsRight",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_RIGHT)}),this.addAction("alignCellsTop",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_TOP)}),this.addAction("alignCellsMiddle",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_MIDDLE)}),this.addAction("alignCellsBottom",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_BOTTOM)}),this.addAction("alignFontLeft",function(e){e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT)}),this.addAction("alignFontCenter",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER)}),this.addAction("alignFontRight",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_RIGHT)}),this.addAction("alignFontTop",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_TOP)}),this.addAction("alignFontMiddle",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE)}),this.addAction("alignFontBottom",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_BOTTOM)}),this.addAction("zoom",function(e){var n=100*e.graph.getView().scale;n=parseFloat(mxUtils.prompt(mxResources.get(e.askZoomResource)||e.askZoomResource,n))/100;isNaN(n)||e.graph.getView().setScale(n)}),this.addAction("toggleTasks",function(e){null!=e.tasks?e.tasks.setVisible(!e.tasks.isVisible()):e.showTasks()}),this.addAction("toggleHelp",function(e){null!=e.help?e.help.setVisible(!e.help.isVisible()):e.showHelp()}),this.addAction("toggleOutline",function(e){null==e.outline?e.showOutline():e.outline.setVisible(!e.outline.isVisible())}),this.addAction("toggleConsole",function(e){mxLog.setVisible(!mxLog.isVisible())})},mxEditor.prototype.createSession=function(){var e=mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.SESSION,"session",e))});return this.connect(this.urlInit,this.urlPoll,this.urlNotify,e)},mxEditor.prototype.configure=function(e){null!=e&&(new mxCodec(e.ownerDocument).decode(e,this),this.resetHistory())},mxEditor.prototype.resetFirstTime=function(){document.cookie="mxgraph=seen; expires=Fri, 27 Jul 2001 02:47:11 UTC; path=/"},mxEditor.prototype.resetHistory=function(){this.lastSnapshot=(new Date).getTime(),this.undoManager.clear(),this.ignoredChanges=0,this.setModified(!1)},mxEditor.prototype.addAction=function(e,n){this.actions[e]=n},mxEditor.prototype.execute=function(n,e,t){var a=this.actions[n];if(null!=a)try{var i=arguments;i[0]=this,a.apply(this,i)}catch(e){throw mxUtils.error("Cannot execute "+n+": "+e.message,280,!0),e}else mxUtils.error("Cannot find action "+n,280,!0)},mxEditor.prototype.addTemplate=function(e,n){this.templates[e]=n},mxEditor.prototype.getTemplate=function(e){return this.templates[e]},mxEditor.prototype.createGraph=function(){var e=new mxGraph(null,null,this.graphRenderHint);return e.setTooltips(!0),e.setPanning(!0),this.installDblClickHandler(e),this.installUndoHandler(e),this.installDrillHandler(e),this.installChangeHandler(e),this.installInsertHandler(e),e.panningHandler.factoryMethod=mxUtils.bind(this,function(e,n,t){return this.createPopupMenu(e,n,t)}),e.connectionHandler.factoryMethod=mxUtils.bind(this,function(e,n){return this.createEdge(e,n)}),this.createSwimlaneManager(e),this.createLayoutManager(e),e},mxEditor.prototype.createSwimlaneManager=function(e){return(e=new mxSwimlaneManager(e,!1)).isHorizontal=mxUtils.bind(this,function(){return this.horizontalFlow}),e.isEnabled=mxUtils.bind(this,function(){return this.maintainSwimlanes}),e},mxEditor.prototype.createLayoutManager=function(a){var e=new mxLayoutManager(a),i=this;return e.getLayout=function(e){var n=null,t=i.graph.getModel();return null!=t.getParent(e)&&(i.layoutSwimlanes&&a.isSwimlane(e)?(null==i.swimlaneLayout&&(i.swimlaneLayout=i.createSwimlaneLayout()),n=i.swimlaneLayout):i.layoutDiagram&&(a.isValidRoot(e)||null==t.getParent(t.getParent(e)))&&(null==i.diagramLayout&&(i.diagramLayout=i.createDiagramLayout()),n=i.diagramLayout)),n},e},mxEditor.prototype.setGraphContainer=function(e){null==this.graph.container&&(this.graph.init(e),this.rubberband=new mxRubberband(this.graph),this.disableContextMenu&&mxEvent.disableContextMenu(e),mxClient.IS_QUIRKS&&new mxDivResizer(e))},mxEditor.prototype.installDblClickHandler=function(a){a.addListener(mxEvent.DOUBLE_CLICK,mxUtils.bind(this,function(e,n){var t=n.getProperty("cell");null!=t&&a.isEnabled()&&null!=this.dblClickAction&&(this.execute(this.dblClickAction,t),n.consume())}))},mxEditor.prototype.installUndoHandler=function(a){var e=mxUtils.bind(this,function(e,n){var t=n.getProperty("edit");this.undoManager.undoableEditHappened(t)});a.getModel().addListener(mxEvent.UNDO,e),a.getView().addListener(mxEvent.UNDO,e),e=function(e,n){var t=n.getProperty("edit").changes;a.setSelectionCells(a.getSelectionCellsForChanges(t))},this.undoManager.addListener(mxEvent.UNDO,e),this.undoManager.addListener(mxEvent.REDO,e)},mxEditor.prototype.installDrillHandler=function(e){var n=mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.ROOT))});e.getView().addListener(mxEvent.DOWN,n),e.getView().addListener(mxEvent.UP,n)},mxEditor.prototype.installChangeHandler=function(s){var e=mxUtils.bind(this,function(e,n){this.setModified(!0),1==this.validating&&s.validateGraph();for(var t=n.getProperty("edit").changes,a=0;a<t.length;a++){var i=t[a];if(i instanceof mxRootChange||i instanceof mxValueChange&&i.cell==this.graph.model.root||i instanceof mxCellAttributeChange&&i.cell==this.graph.model.root){this.fireEvent(new mxEventObject(mxEvent.ROOT));break}}});s.getModel().addListener(mxEvent.CHANGE,e)},mxEditor.prototype.installInsertHandler=function(e){var t=this;e.addMouseListener({mouseDown:function(e,n){null==t.insertFunction||n.isPopupTrigger()||!t.forcedInserting&&null!=n.getState()||(t.graph.clearSelection(),t.insertFunction(n.getEvent(),n.getCell()),this.isActive=!0,n.consume())},mouseMove:function(e,n){this.isActive&&n.consume()},mouseUp:function(e,n){this.isActive&&(this.isActive=!1,n.consume())}})},mxEditor.prototype.createDiagramLayout=function(){var e=this.graph.gridSize,n=new mxStackLayout(this.graph,!this.horizontalFlow,this.swimlaneSpacing,2*e,2*e);return n.isVertexIgnored=function(e){return!n.graph.isSwimlane(e)},n},mxEditor.prototype.createSwimlaneLayout=function(){return new mxCompactTreeLayout(this.graph,this.horizontalFlow)},mxEditor.prototype.createToolbar=function(){return new mxDefaultToolbar(null,this)},mxEditor.prototype.setToolbarContainer=function(e){this.toolbar.init(e),mxClient.IS_QUIRKS&&new mxDivResizer(e)},mxEditor.prototype.setStatusContainer=function(e){null==this.status&&(this.status=e,this.addListener(mxEvent.SAVE,mxUtils.bind(this,function(){var e=(new Date).toLocaleString();this.setStatus((mxResources.get(this.lastSavedResource)||this.lastSavedResource)+": "+e)})),this.addListener(mxEvent.OPEN,mxUtils.bind(this,function(){this.setStatus((mxResources.get(this.currentFileResource)||this.currentFileResource)+": "+this.filename)})),mxClient.IS_QUIRKS&&new mxDivResizer(e))},mxEditor.prototype.setStatus=function(e){null!=this.status&&null!=e&&(this.status.innerHTML=e)},mxEditor.prototype.setTitleContainer=function(n){this.addListener(mxEvent.ROOT,mxUtils.bind(this,function(e){n.innerHTML=this.getTitle()})),mxClient.IS_QUIRKS&&new mxDivResizer(n)},mxEditor.prototype.treeLayout=function(e,n){null!=e&&new mxCompactTreeLayout(this.graph,n).execute(e)},mxEditor.prototype.getTitle=function(){for(var e="",n=this.graph,t=n.getCurrentRoot();null!=t&&null!=n.getModel().getParent(n.getModel().getParent(t));)n.isValidRoot(t)&&(e=" > "+n.convertValueToString(t)+e),t=n.getModel().getParent(t);return this.getRootTitle()+e},mxEditor.prototype.getRootTitle=function(){var e=this.graph.getModel().getRoot();return this.graph.convertValueToString(e)},mxEditor.prototype.undo=function(){this.undoManager.undo()},mxEditor.prototype.redo=function(){this.undoManager.redo()},mxEditor.prototype.groupCells=function(){var e=null!=this.groupBorderSize?this.groupBorderSize:this.graph.gridSize;return this.graph.groupCells(this.createGroup(),e)},mxEditor.prototype.createGroup=function(){return this.graph.getModel().cloneCell(this.defaultGroup)},mxEditor.prototype.open=function(e){if(null!=e){var n=mxUtils.load(e).getXml();this.readGraphModel(n.documentElement),this.filename=e,this.fireEvent(new mxEventObject(mxEvent.OPEN,"filename",e))}},mxEditor.prototype.readGraphModel=function(e){new mxCodec(e.ownerDocument).decode(e,this.graph.getModel()),this.resetHistory()},mxEditor.prototype.save=function(e,n){if(null!=(e=e||this.getUrlPost())&&0<e.length){var t=this.writeGraphModel(n);this.postDiagram(e,t),this.setModified(!1)}this.fireEvent(new mxEventObject(mxEvent.SAVE,"url",e))},mxEditor.prototype.postDiagram=function(n,t){this.escapePostData&&(t=encodeURIComponent(t)),mxUtils.post(n,this.postParameterName+"="+t,mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.POST,"request",e,"url",n,"data",t))}))},mxEditor.prototype.writeGraphModel=function(e){e=null!=e?e:this.linefeed;var n=(new mxCodec).encode(this.graph.getModel());return mxUtils.getXml(n,e)},mxEditor.prototype.getUrlPost=function(){return this.urlPost},mxEditor.prototype.getUrlImage=function(){return this.urlImage},mxEditor.prototype.connect=function(e,n,t,a){var i=null;return mxClient.IS_LOCAL||((i=new mxSession(this.graph.getModel(),e,n,t)).addListener(mxEvent.RECEIVE,mxUtils.bind(this,function(e,n){null!=n.getProperty("node").getAttribute("namespace")&&this.resetHistory()})),i.addListener(mxEvent.DISCONNECT,a),i.addListener(mxEvent.CONNECT,a),i.addListener(mxEvent.NOTIFY,a),i.addListener(mxEvent.GET,a),i.start()),i},mxEditor.prototype.swapStyles=function(e,n){var t=this.graph.getStylesheet().styles[n];this.graph.getView().getStylesheet().putCellStyle(n,this.graph.getStylesheet().styles[e]),this.graph.getStylesheet().putCellStyle(e,t),this.graph.refresh()},mxEditor.prototype.showProperties=function(e){if(null==(e=e||this.graph.getSelectionCell())&&(null==(e=this.graph.getCurrentRoot())&&(e=this.graph.getModel().getRoot())),null!=e){this.graph.stopEditing(!0);var n=(t=mxUtils.getOffset(this.graph.container)).x+10,t=t.y;if(null==this.properties||this.movePropertiesDialog){var a=this.graph.getCellBounds(e);null!=a&&(n+=a.x+Math.min(200,a.width),t+=a.y)}else n=this.properties.getX(),t=this.properties.getY();this.hideProperties(),null!=(e=this.createProperties(e))&&(this.properties=new mxWindow(mxResources.get(this.propertiesResource)||this.propertiesResource,e,n,t,this.propertiesWidth,this.propertiesHeight,!1),this.properties.setVisible(!0))}},mxEditor.prototype.isPropertiesVisible=function(){return null!=this.properties},mxEditor.prototype.createProperties=function(t){var a=this.graph.getModel(),e=a.getValue(t);if(mxUtils.isNode(e)){var n=new mxForm("properties");n.addText("ID",t.getId()).setAttribute("readonly","true");var i=null,s=null,o=null,r=null,l=null;a.isVertex(t)&&(null!=(i=a.getGeometry(t))&&(s=n.addText("top",i.y),o=n.addText("left",i.x),r=n.addText("width",i.width),l=n.addText("height",i.height)));var d=a.getStyle(t),c=n.addText("Style",d||""),m=e.attributes,u=[];for(e=0;e<m.length;e++)u[e]=n.addTextarea(m[e].nodeName,m[e].nodeValue,"label"==m[e].nodeName?4:2);return e=mxUtils.bind(this,function(){this.hideProperties(),a.beginUpdate();try{null!=i&&((i=i.clone()).x=parseFloat(o.value),i.y=parseFloat(s.value),i.width=parseFloat(r.value),i.height=parseFloat(l.value),a.setGeometry(t,i)),0<c.value.length?a.setStyle(t,c.value):a.setStyle(t,null);for(var e=0;e<m.length;e++){var n=new mxCellAttributeChange(t,m[e].nodeName,u[e].value);a.execute(n)}this.graph.isAutoSizeCell(t)&&this.graph.updateCellSize(t)}finally{a.endUpdate()}}),d=mxUtils.bind(this,function(){this.hideProperties()}),n.addButtons(e,d),n.table}return null},mxEditor.prototype.hideProperties=function(){null!=this.properties&&(this.properties.destroy(),this.properties=null)},mxEditor.prototype.showTasks=function(){if(null==this.tasks){var n=document.createElement("div");n.style.padding="4px",n.style.paddingLeft="20px";var e=document.body.clientWidth;(e=new mxWindow(mxResources.get(this.tasksResource)||this.tasksResource,n,e-220,this.tasksTop,200)).setClosable(!0),e.destroyOnClose=!1;var t=mxUtils.bind(this,function(e){mxEvent.release(n),n.innerHTML="",this.createTasks(n)});this.graph.getModel().addListener(mxEvent.CHANGE,t),this.graph.getSelectionModel().addListener(mxEvent.CHANGE,t),this.graph.addListener(mxEvent.ROOT,t),null!=this.tasksWindowImage&&e.setImage(this.tasksWindowImage),this.tasks=e,this.createTasks(n)}this.tasks.setVisible(!0)},mxEditor.prototype.refreshTasks=function(e){null!=this.tasks&&(e=this.tasks.content,mxEvent.release(e),e.innerHTML="",this.createTasks(e))},mxEditor.prototype.createTasks=function(e){},mxEditor.prototype.showHelp=function(e){if(null==this.help){var n=document.createElement("iframe");n.setAttribute("src",mxResources.get("urlHelp")||this.urlHelp),n.setAttribute("height","100%"),n.setAttribute("width","100%"),n.setAttribute("frameBorder","0"),n.style.backgroundColor="white",e=document.body.clientWidth;var t=document.body.clientHeight||document.documentElement.clientHeight,a=new mxWindow(mxResources.get(this.helpResource)||this.helpResource,n,(e-this.helpWidth)/2,(t-this.helpHeight)/3,this.helpWidth,this.helpHeight);a.setMaximizable(!0),a.setClosable(!0),a.destroyOnClose=!1,a.setResizable(!0),null!=this.helpWindowImage&&a.setImage(this.helpWindowImage),mxClient.IS_NS&&(e=function(e){n.setAttribute("height",a.div.offsetHeight-26+"px")},a.addListener(mxEvent.RESIZE_END,e),a.addListener(mxEvent.MAXIMIZE,e),a.addListener(mxEvent.NORMALIZE,e),a.addListener(mxEvent.SHOW,e)),this.help=a}this.help.setVisible(!0)},mxEditor.prototype.showOutline=function(){if(null==this.outline){var e=document.createElement("div");e.style.overflow="hidden",e.style.width="100%",e.style.height="100%",e.style.background="white",e.style.cursor="move";var n=new mxWindow(mxResources.get(this.outlineResource)||this.outlineResource,e,600,480,200,200,!1),t=new mxOutline(this.graph,e);n.setClosable(!0),n.setResizable(!0),n.destroyOnClose=!1,n.addListener(mxEvent.RESIZE_END,function(){t.update()}),this.outline=n,this.outline.outline=t}this.outline.setVisible(!0),this.outline.outline.update(!0)},mxEditor.prototype.setMode=function(e){"select"==e?(this.graph.panningHandler.useLeftButtonForPanning=!1,this.graph.setConnectable(!1)):"connect"==e?(this.graph.panningHandler.useLeftButtonForPanning=!1,this.graph.setConnectable(!0)):"pan"==e&&(this.graph.panningHandler.useLeftButtonForPanning=!0,this.graph.setConnectable(!1))},mxEditor.prototype.createPopupMenu=function(e,n,t){this.popupHandler.createMenu(this,e,n,t)},mxEditor.prototype.createEdge=function(e,n){var t=null;if(null!=this.defaultEdge)t=this.graph.getModel().cloneCell(this.defaultEdge);else{(t=new mxCell("")).setEdge(!0);var a=new mxGeometry;a.relative=!0,t.setGeometry(a)}return null!=(a=this.getEdgeStyle())&&t.setStyle(a),t},mxEditor.prototype.getEdgeStyle=function(){return this.defaultEdgeStyle},mxEditor.prototype.consumeCycleAttribute=function(e){return null!=this.cycleAttributeValues&&0<this.cycleAttributeValues.length&&this.graph.isSwimlane(e)?this.cycleAttributeValues[this.cycleAttributeIndex++%this.cycleAttributeValues.length]:null},mxEditor.prototype.cycleAttribute=function(e){if(null!=this.cycleAttributeName){var n=this.consumeCycleAttribute(e);null!=n&&e.setStyle(e.getStyle()+";"+this.cycleAttributeName+"="+n)}},mxEditor.prototype.addVertex=function(e,n,t,a){for(var i=this.graph.getModel();null!=e&&!this.graph.isValidDropTarget(e);)e=i.getParent(e);e=null!=e?e:this.graph.getSwimlaneAt(t,a);var s=this.graph.getView().scale,o=i.getGeometry(n),r=i.getGeometry(e);if(this.graph.isSwimlane(n)&&!this.graph.swimlaneNesting)e=null;else{if(null==e&&this.swimlaneRequired)return null;if(null!=e&&null!=r){var l=this.graph.getView().getState(e);if(null!=l){if(t-=l.origin.x*s,a-=l.origin.y*s,this.graph.isConstrainedMoving){r=o.width;var d=o.height,c=l.x+l.width;c<t+r&&(t-=t+r-c),(c=l.y+l.height)<a+d&&(a-=a+d-c)}}else null!=r&&(t-=r.x*s,a-=r.y*s)}}(o=o.clone()).x=this.graph.snap(t/s-this.graph.getView().translate.x-this.graph.gridSize/2),o.y=this.graph.snap(a/s-this.graph.getView().translate.y-this.graph.gridSize/2),n.setGeometry(o),null==e&&(e=this.graph.getDefaultParent()),this.cycleAttribute(n),this.fireEvent(new mxEventObject(mxEvent.BEFORE_ADD_VERTEX,"vertex",n,"parent",e)),i.beginUpdate();try{null!=(n=this.graph.addCell(n,e))&&(this.graph.constrainChild(n),this.fireEvent(new mxEventObject(mxEvent.ADD_VERTEX,"vertex",n)))}finally{i.endUpdate()}return null!=n&&(this.graph.setSelectionCell(n),this.graph.scrollCellToVisible(n),this.fireEvent(new mxEventObject(mxEvent.AFTER_ADD_VERTEX,"vertex",n))),n},mxEditor.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,null!=this.tasks&&this.tasks.destroy(),null!=this.outline&&this.outline.destroy(),null!=this.properties&&this.properties.destroy(),null!=this.keyHandler&&this.keyHandler.destroy(),null!=this.rubberband&&this.rubberband.destroy(),null!=this.toolbar&&this.toolbar.destroy(),null!=this.graph&&this.graph.destroy(),this.templates=this.status=null)};var mxCodecRegistry={codecs:[],aliases:[],register:function(e){if(null!=e){var n=e.getName();mxCodecRegistry.codecs[n]=e;var t=mxUtils.getFunctionName(e.template.constructor);t!=n&&mxCodecRegistry.addAlias(t,n)}return e},addAlias:function(e,n){mxCodecRegistry.aliases[e]=n},getCodec:function(e){var n=null;if(null!=e){n=mxUtils.getFunctionName(e);var t=mxCodecRegistry.aliases[n];if(null!=t&&(n=t),null==(n=mxCodecRegistry.codecs[n]))try{n=new mxObjectCodec(new e),mxCodecRegistry.register(n)}catch(e){}}return n}};function mxCodec(e){this.document=e||mxUtils.createXmlDocument(),this.objects=[]}function mxObjectCodec(e,n,t,a){for(var i in this.template=e,this.exclude=null!=n?n:[],this.idrefs=null!=t?t:[],this.mapping=null!=a?a:[],this.reverse={},this.mapping)this.reverse[this.mapping[i]]=i}mxCodec.prototype.document=null,mxCodec.prototype.objects=null,mxCodec.prototype.encodeDefaults=!1,mxCodec.prototype.putObject=function(e,n){return this.objects[e]=n},mxCodec.prototype.getObject=function(e){var n=null;return null!=e&&(null==(n=this.objects[e])&&(null==(n=this.lookup(e))&&(null!=(e=this.getElementById(e))&&(n=this.decode(e))))),n},mxCodec.prototype.lookup=function(e){return null},mxCodec.prototype.getElementById=function(e,n){return mxUtils.findNodeByAttribute(this.document.documentElement,null!=n?n:"id",e)},mxCodec.prototype.getId=function(e){var n=null;return null!=e&&(null==(n=this.reference(e))&&e instanceof mxCell&&(null==(n=e.getId())&&(0==(n=mxCellPath.create(e)).length&&(n="root")))),n},mxCodec.prototype.reference=function(e){return null},mxCodec.prototype.encode=function(e){var n=null;if(null!=e&&null!=e.constructor){var t=mxCodecRegistry.getCodec(e.constructor);null!=t?n=t.encode(this,e):mxUtils.isNode(e)?n=mxClient.IS_IE?e.cloneNode(!0):this.document.importNode(e,!0):mxLog.warn("mxCodec.encode: No codec for "+mxUtils.getFunctionName(e.constructor))}return n},mxCodec.prototype.decode=function(a,b){var c=null;if(null!=a&&a.nodeType==mxConstants.NODETYPE_ELEMENT){var d=null;try{d=eval(a.nodeName)}catch(e){}try{var f=mxCodecRegistry.getCodec(d);null!=f?c=f.decode(this,a,b):(c=a.cloneNode(!0),c.removeAttribute("as"))}catch(e){mxLog.debug("Cannot decode "+a.nodeName+": "+e.message)}}return c},mxCodec.prototype.encodeCell=function(e,n,t){if(n.appendChild(this.encode(e)),null==t||t){t=e.getChildCount();for(var a=0;a<t;a++)this.encodeCell(e.getChildAt(a),n)}},mxCodec.prototype.isCellCodec=function(e){return null!=e&&"function"==typeof e.isCellCodec&&e.isCellCodec()},mxCodec.prototype.decodeCell=function(e,n){n=null==n||n;var t=null;if(null!=e&&e.nodeType==mxConstants.NODETYPE_ELEMENT){if(t=mxCodecRegistry.getCodec(e.nodeName),!this.isCellCodec(t))for(var a=e.firstChild;null!=a&&!this.isCellCodec(t);)t=mxCodecRegistry.getCodec(a.nodeName),a=a.nextSibling;this.isCellCodec(t)||(t=mxCodecRegistry.getCodec(mxCell)),t=t.decode(this,e),n&&this.insertIntoGraph(t)}return t},mxCodec.prototype.insertIntoGraph=function(e){var n=e.parent,t=e.getTerminal(!0),a=e.getTerminal(!1);e.setTerminal(null,!1),e.setTerminal(null,!0),(e.parent=null)!=n&&n.insert(e),null!=t&&t.insertEdge(e,!0),null!=a&&a.insertEdge(e,!1)},mxCodec.prototype.setAttribute=function(e,n,t){null!=n&&null!=t&&e.setAttribute(n,t)},mxObjectCodec.prototype.template=null,mxObjectCodec.prototype.exclude=null,mxObjectCodec.prototype.idrefs=null,mxObjectCodec.prototype.mapping=null,mxObjectCodec.prototype.reverse=null,mxObjectCodec.prototype.getName=function(){return mxUtils.getFunctionName(this.template.constructor)},mxObjectCodec.prototype.cloneTemplate=function(){return new this.template.constructor},mxObjectCodec.prototype.getFieldName=function(e){if(null!=e){var n=this.reverse[e];null!=n&&(e=n)}return e},mxObjectCodec.prototype.getAttributeName=function(e){if(null!=e){var n=this.mapping[e];null!=n&&(e=n)}return e},mxObjectCodec.prototype.isExcluded=function(e,n,t,a){return n==mxObjectIdentity.FIELD_NAME||0<=mxUtils.indexOf(this.exclude,n)},mxObjectCodec.prototype.isReference=function(e,n,t,a){return 0<=mxUtils.indexOf(this.idrefs,n)},mxObjectCodec.prototype.encode=function(e,n){var t=e.document.createElement(this.getName());return n=this.beforeEncode(e,n,t),this.encodeObject(e,n,t),this.afterEncode(e,n,t)},mxObjectCodec.prototype.encodeObject=function(e,n,t){for(var a in e.setAttribute(t,"id",e.getId(n)),n){var i=a,s=n[i];null!=s&&!this.isExcluded(n,i,s,!0)&&(mxUtils.isNumeric(i)&&(i=null),this.encodeValue(e,n,i,s,t))}},mxObjectCodec.prototype.encodeValue=function(e,n,t,a,i){if(null!=a){if(this.isReference(n,t,a,!0)){var s=e.getId(a);if(null==s)return void mxLog.warn("mxObjectCodec.encode: No ID for "+this.getName()+"."+t+"="+a);a=s}s=this.template[t],(null==t||e.encodeDefaults||s!=a)&&(t=this.getAttributeName(t),this.writeAttribute(e,n,t,a,i))}},mxObjectCodec.prototype.writeAttribute=function(e,n,t,a,i){"object"!=typeof a?this.writePrimitiveAttribute(e,n,t,a,i):this.writeComplexAttribute(e,n,t,a,i)},mxObjectCodec.prototype.writePrimitiveAttribute=function(e,n,t,a,i){a=this.convertValueToXml(a),null==t?(n=e.document.createElement("add"),"function"==typeof a?n.appendChild(e.document.createTextNode(a)):e.setAttribute(n,"value",a),i.appendChild(n)):"function"!=typeof a&&e.setAttribute(i,t,a)},mxObjectCodec.prototype.writeComplexAttribute=function(e,n,t,a,i){null!=(e=e.encode(a))?(null!=t&&e.setAttribute("as",t),i.appendChild(e)):mxLog.warn("mxObjectCodec.encode: No node for "+this.getName()+"."+t+": "+a)},mxObjectCodec.prototype.convertValueToXml=function(e){return void 0!==e.length||1!=e&&0!=e||(e=1==e?"1":"0"),e},mxObjectCodec.prototype.convertValueFromXml=function(e){return mxUtils.isNumeric(e)&&(e=parseFloat(e)),e},mxObjectCodec.prototype.beforeEncode=function(e,n,t){return n},mxObjectCodec.prototype.afterEncode=function(e,n,t){return t},mxObjectCodec.prototype.decode=function(e,n,t){var a=n.getAttribute("id"),i=e.objects[a];return null==i&&(i=t||this.cloneTemplate(),null!=a&&e.putObject(a,i)),n=this.beforeDecode(e,n,i),this.decodeNode(e,n,i),this.afterDecode(e,n,i)},mxObjectCodec.prototype.decodeNode=function(e,n,t){null!=n&&(this.decodeAttributes(e,n,t),this.decodeChildren(e,n,t))},mxObjectCodec.prototype.decodeAttributes=function(e,n,t){if(null!=(n=n.attributes))for(var a=0;a<n.length;a++)this.decodeAttribute(e,n[a],t)},mxObjectCodec.prototype.decodeAttribute=function(e,n,t){var a=n.nodeName;if("as"!=a&&"id"!=a){n="value"==a?n.nodeValue:this.convertValueFromXml(n.nodeValue);var i=this.getFieldName(a);if(this.isReference(t,i,n,!1)){if(null==(e=e.getObject(n)))return void mxLog.warn("mxObjectCodec.decode: No object for "+this.getName()+"."+a+"="+n);n=e}this.isExcluded(t,a,n,!1)||(t[a]=n)}},mxObjectCodec.prototype.decodeChildren=function(e,n,t){for(n=n.firstChild;null!=n;){var a=n.nextSibling;n.nodeType==mxConstants.NODETYPE_ELEMENT&&!this.processInclude(e,n,t)&&this.decodeChild(e,n,t),n=a}},mxObjectCodec.prototype.decodeChild=function(e,n,t){var a=this.getFieldName(n.getAttribute("as"));if(null==a||!this.isExcluded(t,a,n,!1)){var i=this.getFieldTemplate(t,a,n),s=null;"add"==n.nodeName?null==(s=n.getAttribute("value"))&&(s=mxUtils.eval(mxUtils.getTextContent(n))):s=e.decode(n,i),this.addObjectValue(t,a,s,i)}},mxObjectCodec.prototype.getFieldTemplate=function(e,n,t){return(e=e[n])instanceof Array&&0<e.length&&(e=null),e},mxObjectCodec.prototype.addObjectValue=function(e,n,t,a){null!=t&&t!=a&&(null!=n&&0<n.length?e[n]=t:e.push(t))},mxObjectCodec.prototype.processInclude=function(e,n,t){if("include"!=n.nodeName)return!1;if(null!=(n=n.getAttribute("name")))try{var a=mxUtils.load(n).getDocumentElement();null!=a&&e.decode(a,t)}catch(e){}return!0},mxObjectCodec.prototype.beforeDecode=function(e,n,t){return n},mxObjectCodec.prototype.afterDecode=function(e,n,t){return t},mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxCell,["children","edges","overlays","mxTransient"],["parent","source","target"]);return e.isCellCodec=function(){return!0},e.isExcluded=function(e,n,t,a){return mxObjectCodec.prototype.isExcluded.apply(this,arguments)||a&&"value"==n&&t.nodeType==mxConstants.NODETYPE_ELEMENT},e.afterEncode=function(e,n,t){if(null!=n.value&&n.value.nodeType==mxConstants.NODETYPE_ELEMENT){var a=t;(t=mxClient.IS_IE?n.value.cloneNode(!0):e.document.importNode(n.value,!0)).appendChild(a),e=a.getAttribute("id"),t.setAttribute("id",e),a.removeAttribute("id")}return t},e.beforeDecode=function(e,n,t){var a=n,i=this.getName();if(n.nodeName!=i?(null!=(a=n.getElementsByTagName(i)[0])&&a.parentNode==n?(mxUtils.removeWhitespace(a,!0),mxUtils.removeWhitespace(a,!1),a.parentNode.removeChild(a)):a=null,t.value=n.cloneNode(!0),null!=(n=t.value.getAttribute("id"))&&(t.setId(n),t.value.removeAttribute("id"))):t.setId(n.getAttribute("id")),null!=a)for(n=0;n<this.idrefs.length;n++){i=this.idrefs[n];var s=a.getAttribute(i);if(null!=s){a.removeAttribute(i);var o=e.objects[s]||e.lookup(s);null==o&&(null!=(s=e.getElementById(s))&&(o=(mxCodecRegistry.codecs[s.nodeName]||this).decode(e,s))),t[i]=o}}return a},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxGraphModel);return e.encodeObject=function(e,n,t){var a=e.document.createElement("root");e.encodeCell(n.getRoot(),a),t.appendChild(a)},e.decodeChild=function(e,n,t){"root"==n.nodeName?this.decodeRoot(e,n,t):mxObjectCodec.prototype.decodeChild.apply(this,arguments)},e.decodeRoot=function(e,n,t){var a=null;for(n=n.firstChild;null!=n;){var i=e.decodeCell(n);null!=i&&null==i.getParent()&&(a=i),n=n.nextSibling}null!=a&&t.setRoot(a)},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxRootChange,["model","previous","root"]);return e.afterEncode=function(e,n,t){return e.encodeCell(n.root,t),t},e.beforeDecode=function(e,n,t){if(null!=n.firstChild&&n.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT){var a=(n=n.cloneNode(!0)).firstChild;for(t.root=e.decodeCell(a,!1),t=a.nextSibling,a.parentNode.removeChild(a),a=t;null!=a;)t=a.nextSibling,e.decodeCell(a),a.parentNode.removeChild(a),a=t}return n},e.afterDecode=function(e,n,t){return t.previous=t.root,t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxChildChange,["model","child","previousIndex"],["parent","previous"]);return e.isReference=function(e,n,t,a){return!("child"!=n||null==e.previous&&a)||0<=mxUtils.indexOf(this.idrefs,n)},e.afterEncode=function(e,n,t){return this.isReference(n,"child",n.child,!0)?t.setAttribute("child",e.getId(n.child)):e.encodeCell(n.child,t),t},e.beforeDecode=function(e,n,t){if(null!=n.firstChild&&n.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT){var a=(n=n.cloneNode(!0)).firstChild;for(t.child=e.decodeCell(a,!1),t=a.nextSibling,a.parentNode.removeChild(a),a=t;null!=a;){if(t=a.nextSibling,a.nodeType==mxConstants.NODETYPE_ELEMENT){var i=a.getAttribute("id");null==e.lookup(i)&&e.decodeCell(a)}a.parentNode.removeChild(a),a=t}}else a=n.getAttribute("child"),t.child=e.getObject(a);return n},e.afterDecode=function(e,n,t){return t.child.parent=t.previous,t.previous=t.parent,t.previousIndex=t.index,t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxTerminalChange,["model","previous"],["cell","terminal"]);return e.afterDecode=function(e,n,t){return t.previous=t.terminal,t},e}());var mxGenericChangeCodec=function(e,a){var n=new mxObjectCodec(e,["model","previous"],["cell"]);return n.afterDecode=function(e,n,t){return mxUtils.isNode(t.cell)&&(t.cell=e.decodeCell(t.cell,!1)),t.previous=t[a],t},n};mxCodecRegistry.register(mxGenericChangeCodec(new mxValueChange,"value")),mxCodecRegistry.register(mxGenericChangeCodec(new mxStyleChange,"style")),mxCodecRegistry.register(mxGenericChangeCodec(new mxGeometryChange,"geometry")),mxCodecRegistry.register(mxGenericChangeCodec(new mxCollapseChange,"collapsed")),mxCodecRegistry.register(mxGenericChangeCodec(new mxVisibleChange,"visible")),mxCodecRegistry.register(mxGenericChangeCodec(new mxCellAttributeChange,"value")),mxCodecRegistry.register(new mxObjectCodec(new mxGraph,"graphListeners eventListeners view container cellRenderer editor selection".split(" "))),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxGraphView);return e.encode=function(e,n){return this.encodeCell(e,n,n.graph.getModel().getRoot())},e.encodeCell=function(e,n,t){var a=n.graph.getModel(),i=n.getState(t),s=a.getParent(t);if(null==s||null!=i){var o=a.getChildCount(t),r=n.graph.getCellGeometry(t),l=null;if(s==a.getRoot()?l="layer":null==s?l="graph":a.isEdge(t)?l="edge":0<o&&null!=r?l="group":a.isVertex(t)&&(l="vertex"),null!=l){var d=e.document.createElement(l);if(null!=n.graph.getLabel(t)&&(d.setAttribute("label",n.graph.getLabel(t)),n.graph.isHtmlLabel(t)&&d.setAttribute("html",!0)),null==s){var c=n.getGraphBounds();null!=c&&(d.setAttribute("x",Math.round(c.x)),d.setAttribute("y",Math.round(c.y)),d.setAttribute("width",Math.round(c.width)),d.setAttribute("height",Math.round(c.height))),d.setAttribute("scale",n.scale)}else if(null!=i&&null!=r){for(c in i.style)"function"==typeof(s=i.style[c])&&"object"==typeof s&&(s=mxStyleRegistry.getName(s)),null!=s&&"function"!=typeof s&&"object"!=typeof s&&d.setAttribute(c,s);if(null!=(s=i.absolutePoints)&&0<s.length){for(r=Math.round(s[0].x)+","+Math.round(s[0].y),c=1;c<s.length;c++)r+=" "+Math.round(s[c].x)+","+Math.round(s[c].y);d.setAttribute("points",r)}else d.setAttribute("x",Math.round(i.x)),d.setAttribute("y",Math.round(i.y)),d.setAttribute("width",Math.round(i.width)),d.setAttribute("height",Math.round(i.height));null!=(c=i.absoluteOffset)&&(0!=c.x&&d.setAttribute("dx",Math.round(c.x)),0!=c.y&&d.setAttribute("dy",Math.round(c.y)))}for(c=0;c<o;c++)null!=(i=this.encodeCell(e,n,a.getChildAt(t,c)))&&d.appendChild(i)}}return d},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxStylesheet);return e.encode=function(e,n){var t,a=e.document.createElement(this.getName());for(t in n.styles){var i=n.styles[t],s=e.document.createElement("add");if(null!=t){for(var o in s.setAttribute("as",t),i){var r=this.getStringValue(o,i[o]);if(null!=r){var l=e.document.createElement("add");l.setAttribute("value",r),l.setAttribute("as",o),s.appendChild(l)}}0<s.childNodes.length&&a.appendChild(s)}}return a},e.getStringValue=function(e,n){var t=typeof n;return"function"==t?n=mxStyleRegistry.getName(style[j]):"object"==t&&(n=null),n},e.decode=function(e,n,t){t=t||new this.template.constructor;var a=n.getAttribute("id");for(null!=a&&(e.objects[a]=t),n=n.firstChild;null!=n;){if(!this.processInclude(e,n,t)&&"add"==n.nodeName&&null!=(a=n.getAttribute("as"))){var i=n.getAttribute("extend"),s=null!=i?mxUtils.clone(t.styles[i]):null;for(null==s&&(null!=i&&mxLog.warn("mxStylesheetCodec.decode: stylesheet "+i+" not found to extend"),s={}),i=n.firstChild;null!=i;){if(i.nodeType==mxConstants.NODETYPE_ELEMENT){var o=i.getAttribute("as");if("add"==i.nodeName){var r=mxUtils.getTextContent(i),l=null;null!=r&&0<r.length?l=mxUtils.eval(r):(l=i.getAttribute("value"),mxUtils.isNumeric(l)&&(l=parseFloat(l))),null!=l&&(s[o]=l)}else"remove"==i.nodeName&&delete s[o]}i=i.nextSibling}t.putCellStyle(a,s)}n=n.nextSibling}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultKeyHandler);return e.encode=function(e,n){return null},e.decode=function(e,n,t){if(null!=t)for(n=n.firstChild;null!=n;){if(!this.processInclude(e,n,t)&&"add"==n.nodeName){var a=n.getAttribute("as"),i=n.getAttribute("action"),s=n.getAttribute("control");t.bindAction(a,i,s)}n=n.nextSibling}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultToolbar);return e.encode=function(e,n){return null},e.decode=function(e,n,t){if(null!=t){var a=t.editor;for(n=n.firstChild;null!=n;){if(n.nodeType==mxConstants.NODETYPE_ELEMENT&&!this.processInclude(e,n,t))if("separator"==n.nodeName)t.addSeparator();else if("br"==n.nodeName)t.toolbar.addBreak();else if("hr"==n.nodeName)t.toolbar.addLine();else if("add"==n.nodeName){var i=n.getAttribute("as"),s=(i=mxResources.get(i)||i,n.getAttribute("icon")),o=n.getAttribute("pressedIcon"),r=n.getAttribute("action"),l=n.getAttribute("mode"),d=n.getAttribute("template"),c="0"!=n.getAttribute("toggle"),m=mxUtils.getTextContent(n),u=null;if(null!=r)u=t.addItem(i,s,r,o);else if(null!=l){var p=mxUtils.eval(m);u=t.addMode(i,s,l,o,p)}else if(null!=d||null!=m&&0<m.length)u=a.templates[d],d=n.getAttribute("style"),null!=u&&null!=d&&(u=u.clone()).setStyle(d),(d=null)!=m&&0<m.length&&(d=mxUtils.eval(m)),u=t.addPrototype(i,s,u,o,d,c);else if(0<(o=mxUtils.getChildNodes(n)).length)if(null==s)for(d=t.addActionCombo(i),i=0;i<o.length;i++)"separator"==(c=o[i]).nodeName?t.addOption(d,"---"):"add"==c.nodeName&&(s=c.getAttribute("as"),c=c.getAttribute("action"),t.addActionOption(d,s,c));else{var g=null,v=t.addPrototype(i,s,function(){if(null==(e=a.templates[g.value]))return mxLog.warn("Template "+e+" not found"),null;var e=e.clone(),n=g.options[g.selectedIndex].cellStyle;return null!=n&&e.setStyle(n),e},null,null,c);g=t.addCombo();for(mxEvent.addListener(g,"change",function(){t.toolbar.selectMode(v,function(e){return e=mxUtils.convertPoint(a.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),a.addVertex(null,p(),e.x,e.y)}),t.toolbar.noReset=!1}),i=0;i<o.length;i++)"separator"==(c=o[i]).nodeName?t.addOption(g,"---"):"add"==c.nodeName&&(s=c.getAttribute("as"),m=c.getAttribute("template"),t.addOption(g,s,m||d).cellStyle=c.getAttribute("style"))}null!=u&&(null!=(d=n.getAttribute("id"))&&0<d.length&&u.setAttribute("id",d))}n=n.nextSibling}}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultPopupMenu);return e.encode=function(e,n){return null},e.decode=function(e,n,t){var a=n.getElementsByTagName("include")[0];return null!=a?this.processInclude(e,a,t):null!=t&&(t.config=n),t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxEditor,"modified lastSnapshot ignoredChanges undoManager graphContainer toolbarContainer".split(" "));return e.afterDecode=function(e,n,t){return null!=(e=n.getAttribute("defaultEdge"))&&(n.removeAttribute("defaultEdge"),t.defaultEdge=t.templates[e]),null!=(e=n.getAttribute("defaultGroup"))&&(n.removeAttribute("defaultGroup"),t.defaultGroup=t.templates[e]),t},e.decodeChild=function(e,n,t){if("Array"==n.nodeName){if("templates"==n.getAttribute("as"))return void this.decodeTemplates(e,n,t)}else if("ui"==n.nodeName)return void this.decodeUi(e,n,t);mxObjectCodec.prototype.decodeChild.apply(this,arguments)},e.decodeUi=function(e,n,t){for(e=n.firstChild;null!=e;){if("add"==e.nodeName){n=e.getAttribute("as");var a=e.getAttribute("element"),i=e.getAttribute("style"),s=null;if(null!=a)null!=(s=document.getElementById(a))&&null!=i&&(s.style.cssText+=";"+i);else{a=parseInt(e.getAttribute("x"));var o=parseInt(e.getAttribute("y")),r=e.getAttribute("width"),l=e.getAttribute("height");(s=document.createElement("div")).style.cssText=i,new mxWindow(mxResources.get(n)||n,s,a,o,r,l,!1,!0).setVisible(!0)}"graph"==n?t.setGraphContainer(s):"toolbar"==n?t.setToolbarContainer(s):"title"==n?t.setTitleContainer(s):"status"==n?t.setStatusContainer(s):"map"==n&&t.setMapContainer(s)}else"resource"==e.nodeName?mxResources.add(e.getAttribute("basename")):"stylesheet"==e.nodeName&&mxClient.link("stylesheet",e.getAttribute("name"));e=e.nextSibling}},e.decodeTemplates=function(e,n,t){null==t.templates&&(t.templates=[]),n=mxUtils.getChildNodes(n);for(var a=0;a<n.length;a++){for(var i=n[a].getAttribute("as"),s=n[a].firstChild;null!=s&&1!=s.nodeType;)s=s.nextSibling;null!=s&&(t.templates[i]=e.decodeCell(s))}},e}()),EditorUi=function(e,n,t){this.projectDesignController=e,this.editor=n||new Editor,this.container=t||document.body;var a=n.graph,i=this;CRUD_PERMISSIONS=this.projectDesignController.crudPermissions;var s=mxUtils.bind(this,function(e){return null==e&&(e=window.event),!!this.isEditingEnabled()&&a.isEditing()});this.container.style.overflow="hidden",(new Image).src=mxPopupMenu.prototype.submenuImage,null!=mxConnectionHandler.prototype.connectImage&&((new Image).src=mxConnectionHandler.prototype.connectImage.src),this.actions=new Actions(this),this.menus=new Menus(this),this.createDivs(),this.refresh(),this.createUi(),this.container==document.body&&(this.menubarContainer.onselectstart=s,this.menubarContainer.onmousedown=s,this.toolbarContainer.onselectstart=s,this.toolbarContainer.onmousedown=s,this.diagramContainer.onselectstart=s,this.diagramContainer.onmousedown=s,this.sidebarContainer.onselectstart=s,this.sidebarContainer.onmousedown=s,this.footerContainer.onselectstart=s,this.footerContainer.onmousedown=s),mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?(mxEvent.addListener(this.diagramContainer,"contextmenu",s),mxEvent.addListener(this.sidebarContainer,"contextmenu",s)):(this.diagramContainer.oncontextmenu=s,this.sidebarContainer.oncontextmenu=s),a.init(this.diagramContainer),a.refresh(),a.setEnabled(this.isEditingEnabled()),a.container.setAttribute("tabindex","0"),a.container.style.cursor="default",a.container.style.backgroundImage="url("+n.gridImage+")",a.container.style.backgroundPosition="-1px -1px",a.container.focus();var o=a.fireMouseEvent;a.fireMouseEvent=function(e,n,t){e==mxEvent.MOUSE_DOWN&&this.container.focus(),o.apply(this,arguments)},this.createMultiplicities(a.multiplicities,["start","finally","end"],[[1,1],[1,1],[0,0]],[[0,0],[0,0],[1,"n"]]),this.createMultiplicities(a.multiplicities,["answer","hangup","dial","ext_dial","queue","voicemail","callback"],[[1,1],[0,0],[0,1],[0,1],[0,1],[1,1],[0,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["login","pause","unpause","logout"],[[1,2],[1,2],[1,2],[1,2]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["set","math"],[[1,1],[1,1]],[[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["background","playback","menu","saydigits","saynumber","sayphonetic","google_cloud_tts","tts","ispeechtts","awspolly","getdigits","getsecretdigits","lumenvoxtts","sestektts","mrcpsynth"],[[1,"n"],[1,1],[1,"n"],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,"n"],[1,"n"],[1,1],[1,1],[1,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["record"],[[1,1]],[[1,"n"]]),this.createMultiplicities(a.multiplicities,["database","ispeechasr","sendSMS","sendMail","sendFax","googleasr","lumenvoxasr","tildeasr","dialogflow","dialogflowV2","awslex","sesteknda","sestekasr","restapi","mrcprecog"],[[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["gotoc","gotoif","gotoiftime","vswitch"],[[0,0],[1,2],[1,2],[1,"n"]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["queuelog","goal"],[[1,1],[1,1]],[[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["noop","system","agi","subproject","custom_app"],[[1,1],[1,1],[0,1],[0,1],[0,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),a.dblClick=function(e,t){var n=new mxEventObject(mxEvent.DOUBLE_CLICK,"event",e,"cell",t);this.fireEvent(n),mxEvent.isConsumed(e)||n.isConsumed()||(this.getModel().isEdge(t)?0<=["background","gotoif","gotoiftime","menu","getdigits","getsecretdigits","vswitch","login","pause","unpause","logout"].indexOf(t.source.value.tagName)&&this.startEditingAtCell(t):this.getModel().isVertex(t)&&i.projectDesignController.openDialog(t.getValue(),function(e){for(var n=0;n<e.length;n+=1)t.setAttribute(e[n].name,e[n].value);a.refresh(t)}),n.consume())},a.panningHandler.autoExpand=!0,a.panningHandler.factoryMethod=mxUtils.bind(this,function(e,n,t){this.isEditingEnabled()&&this.menus.createPopupMenu(e,n,t)}),n.outline.init(this.outlineContainer),mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){a.panningHandler.hideMenu()})),mxClient.IS_TOUCH&&(mxEvent.addListener(a.container,"gesturechange",mxUtils.bind(this,function(e){a.view.getDrawPane().setAttribute("transform","scale("+e.scale+")"),a.view.getOverlayPane().style.visibility="hidden"})),mxEvent.addListener(a.container,"gestureend",mxUtils.bind(this,function(e){a.view.getDrawPane().removeAttribute("transform"),a.zoomToCenter=!0,a.zoom(e.scale),a.view.getOverlayPane().style.visibility="visible"})));var r=this.isEditingEnabled()?this.createKeyHandler(n):null;this.getKeyHandler=function(){return r},mxEvent.addListener(window,"resize",mxUtils.bind(this,function(){this.refresh(),a.sizeDidChange(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()})),this.init(),this.open(),this.refresh()},EditorUi.prototype.splitSize=mxClient.IS_TOUCH?16:8,EditorUi.prototype.menubarHeight=33,EditorUi.prototype.toolbarHeight=36,EditorUi.prototype.footerHeight=0,EditorUi.prototype.hsplitPosition=204,EditorUi.prototype.vsplitPosition=190,EditorUi.prototype.init=function(){this.addUndoListener(),this.addSelectionListener();var e=this.actions.get("paste"),n=function(){e.setEnabled(!mxClipboard.isEmpty())},t=mxClipboard.cut;mxClipboard.cut=function(){t.apply(this,arguments),n()};var a=mxClipboard.copy;mxClipboard.copy=function(){a.apply(this,arguments),n()}},EditorUi.prototype.isEditingEnabled=function(){return!!CRUD_PERMISSIONS.canEdit},EditorUi.prototype.exportXML=function(e){var n=window.document.createElement("a");n.href="data:attachment/text;charset=utf-8,"+encodeURIComponent(e),n.download=this.editor.filename+".xml",n.target="_self",n.click()},EditorUi.prototype.open=function(){try{null!=window.opener&&null!=window.opener.openFile&&window.opener.openFile.setConsumer(mxUtils.bind(this,function(e,n){try{var t=mxUtils.parseXml(e);this.editor.setGraphXml(t.documentElement),this.editor.modified=!1,this.editor.undoManager.clear(),null!=n&&(this.editor.filename=n)}catch(e){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+e.message)}}))}catch(e){}},EditorUi.prototype.openString=function(e,n,t){try{var a=mxUtils.parseXml(e);this.editor.setGraphXml(a.documentElement),this.editor.modified=!1,this.editor.undoManager.clear(),null!=n&&(this.editor.filename=n),null!=t&&(this.editor.data=t)}catch(e){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+e.message)}},EditorUi.prototype.validate=function(e,n){for(var t=this.editor.graph,a=(e=null!=e?e:t.model.getRoot(),n=null!=n?n:{},!0),i=t.model.getChildCount(e),s=0;s<i;s++){var o=t.model.getChildAt(e,s),r=n;t.isValidRoot(o)&&(r={}),null!=(r=this.validate(o,r))?t.setCellWarning(o,r.replace(/\n/g,"<br>")):t.setCellWarning(o,null),a=a&&null==r}if(i="",t.model.isVertex(e))switch(e.value.nodeName){case"start":i=this.validateBlock("start")?"":"Only one Start block is allowed\n";break;case"finally":i=this.validateBlock("finally")?"":"Only one Finally block is allowed\n";break;case"playback":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n";break;case"answer":i=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"menu":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("digit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("response")?"":mxResources.get("invalidTimeout")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"getdigits":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n",i+=0<e.value.getAttribute("mindigit")?"":mxResources.get("wrongMinDigit")+"\n",i+=0<e.value.getAttribute("maxdigit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"getsecretdigits":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n",i+=0<e.value.getAttribute("mindigit")?"":mxResources.get("wrongMinDigit")+"\n",i+=0<e.value.getAttribute("maxdigit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("hiddendigitsnum")?"":mxResources.get("wrongHiddenDigitsnum")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"vswitch":i=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n";break;case"database":i=0<e.value.getAttribute("odbc_id")?"":mxResources.get("noDatabaseSelected")+"\n",i+=""!==e.value.getAttribute("query")?"":mxResources.get("missingQuery")+"\n";break;case"set":case"math":i=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n";break;case"gotoc":i=""!==e.value.getAttribute("context")?"":mxResources.get("noContextSelected")+"\n",i+=""!==e.value.getAttribute("extension")?"":mxResources.get("noExtensionSelected")+"\n",i+=1<=e.value.getAttribute("priority")?"":mxResources.get("invalidPriority")+"\n";break;case"system":case"agi":i=""!==e.value.getAttribute("command")?"":mxResources.get("noCommandSelected")+"\n";break;case"gotoif":i=""!==e.value.getAttribute("condition")?"":mxResources.get("noConditionSelected")+"\n";break;case"saydigits":i=""!==e.value.getAttribute("digits")?"":mxResources.get("noDigitsSelected")+"\n";break;case"saynumber":i=""!==e.value.getAttribute("number")?"":mxResources.get("noNumberSelected")+"\n";break;case"sayphonetic":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"record":i=""!==e.value.getAttribute("file")?"":mxResources.get("noFileSelected")+"\n",i+=-1<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"goal":i=""!==e.value.getAttribute("goalname")?"":mxResources.get("noGoalSelected")+"\n";break;case"ext_dial":i="-1"!==e.value.getAttribute("trunk_name")?"":mxResources.get("noTrunkSelected")+"\n",i+=""!==e.value.getAttribute("phone")?"":mxResources.get("noIdentifierSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"dial":i=0<e.value.getAttribute("sip_id")?"":mxResources.get("noIdentifierSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"queue":i="-1"!==e.value.getAttribute("queue_id")?"":mxResources.get("noQueueSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"callback":i="-1"!==e.value.getAttribute("list_id")?"":mxResources.get("noListSelected")+"\n",i+=""!==e.value.getAttribute("name")?"":mxResources.get("noFirstNameSelected")+"\n",i+=""!==e.value.getAttribute("phone")?"":mxResources.get("noPhoneSelected")+"\n",i+=""!==e.value.getAttribute("delay")?"":mxResources.get("invalidDelay")+"\n";break;case"gotoiftime":i=0<e.value.getAttribute("interval_id")?"":mxResources.get("noIntervalSelected")+"\n";break;case"voicemail":i=""!==e.value.getAttribute("mailbox")?"":mxResources.get("noBoxNumberSelected")+"\n";break;case"subproject":i=0<e.value.getAttribute("project_id")?"":mxResources.get("noProjectSelected")+"\n";break;case"sendSMS":i=0<e.value.getAttribute("sms_account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n",i+=""!==e.value.getAttribute("sms_text")?"":mxResources.get("noTextSelected")+"\n";break;case"sendMail":i=0<e.value.getAttribute("account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n";break;case"sendFax":i=0<e.value.getAttribute("account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n",i+=""!==e.value.getAttribute("attachment_path")?"":mxResources.get("noAttachmentSelected")+"\n";break;case"google_cloud_tts":i=""!==e.value.getAttribute("apiKey")?"":mxResources.get("noApiKeySelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"tts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"awspolly":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("aws_access_key_id")?"":mxResources.get("noAccessKeySelected")+"\n",i+=""!==e.value.getAttribute("aws_secret_access_key")?"":mxResources.get("noSecretAccessKeySelected")+"\n";break;case"awslex":i=""!==e.value.getAttribute("aws_bot_name")?"":mxResources.get("noNameSelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("aws_access_key_id")?"":mxResources.get("noAccessKeySelected")+"\n",i+=""!==e.value.getAttribute("aws_secret_access_key")?"":mxResources.get("noSecretAccessKeySelected")+"\n";break;case"ispeechtts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=-10<=e.value.getAttribute("speed")&&e.value.getAttribute("speed")<=10?"":mxResources.get("invalidSpeed")+"\n";break;case"lumenvoxtts":case"sestektts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"lumenvoxasr":case"sestekasr":i=""!==e.value.getAttribute("grammar")?"":mxResources.get("noGrammarSelected")+"\n";break;case"ispeechasr":case"googleasr":i=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=-1<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"tildeasr":i=""!==e.value.getAttribute("appid")?"":mxResources.get("noAppIdInserted")+"\n",i+=""!==e.value.getAttribute("appsecret")?"":mxResources.get("noAppSecretInserted")+"\n",i+=""!==e.value.getAttribute("uri")?"":mxResources.get("noUrlInserted")+"\n";break;case"custom_app":i=""!==e.value.getAttribute("application")?"":mxResources.get("noApplicationSelected")+"\n";break;case"login":case"pause":case"unpause":case"logout":i=""!==e.value.getAttribute("findBy")?"":mxResources.get("noFindBySelected")+"\n";break;case"sesteknda":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("ndauth_url")?"":mxResources.get("noUrlInserted")+"\n",i+=""!==e.value.getAttribute("ndassistant_url")?"":mxResources.get("noUrlInserted")+"\n",i+=""!==e.value.getAttribute("username")?"":mxResources.get("noUsernameSelected")+"\n",i+=""!==e.value.getAttribute("password")?"":mxResources.get("noPasswordSelected")+"\n";break;case"restapi":i=""!==e.value.getAttribute("url")?"":mxResources.get("noUrlSelected")+"\n",i+=""!==e.value.getAttribute("method")?"":mxResources.get("noMethodSelected")+"\n";case"mrcpsynth":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"mrcprecog":i=""!==e.value.getAttribute("grammar")?"":mxResources.get("noGrammarSelected")+"\n";break;case"dialogflow":i=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("dialogflow_language")?"":mxResources.get("noDialogflowLanguageSelected")+"\n";break;case"dialogflowV2":i=""!==e.value.getAttribute("dialogflowV2_project_id")?"":mxResources.get("noDialogflowProjectSelected")+"\n",i+=""!==e.value.getAttribute("client_email")?"":mxResources.get("noClientEmailSelected")+"\n",i+=""!==e.value.getAttribute("private_key")?"":mxResources.get("noPrivateKeySelected")+"\n",i+=""!==e.value.getAttribute("dialogflowV2_language")?"":mxResources.get("noDialogflowLanguageSelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n"}if(t.model.isEdge(e))switch(t.model.getCell(e.source.getId()).value.nodeName){case"background":case"menu":if(void 0!==e.getValue()){var l=/^[0-9]+$|^[-]{1}$|^[i]{1}$|^[t]{1}$|^[*]{1}$|^[#]{1}$/;String(e.getValue()).split(",").forEach(function(e){i+=l.test(e)?"":mxResources.get("numberOrAll")+"\n"})}else i=i+mxResources.get("numberOrAll")+"\n";break;case"getsecretdigits":case"getdigits":if(void 0!==e.getValue())i+=(l=/^(x|i|-)$/).test(String(e.getValue()))?"":mxResources.get("numberOrInvalidOrDefault")+"\n";else i=i+mxResources.get("numberOrInvalidOrDefault")+"\n";break;case"gotoif":case"gotoiftime":if(void 0!==e.getValue())i+=(l=/^(true){1}$|^(false){1}$/).test(String(e.getValue()))?"":mxResources.get("trueOrFalse")+"\n";else i=i+mxResources.get("trueOrFalse")+"\n";break;case"login":case"pause":case"unpause":case"logout":if(void 0!==e.getValue())i+=(l=/^(success){1}$|^(failure){1}$/).test(String(e.getValue()))?"":mxResources.get("successOrFailure")+"\n";else i=i+mxResources.get("successOrFailure")+"\n"}return t.isCellCollapsed(e)&&!a&&(i+=(mxResources.get(t.containsValidationErrorsResource)||t.containsValidationErrorsResource)+"\n"),i=t.model.isEdge(e)?i+(t.getEdgeValidationError(e,t.model.getTerminal(e,!0),t.model.getTerminal(e,!1))||""):i+(t.getCellValidationError(e)||""),null!=(s=t.validateCell(e,n))&&(i+=s),null==t.model.getParent(e)&&t.view.validate(),0<i.length||!a?i:null},EditorUi.prototype.validateBlock=function(n){var t=this.editor.graph,e=t.getDefaultParent(),a=0;return e.children.forEach(function(e){t.model.isVertex(e)&&e.value.nodeName==n&&a++}),!(1<a)},EditorUi.prototype.getUrl=function(e){var n=null!=e?e:window.location.pathname,t=0<n.indexOf("?")?1:0;for(var a in urlParams)n+=0==t?"?":"&",n+=a+"="+urlParams[a],t++;return n},EditorUi.prototype.addUndoListener=function(){var e=this.actions.get("undo"),n=this.actions.get("redo"),t=this.editor.undoManager,a=function(){e.setEnabled(t.canUndo()),n.setEnabled(t.canRedo())};t.addListener(mxEvent.ADD,a),t.addListener(mxEvent.UNDO,a),t.addListener(mxEvent.REDO,a),t.addListener(mxEvent.CLEAR,a),a()},EditorUi.prototype.addSelectionListener=function(){var e=mxUtils.bind(this,function(){var e=this.editor.graph,n=!e.isSelectionEmpty(),t=!1,a=!1,i=e.getSelectionCells();if(null!=i)for(var s=0;s<i.length;s++){var o=i[s];if(e.getModel().isEdge(o)&&(a=!0),e.getModel().isVertex(o)&&(t=!0),a&&t)break}var r=["cut","copy","delete","duplicate","bold","italic","style","underline","toFront","toBack","dashed","rounded","shadow","tilt","autosize"];for(s=0;s<r.length;s++)this.actions.get(r[s]).setEnabled(n);this.actions.get("curved").setEnabled(a),this.actions.get("rotation").setEnabled(t),this.actions.get("wordWrap").setEnabled(t),this.actions.get("group").setEnabled(1<e.getSelectionCount()),this.actions.get("ungroup").setEnabled(1==e.getSelectionCount()&&0<e.getModel().getChildCount(e.getSelectionCell()));var l=t&&1==e.getSelectionCount();this.actions.get("removeFromGroup").setEnabled(l&&e.getModel().isVertex(e.getModel().getParent(e.getSelectionCell())));var d=["fontFamily","fontSize","alignment","position","text","format","arrange","linewidth","spacing"];for(s=0;s<d.length;s++)this.menus.get(d[s]).setEnabled(n);d=["line","lineend","linestart"];for(s=0;s<d.length;s++)this.menus.get(d[s]).setEnabled(a);this.actions.get("setAsDefaultEdge").setEnabled(a),this.menus.get("align").setEnabled(1<e.getSelectionCount()),this.menus.get("direction").setEnabled(t||a&&e.isLoop(e.view.getState(e.getSelectionCell()))),this.menus.get("navigation").setEnabled(e.foldingEnabled&&(null!=e.view.currentRoot||1==e.getSelectionCount()&&e.isValidRoot(e.getSelectionCell()))),this.actions.get("home").setEnabled(null!=e.view.currentRoot),this.actions.get("exitGroup").setEnabled(null!=e.view.currentRoot);var c=1==e.getSelectionCount()&&e.isValidRoot(e.getSelectionCell());this.actions.get("enterGroup").setEnabled(c),this.actions.get("expand").setEnabled(c),this.actions.get("collapse").setEnabled(c),this.actions.get("editLink").setEnabled(1==e.getSelectionCount()),this.actions.get("openLink").setEnabled(1==e.getSelectionCount()&&null!=e.getLinkForCell(e.getSelectionCell()))});this.editor.graph.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},EditorUi.prototype.refresh=function(){var e=mxClient.IS_IE&&(null==document.documentMode||5==document.documentMode),n=this.container.clientWidth+390,t=this.container.clientHeight+190;this.container==document.body&&(n=document.body.clientWidth||document.documentElement.clientWidth,t=e&&document.body.clientHeight||document.documentElement.clientHeight);var a=Math.max(0,Math.min(this.hsplitPosition,n-this.splitSize-20)),i=Math.max(0,Math.min(this.vsplitPosition,t-this.menubarHeight-this.toolbarHeight-this.splitSize-1));this.menubarContainer.style.height=this.menubarHeight+"px",this.toolbarContainer.style.top=this.menubarHeight+"px",this.toolbarContainer.style.height=this.toolbarHeight+"px";var s=this.menubarHeight+this.toolbarHeight;if(mxClient.IS_QUIRKS||(s+=1),this.sidebarContainer.style.top=s+"px",this.sidebarContainer.style.width=a+"px",this.outlineContainer.style.width=a+"px",this.outlineContainer.style.height=i+"px",this.diagramContainer.style.left=this.isEditingEnabled()?a+this.splitSize+"px":"0px",this.diagramContainer.style.top=this.sidebarContainer.style.top,this.hsplit.style.top=this.sidebarContainer.style.top,this.hsplit.style.bottom=this.outlineContainer.style.bottom,this.hsplit.style.left=a+"px",this.vsplit.style.width=this.sidebarContainer.style.width,this.vsplit.style.bottom=i+this.footerHeight+"px",e){this.menubarContainer.style.width=n+"px",this.toolbarContainer.style.width=this.menubarContainer.style.width;var o=t-i-this.splitSize-this.menubarHeight-this.toolbarHeight;this.sidebarContainer.style.height=o+"px",this.diagramContainer.style.width=n-a-this.splitSize+"px";var r=t-this.menubarHeight-this.toolbarHeight;this.diagramContainer.style.height=r+"px",this.hsplit.style.height=r+"px"}else this.sidebarContainer.style.bottom=i+this.splitSize+"px",this.diagramContainer.style.bottom=this.outlineContainer.style.bottom},EditorUi.prototype.createDivs=function(){this.menubarContainer=this.createDiv("geMenubarContainer"),this.toolbarContainer=this.createDiv("geToolbarContainer"),this.sidebarContainer=this.createDiv("geSidebarContainer"),this.outlineContainer=this.createDiv("geOutlineContainer"),this.diagramContainer=this.createDiv("geDiagramContainer"),this.footerContainer=this.createDiv("geFooterContainer"),this.hsplit=this.createDiv("geHsplit"),this.vsplit=this.createDiv("geVsplit"),this.menubarContainer.style.top="0px",this.menubarContainer.style.left="0px",this.menubarContainer.style.right="0px",this.toolbarContainer.style.left="0px",this.toolbarContainer.style.right="0px",this.sidebarContainer.style.left="0px",this.outlineContainer.style.bottom="0px",this.outlineContainer.style.left="0px",this.diagramContainer.style.overflow="scroll",this.diagramContainer.style.right="0px",this.footerContainer.style.left="0px",this.footerContainer.style.right="0px",this.footerContainer.style.bottom="0px",this.vsplit.style.left="0px",this.vsplit.style.height=this.splitSize+"px",this.hsplit.style.width=this.splitSize+"px"},EditorUi.prototype.createUi=function(){this.menubar=this.menus.createMenubar(this.createDiv("geMenubar")),this.menubarContainer.appendChild(this.menubar.container),this.toolbar=this.createToolbar(this.createDiv("geToolbar")),this.toolbarContainer.appendChild(this.toolbar.container),this.sidebar=this.createSidebar(this.sidebarContainer),this.footerContainer.appendChild(this.createFooter()),this.statusContainer=this.createStatusContainer(),this.editor.addListener("statusChanged",mxUtils.bind(this,function(){this.setStatusText(this.editor.getStatus())})),this.setStatusText(this.editor.getStatus()),this.menubar.container.appendChild(this.statusContainer),this.isEditingEnabled()&&(this.container.appendChild(this.sidebarContainer),this.container.appendChild(this.hsplit),this.container.appendChild(this.vsplit)),this.container.appendChild(this.diagramContainer),this.container.appendChild(this.menubarContainer),this.container.appendChild(this.toolbarContainer),this.container.appendChild(this.outlineContainer),this.container.appendChild(this.footerContainer),this.addSplitHandler(this.hsplit,!0,0,mxUtils.bind(this,function(e){this.hsplitPosition=e,this.refresh(),this.editor.graph.sizeDidChange(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()})),this.addSplitHandler(this.vsplit,!1,this.footerHeight,mxUtils.bind(this,function(e){this.vsplitPosition=e,this.refresh(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()}))},EditorUi.prototype.createStatusContainer=function(){var e=document.createElement("a");return e.className="geItem geStatus",e},EditorUi.prototype.createStatusContainer=function(){var e=document.createElement("a");return e.className="geItem geStatus",e},EditorUi.prototype.setStatusText=function(e){this.statusContainer.innerHTML=e},EditorUi.prototype.createToolbar=function(e){return new Toolbar(this,e)},EditorUi.prototype.createSidebar=function(e){return new Sidebar(this,e)},EditorUi.prototype.createFooter=function(){return this.createDiv("geFooter")},EditorUi.prototype.createDiv=function(e){var n=document.createElement("div");return n.className=e,n},EditorUi.prototype.createHeader=function(e){return document.createElement(e)},EditorUi.prototype.createForm=function(e){var n=document.createElement("form");return n.className=e,n},EditorUi.prototype.addSplitHandler=function(n,t,a,i){var s=null,o=null;function r(e){if(null!=s){var n=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e));i(Math.max(0,o+(t?n.x-s.x:s.y-n.y)-a)),mxEvent.consume(e)}}function e(e){r(e),o=s=null}mxEvent.addGestureListeners(n,function(e){s=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e)),o=parseInt(t?n.style.left:n.style.bottom),mxEvent.consume(e)}),mxEvent.addListener(document,"mousemove",r),mxEvent.addListener(document,"touchmove",r),mxEvent.addListener(document,"mouseup",e),mxEvent.addListener(document,"touchend",e)},EditorUi.prototype.executeLayout=function(e,n,t){var a=this.editor.graph,i=a.getSelectionCell();n=null!=this.animate?this.animate:n,a.getModel().beginUpdate();try{e.execute(a.getDefaultParent(),i)}catch(e){throw e}finally{if(n&&navigator.userAgent.indexOf("Camino")<0){var s=new mxMorphing(a);s.addListener(mxEvent.DONE,mxUtils.bind(this,function(){a.getModel().endUpdate()})),s.startAnimation()}else a.getModel().endUpdate()}},EditorUi.prototype.createKeyHandler=function(e){var a=this.editor.graph,o=new mxKeyHandler(a);function n(e){if(!a.isSelectionEmpty()){var n=0,t=0;37==e?n=-1:38==e?t=-1:39==e?n=1:40==e&&(t=1),a.moveCells(a.getSelectionCells(),n,t),a.scrollCellToVisible(a.getSelectionCell())}}o.isControlDown=function(e){return mxEvent.isControlDown(e)||mxClient.IS_MAC&&e.metaKey};var t=mxUtils.bind(this,function(e,n,t,a){var i=this.actions.get(t);if(null!=i){var s=function(){i.enabled&&i.funct()};n?a?o.bindControlShiftKey(e,s):o.bindControlKey(e,s):a?o.bindShiftKey(e,s):o.bindKey(e,s)}});return o.enter=function(){},o.bindKey(8,function(){a.foldCells(!0)}),o.bindKey(13,function(){a.foldCells(!1)}),o.bindKey(33,function(){a.exitGroup()}),o.bindKey(34,function(){a.enterGroup()}),o.bindKey(36,function(){a.home()}),o.bindKey(35,function(){a.refresh()}),o.bindKey(37,function(){n(37)}),o.bindKey(38,function(){n(38)}),o.bindKey(39,function(){n(39)}),o.bindKey(40,function(){n(40)}),o.bindKey(113,function(){a.startEditingAtCell()}),t(46,!1,"delete"),t(82,!0,"tilt"),t(83,!0,"save"),t(83,!0,"saveAs",!0),t(107,!1,"zoomIn"),t(109,!1,"zoomOut"),t(65,!0,"selectAll"),t(86,!0,"selectVertices",!0),t(69,!0,"selectEdges",!0),t(69,!0,"export"),t(66,!0,"toBack"),t(70,!0,"toFront"),t(68,!0,"duplicate"),t(90,!0,"undo"),t(89,!0,"redo"),t(88,!0,"cut"),t(67,!0,"copy"),t(81,!0,"connect"),t(86,!0,"paste"),t(71,!0,"group"),t(71,!0,"grid",!0),t(85,!0,"ungroup"),t(112,!1,"about"),t(80,!0,"publish",!0),o},EditorUi.prototype.createMultiplicities=function(e,n,t,a){for(var i=0;i<n.length;i++)e.push(new mxMultiplicity(!0,n[i],null,null,t[i][0],t[i][1],null,mxResources.get(n[i])+mxResources.get("musthave")+t[i][0]+mxResources.get("outgoingedge"),null)),e.push(new mxMultiplicity(!1,n[i],null,null,a[i][0],a[i][1],null,mxResources.get(n[i])+mxResources.get("musthave")+a[i][0]+mxResources.get("incomingedge"),null))};var useLocalStorage=(mxClient.IS_TOUCH||"local"==urlParams.storage)&&"undefined"!=typeof localStorage,fileSupport=null!=window.File&&null!=window.FileReader&&null!=window.FileList,touchStyle=mxClient.IS_TOUCH||"1"==urlParams.touch,counter=0;try{for(var op=window;null!=op.opener&&!isNaN(op.opener.counter);)op=op.opener;null!=op&&(op.counter++,counter=op.counter)}catch(e){}function Sidebar(e,n){this.editorUi=e,this.container=n,this.palettes=new Object,this.taglist=new Object,this.showTooltips=!0,this.graph=new Graph(document.createElement("div"),null,null,this.editorUi.editor.graph.getStylesheet()),this.graph.resetViewOnRootChange=!1,this.graph.foldingEnabled=!1,this.graph.setConnectable(!1),this.graph.autoScroll=!1,this.graph.setTooltips(!1),this.graph.setEnabled(!1),this.graph.container.style.visibility="hidden",this.graph.container.style.position="absolute",this.graph.container.style.overflow="hidden",this.graph.container.style.height="1px",this.graph.container.style.width="1px",mxClient.IS_IE||mxClient.IS_IE11||(this.graph.container.style.display="none"),document.body.appendChild(this.graph.container),this.pointerUpHandler=mxUtils.bind(this,function(){this.showTooltips=!0}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerup":"mouseup",this.pointerUpHandler),this.pointerDownHandler=mxUtils.bind(this,function(){this.showTooltips=!1,this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerdown":"mousedown",this.pointerDownHandler),this.pointerMoveHandler=mxUtils.bind(this,function(e){for(var n=mxEvent.getSource(e);null!=n;){if(n==this.currentElt)return;n=n.parentNode}this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointermove":"mousemove",this.pointerMoveHandler),this.pointerOutHandler=mxUtils.bind(this,function(e){null==e.toElement&&null==e.relatedTarget&&this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerout":"mouseout",this.pointerOutHandler),mxEvent.addListener(n,"scroll",mxUtils.bind(this,function(){this.showTooltips=!0})),this.init(),mxClient.IS_SVG||((new Image).src=IMAGE_PATH+"/tooltip.png")}function Actions(e){this.editorUi=e,this.actions=new Object,this.init()}function Action(e,n,t,a,i){mxEventSource.call(this),this.label=e,this.funct=n,this.enabled=null==t||t,this.iconCls=a,this.shortcut=i}function Menubar(e,n){this.editorUi=e,this.container=n,mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){this.hideMenu()}))}function Menu(e,n){mxEventSource.call(this),this.funct=e,this.enabled=null==n||n}function Toolbar(e,n){this.editorUi=e,this.container=n,this.init(),mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){this.hideMenu()}))}function createCheckbox(e){var n=document.createElement("input");return n.setAttribute("type","checkbox"),e&&n.setAttribute("checked",!0),n}function createDropdownFromApi(e,t,a,i,n,s,o,r){var l=new XMLHttpRequest;l.open("GET",e,!1),l.setRequestHeader("Authorization","Bearer "+n.editor.data.token),l.send(null);var d=[];200===l.status&&(d=JSON.parse(l.response));var c=document.createElement("select"),m=document.createElement("option");return m.text="-- None --",m.value="-1",c.appendChild(m),d.rows.forEach(function(n){r&&n[a]==r||((m=document.createElement("option")).text=n[a],s&&o?(m.value=o,s.forEach(function(e){m.value=m.value.replace("%"+e+"%",n[e])}),m.selected=m.value==t):(m.value=n[i],m.selected=n[i]==t),c.appendChild(m))}),c.className="form-control select2",c}function createDropdownWithOptgroupFromApi(e,n,t,a,i,s){var o=new XMLHttpRequest;o.open("GET",e,!1),o.setRequestHeader("Authorization","Bearer "+i.editor.data.token),o.send(null);var r=[];200===o.status&&(r=JSON.parse(o.response));var l=document.createElement("select"),d=document.createElement("option");d.text="-- None --",d.value="-1",l.appendChild(d);var c=_.groupBy(r.rows,s);for(var m in c)if(c.hasOwnProperty(m)){var u=document.createElement("optgroup");u.label=_.capitalize(m),c[m].forEach(function(e){(d=document.createElement("option")).text=e[t],d.value=e[a],d.selected=e[a]==n,u.appendChild(d)}),l.appendChild(u)}return l.className="form-control select2",l}function createGroupedDropdownFromApi(e,n,t,a,i,s){var o=new XMLHttpRequest;o.open("GET",e,!1),o.setRequestHeader("Authorization","Bearer "+i.editor.data.token),o.send(null);var r=[];200===o.status&&(r=JSON.parse(o.response));var l=document.createElement("select"),d=document.createElement("option");return d.text="-- None --",d.value="0",l.appendChild(d),r.rows.forEach(function(e){(d=document.createElement("option")).className="select-group-father",d.text=e[t].toUpperCase(),d.value=e[a],d.selected=e[a]==n,l.appendChild(d),e[s].forEach(function(e){(d=document.createElement("option")).className="select-group-son",d.text="-"+_.capitalize(e[t]),d.value=e[a],d.selected=e[a]==n,l.appendChild(d)})}),l.className="form-control select2",l}function createDropdownFromArray(e,n){var t=document.createElement("select");for(var a in e){var i=document.createElement("option");i.text=e[a],i.value=a,(0<n||""!=n)&&(i.selected=n===a),t.appendChild(i)}return t.className="form-control select2",t}function createDropdownFromTigerDialList(e){var n=document.createElement("select"),t=[],a=new XMLHttpRequest;try{if(a.open("POST","/api/rest/list/list",!1),a.send(JSON.stringify({page:1,size:6e5})),200===a.status){var i=JSON.parse(a.response);if(0<i.status){var s=i.response.RMI.rows;for(var o in s)t[s[o].id]=s[o].name}}}catch(e){console.log(e)}for(var r in t){var l=document.createElement("option");l.text=t[r],l.value=r,(0<e||""!=e)&&(l.selected=e===r),n.appendChild(l)}return n.className="form-control select2",n}function Dialog(e,n,t,a,i,s,o){var r=0;mxClient.IS_IE&&9!=document.documentMode&&(r=60),t+=r,a+=r;Math.max(0,Math.round((document.body.scrollWidth-t)/2)),Math.max(0,Math.round((Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)-a)/3));var l=e.createDiv("geDialog");l.className="modal fade in center",l.style.display="block",l.style.paddingRight="12px";var d=e.createDiv("geModalDialog");d.className="modal-dialog",d.appendChild(n),l.appendChild(d),null==this.bg&&(this.bg=e.createDiv("background"),this.bg.className="modal-backdrop fade in",mxClient.IS_QUIRKS&&new mxDivResizer(this.bg)),i&&document.body.appendChild(this.bg),document.body.appendChild(l),this.onDialogClose=o,this.container=l}function ImportDialog(t){var e=t.createDiv("modal-content"),n=t.createDiv("modal-header"),a=t.createDiv("modal-body"),i=t.createDiv("modal-footer"),s=t.createHeader("h4");mxUtils.write(s,mxResources.get("import")+" XML");var o=mxUtils.button("",function(){t.hideDialog()});o.className="close",n.appendChild(o),n.appendChild(s);var r=t.createDiv("row"),l=t.createDiv("col-md-12"),d=document.createElement("textarea");d.style.width="100%",d.style.height="374px";var c=document.createElement("input");c.type="file",c.setAttribute("accept","text/xml"),c.addEventListener("change",function(e){var n=e.target.files[0];if(console.log(n),n)if("text/xml"===n.type){var t=new FileReader;t.onload=function(e){var n=e.target.result;mxUtils.write(d,n)},t.readAsText(n)}else alert("Failed to load format file");else alert("Failed to load file")},!1),l.appendChild(c),l.appendChild(d),r.appendChild(l),a.appendChild(r);var m=mxUtils.button(mxResources.get("import"),mxUtils.bind(this,function(e){var n=mxUtils.parseXml(d.value);t.editor.setGraphXml(n.documentElement),t.hideDialog()}));m.className="btn blue";var u=mxUtils.button(mxResources.get("cancel"),function(){t.hideDialog()});u.className="btn default",i.appendChild(m),i.appendChild(u),e.appendChild(n),e.appendChild(a),e.appendChild(i),this.container=e}function AboutDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("about")+" Cally Square");var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=document.createElement("img");r.style.border="0px",r.setAttribute("width","176"),r.setAttribute("width","151"),r.setAttribute("src",IMAGE_PATH+"/logo.png"),a.appendChild(r),mxUtils.br(a),mxUtils.write(a,"Powered by Xenialab "+mxClient.VERSION),mxUtils.br(a);var l=document.createElement("a");l.setAttribute("href","http://www.callysquare.com/"),l.setAttribute("target","_blank"),mxUtils.write(l,"www.callysquare.com"),a.appendChild(l),mxUtils.br(a),mxUtils.br(a);var d=mxUtils.button(mxResources.get("close"),function(){e.hideDialog()});d.className="btn default",i.appendChild(d),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function SaveDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("saveAs"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.editor.getOrCreateFilename(),l=e.createDiv("row"),d=e.createDiv("col-md-4"),c=e.createDiv("col-md-8"),m=document.createElement("label");m.className="control-label pull-right",mxUtils.write(m,mxResources.get("name")),d.appendChild(m);var u=document.createElement("input");u.setAttribute("value",r+"_copy"),u.setAttribute("id","_name"),u.className="form-control",c.appendChild(u),l.appendChild(d),l.appendChild(c),a.appendChild(l);var p=mxUtils.button(mxResources.get("save"),function(){e.saveAs(u.value),e.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function NewDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("new"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.editor.getOrCreateFilename(),l=e.createDiv("row"),d=e.createDiv("col-md-4"),c=e.createDiv("col-md-8"),m=document.createElement("label");m.className="control-label pull-right",mxUtils.write(m,mxResources.get("name")),d.appendChild(m);var u=document.createElement("input");u.setAttribute("value",r+"_new"),u.setAttribute("id","_name"),u.className="form-control",c.appendChild(u),l.appendChild(d),l.appendChild(c),a.appendChild(l);var p=mxUtils.button(mxResources.get("new"),function(){e.new(u.value),e.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function DescriptionDialog(e){console.log(e.editor.data);var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("description"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("form-horizontal form-row-seperated"),l="description",d=e.editor.data.description||"",c=e.createDiv("form-group"),m=document.createElement("label");m.className="col-sm-4 control-label",mxUtils.write(m,mxResources.get(l)),c.appendChild(m);var u=document.createElement("input");u.setAttribute("value",d),u.className="form-control",u.setAttribute("id","_description");var p=e.createDiv("col-sm-8");p.appendChild(u),c.appendChild(p),r.appendChild(c),a.appendChild(r);var g=mxUtils.button(mxResources.get("update"),function(){e.description(u.value),e.hideDialog()});g.className="btn blue";var v=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});v.className="btn default",i.appendChild(g),i.appendChild(v),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function VariableDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("variable"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("form-horizontal form-row-seperated"),l="name",d="_"+l,c="variable name",m=e.createDiv("form-group"),u=document.createElement("label");u.className="col-sm-4 control-label",mxUtils.write(u,mxResources.get(l)),m.appendChild(u);var p=document.createElement("input");p.setAttribute("value",c),p.className="form-control",p.setAttribute("id",d);var g=e.createDiv("col-sm-8");g.appendChild(p),m.appendChild(g),r.appendChild(m),d="_"+(l="description"),c="variable description",m=e.createDiv("form-group last"),(u=document.createElement("label")).className="col-sm-4 control-label",mxUtils.write(u,mxResources.get(l)),m.appendChild(u);var v=document.createElement("input");v.setAttribute("value",c),v.className="form-control",v.setAttribute("id",d),(g=e.createDiv("col-sm-8")).appendChild(v),m.appendChild(g),r.appendChild(m),a.appendChild(r);var h=mxUtils.button(mxResources.get("new"),function(){e.variable(p.value,v.value),e.hideDialog()});h.className="btn blue";var f=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});f.className="btn default",i.appendChild(h),i.appendChild(f),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function OpenDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("open"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("row"),l=e.createDiv("col-md-4"),d=e.createDiv("col-md-8"),c=document.createElement("label");c.className="control-label pull-right",mxUtils.write(c,mxResources.get("name")),l.appendChild(c);var m=new XMLHttpRequest;m.open("GET","/api/square/projects",!1),m.setRequestHeader("Authorization","Bearer "+e.editor.data.token),m.send(null);var u=[];200===m.status&&(u=JSON.parse(m.response));for(var p=document.createElement("select"),g=0;g<u.length;g++){var v=document.createElement("option");v.text=u[g].name,v.value=u[g].id,p.appendChild(v)}p.className="form-control",d.appendChild(p),r.appendChild(l),r.appendChild(d),a.appendChild(r);var h=mxUtils.button(mxResources.get("open"),function(){console.log(p),console.log(p.value),window.open("square/project/"+p.value,"_blank"),e.hideDialog()});h.className="btn blue";var f=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});f.className="btn default",i.appendChild(h),i.appendChild(f),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function RenameDialog(t){var e=t.createDiv("modal-content"),n=t.createDiv("modal-header"),a=t.createDiv("modal-body"),i=t.createDiv("modal-footer"),s=t.createHeader("h4");mxUtils.write(s,mxResources.get("rename"));var o=mxUtils.button("",function(){t.hideDialog()});o.className="close",n.appendChild(o),n.appendChild(s);var r=t.createDiv("row"),l=t.createDiv("col-md-4"),d=t.createDiv("col-md-8"),c=document.createElement("label");c.className="control-label pull-right",mxUtils.write(c,mxResources.get("name")),l.appendChild(c);var m=t.editor.filename,u=document.createElement("input");u.setAttribute("value",m),u.className="form-control",d.appendChild(u),r.appendChild(l),r.appendChild(d),a.appendChild(r);var p=mxUtils.button(mxResources.get("save"),function(){var n=new XMLHttpRequest;n.open("PUT",SAVE_URL+t.editor.data.id,!0),n.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),n.setRequestHeader("Authorization","Bearer "+t.editor.data.token),n.send("name="+u.value),n.onload=function(e){200===n.status?(t.editor.setStatus("Project successfully renamed"),t.editor.filename=u.value):(console.log(n.response),t.editor.setStatus(JSON.parse(n.response).errors[0].message))},n.onerror=function(e){mxUtils.alert(n.statusText)},t.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){t.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),e.appendChild(n),e.appendChild(a),e.appendChild(i),this.container=e}function EditFileDialog(n){var e=n.createDiv("modal-content"),t=n.createDiv("modal-header"),a=n.createDiv("modal-body"),i=n.createDiv("modal-footer"),s=n.createHeader("h4");mxUtils.write(s,mxResources.get("edit"));var o=mxUtils.button("",function(){n.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=n.createDiv("row"),l=n.createDiv("col-md-12"),d=document.createElement("textarea");if(d.style.width="100%",d.style.height="374px",d.value=mxUtils.getPrettyXml(n.editor.getGraphXml()),fileSupport){d.addEventListener("dragover",function(e){e.stopPropagation(),e.preventDefault()},!1),d.addEventListener("drop",function(e){if(e.stopPropagation(),e.preventDefault(),0<e.dataTransfer.files.length){var n=e.dataTransfer.files[0],t=new FileReader;t.onload=function(e){d.value=e.target.result},t.readAsText(n)}},!1)}l.appendChild(d),r.appendChild(l),a.appendChild(r);var c=mxUtils.button(mxResources.get("save"),function(){var e=mxUtils.parseXml(d.value);n.editor.setGraphXml(e.documentElement),n.hideDialog()});c.className="btn blue";var m=mxUtils.button(mxResources.get("cancel"),function(){n.hideDialog()});m.className="btn default",i.appendChild(c),i.appendChild(m),e.appendChild(t),e.appendChild(a),e.appendChild(i),this.container=e}function ExportDialog(n){var e=n.createDiv("modal-content"),t=n.createDiv("modal-header"),a=n.createDiv("modal-body form"),i=n.createDiv("modal-footer"),s=n.createHeader("h4");mxUtils.write(s,mxResources.get("export")+" XML");var o=mxUtils.button("",function(){n.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=n.createDiv("form-horizontal form-row-seperated"),l=n.createDiv("form-group last"),d=document.createElement("label");d.className="col-sm-4 control-label",mxUtils.write(d,mxResources.get("filename"));var c=document.createElement("input");c.setAttribute("value",n.editor.getOrCreateFilename()),c.className="form-control";var m=n.createDiv("col-sm-8");m.appendChild(c),l.appendChild(d),l.appendChild(m),r.appendChild(l),a.appendChild(r);var u=mxUtils.button(mxResources.get("export"),mxUtils.bind(this,function(e){n.save(!1);encodeURIComponent(mxUtils.getXml(n.editor.getGraphXml()));new mxXmlRequest(SAVE_URL+n.editor.data.id+"/download","filename="+c.value,"GET").simulate(document,"_blank"),n.hideDialog()}));u.className="btn blue";var p=mxUtils.button(mxResources.get("cancel"),function(){n.hideDialog()});p.className="btn default",i.appendChild(u),i.appendChild(p),e.appendChild(t),e.appendChild(a),e.appendChild(i),this.container=e}function GeneralDialog(i,s){console.log("general");var o=i.editor.graph,e=i.createDiv("md-dialog"),n=i.createDiv("md-toolbar"),t=i.createDiv("md-dialog-content"),a=i.createDiv("md-dialog-actions"),r=i.createHeader("h4");mxUtils.write(r,mxResources.get("edit")+" "+mxResources.get(s.value.nodeName));var l=mxUtils.button("",function(){i.hideDialog()});l.className="close",n.appendChild(l),n.appendChild(r);for(var d=s.value.attributes.length,c=i.createDiv("form-horizontal form-row-seperated"),m=0;m<d;m++){var u,p=s.value.attributes[m].name,g="_"+p,v=s.value.attributes[m].value,h=i.createDiv(m==d-1?"form-group last":"form-group"),f=document.createElement("label");switch(f.className="col-sm-4 control-label",mxUtils.write(f,mxResources.get(p)),h.appendChild(f),p){case"sip_id":u=createDropdownWithOptgroupFromApi("/api/users/all",v,"fullname","id",i,"role");break;case"queue_id":u=createDropdownFromApi("/api/voice/queues",v,"name","name",i);break;case"trunk_name":u=createDropdownFromApi("/api/trunks",v,"name","name",i);break;case"variable_id":u=createDropdownFromApi("/api/variables",v,"name","id",i);break;case"account_id":u="sendMail"==s.value.nodeName?createDropdownFromApi("/api/mail/servers/out",v,"username","id",i):createDropdownFromApi("/api/sms/accounts",v,"name","id",i);break;case"template_id":u=createDropdownFromApi("/api/templates",v,"name","id",i);break;case"context":u=createDropdownFromApi("/api/voice/contexts",v,"name","name",i);break;case"mailbox":u=createDropdownFromApi("/api/voice/voicemails",v,"mailbox","id",i,["mailbox","context"],"%mailbox%@%context%");break;case"model":u=createDropdownFromArray(ISPEECHASRMODEL,v);break;case"ispeech_asr_language":u=createDropdownFromArray(ISPEECHASRLANG,v);break;case"beep":u=createDropdownFromArray(ISPEECHBEEP,v);break;case"hiddendigitspos":u=createDropdownFromArray(SECRETDIGITSPOS,v);break;case"ispeech_tts_language":u=createDropdownFromArray(ISPEECHLANG,v);break;case"google_tts_language":u=createDropdownFromArray(GOOGLETTSLANG,v);break;case"intKey":u=createDropdownFromArray(ASRINTKEYS,v);break;case"recordingFormat":u=createDropdownFromArray(RECORDINGFORMAT,v);break;case"answer":u=createDropdownFromArray(BOOLSELECT,v);break;case"list_id":u=createDropdownFromTigerDialList(v);break;case"interval_id":u=createGroupedDropdownFromApi("/api/intervals",v,"name","id",i,"SubIntervals");break;case"project_id":u=createDropdownFromApi("/api/square/projects",v,"name","id",i,null,null,i.editor.getOrCreateFilename());break;case"odbc_id":u=createDropdownFromApi("/api/square/odbc",v,"name","id",i);break;case"file_id":u=createDropdownFromApi("/api/sounds",v,"display_name","id",i);break;case"timeout":case"digit":case"mindigit":case"maxdigit":case"response":case"retry":case"speed":(u=document.createElement("input")).setAttribute("type","number"),u.setAttribute("min",0),u.setAttribute("max",1e3),u.setAttribute("value",v),u.className="form-control";break;case"text":case"key":case"query":case"condition":case"command":case"body":(u=document.createElement("textarea")).innerHTML=v,u.className="form-control";break;case"sms_text":(u=document.createElement("textarea")).innerHTML=v,u.className="form-control",u.setAttribute("maxlength","160");break;default:(u=document.createElement("input")).setAttribute("value",v),u.className="form-control"}u.setAttribute("id",g);var b=i.createDiv("col-sm-8");if(b.appendChild(u),mxResources.get("help_"+p)){var A=i.createDiv("p");A.className="help-block",mxUtils.write(A,mxResources.get("help_"+p)),b.appendChild(A)}h.appendChild(b),c.appendChild(h)}t.appendChild(c);var E=mxUtils.button(mxResources.get("save"),mxUtils.bind(this,function(e){for(var n=0;n<s.value.attributes.length;n++){var t="_"+s.value.attributes[n].name,a=s.value.attributes[n].name;s.setAttribute(a,document.getElementById(t).value)}o.refresh(s),i.hideDialog()}));E.className="btn blue";var y=mxUtils.button(mxResources.get("cancel"),function(){i.hideDialog()});y.className="btn default",a.appendChild(E),a.appendChild(y),e.appendChild(n),e.appendChild(t),e.appendChild(a),this.container=e}Editor=function(){mxEventSource.call(this),this.init(),this.initStencilRegistry(),this.graph=new Graph,this.outline=new mxOutline(this.graph),this.outline.updateOnPan=!0,this.undoManager=this.createUndoManager(),this.status="",this.filename=null,this.getOrCreateFilename=function(){return this.filename||mxResources.get("drawing",[counter])+".xml"},this.getFilename=function(){return this.filename},this.setStatus=function(e){this.status=e,this.fireEvent(new mxEventObject("statusChanged"))},this.getStatus=function(){return this.status},this.modified=!1,this.graphChangeListener=function(){this.modified=!0},this.graph.getModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){this.graphChangeListener.apply(this,arguments)})),window.onbeforeunload=mxUtils.bind(this,function(){if(this.modified)return mxResources.get("allChangesLost")}),this.graph.resetViewOnRootChange=!1,this.graph.scrollbars=!0,this.graph.background=null},mxUtils.extend(Editor,mxEventSource),Editor.prototype.gridImage=IMAGE_PATH+"/grid.gif",Editor.prototype.transparentImage=IMAGE_PATH+"/transparent.gif",Editor.prototype.setGraphXml=function(e){var n=new mxCodec(e.ownerDocument);if("mxGraphModel"==e.nodeName){this.graph.view.scale=Number(e.getAttribute("scale")||1),this.graph.gridEnabled="0"!=e.getAttribute("grid"),this.graph.graphHandler.guidesEnabled="0"!=e.getAttribute("guides"),this.graph.setTooltips("0"!=e.getAttribute("tooltips")),this.graph.setConnectable("0"!=e.getAttribute("connect")),this.graph.foldingEnabled="0"!=e.getAttribute("fold"),this.graph.scrollbars="0"!=e.getAttribute("scrollbars"),this.graph.scrollbars||(this.graph.container.scrollLeft=0,this.graph.container.scrollTop=0,this.graph.view.translate.x=Number(e.getAttribute("dx")||0),this.graph.view.translate.y=Number(e.getAttribute("dy")||0)),this.graph.pageVisible="1"==e.getAttribute("page"),this.graph.pageBreaksVisible=this.graph.pageVisible,this.graph.preferPageSize=this.graph.pageBreaksVisible;var t=e.getAttribute("pageScale");this.graph.pageScale=null!=t?t:1.5;var a=e.getAttribute("pageWidth"),i=e.getAttribute("pageHeight");null!=a&&null!=i&&(this.graph.pageFormat=new mxRectangle(0,0,parseFloat(a),parseFloat(i)),this.outline.outline.pageFormat=this.graph.pageFormat);var s=e.getAttribute("background");null!=s&&0<s.length&&(this.graph.background=s),n.decode(e,this.graph.getModel()),this.updateGraphComponents()}},Editor.prototype.getGraphXml=function(){var e=new mxCodec(mxUtils.createXmlDocument()).encode(this.graph.getModel());return 0==this.graph.view.translate.x&&0==this.graph.view.translate.y||(e.setAttribute("dx",Math.round(100*this.graph.view.translate.x)/100),e.setAttribute("dy",Math.round(100*this.graph.view.translate.y)/100)),1!=this.graph.view.scale&&e.setAttribute("scale",Math.round(1e3*this.graph.view.scale)/1e3),e.setAttribute("grid",this.graph.isGridEnabled()?"1":"0"),e.setAttribute("guides",this.graph.graphHandler.guidesEnabled?"1":"0"),e.setAttribute("guides",this.graph.graphHandler.guidesEnabled?"1":"0"),e.setAttribute("tooltips",this.graph.tooltipHandler.isEnabled()?"1":"0"),e.setAttribute("connect",this.graph.connectionHandler.isEnabled()?"1":"0"),e.setAttribute("fold",this.graph.foldingEnabled?"1":"0"),e.setAttribute("page",this.graph.pageVisible?"1":"0"),e.setAttribute("pageScale",this.graph.pageScale),e.setAttribute("pageWidth",this.graph.pageFormat.width),e.setAttribute("pageHeight",this.graph.pageFormat.height),this.graph.scrollbars||e.setAttribute("scrollbars","0"),null!=this.graph.background&&e.setAttribute("background",this.graph.background),e},Editor.prototype.updateGraphComponents=function(){var e=this.graph,n=this.outline;if(null!=e.container&&null!=n.outline.container){null!=e.background?"none"==e.background?e.container.style.backgroundColor="transparent":(null!=e.view.backgroundPageShape&&(e.view.backgroundPageShape.fill=e.background,e.view.backgroundPageShape.reconfigure()),e.container.style.backgroundColor=e.background):e.container.style.backgroundColor="",e.pageVisible?(e.container.style.backgroundColor="#ebebeb",e.container.style.borderStyle="solid",e.container.style.borderColor="#e5e5e5",e.container.style.borderTopWidth="1px",e.container.style.borderLeftWidth="1px",e.container.style.borderRightWidth="0px",e.container.style.borderBottomWidth="0px"):e.container.style.border="",n.outline.container.style.backgroundColor=e.container.style.backgroundColor,n.outline.pageVisible==e.pageVisible&&n.outline.pageScale==e.pageScale||(n.outline.pageScale=e.pageScale,n.outline.pageVisible=e.pageVisible,n.outline.view.validate()),e.scrollbars&&"hidden"==e.container.style.overflow&&!touchStyle?e.container.style.overflow="auto":e.scrollbars&&!touchStyle||(e.container.style.overflow="hidden");var t=mxClient.IS_IE&&9<=document.documentMode?"url("+this.transparentImage+")":"none";e.container.style.backgroundImage=!e.pageVisible&&e.isGridEnabled()?"url("+this.gridImage+")":t,null!=e.view.backgroundPageShape&&(e.view.backgroundPageShape.node.style.backgroundImage=this.graph.isGridEnabled()?"url("+this.gridImage+")":"none")}},Editor.prototype.init=function(){mxClient.IS_IE6&&mxClient.link("stylesheet",CSS_PATH+"/grapheditor-ie6.css"),mxResources.loadDefaultBundle=!1,mxResources.add(RESOURCE_BASE),mxConstants.DEFAULT_HOTSPOT=.3;var e=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=function(){var t=e.apply(this,arguments);return t.intersects=mxUtils.bind(this,function(e,n){return!!this.isConnecting()||mxCellMarker.prototype.intersects.apply(t,arguments)}),t},mxConstants.SHADOWCOLOR="#d0d0d0",mxConstants.HANDLE_FILLCOLOR="#99ccff",mxConstants.HANDLE_STROKECOLOR="#0088cf",mxConstants.VERTEX_SELECTION_COLOR="#00a8ff",mxConstants.OUTLINE_COLOR="#00a8ff",mxConstants.OUTLINE_HANDLE_FILLCOLOR="#99ccff",mxConstants.OUTLINE_HANDLE_STROKECOLOR="#00a8ff",mxConstants.CONNECT_HANDLE_FILLCOLOR="#cee7ff",mxConstants.EDGE_SELECTION_COLOR="#00a8ff",mxConstants.DEFAULT_VALID_COLOR="#00a8ff",mxConstants.LABEL_HANDLE_FILLCOLOR="#cee7ff",mxConstants.GUIDE_COLOR="#0088cf",mxGraph.prototype.pageBreakColor="#c0c0c0",mxGraph.prototype.pageScale=1,mxRubberband.prototype.defaultOpacity=30,mxGraphView.prototype.createBackgroundPageShape=function(e){return new mxRectangleShape(e,this.graph.background||"white","#cacaca")},mxGraphView.prototype.getBackgroundPageBounds=function(){var e=this.getGraphBounds(),n=0<e.width?e.x/this.scale-this.translate.x:0,t=0<e.height?e.y/this.scale-this.translate.y:0,a=e.width/this.scale,i=e.height/this.scale,s=this.graph.pageFormat,o=this.graph.pageScale,r=s.width*o,l=s.height*o,d=Math.floor(Math.min(0,n)/r),c=Math.floor(Math.min(0,t)/l),m=Math.ceil(Math.max(1,n+a)/r)-d,u=Math.ceil(Math.max(1,t+i)/l)-c;return new mxRectangle(this.scale*(this.translate.x+d*r),this.scale*(this.translate.y+c*l),this.scale*m*r,this.scale*u*l)};var t=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(e,n){t.apply(this,arguments),this.dialect==mxConstants.DIALECT_SVG||null==this.view.backgroundPageShape||this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container)||(this.view.backgroundPageShape.node.style.marginLeft=e+"px",this.view.backgroundPageShape.node.style.marginTop=n+"px")};var a=this;mxGraphView.prototype.validateBackground=function(){var e=this.graph.getBackgroundImage();if(null!=e){if(null==this.backgroundImage||this.backgroundImage.image!=e.src){null!=this.backgroundImage&&this.backgroundImage.destroy();var n=new mxRectangle(0,0,1,1);this.backgroundImage=new mxImageShape(n,e.src),this.backgroundImage.dialect=this.graph.dialect,this.backgroundImage.init(this.backgroundPane),this.backgroundImage.redraw()}this.redrawBackgroundImage(this.backgroundImage,e)}else null!=this.backgroundImage&&(this.backgroundImage.destroy(),this.backgroundImage=null);if(this.graph.pageVisible){n=this.getBackgroundPageBounds();null==this.backgroundPageShape?(this.backgroundPageShape=this.createBackgroundPageShape(n),this.backgroundPageShape.scale=1,this.backgroundPageShape.isShadow=!0,this.backgroundPageShape.dialect=mxConstants.DIALECT_STRICTHTML,this.backgroundPageShape.init(this.graph.container),this.graph.container.firstChild.style.position="absolute",this.graph.container.insertBefore(this.backgroundPageShape.node,this.graph.container.firstChild),this.backgroundPageShape.redraw(),this.backgroundPageShape.node.className="geBackgroundPage",this.backgroundPageShape.node.style.backgroundPosition="-1px -1px",mxEvent.addListener(this.backgroundPageShape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e)})),mxEvent.addGestureListeners(this.backgroundPageShape.node,mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){null!=this.graph.tooltipHandler&&this.graph.tooltipHandler.isHideOnHover()&&this.graph.tooltipHandler.hide(),this.graph.isMouseDown&&!mxEvent.isConsumed(e)&&this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}))):(this.backgroundPageShape.scale=1,this.backgroundPageShape.bounds=n,this.backgroundPageShape.redraw()),this.backgroundPageShape.node.style.backgroundImage=this.graph.isGridEnabled()?"url("+a.gridImage+")":"none"}else null!=this.backgroundPageShape&&(this.backgroundPageShape.destroy(),this.backgroundPageShape=null)},mxGraph.prototype.updatePageBreaks=function(e,n,t){var a=this.view.scale,i=this.view.translate,s=this.pageFormat,o=a*this.pageScale,r=this.view.getBackgroundPageBounds();n=r.width,t=r.height;var l=new mxRectangle(a*i.x,a*i.y,s.width*o,s.height*o),d=(e=e&&Math.min(l.width,l.height)>this.minPageBreakDist)?Math.ceil(n/l.width)-1:0,c=e?Math.ceil(t/l.height)-1:0,m=r.x+n,u=r.y+t;if(null==this.horizontalPageBreaks&&0<d&&(this.horizontalPageBreaks=[]),null!=this.horizontalPageBreaks){for(var p=0;p<=d;p++){var g=[new mxPoint(r.x+(p+1)*l.width,r.y),new mxPoint(r.x+(p+1)*l.width,u)];if(null!=this.horizontalPageBreaks[p])this.horizontalPageBreaks[p].scale=1,this.horizontalPageBreaks[p].points=g,this.horizontalPageBreaks[p].redraw();else(v=new mxPolyline(g,this.pageBreakColor,this.scale)).dialect=this.dialect,v.isDashed=this.pageBreakDashed,v.addPipe=!1,v.scale=a,v.init(this.view.backgroundPane),v.redraw(),this.horizontalPageBreaks[p]=v}for(p=d;p<this.horizontalPageBreaks.length;p++)this.horizontalPageBreaks[p].destroy();this.horizontalPageBreaks.splice(d,this.horizontalPageBreaks.length-d)}if(null==this.verticalPageBreaks&&0<c&&(this.verticalPageBreaks=[]),null!=this.verticalPageBreaks){for(p=0;p<=c;p++){var v;g=[new mxPoint(r.x,r.y+(p+1)*l.height),new mxPoint(m,r.y+(p+1)*l.height)];if(null!=this.verticalPageBreaks[p])this.verticalPageBreaks[p].scale=1,this.verticalPageBreaks[p].points=g,this.verticalPageBreaks[p].redraw();else(v=new mxPolyline(g,this.pageBreakColor,a)).dialect=this.dialect,v.isDashed=this.pageBreakDashed,v.addPipe=!1,v.scale=a,v.init(this.view.backgroundPane),v.redraw(),this.verticalPageBreaks[p]=v}for(p=c;p<this.verticalPageBreaks.length;p++)this.verticalPageBreaks[p].destroy();this.verticalPageBreaks.splice(c,this.verticalPageBreaks.length-c)}},mxEdgeHandler.prototype.snapToTerminals=!0,mxGraphHandler.prototype.guidesEnabled=!0;var s=mxGraphHandler.prototype.shouldRemoveCellsFromParent;mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(e,n,t){for(var a=0;a<n.length;a++)if(this.graph.getModel().isVertex(n[a])){var i=this.graph.getCellGeometry(n[a]);if(null!=i&&i.relative)return!1}return s.apply(this,arguments)},mxGuide.prototype.isEnabledForEvent=function(e){return!mxEvent.isAltDown(e)};var r=mxPopupMenu.prototype.addItem;mxPopupMenu.prototype.addItem=function(e,n,t,a,i,s){var o=r.apply(this,arguments);return null==s||s||mxEvent.addListener(o,"mousedown",function(e){mxEvent.consume(e)}),o};var o=mxGraphHandler.prototype.getInitialCellForEvent;mxGraphHandler.prototype.getInitialCellForEvent=function(e){var n=this.graph.getModel(),t=n.getParent(this.graph.getSelectionCell()),a=o.apply(this,arguments),i=n.getParent(a);if(null==t||t!=a&&t!=i)for(;!this.graph.isCellSelected(a)&&!this.graph.isCellSelected(i)&&n.isVertex(i)&&!this.graph.isValidRoot(i);)a=i,i=this.graph.getModel().getParent(a);return a};var l=mxGraphHandler.prototype.isDelayedSelection;mxGraphHandler.prototype.isDelayedSelection=function(e){var n=l.apply(this,arguments),t=this.graph.getModel(),a=t.getParent(this.graph.getSelectionCell()),i=t.getParent(e);return(null==a||a!=e&&a!=i)&&(this.graph.isCellSelected(e)||!t.isVertex(i)||this.graph.isValidRoot(i)||(n=!0)),n},mxGraphHandler.prototype.selectDelayed=function(e){var n=e.getCell();null==n&&(n=this.cell);for(var t=this.graph.getModel(),a=t.getParent(n);this.graph.isCellSelected(n)&&t.isVertex(a)&&!this.graph.isValidRoot(a);)n=a,a=t.getParent(n);this.graph.selectCellForEvent(n,e.getEvent())},mxPanningHandler.prototype.getCellForPopupEvent=function(e){for(var n=e.getCell(),t=this.graph.getModel(),a=t.getParent(n);t.isVertex(a)&&!this.graph.isValidRoot(a);)this.graph.isCellSelected(a)&&(n=a),a=t.getParent(a);return n}},Editor.prototype.createUndoManager=function(){var s=this.graph,t=new mxUndoManager,e=function(e,n){t.undoableEditHappened(n.getProperty("edit"))};s.getModel().addListener(mxEvent.UNDO,e),s.getView().addListener(mxEvent.UNDO,e);var n=function(e,n){for(var t=s.getSelectionCellsForChanges(n.getProperty("edit").changes),a=[],i=1;i<t.length;i++)null!=s.view.getState(t[i])&&a.push(t[i]);s.setSelectionCells(a)};return t.addListener(mxEvent.UNDO,n),t.addListener(mxEvent.REDO,n),t},Editor.prototype.initStencilRegistry=function(){mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/general.xml")},mxStencilRegistry.libraries={},mxStencilRegistry.packages=[],mxStencilRegistry.getStencil=function(e){var n=mxStencilRegistry.stencils[e];if(null==n){var t=mxStencilRegistry.getBasenameForStencil(e);if(null!=t){var a=mxStencilRegistry.libraries[t];if(null!=a){if(null==mxStencilRegistry.packages[t]){mxStencilRegistry.packages[t]=1;for(var i=0;i<a.length;i++){var s=a[i];if(".xml"==s.toLowerCase().substring(s.length-4,s.length))mxStencilRegistry.loadStencilSet(s,null);else if(".js"==s.toLowerCase().substring(s.length-3,s.length)){var o=mxUtils.load(s);null!=o&&eval.call(window,o.getText())}}}}else mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/"+t+".xml",null);n=mxStencilRegistry.stencils[e]}}return n},mxStencilRegistry.getBasenameForStencil=function(e){var n=e.split("."),t=null;if(0<n.length&&"mxgraph"==n[0]){t=n[1];for(var a=2;a<n.length-1;a++)t+="/"+n[a]}return t},mxStencilRegistry.loadStencilSet=function(e,n,t){t=null!=t&&t;var a=mxStencilRegistry.packages[e];if(t||null==a){var i=!1;null==a&&(a=mxUtils.load(e).getXml(),mxStencilRegistry.packages[e]=a,i=!0),mxStencilRegistry.parseStencilSet(a,n,i)}},mxStencilRegistry.parseStencilSet=function(e,n,t){t=null==t||t;var a=e.documentElement,i=a.firstChild,s="",o=a.getAttribute("name");for(null!=o&&(s=o+".");null!=i;){if(i.nodeType==mxConstants.NODETYPE_ELEMENT&&null!=(o=i.getAttribute("name"))){s=s.toLowerCase();var r=o.replace(/ /g,"_");if(t&&mxStencilRegistry.addStencil(s+r.toLowerCase(),new mxStencil(i)),null!=n){var l=i.getAttribute("w"),d=i.getAttribute("h");n(s,r,o,l=null==l?80:parseInt(l,10),d=null==d?80:parseInt(d,10))}}i=i.nextSibling}},OpenFile=function(e){this.producer=null,this.consumer=null,this.done=e},OpenFile.prototype.setConsumer=function(e){this.consumer=e,this.execute()},OpenFile.prototype.setData=function(e,n){this.data=e,this.filename=n,this.execute()},OpenFile.prototype.error=function(e){this.cancel(),mxUtils.alert(e)},OpenFile.prototype.execute=function(){null!=this.consumer&&null!=this.data&&(this.consumer(this.data,this.filename),this.cancel())},OpenFile.prototype.cancel=function(){null!=this.done&&this.done()},Sidebar.prototype.init=function(){var e=STENCIL_PATH;this.addSearchPalette(!0),this.addImagePalette("entry",mxResources.get("entry"),e+"/entry/","_128x128.png",["start","finally","end"],[mxResources.get("start"),mxResources.get("finally"),mxResources.get("end")]),this.addImagePalette("call_management",mxResources.get("call_management"),e+"/call_management/","_128x128.png",["answer","hangup","dial","ext_dial","queue","voicemail","callback"],[mxResources.get("answer"),mxResources.get("hangup"),mxResources.get("dial"),mxResources.get("ext_dial"),mxResources.get("queue"),mxResources.get("voicemail"),mxResources.get("callback")]),this.addImagePalette("agent_management",mxResources.get("agent_management"),e+"/agent_management/","_128x128.png",["login","pause","unpause","logout"],[mxResources.get("login"),mxResources.get("pause"),mxResources.get("unpause"),mxResources.get("logout")]),this.addImagePalette("variable",mxResources.get("variable"),e+"/variable/","_128x128.png",["set","math"],[mxResources.get("set"),mxResources.get("math")]),this.addImagePalette("playback",mxResources.get("playback"),e+"/playback/","_128x128.png",["playback","menu","saydigits","saynumber","sayphonetic","getdigits","getsecretdigits"],[mxResources.get("playback"),mxResources.get("menu"),mxResources.get("saydigits"),mxResources.get("saynumber"),mxResources.get("sayphonetic"),mxResources.get("getdigits"),mxResources.get("getsecretdigits")]),this.addImagePalette("recording",mxResources.get("recording"),e+"/recording/","_128x128.png",["record"],[mxResources.get("record")]),this.addImagePalette("tts","TTS",e+"/tts/","_128x128.png",["google_cloud_tts","tts","ispeechtts","awspolly","lumenvoxtts","sestektts","mrcpsynth"],["Google Cloud TTS","GoogleTTS","ISpeechTTS","AWSPolly","LumenvoxTTS","SestekTTS","MRCPSynth"]),this.addImagePalette("asr","ASR",e+"/asr/","_128x128.png",["googleasr","ispeechasr","lumenvoxasr","tildeasr","sestekasr","mrcprecog"],["GoogleASR","ISpeechASR","LumenvoxASR","TildeASR","SestekASR","MRCPRecog"]),this.addImagePalette("integrationServer",mxResources.get("integrationServer"),e+"/integration_server/","_128x128.png",["database","sendMail","sendSMS","dialogflow","dialogflowV2","awslex","sesteknda","restapi"],[mxResources.get("database"),mxResources.get("sendMail"),mxResources.get("sendSMS"),"Dialogflow","DialogflowV2","AWSLex","SestekNDA","RestAPI"]),this.addImagePalette("callflow",mxResources.get("callflow"),e+"/callflow/","_128x128.png",["gotoc","gotoif","gotoiftime","vswitch"],[mxResources.get("gotoc"),mxResources.get("gotoif"),mxResources.get("gotoiftime"),mxResources.get("vswitch")]),this.addImagePalette("stats",mxResources.get("stats"),e+"/stats/","_128x128.png",["goal"],[mxResources.get("goal")]),this.addImagePalette("general",mxResources.get("general"),e+"/general/","_128x128.png",["noop","system","agi","subproject","custom_app"],[mxResources.get("noop"),mxResources.get("system"),mxResources.get("agi"),mxResources.get("subproject"),mxResources.get("custom_app")])},Sidebar.prototype.collapsedImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhDQANAIABAJmZmf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozNUQyRTJFNjZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozNUQyRTJFNzZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjFERjc3MEUxNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjFERjc3MEUyNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAQAsAAAAAA0ADQAAAhSMj6lrwAjcC1GyahV+dcZJgeIIFgA7":IMAGE_PATH+"/collapsed.gif",Sidebar.prototype.expandedImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhDQANAIABAJmZmf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxREY3NzBERjZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxREY3NzBFMDZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjFERjc3MERENkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjFERjc3MERFNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAQAsAAAAAA0ADQAAAhGMj6nL3QAjVHIu6azbvPtWAAA7":IMAGE_PATH+"/expanded.gif",Sidebar.prototype.tooltipImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAbCAMAAAB7jU7LAAAACVBMVEX///+ZmZn///9Y2COLAAAAA3RSTlP//wDXyg1BAAAAOElEQVR42mXQMQ4AMAgDsWv//+iutcJmIQSk+9dJpVKpVCqVSqVSqZTdncWzF8/NeP7FkxWenPEDOnUBiL3jWx0AAAAASUVORK5CYII=":IMAGE_PATH+"/tooltip.png",Sidebar.prototype.searchImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAEaSURBVHjabNGxS5VxFIfxz71XaWuQUJCG/gCHhgTD9VpEETg4aMOlQRp0EoezObgcd220KQiXmpretTAHQRBdojlQEJyukPdt+b1ywfvAGc7wnHP4nlZd1yKijQW8xzNc4Su+ZOYfQ3T6/f4YNvEJYzjELXp4VVXVz263+7cR2niBxAFeZ2YPi3iHR/gYERPDwhpOsd6sz8x/mfkNG3iOlWFhFj8y89J9KvzGXER0GuEaD42mgwHqUtoljbcRsTBCeINpfM/MgZLKPpaxFxGbOCqDXmILN7hoJrTKH+axhxmcYRxP0MIDnOBDZv5q1XUNIuJxifJp+UNV7t7BFM6xeic0RMQ4Bpl5W/ol7GISx/eEUUTECrbx+f8A8xhiZht9zsgAAAAASUVORK5CYII=":IMAGE_PATH+"/search.png",Sidebar.prototype.enableTooltips=!0,Sidebar.prototype.tooltipBorder=16,Sidebar.prototype.tooltipDelay=300,Sidebar.prototype.dropTargetDelay=200,Sidebar.prototype.thumbWidth=36,Sidebar.prototype.thumbHeight=36,Sidebar.prototype.thumbPadding=5<=document.documentMode?0:1,Sidebar.prototype.thumbBorder=2,Sidebar.prototype.sidebarTitleSize=9,Sidebar.prototype.sidebarTitles=!1,Sidebar.prototype.tooltipTitles=!0,Sidebar.prototype.maxTooltipWidth=400,Sidebar.prototype.maxTooltipHeight=400,Sidebar.prototype.addStencilsToIndex=!0,Sidebar.prototype.defaultImageWidth=80,Sidebar.prototype.defaultImageHeight=80,Sidebar.prototype.getOffset=function(e){return{left:(e=e.getBoundingClientRect()).left+window.scrollX,top:e.top+window.scrollY}},Sidebar.prototype.showTooltip=function(c,m,u,p,g,v){if(this.enableTooltips&&this.showTooltips&&this.currentElt!=c){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null);var e=mxUtils.bind(this,function(){null==this.tooltip&&(this.tooltip=document.createElement("div"),this.tooltip.className="geSidebarTooltip",this.tooltip.style.zIndex=mxPopupMenu.prototype.zIndex-1,document.body.appendChild(this.tooltip),this.graph2=new Graph(this.tooltip,null,null,this.editorUi.editor.graph.getStylesheet()),this.graph2.resetViewOnRootChange=!1,this.graph2.foldingEnabled=!1,this.graph2.gridEnabled=!1,this.graph2.autoScroll=!1,this.graph2.setTooltips(!1),this.graph2.setConnectable(!1),this.graph2.setEnabled(!1),mxClient.IS_SVG||(this.graph2.view.canvas.style.position="relative"),this.tooltipImage=mxUtils.createImage(this.tooltipImage),this.tooltipImage.className="geSidebarTooltipImage",this.tooltipImage.style.zIndex=mxPopupMenu.prototype.zIndex-1,this.tooltipImage.style.position="absolute",this.tooltipImage.style.width="14px",this.tooltipImage.style.height="27px",document.body.appendChild(this.tooltipImage)),this.graph2.model.clear(),this.graph2.view.setTranslate(this.tooltipBorder,this.tooltipBorder),u>this.maxTooltipWidth||p>this.maxTooltipHeight?this.graph2.view.scale=Math.round(100*Math.min(this.maxTooltipWidth/u,this.maxTooltipHeight/p))/100:this.graph2.view.scale=1,this.tooltip.style.display="block",this.graph2.labelsVisible=null==v||v,this.graph2.addCells(m);var e=this.graph2.getGraphBounds(),n=e.width+2*this.tooltipBorder+4,t=e.height+2*this.tooltipBorder;if(mxClient.IS_QUIRKS?(t+=4,this.tooltip.style.overflow="hidden"):this.tooltip.style.overflow="visible",this.tooltipImage.style.visibility="visible",this.tooltip.style.width=n+"px",this.tooltipTitles&&null!=g&&0<g.length){null==this.tooltipTitle?(this.tooltipTitle=document.createElement("div"),this.tooltipTitle.style.borderTop="1px solid gray",this.tooltipTitle.style.textAlign="center",this.tooltipTitle.style.width="100%",this.tooltipTitle.style.overflow="hidden",mxClient.IS_SVG||(this.tooltipTitle.style.position="absolute"),this.tooltipTitle.style.paddingTop="6px",this.tooltip.appendChild(this.tooltipTitle)):this.tooltipTitle.innerHTML="",this.tooltipTitle.style.display="",mxUtils.write(this.tooltipTitle,g);var a=this.tooltipTitle.offsetHeight+10;t+=a,mxClient.IS_SVG?this.tooltipTitle.style.marginTop=2-a+"px":(t-=6,this.tooltipTitle.style.top=t-a+"px")}else null!=this.tooltipTitle&&null!=this.tooltipTitle.parentNode&&(this.tooltipTitle.style.display="none");this.tooltip.style.height=t+"px";var i=-Math.round(e.x-this.tooltipBorder),s=-Math.round(e.y-this.tooltipBorder),o=document.body,r=document.documentElement,l=(o.clientHeight||r.clientHeight,document.getElementById("vertical-navigation").offsetWidth+this.container.clientWidth),d=Math.max(0,this.getOffset(c).top-this.container.scrollTop-t/2+16);mxClient.IS_SVG?0!=i||0!=s?this.graph2.view.canvas.setAttribute("transform","translate("+i+","+s+")"):this.graph2.view.canvas.removeAttribute("transform"):(this.graph2.view.drawPane.style.left=i+"px",this.graph2.view.drawPane.style.top=s+"px"),this.tooltip.style.position="absolute",this.tooltip.style.left=l+"px",this.tooltip.style.top=d+"px",this.tooltipImage.style.left=l-13+"px",this.tooltipImage.style.top=d+t/2-13+"px"});null!=this.tooltip&&"none"!=this.tooltip.style.display?e():this.thread=window.setTimeout(e,this.tooltipDelay),this.currentElt=c}},Sidebar.prototype.hideTooltip=function(){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null),null!=this.tooltip&&(this.tooltip.style.display="none",this.tooltipImage.style.visibility="hidden",this.currentElt=null)},Sidebar.prototype.addEntry=function(e,n){if(null!=this.taglist&&null!=e&&0<e.length)for(var t=e.toLowerCase().replace(/[\/\,\(\)]/g," ").split(" "),a=0;a<t.length;a++)if(t[a]=t[a].replace(/\.*\d*$/,""),1<t[a].length){var i=this.taglist[t[a]];null==i&&(i={entries:[],dict:new mxDictionary},this.taglist[t[a]]=i),null==i.dict.get(n)&&(i.dict.put(n,n),i.entries.push(n))}return n},Sidebar.prototype.searchEntries=function(e,n,t,a,i){if(null!=this.taglist&&null!=e){for(var s=e.toLowerCase().split(" "),o=new mxDictionary,r=(t+1)*n,l=[],d=0,c=0;c<s.length;c++)if(0<s[c].length){var m=this.taglist[s[c]],u=new mxDictionary;if(null!=m){var p=m.entries;l=[];for(var g=0;g<p.length;g++){m=p[g];if(0==d==(null==o.get(m))&&(u.put(m,m),l.push(m),c==s.length-1&&l.length==r))return void a(l.slice(t*n,r),r,!0)}}else l=[];o=u,d++}var v=l.length;a(l.slice(t*n,(t+1)*n),v,!1)}else a([])},Sidebar.prototype.filterTags=function(e){if(null==e)return null;for(var n=e.split(" "),t=[],a={},i=0;i<n.length;i++)null==a[n[i]]&&(a[n[i]]="1",t.push(n[i]));return t.join(" ")},Sidebar.prototype.cloneCell=function(e,n){var t=e.clone();return null!=n&&(t.value=n),t},Sidebar.prototype.addSearchPalette=function(e){var n=document.createElement("div");n.style.visibility="hidden",this.container.appendChild(n);var r=document.createElement("div");r.className="geSidebar",r.style.boxSizing="border-box",r.style.overflow="hidden",r.style.width="100%",r.style.padding="8px",r.style.paddingTop="14px",r.style.paddingBottom="0px",e||(r.style.display="none");var t=document.createElement("div");t.style.whiteSpace="nowrap",t.style.textOverflow="clip",t.style.paddingBottom="8px",t.style.cursor="default";var a=document.createElement("input");a.setAttribute("placeholder",mxResources.get("searchShapes")),a.setAttribute("type","text"),a.style.fontSize="12px",a.style.overflow="hidden",a.style.boxSizing="border-box",a.style.border="solid 1px #d5d5d5",a.style.borderRadius="4px",a.style.width="100%",a.style.outline="none",a.style.padding="6px",t.appendChild(a);var i,s=document.createElement("img");s.setAttribute("src",Sidebar.prototype.searchImage),s.setAttribute("title",mxResources.get("search")),s.style.position="relative",s.style.left="-18px",mxClient.IS_QUIRKS?(a.style.height="28px",s.style.top="-4px"):s.style.top="2px",s.style.background="url('"+this.editorUi.editor.transparentImage+"')",t.appendChild(s),r.appendChild(t);var l=document.createElement("center"),d=mxUtils.button(mxResources.get("moreResults"),function(){i()});d.style.display="none",d.style.lineHeight="normal",d.style.marginTop="4px",d.style.marginBottom="8px",l.style.paddingTop="4px",l.style.paddingBottom="8px",l.appendChild(d),r.appendChild(l);var c="",m=!1,u=!1,p=0,g=new Object,v=12,h=mxUtils.bind(this,function(){m=!1,this.currentSearch=null;for(var e=r.firstChild;null!=e;){var n=e.nextSibling;e!=t&&e!=l&&e.parentNode.removeChild(e),e=n}});i=mxUtils.bind(this,function(){if(v=4*Math.max(1,Math.floor(this.container.clientWidth/(this.thumbWidth+10))),this.hideTooltip(),""!=a.value){if(null!=l.parentNode&&(c!=a.value&&(h(),c=a.value,g=new Object,u=!1,p=0),!m&&!u)){d.setAttribute("disabled","true"),d.style.display="",d.style.cursor="wait",d.innerHTML=mxResources.get("loading")+"...",m=!0;var o=new Object;this.currentSearch=o,this.searchEntries(c,v,p,mxUtils.bind(this,function(e,n,t){if(this.currentSearch==o){e=null!=e?e:[],m=!1,p++,l.parentNode.removeChild(l);for(var a=0;a<e.length;a++){var i=e[a]();null==g[i.innerHTML]&&(g[i.innerHTML]="1",r.appendChild(e[a]()))}if(t?(d.removeAttribute("disabled"),d.innerHTML=mxResources.get("moreResults")):(d.innerHTML=mxResources.get("reset"),d.style.display="none",u=!0),d.style.cursor="",0==e.length&&1==p){var s=document.createElement("div");s.className="geTitle",s.style.backgroundColor="transparent",s.style.borderColor="transparent",s.style.color="gray",s.style.padding="0px",s.style.margin="0px 8px 0px 8px",s.style.paddingTop="6px",s.style.textAlign="center",s.style.cursor="default",mxUtils.write(s,mxResources.get("noResultsFor",[c])),r.appendChild(s)}r.appendChild(l)}}),mxUtils.bind(this,function(){d.style.cursor=""}))}}else h(),a.value="",c="",g=new Object,d.style.display="none",u=!1,a.focus()}),mxEvent.addListener(a,"keydown",mxUtils.bind(this,function(e){13==e.keyCode&&i()})),mxEvent.addListener(a,"focus",function(){a.style.paddingRight="",s.style.display="none"}),mxEvent.addListener(a,"blur",function(){a.style.paddingRight="20px",s.style.display=""}),a.style.paddingRight="20px",mxEvent.addListener(a,"keyup",mxUtils.bind(this,function(e){""==a.value?(u=!0,d.style.display="none"):a.value!=c?(d.style.display="none",u=!1):m||(d.style.display=u?"none":"")})),mxEvent.addListener(a,"mousedown",function(e){e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0}),mxEvent.addListener(a,"selectstart",function(e){e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0});var o=document.createElement("div");o.appendChild(r),this.container.appendChild(o),this.palettes.search=[n,o]},Sidebar.prototype.createTitle=function(e){var n=document.createElement("a");return n.setAttribute("href","javascript:void(0);"),n.setAttribute("title",mxResources.get("sidebarTooltip")),n.className="geTitle",mxUtils.write(n,e),n},Sidebar.prototype.createThumb=function(e,n,t,a,i,s,o,r,l){this.graph.labelsVisible=null==s||s;var d=mxClient.NO_FO;mxClient.NO_FO=Editor.prototype.originalNoForeignObject,this.graph.view.scaleAndTranslate(1,0,0),this.graph.addCells(e);var c=this.graph.getGraphBounds(),m=Math.floor(100*Math.min((n-2*this.thumbBorder)/c.width,(t-2*this.thumbBorder)/c.height))/100;this.graph.view.scaleAndTranslate(m,Math.floor((n-c.width*m)/2/m-c.x),Math.floor((t-c.height*m)/2/m-c.y));var u=null;if(this.graph.dialect!=mxConstants.DIALECT_SVG||mxClient.NO_FO?(u=this.graph.container.cloneNode(!1)).innerHTML=this.graph.container.innerHTML:u=this.graph.view.getCanvas().ownerSVGElement.cloneNode(!0),this.graph.getModel().clear(),mxClient.NO_FO=d,mxClient.IS_IE6&&(a.style.backgroundImage="url("+this.editorUi.editor.transparentImage+")"),u.style.position="relative",u.style.overflow="hidden",u.style.cursor="move",u.style.left=this.thumbBorder+"px",u.style.top=this.thumbBorder+"px",u.style.width=n+"px",u.style.height=t+"px",u.style.visibility="",u.style.minWidth="",u.style.minHeight="",a.appendChild(u),this.sidebarTitles&&null!=i&&0!=o){var p=mxClient.IS_QUIRKS?2*this.thumbPadding+2:0;a.style.height=this.thumbHeight+p+this.sidebarTitleSize+8+"px";var g=document.createElement("div");g.style.fontSize=this.sidebarTitleSize+"px",g.style.color="#303030",g.style.textAlign="center",g.style.whiteSpace="nowrap",mxClient.IS_IE&&(g.style.height=this.sidebarTitleSize+12+"px"),g.style.paddingTop="4px",mxUtils.write(g,i),a.appendChild(g)}return c},Sidebar.prototype.createItem=function(n,t,a,e,i,s,o){var r=document.createElement("a");r.setAttribute("href","javascript:void(0);"),r.className="geItem",r.style.overflow="hidden";var l=mxClient.IS_QUIRKS?8+2*this.thumbPadding:2*this.thumbBorder;r.style.width=this.thumbWidth+l+"px",r.style.height=this.thumbHeight+l+"px",r.style.padding=this.thumbPadding+"px",mxEvent.addListener(r,"click",function(e){mxEvent.consume(e)}),this.createThumb(n,this.thumbWidth,this.thumbHeight,r,t,a,e,i,s);var d=new mxRectangle(0,0,i,s);if(1<n.length||n[0].vertex){var c=this.createDragSource(r,this.createDropHandler(n,!0,o,d),this.createDragPreview(i,s),n,d);this.addClickHandler(r,c,n),c.isGuidesEnabled=mxUtils.bind(this,function(){return this.editorUi.editor.graph.graphHandler.guidesEnabled})}else if(null!=n[0]&&n[0].edge){c=this.createDragSource(r,this.createDropHandler(n,!1,o,d),this.createDragPreview(i,s),n,d);this.addClickHandler(r,c,n)}return mxClient.IS_IOS||mxEvent.addGestureListeners(r,null,mxUtils.bind(this,function(e){this.showTooltip(r,n,d.width,d.height,t,a)})),r},Sidebar.prototype.createDropHandler=function(g,v,h,f){return h=null==h||h,mxUtils.bind(this,function(e,n,t,a,i){if(e.isEnabled()){if(0<(g=e.getImportableCells(g)).length){e.stopEditing();var s=null!=t&&e.isValidDropTarget(t,g,n),o=null;if(null==t||s||(t=null),!e.isCellLocked(t||e.getDefaultParent())){e.model.beginUpdate();try{if(a=Math.round(a),i=Math.round(i),v&&e.isSplitTarget(t,g,n)){var r=e.cloneCells(g);e.splitEdge(t,r,null,a-f.width/2,i-f.height/2),o=r}else 0<g.length&&(o=e.importCells(g,a,i,t));if(null!=e.layoutManager){var l=e.layoutManager.getLayout(t);if(null!=l)for(var d=e.view.scale,c=e.view.translate,m=(a+c.x)*d,u=(i+c.y)*d,p=0;p<o.length;p++)l.moveCell(o[p],m,u)}h&&e.fireEvent(new mxEventObject("cellsInserted","cells",o))}finally{e.model.endUpdate()}null!=o&&0<o.length&&(e.scrollCellToVisible(o[0]),e.setSelectionCells(o))}}mxEvent.consume(n)}})},Sidebar.prototype.createDragPreview=function(e,n){var t=document.createElement("div");return t.style.border="1px dashed black",t.style.width=e+"px",t.style.height=n+"px",t},Sidebar.prototype.createDragSource=function(e,n,t){var a=mxUtils.makeDraggable(e,this.editorUi.editor.graph,n,t,0,0,this.editorUi.editor.graph.autoscroll,!0,!0);return a.getDropTarget=function(e,n,t){var a=mxDragSource.prototype.getDropTarget.apply(this,arguments);return e.isValidRoot(a)||(a=null),a},a},Sidebar.prototype.addClickHandler=function(e,a){var i=this.editorUi.editor.graph,s=null;mxEvent.addGestureListeners(e,function(e){s=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e))});var o=a.mouseUp;a.mouseUp=function(e){if(!mxEvent.isPopupTrigger(e)&&null==this.currentGraph&&null!=s){var n=i.tolerance;if(Math.abs(s.x-mxEvent.getClientX(e))<=n&&Math.abs(s.y-mxEvent.getClientY(e))<=n){var t=i.getGridSize();a.drop(i,e,null,t,t)}}o.apply(this,arguments),s=null}},Sidebar.prototype.createVertexTemplateEntry=function(e,n,t,a,i,s,o,r){return r=null!=r&&0<r.length?r:i.toLowerCase(),this.addEntry(r,mxUtils.bind(this,function(){return this.createVertexTemplate(e,n,t,a,i,s,o)}))},Sidebar.prototype.createXmlDocument=function(e,n,t,a){var i=mxUtils.createXmlDocument().createElement(e);return i.setAttribute("label",n),t.forEach(function(e,n){i.setAttribute(e,a[n]?a[n]:"")}),i},Sidebar.prototype.createVertexTemplate=function(e,n,t,a,i,s,o,r){var l=[],d=[];switch(a){case"answer":l=["timeout"],d=["0"];break;case"start":l=["answer"],d=["yes"];break;case"googleasr":l=["key","google_asr_language","timeout","intKey","beep"],d=["","it-IT","10","#","BEEP"];break;case"tildeasr":l=["uri","appid","appsecret","timeout","intKey","beep"],d=["wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE","","","10","#","BEEP"];break;case"ispeechasr":l=["key","model","ispeech_asr_language","timeout","intKey","beep"],d=["","","it-IT","10","#","BEEP"];break;case"playback":l=["file_id","opts"],d=["0"];break;case"background":l=["file_id","response","digit"],d=["0","5","1"];break;case"menu":l=["file_id","response","digit","retry","variable_id"],d=["0","5","1","1","0"];break;case"getdigits":l=["file_id","response","mindigit","maxdigit","retry","variable_id"],d=["0","5","1","10","1","0"];break;case"getsecretdigits":l=["file_id","response","mindigit","maxdigit","retry","hiddendigitsnum","hiddendigitspos","variable_id"],d=["0","5","1","10","1","0","first","0"];break;case"custom_app":l=["application","options"],d=["",""];break;case"set":l=["variable_id","variable_value"],d=["0",""];break;case"database":l=["odbc_id","query","variable_id"],d=["0","",""];break;case"noop":l=["output"],d=[];break;case"gotoc":l=["context","extension","priority"],d=["","","1"];break;case"system":l=["variable_id","command"],d=[];break;case"agi":l=["command","args"],d=[];break;case"gotoif":l=["condition"],d=[];break;case"gotoiftime":l=["interval_id"],d=["0"];break;case"vswitch":l=["variable_id"],d=["0"];break;case"saydigits":l=["digits","escape_digits"],d=["","#"];break;case"saynumber":l=["number","escape_digits"],d=["","#"];break;case"sayphonetic":l=["text","escape_digits"],d=["","#"];break;case"record":l=["file","recordingFormat","timeout","escape_digits"],d=["","wav","-1","#"];break;case"dial":l=["sip_id","timeout","opts","url"],d=["0","60"];break;case"ext_dial":l=["phone","trunk_name","timeout","opts","url"],d=["","-1","60"];break;case"google_cloud_tts":l=["apiKey","google_cloud_tts_text_type","text","languageCode","ssmlGender"],d=["","text","","en-US","FEMALE"];break;case"tts":l=["text","google_tts_language"],d=["","it"];break;case"ispeechtts":l=["text","key","ispeech_tts_language","speed","intKey"],d=["","","euritalianfemale","0","#"];break;case"lumenvoxtts":case"sestektts":l=["text","options"],d=["",""];break;case"lumenvoxasr":l=["grammar","options"],d=["",""];break;case"sestekasr":l=["grammar","options"],d=["/usr/local/unimrcp/data/grammar.xml",""];break;case"awspolly":l=["aws_access_key_id","aws_secret_access_key","aws_polly_region","aws_polly_voice","text","aws_text_type"],d=["","","eu-west-1","Amy","","text"];break;case"awslex":l=["aws_access_key_id","aws_secret_access_key","aws_lex_region","aws_bot_name","text"],d=["","","eu-west-1","",""];break;case"queue":l=["queue_id","opts","url","file_id","timeout","agi","macro","gosub","position"],d=["-1","xX","","","300"];break;case"voicemail":l=["mailbox","options"],d=["",""];break;case"subproject":l=["project_id"],d=["0"];break;case"math":l=["operation","variable_id"],d=["","0"];break;case"queuelog":l=["queuename","agent","queue_event","data1","data2","data3","data4","data5"],d=[];break;case"goal":l=["goalname"],d=[];break;case"callback":l=["name","lastName","phone","list_id","delay","callback_priority"],d=["{CALLERID(name)}","","{CALLERID(num)}","-1","5","2"];break;case"sendSMS":l=["sms_account_id","to","sms_text"],d=["0"];break;case"sendMail":l=["account_id","to","cc","bcc","subject","text"],d=["0"];break;case"sendFax":l=["account_id","to","choose_attachment","attachment_name","attachment_type","attachment_path"],d=["0"];break;case"login":case"unpause":case"logout":l=["findBy"],d=["internal"];break;case"pause":l=["findBy","pause_id"],d=["internal",""];break;case"dialogflow":l=["key","text","dialogflow_language"],d=["","","it"];break;case"sesteknda":l=["ndauth_url","username","password","ndassistant_url","text","project","ndagenerate_audio","custom_action","custom_action_data","ndaactivity_type"],d=["","","","","","",1,"","","message"];break;case"restapi":l=["url","method","timeout","computedVariables","rawHeaders","rawBody","variable_id"],d=["","GET","5","","","",""];break;case"mrcpsynth":l=["text","options"],d=["",""];break;case"mrcprecog":l=["grammar","options"],d=["",""];break;case"dialogflowV2":l=["dialogflowV2_project_id","client_email","private_key","dialogflowV2_language","text"],d=["","","","en",""];break;default:l=[],d=[]}var c=[new mxCell(this.createXmlDocument(a,i,l,d),new mxGeometry(0,0,n,t),e)];return c[0].vertex=!0,this.createVertexTemplateFromCells(c,n,t,i,s,o,r)},Sidebar.prototype.createVertexTemplateFromCells=function(e,n,t,a,i,s,o){return this.createItem(e,a,i,s,n,t,o)},Sidebar.prototype.createEdgeTemplate=function(e,n,t,a,i,s,o){var r=new mxCell(null!=a?a:"",new mxGeometry(0,0,n,t),e);return r.geometry.setTerminalPoint(new mxPoint(0,t),!0),r.geometry.setTerminalPoint(new mxPoint(n,0),!1),r.geometry.relative=!0,r.edge=!0,this.createEdgeTemplateFromCells([r],n,t,i,s,o)},Sidebar.prototype.createEdgeTemplateFromCells=function(e,n,t,a,i,s){return this.createItem(e,a,i,!0,n,t,s)},Sidebar.prototype.addPaletteFunctions=function(e,n,t,a){this.addPalette(e,n,t,mxUtils.bind(this,function(e){for(var n=0;n<a.length;n++)e.appendChild(a[n](e))}))},Sidebar.prototype.addPalette=function(e,n,t,a){var i=this.createTitle(n);this.container.appendChild(i);var s=document.createElement("div");s.className="geSidebar",mxClient.IS_POINTER&&(s.style.touchAction="none"),mxEvent.addListener(s,"mousemove",mxUtils.bind(this,function(e){mxEvent.getSource(e)==s?s.setAttribute("title",mxResources.get("sidebarTooltip")):s.removeAttribute("title")})),t?(a(s),a=null):s.style.display="none",this.addFoldingHandler(i,s,a);var o=document.createElement("div");return o.appendChild(s),this.container.appendChild(o),null!=e&&(this.palettes[e]=[i,o]),s},Sidebar.prototype.addFoldingHandler=function(t,a,i){var s=!1;(!mxClient.IS_IE||8<=document.documentMode)&&(t.style.backgroundImage="none"==a.style.display?"url('"+this.collapsedImage+"')":"url('"+this.expandedImage+"')"),t.style.backgroundRepeat="no-repeat",t.style.backgroundPosition="0% 50%",mxEvent.addListener(t,"click",mxUtils.bind(this,function(e){if("none"==a.style.display){if(s)a.style.display="block";else if(s=!0,null!=i){t.style.cursor="wait";var n=t.innerHTML;t.innerHTML=mxResources.get("loading")+"...",window.setTimeout(function(){var e=mxClient.NO_FO;mxClient.NO_FO=Editor.prototype.originalNoForeignObject,i(a),mxClient.NO_FO=e,a.style.display="block",t.style.cursor="",t.innerHTML=n},0)}else a.style.display="block";t.style.backgroundImage="url('"+this.expandedImage+"')"}else t.style.backgroundImage="url('"+this.collapsedImage+"')",a.style.display="none";mxEvent.consume(e)}))},Sidebar.prototype.addImagePalette=function(e,n,s,o,r,t,a){for(var l=[],d=0;d<r.length;d++)mxUtils.bind(this,function(e,n,t){if(null==t){var a=e.lastIndexOf("/"),i=e.lastIndexOf(".");t=e.substring(0<=a?a+1:0,0<=i?i:e.length).replace(/[-_]/g," ")}l.push(this.createVertexTemplateEntry("image;html=1;image="+s+e+o,this.defaultImageWidth,this.defaultImageHeight,r[d],n,!1,!0,this.filterTags(t)))})(r[d],null!=t?t[d]:null,null!=a?a[r[d]]:null);this.addPaletteFunctions(e,n,!1,l)},"undefined"!=typeof html4&&(html4.ATTRIBS["a::target"]=0),mxConstants.SHADOW_OPACITY=.25,mxConstants.SHADOWCOLOR="#000000",mxConstants.VML_SHADOWCOLOR="#d0d0d0",mxGraph.prototype.pageBreakColor="#c0c0c0",mxGraph.prototype.pageScale=1,function(){try{if(null!=navigator&&null!=navigator.language){var e=navigator.language.toLowerCase();mxGraph.prototype.pageFormat="en-us"===e||"en-ca"===e||"es-mx"===e?mxConstants.PAGE_FORMAT_LETTER_PORTRAIT:mxConstants.PAGE_FORMAT_A4_PORTRAIT}}catch(e){}}(),mxText.prototype.baseSpacingTop=5,mxText.prototype.baseSpacingBottom=1,mxGraphModel.prototype.ignoreRelativeEdgeParent=!1,mxGraphView.prototype.gridImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhCgAKAJEAAAAAAP///8zMzP///yH5BAEAAAMALAAAAAAKAAoAAAIJ1I6py+0Po2wFADs=":IMAGE_PATH+"/grid.gif",mxGraphView.prototype.gridSteps=4,mxGraphView.prototype.minGridSize=4,mxGraphView.prototype.gridColor="#e0e0e0",mxSvgCanvas2D.prototype.foAltText="[Not supported by viewer]",Graph=function(e,n,t,a){mxGraph.call(this,e,n,t,a),this.setConnectable(!0),this.setDropEnabled(!1),this.setPanning(!0),this.setTooltips(!mxClient.IS_TOUCH),this.setAllowLoops(!1),this.setMultigraph(!1),this.allowAutoPanning=!0,this.resetEdgesOnConnect=!1,this.constrainChildren=!1,this.connectionHandler.targetConnectImage=!0,this.setAllowDanglingEdges(!1),this.connectionHandler.setCreateTarget(!1),this.connectionHandler.isValidSource=function(){return mxConnectionHandler.prototype.isValidSource.apply(this,arguments)&&"2"!=urlParams.connect},this.alternateEdgeStyle="vertical",null==a&&this.loadStylesheet();var i=new mxRubberband(this);this.getRubberband=function(){return i},this.panningHandler.addListener(mxEvent.PAN_START,mxUtils.bind(this,function(){this.container.style.cursor="pointer"})),this.panningHandler.addListener(mxEvent.PAN_END,mxUtils.bind(this,function(){this.container.style.cursor="default"})),this.isHtmlLabel=function(e){var n=this.view.getState(e),t=null!=n?n.style:this.getCellStyle(e);return"1"==t.html||"wrap"==t.whiteSpace},this.cellRenderer.getLabelValue=function(e){var n=mxCellRenderer.prototype.getLabelValue.apply(this,arguments);return"wrap"==e.style.whiteSpace&&1!=e.style.html&&(n=mxUtils.htmlEntities(n,!1)),n},this.isCellLocked=function(e){return!1},this.connectionHandler.tapAndHoldTolerance=16;var s=this.connectionHandler.tapAndHold;this.connectionHandler.tapAndHold=function(e,n){null==n?this.graph.panningHandler.active||(i.start(e.getGraphX(),e.getGraphY()),this.graph.panningHandler.panningTrigger=!1):tapAndHoldStartsConnection?s.apply(this,arguments):this.graph.isCellSelected(n.cell)&&1<this.graph.getSelectionCount()&&this.graph.removeSelectionCell(n.cell)},touchStyle&&this.initTouch()},mxUtils.extend(Graph,mxGraph),Graph.prototype.minFitScale=null,Graph.prototype.maxFitScale=null,Graph.prototype.loadStylesheet=function(){var e=mxUtils.load(STYLE_PATH+"/default.xml").getDocumentElement();new mxCodec(e.ownerDocument).decode(e,this.getStylesheet())},Graph.prototype.flipEdge=function(e){if(null!=e){var n=this.view.getState(e),t=null!=n?n.style:this.getCellStyle(e);if(null!=t){var a=mxUtils.getValue(t,mxConstants.STYLE_ELBOW,mxConstants.ELBOW_HORIZONTAL)==mxConstants.ELBOW_HORIZONTAL?mxConstants.ELBOW_VERTICAL:mxConstants.ELBOW_HORIZONTAL;this.setCellStyles(mxConstants.STYLE_ELBOW,a,[e])}}},Graph.prototype.setDefaultEdge=function(e){if(null!=e&&this.getModel().isEdge(e)){var n=this.getModel().cloneCells([e])[0];null!=n.geometry&&(n.geometry.points=null);var t=n.getStyle();t=mxUtils.setStyle(t,mxConstants.STYLE_ENTRY_X,null),t=mxUtils.setStyle(t,mxConstants.STYLE_ENTRY_Y,null),t=mxUtils.setStyle(t,mxConstants.STYLE_EXIT_X,null),t=mxUtils.setStyle(t,mxConstants.STYLE_EXIT_Y,null),n.setStyle(t),this.connectionHandler.createEdgeState=function(e){return this.graph.view.createState(n)},this.connectionHandler.factoryMethod=function(){return this.graph.cloneCells([n])[0]}}},Graph.prototype.isCellFoldable=function(e){return this.foldingEnabled&&this.isSwimlane(e)},Graph.prototype.isValidRoot=function(e){return this.isSwimlane(e)},Graph.prototype.createGroupCell=function(){var e=mxGraph.prototype.createGroupCell.apply(this,arguments);return e.setStyle("group"),e},Graph.prototype.getTooltipForCell=function(e){var n="";return this.getModel().isVertex(e)?n+=mxResources.get("description_"+e.value.nodeName)||"":this.getModel().isEdge(e)&&(n=mxGraph.prototype.getTooltipForCell.apply(this,arguments)),n},Graph.prototype.convertValueToString=function(e){return null!=e.value&&"object"==typeof e.value?e.value.getAttribute("label"):mxGraph.prototype.convertValueToString.apply(this,arguments)},Graph.prototype.cellLabelChanged=function(e,n,t){if(null!=e.value&&"object"==typeof e.value){var a=e.value.cloneNode(!0);a.setAttribute("label",n),n=a}mxGraph.prototype.cellLabelChanged.apply(this,arguments)},Graph.prototype.setLinkForCell=function(e,n){var t=null;null!=e.value&&"object"==typeof e.value?t=e.value.cloneNode(!0):(t=mxUtils.createXmlDocument().createElement("UserObject")).setAttribute("label",e.value);null!=n&&0<n.length?t.setAttribute("link",n):t.removeAttribute("link"),this.model.setValue(e,t)},Graph.prototype.getLinkForCell=function(e){return null!=e.value&&"object"==typeof e.value?e.value.getAttribute("link"):null},Graph.prototype.initTouch=function(){this.connectionHandler.marker.isEnabled=function(){return null!=this.graph.connectionHandler.first},this.addListener(mxEvent.START_EDITING,function(e,n){this.panningHandler.hideMenu()});var s=!1,o=null;this.updateMouseEvent=function(e){if(mxGraph.prototype.updateMouseEvent.apply(this,arguments),null==e.getState()){var n=this.getCellAt(e.graphX,e.graphY);this.getModel().isEdge(n)&&(e.state=this.view.getState(n),null!=e.state&&null!=e.state.shape&&(this.container.style.cursor=e.state.shape.node.style.cursor))}null==e.getState()&&(this.container.style.cursor="default")},this.fireMouseEvent=function(e,n,t){if(e==mxEvent.MOUSE_DOWN)this.panningHandler.isMenuShowing()?(s=!1,o=null):(o=n.getCell(),s=null!=o?this.isCellSelected(o):this.isSelectionEmpty());else if(e==mxEvent.MOUSE_UP){if(s&&!this.isEditing()){if(!this.panningHandler.isMenuShowing()){var a=mxEvent.getClientX(n.getEvent()),i=mxEvent.getClientY(n.getEvent());this.panningHandler.popup(a+16,i,o,n.getEvent())}return s=!1,o=null,void n.consume()}s=!1,o=null}mxGraph.prototype.fireMouseEvent.apply(this,arguments),e==mxEvent.MOUSE_MOVE&&n.isConsumed()&&(s=!1,o=null)}},function(){if(mxVertexHandler.prototype.rotationEnabled=!0,mxText.prototype.baseSpacingTop=5,mxText.prototype.baseSpacingBottom=1,touchStyle){mxConstants.HANDLE_SIZE=16,mxConstants.LABEL_HANDLE_SIZE=7,mxClient.IS_TOUCH&&(mxVertexHandler.prototype.tolerance=4,mxEdgeHandler.prototype.tolerance=6,Graph.prototype.tolerance=14,Graph.prototype.gridSize=20,mxPanningHandler.prototype.selectOnPopup=!1,mxPanningHandler.prototype.useLeftButtonForPanning=!0,mxPanningHandler.prototype.isPanningTrigger=function(e){var n=e.getEvent();return this.useLeftButtonForPanning&&(this.ignoreCell||null==e.getState())||mxEvent.isControlDown(n)&&mxEvent.isShiftDown(n)||this.usePopupTrigger&&mxEvent.isPopupTrigger(n)});var t=mxGraphHandler.prototype.mouseDown;mxGraphHandler.prototype.mouseDown=function(e,n){t.apply(this,arguments),this.graph.isCellSelected(n.getCell())&&1<this.graph.getSelectionCount()&&(this.delayedSelection=!1)},Graph.prototype.createHandlers=function(e){this.tooltipHandler=new mxTooltipHandler(this),this.tooltipHandler.setEnabled(!1),this.selectionCellsHandler=new mxSelectionCellsHandler(this),this.panningHandler=new mxPanningHandler(this),this.panningHandler.panningEnabled=!1,this.connectionHandler=new mxConnectionHandler(this),this.connectionHandler.setEnabled(!1),this.graphHandler=new mxGraphHandler(this)},mxConnectionHandler.prototype.selectCells=function(e,n){touchStyle&&null!=n?this.graph.setSelectionCell(n):this.graph.setSelectionCell(e)};var a=mxGraph.prototype.dblClick;Graph.prototype.dblClick=function(e,n){if(null==n){var t=mxUtils.convertPoint(this.container,mxEvent.getClientX(e),mxEvent.getClientY(e));n=this.getCellAt(t.x,t.y)}a.call(this,e,n)};var e=new mxImage(IMAGE_PATH+"/touch-handle.png",16,16);mxVertexHandler.prototype.handleImage=e,mxEdgeHandler.prototype.handleImage=e,mxOutline.prototype.sizerImage=e,(new Image).src=e.src;var n=IMAGE_PATH+"/touch-connector.png",i=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){i.apply(this,arguments),showConnectorImg&&this.graph.connectionHandler.isEnabled()&&this.graph.isCellConnectable(this.state.cell)&&!this.graph.isValidRoot(this.state.cell)&&1==this.graph.getSelectionCount()&&(this.connectorImg=mxUtils.createImage(n),this.connectorImg.style.cursor="pointer",this.connectorImg.style.width="29px",this.connectorImg.style.height="29px",this.connectorImg.style.position="absolute",mxClient.IS_TOUCH||(this.connectorImg.setAttribute("title",mxResources.get("connect")),mxEvent.redirectMouseEvents(this.connectorImg,this.graph,this.state)),this.connectorImg.style.padding="2px",mxEvent.addGestureListeners(this.connectorImg,mxUtils.bind(this,function(e){this.graph.panningHandler.hideMenu();var n=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));this.graph.connectionHandler.start(this.state,n.x,n.y),this.graph.isMouseDown=!0,mxEvent.consume(e)})),this.graph.container.appendChild(this.connectorImg)),this.redrawTools()};var s=mxVertexHandler.prototype.redraw;mxVertexHandler.prototype.redraw=function(){s.apply(this),this.redrawTools()},mxVertexHandler.prototype.redrawTools=function(){null!=this.state&&null!=this.connectorImg&&(mxVertexHandler.prototype.singleSizer?(this.connectorImg.style.left=this.state.x+this.state.width-this.connectorImg.offsetWidth/2+"px",this.connectorImg.style.top=this.state.y-this.connectorImg.offsetHeight/2+"px"):(this.connectorImg.style.left=this.state.x+this.state.width+mxConstants.HANDLE_SIZE/2+4+"px",this.connectorImg.style.top=this.state.y+(this.state.height-this.connectorImg.offsetHeight)/2+"px"))};var o=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(e,n){o.apply(this,arguments),null!=this.connectorImg&&(this.connectorImg.parentNode.removeChild(this.connectorImg),this.connectorImg=null)},(new Image).src=n}else{var r=new mxImage(IMAGE_PATH+"/connector.png",15,15);if(mxConnectionHandler.prototype.connectImage=r,(new Image).src=r.src,"2"==urlParams.connect){r=new mxImage(IMAGE_PATH+"/connector.png",15,15),i=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){i.apply(this,arguments),showConnectorImg&&this.graph.connectionHandler.isEnabled()&&this.graph.isCellConnectable(this.state.cell)&&!this.graph.isValidRoot(this.state.cell)&&1==this.graph.getSelectionCount()&&(mxClient.IS_IE&&!mxClient.IS_SVG?(this.connectorImg=document.createElement("div"),this.connectorImg.style.backgroundImage="url("+r.src+")",this.connectorImg.style.backgroundPosition="center",this.connectorImg.style.backgroundRepeat="no-repeat",this.connectorImg.style.width=r.width+4+"px",this.connectorImg.style.height=r.height+4+"px",this.connectorImg.style.display=mxClient.IS_QUIRKS?"inline":"inline-block"):(this.connectorImg=mxUtils.createImage(r.src),this.connectorImg.style.width=r.width+"px",this.connectorImg.style.height=r.height+"px"),this.connectorImg.style.cursor="pointer",this.connectorImg.style.position="absolute",this.connectorImg.setAttribute("title",mxResources.get("connect")),mxEvent.redirectMouseEvents(this.connectorImg,this.graph,this.state),this.connectorImg.style.padding="2px",mxEvent.addListener(this.connectorImg,"mousedown",mxUtils.bind(this,function(e){this.graph.panningHandler.hideMenu();var n=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));this.graph.connectionHandler.start(this.state,n.x,n.y),this.graph.isMouseDown=!0,mxEvent.consume(e)})),this.graph.container.appendChild(this.connectorImg)),this.redrawTools()};s=mxVertexHandler.prototype.redraw;mxVertexHandler.prototype.redraw=function(){s.apply(this),this.redrawTools()},mxVertexHandler.prototype.redrawTools=function(){null!=this.state&&null!=this.connectorImg&&(mxVertexHandler.prototype.singleSizer?(this.connectorImg.style.left=this.state.x+this.state.width-this.connectorImg.offsetWidth/2+"px",this.connectorImg.style.top=this.state.y-this.connectorImg.offsetHeight/2+"px"):(this.connectorImg.style.left=this.state.x+this.state.width+mxConstants.HANDLE_SIZE/2+2+"px",this.connectorImg.style.top=this.state.y+(this.state.height-this.connectorImg.offsetHeight)/2+"px"))};o=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(e,n){o.apply(this,arguments),null!=this.connectorImg&&(this.connectorImg.parentNode.removeChild(this.connectorImg),this.connectorImg=null)}}}}(),Actions.prototype.init=function(){var n=this.editorUi,l=n.editor,d=l.graph;this.addAction("new",function(){n.projectDesignController.newProject()},CRUD_PERMISSIONS.canEdit),this.addAction("open",function(){n.projectDesignController.openProject()},CRUD_PERMISSIONS.canEdit),this.addAction("save",function(){n.projectDesignController.saveOrPublishProject(mxUtils.getPrettyXml(l.getGraphXml())),n.editor.modified=!1},CRUD_PERMISSIONS.canEdit,null,"Ctrl+S"),this.addAction("saveAs",function(){n.projectDesignController.saveProjectAs(mxUtils.getPrettyXml(l.getGraphXml()))},CRUD_PERMISSIONS.canEdit,null,"Ctrl+Shift+S"),this.addAction("publish",function(){n.editor.setStatus(""),null===n.validate()?(n.projectDesignController.saveOrPublishProject(mxUtils.getPrettyXml(l.getGraphXml()),!0),n.editor.modified=!1):(n.editor.setStatus("...Error publishing! Please check the project and try again!"),setTimeout(function(){n.editor.setStatus("")},3e3))},CRUD_PERMISSIONS.canEdit,null,"Ctrl+Shift+P"),this.addAction("variable",function(){n.projectDesignController.newVariable()},CRUD_PERMISSIONS.canEdit),this.addAction("import",function(){n.projectDesignController.importXML(function(e){l.setGraphXml(mxUtils.parseXml(e).documentElement)})},CRUD_PERMISSIONS.canEdit),this.addAction("export",function(){n.exportXML(mxUtils.getPrettyXml(l.getGraphXml()))},null,null,"Ctrl+E"),this.addAction("editFile",function(){n.projectDesignController.editXML(mxUtils.getPrettyXml(l.getGraphXml()),function(e){l.setGraphXml(mxUtils.parseXml(e).documentElement)})},CRUD_PERMISSIONS.canEdit),this.addAction("print",function(){mxUtils.printScreen(d)},null,"sprite-print","Ctrl+P"),this.addAction("preview",function(){mxUtils.show(d,null,10,10)}),this.addAction("undo",function(){l.undoManager.undo()},null,"sprite-undo","Ctrl+Z"),this.addAction("redo",function(){l.undoManager.redo()},null,"sprite-redo","Ctrl+Y"),this.addAction("cut",function(){mxClipboard.cut(d)},null,"sprite-cut","Ctrl+X"),this.addAction("copy",function(){mxClipboard.copy(d)},null,"sprite-copy","Ctrl+C"),this.addAction("paste",function(){mxClipboard.paste(d)},!1,"sprite-paste","Ctrl+V"),this.addAction("delete",function(){d.removeCells()},null,null,"Delete"),this.addAction("duplicate",function(){var e=d.gridSize;d.setSelectionCells(d.moveCells(d.getSelectionCells(),e,e,!0))},null,null,"Ctrl+D"),this.addAction("selectVertices",function(){d.selectVertices()},null,null,"Ctrl+Shift+V"),this.addAction("selectEdges",function(){d.selectEdges()},null,null,"Ctrl+Shift+E"),this.addAction("selectAll",function(){d.selectAll()},null,null,"Ctrl+A"),this.addAction("home",function(){d.home()},null,null,"Home"),this.addAction("exitGroup",function(){d.exitGroup()},null,null,"Page Up"),this.addAction("enterGroup",function(){d.enterGroup()},null,null,"Page Down"),this.addAction("expand",function(){d.foldCells(!1)},null,null,"Enter"),this.addAction("collapse",function(){d.foldCells(!0)},null,null,"Backspace"),this.addAction("toFront",function(){d.orderCells(!1)},null,null,"Ctrl+F"),this.addAction("toBack",function(){d.orderCells(!0)},null,null,"Ctrl+B"),this.addAction("group",function(){d.setSelectionCell(d.groupCells(null,0))},null,null,"Ctrl+G"),this.addAction("ungroup",function(){d.setSelectionCells(d.ungroupCells())},null,null,"Ctrl+U"),this.addAction("removeFromGroup",function(){d.removeCellsFromParent()}),this.addAction("editLink",function(){var e=d.getSelectionCell(),n=d.getLinkForCell(e);null==n&&(n=""),null!=(n=mxUtils.prompt(mxResources.get("enterValue"),n))&&d.setLinkForCell(e,n)}),this.addAction("openLink",function(){var e=d.getSelectionCell(),n=d.getLinkForCell(e);null!=n&&window.open(n)}),this.addAction("autosize",function(){var e=d.getSelectionCells();if(null!=e){d.getModel().beginUpdate();try{for(var n=0;n<e.length;n++){var t=e[n];d.getModel().getChildCount(t)?d.updateGroupBounds([t],20):d.updateCellSize(t)}}finally{d.getModel().endUpdate()}}}),this.addAction("wordWrap",function(){var e=d.getView().getState(d.getSelectionCell()),n="wrap";null!=e&&"wrap"==e.style[mxConstants.STYLE_WHITE_SPACE]&&(n=null),d.setCellStyles(mxConstants.STYLE_WHITE_SPACE,n)}),this.addAction("rotation",function(){var e="0",n=d.getView().getState(d.getSelectionCell());null!=n&&(e=n.style[mxConstants.STYLE_ROTATION]||e),null!=(e=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("rotation")+" 0-360)",e))&&d.setCellStyles(mxConstants.STYLE_ROTATION,e)}),this.addAction("tilt",function(){var e=d.getSelectionCells();if(null!=e){d.getModel().beginUpdate();try{for(var n=0;n<e.length;n++){var t=e[n];if(d.getModel().isVertex(t)&&0==d.getModel().getChildCount(t)){var a=d.getCellGeometry(t);if(null!=a){(a=a.clone()).x+=a.width/2-a.height/2,a.y+=a.height/2-a.width/2;var i=a.width;a.width=a.height,a.height=i,d.getModel().setGeometry(t,a);var s=d.view.getState(t);if(null!=s){var o=s.style[mxConstants.STYLE_DIRECTION]||"east";"east"==o?o="south":"south"==o?o="west":"west"==o?o="north":"north"==o&&(o="east"),d.setCellStyles(mxConstants.STYLE_DIRECTION,o,[t])}}}}}finally{d.getModel().endUpdate()}}},null,null,"Ctrl+R"),this.addAction("actualSize",function(){d.zoomTo(1)}),this.addAction("zoomIn",function(){d.zoomIn()},null,null,"Add"),this.addAction("zoomOut",function(){d.zoomOut()},null,null,"Subtract"),this.addAction("fitWindow",function(){d.fit()}),this.addAction("fitPage",mxUtils.bind(this,function(){d.pageVisible||this.get("pageView").funct();var e=d.pageFormat,n=d.pageScale,t=d.container.clientWidth-20,a=d.container.clientHeight-20,i=Math.floor(100*Math.min(t/e.width/n,a/e.height/n))/100;d.zoomTo(i),d.container.scrollLeft=Math.round(d.view.translate.x*i-Math.max(10,(d.container.clientWidth-e.width*n*i)/2)),d.container.scrollTop=Math.round(d.view.translate.y*i-Math.max(10,(d.container.clientHeight-e.height*n*i)/2))})),this.addAction("fitPageWidth",mxUtils.bind(this,function(){d.pageVisible||this.get("pageView").funct();var e=d.pageFormat,n=d.pageScale,t=d.container.clientWidth-20,a=Math.floor(100*t/e.width/n)/100;d.zoomTo(a),d.container.scrollLeft=Math.round(d.view.translate.x*a-Math.max(10,(d.container.clientWidth-e.width*n*a)/2)),d.container.scrollTop=Math.round(d.view.translate.y*a-Math.max(10,(d.container.clientHeight-e.height*n*a)/2))})),this.put("customZoom",new Action(mxResources.get("custom"),function(){var e=mxUtils.prompt(mxResources.get("enterValue")+" (%)",parseInt(100*d.getView().getScale()));null!=e&&0<e.length&&!isNaN(parseInt(e))&&d.zoomTo(parseInt(e)/100)}));var e=null;(e=this.addAction("grid",function(){d.setGridEnabled(!d.isGridEnabled()),l.updateGraphComponents()},null,null,"Ctrl+Shift+G")).setToggleAction(!0),e.setSelectedCallback(function(){return d.isGridEnabled()}),(e=this.addAction("guides",function(){d.graphHandler.guidesEnabled=!d.graphHandler.guidesEnabled})).setToggleAction(!0),e.setSelectedCallback(function(){return d.graphHandler.guidesEnabled}),(e=this.addAction("tooltips",function(){d.tooltipHandler.setEnabled(!d.tooltipHandler.isEnabled())})).setToggleAction(!0),e.setSelectedCallback(function(){return d.tooltipHandler.isEnabled()}),(e=this.addAction("navigation",function(){d.foldingEnabled=!d.foldingEnabled,d.view.revalidate()})).setToggleAction(!0),e.setSelectedCallback(function(){return d.foldingEnabled}),(e=this.addAction("scrollbars",function(){if(d.scrollbars=!d.scrollbars,l.updateGraphComponents(),d.scrollbars){var e=d.view.translate.x,n=d.view.translate.y;d.view.translate.x=0,d.view.translate.y=0,d.sizeDidChange(),d.container.scrollLeft-=Math.round(e*d.view.scale),d.container.scrollTop-=Math.round(n*d.view.scale)}else{var t=d.view.translate;d.view.setTranslate(t.x-d.container.scrollLeft/d.view.scale,t.y-d.container.scrollTop/d.view.scale),d.container.scrollLeft=0,d.container.scrollTop=0,d.sizeDidChange()}},!mxClient.IS_TOUCH)).setToggleAction(!0),e.setSelectedCallback(function(){return"auto"==d.container.style.overflow}),(e=this.addAction("pageView",mxUtils.bind(this,function(){d.pageVisible=!d.pageVisible,d.pageBreaksVisible=d.pageVisible,d.preferPageSize=d.pageBreaksVisible,d.view.validate(),d.sizeDidChange(),l.updateGraphComponents(),l.outline.update(),mxUtils.hasScrollbars(d.container)&&(d.pageVisible?(d.container.scrollLeft-=20,d.container.scrollTop-=20):(d.container.scrollLeft+=20,d.container.scrollTop+=20))}))).setToggleAction(!0),e.setSelectedCallback(function(){return d.pageVisible}),(e=this.addAction("connect",function(){d.setConnectable(!d.connectionHandler.isEnabled())},null,null,"Ctrl+Q")).setToggleAction(!0),e.setSelectedCallback(function(){return d.connectionHandler.isEnabled()}),(e=this.addAction("copyConnect",function(){d.connectionHandler.setCreateTarget(!d.connectionHandler.isCreateTarget())})).setToggleAction(!0),e.setSelectedCallback(function(){return d.connectionHandler.isCreateTarget()}),this.addAction("help",function(){window.open("https://wiki.xcallymotion.com/display/XMV/Cally+Square")}),this.put("about",new Action(mxResources.get("about")+" Cally Square",function(){window.open("http://callysquare.com/")},null,null,null));var t=mxUtils.bind(this,function(e,n){this.addAction(e,function(){d.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,n)})});t("bold",mxConstants.FONT_BOLD),t("italic",mxConstants.FONT_ITALIC),t("underline",mxConstants.FONT_UNDERLINE),this.addAction("shadow",function(){d.toggleCellStyles(mxConstants.STYLE_SHADOW)}),this.addAction("dashed",function(){d.toggleCellStyles(mxConstants.STYLE_DASHED)}),this.addAction("rounded",function(){d.toggleCellStyles(mxConstants.STYLE_ROUNDED)}),this.addAction("curved",function(){d.toggleCellStyles(mxConstants.STYLE_CURVED)}),this.addAction("style",function(){var e=d.getSelectionCells();if(null!=e&&0<e.length){var n=d.getModel(),t=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("style")+")",n.getStyle(e[0])||"");null!=t&&d.setCellStyle(t,e)}}),this.addAction("setAsDefaultEdge",function(){d.setDefaultEdge(d.getSelectionCell())}),this.addAction("addWaypoint",function(){var e=d.getSelectionCell();if(null!=e&&d.getModel().isEdge(e)){var n=l.graph.selectionCellsHandler.getHandler(e);if(n instanceof mxEdgeHandler){var t=d.view.translate,a=d.view.scale,i=t.x,s=t.y,o=d.getModel().getParent(e),r=d.getCellGeometry(o);d.getModel().isVertex(o)&&null!=r&&(i+=r.x,s+=r.y),n.addPointAt(n.state,d.panningHandler.triggerX/a-i,d.panningHandler.triggerY/a-s)}}}),this.addAction("removeWaypoint",function(){var e=n.actions.get("removeWaypoint");null!=e.handler&&e.handler.removePoint(e.handler.state,e.index)}),this.addAction("image",function(){var e="",n=d.getView().getState(d.getSelectionCell());if(null!=n&&(e=n.style[mxConstants.STYLE_IMAGE]||e),null!=(e=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("url")+")",e))&&0<e.length){var t=new Image;t.onload=function(){!function(e,n,t){var a=null,i=d.getSelectionCells();d.getModel().beginUpdate();try{if(0==i.length){var s=d.getGridSize();a=i=[d.insertVertex(d.getDefaultParent(),null,"",s,s,n,t)]}if(d.setCellStyles(mxConstants.STYLE_IMAGE,e,i),d.setCellStyles(mxConstants.STYLE_SHAPE,"image",i),1==d.getSelectionCount()&&null!=n&&null!=t){var o=i[0],r=d.getModel().getGeometry(o);null!=r&&((r=r.clone()).width=n,r.height=t,d.getModel().setGeometry(o,r))}}finally{d.getModel().endUpdate()}null!=a&&(d.setSelectionCells(a),d.scrollCellToVisible(a[0]))}(e,t.width,t.height)},t.onerror=function(){mxUtils.alert(mxResources.get("fileNotFound"))},t.src=e}})},Actions.prototype.addAction=function(e,n,t,a,i){return this.put(e,new Action(mxResources.get(e),n,t,a,i))},Actions.prototype.put=function(e,n){return this.actions[e]=n},Actions.prototype.get=function(e){return this.actions[e]},mxUtils.extend(Action,mxEventSource),Action.prototype.setEnabled=function(e){this.enabled!=e&&(this.enabled=e,this.fireEvent(new mxEventObject("stateChanged")))},Action.prototype.setToggleAction=function(e){this.toggleAction=e},Action.prototype.setSelectedCallback=function(e){this.selectedCallback=e},Action.prototype.isSelected=function(){return this.selectedCallback()},Menus=function(e){this.editorUi=e,this.menus=new Object,this.init(),(new Image).src=IMAGE_PATH+"/checkmark.gif"},Menus.prototype.init=function(){var i=this.editorUi.editor.graph;this.put("fontFamily",new Menu(mxUtils.bind(this,function(e,n){for(var t=["Helvetica","Verdana","Times New Roman","Garamond","Comic Sans MS","Courier New","Georgia","Lucida Console","Tahoma"],a=0;a<t.length;a++){this.styleChange(e,t[a],[mxConstants.STYLE_FONTFAMILY],[t[a]],null,n).firstChild.nextSibling.style.fontFamily=t[a]}e.addSeparator(n),this.promptChange(e,mxResources.get("custom"),"",mxConstants.DEFAULT_FONTFAMILY,mxConstants.STYLE_FONTFAMILY,n)}))),this.put("fontSize",new Menu(mxUtils.bind(this,function(e,n){for(var t=[6,8,9,10,11,12,14,18,24,36,48,72],a=0;a<t.length;a++)this.styleChange(e,t[a],[mxConstants.STYLE_FONTSIZE],[t[a]],null,n);e.addSeparator(n),this.promptChange(e,mxResources.get("custom"),"(pt)","12",mxConstants.STYLE_FONTSIZE,n)}))),this.put("linewidth",new Menu(mxUtils.bind(this,function(e,n){for(var t=[1,2,3,4,8,12,16,24],a=0;a<t.length;a++)this.styleChange(e,t[a]+"px",[mxConstants.STYLE_STROKEWIDTH],[t[a]],null,n);e.addSeparator(n),this.promptChange(e,mxResources.get("custom"),"(px)","1",mxConstants.STYLE_STROKEWIDTH,n)}))),this.put("line",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("straight"),[mxConstants.STYLE_EDGE],[null],null,n),this.styleChange(e,mxResources.get("entityRelation"),[mxConstants.STYLE_EDGE],["entityRelationEdgeStyle"],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("horizontal"),[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW],["elbowEdgeStyle","horizontal"],null,n),this.styleChange(e,mxResources.get("vertical"),[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW],["elbowEdgeStyle","vertical"],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("manual"),[mxConstants.STYLE_EDGE],["segmentEdgeStyle"],null,n),this.styleChange(e,mxResources.get("automatic"),[mxConstants.STYLE_EDGE],["orthogonalEdgeStyle"],null,n)}))),this.put("lineend",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("classic"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_CLASSIC],null,n),this.styleChange(e,mxResources.get("openArrow"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_OPEN],null,n),this.styleChange(e,mxResources.get("block"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_BLOCK],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("oval"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_OVAL],null,n),this.styleChange(e,mxResources.get("diamond"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_DIAMOND],null,n),this.styleChange(e,mxResources.get("diamondThin"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_DIAMOND_THIN],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("none"),[mxConstants.STYLE_ENDARROW],[mxConstants.NONE],null,n),e.addSeparator(n),e.addItem(mxResources.get("transparent"),null,function(){i.toggleCellStyles("endFill",!0)},n,null,!0),e.addSeparator(n),this.promptChange(e,mxResources.get("size"),"(px)",mxConstants.DEFAULT_MARKERSIZE,mxConstants.STYLE_ENDSIZE,n)}))),this.put("linestart",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("classic"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_CLASSIC],null,n),this.styleChange(e,mxResources.get("openArrow"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_OPEN],null,n),this.styleChange(e,mxResources.get("block"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_BLOCK],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("oval"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_OVAL],null,n),this.styleChange(e,mxResources.get("diamond"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_DIAMOND],null,n),this.styleChange(e,mxResources.get("diamondThin"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_DIAMOND_THIN],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("none"),[mxConstants.STYLE_STARTARROW],[mxConstants.NONE],null,n),e.addSeparator(n),e.addItem(mxResources.get("transparent"),null,function(){i.toggleCellStyles("startFill",!0)},n,null,!0),e.addSeparator(n),this.promptChange(e,mxResources.get("size"),"(px)",mxConstants.DEFAULT_MARKERSIZE,mxConstants.STYLE_STARTSIZE,n)}))),this.put("spacing",new Menu(mxUtils.bind(this,function(e,n){var t=this.editorUi.actions.get("shadow").enabled,a=this.get("line").enabled;(t||e.showDisabled)&&(this.promptChange(e,mxResources.get("top"),"(px)","0",mxConstants.STYLE_SPACING_TOP,n,t),this.promptChange(e,mxResources.get("right"),"(px)","0",mxConstants.STYLE_SPACING_RIGHT,n,t),this.promptChange(e,mxResources.get("bottom"),"(px)","0",mxConstants.STYLE_SPACING_BOTTOM,n,t),this.promptChange(e,mxResources.get("left"),"(px)","0",mxConstants.STYLE_SPACING_LEFT,n,t),e.addSeparator(n),this.promptChange(e,mxResources.get("global"),"(px)","0",mxConstants.STYLE_SPACING,n,t),this.promptChange(e,mxResources.get("perimeter"),"(px)","0",mxConstants.STYLE_PERIMETER_SPACING,n,t)),(a||e.showDisabled)&&(e.addSeparator(n),this.promptChange(e,mxResources.get("sourceSpacing"),"(px)","0",mxConstants.STYLE_SOURCE_PERIMETER_SPACING,n,a),this.promptChange(e,mxResources.get("targetSpacing"),"(px)","0",mxConstants.STYLE_TARGET_PERIMETER_SPACING,n,a))}))),this.put("format",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItem(e,"style",n)}))),this.put("text",new Menu(mxUtils.bind(this,function(e,n){var t=this.get("text").enabled;e.addSeparator(n),this.addSubmenu("fontFamily",e,n),this.addSubmenu("fontSize",e,n),this.addMenuItems(e,["-","bold","italic","underline","-"],n),this.addSubmenu("alignment",e,n),this.addMenuItem(e,"wordWrap",n),e.addSeparator(n),this.promptChange(e,mxResources.get("textOpacity"),"(%)","100",mxConstants.STYLE_TEXT_OPACITY,n,t),e.addItem(mxResources.get("hide"),null,function(){i.toggleCellStyles(mxConstants.STYLE_NOLABEL,!1)},n,null,t)}))),this.put("alignment",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("leftAlign"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_LEFT],null,n),this.styleChange(e,mxResources.get("center"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_CENTER],null,n),this.styleChange(e,mxResources.get("rightAlign"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_RIGHT],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("topAlign"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_TOP],null,n),this.styleChange(e,mxResources.get("middle"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_MIDDLE],null,n),this.styleChange(e,mxResources.get("bottomAlign"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_BOTTOM],null,n),e.addSeparator(n),this.addSubmenu("position",e,n),this.addSubmenu("spacing",e,n),e.addSeparator(n);var t=this.get("text").enabled;e.addItem(mxResources.get("vertical"),null,function(){i.toggleCellStyles(mxConstants.STYLE_HORIZONTAL,!0)},n,null,t)}))),this.put("position",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("left"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_LEFT,mxConstants.ALIGN_RIGHT],null,n),this.styleChange(e,mxResources.get("center"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_CENTER,mxConstants.ALIGN_CENTER],null,n),this.styleChange(e,mxResources.get("right"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_RIGHT,mxConstants.ALIGN_LEFT],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("top"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_TOP,mxConstants.ALIGN_BOTTOM],null,n),this.styleChange(e,mxResources.get("middle"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_MIDDLE,mxConstants.ALIGN_MIDDLE],null,n),this.styleChange(e,mxResources.get("bottom"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_BOTTOM,mxConstants.ALIGN_TOP],null,n)}))),this.put("direction",new Menu(mxUtils.bind(this,function(e,n){e.addItem(mxResources.get("flipH"),null,function(){i.toggleCellStyles(mxConstants.STYLE_FLIPH,!1)},n),e.addItem(mxResources.get("flipV"),null,function(){i.toggleCellStyles(mxConstants.STYLE_FLIPV,!1)},n),this.addMenuItems(e,["-","tilt","rotation"],n)}))),this.put("align",new Menu(mxUtils.bind(this,function(e,n){e.addItem(mxResources.get("leftAlign"),null,function(){i.alignCells(mxConstants.ALIGN_LEFT)},n),e.addItem(mxResources.get("center"),null,function(){i.alignCells(mxConstants.ALIGN_CENTER)},n),e.addItem(mxResources.get("rightAlign"),null,function(){i.alignCells(mxConstants.ALIGN_RIGHT)},n),e.addSeparator(n),e.addItem(mxResources.get("topAlign"),null,function(){i.alignCells(mxConstants.ALIGN_TOP)},n),e.addItem(mxResources.get("middle"),null,function(){i.alignCells(mxConstants.ALIGN_MIDDLE)},n),e.addItem(mxResources.get("bottomAlign"),null,function(){i.alignCells(mxConstants.ALIGN_BOTTOM)},n)}))),this.put("layout",new Menu(mxUtils.bind(this,function(e,n){e.addItem(mxResources.get("horizontalFlow"),null,mxUtils.bind(this,function(){var e=new mxHierarchicalLayout(i,mxConstants.DIRECTION_WEST);this.editorUi.executeLayout(e,!0,!0)}),n),e.addItem(mxResources.get("verticalFlow"),null,mxUtils.bind(this,function(){var e=new mxHierarchicalLayout(i,mxConstants.DIRECTION_NORTH);this.editorUi.executeLayout(e,!0,!0)}),n)}))),this.put("navigation",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["home","-","exitGroup","enterGroup","-","expand","collapse"],n)}))),this.put("arrange",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["toFront","toBack","-"],n),this.addSubmenu("layout",e,n),e.addSeparator(n),this.addMenuItems(e,["-","group","ungroup","removeFromGroup"],n)}))),this.put("view",new Menu(mxUtils.bind(this,function(n,t){this.addMenuItems(n,["actualSize"],t),n.addSeparator();for(var e=[.25,.5,.75,1,2,4],a=0;a<e.length;a++)!function(e){n.addItem(100*e+"%",null,function(){i.zoomTo(e)},t)}(e[a]);this.addMenuItems(n,["-","zoomIn","zoomOut","-","fitWindow","customZoom","-","fitPage","fitPageWidth"],t)}))),this.put("file",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["new","open","-","save","saveAs","publish","-","variable","-","import","export","-","editFile","description","-","print"],n)}))),this.put("edit",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["undo","redo","-","cut","copy","paste","delete","-","duplicate","-","selectVertices","selectEdges","selectAll"])}))),this.put("help",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["help","-","about"])})))},Menus.prototype.put=function(e,n){this.menus[e]=n},Menus.prototype.get=function(e){return this.menus[e]},Menus.prototype.addSubmenu=function(e,n,t){var a=this.get(e).enabled;if(n.showDisabled||a){var i=n.addItem(mxResources.get(e),null,null,t,null,a);this.addMenu(e,n,i)}},Menus.prototype.addMenu=function(e,n,t){var a=this.get(e);null!=a&&(n.showDisabled||a.enabled)&&this.get(e).execute(n,t)},Menus.prototype.styleChange=function(e,n,t,a,i,s){return e.addItem(n,null,mxUtils.bind(this,function(){var e=this.editorUi.editor.graph;e.getModel().beginUpdate();try{for(var n=0;n<t.length;n++)e.setCellStyles(t[n],a[n])}finally{e.getModel().endUpdate()}}),s,i)},Menus.prototype.promptChange=function(e,n,a,i,s,t,o){return e.addItem(n,null,mxUtils.bind(this,function(){var e=this.editorUi.editor.graph,n=i,t=e.getView().getState(e.getSelectionCell());null!=t&&(n=t.style[s]||n),null!=(n=mxUtils.prompt(mxResources.get("enterValue")+(0<a.length?" "+a:""),n))&&0<n.length&&e.setCellStyles(s,n)}),t,null,o)},Menus.prototype.addMenuItem=function(e,n,t){var a=this.editorUi.actions.get(n);if(null==a||!e.showDisabled&&!a.enabled)return null;var i=e.addItem(a.label,null,a.funct,t,null,a.enabled);return a.toggleAction&&a.isSelected()&&this.addCheckmark(i),this.addShortcut(i,a),i},Menus.prototype.addShortcut=function(e,n){if(null!=n.shortcut){var t=e.firstChild.nextSibling.nextSibling,a=document.createElement("span");a.style.color="gray",mxUtils.write(a,n.shortcut),t.appendChild(a)}},Menus.prototype.addCheckmark=function(e){var n=e.firstChild.nextSibling;n.style.backgroundImage="url("+IMAGE_PATH+"/checkmark.gif)",n.style.backgroundRepeat="no-repeat",n.style.backgroundPosition="2px 50%"},Menus.prototype.addMenuItems=function(e,n,t){for(var a=0;a<n.length;a++)"-"==n[a]?e.addSeparator(t):this.addMenuItem(e,n[a],t)},Menus.prototype.createPopupMenu=function(e,n,t){var a=this.editorUi.editor.graph;if(e.smartSeparators=!0,a.isSelectionEmpty()?this.addMenuItems(e,["undo","redo","-","paste","-"]):(this.addMenuItems(e,["delete","-","cut","copy","-","duplicate"]),1==a.getSelectionCount()&&a.getModel().isEdge(a.getSelectionCell())&&this.addMenuItems(e,["setAsDefaultEdge"]),e.addSeparator()),0<a.getSelectionCount()){if(this.addMenuItems(e,["toFront","toBack","-"]),a.getModel().isEdge(a.getSelectionCell())){var i=!1;if(null!=(n=a.getSelectionCell())&&a.getModel().isEdge(n)){var s=a.selectionCellsHandler.getHandler(n);if(s instanceof mxEdgeHandler&&null!=s.bends&&2<s.bends.length){var o=s.getHandleForEvent(new mxMouseEvent(t)),r=this.editorUi.actions.get("removeWaypoint");r.handler=s,i=0<(r.index=o)&&o<s.bends.length}}this.addMenuItems(e,["-",i?"removeWaypoint":"addWaypoint"])}else 1<a.getSelectionCount()&&(e.addSeparator(),this.addMenuItems(e,["group"]));if(e.addSeparator(),1==a.getSelectionCount())null!=a.getLinkForCell(a.getSelectionCell())&&this.addMenuItems(e,["openLink"])}else this.addMenuItems(e,["-","selectVertices","selectEdges","-","selectAll"])},Menus.prototype.createMenubar=function(e){var n=new Menubar(this.editorUi,e),t=[];t=CRUD_PERMISSIONS.canEdit?["file","edit","view","format","text","arrange","help"]:["file","view","help"];for(var a=0;a<t.length;a++)n.addMenu(mxResources.get(t[a]),this.get(t[a]).funct);return n},Menubar.prototype.hideMenu=function(){null!=this.currentMenu&&this.currentMenu.hideMenu()},Menubar.prototype.addMenu=function(e,n){var t=document.createElement("a");return t.setAttribute("href","javascript:void(0);"),t.className="geItem",mxUtils.write(t,e),this.addMenuHandler(t,n),this.container.appendChild(t),t},Menubar.prototype.getOffset=function(e){return{left:(e=e.getBoundingClientRect()).left+window.scrollX,top:e.top+window.scrollY}},Menubar.prototype.addMenuHandler=function(i,s){if(null!=s){var o=!0,n=mxUtils.bind(this,function(e){if(o&&null==i.enabled||i.enabled){this.editorUi.editor.graph.panningHandler.hideMenu();var n=new mxPopupMenu(s);n.div.className+=" geMenubarMenu",n.smartSeparators=!0,n.showDisabled=!0,n.autoExpand=!0,n.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(n,arguments),n.destroy(),this.currentMenu=null,this.currentElt=null});var t=this.getOffset(i).left,a=this.getOffset(i).top+i.offsetHeight;n.popup(t,a,null,e),this.currentMenu=n,this.currentElt=i}o=!0,mxEvent.consume(e)});mxEvent.addListener(i,"mousemove",mxUtils.bind(this,function(e){null!=this.currentMenu&&this.currentElt!=i&&(this.hideMenu(),n(e))})),mxEvent.addListener(i,"mousedown",mxUtils.bind(this,function(){o=this.currentElt!=i})),mxEvent.addListener(i,"click",n)}},mxUtils.extend(Menu,mxEventSource),Menu.prototype.setEnabled=function(e){this.enabled!=e&&(this.enabled=e,this.fireEvent(new mxEventObject("stateChanged")))},Menu.prototype.execute=function(e,n){this.funct(e,n)},Toolbar.prototype.init=function(){CRUD_PERMISSIONS.canEdit?this.addItems(["save","publish","-","print","undo","redo","-","copy","cut","paste","delete","-","duplicate","-","actualSize","zoomIn","zoomOut","-"]):this.addItems(["print","actualSize","zoomIn","zoomOut","-"])},Toolbar.prototype.hideMenu=function(){null!=this.currentMenu&&(this.currentMenu.hideMenu(),this.currentMenu.destroy(),this.currentMenu=null)},Toolbar.prototype.addMenu=function(e,n,t,a){var i=this.editorUi.menus.get(a),s=this.addMenuFunction(e,n,t,i.funct);return i.addListener("stateChanged",function(){s.setEnabled(i.enabled)}),s},Toolbar.prototype.addMenuFunction=function(e,n,t,a){var i=t?this.createLabel(e):this.createButton(e);return this.initElement(i,n),this.addMenuHandler(i,t,a),this.container.appendChild(i),i},Toolbar.prototype.addSeparator=function(){var e=document.createElement("div");return e.className="geSeparator",this.container.appendChild(e),e},Toolbar.prototype.addItems=function(e){for(var n=0;n<e.length;n++){var t=e[n];"-"==t?this.addSeparator():this.addItem("geSprite-"+t.toLowerCase(),t)}},Toolbar.prototype.addItem=function(e,n){var t=this.editorUi.actions.get(n),a=null;return null!=t&&((a=this.addButton(e,t.label,t.funct)).setEnabled(t.enabled),t.addListener("stateChanged",function(){a.setEnabled(t.enabled)})),a},Toolbar.prototype.addButton=function(e,n,t){var a=this.createButton(e);return this.initElement(a,n),this.addClickHandler(a,t),this.container.appendChild(a),a},Toolbar.prototype.addSelectionHandler=function(t){var a=this.editorUi.editor.graph,e=function(){for(var e=!a.isSelectionEmpty(),n=0;n<t.length;n++)t[n].setEnabled(e)};a.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},Toolbar.prototype.addEdgeSelectionHandler=function(a){var i=this.editorUi.editor.graph,e=function(){var e=!1;if(!i.isSelectionEmpty())for(var n=i.getSelectionCells(),t=0;t<n.length;t++)if(i.getModel().isEdge(n[t])){e=!0;break}for(t=0;t<a.length;t++)a[t].setEnabled(e)};i.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},Toolbar.prototype.initElement=function(e,n){e.setAttribute("tabindex","0"),null!=n&&e.setAttribute("title",n),this.addEnabledState(e)},Toolbar.prototype.addEnabledState=function(n){var t=n.className;n.setEnabled=function(e){n.enabled=e,n.className=e?t:t+" geDisabled"},n.setEnabled(!0)},Toolbar.prototype.addClickHandler=function(n,t){null!=t&&mxEvent.addListener(n,"click",function(e){n.enabled&&t(e),mxEvent.consume(e)})},Toolbar.prototype.createButton=function(e){var n=document.createElement("a");n.setAttribute("href","javascript:void(0);"),n.className="geButton";var t=document.createElement("div");return t.className="geSprite "+e,n.appendChild(t),n},Toolbar.prototype.createLabel=function(e,n){var t=document.createElement("a");return t.setAttribute("href","javascript:void(0);"),t.className="geLabel",mxUtils.write(t,e),t},Toolbar.prototype.addMenuHandler=function(n,t,a,i){if(null!=a){var s=this.editorUi.editor.graph,o=null;mxEvent.addListener(n,"click",mxUtils.bind(this,function(e){(null==n.enabled||n.enabled)&&(s.panningHandler.hideMenu(),(o=new mxPopupMenu(a)).div.className+=" geToolbarMenu",o.showDisabled=i,o.labels=t,o.autoExpand=!0,o.popup(n.offsetLeft,n.offsetTop+n.offsetHeight+34,null,e),this.currentMenu=o),mxEvent.consume(e)}))}},Dialog.prototype.close=function(){null!=this.onDialogClose&&(this.onDialogClose(),this.onDialogClose=null),this.container.parentNode.removeChild(this.container),this.bg.parentNode.removeChild(this.bg)},angular.module("motion").run(["$templateCache",function(e){"use strict";e.put("app/auth/services/hotdesk/dialog.html",'<md-dialog aria-label="Telephone">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="LOGIN.TELEPHONES">Telephones</span>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <md-select ng-model="vm.name" placeholder="Select a telephone">\n        <md-option value="{{telephone.name}}" ng-repeat="telephone in vm.telephones.rows">{{telephone.fullname}}</md-option>\n      </md-select>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.closeDialog(vm.name)" class="send-button md-accent md-raised" aria-label="call" ng-disabled="!vm.name">\n        <span translate="LOGIN.SELECT">SELECT</span>\n      </md-button>\n      \x3c!-- <md-button ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="cancel">\n                <span translate="LOGIN.CANCEL">Cancel</span>\n            </md-button> --\x3e\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/dialogs/advanced-search/dialog.html",'<md-dialog class="advanced-search-dialog" aria-label="Advanced search" flex="70" ng-init="vm.onInit()">\n  <form ng-cloak>\n    <md-toolbar class="advanced-search-dialog-header" ng-class="{{ \'vm.toolbarColor\' }} + \'-bg\'">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="DASHBOARDS.ADVANCED_SEARCH"></span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.minimize()">\n            <md-icon class="no-margin" md-font-icon="icon-window-minimize" aria-label="Minimize dialog"></md-icon>\n          </md-button>\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.close()">\n            <md-icon class="no-margin" md-font-icon="icon-window-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <ms-advanced-search options="vm.searchOptions" clear-filter="vm.clearConditions()"></ms-advanced-search>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button class="md-primary md-raised" aria-label="Clear" ng-disabled="vm.searchOptions.conditions.length === 0" translate="DASHBOARDS.CLEAR" translate-attr-aria-label="DASHBOARDS.CLEAR" ng-click="vm.clearConditions()"></md-button>\n      <md-button class="md-primary md-accent md-raised" aria-label="Apply" ng-disabled="vm.searchOptions.conditions.length === 0" translate="DASHBOARDS.APPLY" translate-attr-aria-label="DASHBOARDS.APPLY" ng-click="vm.applyFilter()"></md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/directives/ms-advanced-search/ms-advanced-search.html",'<div layout="column" class="advanced-search-container" flex>\n  <div layout-margin>\n    <md-radio-group ng-model="vm.options.matchType" class="md-primary" layout="row">\n      <md-radio-button value="$and" class="md-primary">{{ \'DASHBOARDS.MEET_ALL_CONDITIONS\' | translate }}\n      </md-radio-button>\n      <md-radio-button value="$or">{{ \'DASHBOARDS.MEET_ANY_CONDITIONS\' | translate }}</md-radio-button>\n    </md-radio-group>\n  </div>\n\n  \x3c!-- ACTIVE CONDITIONS --\x3e\n  <div layout="row" ng-if="vm.options.conditions.length > 0" class="advanced-search-conditions">\n    <md-list>\n      <md-list-item>\n        <md-chips ng-model="vm.options.conditions" class="advanced-search-chips" readonly="true" md-removable="true" md-on-remove="vm.removeCondition()">\n          <md-chip-template ms-chip-color="{{ $chip.style }}">\n            <md-menu md-offset="50 0" ng-class="{\'no-click\': vm.pendingCondition}">\n              <span>\n                <p class="filter-text">{{ $chip.name }}</p>\n                <em ng-show="$chip.operator" class="text-lowercase">{{ $chip.operator }}</em>\n                <strong>{{ $chip.displayValue }}</strong>\n                <em ng-show="$chip.displayEndValue" class="text-lowercase">{{ \'DASHBOARDS.AND\' | translate }}</em>\n                <strong>{{ $chip.displayEndValue }}</strong>\n              </span>\n              <md-menu-content width=2 class="md-dense">\n                <md-menu-item ng-hide="$chip.disabled">\n                  <md-button ng-click="vm.editCondition($chip)">Edit\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.setConditionStatus($chip)">\n                    {{ $chip.disabled ? \'Enable\' : \'Disable\' }}\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </md-chip-template>\n          <button type="button" md-chip-remove class="md-primary remove-filter">\n            <md-icon md-font-icon="icon-cancel" aria-label="Remove Filter"></md-icon>\n          </button>\n        </md-chips>\n      </md-list-item>\n    </md-list>\n  </div>\n\n  \x3c!-- FILTERS --\x3e\n  <div layout="row">\n    <div layout="row" class="advanced-search-bar" layout-margin flex>\n      \x3c!-- FIELD --\x3e\n      <md-input-container flex="35">\n        <md-icon md-font-icon="icon-filter-variant"></md-icon>\n        <md-select class="font-size-12" ng-model="vm.selectedField" ng-change="vm.onFieldChange()" placeholder="{{ \'DASHBOARDS.SELECT_FIELD\' | translate }}" aria-label="Field">\n          <md-option ng-value="field" ng-repeat="field in vm.options.fields">{{ field.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- OPERATOR --\x3e\n      <md-input-container flex="30">\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-select class="font-size-12" ng-model="vm.selectedOperator" ng-change="vm.onOperatorChange(oldValue)" ng-focus="oldValue=vm.selectedOperator" md-selected-text="vm.selectedOperator ? (\'DASHBOARDS.\' + vm.selectedOperator.translate | translate) : (\'DASHBOARDS.SELECT_OPERATOR\' | translate)" ng-disabled="!vm.selectedField" aria-label="Operator">\n          <md-option ng-value="operator" ng-repeat="operator in vm.availableOperators" ng-selected="vm.autoSelectOperator">\n            <div layout="row" class="operators-list">\n              <span class="operator-symbol">\n                {{ operator.symbol }}\n              </span>\n              <span>\n                {{ \'DASHBOARDS.\' + operator.translate | translate }}\n              </span>\n            </div>\n          </md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TEXT INPUT --\x3e\n      <md-input-container ng-if="!vm.selectedField.type || vm.selectedField.type === \'text\'" class="no-errors" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <input type="text" aria-label="Value" ng-model="vm.value" ng-change="vm.onValueChange()" ng-disabled="!vm.selectedField" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}">\n      </md-input-container>\n      \x3c!-- NUMERIC INPUT --\x3e\n      <div ng-if="vm.selectedField.type === \'number\'" flex layout="row" layout-margin class="no-margin">\n        <md-input-container class="no-errors" flex>\n          <md-icon md-font-icon="icon-numeric"></md-icon>\n          <input type="number" aria-label="Value" ng-model="vm.value" ng-change="vm.onValueChange()" ng-disabled="!vm.selectedField" min="0" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ vm.selectedOperator.type === \'$between\' ? \'DASHBOARDS.STARTING_VALUE\' : \'DASHBOARDS.VALUE\' | translate }}">\n        </md-input-container>\n        <md-input-container class="no-errors" ng-if="vm.selectedOperator.type === \'$between\'" ng-class="{\'md-input-invalid\': !vm.isValidRange}" flex>\n          <md-icon md-font-icon=" icon-numeric">\n          </md-icon>\n          <input class="md-input" type="number" aria-label="Value" ng-model="vm.endRangeValue" ng-change="vm.checkRange()" ng-disabled="!vm.value" min="vm.value" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.ENDING_VALUE\' | translate }}">\n          <div ng-if="!vm.isValidRange" class="md-input-message-animation md-input-messages-animation">\n            {{ (\'DASHBOARDS.VALUE_RANGE_CHECK\' | translate) + \' \' + vm.value }}\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- SELECT --\x3e\n      <md-input-container ng-if="vm.selectedField.type === \'select\'" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-select class="font-size-12" ng-model="vm.value" md-on-open="vm.getValues()" ng-change="vm.onValueChange()" ng-model-options="{trackBy: \'$value.id\'}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}" aria-label="Value">\n          <md-option ng-value="item" ng-repeat="item in vm.selectedField.values">{{item.name}}\n          </md-option>\n        </md-select>\n      </md-input-container>\n      \x3c!-- MULTISELECT --\x3e\n      <md-input-container ng-if="vm.selectedField.type === \'multiselect\'" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-select class="font-size-12" multiple ng-model="vm.value" md-on-open="vm.getValues()" ng-change="vm.onValueChange()" ng-model-options="{trackBy: \'$value.id\'}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}" aria-label="Value">\n          <md-option ng-value="item" ng-repeat="item in vm.selectedField.values">{{item.name}}\n          </md-option>\n        </md-select>\n      </md-input-container>\n      \x3c!-- DATE INPUT --\x3e\n      <div ng-if="vm.selectedField.type === \'date\'" flex layout="row">\n        <mdp-date-picker mdp-open-on-click ng-model="vm.value" ng-change="vm.onValueChange()" mdp-max-date="vm.maxDateRange" mdp-placeholder="{{ vm.selectedOperator.type === \'$between\' ? \'DASHBOARDS.STARTING_DATE\' : \'DASHBOARDS.VALUE\' | translate }}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" flex>\n        </mdp-date-picker>\n        <mdp-date-picker mdp-open-on-click ng-if="vm.selectedOperator.type === \'$between\'" ng-change="vm.checkRange()" ng-model="vm.endRangeValue" mdp-min-date="vm.minDateRange" mdp-disabled="!vm.value" mdp-placeholder="{{ \'DASHBOARDS.ENDING_DATE\' | translate }}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" flex>\n        </mdp-date-picker>\n      </div>\n      \x3c!-- AUTOCOMPLETE --\x3e\n      <div layout="row" layout-align="start start" ng-if="vm.selectedField.type === \'autocomplete\' && vm.selectedOperator.type != \'$substring\'" class=" autocomplete-input" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-autocomplete md-selected-item="vm.value" md-selected-item-change="vm.onValueChange()" md-items="item in vm.getValues()" md-search-text="vm.searchText" md-item-text="item.displayValue" md-min-length="4" md-no-cache="true" md-floating-label="{{ \'DASHBOARDS.VALUE\' | translate }}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" flex>\n          <md-item-template>\n            <span md-highlight-text="vm.searchText" md-highlight-flags="i">{{item.displayValue}}</span>\n          </md-item-template>\n        </md-autocomplete>\n      </div>\n      <md-input-container ng-if="vm.selectedField.type === \'autocomplete\' && vm.selectedOperator.type === \'$substring\'" class="no-errors" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <input type="text" aria-label="Value" ng-model="vm.value" ng-change="vm.onValueChange()" ng-disabled="!vm.selectedField" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}">\n      </md-input-container>\n    </div>\n    <md-button class="md-fab md-mini md-primary mt-20" ng-if="!vm.pendingCondition" ng-disabled="!vm.isValidCondition" aria-label="Add filter" ng-click="vm.addCondition()" translate-attr-aria-label="DASHBOARDS.ADD">\n      <md-icon md-font-icon="icon-plus"></md-icon>\n    </md-button>\n    <md-button class="md-fab md-mini mt-20" ng-if="vm.pendingCondition" ng-disabled="!vm.isValidCondition" aria-label="Update filter" ng-click="vm.updateCondition()" translate-attr-aria-label="DASHBOARDS.UPDATE">\n      <md-icon md-font-icon="icon-check"></md-icon>\n    </md-button>\n    <md-button class="md-fab md-mini md-primary mt-20" ng-if="vm.pendingCondition" aria-label="Cancel filter update" ng-click="vm.cancelUpdateCondition()" translate-attr-aria-label="DASHBOARDS.CANCEL">\n      <md-icon md-font-icon="icon-close"></md-icon>\n    </md-button>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-1/template-1.html",'<div class="template-1">\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="content pv-24 ph-16">\n    <div class="title h1" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="subtitle secondary-text" ng-if="card.subtitle">\n      {{card.subtitle}}\n    </div>\n\n    <div class="text pt-16" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-10/template-10.html",'<div class="template-10 p-16">\n  <div class="pb-16" layout="row" layout-align="space-between center">\n    <div class="info">\n      <div class="title secondary-text" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle h2" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n    </div>\n\n    <div class="media ml-16">\n      <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n    </div>\n  </div>\n\n  <div class="text">\n    {{card.text}}\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-2/template-2.html",'<div class="template-2">\n  <div class="header p-16" layout="row" layout-align="start center">\n    <div ng-if="card.avatar">\n      <img class="avatar mr-16" ng-src="{{card.avatar.src}}" alt="{{card.avatar.alt}}">\n    </div>\n\n    <div class="info">\n      <div class="title" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n    </div>\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="text p-16" ng-if="card.text">\n    {{card.text}}\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-3/template-3.html",'<div class="template-3 p-16 teal-bg white-fg" layout="row" layout-align="space-between">\n  <div layout="column" layout-align="space-between">\n    <div class="info">\n      <div class="title h1" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle h3 secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n    </div>\n\n    <div class="cta">\n      <md-button class="m-0">{{card.cta}}</md-button>\n    </div>\n  </div>\n\n  <div class="media pl-16">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-4/template-4.html",'<div class="template-4">\n  <div class="info white-fg ph-16 pv-24">\n    <div class="title h1" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="text" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-5/template-5.html",'<div class="template-5 p-16" layout="row" layout-align="space-between start">\n  <div class="info">\n    <div class="title secondary-text" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="event h2" ng-if="card.event">\n      {{card.event}}\n    </div>\n  </div>\n\n  <div class="media ml-16">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-6/template-6.html",'<div class="template-6">\n  <div class="content pv-24 ph-16">\n    <div class="subtitle secondary-text" ng-if="card.subtitle">\n      {{card.subtitle}}\n    </div>\n\n    <div class="title h2" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="text pt-8" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-7/template-7.html",'<div class="template-7" layout="row" layout-align="space-between">\n  <div class="info" layout="column" layout-align="space-between" layout-fill flex>\n    <div class="p-16">\n      <div class="title h1" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle h4 secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n\n      <div class="text h4 pt-8" ng-if="card.text">\n        {{card.text}}\n      </div>\n    </div>\n\n    <div>\n      <md-divider></md-divider>\n      <div class="p-8" layout="row">\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n      </div>\n    </div>\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-8/template-8.html",'<div class="template-8">\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="content pv-24 ph-16">\n    <div class="title h1" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="subtitle secondary-text" ng-if="card.subtitle">\n      {{card.subtitle}}\n    </div>\n\n    <div class="buttons pt-16">\n      <md-button class="m-0">{{card.button1}}</md-button>\n      <md-button class="m-0 md-accent">{{card.button2}}</md-button>\n    </div>\n\n    <div class="text pt-16" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-9/template-9.html",'<div class="template-9">\n  <div class="header p-16" layout="row" layout-align="start center">\n    <div ng-if="card.avatar">\n      <img class="avatar mr-16" ng-src="{{card.avatar.src}}" alt="{{card.avatar.alt}}">\n    </div>\n\n    <div class="info">\n      <div class="title" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n\n    </div>\n  </div>\n\n  <div class="text ph-16 pb-16" ng-if="card.text">\n    {{card.text}}\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="buttons m-8">\n    <md-button class="md-icon-button mr-16" aria-label="Favorite">\n      <md-icon md-font-icon="icon-heart-outline" class="s24"></md-icon>\n    </md-button>\n    <md-button class="md-icon-button" aria-label="Share">\n      <md-icon md-font-icon="icon-share" class="s24"></md-icon>\n    </md-button>\n  </div>\n\n</div>'),e.put("app/core/directives/ms-click-to-call/ms-click-to-call.html",'<section ng-if="type !== \'button\'">\n  <span ng-if="!showMenu()" privacy="{{ privacy }}" ng-cloak>{{target}}</span>\n  <md-menu ng-if="showMenu()">\n    <a aria-label="Target" ng-click="$mdOpenMenu($event)">\n      <span ng-if="prefix" privacy="{{ privacy }}" ng-cloak>{{prefix}}-</span>\n      <span privacy="{{ privacy }}" ng-cloak>{{target}}</span>\n    </a>\n    <md-menu-content width="2">\n      <md-menu-item>\n        <md-button ng-click="call(prefix ? prefix + target : target)">\n          {{\'DASHBOARDS.CALL_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n      <md-menu-item>\n        <md-button ng-click="transfer(prefix ? prefix + target : target)">\n          {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n    </md-menu-content>\n  </md-menu>\n</section>\n<section ng-if="type === \'button\'">\n  <md-button ng-if="!showMenu()" ng-disabled="true" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW CALL" aria-label="NEW CALL">\n    <md-icon md-font-icon="icon-phone"></md-icon>\n  </md-button>\n  <md-menu ng-if="showMenu()">\n    <md-button class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW CALL" ng-click="$mdOpenMenu($event)" aria-label="NEW CALL">\n      <md-icon md-font-icon="icon-phone"></md-icon>\n    </md-button>\n    <md-menu-content width="2">\n      <md-menu-item>\n        <md-button ng-click="call(prefix ? prefix + target : target)">\n          {{\'DASHBOARDS.CALL_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n      <md-menu-item>\n        <md-button ng-click="transfer(target)">\n          {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n    </md-menu-content>\n  </md-menu>\n</section>'),e.put("app/core/directives/ms-dual-multiselect/ms-dual-multiselect.html",'<div ng-cloak layout-gt-sm="row" layout="column">\n  <div flex-gt-sm="50" flex="45">\n    <md-input-container class="md-icon-float md-block margin-0">\n      <md-icon md-font-icon="icon-magnify" aria-label="swap"></md-icon>\n      <input ng-model="query" type="text" placeholder="{{ \'STAFF.PERMISSIONS_PLACEHOLDER_SEARCH\' | translate }}">\n    </md-input-container>\n    <md-content class="border h-300">\n      <md-list class="md-dense no-padding" layout-fill layout-align="center center">\n        <md-list-item class="md-3-line" ng-class="{\'read-only-mode\': vm.readOnly || vm.addDisabled}" ng-disabled="vm.readOnly || vm.addDisabled" ng-repeat="item in availableItems = (vm.options.items | filter: query) | orderBy: vm.options.orderBy" ng-click="vm.canTransfer(item, vm.options, false)">\n          <div class="md-list-item-text" layout="column">\n            <h3 ng-if="vm.options.line1">{{vm.getLine(item, vm.options.line1)}}</h3>\n            <h4 ng-if="vm.options.line2">{{vm.getLine(item, vm.options.line2)}}</h4>\n            <p ng-if="vm.options.line3">{{vm.getLine(item, vm.options.line3)}}</p>\n            <p class="ms-dual-multiselect-line-xs" ng-if="vm.options.line4">{{vm.getLine(item, vm.options.line4)}}\n            </p>\n          </div>\n          <md-icon ng-hide="vm.readOnly && !vm.addDisabled" ng-class="{\'add-disabled\': vm.addDisabled}" md-font-icon="icon-arrow-right-bold" aria-label="swap">\n          </md-icon>\n          <md-divider></md-divider>\n        </md-list-item>\n      </md-list>\n    </md-content>\n    <div class="margin-10" layout="row">\n      <span class="h4" flex>{{vm.options.labelAll || \'All Items\'}} ({{availableItems.length}})</span>\n      <md-icon ng-hide="vm.options.showSelectAndDeselectAll === false || vm.readOnly" ng-class="{\'add-disabled\': vm.addDisabled}" ng-disabled="vm.addDisabled" md-font-icon="icon-chevron-double-right" aria-label="swap" ng-click="vm.transfer(vm.options.items, vm.options.selectedItems, -1, false)"></md-icon>\n    </div>\n  </div>\n\n  <div flex="10" layout="row" layout-align="center center">\n    <md-icon md-font-icon="icon-swap-horizontal" aria-label="swap"></md-icon>\n  </div>\n\n  <div flex-gt-sm="50" flex="45">\n    <md-input-container class="md-icon-float md-block margin-0">\n      <md-icon md-font-icon="icon-magnify" aria-label="swap"></md-icon>\n      <input ng-model="selectedQuery" type="text" placeholder="{{ \'STAFF.PERMISSIONS_PLACEHOLDER_SEARCH\' | translate }}">\n    </md-input-container>\n    <md-content class="border h-300">\n      <md-list class="md-dense no-padding" layout-fill layout-align="center center">\n        <md-list-item class="md-3-line" ng-class="{\'read-only-mode\': vm.readOnly || !item.isValid}" ng-disabled="vm.readOnly" ng-repeat="item in associatedItems = (vm.options.selectedItems | filter: selectedQuery) | orderBy: vm.options.orderBy" ng-click="vm.canTransfer(item, vm.options, true)">\n          <md-icon ng-class="{\'hidden\': vm.readOnly || !item.isValid}" md-font-icon="icon-arrow-left-bold" aria-label="swap"></md-icon>\n          <div class="md-list-item-text" layout="column">\n            <h3 ng-if="vm.options.line1">{{vm.getLine(item, vm.options.line1)}}</h3>\n            <h4 ng-if="vm.options.line2">{{vm.getLine(item, vm.options.line2)}}</h4>\n            <p ng-if="vm.options.line3">{{vm.getLine(item, vm.options.line3)}}</p>\n            <p class="ms-dual-multiselect-line-xs" ng-if="vm.options.line4">{{vm.getLine(item, vm.options.line4)}}\n            </p>\n          </div>\n          <md-divider></md-divider>\n        </md-list-item>\n      </md-list>\n    </md-content>\n    <div class="margin-10" layout="row">\n      <md-icon ng-hide="vm.options.showSelectAndDeselectAll === false || vm.readOnly" md-font-icon="icon-chevron-double-left" aria-label="swap" ng-click="vm.transfer(vm.options.selectedItems, vm.options.items, -1, true)"></md-icon>\n      <span class="h4 text-right" flex>{{vm.options.labelSelected || \'Selected Items\'}}\n        ({{associatedItems.length}})</span>\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-font-family/ms-font-family.html",'<md-select ng-model="ngModel" class="no-margin">\n  <md-option ng-repeat="font in fonts" ng-value="font.value"><span ng-style="{\'font-family\': font.value}">{{font.option}}</span>\n  </md-option>\n</md-select>'),e.put("app/core/directives/ms-info-bar/ms-info-bar.html",'<div id="ms-info-bar" layout="row" layout-align="start center" flex>\n  <div id="ms-info-bar-message" ng-transclude flex></div>\n  <md-button id="ms-info-bar-close" class="md-icon-button" aria-label="Close" ng-click="removeInfoBar()">\n    <md-icon md-font-icon="icon-close s20"></md-icon>\n  </md-button>\n</div>'),e.put("app/core/directives/ms-material-color-picker/ms-material-color-picker.html",'<md-menu md-position-mode="target-right target">\n\n  <div ng-click="$mdOpenMenu($event)">\n    <ms-color-picker-button>\n      <md-button aria-label="Row Color" md-menu-origin ng-click="$mdOpenMenu($event)" ng-class="vm.selectedColor.class">\n\n        <span ng-show="vm.selectedColor.palette">\n          {{vm.selectedColor.palette}} {{vm.selectedColor.hue}}\n        </span>\n        <span ng-show="!vm.selectedColor.palette">\n          Select Color\n        </span>\n      </md-button>\n    </ms-color-picker-button>\n  </div>\n\n  <md-menu-content class="ms-material-color-picker-menu-content" layout-column>\n\n    <header ng-class="vm.selectedColor.class || \'md-accent-bg\'" class="md-whiteframe-4dp" layout="row" layout-align="space-between center">\n      <md-button md-prevent-menu-close ng-click="vm.activateHueSelection(false,false)" class="md-icon-button" ng-class="{\'hidden\':!vm.selectedPalette}" aria-label="Palette">\n        <md-icon md-font-icon="icon-arrow-left" class="s20"></md-icon>\n      </md-button>\n\n      <span ng-if="vm.selectedColor.palette">\n        {{vm.selectedColor.palette}} {{vm.selectedColor.hue}}\n      </span>\n\n      <span ng-if="!vm.selectedColor.palette">\n        Select Color\n      </span>\n\n      <md-button class="remove-color-button md-icon-button" ng-click="vm.removeColor()" aria-label="Remove Color">\n        <md-icon md-font-icon="icon-delete" class="s20"></md-icon>\n      </md-button>\n    </header>\n\n    <div class="colors" ms-scroll>\n      <div ng-show="!vm.selectedPalette" layout="row" layout-wrap>\n        <div class="color" ng-class="\'md-\'+palette+\'-500-bg\'" ng-repeat="(palette, hues) in vm.palettes" ng-click="vm.activateHueSelection(palette,hues)" layout="row" layout-align="start end" md-prevent-menu-close md-ink-ripple>\n          <span class="label">\n            {{palette}}\n          </span>\n        </div>\n      </div>\n\n      <div ng-show="vm.selectedPalette" layout="row" layout-wrap>\n        <div class="color" ng-class="\'md-\'+vm.selectedPalette+\'-\'+hue+\'-bg\'" ng-repeat="(hue, values) in vm.selectedHues" ng-click="vm.selectColor(vm.selectedPalette,hue)" layout="row" layout-align="start end" md-ink-ripple>\n          <span class="label">\n            {{hue}}\n          </span>\n          <i ng-if="vm.selectedPalette == vm.selectedColor.palette && hue == vm.selectedColor.hue" class="s16 icon-check">\n          </i>\n        </div>\n      </div>\n\n    </div>\n\n  </md-menu-content>\n</md-menu>'),e.put("app/core/directives/ms-navigation/templates/horizontal.html",'<div class="navigation-toggle" hide-gt-sm>\n  <md-button class="md-icon-button" ng-click="vm.toggleHorizontalMobileMenu()" aria-label="Toggle Mobile Navigation">\n    <md-icon md-font-icon="icon-menu"></md-icon>\n  </md-button>\n</div>\n\n<ul class="horizontal">\n  <li ng-repeat="node in vm.navigation" ms-navigation-horizontal-node="node" ng-class="{\'has-children\': vm.hasChildren}" ng-include="\'navigation-horizontal-nested.html\'"></li>\n</ul>\n\n\x3c!-- Nested horizontal navigation template --\x3e\n<script type="text/ng-template" id="navigation-horizontal-nested.html">\n\n  <div ms-navigation-horizontal-item layout="row" ng-if="!vm.isHidden()">\n\n        <div class="ms-navigation-horizontal-button" ng-if="!node.uisref && node.title"\n             ng-class="{\'active md-accent-bg md-accent-fg\': vm.isActive}">\n            <i class="icon s18 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg" style="background: {{node.badge.color}}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s18 arrow" ng-if="vm.hasChildren"></i>\n        </div>\n\n        <a class="ms-navigation-horizontal-button" ui-sref="{{node.uisref}}" ui-sref-active="active md-accent-bg"\n           ng-class="{\'active md-accent-bg md-accent-fg\': vm.isActive}"\n           ng-if="node.uisref && node.title">\n            <i class="icon s18 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg" style="background: {{node.badge.color}}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s18 arrow" ng-if="vm.hasChildren"></i>\n        </a>\n\n    </div>\n\n    <ul ng-if="vm.hasChildren && !vm.isHidden()">\n        <li ng-repeat="node in node.children" ms-navigation-horizontal-node="node"\n            ng-class="{\'has-children\': vm.hasChildren}"\n            ng-include="\'navigation-horizontal-nested.html\'"></li>\n    </ul>\n\n<\/script>\n\x3c!-- / Nested navigation template --\x3e'),e.put("app/core/directives/ms-navigation/templates/vertical.html",'<ul>\n  <li ng-repeat="node in vm.navigation" ms-navigation-node="node" ng-class="{\'collapsed\': vm.collapsed, \'has-children\': vm.hasChildren}" ng-include="\'navigation-nested.html\'"></li>\n</ul>\n\n\x3c!-- Nested navigation template --\x3e\n<script type="text/ng-template" id="navigation-nested.html">\n\n  <div id="{{ node.id }}" ms-navigation-item layout="row" ng-if="!vm.isHidden()">\n\n        <div class="ms-navigation-button" ng-if="!node.uisref && node.title">\n            <i class="icon s16 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg margin-right-20" ng-style="{\'background\': node.badge.color}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s16 arrow" ng-if="vm.collapsable && vm.hasChildren"></i>\n        </div>\n\n        <a class="ms-navigation-button" ui-sref="{{node.uisref}}" ui-sref-active="active md-accent-bg" ng-if="node.uisref && node.title">\n            <i class="icon s16 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg margin-right-20" ng-style="{\'background\': node.badge.color}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s16 arrow" ng-if="vm.collapsable && vm.hasChildren"></i>\n        </a>\n\n    </div>\n\n    <ul ng-if="vm.hasChildren && !vm.isHidden()">\n        <li ng-repeat="node in node.children" ms-navigation-node="node"\n            ng-class="{\'collapsed\': vm.collapsed, \'has-children\': vm.hasChildren}"\n            ng-include="\'navigation-nested.html\'"></li>\n    </ul>\n\n<\/script>\n\x3c!-- / Nested navigation template --\x3e'),e.put("assets/ms-phonebar/ms-phonebar-dialpad.html",'\x3c!-- Dialpad --\x3e\n<md-content ng-if="vm_pb.showDialpad" class="num-pad" layout="column">\n  <section layout="row" layout-align="start center">\n    <span><img class="num-pad-logo" layout-padding src="/api/settings/1/logo" alt="logo" /></span>\n    <span class="md-subhead">Dialpad</span>\n    <div layout="row" layout-align="end center" flex>\n      <md-button class="md-icon-button" ng-click="vm_pb.closeDialpad()">\n        <md-icon md-font-icon="icon-close"></md-icon>\n      </md-button>\n    </div>\n  </section>\n  <md-divider></md-divider>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 1, l: []}, {n: 2, l: [\'a\', \'b\', \'c\']}, {n: 3, l: [\'d\', \'e\', \'f\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 4, l: [\'g\', \'h\', \'i\']}, {n: 5, l: [\'j\', \'k\', \'l\']}, {n: 6, l: [\'m\', \'n\', \'o\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 7, l: [\'p\', \'q\', \'r\', \'s\']}, {n: 8, l: [\'t\', \'u\', \'v\']}, {n: 9, l: [\'w\', \'x\', \'y\', \'z\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: \'*\', l: []}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num" layout="column" layout-align="center center">\n        <div class="txt" layout="column" layout-align="center center">\n          {{item.n}}\n        </div>\n      </div>\n    </div>\n    <div class="span4" ng-repeat="item in ::[{n: 0, l: [\'+\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n    <div class="span4" ng-repeat="item in ::[{n: \'#\', l: []}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num" layout="column" layout-align="center center">\n        <div class="txt" layout="column" layout-align="center center">\n          {{item.n}}\n        </div>\n      </div>\n    </div>\n  </section>\n</md-content>\n\x3c!-- Dialpad --\x3e\n\n\x3c!-- Input&Media Area --\x3e\n<div layout="row" layout-align="start center">\n  <div layout="row" layout-align="center center">\n    \x3c!-- START Ringing Tone--\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Ringing" ng-click="vm_pb.conf.ringingMute = !vm_pb.conf.ringingMute; vm_pb.initDevice(\'ringing\', true)" ng-disabled="!vm_pb.registered">\n      <md-icon md-font-icon="{{vm_pb.conf.ringingMute ? \'icon-bell-off\' : \'icon-bell-ring\'}}" class="icon s14" ng-class="vm_pb.conf.ringingMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.RINGING">Ringing</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Ringing Tone --\x3e\n\n    \x3c!-- START Speaker --\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Speaker" ng-click="vm_pb.conf.speakerMute = !vm_pb.conf.speakerMute; vm_pb.initDevice(\'speaker\', true)" ng-disabled="!vm_pb.registered">\n      <md-icon md-font-icon="{{vm_pb.conf.speakerMute ? \'icon-volume-off\' : \'icon-volume\'}}" class="icon s14" ng-class="vm_pb.conf.speakerMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.SPEAKER">Speaker</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Speaker --\x3e\n\n    \x3c!-- START Microphone --\x3e\n      <md-button ng-disabled="(!vm_pb.registered || vm_pb.sessions.length==0)?true:false" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Microphone" ng-click="vm_pb.conf.microphoneMute = !vm_pb.conf.microphoneMute; vm_pb.initDevice(\'microphone\', true)">\n      <md-icon md-font-icon="{{vm_pb.conf.microphoneMute ? \'icon-microphone-off\' : \'icon-microphone\'}}" class="icon s14" ng-class="vm_pb.conf.microphoneMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.MICROPHONE">Microphone</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Microphone --\x3e\n\n    \x3c!-- START Registered --\x3e\n    <span>\n      <span class="quantity-indicator md-red-500-bg" ng-class="vm_pb.registered ? \'md-green-500-bg\' : \'md-red-500-bg\'"></span>\n      <md-tooltip><span>{{vm_pb.conf.license ? (vm_pb.registered ? \'TOOLBAR.REGISTERED\' : \'TOOLBAR.NOT_REGISTERED\') : \'TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD\' | translate}}\n          <timer ng-if="vm_pb.registered"></timer>\n        </span>\n      </md-tooltip>\n    </span>\n    \x3c!-- END Registered --\x3e\n  </div>\n  <div layout="column" layout-align="center start">\n    <div layout="row" layout-align="start center">\n      \x3c!-- START Target --\x3e\n      <angucomplete-alt id="ms-target-wrap" pause="10" local-data="vm_pb.calls" search-fields="target" title-field="target" minlength="0" input-class="input-number" disable-input="!vm_pb.registered" match-class="highlight" template-url="assets/ms-phonebar/ms-phonebar-input.html" input-changed="vm_pb.targetChanged" selected-object="vm_pb.targetSelected" clear-selected="true" ng-keypress="vm_pb.typeWrapper($event)" focus-first="true" disable-autocomplete="vm_pb.currentUser.privacyEnabled" />\n      \x3c!-- END Target --\x3e\n\n      \x3c!-- Auto Answer --\x3e\n      <div ng-if="vm_pb.conf.autoAnswer" class="red-fg" style="padding-left: 10px;">\n        <span class="font-size-20">A<span class="font-size-16">A</span></span>\n      </div>\n      \x3c!-- Auto Answer --\x3e\n\n      <md-button class="md-fab md-mini white-bg width-30 height-30" aria-label="Dialpad" ng-click="vm_pb.toggleDialpad()" ng-disabled="!vm_pb.registered">\n        <md-icon md-font-icon="icon-apps" class="icon grey-fg s16"></md-icon>\n      </md-button>\n      <md-button ng-if="vm_pb.target" class="md-fab md-mini white-bg width-25 height-25" aria-label="Call" style="margin-left: 0px;" ng-click="vm_pb.call()">\n        <md-icon md-font-icon="icon-phone" class="icon green-fg s12"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>\n\x3c!-- Input&Media Area --\x3e\n\n\x3c!-- START 3WC --\x3e\n<md-button ng-if="vm_pb.canGoInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="3Way" ng-click="vm_pb.start3WayConf();  $event.stopPropagation();">\n  <md-icon md-font-icon="icon-account-multiple-plus" class="icon orange-fg s14"></md-icon>\n  <md-tooltip><span translate="TOOLBAR.CONFERENCE">Conference</span></md-tooltip>\n</md-button>\n\x3c!-- END 3Way --\x3e\n\n\n<div class="toolbar-separator"></div>\n\n\x3c!-- Sessions Area --\x3e\n<div class="sessions" layout="row" layout-align="start center" flex>\n  <div layout="row" layout-align="center center" ng-if="!vm_pb.conf.license">\n    <md-icon md-font-icon="icon-account-alert" class="icon s36 red-fg"></md-icon>\n    <span layout-margin translate="TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD"></span>\n  </div>\n\n  <div id="{{\'div_session_\'+session.id.substr(0,32)}}" ng-repeat="session in vm_pb.sessions" class="session" layout="row" ng-click="(vm_pb.sessions.length > 1) && vm_pb.selectSession(session)">\n    <md-button ng-if="vm_pb.conf.recording && session.confirmed" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Record" ng-click="vm_pb.record(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-radiobox-marked" class="icon s14" ng-class="session.monitor ? \'red-fg\' : \'grey-fg\'"></md-icon>\n    </md-button>\n    <div layout="column" layout-align="center start">\n      <span class="session-info">\n        <span ng-if="session.user == session.name" privacy ng-cloak>{{session.user}}</span>\n        <span ng-if="session.user != session.name" privacy ng-cloak>{{session.name}}</span> <span ng-if="session.user != session.name" privacy ng-cloak>{{session.user}}</span>\n      </span>\n      <span class="session-info" layout="row" layout="start center">\n        <timer></timer>\n      </span>\n    </div>\n\n    \x3c!-- START Answer --\x3e\n    <md-button ng-if="session.incoming && !session.confirmed" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Anser" ng-click="vm_pb.answer(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone" class="icon green-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Answer --\x3e\n\n    \x3c!-- START Hangup --\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Terminate" ng-click="vm_pb.terminate(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-hangup" class="icon red-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Hangup --\x3e\n\n    \x3c!-- START Hold/Unhold --\x3e\n    <md-button ng-if="session.confirmed && !vm_pb.isInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Hold" ng-click="(session.localHold ? vm_pb.unhold(session) : vm_pb.hold(session)); $event.stopPropagation();">\n      <md-icon md-font-icon="{{session.localHold ? \'icon-play\' : \'icon-pause\'}}" class="icon grey-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Hold/Unhold --\x3e\n\n    \x3c!-- START Transfer --\x3e\n    <md-button ng-if="session.confirmed && !session.localHold && vm_pb.sessions.length == 1 && !vm_pb.isInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Refer" ng-click="vm_pb.refer(session);  $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END transfer --\x3e\n\n    \x3c!-- START Attended Transfer --\x3e\n    <md-button ng-if="session.confirmed && !session.localHold && vm_pb.sessions.length>1" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Refer Attended" ng-click="vm_pb.referAttended(session);  $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Attended Transfer --\x3e\n  </div>\n</div>\n\x3c!-- Sessions Area --\x3e'),e.put("assets/ms-phonebar/ms-phonebar-input.html",'<div class="angucomplete-holder" ng-class="{\'angucomplete-dropdown-visible\': showDropdown}">\n  <input id="ms-target" ng-model="searchStr" ng-disabled="disableInput" type="text" placeholder="{{placeholder}}" ng-focus="onFocusHandler()" class="{{inputClass}}" ng-focus="resetHideResults()" ng-blur="hideResults($event)" autocapitalize="off" autocorrect="off" autocomplete="off" ng-change="inputChangeHandler(searchStr)" />\n  <div class="angucomplete-dropdown" ng-show="showDropdown && !(!searching && (!results || results.length == 0))">\n    <div class="angucomplete-row" ng-repeat="result in results" ng-click="selectResult(result)" ng-mouseenter="hoverRow($index)" ng-class="{\'angucomplete-selected-row\': $index == currentIndex}">\n      <div layout="row" layout-align="start center">\n        <md-icon md-font-icon="{{result.originalObject.inbound ? \'icon-arrow-bottom-left\' : \'icon-arrow-top-right\'}}" class="icon no-margin s22"></md-icon>\n        <span style="margin-left: 8px;">({{result.originalObject.time}}) - <span class="angucomplete-title" ng-if="matchClass" ng-bind-html="result.title" privacy ng-cloak></span></span>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("assets/ms-phonebar/ms-phonebar.html",'<div layout="row" layout-align="start center" flex>\n  \x3c!-- Audio stream --\x3e\n  <audio id="local-audio" autoplay hidden=true></audio>\n  <audio id="remote-audio" autoplay hidden=true></audio>\n  \x3c!-- Audio stream --\x3e\n\n  \x3c!-- WebRtc PhoneBar --\x3e\n  <div class="phonebar-container" ng-include="\'assets/ms-phonebar/ms-phonebar-dialpad.html\'" layout="row" layout-align="start center" flex></div>\n  \x3c!-- WebRtc PhoneBar --\x3e\n</div>'),e.put("assets/ms-phonebar/prefix/dialog.html",'<md-dialog aria-label="Prefix">\n  <form ng-cloak ng-keypress="vm.keyPress($event)">\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.PREFIXES">Prefixes</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog(-1)">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <md-radio-group ng-model="vm.prefix">\n        <md-radio-button ng-repeat="prefix in vm.prefixes.rows" value="{{prefix.prefix}}" class="md-primary">{{prefix.name}}</md-radio-button>\n        <md-radio-button ng-if="!vm.required" ng-value="null" class="md-primary">no prefix</md-radio-button>\n      </md-radio-group>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.call()" class="send-button md-accent md-raised" aria-label="call" md-autofocus ng-disabled="!vm.prefix && vm.required">\n        <span translate="TOOLBAR.CALL">CALL</span>\n      </md-button>\n      <md-button ng-click="vm.closeDialog(-1)" class="send-button md-accent md-raised" aria-label="cancel">\n        <span translate="TOOLBAR.CANCEL">Cancel</span>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("assets/ms-phonebar/record/dialog.html",'<md-dialog aria-label="Recording" ng-init="vm.onInit()">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.RECORDING">Recording</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding">\n            <md-icon class="no-margin" md-font-icon="icon-plus" aria-label="Add" ng-click="vm.addRecording()"></md-icon>\n          </md-button>\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog()">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-table-container>\n      <table md-table layout-padding>\n        <thead md-head>\n          <tr md-row>\n            <th md-column><span translate="TOOLBAR.FILENAME">File name</span></th>\n            <th md-column><span translate="TOOLBAR.STATUS">Status</span></th>\n            <th md-column><span translate="TOOLBAR.ACTIONS">Actions</span></th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm.session.monitors.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="TOOLBAR.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="monitor in vm.session.monitors">\n            <td md-cell>{{monitor.filename}}</td>\n            <td md-cell class="no-padding">\n              <md-icon md-font-icon="icon-radiobox-marked" class="icon s16" ng-class="(monitor.status == \'rec\') ? \'red-fg ms-blink\' : \'grey-fg\'"></md-icon>\n            </td>\n            <td md-cell class="no-padding">\n              <md-button class="md-fab md-mini white-bg width-35 height-35 margin-5" aria-label="Record" ng-click="(monitor.status == \'rec\') ? vm.stop(monitor) : vm.start(monitor)">\n'+"                <md-icon md-font-icon=\"{{monitor.status == 'rec' ? 'icon-stop' : 'icon-play'}}\" class=\"icon s16\" ng-class=\"monitor.status == 'rec' ? 'grey-fg' : 'red-fg'\"></md-icon>\n              </md-button>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n  </form>\n</md-dialog>"),e.put("assets/ms-phonebar/referAttended/dialog.html",'<md-dialog aria-label="Transfer">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.ATTENDED_TRANSFER">Transfer</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog()">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <label translate="TOOLBAR.TARGET">Target</label>\n      <md-input-container class="md-block">\n        <md-select ng-model="vm.target">\n          <md-option ng-repeat="session in vm.sessions" ng-value="session.user">\n            {{ session.name }}\n          </md-option>\n        </md-select>\n      </md-input-container>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.transfer()" class="send-button md-accent md-raised" aria-label="transfer" ng-disabled="!vm.target && !vm.sessionId">\n        <span translate="TOOLBAR.TRANSFER">TRANSFER</span>\n      </md-button>\n      <md-button ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="cancel">\n        <span translate="TOOLBAR.CANCEL">Cancel</span>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("assets/ms-phonebar/settings/settings.html",'<md-dialog class="md-phonebar-dialog" aria-label="{{vm.name}}">\n  <form name="settingsForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="TOOLBAR.SETTINGS">Settings</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content class="no-padding" ms-scroll>\n      <md-tabs md-no-pagination md-stretch-tabs="always">\n        <md-tab label="{{ \'TOOLBAR.PROFILE\' | translate}}">\n          <md-content layout-padding layout="column">\n            <span><span translate="TOOLBAR.FULLNAME">Fullname</span>: {{vm.conf.fullname}}</span>\n            <span><span translate="TOOLBAR.NAME">Name</span>: {{vm.conf.name}}</span>\n            <span><span translate="TOOLBAR.INTERNAL">Internal</span>: {{vm.conf.internal}}</span>\n            <span><span translate="TOOLBAR.BROWSER">Browser</span>: {{vm.conf.browserName}} {{vm.conf.browserVersion}}</span>\n            <span><span translate="TOOLBAR.OS">OS</span>: {{vm.conf.osName}} {{vm.conf.osVersion}}</span>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.SERVICES\' | translate}}">\n          <md-content layout-padding>\n            <md-input-container class="md-block">\n              <md-switch ng-model="vm.conf.autoAnswer" aria-label="Auto Answer">\n                <span translate="TOOLBAR.AUTOANSWER">Auto Answer</span>\n                <span>{{ vm.conf.autoAnswerDelay }} [s]</span>\n              </md-switch>\n            </md-input-container>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.AUDIO\' | translate}}">\n          <md-content layout-padding>\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audiooutput\' }).length">\n                <label translate="TOOLBAR.RINGINGDEVICE">Ringing Device</label>\n                <md-select name="ringingDevice" ng-model="vm.conf.ringingId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audiooutput\' }">{{ device.label || (\'Speaker \' + ($index + 1)) }}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'ringingDevice\'].$error" ng-show="settingsForm[\'ringingDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <div layout="row" layout-align="space-between center">\n                <md-switch ng-model="vm.conf.ringingMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n\n                <md-slider-container flex="80">\n                  <md-slider flex step="0.1" min="0" max="1" ng-model="vm.conf.ringingVolume" aria-label="volume"></md-slider>\n                </md-slider-container>\n              </div>\n            </div>\n\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audiooutput\' }).length">\n                <label translate="TOOLBAR.SPEAKERDEVICE">Speaker Device</label>\n                <md-select name="speakerDevice" ng-model="vm.conf.speakerId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audiooutput\' }">{{ device.label || (\'Speaker \' + ($index + 1)) }}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'speakerDevice\'].$error" ng-show="settingsForm[\'speakerDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <div layout="row" layout-align="space-between cetner">\n                <md-switch ng-model="vm.conf.speakerMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n\n                <md-slider-container flex="80">\n                  <md-slider flex step="0.1" min="0" max="1" ng-model="vm.conf.speakerVolume" aria-label="volume"></md-slider>\n                </md-slider-container>\n              </div>\n            </div>\n\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audioinput\' }).length">\n                <label translate="TOOLBAR.MICROPHONEDEVICE">Microphone Device</label>\n                <md-select name="microphoneDevice" ng-model="vm.conf.microphoneId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audioinput\' }">{{ device.label || (\'Microphone \' + ($index + 1))}}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'microphoneDevice\'].$error" ng-show="settingsForm[\'microphoneDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n              <div layout="row" layout-align="space-between center">\n                <md-switch ng-disabled="vm.activeSessions.length==0" ng-model="vm.conf.microphoneMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n              </div>\n            </div>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.REQUIREMENTS\' | translate}}">\n          <md-content layout-padding>\n            <md-list>\n              <md-list-item>\n                <h3 translate="TOOLBAR.LICENSE">License</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.license ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.license ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.BROWSER_COMPATIBILITY">Browser Compatibility</h3>\n                <md-icon class="md-secondary" ng-class="vm.isCompatibleBrowser() ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.isCompatibleBrowser() ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.HTTPS">HTTPS</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.protocol === \'https\' ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.protocol === \'https\' ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.WEBRTCSUPPORT">WebRTC Support</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.isWebRTCSupported ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.isWebRTCSupported ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.MICROPHONE">Microphone</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.hasMicrophone ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.hasMicrophone ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.SPEAKER">Speaker</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.hasSpeakers ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.hasSpeakers ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n            </md-list>\n          </md-content>\n        </md-tab>\n      </md-tabs>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveSettings()" class="send-button md-accent md-raised" ng-disabled="settingsForm.$invalid || settingsForm.$pristine" aria-label="SAVE" translate="TOOLBAR.SAVE" translate-attr-aria-label="TOOLBAR.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/directives/ms-quick-filter/ms-quick-filter.html",'<div ng-cloak layout="row" class="quick-filter-container" flex>\n  <div ng-repeat="filter in vm.filters" ng-if="filter.ngIf ? $eval(\'vm.query.\' + filter.ngIf) : true" layout="column" class="padding-horizontal-16">\n    <span class="font-size-10" translate="{{ filter.label }}" />\n    <md-select ng-if="filter.type === \'select\'" class="font-size-12 no-margin" ng-model="vm.query[filter.key]" ng-change="vm.search()" aria-label="Filter {{ filter.name }}">\n      <md-option ng-repeat="option in filter.options" ng-value="filter.ngValue ? option[filter.ngValue] : option.id">\n        {{ option.name }}</md-option>\n      <md-option ng-repeat="option in filter.customOptions" ng-value="option.value" translate="{{ option.translate }}">\n      </md-option>\n    </md-select>\n\n    <md-select ng-if="filter.type === \'multiselect\'" multiple class="font-size-12 no-margin" ng-init="vm.onMultiselectInit(filter)" ng-model="vm.query[filter.key]" ng-disabled="filter.options.length === 0" ng-change="vm.onMultiselectSelection(filter, isOpened)" md-selected-text="vm.placeholders[filter.key]" aria-label="Filter {{ filter.name }}" md-on-open="isOpened = true" md-on-close="isOpened = false">\n      <md-option ng-repeat="option in filter.options" ng-value="filter.ngValue ? option[filter.ngValue] : option.id" ng-disabled="filter.clearAll === false && vm.query[filter.key].length === 1 && vm.query[filter.key][0] === (filter.ngValue ? option[filter.ngValue] : option.id)">\n        {{ option.name }}</md-option>\n      <md-button ng-if="vm.query[filter.key].length &lt; filter.options.length" ng-click="vm.selectAll(filter)" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.SELECT_ALL\' | translate}}</md-button>\n      <md-button ng-if="vm.query[filter.key].length === filter.options.length" ng-click="vm.clearSelection(filter)" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.CLEAR\' | translate}}</md-button>\n    </md-select>\n\n    <div ng-if="filter.type === \'date\'" layout="row" layout-align="center center">\n      <md-date-range ng-init="vm.onDateRangeInit(filter)" localization-map="vm.localizationMap" ng-model="vm.pickerModels[filter.key]" auto-confirm="true" show-template="true" md-on-select="vm.onDateRangeSelection(filter)" placeholder="{{ \'DASHBOARDS.ALL\' | translate }}">\n      </md-date-range>\n      <md-button ng-if="vm.pickerModels[filter.key].dateStart" ng-click="vm.clearDate(filter)" class="md-icon-button no-margin no-padding width-20 height-20" aria-label="Clear date filter">\n        <md-icon md-font-icon="icon-close" class="quick-filter-date-clear-button s16"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-search-bar/ms-search-bar.html",'<div flex layout="row" layout-align="start center">\n  <label>\n    <md-button class="ms-search-bar-expander md-icon-button" aria-label="Expand Search Bar" ng-click="vm.expandBar()" ng-if="!vm.resultsLoading || !vm.expanded" ng-class="{\'ms-search-button-expanded\': vm.expanded }">\n      <md-icon id="ms-search-bar-icon" md-font-icon="icon-magnify" class="s24" ng-class="{\'{{ vm.iconColor }}\': vm.iconColor && !vm.expanded }"></md-icon>\n    </md-button>\n    <div class="ms-search-bar-loader" layout="row" layout-align="center center" ng-if="vm.resultsLoading && vm.expanded">\n      <md-progress-circular class="md-accent" md-diameter="32" md-mode="indeterminate"></md-progress-circular>\n    </div>\n  </label>\n  <input ng-if="vm.expanded" focus-on="vm.expanded" type="text" placeholder="{{ \'TOOLBAR.SEARCH\' | translate }}" flex ng-model="vm.query.filter" ng-model-options="vm.queryOptions" ng-blur="vm.blurCollapse()" ng-keydown="vm.onKeyDown($event)" />\n  <md-button class="ms-search-bar-collapser md-icon-button" ng-click="vm.collapseBar()" aria-label="Collapse Search Bar">\n    <md-icon md-font-icon="icon-close" class="icon s24"></md-icon>\n  </md-button>\n  <div class="ms-search-bar-results" ng-if="vm.results" ms-scroll>\n    <div class="no-results" ng-if="vm.results.length === 0">{{ \'DASHBOARDS.NO_RESULTS_AVAILABLE\' | translate }}</div>\n    <div class="result" ng-repeat="result in vm.results" ng-click="vm.handleResultClick(result)" ng-mouseenter="vm.handleMouseEnter($index)" ng-mousedown="vm.absorbEvent($event)" ng-class="{\'selected\': $index == vm.selectedResultIndex}" md-ink-ripple>\n      <div layout="row" layout-align="start center">\n        <div class="icon-container" layout="row" layout-align="center center">\n          <i ng-if="result.icon" class="icon {{ result.icon }}"></i>\n          <div ng-if="!result.icon" class="square md-accent-bg"></div>\n        </div>\n        <div>\n          <div class="title">{{ result.title }}</div>\n          <div class="description" ng-if="result.description">{{ result.description }}</div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-shortcuts/ms-shortcuts.html",'<div class="shortcuts-container" layout="row" layout-align="space-between center" flex ng-class="{\'mobile-bar-active\': MsShortcuts.mobileBarActive}">\n\n  <div class="flex-noshrink" layout="row" layout-align="start center" flex>\n    <div class="shortcuts hide show-gt-xs" layout="row" layout-align="start center" ms-scroll ng-if="MsShortcuts.shortcuts.length > 0" ng-sortable="MsShortcuts.sortableOptions">\n      <div ng-repeat="shortcut in MsShortcuts.shortcuts" layout="row" layout-align="center center">\n        <md-button class="md-icon-button shortcut" aria-label="{{shortcut.title}}" ui-sref="{{shortcut.uisref}}">\n          <md-icon ng-if="shortcut.icon" md-font-icon="{{shortcut.icon}}" class="icon s24"></md-icon>\n          <div ng-if="!shortcut.icon" class="first-letter">{{shortcut.title.charAt(0)}}</div>\n          <md-tooltip md-direction="bottom">{{shortcut.title}}</md-tooltip>\n        </md-button>\n      </div>\n    </div>\n\n    \x3c!-- <md-menu md-offset="8 56" class="shortcut-menu hide show-gt-xs">\n            <md-button class="md-icon-button add-shortcut-button" aria-label="Add shortcut"\n                       ng-click="$mdOpenMenu($event)">\n                <md-icon md-menu-origin md-font-icon="icon-star" class="icon amber-600-fg s24"></md-icon>\n                <md-tooltip md-direction="bottom">Click to add/remove shortcut</md-tooltip>\n            </md-button>\n\n            <md-menu-content>\n                <div id="ms-shortcut-add-menu">\n                    <div class="shortcut-search" layout="row" layout-align="start center">\n                        <div class="search-icon" layout="row" layout-align="center center"\n                             ng-if="!MsShortcuts.resultsLoading">\n                            <md-icon md-menu-align-target md-font-icon="icon-magnify" class="icon s24"></md-icon>\n                        </div>\n                        <div class="shortcut-loader" layout="row" layout-align="center center"\n                             ng-if="MsShortcuts.resultsLoading">\n                            <md-progress-circular class="md-accent" md-diameter="20" md-mode="indeterminate">\n                            </md-progress-circular>\n                        </div>\n\n                        <input type="text" placeholder="Search" flex\n                               ng-model="MsShortcuts.query"\n                               ng-model-options="MsShortcuts.queryOptions"\n                               ng-keydown="MsShortcuts.handleKeydown($event)">\n                    </div>\n\n                    <div class="results" ng-if="MsShortcuts.results" ms-scroll>\n                        <div class="no-results" ng-if="MsShortcuts.results.length === 0">No Results!</div>\n\n                        <div class="result" ng-repeat="result in MsShortcuts.results"\n                             ng-click="MsShortcuts.handleResultClick(result)"\n                             ng-mouseenter="MsShortcuts.handleMouseenter($index)"\n                             ng-mousedown="MsShortcuts.absorbEvent($event)"\n                             ng-class="{\'selected\': $index == MsShortcuts.selectedResultIndex}"\n                             md-prevent-menu-close="md-prevent-menu-close"\n                             md-ink-ripple>\n                            <div layout="row" layout-align="start space-between">\n                                <div layout="row" layout-align="start center" flex>\n                                    <div class="icon icon-container" layout="row" layout-align="center center">\n                                        <i ng-if="result.icon" class="{{result.icon}}"></i>\n                                        <div ng-if="!result.icon" class="square md-accent-bg"></div>\n                                    </div>\n                                    <div>\n                                        <div class="title">{{result.title}}</div>\n                                    </div>\n                                </div>\n                                <md-icon md-font-icon="icon-pin" class="icon s18"\n                                         ng-class="{\'fade-text\': !result.hasShortcut}"></md-icon>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </md-menu-content>\n        </md-menu> --\x3e\n  </div>\n\n  <md-button class="md-icon-button toggle-mobile-menu hide-gt-xs" aria-label="Add shortcut" ng-click="MsShortcuts.toggleMobileBar()">\n    <md-icon md-menu-origin md-font-icon="icon-star" class="icon amber-600-fg s24" ng-hide="MsShortcuts.mobileBarActive"></md-icon>\n    <md-icon md-menu-origin md-font-icon="icon-close" class="icon s24" ng-hide="!MsShortcuts.mobileBarActive"></md-icon>\n  </md-button>\n</div>'),e.put("app/core/directives/ms-stepper/templates/horizontal/horizontal.html",'<div class="ms-stepper-horizontal">\n  <div class="ms-stepper-navigation-wrapper">\n    <div class="ms-stepper-navigation" layout="row" layout-align="center center">\n      <md-button class="ms-stepper-navigation-item" ng-class="{\'current\': MsStepper.isStepCurrent(step.stepNumber), \'valid\': MsStepper.isStepValid(step.stepNumber), \'disabled\': MsStepper.isStepDisabled(step.stepNumber), \'optional\': MsStepper.isStepOptional(step.stepNumber)}" ng-click="MsStepper.gotoStep(step.stepNumber)" ng-disabled="MsStepper.isStepDisabled(step.stepNumber)" ng-repeat="step in MsStepper.steps | filter:MsStepper.filterHiddenStep" layout="row" layout-align="start center">\n\n        <div class="step md-accent-bg" layout="row" layout-align="center center">\n          <span ng-if="!MsStepper.isStepValid(step.stepNumber) || MsStepper.isStepOptional(step.stepNumber)">\n            {{$index + 1}}\n          </span>\n          <span ng-if="MsStepper.isStepValid(step.stepNumber) && !MsStepper.isStepOptional(step.stepNumber)">\n            <i class="icon icon-check s18"></i>\n          </span>\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="title" translate="{{step.stepTitleTranslate}}">{{step.stepTitle}}</div>\n          <div class="subtitle" ng-if="MsStepper.isStepOptional(step.stepNumber)">Optional</div>\n        </div>\n      </md-button>\n    </div>\n  </div>\n\n  <div class="ms-stepper-steps" ng-transclude></div>\n\n  <div class="ms-stepper-controls" layout="row" layout-align="center center">\n    <md-button class="md-accent md-raised" ng-disabled="MsStepper.isFirstStep()" ng-click="MsStepper.gotoPreviousStep()">\n      Back\n    </md-button>\n\n    <div class="ms-stepper-dots">\n      <span ng-repeat="step in MsStepper.steps" ng-hide="MsStepper.isStepHidden(step.stepNumber)" ng-class="{\'selected md-accent-bg\':MsStepper.currentStepNumber === $index + 1}">\n      </span>\n    </div>\n\n    <md-button class="md-accent md-raised" ng-if="!MsStepper.isLastStep()" ng-disabled="!MsStepper.isStepValid(MsStepper.currentStepNumber)" ng-click="MsStepper.gotoNextStep()">\n      Next\n    </md-button>\n\n    <md-button type="submit" class="md-accent md-raised" ng-click="MsStepper.resetForm()" ng-if="MsStepper.isLastStep()" ng-disabled="!MsStepper.isFormValid()">\n      Submit\n    </md-button>\n  </div>\n</div>'),e.put("app/core/directives/ms-stepper/templates/vertical/step/vertical-step.html",'<md-button class="ms-stepper-navigation-item" ng-class="{\'current\': MsStepper.isStepCurrent(stepInfo.stepNumber), \'valid\': MsStepper.isStepValid(stepInfo.stepNumber), \'disabled\': MsStepper.isStepDisabled(stepInfo.stepNumber), \'optional\': MsStepper.isStepOptional(stepInfo.stepNumber)}" ng-click="MsStepper.gotoStep(stepInfo.stepNumber)" ng-disabled="MsStepper.isStepDisabled(stepInfo.stepNumber)" ng-hide="MsStepper.isStepHidden(stepInfo.stepNumber)" aria-label="Stepper navigation button" layout="row" layout-align="start center">\n\n  <div class="step" layout="row" layout-align="center center">\n    <span ng-if="!MsStepper.isStepValid(stepInfo.stepNumber) || MsStepper.isStepOptional(stepInfo.stepNumber)">\n      <i class="icon icon-checkbox-blank-circle-outline s18 md-accent-fg"></i>\n    </span>\n    <span ng-if="MsStepper.isStepValid(stepInfo.stepNumber) && !MsStepper.isStepOptional(stepInfo.stepNumber)">\n      <i class="icon icon-check-circle s18 md-accent-fg"></i>\n    </span>\n  </div>\n\n  <div layout="column" layout-align="start start">\n    <div class="title" ng-if="stepInfo.stepTitleTranslate">{{stepInfo.stepTitleTranslate | translate }}</div>\n    <div class="title" ng-if="!stepInfo.stepTitleTranslate">{{stepInfo.stepTitle}}</div>\n    <div class="subtitle" ng-if="MsStepper.isStepOptional(stepInfo.stepNumber)">Optional</div>\n  </div>\n</md-button>\n\n<div class="ms-stepper-step-content" ng-transclude></div>\n\n<div class="ms-stepper-controls" layout="row" layout-align="start center" ng-show="MsStepper.isStepCurrent(stepInfo.stepNumber)">\n  <md-button class="md-accent md-raised" ng-disabled="MsStepper.isFirstStep()" ng-click="MsStepper.gotoPreviousStep()">\n    Back\n  </md-button>\n\n  <md-button class="md-accent md-raised" ng-if="!MsStepper.isLastStep()" ng-disabled="!MsStepper.isStepValid(MsStepper.currentStepNumber)" ng-click="MsStepper.gotoNextStep()">\n    Next\n  </md-button>\n\n  <md-button type="submit" class="md-accent md-raised" ng-click="MsStepper.resetForm()" ng-if="MsStepper.isLastStep()" ng-disabled="!MsStepper.isFormValid()">\n    Submit\n  </md-button>\n</div>'),e.put("app/core/directives/ms-stepper/templates/vertical/vertical.html",'<div class="ms-stepper-vertical">\n  <div class="ms-stepper-vertical-line"></div>\n  <div class="ms-stepper-steps" ng-transclude></div>\n</div>'),e.put("app/core/directives/ms-tab-scroll/ms-tab-scroll.html",'<div layout="row">\n  <md-button class="md-icon-button md-mini width-25 no-margin scroll-arrow" ng-click="vm.onTabScroll(\'left\')" ng-if="vm.canScroll(\'left\') == true">\n    <md-icon md-font-icon="icon-chevron-left" class="icon s26"></md-icon>\n  </md-button>\n  <div id="bar-container" layout="row" class="bar-container">\n    <div ng-transclude id="tab-container" layout="row" layout-align="start center" class="scroll-container">\n    </div>\n  </div>\n  <md-button class="md-icon-button md-mini width-25 no-margin scroll-arrow" ng-click="vm.onTabScroll(\'right\')" ng-if="vm.canScroll(\'right\') == true">\n    <md-icon md-font-icon="icon-chevron-right" class="icon s26"></md-icon>\n  </md-button>\n</div>'),e.put("app/core/directives/ms-timezone/ms-timezone.html",'<md-select ng-model="ngModel" class="no-margin">\n  <md-option ng-value="null">NONE</md-option>\n  <md-option ng-repeat="t in timezone | orderBy:\'utcOffset\'" value="{{t.name}}">{{t.name}} ({{t.offsetStr}})</md-option>\n</md-select>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-counter/ms-widget-engine.counter.html",'<div class="pt-8 pb-32" layout="column" layout-align="center center" layout-fill ng-controller="MsWidgetEngineCounterController as vm">\n  <div ng-class="\'font-size-\' + (vm.fontSize * 3)" ng-style="{\'color\': widget.foreground}">\n    {{ vm.getCount(widget) }}\n  </div>\n  <div ng-class="\'font-size-\' + vm.fontSize" ng-style="{\'color\': widget.foreground}">{{ \'TOOLS.\' + widget.attrs[0].value | uppercase | translate }}<span ng-if="vm.filtered">*</span></div>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-multibar-chart/ms-widget-engine.multibar-chart.html",'<div ng-controller="MsWidgetEngineMultibarChartController as vm" ng-init="vm.getMultiBarChart(widget)" layout="column" layout-fill>\n\n  <span ng-show="false">{{ vm.getMultiBarChart(widget)}}</span>\n\n  <canvas style="overflow:scroll" id="bar" class="chart-horizontal-bar" chart-data="vm.multiBarChart.data" chart-options="vm.multiBarChart.options" chart-series="vm.multiBarChart.series" chart-labels="vm.multiBarChart.labels">\n  </canvas>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-pie-chart/ms-widget-engine.pie-chart.html",'<div ng-controller="MsWidgetEnginePieChartController as vm" ng-init="vm.getPieChart(widget)" layout="column" layout-fill>\n\n  <span ng-show="false">{{ vm.getPieChart(widget)}}</span>\n\n  <canvas style="overflow:scroll" id="pie" class="chart-pie" chart-data="vm.pieChart.data" chart-labels="vm.pieChart.labels" chart-options="vm.pieChart.options">\n  </canvas>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-web-report/ms-widget-engine.web-report.html",'<div ng-controller="MsWidgetEngineWebReportController as vm" ng-init="vm.onInit(widget)">\n  <dl ng-if="vm.error">\n    <dt class="text-bold">Query Error</dt>\n    <dd>{{vm.error.sql}}</dd>\n    <dt>Message</dt>\n    <dd>{{vm.error.msg}}</dd>\n  </dl>\n  <md-toolbar class="md-table-toolbar md-default">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{vm.title}}</span>\n      <div flex></div>\n      <md-button class="md-icon-button" ng-click="vm.onInit(widget)" aria-label="refresh">\n        <md-icon md-font-icon="icon-refresh"></md-icon>\n      </md-button>\n      <span ng-if="vm.refresh && vm.countDown" class="md-subhead blue-fg">{{vm.countDown}}</span>\n    </div>\n  </md-toolbar>\n  <md-table-container ng-if="!vm.error">\n    <table md-table md-progress="vm.promise">\n      <thead md-head>\n        <tr md-row>\n          <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-repeat="row in vm.results.rows">\n          <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n        </tr>\n        <tr md-row ng-if="!vm.results.rows.length">\n          <td md-cell colspan="{{vm.columns.length}}">\n            <div layout="row" layout-align="center center">\n              <span>No Data</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.results.count}}" md-on-paginate="vm.getResults" md-page-select></md-table-pagination>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine.html",'<div gridster="vm.config">\n  <ul>\n    <li gridster-item="widget" ng-repeat="widget in vm.config.widgets">\n      <md-card layout-fill>\n        <md-toolbar class="height-40" ng-style="{\'background-color\': widget.background, \'color\': widget.foreground }">\n          <div class="md-toolbar-tools height-40 no-margin" layout="row" layout-align="start center">\n            <a ng-href="{{widget.link ? widget.link : \'javascript:void(0)\'}}" ng-style="{\'color\': widget.foreground, \'font-size\': (widget.titleFontSize || 12) }" class="text-truncate" flex>\n              {{ widget.title || \'No Title\' }}\n            </a>\n            <md-button ng-if="!vm.config.preview" class="draggable md-icon-button width-30 no-margin no-padding" aria-label="Move">\n              <md-tooltip><span translate="TOOLS.MOVE_WIDGET">Move</span></md-tooltip>\n              <md-icon md-font-icon="icon-cursor-move" class="s20" ng-style="{\'color\': widget.foreground}"></md-icon>\n            </md-button>\n            <md-menu ng-if="!vm.config.preview">\n              <md-button ng-click="$mdOpenMenu($event)" class="md-icon-button width-30 no-margin no-padding" aria-label="More">\n                <md-icon md-font-icon="icon-dots-vertical" class="s20" ng-style="{\'color\': widget.foreground}"></md-icon>\n              </md-button>\n              <md-menu-content>\n                <md-menu-item>\n                  <md-button ng-click="vm.onEdit({widget: widget})" translate="TOOLS.EDIT_WIDGET">Edit\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.onDelete({widget: widget})" translate="TOOLS.DELETE_WIDGET">\n                    Delete</md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n\n          </div>\n        </md-toolbar>\n        <md-card-content class="resizable" layout="column" layout-align="center center" flex ng-style="{\'background-color\': widget.background, \'color\': widget.foreground}">\n          <div ng-switch="widget.type" layout-fill>\n            <iframe ng-switch-when="iframe|custom" ng-switch-when-separator="|" ng-src="{{vm.getTrustedURL(widget.attrs[0].value)}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n            <ds-widget-clock ng-class="\'font-size-\' + (widget.attrs[2].value || 12)" ng-switch-when="clock" digital-format="widget.attrs[0].value" gmt-offset="widget.attrs[1].value" data-show-digital show-gmt-info></ds-widget-clock>\n            <div ng-switch-default layout-fill>\n              <div ng-include="widget.templateUrl" layout-fill></div>\n            </div>\n          </div>\n        </md-card-content>\n      </md-card>\n    </li>\n  </ul>\n</div>'),e.put("app/core/layouts/content-only.html",'<div id="layout-content-only" class="template-layout" layout="column" flex>\n  <md-content id="content" class="animate-slide-up md-hue-2" ui-view="content" flex></md-content>\n</div>'),e.put("app/core/layouts/content-with-toolbar.html",'<div id="layout-content-with-toolbar" class="template-layout" layout="column" flex>\n  <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp" ui-view="toolbar"></md-toolbar>\n  <md-content id="content" class="animate-slide-up md-hue-2" ui-view="content" flex></md-content>\n\n  <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n</div>'),e.put("app/core/layouts/horizontal-navigation.html",'<div id="layout-horizontal-navigation" class="template-layout" layout="column" flex>\n\n  <div id="toolbar-navigation-container" class="md-whiteframe-1dp" layout="column" layout-align="space-between start">\n    <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp" ui-view="toolbar"></md-toolbar>\n    <div id="horizontal-navigation" ui-view="navigation" layout="row" layout-align="start end" flex></div>\n  </div>\n\n  <div id="content-container" flex layout="column">\n    <md-content id="content" class="animate-slide-up md-hue-2" ms-scroll ui-view="content" flex></md-content>\n  </div>\n\n  <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n\n</div>'),e.put("app/core/layouts/vertical-navigation-fullwidth-toolbar-2.html",'<div id="layout-vertical-navigation-fullwidth-toolbar-2" class="template-layout" layout="column" flex>\n\n  <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp md-accent" ui-view="toolbar"></md-toolbar>\n\n  <div id="main-container" layout="row" flex>\n    <md-sidenav id="vertical-navigation" class="md-primary-bg" md-is-locked-open="$mdMedia(\'gt-sm\')" md-component-id="navigation" ms-scroll ui-view="navigation"></md-sidenav>\n\n    <div id="content-container" flex layout="column">\n      <md-content id="content" class="animate-slide-up md-hue-2" ms-scroll ui-view="content" flex></md-content>\n    </div>\n\n    <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n  </div>\n\n\n</div>'),e.put("app/core/layouts/vertical-navigation-fullwidth-toolbar.html",'<div id="layout-vertical-navigation-fullwidth-toolbar" class="template-layout" layout="column" flex>\n\n  <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp md-accent" ui-view="toolbar"></md-toolbar>\n\n  <div id="main-container" layout="row" flex>\n    <md-sidenav id="vertical-navigation" class="md-primary-bg" md-is-locked-open="$mdMedia(\'gt-sm\')" md-component-id="navigation" ms-scroll ui-view="navigation"></md-sidenav>\n\n    <div id="content-container" flex layout="column">\n      <md-content id="content" class="animate-slide-up md-hue-2" ms-scroll ui-view="content" flex></md-content>\n    </div>\n\n    <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n  </div>\n\n\n</div>'),e.put("app/core/layouts/vertical-navigation.html",'<div id="header" ui-view="header"></div>\n\n<div id="layout-vertical-navigation" class="template-layout" layout="row" flex>\n\n  <md-sidenav id="vertical-navigation" class="md-primary-bg" md-is-locked-open="$mdMedia(\'gt-sm\')" md-component-id="navigation" ms-scroll ui-view="navigation" ng-if="!vm.isAgent()"></md-sidenav>\n\n  <div id="content-container" flex layout="column">\n    <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp" ui-view="toolbar"></md-toolbar>\n\n    <md-content id="content" class="animate-slide-up md-hue-2" ms-scroll ui-view="content" flex></md-content>\n  </div>\n\n  <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n\n</div>\n\n<div id="footer" ui-view="footer"></div>'),e.put("app/core/theme-options/theme-options.html",'<div class="ms-theme-options-button md-primary-bg" ng-click="toggleOptionsSidenav()">\n  <md-icon md-font-icon="icon-cog" class="white-text"></md-icon>\n</div>\n\n<md-sidenav md-component-id="motion-theme-options" class="md-sidenav-right">\n\n  <div class="ms-theme-options-list" layout="column">\n    <div class="theme-option layout-options">\n      <div class="option-title">Layout Style:</div>\n      <md-radio-group layout="row" layout-align="start start" layout-wrap ng-model="vm.layoutStyle" ng-change="vm.updateLayoutStyle()">\n        <md-radio-button ng-repeat="layoutStyle in vm.layoutStyles" ng-value="layoutStyle.value">\n          <div layout="column" layout-align="center center">\n            <img ng-src="{{layoutStyle.figure}}">\n            <span class="text-center font-size-12 mt-8">{{layoutStyle.label}}</span>\n          </div>\n        </md-radio-button>\n      </md-radio-group>\n    </div>\n\n    <md-divider></md-divider>\n\n    <div class="theme-option">\n      <div class="option-title">Layout Mode:</div>\n      <md-radio-group layout="row" layout-align="start center" ng-model="vm.layoutMode" ng-change="vm.updateLayoutMode()">\n        <md-radio-button ng-repeat="layoutMode in vm.layoutModes" ng-value="layoutMode.value">\n          {{layoutMode.label}}\n        </md-radio-button>\n      </md-radio-group>\n    </div>\n\n    <md-divider></md-divider>\n\n    <div class="theme-option color-palettes">\n      <div class="option-title">Color Palette:</div>\n      <div layout="row" layout-align="start start" layout-wrap>\n        <md-button ng-repeat="(themeName, theme) in vm.themes.list" class="md-raised theme-button" layout="row" layout-align="center center" aria-label="{{themeName}}" ng-click="vm.setActiveTheme(themeName)" ng-style="{\'background-color\': theme.primary.color,\'border-color\': theme.accent.color,\'color\': theme.primary.contrast1}" ng-class="{active: vm.getActiveTheme().name === themeName}">\n          <md-icon ng-style="{\'color\': theme.primary.contrast1}" md-font-icon="icon-palette" class="icon s32"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n</md-sidenav>'),e.put("app/errors/404/error-404.html",'<div id="error-404" layout="column" layout-align="center center">\n  <div class="content" layout="column" layout-align="center center">\n    <div class="error-code" translate="ERROR404.CODE">404</div>\n\n    <div class="message" translate="ERROR404.MESSAGE">Sorry but we couldn’t find the page you are looking for</div>\n    <ms-search-bar on-search="vm.search(query)" on-result-click="vm.searchResultClick(item)" debounce="300">Search for anything</ms-search-bar>\n\n    \x3c!-- <div class="search md-whiteframe-1dp" layout="row" layout-align="start center">\n            <md-icon md-font-icon="icon-magnify" class="icon s24"></md-icon>\n            <input ng-model="vm.search" type="text" placeholder="Search for anything" translate translate-attr-placeholder="ERROR404.SEARCH" flex>\n        </div> --\x3e\n\n    <a class="md-button md-raised md-primary back-link" href="/" translate="ERROR404.GO_BACK">Go back to dashboard</a>\n  </div>\n</div>'),e.put("app/errors/500/error-500.html",'<div id="error-500" layout="column" layout-align="center center">\n  <div ng-if="!vm.send" class="content" layout="column" layout-align="center center">\n    <div class="error-code" translate="ERROR500.CODE">500</div>\n    <div class="message" translate="ERROR500.MESSAGE">Well, you broke the internet!</div>\n    <div class="sub-message" translate="ERROR500.SUBMESSAGE">Just kidding, looks like we have an internal issue, please try again in couple minutes\n    </div>\n    <a class="md-button md-raised md-primary back-link" href="/" translate="ERROR500.GO_BACK">Go back to dashboard</a>\n    <md-button class="md-raised md-warn" ng-click="vm.sendReport()" translate="ERROR500.REPORT">Report this problem</md-button>\n  </div>\n  <pre ng-if="!vm.send">\n  {{vm.error}}\n  </pre>\n  <div ng-if="vm.send" class="content" layout="column" layout-align="center center">\n    <div class="error-code">#{{vm.code}}</div>\n    <div class="message" translate="ERROR500.JIRA_MESSAGE">Your request has been received and will be processed shortly.</div>\n    <div class="sub-message" translate="ERROR500.JIRA_SUBMESSAGE">Sorry for the inconvenience. If you have any questions or concerns, please do not hesitate to contact us.</div>\n    <a class="md-button md-raised md-primary back-link" href="/" translate="ERROR500.GO_BACK">Go back to dashboard</a>\n  </div>\n</div>'),e.put("app/footer/layouts/vertical-navigation/footer.html",'<div layout="row" layout-align="start center">\n  <ms-info-bar ng-if="!vm.cookieAlertHide" on-close="vm.cookieAlertOnClose()" class="grey-100-bg">\n    <div layout="row" layout-align="start center">\n      <span translate="FOOTER.COOKIE_LAW" flex class="text-center grey-600-fg"></span>\n    </div>\n  </ms-info-bar>\n</div>'),e.put("app/forgot/forgot.html",'<div id="forgot-password" class="flex-scrollable" layout="column" ms-scroll ng-init="vm.onInit()">\n  <div id="forgot-password-form-wrapper" layout="column" layout-align="center center">\n    <div id="forgot-password-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n\n      <div class="title" translate="FORGOTPASSWORD.TITLE">Recover your password</div>\n\n      <form name="forgotPasswordForm" novalidate>\n        <md-input-container class="md-block" md-no-float>\n          <input type="email" name="email" ng-model="vm.form.email" placeholder="Email address" translate translate-attr-placeholder="FORGOTPASSWORD.EMAIL_ADRESS" ng-pattern="/^.+@.+\\..+$/" required>\n          <div ng-messages="forgotPasswordForm.email.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="FORGOTPASSWORD.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n            </div>\n            <div ng-message="pattern">\n              <span translate="FORGOTPASSWORD.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-button type="button" ng-click="vm.forgotPassword()" class="md-raised md-accent submit-button" aria-label="RESET MY PASSWORD" ng-disabled="forgotPasswordForm.$invalid || forgotPasswordForm.$pristine" translate="FORGOTPASSWORD.SEND_RESET_LINK" translate-attr-aria-label="FORGOTPASSWORD.SEND_RESET_LINK">\n          SEND RESET LINK\n        </md-button>\n      </form>\n\n      <div class="login" layout="row" layout-align="center center">\n        <a class="link" ui-sref="app.login" translate="FORGOTPASSWORD.GO_BACK">Go back to login</a>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/header/layouts/vertical-navigation/header.html",'\x3c!-- <div layout="row" layout-align="start center">\n    <ms-info-bar ng-if="vm.currentUser.role == \'admin\' && !vm.newsAlertHide" on-close="vm.newsAlertOnClose()" class="green-600-bg white-fg">\n        <div layout="row" layout-align="start center">\n            <md-icon md-font-icon="icon-message-text-outline" class="icon margin-right-10 s20"></md-icon>\n            <div flex hide-xs translate="HEADER.NEWS"></div>\n        </div>\n    </ms-info-bar>\n</div> --\x3e'),e.put("app/login/login.html",'<div id="login" class="flex-scrollable" layout="column" ms-scroll>\n  <div id="login-form-wrapper" layout="column" layout-align="center center">\n    <div id="login-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n      \x3c!-- <img src="assets/images/logos/login.png" alt="motion_logo_login" /> --\x3e\n\n      <div class="md-subhead padding-top-45" translate="LOGIN.TITLE">Log in to your account</div>\n\n      <form name="loginForm" novalidate ng-if="!vm.progressLogin">\n        <md-input-container class="md-block" md-no-float>\n          <input type="input" name="name" ng-model="vm.form.name" autofocus aria-label="username" translate translate-attr-placeholder="LOGIN.USERNAME" required>\n          <div ng-messages="loginForm.name.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="LOGIN.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="password" ng-model="vm.form.password" aria-label="password" translate translate-attr-placeholder="LOGIN.PASSWORD" required>\n          <div ng-messages="loginForm.password.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="LOGIN.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <div class="remember-forgot-password" layout="row" layout-xs="column" layout-align="end center">\n          \x3c!-- <md-checkbox class="remember-me" ng-model="data.cb1" aria-label="Remember Me">\n                        <span translate="LOGIN.REMEMBER_ME">Remember Me</span>\n                    </md-checkbox> --\x3e\n          <a ui-sref="app.forgot" class="forgot-password md-accent-color" style="cursor:pointer;" translate="LOGIN.FORGOT_PASSWORD">Forgot Password?</a>\n        </div>\n\n        <b layout="row" layout-align="center center" class="md-padding" ng-if="vm.message">\n          <font color="red">{{vm.message}}</font>\n        </b>\n        <md-button type="submit" ng-click="vm.login()" class="md-raised md-accent submit-button" aria-label="LOGIN" translate="LOGIN.LOG_IN" translate-attr-aria-label="LOGIN.LOG_IN">\n          LOG IN\n        </md-button>\n      </form>\n\n      <md-progress-circular ng-if="vm.progressLogin" md-diameter="96"></md-progress-circular>\n\n      <div ng-if="vm.googleSsoEnabled" class="separator">\n        <span class="text" translate="LOGIN.OR">OR</span>\n      </div>\n\n      <md-button ng-if="vm.googleSsoEnabled" ng-click="vm.loginOauth(\'google\')" class="md-raised google">\n        <div layout="row" layout-align="center center">\n          <span>\n            <md-icon md-font-icon="fab fa-google" class="s16"></md-icon>\n            <span translate="LOGIN.WITH_GOOGLE">Log in with Google</span>\n          </span>\n        </div>\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/analytics/views/extractedReports/create/dialog.html",'<md-dialog class="extractedReport-dialog" aria-label="New ExtractedReport">\n  <form name="extractedReportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.REPORTNAME">ReportName</label>\n        <input type="" name="name" ng-model="vm.extractedReport.name" ng-required="true" autofocus>\n\n        <div ng-messages="extractedReportForm[\'name\'].$error" ng-show="extractedReportForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.REPORTNAME_REQUIRED">ReportName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input type="" name="basename" ng-model="vm.extractedReport.basename" ng-required="true">\n\n        <div ng-messages="extractedReportForm[\'basename\'].$error" ng-show="extractedReportForm[\'basename\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newExtractedReport" ng-click="vm.saveExtractedReport()" class="send-button md-accent md-raised" ng-disabled="extractedReportForm.$invalid || extractedReportForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newExtractedReport" ng-click="vm.addNewExtractedReport()" class="send-button md-accent md-raised" ng-disabled="extractedReportForm.$invalid" aria-label="ADD" translate="ANALYTICS.ADD_EXTRACTEDREPORT" translate-attr-aria-label="ANALYTICS.ADD_EXTRACTEDREPORT">\n          ADD EXTRACTEDREPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newExtractedReport" ng-click="vm.deleteExtractedReport($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/extractedReports/extractedReports.html",'<div id="extractedReports" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-chart-line" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="ANALYTICS.EXTRACTEDREPORTS">ExtractedReports</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="ANALYTICS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedExtractedReports.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedExtractedReports =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="ANALYTICS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-extractedReports-count">\n          <span>{{vm.selectedExtractedReports.length}}</span>\n          <span translate="ANALYTICS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="ANALYTICS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllExtractedReports()" translate="ANALYTICS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectExtractedReports()" translate="ANALYTICS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedExtractedReports" csv-label="true" filename="extractedReports.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedExtractedReports($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- EXTRACTEDREPORT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedExtractedReports" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getExtractedReports">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'ANALYTICS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'ANALYTICS.REPORTNAME\' | translate }}</th>\n                <th md-column md-order-by="basename">{{ \'ANALYTICS.NAME\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'ANALYTICS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="startDate">{{ \'ANALYTICS.DATE_RANGE_FROM\' | translate }}</th>\n                <th md-column md-order-by="endDate">{{ \'ANALYTICS.DATE_RANGE_TO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'ANALYTICS.GENERATED_AT\' | translate }}</th>\n                <th md-column md-order-by="status">{{ \'ANALYTICS.STATUS\' | translate }}</th>\n                <th md-column md-order-by="output">{{ \'ANALYTICS.OUTPUT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.extractedReports.rows.length">\n                <td md-cell colspan="10">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="extractedReport" md-select-id="id" ng-repeat="extractedReport in vm.extractedReports.rows">\n                <td md-cell ng-if="extractedReport.userpic"><img class="avatar" alt="{{extractedReport.name}}" ng-src="api/users/{{extractedReport.id}}/avatar" /></td>\n                <td md-cell ng-if="!extractedReport.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{extractedReport.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="id ">{{extractedReport.id}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="name ">{{extractedReport.name}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="basename ">{{extractedReport.basename}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="type ">{{extractedReport.type}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="startDate ">{{extractedReport.startDate | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="endDate ">{{extractedReport.endDate | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="createdAt ">{{extractedReport.createdAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="status ">{{extractedReport.status}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="output ">{{extractedReport.output}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(extractedReport, $event    )" translate="ANALYTICS.EDIT_EXTRACTEDREPORT">\n                          Edit ExtractedReport\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="extractedReport.status == \'Completed\'">\n\n                        <md-button ng-click="vm.downloadfile2(extractedReport, $event  , \'analytics/extracted_reports\'   )" translate="ANALYTICS.DOWNLOAD_EXTRACTEDREPORT">\n                          Download ExtractedReport\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(extractedReport, $event    )" translate="ANALYTICS.DELETE_EXTRACTEDREPORT">\n                          Delete ExtractedReport\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.extractedReports.count}}" md-on-paginate="vm.getExtractedReports" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / EXTRACTEDREPORT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/analytics/views/metrics/create/dialog.html",'<md-dialog class="metric-dialog" aria-label="New Metric">\n  <form name="metricForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.metric.name" ng-required="true" autofocus>\n\n        <div ng-messages="metricForm[\'name\'].$error" ng-show="metricForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.TABLE">Table</label>\n        <md-select name="table" ng-model="vm.metric.table" required>\n          <md-option ng-value="\'report_agent\'">Agent Report</md-option>\n          <md-option ng-value="\'report_call\'">Call Report</md-option>\n          <md-option ng-value="\'cdr\'">CDR</md-option>\n          <md-option ng-value="\'chat_websites\'">Chat Website</md-option>\n          <md-option ng-value="\'chat_interactions\'">Chat Interaction</md-option>\n          <md-option ng-value="\'chat_messages\'">Chat Messages</md-option>\n          <md-option ng-value="\'chat_offline_messages\'">Chat Offline Messages</md-option>\n          <md-option ng-value="\'chat_queues\'">Chat Queues</md-option>\n          <md-option ng-value="\'report_chat_queue\'">Chat Report Queue</md-option>\n          <md-option ng-value="\'report_chat_transfer\'">Chat Report Transfer</md-option>\n          <md-option ng-value="\'cm_companies\'">Companies</md-option>\n          <md-option ng-value="\'report_call_transfer\'">Call transfer report</md-option>\n          <md-option ng-value="\'cm_contacts\'">Contacts</md-option>\n          <md-option ng-value="\'report_square\'">CSquare Report</md-option>\n          <md-option ng-value="\'report_square_details\'">CSquare Details Report</md-option>\n          <md-option ng-value="\'report_dial\'">Dial Report</md-option>\n          <md-option ng-value="\'cm_hopper\'">Dialer Hopper Processing</md-option>\n          <md-option ng-value="\'cm_hopper_history\'">Dialer Hopper Logs</md-option>\n          <md-option ng-value="\'cm_hopper_final\'">Dialer Hopper Final</md-option>\n          <md-option ng-value="\'mail_accounts\'">Email Account</md-option>\n          <md-option ng-value="\'mail_interactions\'">Email Interaction</md-option>\n          <md-option ng-value="\'mail_messages\'">Email Messages</md-option>\n          <md-option ng-value="\'mail_queues\'">Email Queues</md-option>\n          <md-option ng-value="\'report_mail_queue\'">Email Report Queue</md-option>\n          <md-option ng-value="\'report_mail_transfer\'">Email Report Transfer</md-option>\n          <md-option ng-value="\'fax_accounts\'">Fax Account</md-option>\n          <md-option ng-value="\'fax_interactions\'">Fax Interaction</md-option>\n          <md-option ng-value="\'fax_messages\'">Fax Messages</md-option>\n          <md-option ng-value="\'fax_queues\'">Fax Queues</md-option>\n          <md-option ng-value="\'report_fax_queue\'">Fax Report Queue</md-option>\n          <md-option ng-value="\'report_fax_transfer\'">Fax Report Transfer</md-option>\n          <md-option ng-value="\'report_jscripty_sessions\'">Jscripty Sessions</md-option>\n          <md-option ng-value="\'report_jscripty_questions\'">Jscripty Questions</md-option>\n          <md-option ng-value="\'report_jscripty_answers\'">Jscripty Answers</md-option>\n          <md-option ng-value="\'cm_lists\'">Lists</md-option>\n          <md-option ng-value="\'report_member\'">Member Report</md-option>\n          <md-option ng-value="\'openchannel_accounts\'">Openchannel Account</md-option>\n          <md-option ng-value="\'openchannel_interactions\'">Openchannel Interaction</md-option>\n          <md-option ng-value="\'openchannel_messages\'">Openchannel Messages</md-option>\n          <md-option ng-value="\'openchannel_queues\'">Openchannel Queues</md-option>\n          <md-option ng-value="\'report_openchannel_queue\'">Openchannel Report Queue</md-option>\n          <md-option ng-value="\'report_openchannel_transfer\'">Openchannel Report Transfer</md-option>\n          <md-option ng-value="\'report_queue\'">Queue Report</md-option>\n          <md-option ng-value="\'sms_accounts\'">SMS Account</md-option>\n          <md-option ng-value="\'sms_interactions\'">SMS Interaction</md-option>\n          <md-option ng-value="\'sms_messages\'">SMS Messages</md-option>\n          <md-option ng-value="\'sms_queues\'">SMS Queues</md-option>\n          <md-option ng-value="\'report_sms_queue\'">SMS Report Queue</md-option>\n          <md-option ng-value="\'report_sms_transfer\'">SMS Report Transfer</md-option>\n          <md-option ng-value="\'users\'">Users</md-option>\n          <md-option ng-value="\'voice_recordings\'">Voice Recordings</md-option>\n          <md-option ng-value="\'whatsapp_accounts\'">Whatsapp Account</md-option>\n          <md-option ng-value="\'whatsapp_interactions\'">Whatsapp Interaction</md-option>\n          <md-option ng-value="\'whatsapp_messages\'">Whatsapp Messages</md-option>\n          <md-option ng-value="\'whatsapp_queues\'">Whatsapp Queues</md-option>\n          <md-option ng-value="\'report_whatsapp_queue\'">Whatsapp Report Queue</md-option>\n          <md-option ng-value="\'report_whatsapp_transfer\'">Whatsapp Report Transfer</md-option>\n        </md-select>\n        <div ng-messages="metricForm[\'table\'].$error" ng-show="metricForm[\'table\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.TABLE_REQUIRED">Table field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.METRIC">Metric</label>\n        <input type="text" name="metric" ng-model="vm.metric.metric" ng-required="true">\n\n        <div ng-messages="metricForm[\'metric\'].$error" ng-show="metricForm[\'metric\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.metric.description">\n\n        <div ng-messages="metricForm[\'description\'].$error" ng-show="metricForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMetric" ng-click="vm.saveMetric()" class="send-button md-accent md-raised" ng-disabled="metricForm.$invalid || metricForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMetric" ng-click="vm.addNewMetric()" class="send-button md-accent md-raised" ng-disabled="metricForm.$invalid" aria-label="ADD" translate="ANALYTICS.ADD_METRIC" translate-attr-aria-label="ANALYTICS.ADD_METRIC">\n          ADD METRIC\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMetric" ng-click="vm.deleteMetric($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/metrics/metrics.html",'<div id="metrics" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-chart-line" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="ANALYTICS.METRICS">Metrics</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="ANALYTICS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMetrics.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMetrics =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="ANALYTICS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-metrics-count">\n          <span>{{vm.selectedMetrics.length}}</span>\n          <span translate="ANALYTICS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="ANALYTICS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMetrics()" translate="ANALYTICS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMetrics()" translate="ANALYTICS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMetrics" csv-label="true" filename="metrics.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMetrics($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- METRIC TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMetrics" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMetrics">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'ANALYTICS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'ANALYTICS.NAME\' | translate }}</th>\n                <th md-column md-order-by="table">{{ \'ANALYTICS.TABLE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'ANALYTICS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.metrics.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="metric" md-select-id="id" ng-repeat="metric in vm.metrics.rows">\n                <td md-cell ng-if="metric.userpic"><img class="avatar" alt="{{metric.name}}" ng-src="api/users/{{metric.id}}/avatar" /></td>\n                <td md-cell ng-if="!metric.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{metric.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="id ">{{metric.id}}</td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="name ">{{metric.name}}</td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="table ">{{ vm.arraytable[metric.table].option }}</td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="description ">{{metric.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(metric, $event    )" translate="ANALYTICS.EDIT_METRIC">\n                          Edit Metric\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(metric, $event    )" translate="ANALYTICS.DELETE_METRIC">\n                          Delete Metric\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.metrics.count}}" md-on-paginate="vm.getMetrics" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / METRIC TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD METRIC BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-metric-button" ng-click="vm.createOrEditMetric($event)" aria-label="add metric" translate translate-attr-aria-label="ANALYTICS.ADD_METRIC">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD METRIC BUTTON --\x3e\n</div>'),e.put("app/main/apps/analytics/views/reports/copy/dialog.html",'<md-dialog class="report-dialog" aria-label="Run Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.COPY_REPORT">Copy Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input name="name" ng-model="vm.report.name" required md-autofocus>\n        <div ng-messages="reportForm.name.$error" ng-show="reportForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label translate="ANALYTICS.SELECT_NODE">Select Node</label>\n        <div js-tree="vm.treeCustomConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.copyReport()" class="send-button md-accent md-raised" ng-disabled="!vm.currentNode" aria-label="COPY" translate="ANALYTICS.COPY_REPORT" translate-attr-aria-label="ANALYTICS.COPY_REPORT">\n          COPY REPORT\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/create/dialog.html",'<md-dialog class="report-dialog" aria-label="New Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.report.name" required md-autofocus>\n        <div ng-messages="reportForm.name.$error" ng-show="reportForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newReport">\n        <label translate="ANALYTICS.TABLE">Table</label>\n        <md-select ng-model="vm.report.table" required>\n          <md-option ng-repeat="table in vm.tables | orderBy:\'name\'" ng-value="table.name">{{table.name}}</md-option>\n        </md-select>\n        <div ng-messages="reportForm.table.$error" ng-show="reportForm.table.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.TABLE_REQUIRED">Table field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.report.description">\n        <div ng-messages="reportForm.description.$error" ng-show="reportForm.description.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-autocomplete ng-if="vm.newReport" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-items="table in vm.tables | filter:vm.searchText" md-item-text="table.name" md-min-length="0" md-selected-item-change="vm.selectedTableChange(table)" placeholder="Select the table to Join">\n        <md-item-template>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{table.name}}</span>\n        </md-item-template>\n        <md-not-found>\n          No states matching "{{vm.searchText}}" were found.\n        </md-not-found>\n      </md-autocomplete>\n\n      <md-card ng-if="vm.newReport" md-theme="default" md-theme-watch ng-repeat="table in vm.joinTables">\n        <md-card-title>\n          <md-card-title-text layout="row">\n            <div layout="row" flex="50">\n              <span class="md-subhead">{{table.name}}</span>\n            </div>\n            <div layout="row" layout-align="end center" flex>\n              <md-button class="md-icon-button" ng-click="vm.removeJoin($index)">\n                <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n              </md-button>\n            </div>\n          </md-card-title-text>\n        </md-card-title>\n        <md-card-content>\n          <md-select ng-model="table.parentKey" placeholder="Select the parent key" ng-init="table.parentFields = []; vm.getFields(table, \'parentFields\', vm.report.table)" required>\n            <md-option ng-repeat="field in table.parentFields" ng-value="field">{{field}}</md-option>\n          </md-select>\n          <md-select ng-model="table.foreignKey" placeholder="Select the foreign key" ng-init="table.foreignFields = []; vm.getFields(table, \'foreignFields\', table.name)" required>\n            <md-option ng-repeat="field in table.foreignFields" ng-value="field">{{field}}</md-option>\n          </md-select>\n          <md-select ng-model="table.type" placeholder="Select join type" required>\n            <md-option ng-repeat="join in vm.joinTypes" ng-value="join.key">{{join.value}}</md-option>\n          </md-select>\n        </md-card-content>\n      </md-card>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newReport" ng-click="vm.saveReport()" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid || reportForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newReport" ng-click="vm.addNewReport()" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid || reportForm.$pristine" aria-label="ADD" translate="ANALYTICS.ADD_REPORT" translate-attr-aria-label="ANALYTICS.ADD_REPORT">\n          ADD REPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newReport" ng-click="vm.deleteReport($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/edit/condition/group.html",'<md-card class="padding-horizontal-15 padding-top-15">\n  <div layout="row" ng-if="vm_rc.crudPermissions.canEdit">\n    <md-input-container class="md-block" flex>\n      <label translate="ANALYTICS.OPERATOR">Operator</label>\n      <md-select ng-model="group.operator" required>\n        <md-option value="AND">AND</md-option>\n        <md-option value="OR">OR</md-option>\n      </md-select>\n      <div ng-messages="conditionsForm.operator.$error" ng-show="conditionsForm.operator.$touched" role="alert">\n        <div ng-message="required">\n          <span translate="ANALYTICS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n        </div>\n      </div>\n    </md-input-container>\n    <md-input-container class="md-block">\n      <md-button class="md-raised md-accent" ng-click="vm_rc.addCondition(group.rules)">\n        <md-icon md-font-icon="icon-plus"></md-icon> {{\'ANALYTICS.CONDITION\' | translate}}\n      </md-button>\n    </md-input-container>\n    <md-input-container class="md-block">\n      <md-button class="md-raised md-accent" ng-click="vm_rc.addGroup(group.rules)">\n        <md-icon md-font-icon="icon-plus"></md-icon> {{\'ANALYTICS.GROUP\' | translate}}\n      </md-button>\n    </md-input-container>\n    <div flex></div>\n    <md-input-container class="md-block" ng-if="parent">\n      <md-button class="md-raised md-warn" ng-click="vm_rc.deleteConfirm(parent, index, $event)">\n        <md-icon md-font-icon="icon-delete"></md-icon> {{\'ANALYTICS.GROUP\' | translate}}\n      </md-button>\n    </md-input-container>\n  </div>\n  <div layout="column" ng-repeat="rule in group.rules track by $index">\n    <div layout="row" ng-if="!rule.group">\n      <md-input-container class="md-block" flex>\n        <label translate="ANALYTICS.COLUMN">COLUMN</label>\n        <md-select name="field" ng-model="rule.field" ng-disabled="!vm_rc.crudPermissions.canEdit" required>\n          <md-optgroup label="{{vm_rc.report.table}}">\n            <md-option ng-repeat="column in vm_rc.columns" value="{{vm_rc.report.table}}.{{column}}">{{column}}</md-option>\n          </md-optgroup>\n          <md-optgroup ng-if="vm_rc.report.joins" ng-repeat="join in vm_rc.report.joins" label="{{join.foreignTable}}">\n            <md-option ng-repeat="field in join.foreignTableFields" value="{{join.foreignTable}}.{{field}}">{{field}}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="conditionsForm.field.$error" ng-show="conditionsForm.field.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.COLUMN_REQUIRED">Column field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" flex>\n        <label translate="ANALYTICS.CONDITION">CONDITION</label>\n        <md-select name="condition" ng-model="rule.condition" ng-disabled="!vm_rc.crudPermissions.canEdit" required>\n          <md-option ng-repeat="condition in vm_rc.conditions" ng-value="condition">{{condition}}</md-option>\n        </md-select>\n        <div ng-messages="conditionsForm.condition.$error" ng-show="conditionsForm.condition.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm_rc.isValueByCondition(rule.condition)" class="md-block" flex>\n        <label translate="ANALYTICS.VALUE">VALUE</label>\n        <input type="text" name="value" ng-model="rule.value" ng-disabled="!vm_rc.crudPermissions.canEdit" required md-autofocus>\n        <div ng-messages="conditionsForm.value.$error" ng-show="conditionsForm.value.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm_rc.crudPermissions.canEdit" flex>\n        <md-button class="md-fab md-mini md-warn" aria-label="Delete row" ng-click="vm_rc.deleteConfirm(group.rules, $index, $event)">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </md-input-container>\n    </div>\n    <div ng-if="rule.group" ng-include="\'app/main/apps/analytics/views/reports/edit/condition/group.html\'" ng-init="parent=group.rules;index=$index;group=rule.group"></div>\n  </div>\n</md-card>'),e.put("app/main/apps/analytics/views/reports/edit/field/dialog.html",'<md-dialog class="reportField-dialog" aria-label="New Report Field">\n  <form name="reportFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{vm.title}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <pre></pre>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.reportField.type" ng-change="vm.reportField.field = undefined" required>\n          <md-option value="column">Select a column</md-option>\n          <md-option value="metric">Select an existing metric</md-option>\n          <md-option value="custom">Write a custom metric</md-option>\n        </md-select>\n        <div ng-messages="reportForm.type.$error" ng-show="reportForm.type.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-switch on="vm.reportField.type">\n        <md-input-container class="md-block" ng-switch-when="column">\n          <label translate="ANALYTICS.COLUMN">Column Name</label>\n          <md-select name="column" ng-model="vm.reportField.field" required>\n            <md-optgroup label="{{vm.report.table}}">\n              <md-option ng-repeat="column in vm.columns" value="{{vm.report.table}}.{{column}}">{{column}}</md-option>\n              \x3c!-- <md-option ng-repeat="column in vm.columns" ng-value="">{{column}}</md-option> --\x3e\n            </md-optgroup>\n            <md-optgroup ng-if="vm.report.joins" ng-repeat="join in vm.report.joins" label="{{join.foreignTable}}">\n              <md-option ng-repeat="field in join.foreignTableFields" value="{{join.foreignTable}}.{{field}}">{{field}}</md-option>\n            </md-optgroup>\n          </md-select>\n          <div ng-messages="reportForm.column.$error" ng-show="reportForm.column.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="ANALYTICS.ERRORS.COLUMN_REQUIRED">Column field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" ng-switch-when="metric">\n          <label translate="ANALYTICS.METRIC_NAME">Metric Name</label>\n          <md-select name="metric" ng-model="vm.reportField.MetricId" required>\n            <md-option ng-repeat="metric in vm.metrics" ng-value="metric.id">{{metric.name}}</md-option>\n          </md-select>\n          <div ng-messages="reportForm.metric.$error" ng-show="reportForm.metric.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="ANALYTICS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" ng-switch-when="custom">\n          <label translate="ANALYTICS.CUSTOM_METRIC">Custom Metric</label>\n          <input type="text" name="field" ng-model="vm.reportField.field" required md-autofocus>\n          <div ng-messages="reportFieldForm.field.$error" ng-show="reportFieldForm.field.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="ANALYTICS.ERRORS.CUSTOM_METRIC_REQUIRED">Custom Metric field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.reportField.alias" ng-required="vm.reportField.type === \'custom\' || vm.reportField.type === \'metric\'">\n        <div ng-messages="reportFieldForm.alias.$error" ng-show="reportFieldForm.alias.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.reportField.type !== \'metric\'">\n        <label translate="ANALYTICS.FUNCTION">Function</label>\n        <md-select name="function" ng-model="vm.reportField.function">\n          <md-option ng-value="null">No Function</md-option>\n          <md-option ng-repeat="function in vm.sqlUtil.getFunctions" ng-value="function.value">{{function.value}}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.reportField.type !== \'metric\'">\n        <label translate="ANALYTICS.FORMAT">Format</label>\n        <md-select name="format" ng-model="vm.reportField.format">\n          <md-option ng-value="null">No Format</md-option>\n          <md-option ng-repeat="format in vm.sqlUtil.getFormats" ng-value="format.value">{{format.value}}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.GROUP_BY">Group By</label>\n        <md-select name="groupBy" ng-model="vm.reportField.groupBy">\n          <md-option ng-repeat="gb in vm.sqlUtil.getGroupBy" ng-value="gb.value">{{gb.value ? \'Yes\' : \'No\'}}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.ORDER_BY">Order By</label>\n        <md-select name="orderBy" ng-model="vm.reportField.orderBy">\n          <md-option ng-value="null">No Order</md-option>\n          <md-option ng-repeat="ob in vm.sqlUtil.getOrderBy" ng-value="ob.value">{{ob.value}}</md-option>\n        </md-select>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newReportField" ng-click="vm.saveReportField()" class="send-button md-accent md-raised" ng-disabled="reportFieldForm.$invalid || reportFieldForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newReportField" ng-click="vm.addNewReportField()" class="send-button md-accent md-raised" ng-disabled="reportFieldForm.$invalid || reportFieldForm.$pristine" aria-label="ADD" translate="ANALYTICS.ADD_REPORTFIELD" translate-attr-aria-label="ANALYTICS.ADD_REPORTFIELD">\n          ADD REPORT FIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newReportField" ng-click="vm.deleteReportField($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/edit/view.html",'<div id="analytics-report" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-reports-button md-icon-button" aria-label="Go to reports" ng-click="vm.gotoReports()" translate translate-attr-aria-label="ANALYTICS.GO_TO_ANALYTICSQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="report-image" hide-xs>\n          <img ng-src="assets/images/business/reports.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.report.id}} {{vm.report.name}}\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="ANALYTICS.CREATED_AT"></span> <span>{{vm.report.createdAt | date:\'medium\'}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span>{{vm.report.description}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveReport()" ng-disabled="generalForm.$pristine && conditionsForm.$pristine" class="send-button md-accent md-raised" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="ANALYTICS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="ANALYTICS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="ANALYTICS.NAME">Name</label>\n                <input type="text" name="name" ng-disabled="!vm.crudPermissions.canEdit" ng-model="vm.report.name" required md-autofocus>\n                <div ng-messages="generalForm.name.$error" ng-show="generalForm.name.$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="ANALYTICS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-disabled="!vm.crudPermissions.canEdit" ng-model="vm.report.description">\n                <div ng-messages="generalForm.description.$error" ng-show="generalForm.description.$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="ANALYTICS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="ANALYTICS.FIELDS">FIELDS</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container fields md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ReportFieldsController as vm_rf" ng-init="vm_rf.init(vm.report, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_rf.selectedReportFields.length">\n                <div class="md-toolbar-tools">\n                  <div layout="row" layout-align="start center">\n                    <div layout="column" layout-align="start start">\n                      <div class="md-subhead" translate="ANALYTICS.FIELDS">\n                        <span translate="ANALYTICS.FIELDS">FIELDS</span>\n                      </div>\n                      <div class="h4">\n                        <span translate="ANALYTICS.TABLE">TABLE</span> <span class="text-bold">{{vm.report.table}}</span>\n                      </div>\n                      <div class="h4" ng-if="vm.report.joins && vm.report.joins.length && vm.isArray(vm.report.joins)">\n                        <span>Join</span> <span class="text-bold">{{ vm.mapArray(vm.report.joins, \'foreignTable\') }}</span>\n                      </div>\n                    </div>\n                  </div>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm_rf.query.filter = query" on-collapse="vm_rf.query.filter = undefined" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-if="vm_rf.crudPermissions.canEdit" ng-click="vm_rf.createOrEditReportField($event)" aria-label="add field" translate translate-attr-label="ANALYTICS.ADD_FIELD">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_rf.selectedReportFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_rf.selectedReportFields.length}} {{vm_rf.selectedReportFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_rf.deleteSelectedReportFields($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table md-row-select="vm_rf.crudPermissions.canDelete" multiple ng-model="vm_rf.selectedReportFields" md-progress="vm_rf.promise">\n                  <thead md-head md-order="vm_rf.query.sort" md-on-reorder="vm_rf.getReportFields">\n                    <tr md-row>\n                      <th md-column width="10px" ng-if="vm_rf.crudPermissions.canEdit">\n                        <md-icon md-font-icon="icon-drag-vertical"></md-icon>\n                      </th>\n                      <th md-column>Type</th>\n                      <th md-column>Column or Metric</th>\n                      <th md-column>Alias</th>\n                      <th md-column>Function</th>\n                      <th md-column>Format</th>\n                      <th md-column>Group By</th>\n                      <th md-column>Order By</th>\n                      <th md-column width="10px" ng-if="vm_rf.crudPermissions.canEdit"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body ng-sortable="vm_rf.sortableTable">\n                    <tr md-row md-select="reportField" md-select-id="id" ng-repeat="reportField in vm_rf.reportFields.rows">\n                      <td md-cell class="handle" ng-if="vm_rf.crudPermissions.canEdit">\n                        <md-icon md-font-icon="icon-drag-vertical" class="s16"></md-icon>\n                      </td>\n                      <td md-cell>\n                        <div ng-if="reportField.MetricId && !reportField.custom" ng-click="vm_rf.createOrEditReportField($event, reportField)" class="icon icon-shape-plus s16"></div>\n                        <div ng-if="!reportField.MetricId && reportField.custom" ng-click="vm_rf.createOrEditReportField($event, reportField)" class="icon icon-pencil-box-outline s16"></div>\n                        <div ng-if="!reportField.MetricId && !reportField.custom" ng-click="vm_rf.createOrEditReportField($event, reportField)" class="icon icon-view-column s16"></div>\n                      </td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)">{{reportField.MetricId ? vm_rf.getMetricName(reportField.MetricId) : reportField.field}}</td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)">{{reportField.alias}}</td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.function">{{reportField.function}}</span><span ng-if="!reportField.function">--</span></td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.format">{{reportField.format}}</span><span ng-if="!reportField.format">--</span></td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.groupBy">YES</span><span ng-if="!reportField.groupBy">--</span></td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.orderBy">{{reportField.orderBy}}</span><span ng-if="!reportField.orderBy">--</span></td>\n                      <td md-cell class="actions" ng-if="vm_rf.crudPermissions.canEdit">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_rf.createOrEditReportField($event, reportField)" translate="ANALYTICS.EDIT_REPORTFIELD">\n                                Edit Field\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item>\n                              <md-button ng-click="vm_rf.deleteConfirm(reportField, $event)" translate="ANALYTICS.DELETE_REPORTFIELD">\n                                Delete Field\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="ANALYTICS.CONDITIONS">CONDITIONS</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container conditions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ReportConditionsController as vm_rc" ng-init="vm_rc.init(vm.report, vm.crudPermissions)">\n              <div class="pb-16" layout="row" layout-align="start center">\n                <div class="h2 secondary-text" translate="ANALYTICS.CONDITION">CONDITION</div>\n              </div>\n              <form name="conditionsForm" novalidate>\n                <div ng-if="vm_rc.report.condition.group" ng-include="\'app/main/apps/analytics/views/reports/edit/condition/group.html\'" ng-init="group=vm_rc.report.condition.group"></div>\n              </form>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab md-on-select="vm.previewReport()">\n        <md-tab-label>\n          <span translate="ANALYTICS.PREVIEW">PREVIEW</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container result md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n              <div ng-if="!vm.error" class="h2 secondary-text" translate="ANALYTICS.LIMITED_RESULT">LIMITED RESULT</div>\n            </div>\n            <dl ng-if="vm.error">\n              <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n              <dd>{{vm.error.sql}}</dd>\n              <dt translate="ANALYTICS.MESSAGE">Message</dt>\n              <dd>{{vm.error.msg}}</dd>\n            </dl>\n            <md-table-container ng-if="!vm.error">\n              <table md-table>\n                <thead md-head>\n                  <tr md-row>\n                    <th ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n                  </tr>\n                </thead>\n                <tbody md-body>\n                  <tr md-row ng-repeat="row in vm.rows">\n                    <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n                  </tr>\n                  <tr md-row ng-if="!vm.rows.length">\n                    <td md-cell colspan="{{vm.columns.length}}"><span translate="ANALYTICS.NO_DATA">NO DATA</span></td>\n                  </tr>\n                </tbody>\n              </table>\n            </md-table-container>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab md-on-select="vm.queryReport()">\n        <md-tab-label>\n          <span>Query</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container result md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n              <div ng-if="!vm.error" class="h2 secondary-text">SQL</div>\n            </div>\n            <dl ng-if="vm.error">\n              <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n              <dd>{{vm.error.sql}}</dd>\n              <dt translate="ANALYTICS.MESSAGE">Message</dt>\n              <dd>{{vm.error.msg}}</dd>\n            </dl>\n            <div ng-if="!vm.error">\n              {{vm.queryResult}}\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/analytics/views/reports/preview/dialog.html",'<md-dialog aria-label="Run Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.PREVIEW_REPORT">Preview Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n          <div ng-if="!vm.error" class="h2 secondary-text" translate="ANALYTICS.LIMITED_RESULT">LIMITED RESULT</div>\n        </div>\n        <dl ng-if="vm.error">\n          <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n          <dd>{{vm.error.sql}}</dd>\n          <dt translate="ANALYTICS.MESSAGE">Message</dt>\n          <dd>{{vm.error.msg}}</dd>\n        </dl>\n        <md-table-container ng-if="!vm.error">\n          <table md-table md-progress="vm.promise">\n            <thead md-head>\n              <tr md-row>\n                <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-repeat="row in vm.rows">\n                <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n              </tr>\n              <tr md-row ng-if="!vm.rows.length">\n                <td md-cell colspan="{{vm.columns.length}}"><span translate="ANALYTICS.NO_DATA">NO DATA</span></td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div flex></div>\n      <md-button type="submit" ng-click="vm.closeDialog()" class="md-raised" aria-label="CLOSE" translate="ANALYTICS.CLOSE" translate-attr-aria-label="ANALYTICS.CLOSE">\n        CLOSE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/reports.html",'<div id="reports" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-chart-line" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="ANALYTICS.REPORTS">Reports</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedReports.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedReports =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="ANALYTICS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-reports-count">\n          <span>{{vm.selectedReports.length}}</span>\n          <span translate="ANALYTICS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="ANALYTICS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllReports()" translate="ANALYTICS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectReports()" translate="ANALYTICS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedReports" csv-label="true" filename="reports.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button ng-if="vm.crudPermissions.canDelete && vm.currentNode.custom" class="md-icon-button" ng-click="vm.deleteSelectedReports($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div layout="column" flex="30">\n      <md-card class="padding-top-5 padding-horizontal-10 padding-bottom-0">\n        \x3c!-- SEARCH --\x3e\n        <div layout="row" layout-align="start center">\n          <label for="searchFolder" class="m-0">\n            <md-icon md-font-icon="icon-magnify"></md-icon>\n          </label>\n          <md-input-container md-no-float class="margin-horizontal-0 margin-bottom-0 margin-top-10" flex>\n            <input id="searchFolder" placeholder="Search folder" type="text" ng-model="vm.search" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="ANALYTICS.SEARCH_FOR_FOLDER">\n          </md-input-container>\n        </div>\n        \x3c!-- / SEARCH --\x3e\n      </md-card>\n      <md-card class="padding-10 scrollable" ms-scroll>\n        <div js-tree="vm.treeDefaultConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n      </md-card>\n      <md-card class="padding-10 scrollable" ms-scroll>\n        <div js-tree="vm.treeCustomConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n      </md-card>\n    </div>\n    <md-card flex="70">\n      <md-toolbar class="md-table-toolbar md-default">\n        <div class="md-toolbar-tools">\n          <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n          <p ng-if="vm.currentPath">\n            <span class="text-boxed">{{vm.currentPath}}</span>\n          </p>\n          <div flex></div>\n          <ms-search-bar on-search="vm.getReports()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300"></ms-search-bar>\n          <div flow-init flow-file-added="vm.importReport($file, $event, $flow)">\n            <md-button ng-if="vm.crudPermissions.canEdit && vm.currentNode.custom" class="md-icon-button" aria-label="import report" translate translate-attr-label="ANALYTICS.IMPORT_REPORT" flow-btn>\n              <md-icon md-font-icon="icon-upload"></md-icon>\n            </md-button>\n          </div>\n          <md-button ng-if="vm.crudPermissions.canEdit && vm.currentNode.custom" class="md-icon-button" ng-click="vm.createOrEditReport($event)" aria-label="add report" translate translate-attr-label="ANALYTICS.ADD_REPORT">\n            <md-icon md-font-icon="icon-plus"></md-icon>\n          </md-button>\n        </div>\n      </md-toolbar>\n      <md-table-container>\n        <table md-table md-row-select multiple ng-model="vm.selectedReports" md-progress="vm.promise">\n          <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n            <tr md-row>\n              <th md-column md-order-by="id" width="10px">{{ \'ANALYTICS.ID\' | translate }}</th>\n              <th md-column md-order-by="name">{{ \'ANALYTICS.NAME\' | translate }}</th>\n              <th md-column md-order-by="description">{{ \'ANALYTICS.DESCRIPTION\' | translate }}</th>\n              <th md-column md-order-by="createdAt">{{ \'ANALYTICS.CREATED_AT\' | translate }}</th>\n              <th md-column width="10px"></th>\n            </tr>\n          </thead>\n          <tbody md-body>\n            <tr md-row ng-hide="vm.reports.rows.length">\n              <td md-cell colspan="5">\n                <div layout="row" layout-align="center center">\n                  <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                </div>\n              </td>\n            </tr>\n            <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="id">{{report.id}}</td>\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="name">{{report.name}}</td>\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="description">{{report.description}}</td>\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="createdAt">{{report.createdAt | date:\'medium\'}}</td>\n              <td md-cell class="actions">\n                <md-menu>\n                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                  </md-button>\n\n                  <md-menu-content width="3">\n                    <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                      <md-button ng-click="vm.copydialog(report, $event)" translate="ANALYTICS.COPY_REPORT">\n                        Copy Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item>\n                      <md-button ng-click="vm.previewdialog(report, $event)" translate="ANALYTICS.PREVIEW_REPORT">\n                        Preview Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item>\n                      <md-button ng-click="vm.rundialog(report, $event)" translate="ANALYTICS.RUN_REPORT">\n                        Run Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item>\n                      <md-button ng-click="vm.downloadfile(report, $event)" translate="ANALYTICS.DOWNLOAD_JSON_REPORT">\n                        Download Json Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-divider ng-if="vm.crudPermissions.canEdit && vm.crudPermissions.canDelete && vm.currentNode.custom">\n                    </md-menu-divider>\n                    <md-menu-item ng-if="vm.crudPermissions.canEdit && vm.currentNode.custom">\n                      <md-button ng-click="vm.editstate(report, $event)" translate="ANALYTICS.EDIT_REPORT">\n                        Edit Report\n                      </md-button>\n                    </md-menu-item>\n\n                    <md-menu-item ng-if="vm.crudPermissions.canDelete && vm.currentNode.custom">\n                      <md-button ng-click="vm.deleteconfirm(report, $event)" translate="ANALYTICS.DELETE_REPORT">\n                        Delete Report\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </td>\n            </tr>\n          </tbody>\n        </table>\n      </md-table-container>\n\n      <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.reports.count}}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n    </md-card>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/analytics/views/reports/run/dialog.html",'<md-dialog class="report-dialog" aria-label="Run Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.RUN_REPORT">Run Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input name="name" ng-model="vm.export.name" required md-autofocus>\n        <div ng-messages="reportForm.name.$error" ng-show="reportForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.FORMAT">FORMAT</label>\n        <md-select name="format" ng-model="vm.export.output" required>\n          <md-option value="csv">CSV</md-option>\n          <md-option value="xlsx">Excel (XLSX)</md-option>\n          <md-option value="pdf">PDF</md-option>\n          <md-option value="web">Web</md-option>\n        </md-select>\n        <div ng-messages="reportForm.format.$error" ng-show="reportForm.format.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.FORMAT_REQUIRED">Format field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div layout="row">\n        <div class="md-block" flex>\n          <mdp-date-picker mdp-open-on-click required name="dateRangeFrom" mdp-placeholder="Date Range From" mdp-format="YYYY-MM-DD" mdp-max-date="vm.dateRangeTo" ng-model="vm.export.startDate">\n            <div ng-messages="reportForm.dateRangeFrom.$error" ng-show="reportForm.dateRangeFrom.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_REQUIRED">Date Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_INVALID">Date Range From field is invalid</span>\n              </div>\n              <div ng-message="maxDate">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_MAX_INVALID">Date Range From Max field is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n        <div class="md-block" flex>\n          <mdp-date-picker mdp-open-on-click required name="dateRangeTo" mdp-placeholder="Date Range To" mdp-format="YYYY-MM-DD" mdp-min-date="vm.dateRangeFrom" ng-model="vm.export.endDate">\n            <div ng-messages="reportForm.dateRangeTo.$error" ng-show="reportForm.dateRangeTo.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_TO_REQUIRED">Date Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_TO_INVALID">Date Range From field is invalid</span>\n              </div>\n              <div ng-message="minDate">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_MIN_INVALID">Date Range From Min field is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n      </div>\n      <div layout="row">\n        <div class="md-block" flex>\n          <mdp-time-picker required name="timeRangeFrom" mdp-placeholder="Time Range From" mdp-format="HH:mm:ss" mdp-auto-switch="true" mdp-max-date="vm.dateRangeTo" ng-model="vm.export.startDate">\n            <div ng-messages="reportForm.timeRangeFrom.$error" ng-show="reportForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_FROM_REQUIRED">Time Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex>\n          <mdp-time-picker required name="timeRangeTo" mdp-placeholder="Time Range To" mdp-format="HH:mm:ss" mdp-auto-switch="true" mdp-min-date="vm.dateRangeFrom" ng-model="vm.export.endDate">\n            <div ng-messages="reportForm.timeRangeTo.$error" ng-show="reportForm.timeRangeTo.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_TO_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.runReport($event)" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid" aria-label="RUN" translate="ANALYTICS.RUN_REPORT" translate-attr-aria-label="ANALYTICS.RUN_REPORT">\n          RUN REPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.refreshDate()" aria-label="REFRESH" translate translate-attr-aria-label="ANALYTICS.REFRESH">\n          <md-icon md-font-icon="icon-refresh"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.REFRESH">REFRESH</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/run/web/dialog.html",'<md-dialog class="web-dialog" aria-label="Show Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.WEB_REPORT">Web Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n        </div>\n        <dl ng-if="vm.error">\n          <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n          <dd>{{vm.error.sql}}</dd>\n          <dt translate="ANALYTICS.MESSAGE">Message</dt>\n          <dd>{{vm.error.msg}}</dd>\n        </dl>\n        <md-table-container ng-if="!vm.error">\n          <table md-table md-progress="vm.promise">\n            <thead md-head>\n              <tr md-row>\n                <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-repeat="row in vm.results.rows">\n                <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n              </tr>\n              <tr md-row ng-if="!vm.results.rows.length">\n                <td md-cell colspan="{{vm.columns.length}}">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_DATA">NO DATA</span>\n                  </div>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.results.count}}" md-on-paginate="vm.getResults" md-page-select></md-table-pagination>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div flex></div>\n      <md-button type="submit" ng-click="vm.closeDialog()" class="md-raised" aria-label="CLOSE" translate="ANALYTICS.CLOSE" translate-attr-aria-label="ANALYTICS.CLOSE">\n        CLOSE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/odbcs/create/dialog.html",'<md-dialog class="odbc-dialog" aria-label="New Odbc">\n  <form name="odbcForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.odbc.name" ng-required="true" autofocus>\n\n        <div ng-messages="odbcForm[\'name\'].$error" ng-show="odbcForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DSN">DSN</label>\n        <input type="text" name="dsn" ng-model="vm.odbc.dsn" ng-required="true">\n\n        <div class="hint"><span translate="CALLYSQUARE.HELP.DSN"></span></div>\n        <div ng-messages="odbcForm[\'dsn\'].$error" ng-show="odbcForm[\'dsn\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.DSN_REQUIRED">DSN field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.odbc.description">\n\n        <div ng-messages="odbcForm[\'description\'].$error" ng-show="odbcForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOdbc" ng-click="vm.saveOdbc()" class="send-button md-accent md-raised" ng-disabled="odbcForm.$invalid || odbcForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOdbc" ng-click="vm.addNewOdbc()" class="send-button md-accent md-raised" ng-disabled="odbcForm.$invalid" aria-label="ADD" translate="CALLYSQUARE.ADD_ODBC" translate-attr-aria-label="CALLYSQUARE.ADD_ODBC">\n          ADD ODBC\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOdbc" ng-click="vm.deleteOdbc($event)" aria-label="DELETE" translate translate-attr-aria-label="CALLYSQUARE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CALLYSQUARE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/odbcs/odbcs.html",'<div id="odbcs" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-sitemap" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CALLYSQUARE.ODBC">ODBC</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CALLYSQUARE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedODBC.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedODBC =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CALLYSQUARE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-odbcs-count">\n          <span>{{vm.selectedODBC.length}}</span>\n          <span translate="CALLYSQUARE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CALLYSQUARE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllODBC()" translate="CALLYSQUARE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectODBC()" translate="CALLYSQUARE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedODBC" csv-label="true" filename="odbcs.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedODBC($event)" aria-label="delete selected" translate translate-attr-label="CALLYSQUARE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- ODBC TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedODBC" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getODBC">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CALLYSQUARE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CALLYSQUARE.NAME\' | translate }}</th>\n                <th md-column md-order-by="dsn">{{ \'CALLYSQUARE.DSN\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CALLYSQUARE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.odbcs.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CALLYSQUARE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="odbc" md-select-id="id" ng-repeat="odbc in vm.odbcs.rows">\n                <td md-cell ng-if="odbc.userpic"><img class="avatar" alt="{{odbc.name}}" ng-src="api/users/{{odbc.id}}/avatar" /></td>\n                <td md-cell ng-if="!odbc.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{odbc.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="id ">{{odbc.id}}</td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="name ">{{odbc.name}}</td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="dsn ">{{odbc.dsn}}</td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="description ">{{odbc.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CALLYSQUARE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(odbc, $event    )" translate="CALLYSQUARE.EDIT_ODBC">\n                          Edit Odbc\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestOdbc(odbc, $event    )" translate="CALLYSQUARE.TEST_ODBC">\n                          Test Odbc\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(odbc, $event    )" translate="CALLYSQUARE.DELETE_ODBC">\n                          Delete Odbc\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CALLYSQUARE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CALLYSQUARE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CALLYSQUARE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.odbcs.count}}" md-on-paginate="vm.getODBC" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / ODBC TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD ODBC BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-odbc-button" ng-click="vm.createOrEditOdbc($event)" aria-label="add odbc" translate translate-attr-aria-label="CALLYSQUARE.ADD_ODBC">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD ODBC BUTTON --\x3e\n</div>'),e.put("app/main/apps/callysquare/views/projects/create/dialog.html",'<md-dialog class="project-dialog" aria-label="New Project">\n  <form name="projectForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{vm.title | translate}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NAME">Name</label>\n        <input name="name" ng-model="vm.project.name" required md-autofocus ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-disabled="!vm.newProject">\n        <div ng-messages="projectForm.name.$error" ng-show="projectForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DESCRIPTION">Description</label>\n        <input name="description" ng-model="vm.project.description">\n        <div ng-messages="projectForm.description.$error" ng-show="projectForm.description.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.openFromEditor" class="md-block">\n        \x3c!-- Added to check if I\'m opening the dialog directly from the square editor --\x3e\n        <md-switch ng-model="vm.newWindow" aria-label="{{\'CALLYSQUARE.OPEN_NEW_WINDOW\' | translate }}"><span translate="CALLYSQUARE.OPEN_NEW_WINDOW"></span></md-switch>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newProject" ng-click="vm.saveProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid || projectForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newProject" ng-click="vm.addNewProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid || projectForm.$pristine" aria-label="ADD" translate="CALLYSQUARE.ADD_PROJECT" translate-attr-aria-label="CALLYSQUARE.ADD_PROJECT">\n          ADD PROJECT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newProject" ng-click="vm.deleteProject($event)" aria-label="DELETE" translate translate-attr-aria-label="CALLYSQUARE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CALLYSQUARE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/dialog/dialog.html",'<md-dialog class="project-dialog" aria-label="New dialog" ng-init="vm.onInit()">\n  <form name="dialogForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.EDIT"></span> <span translate="CALLYSQUARE.{{vm.cellName | uppercase}}"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block" ng-repeat="attribute in vm.attributes" ng-switch="attribute.name">\n        <label translate="CALLYSQUARE.{{attribute.name | uppercase}}">{{attribute.name | ucfirst }}</label>\n\n        \x3c!--  START SELECT INPUT --\x3e\n        <md-select name="{{attribute.name}}" ng-model="attribute.value" ng-disabled="!vm.crudPermissions.canEdit" ng-switch-when-separator="|" ng-switch-when="answer|trunk_name|trunk_id|queue_id|file_id|variable_id|google_cloud_tts_text_type|google_tts_language|ispeech_tts_language|ispeech_asr_language|google_asr_language|hiddendigitspos|odbc_id|project_id|beep|account_id|interval_id|template_id|list_id|recordingFormat|callback_priority|aws_polly_voice|aws_polly_region|aws_lex_region|sms_account_id|findBy|pause_id|aws_text_type|dialogflow_language|ndagenerate_audio|ndaactivity_type|languageCode|ssmlGender|method|dialogflowV2_language" ng-required="attribute.required">\n          <md-option ng-if="attribute.defaultValue" ng-value="\'\'"> - None - </md-option>\n          <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-disabled="v.canSelect === false">{{v.option}}</md-option>\n          <md-option ng-if="!vm.values[attribute.name].length" value="-1">No {{attribute.name}} available!</md-option>\n        </md-select>\n        \x3c!--  END SELECT INPUT --\x3e\n\n        \x3c!--  START SELECT INPUT --\x3e\n        <md-select name="{{attribute.name}}" ng-model="attribute.value" ng-disabled="!vm.crudPermissions.canEdit" ng-switch-when-separator="|" ng-switch-when="sip_id" ng-required="attribute.required">\n          <md-optgroup label="{{\'CALLYSQUARE.AGENTS\' | translate}}">\n            <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-if="v.group === \'agent\'" ng-disabled="v.canSelect === false">{{v.option}}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{\'CALLYSQUARE.TELEPHONES\' | translate}}">\n            <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-if="v.group === \'telephone\'" ng-disabled="v.canSelect === false">{{v.option}}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{\'CALLYSQUARE.USERS\' | translate}}">\n            <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-if="v.group === \'admin\' || v.group === \'user\'">{{v.option}}</md-option>\n          </md-optgroup>\n          <md-option ng-if="!vm.values[attribute.name].length" value="-1">No {{attribute.name}} available!</md-option>\n        </md-select>\n        \x3c!--  END SELECT INPUT --\x3e\n\n        \x3c!--  START NUMBER INPUT --\x3e\n        <div ng-switch-when="timeout">\n          <div ng-switch="vm.cellName">\n            <input ng-switch-when-separator="|" ng-switch-when="answer|ext_dial|dial|queue" type="number" step="any" name="{{attribute.name}}" min="0" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n            <input ng-switch-when-separator="|" ng-switch-when="record|ispeechasr|googleasr" type="number" step="any" name="{{attribute.name}}" min="-1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n            <input ng-switch-when-separator="|" ng-switch-when="restapi" type="number" step="any" name="{{attribute.name}}" min="1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n            <input ng-switch-default type="number" step="any" name="{{attribute.name}}" min="0" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n          </div>\n        </div>\n        <input ng-switch-when-separator="|" ng-switch-when="speed" type="number" step="any" name="{{attribute.name}}" min="-10" max="-10" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n        <input ng-switch-when-separator="|" ng-switch-when="maxdigit|mindigit|digit" type="number" step="any" name="{{attribute.name}}" min="1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n        <input ng-switch-when-separator="|" ng-switch-when="retry|response|hiddendigitsnum|priority" type="number" step="any" name="{{attribute.name}}" min="1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n        \x3c!--  END NUMBER INPUT --\x3e\n\n        \x3c!--  START TEXTAREA INPUT --\x3e\n        <textarea name="{{attribute.name}}" ng-model="attribute.value" ng-switch-when-separator="|" ng-switch-when="query|sms_text|condition|text|custom_action_data|headers|body|rawHeaders|rawBody|private_key" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit"></textarea>\n        \x3c!--  END TEXTAREA INPUT --\x3e\n\n        \x3c!-- START URL INPUT --\x3e\n        <input ng-switch-when-separator="|" ng-switch-when="ndauth_url|ndassistant_url|url" type="url" name="{{attribute.name}}" ng-model="attribute.value" ng-required="attribute.required">\n        \x3c!-- END URL INPUT --\x3e\n\n        \x3c!--  START TEXT INPUT --\x3e\n        <input ng-switch-default name="{{attribute.name}}" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit">\n        <div class=\'hint\' ng-if="attribute.name === \'text\' && vm.cellName === \'tts\' ">\n          <span translate="CALLYSQUARE.HELP.MAX_TEXT_TTS" class="ng-scope">Max 250 chars are supported</span>\n        </div>\n        \x3c!--  END TEXT INPUT--\x3e\n\n        <div class="hint" ng-if="attribute.help">\n          <span translate="CALLYSQUARE.HELP.{{attribute.name | uppercase}}"></span>\n        </div>\n        <div ng-messages="dialogForm[attribute.name].$error" ng-show="dialogForm[attribute.name].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.FIELD_REQUIRED">The field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="vm.crudPermissions.canEdit">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog(true)" class="send-button md-accent md-raised" ng-disabled="dialogForm.$invalid || dialogForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/edit/edit.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="editForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.EDIT_XML"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label>XML</label>\n        <textarea name="preproduction" ng-model="vm.project.preproduction"></textarea>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog(true)" class="send-button md-accent md-raised" ng-disabled="editForm.$invalid" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/import/import.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="importForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.IMPORT_XML"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div id="xml-uploader" flow-init="vm.ngFlowOptions" flow-name="vm.ngFlow.flow" flow-file-added="vm.fileAdded($file)" flow-drop flow-drag-enter="vm.dropping=true" flow-drag-leave="vm.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n        <div class="drop-text hint-text" layout="row" layout-align="center center">\n          <span translate="CALLYSQUARE.DROP_TO_UPLOAD">Drop to upload</span>\n        </div>\n\n        <div class="upload-button" layout="column" layout-align="center center">\n          <md-button class="md-accent md-raised" flow-btn>\n            Upload\n          </md-button>\n          <span class="secondary-text mt-8" translate="CALLYSQUARE.DROP_TO_UPLOAD_MESSAGE">You can also drop files here to upload. Only XML - Max. 5MB</span>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog()" class="send-button md-accent md-raised" ng-disabled="importForm.$invalid" aria-label="CLOSE" translate="CALLYSQUARE.CLOSE" translate-attr-aria-label="CALLYSQUARE.CLOSE">\n          CLOSE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/info/info.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="descriptionFrom" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.UPDATE_INFO"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DESCRIPTION">Description</label>\n        <input name="description" ng-model="vm.project.description" md-autofocus>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NOTES">Description</label>\n        <textarea name="notes" ng-model="vm.project.notes"></textarea>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.save()" class="send-button md-accent md-raised" ng-disabled="descriptionFrom.$invalid" aria-label="SAVE" translate="CALLYSQUARE.UPDATE_INFO" translate-attr-aria-label="CALLYSQUARE.UPDATE">\n          UPDATE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/open/open.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="openForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.OPEN_PROJECT"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.PROJECT">Project</label>\n        <md-select name="id" ng-model="vm.id" required>\n          <md-option value="{{p.id}}" ng-repeat="p in vm.projects">{{p.name}}</md-option>\n        </md-select>\n        <div ng-messages="openForm.id.$error" ng-show="openForm.id.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.PROJECT_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.newWindow" aria-label="{{\'CALLYSQUARE.OPEN_NEW_WINDOW\' | translate }}"><span translate="CALLYSQUARE.OPEN_NEW_WINDOW"></span></md-switch>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog(true)" class="send-button md-accent md-raised" ng-disabled="openForm.$invalid" aria-label="SAVE" translate="CALLYSQUARE.OPEN_PROJECT" translate-attr-aria-label="CALLYSQUARE.OPEN">\n          OPEN\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/permissionadd/permissionadd.html",'<md-dialog class="projects-dialog" aria-label="projects">\n  <form name="projectsForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CALLYSQUARE.PERMISSIONADD_PROJECTS">Add User Permissions</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions"></ms-dual-multiselect>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/saveAs/saveAs.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="newForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.COPY_PROJECT"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NAME">Name</label>\n        <input name="name" ng-model="vm.project.name" required md-autofocus>\n        <div ng-messages="newForm.name.$error" ng-show="newForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.newWindow" aria-label="{{\'CALLYSQUARE.OPEN_NEW_WINDOW\' | translate }}"><span translate="CALLYSQUARE.OPEN_NEW_WINDOW"></span></md-switch>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.save()" class="send-button md-accent md-raised" ng-disabled="newForm.$invalid" aria-label="SAVE" translate="CALLYSQUARE.COPY_PROJECT" translate-attr-aria-label="CALLYSQUARE.COPY">\n          COPY\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/view.html",'<div id="callysquare-project" class="page-layout simple tabbed" layout="column" ng-init="vm.onInit()">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-projects-button md-icon-button" aria-label="Go to projects" ng-click="vm.gotoProjects()" translate translate-attr-aria-label="CALLYSQUARE.GO_TO_PROJECTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="project-image" hide-xs>\n          <img ng-src="assets/images/business/cprojects.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.project.id}} {{vm.project.name}}\n          </div>\n          <div class="subtitle secondary-text text-truncate">\n            <span ng-if="vm.project.description">{{vm.project.description}} - </span><span translate="CALLYSQUARE.CREATED_AT"></span> <span>{{vm.project.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-if="vm.crudPermissions.canEdit" ng-click="vm.updateInfo($event)" class="md-fab md-yellow-700-bg md-icon-button" aria-label="edit">\n        <md-icon md-font-icon="icon-tooltip-edit"></md-icon>\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <md-content class="callysquare-content">\n\n    <div id="geEditor" class="geEditor"></div>\n\n  </md-content>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/callysquare/views/projects/projects.html",'<div id="projects" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-vector-square" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CALLYSQUARE.PROJECTS">Projects</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    \x3c!-- SEARCH --\x3e\n    <div class="search-input-wrapper" layout="row" layout-align="start center">\n      <label for="search">\n        <md-icon md-font-icon="icon-magnify"></md-icon>\n      </label>\n      <md-input-container md-no-float class="m-0">\n        <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CALLYSQUARE.SEARCH_FOR_ANYONE">\n      </md-input-container>\n    </div>\n    \x3c!-- / SEARCH --\x3e\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedProjects.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedProjects =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CALLYSQUARE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-projects-count">\n          <span>{{vm.selectedProjects.length}}</span>\n          <span translate="CALLYSQUARE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CALLYSQUARE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllProjects()" translate="CALLYSQUARE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectProjects()" translate="CALLYSQUARE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedProjects" csv-label="true" filename="projects.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedProjects($event)" aria-label="delete selected" translate translate-attr-label="CALLYSQUARE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      \x3c!-- PROJECT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedProjects" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getProjects">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'CALLYSQUARE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CALLYSQUARE.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CALLYSQUARE.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="notes">{{ \'CALLYSQUARE.NOTES\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.projects.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CALLYSQUARE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="project" md-select-id="id" ng-repeat="project in vm.projects.rows">\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="id ">{{project.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="name ">{{project.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="description ">{{project.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="notes ">{{project.notes}}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CALLYSQUARE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editstate(project, ev)" translate="CALLYSQUARE.EDIT_PROJECT">\n                          Edit Project\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteconfirm(project, ev)" translate="CALLYSQUARE.DELETE_PROJECT">\n                          Delete Project\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CALLYSQUARE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CALLYSQUARE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CALLYSQUARE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.projects.count}}" md-on-paginate="vm.getProjects" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PROJECT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD PROJECT BUTTON --\x3e\n  <md-button class="md-fab md-accent md-icon-button" id="add-project-button" ng-if="vm.crudPermissions.canEdit" ng-click="vm.createOrEditProject($event)" aria-label="add project" translate translate-attr-aria-label="CALLYSQUARE.ADD_PROJECT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD PROJECT BUTTON --\x3e\n\n</div>'),e.put("app/main/apps/callysquare/views/squareRecordings/create/dialog.html",'<md-dialog class="squareRecording-dialog" aria-label="New SquareRecording">\n  <form name="squareRecordingForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.FILENAME">Filename</label>\n        <input type="" name="filename" ng-model="vm.squareRecording.filename" ng-required="true" autofocus>\n\n        <div ng-messages="squareRecordingForm[\'filename\'].$error" ng-show="squareRecordingForm[\'filename\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.FILENAME_REQUIRED">Filename field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSquareRecording" ng-click="vm.saveSquareRecording()" class="send-button md-accent md-raised" ng-disabled="squareRecordingForm.$invalid || squareRecordingForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSquareRecording" ng-click="vm.addNewSquareRecording()" class="send-button md-accent md-raised" ng-disabled="squareRecordingForm.$invalid" aria-label="ADD" translate="CALLYSQUARE.ADD_SQUARERECORDING" translate-attr-aria-label="CALLYSQUARE.ADD_SQUARERECORDING">\n          ADD SQUARERECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSquareRecording" ng-click="vm.deleteSquareRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="CALLYSQUARE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CALLYSQUARE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/squareRecordings/squareRecordings.html",'<div id="squareRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-sitemap" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CALLYSQUARE.SQUARERECORDINGS">SquareRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CALLYSQUARE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSquareRecordings.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSquareRecordings =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CALLYSQUARE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-squareRecordings-count">\n          <span>{{vm.selectedSquareRecordings.length}}</span>\n          <span translate="CALLYSQUARE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CALLYSQUARE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSquareRecordings()" translate="CALLYSQUARE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSquareRecordings()" translate="CALLYSQUARE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSquareRecordings" csv-label="true" filename="squareRecordings.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSquareRecordings($event)" aria-label="delete selected" translate translate-attr-label="CALLYSQUARE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SQUARERECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSquareRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSquareRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="filename">{{ \'CALLYSQUARE.FILENAME\' | translate }}</th>\n                <th md-column md-order-by="projectName">{{ \'CALLYSQUARE.PROJECT\' | translate }}</th>\n                <th md-column md-order-by="uniqueid">{{ \'CALLYSQUARE.UNIQUEID\' | translate }}</th>\n                <th md-column md-order-by="callerid">{{ \'CALLYSQUARE.PHONE\' | translate }}</th>\n                <th md-column md-order-by="extension">{{ \'CALLYSQUARE.EXTEN\' | translate }}</th>\n                <th md-column>{{ \'CALLYSQUARE.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'CALLYSQUARE.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.squareRecordings.rows.length">\n                <td md-cell colspan="8">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CALLYSQUARE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="squareRecording" md-select-id="id" ng-repeat="squareRecording in vm.squareRecordings.rows">\n                <td md-cell ng-if="squareRecording.userpic"><img class="avatar" alt="{{squareRecording.name}}" ng-src="api/users/{{squareRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!squareRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{squareRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="filename ">{{squareRecording.filename}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="projectName ">{{squareRecording.projectName}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="uniqueid ">{{squareRecording.uniqueid}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="callerid ">{{squareRecording.callerid}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="extension ">{{squareRecording.extension}}</td>\n                <td md-cell class="audio " ng-switch="squareRecording.format">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording ng-switch-when=".wav" id="squareRecording.id" model="\'squareRecording\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                  <span ng-switch-when=".gsm|.WAV" ng-switch-when-separator="|">\n                    <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n                  </span>\n                </td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="createdAt ">{{squareRecording.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CALLYSQUARE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadCallySquareRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(squareRecording, $event  , \'square/recordings\'   )" translate="CALLYSQUARE.DOWNLOAD_SQUARERECORDING">\n                          Download SquareRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(squareRecording, $event    )" translate="CALLYSQUARE.DELETE_SQUARERECORDING">\n                          Delete SquareRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CALLYSQUARE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CALLYSQUARE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CALLYSQUARE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.squareRecordings.count}}" md-on-paginate="vm.getSquareRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SQUARERECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/chat/views/chatQueues/chatQueues.html",'<div id="chatQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-hangouts" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CHAT.CHATQUEUES">ChatQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CHAT.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedChatQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedChatQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CHAT.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-chatQueues-count">\n          <span>{{vm.selectedChatQueues.length}}</span>\n          <span translate="CHAT.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CHAT.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllChatQueues()" translate="CHAT.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectChatQueues()" translate="CHAT.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedChatQueues" csv-label="true" filename="chatQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedChatQueues($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CHATQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedChatQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChatQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CHAT.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'CHAT.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.chatQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="chatQueue" md-select-id="id" ng-repeat="chatQueue in vm.chatQueues.rows">\n                <td md-cell ng-if="chatQueue.userpic"><img class="avatar" alt="{{chatQueue.name}}" ng-src="api/users/{{chatQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!chatQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{chatQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatQueue, ev) : vm.createOrEditChatQueue($event, chatQueue)" md-cell class="id ">{{chatQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatQueue, ev) : vm.createOrEditChatQueue($event, chatQueue)" md-cell class="name ">{{chatQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatQueue, ev) : vm.createOrEditChatQueue($event, chatQueue)" md-cell class="strategy ">{{ vm.arraystrategy[chatQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(chatQueue, $event    )" translate="CHAT.EDIT_CHATQUEUE">\n                          Edit ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(chatQueue, $event    )" translate="CHAT.TEAMADD_CHATQUEUE">\n                          teamadd ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(chatQueue, $event    )" translate="CHAT.AGENTADD_CHATQUEUE">\n                          agentadd ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(chatQueue, $event    )" translate="CHAT.DELETE_CHATQUEUE">\n                          Delete ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(chatQueue, $event    )" translate="CHAT.GOTOREALTIME_CHATQUEUE">\n                          goToRealtime ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chatQueues.count}}" md-on-paginate="vm.getChatQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CHATQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CHATQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-chatQueue-button" ng-click="vm.createOrEditChatQueue($event)" aria-label="add chatQueue" translate translate-attr-aria-label="CHAT.ADD_CHATQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CHATQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/chat/views/chatQueues/create/dialog.html",'<md-dialog class="chatQueue-dialog" aria-label="New ChatQueue">\n  <form name="chatQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.chatQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newChatQueue">\n\n        <div class="hint"><span translate="CHAT.HELP.NAME"></span></div>\n        <div ng-messages="chatQueueForm[\'name\'].$error" ng-show="chatQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="CHAT.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.chatQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="chatQueueForm[\'strategy\'].$error" ng-show="chatQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.chatQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="chatQueueForm[\'timeout\'].$error" ng-show="chatQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chatQueue.description">\n\n        <div ng-messages="chatQueueForm[\'description\'].$error" ng-show="chatQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatQueue" ng-click="vm.saveChatQueue()" class="send-button md-accent md-raised" ng-disabled="chatQueueForm.$invalid || chatQueueForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatQueue" ng-click="vm.addNewChatQueue()" class="send-button md-accent md-raised" ng-disabled="chatQueueForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATQUEUE" translate-attr-aria-label="CHAT.ADD_CHATQUEUE">\n          ADD CHATQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatQueue" ng-click="vm.deleteChatQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",'<md-dialog class="chatQueue-dialog" aria-label="chatQueue" ng-init="vm.onInit()">\n  <form name="chatQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CHAT.AGENTADD_CHATQUEUE">Add Agent to chatQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",'<md-dialog class="chatQueue-dialog" aria-label="chatQueue" ng-init="vm.onInit()">\n  <form name="chatQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CHAT.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatQueues/edit/view.html",'<div id="chat-chatQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-chatQueues-button md-icon-button" aria-label="Go to chatQueues" ng-click="vm.gotoChatQueues()" translate translate-attr-aria-label="CHAT.GO_TO_CHATQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="chatQueue-image" hide-xs>\n          <img ng-src="assets/images/business/chatQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.chatQueue.id}}\n            <span ng-if="vm.chatQueue.name">{{vm.chatQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CHAT.CREATED_AT"></span> <span>{{vm.chatQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.chatQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="CHAT.TEAMADD_CHATQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.chatQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="CHAT.AGENTADD_CHATQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveChatQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.chatQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="CHAT.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="CHAT.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.chatQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.chatQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.chatQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/chat/views/chatWebsites/chatWebsites.html",'<div id="chatWebsites" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-hangouts" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CHAT.CHATWEBSITES">ChatWebsites</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CHAT.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedChatWebsites.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedChatWebsites =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CHAT.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-chatWebsites-count">\n          <span>{{vm.selectedChatWebsites.length}}</span>\n          <span translate="CHAT.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CHAT.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllChatWebsites()" translate="CHAT.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectChatWebsites()" translate="CHAT.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedChatWebsites" csv-label="true" filename="chatWebsites.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedChatWebsites($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CHATWEBSITE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedChatWebsites" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChatWebsites">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CHAT.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'CHAT.KEY\' | translate }}</th>\n                <th md-column md-order-by="address">{{ \'CHAT.MOTIONADDRESS\' | translate }}</th>\n                <th md-column md-order-by="remote">{{ \'CHAT.MOTIONPROXY\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CHAT.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.chatWebsites.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="chatWebsite" md-select-id="id" ng-repeat="chatWebsite in vm.chatWebsites.rows">\n                <td md-cell ng-if="chatWebsite.userpic"><img class="avatar" alt="{{chatWebsite.name}}" ng-src="api/users/{{chatWebsite.id}}/avatar" /></td>\n                <td md-cell ng-if="!chatWebsite.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{chatWebsite.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="id ">{{chatWebsite.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="name ">{{chatWebsite.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="key ">{{chatWebsite.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="address ">{{chatWebsite.address}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="remote ">{{chatWebsite.remote}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="description ">{{chatWebsite.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(chatWebsite, $event    )" translate="CHAT.EDIT_CHATWEBSITE">\n                          Edit ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(chatWebsite, $event    )" translate="CHAT.INTERACTIONS_CHATWEBSITE">\n                          Interactions ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.offlinemessagesgoto(chatWebsite, $event    )" translate="CHAT.OFFLINEMESSAGES_CHATWEBSITE">\n                          OfflineMessages ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(chatWebsite, $event    )" translate="CHAT.AGENTADD_CHATWEBSITE">\n                          AgentAdd ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(chatWebsite, $event    )" translate="CHAT.DELETE_CHATWEBSITE">\n                          Delete ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chatWebsites.count}}" md-on-paginate="vm.getChatWebsites" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CHATWEBSITE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CHATWEBSITE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-chatWebsite-button" ng-click="vm.createOrEditChatWebsite($event)" aria-label="add chatWebsite" translate translate-attr-aria-label="CHAT.ADD_CHATWEBSITE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CHATWEBSITE BUTTON --\x3e\n</div>'),e.put("app/main/apps/chat/views/chatWebsites/create/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.chatWebsite.name" ng-required="true" autofocus ng-disabled="!vm.newChatWebsite">\n\n        <div ng-messages="chatWebsiteForm[\'name\'].$error" ng-show="chatWebsiteForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.chatWebsite.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="chatWebsiteForm[\'key\'].$error" ng-show="chatWebsiteForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONADDRESS">MotionAddress</label>\n        <input type="url" name="address" ng-model="vm.chatWebsite.address" md-maxlength="255" ng-required="true">\n\n        <div ng-messages="chatWebsiteForm[\'address\'].$error" ng-show="chatWebsiteForm[\'address\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONADDRESS_REQUIRED">MotionAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="CHAT.ERRORS.MOTIONADDRESS_MUST_VALID_URL">MotionAddress must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.MOTIONADDRESS_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionAddress must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.chatWebsite.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="CHAT.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="chatWebsiteForm[\'remote\'].$error" ng-show="chatWebsiteForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="CHAT.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.chatWebsite.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="CHAT.HELP.LIST"></span></div>\n        <div ng-messages="chatWebsiteForm[\'ListId\'].$error" ng-show="chatWebsiteForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.chatWebsite.IntervalId">\n          <md-option ng-value="null">Always</md-option>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteForm[\'IntervalId\'].$error" ng-show="chatWebsiteForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chatWebsite.description">\n\n        <div ng-messages="chatWebsiteForm[\'description\'].$error" ng-show="chatWebsiteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatWebsite" ng-click="vm.saveChatWebsite()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteForm.$invalid || chatWebsiteForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatWebsite" ng-click="vm.addNewChatWebsite()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATWEBSITE" translate-attr-aria-label="CHAT.ADD_CHATWEBSITE">\n          ADD CHATWEBSITE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatWebsite" ng-click="vm.deleteChatWebsite($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",'<md-dialog class="chatWebsite-dialog" aria-label="chatWebsite" ng-init="vm.onInit()">\n  <form name="chatWebsiteForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CHAT.AGENTADD_CHATWEBSITE">Add Agent to chatWebsite</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/agent/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'agent\'].$error" ng-show="chatWebsiteFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'timeout\'].$error" ng-show="chatWebsiteFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/amazonlex/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'accesskeyid\'].$error" ng-show="chatWebsiteFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'secretaccesskey\'].$error" ng-show="chatWebsiteFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'lexregion\'].$error" ng-show="chatWebsiteFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'botname\'].$error" ng-show="chatWebsiteFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="CHAT.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="chatWebsiteFormApp[\'welcomemessage\'].$error" ng-show="chatWebsiteFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/autoreply/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'times\'].$error" ng-show="chatWebsiteFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="chatWebsiteFormApp[\'text\'].$error" ng-show="chatWebsiteFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/close/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'disposition\'].$error" ng-show="chatWebsiteFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/dialogflow/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'key\'].$error" ng-show="chatWebsiteFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'language\'].$error" ng-show="chatWebsiteFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="CHAT.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="chatWebsiteFormApp[\'welcomemessage\'].$error" ng-show="chatWebsiteFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'projectId\'].$error" ng-show="chatWebsiteFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'clientEmail\'].$error" ng-show="chatWebsiteFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="chatWebsiteFormApp[\'privateKey\'].$error" ng-show="chatWebsiteFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'language\'].$error" ng-show="chatWebsiteFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="CHAT.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="chatWebsiteFormApp[\'welcomemessage\'].$error" ng-show="chatWebsiteFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/gotoif/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'condition\'].$error" ng-show="chatWebsiteFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'truepriority\'].$error" ng-show="chatWebsiteFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'falsepriority\'].$error" ng-show="chatWebsiteFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/gotop/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'priority\'].$error" ng-show="chatWebsiteFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/noop/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'value\'].$error" ng-show="chatWebsiteFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/queue/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'queue\'].$error" ng-show="chatWebsiteFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'timeout\'].$error" ng-show="chatWebsiteFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/system/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'command\'].$error" ng-show="chatWebsiteFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'variable\'].$error" ng-show="chatWebsiteFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/tag/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'tag\'].$error" ng-show="chatWebsiteFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/chatCannedAnswers/dialog.html",'<md-dialog class="chatCannedAnswer-dialog" aria-label="New ChatCannedAnswer">\n  <form name="chatCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.chatCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="chatCannedAnswerForm[\'key\'].$error" ng-show="chatCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.chatCannedAnswer.value" required></textarea>\n\n        <div ng-messages="chatCannedAnswerForm[\'value\'].$error" ng-show="chatCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chatCannedAnswer.description">\n\n        <div ng-messages="chatCannedAnswerForm[\'description\'].$error" ng-show="chatCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatCannedAnswer" ng-click="vm.saveChatCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="chatCannedAnswerForm.$invalid || chatCannedAnswerForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatCannedAnswer" ng-click="vm.addNewChatCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="chatCannedAnswerForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATCANNEDANSWER" translate-attr-aria-label="CHAT.ADD_CHATCANNEDANSWER">\n          ADD CHATCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatCannedAnswer" ng-click="vm.deleteChatCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",'<md-dialog class="offlineMessage-dialog" aria-label="New OfflineMessage">\n  <md-toolbar class="md-accent md-hue-2">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ vm.title | translate }}</span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-content flex layout-padding>\n    <pre ng-if="vm.isHtml">{{vm.message.body}}</pre>\n    <div ng-if="!vm.isHtml" ng-bind-html-unsafe="vm.message.body"></div>\n\n    <span ng-repeat="attachment in vm.attachments">\n      <md-button class="md-icon-button no-margin no-padding" ng-click="vm.download(attachment)">\n        <md-icon class="no-margin material-icons" aria-label="Attachment">attach_file</md-icon>\n      </md-button>\n      <span>{{attachment.name}}</span><br />\n    </span>\n  </md-content>\n\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/proactive/dialog.html",'<md-dialog class="chatProactiveAction-dialog" aria-label="New ChatProactiveAction">\n  <form name="chatProactiveActionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.chatProactiveAction.name" ng-required="true" autofocus>\n\n        <div ng-messages="chatProactiveActionForm[\'name\'].$error" ng-show="chatProactiveActionForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.chatProactiveAction.type">\n\n          <md-option ng-value="\'mouseOver\'"> {{ \'CHAT.MOUSEOVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'timeout\'"> {{ \'CHAT.TIMEOUT\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="chatProactiveActionForm[\'type\'].$error" ng-show="chatProactiveActionForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.chatProactiveAction.type === \'mouseOver\'" class="md-block">\n        <label translate="CHAT.SELECTOR">Selector</label>\n        <input type="" name="selector" ng-model="vm.chatProactiveAction.selector" ng-required="true">\n\n        <div ng-messages="chatProactiveActionForm[\'selector\'].$error" ng-show="chatProactiveActionForm[\'selector\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.SELECTOR_REQUIRED">Selector field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.chatProactiveAction.type === \'timeout\'" class="md-block">\n        <label translate="CHAT.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.chatProactiveAction.timeout" min="1" ng-required="true">\n\n        <div ng-messages="chatProactiveActionForm[\'timeout\'].$error" ng-show="chatProactiveActionForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatProactiveAction" ng-click="vm.saveChatProactiveAction()" class="send-button md-accent md-raised" ng-disabled="chatProactiveActionForm.$invalid || chatProactiveActionForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatProactiveAction" ng-click="vm.addNewChatProactiveAction()" class="send-button md-accent md-raised" ng-disabled="chatProactiveActionForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATPROACTIVEACTION" translate-attr-aria-label="CHAT.ADD_CHATPROACTIVEACTION">\n          ADD CHATPROACTIVEACTION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatProactiveAction" ng-click="vm.deleteChatProactiveAction($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/view.html",'<div id="chat-chatWebsite" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-chatWebsites-button md-icon-button" aria-label="Go to chatWebsites" ng-click="vm.gotoChatWebsites()" translate translate-attr-aria-label="CHAT.GO_TO_CHATWEBSITES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="chatWebsite-image" hide-xs>\n          <img ng-src="assets/images/business/chatWebsites.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.chatWebsite.id}}\n            <span ng-if="vm.chatWebsite.name">{{vm.chatWebsite.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CHAT.CREATED_AT"></span> <span>{{vm.chatWebsite.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.chatWebsite, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="CHAT.AGENTADD_CHATWEBSITE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveChatWebsite()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (scriptForm.$invalid) || (intervalForm.$invalid) || (dispositionForm.$invalid) || (appearanceForm.$invalid) || (onlinestatusForm.$invalid) || (offlinestatusForm.$invalid) || (closingformForm.$invalid) || (unmanagedstatusForm.$invalid) || (interactionForm.$invalid) || (whitelabelForm.$invalid) || (logoForm.$invalid) || (agentAvatarForm.$invalid) || (customerAvatarForm.$invalid) || (systemAvatarForm.$invalid) || (chatFormOnlineForm.$invalid) || (chatFormOfflineForm.$invalid) || (proactiveForm.$invalid) || (chatDispositionsForm.$invalid) || (chatCannedAnswersForm.$invalid) || (vidaooForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid) || (offlineMessagesForm.$invalid)" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.chatWebsite.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.chatWebsite.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MOTIONADDRESS">MotionAddress</label>\n                <input type="url" name="address" ng-model="vm.chatWebsite.address" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'address\'].$error" ng-show="generalForm[\'address\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MOTIONADDRESS_REQUIRED">MotionAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="CHAT.ERRORS.MOTIONADDRESS_MUST_VALID_URL">MotionAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.MOTIONADDRESS_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionAddress must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.chatWebsite.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.fidelity" class="md-block">\n                <label translate="CHAT.TIMEOUT">Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.chatWebsite.timeout" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.chatWebsite.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.chatWebsite.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="CHAT.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.chatWebsite.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.queueTransfer == true" class="md-block">\n                <label translate="CHAT.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.chatWebsite.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.agentTransfer == true" class="md-block">\n                <label translate="CHAT.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.chatWebsite.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container script md-background-bg md-whiteframe-1dp">\n            <form name="scriptForm" flex="100" novalidate>\n              <div ng-controller="ChatWebsiteScriptController as vm_ac" ng-init="vm_ac.init(vm.chatWebsite)" class="content" md-background-bg>\n                <div class="pb-16" layout="row" layout-align="start center">\n                  <div class="h2 secondary-text" translate="CHAT.SCRIPT">SCRIPT</div>\n                </div>\n\n\n                <md-input-container class="md-block">\n                  <label translate="CHAT.TOKEN">Token</label>\n                  <input type="text" name="token" ng-model="vm_ac.chatWebsite.token" autofocus ng-disabled="true">\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="CHAT.MOTIONPROXY">MotionProxy</label>\n                  <input type="url" name="remote" ng-model="vm_ac.chatWebsite.remote" required>\n                  <div class="hint"><span translate="CHAT.HELP.MOTIONPROXY"></span></div>\n                  <div ng-messages="scriptForm[\'remote\'].$error" ng-show="scriptForm[\'remote\'].$touched" role="alert">\n                    <div ng-message="required">\n                      <span translate="CHAT.ERRORS.MOTIONPROXY_REQUIRED">Motion Proxy field is required</span>\n                    </div>\n                    <div ng-message="url">\n                      <span translate="CHAT.ERRORS.MOTIONPROXY_MUST_VALID_URL">Motion Proxy must be a valid url e.g.: http://www.xcally.com</span>\n                    </div>\n                  </div>\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="CHAT.WEBSITESCRIPT">WebsiteScript</label>\n                  <div>\n                    <pre style="font-size: 13px;">\n                    {{vm_ac.start}} {{vm_ac.script}} {{vm_ac.end}}\n                    </pre>\n                  </div>\n                  <div class="hint"><span translate="CHAT.HELP.COPYSCRIPTTOCLIPBOARD"></span></div>\n                </md-input-container>\n\n              </div>\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container interval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.INTERVAL">INTERVAL</div>\n            </div>\n            <form name="intervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.chatWebsite.IntervalId" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Always</md-option>\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="intervalForm[\'IntervalId\'].$error" ng-show="intervalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.TIMEZONE">Timezone</label>\n                <ms-timezone name="timezone" ng-model="vm.chatWebsite.timezone" ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="CHAT.HELP.TIMEZONE"></span></div>\n                <div ng-messages="intervalForm[\'timezone\'].$error" ng-show="intervalForm[timezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.mandatoryDisposition" class="md-block">\n                <label translate="CHAT.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.chatWebsite.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.SNIPPET">SNIPPET</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container appearance md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.APPEARANCE">APPEARANCE</div>\n            </div>\n            <form name="appearanceForm" novalidate>\n              <div flex md-color-picker ng-model="vm.chatWebsite.color" label="{{\'CHAT.MAINCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.color_button" label="{{\'CHAT.BUTTONCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.textColor" label="{{\'CHAT.TEXTCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.backgroundColor" label="{{\'CHAT.BACKGROUNDCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FONTSIZE">fontSize</label>\n                <input type="number" name="fontSize" ng-model="vm.chatWebsite.fontSize" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="appearanceForm[\'fontSize\'].$error" ng-show="appearanceForm[\'fontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FONTSIZE_REQUIRED">fontSize field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">fontSize must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADERSHAPE">headershape</label>\n                <md-select name="header_shape" ng-model="vm.chatWebsite.header_shape" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'rounded\'"> {{ \'CHAT.ROUNDED\' | translate }} </md-option>\n\n                  <md-option ng-value="\'squared\'"> {{ \'CHAT.SQUARED\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'header_shape\'].$error" ng-show="appearanceForm[\'header_shape\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADERSHAPE_REQUIRED">headershape field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.showAgentAvatar" aria-label="ShowAgentAvatar" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.SHOWAGENTAVATAR">ShowAgentAvatar</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.showCustomerAvatar" aria-label="showCustomerAvatar" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.SHOWCUSTOMERAVATAR">showCustomerAvatar</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SNIPPETSWIPEOUT">snippetSwipeOut</label>\n                <md-select name="alignment" ng-model="vm.chatWebsite.alignment" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'bottom_right\'"> {{ \'CHAT.BOTTOM_RIGHT\' | translate }} </md-option>\n\n                  <md-option ng-value="\'right\'"> {{ \'CHAT.RIGHT\' | translate }} </md-option>\n\n                  <md-option ng-value="\'left\'"> {{ \'CHAT.LEFT\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'alignment\'].$error" ng-show="appearanceForm[\'alignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SNIPPETSWIPEOUT_REQUIRED">snippetSwipeOut field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.alignment !== \'bottom_right\'" class="md-block">\n                <label translate="CHAT.VERTICALPOSITION">verticalPosition</label>\n                <input type="number" name="verticalAlignment" ng-model="vm.chatWebsite.verticalAlignment" min="0" max="100" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="CHAT.HELP.VERTICALPOSITION"></span></div>\n                <div ng-messages="appearanceForm[\'verticalAlignment\'].$error" ng-show="appearanceForm[\'verticalAlignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_REQUIRED">verticalPosition field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">verticalPosition must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_MUST_BE_LESS_THAN_OR_EQUAL_TO">verticalPosition must be a valid greater or equal than</span> <span>100</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MESSAGESALIGNMENT">messagesAlignment</label>\n                <md-select name="messagesAlignment" ng-model="vm.chatWebsite.messagesAlignment" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'alternate\'"> {{ \'CHAT.ALTERNATE\' | translate }} </md-option>\n\n                  <md-option ng-value="\'centered\'"> {{ \'CHAT.CENTERED\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'messagesAlignment\'].$error" ng-show="appearanceForm[\'messagesAlignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MESSAGESALIGNMENT_REQUIRED">messagesAlignment field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.DEFAULTTITLE">defaultTitle</label>\n                <input type="text" name="defaultTitle" ng-model="vm.chatWebsite.defaultTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="appearanceForm[\'defaultTitle\'].$error" ng-show="appearanceForm[\'defaultTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DEFAULTTITLE_REQUIRED">defaultTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.DEFAULTTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>defaultTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container onlinestatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.ONLINESTATUS">ONLINESTATUS</div>\n            </div>\n            <form name="onlinestatusForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADER_ONLINE">header_online</label>\n                <input type="text" name="header_online" ng-model="vm.chatWebsite.header_online" md-maxlength="255" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="onlinestatusForm[\'header_online\'].$error" ng-show="onlinestatusForm[\'header_online\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADER_ONLINE_REQUIRED">header_online field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.HEADER_ONLINE_MAX_LENGTH" translate-values=\'{max: 255}\'>header_online must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.START_CHAT_BUTTON">start_chat_button</label>\n                <input type="text" name="start_chat_button" ng-model="vm.chatWebsite.start_chat_button" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="onlinestatusForm[\'start_chat_button\'].$error" ng-show="onlinestatusForm[\'start_chat_button\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.START_CHAT_BUTTON_REQUIRED">start_chat_button field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.START_CHAT_BUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>start_chat_button must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container offlinestatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.OFFLINESTATUS">OFFLINESTATUS</div>\n            </div>\n            <form name="offlinestatusForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.hideWhenOffline" aria-label="hideWhenOffline" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.HIDEWHENOFFLINE">hideWhenOffline</span></md-switch>\n                <div class="hint"><span translate="CHAT.HELP.HIDEWHENOFFLINE"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADER_OFFLINE">header_offline</label>\n                <input type="text" name="header_offline" ng-model="vm.chatWebsite.header_offline" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'header_offline\'].$error" ng-show="offlinestatusForm[\'header_offline\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADER_OFFLINE_REQUIRED">header_offline field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.HEADER_OFFLINE_MAX_LENGTH" translate-values=\'{max: 255}\'>header_offline must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINE_CHAT_BUTTON">offline_chat_button</label>\n                <input type="text" name="offline_chat_button" ng-model="vm.chatWebsite.offline_chat_button" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offline_chat_button\'].$error" ng-show="offlinestatusForm[\'offline_chat_button\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINE_CHAT_BUTTON_REQUIRED">offline_chat_button field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINE_CHAT_BUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>offline_chat_button must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINEMESSAGESUBJECT">offlineMessageSubject</label>\n                <input type="text" name="offlineMessageSubject" ng-model="vm.chatWebsite.offlineMessageSubject" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offlineMessageSubject\'].$error" ng-show="offlinestatusForm[\'offlineMessageSubject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGESUBJECT_REQUIRED">offlineMessageSubject field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGESUBJECT_MAX_LENGTH" translate-values=\'{max: 255}\'>offlineMessageSubject must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINEMESSAGEBODY">offlineMessageBody</label>\n                <input type="text" name="offlineMessageBody" ng-model="vm.chatWebsite.offlineMessageBody" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offlineMessageBody\'].$error" ng-show="offlinestatusForm[\'offlineMessageBody\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGEBODY_REQUIRED">offlineMessageBody field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGEBODY_MAX_LENGTH" translate-values=\'{max: 255}\'>offlineMessageBody must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container closingform md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.CLOSINGFORM">CLOSINGFORM</div>\n            </div>\n            <form name="closingformForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGMESSAGE">closingMessage</label>\n                <textarea name="closingMessage" ng-model="vm.chatWebsite.closingMessage" md-maxlength="255" required autofocus></textarea>\n\n                <div ng-messages="closingformForm[\'closingMessage\'].$error" ng-show="closingformForm[\'closingMessage\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGE_REQUIRED">closingMessage field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>closingMessage must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SKIPMESSAGEBUTTON">skipMessageButton</label>\n                <input type="text" name="skipMessageButton" ng-model="vm.chatWebsite.skipMessageButton" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'skipMessageButton\'].$error" ng-show="closingformForm[\'skipMessageButton\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SKIPMESSAGEBUTTON_REQUIRED">skipMessageButton field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SKIPMESSAGEBUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>skipMessageButton must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableRating" aria-label="enableRating" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLERATING">enableRating</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableRating" class="md-block">\n                <label translate="CHAT.RATINGTYPE">ratingType</label>\n                <md-select name="ratingType" ng-model="vm.chatWebsite.ratingType" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'star\'">Star</md-option>\n                  <md-option ng-value="\'thumb\'">Thumb</md-option>\n                </md-select>\n                <div ng-messages="closingformForm[\'ratingType\'].$error" ng-show="closingformForm[\'ratingType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.RATINGTYPE_REQUIRED">ratingType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableRating && vm.chatWebsite.ratingType === \'star\'" class="md-block">\n                <label translate="CHAT.RATINGSTARSNUMBER">ratingStarsNumber</label>\n                <input type="number" name="ratingStarsNumber" ng-model="vm.chatWebsite.ratingStarsNumber" min="2" max="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'ratingStarsNumber\'].$error" ng-show="closingformForm[\'ratingStarsNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_REQUIRED">ratingStarsNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ratingStarsNumber must be a valid greater or equal than</span> <span>2</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">ratingStarsNumber must be a valid greater or equal than</span> <span>5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableFeedback" aria-label="enableFeedback" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLEFEEDBACK">enableFeedback</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableFeedback" class="md-block">\n                <label translate="CHAT.FEEDBACKTITLE">feedbackTitle</label>\n                <input type="text" name="feedbackTitle" ng-model="vm.chatWebsite.feedbackTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'feedbackTitle\'].$error" ng-show="closingformForm[\'feedbackTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FEEDBACKTITLE_REQUIRED">feedbackTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FEEDBACKTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>feedbackTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.forwardTranscript" aria-label="forwardTranscript" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.FORWARDTRANSCRIPT">forwardTranscript</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.forwardTranscript" class="md-block">\n                <label translate="CHAT.FORWARDTRANSCRIPTMESSAGE">forwardTranscriptMessage</label>\n                <input type="text" name="forwardTranscriptMessage" ng-model="vm.chatWebsite.forwardTranscriptMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'forwardTranscriptMessage\'].$error" ng-show="closingformForm[\'forwardTranscriptMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORWARDTRANSCRIPTMESSAGE_REQUIRED">forwardTranscriptMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORWARDTRANSCRIPTMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>forwardTranscriptMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGMESSAGEBUTTON">closingMessageButton</label>\n                <input type="text" name="closingMessageButton" ng-model="vm.chatWebsite.closingMessageButton" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'closingMessageButton\'].$error" ng-show="closingformForm[\'closingMessageButton\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGEBUTTON_REQUIRED">closingMessageButton field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGEBUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>closingMessageButton must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container unmanagedstatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.UNMANAGEDSTATUS">UNMANAGEDSTATUS</div>\n            </div>\n            <form name="unmanagedstatusForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.autoclose" aria-label="autoclose" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.AUTOCLOSE">autoclose</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableUnmanagedNote" aria-label="enableUnmanagedNote" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLEUNMANAGEDNOTE">enableUnmanagedNote</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.UNMANAGEDMESSAGE">unmanagedMessage</label>\n                <input type="text" name="unmanagedMessage" ng-model="vm.chatWebsite.unmanagedMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'unmanagedMessage\'].$error" ng-show="unmanagedstatusForm[\'unmanagedMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.UNMANAGEDMESSAGE_REQUIRED">unmanagedMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.UNMANAGEDMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>unmanagedMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SKIPUNMANAGED">skipUnmanaged</label>\n                <input type="text" name="skipUnmanaged" ng-model="vm.chatWebsite.skipUnmanaged" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'skipUnmanaged\'].$error" ng-show="unmanagedstatusForm[\'skipUnmanaged\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SKIPUNMANAGED_REQUIRED">skipUnmanaged field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SKIPUNMANAGED_MAX_LENGTH" translate-values=\'{max: 255}\'>skipUnmanaged must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableUnmanagedNote" class="md-block">\n                <label translate="CHAT.SENDUNMANAGED">sendUnmanaged</label>\n                <input type="text" name="sendUnmanaged" ng-model="vm.chatWebsite.sendUnmanaged" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'sendUnmanaged\'].$error" ng-show="unmanagedstatusForm[\'sendUnmanaged\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SENDUNMANAGED_REQUIRED">sendUnmanaged field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SENDUNMANAGED_MAX_LENGTH" translate-values=\'{max: 255}\'>sendUnmanaged must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableUnmanagedNote" class="md-block">\n                <label translate="CHAT.NOTETITLE">noteTitle</label>\n                <input type="text" name="noteTitle" ng-model="vm.chatWebsite.noteTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'noteTitle\'].$error" ng-show="unmanagedstatusForm[\'noteTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.NOTETITLE_REQUIRED">noteTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.NOTETITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>noteTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container interaction md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.INTERACTION">INTERACTION</div>\n            </div>\n            <form name="interactionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.AGENTIDENTIFIER">agentIdentifier</label>\n                <md-select name="agentIdentifier" ng-model="vm.chatWebsite.agentIdentifier" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'website_alias\'"> {{ \'CHAT.WEBSITEALIAS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'agent_alias\'"> {{ \'CHAT.AGENTALIAS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'agent_fullname\'"> {{ \'CHAT.AGENTFULLNAME\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.AGENTIDENTIFIER"></span></div>\n                <div ng-messages="interactionForm[\'agentIdentifier\'].$error" ng-show="interactionForm[\'agentIdentifier\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENTIDENTIFIER_REQUIRED">agentIdentifier field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CUSTOMERALIAS">customerAlias</label>\n                <input type="text" name="customerAlias" ng-model="vm.chatWebsite.customerAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'customerAlias\'].$error" ng-show="interactionForm[\'customerAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CUSTOMERALIAS_REQUIRED">customerAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CUSTOMERALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>customerAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MESSAGEFONTSIZE">messageFontSize</label>\n                <input type="number" name="messageFontSize" ng-model="vm.chatWebsite.messageFontSize" min="0" max="20" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'messageFontSize\'].$error" ng-show="interactionForm[\'messageFontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_REQUIRED">messageFontSize field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">messageFontSize must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">messageFontSize must be a valid greater or equal than</span> <span>20</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.agentIdentifier === \'website_alias\'" class="md-block">\n                <label translate="CHAT.WEBSITEALIAS">WebsiteAlias</label>\n                <input type="text" name="agentAlias" ng-model="vm.chatWebsite.agentAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="CHAT.HELP.WEBSITEALIAS"></span></div>\n                <div ng-messages="interactionForm[\'agentAlias\'].$error" ng-show="interactionForm[\'agentAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WEBSITEALIAS_REQUIRED">WebsiteAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WEBSITEALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>WebsiteAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGQUESTION">closingQuestion</label>\n                <input type="text" name="closingQuestion" ng-model="vm.chatWebsite.closingQuestion" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'closingQuestion\'].$error" ng-show="interactionForm[\'closingQuestion\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGQUESTION_REQUIRED">closingQuestion field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGQUESTION_MAX_LENGTH" translate-values=\'{max: 255}\'>closingQuestion must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FORMSUBMITSUCCESSMESSAGE">formSubmitSuccessMessage</label>\n                <input type="text" name="formSubmitSuccessMessage" ng-model="vm.chatWebsite.formSubmitSuccessMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'formSubmitSuccessMessage\'].$error" ng-show="interactionForm[\'formSubmitSuccessMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORMSUBMITSUCCESSMESSAGE_REQUIRED">formSubmitSuccessMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORMSUBMITSUCCESSMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>formSubmitSuccessMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FORMSUBMITFAILUREMESSAGE">formSubmitFailureMessage</label>\n                <input type="text" name="formSubmitFailureMessage" ng-model="vm.chatWebsite.formSubmitFailureMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'formSubmitFailureMessage\'].$error" ng-show="interactionForm[\'formSubmitFailureMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORMSUBMITFAILUREMESSAGE_REQUIRED">formSubmitFailureMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORMSUBMITFAILUREMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>formSubmitFailureMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerWriting" aria-label="enableCustomerWriting" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERWRITING">enableCustomerWriting</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.enableCustomerWriting" class="md-block">\n                <label translate="CHAT.WAITINGTITLE">waitingTitle</label>\n                <input type="text" name="waitingTitle" ng-model="vm.chatWebsite.waitingTitle" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'waitingTitle\'].$error" ng-show="interactionForm[\'waitingTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITINGTITLE_REQUIRED">waitingTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WAITINGTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>waitingTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.enableCustomerWriting" class="md-block">\n                <label translate="CHAT.WAITINGMESSAGE">waitingMessage</label>\n                <textarea name="waitingMessage" ng-model="vm.chatWebsite.waitingMessage" md-maxlength="255" required></textarea>\n\n                <div ng-messages="interactionForm[\'waitingMessage\'].$error" ng-show="interactionForm[\'waitingMessage\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITINGMESSAGE_REQUIRED">waitingMessage field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WAITINGMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>waitingMessage must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.PLACEHOLDERMESSAGE">placeholderMessage</label>\n                <input type="text" name="placeholderMessage" ng-model="vm.chatWebsite.placeholderMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'placeholderMessage\'].$error" ng-show="interactionForm[\'placeholderMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.PLACEHOLDERMESSAGE_REQUIRED">placeholderMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.PLACEHOLDERMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>placeholderMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.download_transcript" aria-label="downloadTranscript" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.DOWNLOADTRANSCRIPT">downloadTranscript</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerAttachment" aria-label="enableCustomerAttachment" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERATTACHMENT">enableCustomerAttachment</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableSendButton" aria-label="enableSendButton" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLESENDBUTTON">enableSendButton</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerCheckmarks" aria-label="enableCustomerCheckmarks" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERCHECKMARKS">enableCustomerCheckmarks</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SYSTEMALIAS">systemAlias</label>\n                <input type="text" name="systemAlias" ng-model="vm.chatWebsite.systemAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'systemAlias\'].$error" ng-show="interactionForm[\'systemAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SYSTEMALIAS_REQUIRED">systemAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SYSTEMALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>systemAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.license.custom" class="chatWebsite-detail-form-container whitelabel md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.WHITELABEL">WHITELABEL</div>\n            </div>\n            <form name="whitelabelForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.defaultWhiteLabel" aria-label="default" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.DEFAULT">default</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.defaultWhiteLabel" class="md-block">\n                <label translate="CHAT.WHITELABEL">whiteLabel</label>\n                <textarea name="whiteLabel" ng-model="vm.chatWebsite.whiteLabel" md-maxlength="255" required></textarea>\n\n                <div ng-messages="whitelabelForm[\'whiteLabel\'].$error" ng-show="whitelabelForm[\'whiteLabel\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WHITELABEL_REQUIRED">whiteLabel field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WHITELABEL_MAX_LENGTH" translate-values=\'{max: 255}\'>whiteLabel must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.license.custom" class="chatWebsite-detail-form-container logo md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.LOGO">LOGO</div>\n            </div>\n            <div ng-controller="ChatWebsitelogoController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="logoimage in vm_ca.chatWebsite.images" ng-switch="logoimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{logoimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="logoimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{logoimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container agentavatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.AGENTAVATAR">AGENTAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsiteagentAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="agentAvatarimage in vm_ca.chatWebsite.images" ng-switch="agentAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{agentAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="agentAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{agentAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container customeravatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.CUSTOMERAVATAR">CUSTOMERAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsitecustomerAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="customerAvatarimage in vm_ca.chatWebsite.images" ng-switch="customerAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{customerAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="customerAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{customerAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container systemavatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.SYSTEMAVATAR">SYSTEMAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsitesystemAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="systemAvatarimage in vm_ca.chatWebsite.images" ng-switch="systemAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{systemAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="systemAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{systemAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ONLINE">ONLINE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatformonline md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteonlineFormController as vm_fonc" ng-init="vm_fonc.init(vm.chatWebsite)" class="content" md-background-bg layout="column">\n              <div flex>\n                \x3c!-- START Buttons --\x3e\n                <md-button aria-label="comment" class="md-fab md-mini" ng-click="vm_fonc.add(button.type)" ng-repeat="button in vm_fonc.buttons">\n                  <md-tooltip md-direction="top">{{button.name}}</md-tooltip>\n                  <md-icon md-font-icon="{{button.icon}}"></md-icon>\n                </md-button>\n                \x3c!-- END Buttons --\x3e\n              </div>\n\n              <div layout="row" flex>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.BUILDER">BUILDER</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content>\n\n                      <form name="onlineForm" novalidate>\n\n                        \x3c!-- START MapKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.onlineForm.items.length">\n                          <label translate="CHAT.HELP.MAPKEY">MapKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.mapKey">\n                            <md-option ng-value="null">None</md-option>\n\n                            <md-optgroup label="standard">\n                              <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n\n                            <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                              <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END MapKey --\x3e\n\n                        \x3c!-- START FromKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.onlineForm.items.length">\n                          <label translate="CHAT.HELP.FROMKEY">FromKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.onlineForm.fromKey" md-selected-text="vm_fonc.chatWebsite.onlineForm.fromKey != null ? vm_fonc.chatWebsite.onlineForm.items[vm_fonc.chatWebsite.onlineForm.fromKey].props.title : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.onlineForm.items" ng-if="item.props.title" ng-value="$index">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END FromKey --\x3e\n\n                        \x3c!-- START EXPANSION PANELS --\x3e\n                        <md-expansion-panel ng-repeat="item in vm_fonc.chatWebsite.onlineForm.items track by $index" md-component-id="{{\'onlinePanel\' + $index}}">\n                          <md-expansion-panel-collapsed md-no-sticky="true">\n                            <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                            </md-button>\n                            <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                            </md-button>\n\n                            <div class="md-title">{{item.props.title || item.type}}</div>\n\n                            <div flex></div>\n                            <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                              <md-icon md-font-icon="icon-chevron-down"></md-icon>\n                            </md-button>\n                          </md-expansion-panel-collapsed>\n\n                          <md-expansion-panel-expanded>\n                            <md-expansion-panel-header>\n                              <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                              </md-button>\n\n                              <div class="md-title">{{item.props.title || item.type}}</div>\n\n                              <div flex></div>\n\n                              <md-button class="md-icon-button md-warn" aria-label="Remove" ng-click="vm_fonc.remove($index)">\n                                <md-icon md-font-icon="icon-delete"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                                <md-icon md-font-icon="icon-chevron-up"></md-icon>\n                              </md-button>\n                            </md-expansion-panel-header>\n\n                            <md-expansion-panel-content>\n                              <form-item type="{{item.type}}" item="item" index="$index"></form-item>\n\n                              <md-input-container class="md-block">\n                                <label translate="CHAT.VARIABLE">Variable</label>\n                                <md-select ng-model="item.variable">\n                                  <md-option ng-value="null">None</md-option>\n                                  <md-option ng-repeat="variable in vm_fonc.variables" ng-value="variable.name">{{ variable.name }}</md-option>\n                                </md-select>\n                              </md-input-container>\n\n                              <md-input-container class="md-block">\n                                <label translate="CHAT.CM_FIELD">Contact Manager Field</label>\n                                <md-select ng-model="item.cmField">\n                                  <md-option ng-value="null">None</md-option>\n\n                                  <md-optgroup label="standard">\n                                    <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n\n                                  <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                                    <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n                                </md-select>\n                              </md-input-container>\n                            </md-expansion-panel-content>\n\n                          </md-expansion-panel-expanded>\n                        </md-expansion-panel>\n                        \x3c!-- END EXPANSION PANELS --\x3e\n                      </form>\n                    </md-card-content>\n                  </md-card>\n                </div>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.PREVIEW">PREVIEW</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content flex>\n                      <form-view form="vm_fonc.chatWebsite.onlineForm" flex="100"></form-view>\n                    </md-card-content>\n                  </md-card>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.OFFLINE">OFFLINE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatformoffline md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteofflineFormController as vm_fonc" ng-init="vm_fonc.init(vm.chatWebsite)" class="content" md-background-bg layout="column">\n              <div flex>\n                \x3c!-- START Buttons --\x3e\n                <md-button aria-label="comment" class="md-fab md-mini" ng-click="vm_fonc.add(button.type)" ng-repeat="button in vm_fonc.buttons">\n                  <md-tooltip md-direction="top">{{button.name}}</md-tooltip>\n                  <md-icon md-font-icon="{{button.icon}}"></md-icon>\n                </md-button>\n                \x3c!-- END Buttons --\x3e\n              </div>\n\n              <div layout="row" flex>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.BUILDER">BUILDER</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content>\n\n                      <form name="offlineForm" novalidate>\n                        <md-input-container class="md-block">\n                          <md-switch ng-model="vm_fonc.chatWebsite.forwardOffline" aria-label="forwardOffline"><span translate="CHAT.FORWARD_OFFLINE">forwardOffline</span></md-switch>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.forwardOffline">\n                          <label translate="CHAT.FORWARD_OFFLINE_ADDRESS">FORWARD OFFLINE ADDRESS</label>\n                          <input type="text" name="forwardOfflineAddress" ng-model="vm_fonc.chatWebsite.forwardOfflineAddress">\n                          <div class="hint"><span translate="CHAT.HELP.FORWARD_OFFLINE"></span></div>\n                          <div ng-messages="offlineForm[\'forwardOfflineAddress\'].$error" ng-show="offlineForm[\'forwardOfflineAddress\'].$touched" role="alert">\n                            <div ng-message="email">\n                              <span translate="CHAT.ERRORS.EMAIL_MUST_BE_VALID">forwardOffline must be a valid e-mail address</span>\n                            </div>\n                          </div>\n                        </md-input-container>\n\n                        <md-input-container class="md-block">\n                          <md-switch ng-model="vm_fonc.chatWebsite.openNewInteraction" aria-label="openNewInteraction">\n                            <span translate="CHAT.OPEN_NEW_INTERACTION">openNewInteraction</span>\n                          </md-switch>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.openNewInteraction">\n                          <label translate="CHAT.EMAIL_ACCOUNT">Email account</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.MailAccountId" required>\n                            <md-option ng-repeat="account in vm_fonc.email_accounts" ng-value="account.id">{{ account.name }}</md-option>\n                          </md-select>\n                          <div ng-messages="offlineForm[\'MailAccountId\'].$error" ng-show="offlineForm[\'MailAccountId\'].$touched" role="alert">\n                            <div ng-message="required">\n                              <span translate="CHAT.ERRORS.EMAIL_ACCOUNT_REQUIRED">Email account field is required</span>\n                            </div>\n                          </div>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.openNewInteraction && vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.SUBJECT">Subject</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.subjectOffline" md-selected-text="vm_fonc.chatWebsite.subjectOffline != null ? vm_fonc.chatWebsite.subjectOffline : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items" ng-if="item.props.title" ng-value="item.props.title">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n\n                        \x3c!-- START MapKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.HELP.MAPKEY">MapKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.mapKeyOffline">\n                            <md-option ng-value="null">None</md-option>\n\n                            <md-optgroup label="standard">\n                              <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n\n                            <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                              <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END MapKey --\x3e\n\n                        \x3c!-- START FromKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.HELP.FROMKEY">FromKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.offlineForm.fromKey" md-selected-text="vm_fonc.chatWebsite.offlineForm.fromKey != null ? vm_fonc.chatWebsite.offlineForm.items[vm_fonc.chatWebsite.offlineForm.fromKey].props.title : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items" ng-if="item.props.title" ng-value="$index">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END FromKey --\x3e\n\n                        \x3c!-- START EXPANSION PANELS --\x3e\n                        <md-expansion-panel ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items track by $index" md-component-id="{{\'offlinePanel\' + $index}}">\n                          <md-expansion-panel-collapsed md-no-sticky="true">\n                            <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                            </md-button>\n                            <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                            </md-button>\n\n                            <div class="md-title">{{item.props.title || item.type}}</div>\n\n                            <div flex></div>\n                            <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                              <md-icon md-font-icon="icon-chevron-down"></md-icon>\n                            </md-button>\n                          </md-expansion-panel-collapsed>\n\n                          <md-expansion-panel-expanded>\n                            <md-expansion-panel-header>\n                              <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                              </md-button>\n\n                              <div class="md-title">{{item.props.title || item.type}}</div>\n\n                              <div flex></div>\n\n                              <md-button class="md-icon-button md-warn" aria-label="Remove" ng-click="vm_fonc.remove($index)">\n                                <md-icon md-font-icon="icon-delete"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                                <md-icon md-font-icon="icon-chevron-up"></md-icon>\n                              </md-button>\n                            </md-expansion-panel-header>\n\n                            <md-expansion-panel-content>\n                              <form-item type="{{item.type}}" item="item" index="$index"></form-item>\n\n\n                              <md-input-container class="md-block" ng-if="item.type != \'upload\'">\n                                <label translate="CHAT.CM_FIELD">Contact Manager Field</label>\n                                <md-select ng-model="item.cmField">\n                                  <md-option ng-value="null">None</md-option>\n\n                                  <md-optgroup label="standard">\n                                    <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n\n                                  <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                                    <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n                                </md-select>\n                              </md-input-container>\n                            </md-expansion-panel-content>\n\n                          </md-expansion-panel-expanded>\n                        </md-expansion-panel>\n                        \x3c!-- END EXPANSION PANELS --\x3e\n                      </form>\n                    </md-card-content>\n                  </md-card>\n                </div>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.PREVIEW">PREVIEW</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content flex>\n                      <form-view form="vm_fonc.chatWebsite.offlineForm" flex="100"></form-view>\n                    </md-card-content>\n                  </md-card>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.PROACTIVEACTIONS">PROACTIVEACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container proactive md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteProactiveActionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteProactiveActions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.PROACTIVEACTIONS">ProactiveActions</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteProactiveActions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event)" aria-label="add chatProactiveAction" translate translate-attr-label="CHAT.ADD_CHATPROACTIVEACTION">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteProactiveActions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteProactiveActions.length}} {{vm_dc.selectedChatWebsiteProactiveActions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteProactiveActions" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteProactiveActions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteProactiveActions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteProactiveActions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="name">\n                        {{ \'CHAT.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="type">\n                        {{ \'CHAT.TYPE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="selector">\n                        {{ \'CHAT.SELECTOR\' | translate }}\n                      </th>\n                      <th md-column md-order-by="timeout">\n                        {{ \'CHAT.TIMEOUT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="chatProactiveAction" md-select-id="id" ng-repeat="chatProactiveAction in vm_dc.chatWebsiteProactiveActions.rows">\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.name}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{ \'CHAT.\' + vm_dc.arraytype[chatProactiveAction.type].option | uppercase | translate }}\n                      </td>\n\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.selector}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.timeout}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{ chatProactiveAction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" translate="CHAT.EDIT_CHATPROACTIVEACTION">\n                                Edit ChatProactiveAction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(chatProactiveAction, $event)" translate="CHAT.DELETE_CHATPROACTIVEACTION">\n                                Delete ChatProactiveAction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteProactiveActions.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_CHATPROACTIVEACTION_AVAILABLE">No chatproactiveaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteProactiveActions.count}}" md-on-paginate="vm_dc.getChatWebsiteProactiveActions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="ChatWebsiteDispositionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="chatWebsite-detail-form-container chatdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="CHAT.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add chat dispositions" translate translate-attr-label="CHAT.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="chatWebsites.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'CHAT.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'CHAT.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteChatCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteChatCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.CHATCANNEDANSWERS">ChatCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteChatCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event)" aria-label="add chatCannedAnswer" translate translate-attr-label="CHAT.ADD_CHATCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteChatCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteChatCannedAnswers.length}} {{vm_dc.selectedChatWebsiteChatCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteChatCannedAnswers" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteChatCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteChatCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteChatCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'CHAT.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'CHAT.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'CHAT.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="chatCannedAnswer" md-select-id="id" ng-repeat="chatCannedAnswer in vm_dc.chatWebsiteChatCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{ chatCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" translate="CHAT.EDIT_CHATCANNEDANSWER">\n                                Edit ChatCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(chatCannedAnswer, $event)" translate="CHAT.DELETE_CHATCANNEDANSWER">\n                                Delete ChatCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteChatCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_CHATCANNEDANSWER_AVAILABLE">No chatcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteChatCannedAnswers.count}}" md-on-paginate="vm_dc.getChatWebsiteChatCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.VIDEO">VIDEO</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container vidaoo md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.VIDAOO">VIDAOO</div>\n            </div>\n            <form name="vidaooForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.vidaooEscalation" aria-label="vidaooEscalation" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.VIDAOOESCALATION">vidaooEscalation</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOAPIKEY">vidaooApiKey</label>\n                <input type="text" name="vidaooApiKey" ng-model="vm.chatWebsite.vidaooApiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooApiKey\'].$error" ng-show="vidaooForm[\'vidaooApiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOOAPIKEY_REQUIRED">vidaooApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOTOPIC">vidaooTopic</label>\n                <input type="text" name="vidaooTopic" ng-model="vm.chatWebsite.vidaooTopic" value="Generated by XCALLY Motion" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooTopic\'].$error" ng-show="vidaooForm[\'vidaooTopic\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOOTOPIC_REQUIRED">vidaooTopic field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOONOTE">vidaooNote</label>\n                <input type="text" name="vidaooNote" ng-model="vm.chatWebsite.vidaooNote" value="Meeting generated for interaction #{{interaction.id}} by {{agent.name}}" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooNote\'].$error" ng-show="vidaooForm[\'vidaooNote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOONOTE_REQUIRED">vidaooNote field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOMETADATA">vidaooMetadata</label>\n                <textarea name="vidaooMetadata" ng-model="vm.chatWebsite.vidaooMetadata"></textarea>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteActionsController as vm_ac" ng-init="vm_ac.init(vm.chatWebsite, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="CHAT.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedChatWebsiteApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedChatWebsiteApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedChatWebsiteApps.length}} {{vm_ac.selectedChatWebsiteApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedChatWebsiteApps($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedChatWebsiteApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.chatWebsiteApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editChatWebsiteApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.chatWebsiteApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteInteractionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getChatWebsiteInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getChatWebsiteInteractions()" aria-label="refresh Interactions" translate translate-attr-label="CHAT.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteInteractions.length}} {{vm_dc.selectedChatWebsiteInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteInteractions" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteInteractions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'CHAT.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'CHAT.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'CHAT.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'CHAT.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'CHAT.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.chatWebsiteInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'CHAT.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'CHAT.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spychatInteraction($event, interaction)" translate="CHAT.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.chatInteractionDownload(interaction, $event, true)" translate="CHAT.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.chatInteractionDownload(interaction, $event)" translate="CHAT.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="CHAT.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteInteractions.count}}" md-on-paginate="vm_dc.getChatWebsiteInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.OFFLINEMESSAGES">OFFLINEMESSAGES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container offlinemessages md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteOfflineMessagesController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteOfflineMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.OFFLINEMESSAGES">OfflineMessages</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteOfflineMessages()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteOfflineMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteOfflineMessages.length}} {{vm_dc.selectedChatWebsiteOfflineMessages.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteOfflineMessages" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteOfflineMessages($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteOfflineMessages" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteOfflineMessages">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column>\n                        {{ \'CHAT.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="offlineMessage" md-select-id="id" ng-repeat="offlineMessage in vm_dc.chatWebsiteOfflineMessages.rows">\n                      <td md-cell>\n                        {{offlineMessage.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="offlineMessage.Attachments.length > 0">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{offlineMessage.Contact.firstName}}\n                      </td>\n                      <td md-cell>\n                        {{ offlineMessage.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.showOfflineMessageChatWebsiteOfflineMessage($event, offlineMessage)" translate="CHAT.SHOW_OFFLINEMESSAGE">\n                                SHOW OfflineMessage\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(offlineMessage, $event)" translate="CHAT.DELETE_OFFLINEMESSAGE">\n                                Delete OfflineMessage\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteOfflineMessages.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_OFFLINEMESSAGE_AVAILABLE">No offlinemessage available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteOfflineMessages.count}}" md-on-paginate="vm_dc.getChatWebsiteOfflineMessages" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/chat/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="CHAT.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n        <th md-column>{{ \'CHAT.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'CHAT.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'CHAT.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="CHAT.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="CHAT.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/chat/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/companies/companies.html",'<div id="companies" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.COMPANIES">Companies</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCompanies.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCompanies =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-companies-count">\n          <span>{{vm.selectedCompanies.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCompanies()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCompanies()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCompanies" csv-label="true" filename="companies.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCompanies($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- COMPANY TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCompanies" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCompanies">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.companies.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="company" md-select-id="id" ng-repeat="company in vm.companies.rows">\n                <td md-cell ng-if="company.userpic"><img class="avatar" alt="{{company.name}}" ng-src="api/users/{{company.id}}/avatar" /></td>\n                <td md-cell ng-if="!company.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{company.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="id ">{{company.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="name ">{{company.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="description ">{{company.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(company, $event    )" translate="CONTACTMANAGER.EDIT_COMPANY">\n                          Edit Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotocontactsgoto(company, $event    )" translate="CONTACTMANAGER.GOTOCONTACTS_COMPANY">\n                          goToContacts Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(company, $event    )" translate="CONTACTMANAGER.DELETE_COMPANY">\n                          Delete Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.companies.count}}" md-on-paginate="vm.getCompanies" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / COMPANY TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD COMPANY BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-company-button" ng-click="vm.createOrEditCompany($event)" aria-label="add company" translate translate-attr-aria-label="CONTACTMANAGER.ADD_COMPANY">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD COMPANY BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/companies/create/dialog.html",'<md-dialog class="company-dialog" aria-label="New Company">\n  <form name="companyForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.company.name" ng-required="true" autofocus>\n\n        <div ng-messages="companyForm[\'name\'].$error" ng-show="companyForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.PHONE">Phone</label>\n        <input type="text" name="phone" ng-model="vm.company.phone">\n\n        <div ng-messages="companyForm[\'phone\'].$error" ng-show="companyForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.VAT">Vat</label>\n        <input type="text" name="vat" ng-model="vm.company.vat">\n\n        <div ng-messages="companyForm[\'vat\'].$error" ng-show="companyForm[\'vat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.VAT_REQUIRED">Vat field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FAX">Fax</label>\n        <input type="text" name="fax" ng-model="vm.company.fax">\n\n        <div ng-messages="companyForm[\'fax\'].$error" ng-show="companyForm[\'fax\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.FAX_REQUIRED">Fax field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.COMPANYID">CompanyId</label>\n        <input type="text" name="companyId" ng-model="vm.company.companyId">\n\n        <div ng-messages="companyForm[\'companyId\'].$error" ng-show="companyForm[\'companyId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.COMPANYID_REQUIRED">CompanyId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <input type="text" name="type" ng-model="vm.company.type">\n\n        <div ng-messages="companyForm[\'type\'].$error" ng-show="companyForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.WEBSITE">Website</label>\n        <input type="text" name="website" ng-model="vm.company.website" md-maxlength="255">\n\n        <div ng-messages="companyForm[\'website\'].$error" ng-show="companyForm[\'website\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.WEBSITE_REQUIRED">Website field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CONTACTMANAGER.ERRORS.WEBSITE_MAX_LENGTH" translate-values=\'{max: 255}\'>Website must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL_DOMAIN">Email_Domain</label>\n        <input type="text" name="emailDomain" ng-model="vm.company.emailDomain">\n\n        <div ng-messages="companyForm[\'emailDomain\'].$error" ng-show="companyForm[\'emailDomain\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_DOMAIN_REQUIRED">Email_Domain field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.company.email">\n\n        <div ng-messages="companyForm[\'email\'].$error" ng-show="companyForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.company.description">\n\n        <div ng-messages="companyForm[\'description\'].$error" ng-show="companyForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCompany" ng-click="vm.saveCompany()" class="send-button md-accent md-raised" ng-disabled="companyForm.$invalid || companyForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCompany" ng-click="vm.addNewCompany()" class="send-button md-accent md-raised" ng-disabled="companyForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_COMPANY" translate-attr-aria-label="CONTACTMANAGER.ADD_COMPANY">\n          ADD COMPANY\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCompany" ng-click="vm.deleteCompany($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/companies/edit/view.html",'<div id="contactmanager-company" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-companies-button md-icon-button" aria-label="Go to companies" ng-click="vm.gotoCompanies()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_COMPANIES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="company-image" hide-xs>\n          <img ng-src="assets/images/business/companies.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.company.id}}\n            <span ng-if="vm.company.name">{{vm.company.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.company.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.company, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="CONTACTMANAGER.GOTO_COMPANY"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveCompany()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (addressForm.$invalid) || (shipmentAddressForm.$invalid)" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.GENERAL">GENERAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.company.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.company.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.VAT">Vat</label>\n                <input type="text" name="vat" ng-model="vm.company.vat" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'vat\'].$error" ng-show="generalForm[\'vat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.VAT_REQUIRED">Vat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.FAX">Fax</label>\n                <input type="text" name="fax" ng-model="vm.company.fax" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'fax\'].$error" ng-show="generalForm[\'fax\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.FAX_REQUIRED">Fax field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COMPANYID">CompanyId</label>\n                <input type="text" name="companyId" ng-model="vm.company.companyId" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'companyId\'].$error" ng-show="generalForm[\'companyId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COMPANYID_REQUIRED">CompanyId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.TYPE">Type</label>\n                <input type="text" name="type" ng-model="vm.company.type" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.WEBSITE">Website</label>\n                <input type="text" name="website" ng-model="vm.company.website" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'website\'].$error" ng-show="generalForm[\'website\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.WEBSITE_REQUIRED">Website field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CONTACTMANAGER.ERRORS.WEBSITE_MAX_LENGTH" translate-values=\'{max: 255}\'>Website must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.EMAIL_DOMAIN">Email_Domain</label>\n                <input type="text" name="emailDomain" ng-model="vm.company.emailDomain" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'emailDomain\'].$error" ng-show="generalForm[\'emailDomain\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_DOMAIN_REQUIRED">Email_Domain field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.company.email" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.company.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.ADDRESS">ADDRESS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container address md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.ADDRESS">ADDRESS</div>\n            </div>\n            <form name="addressForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.STREET">Street</label>\n                <input type="text" name="street" ng-model="vm.company.street" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'street\'].$error" ng-show="addressForm[\'street\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.STREET_REQUIRED">Street field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.POSTAL_CODE">Postal_Code</label>\n                <input type="text" name="postalCode" ng-model="vm.company.postalCode" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'postalCode\'].$error" ng-show="addressForm[\'postalCode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.POSTAL_CODE_REQUIRED">Postal_Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.CITY">City</label>\n                <input type="text" name="city" ng-model="vm.company.city" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'city\'].$error" ng-show="addressForm[\'city\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.CITY_REQUIRED">City field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                <input type="text" name="country" ng-model="vm.company.country" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'country\'].$error" ng-show="addressForm[\'country\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COUNTRY_REQUIRED">Country field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.SHIPMENTADDRESS">SHIPMENTADDRESS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container shipmentaddress md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.SHIPMENTADDRESS">SHIPMENTADDRESS</div>\n            </div>\n            <form name="shipmentAddressForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.STREET">Street</label>\n                <input type="text" name="sStreet" ng-model="vm.company.sStreet" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sStreet\'].$error" ng-show="shipmentAddressForm[\'sStreet\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.STREET_REQUIRED">Street field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.POSTAL_CODE">Postal_Code</label>\n                <input type="text" name="sPostalCode" ng-model="vm.company.sPostalCode" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sPostalCode\'].$error" ng-show="shipmentAddressForm[\'sPostalCode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.POSTAL_CODE_REQUIRED">Postal_Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.CITY">City</label>\n                <input type="text" name="sCity" ng-model="vm.company.sCity" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sCity\'].$error" ng-show="shipmentAddressForm[\'sCity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.CITY_REQUIRED">City field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                <input type="text" name="sCountry" ng-model="vm.company.sCountry" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sCountry\'].$error" ng-show="shipmentAddressForm[\'sCountry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COUNTRY_REQUIRED">Country field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/contacts.html",'<div id="contacts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.CONTACTS">Contacts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    \x3c!-- SEARCH --\x3e\n    <div class="search-input-wrapper" layout="row" layout-align="start center">\n      <label for="search">\n        <md-icon md-font-icon="icon-magnify"></md-icon>\n      </label>\n      <md-input-container md-no-float class="m-0">\n        <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n      </md-input-container>\n    </div>\n    \x3c!-- / SEARCH --\x3e\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedContacts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedContacts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-contacts-count">\n          <span>{{vm.selectedContacts.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllContacts()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectContacts()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedContacts" csv-label="true" filename="contacts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedContacts($event)" aria-label="delete selected" translate translate-attr-label="CONTACTS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n      <div layout="row">\n        <div class="column" flex="20">\n          <md-card>\n            <md-card-content>\n              <button layout-align="center center" md-mini-fab ng-click="vm.selectedList = null; vm.selectedCompany = null; vm.selectedTags = []">\n                <md-icon md-font-icon="icon-refresh"></md-icon>{{ \'CONTACTMANAGER.ALL_CONTACTS\' | translate }}\n              </button>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_LIST">Select a list</label>\n                <md-select placeholder="Select a list" ng-model="vm.selectedList" ng-disabled="vm.lists.count === 0">\n                  <md-option ng-value="null"><em translate="CONTACTMANAGER.ALL">All</em></md-option>\n                  <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_COMPANY">Select a company</label>\n                <md-select placeholder="Select a company" flex="100" ng-model="vm.selectedCompany" ng-disabled="vm.companies.count === 0">\n                  <md-option ng-value="null"><em translate="CONTACTMANAGER.ALL">All</em></md-option>\n                  <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows">{{company.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_TAGS">Select one or more tags</label>\n                <md-select multiple placeholder="Select one or more tags" flex="100" ng-model="vm.query.tag" ng-change="vm.getContacts()">\n                  <md-option ng-value="tag.id" ng-repeat="tag in vm.tags.rows">{{tag.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n        </div>\n\n        \x3c!-- USER TABLE --\x3e\n        <md-card flex="80">\n          <md-table-container ng-init="vm.getAssignedCompanies()">\n            <table md-table md-row-select multiple ng-model="vm.selectedContacts" md-progress="vm.promise">\n              <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n                <tr md-row>\n                  <th md-column md-order-by="id">ID</th>\n                  <th md-column md-order-by="firstName">{{\'CONTACTMANAGER.FULLNAME\' | translate}}</th>\n                  <th md-column md-order-by="phone">{{\'CONTACTMANAGER.PHONE\' | translate}}</th>\n                  <th md-column md-order-by="email">{{\'CONTACTMANAGER.EMAIL\' | translate}}</th>\n                  <th md-column md-order-by="createdAt">{{\'CONTACTMANAGER.CREATED_AT\' | translate}}</th>\n                  <th md-column md-order-by="ListId">{{\'CONTACTMANAGER.LIST\' | translate}}</th>\n                  <th md-column md-order-by="CompanyId">{{\'CONTACTMANAGER.COMPANY\' | translate}}</th>\n                  <th md-column md-order-by="tags">{{\'CONTACTMANAGER.TAGS\' | translate}}</th>\n                  <th md-column width="10px"></th>\n                </tr>\n              </thead>\n              <tbody md-body>\n                <tr md-row ng-hide="vm.contacts.rows.length">\n                  <td md-cell colspan="8">\n                    <div layout="row" layout-align="center center">\n                      <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                    </div>\n                  </td>\n                </tr>\n                <tr md-row md-select="contact" md-select-id="id" ng-repeat="contact in vm.contacts.rows">\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="id">{{contact.id}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="firstName" privacy ng-cloak>{{contact.firstName}} {{contact.lastName}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="phone" privacy ng-cloak>{{contact.phone}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="email" privacy ng-cloak>{{contact.email}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="createdAt">{{contact.createdAt | date:\'medium\'}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="list">{{vm.listsMap[contact.ListId]}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="company">{{vm.companiesMap[contact.CompanyId]}}</td>\n                  <td md-cell class="tag">\n                    <div ng-if="contact.Tags.length">\n                      <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                        <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                        <span class="text-truncate">{{contact.Tags[0].name}}</span>\n                      </div>\n                      <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                        <md-tooltip md-direction="left" layout="row">\n                          <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                        </md-tooltip>\n                        <md-icon md-font-icon="icon-tag"></md-icon>\n                      </div>\n                    </div>\n                  </td>\n                  <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.editdialog(contact, ev)" translate="CONTACTMANAGER.EDIT_CONTACT">\n                            Edit Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.mergeContact(ev, contact)" translate="CONTACTMANAGER.MERGE_CONTACT">\n                            Merge Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.duplicateContact(ev, contact)" translate="CONTACTMANAGER.DUPLICATE_CONTACT">\n                            Duplicate Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-divider ng-if="vm.crudPermissions.canEdit && vm.crudPermissions.canDelete">\n                        </md-menu-divider>\n                        <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                          <md-button ng-click="vm.deleteconfirm(contact, ev)" translate="CONTACTMANAGER.DELETE_CONTACT">\n                            Delete Contact\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n\n          <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n        </md-card>\n        \x3c!-- / USER TABLE --\x3e\n      </div>\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USER BUTTON --\x3e\n  <md-fab-speed-dial id="add-contact-button" ng-if="vm.crudPermissions.canEdit" ng-hide="vm.options.hidden" md-direction="up" md-open="vm.options.isOpen" class="md-scale md-fab" ng-class="{ \'md-hover-full\': vm.options.hover }" ng-mouseenter="vm.options.isOpen=true" ng-mouseleave="vm.options.isOpen=false">\n    <md-fab-trigger>\n      <md-button aria-label="menu" class="md-fab md-accent">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </md-fab-trigger>\n    <md-fab-actions>\n      <md-button class="md-fab md-mini md-warn" flow-btn flow-init="vm.ngFlowOptions" flow-files-submitted="$flow.upload()" flow-file-success="vm.importContacts($file, $message, $flow)" flow-file-added="vm.fileAdded($file)" aria-label="Select File" translate translate-attr-aria-label="CONTACTMANAGER.IMPORT_CONTACTS">\n        <md-tooltip md-direction="left" md-visible="tooltipVisible" md-autohide="false">\n          {{\'CONTACTMANAGER.IMPORT_CONTACTS\' | translate}}\n        </md-tooltip>\n        <md-icon md-font-icon="icon-upload"></md-icon>\n      </md-button>\n      <md-button class="md-fab md-mini md-accent" ng-click="vm.createOrEditContact($event)" aria-label="add contact" translate translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n        <md-tooltip md-direction="left" md-visible="tooltipVisible" md-autohide="false">\n          {{\'CONTACTMANAGER.ADD_CONTACT\' | translate}}\n        </md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </md-fab-actions>\n  </md-fab-speed-dial>\n  \x3c!-- / ADD USER BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/create/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="New Contact">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FIRSTNAME">First name</label>\n        <input name="firstName" ng-model="vm.contact.firstName" required md-autofocus privacy="!vm.crudPermissions.canEdit" ng-cloak>\n\n        <div ng-messages="contactForm.firstName.$error" ng-show="contactForm.firstName.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.FIRSTNAME_REQUIRED">First name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LASTNAME">Last name</label>\n        <input name="lastName" ng-model="vm.contact.lastName" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.PHONE">Phone</label>\n        <input name="phone" ng-model="vm.contact.phone" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL">Email</label>\n        <input name="email" type="email" ng-model="vm.contact.email" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.MOBILE">Mobile</label>\n        <input name="mobile" ng-model="vm.contact.mobile" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FAX">Fax</label>\n        <input name="fax" ng-model="vm.contact.fax" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LIST">List</label>\n        <md-select name="list" ng-model="vm.contact.ListId" ng-disabled="vm.contact.id && vm.contact.ListId" ng-change="vm.getCustomFields(vm.contact.ListId)" required>\n          <md-optgroup label="Lists">\n            <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n            <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n          </md-optgroup>\n        </md-select>\n\n        <div ng-messages="contactForm.list.$error" ng-show="contactForm.list.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div ng-repeat="customField in vm.customFields.rows" class="md-block" ng-switch="customField.type">\n        <div ng-switch-when="datetime">\n          <label>{{customField.alias}}</label>\n          <div>\n            \x3c!-- ng-model="customField.value" --\x3e\n            <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]"></mdp-date-picker>\n            <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n            </mdp-time-picker>\n          </div>\n\n        </div>\n\n        <div ng-switch-when="select">\n          <label>{{customField.alias}}</label>\n\n          <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n            <md-option ng-repeat="value in customField.values" ng-value="value.value">{{value.value}}</md-option>\n            <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n          </md-select>\n        </div>\n\n        <div ng-switch-when="switch">\n          <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n            {{customField.alias}}\n          </md-switch>\n        </div>\n\n        <md-input-container ng-switch-default>\n          <label>{{customField.alias}}</label>\n\n          <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n        </md-input-container>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.COMPANY">Company</label>\n        <md-select name="company" ng-model="vm.contact.CompanyId">\n          <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows" ng-hide="!vm.contact.CompanyId && company.canSelect === false" ng-disabled="company.canSelect === false">\n            {{company.name}}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <div ng-if="!vm.allFields" layout="row" layout-align="center center">\n        <md-button class="md-accent" ng-click="vm.allFields = true" translate="CONTACTMANAGER.SHOW_ALL_FIELDS">Show All\n          Fields</md-button>\n      </div>\n\n      <md-input-container class="md-block" ng-if="vm.allFields" flex-gt-sm="" ng-init="vm.contact.dateOfBirth = vm.getDateFromString(vm.contact.dateOfBirth)">\n        <label translate="CONTACTMANAGER.DATE_OF_BIRTH">Date of Birth</label>\n        <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth">\n        </mdp-date-picker>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n        <input type="text" name="country" ng-model="vm.contact.country">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.CITY">City</label>\n        <input type="text" name="city" ng-model="vm.contact.city">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.STREET">Street</label>\n        <input type="text" name="street" ng-model="vm.contact.street">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.POSTAL_CODE">Postal Code</label>\n        <input type="text" name="postalCode" ng-model="vm.contact.postalCode">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.NOTES">Notes</label>\n        <input type="text" name="description" ng-model="vm.contact.description">\n      </md-input-container>\n\n      <div ng-if="vm.allFields" layout="row" layout-align="center center">\n        <md-button class="md-accent" ng-click="vm.allFields = false" translate="CONTACTMANAGER.FEWER_FIELDS">Fewer\n          Fields</md-button>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newContact" ng-click="vm.saveContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid || contactForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newContact" ng-click="vm.addNewContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid || contactForm.$pristine" aria-label="ADD" translate="CONTACTMANAGER.ADD_CONTACT" translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n          ADD CONTACT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newContact" ng-click="vm.deleteContact($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="{{ \'CONTACTMANAGER.DUPLICATE_CONTACT\' | translate }}">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LIST">List</label>\n        <md-select name="list" ng-model="vm.contact.ListId">\n          <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n        </md-select>\n\n        <div ng-messages="contactForm.list.$error" ng-show="contactForm.list.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.addNewContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_CONTACT" translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n          ADD CONTACT\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div flex class="md-block">\n        <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n          <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="CONTACTMANAGER.ERRORS.DATE_REQUIRED">Date is required</span>\n            </div>\n            <div ng-message="format">\n              <span translate="CONTACTMANAGER.ERRORS.DATE_INVALID">Date is invalid</span>\n            </div>\n          </div>\n        </mdp-date-picker>\n      </div>\n\n      <div flex class="md-block">\n        <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n          <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="CONTACTMANAGER.ERRORS.TIME_REQUIRED">Time is required</span>\n            </div>\n            <div ng-message="format">\n              <span translate="CONTACTMANAGER.ERRORS.TIME_INVALID">Time is invalid</span>\n            </div>\n          </div>\n        </mdp-time-picker>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_HOPPER" translate-attr-aria-label="CONTACTMANAGER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="!vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/edit/view.html",'<div id="cm-contact" class="page-layout simple tabbed" layout="column" ng-init="vm.onInit()">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-contacts-button md-icon-button" aria-label="Go to contacts" ng-click="vm.gotoContacts()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_CONTACTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="contact-image" hide-xs>\n          <img ng-src="assets/images/business/contacts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.contact.id}} {{vm.contact.firstName}} {{vm.contact.lastName}}\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.contact.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-if="vm.contact.role && vm.contact.role !== \'admin\'" ng-controller="ContactQueueAddButtonController as vm_contact_qa" ng-cloak>\n      <md-fab-speed-dial ng-hide="vm_contact_qa.hidden" md-direction="left" md-open="vm_contact_qa.isOpen" class="md-scale md-fab" ng-class="{ \'md-hover-full\': vm_contact_qa.hover }" ng-mouseenter="vm_contact_qa.isOpen=true" ng-mouseleave="vm_contact_qa.isOpen=false">\n        <md-fab-trigger>\n          <md-button aria-label="menu" class="md-fab md-primary md-icon-button">\n            <md-tooltip md-direction="top" md-visible="tooltipVisible">Channels</md-tooltip>\n            <md-icon md-font-icon="icon-eye" aria-label="channels"></md-icon>\n          </md-button>\n        </md-fab-trigger>\n        <md-fab-actions>\n          <div ng-repeat="channel in vm_contact_qa.channels">\n            <md-button aria-label="{{channel.name}}" class="md-fab md-raised md-icon-button md-mini" ng-click="vm_contact_qa.openDialog($event, vm.contact, channel)">\n              <md-tooltip md-direction="{{channel.direction}}" md-visible="tooltipVisible" md-autohide="false">\n                {{channel.name}}\n              </md-tooltip>\n              <md-icon md-font-icon="{{channel.icon}}" aria-label="{{channel.name}}"></md-icon>\n            </md-button>\n          </div>\n        </md-fab-actions>\n      </md-fab-speed-dial>\n    </div>\n\n    <div ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.duplicateContact($event)" class="md-fab md-warn md-icon-button" aria-label="DUPLICATE">\n        <md-icon md-font-icon="icon-file-multiple"></md-icon>\n      </md-button>\n      <md-button type="submit" ng-click="vm.saveContact()" class="send-button md-accent md-raised" ng-disabled="detailForm.$pristine && customFieldsForm.$pristine && socialForm.$pristine" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.DETAIL">DETAIL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div layout="column" flex="70">\n              <md-card class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n                <div class="pb-16" layout="row" layout-align="start center">\n                  <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.PERSONAL_INFO">PERSONAL_INFO\n                  </div>\n                </div>\n                <form name="detailForm" novalidate>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- fistName --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.FIRSTNAME">First Name</label>\n                      <md-icon md-font-icon="icon-account" class="firstname"></md-icon>\n                      <input type="text" name="firstName" ng-model="vm.contact.firstName" class="text-truncate" required ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                      <div ng-messages="detailForm.firstName.$error" ng-show="detailForm.firstName.$touched" role="alert">\n                        <div ng-message="required">\n                          <span translate="CONTACTMANAGER.ERRORS.FIRSTNAME_REQUIRED">First name field is required</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- lastName --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.LASTNAME">Last Name</label>\n                      <input type="text" name="lastName" ng-model="vm.contact.lastName" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- phone --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.PHONE">Phone</label>\n                      <md-icon md-font-icon="icon-phone"></md-icon>\n                      <input type="text" name="phone" ng-model="vm.contact.phone" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- mobile --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.MOBILE">Mobile</label>\n                      <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n                      <input type="text" name="mobile" ng-model="vm.contact.mobile" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- email --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.EMAIL">Email</label>\n                      <md-icon md-font-icon="icon-email" class="email"></md-icon>\n                      <input type="email" name="email" ng-model="vm.contact.email" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                      <div ng-messages="detailForm.firstName.$error" ng-show="detailForm.firstName.$touched" role="alert">\n                        <div ng-message="email">\n                          <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail\n                            address</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- fax --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.FAX">Fax</label>\n                      <md-icon md-font-icon="icon-deskphone"></md-icon>\n                      <input type="text" name="fax" ng-model="vm.contact.fax" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="" ng-init="vm.contact.dateOfBirth = vm.getDateFromString(vm.contact.dateOfBirth)">\n                      <label translate="CONTACTMANAGER.DATE_OF_BIRTH">Date of Birth</label>\n                      <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth" mdp-disabled="!vm.crudPermissions.canEdit"></mdp-date-picker>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container ng-if="vm.companies.rows.length" class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.COMPANY">Company</label>\n                      <md-icon md-font-icon="icon-domain"></md-icon>\n                      <md-select name="company" ng-model="vm.contact.CompanyId" ng-disabled="!vm.crudPermissions.canEdit">\n                        <md-optgroup label="Companies">\n                          <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows" ng-disabled="company.canSelect === false">{{company.name}}</md-option>\n                          <md-option ng-value=" null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                        </md-optgroup>\n                      </md-select>\n                      <md-icon class="pointer" ng-show="vm.contact.CompanyId" md-font-icon="icon-information-outline" ng-click="vm.editCompany($event, vm.contact.CompanyId)"></md-icon>\n                    </md-input-container>\n                    <section ng-if="!vm.companies.rows.length" flex-gt-sm="">\n                      <md-icon md-font-icon="icon-briefcase"></md-icon>\n                      <label translate="CONTACTMANAGER.NO_COMPANIES">No Companies</label>\n                    </section>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container ng-if="vm.tags.rows.length" class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.TAGS">Tags</label>\n                      <md-icon md-font-icon="icon-tag"></md-icon>\n                      <md-select ng-model="vm.Tags" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                        <md-optgroup label="Tags">\n                          <md-option ng-value="tag.id" ng-repeat="tag in vm.tags.rows" ng-disabled="tag.canSelect === false">{{tag.name}}</md-option>\n                        </md-optgroup>\n                      </md-select>\n                    </md-input-container>\n                    <section ng-if="!vm.tags.rows.length" flex-gt-sm="">\n                      <md-icon md-font-icon="icon-tag"></md-icon>\n                      <label translate="CONTACTMANAGER.NO_TAG">No Tags</label>\n                      <md-button class="md-accent" translate="CONTACTMANAGER.ADD_TAG">Add Tag</md-button>\n                    </section>\n                  </div>\n\n                  <div ng-if="!vm.allFields" layout="row" layout-align="center center">\n                    <md-button class="md-accent" ng-click="vm.allFields = true" translate="CONTACTMANAGER.SHOW_ALL_FIELDS">Show All Fields</md-button>\n                  </div>\n\n                  <div ng-if="vm.allFields">\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      \x3c!-- country --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                        <md-icon md-font-icon="icon-home" class="country"></md-icon>\n                        <input type="text" name="country" ng-model="vm.contact.country" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                      <div flex="5"></div>\n                      \x3c!-- city --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.CITY">City</label>\n                        <input type="text" name="city" ng-model="vm.contact.city" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                    </div>\n\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      <div flex="5"></div>\n                      \x3c!-- street --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.STREET">Street</label>\n                        <input type="text" name="street" ng-model="vm.contact.street" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                      <div flex="5"></div>\n                      \x3c!-- postalCode --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.POSTALCODE">Postal Code</label>\n                        <input type="text" name="postalCode" ng-model="vm.contact.postalCode" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                    </div>\n\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate translate-attr-placeholder="CONTACTMANAGER.NOTES">Notes</label>\n                        <md-icon md-font-icon="icon-note"></md-icon>\n                        <textarea ng-model="vm.contact.description" type="text" max-rows="4" ng-disabled="!vm.crudPermissions.canEdit"></textarea>\n                      </md-input-container>\n                    </div>\n\n                    <div layout="row" layout-align="center center">\n                      <md-button class="md-accent" ng-click="vm.allFields = false" translate="CONTACTMANAGER.FEWER_FIELDS">Fewer Fields\n                      </md-button>\n                    </div>\n\n                  </div>\n                </form>\n              </md-card>\n              <md-card class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n                <div class="pb-16" layout="row" layout-align="start center">\n                  <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.SOCIAL">Social</div>\n                </div>\n                <form name="socialForm" novalidate>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Facebook</label>\n                      <md-icon md-font-icon="icon-facebook" class="facebook"></md-icon>\n                      <input type="text" name="facebook" ng-model="vm.contact.facebook" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Twitter</label>\n                      <md-icon md-font-icon="icon-twitter" class="twitter"></md-icon>\n                      <input type="text" name="twitter" ng-model="vm.contact.twitter" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                    </md-input-container>\n                  </div>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Line</label>\n                      <md-icon md-font-icon="fab fa-line"></md-icon>\n                      <input type="text" name="line" ng-model="vm.contact.line" class="text-truncate">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Viber</label>\n                      <md-icon md-font-icon="fab fa-viber"></md-icon>\n                      <input type="text" name="viber" ng-model="vm.contact.viber" class="text-truncate">\n                    </md-input-container>\n                  </div>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>WeChat</label>\n                      <md-icon md-font-icon="fab fa-weixin"></md-icon>\n                      <input type="text" name="wechat" ng-model="vm.contact.wechat" class="text-truncate">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Telegram</label>\n                      <md-icon md-font-icon="icon-telegram"></md-icon>\n                      <input type="text" name="telegram" ng-model="vm.contact.telegram" class="text-truncate">\n                    </md-input-container>\n                  </div>\n                </form>\n              </md-card>\n            </div>\n\n            <div flex></div>\n\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex="25">\n              <div class="pb-16" layout="row" layout-align="start center">\n                <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.CUSTOM_FIELDS">CUSTOM FIELDS\n                </div>\n              </div>\n              <form name="customFieldsForm" novalidate>\n                <md-input-container class="md-block">\n                  <label translate translate-attr-placeholder="CONTACTMANAGER.LIST">List</label>\n                  <md-select name="list" ng-model="vm.contact.ListId" md-on-close="vm.onSelectList($event)" ng-disabled="vm.contact.ListId">\n                    <md-optgroup label="Lists">\n                      <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">#{{list.id}} - {{list.name}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                    </md-optgroup>\n                  </md-select>\n                </md-input-container>\n                <div ng-repeat="customField in vm.customFields.rows" ng-switch="customField.type">\n                  <md-input-container class="md-block" ng-switch-when="datetime">\n                    <label>{{customField.alias}}</label>\n                    <div ng-init="vm.contact[\'cf_\' + customField.id] = vm.getDateFromString(vm.contact[\'cf_\' + customField.id])">\n                      <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]"></mdp-date-picker>\n                      <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-time-picker>\n                    </div>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="select">\n                    <label>{{customField.alias}}</label>\n                    <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required" ng-disabled="!vm.crudPermissions.canEdit">\n                      <md-option ng-repeat="value in customField.values" ng-value="value.value">{{value.value}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                    </md-select>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="switch">\n                    <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n                      {{customField.alias}}\n                    </md-switch>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-default>\n                    <label>{{customField.alias}}</label>\n                    <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required" ng-disabled="!vm.crudPermissions.canEdit">\n                  </md-input-container>\n                </div>\n              </form>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab ng-if="vm.license.dialer">\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.MOTION_BULL">MOTION BULL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.HOPPER">Hopper</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryHopper.filter = query;" on-collapse="vm.queryHopper.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getHoppers()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryHopper.sort" md-on-reorder="vm.getHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                      <th md-column md-order-by="phone">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="scheduledat">{{ \'CONTACTMANAGER.SCHEDULEDAT\' | translate }}</th>\n                      <th md-column md-order-by="priority">{{ \'MOTIONDIALER.PRIORITY\' | translate }}</th>\n                      <th md-column md-order-by="recallme">{{ \'CONTACTMANAGER.RECALLME\' | translate }}</th>\n                      <th md-column md-order-by="VoiceQueueId">{{ \'CONTACTMANAGER.VOICEQUEUEID\' | translate }}</th>\n                      <th md-column md-order-by="CampaignId">{{ \'CONTACTMANAGER.CAMPAIGNID\' | translate }}</th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.hoppers.count">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, hopper) in vm.hoppers.rows">\n                      <td md-cell>{{hopper.id}}</td>\n                      <td md-cell privacy ng-cloak>{{hopper.phone}}</td>\n                      <td md-cell>{{hopper.scheduledat | date:\'medium\'}}</td>\n                      <td md-cell>{{ vm.arraypriority[hopper.priority].option }}</td>\n                      <td md-cell class="recallme ">\n                        <md-icon md-colors="{color: {{hopper.recallme ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{hopper.recallme? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell>{{hopper.VoiceQueueId}}</td>\n                      <td md-cell>{{hopper.CampaignId}}</td>\n                      <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="2">\n                            <md-menu-item>\n                              <md-button ng-if="vm.crudPermissions.canEdit && hopper.VoiceQueueId" ng-click="vm.editHopper($event, hopper)" translate="CONTACTMANAGER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                              <md-button ng-if="vm.crudPermissions.canEdit && hopper.CampaignId" ng-click="vm.createOrEditIvrCampaignHopper($event, hopper)" translate="CONTACTMANAGER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item>\n                              <md-button ng-click="vm.crudPermissions.canDelete && vm.deleteconfirm(hopper, $event)" translate="CONTACTMANAGER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHopper.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHopper.page" md-total="{{vm.hoppers.count}}" md-on-paginate="vm.getHoppers" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.FINAL">Final</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryFinal.filter = query;" on-collapse="vm.queryFinal.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getFinals()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryFinal.sort" md-on-reorder="vm.getFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">{{ \'CONTACTMANAGER.UNIQUEID\' | translate }}</th>\n                      <th md-column md-order-by="calleridnum">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="state">{{ \'CONTACTMANAGER.STATE\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="disposition">{{ \'CONTACTMANAGER.DISPOSITION\' | translate }}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.finals.count">\n                      <td md-cell colspan="5">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, final) in vm.finals.rows">\n                      <td md-cell>{{final.uniqueid}}</td>\n                      <td md-cell privacy ng-cloak>{{final.calleridnum}}</td>\n                      <td md-cell>{{final.statedesc}}</td>\n                      <td md-cell>{{final.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{final.disposition}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryFinal.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryFinal.page" md-total="{{vm.finals.count}}" md-on-paginate="vm.getFinals" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.HISTORY">History</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryHistory.filter = query;" on-collapse="vm.queryHistory.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getHistories()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryHistory.sort" md-on-reorder="vm.getHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">{{ \'CONTACTMANAGER.UNIQUEID\' | translate }}</th>\n                      <th md-column md-order-by="calleridnum">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="state">{{ \'CONTACTMANAGER.STATE\' | translate }}</th>\n                      <th md-column md-order-by="scheduledat">{{ \'CONTACTMANAGER.SCHEDULEDAT\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="endtime">{{ \'CONTACTMANAGER.ENDTIME\' | translate }}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.histories.count">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, history) in vm.histories.rows">\n                      <td md-cell>{{history.uniqueid}}</td>\n                      <td md-cell privacy ng-cloak>{{history.calleridnum}}</td>\n                      <td md-cell>{{history.statedesc}}</td>\n                      <td md-cell>{{history.scheduledat | date:\'medium\'}}</td>\n                      <td md-cell>{{history.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{history.endtime | date:\'medium\'}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHistory.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHistory.page" md-total="{{vm.histories.count}}" md-on-paginate="vm.getHistories" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab ng-if="vm.license.jscripty">\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.JSCRIPTY">JSCRIPTY</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.SESSIONS">Sessions</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryJscriptySession.filter = query;" on-collapse="vm.queryJscriptySession.filter = undefined;" debounce="300"></ms-search-bar>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- SESSION TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryJscriptySession.sort" md-on-reorder="vm.getJscriptySessions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="endtime">{{ \'CONTACTMANAGER.ENDTIME\' | translate }}</th>\n                      <th md-column md-order-by="agent">{{ \'CONTACTMANAGER.AGENT\' | translate }}</th>\n                      <th md-column md-order-by="project">{{ \'CONTACTMANAGER.PROJECT\' | translate }}</th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.jscriptySessions.count">\n                      <td md-cell colspan="6">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, session) in vm.jscriptySessions.rows">\n                      <td md-cell>{{session.id}}</td>\n                      <td md-cell>{{session.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{session.endtime | date:\'medium\'}}</td>\n                      <td md-cell>{{session.membername}}</td>\n                      <td md-cell>{{session.projectname}}</td>\n                      <td md-cell class="actions"></td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHopper.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHopper.page" md-total="{{vm.hoppers.count}}" md-on-paginate="vm.getHoppers" md-page-select></md-table-pagination>\n              \x3c!-- / SESSION TABLE --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.CUSTOMER_JOURNEY">CUSTOMER JOURNEY</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <md-content class="md-padding" id="journey-content">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n            </div>\n          </md-content>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/import/import.html",'<md-dialog class="import-dialog" aria-label="Import contact">\n  <form name="importForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="CONTACTMANAGER.IMPORT_CONTACTS">Import Contacts</span>\n        <md-button ng-if="vm.result.finish || !vm.processing" class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <div md-background-bg layout="row" layout-align="start start">\n      <md-progress-linear ng-disabled="!vm.processing || vm.result.finish" md-mode="indeterminate" class="md-warn"></md-progress-linear>\n    </div>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div>\n        <md-content ng-show="!vm.processing">\n          <div class="form-title" translate="CONTACTMANAGER.CONTACTMANAGER">CONTACT MANAGER</div>\n\n          <md-input-container class="md-icon-float md-block" ng-repeat="contactField in vm.contactFields">\n            <label>{{\'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}</label>\n            <md-select name="{{contactField.key}}" ng-model="vm.binding[contactField.key]" placeholder="{{\'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}" ng-required="contactField.required">\n              <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n              <md-option ng-value="null" ng-hide="contactField.required">\n                <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <label translate="CONTACTMANAGER.LIST">List</label>\n            <md-select name="list" ng-model="vm.ListId" placeholder="Select a list" ng-change="vm.onChangeList()" required>\n              <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block" ng-repeat="customField in vm.customFields.rows">\n            <label>{{customField.alias}}</label>\n            <md-select ng-model="vm.binding[\'cf_\' + customField.id]" placeholder="{{customField.alias}}" ng-required="customField.required">\n              <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n              <md-option ng-value="null" ng-hide="customField.required">\n                <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <label translate="CONTACTMANAGER.COMPANY">Company</label>\n            <md-select name="company" ng-model="vm.CompanyId" placeholder="Select a company">\n              <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows">{{company.name}}</md-option>\n              <md-option ng-value="null">\n                <em translate="CONTACTMANAGER.NONE">None</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <md-select ng-model="vm.duplicates" placeholder="{{ \'CONTACTMANAGER.CHECK_DUPLICATES\' | translate}}" multiple>\n              <md-option ng-value="contactField.key" ng-repeat="contactField in vm.contactFields">{{ \'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}</md-option>\n            </md-select>\n          </md-input-container>\n\n          <div ng-if="vm.license.dialer">\n            <div class="form-title" translate="CONTACTMANAGER.MOTIONDIALER">MOTION BULL</div>\n\n            <md-input-container class="md-icon-float md-block" ng-repeat="motionBullField in vm.motionBullFields">\n              <label>{{\'CONTACTMANAGER.\' + motionBullField.key | uppercase | translate}}</label>\n              <md-select name="{{motionBullField.key}}" ng-model="vm.binding[motionBullField.key]" placeholder="{{\'CONTACTMANAGER.\' + motionBullField.key | uppercase | translate}}" ng-required="motionBullField.required">\n                <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                <md-option ng-value="null" ng-hide="contactField.required">\n                  <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n\n        </md-content>\n\n        <div class="error-list" ng-if="vm.result.finish">\n          <div class="info" layout="row" layout-align="space-between center">\n            <div>\n              <div class="message">{{\'CONTACTMANAGER.UPLOAD_COMPLETED\' | translate | uppercase}} ({{vm.result.elapsed}}s)</div>\n            </div>\n            <md-button class="md-icon-button">\n              <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n            </md-button>\n          </div>\n        </div>\n\n        <div layout="row" ng-if="vm.processing">\n          \x3c!-- WIDGET PROCESSING --\x3e\n          <ms-widget ng-if="!vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 orange-fg">\n                  <span ng-bind="vm.result.rows"></span>\n                </div>\n                <div ng-if="vm.processing" class="font-weight-500 secondary-text">Please wait, we are processing your contacts...</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET PROCESSING --\x3e\n          \x3c!-- WIDGET SUCCESS --\x3e\n          <ms-widget ng-if="vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 green-fg">\n                  <span ng-bind="vm.result.affectedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.SUCCESS">Success</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET SUCCESS --\x3e\n\n          \x3c!-- WIDGET FAILURE --\x3e\n          <ms-widget ng-if="vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 red-fg">\n                  <span ng-bind="vm.result.failedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.FAILURE">Failure</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET FAILURE --\x3e\n\n          \x3c!-- WIDGET DUPLICATES --\x3e\n          <ms-widget ng-if="vm.result.duplicatedRows && vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 orange-fg">\n                  <span ng-bind="vm.result.duplicatedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.DUPLICATES">Duplicates</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET DUPLICATES --\x3e\n        </div>\n\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row">\n        <md-button ng-if="!vm.processing" ng-disabled="importForm.$invalid || importForm.$pristine" ng-click="vm.uploadCsv()" class="md-accent md-raised" aria-label="UPLOAD" translate="CONTACTMANAGER.UPLOAD" translate-attr-aria-label="CONTACTMANAGER.IMPORT">\n          IMPORT\n        </md-button>\n        <md-button ng-if="vm.processing && !vm.result.finish && !vm.stopping" ng-click="vm.stopUpload()" class="md-accent md-raised" aria-label="Stop Upload" translate="CONTACTMANAGER.STOP" translate-attr-aria-label="CONTACTMANAGER.STOP">\n          STOP\n        </md-button>\n        <md-button ng-if="vm.result.finish && vm.result.errors.length" ng-csv="vm.getArrayErrors()" csv-header="vm.getHeaderErrors()" class="md-accent md-raised" aria-label="Export Errors" filename="contacts_import_errors.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon> {{\'CONTACTMANAGER.EXPORT_ERRORS\' | translate}}\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/merge/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="Merge Contact">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block" flex-gt-sm>\n        <label>Filter</label>\n        <input ng-model="vm.searchTerm" name="searchTerm" ng-model-options="{ debounce: 300 }" ng-change="vm.change()">\n      </md-input-container>\n\n      <md-list flex>\n        <md-subheader class="md-no-sticky" ng-hide="vm.contacts.length"><em>Filter doesn\'t match any contact</em></md-subheader>\n        <md-list-item class="md-3-line" ng-repeat="contact in vm.contacts | filter:{ id: \'!\' + vm.contact.id}" ng-click="vm.showConfirm($event, vm.contact, contact)">\n          <img ng-src="assets/images/avatars/profile.png" class="md-avatar" alt="{{contact.who}}" />\n          <div class="md-list-item-text" layout="column">\n            <h3>#{{ contact.id }} - {{ contact.firstName }} {{ contact.lastName }}</h3>\n            <h4>{{ contact.email }}</h4>\n            <p>{{ contact.phone }}</p>\n          </div>\n        </md-list-item>\n      </md-list>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",'<md-dialog class="globalCustomField-dialog" aria-label="New GlobalCustomField">\n  <form name="globalCustomFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.ALIAS">Alias</label>\n        <input type="" name="alias" ng-model="vm.globalCustomField.alias" ng-required="true" autofocus>\n\n        <div ng-messages="globalCustomFieldForm[\'alias\'].$error" ng-show="globalCustomFieldForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.globalCustomField.type" required ng-disabled="!vm.newGlobalCustomField">\n          <md-option ng-value="\'text\'">Text</md-option>\n          <md-option ng-value="\'select\'">Select</md-option>\n          <md-option ng-value="\'number\'">Number</md-option>\n          <md-option ng-value="\'switch\'">Switch</md-option>\n          <md-option ng-value="\'datetime\'">Datetime</md-option>\n        </md-select>\n        <div ng-messages="globalCustomFieldForm[\'type\'].$error" ng-show="globalCustomFieldForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.globalCustomField.type == \'select\'" class="md-block">\n        <md-list>\n          <md-list-item layout-margin>\n            <md-button class="md-fab md-mini md-secondary" ng-click="vm.addItem(vm.globalCustomField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.ADD">ADD</span></md-tooltip>\n              <md-icon md-font-icon="icon-plus" aria-label="alert error"></md-icon>\n            </md-button>\n            <md-button ng-if="vm.globalCustomField.values.length" class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItems(vm.globalCustomField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE_ALL">Delete All</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list ng-sortable="vm.sortable">\n          <md-list-item ng-repeat="item in vm.globalCustomField.values" style="border: 1px solid #ccc!important; border-radius: 7px;" layout-margin>\n            <div>\n              <md-icon class="s24" style="cursor:move" md-font-icon="icon-drag" aria-label="drag"></md-icon>\n              <input type="text" ng-model="item.value" flex>\n            </div>\n            <md-button class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItem(vm.globalCustomField.values, $index);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list>\n          <md-list-item ng-if="!vm.globalCustomField.values.length" layout="row" layout-align="center center">\n            <em translate="CONTACTMANAGER.NO_AVAILABLE_ITEMS">No Available Items</em>\n          </md-list-item>\n        </md-list>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.globalCustomField.required" aria-label="Required"><span translate="CONTACTMANAGER.REQUIRED">Required</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.globalCustomField.type == \'text\'" class="md-block">\n        <md-switch ng-model="vm.globalCustomField.clickToAction" aria-label="ClickToAction"><span translate="CONTACTMANAGER.CLICKTOACTION">ClickToAction</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.globalCustomField.clickToAction" class="md-block">\n        <label translate="CONTACTMANAGER.ACTIONTYPE">ActionType</label>\n        <md-select name="actionType" ng-model="vm.globalCustomField.actionType">\n          <md-option ng-value="\'voice\'">Voice</md-option>\n        </md-select>\n        <div ng-messages="globalCustomFieldForm[\'actionType\'].$error" ng-show="globalCustomFieldForm[\'actionType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ACTIONTYPE_REQUIRED">ActionType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newGlobalCustomField" ng-click="vm.saveGlobalCustomField()" class="send-button md-accent md-raised" ng-disabled="globalCustomFieldForm.$invalid || globalCustomFieldForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newGlobalCustomField" ng-click="vm.addNewGlobalCustomField()" class="send-button md-accent md-raised" ng-disabled="globalCustomFieldForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD" translate-attr-aria-label="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD">\n          ADD GLOBALCUSTOMFIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newGlobalCustomField" ng-click="vm.deleteGlobalCustomField($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/globalCustomFields/globalCustomFields.html",'<div id="globalCustomFields" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.GLOBALCUSTOMFIELDS">GlobalCustomFields</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedGlobalCustomFields.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedGlobalCustomFields =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-globalCustomFields-count">\n          <span>{{vm.selectedGlobalCustomFields.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllGlobalCustomFields()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectGlobalCustomFields()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedGlobalCustomFields" csv-label="true" filename="globalCustomFields.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedGlobalCustomFields($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- GLOBALCUSTOMFIELD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedGlobalCustomFields" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getGlobalCustomFields">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="alias">{{ \'CONTACTMANAGER.ALIAS\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'CONTACTMANAGER.TYPE\' | translate }}</th>\n                <th md-column md-order-by="required">{{ \'CONTACTMANAGER.REQUIRED\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.globalCustomFields.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="globalCustomField" md-select-id="id" ng-repeat="globalCustomField in vm.globalCustomFields.rows">\n                <td md-cell ng-if="globalCustomField.userpic"><img class="avatar" alt="{{globalCustomField.name}}" ng-src="api/users/{{globalCustomField.id}}/avatar" /></td>\n                <td md-cell ng-if="!globalCustomField.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{globalCustomField.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="id ">{{globalCustomField.id}}</td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="alias ">{{globalCustomField.alias}}</td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="type ">{{ vm.arraytype[globalCustomField.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(globalCustomField, ev) : vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="required ">\n                  <md-icon md-colors="{color: {{globalCustomField.required ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{globalCustomField.required ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(globalCustomField, $event    )" translate="CONTACTMANAGER.EDIT_GLOBALCUSTOMFIELD">\n                          Edit GlobalCustomField\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(globalCustomField, $event    )" translate="CONTACTMANAGER.DELETE_GLOBALCUSTOMFIELD">\n                          Delete GlobalCustomField\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.globalCustomFields.count}}" md-on-paginate="vm.getGlobalCustomFields" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / GLOBALCUSTOMFIELD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD GLOBALCUSTOMFIELD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-globalCustomField-button" ng-click="vm.createOrEditGlobalCustomField($event)" aria-label="add globalCustomField" translate translate-attr-aria-label="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD GLOBALCUSTOMFIELD BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/lists/create/dialog.html",'<md-dialog class="list-dialog" aria-label="New List">\n  <form name="listForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.list.name" ng-required="true" autofocus>\n\n        <div ng-messages="listForm[\'name\'].$error" ng-show="listForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.list.description">\n\n        <div ng-messages="listForm[\'description\'].$error" ng-show="listForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newList" ng-click="vm.saveList()" class="send-button md-accent md-raised" ng-disabled="listForm.$invalid || listForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newList" ng-click="vm.addNewList()" class="send-button md-accent md-raised" ng-disabled="listForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_LIST" translate-attr-aria-label="CONTACTMANAGER.ADD_LIST">\n          ADD LIST\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newList" ng-click="vm.deleteList($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",'<md-dialog class="list-dialog" aria-label="list" ng-init="vm.onInit()">\n  <form name="listForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CONTACTMANAGER.AGENTADD_LIST">Add Agent to list</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/customFields/dialog.html",'<md-dialog class="customField-dialog" aria-label="New CustomField">\n  <form name="customFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.ALIAS">Alias</label>\n        <input type="" name="alias" ng-model="vm.customField.alias" ng-required="true" autofocus>\n\n        <div ng-messages="customFieldForm[\'alias\'].$error" ng-show="customFieldForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.customField.type" required ng-disabled="!vm.newCustomField">\n          <md-option ng-value="\'text\'">Text</md-option>\n          <md-option ng-value="\'select\'">Select</md-option>\n          <md-option ng-value="\'number\'">Number</md-option>\n          <md-option ng-value="\'switch\'">Switch</md-option>\n          <md-option ng-value="\'datetime\'">Datetime</md-option>\n        </md-select>\n        <div ng-messages="customFieldForm[\'type\'].$error" ng-show="customFieldForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.customField.type == \'select\'" class="md-block">\n        <md-list>\n          <md-list-item layout-margin>\n            <md-button class="md-fab md-mini md-secondary" ng-click="vm.addItem(vm.customField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.ADD">ADD</span></md-tooltip>\n              <md-icon md-font-icon="icon-plus" aria-label="alert error"></md-icon>\n            </md-button>\n            <md-button ng-if="vm.customField.values.length" class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItems(vm.customField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE_ALL">Delete All</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list ng-sortable="vm.sortable">\n          <md-list-item ng-repeat="item in vm.customField.values" style="border: 1px solid #ccc!important; border-radius: 7px;" layout-margin>\n            <div>\n              <md-icon class="s24" style="cursor:move" md-font-icon="icon-drag" aria-label="drag"></md-icon>\n              <input type="text" ng-model="item.value" flex>\n            </div>\n            <md-button class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItem(vm.customField.values, $index);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list>\n          <md-list-item ng-if="!vm.customField.values.length" layout="row" layout-align="center center">\n            <em translate="CONTACTMANAGER.NO_AVAILABLE_ITEMS">No Available Items</em>\n          </md-list-item>\n        </md-list>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customField.required" aria-label="Required"><span translate="CONTACTMANAGER.REQUIRED">Required</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.customField.type == \'text\'" class="md-block">\n        <md-switch ng-model="vm.customField.clickToAction" aria-label="clickToAction"><span translate="CONTACTMANAGER.CLICKTOACTION">clickToAction</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.customField.clickToAction" class="md-block">\n        <label translate="CONTACTMANAGER.ACTIONTYPE">actionType</label>\n        <md-select name="actionType" ng-model="vm.customField.actionType">\n          <md-option ng-value="\'voice\'">Voice</md-option>\n        </md-select>\n        <div ng-messages="customFieldForm[\'actionType\'].$error" ng-show="customFieldForm[\'actionType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ACTIONTYPE_REQUIRED">actionType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomField" ng-click="vm.saveCustomField()" class="send-button md-accent md-raised" ng-disabled="customFieldForm.$invalid || customFieldForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomField" ng-click="vm.addNewCustomField()" class="send-button md-accent md-raised" ng-disabled="customFieldForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_CUSTOMFIELD" translate-attr-aria-label="CONTACTMANAGER.ADD_CUSTOMFIELD">\n          ADD CUSTOMFIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomField" ng-click="vm.deleteCustomField($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/view.html",'<div id="contactmanager-list" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-lists-button md-icon-button" aria-label="Go to lists" ng-click="vm.gotoLists()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_LISTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="list-image" hide-xs>\n          <img ng-src="assets/images/business/lists.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.list.id}}\n            <span ng-if="vm.list.name">{{vm.list.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.list.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.list, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="CONTACTMANAGER.GOTO_LIST"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.list, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="CONTACTMANAGER.AGENTADD_LIST"></span></md-tooltip>\n        <md-icon md-font-icon="icon-eye"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveList()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (customFieldsForm.$invalid) || (voiceDispositionsForm.$invalid)" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="list-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.list.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.list.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.list.dialPrefix" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialPrefix\'].$error" ng-show="generalForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.CUSTOMFIELDS">CUSTOMFIELDS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="list-detail-form-container customfields md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ListCustomFieldsController as vm_dc" ng-init="vm_dc.init(vm.list, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedListCustomFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.CUSTOMFIELDS">CustomFields</span>\n                  <ms-search-bar on-search="vm_dc.getListCustomFields()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditListCustomField($event)" aria-label="add customField" translate translate-attr-label="CONTACTMANAGER.ADD_CUSTOMFIELD">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedListCustomFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedListCustomFields.length}} {{vm_dc.selectedListCustomFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedListCustomFields" csv-label="true" filename="lists.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedListCustomFields($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedListCustomFields" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getListCustomFields">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CONTACTMANAGER.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="alias">\n                        {{ \'CONTACTMANAGER.ALIAS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="type">\n                        {{ \'CONTACTMANAGER.TYPE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="required">\n                        {{ \'CONTACTMANAGER.REQUIRED\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="customField" md-select-id="id" ng-repeat="customField in vm_dc.listCustomFields.rows">\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{customField.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{customField.alias}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{ vm_dc.arraytype[customField.type].option }} </td>\n\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell class="required ">\n                        <md-icon md-colors="{color: {{customField.required ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{customField.required? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditListCustomField($event, customField)" translate="CONTACTMANAGER.EDIT_CUSTOMFIELD">\n                                Edit CustomField\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(customField, $event)" translate="CONTACTMANAGER.DELETE_CUSTOMFIELD">\n                                Delete CustomField\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.listCustomFields.rows.length">\n                      <td md-cell colspan="9">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CONTACTMANAGER.NO_CUSTOMFIELD_AVAILABLE">No customfield available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.listCustomFields.count}}" md-on-paginate="vm_dc.getListCustomFields" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="ListDispositionsController as vm_dc" ng-init="vm_dc.init(vm.list, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="list-detail-form-container voicedispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedListDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="CONTACTMANAGER.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add contactmanager dispositions" translate translate-attr-label="CONTACTMANAGER.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="lists.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/lists/lists.html",'<div id="lists" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.LISTS">Lists</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedLists.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedLists =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-lists-count">\n          <span>{{vm.selectedLists.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllLists()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectLists()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedLists" csv-label="true" filename="lists.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedLists($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- LIST TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedLists" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getLists">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.lists.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="list" md-select-id="id" ng-repeat="list in vm.lists.rows">\n                <td md-cell ng-if="list.userpic"><img class="avatar" alt="{{list.name}}" ng-src="api/users/{{list.id}}/avatar" /></td>\n                <td md-cell ng-if="!list.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{list.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="id ">{{list.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="name ">{{list.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="description ">{{list.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(list, $event    )" translate="CONTACTMANAGER.EDIT_LIST">\n                          Edit List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotocontactsgoto(list, $event    )" translate="CONTACTMANAGER.GOTOCONTACTS_LIST">\n                          goToContacts List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadContactManagerLists">\n\n                        <md-button ng-click="vm.exportcsvcontactsexport(list, $event    )" translate="CONTACTMANAGER.EXPORTCSVCONTACTS_LIST">\n                          exportCsvContacts List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(list, $event    )" translate="CONTACTMANAGER.AGENTADD_LIST">\n                          AgentAdd List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(list, $event    )" translate="CONTACTMANAGER.DELETE_LIST">\n                          Delete List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.lists.count}}" md-on-paginate="vm.getLists" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / LIST TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD LIST BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-list-button" ng-click="vm.createOrEditList($event)" aria-label="add list" translate translate-attr-aria-label="CONTACTMANAGER.ADD_LIST">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD LIST BUTTON --\x3e\n</div>'),e.put("app/main/apps/dashboards/views/custom/custom.html",'<div ng-if="!vm.customDashboard">\n  <p>Custom Dashboard not available...</p>\n</div>\n<div id="dashboard-custom" ng-if="vm.customDashboard" ng-cloak layout-fill>\n  <md-content>\n    <md-toolbar class="md-default md-accent filter-header">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead">{{vm.customDashboard.name}}</span>\n        <div flex></div>\n        <div layout="column">\n          <span class="font-size-10" translate="DASHBOARDS.FILTER_VOICE_QUEUES">Filter Voice Queues</span>\n          <md-select placeholder="Select one or more queues" class="font-size-12 no-margin w-200" md-on-close="vm.onChangeVoiceQueues()" ng-model="vm.voiceQueuesSelected" multiple aria-label="voiceQueues">\n            <md-option ng-value="voiceQueue.id" ng-repeat="voiceQueue in vm.voiceQueues.rows">{{ voiceQueue.name }}</md-option>\n          </md-select>\n        </div>\n        <md-button ng-if="vm.crudPermissions.canEdit" class="md-icon-button" ng-click="vm.goToEdit()" aria-label="goToEdit">\n          <md-tooltip md-direction="top"><span translate="DASHBOARDS.EDIT"></span></md-tooltip>\n          <md-icon md-font-icon="icon-table-edit"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <ms-widget-engine config="vm.customDashboard"></ms-widget-engine>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/agent.general.html",'<div id="agent-general" layout="column">\n  <div layout="row" layout-align="start center" class="md-primary-bg">\n    <md-button class="md-raised no-margin width-50" style="border-radius: 0px" ng-class="{\'md-primary\': !vm.isActiveTab(0)}" ng-click="vm.onClickTab(0)" aria-label="home">\n      <md-tooltip md-direction="bottom" md-delay="500">Home</md-tooltip>\n      <md-icon md-font-icon="icon-home" class="icon"></md-icon>\n    </md-button>\n\n    <ms-tab-scroll style="overflow: hidden;">\n      <div layout="column" ng-repeat="(key, tab) in vm.tabs | orderByDate " ng-click="vm.onClickTab(tab.id)" ng-class="{\'grey-50-bg\': vm.isActiveTab(tab.id)}">\n        <div style="height: 34px" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="{{tab.icon}}" class="icon s16 margin-horizontal-5" ng-class="tab.color + \'-fg\'">\n          </md-icon>\n          <span class="text-truncate font-size-12" ng-class="vm.isActiveTab(tab.id) ? \'black-fg\' : \'grey-300-fg\'">\n            {{tab.title}}\n            <span ng-if="tab.badges" class="badge md-white-fg md-red-bg">{{tab.badges}}</span></span>\n          <md-button class="md-icon-button md-mini no-margin" ng-class="vm.isActiveTab(tab.id) ? \'md-primary\' : \'grey-300-fg\'" aria-label="close" ng-click="vm.closeTab(tab); $event.stopPropagation()">\n            <md-icon md-font-icon="icon-close-circle-outline" class="icon s16"></md-icon>\n          </md-button>\n        </div>\n        <div style="height: 2px" ng-class="vm.isActiveTab(tab.id) ? tab.color + \'-bg\' : \'\'"></div>\n      </div>\n    </ms-tab-scroll>\n  </div>\n  <div layout="row" class="agent-content" ng-if="vm.isActiveTab(0)" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.html\'" ng-controller="AgentGeneralHomeController as vm_home" ng-init="vm_home.init(vm.license, vm.setting)"></div>\n  <div ng-if="!vm.isActiveTab(0)" ng-repeat="(key, tab) in vm.tabs | orderByDate " ng-switch="tab.type">\n    <div ng-switch-when="contact">\n      <div class="agent-content" ms-scroll ng-if="vm.isActiveTab(tab.id)" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/contact/agent.general.contact.html\'" ng-controller="AgentGeneralContactController as vm" ng-init="vm.init(tab,$parent.vm.license)"></div>\n    </div>\n    <div ng-switch-when="popup">\n      <div ng-if="vm.isActiveTab(tab.id)" ms-scroll ng-include="\'app/main/apps/dashboards/views/general/agent/popup/agent.general.popup.html\'" ng-controller="AgentGeneralPopupController as vm" ng-init="vm.init(tab)"></div>\n    </div>\n    <div ng-switch-when="jscripty">\n      <div class="agent-content" ms-scroll ng-if="vm.isActiveTab(tab.id)" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/jscripty/agent.general.jscripty.html\'" ng-controller="AgentGeneralJscriptyController as vm" ng-init="vm.init(tab)"></div>\n    </div>\n    <div ng-switch-when="bot">\n      <div id="interaction-app" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/bot/agent.general.bot.html\'" ng-controller="AgentGeneralBotController as vm" ng-init="vm.init(tab, $parent.vm.setting)"></div>\n    </div>\n    <div ng-switch-when="interaction">\n      <div id="interaction-app" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html\'" ng-controller="AgentGeneralInteractionController as vm" ng-init="vm.init(tab, $parent.vm.setting)">\n      </div>\n    </div>\n    <div ng-switch-when="iframe">\n      <div id="iframe" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/iframe/agent.general.iframe.html\'" ng-controller="AgentGeneralIframeController as vm" ng-init="vm.init(tab, $parent.vm.setting)">\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/bot/agent.general.bot.html",'\x3c!-- CONTENT CARD --\x3e\n<md-content class="content-card" layout="row" layout-fill>\n\n  <div ng-if="!vm.showInteraction" class="start-point" flex layout="column" layout-align="center center">\n    <div class="big-circle md-whiteframe-4dp">\n      <md-icon class="s128 md-accent pink-fg" md-font-icon="fas fa-robot"></md-icon>\n    </div>\n    <span class="app-title" translate="DASHBOARDS.WAITING">Waiting</span>\n    <span class="hide show-gt-md secondary-text" translate="DASHBOARDS.LOADING_INTERACTION">We are loading the\n      interaction...</span>\n  </div>\n\n  <div ng-if="vm.showInteraction" flex layout="row">\n    <md-card flex="100" class="interaction">\n      \x3c!-- TOOLBAR --\x3e\n      <md-toolbar class="interaction-toolbar">\n        <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="fas fa-robot" class="s20 pink-fg"></md-icon>\n          <div class="padding-left-10" layout="column" layout-align="center start" flex>\n            <div class="font-size-14" layout="row" layout-align="start center" layout-fill>\n              <span>#{{vm.tab.data.uniqueid}} - {{vm.tab.title}}</span>\n            </div>\n          </div>\n          <div layout="row" layout-align="end center">\n\n          </div>\n        </div>\n      </md-toolbar>\n      \x3c!-- / TOOLBAR --\x3e\n\n      \x3c!-- CONTENT --\x3e\n      <md-content id="interaction-content" name="{{\'interaction-content-\' + vm.tab.id}}" flex ms-scroll layout-wrap>\n        <div class="interaction-messages">\n          \x3c!-- MESSAGES --\x3e\n          <div layout="row" ng-repeat="message in vm.messages.rows" class="md-padding message-row" ng-class="vm.getMessagesAlignment(message)">\n            <img ng-if="message.direction ===\'in\'" src="assets/images/avatars/customer.png" class="avatar" />\n            <img ng-if="message.direction ===\'out\'" class="avatar" src="assets/images/avatars/robot.png">\n\n            <div class="bubble" ng-switch="message.direction">\n              <div>\n                <div ng-switch-when="in" class="time secondary-text">\n                  {{vm.tab.title}} - {{message.createdAt | date: \'medium\'}}\n                </div>\n                <div ng-switch-when="out" class="time secondary-text" layout="row" layout-align="end center">\n                  <div layout-padding>\n                    System - {{message.createdAt | date: \'medium\'}}\n                  </div>\n                  <div>\n                    <md-icon class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n                  </div>\n                </div>\n              </div>\n              <div ng-bind-html="message.body | embed:vm.emojiOptions" class="message" layout="row" layout-align="end center"></div>\n            </div>\n          </div>\n          \x3c!-- / MESSAGES --\x3e\n        </div>\n      </md-content>\n      \x3c!-- / CONTENT --\x3e\n    </md-card>\n  </div>\n</md-content>\n\x3c!-- / CONTENT CARD --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/contact/agent.general.contact.html",'<md-tabs md-selected="vm.currentTab" md-dynamic-height>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.DETAIL">Detail</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content>\n        <div layout="row" class="pr-10">\n          <div layout="row" flex="75" class="flex-scrollable only-x">\n            <md-card ng-repeat="call in vm.tab.calls track by call.uniqueid" class="call-info-card">\n              <md-progress-linear md-mode="indeterminate" ng-if="vm.checkingCallStatus"></md-progress-linear>\n              <md-card-header layout="row" layout-align="space-between">\n                <span ng-if="call.answertime" class="text-boxed indigo-100-bg ml-0">\n                  <timer start-time="call.answertime"></timer>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.ELAPSED_ANSWERED\' | translate }}\n                  </md-tooltip>\n                </span>\n                <span ng-if="call.disposedAt" class="text-boxed amber-200-bg">\n                  <timer start-time="call.disposedAt"></timer>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.ELAPSED_DISPOSED\' | translate }}\n                  </md-tooltip>\n                </span>\n                <md-button class="md-icon-button no-margin reload-button" ng-click="vm.checkCallStatus(call)" ng-disabled="vm.checkingCallStatus">\n                  <md-icon md-font-icon="icon-reload" class="s22"></md-icon>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.RELOAD\' | translate }}\n                  </md-tooltip>\n                </md-button>\n              </md-card-header>\n              <md-divider></md-divider>\n              <md-card-content>\n                <div layout="column" layout-align="space-between start" class="word-break-all mr-16">\n                  <div layout="row" layout-align="start center">\n                    <md-icon md-font-icon="{{ call.routeId ? \'icon-phone-outgoing\' : \'icon-phone-incoming\'}}" class="s20 mr-5">\n                    </md-icon>\n                    <span class="h2" privacy ng-cloak>{{ call.routeId ? call.destcalleridnum : call.calleridnum }}</span>\n                  </div>\n\n                  <div class="subtitle h4 secondary-text" ng-if="call.calleridname && call.calleridname != \'<unknown>\' && !call.routeId">\n                    <md-icon md-font-icon="icon-account" class="s20"></md-icon>\n                    Name: <span privacy ng-cloak>{{ call.calleridname }}</span>\n                  </div>\n\n                  <div class="text h4 pt-8" ng-if="call.queue">\n                    <md-icon md-font-icon="icon-stackoverflow" class="s20"></md-icon>\n                    Queue: {{call.queue}}\n                  </div>\n                  <div class="text h4 pt-8" ng-if="call.variables.extravar">\n                    <md-icon md-font-icon="icon-minus" class="s20"></md-icon>\n                    Extra: {{call.variables.extravar}}\n                  </div>\n                </div>\n                <div layout="row" layout-align="center end" class="mt-8">\n                  <md-button ng-if="call.disposedAt" type="submit" ng-click="vm.disposeCall($event, call)" class="send-button md-accent md-raised mr-0 mv-0">\n                    {{ \'DASHBOARDS.DISPOSE\' | translate}}\n                  </md-button>\n                </div>\n              </md-card-content>\n            </md-card>\n          </div>\n          <div flex="25" layout="row" layout-md="column" layout-sm="column" layout-align="end center" layout-align-md="center center">\n            <md-button type="submit" ng-click="vm.mergeContact($event)" class="send-button md-raised md-accent ng-scope" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="merge">\n              <md-tooltip md-direction="top"><span translate="DASHBOARDS.MERGE"></span></md-tooltip>\n              <md-icon md-font-icon="icon-source-fork"></md-icon>\n            </md-button>\n            <md-button type="submit" ng-click="vm.duplicateContact($event)" class="send-button md-raised md-accent ng-scope" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="duplicate">\n              <md-tooltip md-direction="top"><span translate="DASHBOARDS.DUPLICATE"></span></md-tooltip>\n              <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n            </md-button>\n            <md-button type="submit" ng-click="vm.addNewContact($event)" class="send-button md-accent md-raised" ng-if="vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="add">\n              {{ \'DASHBOARDS.ADD\'| translate }}\n            </md-button>\n            <md-button type="submit" ng-click="vm.saveContact($event)" class="send-button md-accent md-raised" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="save">\n              {{ \'DASHBOARDS.SAVE\' | translate }}\n            </md-button>\n          </div>\n        </div>\n        <div layout="row">\n          <div layout="column" flex="75">\n            <md-card layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.PERSONAL_INFO">\n                PERSONAL_INFO</div>\n              <div class="subtitle secondary-text">\n                <span translate="CONTACTMANAGER.CREATED_AT"></span>\n                <span>{{vm.contact.createdAt | date:\'medium\'}}</span>\n              </div>\n\n              <form name="vm.detailForm" novalidate>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.FIRSTNAME">First Name</label>\n                      <md-icon md-font-icon="icon-account" class="firstname"></md-icon>\n                      <input type="text" name="firstName" ng-model="vm.contact.firstName" class="text-truncate" required privacy ng-cloak>\n                      <div ng-messages="vm.detailForm.firstName.$error" ng-show="vm.detailForm.firstName.$touched" role="alert">\n                        <div ng-message="required">\n                          <span translate="DASHBOARDS.ERRORS.FIRSTNAME_REQUIRED">First name\n                            field is required</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.jscripty" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="JSCRIPTY PROJECTS" ng-click="$mdOpenMenu($event); vm.getJscriptyProjects();" aria-label="jscripty">\n                          <md-icon md-font-icon="icon-script"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingJscriptyProjects">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingJscriptyProjects && vm.jscriptyProjects.count > 0" ng-repeat="project in vm.jscriptyProjects.rows">\n                            <md-button ng-click="vm.addJscriptyTab(project, $event)">\n                              <md-icon md-font-icon="icon-script"></md-icon>\n                              {{project.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingJscriptyProjects && (!vm.jscriptyProjects || vm.jscriptyProjects.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_JSCRIPTY_PROJECTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-script"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.LASTNAME">Last Name</label>\n                    <input type="text" name="lastName" ng-model="vm.contact.lastName" class="text-truncate" privacy ng-cloak>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.PHONE">Phone</label>\n                      <md-icon md-font-icon="icon-phone"></md-icon>\n                      <input type="text" name="phone" ng-model="vm.contact.phone" class="text-truncate" privacy ng-cloak>\n                      <div class="hint"><span ng-show="!vm.user.phoneBarRemoteControl || !vm.contact.phone" translate="CONTACTMANAGER.HELP.PHONEBAR_API"></span></div>\n                    </md-input-container>\n                    <div>\n                      \x3c!-- click to call directive --\x3e\n                      <ms-click-to-call target="vm.contact.phone" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                      \x3c!--  / click to call directive --\x3e\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.MOBILE">Mobile</label>\n                      <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n                      <input type="text" name="mobile" ng-model="vm.contact.mobile" class="text-truncate" privacy ng-cloak>\n                      <div class="hint"><span ng-show="!vm.user.phoneBarRemoteControl || !vm.contact.mobile" translate="CONTACTMANAGER.HELP.PHONEBAR_API"></span></div>\n                    </md-input-container>\n                    <div>\n                      \x3c!-- click to call directive --\x3e\n                      <ms-click-to-call target="vm.contact.mobile" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                      \x3c!--  / click to call directive --\x3e\n                    </div>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.messaging || !vm.hasPermission(107) || !vm.contact.mobile" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW SMS" ng-click="$mdOpenMenu($event); vm.getAccounts(\'sms\')" aria-label="sms">\n                          <md-icon md-font-icon="icon-message-text"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.smsAccounts.count > 0" ng-repeat="account in vm.smsAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Sms\', account, vm.contact.mobile)">\n                              <md-icon md-font-icon="icon-message-text"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.smsAccounts || vm.smsAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_SMS_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-message-text"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.whatsapp || !vm.hasPermission(114) || !vm.contact.mobile" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW WHATSAPP" ng-click="$mdOpenMenu($event); vm.getAccounts(\'whatsapp\')" aria-label="whatsapp">\n                          <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.whatsappAccounts.count > 0" ng-repeat="account in vm.whatsappAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Whatsapp\', account, vm.contact.mobile)">\n                              <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.whatsappAccounts || vm.whatsappAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_WHATSAPP_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.EMAIL">Email</label>\n                      <md-icon md-font-icon="icon-email" class="email"></md-icon>\n                      <input type="email" name="email" ng-model="vm.contact.email" class="text-truncate" privacy ng-cloak>\n                      <div ng-messages="vm.detailForm.firstName.$error" ng-show="vm.detailForm.firstName.$touched" role="alert">\n                        <div ng-message="email">\n                          <span translate="DASHBOARDS.ERRORS.EMAIL_MUST_VALID">Email must be a\n                            valid e-mail address</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.mail || !vm.hasPermission(106) || !vm.contact.email" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW EMAIL" ng-click="$mdOpenMenu($event); vm.getAccounts(\'mail\')" aria-label="email">\n                          <md-icon md-font-icon="icon-email"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.mailAccounts.count > 0" ng-repeat="account in vm.mailAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Mail\', account, vm.contact.email)">\n                              <md-icon md-font-icon="icon-email"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.mailAccounts || vm.mailAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_MAIL_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-email"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.FAX">Fax</label>\n                      <md-icon md-font-icon="icon-deskphone"></md-icon>\n                      <input type="text" name="fax" ng-model="vm.contact.fax" privacy ng-cloak>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.fax || !vm.hasPermission(109) || !vm.contact.fax" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW FAX" ng-click="$mdOpenMenu($event); vm.getAccounts(\'fax\')" aria-label="fax">\n                          <md-icon md-font-icon="icon-deskphone"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.faxAccounts.count > 0" ng-repeat="account in vm.faxAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Fax\', account, vm.contact.fax)">\n                              <md-icon md-font-icon="icon-deskphone"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.faxAccounts || vm.faxAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_FAX_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-deskphone"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.DATE_OF_BIRTH">Date of Birth</label>\n                    <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth"></mdp-date-picker>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.COMPANY">Company</label>\n                    <md-icon md-font-icon="icon-domain" class="email"></md-icon>\n                    <md-select name="company" ng-model="vm.contact.CompanyId">\n                      <md-option ng-value="company.id" ng-repeat="company in vm.tab.companies.rows">{{company.name}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="DASHBOARDS.NONE">None</em>\n                      </md-option>\n                    </md-select>\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.TAG">TAG</label>\n                    <md-icon md-font-icon="icon-tag"></md-icon>\n                    <md-select ng-model="vm.tab.Tags" multiple>\n                      <md-option ng-value="tag.id" ng-repeat="tag in vm.tab.tags.rows">\n                        {{tag.name}}</md-option>\n                    </md-select>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.COUNTRY">Country</label>\n                    <md-icon md-font-icon="icon-home" class="country"></md-icon>\n                    <input type="text" name="country" ng-model="vm.contact.country" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.CITY">City</label>\n                    <input type="text" name="city" ng-model="vm.contact.city">\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.STREET">Street</label>\n                    <input type="text" name="street" ng-model="vm.contact.street">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.POSTALCODE">Postal Code</label>\n                    <input type="text" name="postalCode" ng-model="vm.contact.postalCode">\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate translate-attr-placeholder="DASHBOARDS.NOTES">Notes</label>\n                    <md-icon md-font-icon="icon-note"></md-icon>\n                    <textarea ng-model="vm.contact.description" type="text" max-rows="4"></textarea>\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n            <md-card layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.SOCIAL">Social</div>\n              <form name="vm.socialForm" novalidate>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Facebook</label>\n                    <md-icon md-font-icon="icon-facebook" class="facebook"></md-icon>\n                    <input type="text" name="facebook" ng-model="vm.contact.facebook" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Twitter</label>\n                    <md-icon md-font-icon="icon-twitter" class="twitter"></md-icon>\n                    <input type="text" name="twitter" ng-model="vm.contact.twitter" class="text-truncate">\n                  </md-input-container>\n                </div>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Line</label>\n                    <md-icon md-font-icon="fab fa-line"></md-icon>\n                    <input type="text" name="line" ng-model="vm.contact.line" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Viber</label>\n                    <md-icon md-font-icon="fab fa-viber"></md-icon>\n                    <input type="text" name="viber" ng-model="vm.contact.viber" class="text-truncate">\n                  </md-input-container>\n                </div>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>WeChat</label>\n                    <md-icon md-font-icon="fab fa-weixin"></md-icon>\n                    <input type="text" name="wechat" ng-model="vm.contact.wechat" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Telegram</label>\n                    <md-icon md-font-icon="icon-telegram"></md-icon>\n                    <input type="text" name="telegram" ng-model="vm.contact.telegram" class="text-truncate">\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n          </div>\n          <div flex="25" layout="column" layout-padding>\n            <md-card flex="100" layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.CUSTOM_FIELDS">CUSTOM\n                FIELDS</div>\n              <form name="vm.customFieldsForm" novalidate>\n\n                \x3c!-- START INPUT LIST --\x3e\n                <md-input-container class="md-block">\n                  <label translate translate-attr-placeholder="DASHBOARDS.LIST">List</label>\n                  <md-select name="list" ng-disabled="!vm.newContact" ng-model="vm.contact.ListId" ng-change="vm.getCustomFields(vm.contact.ListId)" required>\n                    <md-optgroup label="Lists">\n                      <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">#{{list.id}} - {{list.name}}\n                      </md-option>\n                    </md-optgroup>\n                  </md-select>\n                </md-input-container>\n                \x3c!-- END INPUT LIST --\x3e\n\n                <div ng-repeat="customField in vm.tab.customFields.rows" ng-switch="customField.type">\n                  <md-input-container class="md-block" ng-switch-when="datetime">\n                    <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                    <div ng-init="vm.contact[\'cf_\' + customField.id] = vm.getDateFromString(vm.contact[\'cf_\' + customField.id])">\n                      <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-date-picker>\n                      <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-time-picker>\n                    </div>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="select">\n                    <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                    <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n                      <md-option ng-repeat="value in customField.values" ng-value="value.value">\n                        {{value.value}}</md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em>\n                      </md-option>\n                    </md-select>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="switch">\n                    <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n                      {{customField.alias}}<span ng-if="customField.required">*</span>\n                    </md-switch>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-default>\n                    <div layout-gt-sm="row" class="layout-gt-sm-row"></div>\n                    <div layout="row" flex>\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                        <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n                      </md-input-container>\n                      <ms-click-to-call ng-if="customField.clickToAction && customField.actionType === \'voice\'" target="vm.contact[\'cf_\' + customField.id]" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                    </div>\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n          </div>\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CUSTOMER_JOURNEY">Customer Journey</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding" id="journey-content">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n</md-tabs>'),e.put("app/main/apps/dashboards/views/general/agent/contact/dispose/dialog.html",'<md-dialog class="agent-dialog" aria-label="agent dispose">\n  <form name="disposition" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" ng-if="!vm.call.mandatoryDisposition">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div ng-if="!vm.isReschedule">\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n          <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\')" required>\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n          <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n            <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n            <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition" ng-change="vm.onDispositionChange(\'third\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.NOTE">Note</label>\n          <textarea ng-model="vm.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n        </md-input-container>\n        <md-input-container class="md-block" ng-if="vm.availableCalls === 1">\n          <md-switch ng-model="vm.autoClose" aria-label="Auto Close">\n            <span translate="DASHBOARDS.AUTOCLOSE">Automatically close contact tab after disposal</span>\n          </md-switch>\n        </md-input-container>\n      </div>\n      <div ng-if="vm.isReschedule">\n        <div layout="row">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="date" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" mdp-min-date="vm.hopper.minDate" ng-model="vm.hopper.dateTime">\n              <div ng-messages="disposition.date.$error" ng-show="disposition.date.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="DASHBOARDS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="DASHBOARDS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="time" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.dateTime">\n              <div ng-messages="disposition.time.$error" ng-show="disposition.time.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="DASHBOARDS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="DASHBOARDS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </div>\n        <md-input-container ng-if="(!vm.dialerCall || vm.user.selectRecallMeCampaign) && vm.recallme" class="md-block">\n          <label translate="DASHBOARDS.CAMPAIGN">Campaign</label>\n          <md-select name="queueCampaign" ng-model="vm.queueCampaign" required>\n            <md-option ng-value="queueCampaign" ng-repeat="queueCampaign in vm.queueCampaigns.rows">\n              <md-icon md-font-icon="icon-checkbox-blank-circle" ng-class="{\'green-fg\': queueCampaign.dialActive}" aria-label="Status">\n              </md-icon>\n              {{ queueCampaign.name }}\n            </md-option>\n          </md-select>\n          <div ng-messages="disposition.queueCampaign.$error" ng-show="disposition.queueCampaign.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="DASHBOARDS.ERRORS.CAMPAIGN_REQUIRED">Campaign field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-if="!vm.isReschedule" layout="row">\n      <md-button ng-disabled="disposition.$invalid || disposition.$pristine" class="send-button md-raised md-accent" ng-click="vm.saveDisposition()" ms-dialog-spinner>\n        {{(vm.selectedDisposition.name ? \'DASHBOARDS.DISPOSE\' : \'DASHBOARDS.SAVE\') | translate}}\n      </md-button>\n      <md-button class="send-button md-raised md-primary" translate="DASHBOARDS.RESCHEDULE" ng-click="vm.saveDisposition(\'reschedule\')">\n        Reschedule\n      </md-button>\n      <md-button class="send-button md-accent md-raised" translate="DASHBOARDS.RECALLME" ng-click="vm.saveDisposition(\'recallme\')">\n        Recall Me\n      </md-button>\n      <span flex></span>\n      <md-button ng-if="vm.hasBlackLists" class="md-raised md-warn" translate="DASHBOARDS.BLACKLIST" ng-click="vm.saveDisposition(\'blacklist\')">\n        Blacklist\n      </md-button>\n    </md-dialog-actions>\n    <md-dialog-actions ng-if="vm.isReschedule" layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveReschedule()" class="send-button md-accent md-raised" ng-disabled="disposition.$invalid || disposition.$pristine || vm.disable" aria-label="SAVE" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/contact/reschedule/dialog.html",'<md-dialog class="agent-dialog" aria-label="New Agent">\n  <form name="dateTime" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex class="md-block">\n          <mdp-date-picker mdp-open-on-click required name="date" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" mdp-min-date="vm.hopper.minDate" ng-model="vm.hopper.dateTime">\n            <div ng-messages="dateTime.date.$error" ng-show="dateTime.date.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="DASHBOARDS.ERRORS.DATE_REQUIRED">Date is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="DASHBOARDS.ERRORS.DATE_INVALID">Date is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n\n        <div flex class="md-block">\n          <mdp-time-picker mdp-open-on-click required name="time" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.dateTime">\n            <div ng-messages="dateTime.time.$error" ng-show="dateTime.time.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="DASHBOARDS.ERRORS.TIME_REQUIRED">Time is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="DASHBOARDS.ERRORS.TIME_INVALID">Time is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-disabled="vm.disable" ng-click="vm.saveDialog()" class="send-button md-accent md-raised" ng-disabled="dateTime.$invalid || dateTime.$pristine" aria-label="SAVE" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/contact/selection/dialog.html",'<md-dialog ng-init="vm.onInit()" class="contact-trigger-dialog" aria-label="Select contact" ng-cloak>\n  <md-toolbar class="red-bg">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ \'DASHBOARDS.SELECT_CONTACT\' | translate }}</span>\n    </div>\n  </md-toolbar>\n  <md-dialog-content class="h-400 pv-16" ms-scroll>\n    <div layout="row" class="p-10">\n      <span class="font-size-16">{{ \'DASHBOARDS.MULTIPLE_CONTACTS_FOUND\' | translate }}<strong>&nbsp;{{ vm.callNumber }}</strong>.</span>\n      <span class="font-size-16">&nbsp;{{ \'DASHBOARDS.WHICH_ONE_TO_USE\' | translate }}</span>\n    </div>\n    <md-grid-list md-cols-xs="1" md-cols="2" md-row-height="fit" ng-class="vm.paginatedContacts[vm.page - 1].length > 2 ? \'two-rows-layout\' : \'one-row-layout\'" flex>\n      <md-grid-tile ng-repeat="contact in vm.paginatedContacts[vm.page - 1]" md-rowspan="1">\n        <md-card layout="column" class="contact-info" no-padding no-margin ng-click="vm.selectedContact = contact;" ng-class="{ \'light-blue-50-bg\' : vm.selectedContact && vm.selectedContact.id === contact.id }" flex>\n          <md-card-title class="pt-16">\n            <md-card-title-text layout-align="center start">\n              <span class="font-size-16 text-bold">#{{ contact.id }} -\n                <span privacy ng-cloak>{{ contact.firstName }} {{ contact.lastName }}</span>\n              </span>\n              <em class="font-size-12">{{ \'DASHBOARDS.LAST_UPDATED\' | translate }}: {{ contact.updatedAt }}</em>\n              <span class="font-size-12">{{ \'DASHBOARDS.LIST\' | translate }}: {{ vm.lists[contact.ListId] }}</span>\n            </md-card-title-text>\n            <md-button class="md-icon-button no-margin" aria-label="Selected">\n              <md-icon md-font-icon="{{ vm.selectedContact && vm.selectedContact.id === contact.id ? \'icon-checkbox-marked-circle\' : \'icon-checkbox-blank-circle-outline\' }}" ng-class="{ \'green-fg\': vm.selectedContact && vm.selectedContact.id === contact.id }"></md-icon>\n            </md-button>\n          </md-card-title>\n          <md-divider></md-divider>\n          <md-card-content layout="row" layout-align="center start" class="p-10">\n            <span class="font-size-16">{{ \'DASHBOARDS.MATCHING_FIELD\' | translate }}:\n              <strong privacy ng-cloak>{{ contact.matchingField }}</strong>\n            </span>\n          </md-card-content>\n        </md-card>\n      </md-grid-tile>\n    </md-grid-list>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <div ng-if="vm.paginatedContacts.length > 1" layout="row" layout-align="center center" flex>\n      <md-button ng-click="vm.page = vm.page - 1;" class="md-icon-button no-margin" ng-class="{ \'hidden\': vm.page <= 1 }" aria-label="Previous page">\n        <md-icon md-font-icon="icon-chevron-double-left"></md-icon>\n      </md-button>\n      <span>{{ \'DASHBOARDS.PAGE\' | translate }} {{ vm.page }} {{ \'DASHBOARDS.OF\' | translate }}\n        {{ vm.paginatedContacts.length }}</span>\n      <md-button ng-click="vm.page = vm.page + 1;" class="md-icon-button no-margin" ng-class="{ \'hidden\': !vm.paginatedContacts[vm.page] }" aria-label="Next page">\n        <md-icon md-font-icon="icon-chevron-double-right"></md-icon>\n      </md-button>\n    </div>\n    <md-button ng-click="vm.selectContact()" class="select-button md-accent md-raised" ng-disabled="!vm.selectedContact" aria-label="Select" translate="DASHBOARDS.SELECT" translate-attr-aria-label="DASHBOARDS.SELECT">\n      SELECT\n    </md-button>\n  </md-dialog-actions>\n</md-dialog>vc'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/agent.general.abandoned.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-selected="vm.selectedTab" md-dynamic-height md-border-bottom>\n      <md-tab ng-if="vm_home.hasPermission(110)" label="{{\'DASHBOARDS.VOICE\' | translate}}">\n        <md-content ng-if="vm.selectedTab === 0" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/voice/agent.general.abandoned.voice.html\'" ng-controller="AgentHomeAbandonedVoiceController as vm_voice">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.dialer" label="{{\'DASHBOARDS.MOTION_BULL\' | translate}}">\n        <md-content ng-if="vm.selectedTab === 1" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/bull/agent.general.abandoned.bull.html\'" ng-controller="AgentHomeAbandonedBullController as vm_bull">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/bull/agent.general.abandoned.bull.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header blue-bg" ng-class="{\'h-128\' : vm_bull.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n      <ms-search-bar on-search="vm_bull.getAbandonedCalls()" query="vm_bull.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm_bull.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm_bull.quickFilters" query="vm_bull.query" search="vm_bull.getAbandonedCalls()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm_bull.refresh && vm_bull.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip ng-if="vm_bull.showTooltip" md-visible="vm_bull.showTooltip">\n          {{\'DASHBOARDS.CLICKRELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm_bull.promise">\n      <thead md-head md-order="vm_bull.query.sort" md-on-reorder="vm_bull.getAbandonedCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n          <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n          <th md-column md-order-by="queuecallerexitAt">{{\'DASHBOARDS.QUEUECALLEREXITAT\' | translate}}</th>\n          <th md-column md-order-by="queuecallerexitreason">{{\'DASHBOARDS.QUEUECALLEREXITREASON\' | translate}}\n          </th>\n          <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="secondDisposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="thirdDisposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.RESERVED\' | translate}}</th>\n          <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm_bull.abandonedCalls.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="abandonedCall in vm_bull.abandonedCalls.rows">\n          <td md-cell class="id">{{abandonedCall.id}}</td>\n          <td md-cell class="firstName" privacy ng-cloak>{{abandonedCall.calleridname}}</td>\n          <td md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="abandonedCall.calleridnum" license="vm_home.license" disabled="abandonedCall.lastAssignedTo !== vm_bull.currentUser.name">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="list">{{vm_bull.queuesMap[abandonedCall.queue]}}</td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerabandonAt ? (abandonedCall.queuecallerabandonAt | formatdate) : (abandonedCall.queuecallerexitAt | formatdate) }}\n          </td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerexitAt ? (abandonedCall.queuecallerexitAt | formatdate) : undefined }}\n          </td>\n          <td md-cell class="list">{{abandonedCall.queuecallerexitreason}}</td>\n          <td md-cell class="list">{{ abandonedCall.disposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.secondDisposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.thirdDisposition }}</td>\n          <td md-cell class="actions">\n            <md-switch no-margin ng-if="abandonedCall.lastAssignedTo === vm_bull.currentUser.name || !abandonedCall.lastAssignedTo" ng-disabled="vm_bull.disable[abandonedCall.id]" ng-model="abandonedCall.assigned" aria-label="reserved" ng-change="vm_bull.reserved(abandonedCall)">\n            </md-switch>\n          </td>\n          <td md-cell class="list">{{abandonedCall.lastAssignedTo}}</td>\n          <td md-cell class="actions">\n            <md-menu ng-if="abandonedCall.lastAssignedTo === vm_bull.currentUser.name">\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="1">\n                <md-menu-item>\n                  <md-button ng-click="vm_bull.dispose(abandonedCall)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm_bull.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_bull.query.page" md-total="{{vm_bull.abandonedCalls.count}}" md-on-paginate="vm_bull.getAbandonedCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",'<md-dialog class="agent-dialog" aria-label="agent dispose">\n  <form name="disposition" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n          <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\')" required>\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n          <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n            <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n            <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition" ng-change="vm.onDispositionChange(\'third\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.NOTE">Note</label>\n          <textarea ng-model="vm.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n        </md-input-container>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button ng-disabled="disposition.$invalid || disposition.$pristine" class="send-button md-raised md-accent" ng-click="vm.saveDisposition()">\n'+"          {{(vm.selectedDisposition.name ? 'DASHBOARDS.DISPOSE' : 'DASHBOARDS.SAVE') | translate}}\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>"),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/voice/agent.general.abandoned.voice.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header blue-bg" ng-class="{\'h-128\' : vm_voice.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n      <ms-search-bar on-search="vm_voice.getAbandonedCalls()" query="vm_voice.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm_voice.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm_voice.quickFilters" query="vm_voice.query" search="vm_voice.getAbandonedCalls()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm_voice.refresh && vm_voice.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip ng-if="vm_voice.showTooltip" md-visible="vm_voice.showTooltip">\n          {{\'DASHBOARDS.CLICKRELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm_voice.promise">\n      <thead md-head md-order="vm_voice.query.sort" md-on-reorder="vm_voice.getAbandonedCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n          <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n          <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="secondDisposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="thirdDisposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.RESERVED\' | translate}}</th>\n          <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm_voice.abandonedCalls.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="abandonedCall in vm_voice.abandonedCalls.rows">\n          <td md-cell class="id">{{abandonedCall.id}}</td>\n          <td md-cell class="firstName" privacy ng-cloak>{{abandonedCall.calleridname}}</td>\n          <td md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="abandonedCall.calleridnum" license="vm_home.license" disabled="abandonedCall.lastAssignedTo !== vm_voice.currentUser.name">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="list">{{vm_voice.queuesMap[abandonedCall.queue]}}</td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerabandonAt ? (abandonedCall.queuecallerabandonAt | formatdate) : (abandonedCall.queuecallerexitAt | formatdate) }}\n          </td>\n          <td md-cell class="list">{{ abandonedCall.disposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.secondDisposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.thirdDisposition }}</td>\n          <td md-cell class="actions">\n            <md-switch no-margin ng-if="abandonedCall.lastAssignedTo === vm_voice.currentUser.name || !abandonedCall.lastAssignedTo" ng-disabled="vm_voice.disable[abandonedCall.id]" ng-model="abandonedCall.assigned" aria-label="reserved" ng-change="vm_voice.reserved(abandonedCall)">\n            </md-switch>\n          </td>\n          <td md-cell class="list">{{abandonedCall.lastAssignedTo}}</td>\n          <td md-cell class="actions">\n            <md-menu ng-if="abandonedCall.lastAssignedTo === vm_voice.currentUser.name">\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="1">\n                <md-menu-item>\n                  <md-button ng-click="vm_voice.dispose(abandonedCall)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm_voice.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_voice.query.page" md-total="{{vm_voice.abandonedCalls.count}}" md-on-paginate="vm_voice.getAbandonedCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/agent.general.home.html",'<div layout="column" layout-align="start center" class="md-primary-bg width-50" ms-scroll>\n  <div ng-repeat="node in vm_home.navigation">\n    <div ng-repeat="home in node.children">\n      <md-button ng-repeat="button in home.children  | orderBy:\'weight\'" ng-if="!button.hidden()" class="md-raised width-50 height-50 no-margin" style="border-radius: 0px" aria-label="{{button.state}}" ng-click="vm_home.changeSidebarTab(button)" ng-class="{\'md-primary\': vm_home.sidebar != button.state}">\n        <md-tooltip md-direction="right" md-delay="500"><span translate="{{button.translate}}"></span>\n        </md-tooltip>\n        <md-icon md-font-icon="{{button.icon}}" ng-class="button.iconClass"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>\n<div layout="column" flex>\n  <div layout="column" flex>\n    <div ng-switch="vm_home.sidebar" style="overflow-y: auto" flex>\n      <div ng-switch-when="agentPresence">\n        <div ng-if="vm_home.hasPermission(115)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/agent.general.presence.html\'" ng-controller="AgentHomePresenceController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(115)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="contacts">\n        <div ng-if="vm_home.hasPermission(102) && vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/contacts/agent.general.contacts.html\'" ng-controller="AgentHomeContactsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(102) || !vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="mycontacts">\n        <div ng-if="vm_home.hasPermission(103) && vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/mycontacts/agent.general.mycontacts.html\'" ng-controller="AgentHomeMyContactsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(103) || !vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="scheduled">\n        <div ng-if="vm_home.hasPermission(113) && vm_home.license.dialer" ng-include="\'app/main/apps/dashboards/views/general/agent/home/scheduled/agent.general.scheduled.html\'" ng-controller="AgentHomeScheduledCallsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(113) || !vm_home.license.dialer" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="voice">\n        <div ng-if="vm_home.hasPermission(110) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/voice/agent.general.voice.html\'" ng-controller="AgentHomeVoiceController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(110) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="abandoned">\n        <div ng-if="vm_home.hasPermission(111) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/agent.general.abandoned.html\'" ng-controller="AgentHomeAbandonedController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(111) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="recordings">\n        <div ng-if="vm_home.hasPermission(104) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/recordings/agent.general.recordings.html\'" ng-controller="AgentHomeRecordingsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(104) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="chat">\n        <div ng-if="vm_home.hasPermission(105) && vm_home.license.chat" ng-include="\'app/main/apps/dashboards/views/general/agent/home/chat/agent.general.chat.html\'" ng-controller="AgentHomeChatController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(105) || !vm_home.license.chat" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="mail">\n        <div ng-if="vm_home.hasPermission(106) && vm_home.license.mail" ng-include="\'app/main/apps/dashboards/views/general/agent/home/mail/agent.general.mail.html\'" ng-controller="AgentHomeMailController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(106) || !vm_home.license.mail" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="sms">\n        <div ng-if="vm_home.hasPermission(107) && vm_home.license.messaging" ng-include="\'app/main/apps/dashboards/views/general/agent/home/sms/agent.general.sms.html\'" ng-controller="AgentHomeSmsController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(107) || !vm_home.license.messaging" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="openchannel">\n        <div ng-if="vm_home.hasPermission(108) && vm_home.license.openchannel" ng-include="\'app/main/apps/dashboards/views/general/agent/home/openchannel/agent.general.openchannel.html\'" ng-controller="AgentHomeOpenchannelController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(108) || !vm_home.license.openchannel" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="fax">\n        <div ng-if="vm_home.hasPermission(109) && vm_home.license.fax" ng-include="\'app/main/apps/dashboards/views/general/agent/home/fax/agent.general.fax.html\'" ng-controller="AgentHomeFaxController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(109) || !vm_home.license.fax" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="whatsapp">\n        <div ng-if="vm_home.hasPermission(114) && vm_home.license.whatsapp" ng-include="\'app/main/apps/dashboards/views/general/agent/home/whatsapp/agent.general.whatsapp.html\'" ng-controller="AgentHomeWhatsappController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(114) || !vm_home.license.whatsapp" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="plugin" layout-fill>\n        <div ng-if="vm_home.hasPermission(vm_home.pluginId)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/plugins/agent.general.plugins.html\'" ng-controller="AgentHomePluginsController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting, vm_home.plugin)" layout-fill></div>\n        <div ng-if="!vm_home.hasPermission(vm_home.pluginId)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-default>\n        <div ng-if="vm_home.hasPermission(101)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/agent.general.dashboard.html\'" ng-controller=" AgentHomeDashboardController  as vm"></div>\n        <div ng-if="!vm_home.hasPermission(101)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n    </div>\n  </div>\n  <div ng-if="(vm_home.draftManager.drafts | json) != \'{}\'" layout="column" class="draft-manager-bar">\n    <ms-tab-scroll>\n      <div layout="column" ng-repeat="(key, draft) in vm_home.draftManager.drafts" class="grey-50-bg" ng-click="vm_home.draftManager.open(draft.id)">\n        <div class="draft-manager-tab" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="icon-pencil" class="icon s16 margin-horizontal-5 black-fg"></md-icon>\n          <span class="text-truncate font-size-12 black-fg">{{draft.title}}</span>\n          <md-button class="md-icon-button md-mini no-margin md-primary" aria-label="close" ng-click="vm_home.draftManager.remove(draft.id)">\n            <md-icon md-font-icon="icon-close-circle-outline" class="icon s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </ms-tab-scroll>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html",'<md-content layout="row" layout-align="space-around center" flex layout-padding layout-wrap>\n  <div layout="column" layout-align="space-around center" flex="50">\n    <span class="font-size-40 text-center">{{ \'DASHBOARDS.WELCOME_TO_MOTION\' | translate }}!</span>\n    <span class="font-size-30 text-center" translate="DASHBOARDS.WELCOME_MESSAGE">Use the left sidebar to navigate through available sections.</span>\n  </div>\n\n  <div layout="column" flex="50">\n    <img src="assets/images/avatars/permissions.png" alt="permissions">\n  </div>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/home/chat/agent.general.chat.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.CHAT_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getChatInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getChatInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getChatInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChatInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.WEBSITE\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.chatInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.chatInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="chatAccount">\n            {{ vm.getChatWebsiteLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showChatInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Chat\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadChatInteraction($event, interaction, true)" translate="CHAT.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadChatInteraction($event, interaction)" translate="CHAT.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chatInteractions.count}}" md-on-paginate="vm.getChatInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/contacts/agent.general.contacts.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.CONTACTS">Contacts</span>\n      <ms-search-bar on-search="vm.getContacts()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getContacts()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" ng-click="vm.refreshContacts($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button ng-if="vm.lists.rows && vm.lists.rows.length" class="md-icon-button create-new" ng-click="vm.openContact()" aria-label="Add contact" translate translate-attr-label="DASHBOARDS.ADD_CONTACT">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="firstName">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="mobile">{{\'DASHBOARDS.MOBILE\' | translate}}</th>\n          <th md-column md-order-by="fax">{{\'DASHBOARDS.FAX\' | translate}}</th>\n          <th md-column md-order-by="email">{{\'DASHBOARDS.EMAIL\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.CREATEDAT\' | translate}}</th>\n          <th md-column md-order-by="ListId">{{\'DASHBOARDS.LIST\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.contacts.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="contact in vm.contacts.rows">\n          <td ng-click="vm.openContact(contact.id)" md-cell class="id">{{contact.id}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="firstName" privacy ng-cloak>{{contact.firstName}}\n            {{contact.lastName}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.phone" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="mobile">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.mobile" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="fax" privacy ng-cloak>{{contact.fax}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="email" privacy ng-cloak>{{contact.email}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="createdAt">{{contact.createdAt | formatdate}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="list">{{vm.listsMap[contact.ListId].name}}\n          <td md-cell class="tag">\n            <div ng-if="contact.Tags.length">\n              <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                <span class="text-truncate">{{contact.Tags[0].name}}</span>\n              </div>\n              <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag"></md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.openContact(contact.id)" translate="DASHBOARDS.EDIT">\n                    Edit Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.mergeContact($event, contact)" translate="DASHBOARDS.MERGE">\n                    Merge Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.duplicateContact($event, contact)" translate="DASHBOARDS.DUPLICATE">\n                    Duplicate Contact\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/agent.general.dashboard.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-dynamic-height md-border-bottom>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.voice" label="{{\'DASHBOARDS.VOICE\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/voice/agent.general.dashboard.voice.html\'" ng-controller="AgentHomeDashboardVoiceController as vm_voice" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.dialer" label="{{\'DASHBOARDS.MOTION_BULL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/bull/agent.general.dashboard.bull.html\'" ng-controller="AgentHomeDashboardBullController as vm_bull" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(105) && vm_home.license.chat" label="{{\'DASHBOARDS.CHAT\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/chat/agent.general.dashboard.chat.html\'" ng-controller="AgentHomeDashboardMultiChannelChatController as vm_chat" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(106) && vm_home.license.mail" label="{{\'DASHBOARDS.MAIL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/mail/agent.general.dashboard.mail.html\'" ng-controller="AgentHomeDashboardMultiChannelMailController as vm_mail" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(107) && vm_home.license.messaging" label="{{\'DASHBOARDS.SMS\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/sms/agent.general.dashboard.sms.html\'" ng-controller="AgentHomeDashboardMultiChannelSmsController as vm_sms" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(108) && vm_home.license.openchannel" label="{{\'DASHBOARDS.OPENCHANNEL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/openchannel/agent.general.dashboard.openchannel.html\'" ng-controller="AgentHomeDashboardMultiChannelOpenchannelController as vm_openchannel" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(109) && vm_home.license.fax" label="{{\'DASHBOARDS.FAX\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/fax/agent.general.dashboard.fax.html\'" ng-controller="AgentHomeDashboardMultiChannelFaxController as vm_fax" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(114) && vm_home.license.whatsapp" label="{{\'DASHBOARDS.WHATSAPP\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/whatsapp/agent.general.dashboard.whatsapp.html\'" ng-controller="AgentHomeDashboardMultiChannelWhatsappController as vm_whatsapp" class="md-padding">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/bull/agent.general.dashboard.bull.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header red-900-bg">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_bull.promise">\n        <thead md-head md-order="vm_bull.query.sort" md-on-reorder="vm_bull.getVoiceQueues">\n          <tr md-row>\n            <th md-column>{{ \'VOICE.NAME\' | translate }}</th>\n            <th md-column>{{ \'VOICE.TYPE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n            <th ng-if="voiceQueue.type === \'outbound\'" md-column>{{ \'VOICE.ACTIVE\' | translate }}</th>\n            \x3c!-- <th md-column md-order-by="active">{{ \'VOICE.ACTIVE\' | translate }}</th> --\x3e\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_bull.getSize(vm_bull.voiceQueues)">\n            <td md-cell colspan="4">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, voiceQueue) in vm_bull.voiceQueues">\n            <td md-cell class="name">{{voiceQueue.name}}</td>\n            <td ng-if="voiceQueue.type === \'outbound\'" md-cell class="waiting">{{voiceQueue.dialMethod}}</td>\n            <td md-cell class="waiting">{{voiceQueue.waiting || 0}}</td>\n            <td md-cell ng-if="voiceQueue.type === \'outbound\'" class="dialActive ">\n              <md-icon md-colors="{color: {{voiceQueue.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{voiceQueue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_bull.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_bull.query.page" md-total="{{vm_bull.voiceQueuesTotal}}" md-on-paginate="vm_bull.getVoiceQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header red-900-bg">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n            <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_bull.getSize(vm_bull.rpcVoiceQueuesChannels)">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, channel) in vm_bull.rpcVoiceQueuesChannels | limitObjectFromTo: vm_bull.queryChannels.limit:(vm_bull.queryChannels.page - 1) * vm_bull.queryChannels.limit">\n            <td md-cell>{{channel.exten}}</td>\n            <td md-cell>{{channel.queue}}</td>\n            <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_bull.queryChannels.limit" md-page="vm_bull.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_bull.getSize(vm_bull.rpcVoiceQueuesChannels)}}" md-page-select>\n    </md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/chat/agent.general.dashboard.chat.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_chat.getColorByChannel(\'chat\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_chat.promise">\n        <thead md-head md-order="vm_chat.query.sort" md-on-reorder="vm_chat.getChatQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_chat.getSize(vm_chat.chatQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_chat.chatQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_chat.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_chat.query.page" md-total="{{vm_chat.chatQueuesTotal}}" md-on-paginate="vm_chat.getChatQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_chat.getColorByChannel(\'chat\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_chat.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_chat.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_chat.queryChannels.limit" md-page="vm_chat.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_chat.paginatedInteractions.length}}" md-on-paginate="vm_chat.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/fax/agent.general.dashboard.fax.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_fax.getColorByChannel(\'fax\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_fax.promise">\n        <thead md-head md-order="vm_fax.query.sort" md-on-reorder="vm_fax.getFaxQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_fax.getSize(vm_fax.faxQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_fax.faxQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_fax.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_fax.query.page" md-total="{{vm_fax.faxQueuesTotal}}" md-on-paginate="vm_fax.getFaxQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_fax.getColorByChannel(\'fax\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_fax.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_fax.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_fax.queryChannels.limit" md-page="vm_fax.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_fax.paginatedInteractions.length}}" md-on-paginate="vm_fax.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/mail/agent.general.dashboard.mail.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_mail.getColorByChannel(\'mail\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_mail.promise">\n        <thead md-head md-order="vm_mail.query.sort" md-on-reorder="vm_mail.getMailQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_mail.getSize(vm_mail.mailQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_mail.mailQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_mail.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_mail.query.page" md-total="{{vm_mail.mailQueuesTotal}}" md-on-paginate="vm_mail.getMailQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_mail.getColorByChannel(\'mail\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_mail.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_mail.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_mail.queryChannels.limit" md-page="vm_mail.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_mail.paginatedInteractions.length}}" md-on-paginate="vm_mail.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/openchannel/agent.general.dashboard.openchannel.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_openchannel.getColorByChannel(\'openchannel\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_openchannel.promise">\n        <thead md-head md-order="vm_openchannel.query.sort" md-on-reorder="vm_openchannel.getOpenchannelQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_openchannel.getSize(vm_openchannel.openchannelQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_openchannel.openchannelQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_openchannel.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_openchannel.query.page" md-total="{{vm_openchannel.openchannelQueuesTotal}}" md-on-paginate="vm_openchannel.getOpenchannelQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_openchannel.getColorByChannel(\'openchannel\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_openchannel.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_openchannel.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_openchannel.queryChannels.limit" md-page="vm_openchannel.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_openchannel.paginatedInteractions.length}}" md-on-paginate="vm_openchannel.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/sms/agent.general.dashboard.sms.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_sms.getColorByChannel(\'sms\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_sms.promise">\n        <thead md-head md-order="vm_sms.query.sort" md-on-reorder="vm_sms.getSmsQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_sms.getSize(vm_sms.smsQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_sms.smsQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_sms.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_sms.query.page" md-total="{{vm_sms.smsQueuesTotal}}" md-on-paginate="vm_sms.getSmsQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_sms.getColorByChannel(\'sms\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_sms.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_sms.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_sms.queryChannels.limit" md-page="vm_sms.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_sms.paginatedInteractions.length}}" md-on-paginate="vm_sms.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/voice/agent.general.dashboard.voice.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg ">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_voice.promise">\n        <thead md-head md-order="vm_voice.query.sort" md-on-reorder="vm_voice.getVoiceQueues">\n          <tr md-row>\n            <th md-column>{{ \'VOICE.NAME\' | translate }}</th>\n            <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n            <th ng-if="voiceQueue.type === \'outbound\'" md-column>{{ \'VOICE.ACTIVE\' | translate }}</th>\n            \x3c!-- <th md-column md-order-by="active">{{ \'VOICE.ACTIVE\' | translate }}</th> --\x3e\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_voice.getSize(vm_voice.voiceQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, voiceQueue) in vm_voice.voiceQueues">\n            <td md-cell class="name">{{voiceQueue.name}}</td>\n            <td ng-if="voiceQueue.type === \'outbound\'" md-cell class="waiting">{{voiceQueue.dialMethod}}</td>\n            <td md-cell class="waiting">{{voiceQueue.waiting || 0}}</td>\n            <td md-cell ng-if="voiceQueue.type === \'outbound\'" class="dialActive ">\n              <md-icon md-colors="{color: {{voiceQueue.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{voiceQueue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_voice.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_voice.query.page" md-total="{{vm_voice.voiceQueuesTotal}}" md-on-paginate="vm_voice.getVoiceQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg ">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n            <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_voice.getSize(vm_voice.rpcVoiceQueuesChannels)">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, channel) in vm_voice.rpcVoiceQueuesChannels | limitObjectFromTo: vm_voice.queryChannels.limit:(vm_voice.queryChannels.page - 1) * vm_voice.queryChannels.limit">\n            <td md-cell>{{channel.exten}}</td>\n            <td md-cell>{{channel.queue}}</td>\n            <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_voice.queryChannels.limit" md-page="vm_voice.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_voice.getSize(vm_voice.rpcVoiceQueuesChannels)}}" md-page-select>\n    </md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/whatsapp/agent.general.dashboard.whatsapp.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_whatsapp.getColorByChannel(\'whatsapp\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_whatsapp.promise">\n        <thead md-head md-order="vm_whatsapp.query.sort" md-on-reorder="vm_whatsapp.getWhatsappQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_whatsapp.getSize(vm_whatsapp.whatsappQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_whatsapp.whatsappQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_whatsapp.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_whatsapp.query.page" md-total="{{vm_whatsapp.whatsappQueuesTotal}}" md-on-paginate="vm_whatsapp.getWhatsappQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_whatsapp.getColorByChannel(\'whatsapp\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_whatsapp.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_whatsapp.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_whatsapp.queryChannels.limit" md-page="vm_whatsapp.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_whatsapp.paginatedInteractions.length}}" md-on-paginate="vm_whatsapp.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/fax/agent.general.fax.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.FAX_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getFaxInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getFaxInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getFaxInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.faxAccounts.rows && vm.faxAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="faxAccount in vm.faxAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeFaxInteraction($event, faxAccount)">\n              {{ faxAccount.name }} ({{ faxAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.faxInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.faxInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="faxAccount">\n            {{ vm.getFaxAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showFaxInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Fax\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadFaxInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Fax\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxInteractions.count}}" md-on-paginate="vm.getFaxInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/mail/agent.general.mail.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.MAIL_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getMailInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getMailInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getMailInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.mailAccounts.rows && vm.mailAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="mailAccount in vm.mailAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeMailInteraction($event, mailAccount)">\n              {{ mailAccount.name }} ({{ mailAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="subject">{{\'DASHBOARDS.SUBJECT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.mailInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.mailInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div ng-if="vm.setting.enableEmailPreview && interaction.lastMsgText" class="tooltip-preview">\n              <span class="text-truncate font-size-12 subject-text">{{ interaction.subject }}</span>\n              \x3c!-- ng-style="{top: \'-\' + ((($index % 10) + 1) * 18) + \'px\'}" --\x3e\n              <md-card class="tooltip-preview-text">\n                <md-card-content><span class="email-preview-message">{{ interaction.lastMsgText }}</span>\n                </md-card-content>\n              </md-card>\n            </div>\n            <span ng-if="!interaction.lastMsgText || !vm.setting.enableEmailPreview" class="text-truncate font-size-12">{{ interaction.subject }}</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="mailAccount">\n            {{ vm.getMailAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showMailInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Mail\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadMailInteraction($event, interaction, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadMailInteraction($event, interaction)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailInteractions.count}}" md-on-paginate="vm.getMailInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/mycontacts/agent.general.mycontacts.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.MYCONTACTS">My Contacts</span>\n      <ms-search-bar on-search="vm.getContacts()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getContacts()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" ng-click="vm.refreshContacts($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button ng-if="vm.lists.rows && vm.lists.rows.length" class="md-icon-button create-new" ng-click="vm.openContact($event)" aria-label="Add contact" translate translate-attr-label="DASHBOARDS.ADD_CONTACT">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="firstName">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="mobile">{{\'DASHBOARDS.MOBILE\' | translate}}</th>\n          <th md-column md-order-by="fax">{{\'DASHBOARDS.FAX\' | translate}}</th>\n          <th md-column md-order-by="email">{{\'DASHBOARDS.EMAIL\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.CREATEDAT\' | translate}}</th>\n          <th md-column md-order-by="ListId">{{\'DASHBOARDS.LIST\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.contacts.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="contact in vm.contacts.rows">\n          <td ng-click="vm.openContact($event, contact)" md-cell class="id">{{contact.id}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="firstName" privacy ng-cloak>\n            {{contact.firstName}} {{contact.lastName}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.phone" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="mobile">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.mobile" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="fax" privacy ng-cloak>\n            {{contact.fax}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="email" privacy ng-cloak>{{contact.email}}\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="createdAt">{{contact.createdAt |\n            formatdate}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="list">\n            {{vm.listsMap[contact.ListId].name}}</td>\n          <td md-cell class="tag">\n            <div ng-if="contact.Tags.length">\n              <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                <span class="text-truncate">{{contact.Tags[0].name}}</span>\n              </div>\n              <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag"></md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.openContact($event, contact)" translate="DASHBOARDS.EDIT">\n                    Edit Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.mergeContact($event, contact)" translate="DASHBOARDS.MERGE">\n                    Merge Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.duplicateContact($event, contact)" translate="DASHBOARDS.DUPLICATE">\n                    Duplicate Contact\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/openchannel/agent.general.openchannel.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.OPENCHANNEL_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getOpenchannelInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getOpenchannelInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getOpenchannelInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.openchannelAccounts.rows && vm.openchannelAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="openchannelAccount in vm.openchannelAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeOpenchannelInteraction($event, openchannelAccount)" ng-disabled="!openchannelAccount.replyUri">\n              {{ openchannelAccount.name }} ({{ openchannelAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.openchannelInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.openchannelInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="openchannelAccount">\n            {{ vm.getOpenchannelAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showOpenchannelInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Openchannel\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadOpenchannelInteraction($event, interaction, true)" translate="OPENCHANNEL.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadOpenchannelInteraction($event, interaction)" translate="OPENCHANNEL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelInteractions.count}}" md-on-paginate="vm.getOpenchannelInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/plugins/agent.general.plugins.html",'<div id="plugin" ng-if="vm.plugin" ng-cloak layout-fill>\n  <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/agent.general.presence.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-selected="vm.selectedTab" md-dynamic-height md-border-bottom>\n      <md-tab label="{{\'DASHBOARDS.AGENTS\' | translate}}" md-on-select="vm.onAgentsTabSelection()">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.agents.html\'">\n        </md-content>\n      </md-tab>\n      <md-tab label="{{\'DASHBOARDS.QUEUES\' | translate}}" md-on-select="vm.onQueuesTabSelection()">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.queues.html\'">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.agents.html",'<md-card ngCloak>\n  <md-toolbar class="md-table-toolbar md-default table-header xenialab-violet-light-bg" ng-class="{\'h-128\' : vm.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.AGENTS"></span>\n      <ms-search-bar on-search="vm.getAgents()" query="vm.agentsQuery" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.agentsQuery" search="vm.getAgents()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getAgents()">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.agentsQuery.sort" md-on-reorder="vm.getAgents">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'DASHBOARDS.NAME\' | translate}}</th>\n          <th md-column md-order-by="internal">{{\'VOICE.INTERNAL\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column class="no-padding width-70"></th>\n          <th md-column class="width-70"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.agents.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="agent in vm.agents.rows">\n          <td md-cell>{{agent.id}}</td>\n          <td md-cell>{{agent.name}}</td>\n          <td md-cell>{{agent.internal}}</td>\n          <td md-cell>\n            <div layout="row">\n              <div layout="column" layout-align="center center">\n                <span class="text-boxed width-70 text-center md-background-bg bl bt padding-5" ng-class="{\'online\':\'lime-300-bg\',\'offline\':\'red-A200-bg\',\'pause\':\'amber-200-bg\',\'busy\':\'indigo-100-bg\'}[agent.status]">{{\n                  agent.status | uppercase }}</span>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="no-padding width-70">\n            <md-button ng-if="agent.status !== \'offline\'" ng-click="vm.originateCall(agent.name)" class="md-fab md-mini md-raised" aria-label="Dial">\n              <md-icon md-font-icon="icon-phone" class="icon green-fg s20">\n                <md-tooltip><span translate="VOICE.DIAL"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n          <td md-cell class="width-70">\n            <md-button ng-if="agent.status !== \'offline\'" ng-click="vm.transferCall(agent.name)" class="md-fab md-mini md-raised" aria-label="Transfer">\n              <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s20">\n                <md-tooltip><span translate="DASHBOARDS.TRANSFER"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.agentsQuery.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.agentsQuery.page" md-total="{{vm.agents.count}}" md-on-paginate="vm.getAgents" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.queues.html",'<md-card ngCloak>\n  <md-toolbar class="md-table-toolbar md-default table-header xenialab-violet-light-bg" ng-class="{\'h-128\' : vm.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.QUEUES"></span>\n      <ms-search-bar on-search="vm.getVoiceQueues()" query="vm.queuesQuery" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.queuesQuery.sort" md-on-reorder="vm.getVoiceQueues">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'DASHBOARDS.NAME\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'VOICE.CALLS\' | translate}}</th>\n          <th md-column class="no-padding width-70"></th>\n          <th md-column class="width-70"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceQueues.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="queue in vm.voiceQueues.rows">\n          <td md-cell>{{queue.id}}</td>\n          <td md-cell>{{queue.name}}</td>\n          <td md-cell>{{queue.calls.length || 0}}</td>\n          <td md-cell class="no-padding width-70">\n            <md-button ng-click="vm.originateCall(queue.name)" class="md-fab md-mini md-raised" aria-label="Dial">\n              <md-icon md-font-icon="icon-phone" class="icon green-fg s20">\n                <md-tooltip><span translate="VOICE.DIAL"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n          <td md-cell class="width-70">\n            <md-button ng-click="vm.transferCall(queue.name)" class="md-fab md-mini md-raised" aria-label="Transfer">\n              <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s20">\n                <md-tooltip><span translate="DASHBOARDS.TRANSFER"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.queuesQuery.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queuesQuery.page" md-total="{{vm.voiceQueues.count}}" md-on-paginate="vm.getVoiceQueues" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/recordings/agent.general.recordings.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header indigo-A100-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="VOICE.RECORDINGS">Recordings</span>\n      <ms-search-bar on-search="vm.getVoiceRecordings()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceRecordings()">\n      </ms-quick-filter>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceRecordings">\n        <tr md-row>\n          <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n          <th md-column md-order-by="uniqueid">{{ \'VOICE.UNIQUEID\' | translate }}</th>\n          <th md-column md-order-by="calleridnum">{{ \'VOICE.CALLER\' | translate }}</th>\n          <th md-column md-order-by="exten">{{ \'VOICE.CALLED\' | translate }}</th>\n          <th md-column md-order-by="connectedlinenum">{{ \'VOICE.CONNECTED\' | translate }}</th>\n          <th md-column md-order-by="queue">{{ \'VOICE.QUEUE\' | translate }}</th>\n          <th md-column md-order-by="rating">{{ \'VOICE.RATING\' | translate }}</th>\n          <th md-column>{{ \'VOICE.AUDIO\' | translate }}</th>\n          <th md-column md-order-by="createdAt">{{ \'VOICE.DATE\' | translate }}</th>\n          <th md-column width="10px" ng-if="vm.currentUser.downloadVoiceRecordings"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceRecordings.rows.length">\n          <td md-cell colspan="{{ vm.currentUser.downloadVoiceRecordings ? 10 : 9}}">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="voiceRecording in vm.voiceRecordings.rows">\n          <td md-cell class="type">{{voiceRecording.type}}</td>\n          <td md-cell class="uniqueid">{{voiceRecording.uniqueid}}</td>\n          <td md-cell class="calleridnum">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.calleridnum" license="vm_home.license">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="exten">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.exten" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="connectedlinenum">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.connectedlinenum" license="vm_home.license">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="queue">{{voiceRecording.queue}}</td>\n          <td md-cell class="rating">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-show="voiceRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:voiceRecording.rating"></md-icon><span ng-hide="voiceRecording.rating" translate="VOICE.NO_RATING">No rating</span>\n          </td>\n          <td md-cell class="audio" ng-switch="voiceRecording.format">\n            \x3c!-- audio recording directive --\x3e\n            <ms-recording ng-switch-when=".wav" id="voiceRecording.id"></ms-recording>\n            \x3c!-- / audio recording directive --\x3e\n            <span ng-switch-when=".gsm">\n              <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n            </span>\n          </td>\n          <td md-cell class="createdAt ">{{voiceRecording.createdAt | date:\'medium\' }}</td>\n          <td md-cell class="actions" ng-if="vm.currentUser.downloadVoiceRecordings">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.downloadfile(voiceRecording, $event)" translate="VOICE.DOWNLOAD_VOICERECORDING">\n                    Download VoiceRecording\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\'">\n                  <md-button ng-click="vm.downloadtranscribe(voiceRecording, $event)" translate="VOICE.DOWNLOADTRANSCRIBE_VOICERECORDING">\n                    Download Transcribe\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceRecordings.count}}" md-on-paginate="vm.getVoiceRecordings" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/scheduled/agent.general.scheduled.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header blue-grey-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="MOTIONDIALER.SCHEDULED_CALLS">Scheduled Calls</span>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getScheduledCalls()">\n      </ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm.getScheduledCalls()" aria-label="Refresh scheduled calls" translate translate-attr-label="MOTIONDIALER.REFRESH_SCHEDULED_CALLS">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip>{{\'MOTIONDIALER.REFRESH_SCHEDULED_CALLS\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScheduledCalls">\n        <tr md-row>\n          <th md-column>{{\'MOTIONDIALER.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{ \'MOTIONDIALER.PHONE\' | translate }}</th>\n          <th md-column md-order-by="scheduledat">{{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}</th>\n          <th md-column>{{ \'MOTIONDIALER.PRIORITY\' | translate }}</th>\n          <th md-column md-order-by="recallme">{{ \'MOTIONDIALER.RECALLME\' | translate }}</th>\n          <th md-column>{{ \'MOTIONDIALER.CAMPAIGN\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.scheduledCalls.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="scheduledCall in vm.scheduledCalls.rows">\n          <td md-cell privacy ng-cloak>{{scheduledCall.Contact.firstName}} {{scheduledCall.Contact.lastName}}</td>\n          <td md-cell>\n            <ms-click-to-call target="scheduledCall.phone" license="vm_home.license"></ms-click-to-call>\n          </td>\n          <td md-colors="{color: {{ vm.isDateBeforeToday(scheduledCall.scheduledat) ? \'\\\'red\\\'\' : \'\\\'green\\\'\' }}}" md-cell>{{ scheduledCall.scheduledat | date:\'medium\' }}</td>\n          <td md-cell>{{ vm.priorities[scheduledCall.priority] }}</td>\n          <td md-cell>\n            <md-icon md-colors="{color: {{ scheduledCall.recallme && scheduledCall.UserId == vm.currentUser.id ? \'\\\'green\\\'\' : \'\\\'grey\\\'\' }}}" md-font-icon="{{ scheduledCall.recallme  && scheduledCall.UserId == vm.currentUser.id ? \'icon-check\' : \'icon-close\' }}">\n            </md-icon>\n          </td>\n          <td md-cell>\n            <md-icon md-colors="{color: {{ scheduledCall.Queue.dialActive? \'\\\'green\\\'\' : \'\\\'red\\\'\' }}}" md-font-icon="icon-checkbox-blank-circle"></md-icon> {{scheduledCall.Queue.name}}\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.createOrEditQueueCampaignHopper($event, scheduledCall)" translate="MOTIONDIALER.EDIT_HOPPER">\n                    Edit Hopper\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.deleteConfirm(scheduledCall, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                    Delete Hopper\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.scheduledCalls.count}}" md-on-paginate="vm.getScheduledCalls" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/sms/agent.general.sms.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.SMS_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getSmsInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getSmsInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getSmsInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.smsAccounts.rows && vm.smsAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="smsAccount in vm.smsAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeSmsInteraction($event, smsAccount)">\n              {{ smsAccount.name }} ({{ smsAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.smsInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.smsInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="smsAccount">\n            {{ vm.getSmsAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showSmsInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Sms\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadSmsInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Sms\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsInteractions.count}}" md-on-paginate="vm.getSmsInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/voice/agent.general.voice.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="VOICE.CALLS">Calls</span>\n      <ms-search-bar on-search="vm.getVoiceCalls()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceCalls()">\n      </ms-quick-filter>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'VOICE.ID\' | translate}}</th>\n          <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n          <th md-column md-order-by="source">{{ \'VOICE.SOURCE\' | translate }}</th>\n          <th md-column md-order-by="destination">{{ \'VOICE.DESTINATION\' | translate }}</th>\n          <th md-column md-order-by="starttime">{{ \'VOICE.STARTEDAT\' | translate }}</th>\n          <th md-column md-order-by="endtime">{{ \'VOICE.ENDEDAT\' | translate }}</th>\n          <th md-column md-order-by="userDisposition">{{ \'VOICE.DISPOSITION\' | translate }}</th>\n          <th md-column md-order-by="userSecondDisposition">{{ \'VOICE.SECOND_LEVEL_DISPOSITION\' | translate }}</th>\n          <th md-column md-order-by="userThirdDisposition">{{ \'VOICE.THIRD_LEVEL_DISPOSITION\' | translate }}</th>\n          <th md-column>{{ \'VOICE.NOTE\' | translate }}</th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceCalls.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="voiceCall in vm.voiceCalls.rows" ng-click="vm.showDetails(voiceCall, $event)">\n          <td md-cell class="type">{{voiceCall.id}}</td>\n          <td md-cell class="type">{{ \'VOICE.\' + voiceCall.type.toUpperCase() | translate}}</td>\n          <td md-cell class="source">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceCall.source" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="destination">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceCall.destination" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="starttime">{{voiceCall.starttime | date:\'medium\' }}</td>\n          <td md-cell class="endtime">{{voiceCall.endtime | date:\'medium\' }}</td>\n          <td md-cell class="disposition">{{ voiceCall.userDisposition}}</td>\n          <td md-cell class="disposition">{{ voiceCall.userSecondDisposition}}</td>\n          <td md-cell class="disposition">{{ voiceCall.userThirdDisposition}}</td>\n          <td md-cell class="note">\n            <md-icon ng-if="voiceCall.note" md-font-icon="icon-clipboard-outline"></md-icon>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.showDetails(voiceCall, $event)" translate="VOICE.DETAILS">\n                    Show Details\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceCalls.count}}" md-on-paginate="vm.getVoiceCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/voice/details/dialog.html",'<md-dialog class="details-dialog" aria-label="details">\n  <md-toolbar class="md-background-bg">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span ng-if="!vm.interaction.closed" class="title" translate="VOICE.DETAILS"></span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <md-list flex>\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.UNIQUEID">Uniqueid</p>\n          <h4>{{vm.call.uniqueid}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.TYPE">Type</p>\n          <h4>{{vm.call.type ? vm.call.type : \'no type\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.SOURCE">Source</p>\n          <h4 privacy ng-cloak>{{vm.call.source ? vm.call.source : \'unknown\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DESTINATION">Destination</p>\n          <h4 privacy ng-cloak>{{vm.call.destination ? vm.call.destination : \'unknown\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.STARTEDAT">Started At</p>\n          <h4>{{vm.call.starttime | date:\'medium\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.ANSWEREDAT">Answered At</p>\n          <h4>{{vm.call.answertime ? (vm.call.answertime | date:\'medium\') : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.ENDEDAT">Ended At</p>\n          <h4>{{vm.call.endtime ? (vm.call.endtime | date:\'medium\') : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DURATION">Duration</p>\n          <h4>{{vm.call.duration ? vm.call.duration : \'--\'}}s</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.BILLABLESECONDS">Billable Seconds</p>\n          <h4>{{vm.call.billableseconds ? vm.call.billableseconds : \'--\'}}s</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DISPOSITION">Disposition</p>\n          <h4>{{vm.call.userDisposition ? vm.call.userDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n          <h4>{{vm.call.userSecondDisposition ? vm.call.userSecondDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n          <h4>{{vm.call.userThirdDisposition ? vm.call.userThirdDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.NOTE">Note</p>\n          <h4>{{vm.call.note ? vm.call.note : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n    </md-list>\n  </md-dialog-content>\n\n  <md-dialog-actions layout="row" layout-align="space-between center">\n    <md-button type="button" ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="DISPOSE" translate="VOICE.CLOSE" translate-attr-aria-label="VOICE.DISPOSE">\n      CLOSE\n    </md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/home/whatsapp/agent.general.whatsapp.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.WHATSAPP_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getWhatsappInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getWhatsappInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getWhatsappInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.whatsappAccounts.rows && vm.whatsappAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="whatsappAccount in vm.whatsappAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeWhatsappInteraction($event, whatsappAccount)">\n              {{ whatsappAccount.name }} ({{ whatsappAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.whatsappInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.whatsappInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="whatsappAccount">\n            {{ vm.getWhatsappAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showWhatsappInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Whatsapp\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadWhatsappInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Whatsapp\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappInteractions.count}}" md-on-paginate="vm.getWhatsappInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/iframe/agent.general.iframe.html",'<md-content layout="row" layout-fill>\n\n  <div flex layout="row">\n\n    <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="width: 100%; height: 100%; border:0px;"></iframe>\n\n  </div>\n\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",'<md-dialog id="agent-general-dialog" aria-label="Spy Dialog">\n  <div id="interaction-app" class="agent-content" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html\'"></div>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html",'\x3c!-- CONTENT CARD --\x3e\n<md-content class="content-card" layout="row" layout-fill>\n\n  <div ng-if="!vm.showInteraction" class="start-point" flex layout="column" layout-align="center center" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.loading.html\'"></div>\n\n  <div ng-if="vm.showInteraction" flex layout="row">\n\n    <md-card flex="75" class="interaction">\n\n      <md-content class="interaction-agents" layout="row" layout-align="start center" ng-if="!vm.interaction.closed && vm.interaction.Users.length">\n        <strong layout-margin translate="DASHBOARDS.CURRENTLY_IN_USE_BY">Currently in use by </strong>\n\n        <div ng-repeat="u in vm.interaction.Users">\n          <img class="avatar-small" ng-src="api/users/{{u.id}}/avatar">\n          <md-tooltip> {{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : vm.usersMap[u.id] | translate }}\n          </md-tooltip>\n        </div>\n      </md-content>\n\n      \x3c!-- TOOLBAR --\x3e\n      <md-toolbar class="interaction-toolbar" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.html\'">\n      </md-toolbar>\n      \x3c!-- / TOOLBAR --\x3e\n\n      \x3c!-- CONTENT --\x3e\n      <md-content id="interaction-content" name="{{\'interaction-content-\' + vm.tab.id}}" flex ms-scroll layout-wrap>\n        <div class="interaction-messages" ng-switch="vm.tab.channel">\n          <div ng-switch-when="mail">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.mail.html\'">\n            </div>\n          </div>\n          <div ng-switch-default>\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.html\'">\n            </div>\n          </div>\n        </div>\n      </md-content>\n      \x3c!-- / CONTENT --\x3e\n\n      \x3c!-- FOOTER --\x3e\n      <div ng-if="\n            !vm.interaction.closed && ( vm.tab.channel == \'chat\' \n            || (vm.tab.channel == \'openchannel\' && vm.account.replyUri) \n            || (vm.tab.channel == \'sms\' && !vm.tab.spy) \n            || (vm.tab.channel == \'whatsapp\' && !vm.tab.spy) )\n             && (vm.user.role !== \'admin\' && vm.user.role !== \'user\')" class="interaction-footer flex-noshrink" layout="row" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.footer.html\'">\n      </div>\n      \x3c!-- / FOOTER--\x3e\n    </md-card>\n\n    <md-card layout="column" flex class="info" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.html\'">\n    </md-card>\n  </div>\n</md-content>\n\x3c!-- / CONTENT CARD --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/chat/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="CHAT.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="CHAT.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="CHAT.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="CHAT.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'CHAT.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'CHAT.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.ChatAccountId" md-font-icon="icon-earth" aria-label="alert chat" class="s16"></md-icon>\n          <md-icon ng-if="item.ChatAccountId" md-font-icon="icon-message-text" aria-label="alert chat" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n\n        <md-not-found>\n          <span translate="CHAT.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="FAX.SEND">SEND</span>\n          </md-button>\n          <md-button ng-disabled="vm.message.attachments.length === 1" class="md-fab md-mini md-white-bg" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-init="vm.ngFlowOptions" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)">\n            <md-icon md-font-icon="icon-paperclip" class="red-fg"></md-icon>\n          </md-button>\n        </div>\n        <span class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="FAX.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block to">\n        <label translate="FAX.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete ng-hide="vm.message.to.length === 1" md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.fax" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" ng-if="composeForm.$dirty">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n          <div ng-message="md-max-chips">You reached the maximum amount of chips</div>\n        </div>\n      </md-input-container>\n      <div class="attachment-list" ng-if="vm.message.attachments.length" layout="row" layout-wrap>\n        <div class="attachment" layout="row" layout-align="space-between center" ng-repeat="attachment in vm.message.attachments">\n          <div>\n            <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            <span class="filename">{{attachment.name}}</span>\n            <span class="size">({{attachment.size | byteFmt: 0}})</span>\n          </div>\n          <md-button class="md-icon-button" aria-label="Delete attachment" translate translate-attr-aria-label="FAX.DELETE_ATTACHMENT">\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message" ng-class="{\'mail-no-secret\': !vm.secret}" ng-cloak>\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar ng-class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <div ng-if="!vm.secret" class="md-button md-raised blue-bg no-padding">\n            <button class="white-fg margin-horizontal-10" aria-label="Send message" ng-disabled="!vm.verifySmtp" ng-click="vm.send($event, false, null)">\n              <span>{{ \'MAIL.SEND\' | translate | uppercase }}</span>\n            </button>\n            <span class="white-fg secondary-text vertical-divider"></span>\n            <md-menu>\n              <button ng-disabled="!vm.verifySmtp" class="white-fg margin-left-0" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-menu-down" class="icon s24"></md-icon>\n              </button>\n              <md-menu-content width="2">\n                <md-menu-item ng-if="vm.subStatuses.rows.length">\n                  <md-menu>\n                    <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="MAIL.SEND_AS">\n                      Send as\n                    </md-button>\n                    <md-menu-content>\n                      <md-menu-item ng-repeat="subStatus in vm.subStatuses.rows">\n                        <md-button ng-click="vm.send($event, false, subStatus.name)">\n                          {{subStatus.name}}\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.send($event, true, null)" translate="MAIL.SEND_AND_CLOSE">\n                    Send and Close\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </div>\n          <md-button ng-if="!vm.secret" class=" md-button md-raised blue-bg white-fg margin-horizontal-10" aria-label="Save draft" ng-click="vm.saveDraft()">\n            <span>{{ (vm.isDraft ? \'DASHBOARDS.UPDATE_DRAFT\' : \'DASHBOARDS.SAVE_AS_DRAFT\') | translate | uppercase }}</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="MAIL.ADD_NOTE">Add note</span>\n          </md-button>\n          <md-button ng-disabled="!vm.verifySmtp" class="md-fab md-mini md-white-bg" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload($files)" flow-init="vm.ngFlowOptions" flow-file-success="vm.fileSuccess($file, $message)" flow-file-added="vm.fileAdded($file)">\n            <md-icon md-font-icon="icon-paperclip" class="red-fg"></md-icon>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="MAIL.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to" ng-class="{\'hidden-cc\': vm.hiddenCC, \'hidden-bcc\': vm.hiddenBCC}">\n        <label translate="MAIL.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.to)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n        <div class="cc-bcc" layout="row" layout-align="start center">\n          <div class="show-cc" ng-show="vm.hiddenCC" ng-click="vm.hiddenCC = false">CC</div>\n          <div class="show-bcc" ng-show="vm.hiddenBCC" ng-click="vm.hiddenBCC = false">BCC</div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="!vm.secret" class="md-block" ng-hide="vm.hiddenCC">\n        <label translate="MAIL.CC">Cc</label>\n        <md-chips name="cc" ng-model="vm.message.cc" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.cc)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchCc" md-items="contact in vm.contactSearch(vm.searchCc)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n      </md-input-container>\n      <md-input-container ng-if="!vm.secret" class="md-block" ng-hide="vm.hiddenBCC">\n        <label translate="MAIL.BCC">Bcc</label>\n        <md-chips name="bcc" ng-model="vm.message.bcc" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.bcc)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchBcc" md-items="contact in vm.contactSearch(vm.searchBcc)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n      </md-input-container>\n      <md-input-container ng-if="!vm.secret" class="md-block no-margin">\n        <label translate="MAIL.SUBJECT">Subject</label>\n        <input ng-model="vm.message.subject" type="text" ng-keypress="vm.keyPress($event)">\n      </md-input-container>\n      <div class="attachment-list" ng-if="vm.message.attachments.length" layout="row" layout-wrap>\n        <div class="attachment" layout="row" layout-align="space-between center" ng-repeat="attachment in vm.message.attachments">\n          <div>\n            <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            <span class="filename">{{attachment.name}}</span>\n            <span class="size" ng-if="attachment.size">({{attachment.size | byteFmt: 0}})</span>\n          </div>\n          <md-button ng-click="vm.removeAttachment(attachment)" class="md-icon-button" aria-label="Delete attachment" translate translate-attr-aria-label="MAIL.DELETE_ATTACHMENT">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="padding-top-5">\n        <textarea ckeditor="vm.ckeditor" id="html-area" ng-model="vm.message.body" md-select-on-focus="" ready="vm.onReadyEditor()"></textarea>\n      </div>\n      <md-switch ng-if="!vm.message.showLastMessage && !vm.secret" ng-model="vm.message.showLastMessage" ng-change="vm.loadLastMessage()" aria-label="load last message"><span translate="MAIL.SHOW_ORIGINAL_MESSAGE">Show original message</span></md-switch>\n      <md-autocomplete ng-if="!vm.secret" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'MAIL.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin" ng-keypress="vm.keyPress($event)">\n        <md-item-template>\n          <md-icon ng-if="!item.MailAccountId" md-font-icon="icon-earth" aria-label="alert email" class="s16">\n          </md-icon>\n          <md-icon ng-if="item.MailAccountId" md-font-icon="icon-email" aria-label="alert email" class="s16 teal-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{ item.key }} -\n            {{ item.value | htmlToPlaintext }}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="MAIL.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="OPENCHANNEL.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="OPENCHANNEL.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="OPENCHANNEL.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="OPENCHANNEL.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mapkey" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'OPENCHANNEL.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'OPENCHANNEL.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.OpenchannelAccountId" md-font-icon="icon-earth" aria-label="alert openchannel" class="s16"></md-icon>\n          <md-icon ng-if="item.OpenchannelAccountId" md-font-icon="icon-message-text" aria-label="alert openchannel" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="OPENCHANNEL.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="SMS.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="SMS.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="SMS.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="SMS.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'SMS.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'SMS.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.SmsAccountId" md-font-icon="icon-earth" aria-label="alert sms" class="s16"></md-icon>\n          <md-icon ng-if="item.SmsAccountId" md-font-icon="icon-message-text" aria-label="alert sms" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="SMS.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="WHATSAPP.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="WHATSAPP.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="WHATSAPP.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="WHATSAPP.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'WHATSAPP.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'WHATSAPP.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.WhatsappAccountId" md-font-icon="icon-earth" aria-label="alert whatsapp" class="s16">\n          </md-icon>\n          <md-icon ng-if="item.WhatsappAccountId" md-font-icon="icon-message-text" aria-label="alert whatsapp" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="WHATSAPP.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",'<md-dialog class="disposition-dialog" aria-label="disposition" ng-init="vm.onInit()">\n  <form name="dispositionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span ng-if="!vm.interaction.closed" class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <span ng-if="vm.interaction.closed" class="title" translate="DASHBOARDS.INFO"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" ng-if="!vm.mandatoryDisposition">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n        <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\')" required>\n          <md-option ng-value="null" ng-if="!vm.mandatoryDisposition">NONE</md-option>\n          <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n            {{ disposition.name }}</md-option>\n        </md-select>\n        <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n          <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n          <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.NOTE">Note</label>\n        <textarea ng-model="vm.interaction.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveDisposition()" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="!vm.interaction.closed && (vm.firstLevelDisposition || vm.secondLevelDisposition || vm.thirdLevelDisposition)" aria-label="CLOSE_AND_DISPOSE" translate="DASHBOARDS.CLOSE_AND_DISPOSE" translate-attr-aria-label="DASHBOARDS.CLOSE_AND_DISPOSE">\n          CLOSE AND DISPOSE\n        </md-button>\n        <md-button type="submit" ng-click="vm.saveDisposition(false)" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="!vm.interaction.closed && !vm.firstLevelDisposition" ng-disabled="vm.mandatoryDisposition" aria-label="CLOSE_WITHOUT_DISPOSE" translate="DASHBOARDS.CLOSE_WITHOUT_DISPOSE" translate-attr-aria-label="DASHBOARDS.CLOSE_WITHOUT_DISPOSE">\n          CLOSE WITHOUT DISPOSE\n        </md-button>\n        <md-button type="submit" ng-click="vm.saveDisposition()" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="vm.interaction.closed" ng-disabled="vm.mandatoryDisposition && !vm.firstLevelDisposition" aria-label="DISPOSE" translate="DASHBOARDS.DISPOSE" translate-attr-aria-label="DASHBOARDS.DISPOSE">\n          DISPOSE\n        </md-button>\n        <div ng-if="vm.mandatoryDisposition">\n          <md-icon md-font-icon="icon-information-outline" aria-label="Mandatory Disposition"></md-icon>\n          <span class="no-margin font-size-12 line-height-30" translate="DASHBOARDS.HELP.MANDATORY_DISPOSITION_ENABLED"></span>\n        </div>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/tag/dialog.html",'<md-dialog class="tag-dialog" aria-label="tag">\n  <form name="tagForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.TAGS"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <md-chips ng-model="vm.interaction.Tags" md-autocomplete-snap md-require-match="vm.autocompleteRequireMatch">\n          <md-autocomplete ng-blur="vm.searchText = \'\'" md-min-length="0" md-selected-item-change="vm.selectedItemChange" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-items="item in vm.tags.rows | filter:{ name: vm.searchText }" md-item-text="item.name" placeholder="Search for a tag">\n            <span md-highlight-text="vm.searchText">{{item.name}}</span>\n          </md-autocomplete>\n          <md-chip-template>\n            <span>\n              <strong>{{$chip.name}}</strong>\n            </span>\n          </md-chip-template>\n        </md-chips>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveTag(false)" ng-disabled="tagForm.$pristine" class="send-button md-accent md-raised" aria-label="TAG" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/transfer/dialog.html",'<md-dialog class="disposition-dialog" aria-label="disposition">\n  <form name="transferForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.TRANSFER"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(false)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.transfer.type">\n          <md-option ng-value="\'queue\'" ng-if="vm.account.queueTransfer">Queue</md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.account.agentTransfer">Agent</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.transfer.type === \'queue\'">\n        <label translate="DASHBOARDS.QUEUES">Queues</label>\n        <md-select name="queue" ng-model="vm.transfer.id" required>\n          <md-option ng-value="queue.id" ng-repeat="queue in vm.queues.rows">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="transferForm.queue.$error" ng-show="transferForm.queue.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.transfer.type === \'agent\'">\n        <label translate="DASHBOARDS.AGENTS">Agents</label>\n        <md-select name="agent" ng-model="vm.transfer.id" required>\n          <md-option ng-value="agent.id" ng-repeat="agent in vm.agents.rows">{{\n            agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="transferForm.agent.$error" ng-show="transferForm.agent.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.onTransfer(true)" ng-disabled="transferForm.$pristine" class="send-button md-accent md-raised" aria-label="DASHBOARDS.TRANSFER" translate="DASHBOARDS.TRANSFER" translate-attr-aria-label="DASHBOARDS.TRANSFER">\n          TRANSFER\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.footer.html",'\x3c!-- REPLY FORM --\x3e\n<div ng-show="vm.showFooter" layout="column" layout-align="center center" flex>\n  <div layout="row" layout-align="center center" style="flex-grow: 1; align-self: stretch" flex>\n    \x3c!-- msEmojyArea directive --\x3e\n    <ms-emoji-area ng-if="vm.tab.channel != \'fax\'" on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.tab.areaText" placeholder="vm.tab.channel.toUpperCase() + \'.INSERT_MESSAGE_HERE\'"></ms-emoji-area>\n    \x3c!-- / msEmojyArea directive --\x3e\n\n    <div layout="row" layout-align="end center">\n      <md-button ng-if="vm.tab.channel != \'fax\'" style="margin:1px;" class="md-icon-button md-mini" ng-click="vm.changeDisplayCannedAnswerInputValue()" aria-label="Search canned answer" translate translate-attr-aria-label="DASHBOARDS.SEND_MESSAGE">\n        <md-icon md-font-icon="icon-auto-fix" class="green-fg"></md-icon>\n      </md-button>\n\n      <md-button ng-if="vm.tab.channel == \'openchannel\' || vm.tab.channel == \'chat\' || vm.tab.channel == \'fax\'" style="margin:1px;" class="md-icon-button md-warn md-mini" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-init="vm.ngFlowOptions" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)">\n        <md-icon md-font-icon="icon-paperclip"></md-icon>\n      </md-button>\n    </div>\n  </div>\n\n  <md-autocomplete ng-hide="!vm.displayCannedAnswerInput" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" placeholder="{{ \'DASHBOARDS.CANNED_ANSWER_SEARCH\' | translate}}" class="cannedarea input-show-hide">\n    <md-item-template>\n      <md-icon ng-if="!item[vm.tab.channel === \'chat\' ? \'ChatWebsiteId\' : _.capitalize(vm.tab.channel) + \'AccountId\']" md-font-icon="icon-earth" aria-label="alert channel" class="s16"></md-icon>\n      <md-icon ng-if="item[vm.tab.channel === \'chat\' ? \'ChatWebsiteId\' : _.capitalize(vm.tab.channel) + \'AccountId\']" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" aria-label="alert channel" class="s16" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n      <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n    </md-item-template>\n\n    <md-not-found>\n      <span translate="DASHBOARDS.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n    </md-not-found>\n  </md-autocomplete>\n</div>\n\x3c!-- / REPLY FORM --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line" ng-if="item.browserName">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.BROWSER_NAME">Browser Name</p>\n      <h4>{{ item.browserName }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.osName">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.OS_NAME">OS Name</p>\n      <h4>{{ item.osName }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.deviceModel">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DEVICE_MODEL">Device Model</p>\n      <h4>{{ item.deviceModel }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.referer">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.REFERER">Referer</p>\n      <h4>{{ item.referer }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.customerIp">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CUSTOMER_IP">Originating IP Address</p>\n      <h4>{{ item.customerIp }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.customerPort">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CUSTOMER_PORT">Originating TCP Port</p>\n      <h4>{{ item.customerPort }}</h4>\n    </div>\n  </md-list-item>\n  <md-divider ng-if="item.closed && item.ratingValue != null || item.ratingMessage"></md-divider>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.ratingValue != null">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.RATING">Rating</p>\n      <md-icon md-font-icon="icon-star" style="color:red" ng-show="!item.ratingType || item.ratingType == \'star\'" ng-repeat="ratingValue in [1,2,3,4,5] | limitTo:item.ratingValue"></md-icon>\n      <md-icon md-font-icon="icon-thumb-up" style="color:green" ng-show="item.ratingType && item.ratingType == \'thumb\' && item.ratingValue == 1"></md-icon>\n      <md-icon md-font-icon="icon-thumb-down" style="color:red" ng-show="item.ratingType && item.ratingType == \'thumb\' && item.ratingValue == 0"></md-icon>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.ratingMessage">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.FEEDBACK">Feedback</p>\n      <h4 style="overflow-wrap: break-word; white-space: normal">{{ item.ratingMessage }}</h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.html",'<md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CONTACT">Contact</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding">\n        <form name="contactForm" class="md-inline-form" novalidate>\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-account"></md-icon>\n            <label translate="DASHBOARDS.NAME">Name</label>\n            <input type="text" name="firstName" ng-model="vm.contact.firstName" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-email"></md-icon>\n            <label translate="DASHBOARDS.EMAIL">Email</label>\n            <input type="email" name="email" ng-model="vm.contact.email" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n            <label translate="DASHBOARDS.PHONE">Phone</label>\n            <input type="text" name="phone" ng-model="vm.contact.phone" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n            <label translate="DASHBOARDS.MOBILE">Mobile</label>\n            <input type="text" name="mobile" ng-model="vm.contact.mobile" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-deskphone"></md-icon>\n            <label translate="DASHBOARDS.FAX">Fax</label>\n            <input type="text" name="fax" ng-model="vm.contact.fax" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <div ng-if="!vm.tab.spy" layout="row" layout-align="center center">\n            <md-button class="md-raised md-accent" ng-click="vm.openContact(ev)" translate="DASHBOARDS.MORE">\n              More\n            </md-button>\n          </div>\n        </form>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.INTERACTION">Interaction</span>\n    </md-tab-label>\n    <md-tab-body>\n      <div layout="column" layout-align="space-between center" class="md-padding">\n        <md-icon class="s42" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n        <span ng-if="vm.interaction.closed" class="md-background-bg red-fg font-size-14">#{{vm.interaction.id}} - <span translate="DASHBOARDS.CLOSED"></span></span>\n        <span ng-if="!vm.interaction.closed" class="md-background-bg green-fg font-size-14">#{{vm.interaction.id}} -\n          <span translate="DASHBOARDS.OPENED"></span></span>\n        <span ng-if="!vm.interaction.closed && vm.interaction.substatus" class="md-background-bg green-fg font-size-14">{{vm.interaction.substatus}}</span>\n      </div>\n      <md-divider></md-divider>\n      <md-list flex>\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.WEBSITE" ng-if="vm.tab.channel == \'chat\'">Website</p>\n            <p translate="DASHBOARDS.ACCOUNT" ng-if="vm.tab.channel != \'chat\'">Account</p>\n            <h4>{{vm.account.name}}</h4>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.AGENT">Agent</p>\n            <h4>{{vm.agent.fullname || vm.usersMap[vm.interaction.UserId]}}</h4>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.externalUrl">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.EXTERNAL_URL">External URL</p>\n            <a href="{{vm.interaction.externalUrl}}" target="_blank">\n              <h4>{{vm.interaction.externalUrl}}</h4>\n            </a>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.CREATED_AT">Created At</p>\n            <h4>{{vm.interaction.createdAt | date: \'medium\'}}</h4>\n          </div>\n        </md-list-item>\n\n        <div ng-switch="vm.tab.channel">\n          <div ng-switch-when="chat">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html\'">\n            </div>\n          </div>\n          <div ng-switch-when="mail">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html\'">\n            </div>\n          </div>\n          <div ng-switch-when="openchannel">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.openchannel.html\'">\n            </div>\n          </div>\n        </div>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.Tags.length">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.TAGS">Tags</p>\n            <div class="tags padding-bottom-5" layout="row" layout-align="start center" layout-wrap>\n              <div class="tag margin-right-5 margin-top-5 margin-bottom-5" layout="row" layout-align="center center" ng-repeat="tag in vm.interaction.Tags">\n                <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n                <div class="tag-label">{{tag.name}}</div>\n              </div>\n            </div>\n          </div>\n        </md-list-item>\n\n        <md-divider ng-if="vm.interaction.closed"></md-divider>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.CLOSED_AT">Closed At</p>\n            <h4>{{vm.interaction.closedAt | date: \'medium\'}}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.disposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.DISPOSITION">Disposition</p>\n            <h4>{{ vm.interaction.disposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.secondDisposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n            <h4>{{ vm.interaction.secondDisposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.thirdDisposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n            <h4>{{ vm.interaction.thirdDisposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-3-line md-long-text" ng-if="vm.interaction.closed && vm.interaction.note">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.NOTE">NOTE</p>\n            <h4 style="overflow-wrap: break-word; white-space: normal">{{ vm.interaction.note }}</h4>\n          </div>\n        </md-list-item>\n      </md-list>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CUSTOMER_JOURNEY">Journey</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n</md-tabs>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.all.html",'<md-divider></md-divider>\n<md-list flex>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.AGENT">Agent</p>\n      <h4>{{ vm.agent.fullname || vm.usersMap[item.UserId] || \'DASHBOARDS.NOT_ASSIGNED\' | translate }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.externalUrl">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.EXTERNAL_URL">External URL</p>\n      <a href="{{ item.externalUrl }}" target="_blank">\n        <h4>{{ item.externalUrl }}</h4>\n      </a>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CREATED_AT">Created At</p>\n      <h4>{{ item.createdAt | date: \'medium\' }}</h4>\n    </div>\n  </md-list-item>\n  <div ng-if="item.channel === \'chat\'">\n    <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html\'">\n    </div>\n  </div>\n  <div ng-if="item.channel === \'mail\'">\n    <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html\'">\n    </div>\n  </div>\n  <md-divider ng-if="item.closed"></md-divider>\n  <md-list-item class="md-2-line" ng-if="item.closed">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CLOSED_AT">Closed At</p>\n      <h4>{{ item.closedAt | date: \'medium\' }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.disposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DISPOSITION">Disposition</p>\n      <h4>{{ item.disposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.secondDisposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n      <h4>{{ item.secondDisposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.thirdDisposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n      <h4>{{ item.thirdDisposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-3-line md-long-text" ng-if="item.closed && item.note">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.NOTE">NOTE</p>\n      <h4 style="overflow-wrap: break-word; white-space: normal">{{ item.note }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item ng-if="item.Tags.length">\n    <p class="padding-horizontal-15 grey-fg">Tags</p>\n    <div class="tags padding-bottom-5" layout="row" layout-align="start center" layout-wrap>\n      <div class="tag margin-right-5 margin-top-5 margin-bottom-5" layout="row" layout-align="center center" ng-repeat="tag in item.Tags">\n        <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n        <div class="tag-label">{{ tag.name }}</div>\n      </div>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html",'<div layout-margin layout="row" layout-align="center center">\n  <ms-quick-filter filters="vm.quickFilters" query="vm.journeyOptions" search="vm.getCustomerJourney()">\n  </ms-quick-filter>\n</div>\n\n<md-content id="journey-content" flex ms-scroll layout-wrap>\n  <div ng-if="vm.journeyIsLoading" layout="row" layout-align="center center">\n    <md-progress-circular class="md-accent" md-diameter="48" md-mode="indeterminate"></md-progress-circular>\n  </div>\n  <div id="timeline" layout="column" ng-if="vm.journey && vm.journey.length && !vm.journeyIsLoading" ms-timeline="vm.journeyTimelineOptions" ms-timeline-load-more="vm.loadMoreJourney()">\n    \x3c!-- TIMELINE ITEM --\x3e\n    <div class="ms-timeline-item" layout-align="center center" ng-repeat="item in vm.journey">\n      <div class="timeline-card">\n        <md-card class="channel" ng-class="{\'md-grey-200-bg\': item.id == vm.interaction.id}">\n          <div layout="row" layout-align="space-between center">\n            <div class="header p-6" layout="row" layout-align="start center" ng-cloak>\n              <md-button class="md-fab md-mini no-click" aria-label="icon-channel" ng-class="{{ \'item.style.color\' }} + \'-bg\'">\n                <md-icon md-font-icon="{{ item.style.icon }}"></md-icon>\n              </md-button>\n              <div class="info" layout="column" ng-init="item.showMore = false">\n                <span class="font-size-12 text-truncate" ng-if="item.destination">\n                  #{{item.id}} - <span privacy ng-cloak>{{ item.destination }}</span>\n                </span>\n                <span class="font-size-12 text-truncate" ng-if="!item.destination">\n                  #{{item.id}} - {{ item.Account.key }}\n                </span>\n                <span class="font-size-10">{{item.createdAt | date: \'medium\'}}</span>\n                <span>\n                  <a class="toggle-details md-accent-color" ng-click="item.showMore = !item.showMore" translate="{{ item.showMore ? \'DASHBOARDS.HIDE_DETAILS\' : \'DASHBOARDS.SHOW_DETAILS\' }}">\n                  </a>\n                </span>\n              </div>\n            </div>\n            <span>\n              <img ng-if="item.UserId" class="avatar" ng-src="api/users/{{item.UserId}}/avatar">\n              <md-tooltip md-direction="left">{{item.Owner.fullname || item.User.fullname}}</md-tooltip>\n            </span>\n          </div>\n          <div ng-if="item.showMore">\n            <div ng-if="item.channel !== \'voice\'" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.all.html\'">\n            </div>\n            <div ng-if="item.channel === \'voice\'" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.voice.html\'">\n            </div>\n          </div>\n          <md-divider></md-divider>\n          <div ng-if="item.id != vm.interaction.id" layout="row" layout-align="space-around center">\n            <div ng-if="item.closed && item.channel !== \'voice\'" class="text-truncate text-boxed-light">\n              <span class="red-fg" title="{{ \'DASHBOARDS.STATUS\' | translate}} : {{ \'DASHBOARDS.CLOSED\' | translate }} {{ item.dispositionsValues }}">\n                {{ \'DASHBOARDS.STATUS\' | translate}} : {{ \'DASHBOARDS.CLOSED\' | translate}} {{ item.dispositionsValues\n                }}\n              </span>\n            </div>\n            <span class="text-boxed md-background-bg green-fg" ng-if="!item.closed && item.channel !== \'voice\'" title="{{ \'DASHBOARDS.STATUS\' | translate}}: {{ \'DASHBOARDS.OPENED\' | translate}}">\n              {{ \'DASHBOARDS.STATUS\' | translate}}:\n              {{ \'DASHBOARDS.OPENED\' | translate}}\n              <span ng-if="item.substatus"> - {{ item.substatus }}</span>\n            </span>\n            <span ng-if="item.channel === \'voice\'" class="text-boxed md-background-bg red-fg" title="{{ item.userDisposition ? (\'DASHBOARDS.DISPOSITION\' | translate) + \':\' : \'\'}} {{ item.userDisposition ?\n                item.userDisposition : (\'DASHBOARDS.NO_DISPOSITION_SET\' | translate) }}">\n              {{ item.userDisposition ? (\'DASHBOARDS.DISPOSITION\' | translate) + \':\' : \'\'}} {{ item.userDisposition ?\n              item.userDisposition : (\'DASHBOARDS.NO_DISPOSITION_SET\' | translate) }}\n            </span>\n            <span ng-if="item.channel === \'voice\' && item.userSecondDisposition" class="text-boxed md-background-bg red-fg" title="{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}: {{ item.userSecondDisposition }}">\n              {{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:\n              {{ item.userSecondDisposition }}\n            </span>\n            <span ng-if="item.channel === \'voice\' && item.userThirdDisposition" class="text-boxed md-background-bg red-fg" title="{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}: {{ item.userThirdDisposition }}">\n              {{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:\n              {{ item.userThirdDisposition }}\n            </span>\n            <div flex></div>\n            <md-button ng-if="!vm.tab.spy && vm.user.role === \'agent\' && item.canOpen && item.channel !== \'voice\'" class="md-icon-button" aria-label="go" ng-click="vm.openInteraction(item)">\n              <md-icon md-font-icon="icon-open-in-new" class="s20"></md-icon>\n            </md-button>\n          </div>\n        </md-card>\n      </div>\n    </div>\n\n    <div ng-if="vm.canLoadMoreJourney" layout="row" layout-align="center center" class="ng-scope layout-align-center-center layout-row keep-on-top">\n      <md-button class="md-raised md-accent md-button ng-scope md-default-theme md-ink-ripple" type="button" ng-click="vm.loadMoreJourney()" translate="DASHBOARDS.MORE">\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / TIMELINE ITEM --\x3e\n</md-content>\n\n<div ng-if="!vm.journey || vm.journey.length === 0" layout="row" layout-align="center center">\n  <em translate="DASHBOARDS.NO_DATA_AVAILABLE">No data available</em>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.voice.html",'<md-divider></md-divider>\n\n<md-list flex>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.TYPE">Type</p>\n      <h4>{{ item.type ? item.type : \'no type\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SOURCE">Source</p>\n      <h4 privacy ng-cloak>{{ item.source ? item.source : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DESTINATION">Destination</p>\n      <h4 privacy ng-cloak>{{ item.destination ? item.destination : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.UNIQUEID">Uniqueid</p>\n      <h4>{{ item.uniqueid ? item.uniqueid : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CALLERID">Caller Id</p>\n      <h4 privacy ng-cloak>{{ item.callerid ? item.callerid : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.STARTEDAT">Started At</p>\n      <h4>{{ item.starttime | date:\'medium\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.END_AT">End At</p>\n      <h4>{{ item.endtime | date:\'medium\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DURATION">Duration</p>\n      <h4>{{ item.duration ? item.duration : \'--\' }}s</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.NOTE">Note</p>\n      <h4>{{ item.note ? item.note : \'--\' }}</h4>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line" ng-if="item.subject">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SUBJECT">Subject</p>\n      <h4>{{ item.subject }}</h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.openchannel.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.VISIBILITY">Visibility</p>\n      <h4 translate="{{ item.threadId ? \'DASHBOARDS.PUBLIC\' : \'DASHBOARDS.PRIVATE\'}}"></h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.html",'\x3c!-- MESSAGES --\x3e\n<div layout="row" ng-repeat="message in vm.messages.rows" class="md-padding message-row" ng-class="vm.getMessagesAlignment(message)">\n  <img ng-if="message.direction ===\'in\'" src="assets/images/avatars/customer.png" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && message.UserId && !message.secret" ng-src="api/users/{{message.UserId}}/avatar" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && message.UserId && message.secret" ng-src="api/users/{{message.UserId}}/avatar" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && !message.UserId" class="avatar" src="assets/images/avatars/robot.png">\n  <md-button ng-if="vm.tab.channel === \'fax\'" class="md-fab md-mini no-margin" aria-label="Download" ng-click="vm.downloadMessage(message)">\n    <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n  </md-button>\n\n  <div class="bubble" ng-class="{\'md-yellow-200-bg\': message.secret}" ng-switch="message.direction">\n    <div ng-if="message.secret">\n      <div class="time secondary-text" layout="row" layout-align="end center">\n        <div layout-padding>\n          <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n          <span> - {{message.createdAt | date: \'medium\'}}</span>\n        </div>\n        <div ng-if="message.id">\n          <md-icon class="s18" md-font-icon="icon-lock"></md-icon>\n        </div>\n      </div>\n    </div>\n    <div ng-if="!message.secret">\n      <div ng-switch-when="in" class="time secondary-text" ng-click="message.Contact && vm.openContact(ev, message.Contact)">\n        <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n        <span> - {{message.createdAt | date: \'medium\'}}</span>\n      </div>\n      <div ng-switch-when="out" class="time secondary-text" layout="row" layout-align="end center">\n        <div layout-padding>\n          <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n          <span> - {{message.createdAt | date: \'medium\'}}</span>\n        </div>\n        <div ng-if="message.id && vm.tab.channel !== \'fax\'">\n          <md-icon ng-if="!message.read" class="s18" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read" class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n        </div>\n        <div ng-if="message.id && vm.tab.channel === \'fax\'">\n          <md-icon ng-if="!message.read && !(message.failMessage )" class="s18" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read" class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n          <span ng-if="!message.read && message.failMessage" class="s18 red-900-fg"> {{ message.failMessage }}</span>\n          <md-icon ng-if="!message.read && message.failMessage" class="s18 red-900-fg" md-font-icon="icon-close md-accent"></md-icon>\n        </div>\n      </div>\n    </div>\n    <div ng-if="message.AttachmentId" layout="row" layout-align="end center">\n      <md-button ng-if="vm.downloadPermissions.attachments" class="md-raised md-accent" ng-click="vm.getAttachment({id: message.AttachmentId, name: vm.htmlToPlaintext(message.body)})">\n        <span>{{vm.htmlToPlaintext(message.body)}}</span>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </md-button>\n      <div ng-if="!vm.downloadPermissions.attachments" class="disabled-button">\n        <span>{{vm.htmlToPlaintext(message.body)}}</span>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </div>\n    </div>\n    <div ng-if="!message.AttachmentId" class="message" layout="row" layout-align="end center">\n      <span ng-bind-html="message.body | embed: vm.embedOptions"></span>\n    </div>\n  </div>\n</div>\n\x3c!-- / MESSAGES --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.mail.html",'<div ms-timeline="vm.interactionTimelineOptions" ms-timeline-load-more="vm.loadNextPage()">\n  <div ng-repeat="message in vm.messages.rows track by message.id" ng-init="vm.selectedMailShowSystemMessage[message.id] = false">\n    <md-card ng-if="message.secret" class="md-padding md-yellow-100-bg" layout="column">\n      <div layout="row" layout-align="start center">\n        <img class="avatar" ng-src="api/users/{{message.UserId}}/avatar">\n        <div layout="column">\n          <span class="grey-fg">{{vm.agent.fullname || vm.usersMap[message.UserId]}}</span>\n          <span class="grey-fg">{{message.createdAt | date:\'medium\'}}</span>\n        </div>\n      </div>\n      <div layout="row" layout-align="center center" layout-fill ng-if="message.attach && vm.downloadPermissions.attachments">\n        <div flex>\n          <md-divider></md-divider>\n        </div>\n        <md-menu>\n          <md-button aria-label="attachments" class="md-icon-button" ng-click="vm.getAttachments(message); $mdOpenMenu($event);">\n            <md-tooltip md-direction="bottom"><span translate="MAIL.ATTACHMENTS">Attachments</span>\n            </md-tooltip>\n            <div layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="icon s24"></md-icon>\n              <span>{{message.attach}}</span>\n            </div>\n          </md-button>\n          <md-menu-content width="4">\n            <div layout="column" layout-align="center center" ng-if="!message.attachments">\n              <md-progress-circular md-mode="indeterminate"></md-progress-circular>\n              <span translate="MAIL.ATTACHMENTS">Attachments</span>\n            </div>\n            <md-menu-item ng-if="message.attachments" ng-repeat="attachment in message.attachments">\n              <md-button ng-click="vm.getAttachment(attachment)">\n                {{ attachment.name || (\'attachment-\' + $index) }}</md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n        <div flex>\n          <md-divider></md-divider>\n        </div>\n      </div>\n      <div class="padding-top-5" ng-bind-html-unsafe="message.body"></div>\n    </md-card>\n    <div ng-if="!message.secret">\n      <div layout="row" layout-align="center center" ng-if="message.direction == \'out\' && !message.UserId && !vm.selectedMailShowSystemMessage[message.id]">\n        <md-button class="md-raised blue-grey-300-bg white-fg" ng-click="vm.selectedMailShowSystemMessage[message.id] = !vm.selectedMailShowSystemMessage[message.id]">\n          [{{message.createdAt | date: \'medium\'}}] {{ \'MAIL.SHOW_AUTOREPLY\' | translate }}</md-button>\n      </div>\n      <md-card layout="column" class="md-padding message-row" ng-if="message.direction == \'in\' || (message.direction == \'out\' && (message.UserId || vm.selectedMailShowSystemMessage[message.id]))">\n        <md-content class="mail-content">\n          <div class="info" layout="row" layout-align="space-between start">\n            <div layout="column" layout-align="start start">\n              <div layout="row" layout-align="start start">\n                <div layout="column" layout-align="start start">\n                  <div class="name" ng-click="message.Contact && vm.openContact(ev, message.Contact)">\n                    <strong privacy ng-cloak>{{message.from}}</strong>\n                    <md-icon ng-if="message.attach" md-font-icon="icon-paperclip" class="s16">\n                    </md-icon>\n                  </div>\n                  <div class="name">\n                    <div>{{message.subject}}</div>\n                  </div>\n                  <div class="name" layout="row" layout-align="start center"><span translate="MAIL.TO">To</span>: <span class="padding-left-5 subject text-truncate" privacy ng-cloak>{{ message.originTo || message.to\n                      }}</span>\n                  </div>\n                  <div class="name padding-top-10" layout="row" layout-align="start center" ng-if="message.direction == \'in\' && message.originCc && message.originCc.indexOf(vm.account.email) >= 0">\n                    <em><span class="blue-grey" translate="MAIL.YOU_ARE_REGISTERED_AS_A">You are\n                        registered as a</span> <span class="blue-grey">CC</span></em>\n                  </div>\n                  <div class="name padding-top-10" layout="row" layout-align="start center" ng-if="message.direction == \'in\' && message.bcc && message.bcc.indexOf(vm.account.email) >= 0">\n                    <em><span class="red-fg" translate="MAIL.YOU_ARE_REGISTERED_AS_A">You are\n                        registered as a</span> <span class="red-fg">BCC</span></em>\n                  </div>\n                </div>\n              </div>\n\n              <a class="toggle-details md-accent-color" ng-hide="vm.selectedMailShowDetails[message.id]" ng-click="vm.selectedMailShowDetails[message.id] = !vm.selectedMailShowDetails[message.id]" translate="MAIL.SHOW_DETAILS">\n                Show Details\n              </a>\n              <a class="toggle-details md-accent-color" ng-show="vm.selectedMailShowDetails[message.id]" ng-click="vm.selectedMailShowDetails[message.id] = !vm.selectedMailShowDetails[message.id]" translate="MAIL.HIDE_DETAILS">\n                Hide Details\n              </a>\n              <div ng-show="vm.selectedMailShowDetails[message.id]" class="details" layout="row" layout-align="start start">\n                <div layout="column">\n                  <span class="title" translate="MAIL.DATE">Date:</span>\n                  <span class="title" translate="MAIL.FROM">From:</span>\n                  <span class="title" translate="MAIL.TO">To:</span>\n                  \x3c!-- NOTE: Start retrocompatibility with replyCc 2.0.66 --\x3e\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'in\' && message.originCc">Cc:</span>\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'in\' && !message.originCc && !message.originTo && message.cc">Cc:</span>\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'out\' && message.cc">Cc:</span>\n                  \x3c!-- End retrocompatibility --\x3e\n                  <span class="title" translate="MAIL.BCC" ng-if="message.bcc">Bcc:</span>\n                  <span class="title" translate="MAIL.ACCEPTED" ng-if="message.UserId && message.direction ===\'in\'">Accepted:</span>\n                </div>\n\n                <div layout="column">\n                  <span class="detail">{{message.createdAt | date:\'medium\'}}</span>\n                  <span class="detail" privacy ng-cloak>{{message.from}}</span>\n                  <span class="detail" privacy ng-cloak>{{message.originTo || message.to}}</span>\n                  \x3c!-- NOTE: Start retrocompatibility with replyCc 2.0.66 --\x3e\n                  <span class="detail" ng-if="message.direction === \'in\' && message.originCc" privacy ng-cloak>{{\n                    message.originCc }}</span>\n                  <span class="detail" ng-if="message.direction === \'in\' && !message.originCc && !message.originTo && message.cc" privacy ng-cloak>{{ message.cc }}</span>\n                  <span class="detail" ng-if="message.direction === \'out\' && message.cc" privacy ng-cloak>{{ message.cc\n                    }}</span>\n                  \x3c!-- End retrocompatibility --\x3e\n                  <span class="detail" ng-if="message.bcc" privacy ng-cloak>{{message.bcc}}</span>\n                  <span class="detail" ng-if="message.UserId && message.direction ===\'in\'">{{vm.usersMap[message.UserId]}}</span>\n                </div>\n              </div>\n            </div>\n\n            <div layout="row" layout-align="center center">\n              <div layout="column" layout-align="center end" class="md-padding">\n                <span class="grey-fg" ng-if="message.direction ===\'in\'" privacy>{{message.from.indexOf(vm.contact.email)\n                  >= 0 ? vm.contact.firstName + \' \' + vm.contact.lastName : \'*\' + message.from}}</span>\n                <span class="grey-fg" ng-if="message.direction ===\'out\' && message.UserId">{{vm.agent.fullname ||\n                  vm.usersMap[message.UserId]}}</span>\n                <span class="grey-fg" ng-if="message.direction ===\'out\' && !message.UserId">System</span>\n                <span class="grey-fg">{{message.createdAt | date:\'medium\'}}</span>\n              </div>\n              <img ng-if="message.direction ===\'in\'" ng-src="assets/images/avatars/customer.png" class="avatar" alt="customer" />\n              <img ng-if="message.direction ===\'out\' && message.UserId" class="avatar" ng-src="api/users/{{message.UserId}}/avatar">\n              <img ng-if="message.direction ===\'out\' && !message.UserId" class="avatar" src="assets/images/avatars/robot.png">\n            </div>\n          </div>\n\n          <div layout="row" layout-align="center center" layout-fill>\n            <div flex>\n              <md-divider></md-divider>\n            </div>\n            <div>\n              <div class="interaction-reply-button-container">\n                <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DRAFT">Draft</span>\n                </md-tooltip>\n                <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="draft" ng-disabled="!vm.draft" ng-click="vm.openDraft(message.id)">\n                  <md-icon md-font-icon="icon-pencil-box" class="icon s24"></md-icon>\n                </md-button>\n              </div>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeMailInteraction(\'reply\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY">Reply</span></md-tooltip>\n                <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="replyAll" ng-click="vm.composeMailInteraction(\'replyAll\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY_ALL">Reply All</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-reply-all" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="forward" ng-click="vm.composeMailInteraction(\'forward\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.FORWARD">Forward</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-forward" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!message.attach && vm.downloadPermissions.interactions" class="md-icon-button" aria-label="forward" ng-click="vm.downloadMessage(message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.DOWNLOAD">Download</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n              </md-button>\n              <md-menu ng-if="message.attach && vm.downloadPermissions.interactions" class="no-margin" md-position-mode="target-right target">\n                <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="download">\n                  <md-tooltip md-direction="bottom"><span translate="MAIL.DOWNLOAD">Download</span>\n                  </md-tooltip>\n                  <md-icon md-font-icon="icon-download"></md-icon>\n                </md-button>\n                <md-menu-content width="2">\n                  <md-menu-item ng-if="vm.downloadPermissions.attachments">\n                    <md-button ng-click="vm.downloadMessage(message, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                      Download with attachments\n                    </md-button>\n                  </md-menu-item>\n                  <md-menu-item>\n                    <md-button ng-click="vm.downloadMessage(message)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                      Download without attachments\n                    </md-button>\n                  </md-menu-item>\n                </md-menu-content>\n              </md-menu>\n              <md-menu ng-if="message.attach && vm.downloadPermissions.attachments">\n                <md-button aria-label="attachments" class="md-icon-button" ng-click="vm.getAttachments(message); $mdOpenMenu($event);">\n                  <md-tooltip md-direction="bottom"><span translate="MAIL.ATTACHMENTS">Attachments</span></md-tooltip>\n                  <div layout="row" layout-align="start center">\n                    <md-icon md-font-icon="icon-paperclip" class="icon s24"></md-icon>\n                    <span>{{message.attach}}</span>\n                  </div>\n                </md-button>\n                <md-menu-content width="4">\n                  <div layout="column" layout-align="center center" ng-if="!message.attachments">\n                    <md-progress-circular md-mode="indeterminate"></md-progress-circular>\n                    <span translate="MAIL.ATTACHMENTS">Attachments</span>\n                  </div>\n                  <md-menu-item ng-if="message.attachments" ng-repeat="attachment in message.attachments">\n                    <md-button ng-click="vm.getAttachment(attachment)">\n                      {{ attachment.name || (\'attachment-\' + $index) }}</md-button>\n                  </md-menu-item>\n                </md-menu-content>\n              </md-menu>\n            </div>\n            <div flex>\n              <md-divider></md-divider>\n            </div>\n          </div>\n\n          <md-content ng-bind-html-unsafe="message.body"></md-content>\n        </md-content>\n      </md-card>\n    </div>\n    <div ng-hide="!(vm.BTNLoadMore > 0)" layout="row" layout-align="center center" class="ng-scope layout-align-center-center layout-row">\n      <md-button class="md-raised md-accent md-button ng-scope md-default-theme md-ink-ripple" type="button" ng-disabled="!(vm.BTNLoadMore > 0)" ng-click="vm.loadNextPage()" translate="DASHBOARDS.MORE">\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.loading.html",'<div class="big-circle md-whiteframe-4dp">\n  <md-icon class="s128 md-accent" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n</div>\n<span class="app-title" translate="DASHBOARDS.WAITING">Waiting</span>\n<span class="hide show-gt-md secondary-text" translate="DASHBOARDS.LOADING_INTERACTION">We are loading the\n  interaction...</span>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.chat.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeChatInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="CHAT.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.fax.html",'<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeFaxInteraction(\'new\')">\n  <md-tooltip md-direction="bottom"><span translate="FAX.REPLY">Reply</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.html",'<div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n  <md-icon md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" class="s20" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n  <div class="padding-left-10" layout="column" layout-align="center start" flex>\n    <div class="font-size-14" layout="row" layout-align="start center" layout-fill>\n      <span>#{{vm.interaction.id}} - {{vm.account.key}}</span>\n      <div layout="row" layout-align="center center" class="p-8">\n        <md-icon ng-if="vm.tab.channel === \'openchannel\' && vm.interaction.threadId" md-font-icon="fas fa-users" class="s16">\n          <md-tooltip><span translate="DASHBOARDS.PUBLIC_INTERACTION">The interaction is public</span></md-tooltip>\n        </md-icon>\n        <md-icon ng-if="vm.interaction.attach" md-font-icon="icon-paperclip" class="s16"></md-icon>\n      </div>\n      <span class="red-fg padding-left-25" ng-if="vm.interaction.closed" translate="DASHBOARDS.CLOSED">CLOSED</span>\n      <span class="green-fg padding-left-25" ng-if="!vm.interaction.closed"><span translate="DASHBOARDS.OPENED">OPENED</span><span ng-if="vm.interaction.substatus"> -\n          {{vm.interaction.substatus}}</span></span>\n      <div layout="row" layout-align="center center" class="blue-grey-300-fg padding-left-40" ng-if="!vm.interaction.closed">\n        <timer start-time="vm.interaction.createdAt"></timer>\n        <md-icon md-font-icon="icon-timelapse" class="s16 padding-left-5"></md-icon>\n      </div>\n    </div>\n    <div class="tags" layout="row" layout-align="start center" ng-if="vm.interaction.Tags.length" ng-class="{\'padding-top-5\': vm.interaction.Tags.length}">\n      <div class="tag margin-right-5" layout="row" layout-align="center center" ng-repeat="tag in vm.interaction.Tags">\n        <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n        <div class="tag-label">{{tag.name}}</div>\n      </div>\n    </div>\n  </div>\n  <div layout="row" layout-align="end center">\n    <div ng-switch="vm.tab.channel">\n      <div ng-switch-when="mail">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.mail.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="fax">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.fax.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="sms">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.sms.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="whatsapp">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.whatsapp.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="chat">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.chat.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="openchannel">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.openchannel.html\'">\n        </div>\n      </div>\n    </div>\n    <md-menu ng-if="[\'fax\', \'sms\', \'whatsapp\'].indexOf(vm.tab.channel) < 0 && vm.downloadPermissions.interactions" class="no-margin" md-position-mode="target-right target">\n      <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="download">\n        <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </md-button>\n      <md-menu-content width="2">\n        <md-menu-item ng-if="vm.downloadPermissions.attachments">\n          <md-button ng-click="vm.downloadInteraction(vm.interaction, true)" translate="DASHBOARDS.DOWNLOAD_WITH_ATTACHMENTS">\n            Download with attachments\n          </md-button>\n        </md-menu-item>\n        <md-menu-item>\n          <md-button ng-click="vm.downloadInteraction(vm.interaction)" translate="DASHBOARDS.DOWNLOAD_WITHOUT_ATTACHMENTS">\n            Download without attachments\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n    <md-menu class="no-margin" ng-if="!vm.interaction.disposition" md-position-mode="target-right target">\n      <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="more">\n        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n      </md-button>\n\n      <md-menu-content width="2">\n\n        <md-menu-item ng-if="vm.tab.channel === \'chat\' && !vm.interaction.closed && !vm.tab.spy && vm.account.vidaooEscalation && vm.account.vidaooApiKey">\n          <md-button ng-click="vm.createVidaooSession(vm.interaction)" translate="DASHBOARDS.VIDAOOSESSION">\n            Start Video Call\n          </md-button>\n        </md-menu-item>\n\n        <md-menu-item>\n          <md-button ng-click="vm.tagInteraction()" translate="DASHBOARDS.TAG">\n            Tag\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="vm.account.queueTransfer || vm.account.agentTransfer">\n          <md-button ng-click="vm.transferLastMessage()" translate="DASHBOARDS.TRANSFER">\n            Transfer\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.interaction.closed && vm.tab.channel == \'mail\' && (vm.subStatuses.rows.length || vm.interaction.substatus != null)">\n          <md-menu>\n            <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.SET_AS">\n              Set as\n            </md-button>\n            <md-menu-content>\n              <md-menu-item ng-if="vm.interaction.substatus != null">\n                <md-button ng-click="vm.setAs(null)" translate="DASHBOARDS.NONE">\n                  None\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-repeat="subStatus in vm.subStatuses.rows">\n                <md-button ng-click="vm.setAs(subStatus.name)">\n                  {{subStatus.name}}\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.interaction.closed && vm.tab.channel == \'mail\' && vm.account.markAsUnread">\n          <md-button ng-click="vm.markAsUnread()" translate="DASHBOARDS.MARK_AS_UNREAD">\n            Unread\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.tab.spy && !vm.interaction.closed">\n          <md-button ng-click="vm.disposeInteraction()" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n            Close and Dispose\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.tab.spy && vm.interaction.closed && !vm.interaction.disposition">\n          <md-button ng-click="vm.disposeInteraction(ev)" translate="DASHBOARDS.DISPOSE">\n            Dispose\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.mail.html",'<div class="interaction-reply-button-container">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DRAFT">Draft</span></md-tooltip>\n  <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="draft" ng-disabled="!vm.draft" ng-click="vm.openDraft()">\n    <md-icon ng-cloak md-font-icon="icon-pencil-box" class="icon s24" ng-class="vm.draft ? \'red-500-fg\' : \'grey-fg\'"></md-icon>\n  </md-button>\n</div>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeMailInteraction(\'reply\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY">Reply</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n</md-button>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="replyAll" ng-click="vm.composeMailInteraction(\'replyAll\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY_ALL">Reply All</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply-all" class="icon s24"></md-icon>\n</md-button>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="forward" ng-click="vm.composeMailInteraction(\'forward\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.FORWARD">Forward</span></md-tooltip>\n  <md-icon md-font-icon="icon-forward" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeMailInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.openchannel.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeOpenchannelInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="OPENCHANNEL.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.sms.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeSmsInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="SMS.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.whatsapp.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeWhatsappInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="WHATSAPP.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/jscripty/agent.general.jscripty.html",'<md-content class="md-padding" layout="column" layout-align="center center">\n  <div layout="row" layout-align="center center">\n    <span ng-if="!vm.tab.saved" class="text-boxed md-green-bg">\n      <timer start-time="vm.starttime"></timer>\n    </span>\n    <span ng-if="vm.contact" class="text-boxed md-gray-bg font-weight-900">{{vm.contact.firstName}} {{vm.contact.lastName}} {{vm.contact.phone}}</span>\n    <md-button ng-if="vm.showResetButton" ng-click="vm.resetViewer()" md-no-ink class="md-raised md-accent orange-bg">\n      <md-icon md-font-icon="icon-rotate-left" class="icon s16"></md-icon> {{\'JSCRIPTY.RESET_SESSION\' | translate}}\n    </md-button>\n    <md-button ng-if="vm.contact" ng-click="vm.openContact($event, vm.contact)" md-no-ink class="md-raised md-accent" translate="JSCRIPTY.OPEN_CONTACT"></md-button>\n    <md-button ng-if="vm.showIncompleteSubmitButton" ng-click="vm.onSubmit($event, true)" md-no-ink class="md-raised md-accent green-bg" translate="JSCRIPTY.SUBMIT"></md-button>\n  </div>\n  <h1 ng-if="!vm.project.formData"><span translate="JSCRIPTY.PROJECT_NOT_AVAILABLE">Project is not available. Please contact the administrator</span></h1>\n  <mw-form-viewer ng-if="vm.project.formData" form-data="vm.project.formData" response-data="vm.project.responseData" on-submit="vm.onSubmit($event)" template-data="call" api="vm.formViewer"></mw-form-viewer>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/notification/dialog.html",'\x3c!-- <md-toast> --\x3e\n<div class="md-padding" layout="column" layout-align="center center">\n  <span class="md-title">#{{vm.notification.id}} {{vm.notification.title}}</span>\n  <span class="md-subhead" ng-if="vm.notification.queue">{{vm.notification.queue}}</span>\n  <div class="padding-top-5" layout="row">\n    <md-button class="md-raised md-accent" ng-click="vm.accept($event)" translate="DASHBOARDS.ACCEPT">\n      ACCEPT\n    </md-button>\n    <md-button class="md-raised md-warn" ng-click="vm.reject($event)" translate="DASHBOARDS.REJECT">\n      REJECT\n    </md-button>\n  </div>\n</div>\n\x3c!-- </md-toast> --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/popup/agent.general.popup.html",'<md-content class="md-padding" flex>\n  <div ng-if="vm.html" ng-bind-html="vm.html"></div>\n  <h1 ng-if="!vm.html">Template is empty. Please contact the administrator</h1>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/user/chat/user.general.chat.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-hangouts" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.abandoned || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDONED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_MANAGED_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_MANAGED_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_MANAGED_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ABANDONED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.ABANDONED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDONED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/dialer/user.general.dialer.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_MOTION_BULL_STATS">Today Motion Bull STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timelapse"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{(vm.inbound.talking || 0) + (vm.inbound.pTalking || 0)}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TALKING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TALKING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TALKING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-missed"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.outboundDropCallsDayCallersExit || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-outgoing"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.outboundDropCallsDayTimeout || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.DROPPED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.DROPPED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.DROPPED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.originated || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ORIGINATED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.ORIGINATED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ORIGINATED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_TALK_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundanswerRate || 0 |number : 1}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundAbandonRate || 0}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDON_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDON_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundDropRate }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.DROP_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.DROP_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.DROP_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET OUTBOUND --\x3e\n\n\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_IVR_CAMPAIGNS_STATS">Today IVR campaigns stats</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.ivr.originated || 0}}/{{vm.ivr.limitCalls || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ORIGINATED\' | translate | uppercase}}/{{\'DASHBOARDS.LIMITED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.LIMITED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ORIGINATEDLIMITED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET IVR --\x3e'),e.put("app/main/apps/dashboards/views/general/user/fax/user.general.fax.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-deskphone" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/mail/user.general.mail.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-email" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/openchannel/user.general.openchannel.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-google-earth" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/sms/user.general.sms.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-message-text" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/user.general.html",'<div id="dashboard-general" ng-init="vm.onInit()" class="page-layout simple right-sidenav" layout="row">\n  \x3c!-- CENTER --\x3e\n  <div class="center" flex ms-scroll>\n    \x3c!-- CONTENT --\x3e\n    <div class="content">\n      <md-tabs ng-if="vm.hasDashboardPermissions" md-selected="vm.selectedTab" md-dynamic-height>\n        <md-tab ng-if="vm.license.voice" label="{{\'DASHBOARDS.VOICE\' | translate}}" ui-sref="app.dashboards.general.voice">\n          <div ui-view="voice"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.dialer" label="{{\'DASHBOARDS.MOTIONDIALER\' | translate}}" ui-sref="app.dashboards.general.dialer">\n          <div ui-view="dialer"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.chat" label="{{\'DASHBOARDS.CHAT\' | translate}}" ui-sref="app.dashboards.general.chat">\n          <div ui-view="chat"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.mail" label="{{\'DASHBOARDS.MAIL\' | translate}}" ui-sref="app.dashboards.general.mail">\n          <div ui-view="mail"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.messaging" label="{{\'DASHBOARDS.SMS\' | translate}}" ui-sref="app.dashboards.general.sms">\n          <div ui-view="sms"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.openchannel" label="{{\'DASHBOARDS.OPENCHANNEL\' | translate}}" ui-sref="app.dashboards.general.openchannel">\n          <div ui-view="openchannel"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.fax" label="{{\'DASHBOARDS.FAX\' | translate}}" ui-sref="app.dashboards.general.fax">\n          <div ui-view="fax"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.whatsapp" label="{{\'DASHBOARDS.WHATSAPP\' | translate}}" ui-sref="app.dashboards.general.whatsapp">\n          <div ui-view="whatsapp"></div>\n        </md-tab>\n      </md-tabs>\n    </div>\n    \x3c!-- END CONTENT --\x3e\n\n    <md-content ng-if="!vm.hasDashboardPermissions" layout="row" layout-align="space-around center" flex layout-padding layout-wrap>\n      <div layout="column" layout-align="space-around center" flex="50">\n        <span class="font-size-40 text-center">{{ \'DASHBOARDS.WELCOME_TO_MOTION\' | translate }}!</span>\n        <span class="font-size-30 text-center" translate="DASHBOARDS.WELCOME_MESSAGE">Use the left sidebar to\n          navigate through available sections.</span>\n      </div>\n\n      <div layout="column" flex="50">\n        <img src="assets/images/avatars/permissions.png" alt="permissions">\n      </div>\n    </md-content>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/user/voice/user.general.voice.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-incoming" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INBOUND_STATS">Today Inbound STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timelapse"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TALKING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TALKING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TALKING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-missed"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.abandoned || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ABANDONED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-incoming"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timer-sand"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_TALK_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDON_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDON_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e\n\n\x3c!-- WIDGET OUTBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_OUTBOUND_STATS">Today Outbound STATS</div>\n  </div>\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-outgoing"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.outbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.outbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OUTBOUND_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.OUTBOUND_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OUTBOUND_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-clock"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{vm.outbound.sumDuration || 0 | secToTime | date:\'HH:mm:ss\'}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOT_DURATION\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.TOT_DURATION_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOT_DURATION\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-division"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{vm.outbound.total ? ((vm.outbound.sumDuration / vm.outbound.total) | number: 0) : 0 | secToTime | date:\'HH:mm:ss\'}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_DURATION\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_DURATION_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_DURATION\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-42 line-height-72">\n            {{vm.outbound.total ? (vm.outbound.answered / vm.outbound.total * 100) : 0 | number: 1}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OUTBOUND_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.OUTBOUND_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OUTBOUND_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET OUTBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/whatsapp/user.general.whatsapp.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-whatsapp" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/fax/views/faxAccounts/create/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.faxAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="faxAccountForm[\'name\'].$error" ng-show="faxAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.faxAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="faxAccountForm[\'key\'].$error" ng-show="faxAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="FAX.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TRUNK">trunk</label>\n        <md-select name="TrunkId" ng-model="vm.faxAccount.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountForm[\'TrunkId\'].$error" ng-show="faxAccountForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TRUNK_REQUIRED">trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.LOCALSTATIONID">localstationid</label>\n        <input type="text" name="localstationid" ng-model="vm.faxAccount.localstationid" ng-required="true">\n\n        <div class="hint"><span translate="FAX.HELP.LOCALSTATIONID"></span></div>\n        <div ng-messages="faxAccountForm[\'localstationid\'].$error" ng-show="faxAccountForm[\'localstationid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.LOCALSTATIONID_REQUIRED">localstationid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.faxAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountForm[\'ListId\'].$error" ng-show="faxAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.faxAccount.description">\n\n        <div ng-messages="faxAccountForm[\'description\'].$error" ng-show="faxAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFaxAccount" ng-click="vm.saveFaxAccount()" class="send-button md-accent md-raised" ng-disabled="faxAccountForm.$invalid || faxAccountForm.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFaxAccount" ng-click="vm.addNewFaxAccount()" class="send-button md-accent md-raised" ng-disabled="faxAccountForm.$invalid" aria-label="ADD" translate="FAX.ADD_FAXACCOUNT" translate-attr-aria-label="FAX.ADD_FAXACCOUNT">\n          ADD FAXACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFaxAccount" ng-click="vm.deleteFaxAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="FAX.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="FAX.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",'<md-dialog class="faxAccount-dialog" aria-label="faxAccount" ng-init="vm.onInit()">\n  <form name="faxAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.AGENTADD_FAXACCOUNT">Add Agent to faxAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/agent/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'agent\'].$error" ng-show="faxAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'timeout\'].$error" ng-show="faxAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/close/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'disposition\'].$error" ng-show="faxAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'condition\'].$error" ng-show="faxAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'truepriority\'].$error" ng-show="faxAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'falsepriority\'].$error" ng-show="faxAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'priority\'].$error" ng-show="faxAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/noop/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'value\'].$error" ng-show="faxAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/queue/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'queue\'].$error" ng-show="faxAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'timeout\'].$error" ng-show="faxAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/system/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'command\'].$error" ng-show="faxAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'variable\'].$error" ng-show="faxAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/tag/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'tag\'].$error" ng-show="faxAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/view.html",'<div id="fax-faxAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-faxAccounts-button md-icon-button" aria-label="Go to faxAccounts" ng-click="vm.gotoFaxAccounts()" translate translate-attr-aria-label="FAX.GO_TO_FAXACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="faxAccount-image" hide-xs>\n          <img ng-src="assets/images/business/faxAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.faxAccount.id}}\n            <span ng-if="vm.faxAccount.name">{{vm.faxAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="FAX.CREATED_AT"></span> <span>{{vm.faxAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.faxAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="FAX.GOTO_FAXACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.faxAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="FAX.AGENTADD_FAXACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFaxAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (advancedForm.$invalid) || (dispositionForm.$invalid) || (faxDispositionsForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.faxAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.faxAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="FAX.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.HEADERINFO">headerinfo</label>\n                <input type="text" name="headerinfo" ng-model="vm.faxAccount.headerinfo" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.HEADERINFO"></span></div>\n                <div ng-messages="generalForm[\'headerinfo\'].$error" ng-show="generalForm[\'headerinfo\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.HEADERINFO_REQUIRED">headerinfo field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.TRUNK">trunk</label>\n                <md-select name="TrunkId" ng-model="vm.faxAccount.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.TRUNK_REQUIRED">trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.LOCALSTATIONID">localstationid</label>\n                <input type="text" name="localstationid" ng-model="vm.faxAccount.localstationid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.LOCALSTATIONID"></span></div>\n                <div ng-messages="generalForm[\'localstationid\'].$error" ng-show="generalForm[\'localstationid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.LOCALSTATIONID_REQUIRED">localstationid field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.faxAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.faxAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.faxAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="FAX.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.faxAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.queueTransfer == true" class="md-block">\n                <label translate="FAX.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.faxAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.agentTransfer == true" class="md-block">\n                <label translate="FAX.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.faxAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.ECM">ECM</label>\n                <md-select name="ecm" ng-model="vm.faxAccount.ecm" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.ECM"></span></div>\n                <div ng-messages="advancedForm[\'ecm\'].$error" ng-show="advancedForm[\'ecm\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.ECM_REQUIRED">ECM field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MINRATE">minrate</label>\n                <md-select name="minrate" ng-model="vm.faxAccount.minrate" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'2400\'">2400</md-option>\n                  <md-option ng-value="\'4800\'">4800</md-option>\n                  <md-option ng-value="\'7200\'">7200</md-option>\n                  <md-option ng-value="\'9600\'">9600</md-option>\n                  <md-option ng-value="\'12000\'">12000</md-option>\n                  <md-option ng-value="\'14400\'">14400</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MINRATE"></span></div>\n                <div ng-messages="advancedForm[\'minrate\'].$error" ng-show="advancedForm[\'minrate\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MINRATE_REQUIRED">minrate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MAXRATE">maxrate</label>\n                <md-select name="maxrate" ng-model="vm.faxAccount.maxrate" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'2400\'">2400</md-option>\n                  <md-option ng-value="\'4800\'">4800</md-option>\n                  <md-option ng-value="\'7200\'">7200</md-option>\n                  <md-option ng-value="\'9600\'">9600</md-option>\n                  <md-option ng-value="\'12000\'">12000</md-option>\n                  <md-option ng-value="\'14400\'">14400</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MAXRATE"></span></div>\n                <div ng-messages="advancedForm[\'maxrate\'].$error" ng-show="advancedForm[\'maxrate\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MAXRATE_REQUIRED">maxrate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MODEM">modem</label>\n                <input type="text" name="modem" ng-model="vm.faxAccount.modem" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.MODEM"></span></div>\n                <div ng-messages="advancedForm[\'modem\'].$error" ng-show="advancedForm[\'modem\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MODEM_REQUIRED">modem field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.GATEWAY">gateway</label>\n                <input type="text" name="gateway" ng-model="vm.faxAccount.gateway" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.GATEWAY"></span></div>\n                <div ng-messages="advancedForm[\'gateway\'].$error" ng-show="advancedForm[\'gateway\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.GATEWAY_REQUIRED">gateway field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.FAXDETECT">faxdetect</label>\n                <input type="text" name="faxdetect" ng-model="vm.faxAccount.faxdetect" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.FAXDETECT"></span></div>\n                <div ng-messages="advancedForm[\'faxdetect\'].$error" ng-show="advancedForm[\'faxdetect\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.FAXDETECT_REQUIRED">faxdetect field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.T38TIMEOUT">t38timeout</label>\n                <input type="number" name="t38timeout" ng-model="vm.faxAccount.t38timeout" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.T38TIMEOUT"></span></div>\n                <div ng-messages="advancedForm[\'t38timeout\'].$error" ng-show="advancedForm[\'t38timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.T38TIMEOUT_REQUIRED">t38timeout field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.SIP">SIP</label>\n                <md-select name="tech" ng-model="vm.faxAccount.tech" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'SIP\'">SIP</md-option>\n                  <md-option ng-value="\'IAX\'">IAX</md-option>\n                  <md-option ng-value="\'DADHI\'">DADHI</md-option>\n                  <md-option ng-value="\'KHOMP\'">KHOMP</md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'tech\'].$error" ng-show="advancedForm[\'tech\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.SIP_REQUIRED">SIP field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.mandatoryDisposition" class="md-block">\n                <label translate="FAX.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.faxAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="FaxAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.faxAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="faxAccount-detail-form-container faxdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedFaxAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="FAX.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add fax dispositions" translate translate-attr-label="FAX.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="faxAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'FAX.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="FaxAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.faxAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="FAX.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedFaxAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedFaxAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedFaxAccountApps.length}} {{vm_ac.selectedFaxAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedFaxAccountApps($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedFaxAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.faxAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editFaxAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.faxAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="FaxAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.faxAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedFaxAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="FAX.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getFaxAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getFaxAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getFaxAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="FAX.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedFaxAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedFaxAccountInteractions.length}} {{vm_dc.selectedFaxAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedFaxAccountInteractions" csv-label="true" filename="faxAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedFaxAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedFaxAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getFaxAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'FAX.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'FAX.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'FAX.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'FAX.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'FAX.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'FAX.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'FAX.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.faxAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'FAX.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'FAX.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spyfaxInteraction($event, interaction)" translate="FAX.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.faxInteractionDownload(interaction, $event)" translate="FAX.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="FAX.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.faxAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="FAX.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.faxAccountInteractions.count}}" md-on-paginate="vm_dc.getFaxAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/fax/views/faxAccounts/faxAccounts.html",'<div id="faxAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-deskphone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="FAX.FAXACCOUNTS">FaxAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="FAX.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFaxAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFaxAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="FAX.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-faxAccounts-count">\n          <span>{{vm.selectedFaxAccounts.length}}</span>\n          <span translate="FAX.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="FAX.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFaxAccounts()" translate="FAX.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFaxAccounts()" translate="FAX.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFaxAccounts" csv-label="true" filename="faxAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFaxAccounts($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- FAXACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFaxAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'FAX.KEY\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'FAX.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="localstationid">{{ \'FAX.LOCALSTATIONID\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'FAX.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.faxAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="faxAccount" md-select-id="id" ng-repeat="faxAccount in vm.faxAccounts.rows">\n                <td md-cell ng-if="faxAccount.userpic"><img class="avatar" alt="{{faxAccount.name}}" ng-src="api/users/{{faxAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!faxAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{faxAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="id ">{{faxAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="name ">{{faxAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="key ">{{faxAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':faxAccount.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="localstationid ">{{faxAccount.localstationid}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="description ">{{faxAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(faxAccount, $event    )" translate="FAX.EDIT_FAXACCOUNT">\n                          Edit FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(faxAccount, $event    )" translate="FAX.INTERACTIONS_FAXACCOUNT">\n                          Interactions FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(faxAccount, $event    )" translate="FAX.GOTOREALTIME_FAXACCOUNT">\n                          goToRealtime FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(faxAccount, $event    )" translate="FAX.AGENTADD_FAXACCOUNT">\n                          AgentAdd FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(faxAccount, $event    )" translate="FAX.DELETE_FAXACCOUNT">\n                          Delete FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxAccounts.count}}" md-on-paginate="vm.getFaxAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FAXACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FAXACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-faxAccount-button" ng-click="vm.createOrEditFaxAccount($event)" aria-label="add faxAccount" translate translate-attr-aria-label="FAX.ADD_FAXACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FAXACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/fax/views/faxQueues/create/dialog.html",'<md-dialog class="faxQueue-dialog" aria-label="New FaxQueue">\n  <form name="faxQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.faxQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newFaxQueue">\n\n        <div class="hint"><span translate="FAX.HELP.NAME"></span></div>\n        <div ng-messages="faxQueueForm[\'name\'].$error" ng-show="faxQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="FAX.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.faxQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="faxQueueForm[\'strategy\'].$error" ng-show="faxQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.faxQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="faxQueueForm[\'timeout\'].$error" ng-show="faxQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.faxQueue.description">\n\n        <div ng-messages="faxQueueForm[\'description\'].$error" ng-show="faxQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFaxQueue" ng-click="vm.saveFaxQueue()" class="send-button md-accent md-raised" ng-disabled="faxQueueForm.$invalid || faxQueueForm.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFaxQueue" ng-click="vm.addNewFaxQueue()" class="send-button md-accent md-raised" ng-disabled="faxQueueForm.$invalid" aria-label="ADD" translate="FAX.ADD_FAXQUEUE" translate-attr-aria-label="FAX.ADD_FAXQUEUE">\n          ADD FAXQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFaxQueue" ng-click="vm.deleteFaxQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="FAX.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="FAX.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",'<md-dialog class="faxQueue-dialog" aria-label="faxQueue" ng-init="vm.onInit()">\n  <form name="faxQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.AGENTADD_FAXQUEUE">Add Agent to faxQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",'<md-dialog class="faxQueue-dialog" aria-label="faxQueue" ng-init="vm.onInit()">\n  <form name="faxQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/view.html",'<div id="fax-faxQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-faxQueues-button md-icon-button" aria-label="Go to faxQueues" ng-click="vm.gotoFaxQueues()" translate translate-attr-aria-label="FAX.GO_TO_FAXQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="faxQueue-image" hide-xs>\n          <img ng-src="assets/images/business/faxQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.faxQueue.id}}\n            <span ng-if="vm.faxQueue.name">{{vm.faxQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="FAX.CREATED_AT"></span> <span>{{vm.faxQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.faxQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="FAX.TEAMADD_FAXQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.faxQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="FAX.AGENTADD_FAXQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFaxQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.faxQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="FAX.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="FAX.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.faxQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.faxQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.faxQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/fax/views/faxQueues/faxQueues.html",'<div id="faxQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-deskphone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="FAX.FAXQUEUES">FaxQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="FAX.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFaxQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFaxQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="FAX.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-faxQueues-count">\n          <span>{{vm.selectedFaxQueues.length}}</span>\n          <span translate="FAX.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="FAX.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFaxQueues()" translate="FAX.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFaxQueues()" translate="FAX.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFaxQueues" csv-label="true" filename="faxQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFaxQueues($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- FAXQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFaxQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'FAX.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.faxQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="faxQueue" md-select-id="id" ng-repeat="faxQueue in vm.faxQueues.rows">\n                <td md-cell ng-if="faxQueue.userpic"><img class="avatar" alt="{{faxQueue.name}}" ng-src="api/users/{{faxQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!faxQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{faxQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="id ">{{faxQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="name ">{{faxQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="strategy ">{{ vm.arraystrategy[faxQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(faxQueue, $event    )" translate="FAX.EDIT_FAXQUEUE">\n                          Edit FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(faxQueue, $event    )" translate="FAX.TEAMADD_FAXQUEUE">\n                          teamadd FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(faxQueue, $event    )" translate="FAX.AGENTADD_FAXQUEUE">\n                          agentadd FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(faxQueue, $event    )" translate="FAX.DELETE_FAXQUEUE">\n                          Delete FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(faxQueue, $event    )" translate="FAX.GOTOREALTIME_FAXQUEUE">\n                          goToRealtime FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxQueues.count}}" md-on-paginate="vm.getFaxQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FAXQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FAXQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-faxQueue-button" ng-click="vm.createOrEditFaxQueue($event)" aria-label="add faxQueue" translate translate-attr-aria-label="FAX.ADD_FAXQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FAXQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/fax/views/realtime/accounts/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.ACCOUNTS">Accounts</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.vm.getFaxAccounts()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxAccounts">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate}}</th>\n        <th md-column>{{\'FAX.KEY\' | translate}}</th>\n        <th md-column>{{\'FAX.TOTAL\' | translate}}</th>\n        <th md-column>{{\'FAX.IN\' | translate}}</th>\n        <th md-column>{{\'FAX.OUT\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.faxAccounts">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="vm.faxAccounts[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td md-cell>{{vm.faxAccounts[value].name}}</td>\n        <td md-cell>{{vm.faxAccounts[value].key}}</td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(vm.faxAccounts[value].in || 0) + (vm.faxAccounts[value].out || 0)}}</span>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-down-bold blue-fg"></md-icon>\n            </span>\n            <span class="md-capture blue-fg">{{vm.faxAccounts[value].in || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.in">{{vm.faxAccounts[value].lastIn ?  (vm.faxAccounts[value].lastIn | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-up-bold green-fg"></md-icon>\n            </span>\n            <span class="md-capture green-fg">{{vm.faxAccounts[value].out || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.out">{{vm.faxAccounts[value].lastOut ?  (vm.faxAccounts[value].lastOut | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-button ng-click="vm.goToFaxAccount($event, vm.faxAccounts[value])" translate="FAX.EDIT_ACCOUNT">\n                  Edit Account\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getFaxAccounts" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/fax/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n        <th md-column>{{ \'FAX.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'FAX.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'FAX.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="FAX.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="FAX.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/fax/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.TRUNKS">Trunks</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ACCOUNTS">Accounts</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/fax/views/realtime/trunks/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.TRUNKS">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTrunks()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- TRUNKS TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head>\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n        <tr md-row>\n          <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n          <th md-column>{{ \'FAX.TRUNK_STATUS\' | translate }}</th>\n          <th md-column>{{ \'FAX.REGISTRY\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.trunks">\n        <td md-cell colspan="3">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, trunk) in vm.trunks">\n        <td md-cell>{{trunk.name}}</td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[trunk.status.toLowerCase()]">\n            <md-tooltip>{{\'FAX.\' + trunk.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.status === \'registered\'" class="text-boxed">{{trunk.address}}</span>\n        </td>\n        <td md-cell>\n          <i ng-if="trunk.registry" ng-class="(trunk.stateRegistry.toLowerCase() === \'registered\') ? \'green-300-fg icon-checkbox-marked-circle\' : \'red-300-fg icon-close-circle\'">\n            <md-tooltip>{{\'FAX.\' + trunk.stateRegistry | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.registry && trunk.host && trunk.port" class="text-boxed">{{trunk.host}}:{{trunk.port}}</span>\n          <span ng-if="!trunk.registry" translate="FAX.NO_REGISTRY">\n            No Registry\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item>\n                <md-button ng-click="vm.goToTrunk($event, trunk)" translate="FAX.EDIT_TRUNK">\n                  Edit Trunk\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n\x3c!-- / TRUNKS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/help/views/about/about.html",'<div id="maintenance" class="flex-scrollable" layout="column" ms-scroll>\n  <div id="maintenance-form-wrapper" layout="column" layout-align="center center">\n    <div id="maintenance-form" class="md-whiteframe-8dp">\n      <div>\n        <img src="/api/settings/1/logo_login" alt="logo_login" />\n      </div>\n\n      <br>\n\n      <div>\n        <div class="info-line">\n          <div class="title">Useful pages</div>\n        </div>\n        <section layout="row" flex layout-sm="column" layout-align="center center" layout-wrap>\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button grey-bg" href="https://wiki.xcallymotion.com/display/XMV" target="_blank">\n              <md-icon md-font-icon="icon-wikipedia"></md-icon>\n            </a>\n            <div class="info"><a href="https://wiki.xcallymotion.com/display/XMV" target="_blank">Wiki</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button md-accent" href="/apidoc" target="_blank">\n              <md-icon md-font-icon="icon-apple-mobileme"></md-icon>\n            </a>\n            <div class="info"><a href="/apidoc" target="_blank">Motion API</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button orange-bg" href="http://www.xcally.com/bar/phonebar/Setup.msi" target="_blank">\n              <md-icon md-font-icon="icon-headphones"></md-icon>\n            </a>\n            <div class="info"><a href="https://www.xcally.com/bar/phonebar/Setup.msi" target="_blank">Phonebar Download</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button green-bg" href="/demo" target="_blank">\n              <md-icon md-font-icon="icon-console"></md-icon>\n            </a>\n            <div class="info"><a href="/demo" target="_blank">Playground</a></div>\n          </div>\n\n        </section>\n\n        <br>\n\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="title">Follow us on</div>\n        </div>\n        <section ng-if="!vm.license.custom" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n          <a class="md-fab md-mini md-button blue-900-bg" href="https://www.facebook.com/xcallymotion" target="_blank">\n            <md-icon md-font-icon="icon-facebook"></md-icon>\n          </a>\n\n          <a class="md-fab md-mini md-button" href="https://twitter.com/xcallymotion" target="_blank">\n            <md-icon md-font-icon="icon-twitter"></md-icon>\n          </a>\n          <a class="md-fab md-mini md-button md-warn" href="https://plus.google.com/+Xcally" target="_blank">\n            <md-icon md-font-icon="icon-google-plus"></md-icon>\n          </a>\n          <a class="md-fab md-mini md-button light-blue-800-bg" href="https://www.linkedin.com/company/xcally" target="_blank">\n            <md-icon md-font-icon="icon-linkedin"></md-icon>\n          </a>\n        </section>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="title" translate="HELP.CONTACT_US">Contact Us</div>\n        </div>\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="info"><a href="mailto:support@xcally.com" target="_top">support@xcally.com</a></div>\n        </div>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info">xCALLY Motion <u>{{vm.info.current}}</u> | <a href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.info.current}}" target="_blank">Changelog</a></div>\n\n        <br>\n\n        <div class="info" ng-if="!vm.license.custom">xCALLY© 2016 - 2018 | Powered by Xenialab | <a href="http://www.xcally.com/support/eula-xcally-license-en.pdf" target="_blank">EULA</a></div>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info" ng-if="!vm.license.custom"><a href="https://www.xenialab.com/" target="_blank">www.xenialab.com</a> | <a href="https://www.xcallymotion.com/" target="_blank">www.xcallymotion.com</a></div>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/integrations/views/deskAccounts/create/dialog.html",'<md-dialog class="deskAccount-dialog" aria-label="New DeskAccount">\n  <form name="deskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.deskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="deskAccountForm[\'name\'].$error" ng-show="deskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.deskAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskAccountForm[\'type\'].$error" ng-show="deskAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.deskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="deskAccountForm[\'remoteUri\'].$error" ng-show="deskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n        <md-select name="authType" ng-model="vm.deskAccount.authType" required>\n          <md-option ng-value="\'basic\'">Basic</md-option>\n        </md-select>\n        <div ng-messages="deskAccountForm[\'authType\'].$error" ng-show="deskAccountForm[\'authType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.deskAccount.authType == \'basic\'" class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.deskAccount.username" ng-required="true">\n\n        <div ng-messages="deskAccountForm[\'username\'].$error" ng-show="deskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.deskAccount.authType == \'basic\'">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.deskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="deskAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.deskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="deskAccountForm[\'serverUrl\'].$error" ng-show="deskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.deskAccount.description">\n\n        <div ng-messages="deskAccountForm[\'description\'].$error" ng-show="deskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDeskAccount" ng-click="vm.saveDeskAccount()" class="send-button md-accent md-raised" ng-disabled="deskAccountForm.$invalid || deskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDeskAccount" ng-click="vm.addNewDeskAccount()" class="send-button md-accent md-raised" ng-disabled="deskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_DESKACCOUNT">\n          ADD DESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDeskAccount" ng-click="vm.deleteDeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/deskAccounts/deskAccounts.html",'<div id="deskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.DESKACCOUNTS">DeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDeskAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedDeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-deskAccounts-count">\n          <span>{{vm.selectedDeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDeskAccounts" csv-label="true" filename="deskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- DESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedDeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.deskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="deskAccount" md-select-id="id" ng-repeat="deskAccount in vm.deskAccounts.rows">\n                <td md-cell ng-if="deskAccount.userpic"><img class="avatar" alt="{{deskAccount.name}}" ng-src="api/users/{{deskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!deskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{deskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="id ">{{deskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="name ">{{deskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="remoteUri ">{{deskAccount.remoteUri}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="username ">{{deskAccount.username}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(deskAccount, $event    )" translate="INTEGRATIONS.EDIT_DESKACCOUNT">\n                          Edit DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(deskAccount, $event    )" translate="INTEGRATIONS.TEST_DESKACCOUNT">\n                          Test DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(deskAccount, $event    )" translate="INTEGRATIONS.DELETE_DESKACCOUNT">\n                          Delete DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.deskAccounts.count}}" md-on-paginate="vm.getDeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / DESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD DESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-deskAccount-button" ng-click="vm.createOrEditDeskAccount($event)" aria-label="add deskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_DESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/configurations/dialog.html",'<md-dialog class="deskConfiguration-dialog" aria-label="New DeskConfiguration">\n  <form name="deskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.deskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="deskConfigurationForm[\'name\'].$error" ng-show="deskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.deskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskConfigurationForm[\'channel\'].$error" ng-show="deskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.deskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskConfigurationForm[\'type\'].$error" ng-show="deskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDeskConfiguration" ng-click="vm.saveDeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="deskConfigurationForm.$invalid || deskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDeskConfiguration" ng-click="vm.addNewDeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="deskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_DESKCONFIGURATION">\n          ADD DESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDeskConfiguration" ng-click="vm.deleteDeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",'<md-dialog class="deskAccount-item-dialog" aria-label="New Item">\n  <form name="deskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="deskAccountItemForm.content.$error" ng-show="deskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="deskAccountItemForm.key.$error" ng-show="deskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="deskAccountItemForm.keyType.$error" ng-show="deskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="deskAccountItemForm.keyContent.$error" ng-show="deskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="deskAccountItemForm.variableName.$error" ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="deskAccountItemForm.customField.$error" ng-show="deskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="deskAccountItemForm.$invalid || deskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="deskAccountItemForm.$invalid || deskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="deskAccountItemForm.option.$error" ng-show="deskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="deskAccountItemForm.content.$error" ng-show="deskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="deskAccountItemForm.variableName.$error" ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="deskAccountItemForm.content.$error"\n          ng-show="deskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="deskAccountItemForm.variableName.$error"\n          ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/view.html",'<div id="integrations-deskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-deskAccounts-button md-icon-button" aria-label="Go to deskAccounts" ng-click="vm.gotoDeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_DESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="deskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/deskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.deskAccount.id}}\n            <span ng-if="vm.deskAccount.name">{{vm.deskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.deskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveDeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="deskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.deskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.deskAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.deskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n                <md-select name="authType" ng-model="vm.deskAccount.authType" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'basic\'">Basic</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'authType\'].$error" ng-show="generalForm[\'authType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.deskAccount.authType == \'basic\'" class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.deskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.deskAccount.authType == \'basic\'">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.deskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.deskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.deskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="deskAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="DeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.deskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDeskConfiguration($event)" class="md-icon-button" aria-label="create deskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="deskConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedDeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getDeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ deskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteDeskConfiguration($event, deskConfiguration)" translate="INTEGRATIONS.DELETE_DESKCONFIGURATION">\n                            Delete DeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/create/dialog.html",'<md-dialog class="dynamics365Account-dialog" aria-label="New Dynamics365Account">\n  <form name="dynamics365AccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.dynamics365Account.name" ng-required="true" autofocus>\n\n        <div ng-messages="dynamics365AccountForm[\'name\'].$error" ng-show="dynamics365AccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.dynamics365Account.username" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'username\'].$error" ng-show="dynamics365AccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.dynamics365Account.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="dynamics365AccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.dynamics365Account.remoteUri" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'remoteUri\'].$error" ng-show="dynamics365AccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TENANTID">TenantId</label>\n        <input type="text" name="tenantId" ng-model="vm.dynamics365Account.tenantId" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'tenantId\'].$error" ng-show="dynamics365AccountForm[\'tenantId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TENANTID_REQUIRED">TenantId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n        <input type="text" name="clientId" ng-model="vm.dynamics365Account.clientId" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'clientId\'].$error" ng-show="dynamics365AccountForm[\'clientId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n        <input type="text" name="clientSecret" ng-model="vm.dynamics365Account.clientSecret" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'clientSecret\'].$error" ng-show="dynamics365AccountForm[\'clientSecret\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.dynamics365Account.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="dynamics365AccountForm[\'serverUrl\'].$error" ng-show="dynamics365AccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.dynamics365Account.description">\n\n        <div ng-messages="dynamics365AccountForm[\'description\'].$error" ng-show="dynamics365AccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDynamics365Account" ng-click="vm.saveDynamics365Account()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountForm.$invalid || dynamics365AccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDynamics365Account" ng-click="vm.addNewDynamics365Account()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DYNAMICS365ACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_DYNAMICS365ACCOUNT">\n          ADD DYNAMICS365ACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDynamics365Account" ng-click="vm.deleteDynamics365Account($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/dynamics365Accounts.html",'<div id="dynamics365Accounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.DYNAMICS365ACCOUNTS">Dynamics365Accounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDynamics365Accounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedDynamics365Accounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-dynamics365Accounts-count">\n          <span>{{vm.selectedDynamics365Accounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDynamics365Accounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDynamics365Accounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDynamics365Accounts" csv-label="true" filename="dynamics365Accounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDynamics365Accounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- DYNAMICS365ACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedDynamics365Accounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDynamics365Accounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.dynamics365Accounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="dynamics365Account" md-select-id="id" ng-repeat="dynamics365Account in vm.dynamics365Accounts.rows">\n                <td md-cell ng-if="dynamics365Account.userpic"><img class="avatar" alt="{{dynamics365Account.name}}" ng-src="api/users/{{dynamics365Account.id}}/avatar" /></td>\n                <td md-cell ng-if="!dynamics365Account.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{dynamics365Account.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="id ">{{dynamics365Account.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="name ">{{dynamics365Account.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="username ">{{dynamics365Account.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="remoteUri ">{{dynamics365Account.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(dynamics365Account, $event    )" translate="INTEGRATIONS.EDIT_DYNAMICS365ACCOUNT">\n                          Edit Dynamics365Account\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(dynamics365Account, $event    )" translate="INTEGRATIONS.TEST_DYNAMICS365ACCOUNT">\n                          Test Dynamics365Account\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.crudPermissions === 0 || vm.currentUser.role === \'admin\'">\n\n                        <md-button ng-click="vm.deleteconfirm(dynamics365Account, $event    )" translate="INTEGRATIONS.DELETE_DYNAMICS365ACCOUNT">\n                          Delete Dynamics365Account\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.dynamics365Accounts.count}}" md-on-paginate="vm.getDynamics365Accounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / DYNAMICS365ACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD DYNAMICS365ACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-dynamics365Account-button" ng-click="vm.createOrEditDynamics365Account($event)" aria-label="add dynamics365Account" translate translate-attr-aria-label="INTEGRATIONS.ADD_DYNAMICS365ACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DYNAMICS365ACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/edit/configurations/dialog.html",'<md-dialog class="dynamics365Configuration-dialog" aria-label="New Dynamics365Configuration">\n  <form name="dynamics365ConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.dynamics365Configuration.name" ng-required="true" autofocus>\n\n        <div ng-messages="dynamics365ConfigurationForm[\'name\'].$error" ng-show="dynamics365ConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.dynamics365Configuration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dynamics365ConfigurationForm[\'channel\'].$error" ng-show="dynamics365ConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.dynamics365Configuration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dynamics365ConfigurationForm[\'type\'].$error" ng-show="dynamics365ConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TICKETTYPE">TicketType</label>\n        <md-select name="ticketType" ng-model="vm.dynamics365Configuration.ticketType" required>\n\n          <md-option ng-value="\'incident\'"> {{ \'INTEGRATIONS.CASE\' | translate }} </md-option>\n\n          <md-option ng-value="\'phonecall\'"> {{ \'INTEGRATIONS.PHONECALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dynamics365ConfigurationForm[\'ticketType\'].$error" ng-show="dynamics365ConfigurationForm[\'ticketType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TICKETTYPE_REQUIRED">TicketType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDynamics365Configuration" ng-click="vm.saveDynamics365Configuration()" class="send-button md-accent md-raised" ng-disabled="dynamics365ConfigurationForm.$invalid || dynamics365ConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDynamics365Configuration" ng-click="vm.addNewDynamics365Configuration()" class="send-button md-accent md-raised" ng-disabled="dynamics365ConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DYNAMICS365CONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_DYNAMICS365CONFIGURATION">\n          ADD DYNAMICS365CONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDynamics365Configuration" ng-click="vm.deleteDynamics365Configuration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",'<md-dialog class="dynamics365Account-item-dialog" aria-label="New Item">\n  <form name="dynamics365AccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="dynamics365AccountItemForm.type.$error" ng-show="dynamics365AccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="dynamics365AccountItemForm.content.$error" ng-show="dynamics365AccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="dynamics365AccountItemForm.key.$error" ng-show="dynamics365AccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="dynamics365AccountItemForm.keyType.$error" ng-show="dynamics365AccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="dynamics365AccountItemForm.keyContent.$error" ng-show="dynamics365AccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="dynamics365AccountItemForm.variableName.$error" ng-show="dynamics365AccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="dynamics365AccountItemForm.customField.$error" ng-show="dynamics365AccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountItemForm.$invalid || dynamics365AccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountItemForm.$invalid || dynamics365AccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="dynamics365AccountItemForm.type.$error" ng-show="dynamics365AccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="dynamics365AccountItemForm.option.$error" ng-show="dynamics365AccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="dynamics365AccountItemForm.content.$error" ng-show="dynamics365AccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="dynamics365AccountItemForm.variableName.$error" ng-show="dynamics365AccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="dynamics365AccountItemForm.type.$error" ng-show="dynamics365AccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="dynamics365AccountItemForm.content.$error"\n          ng-show="dynamics365AccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="dynamics365AccountItemForm.variableName.$error"\n          ng-show="dynamics365AccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/edit/view.html",'<div id="integrations-dynamics365Account" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-dynamics365Accounts-button md-icon-button" aria-label="Go to dynamics365Accounts" ng-click="vm.gotoDynamics365Accounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_DYNAMICS365ACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="dynamics365Account-image" hide-xs>\n          <img ng-src="assets/images/business/dynamics365Accounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.dynamics365Account.id}}\n            <span ng-if="vm.dynamics365Account.name">{{vm.dynamics365Account.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.dynamics365Account.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveDynamics365Account()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="dynamics365Account-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.dynamics365Account.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.dynamics365Account.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.dynamics365Account.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.dynamics365Account.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TENANTID">TenantId</label>\n                <input type="text" name="tenantId" ng-model="vm.dynamics365Account.tenantId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'tenantId\'].$error" ng-show="generalForm[\'tenantId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TENANTID_REQUIRED">TenantId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n                <input type="text" name="clientId" ng-model="vm.dynamics365Account.clientId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientId\'].$error" ng-show="generalForm[\'clientId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n                <input type="text" name="clientSecret" ng-model="vm.dynamics365Account.clientSecret" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientSecret\'].$error" ng-show="generalForm[\'clientSecret\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.dynamics365Account.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.dynamics365Account.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="dynamics365Account-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="Dynamics365AccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.dynamics365Account, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDynamics365Configuration($event)" class="md-icon-button" aria-label="create dynamics365Configuration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="dynamics365Configuration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedDynamics365Configuration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getDynamics365Configuration($index)">\n                    <span class="text-truncate" flex="80">{{ dynamics365Configuration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteDynamics365Configuration($event, dynamics365Configuration)" translate="INTEGRATIONS.DELETE_DYNAMICS365CONFIGURATION">\n                            Delete Dynamics365Configuration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDynamics365Configuration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/create/dialog.html",'<md-dialog class="freshdeskAccount-dialog" aria-label="New FreshdeskAccount">\n  <form name="freshdeskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.freshdeskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshdeskAccountForm[\'name\'].$error" ng-show="freshdeskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.freshdeskAccount.username" ng-required="true">\n\n        <div ng-messages="freshdeskAccountForm[\'username\'].$error" ng-show="freshdeskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.freshdeskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="freshdeskAccountForm[\'remoteUri\'].$error" ng-show="freshdeskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.freshdeskAccount.apiKey" ng-required="true">\n\n        <div ng-messages="freshdeskAccountForm[\'apiKey\'].$error" ng-show="freshdeskAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.freshdeskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="freshdeskAccountForm[\'serverUrl\'].$error" ng-show="freshdeskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.freshdeskAccount.description">\n\n        <div ng-messages="freshdeskAccountForm[\'description\'].$error" ng-show="freshdeskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshdeskAccount" ng-click="vm.saveFreshdeskAccount()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountForm.$invalid || freshdeskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshdeskAccount" ng-click="vm.addNewFreshdeskAccount()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHDESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHDESKACCOUNT">\n          ADD FRESHDESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshdeskAccount" ng-click="vm.deleteFreshdeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/edit/configurations/dialog.html",'<md-dialog class="freshdeskConfiguration-dialog" aria-label="New FreshdeskConfiguration">\n  <form name="freshdeskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.freshdeskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshdeskConfigurationForm[\'name\'].$error" ng-show="freshdeskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.freshdeskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshdeskConfigurationForm[\'channel\'].$error" ng-show="freshdeskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.freshdeskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshdeskConfigurationForm[\'type\'].$error" ng-show="freshdeskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshdeskConfiguration" ng-click="vm.saveFreshdeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshdeskConfigurationForm.$invalid || freshdeskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshdeskConfiguration" ng-click="vm.addNewFreshdeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshdeskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHDESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHDESKCONFIGURATION">\n          ADD FRESHDESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshdeskConfiguration" ng-click="vm.deleteFreshdeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",'<md-dialog class="freshdeskAccount-item-dialog" aria-label="New Item">\n  <form name="freshdeskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="freshdeskAccountItemForm.type.$error" ng-show="freshdeskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="freshdeskAccountItemForm.content.$error" ng-show="freshdeskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="freshdeskAccountItemForm.key.$error" ng-show="freshdeskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="freshdeskAccountItemForm.keyType.$error" ng-show="freshdeskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="freshdeskAccountItemForm.keyContent.$error" ng-show="freshdeskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="freshdeskAccountItemForm.variableName.$error" ng-show="freshdeskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="freshdeskAccountItemForm.customField.$error" ng-show="freshdeskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountItemForm.$invalid || freshdeskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountItemForm.$invalid || freshdeskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="freshdeskAccountItemForm.type.$error" ng-show="freshdeskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="freshdeskAccountItemForm.option.$error" ng-show="freshdeskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="freshdeskAccountItemForm.content.$error" ng-show="freshdeskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="freshdeskAccountItemForm.variableName.$error" ng-show="freshdeskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="freshdeskAccountItemForm.type.$error" ng-show="freshdeskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="freshdeskAccountItemForm.content.$error"\n          ng-show="freshdeskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="freshdeskAccountItemForm.variableName.$error"\n          ng-show="freshdeskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/edit/view.html",'<div id="integrations-freshdeskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-freshdeskAccounts-button md-icon-button" aria-label="Go to freshdeskAccounts" ng-click="vm.gotoFreshdeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_FRESHDESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="freshdeskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/freshdeskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.freshdeskAccount.id}}\n            <span ng-if="vm.freshdeskAccount.name">{{vm.freshdeskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.freshdeskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFreshdeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshdeskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.freshdeskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.freshdeskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.freshdeskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.freshdeskAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.freshdeskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.freshdeskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshdeskAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="FreshdeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.freshdeskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshdeskConfiguration($event)" class="md-icon-button" aria-label="create freshdeskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="freshdeskConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedFreshdeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getFreshdeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ freshdeskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteFreshdeskConfiguration($event, freshdeskConfiguration)" translate="INTEGRATIONS.DELETE_FRESHDESKCONFIGURATION">\n                            Delete FreshdeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshdeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/freshdeskAccounts.html",'<div id="freshdeskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.FRESHDESKACCOUNTS">FreshdeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFreshdeskAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFreshdeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-freshdeskAccounts-count">\n          <span>{{vm.selectedFreshdeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFreshdeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFreshdeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFreshdeskAccounts" csv-label="true" filename="freshdeskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFreshdeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- FRESHDESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFreshdeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFreshdeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.freshdeskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="freshdeskAccount" md-select-id="id" ng-repeat="freshdeskAccount in vm.freshdeskAccounts.rows">\n                <td md-cell ng-if="freshdeskAccount.userpic"><img class="avatar" alt="{{freshdeskAccount.name}}" ng-src="api/users/{{freshdeskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!freshdeskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{freshdeskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="id ">{{freshdeskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="name ">{{freshdeskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="username ">{{freshdeskAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="remoteUri ">{{freshdeskAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(freshdeskAccount, $event    )" translate="INTEGRATIONS.EDIT_FRESHDESKACCOUNT">\n                          Edit FreshdeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(freshdeskAccount, $event    )" translate="INTEGRATIONS.TEST_FRESHDESKACCOUNT">\n                          Test FreshdeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(freshdeskAccount, $event    )" translate="INTEGRATIONS.DELETE_FRESHDESKACCOUNT">\n                          Delete FreshdeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.freshdeskAccounts.count}}" md-on-paginate="vm.getFreshdeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FRESHDESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FRESHDESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-freshdeskAccount-button" ng-click="vm.createOrEditFreshdeskAccount($event)" aria-label="add freshdeskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_FRESHDESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FRESHDESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/create/dialog.html",'<md-dialog class="freshsalesAccount-dialog" aria-label="New FreshsalesAccount">\n  <form name="freshsalesAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.freshsalesAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshsalesAccountForm[\'name\'].$error" ng-show="freshsalesAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.freshsalesAccount.username" ng-required="true">\n\n        <div ng-messages="freshsalesAccountForm[\'username\'].$error" ng-show="freshsalesAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.freshsalesAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="freshsalesAccountForm[\'remoteUri\'].$error" ng-show="freshsalesAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.freshsalesAccount.apiKey" ng-required="true">\n\n        <div ng-messages="freshsalesAccountForm[\'apiKey\'].$error" ng-show="freshsalesAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.freshsalesAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="freshsalesAccountForm[\'serverUrl\'].$error" ng-show="freshsalesAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.freshsalesAccount.description">\n\n        <div ng-messages="freshsalesAccountForm[\'description\'].$error" ng-show="freshsalesAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshsalesAccount" ng-click="vm.saveFreshsalesAccount()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountForm.$invalid || freshsalesAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshsalesAccount" ng-click="vm.addNewFreshsalesAccount()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHSALESACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHSALESACCOUNT">\n          ADD FRESHSALESACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshsalesAccount" ng-click="vm.deleteFreshsalesAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/edit/configurations/dialog.html",'<md-dialog class="freshsalesConfiguration-dialog" aria-label="New FreshsalesConfiguration">\n  <form name="freshsalesConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.freshsalesConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshsalesConfigurationForm[\'name\'].$error" ng-show="freshsalesConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.freshsalesConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshsalesConfigurationForm[\'channel\'].$error" ng-show="freshsalesConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.freshsalesConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshsalesConfigurationForm[\'type\'].$error" ng-show="freshsalesConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshsalesConfiguration" ng-click="vm.saveFreshsalesConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshsalesConfigurationForm.$invalid || freshsalesConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshsalesConfiguration" ng-click="vm.addNewFreshsalesConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshsalesConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHSALESCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHSALESCONFIGURATION">\n          ADD FRESHSALESCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshsalesConfiguration" ng-click="vm.deleteFreshsalesConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",'<md-dialog class="freshsalesAccount-item-dialog" aria-label="New Item">\n  <form name="freshsalesAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="freshsalesAccountItemForm.type.$error" ng-show="freshsalesAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="freshsalesAccountItemForm.content.$error" ng-show="freshsalesAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="freshsalesAccountItemForm.key.$error" ng-show="freshsalesAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="freshsalesAccountItemForm.keyType.$error" ng-show="freshsalesAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="freshsalesAccountItemForm.keyContent.$error" ng-show="freshsalesAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="freshsalesAccountItemForm.variableName.$error" ng-show="freshsalesAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="freshsalesAccountItemForm.customField.$error" ng-show="freshsalesAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountItemForm.$invalid || freshsalesAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountItemForm.$invalid || freshsalesAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="freshsalesAccountItemForm.type.$error" ng-show="freshsalesAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="freshsalesAccountItemForm.option.$error" ng-show="freshsalesAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="freshsalesAccountItemForm.content.$error" ng-show="freshsalesAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="freshsalesAccountItemForm.variableName.$error" ng-show="freshsalesAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="freshsalesAccountItemForm.type.$error" ng-show="freshsalesAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="freshsalesAccountItemForm.content.$error"\n          ng-show="freshsalesAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="freshsalesAccountItemForm.variableName.$error"\n          ng-show="freshsalesAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/edit/view.html",'<div id="integrations-freshsalesAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-freshsalesAccounts-button md-icon-button" aria-label="Go to freshsalesAccounts" ng-click="vm.gotoFreshsalesAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_FRESHSALESACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="freshsalesAccount-image" hide-xs>\n          <img ng-src="assets/images/business/freshsalesAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.freshsalesAccount.id}}\n            <span ng-if="vm.freshsalesAccount.name">{{vm.freshsalesAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.freshsalesAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFreshsalesAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshsalesAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.freshsalesAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.freshsalesAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.freshsalesAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.freshsalesAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.freshsalesAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.freshsalesAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshsalesAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="FreshsalesAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.freshsalesAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshsalesConfiguration($event)" class="md-icon-button" aria-label="create freshsalesConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="freshsalesConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedFreshsalesConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getFreshsalesConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ freshsalesConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteFreshsalesConfiguration($event, freshsalesConfiguration)" translate="INTEGRATIONS.DELETE_FRESHSALESCONFIGURATION">\n                            Delete FreshsalesConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshsalesConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/freshsalesAccounts.html",'<div id="freshsalesAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.FRESHSALESACCOUNTS">FreshsalesAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFreshsalesAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFreshsalesAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-freshsalesAccounts-count">\n          <span>{{vm.selectedFreshsalesAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFreshsalesAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFreshsalesAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFreshsalesAccounts" csv-label="true" filename="freshsalesAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFreshsalesAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- FRESHSALESACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFreshsalesAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFreshsalesAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.freshsalesAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="freshsalesAccount" md-select-id="id" ng-repeat="freshsalesAccount in vm.freshsalesAccounts.rows">\n                <td md-cell ng-if="freshsalesAccount.userpic"><img class="avatar" alt="{{freshsalesAccount.name}}" ng-src="api/users/{{freshsalesAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!freshsalesAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{freshsalesAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="id ">{{freshsalesAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="name ">{{freshsalesAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="username ">{{freshsalesAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="remoteUri ">{{freshsalesAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(freshsalesAccount, $event    )" translate="INTEGRATIONS.EDIT_FRESHSALESACCOUNT">\n                          Edit FreshsalesAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(freshsalesAccount, $event    )" translate="INTEGRATIONS.TEST_FRESHSALESACCOUNT">\n                          Test FreshsalesAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(freshsalesAccount, $event    )" translate="INTEGRATIONS.DELETE_FRESHSALESACCOUNT">\n                          Delete FreshsalesAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.freshsalesAccounts.count}}" md-on-paginate="vm.getFreshsalesAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FRESHSALESACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FRESHSALESACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-freshsalesAccount-button" ng-click="vm.createOrEditFreshsalesAccount($event)" aria-label="add freshsalesAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_FRESHSALESACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FRESHSALESACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/salesforceAccounts/create/dialog.html",'<md-dialog class="salesforceAccount-dialog" aria-label="New SalesforceAccount">\n  <form name="salesforceAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.salesforceAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="salesforceAccountForm[\'name\'].$error" ng-show="salesforceAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.salesforceAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceAccountForm[\'type\'].$error" ng-show="salesforceAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.salesforceAccount.username" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'username\'].$error" ng-show="salesforceAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.salesforceAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'remoteUri\'].$error" ng-show="salesforceAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.salesforceAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="salesforceAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n        <input type="text" name="clientId" ng-model="vm.salesforceAccount.clientId" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'clientId\'].$error" ng-show="salesforceAccountForm[\'clientId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n        <input type="text" name="clientSecret" ng-model="vm.salesforceAccount.clientSecret" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'clientSecret\'].$error" ng-show="salesforceAccountForm[\'clientSecret\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.SECURITYTOKEN">SecurityToken</label>\n        <input type="text" name="securityToken" ng-model="vm.salesforceAccount.securityToken" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'securityToken\'].$error" ng-show="salesforceAccountForm[\'securityToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.SECURITYTOKEN_REQUIRED">SecurityToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.salesforceAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="salesforceAccountForm[\'serverUrl\'].$error" ng-show="salesforceAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.salesforceAccount.description">\n\n        <div ng-messages="salesforceAccountForm[\'description\'].$error" ng-show="salesforceAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSalesforceAccount" ng-click="vm.saveSalesforceAccount()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountForm.$invalid || salesforceAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSalesforceAccount" ng-click="vm.addNewSalesforceAccount()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SALESFORCEACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_SALESFORCEACCOUNT">\n          ADD SALESFORCEACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSalesforceAccount" ng-click="vm.deleteSalesforceAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/salesforceAccounts/edit/configurations/dialog.html",'<md-dialog class="salesforceConfiguration-dialog" aria-label="New SalesforceConfiguration">\n  <form name="salesforceConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.salesforceConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="salesforceConfigurationForm[\'name\'].$error" ng-show="salesforceConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.salesforceConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceConfigurationForm[\'channel\'].$error" ng-show="salesforceConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.salesforceConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceConfigurationForm[\'type\'].$error" ng-show="salesforceConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TICKETTYPE">TicketType</label>\n        <md-select name="ticketType" ng-model="vm.salesforceConfiguration.ticketType" required>\n\n          <md-option ng-value="\'Task\'"> {{ \'INTEGRATIONS.TASK\' | translate }} </md-option>\n\n          <md-option ng-value="\'Case\'"> {{ \'INTEGRATIONS.CASE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceConfigurationForm[\'ticketType\'].$error" ng-show="salesforceConfigurationForm[\'ticketType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TICKETTYPE_REQUIRED">TicketType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSalesforceConfiguration" ng-click="vm.saveSalesforceConfiguration()" class="send-button md-accent md-raised" ng-disabled="salesforceConfigurationForm.$invalid || salesforceConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSalesforceConfiguration" ng-click="vm.addNewSalesforceConfiguration()" class="send-button md-accent md-raised" ng-disabled="salesforceConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SALESFORCECONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_SALESFORCECONFIGURATION">\n          ADD SALESFORCECONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSalesforceConfiguration" ng-click="vm.deleteSalesforceConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",'<md-dialog class="salesforceAccount-item-dialog" aria-label="New Item">\n  <form name="salesforceAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="salesforceAccountItemForm.type.$error" ng-show="salesforceAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="salesforceAccountItemForm.content.$error" ng-show="salesforceAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="salesforceAccountItemForm.key.$error" ng-show="salesforceAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="salesforceAccountItemForm.keyType.$error" ng-show="salesforceAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="salesforceAccountItemForm.keyContent.$error" ng-show="salesforceAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="salesforceAccountItemForm.variableName.$error" ng-show="salesforceAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="salesforceAccountItemForm.customField.$error" ng-show="salesforceAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountItemForm.$invalid || salesforceAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountItemForm.$invalid || salesforceAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="salesforceAccountItemForm.type.$error" ng-show="salesforceAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="salesforceAccountItemForm.option.$error" ng-show="salesforceAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="salesforceAccountItemForm.content.$error" ng-show="salesforceAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="salesforceAccountItemForm.variableName.$error" ng-show="salesforceAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="salesforceAccountItemForm.type.$error" ng-show="salesforceAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="salesforceAccountItemForm.content.$error"\n          ng-show="salesforceAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="salesforceAccountItemForm.variableName.$error"\n          ng-show="salesforceAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/salesforceAccounts/edit/view.html",'<div id="integrations-salesforceAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-salesforceAccounts-button md-icon-button" aria-label="Go to salesforceAccounts" ng-click="vm.gotoSalesforceAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_SALESFORCEACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="salesforceAccount-image" hide-xs>\n          <img ng-src="assets/images/business/salesforceAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.salesforceAccount.id}}\n            <span ng-if="vm.salesforceAccount.name">{{vm.salesforceAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.salesforceAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSalesforceAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="salesforceAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.salesforceAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.salesforceAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.salesforceAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.salesforceAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.salesforceAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n                <input type="text" name="clientId" ng-model="vm.salesforceAccount.clientId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientId\'].$error" ng-show="generalForm[\'clientId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n                <input type="text" name="clientSecret" ng-model="vm.salesforceAccount.clientSecret" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientSecret\'].$error" ng-show="generalForm[\'clientSecret\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.SECURITYTOKEN">SecurityToken</label>\n                <input type="text" name="securityToken" ng-model="vm.salesforceAccount.securityToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'securityToken\'].$error" ng-show="generalForm[\'securityToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.SECURITYTOKEN_REQUIRED">SecurityToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.salesforceAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.salesforceAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="salesforceAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="SalesforceAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.salesforceAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSalesforceConfiguration($event)" class="md-icon-button" aria-label="create salesforceConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="salesforceConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedSalesforceConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getSalesforceConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ salesforceConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteSalesforceConfiguration($event, salesforceConfiguration)" translate="INTEGRATIONS.DELETE_SALESFORCECONFIGURATION">\n                            Delete SalesforceConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.ADVANCED">\n                        ADVANCED\n                      </span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_SEARCH"></label>\n                        <md-select ng-model="vm_cc.salesforceConfiguration.moduleSearch" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'account_contact_lead\', value: \'Account & Contact & Lead\'}, {key: \'contact_lead\', value: \'Contact & Lead\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}, {key: \'account\', value: \'Account\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_CREATE"></label>\n                        <md-select ng-model="vm_cc.salesforceConfiguration.moduleCreate" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'nothing\', value: \'Nothing\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}, {key: \'account\', value: \'Account\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isLead">\n                        <label translate="INTEGRATIONS.LEADID"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.leadId" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.LEADID"></span></div>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isAccountSearch">\n                        <label translate="INTEGRATIONS.ADDITIONALSEARCHACCOUNT"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.additionalSearchAccount" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.ADDITIONALSEARCHACCOUNT"></span></div>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isContactSearch">\n                        <label translate="INTEGRATIONS.ADDITIONALSEARCHCONTACT"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.additionalSearchContact" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.ADDITIONALSEARCHCONTACT"></span></div>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isLeadSearch">\n                        <label translate="INTEGRATIONS.ADDITIONALSEARCHLEAD"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.additionalSearchLead" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.ADDITIONALSEARCHLEAD"></span></div>\n                      </div>\n\n                      <md-button type="submit" ng-click="vm_cc.saveSalesforceConfiguration()" ng-disabled="!vm_cc.crudPermissions.canEdit" class="send-button md-accent md-raised" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n                        SAVE\n                      </md-button>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSalesforceConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/salesforceAccounts/salesforceAccounts.html",'<div id="salesforceAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.SALESFORCEACCOUNTS">SalesforceAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSalesforceAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSalesforceAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-salesforceAccounts-count">\n          <span>{{vm.selectedSalesforceAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSalesforceAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSalesforceAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSalesforceAccounts" csv-label="true" filename="salesforceAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSalesforceAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SALESFORCEACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSalesforceAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSalesforceAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.salesforceAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="salesforceAccount" md-select-id="id" ng-repeat="salesforceAccount in vm.salesforceAccounts.rows">\n                <td md-cell ng-if="salesforceAccount.userpic"><img class="avatar" alt="{{salesforceAccount.name}}" ng-src="api/users/{{salesforceAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!salesforceAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{salesforceAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="id ">{{salesforceAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="name ">{{salesforceAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="username ">{{salesforceAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="remoteUri ">{{salesforceAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(salesforceAccount, $event    )" translate="INTEGRATIONS.EDIT_SALESFORCEACCOUNT">\n                          Edit SalesforceAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(salesforceAccount, $event    )" translate="INTEGRATIONS.TEST_SALESFORCEACCOUNT">\n                          Test SalesforceAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(salesforceAccount, $event    )" translate="INTEGRATIONS.DELETE_SALESFORCEACCOUNT">\n                          Delete SalesforceAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.salesforceAccounts.count}}" md-on-paginate="vm.getSalesforceAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SALESFORCEACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SALESFORCEACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-salesforceAccount-button" ng-click="vm.createOrEditSalesforceAccount($event)" aria-label="add salesforceAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_SALESFORCEACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SALESFORCEACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/servicenowAccounts/create/dialog.html",'<md-dialog class="servicenowAccount-dialog" aria-label="New ServicenowAccount">\n  <form name="servicenowAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.servicenowAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="servicenowAccountForm[\'name\'].$error" ng-show="servicenowAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.servicenowAccount.username" ng-required="true">\n\n        <div ng-messages="servicenowAccountForm[\'username\'].$error" ng-show="servicenowAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.servicenowAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="servicenowAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.servicenowAccount.email" ng-required="true">\n\n        <div ng-messages="servicenowAccountForm[\'email\'].$error" ng-show="servicenowAccountForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="INTEGRATIONS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.HOST">Host</label>\n        <input type="url" name="remoteUri" ng-model="vm.servicenowAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="servicenowAccountForm[\'remoteUri\'].$error" ng-show="servicenowAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.servicenowAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="servicenowAccountForm[\'serverUrl\'].$error" ng-show="servicenowAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.servicenowAccount.description">\n\n        <div ng-messages="servicenowAccountForm[\'description\'].$error" ng-show="servicenowAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newServicenowAccount" ng-click="vm.saveServicenowAccount()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountForm.$invalid || servicenowAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newServicenowAccount" ng-click="vm.addNewServicenowAccount()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SERVICENOWACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_SERVICENOWACCOUNT">\n          ADD SERVICENOWACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newServicenowAccount" ng-click="vm.deleteServicenowAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/servicenowAccounts/edit/configurations/dialog.html",'<md-dialog class="servicenowConfiguration-dialog" aria-label="New ServicenowConfiguration">\n  <form name="servicenowConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.servicenowConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="servicenowConfigurationForm[\'name\'].$error" ng-show="servicenowConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.servicenowConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="servicenowConfigurationForm[\'channel\'].$error" ng-show="servicenowConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.servicenowConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="servicenowConfigurationForm[\'type\'].$error" ng-show="servicenowConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newServicenowConfiguration" ng-click="vm.saveServicenowConfiguration()" class="send-button md-accent md-raised" ng-disabled="servicenowConfigurationForm.$invalid || servicenowConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newServicenowConfiguration" ng-click="vm.addNewServicenowConfiguration()" class="send-button md-accent md-raised" ng-disabled="servicenowConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SERVICENOWCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_SERVICENOWCONFIGURATION">\n          ADD SERVICENOWCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newServicenowConfiguration" ng-click="vm.deleteServicenowConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",'<md-dialog class="servicenowAccount-item-dialog" aria-label="New Item">\n  <form name="servicenowAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="servicenowAccountItemForm.type.$error" ng-show="servicenowAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="servicenowAccountItemForm.content.$error" ng-show="servicenowAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="servicenowAccountItemForm.key.$error" ng-show="servicenowAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="servicenowAccountItemForm.keyType.$error" ng-show="servicenowAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="servicenowAccountItemForm.keyContent.$error" ng-show="servicenowAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="servicenowAccountItemForm.variableName.$error" ng-show="servicenowAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="servicenowAccountItemForm.customField.$error" ng-show="servicenowAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountItemForm.$invalid || servicenowAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountItemForm.$invalid || servicenowAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="servicenowAccountItemForm.type.$error" ng-show="servicenowAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="servicenowAccountItemForm.option.$error" ng-show="servicenowAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="servicenowAccountItemForm.content.$error" ng-show="servicenowAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="servicenowAccountItemForm.variableName.$error" ng-show="servicenowAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="servicenowAccountItemForm.type.$error" ng-show="servicenowAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="servicenowAccountItemForm.content.$error"\n          ng-show="servicenowAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="servicenowAccountItemForm.variableName.$error"\n          ng-show="servicenowAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/servicenowAccounts/edit/view.html",'<div id="integrations-servicenowAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-servicenowAccounts-button md-icon-button" aria-label="Go to servicenowAccounts" ng-click="vm.gotoServicenowAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_SERVICENOWACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="servicenowAccount-image" hide-xs>\n          <img ng-src="assets/images/business/servicenowAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.servicenowAccount.id}}\n            <span ng-if="vm.servicenowAccount.name">{{vm.servicenowAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.servicenowAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveServicenowAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="servicenowAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.servicenowAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.servicenowAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.servicenowAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.servicenowAccount.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="INTEGRATIONS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.HOST">Host</label>\n                <input type="url" name="remoteUri" ng-model="vm.servicenowAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.servicenowAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.servicenowAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="servicenowAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="ServicenowAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.servicenowAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditServicenowConfiguration($event)" class="md-icon-button" aria-label="create servicenowConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="servicenowConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedServicenowConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getServicenowConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ servicenowConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteServicenowConfiguration($event, servicenowConfiguration)" translate="INTEGRATIONS.DELETE_SERVICENOWCONFIGURATION">\n                            Delete ServicenowConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditServicenowConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/servicenowAccounts/servicenowAccounts.html",'<div id="servicenowAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.SERVICENOWACCOUNTS">ServicenowAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedServicenowAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedServicenowAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-servicenowAccounts-count">\n          <span>{{vm.selectedServicenowAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllServicenowAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectServicenowAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedServicenowAccounts" csv-label="true" filename="servicenowAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedServicenowAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SERVICENOWACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedServicenowAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getServicenowAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'INTEGRATIONS.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.HOST\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.servicenowAccounts.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="servicenowAccount" md-select-id="id" ng-repeat="servicenowAccount in vm.servicenowAccounts.rows">\n                <td md-cell ng-if="servicenowAccount.userpic"><img class="avatar" alt="{{servicenowAccount.name}}" ng-src="api/users/{{servicenowAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!servicenowAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{servicenowAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="id ">{{servicenowAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="name ">{{servicenowAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="username ">{{servicenowAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="email ">{{servicenowAccount.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="remoteUri ">{{servicenowAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(servicenowAccount, $event    )" translate="INTEGRATIONS.EDIT_SERVICENOWACCOUNT">\n                          Edit ServicenowAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(servicenowAccount, $event    )" translate="INTEGRATIONS.TEST_SERVICENOWACCOUNT">\n                          Test ServicenowAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.crudPermissions === 0 || vm.currentUser.role === \'admin\'">\n\n                        <md-button ng-click="vm.deleteconfirm(servicenowAccount, $event    )" translate="INTEGRATIONS.DELETE_SERVICENOWACCOUNT">\n                          Delete ServicenowAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.servicenowAccounts.count}}" md-on-paginate="vm.getServicenowAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SERVICENOWACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SERVICENOWACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-servicenowAccount-button" ng-click="vm.createOrEditServicenowAccount($event)" aria-label="add servicenowAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_SERVICENOWACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SERVICENOWACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/create/dialog.html",'<md-dialog class="sugarcrmAccount-dialog" aria-label="New SugarcrmAccount">\n  <form name="sugarcrmAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.sugarcrmAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="sugarcrmAccountForm[\'name\'].$error" ng-show="sugarcrmAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.sugarcrmAccount.username" ng-required="true">\n\n        <div ng-messages="sugarcrmAccountForm[\'username\'].$error" ng-show="sugarcrmAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.sugarcrmAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="sugarcrmAccountForm[\'remoteUri\'].$error" ng-show="sugarcrmAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.sugarcrmAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="sugarcrmAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.sugarcrmAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="sugarcrmAccountForm[\'serverUrl\'].$error" ng-show="sugarcrmAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.sugarcrmAccount.description">\n\n        <div ng-messages="sugarcrmAccountForm[\'description\'].$error" ng-show="sugarcrmAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSugarcrmAccount" ng-click="vm.saveSugarcrmAccount()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountForm.$invalid || sugarcrmAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSugarcrmAccount" ng-click="vm.addNewSugarcrmAccount()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SUGARCRMACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_SUGARCRMACCOUNT">\n          ADD SUGARCRMACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSugarcrmAccount" ng-click="vm.deleteSugarcrmAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/edit/configurations/dialog.html",'<md-dialog class="sugarcrmConfiguration-dialog" aria-label="New SugarcrmConfiguration">\n  <form name="sugarcrmConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.sugarcrmConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="sugarcrmConfigurationForm[\'name\'].$error" ng-show="sugarcrmConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.sugarcrmConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="sugarcrmConfigurationForm[\'channel\'].$error" ng-show="sugarcrmConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.sugarcrmConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="sugarcrmConfigurationForm[\'type\'].$error" ng-show="sugarcrmConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSugarcrmConfiguration" ng-click="vm.saveSugarcrmConfiguration()" class="send-button md-accent md-raised" ng-disabled="sugarcrmConfigurationForm.$invalid || sugarcrmConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSugarcrmConfiguration" ng-click="vm.addNewSugarcrmConfiguration()" class="send-button md-accent md-raised" ng-disabled="sugarcrmConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SUGARCRMCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_SUGARCRMCONFIGURATION">\n          ADD SUGARCRMCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSugarcrmConfiguration" ng-click="vm.deleteSugarcrmConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",'<md-dialog class="sugarcrmAccount-item-dialog" aria-label="New Item">\n  <form name="sugarcrmAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="sugarcrmAccountItemForm.type.$error" ng-show="sugarcrmAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="sugarcrmAccountItemForm.content.$error" ng-show="sugarcrmAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="sugarcrmAccountItemForm.key.$error" ng-show="sugarcrmAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="sugarcrmAccountItemForm.keyType.$error" ng-show="sugarcrmAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="sugarcrmAccountItemForm.keyContent.$error" ng-show="sugarcrmAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="sugarcrmAccountItemForm.variableName.$error" ng-show="sugarcrmAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="sugarcrmAccountItemForm.customField.$error" ng-show="sugarcrmAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountItemForm.$invalid || sugarcrmAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountItemForm.$invalid || sugarcrmAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="sugarcrmAccountItemForm.type.$error" ng-show="sugarcrmAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="sugarcrmAccountItemForm.option.$error" ng-show="sugarcrmAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="sugarcrmAccountItemForm.content.$error" ng-show="sugarcrmAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="sugarcrmAccountItemForm.variableName.$error" ng-show="sugarcrmAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="sugarcrmAccountItemForm.type.$error" ng-show="sugarcrmAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="sugarcrmAccountItemForm.content.$error"\n          ng-show="sugarcrmAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="sugarcrmAccountItemForm.variableName.$error"\n          ng-show="sugarcrmAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/edit/view.html",'<div id="integrations-sugarcrmAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-sugarcrmAccounts-button md-icon-button" aria-label="Go to sugarcrmAccounts" ng-click="vm.gotoSugarcrmAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_SUGARCRMACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="sugarcrmAccount-image" hide-xs>\n          <img ng-src="assets/images/business/sugarcrmAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.sugarcrmAccount.id}}\n            <span ng-if="vm.sugarcrmAccount.name">{{vm.sugarcrmAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.sugarcrmAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSugarcrmAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="sugarcrmAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.sugarcrmAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.sugarcrmAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.sugarcrmAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.sugarcrmAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.sugarcrmAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.sugarcrmAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="sugarcrmAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="SugarcrmAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.sugarcrmAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSugarcrmConfiguration($event)" class="md-icon-button" aria-label="create sugarcrmConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="sugarcrmConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedSugarcrmConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getSugarcrmConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ sugarcrmConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteSugarcrmConfiguration($event, sugarcrmConfiguration)" translate="INTEGRATIONS.DELETE_SUGARCRMCONFIGURATION">\n                            Delete SugarcrmConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSugarcrmConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/sugarcrmAccounts.html",'<div id="sugarcrmAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.SUGARCRMACCOUNTS">SugarcrmAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSugarcrmAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSugarcrmAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-sugarcrmAccounts-count">\n          <span>{{vm.selectedSugarcrmAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSugarcrmAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSugarcrmAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSugarcrmAccounts" csv-label="true" filename="sugarcrmAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSugarcrmAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SUGARCRMACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSugarcrmAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSugarcrmAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.sugarcrmAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="sugarcrmAccount" md-select-id="id" ng-repeat="sugarcrmAccount in vm.sugarcrmAccounts.rows">\n                <td md-cell ng-if="sugarcrmAccount.userpic"><img class="avatar" alt="{{sugarcrmAccount.name}}" ng-src="api/users/{{sugarcrmAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!sugarcrmAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{sugarcrmAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="id ">{{sugarcrmAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="name ">{{sugarcrmAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="username ">{{sugarcrmAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="remoteUri ">{{sugarcrmAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(sugarcrmAccount, $event    )" translate="INTEGRATIONS.EDIT_SUGARCRMACCOUNT">\n                          Edit SugarcrmAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(sugarcrmAccount, $event    )" translate="INTEGRATIONS.TEST_SUGARCRMACCOUNT">\n                          Test SugarcrmAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(sugarcrmAccount, $event    )" translate="INTEGRATIONS.DELETE_SUGARCRMACCOUNT">\n                          Delete SugarcrmAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.sugarcrmAccounts.count}}" md-on-paginate="vm.getSugarcrmAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SUGARCRMACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SUGARCRMACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-sugarcrmAccount-button" ng-click="vm.createOrEditSugarcrmAccount($event)" aria-label="add sugarcrmAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_SUGARCRMACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SUGARCRMACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/vtigerAccounts/create/dialog.html",'<md-dialog class="vtigerAccount-dialog" aria-label="New VtigerAccount">\n  <form name="vtigerAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.vtigerAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="vtigerAccountForm[\'name\'].$error" ng-show="vtigerAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.vtigerAccount.description">\n\n        <div ng-messages="vtigerAccountForm[\'description\'].$error" ng-show="vtigerAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.VTIGER_USER_NAME">vTiger_User_Name</label>\n        <input type="text" name="username" ng-model="vm.vtigerAccount.username" ng-required="true">\n\n        <div ng-messages="vtigerAccountForm[\'username\'].$error" ng-show="vtigerAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.VTIGER_USER_NAME_REQUIRED">vTiger_User_Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.ACCESS_KEY">Access_Key</label>\n        <input type="text" name="accessKey" ng-model="vm.vtigerAccount.accessKey" ng-required="true">\n\n        <div ng-messages="vtigerAccountForm[\'accessKey\'].$error" ng-show="vtigerAccountForm[\'accessKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.ACCESS_KEY_REQUIRED">Access_Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.HOST">Host</label>\n        <input type="url" name="remoteUri" ng-model="vm.vtigerAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="vtigerAccountForm[\'remoteUri\'].$error" ng-show="vtigerAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.vtigerAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="vtigerAccountForm[\'serverUrl\'].$error" ng-show="vtigerAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVtigerAccount" ng-click="vm.saveVtigerAccount()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountForm.$invalid || vtigerAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVtigerAccount" ng-click="vm.addNewVtigerAccount()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_VTIGERACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_VTIGERACCOUNT">\n          ADD VTIGERACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVtigerAccount" ng-click="vm.deleteVtigerAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/vtigerAccounts/edit/configurations/dialog.html",'<md-dialog class="vtigerConfiguration-dialog" aria-label="New VtigerConfiguration">\n  <form name="vtigerConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.vtigerConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="vtigerConfigurationForm[\'name\'].$error" ng-show="vtigerConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.vtigerConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="vtigerConfigurationForm[\'channel\'].$error" ng-show="vtigerConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.vtigerConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="vtigerConfigurationForm[\'type\'].$error" ng-show="vtigerConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVtigerConfiguration" ng-click="vm.saveVtigerConfiguration()" class="send-button md-accent md-raised" ng-disabled="vtigerConfigurationForm.$invalid || vtigerConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVtigerConfiguration" ng-click="vm.addNewVtigerConfiguration()" class="send-button md-accent md-raised" ng-disabled="vtigerConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_VTIGERCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_VTIGERCONFIGURATION">\n          ADD VTIGERCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVtigerConfiguration" ng-click="vm.deleteVtigerConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",'<md-dialog class="vtigerAccount-item-dialog" aria-label="New Item">\n  <form name="vtigerAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="vtigerAccountItemForm.type.$error" ng-show="vtigerAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="vtigerAccountItemForm.content.$error" ng-show="vtigerAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="vtigerAccountItemForm.key.$error" ng-show="vtigerAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="vtigerAccountItemForm.keyType.$error" ng-show="vtigerAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="vtigerAccountItemForm.keyContent.$error" ng-show="vtigerAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="vtigerAccountItemForm.variableName.$error" ng-show="vtigerAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="vtigerAccountItemForm.customField.$error" ng-show="vtigerAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountItemForm.$invalid || vtigerAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountItemForm.$invalid || vtigerAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="vtigerAccountItemForm.type.$error" ng-show="vtigerAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="vtigerAccountItemForm.option.$error" ng-show="vtigerAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="vtigerAccountItemForm.content.$error" ng-show="vtigerAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="vtigerAccountItemForm.variableName.$error" ng-show="vtigerAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="vtigerAccountItemForm.type.$error" ng-show="vtigerAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="vtigerAccountItemForm.content.$error"\n          ng-show="vtigerAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="vtigerAccountItemForm.variableName.$error"\n          ng-show="vtigerAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/vtigerAccounts/edit/view.html",'<div id="integrations-vtigerAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-vtigerAccounts-button md-icon-button" aria-label="Go to vtigerAccounts" ng-click="vm.gotoVtigerAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_VTIGERACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="vtigerAccount-image" hide-xs>\n          <img ng-src="assets/images/business/vtigerAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.vtigerAccount.id}}\n            <span ng-if="vm.vtigerAccount.name">{{vm.vtigerAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.vtigerAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVtigerAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="vtigerAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.vtigerAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.vtigerAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.VTIGER_USER_NAME">vTiger_User_Name</label>\n                <input type="text" name="username" ng-model="vm.vtigerAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.VTIGER_USER_NAME_REQUIRED">vTiger_User_Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.ACCESS_KEY">Access_Key</label>\n                <input type="text" name="accessKey" ng-model="vm.vtigerAccount.accessKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accessKey\'].$error" ng-show="generalForm[\'accessKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.ACCESS_KEY_REQUIRED">Access_Key field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.HOST">Host</label>\n                <input type="url" name="remoteUri" ng-model="vm.vtigerAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.vtigerAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="vtigerAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="VtigerAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.vtigerAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditVtigerConfiguration($event)" class="md-icon-button" aria-label="create vtigerConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="vtigerConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedVtigerConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getVtigerConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ vtigerConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteVtigerConfiguration($event, vtigerConfiguration)" translate="INTEGRATIONS.DELETE_VTIGERCONFIGURATION">\n                            Delete VtigerConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditVtigerConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/vtigerAccounts/vtigerAccounts.html",'<div id="vtigerAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.VTIGERACCOUNTS">VtigerAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVtigerAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVtigerAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-vtigerAccounts-count">\n          <span>{{vm.selectedVtigerAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVtigerAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVtigerAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVtigerAccounts" csv-label="true" filename="vtigerAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVtigerAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VTIGERACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVtigerAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVtigerAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.VTIGER_USER_NAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.HOST\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.vtigerAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="vtigerAccount" md-select-id="id" ng-repeat="vtigerAccount in vm.vtigerAccounts.rows">\n                <td md-cell ng-if="vtigerAccount.userpic"><img class="avatar" alt="{{vtigerAccount.name}}" ng-src="api/users/{{vtigerAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!vtigerAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{vtigerAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="id ">{{vtigerAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="name ">{{vtigerAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="username ">{{vtigerAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="remoteUri ">{{vtigerAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(vtigerAccount, $event    )" translate="INTEGRATIONS.EDIT_VTIGERACCOUNT">\n                          Edit VtigerAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(vtigerAccount, $event    )" translate="INTEGRATIONS.TEST_VTIGERACCOUNT">\n                          Test VtigerAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(vtigerAccount, $event    )" translate="INTEGRATIONS.DELETE_VTIGERACCOUNT">\n                          Delete VtigerAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.vtigerAccounts.count}}" md-on-paginate="vm.getVtigerAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VTIGERACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VTIGERACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-vtigerAccount-button" ng-click="vm.createOrEditVtigerAccount($event)" aria-label="add vtigerAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_VTIGERACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VTIGERACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/zendeskAccounts/create/dialog.html",'<md-dialog class="zendeskAccount-dialog" aria-label="New ZendeskAccount">\n  <form name="zendeskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.zendeskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="zendeskAccountForm[\'name\'].$error" ng-show="zendeskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.zendeskAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zendeskAccountForm[\'type\'].$error" ng-show="zendeskAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.zendeskAccount.username" ng-required="true">\n\n        <div ng-messages="zendeskAccountForm[\'username\'].$error" ng-show="zendeskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.zendeskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="zendeskAccountForm[\'remoteUri\'].$error" ng-show="zendeskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n        <md-select name="authType" ng-model="vm.zendeskAccount.authType" required>\n          <md-option ng-value="\'password\'">Password</md-option>\n          <md-option ng-value="\'token\'">Token</md-option>\n        </md-select>\n        <div ng-messages="zendeskAccountForm[\'authType\'].$error" ng-show="zendeskAccountForm[\'authType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.zendeskAccount.authType == \'password\'">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.zendeskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="zendeskAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.zendeskAccount.authType == \'token\'" class="md-block">\n        <label translate="INTEGRATIONS.TOKEN">Token</label>\n        <input type="text" name="token" ng-model="vm.zendeskAccount.token" ng-required="true">\n\n        <div ng-messages="zendeskAccountForm[\'token\'].$error" ng-show="zendeskAccountForm[\'token\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TOKEN_REQUIRED">Token field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.zendeskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="zendeskAccountForm[\'serverUrl\'].$error" ng-show="zendeskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.zendeskAccount.description">\n\n        <div ng-messages="zendeskAccountForm[\'description\'].$error" ng-show="zendeskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZendeskAccount" ng-click="vm.saveZendeskAccount()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountForm.$invalid || zendeskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZendeskAccount" ng-click="vm.addNewZendeskAccount()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZENDESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_ZENDESKACCOUNT">\n          ADD ZENDESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZendeskAccount" ng-click="vm.deleteZendeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",'<md-dialog class="zendeskAccount-item-dialog" aria-label="New Item">\n  <form name="zendeskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="zendeskAccountItemForm.type.$error" ng-show="zendeskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="zendeskAccountItemForm.content.$error" ng-show="zendeskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="zendeskAccountItemForm.key.$error" ng-show="zendeskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="zendeskAccountItemForm.keyType.$error" ng-show="zendeskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="zendeskAccountItemForm.keyContent.$error" ng-show="zendeskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="zendeskAccountItemForm.variableName.$error" ng-show="zendeskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="zendeskAccountItemForm.customField.$error" ng-show="zendeskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountItemForm.$invalid || zendeskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountItemForm.$invalid || zendeskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="zendeskAccountItemForm.type.$error" ng-show="zendeskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="zendeskAccountItemForm.option.$error" ng-show="zendeskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="zendeskAccountItemForm.content.$error" ng-show="zendeskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="zendeskAccountItemForm.variableName.$error" ng-show="zendeskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="zendeskAccountItemForm.type.$error" ng-show="zendeskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="zendeskAccountItemForm.content.$error"\n          ng-show="zendeskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="zendeskAccountItemForm.variableName.$error"\n          ng-show="zendeskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/zendeskAccounts/edit/view.html",'<div id="integrations-zendeskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-zendeskAccounts-button md-icon-button" aria-label="Go to zendeskAccounts" ng-click="vm.gotoZendeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_ZENDESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="zendeskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/zendeskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.zendeskAccount.id}}\n            <span ng-if="vm.zendeskAccount.name">{{vm.zendeskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.zendeskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveZendeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (zendeskConfigurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zendeskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.zendeskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.zendeskAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.zendeskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.zendeskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n                <md-select name="authType" ng-model="vm.zendeskAccount.authType" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'password\'">Password</md-option>\n                  <md-option ng-value="\'token\'">Token</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'authType\'].$error" ng-show="generalForm[\'authType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.zendeskAccount.authType == \'password\'">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.zendeskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container ng-if="vm.zendeskAccount.authType == \'token\'" class="md-block">\n                <label translate="INTEGRATIONS.TOKEN">Token</label>\n                <input type="text" name="token" ng-model="vm.zendeskAccount.token" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'token\'].$error" ng-show="generalForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TOKEN_REQUIRED">Token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.zendeskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.zendeskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zendeskAccount-detail-form-container zendeskconfigurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.ZENDESKCONFIGURATIONS">ZENDESKCONFIGURATIONS</div>\n            </div>\n            <div ng-controller="ZendeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.zendeskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZendeskConfiguration($event)" class="md-icon-button" aria-label="create zendeskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="zendeskConfiguration in vm_cc.zendeskConfigurations" class="border-top" md-colors="{background: (vm_cc.selectedZendeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getZendeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ zendeskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteZendeskConfiguration($event, zendeskConfiguration)" translate="INTEGRATIONS.DELETE_ZENDESKCONFIGURATION">\n                            Delete ZendeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.zendeskConfigurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.zendeskConfigurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZendeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/zendeskAccounts/edit/zendeskConfigurations/dialog.html",'<md-dialog class="zendeskConfiguration-dialog" aria-label="New ZendeskConfiguration">\n  <form name="zendeskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.zendeskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="zendeskConfigurationForm[\'name\'].$error" ng-show="zendeskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.zendeskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zendeskConfigurationForm[\'channel\'].$error" ng-show="zendeskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.zendeskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zendeskConfigurationForm[\'type\'].$error" ng-show="zendeskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZendeskConfiguration" ng-click="vm.saveZendeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="zendeskConfigurationForm.$invalid || zendeskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZendeskConfiguration" ng-click="vm.addNewZendeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="zendeskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZENDESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_ZENDESKCONFIGURATION">\n          ADD ZENDESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZendeskConfiguration" ng-click="vm.deleteZendeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zendeskAccounts/zendeskAccounts.html",'<div id="zendeskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.ZENDESKACCOUNTS">ZendeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedZendeskAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedZendeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-zendeskAccounts-count">\n          <span>{{vm.selectedZendeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllZendeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectZendeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedZendeskAccounts" csv-label="true" filename="zendeskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedZendeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- ZENDESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedZendeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getZendeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.zendeskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="zendeskAccount" md-select-id="id" ng-repeat="zendeskAccount in vm.zendeskAccounts.rows">\n                <td md-cell ng-if="zendeskAccount.userpic"><img class="avatar" alt="{{zendeskAccount.name}}" ng-src="api/users/{{zendeskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!zendeskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{zendeskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="id ">{{zendeskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="name ">{{zendeskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="username ">{{zendeskAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="remoteUri ">{{zendeskAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(zendeskAccount, $event    )" translate="INTEGRATIONS.EDIT_ZENDESKACCOUNT">\n                          Edit ZendeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(zendeskAccount, $event    )" translate="INTEGRATIONS.TEST_ZENDESKACCOUNT">\n                          Test ZendeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(zendeskAccount, $event    )" translate="INTEGRATIONS.DELETE_ZENDESKACCOUNT">\n                          Delete ZendeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.zendeskAccounts.count}}" md-on-paginate="vm.getZendeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / ZENDESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD ZENDESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-zendeskAccount-button" ng-click="vm.createOrEditZendeskAccount($event)" aria-label="add zendeskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_ZENDESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD ZENDESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/zohoAccounts/create/dialog.html",'<md-dialog class="zohoAccount-dialog" aria-label="New ZohoAccount">\n  <form name="zohoAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.zohoAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="zohoAccountForm[\'name\'].$error" ng-show="zohoAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.HOST">Host</label>\n        <md-select name="host" ng-model="vm.zohoAccount.host" required>\n          <md-option ng-value="\'zoho.com\'">zoho.com</md-option>\n          <md-option ng-value="\'zoho.eu\'">zoho.eu</md-option>\n        </md-select>\n        <div ng-messages="zohoAccountForm[\'host\'].$error" ng-show="zohoAccountForm[\'host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.ZONE">Zone</label>\n        <md-select name="zone" ng-model="vm.zohoAccount.zone" required>\n          <md-option ng-value="\'US\'">US</md-option>\n          <md-option ng-value="\'AU\'">AU</md-option>\n          <md-option ng-value="\'EU\'">EU</md-option>\n          <md-option ng-value="\'IN\'">IN</md-option>\n          <md-option ng-value="\'CN\'">CN</md-option>\n        </md-select>\n        <div class="hint"><span translate="INTEGRATIONS.HELP.ZONE"></span></div>\n        <div ng-messages="zohoAccountForm[\'zone\'].$error" ng-show="zohoAccountForm[\'zone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.ZONE_REQUIRED">Zone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n        <input type="text" name="clientId" ng-model="vm.zohoAccount.clientId" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTID"></span></div>\n        <div ng-messages="zohoAccountForm[\'clientId\'].$error" ng-show="zohoAccountForm[\'clientId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n        <input type="text" name="clientSecret" ng-model="vm.zohoAccount.clientSecret" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTSECRET"></span></div>\n        <div ng-messages="zohoAccountForm[\'clientSecret\'].$error" ng-show="zohoAccountForm[\'clientSecret\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CODE">Code</label>\n        <input type="text" name="code" ng-model="vm.zohoAccount.code" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.CODE"></span></div>\n        <div ng-messages="zohoAccountForm[\'code\'].$error" ng-show="zohoAccountForm[\'code\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CODE_REQUIRED">Code field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.zohoAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="zohoAccountForm[\'serverUrl\'].$error" ng-show="zohoAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.zohoAccount.description">\n\n        <div ng-messages="zohoAccountForm[\'description\'].$error" ng-show="zohoAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZohoAccount" ng-click="vm.saveZohoAccount()" class="send-button md-accent md-raised" ng-disabled="zohoAccountForm.$invalid || zohoAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZohoAccount" ng-click="vm.addNewZohoAccount()" class="send-button md-accent md-raised" ng-disabled="zohoAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZOHOACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_ZOHOACCOUNT">\n          ADD ZOHOACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZohoAccount" ng-click="vm.deleteZohoAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zohoAccounts/edit/configurations/dialog.html",'<md-dialog class="zohoConfiguration-dialog" aria-label="New ZohoConfiguration">\n  <form name="zohoConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.zohoConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="zohoConfigurationForm[\'name\'].$error" ng-show="zohoConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.zohoConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zohoConfigurationForm[\'channel\'].$error" ng-show="zohoConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.zohoConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zohoConfigurationForm[\'type\'].$error" ng-show="zohoConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZohoConfiguration" ng-click="vm.saveZohoConfiguration()" class="send-button md-accent md-raised" ng-disabled="zohoConfigurationForm.$invalid || zohoConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZohoConfiguration" ng-click="vm.addNewZohoConfiguration()" class="send-button md-accent md-raised" ng-disabled="zohoConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZOHOCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_ZOHOCONFIGURATION">\n          ADD ZOHOCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZohoConfiguration" ng-click="vm.deleteZohoConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",'<md-dialog class="zohoAccount-item-dialog" aria-label="New Item">\n  <form name="zohoAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="zohoAccountItemForm.type.$error" ng-show="zohoAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="zohoAccountItemForm.content.$error" ng-show="zohoAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="zohoAccountItemForm.key.$error" ng-show="zohoAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="zohoAccountItemForm.keyType.$error" ng-show="zohoAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="zohoAccountItemForm.keyContent.$error" ng-show="zohoAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="zohoAccountItemForm.variableName.$error" ng-show="zohoAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="zohoAccountItemForm.customField.$error" ng-show="zohoAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="zohoAccountItemForm.$invalid || zohoAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="zohoAccountItemForm.$invalid || zohoAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="zohoAccountItemForm.type.$error" ng-show="zohoAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="zohoAccountItemForm.option.$error" ng-show="zohoAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="zohoAccountItemForm.content.$error" ng-show="zohoAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="zohoAccountItemForm.variableName.$error" ng-show="zohoAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="zohoAccountItemForm.type.$error" ng-show="zohoAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="zohoAccountItemForm.content.$error"\n          ng-show="zohoAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="zohoAccountItemForm.variableName.$error"\n          ng-show="zohoAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/zohoAccounts/edit/view.html",'<div id="integrations-zohoAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-zohoAccounts-button md-icon-button" aria-label="Go to zohoAccounts" ng-click="vm.gotoZohoAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_ZOHOACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="zohoAccount-image" hide-xs>\n          <img ng-src="assets/images/business/zohoAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.zohoAccount.id}}\n            <span ng-if="vm.zohoAccount.name">{{vm.zohoAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.zohoAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveZohoAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zohoAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.zohoAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.HOST">Host</label>\n                <md-select name="host" ng-model="vm.zohoAccount.host" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'zoho.com\'">zoho.com</md-option>\n                  <md-option ng-value="\'zoho.eu\'">zoho.eu</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.ZONE">Zone</label>\n                <md-select name="zone" ng-model="vm.zohoAccount.zone" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'US\'">US</md-option>\n                  <md-option ng-value="\'AU\'">AU</md-option>\n                  <md-option ng-value="\'EU\'">EU</md-option>\n                  <md-option ng-value="\'IN\'">IN</md-option>\n                  <md-option ng-value="\'CN\'">CN</md-option>\n                </md-select>\n                <div class="hint"><span translate="INTEGRATIONS.HELP.ZONE"></span></div>\n                <div ng-messages="generalForm[\'zone\'].$error" ng-show="generalForm[\'zone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.ZONE_REQUIRED">Zone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n                <input type="text" name="clientId" ng-model="vm.zohoAccount.clientId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTID"></span></div>\n                <div ng-messages="generalForm[\'clientId\'].$error" ng-show="generalForm[\'clientId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n                <input type="text" name="clientSecret" ng-model="vm.zohoAccount.clientSecret" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTSECRET"></span></div>\n                <div ng-messages="generalForm[\'clientSecret\'].$error" ng-show="generalForm[\'clientSecret\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CODE">Code</label>\n                <input type="text" name="code" ng-model="vm.zohoAccount.code" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.CODE"></span></div>\n                <div ng-messages="generalForm[\'code\'].$error" ng-show="generalForm[\'code\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CODE_REQUIRED">Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.REFRESHTOKEN">RefreshToken</label>\n                <input type="text" name="refreshToken" ng-model="vm.zohoAccount.refreshToken" disabled>\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.REFRESHTOKEN"></span></div>\n                <div ng-messages="generalForm[\'refreshToken\'].$error" ng-show="generalForm[\'refreshToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.REFRESHTOKEN_REQUIRED">RefreshToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.zohoAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.zohoAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zohoAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="ZohoAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.zohoAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZohoConfiguration($event)" class="md-icon-button" aria-label="create zohoConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="zohoConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedZohoConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getZohoConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ zohoConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteZohoConfiguration($event, zohoConfiguration)" translate="INTEGRATIONS.DELETE_ZOHOCONFIGURATION">\n                            Delete ZohoConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.ADVANCED">\n                        ADVANCED\n                      </span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_SEARCH"></label>\n                        <md-select ng-model="vm_cc.zohoConfiguration.moduleSearch" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'contact_lead\', value: \'Contact & Lead\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_CREATE"></label>\n                        <md-select ng-model="vm_cc.zohoConfiguration.moduleCreate" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'nothing\', value: \'Nothing\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZohoConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/zohoAccounts/zohoAccounts.html",'<div id="zohoAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.ZOHOACCOUNTS">ZohoAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedZohoAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedZohoAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-zohoAccounts-count">\n          <span>{{vm.selectedZohoAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllZohoAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectZohoAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedZohoAccounts" csv-label="true" filename="zohoAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedZohoAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- ZOHOACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedZohoAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getZohoAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="host">{{ \'INTEGRATIONS.HOST\' | translate }}</th>\n                <th md-column md-order-by="zone">{{ \'INTEGRATIONS.ZONE\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.zohoAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="zohoAccount" md-select-id="id" ng-repeat="zohoAccount in vm.zohoAccounts.rows">\n                <td md-cell ng-if="zohoAccount.userpic"><img class="avatar" alt="{{zohoAccount.name}}" ng-src="api/users/{{zohoAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!zohoAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{zohoAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="id ">{{zohoAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="name ">{{zohoAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="host ">{{ vm.arrayhost[zohoAccount.host].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="zone ">{{ vm.arrayzone[zohoAccount.zone].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(zohoAccount, $event    )" translate="INTEGRATIONS.EDIT_ZOHOACCOUNT">\n                          Edit ZohoAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(zohoAccount, $event    )" translate="INTEGRATIONS.TEST_ZOHOACCOUNT">\n                          Test ZohoAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(zohoAccount, $event    )" translate="INTEGRATIONS.DELETE_ZOHOACCOUNT">\n                          Delete ZohoAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.zohoAccounts.count}}" md-on-paginate="vm.getZohoAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / ZOHOACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD ZOHOACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-zohoAccount-button" ng-click="vm.createOrEditZohoAccount($event)" aria-label="add zohoAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_ZOHOACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD ZOHOACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/jscripty/views/projects/create/dialog.html",'<md-dialog class="project-dialog" aria-label="New Project">\n  <form name="projectForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="JSCRIPTY.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.project.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newProject">\n\n        <div class="hint"><span translate="JSCRIPTY.HELP.NAME"></span></div>\n        <div ng-messages="projectForm[\'name\'].$error" ng-show="projectForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="JSCRIPTY.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.project.description">\n\n        <div ng-messages="projectForm[\'description\'].$error" ng-show="projectForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="JSCRIPTY.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newProject" ng-click="vm.saveProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid || projectForm.$pristine" aria-label="SAVE" translate="JSCRIPTY.SAVE" translate-attr-aria-label="JSCRIPTY.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newProject" ng-click="vm.addNewProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid" aria-label="ADD" translate="JSCRIPTY.ADD_PROJECT" translate-attr-aria-label="JSCRIPTY.ADD_PROJECT">\n          ADD PROJECT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newProject" ng-click="vm.deleteProject($event)" aria-label="DELETE" translate translate-attr-aria-label="JSCRIPTY.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="JSCRIPTY.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/jscripty/views/projects/edit/clone/clone.html",'<md-dialog class="project-dialog" aria-label="Clone Project">\n  <form name="projectForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="JSCRIPTY.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.project.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newProject">\n\n        <div class="hint"><span translate="JSCRIPTY.HELP.NAME"></span></div>\n        <div ng-messages="projectForm[\'name\'].$error" ng-show="projectForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid" aria-label="CLONE" translate="JSCRIPTY.CLONE_PROJECT" translate-attr-aria-label="JSCRIPTY.CLONE_PROJECT">\n        CLONE PROJECT\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",'<md-dialog class="session-dialog" aria-label="New Session">\n  <form name="sessionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <md-list>\n        <md-subheader class="md-no-sticky">\n          <div class="margin-bottom-5"><span translate="JSCRIPTY.ANSWERS">Answers</span></div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.STARTTIME" class="ng-scope font-weight-700">Start Time</span>: <span class="ng-binding">{{vm.session.starttime | date:\'medium\'}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.MEMBERNAME" class="ng-scope font-weight-700">Member Name</span>: <span class="ng-binding">{{vm.session.membername}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.PROJECT" class="ng-scope font-weight-700">Project</span>: <span class="ng-binding">{{vm.project.name}}</span>\n          </div>\n        </md-subheader>\n        <md-list-item ng-if="vm.questions.rows.length" class="md-2-line contact-item" ng-repeat="question in vm.questions.rows">\n          <div class="md-list-item-text compact">\n            <h3>{{$index+1}}. {{question.question}}</h3>\n            <p>{{question.answer}}</p>\n          </div>\n          <md-divider ng-if="!$last"></md-divider>\n        </md-list-item>\n        <md-list-item ng-if="!vm.questions.rows.length" class="md-2-line contact-item">\n          <div class="md-list-item-text compact">\n            <h3><span class="text-boxed-light" translate="JSCRIPTY.NO_RESULTS_AVAILABLE">No results available</span></h3>\n          </div>\n        </md-list-item>\n      </md-list>\n\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/jscripty/views/projects/edit/view.html",'<div id="jscripty-project" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-projects-button md-icon-button" aria-label="Go to projects" ng-click="vm.gotoProjects()" translate translate-attr-aria-label="JSCRIPTY.GO_TO_PROJECTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="project-image" hide-xs>\n          <img ng-src="assets/images/business/projects.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.project.id}}\n            <span ng-if="vm.project.name">{{vm.project.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.CREATED_AT"></span> <span>{{vm.project.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.project, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="JSCRIPTY.CLONE_PROJECT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveProject()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (builderForm.$invalid) || (previewForm.$invalid) || (sessionsForm.$invalid) || (answersForm.$invalid)" translate="JSCRIPTY.SAVE" translate-attr-aria-label="JSCRIPTY.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="JSCRIPTY.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="JSCRIPTY.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.project.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="JSCRIPTY.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.project.enableUncompleteSave" aria-label="EnableUncompleteSave" ng-disabled="!vm.crudPermissions.canEdit"><span translate="JSCRIPTY.ENABLEUNCOMPLETESAVE">EnableUncompleteSave</span></md-switch>\n                <div class="hint"><span translate="JSCRIPTY.HELP.ENABLEUNCOMPLETESAVE"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.project.sendUnpauseOnSubmit" aria-label="SendUnpauseOnSubmit" ng-disabled="!vm.crudPermissions.canEdit"><span translate="JSCRIPTY.SENDUNPAUSEONSUBMIT">SendUnpauseOnSubmit</span></md-switch>\n                <div class="hint"><span translate="JSCRIPTY.HELP.SENDUNPAUSEONSUBMIT"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="JSCRIPTY.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.project.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="JSCRIPTY.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.BUILDER">BUILDER</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container builder md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ProjectBuilderController as vm_bc" ng-init="vm_bc.init(vm.project)">\n              <mw-form-builder ng-if="vm_bc.project.formData" form-data="vm_bc.project.formData" options="vm_bc.optionsBuilder" read-only="false"></mw-form-builder>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.PREVIEW">PREVIEW</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container preview md-background-bg md-whiteframe-1dp">\n            <div layout="column" layout-align="center" ng-controller="ProjectViewerController as vm_vc" ng-init="vm_vc.init(vm.project)">\n              <div layout="row" layout-align="center">\n                <md-button class="md-raised md-accent" aria-label="Reset" ng-click="vm_vc.resetViewer()">\n                  Reset\n                </md-button>\n              </div>\n              <mw-form-viewer ng-if="vm_vc.project.formData" form-data="vm_vc.project.formData" response-data="vm_vc.responseData" on-submit="vm_vc.onSubmit($event)" api="vm_vc.formViewer"></mw-form-viewer>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.SESSIONS">SESSIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container sessions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ProjectSessionsController as vm_dc" ng-init="vm_dc.init(vm.project, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedProjectSessions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="JSCRIPTY.SESSIONS">Sessions</span>\n                  <ms-search-bar on-search="vm_dc.getProjectSessions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedProjectSessions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedProjectSessions.length}} {{vm_dc.selectedProjectSessions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedProjectSessions" csv-label="true" filename="projects.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedProjectSessions($event)" aria-label="delete selected" translate translate-attr-label="JSCRIPTY.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedProjectSessions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getProjectSessions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'JSCRIPTY.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'JSCRIPTY.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'JSCRIPTY.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="membername">\n                        {{ \'JSCRIPTY.MEMBERNAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'JSCRIPTY.CALLERIDNUM\' | translate }}\n                      </th>\n                      <th md-column md-order-by="completed">\n                        {{ \'JSCRIPTY.COMPLETE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="session" md-select-id="id" ng-repeat="session in vm_dc.projectSessions.rows">\n                      <td md-cell>\n                        {{session.id}}\n                      </td>\n                      <td md-cell>\n                        {{ session.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ session.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{session.membername}}\n                      </td>\n                      <td md-cell>\n                        {{session.calleridnum}}\n                      </td>\n                      <td md-cell class="completed ">\n                        <md-icon md-colors="{color: {{session.completed ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{session.completed? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="JSCRIPTY.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.showQuestionsProjectSession($event, session)" translate="JSCRIPTY.SHOW_QUESTIONS_SESSION">\n                                Results Session\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(session, $event)" translate="JSCRIPTY.DELETE_SESSION">\n                                Delete Session\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.projectSessions.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="JSCRIPTY.NO_SESSION_AVAILABLE">No session available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'JSCRIPTY.PAGE\' | translate}}:\', rowsPerPage: \'{{\'JSCRIPTY.ROWSPERPAGE\' | translate}}:\', of: \'{{\'JSCRIPTY.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.projectSessions.count}}" md-on-paginate="vm_dc.getProjectSessions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.ANSWERS">ANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container answers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ProjectAnswersController as vm_an" ng-init="vm_an.init(vm.project, vm.userProfile)">\n              <div class="pb-16" layout="row">\n                <div class="h2 secondary-text" translate="JSCRIPTY.ANSWERS" flex>Answers</div>\n                <div layout="row" layout-align="space-between center" flex>\n                  <md-date-range localization-map="vm_an.localizationMap" ng-model="vm_an.pickerModel" auto-confirm="true" show-template="true" md-on-select="vm_an.getAnswers()" placeholder="{{ \'DASHBOARDS.ALL\' | translate }}"></md-date-range>\n                  <md-button type="button" ng-if="vm_an.currentUser.role === \'admin\' || vm_an.userProfile.downloadJscriptySessions" ng-disabled="!vm_an.answers" ng-click="vm_an.getSummary($event)" class="md-accent md-raised md-button ng-scope md-default-theme md-ink-ripple md-green-500-bg md-icon-button" title="{{\'JSCRIPTY.EXPORT_TO_CSV\' | translate}}">\n                    <md-icon md-font-icon="icon-file-excel" class="md-default-theme md-font material-icons icon-file-excel"></md-icon>\n                  </md-button>\n                </div>\n              </div>\n              <div layout="row">\n                <md-card class="md-whiteframe-1dp" ng-if="vm_an.answers && vm_an.hasIdAnswers" flex>\n                  <md-list>\n                    <md-list-item class="md-2-line contact-item" ng-repeat="(key, question) in vm_an.answers">\n                      <div class="md-list-item-text compact" layout-padding>\n                        <h3>{{question.question}}</h3>\n                        <md-table-container>\n                          <table md-table>\n                            <thead md-head>\n                              <tr md-row>\n                                <th md-column></th>\n                                <th md-column>#</th>\n                                <th md-column>%</th>\n                              </tr>\n                            </thead>\n                            <tbody md-body>\n                              <tr md-row ng-repeat="(key, value) in question.answers">\n                                <td md-cell>{{key}}</td>\n                                <td md-cell width="20px">{{value}}</td>\n                                <td md-cell width="20px">{{value*100/question.sum | number:1}}</td>\n                              </tr>\n                              <tr md-row>\n                                <td md-cell><b>{{\'JSCRIPTY.TOTAL\' | translate}}</b></td>\n                                <td md-cell width="20px"><b>{{question.sum}}</b></td>\n                                <td md-cell width="20px"><b>100</b></td>\n                              </tr>\n                            </tbody>\n                          </table>\n                        </md-table-container>\n                      </div>\n                      <md-divider ng-if="!$last"></md-divider>\n                    </md-list-item>\n                  </md-list>\n                </md-card>\n                <span ng-if="!vm_an.answers || !vm_an.hasIdAnswers" class="text-boxed-light" translate="JSCRIPTY.NO_ANSWERS_AVAILABLE">No answers available</span>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/jscripty/views/projects/projects.html",'<div id="projects" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-script" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="JSCRIPTY.PROJECTS">Projects</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="JSCRIPTY.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedProjects.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedProjects =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="JSCRIPTY.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-projects-count">\n          <span>{{vm.selectedProjects.length}}</span>\n          <span translate="JSCRIPTY.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="JSCRIPTY.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllProjects()" translate="JSCRIPTY.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectProjects()" translate="JSCRIPTY.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedProjects" csv-label="true" filename="projects.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedProjects($event)" aria-label="delete selected" translate translate-attr-label="JSCRIPTY.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- PROJECT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedProjects" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getProjects">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'JSCRIPTY.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'JSCRIPTY.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'JSCRIPTY.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'JSCRIPTY.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.projects.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="JSCRIPTY.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="project" md-select-id="id" ng-repeat="project in vm.projects.rows">\n                <td md-cell ng-if="project.userpic"><img class="avatar" alt="{{project.name}}" ng-src="api/users/{{project.id}}/avatar" /></td>\n                <td md-cell ng-if="!project.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{project.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="id ">{{project.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="name ">{{project.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="description ">{{project.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="createdAt ">{{project.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="JSCRIPTY.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(project, $event    )" translate="JSCRIPTY.EDIT_PROJECT">\n                          Edit Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(project, $event    )" translate="JSCRIPTY.CLONE_PROJECT">\n                          clone Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.sessionsgoto(project, $event    )" translate="JSCRIPTY.SESSIONS_PROJECT">\n                          Sessions Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(project, $event    )" translate="JSCRIPTY.DELETE_PROJECT">\n                          Delete Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'JSCRIPTY.PAGE\' | translate}}:\', rowsPerPage: \'{{\'JSCRIPTY.ROWSPERPAGE\' | translate}}:\', of: \'{{\'JSCRIPTY.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.projects.count}}" md-on-paginate="vm.getProjects" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PROJECT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD PROJECT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-project-button" ng-click="vm.createOrEditProject($event)" aria-label="add project" translate translate-attr-aria-label="JSCRIPTY.ADD_PROJECT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD PROJECT BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/mailAccounts/create/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="mailAccountForm[\'name\'].$error" ng-show="mailAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.mailAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'key\'].$error" ng-show="mailAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="MAIL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.EMAIL_ADDRESS">Email_Address</label>\n        <input type="email" name="email" ng-model="vm.mailAccount.email" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'email\'].$error" ng-show="mailAccountForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.EMAIL_ADDRESS_REQUIRED">Email_Address field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="MAIL.ERRORS.EMAIL_ADDRESS_MUST_VALID">Email_Address must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.mailAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountForm[\'ListId\'].$error" ng-show="mailAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.mailAccount.active" aria-label="Active"><span translate="MAIL.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.newMailAccount" class="md-block">\n        <label translate="MAIL.SERVICE">Service</label>\n        <md-select name="cservice" ng-model="vm.mailAccount.cservice" required>\n          <md-option ng-value="null">Custom</md-option>\n          <md-option ng-value="\'gmail\'">Gmail</md-option>\n          <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n          <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n          <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n        </md-select>\n        <div ng-messages="mailAccountForm[\'cservice\'].$error" ng-show="mailAccountForm[\'cservice\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" class="md-block">\n        <label translate="MAIL.IMAP_HOST">IMAP_Host</label>\n        <input type="text" name="Imap.host" ng-model="vm.mailAccount.Imap.host" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'Imap.host\'].$error" ng-show="mailAccountForm[\'Imap.host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.IMAP_HOST_REQUIRED">IMAP_Host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" class="md-block">\n        <label translate="MAIL.IMAP_PORT">IMAP_Port</label>\n        <input type="number" name="Imap.port" ng-model="vm.mailAccount.Imap.port" value="465" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'Imap.port\'].$error" ng-show="mailAccountForm[\'Imap.port\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.IMAP_PORT_REQUIRED">IMAP_Port field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" class="md-block">\n        <label translate="MAIL.SMTP_HOST">SMTP_Host</label>\n        <input type="text" name="Smtp.host" ng-model="vm.mailAccount.Smtp.host" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'Smtp.host\'].$error" ng-show="mailAccountForm[\'Smtp.host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" class="md-block">\n        <label translate="MAIL.SMTP_PORT">SMTP_Port</label>\n        <input type="number" name="Smtp.port" ng-model="vm.mailAccount.Smtp.port" value="465" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'Smtp.port\'].$error" ng-show="mailAccountForm[\'Smtp.port\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.mailAccount.cservice !== undefined && vm.mailAccount.cservice == null && vm.newMailAccount" class="md-block">\n        <md-switch ng-model="vm.mailAccount.cauthentication" aria-label="Authentication"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="(vm.mailAccount.cauthentication == true || vm.mailAccount.cservice != null) && vm.newMailAccount" class="md-block">\n        <label translate="MAIL.USERNAME">Username</label>\n        <input type="text" name="cuser" ng-model="vm.mailAccount.cuser" ng-required="true">\n\n        <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n        <div ng-messages="mailAccountForm[\'cuser\'].$error" ng-show="mailAccountForm[\'cuser\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="(vm.mailAccount.cauthentication == true || vm.mailAccount.cservice != null) && vm.newMailAccount">\n        <label translate="MAIL.PASSWORD">Password</label>\n        <input type="password" name="cpassword" ng-model="vm.mailAccount.cpassword" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n        <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n        <div ng-messages="mailAccountForm[\'cpassword\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailAccount.description">\n\n        <div ng-messages="mailAccountForm[\'description\'].$error" ng-show="mailAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailAccount" ng-click="vm.saveMailAccount()" class="send-button md-accent md-raised" ng-disabled="mailAccountForm.$invalid || mailAccountForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailAccount" ng-click="vm.addNewMailAccount()" class="send-button md-accent md-raised" ng-disabled="mailAccountForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILACCOUNT" translate-attr-aria-label="MAIL.ADD_MAILACCOUNT">\n          ADD MAILACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailAccount" ng-click="vm.deleteMailAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",'<md-dialog class="mailAccount-dialog" aria-label="mailAccount" ng-init="vm.onInit()">\n  <form name="mailAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.AGENTADD_MAILACCOUNT">Add Agent to mailAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/agent/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'agent\'].$error" ng-show="mailAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'timeout\'].$error" ng-show="mailAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'times\'].$error" ng-show="mailAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.REPLY_TYPE">Reply_Type</label>\n        <md-select name="replyType" ng-model="vm.autoreply.replyType" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="0">Reply</md-option>\n          <md-option ng-value="1">Reply All</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'replyType\'].$error" ng-show="mailAccountFormApp[\'replyType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.REPLY_TYPE_REQUIRED">Reply_Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="MAIL.TEXT">Text</label>\n        <textarea aria-label="Text text" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.autoreply.text"></textarea>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/close/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'disposition\'].$error" ng-show="mailAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'condition\'].$error" ng-show="mailAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'truepriority\'].$error" ng-show="mailAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'falsepriority\'].$error" ng-show="mailAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'priority\'].$error" ng-show="mailAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/noop/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'value\'].$error" ng-show="mailAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/queue/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'queue\'].$error" ng-show="mailAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'timeout\'].$error" ng-show="mailAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/system/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'command\'].$error" ng-show="mailAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'variable\'].$error" ng-show="mailAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/tag/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'tag\'].$error" ng-show="mailAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/mailCannedAnswers/dialog.html",'<md-dialog class="mailCannedAnswer-dialog" aria-label="New MailCannedAnswer">\n  <form name="mailCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.mailCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="mailCannedAnswerForm[\'key\'].$error" ng-show="mailCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="MAIL.VALUE">Value</label>\n        <textarea aria-label="Value value" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailCannedAnswer.value"></textarea>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailCannedAnswer.description">\n\n        <div ng-messages="mailCannedAnswerForm[\'description\'].$error" ng-show="mailCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailCannedAnswer" ng-click="vm.saveMailCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="mailCannedAnswerForm.$invalid || mailCannedAnswerForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailCannedAnswer" ng-click="vm.addNewMailCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="mailCannedAnswerForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILCANNEDANSWER" translate-attr-aria-label="MAIL.ADD_MAILCANNEDANSWER">\n          ADD MAILCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailCannedAnswer" ng-click="vm.deleteMailCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/view.html",'<div id="mail-mailAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-mailAccounts-button md-icon-button" aria-label="Go to mailAccounts" ng-click="vm.gotoMailAccounts()" translate translate-attr-aria-label="MAIL.GO_TO_MAILACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="mailAccount-image" hide-xs>\n          <img ng-src="assets/images/business/mailAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.mailAccount.id}}\n            <span ng-if="vm.mailAccount.name">{{vm.mailAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MAIL.CREATED_AT"></span> <span>{{vm.mailAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.mailAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MAIL.GOTO_MAILACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.mailAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MAIL.AGENTADD_MAILACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMailAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (imapForm.$invalid) || (smtpForm.$invalid) || (dispositionForm.$invalid) || (mailDispositionsForm.$invalid) || (mailCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.mailAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.mailAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="MAIL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.EMAIL_ADDRESS">Email_Address</label>\n                <input type="email" name="email" ng-model="vm.mailAccount.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.EMAIL_ADDRESS_REQUIRED">Email_Address field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="MAIL.ERRORS.EMAIL_ADDRESS_MUST_VALID">Email_Address must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.mailAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.active" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.FONT_FAMILY">Font_Family</label>\n                <ms-font-family name="fontFamily" ng-model="vm.mailAccount.fontFamily" required></ms-font-family>\n                <div class="hint"><span translate="MAIL.HELP.FONT_FAMILY"></span></div>\n                <div ng-messages="generalForm[\'fontFamily\'].$error" ng-show="generalForm[fontFamily].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FONT_FAMILY_REQUIRED">Font_Family field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.FONT_SIZE">Font_Size</label>\n                <input type="number" name="fontSize" ng-model="vm.mailAccount.fontSize" min="8" max="72" value="13" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MAIL.HELP.FONT_SIZE"></span></div>\n                <div ng-messages="generalForm[\'fontSize\'].$error" ng-show="generalForm[\'fontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_REQUIRED">Font_Size field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Font_Size must be a valid greater or equal than</span> <span>8</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">Font_Size must be a valid greater or equal than</span> <span>72</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="MAIL.TEMPLATE">Template</label>\n                <textarea aria-label="Template template" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailAccount.template"></textarea>\n              </div>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.markAsUnread" aria-label="mark_as_unread" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.MARK_AS_UNREAD">mark_as_unread</span></md-switch>\n                <div class="hint"><span translate="MAIL.HELP.MARK_AS_UNREAD"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.mailAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.mailAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="mailAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="MAIL.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="mailAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.queueTransfer == true" class="md-block">\n                <label translate="MAIL.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.mailAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.agentTransfer == true" class="md-block">\n                <label translate="MAIL.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.mailAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.IMAP">IMAP</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container imap md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.IMAP">IMAP</div>\n            </div>\n            <form name="imapForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.SERVICE">Service</label>\n                <md-select name="Imap.service" ng-model="vm.mailAccount.Imap.service" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Custom</md-option>\n                  <md-option ng-value="\'gmail\'">Gmail</md-option>\n                  <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n                  <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n                  <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n                </md-select>\n                <div ng-messages="imapForm[\'Imap.service\'].$error" ng-show="imapForm[\'Imap.service\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" class="md-block">\n                <label translate="MAIL.IMAP_HOST">IMAP_Host</label>\n                <input type="text" name="Imap.host" ng-model="vm.mailAccount.Imap.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="imapForm[\'Imap.host\'].$error" ng-show="imapForm[\'Imap.host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.IMAP_HOST_REQUIRED">IMAP_Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" class="md-block">\n                <label translate="MAIL.IMAP_PORT">IMAP_Port</label>\n                <input type="number" name="Imap.port" ng-model="vm.mailAccount.Imap.port" value="465" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="imapForm[\'Imap.port\'].$error" ng-show="imapForm[\'Imap.port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.IMAP_PORT_REQUIRED">IMAP_Port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.tls" aria-label="ssl" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.SSL">ssl</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Imap.service == null" class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.authentication" aria-label="Authentication" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Imap.authentication == true || vm.mailAccount.Imap.service != null" class="md-block">\n                <label translate="MAIL.USERNAME">Username</label>\n                <input type="text" name="Imap.user" ng-model="vm.mailAccount.Imap.user" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n                <div ng-messages="imapForm[\'Imap.user\'].$error" ng-show="imapForm[\'Imap.user\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.mailAccount.Imap.authentication == true || vm.mailAccount.Imap.service != null">\n                <label translate="MAIL.PASSWORD">Password</label>\n                <input type="password" name="Imap.password" ng-model="vm.mailAccount.Imap.password" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n                <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n                <div ng-messages="imapForm[\'Imap.password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="MAIL.MAILBOX">mailbox</label>\n                <input type="text" name="Imap.mailbox" ng-model="vm.mailAccount.Imap.mailbox" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="imapForm[\'Imap.mailbox\'].$error" ng-show="imapForm[\'Imap.mailbox\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.MAILBOX_REQUIRED">mailbox field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.CONNTIMEOUT">connTimeout</label>\n                <input type="number" name="Imap.connTimeout" ng-model="vm.mailAccount.Imap.connTimeout" min="1" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="imapForm[\'Imap.connTimeout\'].$error" ng-show="imapForm[\'Imap.connTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_REQUIRED">connTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">connTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.AUTHTIMEOUT">authTimeout</label>\n                <input type="number" name="Imap.authTimeout" ng-model="vm.mailAccount.Imap.authTimeout" min="1" value="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="imapForm[\'Imap.authTimeout\'].$error" ng-show="imapForm[\'Imap.authTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_REQUIRED">authTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">authTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.SMTP">SMTP</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container smtp md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.SMTP">SMTP</div>\n            </div>\n            <form name="smtpForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.SERVICE">Service</label>\n                <md-select name="Smtp.service" ng-model="vm.mailAccount.Smtp.service" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Custom</md-option>\n                  <md-option ng-value="\'gmail\'">Gmail</md-option>\n                  <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n                  <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n                  <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n                </md-select>\n                <div ng-messages="smtpForm[\'Smtp.service\'].$error" ng-show="smtpForm[\'Smtp.service\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" class="md-block">\n                <label translate="MAIL.SMTP_HOST">SMTP_Host</label>\n                <input type="text" name="Smtp.host" ng-model="vm.mailAccount.Smtp.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="smtpForm[\'Smtp.host\'].$error" ng-show="smtpForm[\'Smtp.host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" class="md-block">\n                <label translate="MAIL.SMTP_PORT">SMTP_Port</label>\n                <input type="number" name="Smtp.port" ng-model="vm.mailAccount.Smtp.port" value="465" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="smtpForm[\'Smtp.port\'].$error" ng-show="smtpForm[\'Smtp.port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Smtp.service == null" class="md-block">\n                <md-switch ng-model="vm.mailAccount.Smtp.secure" aria-label="Secure" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.SECURE">Secure</span></md-switch>\n                <div class="hint"><span translate="MAIL.HELP.SECURE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Smtp.service == null" class="md-block">\n                <md-switch ng-model="vm.mailAccount.Smtp.authentication" aria-label="Authentication" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Smtp.authentication == true || vm.mailAccount.Smtp.service != null" class="md-block">\n                <label translate="MAIL.USERNAME">Username</label>\n                <input type="text" name="Smtp.user" ng-model="vm.mailAccount.Smtp.user" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n                <div ng-messages="smtpForm[\'Smtp.user\'].$error" ng-show="smtpForm[\'Smtp.user\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.mailAccount.Smtp.authentication == true || vm.mailAccount.Smtp.service != null">\n                <label translate="MAIL.PASSWORD">Password</label>\n                <input type="password" name="Smtp.pass" ng-model="vm.mailAccount.Smtp.pass" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n                <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n                <div ng-messages="smtpForm[\'Smtp.pass\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.mandatoryDisposition" class="md-block">\n                <label translate="MAIL.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.mailAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MAIL.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="MailAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="mailAccount-detail-form-container maildispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="MAIL.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add mail dispositions" translate translate-attr-label="MAIL.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="mailAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container mailcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountMailCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountMailCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MAIL.MAILCANNEDANSWERS">MailCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getMailAccountMailCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event)" aria-label="add mailCannedAnswer" translate translate-attr-label="MAIL.ADD_MAILCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMailAccountMailCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMailAccountMailCannedAnswers.length}} {{vm_dc.selectedMailAccountMailCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMailAccountMailCannedAnswers" csv-label="true" filename="mailAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMailAccountMailCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMailAccountMailCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMailAccountMailCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'MAIL.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'MAIL.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'MAIL.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'MAIL.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'MAIL.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="mailCannedAnswer" md-select-id="id" ng-repeat="mailCannedAnswer in vm_dc.mailAccountMailCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>{{mailCannedAnswer.value | htmlToPlaintext }}</td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{ mailCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" translate="MAIL.EDIT_MAILCANNEDANSWER">\n                                Edit MailCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(mailCannedAnswer, $event)" translate="MAIL.DELETE_MAILCANNEDANSWER">\n                                Delete MailCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.mailAccountMailCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MAIL.NO_MAILCANNEDANSWER_AVAILABLE">No mailcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.mailAccountMailCannedAnswers.count}}" md-on-paginate="vm_dc.getMailAccountMailCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.mailAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="MAIL.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedMailAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedMailAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedMailAccountApps.length}} {{vm_ac.selectedMailAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedMailAccountApps($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedMailAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.mailAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editMailAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.mailAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MAIL.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getMailAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getMailAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getMailAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="MAIL.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMailAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMailAccountInteractions.length}} {{vm_dc.selectedMailAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMailAccountInteractions" csv-label="true" filename="mailAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMailAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMailAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMailAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'MAIL.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'MAIL.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="subject">\n                        {{ \'MAIL.SUBJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'MAIL.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'MAIL.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'MAIL.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'MAIL.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'MAIL.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.mailAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <div class="width-300">\n                          <span class="text-truncate font-size-12">\n                            {{interaction.subject}}\n                          </span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'MAIL.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'MAIL.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spymailInteraction($event, interaction)" translate="MAIL.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.mailInteractionDownload(interaction, $event, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.mailInteractionDownload(interaction, $event)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="MAIL.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.mailAccountInteractions.rows.length">\n                      <td md-cell colspan="13">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MAIL.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.mailAccountInteractions.count}}" md-on-paginate="vm_dc.getMailAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/mail/views/mailAccounts/mailAccounts.html",'<div id="mailAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILACCOUNTS">MailAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMailAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailAccounts-count">\n          <span>{{vm.selectedMailAccounts.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailAccounts()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailAccounts()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailAccounts" csv-label="true" filename="mailAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailAccounts($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- MAILACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'MAIL.KEY\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'MAIL.EMAIL_ADDRESS\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MAIL.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailAccount" md-select-id="id" ng-repeat="mailAccount in vm.mailAccounts.rows">\n                <td md-cell ng-if="mailAccount.userpic"><img class="avatar" alt="{{mailAccount.name}}" ng-src="api/users/{{mailAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!mailAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{mailAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="id ">{{mailAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="name ">{{mailAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="key ">{{mailAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="email ">{{mailAccount.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{mailAccount.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{mailAccount.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="description ">{{mailAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(mailAccount, $event    )" translate="MAIL.EDIT_MAILACCOUNT">\n                          Edit MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.verifysmtpverifysmtp(mailAccount, $event    )" translate="MAIL.VERIFYSMTP_MAILACCOUNT">\n                          verifysmtp MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(mailAccount, $event    )" translate="MAIL.INTERACTIONS_MAILACCOUNT">\n                          Interactions MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(mailAccount, $event    )" translate="MAIL.GOTOREALTIME_MAILACCOUNT">\n                          goToRealtime MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(mailAccount, $event    )" translate="MAIL.AGENTADD_MAILACCOUNT">\n                          AgentAdd MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(mailAccount, $event    )" translate="MAIL.DELETE_MAILACCOUNT">\n                          Delete MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailAccounts.count}}" md-on-paginate="vm.getMailAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MAILACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MAILACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailAccount-button" ng-click="vm.createOrEditMailAccount($event)" aria-label="add mailAccount" translate translate-attr-aria-label="MAIL.ADD_MAILACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MAILACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/mailQueues/create/dialog.html",'<md-dialog class="mailQueue-dialog" aria-label="New MailQueue">\n  <form name="mailQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newMailQueue">\n\n        <div class="hint"><span translate="MAIL.HELP.NAME"></span></div>\n        <div ng-messages="mailQueueForm[\'name\'].$error" ng-show="mailQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MAIL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.mailQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="mailQueueForm[\'strategy\'].$error" ng-show="mailQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.mailQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="mailQueueForm[\'timeout\'].$error" ng-show="mailQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailQueue.description">\n\n        <div ng-messages="mailQueueForm[\'description\'].$error" ng-show="mailQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailQueue" ng-click="vm.saveMailQueue()" class="send-button md-accent md-raised" ng-disabled="mailQueueForm.$invalid || mailQueueForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailQueue" ng-click="vm.addNewMailQueue()" class="send-button md-accent md-raised" ng-disabled="mailQueueForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILQUEUE" translate-attr-aria-label="MAIL.ADD_MAILQUEUE">\n          ADD MAILQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailQueue" ng-click="vm.deleteMailQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",'<md-dialog class="mailQueue-dialog" aria-label="mailQueue" ng-init="vm.onInit()">\n  <form name="mailQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.AGENTADD_MAILQUEUE">Add Agent to mailQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",'<md-dialog class="mailQueue-dialog" aria-label="mailQueue" ng-init="vm.onInit()">\n  <form name="mailQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailQueues/edit/view.html",'<div id="mail-mailQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-mailQueues-button md-icon-button" aria-label="Go to mailQueues" ng-click="vm.gotoMailQueues()" translate translate-attr-aria-label="MAIL.GO_TO_MAILQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="mailQueue-image" hide-xs>\n          <img ng-src="assets/images/business/mailQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.mailQueue.id}}\n            <span ng-if="vm.mailQueue.name">{{vm.mailQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MAIL.CREATED_AT"></span> <span>{{vm.mailQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.mailQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="MAIL.TEAMADD_MAILQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.mailQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MAIL.AGENTADD_MAILQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMailQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.mailQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MAIL.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.mailQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.mailQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.mailQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/mail/views/mailQueues/mailQueues.html",'<div id="mailQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILQUEUES">MailQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMailQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailQueues-count">\n          <span>{{vm.selectedMailQueues.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailQueues()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailQueues()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailQueues" csv-label="true" filename="mailQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailQueues($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- MAILQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'MAIL.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailQueue" md-select-id="id" ng-repeat="mailQueue in vm.mailQueues.rows">\n                <td md-cell ng-if="mailQueue.userpic"><img class="avatar" alt="{{mailQueue.name}}" ng-src="api/users/{{mailQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!mailQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{mailQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailQueue, ev) : vm.createOrEditMailQueue($event, mailQueue)" md-cell class="id ">{{mailQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailQueue, ev) : vm.createOrEditMailQueue($event, mailQueue)" md-cell class="name ">{{mailQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailQueue, ev) : vm.createOrEditMailQueue($event, mailQueue)" md-cell class="strategy ">{{ vm.arraystrategy[mailQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(mailQueue, $event    )" translate="MAIL.EDIT_MAILQUEUE">\n                          Edit MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(mailQueue, $event    )" translate="MAIL.TEAMADD_MAILQUEUE">\n                          teamadd MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(mailQueue, $event    )" translate="MAIL.AGENTADD_MAILQUEUE">\n                          agentadd MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(mailQueue, $event    )" translate="MAIL.DELETE_MAILQUEUE">\n                          Delete MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(mailQueue, $event    )" translate="MAIL.GOTOREALTIME_MAILQUEUE">\n                          goToRealtime MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailQueues.count}}" md-on-paginate="vm.getMailQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MAILQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MAILQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailQueue-button" ng-click="vm.createOrEditMailQueue($event)" aria-label="add mailQueue" translate translate-attr-aria-label="MAIL.ADD_MAILQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MAILQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/mailSubtatuses/create/dialog.html",'<md-dialog class="mailSubstatus-dialog" aria-label="New MailSubstatus">\n  <form name="mailSubstatusForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailSubstatus.name" ng-required="true" autofocus>\n\n        <div ng-messages="mailSubstatusForm[\'name\'].$error" ng-show="mailSubstatusForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailSubstatus.description">\n\n        <div ng-messages="mailSubstatusForm[\'description\'].$error" ng-show="mailSubstatusForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailSubstatus" ng-click="vm.saveMailSubstatus()" class="send-button md-accent md-raised" ng-disabled="mailSubstatusForm.$invalid || mailSubstatusForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailSubstatus" ng-click="vm.addNewMailSubstatus()" class="send-button md-accent md-raised" ng-disabled="mailSubstatusForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILSUBSTATUS" translate-attr-aria-label="MAIL.ADD_MAILSUBSTATUS">\n          ADD MAILSUBSTATUS\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailSubstatus" ng-click="vm.deleteMailSubstatus($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailSubtatuses/mailSubtatuses.html",'<div id="mailSubtatuses" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILSUBSTATUSES">MailSubstatuses</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMailSubstatuses.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailSubstatuses =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailSubtatuses-count">\n          <span>{{vm.selectedMailSubstatuses.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailSubstatuses()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailSubstatuses()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailSubstatuses" csv-label="true" filename="mailSubtatuses.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailSubstatuses($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- MAILSUBSTATUS TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailSubstatuses" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailSubstatuses">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailSubtatuses.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailSubstatus" md-select-id="id" ng-repeat="mailSubstatus in vm.mailSubtatuses.rows">\n                <td md-cell ng-if="mailSubstatus.userpic"><img class="avatar" alt="{{mailSubstatus.name}}" ng-src="api/users/{{mailSubstatus.id}}/avatar" /></td>\n                <td md-cell ng-if="!mailSubstatus.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{mailSubstatus.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditMailSubstatus($event, mailSubstatus)" md-cell class="id ">{{mailSubstatus.id}}</td>\n                <td ng-click="vm.createOrEditMailSubstatus($event, mailSubstatus)" md-cell class="name ">{{mailSubstatus.name}}</td>\n                <td ng-click="vm.createOrEditMailSubstatus($event, mailSubstatus)" md-cell class="description ">{{mailSubstatus.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(mailSubstatus, $event    )" translate="MAIL.EDIT_MAILSUBSTATUS">\n                          Edit MailSubstatus\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(mailSubstatus, $event    )" translate="MAIL.DELETE_MAILSUBSTATUS">\n                          Delete MailSubstatus\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailSubtatuses.count}}" md-on-paginate="vm.getMailSubstatuses" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MAILSUBSTATUS TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MAILSUBSTATUS BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailSubstatus-button" ng-click="vm.createOrEditMailSubstatus($event)" aria-label="add mailSubstatus" translate translate-attr-aria-label="MAIL.ADD_MAILSUBSTATUS">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MAILSUBSTATUS BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/realtime/accounts/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MAIL.ACCOUNTS">Accounts</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.vm.getMailAccounts()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailAccounts">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate}}</th>\n        <th md-column>{{\'MAIL.KEY\' | translate}}</th>\n        <th md-column>{{\'MAIL.TOTAL\' | translate}}</th>\n        <th md-column>{{\'MAIL.IN\' | translate}}</th>\n        <th md-column>{{\'MAIL.OUT\' | translate}}</th>\n        <th md-column>{{\'MAIL.IMAP_STATUS\' | translate}}</th>\n        <th md-column>{{\'MAIL.SMTP_STATUS\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.mailAccounts">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="vm.mailAccounts[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td md-cell>{{vm.mailAccounts[value].name}}</td>\n        <td md-cell>{{vm.mailAccounts[value].key}}</td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(vm.mailAccounts[value].in || 0) + (vm.mailAccounts[value].out || 0)}}</span>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-down-bold blue-fg"></md-icon>\n            </span>\n            <span class="md-capture blue-fg">{{vm.mailAccounts[value].in || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.in">{{vm.mailAccounts[value].lastIn ?  (vm.mailAccounts[value].lastIn | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-up-bold green-fg"></md-icon>\n            </span>\n            <span class="md-capture green-fg">{{vm.mailAccounts[value].out || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.out">{{vm.mailAccounts[value].lastOut ?  (vm.mailAccounts[value].lastOut | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row" layout-align="start center">\n            <div layout="column" layout-align="center center">\n              <md-button class="md-icon-button" aria-label="Status">\n                <md-tooltip>{{vm.mailAccounts[value].Imap.messageStatus}}</md-tooltip>\n                <div ng-switch="vm.mailAccounts[value].Imap.status">\n                  <md-icon ng-switch-when="error" md-font-icon="icon-alert yellow-fg"></md-icon>\n                  <md-icon ng-switch-when="disabled" md-font-icon="icon-close grey-fg"></md-icon>\n                  <md-icon ng-switch-default md-font-icon="icon-checkbox-marked-circle-outline green-fg"></md-icon>\n                </div>\n              </md-button>\n              <span class="md-caption grey-fg">{{ (\'MAIL.\' + vm.mailAccounts[value].Imap.status.toUpperCase()) | translate}}</span>\n            </div>\n            <span class="text-boxed" ng-if="vm.mailAccounts[value].active && (vm.mailAccounts[value].Imap.lastSync && vm.mailAccounts[value].Imap.lastSync != \'\')">{{vm.mailAccounts[value].Imap.lastSync | date: \'shortTime\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row" layout-align="start center" ng-if="vm.mailAccounts[value].Smtp.status">\n            <div layout="column" layout-align="center center">\n              <md-button class="md-icon-button" aria-label="Status">\n                <md-tooltip>{{vm.mailAccounts[value].Smtp.messageStatus}}</md-tooltip>\n                <md-icon md-font-icon="{{ vm.mailAccounts[value].Smtp.status == \'error\' ? \'icon-alert yellow-fg\' : \'icon-checkbox-marked-circle-outline green-fg\'}}"></md-icon>\n              </md-button>\n              <span class="md-caption grey-fg">{{ (\'MAIL.\' + vm.mailAccounts[value].Smtp.status.toUpperCase()) | translate}}</span>\n            </div>\n            <span class="text-boxed">{{vm.mailAccounts[value].Smtp.lastSync | date: \'shortTime\'}}</span>\n          </div>\n          <span class="md-caption grey-fg" ng-if="!vm.mailAccounts[value].Smtp.status">{{ \'MAIL.NEVER_VERIFIED\' | translate }}</span>\n        </td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-button ng-click="vm.goToMailAccount($event, vm.mailAccounts[value])" translate="MAIL.EDIT_ACCOUNT">\n                  Edit Account\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.verifySmtp($event, vm.mailAccounts[value])" translate="MAIL.VERIFY_SMTP">\n                  Verify Smtp\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getMailAccounts" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/mail/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MAIL.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n        <th md-column>{{ \'MAIL.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'MAIL.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'MAIL.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="MAIL.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="MAIL.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/mail/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ACCOUNTS">Accounts</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/marketplace/views/plugins/create/dialog.html",'<md-dialog class="plugin-dialog" aria-label="New Plugin">\n  <form name="pluginForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.plugin.name" ng-required="true" autofocus>\n\n        <div ng-messages="pluginForm[\'name\'].$error" ng-show="pluginForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.TYPE">Type</label>\n        <input type="text" name="type" ng-model="vm.plugin.type" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'type\'].$error" ng-show="pluginForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.plugin.active" aria-label="Active" ng-disabled="!vm.newPlugin"><span translate="MARKETPLACE.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.plugin.description">\n\n        <div ng-messages="pluginForm[\'description\'].$error" ng-show="pluginForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.ICON">Icon</label>\n        <input type="text" name="icon" ng-model="vm.plugin.icon" ng-required="true">\n\n        <div ng-messages="pluginForm[\'icon\'].$error" ng-show="pluginForm[\'icon\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.ICON_REQUIRED">Icon field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.SIDEBAR">Sidebar</label>\n        <md-select name="sidebar" ng-model="vm.plugin.sidebar" required>\n          <md-option ng-value="\'always\'">Always</md-option>\n          <md-option ng-value="\'adminOnly\'">Admin Only</md-option>\n          <md-option ng-value="\'agentOnly\'">Agent Only</md-option>\n          <md-option ng-value="\'never\'">Never</md-option>\n        </md-select>\n        <div ng-messages="pluginForm[\'sidebar\'].$error" ng-show="pluginForm[\'sidebar\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SIDEBAR_REQUIRED">Sidebar field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'adminOnly\'" class="md-block">\n        <label translate="MARKETPLACE.ADMINURL">AdminUrl</label>\n        <input type="text" name="adminUrl" ng-model="vm.plugin.adminUrl">\n\n        <div ng-messages="pluginForm[\'adminUrl\'].$error" ng-show="pluginForm[\'adminUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.ADMINURL_REQUIRED">AdminUrl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'agentOnly\'" class="md-block">\n        <label translate="MARKETPLACE.AGENTURL">AgentUrl</label>\n        <input type="text" name="agentUrl" ng-model="vm.plugin.agentUrl">\n\n        <div ng-messages="pluginForm[\'agentUrl\'].$error" ng-show="pluginForm[\'agentUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.AGENTURL_REQUIRED">AgentUrl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n        <label translate="MARKETPLACE.SCRIPTNAME">ScriptName</label>\n        <input type="text" name="scriptName" ng-model="vm.plugin.scriptName" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'scriptName\'].$error" ng-show="pluginForm[\'scriptName\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SCRIPTNAME_REQUIRED">ScriptName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n        <label translate="MARKETPLACE.SCRIPTPATH">ScriptPath</label>\n        <input type="text" name="scriptPath" ng-model="vm.plugin.scriptPath" ng-required="true">\n\n        <div ng-messages="pluginForm[\'scriptPath\'].$error" ng-show="pluginForm[\'scriptPath\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SCRIPTPATH_REQUIRED">ScriptPath field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.VERSION">Version</label>\n        <input type="text" name="version" ng-model="vm.plugin.version" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'version\'].$error" ng-show="pluginForm[\'version\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.VERSION_REQUIRED">Version field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newPlugin" ng-click="vm.savePlugin()" class="send-button md-accent md-raised" ng-disabled="pluginForm.$invalid || pluginForm.$pristine" aria-label="SAVE" translate="MARKETPLACE.SAVE" translate-attr-aria-label="MARKETPLACE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newPlugin" ng-click="vm.addNewPlugin()" class="send-button md-accent md-raised" ng-disabled="pluginForm.$invalid" aria-label="ADD" translate="MARKETPLACE.ADD_PLUGIN" translate-attr-aria-label="MARKETPLACE.ADD_PLUGIN">\n          ADD PLUGIN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newPlugin" ng-click="vm.deletePlugin($event)" aria-label="DELETE" translate translate-attr-aria-label="MARKETPLACE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MARKETPLACE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/marketplace/views/plugins/edit/view.html",'<div id="marketplace-plugin" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-plugins-button md-icon-button" aria-label="Go to plugins" ng-click="vm.gotoPlugins()" translate translate-attr-aria-label="MARKETPLACE.GO_TO_PLUGINS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="plugin-image" hide-xs>\n          <img ng-src="assets/images/business/plugins.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.plugin.id}}\n            <span ng-if="vm.plugin.name">{{vm.plugin.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MARKETPLACE.CREATED_AT"></span> <span>{{vm.plugin.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.savePlugin()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="MARKETPLACE.SAVE" translate-attr-aria-label="MARKETPLACE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MARKETPLACE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="plugin-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MARKETPLACE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.plugin.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.TYPE">Type</label>\n                <input type="text" name="type" ng-model="vm.plugin.type" disabled>\n\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.plugin.active" aria-label="Active" ng-disabled="true"><span translate="MARKETPLACE.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.plugin.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.ICON">Icon</label>\n                <input type="text" name="icon" ng-model="vm.plugin.icon" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'icon\'].$error" ng-show="generalForm[\'icon\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.ICON_REQUIRED">Icon field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.SIDEBAR">Sidebar</label>\n                <md-select name="sidebar" ng-model="vm.plugin.sidebar" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'always\'">Always</md-option>\n                  <md-option ng-value="\'adminOnly\'">Admin Only</md-option>\n                  <md-option ng-value="\'agentOnly\'">Agent Only</md-option>\n                  <md-option ng-value="\'never\'">Never</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'sidebar\'].$error" ng-show="generalForm[\'sidebar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SIDEBAR_REQUIRED">Sidebar field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'adminOnly\'" class="md-block">\n                <label translate="MARKETPLACE.ADMINURL">AdminUrl</label>\n                <input type="text" name="adminUrl" ng-model="vm.plugin.adminUrl" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'adminUrl\'].$error" ng-show="generalForm[\'adminUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.ADMINURL_REQUIRED">AdminUrl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'agentOnly\'" class="md-block">\n                <label translate="MARKETPLACE.AGENTURL">AgentUrl</label>\n                <input type="text" name="agentUrl" ng-model="vm.plugin.agentUrl" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'agentUrl\'].$error" ng-show="generalForm[\'agentUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.AGENTURL_REQUIRED">AgentUrl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n                <label translate="MARKETPLACE.SCRIPTNAME">ScriptName</label>\n                <input type="text" name="scriptName" ng-model="vm.plugin.scriptName" disabled>\n\n                <div ng-messages="generalForm[\'scriptName\'].$error" ng-show="generalForm[\'scriptName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SCRIPTNAME_REQUIRED">ScriptName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n                <label translate="MARKETPLACE.SCRIPTPATH">ScriptPath</label>\n                <input type="text" name="scriptPath" ng-model="vm.plugin.scriptPath" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'scriptPath\'].$error" ng-show="generalForm[\'scriptPath\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SCRIPTPATH_REQUIRED">ScriptPath field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.VERSION">Version</label>\n                <input type="text" name="version" ng-model="vm.plugin.version" disabled>\n\n                <div ng-messages="generalForm[\'version\'].$error" ng-show="generalForm[\'version\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.VERSION_REQUIRED">Version field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/marketplace/views/plugins/plugins.html",'<div id="plugins" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MARKETPLACE.PLUGINS">Plugins</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MARKETPLACE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedPlugins.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedPlugins =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MARKETPLACE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-plugins-count">\n          <span>{{vm.selectedPlugins.length}}</span>\n          <span translate="MARKETPLACE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MARKETPLACE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllPlugins()" translate="MARKETPLACE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectPlugins()" translate="MARKETPLACE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedPlugins" csv-label="true" filename="plugins.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedPlugins($event)" aria-label="delete selected" translate translate-attr-label="MARKETPLACE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      <div ng-if="vm.installing">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="MARKETPLACE.INSTALLING">Installing</span>\n            <md-progress-linear md-mode="indeterminate" class="md-accent padding-20"></md-progress-linear>\n          </div>\n        </md-card>\n      </div>\n\n      \x3c!-- PLUGIN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedPlugins" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getPlugins">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="name">{{ \'MARKETPLACE.NAME\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'MARKETPLACE.TYPE\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MARKETPLACE.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MARKETPLACE.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="version">{{ \'MARKETPLACE.VERSION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.plugins.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MARKETPLACE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="plugin" md-select-id="id" ng-repeat="plugin in vm.plugins.rows">\n                <td md-cell ng-if="plugin.userpic"><img class="avatar" alt="{{plugin.name}}" ng-src="api/users/{{plugin.id}}/avatar" /></td>\n                <td md-cell ng-if="!plugin.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{plugin.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="name ">{{plugin.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="type ">{{plugin.type}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{plugin.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{plugin.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="description ">{{plugin.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="version ">{{plugin.version}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MARKETPLACE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && !plugin.active">\n\n                        <md-button ng-click="vm.installplugin(plugin, $event    )" translate="MARKETPLACE.INSTALL_PLUGIN">\n                          Install Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(plugin, $event    )" translate="MARKETPLACE.EDIT_PLUGIN">\n                          Edit Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active && plugin.type == \'script\'">\n\n                        <md-button ng-click="vm.stopplugin(plugin, $event    )" translate="MARKETPLACE.STOP_PLUGIN">\n                          Stop Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active && plugin.type == \'script\'">\n\n                        <md-button ng-click="vm.restartplugin(plugin, $event    )" translate="MARKETPLACE.RESTART_PLUGIN">\n                          Restart Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.downloadfile2(plugin, $event  , \'plugins\'   )" translate="MARKETPLACE.DOWNLOAD_PLUGIN">\n                          Download Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active">\n\n                        <md-button ng-click="vm.uninstallplugin(plugin, $event    )" translate="MARKETPLACE.UNINSTALL_PLUGIN">\n                          Uninstall Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(plugin, $event    )" translate="MARKETPLACE.DELETE_PLUGIN">\n                          Delete Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MARKETPLACE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MARKETPLACE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MARKETPLACE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.plugins.count}}" md-on-paginate="vm.getPlugins" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PLUGIN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- UPLOAD PLUGIN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="upload-plugin-button" ng-click="vm.uploadPlugin($event)" aria-label="upload plugin" translate translate-attr-aria-label="MARKETPLACE.UPLOAD_PLUGIN">\n    <md-icon md-font-icon="icon-upload"></md-icon>\n  </md-button>\n  \x3c!-- / UPLOAD PLUGIN BUTTON --\x3e\n</div>'),e.put("app/main/apps/marketplace/views/plugins/upload/dialog.html",'<md-dialog class="upload-dialog" aria-label="Upload ">\n  <form name="uploadForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div id="plugin-uploader" ng-hide="vm.uploadState == \'uploading\'" flow-init="vm.ngFlowOptions" flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)" flow-error="vm.uploadError($file, $message)" flow-complete="vm.uploadComplete()" flow-drop flow-drag-enter="vm.dropping=true" flow-drag-leave="vm.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n        <div class="drop-text hint-text" layout="row" layout-align="center center">\n          <span translate="MARKETPLACE.DROP_TO_UPLOAD">Drop to upload</span>\n        </div>\n\n        <div class="upload-button" layout="column" layout-align="center center">\n          <md-button class="md-accent md-raised" flow-btn>\n            Upload\n          </md-button>\n          <span class="secondary-text mt-8" translate="MARKETPLACE.DROP_TO_UPLOAD_MESSAGE">You can also drop your file here to upload.</span>\n        </div>\n      </div>\n\n      <div layout="column" layout-align="space-between center" ng-show="vm.uploadState == \'uploading\'">\n        <div>\n          <span translate="MARKETPLACE.UPLOADING">Uploading</span>\n          <span>{{vm.plugin.file.name}}</span>\n        </div>\n        <md-progress-linear md-mode="indeterminate"></md-progress-linear>\n      </div>\n\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center"></div>\n      <div layout="row">\n        <md-button ng-click="vm.closeDialog()" ng-hide="vm.uploadState == \'uploading\'" class="md-accent md-raised" aria-label="FINISH" translate="MARKETPLACE.FINISH" translate-attr-aria-label="MARKETPLACE.FINISH">\n          FINISH\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",'<md-dialog class="ivrCampaign-dialog" aria-label="New IvrCampaign">\n  <form name="ivrCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newIvrCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="ivrCampaignForm[\'name\'].$error" ng-show="ivrCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.ivrCampaign.active" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n        <md-select name="TrunkId" ng-model="vm.ivrCampaign.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'TrunkId\'].$error" ng-show="ivrCampaignForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.ivrCampaign.IntervalId" required>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'IntervalId\'].$error" ng-show="ivrCampaignForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n        <md-select name="dialCheckDuplicateType" ng-model="vm.ivrCampaign.dialCheckDuplicateType" required>\n\n          <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n          <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'dialCheckDuplicateType\'].$error" ng-show="ivrCampaignForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n        <md-select name="SquareProjectId" ng-model="vm.ivrCampaign.SquareProjectId" required>\n          <md-option ng-value="SquareProjectId.id" ng-repeat="SquareProjectId in vm.projects" ng-disabled="SquareProjectId.canSelect === false">{{ SquareProjectId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'SquareProjectId\'].$error" ng-show="ivrCampaignForm[\'SquareProjectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CONCURRENTCALLS">ConcurrentCalls</label>\n        <input type="number" name="limitCalls" ng-model="vm.ivrCampaign.limitCalls" min="1" max="200" value="30" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.CONCURRENTCALLS"></span></div>\n        <div ng-messages="ivrCampaignForm[\'limitCalls\'].$error" ng-show="ivrCampaignForm[\'limitCalls\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_REQUIRED">ConcurrentCalls field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>200</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.ivrCampaign.description">\n\n        <div ng-messages="ivrCampaignForm[\'description\'].$error" ng-show="ivrCampaignForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newIvrCampaign" ng-click="vm.saveIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid || ivrCampaignForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newIvrCampaign" ng-click="vm.addNewIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_IVRCAMPAIGN" translate-attr-aria-label="MOTIONDIALER.ADD_IVRCAMPAIGN">\n          ADD IVRCAMPAIGN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newIvrCampaign" ng-click="vm.deleteIvrCampaign($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",'<md-dialog class="ivrCampaign-dialog" aria-label="ivrCampaign" ng-init="vm.onInit()">\n  <form name="ivrCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN">Add List in IVRCAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",'<md-dialog class="ivrCampaign-dialog" aria-label="Clone IvrCampaign">\n  <form name="ivrCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newIvrCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="ivrCampaignForm[\'name\'].$error" ng-show="ivrCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid" aria-label="CLONE" translate="MOTIONDIALER.CLONE_IVRCAMPAIGN" translate-attr-aria-label="MOTIONDIALER.CLONE_IVRCAMPAIGN">\n        CLONE IVRCAMPAIGN\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <label translate="MOTIONDIALER.SCHEDULEDAT">ScheduledAt</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.PRIORITY">Priority</label>\n        <md-select name="priority" ng-model="vm.hopper.priority">\n          <md-option ng-value="\'4\'">Highest</md-option>\n          <md-option ng-value="\'3\'">High</md-option>\n          <md-option ng-value="\'2\'">Medium</md-option>\n          <md-option ng-value="\'1\'">Low</md-option>\n          <md-option ng-value="\'0\'">Lowest</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PRIORITY"></span></div>\n        <div ng-messages="hopperForm[\'priority\'].$error" ng-show="hopperForm[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_HOPPER" translate-attr-aria-label="MOTIONDIALER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",'<md-dialog class="ivrCampaign-dialog" aria-label="ivrCampaign" ng-init="vm.onInit()">\n  <form name="ivrCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN">Add List in IVRCAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/resetlist/resetlist.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.RESETLIST ">Reset List</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-wrap flex>\n        <div flex-xs flex="50">\n          <md-checkbox aria-label="Select All" ng-checked="vm.isChecked()" md-indeterminate="vm.isIndeterminate()" ng-click="vm.toggleAll()">\n            <span ng-if="vm.isChecked()" translate="MOTIONDIALER.UNSELECTALL"></span>\n            <span ng-if="!vm.isChecked()" translate="MOTIONDIALER.SELECTALL"></span>\n          </md-checkbox>\n        </div>\n        <div flex-xs flex="50">\n        </div>\n        <div flex="{{vm.items.length > 10 ? 50 : 100 }}" ng-repeat="item in vm.items">\n          <md-checkbox ng-checked="vm.exists(item, vm.selected)" ng-click="vm.toggle(item, vm.selected)">\n            {{ item.name | limitTo:40 }}\n          </md-checkbox>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-hide="vm.loading" layout="row" layout-align="end center">\n      <div>\n      </div>\n      <md-button type="submit" ng-click="vm.listSelected()" class="send-button md-accent md-raised" ng-disabled="vm.loading" aria-label="RESET" translate="MOTIONDIALER.RESET" translate-attr-aria-label="MOTIONDIALER.RESET">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/view.html",'<div id="motiondialer-ivrCampaign" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-ivrCampaigns-button md-icon-button" aria-label="Go to ivrCampaigns" ng-click="vm.gotoIvrCampaigns()" translate translate-attr-aria-label="MOTIONDIALER.GO_TO_IVRCAMPAIGNS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="ivrCampaign-image" hide-xs>\n          <img ng-src="assets/images/business/ivrCampaigns.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.ivrCampaign.id}}\n            <span ng-if="vm.ivrCampaign.name">{{vm.ivrCampaign.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MOTIONDIALER.CREATED_AT"></span> <span>{{vm.ivrCampaign.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.ivrCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="MOTIONDIALER.CLONE_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.listadddialog(vm.ivrCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="listadd">\n        <md-tooltip><span translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-format-list-numbers"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.blacklistadddialog(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="blacklistadd">\n        <md-tooltip><span translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-block-helper"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.resetlistdialog(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="resetlist">\n        <md-tooltip><span translate="MOTIONDIALER.RESETLIST_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-restore"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MOTIONDIALER.GOTO_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveIvrCampaign()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (campaignForm.$invalid) || (originateForm.$invalid) || (globalForm.$invalid) || (congestionForm.$invalid) || (busyForm.$invalid) || (noanswerForm.$invalid) || (nosuchnumberForm.$invalid) || (dropForm.$invalid) || (abandonedForm.$invalid) || (machineForm.$invalid) || (agentrejectForm.$invalid) || (advancedForm.$invalid) || (globalintervalForm.$invalid) || (timezoneForm.$invalid) || (amdForm.$invalid) || (hopperStatisticsForm.$invalid) || (hoppersForm.$invalid) || (hopperHistoriesForm.$invalid) || (hopperFinalsForm.$invalid) || (hopperBlacksForm.$invalid)" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.ivrCampaign.active" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n                <md-select name="TrunkId" ng-model="vm.ivrCampaign.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BACKUPTRUNK">BackupTrunk</label>\n                <md-select name="TrunkBackupId" ng-model="vm.ivrCampaign.TrunkBackupId" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="TrunkBackupId.id" ng-repeat="TrunkBackupId in vm.trunks" ng-disabled="TrunkBackupId.canSelect === false">{{ TrunkBackupId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkBackupId\'].$error" ng-show="generalForm[\'TrunkBackupId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BACKUPTRUNK_REQUIRED">BackupTrunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.ivrCampaign.IntervalId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'IntervalId\'].$error" ng-show="generalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n                <md-select name="dialCheckDuplicateType" ng-model="vm.ivrCampaign.dialCheckDuplicateType" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n                  <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'dialCheckDuplicateType\'].$error" ng-show="generalForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CUTDIGIT">CutDigit</label>\n                <input type="number" name="dialCutDigit" ng-model="vm.ivrCampaign.dialCutDigit" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialCutDigit\'].$error" ng-show="generalForm[\'dialCutDigit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_REQUIRED">CutDigit field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.ivrCampaign.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container campaign md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</div>\n            </div>\n            <form name="campaignForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n                <md-select name="SquareProjectId" ng-model="vm.ivrCampaign.SquareProjectId" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="SquareProjectId.id" ng-repeat="SquareProjectId in vm.projects" ng-disabled="SquareProjectId.canSelect === false">{{ SquareProjectId.name }}</md-option>\n                </md-select>\n                <div ng-messages="campaignForm[\'SquareProjectId\'].$error" ng-show="campaignForm[\'SquareProjectId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONCURRENTCALLS">ConcurrentCalls</label>\n                <input type="number" name="limitCalls" ng-model="vm.ivrCampaign.limitCalls" min="1" max="200" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONCURRENTCALLS"></span></div>\n                <div ng-messages="campaignForm[\'limitCalls\'].$error" ng-show="campaignForm[\'limitCalls\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_REQUIRED">ConcurrentCalls field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>200</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container originate md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ORIGINATE">ORIGINATE</div>\n            </div>\n            <form name="originateForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNAME">OriginateCallerIdName</label>\n                <input type="text" name="dialOriginateCallerIdName" ng-model="vm.ivrCampaign.dialOriginateCallerIdName" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNAME"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdName\'].$error" ng-show="originateForm[\'dialOriginateCallerIdName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNAME_REQUIRED">OriginateCallerIdName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNUMBER">OriginateCallerIdNumber</label>\n                <input type="text" name="dialOriginateCallerIdNumber" ng-model="vm.ivrCampaign.dialOriginateCallerIdNumber" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdNumber\'].$error" ng-show="originateForm[\'dialOriginateCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNUMBER_REQUIRED">OriginateCallerIdNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RANDOMLASTDIGITCALLERIDNUMBER">RandomLastDigitCallerIdNumber</label>\n                <input type="number" name="dialRandomLastDigitCallerIdNumber" ng-model="vm.ivrCampaign.dialRandomLastDigitCallerIdNumber" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RANDOMLASTDIGITCALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$error" ng-show="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED">RandomLastDigitCallerIdNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATETIMEOUT">OriginateTimeout</label>\n                <input type="number" name="dialOriginateTimeout" ng-model="vm.ivrCampaign.dialOriginateTimeout" min="1" max="999" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATETIMEOUT"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateTimeout\'].$error" ng-show="originateForm[\'dialOriginateTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_REQUIRED">OriginateTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.ivrCampaign.dialPrefix" ng-pattern="/^\\d+$/" value="" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREFIX"></span></div>\n                <div ng-messages="originateForm[\'dialPrefix\'].$error" ng-show="originateForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_MUST_VALID_PATTERN" translate-values="{ regex: \'/^\\d+$/\' }">Prefix must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.RETRYANDFREQUENCY">RETRYANDFREQUENCY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container global md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBAL">GLOBAL</div>\n            </div>\n            <form name="globalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALMAXRETRY">GlobalMaxRetry</label>\n                <input type="number" name="dialGlobalMaxRetry" ng-model="vm.ivrCampaign.dialGlobalMaxRetry" min="1" max="999" value="4" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALMAXRETRY"></span></div>\n                <div ng-messages="globalForm[\'dialGlobalMaxRetry\'].$error" ng-show="globalForm[\'dialGlobalMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_REQUIRED">GlobalMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container congestion md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CONGESTION">CONGESTION</div>\n            </div>\n            <form name="congestionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONMAXRETRY">CongestionMaxRetry</label>\n                <input type="number" name="dialCongestionMaxRetry" ng-model="vm.ivrCampaign.dialCongestionMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONMAXRETRY"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionMaxRetry\'].$error" ng-show="congestionForm[\'dialCongestionMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_REQUIRED">CongestionMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONRETRYTIME">CongestionRetryTime</label>\n                <input type="number" name="dialCongestionRetryFrequency" ng-model="vm.ivrCampaign.dialCongestionRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONRETRYTIME"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionRetryFrequency\'].$error" ng-show="congestionForm[\'dialCongestionRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_REQUIRED">CongestionRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container busy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.BUSY">BUSY</div>\n            </div>\n            <form name="busyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYMAXRETRY">BusyMaxRetry</label>\n                <input type="number" name="dialBusyMaxRetry" ng-model="vm.ivrCampaign.dialBusyMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYMAXRETRY"></span></div>\n                <div ng-messages="busyForm[\'dialBusyMaxRetry\'].$error" ng-show="busyForm[\'dialBusyMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_REQUIRED">BusyMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYRETRYTIME">BusyRetryTime</label>\n                <input type="number" name="dialBusyRetryFrequency" ng-model="vm.ivrCampaign.dialBusyRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYRETRYTIME"></span></div>\n                <div ng-messages="busyForm[\'dialBusyRetryFrequency\'].$error" ng-show="busyForm[\'dialBusyRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_REQUIRED">BusyRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container noanswer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOANSWER">NOANSWER</div>\n            </div>\n            <form name="noanswerForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERMAXRETRY">NoAnswerMaxRetry</label>\n                <input type="number" name="dialNoAnswerMaxRetry" ng-model="vm.ivrCampaign.dialNoAnswerMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERMAXRETRY"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerMaxRetry\'].$error" ng-show="noanswerForm[\'dialNoAnswerMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_REQUIRED">NoAnswerMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERRETRYTIME">NoAnswerRetryTime</label>\n                <input type="number" name="dialNoAnswerRetryFrequency" ng-model="vm.ivrCampaign.dialNoAnswerRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERRETRYTIME"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerRetryFrequency\'].$error" ng-show="noanswerForm[\'dialNoAnswerRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_REQUIRED">NoAnswerRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container nosuchnumber md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOSUCHNUMBER">NOSUCHNUMBER</div>\n            </div>\n            <form name="nosuchnumberForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERMAXRETRY">NoSuchNumberMaxRetry</label>\n                <input type="number" name="dialNoSuchNumberMaxRetry" ng-model="vm.ivrCampaign.dialNoSuchNumberMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERMAXRETRY"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_REQUIRED">NoSuchNumberMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERRETRYTIME">NoSuchNumberRetryTime</label>\n                <input type="number" name="dialNoSuchNumberRetryFrequency" ng-model="vm.ivrCampaign.dialNoSuchNumberRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERRETRYTIME"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_REQUIRED">NoSuchNumberRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container drop md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.DROP">DROP</div>\n            </div>\n            <form name="dropForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPMAXRETRY">DropMaxRetry</label>\n                <input type="number" name="dialDropMaxRetry" ng-model="vm.ivrCampaign.dialDropMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPMAXRETRY"></span></div>\n                <div ng-messages="dropForm[\'dialDropMaxRetry\'].$error" ng-show="dropForm[\'dialDropMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_REQUIRED">DropMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPRETRYTIME">DropRetryTime</label>\n                <input type="number" name="dialDropRetryFrequency" ng-model="vm.ivrCampaign.dialDropRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPRETRYTIME"></span></div>\n                <div ng-messages="dropForm[\'dialDropRetryFrequency\'].$error" ng-show="dropForm[\'dialDropRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_REQUIRED">DropRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container abandoned md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ABANDONED">ABANDONED</div>\n            </div>\n            <form name="abandonedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDMAXRETRY">AbandonedMaxRetry</label>\n                <input type="number" name="dialAbandonedMaxRetry" ng-model="vm.ivrCampaign.dialAbandonedMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDMAXRETRY"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedMaxRetry\'].$error" ng-show="abandonedForm[\'dialAbandonedMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_REQUIRED">AbandonedMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDRETRYTIME">AbandonedRetryTime</label>\n                <input type="number" name="dialAbandonedRetryFrequency" ng-model="vm.ivrCampaign.dialAbandonedRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDRETRYTIME"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedRetryFrequency\'].$error" ng-show="abandonedForm[\'dialAbandonedRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_REQUIRED">AbandonedRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container machine md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.MACHINE">MACHINE</div>\n            </div>\n            <form name="machineForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINEMAXRETRY">MachineMaxRetry</label>\n                <input type="number" name="dialMachineMaxRetry" ng-model="vm.ivrCampaign.dialMachineMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINEMAXRETRY"></span></div>\n                <div ng-messages="machineForm[\'dialMachineMaxRetry\'].$error" ng-show="machineForm[\'dialMachineMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_REQUIRED">MachineMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINERETRYTIME">MachineRetryTime</label>\n                <input type="number" name="dialMachineRetryFrequency" ng-model="vm.ivrCampaign.dialMachineRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINERETRYTIME"></span></div>\n                <div ng-messages="machineForm[\'dialMachineRetryFrequency\'].$error" ng-show="machineForm[\'dialMachineRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_REQUIRED">MachineRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container agentreject md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AGENTREJECT">AGENTREJECT</div>\n            </div>\n            <form name="agentrejectForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTMAXRETRY">AgentRejectMaxRetry</label>\n                <input type="number" name="dialAgentRejectMaxRetry" ng-model="vm.ivrCampaign.dialAgentRejectMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTMAXRETRY"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectMaxRetry\'].$error" ng-show="agentrejectForm[\'dialAgentRejectMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_REQUIRED">AgentRejectMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTRETRYTIME">AgentRejectRetryTime</label>\n                <input type="number" name="dialAgentRejectRetryFrequency" ng-model="vm.ivrCampaign.dialAgentRejectRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTRETRYTIME"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$error" ng-show="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_REQUIRED">AgentRejectRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.ivrCampaign.dialOrderByScheduledAt" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container globalinterval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBALINTERVAL">GLOBALINTERVAL</div>\n            </div>\n            <form name="globalintervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALINTERVAL">GlobalInterval</label>\n                <input type="text" name="dialGlobalInterval" ng-model="vm.ivrCampaign.dialGlobalInterval" value="07:00-22:00,*,*,*" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALINTERVAL"></span></div>\n                <div ng-messages="globalintervalForm[\'dialGlobalInterval\'].$error" ng-show="globalintervalForm[\'dialGlobalInterval\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALINTERVAL_REQUIRED">GlobalInterval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container timezone md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.TIMEZONE">TIMEZONE</div>\n            </div>\n            <form name="timezoneForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEZONE">Timezone</label>\n                <ms-timezone name="dialTimezone" ng-model="vm.ivrCampaign.dialTimezone" autofocus ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEZONE"></span></div>\n                <div ng-messages="timezoneForm[\'dialTimezone\'].$error" ng-show="timezoneForm[dialTimezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container amd md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AMD">AMD</div>\n            </div>\n            <form name="amdForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.ivrCampaign.dialAMDActive" aria-label="AMDActive" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AMDACTIVE">AMDActive</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDACTIVE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDINITIALSILENCE">AMDInitialSilence</label>\n                <input type="number" name="dialAMDInitialSilence" ng-model="vm.ivrCampaign.dialAMDInitialSilence" min="0" value="2500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDINITIALSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDInitialSilence\'].$error" ng-show="amdForm[\'dialAMDInitialSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_REQUIRED">AMDInitialSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDInitialSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDGREETING">AMDGreeting</label>\n                <input type="number" name="dialAMDGreeting" ng-model="vm.ivrCampaign.dialAMDGreeting" min="0" value="1500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDGREETING"></span></div>\n                <div ng-messages="amdForm[\'dialAMDGreeting\'].$error" ng-show="amdForm[\'dialAMDGreeting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_REQUIRED">AMDGreeting field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDGreeting must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDAFTERGREETINGSILENCE">AMDAfterGreetingSilence</label>\n                <input type="number" name="dialAMDAfterGreetingSilence" ng-model="vm.ivrCampaign.dialAMDAfterGreetingSilence" min="0" value="800" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDAFTERGREETINGSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDAfterGreetingSilence\'].$error" ng-show="amdForm[\'dialAMDAfterGreetingSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_REQUIRED">AMDAfterGreetingSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDAfterGreetingSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDTOTALANALYSISTIME">AMDTotalAnalysisTime</label>\n                <input type="number" name="dialAMDTotalAnalysisTime" ng-model="vm.ivrCampaign.dialAMDTotalAnalysisTime" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDTOTALANALYSISTIME"></span></div>\n                <div ng-messages="amdForm[\'dialAMDTotalAnalysisTime\'].$error" ng-show="amdForm[\'dialAMDTotalAnalysisTime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_REQUIRED">AMDTotalAnalysisTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDTotalAnalysisTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMINWORDLENGTH">AMDMinWordLength</label>\n                <input type="number" name="dialAMDMinWordLength" ng-model="vm.ivrCampaign.dialAMDMinWordLength" min="0" value="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMINWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMinWordLength\'].$error" ng-show="amdForm[\'dialAMDMinWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_REQUIRED">AMDMinWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMinWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDBETWEENWORDSSILENCE">AMDBetweenWordsSilence</label>\n                <input type="number" name="dialAMDBetweenWordsSilence" ng-model="vm.ivrCampaign.dialAMDBetweenWordsSilence" min="0" value="50" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDBETWEENWORDSSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDBetweenWordsSilence\'].$error" ng-show="amdForm[\'dialAMDBetweenWordsSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_REQUIRED">AMDBetweenWordsSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDBetweenWordsSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMNUMBEROFWORDS">AMDMaximumNumberOfWords</label>\n                <input type="number" name="dialAMDMaximumNumberOfWords" ng-model="vm.ivrCampaign.dialAMDMaximumNumberOfWords" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMNUMBEROFWORDS"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumNumberOfWords\'].$error" ng-show="amdForm[\'dialAMDMaximumNumberOfWords\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_REQUIRED">AMDMaximumNumberOfWords field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumNumberOfWords must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDSILENCETHRESHOLD">AMDSilenceThreshold</label>\n                <input type="number" name="dialAMDSilenceThreshold" ng-model="vm.ivrCampaign.dialAMDSilenceThreshold" min="0" max="32767" value="256" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDSILENCETHRESHOLD"></span></div>\n                <div ng-messages="amdForm[\'dialAMDSilenceThreshold\'].$error" ng-show="amdForm[\'dialAMDSilenceThreshold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_REQUIRED">AMDSilenceThreshold field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_LESS_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>32767</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMWORDLENGTH">AMDMaximumWordLength</label>\n                <input type="number" name="dialAMDMaximumWordLength" ng-model="vm.ivrCampaign.dialAMDMaximumWordLength" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumWordLength\'].$error" ng-show="amdForm[\'dialAMDMaximumWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_REQUIRED">AMDMaximumWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HOPPERS">HOPPERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperstatistics md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperStatisticsController as vm_hs" ng-init="vm_hs.init(vm.ivrCampaign)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERWIDGET">Hoppers</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_hs.init(vm.ivrCampaign)" aria-label="refresh Hopper" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{(vm_hs.total || 0) + (vm_hs.closed || 0)}}</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.TOTAL\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.fresh || 0}} ({{vm_hs.total ? ((((vm_hs.fresh || 0) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.FRESH\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.total ? (vm_hs.total - (vm_hs.fresh || 0)) : 0}} ({{vm_hs.total ? ((((vm_hs.total - (vm_hs.fresh || 0)) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.OPEN\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.closed ? (vm_hs.closed || 0) : 0}} ({{vm_hs.closed ? ((((vm_hs.closed) * 100)/(vm_hs.closed + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.CLOSED\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n\n          </div>\n          <div class="ivrCampaign-detail-form-container hoppers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHoppersController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERS">Hoppers</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHoppers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHoppers()" aria-label="refresh Hoppers" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHoppers.length}} {{vm_dc.selectedIvrCampaignHoppers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHoppers" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedIvrCampaignHoppers($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHoppers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="priority">\n                        {{ \'MOTIONDIALER.PRIORITY\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopper" md-select-id="id" ng-repeat="hopper in vm_dc.ivrCampaignHoppers.rows">\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.ContactId}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell privacy ng-cloak>\n                        {{hopper.phone}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countcongestionretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countbusyretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnoanswerretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnosuchnumberretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countdropretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countabandonedretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countmachineretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countagentrejectretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{ hopper.scheduledat | formatdate }}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{ vm_dc.arraypriority[hopper.priority].option }} </td>\n\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" translate="MOTIONDIALER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(hopper, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHoppers.rows.length">\n                      <td md-cell colspan="15">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPER_AVAILABLE">No hopper available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHoppers.count}}" md-on-paginate="vm_dc.getIvrCampaignHoppers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HISTORY">HISTORY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperhistories md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperHistoriesController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERHISTORIES">HopperHistories</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperHistories()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHopperHistories()" aria-label="refresh HopperHistories" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERHISTORIES">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperHistories.length}} {{vm_dc.selectedIvrCampaignHopperHistories.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperHistories" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperHistories" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperHistory" md-select-id="id" ng-repeat="hopperHistory in vm_dc.ivrCampaignHopperHistories.rows">\n                      <td md-cell>\n                        {{hopperHistory.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.scheduledat | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.endtime | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperHistories.rows.length">\n                      <td md-cell colspan="11">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERHISTORY_AVAILABLE">No hopperhistory available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperHistories.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperHistories" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.FINAL">FINAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperfinals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperFinalsController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERFINALS">HopperFinals</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperFinals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHopperFinals()" aria-label="refresh HopperFinals" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERFINALS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                  <td md-cell class="actions">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="vm_dc.countContactsIvrCampaignHopperFinal(vm_dc.query.id); $mdOpenMenu($event);">\n                        <md-icon md-font-icon="icon-backup-restore"></md-icon>\n                        <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(3)">\n                            <span translate="MOTIONDIALER.NOANSWER ">NoAnswer</span>\n                            <span class="badge">({{vm_dc.contacts.noAnswerContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(5)">\n                            <span translate="MOTIONDIALER.BUSY ">Busy</span>\n                            <span class="badge">({{vm_dc.contacts.busyContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(8)">\n                            <span translate="MOTIONDIALER.CONGESTION ">Congestion</span>\n                            <span class="badge">({{vm_dc.contacts.congestionContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(10)">\n                            <span translate="MOTIONDIALER.DROPPED ">Drop</span>\n                            <span class="badge">({{vm_dc.contacts.dropContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(11)">\n                            <span translate="MOTIONDIALER.ABANDONED ">Abandoned</span>\n                            <span class="badge">({{vm_dc.contacts.abandonedContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(22)">\n                            <span translate="MOTIONDIALER.RECALLFAILEDTIMEOUT">Recall</span>\n                            <span class="badge">({{vm_dc.contacts.reCallContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(0)">\n                            <span translate="MOTIONDIALER.NO_SUCH_NUMBER">NoSuchNumber</span>\n                            <span class="badge">({{vm_dc.contacts.noSuchContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item>\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(19)">\n                            <span translate="MOTIONDIALER.ANSWERING_MACHINE">AnsweringMachine</span>\n                            <span class="badge">({{vm_dc.contacts.answeringMachine}})</span>\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperFinals.length}} {{vm_dc.selectedIvrCampaignHopperFinals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperFinals" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.moveSelectedIvrCampaignHopperFinals($event)" aria-label="move selected" translate translate-attr-label="MOTIONDIALER.MOVE_SELECTED">\n                    <md-icon md-font-icon="icon-restore"></md-icon>\n                    <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperFinals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="disposition">\n                        {{ \'MOTIONDIALER.DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperFinal" md-select-id="id" ng-repeat="hopperFinal in vm_dc.ivrCampaignHopperFinals.rows">\n                      <td md-cell>\n                        {{hopperFinal.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countcongestionretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countbusyretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnoanswerretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnosuchnumberretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countdropretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countabandonedretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countmachineretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countagentrejectretry}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.disposition}}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.moveConfirm(hopperFinal, $event)" translate="MOTIONDIALER.MOVE_HOPPERFINAL">\n                                Move HopperFinal\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperFinals.rows.length">\n                      <td md-cell colspan="28">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERFINAL_AVAILABLE">No hopperfinal available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperFinals.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperFinals" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.BLACKLIST">BLACKLIST</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperblacks md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperBlacksController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERBLACKS">HopperBlacks</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperBlacks()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperBlacks.length}} {{vm_dc.selectedIvrCampaignHopperBlacks.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperBlacks" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperBlacks" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperBlacks">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperBlack" md-select-id="id" ng-repeat="hopperBlack in vm_dc.ivrCampaignHopperBlacks.rows">\n                      <td md-cell>\n                        {{hopperBlack.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperBlack.phone}}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperBlacks.rows.length">\n                      <td md-cell colspan="4">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERBLACK_AVAILABLE">No hopperblack available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperBlacks.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperBlacks" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/ivrCampaigns.html",'<div id="ivrCampaigns" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-fire" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MOTIONDIALER.IVRCAMPAIGNS">IvrCampaigns</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MOTIONDIALER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedIvrCampaigns.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedIvrCampaigns =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MOTIONDIALER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-ivrCampaigns-count">\n          <span>{{vm.selectedIvrCampaigns.length}}</span>\n          <span translate="MOTIONDIALER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MOTIONDIALER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllIvrCampaigns()" translate="MOTIONDIALER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectIvrCampaigns()" translate="MOTIONDIALER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedIvrCampaigns" csv-label="true" filename="ivrCampaigns.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedIvrCampaigns($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- IVRCAMPAIGN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedIvrCampaigns" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getIvrCampaigns">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MOTIONDIALER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="SquareProjectId">{{ \'MOTIONDIALER.CALLYSQUAREPROJECT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.ivrCampaigns.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="ivrCampaign" md-select-id="id" ng-repeat="ivrCampaign in vm.ivrCampaigns.rows">\n                <td md-cell ng-if="ivrCampaign.userpic"><img class="avatar" alt="{{ivrCampaign.name}}" ng-src="api/users/{{ivrCampaign.id}}/avatar" /></td>\n                <td md-cell ng-if="!ivrCampaign.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{ivrCampaign.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="id ">{{ivrCampaign.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="name ">{{ivrCampaign.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{ivrCampaign.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{ivrCampaign.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':ivrCampaign.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="SquareProjectId ">{{ (vm.projects | filter : {\'id\':ivrCampaign.SquareProjectId} : true)[0].name }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(ivrCampaign, $event    )" translate="MOTIONDIALER.EDIT_IVRCAMPAIGN">\n                          Edit IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(ivrCampaign, $event    )" translate="MOTIONDIALER.CLONE_IVRCAMPAIGN">\n                          clone IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.listadddialog(ivrCampaign, $event    )" translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN">\n                          listadd IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.blacklistadddialog(ivrCampaign, $event    )" translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN">\n                          blacklistadd IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(ivrCampaign, $event    )" translate="MOTIONDIALER.DELETE_IVRCAMPAIGN">\n                          Delete IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(ivrCampaign, $event    )" translate="MOTIONDIALER.GOTOREALTIME_IVRCAMPAIGN">\n                          goToRealtime IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.ivrCampaigns.count}}" md-on-paginate="vm.getIvrCampaigns" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / IVRCAMPAIGN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD IVRCAMPAIGN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-ivrCampaign-button" ng-click="vm.createOrEditIvrCampaign($event)" aria-label="add ivrCampaign" translate translate-attr-aria-label="MOTIONDIALER.ADD_IVRCAMPAIGN">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD IVRCAMPAIGN BUTTON --\x3e\n</div>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",'<md-dialog class="queueCampaign-dialog" aria-label="New QueueCampaign">\n  <form name="queueCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newQueueCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="queueCampaignForm[\'name\'].$error" ng-show="queueCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n        <md-select name="TrunkId" ng-model="vm.queueCampaign.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'TrunkId\'].$error" ng-show="queueCampaignForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n        <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.queueCampaign.IntervalId" required>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'IntervalId\'].$error" ng-show="queueCampaignForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n        <md-select name="dialCheckDuplicateType" ng-model="vm.queueCampaign.dialCheckDuplicateType" required>\n\n          <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n          <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'dialCheckDuplicateType\'].$error" ng-show="queueCampaignForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.METHOD">Method</label>\n        <md-select name="dialMethod" ng-model="vm.queueCampaign.dialMethod" required>\n          <md-option ng-value="\'progressive\'">Progressive</md-option>\n          <md-option ng-value="\'power\'">PowerDialing</md-option>\n          <md-option ng-value="\'predictive\'">Predictive</md-option>\n          <md-option ng-value="\'preview\'">Preview</md-option>\n          <md-option ng-value="\'booked\'">BookedProgressive</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.METHOD"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialMethod\'].$error" ng-show="queueCampaignForm[\'dialMethod\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.METHOD_REQUIRED">Method field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'power\'" class="md-block">\n        <span translate="MOTIONDIALER.POWERLEVEL">PowerLevel</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.POWERLEVEL"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPowerLevel" min="1" max="10" step="0.1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <label translate="MOTIONDIALER.PREDICTIVEOPTIMIZATION">PredictiveOptimization</label>\n        <md-select name="dialPredictiveOptimization" ng-model="vm.queueCampaign.dialPredictiveOptimization">\n\n          <md-option ng-value="\'agentBusyFactor\'"> {{ \'MOTIONDIALER.AGENTBUSYFACTOR\' | translate }} </md-option>\n\n          <md-option ng-value="\'dropRate\'"> {{ \'MOTIONDIALER.DROPRATE\' | translate }} </md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATION"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialPredictiveOptimization\'].$error" ng-show="queueCampaignForm[\'dialPredictiveOptimization\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PREDICTIVEOPTIMIZATION_REQUIRED">PredictiveOptimization field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <span translate="MOTIONDIALER.PREDICTIVEOPTIMIZATIONPERCENTAGE">PredictiveOptimizationPercentage</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATIONPERCENTAGE"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveOptimizationPercentage" min="1" max="95" step="0.1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <span translate="MOTIONDIALER.PREDICTIVEINTERVAL">PredictiveInterval</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEINTERVAL"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveInterval" min="5" max="30" step="1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n        <label translate="MOTIONDIALER.MAXCONCURRENTCALLS">MaxConcurrentCalls</label>\n        <input type="number" name="dialLimitQueue" ng-model="vm.queueCampaign.dialLimitQueue" min="0" max="9999" value="0" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.MAXCONCURRENTCALLS"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialLimitQueue\'].$error" ng-show="queueCampaignForm[\'dialLimitQueue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_REQUIRED">MaxConcurrentCalls field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>9999</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n        <label translate="MOTIONDIALER.QUEUETIMEOUT">QueueTimeout</label>\n        <input type="number" name="dialQueueTimeout" ng-model="vm.queueCampaign.dialQueueTimeout" min="1" max="999" value="3" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.QUEUETIMEOUT"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialQueueTimeout\'].$error" ng-show="queueCampaignForm[\'dialQueueTimeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_REQUIRED">QueueTimeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>999</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.AGENTTIMEOUT">AgentTimeout</label>\n        <input type="number" name="timeout" ng-model="vm.queueCampaign.timeout" min="0" value="3" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTTIMEOUT"></span></div>\n        <div ng-messages="queueCampaignForm[\'timeout\'].$error" ng-show="queueCampaignForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_REQUIRED">AgentTimeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentTimeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.queueCampaign.description">\n\n        <div ng-messages="queueCampaignForm[\'description\'].$error" ng-show="queueCampaignForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newQueueCampaign" ng-click="vm.saveQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid || queueCampaignForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newQueueCampaign" ng-click="vm.addNewQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_QUEUECAMPAIGN" translate-attr-aria-label="MOTIONDIALER.ADD_QUEUECAMPAIGN">\n          ADD QUEUECAMPAIGN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newQueueCampaign" ng-click="vm.deleteQueueCampaign($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN">Add Agent to queueCampaign</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="MOTIONDIALER.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="queueCampaignForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN">Add List in QUEUECAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",'<md-dialog class="queueCampaign-dialog" aria-label="Clone QueueCampaign">\n  <form name="queueCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newQueueCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="queueCampaignForm[\'name\'].$error" ng-show="queueCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid" aria-label="CLONE" translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN" translate-attr-aria-label="MOTIONDIALER.CLONE_QUEUECAMPAIGN">\n        CLONE QUEUECAMPAIGN\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <label translate="MOTIONDIALER.SCHEDULEDAT">ScheduledAt</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.PRIORITY">Priority</label>\n        <md-select name="priority" ng-model="vm.hopper.priority">\n          <md-option ng-value="\'4\'">Highest</md-option>\n          <md-option ng-value="\'3\'">High</md-option>\n          <md-option ng-value="\'2\'">Medium</md-option>\n          <md-option ng-value="\'1\'">Low</md-option>\n          <md-option ng-value="\'0\'">Lowest</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PRIORITY"></span></div>\n        <div ng-messages="hopperForm[\'priority\'].$error" ng-show="hopperForm[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.hopper.recallme" aria-label="RecallAgent"><span translate="MOTIONDIALER.RECALLAGENT">RecallAgent</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.hopper.recallme" class="md-block">\n        <label translate="MOTIONDIALER.AGENT">Agent</label>\n        <md-select name="UserId" ng-model="vm.hopper.UserId" required>\n          <md-option ng-value="UserId.id" ng-repeat="UserId in vm.agents" ng-disabled="UserId.canSelect === false">{{ UserId.name }}</md-option>\n        </md-select>\n        <div ng-messages="hopperForm[\'UserId\'].$error" ng-show="hopperForm[\'UserId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_HOPPER" translate-attr-aria-label="MOTIONDIALER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN">Add List in QUEUECAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/resetlist/resetlist.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.RESETLIST ">Reset List</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-wrap flex>\n        <div flex-xs flex="50">\n          <md-checkbox aria-label="Select All" ng-checked="vm.isChecked()" md-indeterminate="vm.isIndeterminate()" ng-click="vm.toggleAll()">\n            <span ng-if="vm.isChecked()" translate="MOTIONDIALER.UNSELECTALL"></span>\n            <span ng-if="!vm.isChecked()" translate="MOTIONDIALER.SELECTALL"></span>\n          </md-checkbox>\n        </div>\n        <div flex-xs flex="50">\n        </div>\n        <div flex="{{vm.items.length > 10 ? 50 : 100 }}" ng-repeat="item in vm.items">\n          <md-checkbox ng-checked="vm.exists(item, vm.selected)" ng-click="vm.toggle(item, vm.selected)">\n            {{ item.name | limitTo:40 }}\n          </md-checkbox>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-hide="vm.loading" layout="row" layout-align="end center">\n      <div>\n      </div>\n      <md-button type="submit" ng-click="vm.listSelected()" class="send-button md-accent md-raised" ng-disabled="vm.loading" aria-label="RESET" translate="MOTIONDIALER.RESET" translate-attr-aria-label="MOTIONDIALER.RESET">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="MOTIONDIALER.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="queueCampaignForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/view.html",'<div id="motiondialer-queueCampaign" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-queueCampaigns-button md-icon-button" aria-label="Go to queueCampaigns" ng-click="vm.gotoQueueCampaigns()" translate translate-attr-aria-label="MOTIONDIALER.GO_TO_QUEUECAMPAIGNS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="queueCampaign-image" hide-xs>\n          <img ng-src="assets/images/business/queueCampaigns.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.queueCampaign.id}}\n            <span ng-if="vm.queueCampaign.name">{{vm.queueCampaign.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MOTIONDIALER.CREATED_AT"></span> <span>{{vm.queueCampaign.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.queueCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.listadddialog(vm.queueCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="listadd">\n        <md-tooltip><span translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-format-list-numbers"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.blacklistadddialog(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="blacklistadd">\n        <md-tooltip><span translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-block-helper"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.queueCampaign, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="MOTIONDIALER.TEAMADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.queueCampaign, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.resetlistdialog(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="resetlist">\n        <md-tooltip><span translate="MOTIONDIALER.RESETLIST_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-restore"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MOTIONDIALER.GOTO_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveQueueCampaign()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (campaignForm.$invalid) || (queueForm.$invalid) || (originateForm.$invalid) || (globalForm.$invalid) || (congestionForm.$invalid) || (busyForm.$invalid) || (noanswerForm.$invalid) || (nosuchnumberForm.$invalid) || (dropForm.$invalid) || (abandonedForm.$invalid) || (machineForm.$invalid) || (agentrejectForm.$invalid) || (advancedForm.$invalid) || (advancedpreviewForm.$invalid) || (thresholdsForm.$invalid) || (recallmeForm.$invalid) || (globalintervalForm.$invalid) || (timezoneForm.$invalid) || (amdForm.$invalid) || (hopperStatisticsForm.$invalid) || (hoppersForm.$invalid) || (hopperHistoriesForm.$invalid) || (hopperFinalsForm.$invalid) || (hopperBlacksForm.$invalid)" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n                <md-select name="TrunkId" ng-model="vm.queueCampaign.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BACKUPTRUNK">BackupTrunk</label>\n                <md-select name="TrunkBackupId" ng-model="vm.queueCampaign.TrunkBackupId" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="TrunkBackupId.id" ng-repeat="TrunkBackupId in vm.trunks" ng-disabled="TrunkBackupId.canSelect === false">{{ TrunkBackupId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkBackupId\'].$error" ng-show="generalForm[\'TrunkBackupId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BACKUPTRUNK_REQUIRED">BackupTrunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n                <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.queueCampaign.IntervalId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'IntervalId\'].$error" ng-show="generalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n                <md-select name="dialCheckDuplicateType" ng-model="vm.queueCampaign.dialCheckDuplicateType" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n                  <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'dialCheckDuplicateType\'].$error" ng-show="generalForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CUTDIGIT">CutDigit</label>\n                <input type="number" name="dialCutDigit" ng-model="vm.queueCampaign.dialCutDigit" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialCutDigit\'].$error" ng-show="generalForm[\'dialCutDigit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_REQUIRED">CutDigit field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.queueCampaign.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container campaign md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</div>\n            </div>\n            <form name="campaignForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.METHOD">Method</label>\n                <md-select name="dialMethod" ng-model="vm.queueCampaign.dialMethod" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'progressive\'">Progressive</md-option>\n                  <md-option ng-value="\'power\'">PowerDialing</md-option>\n                  <md-option ng-value="\'predictive\'">Predictive</md-option>\n                  <md-option ng-value="\'preview\'">Preview</md-option>\n                  <md-option ng-value="\'booked\'">BookedProgressive</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.METHOD"></span></div>\n                <div ng-messages="campaignForm[\'dialMethod\'].$error" ng-show="campaignForm[\'dialMethod\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.METHOD_REQUIRED">Method field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'power\'" class="md-block">\n                <span translate="MOTIONDIALER.POWERLEVEL">PowerLevel</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.POWERLEVEL"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPowerLevel" min="1" max="10" step="0.1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <label translate="MOTIONDIALER.PREDICTIVEOPTIMIZATION">PredictiveOptimization</label>\n                <md-select name="dialPredictiveOptimization" ng-model="vm.queueCampaign.dialPredictiveOptimization" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'agentBusyFactor\'"> {{ \'MOTIONDIALER.AGENTBUSYFACTOR\' | translate }} </md-option>\n\n                  <md-option ng-value="\'dropRate\'"> {{ \'MOTIONDIALER.DROPRATE\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATION"></span></div>\n                <div ng-messages="campaignForm[\'dialPredictiveOptimization\'].$error" ng-show="campaignForm[\'dialPredictiveOptimization\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREDICTIVEOPTIMIZATION_REQUIRED">PredictiveOptimization field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEOPTIMIZATIONPERCENTAGE">PredictiveOptimizationPercentage</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATIONPERCENTAGE"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveOptimizationPercentage" min="1" max="95" step="0.1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEINTERVAL">PredictiveInterval</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEINTERVAL"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveInterval" min="5" max="30" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n                <label translate="MOTIONDIALER.MAXCONCURRENTCALLS">MaxConcurrentCalls</label>\n                <input type="number" name="dialLimitQueue" ng-model="vm.queueCampaign.dialLimitQueue" min="0" max="9999" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MAXCONCURRENTCALLS"></span></div>\n                <div ng-messages="campaignForm[\'dialLimitQueue\'].$error" ng-show="campaignForm[\'dialLimitQueue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_REQUIRED">MaxConcurrentCalls field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>9999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTTIMEOUT">AgentTimeout</label>\n                <input type="number" name="timeout" ng-model="vm.queueCampaign.timeout" min="0" value="3" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTTIMEOUT"></span></div>\n                <div ng-messages="campaignForm[\'timeout\'].$error" ng-show="campaignForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_REQUIRED">AgentTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentTimeout must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container queue md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.QUEUE">QUEUE</div>\n            </div>\n            <form name="queueForm" novalidate>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.QUEUEOPTIONS">QueueOptions</label>\n                <input type="text" name="dialQueueOptions" ng-model="vm.queueCampaign.dialQueueOptions" value="tTxX" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="queueForm[\'dialQueueOptions\'].$error" ng-show="queueForm[\'dialQueueOptions\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUEOPTIONS_REQUIRED">QueueOptions field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.QUEUETIMEOUT">QueueTimeout</label>\n                <input type="number" name="dialQueueTimeout" ng-model="vm.queueCampaign.dialQueueTimeout" min="1" max="999" value="3" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.QUEUETIMEOUT"></span></div>\n                <div ng-messages="queueForm[\'dialQueueTimeout\'].$error" ng-show="queueForm[\'dialQueueTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_REQUIRED">QueueTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'booked\' || vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.queueCampaign.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n                  <md-option ng-value="\'roundrobin\'" ng-if="vm.queueCampaign.dialMethod === \'booked\'">Round Robin</md-option>\n                  <md-option ng-value="\'leastrecent\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Least Recent</md-option>\n                  <md-option ng-value="\'fewestcalls\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Fewest Calls</md-option>\n                  <md-option ng-value="\'random\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Random</md-option>\n                  <md-option ng-value="\'linear\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Linear</md-option>\n                  <md-option ng-value="\'wrandom\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Weight Random</md-option>\n                </md-select>\n                <div ng-messages="queueForm[\'strategy\'].$error" ng-show="queueForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.RETRY">Retry</label>\n                <input type="number" name="retry" ng-model="vm.queueCampaign.retry" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RETRY"></span></div>\n                <div ng-messages="queueForm[\'retry\'].$error" ng-show="queueForm[\'retry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RETRY_REQUIRED">Retry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Retry must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.WRAPUPTIME">WrapupTime</label>\n                <input type="number" name="wrapuptime" ng-model="vm.queueCampaign.wrapuptime" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.WRAPUPTIME"></span></div>\n                <div ng-messages="queueForm[\'wrapuptime\'].$error" ng-show="queueForm[\'wrapuptime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.WRAPUPTIME_REQUIRED">WrapupTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WrapupTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.WEIGHT">Weight</label>\n                <input type="number" name="weight" ng-model="vm.queueCampaign.weight" min="0" value="1" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.WEIGHT"></span></div>\n                <div ng-messages="queueForm[\'weight\'].$error" ng-show="queueForm[\'weight\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.WEIGHT_REQUIRED">Weight field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Weight must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.MUSICONHOLD">MusicOnHold</label>\n                <md-select name="musiconhold" ng-model="vm.queueCampaign.musiconhold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="musiconhold.name" ng-repeat="musiconhold in vm.musiconholds" ng-disabled="musiconhold.canSelect === false">{{ musiconhold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MUSICONHOLD"></span></div>\n                <div ng-messages="queueForm[\'musiconhold\'].$error" ng-show="queueForm[\'musiconhold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MUSICONHOLD_REQUIRED">MusicOnHold field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n                <md-select name="dialQueueProject" ng-model="vm.queueCampaign.dialQueueProject" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject.name" ng-repeat="dialQueueProject in vm.projects" ng-disabled="dialQueueProject.canSelect === false">{{ dialQueueProject.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECT"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject\'].$error" ng-show="queueForm[\'dialQueueProject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT2">CallySquareProject2</label>\n                <md-select name="dialQueueProject2" ng-model="vm.queueCampaign.dialQueueProject2" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject2.name" ng-repeat="dialQueueProject2 in vm.projects" ng-disabled="dialQueueProject2.canSelect === false">{{ dialQueueProject2.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECT2"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject2\'].$error" ng-show="queueForm[\'dialQueueProject2\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT2_REQUIRED">CallySquareProject2 field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECTPREVIEW">CallySquareProjectPreview</label>\n                <md-select name="dialQueueProject" ng-model="vm.queueCampaign.dialQueueProject" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject.name" ng-repeat="dialQueueProject in vm.projects" ng-disabled="dialQueueProject.canSelect === false">{{ dialQueueProject.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECTPREVIEW"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject\'].$error" ng-show="queueForm[\'dialQueueProject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECTPREVIEW_REQUIRED">CallySquareProjectPreview field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECTPREVIEW2">CallySquareProjectPreview2</label>\n                <md-select name="dialQueueProject2" ng-model="vm.queueCampaign.dialQueueProject2" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject2.name" ng-repeat="dialQueueProject2 in vm.projects" ng-disabled="dialQueueProject2.canSelect === false">{{ dialQueueProject2.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECTPREVIEW2"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject2\'].$error" ng-show="queueForm[\'dialQueueProject2\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECTPREVIEW2_REQUIRED">CallySquareProjectPreview2 field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialQueueProject2 && (vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\')" class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialAgiAfterHangupAgent" aria-label="RunIfHangupAgent" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.RUNIFHANGUPAGENT">RunIfHangupAgent</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RUNIFHANGUPAGENT"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container originate md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ORIGINATE">ORIGINATE</div>\n            </div>\n            <form name="originateForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNAME">OriginateCallerIdName</label>\n                <input type="text" name="dialOriginateCallerIdName" ng-model="vm.queueCampaign.dialOriginateCallerIdName" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNAME"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdName\'].$error" ng-show="originateForm[\'dialOriginateCallerIdName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNAME_REQUIRED">OriginateCallerIdName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNUMBER">OriginateCallerIdNumber</label>\n                <input type="text" name="dialOriginateCallerIdNumber" ng-model="vm.queueCampaign.dialOriginateCallerIdNumber" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdNumber\'].$error" ng-show="originateForm[\'dialOriginateCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNUMBER_REQUIRED">OriginateCallerIdNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RANDOMLASTDIGITCALLERIDNUMBER">RandomLastDigitCallerIdNumber</label>\n                <input type="number" name="dialRandomLastDigitCallerIdNumber" ng-model="vm.queueCampaign.dialRandomLastDigitCallerIdNumber" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RANDOMLASTDIGITCALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$error" ng-show="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED">RandomLastDigitCallerIdNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATETIMEOUT">OriginateTimeout</label>\n                <input type="number" name="dialOriginateTimeout" ng-model="vm.queueCampaign.dialOriginateTimeout" min="1" max="999" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATETIMEOUT"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateTimeout\'].$error" ng-show="originateForm[\'dialOriginateTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_REQUIRED">OriginateTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.queueCampaign.dialPrefix" ng-pattern="/^\\d+$/" value="" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREFIX"></span></div>\n                <div ng-messages="originateForm[\'dialPrefix\'].$error" ng-show="originateForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_MUST_VALID_PATTERN" translate-values="{ regex: \'/^\\d+$/\' }">Prefix must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.RETRYANDFREQUENCY">RETRYANDFREQUENCY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container global md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBAL">GLOBAL</div>\n            </div>\n            <form name="globalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALMAXRETRY">GlobalMaxRetry</label>\n                <input type="number" name="dialGlobalMaxRetry" ng-model="vm.queueCampaign.dialGlobalMaxRetry" min="1" max="999" value="4" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALMAXRETRY"></span></div>\n                <div ng-messages="globalForm[\'dialGlobalMaxRetry\'].$error" ng-show="globalForm[\'dialGlobalMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_REQUIRED">GlobalMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container congestion md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CONGESTION">CONGESTION</div>\n            </div>\n            <form name="congestionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONMAXRETRY">CongestionMaxRetry</label>\n                <input type="number" name="dialCongestionMaxRetry" ng-model="vm.queueCampaign.dialCongestionMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONMAXRETRY"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionMaxRetry\'].$error" ng-show="congestionForm[\'dialCongestionMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_REQUIRED">CongestionMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONRETRYTIME">CongestionRetryTime</label>\n                <input type="number" name="dialCongestionRetryFrequency" ng-model="vm.queueCampaign.dialCongestionRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONRETRYTIME"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionRetryFrequency\'].$error" ng-show="congestionForm[\'dialCongestionRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_REQUIRED">CongestionRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container busy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.BUSY">BUSY</div>\n            </div>\n            <form name="busyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYMAXRETRY">BusyMaxRetry</label>\n                <input type="number" name="dialBusyMaxRetry" ng-model="vm.queueCampaign.dialBusyMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYMAXRETRY"></span></div>\n                <div ng-messages="busyForm[\'dialBusyMaxRetry\'].$error" ng-show="busyForm[\'dialBusyMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_REQUIRED">BusyMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYRETRYTIME">BusyRetryTime</label>\n                <input type="number" name="dialBusyRetryFrequency" ng-model="vm.queueCampaign.dialBusyRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYRETRYTIME"></span></div>\n                <div ng-messages="busyForm[\'dialBusyRetryFrequency\'].$error" ng-show="busyForm[\'dialBusyRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_REQUIRED">BusyRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container noanswer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOANSWER">NOANSWER</div>\n            </div>\n            <form name="noanswerForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERMAXRETRY">NoAnswerMaxRetry</label>\n                <input type="number" name="dialNoAnswerMaxRetry" ng-model="vm.queueCampaign.dialNoAnswerMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERMAXRETRY"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerMaxRetry\'].$error" ng-show="noanswerForm[\'dialNoAnswerMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_REQUIRED">NoAnswerMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERRETRYTIME">NoAnswerRetryTime</label>\n                <input type="number" name="dialNoAnswerRetryFrequency" ng-model="vm.queueCampaign.dialNoAnswerRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERRETRYTIME"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerRetryFrequency\'].$error" ng-show="noanswerForm[\'dialNoAnswerRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_REQUIRED">NoAnswerRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container nosuchnumber md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOSUCHNUMBER">NOSUCHNUMBER</div>\n            </div>\n            <form name="nosuchnumberForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERMAXRETRY">NoSuchNumberMaxRetry</label>\n                <input type="number" name="dialNoSuchNumberMaxRetry" ng-model="vm.queueCampaign.dialNoSuchNumberMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERMAXRETRY"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_REQUIRED">NoSuchNumberMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERRETRYTIME">NoSuchNumberRetryTime</label>\n                <input type="number" name="dialNoSuchNumberRetryFrequency" ng-model="vm.queueCampaign.dialNoSuchNumberRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERRETRYTIME"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_REQUIRED">NoSuchNumberRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container drop md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.DROP">DROP</div>\n            </div>\n            <form name="dropForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPMAXRETRY">DropMaxRetry</label>\n                <input type="number" name="dialDropMaxRetry" ng-model="vm.queueCampaign.dialDropMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPMAXRETRY"></span></div>\n                <div ng-messages="dropForm[\'dialDropMaxRetry\'].$error" ng-show="dropForm[\'dialDropMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_REQUIRED">DropMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPRETRYTIME">DropRetryTime</label>\n                <input type="number" name="dialDropRetryFrequency" ng-model="vm.queueCampaign.dialDropRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPRETRYTIME"></span></div>\n                <div ng-messages="dropForm[\'dialDropRetryFrequency\'].$error" ng-show="dropForm[\'dialDropRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_REQUIRED">DropRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container abandoned md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ABANDONED">ABANDONED</div>\n            </div>\n            <form name="abandonedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDMAXRETRY">AbandonedMaxRetry</label>\n                <input type="number" name="dialAbandonedMaxRetry" ng-model="vm.queueCampaign.dialAbandonedMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDMAXRETRY"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedMaxRetry\'].$error" ng-show="abandonedForm[\'dialAbandonedMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_REQUIRED">AbandonedMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDRETRYTIME">AbandonedRetryTime</label>\n                <input type="number" name="dialAbandonedRetryFrequency" ng-model="vm.queueCampaign.dialAbandonedRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDRETRYTIME"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedRetryFrequency\'].$error" ng-show="abandonedForm[\'dialAbandonedRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_REQUIRED">AbandonedRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container machine md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.MACHINE">MACHINE</div>\n            </div>\n            <form name="machineForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINEMAXRETRY">MachineMaxRetry</label>\n                <input type="number" name="dialMachineMaxRetry" ng-model="vm.queueCampaign.dialMachineMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINEMAXRETRY"></span></div>\n                <div ng-messages="machineForm[\'dialMachineMaxRetry\'].$error" ng-show="machineForm[\'dialMachineMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_REQUIRED">MachineMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINERETRYTIME">MachineRetryTime</label>\n                <input type="number" name="dialMachineRetryFrequency" ng-model="vm.queueCampaign.dialMachineRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINERETRYTIME"></span></div>\n                <div ng-messages="machineForm[\'dialMachineRetryFrequency\'].$error" ng-show="machineForm[\'dialMachineRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_REQUIRED">MachineRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container agentreject md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AGENTREJECT">AGENTREJECT</div>\n            </div>\n            <form name="agentrejectForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTMAXRETRY">AgentRejectMaxRetry</label>\n                <input type="number" name="dialAgentRejectMaxRetry" ng-model="vm.queueCampaign.dialAgentRejectMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTMAXRETRY"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectMaxRetry\'].$error" ng-show="agentrejectForm[\'dialAgentRejectMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_REQUIRED">AgentRejectMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTRETRYTIME">AgentRejectRetryTime</label>\n                <input type="number" name="dialAgentRejectRetryFrequency" ng-model="vm.queueCampaign.dialAgentRejectRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTRETRYTIME"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$error" ng-show="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_REQUIRED">AgentRejectRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="queueCampaign-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.acw" class="md-block">\n                <label translate="MOTIONDIALER.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.queueCampaign.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedForm[\'acwTimeout\'].$error" ng-show="advancedForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AUTOPAUSE">AutoPause</label>\n                <md-select name="autopause" ng-model="vm.queueCampaign.autopause" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'all\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AUTOPAUSE"></span></div>\n                <div ng-messages="advancedForm[\'autopause\'].$error" ng-show="advancedForm[\'autopause\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AUTOPAUSE_REQUIRED">AutoPause field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RINGINUSE">RingInUse</label>\n                <md-select name="ringinuse" ng-model="vm.queueCampaign.ringinuse" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RINGINUSE"></span></div>\n                <div ng-messages="advancedForm[\'ringinuse\'].$error" ng-show="advancedForm[\'ringinuse\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RINGINUSE_REQUIRED">RingInUse field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MEMBERDELAY">MemberDelay</label>\n                <input type="number" name="memberdelay" ng-model="vm.queueCampaign.memberdelay" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MEMBERDELAY"></span></div>\n                <div ng-messages="advancedForm[\'memberdelay\'].$error" ng-show="advancedForm[\'memberdelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MEMBERDELAY_REQUIRED">MemberDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MemberDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEOUTRESTART">TimeoutRestart</label>\n                <md-select name="timeoutrestart" ng-model="vm.queueCampaign.timeoutrestart" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEOUTRESTART"></span></div>\n                <div ng-messages="advancedForm[\'timeoutrestart\'].$error" ng-show="advancedForm[\'timeoutrestart\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEOUTRESTART_REQUIRED">TimeoutRestart field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.queueCampaign.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedForm[\'monitor_format\'].$error" ng-show="advancedForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONTEXT">Context</label>\n                <input type="text" name="context" ng-model="vm.queueCampaign.context" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONTEXT"></span></div>\n                <div ng-messages="advancedForm[\'context\'].$error" ng-show="advancedForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETINTERFACEVARIABLES">SetInterfaceVariables</label>\n                <md-select name="setinterfacevar" ng-model="vm.queueCampaign.setinterfacevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETINTERFACEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setinterfacevar\'].$error" ng-show="advancedForm[\'setinterfacevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETINTERFACEVARIABLES_REQUIRED">SetInterfaceVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETQUEUEVARIABLES">SetQueueVariables</label>\n                <md-select name="setqueuevar" ng-model="vm.queueCampaign.setqueuevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETQUEUEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueuevar\'].$error" ng-show="advancedForm[\'setqueuevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETQUEUEVARIABLES_REQUIRED">SetQueueVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETQUEUEENTRYVARIABLES">SetQueueEntryVariables</label>\n                <md-select name="setqueueentryvar" ng-model="vm.queueCampaign.setqueueentryvar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETQUEUEENTRYVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueueentryvar\'].$error" ng-show="advancedForm[\'setqueueentryvar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETQUEUEENTRYVARIABLES_REQUIRED">SetQueueEntryVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.queueCampaign.dialOrderByScheduledAt" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.mandatoryDisposition" class="md-block">\n                <label translate="MOTIONDIALER.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.queueCampaign.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="queueCampaign-detail-form-container advancedpreview md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCEDPREVIEW">ADVANCEDPREVIEW</div>\n            </div>\n            <form name="advancedpreviewForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.acw" class="md-block">\n                <label translate="MOTIONDIALER.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.queueCampaign.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedpreviewForm[\'acwTimeout\'].$error" ng-show="advancedpreviewForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.queueCampaign.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedpreviewForm[\'monitor_format\'].$error" ng-show="advancedpreviewForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.queueCampaign.dialOrderByScheduledAt" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedpreviewForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedpreviewForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.mandatoryDisposition" class="md-block">\n                <label translate="MOTIONDIALER.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.queueCampaign.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedpreviewForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedpreviewForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'predictive\'" class="queueCampaign-detail-form-container thresholds md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.THRESHOLDS">THRESHOLDS</div>\n            </div>\n            <form name="thresholdsForm" novalidate>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEMAXTHRESHOLD">PredictiveMaxThreshold</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEMAXTHRESHOLD"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveIntervalMaxThreshold" min="1" max="100" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEMINTHRESHOLD">PredictiveMinThreshold</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEMINTHRESHOLD"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveIntervalMinThreshold" min="1" max="100" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container recallme md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.RECALLME">RECALLME</div>\n            </div>\n            <form name="recallmeForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALRECALLMETIMEOUT">DialRecallMeTimeout</label>\n                <input type="number" name="dialRecallMeTimeout" ng-model="vm.queueCampaign.dialRecallMeTimeout" min="1" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALRECALLMETIMEOUT"></span></div>\n                <div ng-messages="recallmeForm[\'dialRecallMeTimeout\'].$error" ng-show="recallmeForm[\'dialRecallMeTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALRECALLMETIMEOUT_REQUIRED">DialRecallMeTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DIALRECALLMETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DialRecallMeTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialRecallInQueue" aria-label="DialRecallInQueue" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.DIALRECALLINQUEUE">DialRecallInQueue</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALRECALLINQUEUE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'preview\'" class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialPreviewAutoRecallMe" aria-label="Preview_Auto_Recall_Me" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.PREVIEW_AUTO_RECALL_ME">Preview_Auto_Recall_Me</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREVIEW_AUTO_RECALL_ME"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="queueCampaign-detail-form-container globalinterval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBALINTERVAL">GLOBALINTERVAL</div>\n            </div>\n            <form name="globalintervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALINTERVAL">GlobalInterval</label>\n                <input type="text" name="dialGlobalInterval" ng-model="vm.queueCampaign.dialGlobalInterval" value="07:00-22:00,*,*,*" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALINTERVAL"></span></div>\n                <div ng-messages="globalintervalForm[\'dialGlobalInterval\'].$error" ng-show="globalintervalForm[\'dialGlobalInterval\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALINTERVAL_REQUIRED">GlobalInterval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="queueCampaign-detail-form-container timezone md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.TIMEZONE">TIMEZONE</div>\n            </div>\n            <form name="timezoneForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEZONE">Timezone</label>\n                <ms-timezone name="dialTimezone" ng-model="vm.queueCampaign.dialTimezone" autofocus ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEZONE"></span></div>\n                <div ng-messages="timezoneForm[\'dialTimezone\'].$error" ng-show="timezoneForm[dialTimezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="queueCampaign-detail-form-container amd md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AMD">AMD</div>\n            </div>\n            <form name="amdForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialAMDActive" aria-label="AMDActive" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AMDACTIVE">AMDActive</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDACTIVE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDINITIALSILENCE">AMDInitialSilence</label>\n                <input type="number" name="dialAMDInitialSilence" ng-model="vm.queueCampaign.dialAMDInitialSilence" min="0" value="2500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDINITIALSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDInitialSilence\'].$error" ng-show="amdForm[\'dialAMDInitialSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_REQUIRED">AMDInitialSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDInitialSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDGREETING">AMDGreeting</label>\n                <input type="number" name="dialAMDGreeting" ng-model="vm.queueCampaign.dialAMDGreeting" min="0" value="1500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDGREETING"></span></div>\n                <div ng-messages="amdForm[\'dialAMDGreeting\'].$error" ng-show="amdForm[\'dialAMDGreeting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_REQUIRED">AMDGreeting field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDGreeting must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDAFTERGREETINGSILENCE">AMDAfterGreetingSilence</label>\n                <input type="number" name="dialAMDAfterGreetingSilence" ng-model="vm.queueCampaign.dialAMDAfterGreetingSilence" min="0" value="800" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDAFTERGREETINGSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDAfterGreetingSilence\'].$error" ng-show="amdForm[\'dialAMDAfterGreetingSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_REQUIRED">AMDAfterGreetingSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDAfterGreetingSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDTOTALANALYSISTIME">AMDTotalAnalysisTime</label>\n                <input type="number" name="dialAMDTotalAnalysisTime" ng-model="vm.queueCampaign.dialAMDTotalAnalysisTime" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDTOTALANALYSISTIME"></span></div>\n                <div ng-messages="amdForm[\'dialAMDTotalAnalysisTime\'].$error" ng-show="amdForm[\'dialAMDTotalAnalysisTime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_REQUIRED">AMDTotalAnalysisTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDTotalAnalysisTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMINWORDLENGTH">AMDMinWordLength</label>\n                <input type="number" name="dialAMDMinWordLength" ng-model="vm.queueCampaign.dialAMDMinWordLength" min="0" value="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMINWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMinWordLength\'].$error" ng-show="amdForm[\'dialAMDMinWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_REQUIRED">AMDMinWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMinWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDBETWEENWORDSSILENCE">AMDBetweenWordsSilence</label>\n                <input type="number" name="dialAMDBetweenWordsSilence" ng-model="vm.queueCampaign.dialAMDBetweenWordsSilence" min="0" value="50" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDBETWEENWORDSSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDBetweenWordsSilence\'].$error" ng-show="amdForm[\'dialAMDBetweenWordsSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_REQUIRED">AMDBetweenWordsSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDBetweenWordsSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMNUMBEROFWORDS">AMDMaximumNumberOfWords</label>\n                <input type="number" name="dialAMDMaximumNumberOfWords" ng-model="vm.queueCampaign.dialAMDMaximumNumberOfWords" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMNUMBEROFWORDS"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumNumberOfWords\'].$error" ng-show="amdForm[\'dialAMDMaximumNumberOfWords\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_REQUIRED">AMDMaximumNumberOfWords field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumNumberOfWords must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDSILENCETHRESHOLD">AMDSilenceThreshold</label>\n                <input type="number" name="dialAMDSilenceThreshold" ng-model="vm.queueCampaign.dialAMDSilenceThreshold" min="0" max="32767" value="256" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDSILENCETHRESHOLD"></span></div>\n                <div ng-messages="amdForm[\'dialAMDSilenceThreshold\'].$error" ng-show="amdForm[\'dialAMDSilenceThreshold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_REQUIRED">AMDSilenceThreshold field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_LESS_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>32767</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMWORDLENGTH">AMDMaximumWordLength</label>\n                <input type="number" name="dialAMDMaximumWordLength" ng-model="vm.queueCampaign.dialAMDMaximumWordLength" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumWordLength\'].$error" ng-show="amdForm[\'dialAMDMaximumWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_REQUIRED">AMDMaximumWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HOPPERS">HOPPERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperstatistics md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperStatisticsController as vm_hs" ng-init="vm_hs.init(vm.queueCampaign)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERWIDGET">Hoppers</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_hs.init(vm.queueCampaign)" aria-label="refresh Hopper" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{(vm_hs.total || 0) + (vm_hs.closed || 0)}}</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.TOTAL\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.fresh || 0}} ({{vm_hs.total ? ((((vm_hs.fresh || 0) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.FRESH\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.total ? (vm_hs.total - (vm_hs.fresh || 0)) : 0}} ({{vm_hs.total ? ((((vm_hs.total - (vm_hs.fresh || 0)) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.OPEN\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.closed ? (vm_hs.closed || 0) : 0}} ({{vm_hs.closed ? ((((vm_hs.closed) * 100)/(vm_hs.closed + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.CLOSED\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n\n          </div>\n          <div class="queueCampaign-detail-form-container hoppers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHoppersController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERS">Hoppers</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHoppers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHoppers()" aria-label="refresh Hoppers" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHoppers.length}} {{vm_dc.selectedQueueCampaignHoppers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHoppers" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedQueueCampaignHoppers($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHoppers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="priority">\n                        {{ \'MOTIONDIALER.PRIORITY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="recallme">\n                        {{ \'MOTIONDIALER.RECALLAGENT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopper" md-select-id="id" ng-repeat="hopper in vm_dc.queueCampaignHoppers.rows">\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.ContactId}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell privacy ng-cloak>\n                        {{hopper.phone}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countcongestionretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countbusyretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnoanswerretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnosuchnumberretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countdropretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countabandonedretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countmachineretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countagentrejectretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{ hopper.scheduledat | formatdate }}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{ vm_dc.arraypriority[hopper.priority].option }} </td>\n\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell class="recallme ">\n                        <md-icon md-colors="{color: {{hopper.recallme ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{hopper.recallme? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" translate="MOTIONDIALER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(hopper, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHoppers.rows.length">\n                      <td md-cell colspan="17">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPER_AVAILABLE">No hopper available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHoppers.count}}" md-on-paginate="vm_dc.getQueueCampaignHoppers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HISTORY">HISTORY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperhistories md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperHistoriesController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERHISTORIES">HopperHistories</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperHistories()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHopperHistories()" aria-label="refresh HopperHistories" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERHISTORIES">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperHistories.length}} {{vm_dc.selectedQueueCampaignHopperHistories.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperHistories" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperHistories" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperHistory" md-select-id="id" ng-repeat="hopperHistory in vm_dc.queueCampaignHopperHistories.rows">\n                      <td md-cell>\n                        {{hopperHistory.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.scheduledat | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.endtime | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperHistories.rows.length">\n                      <td md-cell colspan="11">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERHISTORY_AVAILABLE">No hopperhistory available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperHistories.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperHistories" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.FINAL">FINAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperfinals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperFinalsController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERFINALS">HopperFinals</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperFinals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHopperFinals()" aria-label="refresh HopperFinals" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERFINALS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                  <td md-cell class="actions">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="vm_dc.countContactsQueueCampaignHopperFinal(vm_dc.query.id); $mdOpenMenu($event);">\n                        <md-icon md-font-icon="icon-backup-restore"></md-icon>\n                        <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(3)">\n                            <span translate="MOTIONDIALER.NOANSWER ">NoAnswer</span>\n                            <span class="badge">({{vm_dc.contacts.noAnswerContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(5)">\n                            <span translate="MOTIONDIALER.BUSY ">Busy</span>\n                            <span class="badge">({{vm_dc.contacts.busyContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(8)">\n                            <span translate="MOTIONDIALER.CONGESTION ">Congestion</span>\n                            <span class="badge">({{vm_dc.contacts.congestionContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(10)">\n                            <span translate="MOTIONDIALER.DROPPED ">Drop</span>\n                            <span class="badge">({{vm_dc.contacts.dropContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(11)">\n                            <span translate="MOTIONDIALER.ABANDONED ">Abandoned</span>\n                            <span class="badge">({{vm_dc.contacts.abandonedContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(22)">\n                            <span translate="MOTIONDIALER.RECALLFAILEDTIMEOUT">Recall</span>\n                            <span class="badge">({{vm_dc.contacts.reCallContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(0)">\n                            <span translate="MOTIONDIALER.NO_SUCH_NUMBER">NoSuchNumber</span>\n                            <span class="badge">({{vm_dc.contacts.noSuchContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item>\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(19)">\n                            <span translate="MOTIONDIALER.ANSWERING_MACHINE">AnsweringMachine</span>\n                            <span class="badge">({{vm_dc.contacts.answeringMachine}})</span>\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperFinals.length}} {{vm_dc.selectedQueueCampaignHopperFinals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperFinals" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.moveSelectedQueueCampaignHopperFinals($event)" aria-label="move selected" translate translate-attr-label="MOTIONDIALER.MOVE_SELECTED">\n                    <md-icon md-font-icon="icon-restore"></md-icon>\n                    <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperFinals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="disposition">\n                        {{ \'MOTIONDIALER.DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="secondDisposition">\n                        {{ \'MOTIONDIALER.SECOND_LEVEL_DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="thirdDisposition">\n                        {{ \'MOTIONDIALER.THIRD_LEVEL_DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperFinal" md-select-id="id" ng-repeat="hopperFinal in vm_dc.queueCampaignHopperFinals.rows">\n                      <td md-cell>\n                        {{hopperFinal.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countcongestionretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countbusyretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnoanswerretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnosuchnumberretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countdropretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countabandonedretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countmachineretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countagentrejectretry}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.disposition}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.secondDisposition}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.thirdDisposition}}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.moveConfirm(hopperFinal, $event)" translate="MOTIONDIALER.MOVE_HOPPERFINAL">\n                                Move HopperFinal\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperFinals.rows.length">\n                      <td md-cell colspan="30">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERFINAL_AVAILABLE">No hopperfinal available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperFinals.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperFinals" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.BLACKLIST">BLACKLIST</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperblacks md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperBlacksController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERBLACKS">HopperBlacks</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperBlacks()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperBlacks.length}} {{vm_dc.selectedQueueCampaignHopperBlacks.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperBlacks" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperBlacks" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperBlacks">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperBlack" md-select-id="id" ng-repeat="hopperBlack in vm_dc.queueCampaignHopperBlacks.rows">\n                      <td md-cell>\n                        {{hopperBlack.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperBlack.phone}}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperBlacks.rows.length">\n                      <td md-cell colspan="4">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERBLACK_AVAILABLE">No hopperblack available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperBlacks.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperBlacks" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/queueCampaigns.html",'<div id="queueCampaigns" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-fire" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MOTIONDIALER.QUEUECAMPAIGNS">QueueCampaigns</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MOTIONDIALER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedQueueCampaigns.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedQueueCampaigns =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MOTIONDIALER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-queueCampaigns-count">\n          <span>{{vm.selectedQueueCampaigns.length}}</span>\n          <span translate="MOTIONDIALER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MOTIONDIALER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllQueueCampaigns()" translate="MOTIONDIALER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectQueueCampaigns()" translate="MOTIONDIALER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedQueueCampaigns" csv-label="true" filename="queueCampaigns.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedQueueCampaigns($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- QUEUECAMPAIGN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedQueueCampaigns" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueueCampaigns">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MOTIONDIALER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n                <th md-column md-order-by="dialActive">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="dialMethod">{{ \'MOTIONDIALER.METHOD\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'MOTIONDIALER.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.queueCampaigns.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="queueCampaign" md-select-id="id" ng-repeat="queueCampaign in vm.queueCampaigns.rows">\n                <td md-cell ng-if="queueCampaign.userpic"><img class="avatar" alt="{{queueCampaign.name}}" ng-src="api/users/{{queueCampaign.id}}/avatar" /></td>\n                <td md-cell ng-if="!queueCampaign.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{queueCampaign.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="id ">{{queueCampaign.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="name ">{{queueCampaign.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="dialActive ">\n                  <md-icon md-colors="{color: {{queueCampaign.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{queueCampaign.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':queueCampaign.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="dialMethod ">{{ vm.arraydialMethod[queueCampaign.dialMethod].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="strategy ">{{ vm.arraystrategy[queueCampaign.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(queueCampaign, $event    )" translate="MOTIONDIALER.EDIT_QUEUECAMPAIGN">\n                          Edit QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(queueCampaign, $event    )" translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN">\n                          clone QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.listadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN">\n                          listadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.blacklistadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN">\n                          blacklistadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.TEAMADD_QUEUECAMPAIGN">\n                          teamadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN">\n                          agentadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(queueCampaign, $event    )" translate="MOTIONDIALER.DELETE_QUEUECAMPAIGN">\n                          Delete QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(queueCampaign, $event    )" translate="MOTIONDIALER.GOTOREALTIME_QUEUECAMPAIGN">\n                          goToRealtime QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queueCampaigns.count}}" md-on-paginate="vm.getQueueCampaigns" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / QUEUECAMPAIGN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD QUEUECAMPAIGN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-queueCampaign-button" ng-click="vm.createOrEditQueueCampaign($event)" aria-label="add queueCampaign" translate translate-attr-aria-label="MOTIONDIALER.ADD_QUEUECAMPAIGN">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD QUEUECAMPAIGN BUTTON --\x3e\n</div>'),e.put("app/main/apps/motiondialer/views/realtime/abandonedcalls/view.html",'<md-toolbar class="md-table-toolbar md-default table-header">\n  <div class="md-toolbar-tools" layout="row" layout-align="center center">\n    <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n    <ms-search-bar on-search="vm.getAbandonedCalls()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300">\n    </ms-search-bar>\n    <div flex></div>\n\n    <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getAbandonedCalls()"></ms-quick-filter>\n\n    <md-button class="md-icon-button" ng-click="vm.refresh && vm.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n      <md-icon md-font-icon="icon-reload"></md-icon>\n      <md-tooltip ng-if="vm.showTooltip" md-visible="vm.showTooltip">{{\'DASHBOARDS.CLICKRELOAD\' | translate}}\n      </md-tooltip>\n    </md-button>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAbandonedCalls">\n      <tr md-row>\n        <th md-column md-order-by="id">ID</th>\n        <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n        <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n        <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n        <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n        <th md-column md-order-by="queuecallerexitAt">{{\'DASHBOARDS.QUEUECALLEREXITAT\' | translate}}</th>\n        <th md-column md-order-by="queuecallerexitreason">{{\'DASHBOARDS.QUEUECALLEREXITREASON\' | translate}}</th>\n        <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.abandonedCalls.rows.length">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.abandonedCalls.rows">\n        <td md-cell class="id">{{call.id}}</td>\n        <td md-cell class="firstName" privacy ng-cloak>{{call.calleridname}}</td>\n        <td md-cell class="list" privacy ng-cloak>{{call.calleridnum}}</td>\n        <td md-cell class="list">{{vm.queuesMap[call.queue]}}</td>\n        <td md-cell class="list">\n          {{call.queuecallerabandonAt ? (call.queuecallerabandonAt | formatdate) : (call.queuecallerexitAt | formatdate) }}\n        </td>\n        <td md-cell class="list">{{call.queuecallerexitAt ? (call.queuecallerexitAt | formatdate) : undefined }}\n        </td>\n        <td md-cell class="list">{{call.queuecallerexitreason}}</td>\n        <td md-cell class="list">{{call.lastAssignedTo}}</td>\n        <td md-cell class="list">{{ call.disposition }}</td>\n        <td md-cell class="list">{{ call.secondDisposition }}</td>\n        <td md-cell class="list">{{ call.thirdDisposition }}</td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-menu>\n                  <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.ASSIGNTO">\n                    Assigned\n                    to</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="call.lastAssignedTo">\n                      <md-button ng-click="vm.assignTo(call)"><em translate="DASHBOARDS.NONE">Not Assigned</em>\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.agents.rows.length" ng-repeat="agent in vm.agents.rows">\n                      <md-button ng-click="vm.assignTo(call,agent)">{{agent.name}}</md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.dispose(call)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">\n                  Dispose\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.abandonedCalls.count}}" md-on-paginate="vm.getAbandonedCalls" md-page-select></md-table-pagination>'),e.put("app/main/apps/motiondialer/views/realtime/ivr_campaigns/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.IVR_CAMPAIGNS">Ivr Campaigns</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getCampaigns()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCampaigns">\n      <tr md-row>\n        <th md-column>{{\'MOTIONDIALER.NAME\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL_MANAGED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.LIMITED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.ORIGINATED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.MESSAGE\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.CALLYSQUAREPROJECT\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TRUNK\' | translate }}</th>\n        <th md-column>{{\'MOTIONDIALER.ACTIVE\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.campaigns">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, campaign) in vm.campaigns">\n        <td md-cell>\n          <span>{{campaign.name}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.ivrTotalCallsDays || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.ivrAnswerCallsDay || 0}} ({{(campaign.ivrTotalCallsDays) ? (campaign.ivrAnswerCallsDay || 0) * 100/(campaign.ivrTotalCallsDays ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.limitCalls || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.originated || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.message ? (\'MOTIONDIALER.\'+campaign.message | translate) : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.dialQueueProject || \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{campaign.Trunk ? campaign.Trunk.name : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <md-icon md-colors="{color: {{campaign.active ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{campaign.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.createOrEditIvrCampaign($event, campaign)" translate="MOTIONDIALER.EDIT_CAMPAIGN">\n                  Edit Campaign\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getCampaigns" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queue_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_CALLS">Queue Calls</span>\n  </div>\n</md-toolbar>\n\x3c!-- QUEUES TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'MOTIONDIALER.DID\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.QUEUE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.CALLER\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.AGENT\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.DURATION\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.getSize(vm.rpcVoiceQueuesChannels)">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(key, channel) in vm.rpcVoiceQueuesChannels | limitObjectFromTo: vm.queryChannels.limit:(vm.queryChannels.page - 1) * vm.queryChannels.limit">\n        <td md-cell>\n          <md-icon ng-if="channel.queuecallerleaveAt" md-font-icon="icon-phone-in-talk green-fg"></md-icon>\n          <md-icon ng-if="!channel.queuecallerleaveAt" md-font-icon="icon-phone-incoming md-accent"></md-icon>\n        </td>\n        <td md-cell>{{channel.exten}}</td>\n        <td md-cell>{{channel.queue}}</td>\n        <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n        <td md-cell>\n          <span ng-if="channel.queuecallerleaveAt">\n            {{channel.connectedlinename}}, {{channel.connectedlinenum}}\n            <span class="text-boxed">\n              <timer start-time="channel.queuecallerleaveAt"></timer>\n            </span>\n          </span>\n          <span ng-if="!channel.queuecallerleaveAt" class="text-boxed">\n            {{ \'MOTIONDIALER.WAITING_FOR_AGENT\' | translate }}\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell>\n          <span class="text-boxed">\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item>\n                <md-button ng-click="vm.hangup(channel.uniqueid)" translate="MOTIONDIALER.HANGUP">\n                  Hangup\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.redirectToNumber($event, channel.uniqueid)" translate="MOTIONDIALER.REDIRECT_TO_NUMBER">\n                  Number\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu class="no-margin">\n                  <md-button ng-mouseenter="vm.getAvailableAgents()" translate="MOTIONDIALER.REDIRECT_TO_AGENT">\n                    Redirect to Agent</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="!vm.availableAgents">\n                      <md-progress-circular class="md-accent auto-margin" md-diameter="32" md-mode="indeterminate">\n                      </md-progress-circular>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length > 0" ng-repeat="agent in vm.availableAgents">\n                      <md-button ng-click="vm.redirectToAgent(channel.uniqueid, agent.name, agent.context)">\n                        {{agent.name}}</md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length === 0">\n                      <span>No agents available</span>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.queryChannels.limit" md-page="vm.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm.getSize(vm.rpcVoiceQueuesChannels)}}" md-page-select></md-table-pagination>\n\x3c!-- / QUEUES TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queue_params/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_PARAMETERS">Params</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column>{{\'\n                                MOTIONDIALER.NAME\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.TOTAL\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.TOTAL_OFFERED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.MANAGED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.ABANDONED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.DROPPED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_HOLD_TIME\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_DURATION\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_BILLABLE\' | translate}}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, queue) in vm.queues">\n        <td md-cell>\n          <span>{{queue.name}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(queue.answered + queue.outboundNoAnswerCallsDay + queue.outboundBusyCallsDay + queue.outboundCongestionCallsDay + queue.outboundNoSuchCallsDay + queue.outboundUnknownCallsDay + queue.outboundDropCallsDayTimeout + queue.outboundDropCallsDayCallersExit + queue.outboundBlacklistCallsDay + queue.outboundOriginateFailureCallsDay + queue.outboundAnswerAgiCallsDay + queue.outboundReCallsDay + queue.outboundRejectCallsDay )|| 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{queue.total || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered || 0}} ({{(queue.answered) ? (100 - (((queue.outboundDropCallsDayTimeout || 0) * 100/(queue.total)) | number:1 ) - (((queue.outboundDropCallsDayCallersExit || 0) * 100/(queue.total )) | number:1 )  ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.outboundDropCallsDayCallersExit || 0}} ({{(queue.outboundDropCallsDayCallersExit) ? (queue.outboundDropCallsDayCallersExit || 0) * 100/(queue.total ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.outboundDropCallsDayTimeout || 0}} ({{(queue.outboundDropCallsDayTimeout) ? (queue.outboundDropCallsDayTimeout || 0) * 100/(queue.total) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? (queue.sumHoldTime / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? (queue.sumDuration / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered ? ((queue.sumBillable || 0) / queue.answered) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queues/predictive/dialog.html",'<md-dialog class="predictive-dialog" aria-label="New predictive">\n  <md-toolbar class="md-accent md-hue-2">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ vm.queueCampaign.name }} Info</span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-dialog-content class="text-center" ms-scroll>\n    <ds-widget-clock data-show-digital></ds-widget-clock>\n    <div ng-if="!vm.queueCampaign.startProgressive && !vm.queueCampaign.startPredictive">\n      <div class="md-title"><span translate="MOTIONDIALER.PREDICTIVE_IS_NOT_RUNNING">Predictive is not running</span></div>\n    </div>\n\n    <div ng-if="vm.queueCampaign.startProgressive && !vm.queueCampaign.startPredictive" class="m-10">\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-headline"><span translate="MOTIONDIALER.DATA_COLLECTION_IN_PROGRESSIVE">Data collection in progressive</span></div>\n          <div class="md-subhead">({{vm.queueCampaign.dialPredictiveInterval}} minutes)</div>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.STARTTIME">Start Time</span></div>\n          <div class="md-headline">{{ vm.setFormatTime(vm.queueCampaign.startProgressive) }}</div>\n        </div>\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.ENDTIME">End Time</span></div>\n          <div class="md-headline">\n            {{ vm.addMinutes(vm.queueCampaign.startProgressive, vm.queueCampaign.dialPredictiveInterval) }}\n          </div>\n        </div>\n      </div>\n      <div>\n        <span class="text-boxed blue-bg white-fg">\n          {{vm.queueCampaign.message ? (\'MOTIONDIALER.\' + vm.queueCampaign.message | translate) : \'--\'}}\n        </span>\n      </div>\n    </div>\n    <div ng-if="vm.queueCampaign.startPredictive" class="m-10">\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-headline"><span translate="MOTIONDIALER.PREDICTIVE_IS_RUNNING">Predictive is runnning</span></div>\n          <div class="md-subhead">({{vm.queueCampaign.dialPredictiveInterval}} minutes)</div>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.STARTTIME">Start Time</span></div>\n          <div class="md-headline">{{ vm.setFormatTime(vm.queueCampaign.startPredictive) }}</div>\n        </div>\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.ENDTIME">End Time</span></div>\n          <div class="md-headline">\n            {{ vm.addMinutes(vm.queueCampaign.startPredictive, vm.queueCampaign.dialPredictiveInterval) }}\n          </div>\n        </div>\n      </div>\n      <div>\n        <span class="text-boxed blue-bg white-fg">\n          {{vm.queueCampaign.message ? (\'MOTIONDIALER.\' + vm.queueCampaign.message | translate) : \'--\'}}\n        </span>\n      </div>\n      <div class="row">\n        <md-card>\n          <md-toolbar class="md-table-toolbar md-default">\n            <div class="md-toolbar-tools">\n              <span class="md-subhead">Predictive - {{ \'MOTIONDIALER.PREVIOUS_INTERVAL\' | translate }}</span>\n            </div>\n          </md-toolbar>\n          <md-table-container>\n            <table md-table>\n              <tbody md-body>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.TOTAL_CALLS">Total Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.predictiveIntervalTotalCalls }}</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.ANSWERED_CALLS">Total Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.predictiveIntervalAnsweredCalls }}</td>\n                </tr>\n                \x3c!-- Temporaneamente non mostrate perchè contengono anche i dati dell\'intervallo corrente --\x3e\n                \x3c!-- <tr md-row>\n                                    <td md-cell>Dropped Calls Timeout</td>\n                                    <td md-cell>{{ vm.queueCampaign.predictiveIntervalDroppedCallsTimeout }}</td>\n                                </tr>\n                                <tr md-row>\n                                    <td md-cell>Dropped Calls Caller Exit</td>\n                                    <td md-cell>{{ vm.queueCampaign.predictiveIntervalDroppedCallsCallersExit }}\n                                    </td>\n                                </tr> --\x3e\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AVG_HOLD_TIME">AVG Hold Time</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.predictiveIntervalAvgHoldtime | number:0 }}s</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AVG_TALK_TIME">AVG Talk Time</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.predictiveIntervalAvgTalktime | number:0 }}s</td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n        </md-card>\n        <md-card>\n          <md-toolbar class="md-table-toolbar md-default">\n            <div class="md-toolbar-tools">\n              <span class="md-subhead">ErlangB - {{ \'MOTIONDIALER.CURRENT_INTERVAL\' | translate }}</span>\n            </div>\n          </md-toolbar>\n          <md-table-container>\n            <table md-table>\n              <tbody md-body>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.SCHEDULED_CALLS">Scheduled Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangCalls }}</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.ONE_CALL_EVERY">One call every</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.erlangCallToSecond | number:0 }}s</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.DROPRATE">Drop Rate</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangAbandonmentRate * 100 | number:2 }}%</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AGENTBUSYFACTOR">Agent Busy Factor</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangBusyFactor * 100 | number:2 }}%</td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n        </md-card>\n      </div>\n    </div>\n\n\n  </md-dialog-content>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.TALKING\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.BUSY\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.WAITING\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.ORIGINATED_TEXT\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.MESSAGE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.METHOD\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n        <th md-column md-order-by="dialActive">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb }} ({{ queue.loggedIn }})</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.talking  + queue.pTalking}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb - queue.available - queue.paused - queue.talking - queue.waiting\n               }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.originated }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{ queue.message ? (\'MOTIONDIALER.\'+queue.message | translate) : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.dialMethod || 0 }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{ queue.Trunk ? queue.Trunk.name : \'--\' }}</span>\n        </td>\n        <td md-cell>\n          <md-icon md-colors="{color: {{queue.dialActive ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{queue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="MOTIONDIALER.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if="queue.dialMethod == \'predictive\'">\n                <md-button ng-click="vm.showPredictiveQueueCampaignInfo($event, queue)" translate="MOTIONDIALER.SHOW_PREDICTIVE_QUEUE_CAMPAIGN_INFO">\n                  Show Predictive Info\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="MOTIONDIALER.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/motiondialer/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUE_CALLS">Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ABANDONEDCALLS">Abandoned Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUE_PARAMS">Queue Parameters</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.IVR_CAMPAIGNS">Ivr Campaigns</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/create/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.openchannelAccount.name" ng-required="true" autofocus ng-disabled="!vm.newOpenchannelAccount">\n\n        <div ng-messages="openchannelAccountForm[\'name\'].$error" ng-show="openchannelAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.openchannelAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="openchannelAccountForm[\'key\'].$error" ng-show="openchannelAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.REPLYURI">replyUri</label>\n        <input type="url" name="replyUri" ng-model="vm.openchannelAccount.replyUri">\n\n        <div class="hint"><span translate="OPENCHANNEL.HELP.REPLYURI"></span></div>\n        <div ng-messages="openchannelAccountForm[\'replyUri\'].$error" ng-show="openchannelAccountForm[\'replyUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.REPLYURI_REQUIRED">replyUri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="OPENCHANNEL.ERRORS.REPLYURI_MUST_VALID_URL">replyUri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.openchannelAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.LIST"></span></div>\n        <div ng-messages="openchannelAccountForm[\'ListId\'].$error" ng-show="openchannelAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelAccount.description">\n\n        <div ng-messages="openchannelAccountForm[\'description\'].$error" ng-show="openchannelAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelAccount" ng-click="vm.saveOpenchannelAccount()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountForm.$invalid || openchannelAccountForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelAccount" ng-click="vm.addNewOpenchannelAccount()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELACCOUNT" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELACCOUNT">\n          ADD OPENCHANNELACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelAccount" ng-click="vm.deleteOpenchannelAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",'<md-dialog class="openchannelAccount-dialog" aria-label="openchannelAccount" ng-init="vm.onInit()">\n  <form name="openchannelAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT">Add Agent to openchannelAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/agent/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'agent\'].$error" ng-show="openchannelAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'timeout\'].$error" ng-show="openchannelAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'accesskeyid\'].$error" ng-show="openchannelAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'secretaccesskey\'].$error" ng-show="openchannelAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'lexregion\'].$error" ng-show="openchannelAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'botname\'].$error" ng-show="openchannelAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'times\'].$error" ng-show="openchannelAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="openchannelAccountFormApp[\'text\'].$error" ng-show="openchannelAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/close/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'disposition\'].$error" ng-show="openchannelAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'key\'].$error" ng-show="openchannelAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'language\'].$error" ng-show="openchannelAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'projectId\'].$error" ng-show="openchannelAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'clientEmail\'].$error" ng-show="openchannelAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="openchannelAccountFormApp[\'privateKey\'].$error" ng-show="openchannelAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'language\'].$error" ng-show="openchannelAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'condition\'].$error" ng-show="openchannelAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'truepriority\'].$error" ng-show="openchannelAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'falsepriority\'].$error" ng-show="openchannelAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'priority\'].$error" ng-show="openchannelAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/noop/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'value\'].$error" ng-show="openchannelAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/queue/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'queue\'].$error" ng-show="openchannelAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'timeout\'].$error" ng-show="openchannelAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/system/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'command\'].$error" ng-show="openchannelAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'variable\'].$error" ng-show="openchannelAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/tag/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'tag\'].$error" ng-show="openchannelAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/openchannelCannedAnswers/dialog.html",'<md-dialog class="openchannelCannedAnswer-dialog" aria-label="New OpenchannelCannedAnswer">\n  <form name="openchannelCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.openchannelCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="openchannelCannedAnswerForm[\'key\'].$error" ng-show="openchannelCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.openchannelCannedAnswer.value" required></textarea>\n\n        <div ng-messages="openchannelCannedAnswerForm[\'value\'].$error" ng-show="openchannelCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelCannedAnswer.description">\n\n        <div ng-messages="openchannelCannedAnswerForm[\'description\'].$error" ng-show="openchannelCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelCannedAnswer" ng-click="vm.saveOpenchannelCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="openchannelCannedAnswerForm.$invalid || openchannelCannedAnswerForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelCannedAnswer" ng-click="vm.addNewOpenchannelCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="openchannelCannedAnswerForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER">\n          ADD OPENCHANNELCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelCannedAnswer" ng-click="vm.deleteOpenchannelCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/view.html",'<div id="openchannel-openchannelAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-openchannelAccounts-button md-icon-button" aria-label="Go to openchannelAccounts" ng-click="vm.gotoOpenchannelAccounts()" translate translate-attr-aria-label="OPENCHANNEL.GO_TO_OPENCHANNELACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="openchannelAccount-image" hide-xs>\n          <img ng-src="assets/images/business/openchannelAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.openchannelAccount.id}}\n            <span ng-if="vm.openchannelAccount.name">{{vm.openchannelAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="OPENCHANNEL.CREATED_AT"></span> <span>{{vm.openchannelAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.openchannelAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOpenchannelAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (openchannelDispositionsForm.$invalid) || (openchannelCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.openchannelAccount.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.openchannelAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="OPENCHANNEL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.REPLYURI">replyUri</label>\n                <input type="url" name="replyUri" ng-model="vm.openchannelAccount.replyUri" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.REPLYURI"></span></div>\n                <div ng-messages="generalForm[\'replyUri\'].$error" ng-show="generalForm[\'replyUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.REPLYURI_REQUIRED">replyUri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="OPENCHANNEL.ERRORS.REPLYURI_MUST_VALID_URL">replyUri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.openchannelAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.openchannelAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.MAPKEY">MapKey</label>\n                <md-select name="mapKey" ng-model="vm.openchannelAccount.mapKey" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">None</md-option>\n                  <md-optgroup label="standard">\n                    <md-option ng-value="mapKey.columnName" ng-repeat="mapKey in vm.fields" ng-if="!mapKey.columnName.toString().startsWith(\'cf_\')" ng-disabled="mapKey.canSelect === false">{{ mapKey.displayName }}</md-option>\n                  </md-optgroup>\n                  <md-optgroup label="custom">\n                    <md-option ng-value="mapKey.columnName" ng-repeat="mapKey in vm.fields" ng-if="mapKey.columnName.toString().startsWith(\'cf_\')" ng-disabled="mapKey.canSelect === false">{{ mapKey.displayName }}</md-option>\n                  </md-optgroup>\n                </md-select>\n                <div ng-messages="generalForm[\'mapKey\'].$error" ng-show="generalForm[\'mapKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.MAPKEY_REQUIRED">MapKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.openchannelAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.RECEIVEURI">receiveUri</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUri" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUri" name="receiveUri" ng-value="vm.location + \'/api/openchannel/accounts/\' + vm.openchannelAccount.id + \'/notify\'" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.RECEIVEURI"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="openchannelAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="OPENCHANNEL.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.openchannelAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="openchannelAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.openchannelAccount.queueTransfer == true" class="md-block">\n                <label translate="OPENCHANNEL.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.openchannelAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.openchannelAccount.agentTransfer == true" class="md-block">\n                <label translate="OPENCHANNEL.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.openchannelAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.PROXY">PROXY</div>\n            </div>\n            <form name="proxyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.TOKEN">token</label>\n                <input type="text" name="token" ng-model="vm.openchannelAccount.token" autofocus disabled>\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.TOKEN"></span></div>\n                <div ng-messages="proxyForm[\'token\'].$error" ng-show="proxyForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.TOKEN_REQUIRED">token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="openchannelAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.openchannelAccount.mandatoryDisposition" class="md-block">\n                <label translate="OPENCHANNEL.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.openchannelAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="OpenchannelAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="openchannelAccount-detail-form-container openchanneldispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="OPENCHANNEL.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add openchannel dispositions" translate translate-attr-label="OPENCHANNEL.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="openchannelAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'OPENCHANNEL.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container openchannelcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountOpenchannelCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="OPENCHANNEL.OPENCHANNELCANNEDANSWERS">OpenchannelCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event)" aria-label="add openchannelCannedAnswer" translate translate-attr-label="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length}} {{vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedOpenchannelAccountOpenchannelCannedAnswers" csv-label="true" filename="openchannelAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedOpenchannelAccountOpenchannelCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'OPENCHANNEL.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'OPENCHANNEL.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'OPENCHANNEL.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'OPENCHANNEL.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'OPENCHANNEL.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="openchannelCannedAnswer" md-select-id="id" ng-repeat="openchannelCannedAnswer in vm_dc.openchannelAccountOpenchannelCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{ openchannelCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" translate="OPENCHANNEL.EDIT_OPENCHANNELCANNEDANSWER">\n                                Edit OpenchannelCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(openchannelCannedAnswer, $event)" translate="OPENCHANNEL.DELETE_OPENCHANNELCANNEDANSWER">\n                                Delete OpenchannelCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.openchannelAccountOpenchannelCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="OPENCHANNEL.NO_OPENCHANNELCANNEDANSWER_AVAILABLE">No openchannelcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.openchannelAccountOpenchannelCannedAnswers.count}}" md-on-paginate="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.openchannelAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="OPENCHANNEL.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedOpenchannelAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedOpenchannelAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedOpenchannelAccountApps.length}} {{vm_ac.selectedOpenchannelAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedOpenchannelAccountApps($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedOpenchannelAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.openchannelAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editOpenchannelAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.openchannelAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="OPENCHANNEL.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getOpenchannelAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getOpenchannelAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getOpenchannelAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="OPENCHANNEL.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedOpenchannelAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedOpenchannelAccountInteractions.length}} {{vm_dc.selectedOpenchannelAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedOpenchannelAccountInteractions" csv-label="true" filename="openchannelAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedOpenchannelAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedOpenchannelAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getOpenchannelAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'OPENCHANNEL.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'OPENCHANNEL.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'OPENCHANNEL.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'OPENCHANNEL.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'OPENCHANNEL.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'OPENCHANNEL.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'OPENCHANNEL.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.openchannelAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'OPENCHANNEL.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'OPENCHANNEL.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spyopenchannelInteraction($event, interaction)" translate="OPENCHANNEL.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.openchannelInteractionDownload(interaction, $event, true)" translate="OPENCHANNEL.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.openchannelInteractionDownload(interaction, $event)" translate="OPENCHANNEL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="OPENCHANNEL.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.openchannelAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="OPENCHANNEL.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.openchannelAccountInteractions.count}}" md-on-paginate="vm_dc.getOpenchannelAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/openchannelAccounts.html",'<div id="openchannelAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-google-earth" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="OPENCHANNEL.OPENCHANNELACCOUNTS">OpenchannelAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="OPENCHANNEL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedOpenchannelAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedOpenchannelAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="OPENCHANNEL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-openchannelAccounts-count">\n          <span>{{vm.selectedOpenchannelAccounts.length}}</span>\n          <span translate="OPENCHANNEL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="OPENCHANNEL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllOpenchannelAccounts()" translate="OPENCHANNEL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectOpenchannelAccounts()" translate="OPENCHANNEL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOpenchannelAccounts" csv-label="true" filename="openchannelAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOpenchannelAccounts($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- OPENCHANNELACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOpenchannelAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'OPENCHANNEL.KEY\' | translate }}</th>\n                <th md-column md-order-by="replyUri">{{ \'OPENCHANNEL.REPLYURI\' | translate }}</th>\n                <th md-column md-order-by="ListId">{{ \'OPENCHANNEL.LIST\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'OPENCHANNEL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.openchannelAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="openchannelAccount" md-select-id="id" ng-repeat="openchannelAccount in vm.openchannelAccounts.rows">\n                <td md-cell ng-if="openchannelAccount.userpic"><img class="avatar" alt="{{openchannelAccount.name}}" ng-src="api/users/{{openchannelAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!openchannelAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{openchannelAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="id ">{{openchannelAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="name ">{{openchannelAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="key ">{{openchannelAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="replyUri ">{{openchannelAccount.replyUri}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="ListId ">{{ (vm.lists | filter : {\'id\':openchannelAccount.ListId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="description ">{{openchannelAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(openchannelAccount, $event    )" translate="OPENCHANNEL.EDIT_OPENCHANNELACCOUNT">\n                          Edit OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(openchannelAccount, $event    )" translate="OPENCHANNEL.INTERACTIONS_OPENCHANNELACCOUNT">\n                          Interactions OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(openchannelAccount, $event    )" translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT">\n                          AgentAdd OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(openchannelAccount, $event    )" translate="OPENCHANNEL.DELETE_OPENCHANNELACCOUNT">\n                          Delete OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelAccounts.count}}" md-on-paginate="vm.getOpenchannelAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / OPENCHANNELACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD OPENCHANNELACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-openchannelAccount-button" ng-click="vm.createOrEditOpenchannelAccount($event)" aria-label="add openchannelAccount" translate translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD OPENCHANNELACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",'<md-dialog class="openchannelQueue-dialog" aria-label="New OpenchannelQueue">\n  <form name="openchannelQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.openchannelQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newOpenchannelQueue">\n\n        <div class="hint"><span translate="OPENCHANNEL.HELP.NAME"></span></div>\n        <div ng-messages="openchannelQueueForm[\'name\'].$error" ng-show="openchannelQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="OPENCHANNEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.openchannelQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="openchannelQueueForm[\'strategy\'].$error" ng-show="openchannelQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.openchannelQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="openchannelQueueForm[\'timeout\'].$error" ng-show="openchannelQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelQueue.description">\n\n        <div ng-messages="openchannelQueueForm[\'description\'].$error" ng-show="openchannelQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelQueue" ng-click="vm.saveOpenchannelQueue()" class="send-button md-accent md-raised" ng-disabled="openchannelQueueForm.$invalid || openchannelQueueForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelQueue" ng-click="vm.addNewOpenchannelQueue()" class="send-button md-accent md-raised" ng-disabled="openchannelQueueForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELQUEUE" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELQUEUE">\n          ADD OPENCHANNELQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelQueue" ng-click="vm.deleteOpenchannelQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",'<md-dialog class="openchannelQueue-dialog" aria-label="openchannelQueue" ng-init="vm.onInit()">\n  <form name="openchannelQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE">Add Agent to openchannelQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",'<md-dialog class="openchannelQueue-dialog" aria-label="openchannelQueue" ng-init="vm.onInit()">\n  <form name="openchannelQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelQueues/edit/view.html",'<div id="openchannel-openchannelQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-openchannelQueues-button md-icon-button" aria-label="Go to openchannelQueues" ng-click="vm.gotoOpenchannelQueues()" translate translate-attr-aria-label="OPENCHANNEL.GO_TO_OPENCHANNELQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="openchannelQueue-image" hide-xs>\n          <img ng-src="assets/images/business/openchannelQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.openchannelQueue.id}}\n            <span ng-if="vm.openchannelQueue.name">{{vm.openchannelQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="OPENCHANNEL.CREATED_AT"></span> <span>{{vm.openchannelQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.openchannelQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="OPENCHANNEL.TEAMADD_OPENCHANNELQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.openchannelQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOpenchannelQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.openchannelQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.openchannelQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.openchannelQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.openchannelQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/openchannel/views/openchannelQueues/openchannelQueues.html",'<div id="openchannelQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-google-earth" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="OPENCHANNEL.OPENCHANNELQUEUES">OpenchannelQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="OPENCHANNEL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedOpenchannelQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedOpenchannelQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="OPENCHANNEL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-openchannelQueues-count">\n          <span>{{vm.selectedOpenchannelQueues.length}}</span>\n          <span translate="OPENCHANNEL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="OPENCHANNEL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllOpenchannelQueues()" translate="OPENCHANNEL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectOpenchannelQueues()" translate="OPENCHANNEL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOpenchannelQueues" csv-label="true" filename="openchannelQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOpenchannelQueues($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- OPENCHANNELQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOpenchannelQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'OPENCHANNEL.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.openchannelQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="openchannelQueue" md-select-id="id" ng-repeat="openchannelQueue in vm.openchannelQueues.rows">\n                <td md-cell ng-if="openchannelQueue.userpic"><img class="avatar" alt="{{openchannelQueue.name}}" ng-src="api/users/{{openchannelQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!openchannelQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{openchannelQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelQueue, ev) : vm.createOrEditOpenchannelQueue($event, openchannelQueue)" md-cell class="id ">{{openchannelQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelQueue, ev) : vm.createOrEditOpenchannelQueue($event, openchannelQueue)" md-cell class="name ">{{openchannelQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelQueue, ev) : vm.createOrEditOpenchannelQueue($event, openchannelQueue)" md-cell class="strategy ">{{ vm.arraystrategy[openchannelQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(openchannelQueue, $event    )" translate="OPENCHANNEL.EDIT_OPENCHANNELQUEUE">\n                          Edit OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(openchannelQueue, $event    )" translate="OPENCHANNEL.TEAMADD_OPENCHANNELQUEUE">\n                          teamadd OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(openchannelQueue, $event    )" translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE">\n                          agentadd OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(openchannelQueue, $event    )" translate="OPENCHANNEL.DELETE_OPENCHANNELQUEUE">\n                          Delete OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(openchannelQueue, $event    )" translate="OPENCHANNEL.GOTOREALTIME_OPENCHANNELQUEUE">\n                          goToRealtime OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelQueues.count}}" md-on-paginate="vm.getOpenchannelQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / OPENCHANNELQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD OPENCHANNELQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-openchannelQueue-button" ng-click="vm.createOrEditOpenchannelQueue($event)" aria-label="add openchannelQueue" translate translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD OPENCHANNELQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="OPENCHANNEL.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="OPENCHANNEL.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="OPENCHANNEL.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/openchannel/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/plugins/views/plugin/plugin.html",'<div ng-if="!vm.plugin">\n  <p>Plugin not available...</p>\n</div>\n<div id="plugin" ng-if="vm.plugin" ng-cloak layout-fill>\n  <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n</div>'),e.put("app/main/apps/realtime/views/agents/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getAgents()" query="vm.query" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.getAgents()">\n      <md-option ng-value="\'\'">{{ \'VOICE.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'VOICE.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'VOICE.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'VOICE.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'VOICE.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.query.globalStatusFilter === \'pause\' || vm.query.globalStatusFilter === \'*pause\'" ng-model="vm.query.pauseTypeFilter" class="md-caption ml-16" ng-change="vm.getAgents()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAgents">\n      <tr md-row>\n        <th class="bv text-center" colspan="5">{{ \'VOICE.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'VOICE.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'VOICE.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'VOICE.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.agents.count > 0">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'VOICE.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="agent" md-select-id="id" ng-repeat="agent in vm.agents.rows">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{agent.userpic && \'api/users/\'+ agent.id +\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{agent.fullname}}</span>\n              <span>{{agent.internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (agent.phoneBarEnableScreenRecordingByAgent || agent.phoneBarEnableAutomaticScreenRecording)">\n            <div class="column">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" ng-class="agent.screenrecording ? \'green-fg\' : \'grey-fg\'" aria-hidden="true">\n                  <md-tooltip>\n                    {{ agent.screenrecording ? \'VOICE.TOOLTIP_SCREENRECORDING_ON\' : \'VOICE.TOOLTIP_SCREENRECORDING_OFF\'\n                    | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt text-center">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[agent.globalStatus]\">\n            {{ agent.globalStatus === 'pause' || agent.globalStatus === '*pause' ? \n              ((agent.globalStatusDisplayValue === 'DEFAULT PAUSE' ? ('VOICE.DEFAULT_PAUSE' | translate) : agent.globalStatusDisplayValue) | uppercase) : \n              ('VOICE.' + (agent.globalStatusDisplayValue | uppercase) | translate | uppercase)\n            }}\n          </span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"agent.lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"agent.globalStatus === 'pause' || agent.globalStatus === '*pause'\" start-time=\"agent.lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl text-center\">\n          <span ng-if=\"!agent.onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[agent.voiceStatus]\">\n            {{ 'VOICE.' + (agent.voiceStatus | uppercase) | translate | uppercase }}</span>\n          <span ng-if=\"agent.onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">\n            {{ 'VOICE.ONHOLD' | translate | uppercase }}</span>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\" ng-if=\"agent.voiceStatus === 'talking' || agent.voiceStatus === 'ringing'\">\n            <span ng-if=\"agent.queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.voiceStatus]\">{{\n              agent.queue }}</span>\n            <span ng-if=\"agent.destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.voiceStatus]\" privacy ng-cloak>{{\n              agent.destconnectedlinenum }}</span>\n            <span ng-if=\"agent.routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.voiceStatus]\">{{\n              agent.routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"agent.queue || agent.destconnectedlinenum\">\n              <timer start-time=\"agent.voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl text-center\" ng-if=\"vm.license.chat\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.chatStatus]\">\n            {{ 'VOICE.' + (agent.chatStatus | uppercase) | translate | uppercase }}</span>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.chatStatus]\">\n          {{ agent.chatCurrentCapacity }}</td>\n        <td class=\"bl bt text-center\" ng-if=\"vm.license.mail\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.mailStatus]\">\n            {{ 'VOICE.' + (agent.mailStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.mailStatus]\">\n          {{ agent.mailCurrentCapacity }}</td>\n        <td class=\"bl bt text-center\" ng-if=\"vm.license.messaging\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.smsStatus]\">\n            {{ 'VOICE.' + (agent.smsStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.smsStatus]\">\n          {{ agent.smsCurrentCapacity }}</td>\n        <td class=\"bt bl text-center\" ng-if=\"vm.license.openchannel\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.openchannelStatus]\">\n            {{ 'VOICE.' + (agent.openchannelStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.openchannelStatus]\">\n          {{ agent.openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl text-center\" ng-if=\"vm.license.fax\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.faxStatus]\">\n            {{ 'VOICE.' + (agent.faxStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.faxStatus]\">\n          {{ agent.faxCurrentCapacity }}</td>\n        <td class=\"bl bt text-center\" ng-if=\"vm.license.whatsapp\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.whatsappStatus]\">\n            {{ 'VOICE.' + (agent.whatsappStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.whatsappStatus]\">\n          {{ agent.whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(agent, $event)\" translate=\"VOICE.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.addQueue(agent, $event)\" translate=\"{{ vm.channel.toUpperCase() + '.AGENTADD_QUEUE' }}\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && agent.phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"VOICE.SCREENRECORDING\">Manage Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-click=\"vm.manageScreenRecording(agent, !agent.screenrecording)\" translate=\"{{ agent.screenrecording ? 'VOICE.STOP_SCREENRECORDING' : 'VOICE.START_SCREENRECORDING' }}\">\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"VOICE.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\"agent.voicePause && 'DEFAULT PAUSE' === agent.pauseType\" ng-click=\"vm.pause(agent)\">\n                        <em translate=\"VOICE.DEFAULT_PAUSE\">Default Pause</em>\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"agent.voicePause && pause.name === agent.pauseType\" ng-click=\"vm.pause(agent, pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"agent.globalStatus === 'pause' || agent.globalStatus === '*pause'\">\n                <md-button ng-click=\"vm.unpause(agent)\" translate=\"VOICE.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label=\"{page: '{{'VOICE.PAGE' | translate}}:', rowsPerPage: '{{'VOICE.ROWSPERPAGE' | translate}}:', of: '{{'VOICE.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.agents.count}}\" md-on-paginate=\"vm.getAgents\" md-page-select></md-table-pagination>"),e.put("app/main/apps/settings/views/cloudProviders/cloudProviders.html",'<div id="cloudProviders" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.AITOOLS">AiTools</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SETTINGS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedAiTools.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedAiTools =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SETTINGS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-cloudProviders-count">\n          <span>{{vm.selectedAiTools.length}}</span>\n          <span translate="SETTINGS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SETTINGS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllAiTools()" translate="SETTINGS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectAiTools()" translate="SETTINGS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedAiTools" csv-label="true" filename="cloudProviders.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-click="vm.deleteSelectedAiTools($event)" aria-label="delete selected" translate translate-attr-label="SETTINGS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CLOUDPROVIDER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedAiTools" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAiTools">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SETTINGS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SETTINGS.NAME\' | translate }}</th>\n                <th md-column md-order-by="service">{{ \'SETTINGS.SERVICE\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.cloudProviders.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SETTINGS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="cloudProvider" md-select-id="id" ng-repeat="cloudProvider in vm.cloudProviders.rows">\n                <td md-cell ng-if="cloudProvider.userpic"><img class="avatar" alt="{{cloudProvider.name}}" ng-src="api/users/{{cloudProvider.id}}/avatar" /></td>\n                <td md-cell ng-if="!cloudProvider.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{cloudProvider.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="id ">{{cloudProvider.id}}</td>\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="name ">{{cloudProvider.name}}</td>\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="service ">{{ vm.arrayservice[cloudProvider.service].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SETTINGS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.editdialog(cloudProvider, $event    )" translate="SETTINGS.EDIT_CLOUDPROVIDER">\n                          Edit CloudProvider\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(cloudProvider, $event    )" translate="SETTINGS.DELETE_CLOUDPROVIDER">\n                          Delete CloudProvider\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SETTINGS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SETTINGS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SETTINGS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.cloudProviders.count}}" md-on-paginate="vm.getAiTools" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CLOUDPROVIDER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CLOUDPROVIDER BUTTON --\x3e\n  <md-button class="md-fab md-accent" id="add-cloudProvider-button" ng-click="vm.createOrEditCloudProvider($event)" aria-label="add cloudProvider" translate translate-attr-aria-label="SETTINGS.ADD_CLOUDPROVIDER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CLOUDPROVIDER BUTTON --\x3e\n</div>'),e.put("app/main/apps/settings/views/cloudProviders/create/dialog.html",'<md-dialog class="cloudProvider-dialog" aria-label="New CloudProvider">\n  <form name="cloudProviderForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.cloudProvider.name" ng-required="true" autofocus>\n\n        <div ng-messages="cloudProviderForm[\'name\'].$error" ng-show="cloudProviderForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.SERVICE">Service</label>\n        <md-select name="service" ng-model="vm.cloudProvider.service" required ng-disabled="!vm.newCloudProvider">\n          <md-option ng-value="\'AmazonAWS\'">AmazonAWS</md-option>\n        </md-select>\n        <div ng-messages="cloudProviderForm[\'service\'].$error" ng-show="cloudProviderForm[\'service\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.cloudProvider.service == \'AmazonAWS\'" class="md-block">\n        <label translate="SETTINGS.ACCESSKEY">AccessKey</label>\n        <input type="text" name="data2" ng-model="vm.cloudProvider.data2" ng-required="true">\n\n        <div ng-messages="cloudProviderForm[\'data2\'].$error" ng-show="cloudProviderForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ACCESSKEY_REQUIRED">AccessKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.cloudProvider.service == \'AmazonAWS\'" class="md-block">\n        <label translate="SETTINGS.SECRETACCESSKEY">SecretAccesskey</label>\n        <input type="text" name="data1" ng-model="vm.cloudProvider.data1" ng-required="true">\n\n        <div ng-messages="cloudProviderForm[\'data1\'].$error" ng-show="cloudProviderForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SECRETACCESSKEY_REQUIRED">SecretAccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newCloudProvider" ng-click="vm.saveCloudProvider()" class="send-button md-accent md-raised" ng-disabled="cloudProviderForm.$invalid || cloudProviderForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newCloudProvider" ng-click="vm.addNewCloudProvider()" class="send-button md-accent md-raised" ng-disabled="cloudProviderForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_CLOUDPROVIDER" translate-attr-aria-label="SETTINGS.ADD_CLOUDPROVIDER">\n          ADD CLOUDPROVIDER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.deleteCloudProvider($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/customizations/create/dialog.html",'<md-dialog class="customization-dialog" aria-label="New Customization">\n  <form name="customizationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultLogo" aria-label="Default_Logo"><span translate="SETTINGS.DEFAULT_LOGO">Default_Logo</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultLoginLogo" aria-label="Default_Login_Logo"><span translate="SETTINGS.DEFAULT_LOGIN_LOGO">Default_Login_Logo</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultFavicon" aria-label="Default_Favicon"><span translate="SETTINGS.DEFAULT_FAVICON">Default_Favicon</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultHeaderWhiteLabel" aria-label="Default_Header_WhiteLabel"><span translate="SETTINGS.DEFAULT_HEADER_WHITELABEL">Default_Header_WhiteLabel</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.customization.defaultHeaderWhiteLabel" class="md-block">\n        <label translate="SETTINGS.HEADER_WHITELABEL">Header_WhiteLabel</label>\n        <input type="text" name="headerWhiteLabel" ng-model="vm.customization.headerWhiteLabel" ng-required="true">\n\n        <div ng-messages="customizationForm[\'headerWhiteLabel\'].$error" ng-show="customizationForm[\'headerWhiteLabel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.HEADER_WHITELABEL_REQUIRED">Header_WhiteLabel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultPageTitle" aria-label="Default_Page_Title"><span translate="SETTINGS.DEFAULT_PAGE_TITLE">Default_Page_Title</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.customization.defaultPageTitle" class="md-block">\n        <label translate="SETTINGS.PAGE_TITLE">Page_Title</label>\n        <input type="text" name="pageTitle" ng-model="vm.customization.pageTitle" ng-required="true">\n\n        <div ng-messages="customizationForm[\'pageTitle\'].$error" ng-show="customizationForm[\'pageTitle\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PAGE_TITLE_REQUIRED">Page_Title field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.license.preferred" class="md-block">\n        <md-switch ng-model="vm.customization.defaultPreferred" aria-label="Default_Preferred"><span translate="SETTINGS.DEFAULT_PREFERRED">Default_Preferred</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomization" ng-click="vm.saveCustomization()" class="send-button md-accent md-raised" ng-disabled="customizationForm.$invalid || customizationForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomization" ng-click="vm.addNewCustomization()" class="send-button md-accent md-raised" ng-disabled="customizationForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_CUSTOMIZATION" translate-attr-aria-label="SETTINGS.ADD_CUSTOMIZATION">\n          ADD CUSTOMIZATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomization" ng-click="vm.deleteCustomization($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/customizations/customizations.html",'<div id="customizations" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.CUSTOMIZATIONS">Customizations</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveCustomization()" ng-disabled="(customizationsForm.$pristine && logoForm.$pristine && logologinForm.$pristine && preferredForm.$pristine && faviconForm.$pristine) || (customizationsForm.$invalid || logoForm.$invalid || logologinForm.$invalid || preferredForm.$invalid || faviconForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      <div class="customization-detail-form-container customizations md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.CUSTOMIZATIONS">CUSTOMIZATIONS</div>\n        </div>\n        <form name="customizationsForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultLogo" aria-label="Default_Logo"><span translate="SETTINGS.DEFAULT_LOGO">Default_Logo</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultLoginLogo" aria-label="Default_Login_Logo"><span translate="SETTINGS.DEFAULT_LOGIN_LOGO">Default_Login_Logo</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultFavicon" aria-label="Default_Favicon"><span translate="SETTINGS.DEFAULT_FAVICON">Default_Favicon</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultHeaderWhiteLabel" aria-label="Default_Header_WhiteLabel"><span translate="SETTINGS.DEFAULT_HEADER_WHITELABEL">Default_Header_WhiteLabel</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="!vm.customization.defaultHeaderWhiteLabel" class="md-block">\n            <label translate="SETTINGS.HEADER_WHITELABEL">Header_WhiteLabel</label>\n            <input type="text" name="headerWhiteLabel" ng-model="vm.customization.headerWhiteLabel" ng-required="true">\n\n            <div ng-messages="customizationsForm[\'headerWhiteLabel\'].$error" ng-show="customizationsForm[\'headerWhiteLabel\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.HEADER_WHITELABEL_REQUIRED">Header_WhiteLabel field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultPageTitle" aria-label="Default_Page_Title"><span translate="SETTINGS.DEFAULT_PAGE_TITLE">Default_Page_Title</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="!vm.customization.defaultPageTitle" class="md-block">\n            <label translate="SETTINGS.PAGE_TITLE">Page_Title</label>\n            <input type="text" name="pageTitle" ng-model="vm.customization.pageTitle" ng-required="true">\n\n            <div ng-messages="customizationsForm[\'pageTitle\'].$error" ng-show="customizationsForm[\'pageTitle\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PAGE_TITLE_REQUIRED">Page_Title field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.license.preferred" class="md-block">\n            <md-switch ng-model="vm.customization.defaultPreferred" aria-label="Default_Preferred"><span translate="SETTINGS.DEFAULT_PREFERRED">Default_Preferred</span></md-switch>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="!vm.customization.defaultLogo" class="customization-detail-form-container logo md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.LOGO">LOGO</div>\n        </div>\n        <div ng-controller="CustomizationlogoController as vm_cl" ng-init="vm_cl.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cl.ngFlowOptions" flow-name="vm_cl.ngFlow.flow" flow-files-submitted="vm_cl.upload()" flow-file-added="vm_cl.fileAdded($file)" flow-file-success="vm_cl.fileSuccess($file, $message)" flow-complete="vm_cl.uploadComplete()" flow-drop flow-drag-enter="vm_cl.dropping=true" flow-drag-leave="vm_cl.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="logoimage in vm_cl.customization.images" ng-switch="logoimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{logoimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="logoimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{logoimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultLoginLogo" class="customization-detail-form-container logologin md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.LOGOLOGIN">LOGOLOGIN</div>\n        </div>\n        <div ng-controller="CustomizationlogologinController as vm_cll" ng-init="vm_cll.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cll.ngFlowOptions" flow-name="vm_cll.ngFlow.flow" flow-files-submitted="vm_cll.upload()" flow-file-added="vm_cll.fileAdded($file)" flow-file-success="vm_cll.fileSuccess($file, $message)" flow-complete="vm_cll.uploadComplete()" flow-drop flow-drag-enter="vm_cll.dropping=true" flow-drag-leave="vm_cll.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="logologinimage in vm_cll.customization.images" ng-switch="logologinimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{logologinimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="logologinimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{logologinimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultPreferred && vm.license.preferred" class="customization-detail-form-container preferred md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.PREFERRED">PREFERRED</div>\n        </div>\n        <div ng-controller="CustomizationpreferredController as vm_cp" ng-init="vm_cp.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cp.ngFlowOptions" flow-name="vm_cp.ngFlow.flow" flow-files-submitted="vm_cp.upload()" flow-file-added="vm_cp.fileAdded($file)" flow-file-success="vm_cp.fileSuccess($file, $message)" flow-complete="vm_cp.uploadComplete()" flow-drop flow-drag-enter="vm_cp.dropping=true" flow-drag-leave="vm_cp.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="preferredimage in vm_cp.customization.images" ng-switch="preferredimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{preferredimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="preferredimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{preferredimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultFavicon" class="customization-detail-form-container favicon md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.FAVICON">FAVICON</div>\n        </div>\n        <div ng-controller="CustomizationfaviconController as vm_cf" ng-init="vm_cf.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cf.ngFlowOptions" flow-name="vm_cf.ngFlow.flow" flow-files-submitted="vm_cf.upload()" flow-file-added="vm_cf.fileAdded($file)" flow-file-success="vm_cf.fileSuccess($file, $message)" flow-complete="vm_cf.uploadComplete()" flow-drop flow-drag-enter="vm_cf.dropping=true" flow-drag-leave="vm_cf.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG, ICO - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="faviconimage in vm_cf.customization.images" ng-switch="faviconimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{faviconimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="faviconimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{faviconimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/settings/views/generals/create/dialog.html",'<md-dialog class="general-dialog" aria-label="New General">\n  <form name="generalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newGeneral" ng-click="vm.saveGeneral()" class="send-button md-accent md-raised" ng-disabled="generalForm.$invalid || generalForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newGeneral" ng-click="vm.addNewGeneral()" class="send-button md-accent md-raised" ng-disabled="generalForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_GENERAL" translate-attr-aria-label="SETTINGS.ADD_GENERAL">\n          ADD GENERAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newGeneral" ng-click="vm.deleteGeneral($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/generals/generals.html",'<div id="generals" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.GENERAL">General</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveGeneral()" ng-disabled="(globalForm.$pristine && motionbarForm.$pristine && reportForm.$pristine && agentOmniDesktopInterfaceForm.$pristine && screenRecordingForm.$pristine && securityForm.$pristine && imapGeneralSettingsForm.$pristine && SSOForm.$pristine && aiToolsForm.$pristine) || (globalForm.$invalid || motionbarForm.$invalid || reportForm.$invalid || agentOmniDesktopInterfaceForm.$invalid || screenRecordingForm.$invalid || securityForm.$invalid || imapGeneralSettingsForm.$invalid || SSOForm.$invalid || aiToolsForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      <div class="general-detail-form-container global md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.GLOBAL">GLOBAL</div>\n        </div>\n        <form name="globalForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MIN_INTERNAL">Min_Internal</label>\n            <input type="number" name="min_internal" ng-model="vm.general.min_internal" min="0" value="1000" ng-required="true" autofocus>\n\n            <div ng-messages="globalForm[\'min_internal\'].$error" ng-show="globalForm[\'min_internal\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MIN_INTERNAL_REQUIRED">Min_Internal field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.MIN_INTERNAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Min_Internal must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.CHATTIMEOUT">chatTimeout</label>\n            <input type="number" name="chatTimeout" ng-model="vm.general.chatTimeout" min="0" value="30" ng-required="true">\n\n            <div ng-messages="globalForm[\'chatTimeout\'].$error" ng-show="globalForm[\'chatTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.CHATTIMEOUT_REQUIRED">chatTimeout field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.CHATTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">chatTimeout must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.rtlSupport" aria-label="RtlSupport"><span translate="SETTINGS.RTLSUPPORT">RtlSupport</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.RTLSUPPORT"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.stopRecordingOnTransfer" aria-label="Stop_Recording_On_Voice_Call_Transfer"><span translate="SETTINGS.STOP_RECORDING_ON_VOICE_CALL_TRANSFER">Stop_Recording_On_Voice_Call_Transfer</span></md-switch>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container motionbar md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.MOTIONBAR">MOTIONBAR</div>\n        </div>\n        <form name="motionbarForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.phoneBarAutoUpdater" aria-label="MotionbarAutoUpdater"><span translate="SETTINGS.MOTIONBARAUTOUPDATER">MotionbarAutoUpdater</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.phoneBarAutoUpdater" class="md-block">\n            <label translate="SETTINGS.MOTIONBARAUTOUPDATERURL">MotionbarAutoUpdaterUrl</label>\n            <input type="url" name="phoneBarAutoUpdaterUrl" ng-model="vm.general.phoneBarAutoUpdaterUrl" value="https://www.xcally.com/bar/phonebar/autoupdater.xml" ng-required="vm.general.phoneBarAutoUpdater">\n\n            <div ng-messages="motionbarForm[\'phoneBarAutoUpdaterUrl\'].$error" ng-show="motionbarForm[\'phoneBarAutoUpdaterUrl\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MOTIONBARAUTOUPDATERURL_REQUIRED">MotionbarAutoUpdaterUrl field is required</span>\n              </div>\n              <div ng-message="url">\n                <span translate="SETTINGS.ERRORS.MOTIONBARAUTOUPDATERURL_MUST_VALID_URL">MotionbarAutoUpdaterUrl must be a valid url http://www.xcally.com</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.phoneBarRememberMeEnabled" aria-label="MotionbarRememberMe"><span translate="SETTINGS.MOTIONBARREMEMBERME">MotionbarRememberMe</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.MOTIONBARREMEMBERME"></span></div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container report md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.REPORT">REPORT</div>\n        </div>\n        <form name="reportForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.split" aria-label="Split"><span translate="SETTINGS.SPLIT">Split</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZECSV">SplitSizeCsv</label>\n            <input type="number" name="splitSizeCsv" ng-model="vm.general.splitSizeCsv" value="5000">\n\n            <div ng-messages="reportForm[\'splitSizeCsv\'].$error" ng-show="reportForm[\'splitSizeCsv\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZECSV_REQUIRED">SplitSizeCsv field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZEPDF">SplitSizePdf</label>\n            <input type="number" name="splitSizePdf" ng-model="vm.general.splitSizePdf" value="1000">\n\n            <div ng-messages="reportForm[\'splitSizePdf\'].$error" ng-show="reportForm[\'splitSizePdf\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZEPDF_REQUIRED">SplitSizePdf field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZEXLSX">SplitSizeXlsx</label>\n            <input type="number" name="splitSizeXlsx" ng-model="vm.general.splitSizeXlsx" value="5000">\n\n            <div ng-messages="reportForm[\'splitSizeXlsx\'].$error" ng-show="reportForm[\'splitSizeXlsx\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZEXLSX_REQUIRED">SplitSizeXlsx field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container agentomnidesktopinterface md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.AGENTOMNIDESKTOPINTERFACE">AGENTOMNIDESKTOPINTERFACE</div>\n        </div>\n        <form name="agentOmniDesktopInterfaceForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.enableEmailPreview" aria-label="EnableEmailPreview"><span translate="SETTINGS.ENABLEEMAILPREVIEW">EnableEmailPreview</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.searchOnEnterKey" aria-label="Search_On_Enter_Key"><span translate="SETTINGS.SEARCH_ON_ENTER_KEY">Search_On_Enter_Key</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SEARCH_ON_ENTER_KEY"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MESSAGESALIGNMENT">messagesAlignment</label>\n            <md-select name="messagesAlignment" ng-model="vm.general.messagesAlignment">\n              <md-option ng-value="\'alternate\'">Alternate</md-option>\n              <md-option ng-value="\'left\'">Left</md-option>\n              <md-option ng-value="\'right\'">Right</md-option>\n            </md-select>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'messagesAlignment\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'messagesAlignment\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MESSAGESALIGNMENT_REQUIRED">messagesAlignment field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.CHAT_INTERACTIONS_RELOAD_TIMEOUT">Chat_Interactions_Reload_Timeout</label>\n            <input type="number" name="chatInteractionsReloadTimeout" ng-model="vm.general.chatInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'chatInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'chatInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.CHAT_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Chat_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MAIL_INTERACTIONS_RELOAD_TIMEOUT">Mail_Interactions_Reload_Timeout</label>\n            <input type="number" name="mailInteractionsReloadTimeout" ng-model="vm.general.mailInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'mailInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'mailInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MAIL_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Mail_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT">Openchannel_Interactions_Reload_Timeout</label>\n            <input type="number" name="openchannelInteractionsReloadTimeout" ng-model="vm.general.openchannelInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'openchannelInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'openchannelInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Openchannel_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.SMS_INTERACTIONS_RELOAD_TIMEOUT">Sms_Interactions_Reload_Timeout</label>\n            <input type="number" name="smsInteractionsReloadTimeout" ng-model="vm.general.smsInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'smsInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'smsInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMS_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Sms_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT">Whatsapp_Interactions_Reload_Timeout</label>\n            <input type="number" name="whatsappInteractionsReloadTimeout" ng-model="vm.general.whatsappInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'whatsappInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'whatsappInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Whatsapp_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="vm.license.screenrecording" class="general-detail-form-container screenrecording md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SCREENRECORDING">SCREENRECORDING</div>\n        </div>\n        <form name="screenRecordingForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.DEFAULTSCREENRECORDINGPATH">defaultScreenRecordingPath</label>\n            <input type="text" name="defaultScreenRecordingPath" ng-model="vm.general.defaultScreenRecordingPath" autofocus>\n\n            <div class="hint"><span translate="SETTINGS.HELP.DEFAULTSCREENRECORDINGPATH"></span></div>\n            <div ng-messages="screenRecordingForm[\'defaultScreenRecordingPath\'].$error" ng-show="screenRecordingForm[\'defaultScreenRecordingPath\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.DEFAULTSCREENRECORDINGPATH_REQUIRED">defaultScreenRecordingPath field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container security md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SECURITY">SECURITY</div>\n        </div>\n        <form name="securityForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.securePassword" aria-label="Security_Suite"><span translate="SETTINGS.SECURITY_SUITE">Security_Suite</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SECURITY_SUITE"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.callRecordingEncryption" aria-label="Call_Recording_Encryption"><span translate="SETTINGS.CALL_RECORDING_ENCRYPTION">Call_Recording_Encryption</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.ALLOWEDLOGINATTEMPTS">allowedLoginAttempts</label>\n            <input type="number" name="allowedLoginAttempts" ng-model="vm.general.allowedLoginAttempts" value="5" ng-required="true">\n\n            <div ng-messages="securityForm[\'allowedLoginAttempts\'].$error" ng-show="securityForm[\'allowedLoginAttempts\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.ALLOWEDLOGINATTEMPTS_REQUIRED">allowedLoginAttempts field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.BLOCKDURATION">blockDuration</label>\n            <input type="number" name="blockDuration" ng-model="vm.general.blockDuration" value="10" ng-required="true">\n\n            <div ng-messages="securityForm[\'blockDuration\'].$error" ng-show="securityForm[\'blockDuration\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.BLOCKDURATION_REQUIRED">blockDuration field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.enforcePasswordHistory" aria-label="Enforce_Password_History"><span translate="SETTINGS.ENFORCE_PASSWORD_HISTORY">Enforce_Password_History</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.ENFORCE_PASSWORD_HISTORY"></span></div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enforcePasswordHistory" class="md-block">\n            <label translate="SETTINGS.PASSWORD_HISTORY_LIMIT">Password_History_Limit</label>\n            <input type="number" name="passwordHistoryLimit" ng-model="vm.general.passwordHistoryLimit" min="2" max="5" value="3">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PASSWORD_HISTORY_LIMIT"></span></div>\n            <div ng-messages="securityForm[\'passwordHistoryLimit\'].$error" ng-show="securityForm[\'passwordHistoryLimit\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_REQUIRED">Password_History_Limit field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Password_History_Limit must be a valid greater or equal than</span> <span>2</span>\n              </div>\n              <div ng-message="max">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Password_History_Limit must be a valid greater or equal than</span> <span>5</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'email\')" ng-model="vm.general.enablePrivacyPolicyEmail" aria-label="Privacy_Policy_Email"><span translate="SETTINGS.PRIVACY_POLICY_EMAIL">Privacy_Policy_Email</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyEmail" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyEmail" ng-model="vm.general.privacyPolicyEmail" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyEmail\'].$error" ng-show="securityForm[\'privacyPolicyEmail\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_EMAIL_REQUIRED">Privacy_Policy_Email field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_EMAIL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Email must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'name\')" ng-model="vm.general.enablePrivacyPolicyName" aria-label="Privacy_Policy_Name"><span translate="SETTINGS.PRIVACY_POLICY_NAME">Privacy_Policy_Name</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyName" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyName" ng-model="vm.general.privacyPolicyName" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyName\'].$error" ng-show="securityForm[\'privacyPolicyName\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NAME_REQUIRED">Privacy_Policy_Name field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NAME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Name must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'number\')" ng-model="vm.general.enablePrivacyPolicyNumber" aria-label="Privacy_Policy_Number"><span translate="SETTINGS.PRIVACY_POLICY_NUMBER">Privacy_Policy_Number</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyNumber" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyNumber" ng-model="vm.general.privacyPolicyNumber" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyNumber\'].$error" ng-show="securityForm[\'privacyPolicyNumber\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NUMBER_REQUIRED">Privacy_Policy_Number field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Number must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container imapgeneralsettings md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.IMAPGENERALSETTINGS">IMAPGENERALSETTINGS</div>\n        </div>\n        <form name="imapGeneralSettingsForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.LOGINMAILFREQUENCY">loginMailFrequency</label>\n            <input type="number" name="loginMailFrequency" ng-model="vm.general.loginMailFrequency" min="10" value="10" ng-required="true" autofocus>\n\n            <div class="hint"><span translate="SETTINGS.HELP.LOGINMAILFREQUENCY"></span></div>\n            <div ng-messages="imapGeneralSettingsForm[\'loginMailFrequency\'].$error" ng-show="imapGeneralSettingsForm[\'loginMailFrequency\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.LOGINMAILFREQUENCY_REQUIRED">loginMailFrequency field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.LOGINMAILFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">loginMailFrequency must be a valid greater or equal than</span> <span>10</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container sso md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SSO">SSO</div>\n        </div>\n        <form name="SSOForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.googleSsoEnabled" aria-label="Google_SSO_enabled"><span translate="SETTINGS.GOOGLE_SSO_ENABLED">Google_SSO_enabled</span></md-switch>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="vm.license.ai" class="general-detail-form-container aitools md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.AITOOLS">AITOOLS</div>\n        </div>\n        <form name="aiToolsForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.LANGUAGE">Language</label>\n            <md-select name="language" ng-model="vm.general.language" autofocus required>\n              <md-option ng-value="\'en-US\'">US English</md-option>\n              <md-option ng-value="\'en-AU\'">Australian English</md-option>\n              <md-option ng-value="\'en-GB\'">British English</md-option>\n              <md-option ng-value="\'en-AB\'">Scottish English</md-option>\n              <md-option ng-value="\'en-WL\'">Welsh English</md-option>\n              <md-option ng-value="\'en-IE\'">English (Ireland)</md-option>\n              <md-option ng-value="\'en-IN\'">Indian English</md-option>\n              <md-option ng-value="\'hi-IN\'">Hindi (India)</md-option>\n              <md-option ng-value="\'fr-CA\'">Canadian French</md-option>\n              <md-option ng-value="\'fr-FR\'">French</md-option>\n              <md-option ng-value="\'de-DE\'">German</md-option>\n              <md-option ng-value="\'de-CH\'">German (Switzerland)</md-option>\n              <md-option ng-value="\'it-IT\'">Italian</md-option>\n              <md-option ng-value="\'es-ES\'">Spanish</md-option>\n              <md-option ng-value="\'es-Us\'">US Spanish</md-option>\n              <md-option ng-value="\'pt-BR\'">Brazilian Portuguese</md-option>\n              <md-option ng-value="\'pt-PT\'">Portuguese(Portugal)</md-option>\n              <md-option ng-value="\'ar-SA\'">Modern Standard Arabic</md-option>\n              <md-option ng-value="\'ar-AE\'">Arabic</md-option>\n              <md-option ng-value="\'zh-CN\'">Chinese Mandarin - Mainland</md-option>\n              <md-option ng-value="\'ja-JP\'">Japanese (Japan)</md-option>\n              <md-option ng-value="\'ko-KR\'">Korean (Korea)</md-option>\n              <md-option ng-value="\'he-IL\'">Hebrew (Israel) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ms-MY\'">Malay (Malaysia) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'fa-IR\'">Farsi (Iran) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ru-RU\'">Russian (Russia) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'te-IN\'">Telugu(India) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ta-IN\'">Tamil - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'nl-NL\'">Dutch - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'tr-TR\'">Turkish (Turkey) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'id-ID\'">Indonesian(Indonesia) - This language is not available for the Sentiment Analysis</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'language\'].$error" ng-show="aiToolsForm[\'language\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.LANGUAGE_REQUIRED">Language field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.BUCKET">Bucket</label>\n            <input type="text" name="bucket" ng-model="vm.general.bucket" ng-required="true">\n\n            <div ng-messages="aiToolsForm[\'bucket\'].$error" ng-show="aiToolsForm[\'bucket\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.BUCKET_REQUIRED">Bucket field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.transcribe" aria-label="Transcribe"><span translate="SETTINGS.TRANSCRIBE">Transcribe</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.transcribe == true" class="md-block">\n            <label translate="SETTINGS.TRANSCRIBEREGION">TranscribeRegion</label>\n            <md-select name="transcribeRegion" ng-model="vm.general.transcribeRegion" required>\n              <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n              <md-option ng-value="\'us-east-2\'">US East (Ohio)</md-option>\n              <md-option ng-value="\'us-east-2\'">US West (N. California)</md-option>\n              <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n              <md-option ng-value="\'ap-south-1\'">Asia Pacific (Mumbai)</md-option>\n              <md-option ng-value="\'ap-east-1\'">Asia Pacific (Hong Kong)</md-option>\n              <md-option ng-value="\'ap-northeast-2\'">Asia Pacific (Seoul)</md-option>\n              <md-option ng-value="\'ap-southeast-1\'">Asia Pacific (Singapore)</md-option>\n              <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n              <md-option ng-value="\'ap-northeast-1\'">Asia Pacific (Tokyo)</md-option>\n              <md-option ng-value="\'ca-central-1\'">Canada (Central)</md-option>\n              <md-option ng-value="\'eu-central-1\'">Europe (Frankfurt)</md-option>\n              <md-option ng-value="\'eu-west-1\'">Europe (Ireland)</md-option>\n              <md-option ng-value="\'eu-west-2\'">Europe (London)</md-option>\n              <md-option ng-value="\'eu-west-3\'">Europe (Paris)</md-option>\n              <md-option ng-value="\'me-south-1\'">Middle East (Bahrain)</md-option>\n              <md-option ng-value="\'sa-east-1\'">South America (São Paulo)</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'transcribeRegion\'].$error" ng-show="aiToolsForm[\'transcribeRegion\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.TRANSCRIBEREGION_REQUIRED">TranscribeRegion field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.transcribe == true" class="md-block">\n            <label translate="SETTINGS.TRANSCRIBEACCOUNT">TranscribeAccount</label>\n            <md-select name="transcribeAccountId" ng-model="vm.general.transcribeAccountId" required>\n              <md-option ng-value="transcribeAccountId.id" ng-repeat="transcribeAccountId in vm.cloudProviders" ng-disabled="transcribeAccountId.canSelect === false">{{ transcribeAccountId.name }}</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'transcribeAccountId\'].$error" ng-show="aiToolsForm[\'transcribeAccountId\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.TRANSCRIBEACCOUNT_REQUIRED">TranscribeAccount field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n'+"          <md-input-container ng-if=\"vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <md-switch ng-model=\"vm.general.sentiment\" aria-label=\"SentimentAnalysis\"><span translate=\"SETTINGS.SENTIMENTANALYSIS\">SentimentAnalysis</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if=\"vm.general.sentiment == true && vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <label translate=\"SETTINGS.SENTIMENTREGION\">SentimentRegion</label>\n            <md-select name=\"sentimentRegion\" ng-model=\"vm.general.sentimentRegion\" required>\n              <md-option ng-value=\"'us-east-1'\">US East (N. Virginia)</md-option>\n              <md-option ng-value=\"'us-east-2'\">US East (Ohio)</md-option>\n              <md-option ng-value=\"'us-west-2'\">US West (Oregon)</md-option>\n              <md-option ng-value=\"'ap-south-1'\">Asia Pacific (Mumbai)</md-option>\n              <md-option ng-value=\"'ap-northeast-2'\">Asia Pacific (Seoul)</md-option>\n              <md-option ng-value=\"'ap-southeast-1'\">Asia Pacific (Singapore)</md-option>\n              <md-option ng-value=\"'ap-southeast-2'\">Asia Pacific (Sydney)</md-option>\n              <md-option ng-value=\"'ap-northeast-1'\">Asia Pacific (Tokyo)</md-option>\n              <md-option ng-value=\"'ca-central-1'\">Canada (Central)</md-option>\n              <md-option ng-value=\"'eu-central-1'\">Europe (Frankfurt)</md-option>\n              <md-option ng-value=\"'eu-west-1'\">Europe (Ireland)</md-option>\n              <md-option ng-value=\"'eu-west-2'\">Europe (London)</md-option>\n            </md-select>\n            <div ng-messages=\"aiToolsForm['sentimentRegion'].$error\" ng-show=\"aiToolsForm['sentimentRegion'].$touched\" role=\"alert\">\n              <div ng-message=\"required\">\n                <span translate=\"SETTINGS.ERRORS.SENTIMENTREGION_REQUIRED\">SentimentRegion field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if=\"vm.general.sentiment == true && vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <label translate=\"SETTINGS.SENTIMENTACCOUNT\">SentimentAccount</label>\n            <md-select name=\"sentimentAccountId\" ng-model=\"vm.general.sentimentAccountId\" required>\n              <md-option ng-value=\"sentimentAccountId.id\" ng-repeat=\"sentimentAccountId in vm.cloudProviders\" ng-disabled=\"sentimentAccountId.canSelect === false\">{{ sentimentAccountId.name }}</md-option>\n            </md-select>\n            <div ng-messages=\"aiToolsForm['sentimentAccountId'].$error\" ng-show=\"aiToolsForm['sentimentAccountId'].$touched\" role=\"alert\">\n              <div ng-message=\"required\">\n                <span translate=\"SETTINGS.ERRORS.SENTIMENTACCOUNT_REQUIRED\">SentimentAccount field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>"),e.put("app/main/apps/settings/views/license/license.html",'<div id="license" class="page-layout simple fullwidth doc-page">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.LICENSE">LICENSE</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    \x3c!-- <div>\n                <md-button type="submit" ng-click="vm.requestLicense()" class="send-button md-raised" translate="SETTINGS.REQUEST_LICENSE" translate-attr-aria-label="SETTINGS.REQUEST_LICENSE">\n                    REQUEST LICENSE\n                </md-button>\n            </div> --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n      \x3c!-- LICENSE CARD --\x3e\n      <div layout="row" flex>\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="row" layout-align="center">\n            <div flex layout="row" layout-align="start center">\n              <div ng-if="!vm.license.custom">\n                <a href="https://www.xcally.com/plans.html" target="_blank" class="md-button md-fab green-A700-bg" aria-label="Eat cake">\n                  <md-tooltip><span translate="SETTINGS.PRICES">Prices</span></md-tooltip>\n                  <md-icon md-font-icon="icon-coin"></md-icon>\n                </a>\n              </div>\n            </div>\n            <div flex>\n              <div ng-switch="vm.license.months" class="text-center">\n                <span ng-switch-when="1" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.MONTH_TO_MONTH">MONTH TO MONTH</span></span>\n                <span ng-switch-when="12" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.ANNUALLY">ANNUALLY</span></span>\n                <span ng-switch-when="36" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.PERPETUAL">PERPETUAL</span></span>\n              </div>\n            </div>\n            <div flex layout="row" layout-align="end center">\n              <div>\n                <md-button type="submit" ng-click="vm.updateLicense()" class="md-button md-fab md-accent">\n                  <md-tooltip><span translate="SETTINGS.UPDATE_LICENSE">License</span></md-tooltip>\n                  <md-icon md-font-icon="icon-pencil"></md-icon>\n                </md-button>\n              </div>\n            </div>\n          </div>\n\n          <span ng-if="!vm.license.demo && !vm.license.gray && vm.license.months != 36" class="md-subhead md-warn-fg text-center">{{ \'SETTINGS.EXPIRATION_DATE\' | translate }}: {{vm.license.expiration | date: \'longDate\'}}</span>\n          <span class="text-center padding-bottom-10"> {{ vm.license.machineUuid !== vm.license.uuid ? \'SETTINGS.OLD_TOKEN\' : \'SETTINGS.TOKEN\' | translate }}: <span class="text-italic text-bold">{{vm.license.uuid}}</span></span>\n\n          <div layout="column">\n            <span ng-if="vm.license.grayReason == \'changed\'" class="blink md-subhead md-warn-fg text-center">{{ \'SETTINGS.NEW_TOKEN_DETECTED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.NEW_TOKEN\' | translate }}: <span class="text-italic text-bold">{{vm.license.machineUuid}}</span></span>\n            <span ng-if="vm.license.gray" class="blink md-subhead md-warn-fg text-center">{{ \'SETTINGS.EXPIRATION_GRAY_PERIOD\' | translate }}: {{vm.license.deadline | date: \'longDate\'}}</span>\n            <span ng-if="vm.license.gray" class="text-center padding-bottom-10 text-italic text-bold"> {{\'SETTINGS.EXPIRATION_REASON\' | translate }} </span>\n            <span ng-if="vm.license.grayReason == \'disabled\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_REASON_MESSAGE_DISABLED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_REASON_MESSAGE_CHANGED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_CHANGED_ADVISE\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10">{{ \'SETTINGS.SEND_EMAIL_TO\' | translate }}: <a href="mailto:license@xcally.com?subject=New%20token%20detected&body=Hi xCALLY, New Token: {{vm.license.machineUuid}}, Old token: {{vm.license.uuid}}">license@xcally.com</a>.</span>\n            <span ng-if="vm.license.grayReason == \'disabled\'" class="text-center padding-bottom-10">{{ \'SETTINGS.SEND_EMAIL_TO\' | translate }}: <a href="mailto:license@xcally.com?subject=License%20disabled&body=Hi xCALLY, My Token: {{vm.license.machineUuid}}">license@xcally.com</a>.</span>\n          </div>\n\n          <div ng-if="vm.license.demo" layout="column">\n            <span class="md-subhead md-warn-fg text-center">{{ \'SETTINGS.TRIAL_VERSION\' | translate }}</span>\n            <span class="md-subhead md-warn-fg text-center"><a href="https://www.xcally.com/en/index.html#pricing-table2-h" target="_blank">{{ \'SETTINGS.PRICES\' | translate}}</a></span>\n          </div>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.STAFF\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-account" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.users || 0 }} <span ng-class="{\'red-fg\': vm.license.users <= vm.users && vm.license.users > 0}">({{vm.license.users >= vm.users ? vm.users : vm.license.users}})</span></h3>\n                <p translate="SETTINGS.USERS">Users</p>\n              </div>\n            </md-list-item>\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-headphones" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.agents || 0 }} <span ng-class="{\'red-fg\': (vm.license.agents <= vm.agents && vm.license.agents > 0) }">({{vm.license.agents >= vm.agents ? vm.agents : vm.license.agents}})</span></h3>\n                <p translate="SETTINGS.AGENTS">Agents</p>\n              </div>\n            </md-list-item>\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-phone" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.telephones || 0 }} <span ng-class="{\'red-fg\': vm.license.telephones <= vm.telephones && vm.license.telephones > 0}">({{vm.license.telephones >= vm.telephones ? vm.telephones : vm.license.telephones}})</span></h3>\n                <p translate="SETTINGS.TELEPHONES">Telephones</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.CHANNELS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3:3">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3:6">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.MODULES\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="module in vm.modules" flex="33">\n              <md-icon md-font-icon="{{module.icon}}" class="md-avatar-icon" ng-class="vm.license[module.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{module.name | uppercase}}"></h3>\n                <p ng-class="vm.license[module.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[module.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.SESSIONS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <div ng-repeat="session in vm.sessions" flex="33">\n              <md-list-item class="md-2-line">\n                <md-icon md-font-icon="{{session.icon}}" class="md-avatar-icon" ng-class="vm.license[session.enabled] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n                <div class="md-list-item-text">\n                  <div layout="row" layout="start center">\n                    <h3 translate="SETTINGS.{{session.name | uppercase}}"></h3>\n                    <button ng-if="session.restart" ng-click="vm.gotoProcess($event)" class="md-mini" aria-label="restart">\n                      <md-tooltip>Restart</md-tooltip>\n                      <md-icon md-font-icon="icon-reload"></md-icon>\n                    </button>\n                  </div>\n                  <p ng-if="vm.license[session.name] && vm.license[session.enabled]" class="green-A700-fg">{{vm.license[session.name]}} {{ \'SETTINGS.\' + session.label | uppercase | translate }}</p>\n                  <p ng-if="!vm.license[session.name] && vm.license[session.enabled]" class="green-A700-fg">UNLIMITED {{ \'SETTINGS.\' + session.label | uppercase | translate }}</p>\n                  <p ng-if="!vm.license[session.enabled]" class="red-A700-fg">{{ \'SETTINGS.DISABLED\' | translate }}</p>\n                </div>\n              </md-list-item>\n\n            </div>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.ADDONS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="addon in vm.addons | limitTo:3" flex="33">\n              <md-icon md-font-icon="{{addon.icon}}" class="md-avatar-icon" ng-class="vm.license[addon.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{addon.name | uppercase}}"></h3>\n                <p ng-class="vm.license[addon.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[addon.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="addon in vm.addons | limitTo:3:3" flex="33">\n              <md-icon md-font-icon="{{addon.icon}}" class="md-avatar-icon" ng-class="vm.license[addon.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{addon.name | uppercase}}"></h3>\n                <p ng-class="vm.license[addon.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[addon.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.OTHERS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="other in vm.others | limitTo:3" flex="33">\n              <md-icon md-font-icon="{{other.icon}}" class="md-avatar-icon" ng-class="vm.license[other.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{other.name | uppercase}}"></h3>\n                <p ng-class="vm.license[other.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[other.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="other in vm.others | limitTo:3:3" flex="33">\n              <md-icon md-font-icon="{{other.icon}}" class="md-avatar-icon" ng-class="vm.license[other.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{other.name | uppercase}}"></h3>\n'+"                <p ng-class=\"vm.license[other.name] ? 'green-A700-fg' : 'red-A700-fg'\">{{ 'SETTINGS.' + (vm.license[other.name] ? 'ENABLED' : 'DISABLED') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n        </md-card>\n      </div>\n      \x3c!-- / LICENSE CARD --\x3e\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>"),e.put("app/main/apps/settings/views/license/request/dialog.html",'<md-dialog class="request-dialog" aria-label="Send Request">\n  <form name="requestForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="SETTINGS.REQUEST_LICENSE">Request License</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.license.name" required>\n        <div ng-messages="requestForm.name.$error" ng-show="requestForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.NAME_REQUIRED">Address field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.license.email" required>\n        <div ng-messages="requestForm.email.$error" ng-show="requestForm.email.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="SETTINGS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.PLAN">Plan</label>\n        <md-select name="plan" ng-model="vm.license.months" required>\n          <md-option ng-value="1"><span translate="SETTINGS.MONTH_TO_MONTH">MONTH TO MONTH</span></md-option>\n          <md-option ng-value="12"><span translate="SETTINGS.ANNUALLY">ANNUALLY</span></md-option>\n          <md-option ng-value="36"><span translate="SETTINGS.PERPETUAL">PERPETUAL</span></md-option>\n        </md-select>\n        <div ng-messages="requestForm.plan.$error" ng-show="requestForm.plan.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PLAN_REQUIRED">Plan field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.STAFF\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.USERS">Users</label>\n          <input type="number" name="users" ng-model="vm.license.users" required>\n          <div ng-messages="requestForm.users.$error" ng-show="requestForm.users.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.USERS_REQUIRED">Users field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.AGENTS">Agents</label>\n          <input type="number" name="agents" ng-model="vm.license.agents" required>\n          <div ng-messages="requestForm.agents.$error" ng-show="requestForm.agents.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.AGENTS_REQUIRED">Agents field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.TELEPHONES">Telephones</label>\n          <input type="number" name="telephones" ng-model="vm.license.telephones" required>\n          <div ng-messages="requestForm.telephones.$error" ng-show="requestForm.telephones.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.TELEPHONES_REQUIRED">Telephones field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.CHANNELS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[channel.name]" aria-label="{{channel.name}}" ng-repeat="channel in vm.channels | limitTo:3"><span translate="SETTINGS.{{channel.name | uppercase}}"></span></md-switch>\n        <md-switch ng-model="vm.license[channel.name]" aria-label="{{channel.name}}" ng-repeat="channel in vm.channels | limitTo:3:3"><span translate="SETTINGS.{{channel.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.MODULES\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[module.name]" aria-label="{{module.name}}" ng-repeat="module in vm.modules"><span translate="SETTINGS.{{module.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.SESSIONS\' | translate }}</md-subheader>\n      <div layout="row">\n        <md-input-container ng-repeat="session in vm.sessions" class="md-block" flex="50">\n          <label>{{ \'SETTINGS.\' + session.name | uppercase | translate }} ({{ \'SETTINGS.\' + session.label | uppercase | translate }})</label>\n          <input type="number" name="{{session.name}}" ng-model="vm.license[session.name]" required>\n          <div class="hint"><span>0={{ \'SETTINGS.UNLIMITED_CHANNELS\' | translate }}</span></div>\n          <div ng-messages="requestForm[session.name].$error" ng-show="requestForm[session.name].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.CHANNEL_REQUIRED">Mandatory field</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.ADDONS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[addon.name]" aria-label="{{module.name}}" ng-repeat="addon in vm.addons"><span translate="SETTINGS.{{addon.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.OTHERS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[other.name]" aria-label="{{other.name}}" ng-repeat="other in vm.others"><span translate="SETTINGS.{{other.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.DESCRIPTION">Description</label>\n        <textarea name="description" ng-model="vm.license.description"></textarea>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.sendRequest()" class="send-button md-accent md-raised" ng-disabled="requestForm.$invalid || requestForm.$pristine" aria-label="SEND" translate="SETTINGS.SEND" translate-attr-aria-label="SETTINGS.SEND">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/license/update/dialog.html",'<md-dialog class="update-dialog" aria-label="Update License">\n  <form name="updateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="SETTINGS.UPDATE_LICENSE">Update License</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-content layout="row">\n        <span class="md-title" translate="SETTINGS.UPDATE_LICENSE_MANUALLY">Do you want to update your license manually?</span>\n      </md-content>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.ENTER_LICENSE">Enter your license</label>\n        <textarea name="key" ng-model="vm.licenseKey" required></textarea>\n        <div ng-messages="updateForm.name.$error" ng-show="updateForm.key.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.LICENSE_REQUIRED">License key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.updateLicense()" class="send-button md-accent md-raised" ng-disabled="updateForm.$invalid || updateForm.$pristine" aria-label="UPDATE" translate="SETTINGS.UPDATE" translate-attr-aria-label="SETTINGS.UPDATE">\n          UPDATE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/networks/create/dialog.html",'<md-dialog class="network-dialog" aria-label="New Network">\n  <form name="networkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.network.type" autofocus required>\n          <md-option ng-value="\'localnet\'">LocalNET</md-option>\n          <md-option ng-value="\'externip\'">ExternIP</md-option>\n          <md-option ng-value="\'turn\'">Turn</md-option>\n          <md-option ng-value="\'stun\'">Stun</md-option>\n        </md-select>\n        <div ng-messages="networkForm[\'type\'].$error" ng-show="networkForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'localnet\'" class="md-block">\n        <label translate="SETTINGS.LOCALNETADDRESS">localNetAddress</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-pattern="/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])/(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.LOCALNETADDRESS"></span></div>\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.LOCALNETADDRESS_REQUIRED">localNetAddress field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SETTINGS.ERRORS.LOCALNETADDRESS_MUST_VALID_PATTERN" translate-values="{ regex: \'/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])/(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/\' }">localNetAddress must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'externip\'" class="md-block">\n        <label translate="SETTINGS.ADDRESS">Address</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-pattern="/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.ADDRESS"></span></div>\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ADDRESS_REQUIRED">Address field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SETTINGS.ERRORS.ADDRESS_MUST_VALID_PATTERN" translate-values="{ regex: \'/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/\' }">Address must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\' || vm.network.type == \'stun\'" class="md-block">\n        <label translate="SETTINGS.ADDRESS">Address</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-required="true">\n\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ADDRESS_REQUIRED">Address field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\'" class="md-block">\n        <label translate="SETTINGS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.network.username" ng-required="vm.network.type == \'turn\'">\n\n        <div class="hint"><span translate="SETTINGS.HELP.USERNAME"></span></div>\n        <div ng-messages="networkForm[\'username\'].$error" ng-show="networkForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\'" class="md-block">\n        <label translate="SETTINGS.PASSWORD">Password</label>\n        <input type="text" name="password" ng-model="vm.network.password" ng-required="vm.network.type == \'turn\'">\n\n        <div class="hint"><span translate="SETTINGS.HELP.PASSWORD"></span></div>\n        <div ng-messages="networkForm[\'password\'].$error" ng-show="networkForm[\'password\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newNetwork" ng-click="vm.saveNetwork()" class="send-button md-accent md-raised" ng-disabled="networkForm.$invalid || networkForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newNetwork" ng-click="vm.addNewNetwork()" class="send-button md-accent md-raised" ng-disabled="networkForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_NETWORK" translate-attr-aria-label="SETTINGS.ADD_NETWORK">\n          ADD NETWORK\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.deleteNetwork($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/networks/networks.html",'<div id="networks" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.NETWORKS">Networks</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SETTINGS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedNetworks.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedNetworks =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SETTINGS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-networks-count">\n          <span>{{vm.selectedNetworks.length}}</span>\n          <span translate="SETTINGS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SETTINGS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllNetworks()" translate="SETTINGS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectNetworks()" translate="SETTINGS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedNetworks" csv-label="true" filename="networks.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-click="vm.deleteSelectedNetworks($event)" aria-label="delete selected" translate translate-attr-label="SETTINGS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- NETWORK TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedNetworks" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getNetworks">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SETTINGS.ID\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'SETTINGS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="value">{{ \'SETTINGS.ADDRESS\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'SETTINGS.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.networks.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SETTINGS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="network" md-select-id="id" ng-repeat="network in vm.networks.rows">\n                <td md-cell ng-if="network.userpic"><img class="avatar" alt="{{network.name}}" ng-src="api/users/{{network.id}}/avatar" /></td>\n                <td md-cell ng-if="!network.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{network.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="id ">{{network.id}}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="type ">{{ vm.arraytype[network.type].option }}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="value ">{{network.value}}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="createdAt ">{{network.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SETTINGS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.editdialog(network, $event    )" translate="SETTINGS.EDIT_NETWORK">\n                          Edit Network\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(network, $event    )" translate="SETTINGS.DELETE_NETWORK">\n                          Delete Network\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SETTINGS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SETTINGS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SETTINGS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.networks.count}}" md-on-paginate="vm.getNetworks" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / NETWORK TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD NETWORK BUTTON --\x3e\n  <md-button class="md-fab md-accent" id="add-network-button" ng-click="vm.createOrEditNetwork($event)" aria-label="add network" translate translate-attr-aria-label="SETTINGS.ADD_NETWORK">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD NETWORK BUTTON --\x3e\n</div>'),e.put("app/main/apps/settings/views/smtps/create/dialog.html",'<md-dialog class="smtp-dialog" aria-label="New Smtp">\n  <form name="smtpForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.ACCOUNTNAME">AccountName</label>\n        <input type="text" name="name" ng-model="vm.smtp.name" ng-required="true" autofocus>\n\n        <div ng-messages="smtpForm[\'name\'].$error" ng-show="smtpForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ACCOUNTNAME_REQUIRED">AccountName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.EMAILADDRESS">EmailAddress</label>\n        <input type="email" name="email" ng-model="vm.smtp.email" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.EMAILADDRESS"></span></div>\n        <div ng-messages="smtpForm[\'email\'].$error" ng-show="smtpForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.EMAILADDRESS_REQUIRED">EmailAddress field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="SETTINGS.ERRORS.EMAILADDRESS_MUST_VALID">EmailAddress must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.SMTP_SERVICE">SMTP_Service</label>\n        <md-select name="Smtp.service" ng-model="vm.smtp.Smtp.service" required>\n          <md-option ng-value="null">Custom</md-option>\n          <md-option ng-value="\'gmail\'">Gmail</md-option>\n          <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n          <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n          <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n        </md-select>\n        <div ng-messages="smtpForm[\'Smtp.service\'].$error" ng-show="smtpForm[\'Smtp.service\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SMTP_SERVICE_REQUIRED">SMTP_Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <label translate="SETTINGS.SMTP_HOST">SMTP_Host</label>\n        <input type="text" name="Smtp.host" ng-model="vm.smtp.Smtp.host" ng-required="true">\n\n        <div ng-messages="smtpForm[\'Smtp.host\'].$error" ng-show="smtpForm[\'Smtp.host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <label translate="SETTINGS.SMTP_PORT">SMTP_Port</label>\n        <input type="number" name="Smtp.port" ng-model="vm.smtp.Smtp.port" value="465" ng-required="true">\n\n        <div ng-messages="smtpForm[\'Smtp.port\'].$error" ng-show="smtpForm[\'Smtp.port\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <md-switch ng-model="vm.smtp.Smtp.secure" aria-label="SMTP_Secure"><span translate="SETTINGS.SMTP_SECURE">SMTP_Secure</span></md-switch>\n        <div class="hint"><span translate="SETTINGS.HELP.SMTP_SECURE"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <md-switch ng-model="vm.smtp.Smtp.authentication" aria-label="SMTP_Authentication"><span translate="SETTINGS.SMTP_AUTHENTICATION">SMTP_Authentication</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null" class="md-block">\n        <label translate="SETTINGS.SMTP_USERNAME">SMTP_Username</label>\n        <input type="text" name="Smtp.user" ng-model="vm.smtp.Smtp.user" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.SMTP_USERNAME"></span></div>\n        <div ng-messages="smtpForm[\'Smtp.user\'].$error" ng-show="smtpForm[\'Smtp.user\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SMTP_USERNAME_REQUIRED">SMTP_Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null">\n        <label translate="SETTINGS.SMTP_PASSWORD">SMTP_Password</label>\n        <input type="password" name="Smtp.pass" ng-model="vm.smtp.Smtp.pass" placeholder="Password" translate translate-attr-placeholder="SETTINGS.PASSWORD" required>\n        <div class="hint"><span translate="SETTINGS.HELP.SMTP_PASSWORD"></span></div>\n        <div ng-messages="smtpForm[\'Smtp.pass\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SETTINGS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.DESCRIPTION">Description</label>\n        <input type="" name="description" ng-model="vm.smtp.description">\n\n        <div ng-messages="smtpForm[\'description\'].$error" ng-show="smtpForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmtp" ng-click="vm.saveSmtp()" class="send-button md-accent md-raised" ng-disabled="smtpForm.$invalid || smtpForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmtp" ng-click="vm.addNewSmtp()" class="send-button md-accent md-raised" ng-disabled="smtpForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_SMTP" translate-attr-aria-label="SETTINGS.ADD_SMTP">\n          ADD SMTP\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmtp" ng-click="vm.deleteSmtp($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/smtps/smtps.html",'<div id="smtps" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.SMTP">Smtp</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.verifySmtp()" ng-disabled="!vm.smtp.id" class="send-button md-accent md-raised" translate="SETTINGS.VERIFY" translate-attr-aria-label="SETTINGS.VERIFY">\n        VERIFY\n      </md-button>\n      <md-button type="submit" ng-click="vm.saveSmtp()" ng-disabled="(generalForm.$pristine) || (generalForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      <div class="smtp-detail-form-container general md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.GENERAL">GENERAL</div>\n        </div>\n        <form name="generalForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.ACCOUNTNAME">AccountName</label>\n            <input type="text" name="name" ng-model="vm.smtp.name" ng-required="true" autofocus>\n\n            <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.ACCOUNTNAME_REQUIRED">AccountName field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.EMAILADDRESS">EmailAddress</label>\n            <input type="email" name="email" ng-model="vm.smtp.email" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.EMAILADDRESS"></span></div>\n            <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.EMAILADDRESS_REQUIRED">EmailAddress field is required</span>\n              </div>\n              <div ng-message="email">\n                <span translate="SETTINGS.ERRORS.EMAILADDRESS_MUST_VALID">EmailAddress must be a valid e-mail address</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.SMTP_SERVICE">SMTP_Service</label>\n            <md-select name="Smtp.service" ng-model="vm.smtp.Smtp.service" required>\n              <md-option ng-value="null">Custom</md-option>\n              <md-option ng-value="\'gmail\'">Gmail</md-option>\n              <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n              <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n              <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n            </md-select>\n            <div ng-messages="generalForm[\'Smtp.service\'].$error" ng-show="generalForm[\'Smtp.service\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_SERVICE_REQUIRED">SMTP_Service field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <label translate="SETTINGS.SMTP_HOST">SMTP_Host</label>\n            <input type="text" name="Smtp.host" ng-model="vm.smtp.Smtp.host" ng-required="true">\n\n            <div ng-messages="generalForm[\'Smtp.host\'].$error" ng-show="generalForm[\'Smtp.host\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <label translate="SETTINGS.SMTP_PORT">SMTP_Port</label>\n            <input type="number" name="Smtp.port" ng-model="vm.smtp.Smtp.port" value="465" ng-required="true">\n\n            <div ng-messages="generalForm[\'Smtp.port\'].$error" ng-show="generalForm[\'Smtp.port\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <md-switch ng-model="vm.smtp.Smtp.secure" aria-label="SMTP_Secure"><span translate="SETTINGS.SMTP_SECURE">SMTP_Secure</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SMTP_SECURE"></span></div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <md-switch ng-model="vm.smtp.Smtp.authentication" aria-label="SMTP_Authentication"><span translate="SETTINGS.SMTP_AUTHENTICATION">SMTP_Authentication</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null" class="md-block">\n            <label translate="SETTINGS.SMTP_USERNAME">SMTP_Username</label>\n            <input type="text" name="Smtp.user" ng-model="vm.smtp.Smtp.user" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.SMTP_USERNAME"></span></div>\n            <div ng-messages="generalForm[\'Smtp.user\'].$error" ng-show="generalForm[\'Smtp.user\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_USERNAME_REQUIRED">SMTP_Username field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null">\n            <label translate="SETTINGS.SMTP_PASSWORD">SMTP_Password</label>\n            <input type="password" name="Smtp.pass" ng-model="vm.smtp.Smtp.pass" placeholder="Password" translate translate-attr-placeholder="SETTINGS.PASSWORD" required>\n            <div class="hint"><span translate="SETTINGS.HELP.SMTP_PASSWORD"></span></div>\n            <div ng-messages="generalForm[\'Smtp.pass\'].$error" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n              </div>\n              <div ng-message="pattern">\n                <span translate="SETTINGS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.DESCRIPTION">Description</label>\n            <input type="" name="description" ng-model="vm.smtp.description">\n\n            <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/settings/views/system/system.html",'<div id="system" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.SYSTEM">SYSTEM</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" md-border-bottom flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SETTINGS.GENERAL">GENERAL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="system-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget flex="50" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg">\n                    <div class="h3">OS</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{vm.system.system.manufacturer}} {{vm.system.system.model}}</div>\n                        <div class="h4">{{vm.system.cpu.manufacturer}} {{vm.system.cpu.brand}} - {{vm.system.cpu.speed}} GHz - {{vm.system.cpu.cores}} Cores</div>\n                        <div class="h4">{{vm.system.os.distro}} - {{vm.system.os.release}} - Kernel: {{vm.system.os.kernel}}</div>\n                        <div class="h4">Node.js: {{vm.system.node}}</div>\n                        <div class="h4">Host: {{vm.system.os.hostname}} - Uptime: {{vm.system.time.uptime / 60 | number:0}} m</div>\n                        <div class="h4">TimeZone: {{vm.system.time.timezone}} ({{vm.system.time.timezoneName}})</div>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n              <ms-widget flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-1">\n                    <div class="h3">CPU</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.AVG_LOAD">AVG Load</span>\n                          <span class="h3 secondary-text font-weight-500">{{vm.system.currentLoad.avgload * 100 | number:0}}%</span>\n                        </div>\n                        <md-progress-linear class="red" md-mode="determinate" value="{{vm.system.currentLoad.avgload * 100 | number:0}}"></md-progress-linear>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n              <ms-widget flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">MEM</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.TOTAL\' | translate}}: {{vm.system.mem.total / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.FREE\' | translate}}: {{vm.system.mem.available / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.USED\' | translate}}: {{vm.system.mem.active / 1024 / 1024 / 1024 | number:0}} GB</div>\n                      </div>\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.USED">Used</span>\n                          <span class="h3 secondary-text font-weight-500">{{(vm.system.mem.active / vm.system.mem.total) * 100 | number : 0}}%</span>\n                        </div>\n                        <md-progress-linear class="md-warn" md-mode="determinate" value="{{(vm.system.mem.active / vm.system.mem.total) * 100 | number : 0 }}"></md-progress-linear>\n\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget ng-repeat="disk in vm.system.fsSize" flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">DISK {{$index + 1}}</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.FILE_SYSTEM\' | translate}}: {{disk.fs}}</div>\n                        <div class="h4">{{\'SETTINGS.MOUNT_POINT\' | translate}}: "{{disk.mount}}"</div>\n                        <div class="h4">{{\'SETTINGS.TOTAL\' | translate}}: {{disk.size / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.USED\' | translate}}: {{disk.used / 1024 / 1024 / 1024 | number:0}} GB</div>\n                      </div>\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.USED">Used</span>\n                          <span class="h4 secondary-text font-weight-500">{{disk.use | number:0}}%</span>\n                        </div>\n                        <md-progress-linear class="red" md-mode="determinate" value="{{disk.use | number:0}}"></md-progress-linear>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget ng-repeat="net in vm.system.net" flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">NET {{$index + 1}}</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.INTERFACE\' | translate}}: {{net.iface}}</div>\n                        <div class="h4">IPv4: {{net.ip4}}</div>\n                        <div class="h4">IPv6: {{net.ip6}}</div>\n                        <div class="h4">MAC: {{net.mac}}</div>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row">\n              <div flex>\n                <md-toolbar class="md-table-toolbar md-default">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="SETTINGS.TOP_N_PROCESSES" translate-values="{value: vm.processLimit}"></span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm.searchTerm1 = query" on-collapse="vm.searchTerm1 = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table>\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column>pid</th>\n                        <th md-column>{{\'SETTINGS.NAME\' | translate}}</th>\n                        <th md-column>{{\'SETTINGS.STATE\' | translate}}</th>\n                        <th md-column>pmem</th>\n                        <th md-column>pcpu</th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-repeat="process in vm.system.processes.list | limitTo: vm.processLimit | filter: vm.searchTerm1 | orderBy:\'-pcpu\'">\n                        <td md-cell>{{process.pid}}</td>\n                        <td md-cell>{{process.command}}</td>\n                        <td md-cell>\n                          <span class="text-boxed white-fg" ng-class="{\n                          \'green-600-bg\': process.state == \'running\',\n                          \'yellow-600-bg\': process.state == \'sleeping\',\n                          \'red-600-bg\': process.state == \'blocked\'}">{{process.state | uppercase}}</span>\n                        </td>\n                        <td md-cell>{{process.pmem}}%</td>\n                        <td md-cell>{{process.pcpu}}%</td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n              </div>\n            </md-card>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SETTINGS.PROCESSES">PROCESSES</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="system-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <md-card class="md-whiteframe-1dp padding-20" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SETTINGS.MOTION_PROCESS_MANAGEMENT"></span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.searchTerm2 = query" on-collapse="vm.searchTerm2 = undefined" debounce="300"></ms-search-bar>\n                  <md-button ng-click="vm.getProcesses()" class="md-icon-button" aria-label="Reload">\n                    <md-icon md-font-icon="icon-reload" class="s24"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table>\n                  <thead md-head>\n                    <tr md-row>\n                      <th md-column>id</th>\n                      <th md-column>pid</th>\n                      <th md-column>{{\'SETTINGS.NAME\' | translate}}</th>\n                      <th md-column>{{\'SETTINGS.STATE\' | translate}}</th>\n                      <th md-column>MEM</th>\n                      <th md-column>CPU</th>\n                      <th md-column width="20px">Actions</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-repeat="process in vm.processes | filter: vm.searchTerm2 | orderBy:\'-monit.cpu\'">\n                      <td md-cell>{{process.pm_id}}</td>\n                      <td md-cell>{{process.pid}}</td>\n                      <td md-cell>{{process.name == \'agi\' ? \'agi (Cally Square IVR)\' : process.name}}</td>\n                      <td md-cell>\n                        <span class="text-boxed white-fg" ng-class="{\'green-600-bg\': process.pm2_env.status == \'online\', \'red-600-bg\': process.pm2_env.status == \'stopped\'}">{{process.pm2_env.status | uppercase}}</span>\n                      </td>\n                      <td md-cell>{{process.monit.memory / 1024 / 1024 | number:0}} MB</td>\n                      <td md-cell>{{process.monit.cpu}}%</td>\n                      <td md-cell>\n                        <md-button ng-if="process.pm2_env.status !== \'online\'" ng-click="vm.updateProcess($event, process.pm_id, \'online\')" class="md-icon-button" aria-label="Play">\n                          <md-icon md-font-icon="icon-play" class="s24"></md-icon>\n                        </md-button>\n                        <md-button ng-if="process.pm2_env.status === \'online\'" ng-click="vm.updateProcess($event, process.pm_id, \'stopped\')" class="md-icon-button" aria-label="Stop">\n                          <md-icon md-font-icon="icon-stop" class="s24"></md-icon>\n                        </md-button>\n                      </td>\n                    </tr>\n                  </tbody>\n                  <tfoot md-foot>\n                    <tr md-row>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell>{{ (vm.processes | map: \'monit.memory\' | sum) / 1024 / 1024 | number:0 }} MB</td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                    </tr>\n                  </tfoot>\n                </table>\n              </md-table-container>\n            </md-card>\n            <md-card class="md-whiteframe-1dp padding-20" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SETTINGS.USEFUL_COMMANDS"></span>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table>\n                  <thead md-head>\n                    <tr md-row>\n                      <th md-column width="30%">{{\'SETTINGS.COMMAND\' | translate}}</th>\n                      <th md-column>{{\'SETTINGS.DESCRIPTION\' | translate}}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr>\n                      <td md-cell class="no-border">pm2 list</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_LIST\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 start &lt;id | name&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_START\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 stop &lt;id | name | all&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_STOP\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 restart &lt;id | name&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_RESTART\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 logs [id | name]</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_LOGS\' | translate}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </md-card>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/settings/views/updates/update/dialog.html",'<md-dialog aria-label="Update">\n  <form name="updateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n      </div>\n    </md-toolbar>\n\n    <div md-background-bg layout="row" layout-align="start start">\n      <md-progress-linear md-mode="determinate" value="{{vm.progress}}" class="md-warn"></md-progress-linear>\n    </div>\n\n    <md-dialog-content ms-scroll>\n      <div layout="row" layout-align="center center">\n        <div ng-if="vm.updating" layout="column" layout-align="center center">\n          <span class="text-center md-title">Grab a quick coffee and</span>\n          <span class="text-center md-title">get back here as soon as completed!</span>\n          <span class="text-center md-title">{{vm.output}}</span>\n        </div>\n        <div ng-if="!vm.updating">\n          <div ng-if="vm.success" layout="column" layout-align="center center">\n            <span class="text-center md-title">Update Completed! Thank you for your time.</span>\n            <span class="text-center md-title">In order to complete the update,</span>\n            <span class="text-center md-title">please click on reload button</span>\n          </div>\n          <div ng-if="!vm.success" layout="column" layout-align="center center">\n            <span class="text-center md-title">Update Error!</span>\n            <span class="text-center md-title">Please contact your administrator!</span>\n            <span class="text-center md-title">{{vm.output}}</span>\n          </div>\n        </div>\n        <img src="assets/images/business/users.jpg" alt="" width="128" height="128" />\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions ng-if="!vm.updating" layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.reload()" class="send-button md-warm md-raised" aria-label="RELOAD" translate="SETTINGS.RELOAD" translate-attr-aria-label="SETTINGS.RELOAD">\n          RELOAD\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/updates/updates.html",'<div id="updates" class="page-layout simple fullwidth doc-page">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.UPDATES">UPDATES</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      \x3c!-- UPDATE CARD --\x3e\n      <div layout="row" ng-if="!vm.updating">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="SETTINGS.CURRENT_VERSION">CURRENT VERSION</span>\n\n            <span class="md-display-3 padding-20">{{vm.version.current}}</span>\n\n            <md-button href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.version.current}}" target="_blank" class="md-accent" title="CHANGELOG" aria-label="CHANGELOG" translate="SETTINGS.CHANGELOG" translate-attr-aria-label="SETTINGS.CHANGELOG">\n              CHANGELOG\n            </md-button>\n          </div>\n        </md-card>\n        <md-card class="md-whiteframe-20dp padding-20" flex ng-if="vm.version.current != vm.version.latest">\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-warn-fg padding-20 text-bold" translate="SETTINGS.NEW_VERSION">NEW VERSION</span>\n\n            <span class="md-display-3 padding-20">{{vm.version.latest}}</span>\n\n            <md-button href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.version.latest}}" target="_blank" class="md-accent" title="CHANGELOG" aria-label="CHANGELOG" translate="SETTINGS.CHANGELOG" translate-attr-aria-label="SETTINGS.CHANGELOG">\n              CHANGELOG\n            </md-button>\n            <md-button ng-click="vm.updateConfirm($event)" class="md-raised md-warn" aria-label="CHANGELOG" translate="SETTINGS.UPDATE" translate-attr-aria-label="SETTINGS.UPDATE">UPDATE</md-button>\n          </div>\n        </md-card>\n        <md-card class="md-whiteframe-1dp padding-20" flex ng-if="vm.version.current == vm.version.latest">\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-warn-fg padding-20 text-bold" translate="SETTINGS.REMOTE_VERSION">REMOTE VERSION</span>\n\n            <span class="md-subhead padding-20" translate="SETTINGS.NO_NEW_VERSION_AVAILABLE">NO NEW VERSION AVAILABLE</span>\n          </div>\n        </md-card>\n      </div>\n      \x3c!-- / UPDATE CARD --\x3e\n\n      <div ng-if="vm.updating">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="SETTINGS.UPDATING">...</span>\n            <md-progress-linear md-mode="determinate" class="md-accent padding-20" value="{{vm.progress}}"></md-progress-linear>\n            <span class="md-display-1 padding-5 text-center">Grab a quick coffee and</span>\n            <span class="md-display-1 padding-5 text-center">get back here as soon as completed</span>\n            <img src="assets/images/business/users.jpg" alt="" width="40%" height="40%" />\n          </div>\n        </md-card>\n      </div>\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/sms/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="SMS.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n        <th md-column>{{ \'SMS.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'SMS.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'SMS.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="SMS.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="SMS.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/sms/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/sms/views/smsAccounts/create/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.smsAccount.name" ng-required="true" autofocus ng-disabled="!vm.newSmsAccount">\n\n        <div ng-messages="smsAccountForm[\'name\'].$error" ng-show="smsAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.smsAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'key\'].$error" ng-show="smsAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.smsAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="SMS.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="smsAccountForm[\'remote\'].$error" ng-show="smsAccountForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="SMS.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.smsAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="SMS.HELP.LIST"></span></div>\n        <div ng-messages="smsAccountForm[\'ListId\'].$error" ng-show="smsAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.smsAccount.type" required>\n          <md-option ng-value="\'twilio\'">Twilio</md-option>\n          <md-option ng-value="\'skebby\'">Skebby</md-option>\n          <md-option ng-value="\'connectel\'">Connectel</md-option>\n          <md-option ng-value="\'clicksend\'">ClickSend</md-option>\n          <md-option ng-value="\'plivo\'">Plivo</md-option>\n          <md-option ng-value="\'infobip\'">Infobip</md-option>\n          <md-option ng-value="\'clickatell\'">Clickatell</md-option>\n          <md-option ng-value="\'bandwidth\'">Bandwidth</md-option>\n          <md-option ng-value="\'csc\'">CSCTelecom</md-option>\n          <md-option ng-value="\'intelepeer\'">Intelepeer</md-option>\n        </md-select>\n        <div ng-messages="smsAccountForm[\'type\'].$error" ng-show="smsAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.PHONE">Phone</label>\n        <input type="text" name="phone" ng-model="vm.smsAccount.phone" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'phone\'].$error" ng-show="smsAccountForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'twilio\'" class="md-block">\n        <label translate="SMS.ACCOUNTSID">AccountSID</label>\n        <input type="text" name="accountSid" ng-model="vm.smsAccount.accountSid" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'accountSid\'].$error" ng-show="smsAccountForm[\'accountSid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'plivo\'" class="md-block">\n        <label translate="SMS.AUTHID">AuthID</label>\n        <input type="text" name="authId" ng-model="vm.smsAccount.authId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'authId\'].$error" ng-show="smsAccountForm[\'authId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AUTHID_REQUIRED">AuthID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'twilio\' || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'plivo\'" class="md-block">\n        <label translate="SMS.AUTHTOKEN">AuthToken</label>\n        <input type="text" name="authToken" ng-model="vm.smsAccount.authToken" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'authToken\'].$error" ng-show="smsAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'skebby\'" class="md-block">\n        <label translate="SMS.METHOD">Method</label>\n        <md-select name="smsMethod" ng-model="vm.smsAccount.smsMethod" required>\n          <md-option ng-value="\'SI\'">Basic</md-option>\n          <md-option ng-value="\'TI\'">Classic</md-option>\n          <md-option ng-value="\'GP\'">Classic+</md-option>\n        </md-select>\n        <div ng-messages="smsAccountForm[\'smsMethod\'].$error" ng-show="smsAccountForm[\'smsMethod\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.METHOD_REQUIRED">Method field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.smsAccount.username" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'username\'].$error" ng-show="smsAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'">\n        <label translate="SMS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.smsAccount.password" placeholder="Password" translate translate-attr-placeholder="SMS.PASSWORD" required>\n        <div ng-messages="smsAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SMS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'csc\'" class="md-block">\n        <label translate="SMS.BASEURL">BaseURL</label>\n        <input type="text" name="baseUrl" ng-model="vm.smsAccount.baseUrl" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'baseUrl\'].$error" ng-show="smsAccountForm[\'baseUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.BASEURL_REQUIRED">BaseURL field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n        <label translate="SMS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.smsAccount.apiKey" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'apiKey\'].$error" ng-show="smsAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.ACCOUNTID">AccountId</label>\n        <input type="text" name="accountId" ng-model="vm.smsAccount.accountId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'accountId\'].$error" ng-show="smsAccountForm[\'accountId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCOUNTID_REQUIRED">AccountId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.APPLICATIONID">ApplicationID</label>\n        <input type="text" name="applicationId" ng-model="vm.smsAccount.applicationId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'applicationId\'].$error" ng-show="smsAccountForm[\'applicationId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.APPLICATIONID_REQUIRED">ApplicationID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsAccount.description">\n\n        <div ng-messages="smsAccountForm[\'description\'].$error" ng-show="smsAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsAccount" ng-click="vm.saveSmsAccount()" class="send-button md-accent md-raised" ng-disabled="smsAccountForm.$invalid || smsAccountForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsAccount" ng-click="vm.addNewSmsAccount()" class="send-button md-accent md-raised" ng-disabled="smsAccountForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSACCOUNT" translate-attr-aria-label="SMS.ADD_SMSACCOUNT">\n          ADD SMSACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsAccount" ng-click="vm.deleteSmsAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",'<md-dialog class="smsAccount-dialog" aria-label="smsAccount" ng-init="vm.onInit()">\n  <form name="smsAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="SMS.AGENTADD_SMSACCOUNT">Add Agent to smsAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/agent/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'agent\'].$error" ng-show="smsAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'timeout\'].$error" ng-show="smsAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'accesskeyid\'].$error" ng-show="smsAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'secretaccesskey\'].$error" ng-show="smsAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'lexregion\'].$error" ng-show="smsAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'botname\'].$error" ng-show="smsAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'times\'].$error" ng-show="smsAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="smsAccountFormApp[\'text\'].$error" ng-show="smsAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/close/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'disposition\'].$error" ng-show="smsAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'key\'].$error" ng-show="smsAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'language\'].$error" ng-show="smsAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'projectId\'].$error" ng-show="smsAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'clientEmail\'].$error" ng-show="smsAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="smsAccountFormApp[\'privateKey\'].$error" ng-show="smsAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'language\'].$error" ng-show="smsAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'condition\'].$error" ng-show="smsAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'truepriority\'].$error" ng-show="smsAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'falsepriority\'].$error" ng-show="smsAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'priority\'].$error" ng-show="smsAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/noop/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'value\'].$error" ng-show="smsAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/queue/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'queue\'].$error" ng-show="smsAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'timeout\'].$error" ng-show="smsAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/system/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'command\'].$error" ng-show="smsAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'variable\'].$error" ng-show="smsAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/tag/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'tag\'].$error" ng-show="smsAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/smsCannedAnswers/dialog.html",'<md-dialog class="smsCannedAnswer-dialog" aria-label="New SmsCannedAnswer">\n  <form name="smsCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.smsCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="smsCannedAnswerForm[\'key\'].$error" ng-show="smsCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.smsCannedAnswer.value" required></textarea>\n\n        <div ng-messages="smsCannedAnswerForm[\'value\'].$error" ng-show="smsCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsCannedAnswer.description">\n\n        <div ng-messages="smsCannedAnswerForm[\'description\'].$error" ng-show="smsCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsCannedAnswer" ng-click="vm.saveSmsCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="smsCannedAnswerForm.$invalid || smsCannedAnswerForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsCannedAnswer" ng-click="vm.addNewSmsCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="smsCannedAnswerForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSCANNEDANSWER" translate-attr-aria-label="SMS.ADD_SMSCANNEDANSWER">\n          ADD SMSCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsCannedAnswer" ng-click="vm.deleteSmsCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/view.html",'<div id="sms-smsAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-smsAccounts-button md-icon-button" aria-label="Go to smsAccounts" ng-click="vm.gotoSmsAccounts()" translate translate-attr-aria-label="SMS.GO_TO_SMSACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="smsAccount-image" hide-xs>\n          <img ng-src="assets/images/business/smsAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.smsAccount.id}}\n            <span ng-if="vm.smsAccount.name">{{vm.smsAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="SMS.CREATED_AT"></span> <span>{{vm.smsAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.smsAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="SMS.AGENTADD_SMSACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSmsAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (smsDispositionsForm.$invalid) || (smsCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="SMS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.smsAccount.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.smsAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.smsAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="SMS.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.smsAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'twilio\'">Twilio</md-option>\n                  <md-option ng-value="\'skebby\'">Skebby</md-option>\n                  <md-option ng-value="\'connectel\'">Connectel</md-option>\n                  <md-option ng-value="\'clicksend\'">ClickSend</md-option>\n                  <md-option ng-value="\'plivo\'">Plivo</md-option>\n                  <md-option ng-value="\'infobip\'">Infobip</md-option>\n                  <md-option ng-value="\'clickatell\'">Clickatell</md-option>\n                  <md-option ng-value="\'bandwidth\'">Bandwidth</md-option>\n                  <md-option ng-value="\'csc\'">CSCTelecom</md-option>\n                  <md-option ng-value="\'intelepeer\'">Intelepeer</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.smsAccount.phone" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'twilio\'" class="md-block">\n                <label translate="SMS.ACCOUNTSID">AccountSID</label>\n                <input type="text" name="accountSid" ng-model="vm.smsAccount.accountSid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accountSid\'].$error" ng-show="generalForm[\'accountSid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'plivo\'" class="md-block">\n                <label translate="SMS.AUTHID">AuthID</label>\n                <input type="text" name="authId" ng-model="vm.smsAccount.authId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authId\'].$error" ng-show="generalForm[\'authId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AUTHID_REQUIRED">AuthID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'twilio\' || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'plivo\'" class="md-block">\n                <label translate="SMS.AUTHTOKEN">AuthToken</label>\n                <input type="text" name="authToken" ng-model="vm.smsAccount.authToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authToken\'].$error" ng-show="generalForm[\'authToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'skebby\'" class="md-block">\n                <label translate="SMS.METHOD">Method</label>\n                <md-select name="smsMethod" ng-model="vm.smsAccount.smsMethod" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'SI\'">Basic</md-option>\n                  <md-option ng-value="\'TI\'">Classic</md-option>\n                  <md-option ng-value="\'GP\'">Classic+</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'smsMethod\'].$error" ng-show="generalForm[\'smsMethod\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.METHOD_REQUIRED">Method field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.smsAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'">\n                <label translate="SMS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.smsAccount.password" placeholder="Password" translate translate-attr-placeholder="SMS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container ng-if="vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'csc\'" class="md-block">\n                <label translate="SMS.BASEURL">BaseURL</label>\n                <input type="text" name="baseUrl" ng-model="vm.smsAccount.baseUrl" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'baseUrl\'].$error" ng-show="generalForm[\'baseUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.BASEURL_REQUIRED">BaseURL field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n                <label translate="SMS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.smsAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.ACCOUNTID">AccountId</label>\n                <input type="text" name="accountId" ng-model="vm.smsAccount.accountId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accountId\'].$error" ng-show="generalForm[\'accountId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.ACCOUNTID_REQUIRED">AccountId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.APPLICATIONID">ApplicationID</label>\n                <input type="text" name="applicationId" ng-model="vm.smsAccount.applicationId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'applicationId\'].$error" ng-show="generalForm[\'applicationId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.APPLICATIONID_REQUIRED">ApplicationID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'plivo\'|| vm.smsAccount.type == \'csc\'|| vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n                <label translate="SMS.SENDERSTRING">SenderString</label>\n                <input type="text" name="senderString" ng-model="vm.smsAccount.senderString" md-maxlength="11" ng-pattern="/^[A-Za-z0-9\\.\\s]*$/i" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'senderString\'].$error" ng-show="generalForm[\'senderString\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.SENDERSTRING_REQUIRED">SenderString field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.SENDERSTRING_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\s]*$/i\' }">SenderString must be valid pattern </span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.SENDERSTRING_MAX_LENGTH" translate-values=\'{max: 11}\'>SenderString must have a maximum length equal to 11</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.smsAccount.type == \'skebby\' && vm.smsAccount.smsMethod == \'GP\') || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\'" class="md-block">\n                <md-switch ng-model="vm.smsAccount.deliveryReport" aria-label="deliveryReport" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.DELIVERYREPORT">deliveryReport</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.smsAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.smsAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.RECEIVEURL">receiveUrl</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUrl" name="receiveUrl" ng-value="vm.smsAccount.remote + \'/api/sms/accounts/\' + vm.smsAccount.id + \'/notify?token=\' + vm.smsAccount.token" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="SMS.HELP.RECEIVEURL"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="( ((vm.smsAccount.type == \'skebby\' && vm.smsAccount.smsMethod == \'GP\') || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\') && vm.smsAccount.deliveryReport) || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.DELIVERYREPORTURL">deliveryReportUrl</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-deliveryReportUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-deliveryReportUrl" name="deliveryReportUrl" ng-value="vm.smsAccount.remote + \'/api/sms/accounts/\' + vm.smsAccount.id + \'/status?token=\' + vm.smsAccount.token + (vm.smsAccount.type == \'csc\' ? \'&message-id={message-id}&state={state}\' : \'\')" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="SMS.HELP.DELIVERYREPORTURL"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="smsAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="SMS.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.smsAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="smsAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.queueTransfer == true" class="md-block">\n                <label translate="SMS.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.smsAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.agentTransfer == true" class="md-block">\n                <label translate="SMS.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.smsAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.PROXY">PROXY</div>\n            </div>\n            <form name="proxyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="SMS.TOKEN">token</label>\n                <input type="text" name="token" ng-model="vm.smsAccount.token" autofocus disabled>\n\n                <div ng-messages="proxyForm[\'token\'].$error" ng-show="proxyForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.TOKEN_REQUIRED">token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.MOTIONPROXY">MotionProxy</label>\n                <input type="url" name="remote" ng-model="vm.smsAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="SMS.HELP.MOTIONPROXY"></span></div>\n                <div ng-messages="proxyForm[\'remote\'].$error" ng-show="proxyForm[\'remote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="SMS.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="smsAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.mandatoryDisposition" class="md-block">\n                <label translate="SMS.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.smsAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="SMS.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="SmsAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="smsAccount-detail-form-container smsdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="SMS.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add sms dispositions" translate translate-attr-label="SMS.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="smsAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'SMS.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'SMS.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container smscannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="SmsAccountSmsCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountSmsCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SMS.SMSCANNEDANSWERS">SmsCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getSmsAccountSmsCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event)" aria-label="add smsCannedAnswer" translate translate-attr-label="SMS.ADD_SMSCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedSmsAccountSmsCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedSmsAccountSmsCannedAnswers.length}} {{vm_dc.selectedSmsAccountSmsCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedSmsAccountSmsCannedAnswers" csv-label="true" filename="smsAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedSmsAccountSmsCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedSmsAccountSmsCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getSmsAccountSmsCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'SMS.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'SMS.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'SMS.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'SMS.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'SMS.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="smsCannedAnswer" md-select-id="id" ng-repeat="smsCannedAnswer in vm_dc.smsAccountSmsCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{ smsCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" translate="SMS.EDIT_SMSCANNEDANSWER">\n                                Edit SmsCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(smsCannedAnswer, $event)" translate="SMS.DELETE_SMSCANNEDANSWER">\n                                Delete SmsCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.smsAccountSmsCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="SMS.NO_SMSCANNEDANSWER_AVAILABLE">No smscannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.smsAccountSmsCannedAnswers.count}}" md-on-paginate="vm_dc.getSmsAccountSmsCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="SmsAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.smsAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="SMS.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedSmsAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedSmsAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedSmsAccountApps.length}} {{vm_ac.selectedSmsAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedSmsAccountApps($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedSmsAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.smsAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editSmsAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.smsAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="SmsAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SMS.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getSmsAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getSmsAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getSmsAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="SMS.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedSmsAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedSmsAccountInteractions.length}} {{vm_dc.selectedSmsAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedSmsAccountInteractions" csv-label="true" filename="smsAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedSmsAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedSmsAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getSmsAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'SMS.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'SMS.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'SMS.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'SMS.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'SMS.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'SMS.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'SMS.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.smsAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'SMS.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'SMS.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spysmsInteraction($event, interaction)" translate="SMS.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.smsInteractionDownload(interaction, $event)" translate="SMS.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="SMS.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.smsAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="SMS.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.smsAccountInteractions.count}}" md-on-paginate="vm_dc.getSmsAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/sms/views/smsAccounts/smsAccounts.html",'<div id="smsAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-message-text" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SMS.SMSACCOUNTS">SmsAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SMS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSmsAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSmsAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SMS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-smsAccounts-count">\n          <span>{{vm.selectedSmsAccounts.length}}</span>\n          <span translate="SMS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SMS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSmsAccounts()" translate="SMS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSmsAccounts()" translate="SMS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSmsAccounts" csv-label="true" filename="smsAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSmsAccounts($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SMSACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSmsAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SMS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'SMS.KEY\' | translate }}</th>\n                <th md-column md-order-by="ListId">{{ \'SMS.LIST\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'SMS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'SMS.PHONE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'SMS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.smsAccounts.rows.length">\n                <td md-cell colspan="8">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="smsAccount" md-select-id="id" ng-repeat="smsAccount in vm.smsAccounts.rows">\n                <td md-cell ng-if="smsAccount.userpic"><img class="avatar" alt="{{smsAccount.name}}" ng-src="api/users/{{smsAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!smsAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{smsAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="id ">{{smsAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="name ">{{smsAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="key ">{{smsAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="ListId ">{{ (vm.lists | filter : {\'id\':smsAccount.ListId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="type ">{{ vm.arraytype[smsAccount.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="phone ">{{smsAccount.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="description ">{{smsAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(smsAccount, $event    )" translate="SMS.EDIT_SMSACCOUNT">\n                          Edit SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(smsAccount, $event    )" translate="SMS.INTERACTIONS_SMSACCOUNT">\n                          Interactions SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(smsAccount, $event    )" translate="SMS.AGENTADD_SMSACCOUNT">\n                          AgentAdd SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(smsAccount, $event    )" translate="SMS.DELETE_SMSACCOUNT">\n                          Delete SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsAccounts.count}}" md-on-paginate="vm.getSmsAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SMSACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SMSACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-smsAccount-button" ng-click="vm.createOrEditSmsAccount($event)" aria-label="add smsAccount" translate translate-attr-aria-label="SMS.ADD_SMSACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SMSACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/sms/views/smsQueues/create/dialog.html",'<md-dialog class="smsQueue-dialog" aria-label="New SmsQueue">\n  <form name="smsQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.smsQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newSmsQueue">\n\n        <div class="hint"><span translate="SMS.HELP.NAME"></span></div>\n        <div ng-messages="smsQueueForm[\'name\'].$error" ng-show="smsQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SMS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.smsQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="smsQueueForm[\'strategy\'].$error" ng-show="smsQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.smsQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="smsQueueForm[\'timeout\'].$error" ng-show="smsQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsQueue.description">\n\n        <div ng-messages="smsQueueForm[\'description\'].$error" ng-show="smsQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsQueue" ng-click="vm.saveSmsQueue()" class="send-button md-accent md-raised" ng-disabled="smsQueueForm.$invalid || smsQueueForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsQueue" ng-click="vm.addNewSmsQueue()" class="send-button md-accent md-raised" ng-disabled="smsQueueForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSQUEUE" translate-attr-aria-label="SMS.ADD_SMSQUEUE">\n          ADD SMSQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsQueue" ng-click="vm.deleteSmsQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",'<md-dialog class="smsQueue-dialog" aria-label="smsQueue" ng-init="vm.onInit()">\n  <form name="smsQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="SMS.AGENTADD_SMSQUEUE">Add Agent to smsQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",'<md-dialog class="smsQueue-dialog" aria-label="smsQueue" ng-init="vm.onInit()">\n  <form name="smsQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="SMS.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsQueues/edit/view.html",'<div id="sms-smsQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-smsQueues-button md-icon-button" aria-label="Go to smsQueues" ng-click="vm.gotoSmsQueues()" translate translate-attr-aria-label="SMS.GO_TO_SMSQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="smsQueue-image" hide-xs>\n          <img ng-src="assets/images/business/smsQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.smsQueue.id}}\n            <span ng-if="vm.smsQueue.name">{{vm.smsQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="SMS.CREATED_AT"></span> <span>{{vm.smsQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.smsQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="SMS.TEAMADD_SMSQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.smsQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="SMS.AGENTADD_SMSQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSmsQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="SMS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.smsQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="SMS.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.smsQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.smsQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.smsQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/sms/views/smsQueues/smsQueues.html",'<div id="smsQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-message-text" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SMS.SMSQUEUES">SmsQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SMS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSmsQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSmsQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SMS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-smsQueues-count">\n          <span>{{vm.selectedSmsQueues.length}}</span>\n          <span translate="SMS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SMS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSmsQueues()" translate="SMS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSmsQueues()" translate="SMS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSmsQueues" csv-label="true" filename="smsQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSmsQueues($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SMSQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSmsQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SMS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'SMS.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.smsQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="smsQueue" md-select-id="id" ng-repeat="smsQueue in vm.smsQueues.rows">\n                <td md-cell ng-if="smsQueue.userpic"><img class="avatar" alt="{{smsQueue.name}}" ng-src="api/users/{{smsQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!smsQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{smsQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsQueue, ev) : vm.createOrEditSmsQueue($event, smsQueue)" md-cell class="id ">{{smsQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsQueue, ev) : vm.createOrEditSmsQueue($event, smsQueue)" md-cell class="name ">{{smsQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsQueue, ev) : vm.createOrEditSmsQueue($event, smsQueue)" md-cell class="strategy ">{{ vm.arraystrategy[smsQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(smsQueue, $event    )" translate="SMS.EDIT_SMSQUEUE">\n                          Edit SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(smsQueue, $event    )" translate="SMS.TEAMADD_SMSQUEUE">\n                          teamadd SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(smsQueue, $event    )" translate="SMS.AGENTADD_SMSQUEUE">\n                          agentadd SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(smsQueue, $event    )" translate="SMS.DELETE_SMSQUEUE">\n                          Delete SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(smsQueue, $event    )" translate="SMS.GOTOREALTIME_SMSQUEUE">\n                          goToRealtime SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsQueues.count}}" md-on-paginate="vm.getSmsQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SMSQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SMSQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-smsQueue-button" ng-click="vm.createOrEditSmsQueue($event)" aria-label="add smsQueue" translate translate-attr-aria-label="SMS.ADD_SMSQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SMSQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/agents/agents.html",'<div id="agents" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.AGENTS">Agents</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedAgents.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedAgents =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-agents-count">\n          <span>{{vm.selectedAgents.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllAgents()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectAgents()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedAgents" csv-label="true" filename="agents.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedAgents($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- AGENT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedAgents" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAgents">\n              <tr md-row>\n                <th md-column width="20px"></th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="showWebBar">{{ \'STAFF.SHOWWEBCONTROL\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'STAFF.PHONE\' | translate }}</th>\n                <th md-column md-order-by="mobile">{{ \'STAFF.MOBILE\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column md-order-by="disabled">{{ \'STAFF.DISABLED\' | translate }}</th>\n                <th md-column md-order-by="blocked">{{ \'STAFF.BLOCKED\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.agents.rows.length">\n                <td md-cell colspan="10">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="agent" md-select-id="id" ng-repeat="agent in vm.agents.rows">\n                <td md-cell ng-if="agent.userpic"><img class="avatar" alt="{{agent.name}}" ng-src="api/users/{{agent.id}}/avatar" /></td>\n                <td md-cell ng-if="!agent.userpic"><img class="avatar" alt="{{agent.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="fullname font-weight-600">{{agent.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="name">{{agent.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="showWebBar">{{ agent.showWebBar | getOptionByValue: vm.showWebBarOptions }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="email">{{agent.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="phone">{{agent.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="mobile">{{agent.mobile}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="internal">{{agent.internal}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="disabled">\n                  <md-icon md-colors="{color: {{agent.disabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{agent.disabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="blocked">\n                  <md-icon md-colors="{color: {{agent.blocked ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{agent.blocked ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(agent, $event    )" translate="STAFF.EDIT_AGENT">\n                          Edit Agent\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(agent, $event    )" translate="STAFF.TEAMADD_AGENT">\n                          teamadd Agent\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(agent, $event    )" translate="STAFF.DELETE_AGENT">\n                          Delete Agent\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.agents.count}}" md-on-paginate="vm.getAgents" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / AGENT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD AGENT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-agent-button" ng-click="vm.createOrEditAgent($event)" aria-label="add agent" translate translate-attr-aria-label="STAFF.ADD_AGENT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD AGENT BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/agents/create/dialog.html",'<md-dialog class="agent-dialog" aria-label="New Agent">\n  <form name="agentForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.FULLNAME">Fullname</label>\n        <input type="text" name="fullname" ng-model="vm.agent.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="agentForm[\'fullname\'].$error" ng-show="agentForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.USERNAME">Username</label>\n        <input type="text" name="name" ng-model="vm.agent.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" ng-disabled="!vm.newAgent">\n\n        <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n        <div ng-messages="agentForm[\'name\'].$error" ng-show="agentForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.agent.alias">\n\n        <div ng-messages="agentForm[\'alias\'].$error" ng-show="agentForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.SHOWWEBCONTROL">ShowWebControl</label>\n        <md-select name="showWebBar" ng-model="vm.agent.showWebBar">\n          <md-option ng-value="0">Phonebar</md-option>\n          <md-option ng-value="1">External</md-option>\n          <md-option ng-value="2">WebRTC</md-option>\n        </md-select>\n        <div ng-messages="agentForm[\'showWebBar\'].$error" ng-show="agentForm[\'showWebBar\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.SHOWWEBCONTROL_REQUIRED">ShowWebControl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.agent.email" ng-required="true">\n\n        <div ng-messages="agentForm[\'email\'].$error" ng-show="agentForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newAgent">\n        <label translate="STAFF.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.agent.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="STAFF.PASSWORD" required>\n        <div ng-messages="agentForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newAgent  && (vm.newAgent)">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="agentForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.newAgent" class="md-block">\n        <md-switch ng-model="vm.agent.autointernal" aria-label="AutoInternal"><span translate="STAFF.AUTOINTERNAL">AutoInternal</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.agent.autointernal" class="md-block">\n        <label translate="STAFF.INTERNAL">Internal</label>\n        <input type="text" name="internal" ng-model="vm.agent.internal" ng-required="true" ng-disabled="!vm.newAgent">\n\n        <div ng-messages="agentForm[\'internal\'].$error" ng-show="agentForm[\'internal\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.agent.description">\n\n        <div ng-messages="agentForm[\'description\'].$error" ng-show="agentForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newAgent" class="md-block">\n        <md-switch ng-model="vm.agent.voicemail" aria-label="Voicemail"><span translate="STAFF.VOICEMAIL">Voicemail</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n        <md-switch ng-model="vm.agent.phoneBarRemoteControl" aria-label="RemoteControl"><span translate="STAFF.REMOTECONTROL">RemoteControl</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.agent.phoneBarRemoteControl && vm.agent.showWebBar == 0" class="md-block">\n        <label translate="STAFF.REMOTECONTROLPORT">RemoteControlPort</label>\n        <input type="number" name="phoneBarRemoteControlPort" ng-model="vm.agent.phoneBarRemoteControlPort" value="9888" ng-required="true">\n\n        <div ng-messages="agentForm[\'phoneBarRemoteControlPort\'].$error" ng-show="agentForm[\'phoneBarRemoteControlPort\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.REMOTECONTROLPORT_REQUIRED">RemoteControlPort field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newUser" class="md-block">\n        <md-switch ng-model="vm.agent.voicemail" aria-label="Voicemail"><span translate="STAFF.VOICEMAIL">Voicemail</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAgent" ng-click="vm.saveAgent()" class="send-button md-accent md-raised" ng-disabled="agentForm.$invalid || agentForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAgent" ng-click="vm.addNewAgent()" class="send-button md-accent md-raised" ng-disabled="agentForm.$invalid" aria-label="ADD" translate="STAFF.ADD_AGENT" translate-attr-aria-label="STAFF.ADD_AGENT">\n          ADD AGENT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAgent" ng-click="vm.deleteAgent($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/changepassword/changepassword.html",'<md-dialog class="agent-dialog" aria-label="{{vm.name}}">\n  <form name="agentForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.CHANGE_PASSWORD\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.agent.id">\n        <label translate="STAFF.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="STAFF.OLD_PASSWORD" required>\n        <div ng-messages="agentForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" translate ng-pattern="vm.passwordPattern" translate-attr-placeholder="STAFF.NEW_PASSWORD" required>\n        <div ng-messages="agentForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is\n              required</span>\n          </div>\n\n\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain\n              at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric\n              character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="STAFF.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n\n\n\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="agentForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is\n              required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did\n              not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="agentForm.$invalid || agentForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",'<md-dialog class="agent-dialog" aria-label="agent" ng-init="vm.onInit()">\n  <form name="agentForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2>{{vm.title}}</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin" ng-if="vm.agent.role === \'agent\' && vm.channel === \'voice\'">\n        <label translate="STAFF.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="agentForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" add-disabled="vm.channel === \'voice\' && vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveQueues()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",'<md-dialog class="agent-dialog" aria-label="agent" ng-init="vm.onInit()">\n  <form name="agentForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="STAFF.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/view.html",'<div id="staff-agent" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-agents-button md-icon-button" aria-label="Go to agents" ng-click="vm.gotoAgents()" translate translate-attr-aria-label="STAFF.GO_TO_AGENTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="agent-image" hide-xs>\n          <img ng-src="assets/images/business/agents.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.agent.id}}\n            <span ng-if="vm.agent.name">{{vm.agent.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.agent.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div ng-cloak>\n      <md-fab-speed-dial md-direction="left" class="md-scale md-fab">\n        <md-fab-trigger>\n          <md-button aria-label="menu" class="md-fab md-primary md-icon-button">\n            <md-tooltip md-direction="top" md-visible="false"><span translate="STAFF.CHANNELS">Channels</span></md-tooltip>\n            <md-icon md-font-icon="icon-stackoverflow" aria-label="queueadd"></md-icon>\n          </md-button>\n        </md-fab-trigger>\n        <md-fab-actions>\n          <md-button aria-label="voice" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'voice\', $event, \'inbound\')">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="VOICE.VOICE">Voice</span></md-tooltip>\n            <md-icon md-font-icon="icon-phone" aria-label="voice"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.dialer" aria-label="motion bull" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'voice\', $event, \'outbound\')">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="MOTIONDIALER.MOTIONDIALER">Motion Bull</span></md-tooltip>\n            <md-icon md-font-icon="icon-fire" aria-label="motion bull"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.chat" aria-label="chat" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'chat\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="CHAT.CHAT">Chat</span></md-tooltip>\n            <md-icon md-font-icon="icon-hangouts" aria-label="chat"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.mail" aria-label="mail" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'mail\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="MAIL.MAIL">Email</span></md-tooltip>\n            <md-icon md-font-icon="icon-email" aria-label="mail"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.messaging" aria-label="sms" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'sms\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="SMS.SMS">Sms</span></md-tooltip>\n            <md-icon md-font-icon="icon-message-text" aria-label="sms"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.openchannel" aria-label="openchannel" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'openchannel\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="OPENCHANNEL.OPENCHANNEL">Openchannel</span></md-tooltip>\n            <md-icon md-font-icon="icon-google-earth" aria-label="openchannel"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.fax" aria-label="fax" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'fax\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="FAX.FAX">Fax</span></md-tooltip>\n            <md-icon md-font-icon="icon-deskphone" aria-label="fax"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.whatsapp" aria-label="whatsapp" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'whatsapp\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="WHATSAPP.WHATSAPP">whatsapp</span></md-tooltip>\n            <md-icon md-font-icon="icon-whatsapp" aria-label="whatsapp"></md-icon>\n          </md-button>\n        </md-fab-actions>\n      </md-fab-speed-dial>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.agent, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="STAFF.TEAMADD_AGENT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.changepassworddialog(vm.agent, $event)" class="md-fab md-warn md-icon-button" aria-label="changepassword">\n        <md-tooltip><span translate="STAFF.CHANGEPASSWORD_AGENT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-key-variant"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveAgent()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(personal_infoForm.$invalid) || (security_suiteForm.$invalid) || (change_avatarForm.$invalid) || (generalForm.$invalid) || (capacityForm.$invalid) || (settingsForm.$invalid) || (remote_controlForm.$invalid) || (sipForm.$invalid) || (callforwardingForm.$invalid) || (settings_webrtcForm.$invalid) || (sip_webrtcForm.$invalid) || (general_permissionsForm.$invalid) || (download_permissionsForm.$invalid) || (permissionsForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.PERSONAL_INFO">PERSONAL_INFO</div>\n            </div>\n            <form name="personal_infoForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.FULLNAME">Fullname</label>\n                <input type="text" name="fullname" ng-model="vm.agent.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'fullname\'].$error" ng-show="personal_infoForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.USERNAME">Username</label>\n                <input type="text" name="name" ng-model="vm.agent.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n                <div ng-messages="personal_infoForm[\'name\'].$error" ng-show="personal_infoForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.agent.alias" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'alias\'].$error" ng-show="personal_infoForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SHOWWEBCONTROL">ShowWebControl</label>\n                <md-select name="showWebBar" ng-model="vm.agent.showWebBar" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="0">Phonebar</md-option>\n                  <md-option ng-value="1">External</md-option>\n                  <md-option ng-value="2">WebRTC</md-option>\n                </md-select>\n                <div ng-messages="personal_infoForm[\'showWebBar\'].$error" ng-show="personal_infoForm[\'showWebBar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SHOWWEBCONTROL_REQUIRED">ShowWebControl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.agent.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'email\'].$error" ng-show="personal_infoForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.agent.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'phone\'].$error" ng-show="personal_infoForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MOBILE">Mobile</label>\n                <input type="text" name="mobile" ng-model="vm.agent.mobile" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'mobile\'].$error" ng-show="personal_infoForm[\'mobile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MOBILE_REQUIRED">Mobile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 1" class="md-block">\n                <md-switch ng-model="vm.agent.hotdesk" aria-label="Hotdesk" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.HOTDESK">Hotdesk</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.loginInPause" aria-label="LoginInPause" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.LOGININPAUSE">LoginInPause</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.agent.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'description\'].$error" ng-show="personal_infoForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container security_suite md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SECURITY_SUITE">SECURITY_SUITE</div>\n            </div>\n            <form name="security_suiteForm" novalidate>\n              <md-input-container ng-if="vm.agent.passwordResetAt != null" class="md-block">\n                <label translate="STAFF.LAST_PASSWORD_RESET_AT">Last_Password_Reset_At</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.agent.passwordResetAt" autofocus disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.LAST_PASSWORD_RESET_AT"></span></div>\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.LAST_PASSWORD_RESET_AT_REQUIRED">Last_Password_Reset_At field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.passwordResetAt == null" class="md-block">\n                <label translate="STAFF.NO_PASSWORD_CHANGE">No_Password_Change</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.agent.passwordResetAt" disabled>\n\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NO_PASSWORD_CHANGE_REQUIRED">No_Password_Change field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.disabled" aria-label="Disabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DISABLED">Disabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.DISABLED"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.disabled == 0" class="md-block">\n                <md-switch ng-model="vm.agent.blocked" aria-label="Blocked" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.BLOCKED">Blocked</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.BLOCKED"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.privacyEnabled" aria-label="Mask_Sensitive_Data" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container change_avatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CHANGE_AVATAR">CHANGE_AVATAR</div>\n            </div>\n            <div ng-controller="Agentchange_avatarController as vm_ca" ng-init="vm_ca.init(vm.agent, vm.crudPermissions)" class="agent-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="agent-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="change_avatarimage in vm_ca.agent.images" ng-switch="change_avatarimage.type">\n                    <div class="agent-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{change_avatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="change_avatarimage.file">\n                    </div>\n\n                    <div class="agent-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{change_avatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.VOICE">VOICE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container ng-if="!vm.agent.autointernal" class="md-block">\n                <label translate="STAFF.INTERNAL">Internal</label>\n                <input type="text" name="internal" ng-model="vm.agent.internal" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'internal\'].$error" ng-show="generalForm[\'internal\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar != 2" class="md-block">\n                <label translate="STAFF.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.agent.transport" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'" ng-if="vm.agent.showWebBar == 1">ws</md-option>\n                  <md-option ng-value="\'wss\'" ng-if="vm.agent.showWebBar == 1">wss</md-option>\n                  <md-option ng-value="\'tls\'" ng-if="vm.agent.showWebBar == 1">tls</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.TRANSPORT"></span></div>\n                <div ng-messages="generalForm[\'transport\'].$error" ng-show="generalForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.HOST">Host</label>\n                <input type="text" name="host" ng-model="vm.agent.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.HOST"></span></div>\n                <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAT">NAT</label>\n                <md-select name="nat" ng-model="vm.agent.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAT_REQUIRED">NAT field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.agent.type" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'friend\'">Friend</md-option>\n                  <md-option ng-value="\'user\'">User</md-option>\n                  <md-option ng-value="\'peer\'">Peer</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.TYPE"></span></div>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.agent.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLERID">CallerId</label>\n                <input type="text" name="callerid" ng-model="vm.agent.callerid" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLERID_REQUIRED">CallerId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.agent.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.agent.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.CALLGROUP"></span></div>\n                <div ng-messages="generalForm[\'callgroup\'].$error" ng-show="generalForm[\'callgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLGROUP_REQUIRED">Callgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PICKUPGROUP">Pickupgroup</label>\n                <input type="text" name="pickupgroup" ng-model="vm.agent.pickupgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.PICKUPGROUP"></span></div>\n                <div ng-messages="generalForm[\'pickupgroup\'].$error" ng-show="generalForm[\'pickupgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PICKUPGROUP_REQUIRED">Pickupgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.chanspy" aria-label="chanSpy" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.CHANSPY">chanSpy</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.agent.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'videosupport\'].$error" ng-show="generalForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MONITOREXTENSION">MonitorExtension</label>\n                <md-select name="extensionMonitor" ng-model="vm.agent.extensionMonitor" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'WAV\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'extensionMonitor\'].$error" ng-show="generalForm[\'extensionMonitor\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MONITOREXTENSION_REQUIRED">MonitorExtension field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.OTHER_CHANNELS">OTHER_CHANNELS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container capacity md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CAPACITY">CAPACITY</div>\n            </div>\n            <form name="capacityForm" novalidate>\n              <md-input-container ng-if="vm.license.chat" class="md-block">\n                <label translate="STAFF.CHATCAPACITY">ChatCapacity</label>\n                <input type="number" name="chatCapacity" ng-model="vm.agent.chatCapacity" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.CHATCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'chatCapacity\'].$error" ng-show="capacityForm[\'chatCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CHATCAPACITY_REQUIRED">ChatCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ChatCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.mail" class="md-block">\n                <label translate="STAFF.MAILCAPACITY">MailCapacity</label>\n                <input type="number" name="mailCapacity" ng-model="vm.agent.mailCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.MAILCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'mailCapacity\'].$error" ng-show="capacityForm[\'mailCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MAILCAPACITY_REQUIRED">MailCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MailCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.messaging" class="md-block">\n                <label translate="STAFF.SMSCAPACITY">SMSCapacity</label>\n                <input type="number" name="smsCapacity" ng-model="vm.agent.smsCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.SMSCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'smsCapacity\'].$error" ng-show="capacityForm[\'smsCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SMSCAPACITY_REQUIRED">SMSCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.SMSCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">SMSCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.openchannel" class="md-block">\n                <label translate="STAFF.OPENCHANNELCAPACITY">OpenchannelCapacity</label>\n                <input type="number" name="openchannelCapacity" ng-model="vm.agent.openchannelCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.OPENCHANNELCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'openchannelCapacity\'].$error" ng-show="capacityForm[\'openchannelCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.OPENCHANNELCAPACITY_REQUIRED">OpenchannelCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OpenchannelCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.fax" class="md-block">\n                <label translate="STAFF.FAXCAPACITY">FaxCapacity</label>\n                <input type="number" name="faxCapacity" ng-model="vm.agent.faxCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.FAXCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'faxCapacity\'].$error" ng-show="capacityForm[\'faxCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.FAXCAPACITY_REQUIRED">FaxCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">FaxCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.whatsapp" class="md-block">\n                <label translate="STAFF.WHATSAPPCAPACITY">WhatsappCapacity</label>\n                <input type="number" name="whatsappCapacity" ng-model="vm.agent.whatsappCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.WHATSAPPCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'whatsappCapacity\'].$error" ng-show="capacityForm[\'whatsappCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.WHATSAPPCAPACITY_REQUIRED">WhatsappCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.WHATSAPPCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WhatsappCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.agent.showWebBar == 0">\n        <md-tab-label>\n          <span translate="STAFF.MOTIONBAR">MOTIONBAR</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container settings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SETTINGS">SETTINGS</div>\n            </div>\n            <form name="settingsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableSettings" aria-label="EnableSettings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLESETTINGS">EnableSettings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarAutoAnswer" aria-label="AutoAnswer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AUTOANSWER">AutoAnswer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarAutoAnswer" class="md-block">\n                <label translate="STAFF.AUTOANSWERDELAY">AutoAnswerDelay</label>\n                <input type="number" name="phoneBarAutoAnswerDelay" ng-model="vm.agent.phoneBarAutoAnswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="settingsForm[\'phoneBarAutoAnswerDelay\'].$error" ng-show="settingsForm[\'phoneBarAutoAnswerDelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_REQUIRED">AutoAnswerDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AutoAnswerDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarRingInUse" aria-label="RingInUse" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.RINGINUSE">RingInUse</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableRecording" aria-label="EnableRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLERECORDING">EnableRecording</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableDtmfTone" aria-label="EnableDtmfTone" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEDTMFTONE">EnableDtmfTone</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarDnd" aria-label="Dnd" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DND">Dnd</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarUnansweredCallBadge" aria-label="UnansweredCallBadge" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.UNANSWEREDCALLBADGE">UnansweredCallBadge</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableJaws" aria-label="EnableJawsIntegration" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEJAWSINTEGRATION">EnableJawsIntegration</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0 && vm.license.screenrecording" class="md-block">\n                <md-switch ng-change="vm.onEnableScreenRecordingByAgentSelection()" ng-model="vm.agent.phoneBarEnableScreenRecordingByAgent" aria-label="EnableScreenRecordingByAgent" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLESCREENRECORDINGBYAGENT">EnableScreenRecordingByAgent</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0 && vm.license.screenrecording" class="md-block">\n                <md-switch ng-change="vm.onEnableAutomaticScreenRecordingSelection()" ng-model="vm.agent.phoneBarEnableAutomaticScreenRecording" aria-label="EnableAutomaticScreenRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEAUTOMATICSCREENRECORDING">EnableAutomaticScreenRecording</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.ENABLEAUTOMATICSCREENRECORDING"></span></div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container remote_control md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.REMOTE_CONTROL">REMOTE_CONTROL</div>\n            </div>\n            <form name="remote_controlForm" novalidate>\n              <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarRemoteControl" aria-label="RemoteControl" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.REMOTECONTROL">RemoteControl</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarRemoteControl && vm.agent.showWebBar == 0" class="md-block">\n                <label translate="STAFF.REMOTECONTROLPORT">RemoteControlPort</label>\n                <input type="number" name="phoneBarRemoteControlPort" ng-model="vm.agent.phoneBarRemoteControlPort" value="9888" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="remote_controlForm[\'phoneBarRemoteControlPort\'].$error" ng-show="remote_controlForm[\'phoneBarRemoteControlPort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.REMOTECONTROLPORT_REQUIRED">RemoteControlPort field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container sip md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SIP">SIP</div>\n            </div>\n            <form name="sipForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SIPEXPIRES">SipExpires</label>\n                <input type="number" name="phoneBarExpires" ng-model="vm.agent.phoneBarExpires" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.SIPEXPIRES"></span></div>\n                <div ng-messages="sipForm[\'phoneBarExpires\'].$error" ng-show="sipForm[\'phoneBarExpires\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SIPEXPIRES_REQUIRED">SipExpires field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SIPPORT">SipPort</label>\n                <input type="number" name="phoneBarListenPort" ng-model="vm.agent.phoneBarListenPort" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.SIPPORT"></span></div>\n                <div ng-messages="sipForm[\'phoneBarListenPort\'].$error" ng-show="sipForm[\'phoneBarListenPort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SIPPORT_REQUIRED">SipPort field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container callforwarding md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CALLFORWARDING">CALLFORWARDING</div>\n            </div>\n            <form name="callforwardingForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarUnconditional" aria-label="Unconditional" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.UNCONDITIONAL">Unconditional</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarUnconditional" class="md-block">\n                <label translate="STAFF.UNCONDITIONALNUMBER">UnconditionalNumber</label>\n                <input type="text" name="phoneBarUnconditionalNumber" ng-model="vm.agent.phoneBarUnconditionalNumber" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="callforwardingForm[\'phoneBarUnconditionalNumber\'].$error" ng-show="callforwardingForm[\'phoneBarUnconditionalNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.UNCONDITIONALNUMBER_REQUIRED">UnconditionalNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.agent.showWebBar == 2">\n        <md-tab-label>\n          <span translate="STAFF.WEBRTC">WEBRTC</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container settings_webrtc md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SETTINGS_WEBRTC">SETTINGS_WEBRTC</div>\n            </div>\n            <form name="settings_webrtcForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DTLSCERTFILE">dtlscertfile</label>\n                <input type="text" name="dtlscertfile" ng-model="vm.agent.dtlscertfile" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.DTLSCERTFILE"></span></div>\n                <div ng-messages="settings_webrtcForm[\'dtlscertfile\'].$error" ng-show="settings_webrtcForm[\'dtlscertfile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DTLSCERTFILE_REQUIRED">dtlscertfile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DTLSPRIVATEKEY">dtlsprivatekey</label>\n                <input type="text" name="dtlsprivatekey" ng-model="vm.agent.dtlsprivatekey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.DTLSPRIVATEKEY"></span></div>\n                <div ng-messages="settings_webrtcForm[\'dtlsprivatekey\'].$error" ng-show="settings_webrtcForm[\'dtlsprivatekey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DTLSPRIVATEKEY_REQUIRED">dtlsprivatekey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.WSS_PORT">WSS_Port</label>\n                <input type="number" name="wssPort" ng-model="vm.agent.wssPort" min="0" value="8089" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.WSS_PORT"></span></div>\n                <div ng-messages="settings_webrtcForm[\'wssPort\'].$error" ng-show="settings_webrtcForm[\'wssPort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.WSS_PORT_REQUIRED">WSS_Port field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.WSS_PORT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WSS_Port must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableSettings" aria-label="EnableSettings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLESETTINGS">EnableSettings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarAutoAnswer" aria-label="AutoAnswer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AUTOANSWER">AutoAnswer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarAutoAnswer" class="md-block">\n                <label translate="STAFF.AUTOANSWERDELAY">AutoAnswerDelay</label>\n                <input type="number" name="phoneBarAutoAnswerDelay" ng-model="vm.agent.phoneBarAutoAnswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="settings_webrtcForm[\'phoneBarAutoAnswerDelay\'].$error" ng-show="settings_webrtcForm[\'phoneBarAutoAnswerDelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_REQUIRED">AutoAnswerDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AutoAnswerDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableRecording" aria-label="EnableRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLERECORDING">EnableRecording</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableDtmfTone" aria-label="EnableDtmfTone" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEDTMFTONE">EnableDtmfTone</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarDnd" aria-label="Dnd" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DND">Dnd</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.ignorePauseForPreviewCalls" aria-label="Ignore agent break status for preview calls" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.IGNORE_AGENT_BREAK_STATUS_FOR_PREVIEW_CALLS">Ignore agent break status for preview calls</span></md-switch>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container sip_webrtc md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SIP_WEBRTC">SIP_WEBRTC</div>\n            </div>\n            <form name="sip_webrtcForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SIPEXPIRES">SipExpires</label>\n                <input type="number" name="phoneBarExpires" ng-model="vm.agent.phoneBarExpires" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.SIPEXPIRES"></span></div>\n                <div ng-messages="sip_webrtcForm[\'phoneBarExpires\'].$error" ng-show="sip_webrtcForm[\'phoneBarExpires\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SIPEXPIRES_REQUIRED">SipExpires field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.PERMISSIONS">PERMISSIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container general_permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL_PERMISSIONS">GENERAL_PERMISSIONS</div>\n            </div>\n            <form name="general_permissionsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.allowmessenger" aria-label="EnableMessenger" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEMESSENGER">EnableMessenger</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarPrefixRequired" aria-label="PrefixRequired" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.PREFIXREQUIRED">PrefixRequired</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.selectRecallMeCampaign" aria-label="Select_RecallMe_Campaign" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.SELECT_RECALLME_CAMPAIGN">Select_RecallMe_Campaign</span></md-switch>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container download_permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.DOWNLOAD_PERMISSIONS">DOWNLOAD_PERMISSIONS</div>\n            </div>\n            <form name="download_permissionsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.downloadAttachments" aria-label="Attachments" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ATTACHMENTS">Attachments</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.downloadOmnichannelInteractions" aria-label="Omnichannel_Interactions" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.OMNICHANNEL_INTERACTIONS">Omnichannel_Interactions</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.downloadVoiceRecordings" aria-label="Voice_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.VOICE_RECORDINGS">Voice_Recordings</span></md-switch>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.PERMISSIONS">PERMISSIONS</div>\n            </div>\n            <div ng-controller="AgentPermissionsController as vm_pc" ng-init="vm_pc.init(vm.agent, vm.crudPermissions)" class="agent-detail-form-container">\n              <md-list ng-repeat="father in vm_pc.navigation[0].children" ng-include="\'permission-nested.html\'" ng-if="vm_pc.agent.role !== \'admin\' && !father.hidden()"></md-list>\n\n              \x3c!-- Nested navigation template --\x3e\n              <script type="text/ng-template" id="permission-nested.html">\n                <md-list-item>\n        <md-icon md-font-icon="{{father.icon}}"></md-icon>\n        <p translate="{{father.translate}}">{{ father.title }}</p>\n        <md-switch class="md-secondary" ng-model="father.enabled" ng-change="vm_pc.onChange(father)" ng-init="father.enabled = vm_pc.agent.permissions.includes(father.id)" \n                  ng-disabled="!vm_pc.crudPermissions.canEdit"></md-switch>\n      </md-list-item>\n\n      <md-divider></md-divider>\n\n      <md-list>\n        <md-list-item ng-repeat="child in father.children" ng-if="child.id !== 201">\n          <md-icon ng-if="child.icon" md-font-icon="{{child.icon}}"></md-icon>\n          <p translate="{{child.translate}}">{{ child.title }}</p>\n          <md-switch ng-model="child.enabled" ng-change="vm_pc.onChange(father, child)" ng-init="child.enabled = vm_pc.agent.permissions.includes(child.id)"\n                    ng-disabled="!vm_pc.crudPermissions.canEdit"></md-switch>\n          </md-list-item>\n      </md-list>\n  <\/script>\n              \x3c!-- / Nested navigation template --\x3e\n\n              <span ng-if="vm_pc.agent.role === \'admin\'" class="md-headline" translate="STAFF.ALL_MODULES_AVAILABLE">All modules are already available.</span>\n\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/staff/views/teams/create/dialog.html",'<md-dialog class="team-dialog" aria-label="New Team">\n  <form name="teamForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.team.name" ng-required="true" autofocus>\n\n        <div ng-messages="teamForm[\'name\'].$error" ng-show="teamForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.team.description">\n\n        <div ng-messages="teamForm[\'description\'].$error" ng-show="teamForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTeam" ng-click="vm.saveTeam()" class="send-button md-accent md-raised" ng-disabled="teamForm.$invalid || teamForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTeam" ng-click="vm.addNewTeam()" class="send-button md-accent md-raised" ng-disabled="teamForm.$invalid" aria-label="ADD" translate="STAFF.ADD_TEAM" translate-attr-aria-label="STAFF.ADD_TEAM">\n          ADD TEAM\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTeam" ng-click="vm.deleteTeam($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/teams/edit/agentadd/agentadd.html",'<md-dialog class="team-dialog" aria-label="team" ng-init="vm.onInit()">\n  <form name="teamForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="STAFF.AGENTADD_TEAM">Add Agent to team</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/teams/teams.html",'<div id="teams" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.TEAMS">Teams</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTeams.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTeams =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-teams-count">\n          <span>{{vm.selectedTeams.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTeams()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTeams()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTeams" csv-label="true" filename="teams.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTeams($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TEAM TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTeams" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTeams">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'STAFF.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'STAFF.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.teams.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="team" md-select-id="id" ng-repeat="team in vm.teams.rows">\n                <td md-cell ng-if="team.userpic"><img class="avatar" alt="{{team.name}}" ng-src="api/users/{{team.id}}/avatar" /></td>\n                <td md-cell ng-if="!team.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{team.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTeam($event, team)" md-cell class="id ">{{team.id}}</td>\n                <td ng-click="vm.createOrEditTeam($event, team)" md-cell class="name ">{{team.name}}</td>\n                <td ng-click="vm.createOrEditTeam($event, team)" md-cell class="description ">{{team.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(team, $event    )" translate="STAFF.EDIT_TEAM">\n                          Edit Team\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(team, $event    )" translate="STAFF.AGENTADD_TEAM">\n                          AgentAdd Team\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(team, $event    )" translate="STAFF.DELETE_TEAM">\n                          Delete Team\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.teams.count}}" md-on-paginate="vm.getTeams" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TEAM TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TEAM BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-team-button" ng-click="vm.createOrEditTeam($event)" aria-label="add team" translate translate-attr-aria-label="STAFF.ADD_TEAM">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TEAM BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/telephones/create/dialog.html",'<md-dialog class="telephone-dialog" aria-label="New Telephone">\n  <form name="telephoneForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.ACCOUNTNAME">Accountname</label>\n        <input type="text" name="fullname" ng-model="vm.telephone.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="telephoneForm[\'fullname\'].$error" ng-show="telephoneForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.ACCOUNTNAME_REQUIRED">Accountname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.USERNAME">Username</label>\n        <input type="text" name="name" ng-model="vm.telephone.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" ng-disabled="!vm.newTelephone">\n\n        <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n        <div ng-messages="telephoneForm[\'name\'].$error" ng-show="telephoneForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.telephone.email" ng-required="true">\n\n        <div ng-messages="telephoneForm[\'email\'].$error" ng-show="telephoneForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newTelephone">\n        <label translate="STAFF.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.telephone.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="STAFF.PASSWORD" required>\n        <div ng-messages="telephoneForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newTelephone  && (vm.newTelephone)">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="telephoneForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.telephone.description">\n\n        <div ng-messages="telephoneForm[\'description\'].$error" ng-show="telephoneForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newTelephone" class="md-block">\n        <md-switch ng-model="vm.telephone.autointernal" aria-label="AutoInternal"><span translate="STAFF.AUTOINTERNAL">AutoInternal</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.telephone.autointernal" class="md-block">\n        <label translate="STAFF.INTERNAL">Internal</label>\n        <input type="text" name="internal" ng-model="vm.telephone.internal" ng-required="true" ng-disabled="!vm.newTelephone">\n\n        <div ng-messages="telephoneForm[\'internal\'].$error" ng-show="telephoneForm[\'internal\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newTelephone" class="md-block">\n        <md-switch ng-model="vm.telephone.voicemail" aria-label="Voicemail"><span translate="STAFF.VOICEMAIL">Voicemail</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTelephone" ng-click="vm.saveTelephone()" class="send-button md-accent md-raised" ng-disabled="telephoneForm.$invalid || telephoneForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTelephone" ng-click="vm.addNewTelephone()" class="send-button md-accent md-raised" ng-disabled="telephoneForm.$invalid" aria-label="ADD" translate="STAFF.ADD_TELEPHONE" translate-attr-aria-label="STAFF.ADD_TELEPHONE">\n          ADD TELEPHONE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTelephone" ng-click="vm.deleteTelephone($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/telephones/edit/changepassword/changepassword.html",'<md-dialog class="telephone-dialog" aria-label="{{vm.name}}">\n  <form name="telephoneForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.CHANGE_PASSWORD\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.telephone.id">\n        <label translate="STAFF.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="STAFF.OLD_PASSWORD" required>\n        <div ng-messages="telephoneForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" translate ng-pattern="vm.passwordPattern" translate-attr-placeholder="STAFF.NEW_PASSWORD" required>\n        <div ng-messages="telephoneForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is\n              required</span>\n          </div>\n\n\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain\n              at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric\n              character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="STAFF.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n\n\n\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="telephoneForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is\n              required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did\n              not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="telephoneForm.$invalid || telephoneForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/telephones/edit/view.html",'<div id="staff-telephone" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-telephones-button md-icon-button" aria-label="Go to telephones" ng-click="vm.gotoTelephones()" translate translate-attr-aria-label="STAFF.GO_TO_TELEPHONES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="telephone-image" hide-xs>\n          <img ng-src="assets/images/business/telephones.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.telephone.id}}\n            <span ng-if="vm.telephone.name">{{vm.telephone.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.telephone.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.changepassworddialog(vm.telephone, $event)" class="md-fab md-warn md-icon-button" aria-label="changepassword">\n        <md-tooltip><span translate="STAFF.CHANGEPASSWORD_TELEPHONE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-key-variant"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTelephone()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(accountForm.$invalid) || (generalForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="telephone-detail-form-container account md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.ACCOUNT">ACCOUNT</div>\n            </div>\n            <form name="accountForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ACCOUNTNAME">Accountname</label>\n                <input type="text" name="fullname" ng-model="vm.telephone.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'fullname\'].$error" ng-show="accountForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ACCOUNTNAME_REQUIRED">Accountname field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.USERNAME">Username</label>\n                <input type="text" name="name" ng-model="vm.telephone.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n                <div ng-messages="accountForm[\'name\'].$error" ng-show="accountForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.telephone.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'email\'].$error" ng-show="accountForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.telephone.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'description\'].$error" ng-show="accountForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.telephone.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'phone\'].$error" ng-show="accountForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MOBILE">Mobile</label>\n                <input type="text" name="mobile" ng-model="vm.telephone.mobile" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'mobile\'].$error" ng-show="accountForm[\'mobile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MOBILE_REQUIRED">Mobile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.VOICE">VOICE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="telephone-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container ng-if="!vm.telephone.autointernal" class="md-block">\n                <label translate="STAFF.INTERNAL">Internal</label>\n                <input type="text" name="internal" ng-model="vm.telephone.internal" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'internal\'].$error" ng-show="generalForm[\'internal\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.telephone.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.TRANSPORT"></span></div>\n                <div ng-messages="generalForm[\'transport\'].$error" ng-show="generalForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAT">NAT</label>\n                <md-select name="nat" ng-model="vm.telephone.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAT_REQUIRED">NAT field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.telephone.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLERID">CallerId</label>\n                <input type="text" name="callerid" ng-model="vm.telephone.callerid" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLERID_REQUIRED">CallerId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.telephone.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.telephone.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.CALLGROUP"></span></div>\n                <div ng-messages="generalForm[\'callgroup\'].$error" ng-show="generalForm[\'callgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLGROUP_REQUIRED">Callgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PICKUPGROUP">Pickupgroup</label>\n                <input type="text" name="pickupgroup" ng-model="vm.telephone.pickupgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.PICKUPGROUP"></span></div>\n                <div ng-messages="generalForm[\'pickupgroup\'].$error" ng-show="generalForm[\'pickupgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PICKUPGROUP_REQUIRED">Pickupgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.telephone.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'videosupport\'].$error" ng-show="generalForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ENCRYPTION">Encryption</label>\n                <md-select name="encryption" ng-model="vm.telephone.encryption" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ENCRYPTION"></span></div>\n                <div ng-messages="generalForm[\'encryption\'].$error" ng-show="generalForm[\'encryption\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ENCRYPTION_REQUIRED">Encryption field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/staff/views/telephones/telephones.html",'<div id="telephones" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.TELEPHONES">Telephones</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTelephones.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTelephones =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-telephones-count">\n          <span>{{vm.selectedTelephones.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTelephones()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTelephones()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTelephones" csv-label="true" filename="telephones.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTelephones($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TELEPHONE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTelephones" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTelephones">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.ACCOUNTNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.telephones.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="telephone" md-select-id="id" ng-repeat="telephone in vm.telephones.rows">\n                <td md-cell ng-if="telephone.userpic"><img class="avatar" alt="{{telephone.name}}" ng-src="api/users/{{telephone.id}}/avatar" /></td>\n                <td md-cell ng-if="!telephone.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{telephone.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="fullname font-weight-600">{{telephone.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="name ">{{telephone.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="email ">{{telephone.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="internal ">{{telephone.internal}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(telephone, $event    )" translate="STAFF.EDIT_TELEPHONE">\n                          Edit Telephone\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(telephone, $event    )" translate="STAFF.DELETE_TELEPHONE">\n                          Delete Telephone\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.telephones.count}}" md-on-paginate="vm.getTelephones" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TELEPHONE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TELEPHONE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-telephone-button" ng-click="vm.createOrEditTelephone($event)" aria-label="add telephone" translate translate-attr-aria-label="STAFF.ADD_TELEPHONE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TELEPHONE BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/userProfiles/create/dialog.html",'<md-dialog class="userProfile-dialog" aria-label="New UserProfile">\n  <form name="userProfileForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.userProfile.name" ng-required="true" autofocus ng-disabled="!vm.newUserProfile">\n\n        <div ng-messages="userProfileForm[\'name\'].$error" ng-show="userProfileForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.userProfile.description">\n\n        <div ng-messages="userProfileForm[\'description\'].$error" ng-show="userProfileForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CRUDPERMISSIONS">CrudPermissions</label>\n        <md-select name="crudPermissions" ng-model="vm.userProfile.crudPermissions" multiple required>\n\n          <md-option ng-value="\'r\'" disabled> {{ \'STAFF.READ_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'e\'"> {{ \'STAFF.EDIT_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'d\'"> {{ \'STAFF.DELETE_PERMISSION\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="userProfileForm[\'crudPermissions\'].$error" ng-show="userProfileForm[\'crudPermissions\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CRUDPERMISSIONS_REQUIRED">CrudPermissions field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.userProfile.privacyEnabled" aria-label="Mask_Sensitive_Data"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n        <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newUserProfile" ng-click="vm.saveUserProfile()" class="send-button md-accent md-raised" ng-disabled="userProfileForm.$invalid || userProfileForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newUserProfile" ng-click="vm.addNewUserProfile()" class="send-button md-accent md-raised" ng-disabled="userProfileForm.$invalid" aria-label="ADD" translate="STAFF.ADD_USERPROFILE" translate-attr-aria-label="STAFF.ADD_USERPROFILE">\n          ADD USERPROFILE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newUserProfile" ng-click="vm.deleteUserProfile($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/userProfiles/edit/clone/clone.html",'<md-dialog class="userProfile-dialog" aria-label="Clone UserProfile">\n  <form name="userProfileForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.userProfile.name" ng-required="true" autofocus ng-disabled="!vm.newUserProfile">\n\n        <div ng-messages="userProfileForm[\'name\'].$error" ng-show="userProfileForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.userProfile.description">\n\n        <div ng-messages="userProfileForm[\'description\'].$error" ng-show="userProfileForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CRUDPERMISSIONS">CrudPermissions</label>\n        <md-select name="crudPermissions" ng-model="vm.userProfile.crudPermissions" multiple required>\n\n          <md-option ng-value="\'r\'" disabled> {{ \'STAFF.READ_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'e\'"> {{ \'STAFF.EDIT_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'d\'"> {{ \'STAFF.DELETE_PERMISSION\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="userProfileForm[\'crudPermissions\'].$error" ng-show="userProfileForm[\'crudPermissions\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CRUDPERMISSIONS_REQUIRED">CrudPermissions field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.userProfile.privacyEnabled" aria-label="Mask_Sensitive_Data"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n        <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneUserProfile()" class="send-button md-accent md-raised" ng-disabled="userProfileForm.$invalid" aria-label="CLONE" translate="STAFF.CLONE_USERPROFILE" translate-attr-aria-label="STAFF.CLONE_USERPROFILE">\n        CLONE USERPROFILE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",'<md-dialog class="userProfile-dialog" aria-label="userProfile">\n  <form name="userProfileForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2>{{vm.title}}</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog($event)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div layout="column" class="padding-bottom-10">\n        <div layout="row" class="padding-bottom-10">\n          <md-input-container flex class="no-margin">\n            <label translate="STAFF.SECTIONS">Sections</label>\n            <md-select name="sections" ng-model="vm.selectedSection" placeholder="{{\'STAFF.PERMISSIONS_SELECT_SECTION\' | translate}}" ng-change="vm.onChangeSection()" required>\n              <md-option ng-value="subsection" ng-repeat="subsection in vm.subsections" ng-selected="{{vm.subsections.length === 1 ? \'true\' : \'false\'}}">{{subsection.translate | translate}}</md-option>\n            </md-select>\n          </md-input-container>\n          <div layout="row" ng-show="vm.selectedSection" class="margin-left-10">\n            <md-button ng-switch="vm.selectedSection.enabled" class="md-icon-button md-fab md-mini size-8 padding-10" ng-class="vm.selectedSection.enabled ? \'blue-500-bg\' : \'grey-A400-bg\'" ng-click="vm.onChangeVisibility()" aria-label="Visibility">\n              <md-icon ng-switch-when="true" md-font-icon="icon-eye" aria-label="Visible section">\n                <md-tooltip>{{\'STAFF.PERMISSIONS_SECTION_HIDE\' | translate}}</md-tooltip>\n              </md-icon>\n              <md-icon ng-switch-when="false" md-font-icon="icon-eye-off" aria-label="Hidden section">\n                <md-tooltip>{{\'STAFF.PERMISSIONS_SECTION_SHOW\' | translate}}</md-tooltip>\n              </md-icon>\n            </md-button>\n            <div>\n              <md-button class="md-icon-button md-fab md-mini size-8 green-A700-bg no-margin" ng-disabled="true">\n                <md-icon md-font-icon="icon-monitor" class="md-background-fg" aria-label="Read permission">\n                  <md-tooltip>{{\'STAFF.READ_PERMISSION\' | translate}}</md-tooltip>\n                </md-icon>\n              </md-button>\n              <md-button class="md-icon-button md-fab md-mini size-8 no-margin" ng-class="vm.selectedSection.allowEdit ? \'green-A700-bg\' : \'grey-A400-bg\'" ng-click="vm.setPermission(\'edit\')">\n                <md-icon md-font-icon="icon-pencil" aria-label="Edit permission">\n                  <md-tooltip>{{\'STAFF.EDIT_PERMISSION\' | translate}}</md-tooltip>\n                </md-icon>\n              </md-button>\n              <md-button class="md-icon-button md-fab md-mini size-8 no-margin" ng-class="vm.selectedSection.allowDelete ? \'green-A700-bg\' : \'grey-A400-bg\'" ng-click="vm.setPermission(\'delete\')">\n                <md-icon md-font-icon="icon-delete" aria-label="Delete permission">\n                  <md-tooltip>{{\'STAFF.DELETE_PERMISSION\' | translate}}</md-tooltip>\n                </md-icon>\n              </md-button>\n            </div>\n          </div>\n        </div>\n        <div layout="row" ng-show="vm.selectedSection" class="margin-left-10" ng-if="!vm.selectedSection.permissions || vm.selectedSection.permissions.association">\n          <md-switch ng-model="vm.selectedSection.autoAssociation" class="no-margin padding-right-10" aria-label="Auto association" ng-change="vm.onChangeAutoAssociation()">\n          </md-switch>\n          <p class="no-margin font-size-12 line-height-30">{{\'STAFF.PERMISSIONS_AUTO_ASSOCIATION_INFO\' | translate}}</p>\n        </div>\n        <div layout="row" ng-show="vm.selectedSection && vm.selectedSection.title === \'Reports\' && !vm.selectedSection.autoAssociation" class="margin-bottom-10 margin-top-30" ng-if="!vm.selectedSection.permissions || vm.selectedSection.permissions.association">\n          <md-input-container flex class="no-margin">\n            <label translate="STAFF.REPORT_TYPE">Report Type</label>\n            <md-select name="type" ng-model="vm.selectedSection.reportType" placeholder="{{\'STAFF.PERMISSIONS_SELECT_REPORT_TYPE\' | translate}}" ng-change="vm.onChangeReportType()" required>\n              <md-option ng-value="\'default\'">Default</md-option>\n              <md-option ng-value="\'custom\'">Custom</md-option>\n            </md-select>\n          </md-input-container>\n        </div>\n        <div ng-show="vm.selectedSection && vm.selectedSection.title === \'Dashboards\'" class="user-profile-section-help margin-bottom-10 margin-top-20">\n          <md-icon md-font-icon="icon-help" aria-label="Dashboards help"></md-icon>\n          <span class="no-margin font-size-12 line-height-30" translate="STAFF.HELP.CUSTOM_DASHBOARDS_PERMISSIONS"></span>\n        </div>\n      </div>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" ng-if="!vm.selectedSection.permissions || vm.selectedSection.permissions.association" ng-hide="vm.selectedSection.autoAssociation"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center">\n      <div>\n        <md-icon md-font-icon="icon-information-outline" aria-label="Delete permission"></md-icon>\n        <span class="no-margin font-size-12 line-height-30" translate="STAFF.HELP.SAVE_PERMISSIONS"></span>\n      </div>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveSection()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/userProfiles/edit/view.html",'<div id="staff-userProfile" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-userProfiles-button md-icon-button" aria-label="Go to userProfiles" ng-click="vm.gotoUserProfiles()" translate translate-attr-aria-label="STAFF.GO_TO_USERPROFILES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="userProfile-image" hide-xs>\n          <img ng-src="assets/images/business/userProfiles.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.userProfile.id}}\n            <span ng-if="vm.userProfile.name">{{vm.userProfile.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.userProfile.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.userProfile, $event)" class="md-fab md-amber-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="STAFF.CLONE_USERPROFILE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveUserProfile()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (modulesForm.$invalid) || (download_permissionsForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="userProfile-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.userProfile.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.userProfile.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CRUDPERMISSIONS">CrudPermissions</label>\n                <md-select name="crudPermissions" ng-model="vm.userProfile.crudPermissions" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'r\'" disabled> {{ \'STAFF.READ_PERMISSION\' | translate }} </md-option>\n\n                  <md-option ng-value="\'e\'"> {{ \'STAFF.EDIT_PERMISSION\' | translate }} </md-option>\n\n                  <md-option ng-value="\'d\'"> {{ \'STAFF.DELETE_PERMISSION\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'crudPermissions\'].$error" ng-show="generalForm[\'crudPermissions\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CRUDPERMISSIONS_REQUIRED">CrudPermissions field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.privacyEnabled" aria-label="Mask_Sensitive_Data" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.PERMISSIONS">PERMISSIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="userProfile-detail-form-container modules md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.MODULES">MODULES</div>\n            </div>\n            <div ng-controller="UserProfilePermissionsController as vm_pc" ng-init="vm_pc.init(vm.userProfile, vm.license)" class="userProfile-detail-form-container">\n              <md-grid-list flex md-cols-gt-xs="2" md-cols-gt-sm="2" md-cols-gt-md="4" md-cols-gt-lg="6" md-row-height-gt-xs="2:1" md-row-height-gt-sm="3:1" md-row-height-gt-md="3:1" gt-xs-gutter="4px" gt-sm-gutter="4px" gt-md-gutter="16px" gt-lg-gutter="16px">\n                <md-grid-tile ng-repeat="father in vm_pc.modules" ng-if="vm_pc.userProfile.role !== \'admin\' && !father.permissions.hidden" md-colspan="2">\n                  <md-card flex-xs flex-gt-xs="90" layout="column" no-padding no-margin>\n                    <md-card-header>\n                      <md-card-avatar>\n                        <md-icon class="md-avatar-icon auto-size" md-font-icon="{{father.icon}}" ng-class="{ true: father.status.color }[true]">\n                          <md-tooltip>{{ father.status.info }}</md-tooltip>\n                        </md-icon>\n                      </md-card-avatar>\n                      <md-card-header-text layout-align="center start">\n                        <span class="md-title" translate="{{father.translate}}">{{ father.title }}</span>\n                      </md-card-header-text>\n                      <md-card-actions class="no-margin" layout="row" ng-init="vm_pc.checkSectionResources(father)" ng-if="father.status.tag != \'unlicensed\'">\n                        <md-switch class="auto-height no-margin" ng-model="father.allResourcesEnabled" ng-change="vm_pc.onChangeEnableAllResources(father)" aria-label="Enable all"></md-switch>\n                        <md-button class="md-mini auto-width" aria-label="Manage" ng-click="vm_pc.manageResources(father)" ng-hide="father.permissions && !father.permissions.association">\n                          <md-tooltip>{{\'STAFF.PERMISSIONS_MANAGE\' | translate}}\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-cog"></md-icon>\n                        </md-button>\n                      </md-card-actions>\n                      <md-card-header-text ng-if="father.status.tag === \'unlicensed\'" layout-align="center end">\n                        <span class="md-subhead red-A700-fg">{{ father.status.name }}</span>\n                      </md-card-header-text>\n                    </md-card-header>\n                  </md-card>\n                </md-grid-tile>\n              </md-grid-list>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.DOWNLOADS">DOWNLOADS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="userProfile-detail-form-container download_permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.DOWNLOAD_PERMISSIONS">DOWNLOAD_PERMISSIONS</div>\n            </div>\n            <form name="download_permissionsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadAttachments" aria-label="Attachments" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ATTACHMENTS">Attachments</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadCallySquareRecordings" aria-label="CallySquare_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.CALLYSQUARE_RECORDINGS">CallySquare_Recordings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadContactManagerLists" aria-label="Contact_Manager_Lists" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.CONTACT_MANAGER_LISTS">Contact_Manager_Lists</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadJscriptySessions" aria-label="Jscripty_Sessions" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.JSCRIPTY_SESSIONS">Jscripty_Sessions</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadOmnichannelInteractions" aria-label="Omnichannel_Interactions" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.OMNICHANNEL_INTERACTIONS">Omnichannel_Interactions</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadScreenRecordings" aria-label="Screen_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.SCREEN_RECORDINGS">Screen_Recordings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadVoiceRecordings" aria-label="Voice_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.VOICE_RECORDINGS">Voice_Recordings</span></md-switch>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/staff/views/userProfiles/userProfiles.html",'<div id="userProfiles" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.USERPROFILES">UserProfiles</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedUserProfiles.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedUserProfiles =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-userProfiles-count">\n          <span>{{vm.selectedUserProfiles.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllUserProfiles()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectUserProfiles()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedUserProfiles" csv-label="true" filename="userProfiles.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedUserProfiles($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- USERPROFILE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedUserProfiles" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getUserProfiles">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'STAFF.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'STAFF.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="crudPermissions">{{ \'STAFF.CRUDPERMISSIONS\' | translate }}</th>\n                <th md-column md-order-by="privacyEnabled">{{ \'STAFF.MASK_SENSITIVE_DATA\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.userProfiles.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="userProfile" md-select-id="id" ng-repeat="userProfile in vm.userProfiles.rows">\n                <td md-cell ng-if="userProfile.userpic"><img class="avatar" alt="{{userProfile.name}}" ng-src="api/users/{{userProfile.id}}/avatar" /></td>\n                <td md-cell ng-if="!userProfile.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{userProfile.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="id ">{{userProfile.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="name ">{{userProfile.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="description ">{{userProfile.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="crudPermissions ">{{userProfile.selectedcrudPermissions}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="privacyEnabled ">\n                  <md-icon md-colors="{color: {{userProfile.privacyEnabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{userProfile.privacyEnabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(userProfile, $event    )" translate="STAFF.EDIT_USERPROFILE">\n                          Edit UserProfile\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(userProfile, $event    )" translate="STAFF.CLONE_USERPROFILE">\n                          clone UserProfile\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' && user.id !== vm.currentUser.id">\n\n                        <md-button ng-click="vm.deleteconfirm(userProfile, $event    )" translate="STAFF.DELETE_USERPROFILE">\n                          Delete UserProfile\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.userProfiles.count}}" md-on-paginate="vm.getUserProfiles" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / USERPROFILE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USERPROFILE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-userProfile-button" ng-click="vm.createOrEditUserProfile($event)" aria-label="add userProfile" translate translate-attr-aria-label="STAFF.ADD_USERPROFILE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD USERPROFILE BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/users/create/dialog.html",'<md-dialog class="user-dialog" aria-label="New User">\n  <form name="userForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.ROLE">Role</label>\n        <md-select name="role" ng-model="vm.user.role" autofocus required ng-disabled="!vm.newUser">\n          <md-option ng-value="\'admin\'">Admin</md-option>\n          <md-option ng-value="\'user\'">User</md-option>\n        </md-select>\n        <div ng-messages="userForm[\'role\'].$error" ng-show="userForm[\'role\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.ROLE_REQUIRED">Role field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.user.role === \'user\'" class="md-block">\n        <label translate="STAFF.USERPROFILE">UserProfile</label>\n        <md-select name="userProfileId" ng-model="vm.user.userProfileId" required>\n          <md-option ng-value="userProfileId.id" ng-repeat="userProfileId in vm.userProfiles" ng-disabled="userProfileId.canSelect === false">{{ userProfileId.name }}</md-option>\n        </md-select>\n        <div ng-messages="userForm[\'userProfileId\'].$error" ng-show="userForm[\'userProfileId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERPROFILE_REQUIRED">UserProfile field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.FULLNAME">Fullname</label>\n        <input type="text" name="fullname" ng-model="vm.user.fullname" ng-required="true">\n\n        <div ng-messages="userForm[\'fullname\'].$error" ng-show="userForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.USERNAME">Username</label>\n        <input type="text" name="name" ng-model="vm.user.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" ng-disabled="!vm.newUser">\n\n        <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n        <div ng-messages="userForm[\'name\'].$error" ng-show="userForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.user.email" ng-required="true">\n\n        <div ng-messages="userForm[\'email\'].$error" ng-show="userForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newUser">\n        <label translate="STAFF.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.user.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="STAFF.PASSWORD" required>\n        <div ng-messages="userForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newUser  && (vm.newUser)">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="userForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.user.description">\n\n        <div ng-messages="userForm[\'description\'].$error" ng-show="userForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newUser" class="md-block">\n        <md-switch ng-model="vm.user.autointernal" aria-label="AutoInternal"><span translate="STAFF.AUTOINTERNAL">AutoInternal</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.user.autointernal" class="md-block">\n        <label translate="STAFF.INTERNAL">Internal</label>\n        <input type="text" name="internal" ng-model="vm.user.internal" ng-required="true" ng-disabled="!vm.newUser">\n\n        <div ng-messages="userForm[\'internal\'].$error" ng-show="userForm[\'internal\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newUser" ng-click="vm.saveUser()" class="send-button md-accent md-raised" ng-disabled="userForm.$invalid || userForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newUser" ng-click="vm.addNewUser()" class="send-button md-accent md-raised" ng-disabled="userForm.$invalid" aria-label="ADD" translate="STAFF.ADD_USER" translate-attr-aria-label="STAFF.ADD_USER">\n          ADD USER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newUser" ng-click="vm.deleteUser($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/users/edit/apikeymanager/apikeymanager.html",'<md-dialog class="user-dialog" aria-label="{{vm.name}}">\n  <form name="userForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.MANAGE_API_KEY\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-card layout-fill layout-padding>\n      <textarea class="api-key-area" ng-model="vm.user.apiKey" rows="6" disabled></textarea>\n    </md-card>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.generateApiKey()" class="send-button md-accent md-raised" aria-label="Generate" translate="{{ vm.user.apiKey === \'N/A\' ? \'STAFF.GENERATE\' : \'STAFF.REGENERATE\' }}" translate-attr-aria-label="STAFF.GENERATE">\n          Generate\n        </md-button>\n        <md-button type="submit" ng-click="vm.removeApiKey()" class="send-button md-accent md-raised" aria-label="Remove" translate="STAFF.REMOVE" translate-attr-aria-label="STAFF.DELETE">\n          Delete\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/users/edit/changepassword/changepassword.html",'<md-dialog class="user-dialog" aria-label="{{vm.name}}">\n  <form name="userForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.CHANGE_PASSWORD\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.user.id">\n        <label translate="STAFF.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="STAFF.OLD_PASSWORD" required>\n        <div ng-messages="userForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" translate ng-pattern="vm.passwordPattern" translate-attr-placeholder="STAFF.NEW_PASSWORD" required>\n        <div ng-messages="userForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is\n              required</span>\n          </div>\n\n\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain\n              at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric\n              character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="STAFF.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n\n\n\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="userForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is\n              required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did\n              not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="userForm.$invalid || userForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/users/edit/view.html",'<div id="staff-user" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-users-button md-icon-button" aria-label="Go to users" ng-click="vm.gotoUsers()" translate translate-attr-aria-label="STAFF.GO_TO_USERS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="user-image" hide-xs>\n          <img ng-src="assets/images/business/users.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.user.id}}\n            <span ng-if="vm.user.name">{{vm.user.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.user.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.apikeymanagerdialog(vm.user, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="apikeymanager">\n        <md-tooltip><span translate="STAFF.APIKEYMANAGER_USER"></span></md-tooltip>\n        <md-icon md-font-icon="fab fa-hubspot"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.changepassworddialog(vm.user, $event)" class="md-fab md-warn md-icon-button" aria-label="changepassword">\n        <md-tooltip><span translate="STAFF.CHANGEPASSWORD_USER"></span></md-tooltip>\n        <md-icon md-font-icon="icon-key-variant"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveUser()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(personal_infoForm.$invalid) || (security_suiteForm.$invalid) || (change_avatarForm.$invalid) || (generalForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="user-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.PERSONAL_INFO">PERSONAL_INFO</div>\n            </div>\n            <form name="personal_infoForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ROLE">Role</label>\n                <md-select name="role" ng-model="vm.user.role" autofocus required disabled>\n                  <md-option ng-value="\'admin\'">Admin</md-option>\n                  <md-option ng-value="\'user\'">User</md-option>\n                </md-select>\n                <div ng-messages="personal_infoForm[\'role\'].$error" ng-show="personal_infoForm[\'role\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ROLE_REQUIRED">Role field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.role === \'user\'" class="md-block">\n                <label translate="STAFF.USERPROFILE">UserProfile</label>\n                <md-select name="userProfileId" ng-model="vm.user.userProfileId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="userProfileId.id" ng-repeat="userProfileId in vm.userProfiles" ng-disabled="userProfileId.canSelect === false">{{ userProfileId.name }}</md-option>\n                </md-select>\n                <div ng-messages="personal_infoForm[\'userProfileId\'].$error" ng-show="personal_infoForm[\'userProfileId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERPROFILE_REQUIRED">UserProfile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.FULLNAME">Fullname</label>\n                <input type="text" name="fullname" ng-model="vm.user.fullname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'fullname\'].$error" ng-show="personal_infoForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.USERNAME">Username</label>\n                <input type="text" name="name" ng-model="vm.user.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n                <div ng-messages="personal_infoForm[\'name\'].$error" ng-show="personal_infoForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.user.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'email\'].$error" ng-show="personal_infoForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.user.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'phone\'].$error" ng-show="personal_infoForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MOBILE">Mobile</label>\n                <input type="text" name="mobile" ng-model="vm.user.mobile" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'mobile\'].$error" ng-show="personal_infoForm[\'mobile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MOBILE_REQUIRED">Mobile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.user.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'description\'].$error" ng-show="personal_infoForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="user-detail-form-container security_suite md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SECURITY_SUITE">SECURITY_SUITE</div>\n            </div>\n            <form name="security_suiteForm" novalidate>\n              <md-input-container ng-if="vm.user.passwordResetAt != null" class="md-block">\n                <label translate="STAFF.LAST_PASSWORD_RESET_AT">Last_Password_Reset_At</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.user.passwordResetAt" autofocus disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.LAST_PASSWORD_RESET_AT"></span></div>\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.LAST_PASSWORD_RESET_AT_REQUIRED">Last_Password_Reset_At field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.passwordResetAt == null" class="md-block">\n                <label translate="STAFF.NO_PASSWORD_CHANGE">No_Password_Change</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.user.passwordResetAt" disabled>\n\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NO_PASSWORD_CHANGE_REQUIRED">No_Password_Change field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.APIKEY">ApiKey</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-apiKey" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: \'API Key copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-apiKey" name="apiKey" ng-model="vm.user.apiKey" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="STAFF.HELP.APIKEY"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.id != vm.currentUser.id && vm.currentUser.role == \'admin\'" class="md-block">\n                <md-switch ng-model="vm.user.disabled" aria-label="Disabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DISABLED">Disabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.DISABLED"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.id != vm.currentUser.id && vm.currentUser.role == \'admin\' && vm.user.disabled == 0" class="md-block">\n                <md-switch ng-model="vm.user.blocked" aria-label="Blocked" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.BLOCKED">Blocked</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.BLOCKED"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="user-detail-form-container change_avatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CHANGE_AVATAR">CHANGE_AVATAR</div>\n            </div>\n            <div ng-controller="Userchange_avatarController as vm_ca" ng-init="vm_ca.init(vm.user, vm.crudPermissions)" class="user-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="user-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="change_avatarimage in vm_ca.user.images" ng-switch="change_avatarimage.type">\n                    <div class="user-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{change_avatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="change_avatarimage.file">\n                    </div>\n\n                    <div class="user-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{change_avatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.VOICE">VOICE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="user-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container ng-if="!vm.user.autointernal" class="md-block">\n                <label translate="STAFF.INTERNAL">Internal</label>\n                <input type="text" name="internal" ng-model="vm.user.internal" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'internal\'].$error" ng-show="generalForm[\'internal\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.user.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'transport\'].$error" ng-show="generalForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAT">NAT</label>\n                <md-select name="nat" ng-model="vm.user.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAT_REQUIRED">NAT field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.user.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.user.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.user.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.CALLGROUP"></span></div>\n                <div ng-messages="generalForm[\'callgroup\'].$error" ng-show="generalForm[\'callgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLGROUP_REQUIRED">Callgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PICKUPGROUP">Pickupgroup</label>\n                <input type="text" name="pickupgroup" ng-model="vm.user.pickupgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.PICKUPGROUP"></span></div>\n                <div ng-messages="generalForm[\'pickupgroup\'].$error" ng-show="generalForm[\'pickupgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PICKUPGROUP_REQUIRED">Pickupgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.APIKEY">ApiKey</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-apiKey" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: \'API Key copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-apiKey" name="apiKey" ng-model="vm.user.apiKey" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="STAFF.HELP.APIKEY"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.user.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'videosupport\'].$error" ng-show="generalForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/staff/views/users/users.html",'<div id="users" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.USERS">Users</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedUsers.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedUsers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-users-count">\n          <span>{{vm.selectedUsers.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllUsers()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectUsers()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedUsers" csv-label="true" filename="users.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- USER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedUsers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getUsers">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="role">{{ \'STAFF.ROLE\' | translate }}</th>\n                <th md-column md-order-by="userProfileId">{{ \'STAFF.USERPROFILE\' | translate }}</th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'STAFF.PHONE\' | translate }}</th>\n                <th md-column md-order-by="mobile">{{ \'STAFF.MOBILE\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column md-order-by="disabled">{{ \'STAFF.DISABLED\' | translate }}</th>\n                <th md-column md-order-by="blocked">{{ \'STAFF.BLOCKED\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.users.rows.length">\n                <td md-cell colspan="11">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="user" md-select-id="id" ng-repeat="user in vm.users.rows">\n                <td md-cell ng-if="user.userpic"><img class="avatar" alt="{{user.name}}" ng-src="api/users/{{user.id}}/avatar" /></td>\n                <td md-cell ng-if="!user.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{user.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="role ">{{ vm.arrayrole[user.role].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="userProfileId font-weight-600">{{ (vm.userProfiles | filter : {\'id\':user.userProfileId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="fullname font-weight-600">{{user.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="name ">{{user.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="email ">{{user.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="phone ">{{user.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="mobile ">{{user.mobile}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="internal ">{{user.internal}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="disabled ">\n                  <md-icon md-colors="{color: {{user.disabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{user.disabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="blocked ">\n                  <md-icon md-colors="{color: {{user.blocked ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{user.blocked ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(user, $event    )" translate="STAFF.EDIT_USER">\n                          Edit User\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' && user.id !== vm.currentUser.id">\n\n                        <md-button ng-click="vm.deleteconfirm(user, $event    )" translate="STAFF.DELETE_USER">\n                          Delete User\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.users.count}}" md-on-paginate="vm.getUsers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / USER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-user-button" ng-click="vm.createOrEditUser($event)" aria-label="add user" translate translate-attr-aria-label="STAFF.ADD_USER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD USER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/cannedAnswers/cannedAnswers.html",'<div id="cannedAnswers" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.CANNEDANSWERS">CannedAnswers</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCannedAnswers.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCannedAnswers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-cannedAnswers-count">\n          <span>{{vm.selectedCannedAnswers.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCannedAnswers()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCannedAnswers()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCannedAnswers" csv-label="true" filename="cannedAnswers.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CANNEDANSWER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCannedAnswers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCannedAnswers">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'TOOLS.KEY\' | translate }}</th>\n                <th md-column md-order-by="value">{{ \'TOOLS.VALUE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.cannedAnswers.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="cannedAnswer" md-select-id="id" ng-repeat="cannedAnswer in vm.cannedAnswers.rows">\n                <td md-cell ng-if="cannedAnswer.userpic"><img class="avatar" alt="{{cannedAnswer.name}}" ng-src="api/users/{{cannedAnswer.id}}/avatar" /></td>\n                <td md-cell ng-if="!cannedAnswer.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{cannedAnswer.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="id ">{{cannedAnswer.id}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="key ">{{cannedAnswer.key}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="value ">{{cannedAnswer.value}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="description ">{{cannedAnswer.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(cannedAnswer, $event    )" translate="TOOLS.EDIT_CANNEDANSWER">\n                          Edit CannedAnswer\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(cannedAnswer, $event    )" translate="TOOLS.DELETE_CANNEDANSWER">\n                          Delete CannedAnswer\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.cannedAnswers.count}}" md-on-paginate="vm.getCannedAnswers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CANNEDANSWER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CANNEDANSWER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-cannedAnswer-button" ng-click="vm.createOrEditCannedAnswer($event)" aria-label="add cannedAnswer" translate translate-attr-aria-label="TOOLS.ADD_CANNEDANSWER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CANNEDANSWER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/cannedAnswers/create/dialog.html",'<md-dialog class="cannedAnswer-dialog" aria-label="New CannedAnswer">\n  <form name="cannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.cannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="cannedAnswerForm[\'key\'].$error" ng-show="cannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 255}\'>Key must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.cannedAnswer.value" required></textarea>\n\n        <div ng-messages="cannedAnswerForm[\'value\'].$error" ng-show="cannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.cannedAnswer.description">\n\n        <div ng-messages="cannedAnswerForm[\'description\'].$error" ng-show="cannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCannedAnswer" ng-click="vm.saveCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="cannedAnswerForm.$invalid || cannedAnswerForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCannedAnswer" ng-click="vm.addNewCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="cannedAnswerForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_CANNEDANSWER" translate-attr-aria-label="TOOLS.ADD_CANNEDANSWER">\n          ADD CANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCannedAnswer" ng-click="vm.deleteCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/create/dialog.html",'<md-dialog class="customDashboard-dialog" aria-label="New CustomDashboard">\n  <form name="customDashboardForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus>\n\n        <div ng-messages="customDashboardForm[\'name\'].$error" ng-show="customDashboardForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.customDashboard.description">\n\n        <div ng-messages="customDashboardForm[\'description\'].$error" ng-show="customDashboardForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomDashboard" ng-click="vm.saveCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid || customDashboardForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomDashboard" ng-click="vm.addNewCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_CUSTOMDASHBOARD" translate-attr-aria-label="TOOLS.ADD_CUSTOMDASHBOARD">\n          ADD CUSTOMDASHBOARD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomDashboard" ng-click="vm.deleteCustomDashboard($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/customDashboards.html",'<div id="customDashboards" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.CUSTOMDASHBOARDS">CustomDashboards</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCustomDashboards.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCustomDashboards =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-customDashboards-count">\n          <span>{{vm.selectedCustomDashboards.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCustomDashboards()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCustomDashboards()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCustomDashboards" csv-label="true" filename="customDashboards.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCustomDashboards($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CUSTOMDASHBOARD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCustomDashboards" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCustomDashboards">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.customDashboards.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="customDashboard" md-select-id="id" ng-repeat="customDashboard in vm.customDashboards.rows">\n                <td md-cell ng-if="customDashboard.userpic"><img class="avatar" alt="{{customDashboard.name}}" ng-src="api/users/{{customDashboard.id}}/avatar" /></td>\n                <td md-cell ng-if="!customDashboard.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{customDashboard.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="id ">{{customDashboard.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="name ">{{customDashboard.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="description ">{{customDashboard.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(customDashboard, $event    )" translate="TOOLS.EDIT_CUSTOMDASHBOARD">\n                          Edit CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(customDashboard, $event    )" translate="TOOLS.CLONE_CUSTOMDASHBOARD">\n                          clone CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotodashboardgoto(customDashboard, $event    )" translate="TOOLS.GOTODASHBOARD_CUSTOMDASHBOARD">\n                          goToDashboard CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(customDashboard, $event    )" translate="TOOLS.DELETE_CUSTOMDASHBOARD">\n                          Delete CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.customDashboards.count}}" md-on-paginate="vm.getCustomDashboards" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CUSTOMDASHBOARD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CUSTOMDASHBOARD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-customDashboard-button" ng-click="vm.createOrEditCustomDashboard($event)" aria-label="add customDashboard" translate translate-attr-aria-label="TOOLS.ADD_CUSTOMDASHBOARD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CUSTOMDASHBOARD BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/customDashboards/edit/clone/clone.html",'<md-dialog class="customDashboard-dialog" aria-label="Clone CustomDashboard">\n  <form name="customDashboardForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus>\n\n        <div ng-messages="customDashboardForm[\'name\'].$error" ng-show="customDashboardForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid" aria-label="CLONE" translate="TOOLS.CLONE_CUSTOMDASHBOARD" translate-attr-aria-label="TOOLS.CLONE_CUSTOMDASHBOARD">\n        CLONE CUSTOMDASHBOARD\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/edit/dashboard/dialog.html",'<md-dialog class="dashboarditem-dialog" aria-label="New DashboardItem">\n  <form name="dashboarditemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.dashboarditem.type" autofocus ng-disabled="!vm.newDashboardItem">\n\n          <md-option ng-value="\'counter\'"> {{ \'TOOLS.COUNTER\' | translate }} </md-option>\n\n          <md-option ng-value="\'multibar-chart\'"> {{ \'TOOLS.MULTIBARCHART\' | translate }} </md-option>\n\n          <md-option ng-value="\'pie-chart\'"> {{ \'TOOLS.PIECHART\' | translate }} </md-option>\n\n          <md-option ng-value="\'web-report\'"> {{ \'TOOLS.WEBREPORT\' | translate }} </md-option>\n\n          <md-option ng-value="\'iframe\'"> {{ \'TOOLS.IFRAME\' | translate }} </md-option>\n\n          <md-option ng-value="\'clock\'"> {{ \'TOOLS.CLOCK\' | translate }} </md-option>\n\n          <md-option ng-value="\'custom\'"> {{ \'TOOLS.CUSTOMTYPE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'type\'].$error" ng-show="dashboarditemForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TITLE">Title</label>\n        <input type="text" name="title" ng-model="vm.dashboarditem.title" md-maxlength="255" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'title\'].$error" ng-show="dashboarditemForm[\'title\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TITLE_REQUIRED">Title field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.TITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>Title must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TITLEFONTSIZE">TitleFontSize</label>\n        <input type="number" name="titleFontSize" ng-model="vm.dashboarditem.titleFontSize" value="12">\n\n        <div ng-messages="dashboarditemForm[\'titleFontSize\'].$error" ng-show="dashboarditemForm[\'titleFontSize\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TITLEFONTSIZE_REQUIRED">TitleFontSize field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'iframe\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="attrUrl" ng-model="vm.dashboarditem.attrUrl" value="https://" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrUrl\'].$error" ng-show="dashboarditemForm[\'attrUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'custom\'" class="md-block">\n        <label translate="TOOLS.PATH">Path</label>\n        <input type="text" name="attrPath" ng-model="vm.dashboarditem.attrPath" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrPath\'].$error" ng-show="dashboarditemForm[\'attrPath\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PATH_REQUIRED">Path field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'clock\'" class="md-block">\n        <label translate="TOOLS.FORMAT">Format</label>\n        <input type="text" name="attrHourFormat" ng-model="vm.dashboarditem.attrHourFormat" value="HH:mm:ss" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrHourFormat\'].$error" ng-show="dashboarditemForm[\'attrHourFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FORMAT_REQUIRED">Format field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'clock\'" class="md-block">\n        <label translate="TOOLS.TIMEZONE">Timezone</label>\n        <md-select name="attrTimezone" ng-model="vm.dashboarditem.attrTimezone" required>\n          <md-option ng-value="\'-12.00\'">GMT-12.00</md-option>\n          <md-option ng-value="\'-11.00\'">GMT-11.00</md-option>\n          <md-option ng-value="\'-10.00\'">GMT-10.00</md-option>\n          <md-option ng-value="\'-9.00\'">GMT-9.00</md-option>\n          <md-option ng-value="\'-8.00\'">GMT-8.00</md-option>\n          <md-option ng-value="\'-7.00\'">GMT-7.00</md-option>\n          <md-option ng-value="\'-6.00\'">GMT-6.00</md-option>\n          <md-option ng-value="\'-5.00\'">GMT-5.00</md-option>\n          <md-option ng-value="\'-4.00\'">GMT-4.00</md-option>\n          <md-option ng-value="\'-3.30\'">GMT-3.30</md-option>\n          <md-option ng-value="\'-3.00\'">GMT-3.00</md-option>\n          <md-option ng-value="\'-2.00\'">GMT-2.00</md-option>\n          <md-option ng-value="\'-1.00\'">GMT-1.00</md-option>\n          <md-option ng-value="\'0.00\'">GMT 0.00</md-option>\n          <md-option ng-value="\'1.00\'">GMT+1.00</md-option>\n          <md-option ng-value="\'2.00\'">GMT+2.00</md-option>\n          <md-option ng-value="\'3.00\'">GMT+3.00</md-option>\n          <md-option ng-value="\'3.30\'">GMT+3.30</md-option>\n          <md-option ng-value="\'4.00\'">GMT+4.00</md-option>\n          <md-option ng-value="\'4.30\'">GMT+4.30</md-option>\n          <md-option ng-value="\'5.00\'">GMT+5.00</md-option>\n          <md-option ng-value="\'5.30\'">GMT+5.30</md-option>\n          <md-option ng-value="\'5.45\'">GMT+5.45</md-option>\n          <md-option ng-value="\'6.00\'">GMT+6.00</md-option>\n          <md-option ng-value="\'6.30\'">GMT+6.30</md-option>\n          <md-option ng-value="\'7.00\'">GMT+7.00</md-option>\n          <md-option ng-value="\'8.00\'">GMT+8.00</md-option>\n          <md-option ng-value="\'9.00\'">GMT+9.00</md-option>\n          <md-option ng-value="\'9.30\'">GMT+9.30</md-option>\n          <md-option ng-value="\'10.00\'">GMT+10.00</md-option>\n          <md-option ng-value="\'11.00\'">GMT+11.00</md-option>\n          <md-option ng-value="\'12.00\'">GMT+12.00</md-option>\n          <md-option ng-value="\'13.00\'">GMT+13.00</md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrTimezone\'].$error" ng-show="dashboarditemForm[\'attrTimezone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'counter\'" class="md-block">\n        <label translate="TOOLS.METRIC">Metric</label>\n        <md-select name="attrMetric" ng-model="vm.dashboarditem.attrMetric" required>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrMetric\'].$error" ng-show="dashboarditemForm[\'attrMetric\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE1">Serie1</label>\n        <md-select name="attrSerie1" ng-model="vm.dashboarditem.attrSerie1" required>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie1\'].$error" ng-show="dashboarditemForm[\'attrSerie1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE1_REQUIRED">Serie1 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE2">Serie2</label>\n        <md-select name="attrSerie2" ng-model="vm.dashboarditem.attrSerie2">\n\n          <md-option ng-value="\'null\'"> {{ \'TOOLS.NONE\' | translate }} </md-option>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie2\'].$error" ng-show="dashboarditemForm[\'attrSerie2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE2_REQUIRED">Serie2 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE3">Serie3</label>\n        <md-select name="attrSerie3" ng-model="vm.dashboarditem.attrSerie3">\n\n          <md-option ng-value="\'null\'"> {{ \'TOOLS.NONE\' | translate }} </md-option>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie3\'].$error" ng-show="dashboarditemForm[\'attrSerie3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE3_REQUIRED">Serie3 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'web-report\'" class="md-block">\n        <label translate="TOOLS.REPORT">Report</label>\n        <input type="search" name="report" ng-model="vm.dashboarditem.report" ng-required="true" autocomplete="off" ng-click="vm.searchReport()">\n        <md-icon md-font-icon="icon-magnify" ng-click="vm.searchReport()" aria-label="Search Report"></md-icon>\n        <div ng-messages="dashboarditemForm[\'report\'].$error" ng-show="dashboarditemForm[\'report\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REPORT_REQUIRED">Report field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'web-report\'" class="md-block">\n        <label translate="TOOLS.REFRESH">Refresh</label>\n        <input type="number" name="attrRefresh" ng-model="vm.dashboarditem.attrRefresh" min="5" value="10" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrRefresh\'].$error" ng-show="dashboarditemForm[\'attrRefresh\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REFRESH_REQUIRED">Refresh field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.REFRESH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Refresh must be a valid greater or equal than</span> <span>5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\', \'counter\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.FILTERVOICEQUEUES">FilterVoiceQueues</label>\n        <md-select name="attrVoiceQueues" ng-model="vm.dashboarditem.attrVoiceQueues" multiple>\n          <md-option ng-value="attrVoiceQueues.id" ng-repeat="attrVoiceQueues in vm.voiceQueues" ng-disabled="attrVoiceQueues.canSelect === false">{{ attrVoiceQueues.name }}</md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrVoiceQueues\'].$error" ng-show="dashboarditemForm[\'attrVoiceQueues\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FILTERVOICEQUEUES_REQUIRED">FilterVoiceQueues field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'counter\', \'clock\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.FONTSIZE">FontSize</label>\n        <input type="number" name="attrFontSize" ng-model="vm.dashboarditem.attrFontSize" min="12" max="40" value="20" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrFontSize\'].$error" ng-show="dashboarditemForm[\'attrFontSize\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FONTSIZE_REQUIRED">FontSize field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">FontSize must be a valid greater or equal than</span> <span>12</span>\n          </div>\n          <div ng-message="max">\n            <span translate="TOOLS.ERRORS.FONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">FontSize must be a valid greater or equal than</span> <span>40</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div flex md-color-picker ng-model="vm.dashboarditem.foreground" label="{{\'TOOLS.FOREGROUND\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n      <div flex md-color-picker ng-model="vm.dashboarditem.background" label="{{\'TOOLS.BACKGROUND\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LINK">link</label>\n        <input type="url" name="link" ng-model="vm.dashboarditem.link">\n\n        <div ng-messages="dashboarditemForm[\'link\'].$error" ng-show="dashboarditemForm[\'link\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LINK_REQUIRED">link field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.LINK_MUST_VALID_URL">link must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDashboardItem" ng-click="vm.saveDashboardItem()" class="send-button md-accent md-raised" ng-disabled="dashboarditemForm.$invalid || dashboarditemForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDashboardItem" ng-click="vm.addNewDashboardItem()" class="send-button md-accent md-raised" ng-disabled="dashboarditemForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_DASHBOARDITEM" translate-attr-aria-label="TOOLS.ADD_DASHBOARDITEM">\n          ADD DASHBOARDITEM\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDashboardItem" ng-click="vm.deleteDashboardItem($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/edit/view.html",'<div id="tools-customDashboard" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-customDashboards-button md-icon-button" aria-label="Go to customDashboards" ng-click="vm.gotoCustomDashboards()" translate translate-attr-aria-label="TOOLS.GO_TO_CUSTOMDASHBOARDS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="customDashboard-image" hide-xs>\n          <img ng-src="assets/images/business/customDashboards.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.customDashboard.id}}\n            <span ng-if="vm.customDashboard.name">{{vm.customDashboard.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.customDashboard.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.customDashboard, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="TOOLS.CLONE_CUSTOMDASHBOARD"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.customDashboard, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="TOOLS.GOTO_CUSTOMDASHBOARD"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveCustomDashboard()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (dashboardForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="customDashboard-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.customDashboard.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.DASHBOARD">DASHBOARD</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="customDashboard-detail-form-container dashboard md-background-bg md-whiteframe-1dp">\n            <div ng-controller="CustomDashboardItemsController as vm_cd" ng-init="vm_cd.init(vm.customDashboard, vm.crudPermissions)" class="customDashboard-detail-form-container no-padding no-margin" layout="column">\n              <div ng-if="vm_cd.customDashboard.widgets.length">\n                <md-button class="md-fab md-mini md-accent" ng-click="vm_cd.createOrEditWidget()" ng-if="vm_cd.crudPermissions.canEdit" aria-label="add item">\n                  <md-tooltip>{{ \'TOOLS.ADD_WIDGET\' | translate }}</md-tooltip>\n                  <md-icon md-font-icon="icon-plus"></md-icon>\n                </md-button>\n                <md-content flex>\n                  <ms-widget-engine config="vm_cd.customDashboard" on-edit="vm_cd.createOrEditWidget(widget)" on-delete="vm_cd.deleteWidget(widget)"></ms-widget-engine>\n                </md-content>\n              </div>\n              <div ng-if="!vm_cd.customDashboard.widgets.length" layout="row" layout-align="center center" flex>\n                <md-button class="width-130 height-130 md-accent md-raised" ng-click="vm_cd.createOrEditWidget()" aria-label="add item" layout="column">\n                  <md-icon md-font-icon="icon-plus-circle" class="s50"></md-icon>\n                  <span layout-wrap translate="TOOLS.ADD_WIDGET"></span>\n                </md-button>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/customDashboards/partialViews/reports/treeReports.html",'<md-dialog class="report-selection-dialog" aria-label="Report Selection" flex="60">\n  <md-toolbar>\n    <div class="md-toolbar-tools">\n      <h2>Select Report</h2>\n      <span flex></span>\n      <md-button class="md-icon-button" ng-click="vm.closeReportDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <div class="content" md-background-bg layout="row" layout-align="start start">\n      <div layout="column" flex="30">\n        <md-card class="padding-10 scrollable" ms-scroll>\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n        </md-card>\n        <md-card class="padding-10 scrollable" ms-scroll>\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n        </md-card>\n      </div>\n      <md-card flex="70">\n        <md-toolbar class="md-table-toolbar md-default">\n          <div class="md-toolbar-tools">\n            <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n            <p ng-if="vm.currentPath">\n              <span class="text-boxed">{{vm.currentPath}}</span>\n            </p>\n          </div>\n        </md-toolbar>\n        <md-table-container>\n          <table md-table md-row-select ng-model="vm.selectedReport" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n              <tr md-row>\n                <th md-column md-order-by="id" width="10px">{{ "ANALYTICS.ID" | translate }}</th>\n                <th md-column md-order-by="name">{{ "ANALYTICS.NAME" | translate }}</th>\n                <th md-column md-order-by="description">{{ "ANALYTICS.DESCRIPTION" | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ "ANALYTICS.CREATED_AT" | translate }}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.reports.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n                <td md-cell class="id">{{ report.id }}</td>\n                <td md-cell class="name">{{ report.name }}</td>\n                <td md-cell class="description">{{ report.description }}</td>\n                <td md-cell class="createdAt">{{ report.createdAt | date: "medium" }}</td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{ \'ANALYTICS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'ANALYTICS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'ANALYTICS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10]" md-page="vm.query.page" md-total="{{ vm.reports.count }}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n      </md-card>\n    </div>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <span flex></span>\n    <md-button class="md-raised" ng-click="vm.closeReportDialog()">CANCEL</md-button>\n    <md-button class="md-accent md-raised" ng-click="vm.selectReport()">CONFIRM</md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/tools/views/dispositions/create/dialog.html",'<md-dialog ng-init="vm.onInit()" class="disposition-dialog" aria-label="New Disposition">\n  <form name="dispositionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newDisposition ? \'TOOLS.NEW_DISPOSITION\' : \'TOOLS.EDIT_DISPOSITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.disposition.name" md-maxlength="255" required md-autofocus>\n        <div ng-messages="dispositionForm[\'name\'].$error" ng-show="dispositionForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.NAME_MAX_LENGTH" translate-values=\'{max: 255}\'>Name must have a maximum length\n              equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.disposition.description" md-maxlength="255">\n        <div ng-messages="dispositionForm[\'description\'].$error" ng-show="dispositionForm[\'description\'].$touched" role="alert">\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_MAX_LENGTH" translate-values=\'{max: 255}\'>Description must have a\n              maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.newDisposition && vm.dispositions.length > 0 || vm.disposition.ParentId" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="TOOLS.FIRST_LEVEL_DISPOSITION">First Level Disposition</label>\n          <md-select name="firstLevelDisposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onFirstLevelSelection()">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' }" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.firstLevelDisposition" ng-click="vm.clearSelection(\'first\'); dispositionForm.$setDirty();" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear first level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="TOOLS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n          <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition">\n            <md-option ng-value="disposition" ng-if="disposition.id != vm.disposition.id" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id }" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearSelection(\'second\'); dispositionForm.$setDirty();" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear first level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDisposition" ng-click="vm.saveDisposition()" class="send-button md-accent md-raised" ng-disabled="dispositionForm.$invalid || dispositionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDisposition" ng-click="vm.addNewDisposition()" class="send-button md-accent md-raised" ng-disabled="dispositionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_DISPOSITION" translate-attr-aria-label="TOOLS.ADD_DISPOSITION">\n          ADD DISPOSITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDisposition" ng-click="vm.deleteDisposition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/dispositions/dispositions.html",'<div id="dispositions" class="page-layout simple left-sidenav inner-sidenav">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.DISPOSITIONS">Dispositions</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDispositions.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedDispositions = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-dispositions-count">\n          <span>{{vm.selectedDispositions.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDispositions()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDispositions()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDispositions" csv-label="true" filename="dispositions.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n      <div layout="row">\n        <div class="column" flex="20">\n          <md-card>\n            <md-card-content>\n              <button layout-align="center center" md-mini-fab ng-click="vm.query.level = null; vm.getDispositions()">\n                <div layout="row" layout-align="start center">\n                  <md-icon md-font-icon="icon-refresh"></md-icon>\n                  <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                </div>\n              </button>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm.query.level" ng-change="vm.getDispositions()">\n                  <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                  <md-option ng-value="key" ng-repeat="(key, value) in vm.levels">{{ value }}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n        </div>\n        \x3c!-- DISPOSITION TABLE --\x3e\n        <md-card flex="80">\n          <md-table-container>\n            <table md-table md-row-select multiple ng-model="vm.selectedDispositions" md-progress="vm.promise">\n              <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDispositions">\n                <tr md-row>\n                  <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                  <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                  <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                  <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                  <th md-column width="10px"></th>\n                </tr>\n              </thead>\n              <tbody md-body>\n                <tr md-row ng-hide="vm.dispositions.rows.length">\n                  <td md-cell colspan="5">\n                    <div layout="row" layout-align="center center">\n                      <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                    </div>\n                  </td>\n                </tr>\n                <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm.dispositions.rows">\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                  </td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                    {{ vm.levels[disposition.level] }}</td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                    {{disposition.name}}</td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                    {{disposition.description}}</td>\n                  <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        \x3c!-- SUBACTIONS --\x3e\n                        \x3c!-- ACTIONS --\x3e\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                            Edit Disposition\n                          </md-button>\n                        </md-menu-item>\n                        \x3c!-- SUBACTIONS --\x3e\n                        \x3c!-- ACTIONS --\x3e\n                        <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                          <md-button ng-click="vm.deleteconfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                            Delete Disposition\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n          <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.dispositions.count}}" md-on-paginate="vm.getDispositions" md-page-select>\n          </md-table-pagination>\n        </md-card>\n        \x3c!-- / DISPOSITION TABLE --\x3e\n      </div>\n      \x3c!-- NO RESULTS --\x3e\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n  \x3c!-- ADD DISPOSITION BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-disposition-button" ng-click="vm.createOrEditDisposition($event)" aria-label="add disposition" translate translate-attr-aria-label="TOOLS.ADD_DISPOSITION">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DISPOSITION BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/intervals/create/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.interval.name" ng-required="true" autofocus>\n\n        <div ng-messages="intervalForm[\'name\'].$error" ng-show="intervalForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.interval.description">\n\n        <div ng-messages="intervalForm[\'description\'].$error" ng-show="intervalForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInterval" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInterval" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInterval" ng-click="vm.deleteInterval($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input ng-model="vm.interval.name" type="text" name="name" placeholder="{{\'TOOLS.NAME\' | translate}}" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" md-autofocus required>\n        <div ng-messages="intervalForm.name.$error" ng-show="intervalForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/intervals/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.interval.name" ng-required="true" autofocus>\n\n        <div ng-messages="intervalForm[\'name\'].$error" ng-show="intervalForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInterval" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInterval" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInterval" ng-click="vm.deleteInterval($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/view.html",'<div id="tools-interval" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-intervals-button md-icon-button" aria-label="Go to intervals" ng-click="vm.gotoIntervals()" translate translate-attr-aria-label="TOOLS.GO_TO_INTERVALS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="interval-image" hide-xs>\n          <img ng-src="assets/images/business/intervals.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.interval.id}}\n            <span ng-if="vm.interval.name">{{vm.interval.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.interval.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInterval()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (intervalsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="interval-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.interval.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.interval.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.INTERVALS">INTERVALS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="interval-detail-form-container intervals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IntervalIntervalsController as vm_dc" ng-init="vm_dc.init(vm.interval, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIntervalIntervals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="TOOLS.INTERVALS">Intervals</span>\n                  <ms-search-bar on-search="vm_dc.getIntervalIntervals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditIntervalInterval($event)" aria-label="add interval" translate translate-attr-label="TOOLS.ADD_INTERVAL">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIntervalIntervals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIntervalIntervals.length}} {{vm_dc.selectedIntervalIntervals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIntervalIntervals" csv-label="true" filename="intervals.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedIntervalIntervals($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIntervalIntervals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIntervalIntervals">\n                    <tr md-row>\n                      <th md-column width="10px"></th>\n                      <th md-column md-order-by="id">\n                        {{ \'TOOLS.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="name">\n                        {{ \'TOOLS.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="interval">\n                        {{ \'TOOLS.INTERVAL\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'TOOLS.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body ng-sortable="vm_dc.sortableTable">\n                    <tr md-row md-select="interval" md-select-id="id" ng-repeat="interval in vm_dc.intervalIntervals.rows">\n                      <td md-cell>\n                        <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.name}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.interval}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{ interval.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" translate="TOOLS.EDIT_INTERVAL">\n                                Edit Interval\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interval, $event)" translate="TOOLS.DELETE_INTERVAL">\n                                Delete Interval\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.intervalIntervals.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="TOOLS.NO_INTERVALS_AVAILABLE">No intervals available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/intervals/intervals.html",'<div id="intervals" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.INTERVALS">Intervals</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedIntervals.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedIntervals =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-intervals-count">\n          <span>{{vm.selectedIntervals.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllIntervals()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectIntervals()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedIntervals" csv-label="true" filename="intervals.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedIntervals($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- INTERVAL TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedIntervals" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getIntervals">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.intervals.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="interval" md-select-id="id" ng-repeat="interval in vm.intervals.rows">\n                <td md-cell ng-if="interval.userpic"><img class="avatar" alt="{{interval.name}}" ng-src="api/users/{{interval.id}}/avatar" /></td>\n                <td md-cell ng-if="!interval.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{interval.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="id ">{{interval.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="name ">{{interval.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="description ">{{interval.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(interval, $event    )" translate="TOOLS.EDIT_INTERVAL">\n                          Edit Interval\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(interval, $event    )" translate="TOOLS.DELETE_INTERVAL">\n                          Delete Interval\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.intervals.count}}" md-on-paginate="vm.getIntervals" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / INTERVAL TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD INTERVAL BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-interval-button" ng-click="vm.createOrEditInterval($event)" aria-label="add interval" translate translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD INTERVAL BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/pauses/create/dialog.html",'<md-dialog class="pause-dialog" aria-label="New Pause">\n  <form name="pauseForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.pause.name" ng-required="true" autofocus>\n\n        <div ng-messages="pauseForm[\'name\'].$error" ng-show="pauseForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.pause.description">\n\n        <div ng-messages="pauseForm[\'description\'].$error" ng-show="pauseForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newPause" ng-click="vm.savePause()" class="send-button md-accent md-raised" ng-disabled="pauseForm.$invalid || pauseForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newPause" ng-click="vm.addNewPause()" class="send-button md-accent md-raised" ng-disabled="pauseForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_PAUSE" translate-attr-aria-label="TOOLS.ADD_PAUSE">\n          ADD PAUSE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newPause" ng-click="vm.deletePause($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/pauses/pauses.html",'<div id="pauses" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.PAUSES">Pauses</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedPauses.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedPauses =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-pauses-count">\n          <span>{{vm.selectedPauses.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllPauses()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectPauses()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedPauses" csv-label="true" filename="pauses.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedPauses($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- PAUSE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedPauses" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getPauses">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.pauses.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="pause" md-select-id="id" ng-repeat="pause in vm.pauses.rows">\n                <td md-cell ng-if="pause.userpic"><img class="avatar" alt="{{pause.name}}" ng-src="api/users/{{pause.id}}/avatar" /></td>\n                <td md-cell ng-if="!pause.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{pause.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="id ">{{pause.id}}</td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="name ">{{pause.name}}</td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="description ">{{pause.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(pause, $event    )" translate="TOOLS.EDIT_PAUSE">\n                          Edit Pause\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(pause, $event    )" translate="TOOLS.DELETE_PAUSE">\n                          Delete Pause\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.pauses.count}}" md-on-paginate="vm.getPauses" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PAUSE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD PAUSE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-pause-button" ng-click="vm.createOrEditPause($event)" aria-label="add pause" translate translate-attr-aria-label="TOOLS.ADD_PAUSE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD PAUSE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/schedules/create/dialog.html",'<md-dialog class="schedule-dialog" aria-label="New Schedule">\n  <form name="scheduleForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.schedule.name" ng-required="true" autofocus>\n\n        <div ng-messages="scheduleForm[\'name\'].$error" ng-show="scheduleForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.REPORT">Report</label>\n        <input type="search" name="report" ng-model="vm.schedule.report" ng-required="true" autocomplete="off" ng-click="vm.searchReport()">\n        <md-icon md-font-icon="icon-magnify" ng-click="vm.searchReport()" aria-label="Search Report"></md-icon>\n        <div ng-messages="scheduleForm[\'report\'].$error" ng-show="scheduleForm[\'report\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REPORT_REQUIRED">Report field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OUTPUT">Output</label>\n        <md-select name="output" ng-model="vm.schedule.output" required>\n          <md-option ng-value="\'csv\'">CSV</md-option>\n          <md-option ng-value="\'pdf\'">PDF</md-option>\n          <md-option ng-value="\'xlsx\'">Excel</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'output\'].$error" ng-show="scheduleForm[\'output\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTPUT_REQUIRED">Output field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.schedule.active" aria-label="Active"><span translate="TOOLS.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <div class="md-block">\n        <label translate="TOOLS.VALIDITYSTART">ValidityStart</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="startAtDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.schedule.startAt" ng-init="vm.schedule.startAt = vm.getDateFromString(vm.schedule.startAt)">\n              <div ng-messages="scheduleForm.dateRangeFrom.$error" ng-show="scheduleForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="startAtTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.schedule.startAt" ng-init="vm.schedule.startAt = vm.getDateFromString(vm.schedule.startAt)">\n              <div ng-messages="scheduleForm.timeRangeFrom.$error" ng-show="scheduleForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <div class="md-block">\n        <label translate="TOOLS.VALIDITYEND">ValidityEnd</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="endAtDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.schedule.endAt" ng-init="vm.schedule.endAt = vm.getDateFromString(vm.schedule.endAt)">\n              <div ng-messages="scheduleForm.dateRangeFrom.$error" ng-show="scheduleForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="endAtTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.schedule.endAt" ng-init="vm.schedule.endAt = vm.getDateFromString(vm.schedule.endAt)">\n              <div ng-messages="scheduleForm.timeRangeFrom.$error" ng-show="scheduleForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <div flex class="md-block">\n        <label> {{ \'TOOLS.CRON\' | translate }} ({{vm.schedule.cron}})</label>\n        <cron-selection name="cron" ng-model="vm.schedule.cron" template="assets/angular-cron-jobs/template.html" required></cron-selection>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LAST">Last</label>\n        <input type="number" name="subtractNumber" ng-model="vm.schedule.subtractNumber" value="1" ng-required="true">\n\n        <div ng-messages="scheduleForm[\'subtractNumber\'].$error" ng-show="scheduleForm[\'subtractNumber\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LAST_REQUIRED">Last field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LASTUNIT">LastUnit</label>\n        <md-select name="subtractUnit" ng-model="vm.schedule.subtractUnit" required>\n          <md-option ng-value="\'minutes\'">Minutes</md-option>\n          <md-option ng-value="\'hours\'">Hours</md-option>\n          <md-option ng-value="\'days\'">Days</md-option>\n          <md-option ng-value="\'weeks\'">Weeks</md-option>\n          <md-option ng-value="\'months\'">Months</md-option>\n          <md-option ng-value="\'quarters\'">Quarters</md-option>\n          <md-option ng-value="\'years\'">Years</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'subtractUnit\'].$error" ng-show="scheduleForm[\'subtractUnit\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LASTUNIT_REQUIRED">LastUnit field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.schedule.sendMail" aria-label="SendMail"><span translate="TOOLS.SENDMAIL">SendMail</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.MAILACCOUNT">MailAccount</label>\n        <md-select name="MailAccountId" ng-model="vm.schedule.MailAccountId" required>\n          <md-option ng-value="MailAccountId.id" ng-repeat="MailAccountId in vm.mailAccounts" ng-disabled="MailAccountId.canSelect === false">{{ MailAccountId.name }}</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'MailAccountId\'].$error" ng-show="scheduleForm[\'MailAccountId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.MAILACCOUNT_REQUIRED">MailAccount field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILADDRESS">EmailAddress</label>\n        <input type="text" name="email" ng-model="vm.schedule.email" ng-required="true">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'email\'].$error" ng-show="scheduleForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILADDRESS_REQUIRED">EmailAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILCCADDRESS">EmailCcAddress</label>\n        <input type="text" name="cc" ng-model="vm.schedule.cc">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILCCADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'cc\'].$error" ng-show="scheduleForm[\'cc\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILCCADDRESS_REQUIRED">EmailCcAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILBCCADDRESS">EmailBccAddress</label>\n        <input type="text" name="bcc" ng-model="vm.schedule.bcc">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILBCCADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'bcc\'].$error" ng-show="scheduleForm[\'bcc\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILBCCADDRESS_REQUIRED">EmailBccAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <md-switch ng-model="vm.schedule.sendIfEmpty" aria-label="SendIfEmpty"><span translate="TOOLS.SENDIFEMPTY">SendIfEmpty</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="" name="description" ng-model="vm.schedule.description">\n\n        <div ng-messages="scheduleForm[\'description\'].$error" ng-show="scheduleForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSchedule" ng-click="vm.saveSchedule()" class="send-button md-accent md-raised" ng-disabled="scheduleForm.$invalid || scheduleForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSchedule" ng-click="vm.addNewSchedule()" class="send-button md-accent md-raised" ng-disabled="scheduleForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_SCHEDULE" translate-attr-aria-label="TOOLS.ADD_SCHEDULE">\n          ADD SCHEDULE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSchedule" ng-click="vm.deleteSchedule($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/schedules/partialViews/reports/treeReports.html",'<md-dialog class="report-selection-dialog" aria-label="Report Selection" flex="60">\n  <md-toolbar>\n    <div class="md-toolbar-tools">\n      <h2>Select Report</h2>\n      <span flex></span>\n      <md-button class="md-icon-button" ng-click="vm.closeReportDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <div class="content" md-background-bg layout="row" layout-align="start start">\n      <div layout="column" flex="30">\n        <md-card class="padding-10 scrollable" ms-scroll>\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n        </md-card>\n        <md-card class="padding-10 scrollable" ms-scroll>\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n        </md-card>\n      </div>\n      <md-card flex="70">\n        <md-toolbar class="md-table-toolbar md-default">\n          <div class="md-toolbar-tools">\n            <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n            <p ng-if="vm.currentPath">\n              <span class="text-boxed">{{vm.currentPath}}</span>\n            </p>\n          </div>\n        </md-toolbar>\n        <md-table-container>\n          <table md-table md-row-select ng-model="vm.selectedReport" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n              <tr md-row>\n                <th md-column md-order-by="id" width="10px">{{ "ANALYTICS.ID" | translate }}</th>\n                <th md-column md-order-by="name">{{ "ANALYTICS.NAME" | translate }}</th>\n                <th md-column md-order-by="description">{{ "ANALYTICS.DESCRIPTION" | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ "ANALYTICS.CREATED_AT" | translate }}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.reports.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n                <td md-cell class="id">{{ report.id }}</td>\n                <td md-cell class="name">{{ report.name }}</td>\n                <td md-cell class="description">{{ report.description }}</td>\n                <td md-cell class="createdAt">{{ report.createdAt | date: "medium" }}</td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{ \'ANALYTICS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'ANALYTICS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'ANALYTICS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10]" md-page="vm.query.page" md-total="{{ vm.reports.count }}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n      </md-card>\n    </div>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <span flex></span>\n    <md-button class="md-raised" ng-click="vm.closeReportDialog()">CANCEL</md-button>\n    <md-button class="md-accent md-raised" ng-click="vm.selectReport()">CONFIRM</md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/tools/views/schedules/schedules.html",'<div id="schedules" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.SCHEDULER">Scheduler</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedScheduler.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedScheduler =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-schedules-count">\n          <span>{{vm.selectedScheduler.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllScheduler()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectScheduler()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedScheduler" csv-label="true" filename="schedules.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedScheduler($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SCHEDULE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedScheduler" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScheduler">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'TOOLS.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="startAt">{{ \'TOOLS.VALIDITYSTART\' | translate }}</th>\n                <th md-column md-order-by="endAt">{{ \'TOOLS.VALIDITYEND\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.schedules.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="schedule" md-select-id="id" ng-repeat="schedule in vm.schedules.rows">\n                <td md-cell ng-if="schedule.userpic"><img class="avatar" alt="{{schedule.name}}" ng-src="api/users/{{schedule.id}}/avatar" /></td>\n                <td md-cell ng-if="!schedule.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{schedule.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="id ">{{schedule.id}}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="name ">{{schedule.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(schedule, ev) : vm.createOrEditSchedule($event, schedule)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{schedule.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{schedule.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="startAt ">{{schedule.startAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="endAt ">{{schedule.endAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="description ">{{schedule.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(schedule, $event    )" translate="TOOLS.EDIT_SCHEDULE">\n                          Edit Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.runconfirm(schedule, $event    )" translate="TOOLS.RUN_SCHEDULE">\n                          Run Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(schedule, $event    )" translate="TOOLS.DELETE_SCHEDULE">\n                          Delete Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.schedules.count}}" md-on-paginate="vm.getScheduler" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SCHEDULE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SCHEDULE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-schedule-button" ng-click="vm.createOrEditSchedule($event)" aria-label="add schedule" translate translate-attr-aria-label="TOOLS.ADD_SCHEDULE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SCHEDULE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/sounds/create/dialog.html",'<md-dialog class="sound-dialog" aria-label="New Sound">\n  <form name="soundForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.sound.name" ng-required="true" autofocus>\n\n        <div ng-messages="soundForm[\'name\'].$error" ng-show="soundForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.sound.description">\n\n        <div ng-messages="soundForm[\'description\'].$error" ng-show="soundForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSound" ng-click="vm.saveSound()" class="send-button md-accent md-raised" ng-disabled="soundForm.$invalid || soundForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSound" ng-click="vm.addNewSound()" class="send-button md-accent md-raised" ng-disabled="soundForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_SOUND" translate-attr-aria-label="TOOLS.ADD_SOUND">\n          ADD SOUND\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSound" ng-click="vm.deleteSound($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/sounds/sounds.html",'<div id="sounds" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.SOUNDS">Sounds</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSounds.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSounds =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-sounds-count">\n          <span>{{vm.selectedSounds.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSounds()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSounds()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSounds" csv-label="true" filename="sounds.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSounds($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SOUND TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSounds" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSounds">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="audio">{{ \'TOOLS.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.sounds.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="sound" md-select-id="id" ng-repeat="sound in vm.sounds.rows">\n                <td md-cell ng-if="sound.userpic"><img class="avatar" alt="{{sound.name}}" ng-src="api/users/{{sound.id}}/avatar" /></td>\n                <td md-cell ng-if="!sound.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{sound.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="id ">{{sound.id}}</td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="name ">{{sound.name}}</td>\n                <td md-cell class="audio ">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording id="sound.id" model="\'sound\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                </td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="description ">{{sound.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(sound, $event    )" translate="TOOLS.EDIT_SOUND">\n                          Edit Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.downloadfile2(sound, $event  , \'sounds\'   )" translate="TOOLS.DOWNLOAD_SOUND">\n                          Download Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(sound, $event    )" translate="TOOLS.DELETE_SOUND">\n                          Delete Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.sounds.count}}" md-on-paginate="vm.getSounds" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SOUND TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- UPLOAD SOUND BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="upload-sound-button" ng-click="vm.uploadSound($event)" aria-label="upload sound" translate translate-attr-aria-label="TOOLS.UPLOAD_SOUND">\n    <md-icon md-font-icon="icon-upload"></md-icon>\n  </md-button>\n  \x3c!-- / UPLOAD SOUND BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/sounds/upload/dialog.html",'<md-dialog class="upload-dialog" aria-label="Upload ">\n  <form name="uploadForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div id="sound-uploader" ng-hide="vm.uploadState == \'uploading\'" flow-init="vm.ngFlowOptions" flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)" flow-error="vm.uploadError($file, $message)" flow-complete="vm.uploadComplete()" flow-drop flow-drag-enter="vm.dropping=true" flow-drag-leave="vm.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n        <div class="drop-text hint-text" layout="row" layout-align="center center">\n          <span translate="TOOLS.DROP_TO_UPLOAD">Drop to upload</span>\n        </div>\n\n        <div class="upload-button" layout="column" layout-align="center center">\n          <md-button class="md-accent md-raised" flow-btn>\n            Upload\n          </md-button>\n          <span class="secondary-text mt-8" translate="TOOLS.DROP_TO_UPLOAD_MESSAGE">You can also drop your file here to upload.</span>\n        </div>\n      </div>\n\n      <div layout="column" layout-align="space-between center" ng-show="vm.uploadState == \'uploading\'">\n        <div>\n          <span translate="TOOLS.UPLOADING">Uploading</span>\n          <span>{{vm.sound.file.name}}</span>\n        </div>\n        <md-progress-linear md-mode="indeterminate"></md-progress-linear>\n      </div>\n\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center"></div>\n      <div layout="row">\n        <md-button ng-click="vm.closeDialog()" ng-hide="vm.uploadState == \'uploading\'" class="md-accent md-raised" aria-label="FINISH" translate="TOOLS.FINISH" translate-attr-aria-label="TOOLS.FINISH">\n          FINISH\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/tags/create/dialog.html",'<md-dialog class="tag-dialog" aria-label="New Tag">\n  <form name="tagForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.tag.name" ng-required="true" autofocus>\n\n        <div ng-messages="tagForm[\'name\'].$error" ng-show="tagForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.tag.description">\n\n        <div ng-messages="tagForm[\'description\'].$error" ng-show="tagForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div flex md-color-picker ng-model="vm.tag.color" label="{{\'TOOLS.COLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTag" ng-click="vm.saveTag()" class="send-button md-accent md-raised" ng-disabled="tagForm.$invalid || tagForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTag" ng-click="vm.addNewTag()" class="send-button md-accent md-raised" ng-disabled="tagForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TAG" translate-attr-aria-label="TOOLS.ADD_TAG">\n          ADD TAG\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTag" ng-click="vm.deleteTag($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/tags/tags.html",'<div id="tags" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TAGS">Tags</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTags.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTags =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-tags-count">\n          <span>{{vm.selectedTags.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTags()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTags()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTags" csv-label="true" filename="tags.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTags($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TAG TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTags" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTags">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="color">{{ \'TOOLS.COLOR\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.tags.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="tag" md-select-id="id" ng-repeat="tag in vm.tags.rows">\n                <td md-cell ng-if="tag.userpic"><img class="avatar" alt="{{tag.name}}" ng-src="api/users/{{tag.id}}/avatar" /></td>\n                <td md-cell ng-if="!tag.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{tag.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="id ">{{tag.id}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="name ">{{tag.name}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="description ">{{tag.description}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="color ">{{tag.color}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(tag, $event    )" translate="TOOLS.EDIT_TAG">\n                          Edit Tag\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(tag, $event    )" translate="TOOLS.DELETE_TAG">\n                          Delete Tag\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.tags.count}}" md-on-paginate="vm.getTags" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TAG TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TAG BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-tag-button" ng-click="vm.createOrEditTag($event)" aria-label="add tag" translate translate-attr-aria-label="TOOLS.ADD_TAG">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TAG BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/templates/create/dialog.html",'<md-dialog class="template-dialog" aria-label="New Template">\n  <form name="templateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.template.name" ng-required="true" autofocus>\n\n        <div ng-messages="templateForm[\'name\'].$error" ng-show="templateForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="TOOLS.CONTENT">Content</label>\n        <textarea aria-label="Content html" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.template.html"></textarea>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.template.description">\n\n        <div ng-messages="templateForm[\'description\'].$error" ng-show="templateForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTemplate" ng-click="vm.saveTemplate()" class="send-button md-accent md-raised" ng-disabled="templateForm.$invalid || templateForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTemplate" ng-click="vm.addNewTemplate()" class="send-button md-accent md-raised" ng-disabled="templateForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TEMPLATE" translate-attr-aria-label="TOOLS.ADD_TEMPLATE">\n          ADD TEMPLATE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTemplate" ng-click="vm.deleteTemplate($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/templates/templates.html",'<div id="templates" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TEMPLATES">Templates</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTemplates.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTemplates =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-templates-count">\n          <span>{{vm.selectedTemplates.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTemplates()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTemplates()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTemplates" csv-label="true" filename="templates.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTemplates($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TEMPLATE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTemplates" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTemplates">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.templates.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="template" md-select-id="id" ng-repeat="template in vm.templates.rows">\n                <td md-cell ng-if="template.userpic"><img class="avatar" alt="{{template.name}}" ng-src="api/users/{{template.id}}/avatar" /></td>\n                <td md-cell ng-if="!template.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{template.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="id ">{{template.id}}</td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="name ">{{template.name}}</td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="description ">{{template.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(template, $event    )" translate="TOOLS.EDIT_TEMPLATE">\n                          Edit Template\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(template, $event    )" translate="TOOLS.DELETE_TEMPLATE">\n                          Delete Template\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.templates.count}}" md-on-paginate="vm.getTemplates" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TEMPLATE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TEMPLATE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-template-button" ng-click="vm.createOrEditTemplate($event)" aria-label="add template" translate translate-attr-aria-label="TOOLS.ADD_TEMPLATE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TEMPLATE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/triggers/create/dialog.html",'<md-dialog class="trigger-dialog" aria-label="New Trigger">\n  <form name="triggerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newTrigger ? \'TOOLS.NEW_TRIGGER\' : \'TOOLS.EDIT_TRIGGER\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trigger.name" required md-autofocus>\n        <div ng-messages="triggerForm[\'name\'].$error" ng-show="triggerForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.trigger.channel" required ng-disabled="!vm.newTrigger">\n          <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n          <md-option ng-value="\'openchannel\'" ng-if="vm.license.openchannel"> {{ \'TOOLS.OPENCHANNEL\' | translate }}\n          </md-option>\n          <md-option ng-value="\'chat\'" ng-if="vm.license.chat"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n          <md-option ng-value="\'mail\'" ng-if="vm.license.mail"> {{ \'TOOLS.MAIL\' | translate }} </md-option>\n          <md-option ng-value="\'sms\'" ng-if="vm.license.messaging"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n          <md-option ng-value="\'fax\'" ng-if="vm.license.fax"> {{ \'TOOLS.FAX\' | translate }} </md-option>\n          <md-option ng-value="\'whatsapp\'" ng-if="vm.license.whatsapp"> {{ \'TOOLS.WHATSAPP\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="triggerForm[\'channel\'].$error" ng-show="triggerForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trigger.status" aria-label="Status"><span translate="TOOLS.STATUS">Status</span>\n        </md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.trigger.description">\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{ error.message }}</span>\n            <span class="type">({{ error.type }})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTrigger" ng-click="vm.saveTrigger()" class="send-button md-accent md-raised" ng-disabled="triggerForm.$invalid || triggerForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTrigger" ng-click="vm.addNewTrigger()" class="send-button md-accent md-raised" ng-disabled="triggerForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TRIGGER" translate-attr-aria-label="TOOLS.ADD_TRIGGER">\n          ADD TRIGGER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTrigger" ng-click="vm.deleteTrigger($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/actions/actions.html",'<div ng-controller="TriggerActionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\r\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedTriggerActions.length">\r\n    <div class="md-toolbar-tools">\r\n      <span class="md-subhead" translate="TOOLS.ACTIONS">Actions</span>\r\n      <ms-search-bar on-search="vm_dc.getTriggerActions()" query="vm_dc.query" debounce="300" direction="down">\r\n      </ms-search-bar>\r\n      <div flex></div>\r\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditTriggerAction($event)" aria-label="add action" translate translate-attr-label="TOOLS.ADD_ACTION">\r\n        <md-icon md-font-icon="icon-plus"></md-icon>\r\n      </md-button>\r\n    </div>\r\n  </md-toolbar>\r\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedTriggerActions.length">\r\n    <div class="md-toolbar-tools">\r\n      <span class="md-subhead">{{ vm_dc.selectedTriggerActions.length }}\r\n        {{ vm_dc.selectedTriggerActions.length > 1 ? \'items\' : \'item\' }} selected</span>\r\n      <div flex></div>\r\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedTriggerActions" csv-label="true" filename="triggers.csv">\r\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\r\n      </button>\r\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedTriggerActions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\r\n        <md-icon md-font-icon="icon-delete"></md-icon>\r\n      </md-button>\r\n    </div>\r\n  </md-toolbar>\r\n  <md-table-container class="font-size-12">\r\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedTriggerActions" md-progress="vm_dc.promise">\r\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getTriggerActions">\r\n        <tr md-row>\r\n          <th md-column md-order-by="id">\r\n            {{ \'TOOLS.ID\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="action">\r\n            {{ \'TOOLS.ACTION\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="data1">\r\n            {{ \'TOOLS.TYPE\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="data2">\r\n            {{ \'TOOLS.INFO\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="createdAt">\r\n            {{ \'TOOLS.CREATED_AT\' | translate }}\r\n          </th>\r\n          <th md-column width="10px"></th>\r\n        </tr>\r\n      </thead>\r\n      <tbody md-body>\r\n        <tr md-row md-select="action" md-select-id="id" ng-repeat="action in vm_dc.triggerActions.rows">\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ action.id }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ \'TOOLS.\' + (action.action | snakecase | uppercase) | translate }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\'" md-cell>\r\n            {{ action.data1 === \'1\' ? \'CTI URL\' : \'Popup\' }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'contactManager\'" md-cell>\r\n            {{ (vm_dc.lists | filter : {\'id\':(action.data1 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'contactManager\'" md-cell>\r\n            {{ action.data2 === \'1\' ? \'TOOLS.YES\' : \'TOOLS.NO\' | uppercase | translate }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'urlForward\'" md-cell>\r\n            {{ action.data1 }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="!action.data1" md-cell>\r\n            {{ action.data1 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="!action.data2" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'urlForward\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'script\' && action.data2" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'script\' && action.data1" md-cell>\r\n            {{ action.data1 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'jscripty\'" md-cell>\r\n            {{ (vm_dc.projects | filter : {\'id\':(action.data1 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\'" md-cell>\r\n            {{ vm_dc.integrationTypes[action.data1] }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'zendesk\'" md-cell>\r\n            {{ (vm_dc.zendeskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'desk\'" md-cell>\r\n            {{ (vm_dc.deskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'zoho\'" md-cell>\r\n            {{ (vm_dc.zohoAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'salesforce\'" md-cell>\r\n            {{ (vm_dc.salesforceAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'sugarcrm\'" md-cell>\r\n            {{ (vm_dc.sugarcrmAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'freshdesk\'" md-cell>\r\n            {{ (vm_dc.freshdeskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'vtiger\'" md-cell>\r\n            {{ (vm_dc.vtigerAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'dynamics365\'" md-cell>\r\n            {{ (vm_dc.dynamics365Accounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'servicenow\'" md-cell>\r\n            {{ (vm_dc.servicenowAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'freshsales\'" md-cell>\r\n            {{ (vm_dc.freshsalesAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\'" md-cell>\r\n            {{ vm_dc.motionBarOptions[action.data1] }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'1\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'2\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'0\'" md-cell>\r\n            {{ (vm_dc.templates | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\' && action.data1 === \'0\'" md-cell>\r\n            {{ (vm_dc.templates | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\' && action.data1 === \'1\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ action.createdAt | formatdate }}\r\n          </td>\r\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\r\n            <md-menu>\r\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\r\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\r\n              </md-button>\r\n              <md-menu-content width="3">\r\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\r\n                  <md-button ng-click="vm_dc.createOrEditTriggerAction($event, action)" translate="TOOLS.EDIT_ACTION">\r\n                    Edit Action\r\n                  </md-button>\r\n                </md-menu-item>\r\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\r\n                  <md-button ng-click="vm_dc.deleteConfirm(action, $event)" translate="TOOLS.DELETE_ACTION">\r\n                    Delete Action\r\n                  </md-button>\r\n                </md-menu-item>\r\n              </md-menu-content>\r\n            </md-menu>\r\n          </td>\r\n        </tr>\r\n        <tr md-row ng-if="!vm_dc.triggerActions.rows.length">\r\n          <td md-cell colspan="5">\r\n            <div layout="row" layout-align="center center">\r\n              <span class="text-boxed-light" translate="TOOLS.NO_ACTION_AVAILABLE">No action\r\n                available</span>\r\n            </div>\r\n          </td>\r\n        </tr>\r\n      </tbody>\r\n    </table>\r\n  </md-table-container>\r\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.triggerActions.count }}" md-on-paginate="vm_dc.getTriggerActions" md-page-select>\r\n  </md-table-pagination>\r\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/actions/create/dialog.html",'<md-dialog class="action-dialog" aria-label="New Action">\n  <form name="actionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAction ? \'TOOLS.NEW_ACTION\' : \'TOOLS.EDIT_ACTION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.ACTION">Action</label>\n        <md-select name="action" ng-model="vm.action.action" ng-init="vm.onActionInit()" ng-change="vm.onActionSelection()" md-autofocus required ng-disabled="!vm.newAction">\n          <md-option ng-value="\'contactManager\'" ng-if="vm.trigger.channel == \'voice\'">\n            {{ \'TOOLS.CONTACT_MANAGER\' | translate }} </md-option>\n          <md-option ng-value="\'integration\'" ng-if="vm.trigger.channel == \'voice\' && ((vm.newAction && vm.hasIntegrationsPermissions) || !vm.newAction)">\n            {{ \'TOOLS.INTEGRATIONS\' | translate }} </md-option>\n          <md-option ng-value="\'motionbar\'"> {{ \'TOOLS.MOTIONBAR\' | translate }} </md-option>\n          <md-option ng-value="\'jscripty\'"> {{ \'TOOLS.JSCRIPTY\' | translate }} </md-option>\n          <md-option ng-value="\'urlForward\'"> {{ \'TOOLS.URL_FORWARD\' | translate }} </md-option>\n          <md-option ng-value="\'browser\'"> {{ \'TOOLS.BROWSER\' | translate }} </md-option>\n          <md-option ng-value="\'bot\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.BOT\' | translate }} </md-option>\n          <md-option ng-value="\'script\'"> {{ \'TOOLS.SCRIPT\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'action\'].$error" ng-show="actionForm[\'action\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACTION_REQUIRED">Action field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'jscripty\'" class="md-block">\n        <label translate="TOOLS.PROJECT">Project</label>\n        <md-select name="data1" ng-model="vm.action.data1" required>\n          <md-option ng-value="\'\'+data1.id" ng-repeat="data1 in vm.projects" ng-disabled="data1.canSelect === false">\n            {{ data1.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PROJECT_REQUIRED">Project field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onTypeSelection()" required>\n          <md-option ng-value="\'0\'">Popup</md-option>\n          <md-option ng-value="\'1\'">CTI URL</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.LIST">List</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onListSelection()" required>\n          <md-option ng-value="\'\'+data1.id" ng-repeat="data1 in vm.lists" ng-disabled="data1.canSelect === false">\n            {{ data1.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.SEARCH_FIELDS">Search fields</label>\n        <md-select name="fields" ng-model="vm.action.data3" ng-init="vm.onSearchFieldsInit()" multiple required>\n          <md-optgroup label="{{ \'TOOLS.STANDARD\' | translate }}">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.contactFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.LIST\' | translate }}" ng-if="vm.listFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.listFields">\n              {{ field.name }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.GLOBALS\' | translate }}" ng-if="vm.customFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.customFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SEARCH_FIELDS_REQUIRED">Search fields field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.AUTOCREATECONTACT">Create contact automatically</label>\n        <md-select name="data2" ng-model="vm.action.data2" ng-change="vm.onAutocreateSelection()" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AUTOCREATECONTACT_REQUIRED">AutoCreateContact field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\' && vm.action.data2 === \'1\'" class="md-block">\n        <label translate="TOOLS.AUTOCREATE_FIELD">Autocreate field</label>\n        <md-select name="autocreateField" ng-model="vm.action.data4" ng-required="vm.action.data2 === \'1\'">\n          <md-optgroup label="{{ \'TOOLS.STANDARD\' | translate }}">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.contactFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.LIST\' | translate }}" ng-if="vm.listFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.listFields">\n              {{ field.name }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.GLOBALS\' | translate }}" ng-if="vm.customFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.customFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="actionForm[\'data4\'].$error" ng-show="actionForm[\'data4\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AUTOCREATE_FIELD_REQUIRED">Autocreate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.IGNOREDIALERCONTACTID">Ignore dialer contact Id</label>\n        <md-select name="data5" ng-model="vm.action.data5" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.IGNOREDIALERCONTACTID_REQUIRED">Ignore dialer contact Id field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" required>\n          <md-option ng-value="\'GET\'">GET</md-option>\n          <md-option ng-value="\'POST\'">POST</md-option>\n          <md-option ng-value="\'PUT\'">PUT</md-option>\n          <md-option ng-value="\'DELETE\'">DELETE</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.TIMEOUT">Timeout</label>\n        <input type="number" name="data5" ng-model="vm.action.data5" min="1" max="10" ng-required="true">\n        <div class="hint"><span translate="TOOLS.HELP.TIMEOUT"></span></div>\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n              equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="TOOLS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n              equal than</span> <span>10</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.HEADERS">Headers</label>\n        <textarea name="data6" ng-model="vm.action.data6"></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.HEADERS"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\' && (vm.action.data1 == \'POST\' || vm.action.data1 == \'PUT\')" class="md-block">\n        <label translate="TOOLS.BODY">Body</label>\n        <textarea name="data7" ng-model="vm.action.data7"></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.BODY"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT_TYPE">Script_Type</label>\n        <input type="input" name="data2" ng-model="vm.action.data2">\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT_TYPE"></span></div>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_TYPE_REQUIRED">Script_Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT_INFO">Script_Info</label>\n        <input type="input" name="data1" ng-model="vm.action.data1">\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT_INFO"></span></div>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_INFO_REQUIRED">Script_Info field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT">Script</label>\n        <textarea name="data3" ng-model="vm.action.data3" required></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT"></span></div>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_REQUIRED">Script field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\'" class="md-block">\n        <label translate="TOOLS.INTEGRATION">Integration</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-init="vm.onIntegrationInit()" ng-change="vm.onIntegrationSelection()" required>\n          <md-option ng-value="\'desk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1306]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1306])">Desk</md-option>\n          <md-option ng-value="\'dynamics365\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1309]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1309])">Dynamics365</md-option>\n          <md-option ng-value="\'freshdesk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1303]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1303])">Freshdesk</md-option>\n          <md-option ng-value="\'freshsales\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1304]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1304])">Freshsales</md-option>\n          <md-option ng-value="\'salesforce\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1302]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1302])">Salesforce</md-option>\n          <md-option ng-value="\'servicenow\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1310]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1310])">ServiceNow</md-option>\n          <md-option ng-value="\'sugarcrm\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1305]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1305])">SugarCRM</md-option>\n          <md-option ng-value="\'vtiger\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1308]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1308])">vTiger</md-option>\n          <md-option ng-value="\'zendesk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1301]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1301])">Zendesk</md-option>\n          <md-option ng-value="\'zoho\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1307]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1307])">Zoho</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.INTEGRATION_REQUIRED">Integration field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\' && vm.action.data1" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="data2" ng-model="vm.action.data2" ng-change="vm.onIntegrationAccountSelection()" ng-disabled="vm.action.isIntegrationDisabled" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.accounts">{{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\'  && vm.action.data1 && vm.action.data2" class="md-block">\n        <label translate="TOOLS.CONFIGURATION">Configuration</label>\n        <md-select name="data3" ng-model="vm.action.data3" required ng-disabled="vm.action.isIntegrationDisabled">\n          <md-option ng-value="\'\'+data3.id" ng-repeat="data3 in vm.configurations | filter : { AccountId: (vm.action.data2 | toInteger) } : true">{{\n            data3.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.CONFIGURATION_REQUIRED">Configuration field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onTypeSelection()" required>\n          <md-option ng-value="\'0\'">Popup</md-option>\n          <md-option ng-value="\'1\'">CTI URL</md-option>\n          <md-option ng-value="\'2\'">Windows App</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'2\'" class="md-block">\n        <label translate="TOOLS.APPLICATION">Application</label>\n        <input type="text" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'2\'" class="md-block">\n        <label translate="TOOLS.ARGUMENTS">Arguments</label>\n        <input type="text" name="data3" ng-model="vm.action.data3">\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ARGUMENTS_REQUIRED">Arguments field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'0\'" class="md-block">\n        <label translate="TOOLS.TEMPLATE">Template</label>\n        <md-select name="data2" ng-model="vm.action.data2" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.templates" ng-disabled="data2.canSelect === false">\n            {{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TEMPLATE_REQUIRED">Template field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'0\'" class="md-block">\n        <label translate="TOOLS.TEMPLATE">Template</label>\n        <md-select name="data2" ng-model="vm.action.data2" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.templates" ng-disabled="data2.canSelect === false">\n            {{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TEMPLATE_REQUIRED">Template field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.action.action == \'motionbar\' || vm.action.action == \'browser\') && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.EVENTVARIABLES">EventVariables</label>\n        <md-select name="data3" ng-model="vm.action.data3" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div class="hint"><span translate="TOOLS.HELP.EVENTVARIABLES"></span></div>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EVENTVARIABLES_REQUIRED">EventVariables field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.LOCATION">Location</label>\n        <md-select name="data4" ng-model="vm.action.data4" required ng-change="vm.onActionLocationChange()">\n          <md-option ng-value="0"> {{ \'TOOLS.NEW_TAB\' | translate }} </md-option>\n          <md-option ng-value="1"> {{ \'TOOLS.NEW_WINDOW\' | translate }} </md-option>\n          <md-option ng-value="2"> {{ \'TOOLS.MOTION_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data4\'].$error" ng-show="actionForm[\'data4\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LOCATION_REQUIRED">Location field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data4 == \'1\'" class="md-block">\n        <label translate="TOOLS.WINDOWWIDTH">WindowWidth</label>\n        <input type="text" name="data5" ng-model="vm.action.data5">\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.WINDOWWIDTH_REQUIRED">WindowWidth field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data4 == \'1\'" class="md-block">\n        <label translate="TOOLS.WINDOWHEIGHT">WindowHeight</label>\n        <input type="text" name="data6" ng-model="vm.action.data6">\n        <div ng-messages="actionForm[\'data6\'].$error" ng-show="actionForm[\'data6\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.WINDOWHEIGHT_REQUIRED">WindowHeight field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAction" ng-click="vm.saveAction()" class="send-button md-accent md-raised" ng-disabled="actionForm.$invalid || actionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAction" ng-click="vm.addNewAction()" class="send-button md-accent md-raised" ng-disabled="actionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ACTION" translate-attr-aria-label="TOOLS.ADD_ACTION">\n          ADD ACTION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAction" ng-click="vm.deleteAction($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/allconditions/allconditions.html",'<div ng-controller="TriggerAllConditionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedAllConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="TOOLS.ALLCONDITIONS">All Conditions</span>\n      <ms-search-bar on-search="vm_dc.getAllConditions()" query="vm_dc.query" debounce="300" direction="down">\n      </ms-search-bar>\n      <div flex></div>\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditAllCondition($event)" aria-label="add allCondition" translate translate-attr-label="TOOLS.ADD_ALLCONDITION">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedAllConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{ vm_dc.selectedAllConditions.length }}\n        {{ vm_dc.selectedAllConditions.length > 1 ? \'items\' : \'item\' }} selected</span>\n      <div flex></div>\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedAllConditions" csv-label="true" filename="triggers.csv">\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\n      </button>\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedAllConditions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n        <md-icon md-font-icon="icon-delete"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container class="font-size-12">\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedAllConditions" md-progress="vm_dc.promise">\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getAllConditions">\n        <tr md-row>\n          <th md-column md-order-by="id">\n            {{ \'TOOLS.ID\' | translate }}\n          </th>\n          <th md-column md-order-by="field">\n            {{ \'TOOLS.FIELD\' | translate }}\n          </th>\n          <th md-column md-order-by="operator">\n            {{ \'TOOLS.OPERATOR\' | translate }}\n          </th>\n          <th md-column md-order-by="value">\n            {{ \'TOOLS.VALUE\' | translate }}\n          </th>\n          <th md-column md-order-by="createdAt">\n            {{ \'TOOLS.CREATED_AT\' | translate }}\n          </th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row md-select="allCondition" md-select-id="id" ng-repeat="allCondition in vm_dc.allConditions.rows">\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ allCondition.id }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ \'TOOLS.\' + vm_dc.fields[allCondition.field] | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ \'TOOLS.\' + allCondition.operator | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="!allCondition.value" md-cell>\n            {{ allCondition.value }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'chat\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.chatWebsites | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'mail\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.mailAccounts | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'sms\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.smsAccounts | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'whatsapp\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.whatsappAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'fax\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.faxAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'openchannel\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.openchannelAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'queue\'" md-cell>\n            {{ (vm_dc.queues | filter : {\'name\':allCondition.value} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'routeId\'" md-cell>\n            {{ (vm_dc.outboundRoutes | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].exten }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'agent\'" md-cell>\n            {{ (vm_dc.agents | filter : {\'name\':allCondition.value} : true)[0].fullname }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'lastevent\'" md-cell>\n            {{ vm_dc.callStatuses[allCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel != \'voice\' && allCondition.field == \'interaction\'" md-cell>\n            {{ allCondition.value | capitalize }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel != \'voice\' && allCondition.field == \'message\'" md-cell>\n            {{ vm_dc.messageStatuses[allCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" 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/outbound_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.OUTBOUND_CALLS">Ooutbound Calls</span>\n  </div>\n</md-toolbar>\n\n\x3c!-- OUTBOUNDS TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'VOICE.SOURCE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DESTINATION\' | translate }}</th>\n        <th md-column>{{ \'VOICE.ALIAS\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DURATION\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.calls.rows.length">\n        <td md-cell colspan="5">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.calls.rows | filter: vm.query.filter | limitTo: vm.query.limit: (vm.query.page - 1) * vm.query.limit">\n        <td md-cell>\n          <i ng-class="vm.channelStatus[call.channelstatedesc.toLowerCase()]"></i>\n        </td>\n        <td md-cell privacy ng-cloak>\n          {{call.calleridname}}, {{call.calleridnum}}\n          <span class="text-boxed" ng-if="call.answered">\n            <timer ng-if="call.answertime" start-time="call.answertime"></timer>\n          </span>\n        </td>\n        <td md-cell privacy ng-cloak>{{call.exten}}</td>\n        <td md-cell>{{call.routealias}}</td>\n        <td md-cell>\n          <span class="text-boxed" ng-if="call.channelstatedesc.toLowerCase() !== \'hangup\'">\n            <timer ng-if="call.starttime" start-time="call.starttime"></timer>\n          </span>\n          <span class="text-boxed" ng-if="call.channelstatedesc.toLowerCase() === \'hangup\'" translate="VOICE.CLOSING">Closing</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.calls.count}}"></md-table-pagination>\n\x3c!-- / OUTBOUNDS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queue_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.QUEUE_CALLS">Queue Calls</span>\n  </div>\n</md-toolbar>\n\x3c!-- QUEUES TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n        <th md-column>{{ \'VOICE.ALIAS\' | translate }}</th>\n        <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n        <th md-column>{{ \'VOICE.AGENT\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DURATION\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.getSize(vm.rpcVoiceQueuesChannels)">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(key, channel) in vm.rpcVoiceQueuesChannels | limitObjectFromTo: vm.queryChannels.limit:(vm.queryChannels.page - 1) * vm.queryChannels.limit">\n        <td md-cell>\n          <md-icon ng-if="channel.queuecallerleaveAt" md-font-icon="icon-phone-in-talk green-fg"></md-icon>\n          <md-icon ng-if="!channel.queuecallerleaveAt" md-font-icon="icon-phone-incoming md-accent"></md-icon>\n        </td>\n        <td md-cell>{{channel.exten}}</td>\n        <td md-cell>{{channel.routealias}}</td>\n        <td md-cell>{{channel.queue}}</td>\n        <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n        <td md-cell>\n          <span ng-if="channel.queuecallerleaveAt">\n            {{channel.connectedlinename}}, {{channel.connectedlinenum}}\n            <span class="text-boxed">\n              <timer start-time="channel.queuecallerleaveAt"></timer>\n            </span>\n          </span>\n          <span ng-if="!channel.queuecallerleaveAt" class="text-boxed">\n            {{ \'VOICE.WAITING_FOR_AGENT\' | translate }}\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell>\n          <span class="text-boxed">\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item>\n                <md-button ng-click="vm.hangup(channel.uniqueid)" translate="VOICE.HANGUP">\n                  Hangup\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.redirectToNumber($event, channel.uniqueid)" translate="VOICE.REDIRECT_TO_NUMBER">\n                  Number\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu class="no-margin">\n                  <md-button ng-mouseenter="vm.getAvailableAgents()" translate="VOICE.REDIRECT_TO_AGENT">\n                    Redirect to Agent</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="!vm.availableAgents">\n                      <md-progress-circular class="md-accent auto-margin" md-diameter="32" md-mode="indeterminate">\n                      </md-progress-circular>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length > 0" ng-repeat="agent in vm.availableAgents">\n                      <md-button ng-click="vm.redirectToAgent(channel.uniqueid, agent.name, agent.context)">\n                        {{agent.name}}</md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length === 0">\n                      <span>No agents available</span>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.queryChannels.limit" md-page="vm.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm.getSize(vm.rpcVoiceQueuesChannels)}}" md-page-select></md-table-pagination>\n\x3c!-- / QUEUES TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queue_params/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_PARAMETERS">Params</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column>{{\'\n                        VOICE.NAME\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.TOTAL_OFFERED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.ANSWERED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.ABANDONED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.UNMANAGED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_HOLD_TIME\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_DURATION\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_BILLABLE\' | translate}}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, queue) in vm.queues">\n        <td md-cell>\n          <span>{{queue.name}}</span>\n        </td>\n        <td md-cell>\n          \x3c!-- <span class="font-size-20 grey-fg">{{queue.total || 0}}</span> --\x3e\n          <span class="font-size-20 grey-fg">{{ (queue.answered || 0) + (queue.abandoned || 0) + (queue.unmanaged || 0) }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered || 0}} ({{(queue.total) ? (queue.answered || 0) * 100/queue.total : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.abandoned || 0}} ({{(queue.total) ? (queue.abandoned || 0) * 100/queue.total : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.unmanaged || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? ((queue.sumHoldTime || 0) / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{(queue.total ? ((queue.sumDuration || 0) / queue.total) : 0) | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered ? ((queue.sumBillable || 0) / queue.answered) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n        <th md-column>{{ \'VOICE.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'VOICE.TALKING\' | translate }}</th>\n        <th md-column>{{ \'VOICE.BUSY\' | translate }}</th>\n        <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb }} ({{ queue.loggedIn }})</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.talking }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.busy }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="VOICE.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="VOICE.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/voice/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.TELEPHONES">Telephones</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.TRUNKS">Trunks</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUE_CALLS">Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ABANDONEDCALLS">Abandoned Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUE_PARAMS">Queue Parameters</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.OUTBOUND_CALLS">Outbound Calls</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/realtime/telephones/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.TELEPHONES">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTelephones()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTelephones">\n      <tr md-row>\n        <th md-column md-order-by="fullname">{{ \'VOICE.ACCOUNTNAME\' | translate }}</th>\n        <th md-column md-order-by="internal">{{ \'VOICE.INTERNAL\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PHONE_STATE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PHONE_STATUS\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.telephones">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="telephone" md-select-id="id" ng-repeat="(id, telephone) in vm.telephones">\n        <td md-cell>{{telephone.fullname}}</td>\n        <td md-cell>{{telephone.internal}}</td>\n        <td md-cell>\n          <i ng-class="vm.stateClass[telephone.state]">\n            <md-tooltip>{{\'VOICE.\' + telephone.state | uppercase | translate}}</md-tooltip>\n          </i>\n        </td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[telephone.status]">\n            <md-tooltip>{{\'VOICE.\' + telephone.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="telephone.status === \'registered\'" class="text-boxed">{{telephone.address}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTelephones" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/trunks/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.TRUNKS">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTrunks()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- TRUNKS TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head>\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n        <tr md-row>\n          <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n          <th md-column>{{ \'VOICE.TRUNK_STATUS\' | translate }}</th>\n          <th md-column>{{ \'VOICE.REGISTRY\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.trunks">\n        <td md-cell colspan="3">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, trunk) in vm.trunks">\n        <td md-cell>{{trunk.name}}</td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[trunk.status.toLowerCase()]">\n            <md-tooltip>{{\'VOICE.\' + trunk.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.status === \'registered\'" class="text-boxed">{{trunk.address}}</span>\n        </td>\n        <td md-cell>\n          <i ng-if="trunk.registry" ng-class="(trunk.stateRegistry.toLowerCase() === \'registered\') ? \'green-300-fg icon-checkbox-marked-circle\' : \'red-300-fg icon-close-circle\'">\n            <md-tooltip>{{\'VOICE.\' + trunk.stateRegistry | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.registry && trunk.host && trunk.port" class="text-boxed">{{trunk.host}}:{{trunk.port}}</span>\n          <span ng-if="!trunk.registry" translate="VOICE.NO_REGISTRY">\n            No Registry\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item>\n                <md-button ng-click="vm.goToTrunk($event, trunk)" translate="VOICE.EDIT_TRUNK">\n                  Edit Trunk\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n\x3c!-- / TRUNKS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/voicemails/create/dialog.html",'<md-dialog class="voicemail-dialog" aria-label="New Voicemail">\n  <form name="voicemailForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.FULLNAME">FullName</label>\n        <input type="text" name="fullname" ng-model="vm.voicemail.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="voicemailForm[\'fullname\'].$error" ng-show="voicemailForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.FULLNAME_REQUIRED">FullName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.voicemail.email" ng-required="vm.voicemail.attach === \'yes\'">\n\n        <div ng-messages="voicemailForm[\'email\'].$error" ng-show="voicemailForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="VOICE.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.voicemail.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n        <div ng-messages="voicemailForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newVoicemail ">\n        <label translate="VOICE.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="voicemailForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="VOICE.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="VOICE.MAILBOX">MailBox</label>\n        <input type="text" name="mailbox" ng-model="vm.voicemail.mailbox" ng-required="true" ng-disabled="!vm.newVoicemail">\n\n        <div ng-messages="voicemailForm[\'mailbox\'].$error" ng-show="voicemailForm[\'mailbox\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.MAILBOX_REQUIRED">MailBox field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ATTACH">Attach</label>\n        <md-select name="attach" ng-model="vm.voicemail.attach">\n\n          <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n          <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="voicemailForm[\'attach\'].$error" ng-show="voicemailForm[\'attach\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ATTACH_REQUIRED">Attach field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoicemail" ng-click="vm.saveVoicemail()" class="send-button md-accent md-raised" ng-disabled="voicemailForm.$invalid || voicemailForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoicemail" ng-click="vm.addNewVoicemail()" class="send-button md-accent md-raised" ng-disabled="voicemailForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEMAIL" translate-attr-aria-label="VOICE.ADD_VOICEMAIL">\n          ADD VOICEMAIL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoicemail" ng-click="vm.deleteVoicemail($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicemails/edit/view.html",'<div id="voice-voicemail" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voicemails-button md-icon-button" aria-label="Go to voicemails" ng-click="vm.gotoVoicemails()" translate translate-attr-aria-label="VOICE.GO_TO_VOICEMAILS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voicemail-image" hide-xs>\n          <img ng-src="assets/images/business/voicemails.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voicemail.id}}\n            <span ng-if="vm.voicemail.name">{{vm.voicemail.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voicemail.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoicemail()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (advancedForm.$invalid) || (messagesForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.FULLNAME">FullName</label>\n                <input type="text" name="fullname" ng-model="vm.voicemail.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'fullname\'].$error" ng-show="generalForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.FULLNAME_REQUIRED">FullName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.voicemail.email" ng-required="vm.voicemail.attach === \'yes\'" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="VOICE.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.voicemail.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block" ng-if="vm.newVoicemail ">\n                <label translate="VOICE.CONFIRM_PASSWORD">Confirm Password</label>\n                <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n                <div ng-messages="generalForm.confirmPassword.$error" role="alert" multiple>\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n                  </div>\n                  <div ng-message="passwordMatch">\n                    <span translate="VOICE.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAILBOX">MailBox</label>\n                <input type="text" name="mailbox" ng-model="vm.voicemail.mailbox" ng-required="true" disabled>\n\n                <div ng-messages="generalForm[\'mailbox\'].$error" ng-show="generalForm[\'mailbox\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAILBOX_REQUIRED">MailBox field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.VOICEMAIL_CONTEXT">Voicemail_Context</label>\n                <md-select name="context" ng-model="vm.voicemail.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.VOICEMAIL_CONTEXT"></span></div>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.VOICEMAIL_CONTEXT_REQUIRED">Voicemail_Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEZONE">TimeZone</label>\n                <input type="text" name="tz" ng-model="vm.voicemail.tz" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'tz\'].$error" ng-show="advancedForm[\'tz\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEZONE_REQUIRED">TimeZone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ATTACH">Attach</label>\n                <md-select name="attach" ng-model="vm.voicemail.attach" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'attach\'].$error" ng-show="advancedForm[\'attach\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ATTACH_REQUIRED">Attach field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ENVELOPE">Envelope</label>\n                <md-select name="envelope" ng-model="vm.voicemail.envelope" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'envelope\'].$error" ng-show="advancedForm[\'envelope\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ENVELOPE_REQUIRED">Envelope field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DELETE">Delete</label>\n                <md-select name="delete" ng-model="vm.voicemail.delete" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'delete\'].$error" ng-show="advancedForm[\'delete\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DELETE_REQUIRED">Delete field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAILBODY">EmailBody</label>\n                <input type="text" name="emailbody" ng-model="vm.voicemail.emailbody" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'emailbody\'].$error" ng-show="advancedForm[\'emailbody\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAILBODY_REQUIRED">EmailBody field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAILSUBJECT">EmailSubject</label>\n                <input type="text" name="emailsubject" ng-model="vm.voicemail.emailsubject" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'emailsubject\'].$error" ng-show="advancedForm[\'emailsubject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAILSUBJECT_REQUIRED">EmailSubject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXSECONDS">MaxSeconds</label>\n                <input type="number" name="maxsecs" ng-model="vm.voicemail.maxsecs" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'maxsecs\'].$error" ng-show="advancedForm[\'maxsecs\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXSECONDS_REQUIRED">MaxSeconds field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxSeconds must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXMESSAGES">MaxMessages</label>\n                <input type="number" name="maxmsg" ng-model="vm.voicemail.maxmsg" min="0" max="9999" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'maxmsg\'].$error" ng-show="advancedForm[\'maxmsg\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_REQUIRED">MaxMessages field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxMessages must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxMessages must be a valid greater or equal than</span> <span>9999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.MESSAGES">MESSAGES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container messages md-background-bg md-whiteframe-1dp">\n            <div ng-controller="VoicemailMessagesController as vm_dc" ng-init="vm_dc.init(vm.voicemail, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedVoicemailMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.MESSAGES">Messages</span>\n                  <ms-search-bar on-search="vm_dc.getVoicemailMessages()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedVoicemailMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedVoicemailMessages.length}} {{vm_dc.selectedVoicemailMessages.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedVoicemailMessages" csv-label="true" filename="voicemails.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedVoicemailMessages($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedVoicemailMessages" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getVoicemailMessages">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'VOICE.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="callerid">\n                        {{ \'VOICE.CALLER_ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="duration">\n                        {{ \'VOICE.DURATION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="audio">\n                        {{ \'VOICE.AUDIO\' | translate }}\n                      </th>\n                      <th md-column md-order-by="stamp">\n                        {{ \'VOICE.RECEIVED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="message" md-select-id="id" ng-repeat="message in vm_dc.voicemailMessages.rows">\n                      <td md-cell>\n                        {{message.id}}\n                      </td>\n                      <td md-cell>\n                        {{message.callerid}}\n                      </td>\n                      <td md-cell>\n                        {{message.duration}}\n                      </td>\n                      <td md-cell>\n                        \x3c!-- audio recording directive --\x3e\n                        <ms-recording id="message.id" model="\'voiceMailMessage\'"></ms-recording>\n                        \x3c!-- / audio recording directive --\x3e\n                      </td>\n                      <td md-cell>\n                        {{ message.stamp | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(message, $event)" translate="VOICE.DELETE_MESSAGE">\n                                Delete Message\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.voicemailMessages.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="VOICE.NO_MESSAGE_AVAILABLE">No message available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.voicemailMessages.count}}" md-on-paginate="vm_dc.getVoicemailMessages" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voicemails/voicemails.html",'<div id="voicemails" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEMAILS">Voicemails</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoicemails.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoicemails =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voicemails-count">\n          <span>{{vm.selectedVoicemails.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoicemails()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoicemails()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoicemails" csv-label="true" filename="voicemails.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoicemails($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VOICEMAIL TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoicemails" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoicemails">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="fullname">{{ \'VOICE.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'VOICE.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="mailbox">{{ \'VOICE.MAILBOX\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voicemails.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voicemail" md-select-id="id" ng-repeat="voicemail in vm.voicemails.rows">\n                <td md-cell ng-if="voicemail.userpic"><img class="avatar" alt="{{voicemail.name}}" ng-src="api/users/{{voicemail.id}}/avatar" /></td>\n                <td md-cell ng-if="!voicemail.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voicemail.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="id ">{{voicemail.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="fullname ">{{voicemail.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="email ">{{voicemail.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="mailbox ">{{voicemail.mailbox}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voicemail, $event    )" translate="VOICE.EDIT_VOICEMAIL">\n                          Edit Voicemail\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voicemail, $event    )" translate="VOICE.DELETE_VOICEMAIL">\n                          Delete Voicemail\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voicemails.count}}" md-on-paginate="vm.getVoicemails" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEMAIL TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEMAIL BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voicemail-button" ng-click="vm.createOrEditVoicemail($event)" aria-label="add voicemail" translate translate-attr-aria-label="VOICE.ADD_VOICEMAIL">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEMAIL BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voicePrefixes/create/dialog.html",'<md-dialog class="voicePrefix-dialog" aria-label="New voicePrefix">\n  <form name="voicePrefixForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.voicePrefix.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus>\n\n        <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n        <div ng-messages="voicePrefixForm[\'name\'].$error" ng-show="voicePrefixForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="VoiceExtensionId" ng-model="vm.voicePrefix.VoiceExtensionId" required>\n          <md-option ng-value="VoiceExtensionId.id" ng-repeat="VoiceExtensionId in vm.outboundRoutes" ng-disabled="VoiceExtensionId.canSelect === false">{{ VoiceExtensionId.exten }}</md-option>\n        </md-select>\n        <div ng-messages="voicePrefixForm[\'VoiceExtensionId\'].$error" ng-show="voicePrefixForm[\'VoiceExtensionId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CALLERIDALL">CallerIdAll</label>\n        <input type="text" name="callerIdAll" ng-model="vm.voicePrefix.callerIdAll" ng-pattern="/&quot;(.*)&quot;\\s&lt;(.*?)&gt;$/">\n\n        <div class="hint"><span translate="VOICE.HELP.CALLERIDALL"></span></div>\n        <div ng-messages="voicePrefixForm[\'callerIdAll\'].$error" ng-show="voicePrefixForm[\'callerIdAll\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CALLERIDALL_REQUIRED">CallerIdAll field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.CALLERIDALL_MUST_VALID_PATTERN" translate-values="{ regex: \'/&quot;(.*)&quot;\\s&lt;(.*?)&gt;$/\' }">CallerIdAll must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.voicePrefix.description">\n\n        <div ng-messages="voicePrefixForm[\'description\'].$error" ng-show="voicePrefixForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newvoicePrefix" ng-click="vm.savevoicePrefix()" class="send-button md-accent md-raised" ng-disabled="voicePrefixForm.$invalid || voicePrefixForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newvoicePrefix" ng-click="vm.addNewvoicePrefix()" class="send-button md-accent md-raised" ng-disabled="voicePrefixForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEPREFIX" translate-attr-aria-label="VOICE.ADD_VOICEPREFIX">\n          ADD VOICEPREFIX\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newvoicePrefix" ng-click="vm.deletevoicePrefix($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/edit/agentadd/agentadd.html",'<md-dialog class="voicePrefix-dialog" aria-label="voicePrefix" ng-init="vm.onInit()">\n  <form name="voicePrefixForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.AGENTADD_VOICEPREFIX">Add Agent to voicePrefix</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/edit/teamadd/teamadd.html",'<md-dialog class="voicePrefix-dialog" aria-label="voicePrefix" ng-init="vm.onInit()">\n  <form name="voicePrefixForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/voicePrefixes.html",'<div id="voicePrefixes" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEPREFIXES">VoicePrefixes</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoicePrefixes.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoicePrefixes =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voicePrefixes-count">\n          <span>{{vm.selectedVoicePrefixes.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoicePrefixes()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoicePrefixes()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoicePrefixes" csv-label="true" filename="voicePrefixes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoicePrefixes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VOICEPREFIX TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoicePrefixes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoicePrefixes">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="VoiceExtensionId">{{ \'VOICE.OUTBOUNDROUTE\' | translate }}</th>\n                <th md-column md-order-by="callerIdAll">{{ \'VOICE.CALLERIDALL\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voicePrefixes.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voicePrefix" md-select-id="id" ng-repeat="voicePrefix in vm.voicePrefixes.rows">\n                <td md-cell ng-if="voicePrefix.userpic"><img class="avatar" alt="{{voicePrefix.name}}" ng-src="api/users/{{voicePrefix.id}}/avatar" /></td>\n                <td md-cell ng-if="!voicePrefix.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voicePrefix.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="id ">{{voicePrefix.id}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="name ">{{voicePrefix.name}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="VoiceExtensionId ">{{ (vm.outboundRoutes | filter : {\'id\':voicePrefix.VoiceExtensionId} : true)[0].exten }}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="callerIdAll ">{{voicePrefix.callerIdAll}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="description ">{{voicePrefix.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(voicePrefix, $event    )" translate="VOICE.EDIT_VOICEPREFIX">\n                          Edit voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(voicePrefix, $event    )" translate="VOICE.AGENTADD_VOICEPREFIX">\n                          AgentAdd voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(voicePrefix, $event    )" translate="VOICE.TEAMADD_VOICEPREFIX">\n                          teamadd voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voicePrefix, $event    )" translate="VOICE.DELETE_VOICEPREFIX">\n                          Delete voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voicePrefixes.count}}" md-on-paginate="vm.getVoicePrefixes" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEPREFIX TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEPREFIX BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voicePrefix-button" ng-click="vm.createOrEditvoicePrefix($event)" aria-label="add voicePrefix" translate translate-attr-aria-label="VOICE.ADD_VOICEPREFIX">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEPREFIX BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voiceQueues/create/dialog.html",'<md-dialog class="voiceQueue-dialog" aria-label="New VoiceQueue">\n  <form name="voiceQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.voiceQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newVoiceQueue">\n\n        <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n        <div ng-messages="voiceQueueForm[\'name\'].$error" ng-show="voiceQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.voiceQueue.strategy" required>\n          <md-option ng-value="\'ringall\'">Ringall</md-option>\n          <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n          <md-option ng-value="\'leastrecent\'">Least Recent</md-option>\n          <md-option ng-value="\'fewestcalls\'">Fewest Calls</md-option>\n          <md-option ng-value="\'random\'">Random</md-option>\n          <md-option ng-value="\'linear\'">Linear</md-option>\n          <md-option ng-value="\'wrandom\'">Weight Random</md-option>\n        </md-select>\n        <div ng-messages="voiceQueueForm[\'strategy\'].$error" ng-show="voiceQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.voiceQueue.description">\n\n        <div ng-messages="voiceQueueForm[\'description\'].$error" ng-show="voiceQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoiceQueue" ng-click="vm.saveVoiceQueue()" class="send-button md-accent md-raised" ng-disabled="voiceQueueForm.$invalid || voiceQueueForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoiceQueue" ng-click="vm.addNewVoiceQueue()" class="send-button md-accent md-raised" ng-disabled="voiceQueueForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEQUEUE" translate-attr-aria-label="VOICE.ADD_VOICEQUEUE">\n          ADD VOICEQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoiceQueue" ng-click="vm.deleteVoiceQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",'<md-dialog class="voiceQueue-dialog" aria-label="voiceQueue" ng-init="vm.onInit()">\n  <form name="voiceQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.AGENTADD_VOICEQUEUE">Add Agent to voiceQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="VOICE.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="voiceQueueForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",'<md-dialog class="voiceQueue-dialog" aria-label="voiceQueue" ng-init="vm.onInit()">\n  <form name="voiceQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="VOICE.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="voiceQueueForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/view.html",'<div id="voice-voiceQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voiceQueues-button md-icon-button" aria-label="Go to voiceQueues" ng-click="vm.gotoVoiceQueues()" translate translate-attr-aria-label="VOICE.GO_TO_VOICEQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voiceQueue-image" hide-xs>\n          <img ng-src="assets/images/business/voiceQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voiceQueue.id}}\n            <span ng-if="vm.voiceQueue.name">{{vm.voiceQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voiceQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.voiceQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="VOICE.TEAMADD_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.voiceQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="VOICE.AGENTADD_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.voiceQueue, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="VOICE.GOTO_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoiceQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (settingsForm.$invalid) || (announcementsForm.$invalid) || (advancedForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.voiceQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.voiceQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ringall\'">Ringall</md-option>\n                  <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n                  <md-option ng-value="\'leastrecent\'">Least Recent</md-option>\n                  <md-option ng-value="\'fewestcalls\'">Fewest Calls</md-option>\n                  <md-option ng-value="\'random\'">Random</md-option>\n                  <md-option ng-value="\'linear\'">Linear</md-option>\n                  <md-option ng-value="\'wrandom\'">Weight Random</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEOUT">Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.voiceQueue.timeout" min="0" value="15" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.TIMEOUT"></span></div>\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXLENGTH">MaxLength</label>\n                <input type="number" name="maxlen" ng-model="vm.voiceQueue.maxlen" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MAXLENGTH"></span></div>\n                <div ng-messages="generalForm[\'maxlen\'].$error" ng-show="generalForm[\'maxlen\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXLENGTH_REQUIRED">MaxLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RETRY">Retry</label>\n                <input type="number" name="retry" ng-model="vm.voiceQueue.retry" min="0" value="2" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.RETRY"></span></div>\n                <div ng-messages="generalForm[\'retry\'].$error" ng-show="generalForm[\'retry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RETRY_REQUIRED">Retry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Retry must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WRAPUPTIME">WrapupTime</label>\n                <input type="number" name="wrapuptime" ng-model="vm.voiceQueue.wrapuptime" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.WRAPUPTIME"></span></div>\n                <div ng-messages="generalForm[\'wrapuptime\'].$error" ng-show="generalForm[\'wrapuptime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WRAPUPTIME_REQUIRED">WrapupTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WrapupTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WEIGHT">Weight</label>\n                <input type="number" name="weight" ng-model="vm.voiceQueue.weight" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.WEIGHT"></span></div>\n                <div ng-messages="generalForm[\'weight\'].$error" ng-show="generalForm[\'weight\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WEIGHT_REQUIRED">Weight field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Weight must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.JOINWHENEMPTY">JoinWhenEmpty</label>\n                <md-select name="joinempty" ng-model="vm.voiceQueue.joinempty" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'no\'" ng-disabled="vm.voiceQueue.joinempty.length === 1  && vm.voiceQueue.joinempty[0] === \'no\'">no</md-option>\n                  <md-option ng-value="\'yes\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'yes\'">yes</md-option>\n                  <md-option ng-value="\'strict\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'strict\'">strict</md-option>\n                  <md-option ng-value="\'loose\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'loose\'">loose</md-option>\n                  <md-option ng-value="\'paused\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'paused\'">paused</md-option>\n                  <md-option ng-value="\'penalty\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'penalty\'">penalty</md-option>\n                  <md-option ng-value="\'inuse\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'inuse\'">inuse</md-option>\n                  <md-option ng-value="\'ringing\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'ringing\'">ringing</md-option>\n                  <md-option ng-value="\'unavailable\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'unavailable\'">unavailable</md-option>\n                  <md-option ng-value="\'invalid\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'invalid\'">invalid</md-option>\n                  <md-option ng-value="\'unknown\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'unknown\'">unknown</md-option>\n                  <md-option ng-value="\'wrapup\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'wrapup\'">wrapup</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.JOINWHENEMPTY"></span></div>\n                <div ng-messages="generalForm[\'joinempty\'].$error" ng-show="generalForm[\'joinempty\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.JOINWHENEMPTY_REQUIRED">JoinWhenEmpty field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.LEAVEWHENEMPTY">LeaveWhenEmpty</label>\n                <md-select name="leavewhenempty" ng-model="vm.voiceQueue.leavewhenempty" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'no\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'no\'">no</md-option>\n                  <md-option ng-value="\'yes\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'yes\'">yes</md-option>\n                  <md-option ng-value="\'strict\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'strict\'">strict</md-option>\n                  <md-option ng-value="\'loose\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'loose\'">loose</md-option>\n                  <md-option ng-value="\'paused\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'paused\'">paused</md-option>\n                  <md-option ng-value="\'penalty\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'penalty\'">penalty</md-option>\n                  <md-option ng-value="\'inuse\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'inuse\'">inuse</md-option>\n                  <md-option ng-value="\'ringing\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'ringing\'">ringing</md-option>\n                  <md-option ng-value="\'unavailable\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'unavailable\'">unavailable</md-option>\n                  <md-option ng-value="\'invalid\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'invalid\'">invalid</md-option>\n                  <md-option ng-value="\'unknown\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'unknown\'">unknown</md-option>\n                  <md-option ng-value="\'wrapup\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'wrapup\'">wrapup</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.LEAVEWHENEMPTY"></span></div>\n                <div ng-messages="generalForm[\'leavewhenempty\'].$error" ng-show="generalForm[\'leavewhenempty\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.LEAVEWHENEMPTY_REQUIRED">LeaveWhenEmpty field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MUSICONHOLD">MusicOnHold</label>\n                <md-select name="musiconhold" ng-model="vm.voiceQueue.musiconhold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="musiconhold.name" ng-repeat="musiconhold in vm.musiconholds" ng-disabled="musiconhold.canSelect === false">{{ musiconhold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MUSICONHOLD"></span></div>\n                <div ng-messages="generalForm[\'musiconhold\'].$error" ng-show="generalForm[\'musiconhold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MUSICONHOLD_REQUIRED">MusicOnHold field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCETOAGENT">AnnounceToAgent</label>\n                <md-select name="announce" ng-model="vm.voiceQueue.announce" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'FALSE\'">None</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + announce.save_name" ng-repeat="announce in vm.sounds" ng-disabled="announce.canSelect === false">{{ announce.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCETOAGENT"></span></div>\n                <div ng-messages="generalForm[\'announce\'].$error" ng-show="generalForm[\'announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCETOAGENT_REQUIRED">AnnounceToAgent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.voiceQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ANNOUNCEMENTS">ANNOUNCEMENTS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container settings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.SETTINGS">SETTINGS</div>\n            </div>\n            <form name="settingsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEFREQUENCY">AnnounceFrequency</label>\n                <input type="number" name="announce_frequency" ng-model="vm.voiceQueue.announce_frequency" min="0" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'announce_frequency\'].$error" ng-show="settingsForm[\'announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEFREQUENCY_REQUIRED">AnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINANNOUNCEFREQUENCY">MinAnnounceFrequency</label>\n                <input type="number" name="min_announce_frequency" ng-model="vm.voiceQueue.min_announce_frequency" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MINANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'min_announce_frequency\'].$error" ng-show="settingsForm[\'min_announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINANNOUNCEFREQUENCY_REQUIRED">MinAnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MinAnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PERIODICANNOUNCEFREQUENCY">PeriodicAnnounceFrequency</label>\n                <input type="number" name="periodic_announce_frequency" ng-model="vm.voiceQueue.periodic_announce_frequency" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.PERIODICANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'periodic_announce_frequency\'].$error" ng-show="settingsForm[\'periodic_announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCEFREQUENCY_REQUIRED">PeriodicAnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">PeriodicAnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RANDOMPERIODICANNOUNCE">RandomPeriodicAnnounce</label>\n                <md-select name="random_periodic_announce" ng-model="vm.voiceQueue.random_periodic_announce" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RANDOMPERIODICANNOUNCE"></span></div>\n                <div ng-messages="settingsForm[\'random_periodic_announce\'].$error" ng-show="settingsForm[\'random_periodic_announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RANDOMPERIODICANNOUNCE_REQUIRED">RandomPeriodicAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEHOLDTIME">AnnounceHoldtime</label>\n                <md-select name="announce_holdtime" ng-model="vm.voiceQueue.announce_holdtime" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'once\'">Once</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEHOLDTIME"></span></div>\n                <div ng-messages="settingsForm[\'announce_holdtime\'].$error" ng-show="settingsForm[\'announce_holdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEHOLDTIME_REQUIRED">AnnounceHoldtime field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCECALLERPOSITION">AnnounceCallerPosition</label>\n                <md-select name="announce_position" ng-model="vm.voiceQueue.announce_position" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'limit\'">Limit</md-option>\n                  <md-option ng-value="\'more\'">More</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCECALLERPOSITION"></span></div>\n                <div ng-messages="settingsForm[\'announce_position\'].$error" ng-show="settingsForm[\'announce_position\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCECALLERPOSITION_REQUIRED">AnnounceCallerPosition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEPOSITIONLIMIT">AnnouncePositionLimit</label>\n                <input type="number" name="announce_position_limit" ng-model="vm.voiceQueue.announce_position_limit" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEPOSITIONLIMIT"></span></div>\n                <div ng-messages="settingsForm[\'announce_position_limit\'].$error" ng-show="settingsForm[\'announce_position_limit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEPOSITIONLIMIT_REQUIRED">AnnouncePositionLimit field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.REPORTHOLDTIMEAGENT">ReportHoldtimeAgent</label>\n                <md-select name="reportholdtime" ng-model="vm.voiceQueue.reportholdtime" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.REPORTHOLDTIMEAGENT"></span></div>\n                <div ng-messages="settingsForm[\'reportholdtime\'].$error" ng-show="settingsForm[\'reportholdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.REPORTHOLDTIMEAGENT_REQUIRED">ReportHoldtimeAgent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="voiceQueue-detail-form-container announcements md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ANNOUNCEMENTS">ANNOUNCEMENTS</div>\n            </div>\n            <form name="announcementsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PERIODICANNOUNCE">PeriodicAnnounce</label>\n                <md-select name="periodic_announce" ng-model="vm.voiceQueue.periodic_announce" autofocus multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Default</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + periodic_announce.save_name" ng-repeat="periodic_announce in vm.sounds" ng-disabled="periodic_announce.canSelect === false">{{ periodic_announce.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.PERIODICANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'periodic_announce\'].$error" ng-show="announcementsForm[\'periodic_announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCE_REQUIRED">PeriodicAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.HOLDTIMEANNOUNCE">HoldTimeAnnounce</label>\n                <md-select name="queue_reporthold" ng-model="vm.voiceQueue.queue_reporthold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_reporthold.save_name" ng-repeat="queue_reporthold in vm.sounds" ng-disabled="queue_reporthold.canSelect === false">{{ queue_reporthold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.HOLDTIMEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_reporthold\'].$error" ng-show="announcementsForm[\'queue_reporthold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.HOLDTIMEANNOUNCE_REQUIRED">HoldTimeAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.YOUARENEXTANNOUNCE">YouareNextAnnounce</label>\n                <md-select name="queue_youarenext" ng-model="vm.voiceQueue.queue_youarenext" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_youarenext.save_name" ng-repeat="queue_youarenext in vm.sounds" ng-disabled="queue_youarenext.canSelect === false">{{ queue_youarenext.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.YOUARENEXTANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_youarenext\'].$error" ng-show="announcementsForm[\'queue_youarenext\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.YOUARENEXTANNOUNCE_REQUIRED">YouareNextAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THEREAREANNOUNCE">ThereareAnnounce</label>\n                <md-select name="queue_thereare" ng-model="vm.voiceQueue.queue_thereare" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_thereare.save_name" ng-repeat="queue_thereare in vm.sounds" ng-disabled="queue_thereare.canSelect === false">{{ queue_thereare.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.THEREAREANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_thereare\'].$error" ng-show="announcementsForm[\'queue_thereare\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THEREAREANNOUNCE_REQUIRED">ThereareAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WAITINGCALLSANNOUNCE">WaitingCallsAnnounce</label>\n                <md-select name="queue_callswaiting" ng-model="vm.voiceQueue.queue_callswaiting" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_callswaiting.save_name" ng-repeat="queue_callswaiting in vm.sounds" ng-disabled="queue_callswaiting.canSelect === false">{{ queue_callswaiting.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.WAITINGCALLSANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_callswaiting\'].$error" ng-show="announcementsForm[\'queue_callswaiting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WAITINGCALLSANNOUNCE_REQUIRED">WaitingCallsAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ESTIMATEDHOLDTIMEANNOUNCE">EstimatedHoldTimeAnnounce</label>\n                <md-select name="queue_holdtime" ng-model="vm.voiceQueue.queue_holdtime" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_holdtime.save_name" ng-repeat="queue_holdtime in vm.sounds" ng-disabled="queue_holdtime.canSelect === false">{{ queue_holdtime.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ESTIMATEDHOLDTIMEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_holdtime\'].$error" ng-show="announcementsForm[\'queue_holdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ESTIMATEDHOLDTIMEANNOUNCE_REQUIRED">EstimatedHoldTimeAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINUTESANNOUNCE">MinutesAnnounce</label>\n                <md-select name="queue_minutes" ng-model="vm.voiceQueue.queue_minutes" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_minutes.save_name" ng-repeat="queue_minutes in vm.sounds" ng-disabled="queue_minutes.canSelect === false">{{ queue_minutes.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MINUTESANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_minutes\'].$error" ng-show="announcementsForm[\'queue_minutes\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINUTESANNOUNCE_REQUIRED">MinutesAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINUTEANNOUNCE">MinuteAnnounce</label>\n                <md-select name="queue_minute" ng-model="vm.voiceQueue.queue_minute" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_minute.save_name" ng-repeat="queue_minute in vm.sounds" ng-disabled="queue_minute.canSelect === false">{{ queue_minute.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MINUTEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_minute\'].$error" ng-show="announcementsForm[\'queue_minute\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINUTEANNOUNCE_REQUIRED">MinuteAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SECONDSANNOUNCE">SecondsAnnounce</label>\n                <md-select name="queue_seconds" ng-model="vm.voiceQueue.queue_seconds" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_seconds.save_name" ng-repeat="queue_seconds in vm.sounds" ng-disabled="queue_seconds.canSelect === false">{{ queue_seconds.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SECONDSANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_seconds\'].$error" ng-show="announcementsForm[\'queue_seconds\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SECONDSANNOUNCE_REQUIRED">SecondsAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THANKYOUANNOUNCE">ThankYouAnnounce</label>\n                <md-select name="queue_thankyou" ng-model="vm.voiceQueue.queue_thankyou" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_thankyou.save_name" ng-repeat="queue_thankyou in vm.sounds" ng-disabled="queue_thankyou.canSelect === false">{{ queue_thankyou.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.THANKYOUANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_thankyou\'].$error" ng-show="announcementsForm[\'queue_thankyou\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THANKYOUANNOUNCE_REQUIRED">ThankYouAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.voiceQueue.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="VOICE.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceQueue.acw" class="md-block">\n                <label translate="VOICE.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.voiceQueue.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedForm[\'acwTimeout\'].$error" ng-show="advancedForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.AUTOPAUSE">AutoPause</label>\n                <md-select name="autopause" ng-model="vm.voiceQueue.autopause" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'all\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.AUTOPAUSE"></span></div>\n                <div ng-messages="advancedForm[\'autopause\'].$error" ng-show="advancedForm[\'autopause\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AUTOPAUSE_REQUIRED">AutoPause field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RINGINUSE">RingInUse</label>\n                <md-select name="ringinuse" ng-model="vm.voiceQueue.ringinuse" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RINGINUSE"></span></div>\n                <div ng-messages="advancedForm[\'ringinuse\'].$error" ng-show="advancedForm[\'ringinuse\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RINGINUSE_REQUIRED">RingInUse field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MEMBERDELAY">MemberDelay</label>\n                <input type="number" name="memberdelay" ng-model="vm.voiceQueue.memberdelay" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MEMBERDELAY"></span></div>\n                <div ng-messages="advancedForm[\'memberdelay\'].$error" ng-show="advancedForm[\'memberdelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MEMBERDELAY_REQUIRED">MemberDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MemberDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEOUTRESTART">TimeoutRestart</label>\n                <md-select name="timeoutrestart" ng-model="vm.voiceQueue.timeoutrestart" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.TIMEOUTRESTART"></span></div>\n                <div ng-messages="advancedForm[\'timeoutrestart\'].$error" ng-show="advancedForm[\'timeoutrestart\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEOUTRESTART_REQUIRED">TimeoutRestart field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.voiceQueue.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedForm[\'monitor_format\'].$error" ng-show="advancedForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <input type="text" name="context" ng-model="vm.voiceQueue.context" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.CONTEXT"></span></div>\n                <div ng-messages="advancedForm[\'context\'].$error" ng-show="advancedForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETINTERFACEVARIABLES">SetInterfaceVariables</label>\n                <md-select name="setinterfacevar" ng-model="vm.voiceQueue.setinterfacevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETINTERFACEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setinterfacevar\'].$error" ng-show="advancedForm[\'setinterfacevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETINTERFACEVARIABLES_REQUIRED">SetInterfaceVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETQUEUEVARIABLES">SetQueueVariables</label>\n                <md-select name="setqueuevar" ng-model="vm.voiceQueue.setqueuevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETQUEUEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueuevar\'].$error" ng-show="advancedForm[\'setqueuevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETQUEUEVARIABLES_REQUIRED">SetQueueVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETQUEUEENTRYVARIABLES">SetQueueEntryVariables</label>\n                <md-select name="setqueueentryvar" ng-model="vm.voiceQueue.setqueueentryvar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETQUEUEENTRYVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueueentryvar\'].$error" ng-show="advancedForm[\'setqueueentryvar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETQUEUEENTRYVARIABLES_REQUIRED">SetQueueEntryVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SERVICELEVEL">ServiceLevel</label>\n                <input type="number" name="servicelevel" ng-model="vm.voiceQueue.servicelevel" min="0" max="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.SERVICELEVEL"></span></div>\n                <div ng-messages="advancedForm[\'servicelevel\'].$error" ng-show="advancedForm[\'servicelevel\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_REQUIRED">ServiceLevel field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ServiceLevel must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_MUST_BE_LESS_THAN_OR_EQUAL_TO">ServiceLevel must be a valid greater or equal than</span> <span>100</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.voiceQueue.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceQueue.mandatoryDisposition" class="md-block">\n                <label translate="VOICE.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.voiceQueue.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voiceQueues/voiceQueues.html",'<div id="voiceQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEQUEUES">VoiceQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoiceQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoiceQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voiceQueues-count">\n          <span>{{vm.selectedVoiceQueues.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoiceQueues()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoiceQueues()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoiceQueues" csv-label="true" filename="voiceQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoiceQueues($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VOICEQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoiceQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'VOICE.STRATEGY\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voiceQueues.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voiceQueue" md-select-id="id" ng-repeat="voiceQueue in vm.voiceQueues.rows">\n                <td md-cell ng-if="voiceQueue.userpic"><img class="avatar" alt="{{voiceQueue.name}}" ng-src="api/users/{{voiceQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!voiceQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voiceQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="id ">{{voiceQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="name ">{{voiceQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="strategy ">{{ vm.arraystrategy[voiceQueue.strategy].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="description ">{{voiceQueue.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voiceQueue, $event    )" translate="VOICE.EDIT_VOICEQUEUE">\n                          Edit VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(voiceQueue, $event    )" translate="VOICE.TEAMADD_VOICEQUEUE">\n                          teamadd VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(voiceQueue, $event    )" translate="VOICE.AGENTADD_VOICEQUEUE">\n                          agentadd VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voiceQueue, $event    )" translate="VOICE.DELETE_VOICEQUEUE">\n                          Delete VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(voiceQueue, $event    )" translate="VOICE.GOTOREALTIME_VOICEQUEUE">\n                          goToRealtime VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceQueues.count}}" md-on-paginate="vm.getVoiceQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voiceQueue-button" ng-click="vm.createOrEditVoiceQueue($event)" aria-label="add voiceQueue" translate translate-attr-aria-label="VOICE.ADD_VOICEQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voiceRecordings/create/dialog.html",'<md-dialog class="voiceRecording-dialog" aria-label="New VoiceRecording">\n  <form name="voiceRecordingForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.RATING">Rating</label>\n        <md-select name="rating" ng-model="vm.voiceRecording.rating" autofocus ng-disabled="!vm.newVoiceRecording && !vm.crudPermissions.canEdit">\n          <md-option ng-value="null">{{\'VOICE.NO_RATING\' | translate}}</md-option>\n          <md-option value="1">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n          </md-option>\n          <md-option value="2">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n          </md-option>\n          <md-option value="3">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n          </md-option>\n          <md-option value="4">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n          </md-option>\n          <md-option value="5">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n          </md-option>\n        </md-select>\n        <div ng-messages="voiceRecordingForm[\'rating\'].$error" ng-show="voiceRecordingForm[rating].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RATING_REQUIRED">Rating field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoiceRecording" ng-click="vm.saveVoiceRecording()" class="send-button md-accent md-raised" ng-disabled="voiceRecordingForm.$invalid || voiceRecordingForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoiceRecording" ng-click="vm.addNewVoiceRecording()" class="send-button md-accent md-raised" ng-disabled="voiceRecordingForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICERECORDING" translate-attr-aria-label="VOICE.ADD_VOICERECORDING">\n          ADD VOICERECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoiceRecording" ng-click="vm.deleteVoiceRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceRecordings/edit/view.html",'<div id="voice-voiceRecording" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voiceRecordings-button md-icon-button" aria-label="Go to voiceRecordings" ng-click="vm.gotoVoiceRecordings()" translate translate-attr-aria-label="VOICE.GO_TO_VOICERECORDINGS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voiceRecording-image" hide-xs>\n          <img ng-src="assets/images/business/voiceRecordings.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voiceRecording.id}}\n            <span ng-if="vm.voiceRecording.name">{{vm.voiceRecording.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voiceRecording.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoiceRecording()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(voiceRecordingsForm.$invalid) || (transcriptForm.$invalid) || (sentimentAnalysisForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.GENERAL">GENERAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceRecording-detail-form-container voicerecordings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.VOICERECORDINGS">VOICERECORDINGS</div>\n            </div>\n            <form name="voiceRecordingsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TYPE">Type</label>\n                <input type="" name="type" ng-model="vm.voiceRecording.type" autofocus disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'type\'].$error" ng-show="voiceRecordingsForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.UNIQUEID">UniqueId</label>\n                <input type="" name="uniqueid" ng-model="vm.voiceRecording.uniqueid" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'uniqueid\'].$error" ng-show="voiceRecordingsForm[\'uniqueid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.UNIQUEID_REQUIRED">UniqueId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CALLER">Caller</label>\n                <input type="" name="calleridnum" ng-model="vm.voiceRecording.calleridnum" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'calleridnum\'].$error" ng-show="voiceRecordingsForm[\'calleridnum\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CALLER_REQUIRED">Caller field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CALLED">Called</label>\n                <input type="" name="exten" ng-model="vm.voiceRecording.exten" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'exten\'].$error" ng-show="voiceRecordingsForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CALLED_REQUIRED">Called field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONNECTED">Connected</label>\n                <input type="" name="connectedlinenum" ng-model="vm.voiceRecording.connectedlinenum" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'connectedlinenum\'].$error" ng-show="voiceRecordingsForm[\'connectedlinenum\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONNECTED_REQUIRED">Connected field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.QUEUE">Queue</label>\n                <input type="" name="queue" ng-model="vm.voiceRecording.queue" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'queue\'].$error" ng-show="voiceRecordingsForm[\'queue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.AGENT">Agent</label>\n                <input type="text" name="membername" ng-model="vm.voiceRecording.membername" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'membername\'].$error" ng-show="voiceRecordingsForm[\'membername\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RATING">Rating</label>\n                <md-select name="rating" ng-model="vm.voiceRecording.rating" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">{{\'VOICE.NO_RATING\' | translate}}</md-option>\n                  <md-option value="1">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n                  </md-option>\n                  <md-option value="2">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n                  </md-option>\n                  <md-option value="3">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n                  </md-option>\n                  <md-option value="4">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n                  </md-option>\n                  <md-option value="5">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n                  </md-option>\n                </md-select>\n                <div ng-messages="voiceRecordingsForm[\'rating\'].$error" ng-show="voiceRecordingsForm[rating].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RATING_REQUIRED">Rating field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DISPOSITION">Disposition</label>\n                <input type="text" name="userDisposition" ng-model="vm.voiceRecording.userDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userDisposition\'].$error" ng-show="voiceRecordingsForm[\'userDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SECOND_LEVEL_DISPOSITION">Second_Level_Disposition</label>\n                <input type="text" name="userSecondDisposition" ng-model="vm.voiceRecording.userSecondDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userSecondDisposition\'].$error" ng-show="voiceRecordingsForm[\'userSecondDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SECOND_LEVEL_DISPOSITION_REQUIRED">Second_Level_Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THIRD_LEVEL_DISPOSITION">Third_Level_Disposition</label>\n                <input type="text" name="userThirdDisposition" ng-model="vm.voiceRecording.userThirdDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userThirdDisposition\'].$error" ng-show="voiceRecordingsForm[\'userThirdDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THIRD_LEVEL_DISPOSITION_REQUIRED">Third_Level_Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.license.ai">\n        <md-tab-label>\n          <span translate="VOICE.TRANSCRIPTANALYSIS">TRANSCRIPTANALYSIS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceRecording-detail-form-container transcript md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.TRANSCRIPT">TRANSCRIPT</div>\n            </div>\n            <form name="transcriptForm" novalidate>\n              <md-input-container ng-if="vm.voiceRecording.transcribeStatus == \'COMPLETED\'" class="md-block">\n                <label translate="VOICE.TEXT">Text</label>\n                <textarea name="fileText" ng-model="vm.voiceRecording.fileText" autofocus ng-disabled="true"></textarea>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceRecording.transcribeStatus == \'FAILED\'" class="md-block">\n                <label translate="VOICE.FAILUREREASON">FailureReason</label>\n                <textarea name="failureReason" ng-model="vm.voiceRecording.failureReason" ng-disabled="true"></textarea>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="voiceRecording-detail-form-container sentimentanalysis md-background-bg md-whiteframe-1dp">\n            <div ng-controller="VoiceRecordingSentimentStatisticsController as vm_ss" ng-init="vm_ss.init(vm.voiceRecording)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.SENTIMENTANALYSIS" style="width: 50px;">Sentiment Analysis</span>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8 sentiment" ng-class="vm_ss.voiceRecording.sentiment">\n                        {{vm_ss.voiceRecording.sentiment}}\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sPositive || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_POSITIVE\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sNegative || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_NEGATIVE\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 4 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sNeutral || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_NEUTRAL\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 4 --\x3e\n\n                \x3c!-- WIDGET 5 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sMixed || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_MIXED\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 5 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voiceRecordings/voiceRecordings.html",'<div id="voiceRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICERECORDINGS">VoiceRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceRecordings()"></ms-quick-filter>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoiceRecordings.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoiceRecordings =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voiceRecordings-count">\n          <span>{{vm.selectedVoiceRecordings.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoiceRecordings()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoiceRecordings()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoiceRecordings" csv-label="true" filename="voiceRecordings.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runtranscribesentimentSelectedVoiceRecordings($event)" aria-label="transcribesentiment selected" translate translate-attr-label="VOICERECORDINGS.TRANSCRIBESENTIMENT_SELECTED">\n          <md-icon md-font-icon="icon-text-to-speech"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runtranscribeSelectedVoiceRecordings($event)" aria-label="transcribe selected" translate translate-attr-label="VOICERECORDINGS.TRANSCRIBE_SELECTED">\n          <md-icon md-font-icon="icon-format-size"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNTRANSCRIBE_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runsentimentSelectedVoiceRecordings($event)" aria-label="transcribe selected" translate translate-attr-label="VOICERECORDINGS.SENTIMENT_SELECTED">\n          <md-icon md-font-icon="icon-heart-outline"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNSENTIMENT_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoiceRecordings($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VOICERECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoiceRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n                <th md-column md-order-by="uniqueid">{{ \'VOICE.UNIQUEID\' | translate }}</th>\n                <th md-column md-order-by="calleridnum">{{ \'VOICE.CALLER\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.CALLED\' | translate }}</th>\n                <th md-column md-order-by="connectedlinenum">{{ \'VOICE.CONNECTED\' | translate }}</th>\n                <th md-column md-order-by="queue">{{ \'VOICE.QUEUE\' | translate }}</th>\n                <th md-column md-order-by="membername">{{ \'VOICE.AGENT\' | translate }}</th>\n                <th md-column md-order-by="rating">{{ \'VOICE.RATING\' | translate }}</th>\n                <th md-column>{{ \'VOICE.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'VOICE.DATE\' | translate }}</th>\n                <th md-column md-order-by="userDisposition">{{ \'VOICE.DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="userSecondDisposition">{{ \'VOICE.SECOND_LEVEL_DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="userThirdDisposition">{{ \'VOICE.THIRD_LEVEL_DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="transcribeStatus" ng-if="vm.license.ai">{{ \'VOICE.TRANSCRIBE\' | translate }}</th>\n                <th md-column md-order-by="sentiment" ng-if="vm.license.ai">{{ \'VOICE.SENTIMENTANALYSIS\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voiceRecordings.rows.length">\n                <td md-cell colspan="16">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voiceRecording" md-select-id="id" ng-repeat="voiceRecording in vm.voiceRecordings.rows">\n                <td md-cell ng-if="voiceRecording.userpic"><img class="avatar" alt="{{voiceRecording.name}}" ng-src="api/users/{{voiceRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!voiceRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voiceRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="type ">{{voiceRecording.type}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="uniqueid ">{{voiceRecording.uniqueid}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="calleridnum " privacy ng-cloak>{{voiceRecording.calleridnum}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="exten " privacy ng-cloak>{{voiceRecording.exten}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="connectedlinenum " privacy ng-cloak>{{voiceRecording.connectedlinenum}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="queue ">{{voiceRecording.queue}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="membername " privacy ng-cloak>{{voiceRecording.membername}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="rating ">\n                  <md-icon md-font-icon="icon-star" style="color:red" ng-show="voiceRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:voiceRecording.rating"></md-icon><span ng-hide="voiceRecording.rating" translate="VOICE.NO_RATING">No rating</span>\n                </td>\n                <td md-cell class="audio " ng-switch="voiceRecording.format">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording ng-switch-when=".wav" id="voiceRecording.id" model="\'voiceRecording\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                  <span ng-switch-when=".gsm|.WAV" ng-switch-when-separator="|">\n                    <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n                  </span>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="createdAt ">{{voiceRecording.createdAt | date:\'medium\' }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userDisposition ">{{voiceRecording.userDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userSecondDisposition ">{{voiceRecording.userSecondDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userThirdDisposition ">{{voiceRecording.userThirdDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="transcribeStatus " ng-if="vm.license.ai">{{ \'VOICE.TRANSCRIBESTATUS_\' + voiceRecording.transcribeStatus | translate}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="sentiment " ng-if="vm.license.ai">{{voiceRecording.sentiment}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voiceRecording, $event    )" translate="VOICE.EDIT_VOICERECORDING">\n                          Edit VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'NEW\' && vm.license.ai">\n\n                        <md-button ng-click="vm.runtranscriberuntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNTRANSCRIBE_VOICERECORDING">\n                          RunTranscribe VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'NEW\' && vm.license.ai">\n\n                        <md-button ng-click="vm.runtranscribesentimentruntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING">\n                          RunTranscribeSentiment VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\' && voiceRecording.sentiment == null && vm.license.ai">\n\n                        <md-button ng-click="vm.runsentimentruntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNSENTIMENT_VOICERECORDING">\n                          RunSentiment VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\' && vm.license.ai">\n\n                        <md-button ng-click="vm.downloadtranscribefile2(voiceRecording, $event    )" translate="VOICE.DOWNLOADTRANSCRIBE_VOICERECORDING">\n                          DownloadTranscribe VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadVoiceRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(voiceRecording, $event  , \'voice/recordings\'   )" translate="VOICE.DOWNLOAD_VOICERECORDING">\n                          Download VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voiceRecording, $event    )" translate="VOICE.DELETE_VOICERECORDING">\n                          Delete VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceRecordings.count}}" md-on-paginate="vm.getVoiceRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICERECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="WHATSAPP.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="WHATSAPP.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="WHATSAPP.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/whatsapp/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/create/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.whatsappAccount.name" ng-required="true" autofocus ng-disabled="!vm.newWhatsappAccount">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n        <div ng-messages="whatsappAccountForm[\'name\'].$error" ng-show="whatsappAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.whatsappAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'key\'].$error" ng-show="whatsappAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.whatsappAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="WHATSAPP.HELP.LIST"></span></div>\n        <div ng-messages="whatsappAccountForm[\'ListId\'].$error" ng-show="whatsappAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.whatsappAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="whatsappAccountForm[\'remote\'].$error" ng-show="whatsappAccountForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.whatsappAccount.type">\n          <md-option ng-value="\'twilio\'">Twilio</md-option>\n          <md-option ng-value="\'sinch\'">Sinch</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountForm[\'type\'].$error" ng-show="whatsappAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\' || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n        <label translate="WHATSAPP.ACCOUNTSID">AccountSID</label>\n        <input type="text" name="accountSid" ng-model="vm.whatsappAccount.accountSid" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'accountSid\'].$error" ng-show="whatsappAccountForm[\'accountSid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\' || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n        <label translate="WHATSAPP.AUTHTOKEN">AuthToken</label>\n        <input type="text" name="authToken" ng-model="vm.whatsappAccount.authToken" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'authToken\'].$error" ng-show="whatsappAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.whatsappAccount.type == \'sinch\'" class="md-block">\n        <label translate="WHATSAPP.BASEURL">Base URL</label>\n\n        \x3c!--    <input type="text" name="baseUrl" ng-model="vm.whatsappAccount.baseUrl" ng-required="true"> --\x3e\n\n        <md-select name="baseUrl" ng-model="vm.whatsappAccount.baseUrl" required>\n          <md-option ng-value="\'https://us1.whatsapp.api.sinch.com\'">US Production</md-option>\n          <md-option ng-value="\'https://eu1.whatsapp.api.sinch.com\'">EU Production</md-option>\n        </md-select>\n\n        <div ng-messages="whatsappAccountForm[\'authToken\'].$error" ng-show="whatsappAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PHONE">phone</label>\n        <input type="text" name="phone" ng-model="vm.whatsappAccount.phone" ng-required="true">\n        <div ng-messages="whatsappAccountForm[\'phone\'].$error" ng-show="whatsappAccountForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PHONE_REQUIRED">phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappAccount.description">\n\n        <div ng-messages="whatsappAccountForm[\'description\'].$error" ng-show="whatsappAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappAccount" ng-click="vm.saveWhatsappAccount()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountForm.$invalid || whatsappAccountForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappAccount" ng-click="vm.addNewWhatsappAccount()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPACCOUNT" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPACCOUNT">\n          ADD WHATSAPPACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappAccount" ng-click="vm.deleteWhatsappAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",'<md-dialog class="whatsappAccount-dialog" aria-label="whatsappAccount" ng-init="vm.onInit()">\n  <form name="whatsappAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT">Add Agent to whatsappAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/agent/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'agent\'].$error" ng-show="whatsappAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'timeout\'].$error" ng-show="whatsappAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'accesskeyid\'].$error" ng-show="whatsappAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'secretaccesskey\'].$error" ng-show="whatsappAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'lexregion\'].$error" ng-show="whatsappAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'botname\'].$error" ng-show="whatsappAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'times\'].$error" ng-show="whatsappAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="whatsappAccountFormApp[\'text\'].$error" ng-show="whatsappAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/close/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'disposition\'].$error" ng-show="whatsappAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'key\'].$error" ng-show="whatsappAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'language\'].$error" ng-show="whatsappAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'projectId\'].$error" ng-show="whatsappAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'clientEmail\'].$error" ng-show="whatsappAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="whatsappAccountFormApp[\'privateKey\'].$error" ng-show="whatsappAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'language\'].$error" ng-show="whatsappAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'condition\'].$error" ng-show="whatsappAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'truepriority\'].$error" ng-show="whatsappAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'falsepriority\'].$error" ng-show="whatsappAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'priority\'].$error" ng-show="whatsappAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/noop/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'value\'].$error" ng-show="whatsappAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/queue/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'queue\'].$error" ng-show="whatsappAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'timeout\'].$error" ng-show="whatsappAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/system/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'command\'].$error" ng-show="whatsappAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'variable\'].$error" ng-show="whatsappAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/tag/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'tag\'].$error" ng-show="whatsappAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/view.html",'<div id="whatsapp-whatsappAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-whatsappAccounts-button md-icon-button" aria-label="Go to whatsappAccounts" ng-click="vm.gotoWhatsappAccounts()" translate translate-attr-aria-label="WHATSAPP.GO_TO_WHATSAPPACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="whatsappAccount-image" hide-xs>\n          <img ng-src="assets/images/business/whatsappAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.whatsappAccount.id}}\n            <span ng-if="vm.whatsappAccount.name">{{vm.whatsappAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="WHATSAPP.CREATED_AT"></span> <span>{{vm.whatsappAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.whatsappAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveWhatsappAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (whatsappDispositionsForm.$invalid) || (whatsappCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.whatsappAccount.name" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.whatsappAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="WHATSAPP.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.whatsappAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="WHATSAPP.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'  || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n                <label translate="WHATSAPP.ACCOUNTSID">AccountSID</label>\n                <input type="text" name="accountSid" ng-model="vm.whatsappAccount.accountSid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'accountSid\'].$error" ng-show="generalForm[\'accountSid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'  || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n                <label translate="WHATSAPP.AUTHTOKEN">AuthToken</label>\n                <input type="text" name="authToken" ng-model="vm.whatsappAccount.authToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authToken\'].$error" ng-show="generalForm[\'authToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n\n              <md-input-container ng-if="vm.whatsappAccount.type == \'sinch\'" class="md-block">\n                <label translate="WHATSAPP.BASEURL">BaseURL</label>\n\n                <md-select name="baseUrl" ng-model="vm.whatsappAccount.baseUrl" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryBaseUrl.url" ng-repeat="mandatoryBaseUrl in vm.baseUrl" ng-disabled="mandatoryBaseUrl.canSelect === false">{{ mandatoryBaseUrl.name }}</md-option>\n                </md-select>\n\n                <div ng-messages="generalForm[\'baseUrl\'].$error" ng-show="generalForm[\'baseUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.BASEURL_REQUIRED">Base URL field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.PHONE">phone</label>\n                <input type="text" name="phone" ng-model="vm.whatsappAccount.phone" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.PHONE_REQUIRED">phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.RECEIVEURL">receiveUrl</label>\n\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUrl" name="receiveUrl" ng-value="vm.whatsappAccount.remote + \'/api/whatsapp/accounts/\' + vm.whatsappAccount.id + \'/notify?token=\' + vm.whatsappAccount.token" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="WHATSAPP.HELP.RECEIVEURL"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.whatsappAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.whatsappAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="WHATSAPP.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.whatsappAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.queueTransfer == true" class="md-block">\n                <label translate="WHATSAPP.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.whatsappAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.agentTransfer == true" class="md-block">\n                <label translate="WHATSAPP.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.whatsappAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.PROXY">PROXY</div>\n            </div>\n            <form name="proxyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.MOTIONPROXY">MotionProxy</label>\n                <input type="url" name="remote" ng-model="vm.whatsappAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="WHATSAPP.HELP.MOTIONPROXY"></span></div>\n                <div ng-messages="proxyForm[\'remote\'].$error" ng-show="proxyForm[\'remote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.TOKEN">token</label>\n                <input type="text" name="token" ng-model="vm.whatsappAccount.token" disabled>\n\n                <div ng-messages="proxyForm[\'token\'].$error" ng-show="proxyForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.TOKEN_REQUIRED">token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.mandatoryDisposition" class="md-block">\n                <label translate="WHATSAPP.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.whatsappAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="WHATSAPP.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="WhatsappAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="whatsappAccount-detail-form-container whatsappdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="WHATSAPP.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add whatsapp dispositions" translate translate-attr-label="WHATSAPP.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="whatsappAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'WHATSAPP.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container whatsappcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountWhatsappCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="WHATSAPP.WHATSAPPCANNEDANSWERS">WhatsappCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getWhatsappAccountWhatsappCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event)" aria-label="add whatsappCannedAnswer" translate translate-attr-label="WHATSAPP.ADD_WHATSAPPCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length}} {{vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedWhatsappAccountWhatsappCannedAnswers" csv-label="true" filename="whatsappAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedWhatsappAccountWhatsappCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getWhatsappAccountWhatsappCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'WHATSAPP.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'WHATSAPP.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'WHATSAPP.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'WHATSAPP.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'WHATSAPP.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="whatsappCannedAnswer" md-select-id="id" ng-repeat="whatsappCannedAnswer in vm_dc.whatsappAccountWhatsappCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{ whatsappCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" translate="WHATSAPP.EDIT_WHATSAPPCANNEDANSWER">\n                                Edit WhatsappCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(whatsappCannedAnswer, $event)" translate="WHATSAPP.DELETE_WHATSAPPCANNEDANSWER">\n                                Delete WhatsappCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.whatsappAccountWhatsappCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="WHATSAPP.NO_WHATSAPPCANNEDANSWER_AVAILABLE">No whatsappcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.whatsappAccountWhatsappCannedAnswers.count}}" md-on-paginate="vm_dc.getWhatsappAccountWhatsappCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.whatsappAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="WHATSAPP.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedWhatsappAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedWhatsappAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedWhatsappAccountApps.length}} {{vm_ac.selectedWhatsappAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedWhatsappAccountApps($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedWhatsappAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.whatsappAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editWhatsappAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.whatsappAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="WHATSAPP.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getWhatsappAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getWhatsappAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getWhatsappAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="WHATSAPP.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedWhatsappAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedWhatsappAccountInteractions.length}} {{vm_dc.selectedWhatsappAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedWhatsappAccountInteractions" csv-label="true" filename="whatsappAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedWhatsappAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedWhatsappAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getWhatsappAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'WHATSAPP.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'WHATSAPP.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'WHATSAPP.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'WHATSAPP.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'WHATSAPP.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'WHATSAPP.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'WHATSAPP.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.whatsappAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'WHATSAPP.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'WHATSAPP.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spywhatsappInteraction($event, interaction)" translate="WHATSAPP.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.whatsappInteractionDownload(interaction, $event)" translate="WHATSAPP.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="WHATSAPP.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.whatsappAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="WHATSAPP.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.whatsappAccountInteractions.count}}" md-on-paginate="vm_dc.getWhatsappAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/whatsappCannedAnswers/dialog.html",'<md-dialog class="whatsappCannedAnswer-dialog" aria-label="New WhatsappCannedAnswer">\n  <form name="whatsappCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.whatsappCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="whatsappCannedAnswerForm[\'key\'].$error" ng-show="whatsappCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.whatsappCannedAnswer.value" required></textarea>\n\n        <div ng-messages="whatsappCannedAnswerForm[\'value\'].$error" ng-show="whatsappCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappCannedAnswer.description">\n\n        <div ng-messages="whatsappCannedAnswerForm[\'description\'].$error" ng-show="whatsappCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappCannedAnswer" ng-click="vm.saveWhatsappCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="whatsappCannedAnswerForm.$invalid || whatsappCannedAnswerForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappCannedAnswer" ng-click="vm.addNewWhatsappCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="whatsappCannedAnswerForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPCANNEDANSWER" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPCANNEDANSWER">\n          ADD WHATSAPPCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappCannedAnswer" ng-click="vm.deleteWhatsappCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/whatsappAccounts.html",'<div id="whatsappAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-whatsapp" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="WHATSAPP.WHATSAPPACCOUNTS">WhatsappAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="WHATSAPP.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedWhatsappAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedWhatsappAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="WHATSAPP.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-whatsappAccounts-count">\n          <span>{{vm.selectedWhatsappAccounts.length}}</span>\n          <span translate="WHATSAPP.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="WHATSAPP.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllWhatsappAccounts()" translate="WHATSAPP.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectWhatsappAccounts()" translate="WHATSAPP.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedWhatsappAccounts" csv-label="true" filename="whatsappAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedWhatsappAccounts($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- WHATSAPPACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedWhatsappAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'WHATSAPP.KEY\' | translate }}</th>\n                <th md-column md-order-by="ListId">{{ \'WHATSAPP.LIST\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'WHATSAPP.TYPE\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'WHATSAPP.PHONE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'WHATSAPP.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.whatsappAccounts.rows.length">\n                <td md-cell colspan="8">\n                  <div layout="row" layout-align="center center">\n                    <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="whatsappAccount" md-select-id="id" ng-repeat="whatsappAccount in vm.whatsappAccounts.rows">\n                <td md-cell ng-if="whatsappAccount.userpic"><img class="avatar" alt="{{whatsappAccount.name}}" ng-src="api/users/{{whatsappAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!whatsappAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{whatsappAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="id ">{{whatsappAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="name ">{{whatsappAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="key ">{{whatsappAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="ListId ">{{ (vm.lists | filter : {\'id\':whatsappAccount.ListId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="type ">{{ vm.arraytype[whatsappAccount.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="phone ">{{whatsappAccount.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="description ">{{whatsappAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(whatsappAccount, $event    )" translate="WHATSAPP.EDIT_WHATSAPPACCOUNT">\n                          Edit WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(whatsappAccount, $event    )" translate="WHATSAPP.INTERACTIONS_WHATSAPPACCOUNT">\n                          Interactions WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(whatsappAccount, $event    )" translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT">\n                          AgentAdd WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(whatsappAccount, $event    )" translate="WHATSAPP.DELETE_WHATSAPPACCOUNT">\n                          Delete WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappAccounts.count}}" md-on-paginate="vm.getWhatsappAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / WHATSAPPACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD WHATSAPPACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-whatsappAccount-button" ng-click="vm.createOrEditWhatsappAccount($event)" aria-label="add whatsappAccount" translate translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD WHATSAPPACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",'<md-dialog class="whatsappQueue-dialog" aria-label="New WhatsappQueue">\n  <form name="whatsappQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.whatsappQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newWhatsappQueue">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n        <div ng-messages="whatsappQueueForm[\'name\'].$error" ng-show="whatsappQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="WHATSAPP.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.whatsappQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="whatsappQueueForm[\'strategy\'].$error" ng-show="whatsappQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.whatsappQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="whatsappQueueForm[\'timeout\'].$error" ng-show="whatsappQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappQueue.description">\n\n        <div ng-messages="whatsappQueueForm[\'description\'].$error" ng-show="whatsappQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappQueue" ng-click="vm.saveWhatsappQueue()" class="send-button md-accent md-raised" ng-disabled="whatsappQueueForm.$invalid || whatsappQueueForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappQueue" ng-click="vm.addNewWhatsappQueue()" class="send-button md-accent md-raised" ng-disabled="whatsappQueueForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPQUEUE" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPQUEUE">\n          ADD WHATSAPPQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappQueue" ng-click="vm.deleteWhatsappQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",'<md-dialog class="whatsappQueue-dialog" aria-label="whatsappQueue" ng-init="vm.onInit()">\n  <form name="whatsappQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE">Add Agent to whatsappQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",'<md-dialog class="whatsappQueue-dialog" aria-label="whatsappQueue" ng-init="vm.onInit()">\n  <form name="whatsappQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/view.html",'<div id="whatsapp-whatsappQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-whatsappQueues-button md-icon-button" aria-label="Go to whatsappQueues" ng-click="vm.gotoWhatsappQueues()" translate translate-attr-aria-label="WHATSAPP.GO_TO_WHATSAPPQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="whatsappQueue-image" hide-xs>\n          <img ng-src="assets/images/business/whatsappQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.whatsappQueue.id}}\n            <span ng-if="vm.whatsappQueue.name">{{vm.whatsappQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="WHATSAPP.CREATED_AT"></span> <span>{{vm.whatsappQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.whatsappQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="WHATSAPP.TEAMADD_WHATSAPPQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.whatsappQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveWhatsappQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.whatsappQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="WHATSAPP.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.whatsappQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.whatsappQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.whatsappQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/whatsappQueues.html",'<div id="whatsappQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-whatsapp" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="WHATSAPP.WHATSAPPQUEUES">WhatsappQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="WHATSAPP.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedWhatsappQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedWhatsappQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="WHATSAPP.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-whatsappQueues-count">\n          <span>{{vm.selectedWhatsappQueues.length}}</span>\n          <span translate="WHATSAPP.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="WHATSAPP.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllWhatsappQueues()" translate="WHATSAPP.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectWhatsappQueues()" translate="WHATSAPP.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedWhatsappQueues" csv-label="true" filename="whatsappQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedWhatsappQueues($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- WHATSAPPQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedWhatsappQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'WHATSAPP.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.whatsappQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="whatsappQueue" md-select-id="id" ng-repeat="whatsappQueue in vm.whatsappQueues.rows">\n                <td md-cell ng-if="whatsappQueue.userpic"><img class="avatar" alt="{{whatsappQueue.name}}" ng-src="api/users/{{whatsappQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!whatsappQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{whatsappQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="id ">{{whatsappQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="name ">{{whatsappQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="strategy ">{{ vm.arraystrategy[whatsappQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(whatsappQueue, $event    )" translate="WHATSAPP.EDIT_WHATSAPPQUEUE">\n                          Edit WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(whatsappQueue, $event    )" translate="WHATSAPP.TEAMADD_WHATSAPPQUEUE">\n                          teamadd WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(whatsappQueue, $event    )" translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE">\n                          agentadd WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(whatsappQueue, $event    )" translate="WHATSAPP.DELETE_WHATSAPPQUEUE">\n                          Delete WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(whatsappQueue, $event    )" translate="WHATSAPP.GOTOREALTIME_WHATSAPPQUEUE">\n                          goToRealtime WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappQueues.count}}" md-on-paginate="vm.getWhatsappQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / WHATSAPPQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD WHATSAPPQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-whatsappQueue-button" ng-click="vm.createOrEditWhatsappQueue($event)" aria-label="add whatsappQueue" translate translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD WHATSAPPQUEUE BUTTON --\x3e\n</div>'),e.put("app/navigation/layouts/horizontal-navigation/navigation.html",'<div layout="row" layout-align="start center">\n  <ms-navigation-horizontal></ms-navigation-horizontal>\n</div>'),e.put("app/navigation/layouts/vertical-navigation-fullwidth-toolbar-2/navigation.html",'<ms-navigation class="scrollable" folded="vm.folded" ms-scroll="vm.msScrollOptions"></ms-navigation>'),e.put("app/navigation/layouts/vertical-navigation/navigation.html",'<md-toolbar class="navigation-header md-whiteframe-1dp" layout="row" layout-align="space-between center">\n  <div class="logo" layout="row" layout-align="start center">\n    <span class="logo-image"><img src="/api/settings/1/logo" alt="logo" /></span>\n    \x3c!-- <span class="logo-image"><img src="assets/images/logos/whisker_32x32.png" alt="motion_whisker_32x32" /></span> --\x3e\n    <span class="logo-text text-truncate">{{vm.getLogo() | uppercase}}</span>\n  </div>\n  <md-icon class="fold-toggle s18" md-font-icon="icon-backburger" hide show-gt-sm ng-click="vm.toggleMsNavigationFolded()"></md-icon>\n</md-toolbar>\n\n<ms-navigation class="scrollable" folded="vm.folded" ms-scroll="vm.msScrollOptions"></ms-navigation>'),e.put("app/quick-panel/quick-panel.html",'<md-content>\n  <md-tabs md-no-pagination md-swipe-content md-stretch-tabs="always">\n    <md-tab>\n      <md-tab-label>\n        <span translate="QUICKPANEL.TODAY">TODAY</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="today-tab scrollable" ms-scroll ng-include="\'app/quick-panel/tabs/today/today-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n    <md-tab ng-if="vm.currentUser.allowmessenger || vm.currentUser.role !== \'agent\'" ng-include="\'app/quick-panel/tabs/chat/chat-tab.html\'" ng-controller="ChatInternalController as vm_ct" ng-init="vm_ct.init(vm.license)" md-on-deselect="vm_ct.user = undefined">\n      <md-tab-label>\n        <div ng-if="vm.unreadTotalMessages" class="md-accent-bg unread-message-count-chat">{{vm.unreadTotalMessages}}</div>\n        <span>MESSENGER</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="chat-tab scrollable" ms-scroll ng-include="\'app/quick-panel/tabs/chat/chat-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n    <md-tab ng-if="vm.currentUser.allowmessenger || vm.currentUser.role !== \'agent\'" ng-include="\'app/quick-panel/tabs/groups/group-tab.html\'" ng-controller="ChatGroupController as vm_cg" ng-init="vm_cg.init(vm.license)" md-on-deselect="vm_cg.group = undefined">\n      <md-tab-label>\n        <div ng-if="vm.unreadTotalGroupMessages" class="md-accent-bg unread-message-count-chat">{{vm.unreadTotalGroupMessages}}</div>\n        <span translate="QUICKPANEL.GROUPS">GROUPS</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="group-tab scrollable" ms-scroll ng-include="\'app/quick-panel/tabs/groups/group-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n  </md-tabs>\n</md-content>'),e.put("app/quick-panel/tabs/activity/activity-tab.html",'<md-list class="friends">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.FRIENDS">Friends</span>\n  </md-subheader>\n\n  <md-list-item class="friend md-3-line" ng-repeat="friend in vm.activities.friends">\n    <img ng-src="{{friend.avatar}}" class="md-avatar" alt="{{friend.name}}" />\n\n    <div class="status {{friend.status}}"></div>\n\n    <div ng-if="contact.unread" class="md-accent-bg unread-message-count">{{contact.unread}}</div>\n\n    <div class="md-list-item-text">\n      <h3 class="message">{{friend.message}}</h3>\n      <p class="time">{{friend.time}}</p>\n    </div>\n  </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list class="servers">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.APP_SERVERS">Application Servers</span>\n  </md-subheader>\n\n  <md-list-item class="server md-3-line" ng-repeat="server in vm.activities.servers">\n    <md-icon md-font-icon="icon-checkbox-blank-circle" class="s16 status" ng-class="server.status"></md-icon>\n\n    <div class="md-list-item-text">\n      <h3>{{server.location}}</h3>\n      <p>{{server.detail}}</p>\n    </div>\n  </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list class="stats">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.USER_STATS">User Stats</span>\n  </md-subheader>\n\n  <md-list-item class="stat md-2-line" ng-repeat="stat in vm.activities.stats">\n    <div class="md-list-item-text">\n      <span>{{stat.title}} ({{stat.current}} / {{stat.total}})</span>\n      <md-progress-linear ng-class="stat.status" md-mode="determinate" value="{{stat.percent}}"></md-progress-linear>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/quick-panel/tabs/chat/chat-tab.html",'<div class="main animate-slide-left" ng-hide="vm_ct.user">\n  <md-subheader class="md-no-sticky">\n    <div class="search" layout="row" layout-align="space-between center">\n      <md-icon md-font-icon="icon-magnify" class="icon search-icon"></md-icon>\n      <input class="search-input" ng-model="vm_ct.search.$" type="text" placeholder="Search by fullname.." translate translate-attr-placeholder="QUICKPANEL.SEARCH" flex>\n      <md-select ng-model="vm_ct.search.online" class="height-50 no-padding no-margin" aria-label="Chat Tab Search">\n        <md-option ng-value="undefined">All</md-option>\n        <md-option ng-value="true">\n          <md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 green-fg"></md-icon>Online\n        </md-option>\n        <md-option ng-value="false">\n          <md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 red-fg"></md-icon>Offline\n        </md-option>\n      </md-select>\n    </div>\n  </md-subheader>\n  \x3c!-- <select ng-model="vm_ct.filterOnline" class="height-50 no-padding no-margin">\n            <option ng-value="undefined">All</option>\n            <option ng-value="true"><md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 green-fg"></md-icon>Online</option>\n            <option ng-value="false"><md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 red-fg"></md-icon>Offline</option>\n        </select> --\x3e\n  <md-divider></md-divider>\n  <md-list class="recent">\n    <md-list-item class="contact md-3-line" ng-if="user.id != vm_ct.currentUser.id" ng-repeat="user in vm_ct.users.rows | orderBy: \'-lastMessageAt\' | filter:vm_ct.search" ng-click="vm_ct.toggleChat(user)">\n      <md-divider></md-divider>\n      <img ng-src="{{user.userpic ? \'api/users/\' + user.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}" class="md-avatar" alt="{{user.fullname}}" />\n      <div class="status" ng-class="{true: \'online\', false: \'offline\'}[user.online]"></div>\n      <div ng-if="vm_ct.unreadMessage[user.id]" class="md-accent-bg unread-message-count">\n        {{vm_ct.unreadMessage[user.id]}}</div>\n      <div class="md-list-item-text">\n        <div layout="row">\n          <h3>{{user.fullname}}</h3>\n          <md-icon ng-if="!user.allowmessenger && user.role === \'agent\'" class="s16 margin-left-5" ng-style="{\'color\': \'red\' }" md-font-icon="icon-block-helper"></md-icon>\n        </div>\n        <p>{{user.name}} &#60;{{user.internal}}&#62;</p>\n        <div layout="row" layout-align="start center">\n          <md-icon ng-if="!user.lastMessage.read && user.lastMessage.FromId === vm_ct.currentUser.id" class="s16 no-margin" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="user.lastMessage.read && user.lastMessage.FromId === vm_ct.currentUser.id" class="s16 no-margin" md-font-icon="icon-check-all md-accent"></md-icon>\n          <p>{{user.lastMessage.body | limitTo:20 }}{{user.lastMessage.body.length > 20 ? \'...\' : \'\' }}</p>\n          <span flex></span>\n          <p class="last-message" ng-if="user.lastMessageAt != vm_ct.standardDate">\n            {{user.lastMessageAt | formatdate}}</p>\n        </div>\n      </div>\n    </md-list-item>\n  </md-list>\n</div>\n\n<div class="chat animate-slide-right" ng-show="vm_ct.user" layout="column">\n  <md-toolbar class="md-accent">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n\n      <div layout="row" layout-align="start center">\n        <md-button class="md-icon-button" ng-click="vm_ct.toggleChat()" aria-label="Back" translate translate-attr-aria-label="QUICKPANEL.BACK">\n          <md-icon md-font-icon="icon-keyboard-backspace"></md-icon>\n        </md-button>\n        <h4>\n          <span>{{vm_ct.user.fullname}}</span>\n        </h4>\n      </div>\n\n      <div layout="row" layout-align="end center">\n        <md-button ng-if="vm_ct.license.webrtc && vm_ct.currentUser.role === \'agent\' && vm_ct.currentUser.showWebBar === 2 && vm_ct.user.role === \'agent\'" class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="vm_ct.webcall(vm_ct.user.name)">\n          <md-icon md-font-icon="icon-phone"></md-icon>\n        </md-button>\n        <md-menu ng-if="vm_ct.currentUser.phoneBarRemoteControl && vm_ct.currentUser.role === \'agent\' && vm_ct.currentUser.showWebBar === 0 && vm_ct.user.role === \'agent\'">\n          <md-button class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="$mdOpenMenu($event)">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n\n          <md-menu-content width="3">\n            <md-menu-item ng-disabled="!vm_ct.currentUser.phoneBarRemoteControl">\n              <md-button ng-click="vm_ct.call(vm_ct.user.name)">\n                {{\'DASHBOARDS.CALL_NUMBER\' | translate}} ({{vm_ct.user.name}})\n              </md-button>\n            </md-menu-item>\n            <md-menu-item ng-disabled="!vm_ct.currentUser.phoneBarRemoteControl">\n              <md-button ng-click="vm_ct.transfer(vm_ct.user.name)">\n                {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} ({{vm_ct.user.name}})\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n    </div>\n\n  </md-toolbar>\n  <md-content flex layout-paddings ms-scroll id="chat-dialog">\n    <div layout="row" ng-repeat="message in vm_ct.user.messages.rows" class="md-padding message-row" ng-class="message.FromId === vm_ct.currentUser.id ? \'user\' : \'contact\'">\n      <img ng-if="message.FromId === vm_ct.user.id" ng-src="{{vm_ct.user.userpic ? \'api/users/\' + vm_ct.user.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}" class="avatar" alt="{{vm_ct.user.fullname}}" />\n      <img ng-if="message.FromId === vm_ct.currentUser.id" class="avatar" ng-src="{{vm_ct.currentUser.userpic ? \'api/users/\' + vm_ct.currentUser.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}">\n      <div class="bubble" flex>\n        <span class="message" ng-bind-html="message.body | embed:{linkTarget:\'_blank\',emoji:false,fontSmiley:false}"></span>\n        <div layout="row" layout-align="end center">\n          <span class="time secondary-text">{{message.createdAt | formatdate }}</span>\n          <md-icon ng-if="!message.read && message.FromId === vm_ct.currentUser.id" class="s16 margin-5" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read && message.FromId === vm_ct.currentUser.id" class="s16 margin-5" md-font-icon="icon-check-all md-accent"></md-icon>\n        </div>\n      </div>\n    </div>\n  </md-content>\n\n  <form ng-submit="vm_ct.reply()" layout="row" class="reply" layout-align="start center">\n    <textarea ng-keyup="$event.keyCode == 13 && !vm_ct.disabled? vm_ct.reply() : null" flex ng-model="vm_ct.replyMessage" placeholder="Type and hit enter to send message" translate translate-attr-placeholder="QUICKPANEL.REPLY_PLACEHOLDER" autofocus></textarea>\n\n    <md-button ng-disable="vm_ct.disabled" class="md-fab md-mini" type="submit" aria-label="Send message" translate translate-attr-aria-label="QUICKPANEL.SEND_MESSAGE">\n      <md-icon md-font-icon="icon-send"></md-icon>\n    </md-button>\n  </form>\n</div>'),e.put("app/quick-panel/tabs/groups/create/dialog.html",'<md-dialog class="group-dialog" aria-label="New ChatGroup">\n  <form name="groupForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(null)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      \x3c!--START Error--\x3e\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      \x3c!--END Error--\x3e\n\n      \x3c!--START NAME--\x3e\n      <md-input-container class="md-block">\n        <label translate="QUICKPANEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.group.name" required autofocus>\n        <div ng-messages="groupForm[\'name\'].$error" ng-show="groupForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="QUICKPANEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="QUICKPANEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      \x3c!--END NAME--\x3e\n\n      \x3c!--START Members--\x3e\n      <md-input-container class="md-block">\n        <label translate="QUICKPANEL.MEMBERS">Members</label>\n        <md-contact-chips ng-model="vm.group.members" md-contacts="vm.querySearch($query)" md-contact-name="name" md-contact-image="image" md-require-match="true" md-highlight-flags="i" placeholder="{{\'QUICKPANEL.MEMBERS\' | translate}}">\n        </md-contact-chips>\n        <div ng-messages="groupForm[\'strategy\'].$error" ng-show="groupForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="QUICKPANEL.ERRORS.MEMBERS_REQUIRED">Members field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      \x3c!--END Members--\x3e\n\n      \x3c!--START Writing--\x3e\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.group.write" aria-label="Write">\n          {{\'QUICKPANEL.ENABLE_WRITING\' | translate}}\n        </md-switch>\n      </md-input-container>\n      \x3c!--END Writing--\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.newChatGroup" ng-click="vm.saveChatGroup()" class="send-button md-accent md-raised" ng-disabled="groupForm.$invalid || groupForm.$pristine || (vm.group.members.length < 1)" aria-label="SAVE" translate="QUICKPANEL.SAVE" translate-attr-aria-label="QUICKPANEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/quick-panel/tabs/groups/group-tab.html",'<div class="main animate-slide-left" ng-if="!vm_cg.group">\n  <md-subheader>\n    <div layout="row">\n      \x3c!-- START Search --\x3e\n      <div class="search" layout="row" layout-align="start center" flex>\n        <md-icon md-font-icon="icon-magnify" class="icon search-icon"></md-icon>\n        <input ng-model="vm_cg.search" type="text" translate translate-attr-placeholder="QUICKPANEL.SEARCH" flex>\n      </div>\n      \x3c!-- END Search --\x3e\n\n      \x3c!-- START New Group --\x3e\n      <md-button ng-if="vm_cg.currentUser.role !== \'agent\'" class="md-icon-button" aria-label="New" ng-click="vm_cg.addGroup(null, $event)">\n        <md-icon md-font-icon="icon-account-multiple-plus" class="icon"></md-icon>\n      </md-button>\n      \x3c!-- END New Group --\x3e\n    </div>\n  </md-subheader>\n\n  <md-divider></md-divider>\n\n  \x3c!-- START Groups --\x3e\n  <md-list class="recent no-padding">\n    \x3c!-- START Group --\x3e\n    <md-list-item class="contact" ng-repeat="group in vm_cg.groupsToArray() | filter:vm_cg.search" ng-click="vm_cg.toggleChat(group)">\n      <img src="assets/images/avatars/group.png" class="md-avatar" alt="{{group.name}}" />\n      <div ng-if="group.unreadGroupMessages" class="md-accent-bg unread-message-count">{{group.unreadGroupMessages}}</div>\n      <div class="md-list-item-text">\n        <div layout="row">\n          <h3>{{group.name}}</h3>\n        </div>\n      </div>\n\n      <md-button ng-if="vm_cg.currentUser.role !== \'agent\'" class="md-secondary md-icon-button" aria-label="Remove" ng-click="vm_cg.deleteGroup(group, $event)">\n        <md-icon md-font-icon="icon-delete" class="icon s18"></md-icon>\n      </md-button>\n\n      <md-divider ng-if="!$last"></md-divider>\n    </md-list-item>\n    <md-list-item>\n      <div ng-if="!vm_cg.groupsToArray().length" layout="row" layout-align="center center" flex>\n        <span>{{\'QUICKPANEL.NO_AVAILABLE_GROUPS\' | translate}}</span>\n      </div>\n    </md-list-item>\n    \x3c!-- END Group --\x3e\n  </md-list>\n  \x3c!-- END Groups --\x3e\n</div>\n\n<div class="chat animate-slide-right" ng-if="vm_cg.group" layout="column">\n  <md-toolbar class="md-accent">\n    <div class="md-toolbar-tools " layout="row" layout-align="space-between center">\n      <md-button class="md-icon-button" ng-click="vm_cg.back()" aria-label="Back" translate translate-attr-aria-label="QUICKPANEL.BACK" flex="15">\n        <md-icon md-font-icon="icon-keyboard-backspace"></md-icon>\n      </md-button>\n      <h4 flex layout-align="start center" style="max-height: 100%; overflow-y:auto;">\n        <span translate="QUICKPANEL.YOU" translate-values=\'{participants: vm_cg.participants}\'></span>\n      </h4>\n\n      <div layout="row" layout-align="end center">\n        <md-button ng-if="vm_cg.license.webrtc && vm_cg.currentUser.role === \'agent\' && vm_cg.currentUser.showWebBar === 2 && vm_cg.user.role === \'agent\' && vm_cg.user.showWebBar === 2" class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="vm_cg.webcall(vm_cg.user.name)">\n          <md-icon md-font-icon="icon-phone"></md-icon>\n        </md-button>\n      </div>\n    </div>\n\n  </md-toolbar>\n  <md-content flex layout-paddings ms-scroll id="chat-group-dialog">\n    <div layout="row" ng-repeat="message in vm_cg.group.messages" class="message-row" ng-class="message.FromId === vm_cg.currentUser.id ? \'user\' : \'contact\'">\n      <img ng-if="message.FromId !== vm_cg.currentUser.id" ng-src="{{\'api/users/\' + message.FromId + \'/avatar\'}}" class="avatar" alt="{{vm_cg.user.fullname}}" />\n      <img ng-if="message.FromId === vm_cg.currentUser.id" class="avatar" ng-src="{{vm_cg.currentUser.userpic ? \'api/users/\' + vm_cg.currentUser.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}">\n      <div class="bubble" flex>\n        <div ng-if="message.FromId !== vm_cg.currentUser.id">\n          <span style="font-size: 12px;">{{vm_cg.group.membersByKeys[message.FromId].fullname}}</span>\n        </div>\n        <span class="message" ng-bind-html="message.body | embed:{linkTarget:\'_blank\',emoji:false,fontSmiley:false}"></span>\n        <div layout="row" layout-align="end center">\n          <span class="time secondary-text" style="margin-top: 0px;">{{message.createdAt | formatdate }}</span>\n          <md-icon ng-if="message.FromId === vm_cg.currentUser.id" class="s16 margin-5" style="cursor: pointer;" md-font-icon="icon-information-outline" ng-click="vm_cg.showMessageInfo($event, message)"></md-icon>\n        </div>\n      </div>\n    </div>\n  </md-content>\n\n  <form ng-if="(vm_cg.currentUser.role !== \'agent\') || vm_cg.group.write" ng-submit="vm_cg.reply()" layout="row" class="reply" layout-align="start center">\n    <textarea ng-keyup="$event.keyCode == 13 ? vm_cg.reply() : null" flex ng-model="vm_cg.replyMessage" placeholder="Type and hit enter to send message" translate translate-attr-placeholder="QUICKPANEL.REPLY_PLACEHOLDER" autofocus></textarea>\n\n    <md-button class="md-fab md-mini" type="submit" aria-label="Send message" translate translate-attr-aria-label="QUICKPANEL.SEND_MESSAGE">\n      <md-icon md-font-icon="icon-send"></md-icon>\n    </md-button>\n  </form>\n</div>'),e.put("app/quick-panel/tabs/groups/info/dialog.html",'<md-dialog class="group-dialog" aria-label="New ChatGroup">\n  <form name="groupForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(null)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div ng-if="vm.data.messages[$index].FromId !== vm.data.messages[$index].ToId" ng-repeat="user in vm.data.users" layout-margin>\n        <div layout="row">\n          <div layout="row" layout-align="start center">\n            <img ng-src="{{user.userpic ? \'api/users/\' + user.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}" class="avatar" alt="{{user.fullname}}" />\n            <span>{{user.fullname}}</span>\n          </div>\n          <div layout="row" layout-align="end center" flex>\n            <md-icon class="s16 margin-5" md-font-icon="{{vm.data.messages[$index].read ? \'icon-check-all md-accent\' : \'icon-check\'}}"></md-icon>\n            <span class="time secondary-text">{{vm.data.messages[$index].updatedAt | formatdate }}</span>\n          </div>\n        </div>\n        <div>\n          <md-divider ng-if="!$last"></md-divider>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/quick-panel/tabs/today/today-tab.html",'<md-list class="date">\n  <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.TODAY">Today</span></md-subheader>\n  <md-list-item class="md-display-1 md-2-line">\n    <div class="secondary-text">\n      <div translate="QUICKPANEL.{{ (vm.date | date:\'EEEE\').toUpperCase() }}"></div>\n      <div layout="row" layout-align="start start">\n        <span> {{vm.date | date:\'d\'}}</span>\n        <span class="md-subhead">th</span>\n        <span translate="QUICKPANEL.{{ (vm.date | date:\'MMMM\').toUpperCase() }}"></span>\n      </div>\n    </div>\n  </md-list-item>\n</md-list>\n\n\x3c!-- <md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.EVENTS">Events</span></md-subheader>\n\n    <md-list-item class="md-2-line" ng-repeat="event in vm.events" ng-click="dummyFunction()">\n        <div class="md-list-item-text">\n            <h3>{{event.title}}</h3>\n\n            <p>{{event.detail}}</p>\n        </div>\n    </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.NOTES">Notes</span></md-subheader>\n    <md-list-item class="md-2-line" ng-repeat="note in vm.notes" ng-click="dummyFunction()">\n        <div class="md-list-item-text">\n            <h3>{{note.title}}</h3>\n\n            <p>{{note.detail}}</p>\n        </div>\n    </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.QUICK_SETTINGS">Quick Settings</span></md-subheader>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.NOTIFICATIONS">Notifications</h3>\n        <md-switch class="md-secondary" ng-model="vm.settings.notify" aria-label="Notifications" translate\n                   translate-attr-aria-label="QUICKPANEL.NOTIFICATIONS"></md-switch>\n    </md-list-item>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.CLOUD_SYNC">Cloud Sync</h3>\n        <md-switch class="md-secondary" ng-model="vm.settings.cloud" aria-label="Cloud Sync" translate\n                   translate-attr-aria-label="QUICKPANEL.CLOUD_SYNC"></md-switch>\n    </md-list-item>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.RETRO_THRUSTERS">Retro Thrusters</h3>\n        <md-switch class="md-secondary md-warn" ng-model="vm.settings.retro" aria-label="Retro Thrusters" translate\n                   translate-attr-aria-label="QUICKPANEL.RETRO_THRUSTERS"></md-switch>\n    </md-list-item>\n</md-list> --\x3e'),e.put("app/reset/reset.html",'<div id="reset-password" class="flex-scrollable" layout="column" ng-init="vm.onInit()" ms-scroll>\n  <div id="reset-password-form-wrapper" layout="column" layout-align="center center">\n    <div id="reset-password-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n\n      <div class="title" translate="RESETPASSWORD.TITLE">Reset your password</div>\n\n      <form name="resetPasswordForm" novalidate>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="password" ng-model="vm.form.password" ng-pattern="vm.passwordPattern" placeholder="Password" translate translate-attr-placeholder="RESETPASSWORD.PASSWORD" required>\n          <div ng-messages="resetPasswordForm.password.$error" role="alert">\n            <div ng-message="required">\n              <span translate="RESETPASSWORD.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n            </div>\n            <div ng-message="pattern">\n              <span translate="RESETPASSWORD.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="passwordConfirm" ng-model="vm.form.passwordConfirm" placeholder="Password (Confirm)" match-password="password" translate translate-attr-placeholder="RESETPASSWORD.PASSWORD_CONFIRM">\n          <div ng-messages="resetPasswordForm.passwordConfirm.$error" role="alert">\n            <div ng-message="passwordMatch">\n              <span translate="TOOLBAR.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-button type="button" ng-click="vm.resetPassword()" class="md-raised md-accent submit-button" aria-label="UPDATE MY PASSWORD" ng-disabled="resetPasswordForm.$invalid || resetPasswordForm.$pristine" translate="RESETPASSWORD.UPDATE_PASSWORD" translate-attr-aria-label="RESETPASSWORD.UPDATE_PASSWORD">\n          RESET MY PASSWORD\n        </md-button>\n      </form>\n    </div>\n  </div>\n</div>'),e.put("app/toolbar/changepassword/changepassword.html",'<md-dialog class="user-dialog" aria-label="{{vm.name}}">\n  <form name="changePasswordForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span ng-if="vm.reset" class="title" translate="TOOLBAR.RESETPASSWORD">Reset Password</span>\n        <span ng-if="!vm.reset" class="title" translate="TOOLBAR.CHANGEPASSWORD">Change Password</span>\n        <md-button ng-if="!vm.reset" class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="TOOLBAR.OLD_PASSWORD" required>\n        <div ng-messages="changePasswordForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="TOOLBAR.NEW_PASSWORD" required>\n        <div ng-messages="changePasswordForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLBAR.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="changePasswordForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="TOOLBAR.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="changePasswordForm.$invalid || changePasswordForm.$pristine" aria-label="SAVE" translate="TOOLBAR.SAVE" translate-attr-aria-label="TOOLBAR.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/toolbar/layouts/vertical-navigation/toolbar.html",'<div layout="row" layout-align="start center">\n  <div layout="row" layout-align="start center" flex>\n    <md-button id="navigation-toggle" class="md-icon-button" ng-click="vm.toggleSidenav(\'navigation\')" hide-gt-sm aria-label="Toggle navigation" translate translate-attr-aria-label="TOOLBAR.TOGGLE_NAVIGATION">\n      <md-icon md-font-icon="icon-menu" class="icon"></md-icon>\n    </md-button>\n\n    <ms-shortcuts ng-if="!vm.isAgent()"></ms-shortcuts>\n\n    <div class="toolbar-separator"></div>\n\n    <div ng-if="vm.license.demo" class="blink md-padding">\n      <span class="md-warn-fg" translate="TOOLBAR.TRIAL_VERSION">Trial Version</span>\n    </div>\n\n    <div ng-if="vm.isAgent()" class="logo" layout-padding-left-8 layout="row" layout-align="start center">\n      <span class="logo-image"><img src="/api/settings/1/logo" alt="logo" /></span>\n      <span ng-show="vm.isAgent() && (vm.user.showWebBar != 2)" class="logo-text text-truncate">{{ vm.getLogo() |\n        uppercase }}</span>\n    </div>\n\n    \x3c!-- phonebar directive WebRtc type--\x3e\n    <ms-phonebar class="ms-phonebar" ng-if="vm.isAgent() && (vm.user.showWebBar == 2)" conf="vm.conf" sessions="vm.webRTCSessions" flex></ms-phonebar>\n    \x3c!-- phonebar directive --\x3e\n  </div>\n\n  <div layout="row" layout-align="start center">\n\n    <md-progress-circular id="toolbar-progress" ng-if="$root.loadingProgress" class="md-accent" md-diameter="32">\n    </md-progress-circular>\n\n    \x3c!-- Pause Management --\x3e\n    <div ng-if="vm.isAgent() && (vm.user.showWebBar != 0)" layout="row" layout-align="end center">\n      <div class="toolbar-separator"></div>\n\n      <div class="border brad-5" layout="row" layout-align="center center" layout-margin>\n        <md-button ng-if="vm.user.voicePause" class="md-icon-button no-margin" ng-click="vm.unpause()">\n          <md-icon md-font-icon="icon-play-circle-outline" class="icon s24"></md-icon>\n          <md-tooltip md-direction="bottom">{{\'TOOLBAR.RESUME\' | translate}}</md-tooltip>\n        </md-button>\n\n        <md-button ng-disabled="vm.user.voicePause && \'DEFAULT PAUSE\' === vm.user.pauseType" class="md-icon-button no-margin" ng-click="vm.pause()">\n          <md-icon md-font-icon="icon-pause-circle-outline" class="icon s24"></md-icon>\n          <md-tooltip md-direction="bottom">{{\'TOOLBAR.PAUSE\' | translate}}</md-tooltip>\n        </md-button>\n\n        <md-menu>\n          <md-button aria-label="Pauses" class="md-icon-button no-margin" ng-click="$mdOpenMenu($event)">\n            <md-icon md-menu-origin md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-menu-content width="4">\n            <md-menu-item ng-if="!vm.pauses.length">\n              <md-button disabled="disabled">\n                <md-icon md-font-icon="icon-pause-octagon" md-menu-align-target></md-icon>\n                {{\'TOOLBAR.NO_PAUSES_AVAILABLE\' | translate}}\n              </md-button>\n            </md-menu-item>\n            <md-menu-item ng-repeat="pause in vm.pauses">\n              <md-button ng-disabled="vm.user.voicePause && pause.name === vm.user.pauseType" ng-click="vm.pause(pause.name)">\n                <md-icon md-font-icon="icon-pause-circle" md-menu-align-target></md-icon>\n                {{pause.name}}\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n    </div>\n    \x3c!-- Pause Management --\x3e\n\n    <div class="h5 padding-10" ng-if="vm.isAgent() && (vm.user.showWebBar != 0)">\n      <div layout="row" layout-align="space-between center">\n        <timer ng-if="vm.user.lastLoginAt" start-time="vm.user.lastLoginAt"></timer>\n        <md-tooltip>{{\'TOOLBAR.LOGIN_TIME\' | translate}}</md-tooltip>\n        <md-icon md-font-icon="icon-timelapse" class="icon s16"></md-icon>\n      </div>\n      <div layout="row" layout-align="center center" ng-if="vm.user.voicePause">\n        <timer start-time="vm.user.lastPauseAt"></timer>\n        <md-tooltip>{{\'TOOLBAR.PAUSE_TIME\' | translate}}</md-tooltip>\n        <md-icon md-font-icon="icon-coffee" class="icon s16"></md-icon>\n      </div>\n      <div ng-if="vm.user.voicePause">\n        <span class="blink red-fg">{{vm.user.pauseType || \'default\' | uppercase}}</span>\n      </div>\n    </div>\n\n    <div class="toolbar-separator" ng-if="vm.isAgent() && (vm.user.showWebBar != 0)"></div>\n\n    <md-menu-bar id="user-menu">\n      <md-menu md-position-mode="left bottom">\n        <md-button class="user-button" ng-click="$mdOpenMenu()" aria-label="User settings" translate translate-attr-aria-label="TOOLBAR.USER_SETTINGS">\n          <div layout="row" layout-align="space-between center">\n            <div class="avatar-wrapper">\n              <img md-menu-align-target class="avatar" src="assets/images/avatars/profile.png" ng-if="!vm.user.userpic">\n              <img md-menu-align-target class="avatar" ng-src="api/users/{{vm.user.id}}/avatar" ng-if="vm.user.userpic">\n              <md-icon md-font-icon ng-class="vm.userStatus.icon" ng-style="{\'color\': vm.userStatus.color }" class="icon status s16"></md-icon>\n            </div>\n            <div layout="column" layout-align="center center" class="padding-horizontal-5">\n              <span class="font-size-14 md-subhead">{{vm.user.fullname}}</span>\n              <span class="font-size-12 md-subhead">{{vm.user.name}} &#60;{{vm.user.internal}}&#62;</span>\n            </div>\n\n            <md-icon md-font-icon="icon-chevron-down" class="icon s16" hide-xs></md-icon>\n          </div>\n        </md-button>\n\n        <md-menu-content width="3">\n          <md-menu-item ng-if="vm.user.showWebBar == 2 && vm.user.phoneBarEnableSettings" class="md-indent">\n            <md-icon md-font-icon="icon-cog" class="icon"></md-icon>\n            <md-button ng-click="vm.openSettings($event)" ng-disabled="!vm.license.webrtc"><span translate="TOOLBAR.SETTINGS">SETTINGS</span></md-button>\n          </md-menu-item>\n\n          <md-menu-item class="md-indent">\n            <md-icon md-font-icon="icon-key-variant" class="icon"></md-icon>\n            <md-button ng-click="vm.changePassword($event)"><span translate="TOOLBAR.CHANGEPASSWORD">Change\n                Password</span></md-button>\n          </md-menu-item>\n\n          <md-menu-divider></md-menu-divider>\n\n          <md-menu-item class="md-indent">\n            <md-icon md-font-icon="icon-logout" class="icon"></md-icon>\n            <md-button ng-click="vm.logout()">Logout</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </md-menu-bar>\n\n    <div class="toolbar-separator"></div>\n\n    <md-button ng-if="vm.user.role === \'agent\' && vm.license.dialer" class="preview-button no-margin" ng-disabled="vm.disable" ng-click="vm.preview($event)" aria-label="Language" md-menu-origin md-menu-align-target>\n      <div ng-if="vm.contacts" class="md-accent-bg open-contact-count">{{vm.contacts > 99 ? \'99+\' : vm.contacts}}</div>\n      <md-icon md-font-icon="icon-fire" class="icon red-900-fg"></md-icon>\n      <md-tooltip><span translate="TOOLBAR.PREVIEW">Preview</span></md-tooltip>\n    </md-button>\n\n    <ms-search-bar ng-if="vm.user.role !== \'agent\'" on-search="vm.search(query)" on-result-click="vm.searchResultClick(item)" debounce="300" collapse-on-blur="true"></ms-search-bar>\n\n    <md-menu id="language-menu" md-offset="0 72" md-position-mode="target-right target" layout="column" layout-align="center center">\n      <md-button class="md-icon-button no-margin" ng-click="$mdOpenMenu()" aria-label="Language" md-menu-origin md-menu-align-target>\n        <div layout="row" layout-align="center center">\n          <img class="flag" ng-src="assets/images/flags/{{vm.selectedLanguage.flag}}.png">\n        </div>\n      </md-button>\n\n      <md-menu-content width="3" id="language-menu-content">\n        <md-menu-item ng-repeat="(iso, lang) in vm.languages">\n          <md-button ng-click="vm.changeLanguage(lang)" aria-label="{{lang.title}}" translate translate-attr-aria-label="{{lang.title}}">\n            <span layout="row" layout-align="start center">\n              <img class="flag flag-24" ng-src="assets/images/flags/{{lang.flag}}.png">\n              <span>{{ lang.translation | translate | startcase }}</span>\n            </span>\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n\n    <div class="toolbar-separator"></div>\n\n    <md-button ng-if="vm.license.gray && vm.user.role !== \'agent\'" class="md-icon-button" ui-sref="app.settings.license" aria-label="Toggle quick panel">\n      <md-icon md-font-icon="icon-alert" class="icon md-warn blink"></md-icon>\n    </md-button>\n    <md-button ng-if="vm.license.gray && vm.user.role === \'agent\'" class="md-icon-button" aria-label="Toggle quick panel">\n      <md-icon md-font-icon="icon-alert" class="icon md-warn blink"></md-icon>\n    </md-button>\n\n    <div ng-if="vm.license.gray" class="toolbar-separator"></div>\n\n    <md-button id="quick-panel-toggle" class="md-icon-button" ng-click="vm.toggleSidenav(\'quick-panel\')" aria-label="Toggle quick panel" translate translate-attr-aria-label="TOOLBAR.TOGGLE_QUICK_PANEL">\n      <div ng-if="(vm.unreadTotalMessages + vm.unreadTotalGroupMessages)" class="md-accent-bg unread-message-count">\n        {{vm.unreadTotalMessages + vm.unreadTotalGroupMessages}}</div>\n      <md-icon md-font-icon="icon-format-list-bulleted" class="icon"></md-icon>\n    </md-button>\n  </div>\n</div>'),e.put("app/toolbar/preview/dialog.html",'<md-dialog class="preview-dialog" aria-label="preview">\n  <form name="previewForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ (\'TOOLBAR.PREVIEW\' | translate) + (vm.preview.recallme ? \' - \' +\n          (\'CONTACTMANAGER.RECALLME\' | translate | uppercase) : \'\') }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div ng-if="vm.preview">\n        <div ng-if="vm.preview.recallme" layout="row" class="recall-me-info">\n          <md-icon md-font-icon="icon-information-outline" aria-label="Recall Me"></md-icon>\n          <p class="ml-5" translate="TOOLBAR.HELP.PREVIEW_RECALLME" translate-values="{ date: (vm.preview.scheduledat | date:\'short\') }" flex></p>\n        </div>\n        <div layout="row">\n          <div class="md-padding md-margin" layout="column" flex="30">\n            <md-input-container ng-if="vm.preview.Contact.id" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.ID">ID</label>\n              <input type="text" ng-model="vm.preview.Contact.id" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.Queue.name" class="md-block no-margin">\n              <label translate="VOICE.QUEUE">Queue</label>\n              <input type="text" ng-model="vm.preview.Queue.name" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.List.name" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.LIST">List</label>\n              <input type="text" ng-model="vm.preview.List.name" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.Contact.tags && vm.preview.Contact.tags.length" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.TAGS">Tags</label>\n              <input type="text" ng-model="vm.preview.Contact.tags" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.Contact.Company && vm.preview.Contact.Company.name" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.COMPANY">Company</label>\n              <input type="text" ng-model="vm.preview.Contact.Company.name" disabled="true">\n            </md-input-container>\n          </div>\n          <md-divider></md-divider>\n          <div class="md-padding md-margin" layout="column" flex="35">\n            <md-input-container ng-repeat="(key, value) in vm.preview.Contact" ng-if="!vm.isNil(value) && !vm.isCustomField(key) && !vm.isHiddenField(key)" class="md-block no-margin">\n              <label>{{ \'CONTACTMANAGER.\' + key.toUpperCase() | translate}}</label>\n              <input type="text" ng-model="value" disabled="true">\n            </md-input-container>\n          </div>\n          <div class="md-padding md-margin" layout="column" flex="35">\n            <md-input-container ng-repeat="(key, value) in vm.preview.Contact" ng-if="!vm.isNil(value) && vm.isCustomField(key) && !vm.isHiddenField(key)" class="md-block no-margin">\n              <label>{{ vm.customFieldsMap[key] || key }}</label>\n              <input type="text" ng-model="value" disabled="true">\n            </md-input-container>\n          </div>\n        </div>\n      </div>\n      <div layout="row" ng-if="!vm.preview">\n        <span>no contacts available</span>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions class="md-dialog-action-center padding-rigth-15">\n      <md-button class="md-icon-button md-primary" ng-hide="vm.hopperIds.length <= 1" ng-disabled="vm.disableGetContact" ng-click="vm.previousContact()" aria-label="PREVIOUSCONTACT" translate-attr-aria-label="TOOLS.PREVIOUSCONTACT">\n        <md-icon md-font-icon="icon-chevron-left"></md-icon>\n      </md-button>\n      <md-button class="md-fab green-bg" aria-label="CALL" translate-attr-aria-label="TOOLS.CALL" ng-disabled="vm.disable" ng-click="vm.originatePreview($event)">\n        <md-icon md-font-icon="icon-phone"></md-icon>\n      </md-button>\n      <md-button class="md-icon-button md-primary" ng-disabled="vm.disableGetContact" ng-click="vm.nextContact()" aria-label="NEXTCONTACT" translate-attr-aria-label="TOOLS.NEXTCONTACT">\n        <md-icon md-font-icon="icon-chevron-right"></md-icon>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>')}]);
\ No newline at end of file
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.53eff8d6.css b/public/styles/app.53eff8d6.css
new file mode 100644 (file)
index 0000000..3bc9bb9
--- /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}#toasty.toasty-position-top-right{top:64px}body,html{height:100%;position:relative}body{margin:0;padding:0}[tabindex='-1']:focus{outline:0}.inset{padding:10px}a.md-no-style,button.md-no-style{font-weight:400;background-color:inherit;text-align:left;border:none;padding:0;margin:0}button,input,select,textarea{vertical-align:baseline}button,html input[type=button],input[type=reset],input[type=submit]{cursor:pointer;-webkit-appearance:button}button[disabled],html input[type=button][disabled],input[type=reset][disabled],input[type=submit][disabled]{cursor:default}textarea{vertical-align:top;overflow:auto}input[type=search]{-webkit-appearance:textfield;box-sizing:content-box;-webkit-box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}input:-webkit-autofill{text-shadow:none}.md-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;text-transform:none;width:1px}.md-shadow{position:absolute;top:0;left:0;bottom:0;right:0;border-radius:inherit;pointer-events:none}.md-shadow-bottom-z-1{box-shadow:0 2px 5px 0 rgba(0,0,0,.26)}.md-shadow-bottom-z-2{box-shadow:0 4px 8px 0 rgba(0,0,0,.4)}.md-shadow-animated.md-shadow{transition:box-shadow .28s cubic-bezier(.4,0,.2,1)}.md-ripple-container{pointer-events:none;position:absolute;overflow:hidden;left:0;top:0;width:100%;height:100%;transition:all .55s cubic-bezier(.25,.8,.25,1)}.md-ripple{position:absolute;transform:translate(-50%,-50%) scale(0);transform-origin:50% 50%;opacity:0;border-radius:50%}.md-ripple.md-ripple-placed{transition:margin .9s cubic-bezier(.25,.8,.25,1),border .9s cubic-bezier(.25,.8,.25,1),width .9s cubic-bezier(.25,.8,.25,1),height .9s cubic-bezier(.25,.8,.25,1),opacity .9s cubic-bezier(.25,.8,.25,1),transform .9s cubic-bezier(.25,.8,.25,1)}.md-ripple.md-ripple-scaled{transform:translate(-50%,-50%) scale(1)}.md-ripple.md-ripple-active,.md-ripple.md-ripple-full,.md-ripple.md-ripple-visible{opacity:.2}.md-ripple.md-ripple-remove{animation:md-remove-ripple .9s cubic-bezier(.25,.8,.25,1)}@keyframes md-remove-ripple{0%{opacity:.15}100%{opacity:0}}.md-padding{padding:8px}.md-margin{margin:8px}.md-scroll-mask{position:absolute;background-color:transparent;top:0;right:0;bottom:0;left:0;z-index:50}.md-scroll-mask>.md-scroll-mask-bar{display:block;position:absolute;background-color:#fafafa;right:0;top:0;bottom:0;z-index:65;box-shadow:inset 0 0 1px rgba(0,0,0,.3)}.md-no-momentum{-webkit-overflow-scrolling:auto}.md-no-flicker{-webkit-filter:blur(0)}@media (min-width:960px){.md-padding{padding:16px}}body[dir=ltr],body[dir=rtl],html[dir=ltr],html[dir=rtl]{unicode-bidi:embed}bdo[dir=rtl]{direction:rtl;unicode-bidi:bidi-override}bdo[dir=ltr]{direction:ltr;unicode-bidi:bidi-override}body,html{-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;min-height:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.md-display-4{font-size:112px;font-weight:300;letter-spacing:-.010em;line-height:112px}.md-display-3{font-size:56px;font-weight:400;letter-spacing:-.005em;line-height:56px}.md-display-2{font-size:45px;font-weight:400;line-height:64px}.md-display-1{font-size:34px;font-weight:400;line-height:40px}.md-headline{font-size:24px;font-weight:400;line-height:32px}.md-title{font-size:20px;font-weight:500;letter-spacing:.005em}.md-subhead{font-size:16px;font-weight:400;letter-spacing:.010em;line-height:24px}.md-body-1{font-size:14px;font-weight:400;letter-spacing:.010em;line-height:20px}.md-body-2{font-size:14px;font-weight:500;letter-spacing:.010em;line-height:24px}.md-caption{font-size:12px;letter-spacing:.020em}.md-button{letter-spacing:.010em}button,html,input,select,textarea{font-family:Roboto,"Helvetica Neue",sans-serif}button,input,select,textarea{font-size:100%}@keyframes md-autocomplete-list-out{0%{animation-timing-function:linear}50%{opacity:0;height:40px;animation-timing-function:ease-in}100%{height:0;opacity:0}}@keyframes md-autocomplete-list-in{0%{opacity:0;height:0;animation-timing-function:ease-out}50%{opacity:0;height:40px}100%{opacity:1;height:40px}}md-autocomplete{border-radius:2px;display:block;height:40px;position:relative;overflow:visible;min-width:190px}md-autocomplete[disabled] input{cursor:default}md-autocomplete[md-floating-label]{border-radius:0;background:0 0;height:auto}md-autocomplete[md-floating-label] md-input-container{padding-bottom:0}md-autocomplete[md-floating-label] md-autocomplete-wrap{height:auto}md-autocomplete[md-floating-label] button{position:absolute;top:auto;bottom:0;right:0;width:30px;height:30px}md-autocomplete md-autocomplete-wrap{display:flex;flex-direction:row;box-sizing:border-box;position:relative;overflow:visible;height:40px}md-autocomplete md-autocomplete-wrap.md-menu-showing{z-index:51}md-autocomplete md-autocomplete-wrap input,md-autocomplete md-autocomplete-wrap md-input-container{flex:1 1 0%;box-sizing:border-box;min-width:0}md-autocomplete md-autocomplete-wrap md-progress-linear{position:absolute;bottom:-2px;left:0}md-autocomplete md-autocomplete-wrap md-progress-linear.md-inline{bottom:40px;right:2px;left:2px;width:auto}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate{position:absolute;top:0;left:0;width:100%;height:3px;transition:none}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate .md-container{transition:none;height:3px}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-enter{transition:opacity .15s linear}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-enter.ng-enter-active{opacity:1}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-leave{transition:opacity .15s linear}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-leave.ng-leave-active{opacity:0}md-autocomplete input:not(.md-input){font-size:14px;box-sizing:border-box;border:none;box-shadow:none;outline:0;background:0 0;width:100%;padding:0 15px;line-height:40px;height:40px}md-autocomplete input:not(.md-input)::-ms-clear{display:none}md-autocomplete button{position:relative;line-height:20px;text-align:center;width:30px;height:30px;cursor:pointer;border:none;border-radius:50%;padding:0;font-size:12px;background:0 0;margin:auto 5px}md-autocomplete button:after{content:'';position:absolute;top:-6px;right:-6px;bottom:-6px;left:-6px;border-radius:50%;transform:scale(0);opacity:0;transition:all .4s cubic-bezier(.25,.8,.25,1)}md-autocomplete button:focus{outline:0}md-autocomplete button:focus:after{transform:scale(1);opacity:1}md-autocomplete button md-icon{position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0) scale(.9)}md-autocomplete button md-icon path{stroke-width:0}md-autocomplete button.ng-enter{transform:scale(0);transition:transform .15s ease-out}md-autocomplete button.ng-enter.ng-enter-active{transform:scale(1)}md-autocomplete button.ng-leave{transition:transform .15s ease-out}md-autocomplete button.ng-leave.ng-leave-active{transform:scale(0)}@media screen and (-ms-high-contrast:active){md-autocomplete input{border:1px solid #fff}md-autocomplete li:focus{color:#fff}}.md-virtual-repeat-container.md-autocomplete-suggestions-container{position:absolute;box-shadow:0 2px 5px rgba(0,0,0,.25);height:225.5px;max-height:225.5px;z-index:100}.md-virtual-repeat-container.md-not-found{height:48px}.md-autocomplete-suggestions{margin:0;list-style:none;padding:0}.md-autocomplete-suggestions li{font-size:14px;overflow:hidden;padding:0 15px;line-height:48px;height:48px;transition:background .15s linear;margin:0;white-space:nowrap;text-overflow:ellipsis}.md-autocomplete-suggestions li:focus{outline:0}.md-autocomplete-suggestions li:not(.md-not-found-wrapper){cursor:pointer}@media screen and (-ms-high-contrast:active){.md-autocomplete-suggestions,md-autocomplete{border:1px solid #fff}}md-backdrop{transition:opacity 450ms;position:absolute;top:0;bottom:0;left:0;right:0;z-index:50}md-backdrop.md-menu-backdrop{position:fixed!important;z-index:99}md-backdrop.md-select-backdrop{z-index:81;transition-duration:0}md-backdrop.md-dialog-backdrop{z-index:79}md-backdrop.md-bottom-sheet-backdrop{z-index:69}md-backdrop.md-sidenav-backdrop{z-index:59}md-backdrop.md-click-catcher{position:absolute}md-backdrop.md-opaque{opacity:.48}md-backdrop.md-opaque.ng-enter{opacity:0}md-backdrop.md-opaque.ng-enter.md-opaque.ng-enter-active{opacity:.48}md-backdrop.md-opaque.ng-leave{opacity:.48;transition:opacity .4s}md-backdrop.md-opaque.ng-leave.md-opaque.ng-leave-active{opacity:0}md-bottom-sheet{position:absolute;left:0;right:0;bottom:0;padding:8px 16px 88px 16px;z-index:70;border-top-width:1px;border-top-style:solid;transform:translate3d(0,80px,0);transition:all .4s cubic-bezier(.25,.8,.25,1);transition-property:transform}md-bottom-sheet.md-has-header{padding-top:0}md-bottom-sheet.ng-enter{opacity:0;transform:translate3d(0,100%,0)}md-bottom-sheet.ng-enter-active{opacity:1;display:block;transform:translate3d(0,80px,0)!important}md-bottom-sheet.ng-leave-active{transform:translate3d(0,100%,0)!important;transition:all .3s cubic-bezier(.55,0,.55,.2)}md-bottom-sheet .md-subheader{background-color:transparent;font-family:Roboto,"Helvetica Neue",sans-serif;line-height:56px;padding:0;white-space:nowrap}md-bottom-sheet md-inline-icon{display:inline-block;height:24px;width:24px;fill:#444}md-bottom-sheet md-list-item{display:flex;outline:0}md-bottom-sheet md-list-item:hover{cursor:pointer}md-bottom-sheet.md-list md-list-item{padding:0;align-items:center;height:48px}md-bottom-sheet.md-grid{padding-left:24px;padding-right:24px;padding-top:0}md-bottom-sheet.md-grid md-list{display:flex;flex-direction:row;flex-wrap:wrap;transition:all .5s;align-items:center}md-bottom-sheet.md-grid md-list-item{flex-direction:column;align-items:center;transition:all .5s;height:96px;margin-top:8px;margin-bottom:8px}@media (max-width:960px){md-bottom-sheet.md-grid md-list-item{flex:1 1 33.3333333333%;max-width:33.3333333333%}md-bottom-sheet.md-grid md-list-item:nth-of-type(3n+1){align-items:flex-start}md-bottom-sheet.md-grid md-list-item:nth-of-type(3n){align-items:flex-end}}@media (min-width:960px) and (max-width:1279px){md-bottom-sheet.md-grid md-list-item{flex:1 1 25%;max-width:25%}}@media (min-width:1280px) and (max-width:1919px){md-bottom-sheet.md-grid md-list-item{flex:1 1 16.6666666667%;max-width:16.6666666667%}}@media (min-width:1920px){md-bottom-sheet.md-grid md-list-item{flex:1 1 14.2857142857%;max-width:14.2857142857%}}md-bottom-sheet.md-grid md-list-item::before{display:none}md-bottom-sheet.md-grid md-list-item .md-list-item-content{display:flex;flex-direction:column;align-items:center;width:48px;padding-bottom:16px}md-bottom-sheet.md-grid md-list-item .md-grid-item-content{border:1px solid transparent;display:flex;flex-direction:column;align-items:center;width:80px}md-bottom-sheet.md-grid md-list-item .md-grid-text{font-weight:400;line-height:16px;font-size:13px;margin:0;white-space:nowrap;width:64px;text-align:center;text-transform:none;padding-top:8px}@media screen and (-ms-high-contrast:active){md-bottom-sheet{border:1px solid #fff}}button.md-button::-moz-focus-inner{border:0}.md-button{display:inline-block;position:relative;cursor:pointer;min-height:36px;min-width:88px;line-height:36px;vertical-align:middle;align-items:center;text-align:center;border-radius:3px;box-sizing:border-box;user-select:none;outline:0;border:0;padding:0 6px;margin:6px 8px;background:0 0;color:currentColor;white-space:nowrap;text-transform:uppercase;font-weight:500;font-size:14px;font-style:inherit;font-variant:inherit;font-family:inherit;text-decoration:none;overflow:hidden;transition:box-shadow .4s cubic-bezier(.25,.8,.25,1),background-color .4s cubic-bezier(.25,.8,.25,1)}.md-button:focus{outline:0}.md-button:focus,.md-button:hover{text-decoration:none}.md-button.ng-hide,.md-button.ng-leave{transition:none}.md-button.md-cornered{border-radius:0}.md-button.md-icon{padding:0;background:0 0}.md-button.md-raised:not([disabled]){box-shadow:0 2px 5px 0 rgba(0,0,0,.26)}.md-button.md-icon-button{margin:0 6px;height:40px;min-width:0;line-height:24px;padding:8px;width:40px;border-radius:50%}.md-button.md-icon-button .md-ripple-container{border-radius:50%;background-clip:padding-box;overflow:hidden;-webkit-mask-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC)}.md-button.md-fab{z-index:20;line-height:56px;min-width:0;width:56px;height:56px;vertical-align:middle;box-shadow:0 2px 5px 0 rgba(0,0,0,.26);border-radius:50%;background-clip:padding-box;overflow:hidden;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-property:background-color,box-shadow,transform}.md-button.md-fab.md-fab-bottom-right{top:auto;right:20px;bottom:20px;left:auto;position:absolute}.md-button.md-fab.md-fab-bottom-left{top:auto;right:auto;bottom:20px;left:20px;position:absolute}.md-button.md-fab.md-fab-top-right{top:20px;right:20px;bottom:auto;left:auto;position:absolute}.md-button.md-fab.md-fab-top-left{top:20px;right:auto;bottom:auto;left:20px;position:absolute}.md-button.md-fab .md-ripple-container{border-radius:50%;background-clip:padding-box;overflow:hidden;-webkit-mask-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC)}.md-button.md-fab.md-mini{line-height:40px;width:40px;height:40px}.md-button.md-fab.ng-hide,.md-button.md-fab.ng-leave{transition:none}.md-button:not([disabled]).md-fab.md-focused,.md-button:not([disabled]).md-raised.md-focused{box-shadow:0 2px 5px 0 rgba(0,0,0,.26)}.md-button:not([disabled]).md-fab:active,.md-button:not([disabled]).md-raised:active{box-shadow:0 4px 8px 0 rgba(0,0,0,.4)}.md-button .md-ripple-container{border-radius:3px;background-clip:padding-box;overflow:hidden;-webkit-mask-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC)}.md-button.md-icon-button md-icon,button.md-button.md-fab md-icon{display:block}.md-toast-open-top .md-button.md-fab-top-left,.md-toast-open-top .md-button.md-fab-top-right{transition:all .4s cubic-bezier(.25,.8,.25,1);transform:translate3d(0,42px,0)}.md-toast-open-top .md-button.md-fab-top-left:not([disabled]).md-focused,.md-toast-open-top .md-button.md-fab-top-left:not([disabled]):hover,.md-toast-open-top .md-button.md-fab-top-right:not([disabled]).md-focused,.md-toast-open-top .md-button.md-fab-top-right:not([disabled]):hover{transform:translate3d(0,41px,0)}.md-toast-open-bottom .md-button.md-fab-bottom-left,.md-toast-open-bottom .md-button.md-fab-bottom-right{transition:all .4s cubic-bezier(.25,.8,.25,1);transform:translate3d(0,-42px,0)}.md-toast-open-bottom .md-button.md-fab-bottom-left:not([disabled]).md-focused,.md-toast-open-bottom .md-button.md-fab-bottom-left:not([disabled]):hover,.md-toast-open-bottom .md-button.md-fab-bottom-right:not([disabled]).md-focused,.md-toast-open-bottom .md-button.md-fab-bottom-right:not([disabled]):hover{transform:translate3d(0,-43px,0)}.md-button-group{display:flex;flex:1;width:100%}.md-button-group>.md-button{flex:1;display:block;overflow:hidden;width:0;border-width:1px 0 1px 1px;border-radius:0;text-align:center;text-overflow:ellipsis;white-space:nowrap}.md-button-group>.md-button:first-child{border-radius:2px 0 0 2px}.md-button-group>.md-button:last-child{border-right-width:1px;border-radius:0 2px 2px 0}@media screen and (-ms-high-contrast:active){.md-button.md-fab,.md-button.md-raised{border:1px solid #fff}}md-card{box-sizing:border-box;display:flex;flex-direction:column;margin:8px;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}md-card md-card-header{padding:16px;display:flex;flex-direction:row}md-card md-card-header:first-child md-card-avatar{margin-right:12px}[dir=rtl] md-card md-card-header:first-child md-card-avatar{margin-right:auto;margin-left:12px}md-card md-card-header:last-child md-card-avatar{margin-left:12px}[dir=rtl] md-card md-card-header:last-child md-card-avatar{margin-left:auto;margin-right:12px}md-card md-card-header md-card-avatar{width:40px;height:40px}md-card md-card-header md-card-avatar .md-user-avatar,md-card md-card-header md-card-avatar md-icon{border-radius:50%}md-card md-card-header md-card-avatar md-icon{padding:8px}md-card md-card-header md-card-avatar+md-card-header-text{max-height:40px}md-card md-card-header md-card-avatar+md-card-header-text .md-title{font-size:14px}md-card md-card-header md-card-header-text{display:flex;flex:1;flex-direction:column}md-card md-card-header md-card-header-text .md-subhead{font-size:14px}md-card md-card-title-media img,md-card>img,md-card>md-card-header img{box-sizing:border-box;display:flex;flex:0 0 auto;width:100%;height:auto}md-card md-card-title{padding:24px 16px 16px;display:flex;flex:1 1 auto;flex-direction:row}md-card md-card-title+md-card-content{padding-top:0}md-card md-card-title md-card-title-text{flex:1;flex-direction:column;display:flex}md-card md-card-title md-card-title-text .md-subhead{padding-top:0;font-size:14px}md-card md-card-title md-card-title-text:only-child .md-subhead{padding-top:12px}md-card md-card-title md-card-title-media{margin-top:-8px}md-card md-card-title md-card-title-media .md-media-sm{height:80px;width:80px}md-card md-card-title md-card-title-media .md-media-md{height:112px;width:112px}md-card md-card-title md-card-title-media .md-media-lg{height:152px;width:152px}md-card md-card-content{display:block;padding:16px}md-card md-card-content>p:first-child{margin-top:0}md-card md-card-content>p:last-child{margin-bottom:0}md-card md-card-content .md-media-xl{height:240px;width:240px}md-card .md-actions,md-card md-card-actions{margin:8px}md-card .md-actions.layout-column .md-button:not(.md-icon-button),md-card md-card-actions.layout-column .md-button:not(.md-icon-button){margin:2px 0}md-card .md-actions.layout-column .md-button:not(.md-icon-button):first-of-type,md-card md-card-actions.layout-column .md-button:not(.md-icon-button):first-of-type{margin-top:0}md-card .md-actions.layout-column .md-button:not(.md-icon-button):last-of-type,md-card md-card-actions.layout-column .md-button:not(.md-icon-button):last-of-type{margin-bottom:0}md-card .md-actions.layout-column .md-button.md-icon-button,md-card md-card-actions.layout-column .md-button.md-icon-button{margin-top:6px;margin-bottom:6px}md-card .md-actions md-card-icon-actions,md-card md-card-actions md-card-icon-actions{flex:1;justify-content:flex-start;display:flex;flex-direction:row}md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button),md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button){margin:0 4px}md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type,md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type{margin-left:0}[dir=rtl] md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type,[dir=rtl] md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type{margin-left:auto;margin-right:0}md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type,md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type{margin-right:0}[dir=rtl] md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type,[dir=rtl] md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type{margin-right:auto;margin-left:0}md-card .md-actions:not(.layout-column) .md-button.md-icon-button,md-card md-card-actions:not(.layout-column) .md-button.md-icon-button{margin-left:6px;margin-right:6px}md-card .md-actions:not(.layout-column) .md-button.md-icon-button:first-of-type,md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:first-of-type{margin-left:12px}[dir=rtl] md-card .md-actions:not(.layout-column) .md-button.md-icon-button:first-of-type,[dir=rtl] md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:first-of-type{margin-left:auto;margin-right:12px}md-card .md-actions:not(.layout-column) .md-button.md-icon-button:last-of-type,md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:last-of-type{margin-right:12px}[dir=rtl] md-card .md-actions:not(.layout-column) .md-button.md-icon-button:last-of-type,[dir=rtl] md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:last-of-type{margin-right:auto;margin-left:12px}md-card .md-actions:not(.layout-column) .md-button+md-card-icon-actions,md-card md-card-actions:not(.layout-column) .md-button+md-card-icon-actions{flex:1;justify-content:flex-end;display:flex;flex-direction:row}md-card md-card-footer{margin-top:auto;padding:16px}@media screen and (-ms-high-contrast:active){md-card{border:1px solid #fff}}.md-image-no-fill>img{width:auto;height:auto}.md-contact-chips .md-chips md-chip{padding:0 25px 0 0}[dir=rtl] .md-contact-chips .md-chips md-chip{padding:0 0 0 25px}.md-contact-chips .md-chips md-chip .md-contact-avatar{float:left}[dir=rtl] .md-contact-chips .md-chips md-chip .md-contact-avatar{float:right}.md-contact-chips .md-chips md-chip .md-contact-avatar img{height:32px;border-radius:16px}.md-contact-chips .md-chips md-chip .md-contact-name{display:inline-block;height:32px;margin-left:8px}[dir=rtl] .md-contact-chips .md-chips md-chip .md-contact-name{margin-left:auto;margin-right:8px}.md-contact-suggestion{height:56px}.md-contact-suggestion img{height:40px;border-radius:20px;margin-top:8px}.md-contact-suggestion .md-contact-name{margin-left:8px;width:120px}[dir=rtl] .md-contact-suggestion .md-contact-name{margin-left:auto;margin-right:8px}.md-contact-suggestion .md-contact-email,.md-contact-suggestion .md-contact-name{display:inline-block;overflow:hidden;text-overflow:ellipsis}.md-contact-chips-suggestions li{height:100%}.md-chips{display:block;font-family:Roboto,"Helvetica Neue",sans-serif;font-size:16px;padding:0 0 8px 3px;vertical-align:middle}.md-chips:after{content:'';display:table;clear:both}[dir=rtl] .md-chips{padding:0 3px 8px 0}.md-chips.md-readonly .md-chip-input-container{min-height:32px}.md-chips:not(.md-readonly){cursor:text}.md-chips.md-removable md-chip{padding-right:22px}[dir=rtl] .md-chips.md-removable md-chip{padding-right:0;padding-left:22px}.md-chips.md-removable md-chip .md-chip-content{padding-right:4px}[dir=rtl] .md-chips.md-removable md-chip .md-chip-content{padding-right:0;padding-left:4px}.md-chips md-chip{cursor:default;border-radius:16px;display:block;height:32px;line-height:32px;margin:8px 8px 0 0;padding:0 12px 0 12px;float:left;box-sizing:border-box;max-width:100%;position:relative}[dir=rtl] .md-chips md-chip{margin:8px 0 0 8px}[dir=rtl] .md-chips md-chip{float:right}.md-chips md-chip .md-chip-content{display:block;float:left;white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}[dir=rtl] .md-chips md-chip .md-chip-content{float:right}.md-chips md-chip .md-chip-content:focus{outline:0}.md-chips md-chip._md-chip-content-edit-is-enabled{-webkit-user-select:none;-moz-user-select:none;-khtml-user-select:none;-ms-user-select:none}.md-chips md-chip .md-chip-remove-container{position:absolute;right:0;line-height:22px}[dir=rtl] .md-chips md-chip .md-chip-remove-container{right:auto;left:0}.md-chips md-chip .md-chip-remove{text-align:center;width:32px;height:32px;min-width:0;padding:0;background:0 0;border:none;box-shadow:none;margin:0;position:relative}.md-chips md-chip .md-chip-remove md-icon{height:18px;width:18px;position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0)}.md-chips .md-chip-input-container{display:block;line-height:32px;margin:8px 8px 0 0;padding:0;float:left}[dir=rtl] .md-chips .md-chip-input-container{margin:8px 0 0 8px}[dir=rtl] .md-chips .md-chip-input-container{float:right}.md-chips .md-chip-input-container input:not([type]),.md-chips .md-chip-input-container input[type=email],.md-chips .md-chip-input-container input[type=number],.md-chips .md-chip-input-container input[type=tel],.md-chips .md-chip-input-container input[type=text],.md-chips .md-chip-input-container input[type=url]{border:0;height:32px;line-height:32px;padding:0}.md-chips .md-chip-input-container input:not([type]):focus,.md-chips .md-chip-input-container input[type=email]:focus,.md-chips .md-chip-input-container input[type=number]:focus,.md-chips .md-chip-input-container input[type=tel]:focus,.md-chips .md-chip-input-container input[type=text]:focus,.md-chips .md-chip-input-container input[type=url]:focus{outline:0}.md-chips .md-chip-input-container md-autocomplete,.md-chips .md-chip-input-container md-autocomplete-wrap{background:0 0;height:32px}.md-chips .md-chip-input-container md-autocomplete md-autocomplete-wrap{box-shadow:none}.md-chips .md-chip-input-container md-autocomplete input{position:relative}.md-chips .md-chip-input-container input{border:0;height:32px;line-height:32px;padding:0}.md-chips .md-chip-input-container input:focus{outline:0}.md-chips .md-chip-input-container md-autocomplete,.md-chips .md-chip-input-container md-autocomplete-wrap{height:32px}.md-chips .md-chip-input-container md-autocomplete{box-shadow:none}.md-chips .md-chip-input-container md-autocomplete input{position:relative}.md-chips .md-chip-input-container:not(:first-child){margin:8px 8px 0 0}[dir=rtl] .md-chips .md-chip-input-container:not(:first-child){margin:8px 0 0 8px}.md-chips .md-chip-input-container input{background:0 0;border-width:0}.md-chips md-autocomplete button{display:none}@media screen and (-ms-high-contrast:active){.md-chip-input-container,md-chip{border:1px solid #fff}.md-chip-input-container md-autocomplete{border:none}}.md-inline-form md-checkbox{margin:19px 0 18px}md-checkbox{box-sizing:border-box;display:inline-block;margin-bottom:16px;white-space:nowrap;cursor:pointer;outline:0;user-select:none;position:relative;min-width:20px;min-height:20px;margin-left:0;margin-right:16px}[dir=rtl] md-checkbox{margin-left:16px}[dir=rtl] md-checkbox{margin-right:0}md-checkbox:last-of-type{margin-left:0;margin-right:0}md-checkbox.md-focused:not([disabled]) .md-container:before{left:-8px;top:-8px;right:-8px;bottom:-8px}md-checkbox.md-focused:not([disabled]):not(.md-checked) .md-container:before{background-color:rgba(0,0,0,.12)}md-checkbox.md-align-top-left>div.md-container{top:12px}md-checkbox .md-container{position:absolute;top:50%;transform:translateY(-50%);box-sizing:border-box;display:inline-block;width:20px;height:20px;left:0;right:auto}[dir=rtl] md-checkbox .md-container{left:auto}[dir=rtl] md-checkbox .md-container{right:0}md-checkbox .md-container:before{box-sizing:border-box;background-color:transparent;border-radius:50%;content:'';position:absolute;display:block;height:auto;left:0;top:0;right:0;bottom:0;transition:all .5s;width:auto}md-checkbox .md-container:after{box-sizing:border-box;content:'';position:absolute;top:-10px;right:-10px;bottom:-10px;left:-10px}md-checkbox .md-container .md-ripple-container{position:absolute;display:block;width:auto;height:auto;left:-15px;top:-15px;right:-15px;bottom:-15px}md-checkbox .md-icon{box-sizing:border-box;transition:240ms;position:absolute;top:0;left:0;width:20px;height:20px;border-width:2px;border-style:solid;border-radius:2px}md-checkbox.md-checked .md-icon{border-color:transparent}md-checkbox.md-checked .md-icon:after{box-sizing:border-box;transform:rotate(45deg);position:absolute;left:4.6666666667px;top:.2222222222px;display:table;width:6.6666666667px;height:13.3333333333px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:''}md-checkbox[disabled]{cursor:default}md-checkbox.md-indeterminate .md-icon:after{box-sizing:border-box;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:table;width:12px;height:2px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:''}md-checkbox .md-label{box-sizing:border-box;position:relative;display:inline-block;vertical-align:middle;white-space:normal;user-select:text;margin-left:30px;margin-right:0}[dir=rtl] md-checkbox .md-label{margin-left:0}[dir=rtl] md-checkbox .md-label{margin-right:30px}md-content{display:block;position:relative;overflow:auto;-webkit-overflow-scrolling:touch}md-content[md-scroll-y]{overflow-y:auto;overflow-x:hidden}md-content[md-scroll-x]{overflow-x:auto;overflow-y:hidden}@media print{md-content{overflow:visible!important}}md-calendar{font-size:13px;user-select:none}.md-calendar-scroll-mask{display:inline-block;overflow:hidden;height:308px}.md-calendar-scroll-mask .md-virtual-repeat-scroller{overflow-y:scroll;-webkit-overflow-scrolling:touch}.md-calendar-scroll-mask .md-virtual-repeat-scroller::-webkit-scrollbar{display:none}.md-calendar-scroll-mask .md-virtual-repeat-offsetter{width:100%}.md-calendar-scroll-container{box-shadow:inset -3px 3px 6px rgba(0,0,0,.2);display:inline-block;height:308px;width:346px}.md-calendar-date{height:44px;width:44px;text-align:center;padding:0;border:none;box-sizing:content-box}.md-calendar-date:first-child{padding-left:16px}[dir=rtl] .md-calendar-date:first-child{padding-left:0;padding-right:16px}.md-calendar-date:last-child{padding-right:16px}[dir=rtl] .md-calendar-date:last-child{padding-right:0;padding-left:16px}.md-calendar-date.md-calendar-date-disabled{cursor:default}.md-calendar-date-selection-indicator{transition:background-color,color .4s cubic-bezier(.25,.8,.25,1);border-radius:50%;display:inline-block;width:40px;height:40px;line-height:40px}.md-calendar-date:not(.md-disabled) .md-calendar-date-selection-indicator{cursor:pointer}.md-calendar-month-label{height:44px;font-size:14px;font-weight:500;padding:0 0 0 24px}[dir=rtl] .md-calendar-month-label{padding:0 24px 0 0}md-calendar-month .md-calendar-month-label:not(.md-calendar-month-label-disabled){cursor:pointer}.md-calendar-month-label md-icon{transform:rotate(180deg)}[dir=rtl] .md-calendar-month-label md-icon{transform:none}.md-calendar-month-label span{vertical-align:middle}.md-calendar-day-header{table-layout:fixed;border-spacing:0;border-collapse:collapse}.md-calendar-day-header th{height:40px;width:44px;text-align:center;padding:0;border:none;box-sizing:content-box;font-weight:400}.md-calendar-day-header th:first-child{padding-left:16px}[dir=rtl] .md-calendar-day-header th:first-child{padding-left:0;padding-right:16px}.md-calendar-day-header th:last-child{padding-right:16px}[dir=rtl] .md-calendar-day-header th:last-child{padding-right:0;padding-left:16px}.md-calendar{table-layout:fixed;border-spacing:0;border-collapse:collapse}.md-calendar tr:last-child td{border-bottom-width:1px;border-bottom-style:solid}.md-calendar:first-child{border-top:1px solid transparent}.md-calendar tbody,.md-calendar td,.md-calendar tr{vertical-align:middle;box-sizing:content-box}md-datepicker{white-space:nowrap;overflow:hidden;padding-right:18px;margin-right:-18px;vertical-align:middle}[dir=rtl] md-datepicker{padding-right:0;padding-left:18px}[dir=rtl] md-datepicker{margin-right:auto;margin-left:-18px}.md-inline-form md-datepicker{margin-top:12px}.md-datepicker-button{display:inline-block;box-sizing:border-box;background:0 0;vertical-align:middle;position:relative}.md-datepicker-button:before{top:0;left:0;bottom:0;right:0;position:absolute;content:'';speak:none}.md-datepicker-input{font-size:14px;box-sizing:border-box;border:none;box-shadow:none;outline:0;background:0 0;min-width:120px;max-width:328px;padding:0 0 5px}.md-datepicker-input::-ms-clear{display:none}._md-datepicker-floating-label>md-datepicker{overflow:visible}._md-datepicker-floating-label>md-datepicker .md-datepicker-input-container{border:none}._md-datepicker-floating-label>md-datepicker .md-datepicker-button{float:left;margin-top:-2.5px}[dir=rtl] ._md-datepicker-floating-label>md-datepicker .md-datepicker-button{float:right}._md-datepicker-floating-label._md-datepicker-has-calendar-icon>label:not(.md-no-float):not(.md-container-ignore){right:18px;left:auto;width:calc(100% - 84px)}[dir=rtl] ._md-datepicker-floating-label._md-datepicker-has-calendar-icon>label:not(.md-no-float):not(.md-container-ignore){right:auto}[dir=rtl] ._md-datepicker-floating-label._md-datepicker-has-calendar-icon>label:not(.md-no-float):not(.md-container-ignore){left:18px}._md-datepicker-floating-label._md-datepicker-has-calendar-icon .md-input-message-animation{margin-left:64px}[dir=rtl] ._md-datepicker-floating-label._md-datepicker-has-calendar-icon .md-input-message-animation{margin-left:auto;margin-right:64px}.md-datepicker-input-container{position:relative;border-bottom-width:1px;border-bottom-style:solid;display:inline-block;width:auto}.md-icon-button+.md-datepicker-input-container{margin-left:12px}[dir=rtl] .md-icon-button+.md-datepicker-input-container{margin-left:auto;margin-right:12px}.md-datepicker-input-container.md-datepicker-focused{border-bottom-width:2px}.md-datepicker-is-showing .md-scroll-mask{z-index:99}.md-datepicker-calendar-pane{position:absolute;top:0;left:-100%;z-index:100;border-width:1px;border-style:solid;background:0 0;transform:scale(0);transform-origin:0 0;transition:transform .2s cubic-bezier(.25,.8,.25,1)}.md-datepicker-calendar-pane.md-pane-open{transform:scale(1)}.md-datepicker-input-mask{height:40px;width:340px;position:relative;overflow:hidden;background:0 0;pointer-events:none;cursor:text}.md-datepicker-calendar{opacity:0;transition:opacity .2s cubic-bezier(.5,0,.25,1)}.md-pane-open .md-datepicker-calendar{opacity:1}.md-datepicker-calendar md-calendar:focus{outline:0}.md-datepicker-expand-triangle{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid}.md-datepicker-triangle-button{position:absolute;right:0;top:5px;transform:translateY(-25%) translateX(45%)}[dir=rtl] .md-datepicker-triangle-button{right:auto;left:0}[dir=rtl] .md-datepicker-triangle-button{transform:translateY(-25%) translateX(-45%)}.md-datepicker-triangle-button.md-button.md-icon-button{height:36px;width:36px;position:absolute;padding:8px}md-datepicker[disabled] .md-datepicker-input-container{border-bottom-color:transparent}md-datepicker[disabled] .md-datepicker-triangle-button{display:none}.md-datepicker-open{overflow:hidden}.md-datepicker-open .md-datepicker-input-container,.md-datepicker-open input.md-input{border-bottom-color:transparent}.md-datepicker-open .md-datepicker-triangle-button,.md-datepicker-open.md-input-has-placeholder>label,.md-datepicker-open.md-input-has-value>label{display:none}.md-datepicker-pos-adjusted .md-datepicker-input-mask{display:none}.md-datepicker-calendar-pane .md-calendar{transform:translateY(-85px);transition:transform .65s cubic-bezier(.25,.8,.25,1);transition-delay:125ms}.md-datepicker-calendar-pane.md-pane-open .md-calendar{transform:translateY(0)}.md-dialog-is-showing{max-height:100%}.md-dialog-container{display:flex;justify-content:center;align-items:center;position:absolute;top:0;left:0;width:100%;height:100%;z-index:80;overflow:hidden}md-dialog{opacity:0;min-width:240px;max-width:80%;max-height:80%;position:relative;overflow:auto;box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 13px 19px 2px rgba(0,0,0,.14),0 5px 24px 4px rgba(0,0,0,.12);display:flex;flex-direction:column}md-dialog.md-transition-in{opacity:1;transition:all .4s cubic-bezier(.25,.8,.25,1);transform:translate(0,0) scale(1)}md-dialog.md-transition-out{opacity:0;transition:all .4s cubic-bezier(.25,.8,.25,1);transform:translate(0,100%) scale(.2)}md-dialog>form{display:flex;flex-direction:column;overflow:auto}md-dialog .md-dialog-content{padding:24px}md-dialog md-dialog-content{order:1;flex-direction:column;overflow:auto;-webkit-overflow-scrolling:touch}md-dialog md-dialog-content:not([layout=row])>:first-child:not(.md-subheader){margin-top:0}md-dialog md-dialog-content:focus{outline:0}md-dialog md-dialog-content .md-subheader{margin:0}md-dialog md-dialog-content .md-dialog-content-body{width:100%}md-dialog md-dialog-content .md-prompt-input-container{width:100%;box-sizing:border-box}md-dialog .md-actions,md-dialog md-dialog-actions{display:flex;order:2;box-sizing:border-box;align-items:center;justify-content:flex-end;margin-bottom:0;padding-right:8px;padding-left:16px;min-height:52px;overflow:hidden}[dir=rtl] md-dialog .md-actions,[dir=rtl] md-dialog md-dialog-actions{padding-right:16px}[dir=rtl] md-dialog .md-actions,[dir=rtl] md-dialog md-dialog-actions{padding-left:8px}md-dialog .md-actions .md-button,md-dialog md-dialog-actions .md-button{margin-bottom:8px;margin-left:8px;margin-right:0;margin-top:8px}[dir=rtl] md-dialog .md-actions .md-button,[dir=rtl] md-dialog md-dialog-actions .md-button{margin-left:0}[dir=rtl] md-dialog .md-actions .md-button,[dir=rtl] md-dialog md-dialog-actions .md-button{margin-right:8px}md-dialog.md-content-overflow .md-actions,md-dialog.md-content-overflow md-dialog-actions{border-top-width:1px;border-top-style:solid}@media screen and (-ms-high-contrast:active){md-dialog{border:1px solid #fff}}@media (max-width:959px){md-dialog.md-dialog-fullscreen{min-height:100%;min-width:100%;border-radius:0}}md-divider{display:block;border-top-width:1px;border-top-style:solid;margin:0}md-divider[md-inset]{margin-left:80px}[dir=rtl] md-divider[md-inset]{margin-left:auto;margin-right:80px}.layout-gt-lg-row>md-divider,.layout-gt-md-row>md-divider,.layout-gt-sm-row>md-divider,.layout-gt-xs-row>md-divider,.layout-lg-row>md-divider,.layout-md-row>md-divider,.layout-row>md-divider,.layout-sm-row>md-divider,.layout-xl-row>md-divider,.layout-xs-row>md-divider{border-top-width:0;border-right-width:1px;border-right-style:solid}md-fab-speed-dial{position:relative;display:flex;align-items:center;z-index:20}md-fab-speed-dial.md-fab-bottom-right{top:auto;right:20px;bottom:20px;left:auto;position:absolute}md-fab-speed-dial.md-fab-bottom-left{top:auto;right:auto;bottom:20px;left:20px;position:absolute}md-fab-speed-dial.md-fab-top-right{top:20px;right:20px;bottom:auto;left:auto;position:absolute}md-fab-speed-dial.md-fab-top-left{top:20px;right:auto;bottom:auto;left:20px;position:absolute}md-fab-speed-dial:not(.md-hover-full){pointer-events:none}md-fab-speed-dial:not(.md-hover-full) .md-fab-action-item,md-fab-speed-dial:not(.md-hover-full) md-fab-trigger{pointer-events:auto}md-fab-speed-dial:not(.md-hover-full).md-is-open{pointer-events:auto}md-fab-speed-dial ._md-css-variables{z-index:20}md-fab-speed-dial.md-is-open .md-fab-action-item{align-items:center}md-fab-speed-dial md-fab-actions{display:flex;height:auto}md-fab-speed-dial md-fab-actions .md-fab-action-item{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-fab-speed-dial.md-down{flex-direction:column}md-fab-speed-dial.md-down md-fab-trigger{order:1}md-fab-speed-dial.md-down md-fab-actions{flex-direction:column;order:2}md-fab-speed-dial.md-up{flex-direction:column}md-fab-speed-dial.md-up md-fab-trigger{order:2}md-fab-speed-dial.md-up md-fab-actions{flex-direction:column-reverse;order:1}md-fab-speed-dial.md-left{flex-direction:row}md-fab-speed-dial.md-left md-fab-trigger{order:2}md-fab-speed-dial.md-left md-fab-actions{flex-direction:row-reverse;order:1}md-fab-speed-dial.md-left md-fab-actions .md-fab-action-item{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-fab-speed-dial.md-right{flex-direction:row}md-fab-speed-dial.md-right md-fab-trigger{order:1}md-fab-speed-dial.md-right md-fab-actions{flex-direction:row;order:2}md-fab-speed-dial.md-right md-fab-actions .md-fab-action-item{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-fab-speed-dial.md-fling-remove .md-fab-action-item>*,md-fab-speed-dial.md-scale-remove .md-fab-action-item>*{visibility:hidden}md-fab-speed-dial.md-fling .md-fab-action-item{opacity:1}md-fab-speed-dial.md-fling.md-animations-waiting .md-fab-action-item{opacity:0;transition-duration:0s}md-fab-speed-dial.md-scale .md-fab-action-item{transform:scale(0);transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:.1428571429s}md-fab-toolbar{display:block}md-fab-toolbar.md-fab-bottom-right{top:auto;right:20px;bottom:20px;left:auto;position:absolute}md-fab-toolbar.md-fab-bottom-left{top:auto;right:auto;bottom:20px;left:20px;position:absolute}md-fab-toolbar.md-fab-top-right{top:20px;right:20px;bottom:auto;left:auto;position:absolute}md-fab-toolbar.md-fab-top-left{top:20px;right:auto;bottom:auto;left:20px;position:absolute}md-fab-toolbar .md-fab-toolbar-wrapper{display:block;position:relative;overflow:hidden;height:68px}md-fab-toolbar md-fab-trigger{position:absolute;z-index:20}md-fab-toolbar md-fab-trigger button{overflow:visible!important}md-fab-toolbar md-fab-trigger .md-fab-toolbar-background{display:block;position:absolute;z-index:21;opacity:1;transition:all .3s cubic-bezier(.55,0,.55,.2)}md-fab-toolbar md-fab-trigger md-icon{position:relative;z-index:22;opacity:1;transition:all .2s ease-in}md-fab-toolbar.md-left md-fab-trigger{right:0}[dir=rtl] md-fab-toolbar.md-left md-fab-trigger{right:auto;left:0}md-fab-toolbar.md-left .md-toolbar-tools{flex-direction:row-reverse}md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-right:.6rem}[dir=rtl] md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-right:auto;margin-left:.6rem}md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-left:-.8rem}[dir=rtl] md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-left:auto;margin-right:-.8rem}md-fab-toolbar.md-left .md-toolbar-tools>.md-button:last-child{margin-right:8px}[dir=rtl] md-fab-toolbar.md-left .md-toolbar-tools>.md-button:last-child{margin-right:auto;margin-left:8px}md-fab-toolbar.md-right md-fab-trigger{left:0}[dir=rtl] md-fab-toolbar.md-right md-fab-trigger{left:auto;right:0}md-fab-toolbar.md-right .md-toolbar-tools{flex-direction:row}md-fab-toolbar md-toolbar{background-color:transparent!important;pointer-events:none;z-index:23}md-fab-toolbar md-toolbar .md-toolbar-tools{padding:0 20px;margin-top:3px}md-fab-toolbar md-toolbar .md-fab-action-item{opacity:0;transform:scale(0);transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:.15s}md-fab-toolbar.md-is-open md-fab-trigger>button{box-shadow:none}md-fab-toolbar.md-is-open md-fab-trigger>button md-icon{opacity:0}md-fab-toolbar.md-is-open .md-fab-action-item{opacity:1;transform:scale(1)}md-grid-list{box-sizing:border-box;display:block;position:relative}md-grid-list md-grid-tile,md-grid-list md-grid-tile-footer,md-grid-list md-grid-tile-header,md-grid-list md-grid-tile>figure{box-sizing:border-box}md-grid-list md-grid-tile{display:block;position:absolute}md-grid-list md-grid-tile figure{display:flex;align-items:center;justify-content:center;height:100%;position:absolute;top:0;right:0;bottom:0;left:0;padding:0;margin:0}md-grid-list md-grid-tile md-grid-tile-footer,md-grid-list md-grid-tile md-grid-tile-header{display:flex;flex-direction:row;align-items:center;height:48px;color:#fff;background:rgba(0,0,0,.18);overflow:hidden;position:absolute;left:0;right:0}md-grid-list md-grid-tile md-grid-tile-footer h3,md-grid-list md-grid-tile md-grid-tile-footer h4,md-grid-list md-grid-tile md-grid-tile-header h3,md-grid-list md-grid-tile md-grid-tile-header h4{font-weight:400;margin:0 0 0 16px}md-grid-list md-grid-tile md-grid-tile-footer h3,md-grid-list md-grid-tile md-grid-tile-header h3{font-size:14px}md-grid-list md-grid-tile md-grid-tile-footer h4,md-grid-list md-grid-tile md-grid-tile-header h4{font-size:12px}md-grid-list md-grid-tile md-grid-tile-header{top:0}md-grid-list md-grid-tile md-grid-tile-footer{bottom:0}@media screen and (-ms-high-contrast:active){md-grid-tile{border:1px solid #fff}md-grid-tile-footer{border-top:1px solid #fff}}md-icon{margin:auto;background-repeat:no-repeat no-repeat;display:inline-block;vertical-align:middle;fill:currentColor;height:24px;width:24px;min-height:24px;min-width:24px}md-icon svg{pointer-events:none;display:block}md-icon[md-font-icon]{line-height:24px;width:auto}md-input-container{display:inline-block;position:relative;padding:2px;margin:18px 0;vertical-align:middle}md-input-container:after{content:'';display:table;clear:both}md-input-container.md-block{display:block}md-input-container .md-errors-spacer{float:right;min-height:24px;min-width:1px}[dir=rtl] md-input-container .md-errors-spacer{float:left}md-input-container>md-icon{position:absolute;top:8px;left:2px;right:auto}[dir=rtl] md-input-container>md-icon{left:auto}[dir=rtl] md-input-container>md-icon{right:2px}md-input-container input[type=color],md-input-container input[type=date],md-input-container input[type=datetime-local],md-input-container input[type=datetime],md-input-container input[type=email],md-input-container input[type=month],md-input-container input[type=number],md-input-container input[type=password],md-input-container input[type=search],md-input-container input[type=tel],md-input-container input[type=text],md-input-container input[type=time],md-input-container input[type=url],md-input-container input[type=week],md-input-container textarea{-moz-appearance:none;-webkit-appearance:none}md-input-container input[type=date],md-input-container input[type=datetime-local],md-input-container input[type=month],md-input-container input[type=time],md-input-container input[type=week]{min-height:26px}md-input-container textarea{resize:none;overflow:hidden}md-input-container textarea.md-input{min-height:26px;-ms-flex-preferred-size:auto}md-input-container textarea[md-no-autogrow]{height:auto;overflow:auto}md-input-container label:not(.md-container-ignore){position:absolute;bottom:100%;left:0;right:auto}[dir=rtl] md-input-container label:not(.md-container-ignore){left:auto}[dir=rtl] md-input-container label:not(.md-container-ignore){right:0}md-input-container label:not(.md-container-ignore).md-required:after{content:' *';font-size:13px;vertical-align:top}md-input-container .md-placeholder,md-input-container label:not(.md-no-float):not(.md-container-ignore){overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%;order:1;pointer-events:none;-webkit-font-smoothing:antialiased;padding-left:3px;padding-right:0;z-index:1;transform:translate3d(0,28px,0) scale(1);transition:transform .4s cubic-bezier(.25,.8,.25,1);max-width:100%;transform-origin:left top}[dir=rtl] md-input-container .md-placeholder,[dir=rtl] md-input-container label:not(.md-no-float):not(.md-container-ignore){padding-left:0}[dir=rtl] md-input-container .md-placeholder,[dir=rtl] md-input-container label:not(.md-no-float):not(.md-container-ignore){padding-right:3px}[dir=rtl] md-input-container .md-placeholder,[dir=rtl] md-input-container label:not(.md-no-float):not(.md-container-ignore){transform-origin:right top}md-input-container .md-placeholder{position:absolute;top:0;opacity:0;transition-property:opacity,transform;transform:translate3d(0,30px,0)}md-input-container.md-input-focused .md-placeholder{opacity:1;transform:translate3d(0,24px,0)}md-input-container.md-input-has-value .md-placeholder{transition:none;opacity:0}md-input-container:not(.md-input-has-value) input:not(:focus),md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-ampm-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-day-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-hour-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-millisecond-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-minute-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-month-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-second-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-text,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-week-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-year-field{color:transparent}md-input-container .md-input{order:2;display:block;margin-top:0;background:0 0;padding-top:2px;padding-bottom:1px;padding-left:2px;padding-right:2px;border-width:0 0 1px 0;line-height:26px;height:30px;-ms-flex-preferred-size:26px;border-radius:0;border-style:solid;width:100%;box-sizing:border-box;float:left}[dir=rtl] md-input-container .md-input{float:right}md-input-container .md-input:focus{outline:0}md-input-container .md-input:invalid{outline:0;box-shadow:none}md-input-container .md-input.md-no-flex{flex:none!important}md-input-container .md-char-counter{text-align:right;padding-right:2px;padding-left:0}[dir=rtl] md-input-container .md-char-counter{text-align:left}[dir=rtl] md-input-container .md-char-counter{padding-right:0}[dir=rtl] md-input-container .md-char-counter{padding-left:2px}md-input-container .md-input-messages-animation{position:relative;order:4;overflow:hidden;clear:left}[dir=rtl] md-input-container .md-input-messages-animation{clear:right}md-input-container .md-input-messages-animation.ng-enter .md-input-message-animation{opacity:0;margin-top:-100px}md-input-container .md-char-counter,md-input-container .md-input-message-animation{font-size:12px;line-height:14px;overflow:hidden;transition:all .3s cubic-bezier(.55,0,.55,.2);opacity:1;margin-top:0;padding-top:5px}md-input-container .md-char-counter:not(.md-char-counter),md-input-container .md-input-message-animation:not(.md-char-counter){padding-right:5px;padding-left:0}[dir=rtl] md-input-container .md-char-counter:not(.md-char-counter),[dir=rtl] md-input-container .md-input-message-animation:not(.md-char-counter){padding-right:0}[dir=rtl] md-input-container .md-char-counter:not(.md-char-counter),[dir=rtl] md-input-container .md-input-message-animation:not(.md-char-counter){padding-left:5px}md-input-container:not(.md-input-invalid) .md-auto-hide .md-input-message-animation{opacity:0;margin-top:-100px}md-input-container .md-input-message-animation:not(.ng-animate){opacity:0;margin-top:-100px}md-input-container .md-input-message-animation.ng-enter{opacity:0;margin-top:-100px}md-input-container.md-input-focused label:not(.md-no-float),md-input-container.md-input-has-placeholder label:not(.md-no-float),md-input-container.md-input-has-value label:not(.md-no-float){transform:translate3d(0,6px,0) scale(.75);transition:transform cubic-bezier(.25,.8,.25,1) .4s,width cubic-bezier(.25,.8,.25,1) .4s}md-input-container.md-input-has-value label{transition:none}md-input-container .md-input.ng-invalid.ng-dirty,md-input-container.md-input-focused .md-input,md-input-container.md-input-resized .md-input{padding-bottom:0;border-width:0 0 2px 0}[disabled] md-input-container .md-input,md-input-container .md-input[disabled]{background-position:bottom -1px left 0;background-size:4px 1px;background-repeat:repeat-x}md-input-container.md-icon-float{transition:margin-top .4s cubic-bezier(.25,.8,.25,1)}md-input-container.md-icon-float>label{pointer-events:none;position:absolute}md-input-container.md-icon-float>md-icon{top:8px;left:2px;right:auto}[dir=rtl] md-input-container.md-icon-float>md-icon{left:auto}[dir=rtl] md-input-container.md-icon-float>md-icon{right:2px}md-input-container.md-icon-left>label .md-placeholder,md-input-container.md-icon-left>label:not(.md-no-float):not(.md-container-ignore),md-input-container.md-icon-right>label .md-placeholder,md-input-container.md-icon-right>label:not(.md-no-float):not(.md-container-ignore){width:calc(100% - 36px - 18px)}md-input-container.md-icon-left{padding-left:36px;padding-right:0}[dir=rtl] md-input-container.md-icon-left{padding-left:0}[dir=rtl] md-input-container.md-icon-left{padding-right:36px}md-input-container.md-icon-left>label{left:36px;right:auto}[dir=rtl] md-input-container.md-icon-left>label{left:auto}[dir=rtl] md-input-container.md-icon-left>label{right:36px}md-input-container.md-icon-right{padding-left:0;padding-right:36px}[dir=rtl] md-input-container.md-icon-right{padding-left:36px}[dir=rtl] md-input-container.md-icon-right{padding-right:0}md-input-container.md-icon-right>md-icon:last-of-type{margin:0;right:2px;left:auto}[dir=rtl] md-input-container.md-icon-right>md-icon:last-of-type{right:auto}[dir=rtl] md-input-container.md-icon-right>md-icon:last-of-type{left:2px}md-input-container.md-icon-left.md-icon-right{padding-left:36px;padding-right:36px}md-input-container.md-icon-left.md-icon-right>label .md-placeholder,md-input-container.md-icon-left.md-icon-right>label:not(.md-no-float):not(.md-container-ignore){width:calc(100% - (36px * 2))}.md-resize-wrapper{position:relative}.md-resize-wrapper:after{content:'';display:table;clear:both}.md-resize-handle{position:absolute;bottom:-5px;left:0;height:10px;background:0 0;width:100%;cursor:ns-resize}@media screen and (-ms-high-contrast:active){md-input-container.md-default-theme>md-icon{fill:#fff}}md-list{display:block;padding:8px 0 8px 0}md-list .md-subheader{font-size:14px;font-weight:500;letter-spacing:.010em;line-height:1.2em}md-list.md-dense md-list-item,md-list.md-dense md-list-item .md-list-item-inner{min-height:48px}md-list.md-dense md-list-item .md-list-item-inner::before,md-list.md-dense md-list-item::before{content:'';min-height:48px;visibility:hidden;display:inline-block}md-list.md-dense md-list-item .md-list-item-inner md-icon:first-child,md-list.md-dense md-list-item md-icon:first-child{width:20px;height:20px}md-list.md-dense md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),md-list.md-dense md-list-item>md-icon:first-child:not(.md-avatar-icon){margin-right:36px}[dir=rtl] md-list.md-dense md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),[dir=rtl] md-list.md-dense md-list-item>md-icon:first-child:not(.md-avatar-icon){margin-right:auto;margin-left:36px}md-list.md-dense md-list-item .md-avatar,md-list.md-dense md-list-item .md-avatar-icon,md-list.md-dense md-list-item .md-list-item-inner .md-avatar,md-list.md-dense md-list-item .md-list-item-inner .md-avatar-icon{margin-right:20px}[dir=rtl] md-list.md-dense md-list-item .md-avatar,[dir=rtl] md-list.md-dense md-list-item .md-avatar-icon,[dir=rtl] md-list.md-dense md-list-item .md-list-item-inner .md-avatar,[dir=rtl] md-list.md-dense md-list-item .md-list-item-inner .md-avatar-icon{margin-right:auto;margin-left:20px}md-list.md-dense md-list-item .md-avatar,md-list.md-dense md-list-item .md-list-item-inner .md-avatar{flex:none;width:36px;height:36px}md-list.md-dense md-list-item.md-2-line .md-list-item-text.md-offset,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,md-list.md-dense md-list-item.md-3-line .md-list-item-text.md-offset,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:56px}[dir=rtl] md-list.md-dense md-list-item.md-2-line .md-list-item-text.md-offset,[dir=rtl] md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,[dir=rtl] md-list.md-dense md-list-item.md-3-line .md-list-item-text.md-offset,[dir=rtl] md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:auto;margin-right:56px}md-list.md-dense md-list-item.md-2-line .md-list-item-text h3,md-list.md-dense md-list-item.md-2-line .md-list-item-text h4,md-list.md-dense md-list-item.md-2-line .md-list-item-text p,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text h3,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text h4,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text p,md-list.md-dense md-list-item.md-3-line .md-list-item-text h3,md-list.md-dense md-list-item.md-3-line .md-list-item-text h4,md-list.md-dense md-list-item.md-3-line .md-list-item-text p,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text h3,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text h4,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text p{line-height:1.05;font-size:12px}md-list.md-dense md-list-item.md-2-line .md-list-item-text h3,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text h3,md-list.md-dense md-list-item.md-3-line .md-list-item-text h3,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text h3{font-size:13px}md-list.md-dense md-list-item.md-2-line,md-list.md-dense md-list-item.md-2-line>.md-no-style{min-height:60px}md-list.md-dense md-list-item.md-2-line::before,md-list.md-dense md-list-item.md-2-line>.md-no-style::before{content:'';min-height:60px;visibility:hidden;display:inline-block}md-list.md-dense md-list-item.md-2-line .md-avatar-icon,md-list.md-dense md-list-item.md-2-line>.md-avatar,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-avatar-icon,md-list.md-dense md-list-item.md-2-line>.md-no-style>.md-avatar{margin-top:12px}md-list.md-dense md-list-item.md-3-line,md-list.md-dense md-list-item.md-3-line>.md-no-style{min-height:76px}md-list.md-dense md-list-item.md-3-line::before,md-list.md-dense md-list-item.md-3-line>.md-no-style::before{content:'';min-height:76px;visibility:hidden;display:inline-block}md-list.md-dense md-list-item.md-3-line>.md-avatar,md-list.md-dense md-list-item.md-3-line>.md-no-style>.md-avatar,md-list.md-dense md-list-item.md-3-line>.md-no-style>md-icon:first-child,md-list.md-dense md-list-item.md-3-line>md-icon:first-child{margin-top:16px}md-list-item{position:relative}md-list-item.md-proxy-focus.md-focused .md-no-style{transition:background-color .15s linear}md-list-item._md-button-wrap{position:relative}md-list-item._md-button-wrap>div.md-button:first-child{display:flex;align-items:center;justify-content:flex-start;padding:0 16px;margin:0;font-weight:400;text-align:left;border:medium none}[dir=rtl] md-list-item._md-button-wrap>div.md-button:first-child{text-align:right}md-list-item._md-button-wrap>div.md-button:first-child>.md-button:first-child{position:absolute;top:0;left:0;height:100%;margin:0;padding:0}md-list-item._md-button-wrap>div.md-button:first-child .md-list-item-inner{width:100%;min-height:inherit}md-list-item .md-no-style,md-list-item.md-no-proxy{position:relative;padding:0 16px;flex:1 1 auto}md-list-item .md-no-style.md-button,md-list-item.md-no-proxy.md-button{font-size:inherit;height:inherit;text-align:left;text-transform:none;width:100%;white-space:normal;flex-direction:inherit;align-items:inherit;border-radius:0;margin:0}[dir=rtl] md-list-item .md-no-style.md-button,[dir=rtl] md-list-item.md-no-proxy.md-button{text-align:right}md-list-item .md-no-style.md-button>.md-ripple-container,md-list-item.md-no-proxy.md-button>.md-ripple-container{border-radius:0}md-list-item .md-no-style:focus,md-list-item.md-no-proxy:focus{outline:0}md-list-item.md-clickable:hover{cursor:pointer}md-list-item md-divider{position:absolute;bottom:0;left:0;width:100%}[dir=rtl] md-list-item md-divider{left:auto;right:0}md-list-item md-divider[md-inset]{left:72px;width:calc(100% - 72px);margin:0!important}[dir=rtl] md-list-item md-divider[md-inset]{left:auto;right:72px}md-list-item,md-list-item .md-list-item-inner{display:flex;justify-content:flex-start;align-items:center;min-height:48px;height:auto}md-list-item .md-list-item-inner::before,md-list-item::before{content:'';min-height:48px;visibility:hidden;display:inline-block}md-list-item .md-list-item-inner>div.md-primary>md-icon:not(.md-avatar-icon),md-list-item .md-list-item-inner>div.md-secondary>md-icon:not(.md-avatar-icon),md-list-item .md-list-item-inner>md-icon.md-secondary:not(.md-avatar-icon),md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),md-list-item>div.md-primary>md-icon:not(.md-avatar-icon),md-list-item>div.md-secondary>md-icon:not(.md-avatar-icon),md-list-item>md-icon.md-secondary:not(.md-avatar-icon),md-list-item>md-icon:first-child:not(.md-avatar-icon){width:24px;margin-top:16px;margin-bottom:12px;box-sizing:content-box}md-list-item .md-list-item-inner md-checkbox.md-secondary,md-list-item .md-list-item-inner>div.md-primary>md-checkbox,md-list-item .md-list-item-inner>div.md-secondary>md-checkbox,md-list-item .md-list-item-inner>md-checkbox,md-list-item md-checkbox.md-secondary,md-list-item>div.md-primary>md-checkbox,md-list-item>div.md-secondary>md-checkbox,md-list-item>md-checkbox{align-self:center}md-list-item .md-list-item-inner md-checkbox.md-secondary .md-label,md-list-item .md-list-item-inner>div.md-primary>md-checkbox .md-label,md-list-item .md-list-item-inner>div.md-secondary>md-checkbox .md-label,md-list-item .md-list-item-inner>md-checkbox .md-label,md-list-item md-checkbox.md-secondary .md-label,md-list-item>div.md-primary>md-checkbox .md-label,md-list-item>div.md-secondary>md-checkbox .md-label,md-list-item>md-checkbox .md-label{display:none}md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),md-list-item>md-icon:first-child:not(.md-avatar-icon){margin-right:32px}[dir=rtl] md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),[dir=rtl] md-list-item>md-icon:first-child:not(.md-avatar-icon){margin-right:auto;margin-left:32px}md-list-item .md-avatar,md-list-item .md-avatar-icon,md-list-item .md-list-item-inner .md-avatar,md-list-item .md-list-item-inner .md-avatar-icon{margin-top:8px;margin-bottom:8px;margin-right:16px;border-radius:50%;box-sizing:content-box}[dir=rtl] md-list-item .md-avatar,[dir=rtl] md-list-item .md-avatar-icon,[dir=rtl] md-list-item .md-list-item-inner .md-avatar,[dir=rtl] md-list-item .md-list-item-inner .md-avatar-icon{margin-right:auto;margin-left:16px}md-list-item .md-avatar,md-list-item .md-list-item-inner .md-avatar{flex:none;width:40px;height:40px}md-list-item .md-avatar-icon,md-list-item .md-list-item-inner .md-avatar-icon{padding:8px}md-list-item .md-avatar-icon svg,md-list-item .md-list-item-inner .md-avatar-icon svg{width:24px;height:24px}md-list-item .md-list-item-inner>md-checkbox,md-list-item>md-checkbox{width:24px;margin-left:3px;margin-right:29px;margin-top:16px}[dir=rtl] md-list-item .md-list-item-inner>md-checkbox,[dir=rtl] md-list-item>md-checkbox{margin-left:29px}[dir=rtl] md-list-item .md-list-item-inner>md-checkbox,[dir=rtl] md-list-item>md-checkbox{margin-right:3px}md-list-item .md-list-item-inner .md-secondary-container,md-list-item .md-secondary-container{display:flex;align-items:center;flex-shrink:0;margin:auto;margin-right:0;margin-left:auto}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container,[dir=rtl] md-list-item .md-secondary-container{margin-right:auto}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container,[dir=rtl] md-list-item .md-secondary-container{margin-left:0}md-list-item .md-list-item-inner .md-secondary-container .md-button:last-of-type,md-list-item .md-list-item-inner .md-secondary-container .md-icon-button:last-of-type,md-list-item .md-secondary-container .md-button:last-of-type,md-list-item .md-secondary-container .md-icon-button:last-of-type{margin-right:0}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container .md-button:last-of-type,[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container .md-icon-button:last-of-type,[dir=rtl] md-list-item .md-secondary-container .md-button:last-of-type,[dir=rtl] md-list-item .md-secondary-container .md-icon-button:last-of-type{margin-right:auto;margin-left:0}md-list-item .md-list-item-inner .md-secondary-container md-checkbox,md-list-item .md-secondary-container md-checkbox{margin-top:0;margin-bottom:0}md-list-item .md-list-item-inner .md-secondary-container md-checkbox:last-child,md-list-item .md-secondary-container md-checkbox:last-child{width:24px;margin-right:0}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container md-checkbox:last-child,[dir=rtl] md-list-item .md-secondary-container md-checkbox:last-child{margin-right:auto;margin-left:0}md-list-item .md-list-item-inner .md-secondary-container md-switch,md-list-item .md-secondary-container md-switch{margin-top:0;margin-bottom:0;margin-right:-6px}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container md-switch,[dir=rtl] md-list-item .md-secondary-container md-switch{margin-right:auto;margin-left:-6px}md-list-item .md-list-item-inner>.md-list-item-inner>p,md-list-item .md-list-item-inner>p,md-list-item>.md-list-item-inner>p,md-list-item>p{flex:1 1 auto;margin:0}md-list-item.md-2-line,md-list-item.md-2-line>.md-no-style,md-list-item.md-3-line,md-list-item.md-3-line>.md-no-style{align-items:flex-start;justify-content:center}md-list-item.md-2-line.md-long-text,md-list-item.md-2-line>.md-no-style.md-long-text,md-list-item.md-3-line.md-long-text,md-list-item.md-3-line>.md-no-style.md-long-text{margin-top:8px;margin-bottom:8px}md-list-item.md-2-line .md-list-item-text,md-list-item.md-2-line>.md-no-style .md-list-item-text,md-list-item.md-3-line .md-list-item-text,md-list-item.md-3-line>.md-no-style .md-list-item-text{flex:1 1 auto;margin:auto;text-overflow:ellipsis;overflow:hidden}md-list-item.md-2-line .md-list-item-text.md-offset,md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,md-list-item.md-3-line .md-list-item-text.md-offset,md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:56px}[dir=rtl] md-list-item.md-2-line .md-list-item-text.md-offset,[dir=rtl] md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,[dir=rtl] md-list-item.md-3-line .md-list-item-text.md-offset,[dir=rtl] md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:auto;margin-right:56px}md-list-item.md-2-line .md-list-item-text h3,md-list-item.md-2-line>.md-no-style .md-list-item-text h3,md-list-item.md-3-line .md-list-item-text h3,md-list-item.md-3-line>.md-no-style .md-list-item-text h3{font-size:16px;font-weight:400;letter-spacing:.010em;margin:0;line-height:1.2em;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}md-list-item.md-2-line .md-list-item-text h4,md-list-item.md-2-line>.md-no-style .md-list-item-text h4,md-list-item.md-3-line .md-list-item-text h4,md-list-item.md-3-line>.md-no-style .md-list-item-text h4{font-size:14px;letter-spacing:.010em;margin:3px 0 1px 0;font-weight:400;line-height:1.2em;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}md-list-item.md-2-line .md-list-item-text p,md-list-item.md-2-line>.md-no-style .md-list-item-text p,md-list-item.md-3-line .md-list-item-text p,md-list-item.md-3-line>.md-no-style .md-list-item-text p{font-size:14px;font-weight:500;letter-spacing:.010em;margin:0;line-height:1.6em}md-list-item.md-2-line,md-list-item.md-2-line>.md-no-style{height:auto;min-height:72px}md-list-item.md-2-line::before,md-list-item.md-2-line>.md-no-style::before{content:'';min-height:72px;visibility:hidden;display:inline-block}md-list-item.md-2-line .md-avatar-icon,md-list-item.md-2-line>.md-avatar,md-list-item.md-2-line>.md-no-style .md-avatar-icon,md-list-item.md-2-line>.md-no-style>.md-avatar{margin-top:12px}md-list-item.md-2-line>.md-no-style>md-icon:first-child,md-list-item.md-2-line>md-icon:first-child{align-self:flex-start}md-list-item.md-2-line .md-list-item-text,md-list-item.md-2-line>.md-no-style .md-list-item-text{flex:1 1 auto}md-list-item.md-3-line,md-list-item.md-3-line>.md-no-style{height:auto;min-height:88px}md-list-item.md-3-line::before,md-list-item.md-3-line>.md-no-style::before{content:'';min-height:88px;visibility:hidden;display:inline-block}md-list-item.md-3-line>.md-avatar,md-list-item.md-3-line>.md-no-style>.md-avatar,md-list-item.md-3-line>.md-no-style>md-icon:first-child,md-list-item.md-3-line>md-icon:first-child{margin-top:16px}.md-open-menu-container{position:fixed;left:0;top:0;z-index:100;opacity:0;border-radius:2px}.md-open-menu-container md-menu-divider{margin-top:4px;margin-bottom:4px;height:1px;min-height:1px;max-height:1px;width:100%}.md-open-menu-container md-menu-content>*{opacity:0}.md-open-menu-container:not(.md-clickable){pointer-events:none}.md-open-menu-container.md-active{opacity:1;transition:all .4s cubic-bezier(.25,.8,.25,1);transition-duration:.2s}.md-open-menu-container.md-active>md-menu-content>*{opacity:1;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:.2s;transition-delay:.1s}.md-open-menu-container.md-leave{opacity:0;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:250ms}md-menu-content{display:flex;flex-direction:column;padding:8px 0;max-height:304px;overflow-y:auto}md-menu-content.md-dense{max-height:208px}md-menu-content.md-dense md-menu-item{height:32px;min-height:0}md-menu-item{display:flex;flex-direction:row;min-height:48px;height:48px;align-content:center;justify-content:flex-start}md-menu-item>*{width:100%;margin:auto 0;padding-left:16px;padding-right:16px}md-menu-item>a.md-button{padding-top:5px}md-menu-item>.md-button{text-align:left;display:inline-block;border-radius:0;margin:auto 0;font-size:15px;text-transform:none;font-weight:400;height:100%;padding-left:16px;padding-right:16px;width:100%}md-menu-item>.md-button::-moz-focus-inner{padding:0;border:0}[dir=rtl] md-menu-item>.md-button{text-align:right}md-menu-item>.md-button md-icon{margin:auto 16px auto 0}[dir=rtl] md-menu-item>.md-button md-icon{margin:auto 0 auto 16px}md-menu-item>.md-button p{display:inline-block;margin:auto}md-menu-item>.md-button span{margin-top:auto;margin-bottom:auto}md-menu-item>.md-button .md-ripple-container{border-radius:inherit}md-toolbar .md-menu{height:auto;margin:auto;padding:0}@media (max-width:959px){md-menu-content{min-width:112px}md-menu-content[width="3"]{min-width:168px}md-menu-content[width="4"]{min-width:224px}md-menu-content[width="5"]{min-width:280px}md-menu-content[width="6"]{min-width:336px}md-menu-content[width="7"]{min-width:392px}}@media (min-width:960px){md-menu-content{min-width:96px}md-menu-content[width="3"]{min-width:192px}md-menu-content[width="4"]{min-width:256px}md-menu-content[width="5"]{min-width:320px}md-menu-content[width="6"]{min-width:384px}md-menu-content[width="7"]{min-width:448px}}md-toolbar.md-menu-toolbar h2.md-toolbar-tools{line-height:1rem;height:auto;padding:28px;padding-bottom:12px}md-toolbar.md-has-open-menu{position:relative;z-index:100}md-menu-bar{padding:0 20px;display:block;position:relative;z-index:2}md-menu-bar .md-menu{display:inline-block;padding:0;position:relative}md-menu-bar button{font-size:14px;padding:0 10px;margin:0;border:0;background-color:transparent;height:40px}md-menu-bar md-backdrop.md-menu-backdrop{z-index:-2}md-menu-content.md-menu-bar-menu.md-dense{max-height:none;padding:16px 0}md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent{position:relative}md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>md-icon{position:absolute;padding:0;width:24px;top:6px;left:24px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>md-icon{left:auto;right:24px}md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent .md-menu>.md-button,md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>.md-button{padding:0 32px 0 64px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent .md-menu>.md-button,[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>.md-button{padding:0 64px 0 32px}md-menu-content.md-menu-bar-menu.md-dense .md-button{min-height:0;height:32px;display:flex}md-menu-content.md-menu-bar-menu.md-dense .md-button span{flex-grow:1}md-menu-content.md-menu-bar-menu.md-dense .md-button span.md-alt-text{flex-grow:0;align-self:flex-end;margin:0 8px}md-menu-content.md-menu-bar-menu.md-dense md-menu-divider{margin:8px 0}md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button,md-menu-content.md-menu-bar-menu.md-dense md-menu-item>.md-button{text-align:left}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button,[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item>.md-button{text-align:right}md-menu-content.md-menu-bar-menu.md-dense .md-menu{padding:0}md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button{position:relative;margin:0;width:100%;text-transform:none;font-weight:400;border-radius:0;padding-left:16px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button{padding-left:0;padding-right:16px}md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button:after{display:block;content:'\25BC';position:absolute;top:0;speak:none;transform:rotate(270deg) scaleY(.45) scaleX(.9);right:28px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button:after{transform:rotate(90deg) scaleY(.45) scaleX(.9)}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button:after{right:auto;left:28px}.md-nav-bar{border-style:solid;border-width:0 0 1px;height:48px;position:relative}._md-nav-bar-list{outline:0;list-style:none;margin:0;padding:0;box-sizing:border-box;display:flex;flex-direction:row}.md-nav-item:first-of-type{margin-left:8px}.md-button._md-nav-button{line-height:24px;margin:0 4px;padding:12px 16px;transition:background-color .35s cubic-bezier(.35,0,.25,1)}.md-button._md-nav-button:focus{outline:0}.md-button._md-nav-button:hover{background-color:inherit}md-nav-ink-bar{bottom:0;height:2px;left:auto;position:absolute;right:auto;background-color:#000}md-nav-ink-bar._md-left{transition:left 125ms cubic-bezier(.35,0,.25,1),right .25s cubic-bezier(.35,0,.25,1)}md-nav-ink-bar._md-right{transition:left .25s cubic-bezier(.35,0,.25,1),right 125ms cubic-bezier(.35,0,.25,1)}md-nav-extra-content{min-height:48px;padding-right:12px}.md-panel-outer-wrapper{height:100%;left:0;position:absolute;top:0;width:100%}._md-panel-hidden{display:none}._md-panel-fullscreen{border-radius:0;left:0;min-height:100%;min-width:100%;position:fixed;top:0}._md-panel-shown .md-panel{opacity:1;transition:none}.md-panel{opacity:0;position:fixed}.md-panel._md-panel-shown{opacity:1;transition:none}.md-panel._md-panel-animate-enter{opacity:1;transition:all .3s cubic-bezier(0,0,.2,1)}.md-panel._md-panel-animate-leave{opacity:1;transition:all .3s cubic-bezier(.4,0,1,1)}.md-panel._md-panel-animate-fade-out,.md-panel._md-panel-animate-scale-out{opacity:0}.md-panel._md-panel-backdrop{height:100%;position:absolute;width:100%}.md-panel._md-opaque-enter{opacity:.48;transition:opacity .3s cubic-bezier(0,0,.2,1)}.md-panel._md-opaque-leave{transition:opacity .3s cubic-bezier(.4,0,1,1)}@keyframes indeterminate-rotate{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}md-progress-circular{position:relative;display:block}md-progress-circular._md-progress-circular-disabled{visibility:hidden}md-progress-circular.md-mode-indeterminate svg{animation:indeterminate-rotate 2.9s linear infinite}md-progress-circular svg{position:absolute;overflow:visible;top:0;left:0}md-progress-linear{display:block;position:relative;width:100%;height:5px;padding-top:0!important;margin-bottom:0!important}md-progress-linear._md-progress-linear-disabled{visibility:hidden}md-progress-linear .md-container{display:block;position:relative;overflow:hidden;width:100%;height:5px;transform:translate(0,0) scale(1,1)}md-progress-linear .md-container .md-bar{position:absolute;left:0;top:0;bottom:0;width:100%;height:5px}md-progress-linear .md-container .md-dashed:before{content:"";display:none;position:absolute;margin-top:0;height:5px;width:100%;background-color:transparent;background-size:10px 10px!important;background-position:0 -23px}md-progress-linear .md-container .md-bar1,md-progress-linear .md-container .md-bar2{transition:transform .2s linear}md-progress-linear .md-container.md-mode-query .md-bar1{display:none}md-progress-linear .md-container.md-mode-query .md-bar2{transition:all .2s linear;animation:query .8s infinite cubic-bezier(.39,.575,.565,1)}md-progress-linear .md-container.md-mode-determinate .md-bar1{display:none}md-progress-linear .md-container.md-mode-indeterminate .md-bar1{animation:md-progress-linear-indeterminate-scale-1 4s infinite,md-progress-linear-indeterminate-1 4s infinite}md-progress-linear .md-container.md-mode-indeterminate .md-bar2{animation:md-progress-linear-indeterminate-scale-2 4s infinite,md-progress-linear-indeterminate-2 4s infinite}md-progress-linear .md-container.ng-hide ._md-progress-linear-disabled md-progress-linear .md-container{animation:none}md-progress-linear .md-container.ng-hide ._md-progress-linear-disabled md-progress-linear .md-container .md-bar1{animation-name:none}md-progress-linear .md-container.ng-hide ._md-progress-linear-disabled md-progress-linear .md-container .md-bar2{animation-name:none}md-progress-linear .md-container.md-mode-buffer{background-color:transparent!important;transition:all .2s linear}md-progress-linear .md-container.md-mode-buffer .md-dashed:before{display:block;animation:buffer 3s infinite linear}@keyframes query{0%{opacity:1;transform:translateX(35%) scale(.3,1)}100%{opacity:0;transform:translateX(-50%) scale(0,1)}}@keyframes buffer{0%{opacity:1;background-position:0 -23px}50%{opacity:0}100%{opacity:1;background-position:-200px -23px}}@keyframes md-progress-linear-indeterminate-scale-1{0%{transform:scaleX(.1);animation-timing-function:linear}36.6%{transform:scaleX(.1);animation-timing-function:cubic-bezier(.334731432,.124819821,.785843996,1)}69.15%{transform:scaleX(.83);animation-timing-function:cubic-bezier(.225732004,0,.233648906,1.3709798)}100%{transform:scaleX(.1)}}@keyframes md-progress-linear-indeterminate-1{0%{left:-105.166666667%;animation-timing-function:linear}20%{left:-105.166666667%;animation-timing-function:cubic-bezier(.5,0,.701732,.495818703)}69.15%{left:21.5%;animation-timing-function:cubic-bezier(.302435,.38135197,.55,.956352125)}100%{left:95.4444444444%}}@keyframes md-progress-linear-indeterminate-scale-2{0%{transform:scaleX(.1);animation-timing-function:cubic-bezier(.205028172,.057050836,.57660995,.453970841)}19.15%{transform:scaleX(.57);animation-timing-function:cubic-bezier(.152312994,.196431957,.648373778,1.00431535)}44.15%{transform:scaleX(.91);animation-timing-function:cubic-bezier(.25775882,-.003163357,.211761916,1.38178961)}100%{transform:scaleX(.1)}}@keyframes md-progress-linear-indeterminate-2{0%{left:-54.8888888889%;animation-timing-function:cubic-bezier(.15,0,.5150584,.409684966)}25%{left:-17.25%;animation-timing-function:cubic-bezier(.3103299,.284057684,.8,.733718979)}48.35%{left:29.5%;animation-timing-function:cubic-bezier(.4,.627034903,.6,.902025796)}100%{left:117.388888889%}}md-radio-button{box-sizing:border-box;display:block;margin-bottom:16px;white-space:nowrap;cursor:pointer;position:relative}md-radio-button[disabled]{cursor:default}md-radio-button[disabled] .md-container{cursor:default}md-radio-button .md-container{position:absolute;top:50%;transform:translateY(-50%);box-sizing:border-box;display:inline-block;width:20px;height:20px;cursor:pointer;left:0;right:auto}[dir=rtl] md-radio-button .md-container{left:auto}[dir=rtl] md-radio-button .md-container{right:0}md-radio-button .md-container .md-ripple-container{position:absolute;display:block;width:auto;height:auto;left:-15px;top:-15px;right:-15px;bottom:-15px}md-radio-button .md-container:before{box-sizing:border-box;background-color:transparent;border-radius:50%;content:'';position:absolute;display:block;height:auto;left:0;top:0;right:0;bottom:0;transition:all .5s;width:auto}md-radio-button.md-align-top-left>div.md-container{top:12px}md-radio-button .md-off{box-sizing:border-box;position:absolute;top:0;left:0;width:20px;height:20px;border-style:solid;border-width:2px;border-radius:50%;transition:border-color ease .28s}md-radio-button .md-on{box-sizing:border-box;position:absolute;top:0;left:0;width:20px;height:20px;border-radius:50%;transition:transform ease .28s;transform:scale(0)}md-radio-button.md-checked .md-on{transform:scale(.5)}md-radio-button .md-label{box-sizing:border-box;position:relative;display:inline-block;margin-left:30px;margin-right:0;vertical-align:middle;white-space:normal;pointer-events:none;width:auto}[dir=rtl] md-radio-button .md-label{margin-left:0}[dir=rtl] md-radio-button .md-label{margin-right:30px}md-radio-group.layout-column md-radio-button,md-radio-group.layout-gt-lg-column md-radio-button,md-radio-group.layout-gt-md-column md-radio-button,md-radio-group.layout-gt-sm-column md-radio-button,md-radio-group.layout-gt-xs-column md-radio-button,md-radio-group.layout-lg-column md-radio-button,md-radio-group.layout-md-column md-radio-button,md-radio-group.layout-sm-column md-radio-button,md-radio-group.layout-xl-column md-radio-button,md-radio-group.layout-xs-column md-radio-button{margin-bottom:16px}md-radio-group.layout-gt-lg-row md-radio-button,md-radio-group.layout-gt-md-row md-radio-button,md-radio-group.layout-gt-sm-row md-radio-button,md-radio-group.layout-gt-xs-row md-radio-button,md-radio-group.layout-lg-row md-radio-button,md-radio-group.layout-md-row md-radio-button,md-radio-group.layout-row md-radio-button,md-radio-group.layout-sm-row md-radio-button,md-radio-group.layout-xl-row md-radio-button,md-radio-group.layout-xs-row md-radio-button{margin-top:0;margin-bottom:0;margin-left:0;margin-right:16px}[dir=rtl] md-radio-group.layout-gt-lg-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-md-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-sm-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-xs-row md-radio-button,[dir=rtl] md-radio-group.layout-lg-row md-radio-button,[dir=rtl] md-radio-group.layout-md-row md-radio-button,[dir=rtl] md-radio-group.layout-row md-radio-button,[dir=rtl] md-radio-group.layout-sm-row md-radio-button,[dir=rtl] md-radio-group.layout-xl-row md-radio-button,[dir=rtl] md-radio-group.layout-xs-row md-radio-button{margin-left:16px}[dir=rtl] md-radio-group.layout-gt-lg-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-md-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-sm-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-xs-row md-radio-button,[dir=rtl] md-radio-group.layout-lg-row md-radio-button,[dir=rtl] md-radio-group.layout-md-row md-radio-button,[dir=rtl] md-radio-group.layout-row md-radio-button,[dir=rtl] md-radio-group.layout-sm-row md-radio-button,[dir=rtl] md-radio-group.layout-xl-row md-radio-button,[dir=rtl] md-radio-group.layout-xs-row md-radio-button{margin-right:0}md-radio-group.layout-gt-lg-row md-radio-button:last-of-type,md-radio-group.layout-gt-md-row md-radio-button:last-of-type,md-radio-group.layout-gt-sm-row md-radio-button:last-of-type,md-radio-group.layout-gt-xs-row md-radio-button:last-of-type,md-radio-group.layout-lg-row md-radio-button:last-of-type,md-radio-group.layout-md-row md-radio-button:last-of-type,md-radio-group.layout-row md-radio-button:last-of-type,md-radio-group.layout-sm-row md-radio-button:last-of-type,md-radio-group.layout-xl-row md-radio-button:last-of-type,md-radio-group.layout-xs-row md-radio-button:last-of-type{margin-left:0;margin-right:0}md-radio-group:focus{outline:0}md-radio-group.md-focused .md-checked .md-container:before{left:-8px;top:-8px;right:-8px;bottom:-8px}md-radio-group[disabled] md-radio-button{cursor:default}md-radio-group[disabled] md-radio-button .md-container{cursor:default}.md-inline-form md-radio-group{margin:18px 0 19px}.md-inline-form md-radio-group md-radio-button{display:inline-block;height:30px;padding:2px;box-sizing:border-box;margin-top:0;margin-bottom:0}@media screen and (-ms-high-contrast:active){md-radio-button.md-default-theme .md-on{background-color:#fff}}md-input-container:not([md-no-float]) .md-select-placeholder span:first-child{transition:transform .4s cubic-bezier(.25,.8,.25,1);transform-origin:left top}[dir=rtl] md-input-container:not([md-no-float]) .md-select-placeholder span:first-child{transform-origin:right top}md-input-container.md-input-focused:not([md-no-float]) .md-select-placeholder span:first-child{transform:translateY(-22px) translateX(-2px) scale(.75)}.md-select-menu-container{position:fixed;left:0;top:0;z-index:90;opacity:0;display:none;transform:translateY(-1px)}.md-select-menu-container:not(.md-clickable){pointer-events:none}.md-select-menu-container md-progress-circular{display:table;margin:24px auto!important}.md-select-menu-container.md-active{display:block;opacity:1}.md-select-menu-container.md-active md-select-menu{transition:all .4s cubic-bezier(.25,.8,.25,1);transition-duration:150ms}.md-select-menu-container.md-active md-select-menu>*{opacity:1;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:150ms;transition-delay:.1s}.md-select-menu-container.md-leave{opacity:0;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:250ms}md-input-container>md-select{margin:0;order:2}md-input-container:not(.md-input-has-value) md-select.ng-required:not(.md-no-asterisk) .md-select-value span:first-child:after,md-input-container:not(.md-input-has-value) md-select[required]:not(.md-no-asterisk) .md-select-value span:first-child:after{content:' *';font-size:13px;vertical-align:top}md-input-container.md-input-invalid md-select .md-select-value{border-bottom-style:solid;padding-bottom:1px}md-select{display:flex;margin:20px 0 26px 0}md-select.ng-required.ng-invalid:not(.md-no-asterisk) .md-select-value span:first-child:after,md-select[required].ng-invalid:not(.md-no-asterisk) .md-select-value span:first-child:after{content:' *';font-size:13px;vertical-align:top}md-select[disabled] .md-select-value{background-position:0 bottom;background-size:4px 1px;background-repeat:repeat-x;margin-bottom:-1px}md-select:focus{outline:0}md-select[disabled]:hover{cursor:default}md-select:not([disabled]):hover{cursor:pointer}md-select:not([disabled]).ng-invalid.ng-touched .md-select-value{border-bottom-style:solid;padding-bottom:1px}md-select:not([disabled]):focus .md-select-value{border-bottom-width:2px;border-bottom-style:solid;padding-bottom:0}md-select:not([disabled]):focus.ng-invalid.ng-touched .md-select-value{padding-bottom:0}md-input-container.md-input-has-value .md-select-value>span:not(.md-select-icon){transform:translate3d(0,1px,0)}.md-select-value{display:flex;align-items:center;padding:2px 2px 1px;border-bottom-width:1px;border-bottom-style:solid;background-color:transparent;position:relative;box-sizing:content-box;min-width:64px;min-height:26px;flex-grow:1}.md-select-value>span:not(.md-select-icon){max-width:100%;flex:1 1 auto;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.md-select-value>span:not(.md-select-icon) .md-text{display:inline}.md-select-value .md-select-icon{display:block;align-items:flex-end;text-align:end;width:24px;margin:0 4px;transform:translate3d(0,-2px,0);font-size:1.2rem}.md-select-value .md-select-icon:after{display:block;content:'\25BC';position:relative;top:2px;speak:none;font-size:13px;transform:scaleY(.5) scaleX(1)}.md-select-value.md-select-placeholder{display:flex;order:1;pointer-events:none;-webkit-font-smoothing:antialiased;padding-left:2px;z-index:1}md-select-menu{display:flex;flex-direction:column;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);max-height:256px;min-height:48px;overflow-y:hidden;transform-origin:left top;transform:scale(1)}md-select-menu.md-reverse{flex-direction:column-reverse}md-select-menu:not(.md-overflow) md-content{padding-top:8px;padding-bottom:8px}[dir=rtl] md-select-menu{transform-origin:right top}md-select-menu md-content{min-width:136px;min-height:48px;max-height:256px;overflow-y:auto}md-select-menu>*{opacity:0}md-option{cursor:pointer;position:relative;display:flex;align-items:center;width:auto;transition:background .15s linear;padding:0 16px 0 16px;height:48px}md-option[disabled]{cursor:default}md-option:focus{outline:0}md-option .md-text{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}md-optgroup{display:block}md-optgroup label{display:block;font-size:14px;text-transform:uppercase;padding:16px;font-weight:500}md-optgroup md-option{padding-left:32px;padding-right:32px}@media screen and (-ms-high-contrast:active){.md-select-backdrop{background-color:transparent}md-select-menu{border:1px solid #fff}}md-select-menu[multiple] md-option.md-checkbox-enabled{padding-left:40px;padding-right:16px}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled{padding-left:16px}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled{padding-right:40px}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{position:absolute;top:50%;transform:translateY(-50%);box-sizing:border-box;display:inline-block;width:20px;height:20px;left:0;right:auto}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{left:auto}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{right:0}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container:before{box-sizing:border-box;background-color:transparent;border-radius:50%;content:'';position:absolute;display:block;height:auto;left:0;top:0;right:0;bottom:0;transition:all .5s;width:auto}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container:after{box-sizing:border-box;content:'';position:absolute;top:-10px;right:-10px;bottom:-10px;left:-10px}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container .md-ripple-container{position:absolute;display:block;width:auto;height:auto;left:-15px;top:-15px;right:-15px;bottom:-15px}md-select-menu[multiple] md-option.md-checkbox-enabled .md-icon{box-sizing:border-box;transition:240ms;position:absolute;top:0;left:0;width:20px;height:20px;border-width:2px;border-style:solid;border-radius:2px}md-select-menu[multiple] md-option.md-checkbox-enabled[selected] .md-icon{border-color:transparent}md-select-menu[multiple] md-option.md-checkbox-enabled[selected] .md-icon:after{box-sizing:border-box;transform:rotate(45deg);position:absolute;left:4.6666666667px;top:.2222222222px;display:table;width:6.6666666667px;height:13.3333333333px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:''}md-select-menu[multiple] md-option.md-checkbox-enabled[disabled]{cursor:default}md-select-menu[multiple] md-option.md-checkbox-enabled.md-indeterminate .md-icon:after{box-sizing:border-box;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:table;width:12px;height:2px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:''}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{margin-left:10.6666666667px;margin-right:auto}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{margin-left:auto}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{margin-right:10.6666666667px}md-sidenav{box-sizing:border-box;position:absolute;flex-direction:column;z-index:60;width:320px;max-width:320px;bottom:0;overflow:auto;-webkit-overflow-scrolling:touch}md-sidenav ul{list-style:none}md-sidenav.md-closed{display:none}md-sidenav.md-closed-add,md-sidenav.md-closed-remove{display:flex;transition:.2s ease-in all}md-sidenav.md-closed-add.md-closed-add-active,md-sidenav.md-closed-remove.md-closed-remove-active{transition:all .4s cubic-bezier(.25,.8,.25,1)}md-sidenav.md-locked-open-add,md-sidenav.md-locked-open-remove{position:static;display:flex;transform:translate3d(0,0,0)}md-sidenav.md-locked-open,md-sidenav.md-locked-open-remove.md-closed,md-sidenav.md-locked-open.md-closed,md-sidenav.md-locked-open.md-closed.md-sidenav-left,md-sidenav.md-locked-open.md-closed.md-sidenav-right{position:static;display:flex;transform:translate3d(0,0,0)}md-sidenav.md-locked-open-remove-active{transition:width .3s cubic-bezier(.55,0,.55,.2),min-width .3s cubic-bezier(.55,0,.55,.2);width:0!important;min-width:0!important}md-sidenav.md-closed.md-locked-open-add{width:0!important;min-width:0!important;transform:translate3d(0,0,0)}md-sidenav.md-closed.md-locked-open-add-active{transition:width .3s cubic-bezier(.55,0,.55,.2),min-width .3s cubic-bezier(.55,0,.55,.2);width:320px;min-width:320px;transform:translate3d(0,0,0)}.md-sidenav-backdrop.md-locked-open{display:none}.md-sidenav-left,md-sidenav{left:0;top:0;transform:translate3d(0,0,0)}.md-sidenav-left.md-closed,md-sidenav.md-closed{transform:translate3d(-100%,0,0)}.md-sidenav-right{left:100%;top:0;transform:translate(-100%,0)}.md-sidenav-right.md-closed{transform:translate(0,0)}@media (min-width:600px){md-sidenav{max-width:400px}}@media (max-width:456px){md-sidenav{width:calc(100% - 56px);min-width:calc(100% - 56px);max-width:calc(100% - 56px)}}@media screen and (-ms-high-contrast:active){.md-sidenav-left,md-sidenav{border-right:1px solid #fff}.md-sidenav-right{border-left:1px solid #fff}}@keyframes sliderFocusThumb{0%{transform:scale(.7)}30%{transform:scale(1)}100%{transform:scale(.7)}}@keyframes sliderDiscreteFocusThumb{0%{transform:scale(.7)}50%{transform:scale(.8)}100%{transform:scale(0)}}@keyframes sliderDiscreteFocusRing{0%{transform:scale(.7);opacity:0}50%{transform:scale(1);opacity:1}100%{transform:scale(0)}}md-slider{height:48px;min-width:128px;position:relative;margin-left:4px;margin-right:4px;padding:0;display:block;flex-direction:row}md-slider *,md-slider :after{box-sizing:border-box}md-slider .md-slider-wrapper{outline:0;width:100%;height:100%}md-slider .md-slider-content{position:relative}md-slider .md-track-container{width:100%;position:absolute;top:23px;height:2px}md-slider .md-track{position:absolute;left:0;right:0;height:100%}md-slider .md-track-fill{transition:all .4s cubic-bezier(.25,.8,.25,1);transition-property:width,height}md-slider .md-track-ticks{position:absolute;left:0;right:0;height:100%}md-slider .md-track-ticks canvas{width:100%;height:100%}md-slider .md-thumb-container{position:absolute;left:0;top:50%;transform:translate3d(-50%,-50%,0);transition:all .4s cubic-bezier(.25,.8,.25,1);transition-property:left,right,bottom}[dir=rtl] md-slider .md-thumb-container{left:auto;right:0}md-slider .md-thumb{z-index:1;position:absolute;left:-10px;top:14px;width:20px;height:20px;border-radius:20px;transform:scale(.7);transition:all .4s cubic-bezier(.25,.8,.25,1)}[dir=rtl] md-slider .md-thumb{left:auto;right:-10px}md-slider .md-thumb:after{content:'';position:absolute;width:20px;height:20px;border-radius:20px;border-width:3px;border-style:solid;transition:inherit}md-slider .md-sign{display:flex;align-items:center;justify-content:center;position:absolute;left:-14px;top:-17px;width:28px;height:28px;border-radius:28px;transform:scale(.4) translate3d(0,67.5px,0);transition:all .3s cubic-bezier(.35,0,.25,1)}md-slider .md-sign:after{position:absolute;content:'';left:0;border-radius:16px;top:19px;border-left:14px solid transparent;border-right:14px solid transparent;border-top-width:16px;border-top-style:solid;opacity:0;transform:translate3d(0,-8px,0);transition:all .2s cubic-bezier(.35,0,.25,1)}[dir=rtl] md-slider .md-sign:after{left:auto;right:0}md-slider .md-sign .md-thumb-text{z-index:1;font-size:12px;font-weight:700}md-slider .md-focus-ring{position:absolute;left:-17px;top:7px;width:34px;height:34px;border-radius:34px;transform:scale(.7);opacity:0;transition:all .35s cubic-bezier(.35,0,.25,1)}[dir=rtl] md-slider .md-focus-ring{left:auto;right:-17px}md-slider .md-disabled-thumb{position:absolute;left:-14px;top:10px;width:28px;height:28px;border-radius:28px;transform:scale(.5);border-width:4px;border-style:solid;display:none}[dir=rtl] md-slider .md-disabled-thumb{left:auto;right:-14px}md-slider.md-min .md-sign{opacity:0}md-slider:focus{outline:0}md-slider.md-dragging .md-thumb-container,md-slider.md-dragging .md-track-fill{transition:none}md-slider:not([md-discrete]) .md-sign,md-slider:not([md-discrete]) .md-track-ticks{display:none}md-slider:not([md-discrete]):not([disabled]) .md-slider-wrapper .md-thumb:hover{transform:scale(.8)}md-slider:not([md-discrete]):not([disabled]) .md-slider-wrapper.md-focused .md-focus-ring{transform:scale(1);opacity:1}md-slider:not([md-discrete]):not([disabled]) .md-slider-wrapper.md-focused .md-thumb{animation:sliderFocusThumb .7s cubic-bezier(.35,0,.25,1)}md-slider:not([md-discrete]):not([disabled]).md-active .md-slider-wrapper .md-thumb{transform:scale(1)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-focus-ring{transform:scale(0);animation:sliderDiscreteFocusRing .5s cubic-bezier(.35,0,.25,1)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-thumb{animation:sliderDiscreteFocusThumb .5s cubic-bezier(.35,0,.25,1)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-thumb,md-slider[md-discrete]:not([disabled]).md-active .md-thumb{transform:scale(0)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-sign,md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-sign:after,md-slider[md-discrete]:not([disabled]).md-active .md-sign,md-slider[md-discrete]:not([disabled]).md-active .md-sign:after{opacity:1;transform:translate3d(0,0,0) scale(1)}md-slider[md-discrete][disabled][readonly] .md-thumb{transform:scale(0)}md-slider[md-discrete][disabled][readonly] .md-sign,md-slider[md-discrete][disabled][readonly] .md-sign:after{opacity:1;transform:translate3d(0,0,0) scale(1)}md-slider[disabled] .md-track-fill{display:none}md-slider[disabled] .md-track-ticks{opacity:0}md-slider[disabled]:not([readonly]) .md-sign{opacity:0}md-slider[disabled] .md-thumb{transform:scale(.5)}md-slider[disabled] .md-disabled-thumb{display:block}md-slider[md-vertical]{flex-direction:column;min-height:128px;min-width:0}md-slider[md-vertical] .md-slider-wrapper{flex:1;padding-top:12px;padding-bottom:12px;width:48px;align-self:center;display:flex;justify-content:center}md-slider[md-vertical] .md-track-container{height:100%;width:2px;top:0;left:calc(50% - (2px / 2))}md-slider[md-vertical] .md-thumb-container{top:auto;margin-bottom:23px;left:calc(50% - 1px);bottom:0}md-slider[md-vertical] .md-thumb-container .md-thumb:after{left:1px}md-slider[md-vertical] .md-thumb-container .md-focus-ring{left:-16px}md-slider[md-vertical] .md-track-fill{bottom:0}md-slider[md-vertical][md-discrete] .md-sign{left:-40px;top:9.5px;transform:scale(.4) translate3d(67.5px,0,0)}md-slider[md-vertical][md-discrete] .md-sign:after{top:9.5px;left:19px;border-top:14px solid transparent;border-right:0;border-bottom:14px solid transparent;border-left-width:16px;border-left-style:solid;opacity:0;transform:translate3d(0,-8px,0);transition:all .2s ease-in-out}md-slider[md-vertical][md-discrete] .md-sign .md-thumb-text{z-index:1;font-size:12px;font-weight:700}md-slider[md-vertical][md-discrete] .md-focused .md-sign:after,md-slider[md-vertical][md-discrete].md-active .md-sign:after,md-slider[md-vertical][md-discrete][disabled][readonly] .md-sign:after{top:0}md-slider[md-vertical][disabled][readonly] .md-thumb{transform:scale(0)}md-slider[md-vertical][disabled][readonly] .md-sign,md-slider[md-vertical][disabled][readonly] .md-sign:after{opacity:1;transform:translate3d(0,0,0) scale(1)}md-slider[md-invert]:not([md-vertical]) .md-track-fill{left:auto;right:0}[dir=rtl] md-slider[md-invert]:not([md-vertical]) .md-track-fill{left:0}[dir=rtl] md-slider[md-invert]:not([md-vertical]) .md-track-fill{right:auto}md-slider[md-invert][md-vertical] .md-track-fill{bottom:auto;top:0}md-slider-container{display:flex;align-items:center;flex-direction:row}md-slider-container>:first-child:not(md-slider),md-slider-container>:last-child:not(md-slider){min-width:25px;max-width:42px;height:25px;transition:all .4s cubic-bezier(.25,.8,.25,1);transition-property:color,max-width}md-slider-container>:first-child:not(md-slider){margin-right:16px}[dir=rtl] md-slider-container>:first-child:not(md-slider){margin-right:auto;margin-left:16px}md-slider-container>:last-child:not(md-slider){margin-left:16px}[dir=rtl] md-slider-container>:last-child:not(md-slider){margin-left:auto;margin-right:16px}md-slider-container[md-vertical]{flex-direction:column}md-slider-container[md-vertical]>:first-child:not(md-slider),md-slider-container[md-vertical]>:last-child:not(md-slider){margin-right:0;margin-left:0;text-align:center}md-slider-container md-input-container input[type=number]{text-align:center;padding-left:15px;height:50px;margin-top:-25px}[dir=rtl] md-slider-container md-input-container input[type=number]{padding-left:0;padding-right:15px}@media screen and (-ms-high-contrast:active){md-slider.md-default-theme .md-track{border-bottom:1px solid #fff}}.md-sticky-clone{z-index:2;top:0;left:0;right:0;position:absolute!important;transform:translate3d(-9999px,-9999px,0)}.md-sticky-clone[sticky-state=active]{transform:translate3d(0,0,0)}.md-sticky-clone[sticky-state=active]:not(.md-sticky-no-effect) .md-subheader-inner{animation:subheaderStickyHoverIn .3s ease-out both}@keyframes subheaderStickyHoverIn{0%{box-shadow:0 0 0 0 transparent}100%{box-shadow:0 2px 4px 0 rgba(0,0,0,.16)}}@keyframes subheaderStickyHoverOut{0%{box-shadow:0 2px 4px 0 rgba(0,0,0,.16)}100%{box-shadow:0 0 0 0 transparent}}.md-subheader-wrapper:not(.md-sticky-no-effect){transition:.2s ease-out margin}.md-subheader-wrapper:not(.md-sticky-no-effect) .md-subheader{margin:0}.md-subheader-wrapper:not(.md-sticky-no-effect).md-sticky-clone{z-index:2}.md-subheader-wrapper:not(.md-sticky-no-effect)[sticky-state=active]{margin-top:-2px}.md-subheader-wrapper:not(.md-sticky-no-effect):not(.md-sticky-clone)[sticky-prev-state=active] .md-subheader-inner:after{animation:subheaderStickyHoverOut .3s ease-out both}.md-subheader{display:block;font-size:14px;font-weight:500;line-height:1em;margin:0;position:relative}.md-subheader .md-subheader-inner{display:block;padding:16px}.md-subheader .md-subheader-content{display:block;z-index:1;position:relative}.md-inline-form md-switch{margin-top:18px;margin-bottom:19px}md-switch{margin:16px 0;white-space:nowrap;cursor:pointer;outline:0;user-select:none;height:30px;line-height:28px;align-items:center;display:flex;margin-left:inherit;margin-right:16px}[dir=rtl] md-switch{margin-left:16px}[dir=rtl] md-switch{margin-right:inherit}md-switch:last-of-type{margin-left:inherit;margin-right:0}[dir=rtl] md-switch:last-of-type{margin-left:0}[dir=rtl] md-switch:last-of-type{margin-right:inherit}md-switch[disabled]{cursor:default}md-switch[disabled] .md-container{cursor:default}md-switch .md-container{cursor:grab;width:36px;height:24px;position:relative;user-select:none;margin-right:8px;float:left}[dir=rtl] md-switch .md-container{margin-right:auto;margin-left:8px}md-switch:not([disabled]) .md-dragging,md-switch:not([disabled]).md-dragging .md-container{cursor:grabbing}md-switch.md-focused:not([disabled]) .md-thumb:before{left:-8px;top:-8px;right:-8px;bottom:-8px}md-switch.md-focused:not([disabled]):not(.md-checked) .md-thumb:before{background-color:rgba(0,0,0,.12)}md-switch .md-label{border-color:transparent;border-width:0;float:left}md-switch .md-bar{left:1px;width:34px;top:5px;height:14px;border-radius:8px;position:absolute}md-switch .md-thumb-container{top:2px;left:0;width:16px;position:absolute;transform:translate3d(0,0,0);z-index:1}md-switch.md-checked .md-thumb-container{transform:translate3d(100%,0,0)}md-switch .md-thumb{position:absolute;margin:0;left:0;top:0;outline:0;height:20px;width:20px;border-radius:50%;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}md-switch .md-thumb:before{background-color:transparent;border-radius:50%;content:'';position:absolute;display:block;height:auto;left:0;top:0;right:0;bottom:0;transition:all .5s;width:auto}md-switch .md-thumb .md-ripple-container{position:absolute;display:block;width:auto;height:auto;left:-20px;top:-20px;right:-20px;bottom:-20px}md-switch:not(.md-dragging) .md-bar,md-switch:not(.md-dragging) .md-thumb,md-switch:not(.md-dragging) .md-thumb-container{transition:all 80ms linear;transition-property:transform,background-color}md-switch:not(.md-dragging) .md-bar,md-switch:not(.md-dragging) .md-thumb{transition-delay:50ms}@media screen and (-ms-high-contrast:active){md-switch.md-default-theme .md-bar{background-color:#666}md-switch.md-default-theme.md-checked .md-bar{background-color:#9e9e9e}md-switch.md-default-theme .md-thumb{background-color:#fff}}@keyframes md-tab-content-hide{0%{opacity:1}50%{opacity:1}100%{opacity:0}}md-tab-data{position:absolute;top:0;left:0;right:0;bottom:0;z-index:-1;opacity:0}md-tabs{display:block;margin:0;border-radius:2px;overflow:hidden;position:relative;flex-shrink:0}md-tabs:not(.md-no-tab-content):not(.md-dynamic-height){min-height:248px}md-tabs[md-align-tabs=bottom]{padding-bottom:48px}md-tabs[md-align-tabs=bottom] md-tabs-wrapper{position:absolute;bottom:0;left:0;right:0;height:48px;z-index:2}md-tabs[md-align-tabs=bottom] md-tabs-content-wrapper{top:0;bottom:48px}md-tabs.md-dynamic-height md-tabs-content-wrapper{min-height:0;position:relative;top:auto;left:auto;right:auto;bottom:auto;overflow:visible}md-tabs.md-dynamic-height md-tab-content.md-active{position:relative}md-tabs[md-border-bottom] md-tabs-wrapper{border-width:0 0 1px;border-style:solid}md-tabs[md-border-bottom]:not(.md-dynamic-height) md-tabs-content-wrapper{top:49px}md-tabs-wrapper{display:block;position:relative;transform:translate3d(0,0,0)}md-tabs-wrapper md-next-button,md-tabs-wrapper md-prev-button{height:100%;width:32px;position:absolute;top:50%;transform:translateY(-50%);line-height:1em;z-index:2;cursor:pointer;font-size:16px;background:transparent no-repeat center center;transition:all .5s cubic-bezier(.35,0,.25,1)}md-tabs-wrapper md-next-button:focus,md-tabs-wrapper md-prev-button:focus{outline:0}md-tabs-wrapper md-next-button.md-disabled,md-tabs-wrapper md-prev-button.md-disabled{opacity:.25;cursor:default}md-tabs-wrapper md-next-button.ng-leave,md-tabs-wrapper md-prev-button.ng-leave{transition:none}md-tabs-wrapper md-next-button md-icon,md-tabs-wrapper md-prev-button md-icon{position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0)}md-tabs-wrapper md-prev-button{left:0;background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE3LjEuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPiA8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPiA8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSIyNHB4IiBoZWlnaHQ9IjI0cHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMjQgMjQiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0iSGVhZGVyIj4gPGc+IDxyZWN0IHg9Ii02MTgiIHk9Ii0xMjA4IiBmaWxsPSJub25lIiB3aWR0aD0iMTQwMCIgaGVpZ2h0PSIzNjAwIi8+IDwvZz4gPC9nPiA8ZyBpZD0iTGFiZWwiPiA8L2c+IDxnIGlkPSJJY29uIj4gPGc+IDxwb2x5Z29uIHBvaW50cz0iMTUuNCw3LjQgMTQsNiA4LDEyIDE0LDE4IDE1LjQsMTYuNiAxMC44LDEyIAkJIiBzdHlsZT0iZmlsbDp3aGl0ZTsiLz4gPHJlY3QgZmlsbD0ibm9uZSIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ii8+IDwvZz4gPC9nPiA8ZyBpZD0iR3JpZCIgZGlzcGxheT0ibm9uZSI+IDxnIGRpc3BsYXk9ImlubGluZSI+IDwvZz4gPC9nPiA8L3N2Zz4NCg==)}[dir=rtl] md-tabs-wrapper md-prev-button{left:auto;right:0}md-tabs-wrapper md-next-button{right:0;background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE3LjEuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPiA8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPiA8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSIyNHB4IiBoZWlnaHQ9IjI0cHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMjQgMjQiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0iSGVhZGVyIj4gPGc+IDxyZWN0IHg9Ii02MTgiIHk9Ii0xMzM2IiBmaWxsPSJub25lIiB3aWR0aD0iMTQwMCIgaGVpZ2h0PSIzNjAwIi8+IDwvZz4gPC9nPiA8ZyBpZD0iTGFiZWwiPiA8L2c+IDxnIGlkPSJJY29uIj4gPGc+IDxwb2x5Z29uIHBvaW50cz0iMTAsNiA4LjYsNy40IDEzLjIsMTIgOC42LDE2LjYgMTAsMTggMTYsMTIgCQkiIHN0eWxlPSJmaWxsOndoaXRlOyIvPiA8cmVjdCBmaWxsPSJub25lIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiLz4gPC9nPiA8L2c+IDxnIGlkPSJHcmlkIiBkaXNwbGF5PSJub25lIj4gPGcgZGlzcGxheT0iaW5saW5lIj4gPC9nPiA8L2c+IDwvc3ZnPg0K)}[dir=rtl] md-tabs-wrapper md-next-button{right:auto;left:0}md-tabs-wrapper md-next-button md-icon{transform:translate3d(-50%,-50%,0) rotate(180deg)}md-tabs-wrapper.md-stretch-tabs md-pagination-wrapper{width:100%;display:flex;flex-direction:row}md-tabs-wrapper.md-stretch-tabs md-pagination-wrapper md-tab-item{flex-grow:1}md-tabs-canvas{position:relative;overflow:hidden;display:block;height:48px}md-tabs-canvas:after{content:'';display:table;clear:both}md-tabs-canvas .md-dummy-wrapper{position:absolute;top:0;left:0}[dir=rtl] md-tabs-canvas .md-dummy-wrapper{left:auto;right:0}md-tabs-canvas.md-paginated{margin:0 32px}md-tabs-canvas.md-center-tabs{display:flex;flex-direction:column;text-align:center}md-tabs-canvas.md-center-tabs .md-tab{float:none;display:inline-block}md-pagination-wrapper{height:48px;display:block;transition:transform .5s cubic-bezier(.35,0,.25,1);position:absolute;width:999999px;left:0;transform:translate3d(0,0,0)}md-pagination-wrapper:after{content:'';display:table;clear:both}[dir=rtl] md-pagination-wrapper{left:auto;right:0}md-pagination-wrapper.md-center-tabs{position:relative;width:auto;margin:0 auto}md-tabs-content-wrapper{display:block;position:absolute;top:48px;left:0;right:0;bottom:0;overflow:hidden}md-tab-content{display:block;position:absolute;top:0;left:0;right:0;bottom:0;transition:transform .5s cubic-bezier(.35,0,.25,1);overflow:auto;transform:translate3d(0,0,0)}md-tab-content.md-no-scroll{bottom:auto;overflow:hidden}md-tab-content.md-no-transition,md-tab-content.ng-leave{transition:none}md-tab-content.md-left:not(.md-active){transform:translateX(-100%);animation:1s md-tab-content-hide;opacity:0}[dir=rtl] md-tab-content.md-left:not(.md-active){transform:translateX(100%)}md-tab-content.md-left:not(.md-active) *{transition:visibility 0s linear;transition-delay:.5s;visibility:hidden}md-tab-content.md-right:not(.md-active){transform:translateX(100%);animation:1s md-tab-content-hide;opacity:0}[dir=rtl] md-tab-content.md-right:not(.md-active){transform:translateX(-100%)}md-tab-content.md-right:not(.md-active) *{transition:visibility 0s linear;transition-delay:.5s;visibility:hidden}md-tab-content>div.ng-leave{animation:1s md-tab-content-hide}md-ink-bar{position:absolute;left:auto;right:auto;bottom:0;height:2px}md-ink-bar.md-left{transition:left 125ms cubic-bezier(.35,0,.25,1),right .25s cubic-bezier(.35,0,.25,1)}md-ink-bar.md-right{transition:left .25s cubic-bezier(.35,0,.25,1),right 125ms cubic-bezier(.35,0,.25,1)}md-tab{position:absolute;z-index:-1;left:-9999px}.md-tab{font-size:14px;text-align:center;line-height:24px;padding:12px 24px;transition:background-color .35s cubic-bezier(.35,0,.25,1);cursor:pointer;white-space:nowrap;position:relative;text-transform:uppercase;float:left;font-weight:500;box-sizing:border-box;overflow:hidden;text-overflow:ellipsis}[dir=rtl] .md-tab{float:right}.md-tab.md-focused{box-shadow:none;outline:0}.md-tab.md-active{cursor:default}.md-tab.md-disabled{pointer-events:none;touch-action:pan-y;user-select:none;-webkit-user-drag:none;opacity:.5;cursor:default}.md-tab.ng-leave{transition:none}md-toolbar+md-tabs{border-top-left-radius:0;border-top-right-radius:0}.md-toast-text{padding:0 6px}md-toast{position:absolute;z-index:105;box-sizing:border-box;cursor:default;overflow:hidden;padding:8px;opacity:1;transition:all .4s cubic-bezier(.25,.8,.25,1)}md-toast .md-toast-content{display:flex;direction:row;align-items:center;max-height:168px;max-width:100%;min-height:48px;padding:0 18px;box-shadow:0 2px 5px 0 rgba(0,0,0,.26);border-radius:2px;font-size:14px;overflow:hidden;transform:translate3d(0,0,0) rotateZ(0);transition:all .4s cubic-bezier(.25,.8,.25,1);justify-content:flex-start}md-toast .md-toast-content::before{content:'';min-height:48px;visibility:hidden;display:inline-block}[dir=rtl] md-toast .md-toast-content{justify-content:flex-end}md-toast .md-toast-content span{flex:1 1 0%;box-sizing:border-box;min-width:0}md-toast.md-capsule{border-radius:24px}md-toast.md-capsule .md-toast-content{border-radius:24px}md-toast.ng-leave-active .md-toast-content{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-toast.md-swipedown .md-toast-content,md-toast.md-swipeleft .md-toast-content,md-toast.md-swiperight .md-toast-content,md-toast.md-swipeup .md-toast-content{transition:all .4s cubic-bezier(.25,.8,.25,1)}md-toast.ng-enter{opacity:0}md-toast.ng-enter .md-toast-content{transform:translate3d(0,100%,0)}md-toast.ng-enter.md-top .md-toast-content{transform:translate3d(0,-100%,0)}md-toast.ng-enter.ng-enter-active{opacity:1}md-toast.ng-enter.ng-enter-active .md-toast-content{transform:translate3d(0,0,0)}md-toast.ng-leave.ng-leave-active .md-toast-content{opacity:0;transform:translate3d(0,100%,0)}md-toast.ng-leave.ng-leave-active.md-swipeup .md-toast-content{transform:translate3d(0,-50%,0)}md-toast.ng-leave.ng-leave-active.md-swipedown .md-toast-content{transform:translate3d(0,50%,0)}md-toast.ng-leave.ng-leave-active.md-top .md-toast-content{transform:translate3d(0,-100%,0)}md-toast .md-action{line-height:19px;margin-left:24px;margin-right:0;cursor:pointer;text-transform:uppercase;float:right}md-toast .md-button{min-width:0;margin-right:0;margin-left:12px}[dir=rtl] md-toast .md-button{margin-right:12px}[dir=rtl] md-toast .md-button{margin-left:0}@media (max-width:959px){md-toast{left:0;right:0;width:100%;max-width:100%;min-width:0;border-radius:0;bottom:0;padding:0}md-toast.ng-leave.ng-leave-active.md-swipeup .md-toast-content{transform:translate3d(0,-50%,0)}md-toast.ng-leave.ng-leave-active.md-swipedown .md-toast-content{transform:translate3d(0,50%,0)}}@media (min-width:960px){md-toast{min-width:304px}md-toast.md-bottom{bottom:0}md-toast.md-left{left:0}md-toast.md-right{right:0}md-toast.md-top{top:0}md-toast._md-start{left:0}[dir=rtl] md-toast._md-start{left:auto;right:0}md-toast._md-end{right:0}[dir=rtl] md-toast._md-end{right:auto;left:0}md-toast.ng-leave.ng-leave-active.md-swipeleft .md-toast-content{transform:translate3d(-50%,0,0)}md-toast.ng-leave.ng-leave-active.md-swiperight .md-toast-content{transform:translate3d(50%,0,0)}}@media (min-width:1920px){md-toast .md-toast-content{max-width:568px}}@media screen and (-ms-high-contrast:active){md-toast{border:1px solid #fff}}.md-toast-animating{overflow:hidden!important}md-toolbar{box-sizing:border-box;display:flex;flex-direction:column;position:relative;z-index:2;font-size:20px;min-height:64px;width:100%}md-toolbar._md-toolbar-transitions{transition-duration:.5s;transition-timing-function:cubic-bezier(.35,0,.25,1);transition-property:background-color,fill,color}md-toolbar.md-whiteframe-z1-add,md-toolbar.md-whiteframe-z1-remove{transition:box-shadow .5s linear}md-toolbar md-toolbar-filler{width:72px}md-toolbar *,md-toolbar :after,md-toolbar :before{box-sizing:border-box}md-toolbar.ng-animate{transition:none}md-toolbar.md-tall{height:128px;min-height:128px;max-height:128px}md-toolbar.md-medium-tall{height:88px;min-height:88px;max-height:88px}md-toolbar.md-medium-tall .md-toolbar-tools{height:48px;min-height:48px;max-height:48px}md-toolbar>.md-indent{margin-left:64px}[dir=rtl] md-toolbar>.md-indent{margin-left:auto;margin-right:64px}md-toolbar~md-content>md-list{padding:0}md-toolbar~md-content>md-list md-list-item:last-child md-divider{display:none}.md-toolbar-tools{font-size:20px;letter-spacing:.005em;box-sizing:border-box;font-weight:400;display:flex;align-items:center;flex-direction:row;width:100%;height:64px;max-height:64px;padding:0 16px;margin:0}.md-toolbar-tools h1,.md-toolbar-tools h2,.md-toolbar-tools h3{font-size:inherit;font-weight:inherit;margin:inherit}.md-toolbar-tools a{color:inherit;text-decoration:none}.md-toolbar-tools .fill-height{display:flex;align-items:center}.md-toolbar-tools .md-button{margin-top:0;margin-bottom:0}.md-toolbar-tools .md-button,.md-toolbar-tools .md-button.md-icon-button md-icon{transition-duration:.5s;transition-timing-function:cubic-bezier(.35,0,.25,1);transition-property:background-color,fill,color}.md-toolbar-tools .md-button.md-icon-button md-icon.ng-animate,.md-toolbar-tools .md-button.ng-animate{transition:none}.md-toolbar-tools>.md-button:first-child{margin-left:-8px}[dir=rtl] .md-toolbar-tools>.md-button:first-child{margin-left:auto;margin-right:-8px}.md-toolbar-tools>.md-button:last-child{margin-right:-8px}[dir=rtl] .md-toolbar-tools>.md-button:last-child{margin-right:auto;margin-left:-8px}.md-toolbar-tools>md-menu:last-child{margin-right:-8px}[dir=rtl] .md-toolbar-tools>md-menu:last-child{margin-right:auto;margin-left:-8px}.md-toolbar-tools>md-menu:last-child>.md-button{margin-right:0}[dir=rtl] .md-toolbar-tools>md-menu:last-child>.md-button{margin-right:auto;margin-left:0}@media screen and (-ms-high-contrast:active){.md-toolbar-tools{border-bottom:1px solid #fff}}@media (min-width:0) and (max-width:959px) and (orientation:portrait){md-toolbar{min-height:56px}.md-toolbar-tools{height:56px;max-height:56px}}@media (min-width:0) and (max-width:959px) and (orientation:landscape){md-toolbar{min-height:48px}.md-toolbar-tools{height:48px;max-height:48px}}md-tooltip{position:absolute;z-index:100;overflow:hidden;pointer-events:none;border-radius:4px;font-weight:500;font-size:14px}@media (min-width:960px){md-tooltip{font-size:10px}}md-tooltip .md-content{position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transform-origin:center top;transform:scale(0);opacity:0;height:32px;line-height:32px;padding-left:16px;padding-right:16px}@media (min-width:960px){md-tooltip .md-content{height:22px;line-height:22px;padding-left:8px;padding-right:8px}}md-tooltip .md-content.md-show-add{transition:all .4s cubic-bezier(.25,.8,.25,1);transition-duration:.2s;transform:scale(0);opacity:0}md-tooltip .md-content.md-show,md-tooltip .md-content.md-show-add-active{transform:scale(1);opacity:.9;transform-origin:center top}md-tooltip .md-content.md-show-remove{transition:all .4s cubic-bezier(.25,.8,.25,1);transition-duration:.2s}md-tooltip .md-content.md-show-remove.md-show-remove-active{transform:scale(0);opacity:0}md-tooltip.md-hide{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-tooltip.md-show{transition:all .4s cubic-bezier(.25,.8,.25,1);pointer-events:auto}.md-virtual-repeat-container{box-sizing:border-box;display:block;margin:0;overflow:hidden;padding:0;position:relative}.md-virtual-repeat-container .md-virtual-repeat-scroller{bottom:0;box-sizing:border-box;left:0;margin:0;overflow-x:hidden;padding:0;position:absolute;right:0;top:0;-webkit-overflow-scrolling:touch}.md-virtual-repeat-container .md-virtual-repeat-sizer{box-sizing:border-box;height:1px;display:block;margin:0;padding:0;width:1px}.md-virtual-repeat-container .md-virtual-repeat-offsetter{box-sizing:border-box;left:0;margin:0;padding:0;position:absolute;right:0;top:0}.md-virtual-repeat-container.md-orient-horizontal .md-virtual-repeat-scroller{overflow-x:auto;overflow-y:hidden}.md-virtual-repeat-container.md-orient-horizontal .md-virtual-repeat-offsetter{bottom:16px;right:auto;white-space:nowrap}[dir=rtl] .md-virtual-repeat-container.md-orient-horizontal .md-virtual-repeat-offsetter{right:auto;left:auto}.md-whiteframe-1dp,.md-whiteframe-z1{box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.md-whiteframe-2dp{box-shadow:0 1px 5px 0 rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.12)}.md-whiteframe-3dp{box-shadow:0 1px 8px 0 rgba(0,0,0,.2),0 3px 4px 0 rgba(0,0,0,.14),0 3px 3px -2px rgba(0,0,0,.12)}.md-whiteframe-4dp,.md-whiteframe-z2{box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12)}.md-whiteframe-5dp{box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 5px 8px 0 rgba(0,0,0,.14),0 1px 14px 0 rgba(0,0,0,.12)}.md-whiteframe-6dp{box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12)}.md-whiteframe-7dp,.md-whiteframe-z3{box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.md-whiteframe-8dp{box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.md-whiteframe-9dp{box-shadow:0 5px 6px -3px rgba(0,0,0,.2),0 9px 12px 1px rgba(0,0,0,.14),0 3px 16px 2px rgba(0,0,0,.12)}.md-whiteframe-10dp,.md-whiteframe-z4{box-shadow:0 6px 6px -3px rgba(0,0,0,.2),0 10px 14px 1px rgba(0,0,0,.14),0 4px 18px 3px rgba(0,0,0,.12)}.md-whiteframe-11dp{box-shadow:0 6px 7px -4px rgba(0,0,0,.2),0 11px 15px 1px rgba(0,0,0,.14),0 4px 20px 3px rgba(0,0,0,.12)}.md-whiteframe-12dp{box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 12px 17px 2px rgba(0,0,0,.14),0 5px 22px 4px rgba(0,0,0,.12)}.md-whiteframe-13dp,.md-whiteframe-z5{box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 13px 19px 2px rgba(0,0,0,.14),0 5px 24px 4px rgba(0,0,0,.12)}.md-whiteframe-14dp{box-shadow:0 7px 9px -4px rgba(0,0,0,.2),0 14px 21px 2px rgba(0,0,0,.14),0 5px 26px 4px rgba(0,0,0,.12)}.md-whiteframe-15dp{box-shadow:0 8px 9px -5px rgba(0,0,0,.2),0 15px 22px 2px rgba(0,0,0,.14),0 6px 28px 5px rgba(0,0,0,.12)}.md-whiteframe-16dp{box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12)}.md-whiteframe-17dp{box-shadow:0 8px 11px -5px rgba(0,0,0,.2),0 17px 26px 2px rgba(0,0,0,.14),0 6px 32px 5px rgba(0,0,0,.12)}.md-whiteframe-18dp{box-shadow:0 9px 11px -5px rgba(0,0,0,.2),0 18px 28px 2px rgba(0,0,0,.14),0 7px 34px 6px rgba(0,0,0,.12)}.md-whiteframe-19dp{box-shadow:0 9px 12px -6px rgba(0,0,0,.2),0 19px 29px 2px rgba(0,0,0,.14),0 7px 36px 6px rgba(0,0,0,.12)}.md-whiteframe-20dp{box-shadow:0 10px 13px -6px rgba(0,0,0,.2),0 20px 31px 3px rgba(0,0,0,.14),0 8px 38px 7px rgba(0,0,0,.12)}.md-whiteframe-21dp{box-shadow:0 10px 13px -6px rgba(0,0,0,.2),0 21px 33px 3px rgba(0,0,0,.14),0 8px 40px 7px rgba(0,0,0,.12)}.md-whiteframe-22dp{box-shadow:0 10px 14px -6px rgba(0,0,0,.2),0 22px 35px 3px rgba(0,0,0,.14),0 8px 42px 7px rgba(0,0,0,.12)}.md-whiteframe-23dp{box-shadow:0 11px 14px -7px rgba(0,0,0,.2),0 23px 36px 3px rgba(0,0,0,.14),0 9px 44px 8px rgba(0,0,0,.12)}.md-whiteframe-24dp{box-shadow:0 11px 15px -7px rgba(0,0,0,.2),0 24px 38px 3px rgba(0,0,0,.14),0 9px 46px 8px rgba(0,0,0,.12)}@media screen and (-ms-high-contrast:active){md-whiteframe{border:1px solid #fff}}@media print{[md-whiteframe],md-whiteframe{background-color:#fff}}.ng-cloak,.x-ng-cloak,[data-ng-cloak],[ng-cloak],[ng\:cloak],[x-ng-cloak]{display:none!important}@-moz-document url-prefix(){.layout-fill{margin:0;width:100%;min-height:100%;height:100%}}.flex-order{order:0}.flex-order--20{order:-20}.flex-order--19{order:-19}.flex-order--18{order:-18}.flex-order--17{order:-17}.flex-order--16{order:-16}.flex-order--15{order:-15}.flex-order--14{order:-14}.flex-order--13{order:-13}.flex-order--12{order:-12}.flex-order--11{order:-11}.flex-order--10{order:-10}.flex-order--9{order:-9}.flex-order--8{order:-8}.flex-order--7{order:-7}.flex-order--6{order:-6}.flex-order--5{order:-5}.flex-order--4{order:-4}.flex-order--3{order:-3}.flex-order--2{order:-2}.flex-order--1{order:-1}.flex-order-0{order:0}.flex-order-1{order:1}.flex-order-2{order:2}.flex-order-3{order:3}.flex-order-4{order:4}.flex-order-5{order:5}.flex-order-6{order:6}.flex-order-7{order:7}.flex-order-8{order:8}.flex-order-9{order:9}.flex-order-10{order:10}.flex-order-11{order:11}.flex-order-12{order:12}.flex-order-13{order:13}.flex-order-14{order:14}.flex-order-15{order:15}.flex-order-16{order:16}.flex-order-17{order:17}.flex-order-18{order:18}.flex-order-19{order:19}.flex-order-20{order:20}.flex-offset-0,.offset-0{margin-left:0}[dir=rtl] .flex-offset-0,[dir=rtl] .offset-0{margin-left:auto;margin-right:0}.flex-offset-5,.offset-5{margin-left:5%}[dir=rtl] .flex-offset-5,[dir=rtl] .offset-5{margin-left:auto;margin-right:5%}.flex-offset-10,.offset-10{margin-left:10%}[dir=rtl] .flex-offset-10,[dir=rtl] .offset-10{margin-left:auto;margin-right:10%}.flex-offset-15,.offset-15{margin-left:15%}[dir=rtl] .flex-offset-15,[dir=rtl] .offset-15{margin-left:auto;margin-right:15%}.flex-offset-20,.offset-20{margin-left:20%}[dir=rtl] .flex-offset-20,[dir=rtl] .offset-20{margin-left:auto;margin-right:20%}.flex-offset-25,.offset-25{margin-left:25%}[dir=rtl] .flex-offset-25,[dir=rtl] .offset-25{margin-left:auto;margin-right:25%}.flex-offset-30,.offset-30{margin-left:30%}[dir=rtl] .flex-offset-30,[dir=rtl] .offset-30{margin-left:auto;margin-right:30%}.flex-offset-35,.offset-35{margin-left:35%}[dir=rtl] .flex-offset-35,[dir=rtl] .offset-35{margin-left:auto;margin-right:35%}.flex-offset-40,.offset-40{margin-left:40%}[dir=rtl] .flex-offset-40,[dir=rtl] .offset-40{margin-left:auto;margin-right:40%}.flex-offset-45,.offset-45{margin-left:45%}[dir=rtl] .flex-offset-45,[dir=rtl] .offset-45{margin-left:auto;margin-right:45%}.flex-offset-50,.offset-50{margin-left:50%}[dir=rtl] .flex-offset-50,[dir=rtl] .offset-50{margin-left:auto;margin-right:50%}.flex-offset-55,.offset-55{margin-left:55%}[dir=rtl] .flex-offset-55,[dir=rtl] .offset-55{margin-left:auto;margin-right:55%}.flex-offset-60,.offset-60{margin-left:60%}[dir=rtl] .flex-offset-60,[dir=rtl] .offset-60{margin-left:auto;margin-right:60%}.flex-offset-65,.offset-65{margin-left:65%}[dir=rtl] .flex-offset-65,[dir=rtl] .offset-65{margin-left:auto;margin-right:65%}.flex-offset-70,.offset-70{margin-left:70%}[dir=rtl] .flex-offset-70,[dir=rtl] .offset-70{margin-left:auto;margin-right:70%}.flex-offset-75,.offset-75{margin-left:75%}[dir=rtl] .flex-offset-75,[dir=rtl] .offset-75{margin-left:auto;margin-right:75%}.flex-offset-80,.offset-80{margin-left:80%}[dir=rtl] .flex-offset-80,[dir=rtl] .offset-80{margin-left:auto;margin-right:80%}.flex-offset-85,.offset-85{margin-left:85%}[dir=rtl] .flex-offset-85,[dir=rtl] .offset-85{margin-left:auto;margin-right:85%}.flex-offset-90,.offset-90{margin-left:90%}[dir=rtl] .flex-offset-90,[dir=rtl] .offset-90{margin-left:auto;margin-right:90%}.flex-offset-95,.offset-95{margin-left:95%}[dir=rtl] .flex-offset-95,[dir=rtl] .offset-95{margin-left:auto;margin-right:95%}.flex-offset-33,.offset-33{margin-left:calc(100% / 3)}.flex-offset-66,.offset-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-66,[dir=rtl] .offset-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align,.layout-align-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-start,.layout-align-start-center,.layout-align-start-end,.layout-align-start-start,.layout-align-start-stretch{justify-content:flex-start}.layout-align-center,.layout-align-center-center,.layout-align-center-end,.layout-align-center-start,.layout-align-center-stretch{justify-content:center}.layout-align-end,.layout-align-end-center,.layout-align-end-end,.layout-align-end-start,.layout-align-end-stretch{justify-content:flex-end}.layout-align-space-around,.layout-align-space-around-center,.layout-align-space-around-end,.layout-align-space-around-start,.layout-align-space-around-stretch{justify-content:space-around}.layout-align-space-between,.layout-align-space-between-center,.layout-align-space-between-end,.layout-align-space-between-start,.layout-align-space-between-stretch{justify-content:space-between}.layout-align-center-start,.layout-align-end-start,.layout-align-space-around-start,.layout-align-space-between-start,.layout-align-start-start{align-items:flex-start;align-content:flex-start}.layout-align-center-center,.layout-align-end-center,.layout-align-space-around-center,.layout-align-space-between-center,.layout-align-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-center-center>*,.layout-align-end-center>*,.layout-align-space-around-center>*,.layout-align-space-between-center>*,.layout-align-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-center-end,.layout-align-end-end,.layout-align-space-around-end,.layout-align-space-between-end,.layout-align-start-end{align-items:flex-end;align-content:flex-end}.layout-align-center-stretch,.layout-align-end-stretch,.layout-align-space-around-stretch,.layout-align-space-between-stretch,.layout-align-start-stretch{align-items:stretch;align-content:stretch}.flex{flex:1;box-sizing:border-box}.flex-grow{flex:1 1 100%;box-sizing:border-box}.flex-initial{flex:0 1 auto;box-sizing:border-box}.flex-auto{flex:1 1 auto;box-sizing:border-box}.flex-none{flex:0 0 auto;box-sizing:border-box}.flex-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-row>.flex{min-width:0}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-column>.flex{min-height:0}.layout,.layout-column,.layout-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-column{flex-direction:column}.layout-row{flex-direction:row}.layout-padding-sm>*,.layout-padding>.flex-sm{padding:4px}.layout-padding,.layout-padding-gt-sm,.layout-padding-gt-sm>*,.layout-padding-md,.layout-padding-md>*,.layout-padding>*,.layout-padding>.flex,.layout-padding>.flex-gt-sm,.layout-padding>.flex-md{padding:8px}.layout-padding-gt-lg>*,.layout-padding-gt-md>*,.layout-padding-lg>*,.layout-padding>.flex-gt-lg,.layout-padding>.flex-gt-md,.layout-padding>.flex-lg{padding:16px}.layout-margin-sm>*,.layout-margin>.flex-sm{margin:4px}.layout-margin,.layout-margin-gt-sm,.layout-margin-gt-sm>*,.layout-margin-md,.layout-margin-md>*,.layout-margin>*,.layout-margin>.flex,.layout-margin>.flex-gt-sm,.layout-margin>.flex-md{margin:8px}.layout-margin-gt-lg>*,.layout-margin-gt-md>*,.layout-margin-lg>*,.layout-margin>.flex-gt-lg,.layout-margin>.flex-gt-md,.layout-margin>.flex-lg{margin:16px}.layout-wrap{flex-wrap:wrap}.layout-nowrap{flex-wrap:nowrap}.layout-fill{margin:0;width:100%;min-height:100%;height:100%}@media (max-width:599px){.hide-xs:not(.show-xs):not(.show),.hide:not(.show-xs):not(.show){display:none}.flex-order-xs--20{order:-20}.flex-order-xs--19{order:-19}.flex-order-xs--18{order:-18}.flex-order-xs--17{order:-17}.flex-order-xs--16{order:-16}.flex-order-xs--15{order:-15}.flex-order-xs--14{order:-14}.flex-order-xs--13{order:-13}.flex-order-xs--12{order:-12}.flex-order-xs--11{order:-11}.flex-order-xs--10{order:-10}.flex-order-xs--9{order:-9}.flex-order-xs--8{order:-8}.flex-order-xs--7{order:-7}.flex-order-xs--6{order:-6}.flex-order-xs--5{order:-5}.flex-order-xs--4{order:-4}.flex-order-xs--3{order:-3}.flex-order-xs--2{order:-2}.flex-order-xs--1{order:-1}.flex-order-xs-0{order:0}.flex-order-xs-1{order:1}.flex-order-xs-2{order:2}.flex-order-xs-3{order:3}.flex-order-xs-4{order:4}.flex-order-xs-5{order:5}.flex-order-xs-6{order:6}.flex-order-xs-7{order:7}.flex-order-xs-8{order:8}.flex-order-xs-9{order:9}.flex-order-xs-10{order:10}.flex-order-xs-11{order:11}.flex-order-xs-12{order:12}.flex-order-xs-13{order:13}.flex-order-xs-14{order:14}.flex-order-xs-15{order:15}.flex-order-xs-16{order:16}.flex-order-xs-17{order:17}.flex-order-xs-18{order:18}.flex-order-xs-19{order:19}.flex-order-xs-20{order:20}.flex-offset-xs-0,.offset-xs-0{margin-left:0}[dir=rtl] .flex-offset-xs-0,[dir=rtl] .offset-xs-0{margin-left:auto;margin-right:0}.flex-offset-xs-5,.offset-xs-5{margin-left:5%}[dir=rtl] .flex-offset-xs-5,[dir=rtl] .offset-xs-5{margin-left:auto;margin-right:5%}.flex-offset-xs-10,.offset-xs-10{margin-left:10%}[dir=rtl] .flex-offset-xs-10,[dir=rtl] .offset-xs-10{margin-left:auto;margin-right:10%}.flex-offset-xs-15,.offset-xs-15{margin-left:15%}[dir=rtl] .flex-offset-xs-15,[dir=rtl] .offset-xs-15{margin-left:auto;margin-right:15%}.flex-offset-xs-20,.offset-xs-20{margin-left:20%}[dir=rtl] .flex-offset-xs-20,[dir=rtl] .offset-xs-20{margin-left:auto;margin-right:20%}.flex-offset-xs-25,.offset-xs-25{margin-left:25%}[dir=rtl] .flex-offset-xs-25,[dir=rtl] .offset-xs-25{margin-left:auto;margin-right:25%}.flex-offset-xs-30,.offset-xs-30{margin-left:30%}[dir=rtl] .flex-offset-xs-30,[dir=rtl] .offset-xs-30{margin-left:auto;margin-right:30%}.flex-offset-xs-35,.offset-xs-35{margin-left:35%}[dir=rtl] .flex-offset-xs-35,[dir=rtl] .offset-xs-35{margin-left:auto;margin-right:35%}.flex-offset-xs-40,.offset-xs-40{margin-left:40%}[dir=rtl] .flex-offset-xs-40,[dir=rtl] .offset-xs-40{margin-left:auto;margin-right:40%}.flex-offset-xs-45,.offset-xs-45{margin-left:45%}[dir=rtl] .flex-offset-xs-45,[dir=rtl] .offset-xs-45{margin-left:auto;margin-right:45%}.flex-offset-xs-50,.offset-xs-50{margin-left:50%}[dir=rtl] .flex-offset-xs-50,[dir=rtl] .offset-xs-50{margin-left:auto;margin-right:50%}.flex-offset-xs-55,.offset-xs-55{margin-left:55%}[dir=rtl] .flex-offset-xs-55,[dir=rtl] .offset-xs-55{margin-left:auto;margin-right:55%}.flex-offset-xs-60,.offset-xs-60{margin-left:60%}[dir=rtl] .flex-offset-xs-60,[dir=rtl] .offset-xs-60{margin-left:auto;margin-right:60%}.flex-offset-xs-65,.offset-xs-65{margin-left:65%}[dir=rtl] .flex-offset-xs-65,[dir=rtl] .offset-xs-65{margin-left:auto;margin-right:65%}.flex-offset-xs-70,.offset-xs-70{margin-left:70%}[dir=rtl] .flex-offset-xs-70,[dir=rtl] .offset-xs-70{margin-left:auto;margin-right:70%}.flex-offset-xs-75,.offset-xs-75{margin-left:75%}[dir=rtl] .flex-offset-xs-75,[dir=rtl] .offset-xs-75{margin-left:auto;margin-right:75%}.flex-offset-xs-80,.offset-xs-80{margin-left:80%}[dir=rtl] .flex-offset-xs-80,[dir=rtl] .offset-xs-80{margin-left:auto;margin-right:80%}.flex-offset-xs-85,.offset-xs-85{margin-left:85%}[dir=rtl] .flex-offset-xs-85,[dir=rtl] .offset-xs-85{margin-left:auto;margin-right:85%}.flex-offset-xs-90,.offset-xs-90{margin-left:90%}[dir=rtl] .flex-offset-xs-90,[dir=rtl] .offset-xs-90{margin-left:auto;margin-right:90%}.flex-offset-xs-95,.offset-xs-95{margin-left:95%}[dir=rtl] .flex-offset-xs-95,[dir=rtl] .offset-xs-95{margin-left:auto;margin-right:95%}.flex-offset-xs-33,.offset-xs-33{margin-left:calc(100% / 3)}.flex-offset-xs-66,.offset-xs-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-xs-66,[dir=rtl] .offset-xs-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-xs,.layout-align-xs-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-xs-start,.layout-align-xs-start-center,.layout-align-xs-start-end,.layout-align-xs-start-start,.layout-align-xs-start-stretch{justify-content:flex-start}.layout-align-xs-center,.layout-align-xs-center-center,.layout-align-xs-center-end,.layout-align-xs-center-start,.layout-align-xs-center-stretch{justify-content:center}.layout-align-xs-end,.layout-align-xs-end-center,.layout-align-xs-end-end,.layout-align-xs-end-start,.layout-align-xs-end-stretch{justify-content:flex-end}.layout-align-xs-space-around,.layout-align-xs-space-around-center,.layout-align-xs-space-around-end,.layout-align-xs-space-around-start,.layout-align-xs-space-around-stretch{justify-content:space-around}.layout-align-xs-space-between,.layout-align-xs-space-between-center,.layout-align-xs-space-between-end,.layout-align-xs-space-between-start,.layout-align-xs-space-between-stretch{justify-content:space-between}.layout-align-xs-center-start,.layout-align-xs-end-start,.layout-align-xs-space-around-start,.layout-align-xs-space-between-start,.layout-align-xs-start-start{align-items:flex-start;align-content:flex-start}.layout-align-xs-center-center,.layout-align-xs-end-center,.layout-align-xs-space-around-center,.layout-align-xs-space-between-center,.layout-align-xs-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-xs-center-center>*,.layout-align-xs-end-center>*,.layout-align-xs-space-around-center>*,.layout-align-xs-space-between-center>*,.layout-align-xs-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-xs-center-end,.layout-align-xs-end-end,.layout-align-xs-space-around-end,.layout-align-xs-space-between-end,.layout-align-xs-start-end{align-items:flex-end;align-content:flex-end}.layout-align-xs-center-stretch,.layout-align-xs-end-stretch,.layout-align-xs-space-around-stretch,.layout-align-xs-space-between-stretch,.layout-align-xs-start-stretch{align-items:stretch;align-content:stretch}.flex-xs{flex:1;box-sizing:border-box}.flex-xs-grow{flex:1 1 100%;box-sizing:border-box}.flex-xs-initial{flex:0 1 auto;box-sizing:border-box}.flex-xs-auto{flex:1 1 auto;box-sizing:border-box}.flex-xs-none{flex:0 0 auto;box-sizing:border-box}.flex-xs-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-xs-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-xs-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-xs-column>.flex-xs-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-xs-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-xs-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-xs-row>.flex{min-width:0}.layout-xs-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-xs-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-column>.flex{min-height:0}.layout-xs,.layout-xs-column,.layout-xs-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-xs-column{flex-direction:column}.layout-xs-row{flex-direction:row}}@media (min-width:600px){.flex-order-gt-xs--20{order:-20}.flex-order-gt-xs--19{order:-19}.flex-order-gt-xs--18{order:-18}.flex-order-gt-xs--17{order:-17}.flex-order-gt-xs--16{order:-16}.flex-order-gt-xs--15{order:-15}.flex-order-gt-xs--14{order:-14}.flex-order-gt-xs--13{order:-13}.flex-order-gt-xs--12{order:-12}.flex-order-gt-xs--11{order:-11}.flex-order-gt-xs--10{order:-10}.flex-order-gt-xs--9{order:-9}.flex-order-gt-xs--8{order:-8}.flex-order-gt-xs--7{order:-7}.flex-order-gt-xs--6{order:-6}.flex-order-gt-xs--5{order:-5}.flex-order-gt-xs--4{order:-4}.flex-order-gt-xs--3{order:-3}.flex-order-gt-xs--2{order:-2}.flex-order-gt-xs--1{order:-1}.flex-order-gt-xs-0{order:0}.flex-order-gt-xs-1{order:1}.flex-order-gt-xs-2{order:2}.flex-order-gt-xs-3{order:3}.flex-order-gt-xs-4{order:4}.flex-order-gt-xs-5{order:5}.flex-order-gt-xs-6{order:6}.flex-order-gt-xs-7{order:7}.flex-order-gt-xs-8{order:8}.flex-order-gt-xs-9{order:9}.flex-order-gt-xs-10{order:10}.flex-order-gt-xs-11{order:11}.flex-order-gt-xs-12{order:12}.flex-order-gt-xs-13{order:13}.flex-order-gt-xs-14{order:14}.flex-order-gt-xs-15{order:15}.flex-order-gt-xs-16{order:16}.flex-order-gt-xs-17{order:17}.flex-order-gt-xs-18{order:18}.flex-order-gt-xs-19{order:19}.flex-order-gt-xs-20{order:20}.flex-offset-gt-xs-0,.offset-gt-xs-0{margin-left:0}[dir=rtl] .flex-offset-gt-xs-0,[dir=rtl] .offset-gt-xs-0{margin-left:auto;margin-right:0}.flex-offset-gt-xs-5,.offset-gt-xs-5{margin-left:5%}[dir=rtl] .flex-offset-gt-xs-5,[dir=rtl] .offset-gt-xs-5{margin-left:auto;margin-right:5%}.flex-offset-gt-xs-10,.offset-gt-xs-10{margin-left:10%}[dir=rtl] .flex-offset-gt-xs-10,[dir=rtl] .offset-gt-xs-10{margin-left:auto;margin-right:10%}.flex-offset-gt-xs-15,.offset-gt-xs-15{margin-left:15%}[dir=rtl] .flex-offset-gt-xs-15,[dir=rtl] .offset-gt-xs-15{margin-left:auto;margin-right:15%}.flex-offset-gt-xs-20,.offset-gt-xs-20{margin-left:20%}[dir=rtl] .flex-offset-gt-xs-20,[dir=rtl] .offset-gt-xs-20{margin-left:auto;margin-right:20%}.flex-offset-gt-xs-25,.offset-gt-xs-25{margin-left:25%}[dir=rtl] .flex-offset-gt-xs-25,[dir=rtl] .offset-gt-xs-25{margin-left:auto;margin-right:25%}.flex-offset-gt-xs-30,.offset-gt-xs-30{margin-left:30%}[dir=rtl] .flex-offset-gt-xs-30,[dir=rtl] .offset-gt-xs-30{margin-left:auto;margin-right:30%}.flex-offset-gt-xs-35,.offset-gt-xs-35{margin-left:35%}[dir=rtl] .flex-offset-gt-xs-35,[dir=rtl] .offset-gt-xs-35{margin-left:auto;margin-right:35%}.flex-offset-gt-xs-40,.offset-gt-xs-40{margin-left:40%}[dir=rtl] .flex-offset-gt-xs-40,[dir=rtl] .offset-gt-xs-40{margin-left:auto;margin-right:40%}.flex-offset-gt-xs-45,.offset-gt-xs-45{margin-left:45%}[dir=rtl] .flex-offset-gt-xs-45,[dir=rtl] .offset-gt-xs-45{margin-left:auto;margin-right:45%}.flex-offset-gt-xs-50,.offset-gt-xs-50{margin-left:50%}[dir=rtl] .flex-offset-gt-xs-50,[dir=rtl] .offset-gt-xs-50{margin-left:auto;margin-right:50%}.flex-offset-gt-xs-55,.offset-gt-xs-55{margin-left:55%}[dir=rtl] .flex-offset-gt-xs-55,[dir=rtl] .offset-gt-xs-55{margin-left:auto;margin-right:55%}.flex-offset-gt-xs-60,.offset-gt-xs-60{margin-left:60%}[dir=rtl] .flex-offset-gt-xs-60,[dir=rtl] .offset-gt-xs-60{margin-left:auto;margin-right:60%}.flex-offset-gt-xs-65,.offset-gt-xs-65{margin-left:65%}[dir=rtl] .flex-offset-gt-xs-65,[dir=rtl] .offset-gt-xs-65{margin-left:auto;margin-right:65%}.flex-offset-gt-xs-70,.offset-gt-xs-70{margin-left:70%}[dir=rtl] .flex-offset-gt-xs-70,[dir=rtl] .offset-gt-xs-70{margin-left:auto;margin-right:70%}.flex-offset-gt-xs-75,.offset-gt-xs-75{margin-left:75%}[dir=rtl] .flex-offset-gt-xs-75,[dir=rtl] .offset-gt-xs-75{margin-left:auto;margin-right:75%}.flex-offset-gt-xs-80,.offset-gt-xs-80{margin-left:80%}[dir=rtl] .flex-offset-gt-xs-80,[dir=rtl] .offset-gt-xs-80{margin-left:auto;margin-right:80%}.flex-offset-gt-xs-85,.offset-gt-xs-85{margin-left:85%}[dir=rtl] .flex-offset-gt-xs-85,[dir=rtl] .offset-gt-xs-85{margin-left:auto;margin-right:85%}.flex-offset-gt-xs-90,.offset-gt-xs-90{margin-left:90%}[dir=rtl] .flex-offset-gt-xs-90,[dir=rtl] .offset-gt-xs-90{margin-left:auto;margin-right:90%}.flex-offset-gt-xs-95,.offset-gt-xs-95{margin-left:95%}[dir=rtl] .flex-offset-gt-xs-95,[dir=rtl] .offset-gt-xs-95{margin-left:auto;margin-right:95%}.flex-offset-gt-xs-33,.offset-gt-xs-33{margin-left:calc(100% / 3)}.flex-offset-gt-xs-66,.offset-gt-xs-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-gt-xs-66,[dir=rtl] .offset-gt-xs-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-gt-xs,.layout-align-gt-xs-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-gt-xs-start,.layout-align-gt-xs-start-center,.layout-align-gt-xs-start-end,.layout-align-gt-xs-start-start,.layout-align-gt-xs-start-stretch{justify-content:flex-start}.layout-align-gt-xs-center,.layout-align-gt-xs-center-center,.layout-align-gt-xs-center-end,.layout-align-gt-xs-center-start,.layout-align-gt-xs-center-stretch{justify-content:center}.layout-align-gt-xs-end,.layout-align-gt-xs-end-center,.layout-align-gt-xs-end-end,.layout-align-gt-xs-end-start,.layout-align-gt-xs-end-stretch{justify-content:flex-end}.layout-align-gt-xs-space-around,.layout-align-gt-xs-space-around-center,.layout-align-gt-xs-space-around-end,.layout-align-gt-xs-space-around-start,.layout-align-gt-xs-space-around-stretch{justify-content:space-around}.layout-align-gt-xs-space-between,.layout-align-gt-xs-space-between-center,.layout-align-gt-xs-space-between-end,.layout-align-gt-xs-space-between-start,.layout-align-gt-xs-space-between-stretch{justify-content:space-between}.layout-align-gt-xs-center-start,.layout-align-gt-xs-end-start,.layout-align-gt-xs-space-around-start,.layout-align-gt-xs-space-between-start,.layout-align-gt-xs-start-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-xs-center-center,.layout-align-gt-xs-end-center,.layout-align-gt-xs-space-around-center,.layout-align-gt-xs-space-between-center,.layout-align-gt-xs-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-xs-center-center>*,.layout-align-gt-xs-end-center>*,.layout-align-gt-xs-space-around-center>*,.layout-align-gt-xs-space-between-center>*,.layout-align-gt-xs-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-xs-center-end,.layout-align-gt-xs-end-end,.layout-align-gt-xs-space-around-end,.layout-align-gt-xs-space-between-end,.layout-align-gt-xs-start-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-xs-center-stretch,.layout-align-gt-xs-end-stretch,.layout-align-gt-xs-space-around-stretch,.layout-align-gt-xs-space-between-stretch,.layout-align-gt-xs-start-stretch{align-items:stretch;align-content:stretch}.flex-gt-xs{flex:1;box-sizing:border-box}.flex-gt-xs-grow{flex:1 1 100%;box-sizing:border-box}.flex-gt-xs-initial{flex:0 1 auto;box-sizing:border-box}.flex-gt-xs-auto{flex:1 1 auto;box-sizing:border-box}.flex-gt-xs-none{flex:0 0 auto;box-sizing:border-box}.flex-gt-xs-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-gt-xs-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-gt-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-xs-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-xs-column>.flex-gt-xs-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-gt-xs-row>.flex{min-width:0}.layout-gt-xs-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-column>.flex{min-height:0}.layout-gt-xs,.layout-gt-xs-column,.layout-gt-xs-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-gt-xs-column{flex-direction:column}.layout-gt-xs-row{flex-direction:row}}@media (min-width:600px) and (max-width:959px){.hide-gt-xs:not(.show-gt-xs):not(.show-sm):not(.show),.hide:not(.show-gt-xs):not(.show-sm):not(.show){display:none}.hide-sm:not(.show-gt-xs):not(.show-sm):not(.show){display:none}.flex-order-sm--20{order:-20}.flex-order-sm--19{order:-19}.flex-order-sm--18{order:-18}.flex-order-sm--17{order:-17}.flex-order-sm--16{order:-16}.flex-order-sm--15{order:-15}.flex-order-sm--14{order:-14}.flex-order-sm--13{order:-13}.flex-order-sm--12{order:-12}.flex-order-sm--11{order:-11}.flex-order-sm--10{order:-10}.flex-order-sm--9{order:-9}.flex-order-sm--8{order:-8}.flex-order-sm--7{order:-7}.flex-order-sm--6{order:-6}.flex-order-sm--5{order:-5}.flex-order-sm--4{order:-4}.flex-order-sm--3{order:-3}.flex-order-sm--2{order:-2}.flex-order-sm--1{order:-1}.flex-order-sm-0{order:0}.flex-order-sm-1{order:1}.flex-order-sm-2{order:2}.flex-order-sm-3{order:3}.flex-order-sm-4{order:4}.flex-order-sm-5{order:5}.flex-order-sm-6{order:6}.flex-order-sm-7{order:7}.flex-order-sm-8{order:8}.flex-order-sm-9{order:9}.flex-order-sm-10{order:10}.flex-order-sm-11{order:11}.flex-order-sm-12{order:12}.flex-order-sm-13{order:13}.flex-order-sm-14{order:14}.flex-order-sm-15{order:15}.flex-order-sm-16{order:16}.flex-order-sm-17{order:17}.flex-order-sm-18{order:18}.flex-order-sm-19{order:19}.flex-order-sm-20{order:20}.flex-offset-sm-0,.offset-sm-0{margin-left:0}[dir=rtl] .flex-offset-sm-0,[dir=rtl] .offset-sm-0{margin-left:auto;margin-right:0}.flex-offset-sm-5,.offset-sm-5{margin-left:5%}[dir=rtl] .flex-offset-sm-5,[dir=rtl] .offset-sm-5{margin-left:auto;margin-right:5%}.flex-offset-sm-10,.offset-sm-10{margin-left:10%}[dir=rtl] .flex-offset-sm-10,[dir=rtl] .offset-sm-10{margin-left:auto;margin-right:10%}.flex-offset-sm-15,.offset-sm-15{margin-left:15%}[dir=rtl] .flex-offset-sm-15,[dir=rtl] .offset-sm-15{margin-left:auto;margin-right:15%}.flex-offset-sm-20,.offset-sm-20{margin-left:20%}[dir=rtl] .flex-offset-sm-20,[dir=rtl] .offset-sm-20{margin-left:auto;margin-right:20%}.flex-offset-sm-25,.offset-sm-25{margin-left:25%}[dir=rtl] .flex-offset-sm-25,[dir=rtl] .offset-sm-25{margin-left:auto;margin-right:25%}.flex-offset-sm-30,.offset-sm-30{margin-left:30%}[dir=rtl] .flex-offset-sm-30,[dir=rtl] .offset-sm-30{margin-left:auto;margin-right:30%}.flex-offset-sm-35,.offset-sm-35{margin-left:35%}[dir=rtl] .flex-offset-sm-35,[dir=rtl] .offset-sm-35{margin-left:auto;margin-right:35%}.flex-offset-sm-40,.offset-sm-40{margin-left:40%}[dir=rtl] .flex-offset-sm-40,[dir=rtl] .offset-sm-40{margin-left:auto;margin-right:40%}.flex-offset-sm-45,.offset-sm-45{margin-left:45%}[dir=rtl] .flex-offset-sm-45,[dir=rtl] .offset-sm-45{margin-left:auto;margin-right:45%}.flex-offset-sm-50,.offset-sm-50{margin-left:50%}[dir=rtl] .flex-offset-sm-50,[dir=rtl] .offset-sm-50{margin-left:auto;margin-right:50%}.flex-offset-sm-55,.offset-sm-55{margin-left:55%}[dir=rtl] .flex-offset-sm-55,[dir=rtl] .offset-sm-55{margin-left:auto;margin-right:55%}.flex-offset-sm-60,.offset-sm-60{margin-left:60%}[dir=rtl] .flex-offset-sm-60,[dir=rtl] .offset-sm-60{margin-left:auto;margin-right:60%}.flex-offset-sm-65,.offset-sm-65{margin-left:65%}[dir=rtl] .flex-offset-sm-65,[dir=rtl] .offset-sm-65{margin-left:auto;margin-right:65%}.flex-offset-sm-70,.offset-sm-70{margin-left:70%}[dir=rtl] .flex-offset-sm-70,[dir=rtl] .offset-sm-70{margin-left:auto;margin-right:70%}.flex-offset-sm-75,.offset-sm-75{margin-left:75%}[dir=rtl] .flex-offset-sm-75,[dir=rtl] .offset-sm-75{margin-left:auto;margin-right:75%}.flex-offset-sm-80,.offset-sm-80{margin-left:80%}[dir=rtl] .flex-offset-sm-80,[dir=rtl] .offset-sm-80{margin-left:auto;margin-right:80%}.flex-offset-sm-85,.offset-sm-85{margin-left:85%}[dir=rtl] .flex-offset-sm-85,[dir=rtl] .offset-sm-85{margin-left:auto;margin-right:85%}.flex-offset-sm-90,.offset-sm-90{margin-left:90%}[dir=rtl] .flex-offset-sm-90,[dir=rtl] .offset-sm-90{margin-left:auto;margin-right:90%}.flex-offset-sm-95,.offset-sm-95{margin-left:95%}[dir=rtl] .flex-offset-sm-95,[dir=rtl] .offset-sm-95{margin-left:auto;margin-right:95%}.flex-offset-sm-33,.offset-sm-33{margin-left:calc(100% / 3)}.flex-offset-sm-66,.offset-sm-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-sm-66,[dir=rtl] .offset-sm-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-sm,.layout-align-sm-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-sm-start,.layout-align-sm-start-center,.layout-align-sm-start-end,.layout-align-sm-start-start,.layout-align-sm-start-stretch{justify-content:flex-start}.layout-align-sm-center,.layout-align-sm-center-center,.layout-align-sm-center-end,.layout-align-sm-center-start,.layout-align-sm-center-stretch{justify-content:center}.layout-align-sm-end,.layout-align-sm-end-center,.layout-align-sm-end-end,.layout-align-sm-end-start,.layout-align-sm-end-stretch{justify-content:flex-end}.layout-align-sm-space-around,.layout-align-sm-space-around-center,.layout-align-sm-space-around-end,.layout-align-sm-space-around-start,.layout-align-sm-space-around-stretch{justify-content:space-around}.layout-align-sm-space-between,.layout-align-sm-space-between-center,.layout-align-sm-space-between-end,.layout-align-sm-space-between-start,.layout-align-sm-space-between-stretch{justify-content:space-between}.layout-align-sm-center-start,.layout-align-sm-end-start,.layout-align-sm-space-around-start,.layout-align-sm-space-between-start,.layout-align-sm-start-start{align-items:flex-start;align-content:flex-start}.layout-align-sm-center-center,.layout-align-sm-end-center,.layout-align-sm-space-around-center,.layout-align-sm-space-between-center,.layout-align-sm-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-sm-center-center>*,.layout-align-sm-end-center>*,.layout-align-sm-space-around-center>*,.layout-align-sm-space-between-center>*,.layout-align-sm-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-sm-center-end,.layout-align-sm-end-end,.layout-align-sm-space-around-end,.layout-align-sm-space-between-end,.layout-align-sm-start-end{align-items:flex-end;align-content:flex-end}.layout-align-sm-center-stretch,.layout-align-sm-end-stretch,.layout-align-sm-space-around-stretch,.layout-align-sm-space-between-stretch,.layout-align-sm-start-stretch{align-items:stretch;align-content:stretch}.flex-sm{flex:1;box-sizing:border-box}.flex-sm-grow{flex:1 1 100%;box-sizing:border-box}.flex-sm-initial{flex:0 1 auto;box-sizing:border-box}.flex-sm-auto{flex:1 1 auto;box-sizing:border-box}.flex-sm-none{flex:0 0 auto;box-sizing:border-box}.flex-sm-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-sm-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-sm-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-sm-column>.flex-sm-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-sm-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-sm-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-sm-row>.flex{min-width:0}.layout-sm-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-sm-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-column>.flex{min-height:0}.layout-sm,.layout-sm-column,.layout-sm-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-sm-column{flex-direction:column}.layout-sm-row{flex-direction:row}}@media (min-width:960px){.flex-order-gt-sm--20{order:-20}.flex-order-gt-sm--19{order:-19}.flex-order-gt-sm--18{order:-18}.flex-order-gt-sm--17{order:-17}.flex-order-gt-sm--16{order:-16}.flex-order-gt-sm--15{order:-15}.flex-order-gt-sm--14{order:-14}.flex-order-gt-sm--13{order:-13}.flex-order-gt-sm--12{order:-12}.flex-order-gt-sm--11{order:-11}.flex-order-gt-sm--10{order:-10}.flex-order-gt-sm--9{order:-9}.flex-order-gt-sm--8{order:-8}.flex-order-gt-sm--7{order:-7}.flex-order-gt-sm--6{order:-6}.flex-order-gt-sm--5{order:-5}.flex-order-gt-sm--4{order:-4}.flex-order-gt-sm--3{order:-3}.flex-order-gt-sm--2{order:-2}.flex-order-gt-sm--1{order:-1}.flex-order-gt-sm-0{order:0}.flex-order-gt-sm-1{order:1}.flex-order-gt-sm-2{order:2}.flex-order-gt-sm-3{order:3}.flex-order-gt-sm-4{order:4}.flex-order-gt-sm-5{order:5}.flex-order-gt-sm-6{order:6}.flex-order-gt-sm-7{order:7}.flex-order-gt-sm-8{order:8}.flex-order-gt-sm-9{order:9}.flex-order-gt-sm-10{order:10}.flex-order-gt-sm-11{order:11}.flex-order-gt-sm-12{order:12}.flex-order-gt-sm-13{order:13}.flex-order-gt-sm-14{order:14}.flex-order-gt-sm-15{order:15}.flex-order-gt-sm-16{order:16}.flex-order-gt-sm-17{order:17}.flex-order-gt-sm-18{order:18}.flex-order-gt-sm-19{order:19}.flex-order-gt-sm-20{order:20}.flex-offset-gt-sm-0,.offset-gt-sm-0{margin-left:0}[dir=rtl] .flex-offset-gt-sm-0,[dir=rtl] .offset-gt-sm-0{margin-left:auto;margin-right:0}.flex-offset-gt-sm-5,.offset-gt-sm-5{margin-left:5%}[dir=rtl] .flex-offset-gt-sm-5,[dir=rtl] .offset-gt-sm-5{margin-left:auto;margin-right:5%}.flex-offset-gt-sm-10,.offset-gt-sm-10{margin-left:10%}[dir=rtl] .flex-offset-gt-sm-10,[dir=rtl] .offset-gt-sm-10{margin-left:auto;margin-right:10%}.flex-offset-gt-sm-15,.offset-gt-sm-15{margin-left:15%}[dir=rtl] .flex-offset-gt-sm-15,[dir=rtl] .offset-gt-sm-15{margin-left:auto;margin-right:15%}.flex-offset-gt-sm-20,.offset-gt-sm-20{margin-left:20%}[dir=rtl] .flex-offset-gt-sm-20,[dir=rtl] .offset-gt-sm-20{margin-left:auto;margin-right:20%}.flex-offset-gt-sm-25,.offset-gt-sm-25{margin-left:25%}[dir=rtl] .flex-offset-gt-sm-25,[dir=rtl] .offset-gt-sm-25{margin-left:auto;margin-right:25%}.flex-offset-gt-sm-30,.offset-gt-sm-30{margin-left:30%}[dir=rtl] .flex-offset-gt-sm-30,[dir=rtl] .offset-gt-sm-30{margin-left:auto;margin-right:30%}.flex-offset-gt-sm-35,.offset-gt-sm-35{margin-left:35%}[dir=rtl] .flex-offset-gt-sm-35,[dir=rtl] .offset-gt-sm-35{margin-left:auto;margin-right:35%}.flex-offset-gt-sm-40,.offset-gt-sm-40{margin-left:40%}[dir=rtl] .flex-offset-gt-sm-40,[dir=rtl] .offset-gt-sm-40{margin-left:auto;margin-right:40%}.flex-offset-gt-sm-45,.offset-gt-sm-45{margin-left:45%}[dir=rtl] .flex-offset-gt-sm-45,[dir=rtl] .offset-gt-sm-45{margin-left:auto;margin-right:45%}.flex-offset-gt-sm-50,.offset-gt-sm-50{margin-left:50%}[dir=rtl] .flex-offset-gt-sm-50,[dir=rtl] .offset-gt-sm-50{margin-left:auto;margin-right:50%}.flex-offset-gt-sm-55,.offset-gt-sm-55{margin-left:55%}[dir=rtl] .flex-offset-gt-sm-55,[dir=rtl] .offset-gt-sm-55{margin-left:auto;margin-right:55%}.flex-offset-gt-sm-60,.offset-gt-sm-60{margin-left:60%}[dir=rtl] .flex-offset-gt-sm-60,[dir=rtl] .offset-gt-sm-60{margin-left:auto;margin-right:60%}.flex-offset-gt-sm-65,.offset-gt-sm-65{margin-left:65%}[dir=rtl] .flex-offset-gt-sm-65,[dir=rtl] .offset-gt-sm-65{margin-left:auto;margin-right:65%}.flex-offset-gt-sm-70,.offset-gt-sm-70{margin-left:70%}[dir=rtl] .flex-offset-gt-sm-70,[dir=rtl] .offset-gt-sm-70{margin-left:auto;margin-right:70%}.flex-offset-gt-sm-75,.offset-gt-sm-75{margin-left:75%}[dir=rtl] .flex-offset-gt-sm-75,[dir=rtl] .offset-gt-sm-75{margin-left:auto;margin-right:75%}.flex-offset-gt-sm-80,.offset-gt-sm-80{margin-left:80%}[dir=rtl] .flex-offset-gt-sm-80,[dir=rtl] .offset-gt-sm-80{margin-left:auto;margin-right:80%}.flex-offset-gt-sm-85,.offset-gt-sm-85{margin-left:85%}[dir=rtl] .flex-offset-gt-sm-85,[dir=rtl] .offset-gt-sm-85{margin-left:auto;margin-right:85%}.flex-offset-gt-sm-90,.offset-gt-sm-90{margin-left:90%}[dir=rtl] .flex-offset-gt-sm-90,[dir=rtl] .offset-gt-sm-90{margin-left:auto;margin-right:90%}.flex-offset-gt-sm-95,.offset-gt-sm-95{margin-left:95%}[dir=rtl] .flex-offset-gt-sm-95,[dir=rtl] .offset-gt-sm-95{margin-left:auto;margin-right:95%}.flex-offset-gt-sm-33,.offset-gt-sm-33{margin-left:calc(100% / 3)}.flex-offset-gt-sm-66,.offset-gt-sm-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-gt-sm-66,[dir=rtl] .offset-gt-sm-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-gt-sm,.layout-align-gt-sm-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-gt-sm-start,.layout-align-gt-sm-start-center,.layout-align-gt-sm-start-end,.layout-align-gt-sm-start-start,.layout-align-gt-sm-start-stretch{justify-content:flex-start}.layout-align-gt-sm-center,.layout-align-gt-sm-center-center,.layout-align-gt-sm-center-end,.layout-align-gt-sm-center-start,.layout-align-gt-sm-center-stretch{justify-content:center}.layout-align-gt-sm-end,.layout-align-gt-sm-end-center,.layout-align-gt-sm-end-end,.layout-align-gt-sm-end-start,.layout-align-gt-sm-end-stretch{justify-content:flex-end}.layout-align-gt-sm-space-around,.layout-align-gt-sm-space-around-center,.layout-align-gt-sm-space-around-end,.layout-align-gt-sm-space-around-start,.layout-align-gt-sm-space-around-stretch{justify-content:space-around}.layout-align-gt-sm-space-between,.layout-align-gt-sm-space-between-center,.layout-align-gt-sm-space-between-end,.layout-align-gt-sm-space-between-start,.layout-align-gt-sm-space-between-stretch{justify-content:space-between}.layout-align-gt-sm-center-start,.layout-align-gt-sm-end-start,.layout-align-gt-sm-space-around-start,.layout-align-gt-sm-space-between-start,.layout-align-gt-sm-start-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-sm-center-center,.layout-align-gt-sm-end-center,.layout-align-gt-sm-space-around-center,.layout-align-gt-sm-space-between-center,.layout-align-gt-sm-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-sm-center-center>*,.layout-align-gt-sm-end-center>*,.layout-align-gt-sm-space-around-center>*,.layout-align-gt-sm-space-between-center>*,.layout-align-gt-sm-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-sm-center-end,.layout-align-gt-sm-end-end,.layout-align-gt-sm-space-around-end,.layout-align-gt-sm-space-between-end,.layout-align-gt-sm-start-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-sm-center-stretch,.layout-align-gt-sm-end-stretch,.layout-align-gt-sm-space-around-stretch,.layout-align-gt-sm-space-between-stretch,.layout-align-gt-sm-start-stretch{align-items:stretch;align-content:stretch}.flex-gt-sm{flex:1;box-sizing:border-box}.flex-gt-sm-grow{flex:1 1 100%;box-sizing:border-box}.flex-gt-sm-initial{flex:0 1 auto;box-sizing:border-box}.flex-gt-sm-auto{flex:1 1 auto;box-sizing:border-box}.flex-gt-sm-none{flex:0 0 auto;box-sizing:border-box}.flex-gt-sm-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-gt-sm-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-gt-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-sm-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-sm-column>.flex-gt-sm-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-gt-sm-row>.flex{min-width:0}.layout-gt-sm-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-column>.flex{min-height:0}.layout-gt-sm,.layout-gt-sm-column,.layout-gt-sm-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-gt-sm-column{flex-direction:column}.layout-gt-sm-row{flex-direction:row}}@media (min-width:960px) and (max-width:1279px){.hide-gt-sm:not(.show-gt-xs):not(.show-gt-sm):not(.show-md):not(.show),.hide-gt-xs:not(.show-gt-xs):not(.show-gt-sm):not(.show-md):not(.show),.hide:not(.show-gt-xs):not(.show-gt-sm):not(.show-md):not(.show){display:none}.hide-md:not(.show-md):not(.show-gt-sm):not(.show-gt-xs):not(.show){display:none}.flex-order-md--20{order:-20}.flex-order-md--19{order:-19}.flex-order-md--18{order:-18}.flex-order-md--17{order:-17}.flex-order-md--16{order:-16}.flex-order-md--15{order:-15}.flex-order-md--14{order:-14}.flex-order-md--13{order:-13}.flex-order-md--12{order:-12}.flex-order-md--11{order:-11}.flex-order-md--10{order:-10}.flex-order-md--9{order:-9}.flex-order-md--8{order:-8}.flex-order-md--7{order:-7}.flex-order-md--6{order:-6}.flex-order-md--5{order:-5}.flex-order-md--4{order:-4}.flex-order-md--3{order:-3}.flex-order-md--2{order:-2}.flex-order-md--1{order:-1}.flex-order-md-0{order:0}.flex-order-md-1{order:1}.flex-order-md-2{order:2}.flex-order-md-3{order:3}.flex-order-md-4{order:4}.flex-order-md-5{order:5}.flex-order-md-6{order:6}.flex-order-md-7{order:7}.flex-order-md-8{order:8}.flex-order-md-9{order:9}.flex-order-md-10{order:10}.flex-order-md-11{order:11}.flex-order-md-12{order:12}.flex-order-md-13{order:13}.flex-order-md-14{order:14}.flex-order-md-15{order:15}.flex-order-md-16{order:16}.flex-order-md-17{order:17}.flex-order-md-18{order:18}.flex-order-md-19{order:19}.flex-order-md-20{order:20}.flex-offset-md-0,.offset-md-0{margin-left:0}[dir=rtl] .flex-offset-md-0,[dir=rtl] .offset-md-0{margin-left:auto;margin-right:0}.flex-offset-md-5,.offset-md-5{margin-left:5%}[dir=rtl] .flex-offset-md-5,[dir=rtl] .offset-md-5{margin-left:auto;margin-right:5%}.flex-offset-md-10,.offset-md-10{margin-left:10%}[dir=rtl] .flex-offset-md-10,[dir=rtl] .offset-md-10{margin-left:auto;margin-right:10%}.flex-offset-md-15,.offset-md-15{margin-left:15%}[dir=rtl] .flex-offset-md-15,[dir=rtl] .offset-md-15{margin-left:auto;margin-right:15%}.flex-offset-md-20,.offset-md-20{margin-left:20%}[dir=rtl] .flex-offset-md-20,[dir=rtl] .offset-md-20{margin-left:auto;margin-right:20%}.flex-offset-md-25,.offset-md-25{margin-left:25%}[dir=rtl] .flex-offset-md-25,[dir=rtl] .offset-md-25{margin-left:auto;margin-right:25%}.flex-offset-md-30,.offset-md-30{margin-left:30%}[dir=rtl] .flex-offset-md-30,[dir=rtl] .offset-md-30{margin-left:auto;margin-right:30%}.flex-offset-md-35,.offset-md-35{margin-left:35%}[dir=rtl] .flex-offset-md-35,[dir=rtl] .offset-md-35{margin-left:auto;margin-right:35%}.flex-offset-md-40,.offset-md-40{margin-left:40%}[dir=rtl] .flex-offset-md-40,[dir=rtl] .offset-md-40{margin-left:auto;margin-right:40%}.flex-offset-md-45,.offset-md-45{margin-left:45%}[dir=rtl] .flex-offset-md-45,[dir=rtl] .offset-md-45{margin-left:auto;margin-right:45%}.flex-offset-md-50,.offset-md-50{margin-left:50%}[dir=rtl] .flex-offset-md-50,[dir=rtl] .offset-md-50{margin-left:auto;margin-right:50%}.flex-offset-md-55,.offset-md-55{margin-left:55%}[dir=rtl] .flex-offset-md-55,[dir=rtl] .offset-md-55{margin-left:auto;margin-right:55%}.flex-offset-md-60,.offset-md-60{margin-left:60%}[dir=rtl] .flex-offset-md-60,[dir=rtl] .offset-md-60{margin-left:auto;margin-right:60%}.flex-offset-md-65,.offset-md-65{margin-left:65%}[dir=rtl] .flex-offset-md-65,[dir=rtl] .offset-md-65{margin-left:auto;margin-right:65%}.flex-offset-md-70,.offset-md-70{margin-left:70%}[dir=rtl] .flex-offset-md-70,[dir=rtl] .offset-md-70{margin-left:auto;margin-right:70%}.flex-offset-md-75,.offset-md-75{margin-left:75%}[dir=rtl] .flex-offset-md-75,[dir=rtl] .offset-md-75{margin-left:auto;margin-right:75%}.flex-offset-md-80,.offset-md-80{margin-left:80%}[dir=rtl] .flex-offset-md-80,[dir=rtl] .offset-md-80{margin-left:auto;margin-right:80%}.flex-offset-md-85,.offset-md-85{margin-left:85%}[dir=rtl] .flex-offset-md-85,[dir=rtl] .offset-md-85{margin-left:auto;margin-right:85%}.flex-offset-md-90,.offset-md-90{margin-left:90%}[dir=rtl] .flex-offset-md-90,[dir=rtl] .offset-md-90{margin-left:auto;margin-right:90%}.flex-offset-md-95,.offset-md-95{margin-left:95%}[dir=rtl] .flex-offset-md-95,[dir=rtl] .offset-md-95{margin-left:auto;margin-right:95%}.flex-offset-md-33,.offset-md-33{margin-left:calc(100% / 3)}.flex-offset-md-66,.offset-md-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-md-66,[dir=rtl] .offset-md-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-md,.layout-align-md-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-md-start,.layout-align-md-start-center,.layout-align-md-start-end,.layout-align-md-start-start,.layout-align-md-start-stretch{justify-content:flex-start}.layout-align-md-center,.layout-align-md-center-center,.layout-align-md-center-end,.layout-align-md-center-start,.layout-align-md-center-stretch{justify-content:center}.layout-align-md-end,.layout-align-md-end-center,.layout-align-md-end-end,.layout-align-md-end-start,.layout-align-md-end-stretch{justify-content:flex-end}.layout-align-md-space-around,.layout-align-md-space-around-center,.layout-align-md-space-around-end,.layout-align-md-space-around-start,.layout-align-md-space-around-stretch{justify-content:space-around}.layout-align-md-space-between,.layout-align-md-space-between-center,.layout-align-md-space-between-end,.layout-align-md-space-between-start,.layout-align-md-space-between-stretch{justify-content:space-between}.layout-align-md-center-start,.layout-align-md-end-start,.layout-align-md-space-around-start,.layout-align-md-space-between-start,.layout-align-md-start-start{align-items:flex-start;align-content:flex-start}.layout-align-md-center-center,.layout-align-md-end-center,.layout-align-md-space-around-center,.layout-align-md-space-between-center,.layout-align-md-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-md-center-center>*,.layout-align-md-end-center>*,.layout-align-md-space-around-center>*,.layout-align-md-space-between-center>*,.layout-align-md-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-md-center-end,.layout-align-md-end-end,.layout-align-md-space-around-end,.layout-align-md-space-between-end,.layout-align-md-start-end{align-items:flex-end;align-content:flex-end}.layout-align-md-center-stretch,.layout-align-md-end-stretch,.layout-align-md-space-around-stretch,.layout-align-md-space-between-stretch,.layout-align-md-start-stretch{align-items:stretch;align-content:stretch}.flex-md{flex:1;box-sizing:border-box}.flex-md-grow{flex:1 1 100%;box-sizing:border-box}.flex-md-initial{flex:0 1 auto;box-sizing:border-box}.flex-md-auto{flex:1 1 auto;box-sizing:border-box}.flex-md-none{flex:0 0 auto;box-sizing:border-box}.flex-md-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-md-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-md-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-md-column>.flex-md-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-md-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-md-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-md-row>.flex{min-width:0}.layout-md-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-md-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-column>.flex{min-height:0}.layout-md,.layout-md-column,.layout-md-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-md-column{flex-direction:column}.layout-md-row{flex-direction:row}}@media (min-width:1280px){.flex-order-gt-md--20{order:-20}.flex-order-gt-md--19{order:-19}.flex-order-gt-md--18{order:-18}.flex-order-gt-md--17{order:-17}.flex-order-gt-md--16{order:-16}.flex-order-gt-md--15{order:-15}.flex-order-gt-md--14{order:-14}.flex-order-gt-md--13{order:-13}.flex-order-gt-md--12{order:-12}.flex-order-gt-md--11{order:-11}.flex-order-gt-md--10{order:-10}.flex-order-gt-md--9{order:-9}.flex-order-gt-md--8{order:-8}.flex-order-gt-md--7{order:-7}.flex-order-gt-md--6{order:-6}.flex-order-gt-md--5{order:-5}.flex-order-gt-md--4{order:-4}.flex-order-gt-md--3{order:-3}.flex-order-gt-md--2{order:-2}.flex-order-gt-md--1{order:-1}.flex-order-gt-md-0{order:0}.flex-order-gt-md-1{order:1}.flex-order-gt-md-2{order:2}.flex-order-gt-md-3{order:3}.flex-order-gt-md-4{order:4}.flex-order-gt-md-5{order:5}.flex-order-gt-md-6{order:6}.flex-order-gt-md-7{order:7}.flex-order-gt-md-8{order:8}.flex-order-gt-md-9{order:9}.flex-order-gt-md-10{order:10}.flex-order-gt-md-11{order:11}.flex-order-gt-md-12{order:12}.flex-order-gt-md-13{order:13}.flex-order-gt-md-14{order:14}.flex-order-gt-md-15{order:15}.flex-order-gt-md-16{order:16}.flex-order-gt-md-17{order:17}.flex-order-gt-md-18{order:18}.flex-order-gt-md-19{order:19}.flex-order-gt-md-20{order:20}.flex-offset-gt-md-0,.offset-gt-md-0{margin-left:0}[dir=rtl] .flex-offset-gt-md-0,[dir=rtl] .offset-gt-md-0{margin-left:auto;margin-right:0}.flex-offset-gt-md-5,.offset-gt-md-5{margin-left:5%}[dir=rtl] .flex-offset-gt-md-5,[dir=rtl] .offset-gt-md-5{margin-left:auto;margin-right:5%}.flex-offset-gt-md-10,.offset-gt-md-10{margin-left:10%}[dir=rtl] .flex-offset-gt-md-10,[dir=rtl] .offset-gt-md-10{margin-left:auto;margin-right:10%}.flex-offset-gt-md-15,.offset-gt-md-15{margin-left:15%}[dir=rtl] .flex-offset-gt-md-15,[dir=rtl] .offset-gt-md-15{margin-left:auto;margin-right:15%}.flex-offset-gt-md-20,.offset-gt-md-20{margin-left:20%}[dir=rtl] .flex-offset-gt-md-20,[dir=rtl] .offset-gt-md-20{margin-left:auto;margin-right:20%}.flex-offset-gt-md-25,.offset-gt-md-25{margin-left:25%}[dir=rtl] .flex-offset-gt-md-25,[dir=rtl] .offset-gt-md-25{margin-left:auto;margin-right:25%}.flex-offset-gt-md-30,.offset-gt-md-30{margin-left:30%}[dir=rtl] .flex-offset-gt-md-30,[dir=rtl] .offset-gt-md-30{margin-left:auto;margin-right:30%}.flex-offset-gt-md-35,.offset-gt-md-35{margin-left:35%}[dir=rtl] .flex-offset-gt-md-35,[dir=rtl] .offset-gt-md-35{margin-left:auto;margin-right:35%}.flex-offset-gt-md-40,.offset-gt-md-40{margin-left:40%}[dir=rtl] .flex-offset-gt-md-40,[dir=rtl] .offset-gt-md-40{margin-left:auto;margin-right:40%}.flex-offset-gt-md-45,.offset-gt-md-45{margin-left:45%}[dir=rtl] .flex-offset-gt-md-45,[dir=rtl] .offset-gt-md-45{margin-left:auto;margin-right:45%}.flex-offset-gt-md-50,.offset-gt-md-50{margin-left:50%}[dir=rtl] .flex-offset-gt-md-50,[dir=rtl] .offset-gt-md-50{margin-left:auto;margin-right:50%}.flex-offset-gt-md-55,.offset-gt-md-55{margin-left:55%}[dir=rtl] .flex-offset-gt-md-55,[dir=rtl] .offset-gt-md-55{margin-left:auto;margin-right:55%}.flex-offset-gt-md-60,.offset-gt-md-60{margin-left:60%}[dir=rtl] .flex-offset-gt-md-60,[dir=rtl] .offset-gt-md-60{margin-left:auto;margin-right:60%}.flex-offset-gt-md-65,.offset-gt-md-65{margin-left:65%}[dir=rtl] .flex-offset-gt-md-65,[dir=rtl] .offset-gt-md-65{margin-left:auto;margin-right:65%}.flex-offset-gt-md-70,.offset-gt-md-70{margin-left:70%}[dir=rtl] .flex-offset-gt-md-70,[dir=rtl] .offset-gt-md-70{margin-left:auto;margin-right:70%}.flex-offset-gt-md-75,.offset-gt-md-75{margin-left:75%}[dir=rtl] .flex-offset-gt-md-75,[dir=rtl] .offset-gt-md-75{margin-left:auto;margin-right:75%}.flex-offset-gt-md-80,.offset-gt-md-80{margin-left:80%}[dir=rtl] .flex-offset-gt-md-80,[dir=rtl] .offset-gt-md-80{margin-left:auto;margin-right:80%}.flex-offset-gt-md-85,.offset-gt-md-85{margin-left:85%}[dir=rtl] .flex-offset-gt-md-85,[dir=rtl] .offset-gt-md-85{margin-left:auto;margin-right:85%}.flex-offset-gt-md-90,.offset-gt-md-90{margin-left:90%}[dir=rtl] .flex-offset-gt-md-90,[dir=rtl] .offset-gt-md-90{margin-left:auto;margin-right:90%}.flex-offset-gt-md-95,.offset-gt-md-95{margin-left:95%}[dir=rtl] .flex-offset-gt-md-95,[dir=rtl] .offset-gt-md-95{margin-left:auto;margin-right:95%}.flex-offset-gt-md-33,.offset-gt-md-33{margin-left:calc(100% / 3)}.flex-offset-gt-md-66,.offset-gt-md-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-gt-md-66,[dir=rtl] .offset-gt-md-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-gt-md,.layout-align-gt-md-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-gt-md-start,.layout-align-gt-md-start-center,.layout-align-gt-md-start-end,.layout-align-gt-md-start-start,.layout-align-gt-md-start-stretch{justify-content:flex-start}.layout-align-gt-md-center,.layout-align-gt-md-center-center,.layout-align-gt-md-center-end,.layout-align-gt-md-center-start,.layout-align-gt-md-center-stretch{justify-content:center}.layout-align-gt-md-end,.layout-align-gt-md-end-center,.layout-align-gt-md-end-end,.layout-align-gt-md-end-start,.layout-align-gt-md-end-stretch{justify-content:flex-end}.layout-align-gt-md-space-around,.layout-align-gt-md-space-around-center,.layout-align-gt-md-space-around-end,.layout-align-gt-md-space-around-start,.layout-align-gt-md-space-around-stretch{justify-content:space-around}.layout-align-gt-md-space-between,.layout-align-gt-md-space-between-center,.layout-align-gt-md-space-between-end,.layout-align-gt-md-space-between-start,.layout-align-gt-md-space-between-stretch{justify-content:space-between}.layout-align-gt-md-center-start,.layout-align-gt-md-end-start,.layout-align-gt-md-space-around-start,.layout-align-gt-md-space-between-start,.layout-align-gt-md-start-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-md-center-center,.layout-align-gt-md-end-center,.layout-align-gt-md-space-around-center,.layout-align-gt-md-space-between-center,.layout-align-gt-md-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-md-center-center>*,.layout-align-gt-md-end-center>*,.layout-align-gt-md-space-around-center>*,.layout-align-gt-md-space-between-center>*,.layout-align-gt-md-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-md-center-end,.layout-align-gt-md-end-end,.layout-align-gt-md-space-around-end,.layout-align-gt-md-space-between-end,.layout-align-gt-md-start-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-md-center-stretch,.layout-align-gt-md-end-stretch,.layout-align-gt-md-space-around-stretch,.layout-align-gt-md-space-between-stretch,.layout-align-gt-md-start-stretch{align-items:stretch;align-content:stretch}.flex-gt-md{flex:1;box-sizing:border-box}.flex-gt-md-grow{flex:1 1 100%;box-sizing:border-box}.flex-gt-md-initial{flex:0 1 auto;box-sizing:border-box}.flex-gt-md-auto{flex:1 1 auto;box-sizing:border-box}.flex-gt-md-none{flex:0 0 auto;box-sizing:border-box}.flex-gt-md-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-gt-md-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-gt-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-md-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-md-column>.flex-gt-md-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-gt-md-row>.flex{min-width:0}.layout-gt-md-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-column>.flex{min-height:0}.layout-gt-md,.layout-gt-md-column,.layout-gt-md-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-gt-md-column{flex-direction:column}.layout-gt-md-row{flex-direction:row}}@media (min-width:1280px) and (max-width:1919px){.hide-gt-md:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show),.hide-gt-sm:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show),.hide-gt-xs:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show),.hide:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show){display:none}.hide-lg:not(.show-lg):not(.show-gt-md):not(.show-gt-sm):not(.show-gt-xs):not(.show){display:none}.flex-order-lg--20{order:-20}.flex-order-lg--19{order:-19}.flex-order-lg--18{order:-18}.flex-order-lg--17{order:-17}.flex-order-lg--16{order:-16}.flex-order-lg--15{order:-15}.flex-order-lg--14{order:-14}.flex-order-lg--13{order:-13}.flex-order-lg--12{order:-12}.flex-order-lg--11{order:-11}.flex-order-lg--10{order:-10}.flex-order-lg--9{order:-9}.flex-order-lg--8{order:-8}.flex-order-lg--7{order:-7}.flex-order-lg--6{order:-6}.flex-order-lg--5{order:-5}.flex-order-lg--4{order:-4}.flex-order-lg--3{order:-3}.flex-order-lg--2{order:-2}.flex-order-lg--1{order:-1}.flex-order-lg-0{order:0}.flex-order-lg-1{order:1}.flex-order-lg-2{order:2}.flex-order-lg-3{order:3}.flex-order-lg-4{order:4}.flex-order-lg-5{order:5}.flex-order-lg-6{order:6}.flex-order-lg-7{order:7}.flex-order-lg-8{order:8}.flex-order-lg-9{order:9}.flex-order-lg-10{order:10}.flex-order-lg-11{order:11}.flex-order-lg-12{order:12}.flex-order-lg-13{order:13}.flex-order-lg-14{order:14}.flex-order-lg-15{order:15}.flex-order-lg-16{order:16}.flex-order-lg-17{order:17}.flex-order-lg-18{order:18}.flex-order-lg-19{order:19}.flex-order-lg-20{order:20}.flex-offset-lg-0,.offset-lg-0{margin-left:0}[dir=rtl] .flex-offset-lg-0,[dir=rtl] .offset-lg-0{margin-left:auto;margin-right:0}.flex-offset-lg-5,.offset-lg-5{margin-left:5%}[dir=rtl] .flex-offset-lg-5,[dir=rtl] .offset-lg-5{margin-left:auto;margin-right:5%}.flex-offset-lg-10,.offset-lg-10{margin-left:10%}[dir=rtl] .flex-offset-lg-10,[dir=rtl] .offset-lg-10{margin-left:auto;margin-right:10%}.flex-offset-lg-15,.offset-lg-15{margin-left:15%}[dir=rtl] .flex-offset-lg-15,[dir=rtl] .offset-lg-15{margin-left:auto;margin-right:15%}.flex-offset-lg-20,.offset-lg-20{margin-left:20%}[dir=rtl] .flex-offset-lg-20,[dir=rtl] .offset-lg-20{margin-left:auto;margin-right:20%}.flex-offset-lg-25,.offset-lg-25{margin-left:25%}[dir=rtl] .flex-offset-lg-25,[dir=rtl] .offset-lg-25{margin-left:auto;margin-right:25%}.flex-offset-lg-30,.offset-lg-30{margin-left:30%}[dir=rtl] .flex-offset-lg-30,[dir=rtl] .offset-lg-30{margin-left:auto;margin-right:30%}.flex-offset-lg-35,.offset-lg-35{margin-left:35%}[dir=rtl] .flex-offset-lg-35,[dir=rtl] .offset-lg-35{margin-left:auto;margin-right:35%}.flex-offset-lg-40,.offset-lg-40{margin-left:40%}[dir=rtl] .flex-offset-lg-40,[dir=rtl] .offset-lg-40{margin-left:auto;margin-right:40%}.flex-offset-lg-45,.offset-lg-45{margin-left:45%}[dir=rtl] .flex-offset-lg-45,[dir=rtl] .offset-lg-45{margin-left:auto;margin-right:45%}.flex-offset-lg-50,.offset-lg-50{margin-left:50%}[dir=rtl] .flex-offset-lg-50,[dir=rtl] .offset-lg-50{margin-left:auto;margin-right:50%}.flex-offset-lg-55,.offset-lg-55{margin-left:55%}[dir=rtl] .flex-offset-lg-55,[dir=rtl] .offset-lg-55{margin-left:auto;margin-right:55%}.flex-offset-lg-60,.offset-lg-60{margin-left:60%}[dir=rtl] .flex-offset-lg-60,[dir=rtl] .offset-lg-60{margin-left:auto;margin-right:60%}.flex-offset-lg-65,.offset-lg-65{margin-left:65%}[dir=rtl] .flex-offset-lg-65,[dir=rtl] .offset-lg-65{margin-left:auto;margin-right:65%}.flex-offset-lg-70,.offset-lg-70{margin-left:70%}[dir=rtl] .flex-offset-lg-70,[dir=rtl] .offset-lg-70{margin-left:auto;margin-right:70%}.flex-offset-lg-75,.offset-lg-75{margin-left:75%}[dir=rtl] .flex-offset-lg-75,[dir=rtl] .offset-lg-75{margin-left:auto;margin-right:75%}.flex-offset-lg-80,.offset-lg-80{margin-left:80%}[dir=rtl] .flex-offset-lg-80,[dir=rtl] .offset-lg-80{margin-left:auto;margin-right:80%}.flex-offset-lg-85,.offset-lg-85{margin-left:85%}[dir=rtl] .flex-offset-lg-85,[dir=rtl] .offset-lg-85{margin-left:auto;margin-right:85%}.flex-offset-lg-90,.offset-lg-90{margin-left:90%}[dir=rtl] .flex-offset-lg-90,[dir=rtl] .offset-lg-90{margin-left:auto;margin-right:90%}.flex-offset-lg-95,.offset-lg-95{margin-left:95%}[dir=rtl] .flex-offset-lg-95,[dir=rtl] .offset-lg-95{margin-left:auto;margin-right:95%}.flex-offset-lg-33,.offset-lg-33{margin-left:calc(100% / 3)}.flex-offset-lg-66,.offset-lg-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-lg-66,[dir=rtl] .offset-lg-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-lg,.layout-align-lg-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-lg-start,.layout-align-lg-start-center,.layout-align-lg-start-end,.layout-align-lg-start-start,.layout-align-lg-start-stretch{justify-content:flex-start}.layout-align-lg-center,.layout-align-lg-center-center,.layout-align-lg-center-end,.layout-align-lg-center-start,.layout-align-lg-center-stretch{justify-content:center}.layout-align-lg-end,.layout-align-lg-end-center,.layout-align-lg-end-end,.layout-align-lg-end-start,.layout-align-lg-end-stretch{justify-content:flex-end}.layout-align-lg-space-around,.layout-align-lg-space-around-center,.layout-align-lg-space-around-end,.layout-align-lg-space-around-start,.layout-align-lg-space-around-stretch{justify-content:space-around}.layout-align-lg-space-between,.layout-align-lg-space-between-center,.layout-align-lg-space-between-end,.layout-align-lg-space-between-start,.layout-align-lg-space-between-stretch{justify-content:space-between}.layout-align-lg-center-start,.layout-align-lg-end-start,.layout-align-lg-space-around-start,.layout-align-lg-space-between-start,.layout-align-lg-start-start{align-items:flex-start;align-content:flex-start}.layout-align-lg-center-center,.layout-align-lg-end-center,.layout-align-lg-space-around-center,.layout-align-lg-space-between-center,.layout-align-lg-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-lg-center-center>*,.layout-align-lg-end-center>*,.layout-align-lg-space-around-center>*,.layout-align-lg-space-between-center>*,.layout-align-lg-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-lg-center-end,.layout-align-lg-end-end,.layout-align-lg-space-around-end,.layout-align-lg-space-between-end,.layout-align-lg-start-end{align-items:flex-end;align-content:flex-end}.layout-align-lg-center-stretch,.layout-align-lg-end-stretch,.layout-align-lg-space-around-stretch,.layout-align-lg-space-between-stretch,.layout-align-lg-start-stretch{align-items:stretch;align-content:stretch}.flex-lg{flex:1;box-sizing:border-box}.flex-lg-grow{flex:1 1 100%;box-sizing:border-box}.flex-lg-initial{flex:0 1 auto;box-sizing:border-box}.flex-lg-auto{flex:1 1 auto;box-sizing:border-box}.flex-lg-none{flex:0 0 auto;box-sizing:border-box}.flex-lg-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-lg-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-lg-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-lg-column>.flex-lg-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-lg-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-lg-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-lg-row>.flex{min-width:0}.layout-lg-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-lg-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-column>.flex{min-height:0}.layout-lg,.layout-lg-column,.layout-lg-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-lg-column{flex-direction:column}.layout-lg-row{flex-direction:row}}@media (min-width:1920px){.flex-order-gt-lg--20{order:-20}.flex-order-gt-lg--19{order:-19}.flex-order-gt-lg--18{order:-18}.flex-order-gt-lg--17{order:-17}.flex-order-gt-lg--16{order:-16}.flex-order-gt-lg--15{order:-15}.flex-order-gt-lg--14{order:-14}.flex-order-gt-lg--13{order:-13}.flex-order-gt-lg--12{order:-12}.flex-order-gt-lg--11{order:-11}.flex-order-gt-lg--10{order:-10}.flex-order-gt-lg--9{order:-9}.flex-order-gt-lg--8{order:-8}.flex-order-gt-lg--7{order:-7}.flex-order-gt-lg--6{order:-6}.flex-order-gt-lg--5{order:-5}.flex-order-gt-lg--4{order:-4}.flex-order-gt-lg--3{order:-3}.flex-order-gt-lg--2{order:-2}.flex-order-gt-lg--1{order:-1}.flex-order-gt-lg-0{order:0}.flex-order-gt-lg-1{order:1}.flex-order-gt-lg-2{order:2}.flex-order-gt-lg-3{order:3}.flex-order-gt-lg-4{order:4}.flex-order-gt-lg-5{order:5}.flex-order-gt-lg-6{order:6}.flex-order-gt-lg-7{order:7}.flex-order-gt-lg-8{order:8}.flex-order-gt-lg-9{order:9}.flex-order-gt-lg-10{order:10}.flex-order-gt-lg-11{order:11}.flex-order-gt-lg-12{order:12}.flex-order-gt-lg-13{order:13}.flex-order-gt-lg-14{order:14}.flex-order-gt-lg-15{order:15}.flex-order-gt-lg-16{order:16}.flex-order-gt-lg-17{order:17}.flex-order-gt-lg-18{order:18}.flex-order-gt-lg-19{order:19}.flex-order-gt-lg-20{order:20}.flex-offset-gt-lg-0,.offset-gt-lg-0{margin-left:0}[dir=rtl] .flex-offset-gt-lg-0,[dir=rtl] .offset-gt-lg-0{margin-left:auto;margin-right:0}.flex-offset-gt-lg-5,.offset-gt-lg-5{margin-left:5%}[dir=rtl] .flex-offset-gt-lg-5,[dir=rtl] .offset-gt-lg-5{margin-left:auto;margin-right:5%}.flex-offset-gt-lg-10,.offset-gt-lg-10{margin-left:10%}[dir=rtl] .flex-offset-gt-lg-10,[dir=rtl] .offset-gt-lg-10{margin-left:auto;margin-right:10%}.flex-offset-gt-lg-15,.offset-gt-lg-15{margin-left:15%}[dir=rtl] .flex-offset-gt-lg-15,[dir=rtl] .offset-gt-lg-15{margin-left:auto;margin-right:15%}.flex-offset-gt-lg-20,.offset-gt-lg-20{margin-left:20%}[dir=rtl] .flex-offset-gt-lg-20,[dir=rtl] .offset-gt-lg-20{margin-left:auto;margin-right:20%}.flex-offset-gt-lg-25,.offset-gt-lg-25{margin-left:25%}[dir=rtl] .flex-offset-gt-lg-25,[dir=rtl] .offset-gt-lg-25{margin-left:auto;margin-right:25%}.flex-offset-gt-lg-30,.offset-gt-lg-30{margin-left:30%}[dir=rtl] .flex-offset-gt-lg-30,[dir=rtl] .offset-gt-lg-30{margin-left:auto;margin-right:30%}.flex-offset-gt-lg-35,.offset-gt-lg-35{margin-left:35%}[dir=rtl] .flex-offset-gt-lg-35,[dir=rtl] .offset-gt-lg-35{margin-left:auto;margin-right:35%}.flex-offset-gt-lg-40,.offset-gt-lg-40{margin-left:40%}[dir=rtl] .flex-offset-gt-lg-40,[dir=rtl] .offset-gt-lg-40{margin-left:auto;margin-right:40%}.flex-offset-gt-lg-45,.offset-gt-lg-45{margin-left:45%}[dir=rtl] .flex-offset-gt-lg-45,[dir=rtl] .offset-gt-lg-45{margin-left:auto;margin-right:45%}.flex-offset-gt-lg-50,.offset-gt-lg-50{margin-left:50%}[dir=rtl] .flex-offset-gt-lg-50,[dir=rtl] .offset-gt-lg-50{margin-left:auto;margin-right:50%}.flex-offset-gt-lg-55,.offset-gt-lg-55{margin-left:55%}[dir=rtl] .flex-offset-gt-lg-55,[dir=rtl] .offset-gt-lg-55{margin-left:auto;margin-right:55%}.flex-offset-gt-lg-60,.offset-gt-lg-60{margin-left:60%}[dir=rtl] .flex-offset-gt-lg-60,[dir=rtl] .offset-gt-lg-60{margin-left:auto;margin-right:60%}.flex-offset-gt-lg-65,.offset-gt-lg-65{margin-left:65%}[dir=rtl] .flex-offset-gt-lg-65,[dir=rtl] .offset-gt-lg-65{margin-left:auto;margin-right:65%}.flex-offset-gt-lg-70,.offset-gt-lg-70{margin-left:70%}[dir=rtl] .flex-offset-gt-lg-70,[dir=rtl] .offset-gt-lg-70{margin-left:auto;margin-right:70%}.flex-offset-gt-lg-75,.offset-gt-lg-75{margin-left:75%}[dir=rtl] .flex-offset-gt-lg-75,[dir=rtl] .offset-gt-lg-75{margin-left:auto;margin-right:75%}.flex-offset-gt-lg-80,.offset-gt-lg-80{margin-left:80%}[dir=rtl] .flex-offset-gt-lg-80,[dir=rtl] .offset-gt-lg-80{margin-left:auto;margin-right:80%}.flex-offset-gt-lg-85,.offset-gt-lg-85{margin-left:85%}[dir=rtl] .flex-offset-gt-lg-85,[dir=rtl] .offset-gt-lg-85{margin-left:auto;margin-right:85%}.flex-offset-gt-lg-90,.offset-gt-lg-90{margin-left:90%}[dir=rtl] .flex-offset-gt-lg-90,[dir=rtl] .offset-gt-lg-90{margin-left:auto;margin-right:90%}.flex-offset-gt-lg-95,.offset-gt-lg-95{margin-left:95%}[dir=rtl] .flex-offset-gt-lg-95,[dir=rtl] .offset-gt-lg-95{margin-left:auto;margin-right:95%}.flex-offset-gt-lg-33,.offset-gt-lg-33{margin-left:calc(100% / 3)}.flex-offset-gt-lg-66,.offset-gt-lg-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-gt-lg-66,[dir=rtl] .offset-gt-lg-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-gt-lg,.layout-align-gt-lg-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-gt-lg-start,.layout-align-gt-lg-start-center,.layout-align-gt-lg-start-end,.layout-align-gt-lg-start-start,.layout-align-gt-lg-start-stretch{justify-content:flex-start}.layout-align-gt-lg-center,.layout-align-gt-lg-center-center,.layout-align-gt-lg-center-end,.layout-align-gt-lg-center-start,.layout-align-gt-lg-center-stretch{justify-content:center}.layout-align-gt-lg-end,.layout-align-gt-lg-end-center,.layout-align-gt-lg-end-end,.layout-align-gt-lg-end-start,.layout-align-gt-lg-end-stretch{justify-content:flex-end}.layout-align-gt-lg-space-around,.layout-align-gt-lg-space-around-center,.layout-align-gt-lg-space-around-end,.layout-align-gt-lg-space-around-start,.layout-align-gt-lg-space-around-stretch{justify-content:space-around}.layout-align-gt-lg-space-between,.layout-align-gt-lg-space-between-center,.layout-align-gt-lg-space-between-end,.layout-align-gt-lg-space-between-start,.layout-align-gt-lg-space-between-stretch{justify-content:space-between}.layout-align-gt-lg-center-start,.layout-align-gt-lg-end-start,.layout-align-gt-lg-space-around-start,.layout-align-gt-lg-space-between-start,.layout-align-gt-lg-start-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-lg-center-center,.layout-align-gt-lg-end-center,.layout-align-gt-lg-space-around-center,.layout-align-gt-lg-space-between-center,.layout-align-gt-lg-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-lg-center-center>*,.layout-align-gt-lg-end-center>*,.layout-align-gt-lg-space-around-center>*,.layout-align-gt-lg-space-between-center>*,.layout-align-gt-lg-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-lg-center-end,.layout-align-gt-lg-end-end,.layout-align-gt-lg-space-around-end,.layout-align-gt-lg-space-between-end,.layout-align-gt-lg-start-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-lg-center-stretch,.layout-align-gt-lg-end-stretch,.layout-align-gt-lg-space-around-stretch,.layout-align-gt-lg-space-between-stretch,.layout-align-gt-lg-start-stretch{align-items:stretch;align-content:stretch}.flex-gt-lg{flex:1;box-sizing:border-box}.flex-gt-lg-grow{flex:1 1 100%;box-sizing:border-box}.flex-gt-lg-initial{flex:0 1 auto;box-sizing:border-box}.flex-gt-lg-auto{flex:1 1 auto;box-sizing:border-box}.flex-gt-lg-none{flex:0 0 auto;box-sizing:border-box}.flex-gt-lg-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-gt-lg-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-gt-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-lg-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-lg-column>.flex-gt-lg-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-gt-lg-row>.flex{min-width:0}.layout-gt-lg-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-column>.flex{min-height:0}.layout-gt-lg,.layout-gt-lg-column,.layout-gt-lg-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-gt-lg-column{flex-direction:column}.layout-gt-lg-row{flex-direction:row}.flex-order-xl--20{order:-20}.flex-order-xl--19{order:-19}.flex-order-xl--18{order:-18}.flex-order-xl--17{order:-17}.flex-order-xl--16{order:-16}.flex-order-xl--15{order:-15}.flex-order-xl--14{order:-14}.flex-order-xl--13{order:-13}.flex-order-xl--12{order:-12}.flex-order-xl--11{order:-11}.flex-order-xl--10{order:-10}.flex-order-xl--9{order:-9}.flex-order-xl--8{order:-8}.flex-order-xl--7{order:-7}.flex-order-xl--6{order:-6}.flex-order-xl--5{order:-5}.flex-order-xl--4{order:-4}.flex-order-xl--3{order:-3}.flex-order-xl--2{order:-2}.flex-order-xl--1{order:-1}.flex-order-xl-0{order:0}.flex-order-xl-1{order:1}.flex-order-xl-2{order:2}.flex-order-xl-3{order:3}.flex-order-xl-4{order:4}.flex-order-xl-5{order:5}.flex-order-xl-6{order:6}.flex-order-xl-7{order:7}.flex-order-xl-8{order:8}.flex-order-xl-9{order:9}.flex-order-xl-10{order:10}.flex-order-xl-11{order:11}.flex-order-xl-12{order:12}.flex-order-xl-13{order:13}.flex-order-xl-14{order:14}.flex-order-xl-15{order:15}.flex-order-xl-16{order:16}.flex-order-xl-17{order:17}.flex-order-xl-18{order:18}.flex-order-xl-19{order:19}.flex-order-xl-20{order:20}.flex-offset-xl-0,.offset-xl-0{margin-left:0}[dir=rtl] .flex-offset-xl-0,[dir=rtl] .offset-xl-0{margin-left:auto;margin-right:0}.flex-offset-xl-5,.offset-xl-5{margin-left:5%}[dir=rtl] .flex-offset-xl-5,[dir=rtl] .offset-xl-5{margin-left:auto;margin-right:5%}.flex-offset-xl-10,.offset-xl-10{margin-left:10%}[dir=rtl] .flex-offset-xl-10,[dir=rtl] .offset-xl-10{margin-left:auto;margin-right:10%}.flex-offset-xl-15,.offset-xl-15{margin-left:15%}[dir=rtl] .flex-offset-xl-15,[dir=rtl] .offset-xl-15{margin-left:auto;margin-right:15%}.flex-offset-xl-20,.offset-xl-20{margin-left:20%}[dir=rtl] .flex-offset-xl-20,[dir=rtl] .offset-xl-20{margin-left:auto;margin-right:20%}.flex-offset-xl-25,.offset-xl-25{margin-left:25%}[dir=rtl] .flex-offset-xl-25,[dir=rtl] .offset-xl-25{margin-left:auto;margin-right:25%}.flex-offset-xl-30,.offset-xl-30{margin-left:30%}[dir=rtl] .flex-offset-xl-30,[dir=rtl] .offset-xl-30{margin-left:auto;margin-right:30%}.flex-offset-xl-35,.offset-xl-35{margin-left:35%}[dir=rtl] .flex-offset-xl-35,[dir=rtl] .offset-xl-35{margin-left:auto;margin-right:35%}.flex-offset-xl-40,.offset-xl-40{margin-left:40%}[dir=rtl] .flex-offset-xl-40,[dir=rtl] .offset-xl-40{margin-left:auto;margin-right:40%}.flex-offset-xl-45,.offset-xl-45{margin-left:45%}[dir=rtl] .flex-offset-xl-45,[dir=rtl] .offset-xl-45{margin-left:auto;margin-right:45%}.flex-offset-xl-50,.offset-xl-50{margin-left:50%}[dir=rtl] .flex-offset-xl-50,[dir=rtl] .offset-xl-50{margin-left:auto;margin-right:50%}.flex-offset-xl-55,.offset-xl-55{margin-left:55%}[dir=rtl] .flex-offset-xl-55,[dir=rtl] .offset-xl-55{margin-left:auto;margin-right:55%}.flex-offset-xl-60,.offset-xl-60{margin-left:60%}[dir=rtl] .flex-offset-xl-60,[dir=rtl] .offset-xl-60{margin-left:auto;margin-right:60%}.flex-offset-xl-65,.offset-xl-65{margin-left:65%}[dir=rtl] .flex-offset-xl-65,[dir=rtl] .offset-xl-65{margin-left:auto;margin-right:65%}.flex-offset-xl-70,.offset-xl-70{margin-left:70%}[dir=rtl] .flex-offset-xl-70,[dir=rtl] .offset-xl-70{margin-left:auto;margin-right:70%}.flex-offset-xl-75,.offset-xl-75{margin-left:75%}[dir=rtl] .flex-offset-xl-75,[dir=rtl] .offset-xl-75{margin-left:auto;margin-right:75%}.flex-offset-xl-80,.offset-xl-80{margin-left:80%}[dir=rtl] .flex-offset-xl-80,[dir=rtl] .offset-xl-80{margin-left:auto;margin-right:80%}.flex-offset-xl-85,.offset-xl-85{margin-left:85%}[dir=rtl] .flex-offset-xl-85,[dir=rtl] .offset-xl-85{margin-left:auto;margin-right:85%}.flex-offset-xl-90,.offset-xl-90{margin-left:90%}[dir=rtl] .flex-offset-xl-90,[dir=rtl] .offset-xl-90{margin-left:auto;margin-right:90%}.flex-offset-xl-95,.offset-xl-95{margin-left:95%}[dir=rtl] .flex-offset-xl-95,[dir=rtl] .offset-xl-95{margin-left:auto;margin-right:95%}.flex-offset-xl-33,.offset-xl-33{margin-left:calc(100% / 3)}.flex-offset-xl-66,.offset-xl-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-xl-66,[dir=rtl] .offset-xl-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-xl,.layout-align-xl-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-xl-start,.layout-align-xl-start-center,.layout-align-xl-start-end,.layout-align-xl-start-start,.layout-align-xl-start-stretch{justify-content:flex-start}.layout-align-xl-center,.layout-align-xl-center-center,.layout-align-xl-center-end,.layout-align-xl-center-start,.layout-align-xl-center-stretch{justify-content:center}.layout-align-xl-end,.layout-align-xl-end-center,.layout-align-xl-end-end,.layout-align-xl-end-start,.layout-align-xl-end-stretch{justify-content:flex-end}.layout-align-xl-space-around,.layout-align-xl-space-around-center,.layout-align-xl-space-around-end,.layout-align-xl-space-around-start,.layout-align-xl-space-around-stretch{justify-content:space-around}.layout-align-xl-space-between,.layout-align-xl-space-between-center,.layout-align-xl-space-between-end,.layout-align-xl-space-between-start,.layout-align-xl-space-between-stretch{justify-content:space-between}.layout-align-xl-center-start,.layout-align-xl-end-start,.layout-align-xl-space-around-start,.layout-align-xl-space-between-start,.layout-align-xl-start-start{align-items:flex-start;align-content:flex-start}.layout-align-xl-center-center,.layout-align-xl-end-center,.layout-align-xl-space-around-center,.layout-align-xl-space-between-center,.layout-align-xl-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-xl-center-center>*,.layout-align-xl-end-center>*,.layout-align-xl-space-around-center>*,.layout-align-xl-space-between-center>*,.layout-align-xl-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-xl-center-end,.layout-align-xl-end-end,.layout-align-xl-space-around-end,.layout-align-xl-space-between-end,.layout-align-xl-start-end{align-items:flex-end;align-content:flex-end}.layout-align-xl-center-stretch,.layout-align-xl-end-stretch,.layout-align-xl-space-around-stretch,.layout-align-xl-space-between-stretch,.layout-align-xl-start-stretch{align-items:stretch;align-content:stretch}.flex-xl{flex:1;box-sizing:border-box}.flex-xl-grow{flex:1 1 100%;box-sizing:border-box}.flex-xl-initial{flex:0 1 auto;box-sizing:border-box}.flex-xl-auto{flex:1 1 auto;box-sizing:border-box}.flex-xl-none{flex:0 0 auto;box-sizing:border-box}.flex-xl-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-xl-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-xl-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-xl-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-xl-column>.flex-xl-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-xl-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-xl-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-xl-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-xl-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-xl-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-xl-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-xl-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-xl-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-xl-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-xl-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-xl-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-xl-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-xl-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-xl-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-xl-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-xl-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-xl-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-xl-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-xl-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-xl-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-xl-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-xl-row>.flex{min-width:0}.layout-xl-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-xl-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-column>.flex{min-height:0}.layout-xl,.layout-xl-column,.layout-xl-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-xl-column{flex-direction:column}.layout-xl-row{flex-direction:row}.hide-gt-lg:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide-gt-md:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide-gt-sm:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide-gt-xs:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show){display:none}.hide-xl:not(.show-xl):not(.show-gt-lg):not(.show-gt-md):not(.show-gt-sm):not(.show-gt-xs):not(.show){display:none}}@media print{.hide-print:not(.show-print):not(.show){display:none!important}}md-menu[md-nest-level='1']{margin:0}md-menu[md-nest-level='1'] .md-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%}*{text-rendering:optimizeLegibility;-o-text-rendering:optimizeLegibility;-ms-text-rendering:optimizeLegibility;-moz-text-rendering:optimizeLegibility;-webkit-text-rendering:optimizeLegibility;-webkit-tap-highlight-color:transparent;box-sizing:border-box}:after,:before{box-sizing:border-box}:focus{outline:0}:not(md-input-container)>button,:not(md-input-container)>input[type=button],:not(md-input-container)>input[type=email],:not(md-input-container)>input[type=image],:not(md-input-container)>input[type=password],:not(md-input-container)>input[type=search],:not(md-input-container)>input[type=submit],:not(md-input-container)>input[type=tel],:not(md-input-container)>input[type=text],:not(md-input-container)>textarea{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;appearance:none;-moz-appearance:none;-webkit-appearance:none;border:none;padding:0;margin:0}:not(md-input-container)>button,:not(md-input-container)>input[type=button],:not(md-input-container)>input[type=submit]{background:0 0}button{border-radius:0;font-family:inherit;font-size:inherit;padding:0;margin:0;appearance:none;-moz-appearance:none;-webkit-appearance:none}[layout]>*{min-height:auto;min-height:initial}md-card>:not(md-card-content) img,md-card>img{height:inherit;height:initial}.md-datepicker-calendar-pane *{box-sizing:initial}md-autocomplete-wrap>input[type=search]{background:#fff;padding:0 15px!important}md-backdrop.md-opaque{background-color:rgba(33,33,33,.48)!important}md-card md-card-header md-card-avatar md-icon{width:40px;height:40px}md-checkbox.no-label{margin:0}md-chip .md-chip-remove md-icon{margin-left:2px}md-chip .md-chip-remove md-icon svg{width:18px;height:18px;max-width:18px;max-height:18px;margin:4px}md-datepicker .md-datepicker-button{padding:0!important;margin:0!important;vertical-align:middle}md-datepicker .md-datepicker-input-container{margin-left:0}.md-inline-form md-datepicker{margin-top:14px}md-dialog md-dialog-content{padding:32px 24px 24px 24px}md-dialog md-dialog-actions{min-height:64px;padding-top:8px;padding-bottom:8px}md-dialog md-dialog-actions .md-button{margin:0 8px}md-input-container.no-errors-spacer .md-errors-spacer{display:none}md-input-container .input-hint{position:absolute;right:auto;bottom:7px;left:2px;font-size:12px;line-height:14px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-input-container.md-icon-left .input-hint{left:38px}md-list-item .md-list-item-text p{font-size:13px!important}.md-menu,md-menu{padding:0}md-menu-content.md-menu-bar-menu.md-dense{padding:8px 0}md-menu-content.md-menu-bar-menu.md-dense .md-button,md-menu-content.md-menu-bar-menu.md-dense md-menu-item{height:40px;line-height:40px}md-menu-content.md-menu-bar-menu.md-dense .md-button.md-indent>md-icon,md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>md-icon{top:8px}.md-open-menu-container md-menu-content md-menu-item.selected{opacity:.4}md-menu-content md-menu-item .md-button{text-align:left}md-select.simplified{margin:0 8px}md-select.simplified .md-select-value{border:none!important;box-sizing:border-box;padding:0}md-select.simplified .md-select-value :first-child{transform:none;height:auto}md-select.simplified .md-select-value .md-select-icon{transform:none;font-size:16px}md-select.simplified .md-select-value .md-select-icon:after{top:1px}md-select[multiple] md-select-value>:first-child{display:flex}md-select[multiple] md-select-value>:first-child>:first-child{flex:0}md-select[multiple] md-select-value>:first-child .md-container{padding-right:6px}md-select[multiple] md-select-value>:first-child .md-container:first-of-type{padding-right:0}md-select-menu md-select-header{position:relative;display:flex;align-items:center;width:auto;height:48px;padding-left:10.667px;box-shadow:0 1px 0 0 rgba(0,0,0,.1),0 0 0 0 rgba(0,0,0,.14),0 0 0 0 rgba(0,0,0,.12);cursor:pointer}md-select-menu md-select-header input[type=search]{border:none;outline:0;height:100%;width:100%;padding:0}md-sidenav{-webkit-overflow-scrolling:touch}md-toolbar.colored-toolbar{color:rgba(255,255,255,.87)}md-toolbar.colored-toolbar md-menu-bar md-menu._md-open>button{background:rgba(0,0,0,.12)}md-toolbar.colored-toolbar md-menu._md-open>button{background:rgba(0,0,0,.12)}md-toolbar.colored-toolbar input{color:rgba(255,255,255,.87)!important}md-progress-circular[disabled]{visibility:hidden}body,html{overflow:hidden!important}#main{position:absolute;top:0;right:0;bottom:0;left:0}body.boxed{background:#3f4450}body.boxed #main{overflow:hidden!important;width:100%;max-width:1280px;margin:0 auto;box-shadow:0 0 12px rgba(0,0,0,.45)}#layout-content-only{position:relative;height:100%;max-height:100%}#layout-content-only #content{position:absolute;top:0;right:0;bottom:0;left:0}#layout-content-with-toolbar{position:relative;height:100%;max-height:100%}#layout-content-with-toolbar #content{position:absolute;top:64px;right:0;bottom:0;left:0}#layout-vertical-navigation{height:100%;max-height:100%}#layout-vertical-navigation #content-container{position:relative;overflow:hidden}#layout-vertical-navigation #content-container #content{position:absolute;top:64px;right:0;bottom:0;left:0}#layout-vertical-navigation-fullwidth-toolbar{height:100%;max-height:100%}#layout-vertical-navigation-fullwidth-toolbar #main-container{position:relative}#layout-vertical-navigation-fullwidth-toolbar #main-container #content-container{position:relative;overflow:hidden}#layout-vertical-navigation-fullwidth-toolbar #main-container #content-container #content{position:absolute;top:0;right:0;bottom:0;left:0}#layout-vertical-navigation-fullwidth-toolbar-2{height:100%;max-height:100%}#layout-vertical-navigation-fullwidth-toolbar-2 #main-container{position:relative}#layout-vertical-navigation-fullwidth-toolbar-2 #main-container #content-container{position:relative;overflow:hidden}#layout-vertical-navigation-fullwidth-toolbar-2 #main-container #content-container #content{position:absolute;top:0;right:0;bottom:0;left:0}#layout-horizontal-navigation{height:100%;max-height:100%}#layout-horizontal-navigation #content-container{position:relative;overflow:hidden}#layout-horizontal-navigation #content-container #content{position:absolute;top:0;right:0;bottom:0;left:0}.page-layout{position:relative;overflow:hidden}.page-layout .top-bg{position:absolute;z-index:1;top:0;right:0;left:0;height:200px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout md-backdrop{z-index:50}.page-layout>.header .breadcrumb{margin-bottom:16px;font-weight:500;color:rgba(0,0,0,.54)}.page-layout>.header .breadcrumb md-icon{margin:0}.page-layout>.header .breadcrumb .separator{margin:0 8px}.page-layout>.header .title{font-size:34px}.page-layout.carded{min-height:100%;height:100%}.page-layout.carded.fullwidth.single-scroll{height:auto}.page-layout.carded.fullwidth.single-scroll>.center .content-card .content{overflow:hidden}.page-layout.carded.fullwidth>.center{position:relative;z-index:2;margin-left:32px;margin-right:32px}.page-layout.carded.fullwidth>.center .header{height:136px;min-height:136px;max-height:136px;padding:24px}.page-layout.carded.fullwidth>.center .content-card{background:#fff;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);overflow:hidden}.page-layout.carded.fullwidth>.center .content-card .toolbar{padding:8px 24px;height:64px;min-height:64px;max-height:64px;border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.fullwidth>.center .content-card .content{padding:24px;background:#fff}.page-layout.carded.left-sidenav.single-scroll{height:auto}.page-layout.carded.left-sidenav.single-scroll>.center .content-card .content{overflow:hidden}.page-layout.carded.left-sidenav>.sidenav{width:240px;min-width:240px;max-width:240px;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);z-index:51}.page-layout.carded.left-sidenav>.sidenav .header{height:200px;min-height:200px;max-height:200px;padding:24px}.page-layout.carded.left-sidenav>.sidenav .content{background:0 0;padding:24px}.page-layout.carded.left-sidenav>.sidenav.md-locked-open{width:220px;min-width:220px;max-width:220px;z-index:2;background:0 0;box-shadow:none}.page-layout.carded.left-sidenav>.sidenav.md-locked-open+.center{margin-left:0}.page-layout.carded.left-sidenav>.sidenav:not(.md-locked-open) .header{border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.left-sidenav>.sidenav:not(.md-locked-open) .content{overflow:hidden}.page-layout.carded.left-sidenav>.center{position:relative;z-index:2;margin-left:32px;margin-right:32px}.page-layout.carded.left-sidenav>.center .header{height:136px;min-height:136px;max-height:136px;padding:24px}.page-layout.carded.left-sidenav>.center .content-card{background:#fff;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);overflow:hidden}.page-layout.carded.left-sidenav>.center .content-card .toolbar{padding:8px 24px;height:64px;min-height:64px;max-height:64px;border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.left-sidenav>.center .content-card .toolbar .sidenav-toggle{margin:0 8px 0 0!important;padding:0!important;border-radius:0}.page-layout.carded.left-sidenav>.center .content-card .content{padding:24px;background:#fff}.page-layout.carded.right-sidenav.single-scroll{height:auto}.page-layout.carded.right-sidenav.single-scroll>.center .content-card .content{overflow:hidden}.page-layout.carded.right-sidenav>.sidenav{width:240px;min-width:240px;max-width:240px;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);z-index:51}.page-layout.carded.right-sidenav>.sidenav .header{height:200px;min-height:200px;max-height:200px;padding:24px 24px 24px 0}.page-layout.carded.right-sidenav>.sidenav .content{background:0 0;padding:24px 24px 24px 0}.page-layout.carded.right-sidenav>.sidenav.md-locked-open{width:196px;min-width:196px;max-width:196px;z-index:2;background:0 0;box-shadow:none}.page-layout.carded.right-sidenav>.sidenav:not(.md-locked-open) .header{padding:24px;border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.right-sidenav>.sidenav:not(.md-locked-open) .content{overflow:hidden;padding:24px}.page-layout.carded.right-sidenav>.center{position:relative;z-index:2;margin-left:32px;margin-right:32px}.page-layout.carded.right-sidenav>.center .header{height:136px;min-height:136px;max-height:136px;padding:24px}.page-layout.carded.right-sidenav>.center .content-card{background:#fff;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);overflow:hidden}.page-layout.carded.right-sidenav>.center .content-card .toolbar{padding:8px 24px;height:64px;min-height:64px;max-height:64px;border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.right-sidenav>.center .content-card .toolbar .sidenav-toggle{margin:0 0 0 8px!important;padding:0!important;border-radius:0}.page-layout.carded.right-sidenav>.center .content-card .content{padding:24px;background:#fff}.page-layout.simple.fullwidth,.page-layout.simple.inner-sidenav{min-height:100%}.page-layout.simple.fullwidth>.header,.page-layout.simple.inner-sidenav>.header{height:200px;min-height:200px;max-height:200px;padding:24px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout.simple.fullwidth>.content,.page-layout.simple.inner-sidenav>.content{padding:24px}.page-layout.simple.left-sidenav{min-height:100%;height:100%}.page-layout.simple.left-sidenav.single-scroll{height:auto}.page-layout.simple.left-sidenav.single-scroll>.center{overflow:hidden}.page-layout.simple.left-sidenav.inner-sidenav>.content>md-sidenav{margin-right:24px}.page-layout.simple.left-sidenav .sidenav{width:240px;min-width:240px;max-width:240px;padding:24px;z-index:51;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.page-layout.simple.left-sidenav .sidenav.md-locked-open{width:220px;min-width:220px;max-width:220px;z-index:2;box-shadow:none;background:0 0}.page-layout.simple.left-sidenav>.center{position:relative;overflow:auto;z-index:3;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.page-layout.simple.left-sidenav>.center .header{height:200px;min-height:200px;max-height:200px;padding:24px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout.simple.left-sidenav>.center .content{padding:24px;background:#fff}.page-layout.simple.right-sidenav{min-height:100%;height:100%}.page-layout.simple.right-sidenav.single-scroll{height:auto}.page-layout.simple.right-sidenav.single-scroll>.center{overflow:hidden}.page-layout.simple.right-sidenav.inner-sidenav>.content>md-sidenav{margin-left:24px}.page-layout.simple.right-sidenav .sidenav{width:240px;min-width:240px;max-width:240px;padding:24px;z-index:51;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.page-layout.simple.right-sidenav .sidenav.md-locked-open{width:220px;min-width:220px;max-width:220px;z-index:2;box-shadow:none;background:0 0}.page-layout.simple.right-sidenav>.center{position:relative;overflow:auto;z-index:3;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.page-layout.simple.right-sidenav>.center .header{height:200px;min-height:200px;max-height:200px;padding:24px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout.simple.right-sidenav>.center .content{padding:24px;background:#fff}.page-layout.simple.inner-sidenav{height:auto}.page-layout.simple.inner-sidenav>.content>md-sidenav.md-locked-open{padding:0}.page-layout.simple.tabbed{min-height:100%}.page-layout.simple.tabbed>.header{height:200px;min-height:200px;max-height:200px;padding:24px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-wrapper{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);padding:0 24px}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-wrapper md-tabs-canvas{height:56px}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-wrapper md-tabs-canvas md-pagination-wrapper{height:56px}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-wrapper md-tabs-canvas .md-tab{padding:16px 24px;text-transform:none}.page-layout.simple.tabbed>.content>md-tabs:not(.md-dynamic-height) md-tabs-content-wrapper{top:56px}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-content-wrapper>md-tab-content{padding:24px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);border:none;height:56px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar nav{margin:0 12px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar nav .md-nav-item{height:56px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar nav .md-nav-item ._md-nav-button{height:56px;line-height:32px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar nav .md-nav-item ._md-nav-button-text{text-transform:none}.page-layout.blank{min-height:100%;padding:24px}.single-scroll .carded.fullwidth{height:auto}.single-scroll .carded.fullwidth>.center .content-card .content{overflow:hidden}.single-scroll .carded.left-sidenav{height:auto}.single-scroll .carded.left-sidenav>.center .content-card .content{overflow:hidden}.single-scroll .carded.right-sidenav{height:auto}.single-scroll .carded.right-sidenav>.center .content-card .content{overflow:hidden}.single-scroll .simple.left-sidenav{height:auto}.single-scroll .simple.left-sidenav>.center{overflow:hidden}.single-scroll .simple.right-sidenav{height:auto}.single-scroll .simple.right-sidenav>.center{overflow:hidden}@media screen and (max-width:1280px){.page-layout.simple.inner-sidenav.left-sidenav>.content,.page-layout.simple.inner-sidenav.right-sidenav>.content{height:auto!important}.page-layout.simple.inner-sidenav.left-sidenav>.content>md-sidenav,.page-layout.simple.inner-sidenav.right-sidenav>.content>md-sidenav{margin-left:0;margin-right:0}.sidenav-open .page-layout.simple.inner-sidenav{height:100%}}@media screen and (max-width:600px){.page-layout .top-bg{height:160px}.page-layout.carded.fullwidth>.center,.page-layout.carded.left-sidenav>.center,.page-layout.carded.right-sidenav>.center{margin-left:16px;margin-right:16px}.page-layout.carded.fullwidth>.center .header,.page-layout.carded.left-sidenav>.center .header,.page-layout.carded.right-sidenav>.center .header{height:96px;min-height:96px;max-height:96px;padding:16px}.page-layout.carded.fullwidth{height:auto}.page-layout.carded.fullwidth>.center .content-card .content{overflow:hidden}.page-layout.carded.left-sidenav,.page-layout.carded.right-sidenav{height:auto}.page-layout.carded.left-sidenav>.center .content-card .content,.page-layout.carded.right-sidenav>.center .content-card .content{overflow:hidden}.page-layout.simple.fullwidth>.header,.page-layout.simple.inner-sidenav>.header{height:160px;min-height:160px;max-height:160px;padding:16px}.page-layout.simple.left-sidenav>.center .header,.page-layout.simple.right-sidenav>.center .header{height:160px;min-height:160px;max-height:160px;padding:16px}.page-layout.simple.left-sidenav,.page-layout.simple.right-sidenav{height:auto}.page-layout.simple.left-sidenav>.center,.page-layout.simple.right-sidenav>.center{overflow:hidden}}.animate-slide-up{-webkit-backface-visibility:hidden;-webkit-perspective:1000px;transition-property:none;transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:1}.animate-slide-up.ng-enter{transform:translateY(100%);opacity:0}.animate-slide-up.ng-enter.ng-enter-active{transition-property:all;transform:translateY(0);opacity:1}.animate-slide-up.ng-leave{transform:translateY(0);opacity:1}.animate-slide-up.ng-leave.ng-leave-active{transition-property:all;transform:translateY(-100%);opacity:0}.animate-slide-up.ng-hide{transform:translateY(-100%);opacity:0}.animate-slide-up.ng-hide-add-active,.animate-slide-up.ng-hide-remove-active{transition-property:all}.animate-slide-down{-webkit-backface-visibility:hidden;-webkit-perspective:1000px;transition-property:none;transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:1}.animate-slide-down.ng-enter{transform:translateY(-100%);opacity:0}.animate-slide-down.ng-enter.ng-enter-active{transition-property:all;transform:translateY(0);opacity:1}.animate-slide-down.ng-leave{transform:translateY(0);opacity:1}.animate-slide-down.ng-leave.ng-leave-active{transition-property:all;transform:translateY(100%);opacity:0}.animate-slide-down.ng-hide{transform:translateY(-100%);opacity:0}.animate-slide-down.ng-hide-add-active,.animate-slide-down.ng-hide-remove-active{transition-property:all}.animate-slide-left{-webkit-backface-visibility:hidden;-webkit-perspective:1000px;transition-property:none;transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:1}.animate-slide-left.ng-enter{transform:translateX(100%);opacity:0}.animate-slide-left.ng-enter.ng-enter-active{transition-property:all;transform:translateX(0);opacity:1}.animate-slide-left.ng-leave{transform:translateX(0);opacity:1}.animate-slide-left.ng-leave.ng-leave-active{transition-property:all;transform:translateX(-100%);opacity:0}.animate-slide-left.ng-hide{transform:translateX(-100%);opacity:0}.animate-slide-left.ng-hide-add-active,.animate-slide-left.ng-hide-remove-active{transition-property:all}.animate-slide-right{-webkit-backface-visibility:hidden;-webkit-perspective:1000px;transition-property:none;transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:1}.animate-slide-right.ng-enter{transform:translateX(-100%);opacity:0}.animate-slide-right.ng-enter.ng-enter-active{transition-property:all;transform:translateX(0);opacity:1}.animate-slide-right.ng-leave{transform:translateX(0);opacity:1}.animate-slide-right.ng-leave.ng-leave-active{transition-property:all;transform:translateX(100%);opacity:0}.animate-slide-right.ng-hide{transform:translateX(100%);opacity:0}.animate-slide-right.ng-hide-add-active,.animate-slide-right.ng-hide-remove-active{transition-property:all}.animate-fade-in-out{-webkit-backface-visibility:hidden;-webkit-perspective:1000px;transition-property:none;transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:1}.animate-fade-in-out.ng-enter{opacity:0}.animate-fade-in-out.ng-enter.ng-enter-active{transition-property:all;opacity:1}.animate-fade-in-out.ng-leave{opacity:1}.animate-fade-in-out.ng-leave.ng-leave-active{transition-property:all;opacity:0}.animate-fade-in-out.ng-hide{opacity:0}.animate-fade-in-out.ng-hide-add-active,.animate-fade-in-out.ng-hide-remove-active{transition-property:all}@keyframes slide-in-left{0%{opacity:0;transform:translateX(-500px)}65%{opacity:1;transform:translateX(0)}100%{transform:translateX(0)}}@keyframes slide-in-right{0%{opacity:0;transform:translateX(500px)}65%{opacity:1;transform:translateX(0)}100%{transform:translateX(0)}}@keyframes slide-in-bottom{0%{opacity:0;transform:translateY(200px)}65%{opacity:1;transform:translateY(0)}100%{transform:translateY(0)}}.animate-rotate{animation:rotate 1.75s linear infinite}@keyframes rotate{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.black-fg,.black-text{color:rgba(0,0,0,.87)!important}.black-fg .icon,.black-fg .secondary-text,.black-fg.icon,.black-fg.secondary-text,.black-text .icon,.black-text .secondary-text,.black-text.icon,.black-text.secondary-text{color:rgba(0,0,0,.54)!important}.black-fg .disabled-text,.black-fg .hint-text,.black-fg.disabled-text,.black-fg.hint-text,.black-text .disabled-text,.black-text .hint-text,.black-text.disabled-text,.black-text.hint-text{color:rgba(0,0,0,.26)!important}.black-fg .divider,.black-fg .faint-text,.black-fg.divider,.black-fg.faint-text,.black-text .divider,.black-text .faint-text,.black-text.divider,.black-text.faint-text{color:rgba(0,0,0,.12)!important}.white-fg,.white-text{color:#fff!important}.white-fg .icon,.white-fg .secondary-text,.white-fg.icon,.white-fg.secondary-text,.white-text .icon,.white-text .secondary-text,.white-text.icon,.white-text.secondary-text{color:rgba(255,255,255,.7)!important}.white-fg .disabled-text,.white-fg .hint-text,.white-fg.disabled-text,.white-fg.hint-text,.white-text .disabled-text,.white-text .hint-text,.white-text.disabled-text,.white-text.hint-text{color:rgba(255,255,255,.3)!important}.white-fg .divider,.white-fg .faint-text,.white-fg.divider,.white-fg.faint-text,.white-text .divider,.white-text .faint-text,.white-text.divider,.white-text.faint-text{color:rgba(255,255,255,.12)!important}.white-fg md-icon,.white-text md-icon{color:#fff}.white-fg md-progress-linear .md-container,.white-text md-progress-linear .md-container{background:rgba(255,255,255,.3)}.white-fg md-progress-linear .md-bar,.white-text md-progress-linear .md-bar{background:rgba(255,255,255,.7)}.red-50-bg{background-color:#ffebee!important}.md-red-50-bg{background-color:#ffebee!important;color:rgba(0,0,0,.87)}.red-50-fg{color:#ffebee!important}.red-50-border{border-color:#ffebee!important}.red-50-border-top{border-top-color:#ffebee!important}.red-50-border-right{border-right-color:#ffebee!important}.red-50-border-bottom{border-bottom-color:#ffebee!important}.red-50-border-left{border-left-color:#ffebee!important}.red-100-bg{background-color:#ffcdd2!important}.md-red-100-bg{background-color:#ffcdd2!important;color:rgba(0,0,0,.87)}.red-100-fg{color:#ffcdd2!important}.red-100-border{border-color:#ffcdd2!important}.red-100-border-top{border-top-color:#ffcdd2!important}.red-100-border-right{border-right-color:#ffcdd2!important}.red-100-border-bottom{border-bottom-color:#ffcdd2!important}.red-100-border-left{border-left-color:#ffcdd2!important}.red-200-bg{background-color:#ef9a9a!important}.md-red-200-bg{background-color:#ef9a9a!important;color:rgba(0,0,0,.87)}.red-200-fg{color:#ef9a9a!important}.red-200-border{border-color:#ef9a9a!important}.red-200-border-top{border-top-color:#ef9a9a!important}.red-200-border-right{border-right-color:#ef9a9a!important}.red-200-border-bottom{border-bottom-color:#ef9a9a!important}.red-200-border-left{border-left-color:#ef9a9a!important}.red-300-bg{background-color:#e57373!important}.md-red-300-bg{background-color:#e57373!important;color:rgba(0,0,0,.87)}.red-300-fg{color:#e57373!important}.red-300-border{border-color:#e57373!important}.red-300-border-top{border-top-color:#e57373!important}.red-300-border-right{border-right-color:#e57373!important}.red-300-border-bottom{border-bottom-color:#e57373!important}.red-300-border-left{border-left-color:#e57373!important}.red-400-bg{background-color:#ef5350!important}.md-red-400-bg{background-color:#ef5350!important;color:#fff}.red-400-fg{color:#ef5350!important}.red-400-border{border-color:#ef5350!important}.red-400-border-top{border-top-color:#ef5350!important}.red-400-border-right{border-right-color:#ef5350!important}.red-400-border-bottom{border-bottom-color:#ef5350!important}.red-400-border-left{border-left-color:#ef5350!important}.red-500-bg{background-color:#f44336!important}.md-red-500-bg{background-color:#f44336!important;color:#fff}.red-500-fg{color:#f44336!important}.red-500-border{border-color:#f44336!important}.red-500-border-top{border-top-color:#f44336!important}.red-500-border-right{border-right-color:#f44336!important}.red-500-border-bottom{border-bottom-color:#f44336!important}.red-500-border-left{border-left-color:#f44336!important}.md-red-bg{background-color:#f44336!important;color:#fff}.red-bg{background-color:#f44336!important}.red-fg{color:#f44336!important}.red-border{border-color:#f44336!important}.red-border-top{border-top-color:#f44336!important}.red-border-right{border-right-color:#f44336!important}.red-border-bottom{border-bottom-color:#f44336!important}.red-border-left{border-left-color:#f44336!important}.red-600-bg{background-color:#e53935!important}.md-red-600-bg{background-color:#e53935!important;color:#fff}.red-600-fg{color:#e53935!important}.red-600-border{border-color:#e53935!important}.red-600-border-top{border-top-color:#e53935!important}.red-600-border-right{border-right-color:#e53935!important}.red-600-border-bottom{border-bottom-color:#e53935!important}.red-600-border-left{border-left-color:#e53935!important}.red-700-bg{background-color:#d32f2f!important}.md-red-700-bg{background-color:#d32f2f!important;color:#fff}.red-700-fg{color:#d32f2f!important}.red-700-border{border-color:#d32f2f!important}.red-700-border-top{border-top-color:#d32f2f!important}.red-700-border-right{border-right-color:#d32f2f!important}.red-700-border-bottom{border-bottom-color:#d32f2f!important}.red-700-border-left{border-left-color:#d32f2f!important}.red-800-bg{background-color:#c62828!important}.md-red-800-bg{background-color:#c62828!important;color:rgba(255,255,255,.87)}.red-800-fg{color:#c62828!important}.red-800-border{border-color:#c62828!important}.red-800-border-top{border-top-color:#c62828!important}.red-800-border-right{border-right-color:#c62828!important}.red-800-border-bottom{border-bottom-color:#c62828!important}.red-800-border-left{border-left-color:#c62828!important}.red-900-bg{background-color:#b71c1c!important}.md-red-900-bg{background-color:#b71c1c!important;color:rgba(255,255,255,.87)}.red-900-fg{color:#b71c1c!important}.red-900-border{border-color:#b71c1c!important}.red-900-border-top{border-top-color:#b71c1c!important}.red-900-border-right{border-right-color:#b71c1c!important}.red-900-border-bottom{border-bottom-color:#b71c1c!important}.red-900-border-left{border-left-color:#b71c1c!important}.red-A100-bg{background-color:#ff8a80!important}.md-red-A100-bg{background-color:#ff8a80!important;color:rgba(0,0,0,.87)}.red-A100-fg{color:#ff8a80!important}.red-A100-border{border-color:#ff8a80!important}.red-A100-border-top{border-top-color:#ff8a80!important}.red-A100-border-right{border-right-color:#ff8a80!important}.red-A100-border-bottom{border-bottom-color:#ff8a80!important}.red-A100-border-left{border-left-color:#ff8a80!important}.red-A200-bg{background-color:#ff5252!important}.md-red-A200-bg{background-color:#ff5252!important;color:#fff}.red-A200-fg{color:#ff5252!important}.red-A200-border{border-color:#ff5252!important}.red-A200-border-top{border-top-color:#ff5252!important}.red-A200-border-right{border-right-color:#ff5252!important}.red-A200-border-bottom{border-bottom-color:#ff5252!important}.red-A200-border-left{border-left-color:#ff5252!important}.red-A400-bg{background-color:#ff1744!important}.md-red-A400-bg{background-color:#ff1744!important;color:#fff}.red-A400-fg{color:#ff1744!important}.red-A400-border{border-color:#ff1744!important}.red-A400-border-top{border-top-color:#ff1744!important}.red-A400-border-right{border-right-color:#ff1744!important}.red-A400-border-bottom{border-bottom-color:#ff1744!important}.red-A400-border-left{border-left-color:#ff1744!important}.red-A700-bg{background-color:#d50000!important}.md-red-A700-bg{background-color:#d50000!important;color:#fff}.red-A700-fg{color:#d50000!important}.red-A700-border{border-color:#d50000!important}.red-A700-border-top{border-top-color:#d50000!important}.red-A700-border-right{border-right-color:#d50000!important}.red-A700-border-bottom{border-bottom-color:#d50000!important}.red-A700-border-left{border-left-color:#d50000!important}.pink-50-bg{background-color:#fce4ec!important}.md-pink-50-bg{background-color:#fce4ec!important;color:rgba(0,0,0,.87)}.pink-50-fg{color:#fce4ec!important}.pink-50-border{border-color:#fce4ec!important}.pink-50-border-top{border-top-color:#fce4ec!important}.pink-50-border-right{border-right-color:#fce4ec!important}.pink-50-border-bottom{border-bottom-color:#fce4ec!important}.pink-50-border-left{border-left-color:#fce4ec!important}.pink-100-bg{background-color:#f8bbd0!important}.md-pink-100-bg{background-color:#f8bbd0!important;color:rgba(0,0,0,.87)}.pink-100-fg{color:#f8bbd0!important}.pink-100-border{border-color:#f8bbd0!important}.pink-100-border-top{border-top-color:#f8bbd0!important}.pink-100-border-right{border-right-color:#f8bbd0!important}.pink-100-border-bottom{border-bottom-color:#f8bbd0!important}.pink-100-border-left{border-left-color:#f8bbd0!important}.pink-200-bg{background-color:#f48fb1!important}.md-pink-200-bg{background-color:#f48fb1!important;color:rgba(0,0,0,.87)}.pink-200-fg{color:#f48fb1!important}.pink-200-border{border-color:#f48fb1!important}.pink-200-border-top{border-top-color:#f48fb1!important}.pink-200-border-right{border-right-color:#f48fb1!important}.pink-200-border-bottom{border-bottom-color:#f48fb1!important}.pink-200-border-left{border-left-color:#f48fb1!important}.pink-300-bg{background-color:#f06292!important}.md-pink-300-bg{background-color:#f06292!important;color:rgba(255,255,255,.87)}.pink-300-fg{color:#f06292!important}.pink-300-border{border-color:#f06292!important}.pink-300-border-top{border-top-color:#f06292!important}.pink-300-border-right{border-right-color:#f06292!important}.pink-300-border-bottom{border-bottom-color:#f06292!important}.pink-300-border-left{border-left-color:#f06292!important}.pink-400-bg{background-color:#ec407a!important}.md-pink-400-bg{background-color:#ec407a!important;color:rgba(255,255,255,.87)}.pink-400-fg{color:#ec407a!important}.pink-400-border{border-color:#ec407a!important}.pink-400-border-top{border-top-color:#ec407a!important}.pink-400-border-right{border-right-color:#ec407a!important}.pink-400-border-bottom{border-bottom-color:#ec407a!important}.pink-400-border-left{border-left-color:#ec407a!important}.pink-500-bg{background-color:#e91e63!important}.md-pink-500-bg{background-color:#e91e63!important;color:#fff}.pink-500-fg{color:#e91e63!important}.pink-500-border{border-color:#e91e63!important}.pink-500-border-top{border-top-color:#e91e63!important}.pink-500-border-right{border-right-color:#e91e63!important}.pink-500-border-bottom{border-bottom-color:#e91e63!important}.pink-500-border-left{border-left-color:#e91e63!important}.md-pink-bg{background-color:#e91e63!important;color:#fff}.pink-bg{background-color:#e91e63!important}.pink-fg{color:#e91e63!important}.pink-border{border-color:#e91e63!important}.pink-border-top{border-top-color:#e91e63!important}.pink-border-right{border-right-color:#e91e63!important}.pink-border-bottom{border-bottom-color:#e91e63!important}.pink-border-left{border-left-color:#e91e63!important}.pink-600-bg{background-color:#d81b60!important}.md-pink-600-bg{background-color:#d81b60!important;color:#fff}.pink-600-fg{color:#d81b60!important}.pink-600-border{border-color:#d81b60!important}.pink-600-border-top{border-top-color:#d81b60!important}.pink-600-border-right{border-right-color:#d81b60!important}.pink-600-border-bottom{border-bottom-color:#d81b60!important}.pink-600-border-left{border-left-color:#d81b60!important}.pink-700-bg{background-color:#c2185b!important}.md-pink-700-bg{background-color:#c2185b!important;color:rgba(255,255,255,.87)}.pink-700-fg{color:#c2185b!important}.pink-700-border{border-color:#c2185b!important}.pink-700-border-top{border-top-color:#c2185b!important}.pink-700-border-right{border-right-color:#c2185b!important}.pink-700-border-bottom{border-bottom-color:#c2185b!important}.pink-700-border-left{border-left-color:#c2185b!important}.pink-800-bg{background-color:#ad1457!important}.md-pink-800-bg{background-color:#ad1457!important;color:rgba(255,255,255,.87)}.pink-800-fg{color:#ad1457!important}.pink-800-border{border-color:#ad1457!important}.pink-800-border-top{border-top-color:#ad1457!important}.pink-800-border-right{border-right-color:#ad1457!important}.pink-800-border-bottom{border-bottom-color:#ad1457!important}.pink-800-border-left{border-left-color:#ad1457!important}.pink-900-bg{background-color:#880e4f!important}.md-pink-900-bg{background-color:#880e4f!important;color:rgba(255,255,255,.87)}.pink-900-fg{color:#880e4f!important}.pink-900-border{border-color:#880e4f!important}.pink-900-border-top{border-top-color:#880e4f!important}.pink-900-border-right{border-right-color:#880e4f!important}.pink-900-border-bottom{border-bottom-color:#880e4f!important}.pink-900-border-left{border-left-color:#880e4f!important}.pink-A100-bg{background-color:#ff80ab!important}.md-pink-A100-bg{background-color:#ff80ab!important;color:rgba(0,0,0,.87)}.pink-A100-fg{color:#ff80ab!important}.pink-A100-border{border-color:#ff80ab!important}.pink-A100-border-top{border-top-color:#ff80ab!important}.pink-A100-border-right{border-right-color:#ff80ab!important}.pink-A100-border-bottom{border-bottom-color:#ff80ab!important}.pink-A100-border-left{border-left-color:#ff80ab!important}.pink-A200-bg{background-color:#ff4081!important}.md-pink-A200-bg{background-color:#ff4081!important;color:#fff}.pink-A200-fg{color:#ff4081!important}.pink-A200-border{border-color:#ff4081!important}.pink-A200-border-top{border-top-color:#ff4081!important}.pink-A200-border-right{border-right-color:#ff4081!important}.pink-A200-border-bottom{border-bottom-color:#ff4081!important}.pink-A200-border-left{border-left-color:#ff4081!important}.pink-A400-bg{background-color:#f50057!important}.md-pink-A400-bg{background-color:#f50057!important;color:#fff}.pink-A400-fg{color:#f50057!important}.pink-A400-border{border-color:#f50057!important}.pink-A400-border-top{border-top-color:#f50057!important}.pink-A400-border-right{border-right-color:#f50057!important}.pink-A400-border-bottom{border-bottom-color:#f50057!important}.pink-A400-border-left{border-left-color:#f50057!important}.pink-A700-bg{background-color:#c51162!important}.md-pink-A700-bg{background-color:#c51162!important;color:#fff}.pink-A700-fg{color:#c51162!important}.pink-A700-border{border-color:#c51162!important}.pink-A700-border-top{border-top-color:#c51162!important}.pink-A700-border-right{border-right-color:#c51162!important}.pink-A700-border-bottom{border-bottom-color:#c51162!important}.pink-A700-border-left{border-left-color:#c51162!important}.purple-50-bg{background-color:#f3e5f5!important}.md-purple-50-bg{background-color:#f3e5f5!important;color:rgba(0,0,0,.87)}.purple-50-fg{color:#f3e5f5!important}.purple-50-border{border-color:#f3e5f5!important}.purple-50-border-top{border-top-color:#f3e5f5!important}.purple-50-border-right{border-right-color:#f3e5f5!important}.purple-50-border-bottom{border-bottom-color:#f3e5f5!important}.purple-50-border-left{border-left-color:#f3e5f5!important}.purple-100-bg{background-color:#e1bee7!important}.md-purple-100-bg{background-color:#e1bee7!important;color:rgba(0,0,0,.87)}.purple-100-fg{color:#e1bee7!important}.purple-100-border{border-color:#e1bee7!important}.purple-100-border-top{border-top-color:#e1bee7!important}.purple-100-border-right{border-right-color:#e1bee7!important}.purple-100-border-bottom{border-bottom-color:#e1bee7!important}.purple-100-border-left{border-left-color:#e1bee7!important}.purple-200-bg{background-color:#ce93d8!important}.md-purple-200-bg{background-color:#ce93d8!important;color:rgba(0,0,0,.87)}.purple-200-fg{color:#ce93d8!important}.purple-200-border{border-color:#ce93d8!important}.purple-200-border-top{border-top-color:#ce93d8!important}.purple-200-border-right{border-right-color:#ce93d8!important}.purple-200-border-bottom{border-bottom-color:#ce93d8!important}.purple-200-border-left{border-left-color:#ce93d8!important}.purple-300-bg{background-color:#ba68c8!important}.md-purple-300-bg{background-color:#ba68c8!important;color:#fff}.purple-300-fg{color:#ba68c8!important}.purple-300-border{border-color:#ba68c8!important}.purple-300-border-top{border-top-color:#ba68c8!important}.purple-300-border-right{border-right-color:#ba68c8!important}.purple-300-border-bottom{border-bottom-color:#ba68c8!important}.purple-300-border-left{border-left-color:#ba68c8!important}.purple-400-bg{background-color:#ab47bc!important}.md-purple-400-bg{background-color:#ab47bc!important;color:#fff}.purple-400-fg{color:#ab47bc!important}.purple-400-border{border-color:#ab47bc!important}.purple-400-border-top{border-top-color:#ab47bc!important}.purple-400-border-right{border-right-color:#ab47bc!important}.purple-400-border-bottom{border-bottom-color:#ab47bc!important}.purple-400-border-left{border-left-color:#ab47bc!important}.purple-500-bg{background-color:#9c27b0!important}.md-purple-500-bg{background-color:#9c27b0!important;color:rgba(255,255,255,.87)}.purple-500-fg{color:#9c27b0!important}.purple-500-border{border-color:#9c27b0!important}.purple-500-border-top{border-top-color:#9c27b0!important}.purple-500-border-right{border-right-color:#9c27b0!important}.purple-500-border-bottom{border-bottom-color:#9c27b0!important}.purple-500-border-left{border-left-color:#9c27b0!important}.md-purple-bg{background-color:#9c27b0!important;color:rgba(255,255,255,.87)}.purple-bg{background-color:#9c27b0!important}.purple-fg{color:#9c27b0!important}.purple-border{border-color:#9c27b0!important}.purple-border-top{border-top-color:#9c27b0!important}.purple-border-right{border-right-color:#9c27b0!important}.purple-border-bottom{border-bottom-color:#9c27b0!important}.purple-border-left{border-left-color:#9c27b0!important}.purple-600-bg{background-color:#8e24aa!important}.md-purple-600-bg{background-color:#8e24aa!important;color:rgba(255,255,255,.87)}.purple-600-fg{color:#8e24aa!important}.purple-600-border{border-color:#8e24aa!important}.purple-600-border-top{border-top-color:#8e24aa!important}.purple-600-border-right{border-right-color:#8e24aa!important}.purple-600-border-bottom{border-bottom-color:#8e24aa!important}.purple-600-border-left{border-left-color:#8e24aa!important}.purple-700-bg{background-color:#7b1fa2!important}.md-purple-700-bg{background-color:#7b1fa2!important;color:rgba(255,255,255,.87)}.purple-700-fg{color:#7b1fa2!important}.purple-700-border{border-color:#7b1fa2!important}.purple-700-border-top{border-top-color:#7b1fa2!important}.purple-700-border-right{border-right-color:#7b1fa2!important}.purple-700-border-bottom{border-bottom-color:#7b1fa2!important}.purple-700-border-left{border-left-color:#7b1fa2!important}.purple-800-bg{background-color:#6a1b9a!important}.md-purple-800-bg{background-color:#6a1b9a!important;color:rgba(255,255,255,.87)}.purple-800-fg{color:#6a1b9a!important}.purple-800-border{border-color:#6a1b9a!important}.purple-800-border-top{border-top-color:#6a1b9a!important}.purple-800-border-right{border-right-color:#6a1b9a!important}.purple-800-border-bottom{border-bottom-color:#6a1b9a!important}.purple-800-border-left{border-left-color:#6a1b9a!important}.purple-900-bg{background-color:#4a148c!important}.md-purple-900-bg{background-color:#4a148c!important;color:rgba(255,255,255,.87)}.purple-900-fg{color:#4a148c!important}.purple-900-border{border-color:#4a148c!important}.purple-900-border-top{border-top-color:#4a148c!important}.purple-900-border-right{border-right-color:#4a148c!important}.purple-900-border-bottom{border-bottom-color:#4a148c!important}.purple-900-border-left{border-left-color:#4a148c!important}.purple-A100-bg{background-color:#ea80fc!important}.md-purple-A100-bg{background-color:#ea80fc!important;color:rgba(0,0,0,.87)}.purple-A100-fg{color:#ea80fc!important}.purple-A100-border{border-color:#ea80fc!important}.purple-A100-border-top{border-top-color:#ea80fc!important}.purple-A100-border-right{border-right-color:#ea80fc!important}.purple-A100-border-bottom{border-bottom-color:#ea80fc!important}.purple-A100-border-left{border-left-color:#ea80fc!important}.purple-A200-bg{background-color:#e040fb!important}.md-purple-A200-bg{background-color:#e040fb!important;color:#fff}.purple-A200-fg{color:#e040fb!important}.purple-A200-border{border-color:#e040fb!important}.purple-A200-border-top{border-top-color:#e040fb!important}.purple-A200-border-right{border-right-color:#e040fb!important}.purple-A200-border-bottom{border-bottom-color:#e040fb!important}.purple-A200-border-left{border-left-color:#e040fb!important}.purple-A400-bg{background-color:#d500f9!important}.md-purple-A400-bg{background-color:#d500f9!important;color:#fff}.purple-A400-fg{color:#d500f9!important}.purple-A400-border{border-color:#d500f9!important}.purple-A400-border-top{border-top-color:#d500f9!important}.purple-A400-border-right{border-right-color:#d500f9!important}.purple-A400-border-bottom{border-bottom-color:#d500f9!important}.purple-A400-border-left{border-left-color:#d500f9!important}.purple-A700-bg{background-color:#a0f!important}.md-purple-A700-bg{background-color:#a0f!important;color:#fff}.purple-A700-fg{color:#a0f!important}.purple-A700-border{border-color:#a0f!important}.purple-A700-border-top{border-top-color:#a0f!important}.purple-A700-border-right{border-right-color:#a0f!important}.purple-A700-border-bottom{border-bottom-color:#a0f!important}.purple-A700-border-left{border-left-color:#a0f!important}.deep-purple-50-bg{background-color:#ede7f6!important}.md-deep-purple-50-bg{background-color:#ede7f6!important;color:rgba(0,0,0,.87)}.deep-purple-50-fg{color:#ede7f6!important}.deep-purple-50-border{border-color:#ede7f6!important}.deep-purple-50-border-top{border-top-color:#ede7f6!important}.deep-purple-50-border-right{border-right-color:#ede7f6!important}.deep-purple-50-border-bottom{border-bottom-color:#ede7f6!important}.deep-purple-50-border-left{border-left-color:#ede7f6!important}.deep-purple-100-bg{background-color:#d1c4e9!important}.md-deep-purple-100-bg{background-color:#d1c4e9!important;color:rgba(0,0,0,.87)}.deep-purple-100-fg{color:#d1c4e9!important}.deep-purple-100-border{border-color:#d1c4e9!important}.deep-purple-100-border-top{border-top-color:#d1c4e9!important}.deep-purple-100-border-right{border-right-color:#d1c4e9!important}.deep-purple-100-border-bottom{border-bottom-color:#d1c4e9!important}.deep-purple-100-border-left{border-left-color:#d1c4e9!important}.deep-purple-200-bg{background-color:#b39ddb!important}.md-deep-purple-200-bg{background-color:#b39ddb!important;color:rgba(0,0,0,.87)}.deep-purple-200-fg{color:#b39ddb!important}.deep-purple-200-border{border-color:#b39ddb!important}.deep-purple-200-border-top{border-top-color:#b39ddb!important}.deep-purple-200-border-right{border-right-color:#b39ddb!important}.deep-purple-200-border-bottom{border-bottom-color:#b39ddb!important}.deep-purple-200-border-left{border-left-color:#b39ddb!important}.deep-purple-300-bg{background-color:#9575cd!important}.md-deep-purple-300-bg{background-color:#9575cd!important;color:#fff}.deep-purple-300-fg{color:#9575cd!important}.deep-purple-300-border{border-color:#9575cd!important}.deep-purple-300-border-top{border-top-color:#9575cd!important}.deep-purple-300-border-right{border-right-color:#9575cd!important}.deep-purple-300-border-bottom{border-bottom-color:#9575cd!important}.deep-purple-300-border-left{border-left-color:#9575cd!important}.deep-purple-400-bg{background-color:#7e57c2!important}.md-deep-purple-400-bg{background-color:#7e57c2!important;color:#fff}.deep-purple-400-fg{color:#7e57c2!important}.deep-purple-400-border{border-color:#7e57c2!important}.deep-purple-400-border-top{border-top-color:#7e57c2!important}.deep-purple-400-border-right{border-right-color:#7e57c2!important}.deep-purple-400-border-bottom{border-bottom-color:#7e57c2!important}.deep-purple-400-border-left{border-left-color:#7e57c2!important}.deep-purple-500-bg{background-color:#673ab7!important}.md-deep-purple-500-bg{background-color:#673ab7!important;color:rgba(255,255,255,.87)}.deep-purple-500-fg{color:#673ab7!important}.deep-purple-500-border{border-color:#673ab7!important}.deep-purple-500-border-top{border-top-color:#673ab7!important}.deep-purple-500-border-right{border-right-color:#673ab7!important}.deep-purple-500-border-bottom{border-bottom-color:#673ab7!important}.deep-purple-500-border-left{border-left-color:#673ab7!important}.md-deep-purple-bg{background-color:#673ab7!important;color:rgba(255,255,255,.87)}.deep-purple-bg{background-color:#673ab7!important}.deep-purple-fg{color:#673ab7!important}.deep-purple-border{border-color:#673ab7!important}.deep-purple-border-top{border-top-color:#673ab7!important}.deep-purple-border-right{border-right-color:#673ab7!important}.deep-purple-border-bottom{border-bottom-color:#673ab7!important}.deep-purple-border-left{border-left-color:#673ab7!important}.deep-purple-600-bg{background-color:#5e35b1!important}.md-deep-purple-600-bg{background-color:#5e35b1!important;color:rgba(255,255,255,.87)}.deep-purple-600-fg{color:#5e35b1!important}.deep-purple-600-border{border-color:#5e35b1!important}.deep-purple-600-border-top{border-top-color:#5e35b1!important}.deep-purple-600-border-right{border-right-color:#5e35b1!important}.deep-purple-600-border-bottom{border-bottom-color:#5e35b1!important}.deep-purple-600-border-left{border-left-color:#5e35b1!important}.deep-purple-700-bg{background-color:#512da8!important}.md-deep-purple-700-bg{background-color:#512da8!important;color:rgba(255,255,255,.87)}.deep-purple-700-fg{color:#512da8!important}.deep-purple-700-border{border-color:#512da8!important}.deep-purple-700-border-top{border-top-color:#512da8!important}.deep-purple-700-border-right{border-right-color:#512da8!important}.deep-purple-700-border-bottom{border-bottom-color:#512da8!important}.deep-purple-700-border-left{border-left-color:#512da8!important}.deep-purple-800-bg{background-color:#4527a0!important}.md-deep-purple-800-bg{background-color:#4527a0!important;color:rgba(255,255,255,.87)}.deep-purple-800-fg{color:#4527a0!important}.deep-purple-800-border{border-color:#4527a0!important}.deep-purple-800-border-top{border-top-color:#4527a0!important}.deep-purple-800-border-right{border-right-color:#4527a0!important}.deep-purple-800-border-bottom{border-bottom-color:#4527a0!important}.deep-purple-800-border-left{border-left-color:#4527a0!important}.deep-purple-900-bg{background-color:#311b92!important}.md-deep-purple-900-bg{background-color:#311b92!important;color:rgba(255,255,255,.87)}.deep-purple-900-fg{color:#311b92!important}.deep-purple-900-border{border-color:#311b92!important}.deep-purple-900-border-top{border-top-color:#311b92!important}.deep-purple-900-border-right{border-right-color:#311b92!important}.deep-purple-900-border-bottom{border-bottom-color:#311b92!important}.deep-purple-900-border-left{border-left-color:#311b92!important}.deep-purple-A100-bg{background-color:#b388ff!important}.md-deep-purple-A100-bg{background-color:#b388ff!important;color:rgba(0,0,0,.87)}.deep-purple-A100-fg{color:#b388ff!important}.deep-purple-A100-border{border-color:#b388ff!important}.deep-purple-A100-border-top{border-top-color:#b388ff!important}.deep-purple-A100-border-right{border-right-color:#b388ff!important}.deep-purple-A100-border-bottom{border-bottom-color:#b388ff!important}.deep-purple-A100-border-left{border-left-color:#b388ff!important}.deep-purple-A200-bg{background-color:#7c4dff!important}.md-deep-purple-A200-bg{background-color:#7c4dff!important;color:#fff}.deep-purple-A200-fg{color:#7c4dff!important}.deep-purple-A200-border{border-color:#7c4dff!important}.deep-purple-A200-border-top{border-top-color:#7c4dff!important}.deep-purple-A200-border-right{border-right-color:#7c4dff!important}.deep-purple-A200-border-bottom{border-bottom-color:#7c4dff!important}.deep-purple-A200-border-left{border-left-color:#7c4dff!important}.deep-purple-A400-bg{background-color:#651fff!important}.md-deep-purple-A400-bg{background-color:#651fff!important;color:rgba(255,255,255,.87)}.deep-purple-A400-fg{color:#651fff!important}.deep-purple-A400-border{border-color:#651fff!important}.deep-purple-A400-border-top{border-top-color:#651fff!important}.deep-purple-A400-border-right{border-right-color:#651fff!important}.deep-purple-A400-border-bottom{border-bottom-color:#651fff!important}.deep-purple-A400-border-left{border-left-color:#651fff!important}.deep-purple-A700-bg{background-color:#6200ea!important}.md-deep-purple-A700-bg{background-color:#6200ea!important;color:rgba(255,255,255,.87)}.deep-purple-A700-fg{color:#6200ea!important}.deep-purple-A700-border{border-color:#6200ea!important}.deep-purple-A700-border-top{border-top-color:#6200ea!important}.deep-purple-A700-border-right{border-right-color:#6200ea!important}.deep-purple-A700-border-bottom{border-bottom-color:#6200ea!important}.deep-purple-A700-border-left{border-left-color:#6200ea!important}.indigo-50-bg{background-color:#e8eaf6!important}.md-indigo-50-bg{background-color:#e8eaf6!important;color:rgba(0,0,0,.87)}.indigo-50-fg{color:#e8eaf6!important}.indigo-50-border{border-color:#e8eaf6!important}.indigo-50-border-top{border-top-color:#e8eaf6!important}.indigo-50-border-right{border-right-color:#e8eaf6!important}.indigo-50-border-bottom{border-bottom-color:#e8eaf6!important}.indigo-50-border-left{border-left-color:#e8eaf6!important}.indigo-100-bg{background-color:#c5cae9!important}.md-indigo-100-bg{background-color:#c5cae9!important;color:rgba(0,0,0,.87)}.indigo-100-fg{color:#c5cae9!important}.indigo-100-border{border-color:#c5cae9!important}.indigo-100-border-top{border-top-color:#c5cae9!important}.indigo-100-border-right{border-right-color:#c5cae9!important}.indigo-100-border-bottom{border-bottom-color:#c5cae9!important}.indigo-100-border-left{border-left-color:#c5cae9!important}.indigo-200-bg{background-color:#9fa8da!important}.md-indigo-200-bg{background-color:#9fa8da!important;color:rgba(0,0,0,.87)}.indigo-200-fg{color:#9fa8da!important}.indigo-200-border{border-color:#9fa8da!important}.indigo-200-border-top{border-top-color:#9fa8da!important}.indigo-200-border-right{border-right-color:#9fa8da!important}.indigo-200-border-bottom{border-bottom-color:#9fa8da!important}.indigo-200-border-left{border-left-color:#9fa8da!important}.indigo-300-bg{background-color:#7986cb!important}.md-indigo-300-bg{background-color:#7986cb!important;color:#fff}.indigo-300-fg{color:#7986cb!important}.indigo-300-border{border-color:#7986cb!important}.indigo-300-border-top{border-top-color:#7986cb!important}.indigo-300-border-right{border-right-color:#7986cb!important}.indigo-300-border-bottom{border-bottom-color:#7986cb!important}.indigo-300-border-left{border-left-color:#7986cb!important}.indigo-400-bg{background-color:#5c6bc0!important}.md-indigo-400-bg{background-color:#5c6bc0!important;color:#fff}.indigo-400-fg{color:#5c6bc0!important}.indigo-400-border{border-color:#5c6bc0!important}.indigo-400-border-top{border-top-color:#5c6bc0!important}.indigo-400-border-right{border-right-color:#5c6bc0!important}.indigo-400-border-bottom{border-bottom-color:#5c6bc0!important}.indigo-400-border-left{border-left-color:#5c6bc0!important}.indigo-500-bg{background-color:#3f51b5!important}.md-indigo-500-bg{background-color:#3f51b5!important;color:rgba(255,255,255,.87)}.indigo-500-fg{color:#3f51b5!important}.indigo-500-border{border-color:#3f51b5!important}.indigo-500-border-top{border-top-color:#3f51b5!important}.indigo-500-border-right{border-right-color:#3f51b5!important}.indigo-500-border-bottom{border-bottom-color:#3f51b5!important}.indigo-500-border-left{border-left-color:#3f51b5!important}.md-indigo-bg{background-color:#3f51b5!important;color:rgba(255,255,255,.87)}.indigo-bg{background-color:#3f51b5!important}.indigo-fg{color:#3f51b5!important}.indigo-border{border-color:#3f51b5!important}.indigo-border-top{border-top-color:#3f51b5!important}.indigo-border-right{border-right-color:#3f51b5!important}.indigo-border-bottom{border-bottom-color:#3f51b5!important}.indigo-border-left{border-left-color:#3f51b5!important}.indigo-600-bg{background-color:#3949ab!important}.md-indigo-600-bg{background-color:#3949ab!important;color:rgba(255,255,255,.87)}.indigo-600-fg{color:#3949ab!important}.indigo-600-border{border-color:#3949ab!important}.indigo-600-border-top{border-top-color:#3949ab!important}.indigo-600-border-right{border-right-color:#3949ab!important}.indigo-600-border-bottom{border-bottom-color:#3949ab!important}.indigo-600-border-left{border-left-color:#3949ab!important}.indigo-700-bg{background-color:#303f9f!important}.md-indigo-700-bg{background-color:#303f9f!important;color:rgba(255,255,255,.87)}.indigo-700-fg{color:#303f9f!important}.indigo-700-border{border-color:#303f9f!important}.indigo-700-border-top{border-top-color:#303f9f!important}.indigo-700-border-right{border-right-color:#303f9f!important}.indigo-700-border-bottom{border-bottom-color:#303f9f!important}.indigo-700-border-left{border-left-color:#303f9f!important}.indigo-800-bg{background-color:#283593!important}.md-indigo-800-bg{background-color:#283593!important;color:rgba(255,255,255,.87)}.indigo-800-fg{color:#283593!important}.indigo-800-border{border-color:#283593!important}.indigo-800-border-top{border-top-color:#283593!important}.indigo-800-border-right{border-right-color:#283593!important}.indigo-800-border-bottom{border-bottom-color:#283593!important}.indigo-800-border-left{border-left-color:#283593!important}.indigo-900-bg{background-color:#1a237e!important}.md-indigo-900-bg{background-color:#1a237e!important;color:rgba(255,255,255,.87)}.indigo-900-fg{color:#1a237e!important}.indigo-900-border{border-color:#1a237e!important}.indigo-900-border-top{border-top-color:#1a237e!important}.indigo-900-border-right{border-right-color:#1a237e!important}.indigo-900-border-bottom{border-bottom-color:#1a237e!important}.indigo-900-border-left{border-left-color:#1a237e!important}.indigo-A100-bg{background-color:#8c9eff!important}.md-indigo-A100-bg{background-color:#8c9eff!important;color:rgba(0,0,0,.87)}.indigo-A100-fg{color:#8c9eff!important}.indigo-A100-border{border-color:#8c9eff!important}.indigo-A100-border-top{border-top-color:#8c9eff!important}.indigo-A100-border-right{border-right-color:#8c9eff!important}.indigo-A100-border-bottom{border-bottom-color:#8c9eff!important}.indigo-A100-border-left{border-left-color:#8c9eff!important}.indigo-A200-bg{background-color:#536dfe!important}.md-indigo-A200-bg{background-color:#536dfe!important;color:#fff}.indigo-A200-fg{color:#536dfe!important}.indigo-A200-border{border-color:#536dfe!important}.indigo-A200-border-top{border-top-color:#536dfe!important}.indigo-A200-border-right{border-right-color:#536dfe!important}.indigo-A200-border-bottom{border-bottom-color:#536dfe!important}.indigo-A200-border-left{border-left-color:#536dfe!important}.indigo-A400-bg{background-color:#3d5afe!important}.md-indigo-A400-bg{background-color:#3d5afe!important;color:#fff}.indigo-A400-fg{color:#3d5afe!important}.indigo-A400-border{border-color:#3d5afe!important}.indigo-A400-border-top{border-top-color:#3d5afe!important}.indigo-A400-border-right{border-right-color:#3d5afe!important}.indigo-A400-border-bottom{border-bottom-color:#3d5afe!important}.indigo-A400-border-left{border-left-color:#3d5afe!important}.indigo-A700-bg{background-color:#304ffe!important}.md-indigo-A700-bg{background-color:#304ffe!important;color:rgba(255,255,255,.87)}.indigo-A700-fg{color:#304ffe!important}.indigo-A700-border{border-color:#304ffe!important}.indigo-A700-border-top{border-top-color:#304ffe!important}.indigo-A700-border-right{border-right-color:#304ffe!important}.indigo-A700-border-bottom{border-bottom-color:#304ffe!important}.indigo-A700-border-left{border-left-color:#304ffe!important}.blue-50-bg{background-color:#e3f2fd!important}.md-blue-50-bg{background-color:#e3f2fd!important;color:rgba(0,0,0,.87)}.blue-50-fg{color:#e3f2fd!important}.blue-50-border{border-color:#e3f2fd!important}.blue-50-border-top{border-top-color:#e3f2fd!important}.blue-50-border-right{border-right-color:#e3f2fd!important}.blue-50-border-bottom{border-bottom-color:#e3f2fd!important}.blue-50-border-left{border-left-color:#e3f2fd!important}.blue-100-bg{background-color:#bbdefb!important}.md-blue-100-bg{background-color:#bbdefb!important;color:rgba(0,0,0,.87)}.blue-100-fg{color:#bbdefb!important}.blue-100-border{border-color:#bbdefb!important}.blue-100-border-top{border-top-color:#bbdefb!important}.blue-100-border-right{border-right-color:#bbdefb!important}.blue-100-border-bottom{border-bottom-color:#bbdefb!important}.blue-100-border-left{border-left-color:#bbdefb!important}.blue-200-bg{background-color:#90caf9!important}.md-blue-200-bg{background-color:#90caf9!important;color:rgba(0,0,0,.87)}.blue-200-fg{color:#90caf9!important}.blue-200-border{border-color:#90caf9!important}.blue-200-border-top{border-top-color:#90caf9!important}.blue-200-border-right{border-right-color:#90caf9!important}.blue-200-border-bottom{border-bottom-color:#90caf9!important}.blue-200-border-left{border-left-color:#90caf9!important}.blue-300-bg{background-color:#64b5f6!important}.md-blue-300-bg{background-color:#64b5f6!important;color:rgba(0,0,0,.87)}.blue-300-fg{color:#64b5f6!important}.blue-300-border{border-color:#64b5f6!important}.blue-300-border-top{border-top-color:#64b5f6!important}.blue-300-border-right{border-right-color:#64b5f6!important}.blue-300-border-bottom{border-bottom-color:#64b5f6!important}.blue-300-border-left{border-left-color:#64b5f6!important}.blue-400-bg{background-color:#42a5f5!important}.md-blue-400-bg{background-color:#42a5f5!important;color:rgba(0,0,0,.87)}.blue-400-fg{color:#42a5f5!important}.blue-400-border{border-color:#42a5f5!important}.blue-400-border-top{border-top-color:#42a5f5!important}.blue-400-border-right{border-right-color:#42a5f5!important}.blue-400-border-bottom{border-bottom-color:#42a5f5!important}.blue-400-border-left{border-left-color:#42a5f5!important}.blue-500-bg{background-color:#2196f3!important}.md-blue-500-bg{background-color:#2196f3!important;color:#fff}.blue-500-fg{color:#2196f3!important}.blue-500-border{border-color:#2196f3!important}.blue-500-border-top{border-top-color:#2196f3!important}.blue-500-border-right{border-right-color:#2196f3!important}.blue-500-border-bottom{border-bottom-color:#2196f3!important}.blue-500-border-left{border-left-color:#2196f3!important}.md-blue-bg{background-color:#2196f3!important;color:#fff}.blue-bg{background-color:#2196f3!important}.blue-fg{color:#2196f3!important}.blue-border{border-color:#2196f3!important}.blue-border-top{border-top-color:#2196f3!important}.blue-border-right{border-right-color:#2196f3!important}.blue-border-bottom{border-bottom-color:#2196f3!important}.blue-border-left{border-left-color:#2196f3!important}.blue-600-bg{background-color:#1e88e5!important}.md-blue-600-bg{background-color:#1e88e5!important;color:#fff}.blue-600-fg{color:#1e88e5!important}.blue-600-border{border-color:#1e88e5!important}.blue-600-border-top{border-top-color:#1e88e5!important}.blue-600-border-right{border-right-color:#1e88e5!important}.blue-600-border-bottom{border-bottom-color:#1e88e5!important}.blue-600-border-left{border-left-color:#1e88e5!important}.blue-700-bg{background-color:#1976d2!important}.md-blue-700-bg{background-color:#1976d2!important;color:#fff}.blue-700-fg{color:#1976d2!important}.blue-700-border{border-color:#1976d2!important}.blue-700-border-top{border-top-color:#1976d2!important}.blue-700-border-right{border-right-color:#1976d2!important}.blue-700-border-bottom{border-bottom-color:#1976d2!important}.blue-700-border-left{border-left-color:#1976d2!important}.blue-800-bg{background-color:#1565c0!important}.md-blue-800-bg{background-color:#1565c0!important;color:rgba(255,255,255,.87)}.blue-800-fg{color:#1565c0!important}.blue-800-border{border-color:#1565c0!important}.blue-800-border-top{border-top-color:#1565c0!important}.blue-800-border-right{border-right-color:#1565c0!important}.blue-800-border-bottom{border-bottom-color:#1565c0!important}.blue-800-border-left{border-left-color:#1565c0!important}.blue-900-bg{background-color:#0d47a1!important}.md-blue-900-bg{background-color:#0d47a1!important;color:rgba(255,255,255,.87)}.blue-900-fg{color:#0d47a1!important}.blue-900-border{border-color:#0d47a1!important}.blue-900-border-top{border-top-color:#0d47a1!important}.blue-900-border-right{border-right-color:#0d47a1!important}.blue-900-border-bottom{border-bottom-color:#0d47a1!important}.blue-900-border-left{border-left-color:#0d47a1!important}.blue-A100-bg{background-color:#82b1ff!important}.md-blue-A100-bg{background-color:#82b1ff!important;color:rgba(0,0,0,.87)}.blue-A100-fg{color:#82b1ff!important}.blue-A100-border{border-color:#82b1ff!important}.blue-A100-border-top{border-top-color:#82b1ff!important}.blue-A100-border-right{border-right-color:#82b1ff!important}.blue-A100-border-bottom{border-bottom-color:#82b1ff!important}.blue-A100-border-left{border-left-color:#82b1ff!important}.blue-A200-bg{background-color:#448aff!important}.md-blue-A200-bg{background-color:#448aff!important;color:#fff}.blue-A200-fg{color:#448aff!important}.blue-A200-border{border-color:#448aff!important}.blue-A200-border-top{border-top-color:#448aff!important}.blue-A200-border-right{border-right-color:#448aff!important}.blue-A200-border-bottom{border-bottom-color:#448aff!important}.blue-A200-border-left{border-left-color:#448aff!important}.blue-A400-bg{background-color:#2979ff!important}.md-blue-A400-bg{background-color:#2979ff!important;color:#fff}.blue-A400-fg{color:#2979ff!important}.blue-A400-border{border-color:#2979ff!important}.blue-A400-border-top{border-top-color:#2979ff!important}.blue-A400-border-right{border-right-color:#2979ff!important}.blue-A400-border-bottom{border-bottom-color:#2979ff!important}.blue-A400-border-left{border-left-color:#2979ff!important}.blue-A700-bg{background-color:#2962ff!important}.md-blue-A700-bg{background-color:#2962ff!important;color:#fff}.blue-A700-fg{color:#2962ff!important}.blue-A700-border{border-color:#2962ff!important}.blue-A700-border-top{border-top-color:#2962ff!important}.blue-A700-border-right{border-right-color:#2962ff!important}.blue-A700-border-bottom{border-bottom-color:#2962ff!important}.blue-A700-border-left{border-left-color:#2962ff!important}.light-blue-50-bg{background-color:#e1f5fe!important}.md-light-blue-50-bg{background-color:#e1f5fe!important;color:rgba(0,0,0,.87)}.light-blue-50-fg{color:#e1f5fe!important}.light-blue-50-border{border-color:#e1f5fe!important}.light-blue-50-border-top{border-top-color:#e1f5fe!important}.light-blue-50-border-right{border-right-color:#e1f5fe!important}.light-blue-50-border-bottom{border-bottom-color:#e1f5fe!important}.light-blue-50-border-left{border-left-color:#e1f5fe!important}.light-blue-100-bg{background-color:#b3e5fc!important}.md-light-blue-100-bg{background-color:#b3e5fc!important;color:rgba(0,0,0,.87)}.light-blue-100-fg{color:#b3e5fc!important}.light-blue-100-border{border-color:#b3e5fc!important}.light-blue-100-border-top{border-top-color:#b3e5fc!important}.light-blue-100-border-right{border-right-color:#b3e5fc!important}.light-blue-100-border-bottom{border-bottom-color:#b3e5fc!important}.light-blue-100-border-left{border-left-color:#b3e5fc!important}.light-blue-200-bg{background-color:#81d4fa!important}.md-light-blue-200-bg{background-color:#81d4fa!important;color:rgba(0,0,0,.87)}.light-blue-200-fg{color:#81d4fa!important}.light-blue-200-border{border-color:#81d4fa!important}.light-blue-200-border-top{border-top-color:#81d4fa!important}.light-blue-200-border-right{border-right-color:#81d4fa!important}.light-blue-200-border-bottom{border-bottom-color:#81d4fa!important}.light-blue-200-border-left{border-left-color:#81d4fa!important}.light-blue-300-bg{background-color:#4fc3f7!important}.md-light-blue-300-bg{background-color:#4fc3f7!important;color:rgba(0,0,0,.87)}.light-blue-300-fg{color:#4fc3f7!important}.light-blue-300-border{border-color:#4fc3f7!important}.light-blue-300-border-top{border-top-color:#4fc3f7!important}.light-blue-300-border-right{border-right-color:#4fc3f7!important}.light-blue-300-border-bottom{border-bottom-color:#4fc3f7!important}.light-blue-300-border-left{border-left-color:#4fc3f7!important}.light-blue-400-bg{background-color:#29b6f6!important}.md-light-blue-400-bg{background-color:#29b6f6!important;color:rgba(0,0,0,.87)}.light-blue-400-fg{color:#29b6f6!important}.light-blue-400-border{border-color:#29b6f6!important}.light-blue-400-border-top{border-top-color:#29b6f6!important}.light-blue-400-border-right{border-right-color:#29b6f6!important}.light-blue-400-border-bottom{border-bottom-color:#29b6f6!important}.light-blue-400-border-left{border-left-color:#29b6f6!important}.light-blue-500-bg{background-color:#03a9f4!important}.md-light-blue-500-bg{background-color:#03a9f4!important;color:rgba(0,0,0,.87)}.light-blue-500-fg{color:#03a9f4!important}.light-blue-500-border{border-color:#03a9f4!important}.light-blue-500-border-top{border-top-color:#03a9f4!important}.light-blue-500-border-right{border-right-color:#03a9f4!important}.light-blue-500-border-bottom{border-bottom-color:#03a9f4!important}.light-blue-500-border-left{border-left-color:#03a9f4!important}.md-light-blue-bg{background-color:#03a9f4!important;color:rgba(0,0,0,.87)}.light-blue-bg{background-color:#03a9f4!important}.light-blue-fg{color:#03a9f4!important}.light-blue-border{border-color:#03a9f4!important}.light-blue-border-top{border-top-color:#03a9f4!important}.light-blue-border-right{border-right-color:#03a9f4!important}.light-blue-border-bottom{border-bottom-color:#03a9f4!important}.light-blue-border-left{border-left-color:#03a9f4!important}.light-blue-600-bg{background-color:#039be5!important}.md-light-blue-600-bg{background-color:#039be5!important;color:#fff}.light-blue-600-fg{color:#039be5!important}.light-blue-600-border{border-color:#039be5!important}.light-blue-600-border-top{border-top-color:#039be5!important}.light-blue-600-border-right{border-right-color:#039be5!important}.light-blue-600-border-bottom{border-bottom-color:#039be5!important}.light-blue-600-border-left{border-left-color:#039be5!important}.light-blue-700-bg{background-color:#0288d1!important}.md-light-blue-700-bg{background-color:#0288d1!important;color:#fff}.light-blue-700-fg{color:#0288d1!important}.light-blue-700-border{border-color:#0288d1!important}.light-blue-700-border-top{border-top-color:#0288d1!important}.light-blue-700-border-right{border-right-color:#0288d1!important}.light-blue-700-border-bottom{border-bottom-color:#0288d1!important}.light-blue-700-border-left{border-left-color:#0288d1!important}.light-blue-800-bg{background-color:#0277bd!important}.md-light-blue-800-bg{background-color:#0277bd!important;color:#fff}.light-blue-800-fg{color:#0277bd!important}.light-blue-800-border{border-color:#0277bd!important}.light-blue-800-border-top{border-top-color:#0277bd!important}.light-blue-800-border-right{border-right-color:#0277bd!important}.light-blue-800-border-bottom{border-bottom-color:#0277bd!important}.light-blue-800-border-left{border-left-color:#0277bd!important}.light-blue-900-bg{background-color:#01579b!important}.md-light-blue-900-bg{background-color:#01579b!important;color:#fff}.light-blue-900-fg{color:#01579b!important}.light-blue-900-border{border-color:#01579b!important}.light-blue-900-border-top{border-top-color:#01579b!important}.light-blue-900-border-right{border-right-color:#01579b!important}.light-blue-900-border-bottom{border-bottom-color:#01579b!important}.light-blue-900-border-left{border-left-color:#01579b!important}.light-blue-A100-bg{background-color:#80d8ff!important}.md-light-blue-A100-bg{background-color:#80d8ff!important;color:rgba(0,0,0,.87)}.light-blue-A100-fg{color:#80d8ff!important}.light-blue-A100-border{border-color:#80d8ff!important}.light-blue-A100-border-top{border-top-color:#80d8ff!important}.light-blue-A100-border-right{border-right-color:#80d8ff!important}.light-blue-A100-border-bottom{border-bottom-color:#80d8ff!important}.light-blue-A100-border-left{border-left-color:#80d8ff!important}.light-blue-A200-bg{background-color:#40c4ff!important}.md-light-blue-A200-bg{background-color:#40c4ff!important;color:rgba(0,0,0,.87)}.light-blue-A200-fg{color:#40c4ff!important}.light-blue-A200-border{border-color:#40c4ff!important}.light-blue-A200-border-top{border-top-color:#40c4ff!important}.light-blue-A200-border-right{border-right-color:#40c4ff!important}.light-blue-A200-border-bottom{border-bottom-color:#40c4ff!important}.light-blue-A200-border-left{border-left-color:#40c4ff!important}.light-blue-A400-bg{background-color:#00b0ff!important}.md-light-blue-A400-bg{background-color:#00b0ff!important;color:rgba(0,0,0,.87)}.light-blue-A400-fg{color:#00b0ff!important}.light-blue-A400-border{border-color:#00b0ff!important}.light-blue-A400-border-top{border-top-color:#00b0ff!important}.light-blue-A400-border-right{border-right-color:#00b0ff!important}.light-blue-A400-border-bottom{border-bottom-color:#00b0ff!important}.light-blue-A400-border-left{border-left-color:#00b0ff!important}.light-blue-A700-bg{background-color:#0091ea!important}.md-light-blue-A700-bg{background-color:#0091ea!important;color:#fff}.light-blue-A700-fg{color:#0091ea!important}.light-blue-A700-border{border-color:#0091ea!important}.light-blue-A700-border-top{border-top-color:#0091ea!important}.light-blue-A700-border-right{border-right-color:#0091ea!important}.light-blue-A700-border-bottom{border-bottom-color:#0091ea!important}.light-blue-A700-border-left{border-left-color:#0091ea!important}.cyan-50-bg{background-color:#e0f7fa!important}.md-cyan-50-bg{background-color:#e0f7fa!important;color:rgba(0,0,0,.87)}.cyan-50-fg{color:#e0f7fa!important}.cyan-50-border{border-color:#e0f7fa!important}.cyan-50-border-top{border-top-color:#e0f7fa!important}.cyan-50-border-right{border-right-color:#e0f7fa!important}.cyan-50-border-bottom{border-bottom-color:#e0f7fa!important}.cyan-50-border-left{border-left-color:#e0f7fa!important}.cyan-100-bg{background-color:#b2ebf2!important}.md-cyan-100-bg{background-color:#b2ebf2!important;color:rgba(0,0,0,.87)}.cyan-100-fg{color:#b2ebf2!important}.cyan-100-border{border-color:#b2ebf2!important}.cyan-100-border-top{border-top-color:#b2ebf2!important}.cyan-100-border-right{border-right-color:#b2ebf2!important}.cyan-100-border-bottom{border-bottom-color:#b2ebf2!important}.cyan-100-border-left{border-left-color:#b2ebf2!important}.cyan-200-bg{background-color:#80deea!important}.md-cyan-200-bg{background-color:#80deea!important;color:rgba(0,0,0,.87)}.cyan-200-fg{color:#80deea!important}.cyan-200-border{border-color:#80deea!important}.cyan-200-border-top{border-top-color:#80deea!important}.cyan-200-border-right{border-right-color:#80deea!important}.cyan-200-border-bottom{border-bottom-color:#80deea!important}.cyan-200-border-left{border-left-color:#80deea!important}.cyan-300-bg{background-color:#4dd0e1!important}.md-cyan-300-bg{background-color:#4dd0e1!important;color:rgba(0,0,0,.87)}.cyan-300-fg{color:#4dd0e1!important}.cyan-300-border{border-color:#4dd0e1!important}.cyan-300-border-top{border-top-color:#4dd0e1!important}.cyan-300-border-right{border-right-color:#4dd0e1!important}.cyan-300-border-bottom{border-bottom-color:#4dd0e1!important}.cyan-300-border-left{border-left-color:#4dd0e1!important}.cyan-400-bg{background-color:#26c6da!important}.md-cyan-400-bg{background-color:#26c6da!important;color:rgba(0,0,0,.87)}.cyan-400-fg{color:#26c6da!important}.cyan-400-border{border-color:#26c6da!important}.cyan-400-border-top{border-top-color:#26c6da!important}.cyan-400-border-right{border-right-color:#26c6da!important}.cyan-400-border-bottom{border-bottom-color:#26c6da!important}.cyan-400-border-left{border-left-color:#26c6da!important}.cyan-500-bg{background-color:#00bcd4!important}.md-cyan-500-bg{background-color:#00bcd4!important;color:rgba(0,0,0,.87)}.cyan-500-fg{color:#00bcd4!important}.cyan-500-border{border-color:#00bcd4!important}.cyan-500-border-top{border-top-color:#00bcd4!important}.cyan-500-border-right{border-right-color:#00bcd4!important}.cyan-500-border-bottom{border-bottom-color:#00bcd4!important}.cyan-500-border-left{border-left-color:#00bcd4!important}.md-cyan-bg{background-color:#00bcd4!important;color:rgba(0,0,0,.87)}.cyan-bg{background-color:#00bcd4!important}.cyan-fg{color:#00bcd4!important}.cyan-border{border-color:#00bcd4!important}.cyan-border-top{border-top-color:#00bcd4!important}.cyan-border-right{border-right-color:#00bcd4!important}.cyan-border-bottom{border-bottom-color:#00bcd4!important}.cyan-border-left{border-left-color:#00bcd4!important}.cyan-600-bg{background-color:#00acc1!important}.md-cyan-600-bg{background-color:#00acc1!important;color:rgba(0,0,0,.87)}.cyan-600-fg{color:#00acc1!important}.cyan-600-border{border-color:#00acc1!important}.cyan-600-border-top{border-top-color:#00acc1!important}.cyan-600-border-right{border-right-color:#00acc1!important}.cyan-600-border-bottom{border-bottom-color:#00acc1!important}.cyan-600-border-left{border-left-color:#00acc1!important}.cyan-700-bg{background-color:#0097a7!important}.md-cyan-700-bg{background-color:#0097a7!important;color:#fff}.cyan-700-fg{color:#0097a7!important}.cyan-700-border{border-color:#0097a7!important}.cyan-700-border-top{border-top-color:#0097a7!important}.cyan-700-border-right{border-right-color:#0097a7!important}.cyan-700-border-bottom{border-bottom-color:#0097a7!important}.cyan-700-border-left{border-left-color:#0097a7!important}.cyan-800-bg{background-color:#00838f!important}.md-cyan-800-bg{background-color:#00838f!important;color:#fff}.cyan-800-fg{color:#00838f!important}.cyan-800-border{border-color:#00838f!important}.cyan-800-border-top{border-top-color:#00838f!important}.cyan-800-border-right{border-right-color:#00838f!important}.cyan-800-border-bottom{border-bottom-color:#00838f!important}.cyan-800-border-left{border-left-color:#00838f!important}.cyan-900-bg{background-color:#006064!important}.md-cyan-900-bg{background-color:#006064!important;color:#fff}.cyan-900-fg{color:#006064!important}.cyan-900-border{border-color:#006064!important}.cyan-900-border-top{border-top-color:#006064!important}.cyan-900-border-right{border-right-color:#006064!important}.cyan-900-border-bottom{border-bottom-color:#006064!important}.cyan-900-border-left{border-left-color:#006064!important}.cyan-A100-bg{background-color:#84ffff!important}.md-cyan-A100-bg{background-color:#84ffff!important;color:rgba(0,0,0,.87)}.cyan-A100-fg{color:#84ffff!important}.cyan-A100-border{border-color:#84ffff!important}.cyan-A100-border-top{border-top-color:#84ffff!important}.cyan-A100-border-right{border-right-color:#84ffff!important}.cyan-A100-border-bottom{border-bottom-color:#84ffff!important}.cyan-A100-border-left{border-left-color:#84ffff!important}.cyan-A200-bg{background-color:#18ffff!important}.md-cyan-A200-bg{background-color:#18ffff!important;color:rgba(0,0,0,.87)}.cyan-A200-fg{color:#18ffff!important}.cyan-A200-border{border-color:#18ffff!important}.cyan-A200-border-top{border-top-color:#18ffff!important}.cyan-A200-border-right{border-right-color:#18ffff!important}.cyan-A200-border-bottom{border-bottom-color:#18ffff!important}.cyan-A200-border-left{border-left-color:#18ffff!important}.cyan-A400-bg{background-color:#00e5ff!important}.md-cyan-A400-bg{background-color:#00e5ff!important;color:rgba(0,0,0,.87)}.cyan-A400-fg{color:#00e5ff!important}.cyan-A400-border{border-color:#00e5ff!important}.cyan-A400-border-top{border-top-color:#00e5ff!important}.cyan-A400-border-right{border-right-color:#00e5ff!important}.cyan-A400-border-bottom{border-bottom-color:#00e5ff!important}.cyan-A400-border-left{border-left-color:#00e5ff!important}.cyan-A700-bg{background-color:#00b8d4!important}.md-cyan-A700-bg{background-color:#00b8d4!important;color:rgba(0,0,0,.87)}.cyan-A700-fg{color:#00b8d4!important}.cyan-A700-border{border-color:#00b8d4!important}.cyan-A700-border-top{border-top-color:#00b8d4!important}.cyan-A700-border-right{border-right-color:#00b8d4!important}.cyan-A700-border-bottom{border-bottom-color:#00b8d4!important}.cyan-A700-border-left{border-left-color:#00b8d4!important}.teal-50-bg{background-color:#e0f2f1!important}.md-teal-50-bg{background-color:#e0f2f1!important;color:rgba(0,0,0,.87)}.teal-50-fg{color:#e0f2f1!important}.teal-50-border{border-color:#e0f2f1!important}.teal-50-border-top{border-top-color:#e0f2f1!important}.teal-50-border-right{border-right-color:#e0f2f1!important}.teal-50-border-bottom{border-bottom-color:#e0f2f1!important}.teal-50-border-left{border-left-color:#e0f2f1!important}.teal-100-bg{background-color:#b2dfdb!important}.md-teal-100-bg{background-color:#b2dfdb!important;color:rgba(0,0,0,.87)}.teal-100-fg{color:#b2dfdb!important}.teal-100-border{border-color:#b2dfdb!important}.teal-100-border-top{border-top-color:#b2dfdb!important}.teal-100-border-right{border-right-color:#b2dfdb!important}.teal-100-border-bottom{border-bottom-color:#b2dfdb!important}.teal-100-border-left{border-left-color:#b2dfdb!important}.teal-200-bg{background-color:#80cbc4!important}.md-teal-200-bg{background-color:#80cbc4!important;color:rgba(0,0,0,.87)}.teal-200-fg{color:#80cbc4!important}.teal-200-border{border-color:#80cbc4!important}.teal-200-border-top{border-top-color:#80cbc4!important}.teal-200-border-right{border-right-color:#80cbc4!important}.teal-200-border-bottom{border-bottom-color:#80cbc4!important}.teal-200-border-left{border-left-color:#80cbc4!important}.teal-300-bg{background-color:#4db6ac!important}.md-teal-300-bg{background-color:#4db6ac!important;color:rgba(0,0,0,.87)}.teal-300-fg{color:#4db6ac!important}.teal-300-border{border-color:#4db6ac!important}.teal-300-border-top{border-top-color:#4db6ac!important}.teal-300-border-right{border-right-color:#4db6ac!important}.teal-300-border-bottom{border-bottom-color:#4db6ac!important}.teal-300-border-left{border-left-color:#4db6ac!important}.teal-400-bg{background-color:#26a69a!important}.md-teal-400-bg{background-color:#26a69a!important;color:rgba(0,0,0,.87)}.teal-400-fg{color:#26a69a!important}.teal-400-border{border-color:#26a69a!important}.teal-400-border-top{border-top-color:#26a69a!important}.teal-400-border-right{border-right-color:#26a69a!important}.teal-400-border-bottom{border-bottom-color:#26a69a!important}.teal-400-border-left{border-left-color:#26a69a!important}.teal-500-bg{background-color:#009688!important}.md-teal-500-bg{background-color:#009688!important;color:#fff}.teal-500-fg{color:#009688!important}.teal-500-border{border-color:#009688!important}.teal-500-border-top{border-top-color:#009688!important}.teal-500-border-right{border-right-color:#009688!important}.teal-500-border-bottom{border-bottom-color:#009688!important}.teal-500-border-left{border-left-color:#009688!important}.md-teal-bg{background-color:#009688!important;color:#fff}.teal-bg{background-color:#009688!important}.teal-fg{color:#009688!important}.teal-border{border-color:#009688!important}.teal-border-top{border-top-color:#009688!important}.teal-border-right{border-right-color:#009688!important}.teal-border-bottom{border-bottom-color:#009688!important}.teal-border-left{border-left-color:#009688!important}.teal-600-bg{background-color:#00897b!important}.md-teal-600-bg{background-color:#00897b!important;color:#fff}.teal-600-fg{color:#00897b!important}.teal-600-border{border-color:#00897b!important}.teal-600-border-top{border-top-color:#00897b!important}.teal-600-border-right{border-right-color:#00897b!important}.teal-600-border-bottom{border-bottom-color:#00897b!important}.teal-600-border-left{border-left-color:#00897b!important}.teal-700-bg{background-color:#00796b!important}.md-teal-700-bg{background-color:#00796b!important;color:#fff}.teal-700-fg{color:#00796b!important}.teal-700-border{border-color:#00796b!important}.teal-700-border-top{border-top-color:#00796b!important}.teal-700-border-right{border-right-color:#00796b!important}.teal-700-border-bottom{border-bottom-color:#00796b!important}.teal-700-border-left{border-left-color:#00796b!important}.teal-800-bg{background-color:#00695c!important}.md-teal-800-bg{background-color:#00695c!important;color:rgba(255,255,255,.87)}.teal-800-fg{color:#00695c!important}.teal-800-border{border-color:#00695c!important}.teal-800-border-top{border-top-color:#00695c!important}.teal-800-border-right{border-right-color:#00695c!important}.teal-800-border-bottom{border-bottom-color:#00695c!important}.teal-800-border-left{border-left-color:#00695c!important}.teal-900-bg{background-color:#004d40!important}.md-teal-900-bg{background-color:#004d40!important;color:rgba(255,255,255,.87)}.teal-900-fg{color:#004d40!important}.teal-900-border{border-color:#004d40!important}.teal-900-border-top{border-top-color:#004d40!important}.teal-900-border-right{border-right-color:#004d40!important}.teal-900-border-bottom{border-bottom-color:#004d40!important}.teal-900-border-left{border-left-color:#004d40!important}.teal-A100-bg{background-color:#a7ffeb!important}.md-teal-A100-bg{background-color:#a7ffeb!important;color:rgba(0,0,0,.87)}.teal-A100-fg{color:#a7ffeb!important}.teal-A100-border{border-color:#a7ffeb!important}.teal-A100-border-top{border-top-color:#a7ffeb!important}.teal-A100-border-right{border-right-color:#a7ffeb!important}.teal-A100-border-bottom{border-bottom-color:#a7ffeb!important}.teal-A100-border-left{border-left-color:#a7ffeb!important}.teal-A200-bg{background-color:#64ffda!important}.md-teal-A200-bg{background-color:#64ffda!important;color:rgba(0,0,0,.87)}.teal-A200-fg{color:#64ffda!important}.teal-A200-border{border-color:#64ffda!important}.teal-A200-border-top{border-top-color:#64ffda!important}.teal-A200-border-right{border-right-color:#64ffda!important}.teal-A200-border-bottom{border-bottom-color:#64ffda!important}.teal-A200-border-left{border-left-color:#64ffda!important}.teal-A400-bg{background-color:#1de9b6!important}.md-teal-A400-bg{background-color:#1de9b6!important;color:rgba(0,0,0,.87)}.teal-A400-fg{color:#1de9b6!important}.teal-A400-border{border-color:#1de9b6!important}.teal-A400-border-top{border-top-color:#1de9b6!important}.teal-A400-border-right{border-right-color:#1de9b6!important}.teal-A400-border-bottom{border-bottom-color:#1de9b6!important}.teal-A400-border-left{border-left-color:#1de9b6!important}.teal-A700-bg{background-color:#00bfa5!important}.md-teal-A700-bg{background-color:#00bfa5!important;color:rgba(0,0,0,.87)}.teal-A700-fg{color:#00bfa5!important}.teal-A700-border{border-color:#00bfa5!important}.teal-A700-border-top{border-top-color:#00bfa5!important}.teal-A700-border-right{border-right-color:#00bfa5!important}.teal-A700-border-bottom{border-bottom-color:#00bfa5!important}.teal-A700-border-left{border-left-color:#00bfa5!important}.green-50-bg{background-color:#e8f5e9!important}.md-green-50-bg{background-color:#e8f5e9!important;color:rgba(0,0,0,.87)}.green-50-fg{color:#e8f5e9!important}.green-50-border{border-color:#e8f5e9!important}.green-50-border-top{border-top-color:#e8f5e9!important}.green-50-border-right{border-right-color:#e8f5e9!important}.green-50-border-bottom{border-bottom-color:#e8f5e9!important}.green-50-border-left{border-left-color:#e8f5e9!important}.green-100-bg{background-color:#c8e6c9!important}.md-green-100-bg{background-color:#c8e6c9!important;color:rgba(0,0,0,.87)}.green-100-fg{color:#c8e6c9!important}.green-100-border{border-color:#c8e6c9!important}.green-100-border-top{border-top-color:#c8e6c9!important}.green-100-border-right{border-right-color:#c8e6c9!important}.green-100-border-bottom{border-bottom-color:#c8e6c9!important}.green-100-border-left{border-left-color:#c8e6c9!important}.green-200-bg{background-color:#a5d6a7!important}.md-green-200-bg{background-color:#a5d6a7!important;color:rgba(0,0,0,.87)}.green-200-fg{color:#a5d6a7!important}.green-200-border{border-color:#a5d6a7!important}.green-200-border-top{border-top-color:#a5d6a7!important}.green-200-border-right{border-right-color:#a5d6a7!important}.green-200-border-bottom{border-bottom-color:#a5d6a7!important}.green-200-border-left{border-left-color:#a5d6a7!important}.green-300-bg{background-color:#81c784!important}.md-green-300-bg{background-color:#81c784!important;color:rgba(0,0,0,.87)}.green-300-fg{color:#81c784!important}.green-300-border{border-color:#81c784!important}.green-300-border-top{border-top-color:#81c784!important}.green-300-border-right{border-right-color:#81c784!important}.green-300-border-bottom{border-bottom-color:#81c784!important}.green-300-border-left{border-left-color:#81c784!important}.green-400-bg{background-color:#66bb6a!important}.md-green-400-bg{background-color:#66bb6a!important;color:rgba(0,0,0,.87)}.green-400-fg{color:#66bb6a!important}.green-400-border{border-color:#66bb6a!important}.green-400-border-top{border-top-color:#66bb6a!important}.green-400-border-right{border-right-color:#66bb6a!important}.green-400-border-bottom{border-bottom-color:#66bb6a!important}.green-400-border-left{border-left-color:#66bb6a!important}.green-500-bg{background-color:#4caf50!important}.md-green-500-bg{background-color:#4caf50!important;color:rgba(0,0,0,.87)}.green-500-fg{color:#4caf50!important}.green-500-border{border-color:#4caf50!important}.green-500-border-top{border-top-color:#4caf50!important}.green-500-border-right{border-right-color:#4caf50!important}.green-500-border-bottom{border-bottom-color:#4caf50!important}.green-500-border-left{border-left-color:#4caf50!important}.md-green-bg{background-color:#4caf50!important;color:rgba(0,0,0,.87)}.green-bg{background-color:#4caf50!important}.green-fg{color:#4caf50!important}.green-border{border-color:#4caf50!important}.green-border-top{border-top-color:#4caf50!important}.green-border-right{border-right-color:#4caf50!important}.green-border-bottom{border-bottom-color:#4caf50!important}.green-border-left{border-left-color:#4caf50!important}.green-600-bg{background-color:#43a047!important}.md-green-600-bg{background-color:#43a047!important;color:#fff}.green-600-fg{color:#43a047!important}.green-600-border{border-color:#43a047!important}.green-600-border-top{border-top-color:#43a047!important}.green-600-border-right{border-right-color:#43a047!important}.green-600-border-bottom{border-bottom-color:#43a047!important}.green-600-border-left{border-left-color:#43a047!important}.green-700-bg{background-color:#388e3c!important}.md-green-700-bg{background-color:#388e3c!important;color:#fff}.green-700-fg{color:#388e3c!important}.green-700-border{border-color:#388e3c!important}.green-700-border-top{border-top-color:#388e3c!important}.green-700-border-right{border-right-color:#388e3c!important}.green-700-border-bottom{border-bottom-color:#388e3c!important}.green-700-border-left{border-left-color:#388e3c!important}.green-800-bg{background-color:#2e7d32!important}.md-green-800-bg{background-color:#2e7d32!important;color:rgba(255,255,255,.87)}.green-800-fg{color:#2e7d32!important}.green-800-border{border-color:#2e7d32!important}.green-800-border-top{border-top-color:#2e7d32!important}.green-800-border-right{border-right-color:#2e7d32!important}.green-800-border-bottom{border-bottom-color:#2e7d32!important}.green-800-border-left{border-left-color:#2e7d32!important}.green-900-bg{background-color:#1b5e20!important}.md-green-900-bg{background-color:#1b5e20!important;color:rgba(255,255,255,.87)}.green-900-fg{color:#1b5e20!important}.green-900-border{border-color:#1b5e20!important}.green-900-border-top{border-top-color:#1b5e20!important}.green-900-border-right{border-right-color:#1b5e20!important}.green-900-border-bottom{border-bottom-color:#1b5e20!important}.green-900-border-left{border-left-color:#1b5e20!important}.green-A100-bg{background-color:#b9f6ca!important}.md-green-A100-bg{background-color:#b9f6ca!important;color:rgba(0,0,0,.87)}.green-A100-fg{color:#b9f6ca!important}.green-A100-border{border-color:#b9f6ca!important}.green-A100-border-top{border-top-color:#b9f6ca!important}.green-A100-border-right{border-right-color:#b9f6ca!important}.green-A100-border-bottom{border-bottom-color:#b9f6ca!important}.green-A100-border-left{border-left-color:#b9f6ca!important}.green-A200-bg{background-color:#69f0ae!important}.md-green-A200-bg{background-color:#69f0ae!important;color:rgba(0,0,0,.87)}.green-A200-fg{color:#69f0ae!important}.green-A200-border{border-color:#69f0ae!important}.green-A200-border-top{border-top-color:#69f0ae!important}.green-A200-border-right{border-right-color:#69f0ae!important}.green-A200-border-bottom{border-bottom-color:#69f0ae!important}.green-A200-border-left{border-left-color:#69f0ae!important}.green-A400-bg{background-color:#00e676!important}.md-green-A400-bg{background-color:#00e676!important;color:rgba(0,0,0,.87)}.green-A400-fg{color:#00e676!important}.green-A400-border{border-color:#00e676!important}.green-A400-border-top{border-top-color:#00e676!important}.green-A400-border-right{border-right-color:#00e676!important}.green-A400-border-bottom{border-bottom-color:#00e676!important}.green-A400-border-left{border-left-color:#00e676!important}.green-A700-bg{background-color:#00c853!important}.md-green-A700-bg{background-color:#00c853!important;color:rgba(0,0,0,.87)}.green-A700-fg{color:#00c853!important}.green-A700-border{border-color:#00c853!important}.green-A700-border-top{border-top-color:#00c853!important}.green-A700-border-right{border-right-color:#00c853!important}.green-A700-border-bottom{border-bottom-color:#00c853!important}.green-A700-border-left{border-left-color:#00c853!important}.light-green-50-bg{background-color:#f1f8e9!important}.md-light-green-50-bg{background-color:#f1f8e9!important;color:rgba(0,0,0,.87)}.light-green-50-fg{color:#f1f8e9!important}.light-green-50-border{border-color:#f1f8e9!important}.light-green-50-border-top{border-top-color:#f1f8e9!important}.light-green-50-border-right{border-right-color:#f1f8e9!important}.light-green-50-border-bottom{border-bottom-color:#f1f8e9!important}.light-green-50-border-left{border-left-color:#f1f8e9!important}.light-green-100-bg{background-color:#dcedc8!important}.md-light-green-100-bg{background-color:#dcedc8!important;color:rgba(0,0,0,.87)}.light-green-100-fg{color:#dcedc8!important}.light-green-100-border{border-color:#dcedc8!important}.light-green-100-border-top{border-top-color:#dcedc8!important}.light-green-100-border-right{border-right-color:#dcedc8!important}.light-green-100-border-bottom{border-bottom-color:#dcedc8!important}.light-green-100-border-left{border-left-color:#dcedc8!important}.light-green-200-bg{background-color:#c5e1a5!important}.md-light-green-200-bg{background-color:#c5e1a5!important;color:rgba(0,0,0,.87)}.light-green-200-fg{color:#c5e1a5!important}.light-green-200-border{border-color:#c5e1a5!important}.light-green-200-border-top{border-top-color:#c5e1a5!important}.light-green-200-border-right{border-right-color:#c5e1a5!important}.light-green-200-border-bottom{border-bottom-color:#c5e1a5!important}.light-green-200-border-left{border-left-color:#c5e1a5!important}.light-green-300-bg{background-color:#aed581!important}.md-light-green-300-bg{background-color:#aed581!important;color:rgba(0,0,0,.87)}.light-green-300-fg{color:#aed581!important}.light-green-300-border{border-color:#aed581!important}.light-green-300-border-top{border-top-color:#aed581!important}.light-green-300-border-right{border-right-color:#aed581!important}.light-green-300-border-bottom{border-bottom-color:#aed581!important}.light-green-300-border-left{border-left-color:#aed581!important}.light-green-400-bg{background-color:#9ccc65!important}.md-light-green-400-bg{background-color:#9ccc65!important;color:rgba(0,0,0,.87)}.light-green-400-fg{color:#9ccc65!important}.light-green-400-border{border-color:#9ccc65!important}.light-green-400-border-top{border-top-color:#9ccc65!important}.light-green-400-border-right{border-right-color:#9ccc65!important}.light-green-400-border-bottom{border-bottom-color:#9ccc65!important}.light-green-400-border-left{border-left-color:#9ccc65!important}.light-green-500-bg{background-color:#8bc34a!important}.md-light-green-500-bg{background-color:#8bc34a!important;color:rgba(0,0,0,.87)}.light-green-500-fg{color:#8bc34a!important}.light-green-500-border{border-color:#8bc34a!important}.light-green-500-border-top{border-top-color:#8bc34a!important}.light-green-500-border-right{border-right-color:#8bc34a!important}.light-green-500-border-bottom{border-bottom-color:#8bc34a!important}.light-green-500-border-left{border-left-color:#8bc34a!important}.md-light-green-bg{background-color:#8bc34a!important;color:rgba(0,0,0,.87)}.light-green-bg{background-color:#8bc34a!important}.light-green-fg{color:#8bc34a!important}.light-green-border{border-color:#8bc34a!important}.light-green-border-top{border-top-color:#8bc34a!important}.light-green-border-right{border-right-color:#8bc34a!important}.light-green-border-bottom{border-bottom-color:#8bc34a!important}.light-green-border-left{border-left-color:#8bc34a!important}.light-green-600-bg{background-color:#7cb342!important}.md-light-green-600-bg{background-color:#7cb342!important;color:rgba(0,0,0,.87)}.light-green-600-fg{color:#7cb342!important}.light-green-600-border{border-color:#7cb342!important}.light-green-600-border-top{border-top-color:#7cb342!important}.light-green-600-border-right{border-right-color:#7cb342!important}.light-green-600-border-bottom{border-bottom-color:#7cb342!important}.light-green-600-border-left{border-left-color:#7cb342!important}.light-green-700-bg{background-color:#689f38!important}.md-light-green-700-bg{background-color:#689f38!important;color:#fff}.light-green-700-fg{color:#689f38!important}.light-green-700-border{border-color:#689f38!important}.light-green-700-border-top{border-top-color:#689f38!important}.light-green-700-border-right{border-right-color:#689f38!important}.light-green-700-border-bottom{border-bottom-color:#689f38!important}.light-green-700-border-left{border-left-color:#689f38!important}.light-green-800-bg{background-color:#558b2f!important}.md-light-green-800-bg{background-color:#558b2f!important;color:#fff}.light-green-800-fg{color:#558b2f!important}.light-green-800-border{border-color:#558b2f!important}.light-green-800-border-top{border-top-color:#558b2f!important}.light-green-800-border-right{border-right-color:#558b2f!important}.light-green-800-border-bottom{border-bottom-color:#558b2f!important}.light-green-800-border-left{border-left-color:#558b2f!important}.light-green-900-bg{background-color:#33691e!important}.md-light-green-900-bg{background-color:#33691e!important;color:#fff}.light-green-900-fg{color:#33691e!important}.light-green-900-border{border-color:#33691e!important}.light-green-900-border-top{border-top-color:#33691e!important}.light-green-900-border-right{border-right-color:#33691e!important}.light-green-900-border-bottom{border-bottom-color:#33691e!important}.light-green-900-border-left{border-left-color:#33691e!important}.light-green-A100-bg{background-color:#ccff90!important}.md-light-green-A100-bg{background-color:#ccff90!important;color:rgba(0,0,0,.87)}.light-green-A100-fg{color:#ccff90!important}.light-green-A100-border{border-color:#ccff90!important}.light-green-A100-border-top{border-top-color:#ccff90!important}.light-green-A100-border-right{border-right-color:#ccff90!important}.light-green-A100-border-bottom{border-bottom-color:#ccff90!important}.light-green-A100-border-left{border-left-color:#ccff90!important}.light-green-A200-bg{background-color:#b2ff59!important}.md-light-green-A200-bg{background-color:#b2ff59!important;color:rgba(0,0,0,.87)}.light-green-A200-fg{color:#b2ff59!important}.light-green-A200-border{border-color:#b2ff59!important}.light-green-A200-border-top{border-top-color:#b2ff59!important}.light-green-A200-border-right{border-right-color:#b2ff59!important}.light-green-A200-border-bottom{border-bottom-color:#b2ff59!important}.light-green-A200-border-left{border-left-color:#b2ff59!important}.light-green-A400-bg{background-color:#76ff03!important}.md-light-green-A400-bg{background-color:#76ff03!important;color:rgba(0,0,0,.87)}.light-green-A400-fg{color:#76ff03!important}.light-green-A400-border{border-color:#76ff03!important}.light-green-A400-border-top{border-top-color:#76ff03!important}.light-green-A400-border-right{border-right-color:#76ff03!important}.light-green-A400-border-bottom{border-bottom-color:#76ff03!important}.light-green-A400-border-left{border-left-color:#76ff03!important}.light-green-A700-bg{background-color:#64dd17!important}.md-light-green-A700-bg{background-color:#64dd17!important;color:rgba(0,0,0,.87)}.light-green-A700-fg{color:#64dd17!important}.light-green-A700-border{border-color:#64dd17!important}.light-green-A700-border-top{border-top-color:#64dd17!important}.light-green-A700-border-right{border-right-color:#64dd17!important}.light-green-A700-border-bottom{border-bottom-color:#64dd17!important}.light-green-A700-border-left{border-left-color:#64dd17!important}.lime-50-bg{background-color:#f9fbe7!important}.md-lime-50-bg{background-color:#f9fbe7!important;color:rgba(0,0,0,.87)}.lime-50-fg{color:#f9fbe7!important}.lime-50-border{border-color:#f9fbe7!important}.lime-50-border-top{border-top-color:#f9fbe7!important}.lime-50-border-right{border-right-color:#f9fbe7!important}.lime-50-border-bottom{border-bottom-color:#f9fbe7!important}.lime-50-border-left{border-left-color:#f9fbe7!important}.lime-100-bg{background-color:#f0f4c3!important}.md-lime-100-bg{background-color:#f0f4c3!important;color:rgba(0,0,0,.87)}.lime-100-fg{color:#f0f4c3!important}.lime-100-border{border-color:#f0f4c3!important}.lime-100-border-top{border-top-color:#f0f4c3!important}.lime-100-border-right{border-right-color:#f0f4c3!important}.lime-100-border-bottom{border-bottom-color:#f0f4c3!important}.lime-100-border-left{border-left-color:#f0f4c3!important}.lime-200-bg{background-color:#e6ee9c!important}.md-lime-200-bg{background-color:#e6ee9c!important;color:rgba(0,0,0,.87)}.lime-200-fg{color:#e6ee9c!important}.lime-200-border{border-color:#e6ee9c!important}.lime-200-border-top{border-top-color:#e6ee9c!important}.lime-200-border-right{border-right-color:#e6ee9c!important}.lime-200-border-bottom{border-bottom-color:#e6ee9c!important}.lime-200-border-left{border-left-color:#e6ee9c!important}.lime-300-bg{background-color:#dce775!important}.md-lime-300-bg{background-color:#dce775!important;color:rgba(0,0,0,.87)}.lime-300-fg{color:#dce775!important}.lime-300-border{border-color:#dce775!important}.lime-300-border-top{border-top-color:#dce775!important}.lime-300-border-right{border-right-color:#dce775!important}.lime-300-border-bottom{border-bottom-color:#dce775!important}.lime-300-border-left{border-left-color:#dce775!important}.lime-400-bg{background-color:#d4e157!important}.md-lime-400-bg{background-color:#d4e157!important;color:rgba(0,0,0,.87)}.lime-400-fg{color:#d4e157!important}.lime-400-border{border-color:#d4e157!important}.lime-400-border-top{border-top-color:#d4e157!important}.lime-400-border-right{border-right-color:#d4e157!important}.lime-400-border-bottom{border-bottom-color:#d4e157!important}.lime-400-border-left{border-left-color:#d4e157!important}.lime-500-bg{background-color:#cddc39!important}.md-lime-500-bg{background-color:#cddc39!important;color:rgba(0,0,0,.87)}.lime-500-fg{color:#cddc39!important}.lime-500-border{border-color:#cddc39!important}.lime-500-border-top{border-top-color:#cddc39!important}.lime-500-border-right{border-right-color:#cddc39!important}.lime-500-border-bottom{border-bottom-color:#cddc39!important}.lime-500-border-left{border-left-color:#cddc39!important}.md-lime-bg{background-color:#cddc39!important;color:rgba(0,0,0,.87)}.lime-bg{background-color:#cddc39!important}.lime-fg{color:#cddc39!important}.lime-border{border-color:#cddc39!important}.lime-border-top{border-top-color:#cddc39!important}.lime-border-right{border-right-color:#cddc39!important}.lime-border-bottom{border-bottom-color:#cddc39!important}.lime-border-left{border-left-color:#cddc39!important}.lime-600-bg{background-color:#c0ca33!important}.md-lime-600-bg{background-color:#c0ca33!important;color:rgba(0,0,0,.87)}.lime-600-fg{color:#c0ca33!important}.lime-600-border{border-color:#c0ca33!important}.lime-600-border-top{border-top-color:#c0ca33!important}.lime-600-border-right{border-right-color:#c0ca33!important}.lime-600-border-bottom{border-bottom-color:#c0ca33!important}.lime-600-border-left{border-left-color:#c0ca33!important}.lime-700-bg{background-color:#afb42b!important}.md-lime-700-bg{background-color:#afb42b!important;color:rgba(0,0,0,.87)}.lime-700-fg{color:#afb42b!important}.lime-700-border{border-color:#afb42b!important}.lime-700-border-top{border-top-color:#afb42b!important}.lime-700-border-right{border-right-color:#afb42b!important}.lime-700-border-bottom{border-bottom-color:#afb42b!important}.lime-700-border-left{border-left-color:#afb42b!important}.lime-800-bg{background-color:#9e9d24!important}.md-lime-800-bg{background-color:#9e9d24!important;color:rgba(0,0,0,.87)}.lime-800-fg{color:#9e9d24!important}.lime-800-border{border-color:#9e9d24!important}.lime-800-border-top{border-top-color:#9e9d24!important}.lime-800-border-right{border-right-color:#9e9d24!important}.lime-800-border-bottom{border-bottom-color:#9e9d24!important}.lime-800-border-left{border-left-color:#9e9d24!important}.lime-900-bg{background-color:#827717!important}.md-lime-900-bg{background-color:#827717!important;color:#fff}.lime-900-fg{color:#827717!important}.lime-900-border{border-color:#827717!important}.lime-900-border-top{border-top-color:#827717!important}.lime-900-border-right{border-right-color:#827717!important}.lime-900-border-bottom{border-bottom-color:#827717!important}.lime-900-border-left{border-left-color:#827717!important}.lime-A100-bg{background-color:#f4ff81!important}.md-lime-A100-bg{background-color:#f4ff81!important;color:rgba(0,0,0,.87)}.lime-A100-fg{color:#f4ff81!important}.lime-A100-border{border-color:#f4ff81!important}.lime-A100-border-top{border-top-color:#f4ff81!important}.lime-A100-border-right{border-right-color:#f4ff81!important}.lime-A100-border-bottom{border-bottom-color:#f4ff81!important}.lime-A100-border-left{border-left-color:#f4ff81!important}.lime-A200-bg{background-color:#eeff41!important}.md-lime-A200-bg{background-color:#eeff41!important;color:rgba(0,0,0,.87)}.lime-A200-fg{color:#eeff41!important}.lime-A200-border{border-color:#eeff41!important}.lime-A200-border-top{border-top-color:#eeff41!important}.lime-A200-border-right{border-right-color:#eeff41!important}.lime-A200-border-bottom{border-bottom-color:#eeff41!important}.lime-A200-border-left{border-left-color:#eeff41!important}.lime-A400-bg{background-color:#c6ff00!important}.md-lime-A400-bg{background-color:#c6ff00!important;color:rgba(0,0,0,.87)}.lime-A400-fg{color:#c6ff00!important}.lime-A400-border{border-color:#c6ff00!important}.lime-A400-border-top{border-top-color:#c6ff00!important}.lime-A400-border-right{border-right-color:#c6ff00!important}.lime-A400-border-bottom{border-bottom-color:#c6ff00!important}.lime-A400-border-left{border-left-color:#c6ff00!important}.lime-A700-bg{background-color:#aeea00!important}.md-lime-A700-bg{background-color:#aeea00!important;color:rgba(0,0,0,.87)}.lime-A700-fg{color:#aeea00!important}.lime-A700-border{border-color:#aeea00!important}.lime-A700-border-top{border-top-color:#aeea00!important}.lime-A700-border-right{border-right-color:#aeea00!important}.lime-A700-border-bottom{border-bottom-color:#aeea00!important}.lime-A700-border-left{border-left-color:#aeea00!important}.yellow-50-bg{background-color:#fffde7!important}.md-yellow-50-bg{background-color:#fffde7!important;color:rgba(0,0,0,.87)}.yellow-50-fg{color:#fffde7!important}.yellow-50-border{border-color:#fffde7!important}.yellow-50-border-top{border-top-color:#fffde7!important}.yellow-50-border-right{border-right-color:#fffde7!important}.yellow-50-border-bottom{border-bottom-color:#fffde7!important}.yellow-50-border-left{border-left-color:#fffde7!important}.yellow-100-bg{background-color:#fff9c4!important}.md-yellow-100-bg{background-color:#fff9c4!important;color:rgba(0,0,0,.87)}.yellow-100-fg{color:#fff9c4!important}.yellow-100-border{border-color:#fff9c4!important}.yellow-100-border-top{border-top-color:#fff9c4!important}.yellow-100-border-right{border-right-color:#fff9c4!important}.yellow-100-border-bottom{border-bottom-color:#fff9c4!important}.yellow-100-border-left{border-left-color:#fff9c4!important}.yellow-200-bg{background-color:#fff59d!important}.md-yellow-200-bg{background-color:#fff59d!important;color:rgba(0,0,0,.87)}.yellow-200-fg{color:#fff59d!important}.yellow-200-border{border-color:#fff59d!important}.yellow-200-border-top{border-top-color:#fff59d!important}.yellow-200-border-right{border-right-color:#fff59d!important}.yellow-200-border-bottom{border-bottom-color:#fff59d!important}.yellow-200-border-left{border-left-color:#fff59d!important}.yellow-300-bg{background-color:#fff176!important}.md-yellow-300-bg{background-color:#fff176!important;color:rgba(0,0,0,.87)}.yellow-300-fg{color:#fff176!important}.yellow-300-border{border-color:#fff176!important}.yellow-300-border-top{border-top-color:#fff176!important}.yellow-300-border-right{border-right-color:#fff176!important}.yellow-300-border-bottom{border-bottom-color:#fff176!important}.yellow-300-border-left{border-left-color:#fff176!important}.yellow-400-bg{background-color:#ffee58!important}.md-yellow-400-bg{background-color:#ffee58!important;color:rgba(0,0,0,.87)}.yellow-400-fg{color:#ffee58!important}.yellow-400-border{border-color:#ffee58!important}.yellow-400-border-top{border-top-color:#ffee58!important}.yellow-400-border-right{border-right-color:#ffee58!important}.yellow-400-border-bottom{border-bottom-color:#ffee58!important}.yellow-400-border-left{border-left-color:#ffee58!important}.yellow-500-bg{background-color:#ffeb3b!important}.md-yellow-500-bg{background-color:#ffeb3b!important;color:rgba(0,0,0,.87)}.yellow-500-fg{color:#ffeb3b!important}.yellow-500-border{border-color:#ffeb3b!important}.yellow-500-border-top{border-top-color:#ffeb3b!important}.yellow-500-border-right{border-right-color:#ffeb3b!important}.yellow-500-border-bottom{border-bottom-color:#ffeb3b!important}.yellow-500-border-left{border-left-color:#ffeb3b!important}.md-yellow-bg{background-color:#ffeb3b!important;color:rgba(0,0,0,.87)}.yellow-bg{background-color:#ffeb3b!important}.yellow-fg{color:#ffeb3b!important}.yellow-border{border-color:#ffeb3b!important}.yellow-border-top{border-top-color:#ffeb3b!important}.yellow-border-right{border-right-color:#ffeb3b!important}.yellow-border-bottom{border-bottom-color:#ffeb3b!important}.yellow-border-left{border-left-color:#ffeb3b!important}.yellow-600-bg{background-color:#fdd835!important}.md-yellow-600-bg{background-color:#fdd835!important;color:rgba(0,0,0,.87)}.yellow-600-fg{color:#fdd835!important}.yellow-600-border{border-color:#fdd835!important}.yellow-600-border-top{border-top-color:#fdd835!important}.yellow-600-border-right{border-right-color:#fdd835!important}.yellow-600-border-bottom{border-bottom-color:#fdd835!important}.yellow-600-border-left{border-left-color:#fdd835!important}.yellow-700-bg{background-color:#fbc02d!important}.md-yellow-700-bg{background-color:#fbc02d!important;color:rgba(0,0,0,.87)}.yellow-700-fg{color:#fbc02d!important}.yellow-700-border{border-color:#fbc02d!important}.yellow-700-border-top{border-top-color:#fbc02d!important}.yellow-700-border-right{border-right-color:#fbc02d!important}.yellow-700-border-bottom{border-bottom-color:#fbc02d!important}.yellow-700-border-left{border-left-color:#fbc02d!important}.yellow-800-bg{background-color:#f9a825!important}.md-yellow-800-bg{background-color:#f9a825!important;color:rgba(0,0,0,.87)}.yellow-800-fg{color:#f9a825!important}.yellow-800-border{border-color:#f9a825!important}.yellow-800-border-top{border-top-color:#f9a825!important}.yellow-800-border-right{border-right-color:#f9a825!important}.yellow-800-border-bottom{border-bottom-color:#f9a825!important}.yellow-800-border-left{border-left-color:#f9a825!important}.yellow-900-bg{background-color:#f57f17!important}.md-yellow-900-bg{background-color:#f57f17!important;color:rgba(0,0,0,.87)}.yellow-900-fg{color:#f57f17!important}.yellow-900-border{border-color:#f57f17!important}.yellow-900-border-top{border-top-color:#f57f17!important}.yellow-900-border-right{border-right-color:#f57f17!important}.yellow-900-border-bottom{border-bottom-color:#f57f17!important}.yellow-900-border-left{border-left-color:#f57f17!important}.yellow-A100-bg{background-color:#ffff8d!important}.md-yellow-A100-bg{background-color:#ffff8d!important;color:rgba(0,0,0,.87)}.yellow-A100-fg{color:#ffff8d!important}.yellow-A100-border{border-color:#ffff8d!important}.yellow-A100-border-top{border-top-color:#ffff8d!important}.yellow-A100-border-right{border-right-color:#ffff8d!important}.yellow-A100-border-bottom{border-bottom-color:#ffff8d!important}.yellow-A100-border-left{border-left-color:#ffff8d!important}.yellow-A200-bg{background-color:#ff0!important}.md-yellow-A200-bg{background-color:#ff0!important;color:rgba(0,0,0,.87)}.yellow-A200-fg{color:#ff0!important}.yellow-A200-border{border-color:#ff0!important}.yellow-A200-border-top{border-top-color:#ff0!important}.yellow-A200-border-right{border-right-color:#ff0!important}.yellow-A200-border-bottom{border-bottom-color:#ff0!important}.yellow-A200-border-left{border-left-color:#ff0!important}.yellow-A400-bg{background-color:#ffea00!important}.md-yellow-A400-bg{background-color:#ffea00!important;color:rgba(0,0,0,.87)}.yellow-A400-fg{color:#ffea00!important}.yellow-A400-border{border-color:#ffea00!important}.yellow-A400-border-top{border-top-color:#ffea00!important}.yellow-A400-border-right{border-right-color:#ffea00!important}.yellow-A400-border-bottom{border-bottom-color:#ffea00!important}.yellow-A400-border-left{border-left-color:#ffea00!important}.yellow-A700-bg{background-color:#ffd600!important}.md-yellow-A700-bg{background-color:#ffd600!important;color:rgba(0,0,0,.87)}.yellow-A700-fg{color:#ffd600!important}.yellow-A700-border{border-color:#ffd600!important}.yellow-A700-border-top{border-top-color:#ffd600!important}.yellow-A700-border-right{border-right-color:#ffd600!important}.yellow-A700-border-bottom{border-bottom-color:#ffd600!important}.yellow-A700-border-left{border-left-color:#ffd600!important}.amber-50-bg{background-color:#fff8e1!important}.md-amber-50-bg{background-color:#fff8e1!important;color:rgba(0,0,0,.87)}.amber-50-fg{color:#fff8e1!important}.amber-50-border{border-color:#fff8e1!important}.amber-50-border-top{border-top-color:#fff8e1!important}.amber-50-border-right{border-right-color:#fff8e1!important}.amber-50-border-bottom{border-bottom-color:#fff8e1!important}.amber-50-border-left{border-left-color:#fff8e1!important}.amber-100-bg{background-color:#ffecb3!important}.md-amber-100-bg{background-color:#ffecb3!important;color:rgba(0,0,0,.87)}.amber-100-fg{color:#ffecb3!important}.amber-100-border{border-color:#ffecb3!important}.amber-100-border-top{border-top-color:#ffecb3!important}.amber-100-border-right{border-right-color:#ffecb3!important}.amber-100-border-bottom{border-bottom-color:#ffecb3!important}.amber-100-border-left{border-left-color:#ffecb3!important}.amber-200-bg{background-color:#ffe082!important}.md-amber-200-bg{background-color:#ffe082!important;color:rgba(0,0,0,.87)}.amber-200-fg{color:#ffe082!important}.amber-200-border{border-color:#ffe082!important}.amber-200-border-top{border-top-color:#ffe082!important}.amber-200-border-right{border-right-color:#ffe082!important}.amber-200-border-bottom{border-bottom-color:#ffe082!important}.amber-200-border-left{border-left-color:#ffe082!important}.amber-300-bg{background-color:#ffd54f!important}.md-amber-300-bg{background-color:#ffd54f!important;color:rgba(0,0,0,.87)}.amber-300-fg{color:#ffd54f!important}.amber-300-border{border-color:#ffd54f!important}.amber-300-border-top{border-top-color:#ffd54f!important}.amber-300-border-right{border-right-color:#ffd54f!important}.amber-300-border-bottom{border-bottom-color:#ffd54f!important}.amber-300-border-left{border-left-color:#ffd54f!important}.amber-400-bg{background-color:#ffca28!important}.md-amber-400-bg{background-color:#ffca28!important;color:rgba(0,0,0,.87)}.amber-400-fg{color:#ffca28!important}.amber-400-border{border-color:#ffca28!important}.amber-400-border-top{border-top-color:#ffca28!important}.amber-400-border-right{border-right-color:#ffca28!important}.amber-400-border-bottom{border-bottom-color:#ffca28!important}.amber-400-border-left{border-left-color:#ffca28!important}.amber-500-bg{background-color:#ffc107!important}.md-amber-500-bg{background-color:#ffc107!important;color:rgba(0,0,0,.87)}.amber-500-fg{color:#ffc107!important}.amber-500-border{border-color:#ffc107!important}.amber-500-border-top{border-top-color:#ffc107!important}.amber-500-border-right{border-right-color:#ffc107!important}.amber-500-border-bottom{border-bottom-color:#ffc107!important}.amber-500-border-left{border-left-color:#ffc107!important}.md-amber-bg{background-color:#ffc107!important;color:rgba(0,0,0,.87)}.amber-bg{background-color:#ffc107!important}.amber-fg{color:#ffc107!important}.amber-border{border-color:#ffc107!important}.amber-border-top{border-top-color:#ffc107!important}.amber-border-right{border-right-color:#ffc107!important}.amber-border-bottom{border-bottom-color:#ffc107!important}.amber-border-left{border-left-color:#ffc107!important}.amber-600-bg{background-color:#ffb300!important}.md-amber-600-bg{background-color:#ffb300!important;color:rgba(0,0,0,.87)}.amber-600-fg{color:#ffb300!important}.amber-600-border{border-color:#ffb300!important}.amber-600-border-top{border-top-color:#ffb300!important}.amber-600-border-right{border-right-color:#ffb300!important}.amber-600-border-bottom{border-bottom-color:#ffb300!important}.amber-600-border-left{border-left-color:#ffb300!important}.amber-700-bg{background-color:#ffa000!important}.md-amber-700-bg{background-color:#ffa000!important;color:rgba(0,0,0,.87)}.amber-700-fg{color:#ffa000!important}.amber-700-border{border-color:#ffa000!important}.amber-700-border-top{border-top-color:#ffa000!important}.amber-700-border-right{border-right-color:#ffa000!important}.amber-700-border-bottom{border-bottom-color:#ffa000!important}.amber-700-border-left{border-left-color:#ffa000!important}.amber-800-bg{background-color:#ff8f00!important}.md-amber-800-bg{background-color:#ff8f00!important;color:rgba(0,0,0,.87)}.amber-800-fg{color:#ff8f00!important}.amber-800-border{border-color:#ff8f00!important}.amber-800-border-top{border-top-color:#ff8f00!important}.amber-800-border-right{border-right-color:#ff8f00!important}.amber-800-border-bottom{border-bottom-color:#ff8f00!important}.amber-800-border-left{border-left-color:#ff8f00!important}.amber-900-bg{background-color:#ff6f00!important}.md-amber-900-bg{background-color:#ff6f00!important;color:rgba(0,0,0,.87)}.amber-900-fg{color:#ff6f00!important}.amber-900-border{border-color:#ff6f00!important}.amber-900-border-top{border-top-color:#ff6f00!important}.amber-900-border-right{border-right-color:#ff6f00!important}.amber-900-border-bottom{border-bottom-color:#ff6f00!important}.amber-900-border-left{border-left-color:#ff6f00!important}.amber-A100-bg{background-color:#ffe57f!important}.md-amber-A100-bg{background-color:#ffe57f!important;color:rgba(0,0,0,.87)}.amber-A100-fg{color:#ffe57f!important}.amber-A100-border{border-color:#ffe57f!important}.amber-A100-border-top{border-top-color:#ffe57f!important}.amber-A100-border-right{border-right-color:#ffe57f!important}.amber-A100-border-bottom{border-bottom-color:#ffe57f!important}.amber-A100-border-left{border-left-color:#ffe57f!important}.amber-A200-bg{background-color:#ffd740!important}.md-amber-A200-bg{background-color:#ffd740!important;color:rgba(0,0,0,.87)}.amber-A200-fg{color:#ffd740!important}.amber-A200-border{border-color:#ffd740!important}.amber-A200-border-top{border-top-color:#ffd740!important}.amber-A200-border-right{border-right-color:#ffd740!important}.amber-A200-border-bottom{border-bottom-color:#ffd740!important}.amber-A200-border-left{border-left-color:#ffd740!important}.amber-A400-bg{background-color:#ffc400!important}.md-amber-A400-bg{background-color:#ffc400!important;color:rgba(0,0,0,.87)}.amber-A400-fg{color:#ffc400!important}.amber-A400-border{border-color:#ffc400!important}.amber-A400-border-top{border-top-color:#ffc400!important}.amber-A400-border-right{border-right-color:#ffc400!important}.amber-A400-border-bottom{border-bottom-color:#ffc400!important}.amber-A400-border-left{border-left-color:#ffc400!important}.amber-A700-bg{background-color:#ffab00!important}.md-amber-A700-bg{background-color:#ffab00!important;color:rgba(0,0,0,.87)}.amber-A700-fg{color:#ffab00!important}.amber-A700-border{border-color:#ffab00!important}.amber-A700-border-top{border-top-color:#ffab00!important}.amber-A700-border-right{border-right-color:#ffab00!important}.amber-A700-border-bottom{border-bottom-color:#ffab00!important}.amber-A700-border-left{border-left-color:#ffab00!important}.orange-50-bg{background-color:#fff3e0!important}.md-orange-50-bg{background-color:#fff3e0!important;color:rgba(0,0,0,.87)}.orange-50-fg{color:#fff3e0!important}.orange-50-border{border-color:#fff3e0!important}.orange-50-border-top{border-top-color:#fff3e0!important}.orange-50-border-right{border-right-color:#fff3e0!important}.orange-50-border-bottom{border-bottom-color:#fff3e0!important}.orange-50-border-left{border-left-color:#fff3e0!important}.orange-100-bg{background-color:#ffe0b2!important}.md-orange-100-bg{background-color:#ffe0b2!important;color:rgba(0,0,0,.87)}.orange-100-fg{color:#ffe0b2!important}.orange-100-border{border-color:#ffe0b2!important}.orange-100-border-top{border-top-color:#ffe0b2!important}.orange-100-border-right{border-right-color:#ffe0b2!important}.orange-100-border-bottom{border-bottom-color:#ffe0b2!important}.orange-100-border-left{border-left-color:#ffe0b2!important}.orange-200-bg{background-color:#ffcc80!important}.md-orange-200-bg{background-color:#ffcc80!important;color:rgba(0,0,0,.87)}.orange-200-fg{color:#ffcc80!important}.orange-200-border{border-color:#ffcc80!important}.orange-200-border-top{border-top-color:#ffcc80!important}.orange-200-border-right{border-right-color:#ffcc80!important}.orange-200-border-bottom{border-bottom-color:#ffcc80!important}.orange-200-border-left{border-left-color:#ffcc80!important}.orange-300-bg{background-color:#ffb74d!important}.md-orange-300-bg{background-color:#ffb74d!important;color:rgba(0,0,0,.87)}.orange-300-fg{color:#ffb74d!important}.orange-300-border{border-color:#ffb74d!important}.orange-300-border-top{border-top-color:#ffb74d!important}.orange-300-border-right{border-right-color:#ffb74d!important}.orange-300-border-bottom{border-bottom-color:#ffb74d!important}.orange-300-border-left{border-left-color:#ffb74d!important}.orange-400-bg{background-color:#ffa726!important}.md-orange-400-bg{background-color:#ffa726!important;color:rgba(0,0,0,.87)}.orange-400-fg{color:#ffa726!important}.orange-400-border{border-color:#ffa726!important}.orange-400-border-top{border-top-color:#ffa726!important}.orange-400-border-right{border-right-color:#ffa726!important}.orange-400-border-bottom{border-bottom-color:#ffa726!important}.orange-400-border-left{border-left-color:#ffa726!important}.orange-500-bg{background-color:#ff9800!important}.md-orange-500-bg{background-color:#ff9800!important;color:rgba(0,0,0,.87)}.orange-500-fg{color:#ff9800!important}.orange-500-border{border-color:#ff9800!important}.orange-500-border-top{border-top-color:#ff9800!important}.orange-500-border-right{border-right-color:#ff9800!important}.orange-500-border-bottom{border-bottom-color:#ff9800!important}.orange-500-border-left{border-left-color:#ff9800!important}.md-orange-bg{background-color:#ff9800!important;color:rgba(0,0,0,.87)}.orange-bg{background-color:#ff9800!important}.orange-fg{color:#ff9800!important}.orange-border{border-color:#ff9800!important}.orange-border-top{border-top-color:#ff9800!important}.orange-border-right{border-right-color:#ff9800!important}.orange-border-bottom{border-bottom-color:#ff9800!important}.orange-border-left{border-left-color:#ff9800!important}.orange-600-bg{background-color:#fb8c00!important}.md-orange-600-bg{background-color:#fb8c00!important;color:rgba(0,0,0,.87)}.orange-600-fg{color:#fb8c00!important}.orange-600-border{border-color:#fb8c00!important}.orange-600-border-top{border-top-color:#fb8c00!important}.orange-600-border-right{border-right-color:#fb8c00!important}.orange-600-border-bottom{border-bottom-color:#fb8c00!important}.orange-600-border-left{border-left-color:#fb8c00!important}.orange-700-bg{background-color:#f57c00!important}.md-orange-700-bg{background-color:#f57c00!important;color:rgba(0,0,0,.87)}.orange-700-fg{color:#f57c00!important}.orange-700-border{border-color:#f57c00!important}.orange-700-border-top{border-top-color:#f57c00!important}.orange-700-border-right{border-right-color:#f57c00!important}.orange-700-border-bottom{border-bottom-color:#f57c00!important}.orange-700-border-left{border-left-color:#f57c00!important}.orange-800-bg{background-color:#ef6c00!important}.md-orange-800-bg{background-color:#ef6c00!important;color:#fff}.orange-800-fg{color:#ef6c00!important}.orange-800-border{border-color:#ef6c00!important}.orange-800-border-top{border-top-color:#ef6c00!important}.orange-800-border-right{border-right-color:#ef6c00!important}.orange-800-border-bottom{border-bottom-color:#ef6c00!important}.orange-800-border-left{border-left-color:#ef6c00!important}.orange-900-bg{background-color:#e65100!important}.md-orange-900-bg{background-color:#e65100!important;color:#fff}.orange-900-fg{color:#e65100!important}.orange-900-border{border-color:#e65100!important}.orange-900-border-top{border-top-color:#e65100!important}.orange-900-border-right{border-right-color:#e65100!important}.orange-900-border-bottom{border-bottom-color:#e65100!important}.orange-900-border-left{border-left-color:#e65100!important}.orange-A100-bg{background-color:#ffd180!important}.md-orange-A100-bg{background-color:#ffd180!important;color:rgba(0,0,0,.87)}.orange-A100-fg{color:#ffd180!important}.orange-A100-border{border-color:#ffd180!important}.orange-A100-border-top{border-top-color:#ffd180!important}.orange-A100-border-right{border-right-color:#ffd180!important}.orange-A100-border-bottom{border-bottom-color:#ffd180!important}.orange-A100-border-left{border-left-color:#ffd180!important}.orange-A200-bg{background-color:#ffab40!important}.md-orange-A200-bg{background-color:#ffab40!important;color:rgba(0,0,0,.87)}.orange-A200-fg{color:#ffab40!important}.orange-A200-border{border-color:#ffab40!important}.orange-A200-border-top{border-top-color:#ffab40!important}.orange-A200-border-right{border-right-color:#ffab40!important}.orange-A200-border-bottom{border-bottom-color:#ffab40!important}.orange-A200-border-left{border-left-color:#ffab40!important}.orange-A400-bg{background-color:#ff9100!important}.md-orange-A400-bg{background-color:#ff9100!important;color:rgba(0,0,0,.87)}.orange-A400-fg{color:#ff9100!important}.orange-A400-border{border-color:#ff9100!important}.orange-A400-border-top{border-top-color:#ff9100!important}.orange-A400-border-right{border-right-color:#ff9100!important}.orange-A400-border-bottom{border-bottom-color:#ff9100!important}.orange-A400-border-left{border-left-color:#ff9100!important}.orange-A700-bg{background-color:#ff6d00!important}.md-orange-A700-bg{background-color:#ff6d00!important;color:rgba(0,0,0,.87)}.orange-A700-fg{color:#ff6d00!important}.orange-A700-border{border-color:#ff6d00!important}.orange-A700-border-top{border-top-color:#ff6d00!important}.orange-A700-border-right{border-right-color:#ff6d00!important}.orange-A700-border-bottom{border-bottom-color:#ff6d00!important}.orange-A700-border-left{border-left-color:#ff6d00!important}.deep-orange-50-bg{background-color:#fbe9e7!important}.md-deep-orange-50-bg{background-color:#fbe9e7!important;color:rgba(0,0,0,.87)}.deep-orange-50-fg{color:#fbe9e7!important}.deep-orange-50-border{border-color:#fbe9e7!important}.deep-orange-50-border-top{border-top-color:#fbe9e7!important}.deep-orange-50-border-right{border-right-color:#fbe9e7!important}.deep-orange-50-border-bottom{border-bottom-color:#fbe9e7!important}.deep-orange-50-border-left{border-left-color:#fbe9e7!important}.deep-orange-100-bg{background-color:#ffccbc!important}.md-deep-orange-100-bg{background-color:#ffccbc!important;color:rgba(0,0,0,.87)}.deep-orange-100-fg{color:#ffccbc!important}.deep-orange-100-border{border-color:#ffccbc!important}.deep-orange-100-border-top{border-top-color:#ffccbc!important}.deep-orange-100-border-right{border-right-color:#ffccbc!important}.deep-orange-100-border-bottom{border-bottom-color:#ffccbc!important}.deep-orange-100-border-left{border-left-color:#ffccbc!important}.deep-orange-200-bg{background-color:#ffab91!important}.md-deep-orange-200-bg{background-color:#ffab91!important;color:rgba(0,0,0,.87)}.deep-orange-200-fg{color:#ffab91!important}.deep-orange-200-border{border-color:#ffab91!important}.deep-orange-200-border-top{border-top-color:#ffab91!important}.deep-orange-200-border-right{border-right-color:#ffab91!important}.deep-orange-200-border-bottom{border-bottom-color:#ffab91!important}.deep-orange-200-border-left{border-left-color:#ffab91!important}.deep-orange-300-bg{background-color:#ff8a65!important}.md-deep-orange-300-bg{background-color:#ff8a65!important;color:rgba(0,0,0,.87)}.deep-orange-300-fg{color:#ff8a65!important}.deep-orange-300-border{border-color:#ff8a65!important}.deep-orange-300-border-top{border-top-color:#ff8a65!important}.deep-orange-300-border-right{border-right-color:#ff8a65!important}.deep-orange-300-border-bottom{border-bottom-color:#ff8a65!important}.deep-orange-300-border-left{border-left-color:#ff8a65!important}.deep-orange-400-bg{background-color:#ff7043!important}.md-deep-orange-400-bg{background-color:#ff7043!important;color:rgba(0,0,0,.87)}.deep-orange-400-fg{color:#ff7043!important}.deep-orange-400-border{border-color:#ff7043!important}.deep-orange-400-border-top{border-top-color:#ff7043!important}.deep-orange-400-border-right{border-right-color:#ff7043!important}.deep-orange-400-border-bottom{border-bottom-color:#ff7043!important}.deep-orange-400-border-left{border-left-color:#ff7043!important}.deep-orange-500-bg{background-color:#ff5722!important}.md-deep-orange-500-bg{background-color:#ff5722!important;color:#fff}.deep-orange-500-fg{color:#ff5722!important}.deep-orange-500-border{border-color:#ff5722!important}.deep-orange-500-border-top{border-top-color:#ff5722!important}.deep-orange-500-border-right{border-right-color:#ff5722!important}.deep-orange-500-border-bottom{border-bottom-color:#ff5722!important}.deep-orange-500-border-left{border-left-color:#ff5722!important}.md-deep-orange-bg{background-color:#ff5722!important;color:#fff}.deep-orange-bg{background-color:#ff5722!important}.deep-orange-fg{color:#ff5722!important}.deep-orange-border{border-color:#ff5722!important}.deep-orange-border-top{border-top-color:#ff5722!important}.deep-orange-border-right{border-right-color:#ff5722!important}.deep-orange-border-bottom{border-bottom-color:#ff5722!important}.deep-orange-border-left{border-left-color:#ff5722!important}.deep-orange-600-bg{background-color:#f4511e!important}.md-deep-orange-600-bg{background-color:#f4511e!important;color:#fff}.deep-orange-600-fg{color:#f4511e!important}.deep-orange-600-border{border-color:#f4511e!important}.deep-orange-600-border-top{border-top-color:#f4511e!important}.deep-orange-600-border-right{border-right-color:#f4511e!important}.deep-orange-600-border-bottom{border-bottom-color:#f4511e!important}.deep-orange-600-border-left{border-left-color:#f4511e!important}.deep-orange-700-bg{background-color:#e64a19!important}.md-deep-orange-700-bg{background-color:#e64a19!important;color:#fff}.deep-orange-700-fg{color:#e64a19!important}.deep-orange-700-border{border-color:#e64a19!important}.deep-orange-700-border-top{border-top-color:#e64a19!important}.deep-orange-700-border-right{border-right-color:#e64a19!important}.deep-orange-700-border-bottom{border-bottom-color:#e64a19!important}.deep-orange-700-border-left{border-left-color:#e64a19!important}.deep-orange-800-bg{background-color:#d84315!important}.md-deep-orange-800-bg{background-color:#d84315!important;color:#fff}.deep-orange-800-fg{color:#d84315!important}.deep-orange-800-border{border-color:#d84315!important}.deep-orange-800-border-top{border-top-color:#d84315!important}.deep-orange-800-border-right{border-right-color:#d84315!important}.deep-orange-800-border-bottom{border-bottom-color:#d84315!important}.deep-orange-800-border-left{border-left-color:#d84315!important}.deep-orange-900-bg{background-color:#bf360c!important}.md-deep-orange-900-bg{background-color:#bf360c!important;color:#fff}.deep-orange-900-fg{color:#bf360c!important}.deep-orange-900-border{border-color:#bf360c!important}.deep-orange-900-border-top{border-top-color:#bf360c!important}.deep-orange-900-border-right{border-right-color:#bf360c!important}.deep-orange-900-border-bottom{border-bottom-color:#bf360c!important}.deep-orange-900-border-left{border-left-color:#bf360c!important}.deep-orange-A100-bg{background-color:#ff9e80!important}.md-deep-orange-A100-bg{background-color:#ff9e80!important;color:rgba(0,0,0,.87)}.deep-orange-A100-fg{color:#ff9e80!important}.deep-orange-A100-border{border-color:#ff9e80!important}.deep-orange-A100-border-top{border-top-color:#ff9e80!important}.deep-orange-A100-border-right{border-right-color:#ff9e80!important}.deep-orange-A100-border-bottom{border-bottom-color:#ff9e80!important}.deep-orange-A100-border-left{border-left-color:#ff9e80!important}.deep-orange-A200-bg{background-color:#ff6e40!important}.md-deep-orange-A200-bg{background-color:#ff6e40!important;color:rgba(0,0,0,.87)}.deep-orange-A200-fg{color:#ff6e40!important}.deep-orange-A200-border{border-color:#ff6e40!important}.deep-orange-A200-border-top{border-top-color:#ff6e40!important}.deep-orange-A200-border-right{border-right-color:#ff6e40!important}.deep-orange-A200-border-bottom{border-bottom-color:#ff6e40!important}.deep-orange-A200-border-left{border-left-color:#ff6e40!important}.deep-orange-A400-bg{background-color:#ff3d00!important}.md-deep-orange-A400-bg{background-color:#ff3d00!important;color:#fff}.deep-orange-A400-fg{color:#ff3d00!important}.deep-orange-A400-border{border-color:#ff3d00!important}.deep-orange-A400-border-top{border-top-color:#ff3d00!important}.deep-orange-A400-border-right{border-right-color:#ff3d00!important}.deep-orange-A400-border-bottom{border-bottom-color:#ff3d00!important}.deep-orange-A400-border-left{border-left-color:#ff3d00!important}.deep-orange-A700-bg{background-color:#dd2c00!important}.md-deep-orange-A700-bg{background-color:#dd2c00!important;color:#fff}.deep-orange-A700-fg{color:#dd2c00!important}.deep-orange-A700-border{border-color:#dd2c00!important}.deep-orange-A700-border-top{border-top-color:#dd2c00!important}.deep-orange-A700-border-right{border-right-color:#dd2c00!important}.deep-orange-A700-border-bottom{border-bottom-color:#dd2c00!important}.deep-orange-A700-border-left{border-left-color:#dd2c00!important}.brown-50-bg{background-color:#efebe9!important}.md-brown-50-bg{background-color:#efebe9!important;color:rgba(0,0,0,.87)}.brown-50-fg{color:#efebe9!important}.brown-50-border{border-color:#efebe9!important}.brown-50-border-top{border-top-color:#efebe9!important}.brown-50-border-right{border-right-color:#efebe9!important}.brown-50-border-bottom{border-bottom-color:#efebe9!important}.brown-50-border-left{border-left-color:#efebe9!important}.brown-100-bg{background-color:#d7ccc8!important}.md-brown-100-bg{background-color:#d7ccc8!important;color:rgba(0,0,0,.87)}.brown-100-fg{color:#d7ccc8!important}.brown-100-border{border-color:#d7ccc8!important}.brown-100-border-top{border-top-color:#d7ccc8!important}.brown-100-border-right{border-right-color:#d7ccc8!important}.brown-100-border-bottom{border-bottom-color:#d7ccc8!important}.brown-100-border-left{border-left-color:#d7ccc8!important}.brown-200-bg{background-color:#bcaaa4!important}.md-brown-200-bg{background-color:#bcaaa4!important;color:rgba(0,0,0,.87)}.brown-200-fg{color:#bcaaa4!important}.brown-200-border{border-color:#bcaaa4!important}.brown-200-border-top{border-top-color:#bcaaa4!important}.brown-200-border-right{border-right-color:#bcaaa4!important}.brown-200-border-bottom{border-bottom-color:#bcaaa4!important}.brown-200-border-left{border-left-color:#bcaaa4!important}.brown-300-bg{background-color:#a1887f!important}.md-brown-300-bg{background-color:#a1887f!important;color:#fff}.brown-300-fg{color:#a1887f!important}.brown-300-border{border-color:#a1887f!important}.brown-300-border-top{border-top-color:#a1887f!important}.brown-300-border-right{border-right-color:#a1887f!important}.brown-300-border-bottom{border-bottom-color:#a1887f!important}.brown-300-border-left{border-left-color:#a1887f!important}.brown-400-bg{background-color:#8d6e63!important}.md-brown-400-bg{background-color:#8d6e63!important;color:#fff}.brown-400-fg{color:#8d6e63!important}.brown-400-border{border-color:#8d6e63!important}.brown-400-border-top{border-top-color:#8d6e63!important}.brown-400-border-right{border-right-color:#8d6e63!important}.brown-400-border-bottom{border-bottom-color:#8d6e63!important}.brown-400-border-left{border-left-color:#8d6e63!important}.brown-500-bg{background-color:#795548!important}.md-brown-500-bg{background-color:#795548!important;color:rgba(255,255,255,.87)}.brown-500-fg{color:#795548!important}.brown-500-border{border-color:#795548!important}.brown-500-border-top{border-top-color:#795548!important}.brown-500-border-right{border-right-color:#795548!important}.brown-500-border-bottom{border-bottom-color:#795548!important}.brown-500-border-left{border-left-color:#795548!important}.md-brown-bg{background-color:#795548!important;color:rgba(255,255,255,.87)}.brown-bg{background-color:#795548!important}.brown-fg{color:#795548!important}.brown-border{border-color:#795548!important}.brown-border-top{border-top-color:#795548!important}.brown-border-right{border-right-color:#795548!important}.brown-border-bottom{border-bottom-color:#795548!important}.brown-border-left{border-left-color:#795548!important}.brown-600-bg{background-color:#6d4c41!important}.md-brown-600-bg{background-color:#6d4c41!important;color:rgba(255,255,255,.87)}.brown-600-fg{color:#6d4c41!important}.brown-600-border{border-color:#6d4c41!important}.brown-600-border-top{border-top-color:#6d4c41!important}.brown-600-border-right{border-right-color:#6d4c41!important}.brown-600-border-bottom{border-bottom-color:#6d4c41!important}.brown-600-border-left{border-left-color:#6d4c41!important}.brown-700-bg{background-color:#5d4037!important}.md-brown-700-bg{background-color:#5d4037!important;color:rgba(255,255,255,.87)}.brown-700-fg{color:#5d4037!important}.brown-700-border{border-color:#5d4037!important}.brown-700-border-top{border-top-color:#5d4037!important}.brown-700-border-right{border-right-color:#5d4037!important}.brown-700-border-bottom{border-bottom-color:#5d4037!important}.brown-700-border-left{border-left-color:#5d4037!important}.brown-800-bg{background-color:#4e342e!important}.md-brown-800-bg{background-color:#4e342e!important;color:rgba(255,255,255,.87)}.brown-800-fg{color:#4e342e!important}.brown-800-border{border-color:#4e342e!important}.brown-800-border-top{border-top-color:#4e342e!important}.brown-800-border-right{border-right-color:#4e342e!important}.brown-800-border-bottom{border-bottom-color:#4e342e!important}.brown-800-border-left{border-left-color:#4e342e!important}.brown-900-bg{background-color:#3e2723!important}.md-brown-900-bg{background-color:#3e2723!important;color:rgba(255,255,255,.87)}.brown-900-fg{color:#3e2723!important}.brown-900-border{border-color:#3e2723!important}.brown-900-border-top{border-top-color:#3e2723!important}.brown-900-border-right{border-right-color:#3e2723!important}.brown-900-border-bottom{border-bottom-color:#3e2723!important}.brown-900-border-left{border-left-color:#3e2723!important}.brown-A100-bg{background-color:#d7ccc8!important}.md-brown-A100-bg{background-color:#d7ccc8!important;color:rgba(255,255,255,.87)}.brown-A100-fg{color:#d7ccc8!important}.brown-A100-border{border-color:#d7ccc8!important}.brown-A100-border-top{border-top-color:#d7ccc8!important}.brown-A100-border-right{border-right-color:#d7ccc8!important}.brown-A100-border-bottom{border-bottom-color:#d7ccc8!important}.brown-A100-border-left{border-left-color:#d7ccc8!important}.brown-A200-bg{background-color:#bcaaa4!important}.md-brown-A200-bg{background-color:#bcaaa4!important;color:rgba(255,255,255,.87)}.brown-A200-fg{color:#bcaaa4!important}.brown-A200-border{border-color:#bcaaa4!important}.brown-A200-border-top{border-top-color:#bcaaa4!important}.brown-A200-border-right{border-right-color:#bcaaa4!important}.brown-A200-border-bottom{border-bottom-color:#bcaaa4!important}.brown-A200-border-left{border-left-color:#bcaaa4!important}.brown-A400-bg{background-color:#8d6e63!important}.md-brown-A400-bg{background-color:#8d6e63!important;color:rgba(255,255,255,.87)}.brown-A400-fg{color:#8d6e63!important}.brown-A400-border{border-color:#8d6e63!important}.brown-A400-border-top{border-top-color:#8d6e63!important}.brown-A400-border-right{border-right-color:#8d6e63!important}.brown-A400-border-bottom{border-bottom-color:#8d6e63!important}.brown-A400-border-left{border-left-color:#8d6e63!important}.brown-A700-bg{background-color:#5d4037!important}.md-brown-A700-bg{background-color:#5d4037!important;color:rgba(255,255,255,.87)}.brown-A700-fg{color:#5d4037!important}.brown-A700-border{border-color:#5d4037!important}.brown-A700-border-top{border-top-color:#5d4037!important}.brown-A700-border-right{border-right-color:#5d4037!important}.brown-A700-border-bottom{border-bottom-color:#5d4037!important}.brown-A700-border-left{border-left-color:#5d4037!important}.grey-50-bg{background-color:#fafafa!important}.md-grey-50-bg{background-color:#fafafa!important;color:rgba(0,0,0,.87)}.grey-50-fg{color:#fafafa!important}.grey-50-border{border-color:#fafafa!important}.grey-50-border-top{border-top-color:#fafafa!important}.grey-50-border-right{border-right-color:#fafafa!important}.grey-50-border-bottom{border-bottom-color:#fafafa!important}.grey-50-border-left{border-left-color:#fafafa!important}.grey-100-bg{background-color:#f5f5f5!important}.md-grey-100-bg{background-color:#f5f5f5!important;color:rgba(0,0,0,.87)}.grey-100-fg{color:#f5f5f5!important}.grey-100-border{border-color:#f5f5f5!important}.grey-100-border-top{border-top-color:#f5f5f5!important}.grey-100-border-right{border-right-color:#f5f5f5!important}.grey-100-border-bottom{border-bottom-color:#f5f5f5!important}.grey-100-border-left{border-left-color:#f5f5f5!important}.grey-200-bg{background-color:#eee!important}.md-grey-200-bg{background-color:#eee!important;color:rgba(0,0,0,.87)}.grey-200-fg{color:#eee!important}.grey-200-border{border-color:#eee!important}.grey-200-border-top{border-top-color:#eee!important}.grey-200-border-right{border-right-color:#eee!important}.grey-200-border-bottom{border-bottom-color:#eee!important}.grey-200-border-left{border-left-color:#eee!important}.grey-300-bg{background-color:#e0e0e0!important}.md-grey-300-bg{background-color:#e0e0e0!important;color:rgba(0,0,0,.87)}.grey-300-fg{color:#e0e0e0!important}.grey-300-border{border-color:#e0e0e0!important}.grey-300-border-top{border-top-color:#e0e0e0!important}.grey-300-border-right{border-right-color:#e0e0e0!important}.grey-300-border-bottom{border-bottom-color:#e0e0e0!important}.grey-300-border-left{border-left-color:#e0e0e0!important}.grey-400-bg{background-color:#bdbdbd!important}.md-grey-400-bg{background-color:#bdbdbd!important;color:rgba(0,0,0,.87)}.grey-400-fg{color:#bdbdbd!important}.grey-400-border{border-color:#bdbdbd!important}.grey-400-border-top{border-top-color:#bdbdbd!important}.grey-400-border-right{border-right-color:#bdbdbd!important}.grey-400-border-bottom{border-bottom-color:#bdbdbd!important}.grey-400-border-left{border-left-color:#bdbdbd!important}.grey-500-bg{background-color:#9e9e9e!important}.md-grey-500-bg{background-color:#9e9e9e!important;color:rgba(0,0,0,.87)}.grey-500-fg{color:#9e9e9e!important}.grey-500-border{border-color:#9e9e9e!important}.grey-500-border-top{border-top-color:#9e9e9e!important}.grey-500-border-right{border-right-color:#9e9e9e!important}.grey-500-border-bottom{border-bottom-color:#9e9e9e!important}.grey-500-border-left{border-left-color:#9e9e9e!important}.md-grey-bg{background-color:#9e9e9e!important;color:rgba(0,0,0,.87)}.grey-bg{background-color:#9e9e9e!important}.grey-fg{color:#9e9e9e!important}.grey-border{border-color:#9e9e9e!important}.grey-border-top{border-top-color:#9e9e9e!important}.grey-border-right{border-right-color:#9e9e9e!important}.grey-border-bottom{border-bottom-color:#9e9e9e!important}.grey-border-left{border-left-color:#9e9e9e!important}.grey-600-bg{background-color:#757575!important}.md-grey-600-bg{background-color:#757575!important;color:rgba(255,255,255,.87)}.grey-600-fg{color:#757575!important}.grey-600-border{border-color:#757575!important}.grey-600-border-top{border-top-color:#757575!important}.grey-600-border-right{border-right-color:#757575!important}.grey-600-border-bottom{border-bottom-color:#757575!important}.grey-600-border-left{border-left-color:#757575!important}.grey-700-bg{background-color:#616161!important}.md-grey-700-bg{background-color:#616161!important;color:rgba(255,255,255,.87)}.grey-700-fg{color:#616161!important}.grey-700-border{border-color:#616161!important}.grey-700-border-top{border-top-color:#616161!important}.grey-700-border-right{border-right-color:#616161!important}.grey-700-border-bottom{border-bottom-color:#616161!important}.grey-700-border-left{border-left-color:#616161!important}.grey-800-bg{background-color:#424242!important}.md-grey-800-bg{background-color:#424242!important;color:rgba(255,255,255,.87)}.grey-800-fg{color:#424242!important}.grey-800-border{border-color:#424242!important}.grey-800-border-top{border-top-color:#424242!important}.grey-800-border-right{border-right-color:#424242!important}.grey-800-border-bottom{border-bottom-color:#424242!important}.grey-800-border-left{border-left-color:#424242!important}.grey-900-bg{background-color:#212121!important}.md-grey-900-bg{background-color:#212121!important;color:rgba(255,255,255,.87)}.grey-900-fg{color:#212121!important}.grey-900-border{border-color:#212121!important}.grey-900-border-top{border-top-color:#212121!important}.grey-900-border-right{border-right-color:#212121!important}.grey-900-border-bottom{border-bottom-color:#212121!important}.grey-900-border-left{border-left-color:#212121!important}.grey-1000-bg{background-color:#000!important}.md-grey-1000-bg{background-color:#000!important}.grey-1000-fg{color:#000!important}.grey-1000-border{border-color:#000!important}.grey-1000-border-top{border-top-color:#000!important}.grey-1000-border-right{border-right-color:#000!important}.grey-1000-border-bottom{border-bottom-color:#000!important}.grey-1000-border-left{border-left-color:#000!important}.grey-A100-bg{background-color:#fff!important}.md-grey-A100-bg{background-color:#fff!important;color:rgba(0,0,0,.87)}.grey-A100-fg{color:#fff!important}.grey-A100-border{border-color:#fff!important}.grey-A100-border-top{border-top-color:#fff!important}.grey-A100-border-right{border-right-color:#fff!important}.grey-A100-border-bottom{border-bottom-color:#fff!important}.grey-A100-border-left{border-left-color:#fff!important}.grey-A200-bg{background-color:#eee!important}.md-grey-A200-bg{background-color:#eee!important;color:rgba(0,0,0,.87)}.grey-A200-fg{color:#eee!important}.grey-A200-border{border-color:#eee!important}.grey-A200-border-top{border-top-color:#eee!important}.grey-A200-border-right{border-right-color:#eee!important}.grey-A200-border-bottom{border-bottom-color:#eee!important}.grey-A200-border-left{border-left-color:#eee!important}.grey-A400-bg{background-color:#bdbdbd!important}.md-grey-A400-bg{background-color:#bdbdbd!important;color:rgba(0,0,0,.87)}.grey-A400-fg{color:#bdbdbd!important}.grey-A400-border{border-color:#bdbdbd!important}.grey-A400-border-top{border-top-color:#bdbdbd!important}.grey-A400-border-right{border-right-color:#bdbdbd!important}.grey-A400-border-bottom{border-bottom-color:#bdbdbd!important}.grey-A400-border-left{border-left-color:#bdbdbd!important}.grey-A700-bg{background-color:#616161!important}.md-grey-A700-bg{background-color:#616161!important;color:rgba(0,0,0,.87)}.grey-A700-fg{color:#616161!important}.grey-A700-border{border-color:#616161!important}.grey-A700-border-top{border-top-color:#616161!important}.grey-A700-border-right{border-right-color:#616161!important}.grey-A700-border-bottom{border-bottom-color:#616161!important}.grey-A700-border-left{border-left-color:#616161!important}.blue-grey-50-bg{background-color:#eceff1!important}.md-blue-grey-50-bg{background-color:#eceff1!important;color:rgba(0,0,0,.87)}.blue-grey-50-fg{color:#eceff1!important}.blue-grey-50-border{border-color:#eceff1!important}.blue-grey-50-border-top{border-top-color:#eceff1!important}.blue-grey-50-border-right{border-right-color:#eceff1!important}.blue-grey-50-border-bottom{border-bottom-color:#eceff1!important}.blue-grey-50-border-left{border-left-color:#eceff1!important}.blue-grey-100-bg{background-color:#cfd8dc!important}.md-blue-grey-100-bg{background-color:#cfd8dc!important;color:rgba(0,0,0,.87)}.blue-grey-100-fg{color:#cfd8dc!important}.blue-grey-100-border{border-color:#cfd8dc!important}.blue-grey-100-border-top{border-top-color:#cfd8dc!important}.blue-grey-100-border-right{border-right-color:#cfd8dc!important}.blue-grey-100-border-bottom{border-bottom-color:#cfd8dc!important}.blue-grey-100-border-left{border-left-color:#cfd8dc!important}.blue-grey-200-bg{background-color:#b0bec5!important}.md-blue-grey-200-bg{background-color:#b0bec5!important;color:rgba(0,0,0,.87)}.blue-grey-200-fg{color:#b0bec5!important}.blue-grey-200-border{border-color:#b0bec5!important}.blue-grey-200-border-top{border-top-color:#b0bec5!important}.blue-grey-200-border-right{border-right-color:#b0bec5!important}.blue-grey-200-border-bottom{border-bottom-color:#b0bec5!important}.blue-grey-200-border-left{border-left-color:#b0bec5!important}.blue-grey-300-bg{background-color:#90a4ae!important}.md-blue-grey-300-bg{background-color:#90a4ae!important;color:rgba(0,0,0,.87)}.blue-grey-300-fg{color:#90a4ae!important}.blue-grey-300-border{border-color:#90a4ae!important}.blue-grey-300-border-top{border-top-color:#90a4ae!important}.blue-grey-300-border-right{border-right-color:#90a4ae!important}.blue-grey-300-border-bottom{border-bottom-color:#90a4ae!important}.blue-grey-300-border-left{border-left-color:#90a4ae!important}.blue-grey-400-bg{background-color:#78909c!important}.md-blue-grey-400-bg{background-color:#78909c!important;color:#fff}.blue-grey-400-fg{color:#78909c!important}.blue-grey-400-border{border-color:#78909c!important}.blue-grey-400-border-top{border-top-color:#78909c!important}.blue-grey-400-border-right{border-right-color:#78909c!important}.blue-grey-400-border-bottom{border-bottom-color:#78909c!important}.blue-grey-400-border-left{border-left-color:#78909c!important}.blue-grey-500-bg{background-color:#607d8b!important}.md-blue-grey-500-bg{background-color:#607d8b!important;color:#fff}.blue-grey-500-fg{color:#607d8b!important}.blue-grey-500-border{border-color:#607d8b!important}.blue-grey-500-border-top{border-top-color:#607d8b!important}.blue-grey-500-border-right{border-right-color:#607d8b!important}.blue-grey-500-border-bottom{border-bottom-color:#607d8b!important}.blue-grey-500-border-left{border-left-color:#607d8b!important}.md-blue-grey-bg{background-color:#607d8b!important;color:#fff}.blue-grey-bg{background-color:#607d8b!important}.blue-grey-fg{color:#607d8b!important}.blue-grey-border{border-color:#607d8b!important}.blue-grey-border-top{border-top-color:#607d8b!important}.blue-grey-border-right{border-right-color:#607d8b!important}.blue-grey-border-bottom{border-bottom-color:#607d8b!important}.blue-grey-border-left{border-left-color:#607d8b!important}.blue-grey-600-bg{background-color:#546e7a!important}.md-blue-grey-600-bg{background-color:#546e7a!important;color:rgba(255,255,255,.87)}.blue-grey-600-fg{color:#546e7a!important}.blue-grey-600-border{border-color:#546e7a!important}.blue-grey-600-border-top{border-top-color:#546e7a!important}.blue-grey-600-border-right{border-right-color:#546e7a!important}.blue-grey-600-border-bottom{border-bottom-color:#546e7a!important}.blue-grey-600-border-left{border-left-color:#546e7a!important}.blue-grey-700-bg{background-color:#455a64!important}.md-blue-grey-700-bg{background-color:#455a64!important;color:rgba(255,255,255,.87)}.blue-grey-700-fg{color:#455a64!important}.blue-grey-700-border{border-color:#455a64!important}.blue-grey-700-border-top{border-top-color:#455a64!important}.blue-grey-700-border-right{border-right-color:#455a64!important}.blue-grey-700-border-bottom{border-bottom-color:#455a64!important}.blue-grey-700-border-left{border-left-color:#455a64!important}.blue-grey-800-bg{background-color:#37474f!important}.md-blue-grey-800-bg{background-color:#37474f!important;color:rgba(255,255,255,.87)}.blue-grey-800-fg{color:#37474f!important}.blue-grey-800-border{border-color:#37474f!important}.blue-grey-800-border-top{border-top-color:#37474f!important}.blue-grey-800-border-right{border-right-color:#37474f!important}.blue-grey-800-border-bottom{border-bottom-color:#37474f!important}.blue-grey-800-border-left{border-left-color:#37474f!important}.blue-grey-900-bg{background-color:#263238!important}.md-blue-grey-900-bg{background-color:#263238!important;color:rgba(255,255,255,.87)}.blue-grey-900-fg{color:#263238!important}.blue-grey-900-border{border-color:#263238!important}.blue-grey-900-border-top{border-top-color:#263238!important}.blue-grey-900-border-right{border-right-color:#263238!important}.blue-grey-900-border-bottom{border-bottom-color:#263238!important}.blue-grey-900-border-left{border-left-color:#263238!important}.blue-grey-A100-bg{background-color:#cfd8dc!important}.md-blue-grey-A100-bg{background-color:#cfd8dc!important;color:rgba(255,255,255,.87)}.blue-grey-A100-fg{color:#cfd8dc!important}.blue-grey-A100-border{border-color:#cfd8dc!important}.blue-grey-A100-border-top{border-top-color:#cfd8dc!important}.blue-grey-A100-border-right{border-right-color:#cfd8dc!important}.blue-grey-A100-border-bottom{border-bottom-color:#cfd8dc!important}.blue-grey-A100-border-left{border-left-color:#cfd8dc!important}.blue-grey-A200-bg{background-color:#b0bec5!important}.md-blue-grey-A200-bg{background-color:#b0bec5!important;color:rgba(255,255,255,.87)}.blue-grey-A200-fg{color:#b0bec5!important}.blue-grey-A200-border{border-color:#b0bec5!important}.blue-grey-A200-border-top{border-top-color:#b0bec5!important}.blue-grey-A200-border-right{border-right-color:#b0bec5!important}.blue-grey-A200-border-bottom{border-bottom-color:#b0bec5!important}.blue-grey-A200-border-left{border-left-color:#b0bec5!important}.blue-grey-A400-bg{background-color:#78909c!important}.md-blue-grey-A400-bg{background-color:#78909c!important;color:rgba(255,255,255,.87)}.blue-grey-A400-fg{color:#78909c!important}.blue-grey-A400-border{border-color:#78909c!important}.blue-grey-A400-border-top{border-top-color:#78909c!important}.blue-grey-A400-border-right{border-right-color:#78909c!important}.blue-grey-A400-border-bottom{border-bottom-color:#78909c!important}.blue-grey-A400-border-left{border-left-color:#78909c!important}.blue-grey-A700-bg{background-color:#455a64!important}.md-blue-grey-A700-bg{background-color:#455a64!important;color:rgba(255,255,255,.87)}.blue-grey-A700-fg{color:#455a64!important}.blue-grey-A700-border{border-color:#455a64!important}.blue-grey-A700-border-top{border-top-color:#455a64!important}.blue-grey-A700-border-right{border-right-color:#455a64!important}.blue-grey-A700-border-bottom{border-bottom-color:#455a64!important}.blue-grey-A700-border-left{border-left-color:#455a64!important}.white-500-bg{background-color:#fff!important}.md-white-500-bg{background-color:#fff!important;color:rgba(0,0,0,.87)}.white-500-fg{color:#fff!important}.white-500-border{border-color:#fff!important}.white-500-border-top{border-top-color:#fff!important}.white-500-border-right{border-right-color:#fff!important}.white-500-border-bottom{border-bottom-color:#fff!important}.white-500-border-left{border-left-color:#fff!important}.md-white-bg{background-color:#fff!important;color:rgba(0,0,0,.87)}.white-bg{background-color:#fff!important}.white-fg{color:#fff!important}.white-border{border-color:#fff!important}.white-border-top{border-top-color:#fff!important}.white-border-right{border-right-color:#fff!important}.white-border-bottom{border-bottom-color:#fff!important}.white-border-left{border-left-color:#fff!important}.black-500-bg{background-color:#000!important}.md-black-500-bg{background-color:#000!important;color:rgba(255,255,255,.87)}.black-500-fg{color:#000!important}.black-500-border{border-color:#000!important}.black-500-border-top{border-top-color:#000!important}.black-500-border-right{border-right-color:#000!important}.black-500-border-bottom{border-bottom-color:#000!important}.black-500-border-left{border-left-color:#000!important}.md-black-bg{background-color:#000!important;color:rgba(255,255,255,.87)}.black-bg{background-color:#000!important}.black-fg{color:#000!important}.black-border{border-color:#000!important}.black-border-top{border-top-color:#000!important}.black-border-right{border-right-color:#000!important}.black-border-bottom{border-bottom-color:#000!important}.black-border-left{border-left-color:#000!important}i,md-icon[md-font-icon]{font-size:24px;width:24px;height:24px;min-width:24px;min-height:24px;line-height:24px}i.s4,md-icon[md-font-icon].s4{font-size:4px!important;width:4px!important;height:4px!important;min-width:4px!important;min-height:4px!important;line-height:4px!important}i.s6,md-icon[md-font-icon].s6{font-size:6px!important;width:6px!important;height:6px!important;min-width:6px!important;min-height:6px!important;line-height:6px!important}i.s8,md-icon[md-font-icon].s8{font-size:8px!important;width:8px!important;height:8px!important;min-width:8px!important;min-height:8px!important;line-height:8px!important}i.s10,md-icon[md-font-icon].s10{font-size:10px!important;width:10px!important;height:10px!important;min-width:10px!important;min-height:10px!important;line-height:10px!important}i.s12,md-icon[md-font-icon].s12{font-size:12px!important;width:12px!important;height:12px!important;min-width:12px!important;min-height:12px!important;line-height:12px!important}i.s14,md-icon[md-font-icon].s14{font-size:14px!important;width:14px!important;height:14px!important;min-width:14px!important;min-height:14px!important;line-height:14px!important}i.s16,md-icon[md-font-icon].s16{font-size:16px!important;width:16px!important;height:16px!important;min-width:16px!important;min-height:16px!important;line-height:16px!important}i.s18,md-icon[md-font-icon].s18{font-size:18px!important;width:18px!important;height:18px!important;min-width:18px!important;min-height:18px!important;line-height:18px!important}i.s20,md-icon[md-font-icon].s20{font-size:20px!important;width:20px!important;height:20px!important;min-width:20px!important;min-height:20px!important;line-height:20px!important}i.s22,md-icon[md-font-icon].s22{font-size:22px!important;width:22px!important;height:22px!important;min-width:22px!important;min-height:22px!important;line-height:22px!important}i.s24,md-icon[md-font-icon].s24{font-size:24px!important;width:24px!important;height:24px!important;min-width:24px!important;min-height:24px!important;line-height:24px!important}i.s26,md-icon[md-font-icon].s26{font-size:26px!important;width:26px!important;height:26px!important;min-width:26px!important;min-height:26px!important;line-height:26px!important}i.s28,md-icon[md-font-icon].s28{font-size:28px!important;width:28px!important;height:28px!important;min-width:28px!important;min-height:28px!important;line-height:28px!important}i.s30,md-icon[md-font-icon].s30{font-size:30px!important;width:30px!important;height:30px!important;min-width:30px!important;min-height:30px!important;line-height:30px!important}i.s32,md-icon[md-font-icon].s32{font-size:32px!important;width:32px!important;height:32px!important;min-width:32px!important;min-height:32px!important;line-height:32px!important}i.s34,md-icon[md-font-icon].s34{font-size:34px!important;width:34px!important;height:34px!important;min-width:34px!important;min-height:34px!important;line-height:34px!important}i.s36,md-icon[md-font-icon].s36{font-size:36px!important;width:36px!important;height:36px!important;min-width:36px!important;min-height:36px!important;line-height:36px!important}i.s38,md-icon[md-font-icon].s38{font-size:38px!important;width:38px!important;height:38px!important;min-width:38px!important;min-height:38px!important;line-height:38px!important}i.s40,md-icon[md-font-icon].s40{font-size:40px!important;width:40px!important;height:40px!important;min-width:40px!important;min-height:40px!important;line-height:40px!important}i.s42,md-icon[md-font-icon].s42{font-size:42px!important;width:42px!important;height:42px!important;min-width:42px!important;min-height:42px!important;line-height:42px!important}i.s44,md-icon[md-font-icon].s44{font-size:44px!important;width:44px!important;height:44px!important;min-width:44px!important;min-height:44px!important;line-height:44px!important}i.s46,md-icon[md-font-icon].s46{font-size:46px!important;width:46px!important;height:46px!important;min-width:46px!important;min-height:46px!important;line-height:46px!important}i.s48,md-icon[md-font-icon].s48{font-size:48px!important;width:48px!important;height:48px!important;min-width:48px!important;min-height:48px!important;line-height:48px!important}i.s50,md-icon[md-font-icon].s50{font-size:50px!important;width:50px!important;height:50px!important;min-width:50px!important;min-height:50px!important;line-height:50px!important}i.s52,md-icon[md-font-icon].s52{font-size:52px!important;width:52px!important;height:52px!important;min-width:52px!important;min-height:52px!important;line-height:52px!important}i.s54,md-icon[md-font-icon].s54{font-size:54px!important;width:54px!important;height:54px!important;min-width:54px!important;min-height:54px!important;line-height:54px!important}i.s56,md-icon[md-font-icon].s56{font-size:56px!important;width:56px!important;height:56px!important;min-width:56px!important;min-height:56px!important;line-height:56px!important}i.s58,md-icon[md-font-icon].s58{font-size:58px!important;width:58px!important;height:58px!important;min-width:58px!important;min-height:58px!important;line-height:58px!important}i.s60,md-icon[md-font-icon].s60{font-size:60px!important;width:60px!important;height:60px!important;min-width:60px!important;min-height:60px!important;line-height:60px!important}i.s62,md-icon[md-font-icon].s62{font-size:62px!important;width:62px!important;height:62px!important;min-width:62px!important;min-height:62px!important;line-height:62px!important}i.s64,md-icon[md-font-icon].s64{font-size:64px!important;width:64px!important;height:64px!important;min-width:64px!important;min-height:64px!important;line-height:64px!important}i.s66,md-icon[md-font-icon].s66{font-size:66px!important;width:66px!important;height:66px!important;min-width:66px!important;min-height:66px!important;line-height:66px!important}i.s68,md-icon[md-font-icon].s68{font-size:68px!important;width:68px!important;height:68px!important;min-width:68px!important;min-height:68px!important;line-height:68px!important}i.s70,md-icon[md-font-icon].s70{font-size:70px!important;width:70px!important;height:70px!important;min-width:70px!important;min-height:70px!important;line-height:70px!important}i.s72,md-icon[md-font-icon].s72{font-size:72px!important;width:72px!important;height:72px!important;min-width:72px!important;min-height:72px!important;line-height:72px!important}i.s74,md-icon[md-font-icon].s74{font-size:74px!important;width:74px!important;height:74px!important;min-width:74px!important;min-height:74px!important;line-height:74px!important}i.s76,md-icon[md-font-icon].s76{font-size:76px!important;width:76px!important;height:76px!important;min-width:76px!important;min-height:76px!important;line-height:76px!important}i.s78,md-icon[md-font-icon].s78{font-size:78px!important;width:78px!important;height:78px!important;min-width:78px!important;min-height:78px!important;line-height:78px!important}i.s80,md-icon[md-font-icon].s80{font-size:80px!important;width:80px!important;height:80px!important;min-width:80px!important;min-height:80px!important;line-height:80px!important}i.s82,md-icon[md-font-icon].s82{font-size:82px!important;width:82px!important;height:82px!important;min-width:82px!important;min-height:82px!important;line-height:82px!important}i.s84,md-icon[md-font-icon].s84{font-size:84px!important;width:84px!important;height:84px!important;min-width:84px!important;min-height:84px!important;line-height:84px!important}i.s86,md-icon[md-font-icon].s86{font-size:86px!important;width:86px!important;height:86px!important;min-width:86px!important;min-height:86px!important;line-height:86px!important}i.s88,md-icon[md-font-icon].s88{font-size:88px!important;width:88px!important;height:88px!important;min-width:88px!important;min-height:88px!important;line-height:88px!important}i.s90,md-icon[md-font-icon].s90{font-size:90px!important;width:90px!important;height:90px!important;min-width:90px!important;min-height:90px!important;line-height:90px!important}i.s92,md-icon[md-font-icon].s92{font-size:92px!important;width:92px!important;height:92px!important;min-width:92px!important;min-height:92px!important;line-height:92px!important}i.s94,md-icon[md-font-icon].s94{font-size:94px!important;width:94px!important;height:94px!important;min-width:94px!important;min-height:94px!important;line-height:94px!important}i.s96,md-icon[md-font-icon].s96{font-size:96px!important;width:96px!important;height:96px!important;min-width:96px!important;min-height:96px!important;line-height:96px!important}i.s98,md-icon[md-font-icon].s98{font-size:98px!important;width:98px!important;height:98px!important;min-width:98px!important;min-height:98px!important;line-height:98px!important}i.s100,md-icon[md-font-icon].s100{font-size:100px!important;width:100px!important;height:100px!important;min-width:100px!important;min-height:100px!important;line-height:100px!important}i.s102,md-icon[md-font-icon].s102{font-size:102px!important;width:102px!important;height:102px!important;min-width:102px!important;min-height:102px!important;line-height:102px!important}i.s104,md-icon[md-font-icon].s104{font-size:104px!important;width:104px!important;height:104px!important;min-width:104px!important;min-height:104px!important;line-height:104px!important}i.s106,md-icon[md-font-icon].s106{font-size:106px!important;width:106px!important;height:106px!important;min-width:106px!important;min-height:106px!important;line-height:106px!important}i.s108,md-icon[md-font-icon].s108{font-size:108px!important;width:108px!important;height:108px!important;min-width:108px!important;min-height:108px!important;line-height:108px!important}i.s110,md-icon[md-font-icon].s110{font-size:110px!important;width:110px!important;height:110px!important;min-width:110px!important;min-height:110px!important;line-height:110px!important}i.s112,md-icon[md-font-icon].s112{font-size:112px!important;width:112px!important;height:112px!important;min-width:112px!important;min-height:112px!important;line-height:112px!important}i.s114,md-icon[md-font-icon].s114{font-size:114px!important;width:114px!important;height:114px!important;min-width:114px!important;min-height:114px!important;line-height:114px!important}i.s116,md-icon[md-font-icon].s116{font-size:116px!important;width:116px!important;height:116px!important;min-width:116px!important;min-height:116px!important;line-height:116px!important}i.s118,md-icon[md-font-icon].s118{font-size:118px!important;width:118px!important;height:118px!important;min-width:118px!important;min-height:118px!important;line-height:118px!important}i.s120,md-icon[md-font-icon].s120{font-size:120px!important;width:120px!important;height:120px!important;min-width:120px!important;min-height:120px!important;line-height:120px!important}i.s122,md-icon[md-font-icon].s122{font-size:122px!important;width:122px!important;height:122px!important;min-width:122px!important;min-height:122px!important;line-height:122px!important}i.s124,md-icon[md-font-icon].s124{font-size:124px!important;width:124px!important;height:124px!important;min-width:124px!important;min-height:124px!important;line-height:124px!important}i.s126,md-icon[md-font-icon].s126{font-size:126px!important;width:126px!important;height:126px!important;min-width:126px!important;min-height:126px!important;line-height:126px!important}i.s128,md-icon[md-font-icon].s128{font-size:128px!important;width:128px!important;height:128px!important;min-width:128px!important;min-height:128px!important;line-height:128px!important}i.s130,md-icon[md-font-icon].s130{font-size:130px!important;width:130px!important;height:130px!important;min-width:130px!important;min-height:130px!important;line-height:130px!important}i.s132,md-icon[md-font-icon].s132{font-size:132px!important;width:132px!important;height:132px!important;min-width:132px!important;min-height:132px!important;line-height:132px!important}i.s134,md-icon[md-font-icon].s134{font-size:134px!important;width:134px!important;height:134px!important;min-width:134px!important;min-height:134px!important;line-height:134px!important}i.s136,md-icon[md-font-icon].s136{font-size:136px!important;width:136px!important;height:136px!important;min-width:136px!important;min-height:136px!important;line-height:136px!important}i.s138,md-icon[md-font-icon].s138{font-size:138px!important;width:138px!important;height:138px!important;min-width:138px!important;min-height:138px!important;line-height:138px!important}i.s140,md-icon[md-font-icon].s140{font-size:140px!important;width:140px!important;height:140px!important;min-width:140px!important;min-height:140px!important;line-height:140px!important}i.s142,md-icon[md-font-icon].s142{font-size:142px!important;width:142px!important;height:142px!important;min-width:142px!important;min-height:142px!important;line-height:142px!important}i.s144,md-icon[md-font-icon].s144{font-size:144px!important;width:144px!important;height:144px!important;min-width:144px!important;min-height:144px!important;line-height:144px!important}i.s146,md-icon[md-font-icon].s146{font-size:146px!important;width:146px!important;height:146px!important;min-width:146px!important;min-height:146px!important;line-height:146px!important}i.s148,md-icon[md-font-icon].s148{font-size:148px!important;width:148px!important;height:148px!important;min-width:148px!important;min-height:148px!important;line-height:148px!important}i.s150,md-icon[md-font-icon].s150{font-size:150px!important;width:150px!important;height:150px!important;min-width:150px!important;min-height:150px!important;line-height:150px!important}i.s152,md-icon[md-font-icon].s152{font-size:152px!important;width:152px!important;height:152px!important;min-width:152px!important;min-height:152px!important;line-height:152px!important}i.s154,md-icon[md-font-icon].s154{font-size:154px!important;width:154px!important;height:154px!important;min-width:154px!important;min-height:154px!important;line-height:154px!important}i.s156,md-icon[md-font-icon].s156{font-size:156px!important;width:156px!important;height:156px!important;min-width:156px!important;min-height:156px!important;line-height:156px!important}i.s158,md-icon[md-font-icon].s158{font-size:158px!important;width:158px!important;height:158px!important;min-width:158px!important;min-height:158px!important;line-height:158px!important}i.s160,md-icon[md-font-icon].s160{font-size:160px!important;width:160px!important;height:160px!important;min-width:160px!important;min-height:160px!important;line-height:160px!important}i.s162,md-icon[md-font-icon].s162{font-size:162px!important;width:162px!important;height:162px!important;min-width:162px!important;min-height:162px!important;line-height:162px!important}i.s164,md-icon[md-font-icon].s164{font-size:164px!important;width:164px!important;height:164px!important;min-width:164px!important;min-height:164px!important;line-height:164px!important}i.s166,md-icon[md-font-icon].s166{font-size:166px!important;width:166px!important;height:166px!important;min-width:166px!important;min-height:166px!important;line-height:166px!important}i.s168,md-icon[md-font-icon].s168{font-size:168px!important;width:168px!important;height:168px!important;min-width:168px!important;min-height:168px!important;line-height:168px!important}i.s170,md-icon[md-font-icon].s170{font-size:170px!important;width:170px!important;height:170px!important;min-width:170px!important;min-height:170px!important;line-height:170px!important}i.s172,md-icon[md-font-icon].s172{font-size:172px!important;width:172px!important;height:172px!important;min-width:172px!important;min-height:172px!important;line-height:172px!important}i.s174,md-icon[md-font-icon].s174{font-size:174px!important;width:174px!important;height:174px!important;min-width:174px!important;min-height:174px!important;line-height:174px!important}i.s176,md-icon[md-font-icon].s176{font-size:176px!important;width:176px!important;height:176px!important;min-width:176px!important;min-height:176px!important;line-height:176px!important}i.s178,md-icon[md-font-icon].s178{font-size:178px!important;width:178px!important;height:178px!important;min-width:178px!important;min-height:178px!important;line-height:178px!important}i.s180,md-icon[md-font-icon].s180{font-size:180px!important;width:180px!important;height:180px!important;min-width:180px!important;min-height:180px!important;line-height:180px!important}i.s182,md-icon[md-font-icon].s182{font-size:182px!important;width:182px!important;height:182px!important;min-width:182px!important;min-height:182px!important;line-height:182px!important}i.s184,md-icon[md-font-icon].s184{font-size:184px!important;width:184px!important;height:184px!important;min-width:184px!important;min-height:184px!important;line-height:184px!important}i.s186,md-icon[md-font-icon].s186{font-size:186px!important;width:186px!important;height:186px!important;min-width:186px!important;min-height:186px!important;line-height:186px!important}i.s188,md-icon[md-font-icon].s188{font-size:188px!important;width:188px!important;height:188px!important;min-width:188px!important;min-height:188px!important;line-height:188px!important}i.s190,md-icon[md-font-icon].s190{font-size:190px!important;width:190px!important;height:190px!important;min-width:190px!important;min-height:190px!important;line-height:190px!important}i.s192,md-icon[md-font-icon].s192{font-size:192px!important;width:192px!important;height:192px!important;min-width:192px!important;min-height:192px!important;line-height:192px!important}i.s194,md-icon[md-font-icon].s194{font-size:194px!important;width:194px!important;height:194px!important;min-width:194px!important;min-height:194px!important;line-height:194px!important}i.s196,md-icon[md-font-icon].s196{font-size:196px!important;width:196px!important;height:196px!important;min-width:196px!important;min-height:196px!important;line-height:196px!important}i.s198,md-icon[md-font-icon].s198{font-size:198px!important;width:198px!important;height:198px!important;min-width:198px!important;min-height:198px!important;line-height:198px!important}i.s200,md-icon[md-font-icon].s200{font-size:200px!important;width:200px!important;height:200px!important;min-width:200px!important;min-height:200px!important;line-height:200px!important}i.s202,md-icon[md-font-icon].s202{font-size:202px!important;width:202px!important;height:202px!important;min-width:202px!important;min-height:202px!important;line-height:202px!important}i.s204,md-icon[md-font-icon].s204{font-size:204px!important;width:204px!important;height:204px!important;min-width:204px!important;min-height:204px!important;line-height:204px!important}i.s206,md-icon[md-font-icon].s206{font-size:206px!important;width:206px!important;height:206px!important;min-width:206px!important;min-height:206px!important;line-height:206px!important}i.s208,md-icon[md-font-icon].s208{font-size:208px!important;width:208px!important;height:208px!important;min-width:208px!important;min-height:208px!important;line-height:208px!important}i.s210,md-icon[md-font-icon].s210{font-size:210px!important;width:210px!important;height:210px!important;min-width:210px!important;min-height:210px!important;line-height:210px!important}i.s212,md-icon[md-font-icon].s212{font-size:212px!important;width:212px!important;height:212px!important;min-width:212px!important;min-height:212px!important;line-height:212px!important}i.s214,md-icon[md-font-icon].s214{font-size:214px!important;width:214px!important;height:214px!important;min-width:214px!important;min-height:214px!important;line-height:214px!important}i.s216,md-icon[md-font-icon].s216{font-size:216px!important;width:216px!important;height:216px!important;min-width:216px!important;min-height:216px!important;line-height:216px!important}i.s218,md-icon[md-font-icon].s218{font-size:218px!important;width:218px!important;height:218px!important;min-width:218px!important;min-height:218px!important;line-height:218px!important}i.s220,md-icon[md-font-icon].s220{font-size:220px!important;width:220px!important;height:220px!important;min-width:220px!important;min-height:220px!important;line-height:220px!important}i.s222,md-icon[md-font-icon].s222{font-size:222px!important;width:222px!important;height:222px!important;min-width:222px!important;min-height:222px!important;line-height:222px!important}i.s224,md-icon[md-font-icon].s224{font-size:224px!important;width:224px!important;height:224px!important;min-width:224px!important;min-height:224px!important;line-height:224px!important}i.s226,md-icon[md-font-icon].s226{font-size:226px!important;width:226px!important;height:226px!important;min-width:226px!important;min-height:226px!important;line-height:226px!important}i.s228,md-icon[md-font-icon].s228{font-size:228px!important;width:228px!important;height:228px!important;min-width:228px!important;min-height:228px!important;line-height:228px!important}i.s230,md-icon[md-font-icon].s230{font-size:230px!important;width:230px!important;height:230px!important;min-width:230px!important;min-height:230px!important;line-height:230px!important}i.s232,md-icon[md-font-icon].s232{font-size:232px!important;width:232px!important;height:232px!important;min-width:232px!important;min-height:232px!important;line-height:232px!important}i.s234,md-icon[md-font-icon].s234{font-size:234px!important;width:234px!important;height:234px!important;min-width:234px!important;min-height:234px!important;line-height:234px!important}i.s236,md-icon[md-font-icon].s236{font-size:236px!important;width:236px!important;height:236px!important;min-width:236px!important;min-height:236px!important;line-height:236px!important}i.s238,md-icon[md-font-icon].s238{font-size:238px!important;width:238px!important;height:238px!important;min-width:238px!important;min-height:238px!important;line-height:238px!important}i.s240,md-icon[md-font-icon].s240{font-size:240px!important;width:240px!important;height:240px!important;min-width:240px!important;min-height:240px!important;line-height:240px!important}i.s242,md-icon[md-font-icon].s242{font-size:242px!important;width:242px!important;height:242px!important;min-width:242px!important;min-height:242px!important;line-height:242px!important}i.s244,md-icon[md-font-icon].s244{font-size:244px!important;width:244px!important;height:244px!important;min-width:244px!important;min-height:244px!important;line-height:244px!important}i.s246,md-icon[md-font-icon].s246{font-size:246px!important;width:246px!important;height:246px!important;min-width:246px!important;min-height:246px!important;line-height:246px!important}i.s248,md-icon[md-font-icon].s248{font-size:248px!important;width:248px!important;height:248px!important;min-width:248px!important;min-height:248px!important;line-height:248px!important}i.s250,md-icon[md-font-icon].s250{font-size:250px!important;width:250px!important;height:250px!important;min-width:250px!important;min-height:250px!important;line-height:250px!important}i.s252,md-icon[md-font-icon].s252{font-size:252px!important;width:252px!important;height:252px!important;min-width:252px!important;min-height:252px!important;line-height:252px!important}i.s254,md-icon[md-font-icon].s254{font-size:254px!important;width:254px!important;height:254px!important;min-width:254px!important;min-height:254px!important;line-height:254px!important}i.s256,md-icon[md-font-icon].s256{font-size:256px!important;width:256px!important;height:256px!important;min-width:256px!important;min-height:256px!important;line-height:256px!important}@font-face{font-family:icomoon;src:url(../assets/icons/fonts/icomoon.eot?5km1tg);src:url(../assets/icons/fonts/icomoon.eot?#iefix5km1tg) format("embedded-opentype"),url(../assets/icons/fonts/icomoon.ttf?5km1tg) format("truetype"),url(../assets/icons/fonts/icomoon.woff?5km1tg) format("woff"),url(../assets/icons/fonts/icomoon.svg?5km1tg#icomoon) format("svg");font-weight:400;font-style:normal}[class*=' icon-'],[class^=icon-]{font-family:icomoon;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-account-alert:before{content:'\e600'}.icon-account-box-outline:before{content:'\e601'}.icon-account-box:before{content:'\e602'}.icon-account-check:before{content:'\e603'}.icon-account-circle:before{content:'\e604'}.icon-account-key:before{content:'\e605'}.icon-account-location:before{content:'\e606'}.icon-account-minus:before{content:'\e607'}.icon-account-multiple-outline:before{content:'\e608'}.icon-account-multiple-plus:before{content:'\e609'}.icon-account-multiple:before{content:'\e60a'}.icon-account-network:before{content:'\e60b'}.icon-account-outline:before{content:'\e60c'}.icon-account-plus:before{content:'\e60d'}.icon-account-remove:before{content:'\e60e'}.icon-account-search:before{content:'\e60f'}.icon-account-switch:before{content:'\e610'}.icon-account:before{content:'\e611'}.icon-airballoon:before{content:'\e612'}.icon-airplane-off:before{content:'\e613'}.icon-airplane:before{content:'\e614'}.icon-alarm-check:before{content:'\e615'}.icon-alarm-multiple:before{content:'\e616'}.icon-alarm-off:before{content:'\e617'}.icon-alarm-plus:before{content:'\e618'}.icon-alarm:before{content:'\e619'}.icon-album:before{content:'\e61a'}.icon-alert-box:before{content:'\e61b'}.icon-alert-circle:before{content:'\e61c'}.icon-alert-octagon:before{content:'\e61d'}.icon-alert:before{content:'\e61e'}.icon-alpha:before{content:'\e61f'}.icon-alphabetical:before{content:'\e620'}.icon-amazon-clouddrive:before{content:'\e621'}.icon-amazon:before{content:'\e622'}.icon-ambulance:before{content:'\e623'}.icon-android-debug-bridge:before{content:'\e624'}.icon-android-studio:before{content:'\e625'}.icon-android:before{content:'\e626'}.icon-apple-finder:before{content:'\e627'}.icon-apple-ios:before{content:'\e628'}.icon-apple-mobileme:before{content:'\e629'}.icon-apple-safari:before{content:'\e62a'}.icon-apple:before{content:'\e62b'}.icon-appnet:before{content:'\e62c'}.icon-apps:before{content:'\e62d'}.icon-archive:before{content:'\e62e'}.icon-arrange-bring-forward:before{content:'\e62f'}.icon-arrange-bring-to-front:before{content:'\e630'}.icon-arrange-send-backward:before{content:'\e631'}.icon-arrange-send-to-back:before{content:'\e632'}.icon-arrow-all:before{content:'\e633'}.icon-arrow-bottom-left:before{content:'\e634'}.icon-arrow-bottom-right:before{content:'\e635'}.icon-arrow-collapse:before{content:'\e636'}.icon-arrow-down-bold-circle-outline:before{content:'\e637'}.icon-arrow-down-bold-circle:before{content:'\e638'}.icon-arrow-down-bold-hexagon-outline:before{content:'\e639'}.icon-arrow-down-bold:before{content:'\e63a'}.icon-arrow-down:before{content:'\e63b'}.icon-arrow-expand:before{content:'\e63c'}.icon-arrow-left-bold-circle-outline:before{content:'\e63d'}.icon-arrow-left-bold-circle:before{content:'\e63e'}.icon-arrow-left-bold-hexagon-outline:before{content:'\e63f'}.icon-arrow-left-bold:before{content:'\e640'}.icon-arrow-left:before{content:'\e641'}.icon-arrow-right-bold-circle-outline:before{content:'\e642'}.icon-arrow-right-bold-circle:before{content:'\e643'}.icon-arrow-right-bold-hexagon-outline:before{content:'\e644'}.icon-arrow-right-bold:before{content:'\e645'}.icon-arrow-right:before{content:'\e646'}.icon-arrow-top-left:before{content:'\e647'}.icon-arrow-top-right:before{content:'\e648'}.icon-arrow-up-bold-circle-outline:before{content:'\e649'}.icon-arrow-up-bold-circle:before{content:'\e64a'}.icon-arrow-up-bold-hexagon-outline:before{content:'\e64b'}.icon-arrow-up-bold:before{content:'\e64c'}.icon-arrow-up:before{content:'\e64d'}.icon-at:before{content:'\e64e'}.icon-attachment:before{content:'\e64f'}.icon-audiobook:before{content:'\e650'}.icon-auto-fix:before{content:'\e651'}.icon-auto-upload:before{content:'\e652'}.icon-baby:before{content:'\e653'}.icon-backburger:before{content:'\e654'}.icon-backup-restore:before{content:'\e655'}.icon-bank:before{content:'\e656'}.icon-barcode:before{content:'\e657'}.icon-barley:before{content:'\e658'}.icon-barrel:before{content:'\e659'}.icon-basecamp:before{content:'\e65a'}.icon-basket-fill:before{content:'\e65b'}.icon-basket-unfill:before{content:'\e65c'}.icon-basket:before{content:'\e65d'}.icon-battery-10:before{content:'\e65e'}.icon-battery-20:before{content:'\e65f'}.icon-battery-30:before{content:'\e660'}.icon-battery-40:before{content:'\e661'}.icon-battery-50:before{content:'\e662'}.icon-battery-60:before{content:'\e663'}.icon-battery-70:before{content:'\e664'}.icon-battery-80:before{content:'\e665'}.icon-battery-90:before{content:'\e666'}.icon-battery-alert:before{content:'\e667'}.icon-battery-charging-20:before{content:'\e668'}.icon-battery-charging-30:before{content:'\e669'}.icon-battery-charging-40:before{content:'\e66a'}.icon-battery-charging-60:before{content:'\e66b'}.icon-battery-charging-80:before{content:'\e66c'}.icon-battery-charging-90:before{content:'\e66d'}.icon-battery-charging-100:before{content:'\e66e'}.icon-battery-minus:before{content:'\e66f'}.icon-battery-negative:before{content:'\e670'}.icon-battery-outline:before{content:'\e671'}.icon-battery-plus:before{content:'\e672'}.icon-battery-positive:before{content:'\e673'}.icon-battery-standard:before{content:'\e674'}.icon-battery-unknown:before{content:'\e675'}.icon-battery:before{content:'\e676'}.icon-beach:before{content:'\e677'}.icon-beaker-empty-outline:before{content:'\e678'}.icon-beaker-empty:before{content:'\e679'}.icon-beaker-outline:before{content:'\e67a'}.icon-beaker:before{content:'\e67b'}.icon-beats:before{content:'\e67c'}.icon-beer:before{content:'\e67d'}.icon-behance:before{content:'\e67e'}.icon-bell-off:before{content:'\e67f'}.icon-bell-outline:before{content:'\e680'}.icon-bell-ring-outline:before{content:'\e681'}.icon-bell-ring:before{content:'\e682'}.icon-bell-sleep:before{content:'\e683'}.icon-bell:before{content:'\e684'}.icon-beta:before{content:'\e685'}.icon-bike:before{content:'\e686'}.icon-bing:before{content:'\e687'}.icon-binoculars:before{content:'\e688'}.icon-bio:before{content:'\e689'}.icon-bitbucket:before{content:'\e68a'}.icon-black-mesa:before{content:'\e68b'}.icon-blackberry:before{content:'\e68c'}.icon-blinds:before{content:'\e68d'}.icon-block-helper:before{content:'\e68e'}.icon-blogger:before{content:'\e68f'}.icon-bluetooth-audio:before{content:'\e690'}.icon-bluetooth-connect:before{content:'\e691'}.icon-bluetooth-settings:before{content:'\e692'}.icon-bluetooth-transfer:before{content:'\e693'}.icon-bluetooth:before{content:'\e694'}.icon-blur-linear:before{content:'\e695'}.icon-blur-off:before{content:'\e696'}.icon-blur-radial:before{content:'\e697'}.icon-blur:before{content:'\e698'}.icon-bone:before{content:'\e699'}.icon-book-multiple-variant:before{content:'\e69a'}.icon-book-multiple:before{content:'\e69b'}.icon-book-open:before{content:'\e69c'}.icon-book-variant:before{content:'\e69d'}.icon-book:before{content:'\e69e'}.icon-bookmark-check:before{content:'\e69f'}.icon-bookmark-music:before{content:'\e6a0'}.icon-bookmark-outline-plus:before{content:'\e6a1'}.icon-bookmark-outline:before{content:'\e6a2'}.icon-bookmark-plus:before{content:'\e6a3'}.icon-bookmark-remove:before{content:'\e6a4'}.icon-bookmark:before{content:'\e6a5'}.icon-border-all:before{content:'\e6a6'}.icon-border-bottom:before{content:'\e6a7'}.icon-border-color:before{content:'\e6a8'}.icon-border-horizontal:before{content:'\e6a9'}.icon-border-inside:before{content:'\e6aa'}.icon-border-left:before{content:'\e6ab'}.icon-border-none:before{content:'\e6ac'}.icon-border-outside:before{content:'\e6ad'}.icon-border-right:before{content:'\e6ae'}.icon-border-top:before{content:'\e6af'}.icon-border-vertical:before{content:'\e6b0'}.icon-bowling:before{content:'\e6b1'}.icon-box-download:before{content:'\e6b2'}.icon-box-upload:before{content:'\e6b3'}.icon-box:before{content:'\e6b4'}.icon-briefcase-checked:before{content:'\e6b5'}.icon-briefcase-download:before{content:'\e6b6'}.icon-briefcase-upload:before{content:'\e6b7'}.icon-briefcase:before{content:'\e6b8'}.icon-brightness-1:before{content:'\e6b9'}.icon-brightness-2:before{content:'\e6ba'}.icon-brightness-3:before{content:'\e6bb'}.icon-brightness-4:before{content:'\e6bc'}.icon-brightness-5:before{content:'\e6bd'}.icon-brightness-6:before{content:'\e6be'}.icon-brightness-7:before{content:'\e6bf'}.icon-brightness-auto:before{content:'\e6c0'}.icon-brightness:before{content:'\e6c1'}.icon-broom:before{content:'\e6c2'}.icon-brush:before{content:'\e6c3'}.icon-bug:before{content:'\e6c4'}.icon-bulletin-board:before{content:'\e6c5'}.icon-bullhorn:before{content:'\e6c6'}.icon-bus:before{content:'\e6c7'}.icon-cake-variant:before{content:'\e6c8'}.icon-cake:before{content:'\e6c9'}.icon-calculator:before{content:'\e6ca'}.icon-calendar-blank:before{content:'\e6cb'}.icon-calendar-check-multiple:before{content:'\e6cc'}.icon-calendar-check:before{content:'\e6cd'}.icon-calendar-clock:before{content:'\e6ce'}.icon-calendar-multiple:before{content:'\e6cf'}.icon-calendar-plus:before{content:'\e6d0'}.icon-calendar-remove:before{content:'\e6d1'}.icon-calendar-select:before{content:'\e6d2'}.icon-calendar-text:before{content:'\e6d3'}.icon-calendar-today:before{content:'\e6d4'}.icon-calendar:before{content:'\e6d5'}.icon-camcorder-box-off:before{content:'\e6d6'}.icon-camcorder-box:before{content:'\e6d7'}.icon-camcorder-off:before{content:'\e6d8'}.icon-camcorder:before{content:'\e6d9'}.icon-camera-front-variant:before{content:'\e6da'}.icon-camera-front:before{content:'\e6db'}.icon-camera-iris:before{content:'\e6dc'}.icon-camera-party-mode:before{content:'\e6dd'}.icon-camera-rear-variant:before{content:'\e6de'}.icon-camera-rear:before{content:'\e6df'}.icon-camera-switch:before{content:'\e6e0'}.icon-camera-timer:before{content:'\e6e1'}.icon-camera:before{content:'\e6e2'}.icon-cancel:before{content:'\e6e3'}.icon-candycane:before{content:'\e6e4'}.icon-car-wash:before{content:'\e6e5'}.icon-car:before{content:'\e6e6'}.icon-carrot:before{content:'\e6e7'}.icon-cart-outline:before{content:'\e6e8'}.icon-cart:before{content:'\e6e9'}.icon-cash-100:before{content:'\e6ea'}.icon-cash-multiple:before{content:'\e6eb'}.icon-cash-usd:before{content:'\e6ec'}.icon-cash:before{content:'\e6ed'}.icon-cast-connected:before{content:'\e6ee'}.icon-cast:before{content:'\e6ef'}.icon-castle:before{content:'\e6f0'}.icon-cat:before{content:'\e6f1'}.icon-cellphone-android:before{content:'\e6f2'}.icon-cellphone-dock:before{content:'\e6f3'}.icon-cellphone-iphone:before{content:'\e6f4'}.icon-cellphone-link-off:before{content:'\e6f5'}.icon-cellphone-link:before{content:'\e6f6'}.icon-cellphone-settings:before{content:'\e6f7'}.icon-cellphone:before{content:'\e6f8'}.icon-chair-school:before{content:'\e6f9'}.icon-chart-arc:before{content:'\e6fa'}.icon-chart-areaspline:before{content:'\e6fb'}.icon-chart-bar:before{content:'\e6fc'}.icon-chart-histogram:before{content:'\e6fd'}.icon-chart-line:before{content:'\e6fe'}.icon-chart-pie:before{content:'\e6ff'}.icon-check-all:before{content:'\e700'}.icon-check-bookmark:before{content:'\e701'}.icon-check-circle:before{content:'\e702'}.icon-check:before{content:'\e703'}.icon-checkbox-blank-circle-outline:before{content:'\e704'}.icon-checkbox-blank-circle:before{content:'\e705'}.icon-checkbox-blank-outline:before{content:'\e706'}.icon-checkbox-blank:before{content:'\e707'}.icon-checkbox-marked-circle-outline:before{content:'\e708'}.icon-checkbox-marked-circle:before{content:'\e709'}.icon-checkbox-marked-outline:before{content:'\e70a'}.icon-checkbox-marked:before{content:'\e70b'}.icon-checkbox-multiple-blank-outline:before{content:'\e70c'}.icon-checkbox-multiple-blank:before{content:'\e70d'}.icon-checkbox-multiple-marked-outline:before{content:'\e70e'}.icon-checkbox-multiple-marked:before{content:'\e70f'}.icon-checkerboard:before{content:'\e710'}.icon-chevron-double-down:before{content:'\e711'}.icon-chevron-double-left:before{content:'\e712'}.icon-chevron-double-right:before{content:'\e713'}.icon-chevron-double-up:before{content:'\e714'}.icon-chevron-down:before{content:'\e715'}.icon-chevron-left:before{content:'\e716'}.icon-chevron-right:before{content:'\e717'}.icon-chevron-up:before{content:'\e718'}.icon-church:before{content:'\e719'}.icon-cisco-webex:before{content:'\e71a'}.icon-city:before{content:'\e71b'}.icon-clapperboard:before{content:'\e71c'}.icon-clipboard-account:before{content:'\e71d'}.icon-clipboard-alert:before{content:'\e71e'}.icon-clipboard-arrow-down:before{content:'\e71f'}.icon-clipboard-arrow-left:before{content:'\e720'}.icon-clipboard-check:before{content:'\e721'}.icon-clipboard-outline:before{content:'\e722'}.icon-clipboard-text:before{content:'\e723'}.icon-clipboard:before{content:'\e724'}.icon-clippy:before{content:'\e725'}.icon-clock-fast:before{content:'\e726'}.icon-clock:before{content:'\e727'}.icon-close-circle-outline:before{content:'\e728'}.icon-close-circle:before{content:'\e729'}.icon-close-network:before{content:'\e72a'}.icon-close:before{content:'\e72b'}.icon-closed-caption:before{content:'\e72c'}.icon-cloud-check:before{content:'\e72d'}.icon-cloud-circle:before{content:'\e72e'}.icon-cloud-download:before{content:'\e72f'}.icon-cloud-outline-off:before{content:'\e730'}.icon-cloud-outline:before{content:'\e731'}.icon-cloud-upload:before{content:'\e732'}.icon-cloud:before{content:'\e733'}.icon-code-array:before{content:'\e734'}.icon-code-braces:before{content:'\e735'}.icon-code-equal:before{content:'\e736'}.icon-code-greater-than-or-equal:before{content:'\e737'}.icon-code-greater-than:before{content:'\e738'}.icon-code-less-than-or-equal:before{content:'\e739'}.icon-code-less-than:before{content:'\e73a'}.icon-code-not-equal-variant:before{content:'\e73b'}.icon-code-not-equal:before{content:'\e73c'}.icon-code-string:before{content:'\e73d'}.icon-code-tags:before{content:'\e73e'}.icon-codepen:before{content:'\e73f'}.icon-coffee-to-go:before{content:'\e740'}.icon-coffee:before{content:'\e741'}.icon-cog-box:before{content:'\e742'}.icon-cog:before{content:'\e743'}.icon-coin:before{content:'\e744'}.icon-color-helper:before{content:'\e745'}.icon-comment-account-outline:before{content:'\e746'}.icon-comment-account:before{content:'\e747'}.icon-comment-alert-outline:before{content:'\e748'}.icon-comment-alert:before{content:'\e749'}.icon-comment-check-outline:before{content:'\e74a'}.icon-comment-check:before{content:'\e74b'}.icon-comment-multipe-outline:before{content:'\e74c'}.icon-comment-outline:before{content:'\e74d'}.icon-comment-plus-outline:before{content:'\e74e'}.icon-comment-processing-outline:before{content:'\e74f'}.icon-comment-processing:before{content:'\e750'}.icon-comment-remove-outline:before{content:'\e751'}.icon-comment-text-outline:before{content:'\e752'}.icon-comment-text:before{content:'\e753'}.icon-comment:before{content:'\e754'}.icon-compare:before{content:'\e755'}.icon-compass-outline:before{content:'\e756'}.icon-compass:before{content:'\e757'}.icon-console:before{content:'\e758'}.icon-content-copy:before{content:'\e759'}.icon-content-cut:before{content:'\e75a'}.icon-content-duplicate:before{content:'\e75b'}.icon-content-paste:before{content:'\e75c'}.icon-content-save-all:before{content:'\e75d'}.icon-content-save:before{content:'\e75e'}.icon-contrast-box:before{content:'\e75f'}.icon-contrast-circle:before{content:'\e760'}.icon-contrast:before{content:'\e761'}.icon-controller-xbox:before{content:'\e762'}.icon-cow:before{content:'\e763'}.icon-credit-card-multiple:before{content:'\e764'}.icon-credit-card:before{content:'\e765'}.icon-crop-free:before{content:'\e766'}.icon-crop-landscape:before{content:'\e767'}.icon-crop-portrait:before{content:'\e768'}.icon-crop-square:before{content:'\e769'}.icon-crop:before{content:'\e76a'}.icon-crosshairs-gps:before{content:'\e76b'}.icon-crosshairs:before{content:'\e76c'}.icon-crown:before{content:'\e76d'}.icon-cube-outline:before{content:'\e76e'}.icon-cube-unfolded:before{content:'\e76f'}.icon-cube:before{content:'\e770'}.icon-cup-water:before{content:'\e771'}.icon-cup:before{content:'\e772'}.icon-currency-btc:before{content:'\e773'}.icon-currency-eur:before{content:'\e774'}.icon-currency-gbp:before{content:'\e775'}.icon-currency-inr:before{content:'\e776'}.icon-currency-rub:before{content:'\e777'}.icon-currency-try:before{content:'\e778'}.icon-currency-usd:before{content:'\e779'}.icon-cursor-default-outline:before{content:'\e77a'}.icon-cursor-default:before{content:'\e77b'}.icon-cursor-move:before{content:'\e77c'}.icon-cursor-pointer:before{content:'\e77d'}.icon-data:before{content:'\e77e'}.icon-debug-step-into:before{content:'\e77f'}.icon-debug-step-out:before{content:'\e780'}.icon-debug-step-over:before{content:'\e781'}.icon-decimal-decrease:before{content:'\e782'}.icon-decimal-increase:before{content:'\e783'}.icon-delete-variant:before{content:'\e784'}.icon-delete:before{content:'\e785'}.icon-deskphone:before{content:'\e786'}.icon-desktop-mac:before{content:'\e787'}.icon-desktop-tower:before{content:'\e788'}.icon-details:before{content:'\e789'}.icon-deviantart:before{content:'\e78a'}.icon-diamond:before{content:'\e78b'}.icon-dice-1:before{content:'\e78c'}.icon-dice-2:before{content:'\e78d'}.icon-dice-3:before{content:'\e78e'}.icon-dice-4:before{content:'\e78f'}.icon-dice-5:before{content:'\e790'}.icon-dice-6:before{content:'\e791'}.icon-dice:before{content:'\e792'}.icon-directions:before{content:'\e793'}.icon-disk-alert:before{content:'\e794'}.icon-disqus-outline:before{content:'\e795'}.icon-disqus:before{content:'\e796'}.icon-division-box:before{content:'\e797'}.icon-division:before{content:'\e798'}.icon-dns:before{content:'\e799'}.icon-document:before{content:'\e79a'}.icon-domain:before{content:'\e79b'}.icon-dots-horizontal:before{content:'\e79c'}.icon-dots-vertical:before{content:'\e79d'}.icon-download:before{content:'\e79e'}.icon-drag-horizontal:before{content:'\e79f'}.icon-drag-vertical:before{content:'\e7a0'}.icon-drag:before{content:'\e7a1'}.icon-drawing-box:before{content:'\e7a2'}.icon-drawing:before{content:'\e7a3'}.icon-dribbble-box:before{content:'\e7a4'}.icon-dribbble:before{content:'\e7a5'}.icon-drone:before{content:'\e7a6'}.icon-dropbox:before{content:'\e7a7'}.icon-drupal:before{content:'\e7a8'}.icon-duck:before{content:'\e7a9'}.icon-dumbbell:before{content:'\e7aa'}.icon-earth-off:before{content:'\e7ab'}.icon-earth:before{content:'\e7ac'}.icon-ebay:before{content:'\e7ad'}.icon-edge:before{content:'\e7ae'}.icon-eject:before{content:'\e7af'}.icon-elevation-decline:before{content:'\e7b0'}.icon-elevation-rise:before{content:'\e7b1'}.icon-elevator:before{content:'\e7b2'}.icon-email-open:before{content:'\e7b3'}.icon-email-secure:before{content:'\e7b4'}.icon-email:before{content:'\e7b5'}.icon-emoticon-cool:before{content:'\e7b6'}.icon-emoticon-devil:before{content:'\e7b7'}.icon-emoticon-happy:before{content:'\e7b8'}.icon-emoticon-neutral:before{content:'\e7b9'}.icon-emoticon-poop:before{content:'\e7ba'}.icon-emoticon-sad:before{content:'\e7bb'}.icon-emoticon-tongue:before{content:'\e7bc'}.icon-emoticon:before{content:'\e7bd'}.icon-engine-outline:before{content:'\e7be'}.icon-engine:before{content:'\e7bf'}.icon-equal-box:before{content:'\e7c0'}.icon-equal:before{content:'\e7c1'}.icon-eraser:before{content:'\e7c2'}.icon-escalator:before{content:'\e7c3'}.icon-etsy:before{content:'\e7c4'}.icon-evernote:before{content:'\e7c5'}.icon-exclamation:before{content:'\e7c6'}.icon-exit-to-app:before{content:'\e7c7'}.icon-export:before{content:'\e7c8'}.icon-eye-off:before{content:'\e7c9'}.icon-eye:before{content:'\e7ca'}.icon-eyedropper-variant:before{content:'\e7cb'}.icon-eyedropper:before{content:'\e7cc'}.icon-facebook-box:before{content:'\e7cd'}.icon-facebook:before{content:'\e7ce'}.icon-factory:before{content:'\e7cf'}.icon-fan:before{content:'\e7d0'}.icon-fast-forward:before{content:'\e7d1'}.icon-ferry:before{content:'\e7d2'}.icon-file-cloud:before{content:'\e7d3'}.icon-file-delimited:before{content:'\e7d4'}.icon-file-document-box:before{content:'\e7d5'}.icon-file-document:before{content:'\e7d6'}.icon-file-excel-box:before{content:'\e7d7'}.icon-file-excel:before{content:'\e7d8'}.icon-file-find:before{content:'\e7d9'}.icon-file-hidden:before{content:'\e7da'}.icon-file-image-box:before{content:'\e7db'}.icon-file-image:before{content:'\e7dc'}.icon-file-multiple:before{content:'\e7dd'}.icon-file-music:before{content:'\e7de'}.icon-file-outline:before{content:'\e7df'}.icon-file-pdf-box:before{content:'\e7e0'}.icon-file-pdf:before{content:'\e7e1'}.icon-file-powerpoint-box:before{content:'\e7e2'}.icon-file-powerpoint:before{content:'\e7e3'}.icon-file-presentation-box:before{content:'\e7e4'}.icon-file-video:before{content:'\e7e5'}.icon-file-word-box:before{content:'\e7e6'}.icon-file-word:before{content:'\e7e7'}.icon-file-xml:before{content:'\e7e8'}.icon-file:before{content:'\e7e9'}.icon-fill:before{content:'\e7ea'}.icon-film:before{content:'\e7eb'}.icon-filmstrip-off:before{content:'\e7ec'}.icon-filmstrip:before{content:'\e7ed'}.icon-filter-outline:before{content:'\e7ee'}.icon-filter-remove-outline:before{content:'\e7ef'}.icon-filter-remove:before{content:'\e7f0'}.icon-filter-variant:before{content:'\e7f1'}.icon-filter:before{content:'\e7f2'}.icon-fire:before{content:'\e7f3'}.icon-fish:before{content:'\e7f4'}.icon-flag-checkered-variant:before{content:'\e7f5'}.icon-flag-checkered:before{content:'\e7f6'}.icon-flag-outline-variant:before{content:'\e7f7'}.icon-flag-outline:before{content:'\e7f8'}.icon-flag-triangle:before{content:'\e7f9'}.icon-flag-variant:before{content:'\e7fa'}.icon-flag:before{content:'\e7fb'}.icon-flash-auto:before{content:'\e7fc'}.icon-flash-off:before{content:'\e7fd'}.icon-flash:before{content:'\e7fe'}.icon-flashlight-off:before{content:'\e7ff'}.icon-flashlight:before{content:'\e800'}.icon-flattr:before{content:'\e801'}.icon-flickr-after:before{content:'\e802'}.icon-flickr-before:before{content:'\e803'}.icon-flip-to-back:before{content:'\e804'}.icon-flip-to-front:before{content:'\e805'}.icon-floppy:before{content:'\e806'}.icon-flower:before{content:'\e807'}.icon-folder-account:before{content:'\e808'}.icon-folder-download:before{content:'\e809'}.icon-folder-google-drive:before{content:'\e80a'}.icon-folder-image:before{content:'\e80b'}.icon-folder-lock-open:before{content:'\e80c'}.icon-folder-lock:before{content:'\e80d'}.icon-folder-move:before{content:'\e80e'}.icon-folder-multiple-image:before{content:'\e80f'}.icon-folder-multiple-outline:before{content:'\e810'}.icon-folder-multiple:before{content:'\e811'}.icon-folder-outline-lock:before{content:'\e812'}.icon-folder-outline:before{content:'\e813'}.icon-folder-plus:before{content:'\e814'}.icon-folder-remove:before{content:'\e815'}.icon-folder-upload:before{content:'\e816'}.icon-folder:before{content:'\e817'}.icon-food-apple:before{content:'\e818'}.icon-food-variant:before{content:'\e819'}.icon-food:before{content:'\e81a'}.icon-football-helmet:before{content:'\e81b'}.icon-football:before{content:'\e81c'}.icon-format-align-center:before{content:'\e81d'}.icon-format-align-justify:before{content:'\e81e'}.icon-format-align-left:before{content:'\e81f'}.icon-format-align-right:before{content:'\e820'}.icon-format-bold:before{content:'\e821'}.icon-format-clear:before{content:'\e822'}.icon-format-color-fill:before{content:'\e823'}.icon-format-color:before{content:'\e824'}.icon-format-float-center:before{content:'\e825'}.icon-format-float-left:before{content:'\e826'}.icon-format-float-none:before{content:'\e827'}.icon-format-float-right:before{content:'\e828'}.icon-format-header-1:before{content:'\e829'}.icon-format-header-2:before{content:'\e82a'}.icon-format-header-3:before{content:'\e82b'}.icon-format-header-4:before{content:'\e82c'}.icon-format-header-5:before{content:'\e82d'}.icon-format-header-6:before{content:'\e82e'}.icon-format-header-decrease:before{content:'\e82f'}.icon-format-header-down:before{content:'\e830'}.icon-format-header-equal:before{content:'\e831'}.icon-format-header-increase:before{content:'\e832'}.icon-format-header-pound:before{content:'\e833'}.icon-format-header-up:before{content:'\e834'}.icon-format-indent-decrease:before{content:'\e835'}.icon-format-indent-increase:before{content:'\e836'}.icon-format-italic:before{content:'\e837'}.icon-format-line-spacing:before{content:'\e838'}.icon-format-list-bulleted:before{content:'\e839'}.icon-format-list-numbers:before{content:'\e83a'}.icon-format-object-inline:before{content:'\e83b'}.icon-format-object-square:before{content:'\e83c'}.icon-format-object-tight:before{content:'\e83d'}.icon-format-object-top-bottom:before{content:'\e83e'}.icon-format-paint:before{content:'\e83f'}.icon-format-paragraph:before{content:'\e840'}.icon-format-quote:before{content:'\e841'}.icon-format-size:before{content:'\e842'}.icon-format-strikethrough:before{content:'\e843'}.icon-format-subscript:before{content:'\e844'}.icon-format-superscript:before{content:'\e845'}.icon-format-text:before{content:'\e846'}.icon-format-textdirection-l-to-r:before{content:'\e847'}.icon-format-textdirection-r-to-l:before{content:'\e848'}.icon-format-underline:before{content:'\e849'}.icon-forum:before{content:'\e84a'}.icon-forward:before{content:'\e84b'}.icon-foursquare:before{content:'\e84c'}.icon-fridge:before{content:'\e84d'}.icon-fullscreen-exit:before{content:'\e84e'}.icon-fullscreen:before{content:'\e84f'}.icon-function:before{content:'\e850'}.icon-gamepad-variant:before{content:'\e851'}.icon-gamepad:before{content:'\e852'}.icon-gas-station:before{content:'\e853'}.icon-gavel:before{content:'\e854'}.icon-gender-female:before{content:'\e855'}.icon-gender-male-female:before{content:'\e856'}.icon-gender-male:before{content:'\e857'}.icon-gender-transgender:before{content:'\e858'}.icon-gift:before{content:'\e859'}.icon-git:before{content:'\e85a'}.icon-github-box:before{content:'\e85b'}.icon-github:before{content:'\e85c'}.icon-glass-flute:before{content:'\e85d'}.icon-glass-mug:before{content:'\e85e'}.icon-glass-stange:before{content:'\e85f'}.icon-glass-tulip:before{content:'\e860'}.icon-glasses:before{content:'\e861'}.icon-gmail:before{content:'\e862'}.icon-google-chrome:before{content:'\e863'}.icon-google-circles-communities:before{content:'\e864'}.icon-google-circles-extended:before{content:'\e865'}.icon-google-circles-invite:before{content:'\e866'}.icon-google-circles:before{content:'\e867'}.icon-google-controller-off:before{content:'\e868'}.icon-google-controller:before{content:'\e869'}.icon-google-drive:before{content:'\e86a'}.icon-google-earth:before{content:'\e86b'}.icon-google-glass:before{content:'\e86c'}.icon-google-maps:before{content:'\e86d'}.icon-google-pages:before{content:'\e86e'}.icon-google-play:before{content:'\e86f'}.icon-google-plus-box:before{content:'\e870'}.icon-google-plus:before{content:'\e871'}.icon-google:before{content:'\e872'}.icon-grid-off:before{content:'\e873'}.icon-grid:before{content:'\e874'}.icon-group:before{content:'\e875'}.icon-hand-pointing-right:before{content:'\e876'}.icon-hanger:before{content:'\e877'}.icon-hangouts:before{content:'\e878'}.icon-harddisk:before{content:'\e879'}.icon-headphones-box:before{content:'\e87a'}.icon-headphones-dots:before{content:'\e87b'}.icon-headphones:before{content:'\e87c'}.icon-headset-dock:before{content:'\e87d'}.icon-headset-off:before{content:'\e87e'}.icon-headset:before{content:'\e87f'}.icon-heart-box-outline:before{content:'\e880'}.icon-heart-box:before{content:'\e881'}.icon-heart-broken:before{content:'\e882'}.icon-heart-outline:before{content:'\e883'}.icon-heart:before{content:'\e884'}.icon-help-circle:before{content:'\e885'}.icon-help:before{content:'\e886'}.icon-hexagon-outline:before{content:'\e887'}.icon-hexagon:before{content:'\e888'}.icon-history:before{content:'\e889'}.icon-hololens:before{content:'\e88a'}.icon-home-modern:before{content:'\e88b'}.icon-home-variant:before{content:'\e88c'}.icon-home:before{content:'\e88d'}.icon-hops:before{content:'\e88e'}.icon-hospital-building:before{content:'\e88f'}.icon-hospital-marker:before{content:'\e890'}.icon-hospital:before{content:'\e891'}.icon-hotel:before{content:'\e892'}.icon-houzz-box:before{content:'\e893'}.icon-human-child:before{content:'\e894'}.icon-human-male-female:before{content:'\e895'}.icon-human:before{content:'\e896'}.icon-image-album:before{content:'\e897'}.icon-image-area-close:before{content:'\e898'}.icon-image-area:before{content:'\e899'}.icon-image-broken:before{content:'\e89a'}.icon-image-filter-black-white:before{content:'\e89b'}.icon-image-filter-center-focus:before{content:'\e89c'}.icon-image-filter-drama:before{content:'\e89d'}.icon-image-filter-frames:before{content:'\e89e'}.icon-image-filter-hdr:before{content:'\e89f'}.icon-image-filter-none:before{content:'\e8a0'}.icon-image-filter-tilt-shift:before{content:'\e8a1'}.icon-image-filter-vintage:before{content:'\e8a2'}.icon-image-filter:before{content:'\e8a3'}.icon-image:before{content:'\e8a4'}.icon-import:before{content:'\e8a5'}.icon-inbox:before{content:'\e8a6'}.icon-indent:before{content:'\e8a7'}.icon-information-outline:before{content:'\e8a8'}.icon-information:before{content:'\e8a9'}.icon-instagram:before{content:'\e8aa'}.icon-instapaper:before{content:'\e8ab'}.icon-internet-explorer:before{content:'\e8ac'}.icon-invert-colors:before{content:'\e8ad'}.icon-jira:before{content:'\e8ae'}.icon-jsfiddle:before{content:'\e8af'}.icon-keg:before{content:'\e8b0'}.icon-key-change:before{content:'\e8b1'}.icon-key-minus:before{content:'\e8b2'}.icon-key-plus:before{content:'\e8b3'}.icon-key-remove:before{content:'\e8b4'}.icon-key-variant:before{content:'\e8b5'}.icon-key:before{content:'\e8b6'}.icon-keyboard-backspace:before{content:'\e8b7'}.icon-keyboard-caps:before{content:'\e8b8'}.icon-keyboard-close:before{content:'\e8b9'}.icon-keyboard-off:before{content:'\e8ba'}.icon-keyboard-return:before{content:'\e8bb'}.icon-keyboard-tab:before{content:'\e8bc'}.icon-keyboard-variant:before{content:'\e8bd'}.icon-keyboard:before{content:'\e8be'}.icon-label-outline:before{content:'\e8bf'}.icon-label:before{content:'\e8c0'}.icon-language-csharp:before{content:'\e8c1'}.icon-language-css3:before{content:'\e8c2'}.icon-language-html5:before{content:'\e8c3'}.icon-language-javascript:before{content:'\e8c4'}.icon-language-python-text:before{content:'\e8c5'}.icon-language-python:before{content:'\e8c6'}.icon-laptop-chromebook:before{content:'\e8c7'}.icon-laptop-mac:before{content:'\e8c8'}.icon-laptop-windows:before{content:'\e8c9'}.icon-laptop:before{content:'\e8ca'}.icon-lastfm:before{content:'\e8cb'}.icon-launch:before{content:'\e8cc'}.icon-layers-off:before{content:'\e8cd'}.icon-layers:before{content:'\e8ce'}.icon-leaf:before{content:'\e8cf'}.icon-library-books:before{content:'\e8d0'}.icon-library-music:before{content:'\e8d1'}.icon-library-plus:before{content:'\e8d2'}.icon-library:before{content:'\e8d3'}.icon-lightbulb-outline:before{content:'\e8d4'}.icon-lightbulb:before{content:'\e8d5'}.icon-link-off:before{content:'\e8d6'}.icon-link-variant-off:before{content:'\e8d7'}.icon-link-variant:before{content:'\e8d8'}.icon-link:before{content:'\e8d9'}.icon-linkedin-box:before{content:'\e8da'}.icon-linkedin:before{content:'\e8db'}.icon-linode:before{content:'\e8dc'}.icon-linux:before{content:'\e8dd'}.icon-lock-outline:before{content:'\e8de'}.icon-lock-unlocked-outline:before{content:'\e8df'}.icon-lock-unlocked:before{content:'\e8e0'}.icon-lock:before{content:'\e8e1'}.icon-login:before{content:'\e8e2'}.icon-logout:before{content:'\e8e3'}.icon-looks:before{content:'\e8e4'}.icon-loupe:before{content:'\e8e5'}.icon-lumx:before{content:'\e8e6'}.icon-magnet-on:before{content:'\e8e7'}.icon-magnet:before{content:'\e8e8'}.icon-magnify-minus:before{content:'\e8e9'}.icon-magnify-plus:before{content:'\e8ea'}.icon-magnify:before{content:'\e8eb'}.icon-mail-ru:before{content:'\e8ec'}.icon-map-marker-circle:before{content:'\e8ed'}.icon-map-marker-multiple:before{content:'\e8ee'}.icon-map-marker-off:before{content:'\e8ef'}.icon-map-marker-radius:before{content:'\e8f0'}.icon-map-marker:before{content:'\e8f1'}.icon-map:before{content:'\e8f2'}.icon-margin:before{content:'\e8f3'}.icon-markdown:before{content:'\e8f4'}.icon-marker-check:before{content:'\e8f5'}.icon-martini:before{content:'\e8f6'}.icon-material-ui:before{content:'\e8f7'}.icon-maxcdn:before{content:'\e8f8'}.icon-medium:before{content:'\e8f9'}.icon-memory:before{content:'\e8fa'}.icon-menu-down:before{content:'\e8fb'}.icon-menu-left:before{content:'\e8fc'}.icon-menu-right:before{content:'\e8fd'}.icon-menu-up:before{content:'\e8fe'}.icon-menu:before{content:'\e8ff'}.icon-message-alert:before{content:'\e900'}.icon-message-draw:before{content:'\e901'}.icon-message-image:before{content:'\e902'}.icon-message-processing:before{content:'\e903'}.icon-message-reply:before{content:'\e904'}.icon-message-text-outline:before{content:'\e905'}.icon-message-text:before{content:'\e906'}.icon-message-video:before{content:'\e907'}.icon-message:before{content:'\e908'}.icon-microphone-dots:before{content:'\e909'}.icon-microphone-off:before{content:'\e90a'}.icon-microphone-outline:before{content:'\e90b'}.icon-microphone-settings:before{content:'\e90c'}.icon-microphone-variant-off:before{content:'\e90d'}.icon-microphone-variant:before{content:'\e90e'}.icon-microphone:before{content:'\e90f'}.icon-minus-box:before{content:'\e910'}.icon-minus-circle-outline:before{content:'\e911'}.icon-minus-circle:before{content:'\e912'}.icon-minus-network:before{content:'\e913'}.icon-minus:before{content:'\e914'}.icon-monitor-multiple:before{content:'\e915'}.icon-monitor:before{content:'\e916'}.icon-more:before{content:'\e917'}.icon-mouse-off:before{content:'\e918'}.icon-mouse-variant-off:before{content:'\e919'}.icon-mouse-variant:before{content:'\e91a'}.icon-mouse:before{content:'\e91b'}.icon-movie:before{content:'\e91c'}.icon-multiplication-box:before{content:'\e91d'}.icon-multiplication:before{content:'\e91e'}.icon-music-box-outline:before{content:'\e91f'}.icon-music-box:before{content:'\e920'}.icon-music-circle:before{content:'\e921'}.icon-music-note-eighth:before{content:'\e922'}.icon-music-note-half:before{content:'\e923'}.icon-music-note-off:before{content:'\e924'}.icon-music-note-quarter:before{content:'\e925'}.icon-music-note-sixteenth:before{content:'\e926'}.icon-music-note-whole:before{content:'\e927'}.icon-music-note:before{content:'\e928'}.icon-nature-people:before{content:'\e929'}.icon-nature:before{content:'\e92a'}.icon-navigation:before{content:'\e92b'}.icon-needle:before{content:'\e92c'}.icon-nest-protect:before{content:'\e92d'}.icon-nest-thermostat:before{content:'\e92e'}.icon-newspaper:before{content:'\e92f'}.icon-nfc-tap:before{content:'\e930'}.icon-nfc-variant:before{content:'\e931'}.icon-nfc:before{content:'\e932'}.icon-no:before{content:'\e933'}.icon-not-equal:before{content:'\e934'}.icon-note-outline:before{content:'\e935'}.icon-note-text:before{content:'\e936'}.icon-note:before{content:'\e937'}.icon-numeric-0-box-multiple-outline:before{content:'\e938'}.icon-numeric-0-box-outline:before{content:'\e939'}.icon-numeric-0-box:before{content:'\e93a'}.icon-numeric-1-box-multiple-outline:before{content:'\e93b'}.icon-numeric-1-box-outline:before{content:'\e93c'}.icon-numeric-1-box:before{content:'\e93d'}.icon-numeric-2-box-multiple-outline:before{content:'\e93e'}.icon-numeric-2-box-outline:before{content:'\e93f'}.icon-numeric-2-box:before{content:'\e940'}.icon-numeric-3-box-multiple-outline:before{content:'\e941'}.icon-numeric-3-box-outline:before{content:'\e942'}.icon-numeric-3-box:before{content:'\e943'}.icon-numeric-4-box-multiple-outline:before{content:'\e944'}.icon-numeric-4-box-outline:before{content:'\e945'}.icon-numeric-4-box:before{content:'\e946'}.icon-numeric-5-box-multiple-outline:before{content:'\e947'}.icon-numeric-5-box-outline:before{content:'\e948'}.icon-numeric-5-box:before{content:'\e949'}.icon-numeric-6-box-multiple-outline:before{content:'\e94a'}.icon-numeric-6-box-outline:before{content:'\e94b'}.icon-numeric-6-box:before{content:'\e94c'}.icon-numeric-7-box-multiple-outline:before{content:'\e94d'}.icon-numeric-7-box-outline:before{content:'\e94e'}.icon-numeric-7-box:before{content:'\e94f'}.icon-numeric-8-box-multiple-outline:before{content:'\e950'}.icon-numeric-8-box-outline:before{content:'\e951'}.icon-numeric-8-box:before{content:'\e952'}.icon-numeric-9-box-multiple-outline:before{content:'\e953'}.icon-numeric-9-box-outline:before{content:'\e954'}.icon-numeric-9-box:before{content:'\e955'}.icon-numeric-9-plus-box-multiple-outline:before{content:'\e956'}.icon-numeric-9-plus-box-outline:before{content:'\e957'}.icon-numeric-9-plus-box:before{content:'\e958'}.icon-numeric:before{content:'\e959'}.icon-nutriton:before{content:'\e95a'}.icon-odnoklassniki:before{content:'\e95b'}.icon-office:before{content:'\e95c'}.icon-oil:before{content:'\e95d'}.icon-omega:before{content:'\e95e'}.icon-onedrive:before{content:'\e95f'}.icon-open-in-app:before{content:'\e960'}.icon-open-in-new:before{content:'\e961'}.icon-ornament-variant:before{content:'\e962'}.icon-ornament:before{content:'\e963'}.icon-outbox:before{content:'\e964'}.icon-outdent:before{content:'\e965'}.icon-owl:before{content:'\e966'}.icon-package-down:before{content:'\e967'}.icon-package-up:before{content:'\e968'}.icon-package-variant-closed:before{content:'\e969'}.icon-package-variant:before{content:'\e96a'}.icon-package:before{content:'\e96b'}.icon-palette-advanced:before{content:'\e96c'}.icon-palette:before{content:'\e96d'}.icon-panda:before{content:'\e96e'}.icon-pandora:before{content:'\e96f'}.icon-panorama-fisheye:before{content:'\e970'}.icon-panorama-horizontal:before{content:'\e971'}.icon-panorama-vertical:before{content:'\e972'}.icon-panorama-wide-angle:before{content:'\e973'}.icon-panorama:before{content:'\e974'}.icon-paper-cut-vertical:before{content:'\e975'}.icon-paperclip:before{content:'\e976'}.icon-parking:before{content:'\e977'}.icon-pause-circle-outline:before{content:'\e978'}.icon-pause-circle:before{content:'\e979'}.icon-pause-octagon-outline:before{content:'\e97a'}.icon-pause-octagon:before{content:'\e97b'}.icon-pause:before{content:'\e97c'}.icon-paw:before{content:'\e97d'}.icon-pen:before{content:'\e97e'}.icon-pencil-box-outline:before{content:'\e97f'}.icon-pencil-box:before{content:'\e980'}.icon-pencil:before{content:'\e981'}.icon-people:before{content:'\e982'}.icon-percent:before{content:'\e983'}.icon-person-box:before{content:'\e984'}.icon-person-minus:before{content:'\e985'}.icon-person-plus:before{content:'\e986'}.icon-pharmacy:before{content:'\e987'}.icon-phone-bluetooth:before{content:'\e988'}.icon-phone-dots:before{content:'\e989'}.icon-phone-forward:before{content:'\e98a'}.icon-phone-hangup:before{content:'\e98b'}.icon-phone-in-talk:before{content:'\e98c'}.icon-phone-incoming:before{content:'\e98d'}.icon-phone-locked:before{content:'\e98e'}.icon-phone-log:before{content:'\e98f'}.icon-phone-missed:before{content:'\e990'}.icon-phone-outgoing:before{content:'\e991'}.icon-phone-paused:before{content:'\e992'}.icon-phone:before{content:'\e993'}.icon-picture:before{content:'\e994'}.icon-pig:before{content:'\e995'}.icon-pill:before{content:'\e996'}.icon-pin-off:before{content:'\e997'}.icon-pin:before{content:'\e998'}.icon-pine-tree-box:before{content:'\e999'}.icon-pine-tree:before{content:'\e99a'}.icon-pinterest-box:before{content:'\e99b'}.icon-pinterest:before{content:'\e99c'}.icon-pizza:before{content:'\e99d'}.icon-plane:before{content:'\e99e'}.icon-play-box-outline:before{content:'\e99f'}.icon-play-circle-outline:before{content:'\e9a0'}.icon-play-circle:before{content:'\e9a1'}.icon-play:before{content:'\e9a2'}.icon-playlist-minus:before{content:'\e9a3'}.icon-playlist-plus:before{content:'\e9a4'}.icon-playstation:before{content:'\e9a5'}.icon-plus-box:before{content:'\e9a6'}.icon-plus-circle-outline:before{content:'\e9a7'}.icon-plus-circle:before{content:'\e9a8'}.icon-plus-network:before{content:'\e9a9'}.icon-plus-one:before{content:'\e9aa'}.icon-plus:before{content:'\e9ab'}.icon-pocket:before{content:'\e9ac'}.icon-poll-box:before{content:'\e9ad'}.icon-poll:before{content:'\e9ae'}.icon-polymer:before{content:'\e9af'}.icon-popcorn:before{content:'\e9b0'}.icon-pound-box:before{content:'\e9b1'}.icon-pound:before{content:'\e9b2'}.icon-power-settings:before{content:'\e9b3'}.icon-power-socket:before{content:'\e9b4'}.icon-power:before{content:'\e9b5'}.icon-presentation-play:before{content:'\e9b6'}.icon-presentation:before{content:'\e9b7'}.icon-printer-3d:before{content:'\e9b8'}.icon-printer:before{content:'\e9b9'}.icon-pulse:before{content:'\e9ba'}.icon-puzzle:before{content:'\e9bb'}.icon-qrcode:before{content:'\e9bc'}.icon-quadcopter:before{content:'\e9bd'}.icon-quality-high:before{content:'\e9be'}.icon-question-mark-circle:before{content:'\e9bf'}.icon-quick-reply:before{content:'\e9c0'}.icon-quicktime:before{content:'\e9c1'}.icon-rabbit:before{content:'\e9c2'}.icon-radiator:before{content:'\e9c3'}.icon-radio-tower:before{content:'\e9c4'}.icon-radio:before{content:'\e9c5'}.icon-radioactive:before{content:'\e9c6'}.icon-radiobox-blank:before{content:'\e9c7'}.icon-radiobox-marked:before{content:'\e9c8'}.icon-raspberrypi:before{content:'\e9c9'}.icon-rdio:before{content:'\e9ca'}.icon-read:before{content:'\e9cb'}.icon-readability:before{content:'\e9cc'}.icon-receipt:before{content:'\e9cd'}.icon-recycle:before{content:'\e9ce'}.icon-reddit:before{content:'\e9cf'}.icon-redo-variant:before{content:'\e9d0'}.icon-redo:before{content:'\e9d1'}.icon-refresh:before{content:'\e9d2'}.icon-relative-scale:before{content:'\e9d3'}.icon-reload:before{content:'\e9d4'}.icon-remote:before{content:'\e9d5'}.icon-rename-box:before{content:'\e9d6'}.icon-repeat-off:before{content:'\e9d7'}.icon-repeat-once:before{content:'\e9d8'}.icon-repeat:before{content:'\e9d9'}.icon-replay:before{content:'\e9da'}.icon-reply-all:before{content:'\e9db'}.icon-reply:before{content:'\e9dc'}.icon-reproduction:before{content:'\e9dd'}.icon-resize-bottom-right:before{content:'\e9de'}.icon-responsive:before{content:'\e9df'}.icon-restore:before{content:'\e9e0'}.icon-rewind:before{content:'\e9e1'}.icon-ribbon:before{content:'\e9e2'}.icon-road:before{content:'\e9e3'}.icon-rocket:before{content:'\e9e4'}.icon-rotate-3d:before{content:'\e9e5'}.icon-rotate-left-variant:before{content:'\e9e6'}.icon-rotate-left:before{content:'\e9e7'}.icon-rotate-right-variant:before{content:'\e9e8'}.icon-rotate-right:before{content:'\e9e9'}.icon-routes:before{content:'\e9ea'}.icon-rss-box:before{content:'\e9eb'}.icon-ruler:before{content:'\e9ec'}.icon-run:before{content:'\e9ed'}.icon-sale:before{content:'\e9ee'}.icon-satellite-variant:before{content:'\e9ef'}.icon-satellite:before{content:'\e9f0'}.icon-scale-bathroom:before{content:'\e9f1'}.icon-scale:before{content:'\e9f2'}.icon-school:before{content:'\e9f3'}.icon-screen-rotation-lock:before{content:'\e9f4'}.icon-screen-rotation:before{content:'\e9f5'}.icon-script:before{content:'\e9f6'}.icon-security-network:before{content:'\e9f7'}.icon-security:before{content:'\e9f8'}.icon-select-all:before{content:'\e9f9'}.icon-select-inverse:before{content:'\e9fa'}.icon-select-off:before{content:'\e9fb'}.icon-select:before{content:'\e9fc'}.icon-send:before{content:'\e9fd'}.icon-server-minus:before{content:'\e9fe'}.icon-server-network-off:before{content:'\e9ff'}.icon-server-network:before{content:'\ea00'}.icon-server-off:before{content:'\ea01'}.icon-server-plus:before{content:'\ea02'}.icon-server-remove:before{content:'\ea03'}.icon-server-security:before{content:'\ea04'}.icon-server:before{content:'\ea05'}.icon-shape-plus:before{content:'\ea06'}.icon-share-variant:before{content:'\ea07'}.icon-share:before{content:'\ea08'}.icon-shield-outline:before{content:'\ea09'}.icon-shield:before{content:'\ea0a'}.icon-shopping-music:before{content:'\ea0b'}.icon-shopping:before{content:'\ea0c'}.icon-shuffle:before{content:'\ea0d'}.icon-sigma:before{content:'\ea0e'}.icon-sign-caution:before{content:'\ea0f'}.icon-signal:before{content:'\ea10'}.icon-silverware-fork:before{content:'\ea11'}.icon-silverware-spoon:before{content:'\ea12'}.icon-silverware-variant:before{content:'\ea13'}.icon-silverware:before{content:'\ea14'}.icon-sim-alert:before{content:'\ea15'}.icon-sim:before{content:'\ea16'}.icon-sitemap:before{content:'\ea17'}.icon-skip-next:before{content:'\ea18'}.icon-skip-previous:before{content:'\ea19'}.icon-skype-business:before{content:'\ea1a'}.icon-skype:before{content:'\ea1b'}.icon-sleep-off:before{content:'\ea1c'}.icon-sleep:before{content:'\ea1d'}.icon-smoking-off:before{content:'\ea1e'}.icon-smoking:before{content:'\ea1f'}.icon-snapchat:before{content:'\ea20'}.icon-snowman:before{content:'\ea21'}.icon-sofa:before{content:'\ea22'}.icon-sort-alphabetical:before{content:'\ea23'}.icon-sort-ascending:before{content:'\ea24'}.icon-sort-descending:before{content:'\ea25'}.icon-sort-numeric:before{content:'\ea26'}.icon-sort-variant:before{content:'\ea27'}.icon-sort:before{content:'\ea28'}.icon-soundcloud:before{content:'\ea29'}.icon-source-fork:before{content:'\ea2a'}.icon-source-pull:before{content:'\ea2b'}.icon-speaker-off:before{content:'\ea2c'}.icon-speaker:before{content:'\ea2d'}.icon-speedometer:before{content:'\ea2e'}.icon-spellcheck:before{content:'\ea2f'}.icon-spotify:before{content:'\ea30'}.icon-spotlight-beam:before{content:'\ea31'}.icon-spotlight:before{content:'\ea32'}.icon-spreadsheet:before{content:'\ea33'}.icon-square-inc-cash:before{content:'\ea34'}.icon-square-inc:before{content:'\ea35'}.icon-stackoverflow:before{content:'\ea36'}.icon-star-circle:before{content:'\ea37'}.icon-star-half:before{content:'\ea38'}.icon-star-of-david:before{content:'\ea39'}.icon-star-outline:before{content:'\ea3a'}.icon-star:before{content:'\ea3b'}.icon-steam:before{content:'\ea3c'}.icon-stethoscope:before{content:'\ea3d'}.icon-stocking:before{content:'\ea3e'}.icon-stop:before{content:'\ea3f'}.icon-store-24-hour:before{content:'\ea40'}.icon-store:before{content:'\ea41'}.icon-stove:before{content:'\ea42'}.icon-subway:before{content:'\ea43'}.icon-sunglasses:before{content:'\ea44'}.icon-swap-horizontal:before{content:'\ea45'}.icon-swap-vertical:before{content:'\ea46'}.icon-swim:before{content:'\ea47'}.icon-sword:before{content:'\ea48'}.icon-sync-alert:before{content:'\ea49'}.icon-sync-off:before{content:'\ea4a'}.icon-sync:before{content:'\ea4b'}.icon-tab-unselected:before{content:'\ea4c'}.icon-tab:before{content:'\ea4d'}.icon-table-column-plus-after:before{content:'\ea4e'}.icon-table-column-plus-before:before{content:'\ea4f'}.icon-table-column-remove:before{content:'\ea50'}.icon-table-column-width:before{content:'\ea51'}.icon-table-edit:before{content:'\ea52'}.icon-table-large:before{content:'\ea53'}.icon-table-row-height:before{content:'\ea54'}.icon-table-row-plus-after:before{content:'\ea55'}.icon-table-row-plus-before:before{content:'\ea56'}.icon-table-row-remove:before{content:'\ea57'}.icon-table:before{content:'\ea58'}.icon-tablet-android:before{content:'\ea59'}.icon-tablet-ipad:before{content:'\ea5a'}.icon-tablet:before{content:'\ea5b'}.icon-tag-faces:before{content:'\ea5c'}.icon-tag-multiple:before{content:'\ea5d'}.icon-tag-outline:before{content:'\ea5e'}.icon-tag-text-outline:before{content:'\ea5f'}.icon-tag:before{content:'\ea60'}.icon-taxi:before{content:'\ea61'}.icon-teamviewer:before{content:'\ea62'}.icon-telegram:before{content:'\ea63'}.icon-television-guide:before{content:'\ea64'}.icon-television:before{content:'\ea65'}.icon-temperature-celsius:before{content:'\ea66'}.icon-temperature-fahrenheit:before{content:'\ea67'}.icon-temperature-kelvin:before{content:'\ea68'}.icon-tennis:before{content:'\ea69'}.icon-tent:before{content:'\ea6a'}.icon-terrain:before{content:'\ea6b'}.icon-text-to-speech-off:before{content:'\ea6c'}.icon-text-to-speech:before{content:'\ea6d'}.icon-texture:before{content:'\ea6e'}.icon-theater:before{content:'\ea6f'}.icon-theme-light-dark:before{content:'\ea70'}.icon-thermometer-lines:before{content:'\ea71'}.icon-thermometer:before{content:'\ea72'}.icon-thumb-down-outline:before{content:'\ea73'}.icon-thumb-down:before{content:'\ea74'}.icon-thumb-up-outline:before{content:'\ea75'}.icon-thumb-up:before{content:'\ea76'}.icon-thumbs-up-down:before{content:'\ea77'}.icon-ticket-account:before{content:'\ea78'}.icon-ticket:before{content:'\ea79'}.icon-tie:before{content:'\ea7a'}.icon-tile-four:before{content:'\ea7b'}.icon-timelapse:before{content:'\ea7c'}.icon-timer-3:before{content:'\ea7d'}.icon-timer-10:before{content:'\ea7e'}.icon-timer-off:before{content:'\ea7f'}.icon-timer-sand:before{content:'\ea80'}.icon-timer:before{content:'\ea81'}.icon-timetable:before{content:'\ea82'}.icon-toggle-switch-off:before{content:'\ea83'}.icon-toggle-switch-on:before{content:'\ea84'}.icon-tooltip-edit:before{content:'\ea85'}.icon-tooltip-image:before{content:'\ea86'}.icon-tooltip-outline-plus:before{content:'\ea87'}.icon-tooltip-outline:before{content:'\ea88'}.icon-tooltip-text:before{content:'\ea89'}.icon-tooltip:before{content:'\ea8a'}.icon-tor:before{content:'\ea8b'}.icon-traffic-light:before{content:'\ea8c'}.icon-train:before{content:'\ea8d'}.icon-tram:before{content:'\ea8e'}.icon-transcribe-close:before{content:'\ea8f'}.icon-transcribe:before{content:'\ea90'}.icon-transfer:before{content:'\ea91'}.icon-trash:before{content:'\ea92'}.icon-tree:before{content:'\ea93'}.icon-trello:before{content:'\ea94'}.icon-trending-down:before{content:'\ea95'}.icon-trending-neutral:before{content:'\ea96'}.icon-trending-up:before{content:'\ea97'}.icon-truck:before{content:'\ea98'}.icon-tshirt-crew:before{content:'\ea99'}.icon-tshirt-v:before{content:'\ea9a'}.icon-tumblr-reblog:before{content:'\ea9b'}.icon-tumblr:before{content:'\ea9c'}.icon-twitch:before{content:'\ea9d'}.icon-twitter-box:before{content:'\ea9e'}.icon-twitter-circle:before{content:'\ea9f'}.icon-twitter-retweet:before{content:'\eaa0'}.icon-twitter:before{content:'\eaa1'}.icon-ubuntu:before{content:'\eaa2'}.icon-umbrella-outline:before{content:'\eaa3'}.icon-umbrella:before{content:'\eaa4'}.icon-undo-variant:before{content:'\eaa5'}.icon-undo:before{content:'\eaa6'}.icon-unfold-less:before{content:'\eaa7'}.icon-unfold-more:before{content:'\eaa8'}.icon-ungroup:before{content:'\eaa9'}.icon-untappd:before{content:'\eaaa'}.icon-upload:before{content:'\eaab'}.icon-usb:before{content:'\eaac'}.icon-vector-curve:before{content:'\eaad'}.icon-vector-point:before{content:'\eaae'}.icon-vector-square:before{content:'\eaaf'}.icon-verified:before{content:'\eab0'}.icon-vibration:before{content:'\eab1'}.icon-video-off:before{content:'\eab2'}.icon-video-switch:before{content:'\eab3'}.icon-video:before{content:'\eab4'}.icon-view-agenda:before{content:'\eab5'}.icon-view-array:before{content:'\eab6'}.icon-view-carousel:before{content:'\eab7'}.icon-view-column:before{content:'\eab8'}.icon-view-dashboard:before{content:'\eab9'}.icon-view-day:before{content:'\eaba'}.icon-view-headline:before{content:'\eabb'}.icon-view-list:before{content:'\eabc'}.icon-view-module:before{content:'\eabd'}.icon-view-quilt:before{content:'\eabe'}.icon-view-stream:before{content:'\eabf'}.icon-view-week:before{content:'\eac0'}.icon-vimeo:before{content:'\eac1'}.icon-vine:before{content:'\eac2'}.icon-vk-box:before{content:'\eac3'}.icon-vk-circle:before{content:'\eac4'}.icon-vk:before{content:'\eac5'}.icon-voicemail:before{content:'\eac6'}.icon-volume-high:before{content:'\eac7'}.icon-volume-low:before{content:'\eac8'}.icon-volume-medium:before{content:'\eac9'}.icon-volume-off:before{content:'\eaca'}.icon-volume:before{content:'\eacb'}.icon-vpn:before{content:'\eacc'}.icon-walk:before{content:'\eacd'}.icon-wallet-giftcard:before{content:'\eace'}.icon-wallet-membership:before{content:'\eacf'}.icon-wallet-travel:before{content:'\ead0'}.icon-wallet:before{content:'\ead1'}.icon-washing-machine:before{content:'\ead2'}.icon-watch-export:before{content:'\ead3'}.icon-watch-import:before{content:'\ead4'}.icon-watch:before{content:'\ead5'}.icon-water-off:before{content:'\ead6'}.icon-water-pump:before{content:'\ead7'}.icon-water:before{content:'\ead8'}.icon-weather-cloudy:before{content:'\ead9'}.icon-weather-fog:before{content:'\eada'}.icon-weather-hail:before{content:'\eadb'}.icon-weather-lightning:before{content:'\eadc'}.icon-weather-night:before{content:'\eadd'}.icon-weather-partlycloudy:before{content:'\eade'}.icon-weather-pouring:before{content:'\eadf'}.icon-weather-rainy:before{content:'\eae0'}.icon-weather-snowy:before{content:'\eae1'}.icon-weather-sunny:before{content:'\eae2'}.icon-weather-sunset-down:before{content:'\eae3'}.icon-weather-sunset-up:before{content:'\eae4'}.icon-weather-sunset:before{content:'\eae5'}.icon-weather-windy-variant:before{content:'\eae6'}.icon-weather-windy:before{content:'\eae7'}.icon-web:before{content:'\eae8'}.icon-webcam:before{content:'\eae9'}.icon-weight-kilogram:before{content:'\eaea'}.icon-weight:before{content:'\eaeb'}.icon-whatsapp:before{content:'\eaec'}.icon-wheelchair-accessibility:before{content:'\eaed'}.icon-white-balance-auto:before{content:'\eaee'}.icon-white-balance-incandescent:before{content:'\eaef'}.icon-white-balance-irradescent:before{content:'\eaf0'}.icon-white-balance-sunny:before{content:'\eaf1'}.icon-wifi:before{content:'\eaf2'}.icon-wii:before{content:'\eaf3'}.icon-wikipedia:before{content:'\eaf4'}.icon-window-close:before{content:'\eaf5'}.icon-window-closed:before{content:'\eaf6'}.icon-window-maximize:before{content:'\eaf7'}.icon-window-minimize:before{content:'\eaf8'}.icon-window-open:before{content:'\eaf9'}.icon-window-restore:before{content:'\eafa'}.icon-windows:before{content:'\eafb'}.icon-wordpress:before{content:'\eafc'}.icon-worker:before{content:'\eafd'}.icon-wunderlist:before{content:'\eafe'}.icon-xbox-controller-off:before{content:'\eaff'}.icon-xbox-controller:before{content:'\eb00'}.icon-xbox:before{content:'\eb01'}.icon-xda:before{content:'\eb02'}.icon-xml:before{content:'\eb03'}.icon-yeast:before{content:'\eb04'}.icon-yelp:before{content:'\eb05'}.icon-youtube-play:before{content:'\eb06'}.icon-youtube:before{content:'\eb07'}.icon-zip-box:before{content:'\eb08'}.avatar{width:40px;min-width:40px;height:40px;line-height:40px;margin:0 8px 0 0;border-radius:50%;font-size:17px;font-weight:500;text-align:center;color:#fff}.avatar.square{border-radius:0}.avatar.small{width:20px;min-width:20px;height:20px;line-height:20px}.avatar.big{width:72px;min-width:72px;height:72px;line-height:72px}.avatar.huge{width:96px;min-width:96px;height:96px;line-height:96px}.form-wrapper{background:#fff;padding:16px}.form-wrapper .form-title{font-size:21px;padding:8px 0}.navigation-simple .item{position:relative;cursor:pointer;text-align:left;margin:0;padding:0 24px;text-transform:none;line-height:48px;max-height:48px;height:48px}.navigation-simple .item md-icon{margin:0 16px 0 0}.navigation-simple .item .title{font-size:13px;font-weight:500;line-height:1}.navigation-simple .item.selected{background-color:rgba(0,0,0,.06)}.navigation-simple .subheader{font-size:13px;border-top:1px solid rgba(0,0,0,.12);font-weight:500;margin-top:8px}.navigation-simple .subheader.light{border-top:1px solid rgba(255,255,255,.12)}.navigation-simple md-divider{margin:8px 0}.simple-pagination{position:relative;display:inline-flex;flex-direction:row;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);background-color:#fff;padding:0 8px}.simple-pagination .pagination-item{min-width:48px;min-height:56px;line-height:56px;border-radius:0;margin:0;font-weight:400;color:rgba(0,0,0,.54)}.simple-pagination .pagination-item:hover{color:rgba(0,0,0,.87)}.simple-pagination .pagination-item.active{cursor:default;color:rgba(0,0,0,.87)}.simple-pagination .pagination-item.disabled{cursor:default;color:rgba(0,0,0,.26)}.price-tables .price-table{position:relative;background-color:#fff;width:280px;border-radius:2px;margin:24px 24px 0 0;overflow:hidden}.price-tables .price-table.style-1 .package-type{font-size:17px;padding:16px 24px}.price-tables .price-table.style-1 .package-type .sale{font-size:13px;font-weight:600}.price-tables .price-table.style-1 .price{padding:32px 32px 16px 32px}.price-tables .price-table.style-1 .price .currency{padding-right:4px;font-size:24px;font-weight:500;color:rgba(0,0,0,.54)}.price-tables .price-table.style-1 .price .value{font-size:72px;font-weight:300;line-height:1}.price-tables .price-table.style-1 .price .period{padding:0 0 5px 4px;font-size:17px;color:rgba(0,0,0,.54)}.price-tables .price-table.style-1 md-divider{margin:16px 32px}.price-tables .price-table.style-1 .terms{padding:16px 32px;font-size:15px}.price-tables .price-table.style-1 .cta-button{margin:16px auto 32px auto;width:128px}.price-tables .price-table.style-2 .badge{position:absolute;top:0;left:50%;transform:translateX(-50%);font-size:11px;font-weight:500;padding:6px 8px}.price-tables .price-table.style-2 .package-type{padding:48px 32px 24px 32px;font-size:20px;font-weight:500;text-align:center}.price-tables .price-table.style-2 .price{padding:0 32px 8px 32px}.price-tables .price-table.style-2 .price .currency{padding-right:4px;font-size:24px;font-weight:500;color:rgba(0,0,0,.54)}.price-tables .price-table.style-2 .price .value{font-size:56px;font-weight:300;line-height:1}.price-tables .price-table.style-2 .period{padding:0 32px;font-size:15px;font-weight:500;color:rgba(0,0,0,.54);text-align:center}.price-tables .price-table.style-2 .terms{padding:32px;font-size:15px}.price-tables .price-table.style-2 .terms .term{padding-bottom:8px}.price-tables .price-table.style-2 .terms .term:last-child{padding-bottom:0}.price-tables .price-table.style-2 .cta-button{margin:8px auto 32px auto;width:128px}.price-tables .price-table.style-3 .package-type{padding:32px;text-align:center}.price-tables .price-table.style-3 .package-type .title{font-size:34px}.price-tables .price-table.style-3 .package-type .subtitle{font-size:17px;color:rgba(0,0,0,.54);font-weight:500}.price-tables .price-table.style-3 .price{padding:16px 32px}.price-tables .price-table.style-3 .price .currency{padding-right:4px;font-size:15px;font-weight:500}.price-tables .price-table.style-3 .price .value{font-size:34px;font-weight:300;line-height:1}.price-tables .price-table.style-3 .price .period{padding-left:4px;text-align:center}.price-tables .price-table.style-3 .terms{margin:32px;font-size:15px;color:rgba(0,0,0,.54)}.price-tables .price-table.style-3 .terms .term{padding-bottom:16px}.price-tables .price-table.style-3 .terms .term:last-child{padding-bottom:0}.price-tables .price-table.style-3 .cta-button{margin:8px 32px}.price-tables .price-table.style-3 .note{padding:8px 32px 16px 32px;text-align:center;color:rgba(0,0,0,.54)}.simple-table-container{background:#fff}.simple-table-container .table-title{font-size:20px;padding:24px}table.simple{width:100%;border:none;border-spacing:0;text-align:left}table.simple thead tr th{padding:16px 8px;font-weight:500;color:rgba(0,0,0,.54);border-bottom:1px solid rgba(0,0,0,.12);white-space:nowrap;min-width:120px}table.simple thead tr th:first-child{padding-left:24px}table.simple thead tr th:last-child{padding-right:24px}table.simple tbody tr td{padding:16px 8px;border-bottom:1px solid rgba(0,0,0,.12)}table.simple tbody tr td:first-child{padding-left:24px}table.simple tbody tr td:last-child{padding-right:24px}table.simple tbody tr:last-child td{border-bottom:none}table.simple.clickable tbody tr{cursor:pointer}table.simple.clickable tbody tr:hover{background:rgba(0,0,0,.03)}html{font-size:62.5%;font-family:Roboto,"Helvetica Neue",Arial,sans-serif;line-height:1.4;letter-spacing:-.1px}body{font-size:1.3rem}body,html{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}form{font-size:1.6rem}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-weight:400}.h1,h1{font-size:2.4rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.6rem}.h4,h4{font-size:1.4rem}.h5,h5{font-size:1.3rem}.h6,h6{font-size:1.2rem}a{text-decoration:none}a:active,a:hover{text-decoration:underline}abbr{cursor:help;border-bottom:1px dotted rgba(0,0,0,.54)}blockquote{border-left:3px solid rgba(0,0,0,.12);font-style:italic;margin:1em 0;padding-left:16px}blockquote footer{font-style:normal}blockquote footer:before{content:'\2014 \00A0'}blockquote.reverse{border-left:none;border-right:3px solid rgba(0,0,0,.12);text-align:right;padding-left:0;padding-right:16px}blockquote.reverse footer:before{content:''}blockquote.reverse footer:after{content:'\2014 \00A0'}code{font-family:Monaco,Menlo,Consolas,"Ubuntu Mono",monospace}code:not(.highlight){background:rgba(0,0,0,.065);color:#106cc8;margin:0 1px;padding:2px 3px;border-radius:2px}dl dt{font-weight:700}dl dd{margin:4px 0 16px 0}mark{background:#f7f49a}pre{line-height:1.6;margin:8px 16px;white-space:pre-wrap}small{font-size:80%}table thead tr th{text-align:left}.text-italic{font-style:italic}.text-semibold{font-weight:600}.text-bold,strong{font-weight:700}.text-strike{text-decoration:line-through}.text-super{vertical-align:super}.text-sub{vertical-align:sub}.text-capitalize{text-transform:capitalize}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-weight-100{font-weight:100}.font-weight-200{font-weight:200}.font-weight-300{font-weight:300}.font-weight-400{font-weight:400}.font-weight-500{font-weight:500}.font-weight-600{font-weight:600}.font-weight-700{font-weight:700}.font-weight-800{font-weight:800}.font-weight-900{font-weight:900}.font-size-2{font-size:2px}.font-size-4{font-size:4px}.font-size-6{font-size:6px}.font-size-8{font-size:8px}.font-size-10{font-size:10px}.font-size-12{font-size:12px}.font-size-14{font-size:14px}.font-size-16{font-size:16px}.font-size-18{font-size:18px}.font-size-20{font-size:20px}.font-size-22{font-size:22px}.font-size-24{font-size:24px}.font-size-26{font-size:26px}.font-size-28{font-size:28px}.font-size-30{font-size:30px}.font-size-32{font-size:32px}.font-size-34{font-size:34px}.font-size-36{font-size:36px}.font-size-38{font-size:38px}.font-size-40{font-size:40px}.font-size-42{font-size:42px}.font-size-44{font-size:44px}.font-size-46{font-size:46px}.font-size-48{font-size:48px}.font-size-50{font-size:50px}.font-size-52{font-size:52px}.font-size-54{font-size:54px}.font-size-56{font-size:56px}.font-size-58{font-size:58px}.font-size-60{font-size:60px}.font-size-62{font-size:62px}.font-size-64{font-size:64px}.font-size-66{font-size:66px}.font-size-68{font-size:68px}.font-size-70{font-size:70px}.font-size-72{font-size:72px}.font-size-74{font-size:74px}.font-size-76{font-size:76px}.font-size-78{font-size:78px}.font-size-80{font-size:80px}.font-size-82{font-size:82px}.font-size-84{font-size:84px}.font-size-86{font-size:86px}.font-size-88{font-size:88px}.font-size-90{font-size:90px}.font-size-92{font-size:92px}.font-size-94{font-size:94px}.font-size-96{font-size:96px}.font-size-98{font-size:98px}.font-size-100{font-size:100px}.font-size-102{font-size:102px}.font-size-104{font-size:104px}.font-size-106{font-size:106px}.font-size-108{font-size:108px}.font-size-110{font-size:110px}.font-size-112{font-size:112px}.font-size-114{font-size:114px}.font-size-116{font-size:116px}.font-size-118{font-size:118px}.font-size-120{font-size:120px}.line-height-2{line-height:2px}.line-height-4{line-height:4px}.line-height-6{line-height:6px}.line-height-8{line-height:8px}.line-height-10{line-height:10px}.line-height-12{line-height:12px}.line-height-14{line-height:14px}.line-height-16{line-height:16px}.line-height-18{line-height:18px}.line-height-20{line-height:20px}.line-height-22{line-height:22px}.line-height-24{line-height:24px}.line-height-26{line-height:26px}.line-height-28{line-height:28px}.line-height-30{line-height:30px}.line-height-32{line-height:32px}.line-height-34{line-height:34px}.line-height-36{line-height:36px}.line-height-38{line-height:38px}.line-height-40{line-height:40px}.line-height-42{line-height:42px}.line-height-44{line-height:44px}.line-height-46{line-height:46px}.line-height-48{line-height:48px}.line-height-50{line-height:50px}.line-height-52{line-height:52px}.line-height-54{line-height:54px}.line-height-56{line-height:56px}.line-height-58{line-height:58px}.line-height-60{line-height:60px}.line-height-62{line-height:62px}.line-height-64{line-height:64px}.line-height-66{line-height:66px}.line-height-68{line-height:68px}.line-height-70{line-height:70px}.line-height-72{line-height:72px}.line-height-74{line-height:74px}.line-height-76{line-height:76px}.line-height-78{line-height:78px}.line-height-80{line-height:80px}.line-height-82{line-height:82px}.line-height-84{line-height:84px}.line-height-86{line-height:86px}.line-height-88{line-height:88px}.line-height-90{line-height:90px}.line-height-92{line-height:92px}.line-height-94{line-height:94px}.line-height-96{line-height:96px}.line-height-98{line-height:98px}.line-height-100{line-height:100px}.line-height-102{line-height:102px}.line-height-104{line-height:104px}.line-height-106{line-height:106px}.line-height-108{line-height:108px}.line-height-110{line-height:110px}.line-height-112{line-height:112px}.line-height-114{line-height:114px}.line-height-116{line-height:116px}.line-height-118{line-height:118px}.line-height-120{line-height:120px}.text-boxed,.text-boxed-light{border-radius:2px;padding:4px 8px;margin:0 8px;font-size:11px;font-weight:500;color:rgba(0,0,0,.54);background-color:rgba(0,0,0,.12);white-space:nowrap}.text-boxed-light{background-color:rgba(255,255,255,.7)}.text-truncate{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-nowrap{white-space:nowrap}.angular-google-map-container{height:400px}.moment-picker .moment-picker-container{width:296px;border:none;border-radius:2px;box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12);margin-left:0;padding:8px}.moment-picker .moment-picker-container td,.moment-picker .moment-picker-container th{min-width:0;width:40px;height:40px;padding:8px;text-shadow:none;border-radius:35px}.moment-picker .moment-picker-container td:hover,.moment-picker .moment-picker-container th:hover{background:#f5f5f5;background-image:none}.moment-picker .moment-picker-container td.selected{background:#03a9f4;background-image:none}.moment-picker .moment-picker-container .header-view th{border-radius:0;white-space:nowrap;width:auto}.moment-picker .moment-picker-container .header-view th:first-child,.moment-picker .moment-picker-container .header-view th:last-child{width:20%}.c3{transition:all .3s ease}.c3 svg{font:12px RobotoDraft,Roboto,'Helvetica Neue',sans-serif}.c3 line,.c3 path{fill:none;stroke:#000}.c3 text{font-family:Roboto,"Helvetica Neue",Arial,sans-serif;user-select:none}.c3 .c3-bars path,.c3 .c3-event-rect,.c3 .c3-legend-item-tile,.c3 .c3-xgrid-focus,.c3 .c3-ygrid{shape-rendering:crispEdges}.c3 .c3-chart-line{transition:all .3s ease}.c3 .c3-line{stroke-width:1px}.c3.stroke-3 .c3-line{stroke-width:3px}.c3.stroke-2 .c3-line{stroke-width:2px}.c3 .c3-circle{transition:all .3s ease;stroke:#fff;stroke-width:2}.c3 .c3-circle._expanded_{stroke-width:3;stroke:#fff}.c3 .c3-chart-arc path{stroke:#fff}.c3 .c3-chart-arc text{fill:#fff;font-size:13px}.c3 .c3-grid line{stroke:rgba(0,0,0,.04);stroke-width:1px;stroke-dasharray:0}.c3 .c3-grid text{fill:#aaa}.c3 .c3-axis .tick{stroke-width:0}.c3 .c3-axis text{fill:rgba(0,0,0,.33)}.c3 .c3-axis line,.c3 .c3-axis path{stroke:rgba(0,0,0,.04)}.c3 .c3-xgrid,.c3 .c3-ygrid{stroke-dasharray:0 0}.c3 .c3-text.c3-empty{fill:grey;font-size:2em}.c3 .c3-bar{stroke-width:0}.c3 .c3-bar._expanded_{fill-opacity:.75}.c3 .c3-target.c3-focused{opacity:1}.c3 .c3-target.c3-focused .c3-target.c3-focused path.c3-step,.c3 .c3-target.c3-focused path.c3-line{stroke-width:3px;transition:all .3s ease}.c3 .c3-target.c3-defocused{opacity:.3!important}.c3 .c3-region{fill:#4682b4;fill-opacity:.1}.c3 .c3-brush .extent{fill-opacity:.1}.c3 .c3-legend-item{font-size:12px}.c3 .c3-legend-item-hidden{opacity:.15}.c3 .c3-legend-background{opacity:.75;fill:#fff;stroke:#d3d3d3;stroke-width:1}.c3 .c3-tooltip-container{z-index:10}.c3 .c3-tooltip{border-collapse:collapse;border-spacing:0;background-color:#fff;empty-cells:show;box-shadow:0 2px 4px -1px rgba(0,0,0,.14),0 4px 5px 0 rgba(0,0,0,.098),0 1px 10px 0 rgba(0,0,0,.084);opacity:1;border-radius:2px;overflow:hidden;padding:4px 0}.c3 .c3-tooltip tr{border:none}.c3 .c3-tooltip th{background-color:transparent;font-size:14px;font-weight:400;padding:8px 12px;text-align:left;color:rgba(0,0,0,.54)}.c3 .c3-tooltip td{font-size:13px;padding:4px 12px!important;background-color:#fff;border-left:none;color:rgba(0,0,0,.84)}.c3 .c3-tooltip td>span{display:inline-block;width:10px;height:10px;margin-right:6px}.c3 .c3-tooltip td.value{font-size:14px!important;text-align:right;color:rgba(0,0,0,.84)}.c3 .c3-area{stroke-width:0;opacity:.2}.c3 .c3-chart-arcs-title{dominant-baseline:middle;font-size:1.3em}.c3 .c3-chart-arcs .c3-chart-arcs-background{fill:#e0e0e0;stroke:none}.c3 .c3-chart-arcs .c3-chart-arcs-gauge-unit{fill:#000;font-size:16px}.c3 .c3-chart-arcs .c3-chart-arcs-gauge-max{fill:#777}.c3 .c3-chart-arcs .c3-chart-arcs-gauge-min{fill:#777}.c3 .c3-chart-arc .c3-gauge-value{fill:#000}.ct-label{font-size:13px}.ct-chart-donut .ct-label,.ct-chart-pie .ct-label{font-size:13px}.bar-legend,.chart-legend,.doughnut-legend,.line-legend,.pie-legend,.polararea-legend,.radar-legend{margin-top:15px}table.dataTable{width:100%;margin:0 auto;clear:both;border-spacing:0}table.dataTable thead tr{background:#fff}table.dataTable thead th{text-align:left;vertical-align:middle;border-bottom:1px solid rgba(0,0,0,.12);padding:16px 8px}table.dataTable thead th:first-child{padding-left:24px}table.dataTable thead th:last-child{border-right:none;padding-right:24px}table.dataTable thead th:active{outline:0}table.dataTable thead th.dt-head-left{text-align:left}table.dataTable thead th.dt-head-center{text-align:center}table.dataTable thead th.dt-head-right{text-align:right}table.dataTable thead th.dt-head-justify{text-align:justify}table.dataTable thead th.dt-head-nowrap{white-space:nowrap}table.dataTable thead th .table-header .column-title{display:block;font-weight:600;white-space:nowrap}table.dataTable thead th .table-header .selectize-control{margin-top:15px}table.dataTable thead th .table-header .selectize-control.single .selectize-input{padding:7px 10px}table.dataTable thead th .table-header .selectize-control.single .selectize-input:after{right:10px;border-width:5px 4px 0 4px;border-color:rgba(0,0,0,.12) transparent transparent transparent}table.dataTable thead th .table-header .column-search-input{display:inline-block;margin-top:15px;width:100%;height:33px}table.dataTable thead td{padding:15px;vertical-align:middle}table.dataTable thead td:active{outline:0}table.dataTable thead td.dt-head-left{text-align:left}table.dataTable thead td.dt-head-center{text-align:center}table.dataTable thead td.dt-head-right{text-align:right}table.dataTable thead td.dt-head-justify{text-align:justify}table.dataTable thead td.dt-head-nowrap{white-space:nowrap}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc{background:0 0}table.dataTable thead .sorting .table-header .column-title,table.dataTable thead .sorting_asc .table-header .column-title,table.dataTable thead .sorting_desc .table-header .column-title{cursor:pointer}table.dataTable thead .sorting .table-header .column-title:after,table.dataTable thead .sorting_asc .table-header .column-title:after,table.dataTable thead .sorting_desc .table-header .column-title:after{position:relative;font-family:icomoon;font-weight:400;margin-left:10px;top:2px;font-size:16px;color:rgba(0,0,0,.54)}table.dataTable thead .sorting .table-header .column-title:after{content:'\eaa8'}table.dataTable thead .sorting_asc .table-header .column-title:after{content:'\e718'}table.dataTable thead .sorting_desc .table-header .column-title:after{content:'\e715'}table.dataTable tfoot th{font-weight:600;text-align:left;padding:10px 18px 6px 18px;border-top:1px solid #111}table.dataTable tfoot th.dt-head-left{text-align:left}table.dataTable tfoot th.dt-head-center{text-align:center}table.dataTable tfoot th.dt-head-right{text-align:right}table.dataTable tfoot th.dt-head-justify{text-align:justify}table.dataTable tfoot th.dt-head-nowrap{white-space:nowrap}table.dataTable tfoot td{padding:10px 18px 6px 18px;border-top:1px solid #111}table.dataTable tfoot td.dt-head-left{text-align:left}table.dataTable tfoot td.dt-head-center{text-align:center}table.dataTable tfoot td.dt-head-right{text-align:right}table.dataTable tfoot td.dt-head-justify{text-align:justify}table.dataTable tfoot td.dt-head-nowrap{white-space:nowrap}table.dataTable tbody tr{background-color:#fff}table.dataTable tbody tr.selected{background-color:#b0bed9}table.dataTable tbody tr.details-open td.detail-column i{background:#fff}table.dataTable tbody tr.details-row.odd tr{background:#fff}table.dataTable tbody tr.details-row>td{padding:0}table.dataTable tbody th{padding:14px 15px;vertical-align:middle}table.dataTable tbody th.dt-body-left{text-align:left}table.dataTable tbody th.dt-body-center{text-align:center}table.dataTable tbody th.dt-body-right{text-align:right}table.dataTable tbody th.dt-body-justify{text-align:justify}table.dataTable tbody th.dt-body-nowrap{white-space:nowrap}table.dataTable tbody td{padding:16px 8px;vertical-align:middle}table.dataTable tbody td:first-child{padding-left:24px}table.dataTable tbody td:last-child{padding-right:24px}table.dataTable tbody td.dt-body-left{text-align:left}table.dataTable tbody td.dt-body-center{text-align:center}table.dataTable tbody td.dt-body-right{text-align:right}table.dataTable tbody td.dt-body-justify{text-align:justify}table.dataTable tbody td.dt-body-nowrap{white-space:nowrap}table.dataTable th.dt-left{text-align:left}table.dataTable th.dt-center{text-align:center}table.dataTable th.dt-right{text-align:right}table.dataTable th.dt-justify{text-align:justify}table.dataTable th.dt-nowrap{white-space:nowrap}table.dataTable td.dt-left{text-align:left}table.dataTable td.dt-center{text-align:center}table.dataTable td.dataTables_empty{height:51px;text-align:center}table.dataTable td.dt-right{text-align:right}table.dataTable td.dt-justify{text-align:justify}table.dataTable td.dt-nowrap{white-space:nowrap}table.dataTable.row-border thead{border-bottom:1px solid rgba(0,0,0,.12)}table.dataTable.row-border tbody tr:first-child th{border-top:none}table.dataTable.row-border tbody tr:first-child td{border-top:none}table.dataTable.row-border tbody tr:last-child td{border-bottom:1px solid rgba(0,0,0,.12)}table.dataTable.row-border tbody th{border-top:1px solid rgba(0,0,0,.12)}table.dataTable.row-border tbody td{border-top:1px solid rgba(0,0,0,.12)}table.dataTable.cell-border tbody tr:first-child th{border-top:none}table.dataTable.cell-border tbody tr:first-child td{border-top:none}table.dataTable.cell-border tbody th{border-top:1px solid rgba(0,0,0,.12);border-right:1px solid rgba(0,0,0,.12)}table.dataTable.cell-border tbody th:last-child{border-right:none}table.dataTable.cell-border tbody td{border-top:1px solid rgba(0,0,0,.12);border-right:1px solid rgba(0,0,0,.12)}table.dataTable.cell-border tbody td:last-child{border-right:none}table.dataTable.stripe tbody tr.odd{background-color:#fff}table.dataTable.stripe tbody tr.odd.selected{background-color:#abb9d3}table.dataTable.hover tbody tr:hover{background-color:#f5f5f5}table.dataTable.hover tbody tr:hover.selected{background-color:#a9b7d1}table.dataTable.hover tbody tr.odd:hover{background-color:#f5f5f5}table.dataTable.hover tbody tr.odd:hover.selected{background-color:#a9b7d1}table.dataTable.hover tbody tr.even:hover{background-color:#f5f5f5}table.dataTable.hover tbody tr.even:hover.selected{background-color:#a9b7d1}table.dataTable.order-column tbody tr>.sorting_1{background-color:#f9f9f9}table.dataTable.order-column tbody tr>.sorting_2{background-color:#f9f9f9}table.dataTable.order-column tbody tr>.sorting_3{background-color:#f9f9f9}table.dataTable.order-column tbody tr.selected>.sorting_1{background-color:#acbad4}table.dataTable.order-column tbody tr.selected>.sorting_2{background-color:#acbad4}table.dataTable.order-column tbody tr.selected>.sorting_3{background-color:#acbad4}table.dataTable.order-column.stripe tbody tr.odd>.sorting_1{background-color:#f1f1f1}table.dataTable.order-column.stripe tbody tr.odd>.sorting_2{background-color:#f3f3f3}table.dataTable.order-column.stripe tbody tr.odd>.sorting_3{background-color:#f5f5f5}table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_1{background-color:#a6b3cd}table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_2{background-color:#a7b5ce}table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_3{background-color:#a9b6d0}table.dataTable.order-column.stripe tbody tr.even>.sorting_1{background-color:#f9f9f9}table.dataTable.order-column.stripe tbody tr.even>.sorting_2{background-color:#fbfbfb}table.dataTable.order-column.stripe tbody tr.even>.sorting_3{background-color:#fdfdfd}table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_1{background-color:#acbad4}table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_2{background-color:#adbbd6}table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_3{background-color:#afbdd8}table.dataTable.order-column.hover tbody tr:hover>.sorting_1{background-color:#eaeaea}table.dataTable.order-column.hover tbody tr:hover>.sorting_2{background-color:#ebebeb}table.dataTable.order-column.hover tbody tr:hover>.sorting_3{background-color:#eee}table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_1{background-color:#a1aec7}table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_2{background-color:#a2afc8}table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_3{background-color:#a4b2cb}table.dataTable.order-column.hover tbody tr.odd:hover>.sorting_1{background-color:#eaeaea}table.dataTable.order-column.hover tbody tr.odd:hover>.sorting_2{background-color:#ebebeb}table.dataTable.order-column.hover tbody tr.odd:hover>.sorting_3{background-color:#eee}table.dataTable.order-column.hover tbody tr.odd:hover.selected>.sorting_1{background-color:#a1aec7}table.dataTable.order-column.hover tbody tr.odd:hover.selected>.sorting_2{background-color:#a2afc8}table.dataTable.order-column.hover tbody tr.odd:hover.selected>.sorting_3{background-color:#a4b2cb}table.dataTable.order-column.hover tbody tr.even:hover>.sorting_1{background-color:#eaeaea}table.dataTable.order-column.hover tbody tr.even:hover>.sorting_2{background-color:#ebebeb}table.dataTable.order-column.hover tbody tr.even:hover>.sorting_3{background-color:#eee}table.dataTable.order-column.hover tbody tr.even:hover.selected>.sorting_1{background-color:#a1aec7}table.dataTable.order-column.hover tbody tr.even:hover.selected>.sorting_2{background-color:#a2afc8}table.dataTable.order-column.hover tbody tr.even:hover.selected>.sorting_3{background-color:#a4b2cb}table.dataTable.no-footer{border-bottom:none}table.dataTable.nowrap th{white-space:nowrap}table.dataTable.nowrap td{white-space:nowrap}table.dataTable.compact thead th{padding:5px 9px}table.dataTable.compact thead td{padding:5px 9px}table.dataTable.compact tfoot th{padding:5px 9px 3px 9px}table.dataTable.compact tfoot td{padding:5px 9px 3px 9px}table.dataTable.compact tbody th{padding:4px 5px}table.dataTable.compact tbody td{padding:4px 5px}.dataTables_wrapper{display:flex;flex:1 0 auto;flex-direction:column;min-height:0}.dataTables_wrapper .top{padding:16px 24px}.dataTables_wrapper .bottom{display:flex;min-height:64px;justify-content:space-between;padding:16px 8px;border-top:1px solid rgba(0,0,0,.12)}.dataTables_wrapper .bottom .left{display:flex;flex:0 0 50%;max-width:50%;align-self:center;padding:0 8px}.dataTables_wrapper .bottom .left .length{display:block}.dataTables_wrapper .bottom .right{display:flex;flex:0 0 50%;max-width:50%;align-self:center;justify-content:flex-end;padding:0 8px}.dataTables_wrapper .bottom .right .info{display:block;align-self:center}.dataTables_wrapper .bottom .right .info .dataTables_info{padding:0 8px;font-weight:600}.dataTables_wrapper .bottom .right .pagination{display:block;align-self:center;white-space:nowrap}.dataTables_wrapper .bottom .right .pagination .dataTables_paginate{padding:0;margin:0!important}.dataTables_wrapper .dataTables_filter{float:right}.dataTables_wrapper .dataTables_filter input{margin-left:.5em;border:1px solid rgba(0,0,0,.12);height:24px;padding:4px 8px}.dataTables_wrapper .dataTables_paginate .paginate_button{background:#fff;color:rgba(0,0,0,.87);border:1px solid rgba(0,0,0,.12);padding:9px 12px;border-radius:2px;cursor:pointer;user-select:none;margin:0 2px}.dataTables_wrapper .dataTables_paginate .paginate_button:hover{box-shadow:inset 999em 0 0 0 rgba(0,0,0,.05);color:rgba(0,0,0,.87)!important;border:1px solid rgba(0,0,0,.12)!important;background:0 0}.dataTables_wrapper .dataTables_paginate .paginate_button:active{box-shadow:inset 999em 0 0 0 rgba(0,0,0,.08),inset 0 1px 3px 0 rgba(0,0,0,.1),0 1px 0 0 rgba(255,255,255,.35)}.dataTables_wrapper .dataTables_paginate .paginate_button.current,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover{color:rgba(0,0,0,.54)!important;border-color:rgba(0,0,0,.12)!important;background:#fff!important;box-shadow:none!important;cursor:default}.dataTables_wrapper .dataTables_processing{position:absolute;top:50%;left:50%;width:100%;height:40px;margin-left:-50%;margin-top:-25px;padding-top:20px;text-align:center;font-size:1.2em;background-color:#fff;background:-webkit-gradient(linear,left top,right top,color-stop(0,rgba(255,255,255,0)),color-stop(25%,rgba(255,255,255,.9)),color-stop(75%,rgba(255,255,255,.9)),color-stop(100%,rgba(255,255,255,0)));background:-webkit-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:-moz-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:-ms-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:-o-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:linear-gradient(to right,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%)}.dataTables_wrapper .dataTables_scroll{display:flex;flex:1 1 0;flex-direction:column;clear:both;min-height:0}.dataTables_wrapper .dataTables_scroll table.dataTable{box-shadow:none}.dataTables_wrapper .dataTables_scroll table.dataTable.row-border thead{border:none}.dataTables_wrapper .dataTables_scroll .dataTables_scrollHead{display:flex;min-height:56px;box-shadow:0 0 0 1px rgba(0,0,0,.095),0 1px 1px 0 rgba(0,0,0,.1),0 2px 1px 0 rgba(0,0,0,.05);background:#fff;overflow:visible!important}.dataTables_wrapper .dataTables_scroll .dataTables_scrollHead tr th:last-child .table-header .column-title{position:relative;left:7px}.dataTables_wrapper .dataTables_scroll .dataTables_scrollBody{display:flex;overflow-x:hidden!important;overflow-y:scroll!important;-webkit-overflow-scrolling:touch}.dataTables_wrapper .dataTables_scroll .dataTables_scrollBody th>.dataTables_sizing{height:0;overflow:hidden;margin:0!important;padding:0!important}.dataTables_wrapper .dataTables_scroll .dataTables_scrollBody td>.dataTables_sizing{height:0;overflow:hidden;margin:0!important;padding:0!important}.dataTables_wrapper.no-footer .dataTables_scrollBody{border-bottom:none}.dataTables_wrapper.no-footer .dataTables_scrollBody table,.dataTables_wrapper.no-footer .dataTables_scrollHead table{border-bottom:none}.dataTables_wrapper:after{visibility:hidden;display:block;content:'';clear:both;height:0}table.dataTable .show-details{padding:5px 10px;font-weight:700}table.dataTable .action-buttons{display:flex;justify-content:center}table.dataTable .action-buttons .button{padding:8px}.fullpage-datatable .dataTables_wrapper{height:100%;max-height:100%}.explorer-11 .fullpage-datatable .dataTables_scroll{flex:1}table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr>td:first-child,table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr>th:first-child{padding-left:40px}table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr>td:first-child:before,table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr>th:first-child:before{content:'+';width:15px;height:15px;line-height:15px;top:50%;margin-top:-7px;left:8px;color:rgba(0,0,0,.54);background:0 0;border:none;box-shadow:0 0 0 2px rgba(0,0,0,.54);font-weight:700}table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr.parent>td:first-child:before,table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr.parent>th:first-child:before{background:0 0}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul{display:block}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul li{display:flex;flex-direction:row;align-items:center;justify-content:flex-start;border-bottom:1px solid rgba(0,0,0,.12);padding:8px 0}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul li:first-child{padding-top:0}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul li:last-child{border-bottom:none;padding-bottom:0}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul li .dtr-title{margin-right:8px}[hljs],hljs{display:block;overflow-x:auto;color:#333;background:#f8f8f8;-webkit-text-size-adjust:none}.diff .hljs-header,.hljs-comment{color:#998;font-style:italic}.css .rule .hljs-keyword,.hljs-keyword,.hljs-request,.hljs-status,.hljs-subst,.hljs-winutils,.nginx .hljs-title{color:#333;font-weight:700}.hljs-hexcolor,.hljs-number,.ruby .hljs-constant{color:teal}.hljs-doctag,.hljs-string,.hljs-tag .hljs-value,.tex .hljs-formula{color:#d14}.hljs-id,.hljs-title,.scss .hljs-preprocessor{color:#900;font-weight:700}.hljs-list .hljs-keyword,.hljs-subst{font-weight:400}.hljs-class .hljs-title,.hljs-type,.tex .hljs-command,.vhdl .hljs-literal{color:#458;font-weight:700}.django .hljs-tag .hljs-keyword,.hljs-rule .hljs-property,.hljs-tag,.hljs-tag .hljs-title{color:navy;font-weight:400}.hljs-attribute,.hljs-name,.hljs-variable,.lisp .hljs-body{color:teal}.hljs-regexp{color:#009926}.clojure .hljs-keyword,.hljs-prompt,.hljs-symbol,.lisp .hljs-keyword,.ruby .hljs-symbol .hljs-string,.scheme .hljs-keyword,.tex .hljs-special{color:#990073}.hljs-built_in{color:#0086b3}.hljs-cdata,.hljs-doctype,.hljs-pi,.hljs-pragma,.hljs-preprocessor,.hljs-shebang{color:#999;font-weight:700}.hljs-deletion{background:#fdd}.hljs-addition{background:#dfd}.diff .hljs-change{background:#0086b3}.hljs-chunk{color:#aaa}nvd3{display:block;width:100%;height:100%}nvd3.remove-x-lines .nv-x .tick line{display:none}nvd3.remove-y-lines .nv-y .tick line{display:none}nvd3.remove-line-stroke .nv-groups path.nv-line{stroke-width:0!important}nvd3.remove-opacity .nv-groups .nv-group{fill-opacity:1!important}nvd3.show-line-points .nv-line .nv-scatter .nv-groups .nv-point{fill-opacity:1!important;stroke-opacity:1!important}.nvd3 text{font-family:Roboto,"Helvetica Neue",Arial,sans-serif}.nvd3 line.nv-guideline{stroke:rgba(0,0,0,.54)}.nvd3 .nv-groups .nv-point.hover{stroke-width:3px!important;fill-opacity:1!important;stroke-opacity:1!important}.nvtooltip{background:0 0;color:#fff;padding:0;border:none}.nvtooltip.gravity-n:after{display:block;position:absolute;content:'';width:0;height:0;left:50%;bottom:100%;margin-left:-5px;border:5px solid transparent;border-bottom-color:rgba(0,0,0,.87)}.nvtooltip.gravity-s:after{display:block;position:absolute;content:'';width:0;height:0;top:100%;left:50%;margin-left:-5px;border:5px solid transparent;border-top-color:rgba(0,0,0,.87)}.nvtooltip.gravity-e:after{display:block;position:absolute;content:'';width:0;height:0;top:50%;right:0;margin-top:-6px;margin-right:-11px;border:6px solid transparent;border-left-color:rgba(0,0,0,.87)}.nvtooltip.gravity-w:after{display:block;position:absolute;content:'';width:0;height:0;top:50%;margin-top:-6px;margin-left:-11px;border:6px solid transparent;border-right-color:rgba(0,0,0,.87)}.nvtooltip table{background:rgba(0,0,0,.87);padding:8px 12px;margin:0;border-radius:2px}.nvtooltip table tbody tr td.legend-color-guide div{border:none}.nvtooltip table tbody tr td:last-child{padding-right:0}.ps-container:hover .ps-in-scrolling{pointer-events:auto}.ps-container .ps-in-scrolling{pointer-events:auto}.ps-container>.ps-scrollbar-x-rail{background:0 0!important;margin:4px 0;height:4px;z-index:49}.ps-container>.ps-scrollbar-x-rail>.ps-scrollbar-x{height:4px}.ps-container>.ps-scrollbar-y-rail{background:0 0!important;margin:4px 0;width:4px;z-index:49}.ps-container>.ps-scrollbar-y-rail>.ps-scrollbar-y{width:4px}.ta-root{display:block}.ta-root .ta-scroll-window.form-control{border:1px solid rgba(0,0,0,.12)}.ta-root.focussed>.ta-scroll-window.form-control{outline:0 solid transparent;border:1px solid rgba(0,0,0,.12);box-shadow:none}.ta-root textarea.ta-editor.ta-html{resize:vertical;width:100%!important;border:1px solid rgba(0,0,0,.12);padding:16px}.ta-root .ta-toolbar{border:1px solid rgba(0,0,0,.12);border-bottom:none;background:#f5f5f5}.ta-root .ta-toolbar .ta-group{display:flex;align-items:center;align-content:center;flex-wrap:wrap}.ta-root .ta-toolbar .ta-group #toolbarCC,.ta-root .ta-toolbar .ta-group #toolbarWC{display:inline-block!important;line-height:24px}.ta-root .ta-toolbar .ta-group .md-button{width:40px;min-width:40px;line-height:14px;height:36px;min-height:36px;padding:6px;margin:4px 0}.ta-root .ta-toolbar .ta-group .md-button i{font-size:20px;width:20px;height:20px;line-height:20px}.ng-cloak,.x-ng-cloak,[data-ng-cloak],[ng-cloak],[ng\:cloak],[x-ng-cloak]{display:none!important}.no-padding{padding:0!important}.no-margin{margin:0!important}.no-radius{border-radius:0}.divider-vertical{background:rgba(0,0,0,.12);height:24px;width:1px;margin:0 8px}.hidden{visibility:hidden;opacity:0}[fill-width]{min-width:100%}[fill-height]{min-height:100%}.full-height{height:100%!important}a img{display:block;outline:0}img{max-width:100%;height:auto;vertical-align:top;border:none}.scrollable{display:block;position:relative;overflow-x:auto;overflow-y:auto;-webkit-overflow-scrolling:touch}.scrollable.only-x{overflow-x:auto;overflow-y:hidden}.scrollable.only-y{overflow-x:hidden;overflow-y:auto}.flex-scrollable{position:relative;overflow-x:auto;overflow-y:auto;-webkit-overflow-scrolling:touch}.flex-scrollable.only-x{overflow-x:auto;overflow-y:hidden}.flex-scrollable.only-y{overflow-x:hidden;overflow-y:auto}.background-image-center{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:-1}.align-vertical:before{display:inline-block;height:100%;content:'';vertical-align:middle}.align-vertical .align-vertical-bottom,.align-vertical .align-vertical-middle,.align-vertical .align-vertical-top{display:inline-block}.align-vertical .align-vertical-top{vertical-align:top}.align-vertical .align-vertical-middle{vertical-align:middle}.align-vertical .align-vertical-bottom{vertical-align:bottom}.p-0,.padding-0{padding:0}.padding-top-0,.pt-0{padding-top:0}.padding-right-0,.pr-0{padding-right:0}.padding-bottom-0,.pb-0{padding-bottom:0}.padding-left-0,.pl-0{padding-left:0}.padding-horizontal-0,.ph-0{padding-left:0;padding-right:0}.padding-vertical-0,.pv-0{padding-top:0;padding-bottom:0}.p-5,.padding-5{padding:5px}.padding-top-5,.pt-5{padding-top:5px}.padding-right-5,.pr-5{padding-right:5px}.padding-bottom-5,.pb-5{padding-bottom:5px}.padding-left-5,.pl-5{padding-left:5px}.padding-horizontal-5,.ph-5{padding-left:5px;padding-right:5px}.padding-vertical-5,.pv-5{padding-top:5px;padding-bottom:5px}.p-10,.padding-10{padding:10px}.padding-top-10,.pt-10{padding-top:10px}.padding-right-10,.pr-10{padding-right:10px}.padding-bottom-10,.pb-10{padding-bottom:10px}.padding-left-10,.pl-10{padding-left:10px}.padding-horizontal-10,.ph-10{padding-left:10px;padding-right:10px}.padding-vertical-10,.pv-10{padding-top:10px;padding-bottom:10px}.p-15,.padding-15{padding:15px}.padding-top-15,.pt-15{padding-top:15px}.padding-right-15,.pr-15{padding-right:15px}.padding-bottom-15,.pb-15{padding-bottom:15px}.padding-left-15,.pl-15{padding-left:15px}.padding-horizontal-15,.ph-15{padding-left:15px;padding-right:15px}.padding-vertical-15,.pv-15{padding-top:15px;padding-bottom:15px}.p-20,.padding-20{padding:20px}.padding-top-20,.pt-20{padding-top:20px}.padding-right-20,.pr-20{padding-right:20px}.padding-bottom-20,.pb-20{padding-bottom:20px}.padding-left-20,.pl-20{padding-left:20px}.padding-horizontal-20,.ph-20{padding-left:20px;padding-right:20px}.padding-vertical-20,.pv-20{padding-top:20px;padding-bottom:20px}.p-25,.padding-25{padding:25px}.padding-top-25,.pt-25{padding-top:25px}.padding-right-25,.pr-25{padding-right:25px}.padding-bottom-25,.pb-25{padding-bottom:25px}.padding-left-25,.pl-25{padding-left:25px}.padding-horizontal-25,.ph-25{padding-left:25px;padding-right:25px}.padding-vertical-25,.pv-25{padding-top:25px;padding-bottom:25px}.p-30,.padding-30{padding:30px}.padding-top-30,.pt-30{padding-top:30px}.padding-right-30,.pr-30{padding-right:30px}.padding-bottom-30,.pb-30{padding-bottom:30px}.padding-left-30,.pl-30{padding-left:30px}.padding-horizontal-30,.ph-30{padding-left:30px;padding-right:30px}.padding-vertical-30,.pv-30{padding-top:30px;padding-bottom:30px}.p-35,.padding-35{padding:35px}.padding-top-35,.pt-35{padding-top:35px}.padding-right-35,.pr-35{padding-right:35px}.padding-bottom-35,.pb-35{padding-bottom:35px}.padding-left-35,.pl-35{padding-left:35px}.padding-horizontal-35,.ph-35{padding-left:35px;padding-right:35px}.padding-vertical-35,.pv-35{padding-top:35px;padding-bottom:35px}.p-40,.padding-40{padding:40px}.padding-top-40,.pt-40{padding-top:40px}.padding-right-40,.pr-40{padding-right:40px}.padding-bottom-40,.pb-40{padding-bottom:40px}.padding-left-40,.pl-40{padding-left:40px}.padding-horizontal-40,.ph-40{padding-left:40px;padding-right:40px}.padding-vertical-40,.pv-40{padding-top:40px;padding-bottom:40px}.p-45,.padding-45{padding:45px}.padding-top-45,.pt-45{padding-top:45px}.padding-right-45,.pr-45{padding-right:45px}.padding-bottom-45,.pb-45{padding-bottom:45px}.padding-left-45,.pl-45{padding-left:45px}.padding-horizontal-45,.ph-45{padding-left:45px;padding-right:45px}.padding-vertical-45,.pv-45{padding-top:45px;padding-bottom:45px}.p-50,.padding-50{padding:50px}.padding-top-50,.pt-50{padding-top:50px}.padding-right-50,.pr-50{padding-right:50px}.padding-bottom-50,.pb-50{padding-bottom:50px}.padding-left-50,.pl-50{padding-left:50px}.padding-horizontal-50,.ph-50{padding-left:50px;padding-right:50px}.padding-vertical-50,.pv-50{padding-top:50px;padding-bottom:50px}.p-55,.padding-55{padding:55px}.padding-top-55,.pt-55{padding-top:55px}.padding-right-55,.pr-55{padding-right:55px}.padding-bottom-55,.pb-55{padding-bottom:55px}.padding-left-55,.pl-55{padding-left:55px}.padding-horizontal-55,.ph-55{padding-left:55px;padding-right:55px}.padding-vertical-55,.pv-55{padding-top:55px;padding-bottom:55px}.p-60,.padding-60{padding:60px}.padding-top-60,.pt-60{padding-top:60px}.padding-right-60,.pr-60{padding-right:60px}.padding-bottom-60,.pb-60{padding-bottom:60px}.padding-left-60,.pl-60{padding-left:60px}.padding-horizontal-60,.ph-60{padding-left:60px;padding-right:60px}.padding-vertical-60,.pv-60{padding-top:60px;padding-bottom:60px}.p-65,.padding-65{padding:65px}.padding-top-65,.pt-65{padding-top:65px}.padding-right-65,.pr-65{padding-right:65px}.padding-bottom-65,.pb-65{padding-bottom:65px}.padding-left-65,.pl-65{padding-left:65px}.padding-horizontal-65,.ph-65{padding-left:65px;padding-right:65px}.padding-vertical-65,.pv-65{padding-top:65px;padding-bottom:65px}.p-70,.padding-70{padding:70px}.padding-top-70,.pt-70{padding-top:70px}.padding-right-70,.pr-70{padding-right:70px}.padding-bottom-70,.pb-70{padding-bottom:70px}.padding-left-70,.pl-70{padding-left:70px}.padding-horizontal-70,.ph-70{padding-left:70px;padding-right:70px}.padding-vertical-70,.pv-70{padding-top:70px;padding-bottom:70px}.p-75,.padding-75{padding:75px}.padding-top-75,.pt-75{padding-top:75px}.padding-right-75,.pr-75{padding-right:75px}.padding-bottom-75,.pb-75{padding-bottom:75px}.padding-left-75,.pl-75{padding-left:75px}.padding-horizontal-75,.ph-75{padding-left:75px;padding-right:75px}.padding-vertical-75,.pv-75{padding-top:75px;padding-bottom:75px}.p-80,.padding-80{padding:80px}.padding-top-80,.pt-80{padding-top:80px}.padding-right-80,.pr-80{padding-right:80px}.padding-bottom-80,.pb-80{padding-bottom:80px}.padding-left-80,.pl-80{padding-left:80px}.padding-horizontal-80,.ph-80{padding-left:80px;padding-right:80px}.padding-vertical-80,.pv-80{padding-top:80px;padding-bottom:80px}.p-85,.padding-85{padding:85px}.padding-top-85,.pt-85{padding-top:85px}.padding-right-85,.pr-85{padding-right:85px}.padding-bottom-85,.pb-85{padding-bottom:85px}.padding-left-85,.pl-85{padding-left:85px}.padding-horizontal-85,.ph-85{padding-left:85px;padding-right:85px}.padding-vertical-85,.pv-85{padding-top:85px;padding-bottom:85px}.p-90,.padding-90{padding:90px}.padding-top-90,.pt-90{padding-top:90px}.padding-right-90,.pr-90{padding-right:90px}.padding-bottom-90,.pb-90{padding-bottom:90px}.padding-left-90,.pl-90{padding-left:90px}.padding-horizontal-90,.ph-90{padding-left:90px;padding-right:90px}.padding-vertical-90,.pv-90{padding-top:90px;padding-bottom:90px}.p-95,.padding-95{padding:95px}.padding-top-95,.pt-95{padding-top:95px}.padding-right-95,.pr-95{padding-right:95px}.padding-bottom-95,.pb-95{padding-bottom:95px}.padding-left-95,.pl-95{padding-left:95px}.padding-horizontal-95,.ph-95{padding-left:95px;padding-right:95px}.padding-vertical-95,.pv-95{padding-top:95px;padding-bottom:95px}.p-100,.padding-100{padding:100px}.padding-top-100,.pt-100{padding-top:100px}.padding-right-100,.pr-100{padding-right:100px}.padding-bottom-100,.pb-100{padding-bottom:100px}.padding-left-100,.pl-100{padding-left:100px}.padding-horizontal-100,.ph-100{padding-left:100px;padding-right:100px}.padding-vertical-100,.pv-100{padding-top:100px;padding-bottom:100px}.p-8,.padding-8{padding:8px}.padding-top-8,.pt-8{padding-top:8px}.padding-right-8,.pr-8{padding-right:8px}.padding-bottom-8,.pb-8{padding-bottom:8px}.padding-left-8,.pl-8{padding-left:8px}.padding-horizontal-8,.ph-8{padding-left:8px;padding-right:8px}.padding-vertical-8,.pv-8{padding-top:8px;padding-bottom:8px}.p-16,.padding-16{padding:16px}.padding-top-16,.pt-16{padding-top:16px}.padding-right-16,.pr-16{padding-right:16px}.padding-bottom-16,.pb-16{padding-bottom:16px}.padding-left-16,.pl-16{padding-left:16px}.padding-horizontal-16,.ph-16{padding-left:16px;padding-right:16px}.padding-vertical-16,.pv-16{padding-top:16px;padding-bottom:16px}.p-24,.padding-24{padding:24px}.padding-top-24,.pt-24{padding-top:24px}.padding-right-24,.pr-24{padding-right:24px}.padding-bottom-24,.pb-24{padding-bottom:24px}.padding-left-24,.pl-24{padding-left:24px}.padding-horizontal-24,.ph-24{padding-left:24px;padding-right:24px}.padding-vertical-24,.pv-24{padding-top:24px;padding-bottom:24px}.p-32,.padding-32{padding:32px}.padding-top-32,.pt-32{padding-top:32px}.padding-right-32,.pr-32{padding-right:32px}.padding-bottom-32,.pb-32{padding-bottom:32px}.padding-left-32,.pl-32{padding-left:32px}.padding-horizontal-32,.ph-32{padding-left:32px;padding-right:32px}.padding-vertical-32,.pv-32{padding-top:32px;padding-bottom:32px}.p-48,.padding-48{padding:48px}.padding-top-48,.pt-48{padding-top:48px}.padding-right-48,.pr-48{padding-right:48px}.padding-bottom-48,.pb-48{padding-bottom:48px}.padding-left-48,.pl-48{padding-left:48px}.padding-horizontal-48,.ph-48{padding-left:48px;padding-right:48px}.padding-vertical-48,.pv-48{padding-top:48px;padding-bottom:48px}.p-56,.padding-56{padding:56px}.padding-top-56,.pt-56{padding-top:56px}.padding-right-56,.pr-56{padding-right:56px}.padding-bottom-56,.pb-56{padding-bottom:56px}.padding-left-56,.pl-56{padding-left:56px}.padding-horizontal-56,.ph-56{padding-left:56px;padding-right:56px}.padding-vertical-56,.pv-56{padding-top:56px;padding-bottom:56px}.p-64,.padding-64{padding:64px}.padding-top-64,.pt-64{padding-top:64px}.padding-right-64,.pr-64{padding-right:64px}.padding-bottom-64,.pb-64{padding-bottom:64px}.padding-left-64,.pl-64{padding-left:64px}.padding-horizontal-64,.ph-64{padding-left:64px;padding-right:64px}.padding-vertical-64,.pv-64{padding-top:64px;padding-bottom:64px}.p-72,.padding-72{padding:72px}.padding-top-72,.pt-72{padding-top:72px}.padding-right-72,.pr-72{padding-right:72px}.padding-bottom-72,.pb-72{padding-bottom:72px}.padding-left-72,.pl-72{padding-left:72px}.padding-horizontal-72,.ph-72{padding-left:72px;padding-right:72px}.padding-vertical-72,.pv-72{padding-top:72px;padding-bottom:72px}.p-88,.padding-88{padding:88px}.padding-top-88,.pt-88{padding-top:88px}.padding-right-88,.pr-88{padding-right:88px}.padding-bottom-88,.pb-88{padding-bottom:88px}.padding-left-88,.pl-88{padding-left:88px}.padding-horizontal-88,.ph-88{padding-left:88px;padding-right:88px}.padding-vertical-88,.pv-88{padding-top:88px;padding-bottom:88px}.p-96,.padding-96{padding:96px}.padding-top-96,.pt-96{padding-top:96px}.padding-right-96,.pr-96{padding-right:96px}.padding-bottom-96,.pb-96{padding-bottom:96px}.padding-left-96,.pl-96{padding-left:96px}.padding-horizontal-96,.ph-96{padding-left:96px;padding-right:96px}.padding-vertical-96,.pv-96{padding-top:96px;padding-bottom:96px}.m-0,.margin-0{margin:0}.margin-top-0,.mt-0{margin-top:0}.margin-right-0,.mr-0{margin-right:0}.margin-bottom-0,.mb-0{margin-bottom:0}.margin-left-0,.ml-0{margin-left:0}.margin-horizontal-0,.mh-0{margin-left:0;margin-right:0}.margin-vertical-0,.mv-0{margin-top:0;margin-bottom:0}.m-5,.margin-5{margin:5px}.margin-top-5,.mt-5{margin-top:5px}.margin-right-5,.mr-5{margin-right:5px}.margin-bottom-5,.mb-5{margin-bottom:5px}.margin-left-5,.ml-5{margin-left:5px}.margin-horizontal-5,.mh-5{margin-left:5px;margin-right:5px}.margin-vertical-5,.mv-5{margin-top:5px;margin-bottom:5px}.m-10,.margin-10{margin:10px}.margin-top-10,.mt-10{margin-top:10px}.margin-right-10,.mr-10{margin-right:10px}.margin-bottom-10,.mb-10{margin-bottom:10px}.margin-left-10,.ml-10{margin-left:10px}.margin-horizontal-10,.mh-10{margin-left:10px;margin-right:10px}.margin-vertical-10,.mv-10{margin-top:10px;margin-bottom:10px}.m-15,.margin-15{margin:15px}.margin-top-15,.mt-15{margin-top:15px}.margin-right-15,.mr-15{margin-right:15px}.margin-bottom-15,.mb-15{margin-bottom:15px}.margin-left-15,.ml-15{margin-left:15px}.margin-horizontal-15,.mh-15{margin-left:15px;margin-right:15px}.margin-vertical-15,.mv-15{margin-top:15px;margin-bottom:15px}.m-20,.margin-20{margin:20px}.margin-top-20,.mt-20{margin-top:20px}.margin-right-20,.mr-20{margin-right:20px}.margin-bottom-20,.mb-20{margin-bottom:20px}.margin-left-20,.ml-20{margin-left:20px}.margin-horizontal-20,.mh-20{margin-left:20px;margin-right:20px}.margin-vertical-20,.mv-20{margin-top:20px;margin-bottom:20px}.m-25,.margin-25{margin:25px}.margin-top-25,.mt-25{margin-top:25px}.margin-right-25,.mr-25{margin-right:25px}.margin-bottom-25,.mb-25{margin-bottom:25px}.margin-left-25,.ml-25{margin-left:25px}.margin-horizontal-25,.mh-25{margin-left:25px;margin-right:25px}.margin-vertical-25,.mv-25{margin-top:25px;margin-bottom:25px}.m-30,.margin-30{margin:30px}.margin-top-30,.mt-30{margin-top:30px}.margin-right-30,.mr-30{margin-right:30px}.margin-bottom-30,.mb-30{margin-bottom:30px}.margin-left-30,.ml-30{margin-left:30px}.margin-horizontal-30,.mh-30{margin-left:30px;margin-right:30px}.margin-vertical-30,.mv-30{margin-top:30px;margin-bottom:30px}.m-35,.margin-35{margin:35px}.margin-top-35,.mt-35{margin-top:35px}.margin-right-35,.mr-35{margin-right:35px}.margin-bottom-35,.mb-35{margin-bottom:35px}.margin-left-35,.ml-35{margin-left:35px}.margin-horizontal-35,.mh-35{margin-left:35px;margin-right:35px}.margin-vertical-35,.mv-35{margin-top:35px;margin-bottom:35px}.m-40,.margin-40{margin:40px}.margin-top-40,.mt-40{margin-top:40px}.margin-right-40,.mr-40{margin-right:40px}.margin-bottom-40,.mb-40{margin-bottom:40px}.margin-left-40,.ml-40{margin-left:40px}.margin-horizontal-40,.mh-40{margin-left:40px;margin-right:40px}.margin-vertical-40,.mv-40{margin-top:40px;margin-bottom:40px}.m-45,.margin-45{margin:45px}.margin-top-45,.mt-45{margin-top:45px}.margin-right-45,.mr-45{margin-right:45px}.margin-bottom-45,.mb-45{margin-bottom:45px}.margin-left-45,.ml-45{margin-left:45px}.margin-horizontal-45,.mh-45{margin-left:45px;margin-right:45px}.margin-vertical-45,.mv-45{margin-top:45px;margin-bottom:45px}.m-50,.margin-50{margin:50px}.margin-top-50,.mt-50{margin-top:50px}.margin-right-50,.mr-50{margin-right:50px}.margin-bottom-50,.mb-50{margin-bottom:50px}.margin-left-50,.ml-50{margin-left:50px}.margin-horizontal-50,.mh-50{margin-left:50px;margin-right:50px}.margin-vertical-50,.mv-50{margin-top:50px;margin-bottom:50px}.m-55,.margin-55{margin:55px}.margin-top-55,.mt-55{margin-top:55px}.margin-right-55,.mr-55{margin-right:55px}.margin-bottom-55,.mb-55{margin-bottom:55px}.margin-left-55,.ml-55{margin-left:55px}.margin-horizontal-55,.mh-55{margin-left:55px;margin-right:55px}.margin-vertical-55,.mv-55{margin-top:55px;margin-bottom:55px}.m-60,.margin-60{margin:60px}.margin-top-60,.mt-60{margin-top:60px}.margin-right-60,.mr-60{margin-right:60px}.margin-bottom-60,.mb-60{margin-bottom:60px}.margin-left-60,.ml-60{margin-left:60px}.margin-horizontal-60,.mh-60{margin-left:60px;margin-right:60px}.margin-vertical-60,.mv-60{margin-top:60px;margin-bottom:60px}.m-65,.margin-65{margin:65px}.margin-top-65,.mt-65{margin-top:65px}.margin-right-65,.mr-65{margin-right:65px}.margin-bottom-65,.mb-65{margin-bottom:65px}.margin-left-65,.ml-65{margin-left:65px}.margin-horizontal-65,.mh-65{margin-left:65px;margin-right:65px}.margin-vertical-65,.mv-65{margin-top:65px;margin-bottom:65px}.m-70,.margin-70{margin:70px}.margin-top-70,.mt-70{margin-top:70px}.margin-right-70,.mr-70{margin-right:70px}.margin-bottom-70,.mb-70{margin-bottom:70px}.margin-left-70,.ml-70{margin-left:70px}.margin-horizontal-70,.mh-70{margin-left:70px;margin-right:70px}.margin-vertical-70,.mv-70{margin-top:70px;margin-bottom:70px}.m-75,.margin-75{margin:75px}.margin-top-75,.mt-75{margin-top:75px}.margin-right-75,.mr-75{margin-right:75px}.margin-bottom-75,.mb-75{margin-bottom:75px}.margin-left-75,.ml-75{margin-left:75px}.margin-horizontal-75,.mh-75{margin-left:75px;margin-right:75px}.margin-vertical-75,.mv-75{margin-top:75px;margin-bottom:75px}.m-80,.margin-80{margin:80px}.margin-top-80,.mt-80{margin-top:80px}.margin-right-80,.mr-80{margin-right:80px}.margin-bottom-80,.mb-80{margin-bottom:80px}.margin-left-80,.ml-80{margin-left:80px}.margin-horizontal-80,.mh-80{margin-left:80px;margin-right:80px}.margin-vertical-80,.mv-80{margin-top:80px;margin-bottom:80px}.m-85,.margin-85{margin:85px}.margin-top-85,.mt-85{margin-top:85px}.margin-right-85,.mr-85{margin-right:85px}.margin-bottom-85,.mb-85{margin-bottom:85px}.margin-left-85,.ml-85{margin-left:85px}.margin-horizontal-85,.mh-85{margin-left:85px;margin-right:85px}.margin-vertical-85,.mv-85{margin-top:85px;margin-bottom:85px}.m-90,.margin-90{margin:90px}.margin-top-90,.mt-90{margin-top:90px}.margin-right-90,.mr-90{margin-right:90px}.margin-bottom-90,.mb-90{margin-bottom:90px}.margin-left-90,.ml-90{margin-left:90px}.margin-horizontal-90,.mh-90{margin-left:90px;margin-right:90px}.margin-vertical-90,.mv-90{margin-top:90px;margin-bottom:90px}.m-95,.margin-95{margin:95px}.margin-top-95,.mt-95{margin-top:95px}.margin-right-95,.mr-95{margin-right:95px}.margin-bottom-95,.mb-95{margin-bottom:95px}.margin-left-95,.ml-95{margin-left:95px}.margin-horizontal-95,.mh-95{margin-left:95px;margin-right:95px}.margin-vertical-95,.mv-95{margin-top:95px;margin-bottom:95px}.m-100,.margin-100{margin:100px}.margin-top-100,.mt-100{margin-top:100px}.margin-right-100,.mr-100{margin-right:100px}.margin-bottom-100,.mb-100{margin-bottom:100px}.margin-left-100,.ml-100{margin-left:100px}.margin-horizontal-100,.mh-100{margin-left:100px;margin-right:100px}.margin-vertical-100,.mv-100{margin-top:100px;margin-bottom:100px}.m-8,.margin-8{margin:8px}.margin-top-8,.mt-8{margin-top:8px}.margin-right-8,.mr-8{margin-right:8px}.margin-bottom-8,.mb-8{margin-bottom:8px}.margin-left-8,.ml-8{margin-left:8px}.margin-horizontal-8,.mh-8{margin-left:8px;margin-right:8px}.margin-vertical-8,.mv-8{margin-top:8px;margin-bottom:8px}.m-16,.margin-16{margin:16px}.margin-top-16,.mt-16{margin-top:16px}.margin-right-16,.mr-16{margin-right:16px}.margin-bottom-16,.mb-16{margin-bottom:16px}.margin-left-16,.ml-16{margin-left:16px}.margin-horizontal-16,.mh-16{margin-left:16px;margin-right:16px}.margin-vertical-16,.mv-16{margin-top:16px;margin-bottom:16px}.m-24,.margin-24{margin:24px}.margin-top-24,.mt-24{margin-top:24px}.margin-right-24,.mr-24{margin-right:24px}.margin-bottom-24,.mb-24{margin-bottom:24px}.margin-left-24,.ml-24{margin-left:24px}.margin-horizontal-24,.mh-24{margin-left:24px;margin-right:24px}.margin-vertical-24,.mv-24{margin-top:24px;margin-bottom:24px}.m-32,.margin-32{margin:32px}.margin-top-32,.mt-32{margin-top:32px}.margin-right-32,.mr-32{margin-right:32px}.margin-bottom-32,.mb-32{margin-bottom:32px}.margin-left-32,.ml-32{margin-left:32px}.margin-horizontal-32,.mh-32{margin-left:32px;margin-right:32px}.margin-vertical-32,.mv-32{margin-top:32px;margin-bottom:32px}.m-48,.margin-48{margin:48px}.margin-top-48,.mt-48{margin-top:48px}.margin-right-48,.mr-48{margin-right:48px}.margin-bottom-48,.mb-48{margin-bottom:48px}.margin-left-48,.ml-48{margin-left:48px}.margin-horizontal-48,.mh-48{margin-left:48px;margin-right:48px}.margin-vertical-48,.mv-48{margin-top:48px;margin-bottom:48px}.m-56,.margin-56{margin:56px}.margin-top-56,.mt-56{margin-top:56px}.margin-right-56,.mr-56{margin-right:56px}.margin-bottom-56,.mb-56{margin-bottom:56px}.margin-left-56,.ml-56{margin-left:56px}.margin-horizontal-56,.mh-56{margin-left:56px;margin-right:56px}.margin-vertical-56,.mv-56{margin-top:56px;margin-bottom:56px}.m-64,.margin-64{margin:64px}.margin-top-64,.mt-64{margin-top:64px}.margin-right-64,.mr-64{margin-right:64px}.margin-bottom-64,.mb-64{margin-bottom:64px}.margin-left-64,.ml-64{margin-left:64px}.margin-horizontal-64,.mh-64{margin-left:64px;margin-right:64px}.margin-vertical-64,.mv-64{margin-top:64px;margin-bottom:64px}.m-72,.margin-72{margin:72px}.margin-top-72,.mt-72{margin-top:72px}.margin-right-72,.mr-72{margin-right:72px}.margin-bottom-72,.mb-72{margin-bottom:72px}.margin-left-72,.ml-72{margin-left:72px}.margin-horizontal-72,.mh-72{margin-left:72px;margin-right:72px}.margin-vertical-72,.mv-72{margin-top:72px;margin-bottom:72px}.m-88,.margin-88{margin:88px}.margin-top-88,.mt-88{margin-top:88px}.margin-right-88,.mr-88{margin-right:88px}.margin-bottom-88,.mb-88{margin-bottom:88px}.margin-left-88,.ml-88{margin-left:88px}.margin-horizontal-88,.mh-88{margin-left:88px;margin-right:88px}.margin-vertical-88,.mv-88{margin-top:88px;margin-bottom:88px}.m-96,.margin-96{margin:96px}.margin-top-96,.mt-96{margin-top:96px}.margin-right-96,.mr-96{margin-right:96px}.margin-bottom-96,.mb-96{margin-bottom:96px}.margin-left-96,.ml-96{margin-left:96px}.margin-horizontal-96,.mh-96{margin-left:96px;margin-right:96px}.margin-vertical-96,.mv-96{margin-top:96px;margin-bottom:96px}.h-0,.height-0{height:0!important;min-height:0!important;max-height:0!important}.w-0,.width-0{width:0!important;min-width:0!important;max-width:0!important}.h-5,.height-5{height:5px!important;min-height:5px!important;max-height:5px!important}.w-5,.width-5{width:5px!important;min-width:5px!important;max-width:5px!important}.h-10,.height-10{height:10px!important;min-height:10px!important;max-height:10px!important}.w-10,.width-10{width:10px!important;min-width:10px!important;max-width:10px!important}.h-15,.height-15{height:15px!important;min-height:15px!important;max-height:15px!important}.w-15,.width-15{width:15px!important;min-width:15px!important;max-width:15px!important}.h-20,.height-20{height:20px!important;min-height:20px!important;max-height:20px!important}.w-20,.width-20{width:20px!important;min-width:20px!important;max-width:20px!important}.h-25,.height-25{height:25px!important;min-height:25px!important;max-height:25px!important}.w-25,.width-25{width:25px!important;min-width:25px!important;max-width:25px!important}.h-30,.height-30{height:30px!important;min-height:30px!important;max-height:30px!important}.w-30,.width-30{width:30px!important;min-width:30px!important;max-width:30px!important}.h-35,.height-35{height:35px!important;min-height:35px!important;max-height:35px!important}.w-35,.width-35{width:35px!important;min-width:35px!important;max-width:35px!important}.h-40,.height-40{height:40px!important;min-height:40px!important;max-height:40px!important}.w-40,.width-40{width:40px!important;min-width:40px!important;max-width:40px!important}.h-45,.height-45{height:45px!important;min-height:45px!important;max-height:45px!important}.w-45,.width-45{width:45px!important;min-width:45px!important;max-width:45px!important}.h-50,.height-50{height:50px!important;min-height:50px!important;max-height:50px!important}.w-50,.width-50{width:50px!important;min-width:50px!important;max-width:50px!important}.h-55,.height-55{height:55px!important;min-height:55px!important;max-height:55px!important}.w-55,.width-55{width:55px!important;min-width:55px!important;max-width:55px!important}.h-60,.height-60{height:60px!important;min-height:60px!important;max-height:60px!important}.w-60,.width-60{width:60px!important;min-width:60px!important;max-width:60px!important}.h-65,.height-65{height:65px!important;min-height:65px!important;max-height:65px!important}.w-65,.width-65{width:65px!important;min-width:65px!important;max-width:65px!important}.h-70,.height-70{height:70px!important;min-height:70px!important;max-height:70px!important}.w-70,.width-70{width:70px!important;min-width:70px!important;max-width:70px!important}.h-75,.height-75{height:75px!important;min-height:75px!important;max-height:75px!important}.w-75,.width-75{width:75px!important;min-width:75px!important;max-width:75px!important}.h-80,.height-80{height:80px!important;min-height:80px!important;max-height:80px!important}.w-80,.width-80{width:80px!important;min-width:80px!important;max-width:80px!important}.h-85,.height-85{height:85px!important;min-height:85px!important;max-height:85px!important}.w-85,.width-85{width:85px!important;min-width:85px!important;max-width:85px!important}.h-90,.height-90{height:90px!important;min-height:90px!important;max-height:90px!important}.w-90,.width-90{width:90px!important;min-width:90px!important;max-width:90px!important}.h-95,.height-95{height:95px!important;min-height:95px!important;max-height:95px!important}.w-95,.width-95{width:95px!important;min-width:95px!important;max-width:95px!important}.h-100,.height-100{height:100px!important;min-height:100px!important;max-height:100px!important}.w-100,.width-100{width:100px!important;min-width:100px!important;max-width:100px!important}.h-105,.height-105{height:105px!important;min-height:105px!important;max-height:105px!important}.w-105,.width-105{width:105px!important;min-width:105px!important;max-width:105px!important}.h-110,.height-110{height:110px!important;min-height:110px!important;max-height:110px!important}.w-110,.width-110{width:110px!important;min-width:110px!important;max-width:110px!important}.h-115,.height-115{height:115px!important;min-height:115px!important;max-height:115px!important}.w-115,.width-115{width:115px!important;min-width:115px!important;max-width:115px!important}.h-120,.height-120{height:120px!important;min-height:120px!important;max-height:120px!important}.w-120,.width-120{width:120px!important;min-width:120px!important;max-width:120px!important}.h-125,.height-125{height:125px!important;min-height:125px!important;max-height:125px!important}.w-125,.width-125{width:125px!important;min-width:125px!important;max-width:125px!important}.h-130,.height-130{height:130px!important;min-height:130px!important;max-height:130px!important}.w-130,.width-130{width:130px!important;min-width:130px!important;max-width:130px!important}.h-135,.height-135{height:135px!important;min-height:135px!important;max-height:135px!important}.w-135,.width-135{width:135px!important;min-width:135px!important;max-width:135px!important}.h-140,.height-140{height:140px!important;min-height:140px!important;max-height:140px!important}.w-140,.width-140{width:140px!important;min-width:140px!important;max-width:140px!important}.h-145,.height-145{height:145px!important;min-height:145px!important;max-height:145px!important}.w-145,.width-145{width:145px!important;min-width:145px!important;max-width:145px!important}.h-150,.height-150{height:150px!important;min-height:150px!important;max-height:150px!important}.w-150,.width-150{width:150px!important;min-width:150px!important;max-width:150px!important}.h-155,.height-155{height:155px!important;min-height:155px!important;max-height:155px!important}.w-155,.width-155{width:155px!important;min-width:155px!important;max-width:155px!important}.h-160,.height-160{height:160px!important;min-height:160px!important;max-height:160px!important}.w-160,.width-160{width:160px!important;min-width:160px!important;max-width:160px!important}.h-165,.height-165{height:165px!important;min-height:165px!important;max-height:165px!important}.w-165,.width-165{width:165px!important;min-width:165px!important;max-width:165px!important}.h-170,.height-170{height:170px!important;min-height:170px!important;max-height:170px!important}.w-170,.width-170{width:170px!important;min-width:170px!important;max-width:170px!important}.h-175,.height-175{height:175px!important;min-height:175px!important;max-height:175px!important}.w-175,.width-175{width:175px!important;min-width:175px!important;max-width:175px!important}.h-180,.height-180{height:180px!important;min-height:180px!important;max-height:180px!important}.w-180,.width-180{width:180px!important;min-width:180px!important;max-width:180px!important}.h-185,.height-185{height:185px!important;min-height:185px!important;max-height:185px!important}.w-185,.width-185{width:185px!important;min-width:185px!important;max-width:185px!important}.h-190,.height-190{height:190px!important;min-height:190px!important;max-height:190px!important}.w-190,.width-190{width:190px!important;min-width:190px!important;max-width:190px!important}.h-195,.height-195{height:195px!important;min-height:195px!important;max-height:195px!important}.w-195,.width-195{width:195px!important;min-width:195px!important;max-width:195px!important}.h-200,.height-200{height:200px!important;min-height:200px!important;max-height:200px!important}.w-200,.width-200{width:200px!important;min-width:200px!important;max-width:200px!important}.h-205,.height-205{height:205px!important;min-height:205px!important;max-height:205px!important}.w-205,.width-205{width:205px!important;min-width:205px!important;max-width:205px!important}.h-210,.height-210{height:210px!important;min-height:210px!important;max-height:210px!important}.w-210,.width-210{width:210px!important;min-width:210px!important;max-width:210px!important}.h-215,.height-215{height:215px!important;min-height:215px!important;max-height:215px!important}.w-215,.width-215{width:215px!important;min-width:215px!important;max-width:215px!important}.h-220,.height-220{height:220px!important;min-height:220px!important;max-height:220px!important}.w-220,.width-220{width:220px!important;min-width:220px!important;max-width:220px!important}.h-225,.height-225{height:225px!important;min-height:225px!important;max-height:225px!important}.w-225,.width-225{width:225px!important;min-width:225px!important;max-width:225px!important}.h-230,.height-230{height:230px!important;min-height:230px!important;max-height:230px!important}.w-230,.width-230{width:230px!important;min-width:230px!important;max-width:230px!important}.h-235,.height-235{height:235px!important;min-height:235px!important;max-height:235px!important}.w-235,.width-235{width:235px!important;min-width:235px!important;max-width:235px!important}.h-240,.height-240{height:240px!important;min-height:240px!important;max-height:240px!important}.w-240,.width-240{width:240px!important;min-width:240px!important;max-width:240px!important}.h-245,.height-245{height:245px!important;min-height:245px!important;max-height:245px!important}.w-245,.width-245{width:245px!important;min-width:245px!important;max-width:245px!important}.h-250,.height-250{height:250px!important;min-height:250px!important;max-height:250px!important}.w-250,.width-250{width:250px!important;min-width:250px!important;max-width:250px!important}.h-255,.height-255{height:255px!important;min-height:255px!important;max-height:255px!important}.w-255,.width-255{width:255px!important;min-width:255px!important;max-width:255px!important}.h-260,.height-260{height:260px!important;min-height:260px!important;max-height:260px!important}.w-260,.width-260{width:260px!important;min-width:260px!important;max-width:260px!important}.h-265,.height-265{height:265px!important;min-height:265px!important;max-height:265px!important}.w-265,.width-265{width:265px!important;min-width:265px!important;max-width:265px!important}.h-270,.height-270{height:270px!important;min-height:270px!important;max-height:270px!important}.w-270,.width-270{width:270px!important;min-width:270px!important;max-width:270px!important}.h-275,.height-275{height:275px!important;min-height:275px!important;max-height:275px!important}.w-275,.width-275{width:275px!important;min-width:275px!important;max-width:275px!important}.h-280,.height-280{height:280px!important;min-height:280px!important;max-height:280px!important}.w-280,.width-280{width:280px!important;min-width:280px!important;max-width:280px!important}.h-285,.height-285{height:285px!important;min-height:285px!important;max-height:285px!important}.w-285,.width-285{width:285px!important;min-width:285px!important;max-width:285px!important}.h-290,.height-290{height:290px!important;min-height:290px!important;max-height:290px!important}.w-290,.width-290{width:290px!important;min-width:290px!important;max-width:290px!important}.h-295,.height-295{height:295px!important;min-height:295px!important;max-height:295px!important}.w-295,.width-295{width:295px!important;min-width:295px!important;max-width:295px!important}.h-300,.height-300{height:300px!important;min-height:300px!important;max-height:300px!important}.w-300,.width-300{width:300px!important;min-width:300px!important;max-width:300px!important}.h-305,.height-305{height:305px!important;min-height:305px!important;max-height:305px!important}.w-305,.width-305{width:305px!important;min-width:305px!important;max-width:305px!important}.h-310,.height-310{height:310px!important;min-height:310px!important;max-height:310px!important}.w-310,.width-310{width:310px!important;min-width:310px!important;max-width:310px!important}.h-315,.height-315{height:315px!important;min-height:315px!important;max-height:315px!important}.w-315,.width-315{width:315px!important;min-width:315px!important;max-width:315px!important}.h-320,.height-320{height:320px!important;min-height:320px!important;max-height:320px!important}.w-320,.width-320{width:320px!important;min-width:320px!important;max-width:320px!important}.h-325,.height-325{height:325px!important;min-height:325px!important;max-height:325px!important}.w-325,.width-325{width:325px!important;min-width:325px!important;max-width:325px!important}.h-330,.height-330{height:330px!important;min-height:330px!important;max-height:330px!important}.w-330,.width-330{width:330px!important;min-width:330px!important;max-width:330px!important}.h-335,.height-335{height:335px!important;min-height:335px!important;max-height:335px!important}.w-335,.width-335{width:335px!important;min-width:335px!important;max-width:335px!important}.h-340,.height-340{height:340px!important;min-height:340px!important;max-height:340px!important}.w-340,.width-340{width:340px!important;min-width:340px!important;max-width:340px!important}.h-345,.height-345{height:345px!important;min-height:345px!important;max-height:345px!important}.w-345,.width-345{width:345px!important;min-width:345px!important;max-width:345px!important}.h-350,.height-350{height:350px!important;min-height:350px!important;max-height:350px!important}.w-350,.width-350{width:350px!important;min-width:350px!important;max-width:350px!important}.h-355,.height-355{height:355px!important;min-height:355px!important;max-height:355px!important}.w-355,.width-355{width:355px!important;min-width:355px!important;max-width:355px!important}.h-360,.height-360{height:360px!important;min-height:360px!important;max-height:360px!important}.w-360,.width-360{width:360px!important;min-width:360px!important;max-width:360px!important}.h-365,.height-365{height:365px!important;min-height:365px!important;max-height:365px!important}.w-365,.width-365{width:365px!important;min-width:365px!important;max-width:365px!important}.h-370,.height-370{height:370px!important;min-height:370px!important;max-height:370px!important}.w-370,.width-370{width:370px!important;min-width:370px!important;max-width:370px!important}.h-375,.height-375{height:375px!important;min-height:375px!important;max-height:375px!important}.w-375,.width-375{width:375px!important;min-width:375px!important;max-width:375px!important}.h-380,.height-380{height:380px!important;min-height:380px!important;max-height:380px!important}.w-380,.width-380{width:380px!important;min-width:380px!important;max-width:380px!important}.h-385,.height-385{height:385px!important;min-height:385px!important;max-height:385px!important}.w-385,.width-385{width:385px!important;min-width:385px!important;max-width:385px!important}.h-390,.height-390{height:390px!important;min-height:390px!important;max-height:390px!important}.w-390,.width-390{width:390px!important;min-width:390px!important;max-width:390px!important}.h-395,.height-395{height:395px!important;min-height:395px!important;max-height:395px!important}.w-395,.width-395{width:395px!important;min-width:395px!important;max-width:395px!important}.h-400,.height-400{height:400px!important;min-height:400px!important;max-height:400px!important}.w-400,.width-400{width:400px!important;min-width:400px!important;max-width:400px!important}.h-405,.height-405{height:405px!important;min-height:405px!important;max-height:405px!important}.w-405,.width-405{width:405px!important;min-width:405px!important;max-width:405px!important}.h-410,.height-410{height:410px!important;min-height:410px!important;max-height:410px!important}.w-410,.width-410{width:410px!important;min-width:410px!important;max-width:410px!important}.h-415,.height-415{height:415px!important;min-height:415px!important;max-height:415px!important}.w-415,.width-415{width:415px!important;min-width:415px!important;max-width:415px!important}.h-420,.height-420{height:420px!important;min-height:420px!important;max-height:420px!important}.w-420,.width-420{width:420px!important;min-width:420px!important;max-width:420px!important}.h-425,.height-425{height:425px!important;min-height:425px!important;max-height:425px!important}.w-425,.width-425{width:425px!important;min-width:425px!important;max-width:425px!important}.h-430,.height-430{height:430px!important;min-height:430px!important;max-height:430px!important}.w-430,.width-430{width:430px!important;min-width:430px!important;max-width:430px!important}.h-435,.height-435{height:435px!important;min-height:435px!important;max-height:435px!important}.w-435,.width-435{width:435px!important;min-width:435px!important;max-width:435px!important}.h-440,.height-440{height:440px!important;min-height:440px!important;max-height:440px!important}.w-440,.width-440{width:440px!important;min-width:440px!important;max-width:440px!important}.h-445,.height-445{height:445px!important;min-height:445px!important;max-height:445px!important}.w-445,.width-445{width:445px!important;min-width:445px!important;max-width:445px!important}.h-450,.height-450{height:450px!important;min-height:450px!important;max-height:450px!important}.w-450,.width-450{width:450px!important;min-width:450px!important;max-width:450px!important}.h-455,.height-455{height:455px!important;min-height:455px!important;max-height:455px!important}.w-455,.width-455{width:455px!important;min-width:455px!important;max-width:455px!important}.h-460,.height-460{height:460px!important;min-height:460px!important;max-height:460px!important}.w-460,.width-460{width:460px!important;min-width:460px!important;max-width:460px!important}.h-465,.height-465{height:465px!important;min-height:465px!important;max-height:465px!important}.w-465,.width-465{width:465px!important;min-width:465px!important;max-width:465px!important}.h-470,.height-470{height:470px!important;min-height:470px!important;max-height:470px!important}.w-470,.width-470{width:470px!important;min-width:470px!important;max-width:470px!important}.h-475,.height-475{height:475px!important;min-height:475px!important;max-height:475px!important}.w-475,.width-475{width:475px!important;min-width:475px!important;max-width:475px!important}.h-480,.height-480{height:480px!important;min-height:480px!important;max-height:480px!important}.w-480,.width-480{width:480px!important;min-width:480px!important;max-width:480px!important}.h-485,.height-485{height:485px!important;min-height:485px!important;max-height:485px!important}.w-485,.width-485{width:485px!important;min-width:485px!important;max-width:485px!important}.h-490,.height-490{height:490px!important;min-height:490px!important;max-height:490px!important}.w-490,.width-490{width:490px!important;min-width:490px!important;max-width:490px!important}.h-495,.height-495{height:495px!important;min-height:495px!important;max-height:495px!important}.w-495,.width-495{width:495px!important;min-width:495px!important;max-width:495px!important}.h-500,.height-500{height:500px!important;min-height:500px!important;max-height:500px!important}.w-500,.width-500{width:500px!important;min-width:500px!important;max-width:500px!important}.h-8,.height-8{height:8px!important;min-height:8px!important;max-height:8px!important}.w-8,.width-8{width:8px!important;min-width:8px!important;max-width:8px!important}.h-16,.height-16{height:16px!important;min-height:16px!important;max-height:16px!important}.w-16,.width-16{width:16px!important;min-width:16px!important;max-width:16px!important}.h-24,.height-24{height:24px!important;min-height:24px!important;max-height:24px!important}.w-24,.width-24{width:24px!important;min-width:24px!important;max-width:24px!important}.h-32,.height-32{height:32px!important;min-height:32px!important;max-height:32px!important}.w-32,.width-32{width:32px!important;min-width:32px!important;max-width:32px!important}.h-48,.height-48{height:48px!important;min-height:48px!important;max-height:48px!important}.w-48,.width-48{width:48px!important;min-width:48px!important;max-width:48px!important}.h-56,.height-56{height:56px!important;min-height:56px!important;max-height:56px!important}.w-56,.width-56{width:56px!important;min-width:56px!important;max-width:56px!important}.h-64,.height-64{height:64px!important;min-height:64px!important;max-height:64px!important}.w-64,.width-64{width:64px!important;min-width:64px!important;max-width:64px!important}.h-72,.height-72{height:72px!important;min-height:72px!important;max-height:72px!important}.w-72,.width-72{width:72px!important;min-width:72px!important;max-width:72px!important}.h-88,.height-88{height:88px!important;min-height:88px!important;max-height:88px!important}.w-88,.width-88{width:88px!important;min-width:88px!important;max-width:88px!important}.h-96,.height-96{height:96px!important;min-height:96px!important;max-height:96px!important}.w-96,.width-96{width:96px!important;min-width:96px!important;max-width:96px!important}.h-104,.height-104{height:104px!important;min-height:104px!important;max-height:104px!important}.w-104,.width-104{width:104px!important;min-width:104px!important;max-width:104px!important}.h-112,.height-112{height:112px!important;min-height:112px!important;max-height:112px!important}.w-112,.width-112{width:112px!important;min-width:112px!important;max-width:112px!important}.h-128,.height-128{height:128px!important;min-height:128px!important;max-height:128px!important}.w-128,.width-128{width:128px!important;min-width:128px!important;max-width:128px!important}.h-136,.height-136{height:136px!important;min-height:136px!important;max-height:136px!important}.w-136,.width-136{width:136px!important;min-width:136px!important;max-width:136px!important}.h-144,.height-144{height:144px!important;min-height:144px!important;max-height:144px!important}.w-144,.width-144{width:144px!important;min-width:144px!important;max-width:144px!important}.h-152,.height-152{height:152px!important;min-height:152px!important;max-height:152px!important}.w-152,.width-152{width:152px!important;min-width:152px!important;max-width:152px!important}.h-168,.height-168{height:168px!important;min-height:168px!important;max-height:168px!important}.w-168,.width-168{width:168px!important;min-width:168px!important;max-width:168px!important}.h-176,.height-176{height:176px!important;min-height:176px!important;max-height:176px!important}.w-176,.width-176{width:176px!important;min-width:176px!important;max-width:176px!important}.h-184,.height-184{height:184px!important;min-height:184px!important;max-height:184px!important}.w-184,.width-184{width:184px!important;min-width:184px!important;max-width:184px!important}.h-192,.height-192{height:192px!important;min-height:192px!important;max-height:192px!important}.w-192,.width-192{width:192px!important;min-width:192px!important;max-width:192px!important}.h-208,.height-208{height:208px!important;min-height:208px!important;max-height:208px!important}.w-208,.width-208{width:208px!important;min-width:208px!important;max-width:208px!important}.h-216,.height-216{height:216px!important;min-height:216px!important;max-height:216px!important}.w-216,.width-216{width:216px!important;min-width:216px!important;max-width:216px!important}.h-224,.height-224{height:224px!important;min-height:224px!important;max-height:224px!important}.w-224,.width-224{width:224px!important;min-width:224px!important;max-width:224px!important}.h-232,.height-232{height:232px!important;min-height:232px!important;max-height:232px!important}.w-232,.width-232{width:232px!important;min-width:232px!important;max-width:232px!important}.h-248,.height-248{height:248px!important;min-height:248px!important;max-height:248px!important}.w-248,.width-248{width:248px!important;min-width:248px!important;max-width:248px!important}.h-256,.height-256{height:256px!important;min-height:256px!important;max-height:256px!important}.w-256,.width-256{width:256px!important;min-width:256px!important;max-width:256px!important}.h-264,.height-264{height:264px!important;min-height:264px!important;max-height:264px!important}.w-264,.width-264{width:264px!important;min-width:264px!important;max-width:264px!important}.h-272,.height-272{height:272px!important;min-height:272px!important;max-height:272px!important}.w-272,.width-272{width:272px!important;min-width:272px!important;max-width:272px!important}.h-288,.height-288{height:288px!important;min-height:288px!important;max-height:288px!important}.w-288,.width-288{width:288px!important;min-width:288px!important;max-width:288px!important}.h-296,.height-296{height:296px!important;min-height:296px!important;max-height:296px!important}.w-296,.width-296{width:296px!important;min-width:296px!important;max-width:296px!important}.h-304,.height-304{height:304px!important;min-height:304px!important;max-height:304px!important}.w-304,.width-304{width:304px!important;min-width:304px!important;max-width:304px!important}.h-312,.height-312{height:312px!important;min-height:312px!important;max-height:312px!important}.w-312,.width-312{width:312px!important;min-width:312px!important;max-width:312px!important}.h-328,.height-328{height:328px!important;min-height:328px!important;max-height:328px!important}.w-328,.width-328{width:328px!important;min-width:328px!important;max-width:328px!important}.h-336,.height-336{height:336px!important;min-height:336px!important;max-height:336px!important}.w-336,.width-336{width:336px!important;min-width:336px!important;max-width:336px!important}.h-344,.height-344{height:344px!important;min-height:344px!important;max-height:344px!important}.w-344,.width-344{width:344px!important;min-width:344px!important;max-width:344px!important}.h-352,.height-352{height:352px!important;min-height:352px!important;max-height:352px!important}.w-352,.width-352{width:352px!important;min-width:352px!important;max-width:352px!important}.h-368,.height-368{height:368px!important;min-height:368px!important;max-height:368px!important}.w-368,.width-368{width:368px!important;min-width:368px!important;max-width:368px!important}.h-376,.height-376{height:376px!important;min-height:376px!important;max-height:376px!important}.w-376,.width-376{width:376px!important;min-width:376px!important;max-width:376px!important}.h-384,.height-384{height:384px!important;min-height:384px!important;max-height:384px!important}.w-384,.width-384{width:384px!important;min-width:384px!important;max-width:384px!important}.h-392,.height-392{height:392px!important;min-height:392px!important;max-height:392px!important}.w-392,.width-392{width:392px!important;min-width:392px!important;max-width:392px!important}.h-408,.height-408{height:408px!important;min-height:408px!important;max-height:408px!important}.w-408,.width-408{width:408px!important;min-width:408px!important;max-width:408px!important}.h-416,.height-416{height:416px!important;min-height:416px!important;max-height:416px!important}.w-416,.width-416{width:416px!important;min-width:416px!important;max-width:416px!important}.h-424,.height-424{height:424px!important;min-height:424px!important;max-height:424px!important}.w-424,.width-424{width:424px!important;min-width:424px!important;max-width:424px!important}.h-432,.height-432{height:432px!important;min-height:432px!important;max-height:432px!important}.w-432,.width-432{width:432px!important;min-width:432px!important;max-width:432px!important}.h-448,.height-448{height:448px!important;min-height:448px!important;max-height:448px!important}.w-448,.width-448{width:448px!important;min-width:448px!important;max-width:448px!important}.h-456,.height-456{height:456px!important;min-height:456px!important;max-height:456px!important}.w-456,.width-456{width:456px!important;min-width:456px!important;max-width:456px!important}.h-464,.height-464{height:464px!important;min-height:464px!important;max-height:464px!important}.w-464,.width-464{width:464px!important;min-width:464px!important;max-width:464px!important}.h-472,.height-472{height:472px!important;min-height:472px!important;max-height:472px!important}.w-472,.width-472{width:472px!important;min-width:472px!important;max-width:472px!important}.h-488,.height-488{height:488px!important;min-height:488px!important;max-height:488px!important}.w-488,.width-488{width:488px!important;min-width:488px!important;max-width:488px!important}.h-496,.height-496{height:496px!important;min-height:496px!important;max-height:496px!important}.w-496,.width-496{width:496px!important;min-width:496px!important;max-width:496px!important}.h-504,.height-504{height:504px!important;min-height:504px!important;max-height:504px!important}.w-504,.width-504{width:504px!important;min-width:504px!important;max-width:504px!important}.h-512,.height-512{height:512px!important;min-height:512px!important;max-height:512px!important}.w-512,.width-512{width:512px!important;min-width:512px!important;max-width:512px!important}.h-528,.height-528{height:528px!important;min-height:528px!important;max-height:528px!important}.w-528,.width-528{width:528px!important;min-width:528px!important;max-width:528px!important}.h-536,.height-536{height:536px!important;min-height:536px!important;max-height:536px!important}.w-536,.width-536{width:536px!important;min-width:536px!important;max-width:536px!important}.h-544,.height-544{height:544px!important;min-height:544px!important;max-height:544px!important}.w-544,.width-544{width:544px!important;min-width:544px!important;max-width:544px!important}.h-552,.height-552{height:552px!important;min-height:552px!important;max-height:552px!important}.w-552,.width-552{width:552px!important;min-width:552px!important;max-width:552px!important}.h-568,.height-568{height:568px!important;min-height:568px!important;max-height:568px!important}.w-568,.width-568{width:568px!important;min-width:568px!important;max-width:568px!important}.h-576,.height-576{height:576px!important;min-height:576px!important;max-height:576px!important}.w-576,.width-576{width:576px!important;min-width:576px!important;max-width:576px!important}.h-584,.height-584{height:584px!important;min-height:584px!important;max-height:584px!important}.w-584,.width-584{width:584px!important;min-width:584px!important;max-width:584px!important}.h-592,.height-592{height:592px!important;min-height:592px!important;max-height:592px!important}.w-592,.width-592{width:592px!important;min-width:592px!important;max-width:592px!important}.h-608,.height-608{height:608px!important;min-height:608px!important;max-height:608px!important}.w-608,.width-608{width:608px!important;min-width:608px!important;max-width:608px!important}.h-616,.height-616{height:616px!important;min-height:616px!important;max-height:616px!important}.w-616,.width-616{width:616px!important;min-width:616px!important;max-width:616px!important}.h-624,.height-624{height:624px!important;min-height:624px!important;max-height:624px!important}.w-624,.width-624{width:624px!important;min-width:624px!important;max-width:624px!important}.h-632,.height-632{height:632px!important;min-height:632px!important;max-height:632px!important}.w-632,.width-632{width:632px!important;min-width:632px!important;max-width:632px!important}.h-648,.height-648{height:648px!important;min-height:648px!important;max-height:648px!important}.w-648,.width-648{width:648px!important;min-width:648px!important;max-width:648px!important}.h-656,.height-656{height:656px!important;min-height:656px!important;max-height:656px!important}.w-656,.width-656{width:656px!important;min-width:656px!important;max-width:656px!important}.h-664,.height-664{height:664px!important;min-height:664px!important;max-height:664px!important}.w-664,.width-664{width:664px!important;min-width:664px!important;max-width:664px!important}.h-672,.height-672{height:672px!important;min-height:672px!important;max-height:672px!important}.w-672,.width-672{width:672px!important;min-width:672px!important;max-width:672px!important}.h-688,.height-688{height:688px!important;min-height:688px!important;max-height:688px!important}.w-688,.width-688{width:688px!important;min-width:688px!important;max-width:688px!important}.h-696,.height-696{height:696px!important;min-height:696px!important;max-height:696px!important}.w-696,.width-696{width:696px!important;min-width:696px!important;max-width:696px!important}.h-704,.height-704{height:704px!important;min-height:704px!important;max-height:704px!important}.w-704,.width-704{width:704px!important;min-width:704px!important;max-width:704px!important}.h-712,.height-712{height:712px!important;min-height:712px!important;max-height:712px!important}.w-712,.width-712{width:712px!important;min-width:712px!important;max-width:712px!important}.h-728,.height-728{height:728px!important;min-height:728px!important;max-height:728px!important}.w-728,.width-728{width:728px!important;min-width:728px!important;max-width:728px!important}.h-736,.height-736{height:736px!important;min-height:736px!important;max-height:736px!important}.w-736,.width-736{width:736px!important;min-width:736px!important;max-width:736px!important}.h-744,.height-744{height:744px!important;min-height:744px!important;max-height:744px!important}.w-744,.width-744{width:744px!important;min-width:744px!important;max-width:744px!important}.h-752,.height-752{height:752px!important;min-height:752px!important;max-height:752px!important}.w-752,.width-752{width:752px!important;min-width:752px!important;max-width:752px!important}.h-768,.height-768{height:768px!important;min-height:768px!important;max-height:768px!important}.w-768,.width-768{width:768px!important;min-width:768px!important;max-width:768px!important}.h-776,.height-776{height:776px!important;min-height:776px!important;max-height:776px!important}.w-776,.width-776{width:776px!important;min-width:776px!important;max-width:776px!important}.h-784,.height-784{height:784px!important;min-height:784px!important;max-height:784px!important}.w-784,.width-784{width:784px!important;min-width:784px!important;max-width:784px!important}.h-792,.height-792{height:792px!important;min-height:792px!important;max-height:792px!important}.w-792,.width-792{width:792px!important;min-width:792px!important;max-width:792px!important}.b,.border{border:1px solid rgba(0,0,0,.12)}.border-top,.bt{border-top:1px solid rgba(0,0,0,.12)}.border-right,.br{border-right:1px solid rgba(0,0,0,.12)}.bb,.border-bottom{border-bottom:1px solid rgba(0,0,0,.12)}.bl,.border-left{border-left:1px solid rgba(0,0,0,.12)}.bh,.border-horizontal{border-left:1px solid rgba(0,0,0,.12);border-right:1px solid rgba(0,0,0,.12)}.border-vertical,.bv{border-top:1px solid rgba(0,0,0,.12);border-bottom:1px solid rgba(0,0,0,.12)}.brad-1{border-radius:1px}.brad-2{border-radius:2px}.brad-3{border-radius:3px}.brad-4{border-radius:4px}.brad-5{border-radius:5px}.brad-6{border-radius:6px}.brad-7{border-radius:7px}.brad-8{border-radius:8px}.brad-9{border-radius:9px}.brad-10{border-radius:10px}.brad-11{border-radius:11px}.brad-12{border-radius:12px}@media all{.page-break{display:none}}@media print{.page-break{display:block;break-after:always;page-break-after:always}#main #vertical-navigation{display:none}#main #toolbar{display:none}#main #quick-panel{display:none}#main #content{position:relative!important;top:0!important;right:0!important;bottom:0!important;left:0!important;background:0 0!important}ms-theme-options{display:none}.ps-scrollbar-x-rail,.ps-scrollbar-y-rail{display:none!important}.printable{overflow:visible!important}.printable .template-layout{display:inline!important}}.advanced-search-container{border-bottom:1px rgba(0,0,0,.12) solid}.advanced-search-conditions{border-bottom:1px rgba(0,0,0,.12) solid;padding:4px 0}.advanced-search-conditions .errors{font-size:12px;color:#dd2c00;margin-top:10px}.advanced-search-conditions .advanced-search-chips md-chips-wrap{box-shadow:none}.advanced-search-conditions .advanced-search-chips md-chip{position:relative}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-content md-chip-template span p.filter-text{display:inline-block;margin:0}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container{position:absolute;right:4px;top:4px;margin-right:0;height:24px}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container button.remove-filter{position:relative;height:24px;width:24px;line-height:30px;text-align:center;border-radius:50%;border:none;box-shadow:none;padding:0;margin:0;transition:background .15s linear;display:block}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container button.remove-filter md-icon{position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0);color:#616161}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container button.remove-filter md-icon:focus,.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container button.remove-filter md-icon:hover{color:rgba(255,0,0,.8)}.advanced-search-conditions .advanced-search-chips md-chips-wrap.md-removable md-chip md-chip-template{padding-right:5px}.advanced-search-bar{padding:10px 0}.advanced-search-bar md-input-container.no-errors{font-size:12px;transition:0s none;-webkit-transition:0s none;animation:0s none;-webkit-animation:0s none}.advanced-search-bar md-input-container.no-errors input{font-family:Arial Unicode MS,Arial,Helvetica}.advanced-search-bar md-input-container.no-errors .md-errors-spacer{min-height:0}md-option div div.operators-list{display:table}md-option div div.operators-list span{display:table-cell}md-option div div.operators-list span.operator-symbol{display:table-cell;font-size:14px;width:30px}.advanced-search-bar mdp-date-picker button{margin:0!important}.advanced-search-bar mdp-date-picker md-input-container{flex:1;margin:0}.advanced-search-bar mdp-date-picker md-input-container label{font-size:12px}.advanced-search-bar mdp-date-picker md-input-container .md-errors-spacer{min-height:0}.advanced-search-bar div md-date-range{font-size:12px;margin-left:10px}.advanced-search-bar div.autocomplete-input md-icon{margin:8px 8px 8px 0}.advanced-search-bar div.autocomplete-input md-autocomplete{font-size:12px!important}.advanced-search-bar div.autocomplete-input md-autocomplete md-autocomplete-wrap{height:0}.advanced-search-bar div.autocomplete-input md-autocomplete md-autocomplete-wrap md-input-container{margin:0}.advanced-search-bar div.autocomplete-input md-autocomplete md-autocomplete-wrap md-input-container input[type=search]{padding:0!important}.advanced-search-bar div.autocomplete-input md-autocomplete md-autocomplete-wrap md-input-container div.md-errors-spacer{min-height:0}md-toolbar.advanced-search-dialog-header{background-image:url(/assets/images/backgrounds/header-bg.png);background-position:top}.md-autocomplete-suggestions-container li .highlight,.md-autocomplete-suggestions-container.md-default-theme li .highlight{color:#ca1d1d;font-weight:700}.chip-disabled{opacity:.4}.ms-card{display:flex;flex-direction:row;padding:8px}.ms-card .ms-card-content-wrapper{position:relative;overflow:hidden;width:100%;max-width:400px;border-radius:2px;background:#fff;box-shadow:0 3px 1px -2px rgba(0,0,0,.14),0 2px 2px 0 rgba(0,0,0,.098),0 1px 5px 0 rgba(0,0,0,.084)}.ms-card .template-1 .media .image{width:100%;border-radius:2px 2px 0 0}.ms-card .template-10 .media{width:80px;min-width:80px;max-width:80px}.ms-card .template-2 .header .avatar .image{display:block;width:40px;height:40px;border-radius:20px}.ms-card .template-2 .media .image{width:100%}.ms-card .template-4 .info{position:absolute;right:0;bottom:0;left:0;z-index:2;background:rgba(0,0,0,.54)}.ms-card .template-4 .media{z-index:1}.ms-card .template-4 .media .image{width:100%}.ms-card .template-5 .media{width:80px;min-width:80px;max-width:80px}.ms-card .template-5 .info,.ms-card .template-5 .media{-ms-flex:0 1 auto}.ms-card .template-8 .media .image{width:100%;border-radius:2px 2px 0 0}.ms-card .template-9 .header .avatar .image{display:block;width:40px;height:40px;border-radius:20px}.ms-card .template-9 .media .image{width:100%}md-list-item .md-list-item-text p.ms-dual-multiselect-line-xs{font-size:10px!important;padding-top:5px}md-list-item md-icon.hidden{visibility:hidden}md-icon.add-disabled{cursor:default!important;opacity:.4}md-list-item.read-only-mode{cursor:none!important}.ms-form-wizard{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-form-wizard md-tabs md-tabs-wrapper{box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas{height:72px}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper{height:72px}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item{opacity:1!important;padding:24px}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item:before{content:'';display:block;position:absolute;top:50%;left:0;right:50%;border-bottom:1px solid rgba(0,0,0,.12);z-index:8}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item:after{content:'';display:block;position:absolute;top:50%;left:50%;right:0;border-bottom:1px solid rgba(0,0,0,.12);z-index:8}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item:first-of-type:before{display:none}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item:last-of-type:after{display:none}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item.md-disabled .ms-form-wizard-step-label .ms-form-wizard-step-number{background:rgba(0,0,0,.12)!important}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item .md-ripple-container{z-index:11}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-ink-bar{display:none!important}.ms-form-wizard .ms-form-wizard-step-label{display:inline-block;position:relative;background:#fff;z-index:10;padding:0 16px;line-height:24px}.ms-form-wizard .ms-form-wizard-step-label .ms-form-wizard-step-number{display:inline-block;vertical-align:middle;width:24px;height:24px;line-height:24px;font-size:14px;margin-right:12px;border-radius:50%;color:#fff!important}.ms-form-wizard .ms-form-wizard-step-label .ms-form-wizard-step-number i{line-height:24px!important}.ms-form-wizard .ms-form-wizard-step-label .ms-form-wizard-step-text{display:inline-block;vertical-align:middle;position:relative;line-height:24px}.ms-form-wizard .ms-form-wizard-form{padding:24px 16px}.ms-form-wizard .navigation{padding:16px}.ms-form-wizard .navigation .steps{display:flex;align-items:center;justify-content:center;padding:0 16px}.ms-form-wizard .navigation .steps span{width:5px;height:5px;margin:0 4px;border-radius:50%}.ms-form-wizard .navigation .steps span:not(.md-accent-bg){background:rgba(0,0,0,.12)}.ms-form-wizard .navigation .steps span.selected{width:8px;height:8px}ms-info-bar{display:block;position:relative;width:100%;height:44px;background-color:#e91e63;z-index:99998;box-shadow:0 1px 5px 0 rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.12)}ms-info-bar #ms-info-bar-message{padding:8px 16px;line-height:28px;font-size:14px}ms-info-bar #ms-info-bar-message a{overflow:hidden;height:48px;color:#fff}ms-masonry{width:100%;display:block}ms-masonry [ms-masonry-item],ms-masonry ms-masonry-item{transition:transform .3s ease;position:absolute;transform:translate3d(50vw,100vh,0)}ms-material-color-picker md-menu .md-button{font-size:12px}md-menu-content.ms-material-color-picker-menu-content{width:208px;max-width:208px;min-width:208px;padding:0;overflow:hidden}md-menu-content.ms-material-color-picker-menu-content header{height:48px;text-transform:uppercase}md-menu-content.ms-material-color-picker-menu-content header .md-button{display:flex;margin:0}md-menu-content.ms-material-color-picker-menu-content header>span{line-height:13px}md-menu-content.ms-material-color-picker-menu-content .colors{position:relative;width:208px;min-height:258px;height:258px;padding:4px}md-menu-content.ms-material-color-picker-menu-content .colors .color{position:relative;width:46px;height:46px;margin:2px;border-radius:0;cursor:pointer}md-menu-content.ms-material-color-picker-menu-content .colors .color .label{padding:2px;font-size:10px}md-menu-content.ms-material-color-picker-menu-content .colors .color .icon-check{position:absolute;top:2px;right:2px;font-size:16px;opacity:.7}ms-nav{display:block;position:relative;color:rgba(255,255,255,.7);user-select:none;z-index:70}ms-nav ms-nav-item{display:block;position:relative;line-height:48px}ms-nav ms-nav-item.ms-nav-title{line-height:32px;font-size:12px;font-weight:500;margin-top:8px;padding:0 24px;width:100%;color:rgba(255,255,255,.3);text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}ms-nav ms-nav-item .ms-nav-button{display:flex;align-self:flex-start;align-items:center;position:relative;cursor:pointer;padding:0 48px 0 24px;color:rgba(255,255,255,.7);text-decoration:none}ms-nav ms-nav-item .ms-nav-button:not(.active):hover{background:rgba(0,0,0,.1);text-decoration:none}ms-nav ms-nav-item .ms-nav-button .ms-nav-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:opacity .2s ease-in-out .1s}ms-nav ms-nav-item .ms-nav-button .arrow{position:absolute;top:16px;right:24px;margin:0;transition:transform .3s ease-in-out,opacity .2s ease-in-out .1s}ms-nav ms-nav-item .ms-nav-button .ms-nav-badge{position:absolute;top:50%;right:24px;min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transform:translateY(-50%);transition:opacity .2s ease-in-out .1s}ms-nav ms-nav-item .ms-nav-button.active{color:#fff!important}ms-nav ms-nav-item .ms-nav-button.active .ms-nav-badge{background:#fff!important;color:rgba(0,0,0,.87)!important}ms-nav ms-nav-item .ms-nav-button.active i{color:#fff}ms-nav ms-nav-item i{color:rgba(255,255,255,.7);margin:0 16px 0 0}ms-nav .ms-nav-toggle ms-nav-toggle-items{display:none;overflow:hidden}ms-nav .ms-nav-toggle ms-nav-toggle-items.expand-animation{transition:height .35s cubic-bezier(.25,.46,.45,.94)}ms-nav .ms-nav-toggle ms-nav-toggle-items.collapse-animation{transition:height .35s cubic-bezier(.25,.46,.45,.94)}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:58px}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:68px}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:78px}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:88px}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:98px}ms-nav .ms-nav-toggle.active>.ms-nav-button{color:#fff}ms-nav .ms-nav-toggle.active>.ms-nav-button a,ms-nav .ms-nav-toggle.active>.ms-nav-button md-icon{color:#fff}ms-nav .ms-nav-toggle[collapsed=false]>.ms-nav-button>.arrow{transform:rotate(90deg)}ms-nav>.ms-nav-toggle[collapsed=false]{background-color:rgba(0,0,0,.12)}@media only screen and (min-width:1280px){.ms-nav-folded #ms-nav-fold-close-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:0 0;z-index:998}.ms-nav-folded #ms-nav-fold-open-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:999}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item.ms-nav-title{height:32px}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item.ms-nav-title:before{content:'';display:block;position:relative;top:12px;width:16px;border-top:1px solid rgba(255,255,255,.12)}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item.ms-nav-title span{display:none}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item .ms-nav-button{height:48px}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item .ms-nav-button>.arrow,.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item .ms-nav-button>.ms-nav-badge,.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item .ms-nav-button>.ms-nav-label{opacity:0;visibility:hidden}}.ms-navigation{display:block;position:relative;color:rgba(255,255,255,.7);user-select:none}.ms-navigation li,.ms-navigation ul{padding:0;margin:0}.ms-navigation ul{display:block;overflow:hidden}.ms-navigation ul li{position:relative}.ms-navigation ul li.collapsed ul{display:none}.ms-navigation .animate-height{transition:height .25s cubic-bezier(.25,.46,.45,.94)}.ms-navigation .ms-navigation-node .ms-navigation-item{display:block;position:relative;cursor:pointer;color:rgba(255,255,255,.7)}.ms-navigation .ms-navigation-node .ms-navigation-item:hover{background:rgba(0,0,0,.1)}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button{display:flex;position:relative;width:100%;height:48px;line-height:48px;flex-direction:row;justify-content:flex-start;align-items:center;padding-right:16px;color:rgba(255,255,255,.7);text-decoration:none;white-space:nowrap;overflow:hidden}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button .icon{color:rgba(255,255,255,.7);margin:0 16px 0 0}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button span{white-space:nowrap;overflow:hidden;opacity:1;transition:opacity .25s ease-in-out .1s}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button a{white-space:nowrap;overflow:hidden;opacity:1;transition:opacity .25s ease-in-out .1s}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button .arrow{margin:0;opacity:1;transition:transform .3s ease-in-out,opacity .25s ease-in-out .1s}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button .badge{position:absolute;top:50%;right:16px;min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transform:translateY(-50%);transition:opacity .2s ease-in-out .1s}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button.active{color:#fff}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button.active .icon{color:#fff}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button.active .badge{background:#fff!important;color:rgba(0,0,0,.87)!important}.ms-navigation .ms-navigation-node:not(.collapsed)>.ms-navigation-item>.ms-navigation-button .arrow{transform:rotate(90deg)}.ms-navigation .ms-navigation-node.group>.ms-navigation-item{font-size:12px;font-weight:500;margin-top:8px;cursor:auto;background:0 0!important;text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ms-navigation .ms-navigation-node.group>.ms-navigation-item>.ms-navigation-button{height:32px;line-height:32px;color:rgba(255,255,255,.3)}.ms-navigation .ms-navigation-node:not(.group).has-children:not(.collapsed){background-color:rgba(0,0,0,.12)}.ms-navigation .ms-navigation-node:not(.group).has-children.collapsing{background-color:rgba(0,0,0,.12)}.ms-navigation .ms-navigation-node:not(.group).has-children .has-children:not(.collapsed){background:0 0}.ms-navigation li .ms-navigation-button{padding-left:24px}.ms-navigation li li .ms-navigation-button{padding-left:56px}.ms-navigation li li li .ms-navigation-button{padding-left:72px}.ms-navigation li li li li .ms-navigation-button{padding-left:88px}.ms-navigation li li li li li .ms-navigation-button{padding-left:104px}.ms-navigation li.group .ms-navigation-button{padding-left:24px}.ms-navigation li.group li .ms-navigation-button{padding-left:24px}.ms-navigation li.group li li .ms-navigation-button{padding-left:56px}.ms-navigation li.group li li li .ms-navigation-button{padding-left:72px}.ms-navigation li.group li li li li .ms-navigation-button{padding-left:88px}#horizontal-navigation{height:64px;min-height:64px;max-height:64px;background:#fff;z-index:54}#horizontal-navigation .ms-navigation-horizontal{display:flex;position:relative;user-select:none}#horizontal-navigation .ms-navigation-horizontal li,#horizontal-navigation .ms-navigation-horizontal ul{padding:0;margin:0;list-style:none}#horizontal-navigation .ms-navigation-horizontal .horizontal{display:flex;flex:1}#horizontal-navigation .ms-navigation-horizontal .horizontal li{position:relative;cursor:pointer}#horizontal-navigation .ms-navigation-horizontal .horizontal li:not(.active):hover{background:rgba(0,0,0,.12)}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button{display:block;float:left;padding:12px 14px}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button .arrow{display:none}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button.active{background:0 0;border-bottom:2px solid}#horizontal-navigation .ms-navigation-horizontal .horizontal>li:last-child{margin-right:0}#horizontal-navigation .ms-navigation-horizontal .horizontal>li li .ms-navigation-horizontal-item .ms-navigation-horizontal-button.active{color:#fff!important}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children ul{display:none;position:absolute;background:#fff;z-index:999;min-width:200px;box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12);top:0;left:100%}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children:hover>ul{display:block}#horizontal-navigation .ms-navigation-horizontal .horizontal>.has-children>ul{top:100%;left:0}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button{display:flex;align-items:center;width:100%;color:rgba(0,0,0,.87);white-space:nowrap;padding:14px 16px;text-decoration:none}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button .icon{color:rgba(0,0,0,.54);margin-right:8px}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button .badge{min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transition:opacity .2s ease-in-out .1s}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button .arrow{margin-left:8px}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button.active .badge{background:#fff!important;color:rgba(0,0,0,.87)!important}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button.active .icon{color:#fff}@media only screen and (min-width:960px){body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .animate-height{transition:none}body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node .ms-navigation-item .ms-navigation-button .icon{margin:0}body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node .ms-navigation-item .ms-navigation-button .arrow,body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node .ms-navigation-item .ms-navigation-button .badge,body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node .ms-navigation-item .ms-navigation-button .title{opacity:0;visibility:hidden}body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node.group>.ms-navigation-item .ms-navigation-button:before{content:'';display:block;position:relative;width:16px;border-top:1px solid rgba(255,255,255,.12)}body.ms-navigation-folded:not(.ms-navigation-folded-open) #ms-navigation-fold-expander{position:absolute;top:0;right:0;bottom:0;left:0;z-index:999}body.ms-navigation-folded #ms-navigation-fold-collapser{position:absolute;top:0;right:0;bottom:0;left:0;z-index:59}}@media only screen and (max-width:960px){body.ms-navigation-horizontal-mobile-menu-active #horizontal-navigation .navigation-toggle{height:64px;margin-right:16px}body.ms-navigation-horizontal-mobile-menu-active #horizontal-navigation .navigation-toggle .md-button{margin:0;width:64px;height:64px}body.ms-navigation-horizontal-mobile-menu-active #horizontal-navigation .ms-navigation-horizontal{display:block!important;background:#fff}#horizontal-navigation{z-index:60}#horizontal-navigation .ms-navigation-horizontal{position:absolute;display:none;top:0;right:0;bottom:0;left:0;padding:0 0 16px 0;z-index:9998;overflow-x:hidden;overflow-y:scroll}#horizontal-navigation .ms-navigation-horizontal .horizontal{flex-direction:column;min-height:100%;width:100%}#horizontal-navigation .ms-navigation-horizontal .horizontal li:not(.active):hover{background:0 0}#horizontal-navigation .ms-navigation-horizontal .horizontal li:not(.active) .ms-navigation-horizontal-item{margin:4px}#horizontal-navigation .ms-navigation-horizontal .horizontal li:not(.active) .ms-navigation-horizontal-item:hover{background:rgba(0,0,0,.12)}#horizontal-navigation .ms-navigation-horizontal .horizontal>li{padding:0 12px}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button{display:flex;float:none}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button .arrow{display:block}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children ul{position:relative;top:0;left:0;box-shadow:none}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children:hover>ul{display:none}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children .expanded>.ms-navigation-horizontal-button .arrow{transform:rotate(90deg)}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children .expanded+ul{display:block;margin-left:16px}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item{min-height:48px;height:48px}}md-dialog.md-phonebar-dialog{max-width:720px;width:720px}md-dialog.md-phonebar-dialog md-dialog-content{display:block;position:relative;height:500px}md-dialog.md-phonebar-dialog md-toolbar .title{font-size:17px}md-dialog.md-phonebar-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.md-phonebar-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}md-dialog.md-phonebar-dialog md-tabs{position:static}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}.ms-phonebar{height:64px;font-size:13px}.ms-phonebar .phonebar-container{height:64px;padding:0}.ms-phonebar .phonebar-container .quantity-indicator{display:inline-block;vertical-align:middle;width:8px;height:8px;border-radius:4px;margin-right:5px;margin-left:5px}.ms-phonebar .phonebar-container .sessions{overflow-x:auto}.ms-phonebar .phonebar-container .session{border-radius:3px;border:1px solid #dcdcdc;margin-left:3px;cursor:pointer}.ms-phonebar .phonebar-container .session-info{padding-left:3px;padding-right:3px;color:grey}.ms-phonebar .phonebar-container .session-button{border:1px solid grey;margin:3px}.ms-phonebar .phonebar-container .button-bar{border:1px solid grey}.ms-phonebar .phonebar-container .num-pad{position:fixed;border-radius:3px;border:1px solid #9e9e9e;top:80px;left:80px}.ms-phonebar .phonebar-container .num-pad-logo{height:40px;width:42px}.ms-phonebar .phonebar-container p{margin:0;padding:0 0 10px 0;line-height:10px;font-size:10px}.ms-phonebar .phonebar-container .span4{width:50px;float:left;margin:8px}.ms-phonebar .phonebar-container .num{border:1px solid #9e9e9e;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;height:50px;background-color:#fff;color:#333;cursor:pointer}.ms-phonebar .phonebar-container .num:hover{background-color:#9e9e9e;color:#fff;transition-property:background-color .2s linear 0s;-moz-transition:background-color .2s linear 0s;-webkit-transition:background-color .2s linear 0s;-o-transition:background-color .2s linear 0s}.ms-phonebar .phonebar-container .txt{font-size:20px;text-align:center;margin-top:3px;font-family:Lato,sans-serif;color:#333}.ms-phonebar .phonebar-container .small{font-size:15px}.ms-phonebar .phonebar-container .angucomplete-dropdown{top:45px;overflow-y:auto;max-height:200px}.ms-phonebar .phonebar-container .highlight{color:red}.ms-phonebar .phonebar-container .input-number{margin-left:5px;padding:8px;border:1px solid #ccc;border-radius:3px;box-sizing:border-box}.ms-phonebar .phonebar-container .phonebar{position:relative}.ms-phonebar .phonebar-container .phonebar>div{height:64px;min-width:44px}.ms-phonebar .phonebar-container .phonebar>div.dragging{cursor:grabbing}.ms-phonebar .phonebar-container .phonebar>div.dragging .md-ripple-container{display:none}.ms-phonebar .phonebar-container .phonebar>div.ghost .shortcut{opacity:.27}.ms-phonebar .phonebar-container.mobile-bar-active{position:absolute;top:0;right:0;bottom:0;left:0;background:#fff;z-index:99;max-width:none!important}.ms-phonebar .phonebar-container.mobile-bar-active .phonebar,.ms-phonebar .phonebar-container.mobile-bar-active .toggle-mobile-menu{display:flex!important}.ms-phonebar .phonebar-container.mobile-bar-active .toggle-mobile-menu{margin-left:14px}.ms-phonebar .phonebar-container.mobile-bar-active>div{border-right:1px solid rgba(0,0,0,.12)}.quick-filter-container md-select .md-select-value.md-select-placeholder{color:inherit}.quick-filter-container md-select[multiple] md-select-value>:first-child{max-width:250px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}.ms-responsive-table-wrapper{overflow-x:auto;overflow-y:hidden}.ms-scroll{overflow:hidden!important}.ms-search-bar{height:64px;font-size:13px}.ms-search-bar .ms-search-bar-collapser,.ms-search-bar .ms-search-bar-expander{cursor:pointer;padding:0 20px;margin:0;width:64px!important;height:64px!important;line-height:64px!important}.ms-search-bar .ms-search-bar-loader{width:64px!important;height:64px!important;line-height:64px!important}.ms-search-bar .ms-search-button-expanded{pointer-events:none}.ms-search-bar .ms-search-bar-collapser{display:none}.ms-search-bar input{background-color:transparent;font-size:16px}.ms-search-bar .ms-search-bar-results{position:absolute;top:64px;left:0;right:0;overflow-x:hidden;overflow-y:scroll;background:#fff;max-height:300px;box-shadow:0 1px 8px 0 rgba(0,0,0,.2),0 3px 4px 0 rgba(0,0,0,.14),0 3px 3px -2px rgba(0,0,0,.12)}.ms-search-bar .ms-search-bar-results .no-results{font-size:18px;padding:16px;color:rgba(0,0,0,.54)}.ms-search-bar .ms-search-bar-results .result{position:relative;height:56px;min-height:56px;max-height:56px;padding:16px;cursor:pointer}.ms-search-bar .ms-search-bar-results .result.selected{background:rgba(0,0,0,.07)}.ms-search-bar .ms-search-bar-results .result .icon-container{min-width:32px;margin-right:8px}.ms-search-bar .ms-search-bar-results .result .icon-container .square{width:6px;height:6px}.ms-search-bar .ms-search-bar-results .result .title{font-size:16px}.ms-search-bar .ms-search-bar-results .result .description{padding-top:6px;font-size:14px}.ms-search-bar.expanded{position:absolute;top:0;right:0;bottom:0;left:0;background:#fff;z-index:10}.ms-search-bar.expanded #ms-search-bar-input{display:block}.ms-search-bar.expanded .ms-search-bar-collapser{display:block}.ms-search-bar.down{top:64px;border-bottom:1px rgba(0,0,0,.12) solid}.ms-search-bar[disabled] input{pointer-events:none}body.ms-search-bar-expanded #toolbar{z-index:999!important}@media screen and (max-width:960px){.ms-search-bar-label{padding:0 8px 0 12px}}.ms-shortcuts{height:64px;font-size:13px}.ms-shortcuts .shortcuts-container{height:64px;padding:0 8px;max-width:400px}.ms-shortcuts .shortcuts-container .shortcuts{position:relative;overflow-x:scroll}.ms-shortcuts .shortcuts-container .shortcuts>div{height:64px;min-width:44px}.ms-shortcuts .shortcuts-container .shortcuts>div.dragging{cursor:grabbing}.ms-shortcuts .shortcuts-container .shortcuts>div.dragging .md-ripple-container{display:none}.ms-shortcuts .shortcuts-container .shortcuts>div.ghost .shortcut{opacity:.27}.ms-shortcuts .shortcuts-container .shortcuts>div .shortcut{margin:2px}.ms-shortcuts .shortcuts-container .shortcuts>div .shortcut .first-letter{display:inline-block;vertical-align:middle;font-size:20px;text-transform:uppercase;color:rgba(0,0,0,.54)}.ms-shortcuts .shortcuts-container .shortcut-menu{margin:0}.ms-shortcuts .shortcuts-container.mobile-bar-active{position:absolute;top:0;right:0;bottom:0;left:0;background:#fff;z-index:99;max-width:none!important}.ms-shortcuts .shortcuts-container.mobile-bar-active .shortcut-menu,.ms-shortcuts .shortcuts-container.mobile-bar-active .shortcuts,.ms-shortcuts .shortcuts-container.mobile-bar-active .toggle-mobile-menu{display:flex!important}.ms-shortcuts .shortcuts-container.mobile-bar-active .toggle-mobile-menu{margin-left:14px}.ms-shortcuts .shortcuts-container.mobile-bar-active>div{border-right:1px solid rgba(0,0,0,.12)}#ms-shortcut-add-menu{position:relative;width:240px;min-width:240px;max-width:240px}#ms-shortcut-add-menu .add-shortcut-button{width:48px;height:48px;padding:0 12px;margin:0}#ms-shortcut-add-menu .shortcut-search{height:45px;padding:0 8px}#ms-shortcut-add-menu .shortcut-search .search-icon{width:40px;height:40px;line-height:48px}#ms-shortcut-add-menu .shortcut-search .shortcut-loader{padding:10px}#ms-shortcut-add-menu .shortcut-search input{padding:8px}#ms-shortcut-add-menu .results{position:relative;overflow-y:scroll;max-height:233px;margin-top:8px;padding-top:8px;border-top:1px solid rgba(0,0,0,.12)}#ms-shortcut-add-menu .results .no-results{font-size:18px;padding:16px;color:rgba(0,0,0,.54)}#ms-shortcut-add-menu .results .result{position:relative;min-height:56px;padding:16px;cursor:pointer}#ms-shortcut-add-menu .results .result.selected{background:rgba(0,0,0,.07)}#ms-shortcut-add-menu .results .result .icon-container{min-width:32px;margin-right:8px}#ms-shortcut-add-menu .results .result .icon-container .square{width:6px;height:6px}#ms-shortcut-add-menu .results .result .title{font-size:16px}#ms-shortcut-add-menu .results .result .description{padding-top:6px;font-size:14px}#splash-screen{display:block;position:absolute;top:0;left:0;right:0;bottom:0;background-color:#3c4252;z-index:99999}#splash-screen.ng-leave{opacity:1;transition:all linear .2s}#splash-screen.ng-leave-active{opacity:0}#splash-screen .center{display:block;width:100%;position:absolute;top:50%;transform:translateY(-50%)}#splash-screen .logo{width:96px;height:96px;line-height:96px;margin:0 auto;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:56px;text-align:center;border-radius:2px;background-color:#039be5;color:#fff;box-shadow:0 2px 14px 0 rgba(0,0,0,.22)}#splash-screen .spinner-wrapper{display:block;position:relative;width:100%;min-height:100px;height:100px}#splash-screen .spinner-wrapper .spinner{position:absolute;overflow:hidden;left:50%;margin-left:-50px;animation:outer-rotate 2.91667s linear infinite}#splash-screen .spinner-wrapper .spinner .inner{width:100px;height:100px;position:relative;animation:sporadic-rotate 5.25s cubic-bezier(.35,0,.25,1) infinite}#splash-screen .spinner-wrapper .spinner .inner .gap{position:absolute;left:49px;right:49px;top:0;bottom:0;border-top:10px solid;box-sizing:border-box}#splash-screen .spinner-wrapper .spinner .inner .left,#splash-screen .spinner-wrapper .spinner .inner .right{position:absolute;top:0;height:100px;width:50px;overflow:hidden}#splash-screen .spinner-wrapper .spinner .inner .left .half-circle,#splash-screen .spinner-wrapper .spinner .inner .right .half-circle{position:absolute;top:0;width:100px;height:100px;box-sizing:border-box;border:10px solid #4285f4;border-bottom-color:transparent;border-radius:50%}#splash-screen .spinner-wrapper .spinner .inner .left{left:0}#splash-screen .spinner-wrapper .spinner .inner .left .half-circle{left:0;border-right-color:transparent;animation:left-wobble 1.3125s cubic-bezier(.35,0,.25,1) infinite;-webkit-animation:left-wobble 1.3125s cubic-bezier(.35,0,.25,1) infinite}#splash-screen .spinner-wrapper .spinner .inner .right{right:0}#splash-screen .spinner-wrapper .spinner .inner .right .half-circle{right:0;border-left-color:transparent;animation:right-wobble 1.3125s cubic-bezier(.35,0,.25,1) infinite;-webkit-animation:right-wobble 1.3125s cubic-bezier(.35,0,.25,1) infinite}@keyframes outer-rotate{0%{transform:rotate(0) scale(.5)}100%{transform:rotate(360deg) scale(.5)}}@keyframes left-wobble{0%,100%{transform:rotate(130deg)}50%{transform:rotate(-5deg)}}@keyframes right-wobble{0%,100%{transform:rotate(-130deg)}50%{transform:rotate(5deg)}}@keyframes sporadic-rotate{12.5%{transform:rotate(135deg)}25%{transform:rotate(270deg)}37.5%{transform:rotate(405deg)}50%{transform:rotate(540deg)}62.5%{transform:rotate(675deg)}75%{transform:rotate(810deg)}87.5%{transform:rotate(945deg)}100%{transform:rotate(1080deg)}}.ms-stepper .ms-stepper-horizontal{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation{height:72px;min-height:72px;max-height:72px;background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item{display:flex;flex-direction:row;align-items:center;position:relative;height:72px;min-height:72px;max-height:72px;line-height:24px;margin:0;padding:24px;border-radius:0;cursor:pointer;font-size:14px;text-transform:none}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:after,.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:before{content:'';display:block;position:absolute;top:50%;width:24px;border-bottom:1px solid rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:before{left:0}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:after{right:0}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:first-child:before{display:none}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:last-child:after{display:none}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.current .title{font-weight:600;color:rgba(0,0,0,.87)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.disabled{cursor:default}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.disabled .step{background:rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.disabled .title{color:rgba(0,0,0,.27)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.disabled .subtitle{color:rgba(0,0,0,.27)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.optional{padding:16px 24px}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item .step{width:24px;min-width:24px;height:24px;border-radius:50%;margin:0 8px 0 16px;color:#fff}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item .step .icon{color:#fff;font-weight:700;line-height:24px!important}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item .title{padding-right:16px;color:rgba(0,0,0,.54)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item .subtitle{font-size:12px;padding-right:16px;color:rgba(0,0,0,.54);line-height:1}.ms-stepper .ms-stepper-horizontal .ms-stepper-steps{padding:24px 16px}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls{padding:0 16px 16px 16px}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots{display:none;align-items:center;justify-content:center;padding:0 16px}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots span{width:5px;height:5px;margin:0 4px;border-radius:50%}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots span:not(.md-accent-bg){background:rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots span.selected{width:8px;height:8px}@media screen and (max-width:600px){.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation{display:none}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots{display:flex}}.ms-stepper .ms-stepper-vertical{position:relative;background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-stepper .ms-stepper-vertical .ms-stepper-vertical-line{display:block;position:absolute;width:1px;top:32px;bottom:32px;left:43px;border-left:1px solid rgba(0,0,0,.12)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps{padding:8px 0}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step{display:block}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item{display:flex;flex-direction:row;align-items:center;position:relative;width:100%;height:72px;min-height:72px;max-height:72px;line-height:24px;margin:0;padding:0 24px;border-radius:0;cursor:pointer;font-size:14px;text-transform:none}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item:first-child:before{display:none}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item:last-child:after{display:none}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item:hover:not(.disabled) .step{background-color:#ececec;border-color:#ececec}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.current .title{font-weight:600;color:rgba(0,0,0,.87)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.disabled{cursor:default}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.disabled .title{color:rgba(0,0,0,.27)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.disabled .subtitle{color:rgba(0,0,0,.27)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.optional{padding:16px 24px}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item .step{width:40px;min-width:40px;height:40px;margin:0 16px 0 0;border-radius:50%;background:#fff;border:8px solid #fff;color:#fff;transition:border-color .4s cubic-bezier(.25,.8,.25,1),background-color .4s cubic-bezier(.25,.8,.25,1)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item .step .icon{font-weight:700;line-height:28px!important}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item .title{padding-right:16px;color:rgba(0,0,0,.54)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item .subtitle{font-size:12px;padding-right:16px;color:rgba(0,0,0,.54);line-height:1}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-step-content{padding:0 24px 16px 64px}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-controls{padding:0 16px 16px 56px}.ms-tab-scroll .scroll-arrow{height:inherit;padding:0}.ms-tab-scroll .bar-container{overflow:hidden}.ms-tab-scroll .scroll-container{overflow-x:hidden;overflow-y:hidden;transition:transform .2s ease-in-out}.ms-timeline .ms-timeline-loader{position:relative;display:flex;align-items:center;justify-content:center;width:56px;height:56px;margin:0 auto;background:#fff;font-weight:500;opacity:0;z-index:11;border-radius:50%}.ms-timeline .ms-timeline-loader.show{opacity:1}.ms-timeline .ms-timeline-loader .spinner{width:24px;height:24px;border:3px solid rgba(255,255,255,.35);border-top-color:#fff;border-radius:50%}.ms-widget .ms-widget-front{box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-widget .ms-widget-back{box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-widget.sidenav-widget .ms-widget-back,.ms-widget.sidenav-widget .ms-widget-front{box-shadow:none}.ms-widget .flip-to-front{position:absolute;top:0;right:0}.ms-widget .c3{height:100%}.ms-widget .chart-fill-8{margin:0 -8px -8px -8px}.ms-widget .chart-fill-16{margin:0 -16px -16px -16px}.ms-widget .chart-fill-24{margin:0 -24px -24px -24px}.ms-widget .chart-fill-32{margin:0 -32px -32px -32px}.ms-widget .chart-fill-40{margin:0 -40px -40px -40px}.ms-widget .chart-fill-48{margin:0 -48px -48px -48px}.ms-widget .chart-fill-56{margin:0 -56px -56px -56px}.ms-widget .chart-fill-64{margin:0 -64px -64px -64px}.ms-widget .chart-fill-72{margin:0 -72px -72px -72px}.ms-widget .chart-fill-80{margin:0 -80px -80px -80px}.ms-widget{position:relative;font-size:1.3rem;perspective:3000px;padding:12px}.ms-widget .ms-widget-front{display:flex;flex-direction:column;flex:1 1 auto;position:relative;overflow:hidden;visibility:visible;width:100%;opacity:1;z-index:10;border-radius:2px;transition:transform .5s ease-out 0s,visibility 0s ease-in .2s,opacity 0s ease-in .2s;transform:rotateY(0);backface-visibility:hidden}.ms-widget .ms-widget-back{display:block;position:absolute;overflow:hidden;visibility:hidden;opacity:0;z-index:10;top:12px;right:12px;bottom:12px;left:12px;border-radius:2px;transition:transform .5s ease-out 0s,visibility 0s ease-in .2s,opacity 0s ease-in .2s;transform:rotateY(180deg);backface-visibility:hidden}.ms-widget .md-button{margin:0}.ms-widget .md-button.md-icon-button{margin:0}.ms-widget.flipped .ms-widget-front{visibility:hidden;opacity:0;transform:rotateY(180deg)}.ms-widget.flipped .ms-widget-back{display:block;visibility:visible;opacity:1;transform:rotateY(360deg)}.ms-widget.sidenav-widget{padding:0}.ms-widget.ar-2-1 .widget{padding:0;position:relative}.ms-widget.ar-2-1 .widget:before{display:block;content:'';width:100%;padding-top:50%}.ms-widget.ar-2-1 .widget>.widget{position:absolute;top:8px;left:8px;right:8px;bottom:8px}.ms-widget.ar-1-1 .widget{padding:0;position:relative}.ms-widget.ar-1-1 .widget:before{display:block;content:'';width:100%;padding-top:100%}.ms-widget.ar-1-1 .widget>.widget{position:absolute;top:8px;left:8px;right:8px;bottom:8px}.ms-theme-options .ms-theme-options-button{position:absolute;top:160px;right:0;z-index:50;box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12);width:48px;height:48px;line-height:48px;text-align:center;cursor:pointer;border-radius:0;margin:0;pointer-events:auto;opacity:.75}.ms-theme-options .ms-theme-options-button:hover{opacity:1}.ms-theme-options md-sidenav{width:384px;min-width:384px;max-width:384px}.ms-theme-options md-sidenav .ms-theme-options-list{background:#fff;z-index:12;pointer-events:auto}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option{padding:16px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button{width:160px;max-width:160px;margin:8px 8px 16px 8px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button.md-checked ._md-label img,.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button:hover ._md-label img{opacity:1;box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button ._md-container{display:none}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button ._md-label{margin-left:0}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button ._md-label img{opacity:.8;margin-bottom:8px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.color-palettes md-menu-item{max-width:192px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.color-palettes .theme-button{border-bottom:16px solid;text-align:left;width:101px;height:88px;box-shadow:none;opacity:.8}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.color-palettes .theme-button.active,.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.color-palettes .theme-button:hover{opacity:1;box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option md-radio-button{margin:8px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option .option-title{font-size:14px;font-weight:500;padding:0 8px 12px 8px}#error-404 .content{width:90%;max-width:512px;margin-top:128px}#error-404 .content .error-code{font-size:112px;text-align:center;line-height:1;margin-bottom:16px;font-weight:500}#error-404 .content .message{font-size:24px;text-align:center;color:rgba(0,0,0,.54)}#error-404 .content .search{width:100%;height:56px;line-height:56px;margin:48px auto 16px auto;padding:16px;background:#fff}#error-404 .content .search input{padding:0 0 0 16px}#error-404 .content .back-link{font-size:15px;text-align:center}#error-500 .content{width:90%;max-width:512px;margin-top:128px}#error-500 .content .error-code{font-size:112px;line-height:1;text-align:center;margin-bottom:16px;font-weight:500}#error-500 .content .message{font-size:24px;text-align:center;color:rgba(0,0,0,.54)}#error-500 .content .sub-message{font-size:17px;text-align:center;color:rgba(0,0,0,.54);margin:16px auto 48px auto}#error-500 .content .report-link{text-align:center;font-size:15px}#forgot-password{height:100%;background:url(/assets/images/backgrounds/tech.png) no-repeat;background-size:cover}#forgot-password #forgot-password-form-wrapper{flex:1 0 auto;padding:32px}#forgot-password #forgot-password-form-wrapper #forgot-password-form{width:384px;max-width:384px;padding:32px;text-align:center;background:#fff}#forgot-password #forgot-password-form-wrapper #forgot-password-form .logo{width:128px;height:128px;line-height:128px;font-size:86px;font-weight:500;margin:32px auto;color:#fff;border-radius:2px}#forgot-password #forgot-password-form-wrapper #forgot-password-form .title{font-size:17px;margin:16px 0 32px 0}#forgot-password #forgot-password-form-wrapper #forgot-password-form .logo_login{max-height:200px}#forgot-password #forgot-password-form-wrapper #forgot-password-form form{width:100%;text-align:left}#forgot-password #forgot-password-form-wrapper #forgot-password-form form .submit-button{width:220px;margin:16px auto;display:block}#forgot-password #forgot-password-form-wrapper #forgot-password-form .login{margin:32px auto 24px auto;width:250px;font-weight:500}#forgot-password #forgot-password-form-wrapper #forgot-password-form .login .text{margin-right:8px}@media screen and (max-width:600px){#forgot-password #forgot-password-form-wrapper{padding:16px}#forgot-password #forgot-password-form-wrapper #forgot-password-form{padding:24px;width:100%}#forgot-password #forgot-password-form-wrapper #forgot-password-form form .md-button{width:90%}}#login{height:100%;background:url(/assets/images/backgrounds/tech.png) no-repeat;background-size:cover}#login #login-form-wrapper{flex:1 0 auto;padding:32px}#login #login-form-wrapper #login-form{width:384px;max-width:384px;padding:32px;background:#fff;text-align:center}#login #login-form-wrapper #login-form .logo{width:128px;height:128px;line-height:128px;font-size:86px;font-weight:500;margin:32px auto;color:#fff;border-radius:2px}#login #login-form-wrapper #login-form .title{font-size:17px;margin:16px 0 32px 0}#login #login-form-wrapper #login-form .logo_login{max-height:200px}#login #login-form-wrapper #login-form form{width:100%;text-align:left}#login #login-form-wrapper #login-form form md-checkbox{margin:0}#login #login-form-wrapper #login-form form .remember-forgot-password{font-size:13px;margin-top:8px}#login #login-form-wrapper #login-form form .remember-forgot-password .remember-me{margin-bottom:16px}#login #login-form-wrapper #login-form form .remember-forgot-password .forgot-password{font-size:13px;font-weight:500;margin-bottom:16px}#login #login-form-wrapper #login-form form .submit-button{width:220px;margin:16px auto;display:block}#login #login-form-wrapper #login-form .register{margin:32px auto 24px auto;width:250px;font-weight:500}#login #login-form-wrapper #login-form .register .text{margin-right:8px}#login #login-form-wrapper #login-form .separator{font-size:15px;font-weight:600;margin:24px auto 16px auto;position:relative;overflow:hidden;width:100px;color:rgba(0,0,0,.54)}#login #login-form-wrapper #login-form .separator .text{display:inline-block;vertical-align:baseline;position:relative;padding:0 8px;z-index:9999}#login #login-form-wrapper #login-form .separator .text:after,#login #login-form-wrapper #login-form .separator .text:before{content:'';display:block;width:30px;position:absolute;top:10px;border-top:1px solid rgba(0,0,0,.12)}#login #login-form-wrapper #login-form .separator .text:before{right:100%}#login #login-form-wrapper #login-form .separator .text:after{left:100%}#login #login-form-wrapper #login-form .md-button.facebook,#login #login-form-wrapper #login-form .md-button.google{width:192px;text-transform:none;color:#fff;font-size:13px}#login #login-form-wrapper #login-form .md-button.facebook md-icon,#login #login-form-wrapper #login-form .md-button.google md-icon{color:#fff;margin:0 8px 0 0}#login #login-form-wrapper #login-form .md-button.google{background-color:#d73d32}#login #login-form-wrapper #login-form .md-button.facebook{background-color:#3f5c9a}@media screen and (max-width:600px){#login #login-form-wrapper{padding:16px}#login #login-form-wrapper #login-form{padding:24px;width:100%}#login #login-form-wrapper #login-form form .md-button{width:90%}#login #login-form-wrapper #login-form .md-button.facebook,#login #login-form-wrapper #login-form .md-button.google{width:80%}}md-dialog.extractedReport-dialog{max-width:720px;width:720px}md-dialog.extractedReport-dialog md-dialog-content{display:block;position:relative}md-dialog.extractedReport-dialog md-toolbar .title{font-size:17px}md-dialog.extractedReport-dialog md-input-container textarea{min-height:150px}md-dialog.extractedReport-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.extractedReport-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.extractedReport-dialog .date-container{padding:16px 0 24px 0}md-dialog.extractedReport-dialog .error-list{font-size:13px}md-dialog.extractedReport-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.extractedReport-dialog .error-list .error .message{font-weight:500}md-dialog.extractedReport-dialog .error-list .error .md-button{margin:0}md-dialog.extractedReport-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.extractedReport-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#extractedReports{position:relative}#extractedReports>.header{height:76px;min-height:76px;max-height:76px}#extractedReports>.header .logo .logo-icon{margin:0 16px 0 0}#extractedReports>.header .logo .logo-text{font-size:24px}#extractedReports>.header md-icon{color:#fff}#extractedReports>.header .search-input-wrapper{position:relative}#extractedReports>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#extractedReports>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#extractedReports>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#extractedReports>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#extractedReports>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#extractedReports>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#extractedReports>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#extractedReports>.header.selected-bar .close-button-wrapper{width:244px}#extractedReports>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#extractedReports>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#extractedReports>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#extractedReports #add-extractedReport-button{position:fixed;bottom:8px;right:8px;padding:0}#extractedReports #upload-extractedReport-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.metric-dialog{max-width:720px;width:720px}md-dialog.metric-dialog md-dialog-content{display:block;position:relative}md-dialog.metric-dialog md-toolbar .title{font-size:17px}md-dialog.metric-dialog md-input-container textarea{min-height:150px}md-dialog.metric-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.metric-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.metric-dialog .date-container{padding:16px 0 24px 0}md-dialog.metric-dialog .error-list{font-size:13px}md-dialog.metric-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.metric-dialog .error-list .error .message{font-weight:500}md-dialog.metric-dialog .error-list .error .md-button{margin:0}md-dialog.metric-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.metric-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#metrics{position:relative}#metrics>.header{height:76px;min-height:76px;max-height:76px}#metrics>.header .logo .logo-icon{margin:0 16px 0 0}#metrics>.header .logo .logo-text{font-size:24px}#metrics>.header md-icon{color:#fff}#metrics>.header .search-input-wrapper{position:relative}#metrics>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#metrics>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#metrics>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#metrics>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#metrics>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#metrics>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#metrics>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#metrics>.header.selected-bar .close-button-wrapper{width:244px}#metrics>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#metrics>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#metrics>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#metrics #add-metric-button{position:fixed;bottom:8px;right:8px;padding:0}#metrics #upload-metric-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.report-dialog{max-width:720px;width:720px}md-dialog.report-dialog md-dialog-content{display:block;position:relative}md-dialog.report-dialog md-toolbar .title{font-size:17px}md-dialog.report-dialog md-input-container textarea{min-height:150px}md-dialog.report-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.report-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.report-dialog .date-container{padding:16px 0 24px 0}md-dialog.report-dialog .error-list{font-size:13px}md-dialog.report-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.report-dialog .error-list .error .message{font-weight:500}md-dialog.report-dialog .error-list .error .md-button{margin:0}md-dialog.report-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.report-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.report-dialog{max-width:720px;width:720px}md-dialog.report-dialog md-dialog-content{display:block;position:relative}md-dialog.report-dialog md-toolbar .title{font-size:17px}md-dialog.report-dialog md-input-container textarea{min-height:150px}md-dialog.report-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.report-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.report-dialog .date-container{padding:16px 0 24px 0}md-dialog.report-dialog .error-list{font-size:13px}md-dialog.report-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.report-dialog .error-list .error .message{font-weight:500}md-dialog.report-dialog .error-list .error .md-button{margin:0}md-dialog.report-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.report-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.reportField-dialog{max-width:720px;width:720px}md-dialog.reportField-dialog md-dialog-content{display:block;position:relative}md-dialog.reportField-dialog md-toolbar .title{font-size:17px}md-dialog.reportField-dialog md-input-container textarea{min-height:150px}md-dialog.reportField-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.reportField-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.reportField-dialog .date-container{padding:16px 0 24px 0}md-dialog.reportField-dialog .error-list{font-size:13px}md-dialog.reportField-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.reportField-dialog .error-list .error .message{font-weight:500}md-dialog.reportField-dialog .error-list .error .md-button{margin:0}md-dialog.reportField-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.reportField-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#analytics-report .header{height:76px;min-height:76px;max-height:76px}#analytics-report .header .goto-reports-button{margin-right:16px}#analytics-report .header .report-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#analytics-report .header .report-image img{height:100%;width:auto;max-width:none}#analytics-report .header .subtitle{margin:6px 0 0 0}#analytics-report .report-detail-form-container{padding:24px;margin-bottom:24px}#analytics-report .report-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#analytics-report .report-detail-form-container .handle{cursor:move}#analytics-report .report-detail-form-container md-input-container md-switch{margin:0!important}#analytics-report .report-detail-form-container #report-image-uploader{position:relative}#analytics-report .report-detail-form-container #report-image-uploader.dropping .drop-text{display:flex}#analytics-report .report-detail-form-container #report-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#analytics-report .report-detail-form-container #report-image-uploader .upload-button{margin-bottom:16px}#analytics-report .report-detail-form-container #report-image-uploader .report-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#analytics-report .report-detail-form-container #report-image-uploader .report-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#analytics-report .report-detail-form-container #report-image-uploader .report-image .media{max-height:100%}md-dialog.report-dialog{max-width:720px;width:720px}md-dialog.report-dialog md-dialog-content{display:block;position:relative}md-dialog.report-dialog md-toolbar .title{font-size:17px}md-dialog.report-dialog md-input-container textarea{min-height:150px}md-dialog.report-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.report-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.report-dialog .date-container{padding:16px 0 24px 0}md-dialog.report-dialog .error-list{font-size:13px}md-dialog.report-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.report-dialog .error-list .error .message{font-weight:500}md-dialog.report-dialog .error-list .error .md-button{margin:0}md-dialog.report-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.report-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#reports{position:relative}#reports>.header{height:76px;min-height:76px;max-height:76px}#reports>.header .logo .logo-icon{margin:0 16px 0 0}#reports>.header .logo .logo-text{font-size:24px}#reports>.header md-icon{color:#fff}#reports>.header .search-input-wrapper{position:relative}#reports>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#reports>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#reports>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#reports>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#reports>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#reports>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#reports>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#reports>.header.selected-bar .close-button-wrapper{width:244px}#reports>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#reports>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#reports>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}md-dialog.report-dialog{max-width:720px;width:720px}md-dialog.report-dialog md-dialog-content{display:block;position:relative}md-dialog.report-dialog md-toolbar .title{font-size:17px}md-dialog.report-dialog md-input-container textarea{min-height:150px}md-dialog.report-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.report-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.report-dialog .date-container{padding:16px 0 24px 0}md-dialog.report-dialog .error-list{font-size:13px}md-dialog.report-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.report-dialog .error-list .error .message{font-weight:500}md-dialog.report-dialog .error-list .error .md-button{margin:0}md-dialog.report-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.report-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.web-dialog md-dialog-content{display:block;position:relative}md-dialog.web-dialog md-toolbar .title{font-size:17px}md-dialog.web-dialog md-input-container textarea{min-height:150px}md-dialog.web-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.web-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.web-dialog .date-container{padding:16px 0 24px 0}md-dialog.web-dialog .error-list{font-size:13px}md-dialog.web-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.web-dialog .error-list .error .message{font-weight:500}md-dialog.web-dialog .error-list .error .md-button{margin:0}md-dialog.web-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.web-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.odbc-dialog{max-width:720px;width:720px}md-dialog.odbc-dialog md-dialog-content{display:block;position:relative}md-dialog.odbc-dialog md-toolbar .title{font-size:17px}md-dialog.odbc-dialog md-input-container textarea{min-height:150px}md-dialog.odbc-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.odbc-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.odbc-dialog .date-container{padding:16px 0 24px 0}md-dialog.odbc-dialog .error-list{font-size:13px}md-dialog.odbc-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.odbc-dialog .error-list .error .message{font-weight:500}md-dialog.odbc-dialog .error-list .error .md-button{margin:0}md-dialog.odbc-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.odbc-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#odbcs{position:relative}#odbcs>.header{height:76px;min-height:76px;max-height:76px}#odbcs>.header .logo .logo-icon{margin:0 16px 0 0}#odbcs>.header .logo .logo-text{font-size:24px}#odbcs>.header md-icon{color:#fff}#odbcs>.header .search-input-wrapper{position:relative}#odbcs>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#odbcs>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#odbcs>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#odbcs>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#odbcs>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#odbcs>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#odbcs>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#odbcs>.header.selected-bar .close-button-wrapper{width:244px}#odbcs>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#odbcs>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#odbcs>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#odbcs #add-odbc-button{position:fixed;bottom:8px;right:8px;padding:0}#odbcs #upload-odbc-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.project-dialog{max-width:720px;width:720px}md-dialog.project-dialog md-dialog-content{display:block;position:relative}md-dialog.project-dialog md-toolbar .title{font-size:17px}md-dialog.project-dialog md-input-container textarea{min-height:150px}md-dialog.project-dialog .date-container{padding:16px 0 24px 0}md-dialog.project-dialog .error-list{font-size:13px}md-dialog.project-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.project-dialog .error-list .error .message{font-weight:500}md-dialog.project-dialog .error-list .error .md-button{margin:0}md-dialog.project-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.project-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}md-dialog.project-dialog .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#callysquare-project .header{height:76px;min-height:76px;max-height:76px}#callysquare-project .header .goto-projects-button{margin-right:16px}#callysquare-project .header .project-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#callysquare-project .header .project-image img{height:100%;width:auto;max-width:none}#callysquare-project .header .subtitle{margin:6px 0 0 0}#callysquare-project .project-detail-form-container{padding:24px;margin-bottom:24px}#callysquare-project .project-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#callysquare-project .project-detail-form-container #project-image-uploader{position:relative}#callysquare-project .project-detail-form-container #project-image-uploader.dropping .drop-text{display:flex}#callysquare-project .project-detail-form-container #project-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#callysquare-project .project-detail-form-container #project-image-uploader .upload-button{margin-bottom:16px}#callysquare-project .project-detail-form-container #project-image-uploader .project-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#callysquare-project .project-detail-form-container #project-image-uploader .project-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#callysquare-project .project-detail-form-container #project-image-uploader .project-image .media{max-height:100%}#callysquare-project>.callysquare-content{position:absolute;top:76px;bottom:0;left:0;right:0}#projects{position:relative}#projects>.header{height:76px;min-height:76px;max-height:76px}#projects>.header .logo .logo-icon{margin:0 16px 0 0}#projects>.header .logo .logo-text{font-size:24px}#projects>.header md-icon{color:#fff}#projects>.header .search-input-wrapper{position:relative}#projects>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#projects>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#projects>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#projects>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#projects>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#projects>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#projects>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#projects>.header.selected-bar .close-button-wrapper{width:244px}#projects>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#projects>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#projects>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#projects #add-project-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.squareRecording-dialog{max-width:720px;width:720px}md-dialog.squareRecording-dialog md-dialog-content{display:block;position:relative}md-dialog.squareRecording-dialog md-toolbar .title{font-size:17px}md-dialog.squareRecording-dialog md-input-container textarea{min-height:150px}md-dialog.squareRecording-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.squareRecording-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.squareRecording-dialog .date-container{padding:16px 0 24px 0}md-dialog.squareRecording-dialog .error-list{font-size:13px}md-dialog.squareRecording-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.squareRecording-dialog .error-list .error .message{font-weight:500}md-dialog.squareRecording-dialog .error-list .error .md-button{margin:0}md-dialog.squareRecording-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.squareRecording-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#squareRecordings{position:relative}#squareRecordings>.header{height:76px;min-height:76px;max-height:76px}#squareRecordings>.header .logo .logo-icon{margin:0 16px 0 0}#squareRecordings>.header .logo .logo-text{font-size:24px}#squareRecordings>.header md-icon{color:#fff}#squareRecordings>.header .search-input-wrapper{position:relative}#squareRecordings>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#squareRecordings>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#squareRecordings>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#squareRecordings>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#squareRecordings>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#squareRecordings>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#squareRecordings>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#squareRecordings>.header.selected-bar .close-button-wrapper{width:244px}#squareRecordings>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#squareRecordings>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#squareRecordings>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#squareRecordings #add-squareRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#squareRecordings #upload-squareRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#chatQueues{position:relative}#chatQueues>.header{height:76px;min-height:76px;max-height:76px}#chatQueues>.header .logo .logo-icon{margin:0 16px 0 0}#chatQueues>.header .logo .logo-text{font-size:24px}#chatQueues>.header md-icon{color:#fff}#chatQueues>.header .search-input-wrapper{position:relative}#chatQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#chatQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#chatQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#chatQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#chatQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#chatQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#chatQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#chatQueues>.header.selected-bar .close-button-wrapper{width:244px}#chatQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#chatQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#chatQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#chatQueues #add-chatQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#chatQueues #upload-chatQueue-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.chatQueue-dialog{max-width:720px;width:720px}md-dialog.chatQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.chatQueue-dialog md-toolbar .title{font-size:17px}md-dialog.chatQueue-dialog md-input-container textarea{min-height:150px}md-dialog.chatQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chatQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chatQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatQueue-dialog .error-list{font-size:13px}md-dialog.chatQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatQueue-dialog .error-list .error .message{font-weight:500}md-dialog.chatQueue-dialog .error-list .error .md-button{margin:0}md-dialog.chatQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#chat-chatQueue .header{height:76px;min-height:76px;max-height:76px}#chat-chatQueue .header .goto-chatQueues-button{margin-right:16px}#chat-chatQueue .header .chatQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#chat-chatQueue .header .chatQueue-image img{height:100%;width:auto;max-width:none}#chat-chatQueue .header .subtitle{margin:6px 0 0 0}#chat-chatQueue .chatQueue-detail-form-container{padding:24px;margin-bottom:24px}#chat-chatQueue .chatQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#chat-chatQueue .chatQueue-detail-form-container .handle{cursor:move}#chat-chatQueue .chatQueue-detail-form-container md-input-container md-switch{margin:0!important}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader{position:relative}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader.dropping .drop-text{display:flex}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .upload-button{margin-bottom:16px}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .chatQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .chatQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .chatQueue-image .media{max-height:100%}#chat-chatQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#chat-chatQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#chat-chatQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#chat-chatQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#chatWebsites{position:relative}#chatWebsites>.header{height:76px;min-height:76px;max-height:76px}#chatWebsites>.header .logo .logo-icon{margin:0 16px 0 0}#chatWebsites>.header .logo .logo-text{font-size:24px}#chatWebsites>.header md-icon{color:#fff}#chatWebsites>.header .search-input-wrapper{position:relative}#chatWebsites>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#chatWebsites>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#chatWebsites>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#chatWebsites>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#chatWebsites>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#chatWebsites>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#chatWebsites>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#chatWebsites>.header.selected-bar .close-button-wrapper{width:244px}#chatWebsites>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#chatWebsites>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#chatWebsites>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#chatWebsites #add-chatWebsite-button{position:fixed;bottom:8px;right:8px;padding:0}#chatWebsites #upload-chatWebsite-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chatWebsite-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.chatCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.chatCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.chatCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.chatCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chatCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chatCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatCannedAnswer-dialog .error-list{font-size:13px}md-dialog.chatCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.chatCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.chatCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.offlineMessage-dialog{max-width:720px;width:720px}md-dialog.offlineMessage-dialog md-dialog-content{display:block;position:relative}md-dialog.offlineMessage-dialog md-toolbar .title{font-size:17px}md-dialog.offlineMessage-dialog md-input-container textarea{min-height:150px}md-dialog.offlineMessage-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.offlineMessage-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.offlineMessage-dialog .date-container{padding:16px 0 24px 0}md-dialog.offlineMessage-dialog .error-list{font-size:13px}md-dialog.offlineMessage-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.offlineMessage-dialog .error-list .error .message{font-weight:500}md-dialog.offlineMessage-dialog .error-list .error .md-button{margin:0}md-dialog.offlineMessage-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.offlineMessage-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatProactiveAction-dialog{max-width:720px;width:720px}md-dialog.chatProactiveAction-dialog md-dialog-content{display:block;position:relative}md-dialog.chatProactiveAction-dialog md-toolbar .title{font-size:17px}md-dialog.chatProactiveAction-dialog md-input-container textarea{min-height:150px}md-dialog.chatProactiveAction-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chatProactiveAction-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chatProactiveAction-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatProactiveAction-dialog .error-list{font-size:13px}md-dialog.chatProactiveAction-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatProactiveAction-dialog .error-list .error .message{font-weight:500}md-dialog.chatProactiveAction-dialog .error-list .error .md-button{margin:0}md-dialog.chatProactiveAction-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatProactiveAction-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#chat-chatWebsite .header{height:76px;min-height:76px;max-height:76px}#chat-chatWebsite .header .goto-chatWebsites-button{margin-right:16px}#chat-chatWebsite .header .chatWebsite-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#chat-chatWebsite .header .chatWebsite-image img{height:100%;width:auto;max-width:none}#chat-chatWebsite .header .subtitle{margin:6px 0 0 0}#chat-chatWebsite .chatWebsite-detail-form-container{padding:24px;margin-bottom:24px}#chat-chatWebsite .chatWebsite-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#chat-chatWebsite .chatWebsite-detail-form-container .handle{cursor:move}#chat-chatWebsite .chatWebsite-detail-form-container md-input-container md-switch{margin:0!important}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader{position:relative}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader.dropping .drop-text{display:flex}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .upload-button{margin-bottom:16px}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .chatWebsite-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .chatWebsite-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .chatWebsite-image .media{max-height:100%}#chat-chatWebsite md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#chat-chatWebsite md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#chat-chatWebsite md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#chat-chatWebsite md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#chat-chatWebsite .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#chat-chatWebsite .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#chat-chatWebsite .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#chat-chatWebsite .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#chat-chatWebsite .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#chat-chatWebsite .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#chat-chatWebsite .actionAppData{width:150px!important}}@media screen and (max-width:960px){#chat-chatWebsite .actionAppData{width:80px!important}}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}#companies{position:relative}#companies>.header{height:76px;min-height:76px;max-height:76px}#companies>.header .logo .logo-icon{margin:0 16px 0 0}#companies>.header .logo .logo-text{font-size:24px}#companies>.header md-icon{color:#fff}#companies>.header .search-input-wrapper{position:relative}#companies>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#companies>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#companies>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#companies>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#companies>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#companies>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#companies>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#companies>.header.selected-bar .close-button-wrapper{width:244px}#companies>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#companies>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#companies>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#companies #add-company-button{position:fixed;bottom:8px;right:8px;padding:0}#companies #upload-company-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.company-dialog{max-width:720px;width:720px}md-dialog.company-dialog md-dialog-content{display:block;position:relative}md-dialog.company-dialog md-toolbar .title{font-size:17px}md-dialog.company-dialog md-input-container textarea{min-height:150px}md-dialog.company-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.company-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.company-dialog .date-container{padding:16px 0 24px 0}md-dialog.company-dialog .error-list{font-size:13px}md-dialog.company-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.company-dialog .error-list .error .message{font-weight:500}md-dialog.company-dialog .error-list .error .md-button{margin:0}md-dialog.company-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.company-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#contactmanager-company .header{height:76px;min-height:76px;max-height:76px}#contactmanager-company .header .goto-companies-button{margin-right:16px}#contactmanager-company .header .company-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#contactmanager-company .header .company-image img{height:100%;width:auto;max-width:none}#contactmanager-company .header .subtitle{margin:6px 0 0 0}#contactmanager-company .company-detail-form-container{padding:24px;margin-bottom:24px}#contactmanager-company .company-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#contactmanager-company .company-detail-form-container .handle{cursor:move}#contactmanager-company .company-detail-form-container md-input-container md-switch{margin:0!important}#contactmanager-company .company-detail-form-container #company-image-uploader{position:relative}#contactmanager-company .company-detail-form-container #company-image-uploader.dropping .drop-text{display:flex}#contactmanager-company .company-detail-form-container #company-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#contactmanager-company .company-detail-form-container #company-image-uploader .upload-button{margin-bottom:16px}#contactmanager-company .company-detail-form-container #company-image-uploader .company-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#contactmanager-company .company-detail-form-container #company-image-uploader .company-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#contactmanager-company .company-detail-form-container #company-image-uploader .company-image .media{max-height:100%}#contactmanager-company md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#contactmanager-company md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#contactmanager-company md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#contactmanager-company md-table-container.font-size-12 td.md-cell{font-size:12px!important}#contacts{position:relative}#contacts>.header{height:76px;min-height:76px;max-height:76px}#contacts>.header .logo .logo-icon{margin:0 16px 0 0}#contacts>.header .logo .logo-text{font-size:24px}#contacts>.header md-icon{color:#fff}#contacts>.header .search-input-wrapper{position:relative}#contacts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#contacts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#contacts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#contacts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#contacts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#contacts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#contacts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#contacts>.header.selected-bar .close-button-wrapper{width:244px}#contacts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#contacts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#contacts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#contacts #add-contact-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.cm-contact-dialog{max-width:720px;width:720px}md-dialog.cm-contact-dialog md-dialog-content{display:block;position:relative}md-dialog.cm-contact-dialog md-toolbar .title{font-size:17px}md-dialog.cm-contact-dialog md-input-container textarea{min-height:150px}md-dialog.cm-contact-dialog .date-container{padding:16px 0 24px 0}md-dialog.cm-contact-dialog .error-list{font-size:13px}md-dialog.cm-contact-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cm-contact-dialog .error-list .error .message{font-weight:500}md-dialog.cm-contact-dialog .error-list .error .md-button{margin:0}md-dialog.cm-contact-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cm-contact-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.cm-contact-dialog{max-width:720px;width:720px}md-dialog.cm-contact-dialog md-dialog-content{display:block;position:relative}md-dialog.cm-contact-dialog md-toolbar .title{font-size:17px}md-dialog.cm-contact-dialog md-input-container textarea{min-height:150px}md-dialog.cm-contact-dialog .date-container{padding:16px 0 24px 0}md-dialog.cm-contact-dialog .error-list{font-size:13px}md-dialog.cm-contact-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cm-contact-dialog .error-list .error .message{font-weight:500}md-dialog.cm-contact-dialog .error-list .error .md-button{margin:0}md-dialog.cm-contact-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cm-contact-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.hopper-dialog{max-width:720px;width:720px}md-dialog.hopper-dialog md-dialog-content{display:block;position:relative}md-dialog.hopper-dialog md-toolbar .title{font-size:17px}md-dialog.hopper-dialog md-input-container textarea{min-height:150px}md-dialog.hopper-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.hopper-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.hopper-dialog .date-container{padding:16px 0 24px 0}md-dialog.hopper-dialog .error-list{font-size:13px}md-dialog.hopper-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.hopper-dialog .error-list .error .message{font-weight:500}md-dialog.hopper-dialog .error-list .error .md-button{margin:0}md-dialog.hopper-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.hopper-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#cm-contact .pointer{cursor:pointer}#cm-contact .header{height:76px;min-height:76px;max-height:76px}#cm-contact .header .goto-contacts-button{margin-right:16px}#cm-contact .header .contact-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#cm-contact .header .contact-image img{height:100%;width:auto;max-width:none}#cm-contact .header .subtitle{margin:6px 0 0 0}#cm-contact .contact-detail-form-container{padding:24px;margin-bottom:24px}#cm-contact .contact-detail-form-container md-input-container:not(.md-input-invalid)>md-icon.email{color:green}#cm-contact .contact-detail-form-container md-input-container:not(.md-input-invalid)>md-icon.firstname{color:#1e90ff}#cm-contact .contact-detail-form-container md-input-container.md-input-invalid>md-icon.email,#cm-contact .contact-detail-form-container md-input-container.md-input-invalid>md-icon.firstname{color:red}#cm-contact .contact-detail-form-container .hint{position:absolute;left:2px;right:auto;bottom:7px;font-size:10px;line-height:14px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.import-dialog{max-width:720px;width:720px}md-dialog.import-dialog md-dialog-content{display:block;position:relative}md-dialog.import-dialog md-toolbar .title{font-size:17px}md-dialog.import-dialog md-input-container textarea{min-height:150px}md-dialog.import-dialog .date-container{padding:16px 0 24px 0}md-dialog.import-dialog .error-list{font-size:13px}md-dialog.import-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.import-dialog .error-list .error .message{font-weight:500}md-dialog.import-dialog .error-list .error .md-button{margin:0}md-dialog.import-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.import-dialog .error-list .info{background-color:rgba(24,160,135,.08);border:1px solid rgba(24,160,135,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.import-dialog .error-list .info .message{font-weight:500}md-dialog.import-dialog .error-list .info .md-button{margin:0}md-dialog.import-dialog .error-list .info:last-child{margin-bottom:30px}md-dialog.import-dialog .contact-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}md-dialog.import-dialog .contact-image img{height:100%;width:auto;max-width:none}md-dialog.import-dialog .contact-image .media{max-height:100%}md-dialog.import-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.cm-contact-dialog{max-width:720px;width:720px}md-dialog.cm-contact-dialog md-dialog-content{display:block;position:relative}md-dialog.cm-contact-dialog md-toolbar .title{font-size:17px}md-dialog.cm-contact-dialog md-input-container textarea{min-height:150px}md-dialog.cm-contact-dialog .date-container{padding:16px 0 24px 0}md-dialog.cm-contact-dialog .error-list{font-size:13px}md-dialog.cm-contact-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cm-contact-dialog .error-list .error .message{font-weight:500}md-dialog.cm-contact-dialog .error-list .error .md-button{margin:0}md-dialog.cm-contact-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cm-contact-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.globalCustomField-dialog{max-width:720px;width:720px}md-dialog.globalCustomField-dialog md-dialog-content{display:block;position:relative}md-dialog.globalCustomField-dialog md-toolbar .title{font-size:17px}md-dialog.globalCustomField-dialog md-input-container textarea{min-height:150px}md-dialog.globalCustomField-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.globalCustomField-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.globalCustomField-dialog .date-container{padding:16px 0 24px 0}md-dialog.globalCustomField-dialog .error-list{font-size:13px}md-dialog.globalCustomField-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.globalCustomField-dialog .error-list .error .message{font-weight:500}md-dialog.globalCustomField-dialog .error-list .error .md-button{margin:0}md-dialog.globalCustomField-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.globalCustomField-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#globalCustomFields{position:relative}#globalCustomFields>.header{height:76px;min-height:76px;max-height:76px}#globalCustomFields>.header .logo .logo-icon{margin:0 16px 0 0}#globalCustomFields>.header .logo .logo-text{font-size:24px}#globalCustomFields>.header md-icon{color:#fff}#globalCustomFields>.header .search-input-wrapper{position:relative}#globalCustomFields>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#globalCustomFields>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#globalCustomFields>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#globalCustomFields>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#globalCustomFields>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#globalCustomFields>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#globalCustomFields>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#globalCustomFields>.header.selected-bar .close-button-wrapper{width:244px}#globalCustomFields>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#globalCustomFields>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#globalCustomFields>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#globalCustomFields #add-globalCustomField-button{position:fixed;bottom:8px;right:8px;padding:0}#globalCustomFields #upload-globalCustomField-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.list-dialog{max-width:720px;width:720px}md-dialog.list-dialog md-dialog-content{display:block;position:relative}md-dialog.list-dialog md-toolbar .title{font-size:17px}md-dialog.list-dialog md-input-container textarea{min-height:150px}md-dialog.list-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.list-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.list-dialog .date-container{padding:16px 0 24px 0}md-dialog.list-dialog .error-list{font-size:13px}md-dialog.list-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.list-dialog .error-list .error .message{font-weight:500}md-dialog.list-dialog .error-list .error .md-button{margin:0}md-dialog.list-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.list-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.customField-dialog{max-width:720px;width:720px}md-dialog.customField-dialog md-dialog-content{display:block;position:relative}md-dialog.customField-dialog md-toolbar .title{font-size:17px}md-dialog.customField-dialog md-input-container textarea{min-height:150px}md-dialog.customField-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.customField-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.customField-dialog .date-container{padding:16px 0 24px 0}md-dialog.customField-dialog .error-list{font-size:13px}md-dialog.customField-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.customField-dialog .error-list .error .message{font-weight:500}md-dialog.customField-dialog .error-list .error .md-button{margin:0}md-dialog.customField-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.customField-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#contactmanager-list .header{height:76px;min-height:76px;max-height:76px}#contactmanager-list .header .goto-lists-button{margin-right:16px}#contactmanager-list .header .list-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#contactmanager-list .header .list-image img{height:100%;width:auto;max-width:none}#contactmanager-list .header .subtitle{margin:6px 0 0 0}#contactmanager-list .list-detail-form-container{padding:24px;margin-bottom:24px}#contactmanager-list .list-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#contactmanager-list .list-detail-form-container .handle{cursor:move}#contactmanager-list .list-detail-form-container md-input-container md-switch{margin:0!important}#contactmanager-list .list-detail-form-container #list-image-uploader{position:relative}#contactmanager-list .list-detail-form-container #list-image-uploader.dropping .drop-text{display:flex}#contactmanager-list .list-detail-form-container #list-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#contactmanager-list .list-detail-form-container #list-image-uploader .upload-button{margin-bottom:16px}#contactmanager-list .list-detail-form-container #list-image-uploader .list-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#contactmanager-list .list-detail-form-container #list-image-uploader .list-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#contactmanager-list .list-detail-form-container #list-image-uploader .list-image .media{max-height:100%}#contactmanager-list md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#contactmanager-list md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#contactmanager-list md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#contactmanager-list md-table-container.font-size-12 td.md-cell{font-size:12px!important}#lists{position:relative}#lists>.header{height:76px;min-height:76px;max-height:76px}#lists>.header .logo .logo-icon{margin:0 16px 0 0}#lists>.header .logo .logo-text{font-size:24px}#lists>.header md-icon{color:#fff}#lists>.header .search-input-wrapper{position:relative}#lists>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#lists>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#lists>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#lists>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#lists>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#lists>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#lists>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#lists>.header.selected-bar .close-button-wrapper{width:244px}#lists>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#lists>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#lists>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#lists #add-list-button{position:fixed;bottom:8px;right:8px;padding:0}#lists #upload-list-button{position:fixed;bottom:8px;right:8px;padding:0}#dashboard-custom .filter-header{background-image:url(/assets/images/backgrounds/header-bg.png);color:#fff}#agent-general{position:fixed;width:100%;height:100%}#agent-general .agent-content{position:fixed;top:36px;bottom:0;left:0;right:0}#agent-general .badge{min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transition:opacity .2s ease-in-out .1s}#agent-general .table-header{background-image:url(/assets/images/backgrounds/header-bg.png);color:#fff}#agent-general .table-header .md-toolbar-tools div md-select .md-select-value.md-select-placeholder{color:#fff}#agent-general .table-header .md-toolbar-tools div md-select[disabled] .md-select-value.md-select-placeholder{color:#fff}#agent-general .table-header .md-toolbar-tools div md-select[disabled] .md-select-value.md-select-placeholder .md-select-icon{display:none}#agent-general .table-header ms-quick-filter .quick-filter-date-clear-button{color:#fff}#agent-general .tooltip-preview{position:relative;display:inline-block;text-decoration:underline}#agent-general .tooltip-preview .tooltip-preview-text{visibility:hidden;width:500px;position:fixed;white-space:pre-line;left:28%;z-index:9999}#agent-general .tooltip-preview:hover .tooltip-preview-text{visibility:visible}#agent-general .reload-list md-icon{color:#fff}#agent-general .advanced-search md-icon{color:#fff}#agent-general .create-new md-icon{color:#fff}#agent-general div.draft-manager-bar{background-color:#f5f5f5;position:sticky;height:34px;bottom:0;border-top:1px solid #e0e0e0}#agent-general div.draft-manager-bar ms-tab-scroll{overflow:hidden}#agent-general div.draft-manager-bar ms-tab-scroll div.draft-manager-tab{height:34px;border-right:1px solid #e0e0e0}#agent-general td.width-5,#agent-general th.width-5{width:5px!important;min-width:auto!important;max-width:none!important}#agent-general td.width-10,#agent-general th.width-10{width:10px!important;min-width:auto!important;max-width:none!important}#agent-general td.width-15,#agent-general th.width-15{width:15px!important;min-width:auto!important;max-width:none!important}#agent-general td.no-padding,#agent-general th.no-padding{padding:0!important}#agent-general span.contact-text{width:100px!important}#agent-general span.subject-text{width:300px!important}#agent-general span.no-margin-bottom{margin-bottom:0!important}#agent-general span.no-margin-top{margin-top:0!important}#agent-general md-table-container.interactions-list thead tr th:not(.no-padding):not(.id-header){padding:0 20px 0 0!important}#agent-general md-table-container.interactions-list tbody tr td:not(.no-padding):not(.actions-padding):not(.id){padding:0 20px 0 0!important}#agent-general td.actions-padding{padding:0 8px 0 0!important}#agent-general md-toolbar.md-table-toolbar[disabled]{pointer-events:none}#agent-general md-toolbar.md-table-toolbar[disabled] ms-search-bar{opacity:.7}#agent-general md-toolbar.md-table-toolbar[disabled] ms-quick-filter{opacity:.7}#agent-general md-toolbar.md-table-toolbar[disabled] button.advanced-search,#agent-general md-toolbar.md-table-toolbar[disabled] button.interaction-reload{opacity:.7}#agent-general md-card.call-info-card{min-width:220px}#agent-general md-card.call-info-card md-card-content,#agent-general md-card.call-info-card md-card-header{padding:10px!important}#agent-general md-card.call-info-card button.reload-button{padding:0;height:22px;width:auto}@media screen and (max-width:1280px){#agent-general span.contact-text{width:100px!important}#agent-general span.subject-text{width:350px!important}}@media screen and (max-width:1920px){#agent-general span.contact-text{width:150px!important}#agent-general span.subject-text{width:500px!important}}#agent-general-dialog{position:fixed;width:100%;height:100%}#agent-general-dialog .agent-content{position:fixed;top:0;bottom:0;left:0;right:0}body .md-select-menu-container{z-index:110}.md-toolbar-tools{font-size:12px}div.toolbar-quick-filter[disabled]{pointer-events:none;opacity:.7}md-dialog.agent-dialog{max-width:720px;width:720px}md-dialog.agent-dialog md-dialog-content{display:block;position:relative}md-dialog.agent-dialog md-toolbar .title{font-size:17px}md-dialog.agent-dialog md-input-container textarea{min-height:150px}md-dialog.agent-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.agent-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.agent-dialog .date-container{padding:16px 0 24px 0}md-dialog.agent-dialog .error-list{font-size:13px}md-dialog.agent-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.agent-dialog .error-list .error .message{font-weight:500}md-dialog.agent-dialog .error-list .error .md-button{margin:0}md-dialog.agent-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.agent-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.agent-dialog{max-width:720px;width:720px}md-dialog.agent-dialog md-dialog-content{display:block;position:relative}md-dialog.agent-dialog md-toolbar .title{font-size:17px}md-dialog.agent-dialog md-input-container textarea{min-height:150px}md-dialog.agent-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.agent-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.agent-dialog .date-container{padding:16px 0 24px 0}md-dialog.agent-dialog .error-list{font-size:13px}md-dialog.agent-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.agent-dialog .error-list .error .message{font-weight:500}md-dialog.agent-dialog .error-list .error .md-button{margin:0}md-dialog.agent-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.agent-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.contact-trigger-dialog{max-width:720px;width:720px}md-dialog.contact-trigger-dialog md-dialog-content{display:block;position:relative;max-height:400px;height:400px}md-dialog.contact-trigger-dialog md-toolbar{background-image:url(/assets/images/backgrounds/header-bg.png);background-position:top}md-dialog.contact-trigger-dialog md-toolbar .title{font-size:17px}md-dialog.contact-trigger-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}md-dialog.contact-trigger-dialog md-dialog-actions button.select-button{position:absolute;right:0;margin-right:16px}md-dialog md-grid-list.one-row-layout{height:150px;max-height:150px}md-dialog md-grid-list.two-rows-layout{height:300px;max-height:300px}md-dialog md-card.contact-info:hover{background-color:#e9eef1ad}@media screen and (max-width:1280px){md-dialog.contact-trigger-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.contact-trigger-dialog{width:90%}}md-dialog.agent-dialog{max-width:720px;width:720px}md-dialog.agent-dialog md-dialog-content{display:block;position:relative}md-dialog.agent-dialog md-toolbar .title{font-size:17px}md-dialog.agent-dialog md-input-container textarea{min-height:150px}md-dialog.agent-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.agent-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.agent-dialog .date-container{padding:16px 0 24px 0}md-dialog.agent-dialog .error-list{font-size:13px}md-dialog.agent-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.agent-dialog .error-list .error .message{font-weight:500}md-dialog.agent-dialog .error-list .error .md-button{margin:0}md-dialog.agent-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.agent-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.details-dialog{max-width:500px;width:500px}md-dialog.details-dialog md-dialog-content{display:block;position:relative}md-dialog.details-dialog md-toolbar .title{font-size:17px}md-dialog.details-dialog md-input-container textarea{min-height:150px}md-dialog.details-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.details-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.details-dialog .date-container{padding:16px 0 24px 0}md-dialog.details-dialog .error-list{font-size:13px}md-dialog.details-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.details-dialog .error-list .error .message{font-weight:500}md-dialog.details-dialog .error-list .error .md-button{margin:0}md-dialog.details-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.details-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#interaction-app .tags{font-size:12px}#interaction-app .tags .tag{border-radius:2px;padding:3px 8px;background-color:rgba(0,0,0,.08)}#interaction-app .tags .tag .tag-color{width:8px;height:8px;margin-right:8px;border-radius:50%}#interaction-app .content-card{position:relative;height:100%}#interaction-app .content-card .interaction{background:linear-gradient(to bottom,rgba(255,255,255,.8) 0,rgba(255,255,255,.6) 20%,rgba(255,255,255,.8))}#interaction-app .content-card .interaction .avatar-small{width:30px;min-width:30px;height:30px;line-height:30px;margin:0 8px 0 0;border-radius:50%;font-size:17px;font-weight:500;text-align:center;color:#fff}#interaction-app .content-card .interaction .interaction-agents{min-height:40px;background-color:#f3f4f5;color:rgba(0,0,0,.87);border-bottom:1px solid rgba(0,0,0,.08)}#interaction-app .content-card .interaction .interaction-agents .responsive-interactions-button{padding:0}#interaction-app .content-card .interaction .interaction-agents .interaction-contact{cursor:pointer}#interaction-app .content-card .interaction .interaction-agents .interaction-contact .avatar{margin-right:16px}#interaction-app .content-card .interaction .interaction-toolbar{min-height:64px;background-color:#f3f4f5;color:rgba(0,0,0,.87);border-bottom:1px solid rgba(0,0,0,.08)}#interaction-app .content-card .interaction .interaction-toolbar md-icon{color:rgba(0,0,0,.87)}#interaction-app .content-card .interaction .interaction-toolbar .responsive-interactions-button{padding:0}#interaction-app .content-card .interaction .interaction-toolbar .interaction-contact{cursor:pointer}#interaction-app .content-card .interaction .interaction-toolbar .interaction-contact .avatar{margin-right:16px}#interaction-app .content-card .interaction .cannedarea{margin-right:7px;font-size:14px;border:1px solid #ccc;border-radius:3px;align-self:stretch}#interaction-app .content-card .interaction .cannedarea md-autocomplete-wrap{padding:0 1em}#interaction-app .content-card .interaction .emojionearea{margin-right:7px}#interaction-app .content-card .interaction #interaction-content{background:url(/assets/images/patterns/circles-light.png) repeat}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content{padding:24px 0}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .subject{color:rgba(0,0,0,.54)}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .subject .subject-text{margin-right:4px;text-transform:lowercase}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info{padding-bottom:16px}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .avatar{margin-right:16px}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .name{margin-right:8px;font-weight:500}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .toggle-details{padding-top:16px;cursor:pointer;font-weight:500}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .details{padding-top:8px}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .details .title{font-weight:500;margin-right:6px}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .details .detail{color:rgba(0,0,0,.54)}#interaction-app .content-card .interaction #interaction-content .message-row .bubble{position:relative;padding:6px 7px 8px 9px;background-color:#fff;border:1px solid #dcdfe1;border-radius:6px;word-break:break-word}#interaction-app .content-card .interaction #interaction-content .message-row .bubble:after,#interaction-app .content-card .interaction #interaction-content .message-row .bubble:before{content:' ';position:absolute;width:0;height:0}#interaction-app .content-card .interaction #interaction-content .message-row .bubble:after{left:-7px;right:auto;top:0;bottom:auto;border:11px solid;border-color:#fff transparent transparent transparent}#interaction-app .content-card .interaction #interaction-content .message-row .bubble:before{left:-9px;right:auto;top:-1px;bottom:auto;border:8px solid;border-color:#dcdfe1 transparent transparent transparent}#interaction-app .content-card .interaction #interaction-content .message-row .bubble .time{font-size:11px;margin-top:0;text-align:right}#interaction-app .content-card .interaction #interaction-content .message-row .bubble .message{white-space:pre-wrap}#interaction-app .content-card .interaction #interaction-content .message-row .bubble .message span{word-break:break-all}#interaction-app .content-card .interaction #interaction-content .message-row.in{padding:5px}#interaction-app .content-card .interaction #interaction-content .message-row.in .avatar{margin:0 16px 0 0}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned{padding:5px;align-items:flex-end}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned .avatar{order:2;margin:0 0 0 16px}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned .bubble{margin-left:auto;order:1}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned .bubble:after{right:-9px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned .bubble:before{right:-11px;left:auto;-moz-transform:scaleX(-1);-o-transform:scaleX(-1);-webkit-transform:scaleX(-1);transform:scaleX(-1)}#interaction-app .content-card .interaction #interaction-content .message-row.out{padding:5px;align-items:flex-end}#interaction-app .content-card .interaction #interaction-content .message-row.out .avatar{order:2;margin:0 0 0 16px}#interaction-app .content-card .interaction #interaction-content .message-row.out .bubble{margin-left:auto;background-color:#e8f5e9;border:1px solid #dfebe0;order:1}#interaction-app .content-card .interaction #interaction-content .message-row.out .bubble:after{right:-7px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#interaction-app .content-card .interaction #interaction-content .message-row.out .bubble:before{right:-9px;left:auto;top:auto;bottom:-1px;border-color:transparent transparent #dfebe0 transparent}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned{padding:5px}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned .avatar{order:1;margin:0 16px 0 0}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned .bubble{background-color:#e8f5e9;border:1px solid #dfebe0;order:2}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned .bubble:after{right:-7px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned .bubble:before{right:-9px;left:auto;top:auto;bottom:-1px;border-color:transparent transparent #dfebe0 transparent}#interaction-app .content-card .interaction .interaction-footer{min-height:64px;max-height:180px;background-color:#f3f4f5;color:rgba(0,0,0,.87);border-top:1px solid rgba(0,0,0,.08);padding:8px 8px 8px 16px}#interaction-app .content-card .interaction .interaction-footer .reply-form md-input-container{margin:0;padding-right:16px}#interaction-app .content-card .interaction .interaction-footer .reply-form md-input-container textarea{overflow:auto;max-height:80px;transition:height .2s ease}#interaction-app .content-card .interaction .interaction-footer .reply-form md-input-container textarea.grow{height:80px}#interaction-app .content-card .interaction .interaction-footer .reply-form md-input-container .md-errors-spacer{display:none}#interaction-app .content-card .interaction .interaction-footer .reply-form .md-button{margin:0}#interaction-app .content-card .info md-list-item{min-height:40px;height:52px}#interaction-app .content-card .start-point{background:linear-gradient(to bottom,rgba(255,255,255,.8) 0,rgba(255,255,255,.6) 20%,rgba(255,255,255,.8))}#interaction-app .content-card .start-point .big-circle{background:linear-gradient(to bottom,rgba(255,255,255,.8) 0,rgba(255,255,255,.6) 20%,rgba(255,255,255,.8));border-radius:50%;width:300px;height:300px;line-height:300px;text-align:center}#interaction-app .content-card .start-point .app-title{font-weight:500;font-size:32px;margin:12px 0}#interaction-app .content-card .start-point .secondary-text{font-size:16px}#interaction-app .content-card .sidenav md-toolbar{border-bottom:1px solid rgba(0,0,0,.08)}#interaction-app .content-card .sidenav md-toolbar .md-toolbar-tools-bottom .search{height:36px;line-height:36px;padding:8px;background:#fff;font-size:13px}#interaction-app .content-card .sidenav md-toolbar .md-toolbar-tools-bottom .search .icon{margin:0;color:rgba(0,0,0,.54)}#interaction-app .content-card .sidenav md-toolbar .md-toolbar-tools-bottom .search input{padding-left:12px;height:36px;color:rgba(0,0,0,.54)}#interaction-app .content-card .sidenav md-list.contact-list,#interaction-app .content-card .sidenav md-list.interaction-list{position:relative;transition:all .2s ease-out}#interaction-app .content-card .sidenav md-list.contact-list .subheader,#interaction-app .content-card .sidenav md-list.contact-list md-list-item,#interaction-app .content-card .sidenav md-list.interaction-list .subheader,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item{position:absolute;right:0;left:0;width:100%;transition:transform .2s ease-out;background:#fff;will-change:transform}#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-leave,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-leave,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-leave,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-leave{transform:translateY(0);display:none}#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-leave.ng-leave-active,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-leave.ng-leave-active,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-leave.ng-leave-active,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-leave.ng-leave-active{transform:translateY(-100%)}#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-hide,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-hide,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-hide,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-hide{display:none}#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-hide-add-active,#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-hide-remove-active,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-hide-add-active,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-hide-remove-active,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-hide-add-active,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-hide-remove-active,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-hide-add-active,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-hide-remove-active{display:block;transition-property:all}#interaction-app .content-card .sidenav md-list.contact-list .subheader,#interaction-app .content-card .sidenav md-list.interaction-list .subheader{padding-left:16px;font-size:20px;font-weight:300;height:88px;line-height:88px}#interaction-app .content-card .sidenav .no-results-message{position:absolute;width:100%;height:88px;padding:16px;background:#fff;font-size:15px;font-weight:400}#interaction-app .avatar-wrapper{position:relative}#interaction-app .avatar-wrapper .avatar{margin-top:0;margin-bottom:0}#interaction-app .status{position:absolute;top:28px;left:28px;border-radius:50%}#interaction-app .status.online{color:#4caf50}#interaction-app .status.online:before{content:'\e709'}#interaction-app .status.do-not-disturb{color:#f44336}#interaction-app .status.do-not-disturb:before{content:'\e912'}#interaction-app .status.away{background-color:#ffc107;color:#fff}#interaction-app .status.away:before{content:'\e727'}#interaction-app .status.offline{color:#4caf50;background-color:#fff}#interaction-app .status.offline:before{content:'\e704'}#interaction-app .editable-wrap{position:relative}#interaction-app .editable-wrap .editable-controls{display:flex;flex-direction:row;align-items:center;width:100%}#interaction-app .editable-wrap .editable-controls .editable-input{width:inherit;background-color:#fff;padding:8px;border:1px solid rgba(0,0,0,.12)}#interaction-app .editable-wrap .editable-controls .editable-buttons{display:inherit}#interaction-app .editable-wrap .editable-controls .editable-buttons .md-button{margin:0}#interaction-app .editable-wrap .editable-controls .editable-buttons .md-button:first-of-type{padding-right:0}#interaction-app .editable-wrap .editable-controls .editable-buttons .md-button .icon-cancel{color:rgba(0,0,0,.32)}#interaction-app .editable-click{cursor:pointer;text-decoration:none;color:inherit;border-bottom:none}#interaction-app .emoji-picker-icon{right:5px;cursor:pointer}#interaction-app .input-show-hide{transition:all linear .5s}#interaction-app .input-show-hide.ng-hide{opacity:0}#interaction-app div.interaction-reply-button-container{display:inline;padding-bottom:14px}#timeline{position:relative;height:auto;padding-bottom:30px}#timeline:before{display:block;position:absolute;z-index:10;content:'';width:2px;background:rgba(0,0,0,.08);top:0;left:50%;bottom:0;margin-left:-1px}#timeline .ms-timeline-item{overflow:hidden;position:relative;z-index:20;width:100%;margin:0 auto;max-width:1200px}#timeline .ms-timeline-item .timeline-card{order:1}#timeline .ms-timeline-item .timeline-card .interaction .header .avatar .image{display:block;width:40px;height:40px;border-radius:20px}#timeline .ms-timeline-item .timeline-card .interaction .media .image{width:100%}#timeline .ms-timeline-item .timeline-point{position:absolute;width:40px;height:40px;line-height:40px;text-align:center;border-radius:50%;left:50%;margin:16px 0 0 -28px;order:2}#timeline .ms-timeline-item .timeline-point md-icon{color:#fff}#timeline .ms-timeline-item .timeline-detail{flex:50% 0 0;padding-top:28px;order:3}#timeline .ms-timeline-item .timeline-detail .time{font-size:15px;padding-left:68px}#timeline .ms-timeline-item .timeline-detail .event{color:rgba(0,0,0,.54);padding-left:68px}#timeline .ms-timeline-item:nth-child(odd) .timeline-card{flex-direction:row-reverse}#timeline .ms-timeline-item:nth-child(even) .timeline-card{order:3;padding-right:0}#timeline .ms-timeline-item:nth-child(even) .timeline-card ms-card{padding-left:84px}#timeline .ms-timeline-item:nth-child(even) .timeline-detail{order:1;padding-left:0;text-align:right}#timeline .ms-timeline-item:nth-child(even) .timeline-detail .event,#timeline .ms-timeline-item:nth-child(even) .timeline-detail .time{padding-right:68px}#timeline .ms-timeline-item:first-child{padding-top:15px}#timeline .ms-timeline-item.animate .timeline-card{animation:slide-in-left .4s}#timeline .ms-timeline-item.animate .timeline-point{animation:slide-in-bottom .4s}#timeline .ms-timeline-item.animate .timeline-detail{animation:slide-in-right .4s}#timeline .ms-timeline-item:nth-child(even).animate .timeline-card{animation:slide-in-right .4s}#timeline .ms-timeline-item:nth-child(even).animate .timeline-detail{animation:slide-in-left .4s}#timeline.timeline-left .ms-timeline-item .timeline-card{order:1}#timeline.timeline-left .ms-timeline-item .timeline-card ms-card{padding-right:68px;padding-left:0;margin-left:auto}#timeline.timeline-left .ms-timeline-item .timeline-detail{order:3;text-align:left}#timeline.timeline-left .ms-timeline-item.animate .timeline-card{animation:slide-in-left .4s}#timeline.timeline-left .ms-timeline-item.animate .timeline-detail{animation:slide-in-right .4s}#timeline.timeline-right .ms-timeline-item .timeline-card{order:3}#timeline.timeline-right .ms-timeline-item .timeline-card ms-card{padding-left:68px;padding-right:0;margin-right:auto}#timeline.timeline-right .ms-timeline-item .timeline-detail{order:1;text-align:right}#timeline.timeline-right .ms-timeline-item .timeline-detail .event,#timeline.timeline-right .ms-timeline-item .timeline-detail .time{padding-right:68px;padding-left:0}#timeline.timeline-right .ms-timeline-item.animate .timeline-card{animation:slide-in-right .4s}#timeline.timeline-right .ms-timeline-item.animate .timeline-detail{animation:slide-in-left .4s}@media screen and (max-width:1280px){#timeline .ms-timeline-item,#timeline.timeline-left .ms-timeline-item,#timeline.timeline-right .ms-timeline-item{display:block}#timeline .ms-timeline-item .timeline-point,#timeline.timeline-left .ms-timeline-item .timeline-point,#timeline.timeline-right .ms-timeline-item .timeline-point{position:relative;left:auto;margin:0 auto 16px auto;padding:0}#timeline .ms-timeline-item .timeline-detail,#timeline.timeline-left .ms-timeline-item .timeline-detail,#timeline.timeline-right .ms-timeline-item .timeline-detail{padding:2px;margin-bottom:16px}#timeline .ms-timeline-item .timeline-detail .event,#timeline .ms-timeline-item .timeline-detail .time,#timeline.timeline-left .ms-timeline-item .timeline-detail .event,#timeline.timeline-left .ms-timeline-item .timeline-detail .time,#timeline.timeline-right .ms-timeline-item .timeline-detail .event,#timeline.timeline-right .ms-timeline-item .timeline-detail .time{padding-right:0;padding-left:0;text-align:center}#timeline .ms-timeline-item .timeline-card ms-card,#timeline.timeline-left .ms-timeline-item .timeline-card ms-card,#timeline.timeline-right .ms-timeline-item .timeline-card ms-card{margin:0 auto;padding:0}#timeline .ms-timeline-item:nth-child(even) .timeline-point,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-point,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-point{position:relative;left:auto;margin:0 auto 16px auto;padding:0}#timeline .ms-timeline-item:nth-child(even) .timeline-detail,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-detail,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-detail{padding:2px;margin-bottom:16px}#timeline .ms-timeline-item:nth-child(even) .timeline-detail .event,#timeline .ms-timeline-item:nth-child(even) .timeline-detail .time,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-detail .event,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-detail .time,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-detail .event,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-detail .time{padding-right:0;padding-left:0;text-align:center}#timeline .ms-timeline-item:nth-child(even) .timeline-card ms-card,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-card ms-card,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-card ms-card{margin:0 auto;padding:0}}md-dialog.compose-dialog{max-width:720px;width:720px}md-dialog.compose-dialog.mail-no-secret{max-height:97%;max-width:90%!important;width:100%!important}md-dialog.compose-dialog md-dialog-content{display:block;position:relative}md-dialog.compose-dialog md-toolbar .title{font-size:17px}md-dialog.compose-dialog md-toolbar .vertical-divider{position:absolute;border-right-width:.5px;border-right-style:solid;height:100%}md-dialog.compose-dialog md-chips md-chip{font-size:12px}md-dialog.compose-dialog md-chips .md-chip-input-container{width:100%}md-dialog.compose-dialog .to{position:relative}md-dialog.compose-dialog .to.hidden-cc input{padding-right:32px}md-dialog.compose-dialog .to.hidden-cc.hidden-bcc input{padding-right:56px}md-dialog.compose-dialog .to.hidden-bcc input{padding-right:32px}md-dialog.compose-dialog .to .cc-bcc{position:absolute;bottom:8px;right:0}md-dialog.compose-dialog .to .cc-bcc .show-bcc,md-dialog.compose-dialog .to .cc-bcc .show-cc{cursor:pointer;font-size:12px}md-dialog.compose-dialog .to .cc-bcc .show-bcc{margin-left:8px}md-dialog.compose-dialog .attachment-list{font-size:13px}md-dialog.compose-dialog .attachment-list .attachment{background-color:rgba(0,0,0,.08);border:1px solid rgba(0,0,0,.16);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.compose-dialog .attachment-list .attachment .filename{font-weight:500}md-dialog.compose-dialog .attachment-list .attachment .md-button{margin:0}md-dialog.compose-dialog .attachment-list .attachment:last-child{margin-bottom:0}md-dialog.compose-dialog .error-list{font-size:13px}md-dialog.compose-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.compose-dialog .error-list .error .message{font-weight:500}md-dialog.compose-dialog .error-list .error .md-button{margin:0}md-dialog.compose-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.compose-dialog .emojionearea{max-width:700px;min-height:300px}md-dialog.compose-dialog md-dialog-actions{position:relative;justify-content:space-between;border-top:1px solid rgba(0,0,0,.12);background-color:rgba(0,0,0,.03)}@media screen and (max-width:960px){md-dialog.compose-dialog{width:80%}}@media screen and (max-width:600px){md-dialog.compose-dialog{width:90%}}md-dialog.disposition-dialog{max-width:720px;width:720px}md-dialog.disposition-dialog md-dialog-content{display:block;position:relative}md-dialog.disposition-dialog md-toolbar .title{font-size:17px}md-dialog.disposition-dialog md-input-container textarea{min-height:150px}md-dialog.disposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.disposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.disposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.disposition-dialog .error-list{font-size:13px}md-dialog.disposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.disposition-dialog .error-list .error .message{font-weight:500}md-dialog.disposition-dialog .error-list .error .md-button{margin:0}md-dialog.disposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.disposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.disposition-dialog{max-width:720px;width:720px}md-dialog.disposition-dialog md-dialog-content{display:block;position:relative}md-dialog.disposition-dialog md-toolbar .title{font-size:17px}md-dialog.disposition-dialog md-input-container textarea{min-height:150px}md-dialog.disposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.disposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.disposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.disposition-dialog .error-list{font-size:13px}md-dialog.disposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.disposition-dialog .error-list .error .message{font-weight:500}md-dialog.disposition-dialog .error-list .error .md-button{margin:0}md-dialog.disposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.disposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.disposition-dialog{max-width:720px;width:720px}md-dialog.disposition-dialog md-dialog-content{display:block;position:relative}md-dialog.disposition-dialog md-toolbar .title{font-size:17px}md-dialog.disposition-dialog md-input-container textarea{min-height:150px}md-dialog.disposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.disposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.disposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.disposition-dialog .error-list{font-size:13px}md-dialog.disposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.disposition-dialog .error-list .error .message{font-weight:500}md-dialog.disposition-dialog .error-list .error .md-button{margin:0}md-dialog.disposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.disposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#dashboard-general>.center>.header{height:160px;min-height:160px;max-height:160px;padding-bottom:0}#dashboard-general>.center>.header .selected-general{background:rgba(0,0,0,.12);color:#fff;padding:8px 16px;height:40px;line-height:24px;font-size:16px}#dashboard-general>.center>.header .general-selector{margin-left:1px;border-radius:0;background:rgba(0,0,0,.12)}#dashboard-general>.center>.header .general-selector md-icon{color:#fff}#dashboard-general>.center>.content{background:0 0;padding:0}#dashboard-general>.center>.content>md-tabs>md-tabs-wrapper{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);padding:0 24px}#dashboard-general>.center>.content>md-tabs>md-tabs-wrapper md-tabs-canvas{height:56px}#dashboard-general>.center>.content>md-tabs>md-tabs-wrapper md-tabs-canvas md-pagination-wrapper{height:56px}#dashboard-general>.center>.content>md-tabs>md-tabs-wrapper md-tabs-canvas .md-tab{padding:16px 24px;text-transform:none}#dashboard-general>.center>.content>md-tabs:not(.md-dynamic-height) md-tabs-content-wrapper{top:56px}#dashboard-general>.center>.content>md-tabs>md-tabs-content-wrapper md-tab-content{padding:12px}#dashboard-general>.sidenav{width:330px;min-width:330px;max-width:330px;padding:0;z-index:51;box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}#dashboard-general>.sidenav.md-locked-open{width:250px;min-width:250px;max-width:250px;z-index:2;box-shadow:none;background:#eee}#dashboard-general .dashboard-container{padding:24px;margin-bottom:24px}#dashboard-general .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.faxAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#fax-faxAccount .header{height:76px;min-height:76px;max-height:76px}#fax-faxAccount .header .goto-faxAccounts-button{margin-right:16px}#fax-faxAccount .header .faxAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#fax-faxAccount .header .faxAccount-image img{height:100%;width:auto;max-width:none}#fax-faxAccount .header .subtitle{margin:6px 0 0 0}#fax-faxAccount .faxAccount-detail-form-container{padding:24px;margin-bottom:24px}#fax-faxAccount .faxAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#fax-faxAccount .faxAccount-detail-form-container .handle{cursor:move}#fax-faxAccount .faxAccount-detail-form-container md-input-container md-switch{margin:0!important}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader{position:relative}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader.dropping .drop-text{display:flex}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .upload-button{margin-bottom:16px}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .faxAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .faxAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .faxAccount-image .media{max-height:100%}#fax-faxAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#fax-faxAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#fax-faxAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#fax-faxAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#fax-faxAccount .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#fax-faxAccount .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#fax-faxAccount .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#fax-faxAccount .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#fax-faxAccount .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#fax-faxAccount .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#fax-faxAccount .actionAppData{width:150px!important}}@media screen and (max-width:960px){#fax-faxAccount .actionAppData{width:80px!important}}#faxAccounts{position:relative}#faxAccounts>.header{height:76px;min-height:76px;max-height:76px}#faxAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#faxAccounts>.header .logo .logo-text{font-size:24px}#faxAccounts>.header md-icon{color:#fff}#faxAccounts>.header .search-input-wrapper{position:relative}#faxAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#faxAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#faxAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#faxAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#faxAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#faxAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#faxAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#faxAccounts>.header.selected-bar .close-button-wrapper{width:244px}#faxAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#faxAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#faxAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#faxAccounts #add-faxAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#faxAccounts #upload-faxAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.faxQueue-dialog{max-width:720px;width:720px}md-dialog.faxQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.faxQueue-dialog md-toolbar .title{font-size:17px}md-dialog.faxQueue-dialog md-input-container textarea{min-height:150px}md-dialog.faxQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.faxQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.faxQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxQueue-dialog .error-list{font-size:13px}md-dialog.faxQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxQueue-dialog .error-list .error .message{font-weight:500}md-dialog.faxQueue-dialog .error-list .error .md-button{margin:0}md-dialog.faxQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#fax-faxQueue .header{height:76px;min-height:76px;max-height:76px}#fax-faxQueue .header .goto-faxQueues-button{margin-right:16px}#fax-faxQueue .header .faxQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#fax-faxQueue .header .faxQueue-image img{height:100%;width:auto;max-width:none}#fax-faxQueue .header .subtitle{margin:6px 0 0 0}#fax-faxQueue .faxQueue-detail-form-container{padding:24px;margin-bottom:24px}#fax-faxQueue .faxQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#fax-faxQueue .faxQueue-detail-form-container .handle{cursor:move}#fax-faxQueue .faxQueue-detail-form-container md-input-container md-switch{margin:0!important}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader{position:relative}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader.dropping .drop-text{display:flex}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .upload-button{margin-bottom:16px}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .faxQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .faxQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .faxQueue-image .media{max-height:100%}#fax-faxQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#fax-faxQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#fax-faxQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#fax-faxQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#faxQueues{position:relative}#faxQueues>.header{height:76px;min-height:76px;max-height:76px}#faxQueues>.header .logo .logo-icon{margin:0 16px 0 0}#faxQueues>.header .logo .logo-text{font-size:24px}#faxQueues>.header md-icon{color:#fff}#faxQueues>.header .search-input-wrapper{position:relative}#faxQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#faxQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#faxQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#faxQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#faxQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#faxQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#faxQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#faxQueues>.header.selected-bar .close-button-wrapper{width:244px}#faxQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#faxQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#faxQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#faxQueues #add-faxQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#faxQueues #upload-faxQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}#profile .about-tab{max-width:1200px}#profile .about-tab .about{padding:8px}#profile .about-tab .about .general .location md-icon{line-height:13px!important}#profile .about-tab .about .work .job .company{padding:0 16px 0 0;font-weight:500}#profile .about-tab .about .work .job .date{color:rgba(0,0,0,.54)}#profile .about-tab .about-sidebar{padding:8px 8px 8px 32px}#profile .about-tab .about-sidebar .friends .content .friend{padding:4px}#profile .about-tab .about-sidebar .groups .content .group{margin-bottom:16px}#profile .about-tab .about-sidebar .groups .content .group:last-child{margin-bottom:0}#profile .about-tab .about-sidebar .groups .content .group .logo{border:1px solid rgba(0,0,0,.12);margin-right:16px}#profile .about-tab .about-sidebar .groups .content .group .name{font-weight:500;font-size:15px}#profile .about-tab .about-sidebar .groups .content .group .category,#profile .about-tab .about-sidebar .groups .content .group .members{color:rgba(0,0,0,.54)}#profile .about-tab .about-sidebar .groups .content .group .members{margin-top:16px}@media screen and (max-width:960px){#profile .about-tab .about-sidebar{padding:8px}}#maintenance{height:100%;background:url(/assets/images/backgrounds/tech.png) no-repeat;background-size:cover}#maintenance #maintenance-form-wrapper{flex:1 0 auto;padding:32px}#maintenance #maintenance-form-wrapper #maintenance-form{max-width:384px;padding:32px;background:#fff;text-align:center}#maintenance #maintenance-form-wrapper #maintenance-form .logo{width:128px;height:128px;line-height:128px;font-size:86px;font-weight:500;margin:32px auto;color:#fff;border-radius:2px}#maintenance #maintenance-form-wrapper #maintenance-form .title{font-size:17px;margin-top:16px}#maintenance #maintenance-form-wrapper #maintenance-form .subtitle{margin:16px 0;max-width:300px;color:rgba(0,0,0,.54);font-size:15px}@media screen and (max-width:600px){#maintenance #maintenance-form-wrapper{padding:16px}#maintenance #maintenance-form-wrapper #maintenance-form{padding:24px;width:100%}}md-dialog.deskAccount-dialog{max-width:720px;width:720px}md-dialog.deskAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.deskAccount-dialog md-toolbar .title{font-size:17px}md-dialog.deskAccount-dialog md-input-container textarea{min-height:150px}md-dialog.deskAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.deskAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.deskAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.deskAccount-dialog .error-list{font-size:13px}md-dialog.deskAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.deskAccount-dialog .error-list .error .message{font-weight:500}md-dialog.deskAccount-dialog .error-list .error .md-button{margin:0}md-dialog.deskAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.deskAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#deskAccounts{position:relative}#deskAccounts>.header{height:76px;min-height:76px;max-height:76px}#deskAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#deskAccounts>.header .logo .logo-text{font-size:24px}#deskAccounts>.header md-icon{color:#fff}#deskAccounts>.header .search-input-wrapper{position:relative}#deskAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#deskAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#deskAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#deskAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#deskAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#deskAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#deskAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#deskAccounts>.header.selected-bar .close-button-wrapper{width:244px}#deskAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#deskAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#deskAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#deskAccounts #add-deskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#deskAccounts #upload-deskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.deskConfiguration-dialog{max-width:720px;width:720px}md-dialog.deskConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.deskConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.deskConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.deskConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.deskConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.deskConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.deskConfiguration-dialog .error-list{font-size:13px}md-dialog.deskConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.deskConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.deskConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.deskConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.deskConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.deskAccount-item-dialog{max-width:720px;width:720px}md-dialog.deskAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.deskAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.deskAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.deskAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.deskAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.deskAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.deskAccount-item-dialog .error-list{font-size:13px}md-dialog.deskAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.deskAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.deskAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.deskAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.deskAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-deskAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-deskAccount .header .goto-deskAccounts-button{margin-right:16px}#integrations-deskAccount .header .deskAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-deskAccount .header .deskAccount-image img{height:100%;width:auto;max-width:none}#integrations-deskAccount .header .subtitle{margin:6px 0 0 0}#integrations-deskAccount .deskAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-deskAccount .deskAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-deskAccount .deskAccount-detail-form-container .handle{cursor:move}#integrations-deskAccount .deskAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader{position:relative}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader.dropping .drop-text{display:flex}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .deskAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .deskAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .deskAccount-image .media{max-height:100%}#integrations-deskAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-deskAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-deskAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-deskAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.dynamics365Account-dialog{max-width:720px;width:720px}md-dialog.dynamics365Account-dialog md-dialog-content{display:block;position:relative}md-dialog.dynamics365Account-dialog md-toolbar .title{font-size:17px}md-dialog.dynamics365Account-dialog md-input-container textarea{min-height:150px}md-dialog.dynamics365Account-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.dynamics365Account-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.dynamics365Account-dialog .date-container{padding:16px 0 24px 0}md-dialog.dynamics365Account-dialog .error-list{font-size:13px}md-dialog.dynamics365Account-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.dynamics365Account-dialog .error-list .error .message{font-weight:500}md-dialog.dynamics365Account-dialog .error-list .error .md-button{margin:0}md-dialog.dynamics365Account-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.dynamics365Account-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#dynamics365Accounts{position:relative}#dynamics365Accounts>.header{height:76px;min-height:76px;max-height:76px}#dynamics365Accounts>.header .logo .logo-icon{margin:0 16px 0 0}#dynamics365Accounts>.header .logo .logo-text{font-size:24px}#dynamics365Accounts>.header md-icon{color:#fff}#dynamics365Accounts>.header .search-input-wrapper{position:relative}#dynamics365Accounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#dynamics365Accounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#dynamics365Accounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#dynamics365Accounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#dynamics365Accounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#dynamics365Accounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#dynamics365Accounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#dynamics365Accounts>.header.selected-bar .close-button-wrapper{width:244px}#dynamics365Accounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#dynamics365Accounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#dynamics365Accounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#dynamics365Accounts #add-dynamics365Account-button{position:fixed;bottom:8px;right:8px;padding:0}#dynamics365Accounts #upload-dynamics365Account-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.dynamics365Configuration-dialog{max-width:720px;width:720px}md-dialog.dynamics365Configuration-dialog md-dialog-content{display:block;position:relative}md-dialog.dynamics365Configuration-dialog md-toolbar .title{font-size:17px}md-dialog.dynamics365Configuration-dialog md-input-container textarea{min-height:150px}md-dialog.dynamics365Configuration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.dynamics365Configuration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.dynamics365Configuration-dialog .date-container{padding:16px 0 24px 0}md-dialog.dynamics365Configuration-dialog .error-list{font-size:13px}md-dialog.dynamics365Configuration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.dynamics365Configuration-dialog .error-list .error .message{font-weight:500}md-dialog.dynamics365Configuration-dialog .error-list .error .md-button{margin:0}md-dialog.dynamics365Configuration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.dynamics365Configuration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.dynamics365Account-item-dialog{max-width:720px;width:720px}md-dialog.dynamics365Account-item-dialog md-dialog-content{display:block;position:relative}md-dialog.dynamics365Account-item-dialog md-toolbar .title{font-size:17px}md-dialog.dynamics365Account-item-dialog md-input-container textarea{min-height:150px}md-dialog.dynamics365Account-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.dynamics365Account-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.dynamics365Account-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.dynamics365Account-item-dialog .error-list{font-size:13px}md-dialog.dynamics365Account-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.dynamics365Account-item-dialog .error-list .error .message{font-weight:500}md-dialog.dynamics365Account-item-dialog .error-list .error .md-button{margin:0}md-dialog.dynamics365Account-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.dynamics365Account-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-dynamics365Account .header{height:76px;min-height:76px;max-height:76px}#integrations-dynamics365Account .header .goto-dynamics365Accounts-button{margin-right:16px}#integrations-dynamics365Account .header .dynamics365Account-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-dynamics365Account .header .dynamics365Account-image img{height:100%;width:auto;max-width:none}#integrations-dynamics365Account .header .subtitle{margin:6px 0 0 0}#integrations-dynamics365Account .dynamics365Account-detail-form-container{padding:24px;margin-bottom:24px}#integrations-dynamics365Account .dynamics365Account-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-dynamics365Account .dynamics365Account-detail-form-container .handle{cursor:move}#integrations-dynamics365Account .dynamics365Account-detail-form-container md-input-container md-switch{margin:0!important}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader{position:relative}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader.dropping .drop-text{display:flex}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .upload-button{margin-bottom:16px}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .dynamics365Account-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .dynamics365Account-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .dynamics365Account-image .media{max-height:100%}#integrations-dynamics365Account md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-dynamics365Account md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-dynamics365Account md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-dynamics365Account md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.freshdeskAccount-dialog{max-width:720px;width:720px}md-dialog.freshdeskAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.freshdeskAccount-dialog md-toolbar .title{font-size:17px}md-dialog.freshdeskAccount-dialog md-input-container textarea{min-height:150px}md-dialog.freshdeskAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshdeskAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshdeskAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshdeskAccount-dialog .error-list{font-size:13px}md-dialog.freshdeskAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshdeskAccount-dialog .error-list .error .message{font-weight:500}md-dialog.freshdeskAccount-dialog .error-list .error .md-button{margin:0}md-dialog.freshdeskAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshdeskAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.freshdeskConfiguration-dialog{max-width:720px;width:720px}md-dialog.freshdeskConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.freshdeskConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.freshdeskConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.freshdeskConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshdeskConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshdeskConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshdeskConfiguration-dialog .error-list{font-size:13px}md-dialog.freshdeskConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshdeskConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.freshdeskConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.freshdeskConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshdeskConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.freshdeskAccount-item-dialog{max-width:720px;width:720px}md-dialog.freshdeskAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.freshdeskAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.freshdeskAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.freshdeskAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshdeskAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshdeskAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshdeskAccount-item-dialog .error-list{font-size:13px}md-dialog.freshdeskAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshdeskAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.freshdeskAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.freshdeskAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshdeskAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-freshdeskAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-freshdeskAccount .header .goto-freshdeskAccounts-button{margin-right:16px}#integrations-freshdeskAccount .header .freshdeskAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-freshdeskAccount .header .freshdeskAccount-image img{height:100%;width:auto;max-width:none}#integrations-freshdeskAccount .header .subtitle{margin:6px 0 0 0}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container .handle{cursor:move}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader{position:relative}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader.dropping .drop-text{display:flex}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .freshdeskAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .freshdeskAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .freshdeskAccount-image .media{max-height:100%}#integrations-freshdeskAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-freshdeskAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-freshdeskAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-freshdeskAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#freshdeskAccounts{position:relative}#freshdeskAccounts>.header{height:76px;min-height:76px;max-height:76px}#freshdeskAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#freshdeskAccounts>.header .logo .logo-text{font-size:24px}#freshdeskAccounts>.header md-icon{color:#fff}#freshdeskAccounts>.header .search-input-wrapper{position:relative}#freshdeskAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#freshdeskAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#freshdeskAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#freshdeskAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#freshdeskAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#freshdeskAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#freshdeskAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#freshdeskAccounts>.header.selected-bar .close-button-wrapper{width:244px}#freshdeskAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#freshdeskAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#freshdeskAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#freshdeskAccounts #add-freshdeskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#freshdeskAccounts #upload-freshdeskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.freshsalesAccount-dialog{max-width:720px;width:720px}md-dialog.freshsalesAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.freshsalesAccount-dialog md-toolbar .title{font-size:17px}md-dialog.freshsalesAccount-dialog md-input-container textarea{min-height:150px}md-dialog.freshsalesAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshsalesAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshsalesAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshsalesAccount-dialog .error-list{font-size:13px}md-dialog.freshsalesAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshsalesAccount-dialog .error-list .error .message{font-weight:500}md-dialog.freshsalesAccount-dialog .error-list .error .md-button{margin:0}md-dialog.freshsalesAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshsalesAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.freshsalesConfiguration-dialog{max-width:720px;width:720px}md-dialog.freshsalesConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.freshsalesConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.freshsalesConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.freshsalesConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshsalesConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshsalesConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshsalesConfiguration-dialog .error-list{font-size:13px}md-dialog.freshsalesConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshsalesConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.freshsalesConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.freshsalesConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshsalesConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.freshsalesAccount-item-dialog{max-width:720px;width:720px}md-dialog.freshsalesAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.freshsalesAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.freshsalesAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.freshsalesAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshsalesAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshsalesAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshsalesAccount-item-dialog .error-list{font-size:13px}md-dialog.freshsalesAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshsalesAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.freshsalesAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.freshsalesAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshsalesAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-freshsalesAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-freshsalesAccount .header .goto-freshsalesAccounts-button{margin-right:16px}#integrations-freshsalesAccount .header .freshsalesAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-freshsalesAccount .header .freshsalesAccount-image img{height:100%;width:auto;max-width:none}#integrations-freshsalesAccount .header .subtitle{margin:6px 0 0 0}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container .handle{cursor:move}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader{position:relative}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader.dropping .drop-text{display:flex}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .freshsalesAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .freshsalesAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .freshsalesAccount-image .media{max-height:100%}#integrations-freshsalesAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-freshsalesAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-freshsalesAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-freshsalesAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#freshsalesAccounts{position:relative}#freshsalesAccounts>.header{height:76px;min-height:76px;max-height:76px}#freshsalesAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#freshsalesAccounts>.header .logo .logo-text{font-size:24px}#freshsalesAccounts>.header md-icon{color:#fff}#freshsalesAccounts>.header .search-input-wrapper{position:relative}#freshsalesAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#freshsalesAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#freshsalesAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#freshsalesAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#freshsalesAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#freshsalesAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#freshsalesAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#freshsalesAccounts>.header.selected-bar .close-button-wrapper{width:244px}#freshsalesAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#freshsalesAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#freshsalesAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#freshsalesAccounts #add-freshsalesAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#freshsalesAccounts #upload-freshsalesAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.salesforceAccount-dialog{max-width:720px;width:720px}md-dialog.salesforceAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.salesforceAccount-dialog md-toolbar .title{font-size:17px}md-dialog.salesforceAccount-dialog md-input-container textarea{min-height:150px}md-dialog.salesforceAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.salesforceAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.salesforceAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.salesforceAccount-dialog .error-list{font-size:13px}md-dialog.salesforceAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.salesforceAccount-dialog .error-list .error .message{font-weight:500}md-dialog.salesforceAccount-dialog .error-list .error .md-button{margin:0}md-dialog.salesforceAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.salesforceAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.salesforceConfiguration-dialog{max-width:720px;width:720px}md-dialog.salesforceConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.salesforceConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.salesforceConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.salesforceConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.salesforceConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.salesforceConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.salesforceConfiguration-dialog .error-list{font-size:13px}md-dialog.salesforceConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.salesforceConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.salesforceConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.salesforceConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.salesforceConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.salesforceAccount-item-dialog{max-width:720px;width:720px}md-dialog.salesforceAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.salesforceAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.salesforceAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.salesforceAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.salesforceAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.salesforceAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.salesforceAccount-item-dialog .error-list{font-size:13px}md-dialog.salesforceAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.salesforceAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.salesforceAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.salesforceAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.salesforceAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-salesforceAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-salesforceAccount .header .goto-salesforceAccounts-button{margin-right:16px}#integrations-salesforceAccount .header .salesforceAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-salesforceAccount .header .salesforceAccount-image img{height:100%;width:auto;max-width:none}#integrations-salesforceAccount .header .subtitle{margin:6px 0 0 0}#integrations-salesforceAccount .salesforceAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-salesforceAccount .salesforceAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-salesforceAccount .salesforceAccount-detail-form-container .handle{cursor:move}#integrations-salesforceAccount .salesforceAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader{position:relative}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader.dropping .drop-text{display:flex}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .salesforceAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .salesforceAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .salesforceAccount-image .media{max-height:100%}#integrations-salesforceAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-salesforceAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-salesforceAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-salesforceAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#salesforceAccounts{position:relative}#salesforceAccounts>.header{height:76px;min-height:76px;max-height:76px}#salesforceAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#salesforceAccounts>.header .logo .logo-text{font-size:24px}#salesforceAccounts>.header md-icon{color:#fff}#salesforceAccounts>.header .search-input-wrapper{position:relative}#salesforceAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#salesforceAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#salesforceAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#salesforceAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#salesforceAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#salesforceAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#salesforceAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#salesforceAccounts>.header.selected-bar .close-button-wrapper{width:244px}#salesforceAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#salesforceAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#salesforceAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#salesforceAccounts #add-salesforceAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#salesforceAccounts #upload-salesforceAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.servicenowAccount-dialog{max-width:720px;width:720px}md-dialog.servicenowAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.servicenowAccount-dialog md-toolbar .title{font-size:17px}md-dialog.servicenowAccount-dialog md-input-container textarea{min-height:150px}md-dialog.servicenowAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.servicenowAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.servicenowAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.servicenowAccount-dialog .error-list{font-size:13px}md-dialog.servicenowAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.servicenowAccount-dialog .error-list .error .message{font-weight:500}md-dialog.servicenowAccount-dialog .error-list .error .md-button{margin:0}md-dialog.servicenowAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.servicenowAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.servicenowConfiguration-dialog{max-width:720px;width:720px}md-dialog.servicenowConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.servicenowConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.servicenowConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.servicenowConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.servicenowConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.servicenowConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.servicenowConfiguration-dialog .error-list{font-size:13px}md-dialog.servicenowConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.servicenowConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.servicenowConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.servicenowConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.servicenowConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.servicenowAccount-item-dialog{max-width:720px;width:720px}md-dialog.servicenowAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.servicenowAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.servicenowAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.servicenowAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.servicenowAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.servicenowAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.servicenowAccount-item-dialog .error-list{font-size:13px}md-dialog.servicenowAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.servicenowAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.servicenowAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.servicenowAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.servicenowAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-servicenowAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-servicenowAccount .header .goto-servicenowAccounts-button{margin-right:16px}#integrations-servicenowAccount .header .servicenowAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-servicenowAccount .header .servicenowAccount-image img{height:100%;width:auto;max-width:none}#integrations-servicenowAccount .header .subtitle{margin:6px 0 0 0}#integrations-servicenowAccount .servicenowAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-servicenowAccount .servicenowAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-servicenowAccount .servicenowAccount-detail-form-container .handle{cursor:move}#integrations-servicenowAccount .servicenowAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader{position:relative}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader.dropping .drop-text{display:flex}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .servicenowAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .servicenowAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .servicenowAccount-image .media{max-height:100%}#integrations-servicenowAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-servicenowAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-servicenowAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-servicenowAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#servicenowAccounts{position:relative}#servicenowAccounts>.header{height:76px;min-height:76px;max-height:76px}#servicenowAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#servicenowAccounts>.header .logo .logo-text{font-size:24px}#servicenowAccounts>.header md-icon{color:#fff}#servicenowAccounts>.header .search-input-wrapper{position:relative}#servicenowAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#servicenowAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#servicenowAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#servicenowAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#servicenowAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#servicenowAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#servicenowAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#servicenowAccounts>.header.selected-bar .close-button-wrapper{width:244px}#servicenowAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#servicenowAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#servicenowAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#servicenowAccounts #add-servicenowAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#servicenowAccounts #upload-servicenowAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.sugarcrmAccount-dialog{max-width:720px;width:720px}md-dialog.sugarcrmAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.sugarcrmAccount-dialog md-toolbar .title{font-size:17px}md-dialog.sugarcrmAccount-dialog md-input-container textarea{min-height:150px}md-dialog.sugarcrmAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.sugarcrmAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.sugarcrmAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.sugarcrmAccount-dialog .error-list{font-size:13px}md-dialog.sugarcrmAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.sugarcrmAccount-dialog .error-list .error .message{font-weight:500}md-dialog.sugarcrmAccount-dialog .error-list .error .md-button{margin:0}md-dialog.sugarcrmAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.sugarcrmAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.sugarcrmConfiguration-dialog{max-width:720px;width:720px}md-dialog.sugarcrmConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.sugarcrmConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.sugarcrmConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.sugarcrmConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.sugarcrmConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.sugarcrmConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.sugarcrmConfiguration-dialog .error-list{font-size:13px}md-dialog.sugarcrmConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.sugarcrmConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.sugarcrmConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.sugarcrmConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.sugarcrmConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.sugarcrmAccount-item-dialog{max-width:720px;width:720px}md-dialog.sugarcrmAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.sugarcrmAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.sugarcrmAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.sugarcrmAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.sugarcrmAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.sugarcrmAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.sugarcrmAccount-item-dialog .error-list{font-size:13px}md-dialog.sugarcrmAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.sugarcrmAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.sugarcrmAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.sugarcrmAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.sugarcrmAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-sugarcrmAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-sugarcrmAccount .header .goto-sugarcrmAccounts-button{margin-right:16px}#integrations-sugarcrmAccount .header .sugarcrmAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-sugarcrmAccount .header .sugarcrmAccount-image img{height:100%;width:auto;max-width:none}#integrations-sugarcrmAccount .header .subtitle{margin:6px 0 0 0}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container .handle{cursor:move}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader{position:relative}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader.dropping .drop-text{display:flex}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .sugarcrmAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .sugarcrmAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .sugarcrmAccount-image .media{max-height:100%}#integrations-sugarcrmAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-sugarcrmAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-sugarcrmAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-sugarcrmAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#sugarcrmAccounts{position:relative}#sugarcrmAccounts>.header{height:76px;min-height:76px;max-height:76px}#sugarcrmAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#sugarcrmAccounts>.header .logo .logo-text{font-size:24px}#sugarcrmAccounts>.header md-icon{color:#fff}#sugarcrmAccounts>.header .search-input-wrapper{position:relative}#sugarcrmAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#sugarcrmAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#sugarcrmAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#sugarcrmAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#sugarcrmAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#sugarcrmAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#sugarcrmAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#sugarcrmAccounts>.header.selected-bar .close-button-wrapper{width:244px}#sugarcrmAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#sugarcrmAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#sugarcrmAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#sugarcrmAccounts #add-sugarcrmAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#sugarcrmAccounts #upload-sugarcrmAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.vtigerAccount-dialog{max-width:720px;width:720px}md-dialog.vtigerAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.vtigerAccount-dialog md-toolbar .title{font-size:17px}md-dialog.vtigerAccount-dialog md-input-container textarea{min-height:150px}md-dialog.vtigerAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.vtigerAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.vtigerAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.vtigerAccount-dialog .error-list{font-size:13px}md-dialog.vtigerAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.vtigerAccount-dialog .error-list .error .message{font-weight:500}md-dialog.vtigerAccount-dialog .error-list .error .md-button{margin:0}md-dialog.vtigerAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.vtigerAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.vtigerConfiguration-dialog{max-width:720px;width:720px}md-dialog.vtigerConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.vtigerConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.vtigerConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.vtigerConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.vtigerConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.vtigerConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.vtigerConfiguration-dialog .error-list{font-size:13px}md-dialog.vtigerConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.vtigerConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.vtigerConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.vtigerConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.vtigerConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.vtigerAccount-item-dialog{max-width:720px;width:720px}md-dialog.vtigerAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.vtigerAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.vtigerAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.vtigerAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.vtigerAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.vtigerAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.vtigerAccount-item-dialog .error-list{font-size:13px}md-dialog.vtigerAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.vtigerAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.vtigerAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.vtigerAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.vtigerAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-vtigerAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-vtigerAccount .header .goto-vtigerAccounts-button{margin-right:16px}#integrations-vtigerAccount .header .vtigerAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-vtigerAccount .header .vtigerAccount-image img{height:100%;width:auto;max-width:none}#integrations-vtigerAccount .header .subtitle{margin:6px 0 0 0}#integrations-vtigerAccount .vtigerAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-vtigerAccount .vtigerAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-vtigerAccount .vtigerAccount-detail-form-container .handle{cursor:move}#integrations-vtigerAccount .vtigerAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader{position:relative}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader.dropping .drop-text{display:flex}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .vtigerAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .vtigerAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .vtigerAccount-image .media{max-height:100%}#integrations-vtigerAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-vtigerAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-vtigerAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-vtigerAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#vtigerAccounts{position:relative}#vtigerAccounts>.header{height:76px;min-height:76px;max-height:76px}#vtigerAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#vtigerAccounts>.header .logo .logo-text{font-size:24px}#vtigerAccounts>.header md-icon{color:#fff}#vtigerAccounts>.header .search-input-wrapper{position:relative}#vtigerAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#vtigerAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#vtigerAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#vtigerAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#vtigerAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#vtigerAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#vtigerAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#vtigerAccounts>.header.selected-bar .close-button-wrapper{width:244px}#vtigerAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#vtigerAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#vtigerAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#vtigerAccounts #add-vtigerAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#vtigerAccounts #upload-vtigerAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.zendeskAccount-dialog{max-width:720px;width:720px}md-dialog.zendeskAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.zendeskAccount-dialog md-toolbar .title{font-size:17px}md-dialog.zendeskAccount-dialog md-input-container textarea{min-height:150px}md-dialog.zendeskAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zendeskAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zendeskAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.zendeskAccount-dialog .error-list{font-size:13px}md-dialog.zendeskAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zendeskAccount-dialog .error-list .error .message{font-weight:500}md-dialog.zendeskAccount-dialog .error-list .error .md-button{margin:0}md-dialog.zendeskAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zendeskAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.zendeskAccount-item-dialog{max-width:720px;width:720px}md-dialog.zendeskAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.zendeskAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.zendeskAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.zendeskAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zendeskAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zendeskAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.zendeskAccount-item-dialog .error-list{font-size:13px}md-dialog.zendeskAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zendeskAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.zendeskAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.zendeskAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zendeskAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-zendeskAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-zendeskAccount .header .goto-zendeskAccounts-button{margin-right:16px}#integrations-zendeskAccount .header .zendeskAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-zendeskAccount .header .zendeskAccount-image img{height:100%;width:auto;max-width:none}#integrations-zendeskAccount .header .subtitle{margin:6px 0 0 0}#integrations-zendeskAccount .zendeskAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-zendeskAccount .zendeskAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-zendeskAccount .zendeskAccount-detail-form-container .handle{cursor:move}#integrations-zendeskAccount .zendeskAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader{position:relative}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader.dropping .drop-text{display:flex}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .zendeskAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .zendeskAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .zendeskAccount-image .media{max-height:100%}#integrations-zendeskAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-zendeskAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-zendeskAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-zendeskAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.zendeskConfiguration-dialog{max-width:720px;width:720px}md-dialog.zendeskConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.zendeskConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.zendeskConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.zendeskConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zendeskConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zendeskConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.zendeskConfiguration-dialog .error-list{font-size:13px}md-dialog.zendeskConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zendeskConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.zendeskConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.zendeskConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zendeskConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#zendeskAccounts{position:relative}#zendeskAccounts>.header{height:76px;min-height:76px;max-height:76px}#zendeskAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#zendeskAccounts>.header .logo .logo-text{font-size:24px}#zendeskAccounts>.header md-icon{color:#fff}#zendeskAccounts>.header .search-input-wrapper{position:relative}#zendeskAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#zendeskAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#zendeskAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#zendeskAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#zendeskAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#zendeskAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#zendeskAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#zendeskAccounts>.header.selected-bar .close-button-wrapper{width:244px}#zendeskAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#zendeskAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#zendeskAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#zendeskAccounts #add-zendeskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#zendeskAccounts #upload-zendeskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.zohoAccount-dialog{max-width:720px;width:720px}md-dialog.zohoAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.zohoAccount-dialog md-toolbar .title{font-size:17px}md-dialog.zohoAccount-dialog md-input-container textarea{min-height:150px}md-dialog.zohoAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zohoAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zohoAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.zohoAccount-dialog .error-list{font-size:13px}md-dialog.zohoAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zohoAccount-dialog .error-list .error .message{font-weight:500}md-dialog.zohoAccount-dialog .error-list .error .md-button{margin:0}md-dialog.zohoAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zohoAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.zohoConfiguration-dialog{max-width:720px;width:720px}md-dialog.zohoConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.zohoConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.zohoConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.zohoConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zohoConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zohoConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.zohoConfiguration-dialog .error-list{font-size:13px}md-dialog.zohoConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zohoConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.zohoConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.zohoConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zohoConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.zohoAccount-item-dialog{max-width:720px;width:720px}md-dialog.zohoAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.zohoAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.zohoAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.zohoAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zohoAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zohoAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.zohoAccount-item-dialog .error-list{font-size:13px}md-dialog.zohoAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zohoAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.zohoAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.zohoAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zohoAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-zohoAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-zohoAccount .header .goto-zohoAccounts-button{margin-right:16px}#integrations-zohoAccount .header .zohoAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-zohoAccount .header .zohoAccount-image img{height:100%;width:auto;max-width:none}#integrations-zohoAccount .header .subtitle{margin:6px 0 0 0}#integrations-zohoAccount .zohoAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-zohoAccount .zohoAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-zohoAccount .zohoAccount-detail-form-container .handle{cursor:move}#integrations-zohoAccount .zohoAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader{position:relative}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader.dropping .drop-text{display:flex}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .zohoAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .zohoAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .zohoAccount-image .media{max-height:100%}#integrations-zohoAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-zohoAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-zohoAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-zohoAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#zohoAccounts{position:relative}#zohoAccounts>.header{height:76px;min-height:76px;max-height:76px}#zohoAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#zohoAccounts>.header .logo .logo-text{font-size:24px}#zohoAccounts>.header md-icon{color:#fff}#zohoAccounts>.header .search-input-wrapper{position:relative}#zohoAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#zohoAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#zohoAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#zohoAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#zohoAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#zohoAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#zohoAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#zohoAccounts>.header.selected-bar .close-button-wrapper{width:244px}#zohoAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#zohoAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#zohoAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#zohoAccounts #add-zohoAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#zohoAccounts #upload-zohoAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.project-dialog{max-width:720px;width:720px}md-dialog.project-dialog md-dialog-content{display:block;position:relative}md-dialog.project-dialog md-toolbar .title{font-size:17px}md-dialog.project-dialog md-input-container textarea{min-height:150px}md-dialog.project-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.project-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.project-dialog .date-container{padding:16px 0 24px 0}md-dialog.project-dialog .error-list{font-size:13px}md-dialog.project-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.project-dialog .error-list .error .message{font-weight:500}md-dialog.project-dialog .error-list .error .md-button{margin:0}md-dialog.project-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.project-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.session-dialog{max-width:720px;width:720px}md-dialog.session-dialog md-dialog-content{display:block;position:relative}md-dialog.session-dialog md-toolbar .title{font-size:17px}md-dialog.session-dialog md-input-container textarea{min-height:150px}md-dialog.session-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.session-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.session-dialog .date-container{padding:16px 0 24px 0}md-dialog.session-dialog .error-list{font-size:13px}md-dialog.session-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.session-dialog .error-list .error .message{font-weight:500}md-dialog.session-dialog .error-list .error .md-button{margin:0}md-dialog.session-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.session-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#jscripty-project .header{height:76px;min-height:76px;max-height:76px}#jscripty-project .header .goto-projects-button{margin-right:16px}#jscripty-project .header .project-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#jscripty-project .header .project-image img{height:100%;width:auto;max-width:none}#jscripty-project .header .subtitle{margin:6px 0 0 0}#jscripty-project .project-detail-form-container{padding:24px;margin-bottom:24px}#jscripty-project .project-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#jscripty-project .project-detail-form-container .handle{cursor:move}#jscripty-project .project-detail-form-container md-input-container md-switch{margin:0!important}#jscripty-project .project-detail-form-container #project-image-uploader{position:relative}#jscripty-project .project-detail-form-container #project-image-uploader.dropping .drop-text{display:flex}#jscripty-project .project-detail-form-container #project-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#jscripty-project .project-detail-form-container #project-image-uploader .upload-button{margin-bottom:16px}#jscripty-project .project-detail-form-container #project-image-uploader .project-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#jscripty-project .project-detail-form-container #project-image-uploader .project-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#jscripty-project .project-detail-form-container #project-image-uploader .project-image .media{max-height:100%}#jscripty-project md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#jscripty-project md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#jscripty-project md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#jscripty-project md-table-container.font-size-12 td.md-cell{font-size:12px!important}#projects{position:relative}#projects>.header{height:76px;min-height:76px;max-height:76px}#projects>.header .logo .logo-icon{margin:0 16px 0 0}#projects>.header .logo .logo-text{font-size:24px}#projects>.header md-icon{color:#fff}#projects>.header .search-input-wrapper{position:relative}#projects>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#projects>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#projects>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#projects>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#projects>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#projects>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#projects>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#projects>.header.selected-bar .close-button-wrapper{width:244px}#projects>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#projects>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#projects>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#projects #add-project-button{position:fixed;bottom:8px;right:8px;padding:0}#projects #upload-project-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mailAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.mailCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.mailCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.mailCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.mailCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mailCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mailCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailCannedAnswer-dialog .error-list{font-size:13px}md-dialog.mailCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.mailCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.mailCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#mail-mailAccount .header{height:76px;min-height:76px;max-height:76px}#mail-mailAccount .header .goto-mailAccounts-button{margin-right:16px}#mail-mailAccount .header .mailAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#mail-mailAccount .header .mailAccount-image img{height:100%;width:auto;max-width:none}#mail-mailAccount .header .subtitle{margin:6px 0 0 0}#mail-mailAccount .mailAccount-detail-form-container{padding:24px;margin-bottom:24px}#mail-mailAccount .mailAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#mail-mailAccount .mailAccount-detail-form-container .handle{cursor:move}#mail-mailAccount .mailAccount-detail-form-container md-input-container md-switch{margin:0!important}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader{position:relative}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader.dropping .drop-text{display:flex}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .upload-button{margin-bottom:16px}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .mailAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .mailAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .mailAccount-image .media{max-height:100%}#mail-mailAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#mail-mailAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#mail-mailAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#mail-mailAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#mail-mailAccount .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#mail-mailAccount .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#mail-mailAccount .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#mail-mailAccount .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#mail-mailAccount .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#mail-mailAccount .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#mail-mailAccount .actionAppData{width:150px!important}}@media screen and (max-width:960px){#mail-mailAccount .actionAppData{width:80px!important}}#mailAccounts{position:relative}#mailAccounts>.header{height:76px;min-height:76px;max-height:76px}#mailAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#mailAccounts>.header .logo .logo-text{font-size:24px}#mailAccounts>.header md-icon{color:#fff}#mailAccounts>.header .search-input-wrapper{position:relative}#mailAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#mailAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#mailAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#mailAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#mailAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#mailAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#mailAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#mailAccounts>.header.selected-bar .close-button-wrapper{width:244px}#mailAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#mailAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#mailAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#mailAccounts #add-mailAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#mailAccounts #upload-mailAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.mailQueue-dialog{max-width:720px;width:720px}md-dialog.mailQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.mailQueue-dialog md-toolbar .title{font-size:17px}md-dialog.mailQueue-dialog md-input-container textarea{min-height:150px}md-dialog.mailQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mailQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mailQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailQueue-dialog .error-list{font-size:13px}md-dialog.mailQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailQueue-dialog .error-list .error .message{font-weight:500}md-dialog.mailQueue-dialog .error-list .error .md-button{margin:0}md-dialog.mailQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#mail-mailQueue .header{height:76px;min-height:76px;max-height:76px}#mail-mailQueue .header .goto-mailQueues-button{margin-right:16px}#mail-mailQueue .header .mailQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#mail-mailQueue .header .mailQueue-image img{height:100%;width:auto;max-width:none}#mail-mailQueue .header .subtitle{margin:6px 0 0 0}#mail-mailQueue .mailQueue-detail-form-container{padding:24px;margin-bottom:24px}#mail-mailQueue .mailQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#mail-mailQueue .mailQueue-detail-form-container .handle{cursor:move}#mail-mailQueue .mailQueue-detail-form-container md-input-container md-switch{margin:0!important}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader{position:relative}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader.dropping .drop-text{display:flex}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .upload-button{margin-bottom:16px}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .mailQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .mailQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .mailQueue-image .media{max-height:100%}#mail-mailQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#mail-mailQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#mail-mailQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#mail-mailQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#mailQueues{position:relative}#mailQueues>.header{height:76px;min-height:76px;max-height:76px}#mailQueues>.header .logo .logo-icon{margin:0 16px 0 0}#mailQueues>.header .logo .logo-text{font-size:24px}#mailQueues>.header md-icon{color:#fff}#mailQueues>.header .search-input-wrapper{position:relative}#mailQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#mailQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#mailQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#mailQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#mailQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#mailQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#mailQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#mailQueues>.header.selected-bar .close-button-wrapper{width:244px}#mailQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#mailQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#mailQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#mailQueues #add-mailQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#mailQueues #upload-mailQueue-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.mailSubstatus-dialog{max-width:720px;width:720px}md-dialog.mailSubstatus-dialog md-dialog-content{display:block;position:relative}md-dialog.mailSubstatus-dialog md-toolbar .title{font-size:17px}md-dialog.mailSubstatus-dialog md-input-container textarea{min-height:150px}md-dialog.mailSubstatus-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mailSubstatus-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mailSubstatus-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailSubstatus-dialog .error-list{font-size:13px}md-dialog.mailSubstatus-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailSubstatus-dialog .error-list .error .message{font-weight:500}md-dialog.mailSubstatus-dialog .error-list .error .md-button{margin:0}md-dialog.mailSubstatus-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailSubstatus-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#mailSubtatuses{position:relative}#mailSubtatuses>.header{height:76px;min-height:76px;max-height:76px}#mailSubtatuses>.header .logo .logo-icon{margin:0 16px 0 0}#mailSubtatuses>.header .logo .logo-text{font-size:24px}#mailSubtatuses>.header md-icon{color:#fff}#mailSubtatuses>.header .search-input-wrapper{position:relative}#mailSubtatuses>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#mailSubtatuses>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#mailSubtatuses>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#mailSubtatuses>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#mailSubtatuses>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#mailSubtatuses>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#mailSubtatuses>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#mailSubtatuses>.header.selected-bar .close-button-wrapper{width:244px}#mailSubtatuses>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#mailSubtatuses>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#mailSubtatuses>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#mailSubtatuses #add-mailSubstatus-button{position:fixed;bottom:8px;right:8px;padding:0}#mailSubtatuses #upload-mailSubstatus-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.plugin-dialog{max-width:720px;width:720px}md-dialog.plugin-dialog md-dialog-content{display:block;position:relative}md-dialog.plugin-dialog md-toolbar .title{font-size:17px}md-dialog.plugin-dialog md-input-container textarea{min-height:150px}md-dialog.plugin-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.plugin-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.plugin-dialog .date-container{padding:16px 0 24px 0}md-dialog.plugin-dialog .error-list{font-size:13px}md-dialog.plugin-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.plugin-dialog .error-list .error .message{font-weight:500}md-dialog.plugin-dialog .error-list .error .md-button{margin:0}md-dialog.plugin-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.plugin-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#marketplace-plugin .header{height:76px;min-height:76px;max-height:76px}#marketplace-plugin .header .goto-plugins-button{margin-right:16px}#marketplace-plugin .header .plugin-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#marketplace-plugin .header .plugin-image img{height:100%;width:auto;max-width:none}#marketplace-plugin .header .subtitle{margin:6px 0 0 0}#marketplace-plugin .plugin-detail-form-container{padding:24px;margin-bottom:24px}#marketplace-plugin .plugin-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#marketplace-plugin .plugin-detail-form-container .handle{cursor:move}#marketplace-plugin .plugin-detail-form-container md-input-container md-switch{margin:0!important}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader{position:relative}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader.dropping .drop-text{display:flex}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .upload-button{margin-bottom:16px}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .plugin-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .plugin-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .plugin-image .media{max-height:100%}#marketplace-plugin md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#marketplace-plugin md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#marketplace-plugin md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#marketplace-plugin md-table-container.font-size-12 td.md-cell{font-size:12px!important}#plugins{position:relative}#plugins>.header{height:76px;min-height:76px;max-height:76px}#plugins>.header .logo .logo-icon{margin:0 16px 0 0}#plugins>.header .logo .logo-text{font-size:24px}#plugins>.header md-icon{color:#fff}#plugins>.header .search-input-wrapper{position:relative}#plugins>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#plugins>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#plugins>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#plugins>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#plugins>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#plugins>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#plugins>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#plugins>.header.selected-bar .close-button-wrapper{width:244px}#plugins>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#plugins>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#plugins>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#plugins #add-plugin-button{position:fixed;bottom:8px;right:8px;padding:0}#plugins #upload-plugin-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.upload-dialog{max-width:720px;width:720px}md-dialog.upload-dialog md-dialog-content{display:block;position:relative}md-dialog.upload-dialog md-toolbar .title{font-size:17px}md-dialog.upload-dialog md-input-container textarea{min-height:150px}md-dialog.upload-dialog md-progress-linear{padding-top:16px!important}md-dialog.upload-dialog .date-container{padding:16px 0 24px 0}md-dialog.upload-dialog .error-list{font-size:13px}md-dialog.upload-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.upload-dialog .error-list .error .message{font-weight:500}md-dialog.upload-dialog .error-list .error .md-button{margin:0}md-dialog.upload-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.upload-dialog .plugin-image{overflow:hidden;max-width:148px;margin-right:16px;border:3px solid rgba(0,0,0,.12);padding:10px}md-dialog.upload-dialog .plugin-image img{width:auto;max-width:none}md-dialog.upload-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.ivrCampaign-dialog{max-width:720px;width:720px}md-dialog.ivrCampaign-dialog md-dialog-content{display:block;position:relative}md-dialog.ivrCampaign-dialog md-toolbar .title{font-size:17px}md-dialog.ivrCampaign-dialog md-input-container textarea{min-height:150px}md-dialog.ivrCampaign-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.ivrCampaign-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.ivrCampaign-dialog .date-container{padding:16px 0 24px 0}md-dialog.ivrCampaign-dialog .error-list{font-size:13px}md-dialog.ivrCampaign-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.ivrCampaign-dialog .error-list .error .message{font-weight:500}md-dialog.ivrCampaign-dialog .error-list .error .md-button{margin:0}md-dialog.ivrCampaign-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.ivrCampaign-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.hopper-dialog{max-width:720px;width:720px}md-dialog.hopper-dialog md-dialog-content{display:block;position:relative}md-dialog.hopper-dialog md-toolbar .title{font-size:17px}md-dialog.hopper-dialog md-input-container textarea{min-height:150px}md-dialog.hopper-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.hopper-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.hopper-dialog .date-container{padding:16px 0 24px 0}md-dialog.hopper-dialog .error-list{font-size:13px}md-dialog.hopper-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.hopper-dialog .error-list .error .message{font-weight:500}md-dialog.hopper-dialog .error-list .error .md-button{margin:0}md-dialog.hopper-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.hopper-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#motiondialer-ivrCampaign .header{height:76px;min-height:76px;max-height:76px}#motiondialer-ivrCampaign .header .goto-ivrCampaigns-button{margin-right:16px}#motiondialer-ivrCampaign .header .ivrCampaign-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#motiondialer-ivrCampaign .header .ivrCampaign-image img{height:100%;width:auto;max-width:none}#motiondialer-ivrCampaign .header .subtitle{margin:6px 0 0 0}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container{padding:24px;margin-bottom:24px}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container .handle{cursor:move}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container md-input-container md-switch{margin:0!important}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader{position:relative}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader.dropping .drop-text{display:flex}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .upload-button{margin-bottom:16px}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .ivrCampaign-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .ivrCampaign-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .ivrCampaign-image .media{max-height:100%}#motiondialer-ivrCampaign md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#motiondialer-ivrCampaign md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#motiondialer-ivrCampaign md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#motiondialer-ivrCampaign md-table-container.font-size-12 td.md-cell{font-size:12px!important}#ivrCampaigns{position:relative}#ivrCampaigns>.header{height:76px;min-height:76px;max-height:76px}#ivrCampaigns>.header .logo .logo-icon{margin:0 16px 0 0}#ivrCampaigns>.header .logo .logo-text{font-size:24px}#ivrCampaigns>.header md-icon{color:#fff}#ivrCampaigns>.header .search-input-wrapper{position:relative}#ivrCampaigns>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#ivrCampaigns>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#ivrCampaigns>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#ivrCampaigns>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#ivrCampaigns>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#ivrCampaigns>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#ivrCampaigns>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#ivrCampaigns>.header.selected-bar .close-button-wrapper{width:244px}#ivrCampaigns>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#ivrCampaigns>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#ivrCampaigns>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#ivrCampaigns #add-ivrCampaign-button{position:fixed;bottom:8px;right:8px;padding:0}#ivrCampaigns #upload-ivrCampaign-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.queueCampaign-dialog{max-width:720px;width:720px}md-dialog.queueCampaign-dialog md-dialog-content{display:block;position:relative}md-dialog.queueCampaign-dialog md-toolbar .title{font-size:17px}md-dialog.queueCampaign-dialog md-input-container textarea{min-height:150px}md-dialog.queueCampaign-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.queueCampaign-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.queueCampaign-dialog .date-container{padding:16px 0 24px 0}md-dialog.queueCampaign-dialog .error-list{font-size:13px}md-dialog.queueCampaign-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.queueCampaign-dialog .error-list .error .message{font-weight:500}md-dialog.queueCampaign-dialog .error-list .error .md-button{margin:0}md-dialog.queueCampaign-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.queueCampaign-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.hopper-dialog{max-width:720px;width:720px}md-dialog.hopper-dialog md-dialog-content{display:block;position:relative}md-dialog.hopper-dialog md-toolbar .title{font-size:17px}md-dialog.hopper-dialog md-input-container textarea{min-height:150px}md-dialog.hopper-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.hopper-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.hopper-dialog .date-container{padding:16px 0 24px 0}md-dialog.hopper-dialog .error-list{font-size:13px}md-dialog.hopper-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.hopper-dialog .error-list .error .message{font-weight:500}md-dialog.hopper-dialog .error-list .error .md-button{margin:0}md-dialog.hopper-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.hopper-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#motiondialer-queueCampaign .header{height:76px;min-height:76px;max-height:76px}#motiondialer-queueCampaign .header .goto-queueCampaigns-button{margin-right:16px}#motiondialer-queueCampaign .header .queueCampaign-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#motiondialer-queueCampaign .header .queueCampaign-image img{height:100%;width:auto;max-width:none}#motiondialer-queueCampaign .header .subtitle{margin:6px 0 0 0}#motiondialer-queueCampaign .queueCampaign-detail-form-container{padding:24px;margin-bottom:24px}#motiondialer-queueCampaign .queueCampaign-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#motiondialer-queueCampaign .queueCampaign-detail-form-container .handle{cursor:move}#motiondialer-queueCampaign .queueCampaign-detail-form-container md-input-container md-switch{margin:0!important}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader{position:relative}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader.dropping .drop-text{display:flex}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .upload-button{margin-bottom:16px}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .queueCampaign-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .queueCampaign-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .queueCampaign-image .media{max-height:100%}#motiondialer-queueCampaign md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#motiondialer-queueCampaign md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#motiondialer-queueCampaign md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#motiondialer-queueCampaign md-table-container.font-size-12 td.md-cell{font-size:12px!important}#queueCampaigns{position:relative}#queueCampaigns>.header{height:76px;min-height:76px;max-height:76px}#queueCampaigns>.header .logo .logo-icon{margin:0 16px 0 0}#queueCampaigns>.header .logo .logo-text{font-size:24px}#queueCampaigns>.header md-icon{color:#fff}#queueCampaigns>.header .search-input-wrapper{position:relative}#queueCampaigns>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#queueCampaigns>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#queueCampaigns>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#queueCampaigns>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#queueCampaigns>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#queueCampaigns>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#queueCampaigns>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#queueCampaigns>.header.selected-bar .close-button-wrapper{width:244px}#queueCampaigns>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#queueCampaigns>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#queueCampaigns>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#queueCampaigns #add-queueCampaign-button{position:fixed;bottom:8px;right:8px;padding:0}#queueCampaigns #upload-queueCampaign-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.predictive-dialog{max-width:720px;width:720px}md-dialog.predictive-dialog md-dialog-content{display:block;position:relative}md-dialog.predictive-dialog md-toolbar .title{font-size:17px}md-dialog.predictive-dialog md-input-container textarea{min-height:150px}md-dialog.predictive-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.predictive-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.predictive-dialog .date-container{padding:16px 0 24px 0}md-dialog.predictive-dialog .error-list{font-size:13px}md-dialog.predictive-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.predictive-dialog .error-list .error .message{font-weight:500}md-dialog.predictive-dialog .error-list .error .md-button{margin:0}md-dialog.predictive-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.predictive-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.openchannelAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.openchannelCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.openchannelCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.openchannelCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelCannedAnswer-dialog .error-list{font-size:13px}md-dialog.openchannelCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#openchannel-openchannelAccount .header{height:76px;min-height:76px;max-height:76px}#openchannel-openchannelAccount .header .goto-openchannelAccounts-button{margin-right:16px}#openchannel-openchannelAccount .header .openchannelAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#openchannel-openchannelAccount .header .openchannelAccount-image img{height:100%;width:auto;max-width:none}#openchannel-openchannelAccount .header .subtitle{margin:6px 0 0 0}#openchannel-openchannelAccount .openchannelAccount-detail-form-container{padding:24px;margin-bottom:24px}#openchannel-openchannelAccount .openchannelAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#openchannel-openchannelAccount .openchannelAccount-detail-form-container .handle{cursor:move}#openchannel-openchannelAccount .openchannelAccount-detail-form-container md-input-container md-switch{margin:0!important}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader{position:relative}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader.dropping .drop-text{display:flex}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .upload-button{margin-bottom:16px}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .openchannelAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .openchannelAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .openchannelAccount-image .media{max-height:100%}#openchannel-openchannelAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#openchannel-openchannelAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#openchannel-openchannelAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#openchannel-openchannelAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#openchannel-openchannelAccount .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#openchannel-openchannelAccount .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#openchannel-openchannelAccount .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#openchannel-openchannelAccount .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#openchannel-openchannelAccount .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#openchannel-openchannelAccount .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#openchannel-openchannelAccount .actionAppData{width:150px!important}}@media screen and (max-width:960px){#openchannel-openchannelAccount .actionAppData{width:80px!important}}#openchannelAccounts{position:relative}#openchannelAccounts>.header{height:76px;min-height:76px;max-height:76px}#openchannelAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#openchannelAccounts>.header .logo .logo-text{font-size:24px}#openchannelAccounts>.header md-icon{color:#fff}#openchannelAccounts>.header .search-input-wrapper{position:relative}#openchannelAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#openchannelAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#openchannelAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#openchannelAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#openchannelAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#openchannelAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#openchannelAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#openchannelAccounts>.header.selected-bar .close-button-wrapper{width:244px}#openchannelAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#openchannelAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#openchannelAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#openchannelAccounts #add-openchannelAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#openchannelAccounts #upload-openchannelAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.openchannelQueue-dialog{max-width:720px;width:720px}md-dialog.openchannelQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelQueue-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelQueue-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.openchannelQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.openchannelQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelQueue-dialog .error-list{font-size:13px}md-dialog.openchannelQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelQueue-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelQueue-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#openchannel-openchannelQueue .header{height:76px;min-height:76px;max-height:76px}#openchannel-openchannelQueue .header .goto-openchannelQueues-button{margin-right:16px}#openchannel-openchannelQueue .header .openchannelQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#openchannel-openchannelQueue .header .openchannelQueue-image img{height:100%;width:auto;max-width:none}#openchannel-openchannelQueue .header .subtitle{margin:6px 0 0 0}#openchannel-openchannelQueue .openchannelQueue-detail-form-container{padding:24px;margin-bottom:24px}#openchannel-openchannelQueue .openchannelQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#openchannel-openchannelQueue .openchannelQueue-detail-form-container .handle{cursor:move}#openchannel-openchannelQueue .openchannelQueue-detail-form-container md-input-container md-switch{margin:0!important}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader{position:relative}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader.dropping .drop-text{display:flex}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .upload-button{margin-bottom:16px}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .openchannelQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .openchannelQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .openchannelQueue-image .media{max-height:100%}#openchannel-openchannelQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#openchannel-openchannelQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#openchannel-openchannelQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#openchannel-openchannelQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#openchannelQueues{position:relative}#openchannelQueues>.header{height:76px;min-height:76px;max-height:76px}#openchannelQueues>.header .logo .logo-icon{margin:0 16px 0 0}#openchannelQueues>.header .logo .logo-text{font-size:24px}#openchannelQueues>.header md-icon{color:#fff}#openchannelQueues>.header .search-input-wrapper{position:relative}#openchannelQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#openchannelQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#openchannelQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#openchannelQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#openchannelQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#openchannelQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#openchannelQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#openchannelQueues>.header.selected-bar .close-button-wrapper{width:244px}#openchannelQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#openchannelQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#openchannelQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#openchannelQueues #add-openchannelQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#openchannelQueues #upload-openchannelQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}#plugin .filter-header{background-image:url(/assets/images/backgrounds/header-bg.png);color:#fff}#cloudProviders{position:relative}#cloudProviders>.header{height:76px;min-height:76px;max-height:76px}#cloudProviders>.header .logo .logo-icon{margin:0 16px 0 0}#cloudProviders>.header .logo .logo-text{font-size:24px}#cloudProviders>.header md-icon{color:#fff}#cloudProviders>.header .search-input-wrapper{position:relative}#cloudProviders>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#cloudProviders>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#cloudProviders>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#cloudProviders>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#cloudProviders>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#cloudProviders>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#cloudProviders>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#cloudProviders>.header.selected-bar .close-button-wrapper{width:244px}#cloudProviders>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#cloudProviders>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#cloudProviders>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#cloudProviders #add-cloudProvider-button{position:fixed;bottom:8px;right:8px;padding:0}#cloudProviders #upload-cloudProvider-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.cloudProvider-dialog{max-width:720px;width:720px}md-dialog.cloudProvider-dialog md-dialog-content{display:block;position:relative}md-dialog.cloudProvider-dialog md-toolbar .title{font-size:17px}md-dialog.cloudProvider-dialog md-input-container textarea{min-height:150px}md-dialog.cloudProvider-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.cloudProvider-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.cloudProvider-dialog .date-container{padding:16px 0 24px 0}md-dialog.cloudProvider-dialog .error-list{font-size:13px}md-dialog.cloudProvider-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cloudProvider-dialog .error-list .error .message{font-weight:500}md-dialog.cloudProvider-dialog .error-list .error .md-button{margin:0}md-dialog.cloudProvider-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cloudProvider-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.customization-dialog{max-width:720px;width:720px}md-dialog.customization-dialog md-dialog-content{display:block;position:relative}md-dialog.customization-dialog md-toolbar .title{font-size:17px}md-dialog.customization-dialog md-input-container textarea{min-height:150px}md-dialog.customization-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.customization-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.customization-dialog .date-container{padding:16px 0 24px 0}md-dialog.customization-dialog .error-list{font-size:13px}md-dialog.customization-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.customization-dialog .error-list .error .message{font-weight:500}md-dialog.customization-dialog .error-list .error .md-button{margin:0}md-dialog.customization-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.customization-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#customizations{position:relative}#customizations>.header{height:76px;min-height:76px;max-height:76px}#customizations>.header .logo .logo-icon{margin:0 16px 0 0}#customizations>.header .logo .logo-text{font-size:24px}#customizations>.header md-icon{color:#fff}#customizations>.header .search-input-wrapper{position:relative}#customizations>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#customizations>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#customizations>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#customizations>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#customizations>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#customizations>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#customizations>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#customizations>.header.selected-bar .close-button-wrapper{width:244px}#customizations>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#customizations>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#customizations>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#customizations>.content .customization-detail-form-container{padding:24px;margin-bottom:24px}#customizations>.content .customization-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#customizations>.content .customization-detail-form-container .handle{cursor:move}#customizations>.content .customization-detail-form-container md-input-container md-switch{margin:0!important}#customizations>.content .customization-detail-form-container #customization-image-uploader{position:relative}#customizations>.content .customization-detail-form-container #customization-image-uploader.dropping .drop-text{display:flex}#customizations>.content .customization-detail-form-container #customization-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#customizations>.content .customization-detail-form-container #customization-image-uploader .upload-button{margin-bottom:16px}#customizations>.content .customization-detail-form-container #customization-image-uploader .customization-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#customizations>.content .customization-detail-form-container #customization-image-uploader .customization-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#customizations>.content .customization-detail-form-container #customization-image-uploader .customization-image .media{max-height:100%}#customizations #add-customization-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.general-dialog{max-width:720px;width:720px}md-dialog.general-dialog md-dialog-content{display:block;position:relative}md-dialog.general-dialog md-toolbar .title{font-size:17px}md-dialog.general-dialog md-input-container textarea{min-height:150px}md-dialog.general-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.general-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.general-dialog .date-container{padding:16px 0 24px 0}md-dialog.general-dialog .error-list{font-size:13px}md-dialog.general-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.general-dialog .error-list .error .message{font-weight:500}md-dialog.general-dialog .error-list .error .md-button{margin:0}md-dialog.general-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.general-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#generals{position:relative}#generals>.header{height:76px;min-height:76px;max-height:76px}#generals>.header .logo .logo-icon{margin:0 16px 0 0}#generals>.header .logo .logo-text{font-size:24px}#generals>.header md-icon{color:#fff}#generals>.header .search-input-wrapper{position:relative}#generals>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#generals>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#generals>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#generals>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#generals>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#generals>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#generals>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#generals>.header.selected-bar .close-button-wrapper{width:244px}#generals>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#generals>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#generals>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#generals>.content .general-detail-form-container{padding:24px;margin-bottom:24px}#generals>.content .general-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#generals>.content .general-detail-form-container .handle{cursor:move}#generals>.content .general-detail-form-container md-input-container md-switch{margin:0!important}#generals>.content .general-detail-form-container #general-image-uploader{position:relative}#generals>.content .general-detail-form-container #general-image-uploader.dropping .drop-text{display:flex}#generals>.content .general-detail-form-container #general-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#generals>.content .general-detail-form-container #general-image-uploader .upload-button{margin-bottom:16px}#generals>.content .general-detail-form-container #general-image-uploader .general-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#generals>.content .general-detail-form-container #general-image-uploader .general-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#generals>.content .general-detail-form-container #general-image-uploader .general-image .media{max-height:100%}#generals #add-general-button{position:fixed;bottom:8px;right:8px;padding:0}#license{position:relative}#license .blink{animation:blinker 2s linear infinite}#license>.header{height:76px;min-height:76px;max-height:76px}#license>.header .logo .logo-icon{margin:0 16px 0 0}#license>.header .logo .logo-text{font-size:24px}#license>.header md-icon{color:#fff}#license>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#license>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#license>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#license>.content .badge{position:absolute;top:0;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);font-size:11px;font-weight:500;padding:6px 8px}md-dialog.request-dialog{max-width:720px;width:720px}md-dialog.request-dialog md-dialog-content{display:block;position:relative}md-dialog.request-dialog md-toolbar .title{font-size:17px}md-dialog.request-dialog md-input-container textarea{min-height:150px}md-dialog.request-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.request-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.request-dialog .date-container{padding:16px 0 24px 0}md-dialog.request-dialog .error-list{font-size:13px}md-dialog.request-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.request-dialog .error-list .error .message{font-weight:500}md-dialog.request-dialog .error-list .error .md-button{margin:0}md-dialog.request-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.request-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.update-dialog{max-width:720px;width:720px}md-dialog.update-dialog md-dialog-content{display:block;position:relative}md-dialog.update-dialog md-toolbar .title{font-size:17px}md-dialog.update-dialog md-input-container textarea{min-height:60px}md-dialog.update-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.update-dialog .error-list{font-size:13px}md-dialog.update-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.update-dialog .error-list .error .message{font-weight:500}md-dialog.update-dialog .error-list .error .md-button{margin:0}md-dialog.update-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.update-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.network-dialog{max-width:720px;width:720px}md-dialog.network-dialog md-dialog-content{display:block;position:relative}md-dialog.network-dialog md-toolbar .title{font-size:17px}md-dialog.network-dialog md-input-container textarea{min-height:150px}md-dialog.network-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.network-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.network-dialog .date-container{padding:16px 0 24px 0}md-dialog.network-dialog .error-list{font-size:13px}md-dialog.network-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.network-dialog .error-list .error .message{font-weight:500}md-dialog.network-dialog .error-list .error .md-button{margin:0}md-dialog.network-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.network-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#networks{position:relative}#networks>.header{height:76px;min-height:76px;max-height:76px}#networks>.header .logo .logo-icon{margin:0 16px 0 0}#networks>.header .logo .logo-text{font-size:24px}#networks>.header md-icon{color:#fff}#networks>.header .search-input-wrapper{position:relative}#networks>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#networks>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#networks>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#networks>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#networks>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#networks>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#networks>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#networks>.header.selected-bar .close-button-wrapper{width:244px}#networks>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#networks>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#networks>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#networks #add-network-button{position:fixed;bottom:8px;right:8px;padding:0}#networks #upload-network-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.smtp-dialog{max-width:720px;width:720px}md-dialog.smtp-dialog md-dialog-content{display:block;position:relative}md-dialog.smtp-dialog md-toolbar .title{font-size:17px}md-dialog.smtp-dialog md-input-container textarea{min-height:150px}md-dialog.smtp-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.smtp-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.smtp-dialog .date-container{padding:16px 0 24px 0}md-dialog.smtp-dialog .error-list{font-size:13px}md-dialog.smtp-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smtp-dialog .error-list .error .message{font-weight:500}md-dialog.smtp-dialog .error-list .error .md-button{margin:0}md-dialog.smtp-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smtp-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#smtps{position:relative}#smtps>.header{height:76px;min-height:76px;max-height:76px}#smtps>.header .logo .logo-icon{margin:0 16px 0 0}#smtps>.header .logo .logo-text{font-size:24px}#smtps>.header md-icon{color:#fff}#smtps>.header .search-input-wrapper{position:relative}#smtps>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#smtps>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#smtps>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#smtps>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#smtps>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#smtps>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#smtps>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#smtps>.header.selected-bar .close-button-wrapper{width:244px}#smtps>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#smtps>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#smtps>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#smtps>.content .smtp-detail-form-container{padding:24px;margin-bottom:24px}#smtps>.content .smtp-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#smtps>.content .smtp-detail-form-container .handle{cursor:move}#smtps>.content .smtp-detail-form-container md-input-container md-switch{margin:0!important}#smtps>.content .smtp-detail-form-container #smtp-image-uploader{position:relative}#smtps>.content .smtp-detail-form-container #smtp-image-uploader.dropping .drop-text{display:flex}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .upload-button{margin-bottom:16px}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .smtp-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .smtp-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .smtp-image .media{max-height:100%}#smtps #add-smtp-button{position:fixed;bottom:8px;right:8px;padding:0}#system>.header{height:76px;min-height:76px;max-height:76px}#system>.header .logo .logo-icon{margin:0 16px 0 0}#system>.header .logo .logo-text{font-size:24px}#system>.header md-icon{color:#fff}#system .system-detail-form-container{padding:24px;margin-bottom:24px}#system .system-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#system .system-detail-form-container .handle{cursor:move}#system .system-detail-form-container md-input-container md-switch{margin:0!important}#system .system-detail-form-container #system-image-uploader{position:relative}#system .system-detail-form-container #system-image-uploader.dropping .drop-text{display:flex}#system .system-detail-form-container #system-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#system .system-detail-form-container #system-image-uploader .upload-button{margin-bottom:16px}#system .system-detail-form-container #system-image-uploader .system-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#system .system-detail-form-container #system-image-uploader .system-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#system .system-detail-form-container #system-image-uploader .system-image .media{max-height:100%}#updates{position:relative}#updates>.header{height:76px;min-height:76px;max-height:76px}#updates>.header .logo .logo-icon{margin:0 16px 0 0}#updates>.header .logo .logo-text{font-size:24px}#updates>.header md-icon{color:#fff}#updates>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#updates>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#updates>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.smsAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.smsCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.smsCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.smsCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.smsCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.smsCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.smsCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsCannedAnswer-dialog .error-list{font-size:13px}md-dialog.smsCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.smsCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.smsCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#sms-smsAccount .header{height:76px;min-height:76px;max-height:76px}#sms-smsAccount .header .goto-smsAccounts-button{margin-right:16px}#sms-smsAccount .header .smsAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#sms-smsAccount .header .smsAccount-image img{height:100%;width:auto;max-width:none}#sms-smsAccount .header .subtitle{margin:6px 0 0 0}#sms-smsAccount .smsAccount-detail-form-container{padding:24px;margin-bottom:24px}#sms-smsAccount .smsAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#sms-smsAccount .smsAccount-detail-form-container .handle{cursor:move}#sms-smsAccount .smsAccount-detail-form-container md-input-container md-switch{margin:0!important}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader{position:relative}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader.dropping .drop-text{display:flex}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .upload-button{margin-bottom:16px}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .smsAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .smsAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .smsAccount-image .media{max-height:100%}#sms-smsAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#sms-smsAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#sms-smsAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#sms-smsAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#sms-smsAccount .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#sms-smsAccount .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#sms-smsAccount .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#sms-smsAccount .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#sms-smsAccount .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#sms-smsAccount .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#sms-smsAccount .actionAppData{width:150px!important}}@media screen and (max-width:960px){#sms-smsAccount .actionAppData{width:80px!important}}#smsAccounts{position:relative}#smsAccounts>.header{height:76px;min-height:76px;max-height:76px}#smsAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#smsAccounts>.header .logo .logo-text{font-size:24px}#smsAccounts>.header md-icon{color:#fff}#smsAccounts>.header .search-input-wrapper{position:relative}#smsAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#smsAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#smsAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#smsAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#smsAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#smsAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#smsAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#smsAccounts>.header.selected-bar .close-button-wrapper{width:244px}#smsAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#smsAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#smsAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#smsAccounts #add-smsAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#smsAccounts #upload-smsAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.smsQueue-dialog{max-width:720px;width:720px}md-dialog.smsQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.smsQueue-dialog md-toolbar .title{font-size:17px}md-dialog.smsQueue-dialog md-input-container textarea{min-height:150px}md-dialog.smsQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.smsQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.smsQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsQueue-dialog .error-list{font-size:13px}md-dialog.smsQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsQueue-dialog .error-list .error .message{font-weight:500}md-dialog.smsQueue-dialog .error-list .error .md-button{margin:0}md-dialog.smsQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#sms-smsQueue .header{height:76px;min-height:76px;max-height:76px}#sms-smsQueue .header .goto-smsQueues-button{margin-right:16px}#sms-smsQueue .header .smsQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#sms-smsQueue .header .smsQueue-image img{height:100%;width:auto;max-width:none}#sms-smsQueue .header .subtitle{margin:6px 0 0 0}#sms-smsQueue .smsQueue-detail-form-container{padding:24px;margin-bottom:24px}#sms-smsQueue .smsQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#sms-smsQueue .smsQueue-detail-form-container .handle{cursor:move}#sms-smsQueue .smsQueue-detail-form-container md-input-container md-switch{margin:0!important}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader{position:relative}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader.dropping .drop-text{display:flex}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .upload-button{margin-bottom:16px}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .smsQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .smsQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .smsQueue-image .media{max-height:100%}#sms-smsQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#sms-smsQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#sms-smsQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#sms-smsQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#smsQueues{position:relative}#smsQueues>.header{height:76px;min-height:76px;max-height:76px}#smsQueues>.header .logo .logo-icon{margin:0 16px 0 0}#smsQueues>.header .logo .logo-text{font-size:24px}#smsQueues>.header md-icon{color:#fff}#smsQueues>.header .search-input-wrapper{position:relative}#smsQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#smsQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#smsQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#smsQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#smsQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#smsQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#smsQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#smsQueues>.header.selected-bar .close-button-wrapper{width:244px}#smsQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#smsQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#smsQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#smsQueues #add-smsQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#smsQueues #upload-smsQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#agents{position:relative}#agents>.header{height:76px;min-height:76px;max-height:76px}#agents>.header .logo .logo-icon{margin:0 16px 0 0}#agents>.header .logo .logo-text{font-size:24px}#agents>.header md-icon{color:#fff}#agents>.header .search-input-wrapper{position:relative}#agents>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#agents>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#agents>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#agents>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#agents>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#agents>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#agents>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#agents>.header.selected-bar .close-button-wrapper{width:244px}#agents>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#agents>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#agents>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#agents #add-agent-button{position:fixed;bottom:8px;right:8px;padding:0}#agents #upload-agent-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.agent-dialog{max-width:720px;width:720px}md-dialog.agent-dialog md-dialog-content{display:block;position:relative}md-dialog.agent-dialog md-toolbar .title{font-size:17px}md-dialog.agent-dialog md-input-container textarea{min-height:150px}md-dialog.agent-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.agent-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.agent-dialog .date-container{padding:16px 0 24px 0}md-dialog.agent-dialog .error-list{font-size:13px}md-dialog.agent-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.agent-dialog .error-list .error .message{font-weight:500}md-dialog.agent-dialog .error-list .error .md-button{margin:0}md-dialog.agent-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.agent-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#staff-agent .header{height:76px;min-height:76px;max-height:76px}#staff-agent .header .goto-agents-button{margin-right:16px}#staff-agent .header .agent-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#staff-agent .header .agent-image img{height:100%;width:auto;max-width:none}#staff-agent .header .subtitle{margin:6px 0 0 0}#staff-agent .agent-detail-form-container{padding:24px;margin-bottom:24px}#staff-agent .agent-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#staff-agent .agent-detail-form-container .handle{cursor:move}#staff-agent .agent-detail-form-container md-input-container md-switch{margin:0!important}#staff-agent .agent-detail-form-container #agent-image-uploader{position:relative}#staff-agent .agent-detail-form-container #agent-image-uploader.dropping .drop-text{display:flex}#staff-agent .agent-detail-form-container #agent-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#staff-agent .agent-detail-form-container #agent-image-uploader .upload-button{margin-bottom:16px}#staff-agent .agent-detail-form-container #agent-image-uploader .agent-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#staff-agent .agent-detail-form-container #agent-image-uploader .agent-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#staff-agent .agent-detail-form-container #agent-image-uploader .agent-image .media{max-height:100%}#staff-agent md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#staff-agent md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#staff-agent md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#staff-agent md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.team-dialog{max-width:720px;width:720px}md-dialog.team-dialog md-dialog-content{display:block;position:relative}md-dialog.team-dialog md-toolbar .title{font-size:17px}md-dialog.team-dialog md-input-container textarea{min-height:150px}md-dialog.team-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.team-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.team-dialog .date-container{padding:16px 0 24px 0}md-dialog.team-dialog .error-list{font-size:13px}md-dialog.team-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.team-dialog .error-list .error .message{font-weight:500}md-dialog.team-dialog .error-list .error .md-button{margin:0}md-dialog.team-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.team-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#teams{position:relative}#teams>.header{height:76px;min-height:76px;max-height:76px}#teams>.header .logo .logo-icon{margin:0 16px 0 0}#teams>.header .logo .logo-text{font-size:24px}#teams>.header md-icon{color:#fff}#teams>.header .search-input-wrapper{position:relative}#teams>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#teams>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#teams>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#teams>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#teams>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#teams>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#teams>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#teams>.header.selected-bar .close-button-wrapper{width:244px}#teams>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#teams>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#teams>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#teams #add-team-button{position:fixed;bottom:8px;right:8px;padding:0}#teams #upload-team-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.telephone-dialog{max-width:720px;width:720px}md-dialog.telephone-dialog md-dialog-content{display:block;position:relative}md-dialog.telephone-dialog md-toolbar .title{font-size:17px}md-dialog.telephone-dialog md-input-container textarea{min-height:150px}md-dialog.telephone-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.telephone-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.telephone-dialog .date-container{padding:16px 0 24px 0}md-dialog.telephone-dialog .error-list{font-size:13px}md-dialog.telephone-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.telephone-dialog .error-list .error .message{font-weight:500}md-dialog.telephone-dialog .error-list .error .md-button{margin:0}md-dialog.telephone-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.telephone-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#staff-telephone .header{height:76px;min-height:76px;max-height:76px}#staff-telephone .header .goto-telephones-button{margin-right:16px}#staff-telephone .header .telephone-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#staff-telephone .header .telephone-image img{height:100%;width:auto;max-width:none}#staff-telephone .header .subtitle{margin:6px 0 0 0}#staff-telephone .telephone-detail-form-container{padding:24px;margin-bottom:24px}#staff-telephone .telephone-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#staff-telephone .telephone-detail-form-container .handle{cursor:move}#staff-telephone .telephone-detail-form-container md-input-container md-switch{margin:0!important}#staff-telephone .telephone-detail-form-container #telephone-image-uploader{position:relative}#staff-telephone .telephone-detail-form-container #telephone-image-uploader.dropping .drop-text{display:flex}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .upload-button{margin-bottom:16px}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .telephone-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .telephone-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .telephone-image .media{max-height:100%}#staff-telephone md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#staff-telephone md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#staff-telephone md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#staff-telephone md-table-container.font-size-12 td.md-cell{font-size:12px!important}#telephones{position:relative}#telephones>.header{height:76px;min-height:76px;max-height:76px}#telephones>.header .logo .logo-icon{margin:0 16px 0 0}#telephones>.header .logo .logo-text{font-size:24px}#telephones>.header md-icon{color:#fff}#telephones>.header .search-input-wrapper{position:relative}#telephones>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#telephones>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#telephones>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#telephones>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#telephones>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#telephones>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#telephones>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#telephones>.header.selected-bar .close-button-wrapper{width:244px}#telephones>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#telephones>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#telephones>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#telephones #add-telephone-button{position:fixed;bottom:8px;right:8px;padding:0}#telephones #upload-telephone-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.userProfile-dialog{max-width:720px;width:720px}md-dialog.userProfile-dialog md-dialog-content{display:block;position:relative}md-dialog.userProfile-dialog md-toolbar .title{font-size:17px}md-dialog.userProfile-dialog md-input-container textarea{min-height:150px}md-dialog.userProfile-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.userProfile-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.userProfile-dialog .date-container{padding:16px 0 24px 0}md-dialog.userProfile-dialog .error-list{font-size:13px}md-dialog.userProfile-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.userProfile-dialog .error-list .error .message{font-weight:500}md-dialog.userProfile-dialog .error-list .error .md-button{margin:0}md-dialog.userProfile-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.userProfile-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#staff-userProfile .header{height:76px;min-height:76px;max-height:76px}#staff-userProfile .header .goto-userProfiles-button{margin-right:16px}#staff-userProfile .header .userProfile-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#staff-userProfile .header .userProfile-image img{height:100%;width:auto;max-width:none}#staff-userProfile .header .subtitle{margin:6px 0 0 0}#staff-userProfile .userProfile-detail-form-container{padding:24px;margin-bottom:24px}#staff-userProfile .userProfile-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#staff-userProfile .userProfile-detail-form-container .handle{cursor:move}#staff-userProfile .userProfile-detail-form-container md-input-container md-switch{margin:0!important}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader{position:relative}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader.dropping .drop-text{display:flex}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .upload-button{margin-bottom:16px}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .userProfile-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .userProfile-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .userProfile-image .media{max-height:100%}#staff-userProfile md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#staff-userProfile md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#staff-userProfile md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#staff-userProfile md-table-container.font-size-12 td.md-cell{font-size:12px!important}#userProfiles{position:relative}#userProfiles>.header{height:76px;min-height:76px;max-height:76px}#userProfiles>.header .logo .logo-icon{margin:0 16px 0 0}#userProfiles>.header .logo .logo-text{font-size:24px}#userProfiles>.header md-icon{color:#fff}#userProfiles>.header .search-input-wrapper{position:relative}#userProfiles>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#userProfiles>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#userProfiles>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#userProfiles>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#userProfiles>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#userProfiles>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#userProfiles>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#userProfiles>.header.selected-bar .close-button-wrapper{width:244px}#userProfiles>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#userProfiles>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#userProfiles>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#userProfiles #add-userProfile-button{position:fixed;bottom:8px;right:8px;padding:0}#userProfiles #upload-userProfile-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.user-dialog{max-width:720px;width:720px}md-dialog.user-dialog md-dialog-content{display:block;position:relative}md-dialog.user-dialog md-toolbar .title{font-size:17px}md-dialog.user-dialog md-input-container textarea{min-height:150px}md-dialog.user-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.user-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.user-dialog .date-container{padding:16px 0 24px 0}md-dialog.user-dialog .error-list{font-size:13px}md-dialog.user-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.user-dialog .error-list .error .message{font-weight:500}md-dialog.user-dialog .error-list .error .md-button{margin:0}md-dialog.user-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.user-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#staff-user .header{height:76px;min-height:76px;max-height:76px}#staff-user .header .goto-users-button{margin-right:16px}#staff-user .header .user-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#staff-user .header .user-image img{height:100%;width:auto;max-width:none}#staff-user .header .subtitle{margin:6px 0 0 0}#staff-user .user-detail-form-container{padding:24px;margin-bottom:24px}#staff-user .user-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#staff-user .user-detail-form-container .handle{cursor:move}#staff-user .user-detail-form-container md-input-container md-switch{margin:0!important}#staff-user .user-detail-form-container #user-image-uploader{position:relative}#staff-user .user-detail-form-container #user-image-uploader.dropping .drop-text{display:flex}#staff-user .user-detail-form-container #user-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#staff-user .user-detail-form-container #user-image-uploader .upload-button{margin-bottom:16px}#staff-user .user-detail-form-container #user-image-uploader .user-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#staff-user .user-detail-form-container #user-image-uploader .user-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#staff-user .user-detail-form-container #user-image-uploader .user-image .media{max-height:100%}#staff-user md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#staff-user md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#staff-user md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#staff-user md-table-container.font-size-12 td.md-cell{font-size:12px!important}#users{position:relative}#users>.header{height:76px;min-height:76px;max-height:76px}#users>.header .logo .logo-icon{margin:0 16px 0 0}#users>.header .logo .logo-text{font-size:24px}#users>.header md-icon{color:#fff}#users>.header .search-input-wrapper{position:relative}#users>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#users>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#users>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#users>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#users>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#users>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#users>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#users>.header.selected-bar .close-button-wrapper{width:244px}#users>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#users>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#users>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#users #add-user-button{position:fixed;bottom:8px;right:8px;padding:0}#users #upload-user-button{position:fixed;bottom:8px;right:8px;padding:0}#cannedAnswers{position:relative}#cannedAnswers>.header{height:76px;min-height:76px;max-height:76px}#cannedAnswers>.header .logo .logo-icon{margin:0 16px 0 0}#cannedAnswers>.header .logo .logo-text{font-size:24px}#cannedAnswers>.header md-icon{color:#fff}#cannedAnswers>.header .search-input-wrapper{position:relative}#cannedAnswers>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#cannedAnswers>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#cannedAnswers>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#cannedAnswers>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#cannedAnswers>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#cannedAnswers>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#cannedAnswers>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#cannedAnswers>.header.selected-bar .close-button-wrapper{width:244px}#cannedAnswers>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#cannedAnswers>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#cannedAnswers>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#cannedAnswers #add-cannedAnswer-button{position:fixed;bottom:8px;right:8px;padding:0}#cannedAnswers #upload-cannedAnswer-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.cannedAnswer-dialog{max-width:720px;width:720px}md-dialog.cannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.cannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.cannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.cannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.cannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.cannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.cannedAnswer-dialog .error-list{font-size:13px}md-dialog.cannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.cannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.cannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.customDashboard-dialog{max-width:720px;width:720px}md-dialog.customDashboard-dialog md-dialog-content{display:block;position:relative}md-dialog.customDashboard-dialog md-toolbar .title{font-size:17px}md-dialog.customDashboard-dialog md-input-container textarea{min-height:150px}md-dialog.customDashboard-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.customDashboard-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.customDashboard-dialog .date-container{padding:16px 0 24px 0}md-dialog.customDashboard-dialog .error-list{font-size:13px}md-dialog.customDashboard-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.customDashboard-dialog .error-list .error .message{font-weight:500}md-dialog.customDashboard-dialog .error-list .error .md-button{margin:0}md-dialog.customDashboard-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.customDashboard-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#customDashboards{position:relative}#customDashboards>.header{height:76px;min-height:76px;max-height:76px}#customDashboards>.header .logo .logo-icon{margin:0 16px 0 0}#customDashboards>.header .logo .logo-text{font-size:24px}#customDashboards>.header md-icon{color:#fff}#customDashboards>.header .search-input-wrapper{position:relative}#customDashboards>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#customDashboards>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#customDashboards>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#customDashboards>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#customDashboards>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#customDashboards>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#customDashboards>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#customDashboards>.header.selected-bar .close-button-wrapper{width:244px}#customDashboards>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#customDashboards>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#customDashboards>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#customDashboards #add-customDashboard-button{position:fixed;bottom:8px;right:8px;padding:0}#customDashboards #upload-customDashboard-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.dashboarditem-dialog{max-width:720px;width:720px}md-dialog.dashboarditem-dialog md-dialog-content{display:block;position:relative}md-dialog.dashboarditem-dialog md-toolbar .title{font-size:17px}md-dialog.dashboarditem-dialog md-input-container textarea{min-height:150px}md-dialog.dashboarditem-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.dashboarditem-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.dashboarditem-dialog .date-container{padding:16px 0 24px 0}md-dialog.dashboarditem-dialog .error-list{font-size:13px}md-dialog.dashboarditem-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.dashboarditem-dialog .error-list .error .message{font-weight:500}md-dialog.dashboarditem-dialog .error-list .error .md-button{margin:0}md-dialog.dashboarditem-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.dashboarditem-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tools-customDashboard .header{height:76px;min-height:76px;max-height:76px}#tools-customDashboard .header .goto-customDashboards-button{margin-right:16px}#tools-customDashboard .header .customDashboard-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#tools-customDashboard .header .customDashboard-image img{height:100%;width:auto;max-width:none}#tools-customDashboard .header .subtitle{margin:6px 0 0 0}#tools-customDashboard .customDashboard-detail-form-container{padding:24px;margin-bottom:24px}#tools-customDashboard .customDashboard-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#tools-customDashboard .customDashboard-detail-form-container .handle{cursor:move}#tools-customDashboard .customDashboard-detail-form-container md-input-container md-switch{margin:0!important}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader{position:relative}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader.dropping .drop-text{display:flex}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .upload-button{margin-bottom:16px}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .customDashboard-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .customDashboard-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .customDashboard-image .media{max-height:100%}#tools-customDashboard md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#tools-customDashboard md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#tools-customDashboard md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#tools-customDashboard md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.disposition-dialog{max-width:720px;width:720px}md-dialog.disposition-dialog md-dialog-content{display:block;position:relative}md-dialog.disposition-dialog md-toolbar .title{font-size:17px}md-dialog.disposition-dialog md-input-container textarea{min-height:150px}md-dialog.disposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.disposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.disposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.disposition-dialog .error-list{font-size:13px}md-dialog.disposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.disposition-dialog .error-list .error .message{font-weight:500}md-dialog.disposition-dialog .error-list .error .md-button{margin:0}md-dialog.disposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.disposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#dispositions{position:relative}#dispositions>.header{height:76px;min-height:76px;max-height:76px}#dispositions>.header .logo .logo-icon{margin:0 16px 0 0}#dispositions>.header .logo .logo-text{font-size:24px}#dispositions>.header md-icon{color:#fff}#dispositions>.header .search-input-wrapper{position:relative}#dispositions>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#dispositions>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#dispositions>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#dispositions>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#dispositions>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#dispositions>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#dispositions>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#dispositions>.header.selected-bar .close-button-wrapper{width:244px}#dispositions>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#dispositions>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#dispositions>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#dispositions #add-disposition-button{position:fixed;bottom:8px;right:8px;padding:0}#dispositions #upload-disposition-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.interval-dialog{max-width:720px;width:720px}md-dialog.interval-dialog md-dialog-content{display:block;position:relative}md-dialog.interval-dialog md-toolbar .title{font-size:17px}md-dialog.interval-dialog md-input-container textarea{min-height:150px}md-dialog.interval-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.interval-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.interval-dialog .date-container{padding:16px 0 24px 0}md-dialog.interval-dialog .error-list{font-size:13px}md-dialog.interval-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.interval-dialog .error-list .error .message{font-weight:500}md-dialog.interval-dialog .error-list .error .md-button{margin:0}md-dialog.interval-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.interval-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.interval-dialog{max-width:720px;width:720px}md-dialog.interval-dialog md-dialog-content{display:block;position:relative}md-dialog.interval-dialog md-toolbar .title{font-size:17px}md-dialog.interval-dialog md-input-container textarea{min-height:150px}md-dialog.interval-dialog .date-container{padding:16px 0 24px 0}md-dialog.interval-dialog .error-list{font-size:13px}md-dialog.interval-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.interval-dialog .error-list .error .message{font-weight:500}md-dialog.interval-dialog .error-list .error .md-button{margin:0}md-dialog.interval-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.interval-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.interval-dialog{max-width:720px;width:720px}md-dialog.interval-dialog md-dialog-content{display:block;position:relative}md-dialog.interval-dialog md-toolbar .title{font-size:17px}md-dialog.interval-dialog md-input-container textarea{min-height:150px}md-dialog.interval-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.interval-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.interval-dialog .date-container{padding:16px 0 24px 0}md-dialog.interval-dialog .error-list{font-size:13px}md-dialog.interval-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.interval-dialog .error-list .error .message{font-weight:500}md-dialog.interval-dialog .error-list .error .md-button{margin:0}md-dialog.interval-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.interval-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tools-interval .header{height:76px;min-height:76px;max-height:76px}#tools-interval .header .goto-intervals-button{margin-right:16px}#tools-interval .header .interval-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#tools-interval .header .interval-image img{height:100%;width:auto;max-width:none}#tools-interval .header .subtitle{margin:6px 0 0 0}#tools-interval .interval-detail-form-container{padding:24px;margin-bottom:24px}#tools-interval .interval-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#tools-interval .interval-detail-form-container .handle{cursor:move}#tools-interval .interval-detail-form-container md-input-container md-switch{margin:0!important}#tools-interval .interval-detail-form-container #interval-image-uploader{position:relative}#tools-interval .interval-detail-form-container #interval-image-uploader.dropping .drop-text{display:flex}#tools-interval .interval-detail-form-container #interval-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#tools-interval .interval-detail-form-container #interval-image-uploader .upload-button{margin-bottom:16px}#tools-interval .interval-detail-form-container #interval-image-uploader .interval-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#tools-interval .interval-detail-form-container #interval-image-uploader .interval-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#tools-interval .interval-detail-form-container #interval-image-uploader .interval-image .media{max-height:100%}#tools-interval md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#tools-interval md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#tools-interval md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#tools-interval md-table-container.font-size-12 td.md-cell{font-size:12px!important}#intervals{position:relative}#intervals>.header{height:76px;min-height:76px;max-height:76px}#intervals>.header .logo .logo-icon{margin:0 16px 0 0}#intervals>.header .logo .logo-text{font-size:24px}#intervals>.header md-icon{color:#fff}#intervals>.header .search-input-wrapper{position:relative}#intervals>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#intervals>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#intervals>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#intervals>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#intervals>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#intervals>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#intervals>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#intervals>.header.selected-bar .close-button-wrapper{width:244px}#intervals>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#intervals>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#intervals>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#intervals #add-interval-button{position:fixed;bottom:8px;right:8px;padding:0}#intervals #upload-interval-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.pause-dialog{max-width:720px;width:720px}md-dialog.pause-dialog md-dialog-content{display:block;position:relative}md-dialog.pause-dialog md-toolbar .title{font-size:17px}md-dialog.pause-dialog md-input-container textarea{min-height:150px}md-dialog.pause-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.pause-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.pause-dialog .date-container{padding:16px 0 24px 0}md-dialog.pause-dialog .error-list{font-size:13px}md-dialog.pause-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.pause-dialog .error-list .error .message{font-weight:500}md-dialog.pause-dialog .error-list .error .md-button{margin:0}md-dialog.pause-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.pause-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#pauses{position:relative}#pauses>.header{height:76px;min-height:76px;max-height:76px}#pauses>.header .logo .logo-icon{margin:0 16px 0 0}#pauses>.header .logo .logo-text{font-size:24px}#pauses>.header md-icon{color:#fff}#pauses>.header .search-input-wrapper{position:relative}#pauses>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#pauses>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#pauses>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#pauses>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#pauses>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#pauses>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#pauses>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#pauses>.header.selected-bar .close-button-wrapper{width:244px}#pauses>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#pauses>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#pauses>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#pauses #add-pause-button{position:fixed;bottom:8px;right:8px;padding:0}#pauses #upload-pause-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.schedule-dialog{max-width:720px;width:720px}md-dialog.schedule-dialog md-dialog-content{display:block;position:relative}md-dialog.schedule-dialog md-toolbar .title{font-size:17px}md-dialog.schedule-dialog md-input-container textarea{min-height:150px}md-dialog.schedule-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.schedule-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.schedule-dialog .date-container{padding:16px 0 24px 0}md-dialog.schedule-dialog .error-list{font-size:13px}md-dialog.schedule-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.schedule-dialog .error-list .error .message{font-weight:500}md-dialog.schedule-dialog .error-list .error .md-button{margin:0}md-dialog.schedule-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.schedule-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#schedules{position:relative}#schedules>.header{height:76px;min-height:76px;max-height:76px}#schedules>.header .logo .logo-icon{margin:0 16px 0 0}#schedules>.header .logo .logo-text{font-size:24px}#schedules>.header md-icon{color:#fff}#schedules>.header .search-input-wrapper{position:relative}#schedules>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#schedules>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#schedules>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#schedules>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#schedules>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#schedules>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#schedules>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#schedules>.header.selected-bar .close-button-wrapper{width:244px}#schedules>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#schedules>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#schedules>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#schedules #add-schedule-button{position:fixed;bottom:8px;right:8px;padding:0}#schedules #upload-schedule-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.sound-dialog{max-width:720px;width:720px}md-dialog.sound-dialog md-dialog-content{display:block;position:relative}md-dialog.sound-dialog md-toolbar .title{font-size:17px}md-dialog.sound-dialog md-input-container textarea{min-height:150px}md-dialog.sound-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.sound-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.sound-dialog .date-container{padding:16px 0 24px 0}md-dialog.sound-dialog .error-list{font-size:13px}md-dialog.sound-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.sound-dialog .error-list .error .message{font-weight:500}md-dialog.sound-dialog .error-list .error .md-button{margin:0}md-dialog.sound-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.sound-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#sounds{position:relative}#sounds>.header{height:76px;min-height:76px;max-height:76px}#sounds>.header .logo .logo-icon{margin:0 16px 0 0}#sounds>.header .logo .logo-text{font-size:24px}#sounds>.header md-icon{color:#fff}#sounds>.header .search-input-wrapper{position:relative}#sounds>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#sounds>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#sounds>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#sounds>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#sounds>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#sounds>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#sounds>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#sounds>.header.selected-bar .close-button-wrapper{width:244px}#sounds>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#sounds>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#sounds>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#sounds #add-sound-button{position:fixed;bottom:8px;right:8px;padding:0}#sounds #upload-sound-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.upload-dialog{max-width:720px;width:720px}md-dialog.upload-dialog md-dialog-content{display:block;position:relative}md-dialog.upload-dialog md-toolbar .title{font-size:17px}md-dialog.upload-dialog md-input-container textarea{min-height:150px}md-dialog.upload-dialog md-progress-linear{padding-top:16px!important}md-dialog.upload-dialog .date-container{padding:16px 0 24px 0}md-dialog.upload-dialog .error-list{font-size:13px}md-dialog.upload-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.upload-dialog .error-list .error .message{font-weight:500}md-dialog.upload-dialog .error-list .error .md-button{margin:0}md-dialog.upload-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.upload-dialog .sound-image{overflow:hidden;max-width:148px;margin-right:16px;border:3px solid rgba(0,0,0,.12);padding:10px}md-dialog.upload-dialog .sound-image img{width:auto;max-width:none}md-dialog.upload-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.tag-dialog{max-width:720px;width:720px}md-dialog.tag-dialog md-dialog-content{display:block;position:relative}md-dialog.tag-dialog md-toolbar .title{font-size:17px}md-dialog.tag-dialog md-input-container textarea{min-height:150px}md-dialog.tag-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.tag-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.tag-dialog .date-container{padding:16px 0 24px 0}md-dialog.tag-dialog .error-list{font-size:13px}md-dialog.tag-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.tag-dialog .error-list .error .message{font-weight:500}md-dialog.tag-dialog .error-list .error .md-button{margin:0}md-dialog.tag-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.tag-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tags{position:relative}#tags>.header{height:76px;min-height:76px;max-height:76px}#tags>.header .logo .logo-icon{margin:0 16px 0 0}#tags>.header .logo .logo-text{font-size:24px}#tags>.header md-icon{color:#fff}#tags>.header .search-input-wrapper{position:relative}#tags>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#tags>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#tags>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#tags>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#tags>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#tags>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#tags>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#tags>.header.selected-bar .close-button-wrapper{width:244px}#tags>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#tags>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#tags>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#tags #add-tag-button{position:fixed;bottom:8px;right:8px;padding:0}#tags #upload-tag-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.template-dialog{max-width:720px;width:720px}md-dialog.template-dialog md-dialog-content{display:block;position:relative}md-dialog.template-dialog md-toolbar .title{font-size:17px}md-dialog.template-dialog md-input-container textarea{min-height:150px}md-dialog.template-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.template-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.template-dialog .date-container{padding:16px 0 24px 0}md-dialog.template-dialog .error-list{font-size:13px}md-dialog.template-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.template-dialog .error-list .error .message{font-weight:500}md-dialog.template-dialog .error-list .error .md-button{margin:0}md-dialog.template-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.template-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#templates{position:relative}#templates>.header{height:76px;min-height:76px;max-height:76px}#templates>.header .logo .logo-icon{margin:0 16px 0 0}#templates>.header .logo .logo-text{font-size:24px}#templates>.header md-icon{color:#fff}#templates>.header .search-input-wrapper{position:relative}#templates>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#templates>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#templates>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#templates>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#templates>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#templates>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#templates>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#templates>.header.selected-bar .close-button-wrapper{width:244px}#templates>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#templates>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#templates>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#templates #add-template-button{position:fixed;bottom:8px;right:8px;padding:0}#templates #upload-template-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.trigger-dialog{max-width:720px;width:720px}md-dialog.trigger-dialog md-dialog-content{display:block;position:relative}md-dialog.trigger-dialog md-toolbar .title{font-size:17px}md-dialog.trigger-dialog md-input-container textarea{min-height:150px}md-dialog.trigger-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.trigger-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.trigger-dialog .date-container{padding:16px 0 24px 0}md-dialog.trigger-dialog .error-list{font-size:13px}md-dialog.trigger-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.trigger-dialog .error-list .error .message{font-weight:500}md-dialog.trigger-dialog .error-list .error .md-button{margin:0}md-dialog.trigger-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.trigger-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.action-dialog{max-width:720px;width:720px}md-dialog.action-dialog md-dialog-content{display:block;position:relative}md-dialog.action-dialog md-toolbar .title{font-size:17px}md-dialog.action-dialog md-input-container textarea{min-height:150px}md-dialog.action-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.action-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.action-dialog .date-container{padding:16px 0 24px 0}md-dialog.action-dialog .error-list{font-size:13px}md-dialog.action-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.action-dialog .error-list .error .message{font-weight:500}md-dialog.action-dialog .error-list .error .md-button{margin:0}md-dialog.action-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.action-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.allCondition-dialog{max-width:720px;width:720px}md-dialog.allCondition-dialog md-dialog-content{display:block;position:relative}md-dialog.allCondition-dialog md-toolbar .title{font-size:17px}md-dialog.allCondition-dialog md-input-container textarea{min-height:150px}md-dialog.allCondition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.allCondition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.allCondition-dialog .date-container{padding:16px 0 24px 0}md-dialog.allCondition-dialog .error-list{font-size:13px}md-dialog.allCondition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.allCondition-dialog .error-list .error .message{font-weight:500}md-dialog.allCondition-dialog .error-list .error .md-button{margin:0}md-dialog.allCondition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.allCondition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.anyCondition-dialog{max-width:720px;width:720px}md-dialog.anyCondition-dialog md-dialog-content{display:block;position:relative}md-dialog.anyCondition-dialog md-toolbar .title{font-size:17px}md-dialog.anyCondition-dialog md-input-container textarea{min-height:150px}md-dialog.anyCondition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.anyCondition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.anyCondition-dialog .date-container{padding:16px 0 24px 0}md-dialog.anyCondition-dialog .error-list{font-size:13px}md-dialog.anyCondition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.anyCondition-dialog .error-list .error .message{font-weight:500}md-dialog.anyCondition-dialog .error-list .error .md-button{margin:0}md-dialog.anyCondition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.anyCondition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tools-trigger .header{height:76px;min-height:76px;max-height:76px}#tools-trigger .header .goto-triggers-button{margin-right:16px}#tools-trigger .header .trigger-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#tools-trigger .header .trigger-image img{height:100%;width:auto;max-width:none}#tools-trigger .header .subtitle{margin:6px 0 0 0}#tools-trigger .trigger-detail-form-container{padding:24px;margin-bottom:24px}#tools-trigger .trigger-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#tools-trigger .trigger-detail-form-container .handle{cursor:move}#tools-trigger .trigger-detail-form-container md-input-container md-switch{margin:0!important}#tools-trigger .trigger-detail-form-container #trigger-image-uploader{position:relative}#tools-trigger .trigger-detail-form-container #trigger-image-uploader.dropping .drop-text{display:flex}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .upload-button{margin-bottom:16px}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .trigger-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .trigger-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .trigger-image .media{max-height:100%}#tools-trigger md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#tools-trigger md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#tools-trigger md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#tools-trigger md-table-container.font-size-12 td.md-cell{font-size:12px!important}#triggers{position:relative}#triggers>.header{height:76px;min-height:76px;max-height:76px}#triggers>.header .logo .logo-icon{margin:0 16px 0 0}#triggers>.header .logo .logo-text{font-size:24px}#triggers>.header md-icon{color:#fff}#triggers>.header .search-input-wrapper{position:relative}#triggers>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#triggers>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#triggers>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#triggers>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#triggers>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#triggers>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#triggers>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#triggers>.header.selected-bar .close-button-wrapper{width:244px}#triggers>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#triggers>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#triggers>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#triggers #add-trigger-button{position:fixed;bottom:8px;right:8px;padding:0}#triggers #upload-trigger-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.trunk-dialog{max-width:720px;width:720px}md-dialog.trunk-dialog md-dialog-content{display:block;position:relative}md-dialog.trunk-dialog md-toolbar .title{font-size:17px}md-dialog.trunk-dialog md-input-container textarea{min-height:150px}md-dialog.trunk-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.trunk-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.trunk-dialog .date-container{padding:16px 0 24px 0}md-dialog.trunk-dialog .error-list{font-size:13px}md-dialog.trunk-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.trunk-dialog .error-list .error .message{font-weight:500}md-dialog.trunk-dialog .error-list .error .md-button{margin:0}md-dialog.trunk-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.trunk-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tools-trunk .header{height:76px;min-height:76px;max-height:76px}#tools-trunk .header .goto-trunks-button{margin-right:16px}#tools-trunk .header .trunk-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#tools-trunk .header .trunk-image img{height:100%;width:auto;max-width:none}#tools-trunk .header .subtitle{margin:6px 0 0 0}#tools-trunk .trunk-detail-form-container{padding:24px;margin-bottom:24px}#tools-trunk .trunk-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#tools-trunk .trunk-detail-form-container .handle{cursor:move}#tools-trunk .trunk-detail-form-container md-input-container md-switch{margin:0!important}#tools-trunk .trunk-detail-form-container #trunk-image-uploader{position:relative}#tools-trunk .trunk-detail-form-container #trunk-image-uploader.dropping .drop-text{display:flex}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .upload-button{margin-bottom:16px}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .trunk-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .trunk-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .trunk-image .media{max-height:100%}#tools-trunk md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#tools-trunk md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#tools-trunk md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#tools-trunk md-table-container.font-size-12 td.md-cell{font-size:12px!important}#trunks{position:relative}#trunks>.header{height:76px;min-height:76px;max-height:76px}#trunks>.header .logo .logo-icon{margin:0 16px 0 0}#trunks>.header .logo .logo-text{font-size:24px}#trunks>.header md-icon{color:#fff}#trunks>.header .search-input-wrapper{position:relative}#trunks>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#trunks>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#trunks>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#trunks>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#trunks>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#trunks>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#trunks>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#trunks>.header.selected-bar .close-button-wrapper{width:244px}#trunks>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#trunks>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#trunks>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#trunks #add-trunk-button{position:fixed;bottom:8px;right:8px;padding:0}#trunks #upload-trunk-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.variable-dialog{max-width:720px;width:720px}md-dialog.variable-dialog md-dialog-content{display:block;position:relative}md-dialog.variable-dialog md-toolbar .title{font-size:17px}md-dialog.variable-dialog md-input-container textarea{min-height:150px}md-dialog.variable-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.variable-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.variable-dialog .date-container{padding:16px 0 24px 0}md-dialog.variable-dialog .error-list{font-size:13px}md-dialog.variable-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.variable-dialog .error-list .error .message{font-weight:500}md-dialog.variable-dialog .error-list .error .md-button{margin:0}md-dialog.variable-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.variable-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#variables{position:relative}#variables>.header{height:76px;min-height:76px;max-height:76px}#variables>.header .logo .logo-icon{margin:0 16px 0 0}#variables>.header .logo .logo-text{font-size:24px}#variables>.header md-icon{color:#fff}#variables>.header .search-input-wrapper{position:relative}#variables>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#variables>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#variables>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#variables>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#variables>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#variables>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#variables>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#variables>.header.selected-bar .close-button-wrapper{width:244px}#variables>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#variables>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#variables>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#variables #add-variable-button{position:fixed;bottom:8px;right:8px;padding:0}#variables #upload-variable-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.screenRecording-dialog{max-width:720px;width:720px}md-dialog.screenRecording-dialog md-dialog-content{display:block;position:relative}md-dialog.screenRecording-dialog md-toolbar .title{font-size:17px}md-dialog.screenRecording-dialog md-input-container textarea{min-height:150px}md-dialog.screenRecording-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.screenRecording-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.screenRecording-dialog .date-container{padding:16px 0 24px 0}md-dialog.screenRecording-dialog .error-list{font-size:13px}md-dialog.screenRecording-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.screenRecording-dialog .error-list .error .message{font-weight:500}md-dialog.screenRecording-dialog .error-list .error .md-button{margin:0}md-dialog.screenRecording-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.screenRecording-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#screenRecordings{position:relative}#screenRecordings>.header{height:76px;min-height:76px;max-height:76px}#screenRecordings>.header .logo .logo-icon{margin:0 16px 0 0}#screenRecordings>.header .logo .logo-text{font-size:24px}#screenRecordings>.header md-icon{color:#fff}#screenRecordings>.header .search-input-wrapper{position:relative}#screenRecordings>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#screenRecordings>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#screenRecordings>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#screenRecordings>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#screenRecordings>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#screenRecordings>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#screenRecordings>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#screenRecordings>.header.selected-bar .close-button-wrapper{width:244px}#screenRecordings>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#screenRecordings>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#screenRecordings>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#screenRecordings #add-screenRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#screenRecordings #upload-screenRecording-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.voice-routing-dialog{max-width:720px;width:720px}md-dialog.voice-routing-dialog md-dialog-content{display:block;position:relative}md-dialog.voice-routing-dialog md-toolbar .title{font-size:17px}md-dialog.voice-routing-dialog md-input-container textarea{min-height:150px}md-dialog.voice-routing-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voice-routing-dialog .date-container{padding:16px 0 24px 0}md-dialog.voice-routing-dialog .error-list{font-size:13px}md-dialog.voice-routing-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voice-routing-dialog .error-list .error .message{font-weight:500}md-dialog.voice-routing-dialog .error-list .error .md-button{margin:0}md-dialog.voice-routing-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voice-routing-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.interval-dialog{max-width:720px;width:720px}md-dialog.interval-dialog md-dialog-content{display:block;position:relative}md-dialog.interval-dialog md-toolbar .title{font-size:17px}md-dialog.interval-dialog md-input-container textarea{min-height:150px}md-dialog.interval-dialog .date-container{padding:16px 0 24px 0}md-dialog.interval-dialog .error-list{font-size:13px}md-dialog.interval-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.interval-dialog .error-list .error .message{font-weight:500}md-dialog.interval-dialog .error-list .error .md-button{margin:0}md-dialog.interval-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.interval-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#chanSpies{position:relative}#chanSpies>.header{height:76px;min-height:76px;max-height:76px}#chanSpies>.header .logo .logo-icon{margin:0 16px 0 0}#chanSpies>.header .logo .logo-text{font-size:24px}#chanSpies>.header md-icon{color:#fff}#chanSpies>.header .search-input-wrapper{position:relative}#chanSpies>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#chanSpies>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#chanSpies>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#chanSpies>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#chanSpies>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#chanSpies>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#chanSpies>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#chanSpies>.header.selected-bar .close-button-wrapper{width:244px}#chanSpies>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#chanSpies>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#chanSpies>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#chanSpies #add-chanSpy-button{position:fixed;bottom:8px;right:8px;padding:0}#chanSpies #upload-chanSpy-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.chanSpy-dialog{max-width:720px;width:720px}md-dialog.chanSpy-dialog md-dialog-content{display:block;position:relative}md-dialog.chanSpy-dialog md-toolbar .title{font-size:17px}md-dialog.chanSpy-dialog md-input-container textarea{min-height:150px}md-dialog.chanSpy-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chanSpy-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chanSpy-dialog .date-container{padding:16px 0 24px 0}md-dialog.chanSpy-dialog .error-list{font-size:13px}md-dialog.chanSpy-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chanSpy-dialog .error-list .error .message{font-weight:500}md-dialog.chanSpy-dialog .error-list .error .md-button{margin:0}md-dialog.chanSpy-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chanSpy-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#contexts{position:relative}#contexts>.header{height:76px;min-height:76px;max-height:76px}#contexts>.header .logo .logo-icon{margin:0 16px 0 0}#contexts>.header .logo .logo-text{font-size:24px}#contexts>.header md-icon{color:#fff}#contexts>.header .search-input-wrapper{position:relative}#contexts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#contexts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#contexts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#contexts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#contexts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#contexts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#contexts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#contexts>.header.selected-bar .close-button-wrapper{width:244px}#contexts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#contexts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#contexts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#contexts #add-context-button{position:fixed;bottom:8px;right:8px;padding:0}#contexts #upload-context-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.context-dialog{max-width:720px;width:720px}md-dialog.context-dialog md-dialog-content{display:block;position:relative}md-dialog.context-dialog md-toolbar .title{font-size:17px}md-dialog.context-dialog md-input-container textarea{min-height:150px}md-dialog.context-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.context-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.context-dialog .date-container{padding:16px 0 24px 0}md-dialog.context-dialog .error-list{font-size:13px}md-dialog.context-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.context-dialog .error-list .error .message{font-weight:500}md-dialog.context-dialog .error-list .error .md-button{margin:0}md-dialog.context-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.context-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.inbound-route-dialog{max-width:720px;width:720px}md-dialog.inbound-route-dialog md-dialog-content{display:block;position:relative}md-dialog.inbound-route-dialog md-toolbar .title{font-size:17px}md-dialog.inbound-route-dialog md-input-container textarea{min-height:150px}md-dialog.inbound-route-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.inbound-route-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.inbound-route-dialog .date-container{padding:16px 0 24px 0}md-dialog.inbound-route-dialog .error-list{font-size:13px}md-dialog.inbound-route-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.inbound-route-dialog .error-list .error .message{font-weight:500}md-dialog.inbound-route-dialog .error-list .error .md-button{margin:0}md-dialog.inbound-route-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.inbound-route-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-inbound-route .header{height:76px;min-height:76px;max-height:76px}#voice-inbound-route .header .goto-inbound-routes-button{margin-right:16px}#voice-inbound-route .header .inbound-route-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-inbound-route .header .inbound-route-image img{height:100%;width:auto;max-width:none}#voice-inbound-route .header .subtitle{margin:6px 0 0 0}#voice-inbound-route .inbound-route-detail-form-container{padding:24px;margin-bottom:24px}#voice-inbound-route .inbound-route-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-inbound-route .inbound-route-detail-form-container .handle{cursor:move}#voice-inbound-route .inbound-route-detail-form-container md-input-container md-switch{margin:0!important}#voice-inbound-route md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-inbound-route md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-inbound-route md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-inbound-route md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#voice-inbound-route .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#voice-inbound-route .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#voice-inbound-route .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#voice-inbound-route .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#voice-inbound-route .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#voice-inbound-route .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#voice-inbound-route .actionAppData{width:150px!important}}@media screen and (max-width:960px){#voice-inbound-route .actionAppData{width:80px!important}}#inbound-routes{position:relative}#inbound-routes>.header{height:76px;min-height:76px;max-height:76px}#inbound-routes>.header .logo .logo-icon{margin:0 16px 0 0}#inbound-routes>.header .logo .logo-text{font-size:24px}#inbound-routes>.header md-icon{color:#fff}#inbound-routes>.header .search-input-wrapper{position:relative}#inbound-routes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#inbound-routes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#inbound-routes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#inbound-routes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#inbound-routes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#inbound-routes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#inbound-routes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#inbound-routes>.header.selected-bar .close-button-wrapper{width:244px}#inbound-routes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#inbound-routes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#inbound-routes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#inbound-routes #add-inbound-route-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.internal-route-dialog{max-width:720px;width:720px}md-dialog.internal-route-dialog md-dialog-content{display:block;position:relative}md-dialog.internal-route-dialog md-toolbar .title{font-size:17px}md-dialog.internal-route-dialog md-input-container textarea{min-height:150px}md-dialog.internal-route-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.internal-route-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.internal-route-dialog .date-container{padding:16px 0 24px 0}md-dialog.internal-route-dialog .error-list{font-size:13px}md-dialog.internal-route-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.internal-route-dialog .error-list .error .message{font-weight:500}md-dialog.internal-route-dialog .error-list .error .md-button{margin:0}md-dialog.internal-route-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.internal-route-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-internal-route .header{height:76px;min-height:76px;max-height:76px}#voice-internal-route .header .goto-internal-routes-button{margin-right:16px}#voice-internal-route .header .internal-route-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-internal-route .header .internal-route-image img{height:100%;width:auto;max-width:none}#voice-internal-route .header .subtitle{margin:6px 0 0 0}#voice-internal-route .internal-route-detail-form-container{padding:24px;margin-bottom:24px}#voice-internal-route .internal-route-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-internal-route .internal-route-detail-form-container .handle{cursor:move}#voice-internal-route .internal-route-detail-form-container md-input-container md-switch{margin:0!important}#voice-internal-route md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-internal-route md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-internal-route md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-internal-route md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#voice-internal-route .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#voice-internal-route .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#voice-internal-route .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#voice-internal-route .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#voice-internal-route .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#voice-internal-route .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#voice-internal-route .actionAppData{width:150px!important}}@media screen and (max-width:960px){#voice-internal-route .actionAppData{width:80px!important}}#internal-routes{position:relative}#internal-routes>.header{height:76px;min-height:76px;max-height:76px}#internal-routes>.header .logo .logo-icon{margin:0 16px 0 0}#internal-routes>.header .logo .logo-text{font-size:24px}#internal-routes>.header md-icon{color:#fff}#internal-routes>.header .search-input-wrapper{position:relative}#internal-routes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#internal-routes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#internal-routes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#internal-routes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#internal-routes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#internal-routes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#internal-routes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#internal-routes>.header.selected-bar .close-button-wrapper{width:244px}#internal-routes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#internal-routes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#internal-routes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#internal-routes #add-internal-route-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.musiconhold-dialog{max-width:720px;width:720px}md-dialog.musiconhold-dialog md-dialog-content{display:block;position:relative}md-dialog.musiconhold-dialog md-toolbar .title{font-size:17px}md-dialog.musiconhold-dialog md-input-container textarea{min-height:150px}md-dialog.musiconhold-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.musiconhold-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.musiconhold-dialog .date-container{padding:16px 0 24px 0}md-dialog.musiconhold-dialog .error-list{font-size:13px}md-dialog.musiconhold-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.musiconhold-dialog .error-list .error .message{font-weight:500}md-dialog.musiconhold-dialog .error-list .error .md-button{margin:0}md-dialog.musiconhold-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.musiconhold-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mohSound-dialog{max-width:720px;width:720px}md-dialog.mohSound-dialog md-dialog-content{display:block;position:relative}md-dialog.mohSound-dialog md-toolbar .title{font-size:17px}md-dialog.mohSound-dialog md-input-container textarea{min-height:150px}md-dialog.mohSound-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mohSound-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mohSound-dialog .date-container{padding:16px 0 24px 0}md-dialog.mohSound-dialog .error-list{font-size:13px}md-dialog.mohSound-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mohSound-dialog .error-list .error .message{font-weight:500}md-dialog.mohSound-dialog .error-list .error .md-button{margin:0}md-dialog.mohSound-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mohSound-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-musiconhold .header{height:76px;min-height:76px;max-height:76px}#voice-musiconhold .header .goto-musiconholds-button{margin-right:16px}#voice-musiconhold .header .musiconhold-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-musiconhold .header .musiconhold-image img{height:100%;width:auto;max-width:none}#voice-musiconhold .header .subtitle{margin:6px 0 0 0}#voice-musiconhold .musiconhold-detail-form-container{padding:24px;margin-bottom:24px}#voice-musiconhold .musiconhold-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-musiconhold .musiconhold-detail-form-container .handle{cursor:move}#voice-musiconhold .musiconhold-detail-form-container md-input-container md-switch{margin:0!important}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader{position:relative}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader.dropping .drop-text{display:flex}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .upload-button{margin-bottom:16px}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .musiconhold-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .musiconhold-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .musiconhold-image .media{max-height:100%}#voice-musiconhold md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-musiconhold md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-musiconhold md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-musiconhold md-table-container.font-size-12 td.md-cell{font-size:12px!important}#musiconholds{position:relative}#musiconholds>.header{height:76px;min-height:76px;max-height:76px}#musiconholds>.header .logo .logo-icon{margin:0 16px 0 0}#musiconholds>.header .logo .logo-text{font-size:24px}#musiconholds>.header md-icon{color:#fff}#musiconholds>.header .search-input-wrapper{position:relative}#musiconholds>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#musiconholds>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#musiconholds>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#musiconholds>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#musiconholds>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#musiconholds>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#musiconholds>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#musiconholds>.header.selected-bar .close-button-wrapper{width:244px}#musiconholds>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#musiconholds>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#musiconholds>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#musiconholds #add-musiconhold-button{position:fixed;bottom:8px;right:8px;padding:0}#musiconholds #upload-musiconhold-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.outbound-route-dialog{max-width:720px;width:720px}md-dialog.outbound-route-dialog md-dialog-content{display:block;position:relative}md-dialog.outbound-route-dialog md-toolbar .title{font-size:17px}md-dialog.outbound-route-dialog md-input-container textarea{min-height:150px}md-dialog.outbound-route-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.outbound-route-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.outbound-route-dialog .date-container{padding:16px 0 24px 0}md-dialog.outbound-route-dialog .error-list{font-size:13px}md-dialog.outbound-route-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.outbound-route-dialog .error-list .error .message{font-weight:500}md-dialog.outbound-route-dialog .error-list .error .md-button{margin:0}md-dialog.outbound-route-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.outbound-route-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-outbound-route .header{height:76px;min-height:76px;max-height:76px}#voice-outbound-route .header .goto-outbound-routes-button{margin-right:16px}#voice-outbound-route .header .outbound-route-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-outbound-route .header .outbound-route-image img{height:100%;width:auto;max-width:none}#voice-outbound-route .header .subtitle{margin:6px 0 0 0}#voice-outbound-route .outbound-route-detail-form-container{padding:24px;margin-bottom:24px}#voice-outbound-route .outbound-route-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-outbound-route .outbound-route-detail-form-container .handle{cursor:move}#voice-outbound-route .outbound-route-detail-form-container md-input-container md-switch{margin:0!important}#voice-outbound-route md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-outbound-route md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-outbound-route md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-outbound-route md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#voice-outbound-route .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#voice-outbound-route .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#voice-outbound-route .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#voice-outbound-route .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#voice-outbound-route .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#voice-outbound-route .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#voice-outbound-route .actionAppData{width:150px!important}}@media screen and (max-width:960px){#voice-outbound-route .actionAppData{width:80px!important}}#outbound-routes{position:relative}#outbound-routes>.header{height:76px;min-height:76px;max-height:76px}#outbound-routes>.header .logo .logo-icon{margin:0 16px 0 0}#outbound-routes>.header .logo .logo-text{font-size:24px}#outbound-routes>.header md-icon{color:#fff}#outbound-routes>.header .search-input-wrapper{position:relative}#outbound-routes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#outbound-routes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#outbound-routes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#outbound-routes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#outbound-routes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#outbound-routes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#outbound-routes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#outbound-routes>.header.selected-bar .close-button-wrapper{width:244px}#outbound-routes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#outbound-routes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#outbound-routes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#outbound-routes #add-outbound-route-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}#realtime>.content td.text-center span.text-boxed,#realtime>.content td.text-center span.text-boxed-light{display:block}@keyframes blinker{50%{opacity:0}}md-dialog.voicemail-dialog{max-width:720px;width:720px}md-dialog.voicemail-dialog md-dialog-content{display:block;position:relative}md-dialog.voicemail-dialog md-toolbar .title{font-size:17px}md-dialog.voicemail-dialog md-input-container textarea{min-height:150px}md-dialog.voicemail-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voicemail-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voicemail-dialog .date-container{padding:16px 0 24px 0}md-dialog.voicemail-dialog .error-list{font-size:13px}md-dialog.voicemail-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voicemail-dialog .error-list .error .message{font-weight:500}md-dialog.voicemail-dialog .error-list .error .md-button{margin:0}md-dialog.voicemail-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voicemail-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-voicemail .header{height:76px;min-height:76px;max-height:76px}#voice-voicemail .header .goto-voicemails-button{margin-right:16px}#voice-voicemail .header .voicemail-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-voicemail .header .voicemail-image img{height:100%;width:auto;max-width:none}#voice-voicemail .header .subtitle{margin:6px 0 0 0}#voice-voicemail .voicemail-detail-form-container{padding:24px;margin-bottom:24px}#voice-voicemail .voicemail-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-voicemail .voicemail-detail-form-container .handle{cursor:move}#voice-voicemail .voicemail-detail-form-container md-input-container md-switch{margin:0!important}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader{position:relative}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader.dropping .drop-text{display:flex}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .upload-button{margin-bottom:16px}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .voicemail-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .voicemail-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .voicemail-image .media{max-height:100%}#voice-voicemail md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-voicemail md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-voicemail md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-voicemail md-table-container.font-size-12 td.md-cell{font-size:12px!important}#voicemails{position:relative}#voicemails>.header{height:76px;min-height:76px;max-height:76px}#voicemails>.header .logo .logo-icon{margin:0 16px 0 0}#voicemails>.header .logo .logo-text{font-size:24px}#voicemails>.header md-icon{color:#fff}#voicemails>.header .search-input-wrapper{position:relative}#voicemails>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#voicemails>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#voicemails>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#voicemails>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#voicemails>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#voicemails>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#voicemails>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#voicemails>.header.selected-bar .close-button-wrapper{width:244px}#voicemails>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#voicemails>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#voicemails>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#voicemails #add-voicemail-button{position:fixed;bottom:8px;right:8px;padding:0}#voicemails #upload-voicemail-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.voicePrefix-dialog{max-width:720px;width:720px}md-dialog.voicePrefix-dialog md-dialog-content{display:block;position:relative}md-dialog.voicePrefix-dialog md-toolbar .title{font-size:17px}md-dialog.voicePrefix-dialog md-input-container textarea{min-height:150px}md-dialog.voicePrefix-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voicePrefix-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voicePrefix-dialog .date-container{padding:16px 0 24px 0}md-dialog.voicePrefix-dialog .error-list{font-size:13px}md-dialog.voicePrefix-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voicePrefix-dialog .error-list .error .message{font-weight:500}md-dialog.voicePrefix-dialog .error-list .error .md-button{margin:0}md-dialog.voicePrefix-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voicePrefix-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voicePrefixes{position:relative}#voicePrefixes>.header{height:76px;min-height:76px;max-height:76px}#voicePrefixes>.header .logo .logo-icon{margin:0 16px 0 0}#voicePrefixes>.header .logo .logo-text{font-size:24px}#voicePrefixes>.header md-icon{color:#fff}#voicePrefixes>.header .search-input-wrapper{position:relative}#voicePrefixes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#voicePrefixes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#voicePrefixes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#voicePrefixes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#voicePrefixes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#voicePrefixes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#voicePrefixes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#voicePrefixes>.header.selected-bar .close-button-wrapper{width:244px}#voicePrefixes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#voicePrefixes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#voicePrefixes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#voicePrefixes #add-voicePrefix-button{position:fixed;bottom:8px;right:8px;padding:0}#voicePrefixes #upload-voicePrefix-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.voiceQueue-dialog{max-width:720px;width:720px}md-dialog.voiceQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.voiceQueue-dialog md-toolbar .title{font-size:17px}md-dialog.voiceQueue-dialog md-input-container textarea{min-height:150px}md-dialog.voiceQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voiceQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voiceQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.voiceQueue-dialog .error-list{font-size:13px}md-dialog.voiceQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voiceQueue-dialog .error-list .error .message{font-weight:500}md-dialog.voiceQueue-dialog .error-list .error .md-button{margin:0}md-dialog.voiceQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voiceQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-voiceQueue .header{height:76px;min-height:76px;max-height:76px}#voice-voiceQueue .header .goto-voiceQueues-button{margin-right:16px}#voice-voiceQueue .header .voiceQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-voiceQueue .header .voiceQueue-image img{height:100%;width:auto;max-width:none}#voice-voiceQueue .header .subtitle{margin:6px 0 0 0}#voice-voiceQueue .voiceQueue-detail-form-container{padding:24px;margin-bottom:24px}#voice-voiceQueue .voiceQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-voiceQueue .voiceQueue-detail-form-container .handle{cursor:move}#voice-voiceQueue .voiceQueue-detail-form-container md-input-container md-switch{margin:0!important}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader{position:relative}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader.dropping .drop-text{display:flex}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .upload-button{margin-bottom:16px}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .voiceQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .voiceQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .voiceQueue-image .media{max-height:100%}#voice-voiceQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-voiceQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-voiceQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-voiceQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#voiceQueues{position:relative}#voiceQueues>.header{height:76px;min-height:76px;max-height:76px}#voiceQueues>.header .logo .logo-icon{margin:0 16px 0 0}#voiceQueues>.header .logo .logo-text{font-size:24px}#voiceQueues>.header md-icon{color:#fff}#voiceQueues>.header .search-input-wrapper{position:relative}#voiceQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#voiceQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#voiceQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#voiceQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#voiceQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#voiceQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#voiceQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#voiceQueues>.header.selected-bar .close-button-wrapper{width:244px}#voiceQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#voiceQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#voiceQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#voiceQueues #add-voiceQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#voiceQueues #upload-voiceQueue-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.voiceRecording-dialog{max-width:720px;width:720px}md-dialog.voiceRecording-dialog md-dialog-content{display:block;position:relative}md-dialog.voiceRecording-dialog md-toolbar .title{font-size:17px}md-dialog.voiceRecording-dialog md-input-container textarea{min-height:150px}md-dialog.voiceRecording-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voiceRecording-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voiceRecording-dialog .date-container{padding:16px 0 24px 0}md-dialog.voiceRecording-dialog .error-list{font-size:13px}md-dialog.voiceRecording-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voiceRecording-dialog .error-list .error .message{font-weight:500}md-dialog.voiceRecording-dialog .error-list .error .md-button{margin:0}md-dialog.voiceRecording-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voiceRecording-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-voiceRecording .header{height:76px;min-height:76px;max-height:76px}#voice-voiceRecording .header .goto-voiceRecordings-button{margin-right:16px}#voice-voiceRecording .header .voiceRecording-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-voiceRecording .header .voiceRecording-image img{height:100%;width:auto;max-width:none}#voice-voiceRecording .header .subtitle{margin:6px 0 0 0}#voice-voiceRecording .voiceRecording-detail-form-container{padding:24px;margin-bottom:24px}#voice-voiceRecording .voiceRecording-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-voiceRecording .voiceRecording-detail-form-container .handle{cursor:move}#voice-voiceRecording .voiceRecording-detail-form-container md-input-container md-switch{margin:0!important}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader{position:relative}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader.dropping .drop-text{display:flex}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .upload-button{margin-bottom:16px}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .voiceRecording-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .voiceRecording-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .voiceRecording-image .media{max-height:100%}#voice-voiceRecording md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-voiceRecording md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-voiceRecording md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-voiceRecording md-table-container.font-size-12 td.md-cell{font-size:12px!important}#voice-voiceRecording .sentiment.POSITIVE{color:#4caf50;font-size:25px}#voice-voiceRecording .sentiment.NEGATIVE{color:#f40505;font-size:30px}#voice-voiceRecording .sentiment.NEUTRAL{color:#03a9f4;font-size:30px}#voice-voiceRecording .sentiment.MIXED{color:#9c27b0;font-size:30px}#voiceRecordings{position:relative}#voiceRecordings>.header{height:76px;min-height:76px;max-height:76px}#voiceRecordings>.header .logo .logo-icon{margin:0 16px 0 0}#voiceRecordings>.header .logo .logo-text{font-size:24px}#voiceRecordings>.header md-icon{color:#fff}#voiceRecordings>.header .search-input-wrapper{position:relative}#voiceRecordings>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#voiceRecordings>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#voiceRecordings>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#voiceRecordings>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#voiceRecordings>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#voiceRecordings>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#voiceRecordings>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#voiceRecordings>.header.selected-bar .close-button-wrapper{width:244px}#voiceRecordings>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#voiceRecordings>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#voiceRecordings>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#voiceRecordings #add-voiceRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#voiceRecordings #upload-voiceRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.whatsappAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#whatsapp-whatsappAccount .header{height:76px;min-height:76px;max-height:76px}#whatsapp-whatsappAccount .header .goto-whatsappAccounts-button{margin-right:16px}#whatsapp-whatsappAccount .header .whatsappAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#whatsapp-whatsappAccount .header .whatsappAccount-image img{height:100%;width:auto;max-width:none}#whatsapp-whatsappAccount .header .subtitle{margin:6px 0 0 0}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container{padding:24px;margin-bottom:24px}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container .handle{cursor:move}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container md-input-container md-switch{margin:0!important}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader{position:relative}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader.dropping .drop-text{display:flex}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .upload-button{margin-bottom:16px}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .whatsappAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .whatsappAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .whatsappAccount-image .media{max-height:100%}#whatsapp-whatsappAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#whatsapp-whatsappAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#whatsapp-whatsappAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#whatsapp-whatsappAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#whatsapp-whatsappAccount .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#whatsapp-whatsappAccount .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#whatsapp-whatsappAccount .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#whatsapp-whatsappAccount .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#whatsapp-whatsappAccount .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#whatsapp-whatsappAccount .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#whatsapp-whatsappAccount .actionAppData{width:150px!important}}@media screen and (max-width:960px){#whatsapp-whatsappAccount .actionAppData{width:80px!important}}md-dialog.whatsappCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.whatsappCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.whatsappCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.whatsappCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappCannedAnswer-dialog .error-list{font-size:13px}md-dialog.whatsappCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#whatsappAccounts{position:relative}#whatsappAccounts>.header{height:76px;min-height:76px;max-height:76px}#whatsappAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#whatsappAccounts>.header .logo .logo-text{font-size:24px}#whatsappAccounts>.header md-icon{color:#fff}#whatsappAccounts>.header .search-input-wrapper{position:relative}#whatsappAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#whatsappAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#whatsappAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#whatsappAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#whatsappAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#whatsappAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#whatsappAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#whatsappAccounts>.header.selected-bar .close-button-wrapper{width:244px}#whatsappAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#whatsappAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#whatsappAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#whatsappAccounts #add-whatsappAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#whatsappAccounts #upload-whatsappAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.whatsappQueue-dialog{max-width:720px;width:720px}md-dialog.whatsappQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappQueue-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappQueue-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.whatsappQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.whatsappQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappQueue-dialog .error-list{font-size:13px}md-dialog.whatsappQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappQueue-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappQueue-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#whatsapp-whatsappQueue .header{height:76px;min-height:76px;max-height:76px}#whatsapp-whatsappQueue .header .goto-whatsappQueues-button{margin-right:16px}#whatsapp-whatsappQueue .header .whatsappQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#whatsapp-whatsappQueue .header .whatsappQueue-image img{height:100%;width:auto;max-width:none}#whatsapp-whatsappQueue .header .subtitle{margin:6px 0 0 0}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container{padding:24px;margin-bottom:24px}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container .handle{cursor:move}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container md-input-container md-switch{margin:0!important}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader{position:relative}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader.dropping .drop-text{display:flex}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .upload-button{margin-bottom:16px}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .whatsappQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .whatsappQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .whatsappQueue-image .media{max-height:100%}#whatsapp-whatsappQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#whatsapp-whatsappQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#whatsapp-whatsappQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#whatsapp-whatsappQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#whatsappQueues{position:relative}#whatsappQueues>.header{height:76px;min-height:76px;max-height:76px}#whatsappQueues>.header .logo .logo-icon{margin:0 16px 0 0}#whatsappQueues>.header .logo .logo-text{font-size:24px}#whatsappQueues>.header md-icon{color:#fff}#whatsappQueues>.header .search-input-wrapper{position:relative}#whatsappQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#whatsappQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#whatsappQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#whatsappQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#whatsappQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#whatsappQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#whatsappQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#whatsappQueues>.header.selected-bar .close-button-wrapper{width:244px}#whatsappQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#whatsappQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#whatsappQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#whatsappQueues #add-whatsappQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#whatsappQueues #upload-whatsappQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation{width:240px;min-width:240px;max-width:240px;overflow-x:hidden;transition:all .3s cubic-bezier(.55,0,.55,.2),width .1s linear,min-width .1s linear,max-width .1s linear;box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12)}#layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation .navigation-header{height:64px;min-height:64px;background-color:rgba(255,255,255,.05);padding:0 16px 0 24px}#layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation:not(._md-locked-open){box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}@media only screen and (min-width:960px){.ms-navigation-folded #content-container{margin-left:64px}.ms-navigation-folded #layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation{position:absolute}.ms-navigation-folded:not(.ms-navigation-folded-open) #layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation{position:absolute;width:64px;min-width:64px;max-width:64px}.ms-navigation-folded:not(.ms-navigation-folded-open) #layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation .navigation-header{padding:0 16px}.ms-navigation-folded:not(.ms-navigation-folded-open) #layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation .navigation-header .logo-text{display:none}}#vertical-navigation{width:240px;min-width:240px;max-width:240px;overflow-x:hidden;transition:all .3s cubic-bezier(.55,0,.55,.2),width .1s linear,min-width .1s linear,max-width .1s linear;box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12)}#vertical-navigation .navigation-header{height:64px;min-height:64px;background-color:rgba(255,255,255,.05);padding:0 16px 0 24px}#vertical-navigation .navigation-header .logo .logo-image{display:block;width:32px;min-width:32px;height:32px;line-height:32px;text-align:center;font-size:16px;font-weight:500;color:#fff;border-radius:2px}#vertical-navigation .navigation-header .logo .logo-text{color:#fff;margin-left:16px;font-size:16px}#vertical-navigation .navigation-header .fold-toggle{transition:transform .3s ease-in-out .1s;transform:rotate(0);margin:0;padding:8px;width:34px!important;height:34px!important;cursor:pointer}#vertical-navigation:not(._md-locked-open){box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}@media only screen and (min-width:960px){.ms-navigation-folded #content-container{margin-left:64px}.ms-navigation-folded #vertical-navigation{position:absolute}.ms-navigation-folded #vertical-navigation .navigation-header .fold-toggle{transform:rotate(180deg);opacity:0}.ms-navigation-folded.ms-navigation-folded-open #vertical-navigation .navigation-header .fold-toggle{transition:transform .3s ease-in-out .1s,opacity .3s ease-in-out .2s;opacity:1}.ms-navigation-folded:not(.ms-navigation-folded-open) #vertical-navigation{position:absolute;width:64px;min-width:64px;max-width:64px}.ms-navigation-folded:not(.ms-navigation-folded-open) #vertical-navigation .navigation-header{padding:0 16px}.ms-navigation-folded:not(.ms-navigation-folded-open) #vertical-navigation .navigation-header .logo-text{display:none}}#quick-panel{width:330px;min-width:330px;max-width:330px;z-index:99}#quick-panel md-content{height:100%}#quick-panel md-content md-tabs{position:static;height:100%}#quick-panel md-content md-tabs md-tabs-wrapper{background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.06)}#quick-panel md-content md-tabs md-tabs-wrapper .md-tab{max-width:none!important}#quick-panel md-content md-tabs md-tabs-content-wrapper md-tab-content{height:100%;overflow:hidden}#quick-panel md-content md-tabs md-tabs-content-wrapper md-tab-content>div{overflow:hidden;height:100%}.unread-message-count-chat{position:absolute;top:5px;left:10px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:10px}@media screen and (max-width:600px){#quick-panel{width:80%;min-width:80%;max-width:80%}}#quick-panel .activity-tab .friends .friend{position:relative}#quick-panel .activity-tab .friends .friend .status{position:absolute;top:8px;left:44px;width:18px;height:18px;z-index:10;border-radius:50%;border:3px solid #fff}#quick-panel .activity-tab .friends .friend .status.online{background-color:#00c853}#quick-panel .activity-tab .friends .friend .status.offline{background-color:#d50000}#quick-panel .activity-tab .friends .friend .status.away{background-color:#ff6d00}#quick-panel .activity-tab .friends .friend .unread-message-count{position:absolute;left:16px;bottom:16px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:11px}#quick-panel .activity-tab .servers .server .status{margin:24px 20px 28px 8px}#quick-panel .activity-tab .servers .server .status.normal{color:#00c853}#quick-panel .activity-tab .servers .server .status.warn{color:#d50000}#quick-panel .activity-tab .servers .server .status.error{color:#ff6d00}#quick-panel .activity-tab .stat md-progress-linear.normal .md-bar{background-color:#00c853}#quick-panel .activity-tab .stat md-progress-linear.normal .md-container{background-color:rgba(0,200,83,.3)}#quick-panel .activity-tab .stat md-progress-linear.warn .md-bar{background-color:#ff6d00}#quick-panel .activity-tab .stat md-progress-linear.warn .md-container{background-color:rgba(255,109,0,.3)}#quick-panel .activity-tab .stat md-progress-linear.alert .md-bar{background-color:#d50000}#quick-panel .activity-tab .stat md-progress-linear.alert .md-container{background-color:rgba(213,0,0,.3)}#quick-panel .chat-tab .chat,#quick-panel .chat-tab .main{position:absolute;width:100%;top:0;bottom:0}#quick-panel .chat-tab .main .contact{position:relative}#quick-panel .chat-tab .main .contact .status{position:absolute;top:8px;left:44px;width:18px;height:18px;border:3px solid #fff;border-radius:50%;z-index:10}#quick-panel .chat-tab .main .contact .status.online{background-color:#00c853}#quick-panel .chat-tab .main .contact .status.offline{background-color:#d50000}#quick-panel .chat-tab .main .contact .status.away{background-color:#ff6d00}#quick-panel .chat-tab .main .contact .unread-message-count{position:absolute;left:16px;bottom:16px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:11px}#quick-panel .chat-tab .main .recent .contact .status{top:18px}#quick-panel .chat-tab .chat{max-height:100%;overflow:hidden}#quick-panel .chat-tab .chat .message-row .bubble{position:relative;padding:8px;background-color:#eceff1;border:1px solid #dcdfe1}#quick-panel .chat-tab .chat .message-row .bubble:after,#quick-panel .chat-tab .chat .message-row .bubble:before{content:' ';position:absolute;width:0;height:0}#quick-panel .chat-tab .chat .message-row .bubble:after{left:-7px;right:auto;top:0;bottom:auto;border:11px solid;border-color:#eceff1 transparent transparent transparent}#quick-panel .chat-tab .chat .message-row .bubble:before{left:-9px;right:auto;top:-1px;bottom:auto;border:8px solid;border-color:#dcdfe1 transparent transparent transparent}#quick-panel .chat-tab .chat .message-row .bubble .time{font-size:11px;margin-top:8px}#quick-panel .chat-tab .chat .message-row .bubble .message{word-wrap:break-word}#quick-panel .chat-tab .chat .message-row.contact .avatar{margin:0 16px 0 0}#quick-panel .chat-tab .chat .message-row.user{align-items:flex-end}#quick-panel .chat-tab .chat .message-row.user .avatar{order:2;margin:0 0 0 16px}#quick-panel .chat-tab .chat .message-row.user .bubble{background-color:#e8f5e9;border:1px solid #dfebe0;order:1}#quick-panel .chat-tab .chat .message-row.user .bubble:after{right:-7px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#quick-panel .chat-tab .chat .message-row.user .bubble:before{right:-9px;left:auto;top:auto;bottom:-1px;border-color:transparent transparent #dfebe0 transparent}#quick-panel .chat-tab .chat .reply{border-top:1px solid rgba(0,0,0,.12)}#quick-panel .chat-tab .chat .reply textarea{margin:8px;resize:none;padding:8px 16px 8px 8px}md-dialog.group-dialog{max-width:720px;width:720px}md-dialog.group-dialog md-dialog-content{display:block;position:relative}md-dialog.group-dialog md-toolbar .title{font-size:17px}md-dialog.group-dialog md-input-container textarea{min-height:150px}md-dialog.group-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.group-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.group-dialog .date-container{padding:16px 0 24px 0}md-dialog.group-dialog .error-list{font-size:13px}md-dialog.group-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.group-dialog .error-list .error .message{font-weight:500}md-dialog.group-dialog .error-list .error .md-button{margin:0}md-dialog.group-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.group-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#quick-panel .group-tab .chat,#quick-panel .group-tab .main{position:absolute;width:100%;top:0;bottom:0}#quick-panel .group-tab .main .contact{position:relative}#quick-panel .group-tab .main .contact .status{position:absolute;top:8px;left:44px;width:18px;height:18px;border:3px solid #fff;border-radius:50%;z-index:10}#quick-panel .group-tab .main .contact .status.online{background-color:#00c853}#quick-panel .group-tab .main .contact .status.offline{background-color:#d50000}#quick-panel .group-tab .main .contact .status.away{background-color:#ff6d00}#quick-panel .group-tab .main .contact .unread-message-count{position:absolute;left:16px;bottom:16px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:11px}#quick-panel .group-tab .main .recent .contact .status{top:18px}#quick-panel .group-tab .chat{max-height:100%;overflow:hidden}#quick-panel .group-tab .chat .message-row{padding:8px}#quick-panel .group-tab .chat .message-row .bubble{position:relative;padding:8px;background-color:#eceff1;border:1px solid #dcdfe1}#quick-panel .group-tab .chat .message-row .bubble:after,#quick-panel .group-tab .chat .message-row .bubble:before{content:' ';position:absolute;width:0;height:0}#quick-panel .group-tab .chat .message-row .bubble:after{left:-7px;right:auto;top:0;bottom:auto;border:11px solid;border-color:#eceff1 transparent transparent transparent}#quick-panel .group-tab .chat .message-row .bubble:before{left:-9px;right:auto;top:-1px;bottom:auto;border:8px solid;border-color:#dcdfe1 transparent transparent transparent}#quick-panel .group-tab .chat .message-row .bubble .time{font-size:11px;margin-top:8px}#quick-panel .group-tab .chat .message-row .bubble .message{word-wrap:break-word}#quick-panel .group-tab .chat .message-row.contact .avatar{margin:0 16px 0 0}#quick-panel .group-tab .chat .message-row.user{align-items:flex-end}#quick-panel .group-tab .chat .message-row.user .avatar{order:2;margin:0 0 0 16px}#quick-panel .group-tab .chat .message-row.user .bubble{background-color:#e8f5e9;border:1px solid #dfebe0;order:1}#quick-panel .group-tab .chat .message-row.user .bubble:after{right:-7px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#quick-panel .group-tab .chat .message-row.user .bubble:before{right:-9px;left:auto;top:auto;bottom:-1px;border-color:transparent transparent #dfebe0 transparent}#quick-panel .group-tab .chat .reply{border-top:1px solid rgba(0,0,0,.12)}#quick-panel .group-tab .chat .reply textarea{margin:8px;resize:none;padding:8px 16px 8px 8px}md-dialog.group-dialog{max-width:720px;width:720px}md-dialog.group-dialog md-dialog-content{display:block;position:relative}md-dialog.group-dialog md-toolbar .title{font-size:17px}md-dialog.group-dialog md-input-container textarea{min-height:150px}md-dialog.group-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.group-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.group-dialog .date-container{padding:16px 0 24px 0}md-dialog.group-dialog .error-list{font-size:13px}md-dialog.group-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.group-dialog .error-list .error .message{font-weight:500}md-dialog.group-dialog .error-list .error .md-button{margin:0}md-dialog.group-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.group-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#reset-password{height:100%;background:url(/assets/images/backgrounds/tech.png) no-repeat;background-size:cover}#reset-password #reset-password-form-wrapper{flex:1 0 auto;padding:32px}#reset-password #reset-password-form-wrapper #reset-password-form{width:384px;max-width:384px;padding:32px;text-align:center;background:#fff}#reset-password #reset-password-form-wrapper #reset-password-form .logo{width:128px;height:128px;line-height:128px;font-size:86px;font-weight:500;margin:32px auto;color:#fff;border-radius:2px}#reset-password #reset-password-form-wrapper #reset-password-form .title{font-size:17px;margin:16px 0 32px 0}#reset-password #reset-password-form-wrapper #reset-password-form .logo_login{max-height:200px}#reset-password #reset-password-form-wrapper #reset-password-form form{width:100%;text-align:left}#reset-password #reset-password-form-wrapper #reset-password-form form .submit-button{width:220px;margin:16px auto;display:block}#reset-password #reset-password-form-wrapper #reset-password-form .login{margin:32px auto 24px auto;width:250px;font-weight:500}#reset-password #reset-password-form-wrapper #reset-password-form .login .text{margin-right:8px}@media screen and (max-width:600px){#reset-password #reset-password-form-wrapper{padding:16px}#reset-password #reset-password-form-wrapper #reset-password-form{padding:24px;width:100%}#reset-password #reset-password-form-wrapper #reset-password-form form .md-button{width:90%}}md-dialog.preview-dialog{max-width:1020px;width:1020px}md-dialog.preview-dialog md-dialog-content{display:block;position:relative;padding:0}md-dialog.preview-dialog md-dialog-content .recall-me-info{position:relative;overflow-y:hidden;overflow-x:auto;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.12);min-height:64px;padding:8px 8px 8px 16px}md-dialog.preview-dialog md-toolbar .title{font-size:17px}md-dialog.preview-dialog md-input-container textarea{min-height:150px}md-dialog.preview-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.preview-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.preview-dialog .date-container{padding:16px 0 24px 0}md-dialog.preview-dialog .error-list{font-size:13px}md-dialog.preview-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.preview-dialog .error-list .error .message{font-weight:500}md-dialog.preview-dialog .error-list .error .md-button{margin:0}md-dialog.preview-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.preview-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#toolbar{height:64px;min-height:64px;max-height:64px;z-index:55!important}#toolbar .blink{animation:blinker 2s linear infinite}#toolbar #navigation-toggle{width:64px;min-width:64px;height:64px;margin:0;border-right:1px solid rgba(0,0,0,.12);border-radius:0}#toolbar .logo-image{display:block;width:32px;min-width:32px;height:32px;line-height:32px;text-align:center;font-size:16px;font-weight:500;color:#fff;border-radius:2px;margin-left:10px;margin-right:8px}#toolbar #user-menu{height:64px;padding:0}#toolbar #user-menu md-menu-item .md-button{font-size:15px}#toolbar #user-menu md-menu-item .md-button md-icon{margin:auto 16px auto 0}#toolbar #user-menu .user-button{margin:0;padding:0 16px;height:64px;text-transform:none}#toolbar #user-menu .user-button .avatar-wrapper{position:relative}#toolbar #user-menu .user-button .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#toolbar #user-menu .user-button .username{margin:0 12px 0 8px}#toolbar #language-menu{height:64px}#toolbar #language-menu .language-button{min-width:64px;height:64px;margin:0;padding:0 16px;border-radius:0}#toolbar #language-menu .language-button .iso{text-transform:uppercase}#toolbar #language-menu .language-button .flag{margin-right:8px}#toolbar #quick-panel-toggle{width:64px;height:64px;margin:0;border-radius:0}#toolbar #quick-panel-toggle .unread-message-count{position:absolute;top:8px;left:38px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:10px}#toolbar .toolbar-separator{height:64px;width:1px;background:rgba(0,0,0,.12)}#language-menu-content md-menu-item .flag{margin-right:16px}#language-message{min-height:88px;max-width:600px}#language-message .md-toast-content{height:90px}.open-contact-count{position:absolute;top:1px;left:25px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:10px}.md-button.preview-button{min-width:46px;min-height:50px}@media screen and (max-width:600px){#toolbar #user-menu .user-button{min-width:64px;padding:0 2px 0 10px}}.geEditor{font-family:Helvetica Neue,Helvetica,Arial Unicode MS,Arial;font-size:10pt;overflow:hidden;height:100%}.geMenubarContainer .geItem,.geSidebarContainer .geTitle,.geToolbar .geButton,.geToolbar .geLabel{cursor:pointer!important}.geContentEditable div,.geContentEditable table,.geContentEditable table td{border:1px dashed #d3d3d3}.geBackgroundPage{-webkit-box-shadow:0 0 3px 0 #d9d9d9;-moz-box-shadow:0 0 3px 0 #d9d9d9;box-shadow:0 0 3px 0 #d9d9d9}.geMenubarContainer a,.geSidebarContainer a,.geToolbar a{color:#000!important;text-decoration:none}.geDiagramContainer,.geFooterContainer,.geHsplit,.geMenubarContainer,.geOutlineContainer,.geSidebarContainer,.geToolbarContainer,.geVsplit{overflow:hidden;position:absolute;cursor:default}.geDiagramContainer,.geOutlineContainer{background-color:#fff;outline:0}.geMenubar,.geToolbar{white-space:nowrap;display:block;width:100%}.geMenubarContainer .geItem,.geSidebar,.geSidebar .geItem,.geSidebarContainer .geTitle,.geToolbar .geButton,.geToolbar .geLabel,.mxPopupMenuItem{-webkit-transition:all .1s ease-in-out;-moz-transition:all .1s ease-in-out;-o-transition:all .1s ease-in-out;-ms-transition:all .1s ease-in-out;transition:all .1s ease-in-out}.geHint{background-color:#fff;border:1px solid gray;padding:4px 16px 4px 16px;border-radius:3px;-webkit-box-shadow:1px 1px 2px 0 #ddd;-moz-box-shadow:1px 1px 2px 0 #ddd;box-shadow:1px 1px 2px 0 #ddd;opacity:.8}.geStatusAlert{white-space:nowrap;margin-top:-5px;font-size:12px;padding:4px 6px 4px 6px;background-color:#f2dede;border:1px solid #ebccd1;color:#a94442!important;border-radius:3px}.geStatusAlert:hover{background-color:#f1d8d8;border-color:#d6b2b8}.geStatusMessage{white-space:nowrap;margin-top:-5px;padding:4px 6px 4px 6px;font-size:12px;background-image:-webkit-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#c8e5bc));background-image:linear-gradient(to bottom,#dff0d8 0,#c8e5bc 100%);background-repeat:repeat-x;border:1px solid #b2dba1;border-radius:3px;color:#3c763d!important}.geStatusMessage:hover{background:#c8e5bc;border-color:#b2dba1}.geAlert{position:absolute;white-space:nowrap;padding:14px;background-color:#f2dede;border:1px solid #ebccd1;color:#a94442;border-radius:3px;-webkit-box-shadow:2px 2px 3px 0 #ddd;-moz-box-shadow:2px 2px 3px 0 #ddd;box-shadow:2px 2px 3px 0 #ddd}.geBtn{background-color:#f5f5f5;border-radius:2px;border:1px solid #d8d8d8;color:#333;cursor:default;font-size:11px;font-weight:700;height:29px;line-height:27px;margin:0 0 0 8px;min-width:72px;outline:0;padding:0 8px;cursor:pointer}.geBtn:hover{-webkit-box-shadow:0 1px 1px rgba(0,0,0,.1);-moz-box-shadow:0 1px 1px rgba(0,0,0,.1);box-shadow:0 1px 1px rgba(0,0,0,.1);border:1px solid #c6c6c6;background-color:#f8f8f8;background-image:linear-gradient(#f8f8f8 0,#f1f1f1 100%);color:#111}.geBtn:disabled{opacity:.5}.geBtnUp{background-image:url(data:image/gif;base64,R0lGODlhCgAGAJECAGZmZtXV1f///wAAACH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0QzM3ODJERjg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0QzM3ODJFMDg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRDMzc4MkREODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRDMzc4MkRFODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAgAsAAAAAAoABgAAAg6UjwiQBhGYglCKhXFLBQA7);background-position:center center;background-repeat:no-repeat}.geBtnUp:active{background-color:#4d90fe;background-image:linear-gradient(#4d90fe 0,#357ae8 100%)}.geBtnDown{background-image:url(data:image/gif;base64,R0lGODlhCgAGAJECANXV1WZmZv///wAAACH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0QzM3ODJEQjg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0QzM3ODJEQzg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRDMzc4MkQ5ODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRDMzc4MkRBODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAgAsAAAAAAoABgAAAg6UjxLLewEiCAnOZBzeBQA7);background-position:center center;background-repeat:no-repeat}.geBtnDown:active{background-color:#4d90fe;background-image:linear-gradient(#4d90fe 0,#357ae8 100%)}.geColorBtn{background-color:#f5f5f5;background-image:linear-gradient(#f5f5f5 0,#e1e1e1 100%);border-radius:4px;border:1px solid rgba(0,0,0,.5);color:#333;cursor:default;margin:0;outline:0;padding:0;cursor:pointer}.geColorBtn:hover{-webkit-box-shadow:0 1px 1px rgba(0,0,0,.1);-moz-box-shadow:0 1px 1px rgba(0,0,0,.1);box-shadow:0 1px 1px rgba(0,0,0,.1);border:1px solid rgba(0,0,0,.7)}.geColorBtn:active{background-color:#4d90fe;background-image:linear-gradient(#4d90fe 0,#357ae8 100%);border:1px solid #2f5bb7;color:#fff}.geColorBtn:disabled{opacity:.5}.gePrimaryBtn{background-color:#4d90fe;background-image:linear-gradient(#4d90fe 0,#4787ed 100%);border:1px solid #3079ed;color:#fff}.gePrimaryBtn:hover{background-color:#357ae8;background-image:linear-gradient(#4d90fe 0,#357ae8 100%);border:1px solid #2f5bb7;color:#fff}.gePrimaryBtn:disabled{opacity:.5}.geAlertLink{color:#843534;font-weight:700;text-decoration:none}.geMenubarContainer{background-color:#fff}.geMenubar{padding:0 2px 0 2px;vertical-align:middle}.geMenubarContainer .geItem,.geToolbar .geItem{padding:6px 8px 6px 8px;cursor:default}.geMenubarContainer .geItem:hover,.geToolbarContainer .geItem:hover{background:#eee}.mxDisabled:hover{background:inherit!important}.geMenubar a.geStatus{color:#b3b3b3;padding-left:6px;display:inline-block;cursor:default!important}.geMenubar a.geStatus:hover{background:0 0}.geMenubarMenu{border:1px solid #d5d5d5!important}.geToolbarContainer{background:#f5f5f5;border-bottom:1px solid #e0e0e0}.geSidebarContainer .geToolbarContainer{background:0 0;border-bottom:none}.geSidebarContainer button{text-overflow:ellipsis;overflow:hidden}.geToolbar{padding:1px 0 0 6px;border-top:1px solid #e0e0e0;-webkit-box-shadow:inset 0 1px 0 0 #fff;-moz-box-shadow:inset 0 1px 0 0 #fff;box-shadow:inset 0 1px 0 0 #fff}.geToolbarContainer .geSeparator{float:left;width:1px;height:34px;background:#e5e5e5;margin-left:6px;margin-right:6px;margin-top:-2px}.geToolbarContainer .geButton{float:left;width:20px;height:20px;padding:0 2px 4px 2px;margin:2px;border:1px solid transparent;cursor:pointer;opacity:.6}.geToolbarContainer .geButton:hover{border:1px solid gray;border-radius:2px;opacity:1;filter:none!important}.geToolbarContainer .geButton:active{border:1px solid #000}div.mxWindow .geButton{margin:-1px 2px 2px 2px;padding:1px 2px 2px 1px}.geToolbarContainer .geLabel{float:left;margin:2px;cursor:pointer;padding:3px 5px 3px 5px;border:1px solid transparent;opacity:.6}.geToolbarContainer .geLabel:hover{border:1px solid gray;border-radius:2px;opacity:.9}.geToolbarContainer .geLabel:active{border:1px solid #000;opacity:1;filter:none!important}.geToolbarContainer .mxDisabled:hover{border:1px solid transparent!important;opacity:.2!important}.geToolbarMenu{border:3px solid #e0e0e0!important;-webkit-box-shadow:none!important;-moz-box-shadow:none!important;box-shadow:none!important;filter:none!important}.geDiagramBackdrop{background-color:#ebebeb;border-style:solid;border-color:#e5e5e5;border-width:1px 0 0 1px}.geSidebarContainer{background:#fff;overflow:hidden;position:absolute;border-top:1px solid #e5e5e5;overflow:auto}.geSidebar{background:#f5f5f5;border-bottom:1px solid #e5e5e5;padding:5px;padding-bottom:12px;overflow:hidden}.geSidebarContainer .geTitle{display:block;font-size:9pt;border-bottom:1px solid #e5e5e5;font-weight:400;padding:6px 0 6px 14px;margin:0;cursor:default;background:#eee;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.4em}.geSidebarContainer .geTitle:hover{background:#e5e5e5}.geTitle img{opacity:.5}.geTitle img:hover{opacity:1}.geSidebar .geItem{display:inline-block;background-repeat:no-repeat;background-position:50% 50%;border:1px solid transparent;border-radius:2px;cursor:move}.geSidebar .geItem:hover{border:1px solid gray!important}.geItem{vertical-align:top;display:inline-block}.geSidebarTooltip{position:absolute;background:#fff;overflow:hidden;border:1px solid gray;border-radius:8px;-webkit-box-shadow:0 0 2px 2px #d5d5d5;-moz-box-shadow:0 0 2px 2px #d5d5d5;box-shadow:0 0 2px 2px #d5d5d5}.geFooterContainer{background:#e5e5e5;border-top:1px solid silver}.geFooterContainer a{font-size:14px;color:#235695;font-weight:700;text-decoration:none}.geFooterContainer table{border-collapse:collapse;margin:0 auto}.geFooterContainer td{border-left:1px solid silver;border-right:1px solid silver}.geFooterContainer td:hover{background-color:#b3b3b3}.geFooterContainer a{display:block;box-sizing:border-box;width:100%;height:100%;padding:11px 42px 11px 42px;white-space:nowrap}.geHsplit{cursor:col-resize;background-color:#e5e5e5;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAHBAMAAADdS/HjAAAAGFBMVEUzMzP///9tbW1QUFCKiopBQUF8fHxfX1/IXlmXAAAAHUlEQVQImWMQEGAQFWUQFmYQF2cQEmIQE2MQEQEACy4BF67hpEwAAAAASUVORK5CYII=);background-repeat:no-repeat;background-position:center center}.geVsplit{font-size:1pt;cursor:row-resize;background-color:#e5e5e5;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAEBAMAAACw6DhOAAAAGFBMVEUzMzP///9tbW1QUFCKiopBQUF8fHxfX1/IXlmXAAAAFElEQVQImWNgNVdzYBAUFBRggLMAEzYBy29kEPgAAAAASUVORK5CYII=);background-repeat:no-repeat;background-position:center center}.geHsplit:hover,.geVsplit:hover{background-color:#d5d5d5}.geDialog{position:absolute;background:#fff;overflow:hidden;padding:30px;border:1px solid #acacac;-webkit-box-shadow:0 0 2px 2px #d5d5d5;-moz-box-shadow:0 0 2px 2px #d5d5d5;box-shadow:0 0 2px 2px #d5d5d5;z-index:2}.geDialogClose{position:absolute;width:9px;height:9px;opacity:.5;cursor:pointer}.geDialogClose:hover{opacity:1}.geDialogTitle{box-sizing:border-box;white-space:nowrap;background:#e5e5e5;border-bottom:1px solid silver;font-size:15px;font-weight:700;text-align:center;color:#235695}.geDialogFooter{background:#f5f5f5;white-space:nowrap;text-align:right;box-sizing:border-box;border-top:1px solid #e5e5e5;color:#a9a9a9}.geSprite{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAk/CAYAAACauMYVAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAsTAAALEwEAmpwYAAABWWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS40LjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyI+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgpMwidZAAAWn0lEQVR4Ae2dW4gdxdbHO0aJYjzxTtR4EhSDSNB84kPEQOL9CB/Ex4igg8iAGCSgiIIQH1SOqJAnn4N4wBdvYBRBcYTIp0+OF0SDYoJRgyAmeA1e5lv/PrM6q6urqqu7a2/3ZP4NPVVdtda/Vv2qZ9Nrd++9i2IE2xJoHn/88XOq/ccff5RtepxSuv7HqxPE0GkNtC+lVH/YjiTSKoi+EaqA9T9OG3OW4xNdu3btHPZY9DGbRqRtYhiozaYhunfvXu95aoVCNjqzhqh2uGWbkLVPFrWRWgFfvSFqnW3dOtt2W7c2Zd2evI3OhAbr34g0wb/VZOGIjuRVagG+nrYuKQ1IgARIgARIgARIgARIoEbAm93BwmYb1mP58uXFoUOHgn6wTUok8K4Ddgj+9NNPxamnnhpNhpNENdL169eXVQj32jB93VUAEaJNxKORBtmEmGIAoNCBfGXS9C1TiLRF6huobNOp24g3b97cQBIU8HX4RJVp2+oH2dgI7aAp56m1Z50ESIAESIAESIAESIAESGCREtBMJXX6SclZqpjaUVRJ5CuPEabI623ii3rvXN/SVeFsgioO4SwRquDElNU7E3ZB+kTX9g5QH036kAAJkAAJkAAJkAAJkMDEEqiupBFh36vpsVxF1yJVnqkRjyVCDaoWaWqE6qzlWCKuRaojp0Y8lgg1qFqkqRGqs5ZjibgWqY6cGvFYItSgWJIACZAACZAACZAACZDAJBHwXknbAENX1bGr6IZoSMQO5KvbQUZyi9M36OC2xvRVMRWDnbb6jmT6FFW8+UoyzcdSlUbCVMVZkgAJkAAJkAAJkAAJTCqB1Pypc/yu8Jo1a6KfhE0eAMI7duyYS/04aJIwBCGsUeL507bPmbYKQwCCFsUgYQjaJ2MHC7uCvim1RVxLzSHY5YPUq1atKvbt21fTQBC9sxN8ltcnCNHGKCnR2g8HP/TQQ+U5/Mgjj1RajUjxiXc4hTYrCJtff/213K19pW4bUfdF7Aree++9tf+0p556qtRrRKribsSuoNr1KhEx9pAzonUjDtmynQRIgARIgARIgARIgASOGQLlNbrN6Hy3LNtm6/ovwC+qtVNom66v3/p7Ux4YuLsrZLNst686tiO5grZPHdCmbzCgzdp4I1VHX6kDou/AgQOFFW7Y25HU0ZauA/ps0mb9O0eq4uvWrWv9OrgaE3XsUmaJNDZgdPp29JiI2xcVdY1Tj72iOLE1SpRJJ7pvRBXRPpwuaLOnjfb5Ste/tPE1Rk9sR9n68/XUgcNDEiABEiABEiABEjgmCTTunMkl4Z65ublVbbM97rjj3v3999+3+uyqLFo7Ifjqq6+ulq1YsqQxJr6huXj77beLe+65Z5/6uGVDFAZysVtcdNFFXlGJrpDfPSp13nrrLczouauvvnpj2TD/x3vNjz5flOooUy8uvPDCDV9//fX/yb3ADc8///we7UMZFEXnn3/+WbzwwgvF559/XiBCbCeccEJx/fXXF4899tiyxx9/fNXpp5++VO4K19bAO/3SW/4goquuuqp4+OGHi08//bQ8vuyyy4rbb7+9ePTRR4svvvjioAyy9a+//jqiPt5y6dKl+z777DNZr6Pb+++/P3fHHXfMSd/cGWecMXf55Zcjc3lfBDZ4RdxGnyjkZ2Zm5q655ppSGOIiOuP66nGUKYx++eWX4pVXXilXfGpqqnjppZcKuZNbyDjrzzvvvJk33njjORXTMioqrIoPPvigPDdxmm3cuLG49tpri5tvvrm47bbbVkj/pp9//vlfL7744nYVRBldKBgsW7asEIbFWWedVZx00kkFBvrtt9/QVZ520r/ihx9+gOjOslH+REWx+hC0G04zWcjimWee2X/OOefsWrFiRfHtt98esjZeUTji39H3D4B29EvfPnkP5eErr7zS6pV1r+h7771XfPXVV0HRjz76qCFkGxqvGHIyPycru9Ia+eoS6az8l9UWyGfHNhIgARIgARIgARIgARLoQKBxfer6fvLJJ899/PHHZb506aWXvnvxxRdvdW3c48aV9O7du/eIUZUW3nXXXStvvPHGZbhUf/rpp1dK/z4VQUp5ySWXHJAHhuMJ75133rlKcqfVJ5988mpJJFYfPnx42ZNPPlk88cQTuPu4DG3og83999+/WjKTKgAdrJFHfffdd8Xs7OxWcd4sD//Ofvnll4UIlzvqDz74YCGPkIvJ7Nbvv/++TCpULFgijZTO1TK1nVI/hJTR3edTyNXnn3/+nIjDvrY1mGqvJAm7pP6iHjvlYee4dhgUffPNN9dLzrQG1sjyZJu56aabZlCZ31ZrxS2DoiI0Jcab4IDMT7bNr7/++gwqSMxuuOGGt1D3bY2F8hnNt22S/Goq0l91BSOtLI5W3paId0mEu+abuk8fGR1OeIlOme4Spip4dChPLRjpdddd1ztF7MLUE5O/aSSioek3/p89MZU2YO5uDVFZnAPyb/kf19B3LIL7pf2Ar49tJEACJEACJEACJEAC/Qh4c1O5sfWhXHz9MyK5Rx51/N9Qf+OqD4abNm36hxQrQk5XXHHFvyQz/PDss8++1GfjFf3xxx+RHm595513tp944ollBq3Octfs3YMHD+6US87/iPAeEd6ofVp6Rec7D956662N+6FHjhz5Hxl055lnnrlUbnduEFR75F5qTTgmWj5d/OyzzxYbNtSCXSaDrsSTx7fccstSYd+46o6KIuKVK1cWuIPeZWsVhZjcyC6++eYbPExcyLQLyZ6jYySJ4pamvFlQ3vPDImKXvCAo3CnlQSaCtzgQKcrQ1kkU2TQ+y3vKKafkiRR5KkSBAnxjWzDSBx54YEpuYJfLftpppxUXXHBBsWbNmkLOzZhe2ecVlYh2Crf9El352iBPG+BxhlIY4ueee24lLJxXvPbaaw9UDVLxrr68f7Lz7rvvxim0Wd548Z6k8q9a6sg7GKdKBaL/Lhvkj1dUOyXQ2fvuu08PG6Xc4C5PM7Hr+ZvkDUk2kAAJkAAJkAAJkAAJkAAJLFYC3vdQXBiS+jRvj4mR3AFO8nf1quPt27d3+qho5RirINpQxK6fN410jTZv3lxOH19Rlm3rEiUGbY1UMucySjzNnW3rGmVrpPqh4G3btnUK0nuehVZ58HnZKTQakwAJkAAJkAAJkAAJkAAJZCBQu+YPXeu3jTOWXKBXpGOJzMXTK1JXZCyR94p0LJG5OHpF6oqMJfJekY4lMhcHj0mABEiABEiABEiABEhgnkDXe1Ktd876kKVomJr9ZmFYYcF6f7uwHUaFswmqOISzRKiCE1NWGV/f9090JsdwFph99bOfp1ZQX/6yna8qqCvdVvKlr40Q+0mABEiABEiABEiABBY8gSqP8s2kLbcK5U4juZL2BTi4rTH9timHRrQoBk3fCtnBBomGZjVI1EZn69EPBsMwNMVQlPAZSaQQDm6xaGJ9I4m0lWksouAU2UECJEACJEACJEACJEACJEACWQnITzuVP5mLDEX3Qff4VCRUWnHYtM4GRvpZaDXGJ7j1B391IHusdt5SPwzs7ZRGDKaitgzZF4gm2Gk65JeuGsKmu55F4wemUjb50a+oWeM9lKi1dAKP/Fhawyz0vkDDkA0kQAIkQAIkQAIkQAIkQAILnkAtkUBe1GdGY0kiapG6UaZGPv5IUyNzZzT+SN0IUiMff6SpkbkzGn+kbgSpkY8lUjc4HpMACZAACZAACZAACZAACaQQaOSmqdf5Vty95h/vQ63u6DYyrYdmlSXS6enpOew6WBZRFdOSokoiXxl8Tjp0uqQMPZKFakRqT3p77qVEqDYjiVTFWZIACZAACZAACZAACZDARBKQa/0P5XeLD0lwbT8Z9E/Ywd6dSONKWn5XV38qO/yLyP9VQQa+Yt6+ptsQrfX2PFjkoo08SjHKyk7JzwtfrceeEovkaY5/2nhKnFb7vNAu+3ZfH9qCkaJTfjB9lxSHZcdT2ftl3yc7tk2YCSq+rXX15eTeKQIzUk75BHxtraI+p7a2hqgszgFx+lMd5Ri/Nr1fSvzrJm0NppJFb5Sp7pGFwI+aHZFfud4KJeFrBfEb8mCMH6FGENxIgARIgARIgARIgARIYHERQNJabnL17E+K1KCltPexWkwXWjc+WWw/XTw4foiBN/YswlYwqzCmqoKp025kfKmOMTuKxuj061s4TPvNj14kQAIkQAIkQAIkQAIkQAIBAqEsL9RuZRZOIsFI7bodra9ahdumRbFjx47qXSCta99R63qtegup3vzfI5w+vva2t4uiCwVnGxXqbYK+ILK0eacfmrY74t8WtRsIj0mABEiABEiABEiABEiABBYBAffWMb6lGd/dnTx1+63Xrpi+eWDLJGE4QBi7dcax+63Y+rXarcJWSOvuF4C7InZ2bl95rEJa4ru4vYZOozuLaMLb9l3cqu1+t3ctN0WEaqjl8uXLi0OHDtXstI8lCZAACZAACZAACZAACZAACTQIuFkfjhtGnoZg1uHLVNS/7Y6ZN49SwW3btpU3CiGCHcfYtF8HaS11yjaLW7t2bTVttEM0FUU5IBzcSKwojHw2NtoGUxXEdF0xOO7du3eJtbFiwbovClfcZ2MFGwu1bt26st8ytQ7arna2L1rXSFRAjXWRdPranlyqcKjstPp2VD29VFiFtF2Prc+g+tiFG6vfJfzZ2dklOAsk6i5utCUBEiABEiABEiABEiCBySGgl+DuNX9bhI2MTx0gpHW3nNws2kaqCVqndEf5WSG33mbT+H4pK+AmuuhDFm1tkuptUUCkzaaRR2l27Ca7GpG2q522t5YaiQqogy4S+rWtU6nCobLT6tuRQ/9R2t5b2A5i62MXbqy+jaatziy6jRD7SYAESIAESIAESOBYJtA9ffHQsDkAUsxoHmX9raNt13opNp9gJIvCOZToarKhAySXbZFaoUGX51bI1ilqaeSpk2kejlZlkTMtX6Xsi0Xolcgya6tXL336emgHaHMO9Zev/FYoR6ShwdhOAiRAAiRAAiRAAscYgZFk0dmupO2FXTZRe+WYbTWtaLZIbXQUtTTy1KvsxK5eHmlRySnK1c+2LJXQSJiOJDetIrWvh9U8elYq0Zznac9Y6EYCJEACJEACJEACC43AIsqid+/eXT41m+2qEYIQU+HBa0/BwQgLMiTDHgSynjZ4UdA924uDvmxp2WOSNRdm0TUcPCABEiABEiABEiCBTgQmK4vWa1m9Uhx870UF9VpWr211gE6s1BjOKqhtg0qNcpCI68woXSL9jnVxsq44F6ffYvi8Jo8lItIdEWc5hSAIMRVGOeScHMldcwTIjQRIgARIgARIgAQWAYHJyqJd4DaLru6duEZdj/VytKtf1N6KZovUjkhRSyNPnUzzcLQqi5wpPxdtTwbWSYAESIAESIAESOBYJTCSLLr6vGlXajYXhS+yaG0bdHkOIU3JVbBrcDX7mMigSGujmAOKGhiZqsHzNLa6vcceIsrV74096DgSpiPJoqtI7UvYkNMJTHgvOnhmsIMESIAESIAESIAESIAESCBEoPYW0tCsRDOc0GBsJwESIAESIAESIAESIAESIAESmFQCyAiHfGYyOC8Ij0RchbOLW2FXfLKy6FikwQWJdVjBLGeDCmYRQ+TugsRmwz4SIAESIAESIAESIAESIAESGD2B7GmPhnxsCE9WFj0yttkXa/IFlSVLEiABEiABEiABEiABEiABEuhEIHu6g9FVFGXWu5LZha2g1m3Ek5NFa3S2tJF2WnU1tmKoDxYc+epniVCnz5IESIAESIAESIAESIAESIAEJoMAUh2boA1OfVxBFbfCtYQ3hQNEQnb6Eebat4vFHEJCvvaRRFp9v5RvRF/byy+/7GsuQu1eY1+ju1h2kXz2bCMBEiABEiABEiABEiABEiCBBUYglh12zvgwdyuo+ahl0lnUCqqQK9xJ1CfoE66JxpzUOVZqxDXRmAP6YoOqIOw6iYaErWAvUVfYFUR/7y2GorcoHUmABEiABEiABEiABEiABEjg7yNg70IOvgNpxZA/2d0n3ppGpiZhNvOriaYKhBZAhWuiPuPUgVQQGq33omEcu8+MPivoCyzaZhfMt0BRZ3aSAAmQAAmQAAmQAAmQAAmQwGQTQKI2klQHwiMRV+Hs4iqoA1gstYQXBl1WVXNS9dPjLho121ikNcPUA52yCqf6Be1U0DIMGqd0ZIssZTDakAAJkAAJkAAJkAAJkAAJkEArgexpD0ZU0awpEMSseJZETUVDwr2zaJsx6yC2DQN22lQETqhjH4xARbMJ2uiyRKiMskaooixJgARIgARIgARIgARIgARIYDIIILvTtMeXS7U+fexOA4L6xDFyUew4HpRGIjJ3IBzb9pF8u5hv0GibjcgahtqtTbAOdtPT0zUEOB7EFKNBAJHpPlgwOAV2kAAJkAAJkAAJkAAJkAAJkMDfQmBQMuaLGIKaS/n6O7epIByzCFtBjaZVGE6xPZQutgprBL6yV6Q+IbfNCg+KMCSMAdy+QcfZBQdFQ2cSIAESIAESIAESIAESIAESyEIAqU5bulN7Tjo2qgrpt2Jt2bKlNO/1bDRutELQl+xqGunenK0Fp1NzS5+gOiYJq7GWfSL9e5hqxFoqGj1mSQIkQAIkQAIkQAIkQAIkQAILmIBmdFmmoGLImwYLWrHBgq7YEMEqNx0iAjzevD9npI01cMUbBkMarPgQHa+vins72UgCJEACJEACJEACJEACJEACIyWgGcnQLLAKcnEJji+LrgDnqGRfJA1q4Qlr5CxJgARIgARIgARIgARIgARIIIlA9rTHCmZJzV3BwaI+wb6i48uiEaHuSSsbM/IhiNkn97nCyY5thla4zZb9JEACJEACJEACJEACJEACJLBACNhUBxkfjgeF7gpqGtlHOCnh9T5YHZlCkmjEv+qyA9e++LuycCrWwenyHlbfe66fIXetQu2uXfDYXaw+ixQUZwcJkAAJkAAJkAAJkAAJkAAJTA4B5KZ9o6nSSCtgBbtme9BpiFpBHaircE3UJ9hHuBKNCapwrLSzqUThEBO2TjFx9NVE0eAT7iLoFXWFuwrCP7j5Ig4as4MESIAESIAESIAESIAESIAEFhYBe2dy8F1JK4Zcyu6p4rU0MjUha8sCK9FUwdAi2oEqURinClsB3yDVvWh0wjh27xl9bYK+Qao2u2CpC1Q5s0ICJEACJEACJEACJEACJEACC4OApj5ZolWx1CwwOqgVGyxoxbQeHT3SWSW8GpXmnnoc8a11qV+tUaODmNZrBkMOVBDiXaNtHdeKtxp3NVDxrn60JwESIAESIAESIAESIAESIIHhBDQjyZZHWcEsolYQ8x0s6goOEQ1m0V1FW7NoCGIbPH2IuAiyiLrC2URdYRxzIwESIAESIAESIAESIAESIIFjgIBNzpBD4bjPtKqnjyGgTxcjz8SO477CZTCh7C7UHptB0heBpQjbLDpJ1DrEImz0gd309HRtYXA8iClGgQCmqvtgwUbobCABEiABEiABEiABEiABEiCBiSCQkuV1ChSCmlN1cgwZqyD6swhbQR10kLBP0BWGTWhX20bpEx4UqY5ghbMIusIYQNuylNkFs0RFERIgARIgARIgARIgARIgARLIRgBpT5/Up3pO2kaiQvqtWFu2bCm7e92Uxc1XCCJ9tIOgrimle8PWtasdxwTVUIUViy3VplHGhFUwJdLRM3VD1+m57TwmgTCB/wdigVA7yGo0NAAAAABJRU5ErkJggg==) no-repeat top left;width:21px;height:21px}.geSprite-actualsize{background-position:0 0}.geSprite-bold{background-position:0 -46px}.geSprite-bottom{background-position:0 -92px}.geSprite-center{background-position:0 -138px}.geSprite-delete{background-position:0 -184px}.geSprite-fillcolor{background-position:0 -230px}.geSprite-fit{background-position:0 -276px}.geSprite-fontcolor{background-position:0 -322px}.geSprite-gradientcolor{background-position:0 -368px}.geSprite-image{background-position:0 -414px}.geSprite-italic{background-position:0 -460px}.geSprite-left{background-position:0 -506px}.geSprite-middle{background-position:0 -552px}.geSprite-print{background-position:0 -598px}.geSprite-redo{background-position:0 -644px}.geSprite-right{background-position:0 -690px}.geSprite-shadow{background-position:0 -736px}.geSprite-strokecolor{background-position:0 -782px}.geSprite-top{background-position:0 -828px}.geSprite-underline{background-position:0 -874px}.geSprite-undo{background-position:0 -920px}.geSprite-zoomin{background-position:0 -966px}.geSprite-zoomout{background-position:0 -1012px}.geSprite-helbow{background-position:0 -1058px}.geSprite-velbow{background-position:0 -1104px}.geSprite-straight{background-position:0 -1150px}.geSprite-entity{background-position:0 -1196px}.geSprite-segment{background-position:0 -1242px}.geSprite-orthogonal{background-position:0 -1288px}.geSprite-noarrow{background-position:0 -1334px}.geSprite-endclassic{background-position:0 -1380px}.geSprite-endopen{background-position:0 -1426px}.geSprite-endblock{background-position:0 -1472px}.geSprite-endoval{background-position:0 -1518px}.geSprite-enddiamond{background-position:0 -1564px}.geSprite-endthindiamond{background-position:0 -1610px}.geSprite-endclassictrans{background-position:0 -1656px}.geSprite-endblocktrans{background-position:0 -1702px}.geSprite-endovaltrans{background-position:0 -1748px}.geSprite-enddiamondtrans{background-position:0 -1794px}.geSprite-endthindiamondtrans{background-position:0 -1840px}.geSprite-startclassic{background-position:0 -1886px}.geSprite-startopen{background-position:0 -1932px}.geSprite-startblock{background-position:0 -1978px}.geSprite-startoval{background-position:0 -2024px}.geSprite-startdiamond{background-position:0 -2070px}.geSprite-startthindiamond{background-position:0 -2116px}.geSprite-startclassictrans{background-position:0 -2162px}.geSprite-startblocktrans{background-position:0 -2208px}.geSprite-startovaltrans{background-position:0 -2254px}.geSprite-startdiamondtrans{background-position:0 -2300px}.geSprite-startthindiamondtrans{background-position:0 -2346px}.geSprite-copy{background-position:0 -410px}.geSprite-cut{background-position:0 -320px}.geSprite-paste{background-position:0 -367px}.geSprite-duplicate{background-position:0 -736px}.geSprite-save{background-position:0 -782px}.geSprite-publish{background-position:0 -92px}.geBaseButton{padding:10px;border-radius:6px;border:1px solid silver;cursor:pointer;background-color:#ececec;background-image:linear-gradient(#ececec 0,#fcfcfc 100%)}.geBaseButton:hover{background:#ececec}.geBigButton{color:#fff;border:none;padding:10px;font-size:14pt;white-space:nowrap;border-radius:6px;text-shadow:#295989 0 1px 0;background-color:#428bca;background-image:linear-gradient(#4687ce 0,#3068a2 100%);-webkit-box-shadow:rgba(255,255,255,.0980392) 0 1px 0 0 inset,rgba(0,0,0,.2) 0 1px 1px 0;-moz-box-shadow:rgba(255,255,255,.0980392) 0 1px 0 0 inset,rgba(0,0,0,.2) 0 1px 1px 0;box-shadow:rgba(255,255,255,.0980392) 0 1px 0 0 inset,rgba(0,0,0,.2) 0 1px 1px 0}.geBigButton:hover{background-color:#2d6ca2;background-image:linear-gradient(#5a94d3 0,#3673b5 100%)}.geBigButton:active{background-color:#3673b5;background-image:none}@media print{div.geNoPrint{display:none!important}}html div.mxRubberband{border-color:#00d;background:#9cf}td.mxPopupMenuIcon div{width:16px;height:16px}html div.mxPopupMenu{-webkit-box-shadow:2px 2px 3px #d5d5d5;-moz-box-shadow:2px 2px 3px #d5d5d5;box-shadow:2px 2px 3px #d5d5d5;background:#fff;position:absolute;border:3px solid #e7e7e7;padding:3px}html table.mxPopupMenu{border-collapse:collapse;margin:0}html td.mxPopupMenuItem{padding:7px 30px 7px 30px;font-family:Helvetica Neue,Helvetica,Arial Unicode MS,Arial;font-size:10pt}html td.mxPopupMenuIcon{background-color:#fff;padding:0}td.mxPopupMenuIcon .geIcon{padding:2px;padding-bottom:4px;margin:2px;border:1px solid transparent;opacity:.5}td.mxPopupMenuIcon .geIcon:hover{border:1px solid gray;border-radius:2px;opacity:1}html tr.mxPopupMenuItemHover{background-color:#eee;color:#000}table.mxPopupMenu hr{color:#ccc;background-color:#ccc;border:none;height:1px}table.mxPopupMenu tr{font-size:4pt}html td.mxWindowTitle{font-family:Helvetica Neue,Helvetica,Arial Unicode MS,Arial;text-align:left;font-size:12px;color:#707070;padding:4px}div.mxTooltip{-webkit-box-shadow:3px 3px 12px silver;-moz-box-shadow:3px 3px 12px silver;box-shadow:3px 3px 12px silver;background:#ffc;border-style:solid;border-width:1px;border-color:#000;font-family:Arial;font-size:8pt;position:absolute;cursor:default;padding:4px;color:#000}body{font-family:Arial Unicode MS,Arial,Helvetica;font-size:10pt}
\ No newline at end of file
index 1030831..c9ee45b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2675=['urlForward[timeout],\x20browser[windowWidth]','urlForward[headers],\x20browser[wsindowHeight]','urlForward[body]','sequelize','getDataValue','action','contactManager','integration','jscripty','urlForward','browser','bot','script','Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script','STRING','jscripty[ProjectId],\x20browser[type(0=Popup,1=CTI\x20URL)],\x20contactManager[ListId],\x20urlForward[type(GET,POST,PUT,DELETE)],\x20script[info],\x20integration[intName(desk,dynamics365,freshdesk,freshsales,salesforce,sugarcrm,vtiger,zendesk,zoho)],\x20motionbar[type(0=Popup,1=CTI\x20URL,2=WinApp)]','contactManager[autoCreate(0=No,1=Yes)],\x20urlForward[URL],\x20script[type],\x20integration[AccountId],\x20motionbar[TemplateId,URL,WinAppPath],\x20browser[TemplateId,URL]','contactManager[searchFields],\x20script[script],\x20integration[ConfigurationId],\x20motionbar[NULL,eventVariables(0=No,1=Yes),WinAppArguments],\x20browser[NULL,eventVariables(0=No,1=Yes)]','browser[location(0=NewTab,1=NewWindow,2=MotionTab)],\x20contactManager[autoCreateField]'];(function(_0x1d9c0d,_0x4634e1){var _0x35bb6f=function(_0x72bf1a){while(--_0x72bf1a){_0x1d9c0d['push'](_0x1d9c0d['shift']());}};_0x35bb6f(++_0x4634e1);}(_0x2675,0x75));var _0x5267=function(_0x14c552,_0x9a0dee){_0x14c552=_0x14c552-0x0;var _0x29dbef=_0x2675[_0x14c552];return _0x29dbef;};'use strict';var Sequelize=require(_0x5267('0x0'));module['exports']={'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x4f8fae){return this[_0x5267('0x1')](_0x5267('0x2'));}},'action':{'type':Sequelize['STRING'],'allowNull':![],'validate':{'isIn':{'args':[[_0x5267('0x3'),_0x5267('0x4'),'motionbar',_0x5267('0x5'),_0x5267('0x6'),_0x5267('0x7'),_0x5267('0x8'),_0x5267('0x9')]],'msg':_0x5267('0xa')}},'comment':'Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script'},'data1':{'type':Sequelize[_0x5267('0xb')](0x1000),'comment':_0x5267('0xc')},'data2':{'type':Sequelize['STRING'](0x1000),'comment':_0x5267('0xd')},'data3':{'type':Sequelize['STRING'](0x1000),'comment':_0x5267('0xe')},'data4':{'type':Sequelize[_0x5267('0xb')](0x1000),'comments':_0x5267('0xf')},'data5':{'type':Sequelize['STRING'](0x1000),'comments':_0x5267('0x10')},'data6':{'type':Sequelize['STRING'],'comments':_0x5267('0x11')},'data7':{'type':Sequelize['TEXT'],'comments':_0x5267('0x12')}};
\ No newline at end of file
+var _0xfe6a=['browser','bot','Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script','STRING','jscripty[ProjectId],\x20browser[type(0=Popup,1=CTI\x20URL)],\x20contactManager[ListId],\x20urlForward[type(GET,POST,PUT,DELETE)],\x20script[info],\x20integration[intName(desk,dynamics365,freshdesk,freshsales,salesforce,sugarcrm,vtiger,zendesk,zoho)],\x20motionbar[type(0=Popup,1=CTI\x20URL,2=WinApp)]','contactManager[searchFields],\x20script[script],\x20integration[ConfigurationId],\x20motionbar[NULL,eventVariables(0=No,1=Yes),WinAppArguments],\x20browser[NULL,eventVariables(0=No,1=Yes)]','urlForward[timeout],\x20browser[windowWidth],\x20contactManager[ignoreDialerContactId]','sequelize','exports','VIRTUAL','action','integration','motionbar','jscripty','urlForward'];(function(_0x1602ef,_0x447aba){var _0x5870ee=function(_0x4d94e7){while(--_0x4d94e7){_0x1602ef['push'](_0x1602ef['shift']());}};_0x5870ee(++_0x447aba);}(_0xfe6a,0xe8));var _0xafe6=function(_0x4a9329,_0x4675f0){_0x4a9329=_0x4a9329-0x0;var _0x33e20b=_0xfe6a[_0x4a9329];return _0x33e20b;};'use strict';var Sequelize=require(_0xafe6('0x0'));module[_0xafe6('0x1')]={'name':{'type':Sequelize[_0xafe6('0x2')],'get':function(_0x19e193){return this['getDataValue'](_0xafe6('0x3'));}},'action':{'type':Sequelize['STRING'],'allowNull':![],'validate':{'isIn':{'args':[['contactManager',_0xafe6('0x4'),_0xafe6('0x5'),_0xafe6('0x6'),_0xafe6('0x7'),_0xafe6('0x8'),_0xafe6('0x9'),'script']],'msg':_0xafe6('0xa')}},'comment':_0xafe6('0xa')},'data1':{'type':Sequelize[_0xafe6('0xb')](0x1000),'comment':_0xafe6('0xc')},'data2':{'type':Sequelize[_0xafe6('0xb')](0x1000),'comment':'contactManager[autoCreate(0=No,1=Yes)],\x20urlForward[URL],\x20script[type],\x20integration[AccountId],\x20motionbar[TemplateId,URL,WinAppPath],\x20browser[TemplateId,URL]'},'data3':{'type':Sequelize['STRING'](0x1000),'comment':_0xafe6('0xd')},'data4':{'type':Sequelize[_0xafe6('0xb')](0x1000),'comments':'browser[location(0=NewTab,1=NewWindow,2=MotionTab)],\x20contactManager[autoCreateField]'},'data5':{'type':Sequelize[_0xafe6('0xb')](0x1000),'comments':_0xafe6('0xe')},'data6':{'type':Sequelize[_0xafe6('0xb')],'comments':'urlForward[headers],\x20browser[wsindowHeight]'},'data7':{'type':Sequelize['TEXT'],'comments':'urlForward[body]'}};
\ No newline at end of file
index 7b822fa..1eb6ab9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x44dd=['eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../mysqldb','sendStatus','end','status','json','offset','undefined','count','limit','set','Content-Range','apply','save','update','then','error','send','body','Action','find','catch','params'];(function(_0x10d811,_0x2871cc){var _0x350e84=function(_0x5bc8af){while(--_0x5bc8af){_0x10d811['push'](_0x10d811['shift']());}};_0x350e84(++_0x2871cc);}(_0x44dd,0x1b0));var _0xd44d=function(_0x18c7b8,_0x5d5bbd){_0x18c7b8=_0x18c7b8-0x0;var _0x37ff13=_0x44dd[_0x18c7b8];return _0x37ff13;};'use strict';var emlformat=require(_0xd44d('0x0'));var rimraf=require(_0xd44d('0x1'));var zipdir=require(_0xd44d('0x2'));var jsonpatch=require(_0xd44d('0x3'));var rp=require('request-promise');var moment=require(_0xd44d('0x4'));var BPromise=require(_0xd44d('0x5'));var Mustache=require(_0xd44d('0x6'));var util=require(_0xd44d('0x7'));var path=require(_0xd44d('0x8'));var sox=require(_0xd44d('0x9'));var csv=require(_0xd44d('0xa'));var ejs=require(_0xd44d('0xb'));var fs=require('fs');var fs_extra=require(_0xd44d('0xc'));var _=require(_0xd44d('0xd'));var squel=require(_0xd44d('0xe'));var crypto=require('crypto');var jsforce=require(_0xd44d('0xf'));var deskjs=require(_0xd44d('0x10'));var toCsv=require(_0xd44d('0xa'));var querystring=require(_0xd44d('0x11'));var Papa=require(_0xd44d('0x12'));var Redis=require(_0xd44d('0x13'));var authService=require(_0xd44d('0x14'));var qs=require(_0xd44d('0x15'));var as=require(_0xd44d('0x16'));var hardwareService=require(_0xd44d('0x17'));var logger=require(_0xd44d('0x18'))(_0xd44d('0x19'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xd44d('0x1a'))['db'];function respondWithStatusCode(_0x9de359,_0x5a0385){_0x5a0385=_0x5a0385||0xcc;return function(_0x4a4a61){if(_0x4a4a61){return _0x9de359[_0xd44d('0x1b')](_0x5a0385);}return _0x9de359['status'](_0x5a0385)[_0xd44d('0x1c')]();};}function respondWithResult(_0x18abfa,_0x4c8681){_0x4c8681=_0x4c8681||0xc8;return function(_0x5dc6a9){if(_0x5dc6a9){return _0x18abfa[_0xd44d('0x1d')](_0x4c8681)[_0xd44d('0x1e')](_0x5dc6a9);}};}function respondWithFilteredResult(_0x548b2e,_0x23d05b){return function(_0x39f306){if(_0x39f306){var _0x5cd52c=typeof _0x23d05b[_0xd44d('0x1f')]===_0xd44d('0x20')&&typeof _0x23d05b['limit']===_0xd44d('0x20');var _0x239352=_0x39f306[_0xd44d('0x21')];var _0x12fa0a=_0x5cd52c?0x0:_0x23d05b['offset'];var _0x1831f9=_0x5cd52c?_0x39f306[_0xd44d('0x21')]:_0x23d05b['offset']+_0x23d05b[_0xd44d('0x22')];var _0x2afce5;if(_0x1831f9>=_0x239352){_0x1831f9=_0x239352;_0x2afce5=0xc8;}else{_0x2afce5=0xce;}_0x548b2e['status'](_0x2afce5);return _0x548b2e[_0xd44d('0x23')](_0xd44d('0x24'),_0x12fa0a+'-'+_0x1831f9+'/'+_0x239352)[_0xd44d('0x1e')](_0x39f306);}return null;};}function patchUpdates(_0x3f1c16){return function(_0x2c582c){try{jsonpatch[_0xd44d('0x25')](_0x2c582c,_0x3f1c16,!![]);}catch(_0x58e28a){return BPromise['reject'](_0x58e28a);}return _0x2c582c[_0xd44d('0x26')]();};}function saveUpdates(_0x41b7c5,_0x43edf2){return function(_0x359c05){if(_0x359c05){return _0x359c05[_0xd44d('0x27')](_0x41b7c5)[_0xd44d('0x28')](function(_0x4e9844){return _0x4e9844;});}return null;};}function removeEntity(_0x15fee7,_0x57056f){return function(_0x186191){if(_0x186191){return _0x186191['destroy']()[_0xd44d('0x28')](function(){_0x15fee7[_0xd44d('0x1d')](0xcc)[_0xd44d('0x1c')]();});}};}function handleEntityNotFound(_0x5e0b24,_0x42e1f4){return function(_0x15ea33){if(!_0x15ea33){_0x5e0b24['sendStatus'](0x194);}return _0x15ea33;};}function handleError(_0x2808f1,_0x49d380){_0x49d380=_0x49d380||0x1f4;return function(_0x2275b2){logger[_0xd44d('0x29')](_0x2275b2['stack']);if(_0x2275b2['name']){delete _0x2275b2['name'];}_0x2808f1[_0xd44d('0x1d')](_0x49d380)[_0xd44d('0x2a')](_0x2275b2);};}exports['update']=function(_0x589e17,_0x435d58){if(_0x589e17[_0xd44d('0x2b')]['id']){delete _0x589e17[_0xd44d('0x2b')]['id'];}return db[_0xd44d('0x2c')][_0xd44d('0x2d')]({'where':{'id':_0x589e17['params']['id']}})[_0xd44d('0x28')](handleEntityNotFound(_0x435d58,null))[_0xd44d('0x28')](saveUpdates(_0x589e17[_0xd44d('0x2b')],null))['then'](respondWithResult(_0x435d58,null))[_0xd44d('0x2e')](handleError(_0x435d58,null));};exports['destroy']=function(_0x4c6fdd,_0x45c67c){return db[_0xd44d('0x2c')][_0xd44d('0x2d')]({'where':{'id':_0x4c6fdd[_0xd44d('0x2f')]['id']}})[_0xd44d('0x28')](handleEntityNotFound(_0x45c67c,null))[_0xd44d('0x28')](removeEntity(_0x45c67c,null))['catch'](handleError(_0x45c67c,null));};
\ No newline at end of file
+var _0x3ef1=['to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','undefined','count','reject','save','update','then','destroy','stack','name','status','body','Action','find','params','catch','rimraf','zip-dir','moment','mustache','util','path','sox'];(function(_0x5d7af3,_0x181dd5){var _0x2f4276=function(_0xc2e195){while(--_0xc2e195){_0x5d7af3['push'](_0x5d7af3['shift']());}};_0x2f4276(++_0x181dd5);}(_0x3ef1,0x99));var _0x13ef=function(_0x465a0c,_0x19d4d5){_0x465a0c=_0x465a0c-0x0;var _0x1e202e=_0x3ef1[_0x465a0c];return _0x1e202e;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x13ef('0x0'));var zipdir=require(_0x13ef('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x13ef('0x2'));var BPromise=require('bluebird');var Mustache=require(_0x13ef('0x3'));var util=require(_0x13ef('0x4'));var path=require(_0x13ef('0x5'));var sox=require(_0x13ef('0x6'));var csv=require(_0x13ef('0x7'));var ejs=require(_0x13ef('0x8'));var fs=require('fs');var fs_extra=require(_0x13ef('0x9'));var _=require(_0x13ef('0xa'));var squel=require('squel');var crypto=require(_0x13ef('0xb'));var jsforce=require(_0x13ef('0xc'));var deskjs=require(_0x13ef('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x13ef('0xe'));var Redis=require(_0x13ef('0xf'));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(_0x13ef('0x10'))(_0x13ef('0x11'));var utils=require('../../config/utils');var config=require(_0x13ef('0x12'));var licenseUtil=require(_0x13ef('0x13'));var db=require(_0x13ef('0x14'))['db'];function respondWithStatusCode(_0x13bb80,_0x5b06de){_0x5b06de=_0x5b06de||0xcc;return function(_0x266656){if(_0x266656){return _0x13bb80[_0x13ef('0x15')](_0x5b06de);}return _0x13bb80['status'](_0x5b06de)[_0x13ef('0x16')]();};}function respondWithResult(_0x5accea,_0xe71169){_0xe71169=_0xe71169||0xc8;return function(_0x3ee519){if(_0x3ee519){return _0x5accea['status'](_0xe71169)[_0x13ef('0x17')](_0x3ee519);}};}function respondWithFilteredResult(_0x3e5113,_0x2a3ee3){return function(_0x2d2544){if(_0x2d2544){var _0x1437e0=typeof _0x2a3ee3[_0x13ef('0x18')]===_0x13ef('0x19')&&typeof _0x2a3ee3['limit']===_0x13ef('0x19');var _0x451626=_0x2d2544[_0x13ef('0x1a')];var _0x261b0d=_0x1437e0?0x0:_0x2a3ee3[_0x13ef('0x18')];var _0x5cf09e=_0x1437e0?_0x2d2544[_0x13ef('0x1a')]:_0x2a3ee3[_0x13ef('0x18')]+_0x2a3ee3['limit'];var _0x2fe315;if(_0x5cf09e>=_0x451626){_0x5cf09e=_0x451626;_0x2fe315=0xc8;}else{_0x2fe315=0xce;}_0x3e5113['status'](_0x2fe315);return _0x3e5113['set']('Content-Range',_0x261b0d+'-'+_0x5cf09e+'/'+_0x451626)['json'](_0x2d2544);}return null;};}function patchUpdates(_0x370c9d){return function(_0x299b00){try{jsonpatch['apply'](_0x299b00,_0x370c9d,!![]);}catch(_0x38db9d){return BPromise[_0x13ef('0x1b')](_0x38db9d);}return _0x299b00[_0x13ef('0x1c')]();};}function saveUpdates(_0x8e9f64,_0x3ef22f){return function(_0x4b617c){if(_0x4b617c){return _0x4b617c[_0x13ef('0x1d')](_0x8e9f64)[_0x13ef('0x1e')](function(_0x1f29c6){return _0x1f29c6;});}return null;};}function removeEntity(_0x3adc62,_0x302d0d){return function(_0x2d8db6){if(_0x2d8db6){return _0x2d8db6[_0x13ef('0x1f')]()[_0x13ef('0x1e')](function(){_0x3adc62['status'](0xcc)[_0x13ef('0x16')]();});}};}function handleEntityNotFound(_0x346684,_0x396c69){return function(_0x16b4a7){if(!_0x16b4a7){_0x346684[_0x13ef('0x15')](0x194);}return _0x16b4a7;};}function handleError(_0x3294ac,_0x140d0e){_0x140d0e=_0x140d0e||0x1f4;return function(_0x5937d8){logger['error'](_0x5937d8[_0x13ef('0x20')]);if(_0x5937d8['name']){delete _0x5937d8[_0x13ef('0x21')];}_0x3294ac[_0x13ef('0x22')](_0x140d0e)['send'](_0x5937d8);};}exports[_0x13ef('0x1d')]=function(_0x39b5c1,_0x1dd185){if(_0x39b5c1[_0x13ef('0x23')]['id']){delete _0x39b5c1[_0x13ef('0x23')]['id'];}return db[_0x13ef('0x24')][_0x13ef('0x25')]({'where':{'id':_0x39b5c1[_0x13ef('0x26')]['id']}})[_0x13ef('0x1e')](handleEntityNotFound(_0x1dd185,null))[_0x13ef('0x1e')](saveUpdates(_0x39b5c1[_0x13ef('0x23')],null))[_0x13ef('0x1e')](respondWithResult(_0x1dd185,null))[_0x13ef('0x27')](handleError(_0x1dd185,null));};exports[_0x13ef('0x1f')]=function(_0xd9f576,_0x424d5e){return db['Action'][_0x13ef('0x25')]({'where':{'id':_0xd9f576[_0x13ef('0x26')]['id']}})[_0x13ef('0x1e')](handleEntityNotFound(_0x424d5e,null))[_0x13ef('0x1e')](removeEntity(_0x424d5e,null))['catch'](handleError(_0x424d5e,null));};
\ No newline at end of file
index b75f851..ac2f8e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f69=['rimraf','../../config/environment','exports','tools_actions','util','../../config/logger','api','request-promise'];(function(_0x219a43,_0x3e405a){var _0x17c865=function(_0x11305a){while(--_0x11305a){_0x219a43['push'](_0x219a43['shift']());}};_0x17c865(++_0x3e405a);}(_0x0f69,0x6c));var _0x90f6=function(_0x11005e,_0x20c3d2){_0x11005e=_0x11005e-0x0;var _0x29338f=_0x0f69[_0x11005e];return _0x29338f;};'use strict';var _=require('lodash');var util=require(_0x90f6('0x0'));var logger=require(_0x90f6('0x1'))(_0x90f6('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x90f6('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x90f6('0x4'));var config=require(_0x90f6('0x5'));var attributes=require('./action.attributes');module[_0x90f6('0x6')]=function(_0x396be0,_0x24b66f){return _0x396be0['define']('Action',attributes,{'tableName':_0x90f6('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb77b=['moment','bluebird','request-promise','rimraf','../../config/environment','exports','Action','tools_actions','../../config/logger','api'];(function(_0x3821d5,_0x26b4a9){var _0x61950e=function(_0x42dd26){while(--_0x42dd26){_0x3821d5['push'](_0x3821d5['shift']());}};_0x61950e(++_0x26b4a9);}(_0xb77b,0x80));var _0xbb77=function(_0x5db59c,_0x11cc79){_0x5db59c=_0x5db59c-0x0;var _0x2a1f41=_0xb77b[_0x5db59c];return _0x2a1f41;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xbb77('0x0'))(_0xbb77('0x1'));var moment=require(_0xbb77('0x2'));var BPromise=require(_0xbb77('0x3'));var rp=require(_0xbb77('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xbb77('0x5'));var config=require(_0xbb77('0x6'));var attributes=require('./action.attributes');module[_0xbb77('0x7')]=function(_0x31a612,_0x10b172){return _0x31a612['define'](_0xbb77('0x8'),attributes,{'tableName':_0xbb77('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3b47afb..80638ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x53ec=['error','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','client','request','then','info','Action,\x20%s,\x20%s','request\x20sent','debug','stringify','code'];(function(_0x725b8e,_0xc22b48){var _0x43ac45=function(_0x46bb4a){while(--_0x46bb4a){_0x725b8e['push'](_0x725b8e['shift']());}};_0x43ac45(++_0xc22b48);}(_0x53ec,0x192));var _0xc53e=function(_0x5e6cb8,_0x1d1eb5){_0x5e6cb8=_0x5e6cb8-0x0;var _0x41754f=_0x53ec[_0x5e6cb8];return _0x41754f;};'use strict';var _=require(_0xc53e('0x0'));var util=require(_0xc53e('0x1'));var moment=require(_0xc53e('0x2'));var BPromise=require(_0xc53e('0x3'));var rs=require(_0xc53e('0x4'));var fs=require('fs');var Redis=require(_0xc53e('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xc53e('0x6'));var logger=require('../../config/logger')(_0xc53e('0x7'));var config=require(_0xc53e('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xc53e('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x41a9e8,_0x2de88b,_0x5d3b28){return new BPromise(function(_0x1616ac,_0x1ac6c0){return client[_0xc53e('0xa')](_0x41a9e8,_0x5d3b28)[_0xc53e('0xb')](function(_0xd9612){logger[_0xc53e('0xc')](_0xc53e('0xd'),_0x2de88b,_0xc53e('0xe'));logger[_0xc53e('0xf')]('Action,\x20%s,\x20%s,\x20%s',_0x2de88b,'request\x20sent',JSON[_0xc53e('0x10')](_0xd9612));if(_0xd9612['error']){if(_0xd9612['error'][_0xc53e('0x11')]===0x1f4){logger[_0xc53e('0x12')](_0xc53e('0xd'),_0x2de88b,_0xd9612[_0xc53e('0x12')]['message']);return _0x1ac6c0(_0xd9612['error'][_0xc53e('0x13')]);}logger[_0xc53e('0x12')](_0xc53e('0xd'),_0x2de88b,_0xd9612[_0xc53e('0x12')][_0xc53e('0x13')]);return _0x1616ac(_0xd9612[_0xc53e('0x12')][_0xc53e('0x13')]);}else{logger[_0xc53e('0xc')](_0xc53e('0xd'),_0x2de88b,_0xc53e('0xe'));_0x1616ac(_0xd9612['result'][_0xc53e('0x13')]);}})[_0xc53e('0x14')](function(_0x535cd4){logger[_0xc53e('0x12')](_0xc53e('0xd'),_0x2de88b,_0x535cd4);_0x1ac6c0(_0x535cd4);});});}
\ No newline at end of file
+var _0x5fab=['../../config/environment','jayson/promise','client','request','then','request\x20sent','debug','Action,\x20%s,\x20%s,\x20%s','stringify','error','code','message','Action,\x20%s,\x20%s','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x953a55,_0x736d43){var _0x43fa9a=function(_0x400790){while(--_0x400790){_0x953a55['push'](_0x953a55['shift']());}};_0x43fa9a(++_0x736d43);}(_0x5fab,0x177));var _0xb5fa=function(_0x436849,_0x430b00){_0x436849=_0x436849-0x0;var _0x5c5f73=_0x5fab[_0x436849];return _0x5c5f73;};'use strict';var _=require(_0xb5fa('0x0'));var util=require(_0xb5fa('0x1'));var moment=require('moment');var BPromise=require(_0xb5fa('0x2'));var rs=require(_0xb5fa('0x3'));var fs=require('fs');var Redis=require(_0xb5fa('0x4'));var db=require(_0xb5fa('0x5'))['db'];var utils=require(_0xb5fa('0x6'));var logger=require(_0xb5fa('0x7'))(_0xb5fa('0x8'));var config=require(_0xb5fa('0x9'));var jayson=require(_0xb5fa('0xa'));var client=jayson[_0xb5fa('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5d70f6,_0x2e3804,_0x1aec3e){return new BPromise(function(_0x9c7bce,_0x56d018){return client[_0xb5fa('0xc')](_0x5d70f6,_0x1aec3e)[_0xb5fa('0xd')](function(_0x2cf4a5){logger['info']('Action,\x20%s,\x20%s',_0x2e3804,_0xb5fa('0xe'));logger[_0xb5fa('0xf')](_0xb5fa('0x10'),_0x2e3804,_0xb5fa('0xe'),JSON[_0xb5fa('0x11')](_0x2cf4a5));if(_0x2cf4a5[_0xb5fa('0x12')]){if(_0x2cf4a5[_0xb5fa('0x12')][_0xb5fa('0x13')]===0x1f4){logger[_0xb5fa('0x12')]('Action,\x20%s,\x20%s',_0x2e3804,_0x2cf4a5[_0xb5fa('0x12')][_0xb5fa('0x14')]);return _0x56d018(_0x2cf4a5['error'][_0xb5fa('0x14')]);}logger['error'](_0xb5fa('0x15'),_0x2e3804,_0x2cf4a5[_0xb5fa('0x12')][_0xb5fa('0x14')]);return _0x9c7bce(_0x2cf4a5[_0xb5fa('0x12')][_0xb5fa('0x14')]);}else{logger['info']('Action,\x20%s,\x20%s',_0x2e3804,_0xb5fa('0xe'));_0x9c7bce(_0x2cf4a5[_0xb5fa('0x16')][_0xb5fa('0x14')]);}})[_0xb5fa('0x17')](function(_0x56fe10){logger['error'](_0xb5fa('0x15'),_0x2e3804,_0x56fe10);_0x56d018(_0x56fe10);});});}
\ No newline at end of file
index 0c0e1c1..9f030dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ab7=['put','/:id','isAuthenticated','delete','exports','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x27eda0,_0x42a3cf){var _0x2b63a5=function(_0x431084){while(--_0x431084){_0x27eda0['push'](_0x27eda0['shift']());}};_0x2b63a5(++_0x42a3cf);}(_0x2ab7,0x109));var _0x72ab=function(_0x46f5a3,_0x2226c5){_0x46f5a3=_0x46f5a3-0x0;var _0x545ad7=_0x2ab7[_0x46f5a3];return _0x545ad7;};'use strict';var multer=require(_0x72ab('0x0'));var util=require('util');var path=require(_0x72ab('0x1'));var timeout=require(_0x72ab('0x2'));var express=require('express');var router=express[_0x72ab('0x3')]();var fs_extra=require(_0x72ab('0x4'));var auth=require(_0x72ab('0x5'));var interaction=require(_0x72ab('0x6'));var config=require(_0x72ab('0x7'));var controller=require('./action.controller');router[_0x72ab('0x8')](_0x72ab('0x9'),auth[_0x72ab('0xa')](),controller['update']);router[_0x72ab('0xb')](_0x72ab('0x9'),auth[_0x72ab('0xa')](),controller['destroy']);module[_0x72ab('0xc')]=router;
\ No newline at end of file
+var _0x90ed=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','./action.controller','put','/:id','isAuthenticated','update','delete','destroy','util','connect-timeout','express'];(function(_0x1e0dc8,_0x1adf69){var _0x47d835=function(_0x4d87bb){while(--_0x4d87bb){_0x1e0dc8['push'](_0x1e0dc8['shift']());}};_0x47d835(++_0x1adf69);}(_0x90ed,0x1cb));var _0xd90e=function(_0x3f2e45,_0xe27e2f){_0x3f2e45=_0x3f2e45-0x0;var _0x341d30=_0x90ed[_0x3f2e45];return _0x341d30;};'use strict';var multer=require('multer');var util=require(_0xd90e('0x0'));var path=require('path');var timeout=require(_0xd90e('0x1'));var express=require(_0xd90e('0x2'));var router=express[_0xd90e('0x3')]();var fs_extra=require(_0xd90e('0x4'));var auth=require(_0xd90e('0x5'));var interaction=require(_0xd90e('0x6'));var config=require('../../config/environment');var controller=require(_0xd90e('0x7'));router[_0xd90e('0x8')](_0xd90e('0x9'),auth[_0xd90e('0xa')](),controller[_0xd90e('0xb')]);router[_0xd90e('0xc')](_0xd90e('0x9'),auth[_0xd90e('0xa')](),controller[_0xd90e('0xd')]);module['exports']=router;
\ No newline at end of file
index 3f31f7b..837adda 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x207c=['STRING','TEXT','exports'];(function(_0x1eeafd,_0x4e0733){var _0x27800b=function(_0x7ead25){while(--_0x7ead25){_0x1eeafd['push'](_0x1eeafd['shift']());}};_0x27800b(++_0x4e0733);}(_0x207c,0x1e8));var _0xc207=function(_0x31b90f,_0x35ef73){_0x31b90f=_0x31b90f-0x0;var _0x15653b=_0x207c[_0x31b90f];return _0x15653b;};'use strict';var Sequelize=require('sequelize');module[_0xc207('0x0')]={'name':{'type':Sequelize[_0xc207('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0xc207('0x1')]},'parent':{'type':Sequelize[_0xc207('0x1')]},'table':{'type':Sequelize[_0xc207('0x1')]},'conditions':{'type':Sequelize[_0xc207('0x2')]},'joins':{'type':Sequelize[_0xc207('0x2')]}};
\ No newline at end of file
+var _0xc4aa=['STRING','sequelize','exports'];(function(_0x913f87,_0x43a192){var _0x5845fd=function(_0x24a0a0){while(--_0x24a0a0){_0x913f87['push'](_0x913f87['shift']());}};_0x5845fd(++_0x43a192);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x53ccf2,_0x13cb67){_0x53ccf2=_0x53ccf2-0x0;var _0x5a2964=_0xc4aa[_0x53ccf2];return _0x5a2964;};'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 c9359f1..1f8e9c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf40=['save','then','get','CustomReports','UserProfileResource','destroy','name','send','index','map','AnalyticCustomReport','fieldName','type','key','model','keys','filters','intersection','attributes','fields','length','query','nolimit','order','where','pick','filter','merge','VIRTUAL','includeAll','include','rows','catch','params','rawAttributes','options','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','Reports','UserProfileSection','userProfileId','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','join','cross_join','SUM(%s)','COUNT(%s)','COUNT(DISTINCT\x20%s)','MAX(%s)','MIN(%s)','AVG(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','SEC_TO_TIME(%s)','HOUR(%s)','ROUND(%s)','includes','IS\x20EMPTY','IS\x20NOT\x20EMPTY','rules','operator','group','field','condition','value','getFields','Sequelize','ValidationErrorItem','keyBy','select','from','table','MetricId','metric','replace','function','format','groupBy','orderBy','DESC','joins','parse','parentKey','foreignTable','foreignKey','%s.%s\x20=\x20%s.%s','conditions','debug','Limited\x20Query:','toString','sequelize','QueryTypes','SELECT','left_join','DATE(%s)','UNIX_TIMESTAMP(%s)','IS\x20NULL','IS\x20NOT\x20NULL','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','findAll','alias','clone','output','web','fullPath','%s-%s.%s','randomstring','generate','csv','AnalyticExtractedReport','cdr','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','endDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','info','Run\x20Query:','child_process','fork','../../components/export/','../../files/reports','savename','countTable','COUNT(*)','run','runReport','right_join','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','lodash','squel','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../mysqldb','dbH','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject'];(function(_0x2112d4,_0x3c863c){var _0x434972=function(_0x477020){while(--_0x477020){_0x2112d4['push'](_0x2112d4['shift']());}};_0x434972(++_0x3c863c);}(_0xcf40,0x1d0));var _0x0cf4=function(_0x4ffc16,_0x3df563){_0x4ffc16=_0x4ffc16-0x0;var _0x59b861=_0xcf40[_0x4ffc16];return _0x59b861;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x0cf4('0x0'));var zipdir=require(_0x0cf4('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x0cf4('0x2'));var moment=require(_0x0cf4('0x3'));var BPromise=require(_0x0cf4('0x4'));var Mustache=require(_0x0cf4('0x5'));var util=require('util');var path=require(_0x0cf4('0x6'));var sox=require(_0x0cf4('0x7'));var csv=require(_0x0cf4('0x8'));var ejs=require(_0x0cf4('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x0cf4('0xa'));var squel=require(_0x0cf4('0xb'));var crypto=require('crypto');var jsforce=require(_0x0cf4('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x0cf4('0xd'));var Papa=require('papaparse');var Redis=require(_0x0cf4('0xe'));var authService=require(_0x0cf4('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x0cf4('0x10'));var hardwareService=require(_0x0cf4('0x11'));var logger=require('../../config/logger')(_0x0cf4('0x12'));var utils=require(_0x0cf4('0x13'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x0cf4('0x14'))['db'];var dbH=require('../../mysqldb')[_0x0cf4('0x15')];function respondWithStatusCode(_0x4db1f1,_0x7cc62e){_0x7cc62e=_0x7cc62e||0xcc;return function(_0x84b517){if(_0x84b517){return _0x4db1f1[_0x0cf4('0x16')](_0x7cc62e);}return _0x4db1f1[_0x0cf4('0x17')](_0x7cc62e)[_0x0cf4('0x18')]();};}function respondWithResult(_0x2e7db9,_0x52f992){_0x52f992=_0x52f992||0xc8;return function(_0x2ccc43){if(_0x2ccc43){return _0x2e7db9[_0x0cf4('0x17')](_0x52f992)[_0x0cf4('0x19')](_0x2ccc43);}};}function respondWithFilteredResult(_0x21f6f9,_0x5c99cc){return function(_0x5e05ce){if(_0x5e05ce){var _0x30948c=typeof _0x5c99cc[_0x0cf4('0x1a')]===_0x0cf4('0x1b')&&typeof _0x5c99cc['limit']===_0x0cf4('0x1b');var _0x511b8b=_0x5e05ce[_0x0cf4('0x1c')];var _0x570693=_0x30948c?0x0:_0x5c99cc[_0x0cf4('0x1a')];var _0x3c9e7b=_0x30948c?_0x5e05ce['count']:_0x5c99cc[_0x0cf4('0x1a')]+_0x5c99cc[_0x0cf4('0x1d')];var _0x2536d2;if(_0x3c9e7b>=_0x511b8b){_0x3c9e7b=_0x511b8b;_0x2536d2=0xc8;}else{_0x2536d2=0xce;}_0x21f6f9[_0x0cf4('0x17')](_0x2536d2);return _0x21f6f9[_0x0cf4('0x1e')](_0x0cf4('0x1f'),_0x570693+'-'+_0x3c9e7b+'/'+_0x511b8b)[_0x0cf4('0x19')](_0x5e05ce);}return null;};}function patchUpdates(_0x113a5c){return function(_0xf1578c){try{jsonpatch[_0x0cf4('0x20')](_0xf1578c,_0x113a5c,!![]);}catch(_0x49d083){return BPromise[_0x0cf4('0x21')](_0x49d083);}return _0xf1578c[_0x0cf4('0x22')]();};}function saveUpdates(_0x3b84a6,_0x1065fa){return function(_0x24b4a9){if(_0x24b4a9){return _0x24b4a9['update'](_0x3b84a6)['then'](function(_0x4c8b11){return _0x4c8b11;});}return null;};}function removeEntity(_0x1969a3,_0x17d142){return function(_0x34e29e){if(_0x34e29e){return _0x34e29e['destroy']()[_0x0cf4('0x23')](function(){var _0x51717c=_0x34e29e[_0x0cf4('0x24')]({'plain':!![]});var _0x391b7e=_0x0cf4('0x25');return db[_0x0cf4('0x26')][_0x0cf4('0x27')]({'where':{'type':_0x391b7e,'resourceId':_0x51717c['id']}})['then'](function(){return _0x34e29e;});})['then'](function(){_0x1969a3[_0x0cf4('0x17')](0xcc)[_0x0cf4('0x18')]();});}};}function handleEntityNotFound(_0x4d528d,_0x418c0a){return function(_0x2ed171){if(!_0x2ed171){_0x4d528d[_0x0cf4('0x16')](0x194);}return _0x2ed171;};}function handleError(_0x138e5b,_0x4b4c9e){_0x4b4c9e=_0x4b4c9e||0x1f4;return function(_0x388d71){logger['error'](_0x388d71['stack']);if(_0x388d71[_0x0cf4('0x28')]){delete _0x388d71['name'];}_0x138e5b['status'](_0x4b4c9e)[_0x0cf4('0x29')](_0x388d71);};}exports[_0x0cf4('0x2a')]=function(_0x130fba,_0x438698){var _0x132ee0={},_0x5a24b5={},_0x30ff4d={'count':0x0,'rows':[]};var _0x1db8be=_[_0x0cf4('0x2b')](db[_0x0cf4('0x2c')]['rawAttributes'],function(_0x14188d){return{'name':_0x14188d[_0x0cf4('0x2d')],'type':_0x14188d[_0x0cf4('0x2e')][_0x0cf4('0x2f')]};});_0x5a24b5[_0x0cf4('0x30')]=_[_0x0cf4('0x2b')](_0x1db8be,_0x0cf4('0x28'));_0x5a24b5['query']=_[_0x0cf4('0x31')](_0x130fba['query']);_0x5a24b5[_0x0cf4('0x32')]=_[_0x0cf4('0x33')](_0x5a24b5[_0x0cf4('0x30')],_0x5a24b5['query']);_0x132ee0[_0x0cf4('0x34')]=_[_0x0cf4('0x33')](_0x5a24b5[_0x0cf4('0x30')],qs[_0x0cf4('0x35')](_0x130fba['query'][_0x0cf4('0x35')]));_0x132ee0['attributes']=_0x132ee0['attributes'][_0x0cf4('0x36')]?_0x132ee0[_0x0cf4('0x34')]:_0x5a24b5[_0x0cf4('0x30')];if(!_0x130fba[_0x0cf4('0x37')]['hasOwnProperty'](_0x0cf4('0x38'))){_0x132ee0[_0x0cf4('0x1d')]=qs[_0x0cf4('0x1d')](_0x130fba[_0x0cf4('0x37')][_0x0cf4('0x1d')]);_0x132ee0[_0x0cf4('0x1a')]=qs[_0x0cf4('0x1a')](_0x130fba[_0x0cf4('0x37')]['offset']);}_0x132ee0[_0x0cf4('0x39')]=qs['sort'](_0x130fba[_0x0cf4('0x37')]['sort']);_0x132ee0[_0x0cf4('0x3a')]=qs[_0x0cf4('0x32')](_[_0x0cf4('0x3b')](_0x130fba[_0x0cf4('0x37')],_0x5a24b5[_0x0cf4('0x32')]),_0x1db8be);if(_0x130fba[_0x0cf4('0x37')][_0x0cf4('0x3c')]){_0x132ee0['where']=_[_0x0cf4('0x3d')](_0x132ee0[_0x0cf4('0x3a')],{'$or':_[_0x0cf4('0x2b')](_0x1db8be,function(_0xcf10e6){if(_0xcf10e6[_0x0cf4('0x2e')]!==_0x0cf4('0x3e')){var _0x41d6bd={};_0x41d6bd[_0xcf10e6[_0x0cf4('0x28')]]={'$like':'%'+_0x130fba['query'][_0x0cf4('0x3c')]+'%'};return _0x41d6bd;}})});}_0x132ee0=_[_0x0cf4('0x3d')]({},_0x132ee0,_0x130fba['options']);var _0x15720d={'where':_0x132ee0[_0x0cf4('0x3a')]};return db[_0x0cf4('0x2c')]['count'](_0x15720d)[_0x0cf4('0x23')](function(_0x14b453){_0x30ff4d[_0x0cf4('0x1c')]=_0x14b453;if(_0x130fba[_0x0cf4('0x37')][_0x0cf4('0x3f')]){_0x132ee0[_0x0cf4('0x40')]=[{'all':!![]}];}return db[_0x0cf4('0x2c')]['findAll'](_0x132ee0);})['then'](function(_0x428206){_0x30ff4d[_0x0cf4('0x41')]=_0x428206;return _0x30ff4d;})[_0x0cf4('0x23')](respondWithFilteredResult(_0x438698,_0x132ee0))[_0x0cf4('0x42')](handleError(_0x438698,null));};exports['show']=function(_0x1022c3,_0x20050b){var _0x54cad3={'raw':![],'where':{'id':_0x1022c3[_0x0cf4('0x43')]['id']}},_0x2b0950={};_0x2b0950[_0x0cf4('0x30')]=_[_0x0cf4('0x31')](db[_0x0cf4('0x2c')][_0x0cf4('0x44')]);_0x2b0950[_0x0cf4('0x37')]=_['keys'](_0x1022c3['query']);_0x2b0950[_0x0cf4('0x32')]=_['intersection'](_0x2b0950[_0x0cf4('0x30')],_0x2b0950[_0x0cf4('0x37')]);_0x54cad3[_0x0cf4('0x34')]=_[_0x0cf4('0x33')](_0x2b0950[_0x0cf4('0x30')],qs[_0x0cf4('0x35')](_0x1022c3[_0x0cf4('0x37')][_0x0cf4('0x35')]));_0x54cad3[_0x0cf4('0x34')]=_0x54cad3[_0x0cf4('0x34')][_0x0cf4('0x36')]?_0x54cad3[_0x0cf4('0x34')]:_0x2b0950[_0x0cf4('0x30')];if(_0x1022c3[_0x0cf4('0x37')][_0x0cf4('0x3f')]){_0x54cad3[_0x0cf4('0x40')]=[{'all':!![]}];}_0x54cad3=_[_0x0cf4('0x3d')]({},_0x54cad3,_0x1022c3[_0x0cf4('0x45')]);return db[_0x0cf4('0x2c')][_0x0cf4('0x46')](_0x54cad3)[_0x0cf4('0x23')](handleEntityNotFound(_0x20050b,null))[_0x0cf4('0x23')](respondWithResult(_0x20050b,null))[_0x0cf4('0x42')](handleError(_0x20050b,null));};exports[_0x0cf4('0x47')]=function(_0x19c239,_0x532ee9){return db['AnalyticCustomReport'][_0x0cf4('0x47')](_0x19c239['body'],{})[_0x0cf4('0x23')](function(_0x151dd7){var _0x37d08b=_0x19c239[_0x0cf4('0x48')][_0x0cf4('0x24')]({'plain':!![]});if(!_0x37d08b)throw new Error(_0x0cf4('0x49'));if(_0x37d08b['role']===_0x0cf4('0x48')){var _0x57834b=_0x151dd7['get']({'plain':!![]});var _0x2ffb31=_0x0cf4('0x4a');return db[_0x0cf4('0x4b')][_0x0cf4('0x46')]({'where':{'name':_0x2ffb31,'userProfileId':_0x37d08b[_0x0cf4('0x4c')]},'raw':!![]})[_0x0cf4('0x23')](function(_0x58c8cd){if(_0x58c8cd&&_0x58c8cd['autoAssociation']===0x0){return db[_0x0cf4('0x26')][_0x0cf4('0x47')]({'name':_0x57834b[_0x0cf4('0x28')],'resourceId':_0x57834b['id'],'type':_0x0cf4('0x25'),'sectionId':_0x58c8cd['id']},{})[_0x0cf4('0x23')](function(){return _0x151dd7;});}else{return _0x151dd7;}})[_0x0cf4('0x42')](function(_0x4dc155){logger[_0x0cf4('0x4d')](_0x0cf4('0x4e'),_0x4dc155);throw _0x4dc155;});}return _0x151dd7;})['then'](respondWithResult(_0x532ee9,0xc9))[_0x0cf4('0x42')](handleError(_0x532ee9,null));};exports['update']=function(_0x2df96a,_0x30ba53){if(_0x2df96a[_0x0cf4('0x4f')]['id']){delete _0x2df96a[_0x0cf4('0x4f')]['id'];}return db[_0x0cf4('0x2c')]['find']({'where':{'id':_0x2df96a[_0x0cf4('0x43')]['id']}})[_0x0cf4('0x23')](handleEntityNotFound(_0x30ba53,null))[_0x0cf4('0x23')](saveUpdates(_0x2df96a[_0x0cf4('0x4f')],null))[_0x0cf4('0x23')](respondWithResult(_0x30ba53,null))['catch'](handleError(_0x30ba53,null));};exports[_0x0cf4('0x27')]=function(_0x51c7f3,_0x8d5a1a){return db[_0x0cf4('0x2c')][_0x0cf4('0x46')]({'where':{'id':_0x51c7f3[_0x0cf4('0x43')]['id']}})[_0x0cf4('0x23')](handleEntityNotFound(_0x8d5a1a,null))[_0x0cf4('0x23')](removeEntity(_0x8d5a1a,null))[_0x0cf4('0x42')](handleError(_0x8d5a1a,null));};exports['preview']=function(_0x8dca6d,_0x3df663){var _0x42d888=0xa;var _0x217c62=[_0x0cf4('0x50'),'left_join','right_join',_0x0cf4('0x51')];var _0xbfe6ae={'SUM':_0x0cf4('0x52'),'COUNT':_0x0cf4('0x53'),'COUNT DISTINCT':_0x0cf4('0x54'),'MAX':_0x0cf4('0x55'),'MIN':_0x0cf4('0x56'),'AVG':_0x0cf4('0x57'),'GROUP_CONCAT':_0x0cf4('0x58'),'GROUP_CONCAT ASC':_0x0cf4('0x59'),'GROUP_CONCAT DESC':_0x0cf4('0x5a')};var _0x4f76d1={'SEC_TO_TIME':_0x0cf4('0x5b'),'DATE':'DATE(%s)','HOUR':_0x0cf4('0x5c'),'ROUND':_0x0cf4('0x5d'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x5aecf9=function(_0x1ab56a){return!_[_0x0cf4('0x5e')](['IS\x20NULL','IS\x20NOT\x20NULL',_0x0cf4('0x5f'),_0x0cf4('0x60')],_0x1ab56a);};var _0x33965b=function(_0xd61d77){if(!_0xd61d77||!_0xd61d77[_0x0cf4('0x61')][_0x0cf4('0x36')]){return'';}for(var _0x27dc95='(',_0x2b1025=0x0;_0x2b1025<_0xd61d77[_0x0cf4('0x61')][_0x0cf4('0x36')];_0x2b1025+=0x1){_0x2b1025>0x0&&(_0x27dc95+='\x20'+_0xd61d77[_0x0cf4('0x62')]+'\x20');_0x27dc95+=_0xd61d77[_0x0cf4('0x61')][_0x2b1025][_0x0cf4('0x63')]?_0x33965b(_0xd61d77[_0x0cf4('0x61')][_0x2b1025][_0x0cf4('0x63')]):_0xd61d77['rules'][_0x2b1025][_0x0cf4('0x64')]+'\x20'+_0xd61d77[_0x0cf4('0x61')][_0x2b1025][_0x0cf4('0x65')]+(_0x5aecf9(_0xd61d77[_0x0cf4('0x61')][_0x2b1025][_0x0cf4('0x65')])?'\x20'+_0xd61d77['rules'][_0x2b1025][_0x0cf4('0x66')]:'');}return _0x27dc95+')';};var _0x5a24dd={'where':{'id':_0x8dca6d[_0x0cf4('0x43')]['id']}},_0x39f233,_0x294575,_0x47d7bd,_0x19a113,_0x400f24;_0x5a24dd=_['merge']({},_0x5a24dd,_0x8dca6d[_0x0cf4('0x45')]);return db[_0x0cf4('0x2c')][_0x0cf4('0x46')](_0x5a24dd)[_0x0cf4('0x23')](function(_0x5a86e6){if(_0x5a86e6){_0x39f233=_0x5a86e6;return _0x5a86e6[_0x0cf4('0x67')]();}return null;})[_0x0cf4('0x23')](function(_0x5e3ab2){if(_0x5e3ab2){if(!_0x5e3ab2['length']){throw new db[(_0x0cf4('0x68'))][(_0x0cf4('0x69'))]('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x294575=_0x5e3ab2;return db['AnalyticMetric']['findAll']({'raw':!![]});}return null;})[_0x0cf4('0x23')](function(_0xa03df8){if(_0xa03df8){_0x47d7bd=_[_0x0cf4('0x6a')](_0xa03df8,'id');var _0xadefac;var _0x46d240=squel[_0x0cf4('0x6b')]();_0x46d240[_0x0cf4('0x6c')](_0x39f233[_0x0cf4('0x6d')]);for(var _0x3ab342=0x0;_0x3ab342<_0x294575[_0x0cf4('0x36')];_0x3ab342+=0x1){_0xadefac=_0x294575[_0x3ab342][_0x0cf4('0x6e')]?_0x47d7bd[_0x294575[_0x3ab342]['MetricId']][_0x0cf4('0x6f')]:_0x294575[_0x3ab342][_0x0cf4('0x64')];_0xadefac=_0x294575[_0x3ab342]['function']?_[_0x0cf4('0x70')](_0xbfe6ae[_0x294575[_0x3ab342][_0x0cf4('0x71')]],'%s',_0xadefac):_0xadefac;_0xadefac=_0x294575[_0x3ab342][_0x0cf4('0x72')]?_[_0x0cf4('0x70')](_0x4f76d1[_0x294575[_0x3ab342][_0x0cf4('0x72')]],'%s',_0xadefac):_0xadefac;if(_0x294575[_0x3ab342][_0x0cf4('0x73')]){_0x46d240[_0x0cf4('0x63')](_0xadefac);}_0x294575[_0x3ab342]['orderBy']&&_0x46d240[_0x0cf4('0x39')](_0xadefac,_0x294575[_0x3ab342][_0x0cf4('0x74')]===_0x0cf4('0x75')?![]:!![]);_0x46d240['field'](_0xadefac,_0x294575[_0x3ab342]['alias']||_0xadefac);}if(_0x39f233[_0x0cf4('0x76')]){_0x39f233[_0x0cf4('0x76')]=JSON[_0x0cf4('0x77')](_0x39f233[_0x0cf4('0x76')]);for(var _0x337bbd=0x0;_0x337bbd<_0x39f233['joins'][_0x0cf4('0x36')];_0x337bbd+=0x1){if(_0x39f233['joins'][_0x337bbd]['type']&&_[_0x0cf4('0x5e')](_0x217c62,_0x39f233[_0x0cf4('0x76')][_0x337bbd][_0x0cf4('0x2e')])&&_0x39f233[_0x0cf4('0x76')][_0x337bbd][_0x0cf4('0x78')]&&_0x39f233[_0x0cf4('0x76')][_0x337bbd][_0x0cf4('0x79')]&&_0x39f233[_0x0cf4('0x76')][_0x337bbd][_0x0cf4('0x7a')]){_0x46d240[_0x39f233[_0x0cf4('0x76')][_0x337bbd][_0x0cf4('0x2e')]](_0x39f233['joins'][_0x337bbd][_0x0cf4('0x79')],null,util[_0x0cf4('0x72')](_0x0cf4('0x7b'),_0x39f233[_0x0cf4('0x6d')],_0x39f233[_0x0cf4('0x76')][_0x337bbd][_0x0cf4('0x78')],_0x39f233[_0x0cf4('0x76')][_0x337bbd][_0x0cf4('0x79')],_0x39f233[_0x0cf4('0x76')][_0x337bbd][_0x0cf4('0x7a')]));}}}if(_0x39f233[_0x0cf4('0x7c')]){_0x39f233[_0x0cf4('0x7c')]=JSON[_0x0cf4('0x77')](_0x39f233[_0x0cf4('0x7c')]);_0x46d240[_0x0cf4('0x3a')](_0x33965b(_0x39f233[_0x0cf4('0x7c')][_0x0cf4('0x63')]));}_0x400f24=_0x46d240['clone']();_0x46d240[_0x0cf4('0x1d')](_0x42d888);_0x46d240[_0x0cf4('0x1a')](0x0);logger[_0x0cf4('0x7d')](_0x0cf4('0x7e'),_0x46d240[_0x0cf4('0x7f')]());return dbH[_0x0cf4('0x80')][_0x0cf4('0x37')](_0x46d240[_0x0cf4('0x7f')](),{'type':dbH[_0x0cf4('0x80')][_0x0cf4('0x81')][_0x0cf4('0x82')]});}})[_0x0cf4('0x23')](respondWithResult(_0x3df663,null))[_0x0cf4('0x42')](handleError(_0x3df663,null));};function runReport(_0x4bc451,_0x5d2c0e,_0x584170){var _0x55b8f2=_0x5d2c0e[_0x0cf4('0x28')];var _0x18704f=0xa;var _0x29a7df=[_0x0cf4('0x50'),_0x0cf4('0x83'),'right_join',_0x0cf4('0x51')];var _0x44dc42={'SUM':_0x0cf4('0x52'),'COUNT':_0x0cf4('0x53'),'COUNT DISTINCT':_0x0cf4('0x54'),'MAX':_0x0cf4('0x55'),'MIN':_0x0cf4('0x56'),'AVG':_0x0cf4('0x57'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':_0x0cf4('0x59'),'GROUP_CONCAT DESC':_0x0cf4('0x5a')};var _0x1ce4db={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0x0cf4('0x84'),'HOUR':_0x0cf4('0x5c'),'ROUND':_0x0cf4('0x5d'),'UNIX_TIMESTAMP':_0x0cf4('0x85')};var _0x13d74a=function(_0x2db8ce){return!_[_0x0cf4('0x5e')]([_0x0cf4('0x86'),_0x0cf4('0x87'),_0x0cf4('0x5f'),_0x0cf4('0x60')],_0x2db8ce);};var _0x7e542f=function(_0x3dbe48){if(!_0x3dbe48||!_0x3dbe48[_0x0cf4('0x61')][_0x0cf4('0x36')]){return'';}for(var _0x364576='(',_0x20edd0=0x0;_0x20edd0<_0x3dbe48[_0x0cf4('0x61')]['length'];_0x20edd0+=0x1){_0x20edd0>0x0&&(_0x364576+='\x20'+_0x3dbe48[_0x0cf4('0x62')]+'\x20');_0x364576+=_0x3dbe48['rules'][_0x20edd0][_0x0cf4('0x63')]?_0x7e542f(_0x3dbe48[_0x0cf4('0x61')][_0x20edd0][_0x0cf4('0x63')]):_0x3dbe48[_0x0cf4('0x61')][_0x20edd0][_0x0cf4('0x64')]+'\x20'+_0x3dbe48['rules'][_0x20edd0][_0x0cf4('0x65')]+(_0x13d74a(_0x3dbe48['rules'][_0x20edd0][_0x0cf4('0x65')])?'\x20'+_0x3dbe48[_0x0cf4('0x61')][_0x20edd0][_0x0cf4('0x66')]:'');}return _0x364576+')';};var _0x4575a9={'where':{'id':_0x4bc451['id']}},_0x33ac69,_0xb4e5c1,_0x4a1b3b,_0x463d4a,_0x29e32c;_0x4575a9=_[_0x0cf4('0x3d')]({},_0x4575a9,_0x584170);return db[_0x0cf4('0x2c')]['find'](_0x4575a9)['then'](function(_0x1d5d7f){if(_0x1d5d7f){_0x33ac69=_0x1d5d7f;return _0x1d5d7f[_0x0cf4('0x67')]();}return null;})['then'](function(_0x41c780){if(_0x41c780){if(!_0x41c780[_0x0cf4('0x36')]){throw new db[(_0x0cf4('0x68'))][(_0x0cf4('0x69'))](_0x0cf4('0x88'),0x193);}_0xb4e5c1=_0x41c780;return db[_0x0cf4('0x89')][_0x0cf4('0x8a')]({'raw':!![]});}return null;})[_0x0cf4('0x23')](function(_0x56d05a){if(_0x56d05a){_0x4a1b3b=_['keyBy'](_0x56d05a,'id');var _0x2250b0;var _0x3e2c46=squel['select']();_0x3e2c46[_0x0cf4('0x6c')](_0x33ac69['table']);for(var _0x1ffa46=0x0;_0x1ffa46<_0xb4e5c1[_0x0cf4('0x36')];_0x1ffa46+=0x1){_0x2250b0=_0xb4e5c1[_0x1ffa46]['MetricId']?_0x4a1b3b[_0xb4e5c1[_0x1ffa46][_0x0cf4('0x6e')]]['metric']:_0xb4e5c1[_0x1ffa46]['field'];_0x2250b0=_0xb4e5c1[_0x1ffa46][_0x0cf4('0x71')]?_[_0x0cf4('0x70')](_0x44dc42[_0xb4e5c1[_0x1ffa46][_0x0cf4('0x71')]],'%s',_0x2250b0):_0x2250b0;_0x2250b0=_0xb4e5c1[_0x1ffa46][_0x0cf4('0x72')]?_[_0x0cf4('0x70')](_0x1ce4db[_0xb4e5c1[_0x1ffa46][_0x0cf4('0x72')]],'%s',_0x2250b0):_0x2250b0;if(_0xb4e5c1[_0x1ffa46]['groupBy']){_0x3e2c46[_0x0cf4('0x63')](_0x2250b0);}_0xb4e5c1[_0x1ffa46][_0x0cf4('0x74')]&&_0x3e2c46[_0x0cf4('0x39')](_0x2250b0,_0xb4e5c1[_0x1ffa46]['orderBy']===_0x0cf4('0x75')?![]:!![]);_0x3e2c46[_0x0cf4('0x64')](_0x2250b0,_0xb4e5c1[_0x1ffa46][_0x0cf4('0x8b')]||_0x2250b0);}if(_0x33ac69[_0x0cf4('0x76')]){_0x33ac69[_0x0cf4('0x76')]=JSON[_0x0cf4('0x77')](_0x33ac69[_0x0cf4('0x76')]);for(var _0x3c0bef=0x0;_0x3c0bef<_0x33ac69[_0x0cf4('0x76')][_0x0cf4('0x36')];_0x3c0bef+=0x1){if(_0x33ac69['joins'][_0x3c0bef][_0x0cf4('0x2e')]&&_['includes'](_0x29a7df,_0x33ac69[_0x0cf4('0x76')][_0x3c0bef][_0x0cf4('0x2e')])&&_0x33ac69[_0x0cf4('0x76')][_0x3c0bef][_0x0cf4('0x78')]&&_0x33ac69[_0x0cf4('0x76')][_0x3c0bef][_0x0cf4('0x79')]&&_0x33ac69[_0x0cf4('0x76')][_0x3c0bef][_0x0cf4('0x7a')]){_0x3e2c46[_0x33ac69[_0x0cf4('0x76')][_0x3c0bef]['type']](_0x33ac69[_0x0cf4('0x76')][_0x3c0bef][_0x0cf4('0x79')],null,util[_0x0cf4('0x72')]('%s.%s\x20=\x20%s.%s',_0x33ac69['table'],_0x33ac69['joins'][_0x3c0bef][_0x0cf4('0x78')],_0x33ac69['joins'][_0x3c0bef][_0x0cf4('0x79')],_0x33ac69[_0x0cf4('0x76')][_0x3c0bef]['foreignKey']));}}}if(_0x33ac69[_0x0cf4('0x7c')]){_0x33ac69['conditions']=JSON['parse'](_0x33ac69[_0x0cf4('0x7c')]);_0x3e2c46[_0x0cf4('0x3a')](_0x7e542f(_0x33ac69[_0x0cf4('0x7c')][_0x0cf4('0x63')]));}_0x29e32c=_0x3e2c46[_0x0cf4('0x8c')]();_0x3e2c46[_0x0cf4('0x1d')](_0x18704f);_0x3e2c46['offset'](0x0);return;}})[_0x0cf4('0x23')](function(){if(_0x5d2c0e[_0x0cf4('0x8d')]===_0x0cf4('0x8e')){return null;}var _0x467c5a=_[_0x0cf4('0x3d')](_0x5d2c0e,{'name':_0x5d2c0e[_0x0cf4('0x8f')]||_0x5d2c0e[_0x0cf4('0x28')]||_0x33ac69[_0x0cf4('0x28')],'basename':_0x55b8f2,'savename':util[_0x0cf4('0x72')](_0x0cf4('0x90'),_0x5d2c0e[_0x0cf4('0x28')]||_0x33ac69[_0x0cf4('0x28')],require(_0x0cf4('0x91'))[_0x0cf4('0x92')](0x4),_0x5d2c0e[_0x0cf4('0x8d')]||_0x0cf4('0x93')),'reportId':_0x33ac69['id'],'reportType':'custom'});return db[_0x0cf4('0x94')]['create'](_0x467c5a,{'raw':!![]});})[_0x0cf4('0x23')](function(_0x2f850e){if(_0x33ac69['table']===_0x0cf4('0x95')){_0x29e32c[_0x0cf4('0x3a')](_0x33ac69[_0x0cf4('0x6d')]+_0x0cf4('0x96'),_0x5d2c0e[_0x0cf4('0x97')],_0x5d2c0e[_0x0cf4('0x98')]);}else{_0x29e32c[_0x0cf4('0x3a')](_0x33ac69[_0x0cf4('0x6d')]+_0x0cf4('0x99'),_0x5d2c0e['startDate'],_0x5d2c0e[_0x0cf4('0x98')]);}if(_0x2f850e){logger[_0x0cf4('0x9a')](_0x0cf4('0x9b'),_0x29e32c['toString']());require(_0x0cf4('0x9c'))[_0x0cf4('0x9d')](path[_0x0cf4('0x50')](__dirname,_0x0cf4('0x9e'),_0x2f850e['output']),[_0x2f850e['id'],_0x29e32c[_0x0cf4('0x7f')](),path[_0x0cf4('0x50')](__dirname,_0x0cf4('0x9f'),_0x2f850e[_0x0cf4('0xa0')]),_0x55b8f2]);return _0x2f850e;}else{var _0x5bf96a=squel['select']();_0x5bf96a[_0x0cf4('0x6c')]('('+_0x29e32c['toString']()+')',_0x0cf4('0xa1'));_0x5bf96a[_0x0cf4('0x64')](_0x0cf4('0xa2'),'count');_0x29e32c[_0x0cf4('0x1d')](_0x5d2c0e['limit']||_0x18704f);_0x29e32c[_0x0cf4('0x1a')](_0x5d2c0e[_0x0cf4('0x1a')]||0x0);return dbH['sequelize'][_0x0cf4('0x37')](_0x5bf96a['toString'](),{'type':dbH[_0x0cf4('0x80')]['QueryTypes'][_0x0cf4('0x82')]})[_0x0cf4('0x23')](function(_0x3691dd){if(!_0x3691dd[_0x0cf4('0x36')]){_0x463d4a=0x0;}else{_0x463d4a=_0x3691dd[0x0][_0x0cf4('0x1c')]||0x0;}return dbH[_0x0cf4('0x80')][_0x0cf4('0x37')](_0x29e32c[_0x0cf4('0x7f')](),{'type':dbH[_0x0cf4('0x80')]['QueryTypes']['SELECT']});})['then'](function(_0x467fbd){return{'rows':_0x467fbd||[],'count':_0x463d4a};});}});}exports[_0x0cf4('0xa3')]=function(_0x9b9114,_0x3d71c9){return runReport(_0x9b9114[_0x0cf4('0x43')],_0x9b9114[_0x0cf4('0x37')],_0x9b9114['options'])[_0x0cf4('0x23')](respondWithResult(_0x3d71c9,null))[_0x0cf4('0x42')](handleError(_0x3d71c9,null));};exports[_0x0cf4('0xa4')]=runReport;exports[_0x0cf4('0x37')]=function(_0x7f3af,_0x19d9ab){var _0x4f4d22=0xa;var _0x2c2380=['join',_0x0cf4('0x83'),_0x0cf4('0xa5'),_0x0cf4('0x51')];var _0x1ce21a={'SUM':'SUM(%s)','COUNT':'COUNT(%s)','COUNT DISTINCT':_0x0cf4('0x54'),'MAX':'MAX(%s)','MIN':_0x0cf4('0x56'),'AVG':_0x0cf4('0x57'),'GROUP_CONCAT':_0x0cf4('0x58'),'GROUP_CONCAT ASC':_0x0cf4('0x59'),'GROUP_CONCAT DESC':_0x0cf4('0x5a')};var _0x10ebcb={'SEC_TO_TIME':_0x0cf4('0x5b'),'DATE':'DATE(%s)','HOUR':_0x0cf4('0x5c'),'ROUND':_0x0cf4('0x5d'),'UNIX_TIMESTAMP':_0x0cf4('0x85')};var _0x5891cc=function(_0x1cb3a7){return!_['includes']([_0x0cf4('0x86'),_0x0cf4('0x87'),_0x0cf4('0x5f'),_0x0cf4('0x60')],_0x1cb3a7);};var _0x2139cc=function(_0x424c2c){if(!_0x424c2c||!_0x424c2c[_0x0cf4('0x61')][_0x0cf4('0x36')]){return'';}for(var _0x10b0e5='(',_0x2e34fe=0x0;_0x2e34fe<_0x424c2c[_0x0cf4('0x61')][_0x0cf4('0x36')];_0x2e34fe+=0x1){_0x2e34fe>0x0&&(_0x10b0e5+='\x20'+_0x424c2c[_0x0cf4('0x62')]+'\x20');_0x10b0e5+=_0x424c2c[_0x0cf4('0x61')][_0x2e34fe]['group']?_0x2139cc(_0x424c2c[_0x0cf4('0x61')][_0x2e34fe][_0x0cf4('0x63')]):_0x424c2c[_0x0cf4('0x61')][_0x2e34fe][_0x0cf4('0x64')]+'\x20'+_0x424c2c[_0x0cf4('0x61')][_0x2e34fe]['condition']+(_0x5891cc(_0x424c2c['rules'][_0x2e34fe][_0x0cf4('0x65')])?'\x20'+_0x424c2c[_0x0cf4('0x61')][_0x2e34fe][_0x0cf4('0x66')]:'');}return _0x10b0e5+')';};var _0x3cbb72={'where':{'id':_0x7f3af[_0x0cf4('0x43')]['id']}},_0x1f13ac,_0x4cf048,_0x16e288,_0x4250b1,_0x63edd5;_0x3cbb72=_['merge']({},_0x3cbb72,_0x7f3af[_0x0cf4('0x45')]);return db[_0x0cf4('0x2c')][_0x0cf4('0x46')](_0x3cbb72)[_0x0cf4('0x23')](function(_0x3d0175){if(_0x3d0175){_0x1f13ac=_0x3d0175;return _0x3d0175[_0x0cf4('0x67')]();}return null;})[_0x0cf4('0x23')](function(_0x1a6297){if(_0x1a6297){if(!_0x1a6297[_0x0cf4('0x36')]){throw new db[(_0x0cf4('0x68'))][(_0x0cf4('0x69'))]('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x4cf048=_0x1a6297;return db[_0x0cf4('0x89')][_0x0cf4('0x8a')]({'raw':!![]});}return null;})['then'](function(_0x475f14){if(_0x475f14){_0x16e288=_[_0x0cf4('0x6a')](_0x475f14,'id');var _0x334bc9;var _0x45c850=squel['select']();_0x45c850['from'](_0x1f13ac['table']);for(var _0x3e029c=0x0;_0x3e029c<_0x4cf048['length'];_0x3e029c+=0x1){_0x334bc9=_0x4cf048[_0x3e029c][_0x0cf4('0x6e')]?_0x16e288[_0x4cf048[_0x3e029c]['MetricId']][_0x0cf4('0x6f')]:_0x4cf048[_0x3e029c][_0x0cf4('0x64')];_0x334bc9=_0x4cf048[_0x3e029c]['function']?_['replace'](_0x1ce21a[_0x4cf048[_0x3e029c][_0x0cf4('0x71')]],'%s',_0x334bc9):_0x334bc9;_0x334bc9=_0x4cf048[_0x3e029c][_0x0cf4('0x72')]?_['replace'](_0x10ebcb[_0x4cf048[_0x3e029c][_0x0cf4('0x72')]],'%s',_0x334bc9):_0x334bc9;if(_0x4cf048[_0x3e029c]['groupBy']){_0x45c850[_0x0cf4('0x63')](_0x334bc9);}_0x4cf048[_0x3e029c]['orderBy']&&_0x45c850[_0x0cf4('0x39')](_0x334bc9,_0x4cf048[_0x3e029c]['orderBy']==='DESC'?![]:!![]);_0x45c850[_0x0cf4('0x64')](_0x334bc9,_0x4cf048[_0x3e029c]['alias']||_0x334bc9);}if(_0x1f13ac[_0x0cf4('0x76')]){_0x1f13ac[_0x0cf4('0x76')]=JSON[_0x0cf4('0x77')](_0x1f13ac[_0x0cf4('0x76')]);for(var _0x539a0d=0x0;_0x539a0d<_0x1f13ac[_0x0cf4('0x76')][_0x0cf4('0x36')];_0x539a0d+=0x1){if(_0x1f13ac[_0x0cf4('0x76')][_0x539a0d][_0x0cf4('0x2e')]&&_['includes'](_0x2c2380,_0x1f13ac[_0x0cf4('0x76')][_0x539a0d]['type'])&&_0x1f13ac[_0x0cf4('0x76')][_0x539a0d]['parentKey']&&_0x1f13ac[_0x0cf4('0x76')][_0x539a0d]['foreignTable']&&_0x1f13ac[_0x0cf4('0x76')][_0x539a0d][_0x0cf4('0x7a')]){_0x45c850[_0x1f13ac[_0x0cf4('0x76')][_0x539a0d][_0x0cf4('0x2e')]](_0x1f13ac[_0x0cf4('0x76')][_0x539a0d]['foreignTable'],null,util[_0x0cf4('0x72')](_0x0cf4('0x7b'),_0x1f13ac[_0x0cf4('0x6d')],_0x1f13ac['joins'][_0x539a0d][_0x0cf4('0x78')],_0x1f13ac[_0x0cf4('0x76')][_0x539a0d][_0x0cf4('0x79')],_0x1f13ac['joins'][_0x539a0d]['foreignKey']));}}}if(_0x1f13ac['conditions']){_0x1f13ac[_0x0cf4('0x7c')]=JSON[_0x0cf4('0x77')](_0x1f13ac['conditions']);_0x45c850[_0x0cf4('0x3a')](_0x2139cc(_0x1f13ac[_0x0cf4('0x7c')][_0x0cf4('0x63')]));}_0x63edd5=_0x45c850[_0x0cf4('0x8c')]();_0x45c850[_0x0cf4('0x1d')](_0x4f4d22);_0x45c850[_0x0cf4('0x1a')](0x0);logger[_0x0cf4('0x7d')](_0x0cf4('0x7e'),_0x45c850[_0x0cf4('0x7f')]());return dbH['sequelize'][_0x0cf4('0x37')](_0x45c850[_0x0cf4('0x7f')](),{'type':dbH[_0x0cf4('0x80')]['QueryTypes'][_0x0cf4('0x82')]});}})[_0x0cf4('0x23')](function(){return{'sql':_0x63edd5[_0x0cf4('0x7f')]()};})[_0x0cf4('0x23')](respondWithResult(_0x19d9ab,null))['catch'](handleError(_0x19d9ab,null));};
\ No newline at end of file
+var _0x9e9c=['run','DATE(%s)','eml-format','fast-json-patch','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','get','CustomReports','destroy','sendStatus','error','stack','name','index','map','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','offset','order','sort','where','filters','filter','merge','VIRTUAL','include','AnalyticCustomReport','findAll','rows','catch','show','params','length','includeAll','options','find','create','body','user','role','Reports','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','preview','left_join','right_join','cross_join','SUM(%s)','COUNT(%s)','COUNT(DISTINCT\x20%s)','MIN(%s)','AVG(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','SEC_TO_TIME(%s)','HOUR(%s)','ROUND(%s)','UNIX_TIMESTAMP(%s)','includes','IS\x20EMPTY','IS\x20NOT\x20EMPTY','rules','operator','group','field','condition','value','getFields','ValidationErrorItem','AnalyticMetric','keyBy','select','from','table','MetricId','replace','format','groupBy','orderBy','DESC','joins','parse','parentKey','foreignTable','foreignKey','%s.%s\x20=\x20%s.%s','conditions','debug','Limited\x20Query:','toString','sequelize','QueryTypes','SELECT','join','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','IS\x20NULL','Please\x20insert\x20at\x20least\x20one\x20field','metric','function','alias','output','web','fullPath','randomstring','csv','custom','AnalyticExtractedReport','cdr','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','endDate','Run\x20Query:','child_process','fork','../../components/export/','../../files/reports','savename','countTable'];(function(_0x52d97f,_0x1a4a09){var _0x1834d6=function(_0x44e833){while(--_0x44e833){_0x52d97f['push'](_0x52d97f['shift']());}};_0x1834d6(++_0x1a4a09);}(_0x9e9c,0xa3));var _0xc9e9=function(_0x49052b,_0x3ba709){_0x49052b=_0x49052b-0x0;var _0x48c045=_0x9e9c[_0x49052b];return _0x48c045;};'use strict';var emlformat=require(_0xc9e9('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xc9e9('0x1'));var rp=require('request-promise');var moment=require(_0xc9e9('0x2'));var BPromise=require('bluebird');var Mustache=require(_0xc9e9('0x3'));var util=require(_0xc9e9('0x4'));var path=require(_0xc9e9('0x5'));var sox=require(_0xc9e9('0x6'));var csv=require(_0xc9e9('0x7'));var ejs=require(_0xc9e9('0x8'));var fs=require('fs');var fs_extra=require(_0xc9e9('0x9'));var _=require(_0xc9e9('0xa'));var squel=require(_0xc9e9('0xb'));var crypto=require(_0xc9e9('0xc'));var jsforce=require(_0xc9e9('0xd'));var deskjs=require(_0xc9e9('0xe'));var toCsv=require('to-csv');var querystring=require(_0xc9e9('0xf'));var Papa=require(_0xc9e9('0x10'));var Redis=require(_0xc9e9('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xc9e9('0x12'));var as=require(_0xc9e9('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xc9e9('0x14'))(_0xc9e9('0x15'));var utils=require(_0xc9e9('0x16'));var config=require(_0xc9e9('0x17'));var licenseUtil=require(_0xc9e9('0x18'));var db=require(_0xc9e9('0x19'))['db'];var dbH=require(_0xc9e9('0x19'))['dbH'];function respondWithStatusCode(_0x360eed,_0x3218eb){_0x3218eb=_0x3218eb||0xcc;return function(_0x14af73){if(_0x14af73){return _0x360eed['sendStatus'](_0x3218eb);}return _0x360eed[_0xc9e9('0x1a')](_0x3218eb)['end']();};}function respondWithResult(_0x34fc21,_0x2d53c5){_0x2d53c5=_0x2d53c5||0xc8;return function(_0x2741c6){if(_0x2741c6){return _0x34fc21['status'](_0x2d53c5)[_0xc9e9('0x1b')](_0x2741c6);}};}function respondWithFilteredResult(_0x2d7176,_0x4ed39a){return function(_0x4d3ea8){if(_0x4d3ea8){var _0x2c18bc=typeof _0x4ed39a['offset']==='undefined'&&typeof _0x4ed39a[_0xc9e9('0x1c')]===_0xc9e9('0x1d');var _0x8661ad=_0x4d3ea8['count'];var _0x509eb8=_0x2c18bc?0x0:_0x4ed39a['offset'];var _0x8f9cfd=_0x2c18bc?_0x4d3ea8[_0xc9e9('0x1e')]:_0x4ed39a['offset']+_0x4ed39a['limit'];var _0x148700;if(_0x8f9cfd>=_0x8661ad){_0x8f9cfd=_0x8661ad;_0x148700=0xc8;}else{_0x148700=0xce;}_0x2d7176[_0xc9e9('0x1a')](_0x148700);return _0x2d7176[_0xc9e9('0x1f')](_0xc9e9('0x20'),_0x509eb8+'-'+_0x8f9cfd+'/'+_0x8661ad)[_0xc9e9('0x1b')](_0x4d3ea8);}return null;};}function patchUpdates(_0x99e25e){return function(_0x459ed8){try{jsonpatch[_0xc9e9('0x21')](_0x459ed8,_0x99e25e,!![]);}catch(_0x54bf6a){return BPromise[_0xc9e9('0x22')](_0x54bf6a);}return _0x459ed8[_0xc9e9('0x23')]();};}function saveUpdates(_0x249679,_0x50176f){return function(_0x269935){if(_0x269935){return _0x269935[_0xc9e9('0x24')](_0x249679)[_0xc9e9('0x25')](function(_0x2be5b9){return _0x2be5b9;});}return null;};}function removeEntity(_0x41b519,_0x3b897c){return function(_0xee7bf){if(_0xee7bf){return _0xee7bf['destroy']()[_0xc9e9('0x25')](function(){var _0x162da2=_0xee7bf[_0xc9e9('0x26')]({'plain':!![]});var _0x5b9a21=_0xc9e9('0x27');return db['UserProfileResource'][_0xc9e9('0x28')]({'where':{'type':_0x5b9a21,'resourceId':_0x162da2['id']}})[_0xc9e9('0x25')](function(){return _0xee7bf;});})['then'](function(){_0x41b519['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x50a59b,_0x3c068d){return function(_0x21edd4){if(!_0x21edd4){_0x50a59b[_0xc9e9('0x29')](0x194);}return _0x21edd4;};}function handleError(_0x84bc20,_0x336d34){_0x336d34=_0x336d34||0x1f4;return function(_0x31f3e5){logger[_0xc9e9('0x2a')](_0x31f3e5[_0xc9e9('0x2b')]);if(_0x31f3e5[_0xc9e9('0x2c')]){delete _0x31f3e5[_0xc9e9('0x2c')];}_0x84bc20[_0xc9e9('0x1a')](_0x336d34)['send'](_0x31f3e5);};}exports[_0xc9e9('0x2d')]=function(_0x36b647,_0x3546ab){var _0x1e1ced={},_0x329e88={},_0x9bf9d2={'count':0x0,'rows':[]};var _0x5c2cd4=_[_0xc9e9('0x2e')](db['AnalyticCustomReport'][_0xc9e9('0x2f')],function(_0x5335c0){return{'name':_0x5335c0[_0xc9e9('0x30')],'type':_0x5335c0[_0xc9e9('0x31')][_0xc9e9('0x32')]};});_0x329e88[_0xc9e9('0x33')]=_[_0xc9e9('0x2e')](_0x5c2cd4,_0xc9e9('0x2c'));_0x329e88[_0xc9e9('0x34')]=_[_0xc9e9('0x35')](_0x36b647[_0xc9e9('0x34')]);_0x329e88['filters']=_[_0xc9e9('0x36')](_0x329e88[_0xc9e9('0x33')],_0x329e88[_0xc9e9('0x34')]);_0x1e1ced[_0xc9e9('0x37')]=_[_0xc9e9('0x36')](_0x329e88[_0xc9e9('0x33')],qs['fields'](_0x36b647[_0xc9e9('0x34')][_0xc9e9('0x38')]));_0x1e1ced[_0xc9e9('0x37')]=_0x1e1ced[_0xc9e9('0x37')]['length']?_0x1e1ced[_0xc9e9('0x37')]:_0x329e88['model'];if(!_0x36b647['query'][_0xc9e9('0x39')](_0xc9e9('0x3a'))){_0x1e1ced[_0xc9e9('0x1c')]=qs[_0xc9e9('0x1c')](_0x36b647[_0xc9e9('0x34')][_0xc9e9('0x1c')]);_0x1e1ced['offset']=qs[_0xc9e9('0x3b')](_0x36b647[_0xc9e9('0x34')]['offset']);}_0x1e1ced[_0xc9e9('0x3c')]=qs[_0xc9e9('0x3d')](_0x36b647[_0xc9e9('0x34')][_0xc9e9('0x3d')]);_0x1e1ced[_0xc9e9('0x3e')]=qs['filters'](_['pick'](_0x36b647[_0xc9e9('0x34')],_0x329e88[_0xc9e9('0x3f')]),_0x5c2cd4);if(_0x36b647[_0xc9e9('0x34')][_0xc9e9('0x40')]){_0x1e1ced['where']=_[_0xc9e9('0x41')](_0x1e1ced[_0xc9e9('0x3e')],{'$or':_[_0xc9e9('0x2e')](_0x5c2cd4,function(_0x13dc4e){if(_0x13dc4e['type']!==_0xc9e9('0x42')){var _0x4721b2={};_0x4721b2[_0x13dc4e[_0xc9e9('0x2c')]]={'$like':'%'+_0x36b647[_0xc9e9('0x34')]['filter']+'%'};return _0x4721b2;}})});}_0x1e1ced=_['merge']({},_0x1e1ced,_0x36b647['options']);var _0x1d1166={'where':_0x1e1ced['where']};return db['AnalyticCustomReport'][_0xc9e9('0x1e')](_0x1d1166)[_0xc9e9('0x25')](function(_0x276e42){_0x9bf9d2[_0xc9e9('0x1e')]=_0x276e42;if(_0x36b647[_0xc9e9('0x34')]['includeAll']){_0x1e1ced[_0xc9e9('0x43')]=[{'all':!![]}];}return db[_0xc9e9('0x44')][_0xc9e9('0x45')](_0x1e1ced);})[_0xc9e9('0x25')](function(_0x351312){_0x9bf9d2[_0xc9e9('0x46')]=_0x351312;return _0x9bf9d2;})['then'](respondWithFilteredResult(_0x3546ab,_0x1e1ced))[_0xc9e9('0x47')](handleError(_0x3546ab,null));};exports[_0xc9e9('0x48')]=function(_0x529b02,_0x40ef7c){var _0x2be492={'raw':![],'where':{'id':_0x529b02[_0xc9e9('0x49')]['id']}},_0x5822dd={};_0x5822dd['model']=_[_0xc9e9('0x35')](db[_0xc9e9('0x44')][_0xc9e9('0x2f')]);_0x5822dd[_0xc9e9('0x34')]=_[_0xc9e9('0x35')](_0x529b02[_0xc9e9('0x34')]);_0x5822dd['filters']=_[_0xc9e9('0x36')](_0x5822dd[_0xc9e9('0x33')],_0x5822dd[_0xc9e9('0x34')]);_0x2be492[_0xc9e9('0x37')]=_[_0xc9e9('0x36')](_0x5822dd[_0xc9e9('0x33')],qs[_0xc9e9('0x38')](_0x529b02[_0xc9e9('0x34')][_0xc9e9('0x38')]));_0x2be492['attributes']=_0x2be492[_0xc9e9('0x37')][_0xc9e9('0x4a')]?_0x2be492[_0xc9e9('0x37')]:_0x5822dd[_0xc9e9('0x33')];if(_0x529b02['query'][_0xc9e9('0x4b')]){_0x2be492[_0xc9e9('0x43')]=[{'all':!![]}];}_0x2be492=_[_0xc9e9('0x41')]({},_0x2be492,_0x529b02[_0xc9e9('0x4c')]);return db[_0xc9e9('0x44')][_0xc9e9('0x4d')](_0x2be492)[_0xc9e9('0x25')](handleEntityNotFound(_0x40ef7c,null))[_0xc9e9('0x25')](respondWithResult(_0x40ef7c,null))[_0xc9e9('0x47')](handleError(_0x40ef7c,null));};exports[_0xc9e9('0x4e')]=function(_0x50a2e0,_0x19fdcf){return db[_0xc9e9('0x44')][_0xc9e9('0x4e')](_0x50a2e0[_0xc9e9('0x4f')],{})[_0xc9e9('0x25')](function(_0x57db8c){var _0x3dd885=_0x50a2e0[_0xc9e9('0x50')][_0xc9e9('0x26')]({'plain':!![]});if(!_0x3dd885)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3dd885[_0xc9e9('0x51')]===_0xc9e9('0x50')){var _0x2e7739=_0x57db8c[_0xc9e9('0x26')]({'plain':!![]});var _0x5360b5=_0xc9e9('0x52');return db['UserProfileSection']['find']({'where':{'name':_0x5360b5,'userProfileId':_0x3dd885['userProfileId']},'raw':!![]})[_0xc9e9('0x25')](function(_0xa09039){if(_0xa09039&&_0xa09039['autoAssociation']===0x0){return db['UserProfileResource'][_0xc9e9('0x4e')]({'name':_0x2e7739['name'],'resourceId':_0x2e7739['id'],'type':_0xc9e9('0x27'),'sectionId':_0xa09039['id']},{})['then'](function(){return _0x57db8c;});}else{return _0x57db8c;}})[_0xc9e9('0x47')](function(_0x2dcdac){logger['error'](_0xc9e9('0x53'),_0x2dcdac);throw _0x2dcdac;});}return _0x57db8c;})[_0xc9e9('0x25')](respondWithResult(_0x19fdcf,0xc9))[_0xc9e9('0x47')](handleError(_0x19fdcf,null));};exports['update']=function(_0xa32ef0,_0x43af3c){if(_0xa32ef0[_0xc9e9('0x4f')]['id']){delete _0xa32ef0[_0xc9e9('0x4f')]['id'];}return db['AnalyticCustomReport'][_0xc9e9('0x4d')]({'where':{'id':_0xa32ef0[_0xc9e9('0x49')]['id']}})[_0xc9e9('0x25')](handleEntityNotFound(_0x43af3c,null))[_0xc9e9('0x25')](saveUpdates(_0xa32ef0[_0xc9e9('0x4f')],null))[_0xc9e9('0x25')](respondWithResult(_0x43af3c,null))[_0xc9e9('0x47')](handleError(_0x43af3c,null));};exports[_0xc9e9('0x28')]=function(_0x1bbec1,_0x47a28c){return db['AnalyticCustomReport']['find']({'where':{'id':_0x1bbec1['params']['id']}})[_0xc9e9('0x25')](handleEntityNotFound(_0x47a28c,null))[_0xc9e9('0x25')](removeEntity(_0x47a28c,null))[_0xc9e9('0x47')](handleError(_0x47a28c,null));};exports[_0xc9e9('0x54')]=function(_0x1998bf,_0x3a7ffe){var _0x273c2a=0xa;var _0x3590f5=['join',_0xc9e9('0x55'),_0xc9e9('0x56'),_0xc9e9('0x57')];var _0x1a3fa1={'SUM':_0xc9e9('0x58'),'COUNT':_0xc9e9('0x59'),'COUNT DISTINCT':_0xc9e9('0x5a'),'MAX':'MAX(%s)','MIN':_0xc9e9('0x5b'),'AVG':_0xc9e9('0x5c'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':_0xc9e9('0x5d'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x421d83={'SEC_TO_TIME':_0xc9e9('0x5e'),'DATE':'DATE(%s)','HOUR':_0xc9e9('0x5f'),'ROUND':_0xc9e9('0x60'),'UNIX_TIMESTAMP':_0xc9e9('0x61')};var _0x2c94a1=function(_0x3779ed){return!_[_0xc9e9('0x62')](['IS\x20NULL','IS\x20NOT\x20NULL',_0xc9e9('0x63'),_0xc9e9('0x64')],_0x3779ed);};var _0x3350dc=function(_0xe9cdef){if(!_0xe9cdef||!_0xe9cdef['rules'][_0xc9e9('0x4a')]){return'';}for(var _0x3414b8='(',_0x1101bc=0x0;_0x1101bc<_0xe9cdef[_0xc9e9('0x65')][_0xc9e9('0x4a')];_0x1101bc+=0x1){_0x1101bc>0x0&&(_0x3414b8+='\x20'+_0xe9cdef[_0xc9e9('0x66')]+'\x20');_0x3414b8+=_0xe9cdef[_0xc9e9('0x65')][_0x1101bc][_0xc9e9('0x67')]?_0x3350dc(_0xe9cdef[_0xc9e9('0x65')][_0x1101bc][_0xc9e9('0x67')]):_0xe9cdef['rules'][_0x1101bc][_0xc9e9('0x68')]+'\x20'+_0xe9cdef[_0xc9e9('0x65')][_0x1101bc][_0xc9e9('0x69')]+(_0x2c94a1(_0xe9cdef[_0xc9e9('0x65')][_0x1101bc][_0xc9e9('0x69')])?'\x20'+_0xe9cdef['rules'][_0x1101bc][_0xc9e9('0x6a')]:'');}return _0x3414b8+')';};var _0x99348c={'where':{'id':_0x1998bf[_0xc9e9('0x49')]['id']}},_0x12dac1,_0x109782,_0x24cc59,_0x5d4318,_0x8de212;_0x99348c=_[_0xc9e9('0x41')]({},_0x99348c,_0x1998bf['options']);return db[_0xc9e9('0x44')][_0xc9e9('0x4d')](_0x99348c)[_0xc9e9('0x25')](function(_0x39c72e){if(_0x39c72e){_0x12dac1=_0x39c72e;return _0x39c72e[_0xc9e9('0x6b')]();}return null;})[_0xc9e9('0x25')](function(_0x5ae7b3){if(_0x5ae7b3){if(!_0x5ae7b3[_0xc9e9('0x4a')]){throw new db['Sequelize'][(_0xc9e9('0x6c'))]('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x109782=_0x5ae7b3;return db[_0xc9e9('0x6d')][_0xc9e9('0x45')]({'raw':!![]});}return null;})['then'](function(_0x312943){if(_0x312943){_0x24cc59=_[_0xc9e9('0x6e')](_0x312943,'id');var _0x47ac75;var _0x5a9840=squel[_0xc9e9('0x6f')]();_0x5a9840[_0xc9e9('0x70')](_0x12dac1[_0xc9e9('0x71')]);for(var _0x3be42c=0x0;_0x3be42c<_0x109782[_0xc9e9('0x4a')];_0x3be42c+=0x1){_0x47ac75=_0x109782[_0x3be42c][_0xc9e9('0x72')]?_0x24cc59[_0x109782[_0x3be42c][_0xc9e9('0x72')]]['metric']:_0x109782[_0x3be42c][_0xc9e9('0x68')];_0x47ac75=_0x109782[_0x3be42c]['function']?_[_0xc9e9('0x73')](_0x1a3fa1[_0x109782[_0x3be42c]['function']],'%s',_0x47ac75):_0x47ac75;_0x47ac75=_0x109782[_0x3be42c]['format']?_[_0xc9e9('0x73')](_0x421d83[_0x109782[_0x3be42c][_0xc9e9('0x74')]],'%s',_0x47ac75):_0x47ac75;if(_0x109782[_0x3be42c][_0xc9e9('0x75')]){_0x5a9840[_0xc9e9('0x67')](_0x47ac75);}_0x109782[_0x3be42c][_0xc9e9('0x76')]&&_0x5a9840[_0xc9e9('0x3c')](_0x47ac75,_0x109782[_0x3be42c]['orderBy']===_0xc9e9('0x77')?![]:!![]);_0x5a9840[_0xc9e9('0x68')](_0x47ac75,_0x109782[_0x3be42c]['alias']||_0x47ac75);}if(_0x12dac1[_0xc9e9('0x78')]){_0x12dac1['joins']=JSON[_0xc9e9('0x79')](_0x12dac1[_0xc9e9('0x78')]);for(var _0x5146ed=0x0;_0x5146ed<_0x12dac1[_0xc9e9('0x78')][_0xc9e9('0x4a')];_0x5146ed+=0x1){if(_0x12dac1['joins'][_0x5146ed][_0xc9e9('0x31')]&&_['includes'](_0x3590f5,_0x12dac1[_0xc9e9('0x78')][_0x5146ed][_0xc9e9('0x31')])&&_0x12dac1[_0xc9e9('0x78')][_0x5146ed][_0xc9e9('0x7a')]&&_0x12dac1[_0xc9e9('0x78')][_0x5146ed][_0xc9e9('0x7b')]&&_0x12dac1[_0xc9e9('0x78')][_0x5146ed][_0xc9e9('0x7c')]){_0x5a9840[_0x12dac1[_0xc9e9('0x78')][_0x5146ed][_0xc9e9('0x31')]](_0x12dac1[_0xc9e9('0x78')][_0x5146ed]['foreignTable'],null,util[_0xc9e9('0x74')](_0xc9e9('0x7d'),_0x12dac1[_0xc9e9('0x71')],_0x12dac1[_0xc9e9('0x78')][_0x5146ed]['parentKey'],_0x12dac1[_0xc9e9('0x78')][_0x5146ed][_0xc9e9('0x7b')],_0x12dac1[_0xc9e9('0x78')][_0x5146ed]['foreignKey']));}}}if(_0x12dac1[_0xc9e9('0x7e')]){_0x12dac1[_0xc9e9('0x7e')]=JSON['parse'](_0x12dac1[_0xc9e9('0x7e')]);_0x5a9840[_0xc9e9('0x3e')](_0x3350dc(_0x12dac1['conditions'][_0xc9e9('0x67')]));}_0x8de212=_0x5a9840['clone']();_0x5a9840[_0xc9e9('0x1c')](_0x273c2a);_0x5a9840['offset'](0x0);logger[_0xc9e9('0x7f')](_0xc9e9('0x80'),_0x5a9840[_0xc9e9('0x81')]());return dbH[_0xc9e9('0x82')]['query'](_0x5a9840[_0xc9e9('0x81')](),{'type':dbH[_0xc9e9('0x82')][_0xc9e9('0x83')][_0xc9e9('0x84')]});}})[_0xc9e9('0x25')](respondWithResult(_0x3a7ffe,null))[_0xc9e9('0x47')](handleError(_0x3a7ffe,null));};function runReport(_0x35ebae,_0x5b7997,_0x331787){var _0x5c7e63=_0x5b7997['name'];var _0x3b8946=0xa;var _0x2dfbe9=[_0xc9e9('0x85'),_0xc9e9('0x55'),_0xc9e9('0x56'),'cross_join'];var _0x2a0da9={'SUM':'SUM(%s)','COUNT':_0xc9e9('0x59'),'COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':'MAX(%s)','MIN':_0xc9e9('0x5b'),'AVG':_0xc9e9('0x5c'),'GROUP_CONCAT':_0xc9e9('0x86'),'GROUP_CONCAT ASC':_0xc9e9('0x5d'),'GROUP_CONCAT DESC':_0xc9e9('0x87')};var _0x2a7e26={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':'DATE(%s)','HOUR':_0xc9e9('0x5f'),'ROUND':'ROUND(%s)','UNIX_TIMESTAMP':_0xc9e9('0x61')};var _0x4dcc1d=function(_0x198695){return!_[_0xc9e9('0x62')]([_0xc9e9('0x88'),'IS\x20NOT\x20NULL',_0xc9e9('0x63'),_0xc9e9('0x64')],_0x198695);};var _0xfb94e2=function(_0x1a3a14){if(!_0x1a3a14||!_0x1a3a14[_0xc9e9('0x65')][_0xc9e9('0x4a')]){return'';}for(var _0x3ad4dc='(',_0x26c271=0x0;_0x26c271<_0x1a3a14[_0xc9e9('0x65')][_0xc9e9('0x4a')];_0x26c271+=0x1){_0x26c271>0x0&&(_0x3ad4dc+='\x20'+_0x1a3a14[_0xc9e9('0x66')]+'\x20');_0x3ad4dc+=_0x1a3a14[_0xc9e9('0x65')][_0x26c271][_0xc9e9('0x67')]?_0xfb94e2(_0x1a3a14[_0xc9e9('0x65')][_0x26c271][_0xc9e9('0x67')]):_0x1a3a14[_0xc9e9('0x65')][_0x26c271][_0xc9e9('0x68')]+'\x20'+_0x1a3a14[_0xc9e9('0x65')][_0x26c271][_0xc9e9('0x69')]+(_0x4dcc1d(_0x1a3a14[_0xc9e9('0x65')][_0x26c271][_0xc9e9('0x69')])?'\x20'+_0x1a3a14[_0xc9e9('0x65')][_0x26c271][_0xc9e9('0x6a')]:'');}return _0x3ad4dc+')';};var _0x4a0991={'where':{'id':_0x35ebae['id']}},_0x4dd0fb,_0x1267f0,_0x3f6630,_0x2d383e,_0x75e3c6;_0x4a0991=_[_0xc9e9('0x41')]({},_0x4a0991,_0x331787);return db[_0xc9e9('0x44')]['find'](_0x4a0991)[_0xc9e9('0x25')](function(_0x442694){if(_0x442694){_0x4dd0fb=_0x442694;return _0x442694['getFields']();}return null;})[_0xc9e9('0x25')](function(_0x3cb739){if(_0x3cb739){if(!_0x3cb739[_0xc9e9('0x4a')]){throw new db['Sequelize'][(_0xc9e9('0x6c'))](_0xc9e9('0x89'),0x193);}_0x1267f0=_0x3cb739;return db[_0xc9e9('0x6d')]['findAll']({'raw':!![]});}return null;})[_0xc9e9('0x25')](function(_0x1e74b4){if(_0x1e74b4){_0x3f6630=_[_0xc9e9('0x6e')](_0x1e74b4,'id');var _0x59e59d;var _0x22a34a=squel[_0xc9e9('0x6f')]();_0x22a34a[_0xc9e9('0x70')](_0x4dd0fb[_0xc9e9('0x71')]);for(var _0x1f18b5=0x0;_0x1f18b5<_0x1267f0[_0xc9e9('0x4a')];_0x1f18b5+=0x1){_0x59e59d=_0x1267f0[_0x1f18b5][_0xc9e9('0x72')]?_0x3f6630[_0x1267f0[_0x1f18b5][_0xc9e9('0x72')]][_0xc9e9('0x8a')]:_0x1267f0[_0x1f18b5][_0xc9e9('0x68')];_0x59e59d=_0x1267f0[_0x1f18b5]['function']?_['replace'](_0x2a0da9[_0x1267f0[_0x1f18b5][_0xc9e9('0x8b')]],'%s',_0x59e59d):_0x59e59d;_0x59e59d=_0x1267f0[_0x1f18b5][_0xc9e9('0x74')]?_[_0xc9e9('0x73')](_0x2a7e26[_0x1267f0[_0x1f18b5][_0xc9e9('0x74')]],'%s',_0x59e59d):_0x59e59d;if(_0x1267f0[_0x1f18b5]['groupBy']){_0x22a34a[_0xc9e9('0x67')](_0x59e59d);}_0x1267f0[_0x1f18b5][_0xc9e9('0x76')]&&_0x22a34a['order'](_0x59e59d,_0x1267f0[_0x1f18b5][_0xc9e9('0x76')]===_0xc9e9('0x77')?![]:!![]);_0x22a34a[_0xc9e9('0x68')](_0x59e59d,_0x1267f0[_0x1f18b5][_0xc9e9('0x8c')]||_0x59e59d);}if(_0x4dd0fb['joins']){_0x4dd0fb[_0xc9e9('0x78')]=JSON[_0xc9e9('0x79')](_0x4dd0fb[_0xc9e9('0x78')]);for(var _0x351267=0x0;_0x351267<_0x4dd0fb['joins'][_0xc9e9('0x4a')];_0x351267+=0x1){if(_0x4dd0fb[_0xc9e9('0x78')][_0x351267][_0xc9e9('0x31')]&&_[_0xc9e9('0x62')](_0x2dfbe9,_0x4dd0fb['joins'][_0x351267][_0xc9e9('0x31')])&&_0x4dd0fb[_0xc9e9('0x78')][_0x351267]['parentKey']&&_0x4dd0fb['joins'][_0x351267][_0xc9e9('0x7b')]&&_0x4dd0fb[_0xc9e9('0x78')][_0x351267][_0xc9e9('0x7c')]){_0x22a34a[_0x4dd0fb[_0xc9e9('0x78')][_0x351267][_0xc9e9('0x31')]](_0x4dd0fb[_0xc9e9('0x78')][_0x351267]['foreignTable'],null,util['format'](_0xc9e9('0x7d'),_0x4dd0fb[_0xc9e9('0x71')],_0x4dd0fb[_0xc9e9('0x78')][_0x351267][_0xc9e9('0x7a')],_0x4dd0fb[_0xc9e9('0x78')][_0x351267][_0xc9e9('0x7b')],_0x4dd0fb[_0xc9e9('0x78')][_0x351267][_0xc9e9('0x7c')]));}}}if(_0x4dd0fb[_0xc9e9('0x7e')]){_0x4dd0fb[_0xc9e9('0x7e')]=JSON[_0xc9e9('0x79')](_0x4dd0fb[_0xc9e9('0x7e')]);_0x22a34a[_0xc9e9('0x3e')](_0xfb94e2(_0x4dd0fb['conditions'][_0xc9e9('0x67')]));}_0x75e3c6=_0x22a34a['clone']();_0x22a34a[_0xc9e9('0x1c')](_0x3b8946);_0x22a34a[_0xc9e9('0x3b')](0x0);return;}})[_0xc9e9('0x25')](function(){if(_0x5b7997[_0xc9e9('0x8d')]===_0xc9e9('0x8e')){return null;}var _0x442465=_[_0xc9e9('0x41')](_0x5b7997,{'name':_0x5b7997[_0xc9e9('0x8f')]||_0x5b7997[_0xc9e9('0x2c')]||_0x4dd0fb[_0xc9e9('0x2c')],'basename':_0x5c7e63,'savename':util[_0xc9e9('0x74')]('%s-%s.%s',_0x5b7997[_0xc9e9('0x2c')]||_0x4dd0fb[_0xc9e9('0x2c')],require(_0xc9e9('0x90'))['generate'](0x4),_0x5b7997['output']||_0xc9e9('0x91')),'reportId':_0x4dd0fb['id'],'reportType':_0xc9e9('0x92')});return db[_0xc9e9('0x93')]['create'](_0x442465,{'raw':!![]});})['then'](function(_0xb66626){if(_0x4dd0fb[_0xc9e9('0x71')]===_0xc9e9('0x94')){_0x75e3c6[_0xc9e9('0x3e')](_0x4dd0fb[_0xc9e9('0x71')]+_0xc9e9('0x95'),_0x5b7997[_0xc9e9('0x96')],_0x5b7997[_0xc9e9('0x97')]);}else{_0x75e3c6[_0xc9e9('0x3e')](_0x4dd0fb['table']+'.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x5b7997['startDate'],_0x5b7997[_0xc9e9('0x97')]);}if(_0xb66626){logger['info'](_0xc9e9('0x98'),_0x75e3c6[_0xc9e9('0x81')]());require(_0xc9e9('0x99'))[_0xc9e9('0x9a')](path[_0xc9e9('0x85')](__dirname,_0xc9e9('0x9b'),_0xb66626['output']),[_0xb66626['id'],_0x75e3c6[_0xc9e9('0x81')](),path[_0xc9e9('0x85')](__dirname,_0xc9e9('0x9c'),_0xb66626[_0xc9e9('0x9d')]),_0x5c7e63]);return _0xb66626;}else{var _0x2bc08d=squel[_0xc9e9('0x6f')]();_0x2bc08d['from']('('+_0x75e3c6[_0xc9e9('0x81')]()+')',_0xc9e9('0x9e'));_0x2bc08d[_0xc9e9('0x68')]('COUNT(*)',_0xc9e9('0x1e'));_0x75e3c6[_0xc9e9('0x1c')](_0x5b7997['limit']||_0x3b8946);_0x75e3c6[_0xc9e9('0x3b')](_0x5b7997[_0xc9e9('0x3b')]||0x0);return dbH[_0xc9e9('0x82')][_0xc9e9('0x34')](_0x2bc08d[_0xc9e9('0x81')](),{'type':dbH[_0xc9e9('0x82')][_0xc9e9('0x83')]['SELECT']})[_0xc9e9('0x25')](function(_0x14f003){if(!_0x14f003[_0xc9e9('0x4a')]){_0x2d383e=0x0;}else{_0x2d383e=_0x14f003[0x0][_0xc9e9('0x1e')]||0x0;}return dbH[_0xc9e9('0x82')][_0xc9e9('0x34')](_0x75e3c6['toString'](),{'type':dbH[_0xc9e9('0x82')][_0xc9e9('0x83')][_0xc9e9('0x84')]});})[_0xc9e9('0x25')](function(_0x34c3cd){return{'rows':_0x34c3cd||[],'count':_0x2d383e};});}});}exports[_0xc9e9('0x9f')]=function(_0x289757,_0x2f0e06){return runReport(_0x289757['params'],_0x289757[_0xc9e9('0x34')],_0x289757[_0xc9e9('0x4c')])['then'](respondWithResult(_0x2f0e06,null))[_0xc9e9('0x47')](handleError(_0x2f0e06,null));};exports['runReport']=runReport;exports[_0xc9e9('0x34')]=function(_0x1a4d4b,_0x25c656){var _0xf20da7=0xa;var _0x4c9fc4=['join',_0xc9e9('0x55'),_0xc9e9('0x56'),_0xc9e9('0x57')];var _0x460f84={'SUM':'SUM(%s)','COUNT':_0xc9e9('0x59'),'COUNT DISTINCT':_0xc9e9('0x5a'),'MAX':'MAX(%s)','MIN':'MIN(%s)','AVG':_0xc9e9('0x5c'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0xc9e9('0x87')};var _0x3caaad={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0xc9e9('0xa0'),'HOUR':_0xc9e9('0x5f'),'ROUND':_0xc9e9('0x60'),'UNIX_TIMESTAMP':_0xc9e9('0x61')};var _0x2b5aa1=function(_0x19b137){return!_[_0xc9e9('0x62')]([_0xc9e9('0x88'),'IS\x20NOT\x20NULL','IS\x20EMPTY',_0xc9e9('0x64')],_0x19b137);};var _0xc25bf6=function(_0x27add1){if(!_0x27add1||!_0x27add1[_0xc9e9('0x65')][_0xc9e9('0x4a')]){return'';}for(var _0x6351d7='(',_0xdf58a6=0x0;_0xdf58a6<_0x27add1['rules']['length'];_0xdf58a6+=0x1){_0xdf58a6>0x0&&(_0x6351d7+='\x20'+_0x27add1[_0xc9e9('0x66')]+'\x20');_0x6351d7+=_0x27add1[_0xc9e9('0x65')][_0xdf58a6][_0xc9e9('0x67')]?_0xc25bf6(_0x27add1[_0xc9e9('0x65')][_0xdf58a6][_0xc9e9('0x67')]):_0x27add1[_0xc9e9('0x65')][_0xdf58a6][_0xc9e9('0x68')]+'\x20'+_0x27add1[_0xc9e9('0x65')][_0xdf58a6]['condition']+(_0x2b5aa1(_0x27add1[_0xc9e9('0x65')][_0xdf58a6]['condition'])?'\x20'+_0x27add1[_0xc9e9('0x65')][_0xdf58a6][_0xc9e9('0x6a')]:'');}return _0x6351d7+')';};var _0x214aff={'where':{'id':_0x1a4d4b['params']['id']}},_0x2aeca9,_0x575356,_0x170d47,_0x44b78f,_0x5e524c;_0x214aff=_[_0xc9e9('0x41')]({},_0x214aff,_0x1a4d4b['options']);return db['AnalyticCustomReport'][_0xc9e9('0x4d')](_0x214aff)[_0xc9e9('0x25')](function(_0x4c738a){if(_0x4c738a){_0x2aeca9=_0x4c738a;return _0x4c738a[_0xc9e9('0x6b')]();}return null;})[_0xc9e9('0x25')](function(_0x4dfef7){if(_0x4dfef7){if(!_0x4dfef7[_0xc9e9('0x4a')]){throw new db['Sequelize']['ValidationErrorItem'](_0xc9e9('0x89'),0x193);}_0x575356=_0x4dfef7;return db['AnalyticMetric']['findAll']({'raw':!![]});}return null;})[_0xc9e9('0x25')](function(_0x45fd0b){if(_0x45fd0b){_0x170d47=_[_0xc9e9('0x6e')](_0x45fd0b,'id');var _0x296eda;var _0xe8ea03=squel['select']();_0xe8ea03[_0xc9e9('0x70')](_0x2aeca9[_0xc9e9('0x71')]);for(var _0x1ed8e3=0x0;_0x1ed8e3<_0x575356[_0xc9e9('0x4a')];_0x1ed8e3+=0x1){_0x296eda=_0x575356[_0x1ed8e3][_0xc9e9('0x72')]?_0x170d47[_0x575356[_0x1ed8e3][_0xc9e9('0x72')]][_0xc9e9('0x8a')]:_0x575356[_0x1ed8e3][_0xc9e9('0x68')];_0x296eda=_0x575356[_0x1ed8e3]['function']?_['replace'](_0x460f84[_0x575356[_0x1ed8e3][_0xc9e9('0x8b')]],'%s',_0x296eda):_0x296eda;_0x296eda=_0x575356[_0x1ed8e3]['format']?_[_0xc9e9('0x73')](_0x3caaad[_0x575356[_0x1ed8e3][_0xc9e9('0x74')]],'%s',_0x296eda):_0x296eda;if(_0x575356[_0x1ed8e3][_0xc9e9('0x75')]){_0xe8ea03['group'](_0x296eda);}_0x575356[_0x1ed8e3][_0xc9e9('0x76')]&&_0xe8ea03[_0xc9e9('0x3c')](_0x296eda,_0x575356[_0x1ed8e3][_0xc9e9('0x76')]===_0xc9e9('0x77')?![]:!![]);_0xe8ea03['field'](_0x296eda,_0x575356[_0x1ed8e3][_0xc9e9('0x8c')]||_0x296eda);}if(_0x2aeca9['joins']){_0x2aeca9[_0xc9e9('0x78')]=JSON[_0xc9e9('0x79')](_0x2aeca9[_0xc9e9('0x78')]);for(var _0x5a12cf=0x0;_0x5a12cf<_0x2aeca9[_0xc9e9('0x78')][_0xc9e9('0x4a')];_0x5a12cf+=0x1){if(_0x2aeca9[_0xc9e9('0x78')][_0x5a12cf][_0xc9e9('0x31')]&&_[_0xc9e9('0x62')](_0x4c9fc4,_0x2aeca9[_0xc9e9('0x78')][_0x5a12cf][_0xc9e9('0x31')])&&_0x2aeca9[_0xc9e9('0x78')][_0x5a12cf][_0xc9e9('0x7a')]&&_0x2aeca9['joins'][_0x5a12cf][_0xc9e9('0x7b')]&&_0x2aeca9[_0xc9e9('0x78')][_0x5a12cf][_0xc9e9('0x7c')]){_0xe8ea03[_0x2aeca9[_0xc9e9('0x78')][_0x5a12cf][_0xc9e9('0x31')]](_0x2aeca9[_0xc9e9('0x78')][_0x5a12cf]['foreignTable'],null,util['format'](_0xc9e9('0x7d'),_0x2aeca9[_0xc9e9('0x71')],_0x2aeca9[_0xc9e9('0x78')][_0x5a12cf][_0xc9e9('0x7a')],_0x2aeca9[_0xc9e9('0x78')][_0x5a12cf][_0xc9e9('0x7b')],_0x2aeca9[_0xc9e9('0x78')][_0x5a12cf][_0xc9e9('0x7c')]));}}}if(_0x2aeca9[_0xc9e9('0x7e')]){_0x2aeca9[_0xc9e9('0x7e')]=JSON[_0xc9e9('0x79')](_0x2aeca9[_0xc9e9('0x7e')]);_0xe8ea03[_0xc9e9('0x3e')](_0xc25bf6(_0x2aeca9[_0xc9e9('0x7e')][_0xc9e9('0x67')]));}_0x5e524c=_0xe8ea03['clone']();_0xe8ea03['limit'](_0xf20da7);_0xe8ea03[_0xc9e9('0x3b')](0x0);logger['debug'](_0xc9e9('0x80'),_0xe8ea03[_0xc9e9('0x81')]());return dbH[_0xc9e9('0x82')][_0xc9e9('0x34')](_0xe8ea03[_0xc9e9('0x81')](),{'type':dbH['sequelize'][_0xc9e9('0x83')][_0xc9e9('0x84')]});}})[_0xc9e9('0x25')](function(){return{'sql':_0x5e524c[_0xc9e9('0x81')]()};})[_0xc9e9('0x25')](respondWithResult(_0x25c656,null))[_0xc9e9('0x47')](handleError(_0x25c656,null));};
\ No newline at end of file
index 8d58209..2a9a246 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x718e=['moment','path','exports','define','AnalyticCustomReport','lodash','util','../../config/logger','api'];(function(_0x544dc9,_0x24cc13){var _0x2e2518=function(_0x13ff1f){while(--_0x13ff1f){_0x544dc9['push'](_0x544dc9['shift']());}};_0x2e2518(++_0x24cc13);}(_0x718e,0x1eb));var _0xe718=function(_0x42fd67,_0x5dbdfd){_0x42fd67=_0x42fd67-0x0;var _0x3293f5=_0x718e[_0x42fd67];return _0x3293f5;};'use strict';var _=require(_0xe718('0x0'));var util=require(_0xe718('0x1'));var logger=require(_0xe718('0x2'))(_0xe718('0x3'));var moment=require(_0xe718('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xe718('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./analyticCustomReport.attributes');module[_0xe718('0x6')]=function(_0x173637,_0x5b8cd6){return _0x173637[_0xe718('0x7')](_0xe718('0x8'),attributes,{'tableName':'analytics_custom_reports','paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4bc1=['exports','define','analytics_custom_reports','lodash','util','moment','request-promise','rimraf','../../config/environment','./analyticCustomReport.attributes'];(function(_0x4a34e0,_0x29ff2f){var _0xb5ce1d=function(_0x225c39){while(--_0x225c39){_0x4a34e0['push'](_0x4a34e0['shift']());}};_0xb5ce1d(++_0x29ff2f);}(_0x4bc1,0x99));var _0x14bc=function(_0x3a719f,_0x315ba8){_0x3a719f=_0x3a719f-0x0;var _0x22b806=_0x4bc1[_0x3a719f];return _0x22b806;};'use strict';var _=require(_0x14bc('0x0'));var util=require(_0x14bc('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x14bc('0x2'));var BPromise=require('bluebird');var rp=require(_0x14bc('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x14bc('0x4'));var config=require(_0x14bc('0x5'));var attributes=require(_0x14bc('0x6'));module[_0x14bc('0x7')]=function(_0x300dce,_0xaa8630){return _0x300dce[_0x14bc('0x8')]('AnalyticCustomReport',attributes,{'tableName':_0x14bc('0x9'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 61e5da7..c5d8539 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7296=['bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','AnalyticCustomReport,\x20%s,\x20%s','request\x20sent','stringify','error','message','info','result','catch','util','moment'];(function(_0x4b54fb,_0x2150e4){var _0x375eb4=function(_0x461679){while(--_0x461679){_0x4b54fb['push'](_0x4b54fb['shift']());}};_0x375eb4(++_0x2150e4);}(_0x7296,0x1e2));var _0x6729=function(_0xf91841,_0x182ae3){_0xf91841=_0xf91841-0x0;var _0x4b9c44=_0x7296[_0xf91841];return _0x4b9c44;};'use strict';var _=require('lodash');var util=require(_0x6729('0x0'));var moment=require(_0x6729('0x1'));var BPromise=require(_0x6729('0x2'));var rs=require(_0x6729('0x3'));var fs=require('fs');var Redis=require(_0x6729('0x4'));var db=require(_0x6729('0x5'))['db'];var utils=require(_0x6729('0x6'));var logger=require('../../config/logger')(_0x6729('0x7'));var config=require(_0x6729('0x8'));var jayson=require(_0x6729('0x9'));var client=jayson[_0x6729('0xa')][_0x6729('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x233f1c,_0x51454a,_0xf1ce5f){return new BPromise(function(_0x3efcdb,_0x1a6434){return client[_0x6729('0xc')](_0x233f1c,_0xf1ce5f)[_0x6729('0xd')](function(_0x1d688f){logger['info'](_0x6729('0xe'),_0x51454a,_0x6729('0xf'));logger['debug']('AnalyticCustomReport,\x20%s,\x20%s,\x20%s',_0x51454a,_0x6729('0xf'),JSON[_0x6729('0x10')](_0x1d688f));if(_0x1d688f['error']){if(_0x1d688f['error']['code']===0x1f4){logger['error'](_0x6729('0xe'),_0x51454a,_0x1d688f[_0x6729('0x11')]['message']);return _0x1a6434(_0x1d688f[_0x6729('0x11')][_0x6729('0x12')]);}logger[_0x6729('0x11')](_0x6729('0xe'),_0x51454a,_0x1d688f[_0x6729('0x11')][_0x6729('0x12')]);return _0x3efcdb(_0x1d688f['error']['message']);}else{logger[_0x6729('0x13')](_0x6729('0xe'),_0x51454a,'request\x20sent');_0x3efcdb(_0x1d688f[_0x6729('0x14')][_0x6729('0x12')]);}})[_0x6729('0x15')](function(_0x3c33f8){logger[_0x6729('0x11')]('AnalyticCustomReport,\x20%s,\x20%s',_0x51454a,_0x3c33f8);_0x1a6434(_0x3c33f8);});});}
\ No newline at end of file
+var _0xb6ad=['debug','AnalyticCustomReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','info','AnalyticCustomReport,\x20%s,\x20%s','request\x20sent'];(function(_0x2cd1fb,_0x291f55){var _0x48fd2b=function(_0x18e23e){while(--_0x18e23e){_0x2cd1fb['push'](_0x2cd1fb['shift']());}};_0x48fd2b(++_0x291f55);}(_0xb6ad,0x104));var _0xdb6a=function(_0x205f7d,_0xb236a7){_0x205f7d=_0x205f7d-0x0;var _0x190a57=_0xb6ad[_0x205f7d];return _0x190a57;};'use strict';var _=require(_0xdb6a('0x0'));var util=require(_0xdb6a('0x1'));var moment=require(_0xdb6a('0x2'));var BPromise=require(_0xdb6a('0x3'));var rs=require(_0xdb6a('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xdb6a('0x5'))['db'];var utils=require(_0xdb6a('0x6'));var logger=require(_0xdb6a('0x7'))('rpc');var config=require(_0xdb6a('0x8'));var jayson=require(_0xdb6a('0x9'));var client=jayson[_0xdb6a('0xa')][_0xdb6a('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3c97f3,_0x21e51a,_0x118e45){return new BPromise(function(_0x332611,_0x2a8653){return client[_0xdb6a('0xc')](_0x3c97f3,_0x118e45)['then'](function(_0x2a3d34){logger[_0xdb6a('0xd')](_0xdb6a('0xe'),_0x21e51a,_0xdb6a('0xf'));logger[_0xdb6a('0x10')](_0xdb6a('0x11'),_0x21e51a,_0xdb6a('0xf'),JSON[_0xdb6a('0x12')](_0x2a3d34));if(_0x2a3d34['error']){if(_0x2a3d34[_0xdb6a('0x13')]['code']===0x1f4){logger[_0xdb6a('0x13')](_0xdb6a('0xe'),_0x21e51a,_0x2a3d34['error'][_0xdb6a('0x14')]);return _0x2a8653(_0x2a3d34['error']['message']);}logger[_0xdb6a('0x13')](_0xdb6a('0xe'),_0x21e51a,_0x2a3d34[_0xdb6a('0x13')]['message']);return _0x332611(_0x2a3d34[_0xdb6a('0x13')]['message']);}else{logger[_0xdb6a('0xd')](_0xdb6a('0xe'),_0x21e51a,_0xdb6a('0xf'));_0x332611(_0x2a3d34[_0xdb6a('0x15')][_0xdb6a('0x14')]);}})[_0xdb6a('0x16')](function(_0x34d0a8){logger['error'](_0xdb6a('0xe'),_0x21e51a,_0x34d0a8);_0x2a8653(_0x34d0a8);});});}
\ No newline at end of file
index e66daa9..37b9c4b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3655=['../../components/auth/service','../../config/environment','./analyticCustomReport.controller','isAuthenticated','index','/:id','show','get','run','/:id/query','post','create','put','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x3655,0x19c));var _0x5365=function(_0x33d4dd,_0xab8529){_0x33d4dd=_0x33d4dd-0x0;var _0x44d328=_0x3655[_0x33d4dd];return _0x44d328;};'use strict';var multer=require(_0x5365('0x0'));var util=require(_0x5365('0x1'));var path=require(_0x5365('0x2'));var timeout=require(_0x5365('0x3'));var express=require('express');var router=express[_0x5365('0x4')]();var fs_extra=require(_0x5365('0x5'));var auth=require(_0x5365('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x5365('0x7'));var controller=require(_0x5365('0x8'));router['get']('/',auth[_0x5365('0x9')](),controller[_0x5365('0xa')]);router['get'](_0x5365('0xb'),auth[_0x5365('0x9')](),controller[_0x5365('0xc')]);router[_0x5365('0xd')]('/:id/preview',auth[_0x5365('0x9')](),controller['preview']);router[_0x5365('0xd')]('/:id/run',auth['isAuthenticated'](),controller[_0x5365('0xe')]);router['get'](_0x5365('0xf'),auth[_0x5365('0x9')](),controller['query']);router[_0x5365('0x10')]('/',auth[_0x5365('0x9')](),controller[_0x5365('0x11')]);router[_0x5365('0x12')](_0x5365('0xb'),auth[_0x5365('0x9')](),controller['update']);router[_0x5365('0x13')]('/:id',auth['isAuthenticated'](),controller[_0x5365('0x14')]);module[_0x5365('0x15')]=router;
\ No newline at end of file
+var _0x717d=['../../config/environment','get','isAuthenticated','index','/:id','show','/:id/preview','/:id/run','run','/:id/query','create','update','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x5c434b,_0x23ab73){var _0x58490f=function(_0x4376ff){while(--_0x4376ff){_0x5c434b['push'](_0x5c434b['shift']());}};_0x58490f(++_0x23ab73);}(_0x717d,0x10b));var _0xd717=function(_0x441563,_0x1d4a28){_0x441563=_0x441563-0x0;var _0x2369ec=_0x717d[_0x441563];return _0x2369ec;};'use strict';var multer=require(_0xd717('0x0'));var util=require(_0xd717('0x1'));var path=require(_0xd717('0x2'));var timeout=require(_0xd717('0x3'));var express=require(_0xd717('0x4'));var router=express[_0xd717('0x5')]();var fs_extra=require(_0xd717('0x6'));var auth=require(_0xd717('0x7'));var interaction=require(_0xd717('0x8'));var config=require(_0xd717('0x9'));var controller=require('./analyticCustomReport.controller');router[_0xd717('0xa')]('/',auth[_0xd717('0xb')](),controller[_0xd717('0xc')]);router[_0xd717('0xa')](_0xd717('0xd'),auth[_0xd717('0xb')](),controller[_0xd717('0xe')]);router[_0xd717('0xa')](_0xd717('0xf'),auth[_0xd717('0xb')](),controller['preview']);router[_0xd717('0xa')](_0xd717('0x10'),auth[_0xd717('0xb')](),controller[_0xd717('0x11')]);router['get'](_0xd717('0x12'),auth[_0xd717('0xb')](),controller['query']);router['post']('/',auth[_0xd717('0xb')](),controller[_0xd717('0x13')]);router['put'](_0xd717('0xd'),auth[_0xd717('0xb')](),controller[_0xd717('0x14')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0xd717('0x15')]);module[_0xd717('0x16')]=router;
\ No newline at end of file
index 528e1a4..ccd5693 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x814b=['STRING','TEXT','sequelize','exports'];(function(_0x3fad49,_0x4e166b){var _0x3869d4=function(_0x172802){while(--_0x172802){_0x3fad49['push'](_0x3fad49['shift']());}};_0x3869d4(++_0x4e166b);}(_0x814b,0x1a2));var _0xb814=function(_0x1e4150,_0x55b02a){_0x1e4150=_0x1e4150-0x0;var _0x1ce3ee=_0x814b[_0x1e4150];return _0x1ce3ee;};'use strict';var Sequelize=require(_0xb814('0x0'));module[_0xb814('0x1')]={'name':{'type':Sequelize[_0xb814('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0xb814('0x2')]},'parent':{'type':Sequelize[_0xb814('0x2')]},'table':{'type':Sequelize[_0xb814('0x2')]},'conditions':{'type':Sequelize['TEXT']},'joins':{'type':Sequelize[_0xb814('0x3')]}};
\ No newline at end of file
+var _0xb138=['TEXT','sequelize','exports','STRING'];(function(_0x1aea1c,_0x287966){var _0x4ab763=function(_0xe34dff){while(--_0xe34dff){_0x1aea1c['push'](_0x1aea1c['shift']());}};_0x4ab763(++_0x287966);}(_0xb138,0x1dd));var _0x8b13=function(_0x46f0d3,_0x40b4f3){_0x46f0d3=_0x46f0d3-0x0;var _0xb6d3c3=_0xb138[_0x46f0d3];return _0xb6d3c3;};'use strict';var Sequelize=require(_0x8b13('0x0'));module[_0x8b13('0x1')]={'name':{'type':Sequelize[_0x8b13('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x8b13('0x2')]},'parent':{'type':Sequelize[_0x8b13('0x2')]},'table':{'type':Sequelize[_0x8b13('0x2')]},'conditions':{'type':Sequelize[_0x8b13('0x3')]},'joins':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index 25be6a0..6c5e176 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fab=['debug','Limited\x20Query:','toString','sequelize','QueryTypes','SELECT','COUNT(DISTINCT\x20%s)','from','function','order','output','web','fullPath','%s-%s.%s','randomstring','generate','csv','default','AnalyticExtractedReport','cdr','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','endDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','Run\x20Query:','child_process','fork','../../components/export/','../../files/reports','savename','countTable','run','params','runReport','AVG(%s)','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','squel','crypto','jsforce','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','dbH','status','end','limit','undefined','count','offset','Content-Range','apply','save','update','then','destroy','get','DefaultReports','UserProfileResource','sendStatus','error','stack','name','send','index','map','AnalyticDefaultReport','rawAttributes','type','keys','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','query','where','pick','filters','filter','VIRTUAL','merge','options','include','findAll','rows','catch','includeAll','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Reports','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','preview','join','left_join','right_join','cross_join','SUM(%s)','COUNT(%s)','MAX(%s)','MIN(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','SEC_TO_TIME(%s)','DATE(%s)','HOUR(%s)','ROUND(%s)','UNIX_TIMESTAMP(%s)','includes','IS\x20NULL','IS\x20NOT\x20NULL','IS\x20EMPTY','IS\x20NOT\x20EMPTY','rules','operator','group','field','condition','value','getFields','Sequelize','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','keyBy','select','table','MetricId','metric','replace','format','groupBy','orderBy','DESC','alias','joins','parentKey','foreignKey','foreignTable','%s.%s\x20=\x20%s.%s','conditions','parse','clone'];(function(_0x53134e,_0x174bb2){var _0x46d999=function(_0x28240f){while(--_0x28240f){_0x53134e['push'](_0x53134e['shift']());}};_0x46d999(++_0x174bb2);}(_0x5fab,0x177));var _0xb5fa=function(_0x224012,_0x293e50){_0x224012=_0x224012-0x0;var _0x544142=_0x5fab[_0x224012];return _0x544142;};'use strict';var emlformat=require(_0xb5fa('0x0'));var rimraf=require(_0xb5fa('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xb5fa('0x2'));var rp=require(_0xb5fa('0x3'));var moment=require(_0xb5fa('0x4'));var BPromise=require(_0xb5fa('0x5'));var Mustache=require(_0xb5fa('0x6'));var util=require(_0xb5fa('0x7'));var path=require(_0xb5fa('0x8'));var sox=require(_0xb5fa('0x9'));var csv=require(_0xb5fa('0xa'));var ejs=require(_0xb5fa('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xb5fa('0xc'));var crypto=require(_0xb5fa('0xd'));var jsforce=require(_0xb5fa('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xb5fa('0xa'));var querystring=require(_0xb5fa('0xf'));var Papa=require(_0xb5fa('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xb5fa('0x11'));var as=require(_0xb5fa('0x12'));var hardwareService=require(_0xb5fa('0x13'));var logger=require(_0xb5fa('0x14'))(_0xb5fa('0x15'));var utils=require(_0xb5fa('0x16'));var config=require(_0xb5fa('0x17'));var licenseUtil=require(_0xb5fa('0x18'));var db=require(_0xb5fa('0x19'))['db'];var dbH=require('../../mysqldb')[_0xb5fa('0x1a')];function respondWithStatusCode(_0x3dad4d,_0x56e8b0){_0x56e8b0=_0x56e8b0||0xcc;return function(_0x116849){if(_0x116849){return _0x3dad4d['sendStatus'](_0x56e8b0);}return _0x3dad4d[_0xb5fa('0x1b')](_0x56e8b0)[_0xb5fa('0x1c')]();};}function respondWithResult(_0x40c914,_0xca8d82){_0xca8d82=_0xca8d82||0xc8;return function(_0x8e9d1c){if(_0x8e9d1c){return _0x40c914['status'](_0xca8d82)['json'](_0x8e9d1c);}};}function respondWithFilteredResult(_0x38e964,_0x587043){return function(_0x31f252){if(_0x31f252){var _0x27c8f7=typeof _0x587043['offset']==='undefined'&&typeof _0x587043[_0xb5fa('0x1d')]===_0xb5fa('0x1e');var _0x32e9e5=_0x31f252[_0xb5fa('0x1f')];var _0x324ba5=_0x27c8f7?0x0:_0x587043[_0xb5fa('0x20')];var _0x3b0f69=_0x27c8f7?_0x31f252[_0xb5fa('0x1f')]:_0x587043[_0xb5fa('0x20')]+_0x587043[_0xb5fa('0x1d')];var _0x3c8d53;if(_0x3b0f69>=_0x32e9e5){_0x3b0f69=_0x32e9e5;_0x3c8d53=0xc8;}else{_0x3c8d53=0xce;}_0x38e964[_0xb5fa('0x1b')](_0x3c8d53);return _0x38e964['set'](_0xb5fa('0x21'),_0x324ba5+'-'+_0x3b0f69+'/'+_0x32e9e5)['json'](_0x31f252);}return null;};}function patchUpdates(_0x37ae06){return function(_0x4a6c04){try{jsonpatch[_0xb5fa('0x22')](_0x4a6c04,_0x37ae06,!![]);}catch(_0x43c09f){return BPromise['reject'](_0x43c09f);}return _0x4a6c04[_0xb5fa('0x23')]();};}function saveUpdates(_0x3a2ab9,_0x283a56){return function(_0x47f71a){if(_0x47f71a){return _0x47f71a[_0xb5fa('0x24')](_0x3a2ab9)[_0xb5fa('0x25')](function(_0x444237){return _0x444237;});}return null;};}function removeEntity(_0x542348,_0x224ec8){return function(_0x5d55f7){if(_0x5d55f7){return _0x5d55f7[_0xb5fa('0x26')]()[_0xb5fa('0x25')](function(){var _0x11053a=_0x5d55f7[_0xb5fa('0x27')]({'plain':!![]});var _0x2dbd22=_0xb5fa('0x28');return db[_0xb5fa('0x29')][_0xb5fa('0x26')]({'where':{'type':_0x2dbd22,'resourceId':_0x11053a['id']}})['then'](function(){return _0x5d55f7;});})['then'](function(){_0x542348['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x28a350,_0x460b54){return function(_0x12c0d4){if(!_0x12c0d4){_0x28a350[_0xb5fa('0x2a')](0x194);}return _0x12c0d4;};}function handleError(_0x534884,_0x3506a4){_0x3506a4=_0x3506a4||0x1f4;return function(_0x358549){logger[_0xb5fa('0x2b')](_0x358549[_0xb5fa('0x2c')]);if(_0x358549[_0xb5fa('0x2d')]){delete _0x358549[_0xb5fa('0x2d')];}_0x534884[_0xb5fa('0x1b')](_0x3506a4)[_0xb5fa('0x2e')](_0x358549);};}exports[_0xb5fa('0x2f')]=function(_0xed02e,_0x116773){var _0x5a0152={},_0x3fd1fb={},_0x21fc7e={'count':0x0,'rows':[]};var _0x319c48=_[_0xb5fa('0x30')](db[_0xb5fa('0x31')][_0xb5fa('0x32')],function(_0x25fc7c){return{'name':_0x25fc7c['fieldName'],'type':_0x25fc7c[_0xb5fa('0x33')]['key']};});_0x3fd1fb['model']=_['map'](_0x319c48,_0xb5fa('0x2d'));_0x3fd1fb['query']=_[_0xb5fa('0x34')](_0xed02e['query']);_0x3fd1fb['filters']=_[_0xb5fa('0x35')](_0x3fd1fb[_0xb5fa('0x36')],_0x3fd1fb['query']);_0x5a0152['attributes']=_[_0xb5fa('0x35')](_0x3fd1fb[_0xb5fa('0x36')],qs[_0xb5fa('0x37')](_0xed02e['query'][_0xb5fa('0x37')]));_0x5a0152[_0xb5fa('0x38')]=_0x5a0152['attributes'][_0xb5fa('0x39')]?_0x5a0152[_0xb5fa('0x38')]:_0x3fd1fb[_0xb5fa('0x36')];if(!_0xed02e['query'][_0xb5fa('0x3a')](_0xb5fa('0x3b'))){_0x5a0152[_0xb5fa('0x1d')]=qs['limit'](_0xed02e[_0xb5fa('0x3c')][_0xb5fa('0x1d')]);_0x5a0152[_0xb5fa('0x20')]=qs[_0xb5fa('0x20')](_0xed02e['query']['offset']);}_0x5a0152['order']=qs['sort'](_0xed02e['query']['sort']);_0x5a0152[_0xb5fa('0x3d')]=qs['filters'](_[_0xb5fa('0x3e')](_0xed02e[_0xb5fa('0x3c')],_0x3fd1fb[_0xb5fa('0x3f')]),_0x319c48);if(_0xed02e[_0xb5fa('0x3c')][_0xb5fa('0x40')]){_0x5a0152[_0xb5fa('0x3d')]=_['merge'](_0x5a0152['where'],{'$or':_['map'](_0x319c48,function(_0x534b38){if(_0x534b38['type']!==_0xb5fa('0x41')){var _0x5addd5={};_0x5addd5[_0x534b38['name']]={'$like':'%'+_0xed02e[_0xb5fa('0x3c')][_0xb5fa('0x40')]+'%'};return _0x5addd5;}})});}_0x5a0152=_[_0xb5fa('0x42')]({},_0x5a0152,_0xed02e[_0xb5fa('0x43')]);var _0x5bc93f={'where':_0x5a0152[_0xb5fa('0x3d')]};return db[_0xb5fa('0x31')][_0xb5fa('0x1f')](_0x5bc93f)[_0xb5fa('0x25')](function(_0x402a68){_0x21fc7e['count']=_0x402a68;if(_0xed02e[_0xb5fa('0x3c')]['includeAll']){_0x5a0152[_0xb5fa('0x44')]=[{'all':!![]}];}return db[_0xb5fa('0x31')][_0xb5fa('0x45')](_0x5a0152);})[_0xb5fa('0x25')](function(_0x1c706b){_0x21fc7e[_0xb5fa('0x46')]=_0x1c706b;return _0x21fc7e;})[_0xb5fa('0x25')](respondWithFilteredResult(_0x116773,_0x5a0152))[_0xb5fa('0x47')](handleError(_0x116773,null));};exports['show']=function(_0x1c3c2c,_0xc03e44){var _0x59ae64={'raw':!![],'where':{'id':_0x1c3c2c['params']['id']}},_0x293c19={};_0x293c19[_0xb5fa('0x36')]=_[_0xb5fa('0x34')](db['AnalyticDefaultReport']['rawAttributes']);_0x293c19[_0xb5fa('0x3c')]=_[_0xb5fa('0x34')](_0x1c3c2c[_0xb5fa('0x3c')]);_0x293c19[_0xb5fa('0x3f')]=_[_0xb5fa('0x35')](_0x293c19[_0xb5fa('0x36')],_0x293c19[_0xb5fa('0x3c')]);_0x59ae64[_0xb5fa('0x38')]=_['intersection'](_0x293c19[_0xb5fa('0x36')],qs[_0xb5fa('0x37')](_0x1c3c2c['query'][_0xb5fa('0x37')]));_0x59ae64[_0xb5fa('0x38')]=_0x59ae64[_0xb5fa('0x38')][_0xb5fa('0x39')]?_0x59ae64[_0xb5fa('0x38')]:_0x293c19[_0xb5fa('0x36')];if(_0x1c3c2c[_0xb5fa('0x3c')][_0xb5fa('0x48')]){_0x59ae64[_0xb5fa('0x44')]=[{'all':!![]}];}_0x59ae64=_[_0xb5fa('0x42')]({},_0x59ae64,_0x1c3c2c[_0xb5fa('0x43')]);return db[_0xb5fa('0x31')][_0xb5fa('0x49')](_0x59ae64)[_0xb5fa('0x25')](handleEntityNotFound(_0xc03e44,null))[_0xb5fa('0x25')](respondWithResult(_0xc03e44,null))[_0xb5fa('0x47')](handleError(_0xc03e44,null));};exports['create']=function(_0x56dceb,_0x46194d){return db['AnalyticDefaultReport'][_0xb5fa('0x4a')](_0x56dceb[_0xb5fa('0x4b')],{})['then'](function(_0x4ef1d0){var _0x2931a7=_0x56dceb[_0xb5fa('0x4c')][_0xb5fa('0x27')]({'plain':!![]});if(!_0x2931a7)throw new Error(_0xb5fa('0x4d'));if(_0x2931a7[_0xb5fa('0x4e')]==='user'){var _0x27a651=_0x4ef1d0['get']({'plain':!![]});var _0x251d36=_0xb5fa('0x4f');return db[_0xb5fa('0x50')]['find']({'where':{'name':_0x251d36,'userProfileId':_0x2931a7[_0xb5fa('0x51')]},'raw':!![]})[_0xb5fa('0x25')](function(_0x4dea87){if(_0x4dea87&&_0x4dea87['autoAssociation']===0x0){return db[_0xb5fa('0x29')][_0xb5fa('0x4a')]({'name':_0x27a651[_0xb5fa('0x2d')],'resourceId':_0x27a651['id'],'type':_0xb5fa('0x28'),'sectionId':_0x4dea87['id']},{})[_0xb5fa('0x25')](function(){return _0x4ef1d0;});}else{return _0x4ef1d0;}})[_0xb5fa('0x47')](function(_0x31c91f){logger[_0xb5fa('0x2b')](_0xb5fa('0x52'),_0x31c91f);throw _0x31c91f;});}return _0x4ef1d0;})[_0xb5fa('0x25')](respondWithResult(_0x46194d,0xc9))[_0xb5fa('0x47')](handleError(_0x46194d,null));};exports[_0xb5fa('0x24')]=function(_0x3ccfd1,_0x2799e7){if(_0x3ccfd1[_0xb5fa('0x4b')]['id']){delete _0x3ccfd1[_0xb5fa('0x4b')]['id'];}return db[_0xb5fa('0x31')][_0xb5fa('0x49')]({'where':{'id':_0x3ccfd1['params']['id']}})[_0xb5fa('0x25')](handleEntityNotFound(_0x2799e7,null))[_0xb5fa('0x25')](saveUpdates(_0x3ccfd1[_0xb5fa('0x4b')],null))[_0xb5fa('0x25')](respondWithResult(_0x2799e7,null))[_0xb5fa('0x47')](handleError(_0x2799e7,null));};exports[_0xb5fa('0x26')]=function(_0x4224cf,_0x24117e){return db[_0xb5fa('0x31')][_0xb5fa('0x49')]({'where':{'id':_0x4224cf['params']['id']}})['then'](handleEntityNotFound(_0x24117e,null))[_0xb5fa('0x25')](removeEntity(_0x24117e,null))[_0xb5fa('0x47')](handleError(_0x24117e,null));};exports[_0xb5fa('0x53')]=function(_0x5caf84,_0x441c41){var _0x367f7a=0xa;var _0x1572fb=[_0xb5fa('0x54'),_0xb5fa('0x55'),_0xb5fa('0x56'),_0xb5fa('0x57')];var _0x4f82f0={'SUM':_0xb5fa('0x58'),'COUNT':_0xb5fa('0x59'),'COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':_0xb5fa('0x5a'),'MIN':_0xb5fa('0x5b'),'AVG':'AVG(%s)','GROUP_CONCAT':_0xb5fa('0x5c'),'GROUP_CONCAT ASC':_0xb5fa('0x5d'),'GROUP_CONCAT DESC':_0xb5fa('0x5e')};var _0x2b9a45={'SEC_TO_TIME':_0xb5fa('0x5f'),'DATE':_0xb5fa('0x60'),'HOUR':_0xb5fa('0x61'),'ROUND':_0xb5fa('0x62'),'UNIX_TIMESTAMP':_0xb5fa('0x63')};var _0x1c24e3=function(_0xfb88cc){return!_[_0xb5fa('0x64')]([_0xb5fa('0x65'),_0xb5fa('0x66'),_0xb5fa('0x67'),_0xb5fa('0x68')],_0xfb88cc);};var _0x41cce9=function(_0x23fb01){if(!_0x23fb01||!_0x23fb01[_0xb5fa('0x69')][_0xb5fa('0x39')]){return'';}for(var _0x421a93='(',_0x36fc0f=0x0;_0x36fc0f<_0x23fb01['rules'][_0xb5fa('0x39')];_0x36fc0f+=0x1){_0x36fc0f>0x0&&(_0x421a93+='\x20'+_0x23fb01[_0xb5fa('0x6a')]+'\x20');_0x421a93+=_0x23fb01[_0xb5fa('0x69')][_0x36fc0f]['group']?_0x41cce9(_0x23fb01[_0xb5fa('0x69')][_0x36fc0f][_0xb5fa('0x6b')]):_0x23fb01['rules'][_0x36fc0f][_0xb5fa('0x6c')]+'\x20'+_0x23fb01[_0xb5fa('0x69')][_0x36fc0f][_0xb5fa('0x6d')]+(_0x1c24e3(_0x23fb01['rules'][_0x36fc0f]['condition'])?'\x20'+_0x23fb01[_0xb5fa('0x69')][_0x36fc0f][_0xb5fa('0x6e')]:'');}return _0x421a93+')';};var _0x432f04={'where':{'id':_0x5caf84['params']['id']}},_0x57d8b7,_0x597206,_0x30d53b,_0x199555,_0x12b0a2;_0x432f04=_['merge']({},_0x432f04,_0x5caf84['options']);return db[_0xb5fa('0x31')][_0xb5fa('0x49')](_0x432f04)[_0xb5fa('0x25')](function(_0x4ce1bd){if(_0x4ce1bd){_0x57d8b7=_0x4ce1bd;return _0x4ce1bd[_0xb5fa('0x6f')]();}return null;})[_0xb5fa('0x25')](function(_0x13ef3a){if(_0x13ef3a){if(!_0x13ef3a[_0xb5fa('0x39')]){throw new db[(_0xb5fa('0x70'))][(_0xb5fa('0x71'))](_0xb5fa('0x72'),0x193);}_0x597206=_0x13ef3a;return db[_0xb5fa('0x73')][_0xb5fa('0x45')]({'raw':!![]});}return null;})[_0xb5fa('0x25')](function(_0x3a1db9){if(_0x3a1db9){_0x30d53b=_[_0xb5fa('0x74')](_0x3a1db9,'id');var _0xecdff3;var _0x38faa6=squel[_0xb5fa('0x75')]();_0x38faa6['from'](_0x57d8b7[_0xb5fa('0x76')]);for(var _0x5a6f74=0x0;_0x5a6f74<_0x597206[_0xb5fa('0x39')];_0x5a6f74+=0x1){_0xecdff3=_0x597206[_0x5a6f74][_0xb5fa('0x77')]?_0x30d53b[_0x597206[_0x5a6f74][_0xb5fa('0x77')]][_0xb5fa('0x78')]:_0x597206[_0x5a6f74][_0xb5fa('0x6c')];_0xecdff3=_0x597206[_0x5a6f74]['function']?_[_0xb5fa('0x79')](_0x4f82f0[_0x597206[_0x5a6f74]['function']],'%s',_0xecdff3):_0xecdff3;_0xecdff3=_0x597206[_0x5a6f74][_0xb5fa('0x7a')]?_[_0xb5fa('0x79')](_0x2b9a45[_0x597206[_0x5a6f74][_0xb5fa('0x7a')]],'%s',_0xecdff3):_0xecdff3;if(_0x597206[_0x5a6f74][_0xb5fa('0x7b')]){_0x38faa6['group'](_0xecdff3);}_0x597206[_0x5a6f74]['orderBy']&&_0x38faa6['order'](_0xecdff3,_0x597206[_0x5a6f74][_0xb5fa('0x7c')]===_0xb5fa('0x7d')?![]:!![]);_0x38faa6[_0xb5fa('0x6c')](_0xecdff3,_0x597206[_0x5a6f74][_0xb5fa('0x7e')]||_0xecdff3);}if(_0x57d8b7[_0xb5fa('0x7f')]){_0x57d8b7[_0xb5fa('0x7f')]=JSON['parse'](_0x57d8b7[_0xb5fa('0x7f')]);for(var _0x5c08e1=0x0;_0x5c08e1<_0x57d8b7['joins'][_0xb5fa('0x39')];_0x5c08e1+=0x1){if(_0x57d8b7['joins'][_0x5c08e1]['type']&&_['includes'](_0x1572fb,_0x57d8b7[_0xb5fa('0x7f')][_0x5c08e1]['type'])&&_0x57d8b7[_0xb5fa('0x7f')][_0x5c08e1][_0xb5fa('0x80')]&&_0x57d8b7[_0xb5fa('0x7f')][_0x5c08e1]['foreignTable']&&_0x57d8b7['joins'][_0x5c08e1][_0xb5fa('0x81')]){_0x38faa6[_0x57d8b7[_0xb5fa('0x7f')][_0x5c08e1]['type']](_0x57d8b7[_0xb5fa('0x7f')][_0x5c08e1][_0xb5fa('0x82')],null,util[_0xb5fa('0x7a')](_0xb5fa('0x83'),_0x57d8b7['table'],_0x57d8b7[_0xb5fa('0x7f')][_0x5c08e1][_0xb5fa('0x80')],_0x57d8b7[_0xb5fa('0x7f')][_0x5c08e1][_0xb5fa('0x82')],_0x57d8b7[_0xb5fa('0x7f')][_0x5c08e1][_0xb5fa('0x81')]));}}}if(_0x57d8b7[_0xb5fa('0x84')]){_0x57d8b7['conditions']=JSON[_0xb5fa('0x85')](_0x57d8b7['conditions']);_0x38faa6[_0xb5fa('0x3d')](_0x41cce9(_0x57d8b7[_0xb5fa('0x84')]['group']));}_0x12b0a2=_0x38faa6[_0xb5fa('0x86')]();_0x38faa6[_0xb5fa('0x1d')](_0x367f7a);_0x38faa6[_0xb5fa('0x20')](0x0);logger[_0xb5fa('0x87')](_0xb5fa('0x88'),_0x38faa6[_0xb5fa('0x89')]());return dbH[_0xb5fa('0x8a')][_0xb5fa('0x3c')](_0x38faa6['toString'](),{'type':dbH[_0xb5fa('0x8a')][_0xb5fa('0x8b')][_0xb5fa('0x8c')]});}})[_0xb5fa('0x25')](respondWithResult(_0x441c41,null))['catch'](handleError(_0x441c41,null));};function runReport(_0x593386,_0x47d72b,_0x5557a3){var _0x1c60bd=_0x47d72b[_0xb5fa('0x2d')];var _0xff504d=0xa;var _0x188e66=['join','left_join',_0xb5fa('0x56'),'cross_join'];var _0x32eebd={'SUM':_0xb5fa('0x58'),'COUNT':_0xb5fa('0x59'),'COUNT DISTINCT':_0xb5fa('0x8d'),'MAX':'MAX(%s)','MIN':_0xb5fa('0x5b'),'AVG':'AVG(%s)','GROUP_CONCAT':_0xb5fa('0x5c'),'GROUP_CONCAT ASC':_0xb5fa('0x5d'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x5e6852={'SEC_TO_TIME':_0xb5fa('0x5f'),'DATE':_0xb5fa('0x60'),'HOUR':_0xb5fa('0x61'),'ROUND':_0xb5fa('0x62'),'UNIX_TIMESTAMP':_0xb5fa('0x63')};var _0xa7fd3b=function(_0x42e210){return!_[_0xb5fa('0x64')]([_0xb5fa('0x65'),_0xb5fa('0x66'),_0xb5fa('0x67'),_0xb5fa('0x68')],_0x42e210);};var _0x86dfe9=function(_0x53c7b5){if(!_0x53c7b5||!_0x53c7b5['rules'][_0xb5fa('0x39')]){return'';}for(var _0x52384b='(',_0x1cb113=0x0;_0x1cb113<_0x53c7b5[_0xb5fa('0x69')]['length'];_0x1cb113+=0x1){_0x1cb113>0x0&&(_0x52384b+='\x20'+_0x53c7b5[_0xb5fa('0x6a')]+'\x20');_0x52384b+=_0x53c7b5[_0xb5fa('0x69')][_0x1cb113]['group']?_0x86dfe9(_0x53c7b5[_0xb5fa('0x69')][_0x1cb113][_0xb5fa('0x6b')]):_0x53c7b5['rules'][_0x1cb113][_0xb5fa('0x6c')]+'\x20'+_0x53c7b5[_0xb5fa('0x69')][_0x1cb113][_0xb5fa('0x6d')]+(_0xa7fd3b(_0x53c7b5['rules'][_0x1cb113]['condition'])?'\x20'+_0x53c7b5[_0xb5fa('0x69')][_0x1cb113][_0xb5fa('0x6e')]:'');}return _0x52384b+')';};var _0x3b5e1d={'where':{'id':_0x593386['id']}},_0x3d18a9,_0x397830,_0x234d9d,_0x10222c,_0x1eec65;_0x3b5e1d=_[_0xb5fa('0x42')]({},_0x3b5e1d,_0x5557a3);return db[_0xb5fa('0x31')]['find'](_0x3b5e1d)['then'](function(_0x3c5563){if(_0x3c5563){_0x3d18a9=_0x3c5563;return _0x3c5563[_0xb5fa('0x6f')]();}return null;})[_0xb5fa('0x25')](function(_0x18498d){if(_0x18498d){if(!_0x18498d['length']){throw new db[(_0xb5fa('0x70'))][(_0xb5fa('0x71'))](_0xb5fa('0x72'),0x193);}_0x397830=_0x18498d;return db['AnalyticMetric'][_0xb5fa('0x45')]({'raw':!![]});}return null;})[_0xb5fa('0x25')](function(_0x109dd9){if(_0x109dd9){_0x234d9d=_[_0xb5fa('0x74')](_0x109dd9,'id');var _0x5ba2e7;var _0x1175da=squel[_0xb5fa('0x75')]();_0x1175da[_0xb5fa('0x8e')](_0x3d18a9[_0xb5fa('0x76')]);for(var _0x19717a=0x0;_0x19717a<_0x397830[_0xb5fa('0x39')];_0x19717a+=0x1){_0x5ba2e7=_0x397830[_0x19717a][_0xb5fa('0x77')]?_0x234d9d[_0x397830[_0x19717a][_0xb5fa('0x77')]][_0xb5fa('0x78')]:_0x397830[_0x19717a][_0xb5fa('0x6c')];_0x5ba2e7=_0x397830[_0x19717a][_0xb5fa('0x8f')]?_[_0xb5fa('0x79')](_0x32eebd[_0x397830[_0x19717a][_0xb5fa('0x8f')]],'%s',_0x5ba2e7):_0x5ba2e7;_0x5ba2e7=_0x397830[_0x19717a][_0xb5fa('0x7a')]?_[_0xb5fa('0x79')](_0x5e6852[_0x397830[_0x19717a]['format']],'%s',_0x5ba2e7):_0x5ba2e7;if(_0x397830[_0x19717a][_0xb5fa('0x7b')]){_0x1175da[_0xb5fa('0x6b')](_0x5ba2e7);}_0x397830[_0x19717a][_0xb5fa('0x7c')]&&_0x1175da[_0xb5fa('0x90')](_0x5ba2e7,_0x397830[_0x19717a][_0xb5fa('0x7c')]===_0xb5fa('0x7d')?![]:!![]);_0x1175da[_0xb5fa('0x6c')](_0x5ba2e7,_0x397830[_0x19717a][_0xb5fa('0x7e')]||_0x5ba2e7);}if(_0x3d18a9['joins']){_0x3d18a9['joins']=JSON[_0xb5fa('0x85')](_0x3d18a9['joins']);for(var _0x5d0ca8=0x0;_0x5d0ca8<_0x3d18a9[_0xb5fa('0x7f')][_0xb5fa('0x39')];_0x5d0ca8+=0x1){if(_0x3d18a9[_0xb5fa('0x7f')][_0x5d0ca8]['type']&&_[_0xb5fa('0x64')](_0x188e66,_0x3d18a9[_0xb5fa('0x7f')][_0x5d0ca8][_0xb5fa('0x33')])&&_0x3d18a9['joins'][_0x5d0ca8][_0xb5fa('0x80')]&&_0x3d18a9[_0xb5fa('0x7f')][_0x5d0ca8]['foreignTable']&&_0x3d18a9[_0xb5fa('0x7f')][_0x5d0ca8][_0xb5fa('0x81')]){_0x1175da[_0x3d18a9[_0xb5fa('0x7f')][_0x5d0ca8][_0xb5fa('0x33')]](_0x3d18a9[_0xb5fa('0x7f')][_0x5d0ca8][_0xb5fa('0x82')],null,util[_0xb5fa('0x7a')]('%s.%s\x20=\x20%s.%s',_0x3d18a9[_0xb5fa('0x76')],_0x3d18a9[_0xb5fa('0x7f')][_0x5d0ca8][_0xb5fa('0x80')],_0x3d18a9[_0xb5fa('0x7f')][_0x5d0ca8]['foreignTable'],_0x3d18a9['joins'][_0x5d0ca8][_0xb5fa('0x81')]));}}}if(_0x3d18a9[_0xb5fa('0x84')]){_0x3d18a9[_0xb5fa('0x84')]=JSON[_0xb5fa('0x85')](_0x3d18a9['conditions']);_0x1175da['where'](_0x86dfe9(_0x3d18a9['conditions']['group']));}_0x1eec65=_0x1175da[_0xb5fa('0x86')]();_0x1175da[_0xb5fa('0x1d')](_0xff504d);_0x1175da[_0xb5fa('0x20')](0x0);return;}})[_0xb5fa('0x25')](function(){if(_0x47d72b[_0xb5fa('0x91')]===_0xb5fa('0x92')){return null;}var _0x3c36a8=_[_0xb5fa('0x42')](_0x47d72b,{'name':_0x47d72b[_0xb5fa('0x93')]||_0x47d72b[_0xb5fa('0x2d')]||_0x3d18a9[_0xb5fa('0x2d')],'basename':_0x1c60bd,'savename':util['format'](_0xb5fa('0x94'),_0x47d72b[_0xb5fa('0x2d')]||_0x3d18a9['name'],require(_0xb5fa('0x95'))[_0xb5fa('0x96')](0x4),_0x47d72b['output']||_0xb5fa('0x97')),'reportId':_0x3d18a9['id'],'reportType':_0xb5fa('0x98')});return db[_0xb5fa('0x99')][_0xb5fa('0x4a')](_0x3c36a8,{'raw':!![]});})[_0xb5fa('0x25')](function(_0x2b449a){if(_0x3d18a9[_0xb5fa('0x76')]===_0xb5fa('0x9a')){_0x1eec65[_0xb5fa('0x3d')](_0x3d18a9['table']+_0xb5fa('0x9b'),_0x47d72b[_0xb5fa('0x9c')],_0x47d72b[_0xb5fa('0x9d')]);}else{_0x1eec65[_0xb5fa('0x3d')](_0x3d18a9[_0xb5fa('0x76')]+_0xb5fa('0x9e'),_0x47d72b[_0xb5fa('0x9c')],_0x47d72b[_0xb5fa('0x9d')]);}if(_0x2b449a){logger['info'](_0xb5fa('0x9f'),_0x1eec65['toString']());require(_0xb5fa('0xa0'))[_0xb5fa('0xa1')](path[_0xb5fa('0x54')](__dirname,_0xb5fa('0xa2'),_0x2b449a[_0xb5fa('0x91')]),[_0x2b449a['id'],_0x1eec65[_0xb5fa('0x89')](),path[_0xb5fa('0x54')](__dirname,_0xb5fa('0xa3'),_0x2b449a[_0xb5fa('0xa4')]),_0x1c60bd]);return _0x2b449a;}else{var _0x4bb9b4=squel['select']();_0x4bb9b4[_0xb5fa('0x8e')]('('+_0x1eec65[_0xb5fa('0x89')]()+')',_0xb5fa('0xa5'));_0x4bb9b4[_0xb5fa('0x6c')]('COUNT(*)',_0xb5fa('0x1f'));_0x1eec65['limit'](_0x47d72b[_0xb5fa('0x1d')]||_0xff504d);_0x1eec65[_0xb5fa('0x20')](_0x47d72b['offset']||0x0);return dbH[_0xb5fa('0x8a')]['query'](_0x4bb9b4[_0xb5fa('0x89')](),{'type':dbH['sequelize'][_0xb5fa('0x8b')][_0xb5fa('0x8c')]})[_0xb5fa('0x25')](function(_0x70e4ae){if(!_0x70e4ae[_0xb5fa('0x39')]){_0x10222c=0x0;}else{_0x10222c=_0x70e4ae[0x0][_0xb5fa('0x1f')]||0x0;}return dbH[_0xb5fa('0x8a')][_0xb5fa('0x3c')](_0x1eec65[_0xb5fa('0x89')](),{'type':dbH[_0xb5fa('0x8a')][_0xb5fa('0x8b')]['SELECT']});})[_0xb5fa('0x25')](function(_0x284b34){return{'rows':_0x284b34||[],'count':_0x10222c};});}});}exports[_0xb5fa('0xa6')]=function(_0x497931,_0x2145d8){return runReport(_0x497931[_0xb5fa('0xa7')],_0x497931[_0xb5fa('0x3c')],_0x497931[_0xb5fa('0x43')])[_0xb5fa('0x25')](respondWithResult(_0x2145d8,null))[_0xb5fa('0x47')](handleError(_0x2145d8,null));};exports[_0xb5fa('0xa8')]=runReport;exports[_0xb5fa('0x3c')]=function(_0x59fd75,_0x245ee1){var _0x5c1e1f=0xa;var _0x3ba723=[_0xb5fa('0x54'),_0xb5fa('0x55'),_0xb5fa('0x56'),_0xb5fa('0x57')];var _0x105c0f={'SUM':_0xb5fa('0x58'),'COUNT':_0xb5fa('0x59'),'COUNT DISTINCT':_0xb5fa('0x8d'),'MAX':_0xb5fa('0x5a'),'MIN':_0xb5fa('0x5b'),'AVG':_0xb5fa('0xa9'),'GROUP_CONCAT':_0xb5fa('0x5c'),'GROUP_CONCAT ASC':_0xb5fa('0x5d'),'GROUP_CONCAT DESC':_0xb5fa('0x5e')};var _0x41e086={'SEC_TO_TIME':_0xb5fa('0x5f'),'DATE':'DATE(%s)','HOUR':_0xb5fa('0x61'),'ROUND':_0xb5fa('0x62'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0xd34c31=function(_0x2e614e){return!_['includes'](['IS\x20NULL','IS\x20NOT\x20NULL',_0xb5fa('0x67'),_0xb5fa('0x68')],_0x2e614e);};var _0x1aae82=function(_0x474bb){if(!_0x474bb||!_0x474bb[_0xb5fa('0x69')][_0xb5fa('0x39')]){return'';}for(var _0x17ae50='(',_0x51c9ba=0x0;_0x51c9ba<_0x474bb['rules']['length'];_0x51c9ba+=0x1){_0x51c9ba>0x0&&(_0x17ae50+='\x20'+_0x474bb[_0xb5fa('0x6a')]+'\x20');_0x17ae50+=_0x474bb['rules'][_0x51c9ba]['group']?_0x1aae82(_0x474bb[_0xb5fa('0x69')][_0x51c9ba]['group']):_0x474bb[_0xb5fa('0x69')][_0x51c9ba][_0xb5fa('0x6c')]+'\x20'+_0x474bb[_0xb5fa('0x69')][_0x51c9ba][_0xb5fa('0x6d')]+(_0xd34c31(_0x474bb[_0xb5fa('0x69')][_0x51c9ba]['condition'])?'\x20'+_0x474bb[_0xb5fa('0x69')][_0x51c9ba][_0xb5fa('0x6e')]:'');}return _0x17ae50+')';};var _0x2fe715={'where':{'id':_0x59fd75[_0xb5fa('0xa7')]['id']}},_0x3c5ac4,_0x23b70f,_0x488818,_0x15b228,_0x42fd84;_0x2fe715=_[_0xb5fa('0x42')]({},_0x2fe715,_0x59fd75[_0xb5fa('0x43')]);return db[_0xb5fa('0x31')]['find'](_0x2fe715)[_0xb5fa('0x25')](function(_0x390043){if(_0x390043){_0x3c5ac4=_0x390043;return _0x390043[_0xb5fa('0x6f')]();}return null;})[_0xb5fa('0x25')](function(_0x32c191){if(_0x32c191){if(!_0x32c191[_0xb5fa('0x39')]){throw new db[(_0xb5fa('0x70'))][(_0xb5fa('0x71'))](_0xb5fa('0x72'),0x193);}_0x23b70f=_0x32c191;return db[_0xb5fa('0x73')][_0xb5fa('0x45')]({'raw':!![]});}return null;})[_0xb5fa('0x25')](function(_0x1d307c){if(_0x1d307c){_0x488818=_[_0xb5fa('0x74')](_0x1d307c,'id');var _0x3347eb;var _0x349e0b=squel[_0xb5fa('0x75')]();_0x349e0b[_0xb5fa('0x8e')](_0x3c5ac4[_0xb5fa('0x76')]);for(var _0x2b1c3f=0x0;_0x2b1c3f<_0x23b70f[_0xb5fa('0x39')];_0x2b1c3f+=0x1){_0x3347eb=_0x23b70f[_0x2b1c3f][_0xb5fa('0x77')]?_0x488818[_0x23b70f[_0x2b1c3f]['MetricId']]['metric']:_0x23b70f[_0x2b1c3f][_0xb5fa('0x6c')];_0x3347eb=_0x23b70f[_0x2b1c3f][_0xb5fa('0x8f')]?_[_0xb5fa('0x79')](_0x105c0f[_0x23b70f[_0x2b1c3f][_0xb5fa('0x8f')]],'%s',_0x3347eb):_0x3347eb;_0x3347eb=_0x23b70f[_0x2b1c3f][_0xb5fa('0x7a')]?_[_0xb5fa('0x79')](_0x41e086[_0x23b70f[_0x2b1c3f]['format']],'%s',_0x3347eb):_0x3347eb;if(_0x23b70f[_0x2b1c3f]['groupBy']){_0x349e0b['group'](_0x3347eb);}_0x23b70f[_0x2b1c3f][_0xb5fa('0x7c')]&&_0x349e0b[_0xb5fa('0x90')](_0x3347eb,_0x23b70f[_0x2b1c3f]['orderBy']===_0xb5fa('0x7d')?![]:!![]);_0x349e0b[_0xb5fa('0x6c')](_0x3347eb,_0x23b70f[_0x2b1c3f]['alias']||_0x3347eb);}if(_0x3c5ac4[_0xb5fa('0x7f')]){_0x3c5ac4[_0xb5fa('0x7f')]=JSON[_0xb5fa('0x85')](_0x3c5ac4[_0xb5fa('0x7f')]);for(var _0x10dbdf=0x0;_0x10dbdf<_0x3c5ac4[_0xb5fa('0x7f')][_0xb5fa('0x39')];_0x10dbdf+=0x1){if(_0x3c5ac4[_0xb5fa('0x7f')][_0x10dbdf]['type']&&_[_0xb5fa('0x64')](_0x3ba723,_0x3c5ac4['joins'][_0x10dbdf][_0xb5fa('0x33')])&&_0x3c5ac4[_0xb5fa('0x7f')][_0x10dbdf][_0xb5fa('0x80')]&&_0x3c5ac4[_0xb5fa('0x7f')][_0x10dbdf]['foreignTable']&&_0x3c5ac4[_0xb5fa('0x7f')][_0x10dbdf][_0xb5fa('0x81')]){_0x349e0b[_0x3c5ac4[_0xb5fa('0x7f')][_0x10dbdf][_0xb5fa('0x33')]](_0x3c5ac4['joins'][_0x10dbdf][_0xb5fa('0x82')],null,util[_0xb5fa('0x7a')](_0xb5fa('0x83'),_0x3c5ac4[_0xb5fa('0x76')],_0x3c5ac4[_0xb5fa('0x7f')][_0x10dbdf][_0xb5fa('0x80')],_0x3c5ac4[_0xb5fa('0x7f')][_0x10dbdf]['foreignTable'],_0x3c5ac4[_0xb5fa('0x7f')][_0x10dbdf]['foreignKey']));}}}if(_0x3c5ac4[_0xb5fa('0x84')]){_0x3c5ac4[_0xb5fa('0x84')]=JSON[_0xb5fa('0x85')](_0x3c5ac4[_0xb5fa('0x84')]);_0x349e0b[_0xb5fa('0x3d')](_0x1aae82(_0x3c5ac4[_0xb5fa('0x84')][_0xb5fa('0x6b')]));}_0x42fd84=_0x349e0b['clone']();_0x349e0b['limit'](_0x5c1e1f);_0x349e0b[_0xb5fa('0x20')](0x0);logger[_0xb5fa('0x87')](_0xb5fa('0x88'),_0x349e0b[_0xb5fa('0x89')]());return dbH[_0xb5fa('0x8a')][_0xb5fa('0x3c')](_0x349e0b[_0xb5fa('0x89')](),{'type':dbH[_0xb5fa('0x8a')]['QueryTypes'][_0xb5fa('0x8c')]});}})[_0xb5fa('0x25')](function(){return{'sql':_0x42fd84[_0xb5fa('0x89')]()};})[_0xb5fa('0x25')](respondWithResult(_0x245ee1,null))[_0xb5fa('0x47')](handleError(_0x245ee1,null));};
\ No newline at end of file
+var _0x1967=['conditions','clone','debug','Limited\x20Query:','toString','sequelize','QueryTypes','SELECT','SUM(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','IS\x20NOT\x20NULL','table','web','%s-%s.%s','randomstring','output','default','AnalyticExtractedReport','cdr','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','endDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','info','fork','../../components/export/','../../files/reports','savename','countTable','COUNT(*)','runReport','select','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','dbH','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','reject','update','then','destroy','get','stack','name','send','index','map','AnalyticDefaultReport','rawAttributes','fieldName','type','key','model','keys','filters','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','where','merge','VIRTUAL','filter','options','includeAll','findAll','rows','show','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Reports','UserProfileSection','find','userProfileId','autoAssociation','UserProfileResource','DefaultReports','catch','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','params','join','left_join','right_join','cross_join','COUNT(%s)','COUNT(DISTINCT\x20%s)','MAX(%s)','MIN(%s)','AVG(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','SEC_TO_TIME(%s)','DATE(%s)','HOUR(%s)','ROUND(%s)','UNIX_TIMESTAMP(%s)','includes','IS\x20NULL','IS\x20EMPTY','IS\x20NOT\x20EMPTY','rules','operator','group','field','condition','value','getFields','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','keyBy','from','MetricId','metric','function','replace','format','groupBy','orderBy','DESC','alias','joins','parse','foreignTable','%s.%s\x20=\x20%s.%s','parentKey','foreignKey'];(function(_0x5bd6e5,_0x4322d9){var _0x154cbc=function(_0x988932){while(--_0x988932){_0x5bd6e5['push'](_0x5bd6e5['shift']());}};_0x154cbc(++_0x4322d9);}(_0x1967,0x173));var _0x7196=function(_0x489bca,_0x1492d1){_0x489bca=_0x489bca-0x0;var _0x643ac6=_0x1967[_0x489bca];return _0x643ac6;};'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'];var dbH=require(_0x7196('0x1b'))[_0x7196('0x1c')];function respondWithStatusCode(_0xba707b,_0x154101){_0x154101=_0x154101||0xcc;return function(_0x4e8c4c){if(_0x4e8c4c){return _0xba707b[_0x7196('0x1d')](_0x154101);}return _0xba707b[_0x7196('0x1e')](_0x154101)[_0x7196('0x1f')]();};}function respondWithResult(_0xf098c1,_0x511aa1){_0x511aa1=_0x511aa1||0xc8;return function(_0x31c778){if(_0x31c778){return _0xf098c1['status'](_0x511aa1)[_0x7196('0x20')](_0x31c778);}};}function respondWithFilteredResult(_0x2590a6,_0xf7e97){return function(_0x3ed1ad){if(_0x3ed1ad){var _0x12dce7=typeof _0xf7e97[_0x7196('0x21')]===_0x7196('0x22')&&typeof _0xf7e97[_0x7196('0x23')]===_0x7196('0x22');var _0x32fe2b=_0x3ed1ad[_0x7196('0x24')];var _0x5b716a=_0x12dce7?0x0:_0xf7e97['offset'];var _0x448f13=_0x12dce7?_0x3ed1ad[_0x7196('0x24')]:_0xf7e97[_0x7196('0x21')]+_0xf7e97['limit'];var _0x39b944;if(_0x448f13>=_0x32fe2b){_0x448f13=_0x32fe2b;_0x39b944=0xc8;}else{_0x39b944=0xce;}_0x2590a6['status'](_0x39b944);return _0x2590a6['set'](_0x7196('0x25'),_0x5b716a+'-'+_0x448f13+'/'+_0x32fe2b)[_0x7196('0x20')](_0x3ed1ad);}return null;};}function patchUpdates(_0x8dee9d){return function(_0x4ddf78){try{jsonpatch['apply'](_0x4ddf78,_0x8dee9d,!![]);}catch(_0x38d291){return BPromise[_0x7196('0x26')](_0x38d291);}return _0x4ddf78['save']();};}function saveUpdates(_0x18649b,_0x27ff84){return function(_0x6e22e5){if(_0x6e22e5){return _0x6e22e5[_0x7196('0x27')](_0x18649b)[_0x7196('0x28')](function(_0x549f34){return _0x549f34;});}return null;};}function removeEntity(_0x3f8178,_0x520d01){return function(_0x3ce9a0){if(_0x3ce9a0){return _0x3ce9a0[_0x7196('0x29')]()[_0x7196('0x28')](function(){var _0xa69810=_0x3ce9a0[_0x7196('0x2a')]({'plain':!![]});var _0x43f6a2='DefaultReports';return db['UserProfileResource'][_0x7196('0x29')]({'where':{'type':_0x43f6a2,'resourceId':_0xa69810['id']}})[_0x7196('0x28')](function(){return _0x3ce9a0;});})[_0x7196('0x28')](function(){_0x3f8178['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x41cfd2,_0x162cfc){return function(_0x675e64){if(!_0x675e64){_0x41cfd2['sendStatus'](0x194);}return _0x675e64;};}function handleError(_0x35eef9,_0x4ecea1){_0x4ecea1=_0x4ecea1||0x1f4;return function(_0x4fd339){logger['error'](_0x4fd339[_0x7196('0x2b')]);if(_0x4fd339[_0x7196('0x2c')]){delete _0x4fd339[_0x7196('0x2c')];}_0x35eef9['status'](_0x4ecea1)[_0x7196('0x2d')](_0x4fd339);};}exports[_0x7196('0x2e')]=function(_0x2f9583,_0xf999e9){var _0x50c386={},_0x39710d={},_0x429160={'count':0x0,'rows':[]};var _0xd07f22=_[_0x7196('0x2f')](db[_0x7196('0x30')][_0x7196('0x31')],function(_0x15c5f0){return{'name':_0x15c5f0[_0x7196('0x32')],'type':_0x15c5f0[_0x7196('0x33')][_0x7196('0x34')]};});_0x39710d[_0x7196('0x35')]=_['map'](_0xd07f22,_0x7196('0x2c'));_0x39710d['query']=_[_0x7196('0x36')](_0x2f9583['query']);_0x39710d[_0x7196('0x37')]=_[_0x7196('0x38')](_0x39710d['model'],_0x39710d[_0x7196('0x39')]);_0x50c386[_0x7196('0x3a')]=_[_0x7196('0x38')](_0x39710d[_0x7196('0x35')],qs[_0x7196('0x3b')](_0x2f9583['query'][_0x7196('0x3b')]));_0x50c386[_0x7196('0x3a')]=_0x50c386[_0x7196('0x3a')][_0x7196('0x3c')]?_0x50c386[_0x7196('0x3a')]:_0x39710d[_0x7196('0x35')];if(!_0x2f9583['query'][_0x7196('0x3d')](_0x7196('0x3e'))){_0x50c386[_0x7196('0x23')]=qs['limit'](_0x2f9583[_0x7196('0x39')][_0x7196('0x23')]);_0x50c386[_0x7196('0x21')]=qs[_0x7196('0x21')](_0x2f9583[_0x7196('0x39')][_0x7196('0x21')]);}_0x50c386[_0x7196('0x3f')]=qs[_0x7196('0x40')](_0x2f9583[_0x7196('0x39')][_0x7196('0x40')]);_0x50c386['where']=qs[_0x7196('0x37')](_[_0x7196('0x41')](_0x2f9583['query'],_0x39710d[_0x7196('0x37')]),_0xd07f22);if(_0x2f9583['query']['filter']){_0x50c386[_0x7196('0x42')]=_[_0x7196('0x43')](_0x50c386['where'],{'$or':_['map'](_0xd07f22,function(_0x1bad95){if(_0x1bad95[_0x7196('0x33')]!==_0x7196('0x44')){var _0x4c2341={};_0x4c2341[_0x1bad95[_0x7196('0x2c')]]={'$like':'%'+_0x2f9583[_0x7196('0x39')][_0x7196('0x45')]+'%'};return _0x4c2341;}})});}_0x50c386=_[_0x7196('0x43')]({},_0x50c386,_0x2f9583[_0x7196('0x46')]);var _0x428d76={'where':_0x50c386[_0x7196('0x42')]};return db[_0x7196('0x30')]['count'](_0x428d76)[_0x7196('0x28')](function(_0xa852e1){_0x429160['count']=_0xa852e1;if(_0x2f9583[_0x7196('0x39')][_0x7196('0x47')]){_0x50c386['include']=[{'all':!![]}];}return db[_0x7196('0x30')][_0x7196('0x48')](_0x50c386);})[_0x7196('0x28')](function(_0x5749e2){_0x429160[_0x7196('0x49')]=_0x5749e2;return _0x429160;})[_0x7196('0x28')](respondWithFilteredResult(_0xf999e9,_0x50c386))['catch'](handleError(_0xf999e9,null));};exports[_0x7196('0x4a')]=function(_0x1a7052,_0x4f0c6c){var _0x335e6f={'raw':!![],'where':{'id':_0x1a7052['params']['id']}},_0x53a5e6={};_0x53a5e6['model']=_['keys'](db['AnalyticDefaultReport'][_0x7196('0x31')]);_0x53a5e6['query']=_[_0x7196('0x36')](_0x1a7052[_0x7196('0x39')]);_0x53a5e6[_0x7196('0x37')]=_[_0x7196('0x38')](_0x53a5e6['model'],_0x53a5e6[_0x7196('0x39')]);_0x335e6f['attributes']=_[_0x7196('0x38')](_0x53a5e6[_0x7196('0x35')],qs[_0x7196('0x3b')](_0x1a7052['query'][_0x7196('0x3b')]));_0x335e6f[_0x7196('0x3a')]=_0x335e6f[_0x7196('0x3a')]['length']?_0x335e6f['attributes']:_0x53a5e6[_0x7196('0x35')];if(_0x1a7052['query'][_0x7196('0x47')]){_0x335e6f['include']=[{'all':!![]}];}_0x335e6f=_['merge']({},_0x335e6f,_0x1a7052[_0x7196('0x46')]);return db['AnalyticDefaultReport']['find'](_0x335e6f)['then'](handleEntityNotFound(_0x4f0c6c,null))[_0x7196('0x28')](respondWithResult(_0x4f0c6c,null))['catch'](handleError(_0x4f0c6c,null));};exports['create']=function(_0x28591e,_0x182c8b){return db[_0x7196('0x30')][_0x7196('0x4b')](_0x28591e['body'],{})[_0x7196('0x28')](function(_0x564688){var _0x36844f=_0x28591e[_0x7196('0x4c')]['get']({'plain':!![]});if(!_0x36844f)throw new Error(_0x7196('0x4d'));if(_0x36844f[_0x7196('0x4e')]===_0x7196('0x4c')){var _0x4fa18f=_0x564688[_0x7196('0x2a')]({'plain':!![]});var _0x5d51aa=_0x7196('0x4f');return db[_0x7196('0x50')][_0x7196('0x51')]({'where':{'name':_0x5d51aa,'userProfileId':_0x36844f[_0x7196('0x52')]},'raw':!![]})[_0x7196('0x28')](function(_0x19733a){if(_0x19733a&&_0x19733a[_0x7196('0x53')]===0x0){return db[_0x7196('0x54')]['create']({'name':_0x4fa18f['name'],'resourceId':_0x4fa18f['id'],'type':_0x7196('0x55'),'sectionId':_0x19733a['id']},{})[_0x7196('0x28')](function(){return _0x564688;});}else{return _0x564688;}})[_0x7196('0x56')](function(_0xe4b032){logger['error'](_0x7196('0x57'),_0xe4b032);throw _0xe4b032;});}return _0x564688;})[_0x7196('0x28')](respondWithResult(_0x182c8b,0xc9))[_0x7196('0x56')](handleError(_0x182c8b,null));};exports[_0x7196('0x27')]=function(_0x9fcfd4,_0x3177c2){if(_0x9fcfd4[_0x7196('0x58')]['id']){delete _0x9fcfd4[_0x7196('0x58')]['id'];}return db[_0x7196('0x30')][_0x7196('0x51')]({'where':{'id':_0x9fcfd4[_0x7196('0x59')]['id']}})['then'](handleEntityNotFound(_0x3177c2,null))[_0x7196('0x28')](saveUpdates(_0x9fcfd4[_0x7196('0x58')],null))[_0x7196('0x28')](respondWithResult(_0x3177c2,null))['catch'](handleError(_0x3177c2,null));};exports[_0x7196('0x29')]=function(_0x5ca1ca,_0x34407d){return db[_0x7196('0x30')][_0x7196('0x51')]({'where':{'id':_0x5ca1ca[_0x7196('0x59')]['id']}})[_0x7196('0x28')](handleEntityNotFound(_0x34407d,null))['then'](removeEntity(_0x34407d,null))[_0x7196('0x56')](handleError(_0x34407d,null));};exports['preview']=function(_0x4be36d,_0x5b9824){var _0x1bc358=0xa;var _0x3be180=[_0x7196('0x5a'),_0x7196('0x5b'),_0x7196('0x5c'),_0x7196('0x5d')];var _0x2d8b3d={'SUM':'SUM(%s)','COUNT':_0x7196('0x5e'),'COUNT DISTINCT':_0x7196('0x5f'),'MAX':_0x7196('0x60'),'MIN':_0x7196('0x61'),'AVG':_0x7196('0x62'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0x7196('0x63')};var _0x1c7eb2={'SEC_TO_TIME':_0x7196('0x64'),'DATE':_0x7196('0x65'),'HOUR':_0x7196('0x66'),'ROUND':_0x7196('0x67'),'UNIX_TIMESTAMP':_0x7196('0x68')};var _0x43ee13=function(_0x13e9d0){return!_[_0x7196('0x69')]([_0x7196('0x6a'),'IS\x20NOT\x20NULL',_0x7196('0x6b'),_0x7196('0x6c')],_0x13e9d0);};var _0x27d5d7=function(_0x33f43b){if(!_0x33f43b||!_0x33f43b['rules'][_0x7196('0x3c')]){return'';}for(var _0x204c3a='(',_0x1f3acc=0x0;_0x1f3acc<_0x33f43b[_0x7196('0x6d')][_0x7196('0x3c')];_0x1f3acc+=0x1){_0x1f3acc>0x0&&(_0x204c3a+='\x20'+_0x33f43b[_0x7196('0x6e')]+'\x20');_0x204c3a+=_0x33f43b[_0x7196('0x6d')][_0x1f3acc]['group']?_0x27d5d7(_0x33f43b[_0x7196('0x6d')][_0x1f3acc][_0x7196('0x6f')]):_0x33f43b[_0x7196('0x6d')][_0x1f3acc][_0x7196('0x70')]+'\x20'+_0x33f43b['rules'][_0x1f3acc][_0x7196('0x71')]+(_0x43ee13(_0x33f43b[_0x7196('0x6d')][_0x1f3acc][_0x7196('0x71')])?'\x20'+_0x33f43b[_0x7196('0x6d')][_0x1f3acc][_0x7196('0x72')]:'');}return _0x204c3a+')';};var _0x37c6be={'where':{'id':_0x4be36d['params']['id']}},_0x57065,_0x517dfb,_0x56b2eb,_0x56955e,_0x72f6f1;_0x37c6be=_[_0x7196('0x43')]({},_0x37c6be,_0x4be36d[_0x7196('0x46')]);return db[_0x7196('0x30')][_0x7196('0x51')](_0x37c6be)[_0x7196('0x28')](function(_0x30d44f){if(_0x30d44f){_0x57065=_0x30d44f;return _0x30d44f[_0x7196('0x73')]();}return null;})[_0x7196('0x28')](function(_0x3881a5){if(_0x3881a5){if(!_0x3881a5['length']){throw new db['Sequelize'][(_0x7196('0x74'))](_0x7196('0x75'),0x193);}_0x517dfb=_0x3881a5;return db[_0x7196('0x76')][_0x7196('0x48')]({'raw':!![]});}return null;})[_0x7196('0x28')](function(_0x45e21f){if(_0x45e21f){_0x56b2eb=_[_0x7196('0x77')](_0x45e21f,'id');var _0x2f36f8;var _0x4cc5e3=squel['select']();_0x4cc5e3[_0x7196('0x78')](_0x57065['table']);for(var _0x30d114=0x0;_0x30d114<_0x517dfb['length'];_0x30d114+=0x1){_0x2f36f8=_0x517dfb[_0x30d114][_0x7196('0x79')]?_0x56b2eb[_0x517dfb[_0x30d114][_0x7196('0x79')]][_0x7196('0x7a')]:_0x517dfb[_0x30d114][_0x7196('0x70')];_0x2f36f8=_0x517dfb[_0x30d114]['function']?_['replace'](_0x2d8b3d[_0x517dfb[_0x30d114][_0x7196('0x7b')]],'%s',_0x2f36f8):_0x2f36f8;_0x2f36f8=_0x517dfb[_0x30d114]['format']?_[_0x7196('0x7c')](_0x1c7eb2[_0x517dfb[_0x30d114][_0x7196('0x7d')]],'%s',_0x2f36f8):_0x2f36f8;if(_0x517dfb[_0x30d114][_0x7196('0x7e')]){_0x4cc5e3[_0x7196('0x6f')](_0x2f36f8);}_0x517dfb[_0x30d114][_0x7196('0x7f')]&&_0x4cc5e3[_0x7196('0x3f')](_0x2f36f8,_0x517dfb[_0x30d114]['orderBy']===_0x7196('0x80')?![]:!![]);_0x4cc5e3[_0x7196('0x70')](_0x2f36f8,_0x517dfb[_0x30d114][_0x7196('0x81')]||_0x2f36f8);}if(_0x57065[_0x7196('0x82')]){_0x57065[_0x7196('0x82')]=JSON[_0x7196('0x83')](_0x57065[_0x7196('0x82')]);for(var _0x473c0e=0x0;_0x473c0e<_0x57065[_0x7196('0x82')][_0x7196('0x3c')];_0x473c0e+=0x1){if(_0x57065[_0x7196('0x82')][_0x473c0e][_0x7196('0x33')]&&_['includes'](_0x3be180,_0x57065[_0x7196('0x82')][_0x473c0e][_0x7196('0x33')])&&_0x57065['joins'][_0x473c0e]['parentKey']&&_0x57065[_0x7196('0x82')][_0x473c0e][_0x7196('0x84')]&&_0x57065[_0x7196('0x82')][_0x473c0e]['foreignKey']){_0x4cc5e3[_0x57065[_0x7196('0x82')][_0x473c0e]['type']](_0x57065[_0x7196('0x82')][_0x473c0e][_0x7196('0x84')],null,util['format'](_0x7196('0x85'),_0x57065['table'],_0x57065['joins'][_0x473c0e][_0x7196('0x86')],_0x57065[_0x7196('0x82')][_0x473c0e][_0x7196('0x84')],_0x57065['joins'][_0x473c0e][_0x7196('0x87')]));}}}if(_0x57065['conditions']){_0x57065[_0x7196('0x88')]=JSON[_0x7196('0x83')](_0x57065[_0x7196('0x88')]);_0x4cc5e3[_0x7196('0x42')](_0x27d5d7(_0x57065[_0x7196('0x88')]['group']));}_0x72f6f1=_0x4cc5e3[_0x7196('0x89')]();_0x4cc5e3[_0x7196('0x23')](_0x1bc358);_0x4cc5e3[_0x7196('0x21')](0x0);logger[_0x7196('0x8a')](_0x7196('0x8b'),_0x4cc5e3[_0x7196('0x8c')]());return dbH[_0x7196('0x8d')][_0x7196('0x39')](_0x4cc5e3['toString'](),{'type':dbH[_0x7196('0x8d')][_0x7196('0x8e')][_0x7196('0x8f')]});}})[_0x7196('0x28')](respondWithResult(_0x5b9824,null))['catch'](handleError(_0x5b9824,null));};function runReport(_0x1364f5,_0x2cb53c,_0x4fe2cb){var _0x2e4807=_0x2cb53c['name'];var _0xd6d8cf=0xa;var _0x5318c1=[_0x7196('0x5a'),_0x7196('0x5b'),'right_join',_0x7196('0x5d')];var _0x2b52c0={'SUM':_0x7196('0x90'),'COUNT':'COUNT(%s)','COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':_0x7196('0x60'),'MIN':'MIN(%s)','AVG':'AVG(%s)','GROUP_CONCAT':_0x7196('0x91'),'GROUP_CONCAT ASC':_0x7196('0x92'),'GROUP_CONCAT DESC':_0x7196('0x63')};var _0x509c4a={'SEC_TO_TIME':_0x7196('0x64'),'DATE':_0x7196('0x65'),'HOUR':_0x7196('0x66'),'ROUND':_0x7196('0x67'),'UNIX_TIMESTAMP':_0x7196('0x68')};var _0x26048c=function(_0x1a4d17){return!_[_0x7196('0x69')]([_0x7196('0x6a'),_0x7196('0x93'),_0x7196('0x6b'),'IS\x20NOT\x20EMPTY'],_0x1a4d17);};var _0x5acff1=function(_0x32ab6c){if(!_0x32ab6c||!_0x32ab6c['rules']['length']){return'';}for(var _0x2bfdc4='(',_0x1604fa=0x0;_0x1604fa<_0x32ab6c[_0x7196('0x6d')][_0x7196('0x3c')];_0x1604fa+=0x1){_0x1604fa>0x0&&(_0x2bfdc4+='\x20'+_0x32ab6c['operator']+'\x20');_0x2bfdc4+=_0x32ab6c['rules'][_0x1604fa][_0x7196('0x6f')]?_0x5acff1(_0x32ab6c[_0x7196('0x6d')][_0x1604fa][_0x7196('0x6f')]):_0x32ab6c[_0x7196('0x6d')][_0x1604fa]['field']+'\x20'+_0x32ab6c[_0x7196('0x6d')][_0x1604fa]['condition']+(_0x26048c(_0x32ab6c['rules'][_0x1604fa][_0x7196('0x71')])?'\x20'+_0x32ab6c[_0x7196('0x6d')][_0x1604fa][_0x7196('0x72')]:'');}return _0x2bfdc4+')';};var _0x494418={'where':{'id':_0x1364f5['id']}},_0x400aa5,_0x40d4c3,_0x1824e2,_0x30c54b,_0x10712f;_0x494418=_[_0x7196('0x43')]({},_0x494418,_0x4fe2cb);return db[_0x7196('0x30')][_0x7196('0x51')](_0x494418)['then'](function(_0x9bd2ea){if(_0x9bd2ea){_0x400aa5=_0x9bd2ea;return _0x9bd2ea[_0x7196('0x73')]();}return null;})[_0x7196('0x28')](function(_0x408760){if(_0x408760){if(!_0x408760[_0x7196('0x3c')]){throw new db['Sequelize'][(_0x7196('0x74'))](_0x7196('0x75'),0x193);}_0x40d4c3=_0x408760;return db[_0x7196('0x76')]['findAll']({'raw':!![]});}return null;})[_0x7196('0x28')](function(_0x4b98de){if(_0x4b98de){_0x1824e2=_['keyBy'](_0x4b98de,'id');var _0x1dcf93;var _0x25d323=squel['select']();_0x25d323[_0x7196('0x78')](_0x400aa5[_0x7196('0x94')]);for(var _0x48ceda=0x0;_0x48ceda<_0x40d4c3[_0x7196('0x3c')];_0x48ceda+=0x1){_0x1dcf93=_0x40d4c3[_0x48ceda][_0x7196('0x79')]?_0x1824e2[_0x40d4c3[_0x48ceda][_0x7196('0x79')]][_0x7196('0x7a')]:_0x40d4c3[_0x48ceda][_0x7196('0x70')];_0x1dcf93=_0x40d4c3[_0x48ceda][_0x7196('0x7b')]?_['replace'](_0x2b52c0[_0x40d4c3[_0x48ceda][_0x7196('0x7b')]],'%s',_0x1dcf93):_0x1dcf93;_0x1dcf93=_0x40d4c3[_0x48ceda][_0x7196('0x7d')]?_[_0x7196('0x7c')](_0x509c4a[_0x40d4c3[_0x48ceda]['format']],'%s',_0x1dcf93):_0x1dcf93;if(_0x40d4c3[_0x48ceda]['groupBy']){_0x25d323['group'](_0x1dcf93);}_0x40d4c3[_0x48ceda][_0x7196('0x7f')]&&_0x25d323[_0x7196('0x3f')](_0x1dcf93,_0x40d4c3[_0x48ceda][_0x7196('0x7f')]==='DESC'?![]:!![]);_0x25d323[_0x7196('0x70')](_0x1dcf93,_0x40d4c3[_0x48ceda]['alias']||_0x1dcf93);}if(_0x400aa5[_0x7196('0x82')]){_0x400aa5['joins']=JSON[_0x7196('0x83')](_0x400aa5[_0x7196('0x82')]);for(var _0x33d5bf=0x0;_0x33d5bf<_0x400aa5[_0x7196('0x82')][_0x7196('0x3c')];_0x33d5bf+=0x1){if(_0x400aa5[_0x7196('0x82')][_0x33d5bf][_0x7196('0x33')]&&_['includes'](_0x5318c1,_0x400aa5[_0x7196('0x82')][_0x33d5bf]['type'])&&_0x400aa5['joins'][_0x33d5bf]['parentKey']&&_0x400aa5['joins'][_0x33d5bf]['foreignTable']&&_0x400aa5[_0x7196('0x82')][_0x33d5bf][_0x7196('0x87')]){_0x25d323[_0x400aa5[_0x7196('0x82')][_0x33d5bf]['type']](_0x400aa5[_0x7196('0x82')][_0x33d5bf]['foreignTable'],null,util['format']('%s.%s\x20=\x20%s.%s',_0x400aa5[_0x7196('0x94')],_0x400aa5['joins'][_0x33d5bf][_0x7196('0x86')],_0x400aa5[_0x7196('0x82')][_0x33d5bf][_0x7196('0x84')],_0x400aa5[_0x7196('0x82')][_0x33d5bf][_0x7196('0x87')]));}}}if(_0x400aa5[_0x7196('0x88')]){_0x400aa5[_0x7196('0x88')]=JSON[_0x7196('0x83')](_0x400aa5['conditions']);_0x25d323[_0x7196('0x42')](_0x5acff1(_0x400aa5[_0x7196('0x88')][_0x7196('0x6f')]));}_0x10712f=_0x25d323['clone']();_0x25d323[_0x7196('0x23')](_0xd6d8cf);_0x25d323[_0x7196('0x21')](0x0);return;}})[_0x7196('0x28')](function(){if(_0x2cb53c['output']===_0x7196('0x95')){return null;}var _0x46a563=_[_0x7196('0x43')](_0x2cb53c,{'name':_0x2cb53c['fullPath']||_0x2cb53c[_0x7196('0x2c')]||_0x400aa5[_0x7196('0x2c')],'basename':_0x2e4807,'savename':util['format'](_0x7196('0x96'),_0x2cb53c['name']||_0x400aa5[_0x7196('0x2c')],require(_0x7196('0x97'))['generate'](0x4),_0x2cb53c[_0x7196('0x98')]||'csv'),'reportId':_0x400aa5['id'],'reportType':_0x7196('0x99')});return db[_0x7196('0x9a')][_0x7196('0x4b')](_0x46a563,{'raw':!![]});})['then'](function(_0xd9619d){if(_0x400aa5[_0x7196('0x94')]===_0x7196('0x9b')){_0x10712f[_0x7196('0x42')](_0x400aa5['table']+_0x7196('0x9c'),_0x2cb53c[_0x7196('0x9d')],_0x2cb53c[_0x7196('0x9e')]);}else{_0x10712f['where'](_0x400aa5['table']+_0x7196('0x9f'),_0x2cb53c[_0x7196('0x9d')],_0x2cb53c[_0x7196('0x9e')]);}if(_0xd9619d){logger[_0x7196('0xa0')]('Run\x20Query:',_0x10712f[_0x7196('0x8c')]());require('child_process')[_0x7196('0xa1')](path['join'](__dirname,_0x7196('0xa2'),_0xd9619d[_0x7196('0x98')]),[_0xd9619d['id'],_0x10712f[_0x7196('0x8c')](),path[_0x7196('0x5a')](__dirname,_0x7196('0xa3'),_0xd9619d[_0x7196('0xa4')]),_0x2e4807]);return _0xd9619d;}else{var _0x342fb1=squel['select']();_0x342fb1[_0x7196('0x78')]('('+_0x10712f[_0x7196('0x8c')]()+')',_0x7196('0xa5'));_0x342fb1[_0x7196('0x70')](_0x7196('0xa6'),_0x7196('0x24'));_0x10712f[_0x7196('0x23')](_0x2cb53c[_0x7196('0x23')]||_0xd6d8cf);_0x10712f['offset'](_0x2cb53c[_0x7196('0x21')]||0x0);return dbH[_0x7196('0x8d')]['query'](_0x342fb1[_0x7196('0x8c')](),{'type':dbH[_0x7196('0x8d')]['QueryTypes'][_0x7196('0x8f')]})[_0x7196('0x28')](function(_0xdf1ede){if(!_0xdf1ede[_0x7196('0x3c')]){_0x30c54b=0x0;}else{_0x30c54b=_0xdf1ede[0x0]['count']||0x0;}return dbH['sequelize'][_0x7196('0x39')](_0x10712f['toString'](),{'type':dbH[_0x7196('0x8d')][_0x7196('0x8e')][_0x7196('0x8f')]});})[_0x7196('0x28')](function(_0x2df80a){return{'rows':_0x2df80a||[],'count':_0x30c54b};});}});}exports['run']=function(_0x392e74,_0x17ba6d){return runReport(_0x392e74[_0x7196('0x59')],_0x392e74[_0x7196('0x39')],_0x392e74[_0x7196('0x46')])[_0x7196('0x28')](respondWithResult(_0x17ba6d,null))[_0x7196('0x56')](handleError(_0x17ba6d,null));};exports[_0x7196('0xa7')]=runReport;exports[_0x7196('0x39')]=function(_0x5a3c87,_0x58fb86){var _0x51da79=0xa;var _0x144613=[_0x7196('0x5a'),_0x7196('0x5b'),_0x7196('0x5c'),_0x7196('0x5d')];var _0x9055af={'SUM':_0x7196('0x90'),'COUNT':_0x7196('0x5e'),'COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':'MAX(%s)','MIN':'MIN(%s)','AVG':'AVG(%s)','GROUP_CONCAT':_0x7196('0x91'),'GROUP_CONCAT ASC':_0x7196('0x92'),'GROUP_CONCAT DESC':_0x7196('0x63')};var _0xab9595={'SEC_TO_TIME':_0x7196('0x64'),'DATE':_0x7196('0x65'),'HOUR':'HOUR(%s)','ROUND':_0x7196('0x67'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x5236a0=function(_0x520fe8){return!_['includes'](['IS\x20NULL',_0x7196('0x93'),'IS\x20EMPTY',_0x7196('0x6c')],_0x520fe8);};var _0x425a57=function(_0x302728){if(!_0x302728||!_0x302728[_0x7196('0x6d')][_0x7196('0x3c')]){return'';}for(var _0x14492e='(',_0x58df43=0x0;_0x58df43<_0x302728[_0x7196('0x6d')][_0x7196('0x3c')];_0x58df43+=0x1){_0x58df43>0x0&&(_0x14492e+='\x20'+_0x302728[_0x7196('0x6e')]+'\x20');_0x14492e+=_0x302728['rules'][_0x58df43][_0x7196('0x6f')]?_0x425a57(_0x302728[_0x7196('0x6d')][_0x58df43][_0x7196('0x6f')]):_0x302728['rules'][_0x58df43]['field']+'\x20'+_0x302728[_0x7196('0x6d')][_0x58df43][_0x7196('0x71')]+(_0x5236a0(_0x302728[_0x7196('0x6d')][_0x58df43][_0x7196('0x71')])?'\x20'+_0x302728[_0x7196('0x6d')][_0x58df43][_0x7196('0x72')]:'');}return _0x14492e+')';};var _0x1a8a5a={'where':{'id':_0x5a3c87[_0x7196('0x59')]['id']}},_0x2944e5,_0x3f9385,_0xbd94ef,_0x5d2a56,_0x2fb552;_0x1a8a5a=_['merge']({},_0x1a8a5a,_0x5a3c87[_0x7196('0x46')]);return db[_0x7196('0x30')]['find'](_0x1a8a5a)[_0x7196('0x28')](function(_0x386259){if(_0x386259){_0x2944e5=_0x386259;return _0x386259[_0x7196('0x73')]();}return null;})[_0x7196('0x28')](function(_0x1e7a64){if(_0x1e7a64){if(!_0x1e7a64[_0x7196('0x3c')]){throw new db['Sequelize']['ValidationErrorItem'](_0x7196('0x75'),0x193);}_0x3f9385=_0x1e7a64;return db['AnalyticMetric'][_0x7196('0x48')]({'raw':!![]});}return null;})[_0x7196('0x28')](function(_0x30db09){if(_0x30db09){_0xbd94ef=_['keyBy'](_0x30db09,'id');var _0x4729e1;var _0x66e1e6=squel[_0x7196('0xa8')]();_0x66e1e6[_0x7196('0x78')](_0x2944e5[_0x7196('0x94')]);for(var _0x1e2105=0x0;_0x1e2105<_0x3f9385[_0x7196('0x3c')];_0x1e2105+=0x1){_0x4729e1=_0x3f9385[_0x1e2105][_0x7196('0x79')]?_0xbd94ef[_0x3f9385[_0x1e2105][_0x7196('0x79')]]['metric']:_0x3f9385[_0x1e2105][_0x7196('0x70')];_0x4729e1=_0x3f9385[_0x1e2105][_0x7196('0x7b')]?_[_0x7196('0x7c')](_0x9055af[_0x3f9385[_0x1e2105][_0x7196('0x7b')]],'%s',_0x4729e1):_0x4729e1;_0x4729e1=_0x3f9385[_0x1e2105][_0x7196('0x7d')]?_[_0x7196('0x7c')](_0xab9595[_0x3f9385[_0x1e2105]['format']],'%s',_0x4729e1):_0x4729e1;if(_0x3f9385[_0x1e2105][_0x7196('0x7e')]){_0x66e1e6['group'](_0x4729e1);}_0x3f9385[_0x1e2105][_0x7196('0x7f')]&&_0x66e1e6[_0x7196('0x3f')](_0x4729e1,_0x3f9385[_0x1e2105][_0x7196('0x7f')]==='DESC'?![]:!![]);_0x66e1e6['field'](_0x4729e1,_0x3f9385[_0x1e2105][_0x7196('0x81')]||_0x4729e1);}if(_0x2944e5[_0x7196('0x82')]){_0x2944e5[_0x7196('0x82')]=JSON[_0x7196('0x83')](_0x2944e5[_0x7196('0x82')]);for(var _0x220315=0x0;_0x220315<_0x2944e5[_0x7196('0x82')][_0x7196('0x3c')];_0x220315+=0x1){if(_0x2944e5['joins'][_0x220315][_0x7196('0x33')]&&_[_0x7196('0x69')](_0x144613,_0x2944e5['joins'][_0x220315][_0x7196('0x33')])&&_0x2944e5[_0x7196('0x82')][_0x220315][_0x7196('0x86')]&&_0x2944e5['joins'][_0x220315][_0x7196('0x84')]&&_0x2944e5[_0x7196('0x82')][_0x220315][_0x7196('0x87')]){_0x66e1e6[_0x2944e5[_0x7196('0x82')][_0x220315][_0x7196('0x33')]](_0x2944e5['joins'][_0x220315]['foreignTable'],null,util[_0x7196('0x7d')](_0x7196('0x85'),_0x2944e5[_0x7196('0x94')],_0x2944e5[_0x7196('0x82')][_0x220315][_0x7196('0x86')],_0x2944e5[_0x7196('0x82')][_0x220315]['foreignTable'],_0x2944e5[_0x7196('0x82')][_0x220315][_0x7196('0x87')]));}}}if(_0x2944e5[_0x7196('0x88')]){_0x2944e5[_0x7196('0x88')]=JSON['parse'](_0x2944e5[_0x7196('0x88')]);_0x66e1e6[_0x7196('0x42')](_0x425a57(_0x2944e5[_0x7196('0x88')][_0x7196('0x6f')]));}_0x2fb552=_0x66e1e6[_0x7196('0x89')]();_0x66e1e6[_0x7196('0x23')](_0x51da79);_0x66e1e6[_0x7196('0x21')](0x0);logger[_0x7196('0x8a')](_0x7196('0x8b'),_0x66e1e6[_0x7196('0x8c')]());return dbH[_0x7196('0x8d')][_0x7196('0x39')](_0x66e1e6['toString'](),{'type':dbH[_0x7196('0x8d')]['QueryTypes'][_0x7196('0x8f')]});}})['then'](function(){return{'sql':_0x2fb552[_0x7196('0x8c')]()};})['then'](respondWithResult(_0x58fb86,null))[_0x7196('0x56')](handleError(_0x58fb86,null));};
\ No newline at end of file
index f489fd1..58148ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3205=['api','moment','bluebird','path','rimraf','../../config/environment','./analyticDefaultReport.attributes','define','AnalyticDefaultReport','analytics_default_reports','lodash','util','../../config/logger'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0x3205,0x14f));var _0x5320=function(_0x1f2ce3,_0x5ea85c){_0x1f2ce3=_0x1f2ce3-0x0;var _0x3942ad=_0x3205[_0x1f2ce3];return _0x3942ad;};'use strict';var _=require(_0x5320('0x0'));var util=require(_0x5320('0x1'));var logger=require(_0x5320('0x2'))(_0x5320('0x3'));var moment=require(_0x5320('0x4'));var BPromise=require(_0x5320('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x5320('0x6'));var rimraf=require(_0x5320('0x7'));var config=require(_0x5320('0x8'));var attributes=require(_0x5320('0x9'));module['exports']=function(_0x406eda,_0x291075){return _0x406eda[_0x5320('0xa')](_0x5320('0xb'),attributes,{'tableName':_0x5320('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x357d=['path','rimraf','../../config/environment','./analyticDefaultReport.attributes','exports','define','AnalyticDefaultReport','analytics_default_reports','lodash','util','../../config/logger','api','bluebird','request-promise'];(function(_0xa015ca,_0x297d10){var _0x3efaf5=function(_0x1ca607){while(--_0x1ca607){_0xa015ca['push'](_0xa015ca['shift']());}};_0x3efaf5(++_0x297d10);}(_0x357d,0x158));var _0xd357=function(_0x425b10,_0xe4cbbe){_0x425b10=_0x425b10-0x0;var _0x1eecfe=_0x357d[_0x425b10];return _0x1eecfe;};'use strict';var _=require(_0xd357('0x0'));var util=require(_0xd357('0x1'));var logger=require(_0xd357('0x2'))(_0xd357('0x3'));var moment=require('moment');var BPromise=require(_0xd357('0x4'));var rp=require(_0xd357('0x5'));var fs=require('fs');var path=require(_0xd357('0x6'));var rimraf=require(_0xd357('0x7'));var config=require(_0xd357('0x8'));var attributes=require(_0xd357('0x9'));module[_0xd357('0xa')]=function(_0x59a667,_0x41ab6e){return _0x59a667[_0xd357('0xb')](_0xd357('0xc'),attributes,{'tableName':_0xd357('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index aee15d4..d221178 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9879=['http','request','then','info','AnalyticDefaultReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticDefaultReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','util','moment','bluebird','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x3e8b25,_0x27c33b){var _0x1d9d28=function(_0x2e77ae){while(--_0x2e77ae){_0x3e8b25['push'](_0x3e8b25['shift']());}};_0x1d9d28(++_0x27c33b);}(_0x9879,0x10a));var _0x9987=function(_0x827f2,_0x43a9ea){_0x827f2=_0x827f2-0x0;var _0x3b54d2=_0x9879[_0x827f2];return _0x3b54d2;};'use strict';var _=require(_0x9987('0x0'));var util=require(_0x9987('0x1'));var moment=require(_0x9987('0x2'));var BPromise=require(_0x9987('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9987('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x9987('0x5'))(_0x9987('0x6'));var config=require(_0x9987('0x7'));var jayson=require(_0x9987('0x8'));var client=jayson[_0x9987('0x9')][_0x9987('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x379388,_0x248493,_0x3aafa2){return new BPromise(function(_0x5c46cc,_0x3815a8){return client[_0x9987('0xb')](_0x379388,_0x3aafa2)[_0x9987('0xc')](function(_0x1d07ff){logger[_0x9987('0xd')](_0x9987('0xe'),_0x248493,_0x9987('0xf'));logger[_0x9987('0x10')](_0x9987('0x11'),_0x248493,_0x9987('0xf'),JSON[_0x9987('0x12')](_0x1d07ff));if(_0x1d07ff[_0x9987('0x13')]){if(_0x1d07ff[_0x9987('0x13')][_0x9987('0x14')]===0x1f4){logger[_0x9987('0x13')](_0x9987('0xe'),_0x248493,_0x1d07ff[_0x9987('0x13')][_0x9987('0x15')]);return _0x3815a8(_0x1d07ff['error'][_0x9987('0x15')]);}logger[_0x9987('0x13')](_0x9987('0xe'),_0x248493,_0x1d07ff[_0x9987('0x13')][_0x9987('0x15')]);return _0x5c46cc(_0x1d07ff[_0x9987('0x13')][_0x9987('0x15')]);}else{logger[_0x9987('0xd')](_0x9987('0xe'),_0x248493,'request\x20sent');_0x5c46cc(_0x1d07ff['result']['message']);}})[_0x9987('0x16')](function(_0x22d86f){logger[_0x9987('0x13')](_0x9987('0xe'),_0x248493,_0x22d86f);_0x3815a8(_0x22d86f);});});}
\ No newline at end of file
+var _0x878f=['then','info','AnalyticDefaultReport,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','request'];(function(_0x27842c,_0x324fcb){var _0x493de8=function(_0x1f6c85){while(--_0x1f6c85){_0x27842c['push'](_0x27842c['shift']());}};_0x493de8(++_0x324fcb);}(_0x878f,0x1d9));var _0xf878=function(_0x25e302,_0xc79719){_0x25e302=_0x25e302-0x0;var _0x5c8871=_0x878f[_0x25e302];return _0x5c8871;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xf878('0x0'));var BPromise=require(_0xf878('0x1'));var rs=require(_0xf878('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf878('0x3'))['db'];var utils=require(_0xf878('0x4'));var logger=require(_0xf878('0x5'))(_0xf878('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xf878('0x7')][_0xf878('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x579419,_0x1ea77f,_0x55e386){return new BPromise(function(_0x1f19da,_0x7d7a48){return client[_0xf878('0x9')](_0x579419,_0x55e386)[_0xf878('0xa')](function(_0x35a9f0){logger[_0xf878('0xb')](_0xf878('0xc'),_0x1ea77f,'request\x20sent');logger[_0xf878('0xd')]('AnalyticDefaultReport,\x20%s,\x20%s,\x20%s',_0x1ea77f,'request\x20sent',JSON[_0xf878('0xe')](_0x35a9f0));if(_0x35a9f0[_0xf878('0xf')]){if(_0x35a9f0[_0xf878('0xf')][_0xf878('0x10')]===0x1f4){logger['error'](_0xf878('0xc'),_0x1ea77f,_0x35a9f0['error'][_0xf878('0x11')]);return _0x7d7a48(_0x35a9f0[_0xf878('0xf')][_0xf878('0x11')]);}logger[_0xf878('0xf')](_0xf878('0xc'),_0x1ea77f,_0x35a9f0[_0xf878('0xf')][_0xf878('0x11')]);return _0x1f19da(_0x35a9f0[_0xf878('0xf')]['message']);}else{logger[_0xf878('0xb')](_0xf878('0xc'),_0x1ea77f,_0xf878('0x12'));_0x1f19da(_0x35a9f0[_0xf878('0x13')][_0xf878('0x11')]);}})[_0xf878('0x14')](function(_0x643b63){logger[_0xf878('0xf')](_0xf878('0xc'),_0x1ea77f,_0x643b63);_0x7d7a48(_0x643b63);});});}
\ No newline at end of file
index 46b9e66..e5a4bb7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c66=['preview','/:id/run','/:id/query','query','post','create','put','delete','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','isAuthenticated','index','/:id','get','/:id/preview'];(function(_0x3beb67,_0x44ae68){var _0x3d1d85=function(_0x56e806){while(--_0x56e806){_0x3beb67['push'](_0x3beb67['shift']());}};_0x3d1d85(++_0x44ae68);}(_0x6c66,0x119));var _0x66c6=function(_0x4bfb64,_0x200f62){_0x4bfb64=_0x4bfb64-0x0;var _0x2bd5be=_0x6c66[_0x4bfb64];return _0x2bd5be;};'use strict';var multer=require(_0x66c6('0x0'));var util=require(_0x66c6('0x1'));var path=require(_0x66c6('0x2'));var timeout=require(_0x66c6('0x3'));var express=require(_0x66c6('0x4'));var router=express['Router']();var fs_extra=require(_0x66c6('0x5'));var auth=require(_0x66c6('0x6'));var interaction=require(_0x66c6('0x7'));var config=require('../../config/environment');var controller=require('./analyticDefaultReport.controller');router['get']('/',auth[_0x66c6('0x8')](),controller[_0x66c6('0x9')]);router['get'](_0x66c6('0xa'),auth[_0x66c6('0x8')](),controller['show']);router[_0x66c6('0xb')](_0x66c6('0xc'),auth[_0x66c6('0x8')](),controller[_0x66c6('0xd')]);router[_0x66c6('0xb')](_0x66c6('0xe'),auth[_0x66c6('0x8')](),controller['run']);router['get'](_0x66c6('0xf'),auth['isAuthenticated'](),controller[_0x66c6('0x10')]);router[_0x66c6('0x11')]('/',auth[_0x66c6('0x8')](),controller[_0x66c6('0x12')]);router[_0x66c6('0x13')](_0x66c6('0xa'),auth[_0x66c6('0x8')](),controller['update']);router[_0x66c6('0x14')](_0x66c6('0xa'),auth[_0x66c6('0x8')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x9d79=['./analyticDefaultReport.controller','get','isAuthenticated','index','show','preview','/:id/run','/:id/query','query','create','put','/:id','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x8b8564,_0x162976){var _0x360c61=function(_0x164cc9){while(--_0x164cc9){_0x8b8564['push'](_0x8b8564['shift']());}};_0x360c61(++_0x162976);}(_0x9d79,0x1c5));var _0x99d7=function(_0x1b5d83,_0x32e961){_0x1b5d83=_0x1b5d83-0x0;var _0xe451a2=_0x9d79[_0x1b5d83];return _0xe451a2;};'use strict';var multer=require(_0x99d7('0x0'));var util=require('util');var path=require(_0x99d7('0x1'));var timeout=require(_0x99d7('0x2'));var express=require(_0x99d7('0x3'));var router=express[_0x99d7('0x4')]();var fs_extra=require(_0x99d7('0x5'));var auth=require(_0x99d7('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x99d7('0x7'));router[_0x99d7('0x8')]('/',auth[_0x99d7('0x9')](),controller[_0x99d7('0xa')]);router['get']('/:id',auth[_0x99d7('0x9')](),controller[_0x99d7('0xb')]);router[_0x99d7('0x8')]('/:id/preview',auth['isAuthenticated'](),controller[_0x99d7('0xc')]);router[_0x99d7('0x8')](_0x99d7('0xd'),auth[_0x99d7('0x9')](),controller['run']);router[_0x99d7('0x8')](_0x99d7('0xe'),auth[_0x99d7('0x9')](),controller[_0x99d7('0xf')]);router['post']('/',auth[_0x99d7('0x9')](),controller[_0x99d7('0x10')]);router[_0x99d7('0x11')](_0x99d7('0x12'),auth['isAuthenticated'](),controller[_0x99d7('0x13')]);router[_0x99d7('0x14')](_0x99d7('0x12'),auth[_0x99d7('0x9')](),controller[_0x99d7('0x15')]);module[_0x99d7('0x16')]=router;
\ No newline at end of file
index 3d2cd75..803276e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2383=['UNSIGNED','sequelize','moment','STRING','ENUM','csv','pdf','xlsx','DATE','Loading','manual','scheduled','INTEGER'];(function(_0x2a4235,_0x5b3292){var _0x26d692=function(_0x5d2200){while(--_0x5d2200){_0x2a4235['push'](_0x2a4235['shift']());}};_0x26d692(++_0x5b3292);}(_0x2383,0x11f));var _0x3238=function(_0x5c998b,_0x1166aa){_0x5c998b=_0x5c998b-0x0;var _0x29fa8b=_0x2383[_0x5c998b];return _0x29fa8b;};'use strict';var Sequelize=require(_0x3238('0x0'));var moment=require(_0x3238('0x1'));module['exports']={'name':{'type':Sequelize[_0x3238('0x2')],'allowNull':![]},'basename':{'type':Sequelize[_0x3238('0x2')],'allowNull':![]},'output':{'type':Sequelize[_0x3238('0x3')](_0x3238('0x4'),_0x3238('0x5'),_0x3238('0x6')),'allowNull':![],'defaultValue':'csv'},'savename':{'type':Sequelize[_0x3238('0x2')],'allowNull':![]},'startDate':{'type':Sequelize[_0x3238('0x7')]},'endDate':{'type':Sequelize[_0x3238('0x7')]},'status':{'type':Sequelize[_0x3238('0x2')],'defaultValue':_0x3238('0x8')},'type':{'type':Sequelize[_0x3238('0x3')](_0x3238('0x9'),_0x3238('0xa')),'allowNull':![],'defaultValue':_0x3238('0x9')},'reportId':{'type':Sequelize[_0x3238('0xb')](0xb)[_0x3238('0xc')]},'reportType':{'type':Sequelize[_0x3238('0x2')]}};
\ No newline at end of file
+var _0x5c8a=['xlsx','DATE','Loading','scheduled','manual','UNSIGNED','sequelize','exports','STRING','ENUM','csv','pdf'];(function(_0x2c6902,_0x5f07e3){var _0x3840ec=function(_0x1a63b5){while(--_0x1a63b5){_0x2c6902['push'](_0x2c6902['shift']());}};_0x3840ec(++_0x5f07e3);}(_0x5c8a,0x126));var _0xa5c8=function(_0x2d521d,_0x349b36){_0x2d521d=_0x2d521d-0x0;var _0x4d36b3=_0x5c8a[_0x2d521d];return _0x4d36b3;};'use strict';var Sequelize=require(_0xa5c8('0x0'));var moment=require('moment');module[_0xa5c8('0x1')]={'name':{'type':Sequelize[_0xa5c8('0x2')],'allowNull':![]},'basename':{'type':Sequelize[_0xa5c8('0x2')],'allowNull':![]},'output':{'type':Sequelize[_0xa5c8('0x3')](_0xa5c8('0x4'),_0xa5c8('0x5'),_0xa5c8('0x6')),'allowNull':![],'defaultValue':_0xa5c8('0x4')},'savename':{'type':Sequelize[_0xa5c8('0x2')],'allowNull':![]},'startDate':{'type':Sequelize['DATE']},'endDate':{'type':Sequelize[_0xa5c8('0x7')]},'status':{'type':Sequelize['STRING'],'defaultValue':_0xa5c8('0x8')},'type':{'type':Sequelize['ENUM']('manual',_0xa5c8('0x9')),'allowNull':![],'defaultValue':_0xa5c8('0xa')},'reportId':{'type':Sequelize['INTEGER'](0xb)[_0xa5c8('0xb')]},'reportType':{'type':Sequelize[_0xa5c8('0x2')]}};
\ No newline at end of file
index 1c30fd7..35df324 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3889=['index','AnalyticExtractedReport','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','order','sort','where','pick','filter','merge','map','VIRTUAL','includeAll','findAll','rows','show','include','options','find','catch','create','user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','body','params','download','basename','savename','existsSync','join','root','server/files/reports','Sequelize','Report\x20not\x20found\x20or\x20empty','format','output','toLowerCase','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','util','path','sox','ejs','fs-extra','lodash','squel','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/license/util','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','then','destroy','get','ExtractedReports','UserProfileResource','sendStatus','error','stack','name'];(function(_0x4e0cba,_0x5cffd2){var _0x2ff912=function(_0x3152f8){while(--_0x3152f8){_0x4e0cba['push'](_0x4e0cba['shift']());}};_0x2ff912(++_0x5cffd2);}(_0x3889,0x1a7));var _0x9388=function(_0xe1a3d,_0x16906d){_0xe1a3d=_0xe1a3d-0x0;var _0x1a94de=_0x3889[_0xe1a3d];return _0x1a94de;};'use strict';var emlformat=require(_0x9388('0x0'));var rimraf=require(_0x9388('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x9388('0x2'));var rp=require(_0x9388('0x3'));var moment=require(_0x9388('0x4'));var BPromise=require(_0x9388('0x5'));var Mustache=require('mustache');var util=require(_0x9388('0x6'));var path=require(_0x9388('0x7'));var sox=require(_0x9388('0x8'));var csv=require('to-csv');var ejs=require(_0x9388('0x9'));var fs=require('fs');var fs_extra=require(_0x9388('0xa'));var _=require(_0x9388('0xb'));var squel=require(_0x9388('0xc'));var crypto=require('crypto');var jsforce=require(_0x9388('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x9388('0xe'));var Papa=require(_0x9388('0xf'));var Redis=require(_0x9388('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x9388('0x11'));var as=require(_0x9388('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x9388('0x13'))(_0x9388('0x14'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x9388('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x455fb8,_0x1f1f83){_0x1f1f83=_0x1f1f83||0xcc;return function(_0xb1d2b){if(_0xb1d2b){return _0x455fb8['sendStatus'](_0x1f1f83);}return _0x455fb8[_0x9388('0x16')](_0x1f1f83)[_0x9388('0x17')]();};}function respondWithResult(_0x27be08,_0x2d50ec){_0x2d50ec=_0x2d50ec||0xc8;return function(_0x39dc29){if(_0x39dc29){return _0x27be08[_0x9388('0x16')](_0x2d50ec)[_0x9388('0x18')](_0x39dc29);}};}function respondWithFilteredResult(_0x103e1e,_0x431b80){return function(_0xd92345){if(_0xd92345){var _0xbb569a=typeof _0x431b80[_0x9388('0x19')]===_0x9388('0x1a')&&typeof _0x431b80[_0x9388('0x1b')]===_0x9388('0x1a');var _0x5ede15=_0xd92345['count'];var _0x416819=_0xbb569a?0x0:_0x431b80[_0x9388('0x19')];var _0x6a37df=_0xbb569a?_0xd92345[_0x9388('0x1c')]:_0x431b80['offset']+_0x431b80[_0x9388('0x1b')];var _0x1f3704;if(_0x6a37df>=_0x5ede15){_0x6a37df=_0x5ede15;_0x1f3704=0xc8;}else{_0x1f3704=0xce;}_0x103e1e[_0x9388('0x16')](_0x1f3704);return _0x103e1e['set'](_0x9388('0x1d'),_0x416819+'-'+_0x6a37df+'/'+_0x5ede15)[_0x9388('0x18')](_0xd92345);}return null;};}function patchUpdates(_0x14a264){return function(_0x329c0b){try{jsonpatch[_0x9388('0x1e')](_0x329c0b,_0x14a264,!![]);}catch(_0x5782be){return BPromise[_0x9388('0x1f')](_0x5782be);}return _0x329c0b[_0x9388('0x20')]();};}function saveUpdates(_0x5362ac,_0x5d5232){return function(_0x2f2298){if(_0x2f2298){return _0x2f2298['update'](_0x5362ac)[_0x9388('0x21')](function(_0x479c42){return _0x479c42;});}return null;};}function removeEntity(_0x2cefdd,_0x237f85){return function(_0x10c2a6){if(_0x10c2a6){return _0x10c2a6[_0x9388('0x22')]()[_0x9388('0x21')](function(){var _0x534fa8=_0x10c2a6[_0x9388('0x23')]({'plain':!![]});var _0x14d83b=_0x9388('0x24');return db[_0x9388('0x25')]['destroy']({'where':{'type':_0x14d83b,'resourceId':_0x534fa8['id']}})[_0x9388('0x21')](function(){return _0x10c2a6;});})['then'](function(){_0x2cefdd[_0x9388('0x16')](0xcc)[_0x9388('0x17')]();});}};}function handleEntityNotFound(_0x223e03,_0x24bd4e){return function(_0x2adb17){if(!_0x2adb17){_0x223e03[_0x9388('0x26')](0x194);}return _0x2adb17;};}function handleError(_0x474521,_0x1affa0){_0x1affa0=_0x1affa0||0x1f4;return function(_0x506157){logger[_0x9388('0x27')](_0x506157[_0x9388('0x28')]);if(_0x506157[_0x9388('0x29')]){delete _0x506157['name'];}_0x474521[_0x9388('0x16')](_0x1affa0)['send'](_0x506157);};}exports[_0x9388('0x2a')]=function(_0x1b18de,_0x5e9c3f){var _0x545c42={},_0x3671f1={},_0x101e2d={'count':0x0,'rows':[]};var _0xae22ba=_['map'](db[_0x9388('0x2b')][_0x9388('0x2c')],function(_0x2c4dbd){return{'name':_0x2c4dbd[_0x9388('0x2d')],'type':_0x2c4dbd[_0x9388('0x2e')]['key']};});_0x3671f1[_0x9388('0x2f')]=_['map'](_0xae22ba,_0x9388('0x29'));_0x3671f1[_0x9388('0x30')]=_[_0x9388('0x31')](_0x1b18de[_0x9388('0x30')]);_0x3671f1[_0x9388('0x32')]=_[_0x9388('0x33')](_0x3671f1[_0x9388('0x2f')],_0x3671f1['query']);_0x545c42[_0x9388('0x34')]=_[_0x9388('0x33')](_0x3671f1[_0x9388('0x2f')],qs[_0x9388('0x35')](_0x1b18de[_0x9388('0x30')]['fields']));_0x545c42[_0x9388('0x34')]=_0x545c42[_0x9388('0x34')][_0x9388('0x36')]?_0x545c42[_0x9388('0x34')]:_0x3671f1['model'];if(!_0x1b18de['query']['hasOwnProperty']('nolimit')){_0x545c42[_0x9388('0x1b')]=qs['limit'](_0x1b18de[_0x9388('0x30')][_0x9388('0x1b')]);_0x545c42[_0x9388('0x19')]=qs[_0x9388('0x19')](_0x1b18de[_0x9388('0x30')][_0x9388('0x19')]);}_0x545c42[_0x9388('0x37')]=qs[_0x9388('0x38')](_0x1b18de[_0x9388('0x30')]['sort']);_0x545c42[_0x9388('0x39')]=qs[_0x9388('0x32')](_[_0x9388('0x3a')](_0x1b18de[_0x9388('0x30')],_0x3671f1[_0x9388('0x32')]),_0xae22ba);if(_0x1b18de[_0x9388('0x30')][_0x9388('0x3b')]){_0x545c42[_0x9388('0x39')]=_[_0x9388('0x3c')](_0x545c42[_0x9388('0x39')],{'$or':_[_0x9388('0x3d')](_0xae22ba,function(_0x92c76c){if(_0x92c76c['type']!==_0x9388('0x3e')){var _0x1bafaf={};_0x1bafaf[_0x92c76c['name']]={'$like':'%'+_0x1b18de['query']['filter']+'%'};return _0x1bafaf;}})});}_0x545c42=_[_0x9388('0x3c')]({},_0x545c42,_0x1b18de['options']);var _0x444b5c={'where':_0x545c42[_0x9388('0x39')]};return db[_0x9388('0x2b')][_0x9388('0x1c')](_0x444b5c)[_0x9388('0x21')](function(_0x5870ab){_0x101e2d[_0x9388('0x1c')]=_0x5870ab;if(_0x1b18de['query'][_0x9388('0x3f')]){_0x545c42['include']=[{'all':!![]}];}return db[_0x9388('0x2b')][_0x9388('0x40')](_0x545c42);})['then'](function(_0x1ca32e){_0x101e2d[_0x9388('0x41')]=_0x1ca32e;return _0x101e2d;})['then'](respondWithFilteredResult(_0x5e9c3f,_0x545c42))['catch'](handleError(_0x5e9c3f,null));};exports[_0x9388('0x42')]=function(_0x3daf54,_0x50b7e2){var _0x597fa2={'raw':!![],'where':{'id':_0x3daf54['params']['id']}},_0x3575c5={};_0x3575c5[_0x9388('0x2f')]=_['keys'](db[_0x9388('0x2b')]['rawAttributes']);_0x3575c5[_0x9388('0x30')]=_[_0x9388('0x31')](_0x3daf54[_0x9388('0x30')]);_0x3575c5[_0x9388('0x32')]=_['intersection'](_0x3575c5[_0x9388('0x2f')],_0x3575c5[_0x9388('0x30')]);_0x597fa2[_0x9388('0x34')]=_['intersection'](_0x3575c5[_0x9388('0x2f')],qs[_0x9388('0x35')](_0x3daf54['query']['fields']));_0x597fa2[_0x9388('0x34')]=_0x597fa2[_0x9388('0x34')]['length']?_0x597fa2[_0x9388('0x34')]:_0x3575c5[_0x9388('0x2f')];if(_0x3daf54[_0x9388('0x30')][_0x9388('0x3f')]){_0x597fa2[_0x9388('0x43')]=[{'all':!![]}];}_0x597fa2=_[_0x9388('0x3c')]({},_0x597fa2,_0x3daf54[_0x9388('0x44')]);return db[_0x9388('0x2b')][_0x9388('0x45')](_0x597fa2)[_0x9388('0x21')](handleEntityNotFound(_0x50b7e2,null))['then'](respondWithResult(_0x50b7e2,null))[_0x9388('0x46')](handleError(_0x50b7e2,null));};exports[_0x9388('0x47')]=function(_0x5b0f82,_0x574893){return db[_0x9388('0x2b')][_0x9388('0x47')](_0x5b0f82['body'],{})['then'](function(_0x127e35){var _0x34e1b4=_0x5b0f82[_0x9388('0x48')][_0x9388('0x23')]({'plain':!![]});if(!_0x34e1b4)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x34e1b4[_0x9388('0x49')]===_0x9388('0x48')){var _0x1fa9f8=_0x127e35['get']({'plain':!![]});var _0x169333='ExtractedReports';return db[_0x9388('0x4a')][_0x9388('0x45')]({'where':{'name':_0x169333,'userProfileId':_0x34e1b4[_0x9388('0x4b')]},'raw':!![]})[_0x9388('0x21')](function(_0x5941d7){if(_0x5941d7&&_0x5941d7[_0x9388('0x4c')]===0x0){return db[_0x9388('0x25')][_0x9388('0x47')]({'name':_0x1fa9f8['name'],'resourceId':_0x1fa9f8['id'],'type':_0x5941d7[_0x9388('0x29')],'sectionId':_0x5941d7['id']},{})['then'](function(){return _0x127e35;});}else{return _0x127e35;}})[_0x9388('0x46')](function(_0x32115a){logger['error'](_0x9388('0x4d'),_0x32115a);throw _0x32115a;});}return _0x127e35;})[_0x9388('0x21')](respondWithResult(_0x574893,0xc9))[_0x9388('0x46')](handleError(_0x574893,null));};exports[_0x9388('0x4e')]=function(_0x53257b,_0x2649df){if(_0x53257b[_0x9388('0x4f')]['id']){delete _0x53257b[_0x9388('0x4f')]['id'];}return db['AnalyticExtractedReport'][_0x9388('0x45')]({'where':{'id':_0x53257b[_0x9388('0x50')]['id']}})[_0x9388('0x21')](handleEntityNotFound(_0x2649df,null))[_0x9388('0x21')](saveUpdates(_0x53257b['body'],null))[_0x9388('0x21')](respondWithResult(_0x2649df,null))[_0x9388('0x46')](handleError(_0x2649df,null));};exports[_0x9388('0x22')]=function(_0x46266c,_0x2f8d6a){return db[_0x9388('0x2b')][_0x9388('0x45')]({'where':{'id':_0x46266c[_0x9388('0x50')]['id']}})[_0x9388('0x21')](handleEntityNotFound(_0x2f8d6a,null))[_0x9388('0x21')](removeEntity(_0x2f8d6a,null))[_0x9388('0x46')](handleError(_0x2f8d6a,null));};exports[_0x9388('0x51')]=function(_0x3452c0,_0x32a038,_0x4b0543){return db[_0x9388('0x2b')]['find']({'where':{'id':_0x3452c0['params']['id']},'attributes':['name',_0x9388('0x52'),_0x9388('0x53'),'output'],'raw':!![]})[_0x9388('0x21')](handleEntityNotFound(_0x32a038,null))[_0x9388('0x21')](function(_0x36d03f){if(_0x36d03f){if(!fs[_0x9388('0x54')](path[_0x9388('0x55')](config[_0x9388('0x56')],_0x9388('0x57'),_0x36d03f[_0x9388('0x53')]))){throw new db[(_0x9388('0x58'))]['ValidationError'](_0x9388('0x59'));}if(_0x3452c0['query']['exists']){return _0x32a038['sendStatus'](0xc8);}return _0x32a038['download'](path['join'](config[_0x9388('0x56')],_0x9388('0x57'),_0x36d03f['savename']),util[_0x9388('0x5a')]('%s.%s',_0x36d03f[_0x9388('0x52')]||_0x36d03f[_0x9388('0x29')],_0x36d03f[_0x9388('0x5b')][_0x9388('0x5c')]()));}})['catch'](handleError(_0x32a038,null));};
\ No newline at end of file
+var _0xda33=['set','Content-Range','reject','save','update','then','destroy','get','ExtractedReports','error','stack','name','send','map','AnalyticExtractedReport','rawAttributes','fieldName','type','key','query','keys','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','find','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','basename','savename','join','root','server/files/reports','Sequelize','Report\x20not\x20found\x20or\x20empty','format','output','toLowerCase','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','fs-extra','lodash','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit'];(function(_0x2c0be1,_0x1e88f2){var _0x3d4bd2=function(_0x2b5497){while(--_0x2b5497){_0x2c0be1['push'](_0x2c0be1['shift']());}};_0x3d4bd2(++_0x1e88f2);}(_0xda33,0xf6));var _0x3da3=function(_0x409b6c,_0x26815e){_0x409b6c=_0x409b6c-0x0;var _0x5b99d4=_0xda33[_0x409b6c];return _0x5b99d4;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x3da3('0x0'));var zipdir=require(_0x3da3('0x1'));var jsonpatch=require(_0x3da3('0x2'));var rp=require(_0x3da3('0x3'));var moment=require(_0x3da3('0x4'));var BPromise=require(_0x3da3('0x5'));var Mustache=require(_0x3da3('0x6'));var util=require(_0x3da3('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0x3da3('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x3da3('0x9'));var _=require(_0x3da3('0xa'));var squel=require('squel');var crypto=require(_0x3da3('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x3da3('0xc'));var toCsv=require(_0x3da3('0x8'));var querystring=require(_0x3da3('0xd'));var Papa=require('papaparse');var Redis=require(_0x3da3('0xe'));var authService=require(_0x3da3('0xf'));var qs=require(_0x3da3('0x10'));var as=require(_0x3da3('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x3da3('0x12'))(_0x3da3('0x13'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x3da3('0x14'));var db=require(_0x3da3('0x15'))['db'];function respondWithStatusCode(_0x288cec,_0x65c262){_0x65c262=_0x65c262||0xcc;return function(_0x303355){if(_0x303355){return _0x288cec[_0x3da3('0x16')](_0x65c262);}return _0x288cec[_0x3da3('0x17')](_0x65c262)[_0x3da3('0x18')]();};}function respondWithResult(_0x2b882f,_0x5e1ac9){_0x5e1ac9=_0x5e1ac9||0xc8;return function(_0x28efd3){if(_0x28efd3){return _0x2b882f[_0x3da3('0x17')](_0x5e1ac9)[_0x3da3('0x19')](_0x28efd3);}};}function respondWithFilteredResult(_0x36eddb,_0x5c88ad){return function(_0x170b1a){if(_0x170b1a){var _0x51650a=typeof _0x5c88ad[_0x3da3('0x1a')]===_0x3da3('0x1b')&&typeof _0x5c88ad['limit']==='undefined';var _0xd035b3=_0x170b1a[_0x3da3('0x1c')];var _0xb8a128=_0x51650a?0x0:_0x5c88ad[_0x3da3('0x1a')];var _0x155a88=_0x51650a?_0x170b1a[_0x3da3('0x1c')]:_0x5c88ad['offset']+_0x5c88ad[_0x3da3('0x1d')];var _0x52212d;if(_0x155a88>=_0xd035b3){_0x155a88=_0xd035b3;_0x52212d=0xc8;}else{_0x52212d=0xce;}_0x36eddb[_0x3da3('0x17')](_0x52212d);return _0x36eddb[_0x3da3('0x1e')](_0x3da3('0x1f'),_0xb8a128+'-'+_0x155a88+'/'+_0xd035b3)['json'](_0x170b1a);}return null;};}function patchUpdates(_0x353773){return function(_0x306b2d){try{jsonpatch['apply'](_0x306b2d,_0x353773,!![]);}catch(_0xb4f9cc){return BPromise[_0x3da3('0x20')](_0xb4f9cc);}return _0x306b2d[_0x3da3('0x21')]();};}function saveUpdates(_0x21a587,_0x318414){return function(_0x5ac162){if(_0x5ac162){return _0x5ac162[_0x3da3('0x22')](_0x21a587)[_0x3da3('0x23')](function(_0x7be28f){return _0x7be28f;});}return null;};}function removeEntity(_0x10a321,_0x46e90e){return function(_0x534d03){if(_0x534d03){return _0x534d03[_0x3da3('0x24')]()[_0x3da3('0x23')](function(){var _0x519b5d=_0x534d03[_0x3da3('0x25')]({'plain':!![]});var _0xcdc2be=_0x3da3('0x26');return db['UserProfileResource']['destroy']({'where':{'type':_0xcdc2be,'resourceId':_0x519b5d['id']}})[_0x3da3('0x23')](function(){return _0x534d03;});})['then'](function(){_0x10a321[_0x3da3('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3081f0,_0x118aa6){return function(_0x53ae09){if(!_0x53ae09){_0x3081f0[_0x3da3('0x16')](0x194);}return _0x53ae09;};}function handleError(_0x5f0459,_0x505823){_0x505823=_0x505823||0x1f4;return function(_0x34ea67){logger[_0x3da3('0x27')](_0x34ea67[_0x3da3('0x28')]);if(_0x34ea67[_0x3da3('0x29')]){delete _0x34ea67[_0x3da3('0x29')];}_0x5f0459[_0x3da3('0x17')](_0x505823)[_0x3da3('0x2a')](_0x34ea67);};}exports['index']=function(_0x6011e9,_0x328f2d){var _0xa5f1bd={},_0x1d931b={},_0x1178c0={'count':0x0,'rows':[]};var _0x14a668=_[_0x3da3('0x2b')](db[_0x3da3('0x2c')][_0x3da3('0x2d')],function(_0x32bccf){return{'name':_0x32bccf[_0x3da3('0x2e')],'type':_0x32bccf[_0x3da3('0x2f')][_0x3da3('0x30')]};});_0x1d931b['model']=_['map'](_0x14a668,_0x3da3('0x29'));_0x1d931b[_0x3da3('0x31')]=_[_0x3da3('0x32')](_0x6011e9[_0x3da3('0x31')]);_0x1d931b[_0x3da3('0x33')]=_[_0x3da3('0x34')](_0x1d931b['model'],_0x1d931b[_0x3da3('0x31')]);_0xa5f1bd[_0x3da3('0x35')]=_['intersection'](_0x1d931b[_0x3da3('0x36')],qs[_0x3da3('0x37')](_0x6011e9[_0x3da3('0x31')][_0x3da3('0x37')]));_0xa5f1bd[_0x3da3('0x35')]=_0xa5f1bd[_0x3da3('0x35')][_0x3da3('0x38')]?_0xa5f1bd[_0x3da3('0x35')]:_0x1d931b[_0x3da3('0x36')];if(!_0x6011e9[_0x3da3('0x31')][_0x3da3('0x39')](_0x3da3('0x3a'))){_0xa5f1bd[_0x3da3('0x1d')]=qs['limit'](_0x6011e9[_0x3da3('0x31')][_0x3da3('0x1d')]);_0xa5f1bd[_0x3da3('0x1a')]=qs['offset'](_0x6011e9[_0x3da3('0x31')][_0x3da3('0x1a')]);}_0xa5f1bd['order']=qs[_0x3da3('0x3b')](_0x6011e9['query'][_0x3da3('0x3b')]);_0xa5f1bd[_0x3da3('0x3c')]=qs[_0x3da3('0x33')](_['pick'](_0x6011e9['query'],_0x1d931b[_0x3da3('0x33')]),_0x14a668);if(_0x6011e9['query'][_0x3da3('0x3d')]){_0xa5f1bd[_0x3da3('0x3c')]=_[_0x3da3('0x3e')](_0xa5f1bd['where'],{'$or':_[_0x3da3('0x2b')](_0x14a668,function(_0x365ec0){if(_0x365ec0['type']!==_0x3da3('0x3f')){var _0x19b820={};_0x19b820[_0x365ec0['name']]={'$like':'%'+_0x6011e9[_0x3da3('0x31')][_0x3da3('0x3d')]+'%'};return _0x19b820;}})});}_0xa5f1bd=_['merge']({},_0xa5f1bd,_0x6011e9['options']);var _0x2a7d4f={'where':_0xa5f1bd[_0x3da3('0x3c')]};return db[_0x3da3('0x2c')][_0x3da3('0x1c')](_0x2a7d4f)['then'](function(_0x49640d){_0x1178c0['count']=_0x49640d;if(_0x6011e9[_0x3da3('0x31')][_0x3da3('0x40')]){_0xa5f1bd[_0x3da3('0x41')]=[{'all':!![]}];}return db['AnalyticExtractedReport'][_0x3da3('0x42')](_0xa5f1bd);})[_0x3da3('0x23')](function(_0x320b1a){_0x1178c0[_0x3da3('0x43')]=_0x320b1a;return _0x1178c0;})[_0x3da3('0x23')](respondWithFilteredResult(_0x328f2d,_0xa5f1bd))[_0x3da3('0x44')](handleError(_0x328f2d,null));};exports[_0x3da3('0x45')]=function(_0x18a9d8,_0x194c57){var _0x3e92be={'raw':!![],'where':{'id':_0x18a9d8[_0x3da3('0x46')]['id']}},_0x4a6232={};_0x4a6232[_0x3da3('0x36')]=_['keys'](db[_0x3da3('0x2c')][_0x3da3('0x2d')]);_0x4a6232[_0x3da3('0x31')]=_[_0x3da3('0x32')](_0x18a9d8[_0x3da3('0x31')]);_0x4a6232[_0x3da3('0x33')]=_['intersection'](_0x4a6232[_0x3da3('0x36')],_0x4a6232[_0x3da3('0x31')]);_0x3e92be[_0x3da3('0x35')]=_[_0x3da3('0x34')](_0x4a6232[_0x3da3('0x36')],qs[_0x3da3('0x37')](_0x18a9d8['query'][_0x3da3('0x37')]));_0x3e92be[_0x3da3('0x35')]=_0x3e92be['attributes'][_0x3da3('0x38')]?_0x3e92be[_0x3da3('0x35')]:_0x4a6232[_0x3da3('0x36')];if(_0x18a9d8[_0x3da3('0x31')][_0x3da3('0x40')]){_0x3e92be[_0x3da3('0x41')]=[{'all':!![]}];}_0x3e92be=_[_0x3da3('0x3e')]({},_0x3e92be,_0x18a9d8['options']);return db[_0x3da3('0x2c')]['find'](_0x3e92be)[_0x3da3('0x23')](handleEntityNotFound(_0x194c57,null))[_0x3da3('0x23')](respondWithResult(_0x194c57,null))[_0x3da3('0x44')](handleError(_0x194c57,null));};exports[_0x3da3('0x47')]=function(_0x5472cc,_0x37b570){return db[_0x3da3('0x2c')][_0x3da3('0x47')](_0x5472cc[_0x3da3('0x48')],{})['then'](function(_0x2729d0){var _0x27449d=_0x5472cc['user'][_0x3da3('0x25')]({'plain':!![]});if(!_0x27449d)throw new Error(_0x3da3('0x49'));if(_0x27449d[_0x3da3('0x4a')]===_0x3da3('0x4b')){var _0xf00bf3=_0x2729d0[_0x3da3('0x25')]({'plain':!![]});var _0x3b157a=_0x3da3('0x26');return db[_0x3da3('0x4c')][_0x3da3('0x4d')]({'where':{'name':_0x3b157a,'userProfileId':_0x27449d[_0x3da3('0x4e')]},'raw':!![]})[_0x3da3('0x23')](function(_0x2e9289){if(_0x2e9289&&_0x2e9289[_0x3da3('0x4f')]===0x0){return db[_0x3da3('0x50')]['create']({'name':_0xf00bf3[_0x3da3('0x29')],'resourceId':_0xf00bf3['id'],'type':_0x2e9289[_0x3da3('0x29')],'sectionId':_0x2e9289['id']},{})[_0x3da3('0x23')](function(){return _0x2729d0;});}else{return _0x2729d0;}})[_0x3da3('0x44')](function(_0x3bd5af){logger[_0x3da3('0x27')](_0x3da3('0x51'),_0x3bd5af);throw _0x3bd5af;});}return _0x2729d0;})['then'](respondWithResult(_0x37b570,0xc9))[_0x3da3('0x44')](handleError(_0x37b570,null));};exports[_0x3da3('0x22')]=function(_0x193839,_0x2df704){if(_0x193839[_0x3da3('0x48')]['id']){delete _0x193839[_0x3da3('0x48')]['id'];}return db['AnalyticExtractedReport']['find']({'where':{'id':_0x193839[_0x3da3('0x46')]['id']}})[_0x3da3('0x23')](handleEntityNotFound(_0x2df704,null))[_0x3da3('0x23')](saveUpdates(_0x193839['body'],null))[_0x3da3('0x23')](respondWithResult(_0x2df704,null))[_0x3da3('0x44')](handleError(_0x2df704,null));};exports['destroy']=function(_0x5f3af8,_0x33eaa6){return db[_0x3da3('0x2c')]['find']({'where':{'id':_0x5f3af8[_0x3da3('0x46')]['id']}})[_0x3da3('0x23')](handleEntityNotFound(_0x33eaa6,null))[_0x3da3('0x23')](removeEntity(_0x33eaa6,null))[_0x3da3('0x44')](handleError(_0x33eaa6,null));};exports['download']=function(_0x4f3f25,_0x4f87d0,_0x2fdda7){return db[_0x3da3('0x2c')][_0x3da3('0x4d')]({'where':{'id':_0x4f3f25[_0x3da3('0x46')]['id']},'attributes':['name',_0x3da3('0x52'),_0x3da3('0x53'),'output'],'raw':!![]})['then'](handleEntityNotFound(_0x4f87d0,null))[_0x3da3('0x23')](function(_0x3868a4){if(_0x3868a4){if(!fs['existsSync'](path[_0x3da3('0x54')](config[_0x3da3('0x55')],_0x3da3('0x56'),_0x3868a4['savename']))){throw new db[(_0x3da3('0x57'))]['ValidationError'](_0x3da3('0x58'));}if(_0x4f3f25['query']['exists']){return _0x4f87d0[_0x3da3('0x16')](0xc8);}return _0x4f87d0['download'](path['join'](config[_0x3da3('0x55')],_0x3da3('0x56'),_0x3868a4[_0x3da3('0x53')]),util[_0x3da3('0x59')]('%s.%s',_0x3868a4[_0x3da3('0x52')]||_0x3868a4['name'],_0x3868a4[_0x3da3('0x5a')][_0x3da3('0x5b')]()));}})['catch'](handleError(_0x4f87d0,null));};
\ No newline at end of file
index d9d1854..cc02f86 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf836=['./analyticExtractedReport.attributes','exports','AnalyticExtractedReport','lodash','util','../../config/logger','api','bluebird','request-promise'];(function(_0x1cb18a,_0x33167a){var _0x22442e=function(_0x46c611){while(--_0x46c611){_0x1cb18a['push'](_0x1cb18a['shift']());}};_0x22442e(++_0x33167a);}(_0xf836,0x1c5));var _0x6f83=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xf836[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x6f83('0x0'));var util=require(_0x6f83('0x1'));var logger=require(_0x6f83('0x2'))(_0x6f83('0x3'));var moment=require('moment');var BPromise=require(_0x6f83('0x4'));var rp=require(_0x6f83('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x6f83('0x6'));module[_0x6f83('0x7')]=function(_0x40e1c1,_0xbe65f3){return _0x40e1c1['define'](_0x6f83('0x8'),attributes,{'tableName':'analytics_extracted_reports','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5a0b=['./analyticExtractedReport.attributes','exports','define','analytics_extracted_reports','util','../../config/logger','moment','bluebird','path'];(function(_0x30d6f2,_0x1a205d){var _0x19700c=function(_0x4ae9fb){while(--_0x4ae9fb){_0x30d6f2['push'](_0x30d6f2['shift']());}};_0x19700c(++_0x1a205d);}(_0x5a0b,0xb8));var _0xb5a0=function(_0x47e7cb,_0x4c1b8d){_0x47e7cb=_0x47e7cb-0x0;var _0x2a8874=_0x5a0b[_0x47e7cb];return _0x2a8874;};'use strict';var _=require('lodash');var util=require(_0xb5a0('0x0'));var logger=require(_0xb5a0('0x1'))('api');var moment=require(_0xb5a0('0x2'));var BPromise=require(_0xb5a0('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xb5a0('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xb5a0('0x5'));module[_0xb5a0('0x6')]=function(_0x5542e1,_0x4c26b9){return _0x5542e1[_0xb5a0('0x7')]('AnalyticExtractedReport',attributes,{'tableName':_0xb5a0('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0bd8566..d01b118 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd60e=['moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','then','debug','stringify','error','message','AnalyticExtractedReport,\x20%s,\x20%s','request\x20sent','result','catch','lodash'];(function(_0x5c7939,_0x22f61e){var _0x5bcfbc=function(_0x80c86){while(--_0x80c86){_0x5c7939['push'](_0x5c7939['shift']());}};_0x5bcfbc(++_0x22f61e);}(_0xd60e,0x18e));var _0xed60=function(_0x213df8,_0x201510){_0x213df8=_0x213df8-0x0;var _0x5735f9=_0xd60e[_0x213df8];return _0x5735f9;};'use strict';var _=require(_0xed60('0x0'));var util=require('util');var moment=require(_0xed60('0x1'));var BPromise=require('bluebird');var rs=require(_0xed60('0x2'));var fs=require('fs');var Redis=require(_0xed60('0x3'));var db=require(_0xed60('0x4'))['db'];var utils=require(_0xed60('0x5'));var logger=require(_0xed60('0x6'))(_0xed60('0x7'));var config=require(_0xed60('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0xed60('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2198d6,_0x581aaa,_0x120327){return new BPromise(function(_0x55cf3f,_0x581a1d){return client['request'](_0x2198d6,_0x120327)[_0xed60('0xa')](function(_0x43ac58){logger['info']('AnalyticExtractedReport,\x20%s,\x20%s',_0x581aaa,'request\x20sent');logger[_0xed60('0xb')]('AnalyticExtractedReport,\x20%s,\x20%s,\x20%s',_0x581aaa,'request\x20sent',JSON[_0xed60('0xc')](_0x43ac58));if(_0x43ac58[_0xed60('0xd')]){if(_0x43ac58[_0xed60('0xd')]['code']===0x1f4){logger[_0xed60('0xd')]('AnalyticExtractedReport,\x20%s,\x20%s',_0x581aaa,_0x43ac58[_0xed60('0xd')][_0xed60('0xe')]);return _0x581a1d(_0x43ac58[_0xed60('0xd')][_0xed60('0xe')]);}logger[_0xed60('0xd')](_0xed60('0xf'),_0x581aaa,_0x43ac58['error']['message']);return _0x55cf3f(_0x43ac58[_0xed60('0xd')][_0xed60('0xe')]);}else{logger['info']('AnalyticExtractedReport,\x20%s,\x20%s',_0x581aaa,_0xed60('0x10'));_0x55cf3f(_0x43ac58[_0xed60('0x11')][_0xed60('0xe')]);}})[_0xed60('0x12')](function(_0x5297a9){logger['error']('AnalyticExtractedReport,\x20%s,\x20%s',_0x581aaa,_0x5297a9);_0x581a1d(_0x5297a9);});});}
\ No newline at end of file
+var _0x4ca7=['util','moment','randomstring','ioredis','../../config/logger','../../config/environment','jayson/promise','http','request','then','AnalyticExtractedReport,\x20%s,\x20%s','debug','AnalyticExtractedReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','request\x20sent','result','catch','lodash'];(function(_0x1468b3,_0x550599){var _0x1de692=function(_0x2b4018){while(--_0x2b4018){_0x1468b3['push'](_0x1468b3['shift']());}};_0x1de692(++_0x550599);}(_0x4ca7,0x1e3));var _0x74ca=function(_0x5b2f14,_0x28fbb7){_0x5b2f14=_0x5b2f14-0x0;var _0x2a7b29=_0x4ca7[_0x5b2f14];return _0x2a7b29;};'use strict';var _=require(_0x74ca('0x0'));var util=require(_0x74ca('0x1'));var moment=require(_0x74ca('0x2'));var BPromise=require('bluebird');var rs=require(_0x74ca('0x3'));var fs=require('fs');var Redis=require(_0x74ca('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x74ca('0x5'))('rpc');var config=require(_0x74ca('0x6'));var jayson=require(_0x74ca('0x7'));var client=jayson['client'][_0x74ca('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x572dc2,_0x453b45,_0x1d28e1){return new BPromise(function(_0x33cabd,_0x407524){return client[_0x74ca('0x9')](_0x572dc2,_0x1d28e1)[_0x74ca('0xa')](function(_0x116715){logger['info'](_0x74ca('0xb'),_0x453b45,'request\x20sent');logger[_0x74ca('0xc')](_0x74ca('0xd'),_0x453b45,'request\x20sent',JSON[_0x74ca('0xe')](_0x116715));if(_0x116715[_0x74ca('0xf')]){if(_0x116715[_0x74ca('0xf')][_0x74ca('0x10')]===0x1f4){logger[_0x74ca('0xf')](_0x74ca('0xb'),_0x453b45,_0x116715[_0x74ca('0xf')][_0x74ca('0x11')]);return _0x407524(_0x116715['error'][_0x74ca('0x11')]);}logger[_0x74ca('0xf')](_0x74ca('0xb'),_0x453b45,_0x116715[_0x74ca('0xf')][_0x74ca('0x11')]);return _0x33cabd(_0x116715[_0x74ca('0xf')][_0x74ca('0x11')]);}else{logger[_0x74ca('0x12')](_0x74ca('0xb'),_0x453b45,_0x74ca('0x13'));_0x33cabd(_0x116715[_0x74ca('0x14')][_0x74ca('0x11')]);}})[_0x74ca('0x15')](function(_0x42b90e){logger['error'](_0x74ca('0xb'),_0x453b45,_0x42b90e);_0x407524(_0x42b90e);});});}
\ No newline at end of file
index 7cca811..3af19c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9cbb=['create','put','delete','destroy','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./analyticExtractedReport.controller','get','isAuthenticated','index','/:id','show','/:id/download','post'];(function(_0x15a943,_0x2d8458){var _0x1a85aa=function(_0x20ec7d){while(--_0x20ec7d){_0x15a943['push'](_0x15a943['shift']());}};_0x1a85aa(++_0x2d8458);}(_0x9cbb,0x121));var _0xb9cb=function(_0x1c7daf,_0x32acbe){_0x1c7daf=_0x1c7daf-0x0;var _0x1c6779=_0x9cbb[_0x1c7daf];return _0x1c6779;};'use strict';var multer=require('multer');var util=require(_0xb9cb('0x0'));var path=require(_0xb9cb('0x1'));var timeout=require('connect-timeout');var express=require(_0xb9cb('0x2'));var router=express[_0xb9cb('0x3')]();var fs_extra=require(_0xb9cb('0x4'));var auth=require(_0xb9cb('0x5'));var interaction=require(_0xb9cb('0x6'));var config=require('../../config/environment');var controller=require(_0xb9cb('0x7'));router[_0xb9cb('0x8')]('/',auth[_0xb9cb('0x9')](),controller[_0xb9cb('0xa')]);router[_0xb9cb('0x8')](_0xb9cb('0xb'),auth[_0xb9cb('0x9')](),controller[_0xb9cb('0xc')]);router[_0xb9cb('0x8')](_0xb9cb('0xd'),auth[_0xb9cb('0x9')](),controller['download']);router[_0xb9cb('0xe')]('/',auth['isAuthenticated'](),controller[_0xb9cb('0xf')]);router[_0xb9cb('0x10')](_0xb9cb('0xb'),auth[_0xb9cb('0x9')](),controller['update']);router[_0xb9cb('0x11')](_0xb9cb('0xb'),auth[_0xb9cb('0x9')](),controller[_0xb9cb('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0xe562=['multer','util','path','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','./analyticExtractedReport.controller','get','isAuthenticated','index','/:id','show','/:id/download','download','post','put','update','delete','destroy'];(function(_0x4c8540,_0x118c65){var _0x17c656=function(_0x5712b9){while(--_0x5712b9){_0x4c8540['push'](_0x4c8540['shift']());}};_0x17c656(++_0x118c65);}(_0xe562,0x111));var _0x2e56=function(_0x2c250d,_0x19e289){_0x2c250d=_0x2c250d-0x0;var _0x4095fe=_0xe562[_0x2c250d];return _0x4095fe;};'use strict';var multer=require(_0x2e56('0x0'));var util=require(_0x2e56('0x1'));var path=require(_0x2e56('0x2'));var timeout=require(_0x2e56('0x3'));var express=require(_0x2e56('0x4'));var router=express['Router']();var fs_extra=require(_0x2e56('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x2e56('0x6'));var config=require(_0x2e56('0x7'));var controller=require(_0x2e56('0x8'));router[_0x2e56('0x9')]('/',auth[_0x2e56('0xa')](),controller[_0x2e56('0xb')]);router[_0x2e56('0x9')](_0x2e56('0xc'),auth[_0x2e56('0xa')](),controller[_0x2e56('0xd')]);router[_0x2e56('0x9')](_0x2e56('0xe'),auth[_0x2e56('0xa')](),controller[_0x2e56('0xf')]);router[_0x2e56('0x10')]('/',auth[_0x2e56('0xa')](),controller['create']);router[_0x2e56('0x11')](_0x2e56('0xc'),auth['isAuthenticated'](),controller[_0x2e56('0x12')]);router[_0x2e56('0x13')](_0x2e56('0xc'),auth[_0x2e56('0xa')](),controller[_0x2e56('0x14')]);module['exports']=router;
\ No newline at end of file
index 939e0a6..1ec41df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x57d9=['TEXT','STRING','BOOLEAN','sequelize','exports'];(function(_0x27b133,_0x1fca36){var _0x26a731=function(_0x4595e0){while(--_0x4595e0){_0x27b133['push'](_0x27b133['shift']());}};_0x26a731(++_0x1fca36);}(_0x57d9,0x14d));var _0x957d=function(_0x3888bc,_0x3539a2){_0x3888bc=_0x3888bc-0x0;var _0x59d7c1=_0x57d9[_0x3888bc];return _0x59d7c1;};'use strict';var Sequelize=require(_0x957d('0x0'));module[_0x957d('0x1')]={'field':{'type':Sequelize[_0x957d('0x2')]},'alias':{'type':Sequelize['STRING']},'function':{'type':Sequelize[_0x957d('0x3')]},'format':{'type':Sequelize[_0x957d('0x3')]},'groupBy':{'type':Sequelize[_0x957d('0x4')],'defaultValue':![]},'orderBy':{'type':Sequelize[_0x957d('0x3')]},'custom':{'type':Sequelize[_0x957d('0x4')],'defaultValue':![]}};
\ No newline at end of file
+var _0x0130=['BOOLEAN','sequelize','exports','TEXT','STRING'];(function(_0x3fb9dd,_0x174fff){var _0x20136a=function(_0x480081){while(--_0x480081){_0x3fb9dd['push'](_0x3fb9dd['shift']());}};_0x20136a(++_0x174fff);}(_0x0130,0x1be));var _0x0013=function(_0x151334,_0x1e11ac){_0x151334=_0x151334-0x0;var _0x3d03da=_0x0130[_0x151334];return _0x3d03da;};'use strict';var Sequelize=require(_0x0013('0x0'));module[_0x0013('0x1')]={'field':{'type':Sequelize[_0x0013('0x2')]},'alias':{'type':Sequelize[_0x0013('0x3')]},'function':{'type':Sequelize[_0x0013('0x3')]},'format':{'type':Sequelize[_0x0013('0x3')]},'groupBy':{'type':Sequelize[_0x0013('0x4')],'defaultValue':![]},'orderBy':{'type':Sequelize[_0x0013('0x3')]},'custom':{'type':Sequelize[_0x0013('0x4')],'defaultValue':![]}};
\ No newline at end of file
index 1512eb5..04b1545 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x46a7=['count','Content-Range','apply','save','then','destroy','error','stack','name','send','index','map','rawAttributes','fieldName','type','model','keys','query','intersection','fields','attributes','length','hasOwnProperty','sort','where','filters','pick','filter','VIRTUAL','options','AnalyticFieldReport','includeAll','include','findAll','rows','catch','show','merge','find','create','bulkCreate','update','body','params','bulkDestroy','ids','addFields','AnalyticCustomReport','findOne','sequelize','transaction','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit'];(function(_0x465028,_0x4570ac){var _0xb783d4=function(_0x5458c5){while(--_0x5458c5){_0x465028['push'](_0x465028['shift']());}};_0xb783d4(++_0x4570ac);}(_0x46a7,0x138));var _0x746a=function(_0x313697,_0x1d95d2){_0x313697=_0x313697-0x0;var _0x24f8a0=_0x46a7[_0x313697];return _0x24f8a0;};'use strict';var emlformat=require(_0x746a('0x0'));var rimraf=require(_0x746a('0x1'));var zipdir=require(_0x746a('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x746a('0x3'));var moment=require(_0x746a('0x4'));var BPromise=require(_0x746a('0x5'));var Mustache=require(_0x746a('0x6'));var util=require(_0x746a('0x7'));var path=require(_0x746a('0x8'));var sox=require(_0x746a('0x9'));var csv=require(_0x746a('0xa'));var ejs=require(_0x746a('0xb'));var fs=require('fs');var fs_extra=require(_0x746a('0xc'));var _=require(_0x746a('0xd'));var squel=require(_0x746a('0xe'));var crypto=require(_0x746a('0xf'));var jsforce=require(_0x746a('0x10'));var deskjs=require(_0x746a('0x11'));var toCsv=require('to-csv');var querystring=require(_0x746a('0x12'));var Papa=require(_0x746a('0x13'));var Redis=require(_0x746a('0x14'));var authService=require(_0x746a('0x15'));var qs=require(_0x746a('0x16'));var as=require(_0x746a('0x17'));var hardwareService=require(_0x746a('0x18'));var logger=require(_0x746a('0x19'))(_0x746a('0x1a'));var utils=require('../../config/utils');var config=require(_0x746a('0x1b'));var licenseUtil=require(_0x746a('0x1c'));var db=require(_0x746a('0x1d'))['db'];function respondWithStatusCode(_0x3e70b7,_0x3514b6){_0x3514b6=_0x3514b6||0xcc;return function(_0x38d774){if(_0x38d774){return _0x3e70b7[_0x746a('0x1e')](_0x3514b6);}return _0x3e70b7[_0x746a('0x1f')](_0x3514b6)[_0x746a('0x20')]();};}function respondWithResult(_0x3b0a40,_0x172f5b){_0x172f5b=_0x172f5b||0xc8;return function(_0x24e56e){if(_0x24e56e){return _0x3b0a40['status'](_0x172f5b)['json'](_0x24e56e);}};}function respondWithFilteredResult(_0xfce5fa,_0x3976d2){return function(_0x3825e1){if(_0x3825e1){var _0x1ff9a3=typeof _0x3976d2[_0x746a('0x21')]===_0x746a('0x22')&&typeof _0x3976d2[_0x746a('0x23')]===_0x746a('0x22');var _0x41b920=_0x3825e1['count'];var _0x482295=_0x1ff9a3?0x0:_0x3976d2['offset'];var _0x2a4e14=_0x1ff9a3?_0x3825e1[_0x746a('0x24')]:_0x3976d2[_0x746a('0x21')]+_0x3976d2[_0x746a('0x23')];var _0x108333;if(_0x2a4e14>=_0x41b920){_0x2a4e14=_0x41b920;_0x108333=0xc8;}else{_0x108333=0xce;}_0xfce5fa[_0x746a('0x1f')](_0x108333);return _0xfce5fa['set'](_0x746a('0x25'),_0x482295+'-'+_0x2a4e14+'/'+_0x41b920)['json'](_0x3825e1);}return null;};}function patchUpdates(_0x37845e){return function(_0x37158b){try{jsonpatch[_0x746a('0x26')](_0x37158b,_0x37845e,!![]);}catch(_0x257d1a){return BPromise['reject'](_0x257d1a);}return _0x37158b[_0x746a('0x27')]();};}function saveUpdates(_0x3719ee,_0x375462){return function(_0x3c930a){if(_0x3c930a){return _0x3c930a['update'](_0x3719ee)[_0x746a('0x28')](function(_0x1a46e4){return _0x1a46e4;});}return null;};}function removeEntity(_0x53a44e,_0x4f33cc){return function(_0x222edf){if(_0x222edf){return _0x222edf[_0x746a('0x29')]()['then'](function(){_0x53a44e[_0x746a('0x1f')](0xcc)[_0x746a('0x20')]();});}};}function handleEntityNotFound(_0x10cc56,_0x295752){return function(_0x3069b9){if(!_0x3069b9){_0x10cc56[_0x746a('0x1e')](0x194);}return _0x3069b9;};}function handleError(_0x2b91a0,_0x3016b5){_0x3016b5=_0x3016b5||0x1f4;return function(_0x46bfc0){logger[_0x746a('0x2a')](_0x46bfc0[_0x746a('0x2b')]);if(_0x46bfc0[_0x746a('0x2c')]){delete _0x46bfc0['name'];}_0x2b91a0['status'](_0x3016b5)[_0x746a('0x2d')](_0x46bfc0);};}exports[_0x746a('0x2e')]=function(_0x491250,_0x919096){var _0x953e4e={},_0x258441={},_0xacb076={'count':0x0,'rows':[]};var _0x5a5f9c=_[_0x746a('0x2f')](db['AnalyticFieldReport'][_0x746a('0x30')],function(_0x132b08){return{'name':_0x132b08[_0x746a('0x31')],'type':_0x132b08[_0x746a('0x32')]['key']};});_0x258441[_0x746a('0x33')]=_['map'](_0x5a5f9c,_0x746a('0x2c'));_0x258441['query']=_[_0x746a('0x34')](_0x491250[_0x746a('0x35')]);_0x258441['filters']=_[_0x746a('0x36')](_0x258441[_0x746a('0x33')],_0x258441[_0x746a('0x35')]);_0x953e4e['attributes']=_[_0x746a('0x36')](_0x258441[_0x746a('0x33')],qs[_0x746a('0x37')](_0x491250[_0x746a('0x35')][_0x746a('0x37')]));_0x953e4e[_0x746a('0x38')]=_0x953e4e[_0x746a('0x38')][_0x746a('0x39')]?_0x953e4e[_0x746a('0x38')]:_0x258441[_0x746a('0x33')];if(!_0x491250[_0x746a('0x35')][_0x746a('0x3a')]('nolimit')){_0x953e4e['limit']=qs[_0x746a('0x23')](_0x491250[_0x746a('0x35')]['limit']);_0x953e4e[_0x746a('0x21')]=qs[_0x746a('0x21')](_0x491250[_0x746a('0x35')][_0x746a('0x21')]);}_0x953e4e['order']=qs[_0x746a('0x3b')](_0x491250[_0x746a('0x35')]['sort']);_0x953e4e[_0x746a('0x3c')]=qs[_0x746a('0x3d')](_[_0x746a('0x3e')](_0x491250['query'],_0x258441[_0x746a('0x3d')]),_0x5a5f9c);if(_0x491250[_0x746a('0x35')][_0x746a('0x3f')]){_0x953e4e['where']=_['merge'](_0x953e4e[_0x746a('0x3c')],{'$or':_[_0x746a('0x2f')](_0x5a5f9c,function(_0x3a52f4){if(_0x3a52f4[_0x746a('0x32')]!==_0x746a('0x40')){var _0x47d531={};_0x47d531[_0x3a52f4['name']]={'$like':'%'+_0x491250['query'][_0x746a('0x3f')]+'%'};return _0x47d531;}})});}_0x953e4e=_['merge']({},_0x953e4e,_0x491250[_0x746a('0x41')]);var _0x8bbc85={'where':_0x953e4e[_0x746a('0x3c')]};return db[_0x746a('0x42')][_0x746a('0x24')](_0x8bbc85)[_0x746a('0x28')](function(_0x2dc8b8){_0xacb076['count']=_0x2dc8b8;if(_0x491250[_0x746a('0x35')][_0x746a('0x43')]){_0x953e4e[_0x746a('0x44')]=[{'all':!![]}];}return db[_0x746a('0x42')][_0x746a('0x45')](_0x953e4e);})[_0x746a('0x28')](function(_0x40554f){_0xacb076[_0x746a('0x46')]=_0x40554f;return _0xacb076;})[_0x746a('0x28')](respondWithFilteredResult(_0x919096,_0x953e4e))[_0x746a('0x47')](handleError(_0x919096,null));};exports[_0x746a('0x48')]=function(_0x3c57e2,_0x309608){var _0x4885a4={'raw':![],'where':{'id':_0x3c57e2['params']['id']}},_0x56177d={};_0x56177d[_0x746a('0x33')]=_[_0x746a('0x34')](db[_0x746a('0x42')][_0x746a('0x30')]);_0x56177d[_0x746a('0x35')]=_[_0x746a('0x34')](_0x3c57e2['query']);_0x56177d[_0x746a('0x3d')]=_[_0x746a('0x36')](_0x56177d[_0x746a('0x33')],_0x56177d[_0x746a('0x35')]);_0x4885a4[_0x746a('0x38')]=_['intersection'](_0x56177d[_0x746a('0x33')],qs[_0x746a('0x37')](_0x3c57e2['query'][_0x746a('0x37')]));_0x4885a4[_0x746a('0x38')]=_0x4885a4['attributes'][_0x746a('0x39')]?_0x4885a4[_0x746a('0x38')]:_0x56177d[_0x746a('0x33')];if(_0x3c57e2[_0x746a('0x35')][_0x746a('0x43')]){_0x4885a4[_0x746a('0x44')]=[{'all':!![]}];}_0x4885a4=_[_0x746a('0x49')]({},_0x4885a4,_0x3c57e2['options']);return db['AnalyticFieldReport'][_0x746a('0x4a')](_0x4885a4)[_0x746a('0x28')](handleEntityNotFound(_0x309608,null))[_0x746a('0x28')](respondWithResult(_0x309608,null))[_0x746a('0x47')](handleError(_0x309608,null));};exports[_0x746a('0x4b')]=function(_0xd14773,_0x5f1f89){return db[_0x746a('0x42')]['create'](_0xd14773['body'],{})['then'](respondWithResult(_0x5f1f89,0xc9))[_0x746a('0x47')](handleError(_0x5f1f89,null));};exports[_0x746a('0x4c')]=function(_0x361f88,_0x58cefc){return db['AnalyticFieldReport'][_0x746a('0x4c')](_0x361f88['body'],{'raw':![],'individualHooks':!![]})[_0x746a('0x28')](respondWithResult(_0x58cefc,0xc9))[_0x746a('0x47')](handleError(_0x58cefc,null));};exports[_0x746a('0x4d')]=function(_0x221db4,_0x3e6c9e){if(_0x221db4['body']['id']){delete _0x221db4[_0x746a('0x4e')]['id'];}return db[_0x746a('0x42')]['find']({'where':{'id':_0x221db4[_0x746a('0x4f')]['id']}})[_0x746a('0x28')](handleEntityNotFound(_0x3e6c9e,null))[_0x746a('0x28')](saveUpdates(_0x221db4[_0x746a('0x4e')],null))[_0x746a('0x28')](respondWithResult(_0x3e6c9e,null))[_0x746a('0x47')](handleError(_0x3e6c9e,null));};exports[_0x746a('0x29')]=function(_0x28fe11,_0xe6569a){return db[_0x746a('0x42')][_0x746a('0x4a')]({'where':{'id':_0x28fe11[_0x746a('0x4f')]['id']}})[_0x746a('0x28')](handleEntityNotFound(_0xe6569a,null))[_0x746a('0x28')](removeEntity(_0xe6569a,null))[_0x746a('0x47')](handleError(_0xe6569a,null));};exports[_0x746a('0x50')]=function(_0x5dfbb2,_0x56b9bd){return db['AnalyticFieldReport']['destroy']({'where':{'id':_0x5dfbb2[_0x746a('0x35')][_0x746a('0x51')]||[]},'raw':![],'individualHooks':!![]})[_0x746a('0x28')](respondWithResult(_0x56b9bd,0xcc))[_0x746a('0x47')](handleError(_0x56b9bd,null));};exports[_0x746a('0x52')]=function(_0xa9e552,_0x2c503b,_0x42c454){return db[_0x746a('0x53')][_0x746a('0x54')]({'where':{'id':_0xa9e552['params']['id']}})[_0x746a('0x28')](handleEntityNotFound(_0x2c503b,null))[_0x746a('0x28')](function(_0x3d1b9d){if(_0x3d1b9d){return db[_0x746a('0x55')][_0x746a('0x56')](function(_0x44afee){return db[_0x746a('0x42')][_0x746a('0x29')]({'where':{'CustomReportId':_0xa9e552['params']['id']},'transaction':_0x44afee})['then'](function(_0x1e7511){var _0x38f4a9=_['map'](_0xa9e552['body'],function(_0x2a5018){delete _0x2a5018['id'];_0x2a5018['CustomReportId']=_0xa9e552[_0x746a('0x4f')]['id'];return _0x2a5018;});return db['AnalyticFieldReport']['bulkCreate'](_0x38f4a9,{'transaction':_0x44afee});});})[_0x746a('0x28')](function(){return db['AnalyticFieldReport'][_0x746a('0x45')]({'where':{'CustomReportId':_0xa9e552[_0x746a('0x4f')]['id']}});});}})['then'](respondWithResult(_0x2c503b,null))['catch'](handleError(_0x2c503b,null));};
\ No newline at end of file
+var _0x78b5=['count','set','Content-Range','json','apply','save','destroy','end','sendStatus','error','stack','name','send','index','map','AnalyticFieldReport','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','order','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','then','rows','catch','show','find','bulkCreate','body','params','bulkDestroy','ids','addFields','AnalyticCustomReport','transaction','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','status','offset','undefined','limit'];(function(_0x153e7d,_0x10a35f){var _0x3c22dd=function(_0x4d33f6){while(--_0x4d33f6){_0x153e7d['push'](_0x153e7d['shift']());}};_0x3c22dd(++_0x10a35f);}(_0x78b5,0x87));var _0x578b=function(_0x5ec2eb,_0x5111ec){_0x5ec2eb=_0x5ec2eb-0x0;var _0x5e1a3d=_0x78b5[_0x5ec2eb];return _0x5e1a3d;};'use strict';var emlformat=require(_0x578b('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x578b('0x1'));var jsonpatch=require(_0x578b('0x2'));var rp=require(_0x578b('0x3'));var moment=require(_0x578b('0x4'));var BPromise=require(_0x578b('0x5'));var Mustache=require(_0x578b('0x6'));var util=require(_0x578b('0x7'));var path=require(_0x578b('0x8'));var sox=require(_0x578b('0x9'));var csv=require(_0x578b('0xa'));var ejs=require(_0x578b('0xb'));var fs=require('fs');var fs_extra=require(_0x578b('0xc'));var _=require(_0x578b('0xd'));var squel=require(_0x578b('0xe'));var crypto=require(_0x578b('0xf'));var jsforce=require('jsforce');var deskjs=require(_0x578b('0x10'));var toCsv=require(_0x578b('0xa'));var querystring=require(_0x578b('0x11'));var Papa=require(_0x578b('0x12'));var Redis=require(_0x578b('0x13'));var authService=require(_0x578b('0x14'));var qs=require(_0x578b('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x578b('0x16'))(_0x578b('0x17'));var utils=require(_0x578b('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x578b('0x19'));var db=require(_0x578b('0x1a'))['db'];function respondWithStatusCode(_0x20e99b,_0x3a8794){_0x3a8794=_0x3a8794||0xcc;return function(_0x305452){if(_0x305452){return _0x20e99b['sendStatus'](_0x3a8794);}return _0x20e99b['status'](_0x3a8794)['end']();};}function respondWithResult(_0x4a23e8,_0x5786b7){_0x5786b7=_0x5786b7||0xc8;return function(_0x49dc5b){if(_0x49dc5b){return _0x4a23e8[_0x578b('0x1b')](_0x5786b7)['json'](_0x49dc5b);}};}function respondWithFilteredResult(_0x16d018,_0x31db3c){return function(_0x3b03be){if(_0x3b03be){var _0xd97114=typeof _0x31db3c[_0x578b('0x1c')]===_0x578b('0x1d')&&typeof _0x31db3c[_0x578b('0x1e')]===_0x578b('0x1d');var _0x1c62a0=_0x3b03be['count'];var _0x1a42ab=_0xd97114?0x0:_0x31db3c[_0x578b('0x1c')];var _0x41d3c0=_0xd97114?_0x3b03be[_0x578b('0x1f')]:_0x31db3c['offset']+_0x31db3c[_0x578b('0x1e')];var _0x3968c3;if(_0x41d3c0>=_0x1c62a0){_0x41d3c0=_0x1c62a0;_0x3968c3=0xc8;}else{_0x3968c3=0xce;}_0x16d018[_0x578b('0x1b')](_0x3968c3);return _0x16d018[_0x578b('0x20')](_0x578b('0x21'),_0x1a42ab+'-'+_0x41d3c0+'/'+_0x1c62a0)[_0x578b('0x22')](_0x3b03be);}return null;};}function patchUpdates(_0x14d94b){return function(_0x3c093a){try{jsonpatch[_0x578b('0x23')](_0x3c093a,_0x14d94b,!![]);}catch(_0x3e6db1){return BPromise['reject'](_0x3e6db1);}return _0x3c093a[_0x578b('0x24')]();};}function saveUpdates(_0xe6a42,_0x352905){return function(_0x35ceec){if(_0x35ceec){return _0x35ceec['update'](_0xe6a42)['then'](function(_0x4fef0f){return _0x4fef0f;});}return null;};}function removeEntity(_0x5261ee,_0x18af9b){return function(_0x2e1a1b){if(_0x2e1a1b){return _0x2e1a1b[_0x578b('0x25')]()['then'](function(){_0x5261ee[_0x578b('0x1b')](0xcc)[_0x578b('0x26')]();});}};}function handleEntityNotFound(_0x2893b2,_0x182886){return function(_0x4a86c6){if(!_0x4a86c6){_0x2893b2[_0x578b('0x27')](0x194);}return _0x4a86c6;};}function handleError(_0x2020df,_0x59ce37){_0x59ce37=_0x59ce37||0x1f4;return function(_0x4ca16b){logger[_0x578b('0x28')](_0x4ca16b[_0x578b('0x29')]);if(_0x4ca16b[_0x578b('0x2a')]){delete _0x4ca16b['name'];}_0x2020df[_0x578b('0x1b')](_0x59ce37)[_0x578b('0x2b')](_0x4ca16b);};}exports[_0x578b('0x2c')]=function(_0x4b850c,_0x44df1d){var _0x1f342c={},_0x27f23c={},_0x21ec3b={'count':0x0,'rows':[]};var _0x2d67ed=_[_0x578b('0x2d')](db[_0x578b('0x2e')][_0x578b('0x2f')],function(_0xd2df45){return{'name':_0xd2df45[_0x578b('0x30')],'type':_0xd2df45[_0x578b('0x31')][_0x578b('0x32')]};});_0x27f23c[_0x578b('0x33')]=_[_0x578b('0x2d')](_0x2d67ed,_0x578b('0x2a'));_0x27f23c[_0x578b('0x34')]=_[_0x578b('0x35')](_0x4b850c['query']);_0x27f23c[_0x578b('0x36')]=_['intersection'](_0x27f23c[_0x578b('0x33')],_0x27f23c[_0x578b('0x34')]);_0x1f342c['attributes']=_[_0x578b('0x37')](_0x27f23c[_0x578b('0x33')],qs[_0x578b('0x38')](_0x4b850c[_0x578b('0x34')][_0x578b('0x38')]));_0x1f342c[_0x578b('0x39')]=_0x1f342c[_0x578b('0x39')][_0x578b('0x3a')]?_0x1f342c['attributes']:_0x27f23c['model'];if(!_0x4b850c[_0x578b('0x34')][_0x578b('0x3b')]('nolimit')){_0x1f342c[_0x578b('0x1e')]=qs[_0x578b('0x1e')](_0x4b850c[_0x578b('0x34')][_0x578b('0x1e')]);_0x1f342c[_0x578b('0x1c')]=qs[_0x578b('0x1c')](_0x4b850c['query'][_0x578b('0x1c')]);}_0x1f342c[_0x578b('0x3c')]=qs['sort'](_0x4b850c[_0x578b('0x34')]['sort']);_0x1f342c[_0x578b('0x3d')]=qs[_0x578b('0x36')](_[_0x578b('0x3e')](_0x4b850c[_0x578b('0x34')],_0x27f23c['filters']),_0x2d67ed);if(_0x4b850c[_0x578b('0x34')][_0x578b('0x3f')]){_0x1f342c[_0x578b('0x3d')]=_[_0x578b('0x40')](_0x1f342c[_0x578b('0x3d')],{'$or':_['map'](_0x2d67ed,function(_0x34acde){if(_0x34acde[_0x578b('0x31')]!==_0x578b('0x41')){var _0x4246a3={};_0x4246a3[_0x34acde[_0x578b('0x2a')]]={'$like':'%'+_0x4b850c[_0x578b('0x34')][_0x578b('0x3f')]+'%'};return _0x4246a3;}})});}_0x1f342c=_['merge']({},_0x1f342c,_0x4b850c[_0x578b('0x42')]);var _0x44c081={'where':_0x1f342c[_0x578b('0x3d')]};return db[_0x578b('0x2e')]['count'](_0x44c081)['then'](function(_0x4b6ba1){_0x21ec3b[_0x578b('0x1f')]=_0x4b6ba1;if(_0x4b850c['query'][_0x578b('0x43')]){_0x1f342c[_0x578b('0x44')]=[{'all':!![]}];}return db[_0x578b('0x2e')][_0x578b('0x45')](_0x1f342c);})[_0x578b('0x46')](function(_0x12a6c8){_0x21ec3b[_0x578b('0x47')]=_0x12a6c8;return _0x21ec3b;})['then'](respondWithFilteredResult(_0x44df1d,_0x1f342c))[_0x578b('0x48')](handleError(_0x44df1d,null));};exports[_0x578b('0x49')]=function(_0xa110cb,_0x27dc78){var _0x28f5ad={'raw':![],'where':{'id':_0xa110cb['params']['id']}},_0x2c33b2={};_0x2c33b2['model']=_[_0x578b('0x35')](db['AnalyticFieldReport'][_0x578b('0x2f')]);_0x2c33b2[_0x578b('0x34')]=_[_0x578b('0x35')](_0xa110cb[_0x578b('0x34')]);_0x2c33b2[_0x578b('0x36')]=_['intersection'](_0x2c33b2['model'],_0x2c33b2[_0x578b('0x34')]);_0x28f5ad[_0x578b('0x39')]=_[_0x578b('0x37')](_0x2c33b2[_0x578b('0x33')],qs[_0x578b('0x38')](_0xa110cb['query'][_0x578b('0x38')]));_0x28f5ad[_0x578b('0x39')]=_0x28f5ad[_0x578b('0x39')][_0x578b('0x3a')]?_0x28f5ad['attributes']:_0x2c33b2[_0x578b('0x33')];if(_0xa110cb[_0x578b('0x34')][_0x578b('0x43')]){_0x28f5ad[_0x578b('0x44')]=[{'all':!![]}];}_0x28f5ad=_['merge']({},_0x28f5ad,_0xa110cb['options']);return db[_0x578b('0x2e')][_0x578b('0x4a')](_0x28f5ad)[_0x578b('0x46')](handleEntityNotFound(_0x27dc78,null))[_0x578b('0x46')](respondWithResult(_0x27dc78,null))[_0x578b('0x48')](handleError(_0x27dc78,null));};exports['create']=function(_0x3342f7,_0x278893){return db[_0x578b('0x2e')]['create'](_0x3342f7['body'],{})['then'](respondWithResult(_0x278893,0xc9))[_0x578b('0x48')](handleError(_0x278893,null));};exports[_0x578b('0x4b')]=function(_0x2cb12b,_0x591c79){return db['AnalyticFieldReport']['bulkCreate'](_0x2cb12b[_0x578b('0x4c')],{'raw':![],'individualHooks':!![]})[_0x578b('0x46')](respondWithResult(_0x591c79,0xc9))[_0x578b('0x48')](handleError(_0x591c79,null));};exports['update']=function(_0x8ad0fe,_0x3ff47d){if(_0x8ad0fe[_0x578b('0x4c')]['id']){delete _0x8ad0fe[_0x578b('0x4c')]['id'];}return db[_0x578b('0x2e')][_0x578b('0x4a')]({'where':{'id':_0x8ad0fe[_0x578b('0x4d')]['id']}})[_0x578b('0x46')](handleEntityNotFound(_0x3ff47d,null))[_0x578b('0x46')](saveUpdates(_0x8ad0fe[_0x578b('0x4c')],null))[_0x578b('0x46')](respondWithResult(_0x3ff47d,null))[_0x578b('0x48')](handleError(_0x3ff47d,null));};exports[_0x578b('0x25')]=function(_0x1bddef,_0x270442){return db['AnalyticFieldReport'][_0x578b('0x4a')]({'where':{'id':_0x1bddef[_0x578b('0x4d')]['id']}})[_0x578b('0x46')](handleEntityNotFound(_0x270442,null))[_0x578b('0x46')](removeEntity(_0x270442,null))['catch'](handleError(_0x270442,null));};exports[_0x578b('0x4e')]=function(_0x32d7c7,_0x232e4e){return db[_0x578b('0x2e')][_0x578b('0x25')]({'where':{'id':_0x32d7c7['query'][_0x578b('0x4f')]||[]},'raw':![],'individualHooks':!![]})[_0x578b('0x46')](respondWithResult(_0x232e4e,0xcc))[_0x578b('0x48')](handleError(_0x232e4e,null));};exports[_0x578b('0x50')]=function(_0x450ef0,_0x437cc3,_0x34e08c){return db[_0x578b('0x51')]['findOne']({'where':{'id':_0x450ef0[_0x578b('0x4d')]['id']}})[_0x578b('0x46')](handleEntityNotFound(_0x437cc3,null))[_0x578b('0x46')](function(_0x2caed6){if(_0x2caed6){return db['sequelize'][_0x578b('0x52')](function(_0x5404e4){return db[_0x578b('0x2e')][_0x578b('0x25')]({'where':{'CustomReportId':_0x450ef0[_0x578b('0x4d')]['id']},'transaction':_0x5404e4})[_0x578b('0x46')](function(_0x158fef){var _0xb27a4d=_['map'](_0x450ef0[_0x578b('0x4c')],function(_0x5c8ef3){delete _0x5c8ef3['id'];_0x5c8ef3['CustomReportId']=_0x450ef0[_0x578b('0x4d')]['id'];return _0x5c8ef3;});return db[_0x578b('0x2e')]['bulkCreate'](_0xb27a4d,{'transaction':_0x5404e4});});})[_0x578b('0x46')](function(){return db[_0x578b('0x2e')][_0x578b('0x45')]({'where':{'CustomReportId':_0x450ef0[_0x578b('0x4d')]['id']}});});}})[_0x578b('0x46')](respondWithResult(_0x437cc3,null))[_0x578b('0x48')](handleError(_0x437cc3,null));};
\ No newline at end of file
index ac984eb..f042053 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8123=['path','rimraf','../../config/environment','exports','define','AnalyticFieldReport','analytics_report_fields','../../config/logger','api','moment','bluebird'];(function(_0x1167dc,_0x4fe3ff){var _0x47ff3d=function(_0x223c52){while(--_0x223c52){_0x1167dc['push'](_0x1167dc['shift']());}};_0x47ff3d(++_0x4fe3ff);}(_0x8123,0x167));var _0x3812=function(_0x31eb67,_0x9bc8c0){_0x31eb67=_0x31eb67-0x0;var _0x2a8cb8=_0x8123[_0x31eb67];return _0x2a8cb8;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x3812('0x0'))(_0x3812('0x1'));var moment=require(_0x3812('0x2'));var BPromise=require(_0x3812('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x3812('0x4'));var rimraf=require(_0x3812('0x5'));var config=require(_0x3812('0x6'));var attributes=require('./analyticFieldReport.attributes');module[_0x3812('0x7')]=function(_0x1b6581,_0x129ecf){return _0x1b6581[_0x3812('0x8')](_0x3812('0x9'),attributes,{'tableName':_0x3812('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8f6b=['../../config/environment','define','AnalyticFieldReport','analytics_report_fields','../../config/logger','api','moment','path','rimraf'];(function(_0x1fa335,_0x23158b){var _0x445516=function(_0x172963){while(--_0x172963){_0x1fa335['push'](_0x1fa335['shift']());}};_0x445516(++_0x23158b);}(_0x8f6b,0x190));var _0xb8f6=function(_0x92c450,_0x41f1e3){_0x92c450=_0x92c450-0x0;var _0x2a9599=_0x8f6b[_0x92c450];return _0x2a9599;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xb8f6('0x0'))(_0xb8f6('0x1'));var moment=require(_0xb8f6('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xb8f6('0x3'));var rimraf=require(_0xb8f6('0x4'));var config=require(_0xb8f6('0x5'));var attributes=require('./analyticFieldReport.attributes');module['exports']=function(_0x3d81eb,_0x21b262){return _0x3d81eb[_0xb8f6('0x6')](_0xb8f6('0x7'),attributes,{'tableName':_0xb8f6('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c9a11cd..29cdf8e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9cba=['jayson/promise','http','request','then','info','AnalyticFieldReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticFieldReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment'];(function(_0x15a21b,_0x5e7ddc){var _0x4f69c8=function(_0x225f12){while(--_0x225f12){_0x15a21b['push'](_0x15a21b['shift']());}};_0x4f69c8(++_0x5e7ddc);}(_0x9cba,0x1b0));var _0xa9cb=function(_0xb0f7c3,_0x4eae95){_0xb0f7c3=_0xb0f7c3-0x0;var _0x28ea68=_0x9cba[_0xb0f7c3];return _0x28ea68;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xa9cb('0x0'));var BPromise=require(_0xa9cb('0x1'));var rs=require(_0xa9cb('0x2'));var fs=require('fs');var Redis=require(_0xa9cb('0x3'));var db=require(_0xa9cb('0x4'))['db'];var utils=require(_0xa9cb('0x5'));var logger=require('../../config/logger')(_0xa9cb('0x6'));var config=require(_0xa9cb('0x7'));var jayson=require(_0xa9cb('0x8'));var client=jayson['client'][_0xa9cb('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4ca031,_0xae037a,_0x442276){return new BPromise(function(_0x21052d,_0x1a128a){return client[_0xa9cb('0xa')](_0x4ca031,_0x442276)[_0xa9cb('0xb')](function(_0x35a060){logger[_0xa9cb('0xc')](_0xa9cb('0xd'),_0xae037a,_0xa9cb('0xe'));logger[_0xa9cb('0xf')](_0xa9cb('0x10'),_0xae037a,_0xa9cb('0xe'),JSON[_0xa9cb('0x11')](_0x35a060));if(_0x35a060[_0xa9cb('0x12')]){if(_0x35a060[_0xa9cb('0x12')]['code']===0x1f4){logger[_0xa9cb('0x12')](_0xa9cb('0xd'),_0xae037a,_0x35a060[_0xa9cb('0x12')]['message']);return _0x1a128a(_0x35a060[_0xa9cb('0x12')][_0xa9cb('0x13')]);}logger['error'](_0xa9cb('0xd'),_0xae037a,_0x35a060[_0xa9cb('0x12')][_0xa9cb('0x13')]);return _0x21052d(_0x35a060[_0xa9cb('0x12')][_0xa9cb('0x13')]);}else{logger[_0xa9cb('0xc')](_0xa9cb('0xd'),_0xae037a,_0xa9cb('0xe'));_0x21052d(_0x35a060[_0xa9cb('0x14')][_0xa9cb('0x13')]);}})[_0xa9cb('0x15')](function(_0x496a75){logger[_0xa9cb('0x12')](_0xa9cb('0xd'),_0xae037a,_0x496a75);_0x1a128a(_0x496a75);});});}
\ No newline at end of file
+var _0xf759=['../../config/environment','client','http','request','then','info','request\x20sent','stringify','error','code','message','AnalyticFieldReport,\x20%s,\x20%s','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger'];(function(_0x5c6299,_0x11bd28){var _0x23b564=function(_0x329ed6){while(--_0x329ed6){_0x5c6299['push'](_0x5c6299['shift']());}};_0x23b564(++_0x11bd28);}(_0xf759,0x1db));var _0x9f75=function(_0x35070f,_0x4fabd3){_0x35070f=_0x35070f-0x0;var _0x123549=_0xf759[_0x35070f];return _0x123549;};'use strict';var _=require(_0x9f75('0x0'));var util=require(_0x9f75('0x1'));var moment=require(_0x9f75('0x2'));var BPromise=require(_0x9f75('0x3'));var rs=require(_0x9f75('0x4'));var fs=require('fs');var Redis=require(_0x9f75('0x5'));var db=require(_0x9f75('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x9f75('0x7'))('rpc');var config=require(_0x9f75('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x9f75('0x9')][_0x9f75('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x56550b,_0x2faec1,_0x42ac34){return new BPromise(function(_0x2c8634,_0x18fe57){return client[_0x9f75('0xb')](_0x56550b,_0x42ac34)[_0x9f75('0xc')](function(_0x4d0f83){logger[_0x9f75('0xd')]('AnalyticFieldReport,\x20%s,\x20%s',_0x2faec1,_0x9f75('0xe'));logger['debug']('AnalyticFieldReport,\x20%s,\x20%s,\x20%s',_0x2faec1,_0x9f75('0xe'),JSON[_0x9f75('0xf')](_0x4d0f83));if(_0x4d0f83[_0x9f75('0x10')]){if(_0x4d0f83[_0x9f75('0x10')][_0x9f75('0x11')]===0x1f4){logger['error']('AnalyticFieldReport,\x20%s,\x20%s',_0x2faec1,_0x4d0f83[_0x9f75('0x10')][_0x9f75('0x12')]);return _0x18fe57(_0x4d0f83['error'][_0x9f75('0x12')]);}logger[_0x9f75('0x10')](_0x9f75('0x13'),_0x2faec1,_0x4d0f83['error']['message']);return _0x2c8634(_0x4d0f83[_0x9f75('0x10')]['message']);}else{logger['info']('AnalyticFieldReport,\x20%s,\x20%s',_0x2faec1,_0x9f75('0xe'));_0x2c8634(_0x4d0f83['result'][_0x9f75('0x12')]);}})[_0x9f75('0x14')](function(_0x549ed8){logger[_0x9f75('0x10')]('AnalyticFieldReport,\x20%s,\x20%s',_0x2faec1,_0x549ed8);_0x18fe57(_0x549ed8);});});}
\ No newline at end of file
index 0a3123a..256fee7 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(_0xd4358b,_0x19a430){var _0xa91959=function(_0x1bedad){while(--_0x1bedad){_0xd4358b['push'](_0xd4358b['shift']());}};_0xa91959(++_0x19a430);}(_0xa9e0,0x123));var _0x0a9e=function(_0x32d457,_0x1a39c9){_0x32d457=_0x32d457-0x0;var _0x338386=_0xa9e0[_0x32d457];return _0x338386;};'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(_0xafc244,_0x19c0ae){var _0xb91010=function(_0x43eac0){while(--_0x43eac0){_0xafc244['push'](_0xafc244['shift']());}};_0xb91010(++_0x19c0ae);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0xa9e0[_0x2f5ac5];return _0x37c9a8;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('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 28d8d9f..d9ab78f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c50=['TEXT','exports','STRING'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x8c50,0xcd));var _0x08c5=function(_0x77858d,_0xd00630){_0x77858d=_0x77858d-0x0;var _0x4d938b=_0x8c50[_0x77858d];return _0x4d938b;};'use strict';var Sequelize=require('sequelize');module[_0x08c5('0x0')]={'name':{'type':Sequelize[_0x08c5('0x1')],'allowNull':![],'unique':'name'},'table':{'type':Sequelize[_0x08c5('0x1')]},'metric':{'type':Sequelize[_0x08c5('0x2')]},'description':{'type':Sequelize[_0x08c5('0x1')]}};
\ No newline at end of file
+var _0x74f4=['name','STRING','sequelize','exports'];(function(_0x298ed3,_0x4ab5e1){var _0x5aad28=function(_0x168687){while(--_0x168687){_0x298ed3['push'](_0x298ed3['shift']());}};_0x5aad28(++_0x4ab5e1);}(_0x74f4,0xaa));var _0x474f=function(_0xc24afb,_0x28b485){_0xc24afb=_0xc24afb-0x0;var _0x1a9afe=_0x74f4[_0xc24afb];return _0x1a9afe;};'use strict';var Sequelize=require(_0x474f('0x0'));module[_0x474f('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x474f('0x2')},'table':{'type':Sequelize[_0x474f('0x3')]},'metric':{'type':Sequelize['TEXT']},'description':{'type':Sequelize[_0x474f('0x3')]}};
\ No newline at end of file
index aed1ff0..6c13578 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b84=['status','end','json','limit','count','offset','set','Content-Range','apply','reject','save','update','then','destroy','get','Metrics','UserProfileResource','sendStatus','stack','name','map','AnalyticMetric','rawAttributes','fieldName','type','key','query','keys','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','catch','show','params','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','request-promise','mustache','util','path','fs-extra','squel','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb'];(function(_0x21273e,_0x29e20f){var _0x380679=function(_0x266f4d){while(--_0x266f4d){_0x21273e['push'](_0x21273e['shift']());}};_0x380679(++_0x29e20f);}(_0x4b84,0x1cc));var _0x44b8=function(_0x32f05c,_0x273aef){_0x32f05c=_0x32f05c-0x0;var _0x4307ed=_0x4b84[_0x32f05c];return _0x4307ed;};'use strict';var emlformat=require(_0x44b8('0x0'));var rimraf=require(_0x44b8('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x44b8('0x2'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x44b8('0x3'));var util=require(_0x44b8('0x4'));var path=require(_0x44b8('0x5'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x44b8('0x6'));var _=require('lodash');var squel=require(_0x44b8('0x7'));var crypto=require('crypto');var jsforce=require(_0x44b8('0x8'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x44b8('0x9'));var Papa=require(_0x44b8('0xa'));var Redis=require(_0x44b8('0xb'));var authService=require('../../components/auth/service');var qs=require(_0x44b8('0xc'));var as=require(_0x44b8('0xd'));var hardwareService=require(_0x44b8('0xe'));var logger=require(_0x44b8('0xf'))(_0x44b8('0x10'));var utils=require(_0x44b8('0x11'));var config=require(_0x44b8('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0x44b8('0x13'))['db'];function respondWithStatusCode(_0x4301a6,_0x4bcc43){_0x4bcc43=_0x4bcc43||0xcc;return function(_0x194230){if(_0x194230){return _0x4301a6['sendStatus'](_0x4bcc43);}return _0x4301a6[_0x44b8('0x14')](_0x4bcc43)[_0x44b8('0x15')]();};}function respondWithResult(_0x4df670,_0x63e8f6){_0x63e8f6=_0x63e8f6||0xc8;return function(_0x4be54c){if(_0x4be54c){return _0x4df670['status'](_0x63e8f6)[_0x44b8('0x16')](_0x4be54c);}};}function respondWithFilteredResult(_0x2af0ad,_0x1722da){return function(_0x41ab46){if(_0x41ab46){var _0x5e52f2=typeof _0x1722da['offset']==='undefined'&&typeof _0x1722da[_0x44b8('0x17')]==='undefined';var _0x28ef36=_0x41ab46[_0x44b8('0x18')];var _0x55e258=_0x5e52f2?0x0:_0x1722da[_0x44b8('0x19')];var _0xe3de8f=_0x5e52f2?_0x41ab46['count']:_0x1722da[_0x44b8('0x19')]+_0x1722da[_0x44b8('0x17')];var _0x4b600f;if(_0xe3de8f>=_0x28ef36){_0xe3de8f=_0x28ef36;_0x4b600f=0xc8;}else{_0x4b600f=0xce;}_0x2af0ad[_0x44b8('0x14')](_0x4b600f);return _0x2af0ad[_0x44b8('0x1a')](_0x44b8('0x1b'),_0x55e258+'-'+_0xe3de8f+'/'+_0x28ef36)[_0x44b8('0x16')](_0x41ab46);}return null;};}function patchUpdates(_0x102ef9){return function(_0x369c09){try{jsonpatch[_0x44b8('0x1c')](_0x369c09,_0x102ef9,!![]);}catch(_0x9b0536){return BPromise[_0x44b8('0x1d')](_0x9b0536);}return _0x369c09[_0x44b8('0x1e')]();};}function saveUpdates(_0x1d642b,_0x14996c){return function(_0x48327e){if(_0x48327e){return _0x48327e[_0x44b8('0x1f')](_0x1d642b)[_0x44b8('0x20')](function(_0x416b34){return _0x416b34;});}return null;};}function removeEntity(_0x1418db,_0x305a5c){return function(_0x51a34a){if(_0x51a34a){return _0x51a34a[_0x44b8('0x21')]()['then'](function(){var _0x41a922=_0x51a34a[_0x44b8('0x22')]({'plain':!![]});var _0x25a0c1=_0x44b8('0x23');return db[_0x44b8('0x24')]['destroy']({'where':{'type':_0x25a0c1,'resourceId':_0x41a922['id']}})[_0x44b8('0x20')](function(){return _0x51a34a;});})['then'](function(){_0x1418db[_0x44b8('0x14')](0xcc)[_0x44b8('0x15')]();});}};}function handleEntityNotFound(_0x549a26,_0x17ac44){return function(_0x470f49){if(!_0x470f49){_0x549a26[_0x44b8('0x25')](0x194);}return _0x470f49;};}function handleError(_0x59c1bf,_0xb22107){_0xb22107=_0xb22107||0x1f4;return function(_0x242342){logger['error'](_0x242342[_0x44b8('0x26')]);if(_0x242342['name']){delete _0x242342[_0x44b8('0x27')];}_0x59c1bf['status'](_0xb22107)['send'](_0x242342);};}exports['index']=function(_0x387293,_0x29b18d){var _0x44ce5a={},_0x1bd1be={},_0x38cd17={'count':0x0,'rows':[]};var _0xc3f667=_[_0x44b8('0x28')](db[_0x44b8('0x29')][_0x44b8('0x2a')],function(_0x28f918){return{'name':_0x28f918[_0x44b8('0x2b')],'type':_0x28f918[_0x44b8('0x2c')][_0x44b8('0x2d')]};});_0x1bd1be['model']=_[_0x44b8('0x28')](_0xc3f667,'name');_0x1bd1be[_0x44b8('0x2e')]=_[_0x44b8('0x2f')](_0x387293[_0x44b8('0x2e')]);_0x1bd1be[_0x44b8('0x30')]=_[_0x44b8('0x31')](_0x1bd1be['model'],_0x1bd1be[_0x44b8('0x2e')]);_0x44ce5a[_0x44b8('0x32')]=_[_0x44b8('0x31')](_0x1bd1be[_0x44b8('0x33')],qs[_0x44b8('0x34')](_0x387293['query'][_0x44b8('0x34')]));_0x44ce5a[_0x44b8('0x32')]=_0x44ce5a[_0x44b8('0x32')][_0x44b8('0x35')]?_0x44ce5a[_0x44b8('0x32')]:_0x1bd1be[_0x44b8('0x33')];if(!_0x387293[_0x44b8('0x2e')][_0x44b8('0x36')](_0x44b8('0x37'))){_0x44ce5a[_0x44b8('0x17')]=qs[_0x44b8('0x17')](_0x387293[_0x44b8('0x2e')][_0x44b8('0x17')]);_0x44ce5a[_0x44b8('0x19')]=qs[_0x44b8('0x19')](_0x387293[_0x44b8('0x2e')][_0x44b8('0x19')]);}_0x44ce5a[_0x44b8('0x38')]=qs[_0x44b8('0x39')](_0x387293[_0x44b8('0x2e')][_0x44b8('0x39')]);_0x44ce5a[_0x44b8('0x3a')]=qs['filters'](_[_0x44b8('0x3b')](_0x387293[_0x44b8('0x2e')],_0x1bd1be['filters']),_0xc3f667);if(_0x387293[_0x44b8('0x2e')][_0x44b8('0x3c')]){_0x44ce5a[_0x44b8('0x3a')]=_[_0x44b8('0x3d')](_0x44ce5a['where'],{'$or':_[_0x44b8('0x28')](_0xc3f667,function(_0x11e4e3){if(_0x11e4e3[_0x44b8('0x2c')]!==_0x44b8('0x3e')){var _0x9cb2a={};_0x9cb2a[_0x11e4e3[_0x44b8('0x27')]]={'$like':'%'+_0x387293[_0x44b8('0x2e')][_0x44b8('0x3c')]+'%'};return _0x9cb2a;}})});}_0x44ce5a=_[_0x44b8('0x3d')]({},_0x44ce5a,_0x387293[_0x44b8('0x3f')]);var _0x1c9983={'where':_0x44ce5a[_0x44b8('0x3a')]};return db[_0x44b8('0x29')][_0x44b8('0x18')](_0x1c9983)[_0x44b8('0x20')](function(_0x29b43f){_0x38cd17['count']=_0x29b43f;if(_0x387293[_0x44b8('0x2e')][_0x44b8('0x40')]){_0x44ce5a[_0x44b8('0x41')]=[{'all':!![]}];}return db['AnalyticMetric'][_0x44b8('0x42')](_0x44ce5a);})[_0x44b8('0x20')](function(_0x229cc9){_0x38cd17['rows']=_0x229cc9;return _0x38cd17;})[_0x44b8('0x20')](respondWithFilteredResult(_0x29b18d,_0x44ce5a))[_0x44b8('0x43')](handleError(_0x29b18d,null));};exports[_0x44b8('0x44')]=function(_0x334f86,_0xfd590a){var _0x499a3e={'raw':!![],'where':{'id':_0x334f86[_0x44b8('0x45')]['id']}},_0x5ae5f9={};_0x5ae5f9[_0x44b8('0x33')]=_[_0x44b8('0x2f')](db[_0x44b8('0x29')][_0x44b8('0x2a')]);_0x5ae5f9[_0x44b8('0x2e')]=_[_0x44b8('0x2f')](_0x334f86[_0x44b8('0x2e')]);_0x5ae5f9[_0x44b8('0x30')]=_[_0x44b8('0x31')](_0x5ae5f9[_0x44b8('0x33')],_0x5ae5f9[_0x44b8('0x2e')]);_0x499a3e[_0x44b8('0x32')]=_[_0x44b8('0x31')](_0x5ae5f9[_0x44b8('0x33')],qs[_0x44b8('0x34')](_0x334f86[_0x44b8('0x2e')][_0x44b8('0x34')]));_0x499a3e[_0x44b8('0x32')]=_0x499a3e['attributes']['length']?_0x499a3e[_0x44b8('0x32')]:_0x5ae5f9[_0x44b8('0x33')];if(_0x334f86[_0x44b8('0x2e')][_0x44b8('0x40')]){_0x499a3e[_0x44b8('0x41')]=[{'all':!![]}];}_0x499a3e=_[_0x44b8('0x3d')]({},_0x499a3e,_0x334f86[_0x44b8('0x3f')]);return db['AnalyticMetric'][_0x44b8('0x46')](_0x499a3e)['then'](handleEntityNotFound(_0xfd590a,null))[_0x44b8('0x20')](respondWithResult(_0xfd590a,null))[_0x44b8('0x43')](handleError(_0xfd590a,null));};exports[_0x44b8('0x47')]=function(_0x9207bf,_0x103d57){return db[_0x44b8('0x29')]['create'](_0x9207bf[_0x44b8('0x48')],{})[_0x44b8('0x20')](function(_0x10602c){var _0x25d266=_0x9207bf['user'][_0x44b8('0x22')]({'plain':!![]});if(!_0x25d266)throw new Error(_0x44b8('0x49'));if(_0x25d266[_0x44b8('0x4a')]===_0x44b8('0x4b')){var _0x44ec23=_0x10602c[_0x44b8('0x22')]({'plain':!![]});var _0x500bad=_0x44b8('0x23');return db[_0x44b8('0x4c')][_0x44b8('0x46')]({'where':{'name':_0x500bad,'userProfileId':_0x25d266[_0x44b8('0x4d')]},'raw':!![]})[_0x44b8('0x20')](function(_0x57d0e2){if(_0x57d0e2&&_0x57d0e2['autoAssociation']===0x0){return db[_0x44b8('0x24')]['create']({'name':_0x44ec23[_0x44b8('0x27')],'resourceId':_0x44ec23['id'],'type':_0x57d0e2['name'],'sectionId':_0x57d0e2['id']},{})[_0x44b8('0x20')](function(){return _0x10602c;});}else{return _0x10602c;}})[_0x44b8('0x43')](function(_0x1a29f6){logger[_0x44b8('0x4e')](_0x44b8('0x4f'),_0x1a29f6);throw _0x1a29f6;});}return _0x10602c;})[_0x44b8('0x20')](respondWithResult(_0x103d57,0xc9))[_0x44b8('0x43')](handleError(_0x103d57,null));};exports['update']=function(_0x3ad278,_0x37b2c2){if(_0x3ad278[_0x44b8('0x48')]['id']){delete _0x3ad278['body']['id'];}return db[_0x44b8('0x29')][_0x44b8('0x46')]({'where':{'id':_0x3ad278[_0x44b8('0x45')]['id']}})[_0x44b8('0x20')](handleEntityNotFound(_0x37b2c2,null))['then'](saveUpdates(_0x3ad278[_0x44b8('0x48')],null))[_0x44b8('0x20')](respondWithResult(_0x37b2c2,null))['catch'](handleError(_0x37b2c2,null));};exports[_0x44b8('0x21')]=function(_0x19f22b,_0x35136e){return db[_0x44b8('0x29')][_0x44b8('0x46')]({'where':{'id':_0x19f22b['params']['id']}})['then'](handleEntityNotFound(_0x35136e,null))[_0x44b8('0x20')](removeEntity(_0x35136e,null))[_0x44b8('0x43')](handleError(_0x35136e,null));};
\ No newline at end of file
+var _0x9957=['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','Metrics','UserProfileResource','end','error','name','map','type','key','model','keys','query','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filters','pick','merge','VIRTUAL','filter','options','AnalyticMetric','include','findAll','rawAttributes','intersection','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','get','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs'];(function(_0x3207aa,_0xe86a72){var _0x51758f=function(_0x9ff790){while(--_0x9ff790){_0x3207aa['push'](_0x3207aa['shift']());}};_0x51758f(++_0xe86a72);}(_0x9957,0x93));var _0x7995=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x9957[_0x19e35c];return _0x3e1fe8;};'use strict';var emlformat=require(_0x7995('0x0'));var rimraf=require(_0x7995('0x1'));var zipdir=require(_0x7995('0x2'));var jsonpatch=require(_0x7995('0x3'));var rp=require('request-promise');var moment=require(_0x7995('0x4'));var BPromise=require(_0x7995('0x5'));var Mustache=require(_0x7995('0x6'));var util=require(_0x7995('0x7'));var path=require('path');var sox=require(_0x7995('0x8'));var csv=require(_0x7995('0x9'));var ejs=require(_0x7995('0xa'));var fs=require('fs');var fs_extra=require(_0x7995('0xb'));var _=require(_0x7995('0xc'));var squel=require(_0x7995('0xd'));var crypto=require('crypto');var jsforce=require(_0x7995('0xe'));var deskjs=require(_0x7995('0xf'));var toCsv=require('to-csv');var querystring=require(_0x7995('0x10'));var Papa=require(_0x7995('0x11'));var Redis=require(_0x7995('0x12'));var authService=require(_0x7995('0x13'));var qs=require(_0x7995('0x14'));var as=require(_0x7995('0x15'));var hardwareService=require(_0x7995('0x16'));var logger=require('../../config/logger')(_0x7995('0x17'));var utils=require(_0x7995('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x7995('0x19'));var db=require(_0x7995('0x1a'))['db'];function respondWithStatusCode(_0x19a27e,_0x385f00){_0x385f00=_0x385f00||0xcc;return function(_0x281576){if(_0x281576){return _0x19a27e[_0x7995('0x1b')](_0x385f00);}return _0x19a27e[_0x7995('0x1c')](_0x385f00)['end']();};}function respondWithResult(_0x58f5ad,_0x2b4e94){_0x2b4e94=_0x2b4e94||0xc8;return function(_0x2233dd){if(_0x2233dd){return _0x58f5ad[_0x7995('0x1c')](_0x2b4e94)[_0x7995('0x1d')](_0x2233dd);}};}function respondWithFilteredResult(_0x3f1d3e,_0x1a5310){return function(_0x2202ce){if(_0x2202ce){var _0x41cbf0=typeof _0x1a5310['offset']===_0x7995('0x1e')&&typeof _0x1a5310['limit']===_0x7995('0x1e');var _0x37f297=_0x2202ce[_0x7995('0x1f')];var _0x291317=_0x41cbf0?0x0:_0x1a5310[_0x7995('0x20')];var _0x37a7d4=_0x41cbf0?_0x2202ce['count']:_0x1a5310['offset']+_0x1a5310[_0x7995('0x21')];var _0x5e6f90;if(_0x37a7d4>=_0x37f297){_0x37a7d4=_0x37f297;_0x5e6f90=0xc8;}else{_0x5e6f90=0xce;}_0x3f1d3e['status'](_0x5e6f90);return _0x3f1d3e[_0x7995('0x22')](_0x7995('0x23'),_0x291317+'-'+_0x37a7d4+'/'+_0x37f297)['json'](_0x2202ce);}return null;};}function patchUpdates(_0x3a9b54){return function(_0x51f276){try{jsonpatch['apply'](_0x51f276,_0x3a9b54,!![]);}catch(_0x3e4c54){return BPromise[_0x7995('0x24')](_0x3e4c54);}return _0x51f276[_0x7995('0x25')]();};}function saveUpdates(_0x1a8568,_0x460924){return function(_0x1c278a){if(_0x1c278a){return _0x1c278a['update'](_0x1a8568)[_0x7995('0x26')](function(_0x46ee4b){return _0x46ee4b;});}return null;};}function removeEntity(_0x204507,_0x285437){return function(_0x563799){if(_0x563799){return _0x563799[_0x7995('0x27')]()[_0x7995('0x26')](function(){var _0x472195=_0x563799['get']({'plain':!![]});var _0x39df42=_0x7995('0x28');return db[_0x7995('0x29')][_0x7995('0x27')]({'where':{'type':_0x39df42,'resourceId':_0x472195['id']}})[_0x7995('0x26')](function(){return _0x563799;});})[_0x7995('0x26')](function(){_0x204507['status'](0xcc)[_0x7995('0x2a')]();});}};}function handleEntityNotFound(_0x5911c3,_0x229742){return function(_0x49bc7e){if(!_0x49bc7e){_0x5911c3[_0x7995('0x1b')](0x194);}return _0x49bc7e;};}function handleError(_0x132a42,_0x11c1eb){_0x11c1eb=_0x11c1eb||0x1f4;return function(_0x4b6f99){logger[_0x7995('0x2b')](_0x4b6f99['stack']);if(_0x4b6f99[_0x7995('0x2c')]){delete _0x4b6f99[_0x7995('0x2c')];}_0x132a42[_0x7995('0x1c')](_0x11c1eb)['send'](_0x4b6f99);};}exports['index']=function(_0x48e573,_0x3573be){var _0xe6b0b3={},_0x327a81={},_0x2b874d={'count':0x0,'rows':[]};var _0x2e3493=_[_0x7995('0x2d')](db['AnalyticMetric']['rawAttributes'],function(_0xfa8f15){return{'name':_0xfa8f15['fieldName'],'type':_0xfa8f15[_0x7995('0x2e')][_0x7995('0x2f')]};});_0x327a81[_0x7995('0x30')]=_[_0x7995('0x2d')](_0x2e3493,_0x7995('0x2c'));_0x327a81['query']=_[_0x7995('0x31')](_0x48e573[_0x7995('0x32')]);_0x327a81['filters']=_['intersection'](_0x327a81['model'],_0x327a81[_0x7995('0x32')]);_0xe6b0b3[_0x7995('0x33')]=_['intersection'](_0x327a81[_0x7995('0x30')],qs['fields'](_0x48e573[_0x7995('0x32')][_0x7995('0x34')]));_0xe6b0b3[_0x7995('0x33')]=_0xe6b0b3['attributes']['length']?_0xe6b0b3[_0x7995('0x33')]:_0x327a81['model'];if(!_0x48e573['query'][_0x7995('0x35')](_0x7995('0x36'))){_0xe6b0b3['limit']=qs[_0x7995('0x21')](_0x48e573[_0x7995('0x32')][_0x7995('0x21')]);_0xe6b0b3[_0x7995('0x20')]=qs[_0x7995('0x20')](_0x48e573['query'][_0x7995('0x20')]);}_0xe6b0b3[_0x7995('0x37')]=qs[_0x7995('0x38')](_0x48e573[_0x7995('0x32')]['sort']);_0xe6b0b3[_0x7995('0x39')]=qs[_0x7995('0x3a')](_[_0x7995('0x3b')](_0x48e573[_0x7995('0x32')],_0x327a81[_0x7995('0x3a')]),_0x2e3493);if(_0x48e573[_0x7995('0x32')]['filter']){_0xe6b0b3[_0x7995('0x39')]=_[_0x7995('0x3c')](_0xe6b0b3[_0x7995('0x39')],{'$or':_[_0x7995('0x2d')](_0x2e3493,function(_0x2e04cd){if(_0x2e04cd[_0x7995('0x2e')]!==_0x7995('0x3d')){var _0x270c0e={};_0x270c0e[_0x2e04cd[_0x7995('0x2c')]]={'$like':'%'+_0x48e573[_0x7995('0x32')][_0x7995('0x3e')]+'%'};return _0x270c0e;}})});}_0xe6b0b3=_[_0x7995('0x3c')]({},_0xe6b0b3,_0x48e573[_0x7995('0x3f')]);var _0x53cda2={'where':_0xe6b0b3['where']};return db[_0x7995('0x40')][_0x7995('0x1f')](_0x53cda2)['then'](function(_0x4b0855){_0x2b874d[_0x7995('0x1f')]=_0x4b0855;if(_0x48e573['query']['includeAll']){_0xe6b0b3[_0x7995('0x41')]=[{'all':!![]}];}return db[_0x7995('0x40')][_0x7995('0x42')](_0xe6b0b3);})['then'](function(_0x46ac4f){_0x2b874d['rows']=_0x46ac4f;return _0x2b874d;})[_0x7995('0x26')](respondWithFilteredResult(_0x3573be,_0xe6b0b3))['catch'](handleError(_0x3573be,null));};exports['show']=function(_0x39c5b8,_0x403f54){var _0xc04e5={'raw':!![],'where':{'id':_0x39c5b8['params']['id']}},_0x3f1c35={};_0x3f1c35[_0x7995('0x30')]=_[_0x7995('0x31')](db[_0x7995('0x40')][_0x7995('0x43')]);_0x3f1c35['query']=_['keys'](_0x39c5b8[_0x7995('0x32')]);_0x3f1c35['filters']=_[_0x7995('0x44')](_0x3f1c35['model'],_0x3f1c35[_0x7995('0x32')]);_0xc04e5['attributes']=_[_0x7995('0x44')](_0x3f1c35[_0x7995('0x30')],qs['fields'](_0x39c5b8[_0x7995('0x32')][_0x7995('0x34')]));_0xc04e5[_0x7995('0x33')]=_0xc04e5[_0x7995('0x33')]['length']?_0xc04e5[_0x7995('0x33')]:_0x3f1c35[_0x7995('0x30')];if(_0x39c5b8[_0x7995('0x32')]['includeAll']){_0xc04e5[_0x7995('0x41')]=[{'all':!![]}];}_0xc04e5=_[_0x7995('0x3c')]({},_0xc04e5,_0x39c5b8[_0x7995('0x3f')]);return db[_0x7995('0x40')][_0x7995('0x45')](_0xc04e5)['then'](handleEntityNotFound(_0x403f54,null))[_0x7995('0x26')](respondWithResult(_0x403f54,null))[_0x7995('0x46')](handleError(_0x403f54,null));};exports['create']=function(_0x3d1dbb,_0x5843ba){return db[_0x7995('0x40')][_0x7995('0x47')](_0x3d1dbb[_0x7995('0x48')],{})[_0x7995('0x26')](function(_0xddf537){var _0x14b537=_0x3d1dbb[_0x7995('0x49')]['get']({'plain':!![]});if(!_0x14b537)throw new Error(_0x7995('0x4a'));if(_0x14b537[_0x7995('0x4b')]===_0x7995('0x49')){var _0x4ffc8a=_0xddf537[_0x7995('0x4c')]({'plain':!![]});var _0x1fe77e=_0x7995('0x28');return db['UserProfileSection']['find']({'where':{'name':_0x1fe77e,'userProfileId':_0x14b537['userProfileId']},'raw':!![]})[_0x7995('0x26')](function(_0x1fd1ca){if(_0x1fd1ca&&_0x1fd1ca['autoAssociation']===0x0){return db[_0x7995('0x29')][_0x7995('0x47')]({'name':_0x4ffc8a[_0x7995('0x2c')],'resourceId':_0x4ffc8a['id'],'type':_0x1fd1ca[_0x7995('0x2c')],'sectionId':_0x1fd1ca['id']},{})[_0x7995('0x26')](function(){return _0xddf537;});}else{return _0xddf537;}})['catch'](function(_0x29ee32){logger['error'](_0x7995('0x4d'),_0x29ee32);throw _0x29ee32;});}return _0xddf537;})[_0x7995('0x26')](respondWithResult(_0x5843ba,0xc9))[_0x7995('0x46')](handleError(_0x5843ba,null));};exports['update']=function(_0x5e1f34,_0x54e2b1){if(_0x5e1f34['body']['id']){delete _0x5e1f34[_0x7995('0x48')]['id'];}return db[_0x7995('0x40')][_0x7995('0x45')]({'where':{'id':_0x5e1f34[_0x7995('0x4e')]['id']}})[_0x7995('0x26')](handleEntityNotFound(_0x54e2b1,null))[_0x7995('0x26')](saveUpdates(_0x5e1f34[_0x7995('0x48')],null))[_0x7995('0x26')](respondWithResult(_0x54e2b1,null))[_0x7995('0x46')](handleError(_0x54e2b1,null));};exports[_0x7995('0x27')]=function(_0xa7af8c,_0x133c63){return db[_0x7995('0x40')][_0x7995('0x45')]({'where':{'id':_0xa7af8c[_0x7995('0x4e')]['id']}})[_0x7995('0x26')](handleEntityNotFound(_0x133c63,null))[_0x7995('0x26')](removeEntity(_0x133c63,null))[_0x7995('0x46')](handleError(_0x133c63,null));};
\ No newline at end of file
index a54194f..608fee8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd87=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./analyticMetric.attributes','AnalyticMetric','analytics_metrics','lodash','util'];(function(_0x2e4e19,_0x493b50){var _0x9ba20b=function(_0x2f6456){while(--_0x2f6456){_0x2e4e19['push'](_0x2e4e19['shift']());}};_0x9ba20b(++_0x493b50);}(_0xfd87,0x80));var _0x7fd8=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xfd87[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x7fd8('0x0'));var util=require(_0x7fd8('0x1'));var logger=require(_0x7fd8('0x2'))(_0x7fd8('0x3'));var moment=require(_0x7fd8('0x4'));var BPromise=require(_0x7fd8('0x5'));var rp=require(_0x7fd8('0x6'));var fs=require('fs');var path=require(_0x7fd8('0x7'));var rimraf=require(_0x7fd8('0x8'));var config=require(_0x7fd8('0x9'));var attributes=require(_0x7fd8('0xa'));module['exports']=function(_0x1395b6,_0x10a778){return _0x1395b6['define'](_0x7fd8('0xb'),attributes,{'tableName':_0x7fd8('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xcedf=['api','bluebird','request-promise','../../config/environment','exports','AnalyticMetric','lodash','util','../../config/logger'];(function(_0x383f34,_0x3b4e4e){var _0x43535e=function(_0x597224){while(--_0x597224){_0x383f34['push'](_0x383f34['shift']());}};_0x43535e(++_0x3b4e4e);}(_0xcedf,0x1b6));var _0xfced=function(_0x4ad3a3,_0x3ebd7b){_0x4ad3a3=_0x4ad3a3-0x0;var _0x329615=_0xcedf[_0x4ad3a3];return _0x329615;};'use strict';var _=require(_0xfced('0x0'));var util=require(_0xfced('0x1'));var logger=require(_0xfced('0x2'))(_0xfced('0x3'));var moment=require('moment');var BPromise=require(_0xfced('0x4'));var rp=require(_0xfced('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xfced('0x6'));var attributes=require('./analyticMetric.attributes');module[_0xfced('0x7')]=function(_0x5c2015,_0x455382){return _0x5c2015['define'](_0xfced('0x8'),attributes,{'tableName':'analytics_metrics','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 537eec7..17d7864 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9117=['code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','request','then','info','AnalyticMetric,\x20%s,\x20%s','request\x20sent','debug','AnalyticMetric,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x1b6e2e,_0x27c5ba){var _0x2a24c4=function(_0x257b0e){while(--_0x257b0e){_0x1b6e2e['push'](_0x1b6e2e['shift']());}};_0x2a24c4(++_0x27c5ba);}(_0x9117,0x12f));var _0x7911=function(_0x121cf9,_0x5f2427){_0x121cf9=_0x121cf9-0x0;var _0x2e6ce7=_0x9117[_0x121cf9];return _0x2e6ce7;};'use strict';var _=require(_0x7911('0x0'));var util=require(_0x7911('0x1'));var moment=require(_0x7911('0x2'));var BPromise=require(_0x7911('0x3'));var rs=require(_0x7911('0x4'));var fs=require('fs');var Redis=require(_0x7911('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x7911('0x6'));var logger=require(_0x7911('0x7'))(_0x7911('0x8'));var config=require(_0x7911('0x9'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x9b6650,_0x10f2d9,_0x4c04f6){return new BPromise(function(_0x39fabe,_0x49aff7){return client[_0x7911('0xa')](_0x9b6650,_0x4c04f6)[_0x7911('0xb')](function(_0x56614c){logger[_0x7911('0xc')](_0x7911('0xd'),_0x10f2d9,_0x7911('0xe'));logger[_0x7911('0xf')](_0x7911('0x10'),_0x10f2d9,'request\x20sent',JSON[_0x7911('0x11')](_0x56614c));if(_0x56614c[_0x7911('0x12')]){if(_0x56614c['error'][_0x7911('0x13')]===0x1f4){logger[_0x7911('0x12')](_0x7911('0xd'),_0x10f2d9,_0x56614c['error']['message']);return _0x49aff7(_0x56614c[_0x7911('0x12')][_0x7911('0x14')]);}logger[_0x7911('0x12')]('AnalyticMetric,\x20%s,\x20%s',_0x10f2d9,_0x56614c[_0x7911('0x12')][_0x7911('0x14')]);return _0x39fabe(_0x56614c[_0x7911('0x12')][_0x7911('0x14')]);}else{logger['info']('AnalyticMetric,\x20%s,\x20%s',_0x10f2d9,_0x7911('0xe'));_0x39fabe(_0x56614c[_0x7911('0x15')][_0x7911('0x14')]);}})[_0x7911('0x16')](function(_0x19d936){logger[_0x7911('0x12')](_0x7911('0xd'),_0x10f2d9,_0x19d936);_0x49aff7(_0x19d936);});});}
\ No newline at end of file
+var _0xa3a1=['info','request\x20sent','debug','AnalyticMetric,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','AnalyticMetric,\x20%s,\x20%s','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','request','then'];(function(_0x6c93f5,_0x31de7f){var _0x48dccb=function(_0x669bc8){while(--_0x669bc8){_0x6c93f5['push'](_0x6c93f5['shift']());}};_0x48dccb(++_0x31de7f);}(_0xa3a1,0xab));var _0x1a3a=function(_0x1b9b3b,_0x472593){_0x1b9b3b=_0x1b9b3b-0x0;var _0x5b5bd5=_0xa3a1[_0x1b9b3b];return _0x5b5bd5;};'use strict';var _=require(_0x1a3a('0x0'));var util=require(_0x1a3a('0x1'));var moment=require(_0x1a3a('0x2'));var BPromise=require(_0x1a3a('0x3'));var rs=require(_0x1a3a('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x1a3a('0x5'))['db'];var utils=require(_0x1a3a('0x6'));var logger=require(_0x1a3a('0x7'))('rpc');var config=require(_0x1a3a('0x8'));var jayson=require(_0x1a3a('0x9'));var client=jayson[_0x1a3a('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x55e0ce,_0x42f683,_0x1e11d0){return new BPromise(function(_0x1e70fb,_0x1fb664){return client[_0x1a3a('0xb')](_0x55e0ce,_0x1e11d0)[_0x1a3a('0xc')](function(_0x5d8f46){logger[_0x1a3a('0xd')]('AnalyticMetric,\x20%s,\x20%s',_0x42f683,_0x1a3a('0xe'));logger[_0x1a3a('0xf')](_0x1a3a('0x10'),_0x42f683,_0x1a3a('0xe'),JSON[_0x1a3a('0x11')](_0x5d8f46));if(_0x5d8f46[_0x1a3a('0x12')]){if(_0x5d8f46[_0x1a3a('0x12')][_0x1a3a('0x13')]===0x1f4){logger[_0x1a3a('0x12')]('AnalyticMetric,\x20%s,\x20%s',_0x42f683,_0x5d8f46[_0x1a3a('0x12')]['message']);return _0x1fb664(_0x5d8f46[_0x1a3a('0x12')]['message']);}logger['error']('AnalyticMetric,\x20%s,\x20%s',_0x42f683,_0x5d8f46[_0x1a3a('0x12')][_0x1a3a('0x14')]);return _0x1e70fb(_0x5d8f46[_0x1a3a('0x12')][_0x1a3a('0x14')]);}else{logger[_0x1a3a('0xd')]('AnalyticMetric,\x20%s,\x20%s',_0x42f683,_0x1a3a('0xe'));_0x1e70fb(_0x5d8f46[_0x1a3a('0x15')][_0x1a3a('0x14')]);}})['catch'](function(_0xad25eb){logger[_0x1a3a('0x12')](_0x1a3a('0x16'),_0x42f683,_0xad25eb);_0x1fb664(_0xad25eb);});});}
\ No newline at end of file
index 6357e16..bc30f24 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x36b2=['../../config/environment','get','isAuthenticated','index','/:id','post','create','put','update','delete','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/interaction/service'];(function(_0x1a51d5,_0x100621){var _0x55e71b=function(_0x318abd){while(--_0x318abd){_0x1a51d5['push'](_0x1a51d5['shift']());}};_0x55e71b(++_0x100621);}(_0x36b2,0x6b));var _0x236b=function(_0x13e708,_0x4c95ad){_0x13e708=_0x13e708-0x0;var _0x3209a9=_0x36b2[_0x13e708];return _0x3209a9;};'use strict';var multer=require(_0x236b('0x0'));var util=require(_0x236b('0x1'));var path=require(_0x236b('0x2'));var timeout=require('connect-timeout');var express=require(_0x236b('0x3'));var router=express[_0x236b('0x4')]();var fs_extra=require(_0x236b('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x236b('0x6'));var config=require(_0x236b('0x7'));var controller=require('./analyticMetric.controller');router[_0x236b('0x8')]('/',auth[_0x236b('0x9')](),controller[_0x236b('0xa')]);router[_0x236b('0x8')](_0x236b('0xb'),auth[_0x236b('0x9')](),controller['show']);router[_0x236b('0xc')]('/',auth[_0x236b('0x9')](),controller[_0x236b('0xd')]);router[_0x236b('0xe')]('/:id',auth[_0x236b('0x9')](),controller[_0x236b('0xf')]);router[_0x236b('0x10')]('/:id',auth[_0x236b('0x9')](),controller[_0x236b('0x11')]);module[_0x236b('0x12')]=router;
\ No newline at end of file
+var _0x14f5=['express','Router','../../components/auth/service','../../components/interaction/service','./analyticMetric.controller','get','isAuthenticated','index','/:id','post','create','put','update','delete','util','connect-timeout'];(function(_0x3ac2f1,_0x97f4c8){var _0x20ad03=function(_0x28d71c){while(--_0x28d71c){_0x3ac2f1['push'](_0x3ac2f1['shift']());}};_0x20ad03(++_0x97f4c8);}(_0x14f5,0xae));var _0x514f=function(_0x2a2c4a,_0x424f7c){_0x2a2c4a=_0x2a2c4a-0x0;var _0x3d2afb=_0x14f5[_0x2a2c4a];return _0x3d2afb;};'use strict';var multer=require('multer');var util=require(_0x514f('0x0'));var path=require('path');var timeout=require(_0x514f('0x1'));var express=require(_0x514f('0x2'));var router=express[_0x514f('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x514f('0x4'));var interaction=require(_0x514f('0x5'));var config=require('../../config/environment');var controller=require(_0x514f('0x6'));router[_0x514f('0x7')]('/',auth[_0x514f('0x8')](),controller[_0x514f('0x9')]);router[_0x514f('0x7')](_0x514f('0xa'),auth[_0x514f('0x8')](),controller['show']);router[_0x514f('0xb')]('/',auth['isAuthenticated'](),controller[_0x514f('0xc')]);router[_0x514f('0xd')](_0x514f('0xa'),auth[_0x514f('0x8')](),controller[_0x514f('0xe')]);router[_0x514f('0xf')](_0x514f('0xa'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 17aa08e..033453e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe93d=['TEXT','exports'];(function(_0x480fc2,_0x482fba){var _0x540a95=function(_0x4b5a56){while(--_0x4b5a56){_0x480fc2['push'](_0x480fc2['shift']());}};_0x540a95(++_0x482fba);}(_0xe93d,0x137));var _0xde93=function(_0x4bc91e,_0x26e1cd){_0x4bc91e=_0x4bc91e-0x0;var _0x1ebd55=_0xe93d[_0x4bc91e];return _0x1ebd55;};'use strict';var Sequelize=require('sequelize');module[_0xde93('0x0')]={'tree':{'type':Sequelize[_0xde93('0x1')],'allowNull':![]}};
\ No newline at end of file
+var _0x6f75=['sequelize','TEXT'];(function(_0x16d8a9,_0x4ce84b){var _0x2af8aa=function(_0x3fccd2){while(--_0x3fccd2){_0x16d8a9['push'](_0x16d8a9['shift']());}};_0x2af8aa(++_0x4ce84b);}(_0x6f75,0x15a));var _0x56f7=function(_0x10419d,_0x45973e){_0x10419d=_0x10419d-0x0;var _0x5429af=_0x6f75[_0x10419d];return _0x5429af;};'use strict';var Sequelize=require(_0x56f7('0x0'));module['exports']={'tree':{'type':Sequelize[_0x56f7('0x1')],'allowNull':![]}};
\ No newline at end of file
index 7fb147d..1ddec99 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfeff=['querystring','papaparse','ioredis','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','Content-Range','apply','save','update','then','stack','name','index','map','AnalyticTreeReport','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','params','find','create','body','destroy','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js'];(function(_0x4a3560,_0x400d45){var _0x21a1f0=function(_0x323cc7){while(--_0x323cc7){_0x4a3560['push'](_0x4a3560['shift']());}};_0x21a1f0(++_0x400d45);}(_0xfeff,0x162));var _0xffef=function(_0x68c979,_0x431cff){_0x68c979=_0x68c979-0x0;var _0x4f0001=_0xfeff[_0x68c979];return _0x4f0001;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xffef('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xffef('0x1'));var rp=require(_0xffef('0x2'));var moment=require(_0xffef('0x3'));var BPromise=require(_0xffef('0x4'));var Mustache=require(_0xffef('0x5'));var util=require(_0xffef('0x6'));var path=require(_0xffef('0x7'));var sox=require(_0xffef('0x8'));var csv=require(_0xffef('0x9'));var ejs=require(_0xffef('0xa'));var fs=require('fs');var fs_extra=require(_0xffef('0xb'));var _=require(_0xffef('0xc'));var squel=require(_0xffef('0xd'));var crypto=require(_0xffef('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xffef('0xf'));var toCsv=require(_0xffef('0x9'));var querystring=require(_0xffef('0x10'));var Papa=require(_0xffef('0x11'));var Redis=require(_0xffef('0x12'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xffef('0x13'));var logger=require(_0xffef('0x14'))(_0xffef('0x15'));var utils=require(_0xffef('0x16'));var config=require(_0xffef('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xffef('0x18'))['db'];function respondWithStatusCode(_0x402f4e,_0x2260d2){_0x2260d2=_0x2260d2||0xcc;return function(_0x50714d){if(_0x50714d){return _0x402f4e[_0xffef('0x19')](_0x2260d2);}return _0x402f4e[_0xffef('0x1a')](_0x2260d2)[_0xffef('0x1b')]();};}function respondWithResult(_0xc005a3,_0x5e71b8){_0x5e71b8=_0x5e71b8||0xc8;return function(_0x7ae384){if(_0x7ae384){return _0xc005a3['status'](_0x5e71b8)[_0xffef('0x1c')](_0x7ae384);}};}function respondWithFilteredResult(_0x16ad88,_0x431322){return function(_0x2cff63){if(_0x2cff63){var _0x813f5a=typeof _0x431322[_0xffef('0x1d')]==='undefined'&&typeof _0x431322[_0xffef('0x1e')]===_0xffef('0x1f');var _0x318053=_0x2cff63[_0xffef('0x20')];var _0x3cefc1=_0x813f5a?0x0:_0x431322['offset'];var _0x11a0fe=_0x813f5a?_0x2cff63['count']:_0x431322[_0xffef('0x1d')]+_0x431322[_0xffef('0x1e')];var _0x456aa5;if(_0x11a0fe>=_0x318053){_0x11a0fe=_0x318053;_0x456aa5=0xc8;}else{_0x456aa5=0xce;}_0x16ad88[_0xffef('0x1a')](_0x456aa5);return _0x16ad88['set'](_0xffef('0x21'),_0x3cefc1+'-'+_0x11a0fe+'/'+_0x318053)['json'](_0x2cff63);}return null;};}function patchUpdates(_0x159744){return function(_0x571905){try{jsonpatch[_0xffef('0x22')](_0x571905,_0x159744,!![]);}catch(_0x31fa89){return BPromise['reject'](_0x31fa89);}return _0x571905[_0xffef('0x23')]();};}function saveUpdates(_0xa580d5,_0x59e7bd){return function(_0x5e1031){if(_0x5e1031){return _0x5e1031[_0xffef('0x24')](_0xa580d5)['then'](function(_0x507824){return _0x507824;});}return null;};}function removeEntity(_0x367695,_0x612426){return function(_0x3784d2){if(_0x3784d2){return _0x3784d2['destroy']()[_0xffef('0x25')](function(){_0x367695['status'](0xcc)[_0xffef('0x1b')]();});}};}function handleEntityNotFound(_0x1365d4,_0xdbce7a){return function(_0x373345){if(!_0x373345){_0x1365d4['sendStatus'](0x194);}return _0x373345;};}function handleError(_0x2779cf,_0x3e5688){_0x3e5688=_0x3e5688||0x1f4;return function(_0x4d9ab9){logger['error'](_0x4d9ab9[_0xffef('0x26')]);if(_0x4d9ab9[_0xffef('0x27')]){delete _0x4d9ab9['name'];}_0x2779cf['status'](_0x3e5688)['send'](_0x4d9ab9);};}exports[_0xffef('0x28')]=function(_0x119c01,_0x4aa822){var _0x435a06={},_0x2d740b={},_0x392418={'count':0x0,'rows':[]};var _0x16e7ba=_[_0xffef('0x29')](db[_0xffef('0x2a')][_0xffef('0x2b')],function(_0x428497){return{'name':_0x428497[_0xffef('0x2c')],'type':_0x428497[_0xffef('0x2d')][_0xffef('0x2e')]};});_0x2d740b['model']=_[_0xffef('0x29')](_0x16e7ba,_0xffef('0x27'));_0x2d740b[_0xffef('0x2f')]=_[_0xffef('0x30')](_0x119c01['query']);_0x2d740b[_0xffef('0x31')]=_[_0xffef('0x32')](_0x2d740b[_0xffef('0x33')],_0x2d740b[_0xffef('0x2f')]);_0x435a06[_0xffef('0x34')]=_[_0xffef('0x32')](_0x2d740b[_0xffef('0x33')],qs[_0xffef('0x35')](_0x119c01[_0xffef('0x2f')][_0xffef('0x35')]));_0x435a06[_0xffef('0x34')]=_0x435a06['attributes'][_0xffef('0x36')]?_0x435a06['attributes']:_0x2d740b[_0xffef('0x33')];if(!_0x119c01[_0xffef('0x2f')][_0xffef('0x37')](_0xffef('0x38'))){_0x435a06[_0xffef('0x1e')]=qs[_0xffef('0x1e')](_0x119c01['query'][_0xffef('0x1e')]);_0x435a06[_0xffef('0x1d')]=qs[_0xffef('0x1d')](_0x119c01[_0xffef('0x2f')]['offset']);}_0x435a06[_0xffef('0x39')]=qs[_0xffef('0x3a')](_0x119c01['query'][_0xffef('0x3a')]);_0x435a06[_0xffef('0x3b')]=qs['filters'](_[_0xffef('0x3c')](_0x119c01['query'],_0x2d740b['filters']),_0x16e7ba);if(_0x119c01['query'][_0xffef('0x3d')]){_0x435a06[_0xffef('0x3b')]=_[_0xffef('0x3e')](_0x435a06[_0xffef('0x3b')],{'$or':_[_0xffef('0x29')](_0x16e7ba,function(_0xdce44a){if(_0xdce44a[_0xffef('0x2d')]!==_0xffef('0x3f')){var _0x26b828={};_0x26b828[_0xdce44a[_0xffef('0x27')]]={'$like':'%'+_0x119c01[_0xffef('0x2f')][_0xffef('0x3d')]+'%'};return _0x26b828;}})});}_0x435a06=_[_0xffef('0x3e')]({},_0x435a06,_0x119c01[_0xffef('0x40')]);var _0x230473={'where':_0x435a06['where']};return db['AnalyticTreeReport'][_0xffef('0x20')](_0x230473)['then'](function(_0x532e68){_0x392418[_0xffef('0x20')]=_0x532e68;if(_0x119c01[_0xffef('0x2f')][_0xffef('0x41')]){_0x435a06[_0xffef('0x42')]=[{'all':!![]}];}return db[_0xffef('0x2a')]['findAll'](_0x435a06);})[_0xffef('0x25')](function(_0xab8ee8){_0x392418[_0xffef('0x43')]=_0xab8ee8;return _0x392418;})[_0xffef('0x25')](respondWithFilteredResult(_0x4aa822,_0x435a06))[_0xffef('0x44')](handleError(_0x4aa822,null));};exports['show']=function(_0x43431f,_0xecdec7){var _0x42a7c8={'raw':!![],'where':{'id':_0x43431f[_0xffef('0x45')]['id']}},_0x19e19d={};_0x19e19d[_0xffef('0x33')]=_[_0xffef('0x30')](db[_0xffef('0x2a')][_0xffef('0x2b')]);_0x19e19d['query']=_[_0xffef('0x30')](_0x43431f[_0xffef('0x2f')]);_0x19e19d[_0xffef('0x31')]=_[_0xffef('0x32')](_0x19e19d[_0xffef('0x33')],_0x19e19d[_0xffef('0x2f')]);_0x42a7c8[_0xffef('0x34')]=_[_0xffef('0x32')](_0x19e19d[_0xffef('0x33')],qs[_0xffef('0x35')](_0x43431f['query'][_0xffef('0x35')]));_0x42a7c8[_0xffef('0x34')]=_0x42a7c8[_0xffef('0x34')][_0xffef('0x36')]?_0x42a7c8['attributes']:_0x19e19d[_0xffef('0x33')];if(_0x43431f[_0xffef('0x2f')][_0xffef('0x41')]){_0x42a7c8['include']=[{'all':!![]}];}_0x42a7c8=_[_0xffef('0x3e')]({},_0x42a7c8,_0x43431f['options']);return db['AnalyticTreeReport'][_0xffef('0x46')](_0x42a7c8)['then'](handleEntityNotFound(_0xecdec7,null))[_0xffef('0x25')](respondWithResult(_0xecdec7,null))['catch'](handleError(_0xecdec7,null));};exports[_0xffef('0x47')]=function(_0x47d96f,_0x2a3fe5){return db['AnalyticTreeReport'][_0xffef('0x47')](_0x47d96f['body'],{})[_0xffef('0x25')](respondWithResult(_0x2a3fe5,0xc9))[_0xffef('0x44')](handleError(_0x2a3fe5,null));};exports[_0xffef('0x24')]=function(_0x3c8095,_0x57c524){if(_0x3c8095['body']['id']){delete _0x3c8095['body']['id'];}return db[_0xffef('0x2a')]['find']({'where':{'id':_0x3c8095['params']['id']}})[_0xffef('0x25')](handleEntityNotFound(_0x57c524,null))[_0xffef('0x25')](saveUpdates(_0x3c8095[_0xffef('0x48')],null))[_0xffef('0x25')](respondWithResult(_0x57c524,null))['catch'](handleError(_0x57c524,null));};exports[_0xffef('0x49')]=function(_0x41cbbd,_0x3f76c3){return db[_0xffef('0x2a')]['find']({'where':{'id':_0x41cbbd['params']['id']}})[_0xffef('0x25')](handleEntityNotFound(_0x3f76c3,null))[_0xffef('0x25')](removeEntity(_0x3f76c3,null))['catch'](handleError(_0x3f76c3,null));};
\ No newline at end of file
+var _0xf547=['fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','map','rawAttributes','fieldName','type','key','model','filters','query','intersection','fields','length','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','AnalyticTreeReport','include','rows','catch','show','params','keys','options','find','create','body','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','ejs'];(function(_0x12d812,_0x496bb7){var _0x3711ab=function(_0x3259da){while(--_0x3259da){_0x12d812['push'](_0x12d812['shift']());}};_0x3711ab(++_0x496bb7);}(_0xf547,0xdd));var _0x7f54=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0xf547[_0x1ac595];return _0x455fff;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x7f54('0x0'));var zipdir=require(_0x7f54('0x1'));var jsonpatch=require(_0x7f54('0x2'));var rp=require(_0x7f54('0x3'));var moment=require('moment');var BPromise=require(_0x7f54('0x4'));var Mustache=require(_0x7f54('0x5'));var util=require('util');var path=require(_0x7f54('0x6'));var sox=require(_0x7f54('0x7'));var csv=require(_0x7f54('0x8'));var ejs=require(_0x7f54('0x9'));var fs=require('fs');var fs_extra=require(_0x7f54('0xa'));var _=require(_0x7f54('0xb'));var squel=require(_0x7f54('0xc'));var crypto=require(_0x7f54('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x7f54('0xe'));var toCsv=require(_0x7f54('0x8'));var querystring=require(_0x7f54('0xf'));var Papa=require(_0x7f54('0x10'));var Redis=require(_0x7f54('0x11'));var authService=require(_0x7f54('0x12'));var qs=require(_0x7f54('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x7f54('0x14'));var logger=require(_0x7f54('0x15'))(_0x7f54('0x16'));var utils=require(_0x7f54('0x17'));var config=require(_0x7f54('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x7f54('0x19'))['db'];function respondWithStatusCode(_0x26fb59,_0x53c7de){_0x53c7de=_0x53c7de||0xcc;return function(_0x406ae4){if(_0x406ae4){return _0x26fb59[_0x7f54('0x1a')](_0x53c7de);}return _0x26fb59[_0x7f54('0x1b')](_0x53c7de)[_0x7f54('0x1c')]();};}function respondWithResult(_0x16aff8,_0x2b07de){_0x2b07de=_0x2b07de||0xc8;return function(_0xb0f4c3){if(_0xb0f4c3){return _0x16aff8[_0x7f54('0x1b')](_0x2b07de)[_0x7f54('0x1d')](_0xb0f4c3);}};}function respondWithFilteredResult(_0x4f0162,_0x1dc299){return function(_0x2a6b2e){if(_0x2a6b2e){var _0x46dbed=typeof _0x1dc299[_0x7f54('0x1e')]==='undefined'&&typeof _0x1dc299[_0x7f54('0x1f')]===_0x7f54('0x20');var _0x2f2580=_0x2a6b2e[_0x7f54('0x21')];var _0x41379c=_0x46dbed?0x0:_0x1dc299[_0x7f54('0x1e')];var _0x106a27=_0x46dbed?_0x2a6b2e[_0x7f54('0x21')]:_0x1dc299[_0x7f54('0x1e')]+_0x1dc299[_0x7f54('0x1f')];var _0xe1f33d;if(_0x106a27>=_0x2f2580){_0x106a27=_0x2f2580;_0xe1f33d=0xc8;}else{_0xe1f33d=0xce;}_0x4f0162['status'](_0xe1f33d);return _0x4f0162['set'](_0x7f54('0x22'),_0x41379c+'-'+_0x106a27+'/'+_0x2f2580)[_0x7f54('0x1d')](_0x2a6b2e);}return null;};}function patchUpdates(_0x56c77c){return function(_0x28ca0e){try{jsonpatch[_0x7f54('0x23')](_0x28ca0e,_0x56c77c,!![]);}catch(_0x5bc089){return BPromise[_0x7f54('0x24')](_0x5bc089);}return _0x28ca0e[_0x7f54('0x25')]();};}function saveUpdates(_0x316a4f,_0x21ca4b){return function(_0x365d43){if(_0x365d43){return _0x365d43[_0x7f54('0x26')](_0x316a4f)[_0x7f54('0x27')](function(_0x24543e){return _0x24543e;});}return null;};}function removeEntity(_0x272bd3,_0xdd5e0a){return function(_0x1f29ef){if(_0x1f29ef){return _0x1f29ef[_0x7f54('0x28')]()[_0x7f54('0x27')](function(){_0x272bd3[_0x7f54('0x1b')](0xcc)[_0x7f54('0x1c')]();});}};}function handleEntityNotFound(_0x3529b1,_0x5b6ece){return function(_0x5b8ef0){if(!_0x5b8ef0){_0x3529b1[_0x7f54('0x1a')](0x194);}return _0x5b8ef0;};}function handleError(_0x484897,_0x595be7){_0x595be7=_0x595be7||0x1f4;return function(_0x39709d){logger[_0x7f54('0x29')](_0x39709d[_0x7f54('0x2a')]);if(_0x39709d[_0x7f54('0x2b')]){delete _0x39709d[_0x7f54('0x2b')];}_0x484897[_0x7f54('0x1b')](_0x595be7)[_0x7f54('0x2c')](_0x39709d);};}exports['index']=function(_0x4550ec,_0xa4569a){var _0x2cda9a={},_0x43e401={},_0x3f4333={'count':0x0,'rows':[]};var _0x3c9365=_[_0x7f54('0x2d')](db['AnalyticTreeReport'][_0x7f54('0x2e')],function(_0x30ce8e){return{'name':_0x30ce8e[_0x7f54('0x2f')],'type':_0x30ce8e[_0x7f54('0x30')][_0x7f54('0x31')]};});_0x43e401[_0x7f54('0x32')]=_['map'](_0x3c9365,_0x7f54('0x2b'));_0x43e401['query']=_['keys'](_0x4550ec['query']);_0x43e401[_0x7f54('0x33')]=_['intersection'](_0x43e401[_0x7f54('0x32')],_0x43e401[_0x7f54('0x34')]);_0x2cda9a['attributes']=_[_0x7f54('0x35')](_0x43e401['model'],qs[_0x7f54('0x36')](_0x4550ec[_0x7f54('0x34')]['fields']));_0x2cda9a['attributes']=_0x2cda9a['attributes'][_0x7f54('0x37')]?_0x2cda9a[_0x7f54('0x38')]:_0x43e401[_0x7f54('0x32')];if(!_0x4550ec[_0x7f54('0x34')][_0x7f54('0x39')](_0x7f54('0x3a'))){_0x2cda9a[_0x7f54('0x1f')]=qs['limit'](_0x4550ec['query'][_0x7f54('0x1f')]);_0x2cda9a[_0x7f54('0x1e')]=qs['offset'](_0x4550ec[_0x7f54('0x34')][_0x7f54('0x1e')]);}_0x2cda9a[_0x7f54('0x3b')]=qs['sort'](_0x4550ec[_0x7f54('0x34')][_0x7f54('0x3c')]);_0x2cda9a[_0x7f54('0x3d')]=qs[_0x7f54('0x33')](_[_0x7f54('0x3e')](_0x4550ec[_0x7f54('0x34')],_0x43e401[_0x7f54('0x33')]),_0x3c9365);if(_0x4550ec[_0x7f54('0x34')][_0x7f54('0x3f')]){_0x2cda9a['where']=_[_0x7f54('0x40')](_0x2cda9a[_0x7f54('0x3d')],{'$or':_['map'](_0x3c9365,function(_0x51b510){if(_0x51b510['type']!==_0x7f54('0x41')){var _0x145cd3={};_0x145cd3[_0x51b510[_0x7f54('0x2b')]]={'$like':'%'+_0x4550ec[_0x7f54('0x34')][_0x7f54('0x3f')]+'%'};return _0x145cd3;}})});}_0x2cda9a=_[_0x7f54('0x40')]({},_0x2cda9a,_0x4550ec['options']);var _0x5dcd55={'where':_0x2cda9a['where']};return db[_0x7f54('0x42')][_0x7f54('0x21')](_0x5dcd55)[_0x7f54('0x27')](function(_0x9e2507){_0x3f4333['count']=_0x9e2507;if(_0x4550ec[_0x7f54('0x34')]['includeAll']){_0x2cda9a[_0x7f54('0x43')]=[{'all':!![]}];}return db[_0x7f54('0x42')]['findAll'](_0x2cda9a);})[_0x7f54('0x27')](function(_0x4f6ae8){_0x3f4333[_0x7f54('0x44')]=_0x4f6ae8;return _0x3f4333;})[_0x7f54('0x27')](respondWithFilteredResult(_0xa4569a,_0x2cda9a))[_0x7f54('0x45')](handleError(_0xa4569a,null));};exports[_0x7f54('0x46')]=function(_0x380886,_0x15edc4){var _0x2a3d66={'raw':!![],'where':{'id':_0x380886[_0x7f54('0x47')]['id']}},_0x3ee3d8={};_0x3ee3d8[_0x7f54('0x32')]=_[_0x7f54('0x48')](db[_0x7f54('0x42')]['rawAttributes']);_0x3ee3d8[_0x7f54('0x34')]=_[_0x7f54('0x48')](_0x380886[_0x7f54('0x34')]);_0x3ee3d8[_0x7f54('0x33')]=_['intersection'](_0x3ee3d8[_0x7f54('0x32')],_0x3ee3d8['query']);_0x2a3d66[_0x7f54('0x38')]=_[_0x7f54('0x35')](_0x3ee3d8['model'],qs[_0x7f54('0x36')](_0x380886['query'][_0x7f54('0x36')]));_0x2a3d66[_0x7f54('0x38')]=_0x2a3d66[_0x7f54('0x38')][_0x7f54('0x37')]?_0x2a3d66[_0x7f54('0x38')]:_0x3ee3d8['model'];if(_0x380886[_0x7f54('0x34')]['includeAll']){_0x2a3d66[_0x7f54('0x43')]=[{'all':!![]}];}_0x2a3d66=_[_0x7f54('0x40')]({},_0x2a3d66,_0x380886[_0x7f54('0x49')]);return db[_0x7f54('0x42')][_0x7f54('0x4a')](_0x2a3d66)[_0x7f54('0x27')](handleEntityNotFound(_0x15edc4,null))[_0x7f54('0x27')](respondWithResult(_0x15edc4,null))[_0x7f54('0x45')](handleError(_0x15edc4,null));};exports[_0x7f54('0x4b')]=function(_0x864e27,_0x3ddb6f){return db[_0x7f54('0x42')][_0x7f54('0x4b')](_0x864e27[_0x7f54('0x4c')],{})['then'](respondWithResult(_0x3ddb6f,0xc9))[_0x7f54('0x45')](handleError(_0x3ddb6f,null));};exports['update']=function(_0x1951bb,_0x13fd63){if(_0x1951bb['body']['id']){delete _0x1951bb[_0x7f54('0x4c')]['id'];}return db['AnalyticTreeReport']['find']({'where':{'id':_0x1951bb['params']['id']}})[_0x7f54('0x27')](handleEntityNotFound(_0x13fd63,null))[_0x7f54('0x27')](saveUpdates(_0x1951bb[_0x7f54('0x4c')],null))[_0x7f54('0x27')](respondWithResult(_0x13fd63,null))['catch'](handleError(_0x13fd63,null));};exports[_0x7f54('0x28')]=function(_0x2bda0d,_0x4e98d8){return db['AnalyticTreeReport'][_0x7f54('0x4a')]({'where':{'id':_0x2bda0d[_0x7f54('0x47')]['id']}})[_0x7f54('0x27')](handleEntityNotFound(_0x4e98d8,null))[_0x7f54('0x27')](removeEntity(_0x4e98d8,null))[_0x7f54('0x45')](handleError(_0x4e98d8,null));};
\ No newline at end of file
index 10a6b92..b29c30e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6764=['define','analytics_report_trees','util','moment','bluebird','request-promise','rimraf','./analyticTreeReport.attributes'];(function(_0x2defa0,_0x4ddd55){var _0x15c59f=function(_0x313d8f){while(--_0x313d8f){_0x2defa0['push'](_0x2defa0['shift']());}};_0x15c59f(++_0x4ddd55);}(_0x6764,0x1c2));var _0x4676=function(_0x1d1779,_0x284147){_0x1d1779=_0x1d1779-0x0;var _0x2377e9=_0x6764[_0x1d1779];return _0x2377e9;};'use strict';var _=require('lodash');var util=require(_0x4676('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0x4676('0x1'));var BPromise=require(_0x4676('0x2'));var rp=require(_0x4676('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x4676('0x4'));var config=require('../../config/environment');var attributes=require(_0x4676('0x5'));module['exports']=function(_0x3ad4a9,_0xdc0cc5){return _0x3ad4a9[_0x4676('0x6')]('AnalyticTreeReport',attributes,{'tableName':_0x4676('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf170=['request-promise','path','rimraf','../../config/environment','./analyticTreeReport.attributes','exports','AnalyticTreeReport','analytics_report_trees','util','../../config/logger','api','moment','bluebird'];(function(_0x15390c,_0x3ff8e7){var _0x3e19bb=function(_0x50629e){while(--_0x50629e){_0x15390c['push'](_0x15390c['shift']());}};_0x3e19bb(++_0x3ff8e7);}(_0xf170,0x8a));var _0x0f17=function(_0x403c20,_0x4a7b99){_0x403c20=_0x403c20-0x0;var _0x2b271a=_0xf170[_0x403c20];return _0x2b271a;};'use strict';var _=require('lodash');var util=require(_0x0f17('0x0'));var logger=require(_0x0f17('0x1'))(_0x0f17('0x2'));var moment=require(_0x0f17('0x3'));var BPromise=require(_0x0f17('0x4'));var rp=require(_0x0f17('0x5'));var fs=require('fs');var path=require(_0x0f17('0x6'));var rimraf=require(_0x0f17('0x7'));var config=require(_0x0f17('0x8'));var attributes=require(_0x0f17('0x9'));module[_0x0f17('0xa')]=function(_0x3fe83e,_0x416694){return _0x3fe83e['define'](_0x0f17('0xb'),attributes,{'tableName':_0x0f17('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 99418b6..15863f3 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(_0x3b119f,_0x4f10d3){var _0x1aff29=function(_0x5bba09){while(--_0x5bba09){_0x3b119f['push'](_0x3b119f['shift']());}};_0x1aff29(++_0x4f10d3);}(_0x2ef3,0xba));var _0x32ef=function(_0x16def7,_0x1046cd){_0x16def7=_0x16def7-0x0;var _0x475b02=_0x2ef3[_0x16def7];return _0x475b02;};'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 _0xc4aa=['moment','bluebird','randomstring','ioredis','rpc','../../config/environment','jayson/promise','client','http','request','then','AnalyticTreeReport,\x20%s,\x20%s','request\x20sent','debug','error','code','message','info','catch','lodash','util'];(function(_0x29eb4d,_0x5da0d7){var _0x1911b8=function(_0x3f34ae){while(--_0x3f34ae){_0x29eb4d['push'](_0x29eb4d['shift']());}};_0x1911b8(++_0x5da0d7);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0xc4aa[_0x19950b];return _0x3c6b41;};'use strict';var _=require(_0xac4a('0x0'));var util=require(_0xac4a('0x1'));var moment=require(_0xac4a('0x2'));var BPromise=require(_0xac4a('0x3'));var rs=require(_0xac4a('0x4'));var fs=require('fs');var Redis=require(_0xac4a('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xac4a('0x6'));var config=require(_0xac4a('0x7'));var jayson=require(_0xac4a('0x8'));var client=jayson[_0xac4a('0x9')][_0xac4a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x15cd34,_0x3ef77c,_0x10525b){return new BPromise(function(_0x5c6179,_0x5b8339){return client[_0xac4a('0xb')](_0x15cd34,_0x10525b)[_0xac4a('0xc')](function(_0x26ec84){logger['info'](_0xac4a('0xd'),_0x3ef77c,_0xac4a('0xe'));logger[_0xac4a('0xf')]('AnalyticTreeReport,\x20%s,\x20%s,\x20%s',_0x3ef77c,_0xac4a('0xe'),JSON['stringify'](_0x26ec84));if(_0x26ec84[_0xac4a('0x10')]){if(_0x26ec84['error'][_0xac4a('0x11')]===0x1f4){logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x26ec84['error'][_0xac4a('0x12')]);return _0x5b8339(_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);}logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);return _0x5c6179(_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);}else{logger[_0xac4a('0x13')](_0xac4a('0xd'),_0x3ef77c,_0xac4a('0xe'));_0x5c6179(_0x26ec84['result'][_0xac4a('0x12')]);}})[_0xac4a('0x14')](function(_0x23eb66){logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x23eb66);_0x5b8339(_0x23eb66);});});}
\ No newline at end of file
index e22432d..ab7ccef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x71b0=['/:id','show','post','create','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticTreeReport.controller','get','isAuthenticated','index'];(function(_0x3c82cb,_0x35bd82){var _0x164cc6=function(_0x13e361){while(--_0x13e361){_0x3c82cb['push'](_0x3c82cb['shift']());}};_0x164cc6(++_0x35bd82);}(_0x71b0,0x1ac));var _0x071b=function(_0x16b4c6,_0x43a344){_0x16b4c6=_0x16b4c6-0x0;var _0x2d1b30=_0x71b0[_0x16b4c6];return _0x2d1b30;};'use strict';var multer=require(_0x071b('0x0'));var util=require(_0x071b('0x1'));var path=require(_0x071b('0x2'));var timeout=require(_0x071b('0x3'));var express=require(_0x071b('0x4'));var router=express[_0x071b('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x071b('0x6'));var interaction=require(_0x071b('0x7'));var config=require(_0x071b('0x8'));var controller=require(_0x071b('0x9'));router[_0x071b('0xa')]('/',auth[_0x071b('0xb')](),controller[_0x071b('0xc')]);router[_0x071b('0xa')](_0x071b('0xd'),auth[_0x071b('0xb')](),controller[_0x071b('0xe')]);router[_0x071b('0xf')]('/',auth[_0x071b('0xb')](),controller[_0x071b('0x10')]);router['put'](_0x071b('0xd'),auth[_0x071b('0xb')](),controller[_0x071b('0x11')]);router[_0x071b('0x12')](_0x071b('0xd'),auth[_0x071b('0xb')](),controller[_0x071b('0x13')]);module[_0x071b('0x14')]=router;
\ No newline at end of file
+var _0xe0db=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticTreeReport.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','multer','path'];(function(_0x3b5063,_0x55c856){var _0x43d2d6=function(_0x5cecfe){while(--_0x5cecfe){_0x3b5063['push'](_0x3b5063['shift']());}};_0x43d2d6(++_0x55c856);}(_0xe0db,0x1d9));var _0xbe0d=function(_0x53cf8e,_0x3d290f){_0x53cf8e=_0x53cf8e-0x0;var _0x459197=_0xe0db[_0x53cf8e];return _0x459197;};'use strict';var multer=require(_0xbe0d('0x0'));var util=require('util');var path=require(_0xbe0d('0x1'));var timeout=require(_0xbe0d('0x2'));var express=require('express');var router=express[_0xbe0d('0x3')]();var fs_extra=require(_0xbe0d('0x4'));var auth=require(_0xbe0d('0x5'));var interaction=require(_0xbe0d('0x6'));var config=require(_0xbe0d('0x7'));var controller=require(_0xbe0d('0x8'));router[_0xbe0d('0x9')]('/',auth[_0xbe0d('0xa')](),controller[_0xbe0d('0xb')]);router['get'](_0xbe0d('0xc'),auth['isAuthenticated'](),controller[_0xbe0d('0xd')]);router[_0xbe0d('0xe')]('/',auth[_0xbe0d('0xa')](),controller[_0xbe0d('0xf')]);router[_0xbe0d('0x10')](_0xbe0d('0xc'),auth[_0xbe0d('0xa')](),controller[_0xbe0d('0x11')]);router[_0xbe0d('0x12')](_0xbe0d('0xc'),auth[_0xbe0d('0xa')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 1b111ae..c84b10b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc999=['exports','STRING'];(function(_0x282576,_0x2803bc){var _0x4e9b6f=function(_0x16fb83){while(--_0x16fb83){_0x282576['push'](_0x282576['shift']());}};_0x4e9b6f(++_0x2803bc);}(_0xc999,0x176));var _0x9c99=function(_0x695b76,_0x551526){_0x695b76=_0x695b76-0x0;var _0x1dc21f=_0xc999[_0x695b76];return _0x1dc21f;};'use strict';var Sequelize=require('sequelize');module[_0x9c99('0x0')]={'name':{'type':Sequelize[_0x9c99('0x1')]},'basename':{'type':Sequelize[_0x9c99('0x1')]},'type':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x34f8=['exports','STRING','sequelize'];(function(_0x135510,_0x43c36e){var _0x26151f=function(_0x19e460){while(--_0x19e460){_0x135510['push'](_0x135510['shift']());}};_0x26151f(++_0x43c36e);}(_0x34f8,0x80));var _0x834f=function(_0x561a3c,_0x1df646){_0x561a3c=_0x561a3c-0x0;var _0x50ac8d=_0x34f8[_0x561a3c];return _0x50ac8d;};'use strict';var Sequelize=require(_0x834f('0x0'));module[_0x834f('0x1')]={'name':{'type':Sequelize[_0x834f('0x2')]},'basename':{'type':Sequelize[_0x834f('0x2')]},'type':{'type':Sequelize[_0x834f('0x2')]}};
\ No newline at end of file
index 92e8151..0eba600 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x136b=['params','keys','intersection','include','find','clone','get','omit','updatedAt','body','createdAt','create','catch','update','destroy','file','originalname','basename','filename','mimetype','findOne','ChatOfflineMessageId','join','root','offline-chat/','download','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','limit','count','json','reject','save','then','end','error','stack','name','index','map','Attachment','rawAttributes','fieldName','type','key','query','filters','model','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll'];(function(_0x4fc435,_0x45eddf){var _0x3c5db1=function(_0x1d18c1){while(--_0x1d18c1){_0x4fc435['push'](_0x4fc435['shift']());}};_0x3c5db1(++_0x45eddf);}(_0x136b,0x17e));var _0xb136=function(_0x5317b5,_0x4dfd6e){_0x5317b5=_0x5317b5-0x0;var _0x3b7ce2=_0x136b[_0x5317b5];return _0x3b7ce2;};'use strict';var emlformat=require(_0xb136('0x0'));var rimraf=require(_0xb136('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xb136('0x2'));var rp=require(_0xb136('0x3'));var moment=require(_0xb136('0x4'));var BPromise=require(_0xb136('0x5'));var Mustache=require(_0xb136('0x6'));var util=require(_0xb136('0x7'));var path=require('path');var sox=require(_0xb136('0x8'));var csv=require(_0xb136('0x9'));var ejs=require(_0xb136('0xa'));var fs=require('fs');var fs_extra=require(_0xb136('0xb'));var _=require(_0xb136('0xc'));var squel=require(_0xb136('0xd'));var crypto=require(_0xb136('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xb136('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xb136('0x10'));var Redis=require('ioredis');var authService=require(_0xb136('0x11'));var qs=require(_0xb136('0x12'));var as=require(_0xb136('0x13'));var hardwareService=require(_0xb136('0x14'));var logger=require(_0xb136('0x15'))(_0xb136('0x16'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xb136('0x17'));var db=require(_0xb136('0x18'))['db'];function respondWithStatusCode(_0xad68c2,_0x3c3d20){_0x3c3d20=_0x3c3d20||0xcc;return function(_0x5886b6){if(_0x5886b6){return _0xad68c2[_0xb136('0x19')](_0x3c3d20);}return _0xad68c2['status'](_0x3c3d20)['end']();};}function respondWithResult(_0xa2d4c9,_0x1d2cd1){_0x1d2cd1=_0x1d2cd1||0xc8;return function(_0x740292){if(_0x740292){return _0xa2d4c9[_0xb136('0x1a')](_0x1d2cd1)['json'](_0x740292);}};}function respondWithFilteredResult(_0x4ec746,_0x77c072){return function(_0x130316){if(_0x130316){var _0x44695f=typeof _0x77c072[_0xb136('0x1b')]===_0xb136('0x1c')&&typeof _0x77c072[_0xb136('0x1d')]===_0xb136('0x1c');var _0x24defa=_0x130316[_0xb136('0x1e')];var _0x5169d4=_0x44695f?0x0:_0x77c072[_0xb136('0x1b')];var _0x335a31=_0x44695f?_0x130316['count']:_0x77c072[_0xb136('0x1b')]+_0x77c072[_0xb136('0x1d')];var _0x5c0644;if(_0x335a31>=_0x24defa){_0x335a31=_0x24defa;_0x5c0644=0xc8;}else{_0x5c0644=0xce;}_0x4ec746['status'](_0x5c0644);return _0x4ec746['set']('Content-Range',_0x5169d4+'-'+_0x335a31+'/'+_0x24defa)[_0xb136('0x1f')](_0x130316);}return null;};}function patchUpdates(_0x3fee49){return function(_0x58053c){try{jsonpatch['apply'](_0x58053c,_0x3fee49,!![]);}catch(_0x5e8071){return BPromise[_0xb136('0x20')](_0x5e8071);}return _0x58053c[_0xb136('0x21')]();};}function saveUpdates(_0x3dbbbc,_0x2c758b){return function(_0x196503){if(_0x196503){return _0x196503['update'](_0x3dbbbc)[_0xb136('0x22')](function(_0x599217){return _0x599217;});}return null;};}function removeEntity(_0xb24c57,_0x1f5411){return function(_0xea3938){if(_0xea3938){return _0xea3938['destroy']()[_0xb136('0x22')](function(){_0xb24c57[_0xb136('0x1a')](0xcc)[_0xb136('0x23')]();});}};}function handleEntityNotFound(_0x5495f1,_0x316c2d){return function(_0x5763ae){if(!_0x5763ae){_0x5495f1[_0xb136('0x19')](0x194);}return _0x5763ae;};}function handleError(_0x2d44d8,_0x50e9ee){_0x50e9ee=_0x50e9ee||0x1f4;return function(_0x158d51){logger[_0xb136('0x24')](_0x158d51[_0xb136('0x25')]);if(_0x158d51[_0xb136('0x26')]){delete _0x158d51[_0xb136('0x26')];}_0x2d44d8[_0xb136('0x1a')](_0x50e9ee)['send'](_0x158d51);};}exports[_0xb136('0x27')]=function(_0x30a271,_0x3bf213){var _0xf0684d={},_0x22bbef={},_0x20cb78={'count':0x0,'rows':[]};var _0x3f51df=_[_0xb136('0x28')](db[_0xb136('0x29')][_0xb136('0x2a')],function(_0x404896){return{'name':_0x404896[_0xb136('0x2b')],'type':_0x404896[_0xb136('0x2c')][_0xb136('0x2d')]};});_0x22bbef['model']=_['map'](_0x3f51df,_0xb136('0x26'));_0x22bbef[_0xb136('0x2e')]=_['keys'](_0x30a271[_0xb136('0x2e')]);_0x22bbef[_0xb136('0x2f')]=_['intersection'](_0x22bbef[_0xb136('0x30')],_0x22bbef[_0xb136('0x2e')]);_0xf0684d[_0xb136('0x31')]=_['intersection'](_0x22bbef['model'],qs[_0xb136('0x32')](_0x30a271['query'][_0xb136('0x32')]));_0xf0684d[_0xb136('0x31')]=_0xf0684d[_0xb136('0x31')][_0xb136('0x33')]?_0xf0684d[_0xb136('0x31')]:_0x22bbef[_0xb136('0x30')];if(!_0x30a271[_0xb136('0x2e')]['hasOwnProperty'](_0xb136('0x34'))){_0xf0684d[_0xb136('0x1d')]=qs[_0xb136('0x1d')](_0x30a271[_0xb136('0x2e')]['limit']);_0xf0684d[_0xb136('0x1b')]=qs['offset'](_0x30a271[_0xb136('0x2e')][_0xb136('0x1b')]);}_0xf0684d[_0xb136('0x35')]=qs[_0xb136('0x36')](_0x30a271['query'][_0xb136('0x36')]);_0xf0684d[_0xb136('0x37')]=qs[_0xb136('0x2f')](_[_0xb136('0x38')](_0x30a271[_0xb136('0x2e')],_0x22bbef[_0xb136('0x2f')]),_0x3f51df);if(_0x30a271[_0xb136('0x2e')][_0xb136('0x39')]){_0xf0684d[_0xb136('0x37')]=_[_0xb136('0x3a')](_0xf0684d['where'],{'$or':_[_0xb136('0x28')](_0x3f51df,function(_0x1ab638){if(_0x1ab638[_0xb136('0x2c')]!==_0xb136('0x3b')){var _0x205528={};_0x205528[_0x1ab638['name']]={'$like':'%'+_0x30a271[_0xb136('0x2e')]['filter']+'%'};return _0x205528;}})});}_0xf0684d=_[_0xb136('0x3a')]({},_0xf0684d,_0x30a271[_0xb136('0x3c')]);var _0x3f2a1f={'where':_0xf0684d['where']};return db[_0xb136('0x29')][_0xb136('0x1e')](_0x3f2a1f)[_0xb136('0x22')](function(_0x3d7765){_0x20cb78['count']=_0x3d7765;if(_0x30a271[_0xb136('0x2e')][_0xb136('0x3d')]){_0xf0684d['include']=[{'all':!![]}];}return db[_0xb136('0x29')][_0xb136('0x3e')](_0xf0684d);})[_0xb136('0x22')](function(_0x139d30){_0x20cb78['rows']=_0x139d30;return _0x20cb78;})['then'](respondWithFilteredResult(_0x3bf213,_0xf0684d))['catch'](handleError(_0x3bf213,null));};exports['show']=function(_0x3bdc03,_0x2acd5e){var _0x24ba66={'raw':!![],'where':{'id':_0x3bdc03[_0xb136('0x3f')]['id']}},_0x531e7b={};_0x531e7b[_0xb136('0x30')]=_[_0xb136('0x40')](db[_0xb136('0x29')]['rawAttributes']);_0x531e7b[_0xb136('0x2e')]=_[_0xb136('0x40')](_0x3bdc03[_0xb136('0x2e')]);_0x531e7b[_0xb136('0x2f')]=_[_0xb136('0x41')](_0x531e7b['model'],_0x531e7b[_0xb136('0x2e')]);_0x24ba66[_0xb136('0x31')]=_['intersection'](_0x531e7b[_0xb136('0x30')],qs[_0xb136('0x32')](_0x3bdc03[_0xb136('0x2e')]['fields']));_0x24ba66[_0xb136('0x31')]=_0x24ba66[_0xb136('0x31')][_0xb136('0x33')]?_0x24ba66[_0xb136('0x31')]:_0x531e7b[_0xb136('0x30')];if(_0x3bdc03[_0xb136('0x2e')]['includeAll']){_0x24ba66[_0xb136('0x42')]=[{'all':!![]}];}_0x24ba66=_[_0xb136('0x3a')]({},_0x24ba66,_0x3bdc03[_0xb136('0x3c')]);return db[_0xb136('0x29')][_0xb136('0x43')](_0x24ba66)[_0xb136('0x22')](handleEntityNotFound(_0x2acd5e,null))[_0xb136('0x22')](respondWithResult(_0x2acd5e,null))['catch'](handleError(_0x2acd5e,null));};exports[_0xb136('0x44')]=function(_0x1d1f75,_0x1c8e7a){var _0x26c3f4={'where':{'id':_0x1d1f75[_0xb136('0x3f')]['id']}},_0x236fdd={};_0x236fdd['model']=_[_0xb136('0x40')](db[_0xb136('0x29')][_0xb136('0x2a')]);_0x26c3f4[_0xb136('0x31')]=_[_0xb136('0x41')](_0x236fdd[_0xb136('0x30')],qs['fields'](_0x1d1f75[_0xb136('0x2e')]['fields']));_0x26c3f4[_0xb136('0x31')]=_0x26c3f4['attributes'][_0xb136('0x33')]?_0x26c3f4[_0xb136('0x31')]:_0x236fdd['model'];if(_0x1d1f75[_0xb136('0x2e')][_0xb136('0x3d')]){_0x26c3f4[_0xb136('0x42')]=[{'all':!![]}];}_0x26c3f4=_[_0xb136('0x3a')]({},_0x26c3f4,_0x1d1f75[_0xb136('0x3c')]);return db[_0xb136('0x29')][_0xb136('0x43')](_0x26c3f4)['then'](handleEntityNotFound(_0x1c8e7a,null))[_0xb136('0x22')](function(_0x7bb544){if(_0x7bb544){var _0x2ff245=_0x7bb544[_0xb136('0x45')]({'plain':!![]});_0x2ff245=qs[_0xb136('0x46')](_0x2ff245,['id','createdAt',_0xb136('0x47')]);_0x1d1f75[_0xb136('0x48')]=_[_0xb136('0x46')](_0x1d1f75[_0xb136('0x48')],['id',_0xb136('0x49'),_0xb136('0x47')]);return db[_0xb136('0x29')][_0xb136('0x4a')](_['merge'](_0x2ff245,_0x1d1f75['body']),{'include':_0x1d1f75['query'][_0xb136('0x3d')]?[{'all':!![]}]:undefined});}})[_0xb136('0x22')](respondWithResult(_0x1c8e7a,0xc9))[_0xb136('0x4b')](handleError(_0x1c8e7a,null));};exports[_0xb136('0x4c')]=function(_0xa5d23b,_0x365038){if(_0xa5d23b['body']['id']){delete _0xa5d23b[_0xb136('0x48')]['id'];}return db[_0xb136('0x29')][_0xb136('0x43')]({'where':{'id':_0xa5d23b[_0xb136('0x3f')]['id']}})[_0xb136('0x22')](handleEntityNotFound(_0x365038,null))[_0xb136('0x22')](saveUpdates(_0xa5d23b[_0xb136('0x48')],null))[_0xb136('0x22')](respondWithResult(_0x365038,null))[_0xb136('0x4b')](handleError(_0x365038,null));};exports[_0xb136('0x4d')]=function(_0x4ac960,_0x4fcfbd){return db[_0xb136('0x29')][_0xb136('0x43')]({'where':{'id':_0x4ac960[_0xb136('0x3f')]['id']}})['then'](handleEntityNotFound(_0x4fcfbd,null))[_0xb136('0x22')](removeEntity(_0x4fcfbd,null))['catch'](handleError(_0x4fcfbd,null));};exports[_0xb136('0x4a')]=function(_0x156f25,_0x4718de,_0x59833e){_0x156f25[_0xb136('0x48')][_0xb136('0x26')]=_0x156f25[_0xb136('0x4e')][_0xb136('0x4f')];_0x156f25[_0xb136('0x48')][_0xb136('0x50')]=_0x156f25[_0xb136('0x4e')][_0xb136('0x51')];_0x156f25[_0xb136('0x48')][_0xb136('0x2c')]=_0x156f25['file'][_0xb136('0x52')];return db[_0xb136('0x29')]['create'](_0x156f25[_0xb136('0x48')])['then'](respondWithResult(_0x4718de,0xc9))[_0xb136('0x4b')](handleError(_0x4718de,null));};exports['download']=function(_0x26d5ed,_0x387d00,_0x30c789){return db[_0xb136('0x29')][_0xb136('0x53')]({'where':{'id':_0x26d5ed[_0xb136('0x3f')]['id']},'raw':!![]})[_0xb136('0x22')](handleEntityNotFound(_0x387d00,null))[_0xb136('0x22')](function(_0x911577){if(_0x911577){var _0x5a2ee5=_0x911577[_0xb136('0x54')]!==null;var _0x1964f3=path[_0xb136('0x55')](config[_0xb136('0x56')],'server/files/attachments/');if(_0x5a2ee5){_0x1964f3=path[_0xb136('0x55')](_0x1964f3,_0xb136('0x57'));}var _0x15f941=path[_0xb136('0x55')](_0x1964f3,_0x911577['basename']);return _0x387d00[_0xb136('0x58')](_0x15f941);}})['catch'](handleError(_0x387d00,null));};
\ No newline at end of file
+var _0x290a=['length','nolimit','order','sort','where','filter','merge','options','Attachment','includeAll','include','findAll','rows','catch','show','params','find','clone','rawAttributes','get','omit','createdAt','body','create','name','file','originalname','basename','filename','mimetype','download','findOne','ChatOfflineMessageId','join','server/files/attachments/','rimraf','zip-dir','fast-json-patch','moment','path','sox','to-csv','ejs','fs-extra','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','offset','undefined','limit','count','Content-Range','json','apply','reject','save','update','then','destroy','sendStatus','error','stack','send','index','fieldName','type','key','map','query','keys','filters','attributes','intersection','model','fields'];(function(_0x4c6111,_0x1a0a81){var _0x903250=function(_0x5c878f){while(--_0x5c878f){_0x4c6111['push'](_0x4c6111['shift']());}};_0x903250(++_0x1a0a81);}(_0x290a,0x12b));var _0xa290=function(_0x4d5839,_0x1b7a20){_0x4d5839=_0x4d5839-0x0;var _0x22f861=_0x290a[_0x4d5839];return _0x22f861;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xa290('0x0'));var zipdir=require(_0xa290('0x1'));var jsonpatch=require(_0xa290('0x2'));var rp=require('request-promise');var moment=require(_0xa290('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0xa290('0x4'));var sox=require(_0xa290('0x5'));var csv=require(_0xa290('0x6'));var ejs=require(_0xa290('0x7'));var fs=require('fs');var fs_extra=require(_0xa290('0x8'));var _=require('lodash');var squel=require(_0xa290('0x9'));var crypto=require(_0xa290('0xa'));var jsforce=require('jsforce');var deskjs=require(_0xa290('0xb'));var toCsv=require(_0xa290('0x6'));var querystring=require(_0xa290('0xc'));var Papa=require(_0xa290('0xd'));var Redis=require(_0xa290('0xe'));var authService=require(_0xa290('0xf'));var qs=require(_0xa290('0x10'));var as=require(_0xa290('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xa290('0x12'));var utils=require(_0xa290('0x13'));var config=require(_0xa290('0x14'));var licenseUtil=require(_0xa290('0x15'));var db=require(_0xa290('0x16'))['db'];function respondWithStatusCode(_0x2ea53c,_0x2a8fd0){_0x2a8fd0=_0x2a8fd0||0xcc;return function(_0x4c13cf){if(_0x4c13cf){return _0x2ea53c['sendStatus'](_0x2a8fd0);}return _0x2ea53c[_0xa290('0x17')](_0x2a8fd0)[_0xa290('0x18')]();};}function respondWithResult(_0x305ada,_0x447fd4){_0x447fd4=_0x447fd4||0xc8;return function(_0x16416a){if(_0x16416a){return _0x305ada['status'](_0x447fd4)['json'](_0x16416a);}};}function respondWithFilteredResult(_0x6ea937,_0x2b3969){return function(_0x3c4fd6){if(_0x3c4fd6){var _0x4f50f9=typeof _0x2b3969[_0xa290('0x19')]===_0xa290('0x1a')&&typeof _0x2b3969[_0xa290('0x1b')]===_0xa290('0x1a');var _0x32edc1=_0x3c4fd6['count'];var _0x307eb3=_0x4f50f9?0x0:_0x2b3969[_0xa290('0x19')];var _0x26cebf=_0x4f50f9?_0x3c4fd6[_0xa290('0x1c')]:_0x2b3969[_0xa290('0x19')]+_0x2b3969[_0xa290('0x1b')];var _0x4a3b47;if(_0x26cebf>=_0x32edc1){_0x26cebf=_0x32edc1;_0x4a3b47=0xc8;}else{_0x4a3b47=0xce;}_0x6ea937[_0xa290('0x17')](_0x4a3b47);return _0x6ea937['set'](_0xa290('0x1d'),_0x307eb3+'-'+_0x26cebf+'/'+_0x32edc1)[_0xa290('0x1e')](_0x3c4fd6);}return null;};}function patchUpdates(_0x385d41){return function(_0x2384b7){try{jsonpatch[_0xa290('0x1f')](_0x2384b7,_0x385d41,!![]);}catch(_0x5ec916){return BPromise[_0xa290('0x20')](_0x5ec916);}return _0x2384b7[_0xa290('0x21')]();};}function saveUpdates(_0x3856a4,_0x5db075){return function(_0x2dbdfd){if(_0x2dbdfd){return _0x2dbdfd[_0xa290('0x22')](_0x3856a4)[_0xa290('0x23')](function(_0x2a9251){return _0x2a9251;});}return null;};}function removeEntity(_0x5e4ecf,_0x21377a){return function(_0x9e463c){if(_0x9e463c){return _0x9e463c[_0xa290('0x24')]()[_0xa290('0x23')](function(){_0x5e4ecf[_0xa290('0x17')](0xcc)[_0xa290('0x18')]();});}};}function handleEntityNotFound(_0x5b54e1,_0x321ade){return function(_0x48cb01){if(!_0x48cb01){_0x5b54e1[_0xa290('0x25')](0x194);}return _0x48cb01;};}function handleError(_0x8fefb9,_0x4bdc17){_0x4bdc17=_0x4bdc17||0x1f4;return function(_0x4c43f5){logger[_0xa290('0x26')](_0x4c43f5[_0xa290('0x27')]);if(_0x4c43f5['name']){delete _0x4c43f5['name'];}_0x8fefb9[_0xa290('0x17')](_0x4bdc17)[_0xa290('0x28')](_0x4c43f5);};}exports[_0xa290('0x29')]=function(_0x43b989,_0x5cbe7f){var _0x253c4a={},_0x52bb8b={},_0x12ad43={'count':0x0,'rows':[]};var _0x5577ae=_['map'](db['Attachment']['rawAttributes'],function(_0x54dd34){return{'name':_0x54dd34[_0xa290('0x2a')],'type':_0x54dd34[_0xa290('0x2b')][_0xa290('0x2c')]};});_0x52bb8b['model']=_[_0xa290('0x2d')](_0x5577ae,'name');_0x52bb8b[_0xa290('0x2e')]=_[_0xa290('0x2f')](_0x43b989[_0xa290('0x2e')]);_0x52bb8b[_0xa290('0x30')]=_['intersection'](_0x52bb8b['model'],_0x52bb8b['query']);_0x253c4a[_0xa290('0x31')]=_[_0xa290('0x32')](_0x52bb8b[_0xa290('0x33')],qs[_0xa290('0x34')](_0x43b989[_0xa290('0x2e')]['fields']));_0x253c4a['attributes']=_0x253c4a[_0xa290('0x31')][_0xa290('0x35')]?_0x253c4a[_0xa290('0x31')]:_0x52bb8b[_0xa290('0x33')];if(!_0x43b989['query']['hasOwnProperty'](_0xa290('0x36'))){_0x253c4a[_0xa290('0x1b')]=qs[_0xa290('0x1b')](_0x43b989[_0xa290('0x2e')][_0xa290('0x1b')]);_0x253c4a['offset']=qs['offset'](_0x43b989[_0xa290('0x2e')][_0xa290('0x19')]);}_0x253c4a[_0xa290('0x37')]=qs['sort'](_0x43b989[_0xa290('0x2e')][_0xa290('0x38')]);_0x253c4a[_0xa290('0x39')]=qs['filters'](_['pick'](_0x43b989[_0xa290('0x2e')],_0x52bb8b[_0xa290('0x30')]),_0x5577ae);if(_0x43b989['query'][_0xa290('0x3a')]){_0x253c4a[_0xa290('0x39')]=_[_0xa290('0x3b')](_0x253c4a[_0xa290('0x39')],{'$or':_[_0xa290('0x2d')](_0x5577ae,function(_0x51b3ca){if(_0x51b3ca[_0xa290('0x2b')]!=='VIRTUAL'){var _0x58461a={};_0x58461a[_0x51b3ca['name']]={'$like':'%'+_0x43b989[_0xa290('0x2e')]['filter']+'%'};return _0x58461a;}})});}_0x253c4a=_['merge']({},_0x253c4a,_0x43b989[_0xa290('0x3c')]);var _0x9784f={'where':_0x253c4a[_0xa290('0x39')]};return db[_0xa290('0x3d')][_0xa290('0x1c')](_0x9784f)['then'](function(_0x131e76){_0x12ad43[_0xa290('0x1c')]=_0x131e76;if(_0x43b989['query'][_0xa290('0x3e')]){_0x253c4a[_0xa290('0x3f')]=[{'all':!![]}];}return db['Attachment'][_0xa290('0x40')](_0x253c4a);})['then'](function(_0x1cdb6b){_0x12ad43[_0xa290('0x41')]=_0x1cdb6b;return _0x12ad43;})['then'](respondWithFilteredResult(_0x5cbe7f,_0x253c4a))[_0xa290('0x42')](handleError(_0x5cbe7f,null));};exports[_0xa290('0x43')]=function(_0x11826b,_0x48bc5b){var _0x62638a={'raw':!![],'where':{'id':_0x11826b[_0xa290('0x44')]['id']}},_0x304a99={};_0x304a99[_0xa290('0x33')]=_[_0xa290('0x2f')](db[_0xa290('0x3d')]['rawAttributes']);_0x304a99['query']=_['keys'](_0x11826b[_0xa290('0x2e')]);_0x304a99[_0xa290('0x30')]=_[_0xa290('0x32')](_0x304a99['model'],_0x304a99[_0xa290('0x2e')]);_0x62638a[_0xa290('0x31')]=_['intersection'](_0x304a99['model'],qs['fields'](_0x11826b['query'][_0xa290('0x34')]));_0x62638a[_0xa290('0x31')]=_0x62638a[_0xa290('0x31')]['length']?_0x62638a['attributes']:_0x304a99[_0xa290('0x33')];if(_0x11826b['query'][_0xa290('0x3e')]){_0x62638a[_0xa290('0x3f')]=[{'all':!![]}];}_0x62638a=_[_0xa290('0x3b')]({},_0x62638a,_0x11826b['options']);return db[_0xa290('0x3d')][_0xa290('0x45')](_0x62638a)[_0xa290('0x23')](handleEntityNotFound(_0x48bc5b,null))[_0xa290('0x23')](respondWithResult(_0x48bc5b,null))[_0xa290('0x42')](handleError(_0x48bc5b,null));};exports[_0xa290('0x46')]=function(_0x3a04e0,_0x5cd841){var _0x4f4654={'where':{'id':_0x3a04e0[_0xa290('0x44')]['id']}},_0x5f26e0={};_0x5f26e0[_0xa290('0x33')]=_['keys'](db['Attachment'][_0xa290('0x47')]);_0x4f4654['attributes']=_[_0xa290('0x32')](_0x5f26e0['model'],qs[_0xa290('0x34')](_0x3a04e0[_0xa290('0x2e')][_0xa290('0x34')]));_0x4f4654[_0xa290('0x31')]=_0x4f4654[_0xa290('0x31')][_0xa290('0x35')]?_0x4f4654[_0xa290('0x31')]:_0x5f26e0['model'];if(_0x3a04e0[_0xa290('0x2e')][_0xa290('0x3e')]){_0x4f4654[_0xa290('0x3f')]=[{'all':!![]}];}_0x4f4654=_[_0xa290('0x3b')]({},_0x4f4654,_0x3a04e0['options']);return db[_0xa290('0x3d')]['find'](_0x4f4654)[_0xa290('0x23')](handleEntityNotFound(_0x5cd841,null))[_0xa290('0x23')](function(_0x2c215d){if(_0x2c215d){var _0x4951bf=_0x2c215d[_0xa290('0x48')]({'plain':!![]});_0x4951bf=qs[_0xa290('0x49')](_0x4951bf,['id',_0xa290('0x4a'),'updatedAt']);_0x3a04e0[_0xa290('0x4b')]=_[_0xa290('0x49')](_0x3a04e0['body'],['id',_0xa290('0x4a'),'updatedAt']);return db['Attachment'][_0xa290('0x4c')](_[_0xa290('0x3b')](_0x4951bf,_0x3a04e0['body']),{'include':_0x3a04e0[_0xa290('0x2e')]['includeAll']?[{'all':!![]}]:undefined});}})['then'](respondWithResult(_0x5cd841,0xc9))['catch'](handleError(_0x5cd841,null));};exports[_0xa290('0x22')]=function(_0x26fb22,_0x4441db){if(_0x26fb22['body']['id']){delete _0x26fb22[_0xa290('0x4b')]['id'];}return db['Attachment']['find']({'where':{'id':_0x26fb22[_0xa290('0x44')]['id']}})['then'](handleEntityNotFound(_0x4441db,null))[_0xa290('0x23')](saveUpdates(_0x26fb22[_0xa290('0x4b')],null))[_0xa290('0x23')](respondWithResult(_0x4441db,null))[_0xa290('0x42')](handleError(_0x4441db,null));};exports[_0xa290('0x24')]=function(_0x177dd2,_0x4620b1){return db[_0xa290('0x3d')][_0xa290('0x45')]({'where':{'id':_0x177dd2[_0xa290('0x44')]['id']}})[_0xa290('0x23')](handleEntityNotFound(_0x4620b1,null))[_0xa290('0x23')](removeEntity(_0x4620b1,null))[_0xa290('0x42')](handleError(_0x4620b1,null));};exports[_0xa290('0x4c')]=function(_0x54eca8,_0x267b07,_0x46d9db){_0x54eca8[_0xa290('0x4b')][_0xa290('0x4d')]=_0x54eca8[_0xa290('0x4e')][_0xa290('0x4f')];_0x54eca8[_0xa290('0x4b')][_0xa290('0x50')]=_0x54eca8['file'][_0xa290('0x51')];_0x54eca8[_0xa290('0x4b')]['type']=_0x54eca8[_0xa290('0x4e')][_0xa290('0x52')];return db[_0xa290('0x3d')][_0xa290('0x4c')](_0x54eca8[_0xa290('0x4b')])[_0xa290('0x23')](respondWithResult(_0x267b07,0xc9))[_0xa290('0x42')](handleError(_0x267b07,null));};exports[_0xa290('0x53')]=function(_0x3cfc35,_0x4f2fca,_0x3529d2){return db[_0xa290('0x3d')][_0xa290('0x54')]({'where':{'id':_0x3cfc35[_0xa290('0x44')]['id']},'raw':!![]})[_0xa290('0x23')](handleEntityNotFound(_0x4f2fca,null))[_0xa290('0x23')](function(_0xf54c68){if(_0xf54c68){var _0x567b3a=_0xf54c68[_0xa290('0x55')]!==null;var _0x329662=path[_0xa290('0x56')](config['root'],_0xa290('0x57'));if(_0x567b3a){_0x329662=path[_0xa290('0x56')](_0x329662,'offline-chat/');}var _0x4f90de=path[_0xa290('0x56')](_0x329662,_0xf54c68[_0xa290('0x50')]);return _0x4f2fca[_0xa290('0x53')](_0x4f90de);}})['catch'](handleError(_0x4f2fca,null));};
\ No newline at end of file
index 1867aa8..a7c555e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf552=['../../config/environment','exports','define','Attachment','lodash','util','api','bluebird','path','rimraf'];(function(_0x4b584a,_0x537262){var _0x17c84e=function(_0x189cf2){while(--_0x189cf2){_0x4b584a['push'](_0x4b584a['shift']());}};_0x17c84e(++_0x537262);}(_0xf552,0x90));var _0x2f55=function(_0x141310,_0x4fb243){_0x141310=_0x141310-0x0;var _0x4680ae=_0xf552[_0x141310];return _0x4680ae;};'use strict';var _=require(_0x2f55('0x0'));var util=require(_0x2f55('0x1'));var logger=require('../../config/logger')(_0x2f55('0x2'));var moment=require('moment');var BPromise=require(_0x2f55('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x2f55('0x4'));var rimraf=require(_0x2f55('0x5'));var config=require(_0x2f55('0x6'));var attributes=require('./attachment.attributes');module[_0x2f55('0x7')]=function(_0x4dd05b,_0x52f50a){return _0x4dd05b[_0x2f55('0x8')](_0x2f55('0x9'),attributes,{'tableName':'attachments','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x14e9=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./attachment.attributes','define','attachments','lodash','../../config/logger','api'];(function(_0x4a1412,_0x2b6ee8){var _0x2cc456=function(_0x2cf4a4){while(--_0x2cf4a4){_0x4a1412['push'](_0x4a1412['shift']());}};_0x2cc456(++_0x2b6ee8);}(_0x14e9,0x141));var _0x914e=function(_0xc42e2d,_0x52da3a){_0xc42e2d=_0xc42e2d-0x0;var _0x1433d7=_0x14e9[_0xc42e2d];return _0x1433d7;};'use strict';var _=require(_0x914e('0x0'));var util=require('util');var logger=require(_0x914e('0x1'))(_0x914e('0x2'));var moment=require(_0x914e('0x3'));var BPromise=require(_0x914e('0x4'));var rp=require(_0x914e('0x5'));var fs=require('fs');var path=require(_0x914e('0x6'));var rimraf=require(_0x914e('0x7'));var config=require(_0x914e('0x8'));var attributes=require(_0x914e('0x9'));module['exports']=function(_0x18c7ae,_0x404a75){return _0x18c7ae[_0x914e('0xa')]('Attachment',attributes,{'tableName':_0x914e('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3afb6cb..4a751fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c50=['error','Attachment,\x20%s,\x20%s','message','request\x20sent','result','catch','CreateAttachment','Attachment','create','body','options','raw','debug','stringify','lodash','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Attachment,\x20%s,\x20%s,\x20%s'];(function(_0x34750b,_0x34aae5){var _0x244258=function(_0x503bf2){while(--_0x503bf2){_0x34750b['push'](_0x34750b['shift']());}};_0x244258(++_0x34aae5);}(_0x6c50,0xa4));var _0x06c5=function(_0x480f85,_0x1e3edc){_0x480f85=_0x480f85-0x0;var _0x12e7ae=_0x6c50[_0x480f85];return _0x12e7ae;};'use strict';var _=require(_0x06c5('0x0'));var util=require(_0x06c5('0x1'));var moment=require(_0x06c5('0x2'));var BPromise=require(_0x06c5('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x06c5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x06c5('0x5'));var logger=require(_0x06c5('0x6'))(_0x06c5('0x7'));var config=require(_0x06c5('0x8'));var jayson=require(_0x06c5('0x9'));var client=jayson[_0x06c5('0xa')][_0x06c5('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x427dd6,_0x181c7f,_0x17c636){return new BPromise(function(_0x154b0a,_0x546ae5){return client[_0x06c5('0xc')](_0x427dd6,_0x17c636)[_0x06c5('0xd')](function(_0x3010af){logger[_0x06c5('0xe')]('Attachment,\x20%s,\x20%s',_0x181c7f,'request\x20sent');logger['debug'](_0x06c5('0xf'),_0x181c7f,'request\x20sent',JSON['stringify'](_0x3010af));if(_0x3010af['error']){if(_0x3010af[_0x06c5('0x10')]['code']===0x1f4){logger[_0x06c5('0x10')](_0x06c5('0x11'),_0x181c7f,_0x3010af[_0x06c5('0x10')]['message']);return _0x546ae5(_0x3010af[_0x06c5('0x10')][_0x06c5('0x12')]);}logger[_0x06c5('0x10')](_0x06c5('0x11'),_0x181c7f,_0x3010af['error']['message']);return _0x154b0a(_0x3010af[_0x06c5('0x10')][_0x06c5('0x12')]);}else{logger[_0x06c5('0xe')]('Attachment,\x20%s,\x20%s',_0x181c7f,_0x06c5('0x13'));_0x154b0a(_0x3010af[_0x06c5('0x14')]['message']);}})[_0x06c5('0x15')](function(_0x9045e6){logger[_0x06c5('0x10')](_0x06c5('0x11'),_0x181c7f,_0x9045e6);_0x546ae5(_0x9045e6);});});}exports[_0x06c5('0x16')]=function(_0x36b9e9){var _0x44d14e=this;return new Promise(function(_0x18a070,_0x1393f5){return db[_0x06c5('0x17')][_0x06c5('0x18')](_0x36b9e9[_0x06c5('0x19')],{'raw':_0x36b9e9[_0x06c5('0x1a')]?_0x36b9e9[_0x06c5('0x1a')][_0x06c5('0x1b')]===undefined?!![]:![]:!![]})[_0x06c5('0xd')](function(_0x26a653){logger['info'](_0x06c5('0x16'),_0x36b9e9);logger[_0x06c5('0x1c')](_0x06c5('0x16'),_0x36b9e9,JSON[_0x06c5('0x1d')](_0x26a653));_0x18a070(_0x26a653);})[_0x06c5('0x15')](function(_0x3c9e49){logger[_0x06c5('0x10')]('CreateAttachment',_0x3c9e49[_0x06c5('0x12')],_0x36b9e9);_0x1393f5(_0x44d14e[_0x06c5('0x10')](0x1f4,_0x3c9e49[_0x06c5('0x12')]));});});};
\ No newline at end of file
+var _0x16d2=['options','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','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','Attachment','create'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x16d2,0x123));var _0x216d=function(_0x340172,_0x46c3b8){_0x340172=_0x340172-0x0;var _0x1d9ef6=_0x16d2[_0x340172];return _0x1d9ef6;};'use strict';var _=require(_0x216d('0x0'));var util=require(_0x216d('0x1'));var moment=require(_0x216d('0x2'));var BPromise=require(_0x216d('0x3'));var rs=require(_0x216d('0x4'));var fs=require('fs');var Redis=require(_0x216d('0x5'));var db=require(_0x216d('0x6'))['db'];var utils=require(_0x216d('0x7'));var logger=require(_0x216d('0x8'))('rpc');var config=require(_0x216d('0x9'));var jayson=require(_0x216d('0xa'));var client=jayson[_0x216d('0xb')][_0x216d('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x1dd8e2,_0x24c831,_0x3e0ada){return new BPromise(function(_0x28da14,_0x57accc){return client[_0x216d('0xd')](_0x1dd8e2,_0x3e0ada)[_0x216d('0xe')](function(_0x35abcf){logger[_0x216d('0xf')](_0x216d('0x10'),_0x24c831,_0x216d('0x11'));logger['debug'](_0x216d('0x12'),_0x24c831,'request\x20sent',JSON[_0x216d('0x13')](_0x35abcf));if(_0x35abcf[_0x216d('0x14')]){if(_0x35abcf[_0x216d('0x14')][_0x216d('0x15')]===0x1f4){logger[_0x216d('0x14')](_0x216d('0x10'),_0x24c831,_0x35abcf['error'][_0x216d('0x16')]);return _0x57accc(_0x35abcf['error'][_0x216d('0x16')]);}logger[_0x216d('0x14')]('Attachment,\x20%s,\x20%s',_0x24c831,_0x35abcf[_0x216d('0x14')][_0x216d('0x16')]);return _0x28da14(_0x35abcf['error'][_0x216d('0x16')]);}else{logger['info'](_0x216d('0x10'),_0x24c831,_0x216d('0x11'));_0x28da14(_0x35abcf[_0x216d('0x17')][_0x216d('0x16')]);}})[_0x216d('0x18')](function(_0x304dfa){logger[_0x216d('0x14')](_0x216d('0x10'),_0x24c831,_0x304dfa);_0x57accc(_0x304dfa);});});}exports[_0x216d('0x19')]=function(_0x53d464){var _0x3b60dd=this;return new Promise(function(_0x5124ab,_0x4ddc51){return db[_0x216d('0x1a')][_0x216d('0x1b')](_0x53d464['body'],{'raw':_0x53d464[_0x216d('0x1c')]?_0x53d464[_0x216d('0x1c')]['raw']===undefined?!![]:![]:!![]})[_0x216d('0xe')](function(_0x13b8e0){logger[_0x216d('0xf')](_0x216d('0x19'),_0x53d464);logger['debug'](_0x216d('0x19'),_0x53d464,JSON[_0x216d('0x13')](_0x13b8e0));_0x5124ab(_0x13b8e0);})[_0x216d('0x18')](function(_0x438981){logger[_0x216d('0x14')]('CreateAttachment',_0x438981[_0x216d('0x16')],_0x53d464);_0x4ddc51(_0x3b60dd[_0x216d('0x14')](0x1f4,_0x438981[_0x216d('0x16')]));});});};
\ No newline at end of file
index 781f1a8..43255f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2032=['./attachment.controller','get','isAuthenticated','index','/:id','show','download','/:id/clone','clone','root','server/files/attachments/','now','post','single','file','create','put','update','delete','destroy','exports','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment'];(function(_0xfffc22,_0x26784c){var _0x1f167c=function(_0xbb0d8d){while(--_0xbb0d8d){_0xfffc22['push'](_0xfffc22['shift']());}};_0x1f167c(++_0x26784c);}(_0x2032,0xd9));var _0x2203=function(_0x4b766e,_0x2d1b15){_0x4b766e=_0x4b766e-0x0;var _0x99d39d=_0x2032[_0x4b766e];return _0x99d39d;};'use strict';var multer=require('multer');var util=require(_0x2203('0x0'));var path=require(_0x2203('0x1'));var timeout=require(_0x2203('0x2'));var express=require('express');var router=express[_0x2203('0x3')]();var fs_extra=require(_0x2203('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x2203('0x5'));var config=require(_0x2203('0x6'));var controller=require(_0x2203('0x7'));router[_0x2203('0x8')]('/',auth[_0x2203('0x9')](),controller[_0x2203('0xa')]);router[_0x2203('0x8')](_0x2203('0xb'),auth[_0x2203('0x9')](),controller[_0x2203('0xc')]);router[_0x2203('0x8')]('/:id/download',auth['isAuthenticated'](),controller[_0x2203('0xd')]);router['post'](_0x2203('0xe'),auth[_0x2203('0x9')](),controller[_0x2203('0xf')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x849049,_0x4a6832,_0x3f690a){_0x3f690a(null,path['join'](config[_0x2203('0x10')],_0x2203('0x11')));},'filename':function(_0x4b9376,_0x583bc7,_0x585c76){_0x585c76(null,util['format']('%s-%s',Date[_0x2203('0x12')](),_0x583bc7['originalname']['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0x2203('0x13')]('/',upload[_0x2203('0x14')](_0x2203('0x15')),controller[_0x2203('0x16')]);router[_0x2203('0x17')](_0x2203('0xb'),auth[_0x2203('0x9')](),controller[_0x2203('0x18')]);router[_0x2203('0x19')](_0x2203('0xb'),auth['isAuthenticated'](),controller[_0x2203('0x1a')]);module[_0x2203('0x1b')]=router;
\ No newline at end of file
+var _0x757a=['put','/:id','update','delete','destroy','exports','util','path','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./attachment.controller','get','index','isAuthenticated','show','/:id/download','post','/:id/clone','clone','diskStorage','%s-%s','replace','single','file','create'];(function(_0x4feb16,_0x285d1a){var _0x289a00=function(_0x267c08){while(--_0x267c08){_0x4feb16['push'](_0x4feb16['shift']());}};_0x289a00(++_0x285d1a);}(_0x757a,0xde));var _0xa757=function(_0x1352a9,_0x16b43f){_0x1352a9=_0x1352a9-0x0;var _0x42dee3=_0x757a[_0x1352a9];return _0x42dee3;};'use strict';var multer=require('multer');var util=require(_0xa757('0x0'));var path=require(_0xa757('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0xa757('0x2'));var auth=require(_0xa757('0x3'));var interaction=require(_0xa757('0x4'));var config=require(_0xa757('0x5'));var controller=require(_0xa757('0x6'));router[_0xa757('0x7')]('/',auth['isAuthenticated'](),controller[_0xa757('0x8')]);router[_0xa757('0x7')]('/:id',auth[_0xa757('0x9')](),controller[_0xa757('0xa')]);router[_0xa757('0x7')](_0xa757('0xb'),auth[_0xa757('0x9')](),controller['download']);router[_0xa757('0xc')](_0xa757('0xd'),auth[_0xa757('0x9')](),controller[_0xa757('0xe')]);var upload=multer({'storage':multer[_0xa757('0xf')]({'destination':function(_0x188ad5,_0x17408b,_0x483d77){_0x483d77(null,path['join'](config['root'],'server/files/attachments/'));},'filename':function(_0x4db68e,_0x421040,_0x544b45){_0x544b45(null,util['format'](_0xa757('0x10'),Date['now'](),_0x421040['originalname'][_0xa757('0x11')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0xa757('0xc')]('/',upload[_0xa757('0x12')](_0xa757('0x13')),controller[_0xa757('0x14')]);router[_0xa757('0x15')](_0xa757('0x16'),auth[_0xa757('0x9')](),controller[_0xa757('0x17')]);router[_0xa757('0x18')]('/:id',auth[_0xa757('0x9')](),controller[_0xa757('0x19')]);module[_0xa757('0x1a')]=router;
\ No newline at end of file
index aae51e1..7007870 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa825=['agent','disabled','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','blockDuration','blocked','add','minutes','clearBlockUser','getLicense','catch','lodash','passport','passport-google-oauth20','Strategy','moment','../../mysqldb','../../config/environment','signToken','../../config/utils','google','/login','profile','email','callback','authenticate','secret','callbackURL','Setting','findOne','allowedLoginAttempts','then','find','emails','value','admin','user'];(function(_0x5ddb1c,_0x5ea4df){var _0x354adc=function(_0x2dfb1f){while(--_0x2dfb1f){_0x5ddb1c['push'](_0x5ddb1c['shift']());}};_0x354adc(++_0x5ea4df);}(_0xa825,0x196));var _0x5a82=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0xa825[_0x3b380d];return _0x54502b;};'use strict';var _=require(_0x5a82('0x0'));var passport=require(_0x5a82('0x1'));var GoogleStrategy=require(_0x5a82('0x2'))[_0x5a82('0x3')];var moment=require(_0x5a82('0x4'));var db=require(_0x5a82('0x5'))['db'];var config=require(_0x5a82('0x6'));var signToken=require('../../components/auth/service')[_0x5a82('0x7')];var utils=require(_0x5a82('0x8'));exports['login']=passport['authenticate'](_0x5a82('0x9'),{'failureRedirect':_0x5a82('0xa'),'scope':[_0x5a82('0xb'),_0x5a82('0xc')],'session':![]});exports[_0x5a82('0xd')]=passport[_0x5a82('0xe')](_0x5a82('0x9'),{'failureRedirect':_0x5a82('0xa'),'session':![]});passport['use'](new GoogleStrategy({'clientID':config[_0x5a82('0x9')]?config[_0x5a82('0x9')]['clientID']:'id','clientSecret':config[_0x5a82('0x9')]?config[_0x5a82('0x9')]['clientSecret']:_0x5a82('0xf'),'callbackURL':config['google']?config[_0x5a82('0x9')][_0x5a82('0x10')]:''},function(_0x4fd567,_0x305529,_0xef4b9b,_0x4de3e8){var _0x210209,_0x36c635;return db[_0x5a82('0x11')][_0x5a82('0x12')]({'where':{'id':0x1},'attributes':[_0x5a82('0x13'),'blockDuration'],'raw':!![]})[_0x5a82('0x14')](function(_0x33159a){_0x210209=_0x33159a;return db['User'][_0x5a82('0x15')]({'where':{'email':_['map'](_0xef4b9b[_0x5a82('0x16')],_0x5a82('0x17')),'role':{'$or':[_0x5a82('0x18'),_0x5a82('0x19'),_0x5a82('0x1a')]}}});})['then'](function(_0x3ca446){_0x36c635=_0x3ca446;if(_0x36c635){if(_0x36c635[_0x5a82('0x1b')]){return _0x4de3e8(_0x5a82('0x1c'));}else if(_0x210209[_0x5a82('0x1d')]>0x0){if(_0x36c635[_0x5a82('0x1e')]){if(moment(_0x36c635['blockedAt'])[_0x5a82('0x1f')](_0x210209['blockDuration'],_0x5a82('0x20'))>moment()){return _0x4de3e8(_0x5a82('0x1c'));}else{return utils[_0x5a82('0x21')](_0x36c635,0x0,![],null)[_0x5a82('0x14')](function(){return utils['getLicense'](_0x36c635);})[_0x5a82('0x14')](function(){return _0x4de3e8(null,_0x36c635);});}}else{return utils[_0x5a82('0x22')](_0x36c635)['then'](function(){return _0x4de3e8(null,_0x36c635);});}}else{return utils[_0x5a82('0x22')](_0x36c635)[_0x5a82('0x14')](function(){return _0x4de3e8(null,_0x36c635);});}}return _0x4de3e8(_0x5a82('0x1c'));})[_0x5a82('0x23')](function(_0x516b6c){_0x4de3e8(_0x516b6c);});}));
\ No newline at end of file
+var _0x5245=['../../config/utils','authenticate','google','/login','profile','email','callback','use','clientID','clientSecret','secret','Setting','findOne','allowedLoginAttempts','blockDuration','User','find','value','admin','user','agent','then','disabled','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','blocked','blockedAt','minutes','getLicense','catch','lodash','passport-google-oauth20','Strategy','moment','../../mysqldb','../../config/environment','../../components/auth/service'];(function(_0x390752,_0x42cad3){var _0x5eca55=function(_0x529961){while(--_0x529961){_0x390752['push'](_0x390752['shift']());}};_0x5eca55(++_0x42cad3);}(_0x5245,0x119));var _0x5524=function(_0x5e570c,_0x233990){_0x5e570c=_0x5e570c-0x0;var _0xc62527=_0x5245[_0x5e570c];return _0xc62527;};'use strict';var _=require(_0x5524('0x0'));var passport=require('passport');var GoogleStrategy=require(_0x5524('0x1'))[_0x5524('0x2')];var moment=require(_0x5524('0x3'));var db=require(_0x5524('0x4'))['db'];var config=require(_0x5524('0x5'));var signToken=require(_0x5524('0x6'))['signToken'];var utils=require(_0x5524('0x7'));exports['login']=passport[_0x5524('0x8')](_0x5524('0x9'),{'failureRedirect':_0x5524('0xa'),'scope':[_0x5524('0xb'),_0x5524('0xc')],'session':![]});exports[_0x5524('0xd')]=passport[_0x5524('0x8')](_0x5524('0x9'),{'failureRedirect':_0x5524('0xa'),'session':![]});passport[_0x5524('0xe')](new GoogleStrategy({'clientID':config[_0x5524('0x9')]?config[_0x5524('0x9')][_0x5524('0xf')]:'id','clientSecret':config[_0x5524('0x9')]?config[_0x5524('0x9')][_0x5524('0x10')]:_0x5524('0x11'),'callbackURL':config[_0x5524('0x9')]?config[_0x5524('0x9')]['callbackURL']:''},function(_0x5947f8,_0x5d1eff,_0x2f5a59,_0xd4c6d8){var _0x2e7e2e,_0x5e8ee0;return db[_0x5524('0x12')][_0x5524('0x13')]({'where':{'id':0x1},'attributes':[_0x5524('0x14'),_0x5524('0x15')],'raw':!![]})['then'](function(_0x136815){_0x2e7e2e=_0x136815;return db[_0x5524('0x16')][_0x5524('0x17')]({'where':{'email':_['map'](_0x2f5a59['emails'],_0x5524('0x18')),'role':{'$or':[_0x5524('0x19'),_0x5524('0x1a'),_0x5524('0x1b')]}}});})[_0x5524('0x1c')](function(_0x335693){_0x5e8ee0=_0x335693;if(_0x5e8ee0){if(_0x5e8ee0[_0x5524('0x1d')]){return _0xd4c6d8(_0x5524('0x1e'));}else if(_0x2e7e2e['blockDuration']>0x0){if(_0x5e8ee0[_0x5524('0x1f')]){if(moment(_0x5e8ee0[_0x5524('0x20')])['add'](_0x2e7e2e[_0x5524('0x15')],_0x5524('0x21'))>moment()){return _0xd4c6d8(_0x5524('0x1e'));}else{return utils['clearBlockUser'](_0x5e8ee0,0x0,![],null)[_0x5524('0x1c')](function(){return utils[_0x5524('0x22')](_0x5e8ee0);})['then'](function(){return _0xd4c6d8(null,_0x5e8ee0);});}}else{return utils['getLicense'](_0x5e8ee0)[_0x5524('0x1c')](function(){return _0xd4c6d8(null,_0x5e8ee0);});}}else{return utils[_0x5524('0x22')](_0x5e8ee0)[_0x5524('0x1c')](function(){return _0xd4c6d8(null,_0x5e8ee0);});}}return _0xd4c6d8(_0x5524('0x1e'));})[_0x5524('0x23')](function(_0x11a143){_0xd4c6d8(_0x11a143);});}));
\ No newline at end of file
index e372874..3e963f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x807b=['express','passport','Router','./authGoogle.controller','../user/user.controller.js','../../components/auth/service','get','login','callback','isMiddleware','setTokenCookie','exports'];(function(_0x500ea0,_0x1db62b){var _0x31b78e=function(_0x1bf570){while(--_0x1bf570){_0x500ea0['push'](_0x500ea0['shift']());}};_0x31b78e(++_0x1db62b);}(_0x807b,0x1bc));var _0xb807=function(_0x1e3872,_0xaceee8){_0x1e3872=_0x1e3872-0x0;var _0x5178c8=_0x807b[_0x1e3872];return _0x5178c8;};'use strict';var express=require(_0xb807('0x0'));var passport=require(_0xb807('0x1'));var router=express[_0xb807('0x2')]();var controller=require(_0xb807('0x3'));var userController=require(_0xb807('0x4'));var authService=require(_0xb807('0x5'));router[_0xb807('0x6')]('/',controller[_0xb807('0x7')]);router['get']('/callback',controller[_0xb807('0x8')],authService[_0xb807('0x9')],userController[_0xb807('0x7')],authService[_0xb807('0xa')]);module[_0xb807('0xb')]=router;
\ No newline at end of file
+var _0x49ca=['passport','./authGoogle.controller','../user/user.controller.js','../../components/auth/service','get','/callback','login','exports','express'];(function(_0x508685,_0x9f94af){var _0x976a76=function(_0x1bcb05){while(--_0x1bcb05){_0x508685['push'](_0x508685['shift']());}};_0x976a76(++_0x9f94af);}(_0x49ca,0xbc));var _0xa49c=function(_0x54bf6f,_0xd30c3){_0x54bf6f=_0x54bf6f-0x0;var _0x465e74=_0x49ca[_0x54bf6f];return _0x465e74;};'use strict';var express=require(_0xa49c('0x0'));var passport=require(_0xa49c('0x1'));var router=express['Router']();var controller=require(_0xa49c('0x2'));var userController=require(_0xa49c('0x3'));var authService=require(_0xa49c('0x4'));router[_0xa49c('0x5')]('/',controller['login']);router[_0xa49c('0x5')](_0xa49c('0x6'),controller['callback'],authService['isMiddleware'],userController[_0xa49c('0x7')],authService['setTokenCookie']);module[_0xa49c('0x8')]=router;
\ No newline at end of file
index 2dd6549..8becdbd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd0f=['role','blocked','admin','user','agent','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','loginAttempts','disabled','blockDuration','blockedAt','add','minutes','clearBlockUser','getLicense','catch','MailAccount','find','MailServerOut','Smtp','Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!','service','host','port','authentication','auth','pass','format','\x22%s\x22\x20<%s>','request','SendMail','error','SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!','message','status','send','login','authenticate','local','json','online','forgot','body','email','Email\x20parameter\x20is\x20missing','generate','trim','User','This\x20email\x20is\x20not\x20registered.','The\x20user\x20is\x20disabled.\x20Please\x20contact\x20the\x20administrator.','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','https://','headers','/reset/','If\x20you\x20did\x20not\x20request\x20this,\x20please\x20ignore\x20this\x20email\x20and\x20your\x20password\x20will\x20remain\x20unchanged.\x0a','Reset\x20Email\x20sent!','token','Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.','securePassword','enforcePasswordHistory','passwordHistoryLimit','validatePasswordPattern','validatePasswordHistory','previousPasswords','resetPasswordToken','Password\x20reset!','use','util','passport-local','randomstring','../../mysqldb','../../components/auth/service','../../config/utils','client','http','Setting','findOne','allowedLoginAttempts','then','name','password','salt'];(function(_0x47b5e6,_0x4d31e4){var _0xbd36ea=function(_0x3d2dd3){while(--_0x3d2dd3){_0x47b5e6['push'](_0x47b5e6['shift']());}};_0xbd36ea(++_0x4d31e4);}(_0xdd0f,0x9d));var _0xfdd0=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xdd0f[_0x3dd15e];return _0x231fd0;};'use strict';var util=require(_0xfdd0('0x0'));var passport=require('passport');var LocalStrategy=require(_0xfdd0('0x1'))['Strategy'];var jayson=require('jayson/promise');var _=require('lodash');var rs=require(_0xfdd0('0x2'));var moment=require('moment');var db=require(_0xfdd0('0x3'))['db'];var authService=require(_0xfdd0('0x4'));var utils=require(_0xfdd0('0x5'));var client=jayson[_0xfdd0('0x6')][_0xfdd0('0x7')]({'port':0x232b});function localAuthenticate(_0xfa4ce6,_0x564e3e,_0x3d7ab2,_0x444be4){var _0x4833e8,_0x10b29d;return db[_0xfdd0('0x8')][_0xfdd0('0x9')]({'where':{'id':0x1},'attributes':[_0xfdd0('0xa'),'blockDuration'],'raw':!![]})[_0xfdd0('0xb')](function(_0x229952){_0x4833e8=_0x229952;return _0xfa4ce6[_0xfdd0('0x9')]({'attributes':['id',_0xfdd0('0xc'),_0xfdd0('0xd'),_0xfdd0('0xe'),_0xfdd0('0xf'),'disabled',_0xfdd0('0x10'),'blockedAt','loginAttempts'],'where':{'name':_0x564e3e,'role':{'$or':[_0xfdd0('0x11'),_0xfdd0('0x12'),_0xfdd0('0x13')]}}});})[_0xfdd0('0xb')](function(_0x20ca9b){if(!_0x20ca9b||_0x20ca9b&&_0x20ca9b[_0xfdd0('0xc')]!==_0x564e3e){throw new Error(_0xfdd0('0x14'));}else{_0x10b29d=_0x20ca9b;return _0x10b29d;}})[_0xfdd0('0xb')](function(){_0x10b29d['authenticate'](_0x3d7ab2,function(_0xc0bf19,_0x22330b){var _0x4a83a4=_0x10b29d[_0xfdd0('0x15')]+0x1;if(_0xc0bf19){return _0x444be4(_0xc0bf19);}else if(!_0x22330b){if(_0x10b29d[_0xfdd0('0x16')]){return _0x444be4(null,![],{'message':_0xfdd0('0x14')});}else if(_0x4833e8['allowedLoginAttempts']>0x0){if(_0x10b29d['blocked']){if(_0x4833e8[_0xfdd0('0x17')]>0x0){if(moment(_0x10b29d[_0xfdd0('0x18')])[_0xfdd0('0x19')](_0x4833e8[_0xfdd0('0x17')],_0xfdd0('0x1a'))>moment()){return _0x444be4(null,![],{'message':_0xfdd0('0x14')});}else{return utils['clearBlockUser'](_0x10b29d,_0x4a83a4,![],null)[_0xfdd0('0xb')](function(){return _0x444be4(null,![],{'message':_0xfdd0('0x14')});});}}else{return _0x444be4(null,![],{'message':_0xfdd0('0x14')});}}else{if(_0x4a83a4>=_0x4833e8[_0xfdd0('0xa')]){return utils[_0xfdd0('0x1b')](_0x10b29d,0x0,!![],moment())[_0xfdd0('0xb')](function(){return _0x444be4(null,![],{'message':_0xfdd0('0x14')});});}else{return utils[_0xfdd0('0x1b')](_0x10b29d,_0x4a83a4,![],null)[_0xfdd0('0xb')](function(){return _0x444be4(null,![],{'message':_0xfdd0('0x14')});});}}}else{return _0x444be4(null,![],{'message':_0xfdd0('0x14')});}}else{if(_0x10b29d[_0xfdd0('0x16')]){return _0x444be4(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else if(_0x4833e8[_0xfdd0('0xa')]>0x0){if(_0x10b29d[_0xfdd0('0x10')]){if(_0x4833e8[_0xfdd0('0x17')]>0x0){if(moment(_0x10b29d[_0xfdd0('0x18')])[_0xfdd0('0x19')](_0x4833e8['blockDuration'],_0xfdd0('0x1a'))>moment()){return _0x444be4(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else{return utils[_0xfdd0('0x1b')](_0x10b29d,0x0,![],null)[_0xfdd0('0xb')](function(){return utils['getLicense'](_0x10b29d);})[_0xfdd0('0xb')](function(){return _0x444be4(null,_0x10b29d);});}}else{return _0x444be4(null,![],{'message':_0xfdd0('0x14')});}}else{return utils[_0xfdd0('0x1b')](_0x10b29d,0x0,![],null)[_0xfdd0('0xb')](function(){return utils[_0xfdd0('0x1c')](_0x10b29d);})[_0xfdd0('0xb')](function(){return _0x444be4(null,_0x10b29d);})[_0xfdd0('0x1d')](function(_0x27941f){return _0x444be4(null,![],_0x27941f);});}}else{if(_0x10b29d[_0xfdd0('0x10')]){return _0x444be4(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else{return utils['getLicense'](_0x10b29d)['then'](function(){return _0x444be4(null,_0x10b29d);});}}}});})[_0xfdd0('0x1d')](function(_0x157b28){return _0x444be4(null,![],_0x157b28);});}function sendServiceMail(_0x28c68d){return db[_0xfdd0('0x1e')][_0xfdd0('0x1f')]({'where':{'service':!![]},'attributes':['id','name','email'],'include':[{'model':db[_0xfdd0('0x20')],'as':_0xfdd0('0x21')}]})['then'](function(_0x51ef28){if(!_0x51ef28){throw new Error(_0xfdd0('0x22'));}var _0x2fd89f={'tls':{'rejectUnauthorized':![]}};if(_0x51ef28[_0xfdd0('0x21')][_0xfdd0('0x23')]){_0x2fd89f[_0xfdd0('0x23')]=_0x51ef28['Smtp'][_0xfdd0('0x23')];}else{_0x2fd89f['host']=_0x51ef28[_0xfdd0('0x21')][_0xfdd0('0x24')];_0x2fd89f['port']=_0x51ef28['Smtp'][_0xfdd0('0x25')];_0x2fd89f['secure']=_0x51ef28[_0xfdd0('0x21')]['secure'];}if(_0x51ef28['Smtp'][_0xfdd0('0x26')]){_0x2fd89f[_0xfdd0('0x27')]={'user':_0x51ef28['Smtp'][_0xfdd0('0x12')],'pass':_0x51ef28[_0xfdd0('0x21')][_0xfdd0('0x28')]};}var _0x395f0a={'account':_0x2fd89f,'message':_['merge']({'from':util[_0xfdd0('0x29')](_0xfdd0('0x2a'),_0x51ef28[_0xfdd0('0xc')],_0x51ef28['email']||_0x51ef28[_0xfdd0('0x21')][_0xfdd0('0x12')])},_0x28c68d)};return client[_0xfdd0('0x2b')](_0xfdd0('0x2c'),_0x395f0a);})[_0xfdd0('0xb')](function(_0x25d472){if(_0x25d472[_0xfdd0('0x2d')]){throw new Error(util[_0xfdd0('0x29')](_0xfdd0('0x2e'),_0x25d472[_0xfdd0('0x2d')][_0xfdd0('0x2f')]||JSON['stringify'](_0x25d472[_0xfdd0('0x2d')])));}return!![];});}function handleError(_0x9d03fc,_0x30db62,_0x3c6fc8){return _0x9d03fc[_0xfdd0('0x30')](_0x30db62||0x1f4)[_0xfdd0('0x31')]({'message':_0x3c6fc8?_0x3c6fc8['message']||_0x3c6fc8:''});}exports[_0xfdd0('0x32')]=function(_0x1bc4c1,_0x579128,_0x1c3684){passport[_0xfdd0('0x33')](_0xfdd0('0x34'),function(_0x36c81b,_0x5076e0,_0x36dea6){var _0x495d62=_0x36c81b||_0x36dea6;if(_0x495d62){return handleError(_0x579128,0x191,_0x495d62);}if(!_0x5076e0){return handleError(_0x579128,0x194,{'message':'Something\x20went\x20wrong,\x20please\x20try\x20again.'});}else{var _0x40349b={'payload':{'id':_0x5076e0['id'],'role':_0x5076e0[_0xfdd0('0xf')]},'options':{'expiresIn':0x15180}};return authService['signToken'](_0x40349b)[_0xfdd0('0xb')](function(_0x547edf){_0x579128[_0xfdd0('0x35')]({'id':_0x5076e0['id'],'token':_0x547edf,'statusCall':'','isAlreadyLogged':_0x5076e0[_0xfdd0('0x36')]});});}})(_0x1bc4c1,_0x579128,_0x1c3684);};exports[_0xfdd0('0x37')]=function(_0x52b922,_0x2edbff,_0x1d55d5){if(!_0x52b922[_0xfdd0('0x38')][_0xfdd0('0x39')]){return handleError(_0x2edbff,0x1f4,{'message':_0xfdd0('0x3a')});}var _0x174a29=rs[_0xfdd0('0x3b')]();_0x52b922[_0xfdd0('0x38')][_0xfdd0('0x39')]=_0x52b922[_0xfdd0('0x38')][_0xfdd0('0x39')][_0xfdd0('0x3c')]()['toLowerCase']();var _0x233fcf;return db[_0xfdd0('0x8')][_0xfdd0('0x9')]({'where':{'id':0x1},'attributes':['allowedLoginAttempts',_0xfdd0('0x17')],'raw':!![]})['then'](function(_0x305cc8){_0x233fcf=_0x305cc8;return db[_0xfdd0('0x3d')][_0xfdd0('0x1f')]({'where':{'email':_0x52b922[_0xfdd0('0x38')][_0xfdd0('0x39')]}});})[_0xfdd0('0xb')](function(_0x3e5829){if(!_0x3e5829){throw new Error(_0xfdd0('0x3e'));}if(_0x3e5829['disabled']){throw new Error(_0xfdd0('0x3f'));}if(_0x3e5829[_0xfdd0('0x10')]){if(moment(_0x3e5829[_0xfdd0('0x18')])[_0xfdd0('0x19')](_0x233fcf[_0xfdd0('0x17')],_0xfdd0('0x1a'))>moment()){throw new Error('The\x20user\x20is\x20blocked.\x20Please\x20contact\x20the\x20administrator.');}else{_0x3e5829[_0xfdd0('0x10')]=![];_0x3e5829['blockedAt']=null;}}_0x3e5829['resetPasswordToken']=_0x174a29;_0x3e5829[_0xfdd0('0x40')]=Date[_0xfdd0('0x41')]()+0x36ee80;return _0x3e5829[_0xfdd0('0x42')]();})[_0xfdd0('0xb')](function(){return sendServiceMail({'to':_0x52b922[_0xfdd0('0x38')][_0xfdd0('0x39')],'subject':_0xfdd0('0x43'),'text':_0xfdd0('0x44')+_0xfdd0('0x45')+_0xfdd0('0x46')+_0x52b922[_0xfdd0('0x47')][_0xfdd0('0x24')]+_0xfdd0('0x48')+_0x174a29+'\x0a\x0a'+_0xfdd0('0x49')});})[_0xfdd0('0xb')](function(){_0x2edbff['status'](0xc8)[_0xfdd0('0x31')]({'message':_0xfdd0('0x4a')});})['catch'](function(_0x1efb20){return handleError(_0x2edbff,0x1f4,_0x1efb20);});};exports['reset']=function(_0x14e11e,_0x5415a5,_0x12ae58){return db[_0xfdd0('0x3d')][_0xfdd0('0x1f')]({'where':{'resetPasswordToken':_0x14e11e['params'][_0xfdd0('0x4b')],'resetPasswordExpires':{'$gt':Date[_0xfdd0('0x41')]()}}})[_0xfdd0('0xb')](function(_0x4ca871){if(!_0x4ca871){throw new Error(_0xfdd0('0x4c'));}return db[_0xfdd0('0x8')]['findOne']({'attributes':['id',_0xfdd0('0x4d'),_0xfdd0('0x4e'),_0xfdd0('0x4f')]})['then'](function(_0x2b8b18){if(_0x2b8b18[_0xfdd0('0x4d')])authService[_0xfdd0('0x50')](_0x14e11e[_0xfdd0('0x38')]['password']);if(!_0x2b8b18['enforcePasswordHistory']||!_0x4ca871['previousPasswords'])return _0x4ca871;authService[_0xfdd0('0x51')](_0x14e11e[_0xfdd0('0x38')]['password'],_0x4ca871[_0xfdd0('0x52')],_0x2b8b18[_0xfdd0('0x4f')]);return _0x4ca871;})[_0xfdd0('0xb')](function(){_0x4ca871[_0xfdd0('0xd')]=_0x14e11e[_0xfdd0('0x38')][_0xfdd0('0xd')];_0x4ca871[_0xfdd0('0x53')]=null;_0x4ca871[_0xfdd0('0x40')]=null;return _0x4ca871[_0xfdd0('0x42')]();});})['then'](function(){_0x5415a5[_0xfdd0('0x30')](0xc8)['send']({'message':_0xfdd0('0x54')});})['catch'](function(_0x47c16c){return handleError(_0x5415a5,0x1f4,_0x47c16c);});};passport[_0xfdd0('0x55')](new LocalStrategy({'usernameField':'name','passwordField':'password'},function(_0x34a98d,_0x23dd74,_0x4a3d47){return localAuthenticate(db[_0xfdd0('0x3d')],_0x34a98d,_0x23dd74,_0x4a3d47);}));
\ No newline at end of file
+var _0x7cb9=['http','findOne','allowedLoginAttempts','blockDuration','then','name','password','salt','role','blocked','loginAttempts','admin','user','agent','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','authenticate','disabled','blockedAt','add','minutes','clearBlockUser','getLicense','catch','find','email','MailServerOut','Smtp','Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!','service','host','port','secure','authentication','auth','merge','format','\x22%s\x22\x20<%s>','request','SendMail','error','SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!','message','stringify','status','send','login','local','Something\x20went\x20wrong,\x20please\x20try\x20again.','json','online','forgot','body','Email\x20parameter\x20is\x20missing','generate','trim','toLowerCase','This\x20email\x20is\x20not\x20registered.','The\x20user\x20is\x20disabled.\x20Please\x20contact\x20the\x20administrator.','The\x20user\x20is\x20blocked.\x20Please\x20contact\x20the\x20administrator.','resetPasswordToken','resetPasswordExpires','xCally\x20Motion\x20Password\x20Reset','You\x20are\x20receiving\x20this\x20because\x20you\x20(or\x20someone\x20else)\x20have\x20requested\x20the\x20reset\x20of\x20the\x20password\x20for\x20your\x20account.\x0a\x0a','Please\x20click\x20on\x20the\x20following\x20link,\x20or\x20paste\x20this\x20into\x20your\x20browser\x20to\x20complete\x20the\x20process:\x0a\x0a','https://','headers','/reset/','If\x20you\x20did\x20not\x20request\x20this,\x20please\x20ignore\x20this\x20email\x20and\x20your\x20password\x20will\x20remain\x20unchanged.\x0a','reset','User','token','Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.','securePassword','enforcePasswordHistory','passwordHistoryLimit','validatePasswordPattern','previousPasswords','validatePasswordHistory','use','util','passport','passport-local','Strategy','jayson/promise','lodash','randomstring','moment','../../mysqldb','../../components/auth/service','../../config/utils','client'];(function(_0x241d50,_0x23bd9d){var _0x575b13=function(_0x10a22f){while(--_0x10a22f){_0x241d50['push'](_0x241d50['shift']());}};_0x575b13(++_0x23bd9d);}(_0x7cb9,0x160));var _0x97cb=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x7cb9[_0x20a584];return _0x4b41a8;};'use strict';var util=require(_0x97cb('0x0'));var passport=require(_0x97cb('0x1'));var LocalStrategy=require(_0x97cb('0x2'))[_0x97cb('0x3')];var jayson=require(_0x97cb('0x4'));var _=require(_0x97cb('0x5'));var rs=require(_0x97cb('0x6'));var moment=require(_0x97cb('0x7'));var db=require(_0x97cb('0x8'))['db'];var authService=require(_0x97cb('0x9'));var utils=require(_0x97cb('0xa'));var client=jayson[_0x97cb('0xb')][_0x97cb('0xc')]({'port':0x232b});function localAuthenticate(_0xde1ce1,_0xf39606,_0x41cc1f,_0x5a676f){var _0x291231,_0xd35d82;return db['Setting'][_0x97cb('0xd')]({'where':{'id':0x1},'attributes':[_0x97cb('0xe'),_0x97cb('0xf')],'raw':!![]})[_0x97cb('0x10')](function(_0x34838e){_0x291231=_0x34838e;return _0xde1ce1['findOne']({'attributes':['id',_0x97cb('0x11'),_0x97cb('0x12'),_0x97cb('0x13'),_0x97cb('0x14'),'disabled',_0x97cb('0x15'),'blockedAt',_0x97cb('0x16')],'where':{'name':_0xf39606,'role':{'$or':[_0x97cb('0x17'),_0x97cb('0x18'),_0x97cb('0x19')]}}});})[_0x97cb('0x10')](function(_0x237368){if(!_0x237368||_0x237368&&_0x237368[_0x97cb('0x11')]!==_0xf39606){throw new Error(_0x97cb('0x1a'));}else{_0xd35d82=_0x237368;return _0xd35d82;}})[_0x97cb('0x10')](function(){_0xd35d82[_0x97cb('0x1b')](_0x41cc1f,function(_0x1a3682,_0x451eeb){var _0x287dbb=_0xd35d82['loginAttempts']+0x1;if(_0x1a3682){return _0x5a676f(_0x1a3682);}else if(!_0x451eeb){if(_0xd35d82[_0x97cb('0x1c')]){return _0x5a676f(null,![],{'message':_0x97cb('0x1a')});}else if(_0x291231['allowedLoginAttempts']>0x0){if(_0xd35d82['blocked']){if(_0x291231['blockDuration']>0x0){if(moment(_0xd35d82[_0x97cb('0x1d')])[_0x97cb('0x1e')](_0x291231['blockDuration'],_0x97cb('0x1f'))>moment()){return _0x5a676f(null,![],{'message':_0x97cb('0x1a')});}else{return utils[_0x97cb('0x20')](_0xd35d82,_0x287dbb,![],null)[_0x97cb('0x10')](function(){return _0x5a676f(null,![],{'message':_0x97cb('0x1a')});});}}else{return _0x5a676f(null,![],{'message':_0x97cb('0x1a')});}}else{if(_0x287dbb>=_0x291231[_0x97cb('0xe')]){return utils['clearBlockUser'](_0xd35d82,0x0,!![],moment())['then'](function(){return _0x5a676f(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});});}else{return utils[_0x97cb('0x20')](_0xd35d82,_0x287dbb,![],null)[_0x97cb('0x10')](function(){return _0x5a676f(null,![],{'message':_0x97cb('0x1a')});});}}}else{return _0x5a676f(null,![],{'message':_0x97cb('0x1a')});}}else{if(_0xd35d82[_0x97cb('0x1c')]){return _0x5a676f(null,![],{'message':_0x97cb('0x1a')});}else if(_0x291231[_0x97cb('0xe')]>0x0){if(_0xd35d82[_0x97cb('0x15')]){if(_0x291231[_0x97cb('0xf')]>0x0){if(moment(_0xd35d82[_0x97cb('0x1d')])[_0x97cb('0x1e')](_0x291231[_0x97cb('0xf')],_0x97cb('0x1f'))>moment()){return _0x5a676f(null,![],{'message':_0x97cb('0x1a')});}else{return utils[_0x97cb('0x20')](_0xd35d82,0x0,![],null)['then'](function(){return utils['getLicense'](_0xd35d82);})[_0x97cb('0x10')](function(){return _0x5a676f(null,_0xd35d82);});}}else{return _0x5a676f(null,![],{'message':_0x97cb('0x1a')});}}else{return utils[_0x97cb('0x20')](_0xd35d82,0x0,![],null)[_0x97cb('0x10')](function(){return utils[_0x97cb('0x21')](_0xd35d82);})[_0x97cb('0x10')](function(){return _0x5a676f(null,_0xd35d82);})['catch'](function(_0xb671cb){return _0x5a676f(null,![],_0xb671cb);});}}else{if(_0xd35d82['blocked']){return _0x5a676f(null,![],{'message':_0x97cb('0x1a')});}else{return utils[_0x97cb('0x21')](_0xd35d82)[_0x97cb('0x10')](function(){return _0x5a676f(null,_0xd35d82);});}}}});})[_0x97cb('0x22')](function(_0x40c7b3){return _0x5a676f(null,![],_0x40c7b3);});}function sendServiceMail(_0x3fa65b){return db['MailAccount'][_0x97cb('0x23')]({'where':{'service':!![]},'attributes':['id',_0x97cb('0x11'),_0x97cb('0x24')],'include':[{'model':db[_0x97cb('0x25')],'as':_0x97cb('0x26')}]})['then'](function(_0x206cae){if(!_0x206cae){throw new Error(_0x97cb('0x27'));}var _0x3713b0={'tls':{'rejectUnauthorized':![]}};if(_0x206cae[_0x97cb('0x26')][_0x97cb('0x28')]){_0x3713b0['service']=_0x206cae[_0x97cb('0x26')][_0x97cb('0x28')];}else{_0x3713b0['host']=_0x206cae[_0x97cb('0x26')][_0x97cb('0x29')];_0x3713b0[_0x97cb('0x2a')]=_0x206cae[_0x97cb('0x26')][_0x97cb('0x2a')];_0x3713b0[_0x97cb('0x2b')]=_0x206cae[_0x97cb('0x26')]['secure'];}if(_0x206cae[_0x97cb('0x26')][_0x97cb('0x2c')]){_0x3713b0[_0x97cb('0x2d')]={'user':_0x206cae[_0x97cb('0x26')][_0x97cb('0x18')],'pass':_0x206cae[_0x97cb('0x26')]['pass']};}var _0x4822a4={'account':_0x3713b0,'message':_[_0x97cb('0x2e')]({'from':util[_0x97cb('0x2f')](_0x97cb('0x30'),_0x206cae[_0x97cb('0x11')],_0x206cae['email']||_0x206cae[_0x97cb('0x26')]['user'])},_0x3fa65b)};return client[_0x97cb('0x31')](_0x97cb('0x32'),_0x4822a4);})[_0x97cb('0x10')](function(_0x25cdd4){if(_0x25cdd4[_0x97cb('0x33')]){throw new Error(util[_0x97cb('0x2f')](_0x97cb('0x34'),_0x25cdd4[_0x97cb('0x33')][_0x97cb('0x35')]||JSON[_0x97cb('0x36')](_0x25cdd4[_0x97cb('0x33')])));}return!![];});}function handleError(_0x451542,_0xa4b3b4,_0x17f885){return _0x451542[_0x97cb('0x37')](_0xa4b3b4||0x1f4)[_0x97cb('0x38')]({'message':_0x17f885?_0x17f885[_0x97cb('0x35')]||_0x17f885:''});}exports[_0x97cb('0x39')]=function(_0x4fae68,_0x1c421b,_0x223d35){passport[_0x97cb('0x1b')](_0x97cb('0x3a'),function(_0x119c38,_0x3a3907,_0x3cf2d2){var _0x3b1abe=_0x119c38||_0x3cf2d2;if(_0x3b1abe){return handleError(_0x1c421b,0x191,_0x3b1abe);}if(!_0x3a3907){return handleError(_0x1c421b,0x194,{'message':_0x97cb('0x3b')});}else{var _0x79b3f7={'payload':{'id':_0x3a3907['id'],'role':_0x3a3907[_0x97cb('0x14')]},'options':{'expiresIn':0x15180}};return authService['signToken'](_0x79b3f7)['then'](function(_0x343863){_0x1c421b[_0x97cb('0x3c')]({'id':_0x3a3907['id'],'token':_0x343863,'statusCall':'','isAlreadyLogged':_0x3a3907[_0x97cb('0x3d')]});});}})(_0x4fae68,_0x1c421b,_0x223d35);};exports[_0x97cb('0x3e')]=function(_0x2d3140,_0x3557a1,_0x5c3427){if(!_0x2d3140[_0x97cb('0x3f')][_0x97cb('0x24')]){return handleError(_0x3557a1,0x1f4,{'message':_0x97cb('0x40')});}var _0x42143c=rs[_0x97cb('0x41')]();_0x2d3140['body'][_0x97cb('0x24')]=_0x2d3140[_0x97cb('0x3f')]['email'][_0x97cb('0x42')]()[_0x97cb('0x43')]();var _0x459bf5;return db['Setting'][_0x97cb('0xd')]({'where':{'id':0x1},'attributes':['allowedLoginAttempts','blockDuration'],'raw':!![]})[_0x97cb('0x10')](function(_0x1083ef){_0x459bf5=_0x1083ef;return db['User']['find']({'where':{'email':_0x2d3140[_0x97cb('0x3f')][_0x97cb('0x24')]}});})[_0x97cb('0x10')](function(_0x305549){if(!_0x305549){throw new Error(_0x97cb('0x44'));}if(_0x305549['disabled']){throw new Error(_0x97cb('0x45'));}if(_0x305549[_0x97cb('0x15')]){if(moment(_0x305549[_0x97cb('0x1d')])['add'](_0x459bf5[_0x97cb('0xf')],_0x97cb('0x1f'))>moment()){throw new Error(_0x97cb('0x46'));}else{_0x305549['blocked']=![];_0x305549[_0x97cb('0x1d')]=null;}}_0x305549[_0x97cb('0x47')]=_0x42143c;_0x305549[_0x97cb('0x48')]=Date['now']()+0x36ee80;return _0x305549['save']();})['then'](function(){return sendServiceMail({'to':_0x2d3140['body'][_0x97cb('0x24')],'subject':_0x97cb('0x49'),'text':_0x97cb('0x4a')+_0x97cb('0x4b')+_0x97cb('0x4c')+_0x2d3140[_0x97cb('0x4d')][_0x97cb('0x29')]+_0x97cb('0x4e')+_0x42143c+'\x0a\x0a'+_0x97cb('0x4f')});})[_0x97cb('0x10')](function(){_0x3557a1[_0x97cb('0x37')](0xc8)[_0x97cb('0x38')]({'message':'Reset\x20Email\x20sent!'});})[_0x97cb('0x22')](function(_0x278b4e){return handleError(_0x3557a1,0x1f4,_0x278b4e);});};exports[_0x97cb('0x50')]=function(_0x2db06d,_0x32705f,_0x3379fb){return db[_0x97cb('0x51')][_0x97cb('0x23')]({'where':{'resetPasswordToken':_0x2db06d['params'][_0x97cb('0x52')],'resetPasswordExpires':{'$gt':Date['now']()}}})[_0x97cb('0x10')](function(_0x4e1802){if(!_0x4e1802){throw new Error(_0x97cb('0x53'));}return db['Setting'][_0x97cb('0xd')]({'attributes':['id',_0x97cb('0x54'),_0x97cb('0x55'),_0x97cb('0x56')]})['then'](function(_0x31be69){if(_0x31be69[_0x97cb('0x54')])authService[_0x97cb('0x57')](_0x2db06d[_0x97cb('0x3f')]['password']);if(!_0x31be69[_0x97cb('0x55')]||!_0x4e1802[_0x97cb('0x58')])return _0x4e1802;authService[_0x97cb('0x59')](_0x2db06d[_0x97cb('0x3f')][_0x97cb('0x12')],_0x4e1802[_0x97cb('0x58')],_0x31be69[_0x97cb('0x56')]);return _0x4e1802;})[_0x97cb('0x10')](function(){_0x4e1802['password']=_0x2db06d['body'][_0x97cb('0x12')];_0x4e1802[_0x97cb('0x47')]=null;_0x4e1802['resetPasswordExpires']=null;return _0x4e1802['save']();});})[_0x97cb('0x10')](function(){_0x32705f[_0x97cb('0x37')](0xc8)[_0x97cb('0x38')]({'message':'Password\x20reset!'});})[_0x97cb('0x22')](function(_0x38c597){return handleError(_0x32705f,0x1f4,_0x38c597);});};passport[_0x97cb('0x5a')](new LocalStrategy({'usernameField':_0x97cb('0x11'),'passwordField':_0x97cb('0x12')},function(_0x319f50,_0x319d09,_0x30cae9){return localAuthenticate(db[_0x97cb('0x51')],_0x319f50,_0x319d09,_0x30cae9);}));
\ No newline at end of file
index ab0e9ec..a455153 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb8b=['./authLocal.controller','post','login','/forgot','forgot','/reset/:token','reset','exports','Router'];(function(_0x756238,_0x54c84d){var _0x2a279c=function(_0x1e1588){while(--_0x1e1588){_0x756238['push'](_0x756238['shift']());}};_0x2a279c(++_0x54c84d);}(_0xbb8b,0xce));var _0xbbb8=function(_0x19bc78,_0x5ddfcd){_0x19bc78=_0x19bc78-0x0;var _0x57e35e=_0xbb8b[_0x19bc78];return _0x57e35e;};'use strict';var express=require('express');var router=express[_0xbbb8('0x0')]();var controller=require(_0xbbb8('0x1'));router[_0xbbb8('0x2')]('/',controller[_0xbbb8('0x3')]);router[_0xbbb8('0x2')](_0xbbb8('0x4'),controller[_0xbbb8('0x5')]);router[_0xbbb8('0x2')](_0xbbb8('0x6'),controller[_0xbbb8('0x7')]);module[_0xbbb8('0x8')]=router;
\ No newline at end of file
+var _0x5da2=['reset','exports','./authLocal.controller','post','/forgot','/reset/:token'];(function(_0x4d6c9d,_0x20da82){var _0x4e173b=function(_0xb09719){while(--_0xb09719){_0x4d6c9d['push'](_0x4d6c9d['shift']());}};_0x4e173b(++_0x20da82);}(_0x5da2,0x11c));var _0x25da=function(_0x5eb22e,_0x27cbac){_0x5eb22e=_0x5eb22e-0x0;var _0x27fed5=_0x5da2[_0x5eb22e];return _0x27fed5;};'use strict';var express=require('express');var router=express['Router']();var controller=require(_0x25da('0x0'));router[_0x25da('0x1')]('/',controller['login']);router[_0x25da('0x1')](_0x25da('0x2'),controller['forgot']);router[_0x25da('0x1')](_0x25da('0x3'),controller[_0x25da('0x4')]);module[_0x25da('0x5')]=router;
\ No newline at end of file
index c47801a..71ecc1a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a97=['sequelize','exports','STRING','BOOLEAN','INTEGER'];(function(_0xf65193,_0x30ac63){var _0x2822f9=function(_0x16427b){while(--_0x16427b){_0xf65193['push'](_0xf65193['shift']());}};_0x2822f9(++_0x30ac63);}(_0x2a97,0x136));var _0x72a9=function(_0x19c7bb,_0x34babc){_0x19c7bb=_0x19c7bb-0x0;var _0x5fb5bd=_0x2a97[_0x19c7bb];return _0x5fb5bd;};'use strict';var Sequelize=require(_0x72a9('0x0'));module[_0x72a9('0x1')]={'name':{'type':Sequelize[_0x72a9('0x2')],'allowNull':![]},'channel':{'type':Sequelize[_0x72a9('0x2')]},'description':{'type':Sequelize[_0x72a9('0x2')]},'status':{'type':Sequelize[_0x72a9('0x3')],'defaultValue':![]},'timeout':{'type':Sequelize[_0x72a9('0x4')],'defaultValue':0xa}};
\ No newline at end of file
+var _0x18d6=['STRING','sequelize'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x18d6,0x19b));var _0x618d=function(_0x187cda,_0x2e27e8){_0x187cda=_0x187cda-0x0;var _0x1a066d=_0x18d6[_0x187cda];return _0x1a066d;};'use strict';var Sequelize=require(_0x618d('0x0'));module['exports']={'name':{'type':Sequelize[_0x618d('0x1')],'allowNull':![]},'channel':{'type':Sequelize[_0x618d('0x1')]},'description':{'type':Sequelize[_0x618d('0x1')]},'status':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'timeout':{'type':Sequelize['INTEGER'],'defaultValue':0xa}};
\ No newline at end of file
index ee03321..fa0e84a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe997=['params','includeAll','find','create','body','addConditions','Condition','ids','omit','getConditions','options','Action','addActions','findOne','getActions','eml-format','fast-json-patch','request-promise','moment','mustache','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','end','json','offset','undefined','limit','count','status','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','rawAttributes','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filters','map','type','filter','merge','include','Automation','findAll','catch'];(function(_0x18e8c8,_0x5b6b81){var _0x1fa76e=function(_0x369790){while(--_0x369790){_0x18e8c8['push'](_0x18e8c8['shift']());}};_0x1fa76e(++_0x5b6b81);}(_0xe997,0xb1));var _0x7e99=function(_0x9791f9,_0x3b4236){_0x9791f9=_0x9791f9-0x0;var _0x5519b8=_0xe997[_0x9791f9];return _0x5519b8;};'use strict';var emlformat=require(_0x7e99('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x7e99('0x1'));var rp=require(_0x7e99('0x2'));var moment=require(_0x7e99('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x7e99('0x4'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x7e99('0x5'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x7e99('0x6'));var _=require(_0x7e99('0x7'));var squel=require(_0x7e99('0x8'));var crypto=require(_0x7e99('0x9'));var jsforce=require(_0x7e99('0xa'));var deskjs=require(_0x7e99('0xb'));var toCsv=require('to-csv');var querystring=require(_0x7e99('0xc'));var Papa=require('papaparse');var Redis=require(_0x7e99('0xd'));var authService=require(_0x7e99('0xe'));var qs=require(_0x7e99('0xf'));var as=require(_0x7e99('0x10'));var hardwareService=require(_0x7e99('0x11'));var logger=require(_0x7e99('0x12'))(_0x7e99('0x13'));var utils=require(_0x7e99('0x14'));var config=require(_0x7e99('0x15'));var licenseUtil=require(_0x7e99('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x12385c,_0x2970dd){_0x2970dd=_0x2970dd||0xcc;return function(_0x5c1d29){if(_0x5c1d29){return _0x12385c[_0x7e99('0x17')](_0x2970dd);}return _0x12385c['status'](_0x2970dd)[_0x7e99('0x18')]();};}function respondWithResult(_0x267856,_0xa07a89){_0xa07a89=_0xa07a89||0xc8;return function(_0x5957d2){if(_0x5957d2){return _0x267856['status'](_0xa07a89)[_0x7e99('0x19')](_0x5957d2);}};}function respondWithFilteredResult(_0x4cdce0,_0x54cfe1){return function(_0x15029a){if(_0x15029a){var _0x503519=typeof _0x54cfe1[_0x7e99('0x1a')]===_0x7e99('0x1b')&&typeof _0x54cfe1[_0x7e99('0x1c')]===_0x7e99('0x1b');var _0x41432e=_0x15029a[_0x7e99('0x1d')];var _0x46d67a=_0x503519?0x0:_0x54cfe1[_0x7e99('0x1a')];var _0x2993fc=_0x503519?_0x15029a[_0x7e99('0x1d')]:_0x54cfe1[_0x7e99('0x1a')]+_0x54cfe1[_0x7e99('0x1c')];var _0x284f3a;if(_0x2993fc>=_0x41432e){_0x2993fc=_0x41432e;_0x284f3a=0xc8;}else{_0x284f3a=0xce;}_0x4cdce0[_0x7e99('0x1e')](_0x284f3a);return _0x4cdce0[_0x7e99('0x1f')](_0x7e99('0x20'),_0x46d67a+'-'+_0x2993fc+'/'+_0x41432e)[_0x7e99('0x19')](_0x15029a);}return null;};}function patchUpdates(_0x11e964){return function(_0x3c5f02){try{jsonpatch[_0x7e99('0x21')](_0x3c5f02,_0x11e964,!![]);}catch(_0x221832){return BPromise[_0x7e99('0x22')](_0x221832);}return _0x3c5f02[_0x7e99('0x23')]();};}function saveUpdates(_0x2ac565,_0x298f56){return function(_0x51e400){if(_0x51e400){return _0x51e400[_0x7e99('0x24')](_0x2ac565)[_0x7e99('0x25')](function(_0x3cb72b){return _0x3cb72b;});}return null;};}function removeEntity(_0x590041,_0x23e1a8){return function(_0x3e787a){if(_0x3e787a){return _0x3e787a[_0x7e99('0x26')]()['then'](function(){_0x590041[_0x7e99('0x1e')](0xcc)[_0x7e99('0x18')]();});}};}function handleEntityNotFound(_0x322b3c,_0x2ab068){return function(_0x4761d7){if(!_0x4761d7){_0x322b3c[_0x7e99('0x17')](0x194);}return _0x4761d7;};}function handleError(_0x3513a7,_0x689f9e){_0x689f9e=_0x689f9e||0x1f4;return function(_0x35fa34){logger[_0x7e99('0x27')](_0x35fa34[_0x7e99('0x28')]);if(_0x35fa34[_0x7e99('0x29')]){delete _0x35fa34[_0x7e99('0x29')];}_0x3513a7[_0x7e99('0x1e')](_0x689f9e)[_0x7e99('0x2a')](_0x35fa34);};}exports['index']=function(_0x322a68,_0x11e76c){var _0x3e470a={},_0x278558={},_0x4f7a1c={'count':0x0,'rows':[]};var _0x45448a=_['map'](db['Automation'][_0x7e99('0x2b')],function(_0xba193a){return{'name':_0xba193a['fieldName'],'type':_0xba193a['type'][_0x7e99('0x2c')]};});_0x278558[_0x7e99('0x2d')]=_['map'](_0x45448a,_0x7e99('0x29'));_0x278558[_0x7e99('0x2e')]=_[_0x7e99('0x2f')](_0x322a68[_0x7e99('0x2e')]);_0x278558['filters']=_[_0x7e99('0x30')](_0x278558[_0x7e99('0x2d')],_0x278558['query']);_0x3e470a[_0x7e99('0x31')]=_[_0x7e99('0x30')](_0x278558[_0x7e99('0x2d')],qs[_0x7e99('0x32')](_0x322a68['query'][_0x7e99('0x32')]));_0x3e470a[_0x7e99('0x31')]=_0x3e470a['attributes'][_0x7e99('0x33')]?_0x3e470a[_0x7e99('0x31')]:_0x278558['model'];if(!_0x322a68[_0x7e99('0x2e')][_0x7e99('0x34')]('nolimit')){_0x3e470a['limit']=qs['limit'](_0x322a68['query'][_0x7e99('0x1c')]);_0x3e470a['offset']=qs[_0x7e99('0x1a')](_0x322a68['query'][_0x7e99('0x1a')]);}_0x3e470a[_0x7e99('0x35')]=qs[_0x7e99('0x36')](_0x322a68[_0x7e99('0x2e')][_0x7e99('0x36')]);_0x3e470a[_0x7e99('0x37')]=qs['filters'](_[_0x7e99('0x38')](_0x322a68[_0x7e99('0x2e')],_0x278558[_0x7e99('0x39')]),_0x45448a);if(_0x322a68[_0x7e99('0x2e')]['filter']){_0x3e470a[_0x7e99('0x37')]=_['merge'](_0x3e470a[_0x7e99('0x37')],{'$or':_[_0x7e99('0x3a')](_0x45448a,function(_0x12c7d6){if(_0x12c7d6[_0x7e99('0x3b')]!=='VIRTUAL'){var _0x34f5ac={};_0x34f5ac[_0x12c7d6[_0x7e99('0x29')]]={'$like':'%'+_0x322a68[_0x7e99('0x2e')][_0x7e99('0x3c')]+'%'};return _0x34f5ac;}})});}_0x3e470a=_[_0x7e99('0x3d')]({},_0x3e470a,_0x322a68['options']);var _0x23c430={'where':_0x3e470a[_0x7e99('0x37')]};return db['Automation'][_0x7e99('0x1d')](_0x23c430)[_0x7e99('0x25')](function(_0x5dc661){_0x4f7a1c[_0x7e99('0x1d')]=_0x5dc661;if(_0x322a68[_0x7e99('0x2e')]['includeAll']){_0x3e470a[_0x7e99('0x3e')]=[{'all':!![]}];}return db[_0x7e99('0x3f')][_0x7e99('0x40')](_0x3e470a);})['then'](function(_0x28c616){_0x4f7a1c['rows']=_0x28c616;return _0x4f7a1c;})['then'](respondWithFilteredResult(_0x11e76c,_0x3e470a))[_0x7e99('0x41')](handleError(_0x11e76c,null));};exports['show']=function(_0x1c12e3,_0x2c9c93){var _0x46f159={'raw':![],'where':{'id':_0x1c12e3[_0x7e99('0x42')]['id']}},_0x5c73c8={};_0x5c73c8[_0x7e99('0x2d')]=_['keys'](db['Automation'][_0x7e99('0x2b')]);_0x5c73c8['query']=_[_0x7e99('0x2f')](_0x1c12e3[_0x7e99('0x2e')]);_0x5c73c8[_0x7e99('0x39')]=_[_0x7e99('0x30')](_0x5c73c8[_0x7e99('0x2d')],_0x5c73c8['query']);_0x46f159['attributes']=_['intersection'](_0x5c73c8[_0x7e99('0x2d')],qs[_0x7e99('0x32')](_0x1c12e3['query'][_0x7e99('0x32')]));_0x46f159['attributes']=_0x46f159[_0x7e99('0x31')][_0x7e99('0x33')]?_0x46f159['attributes']:_0x5c73c8[_0x7e99('0x2d')];if(_0x1c12e3[_0x7e99('0x2e')][_0x7e99('0x43')]){_0x46f159[_0x7e99('0x3e')]=[{'all':!![]}];}_0x46f159=_['merge']({},_0x46f159,_0x1c12e3['options']);return db['Automation'][_0x7e99('0x44')](_0x46f159)[_0x7e99('0x25')](handleEntityNotFound(_0x2c9c93,null))[_0x7e99('0x25')](respondWithResult(_0x2c9c93,null))[_0x7e99('0x41')](handleError(_0x2c9c93,null));};exports['create']=function(_0x1c55c0,_0x4abbb4){return db['Automation'][_0x7e99('0x45')](_0x1c55c0[_0x7e99('0x46')],{})['then'](respondWithResult(_0x4abbb4,0xc9))[_0x7e99('0x41')](handleError(_0x4abbb4,null));};exports['update']=function(_0x454efd,_0x29915e){if(_0x454efd[_0x7e99('0x46')]['id']){delete _0x454efd['body']['id'];}return db[_0x7e99('0x3f')][_0x7e99('0x44')]({'where':{'id':_0x454efd[_0x7e99('0x42')]['id']}})[_0x7e99('0x25')](handleEntityNotFound(_0x29915e,null))['then'](saveUpdates(_0x454efd[_0x7e99('0x46')],null))['then'](respondWithResult(_0x29915e,null))[_0x7e99('0x41')](handleError(_0x29915e,null));};exports[_0x7e99('0x26')]=function(_0x101e3e,_0x2b2ff9){return db[_0x7e99('0x3f')][_0x7e99('0x44')]({'where':{'id':_0x101e3e[_0x7e99('0x42')]['id']}})[_0x7e99('0x25')](handleEntityNotFound(_0x2b2ff9,null))[_0x7e99('0x25')](removeEntity(_0x2b2ff9,null))['catch'](handleError(_0x2b2ff9,null));};exports[_0x7e99('0x47')]=function(_0x225f85,_0x489513,_0x13675e){return db[_0x7e99('0x48')][_0x7e99('0x44')]({'where':{'id':_0x225f85[_0x7e99('0x42')]['id']}})[_0x7e99('0x25')](handleEntityNotFound(_0x489513,null))['then'](function(_0xcfb57f){if(_0xcfb57f){return _0xcfb57f[_0x7e99('0x47')](_0x225f85['body'][_0x7e99('0x49')],_[_0x7e99('0x4a')](_0x225f85[_0x7e99('0x46')],[_0x7e99('0x49'),'id'])||{});}})['then'](respondWithResult(_0x489513,null))[_0x7e99('0x41')](handleError(_0x489513,null));};exports[_0x7e99('0x4b')]=function(_0x1d43e4,_0x15b625,_0x22d86c){var _0x1df983={};var _0x4c32ff={};var _0x52a2e5;var _0x3ea5d4;return db[_0x7e99('0x3f')]['findOne']({'where':{'id':_0x1d43e4[_0x7e99('0x42')]['id']}})[_0x7e99('0x25')](handleEntityNotFound(_0x15b625,null))[_0x7e99('0x25')](function(_0xa18908){if(_0xa18908){_0x52a2e5=_0xa18908;_0x4c32ff[_0x7e99('0x2d')]=_[_0x7e99('0x2f')](db[_0x7e99('0x48')][_0x7e99('0x2b')]);_0x4c32ff[_0x7e99('0x2e')]=_[_0x7e99('0x2f')](_0x1d43e4[_0x7e99('0x2e')]);_0x4c32ff[_0x7e99('0x39')]=_[_0x7e99('0x30')](_0x4c32ff['model'],_0x4c32ff[_0x7e99('0x2e')]);_0x1df983[_0x7e99('0x31')]=_['intersection'](_0x4c32ff[_0x7e99('0x2d')],qs[_0x7e99('0x32')](_0x1d43e4[_0x7e99('0x2e')]['fields']));_0x1df983[_0x7e99('0x31')]=_0x1df983['attributes']['length']?_0x1df983[_0x7e99('0x31')]:_0x4c32ff['model'];_0x1df983[_0x7e99('0x35')]=qs[_0x7e99('0x36')](_0x1d43e4['query']['sort']);_0x1df983[_0x7e99('0x37')]=qs[_0x7e99('0x39')](_[_0x7e99('0x38')](_0x1d43e4[_0x7e99('0x2e')],_0x4c32ff[_0x7e99('0x39')]));if(_0x1d43e4[_0x7e99('0x2e')]['filter']){_0x1df983[_0x7e99('0x37')]=_[_0x7e99('0x3d')](_0x1df983[_0x7e99('0x37')],{'$or':_['map'](_0x1df983[_0x7e99('0x31')],function(_0x2954c3){var _0x143b33={};_0x143b33[_0x2954c3]={'$like':'%'+_0x1d43e4[_0x7e99('0x2e')]['filter']+'%'};return _0x143b33;})});}_0x1df983=_['merge']({},_0x1df983,_0x1d43e4[_0x7e99('0x4c')]);return _0x52a2e5[_0x7e99('0x4b')](_0x1df983);}})[_0x7e99('0x25')](function(_0x6ee69){if(_0x6ee69){_0x3ea5d4=_0x6ee69[_0x7e99('0x33')];if(!_0x1d43e4['query'][_0x7e99('0x34')]('nolimit')){_0x1df983['limit']=qs[_0x7e99('0x1c')](_0x1d43e4[_0x7e99('0x2e')][_0x7e99('0x1c')]);_0x1df983[_0x7e99('0x1a')]=qs[_0x7e99('0x1a')](_0x1d43e4[_0x7e99('0x2e')][_0x7e99('0x1a')]);}return _0x52a2e5[_0x7e99('0x4b')](_0x1df983);}})['then'](function(_0x4400dc){if(_0x4400dc){return _0x4400dc?{'count':_0x3ea5d4,'rows':_0x4400dc}:null;}})[_0x7e99('0x25')](respondWithResult(_0x15b625,null))[_0x7e99('0x41')](handleError(_0x15b625,null));};exports['addActions']=function(_0x50b2c5,_0x568641,_0x31fc58){return db[_0x7e99('0x4d')]['find']({'where':{'id':_0x50b2c5[_0x7e99('0x42')]['id']}})[_0x7e99('0x25')](handleEntityNotFound(_0x568641,null))[_0x7e99('0x25')](function(_0x4faf65){if(_0x4faf65){return _0x4faf65[_0x7e99('0x4e')](_0x50b2c5[_0x7e99('0x46')]['ids'],_[_0x7e99('0x4a')](_0x50b2c5[_0x7e99('0x46')],[_0x7e99('0x49'),'id'])||{});}})['then'](respondWithResult(_0x568641,null))[_0x7e99('0x41')](handleError(_0x568641,null));};exports['getActions']=function(_0x3a6d58,_0x30afd8,_0x420360){var _0x39fdf6={};var _0x56f908={};var _0x127fa8;var _0x5196df;return db[_0x7e99('0x3f')][_0x7e99('0x4f')]({'where':{'id':_0x3a6d58[_0x7e99('0x42')]['id']}})[_0x7e99('0x25')](handleEntityNotFound(_0x30afd8,null))[_0x7e99('0x25')](function(_0xb372d9){if(_0xb372d9){_0x127fa8=_0xb372d9;_0x56f908[_0x7e99('0x2d')]=_[_0x7e99('0x2f')](db[_0x7e99('0x4d')][_0x7e99('0x2b')]);_0x56f908['query']=_[_0x7e99('0x2f')](_0x3a6d58[_0x7e99('0x2e')]);_0x56f908[_0x7e99('0x39')]=_[_0x7e99('0x30')](_0x56f908[_0x7e99('0x2d')],_0x56f908[_0x7e99('0x2e')]);_0x39fdf6[_0x7e99('0x31')]=_['intersection'](_0x56f908['model'],qs[_0x7e99('0x32')](_0x3a6d58[_0x7e99('0x2e')][_0x7e99('0x32')]));_0x39fdf6[_0x7e99('0x31')]=_0x39fdf6['attributes']['length']?_0x39fdf6['attributes']:_0x56f908[_0x7e99('0x2d')];_0x39fdf6[_0x7e99('0x35')]=qs[_0x7e99('0x36')](_0x3a6d58[_0x7e99('0x2e')][_0x7e99('0x36')]);_0x39fdf6[_0x7e99('0x37')]=qs[_0x7e99('0x39')](_[_0x7e99('0x38')](_0x3a6d58[_0x7e99('0x2e')],_0x56f908['filters']));if(_0x3a6d58[_0x7e99('0x2e')][_0x7e99('0x3c')]){_0x39fdf6[_0x7e99('0x37')]=_[_0x7e99('0x3d')](_0x39fdf6['where'],{'$or':_[_0x7e99('0x3a')](_0x39fdf6[_0x7e99('0x31')],function(_0x4875a3){var _0x2ca0a6={};_0x2ca0a6[_0x4875a3]={'$like':'%'+_0x3a6d58['query'][_0x7e99('0x3c')]+'%'};return _0x2ca0a6;})});}_0x39fdf6=_[_0x7e99('0x3d')]({},_0x39fdf6,_0x3a6d58['options']);return _0x127fa8[_0x7e99('0x50')](_0x39fdf6);}})['then'](function(_0x1316c6){if(_0x1316c6){_0x5196df=_0x1316c6[_0x7e99('0x33')];if(!_0x3a6d58['query'][_0x7e99('0x34')]('nolimit')){_0x39fdf6[_0x7e99('0x1c')]=qs[_0x7e99('0x1c')](_0x3a6d58[_0x7e99('0x2e')]['limit']);_0x39fdf6[_0x7e99('0x1a')]=qs[_0x7e99('0x1a')](_0x3a6d58[_0x7e99('0x2e')][_0x7e99('0x1a')]);}return _0x127fa8[_0x7e99('0x50')](_0x39fdf6);}})[_0x7e99('0x25')](function(_0xb389eb){if(_0xb389eb){return _0xb389eb?{'count':_0x5196df,'rows':_0xb389eb}:null;}})[_0x7e99('0x25')](respondWithResult(_0x30afd8,null))[_0x7e99('0x41')](handleError(_0x30afd8,null));};
\ No newline at end of file
+var _0x293e=['json','offset','undefined','limit','count','set','apply','reject','save','then','destroy','stack','name','send','index','map','Automation','rawAttributes','type','keys','query','filters','intersection','model','attributes','length','hasOwnProperty','nolimit','sort','where','pick','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','fields','find','create','update','body','addConditions','ids','omit','Condition','order','filter','getConditions','addActions','Action','getActions','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','sox','to-csv','ejs','fs-extra','lodash','squel','desk.js','papaparse','../../components/parsers/qs','../../config/logger','../../mysqldb','sendStatus','status','end'];(function(_0x484e7d,_0x11359f){var _0x725108=function(_0x3e64ca){while(--_0x3e64ca){_0x484e7d['push'](_0x484e7d['shift']());}};_0x725108(++_0x11359f);}(_0x293e,0x84));var _0xe293=function(_0x4004c1,_0xbf07f8){_0x4004c1=_0x4004c1-0x0;var _0x448a62=_0x293e[_0x4004c1];return _0x448a62;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe293('0x0'));var zipdir=require(_0xe293('0x1'));var jsonpatch=require(_0xe293('0x2'));var rp=require(_0xe293('0x3'));var moment=require(_0xe293('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xe293('0x5'));var path=require('path');var sox=require(_0xe293('0x6'));var csv=require(_0xe293('0x7'));var ejs=require(_0xe293('0x8'));var fs=require('fs');var fs_extra=require(_0xe293('0x9'));var _=require(_0xe293('0xa'));var squel=require(_0xe293('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xe293('0xc'));var toCsv=require(_0xe293('0x7'));var querystring=require('querystring');var Papa=require(_0xe293('0xd'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xe293('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xe293('0xf'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xe293('0x10'))['db'];function respondWithStatusCode(_0x126ceb,_0x5476be){_0x5476be=_0x5476be||0xcc;return function(_0x1ba14d){if(_0x1ba14d){return _0x126ceb[_0xe293('0x11')](_0x5476be);}return _0x126ceb[_0xe293('0x12')](_0x5476be)[_0xe293('0x13')]();};}function respondWithResult(_0x47f0ab,_0x1a2a82){_0x1a2a82=_0x1a2a82||0xc8;return function(_0x517a25){if(_0x517a25){return _0x47f0ab[_0xe293('0x12')](_0x1a2a82)[_0xe293('0x14')](_0x517a25);}};}function respondWithFilteredResult(_0x13c820,_0x1e5d79){return function(_0x4636e3){if(_0x4636e3){var _0x2d61e0=typeof _0x1e5d79[_0xe293('0x15')]===_0xe293('0x16')&&typeof _0x1e5d79[_0xe293('0x17')]===_0xe293('0x16');var _0x415dde=_0x4636e3[_0xe293('0x18')];var _0x4dcc8a=_0x2d61e0?0x0:_0x1e5d79[_0xe293('0x15')];var _0xe939d7=_0x2d61e0?_0x4636e3[_0xe293('0x18')]:_0x1e5d79[_0xe293('0x15')]+_0x1e5d79[_0xe293('0x17')];var _0x5b2cf0;if(_0xe939d7>=_0x415dde){_0xe939d7=_0x415dde;_0x5b2cf0=0xc8;}else{_0x5b2cf0=0xce;}_0x13c820[_0xe293('0x12')](_0x5b2cf0);return _0x13c820[_0xe293('0x19')]('Content-Range',_0x4dcc8a+'-'+_0xe939d7+'/'+_0x415dde)[_0xe293('0x14')](_0x4636e3);}return null;};}function patchUpdates(_0x35ab20){return function(_0x14ea7c){try{jsonpatch[_0xe293('0x1a')](_0x14ea7c,_0x35ab20,!![]);}catch(_0x24ce67){return BPromise[_0xe293('0x1b')](_0x24ce67);}return _0x14ea7c[_0xe293('0x1c')]();};}function saveUpdates(_0x11032a,_0x5d46de){return function(_0x213932){if(_0x213932){return _0x213932['update'](_0x11032a)[_0xe293('0x1d')](function(_0x390b70){return _0x390b70;});}return null;};}function removeEntity(_0x472680,_0x320482){return function(_0x1a31b4){if(_0x1a31b4){return _0x1a31b4[_0xe293('0x1e')]()[_0xe293('0x1d')](function(){_0x472680[_0xe293('0x12')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1b9792,_0x18da24){return function(_0x3532e2){if(!_0x3532e2){_0x1b9792[_0xe293('0x11')](0x194);}return _0x3532e2;};}function handleError(_0x8b5c4c,_0x2a8e82){_0x2a8e82=_0x2a8e82||0x1f4;return function(_0x598c50){logger['error'](_0x598c50[_0xe293('0x1f')]);if(_0x598c50[_0xe293('0x20')]){delete _0x598c50[_0xe293('0x20')];}_0x8b5c4c[_0xe293('0x12')](_0x2a8e82)[_0xe293('0x21')](_0x598c50);};}exports[_0xe293('0x22')]=function(_0x4ab041,_0x18fd9f){var _0x81b84e={},_0x581788={},_0x4f01a3={'count':0x0,'rows':[]};var _0x2b394a=_[_0xe293('0x23')](db[_0xe293('0x24')][_0xe293('0x25')],function(_0x4857e3){return{'name':_0x4857e3['fieldName'],'type':_0x4857e3[_0xe293('0x26')]['key']};});_0x581788['model']=_[_0xe293('0x23')](_0x2b394a,_0xe293('0x20'));_0x581788['query']=_[_0xe293('0x27')](_0x4ab041[_0xe293('0x28')]);_0x581788[_0xe293('0x29')]=_[_0xe293('0x2a')](_0x581788[_0xe293('0x2b')],_0x581788[_0xe293('0x28')]);_0x81b84e[_0xe293('0x2c')]=_['intersection'](_0x581788[_0xe293('0x2b')],qs['fields'](_0x4ab041[_0xe293('0x28')]['fields']));_0x81b84e[_0xe293('0x2c')]=_0x81b84e[_0xe293('0x2c')][_0xe293('0x2d')]?_0x81b84e[_0xe293('0x2c')]:_0x581788[_0xe293('0x2b')];if(!_0x4ab041[_0xe293('0x28')][_0xe293('0x2e')](_0xe293('0x2f'))){_0x81b84e[_0xe293('0x17')]=qs[_0xe293('0x17')](_0x4ab041['query'][_0xe293('0x17')]);_0x81b84e[_0xe293('0x15')]=qs[_0xe293('0x15')](_0x4ab041['query']['offset']);}_0x81b84e['order']=qs['sort'](_0x4ab041['query'][_0xe293('0x30')]);_0x81b84e[_0xe293('0x31')]=qs[_0xe293('0x29')](_[_0xe293('0x32')](_0x4ab041[_0xe293('0x28')],_0x581788[_0xe293('0x29')]),_0x2b394a);if(_0x4ab041[_0xe293('0x28')]['filter']){_0x81b84e['where']=_[_0xe293('0x33')](_0x81b84e[_0xe293('0x31')],{'$or':_[_0xe293('0x23')](_0x2b394a,function(_0x2bb33f){if(_0x2bb33f[_0xe293('0x26')]!==_0xe293('0x34')){var _0xf2d8e6={};_0xf2d8e6[_0x2bb33f[_0xe293('0x20')]]={'$like':'%'+_0x4ab041[_0xe293('0x28')]['filter']+'%'};return _0xf2d8e6;}})});}_0x81b84e=_[_0xe293('0x33')]({},_0x81b84e,_0x4ab041[_0xe293('0x35')]);var _0x5ce752={'where':_0x81b84e[_0xe293('0x31')]};return db[_0xe293('0x24')][_0xe293('0x18')](_0x5ce752)['then'](function(_0x2fe005){_0x4f01a3[_0xe293('0x18')]=_0x2fe005;if(_0x4ab041[_0xe293('0x28')][_0xe293('0x36')]){_0x81b84e[_0xe293('0x37')]=[{'all':!![]}];}return db[_0xe293('0x24')][_0xe293('0x38')](_0x81b84e);})['then'](function(_0x341cf4){_0x4f01a3[_0xe293('0x39')]=_0x341cf4;return _0x4f01a3;})[_0xe293('0x1d')](respondWithFilteredResult(_0x18fd9f,_0x81b84e))[_0xe293('0x3a')](handleError(_0x18fd9f,null));};exports[_0xe293('0x3b')]=function(_0x102176,_0x1cfd7a){var _0x346861={'raw':![],'where':{'id':_0x102176[_0xe293('0x3c')]['id']}},_0x21f0f2={};_0x21f0f2[_0xe293('0x2b')]=_[_0xe293('0x27')](db[_0xe293('0x24')][_0xe293('0x25')]);_0x21f0f2[_0xe293('0x28')]=_['keys'](_0x102176[_0xe293('0x28')]);_0x21f0f2[_0xe293('0x29')]=_[_0xe293('0x2a')](_0x21f0f2[_0xe293('0x2b')],_0x21f0f2['query']);_0x346861[_0xe293('0x2c')]=_['intersection'](_0x21f0f2[_0xe293('0x2b')],qs[_0xe293('0x3d')](_0x102176[_0xe293('0x28')][_0xe293('0x3d')]));_0x346861[_0xe293('0x2c')]=_0x346861[_0xe293('0x2c')][_0xe293('0x2d')]?_0x346861[_0xe293('0x2c')]:_0x21f0f2[_0xe293('0x2b')];if(_0x102176['query'][_0xe293('0x36')]){_0x346861['include']=[{'all':!![]}];}_0x346861=_[_0xe293('0x33')]({},_0x346861,_0x102176[_0xe293('0x35')]);return db[_0xe293('0x24')][_0xe293('0x3e')](_0x346861)[_0xe293('0x1d')](handleEntityNotFound(_0x1cfd7a,null))[_0xe293('0x1d')](respondWithResult(_0x1cfd7a,null))[_0xe293('0x3a')](handleError(_0x1cfd7a,null));};exports[_0xe293('0x3f')]=function(_0x217b0e,_0x41802e){return db[_0xe293('0x24')][_0xe293('0x3f')](_0x217b0e['body'],{})[_0xe293('0x1d')](respondWithResult(_0x41802e,0xc9))[_0xe293('0x3a')](handleError(_0x41802e,null));};exports[_0xe293('0x40')]=function(_0x199fb7,_0x26b17c){if(_0x199fb7[_0xe293('0x41')]['id']){delete _0x199fb7[_0xe293('0x41')]['id'];}return db[_0xe293('0x24')][_0xe293('0x3e')]({'where':{'id':_0x199fb7[_0xe293('0x3c')]['id']}})['then'](handleEntityNotFound(_0x26b17c,null))[_0xe293('0x1d')](saveUpdates(_0x199fb7[_0xe293('0x41')],null))[_0xe293('0x1d')](respondWithResult(_0x26b17c,null))[_0xe293('0x3a')](handleError(_0x26b17c,null));};exports[_0xe293('0x1e')]=function(_0xf0ba3d,_0x4c6d4b){return db[_0xe293('0x24')]['find']({'where':{'id':_0xf0ba3d[_0xe293('0x3c')]['id']}})[_0xe293('0x1d')](handleEntityNotFound(_0x4c6d4b,null))[_0xe293('0x1d')](removeEntity(_0x4c6d4b,null))[_0xe293('0x3a')](handleError(_0x4c6d4b,null));};exports['addConditions']=function(_0x3ac223,_0x1d1319,_0x2b574c){return db['Condition'][_0xe293('0x3e')]({'where':{'id':_0x3ac223[_0xe293('0x3c')]['id']}})[_0xe293('0x1d')](handleEntityNotFound(_0x1d1319,null))[_0xe293('0x1d')](function(_0x1de3e4){if(_0x1de3e4){return _0x1de3e4[_0xe293('0x42')](_0x3ac223[_0xe293('0x41')][_0xe293('0x43')],_[_0xe293('0x44')](_0x3ac223[_0xe293('0x41')],['ids','id'])||{});}})[_0xe293('0x1d')](respondWithResult(_0x1d1319,null))[_0xe293('0x3a')](handleError(_0x1d1319,null));};exports['getConditions']=function(_0x5b91ba,_0x18eace,_0x1a0c69){var _0xa854ad={};var _0x146b26={};var _0x423481;var _0x307a6c;return db[_0xe293('0x24')]['findOne']({'where':{'id':_0x5b91ba['params']['id']}})[_0xe293('0x1d')](handleEntityNotFound(_0x18eace,null))[_0xe293('0x1d')](function(_0x9a34c0){if(_0x9a34c0){_0x423481=_0x9a34c0;_0x146b26[_0xe293('0x2b')]=_[_0xe293('0x27')](db[_0xe293('0x45')][_0xe293('0x25')]);_0x146b26[_0xe293('0x28')]=_[_0xe293('0x27')](_0x5b91ba[_0xe293('0x28')]);_0x146b26[_0xe293('0x29')]=_[_0xe293('0x2a')](_0x146b26[_0xe293('0x2b')],_0x146b26[_0xe293('0x28')]);_0xa854ad[_0xe293('0x2c')]=_[_0xe293('0x2a')](_0x146b26[_0xe293('0x2b')],qs['fields'](_0x5b91ba[_0xe293('0x28')]['fields']));_0xa854ad[_0xe293('0x2c')]=_0xa854ad['attributes']['length']?_0xa854ad[_0xe293('0x2c')]:_0x146b26['model'];_0xa854ad[_0xe293('0x46')]=qs[_0xe293('0x30')](_0x5b91ba[_0xe293('0x28')]['sort']);_0xa854ad[_0xe293('0x31')]=qs['filters'](_[_0xe293('0x32')](_0x5b91ba[_0xe293('0x28')],_0x146b26[_0xe293('0x29')]));if(_0x5b91ba[_0xe293('0x28')][_0xe293('0x47')]){_0xa854ad[_0xe293('0x31')]=_['merge'](_0xa854ad[_0xe293('0x31')],{'$or':_[_0xe293('0x23')](_0xa854ad[_0xe293('0x2c')],function(_0x5f15ee){var _0x33ca89={};_0x33ca89[_0x5f15ee]={'$like':'%'+_0x5b91ba['query'][_0xe293('0x47')]+'%'};return _0x33ca89;})});}_0xa854ad=_[_0xe293('0x33')]({},_0xa854ad,_0x5b91ba[_0xe293('0x35')]);return _0x423481[_0xe293('0x48')](_0xa854ad);}})[_0xe293('0x1d')](function(_0x26db29){if(_0x26db29){_0x307a6c=_0x26db29[_0xe293('0x2d')];if(!_0x5b91ba[_0xe293('0x28')][_0xe293('0x2e')]('nolimit')){_0xa854ad[_0xe293('0x17')]=qs[_0xe293('0x17')](_0x5b91ba['query'][_0xe293('0x17')]);_0xa854ad['offset']=qs[_0xe293('0x15')](_0x5b91ba['query'][_0xe293('0x15')]);}return _0x423481['getConditions'](_0xa854ad);}})[_0xe293('0x1d')](function(_0x42d704){if(_0x42d704){return _0x42d704?{'count':_0x307a6c,'rows':_0x42d704}:null;}})[_0xe293('0x1d')](respondWithResult(_0x18eace,null))[_0xe293('0x3a')](handleError(_0x18eace,null));};exports[_0xe293('0x49')]=function(_0x378dda,_0x5b3f94,_0x33c04f){return db[_0xe293('0x4a')][_0xe293('0x3e')]({'where':{'id':_0x378dda[_0xe293('0x3c')]['id']}})[_0xe293('0x1d')](handleEntityNotFound(_0x5b3f94,null))[_0xe293('0x1d')](function(_0x1330d0){if(_0x1330d0){return _0x1330d0[_0xe293('0x49')](_0x378dda[_0xe293('0x41')][_0xe293('0x43')],_[_0xe293('0x44')](_0x378dda[_0xe293('0x41')],[_0xe293('0x43'),'id'])||{});}})[_0xe293('0x1d')](respondWithResult(_0x5b3f94,null))[_0xe293('0x3a')](handleError(_0x5b3f94,null));};exports[_0xe293('0x4b')]=function(_0x5b65fe,_0x2689c5,_0x574030){var _0x4d9136={};var _0x44ee83={};var _0x5bda1e;var _0x374d21;return db[_0xe293('0x24')]['findOne']({'where':{'id':_0x5b65fe[_0xe293('0x3c')]['id']}})[_0xe293('0x1d')](handleEntityNotFound(_0x2689c5,null))[_0xe293('0x1d')](function(_0x58e57b){if(_0x58e57b){_0x5bda1e=_0x58e57b;_0x44ee83[_0xe293('0x2b')]=_[_0xe293('0x27')](db[_0xe293('0x4a')]['rawAttributes']);_0x44ee83['query']=_[_0xe293('0x27')](_0x5b65fe['query']);_0x44ee83[_0xe293('0x29')]=_[_0xe293('0x2a')](_0x44ee83[_0xe293('0x2b')],_0x44ee83['query']);_0x4d9136[_0xe293('0x2c')]=_['intersection'](_0x44ee83['model'],qs[_0xe293('0x3d')](_0x5b65fe[_0xe293('0x28')][_0xe293('0x3d')]));_0x4d9136[_0xe293('0x2c')]=_0x4d9136[_0xe293('0x2c')][_0xe293('0x2d')]?_0x4d9136['attributes']:_0x44ee83[_0xe293('0x2b')];_0x4d9136['order']=qs[_0xe293('0x30')](_0x5b65fe[_0xe293('0x28')]['sort']);_0x4d9136[_0xe293('0x31')]=qs['filters'](_[_0xe293('0x32')](_0x5b65fe['query'],_0x44ee83[_0xe293('0x29')]));if(_0x5b65fe[_0xe293('0x28')]['filter']){_0x4d9136[_0xe293('0x31')]=_[_0xe293('0x33')](_0x4d9136[_0xe293('0x31')],{'$or':_[_0xe293('0x23')](_0x4d9136[_0xe293('0x2c')],function(_0x3ea5cb){var _0x5ec545={};_0x5ec545[_0x3ea5cb]={'$like':'%'+_0x5b65fe['query'][_0xe293('0x47')]+'%'};return _0x5ec545;})});}_0x4d9136=_[_0xe293('0x33')]({},_0x4d9136,_0x5b65fe[_0xe293('0x35')]);return _0x5bda1e['getActions'](_0x4d9136);}})[_0xe293('0x1d')](function(_0x96c73d){if(_0x96c73d){_0x374d21=_0x96c73d['length'];if(!_0x5b65fe[_0xe293('0x28')][_0xe293('0x2e')](_0xe293('0x2f'))){_0x4d9136[_0xe293('0x17')]=qs[_0xe293('0x17')](_0x5b65fe['query'][_0xe293('0x17')]);_0x4d9136['offset']=qs['offset'](_0x5b65fe[_0xe293('0x28')]['offset']);}return _0x5bda1e[_0xe293('0x4b')](_0x4d9136);}})[_0xe293('0x1d')](function(_0xb043f0){if(_0xb043f0){return _0xb043f0?{'count':_0x374d21,'rows':_0xb043f0}:null;}})[_0xe293('0x1d')](respondWithResult(_0x2689c5,null))[_0xe293('0x3a')](handleError(_0x2689c5,null));};
\ No newline at end of file
index 524c8a9..09aad31 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa2f9=['moment','bluebird','request-promise','rimraf','./automation.attributes','exports','define','tools_automations','lodash','../../config/logger','api'];(function(_0x17c3d9,_0xdbe6df){var _0x5898a4=function(_0x4f982c){while(--_0x4f982c){_0x17c3d9['push'](_0x17c3d9['shift']());}};_0x5898a4(++_0xdbe6df);}(_0xa2f9,0xb8));var _0x9a2f=function(_0x1a4faa,_0x8e32b2){_0x1a4faa=_0x1a4faa-0x0;var _0x332f99=_0xa2f9[_0x1a4faa];return _0x332f99;};'use strict';var _=require(_0x9a2f('0x0'));var util=require('util');var logger=require(_0x9a2f('0x1'))(_0x9a2f('0x2'));var moment=require(_0x9a2f('0x3'));var BPromise=require(_0x9a2f('0x4'));var rp=require(_0x9a2f('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x9a2f('0x6'));var config=require('../../config/environment');var attributes=require(_0x9a2f('0x7'));module[_0x9a2f('0x8')]=function(_0x5ded3f,_0x1a3721){return _0x5ded3f[_0x9a2f('0x9')]('Automation',attributes,{'tableName':_0x9a2f('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb966=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./automation.attributes','exports','define','Automation','tools_automations'];(function(_0x44c974,_0x1bcfde){var _0x5214c6=function(_0x10aad5){while(--_0x10aad5){_0x44c974['push'](_0x44c974['shift']());}};_0x5214c6(++_0x1bcfde);}(_0xb966,0x188));var _0x6b96=function(_0x2b8bb6,_0x25419d){_0x2b8bb6=_0x2b8bb6-0x0;var _0x1653cf=_0xb966[_0x2b8bb6];return _0x1653cf;};'use strict';var _=require(_0x6b96('0x0'));var util=require(_0x6b96('0x1'));var logger=require(_0x6b96('0x2'))(_0x6b96('0x3'));var moment=require(_0x6b96('0x4'));var BPromise=require(_0x6b96('0x5'));var rp=require(_0x6b96('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x6b96('0x7'));var config=require(_0x6b96('0x8'));var attributes=require(_0x6b96('0x9'));module[_0x6b96('0xa')]=function(_0x25d3c3,_0x39289d){return _0x25d3c3[_0x6b96('0xb')](_0x6b96('0xc'),attributes,{'tableName':_0x6b96('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f9a0e00..7b5e8a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x77e6=['client','request','then','info','request\x20sent','debug','Automation,\x20%s,\x20%s,\x20%s','stringify','error','code','Automation,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment'];(function(_0x1f1c27,_0x3d5a0b){var _0x334749=function(_0x2f9222){while(--_0x2f9222){_0x1f1c27['push'](_0x1f1c27['shift']());}};_0x334749(++_0x3d5a0b);}(_0x77e6,0x1a6));var _0x677e=function(_0x143135,_0x30505b){_0x143135=_0x143135-0x0;var _0x427481=_0x77e6[_0x143135];return _0x427481;};'use strict';var _=require(_0x677e('0x0'));var util=require(_0x677e('0x1'));var moment=require(_0x677e('0x2'));var BPromise=require(_0x677e('0x3'));var rs=require(_0x677e('0x4'));var fs=require('fs');var Redis=require(_0x677e('0x5'));var db=require(_0x677e('0x6'))['db'];var utils=require(_0x677e('0x7'));var logger=require('../../config/logger')(_0x677e('0x8'));var config=require(_0x677e('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x677e('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x40d314,_0x4d1a57,_0x5a5dd3){return new BPromise(function(_0x2eb40c,_0x4c519f){return client[_0x677e('0xb')](_0x40d314,_0x5a5dd3)[_0x677e('0xc')](function(_0x552931){logger[_0x677e('0xd')]('Automation,\x20%s,\x20%s',_0x4d1a57,_0x677e('0xe'));logger[_0x677e('0xf')](_0x677e('0x10'),_0x4d1a57,_0x677e('0xe'),JSON[_0x677e('0x11')](_0x552931));if(_0x552931[_0x677e('0x12')]){if(_0x552931[_0x677e('0x12')][_0x677e('0x13')]===0x1f4){logger[_0x677e('0x12')](_0x677e('0x14'),_0x4d1a57,_0x552931[_0x677e('0x12')][_0x677e('0x15')]);return _0x4c519f(_0x552931[_0x677e('0x12')][_0x677e('0x15')]);}logger['error']('Automation,\x20%s,\x20%s',_0x4d1a57,_0x552931['error'][_0x677e('0x15')]);return _0x2eb40c(_0x552931[_0x677e('0x12')][_0x677e('0x15')]);}else{logger[_0x677e('0xd')](_0x677e('0x14'),_0x4d1a57,_0x677e('0xe'));_0x2eb40c(_0x552931[_0x677e('0x16')][_0x677e('0x15')]);}})[_0x677e('0x17')](function(_0x32d306){logger[_0x677e('0x12')](_0x677e('0x14'),_0x4d1a57,_0x32d306);_0x4c519f(_0x32d306);});});}
\ No newline at end of file
+var _0x1681=['../../config/environment','jayson/promise','http','request','info','request\x20sent','debug','stringify','error','code','message','Automation,\x20%s,\x20%s','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0x1681,0x12c));var _0x1168=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1681[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x1168('0x0'));var BPromise=require(_0x1168('0x1'));var rs=require(_0x1168('0x2'));var fs=require('fs');var Redis=require(_0x1168('0x3'));var db=require(_0x1168('0x4'))['db'];var utils=require(_0x1168('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x1168('0x6'));var jayson=require(_0x1168('0x7'));var client=jayson['client'][_0x1168('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x1d0634,_0x5e6752,_0x27309b){return new BPromise(function(_0x53baca,_0x262f80){return client[_0x1168('0x9')](_0x1d0634,_0x27309b)['then'](function(_0x38096f){logger[_0x1168('0xa')]('Automation,\x20%s,\x20%s',_0x5e6752,_0x1168('0xb'));logger[_0x1168('0xc')]('Automation,\x20%s,\x20%s,\x20%s',_0x5e6752,'request\x20sent',JSON[_0x1168('0xd')](_0x38096f));if(_0x38096f[_0x1168('0xe')]){if(_0x38096f[_0x1168('0xe')][_0x1168('0xf')]===0x1f4){logger[_0x1168('0xe')]('Automation,\x20%s,\x20%s',_0x5e6752,_0x38096f[_0x1168('0xe')][_0x1168('0x10')]);return _0x262f80(_0x38096f[_0x1168('0xe')][_0x1168('0x10')]);}logger[_0x1168('0xe')]('Automation,\x20%s,\x20%s',_0x5e6752,_0x38096f[_0x1168('0xe')]['message']);return _0x53baca(_0x38096f[_0x1168('0xe')][_0x1168('0x10')]);}else{logger['info'](_0x1168('0x11'),_0x5e6752,_0x1168('0xb'));_0x53baca(_0x38096f['result'][_0x1168('0x10')]);}})['catch'](function(_0x45e07e){logger[_0x1168('0xe')]('Automation,\x20%s,\x20%s',_0x5e6752,_0x45e07e);_0x262f80(_0x45e07e);});});}
\ No newline at end of file
index 0fefeab..acd3262 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x497d=['delete','exports','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./automation.controller','isAuthenticated','index','get','/:id','show','getConditions','post','create','/:id/conditions','/:id/actions','addActions','update'];(function(_0x187ee1,_0x3fd1e6){var _0x388160=function(_0x542dd2){while(--_0x542dd2){_0x187ee1['push'](_0x187ee1['shift']());}};_0x388160(++_0x3fd1e6);}(_0x497d,0x1a0));var _0xd497=function(_0x286632,_0x34825d){_0x286632=_0x286632-0x0;var _0x1ce333=_0x497d[_0x286632];return _0x1ce333;};'use strict';var multer=require('multer');var util=require(_0xd497('0x0'));var path=require(_0xd497('0x1'));var timeout=require(_0xd497('0x2'));var express=require('express');var router=express[_0xd497('0x3')]();var fs_extra=require(_0xd497('0x4'));var auth=require(_0xd497('0x5'));var interaction=require(_0xd497('0x6'));var config=require(_0xd497('0x7'));var controller=require(_0xd497('0x8'));router['get']('/',auth[_0xd497('0x9')](),controller[_0xd497('0xa')]);router[_0xd497('0xb')](_0xd497('0xc'),auth[_0xd497('0x9')](),controller[_0xd497('0xd')]);router[_0xd497('0xb')]('/:id/conditions',auth['isAuthenticated'](),controller[_0xd497('0xe')]);router[_0xd497('0xb')]('/:id/actions',auth[_0xd497('0x9')](),controller['getActions']);router[_0xd497('0xf')]('/',auth[_0xd497('0x9')](),controller[_0xd497('0x10')]);router[_0xd497('0xf')](_0xd497('0x11'),auth['isAuthenticated'](),controller['addConditions']);router[_0xd497('0xf')](_0xd497('0x12'),auth[_0xd497('0x9')](),controller[_0xd497('0x13')]);router['put']('/:id',auth[_0xd497('0x9')](),controller[_0xd497('0x14')]);router[_0xd497('0x15')](_0xd497('0xc'),auth[_0xd497('0x9')](),controller['destroy']);module[_0xd497('0x16')]=router;
\ No newline at end of file
+var _0xa24e=['/:id/conditions','/:id/actions','getActions','post','create','addConditions','addActions','/:id','update','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./automation.controller','get','isAuthenticated','index','show'];(function(_0x456b57,_0x58691a){var _0x18f49f=function(_0x1dc195){while(--_0x1dc195){_0x456b57['push'](_0x456b57['shift']());}};_0x18f49f(++_0x58691a);}(_0xa24e,0x137));var _0xea24=function(_0x57eabc,_0x33c089){_0x57eabc=_0x57eabc-0x0;var _0x4c1ce4=_0xa24e[_0x57eabc];return _0x4c1ce4;};'use strict';var multer=require(_0xea24('0x0'));var util=require(_0xea24('0x1'));var path=require(_0xea24('0x2'));var timeout=require(_0xea24('0x3'));var express=require(_0xea24('0x4'));var router=express[_0xea24('0x5')]();var fs_extra=require(_0xea24('0x6'));var auth=require(_0xea24('0x7'));var interaction=require(_0xea24('0x8'));var config=require('../../config/environment');var controller=require(_0xea24('0x9'));router[_0xea24('0xa')]('/',auth[_0xea24('0xb')](),controller[_0xea24('0xc')]);router[_0xea24('0xa')]('/:id',auth[_0xea24('0xb')](),controller[_0xea24('0xd')]);router[_0xea24('0xa')](_0xea24('0xe'),auth[_0xea24('0xb')](),controller['getConditions']);router['get'](_0xea24('0xf'),auth['isAuthenticated'](),controller[_0xea24('0x10')]);router[_0xea24('0x11')]('/',auth[_0xea24('0xb')](),controller[_0xea24('0x12')]);router['post'](_0xea24('0xe'),auth[_0xea24('0xb')](),controller[_0xea24('0x13')]);router[_0xea24('0x11')](_0xea24('0xf'),auth[_0xea24('0xb')](),controller[_0xea24('0x14')]);router['put'](_0xea24('0x15'),auth['isAuthenticated'](),controller[_0xea24('0x16')]);router[_0xea24('0x17')]('/:id',auth['isAuthenticated'](),controller[_0xea24('0x18')]);module['exports']=router;
\ No newline at end of file
index 4eda5d5..a106531 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0150=['#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Min\x20Word\x20Length','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','DESC','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\x20(min:1,\x20max:999)','Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#AgentReject\x20Retry\x20(min:1,\x20max:999)','AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','sequelize','exports','STRING','ENUM','ivr','BOOLEAN','INTEGER','UNSIGNED','Max\x20200\x20calls.','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','#Congestion\x20Retry\x20(min:1,\x20max:999)','Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Busy\x20Retry\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','onlyIfOpen','Active/Disactive\x20AMD','#AMD\x20Initial\x20Silence','#AMD\x20Greeting','#AMD\x20After\x20Greeting\x20Silence'];(function(_0x316b71,_0x46b6bc){var _0x25cb45=function(_0x1dc414){while(--_0x1dc414){_0x316b71['push'](_0x316b71['shift']());}};_0x25cb45(++_0x46b6bc);}(_0x0150,0x16b));var _0x0015=function(_0x20be0f,_0x14edfd){_0x20be0f=_0x20be0f-0x0;var _0x3be0d9=_0x0150[_0x20be0f];return _0x3be0d9;};'use strict';var Sequelize=require(_0x0015('0x0'));module[_0x0015('0x1')]={'name':{'type':Sequelize[_0x0015('0x2')],'unique':'name','allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'type':{'type':Sequelize[_0x0015('0x3')](_0x0015('0x4')),'allowNull':![],'defaultValue':_0x0015('0x4')},'description':{'type':Sequelize[_0x0015('0x2')]},'active':{'type':Sequelize[_0x0015('0x5')],'defaultValue':0x0,'comment':'Active/Disactive\x20Campaign'},'limitCalls':{'type':Sequelize[_0x0015('0x6')](0x4)[_0x0015('0x7')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0xc8},'comment':_0x0015('0x8')},'dialOriginateCallerIdName':{'type':Sequelize[_0x0015('0x2')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0x0015('0x2')]},'dialOriginateTimeout':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0x0015('0x9')},'dialCongestionMaxRetry':{'type':Sequelize[_0x0015('0x6')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x0015('0xa')},'dialCongestionRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x0015('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x0015('0xb')},'dialBusyMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x0015('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Busy\x20Retry\x20(min:1,\x20max:999)'},'dialBusyRetryFrequency':{'type':Sequelize[_0x0015('0x6')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x0015('0xc')},'dialNoAnswerMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x0015('0x7')],'defaultValue':0x3,'comment':_0x0015('0xd')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0x0015('0x6')](0x5)[_0x0015('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialGlobalMaxRetry':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0x0015('0xe')},'dialTimezone':{'type':Sequelize[_0x0015('0x2')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0x0015('0x2')],'defaultValue':_0x0015('0xf')},'dialCheckDuplicateType':{'type':Sequelize[_0x0015('0x3')](_0x0015('0x10'),'never',_0x0015('0x11')),'defaultValue':'always'},'dialAMDActive':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0x0015('0x12')},'dialAMDInitialSilence':{'type':Sequelize[_0x0015('0x6')](0x9)['UNSIGNED'],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0x0015('0x13')},'dialAMDGreeting':{'type':Sequelize['INTEGER'](0x9)[_0x0015('0x7')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0x0015('0x14')},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0x0015('0x6')](0x9)[_0x0015('0x7')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0x0015('0x15')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0x0015('0x6')](0x9)[_0x0015('0x7')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x0015('0x16')},'dialAMDMinWordLength':{'type':Sequelize[_0x0015('0x6')](0x9)[_0x0015('0x7')],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0x0015('0x17')},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0x0015('0x6')](0x9)[_0x0015('0x7')],'defaultValue':0x32,'validate':{'min':0x0},'comment':'#AMD\x20Between\x20Words\x20Silence'},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0x0015('0x6')](0x9)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Number\x20Of\x20Words'},'dialAMDSilenceThreshold':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0x0015('0x18')},'dialAMDMaximumWordLength':{'type':Sequelize[_0x0015('0x6')](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Word\x20Length'},'dialOrderByScheduledAt':{'type':Sequelize[_0x0015('0x3')](_0x0015('0x19'),'ASC'),'defaultValue':_0x0015('0x19')},'dialPrefix':{'type':Sequelize[_0x0015('0x2')],'defaultValue':null},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0x0015('0x6')](0x3)[_0x0015('0x7')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Random\x20Last\x20Digit\x20(min:1,\x20max:15)'},'dialCutDigit':{'type':Sequelize[_0x0015('0x6')](0x3)['UNSIGNED'],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x0015('0x1a')},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0x0015('0x6')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x0015('0x1b')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x0015('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x0015('0x1c')},'dialDropMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x0015('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x0015('0x1d')},'dialDropRetryFrequency':{'type':Sequelize[_0x0015('0x6')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x0015('0x1e')},'dialAbandonedMaxRetry':{'type':Sequelize[_0x0015('0x6')](0x3)[_0x0015('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Abandoned\x20Retry\x20(min:1,\x20max:999)'},'dialAbandonedRetryFrequency':{'type':Sequelize[_0x0015('0x6')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialMachineMaxRetry':{'type':Sequelize[_0x0015('0x6')](0x3)[_0x0015('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x0015('0x1f')},'dialMachineRetryFrequency':{'type':Sequelize[_0x0015('0x6')](0x5)[_0x0015('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x0015('0x20')},'dialAgentRejectMaxRetry':{'type':Sequelize[_0x0015('0x6')](0x3)[_0x0015('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x0015('0x21')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0x0015('0x6')](0x5)[_0x0015('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x0015('0x22')}};
\ No newline at end of file
+var _0xbd89=['#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','ASC','DESC','#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)','NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Drop\x20Retry\x20(min:1,\x20max:999)','Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#AgentReject\x20Retry\x20(min:1,\x20max:999)','name','ivr','STRING','BOOLEAN','Active/Disactive\x20Campaign','UNSIGNED','Max\x20200\x20calls.','INTEGER','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','#Congestion\x20Retry\x20(min:1,\x20max:999)','Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#NoAnswer\x20Retry\x20(min:1,\x20max:999)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','07:00-22:00,*,*,*','ENUM','always','onlyIfOpen','Active/Disactive\x20AMD','#AMD\x20Greeting','#AMD\x20After\x20Greeting\x20Silence'];(function(_0x1e2410,_0x3b4c07){var _0x6ec204=function(_0x2b73e4){while(--_0x2b73e4){_0x1e2410['push'](_0x1e2410['shift']());}};_0x6ec204(++_0x3b4c07);}(_0xbd89,0x9e));var _0x9bd8=function(_0x3c33fe,_0x15b1a1){_0x3c33fe=_0x3c33fe-0x0;var _0x41e82f=_0xbd89[_0x3c33fe];return _0x41e82f;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize['STRING'],'unique':_0x9bd8('0x0'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'type':{'type':Sequelize['ENUM'](_0x9bd8('0x1')),'allowNull':![],'defaultValue':_0x9bd8('0x1')},'description':{'type':Sequelize[_0x9bd8('0x2')]},'active':{'type':Sequelize[_0x9bd8('0x3')],'defaultValue':0x0,'comment':_0x9bd8('0x4')},'limitCalls':{'type':Sequelize['INTEGER'](0x4)[_0x9bd8('0x5')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0xc8},'comment':_0x9bd8('0x6')},'dialOriginateCallerIdName':{'type':Sequelize[_0x9bd8('0x2')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0x9bd8('0x2')]},'dialOriginateTimeout':{'type':Sequelize[_0x9bd8('0x7')](0x3)[_0x9bd8('0x5')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0x9bd8('0x8')},'dialCongestionMaxRetry':{'type':Sequelize[_0x9bd8('0x7')](0x3)[_0x9bd8('0x5')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x9bd8('0x9')},'dialCongestionRetryFrequency':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x9bd8('0xa')},'dialBusyMaxRetry':{'type':Sequelize[_0x9bd8('0x7')](0x3)[_0x9bd8('0x5')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Busy\x20Retry\x20(min:1,\x20max:999)'},'dialBusyRetryFrequency':{'type':Sequelize[_0x9bd8('0x7')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x9bd8('0xb')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0x9bd8('0x7')](0x3)['UNSIGNED'],'defaultValue':0x3,'comment':_0x9bd8('0xc')},'dialNoAnswerRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x9bd8('0x5')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x9bd8('0xd')},'dialGlobalMaxRetry':{'type':Sequelize[_0x9bd8('0x7')](0x3)['UNSIGNED'],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0x9bd8('0xe')},'dialTimezone':{'type':Sequelize[_0x9bd8('0x2')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0x9bd8('0x2')],'defaultValue':_0x9bd8('0xf')},'dialCheckDuplicateType':{'type':Sequelize[_0x9bd8('0x10')](_0x9bd8('0x11'),'never',_0x9bd8('0x12')),'defaultValue':_0x9bd8('0x11')},'dialAMDActive':{'type':Sequelize[_0x9bd8('0x3')],'defaultValue':0x0,'comment':_0x9bd8('0x13')},'dialAMDInitialSilence':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':'#AMD\x20Initial\x20Silence'},'dialAMDGreeting':{'type':Sequelize[_0x9bd8('0x7')](0x9)[_0x9bd8('0x5')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0x9bd8('0x14')},'dialAMDAfterGreetingSilence':{'type':Sequelize['INTEGER'](0x9)[_0x9bd8('0x5')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0x9bd8('0x15')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0x9bd8('0x7')](0x9)[_0x9bd8('0x5')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':'#AMD\x20Total\x20Analysis\x20Time'},'dialAMDMinWordLength':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0x9bd8('0x16')},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0x9bd8('0x7')](0x9)[_0x9bd8('0x5')],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0x9bd8('0x17')},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0x9bd8('0x7')](0x9)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0x9bd8('0x18')},'dialAMDSilenceThreshold':{'type':Sequelize['INTEGER'](0x5)[_0x9bd8('0x5')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0x9bd8('0x19')},'dialAMDMaximumWordLength':{'type':Sequelize['INTEGER'](0x9)[_0x9bd8('0x5')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x9bd8('0x1a')},'dialOrderByScheduledAt':{'type':Sequelize[_0x9bd8('0x10')]('DESC',_0x9bd8('0x1b')),'defaultValue':_0x9bd8('0x1c')},'dialPrefix':{'type':Sequelize[_0x9bd8('0x2')],'defaultValue':null},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize['INTEGER'](0x3)[_0x9bd8('0x5')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Random\x20Last\x20Digit\x20(min:1,\x20max:15)'},'dialCutDigit':{'type':Sequelize['INTEGER'](0x3)[_0x9bd8('0x5')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Cut\x20Digit\x20(min:1,\x20max:15)'},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0x9bd8('0x7')](0x3)[_0x9bd8('0x5')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x9bd8('0x1d')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0x9bd8('0x7')](0x5)[_0x9bd8('0x5')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x9bd8('0x1e')},'dialDropMaxRetry':{'type':Sequelize[_0x9bd8('0x7')](0x3)[_0x9bd8('0x5')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x9bd8('0x1f')},'dialDropRetryFrequency':{'type':Sequelize[_0x9bd8('0x7')](0x5)[_0x9bd8('0x5')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x9bd8('0x20')},'dialAbandonedMaxRetry':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Abandoned\x20Retry\x20(min:1,\x20max:999)'},'dialAbandonedRetryFrequency':{'type':Sequelize[_0x9bd8('0x7')](0x5)[_0x9bd8('0x5')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x9bd8('0x21')},'dialMachineMaxRetry':{'type':Sequelize[_0x9bd8('0x7')](0x3)[_0x9bd8('0x5')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Machine\x20Retry\x20(min:1,\x20max:999)'},'dialMachineRetryFrequency':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x9bd8('0x22')},'dialAgentRejectMaxRetry':{'type':Sequelize[_0x9bd8('0x7')](0x3)[_0x9bd8('0x5')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x9bd8('0x23')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0x9bd8('0x7')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'}};
\ No newline at end of file
index a95fc41..5c8f017 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe7ec=['fast-json-patch','request-promise','bluebird','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','Content-Range','json','apply','reject','save','then','destroy','get','IvrCampaigns','UserProfileResource','error','stack','name','index','map','Campaign','fieldName','type','model','query','keys','filters','intersection','attributes','fields','nolimit','sort','filter','where','merge','VIRTUAL','options','include','findAll','rows','catch','show','params','rawAttributes','find','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','length','includeAll','createdAt','updatedAt','omit','user','getHoppers','findOne','CmHopper','hasOwnProperty','order','pick','getHopperHistories','CmHopperHistory','CampaignId','CmHopperFinal','getHopperBlacks','CmHopperBlack','getLists','CmList','ids','spread','dialCheckDuplicateType','always','insert','into','phone','scheduledAt','ContactId','ListId','select','field','NOW()','CmListId','toString','from','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','CampaignId\x20=\x20?','COALESCE(phone,\x27\x27)','cm_hopper','fromQuery','cm_contacts','deletedAt\x20IS\x20NULL','push','sequelize','all','removeLists','getBlackLists','addBlackLists','cm_hopper_black','removeBlackLists','eml-format','rimraf','zip-dir'];(function(_0xa3c8df,_0x46b2b8){var _0x1bc7d4=function(_0x38275f){while(--_0x38275f){_0xa3c8df['push'](_0xa3c8df['shift']());}};_0x1bc7d4(++_0x46b2b8);}(_0xe7ec,0x192));var _0xce7e=function(_0x334841,_0x2bbc4c){_0x334841=_0x334841-0x0;var _0x5beb4b=_0xe7ec[_0x334841];return _0x5beb4b;};'use strict';var emlformat=require(_0xce7e('0x0'));var rimraf=require(_0xce7e('0x1'));var zipdir=require(_0xce7e('0x2'));var jsonpatch=require(_0xce7e('0x3'));var rp=require(_0xce7e('0x4'));var moment=require('moment');var BPromise=require(_0xce7e('0x5'));var Mustache=require('mustache');var util=require(_0xce7e('0x6'));var path=require(_0xce7e('0x7'));var sox=require(_0xce7e('0x8'));var csv=require(_0xce7e('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xce7e('0xa'));var _=require(_0xce7e('0xb'));var squel=require(_0xce7e('0xc'));var crypto=require(_0xce7e('0xd'));var jsforce=require(_0xce7e('0xe'));var deskjs=require(_0xce7e('0xf'));var toCsv=require(_0xce7e('0x9'));var querystring=require(_0xce7e('0x10'));var Papa=require(_0xce7e('0x11'));var Redis=require(_0xce7e('0x12'));var authService=require(_0xce7e('0x13'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xce7e('0x14'));var logger=require(_0xce7e('0x15'))(_0xce7e('0x16'));var utils=require('../../config/utils');var config=require(_0xce7e('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xce7e('0x18'))['db'];function respondWithStatusCode(_0x333924,_0x2bdcba){_0x2bdcba=_0x2bdcba||0xcc;return function(_0x337f7e){if(_0x337f7e){return _0x333924[_0xce7e('0x19')](_0x2bdcba);}return _0x333924[_0xce7e('0x1a')](_0x2bdcba)[_0xce7e('0x1b')]();};}function respondWithResult(_0x27c14a,_0x163db8){_0x163db8=_0x163db8||0xc8;return function(_0x48eacd){if(_0x48eacd){return _0x27c14a['status'](_0x163db8)['json'](_0x48eacd);}};}function respondWithFilteredResult(_0x419038,_0x2d91f0){return function(_0x344345){if(_0x344345){var _0x323c38=typeof _0x2d91f0[_0xce7e('0x1c')]===_0xce7e('0x1d')&&typeof _0x2d91f0[_0xce7e('0x1e')]==='undefined';var _0x4037e6=_0x344345[_0xce7e('0x1f')];var _0x192d57=_0x323c38?0x0:_0x2d91f0[_0xce7e('0x1c')];var _0x5ba8c3=_0x323c38?_0x344345[_0xce7e('0x1f')]:_0x2d91f0[_0xce7e('0x1c')]+_0x2d91f0[_0xce7e('0x1e')];var _0x5584ee;if(_0x5ba8c3>=_0x4037e6){_0x5ba8c3=_0x4037e6;_0x5584ee=0xc8;}else{_0x5584ee=0xce;}_0x419038[_0xce7e('0x1a')](_0x5584ee);return _0x419038['set'](_0xce7e('0x20'),_0x192d57+'-'+_0x5ba8c3+'/'+_0x4037e6)[_0xce7e('0x21')](_0x344345);}return null;};}function patchUpdates(_0x7af374){return function(_0x43d8ee){try{jsonpatch[_0xce7e('0x22')](_0x43d8ee,_0x7af374,!![]);}catch(_0x3b532f){return BPromise[_0xce7e('0x23')](_0x3b532f);}return _0x43d8ee[_0xce7e('0x24')]();};}function saveUpdates(_0x578ead,_0xa141b9){return function(_0x35dfc1){if(_0x35dfc1){return _0x35dfc1['update'](_0x578ead)[_0xce7e('0x25')](function(_0x3ce836){return _0x3ce836;});}return null;};}function removeEntity(_0x46ab10,_0x56a4e7){return function(_0x49849d){if(_0x49849d){return _0x49849d[_0xce7e('0x26')]()['then'](function(){var _0x411ebd=_0x49849d[_0xce7e('0x27')]({'plain':!![]});var _0x3b0526=_0xce7e('0x28');return db[_0xce7e('0x29')][_0xce7e('0x26')]({'where':{'type':_0x3b0526,'resourceId':_0x411ebd['id']}})[_0xce7e('0x25')](function(){return _0x49849d;});})[_0xce7e('0x25')](function(){_0x46ab10[_0xce7e('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5a4493,_0x1ad7d0){return function(_0x8b3ddb){if(!_0x8b3ddb){_0x5a4493[_0xce7e('0x19')](0x194);}return _0x8b3ddb;};}function handleError(_0x3f0a37,_0x423c92){_0x423c92=_0x423c92||0x1f4;return function(_0x2c5c16){logger[_0xce7e('0x2a')](_0x2c5c16[_0xce7e('0x2b')]);if(_0x2c5c16[_0xce7e('0x2c')]){delete _0x2c5c16[_0xce7e('0x2c')];}_0x3f0a37[_0xce7e('0x1a')](_0x423c92)['send'](_0x2c5c16);};}exports[_0xce7e('0x2d')]=function(_0x150299,_0x2d21f1){var _0x549869={},_0x32d7ad={},_0x2d55be={'count':0x0,'rows':[]};var _0x342884=_[_0xce7e('0x2e')](db[_0xce7e('0x2f')]['rawAttributes'],function(_0x1cda06){return{'name':_0x1cda06[_0xce7e('0x30')],'type':_0x1cda06[_0xce7e('0x31')]['key']};});_0x32d7ad[_0xce7e('0x32')]=_['map'](_0x342884,'name');_0x32d7ad[_0xce7e('0x33')]=_[_0xce7e('0x34')](_0x150299['query']);_0x32d7ad[_0xce7e('0x35')]=_[_0xce7e('0x36')](_0x32d7ad[_0xce7e('0x32')],_0x32d7ad[_0xce7e('0x33')]);_0x549869[_0xce7e('0x37')]=_[_0xce7e('0x36')](_0x32d7ad['model'],qs[_0xce7e('0x38')](_0x150299[_0xce7e('0x33')]['fields']));_0x549869['attributes']=_0x549869[_0xce7e('0x37')]['length']?_0x549869[_0xce7e('0x37')]:_0x32d7ad[_0xce7e('0x32')];if(!_0x150299[_0xce7e('0x33')]['hasOwnProperty'](_0xce7e('0x39'))){_0x549869['limit']=qs[_0xce7e('0x1e')](_0x150299['query']['limit']);_0x549869[_0xce7e('0x1c')]=qs[_0xce7e('0x1c')](_0x150299['query'][_0xce7e('0x1c')]);}_0x549869['order']=qs['sort'](_0x150299[_0xce7e('0x33')][_0xce7e('0x3a')]);_0x549869['where']=qs[_0xce7e('0x35')](_['pick'](_0x150299[_0xce7e('0x33')],_0x32d7ad[_0xce7e('0x35')]),_0x342884);if(_0x150299[_0xce7e('0x33')][_0xce7e('0x3b')]){_0x549869[_0xce7e('0x3c')]=_[_0xce7e('0x3d')](_0x549869['where'],{'$or':_[_0xce7e('0x2e')](_0x342884,function(_0x599f16){if(_0x599f16[_0xce7e('0x31')]!==_0xce7e('0x3e')){var _0x4771a2={};_0x4771a2[_0x599f16[_0xce7e('0x2c')]]={'$like':'%'+_0x150299[_0xce7e('0x33')]['filter']+'%'};return _0x4771a2;}})});}_0x549869=_[_0xce7e('0x3d')]({},_0x549869,_0x150299[_0xce7e('0x3f')]);var _0x2ad516={'where':_0x549869[_0xce7e('0x3c')]};return db[_0xce7e('0x2f')][_0xce7e('0x1f')](_0x2ad516)['then'](function(_0x2dea65){_0x2d55be[_0xce7e('0x1f')]=_0x2dea65;if(_0x150299[_0xce7e('0x33')]['includeAll']){_0x549869[_0xce7e('0x40')]=[{'all':!![]}];}return db['Campaign'][_0xce7e('0x41')](_0x549869);})[_0xce7e('0x25')](function(_0x4ccd35){_0x2d55be[_0xce7e('0x42')]=_0x4ccd35;return _0x2d55be;})['then'](respondWithFilteredResult(_0x2d21f1,_0x549869))[_0xce7e('0x43')](handleError(_0x2d21f1,null));};exports[_0xce7e('0x44')]=function(_0x4f463e,_0x23b1ac){var _0x2969b1={'raw':![],'where':{'id':_0x4f463e[_0xce7e('0x45')]['id']}},_0x15b256={};_0x15b256[_0xce7e('0x32')]=_[_0xce7e('0x34')](db[_0xce7e('0x2f')][_0xce7e('0x46')]);_0x15b256[_0xce7e('0x33')]=_[_0xce7e('0x34')](_0x4f463e[_0xce7e('0x33')]);_0x15b256['filters']=_[_0xce7e('0x36')](_0x15b256[_0xce7e('0x32')],_0x15b256[_0xce7e('0x33')]);_0x2969b1['attributes']=_[_0xce7e('0x36')](_0x15b256['model'],qs[_0xce7e('0x38')](_0x4f463e['query'][_0xce7e('0x38')]));_0x2969b1[_0xce7e('0x37')]=_0x2969b1[_0xce7e('0x37')]['length']?_0x2969b1[_0xce7e('0x37')]:_0x15b256[_0xce7e('0x32')];if(_0x4f463e[_0xce7e('0x33')]['includeAll']){_0x2969b1[_0xce7e('0x40')]=[{'all':!![]}];}_0x2969b1=_[_0xce7e('0x3d')]({},_0x2969b1,_0x4f463e[_0xce7e('0x3f')]);return db['Campaign'][_0xce7e('0x47')](_0x2969b1)['then'](handleEntityNotFound(_0x23b1ac,null))[_0xce7e('0x25')](respondWithResult(_0x23b1ac,null))[_0xce7e('0x43')](handleError(_0x23b1ac,null));};exports['create']=function(_0x18732a,_0x30bc83){return db[_0xce7e('0x2f')]['create'](_0x18732a[_0xce7e('0x48')],{})[_0xce7e('0x25')](function(_0x46149d){var _0x187651=_0x18732a['user'][_0xce7e('0x27')]({'plain':!![]});if(!_0x187651)throw new Error(_0xce7e('0x49'));if(_0x187651[_0xce7e('0x4a')]==='user'){var _0x3b0115=_0x46149d[_0xce7e('0x27')]({'plain':!![]});var _0x445fd7='IvrCampaigns';return db[_0xce7e('0x4b')][_0xce7e('0x47')]({'where':{'name':_0x445fd7,'userProfileId':_0x187651[_0xce7e('0x4c')]},'raw':!![]})[_0xce7e('0x25')](function(_0x458f4b){if(_0x458f4b&&_0x458f4b[_0xce7e('0x4d')]===0x0){return db[_0xce7e('0x29')][_0xce7e('0x4e')]({'name':_0x3b0115[_0xce7e('0x2c')],'resourceId':_0x3b0115['id'],'type':_0x458f4b[_0xce7e('0x2c')],'sectionId':_0x458f4b['id']},{})[_0xce7e('0x25')](function(){return _0x46149d;});}else{return _0x46149d;}})[_0xce7e('0x43')](function(_0x1f152a){logger[_0xce7e('0x2a')](_0xce7e('0x4f'),_0x1f152a);throw _0x1f152a;});}return _0x46149d;})['then'](respondWithResult(_0x30bc83,0xc9))[_0xce7e('0x43')](handleError(_0x30bc83,null));};exports[_0xce7e('0x50')]=function(_0x499361,_0x14334f){var _0x5e4184={'where':{'id':_0x499361[_0xce7e('0x45')]['id']}},_0x5e25de={};_0x5e25de[_0xce7e('0x32')]=_[_0xce7e('0x34')](db['Campaign']['rawAttributes']);_0x5e4184[_0xce7e('0x37')]=_[_0xce7e('0x36')](_0x5e25de[_0xce7e('0x32')],qs[_0xce7e('0x38')](_0x499361[_0xce7e('0x33')][_0xce7e('0x38')]));_0x5e4184[_0xce7e('0x37')]=_0x5e4184[_0xce7e('0x37')][_0xce7e('0x51')]?_0x5e4184[_0xce7e('0x37')]:_0x5e25de[_0xce7e('0x32')];if(_0x499361[_0xce7e('0x33')][_0xce7e('0x52')]){_0x5e4184[_0xce7e('0x40')]=[{'all':!![]}];}_0x5e4184=_[_0xce7e('0x3d')]({},_0x5e4184,_0x499361[_0xce7e('0x3f')]);return db[_0xce7e('0x2f')][_0xce7e('0x47')](_0x5e4184)[_0xce7e('0x25')](handleEntityNotFound(_0x14334f,null))['then'](function(_0x5e5ed1){if(_0x5e5ed1){var _0xc8798=_0x5e5ed1['get']({'plain':!![]});_0xc8798=qs['omit'](_0xc8798,['id',_0xce7e('0x53'),_0xce7e('0x54')]);_0x499361['body']=_[_0xce7e('0x55')](_0x499361['body'],['id',_0xce7e('0x53'),_0xce7e('0x54')]);return db['Campaign']['create'](_[_0xce7e('0x3d')](_0xc8798,_0x499361[_0xce7e('0x48')]),{'include':_0x499361[_0xce7e('0x33')][_0xce7e('0x52')]?[{'all':!![]}]:undefined})[_0xce7e('0x25')](function(_0x57158e){var _0x34022a=_0x499361[_0xce7e('0x56')][_0xce7e('0x27')]({'plain':!![]});if(!_0x34022a)throw new Error(_0xce7e('0x49'));if(_0x34022a[_0xce7e('0x4a')]===_0xce7e('0x56')){var _0x1ae89d=_0x57158e['get']({'plain':!![]});var _0xf445c0='IvrCampaigns';return db[_0xce7e('0x4b')][_0xce7e('0x47')]({'where':{'name':_0xf445c0,'userProfileId':_0x34022a[_0xce7e('0x4c')]},'raw':!![]})[_0xce7e('0x25')](function(_0xa1d84d){if(_0xa1d84d&&_0xa1d84d['autoAssociation']===0x0){return db['UserProfileResource'][_0xce7e('0x4e')]({'name':_0x1ae89d[_0xce7e('0x2c')],'resourceId':_0x1ae89d['id'],'type':_0xa1d84d[_0xce7e('0x2c')],'sectionId':_0xa1d84d['id']},{})[_0xce7e('0x25')](function(){return _0x57158e;});}else{return _0x57158e;}})[_0xce7e('0x43')](function(_0x394da3){logger['error'](_0xce7e('0x4f'),_0x394da3);throw _0x394da3;});}return _0x57158e;});}})['then'](respondWithResult(_0x14334f,0xc9))[_0xce7e('0x43')](handleError(_0x14334f,null));};exports['update']=function(_0x9250ff,_0x3c6900){if(_0x9250ff[_0xce7e('0x48')]['id']){delete _0x9250ff['body']['id'];}return db[_0xce7e('0x2f')]['find']({'where':{'id':_0x9250ff[_0xce7e('0x45')]['id']}})[_0xce7e('0x25')](handleEntityNotFound(_0x3c6900,null))['then'](saveUpdates(_0x9250ff[_0xce7e('0x48')],null))['then'](respondWithResult(_0x3c6900,null))[_0xce7e('0x43')](handleError(_0x3c6900,null));};exports[_0xce7e('0x26')]=function(_0x38ec85,_0x159b5b){return db[_0xce7e('0x2f')]['find']({'where':{'id':_0x38ec85[_0xce7e('0x45')]['id']}})[_0xce7e('0x25')](handleEntityNotFound(_0x159b5b,null))[_0xce7e('0x25')](removeEntity(_0x159b5b,null))[_0xce7e('0x43')](handleError(_0x159b5b,null));};exports[_0xce7e('0x57')]=function(_0x410707,_0xca6f66,_0x43b915){var _0x436db9={'raw':!![],'where':{}};var _0x3b46a8={};var _0x5c6bc9={'count':0x0,'rows':[]};return db[_0xce7e('0x2f')][_0xce7e('0x58')]({'where':{'id':_0x410707[_0xce7e('0x45')]['id']}})[_0xce7e('0x25')](handleEntityNotFound(_0xca6f66,null))[_0xce7e('0x25')](function(_0x1c597b){if(_0x1c597b){_0x3b46a8[_0xce7e('0x32')]=_['keys'](db[_0xce7e('0x59')][_0xce7e('0x46')]);_0x3b46a8[_0xce7e('0x33')]=_[_0xce7e('0x34')](_0x410707[_0xce7e('0x33')]);_0x3b46a8['filters']=_['intersection'](_0x3b46a8[_0xce7e('0x32')],_0x3b46a8['query']);_0x436db9[_0xce7e('0x37')]=_[_0xce7e('0x36')](_0x3b46a8['model'],qs[_0xce7e('0x38')](_0x410707[_0xce7e('0x33')][_0xce7e('0x38')]));_0x436db9[_0xce7e('0x37')]=_0x436db9[_0xce7e('0x37')][_0xce7e('0x51')]?_0x436db9[_0xce7e('0x37')]:_0x3b46a8['model'];if(!_0x410707[_0xce7e('0x33')][_0xce7e('0x5a')](_0xce7e('0x39'))){_0x436db9[_0xce7e('0x1e')]=qs['limit'](_0x410707[_0xce7e('0x33')]['limit']);_0x436db9['offset']=qs[_0xce7e('0x1c')](_0x410707['query']['offset']);}_0x436db9[_0xce7e('0x5b')]=qs[_0xce7e('0x3a')](_0x410707[_0xce7e('0x33')][_0xce7e('0x3a')]);_0x436db9[_0xce7e('0x3c')]=qs[_0xce7e('0x35')](_[_0xce7e('0x5c')](_0x410707['query'],_0x3b46a8[_0xce7e('0x35')]));_0x436db9[_0xce7e('0x3c')]['CampaignId']=_0x1c597b['id'];if(_0x410707[_0xce7e('0x33')][_0xce7e('0x3b')]){_0x436db9[_0xce7e('0x3c')]=_['merge'](_0x436db9['where'],{'$or':_['map'](_0x436db9[_0xce7e('0x37')],function(_0x2ac43c){var _0x21766f={};_0x21766f[_0x2ac43c]={'$like':'%'+_0x410707['query'][_0xce7e('0x3b')]+'%'};return _0x21766f;})});}_0x436db9=_[_0xce7e('0x3d')]({},_0x436db9,_0x410707[_0xce7e('0x3f')]);return db[_0xce7e('0x59')][_0xce7e('0x1f')]({'where':_0x436db9[_0xce7e('0x3c')]})[_0xce7e('0x25')](function(_0xdfcba){_0x5c6bc9[_0xce7e('0x1f')]=_0xdfcba;if(_0x410707['query'][_0xce7e('0x52')]){_0x436db9[_0xce7e('0x40')]=[{'all':!![]}];}return db[_0xce7e('0x59')][_0xce7e('0x41')](_0x436db9);})[_0xce7e('0x25')](function(_0x1b145a){_0x5c6bc9[_0xce7e('0x42')]=_0x1b145a;return _0x5c6bc9;});}})[_0xce7e('0x25')](respondWithFilteredResult(_0xca6f66,_0x436db9))[_0xce7e('0x43')](handleError(_0xca6f66,null));};exports[_0xce7e('0x5d')]=function(_0x5d376a,_0x15e9f2,_0x277ece){var _0x132685={'raw':!![],'where':{}};var _0x39bef9={};var _0x50bb45={'count':0x0,'rows':[]};return db[_0xce7e('0x2f')][_0xce7e('0x58')]({'where':{'id':_0x5d376a[_0xce7e('0x45')]['id']}})['then'](handleEntityNotFound(_0x15e9f2,null))[_0xce7e('0x25')](function(_0x4a6205){if(_0x4a6205){_0x39bef9[_0xce7e('0x32')]=_['keys'](db[_0xce7e('0x5e')][_0xce7e('0x46')]);_0x39bef9[_0xce7e('0x33')]=_[_0xce7e('0x34')](_0x5d376a[_0xce7e('0x33')]);_0x39bef9['filters']=_[_0xce7e('0x36')](_0x39bef9['model'],_0x39bef9['query']);_0x132685['attributes']=_[_0xce7e('0x36')](_0x39bef9[_0xce7e('0x32')],qs[_0xce7e('0x38')](_0x5d376a[_0xce7e('0x33')]['fields']));_0x132685[_0xce7e('0x37')]=_0x132685[_0xce7e('0x37')]['length']?_0x132685[_0xce7e('0x37')]:_0x39bef9[_0xce7e('0x32')];if(!_0x5d376a[_0xce7e('0x33')][_0xce7e('0x5a')](_0xce7e('0x39'))){_0x132685['limit']=qs[_0xce7e('0x1e')](_0x5d376a[_0xce7e('0x33')]['limit']);_0x132685[_0xce7e('0x1c')]=qs['offset'](_0x5d376a[_0xce7e('0x33')][_0xce7e('0x1c')]);}_0x132685[_0xce7e('0x5b')]=qs[_0xce7e('0x3a')](_0x5d376a[_0xce7e('0x33')][_0xce7e('0x3a')]);_0x132685[_0xce7e('0x3c')]=qs[_0xce7e('0x35')](_[_0xce7e('0x5c')](_0x5d376a[_0xce7e('0x33')],_0x39bef9['filters']));_0x132685[_0xce7e('0x3c')][_0xce7e('0x5f')]=_0x4a6205['id'];if(_0x5d376a[_0xce7e('0x33')][_0xce7e('0x3b')]){_0x132685['where']=_[_0xce7e('0x3d')](_0x132685['where'],{'$or':_[_0xce7e('0x2e')](_0x132685[_0xce7e('0x37')],function(_0x77222e){var _0x2070b4={};_0x2070b4[_0x77222e]={'$like':'%'+_0x5d376a[_0xce7e('0x33')][_0xce7e('0x3b')]+'%'};return _0x2070b4;})});}_0x132685=_[_0xce7e('0x3d')]({},_0x132685,_0x5d376a[_0xce7e('0x3f')]);return db[_0xce7e('0x5e')][_0xce7e('0x1f')]({'where':_0x132685['where']})[_0xce7e('0x25')](function(_0x16a434){_0x50bb45[_0xce7e('0x1f')]=_0x16a434;if(_0x5d376a[_0xce7e('0x33')][_0xce7e('0x52')]){_0x132685['include']=[{'all':!![]}];}return db[_0xce7e('0x5e')][_0xce7e('0x41')](_0x132685);})['then'](function(_0x3bb572){_0x50bb45['rows']=_0x3bb572;return _0x50bb45;});}})['then'](respondWithFilteredResult(_0x15e9f2,_0x132685))[_0xce7e('0x43')](handleError(_0x15e9f2,null));};exports['getHopperFinals']=function(_0x4f7d8d,_0x26ff76,_0x221ccb){var _0x2d6171={'raw':!![],'where':{}};var _0x143f89={};var _0x222026={'count':0x0,'rows':[]};return db[_0xce7e('0x2f')][_0xce7e('0x58')]({'where':{'id':_0x4f7d8d['params']['id']}})[_0xce7e('0x25')](handleEntityNotFound(_0x26ff76,null))[_0xce7e('0x25')](function(_0x22a82a){if(_0x22a82a){_0x143f89[_0xce7e('0x32')]=_[_0xce7e('0x34')](db[_0xce7e('0x60')][_0xce7e('0x46')]);_0x143f89[_0xce7e('0x33')]=_[_0xce7e('0x34')](_0x4f7d8d['query']);_0x143f89[_0xce7e('0x35')]=_[_0xce7e('0x36')](_0x143f89['model'],_0x143f89[_0xce7e('0x33')]);_0x2d6171[_0xce7e('0x37')]=_[_0xce7e('0x36')](_0x143f89['model'],qs[_0xce7e('0x38')](_0x4f7d8d[_0xce7e('0x33')][_0xce7e('0x38')]));_0x2d6171[_0xce7e('0x37')]=_0x2d6171[_0xce7e('0x37')]['length']?_0x2d6171[_0xce7e('0x37')]:_0x143f89['model'];if(!_0x4f7d8d['query'][_0xce7e('0x5a')](_0xce7e('0x39'))){_0x2d6171[_0xce7e('0x1e')]=qs[_0xce7e('0x1e')](_0x4f7d8d[_0xce7e('0x33')][_0xce7e('0x1e')]);_0x2d6171[_0xce7e('0x1c')]=qs['offset'](_0x4f7d8d[_0xce7e('0x33')][_0xce7e('0x1c')]);}_0x2d6171[_0xce7e('0x5b')]=qs['sort'](_0x4f7d8d[_0xce7e('0x33')][_0xce7e('0x3a')]);_0x2d6171[_0xce7e('0x3c')]=qs['filters'](_[_0xce7e('0x5c')](_0x4f7d8d['query'],_0x143f89[_0xce7e('0x35')]));_0x2d6171['where'][_0xce7e('0x5f')]=_0x22a82a['id'];if(_0x4f7d8d[_0xce7e('0x33')]['filter']){_0x2d6171['where']=_[_0xce7e('0x3d')](_0x2d6171[_0xce7e('0x3c')],{'$or':_['map'](_0x2d6171['attributes'],function(_0xc6b0e9){var _0x47fa74={};_0x47fa74[_0xc6b0e9]={'$like':'%'+_0x4f7d8d[_0xce7e('0x33')]['filter']+'%'};return _0x47fa74;})});}_0x2d6171=_[_0xce7e('0x3d')]({},_0x2d6171,_0x4f7d8d[_0xce7e('0x3f')]);return db[_0xce7e('0x60')]['count']({'where':_0x2d6171[_0xce7e('0x3c')]})['then'](function(_0x568cbd){_0x222026[_0xce7e('0x1f')]=_0x568cbd;if(_0x4f7d8d[_0xce7e('0x33')][_0xce7e('0x52')]){_0x2d6171[_0xce7e('0x40')]=[{'all':!![]}];}return db['CmHopperFinal'][_0xce7e('0x41')](_0x2d6171);})[_0xce7e('0x25')](function(_0x337e3c){_0x222026['rows']=_0x337e3c;return _0x222026;});}})[_0xce7e('0x25')](respondWithFilteredResult(_0x26ff76,_0x2d6171))[_0xce7e('0x43')](handleError(_0x26ff76,null));};exports[_0xce7e('0x61')]=function(_0x4c7bfa,_0x2b5b0e,_0x208c1a){var _0x16be90={'raw':!![],'where':{}};var _0x4e821a={};var _0x170d6f={'count':0x0,'rows':[]};return db[_0xce7e('0x2f')][_0xce7e('0x58')]({'where':{'id':_0x4c7bfa[_0xce7e('0x45')]['id']}})[_0xce7e('0x25')](handleEntityNotFound(_0x2b5b0e,null))[_0xce7e('0x25')](function(_0x586f72){if(_0x586f72){_0x4e821a['model']=_['keys'](db['CmHopperBlack'][_0xce7e('0x46')]);_0x4e821a[_0xce7e('0x33')]=_['keys'](_0x4c7bfa[_0xce7e('0x33')]);_0x4e821a['filters']=_[_0xce7e('0x36')](_0x4e821a[_0xce7e('0x32')],_0x4e821a[_0xce7e('0x33')]);_0x16be90['attributes']=_[_0xce7e('0x36')](_0x4e821a[_0xce7e('0x32')],qs[_0xce7e('0x38')](_0x4c7bfa[_0xce7e('0x33')][_0xce7e('0x38')]));_0x16be90['attributes']=_0x16be90[_0xce7e('0x37')][_0xce7e('0x51')]?_0x16be90[_0xce7e('0x37')]:_0x4e821a['model'];if(!_0x4c7bfa['query'][_0xce7e('0x5a')]('nolimit')){_0x16be90[_0xce7e('0x1e')]=qs['limit'](_0x4c7bfa[_0xce7e('0x33')]['limit']);_0x16be90['offset']=qs[_0xce7e('0x1c')](_0x4c7bfa[_0xce7e('0x33')][_0xce7e('0x1c')]);}_0x16be90['order']=qs[_0xce7e('0x3a')](_0x4c7bfa['query'][_0xce7e('0x3a')]);_0x16be90['where']=qs['filters'](_[_0xce7e('0x5c')](_0x4c7bfa[_0xce7e('0x33')],_0x4e821a[_0xce7e('0x35')]));_0x16be90['where'][_0xce7e('0x5f')]=_0x586f72['id'];if(_0x4c7bfa['query'][_0xce7e('0x3b')]){_0x16be90['where']=_[_0xce7e('0x3d')](_0x16be90[_0xce7e('0x3c')],{'$or':_[_0xce7e('0x2e')](_0x16be90[_0xce7e('0x37')],function(_0x5e995b){var _0x71fd77={};_0x71fd77[_0x5e995b]={'$like':'%'+_0x4c7bfa[_0xce7e('0x33')][_0xce7e('0x3b')]+'%'};return _0x71fd77;})});}_0x16be90=_[_0xce7e('0x3d')]({},_0x16be90,_0x4c7bfa[_0xce7e('0x3f')]);return db[_0xce7e('0x62')][_0xce7e('0x1f')]({'where':_0x16be90[_0xce7e('0x3c')]})[_0xce7e('0x25')](function(_0x42ac63){_0x170d6f[_0xce7e('0x1f')]=_0x42ac63;if(_0x4c7bfa[_0xce7e('0x33')][_0xce7e('0x52')]){_0x16be90['include']=[{'all':!![]}];}return db['CmHopperBlack'][_0xce7e('0x41')](_0x16be90);})[_0xce7e('0x25')](function(_0x19f0fc){_0x170d6f[_0xce7e('0x42')]=_0x19f0fc;return _0x170d6f;});}})[_0xce7e('0x25')](respondWithFilteredResult(_0x2b5b0e,_0x16be90))[_0xce7e('0x43')](handleError(_0x2b5b0e,null));};exports[_0xce7e('0x63')]=function(_0x4ae15c,_0x19b6f9,_0x1ec724){var _0x3d2597={};var _0x132236={};var _0x3d36a2;var _0x3b0cf2;return db[_0xce7e('0x2f')][_0xce7e('0x58')]({'where':{'id':_0x4ae15c[_0xce7e('0x45')]['id']}})[_0xce7e('0x25')](handleEntityNotFound(_0x19b6f9,null))[_0xce7e('0x25')](function(_0x47b19a){if(_0x47b19a){_0x3d36a2=_0x47b19a;_0x132236[_0xce7e('0x32')]=_[_0xce7e('0x34')](db[_0xce7e('0x64')][_0xce7e('0x46')]);_0x132236[_0xce7e('0x33')]=_[_0xce7e('0x34')](_0x4ae15c[_0xce7e('0x33')]);_0x132236['filters']=_[_0xce7e('0x36')](_0x132236[_0xce7e('0x32')],_0x132236[_0xce7e('0x33')]);_0x3d2597[_0xce7e('0x37')]=_[_0xce7e('0x36')](_0x132236['model'],qs['fields'](_0x4ae15c[_0xce7e('0x33')][_0xce7e('0x38')]));_0x3d2597['attributes']=_0x3d2597[_0xce7e('0x37')][_0xce7e('0x51')]?_0x3d2597['attributes']:_0x132236[_0xce7e('0x32')];_0x3d2597['order']=qs[_0xce7e('0x3a')](_0x4ae15c[_0xce7e('0x33')][_0xce7e('0x3a')]);_0x3d2597[_0xce7e('0x3c')]=qs['filters'](_[_0xce7e('0x5c')](_0x4ae15c[_0xce7e('0x33')],_0x132236[_0xce7e('0x35')]));if(_0x4ae15c['query'][_0xce7e('0x3b')]){_0x3d2597[_0xce7e('0x3c')]=_[_0xce7e('0x3d')](_0x3d2597[_0xce7e('0x3c')],{'$or':_[_0xce7e('0x2e')](_0x3d2597[_0xce7e('0x37')],function(_0x1795ef){var _0x6e2162={};_0x6e2162[_0x1795ef]={'$like':'%'+_0x4ae15c[_0xce7e('0x33')][_0xce7e('0x3b')]+'%'};return _0x6e2162;})});}_0x3d2597=_[_0xce7e('0x3d')]({},_0x3d2597,_0x4ae15c[_0xce7e('0x3f')]);return _0x3d36a2[_0xce7e('0x63')](_0x3d2597);}})['then'](function(_0x33eb79){if(_0x33eb79){_0x3b0cf2=_0x33eb79[_0xce7e('0x51')];if(!_0x4ae15c['query'][_0xce7e('0x5a')](_0xce7e('0x39'))){_0x3d2597['limit']=qs[_0xce7e('0x1e')](_0x4ae15c['query'][_0xce7e('0x1e')]);_0x3d2597['offset']=qs[_0xce7e('0x1c')](_0x4ae15c[_0xce7e('0x33')]['offset']);}return _0x3d36a2[_0xce7e('0x63')](_0x3d2597);}})[_0xce7e('0x25')](function(_0x1536e2){if(_0x1536e2){return _0x1536e2?{'count':_0x3b0cf2,'rows':_0x1536e2}:null;}})['then'](respondWithResult(_0x19b6f9,null))['catch'](handleError(_0x19b6f9,null));};exports['addLists']=function(_0x2f94b4,_0x4bbf83,_0x307527){var _0xb7c804,_0x52524d;return db[_0xce7e('0x2f')][_0xce7e('0x47')]({'where':{'id':_0x2f94b4[_0xce7e('0x45')]['id']}})[_0xce7e('0x25')](handleEntityNotFound(_0x4bbf83,null))[_0xce7e('0x25')](function(_0x24484d){if(_0x24484d){_0x52524d=_0x24484d;return _0x24484d['addLists'](_0x2f94b4[_0xce7e('0x48')][_0xce7e('0x65')],_[_0xce7e('0x55')](_0x2f94b4['body'],[_0xce7e('0x65'),'id'])||{});}return null;})[_0xce7e('0x66')](function(_0x1d086f){var _0x40c7f0;_0xb7c804=_0x1d086f||[];var _0x18d0c5=[];if(_0x1d086f){for(var _0x167422=0x0;_0x167422<_0x1d086f['length'];_0x167422+=0x1){var _0x1db204=_0x1d086f[_0x167422][_0xce7e('0x27')]({'plain':!![]});_0x52524d[_0xce7e('0x67')]=_0x2f94b4[_0xce7e('0x48')][_0xce7e('0x67')]?_0x2f94b4[_0xce7e('0x48')][_0xce7e('0x67')]:_0x52524d['dialCheckDuplicateType'];switch(_0x52524d[_0xce7e('0x67')]){case _0xce7e('0x68'):_0x40c7f0=squel[_0xce7e('0x69')]()[_0xce7e('0x6a')]('cm_hopper')['fromQuery']([_0xce7e('0x6b'),_0xce7e('0x6c'),_0xce7e('0x6d'),_0xce7e('0x6e'),'CampaignId',_0xce7e('0x53'),_0xce7e('0x54')],squel[_0xce7e('0x6f')]()[_0xce7e('0x70')](_0xce7e('0x6b'),_0xce7e('0x6b'))['field'](_0xce7e('0x71'),_0xce7e('0x6c'))[_0xce7e('0x70')]('id',_0xce7e('0x6d'))[_0xce7e('0x70')](_0x1db204[_0xce7e('0x72')][_0xce7e('0x73')](),_0xce7e('0x6e'))[_0xce7e('0x70')](_0x2f94b4[_0xce7e('0x45')]['id'][_0xce7e('0x73')](),_0xce7e('0x5f'))['field'](_0xce7e('0x71'),_0xce7e('0x53'))[_0xce7e('0x70')]('NOW()',_0xce7e('0x54'))[_0xce7e('0x74')]('cm_contacts')[_0xce7e('0x3c')]('deletedAt\x20IS\x20NULL')[_0xce7e('0x3c')](_0xce7e('0x75'),_0x1db204[_0xce7e('0x72')][_0xce7e('0x73')]())['where'](_0xce7e('0x76'))[_0xce7e('0x3c')](_0xce7e('0x77'),squel['select']()['field'](_0xce7e('0x78'))[_0xce7e('0x74')]('cm_hopper_final')[_0xce7e('0x3c')](_0xce7e('0x79'),_0x2f94b4['params']['id'][_0xce7e('0x73')]()))[_0xce7e('0x3c')](_0xce7e('0x77'),squel[_0xce7e('0x6f')]()[_0xce7e('0x70')](_0xce7e('0x7a'))['from']('cm_hopper')['where'](_0xce7e('0x79'),_0x2f94b4[_0xce7e('0x45')]['id'][_0xce7e('0x73')]())))[_0xce7e('0x73')]();break;case'onlyIfOpen':_0x40c7f0=squel[_0xce7e('0x69')]()['into'](_0xce7e('0x7b'))[_0xce7e('0x7c')](['phone',_0xce7e('0x6c'),_0xce7e('0x6d'),_0xce7e('0x6e'),'CampaignId',_0xce7e('0x53'),_0xce7e('0x54')],squel['select']()[_0xce7e('0x70')]('phone','phone')[_0xce7e('0x70')](_0xce7e('0x71'),_0xce7e('0x6c'))[_0xce7e('0x70')]('id',_0xce7e('0x6d'))[_0xce7e('0x70')](_0x1db204[_0xce7e('0x72')][_0xce7e('0x73')](),_0xce7e('0x6e'))[_0xce7e('0x70')](_0x2f94b4[_0xce7e('0x45')]['id'][_0xce7e('0x73')](),_0xce7e('0x5f'))[_0xce7e('0x70')](_0xce7e('0x71'),'createdAt')[_0xce7e('0x70')](_0xce7e('0x71'),'updatedAt')[_0xce7e('0x74')](_0xce7e('0x7d'))[_0xce7e('0x3c')](_0xce7e('0x7e'))[_0xce7e('0x3c')](_0xce7e('0x75'),_0x1db204[_0xce7e('0x72')][_0xce7e('0x73')]())[_0xce7e('0x3c')](_0xce7e('0x76'))[_0xce7e('0x3c')](_0xce7e('0x77'),squel[_0xce7e('0x6f')]()['field']('COALESCE(phone,\x27\x27)')[_0xce7e('0x74')](_0xce7e('0x7b'))[_0xce7e('0x3c')](_0xce7e('0x79'),_0x2f94b4[_0xce7e('0x45')]['id'][_0xce7e('0x73')]())))[_0xce7e('0x73')]();break;default:_0x40c7f0=squel[_0xce7e('0x69')]()[_0xce7e('0x6a')](_0xce7e('0x7b'))[_0xce7e('0x7c')](['phone',_0xce7e('0x6c'),'ContactId',_0xce7e('0x6e'),_0xce7e('0x5f'),'createdAt',_0xce7e('0x54')],squel[_0xce7e('0x6f')]()[_0xce7e('0x70')]('phone',_0xce7e('0x6b'))['field'](_0xce7e('0x71'),_0xce7e('0x6c'))['field']('id',_0xce7e('0x6d'))[_0xce7e('0x70')](_0x1db204[_0xce7e('0x72')][_0xce7e('0x73')](),_0xce7e('0x6e'))[_0xce7e('0x70')](_0x2f94b4[_0xce7e('0x45')]['id'][_0xce7e('0x73')](),'CampaignId')['field'](_0xce7e('0x71'),_0xce7e('0x53'))['field'](_0xce7e('0x71'),_0xce7e('0x54'))[_0xce7e('0x74')](_0xce7e('0x7d'))[_0xce7e('0x3c')](_0xce7e('0x7e'))['where'](_0xce7e('0x75'),_0x1db204[_0xce7e('0x72')]['toString']())[_0xce7e('0x3c')](_0xce7e('0x76')))[_0xce7e('0x73')]();}_0x18d0c5[_0xce7e('0x7f')](db[_0xce7e('0x80')]['query'](_0x40c7f0));}return BPromise[_0xce7e('0x81')](_0x18d0c5);}})[_0xce7e('0x25')](function(){return _0xb7c804;})['then'](respondWithResult(_0x4bbf83,null))[_0xce7e('0x43')](handleError(_0x4bbf83,null));};exports[_0xce7e('0x82')]=function(_0xadc010,_0x4ca47d,_0x552b0b){return db[_0xce7e('0x2f')][_0xce7e('0x47')]({'where':{'id':_0xadc010[_0xce7e('0x45')]['id']}})['then'](handleEntityNotFound(_0x4ca47d,null))[_0xce7e('0x25')](function(_0x88a458){if(_0x88a458){return _0x88a458['removeLists'](_0xadc010[_0xce7e('0x33')][_0xce7e('0x65')]);}})[_0xce7e('0x25')](function(_0x27dedc){if(_0x27dedc){return db[_0xce7e('0x59')][_0xce7e('0x26')]({'where':{'ListId':_0xadc010[_0xce7e('0x33')][_0xce7e('0x65')],'CampaignId':_0xadc010[_0xce7e('0x45')]['id']}})[_0xce7e('0x25')](function(){return _0x27dedc;});}})[_0xce7e('0x25')](respondWithStatusCode(_0x4ca47d,null))['catch'](handleError(_0x4ca47d,null));};exports[_0xce7e('0x83')]=function(_0x5bed87,_0x531baa,_0x1f1b50){var _0x2e682b={};var _0x223f5a={};var _0x1b3d69;var _0x399d3f;return db[_0xce7e('0x2f')]['findOne']({'where':{'id':_0x5bed87['params']['id']}})['then'](handleEntityNotFound(_0x531baa,null))[_0xce7e('0x25')](function(_0x3dc668){if(_0x3dc668){_0x1b3d69=_0x3dc668;_0x223f5a['model']=_[_0xce7e('0x34')](db[_0xce7e('0x64')][_0xce7e('0x46')]);_0x223f5a[_0xce7e('0x33')]=_[_0xce7e('0x34')](_0x5bed87[_0xce7e('0x33')]);_0x223f5a[_0xce7e('0x35')]=_['intersection'](_0x223f5a['model'],_0x223f5a['query']);_0x2e682b['attributes']=_[_0xce7e('0x36')](_0x223f5a[_0xce7e('0x32')],qs[_0xce7e('0x38')](_0x5bed87[_0xce7e('0x33')]['fields']));_0x2e682b['attributes']=_0x2e682b[_0xce7e('0x37')]['length']?_0x2e682b[_0xce7e('0x37')]:_0x223f5a['model'];_0x2e682b['order']=qs[_0xce7e('0x3a')](_0x5bed87['query'][_0xce7e('0x3a')]);_0x2e682b[_0xce7e('0x3c')]=qs[_0xce7e('0x35')](_[_0xce7e('0x5c')](_0x5bed87['query'],_0x223f5a[_0xce7e('0x35')]));if(_0x5bed87[_0xce7e('0x33')][_0xce7e('0x3b')]){_0x2e682b[_0xce7e('0x3c')]=_[_0xce7e('0x3d')](_0x2e682b[_0xce7e('0x3c')],{'$or':_[_0xce7e('0x2e')](_0x2e682b[_0xce7e('0x37')],function(_0x3aeb73){var _0x34aac2={};_0x34aac2[_0x3aeb73]={'$like':'%'+_0x5bed87[_0xce7e('0x33')][_0xce7e('0x3b')]+'%'};return _0x34aac2;})});}_0x2e682b=_[_0xce7e('0x3d')]({},_0x2e682b,_0x5bed87[_0xce7e('0x3f')]);return _0x1b3d69[_0xce7e('0x83')](_0x2e682b);}})[_0xce7e('0x25')](function(_0x48f610){if(_0x48f610){_0x399d3f=_0x48f610[_0xce7e('0x51')];if(!_0x5bed87['query'][_0xce7e('0x5a')](_0xce7e('0x39'))){_0x2e682b['limit']=qs[_0xce7e('0x1e')](_0x5bed87[_0xce7e('0x33')][_0xce7e('0x1e')]);_0x2e682b[_0xce7e('0x1c')]=qs[_0xce7e('0x1c')](_0x5bed87[_0xce7e('0x33')][_0xce7e('0x1c')]);}return _0x1b3d69['getBlackLists'](_0x2e682b);}})[_0xce7e('0x25')](function(_0x45f6a3){if(_0x45f6a3){return _0x45f6a3?{'count':_0x399d3f,'rows':_0x45f6a3}:null;}})['then'](respondWithResult(_0x531baa,null))[_0xce7e('0x43')](handleError(_0x531baa,null));};exports['addBlackLists']=function(_0x3e3ea2,_0x4b3e8b,_0x3b8762){var _0x476c2d,_0x397c03;return db['Campaign']['find']({'where':{'id':_0x3e3ea2[_0xce7e('0x45')]['id']}})[_0xce7e('0x25')](handleEntityNotFound(_0x4b3e8b,null))[_0xce7e('0x25')](function(_0x2bfe13){if(_0x2bfe13){_0x397c03=_0x2bfe13;return _0x2bfe13[_0xce7e('0x84')](_0x3e3ea2[_0xce7e('0x48')][_0xce7e('0x65')],_[_0xce7e('0x55')](_0x3e3ea2[_0xce7e('0x48')],[_0xce7e('0x65'),'id'])||{});}return null;})[_0xce7e('0x66')](function(_0x43b223){var _0x22e144;_0x476c2d=_0x43b223||[];var _0x10f6dd=[];if(_0x43b223){for(var _0x35c1de=0x0;_0x35c1de<_0x43b223[_0xce7e('0x51')];_0x35c1de+=0x1){var _0x5c3a32=_0x43b223[_0x35c1de]['get']({'plain':!![]});_0x22e144=squel[_0xce7e('0x69')]()[_0xce7e('0x6a')](_0xce7e('0x85'))[_0xce7e('0x7c')](['phone','ContactId',_0xce7e('0x6e'),_0xce7e('0x5f'),_0xce7e('0x53'),'updatedAt'],squel[_0xce7e('0x6f')]()['field'](_0xce7e('0x6b'),_0xce7e('0x6b'))[_0xce7e('0x70')]('id',_0xce7e('0x6d'))[_0xce7e('0x70')](_0x5c3a32[_0xce7e('0x72')][_0xce7e('0x73')](),'ListId')[_0xce7e('0x70')](_0x3e3ea2[_0xce7e('0x45')]['id'][_0xce7e('0x73')](),_0xce7e('0x5f'))[_0xce7e('0x70')](_0xce7e('0x71'),'createdAt')[_0xce7e('0x70')]('NOW()',_0xce7e('0x54'))['from'](_0xce7e('0x7d'))['where'](_0xce7e('0x7e'))[_0xce7e('0x3c')]('ListId\x20=\x20?',_0x5c3a32[_0xce7e('0x72')][_0xce7e('0x73')]())['where'](_0xce7e('0x76')))[_0xce7e('0x73')]();_0x10f6dd[_0xce7e('0x7f')](db[_0xce7e('0x80')]['query'](_0x22e144));}return BPromise[_0xce7e('0x81')](_0x10f6dd);}})[_0xce7e('0x25')](function(){return _0x476c2d;})[_0xce7e('0x25')](respondWithResult(_0x4b3e8b,null))['catch'](handleError(_0x4b3e8b,null));};exports[_0xce7e('0x86')]=function(_0x106412,_0x1346e7,_0x42772b){return db[_0xce7e('0x2f')]['find']({'where':{'id':_0x106412[_0xce7e('0x45')]['id']}})[_0xce7e('0x25')](handleEntityNotFound(_0x1346e7,null))['then'](function(_0x1d88b6){if(_0x1d88b6){return _0x1d88b6[_0xce7e('0x86')](_0x106412[_0xce7e('0x33')]['ids']);}})[_0xce7e('0x25')](function(_0x332877){if(_0x332877){return db[_0xce7e('0x62')]['destroy']({'where':{'ListId':_0x106412[_0xce7e('0x33')][_0xce7e('0x65')],'CampaignId':_0x106412[_0xce7e('0x45')]['id']}})[_0xce7e('0x25')](function(){return _0x332877;});}})[_0xce7e('0x25')](respondWithStatusCode(_0x1346e7,null))[_0xce7e('0x43')](handleError(_0x1346e7,null));};
\ No newline at end of file
+var _0xec13=['order','sort','where','pick','filter','merge','VIRTUAL','options','catch','params','length','include','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','includeAll','omit','updatedAt','update','CampaignId','CmHopper','findAll','rows','CmHopperHistory','getHopperFinals','findOne','CmHopperFinal','CmHopperBlack','getLists','CmList','addLists','ids','dialCheckDuplicateType','always','insert','into','cm_hopper','fromQuery','phone','scheduledAt','ContactId','createdAt','select','field','NOW()','CmListId','toString','ListId','from','cm_contacts','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','cm_hopper_final','COALESCE(phone,\x27\x27)','onlyIfOpen','CampaignId\x20=\x20?','push','sequelize','all','removeLists','getBlackLists','addBlackLists','spread','cm_hopper_black','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','to-csv','ejs','lodash','squel','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','status','end','offset','undefined','limit','count','set','apply','save','then','destroy','get','IvrCampaigns','UserProfileResource','sendStatus','error','stack','name','send','index','Campaign','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit'];(function(_0x42f009,_0x5e27b1){var _0x22a1e0=function(_0x297993){while(--_0x297993){_0x42f009['push'](_0x42f009['shift']());}};_0x22a1e0(++_0x5e27b1);}(_0xec13,0x159));var _0x3ec1=function(_0x2d7f0e,_0x3e6fbd){_0x2d7f0e=_0x2d7f0e-0x0;var _0x110b07=_0xec13[_0x2d7f0e];return _0x110b07;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x3ec1('0x0'));var zipdir=require(_0x3ec1('0x1'));var jsonpatch=require(_0x3ec1('0x2'));var rp=require(_0x3ec1('0x3'));var moment=require('moment');var BPromise=require(_0x3ec1('0x4'));var Mustache=require(_0x3ec1('0x5'));var util=require(_0x3ec1('0x6'));var path=require(_0x3ec1('0x7'));var sox=require('sox');var csv=require(_0x3ec1('0x8'));var ejs=require(_0x3ec1('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x3ec1('0xa'));var squel=require(_0x3ec1('0xb'));var crypto=require(_0x3ec1('0xc'));var jsforce=require(_0x3ec1('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x3ec1('0xe'));var Redis=require(_0x3ec1('0xf'));var authService=require(_0x3ec1('0x10'));var qs=require(_0x3ec1('0x11'));var as=require(_0x3ec1('0x12'));var hardwareService=require(_0x3ec1('0x13'));var logger=require(_0x3ec1('0x14'))(_0x3ec1('0x15'));var utils=require(_0x3ec1('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x3ec1('0x17'));var db=require(_0x3ec1('0x18'))['db'];function respondWithStatusCode(_0x450762,_0x1afea8){_0x1afea8=_0x1afea8||0xcc;return function(_0x4eaa90){if(_0x4eaa90){return _0x450762['sendStatus'](_0x1afea8);}return _0x450762[_0x3ec1('0x19')](_0x1afea8)[_0x3ec1('0x1a')]();};}function respondWithResult(_0x2d7b1f,_0x36799f){_0x36799f=_0x36799f||0xc8;return function(_0x4c87aa){if(_0x4c87aa){return _0x2d7b1f[_0x3ec1('0x19')](_0x36799f)['json'](_0x4c87aa);}};}function respondWithFilteredResult(_0x168292,_0x485c4c){return function(_0x1d64c3){if(_0x1d64c3){var _0x3fc79c=typeof _0x485c4c[_0x3ec1('0x1b')]===_0x3ec1('0x1c')&&typeof _0x485c4c[_0x3ec1('0x1d')]===_0x3ec1('0x1c');var _0x1b9a4b=_0x1d64c3[_0x3ec1('0x1e')];var _0x394f3f=_0x3fc79c?0x0:_0x485c4c[_0x3ec1('0x1b')];var _0x4f030a=_0x3fc79c?_0x1d64c3['count']:_0x485c4c['offset']+_0x485c4c['limit'];var _0x3c34b2;if(_0x4f030a>=_0x1b9a4b){_0x4f030a=_0x1b9a4b;_0x3c34b2=0xc8;}else{_0x3c34b2=0xce;}_0x168292['status'](_0x3c34b2);return _0x168292[_0x3ec1('0x1f')]('Content-Range',_0x394f3f+'-'+_0x4f030a+'/'+_0x1b9a4b)['json'](_0x1d64c3);}return null;};}function patchUpdates(_0x8222a){return function(_0x2fb334){try{jsonpatch[_0x3ec1('0x20')](_0x2fb334,_0x8222a,!![]);}catch(_0xad1a41){return BPromise['reject'](_0xad1a41);}return _0x2fb334[_0x3ec1('0x21')]();};}function saveUpdates(_0x551dfd,_0x2f2d80){return function(_0x1e4ac4){if(_0x1e4ac4){return _0x1e4ac4['update'](_0x551dfd)[_0x3ec1('0x22')](function(_0x2f640f){return _0x2f640f;});}return null;};}function removeEntity(_0xbaeb4b,_0x1692fe){return function(_0x47ba9d){if(_0x47ba9d){return _0x47ba9d[_0x3ec1('0x23')]()[_0x3ec1('0x22')](function(){var _0x1f0711=_0x47ba9d[_0x3ec1('0x24')]({'plain':!![]});var _0x24dc15=_0x3ec1('0x25');return db[_0x3ec1('0x26')][_0x3ec1('0x23')]({'where':{'type':_0x24dc15,'resourceId':_0x1f0711['id']}})['then'](function(){return _0x47ba9d;});})['then'](function(){_0xbaeb4b['status'](0xcc)[_0x3ec1('0x1a')]();});}};}function handleEntityNotFound(_0x5a9e33,_0x4dde46){return function(_0x323ccb){if(!_0x323ccb){_0x5a9e33[_0x3ec1('0x27')](0x194);}return _0x323ccb;};}function handleError(_0x572c0c,_0x5698e3){_0x5698e3=_0x5698e3||0x1f4;return function(_0x3a1959){logger[_0x3ec1('0x28')](_0x3a1959[_0x3ec1('0x29')]);if(_0x3a1959[_0x3ec1('0x2a')]){delete _0x3a1959[_0x3ec1('0x2a')];}_0x572c0c[_0x3ec1('0x19')](_0x5698e3)[_0x3ec1('0x2b')](_0x3a1959);};}exports[_0x3ec1('0x2c')]=function(_0x5860cb,_0x1b7ab1){var _0x4d9470={},_0x2ebc29={},_0x423c46={'count':0x0,'rows':[]};var _0x163ebc=_['map'](db[_0x3ec1('0x2d')][_0x3ec1('0x2e')],function(_0x4dd54a){return{'name':_0x4dd54a[_0x3ec1('0x2f')],'type':_0x4dd54a[_0x3ec1('0x30')][_0x3ec1('0x31')]};});_0x2ebc29[_0x3ec1('0x32')]=_[_0x3ec1('0x33')](_0x163ebc,_0x3ec1('0x2a'));_0x2ebc29[_0x3ec1('0x34')]=_[_0x3ec1('0x35')](_0x5860cb[_0x3ec1('0x34')]);_0x2ebc29[_0x3ec1('0x36')]=_[_0x3ec1('0x37')](_0x2ebc29[_0x3ec1('0x32')],_0x2ebc29[_0x3ec1('0x34')]);_0x4d9470[_0x3ec1('0x38')]=_[_0x3ec1('0x37')](_0x2ebc29[_0x3ec1('0x32')],qs[_0x3ec1('0x39')](_0x5860cb[_0x3ec1('0x34')][_0x3ec1('0x39')]));_0x4d9470[_0x3ec1('0x38')]=_0x4d9470['attributes']['length']?_0x4d9470[_0x3ec1('0x38')]:_0x2ebc29['model'];if(!_0x5860cb[_0x3ec1('0x34')][_0x3ec1('0x3a')](_0x3ec1('0x3b'))){_0x4d9470['limit']=qs[_0x3ec1('0x1d')](_0x5860cb['query']['limit']);_0x4d9470[_0x3ec1('0x1b')]=qs[_0x3ec1('0x1b')](_0x5860cb[_0x3ec1('0x34')][_0x3ec1('0x1b')]);}_0x4d9470[_0x3ec1('0x3c')]=qs[_0x3ec1('0x3d')](_0x5860cb['query'][_0x3ec1('0x3d')]);_0x4d9470[_0x3ec1('0x3e')]=qs['filters'](_[_0x3ec1('0x3f')](_0x5860cb[_0x3ec1('0x34')],_0x2ebc29[_0x3ec1('0x36')]),_0x163ebc);if(_0x5860cb[_0x3ec1('0x34')][_0x3ec1('0x40')]){_0x4d9470[_0x3ec1('0x3e')]=_[_0x3ec1('0x41')](_0x4d9470[_0x3ec1('0x3e')],{'$or':_[_0x3ec1('0x33')](_0x163ebc,function(_0xbf55de){if(_0xbf55de[_0x3ec1('0x30')]!==_0x3ec1('0x42')){var _0x4ee888={};_0x4ee888[_0xbf55de[_0x3ec1('0x2a')]]={'$like':'%'+_0x5860cb[_0x3ec1('0x34')]['filter']+'%'};return _0x4ee888;}})});}_0x4d9470=_[_0x3ec1('0x41')]({},_0x4d9470,_0x5860cb[_0x3ec1('0x43')]);var _0x7bc091={'where':_0x4d9470['where']};return db[_0x3ec1('0x2d')][_0x3ec1('0x1e')](_0x7bc091)[_0x3ec1('0x22')](function(_0x2c17eb){_0x423c46[_0x3ec1('0x1e')]=_0x2c17eb;if(_0x5860cb[_0x3ec1('0x34')]['includeAll']){_0x4d9470['include']=[{'all':!![]}];}return db[_0x3ec1('0x2d')]['findAll'](_0x4d9470);})[_0x3ec1('0x22')](function(_0x40e861){_0x423c46['rows']=_0x40e861;return _0x423c46;})['then'](respondWithFilteredResult(_0x1b7ab1,_0x4d9470))[_0x3ec1('0x44')](handleError(_0x1b7ab1,null));};exports['show']=function(_0x57b284,_0x3bbc0c){var _0x40ed97={'raw':![],'where':{'id':_0x57b284[_0x3ec1('0x45')]['id']}},_0x2fd4fd={};_0x2fd4fd[_0x3ec1('0x32')]=_[_0x3ec1('0x35')](db['Campaign'][_0x3ec1('0x2e')]);_0x2fd4fd[_0x3ec1('0x34')]=_['keys'](_0x57b284[_0x3ec1('0x34')]);_0x2fd4fd[_0x3ec1('0x36')]=_[_0x3ec1('0x37')](_0x2fd4fd['model'],_0x2fd4fd['query']);_0x40ed97['attributes']=_[_0x3ec1('0x37')](_0x2fd4fd[_0x3ec1('0x32')],qs[_0x3ec1('0x39')](_0x57b284['query'][_0x3ec1('0x39')]));_0x40ed97[_0x3ec1('0x38')]=_0x40ed97[_0x3ec1('0x38')][_0x3ec1('0x46')]?_0x40ed97[_0x3ec1('0x38')]:_0x2fd4fd[_0x3ec1('0x32')];if(_0x57b284[_0x3ec1('0x34')]['includeAll']){_0x40ed97[_0x3ec1('0x47')]=[{'all':!![]}];}_0x40ed97=_[_0x3ec1('0x41')]({},_0x40ed97,_0x57b284[_0x3ec1('0x43')]);return db[_0x3ec1('0x2d')][_0x3ec1('0x48')](_0x40ed97)['then'](handleEntityNotFound(_0x3bbc0c,null))['then'](respondWithResult(_0x3bbc0c,null))[_0x3ec1('0x44')](handleError(_0x3bbc0c,null));};exports[_0x3ec1('0x49')]=function(_0x5b6857,_0x45f887){return db[_0x3ec1('0x2d')]['create'](_0x5b6857[_0x3ec1('0x4a')],{})[_0x3ec1('0x22')](function(_0x5f35e0){var _0x433264=_0x5b6857[_0x3ec1('0x4b')][_0x3ec1('0x24')]({'plain':!![]});if(!_0x433264)throw new Error(_0x3ec1('0x4c'));if(_0x433264[_0x3ec1('0x4d')]===_0x3ec1('0x4b')){var _0x16ba6c=_0x5f35e0[_0x3ec1('0x24')]({'plain':!![]});var _0x2cf19c=_0x3ec1('0x25');return db[_0x3ec1('0x4e')][_0x3ec1('0x48')]({'where':{'name':_0x2cf19c,'userProfileId':_0x433264[_0x3ec1('0x4f')]},'raw':!![]})['then'](function(_0x58b39d){if(_0x58b39d&&_0x58b39d[_0x3ec1('0x50')]===0x0){return db[_0x3ec1('0x26')][_0x3ec1('0x49')]({'name':_0x16ba6c['name'],'resourceId':_0x16ba6c['id'],'type':_0x58b39d['name'],'sectionId':_0x58b39d['id']},{})[_0x3ec1('0x22')](function(){return _0x5f35e0;});}else{return _0x5f35e0;}})['catch'](function(_0x344e8e){logger[_0x3ec1('0x28')](_0x3ec1('0x51'),_0x344e8e);throw _0x344e8e;});}return _0x5f35e0;})[_0x3ec1('0x22')](respondWithResult(_0x45f887,0xc9))[_0x3ec1('0x44')](handleError(_0x45f887,null));};exports[_0x3ec1('0x52')]=function(_0x2651f7,_0x32aa6c){var _0x5e1480={'where':{'id':_0x2651f7[_0x3ec1('0x45')]['id']}},_0x37afb4={};_0x37afb4[_0x3ec1('0x32')]=_[_0x3ec1('0x35')](db[_0x3ec1('0x2d')][_0x3ec1('0x2e')]);_0x5e1480[_0x3ec1('0x38')]=_[_0x3ec1('0x37')](_0x37afb4['model'],qs[_0x3ec1('0x39')](_0x2651f7['query'][_0x3ec1('0x39')]));_0x5e1480[_0x3ec1('0x38')]=_0x5e1480['attributes'][_0x3ec1('0x46')]?_0x5e1480['attributes']:_0x37afb4['model'];if(_0x2651f7[_0x3ec1('0x34')][_0x3ec1('0x53')]){_0x5e1480[_0x3ec1('0x47')]=[{'all':!![]}];}_0x5e1480=_['merge']({},_0x5e1480,_0x2651f7[_0x3ec1('0x43')]);return db['Campaign'][_0x3ec1('0x48')](_0x5e1480)[_0x3ec1('0x22')](handleEntityNotFound(_0x32aa6c,null))[_0x3ec1('0x22')](function(_0x56f76d){if(_0x56f76d){var _0x51a011=_0x56f76d[_0x3ec1('0x24')]({'plain':!![]});_0x51a011=qs[_0x3ec1('0x54')](_0x51a011,['id','createdAt',_0x3ec1('0x55')]);_0x2651f7[_0x3ec1('0x4a')]=_[_0x3ec1('0x54')](_0x2651f7[_0x3ec1('0x4a')],['id','createdAt',_0x3ec1('0x55')]);return db[_0x3ec1('0x2d')][_0x3ec1('0x49')](_[_0x3ec1('0x41')](_0x51a011,_0x2651f7[_0x3ec1('0x4a')]),{'include':_0x2651f7[_0x3ec1('0x34')][_0x3ec1('0x53')]?[{'all':!![]}]:undefined})[_0x3ec1('0x22')](function(_0x2189de){var _0x2d6419=_0x2651f7[_0x3ec1('0x4b')][_0x3ec1('0x24')]({'plain':!![]});if(!_0x2d6419)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x2d6419['role']===_0x3ec1('0x4b')){var _0x854f8f=_0x2189de[_0x3ec1('0x24')]({'plain':!![]});var _0x1e738f=_0x3ec1('0x25');return db[_0x3ec1('0x4e')][_0x3ec1('0x48')]({'where':{'name':_0x1e738f,'userProfileId':_0x2d6419[_0x3ec1('0x4f')]},'raw':!![]})[_0x3ec1('0x22')](function(_0x188bba){if(_0x188bba&&_0x188bba['autoAssociation']===0x0){return db[_0x3ec1('0x26')][_0x3ec1('0x49')]({'name':_0x854f8f[_0x3ec1('0x2a')],'resourceId':_0x854f8f['id'],'type':_0x188bba['name'],'sectionId':_0x188bba['id']},{})[_0x3ec1('0x22')](function(){return _0x2189de;});}else{return _0x2189de;}})['catch'](function(_0x4e1b7c){logger[_0x3ec1('0x28')](_0x3ec1('0x51'),_0x4e1b7c);throw _0x4e1b7c;});}return _0x2189de;});}})[_0x3ec1('0x22')](respondWithResult(_0x32aa6c,0xc9))[_0x3ec1('0x44')](handleError(_0x32aa6c,null));};exports[_0x3ec1('0x56')]=function(_0x221b8b,_0x2f1419){if(_0x221b8b[_0x3ec1('0x4a')]['id']){delete _0x221b8b[_0x3ec1('0x4a')]['id'];}return db[_0x3ec1('0x2d')]['find']({'where':{'id':_0x221b8b[_0x3ec1('0x45')]['id']}})[_0x3ec1('0x22')](handleEntityNotFound(_0x2f1419,null))[_0x3ec1('0x22')](saveUpdates(_0x221b8b[_0x3ec1('0x4a')],null))[_0x3ec1('0x22')](respondWithResult(_0x2f1419,null))[_0x3ec1('0x44')](handleError(_0x2f1419,null));};exports['destroy']=function(_0x447d22,_0x33661f){return db[_0x3ec1('0x2d')][_0x3ec1('0x48')]({'where':{'id':_0x447d22[_0x3ec1('0x45')]['id']}})[_0x3ec1('0x22')](handleEntityNotFound(_0x33661f,null))[_0x3ec1('0x22')](removeEntity(_0x33661f,null))[_0x3ec1('0x44')](handleError(_0x33661f,null));};exports['getHoppers']=function(_0x84ea5a,_0x4ff826,_0xede831){var _0x3c3096={'raw':!![],'where':{}};var _0x98ce8f={};var _0x1187b1={'count':0x0,'rows':[]};return db['Campaign']['findOne']({'where':{'id':_0x84ea5a[_0x3ec1('0x45')]['id']}})['then'](handleEntityNotFound(_0x4ff826,null))[_0x3ec1('0x22')](function(_0x30e4f1){if(_0x30e4f1){_0x98ce8f['model']=_[_0x3ec1('0x35')](db['CmHopper'][_0x3ec1('0x2e')]);_0x98ce8f[_0x3ec1('0x34')]=_[_0x3ec1('0x35')](_0x84ea5a[_0x3ec1('0x34')]);_0x98ce8f[_0x3ec1('0x36')]=_['intersection'](_0x98ce8f['model'],_0x98ce8f[_0x3ec1('0x34')]);_0x3c3096[_0x3ec1('0x38')]=_[_0x3ec1('0x37')](_0x98ce8f['model'],qs[_0x3ec1('0x39')](_0x84ea5a[_0x3ec1('0x34')][_0x3ec1('0x39')]));_0x3c3096[_0x3ec1('0x38')]=_0x3c3096[_0x3ec1('0x38')][_0x3ec1('0x46')]?_0x3c3096[_0x3ec1('0x38')]:_0x98ce8f[_0x3ec1('0x32')];if(!_0x84ea5a[_0x3ec1('0x34')][_0x3ec1('0x3a')](_0x3ec1('0x3b'))){_0x3c3096[_0x3ec1('0x1d')]=qs[_0x3ec1('0x1d')](_0x84ea5a['query']['limit']);_0x3c3096['offset']=qs[_0x3ec1('0x1b')](_0x84ea5a[_0x3ec1('0x34')]['offset']);}_0x3c3096[_0x3ec1('0x3c')]=qs['sort'](_0x84ea5a['query'][_0x3ec1('0x3d')]);_0x3c3096['where']=qs[_0x3ec1('0x36')](_[_0x3ec1('0x3f')](_0x84ea5a['query'],_0x98ce8f['filters']));_0x3c3096[_0x3ec1('0x3e')][_0x3ec1('0x57')]=_0x30e4f1['id'];if(_0x84ea5a[_0x3ec1('0x34')][_0x3ec1('0x40')]){_0x3c3096[_0x3ec1('0x3e')]=_[_0x3ec1('0x41')](_0x3c3096[_0x3ec1('0x3e')],{'$or':_['map'](_0x3c3096[_0x3ec1('0x38')],function(_0x2cd707){var _0x520d3d={};_0x520d3d[_0x2cd707]={'$like':'%'+_0x84ea5a[_0x3ec1('0x34')]['filter']+'%'};return _0x520d3d;})});}_0x3c3096=_['merge']({},_0x3c3096,_0x84ea5a[_0x3ec1('0x43')]);return db[_0x3ec1('0x58')][_0x3ec1('0x1e')]({'where':_0x3c3096[_0x3ec1('0x3e')]})[_0x3ec1('0x22')](function(_0x1a0756){_0x1187b1['count']=_0x1a0756;if(_0x84ea5a[_0x3ec1('0x34')]['includeAll']){_0x3c3096[_0x3ec1('0x47')]=[{'all':!![]}];}return db[_0x3ec1('0x58')][_0x3ec1('0x59')](_0x3c3096);})[_0x3ec1('0x22')](function(_0x15152d){_0x1187b1[_0x3ec1('0x5a')]=_0x15152d;return _0x1187b1;});}})[_0x3ec1('0x22')](respondWithFilteredResult(_0x4ff826,_0x3c3096))[_0x3ec1('0x44')](handleError(_0x4ff826,null));};exports['getHopperHistories']=function(_0x4c1a60,_0x4a2171,_0x5c4ea4){var _0x54788c={'raw':!![],'where':{}};var _0x348597={};var _0x4b0c94={'count':0x0,'rows':[]};return db[_0x3ec1('0x2d')]['findOne']({'where':{'id':_0x4c1a60[_0x3ec1('0x45')]['id']}})['then'](handleEntityNotFound(_0x4a2171,null))[_0x3ec1('0x22')](function(_0x56c9e1){if(_0x56c9e1){_0x348597[_0x3ec1('0x32')]=_[_0x3ec1('0x35')](db[_0x3ec1('0x5b')][_0x3ec1('0x2e')]);_0x348597[_0x3ec1('0x34')]=_[_0x3ec1('0x35')](_0x4c1a60[_0x3ec1('0x34')]);_0x348597[_0x3ec1('0x36')]=_[_0x3ec1('0x37')](_0x348597['model'],_0x348597[_0x3ec1('0x34')]);_0x54788c['attributes']=_[_0x3ec1('0x37')](_0x348597[_0x3ec1('0x32')],qs[_0x3ec1('0x39')](_0x4c1a60['query'][_0x3ec1('0x39')]));_0x54788c['attributes']=_0x54788c[_0x3ec1('0x38')][_0x3ec1('0x46')]?_0x54788c['attributes']:_0x348597[_0x3ec1('0x32')];if(!_0x4c1a60[_0x3ec1('0x34')][_0x3ec1('0x3a')](_0x3ec1('0x3b'))){_0x54788c[_0x3ec1('0x1d')]=qs[_0x3ec1('0x1d')](_0x4c1a60['query'][_0x3ec1('0x1d')]);_0x54788c[_0x3ec1('0x1b')]=qs['offset'](_0x4c1a60[_0x3ec1('0x34')]['offset']);}_0x54788c[_0x3ec1('0x3c')]=qs[_0x3ec1('0x3d')](_0x4c1a60['query'][_0x3ec1('0x3d')]);_0x54788c[_0x3ec1('0x3e')]=qs[_0x3ec1('0x36')](_[_0x3ec1('0x3f')](_0x4c1a60[_0x3ec1('0x34')],_0x348597[_0x3ec1('0x36')]));_0x54788c[_0x3ec1('0x3e')]['CampaignId']=_0x56c9e1['id'];if(_0x4c1a60[_0x3ec1('0x34')]['filter']){_0x54788c[_0x3ec1('0x3e')]=_[_0x3ec1('0x41')](_0x54788c[_0x3ec1('0x3e')],{'$or':_[_0x3ec1('0x33')](_0x54788c[_0x3ec1('0x38')],function(_0x28a5ea){var _0x19086f={};_0x19086f[_0x28a5ea]={'$like':'%'+_0x4c1a60[_0x3ec1('0x34')][_0x3ec1('0x40')]+'%'};return _0x19086f;})});}_0x54788c=_[_0x3ec1('0x41')]({},_0x54788c,_0x4c1a60[_0x3ec1('0x43')]);return db[_0x3ec1('0x5b')][_0x3ec1('0x1e')]({'where':_0x54788c[_0x3ec1('0x3e')]})[_0x3ec1('0x22')](function(_0xb750d){_0x4b0c94[_0x3ec1('0x1e')]=_0xb750d;if(_0x4c1a60['query'][_0x3ec1('0x53')]){_0x54788c['include']=[{'all':!![]}];}return db[_0x3ec1('0x5b')]['findAll'](_0x54788c);})[_0x3ec1('0x22')](function(_0x324b66){_0x4b0c94[_0x3ec1('0x5a')]=_0x324b66;return _0x4b0c94;});}})[_0x3ec1('0x22')](respondWithFilteredResult(_0x4a2171,_0x54788c))['catch'](handleError(_0x4a2171,null));};exports[_0x3ec1('0x5c')]=function(_0x114c6b,_0x5141bf,_0x12e0dc){var _0x2fe3a2={'raw':!![],'where':{}};var _0x549933={};var _0x21cea5={'count':0x0,'rows':[]};return db[_0x3ec1('0x2d')][_0x3ec1('0x5d')]({'where':{'id':_0x114c6b[_0x3ec1('0x45')]['id']}})[_0x3ec1('0x22')](handleEntityNotFound(_0x5141bf,null))[_0x3ec1('0x22')](function(_0x377558){if(_0x377558){_0x549933['model']=_['keys'](db['CmHopperFinal'][_0x3ec1('0x2e')]);_0x549933[_0x3ec1('0x34')]=_[_0x3ec1('0x35')](_0x114c6b[_0x3ec1('0x34')]);_0x549933[_0x3ec1('0x36')]=_[_0x3ec1('0x37')](_0x549933[_0x3ec1('0x32')],_0x549933[_0x3ec1('0x34')]);_0x2fe3a2[_0x3ec1('0x38')]=_[_0x3ec1('0x37')](_0x549933[_0x3ec1('0x32')],qs[_0x3ec1('0x39')](_0x114c6b[_0x3ec1('0x34')][_0x3ec1('0x39')]));_0x2fe3a2[_0x3ec1('0x38')]=_0x2fe3a2[_0x3ec1('0x38')][_0x3ec1('0x46')]?_0x2fe3a2['attributes']:_0x549933[_0x3ec1('0x32')];if(!_0x114c6b[_0x3ec1('0x34')][_0x3ec1('0x3a')](_0x3ec1('0x3b'))){_0x2fe3a2[_0x3ec1('0x1d')]=qs[_0x3ec1('0x1d')](_0x114c6b[_0x3ec1('0x34')]['limit']);_0x2fe3a2['offset']=qs['offset'](_0x114c6b['query']['offset']);}_0x2fe3a2['order']=qs['sort'](_0x114c6b[_0x3ec1('0x34')][_0x3ec1('0x3d')]);_0x2fe3a2[_0x3ec1('0x3e')]=qs['filters'](_['pick'](_0x114c6b[_0x3ec1('0x34')],_0x549933['filters']));_0x2fe3a2[_0x3ec1('0x3e')][_0x3ec1('0x57')]=_0x377558['id'];if(_0x114c6b[_0x3ec1('0x34')]['filter']){_0x2fe3a2[_0x3ec1('0x3e')]=_[_0x3ec1('0x41')](_0x2fe3a2['where'],{'$or':_[_0x3ec1('0x33')](_0x2fe3a2['attributes'],function(_0x4aba){var _0x2752b8={};_0x2752b8[_0x4aba]={'$like':'%'+_0x114c6b[_0x3ec1('0x34')]['filter']+'%'};return _0x2752b8;})});}_0x2fe3a2=_[_0x3ec1('0x41')]({},_0x2fe3a2,_0x114c6b['options']);return db[_0x3ec1('0x5e')][_0x3ec1('0x1e')]({'where':_0x2fe3a2[_0x3ec1('0x3e')]})[_0x3ec1('0x22')](function(_0x182348){_0x21cea5[_0x3ec1('0x1e')]=_0x182348;if(_0x114c6b[_0x3ec1('0x34')][_0x3ec1('0x53')]){_0x2fe3a2['include']=[{'all':!![]}];}return db[_0x3ec1('0x5e')][_0x3ec1('0x59')](_0x2fe3a2);})[_0x3ec1('0x22')](function(_0x4cf6fe){_0x21cea5[_0x3ec1('0x5a')]=_0x4cf6fe;return _0x21cea5;});}})[_0x3ec1('0x22')](respondWithFilteredResult(_0x5141bf,_0x2fe3a2))[_0x3ec1('0x44')](handleError(_0x5141bf,null));};exports['getHopperBlacks']=function(_0x10e3ad,_0x4d729f,_0x1d8257){var _0x49c969={'raw':!![],'where':{}};var _0x131ca3={};var _0x2580d3={'count':0x0,'rows':[]};return db[_0x3ec1('0x2d')][_0x3ec1('0x5d')]({'where':{'id':_0x10e3ad[_0x3ec1('0x45')]['id']}})[_0x3ec1('0x22')](handleEntityNotFound(_0x4d729f,null))[_0x3ec1('0x22')](function(_0x2c8309){if(_0x2c8309){_0x131ca3[_0x3ec1('0x32')]=_[_0x3ec1('0x35')](db[_0x3ec1('0x5f')][_0x3ec1('0x2e')]);_0x131ca3[_0x3ec1('0x34')]=_['keys'](_0x10e3ad[_0x3ec1('0x34')]);_0x131ca3[_0x3ec1('0x36')]=_['intersection'](_0x131ca3[_0x3ec1('0x32')],_0x131ca3[_0x3ec1('0x34')]);_0x49c969[_0x3ec1('0x38')]=_[_0x3ec1('0x37')](_0x131ca3[_0x3ec1('0x32')],qs[_0x3ec1('0x39')](_0x10e3ad[_0x3ec1('0x34')][_0x3ec1('0x39')]));_0x49c969['attributes']=_0x49c969[_0x3ec1('0x38')]['length']?_0x49c969[_0x3ec1('0x38')]:_0x131ca3[_0x3ec1('0x32')];if(!_0x10e3ad[_0x3ec1('0x34')]['hasOwnProperty']('nolimit')){_0x49c969[_0x3ec1('0x1d')]=qs[_0x3ec1('0x1d')](_0x10e3ad[_0x3ec1('0x34')][_0x3ec1('0x1d')]);_0x49c969['offset']=qs[_0x3ec1('0x1b')](_0x10e3ad[_0x3ec1('0x34')][_0x3ec1('0x1b')]);}_0x49c969[_0x3ec1('0x3c')]=qs[_0x3ec1('0x3d')](_0x10e3ad['query']['sort']);_0x49c969['where']=qs['filters'](_[_0x3ec1('0x3f')](_0x10e3ad['query'],_0x131ca3['filters']));_0x49c969[_0x3ec1('0x3e')][_0x3ec1('0x57')]=_0x2c8309['id'];if(_0x10e3ad[_0x3ec1('0x34')]['filter']){_0x49c969[_0x3ec1('0x3e')]=_['merge'](_0x49c969[_0x3ec1('0x3e')],{'$or':_[_0x3ec1('0x33')](_0x49c969[_0x3ec1('0x38')],function(_0xa89d5a){var _0x3a39c7={};_0x3a39c7[_0xa89d5a]={'$like':'%'+_0x10e3ad[_0x3ec1('0x34')][_0x3ec1('0x40')]+'%'};return _0x3a39c7;})});}_0x49c969=_[_0x3ec1('0x41')]({},_0x49c969,_0x10e3ad[_0x3ec1('0x43')]);return db[_0x3ec1('0x5f')]['count']({'where':_0x49c969[_0x3ec1('0x3e')]})['then'](function(_0x53acba){_0x2580d3[_0x3ec1('0x1e')]=_0x53acba;if(_0x10e3ad[_0x3ec1('0x34')][_0x3ec1('0x53')]){_0x49c969[_0x3ec1('0x47')]=[{'all':!![]}];}return db[_0x3ec1('0x5f')][_0x3ec1('0x59')](_0x49c969);})[_0x3ec1('0x22')](function(_0x84c6f2){_0x2580d3['rows']=_0x84c6f2;return _0x2580d3;});}})[_0x3ec1('0x22')](respondWithFilteredResult(_0x4d729f,_0x49c969))[_0x3ec1('0x44')](handleError(_0x4d729f,null));};exports[_0x3ec1('0x60')]=function(_0xa620c8,_0x504688,_0x56af3f){var _0x47d05b={};var _0x2d6846={};var _0x4f5b8e;var _0xf80250;return db[_0x3ec1('0x2d')][_0x3ec1('0x5d')]({'where':{'id':_0xa620c8['params']['id']}})[_0x3ec1('0x22')](handleEntityNotFound(_0x504688,null))['then'](function(_0x2d4a9e){if(_0x2d4a9e){_0x4f5b8e=_0x2d4a9e;_0x2d6846[_0x3ec1('0x32')]=_[_0x3ec1('0x35')](db[_0x3ec1('0x61')][_0x3ec1('0x2e')]);_0x2d6846[_0x3ec1('0x34')]=_[_0x3ec1('0x35')](_0xa620c8[_0x3ec1('0x34')]);_0x2d6846[_0x3ec1('0x36')]=_['intersection'](_0x2d6846[_0x3ec1('0x32')],_0x2d6846[_0x3ec1('0x34')]);_0x47d05b[_0x3ec1('0x38')]=_[_0x3ec1('0x37')](_0x2d6846[_0x3ec1('0x32')],qs[_0x3ec1('0x39')](_0xa620c8[_0x3ec1('0x34')][_0x3ec1('0x39')]));_0x47d05b['attributes']=_0x47d05b[_0x3ec1('0x38')]['length']?_0x47d05b[_0x3ec1('0x38')]:_0x2d6846[_0x3ec1('0x32')];_0x47d05b[_0x3ec1('0x3c')]=qs[_0x3ec1('0x3d')](_0xa620c8[_0x3ec1('0x34')][_0x3ec1('0x3d')]);_0x47d05b['where']=qs[_0x3ec1('0x36')](_[_0x3ec1('0x3f')](_0xa620c8['query'],_0x2d6846['filters']));if(_0xa620c8['query']['filter']){_0x47d05b[_0x3ec1('0x3e')]=_[_0x3ec1('0x41')](_0x47d05b[_0x3ec1('0x3e')],{'$or':_[_0x3ec1('0x33')](_0x47d05b[_0x3ec1('0x38')],function(_0x12a8b8){var _0x4797d7={};_0x4797d7[_0x12a8b8]={'$like':'%'+_0xa620c8[_0x3ec1('0x34')][_0x3ec1('0x40')]+'%'};return _0x4797d7;})});}_0x47d05b=_['merge']({},_0x47d05b,_0xa620c8[_0x3ec1('0x43')]);return _0x4f5b8e[_0x3ec1('0x60')](_0x47d05b);}})['then'](function(_0x404dd5){if(_0x404dd5){_0xf80250=_0x404dd5[_0x3ec1('0x46')];if(!_0xa620c8[_0x3ec1('0x34')]['hasOwnProperty'](_0x3ec1('0x3b'))){_0x47d05b[_0x3ec1('0x1d')]=qs[_0x3ec1('0x1d')](_0xa620c8[_0x3ec1('0x34')]['limit']);_0x47d05b[_0x3ec1('0x1b')]=qs['offset'](_0xa620c8[_0x3ec1('0x34')][_0x3ec1('0x1b')]);}return _0x4f5b8e[_0x3ec1('0x60')](_0x47d05b);}})[_0x3ec1('0x22')](function(_0x56f7de){if(_0x56f7de){return _0x56f7de?{'count':_0xf80250,'rows':_0x56f7de}:null;}})[_0x3ec1('0x22')](respondWithResult(_0x504688,null))['catch'](handleError(_0x504688,null));};exports[_0x3ec1('0x62')]=function(_0x190e08,_0x38038c,_0x524858){var _0x341baf,_0x436e49;return db[_0x3ec1('0x2d')][_0x3ec1('0x48')]({'where':{'id':_0x190e08[_0x3ec1('0x45')]['id']}})['then'](handleEntityNotFound(_0x38038c,null))[_0x3ec1('0x22')](function(_0x5acd52){if(_0x5acd52){_0x436e49=_0x5acd52;return _0x5acd52[_0x3ec1('0x62')](_0x190e08[_0x3ec1('0x4a')]['ids'],_[_0x3ec1('0x54')](_0x190e08[_0x3ec1('0x4a')],[_0x3ec1('0x63'),'id'])||{});}return null;})['spread'](function(_0x5a56ac){var _0x3788e3;_0x341baf=_0x5a56ac||[];var _0x4ed851=[];if(_0x5a56ac){for(var _0x5522f8=0x0;_0x5522f8<_0x5a56ac[_0x3ec1('0x46')];_0x5522f8+=0x1){var _0xa88c70=_0x5a56ac[_0x5522f8]['get']({'plain':!![]});_0x436e49[_0x3ec1('0x64')]=_0x190e08[_0x3ec1('0x4a')][_0x3ec1('0x64')]?_0x190e08[_0x3ec1('0x4a')][_0x3ec1('0x64')]:_0x436e49[_0x3ec1('0x64')];switch(_0x436e49[_0x3ec1('0x64')]){case _0x3ec1('0x65'):_0x3788e3=squel[_0x3ec1('0x66')]()[_0x3ec1('0x67')](_0x3ec1('0x68'))[_0x3ec1('0x69')]([_0x3ec1('0x6a'),_0x3ec1('0x6b'),_0x3ec1('0x6c'),'ListId',_0x3ec1('0x57'),_0x3ec1('0x6d'),_0x3ec1('0x55')],squel[_0x3ec1('0x6e')]()[_0x3ec1('0x6f')]('phone','phone')[_0x3ec1('0x6f')](_0x3ec1('0x70'),_0x3ec1('0x6b'))[_0x3ec1('0x6f')]('id','ContactId')['field'](_0xa88c70[_0x3ec1('0x71')][_0x3ec1('0x72')](),_0x3ec1('0x73'))[_0x3ec1('0x6f')](_0x190e08[_0x3ec1('0x45')]['id']['toString'](),'CampaignId')[_0x3ec1('0x6f')](_0x3ec1('0x70'),'createdAt')[_0x3ec1('0x6f')](_0x3ec1('0x70'),_0x3ec1('0x55'))[_0x3ec1('0x74')](_0x3ec1('0x75'))[_0x3ec1('0x3e')](_0x3ec1('0x76'))[_0x3ec1('0x3e')](_0x3ec1('0x77'),_0xa88c70['CmListId'][_0x3ec1('0x72')]())[_0x3ec1('0x3e')](_0x3ec1('0x78'))[_0x3ec1('0x3e')](_0x3ec1('0x79'),squel['select']()[_0x3ec1('0x6f')](_0x3ec1('0x7a'))['from'](_0x3ec1('0x7b'))[_0x3ec1('0x3e')]('CampaignId\x20=\x20?',_0x190e08[_0x3ec1('0x45')]['id'][_0x3ec1('0x72')]()))['where'](_0x3ec1('0x79'),squel[_0x3ec1('0x6e')]()['field'](_0x3ec1('0x7c'))[_0x3ec1('0x74')](_0x3ec1('0x68'))[_0x3ec1('0x3e')]('CampaignId\x20=\x20?',_0x190e08[_0x3ec1('0x45')]['id'][_0x3ec1('0x72')]())))[_0x3ec1('0x72')]();break;case _0x3ec1('0x7d'):_0x3788e3=squel[_0x3ec1('0x66')]()[_0x3ec1('0x67')](_0x3ec1('0x68'))['fromQuery']([_0x3ec1('0x6a'),_0x3ec1('0x6b'),'ContactId',_0x3ec1('0x73'),_0x3ec1('0x57'),_0x3ec1('0x6d'),_0x3ec1('0x55')],squel[_0x3ec1('0x6e')]()[_0x3ec1('0x6f')](_0x3ec1('0x6a'),_0x3ec1('0x6a'))[_0x3ec1('0x6f')](_0x3ec1('0x70'),_0x3ec1('0x6b'))[_0x3ec1('0x6f')]('id','ContactId')[_0x3ec1('0x6f')](_0xa88c70[_0x3ec1('0x71')][_0x3ec1('0x72')](),'ListId')[_0x3ec1('0x6f')](_0x190e08[_0x3ec1('0x45')]['id'][_0x3ec1('0x72')](),'CampaignId')['field'](_0x3ec1('0x70'),_0x3ec1('0x6d'))[_0x3ec1('0x6f')](_0x3ec1('0x70'),_0x3ec1('0x55'))[_0x3ec1('0x74')](_0x3ec1('0x75'))[_0x3ec1('0x3e')](_0x3ec1('0x76'))[_0x3ec1('0x3e')](_0x3ec1('0x77'),_0xa88c70['CmListId'][_0x3ec1('0x72')]())[_0x3ec1('0x3e')](_0x3ec1('0x78'))[_0x3ec1('0x3e')](_0x3ec1('0x79'),squel[_0x3ec1('0x6e')]()[_0x3ec1('0x6f')](_0x3ec1('0x7c'))['from'](_0x3ec1('0x68'))[_0x3ec1('0x3e')](_0x3ec1('0x7e'),_0x190e08[_0x3ec1('0x45')]['id'][_0x3ec1('0x72')]())))[_0x3ec1('0x72')]();break;default:_0x3788e3=squel['insert']()[_0x3ec1('0x67')](_0x3ec1('0x68'))['fromQuery']([_0x3ec1('0x6a'),'scheduledAt','ContactId',_0x3ec1('0x73'),'CampaignId','createdAt','updatedAt'],squel[_0x3ec1('0x6e')]()[_0x3ec1('0x6f')](_0x3ec1('0x6a'),_0x3ec1('0x6a'))[_0x3ec1('0x6f')](_0x3ec1('0x70'),_0x3ec1('0x6b'))[_0x3ec1('0x6f')]('id','ContactId')[_0x3ec1('0x6f')](_0xa88c70[_0x3ec1('0x71')][_0x3ec1('0x72')](),_0x3ec1('0x73'))['field'](_0x190e08[_0x3ec1('0x45')]['id'][_0x3ec1('0x72')](),_0x3ec1('0x57'))['field'](_0x3ec1('0x70'),_0x3ec1('0x6d'))[_0x3ec1('0x6f')](_0x3ec1('0x70'),_0x3ec1('0x55'))['from'](_0x3ec1('0x75'))[_0x3ec1('0x3e')](_0x3ec1('0x76'))[_0x3ec1('0x3e')](_0x3ec1('0x77'),_0xa88c70['CmListId'][_0x3ec1('0x72')]())[_0x3ec1('0x3e')]('phone\x20IS\x20NOT\x20NULL'))['toString']();}_0x4ed851[_0x3ec1('0x7f')](db[_0x3ec1('0x80')][_0x3ec1('0x34')](_0x3788e3));}return BPromise[_0x3ec1('0x81')](_0x4ed851);}})['then'](function(){return _0x341baf;})[_0x3ec1('0x22')](respondWithResult(_0x38038c,null))[_0x3ec1('0x44')](handleError(_0x38038c,null));};exports[_0x3ec1('0x82')]=function(_0x134227,_0x2f3564,_0x153518){return db['Campaign']['find']({'where':{'id':_0x134227[_0x3ec1('0x45')]['id']}})[_0x3ec1('0x22')](handleEntityNotFound(_0x2f3564,null))[_0x3ec1('0x22')](function(_0x1e4ea5){if(_0x1e4ea5){return _0x1e4ea5[_0x3ec1('0x82')](_0x134227[_0x3ec1('0x34')][_0x3ec1('0x63')]);}})[_0x3ec1('0x22')](function(_0x3cc517){if(_0x3cc517){return db[_0x3ec1('0x58')][_0x3ec1('0x23')]({'where':{'ListId':_0x134227['query']['ids'],'CampaignId':_0x134227[_0x3ec1('0x45')]['id']}})[_0x3ec1('0x22')](function(){return _0x3cc517;});}})[_0x3ec1('0x22')](respondWithStatusCode(_0x2f3564,null))[_0x3ec1('0x44')](handleError(_0x2f3564,null));};exports[_0x3ec1('0x83')]=function(_0x516ade,_0x555a8b,_0x2718aa){var _0x20bd2a={};var _0x116f2f={};var _0x1a0c77;var _0x23badf;return db[_0x3ec1('0x2d')][_0x3ec1('0x5d')]({'where':{'id':_0x516ade[_0x3ec1('0x45')]['id']}})['then'](handleEntityNotFound(_0x555a8b,null))['then'](function(_0x12ce86){if(_0x12ce86){_0x1a0c77=_0x12ce86;_0x116f2f[_0x3ec1('0x32')]=_['keys'](db[_0x3ec1('0x61')]['rawAttributes']);_0x116f2f['query']=_[_0x3ec1('0x35')](_0x516ade[_0x3ec1('0x34')]);_0x116f2f[_0x3ec1('0x36')]=_[_0x3ec1('0x37')](_0x116f2f[_0x3ec1('0x32')],_0x116f2f[_0x3ec1('0x34')]);_0x20bd2a[_0x3ec1('0x38')]=_[_0x3ec1('0x37')](_0x116f2f[_0x3ec1('0x32')],qs[_0x3ec1('0x39')](_0x516ade[_0x3ec1('0x34')][_0x3ec1('0x39')]));_0x20bd2a[_0x3ec1('0x38')]=_0x20bd2a[_0x3ec1('0x38')][_0x3ec1('0x46')]?_0x20bd2a[_0x3ec1('0x38')]:_0x116f2f[_0x3ec1('0x32')];_0x20bd2a[_0x3ec1('0x3c')]=qs['sort'](_0x516ade[_0x3ec1('0x34')]['sort']);_0x20bd2a['where']=qs[_0x3ec1('0x36')](_['pick'](_0x516ade[_0x3ec1('0x34')],_0x116f2f[_0x3ec1('0x36')]));if(_0x516ade[_0x3ec1('0x34')][_0x3ec1('0x40')]){_0x20bd2a['where']=_[_0x3ec1('0x41')](_0x20bd2a[_0x3ec1('0x3e')],{'$or':_[_0x3ec1('0x33')](_0x20bd2a[_0x3ec1('0x38')],function(_0x571db8){var _0x37abac={};_0x37abac[_0x571db8]={'$like':'%'+_0x516ade[_0x3ec1('0x34')]['filter']+'%'};return _0x37abac;})});}_0x20bd2a=_[_0x3ec1('0x41')]({},_0x20bd2a,_0x516ade['options']);return _0x1a0c77[_0x3ec1('0x83')](_0x20bd2a);}})[_0x3ec1('0x22')](function(_0x4fea4d){if(_0x4fea4d){_0x23badf=_0x4fea4d['length'];if(!_0x516ade[_0x3ec1('0x34')]['hasOwnProperty'](_0x3ec1('0x3b'))){_0x20bd2a['limit']=qs[_0x3ec1('0x1d')](_0x516ade['query'][_0x3ec1('0x1d')]);_0x20bd2a[_0x3ec1('0x1b')]=qs[_0x3ec1('0x1b')](_0x516ade[_0x3ec1('0x34')]['offset']);}return _0x1a0c77['getBlackLists'](_0x20bd2a);}})[_0x3ec1('0x22')](function(_0x127d08){if(_0x127d08){return _0x127d08?{'count':_0x23badf,'rows':_0x127d08}:null;}})['then'](respondWithResult(_0x555a8b,null))[_0x3ec1('0x44')](handleError(_0x555a8b,null));};exports[_0x3ec1('0x84')]=function(_0x171277,_0xb30da2,_0x3d8d58){var _0x614c62,_0x5e21e0;return db['Campaign'][_0x3ec1('0x48')]({'where':{'id':_0x171277[_0x3ec1('0x45')]['id']}})[_0x3ec1('0x22')](handleEntityNotFound(_0xb30da2,null))['then'](function(_0x4993ce){if(_0x4993ce){_0x5e21e0=_0x4993ce;return _0x4993ce[_0x3ec1('0x84')](_0x171277[_0x3ec1('0x4a')][_0x3ec1('0x63')],_[_0x3ec1('0x54')](_0x171277['body'],[_0x3ec1('0x63'),'id'])||{});}return null;})[_0x3ec1('0x85')](function(_0x2e6b29){var _0x3dc676;_0x614c62=_0x2e6b29||[];var _0x1196f7=[];if(_0x2e6b29){for(var _0x4d56d7=0x0;_0x4d56d7<_0x2e6b29[_0x3ec1('0x46')];_0x4d56d7+=0x1){var _0x1f3e6b=_0x2e6b29[_0x4d56d7][_0x3ec1('0x24')]({'plain':!![]});_0x3dc676=squel['insert']()[_0x3ec1('0x67')](_0x3ec1('0x86'))[_0x3ec1('0x69')](['phone','ContactId',_0x3ec1('0x73'),_0x3ec1('0x57'),_0x3ec1('0x6d'),'updatedAt'],squel[_0x3ec1('0x6e')]()[_0x3ec1('0x6f')](_0x3ec1('0x6a'),_0x3ec1('0x6a'))['field']('id',_0x3ec1('0x6c'))[_0x3ec1('0x6f')](_0x1f3e6b[_0x3ec1('0x71')][_0x3ec1('0x72')](),'ListId')[_0x3ec1('0x6f')](_0x171277[_0x3ec1('0x45')]['id']['toString'](),_0x3ec1('0x57'))[_0x3ec1('0x6f')](_0x3ec1('0x70'),_0x3ec1('0x6d'))[_0x3ec1('0x6f')](_0x3ec1('0x70'),_0x3ec1('0x55'))[_0x3ec1('0x74')](_0x3ec1('0x75'))[_0x3ec1('0x3e')](_0x3ec1('0x76'))[_0x3ec1('0x3e')](_0x3ec1('0x77'),_0x1f3e6b['CmListId'][_0x3ec1('0x72')]())[_0x3ec1('0x3e')](_0x3ec1('0x78')))[_0x3ec1('0x72')]();_0x1196f7[_0x3ec1('0x7f')](db[_0x3ec1('0x80')][_0x3ec1('0x34')](_0x3dc676));}return BPromise[_0x3ec1('0x81')](_0x1196f7);}})[_0x3ec1('0x22')](function(){return _0x614c62;})[_0x3ec1('0x22')](respondWithResult(_0xb30da2,null))[_0x3ec1('0x44')](handleError(_0xb30da2,null));};exports['removeBlackLists']=function(_0x530cf9,_0x3c7949,_0xefa8da){return db[_0x3ec1('0x2d')][_0x3ec1('0x48')]({'where':{'id':_0x530cf9[_0x3ec1('0x45')]['id']}})['then'](handleEntityNotFound(_0x3c7949,null))[_0x3ec1('0x22')](function(_0x3fdbdb){if(_0x3fdbdb){return _0x3fdbdb['removeBlackLists'](_0x530cf9['query'][_0x3ec1('0x63')]);}})['then'](function(_0x258d90){if(_0x258d90){return db[_0x3ec1('0x5f')][_0x3ec1('0x23')]({'where':{'ListId':_0x530cf9['query'][_0x3ec1('0x63')],'CampaignId':_0x530cf9['params']['id']}})[_0x3ec1('0x22')](function(){return _0x258d90;});}})['then'](respondWithStatusCode(_0x3c7949,null))[_0x3ec1('0x44')](handleError(_0x3c7949,null));};
\ No newline at end of file
index 1afce02..438bace 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['exports','define','Campaign','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./campaign.attributes'];(function(_0x2b9b7f,_0x4d47df){var _0x4ed19a=function(_0x72b5ff){while(--_0x72b5ff){_0x2b9b7f['push'](_0x2b9b7f['shift']());}};_0x4ed19a(++_0x4d47df);}(_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 logger=require(_0x7995('0x2'))(_0x7995('0x3'));var moment=require('moment');var BPromise=require(_0x7995('0x4'));var rp=require(_0x7995('0x5'));var fs=require('fs');var path=require(_0x7995('0x6'));var rimraf=require(_0x7995('0x7'));var config=require('../../config/environment');var attributes=require(_0x7995('0x8'));module[_0x7995('0x9')]=function(_0x137b6b,_0x219534){return _0x137b6b[_0x7995('0xa')](_0x7995('0xb'),attributes,{'tableName':'campaigns','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9957=['exports','define','Campaign','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./campaign.attributes'];(function(_0x2db12b,_0x30ab1d){var _0x20990b=function(_0x589477){while(--_0x589477){_0x2db12b['push'](_0x2db12b['shift']());}};_0x20990b(++_0x30ab1d);}(_0x9957,0x93));var _0x7995=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x9957[_0x5b644e];return _0x49c6bf;};'use strict';var _=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var logger=require(_0x7995('0x2'))(_0x7995('0x3'));var moment=require('moment');var BPromise=require(_0x7995('0x4'));var rp=require(_0x7995('0x5'));var fs=require('fs');var path=require(_0x7995('0x6'));var rimraf=require(_0x7995('0x7'));var config=require('../../config/environment');var attributes=require(_0x7995('0x8'));module[_0x7995('0x9')]=function(_0x137b6b,_0x219534){return _0x137b6b[_0x7995('0xa')](_0x7995('0xb'),attributes,{'tableName':'campaigns','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index edc43c1..38b2758 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9755=['then','Campaign,\x20%s,\x20%s','Campaign,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','catch','GetCampaign','options','raw','where','attributes','limit','include','map','model','debug','lodash','moment','bluebird','randomstring','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request'];(function(_0x271894,_0x47b4b7){var _0x2cbeb1=function(_0x3ffc47){while(--_0x3ffc47){_0x271894['push'](_0x271894['shift']());}};_0x2cbeb1(++_0x47b4b7);}(_0x9755,0x1c6));var _0x5975=function(_0x432169,_0x7ffbe9){_0x432169=_0x432169-0x0;var _0x28e745=_0x9755[_0x432169];return _0x28e745;};'use strict';var _=require(_0x5975('0x0'));var util=require('util');var moment=require(_0x5975('0x1'));var BPromise=require(_0x5975('0x2'));var rs=require(_0x5975('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x5975('0x4'))(_0x5975('0x5'));var config=require(_0x5975('0x6'));var jayson=require(_0x5975('0x7'));var client=jayson[_0x5975('0x8')][_0x5975('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x365ac3,_0x56fc2e,_0x48d8b5){return new BPromise(function(_0x2209f1,_0x55e597){return client[_0x5975('0xa')](_0x365ac3,_0x48d8b5)[_0x5975('0xb')](function(_0x15ebfd){logger['info'](_0x5975('0xc'),_0x56fc2e,'request\x20sent');logger['debug'](_0x5975('0xd'),_0x56fc2e,_0x5975('0xe'),JSON[_0x5975('0xf')](_0x15ebfd));if(_0x15ebfd['error']){if(_0x15ebfd[_0x5975('0x10')][_0x5975('0x11')]===0x1f4){logger[_0x5975('0x10')]('Campaign,\x20%s,\x20%s',_0x56fc2e,_0x15ebfd[_0x5975('0x10')][_0x5975('0x12')]);return _0x55e597(_0x15ebfd[_0x5975('0x10')][_0x5975('0x12')]);}logger['error']('Campaign,\x20%s,\x20%s',_0x56fc2e,_0x15ebfd[_0x5975('0x10')][_0x5975('0x12')]);return _0x2209f1(_0x15ebfd[_0x5975('0x10')]['message']);}else{logger[_0x5975('0x13')]('Campaign,\x20%s,\x20%s',_0x56fc2e,_0x5975('0xe'));_0x2209f1(_0x15ebfd['result'][_0x5975('0x12')]);}})[_0x5975('0x14')](function(_0x16706c){logger[_0x5975('0x10')](_0x5975('0xc'),_0x56fc2e,_0x16706c);_0x55e597(_0x16706c);});});}exports[_0x5975('0x15')]=function(_0x203829){var _0x5e248b=this;return new Promise(function(_0x4e6806,_0x5a7071){return db['Campaign']['findAll']({'raw':_0x203829[_0x5975('0x16')]?_0x203829['options'][_0x5975('0x17')]===undefined?!![]:![]:!![],'where':_0x203829[_0x5975('0x16')]?_0x203829[_0x5975('0x16')][_0x5975('0x18')]||null:null,'attributes':_0x203829['options']?_0x203829[_0x5975('0x16')][_0x5975('0x19')]||null:null,'limit':_0x203829[_0x5975('0x16')]?_0x203829['options'][_0x5975('0x1a')]||null:null,'include':_0x203829[_0x5975('0x16')]?_0x203829[_0x5975('0x16')][_0x5975('0x1b')]?_['map'](_0x203829['options'][_0x5975('0x1b')],function(_0x2da6c8){return{'model':db[_0x2da6c8['model']],'as':_0x2da6c8['as'],'attributes':_0x2da6c8[_0x5975('0x19')],'include':_0x2da6c8['include']?_[_0x5975('0x1c')](_0x2da6c8['include'],function(_0x5e8b5a){return{'model':db[_0x5e8b5a[_0x5975('0x1d')]],'as':_0x5e8b5a['as'],'attributes':_0x5e8b5a['attributes'],'include':_0x5e8b5a[_0x5975('0x1b')]?_[_0x5975('0x1c')](_0x5e8b5a['include'],function(_0x54f304){return{'model':db[_0x54f304[_0x5975('0x1d')]],'as':_0x54f304['as'],'attributes':_0x54f304[_0x5975('0x19')]};}):[]};}):[]};}):[]:[]})[_0x5975('0xb')](function(_0x154e1a){logger[_0x5975('0x13')](_0x5975('0x15'),_0x203829);logger[_0x5975('0x1e')](_0x5975('0x15'),_0x203829,JSON[_0x5975('0xf')](_0x154e1a));_0x4e6806(_0x154e1a);})['catch'](function(_0x37db84){logger[_0x5975('0x10')](_0x5975('0x15'),_0x37db84['message'],_0x203829);_0x5a7071(_0x5e248b[_0x5975('0x10')](0x1f4,_0x37db84['message']));});});};
\ No newline at end of file
+var _0x3402=['error','message','result','catch','GetCampaign','Campaign','findAll','options','where','limit','include','map','model','attributes','debug','stringify','lodash','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','then','info','Campaign,\x20%s,\x20%s','request\x20sent','Campaign,\x20%s,\x20%s,\x20%s'];(function(_0x5a27d0,_0x47f0f3){var _0x518bfd=function(_0x83034f){while(--_0x83034f){_0x5a27d0['push'](_0x5a27d0['shift']());}};_0x518bfd(++_0x47f0f3);}(_0x3402,0x1f0));var _0x2340=function(_0x4d38ea,_0x18c52b){_0x4d38ea=_0x4d38ea-0x0;var _0x3a5cd8=_0x3402[_0x4d38ea];return _0x3a5cd8;};'use strict';var _=require(_0x2340('0x0'));var util=require('util');var moment=require(_0x2340('0x1'));var BPromise=require(_0x2340('0x2'));var rs=require(_0x2340('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x2340('0x4'));var logger=require(_0x2340('0x5'))(_0x2340('0x6'));var config=require(_0x2340('0x7'));var jayson=require(_0x2340('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0xc37850,_0x1deef4,_0x16174f){return new BPromise(function(_0x225250,_0x152e52){return client['request'](_0xc37850,_0x16174f)[_0x2340('0x9')](function(_0x1da381){logger[_0x2340('0xa')](_0x2340('0xb'),_0x1deef4,_0x2340('0xc'));logger['debug'](_0x2340('0xd'),_0x1deef4,_0x2340('0xc'),JSON['stringify'](_0x1da381));if(_0x1da381['error']){if(_0x1da381[_0x2340('0xe')]['code']===0x1f4){logger[_0x2340('0xe')]('Campaign,\x20%s,\x20%s',_0x1deef4,_0x1da381[_0x2340('0xe')][_0x2340('0xf')]);return _0x152e52(_0x1da381[_0x2340('0xe')][_0x2340('0xf')]);}logger[_0x2340('0xe')](_0x2340('0xb'),_0x1deef4,_0x1da381[_0x2340('0xe')]['message']);return _0x225250(_0x1da381[_0x2340('0xe')][_0x2340('0xf')]);}else{logger[_0x2340('0xa')]('Campaign,\x20%s,\x20%s',_0x1deef4,_0x2340('0xc'));_0x225250(_0x1da381[_0x2340('0x10')][_0x2340('0xf')]);}})[_0x2340('0x11')](function(_0x4dcab6){logger[_0x2340('0xe')](_0x2340('0xb'),_0x1deef4,_0x4dcab6);_0x152e52(_0x4dcab6);});});}exports[_0x2340('0x12')]=function(_0x9723dd){var _0xd96877=this;return new Promise(function(_0x51524b,_0x4fde34){return db[_0x2340('0x13')][_0x2340('0x14')]({'raw':_0x9723dd[_0x2340('0x15')]?_0x9723dd['options']['raw']===undefined?!![]:![]:!![],'where':_0x9723dd[_0x2340('0x15')]?_0x9723dd[_0x2340('0x15')][_0x2340('0x16')]||null:null,'attributes':_0x9723dd[_0x2340('0x15')]?_0x9723dd['options']['attributes']||null:null,'limit':_0x9723dd[_0x2340('0x15')]?_0x9723dd['options'][_0x2340('0x17')]||null:null,'include':_0x9723dd[_0x2340('0x15')]?_0x9723dd[_0x2340('0x15')][_0x2340('0x18')]?_[_0x2340('0x19')](_0x9723dd[_0x2340('0x15')][_0x2340('0x18')],function(_0x130944){return{'model':db[_0x130944['model']],'as':_0x130944['as'],'attributes':_0x130944['attributes'],'include':_0x130944[_0x2340('0x18')]?_[_0x2340('0x19')](_0x130944[_0x2340('0x18')],function(_0x44680e){return{'model':db[_0x44680e[_0x2340('0x1a')]],'as':_0x44680e['as'],'attributes':_0x44680e[_0x2340('0x1b')],'include':_0x44680e[_0x2340('0x18')]?_['map'](_0x44680e[_0x2340('0x18')],function(_0x46d5cb){return{'model':db[_0x46d5cb[_0x2340('0x1a')]],'as':_0x46d5cb['as'],'attributes':_0x46d5cb[_0x2340('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x2340('0x9')](function(_0x14b89d){logger[_0x2340('0xa')](_0x2340('0x12'),_0x9723dd);logger[_0x2340('0x1c')](_0x2340('0x12'),_0x9723dd,JSON[_0x2340('0x1d')](_0x14b89d));_0x51524b(_0x14b89d);})['catch'](function(_0x336ffe){logger[_0x2340('0xe')]('GetCampaign',_0x336ffe[_0x2340('0xf')],_0x9723dd);_0x4fde34(_0xd96877[_0x2340('0xe')](0x1f4,_0x336ffe[_0x2340('0xf')]));});});};
\ No newline at end of file
index 2a8ddb1..3af877d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xefd6=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','/:id/hoppers','getHoppers','getHopperHistories','/:id/hopper_finals','/:id/hopper_black','getHopperBlacks','/:id/lists','getLists','/:id/blacklists','getBlackLists','post','addLists','addBlackLists','put','update','delete','destroy','removeBlackLists','exports','multer','util','express'];(function(_0x399d8a,_0x46e4ff){var _0x42a5d3=function(_0x4ca21a){while(--_0x4ca21a){_0x399d8a['push'](_0x399d8a['shift']());}};_0x42a5d3(++_0x46e4ff);}(_0xefd6,0x171));var _0x6efd=function(_0x463d2f,_0x4e33b2){_0x463d2f=_0x463d2f-0x0;var _0x50bfb7=_0xefd6[_0x463d2f];return _0x50bfb7;};'use strict';var multer=require(_0x6efd('0x0'));var util=require(_0x6efd('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x6efd('0x2'));var router=express[_0x6efd('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x6efd('0x4'));var interaction=require(_0x6efd('0x5'));var config=require(_0x6efd('0x6'));var controller=require('./campaign.controller');router[_0x6efd('0x7')]('/',auth[_0x6efd('0x8')](),controller[_0x6efd('0x9')]);router[_0x6efd('0x7')](_0x6efd('0xa'),auth[_0x6efd('0x8')](),controller[_0x6efd('0xb')]);router[_0x6efd('0x7')](_0x6efd('0xc'),auth['isAuthenticated'](),controller[_0x6efd('0xd')]);router[_0x6efd('0x7')]('/:id/hopper_histories',auth[_0x6efd('0x8')](),controller[_0x6efd('0xe')]);router['get'](_0x6efd('0xf'),auth['isAuthenticated'](),controller['getHopperFinals']);router[_0x6efd('0x7')](_0x6efd('0x10'),auth[_0x6efd('0x8')](),controller[_0x6efd('0x11')]);router['get'](_0x6efd('0x12'),auth[_0x6efd('0x8')](),controller[_0x6efd('0x13')]);router['get'](_0x6efd('0x14'),auth[_0x6efd('0x8')](),controller[_0x6efd('0x15')]);router[_0x6efd('0x16')]('/',auth[_0x6efd('0x8')](),controller['create']);router['post']('/:id/clone',auth[_0x6efd('0x8')](),controller['clone']);router[_0x6efd('0x16')](_0x6efd('0x12'),auth[_0x6efd('0x8')](),controller[_0x6efd('0x17')]);router[_0x6efd('0x16')](_0x6efd('0x14'),auth[_0x6efd('0x8')](),controller[_0x6efd('0x18')]);router[_0x6efd('0x19')](_0x6efd('0xa'),auth[_0x6efd('0x8')](),controller[_0x6efd('0x1a')]);router[_0x6efd('0x1b')]('/:id',auth[_0x6efd('0x8')](),controller[_0x6efd('0x1c')]);router[_0x6efd('0x1b')](_0x6efd('0x12'),auth['isAuthenticated'](),controller['removeLists']);router[_0x6efd('0x1b')]('/:id/blacklists',auth['isAuthenticated'](),controller[_0x6efd('0x1d')]);module[_0x6efd('0x1e')]=router;
\ No newline at end of file
+var _0x0855=['/:id/hopper_black','getHopperBlacks','/:id/lists','/:id/blacklists','getBlackLists','post','clone','addLists','addBlackLists','put','delete','destroy','removeBlackLists','exports','multer','util','connect-timeout','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','show','/:id/hoppers','getHoppers','getHopperHistories','/:id/hopper_finals','getHopperFinals'];(function(_0x453b73,_0x585679){var _0x5daca6=function(_0x5204c9){while(--_0x5204c9){_0x453b73['push'](_0x453b73['shift']());}};_0x5daca6(++_0x585679);}(_0x0855,0x1de));var _0x5085=function(_0x1571c7,_0x878a1e){_0x1571c7=_0x1571c7-0x0;var _0x44b12b=_0x0855[_0x1571c7];return _0x44b12b;};'use strict';var multer=require(_0x5085('0x0'));var util=require(_0x5085('0x1'));var path=require('path');var timeout=require(_0x5085('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x5085('0x3'));var auth=require(_0x5085('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x5085('0x5'));var controller=require('./campaign.controller');router[_0x5085('0x6')]('/',auth[_0x5085('0x7')](),controller[_0x5085('0x8')]);router[_0x5085('0x6')]('/:id',auth[_0x5085('0x7')](),controller[_0x5085('0x9')]);router[_0x5085('0x6')](_0x5085('0xa'),auth[_0x5085('0x7')](),controller[_0x5085('0xb')]);router[_0x5085('0x6')]('/:id/hopper_histories',auth[_0x5085('0x7')](),controller[_0x5085('0xc')]);router[_0x5085('0x6')](_0x5085('0xd'),auth[_0x5085('0x7')](),controller[_0x5085('0xe')]);router['get'](_0x5085('0xf'),auth[_0x5085('0x7')](),controller[_0x5085('0x10')]);router[_0x5085('0x6')](_0x5085('0x11'),auth['isAuthenticated'](),controller['getLists']);router[_0x5085('0x6')](_0x5085('0x12'),auth[_0x5085('0x7')](),controller[_0x5085('0x13')]);router[_0x5085('0x14')]('/',auth[_0x5085('0x7')](),controller['create']);router[_0x5085('0x14')]('/:id/clone',auth[_0x5085('0x7')](),controller[_0x5085('0x15')]);router['post'](_0x5085('0x11'),auth[_0x5085('0x7')](),controller[_0x5085('0x16')]);router[_0x5085('0x14')](_0x5085('0x12'),auth[_0x5085('0x7')](),controller[_0x5085('0x17')]);router[_0x5085('0x18')]('/:id',auth[_0x5085('0x7')](),controller['update']);router[_0x5085('0x19')]('/:id',auth['isAuthenticated'](),controller[_0x5085('0x1a')]);router[_0x5085('0x19')](_0x5085('0x11'),auth[_0x5085('0x7')](),controller['removeLists']);router[_0x5085('0x19')]('/:id/blacklists',auth[_0x5085('0x7')](),controller[_0x5085('0x1b')]);module[_0x5085('0x1c')]=router;
\ No newline at end of file
index a546b90..f41df52 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbe90=['STRING','TEXT','VIRTUAL','getDataValue','key','sequelize','exports'];(function(_0x4b966b,_0x463b51){var _0x86b205=function(_0x292ef9){while(--_0x292ef9){_0x4b966b['push'](_0x4b966b['shift']());}};_0x86b205(++_0x463b51);}(_0xbe90,0xfa));var _0x0be9=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xbe90[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x0be9('0x0'));module[_0x0be9('0x1')]={'key':{'type':Sequelize[_0x0be9('0x2')],'allowNull':![]},'value':{'type':Sequelize[_0x0be9('0x3')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'name':{'type':Sequelize[_0x0be9('0x4')],'get':function(){return this[_0x0be9('0x5')](_0x0be9('0x6'));}}};
\ No newline at end of file
+var _0xe9f4=['getDataValue','key','sequelize','VIRTUAL'];(function(_0x563a42,_0x5e7710){var _0x22e69c=function(_0x1eda56){while(--_0x1eda56){_0x563a42['push'](_0x563a42['shift']());}};_0x22e69c(++_0x5e7710);}(_0xe9f4,0xba));var _0x4e9f=function(_0x20360,_0x48d518){_0x20360=_0x20360-0x0;var _0x368a24=_0xe9f4[_0x20360];return _0x368a24;};'use strict';var Sequelize=require(_0x4e9f('0x0'));module['exports']={'key':{'type':Sequelize['STRING'],'allowNull':![]},'value':{'type':Sequelize['TEXT'],'allowNull':![]},'description':{'type':Sequelize['STRING']},'name':{'type':Sequelize[_0x4e9f('0x1')],'get':function(){return this[_0x4e9f('0x2')](_0x4e9f('0x3'));}}};
\ No newline at end of file
index 841d95a..ce4c6a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e16=['key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','filter','merge','CannedAnswer','includeAll','include','findAll','rows','catch','show','params','options','find','body','destroy','create','MailAccountId','SmsAccountId','OpenchannelAccountId','ChatWebsiteId','Sequelize','ValidationError','The\x20inserted\x20key\x20already\x20exists.','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','request-promise','moment','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','get','CannedAnswers','UserProfileResource','stack','name','send','index','map','rawAttributes','fieldName','type'];(function(_0x59e725,_0x7d39bb){var _0x43f28f=function(_0x16aa26){while(--_0x16aa26){_0x59e725['push'](_0x59e725['shift']());}};_0x43f28f(++_0x7d39bb);}(_0x6e16,0x197));var _0x66e1=function(_0x1a32dc,_0x4381d2){_0x1a32dc=_0x1a32dc-0x0;var _0x42118a=_0x6e16[_0x1a32dc];return _0x42118a;};'use strict';var emlformat=require(_0x66e1('0x0'));var rimraf=require(_0x66e1('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x66e1('0x2'));var moment=require(_0x66e1('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x66e1('0x4'));var path=require(_0x66e1('0x5'));var sox=require(_0x66e1('0x6'));var csv=require(_0x66e1('0x7'));var ejs=require(_0x66e1('0x8'));var fs=require('fs');var fs_extra=require(_0x66e1('0x9'));var _=require(_0x66e1('0xa'));var squel=require(_0x66e1('0xb'));var crypto=require('crypto');var jsforce=require(_0x66e1('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x66e1('0x7'));var querystring=require(_0x66e1('0xd'));var Papa=require(_0x66e1('0xe'));var Redis=require(_0x66e1('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x66e1('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x66e1('0x11'))(_0x66e1('0x12'));var utils=require(_0x66e1('0x13'));var config=require(_0x66e1('0x14'));var licenseUtil=require(_0x66e1('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4bf9a4,_0x42de16){_0x42de16=_0x42de16||0xcc;return function(_0x35e1f1){if(_0x35e1f1){return _0x4bf9a4[_0x66e1('0x16')](_0x42de16);}return _0x4bf9a4[_0x66e1('0x17')](_0x42de16)[_0x66e1('0x18')]();};}function respondWithResult(_0x4636d5,_0x19af07){_0x19af07=_0x19af07||0xc8;return function(_0x8e36f8){if(_0x8e36f8){return _0x4636d5['status'](_0x19af07)[_0x66e1('0x19')](_0x8e36f8);}};}function respondWithFilteredResult(_0x1cdecd,_0x494817){return function(_0x14b505){if(_0x14b505){var _0x578844=typeof _0x494817[_0x66e1('0x1a')]===_0x66e1('0x1b')&&typeof _0x494817[_0x66e1('0x1c')]===_0x66e1('0x1b');var _0x5eff1f=_0x14b505[_0x66e1('0x1d')];var _0x53d710=_0x578844?0x0:_0x494817[_0x66e1('0x1a')];var _0x2881b6=_0x578844?_0x14b505[_0x66e1('0x1d')]:_0x494817[_0x66e1('0x1a')]+_0x494817[_0x66e1('0x1c')];var _0x2fc264;if(_0x2881b6>=_0x5eff1f){_0x2881b6=_0x5eff1f;_0x2fc264=0xc8;}else{_0x2fc264=0xce;}_0x1cdecd[_0x66e1('0x17')](_0x2fc264);return _0x1cdecd[_0x66e1('0x1e')](_0x66e1('0x1f'),_0x53d710+'-'+_0x2881b6+'/'+_0x5eff1f)[_0x66e1('0x19')](_0x14b505);}return null;};}function patchUpdates(_0x1b7dfc){return function(_0x463079){try{jsonpatch[_0x66e1('0x20')](_0x463079,_0x1b7dfc,!![]);}catch(_0x92d904){return BPromise[_0x66e1('0x21')](_0x92d904);}return _0x463079[_0x66e1('0x22')]();};}function saveUpdates(_0xca969,_0x1c9c16){return function(_0x2245ac){if(_0x2245ac){return _0x2245ac[_0x66e1('0x23')](_0xca969)[_0x66e1('0x24')](function(_0x19517a){return _0x19517a;});}return null;};}function removeEntity(_0x309b7c,_0x1f394c){return function(_0x38f892){if(_0x38f892){return _0x38f892['destroy']()['then'](function(){var _0x306599=_0x38f892[_0x66e1('0x25')]({'plain':!![]});var _0x19ead2=_0x66e1('0x26');return db[_0x66e1('0x27')]['destroy']({'where':{'type':_0x19ead2,'resourceId':_0x306599['id']}})[_0x66e1('0x24')](function(){return _0x38f892;});})[_0x66e1('0x24')](function(){_0x309b7c['status'](0xcc)[_0x66e1('0x18')]();});}};}function handleEntityNotFound(_0x3e962b,_0xb9ced5){return function(_0x3333c4){if(!_0x3333c4){_0x3e962b['sendStatus'](0x194);}return _0x3333c4;};}function handleError(_0x24d75b,_0x5046e3){_0x5046e3=_0x5046e3||0x1f4;return function(_0xc3e2f9){logger['error'](_0xc3e2f9[_0x66e1('0x28')]);if(_0xc3e2f9[_0x66e1('0x29')]){delete _0xc3e2f9['name'];}_0x24d75b[_0x66e1('0x17')](_0x5046e3)[_0x66e1('0x2a')](_0xc3e2f9);};}exports[_0x66e1('0x2b')]=function(_0x58be9e,_0x398a98){var _0xd10865={},_0x4ae0a5={},_0x8ec585={'count':0x0,'rows':[]};var _0x1576eb=_[_0x66e1('0x2c')](db['CannedAnswer'][_0x66e1('0x2d')],function(_0x1ae265){return{'name':_0x1ae265[_0x66e1('0x2e')],'type':_0x1ae265[_0x66e1('0x2f')][_0x66e1('0x30')]};});_0x4ae0a5[_0x66e1('0x31')]=_['map'](_0x1576eb,_0x66e1('0x29'));_0x4ae0a5[_0x66e1('0x32')]=_[_0x66e1('0x33')](_0x58be9e['query']);_0x4ae0a5[_0x66e1('0x34')]=_[_0x66e1('0x35')](_0x4ae0a5[_0x66e1('0x31')],_0x4ae0a5[_0x66e1('0x32')]);_0xd10865[_0x66e1('0x36')]=_[_0x66e1('0x35')](_0x4ae0a5[_0x66e1('0x31')],qs[_0x66e1('0x37')](_0x58be9e[_0x66e1('0x32')][_0x66e1('0x37')]));_0xd10865[_0x66e1('0x36')]=_0xd10865['attributes']['length']?_0xd10865[_0x66e1('0x36')]:_0x4ae0a5[_0x66e1('0x31')];if(!_0x58be9e[_0x66e1('0x32')][_0x66e1('0x38')](_0x66e1('0x39'))){_0xd10865[_0x66e1('0x1c')]=qs[_0x66e1('0x1c')](_0x58be9e[_0x66e1('0x32')][_0x66e1('0x1c')]);_0xd10865[_0x66e1('0x1a')]=qs[_0x66e1('0x1a')](_0x58be9e[_0x66e1('0x32')][_0x66e1('0x1a')]);}_0xd10865['order']=qs[_0x66e1('0x3a')](_0x58be9e[_0x66e1('0x32')][_0x66e1('0x3a')]);_0xd10865[_0x66e1('0x3b')]=qs['filters'](_[_0x66e1('0x3c')](_0x58be9e[_0x66e1('0x32')],_0x4ae0a5[_0x66e1('0x34')]),_0x1576eb);if(_0x58be9e['query'][_0x66e1('0x3d')]){_0xd10865[_0x66e1('0x3b')]=_[_0x66e1('0x3e')](_0xd10865[_0x66e1('0x3b')],{'$or':[{'key':{'$like':'%'+_0x58be9e[_0x66e1('0x32')][_0x66e1('0x3d')]+'%'}},{'value':{'$like':'%'+_0x58be9e[_0x66e1('0x32')]['filter']+'%'}}]});}_0xd10865=_[_0x66e1('0x3e')]({},_0xd10865,_0x58be9e['options']);var _0x5b00e3={'where':_0xd10865[_0x66e1('0x3b')]};return db[_0x66e1('0x3f')][_0x66e1('0x1d')](_0x5b00e3)['then'](function(_0x495f3c){_0x8ec585[_0x66e1('0x1d')]=_0x495f3c;if(_0x58be9e[_0x66e1('0x32')][_0x66e1('0x40')]){_0xd10865[_0x66e1('0x41')]=[{'all':!![]}];}return db[_0x66e1('0x3f')][_0x66e1('0x42')](_0xd10865);})[_0x66e1('0x24')](function(_0x2ca1cb){_0x8ec585[_0x66e1('0x43')]=_0x2ca1cb;return _0x8ec585;})[_0x66e1('0x24')](respondWithFilteredResult(_0x398a98,_0xd10865))[_0x66e1('0x44')](handleError(_0x398a98,null));};exports[_0x66e1('0x45')]=function(_0x5186d1,_0x2c9c17){var _0x353b6a={'raw':!![],'where':{'id':_0x5186d1[_0x66e1('0x46')]['id']}},_0x4c5fd7={};_0x4c5fd7[_0x66e1('0x31')]=_['keys'](db['CannedAnswer'][_0x66e1('0x2d')]);_0x4c5fd7['query']=_[_0x66e1('0x33')](_0x5186d1[_0x66e1('0x32')]);_0x4c5fd7[_0x66e1('0x34')]=_[_0x66e1('0x35')](_0x4c5fd7[_0x66e1('0x31')],_0x4c5fd7[_0x66e1('0x32')]);_0x353b6a[_0x66e1('0x36')]=_[_0x66e1('0x35')](_0x4c5fd7['model'],qs[_0x66e1('0x37')](_0x5186d1['query'][_0x66e1('0x37')]));_0x353b6a[_0x66e1('0x36')]=_0x353b6a[_0x66e1('0x36')]['length']?_0x353b6a['attributes']:_0x4c5fd7[_0x66e1('0x31')];if(_0x5186d1['query']['includeAll']){_0x353b6a[_0x66e1('0x41')]=[{'all':!![]}];}_0x353b6a=_[_0x66e1('0x3e')]({},_0x353b6a,_0x5186d1[_0x66e1('0x47')]);return db['CannedAnswer'][_0x66e1('0x48')](_0x353b6a)[_0x66e1('0x24')](handleEntityNotFound(_0x2c9c17,null))[_0x66e1('0x24')](respondWithResult(_0x2c9c17,null))[_0x66e1('0x44')](handleError(_0x2c9c17,null));};exports[_0x66e1('0x23')]=function(_0x346c25,_0x2875f8){if(_0x346c25['body']['id']){delete _0x346c25[_0x66e1('0x49')]['id'];}return db[_0x66e1('0x3f')][_0x66e1('0x48')]({'where':{'id':_0x346c25[_0x66e1('0x46')]['id']}})[_0x66e1('0x24')](handleEntityNotFound(_0x2875f8,null))['then'](saveUpdates(_0x346c25[_0x66e1('0x49')],null))['then'](respondWithResult(_0x2875f8,null))[_0x66e1('0x44')](handleError(_0x2875f8,null));};exports[_0x66e1('0x4a')]=function(_0x1be7f4,_0x1036a8){return db[_0x66e1('0x3f')][_0x66e1('0x48')]({'where':{'id':_0x1be7f4[_0x66e1('0x46')]['id']}})['then'](handleEntityNotFound(_0x1036a8,null))['then'](removeEntity(_0x1036a8,null))['catch'](handleError(_0x1036a8,null));};exports[_0x66e1('0x4b')]=function(_0x5852cb,_0x4a99d4){var _0x548acc={'key':_0x5852cb[_0x66e1('0x49')][_0x66e1('0x30')]};if(_0x5852cb[_0x66e1('0x49')][_0x66e1('0x4c')]){_0x548acc[_0x66e1('0x4c')]=_0x5852cb[_0x66e1('0x49')]['MailAccountId'];}else if(_0x5852cb[_0x66e1('0x49')][_0x66e1('0x4d')]){_0x548acc[_0x66e1('0x4d')]=_0x5852cb['body'][_0x66e1('0x4d')];}else if(_0x5852cb[_0x66e1('0x49')]['OpenchannelAccountId']){_0x548acc[_0x66e1('0x4e')]=_0x5852cb[_0x66e1('0x49')][_0x66e1('0x4e')];}else if(_0x5852cb[_0x66e1('0x49')]['ChatWebsiteId']){_0x548acc[_0x66e1('0x4f')]=_0x5852cb[_0x66e1('0x49')][_0x66e1('0x4f')];}return db[_0x66e1('0x3f')]['find']({'where':_0x548acc})[_0x66e1('0x24')](function(_0x17d3af){if(_0x17d3af){throw new db[(_0x66e1('0x50'))][(_0x66e1('0x51'))](_0x66e1('0x52'));}return db['CannedAnswer'][_0x66e1('0x4b')](_0x5852cb[_0x66e1('0x49')]);})['then'](function(_0xb12689){var _0x204863=_0x5852cb[_0x66e1('0x53')]['get']({'plain':!![]});if(!_0x204863)throw new Error(_0x66e1('0x54'));if(_0x204863[_0x66e1('0x55')]===_0x66e1('0x53')){var _0x1f08f7=_0xb12689[_0x66e1('0x25')]({'plain':!![]});return db[_0x66e1('0x56')][_0x66e1('0x48')]({'where':{'name':'CannedAnswers','userProfileId':_0x204863[_0x66e1('0x57')]},'raw':!![]})[_0x66e1('0x24')](function(_0x4677e8){if(_0x4677e8&&_0x4677e8[_0x66e1('0x58')]===0x0){return db[_0x66e1('0x27')][_0x66e1('0x4b')]({'name':_0x1f08f7['name'],'resourceId':_0x1f08f7['id'],'type':_0x4677e8[_0x66e1('0x29')],'sectionId':_0x4677e8['id']},{})[_0x66e1('0x24')](function(){return _0xb12689;});}else{return _0xb12689;}})['catch'](function(_0x1499b0){logger[_0x66e1('0x59')](_0x66e1('0x5a'),_0x1499b0);throw _0x1499b0;});}return _0xb12689;})[_0x66e1('0x24')](respondWithResult(_0x4a99d4,0xc9))['catch'](handleError(_0x4a99d4,null));};
\ No newline at end of file
+var _0x36d2=['count','set','apply','update','then','destroy','get','UserProfileResource','name','index','map','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filters','merge','filter','options','includeAll','include','CannedAnswer','rows','catch','show','params','body','find','create','MailAccountId','SmsAccountId','OpenchannelAccountId','ChatWebsiteId','Sequelize','The\x20inserted\x20key\x20already\x20exists.','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','CannedAnswers','userProfileId','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','fast-json-patch','request-promise','bluebird','util','path','sox','to-csv','ejs','lodash','squel','jsforce','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','end','json','offset','undefined','limit'];(function(_0x7513d6,_0x469564){var _0x31802f=function(_0x39335d){while(--_0x39335d){_0x7513d6['push'](_0x7513d6['shift']());}};_0x31802f(++_0x469564);}(_0x36d2,0x1ea));var _0x236d=function(_0x484c03,_0x13c1d2){_0x484c03=_0x484c03-0x0;var _0x294127=_0x36d2[_0x484c03];return _0x294127;};'use strict';var emlformat=require(_0x236d('0x0'));var rimraf=require(_0x236d('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x236d('0x2'));var rp=require(_0x236d('0x3'));var moment=require('moment');var BPromise=require(_0x236d('0x4'));var Mustache=require('mustache');var util=require(_0x236d('0x5'));var path=require(_0x236d('0x6'));var sox=require(_0x236d('0x7'));var csv=require(_0x236d('0x8'));var ejs=require(_0x236d('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x236d('0xa'));var squel=require(_0x236d('0xb'));var crypto=require('crypto');var jsforce=require(_0x236d('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x236d('0x8'));var querystring=require(_0x236d('0xd'));var Papa=require(_0x236d('0xe'));var Redis=require(_0x236d('0xf'));var authService=require(_0x236d('0x10'));var qs=require(_0x236d('0x11'));var as=require(_0x236d('0x12'));var hardwareService=require(_0x236d('0x13'));var logger=require('../../config/logger')(_0x236d('0x14'));var utils=require(_0x236d('0x15'));var config=require(_0x236d('0x16'));var licenseUtil=require(_0x236d('0x17'));var db=require(_0x236d('0x18'))['db'];function respondWithStatusCode(_0x156423,_0x201506){_0x201506=_0x201506||0xcc;return function(_0x4e2cff){if(_0x4e2cff){return _0x156423[_0x236d('0x19')](_0x201506);}return _0x156423[_0x236d('0x1a')](_0x201506)[_0x236d('0x1b')]();};}function respondWithResult(_0x51584c,_0x3e3a12){_0x3e3a12=_0x3e3a12||0xc8;return function(_0x5762c6){if(_0x5762c6){return _0x51584c[_0x236d('0x1a')](_0x3e3a12)[_0x236d('0x1c')](_0x5762c6);}};}function respondWithFilteredResult(_0x4760d8,_0x509467){return function(_0x50500a){if(_0x50500a){var _0x14e0d=typeof _0x509467[_0x236d('0x1d')]===_0x236d('0x1e')&&typeof _0x509467[_0x236d('0x1f')]===_0x236d('0x1e');var _0x458b25=_0x50500a[_0x236d('0x20')];var _0x213e40=_0x14e0d?0x0:_0x509467['offset'];var _0x36cb28=_0x14e0d?_0x50500a['count']:_0x509467[_0x236d('0x1d')]+_0x509467[_0x236d('0x1f')];var _0x494055;if(_0x36cb28>=_0x458b25){_0x36cb28=_0x458b25;_0x494055=0xc8;}else{_0x494055=0xce;}_0x4760d8[_0x236d('0x1a')](_0x494055);return _0x4760d8[_0x236d('0x21')]('Content-Range',_0x213e40+'-'+_0x36cb28+'/'+_0x458b25)[_0x236d('0x1c')](_0x50500a);}return null;};}function patchUpdates(_0x1c7a4d){return function(_0x5a8ffb){try{jsonpatch[_0x236d('0x22')](_0x5a8ffb,_0x1c7a4d,!![]);}catch(_0x610993){return BPromise['reject'](_0x610993);}return _0x5a8ffb['save']();};}function saveUpdates(_0x372960,_0x31f2e8){return function(_0x7215ac){if(_0x7215ac){return _0x7215ac[_0x236d('0x23')](_0x372960)[_0x236d('0x24')](function(_0x57fa1b){return _0x57fa1b;});}return null;};}function removeEntity(_0x50ef17,_0x14e103){return function(_0x29d30d){if(_0x29d30d){return _0x29d30d[_0x236d('0x25')]()[_0x236d('0x24')](function(){var _0xe8e9e6=_0x29d30d[_0x236d('0x26')]({'plain':!![]});var _0x1af9f9='CannedAnswers';return db[_0x236d('0x27')][_0x236d('0x25')]({'where':{'type':_0x1af9f9,'resourceId':_0xe8e9e6['id']}})[_0x236d('0x24')](function(){return _0x29d30d;});})[_0x236d('0x24')](function(){_0x50ef17[_0x236d('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3b69ad,_0x1b943b){return function(_0x2845fd){if(!_0x2845fd){_0x3b69ad['sendStatus'](0x194);}return _0x2845fd;};}function handleError(_0x2d6841,_0x5e995b){_0x5e995b=_0x5e995b||0x1f4;return function(_0x2ff655){logger['error'](_0x2ff655['stack']);if(_0x2ff655['name']){delete _0x2ff655[_0x236d('0x28')];}_0x2d6841['status'](_0x5e995b)['send'](_0x2ff655);};}exports[_0x236d('0x29')]=function(_0x502b5b,_0x30212d){var _0x271faf={},_0x3be039={},_0x42b848={'count':0x0,'rows':[]};var _0x1567a2=_[_0x236d('0x2a')](db['CannedAnswer'][_0x236d('0x2b')],function(_0x595c5c){return{'name':_0x595c5c[_0x236d('0x2c')],'type':_0x595c5c[_0x236d('0x2d')][_0x236d('0x2e')]};});_0x3be039[_0x236d('0x2f')]=_['map'](_0x1567a2,_0x236d('0x28'));_0x3be039[_0x236d('0x30')]=_[_0x236d('0x31')](_0x502b5b[_0x236d('0x30')]);_0x3be039['filters']=_[_0x236d('0x32')](_0x3be039['model'],_0x3be039[_0x236d('0x30')]);_0x271faf[_0x236d('0x33')]=_[_0x236d('0x32')](_0x3be039['model'],qs[_0x236d('0x34')](_0x502b5b['query'][_0x236d('0x34')]));_0x271faf['attributes']=_0x271faf['attributes'][_0x236d('0x35')]?_0x271faf[_0x236d('0x33')]:_0x3be039[_0x236d('0x2f')];if(!_0x502b5b[_0x236d('0x30')][_0x236d('0x36')]('nolimit')){_0x271faf[_0x236d('0x1f')]=qs[_0x236d('0x1f')](_0x502b5b[_0x236d('0x30')][_0x236d('0x1f')]);_0x271faf['offset']=qs[_0x236d('0x1d')](_0x502b5b['query'][_0x236d('0x1d')]);}_0x271faf[_0x236d('0x37')]=qs['sort'](_0x502b5b['query'][_0x236d('0x38')]);_0x271faf[_0x236d('0x39')]=qs['filters'](_[_0x236d('0x3a')](_0x502b5b[_0x236d('0x30')],_0x3be039[_0x236d('0x3b')]),_0x1567a2);if(_0x502b5b['query']['filter']){_0x271faf[_0x236d('0x39')]=_[_0x236d('0x3c')](_0x271faf['where'],{'$or':[{'key':{'$like':'%'+_0x502b5b[_0x236d('0x30')][_0x236d('0x3d')]+'%'}},{'value':{'$like':'%'+_0x502b5b[_0x236d('0x30')][_0x236d('0x3d')]+'%'}}]});}_0x271faf=_[_0x236d('0x3c')]({},_0x271faf,_0x502b5b[_0x236d('0x3e')]);var _0x15f12d={'where':_0x271faf[_0x236d('0x39')]};return db['CannedAnswer'][_0x236d('0x20')](_0x15f12d)[_0x236d('0x24')](function(_0x308071){_0x42b848[_0x236d('0x20')]=_0x308071;if(_0x502b5b['query'][_0x236d('0x3f')]){_0x271faf[_0x236d('0x40')]=[{'all':!![]}];}return db[_0x236d('0x41')]['findAll'](_0x271faf);})[_0x236d('0x24')](function(_0x1bd5f6){_0x42b848[_0x236d('0x42')]=_0x1bd5f6;return _0x42b848;})[_0x236d('0x24')](respondWithFilteredResult(_0x30212d,_0x271faf))[_0x236d('0x43')](handleError(_0x30212d,null));};exports[_0x236d('0x44')]=function(_0x50f7c0,_0x32c84e){var _0xc3c5dc={'raw':!![],'where':{'id':_0x50f7c0[_0x236d('0x45')]['id']}},_0x411064={};_0x411064[_0x236d('0x2f')]=_['keys'](db[_0x236d('0x41')][_0x236d('0x2b')]);_0x411064[_0x236d('0x30')]=_['keys'](_0x50f7c0[_0x236d('0x30')]);_0x411064[_0x236d('0x3b')]=_[_0x236d('0x32')](_0x411064[_0x236d('0x2f')],_0x411064['query']);_0xc3c5dc['attributes']=_['intersection'](_0x411064['model'],qs[_0x236d('0x34')](_0x50f7c0['query'][_0x236d('0x34')]));_0xc3c5dc['attributes']=_0xc3c5dc['attributes'][_0x236d('0x35')]?_0xc3c5dc[_0x236d('0x33')]:_0x411064[_0x236d('0x2f')];if(_0x50f7c0[_0x236d('0x30')][_0x236d('0x3f')]){_0xc3c5dc['include']=[{'all':!![]}];}_0xc3c5dc=_[_0x236d('0x3c')]({},_0xc3c5dc,_0x50f7c0[_0x236d('0x3e')]);return db[_0x236d('0x41')]['find'](_0xc3c5dc)[_0x236d('0x24')](handleEntityNotFound(_0x32c84e,null))[_0x236d('0x24')](respondWithResult(_0x32c84e,null))[_0x236d('0x43')](handleError(_0x32c84e,null));};exports[_0x236d('0x23')]=function(_0x1c6a4e,_0x1023b0){if(_0x1c6a4e['body']['id']){delete _0x1c6a4e[_0x236d('0x46')]['id'];}return db['CannedAnswer']['find']({'where':{'id':_0x1c6a4e[_0x236d('0x45')]['id']}})['then'](handleEntityNotFound(_0x1023b0,null))['then'](saveUpdates(_0x1c6a4e['body'],null))[_0x236d('0x24')](respondWithResult(_0x1023b0,null))[_0x236d('0x43')](handleError(_0x1023b0,null));};exports['destroy']=function(_0x3bfff5,_0x2dee89){return db[_0x236d('0x41')][_0x236d('0x47')]({'where':{'id':_0x3bfff5[_0x236d('0x45')]['id']}})[_0x236d('0x24')](handleEntityNotFound(_0x2dee89,null))[_0x236d('0x24')](removeEntity(_0x2dee89,null))[_0x236d('0x43')](handleError(_0x2dee89,null));};exports[_0x236d('0x48')]=function(_0x16c121,_0x30eace){var _0x572c01={'key':_0x16c121['body']['key']};if(_0x16c121[_0x236d('0x46')]['MailAccountId']){_0x572c01['MailAccountId']=_0x16c121[_0x236d('0x46')][_0x236d('0x49')];}else if(_0x16c121['body'][_0x236d('0x4a')]){_0x572c01[_0x236d('0x4a')]=_0x16c121[_0x236d('0x46')][_0x236d('0x4a')];}else if(_0x16c121['body'][_0x236d('0x4b')]){_0x572c01['OpenchannelAccountId']=_0x16c121[_0x236d('0x46')][_0x236d('0x4b')];}else if(_0x16c121['body'][_0x236d('0x4c')]){_0x572c01[_0x236d('0x4c')]=_0x16c121['body'][_0x236d('0x4c')];}return db[_0x236d('0x41')]['find']({'where':_0x572c01})[_0x236d('0x24')](function(_0x7d17e2){if(_0x7d17e2){throw new db[(_0x236d('0x4d'))]['ValidationError'](_0x236d('0x4e'));}return db[_0x236d('0x41')][_0x236d('0x48')](_0x16c121[_0x236d('0x46')]);})[_0x236d('0x24')](function(_0x3c0730){var _0x1ec997=_0x16c121[_0x236d('0x4f')][_0x236d('0x26')]({'plain':!![]});if(!_0x1ec997)throw new Error(_0x236d('0x50'));if(_0x1ec997[_0x236d('0x51')]===_0x236d('0x4f')){var _0x3d783f=_0x3c0730['get']({'plain':!![]});return db[_0x236d('0x52')][_0x236d('0x47')]({'where':{'name':_0x236d('0x53'),'userProfileId':_0x1ec997[_0x236d('0x54')]},'raw':!![]})['then'](function(_0x35ff0a){if(_0x35ff0a&&_0x35ff0a['autoAssociation']===0x0){return db[_0x236d('0x27')][_0x236d('0x48')]({'name':_0x3d783f[_0x236d('0x28')],'resourceId':_0x3d783f['id'],'type':_0x35ff0a[_0x236d('0x28')],'sectionId':_0x35ff0a['id']},{})[_0x236d('0x24')](function(){return _0x3c0730;});}else{return _0x3c0730;}})[_0x236d('0x43')](function(_0x32e47c){logger[_0x236d('0x55')](_0x236d('0x56'),_0x32e47c);throw _0x32e47c;});}return _0x3c0730;})[_0x236d('0x24')](respondWithResult(_0x30eace,0xc9))[_0x236d('0x43')](handleError(_0x30eace,null));};
\ No newline at end of file
index bb2eac4..6adb99f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x04cc=['api','moment','request-promise','path','rimraf','../../config/environment','./cannedAnswer.attributes','exports','define','CannedAnswer','tools_canned_answers','utf8mb4_unicode_ci','lodash','util','../../config/logger'];(function(_0x196169,_0x2b0b0a){var _0x169ec3=function(_0x4dcfa6){while(--_0x4dcfa6){_0x196169['push'](_0x196169['shift']());}};_0x169ec3(++_0x2b0b0a);}(_0x04cc,0x1bf));var _0xc04c=function(_0x1a08cf,_0x186382){_0x1a08cf=_0x1a08cf-0x0;var _0x4174b7=_0x04cc[_0x1a08cf];return _0x4174b7;};'use strict';var _=require(_0xc04c('0x0'));var util=require(_0xc04c('0x1'));var logger=require(_0xc04c('0x2'))(_0xc04c('0x3'));var moment=require(_0xc04c('0x4'));var BPromise=require('bluebird');var rp=require(_0xc04c('0x5'));var fs=require('fs');var path=require(_0xc04c('0x6'));var rimraf=require(_0xc04c('0x7'));var config=require(_0xc04c('0x8'));var attributes=require(_0xc04c('0x9'));module[_0xc04c('0xa')]=function(_0x3ed884,_0x227653){return _0x3ed884[_0xc04c('0xb')](_0xc04c('0xc'),attributes,{'tableName':_0xc04c('0xd'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0xc04c('0xe')});};
\ No newline at end of file
+var _0x9792=['tools_canned_answers','utf8mb4','lodash','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','exports','define','CannedAnswer'];(function(_0x3328b4,_0x403a24){var _0x530143=function(_0x53db2a){while(--_0x53db2a){_0x3328b4['push'](_0x3328b4['shift']());}};_0x530143(++_0x403a24);}(_0x9792,0x9e));var _0x2979=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0x9792[_0x4b369d];return _0x571a98;};'use strict';var _=require(_0x2979('0x0'));var util=require('util');var logger=require(_0x2979('0x1'))(_0x2979('0x2'));var moment=require(_0x2979('0x3'));var BPromise=require(_0x2979('0x4'));var rp=require(_0x2979('0x5'));var fs=require('fs');var path=require(_0x2979('0x6'));var rimraf=require('rimraf');var config=require(_0x2979('0x7'));var attributes=require('./cannedAnswer.attributes');module[_0x2979('0x8')]=function(_0x128b5a,_0x1feee8){return _0x128b5a[_0x2979('0x9')](_0x2979('0xa'),attributes,{'tableName':_0x2979('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x2979('0xc'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 52d1119..69448fc 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(_0x18156a,_0x4b7f18){var _0x394240=function(_0x173e6d){while(--_0x173e6d){_0x18156a['push'](_0x18156a['shift']());}};_0x394240(++_0x4b7f18);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5b561d,_0x422b7c){_0x5b561d=_0x5b561d-0x0;var _0x431060=_0xa9e0[_0x5b561d];return _0x431060;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9e('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));var config=require(_0x0a9e('0x7'));var jayson=require(_0x0a9e('0x8'));var client=jayson['client'][_0x0a9e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x441e3a,_0x2cc193,_0x5f41ea){return new BPromise(function(_0x503809,_0xe42b77){return client['request'](_0x441e3a,_0x5f41ea)['then'](function(_0x39753a){logger[_0x0a9e('0xa')](_0x0a9e('0xb'),_0x2cc193,_0x0a9e('0xc'));logger[_0x0a9e('0xd')](_0x0a9e('0xe'),_0x2cc193,'request\x20sent',JSON['stringify'](_0x39753a));if(_0x39753a['error']){if(_0x39753a['error'][_0x0a9e('0xf')]===0x1f4){logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0xe42b77(_0x39753a[_0x0a9e('0x10')]['message']);}logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0x503809(_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);}else{logger['info'](_0x0a9e('0xb'),_0x2cc193,'request\x20sent');_0x503809(_0x39753a[_0x0a9e('0x12')]['message']);}})[_0x0a9e('0x13')](function(_0x12066b){logger['error'](_0x0a9e('0xb'),_0x2cc193,_0x12066b);_0xe42b77(_0x12066b);});});}
\ 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(_0x2f4535,_0x49b932){var _0x49a7b2=function(_0x29716b){while(--_0x29716b){_0x2f4535['push'](_0x2f4535['shift']());}};_0x49a7b2(++_0x49b932);}(_0xa9e0,0x123));var _0x0a9e=function(_0x297fd3,_0x115406){_0x297fd3=_0x297fd3-0x0;var _0x2af381=_0xa9e0[_0x297fd3];return _0x2af381;};'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 8f040d0..6988766 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9b13=['index','post','create','update','delete','/:id','multer','util','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','get','isAuthenticated'];(function(_0x1b4c68,_0x47e505){var _0x3642ba=function(_0x67cfbc){while(--_0x67cfbc){_0x1b4c68['push'](_0x1b4c68['shift']());}};_0x3642ba(++_0x47e505);}(_0x9b13,0x1c8));var _0x39b1=function(_0x59250f,_0x13a768){_0x59250f=_0x59250f-0x0;var _0x48818d=_0x9b13[_0x59250f];return _0x48818d;};'use strict';var multer=require(_0x39b1('0x0'));var util=require(_0x39b1('0x1'));var path=require('path');var timeout=require(_0x39b1('0x2'));var express=require(_0x39b1('0x3'));var router=express[_0x39b1('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x39b1('0x5'));var config=require(_0x39b1('0x6'));var controller=require('./cannedAnswer.controller');router[_0x39b1('0x7')]('/',auth[_0x39b1('0x8')](),controller[_0x39b1('0x9')]);router[_0x39b1('0x7')]('/:id',auth[_0x39b1('0x8')](),controller['show']);router[_0x39b1('0xa')]('/',auth['isAuthenticated'](),controller[_0x39b1('0xb')]);router['put']('/:id',auth[_0x39b1('0x8')](),controller[_0x39b1('0xc')]);router[_0x39b1('0xd')](_0x39b1('0xe'),auth[_0x39b1('0x8')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xe0e3=['./cannedAnswer.controller','get','isAuthenticated','index','show','post','/:id','update','delete','destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xe0e3,0xbf));var _0x3e0e=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xe0e3[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3e0e('0x0'));var timeout=require(_0x3e0e('0x1'));var express=require(_0x3e0e('0x2'));var router=express[_0x3e0e('0x3')]();var fs_extra=require(_0x3e0e('0x4'));var auth=require(_0x3e0e('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x3e0e('0x6'));var controller=require(_0x3e0e('0x7'));router[_0x3e0e('0x8')]('/',auth[_0x3e0e('0x9')](),controller[_0x3e0e('0xa')]);router[_0x3e0e('0x8')]('/:id',auth[_0x3e0e('0x9')](),controller[_0x3e0e('0xb')]);router[_0x3e0e('0xc')]('/',auth['isAuthenticated'](),controller['create']);router['put'](_0x3e0e('0xd'),auth[_0x3e0e('0x9')](),controller[_0x3e0e('0xe')]);router[_0x3e0e('0xf')](_0x3e0e('0xd'),auth[_0x3e0e('0x9')](),controller[_0x3e0e('0x10')]);module[_0x3e0e('0x11')]=router;
\ No newline at end of file
index 3c2f119..2d11174 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f93=['STRING','INTEGER','exports','DATE','1970-01-01\x2000:00:01'];(function(_0x53cf6f,_0x4c2318){var _0x3f0b36=function(_0x1e8148){while(--_0x1e8148){_0x53cf6f['push'](_0x53cf6f['shift']());}};_0x3f0b36(++_0x4c2318);}(_0x0f93,0x66));var _0x30f9=function(_0x23cfd0,_0x48e98b){_0x23cfd0=_0x23cfd0-0x0;var _0x33cd01=_0x0f93[_0x23cfd0];return _0x33cd01;};'use strict';var Sequelize=require('sequelize');module[_0x30f9('0x0')]={'calldate':{'type':Sequelize[_0x30f9('0x1')],'allowNull':![],'defaultValue':_0x30f9('0x2')},'clid':{'type':Sequelize[_0x30f9('0x3')]},'src':{'type':Sequelize[_0x30f9('0x3')]},'dst':{'type':Sequelize[_0x30f9('0x3')]},'dcontext':{'type':Sequelize[_0x30f9('0x3')]},'channel':{'type':Sequelize[_0x30f9('0x3')]},'dstchannel':{'type':Sequelize[_0x30f9('0x3')]},'lastapp':{'type':Sequelize[_0x30f9('0x3')]},'lastdata':{'type':Sequelize[_0x30f9('0x3')]},'duration':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x0},'billsec':{'type':Sequelize[_0x30f9('0x4')],'allowNull':![],'defaultValue':0x0},'disposition':{'type':Sequelize[_0x30f9('0x3')]},'amaflags':{'type':Sequelize[_0x30f9('0x4')],'allowNull':![],'defaultValue':0x0},'accountcode':{'type':Sequelize['STRING']},'userfield':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0x30f9('0x3')]},'linkedid':{'type':Sequelize['STRING']},'sequence':{'type':Sequelize['STRING']},'peeraccount':{'type':Sequelize[_0x30f9('0x3')]},'type':{'type':Sequelize['STRING']},'tag':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xfa68=['exports','DATE','STRING','INTEGER','sequelize'];(function(_0x36f47c,_0x38ef4d){var _0x296c55=function(_0x403eec){while(--_0x403eec){_0x36f47c['push'](_0x36f47c['shift']());}};_0x296c55(++_0x38ef4d);}(_0xfa68,0x86));var _0x8fa6=function(_0x2bd8d0,_0x882329){_0x2bd8d0=_0x2bd8d0-0x0;var _0x5a7ab2=_0xfa68[_0x2bd8d0];return _0x5a7ab2;};'use strict';var Sequelize=require(_0x8fa6('0x0'));module[_0x8fa6('0x1')]={'calldate':{'type':Sequelize[_0x8fa6('0x2')],'allowNull':![],'defaultValue':'1970-01-01\x2000:00:01'},'clid':{'type':Sequelize[_0x8fa6('0x3')]},'src':{'type':Sequelize[_0x8fa6('0x3')]},'dst':{'type':Sequelize[_0x8fa6('0x3')]},'dcontext':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0x8fa6('0x3')]},'dstchannel':{'type':Sequelize[_0x8fa6('0x3')]},'lastapp':{'type':Sequelize[_0x8fa6('0x3')]},'lastdata':{'type':Sequelize[_0x8fa6('0x3')]},'duration':{'type':Sequelize[_0x8fa6('0x4')],'allowNull':![],'defaultValue':0x0},'billsec':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x0},'disposition':{'type':Sequelize[_0x8fa6('0x3')]},'amaflags':{'type':Sequelize[_0x8fa6('0x4')],'allowNull':![],'defaultValue':0x0},'accountcode':{'type':Sequelize['STRING']},'userfield':{'type':Sequelize[_0x8fa6('0x3')]},'uniqueid':{'type':Sequelize[_0x8fa6('0x3')]},'linkedid':{'type':Sequelize['STRING']},'sequence':{'type':Sequelize['STRING']},'peeraccount':{'type':Sequelize[_0x8fa6('0x3')]},'type':{'type':Sequelize[_0x8fa6('0x3')]},'tag':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 4de0172..5e1a954 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2caf=['type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','include','find','create','body','describe','fast-json-patch','moment','bluebird','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','end','status','json','offset','limit','count','set','Content-Range','apply','reject','save','update','destroy','then','sendStatus','error','name','send','index','map','Cdr','rawAttributes','fieldName'];(function(_0x56bc4f,_0x7cb5){var _0x4deeae=function(_0x4cdfdb){while(--_0x4cdfdb){_0x56bc4f['push'](_0x56bc4f['shift']());}};_0x4deeae(++_0x7cb5);}(_0x2caf,0x6a));var _0xf2ca=function(_0x4b7c8f,_0x2b4302){_0x4b7c8f=_0x4b7c8f-0x0;var _0x438fbc=_0x2caf[_0x4b7c8f];return _0x438fbc;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xf2ca('0x0'));var rp=require('request-promise');var moment=require(_0xf2ca('0x1'));var BPromise=require(_0xf2ca('0x2'));var Mustache=require(_0xf2ca('0x3'));var util=require(_0xf2ca('0x4'));var path=require(_0xf2ca('0x5'));var sox=require(_0xf2ca('0x6'));var csv=require(_0xf2ca('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xf2ca('0x8'));var _=require(_0xf2ca('0x9'));var squel=require(_0xf2ca('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xf2ca('0xb'));var toCsv=require(_0xf2ca('0x7'));var querystring=require(_0xf2ca('0xc'));var Papa=require(_0xf2ca('0xd'));var Redis=require(_0xf2ca('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xf2ca('0xf'));var as=require(_0xf2ca('0x10'));var hardwareService=require(_0xf2ca('0x11'));var logger=require(_0xf2ca('0x12'))(_0xf2ca('0x13'));var utils=require(_0xf2ca('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xf2ca('0x15'));var db=require(_0xf2ca('0x16'))['db'];function respondWithStatusCode(_0x54a3cb,_0x88529f){_0x88529f=_0x88529f||0xcc;return function(_0x383112){if(_0x383112){return _0x54a3cb['sendStatus'](_0x88529f);}return _0x54a3cb['status'](_0x88529f)[_0xf2ca('0x17')]();};}function respondWithResult(_0x52a278,_0x284484){_0x284484=_0x284484||0xc8;return function(_0x3123fe){if(_0x3123fe){return _0x52a278[_0xf2ca('0x18')](_0x284484)[_0xf2ca('0x19')](_0x3123fe);}};}function respondWithFilteredResult(_0x410997,_0x2057a2){return function(_0x2ddfac){if(_0x2ddfac){var _0x5aec64=typeof _0x2057a2[_0xf2ca('0x1a')]==='undefined'&&typeof _0x2057a2[_0xf2ca('0x1b')]==='undefined';var _0x235e79=_0x2ddfac[_0xf2ca('0x1c')];var _0x59ea3c=_0x5aec64?0x0:_0x2057a2[_0xf2ca('0x1a')];var _0x160230=_0x5aec64?_0x2ddfac[_0xf2ca('0x1c')]:_0x2057a2[_0xf2ca('0x1a')]+_0x2057a2[_0xf2ca('0x1b')];var _0x1ca233;if(_0x160230>=_0x235e79){_0x160230=_0x235e79;_0x1ca233=0xc8;}else{_0x1ca233=0xce;}_0x410997[_0xf2ca('0x18')](_0x1ca233);return _0x410997[_0xf2ca('0x1d')](_0xf2ca('0x1e'),_0x59ea3c+'-'+_0x160230+'/'+_0x235e79)[_0xf2ca('0x19')](_0x2ddfac);}return null;};}function patchUpdates(_0xea662){return function(_0x55dc6a){try{jsonpatch[_0xf2ca('0x1f')](_0x55dc6a,_0xea662,!![]);}catch(_0x45a028){return BPromise[_0xf2ca('0x20')](_0x45a028);}return _0x55dc6a[_0xf2ca('0x21')]();};}function saveUpdates(_0x41cb71,_0x386c58){return function(_0x1bbd60){if(_0x1bbd60){return _0x1bbd60[_0xf2ca('0x22')](_0x41cb71)['then'](function(_0x14791b){return _0x14791b;});}return null;};}function removeEntity(_0x1767f7,_0x56ebed){return function(_0x1c032c){if(_0x1c032c){return _0x1c032c[_0xf2ca('0x23')]()[_0xf2ca('0x24')](function(){_0x1767f7['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0xbfcb0b,_0x1b3c01){return function(_0x214fa9){if(!_0x214fa9){_0xbfcb0b[_0xf2ca('0x25')](0x194);}return _0x214fa9;};}function handleError(_0x1255ba,_0x427a17){_0x427a17=_0x427a17||0x1f4;return function(_0x339e10){logger[_0xf2ca('0x26')](_0x339e10['stack']);if(_0x339e10[_0xf2ca('0x27')]){delete _0x339e10[_0xf2ca('0x27')];}_0x1255ba[_0xf2ca('0x18')](_0x427a17)[_0xf2ca('0x28')](_0x339e10);};}exports[_0xf2ca('0x29')]=function(_0x41fc04,_0x17707e){var _0xb0ae21={},_0x1b44fb={},_0x20a523={'count':0x0,'rows':[]};var _0xf92250=_[_0xf2ca('0x2a')](db[_0xf2ca('0x2b')][_0xf2ca('0x2c')],function(_0x2b0649){return{'name':_0x2b0649[_0xf2ca('0x2d')],'type':_0x2b0649[_0xf2ca('0x2e')][_0xf2ca('0x2f')]};});_0x1b44fb[_0xf2ca('0x30')]=_['map'](_0xf92250,_0xf2ca('0x27'));_0x1b44fb[_0xf2ca('0x31')]=_[_0xf2ca('0x32')](_0x41fc04[_0xf2ca('0x31')]);_0x1b44fb[_0xf2ca('0x33')]=_[_0xf2ca('0x34')](_0x1b44fb[_0xf2ca('0x30')],_0x1b44fb[_0xf2ca('0x31')]);_0xb0ae21[_0xf2ca('0x35')]=_['intersection'](_0x1b44fb[_0xf2ca('0x30')],qs[_0xf2ca('0x36')](_0x41fc04[_0xf2ca('0x31')]['fields']));_0xb0ae21[_0xf2ca('0x35')]=_0xb0ae21['attributes'][_0xf2ca('0x37')]?_0xb0ae21[_0xf2ca('0x35')]:_0x1b44fb[_0xf2ca('0x30')];if(!_0x41fc04[_0xf2ca('0x31')][_0xf2ca('0x38')]('nolimit')){_0xb0ae21['limit']=qs[_0xf2ca('0x1b')](_0x41fc04['query'][_0xf2ca('0x1b')]);_0xb0ae21[_0xf2ca('0x1a')]=qs[_0xf2ca('0x1a')](_0x41fc04[_0xf2ca('0x31')][_0xf2ca('0x1a')]);}_0xb0ae21[_0xf2ca('0x39')]=qs[_0xf2ca('0x3a')](_0x41fc04[_0xf2ca('0x31')][_0xf2ca('0x3a')]);_0xb0ae21[_0xf2ca('0x3b')]=qs[_0xf2ca('0x33')](_[_0xf2ca('0x3c')](_0x41fc04[_0xf2ca('0x31')],_0x1b44fb[_0xf2ca('0x33')]),_0xf92250);if(_0x41fc04[_0xf2ca('0x31')][_0xf2ca('0x3d')]){_0xb0ae21['where']=_[_0xf2ca('0x3e')](_0xb0ae21[_0xf2ca('0x3b')],{'$or':_[_0xf2ca('0x2a')](_0xf92250,function(_0x148570){if(_0x148570['type']!==_0xf2ca('0x3f')){var _0x4b0e0e={};_0x4b0e0e[_0x148570[_0xf2ca('0x27')]]={'$like':'%'+_0x41fc04[_0xf2ca('0x31')][_0xf2ca('0x3d')]+'%'};return _0x4b0e0e;}})});}_0xb0ae21=_[_0xf2ca('0x3e')]({},_0xb0ae21,_0x41fc04[_0xf2ca('0x40')]);var _0x4fbaec={'where':_0xb0ae21[_0xf2ca('0x3b')]};return db[_0xf2ca('0x2b')]['count'](_0x4fbaec)[_0xf2ca('0x24')](function(_0x29ebce){_0x20a523[_0xf2ca('0x1c')]=_0x29ebce;if(_0x41fc04['query'][_0xf2ca('0x41')]){_0xb0ae21['include']=[{'all':!![]}];}return db[_0xf2ca('0x2b')][_0xf2ca('0x42')](_0xb0ae21);})[_0xf2ca('0x24')](function(_0x43b2c2){_0x20a523[_0xf2ca('0x43')]=_0x43b2c2;return _0x20a523;})[_0xf2ca('0x24')](respondWithFilteredResult(_0x17707e,_0xb0ae21))[_0xf2ca('0x44')](handleError(_0x17707e,null));};exports[_0xf2ca('0x45')]=function(_0x43b3c7,_0x128535){var _0x17de81={'raw':!![],'where':{'id':_0x43b3c7[_0xf2ca('0x46')]['id']}},_0x3360d9={};_0x3360d9[_0xf2ca('0x30')]=_[_0xf2ca('0x32')](db['Cdr'][_0xf2ca('0x2c')]);_0x3360d9[_0xf2ca('0x31')]=_[_0xf2ca('0x32')](_0x43b3c7[_0xf2ca('0x31')]);_0x3360d9[_0xf2ca('0x33')]=_[_0xf2ca('0x34')](_0x3360d9[_0xf2ca('0x30')],_0x3360d9[_0xf2ca('0x31')]);_0x17de81[_0xf2ca('0x35')]=_[_0xf2ca('0x34')](_0x3360d9[_0xf2ca('0x30')],qs[_0xf2ca('0x36')](_0x43b3c7[_0xf2ca('0x31')]['fields']));_0x17de81['attributes']=_0x17de81[_0xf2ca('0x35')][_0xf2ca('0x37')]?_0x17de81['attributes']:_0x3360d9[_0xf2ca('0x30')];if(_0x43b3c7['query'][_0xf2ca('0x41')]){_0x17de81[_0xf2ca('0x47')]=[{'all':!![]}];}_0x17de81=_[_0xf2ca('0x3e')]({},_0x17de81,_0x43b3c7['options']);return db[_0xf2ca('0x2b')][_0xf2ca('0x48')](_0x17de81)['then'](handleEntityNotFound(_0x128535,null))[_0xf2ca('0x24')](respondWithResult(_0x128535,null))[_0xf2ca('0x44')](handleError(_0x128535,null));};exports[_0xf2ca('0x49')]=function(_0x3e92cf,_0x4a6439){return db[_0xf2ca('0x2b')][_0xf2ca('0x49')](_0x3e92cf[_0xf2ca('0x4a')],{})['then'](respondWithResult(_0x4a6439,0xc9))['catch'](handleError(_0x4a6439,null));};exports[_0xf2ca('0x22')]=function(_0x2f7596,_0x1a65c6){if(_0x2f7596[_0xf2ca('0x4a')]['id']){delete _0x2f7596[_0xf2ca('0x4a')]['id'];}return db[_0xf2ca('0x2b')]['find']({'where':{'id':_0x2f7596['params']['id']}})[_0xf2ca('0x24')](handleEntityNotFound(_0x1a65c6,null))[_0xf2ca('0x24')](saveUpdates(_0x2f7596['body'],null))[_0xf2ca('0x24')](respondWithResult(_0x1a65c6,null))['catch'](handleError(_0x1a65c6,null));};exports[_0xf2ca('0x23')]=function(_0x59bbb8,_0x26a483){return db['Cdr']['find']({'where':{'id':_0x59bbb8[_0xf2ca('0x46')]['id']}})[_0xf2ca('0x24')](handleEntityNotFound(_0x26a483,null))['then'](removeEntity(_0x26a483,null))[_0xf2ca('0x44')](handleError(_0x26a483,null));};exports[_0xf2ca('0x4b')]=function(_0x2eb8d5,_0x14850c){return db[_0xf2ca('0x2b')][_0xf2ca('0x4b')]()['then'](respondWithResult(_0x14850c,null))[_0xf2ca('0x44')](handleError(_0x14850c,null));};
\ No newline at end of file
+var _0x4b19=['model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','pick','filter','where','type','VIRTUAL','merge','options','include','findAll','rows','catch','show','params','rawAttributes','includeAll','find','create','destroy','describe','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','to-csv','fs-extra','lodash','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','count','limit','Content-Range','apply','reject','save','update','then','end','error','name','index','map','Cdr','fieldName','key'];(function(_0x8ea877,_0x3ad032){var _0x2c1aaf=function(_0x9af9c){while(--_0x9af9c){_0x8ea877['push'](_0x8ea877['shift']());}};_0x2c1aaf(++_0x3ad032);}(_0x4b19,0x195));var _0x94b1=function(_0x537d07,_0x420ce4){_0x537d07=_0x537d07-0x0;var _0x11065f=_0x4b19[_0x537d07];return _0x11065f;};'use strict';var emlformat=require(_0x94b1('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x94b1('0x1'));var jsonpatch=require(_0x94b1('0x2'));var rp=require(_0x94b1('0x3'));var moment=require('moment');var BPromise=require(_0x94b1('0x4'));var Mustache=require(_0x94b1('0x5'));var util=require(_0x94b1('0x6'));var path=require('path');var sox=require(_0x94b1('0x7'));var csv=require(_0x94b1('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x94b1('0x9'));var _=require(_0x94b1('0xa'));var squel=require('squel');var crypto=require(_0x94b1('0xb'));var jsforce=require(_0x94b1('0xc'));var deskjs=require(_0x94b1('0xd'));var toCsv=require('to-csv');var querystring=require(_0x94b1('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x94b1('0xf'));var qs=require(_0x94b1('0x10'));var as=require(_0x94b1('0x11'));var hardwareService=require(_0x94b1('0x12'));var logger=require(_0x94b1('0x13'))(_0x94b1('0x14'));var utils=require('../../config/utils');var config=require(_0x94b1('0x15'));var licenseUtil=require(_0x94b1('0x16'));var db=require(_0x94b1('0x17'))['db'];function respondWithStatusCode(_0x2b378c,_0x5cbf96){_0x5cbf96=_0x5cbf96||0xcc;return function(_0x4a4fe6){if(_0x4a4fe6){return _0x2b378c[_0x94b1('0x18')](_0x5cbf96);}return _0x2b378c[_0x94b1('0x19')](_0x5cbf96)['end']();};}function respondWithResult(_0x5059d8,_0x9329c9){_0x9329c9=_0x9329c9||0xc8;return function(_0xb9924c){if(_0xb9924c){return _0x5059d8['status'](_0x9329c9)[_0x94b1('0x1a')](_0xb9924c);}};}function respondWithFilteredResult(_0x58fab3,_0x4ea6a4){return function(_0x192c03){if(_0x192c03){var _0x1f0560=typeof _0x4ea6a4[_0x94b1('0x1b')]===_0x94b1('0x1c')&&typeof _0x4ea6a4['limit']===_0x94b1('0x1c');var _0x424c45=_0x192c03[_0x94b1('0x1d')];var _0x224099=_0x1f0560?0x0:_0x4ea6a4[_0x94b1('0x1b')];var _0x1abb7f=_0x1f0560?_0x192c03[_0x94b1('0x1d')]:_0x4ea6a4['offset']+_0x4ea6a4[_0x94b1('0x1e')];var _0x447b8f;if(_0x1abb7f>=_0x424c45){_0x1abb7f=_0x424c45;_0x447b8f=0xc8;}else{_0x447b8f=0xce;}_0x58fab3[_0x94b1('0x19')](_0x447b8f);return _0x58fab3['set'](_0x94b1('0x1f'),_0x224099+'-'+_0x1abb7f+'/'+_0x424c45)[_0x94b1('0x1a')](_0x192c03);}return null;};}function patchUpdates(_0x4c40c5){return function(_0x602c3b){try{jsonpatch[_0x94b1('0x20')](_0x602c3b,_0x4c40c5,!![]);}catch(_0x29af54){return BPromise[_0x94b1('0x21')](_0x29af54);}return _0x602c3b[_0x94b1('0x22')]();};}function saveUpdates(_0x38448d,_0x36180a){return function(_0xc8543){if(_0xc8543){return _0xc8543[_0x94b1('0x23')](_0x38448d)[_0x94b1('0x24')](function(_0x49c248){return _0x49c248;});}return null;};}function removeEntity(_0xa333a8,_0xa112b1){return function(_0x34c324){if(_0x34c324){return _0x34c324['destroy']()[_0x94b1('0x24')](function(){_0xa333a8['status'](0xcc)[_0x94b1('0x25')]();});}};}function handleEntityNotFound(_0x3d10ea,_0x14b8fe){return function(_0x109a81){if(!_0x109a81){_0x3d10ea['sendStatus'](0x194);}return _0x109a81;};}function handleError(_0x4ea6d9,_0x1d6ea6){_0x1d6ea6=_0x1d6ea6||0x1f4;return function(_0x4d5685){logger[_0x94b1('0x26')](_0x4d5685['stack']);if(_0x4d5685[_0x94b1('0x27')]){delete _0x4d5685[_0x94b1('0x27')];}_0x4ea6d9[_0x94b1('0x19')](_0x1d6ea6)['send'](_0x4d5685);};}exports[_0x94b1('0x28')]=function(_0x1d86bd,_0x467c42){var _0x319618={},_0xd86145={},_0x43b67c={'count':0x0,'rows':[]};var _0x2661ca=_[_0x94b1('0x29')](db[_0x94b1('0x2a')]['rawAttributes'],function(_0x2eb1fa){return{'name':_0x2eb1fa[_0x94b1('0x2b')],'type':_0x2eb1fa['type'][_0x94b1('0x2c')]};});_0xd86145[_0x94b1('0x2d')]=_[_0x94b1('0x29')](_0x2661ca,_0x94b1('0x27'));_0xd86145[_0x94b1('0x2e')]=_[_0x94b1('0x2f')](_0x1d86bd['query']);_0xd86145[_0x94b1('0x30')]=_['intersection'](_0xd86145[_0x94b1('0x2d')],_0xd86145['query']);_0x319618['attributes']=_[_0x94b1('0x31')](_0xd86145[_0x94b1('0x2d')],qs[_0x94b1('0x32')](_0x1d86bd[_0x94b1('0x2e')][_0x94b1('0x32')]));_0x319618[_0x94b1('0x33')]=_0x319618[_0x94b1('0x33')][_0x94b1('0x34')]?_0x319618[_0x94b1('0x33')]:_0xd86145[_0x94b1('0x2d')];if(!_0x1d86bd[_0x94b1('0x2e')][_0x94b1('0x35')]('nolimit')){_0x319618['limit']=qs[_0x94b1('0x1e')](_0x1d86bd[_0x94b1('0x2e')][_0x94b1('0x1e')]);_0x319618[_0x94b1('0x1b')]=qs[_0x94b1('0x1b')](_0x1d86bd[_0x94b1('0x2e')][_0x94b1('0x1b')]);}_0x319618[_0x94b1('0x36')]=qs[_0x94b1('0x37')](_0x1d86bd['query'][_0x94b1('0x37')]);_0x319618['where']=qs[_0x94b1('0x30')](_[_0x94b1('0x38')](_0x1d86bd[_0x94b1('0x2e')],_0xd86145['filters']),_0x2661ca);if(_0x1d86bd[_0x94b1('0x2e')][_0x94b1('0x39')]){_0x319618[_0x94b1('0x3a')]=_['merge'](_0x319618[_0x94b1('0x3a')],{'$or':_[_0x94b1('0x29')](_0x2661ca,function(_0x1d4168){if(_0x1d4168[_0x94b1('0x3b')]!==_0x94b1('0x3c')){var _0x2e6fb9={};_0x2e6fb9[_0x1d4168[_0x94b1('0x27')]]={'$like':'%'+_0x1d86bd[_0x94b1('0x2e')][_0x94b1('0x39')]+'%'};return _0x2e6fb9;}})});}_0x319618=_[_0x94b1('0x3d')]({},_0x319618,_0x1d86bd[_0x94b1('0x3e')]);var _0xfb5e55={'where':_0x319618[_0x94b1('0x3a')]};return db['Cdr'][_0x94b1('0x1d')](_0xfb5e55)[_0x94b1('0x24')](function(_0xf29a10){_0x43b67c[_0x94b1('0x1d')]=_0xf29a10;if(_0x1d86bd[_0x94b1('0x2e')]['includeAll']){_0x319618[_0x94b1('0x3f')]=[{'all':!![]}];}return db[_0x94b1('0x2a')][_0x94b1('0x40')](_0x319618);})[_0x94b1('0x24')](function(_0x3cf664){_0x43b67c[_0x94b1('0x41')]=_0x3cf664;return _0x43b67c;})['then'](respondWithFilteredResult(_0x467c42,_0x319618))[_0x94b1('0x42')](handleError(_0x467c42,null));};exports[_0x94b1('0x43')]=function(_0x592daa,_0x317932){var _0x19d4e4={'raw':!![],'where':{'id':_0x592daa[_0x94b1('0x44')]['id']}},_0x59311b={};_0x59311b[_0x94b1('0x2d')]=_[_0x94b1('0x2f')](db['Cdr'][_0x94b1('0x45')]);_0x59311b[_0x94b1('0x2e')]=_[_0x94b1('0x2f')](_0x592daa[_0x94b1('0x2e')]);_0x59311b[_0x94b1('0x30')]=_[_0x94b1('0x31')](_0x59311b[_0x94b1('0x2d')],_0x59311b['query']);_0x19d4e4[_0x94b1('0x33')]=_[_0x94b1('0x31')](_0x59311b[_0x94b1('0x2d')],qs['fields'](_0x592daa[_0x94b1('0x2e')][_0x94b1('0x32')]));_0x19d4e4['attributes']=_0x19d4e4[_0x94b1('0x33')][_0x94b1('0x34')]?_0x19d4e4[_0x94b1('0x33')]:_0x59311b[_0x94b1('0x2d')];if(_0x592daa[_0x94b1('0x2e')][_0x94b1('0x46')]){_0x19d4e4[_0x94b1('0x3f')]=[{'all':!![]}];}_0x19d4e4=_[_0x94b1('0x3d')]({},_0x19d4e4,_0x592daa[_0x94b1('0x3e')]);return db[_0x94b1('0x2a')][_0x94b1('0x47')](_0x19d4e4)[_0x94b1('0x24')](handleEntityNotFound(_0x317932,null))[_0x94b1('0x24')](respondWithResult(_0x317932,null))[_0x94b1('0x42')](handleError(_0x317932,null));};exports[_0x94b1('0x48')]=function(_0x1a2aab,_0xfe1c8f){return db[_0x94b1('0x2a')][_0x94b1('0x48')](_0x1a2aab['body'],{})[_0x94b1('0x24')](respondWithResult(_0xfe1c8f,0xc9))['catch'](handleError(_0xfe1c8f,null));};exports[_0x94b1('0x23')]=function(_0x3fc0fc,_0x1d8e57){if(_0x3fc0fc['body']['id']){delete _0x3fc0fc['body']['id'];}return db['Cdr'][_0x94b1('0x47')]({'where':{'id':_0x3fc0fc[_0x94b1('0x44')]['id']}})[_0x94b1('0x24')](handleEntityNotFound(_0x1d8e57,null))['then'](saveUpdates(_0x3fc0fc['body'],null))['then'](respondWithResult(_0x1d8e57,null))[_0x94b1('0x42')](handleError(_0x1d8e57,null));};exports[_0x94b1('0x49')]=function(_0xbfd51b,_0x2a0f4c){return db[_0x94b1('0x2a')][_0x94b1('0x47')]({'where':{'id':_0xbfd51b[_0x94b1('0x44')]['id']}})['then'](handleEntityNotFound(_0x2a0f4c,null))[_0x94b1('0x24')](removeEntity(_0x2a0f4c,null))[_0x94b1('0x42')](handleError(_0x2a0f4c,null));};exports[_0x94b1('0x4a')]=function(_0x1d9648,_0x344ebe){return db[_0x94b1('0x2a')][_0x94b1('0x4a')]()[_0x94b1('0x24')](respondWithResult(_0x344ebe,null))[_0x94b1('0x42')](handleError(_0x344ebe,null));};
\ No newline at end of file
index d937f4b..5e1f5ab 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(_0x11f46e,_0x5b89cb){var _0x21f0fe=function(_0x24f6a0){while(--_0x24f6a0){_0x11f46e['push'](_0x11f46e['shift']());}};_0x21f0fe(++_0x5b89cb);}(_0x7a54,0x106));var _0x47a5=function(_0x1fe659,_0x561806){_0x1fe659=_0x1fe659-0x0;var _0x5db843=_0x7a54[_0x1fe659];return _0x5db843;};'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(_0x4b8ad4,_0x404b2d){var _0x463e57=function(_0x5ddd4a){while(--_0x5ddd4a){_0x4b8ad4['push'](_0x4b8ad4['shift']());}};_0x463e57(++_0x404b2d);}(_0x7a54,0x106));var _0x47a5=function(_0xb45fef,_0x4acb75){_0xb45fef=_0xb45fef-0x0;var _0x2e9bba=_0x7a54[_0xb45fef];return _0x2e9bba;};'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 396fd81..c9222a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf296=['../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','Cdr,\x20%s,\x20%s','request\x20sent','debug','Cdr,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb'];(function(_0x232cbf,_0x3e2f33){var _0x1cd460=function(_0x29b4f3){while(--_0x29b4f3){_0x232cbf['push'](_0x232cbf['shift']());}};_0x1cd460(++_0x3e2f33);}(_0xf296,0x14a));var _0x6f29=function(_0x3a0863,_0x4cd5ef){_0x3a0863=_0x3a0863-0x0;var _0x85c557=_0xf296[_0x3a0863];return _0x85c557;};'use strict';var _=require(_0x6f29('0x0'));var util=require(_0x6f29('0x1'));var moment=require(_0x6f29('0x2'));var BPromise=require('bluebird');var rs=require(_0x6f29('0x3'));var fs=require('fs');var Redis=require(_0x6f29('0x4'));var db=require(_0x6f29('0x5'))['db'];var utils=require(_0x6f29('0x6'));var logger=require(_0x6f29('0x7'))(_0x6f29('0x8'));var config=require('../../config/environment');var jayson=require(_0x6f29('0x9'));var client=jayson[_0x6f29('0xa')][_0x6f29('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3e5b4b,_0x3a9f5a,_0x3945a4){return new BPromise(function(_0x56d257,_0x59f35c){return client[_0x6f29('0xc')](_0x3e5b4b,_0x3945a4)[_0x6f29('0xd')](function(_0x56648d){logger[_0x6f29('0xe')](_0x6f29('0xf'),_0x3a9f5a,_0x6f29('0x10'));logger[_0x6f29('0x11')](_0x6f29('0x12'),_0x3a9f5a,_0x6f29('0x10'),JSON['stringify'](_0x56648d));if(_0x56648d[_0x6f29('0x13')]){if(_0x56648d['error'][_0x6f29('0x14')]===0x1f4){logger[_0x6f29('0x13')](_0x6f29('0xf'),_0x3a9f5a,_0x56648d[_0x6f29('0x13')][_0x6f29('0x15')]);return _0x59f35c(_0x56648d[_0x6f29('0x13')]['message']);}logger[_0x6f29('0x13')](_0x6f29('0xf'),_0x3a9f5a,_0x56648d['error'][_0x6f29('0x15')]);return _0x56d257(_0x56648d[_0x6f29('0x13')][_0x6f29('0x15')]);}else{logger[_0x6f29('0xe')]('Cdr,\x20%s,\x20%s',_0x3a9f5a,_0x6f29('0x10'));_0x56d257(_0x56648d[_0x6f29('0x16')][_0x6f29('0x15')]);}})[_0x6f29('0x17')](function(_0xa2ece3){logger['error'](_0x6f29('0xf'),_0x3a9f5a,_0xa2ece3);_0x59f35c(_0xa2ece3);});});}
\ No newline at end of file
+var _0x8d7b=['http','request','then','info','Cdr,\x20%s,\x20%s','request\x20sent','debug','Cdr,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client'];(function(_0x29480c,_0x26d2b2){var _0x55ba40=function(_0x1a8bcf){while(--_0x1a8bcf){_0x29480c['push'](_0x29480c['shift']());}};_0x55ba40(++_0x26d2b2);}(_0x8d7b,0x80));var _0xb8d7=function(_0x1c4814,_0xb87c40){_0x1c4814=_0x1c4814-0x0;var _0x5ef489=_0x8d7b[_0x1c4814];return _0x5ef489;};'use strict';var _=require(_0xb8d7('0x0'));var util=require(_0xb8d7('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xb8d7('0x2'));var fs=require('fs');var Redis=require(_0xb8d7('0x3'));var db=require(_0xb8d7('0x4'))['db'];var utils=require(_0xb8d7('0x5'));var logger=require('../../config/logger')(_0xb8d7('0x6'));var config=require(_0xb8d7('0x7'));var jayson=require(_0xb8d7('0x8'));var client=jayson[_0xb8d7('0x9')][_0xb8d7('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4e3b3f,_0x2cd913,_0x45f00c){return new BPromise(function(_0x43abee,_0x2fdd3e){return client[_0xb8d7('0xb')](_0x4e3b3f,_0x45f00c)[_0xb8d7('0xc')](function(_0x13373a){logger[_0xb8d7('0xd')](_0xb8d7('0xe'),_0x2cd913,_0xb8d7('0xf'));logger[_0xb8d7('0x10')](_0xb8d7('0x11'),_0x2cd913,_0xb8d7('0xf'),JSON[_0xb8d7('0x12')](_0x13373a));if(_0x13373a[_0xb8d7('0x13')]){if(_0x13373a['error'][_0xb8d7('0x14')]===0x1f4){logger[_0xb8d7('0x13')](_0xb8d7('0xe'),_0x2cd913,_0x13373a[_0xb8d7('0x13')][_0xb8d7('0x15')]);return _0x2fdd3e(_0x13373a[_0xb8d7('0x13')][_0xb8d7('0x15')]);}logger[_0xb8d7('0x13')]('Cdr,\x20%s,\x20%s',_0x2cd913,_0x13373a['error'][_0xb8d7('0x15')]);return _0x43abee(_0x13373a[_0xb8d7('0x13')][_0xb8d7('0x15')]);}else{logger[_0xb8d7('0xd')](_0xb8d7('0xe'),_0x2cd913,_0xb8d7('0xf'));_0x43abee(_0x13373a[_0xb8d7('0x16')][_0xb8d7('0x15')]);}})['catch'](function(_0x53d0ad){logger['error'](_0xb8d7('0xe'),_0x2cd913,_0x53d0ad);_0x2fdd3e(_0x53d0ad);});});}
\ No newline at end of file
index 2affdd3..15e450b 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(_0x152136,_0x4f14f1){var _0x20df44=function(_0x362877){while(--_0x362877){_0x152136['push'](_0x152136['shift']());}};_0x20df44(++_0x4f14f1);}(_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
+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(_0x7275e9,_0x321fa5){var _0x17b99d=function(_0x54af41){while(--_0x54af41){_0x7275e9['push'](_0x7275e9['shift']());}};_0x17b99d(++_0x321fa5);}(_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 1d87f97..d0a6024 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x13ad=['noop','TEXT','*,*,*,*','sequelize','exports','STRING'];(function(_0xbc550a,_0x2bb605){var _0xd16ba4=function(_0x5e55e5){while(--_0x5e55e5){_0xbc550a['push'](_0xbc550a['shift']());}};_0xd16ba4(++_0x2bb605);}(_0x13ad,0x1a1));var _0xd13a=function(_0x217265,_0x10a02a){_0x217265=_0x217265-0x0;var _0x3d6de7=_0x13ad[_0x217265];return _0x3d6de7;};'use strict';var Sequelize=require(_0xd13a('0x0'));module[_0xd13a('0x1')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0xd13a('0x2')],'allowNull':![],'defaultValue':_0xd13a('0x3')},'appdata':{'type':Sequelize[_0xd13a('0x4')]()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0xd13a('0x2')],'defaultValue':_0xd13a('0x5')}};
\ No newline at end of file
+var _0x7972=['sequelize','exports','INTEGER','STRING','TEXT','*,*,*,*'];(function(_0x2c3073,_0x56e605){var _0x44a4da=function(_0xf3e1c3){while(--_0xf3e1c3){_0x2c3073['push'](_0x2c3073['shift']());}};_0x44a4da(++_0x56e605);}(_0x7972,0xd8));var _0x2797=function(_0x381e86,_0x17dd1d){_0x381e86=_0x381e86-0x0;var _0x20dee5=_0x7972[_0x381e86];return _0x20dee5;};'use strict';var Sequelize=require(_0x2797('0x0'));module[_0x2797('0x1')]={'priority':{'type':Sequelize[_0x2797('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0x2797('0x3')],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize[_0x2797('0x4')]()},'description':{'type':Sequelize[_0x2797('0x3')]},'interval':{'type':Sequelize[_0x2797('0x3')],'defaultValue':_0x2797('0x5')}};
\ No newline at end of file
index 9040410..93733e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb32d=['body','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','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','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','count','Content-Range','apply','reject','save','update','destroy','end','error','stack','name','send','model','keys','ChatApplication','query','filters','intersection','attributes','length','include','merge','find','then','catch'];(function(_0x413feb,_0x10477f){var _0x40ee88=function(_0x32a3f6){while(--_0x32a3f6){_0x413feb['push'](_0x413feb['shift']());}};_0x40ee88(++_0x10477f);}(_0xb32d,0x1da));var _0xdb32=function(_0x590ef7,_0x175f08){_0x590ef7=_0x590ef7-0x0;var _0x4c2634=_0xb32d[_0x590ef7];return _0x4c2634;};'use strict';var emlformat=require(_0xdb32('0x0'));var rimraf=require(_0xdb32('0x1'));var zipdir=require(_0xdb32('0x2'));var jsonpatch=require(_0xdb32('0x3'));var rp=require(_0xdb32('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xdb32('0x5'));var util=require(_0xdb32('0x6'));var path=require('path');var sox=require(_0xdb32('0x7'));var csv=require(_0xdb32('0x8'));var ejs=require(_0xdb32('0x9'));var fs=require('fs');var fs_extra=require(_0xdb32('0xa'));var _=require(_0xdb32('0xb'));var squel=require(_0xdb32('0xc'));var crypto=require('crypto');var jsforce=require(_0xdb32('0xd'));var deskjs=require(_0xdb32('0xe'));var toCsv=require(_0xdb32('0x8'));var querystring=require(_0xdb32('0xf'));var Papa=require(_0xdb32('0x10'));var Redis=require(_0xdb32('0x11'));var authService=require(_0xdb32('0x12'));var qs=require(_0xdb32('0x13'));var as=require(_0xdb32('0x14'));var hardwareService=require(_0xdb32('0x15'));var logger=require(_0xdb32('0x16'))(_0xdb32('0x17'));var utils=require(_0xdb32('0x18'));var config=require(_0xdb32('0x19'));var licenseUtil=require(_0xdb32('0x1a'));var db=require(_0xdb32('0x1b'))['db'];function respondWithStatusCode(_0x2ca4a2,_0x301f98){_0x301f98=_0x301f98||0xcc;return function(_0x2db670){if(_0x2db670){return _0x2ca4a2[_0xdb32('0x1c')](_0x301f98);}return _0x2ca4a2[_0xdb32('0x1d')](_0x301f98)['end']();};}function respondWithResult(_0x7a72cb,_0x223890){_0x223890=_0x223890||0xc8;return function(_0x1c182c){if(_0x1c182c){return _0x7a72cb[_0xdb32('0x1d')](_0x223890)[_0xdb32('0x1e')](_0x1c182c);}};}function respondWithFilteredResult(_0x4b38ab,_0x540bc4){return function(_0x1c7b54){if(_0x1c7b54){var _0x3a4028=typeof _0x540bc4['offset']==='undefined'&&typeof _0x540bc4['limit']==='undefined';var _0x2f84ea=_0x1c7b54['count'];var _0x1fd22b=_0x3a4028?0x0:_0x540bc4[_0xdb32('0x1f')];var _0x1ba5f4=_0x3a4028?_0x1c7b54[_0xdb32('0x20')]:_0x540bc4['offset']+_0x540bc4['limit'];var _0x5be1f2;if(_0x1ba5f4>=_0x2f84ea){_0x1ba5f4=_0x2f84ea;_0x5be1f2=0xc8;}else{_0x5be1f2=0xce;}_0x4b38ab[_0xdb32('0x1d')](_0x5be1f2);return _0x4b38ab['set'](_0xdb32('0x21'),_0x1fd22b+'-'+_0x1ba5f4+'/'+_0x2f84ea)[_0xdb32('0x1e')](_0x1c7b54);}return null;};}function patchUpdates(_0x8a5f88){return function(_0x3125f9){try{jsonpatch[_0xdb32('0x22')](_0x3125f9,_0x8a5f88,!![]);}catch(_0x4b08b1){return BPromise[_0xdb32('0x23')](_0x4b08b1);}return _0x3125f9[_0xdb32('0x24')]();};}function saveUpdates(_0x2429ea,_0x5a5a84){return function(_0x4c140c){if(_0x4c140c){return _0x4c140c[_0xdb32('0x25')](_0x2429ea)['then'](function(_0x49f01f){return _0x49f01f;});}return null;};}function removeEntity(_0x42ac9d,_0x14b5fd){return function(_0x307aaf){if(_0x307aaf){return _0x307aaf[_0xdb32('0x26')]()['then'](function(){_0x42ac9d['status'](0xcc)[_0xdb32('0x27')]();});}};}function handleEntityNotFound(_0x2168d9,_0x2d2555){return function(_0x5b0a48){if(!_0x5b0a48){_0x2168d9[_0xdb32('0x1c')](0x194);}return _0x5b0a48;};}function handleError(_0x5175fe,_0x251340){_0x251340=_0x251340||0x1f4;return function(_0x17f627){logger[_0xdb32('0x28')](_0x17f627[_0xdb32('0x29')]);if(_0x17f627[_0xdb32('0x2a')]){delete _0x17f627['name'];}_0x5175fe['status'](_0x251340)[_0xdb32('0x2b')](_0x17f627);};}exports['show']=function(_0x37c703,_0x38d7a0){var _0x33a134={'raw':!![],'where':{'id':_0x37c703['params']['id']}},_0x5a6109={};_0x5a6109[_0xdb32('0x2c')]=_[_0xdb32('0x2d')](db[_0xdb32('0x2e')]['rawAttributes']);_0x5a6109[_0xdb32('0x2f')]=_[_0xdb32('0x2d')](_0x37c703[_0xdb32('0x2f')]);_0x5a6109[_0xdb32('0x30')]=_[_0xdb32('0x31')](_0x5a6109[_0xdb32('0x2c')],_0x5a6109[_0xdb32('0x2f')]);_0x33a134[_0xdb32('0x32')]=_[_0xdb32('0x31')](_0x5a6109['model'],qs['fields'](_0x37c703[_0xdb32('0x2f')]['fields']));_0x33a134[_0xdb32('0x32')]=_0x33a134[_0xdb32('0x32')][_0xdb32('0x33')]?_0x33a134['attributes']:_0x5a6109[_0xdb32('0x2c')];if(_0x37c703[_0xdb32('0x2f')]['includeAll']){_0x33a134[_0xdb32('0x34')]=[{'all':!![]}];}_0x33a134=_[_0xdb32('0x35')]({},_0x33a134,_0x37c703['options']);return db[_0xdb32('0x2e')][_0xdb32('0x36')](_0x33a134)[_0xdb32('0x37')](handleEntityNotFound(_0x38d7a0,null))[_0xdb32('0x37')](respondWithResult(_0x38d7a0,null))[_0xdb32('0x38')](handleError(_0x38d7a0,null));};exports[_0xdb32('0x25')]=function(_0x3968b4,_0x5b4d77){if(_0x3968b4[_0xdb32('0x39')]['id']){delete _0x3968b4[_0xdb32('0x39')]['id'];}return db[_0xdb32('0x2e')][_0xdb32('0x36')]({'where':{'id':_0x3968b4['params']['id']}})['then'](handleEntityNotFound(_0x5b4d77,null))['then'](saveUpdates(_0x3968b4[_0xdb32('0x39')],null))['then'](respondWithResult(_0x5b4d77,null))['catch'](handleError(_0x5b4d77,null));};exports[_0xdb32('0x26')]=function(_0x5acf07,_0x65cb27){return db[_0xdb32('0x2e')][_0xdb32('0x36')]({'where':{'id':_0x5acf07[_0xdb32('0x3a')]['id']}})['then'](handleEntityNotFound(_0x65cb27,null))[_0xdb32('0x37')](removeEntity(_0x65cb27,null))[_0xdb32('0x38')](handleError(_0x65cb27,null));};
\ No newline at end of file
+var _0xc7a7=['attributes','fields','length','includeAll','merge','options','find','catch','body','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','save','update','then','destroy','sendStatus','error','stack','name','send','show','params','model','ChatApplication','query','keys','intersection'];(function(_0x13bd31,_0x1405ff){var _0x4500ab=function(_0x35bb76){while(--_0x35bb76){_0x13bd31['push'](_0x13bd31['shift']());}};_0x4500ab(++_0x1405ff);}(_0xc7a7,0x171));var _0x7c7a=function(_0x66a976,_0x1602ec){_0x66a976=_0x66a976-0x0;var _0x5ee7c1=_0xc7a7[_0x66a976];return _0x5ee7c1;};'use strict';var emlformat=require(_0x7c7a('0x0'));var rimraf=require(_0x7c7a('0x1'));var zipdir=require(_0x7c7a('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x7c7a('0x3'));var moment=require(_0x7c7a('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x7c7a('0x5'));var util=require(_0x7c7a('0x6'));var path=require(_0x7c7a('0x7'));var sox=require(_0x7c7a('0x8'));var csv=require(_0x7c7a('0x9'));var ejs=require(_0x7c7a('0xa'));var fs=require('fs');var fs_extra=require(_0x7c7a('0xb'));var _=require(_0x7c7a('0xc'));var squel=require('squel');var crypto=require(_0x7c7a('0xd'));var jsforce=require(_0x7c7a('0xe'));var deskjs=require(_0x7c7a('0xf'));var toCsv=require('to-csv');var querystring=require(_0x7c7a('0x10'));var Papa=require(_0x7c7a('0x11'));var Redis=require(_0x7c7a('0x12'));var authService=require(_0x7c7a('0x13'));var qs=require(_0x7c7a('0x14'));var as=require(_0x7c7a('0x15'));var hardwareService=require(_0x7c7a('0x16'));var logger=require(_0x7c7a('0x17'))('api');var utils=require(_0x7c7a('0x18'));var config=require(_0x7c7a('0x19'));var licenseUtil=require(_0x7c7a('0x1a'));var db=require(_0x7c7a('0x1b'))['db'];function respondWithStatusCode(_0x1a0ac8,_0x6c0e68){_0x6c0e68=_0x6c0e68||0xcc;return function(_0x3d29d0){if(_0x3d29d0){return _0x1a0ac8['sendStatus'](_0x6c0e68);}return _0x1a0ac8[_0x7c7a('0x1c')](_0x6c0e68)[_0x7c7a('0x1d')]();};}function respondWithResult(_0xd532a6,_0x279441){_0x279441=_0x279441||0xc8;return function(_0xd97646){if(_0xd97646){return _0xd532a6['status'](_0x279441)[_0x7c7a('0x1e')](_0xd97646);}};}function respondWithFilteredResult(_0x567831,_0x3b874a){return function(_0x210afe){if(_0x210afe){var _0x7da88b=typeof _0x3b874a[_0x7c7a('0x1f')]===_0x7c7a('0x20')&&typeof _0x3b874a[_0x7c7a('0x21')]===_0x7c7a('0x20');var _0x20e32d=_0x210afe[_0x7c7a('0x22')];var _0x314e11=_0x7da88b?0x0:_0x3b874a[_0x7c7a('0x1f')];var _0x3979c6=_0x7da88b?_0x210afe['count']:_0x3b874a[_0x7c7a('0x1f')]+_0x3b874a[_0x7c7a('0x21')];var _0x10638b;if(_0x3979c6>=_0x20e32d){_0x3979c6=_0x20e32d;_0x10638b=0xc8;}else{_0x10638b=0xce;}_0x567831[_0x7c7a('0x1c')](_0x10638b);return _0x567831['set']('Content-Range',_0x314e11+'-'+_0x3979c6+'/'+_0x20e32d)[_0x7c7a('0x1e')](_0x210afe);}return null;};}function patchUpdates(_0x47dfbc){return function(_0x3a267a){try{jsonpatch['apply'](_0x3a267a,_0x47dfbc,!![]);}catch(_0x374a07){return BPromise['reject'](_0x374a07);}return _0x3a267a[_0x7c7a('0x23')]();};}function saveUpdates(_0x441a1e,_0x51da41){return function(_0x532bcb){if(_0x532bcb){return _0x532bcb[_0x7c7a('0x24')](_0x441a1e)[_0x7c7a('0x25')](function(_0x46d6ef){return _0x46d6ef;});}return null;};}function removeEntity(_0x711df9,_0x4d45d6){return function(_0x115289){if(_0x115289){return _0x115289[_0x7c7a('0x26')]()['then'](function(){_0x711df9['status'](0xcc)[_0x7c7a('0x1d')]();});}};}function handleEntityNotFound(_0x25aad2,_0x282e0e){return function(_0x43a847){if(!_0x43a847){_0x25aad2[_0x7c7a('0x27')](0x194);}return _0x43a847;};}function handleError(_0x1c43b8,_0x3c0aab){_0x3c0aab=_0x3c0aab||0x1f4;return function(_0x9d2c1e){logger[_0x7c7a('0x28')](_0x9d2c1e[_0x7c7a('0x29')]);if(_0x9d2c1e['name']){delete _0x9d2c1e[_0x7c7a('0x2a')];}_0x1c43b8['status'](_0x3c0aab)[_0x7c7a('0x2b')](_0x9d2c1e);};}exports[_0x7c7a('0x2c')]=function(_0x5dcdcb,_0x469a99){var _0x1fe1e7={'raw':!![],'where':{'id':_0x5dcdcb[_0x7c7a('0x2d')]['id']}},_0x20d28c={};_0x20d28c[_0x7c7a('0x2e')]=_['keys'](db[_0x7c7a('0x2f')]['rawAttributes']);_0x20d28c[_0x7c7a('0x30')]=_[_0x7c7a('0x31')](_0x5dcdcb[_0x7c7a('0x30')]);_0x20d28c['filters']=_[_0x7c7a('0x32')](_0x20d28c[_0x7c7a('0x2e')],_0x20d28c[_0x7c7a('0x30')]);_0x1fe1e7[_0x7c7a('0x33')]=_['intersection'](_0x20d28c[_0x7c7a('0x2e')],qs[_0x7c7a('0x34')](_0x5dcdcb['query']['fields']));_0x1fe1e7[_0x7c7a('0x33')]=_0x1fe1e7[_0x7c7a('0x33')][_0x7c7a('0x35')]?_0x1fe1e7['attributes']:_0x20d28c[_0x7c7a('0x2e')];if(_0x5dcdcb['query'][_0x7c7a('0x36')]){_0x1fe1e7['include']=[{'all':!![]}];}_0x1fe1e7=_[_0x7c7a('0x37')]({},_0x1fe1e7,_0x5dcdcb[_0x7c7a('0x38')]);return db[_0x7c7a('0x2f')][_0x7c7a('0x39')](_0x1fe1e7)['then'](handleEntityNotFound(_0x469a99,null))[_0x7c7a('0x25')](respondWithResult(_0x469a99,null))[_0x7c7a('0x3a')](handleError(_0x469a99,null));};exports[_0x7c7a('0x24')]=function(_0x4167b0,_0x38b4af){if(_0x4167b0[_0x7c7a('0x3b')]['id']){delete _0x4167b0[_0x7c7a('0x3b')]['id'];}return db['ChatApplication']['find']({'where':{'id':_0x4167b0[_0x7c7a('0x2d')]['id']}})['then'](handleEntityNotFound(_0x38b4af,null))[_0x7c7a('0x25')](saveUpdates(_0x4167b0[_0x7c7a('0x3b')],null))[_0x7c7a('0x25')](respondWithResult(_0x38b4af,null))[_0x7c7a('0x3a')](handleError(_0x38b4af,null));};exports[_0x7c7a('0x26')]=function(_0xc9619,_0x54ab04){return db[_0x7c7a('0x2f')]['find']({'where':{'id':_0xc9619[_0x7c7a('0x2d')]['id']}})[_0x7c7a('0x25')](handleEntityNotFound(_0x54ab04,null))[_0x7c7a('0x25')](removeEntity(_0x54ab04,null))[_0x7c7a('0x3a')](handleError(_0x54ab04,null));};
\ No newline at end of file
index 040f20a..323222e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b7b=['moment','bluebird','path','rimraf','../../config/environment','./chatApplication.attributes','exports','define','ChatApplication','chat_applications','utf8mb4','utf8mb4_unicode_ci','util','../../config/logger','api'];(function(_0x379490,_0x11ae67){var _0x322c42=function(_0x5519c8){while(--_0x5519c8){_0x379490['push'](_0x379490['shift']());}};_0x322c42(++_0x11ae67);}(_0x6b7b,0x93));var _0xb6b7=function(_0x2ef7ef,_0x423609){_0x2ef7ef=_0x2ef7ef-0x0;var _0x4b03d2=_0x6b7b[_0x2ef7ef];return _0x4b03d2;};'use strict';var _=require('lodash');var util=require(_0xb6b7('0x0'));var logger=require(_0xb6b7('0x1'))(_0xb6b7('0x2'));var moment=require(_0xb6b7('0x3'));var BPromise=require(_0xb6b7('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xb6b7('0x5'));var rimraf=require(_0xb6b7('0x6'));var config=require(_0xb6b7('0x7'));var attributes=require(_0xb6b7('0x8'));module[_0xb6b7('0x9')]=function(_0x696e78,_0x282d45){return _0x696e78[_0xb6b7('0xa')](_0xb6b7('0xb'),attributes,{'tableName':_0xb6b7('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xb6b7('0xd'),'collate':_0xb6b7('0xe')});};
\ No newline at end of file
+var _0x1e32=['define','ChatApplication','chat_applications','utf8mb4','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','exports'];(function(_0x166cfe,_0x3c6b1b){var _0xc371cc=function(_0x37cc17){while(--_0x37cc17){_0x166cfe['push'](_0x166cfe['shift']());}};_0xc371cc(++_0x3c6b1b);}(_0x1e32,0xac));var _0x21e3=function(_0x5219ca,_0x10b9f5){_0x5219ca=_0x5219ca-0x0;var _0x50c2e4=_0x1e32[_0x5219ca];return _0x50c2e4;};'use strict';var _=require(_0x21e3('0x0'));var util=require(_0x21e3('0x1'));var logger=require(_0x21e3('0x2'))(_0x21e3('0x3'));var moment=require(_0x21e3('0x4'));var BPromise=require('bluebird');var rp=require(_0x21e3('0x5'));var fs=require('fs');var path=require(_0x21e3('0x6'));var rimraf=require(_0x21e3('0x7'));var config=require(_0x21e3('0x8'));var attributes=require('./chatApplication.attributes');module[_0x21e3('0x9')]=function(_0x150be2,_0x399d3e){return _0x150be2[_0x21e3('0xa')](_0x21e3('0xb'),attributes,{'tableName':_0x21e3('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x21e3('0xd'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index bdb6f43..50774a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd63=['../../config/utils','../../config/environment','jayson/promise','client','http','request','then','ChatApplication,\x20%s,\x20%s','request\x20sent','debug','ChatApplication,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','moment','randomstring','../../mysqldb'];(function(_0x5d7b4d,_0xed93ee){var _0x35c935=function(_0xf88de){while(--_0xf88de){_0x5d7b4d['push'](_0x5d7b4d['shift']());}};_0x35c935(++_0xed93ee);}(_0xcd63,0xb0));var _0x3cd6=function(_0x4985c5,_0xaedeec){_0x4985c5=_0x4985c5-0x0;var _0xbd42d7=_0xcd63[_0x4985c5];return _0xbd42d7;};'use strict';var _=require(_0x3cd6('0x0'));var util=require('util');var moment=require(_0x3cd6('0x1'));var BPromise=require('bluebird');var rs=require(_0x3cd6('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x3cd6('0x3'))['db'];var utils=require(_0x3cd6('0x4'));var logger=require('../../config/logger')('rpc');var config=require(_0x3cd6('0x5'));var jayson=require(_0x3cd6('0x6'));var client=jayson[_0x3cd6('0x7')][_0x3cd6('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x535a54,_0x4b48b1,_0x4a51fc){return new BPromise(function(_0x3513c4,_0x3b9c2b){return client[_0x3cd6('0x9')](_0x535a54,_0x4a51fc)[_0x3cd6('0xa')](function(_0x5b0140){logger['info'](_0x3cd6('0xb'),_0x4b48b1,_0x3cd6('0xc'));logger[_0x3cd6('0xd')](_0x3cd6('0xe'),_0x4b48b1,_0x3cd6('0xc'),JSON[_0x3cd6('0xf')](_0x5b0140));if(_0x5b0140['error']){if(_0x5b0140[_0x3cd6('0x10')]['code']===0x1f4){logger[_0x3cd6('0x10')](_0x3cd6('0xb'),_0x4b48b1,_0x5b0140[_0x3cd6('0x10')][_0x3cd6('0x11')]);return _0x3b9c2b(_0x5b0140['error'][_0x3cd6('0x11')]);}logger['error'](_0x3cd6('0xb'),_0x4b48b1,_0x5b0140[_0x3cd6('0x10')]['message']);return _0x3513c4(_0x5b0140['error'][_0x3cd6('0x11')]);}else{logger['info']('ChatApplication,\x20%s,\x20%s',_0x4b48b1,_0x3cd6('0xc'));_0x3513c4(_0x5b0140[_0x3cd6('0x12')]['message']);}})[_0x3cd6('0x13')](function(_0x10f04a){logger[_0x3cd6('0x10')](_0x3cd6('0xb'),_0x4b48b1,_0x10f04a);_0x3b9c2b(_0x10f04a);});});}
\ No newline at end of file
+var _0x3924=['code','message','result','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','rpc','jayson/promise','client','request','then','info','ChatApplication,\x20%s,\x20%s','request\x20sent','ChatApplication,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x42c5c1,_0x42ba9d){var _0x15c220=function(_0x4e9c27){while(--_0x4e9c27){_0x42c5c1['push'](_0x42c5c1['shift']());}};_0x15c220(++_0x42ba9d);}(_0x3924,0xc1));var _0x4392=function(_0x4b5a2c,_0x1d0103){_0x4b5a2c=_0x4b5a2c-0x0;var _0xa3e0cc=_0x3924[_0x4b5a2c];return _0xa3e0cc;};'use strict';var _=require(_0x4392('0x0'));var util=require(_0x4392('0x1'));var moment=require(_0x4392('0x2'));var BPromise=require('bluebird');var rs=require(_0x4392('0x3'));var fs=require('fs');var Redis=require(_0x4392('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x4392('0x5'));var logger=require('../../config/logger')(_0x4392('0x6'));var config=require('../../config/environment');var jayson=require(_0x4392('0x7'));var client=jayson[_0x4392('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2e837a,_0x4389dc,_0x3b4512){return new BPromise(function(_0x366768,_0x23b143){return client[_0x4392('0x9')](_0x2e837a,_0x3b4512)[_0x4392('0xa')](function(_0x1a874f){logger[_0x4392('0xb')](_0x4392('0xc'),_0x4389dc,_0x4392('0xd'));logger['debug'](_0x4392('0xe'),_0x4389dc,_0x4392('0xd'),JSON[_0x4392('0xf')](_0x1a874f));if(_0x1a874f['error']){if(_0x1a874f[_0x4392('0x10')][_0x4392('0x11')]===0x1f4){logger[_0x4392('0x10')](_0x4392('0xc'),_0x4389dc,_0x1a874f['error'][_0x4392('0x12')]);return _0x23b143(_0x1a874f['error']['message']);}logger[_0x4392('0x10')](_0x4392('0xc'),_0x4389dc,_0x1a874f[_0x4392('0x10')][_0x4392('0x12')]);return _0x366768(_0x1a874f[_0x4392('0x10')][_0x4392('0x12')]);}else{logger[_0x4392('0xb')](_0x4392('0xc'),_0x4389dc,'request\x20sent');_0x366768(_0x1a874f[_0x4392('0x13')][_0x4392('0x12')]);}})[_0x4392('0x14')](function(_0x8b4302){logger[_0x4392('0x10')]('ChatApplication,\x20%s,\x20%s',_0x4389dc,_0x8b4302);_0x23b143(_0x8b4302);});});}
\ No newline at end of file
index 73a7cb9..f315bc6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c0d=['get','/:id','put','isAuthenticated','update','delete','destroy','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0xe416af,_0x3c9ac0){var _0x192342=function(_0x4c0d15){while(--_0x4c0d15){_0xe416af['push'](_0xe416af['shift']());}};_0x192342(++_0x3c9ac0);}(_0x9c0d,0xb7));var _0xd9c0=function(_0x1e4652,_0x3d7833){_0x1e4652=_0x1e4652-0x0;var _0x70fd1b=_0x9c0d[_0x1e4652];return _0x70fd1b;};'use strict';var multer=require(_0xd9c0('0x0'));var util=require(_0xd9c0('0x1'));var path=require(_0xd9c0('0x2'));var timeout=require('connect-timeout');var express=require(_0xd9c0('0x3'));var router=express[_0xd9c0('0x4')]();var fs_extra=require(_0xd9c0('0x5'));var auth=require(_0xd9c0('0x6'));var interaction=require(_0xd9c0('0x7'));var config=require(_0xd9c0('0x8'));var controller=require('./chatApplication.controller');router[_0xd9c0('0x9')](_0xd9c0('0xa'),auth['isAuthenticated'](),controller['show']);router[_0xd9c0('0xb')](_0xd9c0('0xa'),auth[_0xd9c0('0xc')](),controller[_0xd9c0('0xd')]);router[_0xd9c0('0xe')]('/:id',auth[_0xd9c0('0xc')](),controller[_0xd9c0('0xf')]);module['exports']=router;
\ No newline at end of file
+var _0x5bfb=['get','isAuthenticated','put','/:id','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x4cf98e,_0xba4b79){var _0x1623ac=function(_0x459bc0){while(--_0x459bc0){_0x4cf98e['push'](_0x4cf98e['shift']());}};_0x1623ac(++_0xba4b79);}(_0x5bfb,0x14b));var _0xb5bf=function(_0x2eb36f,_0x3bcfb1){_0x2eb36f=_0x2eb36f-0x0;var _0x42b8e3=_0x5bfb[_0x2eb36f];return _0x42b8e3;};'use strict';var multer=require(_0xb5bf('0x0'));var util=require(_0xb5bf('0x1'));var path=require(_0xb5bf('0x2'));var timeout=require(_0xb5bf('0x3'));var express=require(_0xb5bf('0x4'));var router=express[_0xb5bf('0x5')]();var fs_extra=require(_0xb5bf('0x6'));var auth=require(_0xb5bf('0x7'));var interaction=require(_0xb5bf('0x8'));var config=require('../../config/environment');var controller=require('./chatApplication.controller');router[_0xb5bf('0x9')]('/:id',auth[_0xb5bf('0xa')](),controller['show']);router[_0xb5bf('0xb')](_0xb5bf('0xc'),auth[_0xb5bf('0xa')](),controller[_0xb5bf('0xd')]);router[_0xb5bf('0xe')](_0xb5bf('0xc'),auth[_0xb5bf('0xa')](),controller[_0xb5bf('0xf')]);module[_0xb5bf('0x10')]=router;
\ No newline at end of file
index acd728e..ed9e1de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb5dd=['BOOLEAN','sequelize','exports','STRING'];(function(_0x323fff,_0x38f93e){var _0x326de5=function(_0x5520f9){while(--_0x5520f9){_0x323fff['push'](_0x323fff['shift']());}};_0x326de5(++_0x38f93e);}(_0xb5dd,0xd9));var _0xdb5d=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0xb5dd[_0x4b369d];return _0x571a98;};'use strict';var Sequelize=require(_0xdb5d('0x0'));module[_0xdb5d('0x1')]={'name':{'type':Sequelize[_0xdb5d('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0xdb5d('0x2')]},'write':{'type':Sequelize[_0xdb5d('0x3')],'defaultValue':!![]}};
\ No newline at end of file
+var _0xaf3f=['STRING','BOOLEAN','sequelize','exports'];(function(_0x3d2e4b,_0x1f6653){var _0x509e78=function(_0x307037){while(--_0x307037){_0x3d2e4b['push'](_0x3d2e4b['shift']());}};_0x509e78(++_0x1f6653);}(_0xaf3f,0x11e));var _0xfaf3=function(_0x1af05a,_0x111650){_0x1af05a=_0x1af05a-0x0;var _0x497bec=_0xaf3f[_0x1af05a];return _0x497bec;};'use strict';var Sequelize=require(_0xfaf3('0x0'));module[_0xfaf3('0x1')]={'name':{'type':Sequelize[_0xfaf3('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0xfaf3('0x2')]},'write':{'type':Sequelize[_0xfaf3('0x3')],'defaultValue':!![]}};
\ No newline at end of file
index 56e97b8..543ccca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x28f4=['toInteger','addMembers','omit','ids','getMembers','options','removeMembers','addMessage','ChatGroupId','getMessages','findOne','$gte','format','YYYY-MM-DD\x20HH:mm:ss','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','redis','localhost','socket.io-emitter','./chatGroup.socket','register','sendStatus','end','json','offset','limit','count','apply','reject','save','update','then','status','error','stack','name','send','index','map','ChatGroup','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filters','filter','merge','where','VIRTUAL','include','findAll','catch','show','params','find','create','body','describe','ChatInternalMessage','user'];(function(_0xba1760,_0x191969){var _0x1f3143=function(_0x5aa807){while(--_0x5aa807){_0xba1760['push'](_0xba1760['shift']());}};_0x1f3143(++_0x191969);}(_0x28f4,0x12e));var _0x428f=function(_0x5235d7,_0x49473f){_0x5235d7=_0x5235d7-0x0;var _0x5242c1=_0x28f4[_0x5235d7];return _0x5242c1;};'use strict';var emlformat=require(_0x428f('0x0'));var rimraf=require(_0x428f('0x1'));var zipdir=require(_0x428f('0x2'));var jsonpatch=require(_0x428f('0x3'));var rp=require('request-promise');var moment=require(_0x428f('0x4'));var BPromise=require(_0x428f('0x5'));var Mustache=require(_0x428f('0x6'));var util=require(_0x428f('0x7'));var path=require('path');var sox=require(_0x428f('0x8'));var csv=require(_0x428f('0x9'));var ejs=require(_0x428f('0xa'));var fs=require('fs');var fs_extra=require(_0x428f('0xb'));var _=require(_0x428f('0xc'));var squel=require('squel');var crypto=require(_0x428f('0xd'));var jsforce=require(_0x428f('0xe'));var deskjs=require(_0x428f('0xf'));var toCsv=require(_0x428f('0x9'));var querystring=require(_0x428f('0x10'));var Papa=require(_0x428f('0x11'));var Redis=require(_0x428f('0x12'));var authService=require(_0x428f('0x13'));var qs=require(_0x428f('0x14'));var as=require(_0x428f('0x15'));var hardwareService=require(_0x428f('0x16'));var logger=require(_0x428f('0x17'))(_0x428f('0x18'));var utils=require('../../config/utils');var config=require(_0x428f('0x19'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config['redis']=_['defaults'](config[_0x428f('0x1a')],{'host':_0x428f('0x1b'),'port':0x18eb});var socket=require(_0x428f('0x1c'))(new Redis(config['redis']));require(_0x428f('0x1d'))[_0x428f('0x1e')](socket);function respondWithStatusCode(_0x5d8edc,_0x45a1b5){_0x45a1b5=_0x45a1b5||0xcc;return function(_0x44834c){if(_0x44834c){return _0x5d8edc[_0x428f('0x1f')](_0x45a1b5);}return _0x5d8edc['status'](_0x45a1b5)[_0x428f('0x20')]();};}function respondWithResult(_0x3fa572,_0x163fd5){_0x163fd5=_0x163fd5||0xc8;return function(_0x38e1ff){if(_0x38e1ff){return _0x3fa572['status'](_0x163fd5)[_0x428f('0x21')](_0x38e1ff);}};}function respondWithFilteredResult(_0x217ba9,_0x588f76){return function(_0x26a3c6){if(_0x26a3c6){var _0x2e8397=typeof _0x588f76[_0x428f('0x22')]==='undefined'&&typeof _0x588f76[_0x428f('0x23')]==='undefined';var _0x36dfae=_0x26a3c6[_0x428f('0x24')];var _0x53a590=_0x2e8397?0x0:_0x588f76[_0x428f('0x22')];var _0x24987b=_0x2e8397?_0x26a3c6[_0x428f('0x24')]:_0x588f76['offset']+_0x588f76['limit'];var _0x192f50;if(_0x24987b>=_0x36dfae){_0x24987b=_0x36dfae;_0x192f50=0xc8;}else{_0x192f50=0xce;}_0x217ba9['status'](_0x192f50);return _0x217ba9['set']('Content-Range',_0x53a590+'-'+_0x24987b+'/'+_0x36dfae)['json'](_0x26a3c6);}return null;};}function patchUpdates(_0x19e942){return function(_0x2a212c){try{jsonpatch[_0x428f('0x25')](_0x2a212c,_0x19e942,!![]);}catch(_0x4b3d15){return BPromise[_0x428f('0x26')](_0x4b3d15);}return _0x2a212c[_0x428f('0x27')]();};}function saveUpdates(_0x5d8f8e,_0x21d627){return function(_0x278ddf){if(_0x278ddf){return _0x278ddf[_0x428f('0x28')](_0x5d8f8e)[_0x428f('0x29')](function(_0x5070c6){return _0x5070c6;});}return null;};}function removeEntity(_0x12c79d,_0x1e076f){return function(_0x1acc17){if(_0x1acc17){return _0x1acc17['destroy']()[_0x428f('0x29')](function(){_0x12c79d[_0x428f('0x2a')](0xcc)[_0x428f('0x20')]();});}};}function handleEntityNotFound(_0x8213dc,_0x4c4ed5){return function(_0xcf3645){if(!_0xcf3645){_0x8213dc[_0x428f('0x1f')](0x194);}return _0xcf3645;};}function handleError(_0x574c6a,_0x41c40d){_0x41c40d=_0x41c40d||0x1f4;return function(_0x4f7afc){logger[_0x428f('0x2b')](_0x4f7afc[_0x428f('0x2c')]);if(_0x4f7afc['name']){delete _0x4f7afc[_0x428f('0x2d')];}_0x574c6a[_0x428f('0x2a')](_0x41c40d)[_0x428f('0x2e')](_0x4f7afc);};}exports[_0x428f('0x2f')]=function(_0x4b40db,_0x2b92e5){var _0xa1d613={},_0x1677a2={},_0x1c1024={'count':0x0,'rows':[]};var _0x354fd4=_[_0x428f('0x30')](db[_0x428f('0x31')][_0x428f('0x32')],function(_0x1011ee){return{'name':_0x1011ee[_0x428f('0x33')],'type':_0x1011ee[_0x428f('0x34')][_0x428f('0x35')]};});_0x1677a2[_0x428f('0x36')]=_[_0x428f('0x30')](_0x354fd4,_0x428f('0x2d'));_0x1677a2[_0x428f('0x37')]=_[_0x428f('0x38')](_0x4b40db['query']);_0x1677a2['filters']=_[_0x428f('0x39')](_0x1677a2['model'],_0x1677a2[_0x428f('0x37')]);_0xa1d613[_0x428f('0x3a')]=_[_0x428f('0x39')](_0x1677a2['model'],qs[_0x428f('0x3b')](_0x4b40db[_0x428f('0x37')][_0x428f('0x3b')]));_0xa1d613[_0x428f('0x3a')]=_0xa1d613[_0x428f('0x3a')][_0x428f('0x3c')]?_0xa1d613[_0x428f('0x3a')]:_0x1677a2['model'];if(!_0x4b40db['query'][_0x428f('0x3d')](_0x428f('0x3e'))){_0xa1d613['limit']=qs['limit'](_0x4b40db['query'][_0x428f('0x23')]);_0xa1d613[_0x428f('0x22')]=qs[_0x428f('0x22')](_0x4b40db[_0x428f('0x37')][_0x428f('0x22')]);}_0xa1d613[_0x428f('0x3f')]=qs[_0x428f('0x40')](_0x4b40db['query'][_0x428f('0x40')]);_0xa1d613['where']=qs['filters'](_[_0x428f('0x41')](_0x4b40db[_0x428f('0x37')],_0x1677a2[_0x428f('0x42')]),_0x354fd4);if(_0x4b40db[_0x428f('0x37')][_0x428f('0x43')]){_0xa1d613['where']=_[_0x428f('0x44')](_0xa1d613[_0x428f('0x45')],{'$or':_[_0x428f('0x30')](_0x354fd4,function(_0x17a5a0){if(_0x17a5a0[_0x428f('0x34')]!==_0x428f('0x46')){var _0x551989={};_0x551989[_0x17a5a0[_0x428f('0x2d')]]={'$like':'%'+_0x4b40db[_0x428f('0x37')][_0x428f('0x43')]+'%'};return _0x551989;}})});}_0xa1d613=_[_0x428f('0x44')]({},_0xa1d613,_0x4b40db['options']);var _0x5a39e6={'where':_0xa1d613[_0x428f('0x45')]};return db[_0x428f('0x31')][_0x428f('0x24')](_0x5a39e6)[_0x428f('0x29')](function(_0x283fed){_0x1c1024[_0x428f('0x24')]=_0x283fed;if(_0x4b40db[_0x428f('0x37')]['includeAll']){_0xa1d613[_0x428f('0x47')]=[{'all':!![]}];}return db[_0x428f('0x31')][_0x428f('0x48')](_0xa1d613);})['then'](function(_0x4f22e4){_0x1c1024['rows']=_0x4f22e4;return _0x1c1024;})[_0x428f('0x29')](respondWithFilteredResult(_0x2b92e5,_0xa1d613))[_0x428f('0x49')](handleError(_0x2b92e5,null));};exports[_0x428f('0x4a')]=function(_0x58d702,_0x2362e8){var _0xadc00a={'raw':!![],'where':{'id':_0x58d702[_0x428f('0x4b')]['id']}},_0x412835={};_0x412835[_0x428f('0x36')]=_[_0x428f('0x38')](db[_0x428f('0x31')][_0x428f('0x32')]);_0x412835[_0x428f('0x37')]=_[_0x428f('0x38')](_0x58d702[_0x428f('0x37')]);_0x412835[_0x428f('0x42')]=_['intersection'](_0x412835['model'],_0x412835['query']);_0xadc00a[_0x428f('0x3a')]=_[_0x428f('0x39')](_0x412835[_0x428f('0x36')],qs[_0x428f('0x3b')](_0x58d702[_0x428f('0x37')][_0x428f('0x3b')]));_0xadc00a['attributes']=_0xadc00a[_0x428f('0x3a')][_0x428f('0x3c')]?_0xadc00a[_0x428f('0x3a')]:_0x412835[_0x428f('0x36')];if(_0x58d702[_0x428f('0x37')]['includeAll']){_0xadc00a[_0x428f('0x47')]=[{'all':!![]}];}_0xadc00a=_['merge']({},_0xadc00a,_0x58d702['options']);return db[_0x428f('0x31')][_0x428f('0x4c')](_0xadc00a)['then'](handleEntityNotFound(_0x2362e8,null))['then'](respondWithResult(_0x2362e8,null))[_0x428f('0x49')](handleError(_0x2362e8,null));};exports[_0x428f('0x4d')]=function(_0x527751,_0xcee9e4){return db[_0x428f('0x31')][_0x428f('0x4d')](_0x527751[_0x428f('0x4e')],{})[_0x428f('0x29')](respondWithResult(_0xcee9e4,0xc9))[_0x428f('0x49')](handleError(_0xcee9e4,null));};exports['update']=function(_0x5d97a3,_0x550f5c){if(_0x5d97a3[_0x428f('0x4e')]['id']){delete _0x5d97a3[_0x428f('0x4e')]['id'];}return db[_0x428f('0x31')]['find']({'where':{'id':_0x5d97a3[_0x428f('0x4b')]['id']}})['then'](handleEntityNotFound(_0x550f5c,null))[_0x428f('0x29')](saveUpdates(_0x5d97a3[_0x428f('0x4e')],null))[_0x428f('0x29')](respondWithResult(_0x550f5c,null))[_0x428f('0x49')](handleError(_0x550f5c,null));};exports['destroy']=function(_0x3ef31f,_0x26a0be){return db['ChatGroup'][_0x428f('0x4c')]({'where':{'id':_0x3ef31f[_0x428f('0x4b')]['id']}})[_0x428f('0x29')](handleEntityNotFound(_0x26a0be,null))['then'](removeEntity(_0x26a0be,null))[_0x428f('0x49')](handleError(_0x26a0be,null));};exports['describe']=function(_0x51b499,_0x382afa){return db['ChatGroup'][_0x428f('0x4f')]()[_0x428f('0x29')](respondWithResult(_0x382afa,null))[_0x428f('0x49')](handleError(_0x382afa,null));};exports['getUnread']=function(_0x182119,_0x488744,_0xd434f6){return db[_0x428f('0x50')][_0x428f('0x24')]({'where':{'ChatGroupId':_0x182119[_0x428f('0x4b')]['id'],'ToId':_0x182119[_0x428f('0x51')]['id'],'read':![]}})['then'](function(_0x3e8a6a){return{'id':_[_0x428f('0x52')](_0x182119[_0x428f('0x4b')]['id']),'count':_0x3e8a6a};})[_0x428f('0x29')](respondWithResult(_0x488744,null))[_0x428f('0x49')](handleError(_0x488744,null));};exports['addMembers']=function(_0x37fa38,_0x3f11ad,_0x3bbf3f){return db[_0x428f('0x31')][_0x428f('0x4c')]({'where':{'id':_0x37fa38[_0x428f('0x4b')]['id']}})[_0x428f('0x29')](handleEntityNotFound(_0x3f11ad,null))[_0x428f('0x29')](function(_0x6ac1e5){if(_0x6ac1e5){return _0x6ac1e5[_0x428f('0x53')](_0x37fa38[_0x428f('0x4e')]['ids'],_[_0x428f('0x54')](_0x37fa38[_0x428f('0x4e')],[_0x428f('0x55'),'id'])||{});}})[_0x428f('0x29')](respondWithResult(_0x3f11ad,null))[_0x428f('0x49')](handleError(_0x3f11ad,null));};exports[_0x428f('0x56')]=function(_0x7ded2c,_0x3db91f,_0x164070){var _0x5ae472={};var _0x64d3db={};var _0x41a9a5;var _0x175549;return db[_0x428f('0x31')]['findOne']({'where':{'id':_0x7ded2c[_0x428f('0x4b')]['id']}})['then'](handleEntityNotFound(_0x3db91f,null))[_0x428f('0x29')](function(_0x129259){if(_0x129259){_0x41a9a5=_0x129259;_0x64d3db['model']=_[_0x428f('0x38')](db['User'][_0x428f('0x32')]);_0x64d3db[_0x428f('0x37')]=_[_0x428f('0x38')](_0x7ded2c[_0x428f('0x37')]);_0x64d3db[_0x428f('0x42')]=_[_0x428f('0x39')](_0x64d3db['model'],_0x64d3db[_0x428f('0x37')]);_0x5ae472['attributes']=_['intersection'](_0x64d3db['model'],qs[_0x428f('0x3b')](_0x7ded2c[_0x428f('0x37')][_0x428f('0x3b')]));_0x5ae472['attributes']=_0x5ae472[_0x428f('0x3a')][_0x428f('0x3c')]?_0x5ae472[_0x428f('0x3a')]:_0x64d3db[_0x428f('0x36')];_0x5ae472['order']=qs['sort'](_0x7ded2c['query']['sort']);_0x5ae472['where']=qs[_0x428f('0x42')](_[_0x428f('0x41')](_0x7ded2c[_0x428f('0x37')],_0x64d3db[_0x428f('0x42')]));if(_0x7ded2c[_0x428f('0x37')][_0x428f('0x43')]){_0x5ae472['where']=_[_0x428f('0x44')](_0x5ae472['where'],{'$or':_['map'](_0x5ae472[_0x428f('0x3a')],function(_0x417157){var _0x3f9cec={};_0x3f9cec[_0x417157]={'$like':'%'+_0x7ded2c[_0x428f('0x37')][_0x428f('0x43')]+'%'};return _0x3f9cec;})});}_0x5ae472=_[_0x428f('0x44')]({},_0x5ae472,_0x7ded2c[_0x428f('0x57')]);return _0x41a9a5[_0x428f('0x56')](_0x5ae472);}})[_0x428f('0x29')](function(_0x4e6dc5){if(_0x4e6dc5){_0x175549=_0x4e6dc5[_0x428f('0x3c')];if(!_0x7ded2c[_0x428f('0x37')]['hasOwnProperty'](_0x428f('0x3e'))){_0x5ae472[_0x428f('0x23')]=qs['limit'](_0x7ded2c[_0x428f('0x37')][_0x428f('0x23')]);_0x5ae472[_0x428f('0x22')]=qs['offset'](_0x7ded2c[_0x428f('0x37')][_0x428f('0x22')]);}return _0x41a9a5[_0x428f('0x56')](_0x5ae472);}})[_0x428f('0x29')](function(_0x4afefd){if(_0x4afefd){return _0x4afefd?{'count':_0x175549,'rows':_0x4afefd}:null;}})[_0x428f('0x29')](respondWithResult(_0x3db91f,null))[_0x428f('0x49')](handleError(_0x3db91f,null));};exports[_0x428f('0x58')]=function(_0x292455,_0x55cff1,_0x446877){return db[_0x428f('0x31')][_0x428f('0x4c')]({'where':{'id':_0x292455['params']['id']}})[_0x428f('0x29')](handleEntityNotFound(_0x55cff1,null))[_0x428f('0x29')](function(_0x4cb08c){if(_0x4cb08c){return _0x4cb08c['removeMembers'](_0x292455[_0x428f('0x37')][_0x428f('0x55')]);}})[_0x428f('0x29')](respondWithStatusCode(_0x55cff1,null))[_0x428f('0x49')](handleError(_0x55cff1,null));};exports[_0x428f('0x59')]=function(_0x3e8976,_0x3addd7,_0x12940b){if(_0x3e8976['body']['id']){delete _0x3e8976[_0x428f('0x4e')]['id'];}return db[_0x428f('0x31')][_0x428f('0x4c')]({'where':{'id':_0x3e8976[_0x428f('0x4b')]['id']}})[_0x428f('0x29')](handleEntityNotFound(_0x3addd7,null))[_0x428f('0x29')](function(_0x496266){if(_0x496266){_0x3e8976[_0x428f('0x4e')][_0x428f('0x5a')]=_0x496266['id'];return db[_0x428f('0x50')][_0x428f('0x4d')](_0x3e8976[_0x428f('0x4e')]);}})[_0x428f('0x29')](respondWithResult(_0x3addd7,null))[_0x428f('0x49')](handleError(_0x3addd7,null));};exports[_0x428f('0x5b')]=function(_0x43e313,_0x15bdfc,_0x50e522){var _0x27972e={};var _0x12630d={};var _0x4ce3ab;var _0x2b1f6d;return db[_0x428f('0x31')][_0x428f('0x5c')]({'where':{'id':_0x43e313[_0x428f('0x4b')]['id']}})[_0x428f('0x29')](handleEntityNotFound(_0x15bdfc,null))[_0x428f('0x29')](function(_0x5319bb){if(_0x5319bb){_0x4ce3ab=_0x5319bb;_0x12630d[_0x428f('0x36')]=_[_0x428f('0x38')](db[_0x428f('0x50')][_0x428f('0x32')]);_0x12630d[_0x428f('0x37')]=_[_0x428f('0x38')](_0x43e313[_0x428f('0x37')]);_0x12630d[_0x428f('0x42')]=_['intersection'](_0x12630d[_0x428f('0x36')],_0x12630d['query']);_0x27972e['attributes']=_[_0x428f('0x39')](_0x12630d[_0x428f('0x36')],qs[_0x428f('0x3b')](_0x43e313[_0x428f('0x37')]['fields']));_0x27972e['attributes']=_0x27972e[_0x428f('0x3a')][_0x428f('0x3c')]?_0x27972e[_0x428f('0x3a')]:_0x12630d[_0x428f('0x36')];_0x27972e[_0x428f('0x3f')]=qs[_0x428f('0x40')](_0x43e313[_0x428f('0x37')]['sort']);_0x27972e['where']=qs[_0x428f('0x42')](_[_0x428f('0x41')](_0x43e313[_0x428f('0x37')],_0x12630d[_0x428f('0x42')]));if(_0x43e313['query'][_0x428f('0x43')]){_0x27972e[_0x428f('0x45')]=_[_0x428f('0x44')](_0x27972e[_0x428f('0x45')],{'$or':_[_0x428f('0x30')](_0x27972e[_0x428f('0x3a')],function(_0x254eb9){var _0x540100={};_0x540100[_0x254eb9]={'$like':'%'+_0x43e313[_0x428f('0x37')]['filter']+'%'};return _0x540100;})});}if(_0x43e313['query'][_0x428f('0x5d')]){var _0x443e9c=_0x43e313[_0x428f('0x37')][_0x428f('0x5d')]['split'](',');var _0x218491={};_0x218491[_0x443e9c[0x0]]={'$gte':moment(_0x443e9c[0x1])[_0x428f('0x5e')](_0x428f('0x5f'))};_0x27972e['where']=_[_0x428f('0x44')](_0x27972e['where'],_0x218491);}_0x27972e=_[_0x428f('0x44')]({},_0x27972e,_0x43e313[_0x428f('0x57')]);return _0x4ce3ab[_0x428f('0x5b')](_0x27972e);}})[_0x428f('0x29')](function(_0x294444){if(_0x294444){_0x2b1f6d=_0x294444[_0x428f('0x3c')];if(!_0x43e313[_0x428f('0x37')][_0x428f('0x3d')](_0x428f('0x3e'))){_0x27972e['limit']=qs[_0x428f('0x23')](_0x43e313[_0x428f('0x37')][_0x428f('0x23')]);_0x27972e[_0x428f('0x22')]=qs[_0x428f('0x22')](_0x43e313[_0x428f('0x37')][_0x428f('0x22')]);}return _0x4ce3ab[_0x428f('0x5b')](_0x27972e);}})['then'](function(_0x2cd2be){if(_0x2cd2be){return _0x2cd2be?{'count':_0x2b1f6d,'rows':_0x2cd2be}:null;}})[_0x428f('0x29')](respondWithResult(_0x15bdfc,null))[_0x428f('0x49')](handleError(_0x15bdfc,null));};
\ No newline at end of file
+var _0x3c22=['findOne','User','length','order','sort','nolimit','removeMembers','ChatGroupId','getMessages','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','ejs','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./chatGroup.socket','register','status','end','offset','undefined','limit','count','set','json','apply','reject','update','then','destroy','error','stack','name','map','ChatGroup','rawAttributes','fieldName','type','query','keys','intersection','attributes','model','fields','hasOwnProperty','where','filters','pick','merge','VIRTUAL','filter','options','includeAll','include','rows','catch','show','params','find','create','body','describe','getUnread','ChatInternalMessage','user','toInteger','addMembers','ids','omit','getMembers'];(function(_0x4ffef6,_0x44fe20){var _0x29790e=function(_0xe7b9f9){while(--_0xe7b9f9){_0x4ffef6['push'](_0x4ffef6['shift']());}};_0x29790e(++_0x44fe20);}(_0x3c22,0x6b));var _0x23c2=function(_0x1ed648,_0x1b3417){_0x1ed648=_0x1ed648-0x0;var _0x2e1ab4=_0x3c22[_0x1ed648];return _0x2e1ab4;};'use strict';var emlformat=require(_0x23c2('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x23c2('0x1'));var jsonpatch=require(_0x23c2('0x2'));var rp=require(_0x23c2('0x3'));var moment=require(_0x23c2('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x23c2('0x5'));var util=require(_0x23c2('0x6'));var path=require(_0x23c2('0x7'));var sox=require(_0x23c2('0x8'));var csv=require('to-csv');var ejs=require(_0x23c2('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0x23c2('0xa'));var jsforce=require(_0x23c2('0xb'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x23c2('0xc'));var Papa=require(_0x23c2('0xd'));var Redis=require(_0x23c2('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x23c2('0xf'));var as=require(_0x23c2('0x10'));var hardwareService=require(_0x23c2('0x11'));var logger=require('../../config/logger')(_0x23c2('0x12'));var utils=require(_0x23c2('0x13'));var config=require(_0x23c2('0x14'));var licenseUtil=require(_0x23c2('0x15'));var db=require(_0x23c2('0x16'))['db'];config[_0x23c2('0x17')]=_[_0x23c2('0x18')](config[_0x23c2('0x17')],{'host':'localhost','port':0x18eb});var socket=require(_0x23c2('0x19'))(new Redis(config['redis']));require(_0x23c2('0x1a'))[_0x23c2('0x1b')](socket);function respondWithStatusCode(_0x738e47,_0x5c736d){_0x5c736d=_0x5c736d||0xcc;return function(_0x4914c3){if(_0x4914c3){return _0x738e47['sendStatus'](_0x5c736d);}return _0x738e47[_0x23c2('0x1c')](_0x5c736d)[_0x23c2('0x1d')]();};}function respondWithResult(_0x323713,_0x6c3766){_0x6c3766=_0x6c3766||0xc8;return function(_0x38e752){if(_0x38e752){return _0x323713[_0x23c2('0x1c')](_0x6c3766)['json'](_0x38e752);}};}function respondWithFilteredResult(_0x2b7ac8,_0x44f35a){return function(_0x3f1c3c){if(_0x3f1c3c){var _0x33a7e6=typeof _0x44f35a[_0x23c2('0x1e')]===_0x23c2('0x1f')&&typeof _0x44f35a[_0x23c2('0x20')]===_0x23c2('0x1f');var _0x4d2e9e=_0x3f1c3c['count'];var _0x2857f7=_0x33a7e6?0x0:_0x44f35a['offset'];var _0x132893=_0x33a7e6?_0x3f1c3c[_0x23c2('0x21')]:_0x44f35a[_0x23c2('0x1e')]+_0x44f35a['limit'];var _0x551133;if(_0x132893>=_0x4d2e9e){_0x132893=_0x4d2e9e;_0x551133=0xc8;}else{_0x551133=0xce;}_0x2b7ac8[_0x23c2('0x1c')](_0x551133);return _0x2b7ac8[_0x23c2('0x22')]('Content-Range',_0x2857f7+'-'+_0x132893+'/'+_0x4d2e9e)[_0x23c2('0x23')](_0x3f1c3c);}return null;};}function patchUpdates(_0x410b8f){return function(_0x5bb9a0){try{jsonpatch[_0x23c2('0x24')](_0x5bb9a0,_0x410b8f,!![]);}catch(_0x1541e0){return BPromise[_0x23c2('0x25')](_0x1541e0);}return _0x5bb9a0['save']();};}function saveUpdates(_0x1db277,_0x33a25e){return function(_0x320f7c){if(_0x320f7c){return _0x320f7c[_0x23c2('0x26')](_0x1db277)[_0x23c2('0x27')](function(_0x4853cd){return _0x4853cd;});}return null;};}function removeEntity(_0x45ad05,_0x589dec){return function(_0x2ebd7c){if(_0x2ebd7c){return _0x2ebd7c[_0x23c2('0x28')]()[_0x23c2('0x27')](function(){_0x45ad05['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x40a296,_0x1105be){return function(_0x5039f0){if(!_0x5039f0){_0x40a296['sendStatus'](0x194);}return _0x5039f0;};}function handleError(_0x6432e0,_0x294115){_0x294115=_0x294115||0x1f4;return function(_0xf1a518){logger[_0x23c2('0x29')](_0xf1a518[_0x23c2('0x2a')]);if(_0xf1a518[_0x23c2('0x2b')]){delete _0xf1a518['name'];}_0x6432e0[_0x23c2('0x1c')](_0x294115)['send'](_0xf1a518);};}exports['index']=function(_0x5f18a7,_0x29df15){var _0x1ca57c={},_0x1075cf={},_0x58d3a5={'count':0x0,'rows':[]};var _0x6424ca=_[_0x23c2('0x2c')](db[_0x23c2('0x2d')][_0x23c2('0x2e')],function(_0x31582b){return{'name':_0x31582b[_0x23c2('0x2f')],'type':_0x31582b[_0x23c2('0x30')]['key']};});_0x1075cf['model']=_[_0x23c2('0x2c')](_0x6424ca,_0x23c2('0x2b'));_0x1075cf[_0x23c2('0x31')]=_[_0x23c2('0x32')](_0x5f18a7[_0x23c2('0x31')]);_0x1075cf['filters']=_[_0x23c2('0x33')](_0x1075cf['model'],_0x1075cf[_0x23c2('0x31')]);_0x1ca57c[_0x23c2('0x34')]=_[_0x23c2('0x33')](_0x1075cf[_0x23c2('0x35')],qs['fields'](_0x5f18a7[_0x23c2('0x31')][_0x23c2('0x36')]));_0x1ca57c[_0x23c2('0x34')]=_0x1ca57c[_0x23c2('0x34')]['length']?_0x1ca57c[_0x23c2('0x34')]:_0x1075cf['model'];if(!_0x5f18a7[_0x23c2('0x31')][_0x23c2('0x37')]('nolimit')){_0x1ca57c[_0x23c2('0x20')]=qs[_0x23c2('0x20')](_0x5f18a7['query']['limit']);_0x1ca57c[_0x23c2('0x1e')]=qs[_0x23c2('0x1e')](_0x5f18a7[_0x23c2('0x31')][_0x23c2('0x1e')]);}_0x1ca57c['order']=qs['sort'](_0x5f18a7['query']['sort']);_0x1ca57c[_0x23c2('0x38')]=qs[_0x23c2('0x39')](_[_0x23c2('0x3a')](_0x5f18a7[_0x23c2('0x31')],_0x1075cf['filters']),_0x6424ca);if(_0x5f18a7['query']['filter']){_0x1ca57c[_0x23c2('0x38')]=_[_0x23c2('0x3b')](_0x1ca57c[_0x23c2('0x38')],{'$or':_['map'](_0x6424ca,function(_0x59efb9){if(_0x59efb9['type']!==_0x23c2('0x3c')){var _0x46e725={};_0x46e725[_0x59efb9['name']]={'$like':'%'+_0x5f18a7[_0x23c2('0x31')][_0x23c2('0x3d')]+'%'};return _0x46e725;}})});}_0x1ca57c=_[_0x23c2('0x3b')]({},_0x1ca57c,_0x5f18a7[_0x23c2('0x3e')]);var _0x241310={'where':_0x1ca57c[_0x23c2('0x38')]};return db[_0x23c2('0x2d')][_0x23c2('0x21')](_0x241310)[_0x23c2('0x27')](function(_0x32e521){_0x58d3a5['count']=_0x32e521;if(_0x5f18a7[_0x23c2('0x31')][_0x23c2('0x3f')]){_0x1ca57c[_0x23c2('0x40')]=[{'all':!![]}];}return db[_0x23c2('0x2d')]['findAll'](_0x1ca57c);})['then'](function(_0x42a257){_0x58d3a5[_0x23c2('0x41')]=_0x42a257;return _0x58d3a5;})['then'](respondWithFilteredResult(_0x29df15,_0x1ca57c))[_0x23c2('0x42')](handleError(_0x29df15,null));};exports[_0x23c2('0x43')]=function(_0x1fc7e4,_0x5de36c){var _0x37b6bf={'raw':!![],'where':{'id':_0x1fc7e4[_0x23c2('0x44')]['id']}},_0x10b648={};_0x10b648['model']=_[_0x23c2('0x32')](db[_0x23c2('0x2d')][_0x23c2('0x2e')]);_0x10b648[_0x23c2('0x31')]=_[_0x23c2('0x32')](_0x1fc7e4[_0x23c2('0x31')]);_0x10b648['filters']=_['intersection'](_0x10b648[_0x23c2('0x35')],_0x10b648[_0x23c2('0x31')]);_0x37b6bf[_0x23c2('0x34')]=_[_0x23c2('0x33')](_0x10b648[_0x23c2('0x35')],qs[_0x23c2('0x36')](_0x1fc7e4[_0x23c2('0x31')]['fields']));_0x37b6bf[_0x23c2('0x34')]=_0x37b6bf[_0x23c2('0x34')]['length']?_0x37b6bf['attributes']:_0x10b648[_0x23c2('0x35')];if(_0x1fc7e4[_0x23c2('0x31')][_0x23c2('0x3f')]){_0x37b6bf[_0x23c2('0x40')]=[{'all':!![]}];}_0x37b6bf=_[_0x23c2('0x3b')]({},_0x37b6bf,_0x1fc7e4[_0x23c2('0x3e')]);return db['ChatGroup'][_0x23c2('0x45')](_0x37b6bf)['then'](handleEntityNotFound(_0x5de36c,null))[_0x23c2('0x27')](respondWithResult(_0x5de36c,null))[_0x23c2('0x42')](handleError(_0x5de36c,null));};exports[_0x23c2('0x46')]=function(_0x3ca02f,_0x23825e){return db['ChatGroup'][_0x23c2('0x46')](_0x3ca02f[_0x23c2('0x47')],{})[_0x23c2('0x27')](respondWithResult(_0x23825e,0xc9))[_0x23c2('0x42')](handleError(_0x23825e,null));};exports['update']=function(_0x57f1cc,_0x774efd){if(_0x57f1cc[_0x23c2('0x47')]['id']){delete _0x57f1cc['body']['id'];}return db[_0x23c2('0x2d')]['find']({'where':{'id':_0x57f1cc[_0x23c2('0x44')]['id']}})[_0x23c2('0x27')](handleEntityNotFound(_0x774efd,null))[_0x23c2('0x27')](saveUpdates(_0x57f1cc['body'],null))[_0x23c2('0x27')](respondWithResult(_0x774efd,null))[_0x23c2('0x42')](handleError(_0x774efd,null));};exports[_0x23c2('0x28')]=function(_0x30c5a5,_0x579b80){return db[_0x23c2('0x2d')][_0x23c2('0x45')]({'where':{'id':_0x30c5a5['params']['id']}})[_0x23c2('0x27')](handleEntityNotFound(_0x579b80,null))[_0x23c2('0x27')](removeEntity(_0x579b80,null))['catch'](handleError(_0x579b80,null));};exports['describe']=function(_0x4d1cd1,_0x57c81d){return db['ChatGroup'][_0x23c2('0x48')]()[_0x23c2('0x27')](respondWithResult(_0x57c81d,null))[_0x23c2('0x42')](handleError(_0x57c81d,null));};exports[_0x23c2('0x49')]=function(_0xf7ec23,_0x469478,_0x479634){return db[_0x23c2('0x4a')][_0x23c2('0x21')]({'where':{'ChatGroupId':_0xf7ec23['params']['id'],'ToId':_0xf7ec23[_0x23c2('0x4b')]['id'],'read':![]}})[_0x23c2('0x27')](function(_0x27bed2){return{'id':_[_0x23c2('0x4c')](_0xf7ec23[_0x23c2('0x44')]['id']),'count':_0x27bed2};})[_0x23c2('0x27')](respondWithResult(_0x469478,null))[_0x23c2('0x42')](handleError(_0x469478,null));};exports['addMembers']=function(_0x326b7e,_0x3ddb63,_0x1a84f3){return db[_0x23c2('0x2d')][_0x23c2('0x45')]({'where':{'id':_0x326b7e[_0x23c2('0x44')]['id']}})[_0x23c2('0x27')](handleEntityNotFound(_0x3ddb63,null))['then'](function(_0x5c9d15){if(_0x5c9d15){return _0x5c9d15[_0x23c2('0x4d')](_0x326b7e[_0x23c2('0x47')][_0x23c2('0x4e')],_[_0x23c2('0x4f')](_0x326b7e[_0x23c2('0x47')],[_0x23c2('0x4e'),'id'])||{});}})[_0x23c2('0x27')](respondWithResult(_0x3ddb63,null))[_0x23c2('0x42')](handleError(_0x3ddb63,null));};exports[_0x23c2('0x50')]=function(_0x1a21d1,_0x55456d,_0x5d28c3){var _0x4fe365={};var _0x46a50f={};var _0x3a7a85;var _0x7fccda;return db[_0x23c2('0x2d')][_0x23c2('0x51')]({'where':{'id':_0x1a21d1[_0x23c2('0x44')]['id']}})['then'](handleEntityNotFound(_0x55456d,null))[_0x23c2('0x27')](function(_0x1e4bed){if(_0x1e4bed){_0x3a7a85=_0x1e4bed;_0x46a50f[_0x23c2('0x35')]=_[_0x23c2('0x32')](db[_0x23c2('0x52')]['rawAttributes']);_0x46a50f[_0x23c2('0x31')]=_[_0x23c2('0x32')](_0x1a21d1['query']);_0x46a50f[_0x23c2('0x39')]=_[_0x23c2('0x33')](_0x46a50f['model'],_0x46a50f[_0x23c2('0x31')]);_0x4fe365[_0x23c2('0x34')]=_[_0x23c2('0x33')](_0x46a50f['model'],qs['fields'](_0x1a21d1[_0x23c2('0x31')][_0x23c2('0x36')]));_0x4fe365[_0x23c2('0x34')]=_0x4fe365[_0x23c2('0x34')][_0x23c2('0x53')]?_0x4fe365['attributes']:_0x46a50f[_0x23c2('0x35')];_0x4fe365[_0x23c2('0x54')]=qs['sort'](_0x1a21d1[_0x23c2('0x31')][_0x23c2('0x55')]);_0x4fe365[_0x23c2('0x38')]=qs['filters'](_['pick'](_0x1a21d1[_0x23c2('0x31')],_0x46a50f['filters']));if(_0x1a21d1[_0x23c2('0x31')]['filter']){_0x4fe365['where']=_[_0x23c2('0x3b')](_0x4fe365[_0x23c2('0x38')],{'$or':_[_0x23c2('0x2c')](_0x4fe365[_0x23c2('0x34')],function(_0x27f0cc){var _0x28d9f0={};_0x28d9f0[_0x27f0cc]={'$like':'%'+_0x1a21d1[_0x23c2('0x31')]['filter']+'%'};return _0x28d9f0;})});}_0x4fe365=_[_0x23c2('0x3b')]({},_0x4fe365,_0x1a21d1[_0x23c2('0x3e')]);return _0x3a7a85[_0x23c2('0x50')](_0x4fe365);}})[_0x23c2('0x27')](function(_0x47a692){if(_0x47a692){_0x7fccda=_0x47a692[_0x23c2('0x53')];if(!_0x1a21d1[_0x23c2('0x31')][_0x23c2('0x37')](_0x23c2('0x56'))){_0x4fe365['limit']=qs['limit'](_0x1a21d1[_0x23c2('0x31')]['limit']);_0x4fe365[_0x23c2('0x1e')]=qs[_0x23c2('0x1e')](_0x1a21d1['query'][_0x23c2('0x1e')]);}return _0x3a7a85[_0x23c2('0x50')](_0x4fe365);}})[_0x23c2('0x27')](function(_0x561516){if(_0x561516){return _0x561516?{'count':_0x7fccda,'rows':_0x561516}:null;}})[_0x23c2('0x27')](respondWithResult(_0x55456d,null))[_0x23c2('0x42')](handleError(_0x55456d,null));};exports[_0x23c2('0x57')]=function(_0x5059bd,_0x80583c,_0x3d8ad2){return db[_0x23c2('0x2d')][_0x23c2('0x45')]({'where':{'id':_0x5059bd[_0x23c2('0x44')]['id']}})[_0x23c2('0x27')](handleEntityNotFound(_0x80583c,null))[_0x23c2('0x27')](function(_0x422fad){if(_0x422fad){return _0x422fad[_0x23c2('0x57')](_0x5059bd[_0x23c2('0x31')][_0x23c2('0x4e')]);}})[_0x23c2('0x27')](respondWithStatusCode(_0x80583c,null))[_0x23c2('0x42')](handleError(_0x80583c,null));};exports['addMessage']=function(_0x1f1265,_0x2684ba,_0x404e53){if(_0x1f1265[_0x23c2('0x47')]['id']){delete _0x1f1265[_0x23c2('0x47')]['id'];}return db[_0x23c2('0x2d')]['find']({'where':{'id':_0x1f1265[_0x23c2('0x44')]['id']}})['then'](handleEntityNotFound(_0x2684ba,null))[_0x23c2('0x27')](function(_0x4a4926){if(_0x4a4926){_0x1f1265[_0x23c2('0x47')][_0x23c2('0x58')]=_0x4a4926['id'];return db[_0x23c2('0x4a')][_0x23c2('0x46')](_0x1f1265[_0x23c2('0x47')]);}})[_0x23c2('0x27')](respondWithResult(_0x2684ba,null))[_0x23c2('0x42')](handleError(_0x2684ba,null));};exports[_0x23c2('0x59')]=function(_0x59a489,_0x2054f0,_0x3cbcb9){var _0x1ef9fb={};var _0x2079a3={};var _0x44914b;var _0x272327;return db[_0x23c2('0x2d')]['findOne']({'where':{'id':_0x59a489[_0x23c2('0x44')]['id']}})[_0x23c2('0x27')](handleEntityNotFound(_0x2054f0,null))[_0x23c2('0x27')](function(_0x2abb36){if(_0x2abb36){_0x44914b=_0x2abb36;_0x2079a3[_0x23c2('0x35')]=_[_0x23c2('0x32')](db['ChatInternalMessage']['rawAttributes']);_0x2079a3[_0x23c2('0x31')]=_[_0x23c2('0x32')](_0x59a489[_0x23c2('0x31')]);_0x2079a3['filters']=_[_0x23c2('0x33')](_0x2079a3[_0x23c2('0x35')],_0x2079a3[_0x23c2('0x31')]);_0x1ef9fb['attributes']=_[_0x23c2('0x33')](_0x2079a3[_0x23c2('0x35')],qs['fields'](_0x59a489[_0x23c2('0x31')][_0x23c2('0x36')]));_0x1ef9fb[_0x23c2('0x34')]=_0x1ef9fb[_0x23c2('0x34')]['length']?_0x1ef9fb[_0x23c2('0x34')]:_0x2079a3[_0x23c2('0x35')];_0x1ef9fb[_0x23c2('0x54')]=qs[_0x23c2('0x55')](_0x59a489[_0x23c2('0x31')][_0x23c2('0x55')]);_0x1ef9fb[_0x23c2('0x38')]=qs[_0x23c2('0x39')](_[_0x23c2('0x3a')](_0x59a489[_0x23c2('0x31')],_0x2079a3[_0x23c2('0x39')]));if(_0x59a489[_0x23c2('0x31')][_0x23c2('0x3d')]){_0x1ef9fb[_0x23c2('0x38')]=_[_0x23c2('0x3b')](_0x1ef9fb['where'],{'$or':_[_0x23c2('0x2c')](_0x1ef9fb[_0x23c2('0x34')],function(_0x15fced){var _0x291c45={};_0x291c45[_0x15fced]={'$like':'%'+_0x59a489[_0x23c2('0x31')][_0x23c2('0x3d')]+'%'};return _0x291c45;})});}if(_0x59a489[_0x23c2('0x31')]['$gte']){var _0x58710f=_0x59a489[_0x23c2('0x31')][_0x23c2('0x5a')][_0x23c2('0x5b')](',');var _0x33425e={};_0x33425e[_0x58710f[0x0]]={'$gte':moment(_0x58710f[0x1])[_0x23c2('0x5c')](_0x23c2('0x5d'))};_0x1ef9fb[_0x23c2('0x38')]=_[_0x23c2('0x3b')](_0x1ef9fb[_0x23c2('0x38')],_0x33425e);}_0x1ef9fb=_[_0x23c2('0x3b')]({},_0x1ef9fb,_0x59a489[_0x23c2('0x3e')]);return _0x44914b[_0x23c2('0x59')](_0x1ef9fb);}})[_0x23c2('0x27')](function(_0xe5ab7a){if(_0xe5ab7a){_0x272327=_0xe5ab7a[_0x23c2('0x53')];if(!_0x59a489['query']['hasOwnProperty'](_0x23c2('0x56'))){_0x1ef9fb['limit']=qs[_0x23c2('0x20')](_0x59a489[_0x23c2('0x31')]['limit']);_0x1ef9fb[_0x23c2('0x1e')]=qs['offset'](_0x59a489[_0x23c2('0x31')][_0x23c2('0x1e')]);}return _0x44914b[_0x23c2('0x59')](_0x1ef9fb);}})[_0x23c2('0x27')](function(_0x317de8){if(_0x317de8){return _0x317de8?{'count':_0x272327,'rows':_0x317de8}:null;}})['then'](respondWithResult(_0x2054f0,null))[_0x23c2('0x42')](handleError(_0x2054f0,null));};
\ No newline at end of file
index a9c79bf..bec29a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x020a=['emit','hasOwnProperty','exports','events','../../mysqldb','ChatGroup','save','update','remove'];(function(_0xd3541e,_0x2889a9){var _0x1f8419=function(_0x5b7065){while(--_0x5b7065){_0xd3541e['push'](_0xd3541e['shift']());}};_0x1f8419(++_0x2889a9);}(_0x020a,0xc9));var _0xa020=function(_0x1d2bbb,_0x202267){_0x1d2bbb=_0x1d2bbb-0x0;var _0x38082b=_0x020a[_0x1d2bbb];return _0x38082b;};'use strict';var EventEmitter=require(_0xa020('0x0'));var ChatGroup=require(_0xa020('0x1'))['db'][_0xa020('0x2')];var ChatGroupEvents=new EventEmitter();ChatGroupEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xa020('0x3'),'afterUpdate':_0xa020('0x4'),'afterDestroy':_0xa020('0x5')};function emitEvent(_0xdb747f){return function(_0xa15fd7,_0x347152,_0x37acd6){ChatGroupEvents[_0xa020('0x6')](_0xdb747f+':'+_0xa15fd7['id'],_0xa15fd7);ChatGroupEvents[_0xa020('0x6')](_0xdb747f,_0xa15fd7);_0x37acd6(null);};}for(var e in events){if(events[_0xa020('0x7')](e)){var event=events[e];ChatGroup['hook'](e,emitEvent(event));}}module[_0xa020('0x8')]=ChatGroupEvents;
\ No newline at end of file
+var _0xe6bf=['hook','ChatGroup','setMaxListeners','update','remove','emit'];(function(_0x570c8a,_0x4a11cc){var _0x25dc12=function(_0x4585d9){while(--_0x4585d9){_0x570c8a['push'](_0x570c8a['shift']());}};_0x25dc12(++_0x4a11cc);}(_0xe6bf,0x8b));var _0xfe6b=function(_0x1ddfbd,_0xfa4d97){_0x1ddfbd=_0x1ddfbd-0x0;var _0x2469b8=_0xe6bf[_0x1ddfbd];return _0x2469b8;};'use strict';var EventEmitter=require('events');var ChatGroup=require('../../mysqldb')['db'][_0xfe6b('0x0')];var ChatGroupEvents=new EventEmitter();ChatGroupEvents[_0xfe6b('0x1')](0x0);var events={'afterCreate':'save','afterUpdate':_0xfe6b('0x2'),'afterDestroy':_0xfe6b('0x3')};function emitEvent(_0x1ce8ea){return function(_0x46308e,_0x1d9562,_0x5298a1){ChatGroupEvents[_0xfe6b('0x4')](_0x1ce8ea+':'+_0x46308e['id'],_0x46308e);ChatGroupEvents[_0xfe6b('0x4')](_0x1ce8ea,_0x46308e);_0x5298a1(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatGroup[_0xfe6b('0x5')](e,emitEvent(event));}}module['exports']=ChatGroupEvents;
\ No newline at end of file
index a9ad15a..e2f3b64 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4fba=['./chatGroup.attributes','exports','define','ChatGroup','util','../../config/logger','api','path','rimraf','../../config/environment'];(function(_0x4243a3,_0x447337){var _0x1b2a33=function(_0x6a8200){while(--_0x6a8200){_0x4243a3['push'](_0x4243a3['shift']());}};_0x1b2a33(++_0x447337);}(_0x4fba,0x86));var _0xa4fb=function(_0x5a15ff,_0x5a3630){_0x5a15ff=_0x5a15ff-0x0;var _0x32cdf8=_0x4fba[_0x5a15ff];return _0x32cdf8;};'use strict';var _=require('lodash');var util=require(_0xa4fb('0x0'));var logger=require(_0xa4fb('0x1'))(_0xa4fb('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xa4fb('0x3'));var rimraf=require(_0xa4fb('0x4'));var config=require(_0xa4fb('0x5'));var attributes=require(_0xa4fb('0x6'));module[_0xa4fb('0x7')]=function(_0x5df38b,_0x2883a6){return _0x5df38b[_0xa4fb('0x8')](_0xa4fb('0x9'),attributes,{'tableName':'chat_groups','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xceb6=['./chatGroup.attributes','define','ChatGroup','lodash','util','api','moment','request-promise','path','rimraf','../../config/environment'];(function(_0x28ae90,_0x2c9791){var _0xe7bb0f=function(_0x5a3407){while(--_0x5a3407){_0x28ae90['push'](_0x28ae90['shift']());}};_0xe7bb0f(++_0x2c9791);}(_0xceb6,0xea));var _0x6ceb=function(_0x124420,_0x32b9ea){_0x124420=_0x124420-0x0;var _0x497804=_0xceb6[_0x124420];return _0x497804;};'use strict';var _=require(_0x6ceb('0x0'));var util=require(_0x6ceb('0x1'));var logger=require('../../config/logger')(_0x6ceb('0x2'));var moment=require(_0x6ceb('0x3'));var BPromise=require('bluebird');var rp=require(_0x6ceb('0x4'));var fs=require('fs');var path=require(_0x6ceb('0x5'));var rimraf=require(_0x6ceb('0x6'));var config=require(_0x6ceb('0x7'));var attributes=require(_0x6ceb('0x8'));module['exports']=function(_0x54cbe6,_0x258d35){return _0x54cbe6[_0x6ceb('0x9')](_0x6ceb('0xa'),attributes,{'tableName':'chat_groups','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index efffa76..76e545f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8910=['./chatGroup.socket','register','request','then','info','request\x20sent','debug','ChatGroup,\x20%s,\x20%s,\x20%s','stringify','error','code','ChatGroup,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','defaults','localhost','socket.io-emitter','redis'];(function(_0x180890,_0x4bc2cd){var _0x4f4d0f=function(_0xc64239){while(--_0xc64239){_0x180890['push'](_0x180890['shift']());}};_0x4f4d0f(++_0x4bc2cd);}(_0x8910,0x1ef));var _0x0891=function(_0x5c9865,_0x1a299a){_0x5c9865=_0x5c9865-0x0;var _0x54c22b=_0x8910[_0x5c9865];return _0x54c22b;};'use strict';var _=require(_0x0891('0x0'));var util=require(_0x0891('0x1'));var moment=require(_0x0891('0x2'));var BPromise=require(_0x0891('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0891('0x4'));var db=require(_0x0891('0x5'))['db'];var utils=require(_0x0891('0x6'));var logger=require(_0x0891('0x7'))(_0x0891('0x8'));var config=require(_0x0891('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x0891('0xa')]['http']({'port':0x232a});config['redis']=_[_0x0891('0xb')](config['redis'],{'host':_0x0891('0xc'),'port':0x18eb});var socket=require(_0x0891('0xd'))(new Redis(config[_0x0891('0xe')]));require(_0x0891('0xf'))[_0x0891('0x10')](socket);function respondWithRpcPromise(_0x14535b,_0x1f1f9d,_0x442477){return new BPromise(function(_0xea4569,_0x436c2e){return client[_0x0891('0x11')](_0x14535b,_0x442477)[_0x0891('0x12')](function(_0x3f6906){logger[_0x0891('0x13')]('ChatGroup,\x20%s,\x20%s',_0x1f1f9d,_0x0891('0x14'));logger[_0x0891('0x15')](_0x0891('0x16'),_0x1f1f9d,_0x0891('0x14'),JSON[_0x0891('0x17')](_0x3f6906));if(_0x3f6906[_0x0891('0x18')]){if(_0x3f6906[_0x0891('0x18')][_0x0891('0x19')]===0x1f4){logger[_0x0891('0x18')](_0x0891('0x1a'),_0x1f1f9d,_0x3f6906[_0x0891('0x18')][_0x0891('0x1b')]);return _0x436c2e(_0x3f6906[_0x0891('0x18')][_0x0891('0x1b')]);}logger[_0x0891('0x18')](_0x0891('0x1a'),_0x1f1f9d,_0x3f6906[_0x0891('0x18')][_0x0891('0x1b')]);return _0xea4569(_0x3f6906[_0x0891('0x18')][_0x0891('0x1b')]);}else{logger[_0x0891('0x13')](_0x0891('0x1a'),_0x1f1f9d,_0x0891('0x14'));_0xea4569(_0x3f6906[_0x0891('0x1c')][_0x0891('0x1b')]);}})[_0x0891('0x1d')](function(_0x18d5d8){logger[_0x0891('0x18')]('ChatGroup,\x20%s,\x20%s',_0x1f1f9d,_0x18d5d8);_0x436c2e(_0x18d5d8);});});}
\ No newline at end of file
+var _0x8c79=['ChatGroup,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','randomstring','../../mysqldb','../../config/utils','rpc','http','defaults','redis','./chatGroup.socket','register','request','then','info','ChatGroup,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x37f8ce,_0x43b86c){var _0x3c5f03=function(_0x24f9c4){while(--_0x24f9c4){_0x37f8ce['push'](_0x37f8ce['shift']());}};_0x3c5f03(++_0x43b86c);}(_0x8c79,0xa8));var _0x98c7=function(_0x270739,_0x165001){_0x270739=_0x270739-0x0;var _0x1258c4=_0x8c79[_0x270739];return _0x1258c4;};'use strict';var _=require(_0x98c7('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x98c7('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x98c7('0x2'))['db'];var utils=require(_0x98c7('0x3'));var logger=require('../../config/logger')(_0x98c7('0x4'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0x98c7('0x5')]({'port':0x232a});config['redis']=_[_0x98c7('0x6')](config[_0x98c7('0x7')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x98c7('0x8'))[_0x98c7('0x9')](socket);function respondWithRpcPromise(_0x23fdcf,_0x592777,_0xfbb848){return new BPromise(function(_0x4d6c3c,_0x9e0c1a){return client[_0x98c7('0xa')](_0x23fdcf,_0xfbb848)[_0x98c7('0xb')](function(_0x3dd9da){logger[_0x98c7('0xc')](_0x98c7('0xd'),_0x592777,_0x98c7('0xe'));logger[_0x98c7('0xf')](_0x98c7('0x10'),_0x592777,_0x98c7('0xe'),JSON[_0x98c7('0x11')](_0x3dd9da));if(_0x3dd9da[_0x98c7('0x12')]){if(_0x3dd9da[_0x98c7('0x12')][_0x98c7('0x13')]===0x1f4){logger[_0x98c7('0x12')](_0x98c7('0xd'),_0x592777,_0x3dd9da['error']['message']);return _0x9e0c1a(_0x3dd9da[_0x98c7('0x12')][_0x98c7('0x14')]);}logger[_0x98c7('0x12')](_0x98c7('0xd'),_0x592777,_0x3dd9da['error']['message']);return _0x4d6c3c(_0x3dd9da[_0x98c7('0x12')]['message']);}else{logger[_0x98c7('0xc')](_0x98c7('0xd'),_0x592777,_0x98c7('0xe'));_0x4d6c3c(_0x3dd9da[_0x98c7('0x15')]['message']);}})[_0x98c7('0x16')](function(_0x24a557){logger[_0x98c7('0x12')](_0x98c7('0xd'),_0x592777,_0x24a557);_0x9e0c1a(_0x24a557);});});}
\ No newline at end of file
index f704405..86df651 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x097a=['register','./chatGroup.events','save','update','emit','removeListener'];(function(_0x49d1df,_0x5b1388){var _0x354ee5=function(_0x24fde6){while(--_0x24fde6){_0x49d1df['push'](_0x49d1df['shift']());}};_0x354ee5(++_0x5b1388);}(_0x097a,0x1c3));var _0xa097=function(_0x27f2c6,_0x4421d4){_0x27f2c6=_0x27f2c6-0x0;var _0x20cf63=_0x097a[_0x27f2c6];return _0x20cf63;};'use strict';var ChatGroupEvents=require(_0xa097('0x0'));var events=[_0xa097('0x1'),'remove',_0xa097('0x2')];function createListener(_0xe25f20,_0x1e5d8e){return function(_0x16413b){_0x1e5d8e[_0xa097('0x3')](_0xe25f20,_0x16413b);};}function removeListener(_0xfdf35a,_0x146399){return function(){ChatGroupEvents[_0xa097('0x4')](_0xfdf35a,_0x146399);};}exports[_0xa097('0x5')]=function(_0x3a4f90){for(var _0xd091d1=0x0,_0x1e090f=events['length'];_0xd091d1<_0x1e090f;_0xd091d1++){var _0xee46fe=events[_0xd091d1];var _0xda0fe5=createListener('chatGroup:'+_0xee46fe,_0x3a4f90);ChatGroupEvents['on'](_0xee46fe,_0xda0fe5);}};
\ No newline at end of file
+var _0xee39=['chatGroup:','./chatGroup.events','save','remove','emit','removeListener','register','length'];(function(_0x13db6d,_0x3e0feb){var _0x5890d6=function(_0x875c77){while(--_0x875c77){_0x13db6d['push'](_0x13db6d['shift']());}};_0x5890d6(++_0x3e0feb);}(_0xee39,0x191));var _0x9ee3=function(_0x4317a1,_0x345947){_0x4317a1=_0x4317a1-0x0;var _0xa6f8d1=_0xee39[_0x4317a1];return _0xa6f8d1;};'use strict';var ChatGroupEvents=require(_0x9ee3('0x0'));var events=[_0x9ee3('0x1'),_0x9ee3('0x2'),'update'];function createListener(_0x1d559f,_0x5b04d2){return function(_0x43d420){_0x5b04d2[_0x9ee3('0x3')](_0x1d559f,_0x43d420);};}function removeListener(_0x19e15b,_0x16f723){return function(){ChatGroupEvents[_0x9ee3('0x4')](_0x19e15b,_0x16f723);};}exports[_0x9ee3('0x5')]=function(_0x9b9daa){for(var _0x9d39a9=0x0,_0x2eaab1=events[_0x9ee3('0x6')];_0x9d39a9<_0x2eaab1;_0x9d39a9++){var _0x2ef0e3=events[_0x9d39a9];var _0x14a243=createListener(_0x9ee3('0x7')+_0x2ef0e3,_0x9b9daa);ChatGroupEvents['on'](_0x2ef0e3,_0x14a243);}};
\ No newline at end of file
index daf319e..52d8f33 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f11=['destroy','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./chatGroup.controller','get','isAuthenticated','index','/describe','describe','show','/:id/unread','getUnread','/:id/members','/:id/messages','getMessages','post','create','addMembers','put','/:id'];(function(_0x1d3ba5,_0x7febb1){var _0x3ffeaa=function(_0x4f8b5e){while(--_0x4f8b5e){_0x1d3ba5['push'](_0x1d3ba5['shift']());}};_0x3ffeaa(++_0x7febb1);}(_0x9f11,0x199));var _0x19f1=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x9f11[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x19f1('0x0'));var util=require(_0x19f1('0x1'));var path=require(_0x19f1('0x2'));var timeout=require(_0x19f1('0x3'));var express=require(_0x19f1('0x4'));var router=express[_0x19f1('0x5')]();var fs_extra=require(_0x19f1('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x19f1('0x7'));var config=require(_0x19f1('0x8'));var controller=require(_0x19f1('0x9'));router[_0x19f1('0xa')]('/',auth[_0x19f1('0xb')](),controller[_0x19f1('0xc')]);router[_0x19f1('0xa')](_0x19f1('0xd'),auth[_0x19f1('0xb')](),controller[_0x19f1('0xe')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0x19f1('0xf')]);router[_0x19f1('0xa')](_0x19f1('0x10'),auth[_0x19f1('0xb')](),controller[_0x19f1('0x11')]);router['get'](_0x19f1('0x12'),auth[_0x19f1('0xb')](),controller['getMembers']);router[_0x19f1('0xa')](_0x19f1('0x13'),auth[_0x19f1('0xb')](),controller[_0x19f1('0x14')]);router[_0x19f1('0x15')]('/',auth[_0x19f1('0xb')](),controller[_0x19f1('0x16')]);router[_0x19f1('0x15')]('/:id/members',auth['isAuthenticated'](),controller[_0x19f1('0x17')]);router['post'](_0x19f1('0x13'),auth[_0x19f1('0xb')](),controller['addMessage']);router[_0x19f1('0x18')](_0x19f1('0x19'),auth[_0x19f1('0xb')](),controller['update']);router['delete']('/:id',auth[_0x19f1('0xb')](),controller[_0x19f1('0x1a')]);router[_0x19f1('0x1b')](_0x19f1('0x12'),auth[_0x19f1('0xb')](),controller['removeMembers']);module[_0x19f1('0x1c')]=router;
\ No newline at end of file
+var _0x8179=['/:id/messages','post','addMembers','addMessage','put','delete','destroy','removeMembers','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatGroup.controller','get','isAuthenticated','index','describe','/:id','/:id/unread','getUnread','/:id/members','getMembers'];(function(_0xd6a8f5,_0x3c2585){var _0x11a5a9=function(_0x58f592){while(--_0x58f592){_0xd6a8f5['push'](_0xd6a8f5['shift']());}};_0x11a5a9(++_0x3c2585);}(_0x8179,0xcd));var _0x9817=function(_0x3aa68a,_0x11fa2e){_0x3aa68a=_0x3aa68a-0x0;var _0x5c5948=_0x8179[_0x3aa68a];return _0x5c5948;};'use strict';var multer=require(_0x9817('0x0'));var util=require(_0x9817('0x1'));var path=require(_0x9817('0x2'));var timeout=require(_0x9817('0x3'));var express=require(_0x9817('0x4'));var router=express[_0x9817('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x9817('0x6'));var interaction=require(_0x9817('0x7'));var config=require(_0x9817('0x8'));var controller=require(_0x9817('0x9'));router[_0x9817('0xa')]('/',auth[_0x9817('0xb')](),controller[_0x9817('0xc')]);router[_0x9817('0xa')]('/describe',auth[_0x9817('0xb')](),controller[_0x9817('0xd')]);router[_0x9817('0xa')](_0x9817('0xe'),auth['isAuthenticated'](),controller['show']);router['get'](_0x9817('0xf'),auth[_0x9817('0xb')](),controller[_0x9817('0x10')]);router[_0x9817('0xa')](_0x9817('0x11'),auth[_0x9817('0xb')](),controller[_0x9817('0x12')]);router[_0x9817('0xa')](_0x9817('0x13'),auth[_0x9817('0xb')](),controller['getMessages']);router[_0x9817('0x14')]('/',auth['isAuthenticated'](),controller['create']);router[_0x9817('0x14')](_0x9817('0x11'),auth[_0x9817('0xb')](),controller[_0x9817('0x15')]);router[_0x9817('0x14')]('/:id/messages',auth[_0x9817('0xb')](),controller[_0x9817('0x16')]);router[_0x9817('0x17')](_0x9817('0xe'),auth[_0x9817('0xb')](),controller['update']);router[_0x9817('0x18')](_0x9817('0xe'),auth['isAuthenticated'](),controller[_0x9817('0x19')]);router[_0x9817('0x18')]('/:id/members',auth['isAuthenticated'](),controller[_0x9817('0x1a')]);module[_0x9817('0x1b')]=router;
\ No newline at end of file
index ec06e03..6731ed6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1219=['thumb','TEXT','STRING','DATE','long','out','sequelize','exports','BOOLEAN','INTEGER','ENUM'];(function(_0x11d27e,_0x229b36){var _0x6fa82b=function(_0x952539){while(--_0x952539){_0x11d27e['push'](_0x11d27e['shift']());}};_0x6fa82b(++_0x229b36);}(_0x1219,0x17c));var _0x9121=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1219[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x9121('0x0'));module[_0x9121('0x1')]={'closed':{'type':Sequelize[_0x9121('0x2')],'defaultValue':![]},'ratingValue':{'type':Sequelize[_0x9121('0x3')]},'ratingType':{'type':Sequelize[_0x9121('0x4')]('star',_0x9121('0x5')),'defaultValue':'star'},'ratingMessage':{'type':Sequelize[_0x9121('0x6')]},'pathTranscript':{'type':Sequelize[_0x9121('0x6')]},'mailTranscript':{'type':Sequelize[_0x9121('0x7')],'validate':{'isEmail':!![]}},'closedAt':{'type':Sequelize[_0x9121('0x8')]},'disposition':{'type':Sequelize[_0x9121('0x7')]},'secondDisposition':{'type':Sequelize[_0x9121('0x7')]},'thirdDisposition':{'type':Sequelize[_0x9121('0x7')]},'note':{'type':Sequelize[_0x9121('0x7')]},'browserName':{'type':Sequelize[_0x9121('0x7')]},'browserVersion':{'type':Sequelize[_0x9121('0x7')]},'osName':{'type':Sequelize[_0x9121('0x7')]},'osVersion':{'type':Sequelize['STRING']},'deviceModel':{'type':Sequelize[_0x9121('0x7')]},'deviceVendor':{'type':Sequelize[_0x9121('0x7')]},'deviceType':{'type':Sequelize[_0x9121('0x7')]},'referer':{'type':Sequelize[_0x9121('0x6')]},'customerIp':{'type':Sequelize['STRING']},'formData':{'type':Sequelize[_0x9121('0x6')](_0x9121('0x9'))},'read1stAt':{'type':Sequelize[_0x9121('0x8')]},'lastMsgAt':{'type':Sequelize[_0x9121('0x8')]},'lastMsgDirection':{'type':Sequelize[_0x9121('0x4')]('in',_0x9121('0xa')),'defaultValue':'in','allowNull':![]},'closeReason':{'type':Sequelize[_0x9121('0x7')]},'customerPort':{'type':Sequelize[_0x9121('0x7')]},'vidaooSessionId':{'type':Sequelize[_0x9121('0x6')]},'autoreplyExecuted':{'type':Sequelize[_0x9121('0x2')],'defaultValue':![]}};
\ No newline at end of file
+var _0x081e=['exports','INTEGER','star','thumb','TEXT','STRING','DATE','ENUM','out','BOOLEAN','sequelize'];(function(_0x21c3f6,_0x3c726c){var _0x288fac=function(_0x400bc7){while(--_0x400bc7){_0x21c3f6['push'](_0x21c3f6['shift']());}};_0x288fac(++_0x3c726c);}(_0x081e,0xc5));var _0xe081=function(_0x92c450,_0x41f1e3){_0x92c450=_0x92c450-0x0;var _0x2a9599=_0x081e[_0x92c450];return _0x2a9599;};'use strict';var Sequelize=require(_0xe081('0x0'));module[_0xe081('0x1')]={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'ratingValue':{'type':Sequelize[_0xe081('0x2')]},'ratingType':{'type':Sequelize['ENUM'](_0xe081('0x3'),_0xe081('0x4')),'defaultValue':_0xe081('0x3')},'ratingMessage':{'type':Sequelize[_0xe081('0x5')]},'pathTranscript':{'type':Sequelize[_0xe081('0x5')]},'mailTranscript':{'type':Sequelize[_0xe081('0x6')],'validate':{'isEmail':!![]}},'closedAt':{'type':Sequelize[_0xe081('0x7')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0xe081('0x6')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize['STRING']},'browserName':{'type':Sequelize['STRING']},'browserVersion':{'type':Sequelize['STRING']},'osName':{'type':Sequelize[_0xe081('0x6')]},'osVersion':{'type':Sequelize['STRING']},'deviceModel':{'type':Sequelize[_0xe081('0x6')]},'deviceVendor':{'type':Sequelize['STRING']},'deviceType':{'type':Sequelize[_0xe081('0x6')]},'referer':{'type':Sequelize[_0xe081('0x5')]},'customerIp':{'type':Sequelize[_0xe081('0x6')]},'formData':{'type':Sequelize['TEXT']('long')},'read1stAt':{'type':Sequelize[_0xe081('0x7')]},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize[_0xe081('0x8')]('in',_0xe081('0x9')),'defaultValue':'in','allowNull':![]},'closeReason':{'type':Sequelize[_0xe081('0x6')]},'customerPort':{'type':Sequelize[_0xe081('0x6')]},'vidaooSessionId':{'type':Sequelize[_0xe081('0x5')]},'autoreplyExecuted':{'type':Sequelize[_0xe081('0xa')],'defaultValue':![]}};
\ No newline at end of file
index 2427734..a3e5a14 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(_0x2c7a09,_0x38fd0d){var _0x478678=function(_0x2bd608){while(--_0x2bd608){_0x2c7a09['push'](_0x2c7a09['shift']());}};_0x478678(++_0x38fd0d);}(_0xea28,0x13a));var _0x8ea2=function(_0x34dc0e,_0x54886e){_0x34dc0e=_0x34dc0e-0x0;var _0x35b50e=_0xea28[_0x34dc0e];return _0x35b50e;};'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 _0x896e=['group','i.id','Sequelize','QueryTypes','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','unreadMessages','contactName','DESC','t.id\x20IN\x20?','resolve','i.ChatWebsiteId\x20IS\x20NOT\x20NULL','user','role','agent','getChatWebsites','isEmpty','i.ChatWebsiteId\x20IS\x20NULL','sequelize','toString','keyBy','Account.key','Account.mandatoryDisposition','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','i.*','c.firstName','c.lastName','Contact.lastName','c.email','c.phone','Contact.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.ChatInteractionId\x20IN\x20?','ChatInteractionId','all','show','params','rawAttributes','include','options','create','update','destroy','describe','createVidaooSession','findOne','ChatWebsite','vidaooTopic','vidaooNote','vidaooMetadata','vidaooApiKey','vidaooEscalation','email','https://api-vidaoo.xcally.com/api/v1/meetings','follow','metadata','ValidationError','join_url','ChatMessage','Unable\x20to\x20create\x20Vidaoo\x20session','updateAttributes','customUpdate','CmContact','abandon','entity\x20not\x20found','closed','AbandonInteraction','attachmentUpload','file','originalname','basename','filename','mimetype','Attachment','Unauthorized','ChatOfflineMessageId','join','root','offline-chat/','close','mailTranscript','server/files/chat/upload/','format','transcript-%s.txt','pathTranscript','Messages','%s%d','System','Visitor','website_alias','agentAlias','agent_alias','alias','agent_fullname','createdAt','MM/DD/YYYY\x20HH:mm:ss','direction','appendFileSync','MailAccount','Smtp','service','host','port','secure','authentication','auth','pass','SendMail','sendMail','\x22%s\x22\x20<%s>','Mail\x20Transcript','Hi\x20%s,\x20attached\x20you\x20can\x20find\x20your\x20transcript\x20file.\x20\x0a\x0aRegards.\x20\x0a\x0a','addMessage','omit','ids','getMessages','hasOwnProperty','YYYY-MM-DD\x20HH:mm:ss','rows','getMyMessages','secret','includeAgent','includeAll','findAll','addTags','setTags','spread','Tag','chatInteractionTags:save','removeTags','download','server','files','attachments','transcript-%d-%s.zip','firstName','Account','Owner','get','mkdirSync','Chat','closedAt','disposition','osName','referer','customerIp','customerPort','N.A.','tail','existsSync','createReadStream','createWriteStream','out','lastName','renderFile','views','transcript-','.pdf','createPdfFromHTML','log','unlinkSync','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','./chatInteraction.socket','register','http','client','request','then','info','ChatInteraction,\x20%s,\x20%s','request\x20sent','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','sendStatus','status','end','json','undefined','count','offset','set','Content-Range','reject','save','name','render','merge','body','contact','account','fullname','TagIds','Tags','split','forEach','push','catch','map','ChatInteraction','fieldName','key','model','keys','query','filters','intersection','fields','attributes','length','nolimit','limit','order','sort','where','pick','field','color','from','select','u.id','u.fullname','ui.ChatInteractionId','user_has_chat_interactions','left_join','u.id\x20=\x20ui.UserId','chat_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','users','o.id\x20=\x20i.UserId','a.id\x20=\x20i.ChatWebsiteId','chat_messages','it.ChatInteractionId\x20=\x20i.id','tools_tags','t.id\x20=\x20it.TagId','expr','search','conditions','find','value','having','`\x20=\x200','`\x20>\x200','Contact','operator','$substring','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','type','text','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','start','some','compact','ChatWebsiteId','i.ChatWebsiteId\x20IN\x20?','concat','parse','$gte','$lte','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','isArray','filter','replace','isNumeric','i.id\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?'];(function(_0x526d8c,_0xd26737){var _0x4934d1=function(_0x128d28){while(--_0x128d28){_0x526d8c['push'](_0x526d8c['shift']());}};_0x4934d1(++_0xd26737);}(_0x896e,0x1e9));var _0xe896=function(_0x1ea135,_0x2a0084){_0x1ea135=_0x1ea135-0x0;var _0x199fcd=_0x896e[_0x1ea135];return _0x199fcd;};'use strict';var emlformat=require(_0xe896('0x0'));var rimraf=require(_0xe896('0x1'));var zipdir=require(_0xe896('0x2'));var jsonpatch=require(_0xe896('0x3'));var rp=require(_0xe896('0x4'));var moment=require(_0xe896('0x5'));var BPromise=require(_0xe896('0x6'));var Mustache=require(_0xe896('0x7'));var util=require(_0xe896('0x8'));var path=require(_0xe896('0x9'));var sox=require(_0xe896('0xa'));var csv=require(_0xe896('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe896('0xc'));var _=require(_0xe896('0xd'));var squel=require(_0xe896('0xe'));var crypto=require(_0xe896('0xf'));var jsforce=require(_0xe896('0x10'));var deskjs=require('desk.js');var toCsv=require(_0xe896('0xb'));var querystring=require(_0xe896('0x11'));var Papa=require(_0xe896('0x12'));var Redis=require('ioredis');var authService=require(_0xe896('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0xe896('0x14'));var pdf=require('../../components/export/pdf');var hardwareService=require(_0xe896('0x15'));var logger=require(_0xe896('0x16'))(_0xe896('0x17'));var utils=require('../../config/utils');var config=require(_0xe896('0x18'));var licenseUtil=require(_0xe896('0x19'));var db=require(_0xe896('0x1a'))['db'];config['redis']=_[_0xe896('0x1b')](config[_0xe896('0x1c')],{'host':_0xe896('0x1d'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xe896('0x1c')]));require(_0xe896('0x1e'))[_0xe896('0x1f')](socket);var jayson=require('jayson/promise');var client=jayson['client'][_0xe896('0x20')]({'port':0x232b});var client9004=jayson[_0xe896('0x21')]['http']({'port':0x232c});function respondWithRpcPromise(_0x5e78d6,_0x11f41c,_0x16e272,_0x57f04b){return new BPromise(function(_0x50d224,_0x4e062a){var _0x41cbd7=_0x57f04b||client;return _0x41cbd7[_0xe896('0x22')](_0x5e78d6,_0x16e272)[_0xe896('0x23')](function(_0x5dc89d){logger[_0xe896('0x24')](_0xe896('0x25'),_0x11f41c,_0xe896('0x26'));logger[_0xe896('0x27')](_0xe896('0x28'),_0x11f41c,_0xe896('0x26'),JSON[_0xe896('0x29')](_0x5dc89d));if(_0x5dc89d[_0xe896('0x2a')]){if(_0x5dc89d['error'][_0xe896('0x2b')]===0x1f4){logger['error']('ChatInteraction,\x20%s,\x20%s',_0x11f41c,_0x5dc89d[_0xe896('0x2a')][_0xe896('0x2c')]);return _0x4e062a(_0x5dc89d[_0xe896('0x2a')][_0xe896('0x2c')]);}logger['error'](_0xe896('0x25'),_0x11f41c,_0x5dc89d['error']['message']);return _0x50d224(_0x5dc89d[_0xe896('0x2a')][_0xe896('0x2c')]);}else{logger[_0xe896('0x24')](_0xe896('0x25'),_0x11f41c,_0xe896('0x26'));_0x50d224(_0x5dc89d[_0xe896('0x2d')][_0xe896('0x2c')]);}})['catch'](function(_0x390128){logger[_0xe896('0x2a')](_0xe896('0x25'),_0x11f41c,_0x390128);_0x4e062a(_0x390128);});});}function respondWithStatusCode(_0x569d5f,_0x26635e){_0x26635e=_0x26635e||0xcc;return function(_0xd50fe2){if(_0xd50fe2){return _0x569d5f[_0xe896('0x2e')](_0x26635e);}return _0x569d5f[_0xe896('0x2f')](_0x26635e)[_0xe896('0x30')]();};}function respondWithResult(_0x3f8ceb,_0x498341){_0x498341=_0x498341||0xc8;return function(_0x10adad){if(_0x10adad){return _0x3f8ceb[_0xe896('0x2f')](_0x498341)[_0xe896('0x31')](_0x10adad);}};}function respondWithFilteredResult(_0xbfb15b,_0xace03f){return function(_0x5e0d9b){if(_0x5e0d9b){var _0x47c268=typeof _0xace03f['offset']==='undefined'&&typeof _0xace03f['limit']===_0xe896('0x32');var _0x29a18e=_0x5e0d9b[_0xe896('0x33')];var _0x76c781=_0x47c268?0x0:_0xace03f[_0xe896('0x34')];var _0x1a6090=_0x47c268?_0x5e0d9b[_0xe896('0x33')]:_0xace03f[_0xe896('0x34')]+_0xace03f['limit'];var _0x4ce052;if(_0x1a6090>=_0x29a18e){_0x1a6090=_0x29a18e;_0x4ce052=0xc8;}else{_0x4ce052=0xce;}_0xbfb15b[_0xe896('0x2f')](_0x4ce052);return _0xbfb15b[_0xe896('0x35')](_0xe896('0x36'),_0x76c781+'-'+_0x1a6090+'/'+_0x29a18e)[_0xe896('0x31')](_0x5e0d9b);}return null;};}function patchUpdates(_0x4ddeb6){return function(_0x14ad7a){try{jsonpatch['apply'](_0x14ad7a,_0x4ddeb6,!![]);}catch(_0x57c6e8){return BPromise[_0xe896('0x37')](_0x57c6e8);}return _0x14ad7a[_0xe896('0x38')]();};}function saveUpdates(_0x266c0e,_0x4a1115){return function(_0x4d8092){if(_0x4d8092){return _0x4d8092['update'](_0x266c0e)[_0xe896('0x23')](function(_0x1493b8){return _0x1493b8;});}return null;};}function removeEntity(_0x10fa64,_0x13e8fa){return function(_0x36d2d7){if(_0x36d2d7){return _0x36d2d7['destroy']()[_0xe896('0x23')](function(){_0x10fa64[_0xe896('0x2f')](0xcc)[_0xe896('0x30')]();});}};}function handleEntityNotFound(_0x28e09c,_0x1366d0){return function(_0x2cce09){if(!_0x2cce09){_0x28e09c[_0xe896('0x2e')](0x194);}return _0x2cce09;};}function handleError(_0x3e28f0,_0x5ea3ce){_0x5ea3ce=_0x5ea3ce||0x1f4;return function(_0x42f3fb){logger[_0xe896('0x2a')](_0x42f3fb['stack']);if(_0x42f3fb[_0xe896('0x39')]){delete _0x42f3fb['name'];}_0x3e28f0[_0xe896('0x2f')](_0x5ea3ce)['send'](_0x42f3fb);};}function getMustacheRender(_0x42f445,_0x5ba71e){return Mustache[_0xe896('0x3a')](_0x42f445,_[_0xe896('0x3b')](_0x5ba71e[_0xe896('0x3c')],{'contact':_0x5ba71e[_0xe896('0x3d')],'message':_0x5ba71e[_0xe896('0x2c')],'agent':_0x5ba71e['agent'],'interaction':_0x5ba71e['interaction'],'account':_0x5ba71e[_0xe896('0x3e')]}))||'';}function getInteractionUsers(_0x2ea387,_0x387cc6){return new BPromise(function(_0x15b6c5,_0x2ff489){try{if(_0x387cc6[_0x2ea387['id']]){_0x2ea387['Users']=_['map'](_0x387cc6[_0x2ea387['id']],function(_0x127a6f){return{'id':_0x127a6f['id'],'fullname':_0x127a6f[_0xe896('0x3f')]};});}}catch(_0x5890b1){_0x2ff489(_0x5890b1);}_0x15b6c5(_0x2ea387);});}function getInteractionTags(_0x57e194,_0x19d2fd){return new BPromise(function(_0x3b1de8,_0x911adb){try{if(_0x57e194[_0xe896('0x40')]){_0x57e194[_0xe896('0x41')]=[];_0x57e194[_0xe896('0x40')][_0xe896('0x42')](',')[_0xe896('0x43')](function(_0x372c71){_0x57e194[_0xe896('0x41')][_0xe896('0x44')](_0x19d2fd[_0x372c71]);});}delete _0x57e194[_0xe896('0x40')];}catch(_0x5c00c6){_0x911adb(_0x5c00c6);}_0x3b1de8(_0x57e194);});}function updateChatInteraction(_0x1e5434,_0x143ad4,_0x59b97f){return new BPromise(function(_0x57366b,_0x5cd5a3){return getInteractionUsers(_0x1e5434,_0x59b97f)[_0xe896('0x23')](function(_0x2a354f){return getInteractionTags(_0x2a354f,_0x143ad4);})[_0xe896('0x23')](function(_0x5d1a19){_0x57366b(_0x5d1a19);})[_0xe896('0x45')](function(_0x22189c){_0x5cd5a3(_0x22189c);});});}exports['index']=function(_0x4c05ce,_0x489254){var _0x22c628={},_0x2b0273={},_0x16927a={'count':0x0,'rows':[]};var _0x402aef=_[_0xe896('0x46')](db[_0xe896('0x47')]['rawAttributes'],function(_0x125fbc){return{'name':_0x125fbc[_0xe896('0x48')],'type':_0x125fbc['type'][_0xe896('0x49')]};});_0x2b0273[_0xe896('0x4a')]=_[_0xe896('0x46')](_0x402aef,_0xe896('0x39'));_0x2b0273['query']=_[_0xe896('0x4b')](_0x4c05ce[_0xe896('0x4c')]);_0x2b0273[_0xe896('0x4d')]=_[_0xe896('0x4e')](_0x2b0273[_0xe896('0x4a')],_0x2b0273[_0xe896('0x4c')]);_0x22c628['attributes']=_[_0xe896('0x4e')](_0x2b0273['model'],qs[_0xe896('0x4f')](_0x4c05ce[_0xe896('0x4c')][_0xe896('0x4f')]));_0x22c628[_0xe896('0x50')]=_0x22c628[_0xe896('0x50')][_0xe896('0x51')]?_0x22c628['attributes']:_0x2b0273[_0xe896('0x4a')];if(!_0x4c05ce[_0xe896('0x4c')]['hasOwnProperty'](_0xe896('0x52'))){_0x22c628[_0xe896('0x53')]=qs['limit'](_0x4c05ce[_0xe896('0x4c')]['limit']);_0x22c628[_0xe896('0x34')]=qs[_0xe896('0x34')](_0x4c05ce[_0xe896('0x4c')][_0xe896('0x34')]);}_0x22c628[_0xe896('0x54')]=qs['sort'](_0x4c05ce[_0xe896('0x4c')][_0xe896('0x55')]);_0x22c628[_0xe896('0x56')]=qs['filters'](_[_0xe896('0x57')](_0x4c05ce['query'],_0x2b0273['filters']),_0x402aef);var _0x388375=[];var _0x20fe4f=squel['select']()[_0xe896('0x58')]('id')[_0xe896('0x58')]('name')['field'](_0xe896('0x59'))[_0xe896('0x5a')]('tools_tags');var _0x1d18f6=squel[_0xe896('0x5b')]()[_0xe896('0x58')](_0xe896('0x5c'))[_0xe896('0x58')](_0xe896('0x5d'))[_0xe896('0x58')](_0xe896('0x5e'))[_0xe896('0x5a')](_0xe896('0x5f'),'ui')[_0xe896('0x60')]('users','u',_0xe896('0x61'));var _0x2a23a2=squel[_0xe896('0x5b')]()[_0xe896('0x5a')](_0xe896('0x62'),'i')[_0xe896('0x60')](_0xe896('0x63'),'c',_0xe896('0x64'))[_0xe896('0x60')](_0xe896('0x65'),'o',_0xe896('0x66'))[_0xe896('0x60')]('chat_websites','a',_0xe896('0x67'))[_0xe896('0x60')](_0xe896('0x68'),'me','me.ChatInteractionId\x20=\x20i.id')['left_join']('chat_interaction_has_tags','it',_0xe896('0x69'))[_0xe896('0x60')](_0xe896('0x6a'),'t',_0xe896('0x6b'));var _0x50c910=squel[_0xe896('0x6c')]();var _0x28396c=[];var _0x57ed84=squel[_0xe896('0x6c')]();var _0x5d6c1c;if(_0x4c05ce[_0xe896('0x4c')][_0xe896('0x6d')]){_0x5d6c1c=as['parseSearch'](_0x4c05ce[_0xe896('0x4c')][_0xe896('0x6d')]);var _0x568d89=_0x5d6c1c['sqlOperator'];for(var _0x2a5e68=0x0;_0x2a5e68<_0x5d6c1c[_0xe896('0x6e')][_0xe896('0x51')];_0x2a5e68++){var _0x11291a=_0x5d6c1c[_0xe896('0x6e')][_0x2a5e68];var _0x4e4092='i';var _0xdadb92=_[_0xe896('0x6f')](_0x402aef,[_0xe896('0x39'),_0x11291a[_0xe896('0x58')]]);if(!_0xdadb92){switch(_0x11291a['field']){case'unreadMessages':if(_0x11291a[_0xe896('0x70')]==0x1){_0x2a23a2[_0xe896('0x71')]('`'+_0x11291a['field']+_0xe896('0x72'));}else{_0x2a23a2['having']('`'+_0x11291a[_0xe896('0x58')]+_0xe896('0x73'));}break;case _0xe896('0x74'):if(_0x11291a[_0xe896('0x75')]===_0xe896('0x76')){if(_0x11291a[_0xe896('0x70')][_0xe896('0x42')]('\x20')[_0xe896('0x51')]>0x1){_0x50c910[_0x568d89](_0xe896('0x77'),qs[_0xe896('0x78')](_0x11291a[_0xe896('0x70')]),null);}else{var _0x3248e6='%'+_0x11291a[_0xe896('0x70')]+'%';_0x50c910[_0x568d89](_0xe896('0x79'),_0x3248e6,_0x3248e6,_0x3248e6);}}else{_0xdadb92=_[_0xe896('0x6f')](_0x402aef,[_0xe896('0x39'),_0xe896('0x7a')]);_0x11291a[_0xe896('0x58')]=_0xe896('0x7a');_0x1c118e=as[_0xe896('0x7b')](_0x4e4092,_0xdadb92[_0xe896('0x7c')],_0x11291a);_0x50c910[_0x568d89](_0x1c118e[_0xe896('0x7d')],_0x1c118e['value']['start'],_0x1c118e[_0xe896('0x70')][_0xe896('0x30')]);}break;case'Tag':var _0x1165ad=_0x11291a[_0xe896('0x70')][_0xe896('0x42')](',')[_0xe896('0x46')](function(_0x19781b){return Number(_0x19781b);});_0x1165ad[_0xe896('0x43')](function(_0x475459){_0x57ed84['or'](_0xe896('0x7e'),'%,'+_0x475459+',%');});_0x28396c=_[_0xe896('0x7f')](_0x28396c,_0x1165ad);break;case _0xe896('0x80'):if(_0x11291a[_0xe896('0x75')]==='$substring'){_0x50c910[_0x568d89](_0xe896('0x81'),'%'+_0x11291a[_0xe896('0x70')]+'%',null);}else{_0xdadb92=_['find'](_0x402aef,[_0xe896('0x39'),'UserId']);_0x11291a['field']=_0xe896('0x82');_0x1c118e=as[_0xe896('0x7b')](_0x4e4092,_0xdadb92['type'],_0x11291a);_0x50c910[_0x568d89](_0x1c118e['text'],_0x1c118e[_0xe896('0x70')]['start'],_0x1c118e['value'][_0xe896('0x30')]);}break;case _0xe896('0x3c'):_0x1c118e=as[_0xe896('0x7b')]('me',null,_0x11291a);_0x50c910[_0x568d89](_0x1c118e['text'],_0x1c118e[_0xe896('0x70')][_0xe896('0x83')],_0x1c118e[_0xe896('0x70')]['end']);break;}}else{var _0x1c118e=as[_0xe896('0x7b')](_0x4e4092,_0xdadb92[_0xe896('0x7c')],_0x11291a);_0x50c910[_0x568d89](_0x1c118e[_0xe896('0x7d')],_0x1c118e['value'][_0xe896('0x83')],_0x1c118e[_0xe896('0x70')][_0xe896('0x30')]);}}}else{var _0x4fcd37=_(_0x4c05ce['query'])[_0xe896('0x4b')]()[_0xe896('0x46')](function(_0x4c5091){return _[_0xe896('0x84')](_0x402aef,[_0xe896('0x39'),_0x4c5091])?_0x4c5091:undefined;})[_0xe896('0x85')]()[_0xe896('0x70')]();if(!_['isEmpty'](_0x4fcd37)){_0x4fcd37[_0xe896('0x43')](function(_0x234a3a){if(_0x234a3a===_0xe896('0x86')){_0x2a23a2[_0xe896('0x56')](_0xe896('0x87'),[][_0xe896('0x88')](_0x4c05ce['query'][_0x234a3a]));}else if(_0x234a3a==='createdAt'){var _0x48b523=JSON[_0xe896('0x89')](_0x4c05ce[_0xe896('0x4c')][_0x234a3a])[_0xe896('0x8a')];var _0x270121=JSON[_0xe896('0x89')](_0x4c05ce[_0xe896('0x4c')][_0x234a3a])[_0xe896('0x8b')];_0x2a23a2['where']('i.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x48b523,_0x270121);}else{if(_0x4c05ce[_0xe896('0x4c')][_0x234a3a]==='null'){_0x2a23a2[_0xe896('0x56')]('i.'+_0x234a3a+'\x20IS\x20NULL');}else{_0x2a23a2[_0xe896('0x56')]('i.'+_0x234a3a+'\x20=\x20?',_0x4c05ce[_0xe896('0x4c')][_0x234a3a]);}}});}if(_0x4c05ce[_0xe896('0x4c')][_0xe896('0x8c')]){if(_0x4c05ce[_0xe896('0x4c')][_0xe896('0x8c')]==0x1){_0x2a23a2['having'](_0xe896('0x8d'));}else{_0x2a23a2[_0xe896('0x71')](_0xe896('0x8e'));}}if(_0x4c05ce[_0xe896('0x4c')][_0xe896('0x8f')]){_0x28396c=_[_0xe896('0x90')](_0x4c05ce[_0xe896('0x4c')]['tag'])?_0x4c05ce[_0xe896('0x4c')]['tag']:new Array(_0x4c05ce[_0xe896('0x4c')][_0xe896('0x8f')]);_0x28396c[_0xe896('0x43')](function(_0x503131){_0x57ed84['or'](_0xe896('0x7e'),'%,'+_0x503131+',%');});}if(_0x4c05ce[_0xe896('0x4c')][_0xe896('0x91')]){var _0x1913b2=_0x4c05ce[_0xe896('0x4c')][_0xe896('0x91')][_0xe896('0x92')]('\x5c','\x5c\x5c')[_0xe896('0x92')](/'/g,'\x27\x27');if(qs[_0xe896('0x93')](_0x1913b2)){_0x50c910['or'](_0xe896('0x94'),_0x1913b2+'%');}else{_0x50c910['or'](_0xe896('0x95'),qs['getFullTextValue'](_0x1913b2))['or'](_0xe896('0x96'),_0x1913b2+'%');}}}_0x2a23a2[_0xe896('0x56')](_0x50c910);_0x2a23a2[_0xe896('0x97')](_0xe896('0x98'));var _0x48885e={'type':db[_0xe896('0x99')][_0xe896('0x9a')][_0xe896('0x9b')],'raw':!![]};var _0x779db6=_0x2a23a2[_0xe896('0x9c')]();_0x779db6[_0xe896('0x58')](_0xe896('0x98'));_0x779db6[_0xe896('0x58')](_0xe896('0x9d'),_0xe896('0x9e'));if(_0x22c628[_0xe896('0x54')]){_0x22c628[_0xe896('0x54')]['forEach'](function(_0x2bd061){var _0x1d1364=_0x2bd061[0x0]===_0xe896('0x9f')?_0x2bd061[0x0]:'i.'+_0x2bd061[0x0];_0x2a23a2['order'](_0x1d1364,_0x2bd061[0x1]===_0xe896('0xa0')?![]:!![]);});}if(!_['isEmpty'](_0x28396c)){_0x2a23a2['having'](_0x57ed84);_0x779db6[_0xe896('0x56')](_0xe896('0xa1'),_0x28396c);}BPromise[_0xe896('0xa2')]()['then'](function(){if(!_0x5d6c1c){if(_0x4c05ce[_0xe896('0x4c')][_0xe896('0x86')])return;_0x779db6['where']('i.ChatWebsiteId\x20IS\x20NOT\x20NULL');_0x2a23a2[_0xe896('0x56')](_0xe896('0xa3'));return;}if(_0x4c05ce[_0xe896('0xa4')][_0xe896('0xa5')]!==_0xe896('0xa6'))return;return _0x4c05ce[_0xe896('0xa4')][_0xe896('0xa7')]({'attributes':['id'],'raw':!![]})['then'](function(_0x544d2d){if(_[_0xe896('0xa8')](_0x544d2d)){_0x779db6['where']('i.ChatWebsiteId\x20IS\x20NULL');_0x2a23a2[_0xe896('0x56')](_0xe896('0xa9'));}else{_0x779db6[_0xe896('0x56')](_0xe896('0x87'),_['map'](_0x544d2d,'id'));_0x2a23a2[_0xe896('0x56')](_0xe896('0x87'),_['map'](_0x544d2d,'id'));}});})[_0xe896('0x23')](function(){if(_0x4c05ce[_0xe896('0xa4')][_0xe896('0xa5')]===_0xe896('0xa6')&&!_0x5d6c1c&&!_0x4c05ce[_0xe896('0x4c')][_0xe896('0x86')])return[];return db[_0xe896('0xaa')][_0xe896('0x4c')](_0x779db6[_0xe896('0xab')](),_0x48885e);})[_0xe896('0x23')](function(_0x16ff5e){_0x16927a[_0xe896('0x33')]=_0x16ff5e[_0xe896('0x51')];if(_0x16927a['count']===0x0)return[];return db[_0xe896('0xaa')][_0xe896('0x4c')](_0x20fe4f[_0xe896('0xab')](),_0x48885e)[_0xe896('0x23')](function(_0x229150){_0x388375=_[_0xe896('0xac')](_0x229150,'id');_0x48885e=_[_0xe896('0x3b')](_0x48885e,{'model':db[_0xe896('0x47')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x4c05ce[_0xe896('0x4c')][_0xe896('0x4f')]){_0x22c628['attributes']['forEach'](function(_0x41e6c4){_0x2a23a2[_0xe896('0x58')]('i.'+_0x41e6c4);});}else{_0x2a23a2[_0xe896('0x58')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0xe896('0x9e'));_0x2a23a2[_0xe896('0x58')]('a.key',_0xe896('0xad'));_0x2a23a2[_0xe896('0x58')]('a.mandatoryDisposition',_0xe896('0xae'));_0x2a23a2[_0xe896('0x58')](_0xe896('0xaf'),_0xe896('0x9f'));_0x2a23a2[_0xe896('0x58')](_0xe896('0xb0'));_0x2a23a2[_0xe896('0x58')](_0xe896('0xb1'),'Contact.firstName');_0x2a23a2[_0xe896('0x58')](_0xe896('0xb2'),_0xe896('0xb3'));_0x2a23a2[_0xe896('0x58')](_0xe896('0xb4'),'Contact.email');_0x2a23a2[_0xe896('0x58')](_0xe896('0xb5'),_0xe896('0xb6'));_0x2a23a2['field'](_0xe896('0xb7'),_0xe896('0xb8'));_0x2a23a2[_0xe896('0x58')](_0xe896('0xb9'),_0xe896('0xba'));_0x2a23a2[_0xe896('0x58')](_0xe896('0xbb'),_0xe896('0xbc'));_0x2a23a2[_0xe896('0x58')]('o.internal',_0xe896('0xbd'));_0x2a23a2['field'](_0xe896('0xbe'),_0xe896('0x40'));}if(_0x22c628[_0xe896('0x53')])_0x2a23a2[_0xe896('0x53')](_0x22c628['limit']);if(_0x22c628[_0xe896('0x34')])_0x2a23a2[_0xe896('0x34')](_0x22c628['offset']);return db[_0xe896('0xaa')][_0xe896('0x4c')](_0x2a23a2[_0xe896('0xab')](),_0x48885e);})['then'](function(_0xadc81f){if(_0xadc81f['length']>0x0)_0x1d18f6['where'](_0xe896('0xbf'),_[_0xe896('0x46')](_0xadc81f,'id'));return db['sequelize'][_0xe896('0x4c')](_0x1d18f6[_0xe896('0xab')](),_0x48885e)['then'](function(_0x529df2){var _0x5b4e01=_['groupBy'](_0x529df2,_0xe896('0xc0'));var _0x237cae=[];_0xadc81f[_0xe896('0x43')](function(_0xc0fa84){_0x237cae[_0xe896('0x44')](updateChatInteraction(_0xc0fa84,_0x388375,_0x5b4e01));});return BPromise[_0xe896('0xc1')](_0x237cae);});});})[_0xe896('0x23')](function(_0x2dbfd3){_0x16927a['rows']=_0x2dbfd3;return _0x16927a;})[_0xe896('0x23')](respondWithFilteredResult(_0x489254,_0x22c628))[_0xe896('0x45')](handleError(_0x489254,null));};exports[_0xe896('0xc2')]=function(_0x2a1d41,_0x5a254b){var _0x4f4d26={'raw':![],'where':{'id':_0x2a1d41[_0xe896('0xc3')]['id']}},_0x2f30a9={};_0x2f30a9['model']=_['keys'](db[_0xe896('0x47')][_0xe896('0xc4')]);_0x2f30a9[_0xe896('0x4c')]=_[_0xe896('0x4b')](_0x2a1d41[_0xe896('0x4c')]);_0x2f30a9['filters']=_[_0xe896('0x4e')](_0x2f30a9[_0xe896('0x4a')],_0x2f30a9[_0xe896('0x4c')]);_0x4f4d26['attributes']=_[_0xe896('0x4e')](_0x2f30a9[_0xe896('0x4a')],qs[_0xe896('0x4f')](_0x2a1d41[_0xe896('0x4c')][_0xe896('0x4f')]));_0x4f4d26['attributes']=_0x4f4d26[_0xe896('0x50')][_0xe896('0x51')]?_0x4f4d26[_0xe896('0x50')]:_0x2f30a9['model'];if(_0x2a1d41[_0xe896('0x4c')]['includeAll']){_0x4f4d26[_0xe896('0xc5')]=[{'all':!![]}];}_0x4f4d26=_[_0xe896('0x3b')]({},_0x4f4d26,_0x2a1d41[_0xe896('0xc6')]);return db[_0xe896('0x47')][_0xe896('0x6f')](_0x4f4d26)[_0xe896('0x23')](handleEntityNotFound(_0x5a254b,null))['then'](respondWithResult(_0x5a254b,null))['catch'](handleError(_0x5a254b,null));};exports[_0xe896('0xc7')]=function(_0x54c61f,_0x15af0e){return db[_0xe896('0x47')]['create'](_0x54c61f[_0xe896('0x3c')],{})[_0xe896('0x23')](respondWithResult(_0x15af0e,0xc9))['catch'](handleError(_0x15af0e,null));};exports[_0xe896('0xc8')]=function(_0x4bcd8c,_0x326c67){if(_0x4bcd8c[_0xe896('0x3c')]['id']){delete _0x4bcd8c[_0xe896('0x3c')]['id'];}return db[_0xe896('0x47')]['find']({'where':{'id':_0x4bcd8c[_0xe896('0xc3')]['id']}})[_0xe896('0x23')](handleEntityNotFound(_0x326c67,null))[_0xe896('0x23')](saveUpdates(_0x4bcd8c[_0xe896('0x3c')],null))[_0xe896('0x23')](respondWithResult(_0x326c67,null))[_0xe896('0x45')](handleError(_0x326c67,null));};exports[_0xe896('0xc9')]=function(_0x3c8951,_0x41b162){return db[_0xe896('0x47')][_0xe896('0x6f')]({'where':{'id':_0x3c8951[_0xe896('0xc3')]['id']}})[_0xe896('0x23')](handleEntityNotFound(_0x41b162,null))[_0xe896('0x23')](removeEntity(_0x41b162,null))[_0xe896('0x45')](handleError(_0x41b162,null));};exports[_0xe896('0xca')]=function(_0x16b398,_0x4edeaf){return db[_0xe896('0x47')][_0xe896('0xca')]()['then'](respondWithResult(_0x4edeaf,null))['catch'](handleError(_0x4edeaf,null));};exports[_0xe896('0xcb')]=function(_0xdd4767,_0x3df01d){var _0xf6563d=_0xdd4767[_0xe896('0xc3')]['id'];var _0x21e7a2;var _0x43b9e0;var _0x46a4f0;return db['ChatInteraction'][_0xe896('0xcc')]({'where':{'id':_0xf6563d}})[_0xe896('0x23')](function(_0x2ee264){_0x21e7a2=_0x2ee264;return db[_0xe896('0xcd')]['findOne']({'where':{'id':_0x2ee264[_0xe896('0x86')]},'attributes':['id','vidaooApiKey','vidaooEscalation',_0xe896('0xce'),_0xe896('0xcf'),_0xe896('0xd0')],'raw':!![]});})[_0xe896('0x23')](function(_0x3e55b7){if(_0x3e55b7&&_0x3e55b7[_0xe896('0xd1')]&&_0x3e55b7[_0xe896('0xd2')]){_0x43b9e0=_0x3e55b7;var _0x49293e={'interaction':{'id':_0xf6563d},'agent':{'id':_0xdd4767[_0xe896('0xa4')]['id'],'name':_0xdd4767[_0xe896('0xa4')][_0xe896('0x39')],'fullname':_0xdd4767[_0xe896('0xa4')][_0xe896('0x3f')],'email':_0xdd4767[_0xe896('0xa4')][_0xe896('0xd3')]},'contact':_0xdd4767[_0xe896('0x3c')][_0xe896('0x3d')],'account':_0xdd4767['body'][_0xe896('0x3e')]};var _0x13c2fb={'rejectUnauthorized':![],'method':'POST','url':_0xe896('0xd4'),'headers':{'X-APIKEY':_0x3e55b7['vidaooApiKey']},'body':{'duration':null,'scheduledAt':null,'participants':[_0xdd4767['user'][_0xe896('0xd3')]],'buttons':null,'topic':_0x43b9e0['vidaooTopic'],'note':_['isNull'](_0x43b9e0[_0xe896('0xcf')])?null:getMustacheRender(_0x43b9e0[_0xe896('0xcf')],_0x49293e),'metadata':null},'redirect':_0xe896('0xd5'),'json':!![]};try{if(!_['isNull'](_0x43b9e0[_0xe896('0xd0')])){var _0x55be9b=getMustacheRender(_0x43b9e0[_0xe896('0xd0')],_0x49293e);var _0x1406c2=JSON['parse'](_0x55be9b);_0x13c2fb[_0xe896('0x3c')][_0xe896('0xd6')]=_0x1406c2;}}catch(_0x53cebb){throw new db[(_0xe896('0x99'))]['ValidationError']('Error\x20in\x20conversion\x20vidaooMetadata');}return rp(_0x13c2fb);}else{throw new db['Sequelize'][(_0xe896('0xd7'))]('Error\x20in\x20Vidaoo\x20configuration');}})[_0xe896('0x23')](function(_0x30c8f4){_0x46a4f0=_0x30c8f4;if(_0x46a4f0['id']){var _0x386f5a={'body':_0x46a4f0[_0xe896('0xd8')],'ChatWebsiteId':_0x43b9e0['id'],'ChatInteractionId':_0x21e7a2['id'],'direction':'out','UserId':_0xdd4767[_0xe896('0xa4')]['id']};return db[_0xe896('0xd9')][_0xe896('0xc7')](_0x386f5a,{});}else{throw new db[(_0xe896('0x99'))]['ValidationError'](_0xe896('0xda'));}})['then'](function(){return _0x21e7a2[_0xe896('0xdb')]({'vidaooSessionId':_0x46a4f0['id']});})[_0xe896('0x23')](respondWithResult(_0x3df01d,null))[_0xe896('0x45')](handleError(_0x3df01d,null));};exports[_0xe896('0xdc')]=function(_0x5a5336,_0x42ab19){if(_0x5a5336['body']['id']){delete _0x5a5336[_0xe896('0x3c')]['id'];}return db['ChatInteraction'][_0xe896('0x6f')]({'where':{'id':_0x5a5336[_0xe896('0xc3')]['id']},'include':[{'model':db[_0xe896('0xdd')],'as':'Contact'}]})[_0xe896('0x23')](handleEntityNotFound(_0x42ab19,null))['then'](saveUpdates(_0x5a5336[_0xe896('0x3c')],null))[_0xe896('0x23')](respondWithResult(_0x42ab19,null))['catch'](handleError(_0x42ab19,null));};exports[_0xe896('0xde')]=function(_0x384116,_0x5949f1,_0x432775){if(_0x384116[_0xe896('0x3c')]['id']){delete _0x384116[_0xe896('0x3c')]['id'];}return db[_0xe896('0x47')][_0xe896('0x6f')]({'where':{'id':_0x384116[_0xe896('0xc3')]['id']}})[_0xe896('0x23')](function(_0x5da1fa){if(!_0x5da1fa){logger[_0xe896('0x2a')]('abandonInteraction,\x20%s,\x20%s,\x20%s','abandon',0x194,_0xe896('0xdf'));_0x5949f1[_0xe896('0x2e')](0x194);}else{if(_0x5da1fa['UserId']){throw new db[(_0xe896('0x99'))][(_0xe896('0xd7'))]('Interaction\x20already\x20assigned');}}return _0x5da1fa;})['then'](function(_0x24c6bc){if(_0x24c6bc){return _0x24c6bc[_0xe896('0xc8')]({'closed':_0x384116['body'][_0xe896('0xe0')],'disposition':_0x384116[_0xe896('0x3c')]['disposition']})[_0xe896('0x23')](function(_0x54219c){return _0x54219c;});}})[_0xe896('0x23')](function(_0x577d5a){return respondWithRpcPromise(_0xe896('0xe1'),_0xe896('0xde'),_0x384116['body'],client9004);})[_0xe896('0x23')](respondWithResult(_0x5949f1,null))[_0xe896('0x45')](handleError(_0x5949f1,null));};exports[_0xe896('0xe2')]=function(_0x32f30e,_0x265206,_0x90a856){_0x32f30e[_0xe896('0x3c')][_0xe896('0x39')]=_0x32f30e[_0xe896('0xe3')][_0xe896('0xe4')];_0x32f30e[_0xe896('0x3c')][_0xe896('0xe5')]=_0x32f30e[_0xe896('0xe3')][_0xe896('0xe6')];_0x32f30e['body'][_0xe896('0x7c')]=_0x32f30e['file'][_0xe896('0xe7')];return db[_0xe896('0xe8')]['create'](_0x32f30e[_0xe896('0x3c')])[_0xe896('0x23')](respondWithResult(_0x265206,0xc9))[_0xe896('0x45')](handleError(_0x265206,null));};exports['attachmentDownload']=function(_0x28deef,_0x3f32f7,_0x2b1427){return db[_0xe896('0x47')][_0xe896('0xcc')]({'where':{'id':_0x28deef[_0xe896('0xc3')]['id']},'raw':!![]})[_0xe896('0x23')](handleEntityNotFound(_0x3f32f7,null))[_0xe896('0x23')](function(_0xdd5dbf){if(_0xdd5dbf){if(_0xdd5dbf['closed']){return _0x3f32f7['status'](0x193)['json']({'status':0x193,'message':_0xe896('0xe9')});}return db['Attachment']['findOne']({'where':{'id':_0x28deef[_0xe896('0x4c')]['attachId']},'raw':!![]})['then'](handleEntityNotFound(_0x3f32f7,null));}})['then'](function(_0x348cd5){if(_0x348cd5){var _0x4a5f7f=_0x348cd5[_0xe896('0xea')]!==null;var _0x222029=path[_0xe896('0xeb')](config[_0xe896('0xec')],'server/files/attachments/');if(_0x4a5f7f){_0x222029=path[_0xe896('0xeb')](_0x222029,_0xe896('0xed'));}var _0x36c394=path[_0xe896('0xeb')](_0x222029,_0x348cd5[_0xe896('0xe5')]);return _0x3f32f7['download'](_0x36c394);}})['catch'](handleError(_0x3f32f7,null));};exports[_0xe896('0xee')]=function(_0x1a5056,_0x57aa1b){var _0x21b078=null;var _0x17edcd=null;var _0x71d912=null;var _0x22a63d=null;if(_0x1a5056[_0xe896('0x3c')]['id']){delete _0x1a5056[_0xe896('0x3c')]['id'];}if(_0x1a5056[_0xe896('0x3c')][_0xe896('0xef')]){_0x22a63d=path[_0xe896('0xeb')](config[_0xe896('0xec')],_0xe896('0xf0'),util[_0xe896('0xf1')](_0xe896('0xf2'),Date['now']()));_0x1a5056[_0xe896('0x3c')][_0xe896('0xf3')]=_0x22a63d;}return db['ChatInteraction'][_0xe896('0x6f')]({'where':{'id':_0x1a5056[_0xe896('0xc3')]['id']},'include':[{'model':db[_0xe896('0xd9')],'as':_0xe896('0xf4'),'include':[{'model':db[_0xe896('0x80')],'as':_0xe896('0x80')}]}]})[_0xe896('0x23')](handleEntityNotFound(_0x57aa1b,null))[_0xe896('0x23')](saveUpdates(_0x1a5056[_0xe896('0x3c')],null))[_0xe896('0x23')](function(_0x5487f0){if(_0x5487f0){_0x21b078=_0x5487f0;return db[_0xe896('0xcd')]['find']({'where':{'id':_0x21b078[_0xe896('0x86')]}});}})[_0xe896('0x23')](function(_0xb528ff){if(_0xb528ff){_0x71d912=_0xb528ff;return db[_0xe896('0xdd')][_0xe896('0x6f')]({'where':{'id':_0x21b078[_0xe896('0x7a')]}});}})[_0xe896('0x23')](function(_0x6e53ae){if(_0x6e53ae){_0x17edcd=_0x6e53ae;if(_0x22a63d){var _0x52337e=null;for(var _0x1d6003=0x1;_0x1d6003<_0x21b078[_0xe896('0xf4')][_0xe896('0x51')];++_0x1d6003){_0x52337e=_0x21b078[_0xe896('0xf4')][_0x1d6003];var _0x882a0e=_0x52337e[_0xe896('0x82')]?util[_0xe896('0xf1')](_0xe896('0xf5'),_0x71d912['agentAlias'],_0x52337e[_0xe896('0x82')]):_0xe896('0xf6');var _0x27743a=_0x1a5056['body']['customer']||util[_0xe896('0xf1')](_0xe896('0xf5'),_0xe896('0xf7'),_0x52337e['ContactId']);switch(_0x71d912['agentIdentifier']){case _0xe896('0xf8'):_0x882a0e=_0x52337e[_0xe896('0x82')]?util['format'](_0xe896('0xf5'),_0x71d912[_0xe896('0xf9')],_0x52337e[_0xe896('0x82')]):_0xe896('0xf6');break;case _0xe896('0xfa'):_0x882a0e=_0x52337e[_0xe896('0x82')]?_0x52337e['User'][_0xe896('0xfb')]||_0x52337e[_0xe896('0x80')]['fullname']:_0xe896('0xf6');break;case _0xe896('0xfc'):_0x882a0e=_0x52337e['UserId']?_0x52337e['User']['fullname']:'System';break;default:_0x882a0e=_0x52337e[_0xe896('0x82')]?util[_0xe896('0xf1')](_0xe896('0xf5'),_0x71d912[_0xe896('0xf9')],_0x52337e[_0xe896('0x82')]):_0xe896('0xf6');}var _0x58fcf9=util[_0xe896('0xf1')]('[%s]\x20%s:\x20%s\x0a',moment(_0x52337e[_0xe896('0xfd')])['format'](_0xe896('0xfe')),_0x52337e[_0xe896('0xff')]==='in'?_0x27743a:_0x882a0e,_0x52337e['body']);if(!_0x52337e['secret']){fs[_0xe896('0x100')](_0x22a63d,_0x58fcf9);}}return db[_0xe896('0x101')]['findOne']({'where':{'service':!![]},'include':[{'model':db['MailServerOut'],'as':_0xe896('0x102'),'raw':!![]}]});}}})[_0xe896('0x23')](function(_0xbee8fa){if(_0xbee8fa&&_0xbee8fa[_0xe896('0x102')]&&_0x1a5056[_0xe896('0x3c')]){var _0x1a50c3={'tls':{'rejectUnauthorized':![]}};if(_0xbee8fa[_0xe896('0x102')][_0xe896('0x103')]){_0x1a50c3[_0xe896('0x103')]=_0xbee8fa[_0xe896('0x102')][_0xe896('0x103')];}else{_0x1a50c3[_0xe896('0x104')]=_0xbee8fa[_0xe896('0x102')]['host'];_0x1a50c3['port']=_0xbee8fa[_0xe896('0x102')][_0xe896('0x105')];_0x1a50c3[_0xe896('0x106')]=_0xbee8fa[_0xe896('0x102')][_0xe896('0x106')];}if(_0xbee8fa[_0xe896('0x102')][_0xe896('0x107')]){_0x1a50c3[_0xe896('0x108')]={'user':_0xbee8fa[_0xe896('0x102')][_0xe896('0xa4')],'pass':_0xbee8fa[_0xe896('0x102')][_0xe896('0x109')]};}return respondWithRpcPromise(_0xe896('0x10a'),_0xe896('0x10b'),{'account':_0x1a50c3,'message':{'from':util[_0xe896('0xf1')](_0xe896('0x10c'),_0xbee8fa['name'],_0xbee8fa['email']||_0xbee8fa['Smtp'][_0xe896('0xa4')]),'to':_0x1a5056[_0xe896('0x3c')][_0xe896('0xef')],'subject':_0xe896('0x10d'),'text':util[_0xe896('0xf1')](_0xe896('0x10e'),_0x1a5056[_0xe896('0x3c')]['mailTranscript']),'attachments':[{'path':_0x22a63d}]}})['then'](function(){return _0x21b078;})[_0xe896('0x45')](function(_0x550c55){console['error'](_0x550c55);});}else{return _0x21b078;}})['then'](respondWithStatusCode(_0x57aa1b,0xc8))[_0xe896('0x45')](handleError(_0x57aa1b,null));};exports[_0xe896('0x10f')]=function(_0x14da55,_0x5656d0,_0x31ca0b){return db[_0xe896('0xd9')][_0xe896('0x6f')]({'where':{'id':_0x14da55[_0xe896('0xc3')]['id']}})['then'](handleEntityNotFound(_0x5656d0,null))['then'](function(_0x518847){if(_0x518847){return _0x518847[_0xe896('0x10f')](_0x14da55[_0xe896('0x3c')]['ids'],_[_0xe896('0x110')](_0x14da55[_0xe896('0x3c')],[_0xe896('0x111'),'id'])||{});}})[_0xe896('0x23')](respondWithResult(_0x5656d0,null))['catch'](handleError(_0x5656d0,null));};exports[_0xe896('0x112')]=function(_0xf78ce2,_0x3f8ea0,_0x254420){var _0x1196d4={'raw':![],'where':{}};var _0x1ee26e={};var _0x1bd649={'count':0x0,'rows':[]};return db[_0xe896('0x47')][_0xe896('0xcc')]({'where':{'id':_0xf78ce2[_0xe896('0xc3')]['id']}})[_0xe896('0x23')](handleEntityNotFound(_0x3f8ea0,null))[_0xe896('0x23')](function(_0x2e5c38){if(_0x2e5c38){_0x1ee26e[_0xe896('0x4a')]=_['keys'](db[_0xe896('0xd9')]['rawAttributes']);_0x1ee26e[_0xe896('0x4c')]=_[_0xe896('0x4b')](_0xf78ce2['query']);_0x1ee26e['filters']=_[_0xe896('0x4e')](_0x1ee26e[_0xe896('0x4a')],_0x1ee26e[_0xe896('0x4c')]);_0x1196d4['attributes']=_[_0xe896('0x4e')](_0x1ee26e[_0xe896('0x4a')],qs[_0xe896('0x4f')](_0xf78ce2['query'][_0xe896('0x4f')]));_0x1196d4[_0xe896('0x50')]=_0x1196d4[_0xe896('0x50')]['length']?_0x1196d4['attributes']:_0x1ee26e[_0xe896('0x4a')];if(!_0xf78ce2['query'][_0xe896('0x113')](_0xe896('0x52'))){_0x1196d4[_0xe896('0x53')]=qs[_0xe896('0x53')](_0xf78ce2[_0xe896('0x4c')][_0xe896('0x53')]);_0x1196d4[_0xe896('0x34')]=qs['offset'](_0xf78ce2['query'][_0xe896('0x34')]);}_0x1196d4[_0xe896('0x54')]=qs['sort'](_0xf78ce2[_0xe896('0x4c')][_0xe896('0x55')]);_0x1196d4['where']=qs['filters'](_['pick'](_0xf78ce2['query'],_0x1ee26e['filters']));_0x1196d4['where'][_0xe896('0xc0')]=_0x2e5c38['id'];if(_0xf78ce2['query'][_0xe896('0x91')]){_0x1196d4[_0xe896('0x56')]=_[_0xe896('0x3b')](_0x1196d4[_0xe896('0x56')],{'$or':_['map'](_0x1196d4[_0xe896('0x50')],function(_0x646354){var _0x3d751c={};_0x3d751c[_0x646354]={'$like':'%'+_0xf78ce2['query'][_0xe896('0x91')]+'%'};return _0x3d751c;})});}if(_0xf78ce2[_0xe896('0x4c')][_0xe896('0x8a')]){var _0x42bf84=_0xf78ce2[_0xe896('0x4c')][_0xe896('0x8a')][_0xe896('0x42')](',');var _0x115450={};_0x115450[_0x42bf84[0x0]]={'$gte':moment(_0x42bf84[0x1])[_0xe896('0xf1')](_0xe896('0x114'))};_0x1196d4['where']=_[_0xe896('0x3b')](_0x1196d4[_0xe896('0x56')],_0x115450);}_0x1196d4=_[_0xe896('0x3b')]({},_0x1196d4,_0xf78ce2[_0xe896('0xc6')]);return db['ChatMessage'][_0xe896('0x33')]({'where':_0x1196d4[_0xe896('0x56')]})[_0xe896('0x23')](function(_0x3bee56){_0x1bd649[_0xe896('0x33')]=_0x3bee56;if(_0xf78ce2[_0xe896('0x4c')]['includeAll']){_0x1196d4['include']=[{'all':!![]}];}return db[_0xe896('0xd9')]['findAll'](_0x1196d4);})['then'](function(_0x1d3083){_0x1bd649[_0xe896('0x115')]=_0x1d3083;return _0x1bd649;});}})[_0xe896('0x23')](respondWithFilteredResult(_0x3f8ea0,_0x1196d4))['catch'](handleError(_0x3f8ea0,null));};exports[_0xe896('0x116')]=function(_0x4ddfde,_0xc1bdcf,_0xdea91f){var _0x5c2af6={'where':{}},_0x306757={},_0x31f4e1={'count':0x0,'rows':[]};return db[_0xe896('0x47')][_0xe896('0xcc')]({'where':{'id':_0x4ddfde['params']['id']}})[_0xe896('0x23')](handleEntityNotFound(_0xc1bdcf,null))['then'](function(_0x186b58){if(_0x186b58){_0x306757[_0xe896('0x4a')]=_[_0xe896('0x4b')](db['ChatMessage']['rawAttributes']);_0x306757[_0xe896('0x4c')]=_[_0xe896('0x4b')](_0x4ddfde[_0xe896('0x4c')]);_0x306757[_0xe896('0x4d')]=_[_0xe896('0x4e')](_0x306757[_0xe896('0x4a')],_0x306757[_0xe896('0x4c')]);_0x5c2af6[_0xe896('0x50')]=_['intersection'](_0x306757[_0xe896('0x4a')],qs[_0xe896('0x4f')](_0x4ddfde['query'][_0xe896('0x4f')]));_0x5c2af6['attributes']=_0x5c2af6['attributes'][_0xe896('0x51')]?_0x5c2af6[_0xe896('0x50')]:_0x306757[_0xe896('0x4a')];if(!_0x4ddfde[_0xe896('0x4c')][_0xe896('0x113')]('nolimit')){_0x5c2af6[_0xe896('0x53')]=qs[_0xe896('0x53')](_0x4ddfde[_0xe896('0x4c')][_0xe896('0x53')]);_0x5c2af6[_0xe896('0x34')]=qs['offset'](_0x4ddfde[_0xe896('0x4c')][_0xe896('0x34')]);}_0x5c2af6[_0xe896('0x54')]=qs[_0xe896('0x55')](_0x4ddfde['query'][_0xe896('0x55')]);_0x5c2af6[_0xe896('0x56')]=qs[_0xe896('0x4d')](_[_0xe896('0x57')](_0x4ddfde['query'],_0x306757[_0xe896('0x4d')]));_0x5c2af6[_0xe896('0x56')][_0xe896('0xc0')]=_0x186b58['id'];if(_0x4ddfde[_0xe896('0x4c')][_0xe896('0x91')]){_0x5c2af6['where']=_[_0xe896('0x3b')](_0x5c2af6[_0xe896('0x56')],{'$or':_['map'](_0x5c2af6['attributes'],function(_0x42490d){var _0x2dba2f={};_0x2dba2f[_0x42490d]={'$like':'%'+_0x4ddfde[_0xe896('0x4c')][_0xe896('0x91')]+'%'};return _0x2dba2f;})});}_0x5c2af6['where'][_0xe896('0x117')]=![];if(_0x4ddfde[_0xe896('0x4c')]['id']){_0x5c2af6[_0xe896('0x56')]['id']={'$gt':_0x4ddfde[_0xe896('0x4c')]['id']};}_0x5c2af6=_['merge']({},_0x5c2af6,_0x4ddfde['options']);return db['ChatMessage'][_0xe896('0x33')]({'where':_0x5c2af6[_0xe896('0x56')]})[_0xe896('0x23')](function(_0xabf68b){_0x31f4e1[_0xe896('0x33')]=_0xabf68b;_0x5c2af6['include']=[];if(_0x4ddfde[_0xe896('0x4c')][_0xe896('0x118')]){_0x5c2af6['include'][_0xe896('0x44')]({'model':db[_0xe896('0x80')],'as':_0xe896('0x80'),'attributes':['id','fullname',_0xe896('0xfb')]});}if(_0x4ddfde[_0xe896('0x4c')][_0xe896('0x119')]){_0x5c2af6[_0xe896('0xc5')]=[{'all':!![]}];}return db[_0xe896('0xd9')][_0xe896('0x11a')](_0x5c2af6);})['then'](function(_0xbf5fec){_0x31f4e1[_0xe896('0x115')]=_0xbf5fec;return _0x31f4e1;});}})['then'](respondWithFilteredResult(_0xc1bdcf,_0x5c2af6))[_0xe896('0x45')](handleError(_0xc1bdcf,null));};exports[_0xe896('0x11b')]=function(_0x50e9f6,_0x3f7f9b,_0x45fbfd){return db['ChatInteraction']['find']({'where':{'id':_0x50e9f6[_0xe896('0xc3')]['id']}})[_0xe896('0x23')](handleEntityNotFound(_0x3f7f9b,null))['then'](function(_0xd7222b){if(_0xd7222b){return _0xd7222b[_0xe896('0x11c')](_0x50e9f6['body'][_0xe896('0x111')],_[_0xe896('0x110')](_0x50e9f6[_0xe896('0x3c')],[_0xe896('0x111'),'id'])||{})[_0xe896('0x11d')](function(){return db[_0xe896('0x11e')][_0xe896('0x11a')]({'attributes':['id',_0xe896('0x39'),_0xe896('0x59')],'where':{'id':_0x50e9f6[_0xe896('0x3c')]['ids']}});})[_0xe896('0x23')](function(_0x4b7dda){socket['emit'](_0xe896('0x11f'),{'id':Number(_0x50e9f6[_0xe896('0xc3')]['id']),'tags':_0x4b7dda||[]});return{'id':Number(_0x50e9f6['params']['id']),'tags':_0x4b7dda||[]};});}})['then'](respondWithResult(_0x3f7f9b,null))[_0xe896('0x45')](handleError(_0x3f7f9b,null));};exports[_0xe896('0x120')]=function(_0x40efd6,_0x513fbe,_0x17b841){return db[_0xe896('0x47')][_0xe896('0x6f')]({'where':{'id':_0x40efd6[_0xe896('0xc3')]['id']}})[_0xe896('0x23')](handleEntityNotFound(_0x513fbe,null))['then'](function(_0x704996){if(_0x704996){return _0x704996[_0xe896('0x120')](_0x40efd6[_0xe896('0x4c')]['ids']);}})[_0xe896('0x23')](respondWithStatusCode(_0x513fbe,null))[_0xe896('0x45')](handleError(_0x513fbe,null));};exports[_0xe896('0x121')]=function(_0x99a090,_0x15c4f9){var _0x4b1785=moment()['unix']()[_0xe896('0xab')]();var _0x5bc230=path[_0xe896('0xeb')](config[_0xe896('0xec')],_0xe896('0x122'),_0xe896('0x123'),'tmp');var _0x2d2654=path[_0xe896('0xeb')](config[_0xe896('0xec')],'server',_0xe896('0x123'),_0xe896('0x124'));var _0x5bbc65=path[_0xe896('0xeb')](_0x5bc230,_0x4b1785);var _0x194003=util[_0xe896('0xf1')](_0xe896('0x125'),_0x99a090[_0xe896('0xc3')]['id'],_0x4b1785);var _0x2a3489=path[_0xe896('0xeb')](_0x5bc230,_0x194003);var _0x54df80=[];_0x54df80[_0xe896('0x44')]({'model':db[_0xe896('0x80')],'as':_0xe896('0x80'),'attributes':['id',_0xe896('0x3f')],'raw':!![]});_0x54df80[_0xe896('0x44')]({'model':db[_0xe896('0xdd')],'as':_0xe896('0x74'),'attributes':['id',_0xe896('0x126'),'lastName'],'raw':!![]});if(_0x99a090[_0xe896('0x4c')][_0xe896('0x124')]){_0x54df80[_0xe896('0x44')]({'model':db['Attachment'],'as':_0xe896('0xe8'),'raw':!![]});}var _0x2279c9=[{'model':db[_0xe896('0xd9')],'as':_0xe896('0xf4'),'attributes':['id','body',_0xe896('0xfd'),_0xe896('0xff'),_0xe896('0x117'),_0xe896('0x8c')],'include':_0x54df80}];_0x2279c9[_0xe896('0x44')]({'model':db[_0xe896('0xcd')],'as':_0xe896('0x127'),'attributes':['id',_0xe896('0x39')]});_0x2279c9[_0xe896('0x44')]({'model':db[_0xe896('0x80')],'as':_0xe896('0x128'),'attributes':['id',_0xe896('0x3f')]});return db[_0xe896('0x47')][_0xe896('0x6f')]({'where':{'id':_0x99a090[_0xe896('0xc3')]['id']},'include':_0x2279c9})['then'](handleEntityNotFound(_0x15c4f9,null))['then'](function(_0x5cd4ff){if(_0x5cd4ff){var _0x81d8be=_0x5cd4ff[_0xe896('0x129')]({'plain':!![]});fs[_0xe896('0x12a')](_0x5bbc65);var _0x132625={'channel':_0xe896('0x12b'),'account':_0x81d8be[_0xe896('0x127')][_0xe896('0x39')],'agent':_0x81d8be[_0xe896('0x128')]?_0x81d8be[_0xe896('0x128')][_0xe896('0x3f')]:'N.A.','createdAt':moment(_0x81d8be[_0xe896('0xfd')])['format']('YYYY-MM-DD\x20HH:mm:ss')[_0xe896('0xab')](),'closedAt':_0x81d8be[_0xe896('0xe0')]?moment(_0x81d8be[_0xe896('0x12c')])[_0xe896('0xf1')]('YYYY-MM-DD\x20HH:mm:ss')[_0xe896('0xab')]():'','disposition':_0x81d8be[_0xe896('0x12d')],'chatInfo':{'browser':_0x81d8be['browserName'],'os':_0x81d8be[_0xe896('0x12e')],'referer':_0x81d8be[_0xe896('0x12f')],'customerIp':_0x81d8be[_0xe896('0x130')],'customerPort':_0x81d8be[_0xe896('0x131')]?_0x81d8be['customerPort']:_0xe896('0x132')},'messages':_(_0x81d8be['Messages'])[_0xe896('0x133')]()[_0xe896('0x91')]({'secret':![]})[_0xe896('0x46')](function(_0x374e2f){if(_0x374e2f[_0xe896('0xe8')]){var _0x328e2b=path['join'](_0x2d2654,_0x374e2f[_0xe896('0xe8')][_0xe896('0xe5')]);if(fs[_0xe896('0x134')](_0x328e2b)){fs[_0xe896('0x135')](_0x328e2b)['pipe'](fs[_0xe896('0x136')](path[_0xe896('0xeb')](_0x5bbc65,_0x374e2f[_0xe896('0xe8')][_0xe896('0xe5')])));}}return{'date':moment(_0x374e2f['createdAt'])[_0xe896('0xf1')](_0xe896('0x114'))[_0xe896('0xab')](),'sender':_0x374e2f[_0xe896('0xff')]===_0xe896('0x137')?_0x374e2f[_0xe896('0x80')]?_0x374e2f[_0xe896('0x80')][_0xe896('0x3f')]:'System':_0x374e2f['Contact'][_0xe896('0x126')]+(_0x374e2f[_0xe896('0x74')][_0xe896('0x138')]?'\x20'+_0x374e2f[_0xe896('0x74')]['lastName']:''),'body':_0x374e2f[_0xe896('0xe8')]?_0x374e2f[_0xe896('0xe8')][_0xe896('0xe5')]:_0x374e2f[_0xe896('0x3c')],'direction':_0x374e2f[_0xe896('0xff')]===_0xe896('0x137')?'A':'C','secret':_0x374e2f[_0xe896('0x117')],'read':_0x374e2f['read'],'attachment':_0x374e2f[_0xe896('0xe8')]};})[_0xe896('0x70')]()};return ejs[_0xe896('0x139')](path[_0xe896('0xeb')](config[_0xe896('0xec')],'server',_0xe896('0x13a'),'downloadInteraction.ejs'),{'interaction':_0x132625})[_0xe896('0x23')](function(_0x50d56b){var _0x5d05a4=path[_0xe896('0xeb')](_0x5bbc65,_0xe896('0x13b')+_0x81d8be['id']+'-'+_0x4b1785+_0xe896('0x13c'));var _0x9223f={'path':_0x5d05a4,'channel':_0xe896('0x12b'),'interactionId':_0x81d8be['id']};return pdf[_0xe896('0x13d')](_0x50d56b,_0x9223f);})[_0xe896('0x23')](function(){return new BPromise(function(_0x399827,_0x2a2fa5){zipdir(_0x5bbc65,{'saveTo':_0x2a3489},function(_0x21d235,_0x3d7f5f){if(_0x21d235)return _0x2a2fa5(_0x21d235);return _0x399827(_0x3d7f5f);});})[_0xe896('0x23')](function(){return new BPromise(function(_0x313eb0,_0x54a741){rimraf(_0x5bbc65,function(_0x3edee9){if(_0x3edee9)_0x54a741(_0x3edee9);return _0x313eb0();});});})[_0xe896('0x23')](function(){return _0x15c4f9['download'](_0x2a3489,_0x194003,function(_0x42163c){if(_0x42163c){console[_0xe896('0x13e')]('err',_0x42163c);}else{fs[_0xe896('0x13f')](_0x2a3489);}});});});}else{return _0x15c4f9[_0xe896('0x2e')](0xc8);}})[_0xe896('0x45')](handleError(_0x15c4f9,null));};
\ No newline at end of file
index 39aa8ad..e3a21f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c4a=['getUsers','then','setDataValue','findAll','length','emit','catch','hasOwnProperty','events','../../mysqldb','ChatInteraction','ChatMessage','setMaxListeners','save','update'];(function(_0x2a6ac4,_0x269f56){var _0x18216a=function(_0x52b485){while(--_0x52b485){_0x2a6ac4['push'](_0x2a6ac4['shift']());}};_0x18216a(++_0x269f56);}(_0x4c4a,0x19d));var _0xa4c4=function(_0x219b4b,_0xb0af9b){_0x219b4b=_0x219b4b-0x0;var _0x2376ac=_0x4c4a[_0x219b4b];return _0x2376ac;};'use strict';var EventEmitter=require(_0xa4c4('0x0'));var ChatInteraction=require(_0xa4c4('0x1'))['db'][_0xa4c4('0x2')];var ChatMessage=require('../../mysqldb')['db'][_0xa4c4('0x3')];var ChatInteractionEvents=new EventEmitter();ChatInteractionEvents[_0xa4c4('0x4')](0x0);var events={'afterCreate':_0xa4c4('0x5'),'afterUpdate':_0xa4c4('0x6'),'afterDestroy':'remove'};function emitEvent(_0x25704a){return function(_0x612881,_0x1cc0bd,_0x281b61){_0x612881[_0xa4c4('0x7')]({'attributes':['id'],'raw':!![]})[_0xa4c4('0x8')](function(_0x5b331f){_0x612881[_0xa4c4('0x9')]('Users',_0x5b331f['map'](function(_0x1db432){return{'id':_0x1db432['id']};}));return ChatMessage[_0xa4c4('0xa')]({'where':{'ChatInteractionId':_0x612881['id'],'direction':'in','read':![]},'raw':!![]});})[_0xa4c4('0x8')](function(_0x4304e9){_0x612881[_0xa4c4('0x9')]('unreadMessages',_0x4304e9[_0xa4c4('0xb')]);ChatInteractionEvents[_0xa4c4('0xc')](_0x25704a+':'+_0x612881['id'],_0x612881);ChatInteractionEvents[_0xa4c4('0xc')](_0x25704a,_0x612881);_0x281b61(null);})[_0xa4c4('0xd')](_0x281b61(null));};}for(var e in events){if(events[_0xa4c4('0xe')](e)){var event=events[e];ChatInteraction['hook'](e,emitEvent(event));}}module['exports']=ChatInteractionEvents;
\ No newline at end of file
+var _0xa1d6=['setDataValue','Users','map','findAll','unreadMessages','length','emit','hasOwnProperty','hook','exports','events','../../mysqldb','ChatMessage','setMaxListeners','save','update','remove','getUsers','then'];(function(_0x2dc858,_0x8bc56d){var _0x5048d1=function(_0x4b2558){while(--_0x4b2558){_0x2dc858['push'](_0x2dc858['shift']());}};_0x5048d1(++_0x8bc56d);}(_0xa1d6,0x69));var _0x6a1d=function(_0x320987,_0x134a90){_0x320987=_0x320987-0x0;var _0x5987da=_0xa1d6[_0x320987];return _0x5987da;};'use strict';var EventEmitter=require(_0x6a1d('0x0'));var ChatInteraction=require(_0x6a1d('0x1'))['db']['ChatInteraction'];var ChatMessage=require(_0x6a1d('0x1'))['db'][_0x6a1d('0x2')];var ChatInteractionEvents=new EventEmitter();ChatInteractionEvents[_0x6a1d('0x3')](0x0);var events={'afterCreate':_0x6a1d('0x4'),'afterUpdate':_0x6a1d('0x5'),'afterDestroy':_0x6a1d('0x6')};function emitEvent(_0x475b25){return function(_0x511a0e,_0x316d78,_0x5311db){_0x511a0e[_0x6a1d('0x7')]({'attributes':['id'],'raw':!![]})[_0x6a1d('0x8')](function(_0x3fbf88){_0x511a0e[_0x6a1d('0x9')](_0x6a1d('0xa'),_0x3fbf88[_0x6a1d('0xb')](function(_0x2a8b26){return{'id':_0x2a8b26['id']};}));return ChatMessage[_0x6a1d('0xc')]({'where':{'ChatInteractionId':_0x511a0e['id'],'direction':'in','read':![]},'raw':!![]});})[_0x6a1d('0x8')](function(_0x7934a9){_0x511a0e['setDataValue'](_0x6a1d('0xd'),_0x7934a9[_0x6a1d('0xe')]);ChatInteractionEvents[_0x6a1d('0xf')](_0x475b25+':'+_0x511a0e['id'],_0x511a0e);ChatInteractionEvents[_0x6a1d('0xf')](_0x475b25,_0x511a0e);_0x5311db(null);})['catch'](_0x5311db(null));};}for(var e in events){if(events[_0x6a1d('0x10')](e)){var event=events[e];ChatInteraction[_0x6a1d('0x11')](e,emitEvent(event));}}module[_0x6a1d('0x12')]=ChatInteractionEvents;
\ No newline at end of file
index 658ae0e..a822fef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc76e=['bluebird','path','rimraf','../../config/environment','./chatInteraction.attributes','exports','define','ChatInteraction','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','utf8mb4_unicode_ci','util','api','moment'];(function(_0x5f1f83,_0x5e5dc0){var _0x30ee0c=function(_0x2f9e56){while(--_0x2f9e56){_0x5f1f83['push'](_0x5f1f83['shift']());}};_0x30ee0c(++_0x5e5dc0);}(_0xc76e,0x66));var _0xec76=function(_0x3463f0,_0x25ed63){_0x3463f0=_0x3463f0-0x0;var _0x2952bd=_0xc76e[_0x3463f0];return _0x2952bd;};'use strict';var _=require('lodash');var util=require(_0xec76('0x0'));var logger=require('../../config/logger')(_0xec76('0x1'));var moment=require(_0xec76('0x2'));var BPromise=require(_0xec76('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xec76('0x4'));var rimraf=require(_0xec76('0x5'));var config=require(_0xec76('0x6'));var attributes=require(_0xec76('0x7'));module[_0xec76('0x8')]=function(_0x14d1dc,_0x35f5cf){return _0x14d1dc[_0xec76('0x9')](_0xec76('0xa'),attributes,{'tableName':'chat_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x24a4b6,_0x152f71,_0x677d2a){if(_0x24a4b6['changed']('closed')){_0x24a4b6[_0xec76('0xb')]=moment()[_0xec76('0xc')](_0xec76('0xd'));}_0x677d2a(null,_0x24a4b6);}},'charset':'utf8mb4','collate':_0xec76('0xe')});};
\ No newline at end of file
+var _0x2424=['utf8mb4_unicode_ci','lodash','util','bluebird','rimraf','../../config/environment','ChatInteraction','chat_interactions','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','utf8mb4'];(function(_0xf85781,_0x443952){var _0x57a21f=function(_0xa30d6b){while(--_0xa30d6b){_0xf85781['push'](_0xf85781['shift']());}};_0x57a21f(++_0x443952);}(_0x2424,0x1bd));var _0x4242=function(_0x5b0431,_0x3709e9){_0x5b0431=_0x5b0431-0x0;var _0x4ecefc=_0x2424[_0x5b0431];return _0x4ecefc;};'use strict';var _=require(_0x4242('0x0'));var util=require(_0x4242('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x4242('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x4242('0x3'));var config=require(_0x4242('0x4'));var attributes=require('./chatInteraction.attributes');module['exports']=function(_0x101114,_0x5db378){return _0x101114['define'](_0x4242('0x5'),attributes,{'tableName':_0x4242('0x6'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x41ec01,_0x17ad09,_0x56eef6){if(_0x41ec01['changed']('closed')){_0x41ec01[_0x4242('0x7')]=moment()[_0x4242('0x8')](_0x4242('0x9'));}_0x56eef6(null,_0x41ec01);}},'charset':_0x4242('0xa'),'collate':_0x4242('0xb')});};
\ No newline at end of file
index d74696e..3920850 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe67d=['debug','ChatInteraction,\x20%s,\x20%s,\x20%s','stringify','error','message','ChatInteraction,\x20%s,\x20%s','result','UpdateChatInteraction','ChatInteraction','body','options','raw','where','limit','catch','AddTagsToChatInteraction','find','addTags','ids','omit','spread','AddTags','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','localhost','socket.io-emitter','./chatInteraction.socket','register','request','then','info','request\x20sent'];(function(_0xa2ec7c,_0x5ca918){var _0x1ff134=function(_0xb98b90){while(--_0xb98b90){_0xa2ec7c['push'](_0xa2ec7c['shift']());}};_0x1ff134(++_0x5ca918);}(_0xe67d,0x9a));var _0xde67=function(_0x5734e1,_0x3e1d75){_0x5734e1=_0x5734e1-0x0;var _0x22c784=_0xe67d[_0x5734e1];return _0x22c784;};'use strict';var _=require(_0xde67('0x0'));var util=require(_0xde67('0x1'));var moment=require(_0xde67('0x2'));var BPromise=require(_0xde67('0x3'));var rs=require(_0xde67('0x4'));var fs=require('fs');var Redis=require(_0xde67('0x5'));var db=require(_0xde67('0x6'))['db'];var utils=require(_0xde67('0x7'));var logger=require(_0xde67('0x8'))(_0xde67('0x9'));var config=require(_0xde67('0xa'));var jayson=require('jayson/promise');var client=jayson[_0xde67('0xb')][_0xde67('0xc')]({'port':0x232a});config[_0xde67('0xd')]=_['defaults'](config[_0xde67('0xd')],{'host':_0xde67('0xe'),'port':0x18eb});var socket=require(_0xde67('0xf'))(new Redis(config[_0xde67('0xd')]));require(_0xde67('0x10'))[_0xde67('0x11')](socket);function respondWithRpcPromise(_0x59ec11,_0x3a9f1a,_0x3ce67f){return new BPromise(function(_0x49502f,_0x170287){return client[_0xde67('0x12')](_0x59ec11,_0x3ce67f)[_0xde67('0x13')](function(_0x54ec7b){logger[_0xde67('0x14')]('ChatInteraction,\x20%s,\x20%s',_0x3a9f1a,_0xde67('0x15'));logger[_0xde67('0x16')](_0xde67('0x17'),_0x3a9f1a,_0xde67('0x15'),JSON[_0xde67('0x18')](_0x54ec7b));if(_0x54ec7b['error']){if(_0x54ec7b[_0xde67('0x19')]['code']===0x1f4){logger['error']('ChatInteraction,\x20%s,\x20%s',_0x3a9f1a,_0x54ec7b[_0xde67('0x19')]['message']);return _0x170287(_0x54ec7b[_0xde67('0x19')][_0xde67('0x1a')]);}logger['error'](_0xde67('0x1b'),_0x3a9f1a,_0x54ec7b[_0xde67('0x19')][_0xde67('0x1a')]);return _0x49502f(_0x54ec7b[_0xde67('0x19')][_0xde67('0x1a')]);}else{logger['info'](_0xde67('0x1b'),_0x3a9f1a,_0xde67('0x15'));_0x49502f(_0x54ec7b[_0xde67('0x1c')][_0xde67('0x1a')]);}})['catch'](function(_0x442604){logger['error'](_0xde67('0x1b'),_0x3a9f1a,_0x442604);_0x170287(_0x442604);});});}exports[_0xde67('0x1d')]=function(_0x20c564){var _0x5b1a58=this;return new Promise(function(_0x2ad68,_0xa91532){return db[_0xde67('0x1e')]['update'](_0x20c564[_0xde67('0x1f')],{'raw':_0x20c564[_0xde67('0x20')]?_0x20c564[_0xde67('0x20')][_0xde67('0x21')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x20c564['options']?_0x20c564[_0xde67('0x20')][_0xde67('0x22')]||null:null,'attributes':_0x20c564[_0xde67('0x20')]?_0x20c564[_0xde67('0x20')]['attributes']||null:null,'limit':_0x20c564[_0xde67('0x20')]?_0x20c564[_0xde67('0x20')][_0xde67('0x23')]||null:null})[_0xde67('0x13')](function(_0x5b9247){logger[_0xde67('0x14')](_0xde67('0x1d'),_0x20c564);logger[_0xde67('0x16')](_0xde67('0x1d'),_0x20c564,JSON[_0xde67('0x18')](_0x5b9247));_0x2ad68(_0x5b9247);})[_0xde67('0x24')](function(_0x2229f3){logger[_0xde67('0x19')](_0xde67('0x1d'),_0x2229f3[_0xde67('0x1a')],_0x20c564);_0xa91532(_0x5b1a58[_0xde67('0x19')](0x1f4,_0x2229f3[_0xde67('0x1a')]));});});};exports[_0xde67('0x25')]=function(_0x3aa382){return new Promise(function(_0x480a56,_0x28e37f){return db[_0xde67('0x1e')][_0xde67('0x26')]({'where':_0x3aa382[_0xde67('0x20')]?_0x3aa382['options'][_0xde67('0x22')]||null:null})[_0xde67('0x13')](function(_0x539f6c){if(_0x539f6c){return _0x539f6c[_0xde67('0x27')](_0x3aa382[_0xde67('0x1f')][_0xde67('0x28')],_[_0xde67('0x29')](_0x3aa382[_0xde67('0x1f')],[_0xde67('0x28'),'id'])||{});}})[_0xde67('0x2a')](function(_0x425d17){logger['info']('AddTags',_0x3aa382);logger[_0xde67('0x16')](_0xde67('0x2b'),_0x3aa382,JSON[_0xde67('0x18')](_0x425d17));_0x480a56(_0x425d17);})[_0xde67('0x24')](function(_0x35be68){logger['error'](_0xde67('0x2b'),_0x35be68[_0xde67('0x1a')],_0x3aa382);_0x28e37f(_this[_0xde67('0x19')](0x1f4,_0x35be68['message']));});});};
\ No newline at end of file
+var _0x6a3f=['./chatInteraction.socket','register','request','then','info','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','ChatInteraction,\x20%s,\x20%s','message','result','catch','update','body','options','raw','where','attributes','UpdateChatInteraction','AddTagsToChatInteraction','find','addTags','ids','spread','AddTags','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','http','defaults','redis','socket.io-emitter'];(function(_0xc0d130,_0x4a16a0){var _0x8d963c=function(_0x47d1f0){while(--_0x47d1f0){_0xc0d130['push'](_0xc0d130['shift']());}};_0x8d963c(++_0x4a16a0);}(_0x6a3f,0x1df));var _0xf6a3=function(_0x48b212,_0x968733){_0x48b212=_0x48b212-0x0;var _0x3ba695=_0x6a3f[_0x48b212];return _0x3ba695;};'use strict';var _=require(_0xf6a3('0x0'));var util=require(_0xf6a3('0x1'));var moment=require('moment');var BPromise=require(_0xf6a3('0x2'));var rs=require(_0xf6a3('0x3'));var fs=require('fs');var Redis=require(_0xf6a3('0x4'));var db=require(_0xf6a3('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xf6a3('0x6'))(_0xf6a3('0x7'));var config=require(_0xf6a3('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0xf6a3('0x9')]({'port':0x232a});config['redis']=_[_0xf6a3('0xa')](config[_0xf6a3('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0xf6a3('0xc'))(new Redis(config[_0xf6a3('0xb')]));require(_0xf6a3('0xd'))[_0xf6a3('0xe')](socket);function respondWithRpcPromise(_0x2c3f71,_0x40a14a,_0x74cc5c){return new BPromise(function(_0x20f070,_0x2a3575){return client[_0xf6a3('0xf')](_0x2c3f71,_0x74cc5c)[_0xf6a3('0x10')](function(_0x526c91){logger[_0xf6a3('0x11')]('ChatInteraction,\x20%s,\x20%s',_0x40a14a,'request\x20sent');logger[_0xf6a3('0x12')](_0xf6a3('0x13'),_0x40a14a,_0xf6a3('0x14'),JSON[_0xf6a3('0x15')](_0x526c91));if(_0x526c91[_0xf6a3('0x16')]){if(_0x526c91[_0xf6a3('0x16')][_0xf6a3('0x17')]===0x1f4){logger[_0xf6a3('0x16')](_0xf6a3('0x18'),_0x40a14a,_0x526c91[_0xf6a3('0x16')][_0xf6a3('0x19')]);return _0x2a3575(_0x526c91[_0xf6a3('0x16')][_0xf6a3('0x19')]);}logger[_0xf6a3('0x16')](_0xf6a3('0x18'),_0x40a14a,_0x526c91[_0xf6a3('0x16')][_0xf6a3('0x19')]);return _0x20f070(_0x526c91['error'][_0xf6a3('0x19')]);}else{logger['info'](_0xf6a3('0x18'),_0x40a14a,'request\x20sent');_0x20f070(_0x526c91[_0xf6a3('0x1a')][_0xf6a3('0x19')]);}})[_0xf6a3('0x1b')](function(_0xb3b6eb){logger[_0xf6a3('0x16')](_0xf6a3('0x18'),_0x40a14a,_0xb3b6eb);_0x2a3575(_0xb3b6eb);});});}exports['UpdateChatInteraction']=function(_0x2ff17f){var _0x5844d9=this;return new Promise(function(_0x584dd9,_0x16c1ca){return db['ChatInteraction'][_0xf6a3('0x1c')](_0x2ff17f[_0xf6a3('0x1d')],{'raw':_0x2ff17f[_0xf6a3('0x1e')]?_0x2ff17f[_0xf6a3('0x1e')][_0xf6a3('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2ff17f[_0xf6a3('0x1e')]?_0x2ff17f[_0xf6a3('0x1e')][_0xf6a3('0x20')]||null:null,'attributes':_0x2ff17f['options']?_0x2ff17f[_0xf6a3('0x1e')][_0xf6a3('0x21')]||null:null,'limit':_0x2ff17f[_0xf6a3('0x1e')]?_0x2ff17f['options']['limit']||null:null})['then'](function(_0x150937){logger[_0xf6a3('0x11')](_0xf6a3('0x22'),_0x2ff17f);logger['debug']('UpdateChatInteraction',_0x2ff17f,JSON[_0xf6a3('0x15')](_0x150937));_0x584dd9(_0x150937);})[_0xf6a3('0x1b')](function(_0x25f7ce){logger[_0xf6a3('0x16')](_0xf6a3('0x22'),_0x25f7ce[_0xf6a3('0x19')],_0x2ff17f);_0x16c1ca(_0x5844d9[_0xf6a3('0x16')](0x1f4,_0x25f7ce['message']));});});};exports[_0xf6a3('0x23')]=function(_0x1cb30e){return new Promise(function(_0x26bc49,_0x2f2564){return db['ChatInteraction'][_0xf6a3('0x24')]({'where':_0x1cb30e[_0xf6a3('0x1e')]?_0x1cb30e['options'][_0xf6a3('0x20')]||null:null})[_0xf6a3('0x10')](function(_0x2cded1){if(_0x2cded1){return _0x2cded1[_0xf6a3('0x25')](_0x1cb30e[_0xf6a3('0x1d')][_0xf6a3('0x26')],_['omit'](_0x1cb30e[_0xf6a3('0x1d')],[_0xf6a3('0x26'),'id'])||{});}})[_0xf6a3('0x27')](function(_0xccf700){logger[_0xf6a3('0x11')](_0xf6a3('0x28'),_0x1cb30e);logger[_0xf6a3('0x12')](_0xf6a3('0x28'),_0x1cb30e,JSON[_0xf6a3('0x15')](_0xccf700));_0x26bc49(_0xccf700);})[_0xf6a3('0x1b')](function(_0x587e5c){logger['error']('AddTags',_0x587e5c['message'],_0x1cb30e);_0x2f2564(_this[_0xf6a3('0x16')](0x1f4,_0x587e5c[_0xf6a3('0x19')]));});});};
\ No newline at end of file
index 683a4e2..9824281 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d15=['remove','update','emit','removeListener','register','length','chatInteraction:','./chatInteraction.events','save'];(function(_0x2dbc0e,_0x56e61b){var _0x5601dc=function(_0x22a8a0){while(--_0x22a8a0){_0x2dbc0e['push'](_0x2dbc0e['shift']());}};_0x5601dc(++_0x56e61b);}(_0x3d15,0x142));var _0x53d1=function(_0x3cb86b,_0x3c75f6){_0x3cb86b=_0x3cb86b-0x0;var _0x3c10a0=_0x3d15[_0x3cb86b];return _0x3c10a0;};'use strict';var ChatInteractionEvents=require(_0x53d1('0x0'));var events=[_0x53d1('0x1'),_0x53d1('0x2'),_0x53d1('0x3')];function createListener(_0x49d165,_0xaf8049){return function(_0x4daff0){_0xaf8049[_0x53d1('0x4')](_0x49d165,_0x4daff0);};}function removeListener(_0x16b2e8,_0x3e7b33){return function(){ChatInteractionEvents[_0x53d1('0x5')](_0x16b2e8,_0x3e7b33);};}exports[_0x53d1('0x6')]=function(_0x299607){for(var _0x1727ac=0x0,_0x6e4165=events[_0x53d1('0x7')];_0x1727ac<_0x6e4165;_0x1727ac++){var _0x625949=events[_0x1727ac];var _0x47a2a1=createListener(_0x53d1('0x8')+_0x625949,_0x299607);ChatInteractionEvents['on'](_0x625949,_0x47a2a1);}};
\ No newline at end of file
+var _0x4e20=['./chatInteraction.events','save','remove','update','emit','removeListener','length'];(function(_0x5009b9,_0x16bd0a){var _0x321d74=function(_0x509c0d){while(--_0x509c0d){_0x5009b9['push'](_0x5009b9['shift']());}};_0x321d74(++_0x16bd0a);}(_0x4e20,0x173));var _0x04e2=function(_0x5a9c0c,_0x4ec485){_0x5a9c0c=_0x5a9c0c-0x0;var _0x53c77d=_0x4e20[_0x5a9c0c];return _0x53c77d;};'use strict';var ChatInteractionEvents=require(_0x04e2('0x0'));var events=[_0x04e2('0x1'),_0x04e2('0x2'),_0x04e2('0x3')];function createListener(_0x4c362a,_0x2784ca){return function(_0x128a54){_0x2784ca[_0x04e2('0x4')](_0x4c362a,_0x128a54);};}function removeListener(_0x768f59,_0xc4d606){return function(){ChatInteractionEvents[_0x04e2('0x5')](_0x768f59,_0xc4d606);};}exports['register']=function(_0x507ebc){for(var _0x220338=0x0,_0x2c6f93=events[_0x04e2('0x6')];_0x220338<_0x2c6f93;_0x220338++){var _0x51a260=events[_0x220338];var _0x9f3e69=createListener('chatInteraction:'+_0x51a260,_0x507ebc);ChatInteractionEvents['on'](_0x51a260,_0x9f3e69);}};
\ No newline at end of file
index bc93681..34e6811 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x019e=['path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatInteraction.controller','get','isAuthenticated','index','describe','/:id','isChatInteractionAuthorized','show','/:id/attachment_download','attachmentDownload','/:id/messages','getMessages','getMyMessages','/:id/download','post','create','/:id/vidaoo','createVidaooSession','diskStorage','join','root','server/files/attachments/','format','%s-%s','now','replace','/:id/attachment_upload','single','file','attachmentUpload','addMessage','chat','chatinteraction:addtags','put','tracked','chatinteraction:update','update','customUpdate','/:id/abandon','/:id/close','close','delete','chatinteraction:destroy','destroy','/:id/tags','removeTags','exports','multer','util'];(function(_0x32f274,_0x295bab){var _0x24c297=function(_0x40be54){while(--_0x40be54){_0x32f274['push'](_0x32f274['shift']());}};_0x24c297(++_0x295bab);}(_0x019e,0x186));var _0xe019=function(_0x4fed4b,_0x3ff743){_0x4fed4b=_0x4fed4b-0x0;var _0x1b3374=_0x019e[_0x4fed4b];return _0x1b3374;};'use strict';var multer=require(_0xe019('0x0'));var util=require(_0xe019('0x1'));var path=require(_0xe019('0x2'));var timeout=require('connect-timeout');var express=require(_0xe019('0x3'));var router=express[_0xe019('0x4')]();var fs_extra=require(_0xe019('0x5'));var auth=require(_0xe019('0x6'));var interaction=require(_0xe019('0x7'));var config=require(_0xe019('0x8'));var controller=require(_0xe019('0x9'));router[_0xe019('0xa')]('/',auth[_0xe019('0xb')](),controller[_0xe019('0xc')]);router[_0xe019('0xa')]('/describe',auth['isAuthenticated'](),controller[_0xe019('0xd')]);router['get'](_0xe019('0xe'),auth[_0xe019('0xf')](),controller[_0xe019('0x10')]);router[_0xe019('0xa')](_0xe019('0x11'),auth[_0xe019('0xf')](),controller[_0xe019('0x12')]);router['get'](_0xe019('0x13'),auth[_0xe019('0xb')](),controller[_0xe019('0x14')]);router[_0xe019('0xa')]('/:id/my_messages',auth[_0xe019('0xf')](),controller[_0xe019('0x15')]);router[_0xe019('0xa')](_0xe019('0x16'),auth[_0xe019('0xb')](),controller['download']);router[_0xe019('0x17')]('/',auth[_0xe019('0xb')](),controller[_0xe019('0x18')]);router['post'](_0xe019('0x19'),auth[_0xe019('0xb')](),controller[_0xe019('0x1a')]);var upload=multer({'storage':multer[_0xe019('0x1b')]({'destination':function(_0x2405c3,_0x16c7a6,_0x93c87){_0x93c87(null,path[_0xe019('0x1c')](config[_0xe019('0x1d')],_0xe019('0x1e')));},'filename':function(_0x4e1452,_0x4252ef,_0x1e5720){_0x1e5720(null,util[_0xe019('0x1f')](_0xe019('0x20'),Date[_0xe019('0x21')](),_0x4252ef['originalname'][_0xe019('0x22')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0xe019('0x17')](_0xe019('0x23'),upload[_0xe019('0x24')](_0xe019('0x25')),controller[_0xe019('0x26')]);router[_0xe019('0x17')](_0xe019('0x13'),auth[_0xe019('0xf')](),controller[_0xe019('0x27')]);router[_0xe019('0x17')]('/:id/tags',auth[_0xe019('0xb')](),interaction['tracked'](_0xe019('0x28'),_0xe019('0x29')),controller['addTags']);router[_0xe019('0x2a')](_0xe019('0xe'),auth[_0xe019('0xb')](),interaction[_0xe019('0x2b')](_0xe019('0x28'),_0xe019('0x2c')),controller[_0xe019('0x2d')]);router['put']('/:id/custom_update',controller[_0xe019('0x2e')]);router[_0xe019('0x2a')](_0xe019('0x2f'),auth[_0xe019('0xf')](),controller['abandon']);router[_0xe019('0x2a')](_0xe019('0x30'),controller[_0xe019('0x31')]);router[_0xe019('0x32')]('/:id',auth['isAuthenticated'](),interaction[_0xe019('0x2b')](_0xe019('0x28'),_0xe019('0x33')),controller[_0xe019('0x34')]);router[_0xe019('0x32')](_0xe019('0x35'),auth[_0xe019('0xb')](),controller[_0xe019('0x36')]);module[_0xe019('0x37')]=router;
\ No newline at end of file
+var _0x8bbf=['attachmentUpload','/:id/tags','tracked','chat','chatinteraction:addtags','addTags','put','chatinteraction:update','update','/:id/custom_update','customUpdate','/:id/abandon','abandon','close','delete','chatinteraction:destroy','destroy','util','path','connect-timeout','express','Router','fs-extra','../../config/environment','./chatInteraction.controller','get','isAuthenticated','index','/:id','isChatInteractionAuthorized','show','/:id/attachment_download','attachmentDownload','/:id/messages','getMessages','/:id/my_messages','/:id/download','download','post','create','/:id/vidaoo','createVidaooSession','diskStorage','root','server/files/attachments/','format','%s-%s','replace','/:id/attachment_upload','single','file'];(function(_0x3740fe,_0x6c543c){var _0x55492b=function(_0x1f851f){while(--_0x1f851f){_0x3740fe['push'](_0x3740fe['shift']());}};_0x55492b(++_0x6c543c);}(_0x8bbf,0x1dc));var _0xf8bb=function(_0x1ca447,_0x25864f){_0x1ca447=_0x1ca447-0x0;var _0x32d1a3=_0x8bbf[_0x1ca447];return _0x32d1a3;};'use strict';var multer=require('multer');var util=require(_0xf8bb('0x0'));var path=require(_0xf8bb('0x1'));var timeout=require(_0xf8bb('0x2'));var express=require(_0xf8bb('0x3'));var router=express[_0xf8bb('0x4')]();var fs_extra=require(_0xf8bb('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xf8bb('0x6'));var controller=require(_0xf8bb('0x7'));router[_0xf8bb('0x8')]('/',auth[_0xf8bb('0x9')](),controller[_0xf8bb('0xa')]);router[_0xf8bb('0x8')]('/describe',auth[_0xf8bb('0x9')](),controller['describe']);router[_0xf8bb('0x8')](_0xf8bb('0xb'),auth[_0xf8bb('0xc')](),controller[_0xf8bb('0xd')]);router[_0xf8bb('0x8')](_0xf8bb('0xe'),auth[_0xf8bb('0xc')](),controller[_0xf8bb('0xf')]);router[_0xf8bb('0x8')](_0xf8bb('0x10'),auth[_0xf8bb('0x9')](),controller[_0xf8bb('0x11')]);router[_0xf8bb('0x8')](_0xf8bb('0x12'),auth['isChatInteractionAuthorized'](),controller['getMyMessages']);router[_0xf8bb('0x8')](_0xf8bb('0x13'),auth[_0xf8bb('0x9')](),controller[_0xf8bb('0x14')]);router[_0xf8bb('0x15')]('/',auth[_0xf8bb('0x9')](),controller[_0xf8bb('0x16')]);router[_0xf8bb('0x15')](_0xf8bb('0x17'),auth['isAuthenticated'](),controller[_0xf8bb('0x18')]);var upload=multer({'storage':multer[_0xf8bb('0x19')]({'destination':function(_0x49fd37,_0x1ff2f8,_0xabd9a7){_0xabd9a7(null,path['join'](config[_0xf8bb('0x1a')],_0xf8bb('0x1b')));},'filename':function(_0x1ab6d7,_0x892cdc,_0x2f0ab6){_0x2f0ab6(null,util[_0xf8bb('0x1c')](_0xf8bb('0x1d'),Date['now'](),_0x892cdc['originalname'][_0xf8bb('0x1e')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0xf8bb('0x15')](_0xf8bb('0x1f'),upload[_0xf8bb('0x20')](_0xf8bb('0x21')),controller[_0xf8bb('0x22')]);router[_0xf8bb('0x15')](_0xf8bb('0x10'),auth[_0xf8bb('0xc')](),controller['addMessage']);router['post'](_0xf8bb('0x23'),auth[_0xf8bb('0x9')](),interaction[_0xf8bb('0x24')](_0xf8bb('0x25'),_0xf8bb('0x26')),controller[_0xf8bb('0x27')]);router[_0xf8bb('0x28')](_0xf8bb('0xb'),auth[_0xf8bb('0x9')](),interaction['tracked'](_0xf8bb('0x25'),_0xf8bb('0x29')),controller[_0xf8bb('0x2a')]);router['put'](_0xf8bb('0x2b'),controller[_0xf8bb('0x2c')]);router['put'](_0xf8bb('0x2d'),auth[_0xf8bb('0xc')](),controller[_0xf8bb('0x2e')]);router['put']('/:id/close',controller[_0xf8bb('0x2f')]);router[_0xf8bb('0x30')](_0xf8bb('0xb'),auth[_0xf8bb('0x9')](),interaction[_0xf8bb('0x24')](_0xf8bb('0x25'),_0xf8bb('0x31')),controller[_0xf8bb('0x32')]);router[_0xf8bb('0x30')](_0xf8bb('0x23'),auth[_0xf8bb('0x9')](),controller['removeTags']);module['exports']=router;
\ No newline at end of file
index aea8764..a79a196 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4697=['sequelize','exports','TEXT','BOOLEAN'];(function(_0x3d71ba,_0x49a38b){var _0x5e0ed0=function(_0x4d0bfb){while(--_0x4d0bfb){_0x3d71ba['push'](_0x3d71ba['shift']());}};_0x5e0ed0(++_0x49a38b);}(_0x4697,0x190));var _0x7469=function(_0x58dc35,_0x401278){_0x58dc35=_0x58dc35-0x0;var _0x2b9081=_0x4697[_0x58dc35];return _0x2b9081;};'use strict';var Sequelize=require(_0x7469('0x0'));module[_0x7469('0x1')]={'body':{'type':Sequelize[_0x7469('0x2')]('medium'),'allowNull':![]},'read':{'type':Sequelize[_0x7469('0x3')],'defaultValue':![]},'ChatInternalMessageId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
+var _0xd0a6=['exports','TEXT','sequelize'];(function(_0x2d982d,_0x121028){var _0x4f36b0=function(_0x11f3a9){while(--_0x11f3a9){_0x2d982d['push'](_0x2d982d['shift']());}};_0x4f36b0(++_0x121028);}(_0xd0a6,0x173));var _0x6d0a=function(_0x182294,_0x377309){_0x182294=_0x182294-0x0;var _0x1ff555=_0xd0a6[_0x182294];return _0x1ff555;};'use strict';var Sequelize=require(_0x6d0a('0x0'));module[_0x6d0a('0x1')]={'body':{'type':Sequelize[_0x6d0a('0x2')]('medium'),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'ChatInternalMessageId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index 816fc1e..37fa124 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b2f=['offset','undefined','limit','count','Content-Range','apply','reject','save','update','destroy','then','error','stack','name','send','index','map','ChatInternalMessage','fieldName','type','key','keys','filters','intersection','model','query','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','rawAttributes','create','body','find','params','describe','get','messages','createdAt','lastMessage','lastMessageAt','format','YYYY-MM-DD\x20HH:mm:ss','getUsers','User','agent','admin','fullname','role','userpic','internal','online','lastLoginAt','allowmessenger','showWebBar','-online','VoiceQueues','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','Agents','userProfileId','autoAssociation','UserProfileResource','isEmpty','resourceId','push','FromId','ToId','read','-createdAt','all','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','ejs','fs-extra','lodash','squel','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/license/util','../../mysqldb','defaults','redis','localhost','./chatInternalMessage.socket','sendStatus','status','end','json'];(function(_0x51b0dc,_0x5307b7){var _0x13fa89=function(_0x2c880f){while(--_0x2c880f){_0x51b0dc['push'](_0x51b0dc['shift']());}};_0x13fa89(++_0x5307b7);}(_0x1b2f,0x13e));var _0xf1b2=function(_0x40d570,_0xe5f8be){_0x40d570=_0x40d570-0x0;var _0x18cb06=_0x1b2f[_0x40d570];return _0x18cb06;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xf1b2('0x0'));var zipdir=require(_0xf1b2('0x1'));var jsonpatch=require(_0xf1b2('0x2'));var rp=require(_0xf1b2('0x3'));var moment=require(_0xf1b2('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xf1b2('0x5'));var util=require(_0xf1b2('0x6'));var path=require(_0xf1b2('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xf1b2('0x8'));var fs=require('fs');var fs_extra=require(_0xf1b2('0x9'));var _=require(_0xf1b2('0xa'));var squel=require(_0xf1b2('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xf1b2('0xc'));var toCsv=require(_0xf1b2('0xd'));var querystring=require(_0xf1b2('0xe'));var Papa=require(_0xf1b2('0xf'));var Redis=require('ioredis');var authService=require(_0xf1b2('0x10'));var qs=require(_0xf1b2('0x11'));var as=require(_0xf1b2('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xf1b2('0x13'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xf1b2('0x14'));var db=require(_0xf1b2('0x15'))['db'];config['redis']=_[_0xf1b2('0x16')](config[_0xf1b2('0x17')],{'host':_0xf1b2('0x18'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xf1b2('0x19'))['register'](socket);function respondWithStatusCode(_0xd3b0eb,_0x2eccf8){_0x2eccf8=_0x2eccf8||0xcc;return function(_0x12e6a){if(_0x12e6a){return _0xd3b0eb[_0xf1b2('0x1a')](_0x2eccf8);}return _0xd3b0eb[_0xf1b2('0x1b')](_0x2eccf8)[_0xf1b2('0x1c')]();};}function respondWithResult(_0x5752b5,_0x1102ec){_0x1102ec=_0x1102ec||0xc8;return function(_0x26d241){if(_0x26d241){return _0x5752b5[_0xf1b2('0x1b')](_0x1102ec)[_0xf1b2('0x1d')](_0x26d241);}};}function respondWithFilteredResult(_0x2cf734,_0x2f50b8){return function(_0x4246f3){if(_0x4246f3){var _0x128316=typeof _0x2f50b8[_0xf1b2('0x1e')]===_0xf1b2('0x1f')&&typeof _0x2f50b8[_0xf1b2('0x20')]==='undefined';var _0x3bc9b9=_0x4246f3[_0xf1b2('0x21')];var _0x5b7b79=_0x128316?0x0:_0x2f50b8['offset'];var _0x27175b=_0x128316?_0x4246f3['count']:_0x2f50b8[_0xf1b2('0x1e')]+_0x2f50b8[_0xf1b2('0x20')];var _0x558b96;if(_0x27175b>=_0x3bc9b9){_0x27175b=_0x3bc9b9;_0x558b96=0xc8;}else{_0x558b96=0xce;}_0x2cf734['status'](_0x558b96);return _0x2cf734['set'](_0xf1b2('0x22'),_0x5b7b79+'-'+_0x27175b+'/'+_0x3bc9b9)['json'](_0x4246f3);}return null;};}function patchUpdates(_0x2ea9af){return function(_0x15ce01){try{jsonpatch[_0xf1b2('0x23')](_0x15ce01,_0x2ea9af,!![]);}catch(_0x4946b3){return BPromise[_0xf1b2('0x24')](_0x4946b3);}return _0x15ce01[_0xf1b2('0x25')]();};}function saveUpdates(_0x14d1fe,_0x4e2d62){return function(_0x513366){if(_0x513366){return _0x513366[_0xf1b2('0x26')](_0x14d1fe)['then'](function(_0x579330){return _0x579330;});}return null;};}function removeEntity(_0x351044,_0x5d356b){return function(_0x1b8c0c){if(_0x1b8c0c){return _0x1b8c0c[_0xf1b2('0x27')]()[_0xf1b2('0x28')](function(){_0x351044[_0xf1b2('0x1b')](0xcc)[_0xf1b2('0x1c')]();});}};}function handleEntityNotFound(_0x30f648,_0x215170){return function(_0x29a3d1){if(!_0x29a3d1){_0x30f648[_0xf1b2('0x1a')](0x194);}return _0x29a3d1;};}function handleError(_0x3714a5,_0x4934ab){_0x4934ab=_0x4934ab||0x1f4;return function(_0x4c43ed){logger[_0xf1b2('0x29')](_0x4c43ed[_0xf1b2('0x2a')]);if(_0x4c43ed[_0xf1b2('0x2b')]){delete _0x4c43ed[_0xf1b2('0x2b')];}_0x3714a5[_0xf1b2('0x1b')](_0x4934ab)[_0xf1b2('0x2c')](_0x4c43ed);};}exports[_0xf1b2('0x2d')]=function(_0x5703d3,_0x469e19){var _0x22ea26={},_0x181625={},_0x179a1e={'count':0x0,'rows':[]};var _0x462047=_[_0xf1b2('0x2e')](db[_0xf1b2('0x2f')]['rawAttributes'],function(_0x988790){return{'name':_0x988790[_0xf1b2('0x30')],'type':_0x988790[_0xf1b2('0x31')][_0xf1b2('0x32')]};});_0x181625['model']=_[_0xf1b2('0x2e')](_0x462047,_0xf1b2('0x2b'));_0x181625['query']=_[_0xf1b2('0x33')](_0x5703d3['query']);_0x181625[_0xf1b2('0x34')]=_[_0xf1b2('0x35')](_0x181625[_0xf1b2('0x36')],_0x181625[_0xf1b2('0x37')]);_0x22ea26[_0xf1b2('0x38')]=_[_0xf1b2('0x35')](_0x181625[_0xf1b2('0x36')],qs[_0xf1b2('0x39')](_0x5703d3[_0xf1b2('0x37')]['fields']));_0x22ea26[_0xf1b2('0x38')]=_0x22ea26['attributes'][_0xf1b2('0x3a')]?_0x22ea26[_0xf1b2('0x38')]:_0x181625[_0xf1b2('0x36')];if(!_0x5703d3[_0xf1b2('0x37')][_0xf1b2('0x3b')](_0xf1b2('0x3c'))){_0x22ea26[_0xf1b2('0x20')]=qs[_0xf1b2('0x20')](_0x5703d3[_0xf1b2('0x37')][_0xf1b2('0x20')]);_0x22ea26['offset']=qs[_0xf1b2('0x1e')](_0x5703d3[_0xf1b2('0x37')]['offset']);}_0x22ea26[_0xf1b2('0x3d')]=qs[_0xf1b2('0x3e')](_0x5703d3[_0xf1b2('0x37')][_0xf1b2('0x3e')]);_0x22ea26[_0xf1b2('0x3f')]=qs['filters'](_['pick'](_0x5703d3[_0xf1b2('0x37')],_0x181625[_0xf1b2('0x34')]),_0x462047);if(_0x5703d3['query'][_0xf1b2('0x40')]){_0x22ea26[_0xf1b2('0x3f')]=_[_0xf1b2('0x41')](_0x22ea26['where'],{'$or':_['map'](_0x462047,function(_0x331f23){if(_0x331f23[_0xf1b2('0x31')]!==_0xf1b2('0x42')){var _0x3ee447={};_0x3ee447[_0x331f23[_0xf1b2('0x2b')]]={'$like':'%'+_0x5703d3[_0xf1b2('0x37')][_0xf1b2('0x40')]+'%'};return _0x3ee447;}})});}_0x22ea26=_[_0xf1b2('0x41')]({},_0x22ea26,_0x5703d3[_0xf1b2('0x43')]);var _0x3078fb={'where':_0x22ea26[_0xf1b2('0x3f')]};return db[_0xf1b2('0x2f')][_0xf1b2('0x21')](_0x3078fb)[_0xf1b2('0x28')](function(_0x4be834){_0x179a1e['count']=_0x4be834;if(_0x5703d3['query'][_0xf1b2('0x44')]){_0x22ea26[_0xf1b2('0x45')]=[{'all':!![]}];}return db[_0xf1b2('0x2f')][_0xf1b2('0x46')](_0x22ea26);})[_0xf1b2('0x28')](function(_0x59108d){_0x179a1e[_0xf1b2('0x47')]=_0x59108d;return _0x179a1e;})[_0xf1b2('0x28')](respondWithFilteredResult(_0x469e19,_0x22ea26))[_0xf1b2('0x48')](handleError(_0x469e19,null));};exports[_0xf1b2('0x49')]=function(_0x3b168d,_0x1f2afa){var _0x405d12={'raw':!![],'where':{'id':_0x3b168d['params']['id']}},_0x4ffee3={};_0x4ffee3[_0xf1b2('0x36')]=_[_0xf1b2('0x33')](db[_0xf1b2('0x2f')][_0xf1b2('0x4a')]);_0x4ffee3[_0xf1b2('0x37')]=_[_0xf1b2('0x33')](_0x3b168d[_0xf1b2('0x37')]);_0x4ffee3['filters']=_[_0xf1b2('0x35')](_0x4ffee3[_0xf1b2('0x36')],_0x4ffee3[_0xf1b2('0x37')]);_0x405d12[_0xf1b2('0x38')]=_[_0xf1b2('0x35')](_0x4ffee3[_0xf1b2('0x36')],qs['fields'](_0x3b168d[_0xf1b2('0x37')]['fields']));_0x405d12[_0xf1b2('0x38')]=_0x405d12['attributes'][_0xf1b2('0x3a')]?_0x405d12['attributes']:_0x4ffee3[_0xf1b2('0x36')];if(_0x3b168d[_0xf1b2('0x37')][_0xf1b2('0x44')]){_0x405d12[_0xf1b2('0x45')]=[{'all':!![]}];}_0x405d12=_[_0xf1b2('0x41')]({},_0x405d12,_0x3b168d[_0xf1b2('0x43')]);return db['ChatInternalMessage']['find'](_0x405d12)[_0xf1b2('0x28')](handleEntityNotFound(_0x1f2afa,null))['then'](respondWithResult(_0x1f2afa,null))[_0xf1b2('0x48')](handleError(_0x1f2afa,null));};exports['create']=function(_0x4053cb,_0x111345){return db[_0xf1b2('0x2f')][_0xf1b2('0x4b')](_0x4053cb[_0xf1b2('0x4c')],{})[_0xf1b2('0x28')](respondWithResult(_0x111345,0xc9))['catch'](handleError(_0x111345,null));};exports['update']=function(_0x16c7eb,_0x1bcedc){if(_0x16c7eb['body']['id']){delete _0x16c7eb[_0xf1b2('0x4c')]['id'];}return db[_0xf1b2('0x2f')][_0xf1b2('0x4d')]({'where':{'id':_0x16c7eb[_0xf1b2('0x4e')]['id']}})[_0xf1b2('0x28')](handleEntityNotFound(_0x1bcedc,null))[_0xf1b2('0x28')](saveUpdates(_0x16c7eb[_0xf1b2('0x4c')],null))[_0xf1b2('0x28')](respondWithResult(_0x1bcedc,null))[_0xf1b2('0x48')](handleError(_0x1bcedc,null));};exports[_0xf1b2('0x27')]=function(_0x3a04e7,_0x17129a){return db[_0xf1b2('0x2f')][_0xf1b2('0x4d')]({'where':{'id':_0x3a04e7[_0xf1b2('0x4e')]['id']}})[_0xf1b2('0x28')](handleEntityNotFound(_0x17129a,null))['then'](removeEntity(_0x17129a,null))[_0xf1b2('0x48')](handleError(_0x17129a,null));};exports[_0xf1b2('0x4f')]=function(_0x5e3897,_0x16d92d){return db[_0xf1b2('0x2f')][_0xf1b2('0x4f')]()[_0xf1b2('0x28')](respondWithResult(_0x16d92d,null))['catch'](handleError(_0x16d92d,null));};function wrapUser(_0x50f6db){return function(_0x2fde21){var _0x57cae6=_0x50f6db[_0xf1b2('0x50')]({'plain':!![]});_0x57cae6[_0xf1b2('0x51')]=[];if(_0x2fde21){_0x57cae6['lastMessageAt']=_0x2fde21[_0xf1b2('0x52')];_0x57cae6[_0xf1b2('0x53')]=_0x2fde21;}else{_0x57cae6[_0xf1b2('0x54')]=moment(0x0)[_0xf1b2('0x55')](_0xf1b2('0x56'));_0x57cae6[_0xf1b2('0x53')]={};}return _0x57cae6;};}exports[_0xf1b2('0x57')]=function(_0x66a2ec,_0x4f08c7,_0x3b51a3){var _0x34fffb=[];return db[_0xf1b2('0x58')][_0xf1b2('0x46')]({'where':{'role':[_0xf1b2('0x59'),_0xf1b2('0x5a'),'user']},'attributes':['id',_0xf1b2('0x5b'),'name',_0xf1b2('0x5c'),_0xf1b2('0x5d'),_0xf1b2('0x5e'),_0xf1b2('0x5f'),_0xf1b2('0x60'),_0xf1b2('0x61'),_0xf1b2('0x62')],'order':qs[_0xf1b2('0x3e')](_0xf1b2('0x63')),'include':[{'model':db['VoiceQueue'],'as':_0xf1b2('0x64'),'attributes':['id','name','type'],'through':{'attributes':[]}}]})['then'](function(_0x368135){if(_0x368135){var _0x12577c=_0x66a2ec[_0xf1b2('0x65')][_0xf1b2('0x50')]({'plain':!![]});if(!_0x12577c)throw new Error(_0xf1b2('0x66'));if(_0x12577c[_0xf1b2('0x5c')]===_0xf1b2('0x65')){return db[_0xf1b2('0x67')][_0xf1b2('0x4d')]({'where':{'name':_0xf1b2('0x68'),'userProfileId':_0x12577c[_0xf1b2('0x69')]},'raw':!![]})['then'](function(_0x40d004){if(_0x40d004){if(_0x40d004[_0xf1b2('0x6a')]===0x0){return db[_0xf1b2('0x6b')]['findAll']({'where':{'sectionId':_0x40d004['id']},'raw':!![]})['then'](function(_0xb330e2){var _0x27a9ab=[];if(_[_0xf1b2('0x6c')](_0xb330e2)){_0x27a9ab=_[_0xf1b2('0x40')](_0x368135,function(_0x5205d2){if(_0x5205d2['role']!==_0xf1b2('0x59')){return _0x5205d2;}});return _0x27a9ab;}else{for(var _0x5c7a3d=0x0;_0x5c7a3d<_0x368135[_0xf1b2('0x3a')];_0x5c7a3d++){var _0x94f9f=_0x368135[_0x5c7a3d];if(_0x94f9f[_0xf1b2('0x5c')]==='agent'){var _0x563791=_['find'](_0xb330e2,function(_0x32df82){return _0x32df82[_0xf1b2('0x6d')]===_0x94f9f['id'];});if(_0x563791)_0x27a9ab[_0xf1b2('0x6e')](_0x94f9f);}else{_0x27a9ab[_0xf1b2('0x6e')](_0x94f9f);}}return _0x27a9ab;}});}else{return _0x368135;}}else{var _0x243627=_[_0xf1b2('0x40')](_0x368135,function(_0x4535c5){if(_0x4535c5['role']!==_0xf1b2('0x59')){return _0x4535c5;}});return _0x243627;}});}else{return _0x368135;}}})['then'](function(_0x2ebb0c){var _0x39772e=[];if(_0x2ebb0c){_0x34fffb=_0x2ebb0c;for(var _0x38a9f7=0x0;_0x38a9f7<_0x2ebb0c[_0xf1b2('0x3a')];_0x38a9f7+=0x1){_0x34fffb[_0x38a9f7]['messages']=[];_0x39772e[_0xf1b2('0x6e')](db[_0xf1b2('0x2f')][_0xf1b2('0x4d')]({'where':{'FromId':[_0x66a2ec[_0xf1b2('0x65')]['id'],_0x2ebb0c[_0x38a9f7]['id']],'ToId':[_0x66a2ec[_0xf1b2('0x65')]['id'],_0x2ebb0c[_0x38a9f7]['id']],'ChatGroupId':null},'attributes':['id','createdAt',_0xf1b2('0x6f'),_0xf1b2('0x70'),_0xf1b2('0x71'),_0xf1b2('0x4c')],'order':qs['sort'](_0xf1b2('0x72')),'limit':0x1,'offset':0x0,'raw':!![]})[_0xf1b2('0x28')](wrapUser(_0x2ebb0c[_0x38a9f7])));}return BPromise[_0xf1b2('0x73')](_0x39772e);}return[];})['then'](function(_0x1ff834){return{'rows':_0x1ff834,'count':_0x1ff834['length']};})[_0xf1b2('0x28')](respondWithResult(_0x4f08c7,null))['catch'](handleError(_0x4f08c7,null));};
\ No newline at end of file
+var _0xb89d=['rimraf','zip-dir','fast-json-patch','moment','sox','fs-extra','lodash','squel','jsforce','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','redis','./chatInternalMessage.socket','register','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','update','then','destroy','error','name','send','index','map','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','sort','pick','filter','where','merge','options','ChatInternalMessage','includeAll','include','catch','show','rawAttributes','find','create','body','params','describe','get','lastMessageAt','createdAt','lastMessage','format','getUsers','User','findAll','agent','admin','fullname','role','internal','lastLoginAt','allowmessenger','showWebBar','-online','VoiceQueue','VoiceQueues','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','Agents','userProfileId','autoAssociation','UserProfileResource','isEmpty','resourceId','push','FromId','ToId','read','-createdAt','eml-format'];(function(_0x36ed3c,_0x44a00a){var _0x52a2e0=function(_0x3f7af9){while(--_0x3f7af9){_0x36ed3c['push'](_0x36ed3c['shift']());}};_0x52a2e0(++_0x44a00a);}(_0xb89d,0x13a));var _0xdb89=function(_0x233ba9,_0x581b20){_0x233ba9=_0x233ba9-0x0;var _0x3704da=_0xb89d[_0x233ba9];return _0x3704da;};'use strict';var emlformat=require(_0xdb89('0x0'));var rimraf=require(_0xdb89('0x1'));var zipdir=require(_0xdb89('0x2'));var jsonpatch=require(_0xdb89('0x3'));var rp=require('request-promise');var moment=require(_0xdb89('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0xdb89('0x5'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xdb89('0x6'));var _=require(_0xdb89('0x7'));var squel=require(_0xdb89('0x8'));var crypto=require('crypto');var jsforce=require(_0xdb89('0x9'));var deskjs=require('desk.js');var toCsv=require(_0xdb89('0xa'));var querystring=require(_0xdb89('0xb'));var Papa=require(_0xdb89('0xc'));var Redis=require('ioredis');var authService=require(_0xdb89('0xd'));var qs=require(_0xdb89('0xe'));var as=require(_0xdb89('0xf'));var hardwareService=require(_0xdb89('0x10'));var logger=require(_0xdb89('0x11'))('api');var utils=require('../../config/utils');var config=require(_0xdb89('0x12'));var licenseUtil=require(_0xdb89('0x13'));var db=require(_0xdb89('0x14'))['db'];config[_0xdb89('0x15')]=_['defaults'](config[_0xdb89('0x15')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xdb89('0x15')]));require(_0xdb89('0x16'))[_0xdb89('0x17')](socket);function respondWithStatusCode(_0x432c61,_0x1da8d4){_0x1da8d4=_0x1da8d4||0xcc;return function(_0x1ac7f6){if(_0x1ac7f6){return _0x432c61[_0xdb89('0x18')](_0x1da8d4);}return _0x432c61[_0xdb89('0x19')](_0x1da8d4)[_0xdb89('0x1a')]();};}function respondWithResult(_0x4f3a16,_0x26225b){_0x26225b=_0x26225b||0xc8;return function(_0x3b4324){if(_0x3b4324){return _0x4f3a16['status'](_0x26225b)[_0xdb89('0x1b')](_0x3b4324);}};}function respondWithFilteredResult(_0x411cf6,_0x1be56d){return function(_0xb8b26){if(_0xb8b26){var _0x23e5af=typeof _0x1be56d[_0xdb89('0x1c')]===_0xdb89('0x1d')&&typeof _0x1be56d['limit']===_0xdb89('0x1d');var _0x3f9f03=_0xb8b26['count'];var _0x2faa9d=_0x23e5af?0x0:_0x1be56d[_0xdb89('0x1c')];var _0x48aba=_0x23e5af?_0xb8b26[_0xdb89('0x1e')]:_0x1be56d[_0xdb89('0x1c')]+_0x1be56d[_0xdb89('0x1f')];var _0x3dfd26;if(_0x48aba>=_0x3f9f03){_0x48aba=_0x3f9f03;_0x3dfd26=0xc8;}else{_0x3dfd26=0xce;}_0x411cf6[_0xdb89('0x19')](_0x3dfd26);return _0x411cf6[_0xdb89('0x20')](_0xdb89('0x21'),_0x2faa9d+'-'+_0x48aba+'/'+_0x3f9f03)['json'](_0xb8b26);}return null;};}function patchUpdates(_0x144df8){return function(_0x2fcdec){try{jsonpatch[_0xdb89('0x22')](_0x2fcdec,_0x144df8,!![]);}catch(_0x1ea48d){return BPromise[_0xdb89('0x23')](_0x1ea48d);}return _0x2fcdec['save']();};}function saveUpdates(_0x4912c7,_0x129ccd){return function(_0x57dcf2){if(_0x57dcf2){return _0x57dcf2[_0xdb89('0x24')](_0x4912c7)[_0xdb89('0x25')](function(_0x162f42){return _0x162f42;});}return null;};}function removeEntity(_0x1bba12,_0x4b194b){return function(_0x33c9dc){if(_0x33c9dc){return _0x33c9dc[_0xdb89('0x26')]()[_0xdb89('0x25')](function(){_0x1bba12['status'](0xcc)[_0xdb89('0x1a')]();});}};}function handleEntityNotFound(_0x382d5e,_0x5e4020){return function(_0x38f597){if(!_0x38f597){_0x382d5e[_0xdb89('0x18')](0x194);}return _0x38f597;};}function handleError(_0x3db2f8,_0x780466){_0x780466=_0x780466||0x1f4;return function(_0x1e25ad){logger[_0xdb89('0x27')](_0x1e25ad['stack']);if(_0x1e25ad['name']){delete _0x1e25ad[_0xdb89('0x28')];}_0x3db2f8['status'](_0x780466)[_0xdb89('0x29')](_0x1e25ad);};}exports[_0xdb89('0x2a')]=function(_0x4d8f73,_0x297085){var _0x24ef03={},_0x2d32f7={},_0x220e83={'count':0x0,'rows':[]};var _0x1aa3c4=_[_0xdb89('0x2b')](db['ChatInternalMessage']['rawAttributes'],function(_0x412294){return{'name':_0x412294[_0xdb89('0x2c')],'type':_0x412294[_0xdb89('0x2d')][_0xdb89('0x2e')]};});_0x2d32f7[_0xdb89('0x2f')]=_['map'](_0x1aa3c4,_0xdb89('0x28'));_0x2d32f7[_0xdb89('0x30')]=_[_0xdb89('0x31')](_0x4d8f73[_0xdb89('0x30')]);_0x2d32f7[_0xdb89('0x32')]=_[_0xdb89('0x33')](_0x2d32f7[_0xdb89('0x2f')],_0x2d32f7['query']);_0x24ef03[_0xdb89('0x34')]=_[_0xdb89('0x33')](_0x2d32f7['model'],qs[_0xdb89('0x35')](_0x4d8f73[_0xdb89('0x30')]['fields']));_0x24ef03[_0xdb89('0x34')]=_0x24ef03[_0xdb89('0x34')][_0xdb89('0x36')]?_0x24ef03[_0xdb89('0x34')]:_0x2d32f7['model'];if(!_0x4d8f73[_0xdb89('0x30')]['hasOwnProperty'](_0xdb89('0x37'))){_0x24ef03[_0xdb89('0x1f')]=qs[_0xdb89('0x1f')](_0x4d8f73[_0xdb89('0x30')]['limit']);_0x24ef03['offset']=qs[_0xdb89('0x1c')](_0x4d8f73[_0xdb89('0x30')][_0xdb89('0x1c')]);}_0x24ef03['order']=qs[_0xdb89('0x38')](_0x4d8f73[_0xdb89('0x30')]['sort']);_0x24ef03['where']=qs[_0xdb89('0x32')](_[_0xdb89('0x39')](_0x4d8f73['query'],_0x2d32f7[_0xdb89('0x32')]),_0x1aa3c4);if(_0x4d8f73[_0xdb89('0x30')][_0xdb89('0x3a')]){_0x24ef03[_0xdb89('0x3b')]=_[_0xdb89('0x3c')](_0x24ef03[_0xdb89('0x3b')],{'$or':_[_0xdb89('0x2b')](_0x1aa3c4,function(_0x45632b){if(_0x45632b[_0xdb89('0x2d')]!=='VIRTUAL'){var _0x41226e={};_0x41226e[_0x45632b[_0xdb89('0x28')]]={'$like':'%'+_0x4d8f73[_0xdb89('0x30')]['filter']+'%'};return _0x41226e;}})});}_0x24ef03=_['merge']({},_0x24ef03,_0x4d8f73[_0xdb89('0x3d')]);var _0x2c0995={'where':_0x24ef03[_0xdb89('0x3b')]};return db[_0xdb89('0x3e')][_0xdb89('0x1e')](_0x2c0995)['then'](function(_0x29b4c7){_0x220e83[_0xdb89('0x1e')]=_0x29b4c7;if(_0x4d8f73[_0xdb89('0x30')][_0xdb89('0x3f')]){_0x24ef03[_0xdb89('0x40')]=[{'all':!![]}];}return db[_0xdb89('0x3e')]['findAll'](_0x24ef03);})['then'](function(_0x1c79b6){_0x220e83['rows']=_0x1c79b6;return _0x220e83;})[_0xdb89('0x25')](respondWithFilteredResult(_0x297085,_0x24ef03))[_0xdb89('0x41')](handleError(_0x297085,null));};exports[_0xdb89('0x42')]=function(_0x11c34a,_0xa6cb60){var _0x1dc327={'raw':!![],'where':{'id':_0x11c34a['params']['id']}},_0x3a9b3b={};_0x3a9b3b[_0xdb89('0x2f')]=_[_0xdb89('0x31')](db[_0xdb89('0x3e')][_0xdb89('0x43')]);_0x3a9b3b[_0xdb89('0x30')]=_[_0xdb89('0x31')](_0x11c34a[_0xdb89('0x30')]);_0x3a9b3b['filters']=_['intersection'](_0x3a9b3b['model'],_0x3a9b3b[_0xdb89('0x30')]);_0x1dc327[_0xdb89('0x34')]=_[_0xdb89('0x33')](_0x3a9b3b['model'],qs['fields'](_0x11c34a[_0xdb89('0x30')][_0xdb89('0x35')]));_0x1dc327[_0xdb89('0x34')]=_0x1dc327['attributes'][_0xdb89('0x36')]?_0x1dc327[_0xdb89('0x34')]:_0x3a9b3b[_0xdb89('0x2f')];if(_0x11c34a[_0xdb89('0x30')][_0xdb89('0x3f')]){_0x1dc327[_0xdb89('0x40')]=[{'all':!![]}];}_0x1dc327=_[_0xdb89('0x3c')]({},_0x1dc327,_0x11c34a[_0xdb89('0x3d')]);return db[_0xdb89('0x3e')][_0xdb89('0x44')](_0x1dc327)[_0xdb89('0x25')](handleEntityNotFound(_0xa6cb60,null))[_0xdb89('0x25')](respondWithResult(_0xa6cb60,null))[_0xdb89('0x41')](handleError(_0xa6cb60,null));};exports[_0xdb89('0x45')]=function(_0x2617e4,_0x13a4f2){return db[_0xdb89('0x3e')][_0xdb89('0x45')](_0x2617e4[_0xdb89('0x46')],{})[_0xdb89('0x25')](respondWithResult(_0x13a4f2,0xc9))[_0xdb89('0x41')](handleError(_0x13a4f2,null));};exports[_0xdb89('0x24')]=function(_0x191179,_0x34278c){if(_0x191179[_0xdb89('0x46')]['id']){delete _0x191179[_0xdb89('0x46')]['id'];}return db[_0xdb89('0x3e')][_0xdb89('0x44')]({'where':{'id':_0x191179[_0xdb89('0x47')]['id']}})[_0xdb89('0x25')](handleEntityNotFound(_0x34278c,null))[_0xdb89('0x25')](saveUpdates(_0x191179[_0xdb89('0x46')],null))[_0xdb89('0x25')](respondWithResult(_0x34278c,null))[_0xdb89('0x41')](handleError(_0x34278c,null));};exports['destroy']=function(_0x108b25,_0x46c4e3){return db[_0xdb89('0x3e')][_0xdb89('0x44')]({'where':{'id':_0x108b25[_0xdb89('0x47')]['id']}})[_0xdb89('0x25')](handleEntityNotFound(_0x46c4e3,null))[_0xdb89('0x25')](removeEntity(_0x46c4e3,null))['catch'](handleError(_0x46c4e3,null));};exports['describe']=function(_0x472def,_0x9bd9bb){return db['ChatInternalMessage'][_0xdb89('0x48')]()[_0xdb89('0x25')](respondWithResult(_0x9bd9bb,null))['catch'](handleError(_0x9bd9bb,null));};function wrapUser(_0x32ef67){return function(_0x42fb76){var _0x41bdac=_0x32ef67[_0xdb89('0x49')]({'plain':!![]});_0x41bdac['messages']=[];if(_0x42fb76){_0x41bdac[_0xdb89('0x4a')]=_0x42fb76[_0xdb89('0x4b')];_0x41bdac[_0xdb89('0x4c')]=_0x42fb76;}else{_0x41bdac[_0xdb89('0x4a')]=moment(0x0)[_0xdb89('0x4d')]('YYYY-MM-DD\x20HH:mm:ss');_0x41bdac[_0xdb89('0x4c')]={};}return _0x41bdac;};}exports[_0xdb89('0x4e')]=function(_0xbef9c,_0x48caf9,_0x8d28dc){var _0x2824d6=[];return db[_0xdb89('0x4f')][_0xdb89('0x50')]({'where':{'role':[_0xdb89('0x51'),_0xdb89('0x52'),'user']},'attributes':['id',_0xdb89('0x53'),_0xdb89('0x28'),_0xdb89('0x54'),'userpic',_0xdb89('0x55'),'online',_0xdb89('0x56'),_0xdb89('0x57'),_0xdb89('0x58')],'order':qs['sort'](_0xdb89('0x59')),'include':[{'model':db[_0xdb89('0x5a')],'as':_0xdb89('0x5b'),'attributes':['id','name','type'],'through':{'attributes':[]}}]})[_0xdb89('0x25')](function(_0x17fb9d){if(_0x17fb9d){var _0x9af5d4=_0xbef9c[_0xdb89('0x5c')]['get']({'plain':!![]});if(!_0x9af5d4)throw new Error(_0xdb89('0x5d'));if(_0x9af5d4[_0xdb89('0x54')]==='user'){return db['UserProfileSection'][_0xdb89('0x44')]({'where':{'name':_0xdb89('0x5e'),'userProfileId':_0x9af5d4[_0xdb89('0x5f')]},'raw':!![]})[_0xdb89('0x25')](function(_0x2030fd){if(_0x2030fd){if(_0x2030fd[_0xdb89('0x60')]===0x0){return db[_0xdb89('0x61')][_0xdb89('0x50')]({'where':{'sectionId':_0x2030fd['id']},'raw':!![]})[_0xdb89('0x25')](function(_0x361b01){var _0x469673=[];if(_[_0xdb89('0x62')](_0x361b01)){_0x469673=_['filter'](_0x17fb9d,function(_0x310c96){if(_0x310c96[_0xdb89('0x54')]!=='agent'){return _0x310c96;}});return _0x469673;}else{for(var _0x2b8bcc=0x0;_0x2b8bcc<_0x17fb9d['length'];_0x2b8bcc++){var _0x4e4f00=_0x17fb9d[_0x2b8bcc];if(_0x4e4f00[_0xdb89('0x54')]===_0xdb89('0x51')){var _0x27efcb=_[_0xdb89('0x44')](_0x361b01,function(_0x5d2aaa){return _0x5d2aaa[_0xdb89('0x63')]===_0x4e4f00['id'];});if(_0x27efcb)_0x469673['push'](_0x4e4f00);}else{_0x469673[_0xdb89('0x64')](_0x4e4f00);}}return _0x469673;}});}else{return _0x17fb9d;}}else{var _0x597384=_[_0xdb89('0x3a')](_0x17fb9d,function(_0x50e433){if(_0x50e433[_0xdb89('0x54')]!==_0xdb89('0x51')){return _0x50e433;}});return _0x597384;}});}else{return _0x17fb9d;}}})['then'](function(_0x24c414){var _0x1ed101=[];if(_0x24c414){_0x2824d6=_0x24c414;for(var _0x436193=0x0;_0x436193<_0x24c414['length'];_0x436193+=0x1){_0x2824d6[_0x436193]['messages']=[];_0x1ed101[_0xdb89('0x64')](db[_0xdb89('0x3e')][_0xdb89('0x44')]({'where':{'FromId':[_0xbef9c[_0xdb89('0x5c')]['id'],_0x24c414[_0x436193]['id']],'ToId':[_0xbef9c[_0xdb89('0x5c')]['id'],_0x24c414[_0x436193]['id']],'ChatGroupId':null},'attributes':['id',_0xdb89('0x4b'),_0xdb89('0x65'),_0xdb89('0x66'),_0xdb89('0x67'),_0xdb89('0x46')],'order':qs[_0xdb89('0x38')](_0xdb89('0x68')),'limit':0x1,'offset':0x0,'raw':!![]})[_0xdb89('0x25')](wrapUser(_0x24c414[_0x436193])));}return BPromise['all'](_0x1ed101);}return[];})[_0xdb89('0x25')](function(_0x518303){return{'rows':_0x518303,'count':_0x518303['length']};})[_0xdb89('0x25')](respondWithResult(_0x48caf9,null))['catch'](handleError(_0x48caf9,null));};
\ No newline at end of file
index 672f36d..f9468a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9437=['../../mysqldb','ChatInternalMessage','save','remove','emit','hasOwnProperty','hook'];(function(_0x10dc5d,_0x4b62cc){var _0x2c1e6f=function(_0x5f7307){while(--_0x5f7307){_0x10dc5d['push'](_0x10dc5d['shift']());}};_0x2c1e6f(++_0x4b62cc);}(_0x9437,0x1c7));var _0x7943=function(_0x4e8275,_0x1511f1){_0x4e8275=_0x4e8275-0x0;var _0x396363=_0x9437[_0x4e8275];return _0x396363;};'use strict';var EventEmitter=require('events');var ChatInternalMessage=require(_0x7943('0x0'))['db'][_0x7943('0x1')];var ChatInternalMessageEvents=new EventEmitter();ChatInternalMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x7943('0x2'),'afterUpdate':'update','afterDestroy':_0x7943('0x3')};function emitEvent(_0x10e222){return function(_0x4ac6f8,_0x2629c7,_0x3b2813){ChatInternalMessageEvents[_0x7943('0x4')](_0x10e222+':'+_0x4ac6f8['id'],_0x4ac6f8);ChatInternalMessageEvents[_0x7943('0x4')](_0x10e222,_0x4ac6f8);_0x3b2813(null);};}for(var e in events){if(events[_0x7943('0x5')](e)){var event=events[e];ChatInternalMessage[_0x7943('0x6')](e,emitEvent(event));}}module['exports']=ChatInternalMessageEvents;
\ No newline at end of file
+var _0xa645=['update','remove','emit','hasOwnProperty','hook','../../mysqldb','ChatInternalMessage','setMaxListeners','save'];(function(_0x5547a2,_0x542329){var _0xee1b5c=function(_0x1494c4){while(--_0x1494c4){_0x5547a2['push'](_0x5547a2['shift']());}};_0xee1b5c(++_0x542329);}(_0xa645,0xcb));var _0x5a64=function(_0x4d2610,_0x16b9b3){_0x4d2610=_0x4d2610-0x0;var _0x34b4de=_0xa645[_0x4d2610];return _0x34b4de;};'use strict';var EventEmitter=require('events');var ChatInternalMessage=require(_0x5a64('0x0'))['db'][_0x5a64('0x1')];var ChatInternalMessageEvents=new EventEmitter();ChatInternalMessageEvents[_0x5a64('0x2')](0x0);var events={'afterCreate':_0x5a64('0x3'),'afterUpdate':_0x5a64('0x4'),'afterDestroy':_0x5a64('0x5')};function emitEvent(_0x1e4bde){return function(_0x34192c,_0x4aca7a,_0x211613){ChatInternalMessageEvents['emit'](_0x1e4bde+':'+_0x34192c['id'],_0x34192c);ChatInternalMessageEvents[_0x5a64('0x6')](_0x1e4bde,_0x34192c);_0x211613(null);};}for(var e in events){if(events[_0x5a64('0x7')](e)){var event=events[e];ChatInternalMessage[_0x5a64('0x8')](e,emitEvent(event));}}module['exports']=ChatInternalMessageEvents;
\ No newline at end of file
index 88ac57b..913872f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf54c=['exports','define','ChatInternalMessage','chat_internal_messages','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','moment','bluebird','rimraf','../../config/environment','./chatInternalMessage.attributes'];(function(_0x8fa4bc,_0x5cd2af){var _0x35b6a7=function(_0x357c25){while(--_0x357c25){_0x8fa4bc['push'](_0x8fa4bc['shift']());}};_0x35b6a7(++_0x5cd2af);}(_0xf54c,0xd8));var _0xcf54=function(_0x371e95,_0x17a4c1){_0x371e95=_0x371e95-0x0;var _0x4d037f=_0xf54c[_0x371e95];return _0x4d037f;};'use strict';var _=require(_0xcf54('0x0'));var util=require(_0xcf54('0x1'));var logger=require(_0xcf54('0x2'))('api');var moment=require(_0xcf54('0x3'));var BPromise=require(_0xcf54('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xcf54('0x5'));var config=require(_0xcf54('0x6'));var attributes=require(_0xcf54('0x7'));module[_0xcf54('0x8')]=function(_0x3f30c0,_0x8506c4){return _0x3f30c0[_0xcf54('0x9')](_0xcf54('0xa'),attributes,{'tableName':_0xcf54('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xcf54('0xc'),'collate':_0xcf54('0xd')});};
\ No newline at end of file
+var _0x76c2=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./chatInternalMessage.attributes','exports','define','ChatInternalMessage','chat_internal_messages','lodash','util','../../config/logger'];(function(_0x45aca3,_0x2dc880){var _0x540d06=function(_0x1ca425){while(--_0x1ca425){_0x45aca3['push'](_0x45aca3['shift']());}};_0x540d06(++_0x2dc880);}(_0x76c2,0x1dd));var _0x276c=function(_0x30bb7c,_0x27a364){_0x30bb7c=_0x30bb7c-0x0;var _0x3b32be=_0x76c2[_0x30bb7c];return _0x3b32be;};'use strict';var _=require(_0x276c('0x0'));var util=require(_0x276c('0x1'));var logger=require(_0x276c('0x2'))(_0x276c('0x3'));var moment=require(_0x276c('0x4'));var BPromise=require(_0x276c('0x5'));var rp=require(_0x276c('0x6'));var fs=require('fs');var path=require(_0x276c('0x7'));var rimraf=require(_0x276c('0x8'));var config=require(_0x276c('0x9'));var attributes=require(_0x276c('0xa'));module[_0x276c('0xb')]=function(_0x4fad85,_0x563d11){return _0x4fad85[_0x276c('0xc')](_0x276c('0xd'),attributes,{'tableName':_0x276c('0xe'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index f3ad19a..4f49c30 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc3d6=['rpc','jayson/promise','http','defaults','redis','localhost','socket.io-emitter','./chatInternalMessage.socket','register','then','info','ChatInternalMessage,\x20%s,\x20%s','request\x20sent','debug','ChatInternalMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x5eef05,_0x1be989){var _0x56d4b8=function(_0x57993d){while(--_0x57993d){_0x5eef05['push'](_0x5eef05['shift']());}};_0x56d4b8(++_0x1be989);}(_0xc3d6,0x153));var _0x6c3d=function(_0x5d15cb,_0x1a6f26){_0x5d15cb=_0x5d15cb-0x0;var _0xc8a616=_0xc3d6[_0x5d15cb];return _0xc8a616;};'use strict';var _=require(_0x6c3d('0x0'));var util=require(_0x6c3d('0x1'));var moment=require(_0x6c3d('0x2'));var BPromise=require(_0x6c3d('0x3'));var rs=require(_0x6c3d('0x4'));var fs=require('fs');var Redis=require(_0x6c3d('0x5'));var db=require(_0x6c3d('0x6'))['db'];var utils=require(_0x6c3d('0x7'));var logger=require(_0x6c3d('0x8'))(_0x6c3d('0x9'));var config=require('../../config/environment');var jayson=require(_0x6c3d('0xa'));var client=jayson['client'][_0x6c3d('0xb')]({'port':0x232a});config['redis']=_[_0x6c3d('0xc')](config[_0x6c3d('0xd')],{'host':_0x6c3d('0xe'),'port':0x18eb});var socket=require(_0x6c3d('0xf'))(new Redis(config[_0x6c3d('0xd')]));require(_0x6c3d('0x10'))[_0x6c3d('0x11')](socket);function respondWithRpcPromise(_0xb39cd9,_0x42bfb9,_0x50e102){return new BPromise(function(_0x13b9cf,_0xc7716d){return client['request'](_0xb39cd9,_0x50e102)[_0x6c3d('0x12')](function(_0xbda80c){logger[_0x6c3d('0x13')](_0x6c3d('0x14'),_0x42bfb9,_0x6c3d('0x15'));logger[_0x6c3d('0x16')](_0x6c3d('0x17'),_0x42bfb9,_0x6c3d('0x15'),JSON[_0x6c3d('0x18')](_0xbda80c));if(_0xbda80c[_0x6c3d('0x19')]){if(_0xbda80c['error'][_0x6c3d('0x1a')]===0x1f4){logger[_0x6c3d('0x19')](_0x6c3d('0x14'),_0x42bfb9,_0xbda80c[_0x6c3d('0x19')][_0x6c3d('0x1b')]);return _0xc7716d(_0xbda80c[_0x6c3d('0x19')][_0x6c3d('0x1b')]);}logger[_0x6c3d('0x19')](_0x6c3d('0x14'),_0x42bfb9,_0xbda80c[_0x6c3d('0x19')][_0x6c3d('0x1b')]);return _0x13b9cf(_0xbda80c['error'][_0x6c3d('0x1b')]);}else{logger[_0x6c3d('0x13')](_0x6c3d('0x14'),_0x42bfb9,_0x6c3d('0x15'));_0x13b9cf(_0xbda80c['result'][_0x6c3d('0x1b')]);}})[_0x6c3d('0x1c')](function(_0x588a51){logger[_0x6c3d('0x19')](_0x6c3d('0x14'),_0x42bfb9,_0x588a51);_0xc7716d(_0x588a51);});});}
\ No newline at end of file
+var _0x03e2=['ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','defaults','localhost','socket.io-emitter','redis','./chatInternalMessage.socket','request','then','request\x20sent','debug','stringify','error','code','ChatInternalMessage,\x20%s,\x20%s','message','info','result','catch','lodash','bluebird','randomstring'];(function(_0x484e36,_0x4482d8){var _0xafc85d=function(_0xaba9c8){while(--_0xaba9c8){_0x484e36['push'](_0x484e36['shift']());}};_0xafc85d(++_0x4482d8);}(_0x03e2,0xcd));var _0x203e=function(_0x3179dd,_0x31cbf5){_0x3179dd=_0x3179dd-0x0;var _0x40222e=_0x03e2[_0x3179dd];return _0x40222e;};'use strict';var _=require(_0x203e('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x203e('0x1'));var rs=require(_0x203e('0x2'));var fs=require('fs');var Redis=require(_0x203e('0x3'));var db=require(_0x203e('0x4'))['db'];var utils=require(_0x203e('0x5'));var logger=require('../../config/logger')(_0x203e('0x6'));var config=require('../../config/environment');var jayson=require(_0x203e('0x7'));var client=jayson[_0x203e('0x8')]['http']({'port':0x232a});config['redis']=_[_0x203e('0x9')](config['redis'],{'host':_0x203e('0xa'),'port':0x18eb});var socket=require(_0x203e('0xb'))(new Redis(config[_0x203e('0xc')]));require(_0x203e('0xd'))['register'](socket);function respondWithRpcPromise(_0x458ed9,_0x293b2c,_0x39d431){return new BPromise(function(_0x17949e,_0x26446d){return client[_0x203e('0xe')](_0x458ed9,_0x39d431)[_0x203e('0xf')](function(_0x4ed68f){logger['info']('ChatInternalMessage,\x20%s,\x20%s',_0x293b2c,_0x203e('0x10'));logger[_0x203e('0x11')]('ChatInternalMessage,\x20%s,\x20%s,\x20%s',_0x293b2c,_0x203e('0x10'),JSON[_0x203e('0x12')](_0x4ed68f));if(_0x4ed68f['error']){if(_0x4ed68f[_0x203e('0x13')][_0x203e('0x14')]===0x1f4){logger[_0x203e('0x13')](_0x203e('0x15'),_0x293b2c,_0x4ed68f[_0x203e('0x13')][_0x203e('0x16')]);return _0x26446d(_0x4ed68f[_0x203e('0x13')][_0x203e('0x16')]);}logger[_0x203e('0x13')](_0x203e('0x15'),_0x293b2c,_0x4ed68f[_0x203e('0x13')]['message']);return _0x17949e(_0x4ed68f['error'][_0x203e('0x16')]);}else{logger[_0x203e('0x17')](_0x203e('0x15'),_0x293b2c,'request\x20sent');_0x17949e(_0x4ed68f[_0x203e('0x18')][_0x203e('0x16')]);}})[_0x203e('0x19')](function(_0x338e43){logger[_0x203e('0x13')](_0x203e('0x15'),_0x293b2c,_0x338e43);_0x26446d(_0x338e43);});});}
\ No newline at end of file
index 0ffb7ba..453e8cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x461f=['removeListener','register','chatInternalMessage:','./chatInternalMessage.events','save','remove','update','emit'];(function(_0x58ff11,_0x16f9e8){var _0x4af53f=function(_0x282d9d){while(--_0x282d9d){_0x58ff11['push'](_0x58ff11['shift']());}};_0x4af53f(++_0x16f9e8);}(_0x461f,0x18b));var _0xf461=function(_0x588258,_0x5b26a8){_0x588258=_0x588258-0x0;var _0x4efce8=_0x461f[_0x588258];return _0x4efce8;};'use strict';var ChatInternalMessageEvents=require(_0xf461('0x0'));var events=[_0xf461('0x1'),_0xf461('0x2'),_0xf461('0x3')];function createListener(_0x3cd2cf,_0x4a0cdf){return function(_0x461a6f){_0x4a0cdf[_0xf461('0x4')](_0x3cd2cf,_0x461a6f);};}function removeListener(_0x114064,_0x50be6e){return function(){ChatInternalMessageEvents[_0xf461('0x5')](_0x114064,_0x50be6e);};}exports[_0xf461('0x6')]=function(_0x3b55e6){for(var _0xd461d4=0x0,_0x31adab=events['length'];_0xd461d4<_0x31adab;_0xd461d4++){var _0x248dff=events[_0xd461d4];var _0x50bb47=createListener(_0xf461('0x7')+_0x248dff,_0x3b55e6);ChatInternalMessageEvents['on'](_0x248dff,_0x50bb47);}};
\ No newline at end of file
+var _0xd8e7=['chatInternalMessage:','./chatInternalMessage.events','remove','update','emit','register','length'];(function(_0x1225cb,_0x27aa5d){var _0x1ca85a=function(_0x64d75b){while(--_0x64d75b){_0x1225cb['push'](_0x1225cb['shift']());}};_0x1ca85a(++_0x27aa5d);}(_0xd8e7,0x8d));var _0x7d8e=function(_0x4cdeb3,_0x53c2b8){_0x4cdeb3=_0x4cdeb3-0x0;var _0x16f6d7=_0xd8e7[_0x4cdeb3];return _0x16f6d7;};'use strict';var ChatInternalMessageEvents=require(_0x7d8e('0x0'));var events=['save',_0x7d8e('0x1'),_0x7d8e('0x2')];function createListener(_0x59c574,_0x3970b6){return function(_0x598d8c){_0x3970b6[_0x7d8e('0x3')](_0x59c574,_0x598d8c);};}function removeListener(_0xd755ed,_0x1ac5e1){return function(){ChatInternalMessageEvents['removeListener'](_0xd755ed,_0x1ac5e1);};}exports[_0x7d8e('0x4')]=function(_0x5d391f){for(var _0x5cdc06=0x0,_0x1b822f=events[_0x7d8e('0x5')];_0x5cdc06<_0x1b822f;_0x5cdc06++){var _0x855f36=events[_0x5cdc06];var _0x2f0494=createListener(_0x7d8e('0x6')+_0x855f36,_0x5d391f);ChatInternalMessageEvents['on'](_0x855f36,_0x2f0494);}};
\ No newline at end of file
index 5766cdb..cb33e1e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x11e4=['/:id','show','post','create','put','delete','destroy','multer','util','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatInternalMessage.controller','get','index','/describe','isAuthenticated','describe','getUsers'];(function(_0x5520fe,_0x4769ce){var _0x61c4ce=function(_0xcc14a2){while(--_0xcc14a2){_0x5520fe['push'](_0x5520fe['shift']());}};_0x61c4ce(++_0x4769ce);}(_0x11e4,0x118));var _0x411e=function(_0x279d37,_0x14de3f){_0x279d37=_0x279d37-0x0;var _0x530173=_0x11e4[_0x279d37];return _0x530173;};'use strict';var multer=require(_0x411e('0x0'));var util=require(_0x411e('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x411e('0x2'));var router=express[_0x411e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x411e('0x4'));var interaction=require(_0x411e('0x5'));var config=require(_0x411e('0x6'));var controller=require(_0x411e('0x7'));router[_0x411e('0x8')]('/',auth['isAuthenticated'](),controller[_0x411e('0x9')]);router[_0x411e('0x8')](_0x411e('0xa'),auth[_0x411e('0xb')](),controller[_0x411e('0xc')]);router[_0x411e('0x8')]('/users',auth[_0x411e('0xb')](),controller[_0x411e('0xd')]);router['get'](_0x411e('0xe'),auth[_0x411e('0xb')](),controller[_0x411e('0xf')]);router[_0x411e('0x10')]('/',auth[_0x411e('0xb')](),controller[_0x411e('0x11')]);router[_0x411e('0x12')](_0x411e('0xe'),controller['update']);router[_0x411e('0x13')]('/:id',auth[_0x411e('0xb')](),controller[_0x411e('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0x55e5=['destroy','exports','multer','util','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./chatInternalMessage.controller','get','isAuthenticated','index','/describe','describe','/users','getUsers','/:id','show','create','put','update'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0x55e5,0x120));var _0x555e=function(_0xcedec5,_0x4b23ac){_0xcedec5=_0xcedec5-0x0;var _0x6aaea3=_0x55e5[_0xcedec5];return _0x6aaea3;};'use strict';var multer=require(_0x555e('0x0'));var util=require(_0x555e('0x1'));var path=require('path');var timeout=require(_0x555e('0x2'));var express=require(_0x555e('0x3'));var router=express[_0x555e('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x555e('0x5'));var config=require(_0x555e('0x6'));var controller=require(_0x555e('0x7'));router[_0x555e('0x8')]('/',auth[_0x555e('0x9')](),controller[_0x555e('0xa')]);router[_0x555e('0x8')](_0x555e('0xb'),auth[_0x555e('0x9')](),controller[_0x555e('0xc')]);router[_0x555e('0x8')](_0x555e('0xd'),auth[_0x555e('0x9')](),controller[_0x555e('0xe')]);router[_0x555e('0x8')](_0x555e('0xf'),auth[_0x555e('0x9')](),controller[_0x555e('0x10')]);router['post']('/',auth[_0x555e('0x9')](),controller[_0x555e('0x11')]);router[_0x555e('0x12')](_0x555e('0xf'),controller[_0x555e('0x13')]);router['delete'](_0x555e('0xf'),auth[_0x555e('0x9')](),controller[_0x555e('0x14')]);module[_0x555e('0x15')]=router;
\ No newline at end of file
index 5fe7772..948bece 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0647=['medium','BOOLEAN','ENUM','DATE','STRING','sequelize','TEXT'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0x0647,0xd0));var _0x7064=function(_0x62c958,_0x2bfdbc){_0x62c958=_0x62c958-0x0;var _0x57ec61=_0x0647[_0x62c958];return _0x57ec61;};'use strict';var Sequelize=require(_0x7064('0x0'));module['exports']={'body':{'type':Sequelize[_0x7064('0x1')](_0x7064('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0x7064('0x3')],'defaultValue':![]},'secret':{'type':Sequelize[_0x7064('0x3')],'defaultValue':![]},'direction':{'type':Sequelize[_0x7064('0x4')]('in','out'),'defaultValue':'out','allowNull':![]},'readAt':{'type':Sequelize[_0x7064('0x5')]},'providerName':{'type':Sequelize[_0x7064('0x6')]},'providerResponse':{'type':Sequelize[_0x7064('0x1')]}};
\ No newline at end of file
+var _0xfef3=['sequelize','TEXT','BOOLEAN','out','STRING'];(function(_0x21d36e,_0x5dc096){var _0x4cc307=function(_0x4ae995){while(--_0x4ae995){_0x21d36e['push'](_0x21d36e['shift']());}};_0x4cc307(++_0x5dc096);}(_0xfef3,0x118));var _0x3fef=function(_0x28fab8,_0x5e9d0a){_0x28fab8=_0x28fab8-0x0;var _0x2a326c=_0xfef3[_0x28fab8];return _0x2a326c;};'use strict';var Sequelize=require(_0x3fef('0x0'));module['exports']={'body':{'type':Sequelize[_0x3fef('0x1')]('medium'),'allowNull':![]},'read':{'type':Sequelize[_0x3fef('0x2')],'defaultValue':![]},'secret':{'type':Sequelize[_0x3fef('0x2')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0x3fef('0x3')),'defaultValue':_0x3fef('0x3'),'allowNull':![]},'readAt':{'type':Sequelize['DATE']},'providerName':{'type':Sequelize[_0x3fef('0x4')]},'providerResponse':{'type':Sequelize[_0x3fef('0x1')]}};
\ No newline at end of file
index f99953e..a081cce 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(_0x1aa459,_0x48260b){var _0x1ca0a7=function(_0x2e86c2){while(--_0x2e86c2){_0x1aa459['push'](_0x1aa459['shift']());}};_0x1ca0a7(++_0x48260b);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3899d1,_0x4aa04c){_0x3899d1=_0x3899d1-0x0;var _0xeb4a7d=_0xa9e0[_0x3899d1];return _0xeb4a7d;};'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 _0x8d31=['fullname','email','interface','rejectmessage','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','register','client','http','request','info','ChatMessage,\x20%s,\x20%s','request\x20sent','debug','ChatMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','end','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','update','then','sendStatus','stack','name','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','order','sort','where','pick','merge','VIRTUAL','options','ChatMessage','includeAll','include','findAll','show','params','find','create','body','destroy','describe','../../config/logger','accept','chat','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','ChatInteraction','ChatInteractionId','isNil','read1stAt','[CHATMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','null','acceptMessage','ContactId','Sequelize','SELECT','internal','SIP/%s','channel','motionChannel','event','EventManager','acceptmessage','parse','interaction','formData','chat-interactions','get','[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','RejectMessage','rejectMessage','QueryTypes','User'];(function(_0x1b6f60,_0x5d658a){var _0x29018c=function(_0x3e2fa9){while(--_0x3e2fa9){_0x1b6f60['push'](_0x1b6f60['shift']());}};_0x29018c(++_0x5d658a);}(_0x8d31,0x102));var _0x18d3=function(_0x42bb25,_0x2af386){_0x42bb25=_0x42bb25-0x0;var _0x15aa90=_0x8d31[_0x42bb25];return _0x15aa90;};'use strict';var emlformat=require(_0x18d3('0x0'));var rimraf=require(_0x18d3('0x1'));var zipdir=require(_0x18d3('0x2'));var jsonpatch=require(_0x18d3('0x3'));var rp=require(_0x18d3('0x4'));var moment=require(_0x18d3('0x5'));var BPromise=require(_0x18d3('0x6'));var Mustache=require('mustache');var util=require('util');var path=require(_0x18d3('0x7'));var sox=require(_0x18d3('0x8'));var csv=require('to-csv');var ejs=require(_0x18d3('0x9'));var fs=require('fs');var fs_extra=require(_0x18d3('0xa'));var _=require(_0x18d3('0xb'));var squel=require(_0x18d3('0xc'));var crypto=require(_0x18d3('0xd'));var jsforce=require(_0x18d3('0xe'));var deskjs=require(_0x18d3('0xf'));var toCsv=require('to-csv');var querystring=require(_0x18d3('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x18d3('0x11'));var qs=require(_0x18d3('0x12'));var as=require(_0x18d3('0x13'));var hardwareService=require(_0x18d3('0x14'));var logger=require('../../config/logger')(_0x18d3('0x15'));var utils=require(_0x18d3('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x18d3('0x17'));var db=require(_0x18d3('0x18'))['db'];config[_0x18d3('0x19')]=_['defaults'](config[_0x18d3('0x19')],{'host':_0x18d3('0x1a'),'port':0x18eb});var socket=require(_0x18d3('0x1b'))(new Redis(config[_0x18d3('0x19')]));require('./chatMessage.socket')[_0x18d3('0x1c')](socket);var jayson=require('jayson/promise');var client=jayson[_0x18d3('0x1d')]['http']({'port':0x232c});var client9002=jayson[_0x18d3('0x1d')][_0x18d3('0x1e')]({'port':0x232a});function respondWithRpcPromise(_0x16157a,_0x5dee57,_0x2dc68d,_0xddec7d){return new BPromise(function(_0x3fc73a,_0x2debbe){var _0x530e76=_0xddec7d||client;return _0x530e76[_0x18d3('0x1f')](_0x16157a,_0x2dc68d)['then'](function(_0x28b499){logger[_0x18d3('0x20')](_0x18d3('0x21'),_0x5dee57,_0x18d3('0x22'));logger[_0x18d3('0x23')](_0x18d3('0x24'),_0x5dee57,'request\x20sent',JSON[_0x18d3('0x25')](_0x28b499));if(_0x28b499[_0x18d3('0x26')]){if(_0x28b499['error']['code']===0x1f4){logger[_0x18d3('0x26')](_0x18d3('0x21'),_0x5dee57,_0x28b499['error'][_0x18d3('0x27')]);return _0x2debbe(_0x28b499[_0x18d3('0x26')]['message']);}logger[_0x18d3('0x26')]('ChatMessage,\x20%s,\x20%s',_0x5dee57,_0x28b499[_0x18d3('0x26')][_0x18d3('0x27')]);return _0x3fc73a(_0x28b499[_0x18d3('0x26')][_0x18d3('0x27')]);}else{logger[_0x18d3('0x20')](_0x18d3('0x21'),_0x5dee57,_0x18d3('0x22'));_0x3fc73a(_0x28b499['result']['message']);}})[_0x18d3('0x28')](function(_0x303889){logger[_0x18d3('0x26')](_0x18d3('0x21'),_0x5dee57,_0x303889);_0x2debbe(_0x303889);});});}function respondWithStatusCode(_0xefe377,_0x2593a4){_0x2593a4=_0x2593a4||0xcc;return function(_0x21031c){if(_0x21031c){return _0xefe377['sendStatus'](_0x2593a4);}return _0xefe377['status'](_0x2593a4)[_0x18d3('0x29')]();};}function respondWithResult(_0x338c29,_0x3e2191){_0x3e2191=_0x3e2191||0xc8;return function(_0x3edf19){if(_0x3edf19){return _0x338c29[_0x18d3('0x2a')](_0x3e2191)[_0x18d3('0x2b')](_0x3edf19);}};}function respondWithFilteredResult(_0x46b3d1,_0x46e3d7){return function(_0x2071f9){if(_0x2071f9){var _0x287043=typeof _0x46e3d7[_0x18d3('0x2c')]===_0x18d3('0x2d')&&typeof _0x46e3d7['limit']==='undefined';var _0x11c4de=_0x2071f9['count'];var _0x35b9fc=_0x287043?0x0:_0x46e3d7[_0x18d3('0x2c')];var _0x28c945=_0x287043?_0x2071f9[_0x18d3('0x2e')]:_0x46e3d7['offset']+_0x46e3d7[_0x18d3('0x2f')];var _0x5de108;if(_0x28c945>=_0x11c4de){_0x28c945=_0x11c4de;_0x5de108=0xc8;}else{_0x5de108=0xce;}_0x46b3d1[_0x18d3('0x2a')](_0x5de108);return _0x46b3d1[_0x18d3('0x30')](_0x18d3('0x31'),_0x35b9fc+'-'+_0x28c945+'/'+_0x11c4de)['json'](_0x2071f9);}return null;};}function patchUpdates(_0x522fca){return function(_0x135180){try{jsonpatch[_0x18d3('0x32')](_0x135180,_0x522fca,!![]);}catch(_0xb09ab1){return BPromise[_0x18d3('0x33')](_0xb09ab1);}return _0x135180['save']();};}function saveUpdates(_0x5d709f,_0x2c0bc4){return function(_0x1750dd){if(_0x1750dd){return _0x1750dd[_0x18d3('0x34')](_0x5d709f)[_0x18d3('0x35')](function(_0x43d57e){return _0x43d57e;});}return null;};}function removeEntity(_0x1ec44f,_0x19fccc){return function(_0x33da38){if(_0x33da38){return _0x33da38['destroy']()[_0x18d3('0x35')](function(){_0x1ec44f['status'](0xcc)[_0x18d3('0x29')]();});}};}function handleEntityNotFound(_0x1ba384,_0x511e7c){return function(_0x48a389){if(!_0x48a389){_0x1ba384[_0x18d3('0x36')](0x194);}return _0x48a389;};}function handleError(_0x2f2bc9,_0x41afb8){_0x41afb8=_0x41afb8||0x1f4;return function(_0x5c3e5a){logger[_0x18d3('0x26')](_0x5c3e5a[_0x18d3('0x37')]);if(_0x5c3e5a['name']){delete _0x5c3e5a[_0x18d3('0x38')];}_0x2f2bc9[_0x18d3('0x2a')](_0x41afb8)['send'](_0x5c3e5a);};}exports['index']=function(_0x46bae5,_0x3f675a){var _0x3643af={},_0x201857={},_0x4bb7d7={'count':0x0,'rows':[]};var _0x27df0b=_[_0x18d3('0x39')](db['ChatMessage'][_0x18d3('0x3a')],function(_0x4fd6bf){return{'name':_0x4fd6bf[_0x18d3('0x3b')],'type':_0x4fd6bf[_0x18d3('0x3c')][_0x18d3('0x3d')]};});_0x201857[_0x18d3('0x3e')]=_['map'](_0x27df0b,_0x18d3('0x38'));_0x201857[_0x18d3('0x3f')]=_[_0x18d3('0x40')](_0x46bae5[_0x18d3('0x3f')]);_0x201857[_0x18d3('0x41')]=_[_0x18d3('0x42')](_0x201857['model'],_0x201857[_0x18d3('0x3f')]);_0x3643af[_0x18d3('0x43')]=_[_0x18d3('0x42')](_0x201857['model'],qs[_0x18d3('0x44')](_0x46bae5['query'][_0x18d3('0x44')]));_0x3643af[_0x18d3('0x43')]=_0x3643af['attributes']['length']?_0x3643af[_0x18d3('0x43')]:_0x201857['model'];if(!_0x46bae5['query']['hasOwnProperty']('nolimit')){_0x3643af[_0x18d3('0x2f')]=qs['limit'](_0x46bae5[_0x18d3('0x3f')][_0x18d3('0x2f')]);_0x3643af[_0x18d3('0x2c')]=qs['offset'](_0x46bae5['query'][_0x18d3('0x2c')]);}_0x3643af[_0x18d3('0x45')]=qs[_0x18d3('0x46')](_0x46bae5['query'][_0x18d3('0x46')]);_0x3643af[_0x18d3('0x47')]=qs[_0x18d3('0x41')](_[_0x18d3('0x48')](_0x46bae5[_0x18d3('0x3f')],_0x201857['filters']),_0x27df0b);if(_0x46bae5['query']['filter']){_0x3643af[_0x18d3('0x47')]=_[_0x18d3('0x49')](_0x3643af[_0x18d3('0x47')],{'$or':_[_0x18d3('0x39')](_0x27df0b,function(_0x2cf86d){if(_0x2cf86d[_0x18d3('0x3c')]!==_0x18d3('0x4a')){var _0x4ecf3a={};_0x4ecf3a[_0x2cf86d[_0x18d3('0x38')]]={'$like':'%'+_0x46bae5[_0x18d3('0x3f')]['filter']+'%'};return _0x4ecf3a;}})});}_0x3643af=_['merge']({},_0x3643af,_0x46bae5[_0x18d3('0x4b')]);var _0x2fe3b0={'where':_0x3643af[_0x18d3('0x47')]};return db[_0x18d3('0x4c')][_0x18d3('0x2e')](_0x2fe3b0)[_0x18d3('0x35')](function(_0x221813){_0x4bb7d7['count']=_0x221813;if(_0x46bae5[_0x18d3('0x3f')][_0x18d3('0x4d')]){_0x3643af[_0x18d3('0x4e')]=[{'all':!![]}];}return db[_0x18d3('0x4c')][_0x18d3('0x4f')](_0x3643af);})[_0x18d3('0x35')](function(_0x262ed4){_0x4bb7d7['rows']=_0x262ed4;return _0x4bb7d7;})[_0x18d3('0x35')](respondWithFilteredResult(_0x3f675a,_0x3643af))[_0x18d3('0x28')](handleError(_0x3f675a,null));};exports[_0x18d3('0x50')]=function(_0x515cae,_0x8d3018){var _0x51d0d7={'raw':!![],'where':{'id':_0x515cae[_0x18d3('0x51')]['id']}},_0x1adf29={};_0x1adf29[_0x18d3('0x3e')]=_[_0x18d3('0x40')](db['ChatMessage']['rawAttributes']);_0x1adf29[_0x18d3('0x3f')]=_['keys'](_0x515cae[_0x18d3('0x3f')]);_0x1adf29[_0x18d3('0x41')]=_[_0x18d3('0x42')](_0x1adf29[_0x18d3('0x3e')],_0x1adf29[_0x18d3('0x3f')]);_0x51d0d7['attributes']=_['intersection'](_0x1adf29[_0x18d3('0x3e')],qs[_0x18d3('0x44')](_0x515cae[_0x18d3('0x3f')][_0x18d3('0x44')]));_0x51d0d7[_0x18d3('0x43')]=_0x51d0d7[_0x18d3('0x43')]['length']?_0x51d0d7['attributes']:_0x1adf29['model'];if(_0x515cae['query'][_0x18d3('0x4d')]){_0x51d0d7['include']=[{'all':!![]}];}_0x51d0d7=_['merge']({},_0x51d0d7,_0x515cae[_0x18d3('0x4b')]);return db['ChatMessage'][_0x18d3('0x52')](_0x51d0d7)[_0x18d3('0x35')](handleEntityNotFound(_0x8d3018,null))[_0x18d3('0x35')](respondWithResult(_0x8d3018,null))[_0x18d3('0x28')](handleError(_0x8d3018,null));};exports[_0x18d3('0x53')]=function(_0x489e3c,_0x167df0){return db[_0x18d3('0x4c')][_0x18d3('0x53')](_0x489e3c[_0x18d3('0x54')],{})[_0x18d3('0x35')](respondWithResult(_0x167df0,0xc9))[_0x18d3('0x28')](handleError(_0x167df0,null));};exports['update']=function(_0x70ff64,_0x1418ad){if(_0x70ff64[_0x18d3('0x54')]['id']){delete _0x70ff64['body']['id'];}return db[_0x18d3('0x4c')][_0x18d3('0x52')]({'where':{'id':_0x70ff64[_0x18d3('0x51')]['id']}})['then'](handleEntityNotFound(_0x1418ad,null))[_0x18d3('0x35')](saveUpdates(_0x70ff64[_0x18d3('0x54')],null))[_0x18d3('0x35')](respondWithResult(_0x1418ad,null))[_0x18d3('0x28')](handleError(_0x1418ad,null));};exports[_0x18d3('0x55')]=function(_0x25f987,_0x17da68){return db[_0x18d3('0x4c')][_0x18d3('0x52')]({'where':{'id':_0x25f987[_0x18d3('0x51')]['id']}})[_0x18d3('0x35')](handleEntityNotFound(_0x17da68,null))[_0x18d3('0x35')](removeEntity(_0x17da68,null))[_0x18d3('0x28')](handleError(_0x17da68,null));};exports['describe']=function(_0x1bbfd1,_0xa6e2d5){return db[_0x18d3('0x4c')][_0x18d3('0x56')]()[_0x18d3('0x35')](respondWithResult(_0xa6e2d5,null))[_0x18d3('0x28')](handleError(_0xa6e2d5,null));};var interaction_log=require(_0x18d3('0x57'))('chat-interactions');exports[_0x18d3('0x58')]=function(_0x4670b4,_0x5a8ec9,_0x4d55ab){var _0x5550e6={'agent':{},'channel':_0x18d3('0x59')};if(_0x4670b4[_0x18d3('0x54')]['id']){delete _0x4670b4['body']['id'];}_0x4670b4[_0x18d3('0x54')]['read']=!![];_0x4670b4['body']['readAt']=moment()[_0x18d3('0x5a')](_0x18d3('0x5b'));_0x4670b4[_0x18d3('0x54')][_0x18d3('0x5c')]=_0x4670b4[_0x18d3('0x54')]['UserId']||_0x4670b4[_0x18d3('0x5d')]['id'];_0x5550e6[_0x18d3('0x5e')]['id']=_0x4670b4[_0x18d3('0x54')][_0x18d3('0x5c')];return db[_0x18d3('0x4c')][_0x18d3('0x52')]({'where':{'id':_0x4670b4[_0x18d3('0x51')]['id'],'UserId':null}})[_0x18d3('0x35')](handleEntityNotFound(_0x5a8ec9,null))[_0x18d3('0x35')](saveUpdates(_0x4670b4['body'],null))[_0x18d3('0x35')](function(_0x45ed45){if(_0x45ed45){_0x5550e6['message']=_0x45ed45['get']({'plain':!![]});return db[_0x18d3('0x5f')]['find']({'where':{'id':_0x45ed45[_0x18d3('0x60')]}});}return null;})[_0x18d3('0x35')](handleEntityNotFound(_0x5a8ec9,null))['then'](function(_0x1328af){if(_0x1328af){return _0x1328af['update']({'UserId':_0x4670b4[_0x18d3('0x54')][_0x18d3('0x5c')],'read1stAt':_[_0x18d3('0x61')](_0x1328af[_0x18d3('0x62')])?moment()[_0x18d3('0x5a')](_0x18d3('0x5b')):undefined});}return null;})['then'](function(_0x7c1521){if(_0x7c1521){_0x5550e6['interaction']=_0x7c1521['get']({'plain':!![]});interaction_log[_0x18d3('0x20')](_0x18d3('0x63'),_0x4670b4[_0x18d3('0x5d')]['id'],_0x4670b4[_0x18d3('0x5d')][_0x18d3('0x38')],_0x4670b4[_0x18d3('0x5d')]['role'],_0x5550e6['interaction']['id'],_0x4670b4[_0x18d3('0x54')]?JSON[_0x18d3('0x25')](_0x4670b4[_0x18d3('0x54')]):_0x18d3('0x64'));return respondWithRpcPromise('AcceptMessage',_0x18d3('0x65'),_0x5550e6);}return null;})[_0x18d3('0x35')](function(_0x1abc2d){var _0x22997e='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x1abc2d[_0x18d3('0x27')][_0x18d3('0x66')];return db['sequelize'][_0x18d3('0x3f')](_0x22997e,{'type':db[_0x18d3('0x67')]['QueryTypes'][_0x18d3('0x68')],'raw':!![]})['then'](function(_0x3f2c27){return _0x3f2c27;});})['then'](function(_0x39f3d5){if(_0x39f3d5){_0x5550e6[_0x18d3('0x27')]['contact']=_0x39f3d5[0x0];if(!_0x4670b4[_0x18d3('0x54')][_0x18d3('0x5c')])return;return db['User']['find']({'where':{'id':_0x4670b4['body'][_0x18d3('0x5c')],'role':_0x18d3('0x5e')},'attributes':['id',_0x18d3('0x38'),'fullname','email',_0x18d3('0x69')],'raw':!![]});}return null;})[_0x18d3('0x35')](function(_0xd0ef6f){if(!_0xd0ef6f)return null;_0x5550e6[_0x18d3('0x27')][_0x18d3('0x5e')]=_0xd0ef6f;return _0x5550e6;})[_0x18d3('0x35')](function(_0xc49c62){if(_0xc49c62){if(_0x4670b4['body']['manual']){_0x5550e6['message']['interface']=util[_0x18d3('0x5a')](_0x18d3('0x6a'),_0x4670b4['user'][_0x18d3('0x38')]);_0x5550e6['message'][_0x18d3('0x6b')]=_0x5550e6[_0x18d3('0x6b')];_0x5550e6[_0x18d3('0x27')][_0x18d3('0x6c')]=_0x5550e6[_0x18d3('0x6b')];_0x5550e6[_0x18d3('0x27')][_0x18d3('0x6d')]=_0x18d3('0x58');return respondWithRpcPromise(_0x18d3('0x6e'),'EventManager',{'event':_0x18d3('0x6f'),'message':_[_0x18d3('0x49')](_0x5550e6[_0x18d3('0x27')],JSON[_0x18d3('0x70')](_0x5550e6[_0x18d3('0x71')][_0x18d3('0x72')]))},client9002)[_0x18d3('0x35')](function(){return _0x5550e6;});}return _0x5550e6;}return null;})[_0x18d3('0x35')](respondWithResult(_0x5a8ec9,null))[_0x18d3('0x28')](handleError(_0x5a8ec9,null));};var interaction_log=require('../../config/logger')(_0x18d3('0x73'));exports[_0x18d3('0x33')]=function(_0x27ba17,_0x39e729,_0x32f830){var _0x1e6c0c={'agent':{},'channel':'chat'};if(_0x27ba17['body']['id']){delete _0x27ba17['body']['id'];}_0x27ba17[_0x18d3('0x54')][_0x18d3('0x5c')]=_0x27ba17[_0x18d3('0x54')][_0x18d3('0x5c')]||_0x27ba17[_0x18d3('0x5d')]['id'];_0x1e6c0c[_0x18d3('0x5e')]['id']=_0x27ba17[_0x18d3('0x54')][_0x18d3('0x5c')];return db[_0x18d3('0x4c')][_0x18d3('0x52')]({'where':{'id':_0x27ba17[_0x18d3('0x51')]['id'],'UserId':null}})[_0x18d3('0x35')](handleEntityNotFound(_0x39e729,null))['then'](function(_0x194056){if(_0x194056){_0x1e6c0c[_0x18d3('0x27')]=_0x194056[_0x18d3('0x74')]({'plain':!![]});return db[_0x18d3('0x5f')][_0x18d3('0x52')]({'where':{'id':_0x194056[_0x18d3('0x60')]}});}return null;})[_0x18d3('0x35')](handleEntityNotFound(_0x39e729,null))[_0x18d3('0x35')](function(_0x3179c9){if(_0x3179c9){_0x1e6c0c['interaction']=_0x3179c9[_0x18d3('0x74')]({'plain':!![]});interaction_log[_0x18d3('0x20')](_0x18d3('0x75'),_0x27ba17[_0x18d3('0x5d')]['id'],_0x27ba17['user'][_0x18d3('0x38')],_0x27ba17[_0x18d3('0x5d')][_0x18d3('0x76')],_0x1e6c0c[_0x18d3('0x71')]['id'],_0x27ba17[_0x18d3('0x54')]?JSON[_0x18d3('0x25')](_0x27ba17[_0x18d3('0x54')]):_0x18d3('0x64'));return respondWithRpcPromise(_0x18d3('0x77'),_0x18d3('0x78'),_0x1e6c0c);}return null;})[_0x18d3('0x35')](function(_0x4569ed){var _0xa2e2fd='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x4569ed[_0x18d3('0x27')][_0x18d3('0x66')];return db['sequelize'][_0x18d3('0x3f')](_0xa2e2fd,{'type':db['Sequelize'][_0x18d3('0x79')]['SELECT'],'raw':!![]})[_0x18d3('0x35')](function(_0x3a6c1f){return _0x3a6c1f;});})[_0x18d3('0x35')](function(_0x3110b4){if(_0x3110b4){_0x1e6c0c[_0x18d3('0x27')]['contact']=_0x3110b4[0x0];if(!_0x27ba17[_0x18d3('0x54')][_0x18d3('0x5c')])return;return db[_0x18d3('0x7a')]['find']({'where':{'id':_0x27ba17[_0x18d3('0x54')][_0x18d3('0x5c')],'role':_0x18d3('0x5e')},'attributes':['id','name',_0x18d3('0x7b'),_0x18d3('0x7c'),_0x18d3('0x69')],'raw':!![]});}return null;})[_0x18d3('0x35')](function(_0x1a08a6){if(!_0x1a08a6)return null;_0x1e6c0c[_0x18d3('0x27')][_0x18d3('0x5e')]=_0x1a08a6;return _0x1e6c0c;})[_0x18d3('0x35')](function(_0xe6ed28){if(_0xe6ed28){_0xe6ed28[_0x18d3('0x27')][_0x18d3('0x7d')]=util[_0x18d3('0x5a')](_0x18d3('0x6a'),_0x27ba17[_0x18d3('0x5d')][_0x18d3('0x38')]);_0xe6ed28[_0x18d3('0x27')][_0x18d3('0x6b')]=_0x1e6c0c[_0x18d3('0x6b')];_0xe6ed28[_0x18d3('0x27')][_0x18d3('0x6c')]=_0x1e6c0c['channel'];_0xe6ed28[_0x18d3('0x27')][_0x18d3('0x6d')]='reject';respondWithRpcPromise(_0x18d3('0x6e'),_0x18d3('0x6e'),{'event':_0x18d3('0x7e'),'message':_[_0x18d3('0x49')](_0x1e6c0c['message'],JSON[_0x18d3('0x70')](_0x1e6c0c[_0x18d3('0x71')][_0x18d3('0x72')]))},client9002);return _0x1e6c0c;}return null;})[_0x18d3('0x35')](respondWithResult(_0x39e729,null))[_0x18d3('0x28')](handleError(_0x39e729,null));};
\ No newline at end of file
index 547f14b..2b73184 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e0c=['update','emit','hasOwnProperty','events','../../mysqldb','ChatMessage','setMaxListeners','save'];(function(_0x2cc119,_0x468257){var _0x4d72e=function(_0x380535){while(--_0x380535){_0x2cc119['push'](_0x2cc119['shift']());}};_0x4d72e(++_0x468257);}(_0x3e0c,0xbb));var _0xc3e0=function(_0x5f1c73,_0x4f9432){_0x5f1c73=_0x5f1c73-0x0;var _0x3c1fa4=_0x3e0c[_0x5f1c73];return _0x3c1fa4;};'use strict';var EventEmitter=require(_0xc3e0('0x0'));var ChatMessage=require(_0xc3e0('0x1'))['db'][_0xc3e0('0x2')];var ChatMessageEvents=new EventEmitter();ChatMessageEvents[_0xc3e0('0x3')](0x0);var events={'afterCreate':_0xc3e0('0x4'),'afterUpdate':_0xc3e0('0x5'),'afterDestroy':'remove'};function emitEvent(_0x10743c){return function(_0x1130f8,_0x51ac58,_0x2bc67b){ChatMessageEvents['emit'](_0x10743c+':'+_0x1130f8['id'],_0x1130f8);ChatMessageEvents[_0xc3e0('0x6')](_0x10743c,_0x1130f8);_0x2bc67b(null);};}for(var e in events){if(events[_0xc3e0('0x7')](e)){var event=events[e];ChatMessage['hook'](e,emitEvent(event));}}module['exports']=ChatMessageEvents;
\ No newline at end of file
+var _0x741f=['save','emit','hasOwnProperty','hook','exports','events','setMaxListeners'];(function(_0x313dab,_0x53179c){var _0x18ee37=function(_0x5f43a0){while(--_0x5f43a0){_0x313dab['push'](_0x313dab['shift']());}};_0x18ee37(++_0x53179c);}(_0x741f,0x108));var _0xf741=function(_0x558d83,_0x3a3b8c){_0x558d83=_0x558d83-0x0;var _0x3a62bf=_0x741f[_0x558d83];return _0x3a62bf;};'use strict';var EventEmitter=require(_0xf741('0x0'));var ChatMessage=require('../../mysqldb')['db']['ChatMessage'];var ChatMessageEvents=new EventEmitter();ChatMessageEvents[_0xf741('0x1')](0x0);var events={'afterCreate':_0xf741('0x2'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x549c99){return function(_0x2ed4c7,_0x4c0513,_0x23b53b){ChatMessageEvents[_0xf741('0x3')](_0x549c99+':'+_0x2ed4c7['id'],_0x2ed4c7);ChatMessageEvents['emit'](_0x549c99,_0x2ed4c7);_0x23b53b(null);};}for(var e in events){if(events[_0xf741('0x4')](e)){var event=events[e];ChatMessage[_0xf741('0x5')](e,emitEvent(event));}}module[_0xf741('0x6')]=ChatMessageEvents;
\ No newline at end of file
index 1201223..5da061a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc5b=['toLowerCase','out','secret','isNil','ChatInteraction','findOne','ChatInteractionId','then','update','error','utf8mb4_unicode_ci','util','../../config/logger','api','moment','request-promise','path','rimraf','./chatMessage.attributes','exports','define','ChatMessage','chat_messages','fti_chat_messages','body','FULLTEXT','models','direction'];(function(_0x4629ed,_0x59ef85){var _0x52ca04=function(_0x59dc63){while(--_0x59dc63){_0x4629ed['push'](_0x4629ed['shift']());}};_0x52ca04(++_0x59ef85);}(_0xbc5b,0x177));var _0xbbc5=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0xbc5b[_0x502c7d];return _0x30b7ed;};'use strict';var _=require('lodash');var util=require(_0xbbc5('0x0'));var logger=require(_0xbbc5('0x1'))(_0xbbc5('0x2'));var moment=require(_0xbbc5('0x3'));var BPromise=require('bluebird');var rp=require(_0xbbc5('0x4'));var fs=require('fs');var path=require(_0xbbc5('0x5'));var rimraf=require(_0xbbc5('0x6'));var config=require('../../config/environment');var attributes=require(_0xbbc5('0x7'));module[_0xbbc5('0x8')]=function(_0x482ddf,_0x3b2da2){return _0x482ddf[_0xbbc5('0x9')](_0xbbc5('0xa'),attributes,{'tableName':_0xbbc5('0xb'),'paranoid':![],'indexes':[{'name':_0xbbc5('0xc'),'fields':[_0xbbc5('0xd')],'type':_0xbbc5('0xe')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x4888e7,_0x412a1f,_0x53d8ba){var _0x3531bf=_0x482ddf[_0xbbc5('0xf')];var _0x4e56d9=_0x4888e7['get']({'plain':!![]});if(_0x4e56d9[_0xbbc5('0x10')]['toLowerCase']()==='in'||_0x4e56d9[_0xbbc5('0x10')][_0xbbc5('0x11')]()===_0xbbc5('0x12')&&!_0x4e56d9[_0xbbc5('0x13')]&&!_[_0xbbc5('0x14')](_0x4e56d9['UserId'])){_0x3531bf[_0xbbc5('0x15')][_0xbbc5('0x16')]({'where':{'id':_0x4e56d9[_0xbbc5('0x17')]}})[_0xbbc5('0x18')](function(_0x177ec7){if(_0x177ec7){_0x177ec7[_0xbbc5('0x19')]({'lastMsgAt':_0x4e56d9['createdAt'],'lastMsgDirection':_0x4e56d9['direction']['toLowerCase']()});}})['catch'](function(_0x1669cc){console[_0xbbc5('0x1a')](_0x1669cc);});}_0x53d8ba();}},'charset':'utf8mb4','collate':_0xbbc5('0x1b')});};
\ No newline at end of file
+var _0x7fc2=['findOne','ChatInteractionId','update','createdAt','catch','error','utf8mb4','utf8mb4_unicode_ci','lodash','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./chatMessage.attributes','exports','ChatMessage','body','FULLTEXT','models','get','direction','toLowerCase','out','secret','UserId'];(function(_0x291561,_0x2cc12e){var _0x173a01=function(_0x23b4f6){while(--_0x23b4f6){_0x291561['push'](_0x291561['shift']());}};_0x173a01(++_0x2cc12e);}(_0x7fc2,0xb0));var _0x27fc=function(_0x126558,_0x143c9a){_0x126558=_0x126558-0x0;var _0x1f6d14=_0x7fc2[_0x126558];return _0x1f6d14;};'use strict';var _=require(_0x27fc('0x0'));var util=require('util');var logger=require(_0x27fc('0x1'))(_0x27fc('0x2'));var moment=require('moment');var BPromise=require(_0x27fc('0x3'));var rp=require(_0x27fc('0x4'));var fs=require('fs');var path=require(_0x27fc('0x5'));var rimraf=require(_0x27fc('0x6'));var config=require(_0x27fc('0x7'));var attributes=require(_0x27fc('0x8'));module[_0x27fc('0x9')]=function(_0x296900,_0x2ce54d){return _0x296900['define'](_0x27fc('0xa'),attributes,{'tableName':'chat_messages','paranoid':![],'indexes':[{'name':'fti_chat_messages','fields':[_0x27fc('0xb')],'type':_0x27fc('0xc')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x4de8f7,_0x36d5b2,_0x2e10a7){var _0x38d6ae=_0x296900[_0x27fc('0xd')];var _0x2c52ba=_0x4de8f7[_0x27fc('0xe')]({'plain':!![]});if(_0x2c52ba[_0x27fc('0xf')][_0x27fc('0x10')]()==='in'||_0x2c52ba[_0x27fc('0xf')][_0x27fc('0x10')]()===_0x27fc('0x11')&&!_0x2c52ba[_0x27fc('0x12')]&&!_['isNil'](_0x2c52ba[_0x27fc('0x13')])){_0x38d6ae['ChatInteraction'][_0x27fc('0x14')]({'where':{'id':_0x2c52ba[_0x27fc('0x15')]}})['then'](function(_0x508262){if(_0x508262){_0x508262[_0x27fc('0x16')]({'lastMsgAt':_0x2c52ba[_0x27fc('0x17')],'lastMsgDirection':_0x2c52ba[_0x27fc('0xf')][_0x27fc('0x10')]()});}})[_0x27fc('0x18')](function(_0x5ebd5f){console[_0x27fc('0x19')](_0x5ebd5f);});}_0x2e10a7();}},'charset':_0x27fc('0x1a'),'collate':_0x27fc('0x1b')});};
\ No newline at end of file
index b340d9f..46ba195 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x028d=['socket.io-emitter','./chatMessage.socket','register','then','info','request\x20sent','debug','ChatMessage,\x20%s,\x20%s,\x20%s','error','code','ChatMessage,\x20%s,\x20%s','message','result','catch','CreateChatMessage','ChatMessage','options','raw','stringify','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','redis','defaults','localhost'];(function(_0x2ba933,_0x320b32){var _0x217996=function(_0x48f946){while(--_0x48f946){_0x2ba933['push'](_0x2ba933['shift']());}};_0x217996(++_0x320b32);}(_0x028d,0x1e1));var _0xd028=function(_0x343f84,_0x2723a4){_0x343f84=_0x343f84-0x0;var _0x434f34=_0x028d[_0x343f84];return _0x434f34;};'use strict';var _=require('lodash');var util=require(_0xd028('0x0'));var moment=require(_0xd028('0x1'));var BPromise=require(_0xd028('0x2'));var rs=require(_0xd028('0x3'));var fs=require('fs');var Redis=require(_0xd028('0x4'));var db=require(_0xd028('0x5'))['db'];var utils=require(_0xd028('0x6'));var logger=require(_0xd028('0x7'))(_0xd028('0x8'));var config=require(_0xd028('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xd028('0xa')]['http']({'port':0x232a});config[_0xd028('0xb')]=_[_0xd028('0xc')](config[_0xd028('0xb')],{'host':_0xd028('0xd'),'port':0x18eb});var socket=require(_0xd028('0xe'))(new Redis(config[_0xd028('0xb')]));require(_0xd028('0xf'))[_0xd028('0x10')](socket);function respondWithRpcPromise(_0x4ce66c,_0x4fd68a,_0x5bfbbc){return new BPromise(function(_0x448418,_0x21b194){return client['request'](_0x4ce66c,_0x5bfbbc)[_0xd028('0x11')](function(_0x3a3045){logger[_0xd028('0x12')]('ChatMessage,\x20%s,\x20%s',_0x4fd68a,_0xd028('0x13'));logger[_0xd028('0x14')](_0xd028('0x15'),_0x4fd68a,_0xd028('0x13'),JSON['stringify'](_0x3a3045));if(_0x3a3045['error']){if(_0x3a3045[_0xd028('0x16')][_0xd028('0x17')]===0x1f4){logger[_0xd028('0x16')](_0xd028('0x18'),_0x4fd68a,_0x3a3045[_0xd028('0x16')][_0xd028('0x19')]);return _0x21b194(_0x3a3045[_0xd028('0x16')]['message']);}logger['error'](_0xd028('0x18'),_0x4fd68a,_0x3a3045[_0xd028('0x16')][_0xd028('0x19')]);return _0x448418(_0x3a3045['error'][_0xd028('0x19')]);}else{logger[_0xd028('0x12')](_0xd028('0x18'),_0x4fd68a,_0xd028('0x13'));_0x448418(_0x3a3045[_0xd028('0x1a')][_0xd028('0x19')]);}})[_0xd028('0x1b')](function(_0x54824d){logger['error'](_0xd028('0x18'),_0x4fd68a,_0x54824d);_0x21b194(_0x54824d);});});}exports[_0xd028('0x1c')]=function(_0x38aee){var _0xdf6e1d=this;return new Promise(function(_0x1a7c8b,_0x209335){return db[_0xd028('0x1d')]['create'](_0x38aee['body'],{'raw':_0x38aee[_0xd028('0x1e')]?_0x38aee[_0xd028('0x1e')][_0xd028('0x1f')]===undefined?!![]:![]:!![]})[_0xd028('0x11')](function(_0x6025d8){logger['info'](_0xd028('0x1c'),_0x38aee);logger[_0xd028('0x14')](_0xd028('0x1c'),_0x38aee,JSON[_0xd028('0x20')](_0x6025d8));_0x1a7c8b(_0x6025d8);})[_0xd028('0x1b')](function(_0x3769de){logger[_0xd028('0x16')](_0xd028('0x1c'),_0x3769de[_0xd028('0x19')],_0x38aee);_0x209335(_0xdf6e1d[_0xd028('0x16')](0x1f4,_0x3769de['message']));});});};
\ No newline at end of file
+var _0xaa61=['redis','defaults','localhost','./chatMessage.socket','info','request\x20sent','debug','ChatMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','ChatMessage,\x20%s,\x20%s','message','result','catch','CreateChatMessage','create','body','options','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http'];(function(_0x65d7cb,_0x4205e8){var _0x1190cf=function(_0x1331a5){while(--_0x1331a5){_0x65d7cb['push'](_0x65d7cb['shift']());}};_0x1190cf(++_0x4205e8);}(_0xaa61,0xfb));var _0x1aa6=function(_0x4bc6af,_0x5468c7){_0x4bc6af=_0x4bc6af-0x0;var _0x5cd55c=_0xaa61[_0x4bc6af];return _0x5cd55c;};'use strict';var _=require(_0x1aa6('0x0'));var util=require('util');var moment=require(_0x1aa6('0x1'));var BPromise=require(_0x1aa6('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1aa6('0x3'));var db=require(_0x1aa6('0x4'))['db'];var utils=require(_0x1aa6('0x5'));var logger=require(_0x1aa6('0x6'))(_0x1aa6('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x1aa6('0x8')][_0x1aa6('0x9')]({'port':0x232a});config[_0x1aa6('0xa')]=_[_0x1aa6('0xb')](config[_0x1aa6('0xa')],{'host':_0x1aa6('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x1aa6('0xa')]));require(_0x1aa6('0xd'))['register'](socket);function respondWithRpcPromise(_0xdc0798,_0x5bb69c,_0x5eac92){return new BPromise(function(_0x13d835,_0x211a5f){return client['request'](_0xdc0798,_0x5eac92)['then'](function(_0x9fa972){logger[_0x1aa6('0xe')]('ChatMessage,\x20%s,\x20%s',_0x5bb69c,_0x1aa6('0xf'));logger[_0x1aa6('0x10')](_0x1aa6('0x11'),_0x5bb69c,_0x1aa6('0xf'),JSON[_0x1aa6('0x12')](_0x9fa972));if(_0x9fa972[_0x1aa6('0x13')]){if(_0x9fa972['error'][_0x1aa6('0x14')]===0x1f4){logger[_0x1aa6('0x13')](_0x1aa6('0x15'),_0x5bb69c,_0x9fa972[_0x1aa6('0x13')][_0x1aa6('0x16')]);return _0x211a5f(_0x9fa972[_0x1aa6('0x13')][_0x1aa6('0x16')]);}logger[_0x1aa6('0x13')](_0x1aa6('0x15'),_0x5bb69c,_0x9fa972['error'][_0x1aa6('0x16')]);return _0x13d835(_0x9fa972[_0x1aa6('0x13')][_0x1aa6('0x16')]);}else{logger[_0x1aa6('0xe')](_0x1aa6('0x15'),_0x5bb69c,_0x1aa6('0xf'));_0x13d835(_0x9fa972[_0x1aa6('0x17')][_0x1aa6('0x16')]);}})[_0x1aa6('0x18')](function(_0x4c3280){logger[_0x1aa6('0x13')]('ChatMessage,\x20%s,\x20%s',_0x5bb69c,_0x4c3280);_0x211a5f(_0x4c3280);});});}exports[_0x1aa6('0x19')]=function(_0x440fdd){var _0x44da44=this;return new Promise(function(_0x585b73,_0x4e633f){return db['ChatMessage'][_0x1aa6('0x1a')](_0x440fdd[_0x1aa6('0x1b')],{'raw':_0x440fdd[_0x1aa6('0x1c')]?_0x440fdd[_0x1aa6('0x1c')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0xcc4b8b){logger['info'](_0x1aa6('0x19'),_0x440fdd);logger[_0x1aa6('0x10')](_0x1aa6('0x19'),_0x440fdd,JSON['stringify'](_0xcc4b8b));_0x585b73(_0xcc4b8b);})[_0x1aa6('0x18')](function(_0x10865a){logger[_0x1aa6('0x13')]('CreateChatMessage',_0x10865a[_0x1aa6('0x16')],_0x440fdd);_0x4e633f(_0x44da44[_0x1aa6('0x13')](0x1f4,_0x10865a[_0x1aa6('0x16')]));});});};
\ No newline at end of file
index cb763cc..2d34431 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfcbd=['length','chatMessage:','./chatMessage.events','update','emit','removeListener','register'];(function(_0x1d5400,_0x567e3c){var _0x21d9fe=function(_0x23fb75){while(--_0x23fb75){_0x1d5400['push'](_0x1d5400['shift']());}};_0x21d9fe(++_0x567e3c);}(_0xfcbd,0x160));var _0xdfcb=function(_0x145016,_0x40ba0b){_0x145016=_0x145016-0x0;var _0x4a57e8=_0xfcbd[_0x145016];return _0x4a57e8;};'use strict';var ChatMessageEvents=require(_0xdfcb('0x0'));var events=['save','remove',_0xdfcb('0x1')];function createListener(_0x3df05b,_0x2785df){return function(_0x3ec4cc){_0x2785df[_0xdfcb('0x2')](_0x3df05b,_0x3ec4cc);};}function removeListener(_0xde9380,_0x545391){return function(){ChatMessageEvents[_0xdfcb('0x3')](_0xde9380,_0x545391);};}exports[_0xdfcb('0x4')]=function(_0x4bdf76){for(var _0x5615a6=0x0,_0x46956c=events[_0xdfcb('0x5')];_0x5615a6<_0x46956c;_0x5615a6++){var _0xb8de95=events[_0x5615a6];var _0x3c5431=createListener(_0xdfcb('0x6')+_0xb8de95,_0x4bdf76);ChatMessageEvents['on'](_0xb8de95,_0x3c5431);}};
\ No newline at end of file
+var _0xf9d5=['length','chatMessage:','save','remove','emit','removeListener'];(function(_0x2235bf,_0x3a06a7){var _0x4c3a64=function(_0x3b3bb6){while(--_0x3b3bb6){_0x2235bf['push'](_0x2235bf['shift']());}};_0x4c3a64(++_0x3a06a7);}(_0xf9d5,0x122));var _0x5f9d=function(_0x36a3c8,_0x538cb2){_0x36a3c8=_0x36a3c8-0x0;var _0x5618ad=_0xf9d5[_0x36a3c8];return _0x5618ad;};'use strict';var ChatMessageEvents=require('./chatMessage.events');var events=[_0x5f9d('0x0'),_0x5f9d('0x1'),'update'];function createListener(_0x1b4d74,_0xe4b9ee){return function(_0x21d986){_0xe4b9ee[_0x5f9d('0x2')](_0x1b4d74,_0x21d986);};}function removeListener(_0x25fa8c,_0xdd68fd){return function(){ChatMessageEvents[_0x5f9d('0x3')](_0x25fa8c,_0xdd68fd);};}exports['register']=function(_0x1fc74c){for(var _0x59027b=0x0,_0x24999e=events[_0x5f9d('0x4')];_0x59027b<_0x24999e;_0x59027b++){var _0x4fb9f7=events[_0x59027b];var _0x3420b2=createListener(_0x5f9d('0x5')+_0x4fb9f7,_0x1fc74c);ChatMessageEvents['on'](_0x4fb9f7,_0x3420b2);}};
\ No newline at end of file
index b2a0856..da25615 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe4c7=['util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','get','/describe','isAuthenticated','/:id','show','post','tracked','chatmessage:create','put','update','/:id/accept','accept','/:id/reject','reject','destroy','exports','multer'];(function(_0x58b693,_0x14ee77){var _0x400350=function(_0x55a488){while(--_0x55a488){_0x58b693['push'](_0x58b693['shift']());}};_0x400350(++_0x14ee77);}(_0xe4c7,0x158));var _0x7e4c=function(_0x216bb8,_0x103b3b){_0x216bb8=_0x216bb8-0x0;var _0x5756ad=_0xe4c7[_0x216bb8];return _0x5756ad;};'use strict';var multer=require(_0x7e4c('0x0'));var util=require(_0x7e4c('0x1'));var path=require(_0x7e4c('0x2'));var timeout=require(_0x7e4c('0x3'));var express=require('express');var router=express[_0x7e4c('0x4')]();var fs_extra=require(_0x7e4c('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x7e4c('0x6'));var config=require('../../config/environment');var controller=require('./chatMessage.controller');router[_0x7e4c('0x7')]('/',auth['isAuthenticated'](),controller['index']);router[_0x7e4c('0x7')](_0x7e4c('0x8'),auth[_0x7e4c('0x9')](),controller['describe']);router[_0x7e4c('0x7')](_0x7e4c('0xa'),auth['isAuthenticated'](),controller[_0x7e4c('0xb')]);router[_0x7e4c('0xc')]('/',auth[_0x7e4c('0x9')](),interaction[_0x7e4c('0xd')]('chat',_0x7e4c('0xe')),controller['create']);router[_0x7e4c('0xf')](_0x7e4c('0xa'),controller[_0x7e4c('0x10')]);router[_0x7e4c('0xf')](_0x7e4c('0x11'),auth[_0x7e4c('0x9')](),controller[_0x7e4c('0x12')]);router[_0x7e4c('0xf')](_0x7e4c('0x13'),auth[_0x7e4c('0x9')](),controller[_0x7e4c('0x14')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0x7e4c('0x15')]);module[_0x7e4c('0x16')]=router;
\ No newline at end of file
+var _0x1f15=['/describe','describe','chat','chatmessage:create','create','put','/:id/accept','accept','/:id/reject','reject','delete','/:id','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./chatMessage.controller','get','isAuthenticated','index'];(function(_0x1e16f9,_0x3fb0b8){var _0x5860f3=function(_0x29a3ef){while(--_0x29a3ef){_0x1e16f9['push'](_0x1e16f9['shift']());}};_0x5860f3(++_0x3fb0b8);}(_0x1f15,0x17a));var _0x51f1=function(_0x2e6ceb,_0x2fd29a){_0x2e6ceb=_0x2e6ceb-0x0;var _0xf4792d=_0x1f15[_0x2e6ceb];return _0xf4792d;};'use strict';var multer=require('multer');var util=require(_0x51f1('0x0'));var path=require(_0x51f1('0x1'));var timeout=require(_0x51f1('0x2'));var express=require(_0x51f1('0x3'));var router=express[_0x51f1('0x4')]();var fs_extra=require(_0x51f1('0x5'));var auth=require(_0x51f1('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x51f1('0x7'));var controller=require(_0x51f1('0x8'));router[_0x51f1('0x9')]('/',auth[_0x51f1('0xa')](),controller[_0x51f1('0xb')]);router[_0x51f1('0x9')](_0x51f1('0xc'),auth[_0x51f1('0xa')](),controller[_0x51f1('0xd')]);router[_0x51f1('0x9')]('/:id',auth['isAuthenticated'](),controller['show']);router['post']('/',auth[_0x51f1('0xa')](),interaction['tracked'](_0x51f1('0xe'),_0x51f1('0xf')),controller[_0x51f1('0x10')]);router[_0x51f1('0x11')]('/:id',controller['update']);router[_0x51f1('0x11')](_0x51f1('0x12'),auth[_0x51f1('0xa')](),controller[_0x51f1('0x13')]);router[_0x51f1('0x11')](_0x51f1('0x14'),auth[_0x51f1('0xa')](),controller[_0x51f1('0x15')]);router[_0x51f1('0x16')](_0x51f1('0x17'),auth[_0x51f1('0xa')](),controller[_0x51f1('0x18')]);module[_0x51f1('0x19')]=router;
\ No newline at end of file
index 94b63aa..0e76c30 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9657=['exports','medium','sequelize'];(function(_0x3a95c3,_0x3985d4){var _0x4cdc4c=function(_0x55369d){while(--_0x55369d){_0x3a95c3['push'](_0x3a95c3['shift']());}};_0x4cdc4c(++_0x3985d4);}(_0x9657,0x125));var _0x7965=function(_0x3a5c00,_0x4106d1){_0x3a5c00=_0x3a5c00-0x0;var _0x58e0f6=_0x9657[_0x3a5c00];return _0x58e0f6;};'use strict';var Sequelize=require(_0x7965('0x0'));module[_0x7965('0x1')]={'body':{'type':Sequelize['TEXT'](_0x7965('0x2')),'allowNull':![]}};
\ No newline at end of file
+var _0x50e7=['medium','sequelize','TEXT'];(function(_0x5f3ffe,_0x4efbb6){var _0x207eab=function(_0x288b89){while(--_0x288b89){_0x5f3ffe['push'](_0x5f3ffe['shift']());}};_0x207eab(++_0x4efbb6);}(_0x50e7,0xa9));var _0x750e=function(_0x5bc7db,_0x4b887d){_0x5bc7db=_0x5bc7db-0x0;var _0x4d3415=_0x50e7[_0x5bc7db];return _0x4d3415;};'use strict';var Sequelize=require(_0x750e('0x0'));module['exports']={'body':{'type':Sequelize[_0x750e('0x1')](_0x750e('0x2')),'allowNull':![]}};
\ No newline at end of file
index 58ef163..4625c52 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['sendStatus','status','json','undefined','count','offset','limit','set','Content-Range','reject','save','then','destroy','error','name','send','index','fieldName','type','key','model','map','keys','filters','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','VIRTUAL','options','ChatOfflineMessage','findAll','rows','show','rawAttributes','includeAll','include','find','create','catch','body','params','Attachment','forEach','join','root','server','files','attachments','basename','existsSync','remove','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb'];(function(_0x3ac87f,_0x3975db){var _0x134c8b=function(_0x5ec12e){while(--_0x5ec12e){_0x3ac87f['push'](_0x3ac87f['shift']());}};_0x134c8b(++_0x3975db);}(_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
+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(_0x4154a6,_0x2c0b8e){var _0x3b2786=function(_0x2f5936){while(--_0x2f5936){_0x4154a6['push'](_0x4154a6['shift']());}};_0x3b2786(++_0x2c0b8e);}(_0x7a54,0x106));var _0x47a5=function(_0x2ffb9f,_0x2e31d8){_0x2ffb9f=_0x2ffb9f-0x0;var _0x1beb27=_0x7a54[_0x2ffb9f];return _0x1beb27;};'use strict';var emlformat=require(_0x47a5('0x0'));var rimraf=require(_0x47a5('0x1'));var zipdir=require(_0x47a5('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x47a5('0x3'));var moment=require(_0x47a5('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x47a5('0x5'));var util=require(_0x47a5('0x6'));var path=require(_0x47a5('0x7'));var sox=require(_0x47a5('0x8'));var csv=require(_0x47a5('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x47a5('0xa'));var _=require('lodash');var squel=require(_0x47a5('0xb'));var crypto=require(_0x47a5('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x47a5('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x47a5('0xe'));var authService=require(_0x47a5('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x47a5('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x47a5('0x11'));var utils=require(_0x47a5('0x12'));var config=require(_0x47a5('0x13'));var licenseUtil=require(_0x47a5('0x14'));var db=require(_0x47a5('0x15'))['db'];function respondWithStatusCode(_0xd308b8,_0x1eae59){_0x1eae59=_0x1eae59||0xcc;return function(_0x5beb89){if(_0x5beb89){return _0xd308b8[_0x47a5('0x16')](_0x1eae59);}return _0xd308b8[_0x47a5('0x17')](_0x1eae59)[_0x47a5('0x18')]();};}function respondWithResult(_0x711793,_0x139f25){_0x139f25=_0x139f25||0xc8;return function(_0x620ee9){if(_0x620ee9){return _0x711793[_0x47a5('0x17')](_0x139f25)[_0x47a5('0x19')](_0x620ee9);}};}function respondWithFilteredResult(_0x4e99a8,_0x362359){return function(_0x11faf5){if(_0x11faf5){var _0x3b001e=typeof _0x362359[_0x47a5('0x1a')]===_0x47a5('0x1b')&&typeof _0x362359['limit']==='undefined';var _0x138bc0=_0x11faf5['count'];var _0x5247fd=_0x3b001e?0x0:_0x362359[_0x47a5('0x1a')];var _0xaf70a6=_0x3b001e?_0x11faf5[_0x47a5('0x1c')]:_0x362359[_0x47a5('0x1a')]+_0x362359[_0x47a5('0x1d')];var _0x12b98e;if(_0xaf70a6>=_0x138bc0){_0xaf70a6=_0x138bc0;_0x12b98e=0xc8;}else{_0x12b98e=0xce;}_0x4e99a8[_0x47a5('0x17')](_0x12b98e);return _0x4e99a8[_0x47a5('0x1e')](_0x47a5('0x1f'),_0x5247fd+'-'+_0xaf70a6+'/'+_0x138bc0)['json'](_0x11faf5);}return null;};}function patchUpdates(_0x1570bc){return function(_0xf160ba){try{jsonpatch['apply'](_0xf160ba,_0x1570bc,!![]);}catch(_0x2b0360){return BPromise[_0x47a5('0x20')](_0x2b0360);}return _0xf160ba[_0x47a5('0x21')]();};}function saveUpdates(_0x4c5910,_0xb8ae6c){return function(_0x2f142b){if(_0x2f142b){return _0x2f142b[_0x47a5('0x22')](_0x4c5910)[_0x47a5('0x23')](function(_0x5ef1b1){return _0x5ef1b1;});}return null;};}function removeEntity(_0xe2dea9,_0x385687){return function(_0x513981){if(_0x513981){return _0x513981[_0x47a5('0x24')]()[_0x47a5('0x23')](function(){_0xe2dea9[_0x47a5('0x17')](0xcc)[_0x47a5('0x18')]();});}};}function handleEntityNotFound(_0x3abd6a,_0x50bf17){return function(_0x53078a){if(!_0x53078a){_0x3abd6a[_0x47a5('0x16')](0x194);}return _0x53078a;};}function handleError(_0x5686db,_0x1ea9c8){_0x1ea9c8=_0x1ea9c8||0x1f4;return function(_0x5b6c4e){logger[_0x47a5('0x25')](_0x5b6c4e[_0x47a5('0x26')]);if(_0x5b6c4e[_0x47a5('0x27')]){delete _0x5b6c4e[_0x47a5('0x27')];}_0x5686db[_0x47a5('0x17')](_0x1ea9c8)[_0x47a5('0x28')](_0x5b6c4e);};}exports[_0x47a5('0x29')]=function(_0x136b14,_0x16631f){var _0x361bfa={},_0x1127f8={},_0x11a4fa={'count':0x0,'rows':[]};var _0x3ad507=_['map'](db[_0x47a5('0x2a')]['rawAttributes'],function(_0x2ef875){return{'name':_0x2ef875[_0x47a5('0x2b')],'type':_0x2ef875[_0x47a5('0x2c')]['key']};});_0x1127f8[_0x47a5('0x2d')]=_[_0x47a5('0x2e')](_0x3ad507,_0x47a5('0x27'));_0x1127f8[_0x47a5('0x2f')]=_['keys'](_0x136b14['query']);_0x1127f8[_0x47a5('0x30')]=_[_0x47a5('0x31')](_0x1127f8['model'],_0x1127f8['query']);_0x361bfa[_0x47a5('0x32')]=_[_0x47a5('0x31')](_0x1127f8['model'],qs[_0x47a5('0x33')](_0x136b14['query'][_0x47a5('0x33')]));_0x361bfa[_0x47a5('0x32')]=_0x361bfa['attributes']['length']?_0x361bfa[_0x47a5('0x32')]:_0x1127f8['model'];if(!_0x136b14[_0x47a5('0x2f')][_0x47a5('0x34')](_0x47a5('0x35'))){_0x361bfa['limit']=qs[_0x47a5('0x1d')](_0x136b14['query']['limit']);_0x361bfa[_0x47a5('0x1a')]=qs['offset'](_0x136b14[_0x47a5('0x2f')]['offset']);}_0x361bfa[_0x47a5('0x36')]=qs[_0x47a5('0x37')](_0x136b14[_0x47a5('0x2f')][_0x47a5('0x37')]);_0x361bfa[_0x47a5('0x38')]=qs[_0x47a5('0x30')](_[_0x47a5('0x39')](_0x136b14[_0x47a5('0x2f')],_0x1127f8[_0x47a5('0x30')]),_0x3ad507);if(_0x136b14['query'][_0x47a5('0x3a')]){_0x361bfa[_0x47a5('0x38')]=_['merge'](_0x361bfa[_0x47a5('0x38')],{'$or':_[_0x47a5('0x2e')](_0x3ad507,function(_0x1d4348){if(_0x1d4348['type']!==_0x47a5('0x3b')){var _0x10f660={};_0x10f660[_0x1d4348['name']]={'$like':'%'+_0x136b14[_0x47a5('0x2f')][_0x47a5('0x3a')]+'%'};return _0x10f660;}})});}_0x361bfa=_['merge']({},_0x361bfa,_0x136b14['options']);var _0x5ebd8c={'where':_0x361bfa[_0x47a5('0x38')]};return db['ChatOfflineMessage'][_0x47a5('0x1c')](_0x5ebd8c)[_0x47a5('0x23')](function(_0x301a85){_0x11a4fa[_0x47a5('0x1c')]=_0x301a85;if(_0x136b14[_0x47a5('0x2f')][_0x47a5('0x3c')]){_0x361bfa[_0x47a5('0x3d')]=[{'all':!![]}];}return db[_0x47a5('0x2a')][_0x47a5('0x3e')](_0x361bfa);})[_0x47a5('0x23')](function(_0x280500){_0x11a4fa[_0x47a5('0x3f')]=_0x280500;return _0x11a4fa;})[_0x47a5('0x23')](respondWithFilteredResult(_0x16631f,_0x361bfa))['catch'](handleError(_0x16631f,null));};exports[_0x47a5('0x40')]=function(_0x1c36fa,_0x331474){var _0x23bd8d={'raw':!![],'where':{'id':_0x1c36fa[_0x47a5('0x41')]['id']}},_0x586f4f={};_0x586f4f['model']=_['keys'](db['ChatOfflineMessage']['rawAttributes']);_0x586f4f[_0x47a5('0x2f')]=_['keys'](_0x1c36fa[_0x47a5('0x2f')]);_0x586f4f[_0x47a5('0x30')]=_[_0x47a5('0x31')](_0x586f4f['model'],_0x586f4f[_0x47a5('0x2f')]);_0x23bd8d[_0x47a5('0x32')]=_['intersection'](_0x586f4f['model'],qs[_0x47a5('0x33')](_0x1c36fa['query'][_0x47a5('0x33')]));_0x23bd8d[_0x47a5('0x32')]=_0x23bd8d[_0x47a5('0x32')][_0x47a5('0x42')]?_0x23bd8d[_0x47a5('0x32')]:_0x586f4f[_0x47a5('0x2d')];if(_0x1c36fa[_0x47a5('0x2f')][_0x47a5('0x3c')]){_0x23bd8d[_0x47a5('0x3d')]=[{'all':!![]}];}_0x23bd8d=_[_0x47a5('0x43')]({},_0x23bd8d,_0x1c36fa[_0x47a5('0x44')]);return db[_0x47a5('0x2a')][_0x47a5('0x45')](_0x23bd8d)[_0x47a5('0x23')](handleEntityNotFound(_0x331474,null))[_0x47a5('0x23')](respondWithResult(_0x331474,null))[_0x47a5('0x46')](handleError(_0x331474,null));};exports['create']=function(_0x2d38de,_0x23bb04){return db['ChatOfflineMessage']['create'](_0x2d38de[_0x47a5('0x47')],{})['then'](respondWithResult(_0x23bb04,0xc9))[_0x47a5('0x46')](handleError(_0x23bb04,null));};exports[_0x47a5('0x22')]=function(_0x54c35f,_0x4f62d3){if(_0x54c35f[_0x47a5('0x47')]['id']){delete _0x54c35f['body']['id'];}return db[_0x47a5('0x2a')][_0x47a5('0x45')]({'where':{'id':_0x54c35f[_0x47a5('0x41')]['id']}})[_0x47a5('0x23')](handleEntityNotFound(_0x4f62d3,null))[_0x47a5('0x23')](saveUpdates(_0x54c35f[_0x47a5('0x47')],null))[_0x47a5('0x23')](respondWithResult(_0x4f62d3,null))['catch'](handleError(_0x4f62d3,null));};exports['destroy']=function(_0x2dd1db,_0x411230){return db[_0x47a5('0x48')][_0x47a5('0x3e')]({'where':{'ChatOfflineMessageId':_0x2dd1db[_0x47a5('0x41')]['id']},'raw':!![]})[_0x47a5('0x23')](function(_0x249de5){_0x249de5['forEach'](function(_0x45cca5){var _0x1c9a62=path[_0x47a5('0x49')](config['root'],_0x47a5('0x4a'),'files',_0x47a5('0x4b'),_0x47a5('0x4c'),_0x45cca5[_0x47a5('0x4d')]);var _0xf03bd5=fs['existsSync'](_0x1c9a62);if(_0xf03bd5)fs_extra[_0x47a5('0x4e')](_0x1c9a62);});})[_0x47a5('0x23')](function(){return db[_0x47a5('0x2a')][_0x47a5('0x45')]({'where':{'id':_0x2dd1db[_0x47a5('0x41')]['id']},'individualHooks':!![]});})[_0x47a5('0x23')](handleEntityNotFound(_0x411230,null))[_0x47a5('0x23')](removeEntity(_0x411230,null))['catch'](handleError(_0x411230,null));};exports[_0x47a5('0x4f')]=function(_0x43721b,_0x187d7e){return db[_0x47a5('0x2a')][_0x47a5('0x4f')]()[_0x47a5('0x23')](respondWithResult(_0x187d7e,null))['catch'](handleError(_0x187d7e,null));};
\ No newline at end of file
index 9a3a776..427fc4b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc3c9=['rimraf','../../config/environment','ChatOfflineMessage','chat_offline_messages','utf8mb4','utf8mb4_unicode_ci','lodash','util','api','bluebird','request-promise','path'];(function(_0x3ba555,_0x1d1e39){var _0x2a759a=function(_0x12bb21){while(--_0x12bb21){_0x3ba555['push'](_0x3ba555['shift']());}};_0x2a759a(++_0x1d1e39);}(_0xc3c9,0x13e));var _0x9c3c=function(_0x280918,_0x5b4cbc){_0x280918=_0x280918-0x0;var _0x5020b9=_0xc3c9[_0x280918];return _0x5020b9;};'use strict';var _=require(_0x9c3c('0x0'));var util=require(_0x9c3c('0x1'));var logger=require('../../config/logger')(_0x9c3c('0x2'));var moment=require('moment');var BPromise=require(_0x9c3c('0x3'));var rp=require(_0x9c3c('0x4'));var fs=require('fs');var path=require(_0x9c3c('0x5'));var rimraf=require(_0x9c3c('0x6'));var config=require(_0x9c3c('0x7'));var attributes=require('./chatOfflineMessage.attributes');module['exports']=function(_0xfbf592,_0x43dc85){return _0xfbf592['define'](_0x9c3c('0x8'),attributes,{'tableName':_0x9c3c('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x9c3c('0xa'),'collate':_0x9c3c('0xb')});};
\ No newline at end of file
+var _0xc9e3=['moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','ChatOfflineMessage','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api'];(function(_0x36fc2b,_0x10dd2e){var _0x151b30=function(_0x5625db){while(--_0x5625db){_0x36fc2b['push'](_0x36fc2b['shift']());}};_0x151b30(++_0x10dd2e);}(_0xc9e3,0x119));var _0x3c9e=function(_0x305bb6,_0x356733){_0x305bb6=_0x305bb6-0x0;var _0x4c8edd=_0xc9e3[_0x305bb6];return _0x4c8edd;};'use strict';var _=require(_0x3c9e('0x0'));var util=require(_0x3c9e('0x1'));var logger=require(_0x3c9e('0x2'))(_0x3c9e('0x3'));var moment=require(_0x3c9e('0x4'));var BPromise=require(_0x3c9e('0x5'));var rp=require(_0x3c9e('0x6'));var fs=require('fs');var path=require(_0x3c9e('0x7'));var rimraf=require(_0x3c9e('0x8'));var config=require(_0x3c9e('0x9'));var attributes=require('./chatOfflineMessage.attributes');module[_0x3c9e('0xa')]=function(_0x5c3c07,_0xf64afb){return _0x5c3c07[_0x3c9e('0xb')](_0x3c9e('0xc'),attributes,{'tableName':'chat_offline_messages','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x3c9e('0xd'),'collate':_0x3c9e('0xe')});};
\ No newline at end of file
index 37f1e9a..2928920 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa3b9=['error','code','message','request\x20sent','result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','info','ChatOfflineMessage,\x20%s,\x20%s','ChatOfflineMessage,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x31be68,_0x3ca6b9){var _0x39f52=function(_0x40ea91){while(--_0x40ea91){_0x31be68['push'](_0x31be68['shift']());}};_0x39f52(++_0x3ca6b9);}(_0xa3b9,0x102));var _0x9a3b=function(_0x280b65,_0x1585d8){_0x280b65=_0x280b65-0x0;var _0x5bc9b4=_0xa3b9[_0x280b65];return _0x5bc9b4;};'use strict';var _=require(_0x9a3b('0x0'));var util=require(_0x9a3b('0x1'));var moment=require(_0x9a3b('0x2'));var BPromise=require(_0x9a3b('0x3'));var rs=require(_0x9a3b('0x4'));var fs=require('fs');var Redis=require(_0x9a3b('0x5'));var db=require(_0x9a3b('0x6'))['db'];var utils=require(_0x9a3b('0x7'));var logger=require(_0x9a3b('0x8'))(_0x9a3b('0x9'));var config=require('../../config/environment');var jayson=require(_0x9a3b('0xa'));var client=jayson[_0x9a3b('0xb')][_0x9a3b('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x21dccb,_0x70da0a,_0x421c6d){return new BPromise(function(_0x17d680,_0x145732){return client[_0x9a3b('0xd')](_0x21dccb,_0x421c6d)['then'](function(_0x63c732){logger[_0x9a3b('0xe')](_0x9a3b('0xf'),_0x70da0a,'request\x20sent');logger['debug'](_0x9a3b('0x10'),_0x70da0a,'request\x20sent',JSON[_0x9a3b('0x11')](_0x63c732));if(_0x63c732[_0x9a3b('0x12')]){if(_0x63c732[_0x9a3b('0x12')][_0x9a3b('0x13')]===0x1f4){logger[_0x9a3b('0x12')]('ChatOfflineMessage,\x20%s,\x20%s',_0x70da0a,_0x63c732[_0x9a3b('0x12')][_0x9a3b('0x14')]);return _0x145732(_0x63c732['error'][_0x9a3b('0x14')]);}logger[_0x9a3b('0x12')](_0x9a3b('0xf'),_0x70da0a,_0x63c732[_0x9a3b('0x12')][_0x9a3b('0x14')]);return _0x17d680(_0x63c732[_0x9a3b('0x12')][_0x9a3b('0x14')]);}else{logger[_0x9a3b('0xe')]('ChatOfflineMessage,\x20%s,\x20%s',_0x70da0a,_0x9a3b('0x15'));_0x17d680(_0x63c732[_0x9a3b('0x16')]['message']);}})['catch'](function(_0x463e1b){logger['error'](_0x9a3b('0xf'),_0x70da0a,_0x463e1b);_0x145732(_0x463e1b);});});}
\ No newline at end of file
+var _0x5a89=['ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','then','info','ChatOfflineMessage,\x20%s,\x20%s','request\x20sent','debug','ChatOfflineMessage,\x20%s,\x20%s,\x20%s','error','message','result','catch','bluebird','randomstring'];(function(_0x4cf8ba,_0x16b977){var _0x4fc997=function(_0x5cd15f){while(--_0x5cd15f){_0x4cf8ba['push'](_0x4cf8ba['shift']());}};_0x4fc997(++_0x16b977);}(_0x5a89,0x18d));var _0x95a8=function(_0x2d34b1,_0x55c87e){_0x2d34b1=_0x2d34b1-0x0;var _0x3a08e4=_0x5a89[_0x2d34b1];return _0x3a08e4;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0x95a8('0x0'));var rs=require(_0x95a8('0x1'));var fs=require('fs');var Redis=require(_0x95a8('0x2'));var db=require(_0x95a8('0x3'))['db'];var utils=require(_0x95a8('0x4'));var logger=require(_0x95a8('0x5'))('rpc');var config=require(_0x95a8('0x6'));var jayson=require(_0x95a8('0x7'));var client=jayson['client'][_0x95a8('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x1bf295,_0x5499b8,_0x1c597e){return new BPromise(function(_0x333a7e,_0x28e831){return client['request'](_0x1bf295,_0x1c597e)[_0x95a8('0x9')](function(_0x529652){logger[_0x95a8('0xa')](_0x95a8('0xb'),_0x5499b8,_0x95a8('0xc'));logger[_0x95a8('0xd')](_0x95a8('0xe'),_0x5499b8,_0x95a8('0xc'),JSON['stringify'](_0x529652));if(_0x529652['error']){if(_0x529652[_0x95a8('0xf')]['code']===0x1f4){logger['error'](_0x95a8('0xb'),_0x5499b8,_0x529652[_0x95a8('0xf')][_0x95a8('0x10')]);return _0x28e831(_0x529652[_0x95a8('0xf')][_0x95a8('0x10')]);}logger[_0x95a8('0xf')](_0x95a8('0xb'),_0x5499b8,_0x529652[_0x95a8('0xf')]['message']);return _0x333a7e(_0x529652['error']['message']);}else{logger[_0x95a8('0xa')](_0x95a8('0xb'),_0x5499b8,_0x95a8('0xc'));_0x333a7e(_0x529652[_0x95a8('0x11')][_0x95a8('0x10')]);}})[_0x95a8('0x12')](function(_0x9ba19e){logger[_0x95a8('0xf')](_0x95a8('0xb'),_0x5499b8,_0x9ba19e);_0x28e831(_0x9ba19e);});});}
\ No newline at end of file
index 40a6b7e..0f1cd71 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2bd1=['destroy','exports','multer','util','path','connect-timeout','../../config/environment','./chatOfflineMessage.controller','get','index','/describe','isAuthenticated','describe','show','post','create','put','/:id','update','delete'];(function(_0x2bd59b,_0x5abd10){var _0x4ef8bb=function(_0x2a6e75){while(--_0x2a6e75){_0x2bd59b['push'](_0x2bd59b['shift']());}};_0x4ef8bb(++_0x5abd10);}(_0x2bd1,0x66));var _0x12bd=function(_0x286e62,_0x14b6cc){_0x286e62=_0x286e62-0x0;var _0x419530=_0x2bd1[_0x286e62];return _0x419530;};'use strict';var multer=require(_0x12bd('0x0'));var util=require(_0x12bd('0x1'));var path=require(_0x12bd('0x2'));var timeout=require(_0x12bd('0x3'));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(_0x12bd('0x4'));var controller=require(_0x12bd('0x5'));router[_0x12bd('0x6')]('/',auth['isAuthenticated'](),controller[_0x12bd('0x7')]);router['get'](_0x12bd('0x8'),auth[_0x12bd('0x9')](),controller[_0x12bd('0xa')]);router[_0x12bd('0x6')]('/:id',auth[_0x12bd('0x9')](),controller[_0x12bd('0xb')]);router[_0x12bd('0xc')]('/',auth[_0x12bd('0x9')](),controller[_0x12bd('0xd')]);router[_0x12bd('0xe')](_0x12bd('0xf'),auth['isAuthenticated'](),controller[_0x12bd('0x10')]);router[_0x12bd('0x11')](_0x12bd('0xf'),auth[_0x12bd('0x9')](),controller[_0x12bd('0x12')]);module[_0x12bd('0x13')]=router;
\ No newline at end of file
+var _0xf5a6=['describe','get','/:id','show','post','create','put','update','destroy','exports','util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./chatOfflineMessage.controller','isAuthenticated','index'];(function(_0x5b8590,_0x35bfb5){var _0xa74b6=function(_0x2c8fbc){while(--_0x2c8fbc){_0x5b8590['push'](_0x5b8590['shift']());}};_0xa74b6(++_0x35bfb5);}(_0xf5a6,0xdb));var _0x6f5a=function(_0x2b5763,_0x556298){_0x2b5763=_0x2b5763-0x0;var _0x104231=_0xf5a6[_0x2b5763];return _0x104231;};'use strict';var multer=require('multer');var util=require(_0x6f5a('0x0'));var path=require(_0x6f5a('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x6f5a('0x2')]();var fs_extra=require(_0x6f5a('0x3'));var auth=require(_0x6f5a('0x4'));var interaction=require(_0x6f5a('0x5'));var config=require('../../config/environment');var controller=require(_0x6f5a('0x6'));router['get']('/',auth[_0x6f5a('0x7')](),controller[_0x6f5a('0x8')]);router['get']('/describe',auth[_0x6f5a('0x7')](),controller[_0x6f5a('0x9')]);router[_0x6f5a('0xa')](_0x6f5a('0xb'),auth[_0x6f5a('0x7')](),controller[_0x6f5a('0xc')]);router[_0x6f5a('0xd')]('/',auth['isAuthenticated'](),controller[_0x6f5a('0xe')]);router[_0x6f5a('0xf')]('/:id',auth['isAuthenticated'](),controller[_0x6f5a('0x10')]);router['delete'](_0x6f5a('0xb'),auth[_0x6f5a('0x7')](),controller[_0x6f5a('0x11')]);module[_0x6f5a('0x12')]=router;
\ No newline at end of file
index 16b5f31..8e5374e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbbb5=['mouseOver','STRING','INTEGER','sequelize','exports','ENUM'];(function(_0x281548,_0x272151){var _0x11cdfc=function(_0x2237c){while(--_0x2237c){_0x281548['push'](_0x281548['shift']());}};_0x11cdfc(++_0x272151);}(_0xbbb5,0x19b));var _0x5bbb=function(_0x5a79a2,_0x3fa820){_0x5a79a2=_0x5a79a2-0x0;var _0x1b9470=_0xbbb5[_0x5a79a2];return _0x1b9470;};'use strict';var Sequelize=require(_0x5bbb('0x0'));module[_0x5bbb('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x5bbb('0x2')](_0x5bbb('0x3'),'timeout'),'defaultValue':'mouseOver'},'selector':{'type':Sequelize[_0x5bbb('0x4')]},'timeout':{'type':Sequelize[_0x5bbb('0x5')]}};
\ No newline at end of file
+var _0x5be7=['mouseOver','timeout','sequelize','exports','STRING'];(function(_0x3d092e,_0x24f686){var _0x45135d=function(_0x1ae2e7){while(--_0x1ae2e7){_0x3d092e['push'](_0x3d092e['shift']());}};_0x45135d(++_0x24f686);}(_0x5be7,0x18d));var _0x75be=function(_0x453d8b,_0x3c3e28){_0x453d8b=_0x453d8b-0x0;var _0x5a23c1=_0x5be7[_0x453d8b];return _0x5a23c1;};'use strict';var Sequelize=require(_0x75be('0x0'));module[_0x75be('0x1')]={'name':{'type':Sequelize[_0x75be('0x2')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x75be('0x3'),_0x75be('0x4')),'defaultValue':_0x75be('0x3')},'selector':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index 100911e..9826b0e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe0c3=['../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','apply','reject','save','destroy','then','end','error','name','send','show','model','keys','rawAttributes','query','intersection','fields','attributes','length','includeAll','include','merge','options','ChatProactiveAction','find','catch','create','body','params','eml-format','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','../../config/license/hardware'];(function(_0x416bfc,_0x35d2d1){var _0x29308d=function(_0xac43c7){while(--_0xac43c7){_0x416bfc['push'](_0x416bfc['shift']());}};_0x29308d(++_0x35d2d1);}(_0xe0c3,0xea));var _0x3e0c=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xe0c3[_0x321bb2];return _0x9c12ed;};'use strict';var emlformat=require(_0x3e0c('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x3e0c('0x1'));var jsonpatch=require(_0x3e0c('0x2'));var rp=require(_0x3e0c('0x3'));var moment=require(_0x3e0c('0x4'));var BPromise=require(_0x3e0c('0x5'));var Mustache=require(_0x3e0c('0x6'));var util=require(_0x3e0c('0x7'));var path=require(_0x3e0c('0x8'));var sox=require(_0x3e0c('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x3e0c('0xa'));var _=require(_0x3e0c('0xb'));var squel=require(_0x3e0c('0xc'));var crypto=require(_0x3e0c('0xd'));var jsforce=require(_0x3e0c('0xe'));var deskjs=require(_0x3e0c('0xf'));var toCsv=require(_0x3e0c('0x10'));var querystring=require(_0x3e0c('0x11'));var Papa=require(_0x3e0c('0x12'));var Redis=require(_0x3e0c('0x13'));var authService=require(_0x3e0c('0x14'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x3e0c('0x15'));var logger=require(_0x3e0c('0x16'))(_0x3e0c('0x17'));var utils=require(_0x3e0c('0x18'));var config=require(_0x3e0c('0x19'));var licenseUtil=require(_0x3e0c('0x1a'));var db=require(_0x3e0c('0x1b'))['db'];function respondWithStatusCode(_0x5dc732,_0x38b416){_0x38b416=_0x38b416||0xcc;return function(_0x491432){if(_0x491432){return _0x5dc732[_0x3e0c('0x1c')](_0x38b416);}return _0x5dc732[_0x3e0c('0x1d')](_0x38b416)['end']();};}function respondWithResult(_0x5f2654,_0x6d9c61){_0x6d9c61=_0x6d9c61||0xc8;return function(_0x409b2c){if(_0x409b2c){return _0x5f2654[_0x3e0c('0x1d')](_0x6d9c61)[_0x3e0c('0x1e')](_0x409b2c);}};}function respondWithFilteredResult(_0x15a269,_0x24fcf9){return function(_0x1947c2){if(_0x1947c2){var _0x274d75=typeof _0x24fcf9[_0x3e0c('0x1f')]===_0x3e0c('0x20')&&typeof _0x24fcf9[_0x3e0c('0x21')]==='undefined';var _0x58c498=_0x1947c2[_0x3e0c('0x22')];var _0x216993=_0x274d75?0x0:_0x24fcf9[_0x3e0c('0x1f')];var _0x41b19f=_0x274d75?_0x1947c2[_0x3e0c('0x22')]:_0x24fcf9[_0x3e0c('0x1f')]+_0x24fcf9['limit'];var _0x2e4a4a;if(_0x41b19f>=_0x58c498){_0x41b19f=_0x58c498;_0x2e4a4a=0xc8;}else{_0x2e4a4a=0xce;}_0x15a269[_0x3e0c('0x1d')](_0x2e4a4a);return _0x15a269[_0x3e0c('0x23')]('Content-Range',_0x216993+'-'+_0x41b19f+'/'+_0x58c498)[_0x3e0c('0x1e')](_0x1947c2);}return null;};}function patchUpdates(_0x5e3a93){return function(_0x479265){try{jsonpatch[_0x3e0c('0x24')](_0x479265,_0x5e3a93,!![]);}catch(_0x1f3bad){return BPromise[_0x3e0c('0x25')](_0x1f3bad);}return _0x479265[_0x3e0c('0x26')]();};}function saveUpdates(_0x4f8d38,_0x4cd447){return function(_0x3320c6){if(_0x3320c6){return _0x3320c6['update'](_0x4f8d38)['then'](function(_0x3fd7de){return _0x3fd7de;});}return null;};}function removeEntity(_0x1769b1,_0x44ce68){return function(_0x5bb7aa){if(_0x5bb7aa){return _0x5bb7aa[_0x3e0c('0x27')]()[_0x3e0c('0x28')](function(){_0x1769b1['status'](0xcc)[_0x3e0c('0x29')]();});}};}function handleEntityNotFound(_0x3de58b,_0x308fd5){return function(_0x1db945){if(!_0x1db945){_0x3de58b['sendStatus'](0x194);}return _0x1db945;};}function handleError(_0x412960,_0xc2f3cc){_0xc2f3cc=_0xc2f3cc||0x1f4;return function(_0x2c5fba){logger[_0x3e0c('0x2a')](_0x2c5fba['stack']);if(_0x2c5fba[_0x3e0c('0x2b')]){delete _0x2c5fba['name'];}_0x412960['status'](_0xc2f3cc)[_0x3e0c('0x2c')](_0x2c5fba);};}exports[_0x3e0c('0x2d')]=function(_0x4d3ce2,_0x16fb92){var _0x3f22b1={'raw':!![],'where':{'id':_0x4d3ce2['params']['id']}},_0x21d7a0={};_0x21d7a0[_0x3e0c('0x2e')]=_[_0x3e0c('0x2f')](db['ChatProactiveAction'][_0x3e0c('0x30')]);_0x21d7a0[_0x3e0c('0x31')]=_[_0x3e0c('0x2f')](_0x4d3ce2[_0x3e0c('0x31')]);_0x21d7a0['filters']=_[_0x3e0c('0x32')](_0x21d7a0[_0x3e0c('0x2e')],_0x21d7a0[_0x3e0c('0x31')]);_0x3f22b1['attributes']=_[_0x3e0c('0x32')](_0x21d7a0[_0x3e0c('0x2e')],qs[_0x3e0c('0x33')](_0x4d3ce2['query'][_0x3e0c('0x33')]));_0x3f22b1[_0x3e0c('0x34')]=_0x3f22b1[_0x3e0c('0x34')][_0x3e0c('0x35')]?_0x3f22b1[_0x3e0c('0x34')]:_0x21d7a0[_0x3e0c('0x2e')];if(_0x4d3ce2[_0x3e0c('0x31')][_0x3e0c('0x36')]){_0x3f22b1[_0x3e0c('0x37')]=[{'all':!![]}];}_0x3f22b1=_[_0x3e0c('0x38')]({},_0x3f22b1,_0x4d3ce2[_0x3e0c('0x39')]);return db[_0x3e0c('0x3a')][_0x3e0c('0x3b')](_0x3f22b1)[_0x3e0c('0x28')](handleEntityNotFound(_0x16fb92,null))['then'](respondWithResult(_0x16fb92,null))[_0x3e0c('0x3c')](handleError(_0x16fb92,null));};exports[_0x3e0c('0x3d')]=function(_0x1b5a4c,_0x2784e5){return db[_0x3e0c('0x3a')][_0x3e0c('0x3d')](_0x1b5a4c[_0x3e0c('0x3e')],{})[_0x3e0c('0x28')](respondWithResult(_0x2784e5,0xc9))['catch'](handleError(_0x2784e5,null));};exports['update']=function(_0x12b8b9,_0x120b35){if(_0x12b8b9[_0x3e0c('0x3e')]['id']){delete _0x12b8b9[_0x3e0c('0x3e')]['id'];}return db[_0x3e0c('0x3a')][_0x3e0c('0x3b')]({'where':{'id':_0x12b8b9['params']['id']}})[_0x3e0c('0x28')](handleEntityNotFound(_0x120b35,null))[_0x3e0c('0x28')](saveUpdates(_0x12b8b9['body'],null))['then'](respondWithResult(_0x120b35,null))['catch'](handleError(_0x120b35,null));};exports[_0x3e0c('0x27')]=function(_0x18588e,_0x3d6ed7){return db[_0x3e0c('0x3a')][_0x3e0c('0x3b')]({'where':{'id':_0x18588e[_0x3e0c('0x3f')]['id']}})[_0x3e0c('0x28')](handleEntityNotFound(_0x3d6ed7,null))[_0x3e0c('0x28')](removeEntity(_0x3d6ed7,null))[_0x3e0c('0x3c')](handleError(_0x3d6ed7,null));};
\ No newline at end of file
+var _0x5636=['save','update','then','destroy','stack','name','show','model','rawAttributes','query','keys','filters','intersection','attributes','fields','length','includeAll','include','merge','options','ChatProactiveAction','catch','create','body','find','params','eml-format','rimraf','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','set','Content-Range','reject'];(function(_0x170a40,_0x541f0a){var _0x585d75=function(_0x32d0c2){while(--_0x32d0c2){_0x170a40['push'](_0x170a40['shift']());}};_0x585d75(++_0x541f0a);}(_0x5636,0x102));var _0x6563=function(_0x3a086d,_0x29838e){_0x3a086d=_0x3a086d-0x0;var _0x225cc8=_0x5636[_0x3a086d];return _0x225cc8;};'use strict';var emlformat=require(_0x6563('0x0'));var rimraf=require(_0x6563('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x6563('0x2'));var BPromise=require(_0x6563('0x3'));var Mustache=require(_0x6563('0x4'));var util=require('util');var path=require(_0x6563('0x5'));var sox=require(_0x6563('0x6'));var csv=require(_0x6563('0x7'));var ejs=require(_0x6563('0x8'));var fs=require('fs');var fs_extra=require(_0x6563('0x9'));var _=require(_0x6563('0xa'));var squel=require(_0x6563('0xb'));var crypto=require(_0x6563('0xc'));var jsforce=require(_0x6563('0xd'));var deskjs=require(_0x6563('0xe'));var toCsv=require(_0x6563('0x7'));var querystring=require(_0x6563('0xf'));var Papa=require(_0x6563('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x6563('0x11'));var as=require(_0x6563('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0x6563('0x13'));var config=require(_0x6563('0x14'));var licenseUtil=require(_0x6563('0x15'));var db=require(_0x6563('0x16'))['db'];function respondWithStatusCode(_0x33816e,_0x2ed676){_0x2ed676=_0x2ed676||0xcc;return function(_0x31d3fa){if(_0x31d3fa){return _0x33816e[_0x6563('0x17')](_0x2ed676);}return _0x33816e[_0x6563('0x18')](_0x2ed676)['end']();};}function respondWithResult(_0xa0a0b6,_0x5e9329){_0x5e9329=_0x5e9329||0xc8;return function(_0x37131e){if(_0x37131e){return _0xa0a0b6[_0x6563('0x18')](_0x5e9329)[_0x6563('0x19')](_0x37131e);}};}function respondWithFilteredResult(_0x10d08c,_0x5af5d0){return function(_0x26f26e){if(_0x26f26e){var _0x11baa2=typeof _0x5af5d0[_0x6563('0x1a')]===_0x6563('0x1b')&&typeof _0x5af5d0['limit']===_0x6563('0x1b');var _0x589632=_0x26f26e['count'];var _0x47972a=_0x11baa2?0x0:_0x5af5d0[_0x6563('0x1a')];var _0x4f5609=_0x11baa2?_0x26f26e['count']:_0x5af5d0[_0x6563('0x1a')]+_0x5af5d0[_0x6563('0x1c')];var _0x17a29f;if(_0x4f5609>=_0x589632){_0x4f5609=_0x589632;_0x17a29f=0xc8;}else{_0x17a29f=0xce;}_0x10d08c[_0x6563('0x18')](_0x17a29f);return _0x10d08c[_0x6563('0x1d')](_0x6563('0x1e'),_0x47972a+'-'+_0x4f5609+'/'+_0x589632)[_0x6563('0x19')](_0x26f26e);}return null;};}function patchUpdates(_0x93a45){return function(_0x2a70f0){try{jsonpatch['apply'](_0x2a70f0,_0x93a45,!![]);}catch(_0x2f2905){return BPromise[_0x6563('0x1f')](_0x2f2905);}return _0x2a70f0[_0x6563('0x20')]();};}function saveUpdates(_0x5a335c,_0x293db2){return function(_0x5c37bb){if(_0x5c37bb){return _0x5c37bb[_0x6563('0x21')](_0x5a335c)[_0x6563('0x22')](function(_0x5610b0){return _0x5610b0;});}return null;};}function removeEntity(_0x5773e2,_0x3ab7f6){return function(_0x492f45){if(_0x492f45){return _0x492f45[_0x6563('0x23')]()[_0x6563('0x22')](function(){_0x5773e2[_0x6563('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0xd860d5,_0x51ff06){return function(_0x7ea857){if(!_0x7ea857){_0xd860d5[_0x6563('0x17')](0x194);}return _0x7ea857;};}function handleError(_0x5e5aeb,_0x365b16){_0x365b16=_0x365b16||0x1f4;return function(_0x28252d){logger['error'](_0x28252d[_0x6563('0x24')]);if(_0x28252d['name']){delete _0x28252d[_0x6563('0x25')];}_0x5e5aeb['status'](_0x365b16)['send'](_0x28252d);};}exports[_0x6563('0x26')]=function(_0x118d31,_0x17326c){var _0x2a1550={'raw':!![],'where':{'id':_0x118d31['params']['id']}},_0x3eb23b={};_0x3eb23b[_0x6563('0x27')]=_['keys'](db['ChatProactiveAction'][_0x6563('0x28')]);_0x3eb23b[_0x6563('0x29')]=_[_0x6563('0x2a')](_0x118d31[_0x6563('0x29')]);_0x3eb23b[_0x6563('0x2b')]=_[_0x6563('0x2c')](_0x3eb23b[_0x6563('0x27')],_0x3eb23b[_0x6563('0x29')]);_0x2a1550[_0x6563('0x2d')]=_[_0x6563('0x2c')](_0x3eb23b['model'],qs[_0x6563('0x2e')](_0x118d31[_0x6563('0x29')][_0x6563('0x2e')]));_0x2a1550[_0x6563('0x2d')]=_0x2a1550[_0x6563('0x2d')][_0x6563('0x2f')]?_0x2a1550[_0x6563('0x2d')]:_0x3eb23b['model'];if(_0x118d31[_0x6563('0x29')][_0x6563('0x30')]){_0x2a1550[_0x6563('0x31')]=[{'all':!![]}];}_0x2a1550=_[_0x6563('0x32')]({},_0x2a1550,_0x118d31[_0x6563('0x33')]);return db[_0x6563('0x34')]['find'](_0x2a1550)[_0x6563('0x22')](handleEntityNotFound(_0x17326c,null))[_0x6563('0x22')](respondWithResult(_0x17326c,null))[_0x6563('0x35')](handleError(_0x17326c,null));};exports[_0x6563('0x36')]=function(_0x2c03ac,_0x10d14a){return db[_0x6563('0x34')]['create'](_0x2c03ac[_0x6563('0x37')],{})[_0x6563('0x22')](respondWithResult(_0x10d14a,0xc9))['catch'](handleError(_0x10d14a,null));};exports[_0x6563('0x21')]=function(_0x1ff47d,_0x5b0c9f){if(_0x1ff47d['body']['id']){delete _0x1ff47d[_0x6563('0x37')]['id'];}return db[_0x6563('0x34')][_0x6563('0x38')]({'where':{'id':_0x1ff47d[_0x6563('0x39')]['id']}})['then'](handleEntityNotFound(_0x5b0c9f,null))[_0x6563('0x22')](saveUpdates(_0x1ff47d[_0x6563('0x37')],null))['then'](respondWithResult(_0x5b0c9f,null))[_0x6563('0x35')](handleError(_0x5b0c9f,null));};exports[_0x6563('0x23')]=function(_0x79b79d,_0x167220){return db[_0x6563('0x34')][_0x6563('0x38')]({'where':{'id':_0x79b79d[_0x6563('0x39')]['id']}})[_0x6563('0x22')](handleEntityNotFound(_0x167220,null))[_0x6563('0x22')](removeEntity(_0x167220,null))['catch'](handleError(_0x167220,null));};
\ No newline at end of file
index 65c8343..0cfd815 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1982=['api','moment','request-promise','path','../../config/environment','./chatProactiveAction.attributes','exports','define','ChatProactiveAction','lodash','util'];(function(_0x3a98cf,_0x237708){var _0x4ea20c=function(_0x1a8284){while(--_0x1a8284){_0x3a98cf['push'](_0x3a98cf['shift']());}};_0x4ea20c(++_0x237708);}(_0x1982,0x98));var _0x2198=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1982[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x2198('0x0'));var util=require(_0x2198('0x1'));var logger=require('../../config/logger')(_0x2198('0x2'));var moment=require(_0x2198('0x3'));var BPromise=require('bluebird');var rp=require(_0x2198('0x4'));var fs=require('fs');var path=require(_0x2198('0x5'));var rimraf=require('rimraf');var config=require(_0x2198('0x6'));var attributes=require(_0x2198('0x7'));module[_0x2198('0x8')]=function(_0x19075b,_0x22b494){return _0x19075b[_0x2198('0x9')](_0x2198('0xa'),attributes,{'tableName':'chat_proactive_actions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf583=['api','path','rimraf','../../config/environment','./chatProactiveAction.attributes','exports','ChatProactiveAction','chat_proactive_actions','lodash','../../config/logger'];(function(_0x128e3d,_0x4ed23e){var _0x2f6402=function(_0x5c4f11){while(--_0x5c4f11){_0x128e3d['push'](_0x128e3d['shift']());}};_0x2f6402(++_0x4ed23e);}(_0xf583,0x170));var _0x3f58=function(_0x1035c1,_0x2d8583){_0x1035c1=_0x1035c1-0x0;var _0x308d67=_0xf583[_0x1035c1];return _0x308d67;};'use strict';var _=require(_0x3f58('0x0'));var util=require('util');var logger=require(_0x3f58('0x1'))(_0x3f58('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x3f58('0x3'));var rimraf=require(_0x3f58('0x4'));var config=require(_0x3f58('0x5'));var attributes=require(_0x3f58('0x6'));module[_0x3f58('0x7')]=function(_0x5b57e7,_0x5332bd){return _0x5b57e7['define'](_0x3f58('0x8'),attributes,{'tableName':_0x3f58('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7d4ee6a..1a2330d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbde5=['../../config/environment','jayson/promise','http','request','then','info','ChatProactiveAction,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','rpc'];(function(_0x51b429,_0x2a84ae){var _0x105894=function(_0x569648){while(--_0x569648){_0x51b429['push'](_0x51b429['shift']());}};_0x105894(++_0x2a84ae);}(_0xbde5,0xfd));var _0x5bde=function(_0xc84b4e,_0x5dc5b1){_0xc84b4e=_0xc84b4e-0x0;var _0x260a86=_0xbde5[_0xc84b4e];return _0x260a86;};'use strict';var _=require(_0x5bde('0x0'));var util=require(_0x5bde('0x1'));var moment=require('moment');var BPromise=require(_0x5bde('0x2'));var rs=require(_0x5bde('0x3'));var fs=require('fs');var Redis=require(_0x5bde('0x4'));var db=require(_0x5bde('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x5bde('0x6'));var config=require(_0x5bde('0x7'));var jayson=require(_0x5bde('0x8'));var client=jayson['client'][_0x5bde('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5a8b78,_0x46dfc9,_0x36e15f){return new BPromise(function(_0x331ecf,_0x14d6f8){return client[_0x5bde('0xa')](_0x5a8b78,_0x36e15f)[_0x5bde('0xb')](function(_0x481a69){logger[_0x5bde('0xc')](_0x5bde('0xd'),_0x46dfc9,_0x5bde('0xe'));logger[_0x5bde('0xf')]('ChatProactiveAction,\x20%s,\x20%s,\x20%s',_0x46dfc9,_0x5bde('0xe'),JSON[_0x5bde('0x10')](_0x481a69));if(_0x481a69[_0x5bde('0x11')]){if(_0x481a69[_0x5bde('0x11')]['code']===0x1f4){logger['error']('ChatProactiveAction,\x20%s,\x20%s',_0x46dfc9,_0x481a69[_0x5bde('0x11')]['message']);return _0x14d6f8(_0x481a69[_0x5bde('0x11')]['message']);}logger[_0x5bde('0x11')](_0x5bde('0xd'),_0x46dfc9,_0x481a69[_0x5bde('0x11')]['message']);return _0x331ecf(_0x481a69[_0x5bde('0x11')][_0x5bde('0x12')]);}else{logger['info'](_0x5bde('0xd'),_0x46dfc9,_0x5bde('0xe'));_0x331ecf(_0x481a69['result'][_0x5bde('0x12')]);}})[_0x5bde('0x13')](function(_0x49d7b5){logger[_0x5bde('0x11')]('ChatProactiveAction,\x20%s,\x20%s',_0x46dfc9,_0x49d7b5);_0x14d6f8(_0x49d7b5);});});}
\ No newline at end of file
+var _0x1157=['stringify','error','code','message','result','catch','lodash','moment','bluebird','ioredis','../../config/environment','jayson/promise','client','request','then','info','ChatProactiveAction,\x20%s,\x20%s','request\x20sent','ChatProactiveAction,\x20%s,\x20%s,\x20%s'];(function(_0x9be80d,_0x13f55){var _0x562e90=function(_0x2ac04a){while(--_0x2ac04a){_0x9be80d['push'](_0x9be80d['shift']());}};_0x562e90(++_0x13f55);}(_0x1157,0x1a8));var _0x7115=function(_0x4efb39,_0x59acab){_0x4efb39=_0x4efb39-0x0;var _0x38cc38=_0x1157[_0x4efb39];return _0x38cc38;};'use strict';var _=require(_0x7115('0x0'));var util=require('util');var moment=require(_0x7115('0x1'));var BPromise=require(_0x7115('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7115('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x7115('0x4'));var jayson=require(_0x7115('0x5'));var client=jayson[_0x7115('0x6')]['http']({'port':0x232a});function respondWithRpcPromise(_0x532682,_0x4e6c50,_0x471244){return new BPromise(function(_0x4a3524,_0x127997){return client[_0x7115('0x7')](_0x532682,_0x471244)[_0x7115('0x8')](function(_0x5bdfaf){logger[_0x7115('0x9')](_0x7115('0xa'),_0x4e6c50,_0x7115('0xb'));logger['debug'](_0x7115('0xc'),_0x4e6c50,_0x7115('0xb'),JSON[_0x7115('0xd')](_0x5bdfaf));if(_0x5bdfaf[_0x7115('0xe')]){if(_0x5bdfaf['error'][_0x7115('0xf')]===0x1f4){logger[_0x7115('0xe')](_0x7115('0xa'),_0x4e6c50,_0x5bdfaf[_0x7115('0xe')][_0x7115('0x10')]);return _0x127997(_0x5bdfaf[_0x7115('0xe')][_0x7115('0x10')]);}logger['error'](_0x7115('0xa'),_0x4e6c50,_0x5bdfaf[_0x7115('0xe')][_0x7115('0x10')]);return _0x4a3524(_0x5bdfaf['error'][_0x7115('0x10')]);}else{logger[_0x7115('0x9')]('ChatProactiveAction,\x20%s,\x20%s',_0x4e6c50,'request\x20sent');_0x4a3524(_0x5bdfaf[_0x7115('0x11')][_0x7115('0x10')]);}})[_0x7115('0x12')](function(_0x5eeb27){logger[_0x7115('0xe')](_0x7115('0xa'),_0x4e6c50,_0x5eeb27);_0x127997(_0x5eeb27);});});}
\ No newline at end of file
index 4ffb85b..c5fedb2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x038b=['isAuthenticated','/:id','exports','util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','./chatProactiveAction.controller','get','show','post'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x038b,0x114));var _0xb038=function(_0x5734a4,_0x2e395c){_0x5734a4=_0x5734a4-0x0;var _0x265004=_0x038b[_0x5734a4];return _0x265004;};'use strict';var multer=require('multer');var util=require(_0xb038('0x0'));var path=require(_0xb038('0x1'));var timeout=require(_0xb038('0x2'));var express=require('express');var router=express[_0xb038('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xb038('0x4'));var interaction=require(_0xb038('0x5'));var config=require('../../config/environment');var controller=require(_0xb038('0x6'));router[_0xb038('0x7')]('/:id',auth['isAuthenticated'](),controller[_0xb038('0x8')]);router[_0xb038('0x9')]('/',auth[_0xb038('0xa')](),controller['create']);router['put'](_0xb038('0xb'),auth[_0xb038('0xa')](),controller['update']);router['delete'](_0xb038('0xb'),auth[_0xb038('0xa')](),controller['destroy']);module[_0xb038('0xc')]=router;
\ No newline at end of file
+var _0x98a8=['express','Router','fs-extra','../../components/interaction/service','../../config/environment','./chatProactiveAction.controller','get','/:id','show','isAuthenticated','put','update','delete','destroy','exports','multer','util','path','connect-timeout'];(function(_0x245afe,_0x319cde){var _0x4eefde=function(_0x15a1fa){while(--_0x15a1fa){_0x245afe['push'](_0x245afe['shift']());}};_0x4eefde(++_0x319cde);}(_0x98a8,0x12c));var _0x898a=function(_0x51d7e8,_0x397a44){_0x51d7e8=_0x51d7e8-0x0;var _0xc0e29=_0x98a8[_0x51d7e8];return _0xc0e29;};'use strict';var multer=require(_0x898a('0x0'));var util=require(_0x898a('0x1'));var path=require(_0x898a('0x2'));var timeout=require(_0x898a('0x3'));var express=require(_0x898a('0x4'));var router=express[_0x898a('0x5')]();var fs_extra=require(_0x898a('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x898a('0x7'));var config=require(_0x898a('0x8'));var controller=require(_0x898a('0x9'));router[_0x898a('0xa')](_0x898a('0xb'),auth['isAuthenticated'](),controller[_0x898a('0xc')]);router['post']('/',auth[_0x898a('0xd')](),controller['create']);router[_0x898a('0xe')](_0x898a('0xb'),auth[_0x898a('0xd')](),controller[_0x898a('0xf')]);router[_0x898a('0x10')](_0x898a('0xb'),auth[_0x898a('0xd')](),controller[_0x898a('0x11')]);module[_0x898a('0x12')]=router;
\ No newline at end of file
index 14913a6..7a1ed1b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x485e=['beepall','roundrobin','exports','STRING','INTEGER','rrmemory'];(function(_0x4cf98e,_0xba4b79){var _0x1623ac=function(_0x459bc0){while(--_0x459bc0){_0x4cf98e['push'](_0x4cf98e['shift']());}};_0x1623ac(++_0xba4b79);}(_0x485e,0xbc));var _0xe485=function(_0x3747ae,_0x408e61){_0x3747ae=_0x3747ae-0x0;var _0x339035=_0x485e[_0x3747ae];return _0x339035;};'use strict';var Sequelize=require('sequelize');module[_0xe485('0x0')]={'name':{'type':Sequelize[_0xe485('0x1')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xe485('0x1')]},'timeout':{'type':Sequelize[_0xe485('0x2')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0xe485('0x3'),_0xe485('0x4'),_0xe485('0x5'))}};
\ No newline at end of file
+var _0x0f7a=['ENUM','beepall','roundrobin','exports','STRING','name','INTEGER'];(function(_0x2c554e,_0x56ca63){var _0x4eef61=function(_0x35fd64){while(--_0x35fd64){_0x2c554e['push'](_0x2c554e['shift']());}};_0x4eef61(++_0x56ca63);}(_0x0f7a,0x6c));var _0xa0f7=function(_0x1966f8,_0x216a59){_0x1966f8=_0x1966f8-0x0;var _0x27f982=_0x0f7a[_0x1966f8];return _0x27f982;};'use strict';var Sequelize=require('sequelize');module[_0xa0f7('0x0')]={'name':{'type':Sequelize[_0xa0f7('0x1')],'unique':_0xa0f7('0x2'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xa0f7('0x1')]},'timeout':{'type':Sequelize[_0xa0f7('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xa0f7('0x4')]('rrmemory',_0xa0f7('0x5'),_0xa0f7('0x6'))}};
\ No newline at end of file
index 4669be4..7fd2b70 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb398=['jayson/promise','client','http','request','then','info','ChatQueue,\x20%s,\x20%s','request\x20sent','ChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','sendStatus','status','end','json','offset','limit','undefined','set','Content-Range','reject','save','update','destroy','stack','name','send','index','map','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','ChatQueue','count','includeAll','include','findAll','rows','show','params','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','findOne','rawAttributes','ChatQueueId','User','findAndCountAll','UserId','agent','chatPause','updatedAt','format','%s/%s','SIP','getTeams','addTeams','Team','online','voicePause','flatMap','Agents','sequelize','each','UserChatQueue','findOrCreate','removeTeams','ids','tq.TeamId','from','team_has_chat_queues','join','ut.TeamId\x20=\x20tq.TeamId','ChatQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT','every','TeamId','includes','all','union','compact','value','transaction','removeAgents','forEach','addAgents','omit','spread','emit','userChatQueue:save','isArray','userChatQueue:remove','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','ejs','fs-extra','squel','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','./chatQueue.socket','register'];(function(_0x2de49c,_0x4710da){var _0x333733=function(_0x1daa19){while(--_0x1daa19){_0x2de49c['push'](_0x2de49c['shift']());}};_0x333733(++_0x4710da);}(_0xb398,0x81));var _0x8b39=function(_0x295ac5,_0x3bc650){_0x295ac5=_0x295ac5-0x0;var _0x89ceb3=_0xb398[_0x295ac5];return _0x89ceb3;};'use strict';var emlformat=require(_0x8b39('0x0'));var rimraf=require(_0x8b39('0x1'));var zipdir=require(_0x8b39('0x2'));var jsonpatch=require(_0x8b39('0x3'));var rp=require(_0x8b39('0x4'));var moment=require('moment');var BPromise=require(_0x8b39('0x5'));var Mustache=require(_0x8b39('0x6'));var util=require(_0x8b39('0x7'));var path=require('path');var sox=require(_0x8b39('0x8'));var csv=require('to-csv');var ejs=require(_0x8b39('0x9'));var fs=require('fs');var fs_extra=require(_0x8b39('0xa'));var _=require('lodash');var squel=require(_0x8b39('0xb'));var crypto=require(_0x8b39('0xc'));var jsforce=require(_0x8b39('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x8b39('0xe'));var querystring=require(_0x8b39('0xf'));var Papa=require(_0x8b39('0x10'));var Redis=require(_0x8b39('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x8b39('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x8b39('0x13'));var utils=require(_0x8b39('0x14'));var config=require(_0x8b39('0x15'));var licenseUtil=require(_0x8b39('0x16'));var db=require(_0x8b39('0x17'))['db'];config[_0x8b39('0x18')]=_[_0x8b39('0x19')](config[_0x8b39('0x18')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x8b39('0x18')]));require(_0x8b39('0x1a'))[_0x8b39('0x1b')](socket);var jayson=require(_0x8b39('0x1c'));var client=jayson[_0x8b39('0x1d')][_0x8b39('0x1e')]({'port':0x232a});function respondWithRpcPromise(_0x5a6952,_0x7c1d26,_0x10c5e7,_0x49ef89){return new BPromise(function(_0x5472f0,_0x2b4c54){var _0x54fef7=_0x49ef89||client;return _0x54fef7[_0x8b39('0x1f')](_0x5a6952,_0x10c5e7)[_0x8b39('0x20')](function(_0x4b1dc6){logger[_0x8b39('0x21')](_0x8b39('0x22'),_0x7c1d26,_0x8b39('0x23'));logger['debug'](_0x8b39('0x24'),_0x7c1d26,_0x8b39('0x23'),JSON[_0x8b39('0x25')](_0x4b1dc6));if(_0x4b1dc6[_0x8b39('0x26')]){if(_0x4b1dc6[_0x8b39('0x26')]['code']===0x1f4){logger[_0x8b39('0x26')](_0x8b39('0x22'),_0x7c1d26,_0x4b1dc6['error']['message']);return _0x2b4c54(_0x4b1dc6[_0x8b39('0x26')]['message']);}logger[_0x8b39('0x26')](_0x8b39('0x22'),_0x7c1d26,_0x4b1dc6['error'][_0x8b39('0x27')]);return _0x5472f0(_0x4b1dc6[_0x8b39('0x26')][_0x8b39('0x27')]);}else{logger[_0x8b39('0x21')](_0x8b39('0x22'),_0x7c1d26,'request\x20sent');_0x5472f0(_0x4b1dc6[_0x8b39('0x28')][_0x8b39('0x27')]);}})[_0x8b39('0x29')](function(_0x4a2d2f){logger[_0x8b39('0x26')](_0x8b39('0x22'),_0x7c1d26,_0x4a2d2f);_0x2b4c54(_0x4a2d2f);});});}function respondWithStatusCode(_0x452150,_0x236e8d){_0x236e8d=_0x236e8d||0xcc;return function(_0x8ae664){if(_0x8ae664){return _0x452150[_0x8b39('0x2a')](_0x236e8d);}return _0x452150[_0x8b39('0x2b')](_0x236e8d)[_0x8b39('0x2c')]();};}function respondWithResult(_0x43579a,_0x4f2c7c){_0x4f2c7c=_0x4f2c7c||0xc8;return function(_0x68e164){if(_0x68e164){return _0x43579a['status'](_0x4f2c7c)[_0x8b39('0x2d')](_0x68e164);}};}function respondWithFilteredResult(_0x463533,_0x14eb1c){return function(_0x17dd7f){if(_0x17dd7f){var _0x358e14=typeof _0x14eb1c[_0x8b39('0x2e')]==='undefined'&&typeof _0x14eb1c[_0x8b39('0x2f')]===_0x8b39('0x30');var _0xd19911=_0x17dd7f['count'];var _0x1e9dae=_0x358e14?0x0:_0x14eb1c[_0x8b39('0x2e')];var _0x2b517e=_0x358e14?_0x17dd7f['count']:_0x14eb1c['offset']+_0x14eb1c['limit'];var _0x1064c7;if(_0x2b517e>=_0xd19911){_0x2b517e=_0xd19911;_0x1064c7=0xc8;}else{_0x1064c7=0xce;}_0x463533[_0x8b39('0x2b')](_0x1064c7);return _0x463533[_0x8b39('0x31')](_0x8b39('0x32'),_0x1e9dae+'-'+_0x2b517e+'/'+_0xd19911)[_0x8b39('0x2d')](_0x17dd7f);}return null;};}function patchUpdates(_0x34451c){return function(_0x244698){try{jsonpatch['apply'](_0x244698,_0x34451c,!![]);}catch(_0x31760a){return BPromise[_0x8b39('0x33')](_0x31760a);}return _0x244698[_0x8b39('0x34')]();};}function saveUpdates(_0x15beac,_0x484422){return function(_0x5d872f){if(_0x5d872f){return _0x5d872f[_0x8b39('0x35')](_0x15beac)[_0x8b39('0x20')](function(_0x1382ea){return _0x1382ea;});}return null;};}function removeEntity(_0x510797,_0x1ea219){return function(_0x4ccd0a){if(_0x4ccd0a){return _0x4ccd0a['destroy']()[_0x8b39('0x20')](function(){var _0x334183=_0x4ccd0a['get']({'plain':!![]});var _0x184fd4='ChatQueues';return db['UserProfileResource'][_0x8b39('0x36')]({'where':{'type':_0x184fd4,'resourceId':_0x334183['id']}})[_0x8b39('0x20')](function(){return _0x4ccd0a;});})['then'](function(){_0x510797[_0x8b39('0x2b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x35797e,_0x1b5011){return function(_0x447f34){if(!_0x447f34){_0x35797e[_0x8b39('0x2a')](0x194);}return _0x447f34;};}function handleError(_0x7b6389,_0x458c82){_0x458c82=_0x458c82||0x1f4;return function(_0x409494){logger['error'](_0x409494[_0x8b39('0x37')]);if(_0x409494[_0x8b39('0x38')]){delete _0x409494[_0x8b39('0x38')];}_0x7b6389[_0x8b39('0x2b')](_0x458c82)[_0x8b39('0x39')](_0x409494);};}exports[_0x8b39('0x3a')]=function(_0x49e729,_0xfdd5c){var _0x4800b3={},_0x6a0f0b={},_0x3be31f={'count':0x0,'rows':[]};var _0x58147c=_[_0x8b39('0x3b')](db['ChatQueue']['rawAttributes'],function(_0x4b9ae5){return{'name':_0x4b9ae5[_0x8b39('0x3c')],'type':_0x4b9ae5[_0x8b39('0x3d')][_0x8b39('0x3e')]};});_0x6a0f0b[_0x8b39('0x3f')]=_['map'](_0x58147c,_0x8b39('0x38'));_0x6a0f0b[_0x8b39('0x40')]=_[_0x8b39('0x41')](_0x49e729[_0x8b39('0x40')]);_0x6a0f0b['filters']=_[_0x8b39('0x42')](_0x6a0f0b[_0x8b39('0x3f')],_0x6a0f0b[_0x8b39('0x40')]);_0x4800b3[_0x8b39('0x43')]=_['intersection'](_0x6a0f0b['model'],qs[_0x8b39('0x44')](_0x49e729[_0x8b39('0x40')]['fields']));_0x4800b3[_0x8b39('0x43')]=_0x4800b3[_0x8b39('0x43')][_0x8b39('0x45')]?_0x4800b3[_0x8b39('0x43')]:_0x6a0f0b[_0x8b39('0x3f')];if(!_0x49e729[_0x8b39('0x40')][_0x8b39('0x46')](_0x8b39('0x47'))){_0x4800b3[_0x8b39('0x2f')]=qs[_0x8b39('0x2f')](_0x49e729[_0x8b39('0x40')][_0x8b39('0x2f')]);_0x4800b3[_0x8b39('0x2e')]=qs[_0x8b39('0x2e')](_0x49e729[_0x8b39('0x40')][_0x8b39('0x2e')]);}_0x4800b3[_0x8b39('0x48')]=qs['sort'](_0x49e729['query'][_0x8b39('0x49')]);_0x4800b3[_0x8b39('0x4a')]=qs[_0x8b39('0x4b')](_[_0x8b39('0x4c')](_0x49e729['query'],_0x6a0f0b[_0x8b39('0x4b')]),_0x58147c);if(_0x49e729[_0x8b39('0x40')][_0x8b39('0x4d')]){_0x4800b3[_0x8b39('0x4a')]=_[_0x8b39('0x4e')](_0x4800b3[_0x8b39('0x4a')],{'$or':_[_0x8b39('0x3b')](_0x58147c,function(_0x5a878f){if(_0x5a878f[_0x8b39('0x3d')]!==_0x8b39('0x4f')){var _0x2e5bd3={};_0x2e5bd3[_0x5a878f[_0x8b39('0x38')]]={'$like':'%'+_0x49e729[_0x8b39('0x40')][_0x8b39('0x4d')]+'%'};return _0x2e5bd3;}})});}_0x4800b3=_[_0x8b39('0x4e')]({},_0x4800b3,_0x49e729[_0x8b39('0x50')]);var _0x2af518={'where':_0x4800b3[_0x8b39('0x4a')]};return db[_0x8b39('0x51')][_0x8b39('0x52')](_0x2af518)[_0x8b39('0x20')](function(_0x50b538){_0x3be31f[_0x8b39('0x52')]=_0x50b538;if(_0x49e729['query'][_0x8b39('0x53')]){_0x4800b3[_0x8b39('0x54')]=[{'all':!![]}];}return db[_0x8b39('0x51')][_0x8b39('0x55')](_0x4800b3);})['then'](function(_0x89f5){_0x3be31f[_0x8b39('0x56')]=_0x89f5;return _0x3be31f;})[_0x8b39('0x20')](respondWithFilteredResult(_0xfdd5c,_0x4800b3))['catch'](handleError(_0xfdd5c,null));};exports[_0x8b39('0x57')]=function(_0x134fd5,_0x4413ae){var _0x31a350={'raw':!![],'where':{'id':_0x134fd5[_0x8b39('0x58')]['id']}},_0xe77196={};_0xe77196[_0x8b39('0x3f')]=_[_0x8b39('0x41')](db[_0x8b39('0x51')]['rawAttributes']);_0xe77196[_0x8b39('0x40')]=_[_0x8b39('0x41')](_0x134fd5['query']);_0xe77196[_0x8b39('0x4b')]=_[_0x8b39('0x42')](_0xe77196[_0x8b39('0x3f')],_0xe77196[_0x8b39('0x40')]);_0x31a350[_0x8b39('0x43')]=_[_0x8b39('0x42')](_0xe77196[_0x8b39('0x3f')],qs[_0x8b39('0x44')](_0x134fd5[_0x8b39('0x40')][_0x8b39('0x44')]));_0x31a350[_0x8b39('0x43')]=_0x31a350['attributes']['length']?_0x31a350[_0x8b39('0x43')]:_0xe77196[_0x8b39('0x3f')];if(_0x134fd5[_0x8b39('0x40')][_0x8b39('0x53')]){_0x31a350[_0x8b39('0x54')]=[{'all':!![]}];}_0x31a350=_[_0x8b39('0x4e')]({},_0x31a350,_0x134fd5[_0x8b39('0x50')]);return db['ChatQueue'][_0x8b39('0x59')](_0x31a350)[_0x8b39('0x20')](handleEntityNotFound(_0x4413ae,null))[_0x8b39('0x20')](respondWithResult(_0x4413ae,null))[_0x8b39('0x29')](handleError(_0x4413ae,null));};exports[_0x8b39('0x5a')]=function(_0x2cb594,_0x2d3384){return db[_0x8b39('0x51')]['create'](_0x2cb594[_0x8b39('0x5b')],{})[_0x8b39('0x20')](function(_0x33ec86){var _0x1ae6fc=_0x2cb594[_0x8b39('0x5c')][_0x8b39('0x5d')]({'plain':!![]});if(!_0x1ae6fc)throw new Error(_0x8b39('0x5e'));if(_0x1ae6fc[_0x8b39('0x5f')]===_0x8b39('0x5c')){var _0x5f2e4b=_0x33ec86['get']({'plain':!![]});var _0x5acdce='ChatQueues';return db[_0x8b39('0x60')][_0x8b39('0x59')]({'where':{'name':_0x5acdce,'userProfileId':_0x1ae6fc[_0x8b39('0x61')]},'raw':!![]})[_0x8b39('0x20')](function(_0x322eb5){if(_0x322eb5&&_0x322eb5[_0x8b39('0x62')]===0x0){return db[_0x8b39('0x63')][_0x8b39('0x5a')]({'name':_0x5f2e4b[_0x8b39('0x38')],'resourceId':_0x5f2e4b['id'],'type':_0x322eb5[_0x8b39('0x38')],'sectionId':_0x322eb5['id']},{})[_0x8b39('0x20')](function(){return _0x33ec86;});}else{return _0x33ec86;}})[_0x8b39('0x29')](function(_0x21c59f){logger[_0x8b39('0x26')](_0x8b39('0x64'),_0x21c59f);throw _0x21c59f;});}return _0x33ec86;})[_0x8b39('0x20')](respondWithResult(_0x2d3384,0xc9))[_0x8b39('0x29')](handleError(_0x2d3384,null));};exports[_0x8b39('0x35')]=function(_0x4f24f7,_0x402472){if(_0x4f24f7['body']['id']){delete _0x4f24f7[_0x8b39('0x5b')]['id'];}return db[_0x8b39('0x51')][_0x8b39('0x59')]({'where':{'id':_0x4f24f7[_0x8b39('0x58')]['id']}})[_0x8b39('0x20')](handleEntityNotFound(_0x402472,null))[_0x8b39('0x20')](saveUpdates(_0x4f24f7[_0x8b39('0x5b')],null))[_0x8b39('0x20')](respondWithResult(_0x402472,null))['catch'](handleError(_0x402472,null));};exports['destroy']=function(_0x212ca1,_0x3af191){return db['ChatQueue']['find']({'where':{'id':_0x212ca1[_0x8b39('0x58')]['id']}})[_0x8b39('0x20')](handleEntityNotFound(_0x3af191,null))['then'](removeEntity(_0x3af191,null))['catch'](handleError(_0x3af191,null));};exports[_0x8b39('0x65')]=function(_0x382a85,_0x289067){return db[_0x8b39('0x51')][_0x8b39('0x65')]()[_0x8b39('0x20')](respondWithResult(_0x289067,null))[_0x8b39('0x29')](handleError(_0x289067,null));};exports[_0x8b39('0x66')]=function(_0x4c844d,_0x4c1dd9,_0x4ebe39){var _0xf5410b={'raw':!![],'where':{}},_0x2d9279={},_0x1a32cc;return db[_0x8b39('0x51')][_0x8b39('0x67')]({'where':{'id':_0x4c844d[_0x8b39('0x58')]['id']}})[_0x8b39('0x20')](handleEntityNotFound(_0x4c1dd9,null))[_0x8b39('0x20')](function(_0x407cff){if(_0x407cff){_0x1a32cc=_0x407cff['get']({'plain':!![]});_0x2d9279[_0x8b39('0x3f')]=_[_0x8b39('0x41')](db['UserChatQueue'][_0x8b39('0x68')]);_0x2d9279[_0x8b39('0x40')]=_['keys'](_0x4c844d['query']);_0x2d9279[_0x8b39('0x4b')]=_[_0x8b39('0x42')](_0x2d9279[_0x8b39('0x3f')],_0x2d9279[_0x8b39('0x40')]);_0xf5410b[_0x8b39('0x43')]=_[_0x8b39('0x42')](_0x2d9279[_0x8b39('0x3f')],qs[_0x8b39('0x44')](_0x4c844d[_0x8b39('0x40')][_0x8b39('0x44')]));_0xf5410b[_0x8b39('0x43')]=_0xf5410b[_0x8b39('0x43')][_0x8b39('0x45')]?_0xf5410b[_0x8b39('0x43')]:_0x2d9279[_0x8b39('0x3f')];if(!_0x4c844d[_0x8b39('0x40')][_0x8b39('0x46')](_0x8b39('0x47'))){_0xf5410b[_0x8b39('0x2f')]=qs[_0x8b39('0x2f')](_0x4c844d['query'][_0x8b39('0x2f')]);_0xf5410b['offset']=qs[_0x8b39('0x2e')](_0x4c844d['query'][_0x8b39('0x2e')]);}_0xf5410b[_0x8b39('0x48')]=qs[_0x8b39('0x49')](_0x4c844d[_0x8b39('0x40')][_0x8b39('0x49')]);_0xf5410b[_0x8b39('0x4a')]=qs['filters'](_['pick'](_0x4c844d[_0x8b39('0x40')],_0x2d9279[_0x8b39('0x4b')]));_0xf5410b['where'][_0x8b39('0x69')]=_0x407cff['id'];if(_0x4c844d[_0x8b39('0x40')][_0x8b39('0x4d')]){_0xf5410b[_0x8b39('0x4a')]=_[_0x8b39('0x4e')](_0xf5410b['where'],{'$or':_[_0x8b39('0x3b')](_0xf5410b[_0x8b39('0x43')],function(_0x1f0170){var _0x588fc9={};_0x588fc9[_0x1f0170]={'$like':'%'+_0x4c844d['query'][_0x8b39('0x4d')]+'%'};return _0x588fc9;})});}_0xf5410b=_[_0x8b39('0x4e')]({},_0xf5410b,_0x4c844d[_0x8b39('0x50')]);return db['UserChatQueue'][_0x8b39('0x55')](_0xf5410b);}})[_0x8b39('0x20')](function(_0x455d94){if(_0x455d94){return db[_0x8b39('0x6a')][_0x8b39('0x6b')]({'where':{'id':_['map'](_0x455d94,_0x8b39('0x6c')),'role':_0x8b39('0x6d')},'attributes':['id',_0x8b39('0x38'),_0x8b39('0x6e'),_0x8b39('0x6f'),'createdAt']});}})[_0x8b39('0x20')](function(_0xeff6c2){if(_0xeff6c2){return{'count':_0xeff6c2[_0x8b39('0x52')],'rows':_[_0x8b39('0x3b')](_0xeff6c2[_0x8b39('0x56')],function(_0x319705){return{'membername':_0x319705['name'],'UserId':_0x319705['id'],'queue_name':_0x1a32cc[_0x8b39('0x38')],'ChatQueueId':_0x1a32cc['id'],'interface':util[_0x8b39('0x70')](_0x8b39('0x71'),_0x8b39('0x72'),_0x319705[_0x8b39('0x38')]),'penalty':0x0,'paused':_0x319705[_0x8b39('0x6e')],'createdAt':_0x319705['createdAt'],'updatedAt':_0x319705[_0x8b39('0x6f')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x8b39('0x20')](respondWithFilteredResult(_0x4c1dd9,_0xf5410b))[_0x8b39('0x29')](handleError(_0x4c1dd9,null));};exports['getTeams']=function(_0x41d2d4,_0x6ffdcc,_0x21ab02){var _0x3861da={};var _0x331b0f={};var _0x3ab8c8;var _0x1ac023;return db[_0x8b39('0x51')]['findOne']({'where':{'id':_0x41d2d4[_0x8b39('0x58')]['id']}})[_0x8b39('0x20')](handleEntityNotFound(_0x6ffdcc,null))[_0x8b39('0x20')](function(_0x10132c){if(_0x10132c){_0x3ab8c8=_0x10132c;_0x331b0f[_0x8b39('0x3f')]=_[_0x8b39('0x41')](db['Team'][_0x8b39('0x68')]);_0x331b0f[_0x8b39('0x40')]=_[_0x8b39('0x41')](_0x41d2d4['query']);_0x331b0f[_0x8b39('0x4b')]=_['intersection'](_0x331b0f[_0x8b39('0x3f')],_0x331b0f['query']);_0x3861da[_0x8b39('0x43')]=_[_0x8b39('0x42')](_0x331b0f['model'],qs[_0x8b39('0x44')](_0x41d2d4[_0x8b39('0x40')][_0x8b39('0x44')]));_0x3861da[_0x8b39('0x43')]=_0x3861da['attributes'][_0x8b39('0x45')]?_0x3861da[_0x8b39('0x43')]:_0x331b0f['model'];_0x3861da['order']=qs[_0x8b39('0x49')](_0x41d2d4[_0x8b39('0x40')][_0x8b39('0x49')]);_0x3861da[_0x8b39('0x4a')]=qs['filters'](_[_0x8b39('0x4c')](_0x41d2d4['query'],_0x331b0f[_0x8b39('0x4b')]));if(_0x41d2d4['query']['filter']){_0x3861da[_0x8b39('0x4a')]=_[_0x8b39('0x4e')](_0x3861da[_0x8b39('0x4a')],{'$or':_[_0x8b39('0x3b')](_0x3861da['attributes'],function(_0x4de916){var _0x468530={};_0x468530[_0x4de916]={'$like':'%'+_0x41d2d4[_0x8b39('0x40')]['filter']+'%'};return _0x468530;})});}_0x3861da=_[_0x8b39('0x4e')]({},_0x3861da,_0x41d2d4[_0x8b39('0x50')]);return _0x3ab8c8[_0x8b39('0x73')](_0x3861da);}})[_0x8b39('0x20')](function(_0x3d4df1){if(_0x3d4df1){_0x1ac023=_0x3d4df1[_0x8b39('0x45')];if(!_0x41d2d4[_0x8b39('0x40')]['hasOwnProperty'](_0x8b39('0x47'))){_0x3861da[_0x8b39('0x2f')]=qs[_0x8b39('0x2f')](_0x41d2d4[_0x8b39('0x40')][_0x8b39('0x2f')]);_0x3861da[_0x8b39('0x2e')]=qs['offset'](_0x41d2d4[_0x8b39('0x40')]['offset']);}return _0x3ab8c8['getTeams'](_0x3861da);}})['then'](function(_0x577d9b){if(_0x577d9b){return _0x577d9b?{'count':_0x1ac023,'rows':_0x577d9b}:null;}})[_0x8b39('0x20')](respondWithResult(_0x6ffdcc,null))[_0x8b39('0x29')](handleError(_0x6ffdcc,null));};exports[_0x8b39('0x74')]=function(_0x17b83f,_0x40573a,_0x5a923e){var _0x1eb0b5=_0x17b83f[_0x8b39('0x5b')]['ids'];return db[_0x8b39('0x75')][_0x8b39('0x55')]({'where':{'id':_0x1eb0b5},'attributes':['id'],'include':[{'model':db[_0x8b39('0x6a')],'as':'Agents','attributes':['id',_0x8b39('0x38'),_0x8b39('0x76'),_0x8b39('0x77'),'interface'],'raw':!![]}]})['then'](function(_0x1e4f6a){if(_0x1e4f6a){var _0x1bb412=_[_0x8b39('0x78')](_0x1e4f6a,function(_0x1060f0){var _0xb7c649=_0x1060f0[_0x8b39('0x5d')]({'plain':!![]});return _0xb7c649[_0x8b39('0x79')];});return db[_0x8b39('0x51')][_0x8b39('0x59')]({'where':{'id':_0x17b83f[_0x8b39('0x58')]['id']}})[_0x8b39('0x20')](function(_0x5bd317){return db[_0x8b39('0x7a')]['transaction'](function(_0x35c342){return _0x5bd317[_0x8b39('0x74')](_0x1eb0b5,{'transaction':_0x35c342})[_0x8b39('0x20')](function(){return BPromise[_0x8b39('0x7b')](_0x1bb412,function(_0x3c2416){return db[_0x8b39('0x7c')][_0x8b39('0x7d')]({'where':{'UserId':_0x3c2416['id'],'ChatQueueId':_0x17b83f['params']['id']},'transaction':_0x35c342});});})['then'](function(){_0x1bb412['forEach'](function(_0x5ee38a){socket['emit']('userChatQueue:save',{'UserId':_0x5ee38a['id'],'ChatQueueId':_0x5bd317['id']});});});});});}})[_0x8b39('0x20')](respondWithStatusCode(_0x40573a,null))['catch'](handleError(_0x40573a,null));};exports[_0x8b39('0x7e')]=function(_0xf8342f,_0xac7049,_0x680f65){return db[_0x8b39('0x75')][_0x8b39('0x55')]({'where':{'id':_0xf8342f['query'][_0x8b39('0x7f')]},'attributes':['id'],'include':[{'model':db[_0x8b39('0x6a')],'as':_0x8b39('0x79'),'attributes':['id'],'raw':!![]}]})[_0x8b39('0x20')](handleEntityNotFound(_0xac7049,null))['then'](function(_0x5e34d1){var _0x4ad271=_[_0x8b39('0x3b')](_0x5e34d1,'id');var _0x4fcbac=[];var _0x543604=[];var _0x313740=squel['select']();_0x313740['field'](_0x8b39('0x80'))[_0x8b39('0x81')](_0x8b39('0x82'),'tq')[_0x8b39('0x83')]('user_has_teams','ut',_0x8b39('0x84'))[_0x8b39('0x4a')](_0x8b39('0x85'),_0xf8342f[_0x8b39('0x58')]['id']);for(var _0x192825=0x0;_0x192825<_0x5e34d1[_0x8b39('0x45')];_0x192825+=0x1){let _0xdf3454=_0x5e34d1[_0x192825];for(var _0x510d8e=0x0;_0x510d8e<_0xdf3454['Agents']['length'];_0x510d8e+=0x1){let _0x3bdc08=_0xdf3454[_0x8b39('0x79')][_0x510d8e];var _0x21c6b3=_0x313740['clone']();_0x21c6b3[_0x8b39('0x4a')](_0x8b39('0x86'),_0x3bdc08['id']);_0x543604[_0x8b39('0x87')](db[_0x8b39('0x7a')][_0x8b39('0x40')](_0x21c6b3[_0x8b39('0x88')](),{'type':db[_0x8b39('0x7a')][_0x8b39('0x89')][_0x8b39('0x8a')]})[_0x8b39('0x20')](function(_0x3e4fbd){if(_0x3e4fbd[_0x8b39('0x45')]===0x1){return _0x3bdc08['id'];}else{var _0x2c5aaa=_[_0x8b39('0x8b')](_[_0x8b39('0x3b')](_0x3e4fbd,_0x8b39('0x8c')),function(_0x266afd){return _[_0x8b39('0x8d')](_0x4ad271,_0x266afd);});if(_0x2c5aaa){return _0x3bdc08['id'];}}}));}}return BPromise[_0x8b39('0x8e')](_0x543604)[_0x8b39('0x20')](function(_0x1f66c7){_0x4fcbac=_(_0x4fcbac)[_0x8b39('0x8f')](_0x1f66c7)[_0x8b39('0x90')]()[_0x8b39('0x91')]();return db[_0x8b39('0x51')]['find']({'where':{'id':_0xf8342f['params']['id']}})['then'](function(_0x352f2b){return db['sequelize'][_0x8b39('0x92')](function(_0x53cf41){return _0x352f2b[_0x8b39('0x7e')](_0xf8342f[_0x8b39('0x40')][_0x8b39('0x7f')],{'transaction':_0x53cf41})[_0x8b39('0x20')](function(){if(!_['isEmpty'](_0x4fcbac)){return _0x352f2b[_0x8b39('0x93')](_0x4fcbac,{'transaction':_0x53cf41});}})[_0x8b39('0x20')](function(){_0x4fcbac[_0x8b39('0x94')](function(_0x5063ef){socket['emit']('userChatQueue:remove',{'UserId':_0x5063ef,'ChatQueueId':_0x352f2b['id']});});});});});});})[_0x8b39('0x20')](respondWithStatusCode(_0xac7049,null))[_0x8b39('0x29')](handleError(_0xac7049,null));};exports['addAgents']=function(_0x1ad550,_0x57c997,_0x478f5a){return db[_0x8b39('0x51')][_0x8b39('0x59')]({'where':{'id':_0x1ad550[_0x8b39('0x58')]['id']}})[_0x8b39('0x20')](handleEntityNotFound(_0x57c997,null))['then'](function(_0x2abe6d){if(_0x2abe6d){return _0x2abe6d[_0x8b39('0x95')](_0x1ad550[_0x8b39('0x5b')][_0x8b39('0x7f')],_[_0x8b39('0x96')](_0x1ad550[_0x8b39('0x5b')],['ids','id'])||{})[_0x8b39('0x97')](function(_0xf37962){for(var _0x59b16c=0x0;_0x59b16c<_0x1ad550[_0x8b39('0x5b')][_0x8b39('0x7f')][_0x8b39('0x45')];_0x59b16c+=0x1){socket[_0x8b39('0x98')](_0x8b39('0x99'),{'UserId':Number(_0x1ad550[_0x8b39('0x5b')][_0x8b39('0x7f')][_0x59b16c]),'ChatQueueId':Number(_0x1ad550['params']['id'])});}return _0xf37962;});}})['then'](respondWithResult(_0x57c997,null))[_0x8b39('0x29')](handleError(_0x57c997,null));};exports[_0x8b39('0x93')]=function(_0x1d4170,_0x364b30,_0x25f819){return db[_0x8b39('0x51')][_0x8b39('0x59')]({'where':{'id':_0x1d4170[_0x8b39('0x58')]['id']}})[_0x8b39('0x20')](handleEntityNotFound(_0x364b30,null))[_0x8b39('0x20')](function(_0x151bcf){if(_0x151bcf){return _0x151bcf[_0x8b39('0x93')](_0x1d4170[_0x8b39('0x40')]['ids'])['then'](function(){if(_[_0x8b39('0x9a')](_0x1d4170[_0x8b39('0x40')][_0x8b39('0x7f')])){for(var _0x226e69=0x0;_0x226e69<_0x1d4170['query'][_0x8b39('0x7f')][_0x8b39('0x45')];_0x226e69+=0x1){socket[_0x8b39('0x98')](_0x8b39('0x9b'),{'UserId':Number(_0x1d4170['query'][_0x8b39('0x7f')][_0x226e69]),'ChatQueueId':Number(_0x1d4170[_0x8b39('0x58')]['id'])});}}else{socket[_0x8b39('0x98')]('userChatQueue:remove',{'UserId':Number(_0x1d4170[_0x8b39('0x40')][_0x8b39('0x7f')]),'ChatQueueId':Number(_0x1d4170[_0x8b39('0x58')]['id'])});}});}})['then'](respondWithStatusCode(_0x364b30,null))[_0x8b39('0x29')](handleError(_0x364b30,null));};exports['getAgents']=function(_0x1fe1c1,_0x2f5d64,_0x532277){var _0x23c3b3={};var _0x13b3c5={};var _0x33af50;var _0x3a0ebf;return db[_0x8b39('0x51')][_0x8b39('0x67')]({'where':{'id':_0x1fe1c1[_0x8b39('0x58')]['id']}})[_0x8b39('0x20')](handleEntityNotFound(_0x2f5d64,null))['then'](function(_0x379a16){if(_0x379a16){_0x33af50=_0x379a16;_0x13b3c5[_0x8b39('0x3f')]=_[_0x8b39('0x41')](db[_0x8b39('0x6a')]['rawAttributes']);_0x13b3c5[_0x8b39('0x40')]=_[_0x8b39('0x41')](_0x1fe1c1[_0x8b39('0x40')]);_0x13b3c5['filters']=_[_0x8b39('0x42')](_0x13b3c5[_0x8b39('0x3f')],_0x13b3c5[_0x8b39('0x40')]);_0x23c3b3[_0x8b39('0x43')]=_['intersection'](_0x13b3c5['model'],qs[_0x8b39('0x44')](_0x1fe1c1[_0x8b39('0x40')][_0x8b39('0x44')]));_0x23c3b3[_0x8b39('0x43')]=_0x23c3b3['attributes'][_0x8b39('0x45')]?_0x23c3b3[_0x8b39('0x43')]:_0x13b3c5['model'];_0x23c3b3['order']=qs[_0x8b39('0x49')](_0x1fe1c1['query'][_0x8b39('0x49')]);_0x23c3b3['where']=qs['filters'](_[_0x8b39('0x4c')](_0x1fe1c1[_0x8b39('0x40')],_0x13b3c5['filters']));if(_0x1fe1c1[_0x8b39('0x40')][_0x8b39('0x4d')]){_0x23c3b3[_0x8b39('0x4a')]=_[_0x8b39('0x4e')](_0x23c3b3[_0x8b39('0x4a')],{'$or':_[_0x8b39('0x3b')](_0x23c3b3['attributes'],function(_0xe5263b){var _0x4338b8={};_0x4338b8[_0xe5263b]={'$like':'%'+_0x1fe1c1[_0x8b39('0x40')][_0x8b39('0x4d')]+'%'};return _0x4338b8;})});}_0x23c3b3=_[_0x8b39('0x4e')]({},_0x23c3b3,_0x1fe1c1[_0x8b39('0x50')]);return _0x33af50[_0x8b39('0x9c')](_0x23c3b3);}})[_0x8b39('0x20')](function(_0x48d3e9){if(_0x48d3e9){_0x3a0ebf=_0x48d3e9[_0x8b39('0x45')];if(!_0x1fe1c1[_0x8b39('0x40')]['hasOwnProperty'](_0x8b39('0x47'))){_0x23c3b3['limit']=qs[_0x8b39('0x2f')](_0x1fe1c1['query'][_0x8b39('0x2f')]);_0x23c3b3['offset']=qs[_0x8b39('0x2e')](_0x1fe1c1[_0x8b39('0x40')]['offset']);}return _0x33af50[_0x8b39('0x9c')](_0x23c3b3);}})[_0x8b39('0x20')](function(_0xb0be1d){if(_0xb0be1d){return _0xb0be1d?{'count':_0x3a0ebf,'rows':_0xb0be1d}:null;}})['then'](respondWithResult(_0x2f5d64,null))[_0x8b39('0x29')](handleError(_0x2f5d64,null));};
\ No newline at end of file
+var _0xf7c1=['../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','http','request','info','ChatQueue,\x20%s,\x20%s','request\x20sent','debug','ChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','sendStatus','status','end','json','offset','undefined','limit','set','Content-Range','apply','reject','save','update','destroy','then','get','UserProfileResource','stack','name','rawAttributes','fieldName','type','key','model','map','keys','filters','intersection','attributes','fields','query','hasOwnProperty','nolimit','order','sort','where','merge','VIRTUAL','filter','options','count','includeAll','ChatQueue','findAll','show','params','length','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','ChatQueues','UserProfileSection','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','findOne','UserChatQueue','pick','ChatQueueId','User','findAndCountAll','UserId','agent','chatPause','updatedAt','createdAt','format','%s/%s','SIP','getTeams','Team','addTeams','ids','Agents','online','voicePause','interface','flatMap','sequelize','transaction','findOrCreate','forEach','emit','field','tq.TeamId','from','team_has_chat_queues','join','user_has_teams','clone','ut.UserId\x20=\x20?','push','SELECT','every','TeamId','includes','all','union','removeTeams','userChatQueue:remove','addAgents','omit','spread','userChatQueue:save','removeAgents','isArray','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs'];(function(_0x2a0897,_0x3a5228){var _0x3a1c15=function(_0x3117d9){while(--_0x3117d9){_0x2a0897['push'](_0x2a0897['shift']());}};_0x3a1c15(++_0x3a5228);}(_0xf7c1,0x1b3));var _0x1f7c=function(_0x5b1fa7,_0x2e893f){_0x5b1fa7=_0x5b1fa7-0x0;var _0x4ce317=_0xf7c1[_0x5b1fa7];return _0x4ce317;};'use strict';var emlformat=require(_0x1f7c('0x0'));var rimraf=require(_0x1f7c('0x1'));var zipdir=require(_0x1f7c('0x2'));var jsonpatch=require(_0x1f7c('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x1f7c('0x4'));var path=require(_0x1f7c('0x5'));var sox=require(_0x1f7c('0x6'));var csv=require(_0x1f7c('0x7'));var ejs=require(_0x1f7c('0x8'));var fs=require('fs');var fs_extra=require(_0x1f7c('0x9'));var _=require(_0x1f7c('0xa'));var squel=require(_0x1f7c('0xb'));var crypto=require('crypto');var jsforce=require(_0x1f7c('0xc'));var deskjs=require(_0x1f7c('0xd'));var toCsv=require('to-csv');var querystring=require(_0x1f7c('0xe'));var Papa=require(_0x1f7c('0xf'));var Redis=require(_0x1f7c('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x1f7c('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x1f7c('0x12'));var logger=require(_0x1f7c('0x13'))('api');var utils=require(_0x1f7c('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x1f7c('0x15'));var db=require(_0x1f7c('0x16'))['db'];config[_0x1f7c('0x17')]=_[_0x1f7c('0x18')](config[_0x1f7c('0x17')],{'host':_0x1f7c('0x19'),'port':0x18eb});var socket=require(_0x1f7c('0x1a'))(new Redis(config['redis']));require('./chatQueue.socket')[_0x1f7c('0x1b')](socket);var jayson=require('jayson/promise');var client=jayson['client'][_0x1f7c('0x1c')]({'port':0x232a});function respondWithRpcPromise(_0x5dd026,_0x480ab3,_0x201097,_0x306495){return new BPromise(function(_0x24e9bf,_0x18b203){var _0x24bf69=_0x306495||client;return _0x24bf69[_0x1f7c('0x1d')](_0x5dd026,_0x201097)['then'](function(_0x1803ec){logger[_0x1f7c('0x1e')](_0x1f7c('0x1f'),_0x480ab3,_0x1f7c('0x20'));logger[_0x1f7c('0x21')](_0x1f7c('0x22'),_0x480ab3,'request\x20sent',JSON[_0x1f7c('0x23')](_0x1803ec));if(_0x1803ec[_0x1f7c('0x24')]){if(_0x1803ec[_0x1f7c('0x24')][_0x1f7c('0x25')]===0x1f4){logger[_0x1f7c('0x24')]('ChatQueue,\x20%s,\x20%s',_0x480ab3,_0x1803ec[_0x1f7c('0x24')]['message']);return _0x18b203(_0x1803ec[_0x1f7c('0x24')][_0x1f7c('0x26')]);}logger[_0x1f7c('0x24')]('ChatQueue,\x20%s,\x20%s',_0x480ab3,_0x1803ec[_0x1f7c('0x24')][_0x1f7c('0x26')]);return _0x24e9bf(_0x1803ec[_0x1f7c('0x24')][_0x1f7c('0x26')]);}else{logger[_0x1f7c('0x1e')](_0x1f7c('0x1f'),_0x480ab3,_0x1f7c('0x20'));_0x24e9bf(_0x1803ec['result'][_0x1f7c('0x26')]);}})[_0x1f7c('0x27')](function(_0x2ce0ed){logger[_0x1f7c('0x24')](_0x1f7c('0x1f'),_0x480ab3,_0x2ce0ed);_0x18b203(_0x2ce0ed);});});}function respondWithStatusCode(_0x2c9b43,_0x35a975){_0x35a975=_0x35a975||0xcc;return function(_0x4beeb2){if(_0x4beeb2){return _0x2c9b43[_0x1f7c('0x28')](_0x35a975);}return _0x2c9b43[_0x1f7c('0x29')](_0x35a975)[_0x1f7c('0x2a')]();};}function respondWithResult(_0x52d15d,_0x25febf){_0x25febf=_0x25febf||0xc8;return function(_0x3f5757){if(_0x3f5757){return _0x52d15d[_0x1f7c('0x29')](_0x25febf)[_0x1f7c('0x2b')](_0x3f5757);}};}function respondWithFilteredResult(_0x542060,_0x37be52){return function(_0x3a3c89){if(_0x3a3c89){var _0x123791=typeof _0x37be52[_0x1f7c('0x2c')]===_0x1f7c('0x2d')&&typeof _0x37be52[_0x1f7c('0x2e')]===_0x1f7c('0x2d');var _0x11f70a=_0x3a3c89['count'];var _0x57ef33=_0x123791?0x0:_0x37be52[_0x1f7c('0x2c')];var _0x41d5ab=_0x123791?_0x3a3c89['count']:_0x37be52[_0x1f7c('0x2c')]+_0x37be52[_0x1f7c('0x2e')];var _0x1663c8;if(_0x41d5ab>=_0x11f70a){_0x41d5ab=_0x11f70a;_0x1663c8=0xc8;}else{_0x1663c8=0xce;}_0x542060[_0x1f7c('0x29')](_0x1663c8);return _0x542060[_0x1f7c('0x2f')](_0x1f7c('0x30'),_0x57ef33+'-'+_0x41d5ab+'/'+_0x11f70a)['json'](_0x3a3c89);}return null;};}function patchUpdates(_0x3720b1){return function(_0x2414e3){try{jsonpatch[_0x1f7c('0x31')](_0x2414e3,_0x3720b1,!![]);}catch(_0x25b06a){return BPromise[_0x1f7c('0x32')](_0x25b06a);}return _0x2414e3[_0x1f7c('0x33')]();};}function saveUpdates(_0x42dc36,_0x307a84){return function(_0x2b1b3a){if(_0x2b1b3a){return _0x2b1b3a[_0x1f7c('0x34')](_0x42dc36)['then'](function(_0x2cc7bf){return _0x2cc7bf;});}return null;};}function removeEntity(_0x55a924,_0x35b317){return function(_0xea1146){if(_0xea1146){return _0xea1146[_0x1f7c('0x35')]()[_0x1f7c('0x36')](function(){var _0x2669da=_0xea1146[_0x1f7c('0x37')]({'plain':!![]});var _0xbe1234='ChatQueues';return db[_0x1f7c('0x38')][_0x1f7c('0x35')]({'where':{'type':_0xbe1234,'resourceId':_0x2669da['id']}})[_0x1f7c('0x36')](function(){return _0xea1146;});})[_0x1f7c('0x36')](function(){_0x55a924[_0x1f7c('0x29')](0xcc)[_0x1f7c('0x2a')]();});}};}function handleEntityNotFound(_0x34f11d,_0x53d385){return function(_0x49fcc){if(!_0x49fcc){_0x34f11d[_0x1f7c('0x28')](0x194);}return _0x49fcc;};}function handleError(_0x2908bc,_0x57cd59){_0x57cd59=_0x57cd59||0x1f4;return function(_0x46a547){logger[_0x1f7c('0x24')](_0x46a547[_0x1f7c('0x39')]);if(_0x46a547[_0x1f7c('0x3a')]){delete _0x46a547[_0x1f7c('0x3a')];}_0x2908bc[_0x1f7c('0x29')](_0x57cd59)['send'](_0x46a547);};}exports['index']=function(_0x45df90,_0x26ffe7){var _0x1b68c7={},_0x157478={},_0x51a46c={'count':0x0,'rows':[]};var _0x35c2f1=_['map'](db['ChatQueue'][_0x1f7c('0x3b')],function(_0x25f5f1){return{'name':_0x25f5f1[_0x1f7c('0x3c')],'type':_0x25f5f1[_0x1f7c('0x3d')][_0x1f7c('0x3e')]};});_0x157478[_0x1f7c('0x3f')]=_[_0x1f7c('0x40')](_0x35c2f1,_0x1f7c('0x3a'));_0x157478['query']=_[_0x1f7c('0x41')](_0x45df90['query']);_0x157478[_0x1f7c('0x42')]=_[_0x1f7c('0x43')](_0x157478['model'],_0x157478['query']);_0x1b68c7[_0x1f7c('0x44')]=_[_0x1f7c('0x43')](_0x157478['model'],qs[_0x1f7c('0x45')](_0x45df90[_0x1f7c('0x46')][_0x1f7c('0x45')]));_0x1b68c7[_0x1f7c('0x44')]=_0x1b68c7[_0x1f7c('0x44')]['length']?_0x1b68c7[_0x1f7c('0x44')]:_0x157478[_0x1f7c('0x3f')];if(!_0x45df90[_0x1f7c('0x46')][_0x1f7c('0x47')](_0x1f7c('0x48'))){_0x1b68c7[_0x1f7c('0x2e')]=qs[_0x1f7c('0x2e')](_0x45df90[_0x1f7c('0x46')][_0x1f7c('0x2e')]);_0x1b68c7[_0x1f7c('0x2c')]=qs[_0x1f7c('0x2c')](_0x45df90[_0x1f7c('0x46')][_0x1f7c('0x2c')]);}_0x1b68c7[_0x1f7c('0x49')]=qs[_0x1f7c('0x4a')](_0x45df90[_0x1f7c('0x46')][_0x1f7c('0x4a')]);_0x1b68c7['where']=qs[_0x1f7c('0x42')](_['pick'](_0x45df90[_0x1f7c('0x46')],_0x157478[_0x1f7c('0x42')]),_0x35c2f1);if(_0x45df90[_0x1f7c('0x46')]['filter']){_0x1b68c7[_0x1f7c('0x4b')]=_[_0x1f7c('0x4c')](_0x1b68c7[_0x1f7c('0x4b')],{'$or':_[_0x1f7c('0x40')](_0x35c2f1,function(_0x369045){if(_0x369045[_0x1f7c('0x3d')]!==_0x1f7c('0x4d')){var _0x334f63={};_0x334f63[_0x369045[_0x1f7c('0x3a')]]={'$like':'%'+_0x45df90[_0x1f7c('0x46')][_0x1f7c('0x4e')]+'%'};return _0x334f63;}})});}_0x1b68c7=_[_0x1f7c('0x4c')]({},_0x1b68c7,_0x45df90[_0x1f7c('0x4f')]);var _0x5db7f5={'where':_0x1b68c7[_0x1f7c('0x4b')]};return db['ChatQueue'][_0x1f7c('0x50')](_0x5db7f5)[_0x1f7c('0x36')](function(_0x5cb572){_0x51a46c['count']=_0x5cb572;if(_0x45df90[_0x1f7c('0x46')][_0x1f7c('0x51')]){_0x1b68c7['include']=[{'all':!![]}];}return db[_0x1f7c('0x52')][_0x1f7c('0x53')](_0x1b68c7);})[_0x1f7c('0x36')](function(_0x5b12f1){_0x51a46c['rows']=_0x5b12f1;return _0x51a46c;})['then'](respondWithFilteredResult(_0x26ffe7,_0x1b68c7))[_0x1f7c('0x27')](handleError(_0x26ffe7,null));};exports[_0x1f7c('0x54')]=function(_0x2dd16f,_0x13b5ac){var _0x3477da={'raw':!![],'where':{'id':_0x2dd16f[_0x1f7c('0x55')]['id']}},_0x1a90ad={};_0x1a90ad['model']=_[_0x1f7c('0x41')](db[_0x1f7c('0x52')][_0x1f7c('0x3b')]);_0x1a90ad['query']=_[_0x1f7c('0x41')](_0x2dd16f['query']);_0x1a90ad[_0x1f7c('0x42')]=_[_0x1f7c('0x43')](_0x1a90ad['model'],_0x1a90ad[_0x1f7c('0x46')]);_0x3477da['attributes']=_['intersection'](_0x1a90ad['model'],qs[_0x1f7c('0x45')](_0x2dd16f[_0x1f7c('0x46')]['fields']));_0x3477da[_0x1f7c('0x44')]=_0x3477da[_0x1f7c('0x44')][_0x1f7c('0x56')]?_0x3477da[_0x1f7c('0x44')]:_0x1a90ad[_0x1f7c('0x3f')];if(_0x2dd16f[_0x1f7c('0x46')][_0x1f7c('0x51')]){_0x3477da['include']=[{'all':!![]}];}_0x3477da=_[_0x1f7c('0x4c')]({},_0x3477da,_0x2dd16f['options']);return db['ChatQueue']['find'](_0x3477da)[_0x1f7c('0x36')](handleEntityNotFound(_0x13b5ac,null))[_0x1f7c('0x36')](respondWithResult(_0x13b5ac,null))[_0x1f7c('0x27')](handleError(_0x13b5ac,null));};exports[_0x1f7c('0x57')]=function(_0xe55f0f,_0x51b702){return db[_0x1f7c('0x52')][_0x1f7c('0x57')](_0xe55f0f[_0x1f7c('0x58')],{})['then'](function(_0x494b79){var _0xaec3c6=_0xe55f0f['user'][_0x1f7c('0x37')]({'plain':!![]});if(!_0xaec3c6)throw new Error(_0x1f7c('0x59'));if(_0xaec3c6[_0x1f7c('0x5a')]===_0x1f7c('0x5b')){var _0x5882b1=_0x494b79['get']({'plain':!![]});var _0x5e4793=_0x1f7c('0x5c');return db[_0x1f7c('0x5d')][_0x1f7c('0x5e')]({'where':{'name':_0x5e4793,'userProfileId':_0xaec3c6[_0x1f7c('0x5f')]},'raw':!![]})['then'](function(_0x3458f2){if(_0x3458f2&&_0x3458f2[_0x1f7c('0x60')]===0x0){return db['UserProfileResource'][_0x1f7c('0x57')]({'name':_0x5882b1[_0x1f7c('0x3a')],'resourceId':_0x5882b1['id'],'type':_0x3458f2[_0x1f7c('0x3a')],'sectionId':_0x3458f2['id']},{})['then'](function(){return _0x494b79;});}else{return _0x494b79;}})['catch'](function(_0x3b288a){logger[_0x1f7c('0x24')](_0x1f7c('0x61'),_0x3b288a);throw _0x3b288a;});}return _0x494b79;})[_0x1f7c('0x36')](respondWithResult(_0x51b702,0xc9))[_0x1f7c('0x27')](handleError(_0x51b702,null));};exports[_0x1f7c('0x34')]=function(_0x15f99a,_0x4b4b94){if(_0x15f99a[_0x1f7c('0x58')]['id']){delete _0x15f99a[_0x1f7c('0x58')]['id'];}return db[_0x1f7c('0x52')][_0x1f7c('0x5e')]({'where':{'id':_0x15f99a[_0x1f7c('0x55')]['id']}})[_0x1f7c('0x36')](handleEntityNotFound(_0x4b4b94,null))[_0x1f7c('0x36')](saveUpdates(_0x15f99a[_0x1f7c('0x58')],null))[_0x1f7c('0x36')](respondWithResult(_0x4b4b94,null))['catch'](handleError(_0x4b4b94,null));};exports[_0x1f7c('0x35')]=function(_0x3a773e,_0x49471e){return db['ChatQueue'][_0x1f7c('0x5e')]({'where':{'id':_0x3a773e['params']['id']}})['then'](handleEntityNotFound(_0x49471e,null))[_0x1f7c('0x36')](removeEntity(_0x49471e,null))['catch'](handleError(_0x49471e,null));};exports[_0x1f7c('0x62')]=function(_0x11eb32,_0x532fb9){return db[_0x1f7c('0x52')][_0x1f7c('0x62')]()[_0x1f7c('0x36')](respondWithResult(_0x532fb9,null))[_0x1f7c('0x27')](handleError(_0x532fb9,null));};exports['getMembers']=function(_0x1212e8,_0x1194c0,_0x5e4c83){var _0x537415={'raw':!![],'where':{}},_0x5062bc={},_0x507846;return db[_0x1f7c('0x52')][_0x1f7c('0x63')]({'where':{'id':_0x1212e8[_0x1f7c('0x55')]['id']}})[_0x1f7c('0x36')](handleEntityNotFound(_0x1194c0,null))['then'](function(_0x5576d7){if(_0x5576d7){_0x507846=_0x5576d7[_0x1f7c('0x37')]({'plain':!![]});_0x5062bc[_0x1f7c('0x3f')]=_[_0x1f7c('0x41')](db[_0x1f7c('0x64')][_0x1f7c('0x3b')]);_0x5062bc['query']=_['keys'](_0x1212e8[_0x1f7c('0x46')]);_0x5062bc['filters']=_[_0x1f7c('0x43')](_0x5062bc[_0x1f7c('0x3f')],_0x5062bc['query']);_0x537415[_0x1f7c('0x44')]=_[_0x1f7c('0x43')](_0x5062bc[_0x1f7c('0x3f')],qs[_0x1f7c('0x45')](_0x1212e8['query']['fields']));_0x537415[_0x1f7c('0x44')]=_0x537415[_0x1f7c('0x44')]['length']?_0x537415[_0x1f7c('0x44')]:_0x5062bc[_0x1f7c('0x3f')];if(!_0x1212e8[_0x1f7c('0x46')][_0x1f7c('0x47')]('nolimit')){_0x537415['limit']=qs[_0x1f7c('0x2e')](_0x1212e8['query'][_0x1f7c('0x2e')]);_0x537415[_0x1f7c('0x2c')]=qs[_0x1f7c('0x2c')](_0x1212e8['query'][_0x1f7c('0x2c')]);}_0x537415[_0x1f7c('0x49')]=qs['sort'](_0x1212e8[_0x1f7c('0x46')][_0x1f7c('0x4a')]);_0x537415[_0x1f7c('0x4b')]=qs[_0x1f7c('0x42')](_[_0x1f7c('0x65')](_0x1212e8[_0x1f7c('0x46')],_0x5062bc[_0x1f7c('0x42')]));_0x537415[_0x1f7c('0x4b')][_0x1f7c('0x66')]=_0x5576d7['id'];if(_0x1212e8[_0x1f7c('0x46')][_0x1f7c('0x4e')]){_0x537415['where']=_[_0x1f7c('0x4c')](_0x537415[_0x1f7c('0x4b')],{'$or':_[_0x1f7c('0x40')](_0x537415[_0x1f7c('0x44')],function(_0x2e7d3a){var _0x455169={};_0x455169[_0x2e7d3a]={'$like':'%'+_0x1212e8[_0x1f7c('0x46')][_0x1f7c('0x4e')]+'%'};return _0x455169;})});}_0x537415=_[_0x1f7c('0x4c')]({},_0x537415,_0x1212e8[_0x1f7c('0x4f')]);return db[_0x1f7c('0x64')]['findAll'](_0x537415);}})[_0x1f7c('0x36')](function(_0x478d73){if(_0x478d73){return db[_0x1f7c('0x67')][_0x1f7c('0x68')]({'where':{'id':_[_0x1f7c('0x40')](_0x478d73,_0x1f7c('0x69')),'role':_0x1f7c('0x6a')},'attributes':['id',_0x1f7c('0x3a'),_0x1f7c('0x6b'),_0x1f7c('0x6c'),_0x1f7c('0x6d')]});}})[_0x1f7c('0x36')](function(_0x1f8034){if(_0x1f8034){return{'count':_0x1f8034[_0x1f7c('0x50')],'rows':_[_0x1f7c('0x40')](_0x1f8034['rows'],function(_0x5c4e4a){return{'membername':_0x5c4e4a[_0x1f7c('0x3a')],'UserId':_0x5c4e4a['id'],'queue_name':_0x507846['name'],'ChatQueueId':_0x507846['id'],'interface':util[_0x1f7c('0x6e')](_0x1f7c('0x6f'),_0x1f7c('0x70'),_0x5c4e4a[_0x1f7c('0x3a')]),'penalty':0x0,'paused':_0x5c4e4a['chatPause'],'createdAt':_0x5c4e4a[_0x1f7c('0x6d')],'updatedAt':_0x5c4e4a[_0x1f7c('0x6c')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x1f7c('0x36')](respondWithFilteredResult(_0x1194c0,_0x537415))[_0x1f7c('0x27')](handleError(_0x1194c0,null));};exports[_0x1f7c('0x71')]=function(_0x346d01,_0xfc02bb,_0x24a4c8){var _0x2b4a80={};var _0x14cdea={};var _0x9b064d;var _0x2356e3;return db[_0x1f7c('0x52')][_0x1f7c('0x63')]({'where':{'id':_0x346d01[_0x1f7c('0x55')]['id']}})[_0x1f7c('0x36')](handleEntityNotFound(_0xfc02bb,null))['then'](function(_0x256f73){if(_0x256f73){_0x9b064d=_0x256f73;_0x14cdea['model']=_[_0x1f7c('0x41')](db[_0x1f7c('0x72')][_0x1f7c('0x3b')]);_0x14cdea[_0x1f7c('0x46')]=_['keys'](_0x346d01[_0x1f7c('0x46')]);_0x14cdea[_0x1f7c('0x42')]=_['intersection'](_0x14cdea[_0x1f7c('0x3f')],_0x14cdea['query']);_0x2b4a80[_0x1f7c('0x44')]=_[_0x1f7c('0x43')](_0x14cdea[_0x1f7c('0x3f')],qs[_0x1f7c('0x45')](_0x346d01[_0x1f7c('0x46')]['fields']));_0x2b4a80[_0x1f7c('0x44')]=_0x2b4a80[_0x1f7c('0x44')]['length']?_0x2b4a80[_0x1f7c('0x44')]:_0x14cdea[_0x1f7c('0x3f')];_0x2b4a80['order']=qs[_0x1f7c('0x4a')](_0x346d01[_0x1f7c('0x46')][_0x1f7c('0x4a')]);_0x2b4a80[_0x1f7c('0x4b')]=qs[_0x1f7c('0x42')](_['pick'](_0x346d01['query'],_0x14cdea[_0x1f7c('0x42')]));if(_0x346d01[_0x1f7c('0x46')][_0x1f7c('0x4e')]){_0x2b4a80['where']=_[_0x1f7c('0x4c')](_0x2b4a80[_0x1f7c('0x4b')],{'$or':_[_0x1f7c('0x40')](_0x2b4a80[_0x1f7c('0x44')],function(_0xf7630d){var _0x283758={};_0x283758[_0xf7630d]={'$like':'%'+_0x346d01['query'][_0x1f7c('0x4e')]+'%'};return _0x283758;})});}_0x2b4a80=_[_0x1f7c('0x4c')]({},_0x2b4a80,_0x346d01['options']);return _0x9b064d['getTeams'](_0x2b4a80);}})[_0x1f7c('0x36')](function(_0x45e92e){if(_0x45e92e){_0x2356e3=_0x45e92e[_0x1f7c('0x56')];if(!_0x346d01[_0x1f7c('0x46')]['hasOwnProperty'](_0x1f7c('0x48'))){_0x2b4a80[_0x1f7c('0x2e')]=qs[_0x1f7c('0x2e')](_0x346d01['query']['limit']);_0x2b4a80['offset']=qs[_0x1f7c('0x2c')](_0x346d01[_0x1f7c('0x46')]['offset']);}return _0x9b064d[_0x1f7c('0x71')](_0x2b4a80);}})[_0x1f7c('0x36')](function(_0x34dfed){if(_0x34dfed){return _0x34dfed?{'count':_0x2356e3,'rows':_0x34dfed}:null;}})[_0x1f7c('0x36')](respondWithResult(_0xfc02bb,null))[_0x1f7c('0x27')](handleError(_0xfc02bb,null));};exports[_0x1f7c('0x73')]=function(_0x385284,_0x556d0d,_0x2d33c4){var _0x4a7e12=_0x385284[_0x1f7c('0x58')][_0x1f7c('0x74')];return db[_0x1f7c('0x72')][_0x1f7c('0x53')]({'where':{'id':_0x4a7e12},'attributes':['id'],'include':[{'model':db[_0x1f7c('0x67')],'as':_0x1f7c('0x75'),'attributes':['id',_0x1f7c('0x3a'),_0x1f7c('0x76'),_0x1f7c('0x77'),_0x1f7c('0x78')],'raw':!![]}]})['then'](function(_0xbee186){if(_0xbee186){var _0x4182e2=_[_0x1f7c('0x79')](_0xbee186,function(_0x28f226){var _0x4cb622=_0x28f226[_0x1f7c('0x37')]({'plain':!![]});return _0x4cb622[_0x1f7c('0x75')];});return db[_0x1f7c('0x52')]['find']({'where':{'id':_0x385284[_0x1f7c('0x55')]['id']}})['then'](function(_0x1bef6){return db[_0x1f7c('0x7a')][_0x1f7c('0x7b')](function(_0x226613){return _0x1bef6[_0x1f7c('0x73')](_0x4a7e12,{'transaction':_0x226613})[_0x1f7c('0x36')](function(){return BPromise['each'](_0x4182e2,function(_0x37ec7e){return db[_0x1f7c('0x64')][_0x1f7c('0x7c')]({'where':{'UserId':_0x37ec7e['id'],'ChatQueueId':_0x385284[_0x1f7c('0x55')]['id']},'transaction':_0x226613});});})[_0x1f7c('0x36')](function(){_0x4182e2[_0x1f7c('0x7d')](function(_0x1ab42c){socket[_0x1f7c('0x7e')]('userChatQueue:save',{'UserId':_0x1ab42c['id'],'ChatQueueId':_0x1bef6['id']});});});});});}})[_0x1f7c('0x36')](respondWithStatusCode(_0x556d0d,null))[_0x1f7c('0x27')](handleError(_0x556d0d,null));};exports['removeTeams']=function(_0xc53ad1,_0x294c1e,_0x227965){return db['Team'][_0x1f7c('0x53')]({'where':{'id':_0xc53ad1[_0x1f7c('0x46')][_0x1f7c('0x74')]},'attributes':['id'],'include':[{'model':db[_0x1f7c('0x67')],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0x1f7c('0x36')](handleEntityNotFound(_0x294c1e,null))[_0x1f7c('0x36')](function(_0x1c74cc){var _0x2356f8=_[_0x1f7c('0x40')](_0x1c74cc,'id');var _0x21c901=[];var _0x18b82b=[];var _0x151d24=squel['select']();_0x151d24[_0x1f7c('0x7f')](_0x1f7c('0x80'))[_0x1f7c('0x81')](_0x1f7c('0x82'),'tq')[_0x1f7c('0x83')](_0x1f7c('0x84'),'ut','ut.TeamId\x20=\x20tq.TeamId')[_0x1f7c('0x4b')]('ChatQueueId\x20=\x20?',_0xc53ad1['params']['id']);for(var _0x170853=0x0;_0x170853<_0x1c74cc[_0x1f7c('0x56')];_0x170853+=0x1){let _0x4323ba=_0x1c74cc[_0x170853];for(var _0x37d68b=0x0;_0x37d68b<_0x4323ba[_0x1f7c('0x75')]['length'];_0x37d68b+=0x1){let _0x50d545=_0x4323ba[_0x1f7c('0x75')][_0x37d68b];var _0x10775a=_0x151d24[_0x1f7c('0x85')]();_0x10775a[_0x1f7c('0x4b')](_0x1f7c('0x86'),_0x50d545['id']);_0x18b82b[_0x1f7c('0x87')](db[_0x1f7c('0x7a')]['query'](_0x10775a['toString'](),{'type':db[_0x1f7c('0x7a')]['QueryTypes'][_0x1f7c('0x88')]})['then'](function(_0x8bebc7){if(_0x8bebc7[_0x1f7c('0x56')]===0x1){return _0x50d545['id'];}else{var _0x9c6331=_[_0x1f7c('0x89')](_['map'](_0x8bebc7,_0x1f7c('0x8a')),function(_0x33f025){return _[_0x1f7c('0x8b')](_0x2356f8,_0x33f025);});if(_0x9c6331){return _0x50d545['id'];}}}));}}return BPromise[_0x1f7c('0x8c')](_0x18b82b)[_0x1f7c('0x36')](function(_0x247c18){_0x21c901=_(_0x21c901)[_0x1f7c('0x8d')](_0x247c18)['compact']()['value']();return db[_0x1f7c('0x52')][_0x1f7c('0x5e')]({'where':{'id':_0xc53ad1['params']['id']}})[_0x1f7c('0x36')](function(_0x26590c){return db[_0x1f7c('0x7a')][_0x1f7c('0x7b')](function(_0x17268f){return _0x26590c[_0x1f7c('0x8e')](_0xc53ad1['query'][_0x1f7c('0x74')],{'transaction':_0x17268f})[_0x1f7c('0x36')](function(){if(!_['isEmpty'](_0x21c901)){return _0x26590c['removeAgents'](_0x21c901,{'transaction':_0x17268f});}})[_0x1f7c('0x36')](function(){_0x21c901['forEach'](function(_0x3e041d){socket[_0x1f7c('0x7e')](_0x1f7c('0x8f'),{'UserId':_0x3e041d,'ChatQueueId':_0x26590c['id']});});});});});});})[_0x1f7c('0x36')](respondWithStatusCode(_0x294c1e,null))[_0x1f7c('0x27')](handleError(_0x294c1e,null));};exports['addAgents']=function(_0x1ced54,_0x203af4,_0x525e15){return db[_0x1f7c('0x52')][_0x1f7c('0x5e')]({'where':{'id':_0x1ced54[_0x1f7c('0x55')]['id']}})[_0x1f7c('0x36')](handleEntityNotFound(_0x203af4,null))['then'](function(_0x2d75a3){if(_0x2d75a3){return _0x2d75a3[_0x1f7c('0x90')](_0x1ced54[_0x1f7c('0x58')][_0x1f7c('0x74')],_[_0x1f7c('0x91')](_0x1ced54[_0x1f7c('0x58')],[_0x1f7c('0x74'),'id'])||{})[_0x1f7c('0x92')](function(_0x4c76c9){for(var _0xd3226f=0x0;_0xd3226f<_0x1ced54[_0x1f7c('0x58')]['ids'][_0x1f7c('0x56')];_0xd3226f+=0x1){socket['emit'](_0x1f7c('0x93'),{'UserId':Number(_0x1ced54[_0x1f7c('0x58')][_0x1f7c('0x74')][_0xd3226f]),'ChatQueueId':Number(_0x1ced54[_0x1f7c('0x55')]['id'])});}return _0x4c76c9;});}})['then'](respondWithResult(_0x203af4,null))[_0x1f7c('0x27')](handleError(_0x203af4,null));};exports[_0x1f7c('0x94')]=function(_0x40112a,_0x544f2a,_0x50fd44){return db[_0x1f7c('0x52')][_0x1f7c('0x5e')]({'where':{'id':_0x40112a[_0x1f7c('0x55')]['id']}})['then'](handleEntityNotFound(_0x544f2a,null))[_0x1f7c('0x36')](function(_0x3a55ae){if(_0x3a55ae){return _0x3a55ae[_0x1f7c('0x94')](_0x40112a[_0x1f7c('0x46')][_0x1f7c('0x74')])[_0x1f7c('0x36')](function(){if(_[_0x1f7c('0x95')](_0x40112a['query'][_0x1f7c('0x74')])){for(var _0x564aca=0x0;_0x564aca<_0x40112a[_0x1f7c('0x46')][_0x1f7c('0x74')]['length'];_0x564aca+=0x1){socket[_0x1f7c('0x7e')]('userChatQueue:remove',{'UserId':Number(_0x40112a[_0x1f7c('0x46')]['ids'][_0x564aca]),'ChatQueueId':Number(_0x40112a['params']['id'])});}}else{socket[_0x1f7c('0x7e')](_0x1f7c('0x8f'),{'UserId':Number(_0x40112a[_0x1f7c('0x46')][_0x1f7c('0x74')]),'ChatQueueId':Number(_0x40112a[_0x1f7c('0x55')]['id'])});}});}})[_0x1f7c('0x36')](respondWithStatusCode(_0x544f2a,null))[_0x1f7c('0x27')](handleError(_0x544f2a,null));};exports[_0x1f7c('0x96')]=function(_0x52dfc6,_0x4fa9bd,_0x4a10f3){var _0x3502e5={};var _0x183ed3={};var _0x54ecde;var _0x347506;return db[_0x1f7c('0x52')][_0x1f7c('0x63')]({'where':{'id':_0x52dfc6[_0x1f7c('0x55')]['id']}})['then'](handleEntityNotFound(_0x4fa9bd,null))['then'](function(_0x13370b){if(_0x13370b){_0x54ecde=_0x13370b;_0x183ed3[_0x1f7c('0x3f')]=_[_0x1f7c('0x41')](db['User'][_0x1f7c('0x3b')]);_0x183ed3[_0x1f7c('0x46')]=_[_0x1f7c('0x41')](_0x52dfc6[_0x1f7c('0x46')]);_0x183ed3[_0x1f7c('0x42')]=_[_0x1f7c('0x43')](_0x183ed3[_0x1f7c('0x3f')],_0x183ed3[_0x1f7c('0x46')]);_0x3502e5[_0x1f7c('0x44')]=_[_0x1f7c('0x43')](_0x183ed3['model'],qs['fields'](_0x52dfc6[_0x1f7c('0x46')]['fields']));_0x3502e5['attributes']=_0x3502e5[_0x1f7c('0x44')][_0x1f7c('0x56')]?_0x3502e5[_0x1f7c('0x44')]:_0x183ed3[_0x1f7c('0x3f')];_0x3502e5[_0x1f7c('0x49')]=qs[_0x1f7c('0x4a')](_0x52dfc6[_0x1f7c('0x46')][_0x1f7c('0x4a')]);_0x3502e5[_0x1f7c('0x4b')]=qs[_0x1f7c('0x42')](_[_0x1f7c('0x65')](_0x52dfc6[_0x1f7c('0x46')],_0x183ed3[_0x1f7c('0x42')]));if(_0x52dfc6[_0x1f7c('0x46')][_0x1f7c('0x4e')]){_0x3502e5[_0x1f7c('0x4b')]=_[_0x1f7c('0x4c')](_0x3502e5[_0x1f7c('0x4b')],{'$or':_['map'](_0x3502e5[_0x1f7c('0x44')],function(_0x1ded01){var _0x50dae2={};_0x50dae2[_0x1ded01]={'$like':'%'+_0x52dfc6[_0x1f7c('0x46')][_0x1f7c('0x4e')]+'%'};return _0x50dae2;})});}_0x3502e5=_[_0x1f7c('0x4c')]({},_0x3502e5,_0x52dfc6[_0x1f7c('0x4f')]);return _0x54ecde[_0x1f7c('0x96')](_0x3502e5);}})[_0x1f7c('0x36')](function(_0x1406e5){if(_0x1406e5){_0x347506=_0x1406e5[_0x1f7c('0x56')];if(!_0x52dfc6[_0x1f7c('0x46')][_0x1f7c('0x47')](_0x1f7c('0x48'))){_0x3502e5[_0x1f7c('0x2e')]=qs[_0x1f7c('0x2e')](_0x52dfc6[_0x1f7c('0x46')][_0x1f7c('0x2e')]);_0x3502e5[_0x1f7c('0x2c')]=qs[_0x1f7c('0x2c')](_0x52dfc6[_0x1f7c('0x46')][_0x1f7c('0x2c')]);}return _0x54ecde[_0x1f7c('0x96')](_0x3502e5);}})[_0x1f7c('0x36')](function(_0x1c0d35){if(_0x1c0d35){return _0x1c0d35?{'count':_0x347506,'rows':_0x1c0d35}:null;}})[_0x1f7c('0x36')](respondWithResult(_0x4fa9bd,null))['catch'](handleError(_0x4fa9bd,null));};
\ No newline at end of file
index 745a92f..2c08cfd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x43c9=['hasOwnProperty','hook','events','../../mysqldb','save','emit'];(function(_0x3eae3e,_0x57f222){var _0x4f732b=function(_0x58a223){while(--_0x58a223){_0x3eae3e['push'](_0x3eae3e['shift']());}};_0x4f732b(++_0x57f222);}(_0x43c9,0x8c));var _0x943c=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0x43c9[_0x42cae2];return _0x5f256f;};'use strict';var EventEmitter=require(_0x943c('0x0'));var ChatQueue=require(_0x943c('0x1'))['db']['ChatQueue'];var ChatQueueEvents=new EventEmitter();ChatQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x943c('0x2'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x21c38c){return function(_0x48b745,_0x3387a3,_0x5bf04e){ChatQueueEvents['emit'](_0x21c38c+':'+_0x48b745['id'],_0x48b745);ChatQueueEvents[_0x943c('0x3')](_0x21c38c,_0x48b745);_0x5bf04e(null);};}for(var e in events){if(events[_0x943c('0x4')](e)){var event=events[e];ChatQueue[_0x943c('0x5')](e,emitEvent(event));}}module['exports']=ChatQueueEvents;
\ No newline at end of file
+var _0x82dc=['exports','events','../../mysqldb','ChatQueue','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook'];(function(_0x28acd7,_0x2d7d6a){var _0x4fcc45=function(_0x5e0522){while(--_0x5e0522){_0x28acd7['push'](_0x28acd7['shift']());}};_0x4fcc45(++_0x2d7d6a);}(_0x82dc,0x109));var _0xc82d=function(_0x47c3b1,_0x23dd4e){_0x47c3b1=_0x47c3b1-0x0;var _0x391949=_0x82dc[_0x47c3b1];return _0x391949;};'use strict';var EventEmitter=require(_0xc82d('0x0'));var ChatQueue=require(_0xc82d('0x1'))['db'][_0xc82d('0x2')];var ChatQueueEvents=new EventEmitter();ChatQueueEvents[_0xc82d('0x3')](0x0);var events={'afterCreate':_0xc82d('0x4'),'afterUpdate':_0xc82d('0x5'),'afterDestroy':_0xc82d('0x6')};function emitEvent(_0x2ade67){return function(_0x575987,_0x1b08fe,_0x185065){ChatQueueEvents[_0xc82d('0x7')](_0x2ade67+':'+_0x575987['id'],_0x575987);ChatQueueEvents['emit'](_0x2ade67,_0x575987);_0x185065(null);};}for(var e in events){if(events[_0xc82d('0x8')](e)){var event=events[e];ChatQueue[_0xc82d('0x9')](e,emitEvent(event));}}module[_0xc82d('0xa')]=ChatQueueEvents;
\ No newline at end of file
index cd5e752..55ab16c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0cf9=['ChatQueue','chat_queues','lodash','util','../../config/logger','api','moment','bluebird','exports','define'];(function(_0x11f541,_0x4a053d){var _0x58827b=function(_0x412a07){while(--_0x412a07){_0x11f541['push'](_0x11f541['shift']());}};_0x58827b(++_0x4a053d);}(_0x0cf9,0x17e));var _0x90cf=function(_0x519c88,_0xb84103){_0x519c88=_0x519c88-0x0;var _0x4668d7=_0x0cf9[_0x519c88];return _0x4668d7;};'use strict';var _=require(_0x90cf('0x0'));var util=require(_0x90cf('0x1'));var logger=require(_0x90cf('0x2'))(_0x90cf('0x3'));var moment=require(_0x90cf('0x4'));var BPromise=require(_0x90cf('0x5'));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('./chatQueue.attributes');module[_0x90cf('0x6')]=function(_0x1dfe6e,_0x1bd2d9){return _0x1dfe6e[_0x90cf('0x7')](_0x90cf('0x8'),attributes,{'tableName':_0x90cf('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb6bb=['moment','bluebird','request-promise','path','rimraf','./chatQueue.attributes','define','ChatQueue','chat_queues','util','api'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xb6bb,0xda));var _0xbb6b=function(_0x41b54b,_0x7560a6){_0x41b54b=_0x41b54b-0x0;var _0x4f135d=_0xb6bb[_0x41b54b];return _0x4f135d;};'use strict';var _=require('lodash');var util=require(_0xbb6b('0x0'));var logger=require('../../config/logger')(_0xbb6b('0x1'));var moment=require(_0xbb6b('0x2'));var BPromise=require(_0xbb6b('0x3'));var rp=require(_0xbb6b('0x4'));var fs=require('fs');var path=require(_0xbb6b('0x5'));var rimraf=require(_0xbb6b('0x6'));var config=require('../../config/environment');var attributes=require(_0xbb6b('0x7'));module['exports']=function(_0x4cc42c,_0x5de074){return _0x4cc42c[_0xbb6b('0x8')](_0xbb6b('0x9'),attributes,{'tableName':_0xbb6b('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2e18e31..f757b36 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xefe2=['findAll','options','raw','where','attributes','limit','include','map','model','ShowChatQueue','ChatQueue','find','lodash','util','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','defaults','localhost','./chatQueue.socket','register','request','then','info','ChatQueue,\x20%s,\x20%s','request\x20sent','debug','ChatQueue,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','catch','GetChatQueue'];(function(_0x1d50f2,_0x3c3ec6){var _0x3769b8=function(_0x50926a){while(--_0x50926a){_0x1d50f2['push'](_0x1d50f2['shift']());}};_0x3769b8(++_0x3c3ec6);}(_0xefe2,0xd9));var _0x2efe=function(_0x123092,_0x4655bc){_0x123092=_0x123092-0x0;var _0x2816cc=_0xefe2[_0x123092];return _0x2816cc;};'use strict';var _=require(_0x2efe('0x0'));var util=require(_0x2efe('0x1'));var moment=require('moment');var BPromise=require(_0x2efe('0x2'));var rs=require(_0x2efe('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2efe('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x2efe('0x5'))(_0x2efe('0x6'));var config=require(_0x2efe('0x7'));var jayson=require(_0x2efe('0x8'));var client=jayson[_0x2efe('0x9')]['http']({'port':0x232a});config[_0x2efe('0xa')]=_[_0x2efe('0xb')](config[_0x2efe('0xa')],{'host':_0x2efe('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x2efe('0xa')]));require(_0x2efe('0xd'))[_0x2efe('0xe')](socket);function respondWithRpcPromise(_0x54c846,_0x498eb4,_0x28f5c9){return new BPromise(function(_0x5a17d3,_0x58ba63){return client[_0x2efe('0xf')](_0x54c846,_0x28f5c9)[_0x2efe('0x10')](function(_0x45f674){logger[_0x2efe('0x11')](_0x2efe('0x12'),_0x498eb4,_0x2efe('0x13'));logger[_0x2efe('0x14')](_0x2efe('0x15'),_0x498eb4,_0x2efe('0x13'),JSON[_0x2efe('0x16')](_0x45f674));if(_0x45f674['error']){if(_0x45f674['error'][_0x2efe('0x17')]===0x1f4){logger[_0x2efe('0x18')]('ChatQueue,\x20%s,\x20%s',_0x498eb4,_0x45f674['error'][_0x2efe('0x19')]);return _0x58ba63(_0x45f674['error'][_0x2efe('0x19')]);}logger[_0x2efe('0x18')]('ChatQueue,\x20%s,\x20%s',_0x498eb4,_0x45f674[_0x2efe('0x18')][_0x2efe('0x19')]);return _0x5a17d3(_0x45f674['error'][_0x2efe('0x19')]);}else{logger['info']('ChatQueue,\x20%s,\x20%s',_0x498eb4,_0x2efe('0x13'));_0x5a17d3(_0x45f674[_0x2efe('0x1a')][_0x2efe('0x19')]);}})[_0x2efe('0x1b')](function(_0x40fa2e){logger[_0x2efe('0x18')](_0x2efe('0x12'),_0x498eb4,_0x40fa2e);_0x58ba63(_0x40fa2e);});});}exports[_0x2efe('0x1c')]=function(_0x2a78f8){var _0x1eb9f4=this;return new Promise(function(_0x3ed3a1,_0x6962df){return db['ChatQueue'][_0x2efe('0x1d')]({'raw':_0x2a78f8['options']?_0x2a78f8[_0x2efe('0x1e')][_0x2efe('0x1f')]===undefined?!![]:![]:!![],'where':_0x2a78f8[_0x2efe('0x1e')]?_0x2a78f8['options'][_0x2efe('0x20')]||null:null,'attributes':_0x2a78f8[_0x2efe('0x1e')]?_0x2a78f8['options'][_0x2efe('0x21')]||null:null,'limit':_0x2a78f8[_0x2efe('0x1e')]?_0x2a78f8[_0x2efe('0x1e')][_0x2efe('0x22')]||null:null,'include':_0x2a78f8[_0x2efe('0x1e')]?_0x2a78f8[_0x2efe('0x1e')][_0x2efe('0x23')]?_[_0x2efe('0x24')](_0x2a78f8[_0x2efe('0x1e')][_0x2efe('0x23')],function(_0x1beaad){return{'model':db[_0x1beaad[_0x2efe('0x25')]],'as':_0x1beaad['as'],'attributes':_0x1beaad[_0x2efe('0x21')],'include':_0x1beaad[_0x2efe('0x23')]?_['map'](_0x1beaad[_0x2efe('0x23')],function(_0x5e18d3){return{'model':db[_0x5e18d3[_0x2efe('0x25')]],'as':_0x5e18d3['as'],'attributes':_0x5e18d3[_0x2efe('0x21')],'include':_0x5e18d3[_0x2efe('0x23')]?_[_0x2efe('0x24')](_0x5e18d3[_0x2efe('0x23')],function(_0xa11a23){return{'model':db[_0xa11a23[_0x2efe('0x25')]],'as':_0xa11a23['as'],'attributes':_0xa11a23[_0x2efe('0x21')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x145b1e){logger[_0x2efe('0x11')](_0x2efe('0x1c'),_0x2a78f8);logger[_0x2efe('0x14')](_0x2efe('0x1c'),_0x2a78f8,JSON['stringify'](_0x145b1e));_0x3ed3a1(_0x145b1e);})[_0x2efe('0x1b')](function(_0x1ce936){logger[_0x2efe('0x18')](_0x2efe('0x1c'),_0x1ce936[_0x2efe('0x19')],_0x2a78f8);_0x6962df(_0x1eb9f4[_0x2efe('0x18')](0x1f4,_0x1ce936[_0x2efe('0x19')]));});});};exports[_0x2efe('0x26')]=function(_0x3a7e18){var _0x356bad=this;return new Promise(function(_0x5f3de8,_0x3ab92b){return db[_0x2efe('0x27')][_0x2efe('0x28')]({'raw':_0x3a7e18[_0x2efe('0x1e')]?_0x3a7e18[_0x2efe('0x1e')][_0x2efe('0x1f')]===undefined?!![]:![]:!![],'where':_0x3a7e18[_0x2efe('0x1e')]?_0x3a7e18[_0x2efe('0x1e')][_0x2efe('0x20')]||null:null,'attributes':_0x3a7e18['options']?_0x3a7e18[_0x2efe('0x1e')][_0x2efe('0x21')]||null:null,'include':_0x3a7e18['options']?_0x3a7e18['options']['include']?_[_0x2efe('0x24')](_0x3a7e18[_0x2efe('0x1e')][_0x2efe('0x23')],function(_0x5a8ba4){return{'model':db[_0x5a8ba4[_0x2efe('0x25')]],'as':_0x5a8ba4['as'],'attributes':_0x5a8ba4[_0x2efe('0x21')],'include':_0x5a8ba4[_0x2efe('0x23')]?_['map'](_0x5a8ba4['include'],function(_0x2ee1bf){return{'model':db[_0x2ee1bf['model']],'as':_0x2ee1bf['as'],'attributes':_0x2ee1bf[_0x2efe('0x21')],'include':_0x2ee1bf[_0x2efe('0x23')]?_[_0x2efe('0x24')](_0x2ee1bf['include'],function(_0xd3ce22){return{'model':db[_0xd3ce22[_0x2efe('0x25')]],'as':_0xd3ce22['as'],'attributes':_0xd3ce22[_0x2efe('0x21')]};}):[]};}):[]};}):[]:[]})[_0x2efe('0x10')](function(_0x17a5b4){logger[_0x2efe('0x11')](_0x2efe('0x26'),_0x3a7e18);logger['debug'](_0x2efe('0x26'),_0x3a7e18,JSON['stringify'](_0x17a5b4));_0x5f3de8(_0x17a5b4);})[_0x2efe('0x1b')](function(_0x326781){logger[_0x2efe('0x18')](_0x2efe('0x26'),_0x326781[_0x2efe('0x19')],_0x3a7e18);_0x3ab92b(_0x356bad['error'](0x1f4,_0x326781[_0x2efe('0x19')]));});});};
\ No newline at end of file
+var _0xeb00=['attributes','limit','include','map','model','debug','ShowChatQueue','ChatQueue','find','where','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','./chatQueue.socket','register','request','then','info','ChatQueue,\x20%s,\x20%s','request\x20sent','stringify','code','error','message','result','catch','GetChatQueue','findAll','options','raw'];(function(_0xe19a42,_0x4b46b8){var _0x78293b=function(_0x1c592c){while(--_0x1c592c){_0xe19a42['push'](_0xe19a42['shift']());}};_0x78293b(++_0x4b46b8);}(_0xeb00,0x129));var _0x0eb0=function(_0x2aee90,_0x1d9dd3){_0x2aee90=_0x2aee90-0x0;var _0x1205e1=_0xeb00[_0x2aee90];return _0x1205e1;};'use strict';var _=require(_0x0eb0('0x0'));var util=require('util');var moment=require(_0x0eb0('0x1'));var BPromise=require(_0x0eb0('0x2'));var rs=require(_0x0eb0('0x3'));var fs=require('fs');var Redis=require(_0x0eb0('0x4'));var db=require(_0x0eb0('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x0eb0('0x6'));var config=require(_0x0eb0('0x7'));var jayson=require(_0x0eb0('0x8'));var client=jayson[_0x0eb0('0x9')]['http']({'port':0x232a});config[_0x0eb0('0xa')]=_[_0x0eb0('0xb')](config[_0x0eb0('0xa')],{'host':_0x0eb0('0xc'),'port':0x18eb});var socket=require(_0x0eb0('0xd'))(new Redis(config[_0x0eb0('0xa')]));require(_0x0eb0('0xe'))[_0x0eb0('0xf')](socket);function respondWithRpcPromise(_0x291f69,_0x4c591b,_0x4ce3e4){return new BPromise(function(_0x30ac31,_0x2be799){return client[_0x0eb0('0x10')](_0x291f69,_0x4ce3e4)[_0x0eb0('0x11')](function(_0x5da58a){logger[_0x0eb0('0x12')](_0x0eb0('0x13'),_0x4c591b,_0x0eb0('0x14'));logger['debug']('ChatQueue,\x20%s,\x20%s,\x20%s',_0x4c591b,'request\x20sent',JSON[_0x0eb0('0x15')](_0x5da58a));if(_0x5da58a['error']){if(_0x5da58a['error'][_0x0eb0('0x16')]===0x1f4){logger[_0x0eb0('0x17')]('ChatQueue,\x20%s,\x20%s',_0x4c591b,_0x5da58a[_0x0eb0('0x17')][_0x0eb0('0x18')]);return _0x2be799(_0x5da58a[_0x0eb0('0x17')]['message']);}logger['error'](_0x0eb0('0x13'),_0x4c591b,_0x5da58a[_0x0eb0('0x17')]['message']);return _0x30ac31(_0x5da58a[_0x0eb0('0x17')][_0x0eb0('0x18')]);}else{logger[_0x0eb0('0x12')](_0x0eb0('0x13'),_0x4c591b,_0x0eb0('0x14'));_0x30ac31(_0x5da58a[_0x0eb0('0x19')][_0x0eb0('0x18')]);}})[_0x0eb0('0x1a')](function(_0xa959c7){logger[_0x0eb0('0x17')](_0x0eb0('0x13'),_0x4c591b,_0xa959c7);_0x2be799(_0xa959c7);});});}exports[_0x0eb0('0x1b')]=function(_0x199187){var _0x492c39=this;return new Promise(function(_0x1c9033,_0x147160){return db['ChatQueue'][_0x0eb0('0x1c')]({'raw':_0x199187[_0x0eb0('0x1d')]?_0x199187[_0x0eb0('0x1d')][_0x0eb0('0x1e')]===undefined?!![]:![]:!![],'where':_0x199187[_0x0eb0('0x1d')]?_0x199187[_0x0eb0('0x1d')]['where']||null:null,'attributes':_0x199187['options']?_0x199187[_0x0eb0('0x1d')][_0x0eb0('0x1f')]||null:null,'limit':_0x199187[_0x0eb0('0x1d')]?_0x199187[_0x0eb0('0x1d')][_0x0eb0('0x20')]||null:null,'include':_0x199187[_0x0eb0('0x1d')]?_0x199187['options'][_0x0eb0('0x21')]?_[_0x0eb0('0x22')](_0x199187[_0x0eb0('0x1d')][_0x0eb0('0x21')],function(_0x39a6c8){return{'model':db[_0x39a6c8[_0x0eb0('0x23')]],'as':_0x39a6c8['as'],'attributes':_0x39a6c8[_0x0eb0('0x1f')],'include':_0x39a6c8['include']?_[_0x0eb0('0x22')](_0x39a6c8['include'],function(_0x5ec4e9){return{'model':db[_0x5ec4e9['model']],'as':_0x5ec4e9['as'],'attributes':_0x5ec4e9[_0x0eb0('0x1f')],'include':_0x5ec4e9['include']?_[_0x0eb0('0x22')](_0x5ec4e9[_0x0eb0('0x21')],function(_0x1eaa19){return{'model':db[_0x1eaa19['model']],'as':_0x1eaa19['as'],'attributes':_0x1eaa19['attributes']};}):[]};}):[]};}):[]:[]})[_0x0eb0('0x11')](function(_0x316611){logger[_0x0eb0('0x12')](_0x0eb0('0x1b'),_0x199187);logger[_0x0eb0('0x24')](_0x0eb0('0x1b'),_0x199187,JSON['stringify'](_0x316611));_0x1c9033(_0x316611);})[_0x0eb0('0x1a')](function(_0x3b59bd){logger['error'](_0x0eb0('0x1b'),_0x3b59bd['message'],_0x199187);_0x147160(_0x492c39[_0x0eb0('0x17')](0x1f4,_0x3b59bd[_0x0eb0('0x18')]));});});};exports[_0x0eb0('0x25')]=function(_0x30dc3d){var _0x2eae83=this;return new Promise(function(_0x472ed7,_0x382489){return db[_0x0eb0('0x26')][_0x0eb0('0x27')]({'raw':_0x30dc3d[_0x0eb0('0x1d')]?_0x30dc3d[_0x0eb0('0x1d')][_0x0eb0('0x1e')]===undefined?!![]:![]:!![],'where':_0x30dc3d[_0x0eb0('0x1d')]?_0x30dc3d[_0x0eb0('0x1d')][_0x0eb0('0x28')]||null:null,'attributes':_0x30dc3d[_0x0eb0('0x1d')]?_0x30dc3d[_0x0eb0('0x1d')][_0x0eb0('0x1f')]||null:null,'include':_0x30dc3d[_0x0eb0('0x1d')]?_0x30dc3d['options'][_0x0eb0('0x21')]?_[_0x0eb0('0x22')](_0x30dc3d[_0x0eb0('0x1d')]['include'],function(_0x1a831a){return{'model':db[_0x1a831a[_0x0eb0('0x23')]],'as':_0x1a831a['as'],'attributes':_0x1a831a[_0x0eb0('0x1f')],'include':_0x1a831a[_0x0eb0('0x21')]?_[_0x0eb0('0x22')](_0x1a831a[_0x0eb0('0x21')],function(_0x5810cc){return{'model':db[_0x5810cc[_0x0eb0('0x23')]],'as':_0x5810cc['as'],'attributes':_0x5810cc[_0x0eb0('0x1f')],'include':_0x5810cc['include']?_[_0x0eb0('0x22')](_0x5810cc[_0x0eb0('0x21')],function(_0x319a43){return{'model':db[_0x319a43['model']],'as':_0x319a43['as'],'attributes':_0x319a43[_0x0eb0('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x0eb0('0x11')](function(_0x33f473){logger['info'](_0x0eb0('0x25'),_0x30dc3d);logger[_0x0eb0('0x24')](_0x0eb0('0x25'),_0x30dc3d,JSON[_0x0eb0('0x15')](_0x33f473));_0x472ed7(_0x33f473);})['catch'](function(_0x542a6a){logger[_0x0eb0('0x17')](_0x0eb0('0x25'),_0x542a6a[_0x0eb0('0x18')],_0x30dc3d);_0x382489(_0x2eae83['error'](0x1f4,_0x542a6a[_0x0eb0('0x18')]));});});};
\ No newline at end of file
index 80f1917..29fddad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6737=['chatQueue:','save','remove','emit','removeListener'];(function(_0x5ddb1c,_0x5ea4df){var _0x354adc=function(_0x2dfb1f){while(--_0x2dfb1f){_0x5ddb1c['push'](_0x5ddb1c['shift']());}};_0x354adc(++_0x5ea4df);}(_0x6737,0xe2));var _0x7673=function(_0x17dc76,_0x1876fa){_0x17dc76=_0x17dc76-0x0;var _0x3fe30e=_0x6737[_0x17dc76];return _0x3fe30e;};'use strict';var ChatQueueEvents=require('./chatQueue.events');var events=[_0x7673('0x0'),_0x7673('0x1'),'update'];function createListener(_0x2f05d4,_0x2a9cd0){return function(_0x43ee27){_0x2a9cd0[_0x7673('0x2')](_0x2f05d4,_0x43ee27);};}function removeListener(_0x54002e,_0x32e6f2){return function(){ChatQueueEvents[_0x7673('0x3')](_0x54002e,_0x32e6f2);};}exports['register']=function(_0x2f5edc){for(var _0x15230f=0x0,_0x5af802=events['length'];_0x15230f<_0x5af802;_0x15230f++){var _0x53d67d=events[_0x15230f];var _0x5292f7=createListener(_0x7673('0x4')+_0x53d67d,_0x2f5edc);ChatQueueEvents['on'](_0x53d67d,_0x5292f7);}};
\ No newline at end of file
+var _0x04de=['save','remove','update','emit','removeListener','length','chatQueue:','./chatQueue.events'];(function(_0x411add,_0x1aed38){var _0x238242=function(_0x4a1cd5){while(--_0x4a1cd5){_0x411add['push'](_0x411add['shift']());}};_0x238242(++_0x1aed38);}(_0x04de,0x107));var _0xe04d=function(_0x2ad95f,_0x1d114b){_0x2ad95f=_0x2ad95f-0x0;var _0x105506=_0x04de[_0x2ad95f];return _0x105506;};'use strict';var ChatQueueEvents=require(_0xe04d('0x0'));var events=[_0xe04d('0x1'),_0xe04d('0x2'),_0xe04d('0x3')];function createListener(_0x1e650d,_0x28f63f){return function(_0x1113af){_0x28f63f[_0xe04d('0x4')](_0x1e650d,_0x1113af);};}function removeListener(_0x2593a4,_0x70ead0){return function(){ChatQueueEvents[_0xe04d('0x5')](_0x2593a4,_0x70ead0);};}exports['register']=function(_0x4bb925){for(var _0x4f7637=0x0,_0x531688=events[_0xe04d('0x6')];_0x4f7637<_0x531688;_0x4f7637++){var _0x210e93=events[_0x4f7637];var _0x72b1ce=createListener(_0xe04d('0x7')+_0x210e93,_0x4bb925);ChatQueueEvents['on'](_0x210e93,_0x72b1ce);}};
\ No newline at end of file
index 3446f66..29c1ce2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55ca=['post','addAgents','update','delete','destroy','removeTeams','removeAgents','exports','multer','util','Router','fs-extra','../../components/interaction/service','../../config/environment','./chatQueue.controller','get','isAuthenticated','index','describe','/:id','/:id/members','getMembers','/:id/teams','getTeams','/:id/users','addTeams'];(function(_0x27f139,_0x21f072){var _0x28a1bd=function(_0x5dfadd){while(--_0x5dfadd){_0x27f139['push'](_0x27f139['shift']());}};_0x28a1bd(++_0x21f072);}(_0x55ca,0x126));var _0xa55c=function(_0x266ddc,_0x45aa52){_0x266ddc=_0x266ddc-0x0;var _0x39c1d7=_0x55ca[_0x266ddc];return _0x39c1d7;};'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')]('/describe',auth[_0xa55c('0x8')](),controller[_0xa55c('0xa')]);router['get'](_0xa55c('0xb'),auth[_0xa55c('0x8')](),controller['show']);router['get'](_0xa55c('0xc'),auth[_0xa55c('0x8')](),controller[_0xa55c('0xd')]);router[_0xa55c('0x7')](_0xa55c('0xe'),auth[_0xa55c('0x8')](),controller[_0xa55c('0xf')]);router[_0xa55c('0x7')](_0xa55c('0x10'),auth[_0xa55c('0x8')](),controller['getAgents']);router['post']('/',auth[_0xa55c('0x8')](),controller['create']);router['post']('/:id/teams',auth[_0xa55c('0x8')](),controller[_0xa55c('0x11')]);router[_0xa55c('0x12')](_0xa55c('0x10'),auth[_0xa55c('0x8')](),controller[_0xa55c('0x13')]);router['put'](_0xa55c('0xb'),auth[_0xa55c('0x8')](),controller[_0xa55c('0x14')]);router[_0xa55c('0x15')](_0xa55c('0xb'),auth[_0xa55c('0x8')](),controller[_0xa55c('0x16')]);router[_0xa55c('0x15')](_0xa55c('0xe'),auth['isAuthenticated'](),controller[_0xa55c('0x17')]);router[_0xa55c('0x15')](_0xa55c('0x10'),auth[_0xa55c('0x8')](),controller[_0xa55c('0x18')]);module[_0xa55c('0x19')]=router;
\ No newline at end of file
+var _0x9957=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./chatQueue.controller','get','isAuthenticated','index','/describe','describe','show','/:id/members','getMembers','getTeams','/:id/users','getAgents','post','create','addTeams','addAgents','put','/:id','delete','destroy','/:id/teams','removeTeams','multer','util','path'];(function(_0x369151,_0x179f72){var _0x4292d5=function(_0x330422){while(--_0x330422){_0x369151['push'](_0x369151['shift']());}};_0x4292d5(++_0x179f72);}(_0x9957,0x93));var _0x7995=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x9957[_0x501510];return _0x1e6ee5;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x9')]('/:id',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x9')]('/:id/teams',auth[_0x7995('0xa')](),controller[_0x7995('0x11')]);router['get'](_0x7995('0x12'),auth[_0x7995('0xa')](),controller[_0x7995('0x13')]);router[_0x7995('0x14')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0x15')]);router[_0x7995('0x14')]('/:id/teams',auth['isAuthenticated'](),controller[_0x7995('0x16')]);router[_0x7995('0x14')](_0x7995('0x12'),auth[_0x7995('0xa')](),controller[_0x7995('0x17')]);router[_0x7995('0x18')](_0x7995('0x19'),auth[_0x7995('0xa')](),controller['update']);router[_0x7995('0x1a')]('/:id',auth[_0x7995('0xa')](),controller[_0x7995('0x1b')]);router[_0x7995('0x1a')](_0x7995('0x1c'),auth[_0x7995('0xa')](),controller[_0x7995('0x1d')]);router['delete']('/:id/users',auth[_0x7995('0xa')](),controller['removeAgents']);module['exports']=router;
\ No newline at end of file
index 917e504..f265e1d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e1e=['DATE','sequelize','exports','STRING'];(function(_0x3bac54,_0x3a8587){var _0x1f928e=function(_0x43fe89){while(--_0x43fe89){_0x3bac54['push'](_0x3bac54['shift']());}};_0x1f928e(++_0x3a8587);}(_0x4e1e,0x1f1));var _0xe4e1=function(_0x131fe7,_0x21fcdb){_0x131fe7=_0x131fe7-0x0;var _0x2eddf3=_0x4e1e[_0x131fe7];return _0x2eddf3;};'use strict';var moment=require('moment');var Sequelize=require(_0xe4e1('0x0'));module[_0xe4e1('0x1')]={'uniqueid':{'type':Sequelize[_0xe4e1('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0xe4e1('0x2')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0xe4e1('0x3')]},'acceptAt':{'type':Sequelize[_0xe4e1('0x3')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0xe4e1('0x2')]}};
\ No newline at end of file
+var _0x8b1f=['exports','STRING','DATE','moment','sequelize'];(function(_0xddcb6f,_0x34f5c1){var _0x22a491=function(_0x240b1c){while(--_0x240b1c){_0xddcb6f['push'](_0xddcb6f['shift']());}};_0x22a491(++_0x34f5c1);}(_0x8b1f,0xda));var _0xf8b1=function(_0x379a74,_0x25da0b){_0x379a74=_0x379a74-0x0;var _0x182f0b=_0x8b1f[_0x379a74];return _0x182f0b;};'use strict';var moment=require(_0xf8b1('0x0'));var Sequelize=require(_0xf8b1('0x1'));module[_0xf8b1('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize[_0xf8b1('0x3')]},'joinAt':{'type':Sequelize[_0xf8b1('0x4')]},'leaveAt':{'type':Sequelize[_0xf8b1('0x4')]},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 1a6aab2..134d36d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4253=['name','send','map','ChatQueueReport','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','findAll','rows','show','include','options','catch','create','body','find','params','describe','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','querystring','ioredis','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','limit','count','set','Content-Range','json','reject','update','then','destroy','error','stack'];(function(_0x116707,_0x42345a){var _0x32ed73=function(_0x1f9a61){while(--_0x1f9a61){_0x116707['push'](_0x116707['shift']());}};_0x32ed73(++_0x42345a);}(_0x4253,0x14c));var _0x3425=function(_0x379166,_0x2ca9f7){_0x379166=_0x379166-0x0;var _0x27f007=_0x4253[_0x379166];return _0x27f007;};'use strict';var emlformat=require(_0x3425('0x0'));var rimraf=require(_0x3425('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x3425('0x2'));var rp=require('request-promise');var moment=require(_0x3425('0x3'));var BPromise=require(_0x3425('0x4'));var Mustache=require(_0x3425('0x5'));var util=require(_0x3425('0x6'));var path=require(_0x3425('0x7'));var sox=require(_0x3425('0x8'));var csv=require(_0x3425('0x9'));var ejs=require(_0x3425('0xa'));var fs=require('fs');var fs_extra=require(_0x3425('0xb'));var _=require('lodash');var squel=require(_0x3425('0xc'));var crypto=require(_0x3425('0xd'));var jsforce=require(_0x3425('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x3425('0x9'));var querystring=require(_0x3425('0xf'));var Papa=require('papaparse');var Redis=require(_0x3425('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x3425('0x11'));var logger=require(_0x3425('0x12'))(_0x3425('0x13'));var utils=require('../../config/utils');var config=require(_0x3425('0x14'));var licenseUtil=require(_0x3425('0x15'));var db=require(_0x3425('0x16'))['db'];function respondWithStatusCode(_0x5a5cd2,_0xb19960){_0xb19960=_0xb19960||0xcc;return function(_0x31afd8){if(_0x31afd8){return _0x5a5cd2[_0x3425('0x17')](_0xb19960);}return _0x5a5cd2[_0x3425('0x18')](_0xb19960)[_0x3425('0x19')]();};}function respondWithResult(_0x440cc1,_0x42e226){_0x42e226=_0x42e226||0xc8;return function(_0x4ded18){if(_0x4ded18){return _0x440cc1[_0x3425('0x18')](_0x42e226)['json'](_0x4ded18);}};}function respondWithFilteredResult(_0x3c77e6,_0x23aac7){return function(_0x534aed){if(_0x534aed){var _0x169458=typeof _0x23aac7[_0x3425('0x1a')]==='undefined'&&typeof _0x23aac7[_0x3425('0x1b')]==='undefined';var _0xd43449=_0x534aed[_0x3425('0x1c')];var _0x1565c8=_0x169458?0x0:_0x23aac7[_0x3425('0x1a')];var _0x4d5933=_0x169458?_0x534aed[_0x3425('0x1c')]:_0x23aac7['offset']+_0x23aac7[_0x3425('0x1b')];var _0xe4b66e;if(_0x4d5933>=_0xd43449){_0x4d5933=_0xd43449;_0xe4b66e=0xc8;}else{_0xe4b66e=0xce;}_0x3c77e6[_0x3425('0x18')](_0xe4b66e);return _0x3c77e6[_0x3425('0x1d')](_0x3425('0x1e'),_0x1565c8+'-'+_0x4d5933+'/'+_0xd43449)[_0x3425('0x1f')](_0x534aed);}return null;};}function patchUpdates(_0x1e12bb){return function(_0x264d65){try{jsonpatch['apply'](_0x264d65,_0x1e12bb,!![]);}catch(_0x4a6131){return BPromise[_0x3425('0x20')](_0x4a6131);}return _0x264d65['save']();};}function saveUpdates(_0x1ef660,_0x26710c){return function(_0x11705a){if(_0x11705a){return _0x11705a[_0x3425('0x21')](_0x1ef660)[_0x3425('0x22')](function(_0x2f9881){return _0x2f9881;});}return null;};}function removeEntity(_0x520aba,_0x38b577){return function(_0x34617c){if(_0x34617c){return _0x34617c[_0x3425('0x23')]()[_0x3425('0x22')](function(){_0x520aba['status'](0xcc)[_0x3425('0x19')]();});}};}function handleEntityNotFound(_0x31d4d5,_0x2a2162){return function(_0x407a76){if(!_0x407a76){_0x31d4d5[_0x3425('0x17')](0x194);}return _0x407a76;};}function handleError(_0x3322be,_0x3f2e34){_0x3f2e34=_0x3f2e34||0x1f4;return function(_0x2638b5){logger[_0x3425('0x24')](_0x2638b5[_0x3425('0x25')]);if(_0x2638b5[_0x3425('0x26')]){delete _0x2638b5[_0x3425('0x26')];}_0x3322be[_0x3425('0x18')](_0x3f2e34)[_0x3425('0x27')](_0x2638b5);};}exports['index']=function(_0x1ae04f,_0x453914){var _0x3ca2b7={},_0x27f416={},_0x1452b6={'count':0x0,'rows':[]};var _0x1b732a=_[_0x3425('0x28')](db[_0x3425('0x29')][_0x3425('0x2a')],function(_0x15aca6){return{'name':_0x15aca6[_0x3425('0x2b')],'type':_0x15aca6[_0x3425('0x2c')][_0x3425('0x2d')]};});_0x27f416[_0x3425('0x2e')]=_[_0x3425('0x28')](_0x1b732a,_0x3425('0x26'));_0x27f416[_0x3425('0x2f')]=_[_0x3425('0x30')](_0x1ae04f['query']);_0x27f416[_0x3425('0x31')]=_[_0x3425('0x32')](_0x27f416[_0x3425('0x2e')],_0x27f416['query']);_0x3ca2b7[_0x3425('0x33')]=_[_0x3425('0x32')](_0x27f416[_0x3425('0x2e')],qs[_0x3425('0x34')](_0x1ae04f[_0x3425('0x2f')][_0x3425('0x34')]));_0x3ca2b7[_0x3425('0x33')]=_0x3ca2b7[_0x3425('0x33')][_0x3425('0x35')]?_0x3ca2b7[_0x3425('0x33')]:_0x27f416[_0x3425('0x2e')];if(!_0x1ae04f[_0x3425('0x2f')]['hasOwnProperty'](_0x3425('0x36'))){_0x3ca2b7[_0x3425('0x1b')]=qs[_0x3425('0x1b')](_0x1ae04f[_0x3425('0x2f')][_0x3425('0x1b')]);_0x3ca2b7[_0x3425('0x1a')]=qs[_0x3425('0x1a')](_0x1ae04f[_0x3425('0x2f')][_0x3425('0x1a')]);}_0x3ca2b7[_0x3425('0x37')]=qs[_0x3425('0x38')](_0x1ae04f[_0x3425('0x2f')]['sort']);_0x3ca2b7[_0x3425('0x39')]=qs[_0x3425('0x31')](_[_0x3425('0x3a')](_0x1ae04f[_0x3425('0x2f')],_0x27f416[_0x3425('0x31')]),_0x1b732a);if(_0x1ae04f[_0x3425('0x2f')][_0x3425('0x3b')]){_0x3ca2b7[_0x3425('0x39')]=_[_0x3425('0x3c')](_0x3ca2b7[_0x3425('0x39')],{'$or':_[_0x3425('0x28')](_0x1b732a,function(_0x48f5dc){if(_0x48f5dc[_0x3425('0x2c')]!==_0x3425('0x3d')){var _0x526c3b={};_0x526c3b[_0x48f5dc[_0x3425('0x26')]]={'$like':'%'+_0x1ae04f[_0x3425('0x2f')][_0x3425('0x3b')]+'%'};return _0x526c3b;}})});}_0x3ca2b7=_[_0x3425('0x3c')]({},_0x3ca2b7,_0x1ae04f['options']);var _0x23733e={'where':_0x3ca2b7[_0x3425('0x39')]};return db[_0x3425('0x29')]['count'](_0x23733e)['then'](function(_0x40a959){_0x1452b6[_0x3425('0x1c')]=_0x40a959;if(_0x1ae04f[_0x3425('0x2f')][_0x3425('0x3e')]){_0x3ca2b7['include']=[{'all':!![]}];}return db[_0x3425('0x29')][_0x3425('0x3f')](_0x3ca2b7);})[_0x3425('0x22')](function(_0x175084){_0x1452b6[_0x3425('0x40')]=_0x175084;return _0x1452b6;})[_0x3425('0x22')](respondWithFilteredResult(_0x453914,_0x3ca2b7))['catch'](handleError(_0x453914,null));};exports[_0x3425('0x41')]=function(_0xfa49c0,_0x56348d){var _0x4a5fb1={'raw':!![],'where':{'id':_0xfa49c0['params']['id']}},_0x1b8633={};_0x1b8633[_0x3425('0x2e')]=_[_0x3425('0x30')](db[_0x3425('0x29')][_0x3425('0x2a')]);_0x1b8633[_0x3425('0x2f')]=_[_0x3425('0x30')](_0xfa49c0[_0x3425('0x2f')]);_0x1b8633['filters']=_['intersection'](_0x1b8633[_0x3425('0x2e')],_0x1b8633[_0x3425('0x2f')]);_0x4a5fb1[_0x3425('0x33')]=_[_0x3425('0x32')](_0x1b8633[_0x3425('0x2e')],qs[_0x3425('0x34')](_0xfa49c0['query'][_0x3425('0x34')]));_0x4a5fb1[_0x3425('0x33')]=_0x4a5fb1[_0x3425('0x33')][_0x3425('0x35')]?_0x4a5fb1[_0x3425('0x33')]:_0x1b8633[_0x3425('0x2e')];if(_0xfa49c0['query'][_0x3425('0x3e')]){_0x4a5fb1[_0x3425('0x42')]=[{'all':!![]}];}_0x4a5fb1=_['merge']({},_0x4a5fb1,_0xfa49c0[_0x3425('0x43')]);return db['ChatQueueReport']['find'](_0x4a5fb1)[_0x3425('0x22')](handleEntityNotFound(_0x56348d,null))[_0x3425('0x22')](respondWithResult(_0x56348d,null))[_0x3425('0x44')](handleError(_0x56348d,null));};exports['create']=function(_0x11715f,_0x4cb1f5){return db[_0x3425('0x29')][_0x3425('0x45')](_0x11715f['body'],{})[_0x3425('0x22')](respondWithResult(_0x4cb1f5,0xc9))[_0x3425('0x44')](handleError(_0x4cb1f5,null));};exports[_0x3425('0x21')]=function(_0x17626f,_0x357312){if(_0x17626f[_0x3425('0x46')]['id']){delete _0x17626f[_0x3425('0x46')]['id'];}return db[_0x3425('0x29')][_0x3425('0x47')]({'where':{'id':_0x17626f[_0x3425('0x48')]['id']}})[_0x3425('0x22')](handleEntityNotFound(_0x357312,null))['then'](saveUpdates(_0x17626f[_0x3425('0x46')],null))[_0x3425('0x22')](respondWithResult(_0x357312,null))['catch'](handleError(_0x357312,null));};exports[_0x3425('0x23')]=function(_0x397727,_0x4b2a9a){return db['ChatQueueReport'][_0x3425('0x47')]({'where':{'id':_0x397727[_0x3425('0x48')]['id']}})[_0x3425('0x22')](handleEntityNotFound(_0x4b2a9a,null))['then'](removeEntity(_0x4b2a9a,null))[_0x3425('0x44')](handleError(_0x4b2a9a,null));};exports[_0x3425('0x49')]=function(_0x3d4dff,_0x5eab7a){return db['ChatQueueReport'][_0x3425('0x49')]()[_0x3425('0x22')](respondWithResult(_0x5eab7a,null))[_0x3425('0x44')](handleError(_0x5eab7a,null));};
\ No newline at end of file
+var _0xba38=['where','pick','filter','merge','VIRTUAL','options','include','rows','catch','params','includeAll','create','body','find','describe','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','ChatQueueReport','rawAttributes','type','key','model','map','query','keys','filters','attributes','intersection','fields','length','nolimit','order','sort'];(function(_0x229415,_0x4d41ae){var _0x72cad2=function(_0x5e6a3a){while(--_0x5e6a3a){_0x229415['push'](_0x229415['shift']());}};_0x72cad2(++_0x4d41ae);}(_0xba38,0x190));var _0x8ba3=function(_0x1b0be3,_0x55b9ec){_0x1b0be3=_0x1b0be3-0x0;var _0x5a2433=_0xba38[_0x1b0be3];return _0x5a2433;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x8ba3('0x0'));var zipdir=require(_0x8ba3('0x1'));var jsonpatch=require(_0x8ba3('0x2'));var rp=require('request-promise');var moment=require(_0x8ba3('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x8ba3('0x4'));var util=require(_0x8ba3('0x5'));var path=require(_0x8ba3('0x6'));var sox=require(_0x8ba3('0x7'));var csv=require(_0x8ba3('0x8'));var ejs=require(_0x8ba3('0x9'));var fs=require('fs');var fs_extra=require(_0x8ba3('0xa'));var _=require(_0x8ba3('0xb'));var squel=require(_0x8ba3('0xc'));var crypto=require(_0x8ba3('0xd'));var jsforce=require(_0x8ba3('0xe'));var deskjs=require(_0x8ba3('0xf'));var toCsv=require('to-csv');var querystring=require(_0x8ba3('0x10'));var Papa=require(_0x8ba3('0x11'));var Redis=require('ioredis');var authService=require(_0x8ba3('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x8ba3('0x13'));var hardwareService=require(_0x8ba3('0x14'));var logger=require(_0x8ba3('0x15'))(_0x8ba3('0x16'));var utils=require(_0x8ba3('0x17'));var config=require(_0x8ba3('0x18'));var licenseUtil=require(_0x8ba3('0x19'));var db=require(_0x8ba3('0x1a'))['db'];function respondWithStatusCode(_0x923aa5,_0x5c8f5b){_0x5c8f5b=_0x5c8f5b||0xcc;return function(_0x1abd6e){if(_0x1abd6e){return _0x923aa5[_0x8ba3('0x1b')](_0x5c8f5b);}return _0x923aa5['status'](_0x5c8f5b)[_0x8ba3('0x1c')]();};}function respondWithResult(_0x4ef1d5,_0x859934){_0x859934=_0x859934||0xc8;return function(_0x59764d){if(_0x59764d){return _0x4ef1d5[_0x8ba3('0x1d')](_0x859934)[_0x8ba3('0x1e')](_0x59764d);}};}function respondWithFilteredResult(_0x57f76d,_0x2842b9){return function(_0x417960){if(_0x417960){var _0x48577c=typeof _0x2842b9[_0x8ba3('0x1f')]===_0x8ba3('0x20')&&typeof _0x2842b9['limit']==='undefined';var _0x47020f=_0x417960['count'];var _0x5a8f04=_0x48577c?0x0:_0x2842b9[_0x8ba3('0x1f')];var _0x563d61=_0x48577c?_0x417960['count']:_0x2842b9[_0x8ba3('0x1f')]+_0x2842b9['limit'];var _0x118c50;if(_0x563d61>=_0x47020f){_0x563d61=_0x47020f;_0x118c50=0xc8;}else{_0x118c50=0xce;}_0x57f76d['status'](_0x118c50);return _0x57f76d[_0x8ba3('0x21')](_0x8ba3('0x22'),_0x5a8f04+'-'+_0x563d61+'/'+_0x47020f)[_0x8ba3('0x1e')](_0x417960);}return null;};}function patchUpdates(_0x5bd852){return function(_0x1a8d6b){try{jsonpatch[_0x8ba3('0x23')](_0x1a8d6b,_0x5bd852,!![]);}catch(_0x2f264d){return BPromise[_0x8ba3('0x24')](_0x2f264d);}return _0x1a8d6b[_0x8ba3('0x25')]();};}function saveUpdates(_0x4a3a50,_0x581daa){return function(_0xb15432){if(_0xb15432){return _0xb15432[_0x8ba3('0x26')](_0x4a3a50)[_0x8ba3('0x27')](function(_0x11e3e7){return _0x11e3e7;});}return null;};}function removeEntity(_0x57f037,_0x543021){return function(_0x10f3e2){if(_0x10f3e2){return _0x10f3e2[_0x8ba3('0x28')]()[_0x8ba3('0x27')](function(){_0x57f037[_0x8ba3('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x199ad6,_0x56a391){return function(_0x2f253f){if(!_0x2f253f){_0x199ad6[_0x8ba3('0x1b')](0x194);}return _0x2f253f;};}function handleError(_0x80347a,_0x8b2237){_0x8b2237=_0x8b2237||0x1f4;return function(_0x43e306){logger[_0x8ba3('0x29')](_0x43e306[_0x8ba3('0x2a')]);if(_0x43e306[_0x8ba3('0x2b')]){delete _0x43e306[_0x8ba3('0x2b')];}_0x80347a[_0x8ba3('0x1d')](_0x8b2237)[_0x8ba3('0x2c')](_0x43e306);};}exports[_0x8ba3('0x2d')]=function(_0x16d189,_0x2df77c){var _0x309a89={},_0xee2109={},_0x148aac={'count':0x0,'rows':[]};var _0x4570d3=_['map'](db[_0x8ba3('0x2e')][_0x8ba3('0x2f')],function(_0x4f3b2b){return{'name':_0x4f3b2b['fieldName'],'type':_0x4f3b2b[_0x8ba3('0x30')][_0x8ba3('0x31')]};});_0xee2109[_0x8ba3('0x32')]=_[_0x8ba3('0x33')](_0x4570d3,_0x8ba3('0x2b'));_0xee2109[_0x8ba3('0x34')]=_[_0x8ba3('0x35')](_0x16d189[_0x8ba3('0x34')]);_0xee2109[_0x8ba3('0x36')]=_['intersection'](_0xee2109[_0x8ba3('0x32')],_0xee2109[_0x8ba3('0x34')]);_0x309a89[_0x8ba3('0x37')]=_[_0x8ba3('0x38')](_0xee2109[_0x8ba3('0x32')],qs[_0x8ba3('0x39')](_0x16d189[_0x8ba3('0x34')]['fields']));_0x309a89['attributes']=_0x309a89[_0x8ba3('0x37')][_0x8ba3('0x3a')]?_0x309a89[_0x8ba3('0x37')]:_0xee2109[_0x8ba3('0x32')];if(!_0x16d189['query']['hasOwnProperty'](_0x8ba3('0x3b'))){_0x309a89['limit']=qs['limit'](_0x16d189[_0x8ba3('0x34')]['limit']);_0x309a89[_0x8ba3('0x1f')]=qs[_0x8ba3('0x1f')](_0x16d189['query'][_0x8ba3('0x1f')]);}_0x309a89[_0x8ba3('0x3c')]=qs[_0x8ba3('0x3d')](_0x16d189[_0x8ba3('0x34')][_0x8ba3('0x3d')]);_0x309a89[_0x8ba3('0x3e')]=qs[_0x8ba3('0x36')](_[_0x8ba3('0x3f')](_0x16d189[_0x8ba3('0x34')],_0xee2109[_0x8ba3('0x36')]),_0x4570d3);if(_0x16d189[_0x8ba3('0x34')][_0x8ba3('0x40')]){_0x309a89['where']=_[_0x8ba3('0x41')](_0x309a89[_0x8ba3('0x3e')],{'$or':_[_0x8ba3('0x33')](_0x4570d3,function(_0x2ae0ae){if(_0x2ae0ae[_0x8ba3('0x30')]!==_0x8ba3('0x42')){var _0x3d1b84={};_0x3d1b84[_0x2ae0ae[_0x8ba3('0x2b')]]={'$like':'%'+_0x16d189[_0x8ba3('0x34')][_0x8ba3('0x40')]+'%'};return _0x3d1b84;}})});}_0x309a89=_[_0x8ba3('0x41')]({},_0x309a89,_0x16d189[_0x8ba3('0x43')]);var _0x497d1f={'where':_0x309a89[_0x8ba3('0x3e')]};return db['ChatQueueReport']['count'](_0x497d1f)[_0x8ba3('0x27')](function(_0x47870b){_0x148aac['count']=_0x47870b;if(_0x16d189['query']['includeAll']){_0x309a89[_0x8ba3('0x44')]=[{'all':!![]}];}return db['ChatQueueReport']['findAll'](_0x309a89);})[_0x8ba3('0x27')](function(_0x4883b7){_0x148aac[_0x8ba3('0x45')]=_0x4883b7;return _0x148aac;})[_0x8ba3('0x27')](respondWithFilteredResult(_0x2df77c,_0x309a89))[_0x8ba3('0x46')](handleError(_0x2df77c,null));};exports['show']=function(_0x5d979d,_0x5cb74a){var _0x4f524d={'raw':!![],'where':{'id':_0x5d979d[_0x8ba3('0x47')]['id']}},_0x31f5c8={};_0x31f5c8[_0x8ba3('0x32')]=_['keys'](db[_0x8ba3('0x2e')][_0x8ba3('0x2f')]);_0x31f5c8['query']=_[_0x8ba3('0x35')](_0x5d979d[_0x8ba3('0x34')]);_0x31f5c8[_0x8ba3('0x36')]=_['intersection'](_0x31f5c8[_0x8ba3('0x32')],_0x31f5c8[_0x8ba3('0x34')]);_0x4f524d[_0x8ba3('0x37')]=_['intersection'](_0x31f5c8[_0x8ba3('0x32')],qs['fields'](_0x5d979d[_0x8ba3('0x34')][_0x8ba3('0x39')]));_0x4f524d[_0x8ba3('0x37')]=_0x4f524d[_0x8ba3('0x37')][_0x8ba3('0x3a')]?_0x4f524d['attributes']:_0x31f5c8[_0x8ba3('0x32')];if(_0x5d979d['query'][_0x8ba3('0x48')]){_0x4f524d['include']=[{'all':!![]}];}_0x4f524d=_['merge']({},_0x4f524d,_0x5d979d['options']);return db[_0x8ba3('0x2e')]['find'](_0x4f524d)[_0x8ba3('0x27')](handleEntityNotFound(_0x5cb74a,null))[_0x8ba3('0x27')](respondWithResult(_0x5cb74a,null))[_0x8ba3('0x46')](handleError(_0x5cb74a,null));};exports[_0x8ba3('0x49')]=function(_0x2620cd,_0x211933){return db[_0x8ba3('0x2e')][_0x8ba3('0x49')](_0x2620cd['body'],{})[_0x8ba3('0x27')](respondWithResult(_0x211933,0xc9))[_0x8ba3('0x46')](handleError(_0x211933,null));};exports[_0x8ba3('0x26')]=function(_0x4c5571,_0x5b7671){if(_0x4c5571[_0x8ba3('0x4a')]['id']){delete _0x4c5571[_0x8ba3('0x4a')]['id'];}return db[_0x8ba3('0x2e')][_0x8ba3('0x4b')]({'where':{'id':_0x4c5571['params']['id']}})[_0x8ba3('0x27')](handleEntityNotFound(_0x5b7671,null))[_0x8ba3('0x27')](saveUpdates(_0x4c5571[_0x8ba3('0x4a')],null))['then'](respondWithResult(_0x5b7671,null))[_0x8ba3('0x46')](handleError(_0x5b7671,null));};exports[_0x8ba3('0x28')]=function(_0x30d962,_0x2ab289){return db[_0x8ba3('0x2e')][_0x8ba3('0x4b')]({'where':{'id':_0x30d962[_0x8ba3('0x47')]['id']}})['then'](handleEntityNotFound(_0x2ab289,null))[_0x8ba3('0x27')](removeEntity(_0x2ab289,null))[_0x8ba3('0x46')](handleError(_0x2ab289,null));};exports['describe']=function(_0x28dd6d,_0x31a65a){return db['ChatQueueReport'][_0x8ba3('0x4c')]()['then'](respondWithResult(_0x31a65a,null))[_0x8ba3('0x46')](handleError(_0x31a65a,null));};
\ No newline at end of file
index 5d5185f..ed8dbb6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./chatQueueReport.attributes','exports','define','report_chat_queue','uniqueid','lodash'];(function(_0x26a74d,_0x37ecfc){var _0xcbb1a3=function(_0x24b978){while(--_0x24b978){_0x26a74d['push'](_0x26a74d['shift']());}};_0xcbb1a3(++_0x37ecfc);}(_0xb10b,0x12a));var _0xbb10=function(_0x2fc284,_0x5d271c){_0x2fc284=_0x2fc284-0x0;var _0x221234=_0xb10b[_0x2fc284];return _0x221234;};'use strict';var _=require(_0xbb10('0x0'));var util=require('util');var logger=require(_0xbb10('0x1'))(_0xbb10('0x2'));var moment=require(_0xbb10('0x3'));var BPromise=require('bluebird');var rp=require(_0xbb10('0x4'));var fs=require('fs');var path=require(_0xbb10('0x5'));var rimraf=require(_0xbb10('0x6'));var config=require(_0xbb10('0x7'));var attributes=require(_0xbb10('0x8'));module[_0xbb10('0x9')]=function(_0x481979,_0x328583){return _0x481979[_0xbb10('0xa')]('ChatQueueReport',attributes,{'tableName':_0xbb10('0xb'),'paranoid':![],'indexes':[{'name':_0xbb10('0xc'),'fields':[_0xbb10('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x0713=['../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./chatQueueReport.attributes','exports','define','ChatQueueReport','report_chat_queue','uniqueid'];(function(_0x513545,_0x158f2e){var _0x18b7c5=function(_0x58514c){while(--_0x58514c){_0x513545['push'](_0x513545['shift']());}};_0x18b7c5(++_0x158f2e);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x3071('0x0'))(_0x3071('0x1'));var moment=require(_0x3071('0x2'));var BPromise=require(_0x3071('0x3'));var rp=require(_0x3071('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x3071('0x5'));var config=require(_0x3071('0x6'));var attributes=require(_0x3071('0x7'));module[_0x3071('0x8')]=function(_0xabd7b6,_0x41cf76){return _0xabd7b6[_0x3071('0x9')](_0x3071('0xa'),attributes,{'tableName':_0x3071('0xb'),'paranoid':![],'indexes':[{'name':_0x3071('0xc'),'fields':[_0x3071('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 394fb53..b3182f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d84=['where','limit','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','ChatQueueReport,\x20%s,\x20%s','request\x20sent','debug','ChatQueueReport,\x20%s,\x20%s,\x20%s','error','message','result','CreateChatQueueReport','options','raw','stringify','UpdateChatQueueReport','ChatQueueReport','update','body'];(function(_0x2e5c50,_0x4c7443){var _0x5b7bdd=function(_0x823b6){while(--_0x823b6){_0x2e5c50['push'](_0x2e5c50['shift']());}};_0x5b7bdd(++_0x4c7443);}(_0x5d84,0x82));var _0x45d8=function(_0x4bdedb,_0x315ed4){_0x4bdedb=_0x4bdedb-0x0;var _0x240371=_0x5d84[_0x4bdedb];return _0x240371;};'use strict';var _=require(_0x45d8('0x0'));var util=require(_0x45d8('0x1'));var moment=require(_0x45d8('0x2'));var BPromise=require('bluebird');var rs=require(_0x45d8('0x3'));var fs=require('fs');var Redis=require(_0x45d8('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x45d8('0x5'));var logger=require(_0x45d8('0x6'))(_0x45d8('0x7'));var config=require(_0x45d8('0x8'));var jayson=require(_0x45d8('0x9'));var client=jayson[_0x45d8('0xa')][_0x45d8('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1cf177,_0x6fe875,_0x128284){return new BPromise(function(_0x5d10a1,_0x343556){return client[_0x45d8('0xc')](_0x1cf177,_0x128284)[_0x45d8('0xd')](function(_0x4d2693){logger[_0x45d8('0xe')](_0x45d8('0xf'),_0x6fe875,_0x45d8('0x10'));logger[_0x45d8('0x11')](_0x45d8('0x12'),_0x6fe875,'request\x20sent',JSON['stringify'](_0x4d2693));if(_0x4d2693[_0x45d8('0x13')]){if(_0x4d2693['error']['code']===0x1f4){logger[_0x45d8('0x13')]('ChatQueueReport,\x20%s,\x20%s',_0x6fe875,_0x4d2693[_0x45d8('0x13')][_0x45d8('0x14')]);return _0x343556(_0x4d2693[_0x45d8('0x13')][_0x45d8('0x14')]);}logger[_0x45d8('0x13')](_0x45d8('0xf'),_0x6fe875,_0x4d2693[_0x45d8('0x13')][_0x45d8('0x14')]);return _0x5d10a1(_0x4d2693[_0x45d8('0x13')][_0x45d8('0x14')]);}else{logger[_0x45d8('0xe')](_0x45d8('0xf'),_0x6fe875,_0x45d8('0x10'));_0x5d10a1(_0x4d2693[_0x45d8('0x15')][_0x45d8('0x14')]);}})['catch'](function(_0x134bfa){logger[_0x45d8('0x13')](_0x45d8('0xf'),_0x6fe875,_0x134bfa);_0x343556(_0x134bfa);});});}exports[_0x45d8('0x16')]=function(_0x3999c2){var _0x16163d=this;return new Promise(function(_0x2074a5,_0x11efec){return db['ChatQueueReport']['create'](_0x3999c2['body'],{'raw':_0x3999c2[_0x45d8('0x17')]?_0x3999c2['options'][_0x45d8('0x18')]===undefined?!![]:![]:!![]})['then'](function(_0x112863){logger[_0x45d8('0xe')]('CreateChatQueueReport',_0x3999c2);logger[_0x45d8('0x11')](_0x45d8('0x16'),_0x3999c2,JSON[_0x45d8('0x19')](_0x112863));_0x2074a5(_0x112863);})['catch'](function(_0xb7d960){logger[_0x45d8('0x13')]('CreateChatQueueReport',_0xb7d960[_0x45d8('0x14')],_0x3999c2);_0x11efec(_0x16163d[_0x45d8('0x13')](0x1f4,_0xb7d960[_0x45d8('0x14')]));});});};exports[_0x45d8('0x1a')]=function(_0x35d706){var _0xb54e9c=this;return new Promise(function(_0x38d850,_0x19ab07){return db[_0x45d8('0x1b')][_0x45d8('0x1c')](_0x35d706[_0x45d8('0x1d')],{'raw':_0x35d706[_0x45d8('0x17')]?_0x35d706['options'][_0x45d8('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x35d706[_0x45d8('0x17')]?_0x35d706['options'][_0x45d8('0x1e')]||null:null,'attributes':_0x35d706['options']?_0x35d706[_0x45d8('0x17')]['attributes']||null:null,'limit':_0x35d706[_0x45d8('0x17')]?_0x35d706['options'][_0x45d8('0x1f')]||null:null})[_0x45d8('0xd')](function(_0x2c12a2){logger[_0x45d8('0xe')](_0x45d8('0x1a'),_0x35d706);logger[_0x45d8('0x11')](_0x45d8('0x1a'),_0x35d706,JSON[_0x45d8('0x19')](_0x2c12a2));_0x38d850(_0x2c12a2);})['catch'](function(_0x2749aa){logger['error'](_0x45d8('0x1a'),_0x2749aa[_0x45d8('0x14')],_0x35d706);_0x19ab07(_0xb54e9c[_0x45d8('0x13')](0x1f4,_0x2749aa[_0x45d8('0x14')]));});});};
\ No newline at end of file
+var _0xe16c=['../../mysqldb','../../config/utils','rpc','jayson/promise','client','then','info','request\x20sent','debug','ChatQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','message','ChatQueueReport,\x20%s,\x20%s','result','catch','CreateChatQueueReport','ChatQueueReport','body','options','raw','update','attributes','limit','UpdateChatQueueReport','util','moment','randomstring'];(function(_0x1b925b,_0x1ab3c9){var _0x275f07=function(_0x2ffbe4){while(--_0x2ffbe4){_0x1b925b['push'](_0x1b925b['shift']());}};_0x275f07(++_0x1ab3c9);}(_0xe16c,0x89));var _0xce16=function(_0x5c0119,_0x56937b){_0x5c0119=_0x5c0119-0x0;var _0x45d6f9=_0xe16c[_0x5c0119];return _0x45d6f9;};'use strict';var _=require('lodash');var util=require(_0xce16('0x0'));var moment=require(_0xce16('0x1'));var BPromise=require('bluebird');var rs=require(_0xce16('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xce16('0x3'))['db'];var utils=require(_0xce16('0x4'));var logger=require('../../config/logger')(_0xce16('0x5'));var config=require('../../config/environment');var jayson=require(_0xce16('0x6'));var client=jayson[_0xce16('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x48d3b6,_0x3b0f2b,_0x27004b){return new BPromise(function(_0x176418,_0x1a7de9){return client['request'](_0x48d3b6,_0x27004b)[_0xce16('0x8')](function(_0x2b19c4){logger[_0xce16('0x9')]('ChatQueueReport,\x20%s,\x20%s',_0x3b0f2b,_0xce16('0xa'));logger[_0xce16('0xb')](_0xce16('0xc'),_0x3b0f2b,'request\x20sent',JSON[_0xce16('0xd')](_0x2b19c4));if(_0x2b19c4[_0xce16('0xe')]){if(_0x2b19c4[_0xce16('0xe')]['code']===0x1f4){logger[_0xce16('0xe')]('ChatQueueReport,\x20%s,\x20%s',_0x3b0f2b,_0x2b19c4[_0xce16('0xe')][_0xce16('0xf')]);return _0x1a7de9(_0x2b19c4['error']['message']);}logger[_0xce16('0xe')](_0xce16('0x10'),_0x3b0f2b,_0x2b19c4[_0xce16('0xe')][_0xce16('0xf')]);return _0x176418(_0x2b19c4[_0xce16('0xe')]['message']);}else{logger['info'](_0xce16('0x10'),_0x3b0f2b,_0xce16('0xa'));_0x176418(_0x2b19c4[_0xce16('0x11')][_0xce16('0xf')]);}})[_0xce16('0x12')](function(_0x19843f){logger[_0xce16('0xe')]('ChatQueueReport,\x20%s,\x20%s',_0x3b0f2b,_0x19843f);_0x1a7de9(_0x19843f);});});}exports[_0xce16('0x13')]=function(_0x45f65e){var _0x313a82=this;return new Promise(function(_0x388d64,_0x482b34){return db[_0xce16('0x14')]['create'](_0x45f65e[_0xce16('0x15')],{'raw':_0x45f65e[_0xce16('0x16')]?_0x45f65e[_0xce16('0x16')][_0xce16('0x17')]===undefined?!![]:![]:!![]})[_0xce16('0x8')](function(_0x335c64){logger[_0xce16('0x9')](_0xce16('0x13'),_0x45f65e);logger[_0xce16('0xb')](_0xce16('0x13'),_0x45f65e,JSON[_0xce16('0xd')](_0x335c64));_0x388d64(_0x335c64);})[_0xce16('0x12')](function(_0x280c7e){logger[_0xce16('0xe')](_0xce16('0x13'),_0x280c7e['message'],_0x45f65e);_0x482b34(_0x313a82['error'](0x1f4,_0x280c7e['message']));});});};exports['UpdateChatQueueReport']=function(_0x54454f){var _0x377564=this;return new Promise(function(_0x3d1bda,_0x3baab6){return db[_0xce16('0x14')][_0xce16('0x18')](_0x54454f[_0xce16('0x15')],{'raw':_0x54454f[_0xce16('0x16')]?_0x54454f['options'][_0xce16('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x54454f[_0xce16('0x16')]?_0x54454f[_0xce16('0x16')]['where']||null:null,'attributes':_0x54454f[_0xce16('0x16')]?_0x54454f[_0xce16('0x16')][_0xce16('0x19')]||null:null,'limit':_0x54454f[_0xce16('0x16')]?_0x54454f[_0xce16('0x16')][_0xce16('0x1a')]||null:null})[_0xce16('0x8')](function(_0x57c19e){logger[_0xce16('0x9')]('UpdateChatQueueReport',_0x54454f);logger[_0xce16('0xb')]('UpdateChatQueueReport',_0x54454f,JSON[_0xce16('0xd')](_0x57c19e));_0x3d1bda(_0x57c19e);})[_0xce16('0x12')](function(_0x482106){logger[_0xce16('0xe')](_0xce16('0x1b'),_0x482106['message'],_0x54454f);_0x3baab6(_0x377564[_0xce16('0xe')](0x1f4,_0x482106[_0xce16('0xf')]));});});};
\ No newline at end of file
index 5657daf..37ec5c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae4d=['exports','multer','util','connect-timeout','express','Router','../../config/environment','./chatQueueReport.controller','isAuthenticated','index','get','/describe','/:id','show','post','create','put','delete','destroy'];(function(_0x338f2f,_0x39aff1){var _0x741aa3=function(_0x51fd58){while(--_0x51fd58){_0x338f2f['push'](_0x338f2f['shift']());}};_0x741aa3(++_0x39aff1);}(_0xae4d,0x157));var _0xdae4=function(_0x57deff,_0x2d8d5d){_0x57deff=_0x57deff-0x0;var _0x6ae725=_0xae4d[_0x57deff];return _0x6ae725;};'use strict';var multer=require(_0xdae4('0x0'));var util=require(_0xdae4('0x1'));var path=require('path');var timeout=require(_0xdae4('0x2'));var express=require(_0xdae4('0x3'));var router=express[_0xdae4('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xdae4('0x5'));var controller=require(_0xdae4('0x6'));router['get']('/',auth[_0xdae4('0x7')](),controller[_0xdae4('0x8')]);router[_0xdae4('0x9')](_0xdae4('0xa'),auth[_0xdae4('0x7')](),controller['describe']);router[_0xdae4('0x9')](_0xdae4('0xb'),auth[_0xdae4('0x7')](),controller[_0xdae4('0xc')]);router[_0xdae4('0xd')]('/',auth[_0xdae4('0x7')](),controller[_0xdae4('0xe')]);router[_0xdae4('0xf')](_0xdae4('0xb'),auth['isAuthenticated'](),controller['update']);router[_0xdae4('0x10')](_0xdae4('0xb'),auth[_0xdae4('0x7')](),controller[_0xdae4('0x11')]);module[_0xdae4('0x12')]=router;
\ No newline at end of file
+var _0x3106=['destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./chatQueueReport.controller','get','isAuthenticated','index','describe','/:id','show','create','put','update'];(function(_0x152449,_0x49f41d){var _0x5b58b2=function(_0x226c30){while(--_0x226c30){_0x152449['push'](_0x152449['shift']());}};_0x5b58b2(++_0x49f41d);}(_0x3106,0x1ba));var _0x6310=function(_0x5a0b5d,_0x573027){_0x5a0b5d=_0x5a0b5d-0x0;var _0x583ff7=_0x3106[_0x5a0b5d];return _0x583ff7;};'use strict';var multer=require(_0x6310('0x0'));var util=require('util');var path=require(_0x6310('0x1'));var timeout=require(_0x6310('0x2'));var express=require(_0x6310('0x3'));var router=express[_0x6310('0x4')]();var fs_extra=require(_0x6310('0x5'));var auth=require(_0x6310('0x6'));var interaction=require(_0x6310('0x7'));var config=require('../../config/environment');var controller=require(_0x6310('0x8'));router[_0x6310('0x9')]('/',auth[_0x6310('0xa')](),controller[_0x6310('0xb')]);router[_0x6310('0x9')]('/describe',auth[_0x6310('0xa')](),controller[_0x6310('0xc')]);router[_0x6310('0x9')](_0x6310('0xd'),auth[_0x6310('0xa')](),controller[_0x6310('0xe')]);router['post']('/',auth[_0x6310('0xa')](),controller[_0x6310('0xf')]);router[_0x6310('0x10')](_0x6310('0xd'),auth['isAuthenticated'](),controller[_0x6310('0x11')]);router['delete'](_0x6310('0xd'),auth[_0x6310('0xa')](),controller[_0x6310('0x12')]);module[_0x6310('0x13')]=router;
\ No newline at end of file
index d9d1cfe..7d7c6a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa88=['account','agent','queue','DATE','NOW','moment','sequelize','exports','STRING'];(function(_0x1b0688,_0x2469e6){var _0x3e9b7b=function(_0x41bdd4){while(--_0x41bdd4){_0x1b0688['push'](_0x1b0688['shift']());}};_0x3e9b7b(++_0x2469e6);}(_0xaa88,0x137));var _0x8aa8=function(_0x21f931,_0x598b2d){_0x21f931=_0x21f931-0x0;var _0x3f083c=_0xaa88[_0x21f931];return _0x3f083c;};'use strict';var moment=require(_0x8aa8('0x0'));var Sequelize=require(_0x8aa8('0x1'));module[_0x8aa8('0x2')]={'uniqueid':{'type':Sequelize[_0x8aa8('0x3')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x8aa8('0x4'),_0x8aa8('0x5'),_0x8aa8('0x6')),'allowNull':![],'defaultValue':_0x8aa8('0x6')},'transferredAt':{'type':Sequelize[_0x8aa8('0x7')],'allowNull':![],'defaultValue':Sequelize[_0x8aa8('0x8')]}};
\ No newline at end of file
+var _0xedd9=['account','agent','queue','NOW','sequelize','exports','STRING','ENUM'];(function(_0xf9e9f7,_0x52b94a){var _0x4cda79=function(_0x23e728){while(--_0x23e728){_0xf9e9f7['push'](_0xf9e9f7['shift']());}};_0x4cda79(++_0x52b94a);}(_0xedd9,0xfc));var _0x9edd=function(_0x5c10b7,_0x5a7049){_0x5c10b7=_0x5c10b7-0x0;var _0xdb8e8d=_0xedd9[_0x5c10b7];return _0xdb8e8d;};'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 bbe1989..8a22579 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ea4=['fields','length','nolimit','offset','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','create','body','describe','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','end','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','ChatTransferReport','fieldName','type','key','map','query','keys','filters','intersection','model','attributes'];(function(_0x6c993a,_0x5ea3ab){var _0x27f547=function(_0x22df20){while(--_0x22df20){_0x6c993a['push'](_0x6c993a['shift']());}};_0x27f547(++_0x5ea3ab);}(_0x3ea4,0xb1));var _0x43ea=function(_0x30033a,_0x5ce4a6){_0x30033a=_0x30033a-0x0;var _0x5e3518=_0x3ea4[_0x30033a];return _0x5e3518;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x43ea('0x0'));var zipdir=require(_0x43ea('0x1'));var jsonpatch=require(_0x43ea('0x2'));var rp=require('request-promise');var moment=require(_0x43ea('0x3'));var BPromise=require(_0x43ea('0x4'));var Mustache=require(_0x43ea('0x5'));var util=require(_0x43ea('0x6'));var path=require(_0x43ea('0x7'));var sox=require(_0x43ea('0x8'));var csv=require(_0x43ea('0x9'));var ejs=require(_0x43ea('0xa'));var fs=require('fs');var fs_extra=require(_0x43ea('0xb'));var _=require('lodash');var squel=require(_0x43ea('0xc'));var crypto=require(_0x43ea('0xd'));var jsforce=require(_0x43ea('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x43ea('0x9'));var querystring=require(_0x43ea('0xf'));var Papa=require(_0x43ea('0x10'));var Redis=require(_0x43ea('0x11'));var authService=require(_0x43ea('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x43ea('0x13'));var logger=require(_0x43ea('0x14'))(_0x43ea('0x15'));var utils=require(_0x43ea('0x16'));var config=require(_0x43ea('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x43ea('0x18'))['db'];function respondWithStatusCode(_0x306545,_0x5d7ec4){_0x5d7ec4=_0x5d7ec4||0xcc;return function(_0x42e9b5){if(_0x42e9b5){return _0x306545['sendStatus'](_0x5d7ec4);}return _0x306545[_0x43ea('0x19')](_0x5d7ec4)[_0x43ea('0x1a')]();};}function respondWithResult(_0x59416f,_0xe50572){_0xe50572=_0xe50572||0xc8;return function(_0xf3dbf0){if(_0xf3dbf0){return _0x59416f['status'](_0xe50572)['json'](_0xf3dbf0);}};}function respondWithFilteredResult(_0x208a73,_0x230a9b){return function(_0x26eb6c){if(_0x26eb6c){var _0x30b30d=typeof _0x230a9b['offset']===_0x43ea('0x1b')&&typeof _0x230a9b[_0x43ea('0x1c')]===_0x43ea('0x1b');var _0x365e10=_0x26eb6c[_0x43ea('0x1d')];var _0x281756=_0x30b30d?0x0:_0x230a9b['offset'];var _0x3d5c41=_0x30b30d?_0x26eb6c[_0x43ea('0x1d')]:_0x230a9b['offset']+_0x230a9b[_0x43ea('0x1c')];var _0x46b895;if(_0x3d5c41>=_0x365e10){_0x3d5c41=_0x365e10;_0x46b895=0xc8;}else{_0x46b895=0xce;}_0x208a73[_0x43ea('0x19')](_0x46b895);return _0x208a73[_0x43ea('0x1e')](_0x43ea('0x1f'),_0x281756+'-'+_0x3d5c41+'/'+_0x365e10)[_0x43ea('0x20')](_0x26eb6c);}return null;};}function patchUpdates(_0x1a92e2){return function(_0x3b308a){try{jsonpatch[_0x43ea('0x21')](_0x3b308a,_0x1a92e2,!![]);}catch(_0x1b1a75){return BPromise[_0x43ea('0x22')](_0x1b1a75);}return _0x3b308a[_0x43ea('0x23')]();};}function saveUpdates(_0x1ce0d7,_0x360903){return function(_0x43a2c6){if(_0x43a2c6){return _0x43a2c6[_0x43ea('0x24')](_0x1ce0d7)[_0x43ea('0x25')](function(_0x4895cb){return _0x4895cb;});}return null;};}function removeEntity(_0x344272,_0x38eef7){return function(_0x211077){if(_0x211077){return _0x211077[_0x43ea('0x26')]()[_0x43ea('0x25')](function(){_0x344272[_0x43ea('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x22c93d,_0x3876f3){return function(_0x286c1a){if(!_0x286c1a){_0x22c93d[_0x43ea('0x27')](0x194);}return _0x286c1a;};}function handleError(_0xd545b3,_0x4abaf1){_0x4abaf1=_0x4abaf1||0x1f4;return function(_0xd1e4b6){logger[_0x43ea('0x28')](_0xd1e4b6[_0x43ea('0x29')]);if(_0xd1e4b6[_0x43ea('0x2a')]){delete _0xd1e4b6[_0x43ea('0x2a')];}_0xd545b3['status'](_0x4abaf1)['send'](_0xd1e4b6);};}exports['index']=function(_0x25af3e,_0x52c57a){var _0x37f09b={},_0x3d08f5={},_0x3f8c65={'count':0x0,'rows':[]};var _0x23b251=_['map'](db[_0x43ea('0x2b')]['rawAttributes'],function(_0x3d7202){return{'name':_0x3d7202[_0x43ea('0x2c')],'type':_0x3d7202[_0x43ea('0x2d')][_0x43ea('0x2e')]};});_0x3d08f5['model']=_[_0x43ea('0x2f')](_0x23b251,'name');_0x3d08f5[_0x43ea('0x30')]=_[_0x43ea('0x31')](_0x25af3e[_0x43ea('0x30')]);_0x3d08f5[_0x43ea('0x32')]=_[_0x43ea('0x33')](_0x3d08f5[_0x43ea('0x34')],_0x3d08f5[_0x43ea('0x30')]);_0x37f09b[_0x43ea('0x35')]=_[_0x43ea('0x33')](_0x3d08f5[_0x43ea('0x34')],qs[_0x43ea('0x36')](_0x25af3e[_0x43ea('0x30')][_0x43ea('0x36')]));_0x37f09b[_0x43ea('0x35')]=_0x37f09b[_0x43ea('0x35')][_0x43ea('0x37')]?_0x37f09b[_0x43ea('0x35')]:_0x3d08f5[_0x43ea('0x34')];if(!_0x25af3e['query']['hasOwnProperty'](_0x43ea('0x38'))){_0x37f09b[_0x43ea('0x1c')]=qs[_0x43ea('0x1c')](_0x25af3e[_0x43ea('0x30')][_0x43ea('0x1c')]);_0x37f09b[_0x43ea('0x39')]=qs[_0x43ea('0x39')](_0x25af3e[_0x43ea('0x30')][_0x43ea('0x39')]);}_0x37f09b[_0x43ea('0x3a')]=qs['sort'](_0x25af3e[_0x43ea('0x30')][_0x43ea('0x3b')]);_0x37f09b[_0x43ea('0x3c')]=qs[_0x43ea('0x32')](_[_0x43ea('0x3d')](_0x25af3e[_0x43ea('0x30')],_0x3d08f5['filters']),_0x23b251);if(_0x25af3e[_0x43ea('0x30')][_0x43ea('0x3e')]){_0x37f09b[_0x43ea('0x3c')]=_['merge'](_0x37f09b[_0x43ea('0x3c')],{'$or':_[_0x43ea('0x2f')](_0x23b251,function(_0x2ea3bb){if(_0x2ea3bb[_0x43ea('0x2d')]!==_0x43ea('0x3f')){var _0x201e44={};_0x201e44[_0x2ea3bb[_0x43ea('0x2a')]]={'$like':'%'+_0x25af3e['query'][_0x43ea('0x3e')]+'%'};return _0x201e44;}})});}_0x37f09b=_[_0x43ea('0x40')]({},_0x37f09b,_0x25af3e[_0x43ea('0x41')]);var _0x4f4092={'where':_0x37f09b[_0x43ea('0x3c')]};return db[_0x43ea('0x2b')][_0x43ea('0x1d')](_0x4f4092)[_0x43ea('0x25')](function(_0x2b50bc){_0x3f8c65['count']=_0x2b50bc;if(_0x25af3e[_0x43ea('0x30')][_0x43ea('0x42')]){_0x37f09b[_0x43ea('0x43')]=[{'all':!![]}];}return db[_0x43ea('0x2b')][_0x43ea('0x44')](_0x37f09b);})[_0x43ea('0x25')](function(_0x50e2c7){_0x3f8c65[_0x43ea('0x45')]=_0x50e2c7;return _0x3f8c65;})[_0x43ea('0x25')](respondWithFilteredResult(_0x52c57a,_0x37f09b))[_0x43ea('0x46')](handleError(_0x52c57a,null));};exports[_0x43ea('0x47')]=function(_0x4ff421,_0x268f11){var _0x2a5d2f={'raw':!![],'where':{'id':_0x4ff421[_0x43ea('0x48')]['id']}},_0x773bfe={};_0x773bfe[_0x43ea('0x34')]=_[_0x43ea('0x31')](db['ChatTransferReport'][_0x43ea('0x49')]);_0x773bfe[_0x43ea('0x30')]=_['keys'](_0x4ff421[_0x43ea('0x30')]);_0x773bfe[_0x43ea('0x32')]=_[_0x43ea('0x33')](_0x773bfe['model'],_0x773bfe['query']);_0x2a5d2f['attributes']=_[_0x43ea('0x33')](_0x773bfe[_0x43ea('0x34')],qs[_0x43ea('0x36')](_0x4ff421[_0x43ea('0x30')][_0x43ea('0x36')]));_0x2a5d2f[_0x43ea('0x35')]=_0x2a5d2f['attributes'][_0x43ea('0x37')]?_0x2a5d2f['attributes']:_0x773bfe[_0x43ea('0x34')];if(_0x4ff421[_0x43ea('0x30')]['includeAll']){_0x2a5d2f[_0x43ea('0x43')]=[{'all':!![]}];}_0x2a5d2f=_['merge']({},_0x2a5d2f,_0x4ff421[_0x43ea('0x41')]);return db['ChatTransferReport']['find'](_0x2a5d2f)[_0x43ea('0x25')](handleEntityNotFound(_0x268f11,null))[_0x43ea('0x25')](respondWithResult(_0x268f11,null))[_0x43ea('0x46')](handleError(_0x268f11,null));};exports[_0x43ea('0x4a')]=function(_0x25ed48,_0x4d5225){return db['ChatTransferReport'][_0x43ea('0x4a')](_0x25ed48[_0x43ea('0x4b')],{})[_0x43ea('0x25')](respondWithResult(_0x4d5225,0xc9))[_0x43ea('0x46')](handleError(_0x4d5225,null));};exports[_0x43ea('0x24')]=function(_0x523295,_0x33b365){if(_0x523295[_0x43ea('0x4b')]['id']){delete _0x523295[_0x43ea('0x4b')]['id'];}return db[_0x43ea('0x2b')]['find']({'where':{'id':_0x523295[_0x43ea('0x48')]['id']}})[_0x43ea('0x25')](handleEntityNotFound(_0x33b365,null))[_0x43ea('0x25')](saveUpdates(_0x523295[_0x43ea('0x4b')],null))[_0x43ea('0x25')](respondWithResult(_0x33b365,null))[_0x43ea('0x46')](handleError(_0x33b365,null));};exports[_0x43ea('0x26')]=function(_0x5bff6e,_0x4677cb){return db['ChatTransferReport']['find']({'where':{'id':_0x5bff6e[_0x43ea('0x48')]['id']}})['then'](handleEntityNotFound(_0x4677cb,null))['then'](removeEntity(_0x4677cb,null))[_0x43ea('0x46')](handleError(_0x4677cb,null));};exports[_0x43ea('0x4c')]=function(_0x10e663,_0x2d8d93){return db[_0x43ea('0x2b')][_0x43ea('0x4c')]()[_0x43ea('0x25')](respondWithResult(_0x2d8d93,null))[_0x43ea('0x46')](handleError(_0x2d8d93,null));};
\ No newline at end of file
+var _0xc0ad=['then','stack','name','send','map','ChatTransferReport','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','merge','filter','options','includeAll','include','findAll','catch','length','find','create','update','body','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','util','path','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','limit','count','Content-Range','apply','save'];(function(_0x32bf8b,_0x2ac32b){var _0x1e5ef5=function(_0x36acec){while(--_0x36acec){_0x32bf8b['push'](_0x32bf8b['shift']());}};_0x1e5ef5(++_0x2ac32b);}(_0xc0ad,0x1bb));var _0xdc0a=function(_0x22da2d,_0x409090){_0x22da2d=_0x22da2d-0x0;var _0x515e3a=_0xc0ad[_0x22da2d];return _0x515e3a;};'use strict';var emlformat=require(_0xdc0a('0x0'));var rimraf=require(_0xdc0a('0x1'));var zipdir=require(_0xdc0a('0x2'));var jsonpatch=require(_0xdc0a('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xdc0a('0x4'));var path=require(_0xdc0a('0x5'));var sox=require('sox');var csv=require(_0xdc0a('0x6'));var ejs=require(_0xdc0a('0x7'));var fs=require('fs');var fs_extra=require(_0xdc0a('0x8'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xdc0a('0x9'));var jsforce=require(_0xdc0a('0xa'));var deskjs=require(_0xdc0a('0xb'));var toCsv=require(_0xdc0a('0x6'));var querystring=require(_0xdc0a('0xc'));var Papa=require(_0xdc0a('0xd'));var Redis=require(_0xdc0a('0xe'));var authService=require(_0xdc0a('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0xdc0a('0x10'));var hardwareService=require(_0xdc0a('0x11'));var logger=require(_0xdc0a('0x12'))(_0xdc0a('0x13'));var utils=require(_0xdc0a('0x14'));var config=require(_0xdc0a('0x15'));var licenseUtil=require(_0xdc0a('0x16'));var db=require(_0xdc0a('0x17'))['db'];function respondWithStatusCode(_0x26a65a,_0x53a9fc){_0x53a9fc=_0x53a9fc||0xcc;return function(_0x8db2fc){if(_0x8db2fc){return _0x26a65a['sendStatus'](_0x53a9fc);}return _0x26a65a[_0xdc0a('0x18')](_0x53a9fc)[_0xdc0a('0x19')]();};}function respondWithResult(_0x1d3cb9,_0x5a522c){_0x5a522c=_0x5a522c||0xc8;return function(_0x20de2d){if(_0x20de2d){return _0x1d3cb9[_0xdc0a('0x18')](_0x5a522c)[_0xdc0a('0x1a')](_0x20de2d);}};}function respondWithFilteredResult(_0x857750,_0x4a5687){return function(_0x13e02b){if(_0x13e02b){var _0x1ff49e=typeof _0x4a5687[_0xdc0a('0x1b')]==='undefined'&&typeof _0x4a5687[_0xdc0a('0x1c')]==='undefined';var _0x322ff5=_0x13e02b[_0xdc0a('0x1d')];var _0x3db9fd=_0x1ff49e?0x0:_0x4a5687[_0xdc0a('0x1b')];var _0x263aaa=_0x1ff49e?_0x13e02b[_0xdc0a('0x1d')]:_0x4a5687['offset']+_0x4a5687[_0xdc0a('0x1c')];var _0x373ea4;if(_0x263aaa>=_0x322ff5){_0x263aaa=_0x322ff5;_0x373ea4=0xc8;}else{_0x373ea4=0xce;}_0x857750[_0xdc0a('0x18')](_0x373ea4);return _0x857750['set'](_0xdc0a('0x1e'),_0x3db9fd+'-'+_0x263aaa+'/'+_0x322ff5)[_0xdc0a('0x1a')](_0x13e02b);}return null;};}function patchUpdates(_0x51996b){return function(_0x3ff82a){try{jsonpatch[_0xdc0a('0x1f')](_0x3ff82a,_0x51996b,!![]);}catch(_0x598067){return BPromise['reject'](_0x598067);}return _0x3ff82a[_0xdc0a('0x20')]();};}function saveUpdates(_0x38ec29,_0x7a6dde){return function(_0x917e59){if(_0x917e59){return _0x917e59['update'](_0x38ec29)[_0xdc0a('0x21')](function(_0x40455b){return _0x40455b;});}return null;};}function removeEntity(_0xc98d36,_0xf54a62){return function(_0x1a924c){if(_0x1a924c){return _0x1a924c['destroy']()[_0xdc0a('0x21')](function(){_0xc98d36[_0xdc0a('0x18')](0xcc)[_0xdc0a('0x19')]();});}};}function handleEntityNotFound(_0x531579,_0x3fdc75){return function(_0x3ac9c7){if(!_0x3ac9c7){_0x531579['sendStatus'](0x194);}return _0x3ac9c7;};}function handleError(_0x2e6612,_0x481290){_0x481290=_0x481290||0x1f4;return function(_0x4b69ae){logger['error'](_0x4b69ae[_0xdc0a('0x22')]);if(_0x4b69ae[_0xdc0a('0x23')]){delete _0x4b69ae[_0xdc0a('0x23')];}_0x2e6612[_0xdc0a('0x18')](_0x481290)[_0xdc0a('0x24')](_0x4b69ae);};}exports['index']=function(_0x18c24c,_0x3d7940){var _0x2d8091={},_0x2120e4={},_0xb9fb64={'count':0x0,'rows':[]};var _0x358c21=_[_0xdc0a('0x25')](db[_0xdc0a('0x26')][_0xdc0a('0x27')],function(_0x32f2b4){return{'name':_0x32f2b4['fieldName'],'type':_0x32f2b4[_0xdc0a('0x28')][_0xdc0a('0x29')]};});_0x2120e4[_0xdc0a('0x2a')]=_[_0xdc0a('0x25')](_0x358c21,_0xdc0a('0x23'));_0x2120e4[_0xdc0a('0x2b')]=_[_0xdc0a('0x2c')](_0x18c24c['query']);_0x2120e4[_0xdc0a('0x2d')]=_[_0xdc0a('0x2e')](_0x2120e4[_0xdc0a('0x2a')],_0x2120e4['query']);_0x2d8091[_0xdc0a('0x2f')]=_[_0xdc0a('0x2e')](_0x2120e4[_0xdc0a('0x2a')],qs[_0xdc0a('0x30')](_0x18c24c[_0xdc0a('0x2b')]['fields']));_0x2d8091[_0xdc0a('0x2f')]=_0x2d8091[_0xdc0a('0x2f')]['length']?_0x2d8091[_0xdc0a('0x2f')]:_0x2120e4[_0xdc0a('0x2a')];if(!_0x18c24c[_0xdc0a('0x2b')][_0xdc0a('0x31')](_0xdc0a('0x32'))){_0x2d8091[_0xdc0a('0x1c')]=qs[_0xdc0a('0x1c')](_0x18c24c[_0xdc0a('0x2b')][_0xdc0a('0x1c')]);_0x2d8091[_0xdc0a('0x1b')]=qs['offset'](_0x18c24c[_0xdc0a('0x2b')][_0xdc0a('0x1b')]);}_0x2d8091[_0xdc0a('0x33')]=qs[_0xdc0a('0x34')](_0x18c24c[_0xdc0a('0x2b')][_0xdc0a('0x34')]);_0x2d8091[_0xdc0a('0x35')]=qs[_0xdc0a('0x2d')](_['pick'](_0x18c24c[_0xdc0a('0x2b')],_0x2120e4['filters']),_0x358c21);if(_0x18c24c['query']['filter']){_0x2d8091[_0xdc0a('0x35')]=_[_0xdc0a('0x36')](_0x2d8091[_0xdc0a('0x35')],{'$or':_['map'](_0x358c21,function(_0x78dcea){if(_0x78dcea[_0xdc0a('0x28')]!=='VIRTUAL'){var _0x5b3ef4={};_0x5b3ef4[_0x78dcea[_0xdc0a('0x23')]]={'$like':'%'+_0x18c24c[_0xdc0a('0x2b')][_0xdc0a('0x37')]+'%'};return _0x5b3ef4;}})});}_0x2d8091=_['merge']({},_0x2d8091,_0x18c24c[_0xdc0a('0x38')]);var _0x20614a={'where':_0x2d8091['where']};return db[_0xdc0a('0x26')]['count'](_0x20614a)[_0xdc0a('0x21')](function(_0x5080cc){_0xb9fb64[_0xdc0a('0x1d')]=_0x5080cc;if(_0x18c24c['query'][_0xdc0a('0x39')]){_0x2d8091[_0xdc0a('0x3a')]=[{'all':!![]}];}return db['ChatTransferReport'][_0xdc0a('0x3b')](_0x2d8091);})[_0xdc0a('0x21')](function(_0x20dc44){_0xb9fb64['rows']=_0x20dc44;return _0xb9fb64;})[_0xdc0a('0x21')](respondWithFilteredResult(_0x3d7940,_0x2d8091))[_0xdc0a('0x3c')](handleError(_0x3d7940,null));};exports['show']=function(_0x2db9d6,_0x4dd9a7){var _0x6b3957={'raw':!![],'where':{'id':_0x2db9d6['params']['id']}},_0x2d274a={};_0x2d274a[_0xdc0a('0x2a')]=_[_0xdc0a('0x2c')](db[_0xdc0a('0x26')][_0xdc0a('0x27')]);_0x2d274a[_0xdc0a('0x2b')]=_['keys'](_0x2db9d6[_0xdc0a('0x2b')]);_0x2d274a['filters']=_[_0xdc0a('0x2e')](_0x2d274a['model'],_0x2d274a[_0xdc0a('0x2b')]);_0x6b3957['attributes']=_[_0xdc0a('0x2e')](_0x2d274a[_0xdc0a('0x2a')],qs[_0xdc0a('0x30')](_0x2db9d6[_0xdc0a('0x2b')][_0xdc0a('0x30')]));_0x6b3957[_0xdc0a('0x2f')]=_0x6b3957[_0xdc0a('0x2f')][_0xdc0a('0x3d')]?_0x6b3957['attributes']:_0x2d274a[_0xdc0a('0x2a')];if(_0x2db9d6[_0xdc0a('0x2b')][_0xdc0a('0x39')]){_0x6b3957[_0xdc0a('0x3a')]=[{'all':!![]}];}_0x6b3957=_[_0xdc0a('0x36')]({},_0x6b3957,_0x2db9d6['options']);return db['ChatTransferReport'][_0xdc0a('0x3e')](_0x6b3957)['then'](handleEntityNotFound(_0x4dd9a7,null))[_0xdc0a('0x21')](respondWithResult(_0x4dd9a7,null))['catch'](handleError(_0x4dd9a7,null));};exports[_0xdc0a('0x3f')]=function(_0x98a20,_0x167c80){return db['ChatTransferReport'][_0xdc0a('0x3f')](_0x98a20['body'],{})[_0xdc0a('0x21')](respondWithResult(_0x167c80,0xc9))['catch'](handleError(_0x167c80,null));};exports[_0xdc0a('0x40')]=function(_0x1c6e97,_0x227d50){if(_0x1c6e97[_0xdc0a('0x41')]['id']){delete _0x1c6e97[_0xdc0a('0x41')]['id'];}return db[_0xdc0a('0x26')][_0xdc0a('0x3e')]({'where':{'id':_0x1c6e97['params']['id']}})[_0xdc0a('0x21')](handleEntityNotFound(_0x227d50,null))[_0xdc0a('0x21')](saveUpdates(_0x1c6e97['body'],null))[_0xdc0a('0x21')](respondWithResult(_0x227d50,null))['catch'](handleError(_0x227d50,null));};exports[_0xdc0a('0x42')]=function(_0x5877c0,_0x31deb7){return db[_0xdc0a('0x26')][_0xdc0a('0x3e')]({'where':{'id':_0x5877c0['params']['id']}})[_0xdc0a('0x21')](handleEntityNotFound(_0x31deb7,null))[_0xdc0a('0x21')](removeEntity(_0x31deb7,null))['catch'](handleError(_0x31deb7,null));};exports[_0xdc0a('0x43')]=function(_0x1bcd81,_0x321a8f){return db[_0xdc0a('0x26')]['describe']()[_0xdc0a('0x21')](respondWithResult(_0x321a8f,null))[_0xdc0a('0x3c')](handleError(_0x321a8f,null));};
\ No newline at end of file
index 9ab1f55..92e501e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5023=['../../config/environment','./chatTransferReport.attributes','exports','define','report_chat_transfer','uniqueid','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x34ac87,_0x2315b8){var _0x457d55=function(_0x34795d){while(--_0x34795d){_0x34ac87['push'](_0x34ac87['shift']());}};_0x457d55(++_0x2315b8);}(_0x5023,0x123));var _0x3502=function(_0x4f8a2a,_0x38c0e2){_0x4f8a2a=_0x4f8a2a-0x0;var _0x384c7d=_0x5023[_0x4f8a2a];return _0x384c7d;};'use strict';var _=require(_0x3502('0x0'));var util=require(_0x3502('0x1'));var logger=require(_0x3502('0x2'))(_0x3502('0x3'));var moment=require(_0x3502('0x4'));var BPromise=require(_0x3502('0x5'));var rp=require(_0x3502('0x6'));var fs=require('fs');var path=require(_0x3502('0x7'));var rimraf=require(_0x3502('0x8'));var config=require(_0x3502('0x9'));var attributes=require(_0x3502('0xa'));module[_0x3502('0xb')]=function(_0x3abb50,_0x316cb5){return _0x3abb50[_0x3502('0xc')]('ChatTransferReport',attributes,{'tableName':_0x3502('0xd'),'paranoid':![],'indexes':[{'name':_0x3502('0xe'),'fields':[_0x3502('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x73d8=['define','ChatTransferReport','report_chat_transfer','uniqueid','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./chatTransferReport.attributes','exports'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x73d8,0x1e4));var _0x873d=function(_0x550ca9,_0x1f24d4){_0x550ca9=_0x550ca9-0x0;var _0x2ea355=_0x73d8[_0x550ca9];return _0x2ea355;};'use strict';var _=require(_0x873d('0x0'));var util=require('util');var logger=require(_0x873d('0x1'))(_0x873d('0x2'));var moment=require(_0x873d('0x3'));var BPromise=require(_0x873d('0x4'));var rp=require(_0x873d('0x5'));var fs=require('fs');var path=require(_0x873d('0x6'));var rimraf=require(_0x873d('0x7'));var config=require(_0x873d('0x8'));var attributes=require(_0x873d('0x9'));module[_0x873d('0xa')]=function(_0x2b1ce9,_0x481f1b){return _0x2b1ce9[_0x873d('0xb')](_0x873d('0xc'),attributes,{'tableName':_0x873d('0xd'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x873d('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index a841d4f..1d70d5b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5922=['request','then','info','request\x20sent','debug','ChatTransferReport,\x20%s,\x20%s,\x20%s','error','ChatTransferReport,\x20%s,\x20%s','message','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http'];(function(_0x8a969d,_0x339d9f){var _0x1d8dc7=function(_0x283ec0){while(--_0x283ec0){_0x8a969d['push'](_0x8a969d['shift']());}};_0x1d8dc7(++_0x339d9f);}(_0x5922,0x9b));var _0x2592=function(_0x5447fd,_0x52a6b5){_0x5447fd=_0x5447fd-0x0;var _0x15b28a=_0x5922[_0x5447fd];return _0x15b28a;};'use strict';var _=require(_0x2592('0x0'));var util=require(_0x2592('0x1'));var moment=require('moment');var BPromise=require(_0x2592('0x2'));var rs=require(_0x2592('0x3'));var fs=require('fs');var Redis=require(_0x2592('0x4'));var db=require(_0x2592('0x5'))['db'];var utils=require(_0x2592('0x6'));var logger=require(_0x2592('0x7'))(_0x2592('0x8'));var config=require(_0x2592('0x9'));var jayson=require(_0x2592('0xa'));var client=jayson[_0x2592('0xb')][_0x2592('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x551311,_0x3573c2,_0x13758d){return new BPromise(function(_0x398028,_0x23541c){return client[_0x2592('0xd')](_0x551311,_0x13758d)[_0x2592('0xe')](function(_0x237974){logger[_0x2592('0xf')]('ChatTransferReport,\x20%s,\x20%s',_0x3573c2,_0x2592('0x10'));logger[_0x2592('0x11')](_0x2592('0x12'),_0x3573c2,'request\x20sent',JSON['stringify'](_0x237974));if(_0x237974[_0x2592('0x13')]){if(_0x237974['error']['code']===0x1f4){logger[_0x2592('0x13')](_0x2592('0x14'),_0x3573c2,_0x237974[_0x2592('0x13')][_0x2592('0x15')]);return _0x23541c(_0x237974['error'][_0x2592('0x15')]);}logger[_0x2592('0x13')]('ChatTransferReport,\x20%s,\x20%s',_0x3573c2,_0x237974['error']['message']);return _0x398028(_0x237974[_0x2592('0x13')][_0x2592('0x15')]);}else{logger[_0x2592('0xf')](_0x2592('0x14'),_0x3573c2,'request\x20sent');_0x398028(_0x237974[_0x2592('0x16')][_0x2592('0x15')]);}})[_0x2592('0x17')](function(_0x19229b){logger[_0x2592('0x13')](_0x2592('0x14'),_0x3573c2,_0x19229b);_0x23541c(_0x19229b);});});}
\ No newline at end of file
+var _0x79a0=['bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','ChatTransferReport,\x20%s,\x20%s','request\x20sent','ChatTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment'];(function(_0x3dc65c,_0x3a5e6a){var _0x5cd9ea=function(_0x5c668f){while(--_0x5c668f){_0x3dc65c['push'](_0x3dc65c['shift']());}};_0x5cd9ea(++_0x3a5e6a);}(_0x79a0,0xf7));var _0x079a=function(_0x594534,_0x22df85){_0x594534=_0x594534-0x0;var _0x37aa7f=_0x79a0[_0x594534];return _0x37aa7f;};'use strict';var _=require(_0x079a('0x0'));var util=require(_0x079a('0x1'));var moment=require(_0x079a('0x2'));var BPromise=require(_0x079a('0x3'));var rs=require(_0x079a('0x4'));var fs=require('fs');var Redis=require(_0x079a('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x079a('0x6'));var logger=require(_0x079a('0x7'))(_0x079a('0x8'));var config=require(_0x079a('0x9'));var jayson=require(_0x079a('0xa'));var client=jayson[_0x079a('0xb')][_0x079a('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x29901c,_0x30a5af,_0x26be74){return new BPromise(function(_0x59f17a,_0x51e09c){return client[_0x079a('0xd')](_0x29901c,_0x26be74)[_0x079a('0xe')](function(_0x2e3157){logger[_0x079a('0xf')](_0x079a('0x10'),_0x30a5af,_0x079a('0x11'));logger['debug'](_0x079a('0x12'),_0x30a5af,'request\x20sent',JSON[_0x079a('0x13')](_0x2e3157));if(_0x2e3157['error']){if(_0x2e3157[_0x079a('0x14')][_0x079a('0x15')]===0x1f4){logger[_0x079a('0x14')]('ChatTransferReport,\x20%s,\x20%s',_0x30a5af,_0x2e3157[_0x079a('0x14')][_0x079a('0x16')]);return _0x51e09c(_0x2e3157[_0x079a('0x14')]['message']);}logger['error'](_0x079a('0x10'),_0x30a5af,_0x2e3157[_0x079a('0x14')][_0x079a('0x16')]);return _0x59f17a(_0x2e3157[_0x079a('0x14')]['message']);}else{logger[_0x079a('0xf')](_0x079a('0x10'),_0x30a5af,_0x079a('0x11'));_0x59f17a(_0x2e3157[_0x079a('0x17')][_0x079a('0x16')]);}})[_0x079a('0x18')](function(_0x5d41c0){logger[_0x079a('0x14')](_0x079a('0x10'),_0x30a5af,_0x5d41c0);_0x51e09c(_0x5d41c0);});});}
\ No newline at end of file
index 0243bf7..426c1c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c98=['path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatTransferReport.controller','get','index','/describe','isAuthenticated','describe','show','post','create','put','/:id','delete','destroy','exports','multer','util'];(function(_0x22c235,_0x47feb7){var _0x38ab0e=function(_0x43fdbc){while(--_0x43fdbc){_0x22c235['push'](_0x22c235['shift']());}};_0x38ab0e(++_0x47feb7);}(_0x5c98,0x9f));var _0x85c9=function(_0x16db32,_0x3a6175){_0x16db32=_0x16db32-0x0;var _0x43a8e1=_0x5c98[_0x16db32];return _0x43a8e1;};'use strict';var multer=require(_0x85c9('0x0'));var util=require(_0x85c9('0x1'));var path=require(_0x85c9('0x2'));var timeout=require(_0x85c9('0x3'));var express=require(_0x85c9('0x4'));var router=express[_0x85c9('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x85c9('0x6'));var interaction=require(_0x85c9('0x7'));var config=require(_0x85c9('0x8'));var controller=require(_0x85c9('0x9'));router[_0x85c9('0xa')]('/',auth['isAuthenticated'](),controller[_0x85c9('0xb')]);router[_0x85c9('0xa')](_0x85c9('0xc'),auth[_0x85c9('0xd')](),controller[_0x85c9('0xe')]);router[_0x85c9('0xa')]('/:id',auth['isAuthenticated'](),controller[_0x85c9('0xf')]);router[_0x85c9('0x10')]('/',auth[_0x85c9('0xd')](),controller[_0x85c9('0x11')]);router[_0x85c9('0x12')](_0x85c9('0x13'),auth['isAuthenticated'](),controller['update']);router[_0x85c9('0x14')](_0x85c9('0x13'),auth['isAuthenticated'](),controller[_0x85c9('0x15')]);module[_0x85c9('0x16')]=router;
\ No newline at end of file
+var _0xe458=['../../config/environment','./chatTransferReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0xafd731,_0x95a99a){var _0xad582e=function(_0xd8ed52){while(--_0xd8ed52){_0xafd731['push'](_0xafd731['shift']());}};_0xad582e(++_0x95a99a);}(_0xe458,0x152));var _0x8e45=function(_0x3d1641,_0x3cfac9){_0x3d1641=_0x3d1641-0x0;var _0x16e952=_0xe458[_0x3d1641];return _0x16e952;};'use strict';var multer=require(_0x8e45('0x0'));var util=require(_0x8e45('0x1'));var path=require(_0x8e45('0x2'));var timeout=require(_0x8e45('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x8e45('0x4'));var auth=require(_0x8e45('0x5'));var interaction=require(_0x8e45('0x6'));var config=require(_0x8e45('0x7'));var controller=require(_0x8e45('0x8'));router[_0x8e45('0x9')]('/',auth[_0x8e45('0xa')](),controller[_0x8e45('0xb')]);router['get'](_0x8e45('0xc'),auth[_0x8e45('0xa')](),controller[_0x8e45('0xd')]);router['get'](_0x8e45('0xe'),auth[_0x8e45('0xa')](),controller[_0x8e45('0xf')]);router[_0x8e45('0x10')]('/',auth['isAuthenticated'](),controller[_0x8e45('0x11')]);router[_0x8e45('0x12')]('/:id',auth['isAuthenticated'](),controller[_0x8e45('0x13')]);router[_0x8e45('0x14')](_0x8e45('0xe'),auth[_0x8e45('0xa')](),controller[_0x8e45('0x15')]);module[_0x8e45('0x16')]=router;
\ No newline at end of file
index 29ab9ae..aadf3d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x923d=['Skip','Feedback','star','thumb','stringify','input','name','getDataValue','onlineForm','parse','setDataValue','TEXT','Comments','Leave\x20your\x20comments','offlineForm','generate','All\x20of\x20our\x20agents\x20are\x20busy\x20at\x20this\x20time.\x20Your\x20chat\x20is\x20very\x20important\x20to\x20us.','Please\x20hold\x20and\x20we\x20will\x20answer\x20your\x20request\x20as\x20soon\x20as\x20possible.','New\x20offline\x20message\x20from\x20websiteName','You\x20received\x20a\x20new\x20offline\x20message\x20from\x20websiteName.\x20Here\x20you\x20can\x20find\x20the\x20details\x20of\x20the\x20request:','Your\x20request\x20has\x20not\x20been\x20processed.','Send','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','bottom_right','alternate','#fafafa','System','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','mandatoryDispositionPauseId','mandatoryDisposition','Generated\x20by\x20XCALLY\x20Motion','exports','STRING','address','email','Agent','#011F6A','INTEGER','BOOLEAN','ENUM','rounded','We\x20are\x20here!','Contact\x20us','Powered\x20by\x20xCALLY','Do\x20you\x20want\x20to\x20close\x20the\x20interaction?','Form\x20properly\x20submitted','Form\x20submission\x20error','Note','Type\x20a\x20message','Thanks\x20you\x20for\x20your\x20time!'];(function(_0x14dbd2,_0x573674){var _0x4c3c04=function(_0x11d99f){while(--_0x11d99f){_0x14dbd2['push'](_0x14dbd2['shift']());}};_0x4c3c04(++_0x573674);}(_0x923d,0x17d));var _0xd923=function(_0x440aa3,_0x3ca449){_0x440aa3=_0x440aa3-0x0;var _0x799766=_0x923d[_0x440aa3];return _0x799766;};'use strict';var Sequelize=require('sequelize');var rs=require('randomstring');module[_0xd923('0x0')]={'name':{'type':Sequelize[_0xd923('0x1')],'allowNull':![]},'address':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xd923('0x2')},'description':{'type':Sequelize[_0xd923('0x1')]},'mapKey':{'type':Sequelize[_0xd923('0x1')],'defaultValue':_0xd923('0x3')},'mapKeyOffline':{'type':Sequelize[_0xd923('0x1')],'defaultValue':'email'},'key':{'type':Sequelize[_0xd923('0x1')],'allowNull':![]},'agentAlias':{'type':Sequelize[_0xd923('0x1')],'defaultValue':_0xd923('0x4')},'customerAlias':{'type':Sequelize['STRING'],'defaultValue':'Me'},'color':{'type':Sequelize[_0xd923('0x1')],'allowNull':![],'defaultValue':_0xd923('0x5'),'validate':{'notEmpty':!![]}},'color_button':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'#011F6A','validate':{'notEmpty':!![]}},'textColor':{'type':Sequelize[_0xd923('0x1')],'allowNull':![],'defaultValue':'#ffffff','validate':{'notEmpty':!![]}},'fontSize':{'type':Sequelize[_0xd923('0x6')],'defaultValue':0xf},'remote':{'type':Sequelize[_0xd923('0x1')]},'animation':{'type':Sequelize[_0xd923('0x7')],'defaultValue':!![]},'header_shape':{'type':Sequelize[_0xd923('0x8')](_0xd923('0x9'),'squared'),'defaultValue':_0xd923('0x9')},'header_online':{'type':Sequelize['STRING'],'defaultValue':_0xd923('0xa')},'start_chat_button':{'type':Sequelize[_0xd923('0x1')],'defaultValue':'Chat'},'offline_chat_button':{'type':Sequelize[_0xd923('0x1')],'defaultValue':'Send'},'header_offline':{'type':Sequelize['STRING'],'defaultValue':_0xd923('0xb')},'download_transcript':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'timeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'whiteLabel':{'type':Sequelize[_0xd923('0x1')],'defaultValue':_0xd923('0xc')},'defaultWhiteLabel':{'type':Sequelize[_0xd923('0x7')],'defaultValue':!![]},'sitepic':{'type':Sequelize['TEXT']},'closingQuestion':{'type':Sequelize['STRING'],'defaultValue':_0xd923('0xd')},'formSubmitSuccessMessage':{'type':Sequelize[_0xd923('0x1')],'defaultValue':_0xd923('0xe')},'formSubmitFailureMessage':{'type':Sequelize[_0xd923('0x1')],'defaultValue':_0xd923('0xf')},'noteTitle':{'type':Sequelize[_0xd923('0x1')],'defaultValue':_0xd923('0x10')},'placeholderMessage':{'type':Sequelize[_0xd923('0x1')],'defaultValue':_0xd923('0x11')},'closingMessage':{'type':Sequelize['STRING'],'defaultValue':_0xd923('0x12')},'closingMessageButton':{'type':Sequelize[_0xd923('0x1')],'defaultValue':'Send'},'skipMessageButton':{'type':Sequelize['STRING'],'defaultValue':_0xd923('0x13')},'conditionAgreement':{'type':Sequelize[_0xd923('0x7')],'defaultValue':![]},'enableRating':{'type':Sequelize[_0xd923('0x7')],'defaultValue':![]},'enableFeedback':{'type':Sequelize[_0xd923('0x7')],'defaultValue':![]},'enableSendButton':{'type':Sequelize[_0xd923('0x7')],'defaultValue':![]},'feedbackTitle':{'type':Sequelize[_0xd923('0x1')],'defaultValue':_0xd923('0x14')},'ratingType':{'type':Sequelize[_0xd923('0x8')](_0xd923('0x15'),_0xd923('0x16')),'defaultValue':_0xd923('0x15')},'ratingStarsNumber':{'type':Sequelize[_0xd923('0x6')],'defaultValue':0x5},'onlineForm':{'type':Sequelize['TEXT'],'defaultValue':function(){return JSON[_0xd923('0x17')]({'items':[{'type':_0xd923('0x18'),'variable':null,'config':{'placeholder':_0xd923('0x19'),'type':'text','required':!![]},'props':{'title':_0xd923('0x19'),'helpText':''}},{'type':_0xd923('0x18'),'props':{'title':_0xd923('0x3'),'helpText':''},'config':{'required':!![],'placeholder':'email','type':_0xd923('0x3')},'variable':null}],'fromKey':0x1});},'get':function(){return this[_0xd923('0x1a')](_0xd923('0x1b'))?JSON[_0xd923('0x1c')](this[_0xd923('0x1a')]('onlineForm')):{};},'set':function(_0x5c2781){return this[_0xd923('0x1d')](_0xd923('0x1b'),JSON[_0xd923('0x17')](_0x5c2781));}},'offlineForm':{'type':Sequelize[_0xd923('0x1e')],'defaultValue':function(){return JSON[_0xd923('0x17')]({'items':[{'type':_0xd923('0x18'),'props':{'title':'email','helpText':''},'config':{'required':!![],'placeholder':_0xd923('0x3'),'type':_0xd923('0x3')},'variable':null},{'type':'textarea','config':{'placeholder':'Comments'},'props':{'title':_0xd923('0x1f'),'helpText':_0xd923('0x20')}}],'fromKey':0x0});},'get':function(){return this[_0xd923('0x1a')](_0xd923('0x21'))?JSON[_0xd923('0x1c')](this[_0xd923('0x1a')]('offlineForm')):{};},'set':function(_0x2552a3){return this['setDataValue'](_0xd923('0x21'),JSON[_0xd923('0x17')](_0x2552a3));}},'token':{'type':Sequelize[_0xd923('0x1')],'defaultValue':function(){return rs[_0xd923('0x22')]();}},'autoclose':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'enableCustomerWriting':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'forwardTranscript':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'forwardTranscriptMessage':{'type':Sequelize['STRING']},'forwardOffline':{'type':Sequelize[_0xd923('0x7')],'defaultValue':![]},'forwardOfflineAddress':{'type':Sequelize[_0xd923('0x1')]},'waitingTitle':{'type':Sequelize[_0xd923('0x1')],'defaultValue':_0xd923('0x23')},'waitingMessage':{'type':Sequelize[_0xd923('0x1')],'defaultValue':_0xd923('0x24')},'offlineMessageSubject':{'type':Sequelize[_0xd923('0x1')],'defaultValue':_0xd923('0x25')},'offlineMessageBody':{'type':Sequelize[_0xd923('0x1')],'defaultValue':_0xd923('0x26')},'enableUnmanagedNote':{'type':Sequelize[_0xd923('0x7')],'defaultValue':!![]},'unmanagedMessage':{'type':Sequelize[_0xd923('0x1')],'defaultValue':_0xd923('0x27')},'skipUnmanaged':{'type':Sequelize['STRING'],'defaultValue':_0xd923('0x13')},'sendUnmanaged':{'type':Sequelize['STRING'],'defaultValue':_0xd923('0x28')},'enableCustomerAttachment':{'type':Sequelize[_0xd923('0x7')],'defaultValue':![]},'enableCustomerCheckmarks':{'type':Sequelize[_0xd923('0x7')],'defaultValue':![]},'agentAvatar':{'type':Sequelize[_0xd923('0x1e')]},'showAgentAvatar':{'type':Sequelize[_0xd923('0x7')],'defaultValue':![]},'timezone':{'type':Sequelize['STRING']},'notificationTemplate':{'type':Sequelize[_0xd923('0x1e')],'defaultValue':function(){return _0xd923('0x29');}},'notificationSound':{'type':Sequelize[_0xd923('0x7')],'defaultValue':!![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'hideWhenOffline':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentIdentifier':{'type':Sequelize[_0xd923('0x1')],'defaultValue':'website_alias'},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'alignment':{'type':Sequelize['STRING'],'defaultValue':_0xd923('0x2a')},'verticalAlignment':{'type':Sequelize[_0xd923('0x6')],'defaultValue':0x1e},'messagesAlignment':{'type':Sequelize['STRING'],'defaultValue':_0xd923('0x2b')},'defaultTitle':{'type':Sequelize['STRING']},'customerAvatar':{'type':Sequelize[_0xd923('0x1e')]},'showCustomerAvatar':{'type':Sequelize[_0xd923('0x7')],'defaultValue':![]},'messageFontSize':{'type':Sequelize[_0xd923('0x6')],'defaultValue':0xc},'backgroundColor':{'type':Sequelize[_0xd923('0x1')],'allowNull':![],'defaultValue':_0xd923('0x2c'),'validate':{'notEmpty':!![]}},'queueTransfer':{'type':Sequelize[_0xd923('0x7')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xd923('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xd923('0x7')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xd923('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'systemAlias':{'type':Sequelize[_0xd923('0x1')],'defaultValue':_0xd923('0x2d')},'systemAvatar':{'type':Sequelize[_0xd923('0x1e')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0xd923('0x6')],'comment':_0xd923('0x2e')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x5cc35a){if(!_0x5cc35a)this['setDataValue'](_0xd923('0x2f'),null);this['setDataValue'](_0xd923('0x30'),_0x5cc35a);}},'vidaooEscalation':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'vidaooApiKey':{'type':Sequelize[_0xd923('0x1')]},'vidaooTopic':{'type':Sequelize[_0xd923('0x1')],'allowNull':![],'defaultValue':_0xd923('0x31')},'vidaooNote':{'type':Sequelize[_0xd923('0x1')],'defaultValue':function(){return'Meeting\x20generated\x20for\x20interaction\x20#{{interaction.id}}\x20by\x20{{agent.name}}';}},'vidaooMetadata':{'type':Sequelize[_0xd923('0x1e')],'defaultValue':null},'openNewInteraction':{'type':Sequelize[_0xd923('0x7')],'defaultValue':![],'allowNull':!![]},'subjectOffline':{'type':Sequelize[_0xd923('0x1e')]}};
\ No newline at end of file
+var _0x233a=['Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','mandatoryDisposition','Generated\x20by\x20XCALLY\x20Motion','sequelize','exports','STRING','email','Agent','#011F6A','#ffffff','INTEGER','rounded','squared','We\x20are\x20here!','Chat','Send','Contact\x20us','BOOLEAN','Powered\x20by\x20xCALLY','TEXT','Do\x20you\x20want\x20to\x20close\x20the\x20interaction?','Form\x20properly\x20submitted','Form\x20submission\x20error','Type\x20a\x20message','Thanks\x20you\x20for\x20your\x20time!','Feedback','ENUM','star','stringify','input','name','text','parse','onlineForm','textarea','Comments','getDataValue','offlineForm','setDataValue','generate','All\x20of\x20our\x20agents\x20are\x20busy\x20at\x20this\x20time.\x20Your\x20chat\x20is\x20very\x20important\x20to\x20us.','Please\x20hold\x20and\x20we\x20will\x20answer\x20your\x20request\x20as\x20soon\x20as\x20possible.','Your\x20request\x20has\x20not\x20been\x20processed.','Skip','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','website_alias','alternate','#fafafa','System','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'];(function(_0xaa97cd,_0x4543f4){var _0x248972=function(_0x79e00a){while(--_0x79e00a){_0xaa97cd['push'](_0xaa97cd['shift']());}};_0x248972(++_0x4543f4);}(_0x233a,0x9d));var _0xa233=function(_0xf52b11,_0x2157c0){_0xf52b11=_0xf52b11-0x0;var _0x43e89e=_0x233a[_0xf52b11];return _0x43e89e;};'use strict';var Sequelize=require(_0xa233('0x0'));var rs=require('randomstring');module[_0xa233('0x1')]={'name':{'type':Sequelize[_0xa233('0x2')],'allowNull':![]},'address':{'type':Sequelize[_0xa233('0x2')],'allowNull':![],'unique':'address'},'description':{'type':Sequelize[_0xa233('0x2')]},'mapKey':{'type':Sequelize[_0xa233('0x2')],'defaultValue':_0xa233('0x3')},'mapKeyOffline':{'type':Sequelize[_0xa233('0x2')],'defaultValue':_0xa233('0x3')},'key':{'type':Sequelize[_0xa233('0x2')],'allowNull':![]},'agentAlias':{'type':Sequelize[_0xa233('0x2')],'defaultValue':_0xa233('0x4')},'customerAlias':{'type':Sequelize[_0xa233('0x2')],'defaultValue':'Me'},'color':{'type':Sequelize[_0xa233('0x2')],'allowNull':![],'defaultValue':_0xa233('0x5'),'validate':{'notEmpty':!![]}},'color_button':{'type':Sequelize[_0xa233('0x2')],'allowNull':![],'defaultValue':_0xa233('0x5'),'validate':{'notEmpty':!![]}},'textColor':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xa233('0x6'),'validate':{'notEmpty':!![]}},'fontSize':{'type':Sequelize[_0xa233('0x7')],'defaultValue':0xf},'remote':{'type':Sequelize['STRING']},'animation':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'header_shape':{'type':Sequelize['ENUM'](_0xa233('0x8'),_0xa233('0x9')),'defaultValue':_0xa233('0x8')},'header_online':{'type':Sequelize[_0xa233('0x2')],'defaultValue':_0xa233('0xa')},'start_chat_button':{'type':Sequelize[_0xa233('0x2')],'defaultValue':_0xa233('0xb')},'offline_chat_button':{'type':Sequelize[_0xa233('0x2')],'defaultValue':_0xa233('0xc')},'header_offline':{'type':Sequelize[_0xa233('0x2')],'defaultValue':_0xa233('0xd')},'download_transcript':{'type':Sequelize[_0xa233('0xe')],'defaultValue':!![]},'timeout':{'type':Sequelize[_0xa233('0x7')],'defaultValue':0x0},'whiteLabel':{'type':Sequelize[_0xa233('0x2')],'defaultValue':_0xa233('0xf')},'defaultWhiteLabel':{'type':Sequelize[_0xa233('0xe')],'defaultValue':!![]},'sitepic':{'type':Sequelize[_0xa233('0x10')]},'closingQuestion':{'type':Sequelize[_0xa233('0x2')],'defaultValue':_0xa233('0x11')},'formSubmitSuccessMessage':{'type':Sequelize['STRING'],'defaultValue':_0xa233('0x12')},'formSubmitFailureMessage':{'type':Sequelize[_0xa233('0x2')],'defaultValue':_0xa233('0x13')},'noteTitle':{'type':Sequelize[_0xa233('0x2')],'defaultValue':'Note'},'placeholderMessage':{'type':Sequelize[_0xa233('0x2')],'defaultValue':_0xa233('0x14')},'closingMessage':{'type':Sequelize[_0xa233('0x2')],'defaultValue':_0xa233('0x15')},'closingMessageButton':{'type':Sequelize[_0xa233('0x2')],'defaultValue':'Send'},'skipMessageButton':{'type':Sequelize['STRING'],'defaultValue':'Skip'},'conditionAgreement':{'type':Sequelize[_0xa233('0xe')],'defaultValue':![]},'enableRating':{'type':Sequelize[_0xa233('0xe')],'defaultValue':![]},'enableFeedback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enableSendButton':{'type':Sequelize[_0xa233('0xe')],'defaultValue':![]},'feedbackTitle':{'type':Sequelize[_0xa233('0x2')],'defaultValue':_0xa233('0x16')},'ratingType':{'type':Sequelize[_0xa233('0x17')]('star','thumb'),'defaultValue':_0xa233('0x18')},'ratingStarsNumber':{'type':Sequelize[_0xa233('0x7')],'defaultValue':0x5},'onlineForm':{'type':Sequelize['TEXT'],'defaultValue':function(){return JSON[_0xa233('0x19')]({'items':[{'type':_0xa233('0x1a'),'variable':null,'config':{'placeholder':_0xa233('0x1b'),'type':_0xa233('0x1c'),'required':!![]},'props':{'title':_0xa233('0x1b'),'helpText':''}},{'type':_0xa233('0x1a'),'props':{'title':_0xa233('0x3'),'helpText':''},'config':{'required':!![],'placeholder':'email','type':_0xa233('0x3')},'variable':null}],'fromKey':0x1});},'get':function(){return this['getDataValue']('onlineForm')?JSON[_0xa233('0x1d')](this['getDataValue'](_0xa233('0x1e'))):{};},'set':function(_0x514bbb){return this['setDataValue'](_0xa233('0x1e'),JSON['stringify'](_0x514bbb));}},'offlineForm':{'type':Sequelize[_0xa233('0x10')],'defaultValue':function(){return JSON['stringify']({'items':[{'type':'input','props':{'title':'email','helpText':''},'config':{'required':!![],'placeholder':_0xa233('0x3'),'type':_0xa233('0x3')},'variable':null},{'type':_0xa233('0x1f'),'config':{'placeholder':_0xa233('0x20')},'props':{'title':_0xa233('0x20'),'helpText':'Leave\x20your\x20comments'}}],'fromKey':0x0});},'get':function(){return this[_0xa233('0x21')](_0xa233('0x22'))?JSON[_0xa233('0x1d')](this[_0xa233('0x21')](_0xa233('0x22'))):{};},'set':function(_0x712445){return this[_0xa233('0x23')]('offlineForm',JSON[_0xa233('0x19')](_0x712445));}},'token':{'type':Sequelize[_0xa233('0x2')],'defaultValue':function(){return rs[_0xa233('0x24')]();}},'autoclose':{'type':Sequelize[_0xa233('0xe')],'defaultValue':!![]},'enableCustomerWriting':{'type':Sequelize[_0xa233('0xe')],'defaultValue':![]},'forwardTranscript':{'type':Sequelize[_0xa233('0xe')],'defaultValue':![]},'forwardTranscriptMessage':{'type':Sequelize['STRING']},'forwardOffline':{'type':Sequelize[_0xa233('0xe')],'defaultValue':![]},'forwardOfflineAddress':{'type':Sequelize['STRING']},'waitingTitle':{'type':Sequelize[_0xa233('0x2')],'defaultValue':_0xa233('0x25')},'waitingMessage':{'type':Sequelize['STRING'],'defaultValue':_0xa233('0x26')},'offlineMessageSubject':{'type':Sequelize['STRING'],'defaultValue':'New\x20offline\x20message\x20from\x20websiteName'},'offlineMessageBody':{'type':Sequelize[_0xa233('0x2')],'defaultValue':'You\x20received\x20a\x20new\x20offline\x20message\x20from\x20websiteName.\x20Here\x20you\x20can\x20find\x20the\x20details\x20of\x20the\x20request:'},'enableUnmanagedNote':{'type':Sequelize[_0xa233('0xe')],'defaultValue':!![]},'unmanagedMessage':{'type':Sequelize[_0xa233('0x2')],'defaultValue':_0xa233('0x27')},'skipUnmanaged':{'type':Sequelize[_0xa233('0x2')],'defaultValue':_0xa233('0x28')},'sendUnmanaged':{'type':Sequelize[_0xa233('0x2')],'defaultValue':_0xa233('0xc')},'enableCustomerAttachment':{'type':Sequelize[_0xa233('0xe')],'defaultValue':![]},'enableCustomerCheckmarks':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentAvatar':{'type':Sequelize[_0xa233('0x10')]},'showAgentAvatar':{'type':Sequelize[_0xa233('0xe')],'defaultValue':![]},'timezone':{'type':Sequelize[_0xa233('0x2')]},'notificationTemplate':{'type':Sequelize[_0xa233('0x10')],'defaultValue':function(){return _0xa233('0x29');}},'notificationSound':{'type':Sequelize[_0xa233('0xe')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xa233('0xe')],'defaultValue':![]},'hideWhenOffline':{'type':Sequelize[_0xa233('0xe')],'defaultValue':![]},'agentIdentifier':{'type':Sequelize[_0xa233('0x2')],'defaultValue':_0xa233('0x2a')},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'alignment':{'type':Sequelize[_0xa233('0x2')],'defaultValue':'bottom_right'},'verticalAlignment':{'type':Sequelize[_0xa233('0x7')],'defaultValue':0x1e},'messagesAlignment':{'type':Sequelize[_0xa233('0x2')],'defaultValue':_0xa233('0x2b')},'defaultTitle':{'type':Sequelize['STRING']},'customerAvatar':{'type':Sequelize[_0xa233('0x10')]},'showCustomerAvatar':{'type':Sequelize[_0xa233('0xe')],'defaultValue':![]},'messageFontSize':{'type':Sequelize['INTEGER'],'defaultValue':0xc},'backgroundColor':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xa233('0x2c'),'validate':{'notEmpty':!![]}},'queueTransfer':{'type':Sequelize[_0xa233('0xe')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xa233('0xe')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'systemAlias':{'type':Sequelize[_0xa233('0x2')],'defaultValue':_0xa233('0x2d')},'systemAvatar':{'type':Sequelize[_0xa233('0x10')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0xa233('0x7')],'comment':_0xa233('0x2e')},'mandatoryDisposition':{'type':Sequelize[_0xa233('0xe')],'defaultValue':![],'comment':_0xa233('0x2f'),'set':function(_0x28a0a9){if(!_0x28a0a9)this['setDataValue'](_0xa233('0x30'),null);this[_0xa233('0x23')](_0xa233('0x31'),_0x28a0a9);}},'vidaooEscalation':{'type':Sequelize[_0xa233('0xe')],'defaultValue':![]},'vidaooApiKey':{'type':Sequelize['STRING']},'vidaooTopic':{'type':Sequelize[_0xa233('0x2')],'allowNull':![],'defaultValue':_0xa233('0x32')},'vidaooNote':{'type':Sequelize[_0xa233('0x2')],'defaultValue':function(){return'Meeting\x20generated\x20for\x20interaction\x20#{{interaction.id}}\x20by\x20{{agent.name}}';}},'vidaooMetadata':{'type':Sequelize['TEXT'],'defaultValue':null},'openNewInteraction':{'type':Sequelize[_0xa233('0xe')],'defaultValue':![],'allowNull':!![]},'subjectOffline':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index fe18326..e81b40e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x704d=['ChatMessage','AttachmentId','UserId','User','waitForTheAssignedAgent','Start','startRouting','EventManager','offline','files','createdAt','send','mapKeyOffline\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKeyOffline','mapKeyOffline\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','MailAccount','findOrCreate','server/files/templates/chatOfflineMessage.ejs','utf8','render','ChatOfflineMessage','originalname','mimetype','server','attachments','offline-chat','basename','openNewInteraction','sequelize','transaction','Attachment','MailServerOut','Smtp','forwardOffline','forwardOfflineAddress','service','host','port','secure','authentication','auth','pass','sendMail','\x22%s\x22\x20<%s>','email','offlineMessageSubject','subjectOffline','mapValues','Chat','MailAccountId','NotifyMailAccount','notifyMail','Could\x20not\x20remove\x20attachment\x20file','addInteraction','omit','getInteractions','Contact','Owner','fullname','internal','Tags','tag','Command','timezone','iftime\x20%s,%s','interval','iftime\x20%s','true','[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)','ONLINE','No\x20timezone','inspect','getSnippet','Interval','Intervals','getProactiveActions','virtual','License','increment','chatLicenseExceeded','readFileSync','server/files/chat/iframe.ejs','remote','x-real-ip','replace','alignment','color','textColor','color_button','addApplications','bulkCreate','findAndCountAll','priority','getApplications','addProactiveActions','chatProactiveAction','ChatProactiveAction','online','offlineForm','onlineForm','items','fromKey','addAgents','emit','userChatWebsite:save','removeAgents','isArray','userChatWebsite:remove','getAgents','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','util','ejs','lodash','squel','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./chatWebsite.socket','register','jayson/promise','client','http','request','then','info','ChatWebsite,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','catch','sendStatus','status','json','offset','undefined','limit','set','apply','reject','save','update','destroy','get','UserProfileResource','end','stack','name','Pause','mandatoryDispositionPause','ChatWebsite','rawAttributes','type','model','map','query','keys','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filters','filter','merge','VIRTUAL','options','count','include','rows','show','params','includeAll','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','ChatWebsites','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','find','describe','addDisposition','ChatWebsiteId','Disposition','getDispositions','findOne','findAll','removeDispositions','ids','getAnswers','CannedAnswer','removeAnswers','sitepic','file','filename','agentAvatar','addCustomerAvatar','customerAvatar','addSystemAvatar','systemAvatar','getLogo','join','server/files/images/logos/default_logo.svg','custom','root','server/files/images/logos/','getAvatar','isNil','existsSync','server/files/images/avatars/','server/files/images/avatars/customer_avatar.png','showCustomerAvatar','download','server/files/images/avatars/system_avatar.png','notify','setUA','headers','user-agent','getResult','CmContact','Sequelize','no\x20available\x20attributes','difference','updatedAt','CompanyId','ListId','from','ValidationError','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','List','DESC','ChatApplication','Applications','account','applications','list','orderBy','asc','Contacts','contact','customerIp','cf-connecting-ip','first','x-forwarded-for','split','lastName','x-real-port','referer','browser','version','format','%s\x20%s','device','vendor','%s\x20%s\x20%s','threadId','externalUrl','ChatInteraction','ContactId','interaction','spread','firstName','messageId','created','autoclose','push','close','unmanaged','*,*,*,*'];(function(_0x5a2439,_0x9ad4b5){var _0x33657e=function(_0x5e95ae){while(--_0x5e95ae){_0x5a2439['push'](_0x5a2439['shift']());}};_0x33657e(++_0x9ad4b5);}(_0x704d,0x6e));var _0xd704=function(_0x550673,_0x62ecd3){_0x550673=_0x550673-0x0;var _0x31f4d1=_0x704d[_0x550673];return _0x31f4d1;};'use strict';var emlformat=require(_0xd704('0x0'));var rimraf=require(_0xd704('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xd704('0x2'));var rp=require(_0xd704('0x3'));var moment=require(_0xd704('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xd704('0x5'));var util=require(_0xd704('0x6'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xd704('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xd704('0x8'));var squel=require(_0xd704('0x9'));var crypto=require(_0xd704('0xa'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xd704('0xb'));var Papa=require(_0xd704('0xc'));var Redis=require(_0xd704('0xd'));var authService=require(_0xd704('0xe'));var qs=require(_0xd704('0xf'));var as=require(_0xd704('0x10'));var hardwareService=require(_0xd704('0x11'));var logger=require('../../config/logger')(_0xd704('0x12'));var utils=require('../../config/utils');var config=require(_0xd704('0x13'));var licenseUtil=require(_0xd704('0x14'));var db=require(_0xd704('0x15'))['db'];config[_0xd704('0x16')]=_[_0xd704('0x17')](config[_0xd704('0x16')],{'host':_0xd704('0x18'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xd704('0x16')]));require(_0xd704('0x19'))[_0xd704('0x1a')](socket);var jayson=require(_0xd704('0x1b'));var client=jayson[_0xd704('0x1c')][_0xd704('0x1d')]({'port':0x232c});var client9002=jayson[_0xd704('0x1c')]['http']({'port':0x232a});var client9003=jayson[_0xd704('0x1c')]['http']({'port':0x232b});var client9001=jayson[_0xd704('0x1c')][_0xd704('0x1d')]({'port':0x2329});function respondWithRpcPromise(_0x42af73,_0x2a4c61,_0x1cc209,_0x4bbf64){return new BPromise(function(_0x51f483,_0x476e60){var _0x2c122f=_0x4bbf64||client;return _0x2c122f[_0xd704('0x1e')](_0x42af73,_0x1cc209)[_0xd704('0x1f')](function(_0x2263e5){logger[_0xd704('0x20')](_0xd704('0x21'),_0x2a4c61,'request\x20sent');logger[_0xd704('0x22')]('ChatWebsite,\x20%s,\x20%s,\x20%s',_0x2a4c61,_0xd704('0x23'),JSON[_0xd704('0x24')](_0x2263e5));if(_0x2263e5['error']){if(_0x2263e5[_0xd704('0x25')][_0xd704('0x26')]===0x1f4){logger['error']('ChatWebsite,\x20%s,\x20%s',_0x2a4c61,_0x2263e5[_0xd704('0x25')][_0xd704('0x27')]);return _0x476e60(_0x2263e5[_0xd704('0x25')][_0xd704('0x27')]);}logger[_0xd704('0x25')](_0xd704('0x21'),_0x2a4c61,_0x2263e5['error']['message']);return _0x51f483(_0x2263e5['error'][_0xd704('0x27')]);}else{logger[_0xd704('0x20')](_0xd704('0x21'),_0x2a4c61,'request\x20sent');_0x51f483(_0x2263e5[_0xd704('0x28')][_0xd704('0x27')]);}})[_0xd704('0x29')](function(_0x3de314){logger['error'](_0xd704('0x21'),_0x2a4c61,_0x3de314);_0x476e60(_0x3de314);});});}function respondWithStatusCode(_0x37240d,_0x94e5cb){_0x94e5cb=_0x94e5cb||0xcc;return function(_0x931200){if(_0x931200){return _0x37240d[_0xd704('0x2a')](_0x94e5cb);}return _0x37240d['status'](_0x94e5cb)['end']();};}function respondWithResult(_0x5b7a25,_0x221926){_0x221926=_0x221926||0xc8;return function(_0x16d066){if(_0x16d066){return _0x5b7a25[_0xd704('0x2b')](_0x221926)[_0xd704('0x2c')](_0x16d066);}};}function respondWithFilteredResult(_0x25d690,_0x462861){return function(_0x80e20c){if(_0x80e20c){var _0x11163b=typeof _0x462861[_0xd704('0x2d')]===_0xd704('0x2e')&&typeof _0x462861[_0xd704('0x2f')]===_0xd704('0x2e');var _0x51476d=_0x80e20c['count'];var _0x46ce73=_0x11163b?0x0:_0x462861['offset'];var _0x4e99ad=_0x11163b?_0x80e20c['count']:_0x462861[_0xd704('0x2d')]+_0x462861[_0xd704('0x2f')];var _0x18571c;if(_0x4e99ad>=_0x51476d){_0x4e99ad=_0x51476d;_0x18571c=0xc8;}else{_0x18571c=0xce;}_0x25d690[_0xd704('0x2b')](_0x18571c);return _0x25d690[_0xd704('0x30')]('Content-Range',_0x46ce73+'-'+_0x4e99ad+'/'+_0x51476d)[_0xd704('0x2c')](_0x80e20c);}return null;};}function patchUpdates(_0x474993){return function(_0x80bf0a){try{jsonpatch[_0xd704('0x31')](_0x80bf0a,_0x474993,!![]);}catch(_0x261c57){return BPromise[_0xd704('0x32')](_0x261c57);}return _0x80bf0a[_0xd704('0x33')]();};}function saveUpdates(_0x3df3b5,_0x45b487){return function(_0x666814){if(_0x666814){return _0x666814[_0xd704('0x34')](_0x3df3b5)[_0xd704('0x1f')](function(_0x19ea4a){return _0x19ea4a;});}return null;};}function removeEntity(_0x4039e5,_0x45cf65){return function(_0x53d859){if(_0x53d859){return _0x53d859[_0xd704('0x35')]()['then'](function(){var _0x9f5c1a=_0x53d859[_0xd704('0x36')]({'plain':!![]});var _0x535ea1='ChatWebsites';return db[_0xd704('0x37')]['destroy']({'where':{'type':_0x535ea1,'resourceId':_0x9f5c1a['id']}})[_0xd704('0x1f')](function(){return _0x53d859;});})[_0xd704('0x1f')](function(){_0x4039e5[_0xd704('0x2b')](0xcc)[_0xd704('0x38')]();});}};}function handleEntityNotFound(_0x137e22,_0x584d88){return function(_0x3e644e){if(!_0x3e644e){_0x137e22[_0xd704('0x2a')](0x194);}return _0x3e644e;};}function handleError(_0xf7d5b7,_0x1d4fc8){_0x1d4fc8=_0x1d4fc8||0x1f4;return function(_0x22145b){logger[_0xd704('0x25')](_0x22145b[_0xd704('0x39')]);if(_0x22145b[_0xd704('0x3a')]){delete _0x22145b[_0xd704('0x3a')];}_0xf7d5b7[_0xd704('0x2b')](_0x1d4fc8)['send'](_0x22145b);};}exports['index']=function(_0xb2c548,_0x21bc93){var _0x12c7f1={'include':[{'model':db[_0xd704('0x3b')],'as':_0xd704('0x3c')}]},_0x48fee7={},_0xc6564e={'count':0x0,'rows':[]};var _0x42f9e0=_['map'](db[_0xd704('0x3d')][_0xd704('0x3e')],function(_0x5a7694){return{'name':_0x5a7694['fieldName'],'type':_0x5a7694[_0xd704('0x3f')]['key']};});_0x48fee7[_0xd704('0x40')]=_[_0xd704('0x41')](_0x42f9e0,_0xd704('0x3a'));_0x48fee7[_0xd704('0x42')]=_[_0xd704('0x43')](_0xb2c548['query']);_0x48fee7['filters']=_['intersection'](_0x48fee7[_0xd704('0x40')],_0x48fee7[_0xd704('0x42')]);_0x12c7f1[_0xd704('0x44')]=_[_0xd704('0x45')](_0x48fee7[_0xd704('0x40')],qs['fields'](_0xb2c548[_0xd704('0x42')][_0xd704('0x46')]));_0x12c7f1['attributes']=_0x12c7f1['attributes'][_0xd704('0x47')]?_0x12c7f1[_0xd704('0x44')]:_0x48fee7[_0xd704('0x40')];if(!_0xb2c548['query'][_0xd704('0x48')](_0xd704('0x49'))){_0x12c7f1[_0xd704('0x2f')]=qs[_0xd704('0x2f')](_0xb2c548['query'][_0xd704('0x2f')]);_0x12c7f1[_0xd704('0x2d')]=qs['offset'](_0xb2c548[_0xd704('0x42')][_0xd704('0x2d')]);}_0x12c7f1[_0xd704('0x4a')]=qs[_0xd704('0x4b')](_0xb2c548[_0xd704('0x42')][_0xd704('0x4b')]);_0x12c7f1[_0xd704('0x4c')]=qs['filters'](_[_0xd704('0x4d')](_0xb2c548[_0xd704('0x42')],_0x48fee7[_0xd704('0x4e')]),_0x42f9e0);if(_0xb2c548[_0xd704('0x42')][_0xd704('0x4f')]){_0x12c7f1[_0xd704('0x4c')]=_[_0xd704('0x50')](_0x12c7f1[_0xd704('0x4c')],{'$or':_[_0xd704('0x41')](_0x42f9e0,function(_0x1e7043){if(_0x1e7043[_0xd704('0x3f')]!==_0xd704('0x51')){var _0x54fa9b={};_0x54fa9b[_0x1e7043[_0xd704('0x3a')]]={'$like':'%'+_0xb2c548[_0xd704('0x42')]['filter']+'%'};return _0x54fa9b;}})});}_0x12c7f1=_['merge']({},_0x12c7f1,_0xb2c548[_0xd704('0x52')]);var _0x56683d={'where':_0x12c7f1[_0xd704('0x4c')]};return db[_0xd704('0x3d')]['count'](_0x56683d)['then'](function(_0xf39629){_0xc6564e[_0xd704('0x53')]=_0xf39629;if(_0xb2c548[_0xd704('0x42')]['includeAll']){_0x12c7f1[_0xd704('0x54')]=[{'all':!![]}];}return db[_0xd704('0x3d')]['findAll'](_0x12c7f1);})['then'](function(_0x348a83){_0xc6564e[_0xd704('0x55')]=_0x348a83;return _0xc6564e;})[_0xd704('0x1f')](respondWithFilteredResult(_0x21bc93,_0x12c7f1))[_0xd704('0x29')](handleError(_0x21bc93,null));};exports[_0xd704('0x56')]=function(_0x56af34,_0x879b73){var _0x2be78d={'raw':![],'where':{'id':_0x56af34[_0xd704('0x57')]['id']},'include':[{'model':db[_0xd704('0x3b')],'as':_0xd704('0x3c')}]},_0x39d657={};_0x39d657['model']=_[_0xd704('0x43')](db[_0xd704('0x3d')]['rawAttributes']);_0x39d657[_0xd704('0x42')]=_[_0xd704('0x43')](_0x56af34[_0xd704('0x42')]);_0x39d657[_0xd704('0x4e')]=_[_0xd704('0x45')](_0x39d657[_0xd704('0x40')],_0x39d657[_0xd704('0x42')]);_0x2be78d[_0xd704('0x44')]=_['intersection'](_0x39d657[_0xd704('0x40')],qs[_0xd704('0x46')](_0x56af34['query'][_0xd704('0x46')]));_0x2be78d['attributes']=_0x2be78d[_0xd704('0x44')][_0xd704('0x47')]?_0x2be78d[_0xd704('0x44')]:_0x39d657[_0xd704('0x40')];if(_0x56af34[_0xd704('0x42')][_0xd704('0x58')]){_0x2be78d[_0xd704('0x54')]=[{'all':!![]}];}_0x2be78d=_[_0xd704('0x50')]({},_0x2be78d,_0x56af34[_0xd704('0x52')]);return db['ChatWebsite']['find'](_0x2be78d)[_0xd704('0x1f')](handleEntityNotFound(_0x879b73,null))[_0xd704('0x1f')](respondWithResult(_0x879b73,null))['catch'](handleError(_0x879b73,null));};exports[_0xd704('0x59')]=function(_0x4e8174,_0x49fc59){return db[_0xd704('0x3d')]['create'](_0x4e8174['body'],{})[_0xd704('0x1f')](function(_0x304431){var _0x58dd70=_0x4e8174[_0xd704('0x5a')][_0xd704('0x36')]({'plain':!![]});if(!_0x58dd70)throw new Error(_0xd704('0x5b'));if(_0x58dd70[_0xd704('0x5c')]===_0xd704('0x5a')){var _0x26821f=_0x304431[_0xd704('0x36')]({'plain':!![]});var _0x460083=_0xd704('0x5d');return db[_0xd704('0x5e')]['find']({'where':{'name':_0x460083,'userProfileId':_0x58dd70[_0xd704('0x5f')]},'raw':!![]})[_0xd704('0x1f')](function(_0x422902){if(_0x422902&&_0x422902[_0xd704('0x60')]===0x0){return db[_0xd704('0x37')][_0xd704('0x59')]({'name':_0x26821f['name'],'resourceId':_0x26821f['id'],'type':_0x422902[_0xd704('0x3a')],'sectionId':_0x422902['id']},{})[_0xd704('0x1f')](function(){return _0x304431;});}else{return _0x304431;}})[_0xd704('0x29')](function(_0x7a6758){logger[_0xd704('0x25')](_0xd704('0x61'),_0x7a6758);throw _0x7a6758;});}return _0x304431;})[_0xd704('0x1f')](respondWithResult(_0x49fc59,0xc9))['catch'](handleError(_0x49fc59,null));};exports[_0xd704('0x34')]=function(_0x2e477e,_0x560cc0){if(_0x2e477e[_0xd704('0x62')]['id']){delete _0x2e477e[_0xd704('0x62')]['id'];}return db[_0xd704('0x3d')][_0xd704('0x63')]({'where':{'id':_0x2e477e[_0xd704('0x57')]['id']},'include':[{'model':db['Pause'],'as':_0xd704('0x3c')}]})['then'](handleEntityNotFound(_0x560cc0,null))[_0xd704('0x1f')](saveUpdates(_0x2e477e[_0xd704('0x62')],null))[_0xd704('0x1f')](respondWithResult(_0x560cc0,null))[_0xd704('0x29')](handleError(_0x560cc0,null));};exports[_0xd704('0x35')]=function(_0x12d725,_0x2e828d){return db[_0xd704('0x3d')][_0xd704('0x63')]({'where':{'id':_0x12d725[_0xd704('0x57')]['id']}})[_0xd704('0x1f')](handleEntityNotFound(_0x2e828d,null))['then'](removeEntity(_0x2e828d,null))[_0xd704('0x29')](handleError(_0x2e828d,null));};exports[_0xd704('0x64')]=function(_0x1d05a6,_0x543983){return db[_0xd704('0x3d')][_0xd704('0x64')]()['then'](respondWithResult(_0x543983,null))[_0xd704('0x29')](handleError(_0x543983,null));};exports[_0xd704('0x65')]=function(_0x55f691,_0x1369cd,_0x5892e1){if(_0x55f691[_0xd704('0x62')]['id']){delete _0x55f691[_0xd704('0x62')]['id'];}return db[_0xd704('0x3d')][_0xd704('0x63')]({'where':{'id':_0x55f691[_0xd704('0x57')]['id']}})['then'](handleEntityNotFound(_0x1369cd,null))[_0xd704('0x1f')](function(_0xd70cf4){if(_0xd70cf4){_0x55f691[_0xd704('0x62')][_0xd704('0x66')]=_0xd70cf4['id'];return db[_0xd704('0x67')]['create'](_0x55f691['body']);}})[_0xd704('0x1f')](respondWithResult(_0x1369cd,null))[_0xd704('0x29')](handleError(_0x1369cd,null));};exports[_0xd704('0x68')]=function(_0xeca8cc,_0x2bed67,_0x2236b7){var _0x44a221={'raw':![],'where':{}};var _0x39aa5e={};var _0x290e3b={'count':0x0,'rows':[]};return db[_0xd704('0x3d')][_0xd704('0x69')]({'where':{'id':_0xeca8cc[_0xd704('0x57')]['id']}})['then'](handleEntityNotFound(_0x2bed67,null))[_0xd704('0x1f')](function(_0x238034){if(_0x238034){_0x39aa5e[_0xd704('0x40')]=_['keys'](db[_0xd704('0x67')][_0xd704('0x3e')]);_0x39aa5e[_0xd704('0x42')]=_[_0xd704('0x43')](_0xeca8cc[_0xd704('0x42')]);_0x39aa5e[_0xd704('0x4e')]=_[_0xd704('0x45')](_0x39aa5e[_0xd704('0x40')],_0x39aa5e[_0xd704('0x42')]);_0x44a221[_0xd704('0x44')]=_[_0xd704('0x45')](_0x39aa5e[_0xd704('0x40')],qs[_0xd704('0x46')](_0xeca8cc[_0xd704('0x42')][_0xd704('0x46')]));_0x44a221[_0xd704('0x44')]=_0x44a221['attributes']['length']?_0x44a221[_0xd704('0x44')]:_0x39aa5e[_0xd704('0x40')];if(!_0xeca8cc['query'][_0xd704('0x48')](_0xd704('0x49'))){_0x44a221['limit']=qs[_0xd704('0x2f')](_0xeca8cc['query'][_0xd704('0x2f')]);_0x44a221['offset']=qs[_0xd704('0x2d')](_0xeca8cc[_0xd704('0x42')][_0xd704('0x2d')]);}_0x44a221['order']=qs[_0xd704('0x4b')](_0xeca8cc[_0xd704('0x42')]['sort']);_0x44a221[_0xd704('0x4c')]=qs['filters'](_[_0xd704('0x4d')](_0xeca8cc[_0xd704('0x42')],_0x39aa5e[_0xd704('0x4e')]));_0x44a221[_0xd704('0x4c')][_0xd704('0x66')]=_0x238034['id'];if(_0xeca8cc[_0xd704('0x42')][_0xd704('0x4f')]){_0x44a221[_0xd704('0x4c')]=_[_0xd704('0x50')](_0x44a221[_0xd704('0x4c')],{'$or':_[_0xd704('0x41')](_0x44a221[_0xd704('0x44')],function(_0x3be697){var _0x4a94e7={};_0x4a94e7[_0x3be697]={'$like':'%'+_0xeca8cc[_0xd704('0x42')][_0xd704('0x4f')]+'%'};return _0x4a94e7;})});}_0x44a221=_[_0xd704('0x50')]({},_0x44a221,_0xeca8cc[_0xd704('0x52')]);return db[_0xd704('0x67')]['count']({'where':_0x44a221[_0xd704('0x4c')]})[_0xd704('0x1f')](function(_0x282fd7){_0x290e3b[_0xd704('0x53')]=_0x282fd7;if(_0xeca8cc['query'][_0xd704('0x58')]){_0x44a221['include']=[{'all':!![]}];}return db[_0xd704('0x67')][_0xd704('0x6a')](_0x44a221);})[_0xd704('0x1f')](function(_0x2a3c0b){_0x290e3b[_0xd704('0x55')]=_0x2a3c0b;return _0x290e3b;});}})['then'](respondWithFilteredResult(_0x2bed67,_0x44a221))[_0xd704('0x29')](handleError(_0x2bed67,null));};exports['removeDispositions']=function(_0xc29a19,_0x51ed2e,_0x53c2ff){return db['ChatWebsite'][_0xd704('0x63')]({'where':{'id':_0xc29a19['params']['id']}})[_0xd704('0x1f')](handleEntityNotFound(_0x51ed2e,null))[_0xd704('0x1f')](function(_0x415eb6){if(_0x415eb6){return _0x415eb6[_0xd704('0x6b')](_0xc29a19[_0xd704('0x42')][_0xd704('0x6c')]);}})[_0xd704('0x1f')](respondWithStatusCode(_0x51ed2e,null))[_0xd704('0x29')](handleError(_0x51ed2e,null));};exports['addAnswer']=function(_0x6b08cc,_0x66aba2,_0x573f22){if(_0x6b08cc['body']['id']){delete _0x6b08cc[_0xd704('0x62')]['id'];}return db[_0xd704('0x3d')]['find']({'where':{'id':_0x6b08cc['params']['id']}})[_0xd704('0x1f')](handleEntityNotFound(_0x66aba2,null))[_0xd704('0x1f')](function(_0x26a4e4){if(_0x26a4e4){_0x6b08cc[_0xd704('0x62')]['ChatWebsiteId']=_0x26a4e4['id'];return db['CannedAnswer'][_0xd704('0x59')](_0x6b08cc[_0xd704('0x62')]);}})['then'](respondWithResult(_0x66aba2,null))['catch'](handleError(_0x66aba2,null));};exports[_0xd704('0x6d')]=function(_0x43036a,_0x455127,_0x4d5c74){var _0x4c9ccd={'raw':![],'where':{}};var _0x2fdfa2={};var _0x47c3b7={'count':0x0,'rows':[]};return db['ChatWebsite'][_0xd704('0x69')]({'where':{'id':_0x43036a[_0xd704('0x57')]['id']}})[_0xd704('0x1f')](handleEntityNotFound(_0x455127,null))[_0xd704('0x1f')](function(_0x96ab21){if(_0x96ab21){_0x2fdfa2[_0xd704('0x40')]=_[_0xd704('0x43')](db['CannedAnswer'][_0xd704('0x3e')]);_0x2fdfa2[_0xd704('0x42')]=_[_0xd704('0x43')](_0x43036a[_0xd704('0x42')]);_0x2fdfa2[_0xd704('0x4e')]=_[_0xd704('0x45')](_0x2fdfa2['model'],_0x2fdfa2[_0xd704('0x42')]);_0x4c9ccd[_0xd704('0x44')]=_[_0xd704('0x45')](_0x2fdfa2[_0xd704('0x40')],qs[_0xd704('0x46')](_0x43036a[_0xd704('0x42')][_0xd704('0x46')]));_0x4c9ccd[_0xd704('0x44')]=_0x4c9ccd[_0xd704('0x44')][_0xd704('0x47')]?_0x4c9ccd[_0xd704('0x44')]:_0x2fdfa2['model'];if(!_0x43036a[_0xd704('0x42')]['hasOwnProperty'](_0xd704('0x49'))){_0x4c9ccd[_0xd704('0x2f')]=qs[_0xd704('0x2f')](_0x43036a['query']['limit']);_0x4c9ccd[_0xd704('0x2d')]=qs[_0xd704('0x2d')](_0x43036a['query'][_0xd704('0x2d')]);}_0x4c9ccd[_0xd704('0x4a')]=qs[_0xd704('0x4b')](_0x43036a[_0xd704('0x42')]['sort']);_0x4c9ccd['where']=qs[_0xd704('0x4e')](_[_0xd704('0x4d')](_0x43036a[_0xd704('0x42')],_0x2fdfa2['filters']));_0x4c9ccd[_0xd704('0x4c')][_0xd704('0x66')]=_0x96ab21['id'];if(_0x43036a[_0xd704('0x42')][_0xd704('0x4f')]){_0x4c9ccd[_0xd704('0x4c')]=_[_0xd704('0x50')](_0x4c9ccd['where'],{'$or':_[_0xd704('0x41')](_0x4c9ccd[_0xd704('0x44')],function(_0x57992a){var _0x3a02bc={};_0x3a02bc[_0x57992a]={'$like':'%'+_0x43036a['query']['filter']+'%'};return _0x3a02bc;})});}_0x4c9ccd=_[_0xd704('0x50')]({},_0x4c9ccd,_0x43036a[_0xd704('0x52')]);return db[_0xd704('0x6e')][_0xd704('0x53')]({'where':_0x4c9ccd[_0xd704('0x4c')]})[_0xd704('0x1f')](function(_0x38d8a3){_0x47c3b7[_0xd704('0x53')]=_0x38d8a3;if(_0x43036a[_0xd704('0x42')][_0xd704('0x58')]){_0x4c9ccd['include']=[{'all':!![]}];}return db['CannedAnswer'][_0xd704('0x6a')](_0x4c9ccd);})[_0xd704('0x1f')](function(_0x2289db){_0x47c3b7[_0xd704('0x55')]=_0x2289db;return _0x47c3b7;});}})[_0xd704('0x1f')](respondWithFilteredResult(_0x455127,_0x4c9ccd))[_0xd704('0x29')](handleError(_0x455127,null));};exports[_0xd704('0x6f')]=function(_0x34152f,_0xf39d03,_0x41cbf4){return db['ChatWebsite'][_0xd704('0x63')]({'where':{'id':_0x34152f[_0xd704('0x57')]['id']}})[_0xd704('0x1f')](handleEntityNotFound(_0xf39d03,null))[_0xd704('0x1f')](function(_0x3df397){if(_0x3df397){return _0x3df397[_0xd704('0x6f')](_0x34152f[_0xd704('0x42')][_0xd704('0x6c')]);}})[_0xd704('0x1f')](respondWithStatusCode(_0xf39d03,null))['catch'](handleError(_0xf39d03,null));};exports['addLogo']=function(_0x31360c,_0x4de045,_0x429dd1){_0x31360c[_0xd704('0x62')][_0xd704('0x70')]=_0x31360c[_0xd704('0x71')][_0xd704('0x72')];return db[_0xd704('0x3d')]['find']({'where':{'id':_0x31360c['params']['id']}})['then'](handleEntityNotFound(_0x4de045,null))['then'](saveUpdates(_0x31360c[_0xd704('0x62')],null))[_0xd704('0x1f')](respondWithResult(_0x4de045,null))[_0xd704('0x29')](handleError(_0x4de045,null));};exports['addAvatar']=function(_0x40b212,_0x183931,_0x1e21a2){_0x40b212[_0xd704('0x62')][_0xd704('0x73')]=_0x40b212[_0xd704('0x71')][_0xd704('0x72')];return db[_0xd704('0x3d')]['find']({'where':{'id':_0x40b212[_0xd704('0x57')]['id']}})['then'](handleEntityNotFound(_0x183931,null))[_0xd704('0x1f')](saveUpdates(_0x40b212[_0xd704('0x62')],null))[_0xd704('0x1f')](respondWithResult(_0x183931,null))[_0xd704('0x29')](handleError(_0x183931,null));};exports[_0xd704('0x74')]=function(_0x3dd7c0,_0x56eba2,_0xc2d765){_0x3dd7c0[_0xd704('0x62')][_0xd704('0x75')]=_0x3dd7c0[_0xd704('0x71')]['filename'];return db[_0xd704('0x3d')][_0xd704('0x63')]({'where':{'id':_0x3dd7c0[_0xd704('0x57')]['id']}})['then'](handleEntityNotFound(_0x56eba2,null))[_0xd704('0x1f')](saveUpdates(_0x3dd7c0[_0xd704('0x62')],null))[_0xd704('0x1f')](respondWithResult(_0x56eba2,null))[_0xd704('0x29')](handleError(_0x56eba2,null));};exports[_0xd704('0x76')]=function(_0xdd2823,_0x20d321,_0x3fc096){_0xdd2823[_0xd704('0x62')][_0xd704('0x77')]=_0xdd2823[_0xd704('0x71')][_0xd704('0x72')];return db[_0xd704('0x3d')][_0xd704('0x63')]({'where':{'id':_0xdd2823['params']['id']}})[_0xd704('0x1f')](handleEntityNotFound(_0x20d321,null))[_0xd704('0x1f')](saveUpdates(_0xdd2823[_0xd704('0x62')],null))['then'](respondWithResult(_0x20d321,null))[_0xd704('0x29')](handleError(_0x20d321,null));};exports[_0xd704('0x78')]=function(_0x2f7695,_0x2ca9a3,_0x40845c){var _0x1ef683=path[_0xd704('0x79')](config['root'],_0xd704('0x7a'));var _0x45a3c9={'where':{'id':_0x2f7695['params']['id']},'attributes':['id',_0xd704('0x70')],'raw':!![]};var _0x5f48b4=![];return require(_0xd704('0x14'))['getLicense']()[_0xd704('0x1f')](function(_0x57cf49){if(_0x57cf49){_0x5f48b4=_0x57cf49[_0xd704('0x7b')];}})['then'](function(){return db[_0xd704('0x3d')][_0xd704('0x63')](_0x45a3c9);})[_0xd704('0x1f')](handleEntityNotFound(_0x2ca9a3,null))[_0xd704('0x1f')](function(_0x3056eb){if(_0x3056eb){if(!_['isNil'](_0x3056eb[_0xd704('0x70')])){if(fs['existsSync'](path[_0xd704('0x79')](config[_0xd704('0x7c')],'server/files/images/logos/',_0x3056eb[_0xd704('0x70')]))&&_0x5f48b4){_0x1ef683=path[_0xd704('0x79')](config[_0xd704('0x7c')],_0xd704('0x7d'),_0x3056eb['sitepic']);}}return _0x2ca9a3['download'](_0x1ef683);}})[_0xd704('0x29')](handleError(_0x2ca9a3,null));};exports[_0xd704('0x7e')]=function(_0x48c5ac,_0x21c9e5,_0x13f955){var _0x50151f=path[_0xd704('0x79')](config['root'],'server/files/images/avatars/default_avatar.png');var _0x2076eb={'where':{'id':_0x48c5ac[_0xd704('0x57')]['id']},'attributes':['id',_0xd704('0x73')],'raw':!![]};return db[_0xd704('0x3d')]['find'](_0x2076eb)['then'](handleEntityNotFound(_0x21c9e5,null))[_0xd704('0x1f')](function(_0x21ec2d){if(_0x21ec2d){if(!_[_0xd704('0x7f')](_0x21ec2d[_0xd704('0x73')])){if(fs[_0xd704('0x80')](path[_0xd704('0x79')](config['root'],_0xd704('0x81'),_0x21ec2d[_0xd704('0x73')]))){_0x50151f=path['join'](config[_0xd704('0x7c')],'server/files/images/avatars/',_0x21ec2d[_0xd704('0x73')]);}}return _0x21c9e5['download'](_0x50151f);}})[_0xd704('0x29')](handleError(_0x21c9e5,null));};exports['getCustomerAvatar']=function(_0x1113b5,_0x52c518,_0x534ce7){var _0x23d13e=path[_0xd704('0x79')](config[_0xd704('0x7c')],_0xd704('0x82'));var _0x3113bc={'where':{'id':_0x1113b5[_0xd704('0x57')]['id']},'attributes':['id',_0xd704('0x75'),_0xd704('0x83')],'raw':!![]};return db[_0xd704('0x3d')][_0xd704('0x63')](_0x3113bc)['then'](handleEntityNotFound(_0x52c518,null))['then'](function(_0x38de1e){if(_0x38de1e){if(!_[_0xd704('0x7f')](_0x38de1e['customerAvatar'])){if(fs['existsSync'](path[_0xd704('0x79')](config[_0xd704('0x7c')],_0xd704('0x81'),_0x38de1e[_0xd704('0x75')]))&&_0x38de1e[_0xd704('0x83')]){_0x23d13e=path['join'](config[_0xd704('0x7c')],_0xd704('0x81'),_0x38de1e[_0xd704('0x75')]);}}return _0x52c518[_0xd704('0x84')](_0x23d13e);}})[_0xd704('0x29')](handleError(_0x52c518,null));};exports['getSystemAvatar']=function(_0x4671d1,_0x870e2e,_0x4c4d43){var _0x4730da=path[_0xd704('0x79')](config[_0xd704('0x7c')],_0xd704('0x85'));var _0x4c4e1c={'where':{'id':_0x4671d1['params']['id']},'attributes':['id',_0xd704('0x77')],'raw':!![]};return db['ChatWebsite'][_0xd704('0x63')](_0x4c4e1c)[_0xd704('0x1f')](handleEntityNotFound(_0x870e2e,null))[_0xd704('0x1f')](function(_0x17404a){if(_0x17404a){if(!_[_0xd704('0x7f')](_0x17404a[_0xd704('0x77')])){if(fs[_0xd704('0x80')](path['join'](config[_0xd704('0x7c')],_0xd704('0x81'),_0x17404a[_0xd704('0x77')]))){_0x4730da=path['join'](config[_0xd704('0x7c')],'server/files/images/avatars/',_0x17404a['systemAvatar']);}}return _0x870e2e[_0xd704('0x84')](_0x4730da);}})['catch'](handleError(_0x870e2e,null));};exports[_0xd704('0x86')]=function(_0x478338,_0x264341,_0x42e98d){var _0x5ece2c=require('user-agent-parser');var _0xda01c0=new _0x5ece2c();var _0x1ba456=_0xda01c0[_0xd704('0x87')](_0x478338[_0xd704('0x88')][_0xd704('0x89')])[_0xd704('0x8a')]();var _0x5b0579={'body':_0x478338[_0xd704('0x62')],'channel':'chat'};var _0x5d6407=[];var _0xaa8323=[];var _0x59e1da={};var _0x488cdc=![];return db[_0xd704('0x8b')][_0xd704('0x64')]()['then'](function(_0x38e8d4){if(!_0x38e8d4){throw new db[(_0xd704('0x8c'))]['ValidationError'](_0xd704('0x8d'));}_0x5d6407=_[_0xd704('0x8e')](_[_0xd704('0x43')](_0x38e8d4),['createdAt',_0xd704('0x8f')]);_0xaa8323=_[_0xd704('0x8e')](_['keys'](_0x38e8d4),['createdAt',_0xd704('0x8f'),_0xd704('0x90'),_0xd704('0x91')]);if(_0x478338[_0xd704('0x62')]['id']){delete _0x478338[_0xd704('0x62')]['id'];}if(_['isNil'](_0x478338[_0xd704('0x62')][_0xd704('0x92')])){throw new db[(_0xd704('0x8c'))][(_0xd704('0x93'))](_0xd704('0x94'));}if(_[_0xd704('0x7f')](_0x478338['body']['body'])||_0x478338['body'][_0xd704('0x62')]===''){throw new db[(_0xd704('0x8c'))][(_0xd704('0x93'))](_0xd704('0x95'));}if(_[_0xd704('0x7f')](_0x478338[_0xd704('0x62')][_0xd704('0x96')])){throw new db[(_0xd704('0x8c'))][(_0xd704('0x93'))](_0xd704('0x97')+_0xaa8323);}if(!_[_0xd704('0x98')](_0xaa8323,_0x478338[_0xd704('0x62')][_0xd704('0x96')])){throw new db[(_0xd704('0x8c'))]['ValidationError'](_0xd704('0x99')+_0xaa8323);}_0x59e1da[_0x478338[_0xd704('0x62')][_0xd704('0x96')]]=_0x478338[_0xd704('0x62')]['from'];})[_0xd704('0x1f')](function(){return db[_0xd704('0x3d')]['find']({'where':{'id':_0x478338['params']['id']},'include':[{'model':db['CmList'],'as':_0xd704('0x9a'),'include':[{'model':db['CmContact'],'as':'Contacts','where':_0x59e1da,'limit':0x1,'order':[[_0xd704('0x8f'),_0xd704('0x9b')]]}]},{'model':db[_0xd704('0x9c')],'as':_0xd704('0x9d')}]});})[_0xd704('0x1f')](handleEntityNotFound(_0x264341,null))[_0xd704('0x1f')](function(_0x4570ec){if(_0x4570ec&&_0x4570ec[_0xd704('0x9a')]){_0x5b0579[_0xd704('0x9e')]=_0x4570ec;_0x5b0579[_0xd704('0x9f')]=_0x4570ec[_0xd704('0x9d')];_0x5b0579[_0xd704('0xa0')]=_0x4570ec[_0xd704('0x9a')];_0x5b0579[_0xd704('0x9f')]=_[_0xd704('0xa1')](_0x5b0579[_0xd704('0x9f')],['priority'],[_0xd704('0xa2')]);if(_0x5b0579[_0xd704('0x9e')][_0xd704('0x9d')]){delete _0x5b0579[_0xd704('0x9e')][_0xd704('0x9d')];}if(_0x5b0579[_0xd704('0x9e')]['List']&&_0x5b0579[_0xd704('0x9e')][_0xd704('0x9a')][_0xd704('0xa3')]['length']){return _0x5b0579[_0xd704('0x9e')][_0xd704('0x9a')]['Contacts'][0x0];}var _0x48e416=_[_0xd704('0x17')](_0x478338['body'],{'firstName':_0x478338[_0xd704('0x62')][_0xd704('0x92')],'ListId':_0x4570ec['ListId']});_0x48e416[_0x478338[_0xd704('0x62')][_0xd704('0x96')]]=_0x478338['body'][_0xd704('0x92')];return db[_0xd704('0x8b')][_0xd704('0x59')](_0x48e416,{'fields':_0x5d6407,'raw':!![]});}})['then'](handleEntityNotFound(_0x264341,null))[_0xd704('0x1f')](function(_0x26a522){_0x5b0579[_0xd704('0xa4')]=_0x26a522;var _0xb8d7d6=_0x478338[_0xd704('0x62')][_0xd704('0xa5')];if(_0x478338[_0xd704('0x88')][_0xd704('0xa6')]){_0xb8d7d6=_0x478338[_0xd704('0x88')][_0xd704('0xa6')];}else if(_0x478338[_0xd704('0x88')]['x-forwarded-for']){_0xb8d7d6=_[_0xd704('0xa7')](_0x478338[_0xd704('0x88')][_0xd704('0xa8')][_0xd704('0xa9')](','));}if(_0x26a522){var _0x2b51b2={'ContactId':_0x26a522['id'],'ChatWebsiteId':_0x478338[_0xd704('0x57')]['id'],'from':(_0x26a522['firstName']||'')+'\x20'+(_0x26a522[_0xd704('0xaa')]||''),'customerIp':_0xb8d7d6,'customerPort':_0x478338['headers'][_0xd704('0xab')]?_0x478338['headers'][_0xd704('0xab')]:null,'referer':_0x478338['body'][_0xd704('0xac')],'browserName':_0x1ba456['browser']['name']&&_0x1ba456[_0xd704('0xad')][_0xd704('0xae')]?util[_0xd704('0xaf')](_0xd704('0xb0'),_0x1ba456['browser'][_0xd704('0x3a')],_0x1ba456[_0xd704('0xad')][_0xd704('0xae')]):'unknown','browserVersion':_0x1ba456[_0xd704('0xad')][_0xd704('0xae')]||'unknown','osName':util[_0xd704('0xaf')](_0xd704('0xb0'),_0x1ba456['os'][_0xd704('0x3a')],_0x1ba456['os'][_0xd704('0xae')]),'osVersion':_0x1ba456['os'][_0xd704('0xae')],'deviceModel':_0x1ba456[_0xd704('0xb1')]['model']&&_0x1ba456[_0xd704('0xb1')][_0xd704('0xb2')]?util[_0xd704('0xaf')](_0xd704('0xb3'),_0x1ba456['device'][_0xd704('0x40')],_0x1ba456[_0xd704('0xb1')][_0xd704('0xb2')],_0x1ba456[_0xd704('0xb1')]['type']):null,'deviceVendor':_0x1ba456['device'][_0xd704('0xb2')],'deviceType':_0x1ba456[_0xd704('0xb1')]['type'],'formData':JSON[_0xd704('0x24')](_0x478338['body'])};var _0xe58ee0={'ChatWebsiteId':_0x478338[_0xd704('0x57')]['id'],'closed':![]};if(_0x478338[_0xd704('0x62')][_0xd704('0xb4')]){_0xe58ee0[_0xd704('0xb4')]=_0x478338[_0xd704('0x62')][_0xd704('0xb4')];return db['ChatInteraction'][_0xd704('0x63')]({'where':_0xe58ee0})[_0xd704('0x1f')](function(_0x576511){if(_0x576511){return[_0x576511,![]];}_0x2b51b2['threadId']=_0x478338[_0xd704('0x62')]['threadId'];_0x2b51b2[_0xd704('0xb5')]=_0x478338[_0xd704('0x62')][_0xd704('0xb5')];return db[_0xd704('0xb6')]['create'](_0x2b51b2)[_0xd704('0x1f')](function(_0x2d6c05){return[_0x2d6c05,!![]];});});}_0xe58ee0[_0xd704('0xb7')]=_0x26a522['id'];if(_0x478338['body'][_0xd704('0xb8')]&&_0x478338[_0xd704('0x62')][_0xd704('0xb8')]['id']){_0xe58ee0['id']=_0x478338['body'][_0xd704('0xb8')]['id'];return db[_0xd704('0xb6')]['find']({'where':_0xe58ee0})[_0xd704('0x1f')](function(_0x2988be){if(_0x2988be){return[_0x2988be,![]];}return db[_0xd704('0xb6')][_0xd704('0x59')](_0x2b51b2)['then'](function(_0x55f10d){return[_0x55f10d,!![]];});});}return db[_0xd704('0xb6')][_0xd704('0x59')](_0x2b51b2)['then'](function(_0x4e5aab){return[_0x4e5aab,!![]];});}})[_0xd704('0xb9')](function(_0x51a960,_0x19b4c2){if(_0x51a960){_0x488cdc=_0x19b4c2;if(!_0x19b4c2){var _0x255dbd={'from':(_0x5b0579[_0xd704('0xa4')][_0xd704('0xba')]||'')+'\x20'+(_0x5b0579[_0xd704('0xa4')][_0xd704('0xaa')]||'')};if(_0x478338[_0xd704('0x62')][_0xd704('0xb4')]&&_0x478338['body'][_0xd704('0xbb')]&&_0x478338[_0xd704('0x62')][_0xd704('0xb4')]!=_0x478338[_0xd704('0x62')][_0xd704('0xbb')]){_0x255dbd[_0xd704('0xb4')]=_0x478338[_0xd704('0x62')][_0xd704('0xbb')];}return _0x51a960[_0xd704('0x34')](_0x255dbd);}else{return _0x51a960;}}})['then'](function(_0x5d66a8){_0x5b0579[_0xd704('0xb8')]=_0x5d66a8[_0xd704('0x36')]({'plain':!![]});_0x5b0579[_0xd704('0xb8')]['created']=_0x488cdc;if(_0x5b0579[_0xd704('0xb8')][_0xd704('0xbc')]){if(_0x5b0579[_0xd704('0x9e')][_0xd704('0xbd')]){_0x5b0579[_0xd704('0x9f')][_0xd704('0xbe')]({'id':0x0,'priority':_0x5b0579['applications'][_0xd704('0x47')]+0x1,'app':_0xd704('0xbf'),'appdata':_0xd704('0xc0'),'interval':_0xd704('0xc1')});}}return db[_0xd704('0xc2')][_0xd704('0x59')]({'body':_0x478338['body'][_0xd704('0x62')],'ChatWebsiteId':_0x478338[_0xd704('0x57')]['id'],'ChatInteractionId':_0x5d66a8['id'],'direction':'in','ContactId':_0x5b0579['contact']['id'],'AttachmentId':_0x478338[_0xd704('0x62')][_0xd704('0xc3')]});})[_0xd704('0x1f')](function(_0x288b09){_0x5b0579['message']=_0x288b09;if(_0x5b0579[_0xd704('0xb8')][_0xd704('0xc4')]){return db[_0xd704('0xc5')][_0xd704('0x63')]({'attributes':['id',_0xd704('0x3a')],'where':{'id':_0x5b0579[_0xd704('0xb8')]['UserId']}})[_0xd704('0x1f')](function(_0x21f72c){if(_0x21f72c){_0x5b0579[_0xd704('0x9f')]['unshift']({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x21f72c[_0xd704('0x3a')]+','+(_0x5b0579[_0xd704('0x9e')][_0xd704('0xc6')]||0xa),'interval':_0xd704('0xc1')});_0x5b0579['forcedOwnership']=!![];}return respondWithRpcPromise(_0xd704('0xc7'),_0xd704('0xc8'),_0x5b0579);});}return respondWithRpcPromise(_0xd704('0xc7'),'startRouting',_0x5b0579);})[_0xd704('0x1f')](function(_0x1f7cfe){respondWithRpcPromise('EventManager',_0xd704('0xc9'),{'event':_0xd704('0x86'),'message':_0x1f7cfe},client9002);return _0x1f7cfe;})[_0xd704('0x1f')](respondWithResult(_0x264341,null))[_0xd704('0x29')](handleError(_0x264341,null));};exports[_0xd704('0xca')]=function(_0x559368,_0x4f60b1,_0x456dbf){var _0x2b83af,_0x208d97,_0x2c767a;var _0x1ca65e=[];var _0x25764f=[];var _0x33d711={};var _0x47c9d5=_0x559368[_0xd704('0xcb')]||[];var _0x1d47a6=[];var _0x33cb85;return db[_0xd704('0x8b')][_0xd704('0x64')]()['then'](function(_0x2ad7eb){if(!_0x2ad7eb){throw new db[(_0xd704('0x8c'))][(_0xd704('0x93'))](_0xd704('0x8d'));}_0x25764f=_[_0xd704('0x8e')](_[_0xd704('0x43')](_0x2ad7eb),[_0xd704('0xcc'),_0xd704('0x8f')]);_0x1ca65e=_[_0xd704('0x8e')](_[_0xd704('0x43')](_0x2ad7eb),[_0xd704('0xcc'),_0xd704('0x8f'),'CompanyId',_0xd704('0x91')]);if(_0x559368[_0xd704('0x62')]['id']){delete _0x559368[_0xd704('0x62')]['id'];}if(_[_0xd704('0x7f')](_0x559368[_0xd704('0x62')][_0xd704('0x92')])){throw _0x4f60b1[_0xd704('0x2b')](0x1f4)[_0xd704('0xcd')](new db[(_0xd704('0x8c'))][(_0xd704('0x93'))](_0xd704('0x94')));}if(_[_0xd704('0x7f')](_0x559368['body'][_0xd704('0x62')])||_0x559368[_0xd704('0x62')]['body']===''){throw _0x4f60b1[_0xd704('0x2b')](0x1f4)[_0xd704('0xcd')](new db[(_0xd704('0x8c'))][(_0xd704('0x93'))](_0xd704('0x95')));}if(_['isNil'](_0x559368[_0xd704('0x62')]['mapKeyOffline'])){throw _0x4f60b1[_0xd704('0x2b')](0x1f4)[_0xd704('0xcd')](new db[(_0xd704('0x8c'))][(_0xd704('0x93'))](_0xd704('0xce')+_0x1ca65e));}if(!_[_0xd704('0x98')](_0x1ca65e,_0x559368['body'][_0xd704('0xcf')])){throw _0x4f60b1[_0xd704('0x2b')](0x1f4)['send'](new db[(_0xd704('0x8c'))][(_0xd704('0x93'))](_0xd704('0xd0')+_0x1ca65e));}_0x33d711[_0x559368[_0xd704('0x62')][_0xd704('0xcf')]]=_0x559368[_0xd704('0x62')][_0xd704('0x92')];})[_0xd704('0x1f')](function(){return db[_0xd704('0x3d')][_0xd704('0x63')]({'where':{'id':_0x559368['params']['id']},'include':[{'model':db[_0xd704('0xd1')],'as':_0xd704('0x9a')},{'model':db[_0xd704('0xd2')],'as':'MailAccount'}]});})[_0xd704('0x1f')](handleEntityNotFound(_0x4f60b1,null))[_0xd704('0x1f')](function(_0x1ca32f){if(_0x1ca32f&&_0x1ca32f[_0xd704('0x9a')]){_0x208d97=_0x1ca32f;var _0x38cd30=_[_0xd704('0x17')](_0x559368[_0xd704('0x62')],{'firstName':_0x559368[_0xd704('0x62')][_0xd704('0x92')],'phone':_0x559368[_0xd704('0x62')][_0xd704('0x92')],'ListId':_0x1ca32f['ListId']});_0x38cd30[_0x559368[_0xd704('0x62')]['mapKeyOffline']]=_0x559368[_0xd704('0x62')][_0xd704('0x92')];return db[_0xd704('0x8b')][_0xd704('0xd3')]({'where':_0x33d711,'defaults':_0x38cd30});}})[_0xd704('0xb9')](function(_0x2efb55){if(_0x2efb55){_0x2c767a=_0x2efb55;var _0x5a3544=fs['readFileSync'](path['join'](config[_0xd704('0x7c')],_0xd704('0xd4')),_0xd704('0xd5'));var _0x4642b3=ejs[_0xd704('0xd6')](_0x5a3544,{'body':_['toPairs'](_0x559368[_0xd704('0x62')]['body']),'bodyTitle':_0x208d97['offlineMessageBody']});return db[_0xd704('0xd7')][_0xd704('0x59')]({'body':_0x4642b3,'ContactId':_0x2efb55['id'],'ChatWebsiteId':_0x208d97['id']});}})[_0xd704('0x1f')](function(_0x55aa3c){_0x33cb85=_0x55aa3c;if(_0x47c9d5[_0xd704('0x47')]){var _0x282299=_0x47c9d5[_0xd704('0x41')](function(_0x482042){return{'name':_0x482042[_0xd704('0xd8')],'basename':_0x482042[_0xd704('0x72')],'type':_0x482042[_0xd704('0xd9')],'ChatOfflineMessageId':_0x55aa3c['id']};});_0x1d47a6=_0x282299[_0xd704('0x41')](_0x407ab2=>{var _0x5be4c1={'filename':_0x407ab2[_0xd704('0x3a')],'path':path[_0xd704('0x79')](config[_0xd704('0x7c')],_0xd704('0xda'),'files',_0xd704('0xdb'),_0xd704('0xdc'),_0x407ab2[_0xd704('0xdd')])};return _0x5be4c1;});if(!_0x208d97[_0xd704('0xde')]){return db[_0xd704('0xdf')][_0xd704('0xe0')](function(_0xa10818){return db[_0xd704('0xe1')]['bulkCreate'](_0x282299,{'transaction':_0xa10818});});}}})[_0xd704('0x1f')](function(){if(_0x33cb85){_0x2b83af=_0x33cb85;return db[_0xd704('0xd2')]['findOne']({'where':{'active':!![]},'include':[{'model':db[_0xd704('0xe2')],'as':'Smtp','raw':!![]}]});}})[_0xd704('0x1f')](function(_0x1645f3){if(_0x1645f3&&_0x1645f3[_0xd704('0xe3')]&&_0x208d97[_0xd704('0xe4')]&&_0x208d97[_0xd704('0xe5')]){var _0x1fa995={'tls':{'rejectUnauthorized':![]}};if(_0x1645f3[_0xd704('0xe3')][_0xd704('0xe6')]){_0x1fa995[_0xd704('0xe6')]=_0x1645f3[_0xd704('0xe3')][_0xd704('0xe6')];}else{_0x1fa995[_0xd704('0xe7')]=_0x1645f3['Smtp']['host'];_0x1fa995[_0xd704('0xe8')]=_0x1645f3[_0xd704('0xe3')]['port'];_0x1fa995[_0xd704('0xe9')]=_0x1645f3[_0xd704('0xe3')][_0xd704('0xe9')];}if(_0x1645f3[_0xd704('0xe3')][_0xd704('0xea')]){_0x1fa995[_0xd704('0xeb')]={'user':_0x1645f3[_0xd704('0xe3')][_0xd704('0x5a')],'pass':_0x1645f3[_0xd704('0xe3')][_0xd704('0xec')]};}return respondWithRpcPromise('SendMail',_0xd704('0xed'),{'account':_0x1fa995,'message':{'from':util['format'](_0xd704('0xee'),_0x1645f3[_0xd704('0x3a')],_0x1645f3[_0xd704('0xef')]||_0x1645f3[_0xd704('0xe3')]['user']),'to':_0x208d97[_0xd704('0xe5')],'subject':_0x208d97[_0xd704('0xf0')],'html':_0x2b83af[_0xd704('0x62')],'attachments':_0x1d47a6}},client9003)[_0xd704('0x1f')](function(){return _0x2b83af;})['catch'](function(_0x240a0b){console['error'](_0x240a0b);});}})[_0xd704('0x1f')](function(){if(_0x208d97&&_0x208d97[_0xd704('0xde')]&&_0x208d97['MailAccountId']){var _0x3d13f1=[];if(_0x47c9d5[_0xd704('0x47')]){_0x3d13f1=_0x47c9d5[_0xd704('0x41')](function(_0x45a4ff){return{'name':_0x45a4ff[_0xd704('0xd8')],'basename':_0x45a4ff['filename'],'type':_0x45a4ff[_0xd704('0xd9')],'ChatOfflineMessageId':_0x33cb85['id']};});}var _0x3f53e4;if(!_[_0xd704('0x7f')](_0x208d97[_0xd704('0xf1')])){var _0x505342=_['map'](_0x559368['body'],function(_0x2997a5){return _0x2997a5;});var _0x5b70ce=_['toPairsIn'](_0x505342)[0x0];var _0xe163b3=_[_0xd704('0xf2')](_0x5b70ce,function(_0x4fb1d7){return _0x4fb1d7;});_0x3f53e4=_0xe163b3[0x1][_0x208d97[_0xd704('0xf1')]];}var _0x3547dd={'from':_0x2c767a[_0xd704('0xef')],'firstName':_0x2c767a[_0xd704('0xba')],'lastName':_0x2c767a[_0xd704('0xaa')],'mapKey':'email','message':{'from':_0x2c767a[_0xd704('0xef')],'to':_0x208d97[_0xd704('0xd2')][_0xd704('0xef')],'cc':'','subject':_[_0xd704('0x7f')](_0x3f53e4)?_0x208d97[_0xd704('0xf0')]:_0x3f53e4,'messageId':'','sentAt':new Date(),'attach':_0x3d13f1[_0xd704('0x47')],'attachments':_0x3d13f1,'originChannel':_0xd704('0xf3'),'ChatWebsiteId':_0x208d97['id'],'ChatOfflineMessageId':_0x2b83af['id'],'originTo':_0x208d97[_0xd704('0xd2')][_0xd704('0xef')]},'body':_0x2b83af[_0xd704('0x62')]};var _0x4e0436={'account':{'id':_0x208d97[_0xd704('0xf4')]},'body':_0x3547dd,'log':'NotifyMailAccount'};return respondWithRpcPromise(_0xd704('0xf5'),_0xd704('0xf6'),_0x4e0436,client9001)[_0xd704('0x1f')](function(){return _0x2b83af;})[_0xd704('0x29')](function(_0x359b68){console[_0xd704('0x25')](_0x359b68);});}return;})['then'](function(){if(_0x2b83af){return _0x2b83af;}})['then'](respondWithResult(_0x4f60b1,null))[_0xd704('0x29')](function(_0x3ee782){console[_0xd704('0x25')](_0xd704('0x29'),_0x3ee782);for(var _0x2cc4a0 of _0x47c9d5){var _0x35e5a6=path[_0xd704('0x79')](config[_0xd704('0x7c')],'server','files','attachments',_0xd704('0xdc'),_0x2cc4a0[_0xd704('0x72')]);fs_extra['remove'](_0x35e5a6)[_0xd704('0x29')](function(_0x510154){console[_0xd704('0x25')](_0xd704('0xf7'),_0x35e5a6,_0x510154);});}});};exports[_0xd704('0xf8')]=function(_0x3df865,_0x1199a9,_0x2dacb9){return db['ChatInteraction'][_0xd704('0x63')]({'where':{'id':_0x3df865[_0xd704('0x57')]['id']}})[_0xd704('0x1f')](handleEntityNotFound(_0x1199a9,null))[_0xd704('0x1f')](function(_0x238135){if(_0x238135){return _0x238135[_0xd704('0xf8')](_0x3df865[_0xd704('0x62')][_0xd704('0x6c')],_[_0xd704('0xf9')](_0x3df865[_0xd704('0x62')],['ids','id'])||{});}})[_0xd704('0x1f')](respondWithResult(_0x1199a9,null))['catch'](handleError(_0x1199a9,null));};exports[_0xd704('0xfa')]=function(_0x4edbba,_0x24c5e4,_0x89c231){var _0x79cdff={'raw':![],'where':{}};var _0xf8eb7={};var _0x4daec3={'count':0x0,'rows':[]};return db[_0xd704('0x3d')][_0xd704('0x69')]({'where':{'id':_0x4edbba[_0xd704('0x57')]['id']}})[_0xd704('0x1f')](handleEntityNotFound(_0x24c5e4,null))['then'](function(_0x2bb59d){if(_0x2bb59d){_0xf8eb7[_0xd704('0x40')]=_['keys'](db[_0xd704('0xb6')][_0xd704('0x3e')]);_0xf8eb7[_0xd704('0x42')]=_['keys'](_0x4edbba['query']);_0xf8eb7[_0xd704('0x4e')]=_['intersection'](_0xf8eb7['model'],_0xf8eb7[_0xd704('0x42')]);_0x79cdff['attributes']=_[_0xd704('0x45')](_0xf8eb7[_0xd704('0x40')],qs['fields'](_0x4edbba[_0xd704('0x42')][_0xd704('0x46')]));_0x79cdff[_0xd704('0x44')]=_0x79cdff[_0xd704('0x44')]['length']?_0x79cdff[_0xd704('0x44')]:_0xf8eb7[_0xd704('0x40')];if(!_0x4edbba['query'][_0xd704('0x48')](_0xd704('0x49'))){_0x79cdff[_0xd704('0x2f')]=qs[_0xd704('0x2f')](_0x4edbba['query']['limit']);_0x79cdff[_0xd704('0x2d')]=qs[_0xd704('0x2d')](_0x4edbba['query'][_0xd704('0x2d')]);}_0x79cdff[_0xd704('0x4a')]=qs[_0xd704('0x4b')](_0x4edbba['query'][_0xd704('0x4b')]);_0x79cdff[_0xd704('0x4c')]=qs[_0xd704('0x4e')](_[_0xd704('0x4d')](_0x4edbba['query'],_0xf8eb7[_0xd704('0x4e')]));_0x79cdff['where'][_0xd704('0x66')]=_0x2bb59d['id'];if(_0x4edbba[_0xd704('0x42')][_0xd704('0x4f')]){_0x79cdff['where']=_[_0xd704('0x50')](_0x79cdff[_0xd704('0x4c')],{'$or':_['map'](_0x79cdff['attributes'],function(_0x512a90){var _0x3121a5={};_0x3121a5[_0x512a90]={'$like':'%'+_0x4edbba[_0xd704('0x42')][_0xd704('0x4f')]+'%'};return _0x3121a5;})});}_0x79cdff=_[_0xd704('0x50')]({},_0x79cdff,_0x4edbba[_0xd704('0x52')]);return db[_0xd704('0xb6')][_0xd704('0x53')]({'where':_0x79cdff[_0xd704('0x4c')]})[_0xd704('0x1f')](function(_0x523d43){_0x4daec3[_0xd704('0x53')]=_0x523d43;if(_0x4edbba['query'][_0xd704('0x58')]){_0x79cdff[_0xd704('0x54')]=[{'model':db['CmContact'],'as':_0xd704('0xfb'),'required':![]},{'model':db['User'],'as':_0xd704('0xfc'),'attributes':[_0xd704('0x3a'),_0xd704('0xfd'),_0xd704('0xfe')],'required':![]},{'model':db['Tag'],'as':_0xd704('0xff'),'attributes':['id',_0xd704('0x3a'),'color'],'where':_0x4edbba['query'][_0xd704('0x100')]?{'id':_0x4edbba[_0xd704('0x42')][_0xd704('0x100')]}:undefined,'required':_0x4edbba[_0xd704('0x42')]['tag']?!![]:![]}];}return db[_0xd704('0xb6')][_0xd704('0x6a')](_0x79cdff);})[_0xd704('0x1f')](function(_0x4aca3b){_0x4daec3[_0xd704('0x55')]=_0x4aca3b;return _0x4daec3;});}})[_0xd704('0x1f')](respondWithFilteredResult(_0x24c5e4,_0x79cdff))[_0xd704('0x29')](handleError(_0x24c5e4,null));};function iftimePromise(_0x36740c,_0x5483de){return respondWithRpcPromise(_0xd704('0x101'),'getSnippet',{'command':_0x5483de[_0xd704('0x102')]?util[_0xd704('0xaf')](_0xd704('0x103'),_0x36740c[_0xd704('0x104')],_0x5483de[_0xd704('0x102')]):util[_0xd704('0xaf')](_0xd704('0x105'),_0x36740c['interval'])},client9002)[_0xd704('0x1f')](function(_0x57fc25){var _0x1b0b86=_0x57fc25&&_0x57fc25['indexOf'](_0xd704('0x106'))>=0x0?!![]:![];logger[_0xd704('0x20')](_0xd704('0x107'),_0x5483de['id'],_0x36740c['id'],_0x36740c['interval'],_0x1b0b86?_0xd704('0x108'):'OFFLINE',_0x5483de[_0xd704('0x102')]?_0x5483de['timezone']:_0xd704('0x109'));return _0x1b0b86;})[_0xd704('0x29')](function(_0x5ae341){logger[_0xd704('0x25')]('[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)',_0x5483de['id'],_0x36740c['id'],_0x36740c[_0xd704('0x104')],util[_0xd704('0x10a')](_0x5ae341,{'showHidden':![],'depth':null}),_0x5483de['timezone']?_0x5483de[_0xd704('0x102')]:_0xd704('0x109'));return![];});}exports[_0xd704('0x10b')]=function(_0x236fb5,_0x2d3525,_0xca192e){var _0xa1e37e=0x0;var _0x59d60a=0x0;var _0xa347d4=![];var _0x1b490e;var _0x14faa1;return db[_0xd704('0x3d')][_0xd704('0x63')]({'where':{'id':_0x236fb5[_0xd704('0x57')]['id']},'include':[{'model':db[_0xd704('0x10c')],'as':_0xd704('0x10c'),'include':[{'model':db[_0xd704('0x10c')],'as':_0xd704('0x10d'),'attributes':['id',_0xd704('0x104')],'raw':!![]}]}]})[_0xd704('0x1f')](handleEntityNotFound(_0x2d3525,null))['then'](function(_0x77c179){if(_0x77c179){_0x1b490e=_0x77c179;return _0x77c179[_0xd704('0x10e')]({'raw':!![]});}})[_0xd704('0x1f')](function(_0x18fd9c){if(_0x1b490e){if(_0x18fd9c){_0x14faa1=_0x18fd9c;}}return require(_0xd704('0x14'))['getLicense']();})[_0xd704('0x1f')](function(_0x1cf59c){if(_0x1cf59c){_0x59d60a=_0x1cf59c[_0xd704('0x10f')];_0xa347d4=_0x1cf59c[_0xd704('0x7b')];}})['then'](function(){return db[_0xd704('0xb6')][_0xd704('0x53')]({'where':{'closed':![]}});})[_0xd704('0x1f')](function(_0x391d47){_0xa1e37e=_0x391d47;if(_0x59d60a&&_0x391d47>_0x59d60a){return db[_0xd704('0x110')]['findOne']({'where':{'id':0x1}})['then'](function(_0x1ca802){if(_0x1ca802){_0x1ca802[_0xd704('0x111')](_0xd704('0x112'));}});}})['then'](function(){if(_0x1b490e[_0xd704('0x10c')]&&_0x1b490e[_0xd704('0x10c')][_0xd704('0x10d')]){var _0x13bf04=[];for(var _0x18e026=0x0;_0x18e026<_0x1b490e[_0xd704('0x10c')][_0xd704('0x10d')][_0xd704('0x47')];_0x18e026++){var _0x621725=_0x1b490e['Interval'][_0xd704('0x10d')][_0x18e026][_0xd704('0x36')]({'plain':!![]});_0x13bf04[_0xd704('0xbe')](iftimePromise(_0x621725,_0x1b490e));}return BPromise['all'](_0x13bf04)[_0xd704('0x1f')](function(_0x26e443){return _['some'](_0x26e443);});}else{return!![];}})[_0xd704('0x1f')](function(_0x257157){var _0x2b37f0=fs[_0xd704('0x113')](path[_0xd704('0x79')](config[_0xd704('0x7c')],_0xd704('0x114')),_0xd704('0xd5'));var _0x439b50={'remote':_0x1b490e[_0xd704('0x115')],'query':querystring['stringify'](_[_0xd704('0x50')](_0x1b490e['get']({'plain':!![]}),{'customerIp':_0x236fb5['headers'][_0xd704('0xa8')]||_0x236fb5[_0xd704('0x88')][_0xd704('0x116')]||_0x236fb5['connection']['remoteAddress']||_0x236fb5['ip'],'referer':_0x236fb5[_0xd704('0x88')]['referer'],'openedInteractions':_0xa1e37e,'maxInteractions':_0x59d60a,'virtual':_0xa347d4[_0xd704('0x10f')],'online':_0x257157,'custom':_0xa347d4}))[_0xd704('0x117')](/'/g,'\x5c\x27')};_0x2d3525[_0xd704('0xcd')](ejs[_0xd704('0xd6')](Mustache[_0xd704('0xd6')](_0x2b37f0,_0x439b50),{'proactiveActions':_0x14faa1,'alignment':_0x1b490e[_0xd704('0x118')],'verticalAlignment':_0x1b490e['verticalAlignment'],'div_color':_0x1b490e[_0xd704('0x119')],'text_color':_0x1b490e[_0xd704('0x11a')],'button_color':_0x1b490e[_0xd704('0x11b')],'background_color':_0x1b490e['backgroundColor']}));})['catch'](handleError(_0x2d3525,null));};exports[_0xd704('0x11c')]=function(_0x2a2a64,_0x26cc99,_0x4f11a9){return db[_0xd704('0x3d')][_0xd704('0x69')]({'where':{'id':_0x2a2a64[_0xd704('0x57')]['id']}})[_0xd704('0x1f')](handleEntityNotFound(_0x26cc99,null))[_0xd704('0x1f')](function(_0x3bed8e){if(_0x3bed8e){return db[_0xd704('0xdf')]['transaction'](function(_0x488174){return db[_0xd704('0x9c')][_0xd704('0x35')]({'where':{'ChatWebsiteId':_0x2a2a64[_0xd704('0x57')]['id']},'transaction':_0x488174})[_0xd704('0x1f')](function(_0x2fc133){var _0x406d61=_[_0xd704('0x41')](_0x2a2a64[_0xd704('0x62')],function(_0x3e72ce){_0x3e72ce['ChatWebsiteId']=_0x2a2a64['params']['id'];return _0x3e72ce;});return db[_0xd704('0x9c')][_0xd704('0x11d')](_0x406d61,{'transaction':_0x488174});});})[_0xd704('0x1f')](function(){return db['ChatApplication'][_0xd704('0x11e')]({'where':{'ChatWebsiteId':_0x2a2a64[_0xd704('0x57')]['id']},'order':_0xd704('0x11f')});});}})['then'](respondWithResult(_0x26cc99,null))['catch'](handleError(_0x26cc99,null));};exports[_0xd704('0x120')]=function(_0x233eff,_0x365dd1,_0x185062){var _0x38f162={};var _0x47d372={};var _0x3921c7;var _0x10e3b6;return db[_0xd704('0x3d')][_0xd704('0x69')]({'where':{'id':_0x233eff[_0xd704('0x57')]['id']}})[_0xd704('0x1f')](handleEntityNotFound(_0x365dd1,null))[_0xd704('0x1f')](function(_0x4a6f38){if(_0x4a6f38){_0x3921c7=_0x4a6f38;_0x47d372[_0xd704('0x40')]=_['keys'](db[_0xd704('0x9c')]['rawAttributes']);_0x47d372['query']=_[_0xd704('0x43')](_0x233eff[_0xd704('0x42')]);_0x47d372['filters']=_[_0xd704('0x45')](_0x47d372[_0xd704('0x40')],_0x47d372[_0xd704('0x42')]);_0x38f162[_0xd704('0x44')]=_['intersection'](_0x47d372[_0xd704('0x40')],qs[_0xd704('0x46')](_0x233eff[_0xd704('0x42')][_0xd704('0x46')]));_0x38f162[_0xd704('0x44')]=_0x38f162[_0xd704('0x44')][_0xd704('0x47')]?_0x38f162['attributes']:_0x47d372['model'];_0x38f162['order']=qs['sort'](_0x233eff[_0xd704('0x42')][_0xd704('0x4b')]);_0x38f162[_0xd704('0x4c')]=qs['filters'](_[_0xd704('0x4d')](_0x233eff[_0xd704('0x42')],_0x47d372[_0xd704('0x4e')]));if(_0x233eff['query'][_0xd704('0x4f')]){_0x38f162[_0xd704('0x4c')]=_[_0xd704('0x50')](_0x38f162[_0xd704('0x4c')],{'$or':_[_0xd704('0x41')](_0x38f162[_0xd704('0x44')],function(_0x10c212){var _0x4e9e72={};_0x4e9e72[_0x10c212]={'$like':'%'+_0x233eff[_0xd704('0x42')][_0xd704('0x4f')]+'%'};return _0x4e9e72;})});}_0x38f162=_[_0xd704('0x50')]({},_0x38f162,_0x233eff[_0xd704('0x52')]);return _0x3921c7['getApplications'](_0x38f162);}})[_0xd704('0x1f')](function(_0x151bd3){if(_0x151bd3){_0x10e3b6=_0x151bd3['length'];if(!_0x233eff[_0xd704('0x42')][_0xd704('0x48')]('nolimit')){_0x38f162[_0xd704('0x2f')]=qs[_0xd704('0x2f')](_0x233eff[_0xd704('0x42')]['limit']);_0x38f162['offset']=qs[_0xd704('0x2d')](_0x233eff[_0xd704('0x42')][_0xd704('0x2d')]);}return _0x3921c7['getApplications'](_0x38f162);}})['then'](function(_0x58374e){if(_0x58374e){return _0x58374e?{'count':_0x10e3b6,'rows':_0x58374e}:null;}})[_0xd704('0x1f')](respondWithResult(_0x365dd1,null))[_0xd704('0x29')](handleError(_0x365dd1,null));};exports[_0xd704('0x121')]=function(_0x6f37cb,_0x4b801d,_0x5d7da6){return db[_0xd704('0x122')][_0xd704('0x63')]({'where':{'id':_0x6f37cb['params']['id']}})['then'](handleEntityNotFound(_0x4b801d,null))[_0xd704('0x1f')](function(_0x2c9f82){if(_0x2c9f82){return _0x2c9f82[_0xd704('0x121')](_0x6f37cb[_0xd704('0x62')][_0xd704('0x6c')],_[_0xd704('0xf9')](_0x6f37cb[_0xd704('0x62')],['ids','id'])||{});}})[_0xd704('0x1f')](respondWithResult(_0x4b801d,null))['catch'](handleError(_0x4b801d,null));};exports[_0xd704('0x10e')]=function(_0x46b67d,_0xf04d03,_0x10d26b){var _0x58366c={};var _0x1cf548={};var _0x54fb0a;var _0x106f1f;return db[_0xd704('0x3d')][_0xd704('0x69')]({'where':{'id':_0x46b67d[_0xd704('0x57')]['id']}})[_0xd704('0x1f')](handleEntityNotFound(_0xf04d03,null))[_0xd704('0x1f')](function(_0x1b2e0c){if(_0x1b2e0c){_0x54fb0a=_0x1b2e0c;_0x1cf548[_0xd704('0x40')]=_[_0xd704('0x43')](db[_0xd704('0x123')][_0xd704('0x3e')]);_0x1cf548[_0xd704('0x42')]=_[_0xd704('0x43')](_0x46b67d[_0xd704('0x42')]);_0x1cf548[_0xd704('0x4e')]=_[_0xd704('0x45')](_0x1cf548[_0xd704('0x40')],_0x1cf548[_0xd704('0x42')]);_0x58366c[_0xd704('0x44')]=_[_0xd704('0x45')](_0x1cf548[_0xd704('0x40')],qs[_0xd704('0x46')](_0x46b67d[_0xd704('0x42')][_0xd704('0x46')]));_0x58366c[_0xd704('0x44')]=_0x58366c[_0xd704('0x44')][_0xd704('0x47')]?_0x58366c['attributes']:_0x1cf548['model'];_0x58366c['order']=qs[_0xd704('0x4b')](_0x46b67d[_0xd704('0x42')][_0xd704('0x4b')]);_0x58366c[_0xd704('0x4c')]=qs[_0xd704('0x4e')](_[_0xd704('0x4d')](_0x46b67d[_0xd704('0x42')],_0x1cf548[_0xd704('0x4e')]));if(_0x46b67d['query'][_0xd704('0x4f')]){_0x58366c[_0xd704('0x4c')]=_['merge'](_0x58366c[_0xd704('0x4c')],{'$or':_['map'](_0x58366c[_0xd704('0x44')],function(_0x122002){var _0x1a639e={};_0x1a639e[_0x122002]={'$like':'%'+_0x46b67d[_0xd704('0x42')][_0xd704('0x4f')]+'%'};return _0x1a639e;})});}_0x58366c=_['merge']({},_0x58366c,_0x46b67d[_0xd704('0x52')]);return _0x54fb0a[_0xd704('0x10e')](_0x58366c);}})['then'](function(_0x15d992){if(_0x15d992){_0x106f1f=_0x15d992['length'];if(!_0x46b67d[_0xd704('0x42')][_0xd704('0x48')](_0xd704('0x49'))){_0x58366c[_0xd704('0x2f')]=qs[_0xd704('0x2f')](_0x46b67d[_0xd704('0x42')][_0xd704('0x2f')]);_0x58366c[_0xd704('0x2d')]=qs[_0xd704('0x2d')](_0x46b67d[_0xd704('0x42')]['offset']);}return _0x54fb0a[_0xd704('0x10e')](_0x58366c);}})[_0xd704('0x1f')](function(_0x452e4a){if(_0x452e4a){return _0x452e4a?{'count':_0x106f1f,'rows':_0x452e4a}:null;}})[_0xd704('0x1f')](respondWithResult(_0xf04d03,null))[_0xd704('0x29')](handleError(_0xf04d03,null));};exports['getFields']=function(_0x3deb58,_0x1ecb06,_0x25918d){var _0x4ec8ba=_0x3deb58[_0xd704('0x42')][_0xd704('0x124')]==='false'?_0xd704('0x125'):_0xd704('0x126');return db[_0xd704('0x3d')][_0xd704('0x63')]({'attributes':['id',_0x4ec8ba],'where':{'id':_0x3deb58[_0xd704('0x57')]['id']}})[_0xd704('0x1f')](handleEntityNotFound(_0x1ecb06,null))[_0xd704('0x1f')](function(_0x487713){if(_0x487713){var _0x1cdebf=_0x487713[_0x4ec8ba];var _0x56dbbe=_0x1cdebf&&_0x1cdebf[_0xd704('0x127')]?_0x1cdebf[_0xd704('0x127')]:[];_0x1ecb06[_0xd704('0xcd')]({'fromKey':_[_0xd704('0x7f')](_0x1cdebf[_0xd704('0x128')])?undefined:_0x1cdebf[_0xd704('0x128')],'count':_0x56dbbe['length'],'rows':_0x56dbbe});}})[_0xd704('0x29')](handleError(_0x1ecb06,null));};exports['getOfflineMessages']=function(_0x4e07f4,_0x224bbe,_0x2f37cb){var _0x2ffd97={'raw':![],'where':{}};var _0x406fa7={};var _0x2c1f5e={'count':0x0,'rows':[]};return db[_0xd704('0x3d')][_0xd704('0x69')]({'where':{'id':_0x4e07f4[_0xd704('0x57')]['id']}})[_0xd704('0x1f')](handleEntityNotFound(_0x224bbe,null))[_0xd704('0x1f')](function(_0x44fbca){if(_0x44fbca){_0x406fa7[_0xd704('0x40')]=_[_0xd704('0x43')](db[_0xd704('0xd7')][_0xd704('0x3e')]);_0x406fa7[_0xd704('0x42')]=_[_0xd704('0x43')](_0x4e07f4[_0xd704('0x42')]);_0x406fa7['filters']=_[_0xd704('0x45')](_0x406fa7[_0xd704('0x40')],_0x406fa7[_0xd704('0x42')]);_0x2ffd97[_0xd704('0x44')]=_[_0xd704('0x45')](_0x406fa7[_0xd704('0x40')],qs[_0xd704('0x46')](_0x4e07f4[_0xd704('0x42')]['fields']));_0x2ffd97[_0xd704('0x44')]=_0x2ffd97[_0xd704('0x44')][_0xd704('0x47')]?_0x2ffd97[_0xd704('0x44')]:_0x406fa7['model'];if(!_0x4e07f4[_0xd704('0x42')]['hasOwnProperty'](_0xd704('0x49'))){_0x2ffd97[_0xd704('0x2f')]=qs[_0xd704('0x2f')](_0x4e07f4[_0xd704('0x42')][_0xd704('0x2f')]);_0x2ffd97[_0xd704('0x2d')]=qs[_0xd704('0x2d')](_0x4e07f4[_0xd704('0x42')][_0xd704('0x2d')]);}_0x2ffd97[_0xd704('0x4a')]=qs['sort'](_0x4e07f4['query']['sort']);_0x2ffd97[_0xd704('0x4c')]=qs[_0xd704('0x4e')](_[_0xd704('0x4d')](_0x4e07f4['query'],_0x406fa7[_0xd704('0x4e')]));_0x2ffd97['where']['ChatWebsiteId']=_0x44fbca['id'];if(_0x4e07f4[_0xd704('0x42')][_0xd704('0x4f')]){_0x2ffd97[_0xd704('0x4c')]=_[_0xd704('0x50')](_0x2ffd97['where'],{'$or':_['map'](_0x2ffd97[_0xd704('0x44')],function(_0x51e4db){var _0x3dc852={};_0x3dc852[_0x51e4db]={'$like':'%'+_0x4e07f4['query'][_0xd704('0x4f')]+'%'};return _0x3dc852;})});}_0x2ffd97=_[_0xd704('0x50')]({},_0x2ffd97,_0x4e07f4[_0xd704('0x52')]);return db[_0xd704('0xd7')]['count']({'where':_0x2ffd97[_0xd704('0x4c')]})['then'](function(_0x51378d){_0x2c1f5e[_0xd704('0x53')]=_0x51378d;if(_0x4e07f4[_0xd704('0x42')][_0xd704('0x58')]){_0x2ffd97[_0xd704('0x54')]=[{'all':!![]}];}else{_0x2ffd97[_0xd704('0x54')]=[{'model':db['CmContact'],'as':_0xd704('0xfb'),'required':![]},{'model':db[_0xd704('0xe1')],'as':'Attachments','required':![]}];}return db[_0xd704('0xd7')][_0xd704('0x6a')](_0x2ffd97);})[_0xd704('0x1f')](function(_0x1c6cc8){_0x2c1f5e[_0xd704('0x55')]=_0x1c6cc8;return _0x2c1f5e;});}})['then'](respondWithFilteredResult(_0x224bbe,_0x2ffd97))[_0xd704('0x29')](handleError(_0x224bbe,null));};exports[_0xd704('0x129')]=function(_0x5ecd1d,_0x21be49,_0x50b705){return db['ChatWebsite'][_0xd704('0x63')]({'where':{'id':_0x5ecd1d[_0xd704('0x57')]['id']}})[_0xd704('0x1f')](handleEntityNotFound(_0x21be49,null))[_0xd704('0x1f')](function(_0x114419){if(_0x114419){return _0x114419[_0xd704('0x129')](_0x5ecd1d[_0xd704('0x62')][_0xd704('0x6c')],_[_0xd704('0xf9')](_0x5ecd1d[_0xd704('0x62')],['ids','id'])||{})['spread'](function(_0x2da629){for(var _0x4b3db2=0x0;_0x4b3db2<_0x5ecd1d[_0xd704('0x62')]['ids']['length'];_0x4b3db2+=0x1){socket[_0xd704('0x12a')](_0xd704('0x12b'),{'UserId':Number(_0x5ecd1d[_0xd704('0x62')]['ids'][_0x4b3db2]),'ChatWebsiteId':Number(_0x5ecd1d['params']['id'])});}return _0x2da629;});}})[_0xd704('0x1f')](respondWithResult(_0x21be49,null))[_0xd704('0x29')](handleError(_0x21be49,null));};exports[_0xd704('0x12c')]=function(_0x3679d2,_0x1c222b,_0x25a79a){return db[_0xd704('0x3d')][_0xd704('0x63')]({'where':{'id':_0x3679d2[_0xd704('0x57')]['id']}})['then'](handleEntityNotFound(_0x1c222b,null))[_0xd704('0x1f')](function(_0x1ba88a){if(_0x1ba88a){return _0x1ba88a[_0xd704('0x12c')](_0x3679d2[_0xd704('0x42')]['ids'])[_0xd704('0x1f')](function(){if(_[_0xd704('0x12d')](_0x3679d2['query']['ids'])){for(var _0x10dd09=0x0;_0x10dd09<_0x3679d2[_0xd704('0x42')]['ids'][_0xd704('0x47')];_0x10dd09+=0x1){socket[_0xd704('0x12a')](_0xd704('0x12e'),{'UserId':Number(_0x3679d2[_0xd704('0x42')][_0xd704('0x6c')][_0x10dd09]),'ChatWebsiteId':Number(_0x3679d2[_0xd704('0x57')]['id'])});}}else{socket['emit'](_0xd704('0x12e'),{'UserId':Number(_0x3679d2[_0xd704('0x42')][_0xd704('0x6c')]),'ChatWebsiteId':Number(_0x3679d2[_0xd704('0x57')]['id'])});}});}})[_0xd704('0x1f')](respondWithStatusCode(_0x1c222b,null))['catch'](handleError(_0x1c222b,null));};exports[_0xd704('0x12f')]=function(_0x4324d1,_0x1cb7c2,_0x426939){var _0x3d097b={};var _0x244fdf={};var _0x1fc81a;var _0x122783;return db[_0xd704('0x3d')][_0xd704('0x69')]({'where':{'id':_0x4324d1[_0xd704('0x57')]['id']}})[_0xd704('0x1f')](handleEntityNotFound(_0x1cb7c2,null))[_0xd704('0x1f')](function(_0x52e3f3){if(_0x52e3f3){_0x1fc81a=_0x52e3f3;_0x244fdf['model']=_['keys'](db[_0xd704('0xc5')]['rawAttributes']);_0x244fdf[_0xd704('0x42')]=_[_0xd704('0x43')](_0x4324d1[_0xd704('0x42')]);_0x244fdf[_0xd704('0x4e')]=_[_0xd704('0x45')](_0x244fdf[_0xd704('0x40')],_0x244fdf['query']);_0x3d097b[_0xd704('0x44')]=_[_0xd704('0x45')](_0x244fdf['model'],qs['fields'](_0x4324d1['query']['fields']));_0x3d097b[_0xd704('0x44')]=_0x3d097b[_0xd704('0x44')]['length']?_0x3d097b[_0xd704('0x44')]:_0x244fdf[_0xd704('0x40')];_0x3d097b[_0xd704('0x4a')]=qs['sort'](_0x4324d1[_0xd704('0x42')][_0xd704('0x4b')]);_0x3d097b[_0xd704('0x4c')]=qs[_0xd704('0x4e')](_[_0xd704('0x4d')](_0x4324d1['query'],_0x244fdf[_0xd704('0x4e')]));if(_0x4324d1[_0xd704('0x42')]['filter']){_0x3d097b[_0xd704('0x4c')]=_[_0xd704('0x50')](_0x3d097b[_0xd704('0x4c')],{'$or':_[_0xd704('0x41')](_0x3d097b[_0xd704('0x44')],function(_0xe1101e){var _0x3beff2={};_0x3beff2[_0xe1101e]={'$like':'%'+_0x4324d1['query'][_0xd704('0x4f')]+'%'};return _0x3beff2;})});}_0x3d097b=_[_0xd704('0x50')]({},_0x3d097b,_0x4324d1[_0xd704('0x52')]);return _0x1fc81a[_0xd704('0x12f')](_0x3d097b);}})[_0xd704('0x1f')](function(_0x4a7d14){if(_0x4a7d14){_0x122783=_0x4a7d14['length'];if(!_0x4324d1[_0xd704('0x42')][_0xd704('0x48')](_0xd704('0x49'))){_0x3d097b[_0xd704('0x2f')]=qs[_0xd704('0x2f')](_0x4324d1[_0xd704('0x42')][_0xd704('0x2f')]);_0x3d097b['offset']=qs[_0xd704('0x2d')](_0x4324d1[_0xd704('0x42')][_0xd704('0x2d')]);}return _0x1fc81a[_0xd704('0x12f')](_0x3d097b);}})[_0xd704('0x1f')](function(_0xeb2fe3){if(_0xeb2fe3){return _0xeb2fe3?{'count':_0x122783,'rows':_0xeb2fe3}:null;}})[_0xd704('0x1f')](respondWithResult(_0x1cb7c2,null))[_0xd704('0x29')](handleError(_0x1cb7c2,null));};
\ No newline at end of file
+var _0x8274=['server/files/images/avatars/default_avatar.png','agentAvatar','server/files/images/avatars/','download','getCustomerAvatar','server/files/images/avatars/customer_avatar.png','showCustomerAvatar','getSystemAvatar','server/files/images/avatars/system_avatar.png','systemAvatar','setUA','headers','user-agent','getResult','Sequelize','ValidationError','difference','createdAt','updatedAt','ListId','from','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','List','DESC','ChatApplication','Applications','account','list','orderBy','asc','defaults','CmContact','contact','customerIp','cf-connecting-ip','x-forwarded-for','first','split','firstName','lastName','x-real-port','referer','browser','version','unknown','format','%s\x20%s','device','vendor','threadId','externalUrl','ChatInteraction','ContactId','interaction','messageId','created','applications','close','unmanaged','*,*,*,*','ChatMessage','UserId','Start','startRouting','EventManager','no\x20available\x20attributes','CompanyId','mapKeyOffline','mapKeyOffline\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKeyOffline\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','MailAccount','findOrCreate','spread','readFileSync','server/files/templates/chatOfflineMessage.ejs','utf8','render','toPairs','offlineMessageBody','ChatOfflineMessage','originalname','server','attachments','basename','sequelize','Attachment','bulkCreate','MailServerOut','Smtp','forwardOfflineAddress','service','host','port','secure','authentication','user','pass','SendMail','sendMail','\x22%s\x22\x20<%s>','offlineMessageSubject','openNewInteraction','MailAccountId','toPairsIn','subjectOffline','email','NotifyMailAccount','notifyMail','files','remove','Could\x20not\x20remove\x20attachment\x20file','getInteractions','User','Owner','fullname','internal','Tags','color','tag','Command','timezone','iftime\x20%s,%s','interval','iftime\x20%s','[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)','ONLINE','OFFLINE','No\x20timezone','inspect','Interval','Intervals','getProactiveActions','virtual','custom','increment','push','all','some','server/files/chat/iframe.ejs','remote','x-real-ip','connection','remoteAddress','replace','alignment','verticalAlignment','textColor','color_button','backgroundColor','addApplications','transaction','findAndCountAll','getApplications','addProactiveActions','omit','ChatProactiveAction','false','offlineForm','onlineForm','items','fromKey','getOfflineMessages','Contact','addAgents','emit','userChatWebsite:save','removeAgents','isArray','userChatWebsite:remove','getAgents','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','localhost','socket.io-emitter','redis','register','client','http','then','info','ChatWebsite,\x20%s,\x20%s','request\x20sent','ChatWebsite,\x20%s,\x20%s,\x20%s','stringify','error','code','message','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','update','destroy','get','ChatWebsites','UserProfileResource','sendStatus','stack','name','send','Pause','mandatoryDispositionPause','map','ChatWebsite','rawAttributes','type','key','query','keys','filters','model','intersection','fields','attributes','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','params','catch','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','ChatWebsiteId','Disposition','hasOwnProperty','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','findOne','removeAnswers','addLogo','sitepic','file','filename','addCustomerAvatar','customerAvatar','addSystemAvatar','getLogo','root','getLicense','isNil','existsSync','server/files/images/logos/','join'];(function(_0x5cb186,_0x4e9528){var _0x181465=function(_0x31206f){while(--_0x31206f){_0x5cb186['push'](_0x5cb186['shift']());}};_0x181465(++_0x4e9528);}(_0x8274,0xb0));var _0x4827=function(_0x3b3697,_0x21ba9c){_0x3b3697=_0x3b3697-0x0;var _0x444ca7=_0x8274[_0x3b3697];return _0x444ca7;};'use strict';var emlformat=require(_0x4827('0x0'));var rimraf=require(_0x4827('0x1'));var zipdir=require(_0x4827('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x4827('0x3'));var BPromise=require(_0x4827('0x4'));var Mustache=require(_0x4827('0x5'));var util=require(_0x4827('0x6'));var path=require('path');var sox=require(_0x4827('0x7'));var csv=require(_0x4827('0x8'));var ejs=require(_0x4827('0x9'));var fs=require('fs');var fs_extra=require(_0x4827('0xa'));var _=require(_0x4827('0xb'));var squel=require(_0x4827('0xc'));var crypto=require(_0x4827('0xd'));var jsforce=require(_0x4827('0xe'));var deskjs=require(_0x4827('0xf'));var toCsv=require('to-csv');var querystring=require(_0x4827('0x10'));var Papa=require('papaparse');var Redis=require(_0x4827('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x4827('0x12'));var as=require(_0x4827('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0x4827('0x14'));var config=require(_0x4827('0x15'));var licenseUtil=require(_0x4827('0x16'));var db=require(_0x4827('0x17'))['db'];config['redis']=_['defaults'](config['redis'],{'host':_0x4827('0x18'),'port':0x18eb});var socket=require(_0x4827('0x19'))(new Redis(config[_0x4827('0x1a')]));require('./chatWebsite.socket')[_0x4827('0x1b')](socket);var jayson=require('jayson/promise');var client=jayson[_0x4827('0x1c')][_0x4827('0x1d')]({'port':0x232c});var client9002=jayson['client'][_0x4827('0x1d')]({'port':0x232a});var client9003=jayson[_0x4827('0x1c')]['http']({'port':0x232b});var client9001=jayson[_0x4827('0x1c')][_0x4827('0x1d')]({'port':0x2329});function respondWithRpcPromise(_0x124ad1,_0x4a7fb6,_0x140625,_0x121bba){return new BPromise(function(_0xbab042,_0x4a72dc){var _0x220cda=_0x121bba||client;return _0x220cda['request'](_0x124ad1,_0x140625)[_0x4827('0x1e')](function(_0x59c80f){logger[_0x4827('0x1f')](_0x4827('0x20'),_0x4a7fb6,_0x4827('0x21'));logger['debug'](_0x4827('0x22'),_0x4a7fb6,'request\x20sent',JSON[_0x4827('0x23')](_0x59c80f));if(_0x59c80f[_0x4827('0x24')]){if(_0x59c80f[_0x4827('0x24')][_0x4827('0x25')]===0x1f4){logger['error'](_0x4827('0x20'),_0x4a7fb6,_0x59c80f[_0x4827('0x24')][_0x4827('0x26')]);return _0x4a72dc(_0x59c80f[_0x4827('0x24')][_0x4827('0x26')]);}logger[_0x4827('0x24')](_0x4827('0x20'),_0x4a7fb6,_0x59c80f[_0x4827('0x24')]['message']);return _0xbab042(_0x59c80f['error'][_0x4827('0x26')]);}else{logger['info']('ChatWebsite,\x20%s,\x20%s',_0x4a7fb6,_0x4827('0x21'));_0xbab042(_0x59c80f['result'][_0x4827('0x26')]);}})['catch'](function(_0x203965){logger[_0x4827('0x24')](_0x4827('0x20'),_0x4a7fb6,_0x203965);_0x4a72dc(_0x203965);});});}function respondWithStatusCode(_0x21f799,_0xce3a29){_0xce3a29=_0xce3a29||0xcc;return function(_0x46d8a5){if(_0x46d8a5){return _0x21f799['sendStatus'](_0xce3a29);}return _0x21f799[_0x4827('0x27')](_0xce3a29)[_0x4827('0x28')]();};}function respondWithResult(_0x4bf0ac,_0x26d0a7){_0x26d0a7=_0x26d0a7||0xc8;return function(_0x25bbb3){if(_0x25bbb3){return _0x4bf0ac['status'](_0x26d0a7)[_0x4827('0x29')](_0x25bbb3);}};}function respondWithFilteredResult(_0xea721c,_0x48ea6f){return function(_0x1d5888){if(_0x1d5888){var _0x3937eb=typeof _0x48ea6f[_0x4827('0x2a')]===_0x4827('0x2b')&&typeof _0x48ea6f[_0x4827('0x2c')]==='undefined';var _0xef303=_0x1d5888[_0x4827('0x2d')];var _0x132ed3=_0x3937eb?0x0:_0x48ea6f[_0x4827('0x2a')];var _0x230c95=_0x3937eb?_0x1d5888[_0x4827('0x2d')]:_0x48ea6f['offset']+_0x48ea6f[_0x4827('0x2c')];var _0x1a0d5e;if(_0x230c95>=_0xef303){_0x230c95=_0xef303;_0x1a0d5e=0xc8;}else{_0x1a0d5e=0xce;}_0xea721c[_0x4827('0x27')](_0x1a0d5e);return _0xea721c[_0x4827('0x2e')](_0x4827('0x2f'),_0x132ed3+'-'+_0x230c95+'/'+_0xef303)[_0x4827('0x29')](_0x1d5888);}return null;};}function patchUpdates(_0x29b2b4){return function(_0x3ceb19){try{jsonpatch['apply'](_0x3ceb19,_0x29b2b4,!![]);}catch(_0x4ff3a4){return BPromise[_0x4827('0x30')](_0x4ff3a4);}return _0x3ceb19['save']();};}function saveUpdates(_0x53b3b7,_0x5aa075){return function(_0x482fef){if(_0x482fef){return _0x482fef[_0x4827('0x31')](_0x53b3b7)[_0x4827('0x1e')](function(_0x33b469){return _0x33b469;});}return null;};}function removeEntity(_0x4ed430,_0x4f827a){return function(_0x3083da){if(_0x3083da){return _0x3083da[_0x4827('0x32')]()[_0x4827('0x1e')](function(){var _0x114f0a=_0x3083da[_0x4827('0x33')]({'plain':!![]});var _0x4a9401=_0x4827('0x34');return db[_0x4827('0x35')][_0x4827('0x32')]({'where':{'type':_0x4a9401,'resourceId':_0x114f0a['id']}})['then'](function(){return _0x3083da;});})['then'](function(){_0x4ed430[_0x4827('0x27')](0xcc)[_0x4827('0x28')]();});}};}function handleEntityNotFound(_0xcd4f85,_0x1502c1){return function(_0x90e8a2){if(!_0x90e8a2){_0xcd4f85[_0x4827('0x36')](0x194);}return _0x90e8a2;};}function handleError(_0x41778d,_0x2643cf){_0x2643cf=_0x2643cf||0x1f4;return function(_0x1c4f1b){logger[_0x4827('0x24')](_0x1c4f1b[_0x4827('0x37')]);if(_0x1c4f1b[_0x4827('0x38')]){delete _0x1c4f1b['name'];}_0x41778d[_0x4827('0x27')](_0x2643cf)[_0x4827('0x39')](_0x1c4f1b);};}exports['index']=function(_0x375fbb,_0x4b8d5e){var _0x268c24={'include':[{'model':db[_0x4827('0x3a')],'as':_0x4827('0x3b')}]},_0x323571={},_0x5d82dd={'count':0x0,'rows':[]};var _0x45f44d=_[_0x4827('0x3c')](db[_0x4827('0x3d')][_0x4827('0x3e')],function(_0x2fb497){return{'name':_0x2fb497['fieldName'],'type':_0x2fb497[_0x4827('0x3f')][_0x4827('0x40')]};});_0x323571['model']=_['map'](_0x45f44d,_0x4827('0x38'));_0x323571[_0x4827('0x41')]=_[_0x4827('0x42')](_0x375fbb['query']);_0x323571[_0x4827('0x43')]=_['intersection'](_0x323571[_0x4827('0x44')],_0x323571[_0x4827('0x41')]);_0x268c24['attributes']=_[_0x4827('0x45')](_0x323571[_0x4827('0x44')],qs[_0x4827('0x46')](_0x375fbb['query'][_0x4827('0x46')]));_0x268c24['attributes']=_0x268c24[_0x4827('0x47')][_0x4827('0x48')]?_0x268c24[_0x4827('0x47')]:_0x323571[_0x4827('0x44')];if(!_0x375fbb[_0x4827('0x41')]['hasOwnProperty'](_0x4827('0x49'))){_0x268c24['limit']=qs[_0x4827('0x2c')](_0x375fbb[_0x4827('0x41')][_0x4827('0x2c')]);_0x268c24[_0x4827('0x2a')]=qs[_0x4827('0x2a')](_0x375fbb[_0x4827('0x41')]['offset']);}_0x268c24[_0x4827('0x4a')]=qs[_0x4827('0x4b')](_0x375fbb[_0x4827('0x41')][_0x4827('0x4b')]);_0x268c24[_0x4827('0x4c')]=qs['filters'](_[_0x4827('0x4d')](_0x375fbb[_0x4827('0x41')],_0x323571[_0x4827('0x43')]),_0x45f44d);if(_0x375fbb[_0x4827('0x41')][_0x4827('0x4e')]){_0x268c24['where']=_[_0x4827('0x4f')](_0x268c24[_0x4827('0x4c')],{'$or':_[_0x4827('0x3c')](_0x45f44d,function(_0x28b795){if(_0x28b795['type']!==_0x4827('0x50')){var _0x3ab077={};_0x3ab077[_0x28b795[_0x4827('0x38')]]={'$like':'%'+_0x375fbb[_0x4827('0x41')][_0x4827('0x4e')]+'%'};return _0x3ab077;}})});}_0x268c24=_[_0x4827('0x4f')]({},_0x268c24,_0x375fbb[_0x4827('0x51')]);var _0x578575={'where':_0x268c24['where']};return db[_0x4827('0x3d')][_0x4827('0x2d')](_0x578575)[_0x4827('0x1e')](function(_0x2c158c){_0x5d82dd[_0x4827('0x2d')]=_0x2c158c;if(_0x375fbb['query'][_0x4827('0x52')]){_0x268c24[_0x4827('0x53')]=[{'all':!![]}];}return db[_0x4827('0x3d')][_0x4827('0x54')](_0x268c24);})[_0x4827('0x1e')](function(_0x3ce8a7){_0x5d82dd[_0x4827('0x55')]=_0x3ce8a7;return _0x5d82dd;})['then'](respondWithFilteredResult(_0x4b8d5e,_0x268c24))['catch'](handleError(_0x4b8d5e,null));};exports[_0x4827('0x56')]=function(_0x52d4c4,_0x9e5064){var _0x1be8b5={'raw':![],'where':{'id':_0x52d4c4[_0x4827('0x57')]['id']},'include':[{'model':db[_0x4827('0x3a')],'as':_0x4827('0x3b')}]},_0x4fba53={};_0x4fba53[_0x4827('0x44')]=_[_0x4827('0x42')](db[_0x4827('0x3d')][_0x4827('0x3e')]);_0x4fba53[_0x4827('0x41')]=_[_0x4827('0x42')](_0x52d4c4[_0x4827('0x41')]);_0x4fba53[_0x4827('0x43')]=_[_0x4827('0x45')](_0x4fba53[_0x4827('0x44')],_0x4fba53[_0x4827('0x41')]);_0x1be8b5[_0x4827('0x47')]=_[_0x4827('0x45')](_0x4fba53[_0x4827('0x44')],qs[_0x4827('0x46')](_0x52d4c4[_0x4827('0x41')][_0x4827('0x46')]));_0x1be8b5[_0x4827('0x47')]=_0x1be8b5[_0x4827('0x47')][_0x4827('0x48')]?_0x1be8b5[_0x4827('0x47')]:_0x4fba53['model'];if(_0x52d4c4[_0x4827('0x41')][_0x4827('0x52')]){_0x1be8b5[_0x4827('0x53')]=[{'all':!![]}];}_0x1be8b5=_[_0x4827('0x4f')]({},_0x1be8b5,_0x52d4c4['options']);return db[_0x4827('0x3d')]['find'](_0x1be8b5)[_0x4827('0x1e')](handleEntityNotFound(_0x9e5064,null))[_0x4827('0x1e')](respondWithResult(_0x9e5064,null))[_0x4827('0x58')](handleError(_0x9e5064,null));};exports[_0x4827('0x59')]=function(_0x3305c5,_0x59fd53){return db[_0x4827('0x3d')][_0x4827('0x59')](_0x3305c5[_0x4827('0x5a')],{})[_0x4827('0x1e')](function(_0x73d869){var _0x6440bc=_0x3305c5['user'][_0x4827('0x33')]({'plain':!![]});if(!_0x6440bc)throw new Error(_0x4827('0x5b'));if(_0x6440bc[_0x4827('0x5c')]==='user'){var _0x51e5de=_0x73d869[_0x4827('0x33')]({'plain':!![]});var _0x22c503=_0x4827('0x34');return db[_0x4827('0x5d')][_0x4827('0x5e')]({'where':{'name':_0x22c503,'userProfileId':_0x6440bc['userProfileId']},'raw':!![]})['then'](function(_0x20bb2a){if(_0x20bb2a&&_0x20bb2a[_0x4827('0x5f')]===0x0){return db[_0x4827('0x35')]['create']({'name':_0x51e5de[_0x4827('0x38')],'resourceId':_0x51e5de['id'],'type':_0x20bb2a[_0x4827('0x38')],'sectionId':_0x20bb2a['id']},{})[_0x4827('0x1e')](function(){return _0x73d869;});}else{return _0x73d869;}})[_0x4827('0x58')](function(_0xf0161a){logger['error'](_0x4827('0x60'),_0xf0161a);throw _0xf0161a;});}return _0x73d869;})[_0x4827('0x1e')](respondWithResult(_0x59fd53,0xc9))[_0x4827('0x58')](handleError(_0x59fd53,null));};exports[_0x4827('0x31')]=function(_0x527c0c,_0xdbe8f4){if(_0x527c0c[_0x4827('0x5a')]['id']){delete _0x527c0c[_0x4827('0x5a')]['id'];}return db[_0x4827('0x3d')][_0x4827('0x5e')]({'where':{'id':_0x527c0c['params']['id']},'include':[{'model':db[_0x4827('0x3a')],'as':_0x4827('0x3b')}]})[_0x4827('0x1e')](handleEntityNotFound(_0xdbe8f4,null))['then'](saveUpdates(_0x527c0c[_0x4827('0x5a')],null))[_0x4827('0x1e')](respondWithResult(_0xdbe8f4,null))[_0x4827('0x58')](handleError(_0xdbe8f4,null));};exports['destroy']=function(_0x3ad7d6,_0x4b0b78){return db[_0x4827('0x3d')]['find']({'where':{'id':_0x3ad7d6['params']['id']}})[_0x4827('0x1e')](handleEntityNotFound(_0x4b0b78,null))[_0x4827('0x1e')](removeEntity(_0x4b0b78,null))['catch'](handleError(_0x4b0b78,null));};exports[_0x4827('0x61')]=function(_0x39e4cd,_0x36fd19){return db['ChatWebsite'][_0x4827('0x61')]()[_0x4827('0x1e')](respondWithResult(_0x36fd19,null))[_0x4827('0x58')](handleError(_0x36fd19,null));};exports[_0x4827('0x62')]=function(_0x5529ba,_0x5bdf15,_0x71f004){if(_0x5529ba[_0x4827('0x5a')]['id']){delete _0x5529ba[_0x4827('0x5a')]['id'];}return db['ChatWebsite'][_0x4827('0x5e')]({'where':{'id':_0x5529ba['params']['id']}})['then'](handleEntityNotFound(_0x5bdf15,null))['then'](function(_0x2a1600){if(_0x2a1600){_0x5529ba['body'][_0x4827('0x63')]=_0x2a1600['id'];return db[_0x4827('0x64')][_0x4827('0x59')](_0x5529ba['body']);}})[_0x4827('0x1e')](respondWithResult(_0x5bdf15,null))[_0x4827('0x58')](handleError(_0x5bdf15,null));};exports['getDispositions']=function(_0x3c486c,_0xdc473f,_0x5a9d78){var _0x1ee0e5={'raw':![],'where':{}};var _0x5ec1cd={};var _0x35a57a={'count':0x0,'rows':[]};return db[_0x4827('0x3d')]['findOne']({'where':{'id':_0x3c486c[_0x4827('0x57')]['id']}})[_0x4827('0x1e')](handleEntityNotFound(_0xdc473f,null))[_0x4827('0x1e')](function(_0x2cd225){if(_0x2cd225){_0x5ec1cd['model']=_[_0x4827('0x42')](db[_0x4827('0x64')][_0x4827('0x3e')]);_0x5ec1cd[_0x4827('0x41')]=_[_0x4827('0x42')](_0x3c486c[_0x4827('0x41')]);_0x5ec1cd[_0x4827('0x43')]=_[_0x4827('0x45')](_0x5ec1cd[_0x4827('0x44')],_0x5ec1cd['query']);_0x1ee0e5[_0x4827('0x47')]=_[_0x4827('0x45')](_0x5ec1cd[_0x4827('0x44')],qs['fields'](_0x3c486c[_0x4827('0x41')][_0x4827('0x46')]));_0x1ee0e5[_0x4827('0x47')]=_0x1ee0e5[_0x4827('0x47')][_0x4827('0x48')]?_0x1ee0e5['attributes']:_0x5ec1cd['model'];if(!_0x3c486c[_0x4827('0x41')][_0x4827('0x65')](_0x4827('0x49'))){_0x1ee0e5['limit']=qs['limit'](_0x3c486c['query'][_0x4827('0x2c')]);_0x1ee0e5['offset']=qs['offset'](_0x3c486c[_0x4827('0x41')][_0x4827('0x2a')]);}_0x1ee0e5['order']=qs[_0x4827('0x4b')](_0x3c486c[_0x4827('0x41')][_0x4827('0x4b')]);_0x1ee0e5[_0x4827('0x4c')]=qs[_0x4827('0x43')](_[_0x4827('0x4d')](_0x3c486c[_0x4827('0x41')],_0x5ec1cd[_0x4827('0x43')]));_0x1ee0e5[_0x4827('0x4c')]['ChatWebsiteId']=_0x2cd225['id'];if(_0x3c486c[_0x4827('0x41')]['filter']){_0x1ee0e5[_0x4827('0x4c')]=_['merge'](_0x1ee0e5[_0x4827('0x4c')],{'$or':_['map'](_0x1ee0e5[_0x4827('0x47')],function(_0x4e221c){var _0x488eac={};_0x488eac[_0x4e221c]={'$like':'%'+_0x3c486c[_0x4827('0x41')][_0x4827('0x4e')]+'%'};return _0x488eac;})});}_0x1ee0e5=_['merge']({},_0x1ee0e5,_0x3c486c[_0x4827('0x51')]);return db[_0x4827('0x64')][_0x4827('0x2d')]({'where':_0x1ee0e5['where']})[_0x4827('0x1e')](function(_0x3f25b5){_0x35a57a[_0x4827('0x2d')]=_0x3f25b5;if(_0x3c486c['query'][_0x4827('0x52')]){_0x1ee0e5['include']=[{'all':!![]}];}return db[_0x4827('0x64')][_0x4827('0x54')](_0x1ee0e5);})['then'](function(_0x291fec){_0x35a57a['rows']=_0x291fec;return _0x35a57a;});}})[_0x4827('0x1e')](respondWithFilteredResult(_0xdc473f,_0x1ee0e5))[_0x4827('0x58')](handleError(_0xdc473f,null));};exports['removeDispositions']=function(_0xcdc6b0,_0x2b1a36,_0x3161fa){return db[_0x4827('0x3d')]['find']({'where':{'id':_0xcdc6b0[_0x4827('0x57')]['id']}})[_0x4827('0x1e')](handleEntityNotFound(_0x2b1a36,null))[_0x4827('0x1e')](function(_0x2c0d38){if(_0x2c0d38){return _0x2c0d38[_0x4827('0x66')](_0xcdc6b0[_0x4827('0x41')][_0x4827('0x67')]);}})[_0x4827('0x1e')](respondWithStatusCode(_0x2b1a36,null))[_0x4827('0x58')](handleError(_0x2b1a36,null));};exports[_0x4827('0x68')]=function(_0x68abec,_0x3eec57,_0x2e3d92){if(_0x68abec[_0x4827('0x5a')]['id']){delete _0x68abec[_0x4827('0x5a')]['id'];}return db['ChatWebsite'][_0x4827('0x5e')]({'where':{'id':_0x68abec[_0x4827('0x57')]['id']}})[_0x4827('0x1e')](handleEntityNotFound(_0x3eec57,null))['then'](function(_0x1857a8){if(_0x1857a8){_0x68abec[_0x4827('0x5a')][_0x4827('0x63')]=_0x1857a8['id'];return db[_0x4827('0x69')][_0x4827('0x59')](_0x68abec[_0x4827('0x5a')]);}})[_0x4827('0x1e')](respondWithResult(_0x3eec57,null))[_0x4827('0x58')](handleError(_0x3eec57,null));};exports[_0x4827('0x6a')]=function(_0x55af9e,_0x41059a,_0x3a7326){var _0x8c2058={'raw':![],'where':{}};var _0x397b8a={};var _0x3d8d29={'count':0x0,'rows':[]};return db[_0x4827('0x3d')][_0x4827('0x6b')]({'where':{'id':_0x55af9e['params']['id']}})[_0x4827('0x1e')](handleEntityNotFound(_0x41059a,null))['then'](function(_0x358336){if(_0x358336){_0x397b8a[_0x4827('0x44')]=_[_0x4827('0x42')](db[_0x4827('0x69')][_0x4827('0x3e')]);_0x397b8a[_0x4827('0x41')]=_[_0x4827('0x42')](_0x55af9e[_0x4827('0x41')]);_0x397b8a['filters']=_[_0x4827('0x45')](_0x397b8a[_0x4827('0x44')],_0x397b8a[_0x4827('0x41')]);_0x8c2058['attributes']=_['intersection'](_0x397b8a[_0x4827('0x44')],qs[_0x4827('0x46')](_0x55af9e[_0x4827('0x41')][_0x4827('0x46')]));_0x8c2058[_0x4827('0x47')]=_0x8c2058[_0x4827('0x47')][_0x4827('0x48')]?_0x8c2058[_0x4827('0x47')]:_0x397b8a['model'];if(!_0x55af9e['query']['hasOwnProperty'](_0x4827('0x49'))){_0x8c2058[_0x4827('0x2c')]=qs[_0x4827('0x2c')](_0x55af9e[_0x4827('0x41')][_0x4827('0x2c')]);_0x8c2058[_0x4827('0x2a')]=qs[_0x4827('0x2a')](_0x55af9e['query'][_0x4827('0x2a')]);}_0x8c2058[_0x4827('0x4a')]=qs[_0x4827('0x4b')](_0x55af9e['query'][_0x4827('0x4b')]);_0x8c2058[_0x4827('0x4c')]=qs['filters'](_[_0x4827('0x4d')](_0x55af9e['query'],_0x397b8a[_0x4827('0x43')]));_0x8c2058[_0x4827('0x4c')]['ChatWebsiteId']=_0x358336['id'];if(_0x55af9e[_0x4827('0x41')][_0x4827('0x4e')]){_0x8c2058[_0x4827('0x4c')]=_['merge'](_0x8c2058[_0x4827('0x4c')],{'$or':_[_0x4827('0x3c')](_0x8c2058[_0x4827('0x47')],function(_0x217359){var _0x9d1f45={};_0x9d1f45[_0x217359]={'$like':'%'+_0x55af9e[_0x4827('0x41')]['filter']+'%'};return _0x9d1f45;})});}_0x8c2058=_[_0x4827('0x4f')]({},_0x8c2058,_0x55af9e[_0x4827('0x51')]);return db[_0x4827('0x69')][_0x4827('0x2d')]({'where':_0x8c2058[_0x4827('0x4c')]})['then'](function(_0x1eb789){_0x3d8d29[_0x4827('0x2d')]=_0x1eb789;if(_0x55af9e['query'][_0x4827('0x52')]){_0x8c2058[_0x4827('0x53')]=[{'all':!![]}];}return db['CannedAnswer'][_0x4827('0x54')](_0x8c2058);})[_0x4827('0x1e')](function(_0x265362){_0x3d8d29[_0x4827('0x55')]=_0x265362;return _0x3d8d29;});}})[_0x4827('0x1e')](respondWithFilteredResult(_0x41059a,_0x8c2058))['catch'](handleError(_0x41059a,null));};exports[_0x4827('0x6c')]=function(_0x1de5e9,_0x314874,_0x40036b){return db[_0x4827('0x3d')][_0x4827('0x5e')]({'where':{'id':_0x1de5e9[_0x4827('0x57')]['id']}})['then'](handleEntityNotFound(_0x314874,null))[_0x4827('0x1e')](function(_0x1fb37c){if(_0x1fb37c){return _0x1fb37c[_0x4827('0x6c')](_0x1de5e9[_0x4827('0x41')][_0x4827('0x67')]);}})[_0x4827('0x1e')](respondWithStatusCode(_0x314874,null))[_0x4827('0x58')](handleError(_0x314874,null));};exports[_0x4827('0x6d')]=function(_0x123614,_0x4d0584,_0x594095){_0x123614[_0x4827('0x5a')][_0x4827('0x6e')]=_0x123614[_0x4827('0x6f')][_0x4827('0x70')];return db[_0x4827('0x3d')]['find']({'where':{'id':_0x123614['params']['id']}})[_0x4827('0x1e')](handleEntityNotFound(_0x4d0584,null))['then'](saveUpdates(_0x123614[_0x4827('0x5a')],null))[_0x4827('0x1e')](respondWithResult(_0x4d0584,null))[_0x4827('0x58')](handleError(_0x4d0584,null));};exports['addAvatar']=function(_0x4da7f9,_0x59447d,_0x1102f3){_0x4da7f9[_0x4827('0x5a')]['agentAvatar']=_0x4da7f9['file'][_0x4827('0x70')];return db[_0x4827('0x3d')][_0x4827('0x5e')]({'where':{'id':_0x4da7f9[_0x4827('0x57')]['id']}})['then'](handleEntityNotFound(_0x59447d,null))['then'](saveUpdates(_0x4da7f9['body'],null))['then'](respondWithResult(_0x59447d,null))[_0x4827('0x58')](handleError(_0x59447d,null));};exports[_0x4827('0x71')]=function(_0x542c9c,_0x1a13c7,_0x199a6b){_0x542c9c['body'][_0x4827('0x72')]=_0x542c9c['file']['filename'];return db[_0x4827('0x3d')][_0x4827('0x5e')]({'where':{'id':_0x542c9c[_0x4827('0x57')]['id']}})[_0x4827('0x1e')](handleEntityNotFound(_0x1a13c7,null))[_0x4827('0x1e')](saveUpdates(_0x542c9c[_0x4827('0x5a')],null))[_0x4827('0x1e')](respondWithResult(_0x1a13c7,null))[_0x4827('0x58')](handleError(_0x1a13c7,null));};exports[_0x4827('0x73')]=function(_0x36e236,_0x5f56de,_0x4b8687){_0x36e236['body']['systemAvatar']=_0x36e236[_0x4827('0x6f')][_0x4827('0x70')];return db[_0x4827('0x3d')][_0x4827('0x5e')]({'where':{'id':_0x36e236[_0x4827('0x57')]['id']}})[_0x4827('0x1e')](handleEntityNotFound(_0x5f56de,null))['then'](saveUpdates(_0x36e236['body'],null))[_0x4827('0x1e')](respondWithResult(_0x5f56de,null))[_0x4827('0x58')](handleError(_0x5f56de,null));};exports[_0x4827('0x74')]=function(_0x2bffac,_0x547b51,_0xaef0d8){var _0x5875e8=path['join'](config[_0x4827('0x75')],'server/files/images/logos/default_logo.svg');var _0x2f93e7={'where':{'id':_0x2bffac[_0x4827('0x57')]['id']},'attributes':['id',_0x4827('0x6e')],'raw':!![]};var _0x48f028=![];return require(_0x4827('0x16'))[_0x4827('0x76')]()[_0x4827('0x1e')](function(_0x2f1bd6){if(_0x2f1bd6){_0x48f028=_0x2f1bd6['custom'];}})['then'](function(){return db[_0x4827('0x3d')][_0x4827('0x5e')](_0x2f93e7);})['then'](handleEntityNotFound(_0x547b51,null))[_0x4827('0x1e')](function(_0x20ac55){if(_0x20ac55){if(!_[_0x4827('0x77')](_0x20ac55['sitepic'])){if(fs[_0x4827('0x78')](path['join'](config[_0x4827('0x75')],_0x4827('0x79'),_0x20ac55[_0x4827('0x6e')]))&&_0x48f028){_0x5875e8=path[_0x4827('0x7a')](config[_0x4827('0x75')],_0x4827('0x79'),_0x20ac55[_0x4827('0x6e')]);}}return _0x547b51['download'](_0x5875e8);}})[_0x4827('0x58')](handleError(_0x547b51,null));};exports['getAvatar']=function(_0xa4378b,_0x10b397,_0x1367a4){var _0x4b1f76=path[_0x4827('0x7a')](config[_0x4827('0x75')],_0x4827('0x7b'));var _0x48820a={'where':{'id':_0xa4378b['params']['id']},'attributes':['id',_0x4827('0x7c')],'raw':!![]};return db[_0x4827('0x3d')][_0x4827('0x5e')](_0x48820a)[_0x4827('0x1e')](handleEntityNotFound(_0x10b397,null))['then'](function(_0x53e8ce){if(_0x53e8ce){if(!_[_0x4827('0x77')](_0x53e8ce[_0x4827('0x7c')])){if(fs['existsSync'](path[_0x4827('0x7a')](config[_0x4827('0x75')],_0x4827('0x7d'),_0x53e8ce[_0x4827('0x7c')]))){_0x4b1f76=path[_0x4827('0x7a')](config[_0x4827('0x75')],_0x4827('0x7d'),_0x53e8ce[_0x4827('0x7c')]);}}return _0x10b397[_0x4827('0x7e')](_0x4b1f76);}})[_0x4827('0x58')](handleError(_0x10b397,null));};exports[_0x4827('0x7f')]=function(_0x5bb9de,_0x51b76d,_0xb1068c){var _0x51b649=path[_0x4827('0x7a')](config[_0x4827('0x75')],_0x4827('0x80'));var _0x36de53={'where':{'id':_0x5bb9de[_0x4827('0x57')]['id']},'attributes':['id','customerAvatar','showCustomerAvatar'],'raw':!![]};return db['ChatWebsite'][_0x4827('0x5e')](_0x36de53)['then'](handleEntityNotFound(_0x51b76d,null))['then'](function(_0xb0963){if(_0xb0963){if(!_['isNil'](_0xb0963[_0x4827('0x72')])){if(fs[_0x4827('0x78')](path[_0x4827('0x7a')](config[_0x4827('0x75')],_0x4827('0x7d'),_0xb0963[_0x4827('0x72')]))&&_0xb0963[_0x4827('0x81')]){_0x51b649=path[_0x4827('0x7a')](config[_0x4827('0x75')],_0x4827('0x7d'),_0xb0963[_0x4827('0x72')]);}}return _0x51b76d[_0x4827('0x7e')](_0x51b649);}})['catch'](handleError(_0x51b76d,null));};exports[_0x4827('0x82')]=function(_0xd64ffe,_0x167b94,_0x496835){var _0x159986=path['join'](config['root'],_0x4827('0x83'));var _0x4df03b={'where':{'id':_0xd64ffe[_0x4827('0x57')]['id']},'attributes':['id','systemAvatar'],'raw':!![]};return db[_0x4827('0x3d')][_0x4827('0x5e')](_0x4df03b)[_0x4827('0x1e')](handleEntityNotFound(_0x167b94,null))[_0x4827('0x1e')](function(_0x1b0822){if(_0x1b0822){if(!_[_0x4827('0x77')](_0x1b0822['systemAvatar'])){if(fs[_0x4827('0x78')](path['join'](config[_0x4827('0x75')],_0x4827('0x7d'),_0x1b0822['systemAvatar']))){_0x159986=path['join'](config[_0x4827('0x75')],_0x4827('0x7d'),_0x1b0822[_0x4827('0x84')]);}}return _0x167b94[_0x4827('0x7e')](_0x159986);}})[_0x4827('0x58')](handleError(_0x167b94,null));};exports['notify']=function(_0x57bf01,_0x5608ce,_0x4d3fee){var _0x3a53b=require('user-agent-parser');var _0x4ac7e5=new _0x3a53b();var _0x4e8e5b=_0x4ac7e5[_0x4827('0x85')](_0x57bf01[_0x4827('0x86')][_0x4827('0x87')])[_0x4827('0x88')]();var _0x349a33={'body':_0x57bf01[_0x4827('0x5a')],'channel':'chat'};var _0x427ad2=[];var _0x3a060d=[];var _0x3a2489={};var _0x3a8575=![];return db['CmContact']['describe']()[_0x4827('0x1e')](function(_0x57a91e){if(!_0x57a91e){throw new db[(_0x4827('0x89'))][(_0x4827('0x8a'))]('no\x20available\x20attributes');}_0x427ad2=_[_0x4827('0x8b')](_[_0x4827('0x42')](_0x57a91e),[_0x4827('0x8c'),_0x4827('0x8d')]);_0x3a060d=_['difference'](_[_0x4827('0x42')](_0x57a91e),[_0x4827('0x8c'),_0x4827('0x8d'),'CompanyId',_0x4827('0x8e')]);if(_0x57bf01[_0x4827('0x5a')]['id']){delete _0x57bf01[_0x4827('0x5a')]['id'];}if(_[_0x4827('0x77')](_0x57bf01[_0x4827('0x5a')][_0x4827('0x8f')])){throw new db[(_0x4827('0x89'))][(_0x4827('0x8a'))](_0x4827('0x90'));}if(_['isNil'](_0x57bf01[_0x4827('0x5a')]['body'])||_0x57bf01[_0x4827('0x5a')][_0x4827('0x5a')]===''){throw new db[(_0x4827('0x89'))][(_0x4827('0x8a'))](_0x4827('0x91'));}if(_['isNil'](_0x57bf01[_0x4827('0x5a')][_0x4827('0x92')])){throw new db['Sequelize'][(_0x4827('0x8a'))](_0x4827('0x93')+_0x3a060d);}if(!_[_0x4827('0x94')](_0x3a060d,_0x57bf01['body'][_0x4827('0x92')])){throw new db[(_0x4827('0x89'))]['ValidationError'](_0x4827('0x95')+_0x3a060d);}_0x3a2489[_0x57bf01[_0x4827('0x5a')][_0x4827('0x92')]]=_0x57bf01[_0x4827('0x5a')][_0x4827('0x8f')];})[_0x4827('0x1e')](function(){return db['ChatWebsite']['find']({'where':{'id':_0x57bf01[_0x4827('0x57')]['id']},'include':[{'model':db[_0x4827('0x96')],'as':_0x4827('0x97'),'include':[{'model':db['CmContact'],'as':'Contacts','where':_0x3a2489,'limit':0x1,'order':[[_0x4827('0x8d'),_0x4827('0x98')]]}]},{'model':db[_0x4827('0x99')],'as':_0x4827('0x9a')}]});})[_0x4827('0x1e')](handleEntityNotFound(_0x5608ce,null))[_0x4827('0x1e')](function(_0x264e2e){if(_0x264e2e&&_0x264e2e['List']){_0x349a33[_0x4827('0x9b')]=_0x264e2e;_0x349a33['applications']=_0x264e2e[_0x4827('0x9a')];_0x349a33[_0x4827('0x9c')]=_0x264e2e[_0x4827('0x97')];_0x349a33['applications']=_[_0x4827('0x9d')](_0x349a33['applications'],['priority'],[_0x4827('0x9e')]);if(_0x349a33[_0x4827('0x9b')][_0x4827('0x9a')]){delete _0x349a33[_0x4827('0x9b')]['Applications'];}if(_0x349a33[_0x4827('0x9b')][_0x4827('0x97')]&&_0x349a33[_0x4827('0x9b')]['List']['Contacts'][_0x4827('0x48')]){return _0x349a33[_0x4827('0x9b')][_0x4827('0x97')]['Contacts'][0x0];}var _0x2052a4=_[_0x4827('0x9f')](_0x57bf01[_0x4827('0x5a')],{'firstName':_0x57bf01[_0x4827('0x5a')][_0x4827('0x8f')],'ListId':_0x264e2e[_0x4827('0x8e')]});_0x2052a4[_0x57bf01[_0x4827('0x5a')][_0x4827('0x92')]]=_0x57bf01['body'][_0x4827('0x8f')];return db[_0x4827('0xa0')][_0x4827('0x59')](_0x2052a4,{'fields':_0x427ad2,'raw':!![]});}})['then'](handleEntityNotFound(_0x5608ce,null))[_0x4827('0x1e')](function(_0x2c72d7){_0x349a33[_0x4827('0xa1')]=_0x2c72d7;var _0x2963fb=_0x57bf01[_0x4827('0x5a')][_0x4827('0xa2')];if(_0x57bf01[_0x4827('0x86')]['cf-connecting-ip']){_0x2963fb=_0x57bf01[_0x4827('0x86')][_0x4827('0xa3')];}else if(_0x57bf01['headers'][_0x4827('0xa4')]){_0x2963fb=_[_0x4827('0xa5')](_0x57bf01[_0x4827('0x86')]['x-forwarded-for'][_0x4827('0xa6')](','));}if(_0x2c72d7){var _0x8fd0ef={'ContactId':_0x2c72d7['id'],'ChatWebsiteId':_0x57bf01[_0x4827('0x57')]['id'],'from':(_0x2c72d7[_0x4827('0xa7')]||'')+'\x20'+(_0x2c72d7[_0x4827('0xa8')]||''),'customerIp':_0x2963fb,'customerPort':_0x57bf01[_0x4827('0x86')][_0x4827('0xa9')]?_0x57bf01[_0x4827('0x86')][_0x4827('0xa9')]:null,'referer':_0x57bf01['body'][_0x4827('0xaa')],'browserName':_0x4e8e5b[_0x4827('0xab')]['name']&&_0x4e8e5b[_0x4827('0xab')]['version']?util['format']('%s\x20%s',_0x4e8e5b[_0x4827('0xab')]['name'],_0x4e8e5b[_0x4827('0xab')][_0x4827('0xac')]):_0x4827('0xad'),'browserVersion':_0x4e8e5b[_0x4827('0xab')][_0x4827('0xac')]||_0x4827('0xad'),'osName':util[_0x4827('0xae')](_0x4827('0xaf'),_0x4e8e5b['os']['name'],_0x4e8e5b['os']['version']),'osVersion':_0x4e8e5b['os'][_0x4827('0xac')],'deviceModel':_0x4e8e5b[_0x4827('0xb0')][_0x4827('0x44')]&&_0x4e8e5b[_0x4827('0xb0')][_0x4827('0xb1')]?util['format']('%s\x20%s\x20%s',_0x4e8e5b['device'][_0x4827('0x44')],_0x4e8e5b[_0x4827('0xb0')][_0x4827('0xb1')],_0x4e8e5b[_0x4827('0xb0')]['type']):null,'deviceVendor':_0x4e8e5b[_0x4827('0xb0')][_0x4827('0xb1')],'deviceType':_0x4e8e5b['device'][_0x4827('0x3f')],'formData':JSON[_0x4827('0x23')](_0x57bf01[_0x4827('0x5a')])};var _0x5db2c5={'ChatWebsiteId':_0x57bf01['params']['id'],'closed':![]};if(_0x57bf01[_0x4827('0x5a')]['threadId']){_0x5db2c5['threadId']=_0x57bf01[_0x4827('0x5a')]['threadId'];return db['ChatInteraction'][_0x4827('0x5e')]({'where':_0x5db2c5})[_0x4827('0x1e')](function(_0x15bac7){if(_0x15bac7){return[_0x15bac7,![]];}_0x8fd0ef[_0x4827('0xb2')]=_0x57bf01[_0x4827('0x5a')][_0x4827('0xb2')];_0x8fd0ef[_0x4827('0xb3')]=_0x57bf01['body'][_0x4827('0xb3')];return db[_0x4827('0xb4')]['create'](_0x8fd0ef)[_0x4827('0x1e')](function(_0x655131){return[_0x655131,!![]];});});}_0x5db2c5[_0x4827('0xb5')]=_0x2c72d7['id'];if(_0x57bf01[_0x4827('0x5a')][_0x4827('0xb6')]&&_0x57bf01['body'][_0x4827('0xb6')]['id']){_0x5db2c5['id']=_0x57bf01[_0x4827('0x5a')][_0x4827('0xb6')]['id'];return db['ChatInteraction'][_0x4827('0x5e')]({'where':_0x5db2c5})[_0x4827('0x1e')](function(_0x1fc47d){if(_0x1fc47d){return[_0x1fc47d,![]];}return db['ChatInteraction']['create'](_0x8fd0ef)[_0x4827('0x1e')](function(_0x58cc05){return[_0x58cc05,!![]];});});}return db['ChatInteraction'][_0x4827('0x59')](_0x8fd0ef)[_0x4827('0x1e')](function(_0x8dcb1c){return[_0x8dcb1c,!![]];});}})['spread'](function(_0x3e53db,_0x1bd710){if(_0x3e53db){_0x3a8575=_0x1bd710;if(!_0x1bd710){var _0x581241={'from':(_0x349a33[_0x4827('0xa1')][_0x4827('0xa7')]||'')+'\x20'+(_0x349a33[_0x4827('0xa1')][_0x4827('0xa8')]||'')};if(_0x57bf01['body'][_0x4827('0xb2')]&&_0x57bf01[_0x4827('0x5a')][_0x4827('0xb7')]&&_0x57bf01[_0x4827('0x5a')]['threadId']!=_0x57bf01[_0x4827('0x5a')]['messageId']){_0x581241[_0x4827('0xb2')]=_0x57bf01[_0x4827('0x5a')][_0x4827('0xb7')];}return _0x3e53db[_0x4827('0x31')](_0x581241);}else{return _0x3e53db;}}})[_0x4827('0x1e')](function(_0x14206a){_0x349a33['interaction']=_0x14206a[_0x4827('0x33')]({'plain':!![]});_0x349a33[_0x4827('0xb6')][_0x4827('0xb8')]=_0x3a8575;if(_0x349a33[_0x4827('0xb6')][_0x4827('0xb8')]){if(_0x349a33['account']['autoclose']){_0x349a33[_0x4827('0xb9')]['push']({'id':0x0,'priority':_0x349a33[_0x4827('0xb9')]['length']+0x1,'app':_0x4827('0xba'),'appdata':_0x4827('0xbb'),'interval':_0x4827('0xbc')});}}return db[_0x4827('0xbd')][_0x4827('0x59')]({'body':_0x57bf01[_0x4827('0x5a')][_0x4827('0x5a')],'ChatWebsiteId':_0x57bf01[_0x4827('0x57')]['id'],'ChatInteractionId':_0x14206a['id'],'direction':'in','ContactId':_0x349a33[_0x4827('0xa1')]['id'],'AttachmentId':_0x57bf01[_0x4827('0x5a')]['AttachmentId']});})[_0x4827('0x1e')](function(_0x5196a5){_0x349a33[_0x4827('0x26')]=_0x5196a5;if(_0x349a33[_0x4827('0xb6')][_0x4827('0xbe')]){return db['User'][_0x4827('0x5e')]({'attributes':['id',_0x4827('0x38')],'where':{'id':_0x349a33[_0x4827('0xb6')][_0x4827('0xbe')]}})[_0x4827('0x1e')](function(_0x181cca){if(_0x181cca){_0x349a33[_0x4827('0xb9')]['unshift']({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x181cca['name']+','+(_0x349a33[_0x4827('0x9b')]['waitForTheAssignedAgent']||0xa),'interval':'*,*,*,*'});_0x349a33['forcedOwnership']=!![];}return respondWithRpcPromise('Start','startRouting',_0x349a33);});}return respondWithRpcPromise(_0x4827('0xbf'),_0x4827('0xc0'),_0x349a33);})[_0x4827('0x1e')](function(_0x4d9c3d){respondWithRpcPromise(_0x4827('0xc1'),_0x4827('0xc1'),{'event':'notify','message':_0x4d9c3d},client9002);return _0x4d9c3d;})[_0x4827('0x1e')](respondWithResult(_0x5608ce,null))[_0x4827('0x58')](handleError(_0x5608ce,null));};exports['offline']=function(_0x4e1394,_0x71b292,_0x368c2e){var _0x586cc0,_0x1d92d6,_0x526cee;var _0x4cd4b9=[];var _0xf84c35=[];var _0xf41113={};var _0x24f8d7=_0x4e1394['files']||[];var _0xd836c8=[];var _0x581369;return db[_0x4827('0xa0')][_0x4827('0x61')]()[_0x4827('0x1e')](function(_0x259f57){if(!_0x259f57){throw new db[(_0x4827('0x89'))]['ValidationError'](_0x4827('0xc2'));}_0xf84c35=_[_0x4827('0x8b')](_[_0x4827('0x42')](_0x259f57),[_0x4827('0x8c'),_0x4827('0x8d')]);_0x4cd4b9=_[_0x4827('0x8b')](_[_0x4827('0x42')](_0x259f57),[_0x4827('0x8c'),_0x4827('0x8d'),_0x4827('0xc3'),_0x4827('0x8e')]);if(_0x4e1394['body']['id']){delete _0x4e1394[_0x4827('0x5a')]['id'];}if(_[_0x4827('0x77')](_0x4e1394[_0x4827('0x5a')]['from'])){throw _0x71b292[_0x4827('0x27')](0x1f4)[_0x4827('0x39')](new db[(_0x4827('0x89'))][(_0x4827('0x8a'))](_0x4827('0x90')));}if(_[_0x4827('0x77')](_0x4e1394[_0x4827('0x5a')]['body'])||_0x4e1394[_0x4827('0x5a')]['body']===''){throw _0x71b292[_0x4827('0x27')](0x1f4)[_0x4827('0x39')](new db[(_0x4827('0x89'))]['ValidationError'](_0x4827('0x91')));}if(_[_0x4827('0x77')](_0x4e1394[_0x4827('0x5a')][_0x4827('0xc4')])){throw _0x71b292[_0x4827('0x27')](0x1f4)[_0x4827('0x39')](new db[(_0x4827('0x89'))][(_0x4827('0x8a'))](_0x4827('0xc5')+_0x4cd4b9));}if(!_[_0x4827('0x94')](_0x4cd4b9,_0x4e1394['body']['mapKeyOffline'])){throw _0x71b292[_0x4827('0x27')](0x1f4)[_0x4827('0x39')](new db['Sequelize']['ValidationError'](_0x4827('0xc6')+_0x4cd4b9));}_0xf41113[_0x4e1394[_0x4827('0x5a')][_0x4827('0xc4')]]=_0x4e1394[_0x4827('0x5a')][_0x4827('0x8f')];})[_0x4827('0x1e')](function(){return db['ChatWebsite'][_0x4827('0x5e')]({'where':{'id':_0x4e1394[_0x4827('0x57')]['id']},'include':[{'model':db[_0x4827('0x96')],'as':_0x4827('0x97')},{'model':db[_0x4827('0xc7')],'as':'MailAccount'}]});})[_0x4827('0x1e')](handleEntityNotFound(_0x71b292,null))[_0x4827('0x1e')](function(_0x171d35){if(_0x171d35&&_0x171d35[_0x4827('0x97')]){_0x1d92d6=_0x171d35;var _0x3a69d4=_[_0x4827('0x9f')](_0x4e1394[_0x4827('0x5a')],{'firstName':_0x4e1394[_0x4827('0x5a')]['from'],'phone':_0x4e1394['body'][_0x4827('0x8f')],'ListId':_0x171d35[_0x4827('0x8e')]});_0x3a69d4[_0x4e1394[_0x4827('0x5a')][_0x4827('0xc4')]]=_0x4e1394[_0x4827('0x5a')][_0x4827('0x8f')];return db[_0x4827('0xa0')][_0x4827('0xc8')]({'where':_0xf41113,'defaults':_0x3a69d4});}})[_0x4827('0xc9')](function(_0x519103){if(_0x519103){_0x526cee=_0x519103;var _0x1f6626=fs[_0x4827('0xca')](path[_0x4827('0x7a')](config[_0x4827('0x75')],_0x4827('0xcb')),_0x4827('0xcc'));var _0x2f4de7=ejs[_0x4827('0xcd')](_0x1f6626,{'body':_[_0x4827('0xce')](_0x4e1394['body'][_0x4827('0x5a')]),'bodyTitle':_0x1d92d6[_0x4827('0xcf')]});return db[_0x4827('0xd0')]['create']({'body':_0x2f4de7,'ContactId':_0x519103['id'],'ChatWebsiteId':_0x1d92d6['id']});}})['then'](function(_0x4e6973){_0x581369=_0x4e6973;if(_0x24f8d7['length']){var _0x456d91=_0x24f8d7[_0x4827('0x3c')](function(_0x2805b7){return{'name':_0x2805b7[_0x4827('0xd1')],'basename':_0x2805b7[_0x4827('0x70')],'type':_0x2805b7['mimetype'],'ChatOfflineMessageId':_0x4e6973['id']};});_0xd836c8=_0x456d91['map'](_0x5d9222=>{var _0x4f26da={'filename':_0x5d9222[_0x4827('0x38')],'path':path['join'](config[_0x4827('0x75')],_0x4827('0xd2'),'files',_0x4827('0xd3'),'offline-chat',_0x5d9222[_0x4827('0xd4')])};return _0x4f26da;});if(!_0x1d92d6['openNewInteraction']){return db[_0x4827('0xd5')]['transaction'](function(_0x255334){return db[_0x4827('0xd6')][_0x4827('0xd7')](_0x456d91,{'transaction':_0x255334});});}}})[_0x4827('0x1e')](function(){if(_0x581369){_0x586cc0=_0x581369;return db['MailAccount'][_0x4827('0x6b')]({'where':{'active':!![]},'include':[{'model':db[_0x4827('0xd8')],'as':_0x4827('0xd9'),'raw':!![]}]});}})['then'](function(_0x5a679d){if(_0x5a679d&&_0x5a679d[_0x4827('0xd9')]&&_0x1d92d6['forwardOffline']&&_0x1d92d6[_0x4827('0xda')]){var _0x2686dc={'tls':{'rejectUnauthorized':![]}};if(_0x5a679d[_0x4827('0xd9')][_0x4827('0xdb')]){_0x2686dc[_0x4827('0xdb')]=_0x5a679d[_0x4827('0xd9')][_0x4827('0xdb')];}else{_0x2686dc[_0x4827('0xdc')]=_0x5a679d['Smtp'][_0x4827('0xdc')];_0x2686dc['port']=_0x5a679d[_0x4827('0xd9')][_0x4827('0xdd')];_0x2686dc[_0x4827('0xde')]=_0x5a679d[_0x4827('0xd9')]['secure'];}if(_0x5a679d[_0x4827('0xd9')][_0x4827('0xdf')]){_0x2686dc['auth']={'user':_0x5a679d[_0x4827('0xd9')][_0x4827('0xe0')],'pass':_0x5a679d[_0x4827('0xd9')][_0x4827('0xe1')]};}return respondWithRpcPromise(_0x4827('0xe2'),_0x4827('0xe3'),{'account':_0x2686dc,'message':{'from':util[_0x4827('0xae')](_0x4827('0xe4'),_0x5a679d[_0x4827('0x38')],_0x5a679d['email']||_0x5a679d[_0x4827('0xd9')]['user']),'to':_0x1d92d6[_0x4827('0xda')],'subject':_0x1d92d6[_0x4827('0xe5')],'html':_0x586cc0[_0x4827('0x5a')],'attachments':_0xd836c8}},client9003)['then'](function(){return _0x586cc0;})[_0x4827('0x58')](function(_0x5f2d88){console[_0x4827('0x24')](_0x5f2d88);});}})[_0x4827('0x1e')](function(){if(_0x1d92d6&&_0x1d92d6[_0x4827('0xe6')]&&_0x1d92d6[_0x4827('0xe7')]){var _0x1e3872=[];if(_0x24f8d7[_0x4827('0x48')]){_0x1e3872=_0x24f8d7[_0x4827('0x3c')](function(_0x1a4a23){return{'name':_0x1a4a23[_0x4827('0xd1')],'basename':_0x1a4a23['filename'],'type':_0x1a4a23['mimetype'],'ChatOfflineMessageId':_0x581369['id']};});}var _0x7c56d5;if(!_['isNil'](_0x1d92d6['subjectOffline'])){var _0x53e1cb=_[_0x4827('0x3c')](_0x4e1394['body'],function(_0x14b9df){return _0x14b9df;});var _0x1760b0=_[_0x4827('0xe8')](_0x53e1cb)[0x0];var _0x5044f1=_['mapValues'](_0x1760b0,function(_0x9b1d14){return _0x9b1d14;});_0x7c56d5=_0x5044f1[0x1][_0x1d92d6[_0x4827('0xe9')]];}var _0x1f5644={'from':_0x526cee[_0x4827('0xea')],'firstName':_0x526cee[_0x4827('0xa7')],'lastName':_0x526cee[_0x4827('0xa8')],'mapKey':_0x4827('0xea'),'message':{'from':_0x526cee[_0x4827('0xea')],'to':_0x1d92d6[_0x4827('0xc7')]['email'],'cc':'','subject':_['isNil'](_0x7c56d5)?_0x1d92d6[_0x4827('0xe5')]:_0x7c56d5,'messageId':'','sentAt':new Date(),'attach':_0x1e3872[_0x4827('0x48')],'attachments':_0x1e3872,'originChannel':'Chat','ChatWebsiteId':_0x1d92d6['id'],'ChatOfflineMessageId':_0x586cc0['id'],'originTo':_0x1d92d6[_0x4827('0xc7')][_0x4827('0xea')]},'body':_0x586cc0[_0x4827('0x5a')]};var _0x3709df={'account':{'id':_0x1d92d6[_0x4827('0xe7')]},'body':_0x1f5644,'log':_0x4827('0xeb')};return respondWithRpcPromise(_0x4827('0xeb'),_0x4827('0xec'),_0x3709df,client9001)['then'](function(){return _0x586cc0;})[_0x4827('0x58')](function(_0x45531e){console[_0x4827('0x24')](_0x45531e);});}return;})[_0x4827('0x1e')](function(){if(_0x586cc0){return _0x586cc0;}})[_0x4827('0x1e')](respondWithResult(_0x71b292,null))[_0x4827('0x58')](function(_0x543335){console[_0x4827('0x24')](_0x4827('0x58'),_0x543335);for(var _0x43ad92 of _0x24f8d7){var _0x48edfb=path[_0x4827('0x7a')](config[_0x4827('0x75')],_0x4827('0xd2'),_0x4827('0xed'),_0x4827('0xd3'),'offline-chat',_0x43ad92['filename']);fs_extra[_0x4827('0xee')](_0x48edfb)[_0x4827('0x58')](function(_0x1c0294){console[_0x4827('0x24')](_0x4827('0xef'),_0x48edfb,_0x1c0294);});}});};exports['addInteraction']=function(_0x36fefd,_0x4473ad,_0x150562){return db[_0x4827('0xb4')][_0x4827('0x5e')]({'where':{'id':_0x36fefd[_0x4827('0x57')]['id']}})[_0x4827('0x1e')](handleEntityNotFound(_0x4473ad,null))[_0x4827('0x1e')](function(_0x186c4b){if(_0x186c4b){return _0x186c4b['addInteraction'](_0x36fefd[_0x4827('0x5a')][_0x4827('0x67')],_['omit'](_0x36fefd['body'],['ids','id'])||{});}})['then'](respondWithResult(_0x4473ad,null))['catch'](handleError(_0x4473ad,null));};exports[_0x4827('0xf0')]=function(_0xe43061,_0x54390d,_0x3f3739){var _0x128196={'raw':![],'where':{}};var _0x49ba1c={};var _0x13fafe={'count':0x0,'rows':[]};return db['ChatWebsite']['findOne']({'where':{'id':_0xe43061['params']['id']}})[_0x4827('0x1e')](handleEntityNotFound(_0x54390d,null))[_0x4827('0x1e')](function(_0x4f85bb){if(_0x4f85bb){_0x49ba1c[_0x4827('0x44')]=_[_0x4827('0x42')](db[_0x4827('0xb4')][_0x4827('0x3e')]);_0x49ba1c['query']=_[_0x4827('0x42')](_0xe43061[_0x4827('0x41')]);_0x49ba1c[_0x4827('0x43')]=_[_0x4827('0x45')](_0x49ba1c[_0x4827('0x44')],_0x49ba1c[_0x4827('0x41')]);_0x128196[_0x4827('0x47')]=_[_0x4827('0x45')](_0x49ba1c['model'],qs['fields'](_0xe43061['query'][_0x4827('0x46')]));_0x128196[_0x4827('0x47')]=_0x128196[_0x4827('0x47')][_0x4827('0x48')]?_0x128196[_0x4827('0x47')]:_0x49ba1c[_0x4827('0x44')];if(!_0xe43061[_0x4827('0x41')][_0x4827('0x65')]('nolimit')){_0x128196[_0x4827('0x2c')]=qs['limit'](_0xe43061[_0x4827('0x41')][_0x4827('0x2c')]);_0x128196[_0x4827('0x2a')]=qs[_0x4827('0x2a')](_0xe43061[_0x4827('0x41')][_0x4827('0x2a')]);}_0x128196[_0x4827('0x4a')]=qs[_0x4827('0x4b')](_0xe43061[_0x4827('0x41')]['sort']);_0x128196[_0x4827('0x4c')]=qs[_0x4827('0x43')](_[_0x4827('0x4d')](_0xe43061[_0x4827('0x41')],_0x49ba1c[_0x4827('0x43')]));_0x128196[_0x4827('0x4c')][_0x4827('0x63')]=_0x4f85bb['id'];if(_0xe43061[_0x4827('0x41')]['filter']){_0x128196[_0x4827('0x4c')]=_[_0x4827('0x4f')](_0x128196[_0x4827('0x4c')],{'$or':_[_0x4827('0x3c')](_0x128196[_0x4827('0x47')],function(_0x2c20b0){var _0x2e0520={};_0x2e0520[_0x2c20b0]={'$like':'%'+_0xe43061['query'][_0x4827('0x4e')]+'%'};return _0x2e0520;})});}_0x128196=_[_0x4827('0x4f')]({},_0x128196,_0xe43061[_0x4827('0x51')]);return db[_0x4827('0xb4')]['count']({'where':_0x128196[_0x4827('0x4c')]})[_0x4827('0x1e')](function(_0x29beef){_0x13fafe[_0x4827('0x2d')]=_0x29beef;if(_0xe43061['query'][_0x4827('0x52')]){_0x128196[_0x4827('0x53')]=[{'model':db[_0x4827('0xa0')],'as':'Contact','required':![]},{'model':db[_0x4827('0xf1')],'as':_0x4827('0xf2'),'attributes':[_0x4827('0x38'),_0x4827('0xf3'),_0x4827('0xf4')],'required':![]},{'model':db['Tag'],'as':_0x4827('0xf5'),'attributes':['id',_0x4827('0x38'),_0x4827('0xf6')],'where':_0xe43061[_0x4827('0x41')][_0x4827('0xf7')]?{'id':_0xe43061['query'][_0x4827('0xf7')]}:undefined,'required':_0xe43061[_0x4827('0x41')][_0x4827('0xf7')]?!![]:![]}];}return db[_0x4827('0xb4')][_0x4827('0x54')](_0x128196);})[_0x4827('0x1e')](function(_0x319d02){_0x13fafe[_0x4827('0x55')]=_0x319d02;return _0x13fafe;});}})[_0x4827('0x1e')](respondWithFilteredResult(_0x54390d,_0x128196))['catch'](handleError(_0x54390d,null));};function iftimePromise(_0x387a5e,_0x974a95){return respondWithRpcPromise(_0x4827('0xf8'),'getSnippet',{'command':_0x974a95[_0x4827('0xf9')]?util[_0x4827('0xae')](_0x4827('0xfa'),_0x387a5e[_0x4827('0xfb')],_0x974a95['timezone']):util[_0x4827('0xae')](_0x4827('0xfc'),_0x387a5e[_0x4827('0xfb')])},client9002)[_0x4827('0x1e')](function(_0x3a4f58){var _0x51e650=_0x3a4f58&&_0x3a4f58['indexOf']('true')>=0x0?!![]:![];logger[_0x4827('0x1f')](_0x4827('0xfd'),_0x974a95['id'],_0x387a5e['id'],_0x387a5e[_0x4827('0xfb')],_0x51e650?_0x4827('0xfe'):_0x4827('0xff'),_0x974a95[_0x4827('0xf9')]?_0x974a95[_0x4827('0xf9')]:_0x4827('0x100'));return _0x51e650;})[_0x4827('0x58')](function(_0xb36bdf){logger[_0x4827('0x24')](_0x4827('0xfd'),_0x974a95['id'],_0x387a5e['id'],_0x387a5e['interval'],util[_0x4827('0x101')](_0xb36bdf,{'showHidden':![],'depth':null}),_0x974a95[_0x4827('0xf9')]?_0x974a95['timezone']:_0x4827('0x100'));return![];});}exports['getSnippet']=function(_0x238f68,_0x5c78df,_0x30b862){var _0x2e09d0=0x0;var _0x351c23=0x0;var _0x418569=![];var _0x4adfc2;var _0x36fed2;return db[_0x4827('0x3d')]['find']({'where':{'id':_0x238f68[_0x4827('0x57')]['id']},'include':[{'model':db[_0x4827('0x102')],'as':_0x4827('0x102'),'include':[{'model':db['Interval'],'as':_0x4827('0x103'),'attributes':['id',_0x4827('0xfb')],'raw':!![]}]}]})[_0x4827('0x1e')](handleEntityNotFound(_0x5c78df,null))[_0x4827('0x1e')](function(_0xf0a72b){if(_0xf0a72b){_0x4adfc2=_0xf0a72b;return _0xf0a72b[_0x4827('0x104')]({'raw':!![]});}})[_0x4827('0x1e')](function(_0x32de04){if(_0x4adfc2){if(_0x32de04){_0x36fed2=_0x32de04;}}return require(_0x4827('0x16'))[_0x4827('0x76')]();})['then'](function(_0x166af0){if(_0x166af0){_0x351c23=_0x166af0[_0x4827('0x105')];_0x418569=_0x166af0[_0x4827('0x106')];}})['then'](function(){return db['ChatInteraction'][_0x4827('0x2d')]({'where':{'closed':![]}});})[_0x4827('0x1e')](function(_0x1b10c2){_0x2e09d0=_0x1b10c2;if(_0x351c23&&_0x1b10c2>_0x351c23){return db['License'][_0x4827('0x6b')]({'where':{'id':0x1}})[_0x4827('0x1e')](function(_0x188b5f){if(_0x188b5f){_0x188b5f[_0x4827('0x107')]('chatLicenseExceeded');}});}})[_0x4827('0x1e')](function(){if(_0x4adfc2[_0x4827('0x102')]&&_0x4adfc2[_0x4827('0x102')][_0x4827('0x103')]){var _0x1e154b=[];for(var _0x326b2a=0x0;_0x326b2a<_0x4adfc2[_0x4827('0x102')][_0x4827('0x103')][_0x4827('0x48')];_0x326b2a++){var _0x1535bc=_0x4adfc2[_0x4827('0x102')][_0x4827('0x103')][_0x326b2a][_0x4827('0x33')]({'plain':!![]});_0x1e154b[_0x4827('0x108')](iftimePromise(_0x1535bc,_0x4adfc2));}return BPromise[_0x4827('0x109')](_0x1e154b)[_0x4827('0x1e')](function(_0x22e306){return _[_0x4827('0x10a')](_0x22e306);});}else{return!![];}})[_0x4827('0x1e')](function(_0x36221c){var _0x400dba=fs[_0x4827('0xca')](path[_0x4827('0x7a')](config[_0x4827('0x75')],_0x4827('0x10b')),_0x4827('0xcc'));var _0x3b6952={'remote':_0x4adfc2[_0x4827('0x10c')],'query':querystring[_0x4827('0x23')](_['merge'](_0x4adfc2[_0x4827('0x33')]({'plain':!![]}),{'customerIp':_0x238f68[_0x4827('0x86')][_0x4827('0xa4')]||_0x238f68['headers'][_0x4827('0x10d')]||_0x238f68[_0x4827('0x10e')][_0x4827('0x10f')]||_0x238f68['ip'],'referer':_0x238f68[_0x4827('0x86')][_0x4827('0xaa')],'openedInteractions':_0x2e09d0,'maxInteractions':_0x351c23,'virtual':_0x418569['virtual'],'online':_0x36221c,'custom':_0x418569}))[_0x4827('0x110')](/'/g,'\x5c\x27')};_0x5c78df[_0x4827('0x39')](ejs[_0x4827('0xcd')](Mustache['render'](_0x400dba,_0x3b6952),{'proactiveActions':_0x36fed2,'alignment':_0x4adfc2[_0x4827('0x111')],'verticalAlignment':_0x4adfc2[_0x4827('0x112')],'div_color':_0x4adfc2[_0x4827('0xf6')],'text_color':_0x4adfc2[_0x4827('0x113')],'button_color':_0x4adfc2[_0x4827('0x114')],'background_color':_0x4adfc2[_0x4827('0x115')]}));})[_0x4827('0x58')](handleError(_0x5c78df,null));};exports[_0x4827('0x116')]=function(_0x155f0e,_0x21bad2,_0x2ed4c7){return db[_0x4827('0x3d')][_0x4827('0x6b')]({'where':{'id':_0x155f0e['params']['id']}})[_0x4827('0x1e')](handleEntityNotFound(_0x21bad2,null))[_0x4827('0x1e')](function(_0x114790){if(_0x114790){return db[_0x4827('0xd5')][_0x4827('0x117')](function(_0x5e138f){return db[_0x4827('0x99')][_0x4827('0x32')]({'where':{'ChatWebsiteId':_0x155f0e[_0x4827('0x57')]['id']},'transaction':_0x5e138f})[_0x4827('0x1e')](function(_0xccbea4){var _0x2df352=_[_0x4827('0x3c')](_0x155f0e[_0x4827('0x5a')],function(_0x338e5e){_0x338e5e[_0x4827('0x63')]=_0x155f0e[_0x4827('0x57')]['id'];return _0x338e5e;});return db[_0x4827('0x99')][_0x4827('0xd7')](_0x2df352,{'transaction':_0x5e138f});});})[_0x4827('0x1e')](function(){return db[_0x4827('0x99')][_0x4827('0x118')]({'where':{'ChatWebsiteId':_0x155f0e['params']['id']},'order':'priority'});});}})[_0x4827('0x1e')](respondWithResult(_0x21bad2,null))[_0x4827('0x58')](handleError(_0x21bad2,null));};exports[_0x4827('0x119')]=function(_0x38b8c2,_0x2d1cf8,_0x53127a){var _0x1a2408={};var _0x204f96={};var _0x2f77dc;var _0x59490a;return db[_0x4827('0x3d')]['findOne']({'where':{'id':_0x38b8c2[_0x4827('0x57')]['id']}})['then'](handleEntityNotFound(_0x2d1cf8,null))[_0x4827('0x1e')](function(_0x413622){if(_0x413622){_0x2f77dc=_0x413622;_0x204f96[_0x4827('0x44')]=_[_0x4827('0x42')](db[_0x4827('0x99')][_0x4827('0x3e')]);_0x204f96[_0x4827('0x41')]=_[_0x4827('0x42')](_0x38b8c2[_0x4827('0x41')]);_0x204f96[_0x4827('0x43')]=_[_0x4827('0x45')](_0x204f96[_0x4827('0x44')],_0x204f96['query']);_0x1a2408[_0x4827('0x47')]=_[_0x4827('0x45')](_0x204f96[_0x4827('0x44')],qs[_0x4827('0x46')](_0x38b8c2[_0x4827('0x41')][_0x4827('0x46')]));_0x1a2408[_0x4827('0x47')]=_0x1a2408[_0x4827('0x47')][_0x4827('0x48')]?_0x1a2408['attributes']:_0x204f96['model'];_0x1a2408[_0x4827('0x4a')]=qs[_0x4827('0x4b')](_0x38b8c2[_0x4827('0x41')]['sort']);_0x1a2408[_0x4827('0x4c')]=qs['filters'](_[_0x4827('0x4d')](_0x38b8c2[_0x4827('0x41')],_0x204f96[_0x4827('0x43')]));if(_0x38b8c2[_0x4827('0x41')]['filter']){_0x1a2408[_0x4827('0x4c')]=_[_0x4827('0x4f')](_0x1a2408[_0x4827('0x4c')],{'$or':_[_0x4827('0x3c')](_0x1a2408['attributes'],function(_0x2144fc){var _0x313e84={};_0x313e84[_0x2144fc]={'$like':'%'+_0x38b8c2[_0x4827('0x41')][_0x4827('0x4e')]+'%'};return _0x313e84;})});}_0x1a2408=_[_0x4827('0x4f')]({},_0x1a2408,_0x38b8c2[_0x4827('0x51')]);return _0x2f77dc[_0x4827('0x119')](_0x1a2408);}})[_0x4827('0x1e')](function(_0x3c6f2e){if(_0x3c6f2e){_0x59490a=_0x3c6f2e['length'];if(!_0x38b8c2[_0x4827('0x41')][_0x4827('0x65')]('nolimit')){_0x1a2408['limit']=qs[_0x4827('0x2c')](_0x38b8c2[_0x4827('0x41')][_0x4827('0x2c')]);_0x1a2408['offset']=qs[_0x4827('0x2a')](_0x38b8c2[_0x4827('0x41')][_0x4827('0x2a')]);}return _0x2f77dc['getApplications'](_0x1a2408);}})[_0x4827('0x1e')](function(_0x4e3dc8){if(_0x4e3dc8){return _0x4e3dc8?{'count':_0x59490a,'rows':_0x4e3dc8}:null;}})[_0x4827('0x1e')](respondWithResult(_0x2d1cf8,null))[_0x4827('0x58')](handleError(_0x2d1cf8,null));};exports[_0x4827('0x11a')]=function(_0x4bb363,_0x4c0ff7,_0x17f3b7){return db['chatProactiveAction'][_0x4827('0x5e')]({'where':{'id':_0x4bb363[_0x4827('0x57')]['id']}})['then'](handleEntityNotFound(_0x4c0ff7,null))[_0x4827('0x1e')](function(_0x49a356){if(_0x49a356){return _0x49a356[_0x4827('0x11a')](_0x4bb363[_0x4827('0x5a')][_0x4827('0x67')],_[_0x4827('0x11b')](_0x4bb363['body'],['ids','id'])||{});}})[_0x4827('0x1e')](respondWithResult(_0x4c0ff7,null))[_0x4827('0x58')](handleError(_0x4c0ff7,null));};exports['getProactiveActions']=function(_0x3511d1,_0x53b223,_0x558504){var _0xce8f3={};var _0x45fac7={};var _0x4e774c;var _0x3eb738;return db['ChatWebsite'][_0x4827('0x6b')]({'where':{'id':_0x3511d1[_0x4827('0x57')]['id']}})[_0x4827('0x1e')](handleEntityNotFound(_0x53b223,null))[_0x4827('0x1e')](function(_0x5e415c){if(_0x5e415c){_0x4e774c=_0x5e415c;_0x45fac7['model']=_[_0x4827('0x42')](db[_0x4827('0x11c')][_0x4827('0x3e')]);_0x45fac7[_0x4827('0x41')]=_['keys'](_0x3511d1[_0x4827('0x41')]);_0x45fac7[_0x4827('0x43')]=_[_0x4827('0x45')](_0x45fac7['model'],_0x45fac7[_0x4827('0x41')]);_0xce8f3[_0x4827('0x47')]=_[_0x4827('0x45')](_0x45fac7[_0x4827('0x44')],qs[_0x4827('0x46')](_0x3511d1[_0x4827('0x41')][_0x4827('0x46')]));_0xce8f3['attributes']=_0xce8f3['attributes'][_0x4827('0x48')]?_0xce8f3['attributes']:_0x45fac7[_0x4827('0x44')];_0xce8f3['order']=qs[_0x4827('0x4b')](_0x3511d1[_0x4827('0x41')][_0x4827('0x4b')]);_0xce8f3[_0x4827('0x4c')]=qs[_0x4827('0x43')](_[_0x4827('0x4d')](_0x3511d1[_0x4827('0x41')],_0x45fac7[_0x4827('0x43')]));if(_0x3511d1[_0x4827('0x41')][_0x4827('0x4e')]){_0xce8f3[_0x4827('0x4c')]=_[_0x4827('0x4f')](_0xce8f3['where'],{'$or':_[_0x4827('0x3c')](_0xce8f3[_0x4827('0x47')],function(_0x20b07c){var _0x59a702={};_0x59a702[_0x20b07c]={'$like':'%'+_0x3511d1['query'][_0x4827('0x4e')]+'%'};return _0x59a702;})});}_0xce8f3=_[_0x4827('0x4f')]({},_0xce8f3,_0x3511d1[_0x4827('0x51')]);return _0x4e774c[_0x4827('0x104')](_0xce8f3);}})['then'](function(_0x58dc4f){if(_0x58dc4f){_0x3eb738=_0x58dc4f[_0x4827('0x48')];if(!_0x3511d1['query'][_0x4827('0x65')]('nolimit')){_0xce8f3[_0x4827('0x2c')]=qs[_0x4827('0x2c')](_0x3511d1[_0x4827('0x41')][_0x4827('0x2c')]);_0xce8f3['offset']=qs[_0x4827('0x2a')](_0x3511d1[_0x4827('0x41')]['offset']);}return _0x4e774c[_0x4827('0x104')](_0xce8f3);}})[_0x4827('0x1e')](function(_0x105a97){if(_0x105a97){return _0x105a97?{'count':_0x3eb738,'rows':_0x105a97}:null;}})[_0x4827('0x1e')](respondWithResult(_0x53b223,null))[_0x4827('0x58')](handleError(_0x53b223,null));};exports['getFields']=function(_0x50f1ec,_0x2d089c,_0x58931e){var _0x28d21a=_0x50f1ec['query']['online']===_0x4827('0x11d')?_0x4827('0x11e'):_0x4827('0x11f');return db['ChatWebsite'][_0x4827('0x5e')]({'attributes':['id',_0x28d21a],'where':{'id':_0x50f1ec[_0x4827('0x57')]['id']}})[_0x4827('0x1e')](handleEntityNotFound(_0x2d089c,null))[_0x4827('0x1e')](function(_0x25b748){if(_0x25b748){var _0x2b42fd=_0x25b748[_0x28d21a];var _0x9b0214=_0x2b42fd&&_0x2b42fd[_0x4827('0x120')]?_0x2b42fd['items']:[];_0x2d089c[_0x4827('0x39')]({'fromKey':_['isNil'](_0x2b42fd[_0x4827('0x121')])?undefined:_0x2b42fd[_0x4827('0x121')],'count':_0x9b0214['length'],'rows':_0x9b0214});}})[_0x4827('0x58')](handleError(_0x2d089c,null));};exports[_0x4827('0x122')]=function(_0x358e6f,_0x24779b,_0x35437a){var _0x371db4={'raw':![],'where':{}};var _0x237150={};var _0x3c7a51={'count':0x0,'rows':[]};return db['ChatWebsite'][_0x4827('0x6b')]({'where':{'id':_0x358e6f[_0x4827('0x57')]['id']}})[_0x4827('0x1e')](handleEntityNotFound(_0x24779b,null))['then'](function(_0x5cb693){if(_0x5cb693){_0x237150[_0x4827('0x44')]=_['keys'](db[_0x4827('0xd0')]['rawAttributes']);_0x237150[_0x4827('0x41')]=_[_0x4827('0x42')](_0x358e6f[_0x4827('0x41')]);_0x237150[_0x4827('0x43')]=_[_0x4827('0x45')](_0x237150['model'],_0x237150[_0x4827('0x41')]);_0x371db4['attributes']=_[_0x4827('0x45')](_0x237150[_0x4827('0x44')],qs['fields'](_0x358e6f[_0x4827('0x41')][_0x4827('0x46')]));_0x371db4[_0x4827('0x47')]=_0x371db4['attributes']['length']?_0x371db4[_0x4827('0x47')]:_0x237150[_0x4827('0x44')];if(!_0x358e6f[_0x4827('0x41')][_0x4827('0x65')](_0x4827('0x49'))){_0x371db4[_0x4827('0x2c')]=qs[_0x4827('0x2c')](_0x358e6f['query']['limit']);_0x371db4['offset']=qs[_0x4827('0x2a')](_0x358e6f['query']['offset']);}_0x371db4[_0x4827('0x4a')]=qs[_0x4827('0x4b')](_0x358e6f['query']['sort']);_0x371db4[_0x4827('0x4c')]=qs[_0x4827('0x43')](_['pick'](_0x358e6f[_0x4827('0x41')],_0x237150[_0x4827('0x43')]));_0x371db4[_0x4827('0x4c')][_0x4827('0x63')]=_0x5cb693['id'];if(_0x358e6f[_0x4827('0x41')]['filter']){_0x371db4['where']=_[_0x4827('0x4f')](_0x371db4[_0x4827('0x4c')],{'$or':_[_0x4827('0x3c')](_0x371db4[_0x4827('0x47')],function(_0x50bfe7){var _0x46c259={};_0x46c259[_0x50bfe7]={'$like':'%'+_0x358e6f['query'][_0x4827('0x4e')]+'%'};return _0x46c259;})});}_0x371db4=_[_0x4827('0x4f')]({},_0x371db4,_0x358e6f[_0x4827('0x51')]);return db['ChatOfflineMessage']['count']({'where':_0x371db4[_0x4827('0x4c')]})[_0x4827('0x1e')](function(_0x89c604){_0x3c7a51[_0x4827('0x2d')]=_0x89c604;if(_0x358e6f['query'][_0x4827('0x52')]){_0x371db4[_0x4827('0x53')]=[{'all':!![]}];}else{_0x371db4[_0x4827('0x53')]=[{'model':db[_0x4827('0xa0')],'as':_0x4827('0x123'),'required':![]},{'model':db[_0x4827('0xd6')],'as':'Attachments','required':![]}];}return db['ChatOfflineMessage'][_0x4827('0x54')](_0x371db4);})['then'](function(_0x229d60){_0x3c7a51[_0x4827('0x55')]=_0x229d60;return _0x3c7a51;});}})[_0x4827('0x1e')](respondWithFilteredResult(_0x24779b,_0x371db4))[_0x4827('0x58')](handleError(_0x24779b,null));};exports['addAgents']=function(_0x339573,_0x3acde0,_0x5aabc4){return db[_0x4827('0x3d')]['find']({'where':{'id':_0x339573[_0x4827('0x57')]['id']}})[_0x4827('0x1e')](handleEntityNotFound(_0x3acde0,null))[_0x4827('0x1e')](function(_0xe0fa5c){if(_0xe0fa5c){return _0xe0fa5c[_0x4827('0x124')](_0x339573[_0x4827('0x5a')]['ids'],_[_0x4827('0x11b')](_0x339573[_0x4827('0x5a')],[_0x4827('0x67'),'id'])||{})[_0x4827('0xc9')](function(_0x154255){for(var _0x3fe909=0x0;_0x3fe909<_0x339573[_0x4827('0x5a')]['ids']['length'];_0x3fe909+=0x1){socket[_0x4827('0x125')](_0x4827('0x126'),{'UserId':Number(_0x339573[_0x4827('0x5a')][_0x4827('0x67')][_0x3fe909]),'ChatWebsiteId':Number(_0x339573[_0x4827('0x57')]['id'])});}return _0x154255;});}})[_0x4827('0x1e')](respondWithResult(_0x3acde0,null))[_0x4827('0x58')](handleError(_0x3acde0,null));};exports[_0x4827('0x127')]=function(_0x38774c,_0x390a49,_0x4dee5f){return db[_0x4827('0x3d')][_0x4827('0x5e')]({'where':{'id':_0x38774c[_0x4827('0x57')]['id']}})['then'](handleEntityNotFound(_0x390a49,null))[_0x4827('0x1e')](function(_0xdde4dc){if(_0xdde4dc){return _0xdde4dc[_0x4827('0x127')](_0x38774c[_0x4827('0x41')][_0x4827('0x67')])[_0x4827('0x1e')](function(){if(_[_0x4827('0x128')](_0x38774c['query'][_0x4827('0x67')])){for(var _0x3775c9=0x0;_0x3775c9<_0x38774c[_0x4827('0x41')][_0x4827('0x67')][_0x4827('0x48')];_0x3775c9+=0x1){socket[_0x4827('0x125')](_0x4827('0x129'),{'UserId':Number(_0x38774c[_0x4827('0x41')]['ids'][_0x3775c9]),'ChatWebsiteId':Number(_0x38774c[_0x4827('0x57')]['id'])});}}else{socket[_0x4827('0x125')](_0x4827('0x129'),{'UserId':Number(_0x38774c[_0x4827('0x41')][_0x4827('0x67')]),'ChatWebsiteId':Number(_0x38774c['params']['id'])});}});}})[_0x4827('0x1e')](respondWithStatusCode(_0x390a49,null))['catch'](handleError(_0x390a49,null));};exports['getAgents']=function(_0x38e39a,_0x5b475a,_0x277119){var _0x170886={};var _0xcf1f9d={};var _0x1b401b;var _0x37d246;return db['ChatWebsite']['findOne']({'where':{'id':_0x38e39a[_0x4827('0x57')]['id']}})['then'](handleEntityNotFound(_0x5b475a,null))['then'](function(_0x27f3d9){if(_0x27f3d9){_0x1b401b=_0x27f3d9;_0xcf1f9d[_0x4827('0x44')]=_[_0x4827('0x42')](db[_0x4827('0xf1')][_0x4827('0x3e')]);_0xcf1f9d['query']=_[_0x4827('0x42')](_0x38e39a[_0x4827('0x41')]);_0xcf1f9d[_0x4827('0x43')]=_[_0x4827('0x45')](_0xcf1f9d['model'],_0xcf1f9d[_0x4827('0x41')]);_0x170886[_0x4827('0x47')]=_[_0x4827('0x45')](_0xcf1f9d[_0x4827('0x44')],qs[_0x4827('0x46')](_0x38e39a[_0x4827('0x41')][_0x4827('0x46')]));_0x170886[_0x4827('0x47')]=_0x170886[_0x4827('0x47')][_0x4827('0x48')]?_0x170886[_0x4827('0x47')]:_0xcf1f9d[_0x4827('0x44')];_0x170886['order']=qs[_0x4827('0x4b')](_0x38e39a[_0x4827('0x41')][_0x4827('0x4b')]);_0x170886['where']=qs[_0x4827('0x43')](_[_0x4827('0x4d')](_0x38e39a[_0x4827('0x41')],_0xcf1f9d['filters']));if(_0x38e39a[_0x4827('0x41')]['filter']){_0x170886['where']=_[_0x4827('0x4f')](_0x170886[_0x4827('0x4c')],{'$or':_[_0x4827('0x3c')](_0x170886[_0x4827('0x47')],function(_0x3439ab){var _0xb71428={};_0xb71428[_0x3439ab]={'$like':'%'+_0x38e39a['query'][_0x4827('0x4e')]+'%'};return _0xb71428;})});}_0x170886=_[_0x4827('0x4f')]({},_0x170886,_0x38e39a['options']);return _0x1b401b[_0x4827('0x12a')](_0x170886);}})[_0x4827('0x1e')](function(_0x1eb34f){if(_0x1eb34f){_0x37d246=_0x1eb34f['length'];if(!_0x38e39a[_0x4827('0x41')][_0x4827('0x65')](_0x4827('0x49'))){_0x170886[_0x4827('0x2c')]=qs[_0x4827('0x2c')](_0x38e39a['query']['limit']);_0x170886['offset']=qs['offset'](_0x38e39a[_0x4827('0x41')][_0x4827('0x2a')]);}return _0x1b401b[_0x4827('0x12a')](_0x170886);}})[_0x4827('0x1e')](function(_0xe5688c){if(_0xe5688c){return _0xe5688c?{'count':_0x37d246,'rows':_0xe5688c}:null;}})[_0x4827('0x1e')](respondWithResult(_0x5b475a,null))[_0x4827('0x58')](handleError(_0x5b475a,null));};
\ No newline at end of file
index 4232d38..9aee7c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x07c3=['save','update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','ChatWebsite','setMaxListeners'];(function(_0x1e175d,_0x41ff45){var _0x3a3ce5=function(_0x186001){while(--_0x186001){_0x1e175d['push'](_0x1e175d['shift']());}};_0x3a3ce5(++_0x41ff45);}(_0x07c3,0x1bf));var _0x307c=function(_0x412e27,_0x20a978){_0x412e27=_0x412e27-0x0;var _0x53da42=_0x07c3[_0x412e27];return _0x53da42;};'use strict';var EventEmitter=require(_0x307c('0x0'));var ChatWebsite=require(_0x307c('0x1'))['db'][_0x307c('0x2')];var ChatWebsiteEvents=new EventEmitter();ChatWebsiteEvents[_0x307c('0x3')](0x0);var events={'afterCreate':_0x307c('0x4'),'afterUpdate':_0x307c('0x5'),'afterDestroy':_0x307c('0x6')};function emitEvent(_0x186b09){return function(_0x52cf54,_0x37adf4,_0x3c761a){ChatWebsiteEvents[_0x307c('0x7')](_0x186b09+':'+_0x52cf54['id'],_0x52cf54);ChatWebsiteEvents[_0x307c('0x7')](_0x186b09,_0x52cf54);_0x3c761a(null);};}for(var e in events){if(events[_0x307c('0x8')](e)){var event=events[e];ChatWebsite[_0x307c('0x9')](e,emitEvent(event));}}module[_0x307c('0xa')]=ChatWebsiteEvents;
\ No newline at end of file
+var _0x0a9a=['emit','hasOwnProperty','hook','../../mysqldb','setMaxListeners','save','update','remove'];(function(_0x381ed9,_0x4fe464){var _0xcf1bd2=function(_0x4400a9){while(--_0x4400a9){_0x381ed9['push'](_0x381ed9['shift']());}};_0xcf1bd2(++_0x4fe464);}(_0x0a9a,0x183));var _0xa0a9=function(_0x1f9201,_0x507ab8){_0x1f9201=_0x1f9201-0x0;var _0x140b41=_0x0a9a[_0x1f9201];return _0x140b41;};'use strict';var EventEmitter=require('events');var ChatWebsite=require(_0xa0a9('0x0'))['db']['ChatWebsite'];var ChatWebsiteEvents=new EventEmitter();ChatWebsiteEvents[_0xa0a9('0x1')](0x0);var events={'afterCreate':_0xa0a9('0x2'),'afterUpdate':_0xa0a9('0x3'),'afterDestroy':_0xa0a9('0x4')};function emitEvent(_0x4ba993){return function(_0x317a94,_0x360be5,_0x50ea50){ChatWebsiteEvents[_0xa0a9('0x5')](_0x4ba993+':'+_0x317a94['id'],_0x317a94);ChatWebsiteEvents[_0xa0a9('0x5')](_0x4ba993,_0x317a94);_0x50ea50(null);};}for(var e in events){if(events[_0xa0a9('0x6')](e)){var event=events[e];ChatWebsite[_0xa0a9('0x7')](e,emitEvent(event));}}module['exports']=ChatWebsiteEvents;
\ No newline at end of file
index 3356467..0ada398 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x78f6=['../../config/environment','exports','define','lodash','../../config/logger','api','bluebird','path','rimraf'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x78f6,0x123));var _0x678f=function(_0x3af97a,_0x51eee5){_0x3af97a=_0x3af97a-0x0;var _0x29b764=_0x78f6[_0x3af97a];return _0x29b764;};'use strict';var _=require(_0x678f('0x0'));var util=require('util');var logger=require(_0x678f('0x1'))(_0x678f('0x2'));var moment=require('moment');var BPromise=require(_0x678f('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x678f('0x4'));var rimraf=require(_0x678f('0x5'));var config=require(_0x678f('0x6'));var attributes=require('./chatWebsite.attributes');module[_0x678f('0x7')]=function(_0x35956a,_0x1b004e){return _0x35956a[_0x678f('0x8')]('ChatWebsite',attributes,{'tableName':'chat_websites','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3262=['ChatWebsite','chat_websites','lodash','util','../../config/logger','moment','request-promise','path','rimraf','../../config/environment','exports','define'];(function(_0x518b62,_0x2ffcd9){var _0x2bb523=function(_0x22fe37){while(--_0x22fe37){_0x518b62['push'](_0x518b62['shift']());}};_0x2bb523(++_0x2ffcd9);}(_0x3262,0xda));var _0x2326=function(_0x11e03f,_0x20b967){_0x11e03f=_0x11e03f-0x0;var _0x5666fe=_0x3262[_0x11e03f];return _0x5666fe;};'use strict';var _=require(_0x2326('0x0'));var util=require(_0x2326('0x1'));var logger=require(_0x2326('0x2'))('api');var moment=require(_0x2326('0x3'));var BPromise=require('bluebird');var rp=require(_0x2326('0x4'));var fs=require('fs');var path=require(_0x2326('0x5'));var rimraf=require(_0x2326('0x6'));var config=require(_0x2326('0x7'));var attributes=require('./chatWebsite.attributes');module[_0x2326('0x8')]=function(_0x1c7687,_0x3945a3){return _0x1c7687[_0x2326('0x9')](_0x2326('0xa'),attributes,{'tableName':_0x2326('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 88c7956..b7a8feb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2cfa=['./chatWebsite.socket','register','then','info','ChatWebsite,\x20%s,\x20%s','request\x20sent','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','error','code','message','catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter'];(function(_0x52d461,_0x289904){var _0x5c76b8=function(_0x363ffb){while(--_0x363ffb){_0x52d461['push'](_0x52d461['shift']());}};_0x5c76b8(++_0x289904);}(_0x2cfa,0x93));var _0xa2cf=function(_0xadc7d9,_0x203608){_0xadc7d9=_0xadc7d9-0x0;var _0x915ca1=_0x2cfa[_0xadc7d9];return _0x915ca1;};'use strict';var _=require(_0xa2cf('0x0'));var util=require('util');var moment=require(_0xa2cf('0x1'));var BPromise=require(_0xa2cf('0x2'));var rs=require(_0xa2cf('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xa2cf('0x4'))['db'];var utils=require(_0xa2cf('0x5'));var logger=require(_0xa2cf('0x6'))(_0xa2cf('0x7'));var config=require(_0xa2cf('0x8'));var jayson=require(_0xa2cf('0x9'));var client=jayson[_0xa2cf('0xa')][_0xa2cf('0xb')]({'port':0x232a});config[_0xa2cf('0xc')]=_['defaults'](config[_0xa2cf('0xc')],{'host':_0xa2cf('0xd'),'port':0x18eb});var socket=require(_0xa2cf('0xe'))(new Redis(config[_0xa2cf('0xc')]));require(_0xa2cf('0xf'))[_0xa2cf('0x10')](socket);function respondWithRpcPromise(_0x44be18,_0x2c9797,_0x1069a9){return new BPromise(function(_0x5838bb,_0x47f152){return client['request'](_0x44be18,_0x1069a9)[_0xa2cf('0x11')](function(_0xc4b965){logger[_0xa2cf('0x12')](_0xa2cf('0x13'),_0x2c9797,_0xa2cf('0x14'));logger[_0xa2cf('0x15')](_0xa2cf('0x16'),_0x2c9797,_0xa2cf('0x14'),JSON['stringify'](_0xc4b965));if(_0xc4b965[_0xa2cf('0x17')]){if(_0xc4b965[_0xa2cf('0x17')][_0xa2cf('0x18')]===0x1f4){logger[_0xa2cf('0x17')]('ChatWebsite,\x20%s,\x20%s',_0x2c9797,_0xc4b965['error'][_0xa2cf('0x19')]);return _0x47f152(_0xc4b965[_0xa2cf('0x17')]['message']);}logger[_0xa2cf('0x17')](_0xa2cf('0x13'),_0x2c9797,_0xc4b965['error'][_0xa2cf('0x19')]);return _0x5838bb(_0xc4b965[_0xa2cf('0x17')][_0xa2cf('0x19')]);}else{logger['info']('ChatWebsite,\x20%s,\x20%s',_0x2c9797,_0xa2cf('0x14'));_0x5838bb(_0xc4b965['result'][_0xa2cf('0x19')]);}})[_0xa2cf('0x1a')](function(_0x55731c){logger[_0xa2cf('0x17')]('ChatWebsite,\x20%s,\x20%s',_0x2c9797,_0x55731c);_0x47f152(_0x55731c);});});}
\ No newline at end of file
+var _0xb458=['randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','http','redis','defaults','socket.io-emitter','request','then','ChatWebsite,\x20%s,\x20%s','request\x20sent','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','catch','lodash','util','moment'];(function(_0x13fe36,_0x2fa70e){var _0x4112ea=function(_0x140f3c){while(--_0x140f3c){_0x13fe36['push'](_0x13fe36['shift']());}};_0x4112ea(++_0x2fa70e);}(_0xb458,0x174));var _0x8b45=function(_0x5e259f,_0x3828b5){_0x5e259f=_0x5e259f-0x0;var _0xa15ab6=_0xb458[_0x5e259f];return _0xa15ab6;};'use strict';var _=require(_0x8b45('0x0'));var util=require(_0x8b45('0x1'));var moment=require(_0x8b45('0x2'));var BPromise=require('bluebird');var rs=require(_0x8b45('0x3'));var fs=require('fs');var Redis=require(_0x8b45('0x4'));var db=require(_0x8b45('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x8b45('0x6'))(_0x8b45('0x7'));var config=require('../../config/environment');var jayson=require(_0x8b45('0x8'));var client=jayson['client'][_0x8b45('0x9')]({'port':0x232a});config[_0x8b45('0xa')]=_[_0x8b45('0xb')](config[_0x8b45('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0x8b45('0xc'))(new Redis(config[_0x8b45('0xa')]));require('./chatWebsite.socket')['register'](socket);function respondWithRpcPromise(_0x22596b,_0x1ae617,_0x21b8ac){return new BPromise(function(_0xa0445a,_0x13cf44){return client[_0x8b45('0xd')](_0x22596b,_0x21b8ac)[_0x8b45('0xe')](function(_0xc0e942){logger['info'](_0x8b45('0xf'),_0x1ae617,_0x8b45('0x10'));logger[_0x8b45('0x11')](_0x8b45('0x12'),_0x1ae617,_0x8b45('0x10'),JSON[_0x8b45('0x13')](_0xc0e942));if(_0xc0e942['error']){if(_0xc0e942['error']['code']===0x1f4){logger[_0x8b45('0x14')](_0x8b45('0xf'),_0x1ae617,_0xc0e942[_0x8b45('0x14')][_0x8b45('0x15')]);return _0x13cf44(_0xc0e942[_0x8b45('0x14')][_0x8b45('0x15')]);}logger[_0x8b45('0x14')]('ChatWebsite,\x20%s,\x20%s',_0x1ae617,_0xc0e942['error']['message']);return _0xa0445a(_0xc0e942[_0x8b45('0x14')][_0x8b45('0x15')]);}else{logger[_0x8b45('0x16')](_0x8b45('0xf'),_0x1ae617,_0x8b45('0x10'));_0xa0445a(_0xc0e942[_0x8b45('0x17')][_0x8b45('0x15')]);}})[_0x8b45('0x18')](function(_0x39d756){logger[_0x8b45('0x14')]('ChatWebsite,\x20%s,\x20%s',_0x1ae617,_0x39d756);_0x13cf44(_0x39d756);});});}
\ No newline at end of file
index 0ab875f..8e887a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2d66=['./chatWebsite.events','update','register'];(function(_0x4a0860,_0x35db63){var _0x104ce5=function(_0x372e98){while(--_0x372e98){_0x4a0860['push'](_0x4a0860['shift']());}};_0x104ce5(++_0x35db63);}(_0x2d66,0x1da));var _0x62d6=function(_0xd42f23,_0x4a7917){_0xd42f23=_0xd42f23-0x0;var _0x8b06e3=_0x2d66[_0xd42f23];return _0x8b06e3;};'use strict';var ChatWebsiteEvents=require(_0x62d6('0x0'));var events=['save','remove',_0x62d6('0x1')];function createListener(_0x1b8d2c,_0x18c989){return function(_0x47e61d){_0x18c989['emit'](_0x1b8d2c,_0x47e61d);};}function removeListener(_0x488ecd,_0x1c9cd0){return function(){ChatWebsiteEvents['removeListener'](_0x488ecd,_0x1c9cd0);};}exports[_0x62d6('0x2')]=function(_0x489465){for(var _0xb78f95=0x0,_0x440740=events['length'];_0xb78f95<_0x440740;_0xb78f95++){var _0x109a3f=events[_0xb78f95];var _0x47b39b=createListener('chatWebsite:'+_0x109a3f,_0x489465);ChatWebsiteEvents['on'](_0x109a3f,_0x47b39b);}};
\ No newline at end of file
+var _0x2254=['update','emit','register','length','chatWebsite:','./chatWebsite.events','save'];(function(_0x20123f,_0x2bd60d){var _0x460472=function(_0x5aefe6){while(--_0x5aefe6){_0x20123f['push'](_0x20123f['shift']());}};_0x460472(++_0x2bd60d);}(_0x2254,0x1a9));var _0x4225=function(_0x1c1571,_0x382c50){_0x1c1571=_0x1c1571-0x0;var _0x2f97f9=_0x2254[_0x1c1571];return _0x2f97f9;};'use strict';var ChatWebsiteEvents=require(_0x4225('0x0'));var events=[_0x4225('0x1'),'remove',_0x4225('0x2')];function createListener(_0x120200,_0x37ce6a){return function(_0x539f77){_0x37ce6a[_0x4225('0x3')](_0x120200,_0x539f77);};}function removeListener(_0x4e7329,_0x4f9569){return function(){ChatWebsiteEvents['removeListener'](_0x4e7329,_0x4f9569);};}exports[_0x4225('0x4')]=function(_0x2ae462){for(var _0x32de79=0x0,_0x4b0bb7=events[_0x4225('0x5')];_0x32de79<_0x4b0bb7;_0x32de79++){var _0x1f5dbe=events[_0x32de79];var _0xf5614b=createListener(_0x4225('0x6')+_0x1f5dbe,_0x2ae462);ChatWebsiteEvents['on'](_0x1f5dbe,_0xf5614b);}};
\ No newline at end of file
index 8d24279..baf1ad9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd7f6=['/:id','update','delete','removeAnswers','removeAgents','exports','util','path','connect-timeout','express','fs-extra','../../config/environment','get','isAuthenticated','index','/describe','describe','show','/:id/canned_answers','/:id/logo','getLogo','/:id/avatar','getCustomerAvatar','/:id/system_avatar','getSystemAvatar','getInteractions','/:id/snippet','getSnippet','/:id/applications','/:id/proactive_actions','getProactiveActions','getFields','/:id/offline_messages','getOfflineMessages','/:id/users','getAgents','post','create','/:id/dispositions','addDisposition','addAnswer','diskStorage','join','root','format','%s-%s','originalname','single','file','addLogo','server/files/images/avatars/','now','addAvatar','addSystemAvatar','notify','server/files','offline-chat','ensureDir','replace','/:id/offline','any','addProactiveActions','put'];(function(_0x50cb5c,_0x377a47){var _0x361ad4=function(_0x3c8d51){while(--_0x3c8d51){_0x50cb5c['push'](_0x50cb5c['shift']());}};_0x361ad4(++_0x377a47);}(_0xd7f6,0xc3));var _0x6d7f=function(_0x2b99bc,_0xf7f42b){_0x2b99bc=_0x2b99bc-0x0;var _0x4a4c65=_0xd7f6[_0x2b99bc];return _0x4a4c65;};'use strict';var multer=require('multer');var util=require(_0x6d7f('0x0'));var path=require(_0x6d7f('0x1'));var timeout=require(_0x6d7f('0x2'));var express=require(_0x6d7f('0x3'));var router=express['Router']();var fs_extra=require(_0x6d7f('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x6d7f('0x5'));var controller=require('./chatWebsite.controller');router[_0x6d7f('0x6')]('/',auth[_0x6d7f('0x7')](),controller[_0x6d7f('0x8')]);router[_0x6d7f('0x6')](_0x6d7f('0x9'),auth['isAuthenticated'](),controller[_0x6d7f('0xa')]);router[_0x6d7f('0x6')]('/:id',auth[_0x6d7f('0x7')](),controller[_0x6d7f('0xb')]);router['get']('/:id/dispositions',auth['isAuthenticated'](),controller['getDispositions']);router['get'](_0x6d7f('0xc'),auth[_0x6d7f('0x7')](),controller['getAnswers']);router[_0x6d7f('0x6')](_0x6d7f('0xd'),controller[_0x6d7f('0xe')]);router[_0x6d7f('0x6')](_0x6d7f('0xf'),controller['getAvatar']);router[_0x6d7f('0x6')]('/:id/customer_avatar',controller[_0x6d7f('0x10')]);router['get'](_0x6d7f('0x11'),controller[_0x6d7f('0x12')]);router[_0x6d7f('0x6')]('/:id/interactions',auth[_0x6d7f('0x7')](),controller[_0x6d7f('0x13')]);router['get'](_0x6d7f('0x14'),controller[_0x6d7f('0x15')]);router[_0x6d7f('0x6')](_0x6d7f('0x16'),auth[_0x6d7f('0x7')](),controller['getApplications']);router['get'](_0x6d7f('0x17'),auth['isAuthenticated'](),controller[_0x6d7f('0x18')]);router[_0x6d7f('0x6')]('/:id/fields',controller[_0x6d7f('0x19')]);router[_0x6d7f('0x6')](_0x6d7f('0x1a'),auth[_0x6d7f('0x7')](),controller[_0x6d7f('0x1b')]);router['get'](_0x6d7f('0x1c'),auth[_0x6d7f('0x7')](),controller[_0x6d7f('0x1d')]);router[_0x6d7f('0x1e')]('/',auth[_0x6d7f('0x7')](),controller[_0x6d7f('0x1f')]);router[_0x6d7f('0x1e')](_0x6d7f('0x20'),auth[_0x6d7f('0x7')](),controller[_0x6d7f('0x21')]);router['post'](_0x6d7f('0xc'),auth['isAuthenticated'](),controller[_0x6d7f('0x22')]);var upload=multer({'storage':multer[_0x6d7f('0x23')]({'destination':function(_0x9adc41,_0x5d082d,_0x56de9d){_0x56de9d(null,path[_0x6d7f('0x24')](config[_0x6d7f('0x25')],'server/files/images/logos/'));},'filename':function(_0x4dc36d,_0xebf9af,_0x3a7be2){_0x3a7be2(null,util[_0x6d7f('0x26')](_0x6d7f('0x27'),Date['now'](),_0xebf9af[_0x6d7f('0x28')]));}})});router['post'](_0x6d7f('0xd'),upload[_0x6d7f('0x29')](_0x6d7f('0x2a')),controller[_0x6d7f('0x2b')]);var upload=multer({'storage':multer[_0x6d7f('0x23')]({'destination':function(_0x4b3da8,_0x1bd33b,_0x3c69a7){_0x3c69a7(null,path[_0x6d7f('0x24')](config[_0x6d7f('0x25')],_0x6d7f('0x2c')));},'filename':function(_0x32d2b3,_0x3764d5,_0x5f34a5){_0x5f34a5(null,util[_0x6d7f('0x26')](_0x6d7f('0x27'),Date[_0x6d7f('0x2d')](),_0x3764d5[_0x6d7f('0x28')]));}})});router['post'](_0x6d7f('0xf'),upload[_0x6d7f('0x29')](_0x6d7f('0x2a')),controller[_0x6d7f('0x2e')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x4e70f2,_0x1d0f24,_0xe32981){_0xe32981(null,path[_0x6d7f('0x24')](config['root'],_0x6d7f('0x2c')));},'filename':function(_0x40bd7a,_0x58aaf0,_0x55614a){_0x55614a(null,util[_0x6d7f('0x26')]('%s-%s',Date[_0x6d7f('0x2d')](),_0x58aaf0[_0x6d7f('0x28')]));}})});router[_0x6d7f('0x1e')]('/:id/customer_avatar',upload['single'](_0x6d7f('0x2a')),controller['addCustomerAvatar']);var upload=multer({'storage':multer[_0x6d7f('0x23')]({'destination':function(_0x32d0f7,_0x23e06f,_0xc46f65){_0xc46f65(null,path[_0x6d7f('0x24')](config[_0x6d7f('0x25')],_0x6d7f('0x2c')));},'filename':function(_0x1d6f9e,_0x5bce61,_0x475b1b){_0x475b1b(null,util['format']('%s-%s',Date[_0x6d7f('0x2d')](),_0x5bce61[_0x6d7f('0x28')]));}})});router[_0x6d7f('0x1e')](_0x6d7f('0x11'),upload['single']('file'),controller[_0x6d7f('0x2f')]);router['post']('/:id/notify',controller[_0x6d7f('0x30')]);const offlineUploadMulter=multer({'storage':multer[_0x6d7f('0x23')]({'destination':function(_0x5412b9,_0x431370,_0xb437bf){const _0x5b7f67=path['join'](config[_0x6d7f('0x25')],_0x6d7f('0x31'),'attachments',_0x6d7f('0x32'));fs_extra[_0x6d7f('0x33')](_0x5b7f67,function(){_0xb437bf(null,_0x5b7f67);});},'filename':function(_0x21d3ff,_0x28a731,_0x4d0706){const _0x3154e0=_0x28a731[_0x6d7f('0x28')][_0x6d7f('0x34')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');const _0x1590b1=path['extname'](_0x3154e0);const _0x2c07bb=Date[_0x6d7f('0x2d')]()+'-'+_0x3154e0[_0x6d7f('0x34')](_0x1590b1,'')+_0x1590b1;_0x4d0706(null,_0x2c07bb);}})});router['post'](_0x6d7f('0x35'),offlineUploadMulter[_0x6d7f('0x36')](),controller['offline']);router['post']('/:id/interactions',auth[_0x6d7f('0x7')](),controller['addInteraction']);router['post']('/:id/applications',auth[_0x6d7f('0x7')](),controller['addApplications']);router['post'](_0x6d7f('0x17'),auth['isAuthenticated'](),controller[_0x6d7f('0x37')]);router['post']('/:id/users',auth[_0x6d7f('0x7')](),controller['addAgents']);router[_0x6d7f('0x38')](_0x6d7f('0x39'),auth[_0x6d7f('0x7')](),controller[_0x6d7f('0x3a')]);router[_0x6d7f('0x3b')](_0x6d7f('0x39'),auth[_0x6d7f('0x7')](),controller['destroy']);router[_0x6d7f('0x3b')]('/:id/dispositions',auth[_0x6d7f('0x7')](),controller['removeDispositions']);router[_0x6d7f('0x3b')](_0x6d7f('0xc'),auth[_0x6d7f('0x7')](),controller[_0x6d7f('0x3c')]);router[_0x6d7f('0x3b')](_0x6d7f('0x1c'),auth[_0x6d7f('0x7')](),controller[_0x6d7f('0x3d')]);module[_0x6d7f('0x3e')]=router;
\ No newline at end of file
+var _0xde17=['server/files/images/avatars/','/:id/avatar','single','addAvatar','/:id/customer_avatar','addCustomerAvatar','addSystemAvatar','/:id/notify','server/files','attachments','offline-chat','ensureDir','extname','replace','/:id/offline','any','offline','addInteraction','addApplications','addProactiveActions','update','delete','destroy','removeDispositions','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/logo','getLogo','getAvatar','getCustomerAvatar','/:id/system_avatar','getSystemAvatar','/:id/interactions','getInteractions','/:id/snippet','getSnippet','/:id/applications','getApplications','/:id/proactive_actions','getProactiveActions','/:id/fields','getFields','getOfflineMessages','/:id/users','getAgents','post','addDisposition','addAnswer','diskStorage','join','root','server/files/images/logos/','format','%s-%s','now','originalname','file','addLogo'];(function(_0x50e593,_0x3ae998){var _0x3821d0=function(_0x53c295){while(--_0x53c295){_0x50e593['push'](_0x50e593['shift']());}};_0x3821d0(++_0x3ae998);}(_0xde17,0x64));var _0x7de1=function(_0x2c20e8,_0x3d0707){_0x2c20e8=_0x2c20e8-0x0;var _0x3a4f96=_0xde17[_0x2c20e8];return _0x3a4f96;};'use strict';var multer=require(_0x7de1('0x0'));var util=require(_0x7de1('0x1'));var path=require('path');var timeout=require(_0x7de1('0x2'));var express=require(_0x7de1('0x3'));var router=express[_0x7de1('0x4')]();var fs_extra=require(_0x7de1('0x5'));var auth=require(_0x7de1('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./chatWebsite.controller');router[_0x7de1('0x7')]('/',auth[_0x7de1('0x8')](),controller[_0x7de1('0x9')]);router['get'](_0x7de1('0xa'),auth[_0x7de1('0x8')](),controller[_0x7de1('0xb')]);router[_0x7de1('0x7')](_0x7de1('0xc'),auth[_0x7de1('0x8')](),controller[_0x7de1('0xd')]);router[_0x7de1('0x7')](_0x7de1('0xe'),auth[_0x7de1('0x8')](),controller[_0x7de1('0xf')]);router['get'](_0x7de1('0x10'),auth[_0x7de1('0x8')](),controller[_0x7de1('0x11')]);router['get'](_0x7de1('0x12'),controller[_0x7de1('0x13')]);router[_0x7de1('0x7')]('/:id/avatar',controller[_0x7de1('0x14')]);router[_0x7de1('0x7')]('/:id/customer_avatar',controller[_0x7de1('0x15')]);router[_0x7de1('0x7')](_0x7de1('0x16'),controller[_0x7de1('0x17')]);router[_0x7de1('0x7')](_0x7de1('0x18'),auth[_0x7de1('0x8')](),controller[_0x7de1('0x19')]);router[_0x7de1('0x7')](_0x7de1('0x1a'),controller[_0x7de1('0x1b')]);router[_0x7de1('0x7')](_0x7de1('0x1c'),auth[_0x7de1('0x8')](),controller[_0x7de1('0x1d')]);router[_0x7de1('0x7')](_0x7de1('0x1e'),auth[_0x7de1('0x8')](),controller[_0x7de1('0x1f')]);router[_0x7de1('0x7')](_0x7de1('0x20'),controller[_0x7de1('0x21')]);router[_0x7de1('0x7')]('/:id/offline_messages',auth[_0x7de1('0x8')](),controller[_0x7de1('0x22')]);router[_0x7de1('0x7')](_0x7de1('0x23'),auth[_0x7de1('0x8')](),controller[_0x7de1('0x24')]);router[_0x7de1('0x25')]('/',auth['isAuthenticated'](),controller['create']);router[_0x7de1('0x25')](_0x7de1('0xe'),auth['isAuthenticated'](),controller[_0x7de1('0x26')]);router[_0x7de1('0x25')](_0x7de1('0x10'),auth[_0x7de1('0x8')](),controller[_0x7de1('0x27')]);var upload=multer({'storage':multer[_0x7de1('0x28')]({'destination':function(_0x1a2f23,_0xb55452,_0x21ce57){_0x21ce57(null,path[_0x7de1('0x29')](config[_0x7de1('0x2a')],_0x7de1('0x2b')));},'filename':function(_0x2ab864,_0x3373da,_0x11fe9b){_0x11fe9b(null,util[_0x7de1('0x2c')](_0x7de1('0x2d'),Date[_0x7de1('0x2e')](),_0x3373da[_0x7de1('0x2f')]));}})});router[_0x7de1('0x25')](_0x7de1('0x12'),upload['single'](_0x7de1('0x30')),controller[_0x7de1('0x31')]);var upload=multer({'storage':multer[_0x7de1('0x28')]({'destination':function(_0x1f955e,_0x47c65e,_0xe37914){_0xe37914(null,path[_0x7de1('0x29')](config[_0x7de1('0x2a')],_0x7de1('0x32')));},'filename':function(_0x3727c5,_0x350818,_0x1e3c25){_0x1e3c25(null,util[_0x7de1('0x2c')]('%s-%s',Date[_0x7de1('0x2e')](),_0x350818[_0x7de1('0x2f')]));}})});router[_0x7de1('0x25')](_0x7de1('0x33'),upload[_0x7de1('0x34')]('file'),controller[_0x7de1('0x35')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x987bb9,_0x2c8855,_0x3b10b9){_0x3b10b9(null,path['join'](config['root'],'server/files/images/avatars/'));},'filename':function(_0x12015d,_0x134187,_0x24b542){_0x24b542(null,util[_0x7de1('0x2c')](_0x7de1('0x2d'),Date['now'](),_0x134187[_0x7de1('0x2f')]));}})});router[_0x7de1('0x25')](_0x7de1('0x36'),upload[_0x7de1('0x34')](_0x7de1('0x30')),controller[_0x7de1('0x37')]);var upload=multer({'storage':multer[_0x7de1('0x28')]({'destination':function(_0x46e85d,_0x13b72e,_0x505b71){_0x505b71(null,path[_0x7de1('0x29')](config[_0x7de1('0x2a')],_0x7de1('0x32')));},'filename':function(_0x4559da,_0x445f60,_0x45f82a){_0x45f82a(null,util[_0x7de1('0x2c')](_0x7de1('0x2d'),Date['now'](),_0x445f60[_0x7de1('0x2f')]));}})});router[_0x7de1('0x25')](_0x7de1('0x16'),upload[_0x7de1('0x34')](_0x7de1('0x30')),controller[_0x7de1('0x38')]);router['post'](_0x7de1('0x39'),controller['notify']);const offlineUploadMulter=multer({'storage':multer['diskStorage']({'destination':function(_0x2d8add,_0x1f7380,_0xb1dfae){const _0x50f31e=path[_0x7de1('0x29')](config[_0x7de1('0x2a')],_0x7de1('0x3a'),_0x7de1('0x3b'),_0x7de1('0x3c'));fs_extra[_0x7de1('0x3d')](_0x50f31e,function(){_0xb1dfae(null,_0x50f31e);});},'filename':function(_0x2fb03e,_0x194273,_0x16fb48){const _0x2a3d25=_0x194273['originalname']['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');const _0x285fa1=path[_0x7de1('0x3e')](_0x2a3d25);const _0x4d1ed5=Date['now']()+'-'+_0x2a3d25[_0x7de1('0x3f')](_0x285fa1,'')+_0x285fa1;_0x16fb48(null,_0x4d1ed5);}})});router[_0x7de1('0x25')](_0x7de1('0x40'),offlineUploadMulter[_0x7de1('0x41')](),controller[_0x7de1('0x42')]);router[_0x7de1('0x25')](_0x7de1('0x18'),auth['isAuthenticated'](),controller[_0x7de1('0x43')]);router[_0x7de1('0x25')](_0x7de1('0x1c'),auth[_0x7de1('0x8')](),controller[_0x7de1('0x44')]);router[_0x7de1('0x25')](_0x7de1('0x1e'),auth[_0x7de1('0x8')](),controller[_0x7de1('0x45')]);router[_0x7de1('0x25')](_0x7de1('0x23'),auth['isAuthenticated'](),controller['addAgents']);router['put'](_0x7de1('0xc'),auth['isAuthenticated'](),controller[_0x7de1('0x46')]);router[_0x7de1('0x47')](_0x7de1('0xc'),auth[_0x7de1('0x8')](),controller[_0x7de1('0x48')]);router[_0x7de1('0x47')](_0x7de1('0xe'),auth[_0x7de1('0x8')](),controller[_0x7de1('0x49')]);router[_0x7de1('0x47')](_0x7de1('0x10'),auth[_0x7de1('0x8')](),controller['removeAnswers']);router[_0x7de1('0x47')](_0x7de1('0x23'),auth['isAuthenticated'](),controller['removeAgents']);module[_0x7de1('0x4a')]=router;
\ No newline at end of file
index 4345532..4b10f48 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd69e=['sequelize','exports','STRING','AmazonAWS','Google'];(function(_0x28d5bb,_0x1c2231){var _0x293952=function(_0x86f071){while(--_0x86f071){_0x28d5bb['push'](_0x28d5bb['shift']());}};_0x293952(++_0x1c2231);}(_0xd69e,0xa0));var _0xed69=function(_0x5d4607,_0x6b5e7b){_0x5d4607=_0x5d4607-0x0;var _0x5e4a86=_0xd69e[_0x5d4607];return _0x5e4a86;};'use strict';var Sequelize=require(_0xed69('0x0'));module[_0xed69('0x1')]={'name':{'type':Sequelize[_0xed69('0x2')],'allowNull':![],'validate':{'notEmpty':!![]}},'service':{'type':Sequelize['ENUM'](_0xed69('0x3'),_0xed69('0x4')),'allowNull':![],'validate':{'notEmpty':!![]}},'data1':{'type':Sequelize['STRING']},'data2':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xed1c=['sequelize','exports','STRING'];(function(_0x596600,_0x7da27a){var _0x1b00aa=function(_0x5d8bb9){while(--_0x5d8bb9){_0x596600['push'](_0x596600['shift']());}};_0x1b00aa(++_0x7da27a);}(_0xed1c,0xe4));var _0xced1=function(_0x196ef6,_0x4ee3bd){_0x196ef6=_0x196ef6-0x0;var _0x54b1b6=_0xed1c[_0x196ef6];return _0x54b1b6;};'use strict';var Sequelize=require(_0xced1('0x0'));module[_0xced1('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'validate':{'notEmpty':!![]}},'service':{'type':Sequelize['ENUM']('AmazonAWS','Google'),'allowNull':![],'validate':{'notEmpty':!![]}},'data1':{'type':Sequelize[_0xced1('0x2')]},'data2':{'type':Sequelize[_0xced1('0x2')]}};
\ No newline at end of file
index cbb060a..f7aa1ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b0e=['hasOwnProperty','nolimit','order','sort','filters','filter','merge','where','VIRTUAL','options','count','includeAll','findAll','rows','catch','show','include','find','create','body','params','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','undefined','offset','limit','set','json','apply','reject','save','then','destroy','error','stack','name','index','map','CloudProvider','rawAttributes','fieldName','type','query','keys','intersection','model','attributes','fields','length'];(function(_0x5159b2,_0x5073a3){var _0x3e0ade=function(_0xa2f269){while(--_0xa2f269){_0x5159b2['push'](_0x5159b2['shift']());}};_0x3e0ade(++_0x5073a3);}(_0x0b0e,0x187));var _0xe0b0=function(_0x27c3f0,_0x198aa2){_0x27c3f0=_0x27c3f0-0x0;var _0x11e51c=_0x0b0e[_0x27c3f0];return _0x11e51c;};'use strict';var emlformat=require(_0xe0b0('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xe0b0('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe0b0('0x2'));var moment=require(_0xe0b0('0x3'));var BPromise=require(_0xe0b0('0x4'));var Mustache=require(_0xe0b0('0x5'));var util=require(_0xe0b0('0x6'));var path=require(_0xe0b0('0x7'));var sox=require(_0xe0b0('0x8'));var csv=require(_0xe0b0('0x9'));var ejs=require(_0xe0b0('0xa'));var fs=require('fs');var fs_extra=require(_0xe0b0('0xb'));var _=require(_0xe0b0('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xe0b0('0xd'));var deskjs=require(_0xe0b0('0xe'));var toCsv=require(_0xe0b0('0x9'));var querystring=require(_0xe0b0('0xf'));var Papa=require('papaparse');var Redis=require(_0xe0b0('0x10'));var authService=require(_0xe0b0('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xe0b0('0x12'));var hardwareService=require(_0xe0b0('0x13'));var logger=require('../../config/logger')(_0xe0b0('0x14'));var utils=require(_0xe0b0('0x15'));var config=require(_0xe0b0('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xe0b0('0x17'))['db'];function respondWithStatusCode(_0x1c358a,_0x3cc19a){_0x3cc19a=_0x3cc19a||0xcc;return function(_0x45f914){if(_0x45f914){return _0x1c358a[_0xe0b0('0x18')](_0x3cc19a);}return _0x1c358a['status'](_0x3cc19a)[_0xe0b0('0x19')]();};}function respondWithResult(_0x154de6,_0x743318){_0x743318=_0x743318||0xc8;return function(_0x24babd){if(_0x24babd){return _0x154de6[_0xe0b0('0x1a')](_0x743318)['json'](_0x24babd);}};}function respondWithFilteredResult(_0x41a7e2,_0x5adb01){return function(_0x35cb40){if(_0x35cb40){var _0xadee6e=typeof _0x5adb01['offset']===_0xe0b0('0x1b')&&typeof _0x5adb01['limit']===_0xe0b0('0x1b');var _0x100204=_0x35cb40['count'];var _0x54a3eb=_0xadee6e?0x0:_0x5adb01[_0xe0b0('0x1c')];var _0x50a441=_0xadee6e?_0x35cb40['count']:_0x5adb01['offset']+_0x5adb01[_0xe0b0('0x1d')];var _0x50fa4a;if(_0x50a441>=_0x100204){_0x50a441=_0x100204;_0x50fa4a=0xc8;}else{_0x50fa4a=0xce;}_0x41a7e2['status'](_0x50fa4a);return _0x41a7e2[_0xe0b0('0x1e')]('Content-Range',_0x54a3eb+'-'+_0x50a441+'/'+_0x100204)[_0xe0b0('0x1f')](_0x35cb40);}return null;};}function patchUpdates(_0x5dba2f){return function(_0x2c84cc){try{jsonpatch[_0xe0b0('0x20')](_0x2c84cc,_0x5dba2f,!![]);}catch(_0x3e10b3){return BPromise[_0xe0b0('0x21')](_0x3e10b3);}return _0x2c84cc[_0xe0b0('0x22')]();};}function saveUpdates(_0x58b804,_0x4cae54){return function(_0x2fa820){if(_0x2fa820){return _0x2fa820['update'](_0x58b804)[_0xe0b0('0x23')](function(_0x31b5f8){return _0x31b5f8;});}return null;};}function removeEntity(_0x513e63,_0x170ad8){return function(_0x503883){if(_0x503883){return _0x503883[_0xe0b0('0x24')]()['then'](function(){_0x513e63[_0xe0b0('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3e5c88,_0x4de537){return function(_0x4700cc){if(!_0x4700cc){_0x3e5c88['sendStatus'](0x194);}return _0x4700cc;};}function handleError(_0x3c221d,_0x5c5317){_0x5c5317=_0x5c5317||0x1f4;return function(_0x362aba){logger[_0xe0b0('0x25')](_0x362aba[_0xe0b0('0x26')]);if(_0x362aba[_0xe0b0('0x27')]){delete _0x362aba[_0xe0b0('0x27')];}_0x3c221d[_0xe0b0('0x1a')](_0x5c5317)['send'](_0x362aba);};}exports[_0xe0b0('0x28')]=function(_0x1b8aa8,_0x5b7a64){var _0x15e13b={},_0x419b1f={},_0x36d137={'count':0x0,'rows':[]};var _0x1d5759=_[_0xe0b0('0x29')](db[_0xe0b0('0x2a')][_0xe0b0('0x2b')],function(_0x4fb3b7){return{'name':_0x4fb3b7[_0xe0b0('0x2c')],'type':_0x4fb3b7[_0xe0b0('0x2d')]['key']};});_0x419b1f['model']=_[_0xe0b0('0x29')](_0x1d5759,_0xe0b0('0x27'));_0x419b1f[_0xe0b0('0x2e')]=_[_0xe0b0('0x2f')](_0x1b8aa8[_0xe0b0('0x2e')]);_0x419b1f['filters']=_[_0xe0b0('0x30')](_0x419b1f[_0xe0b0('0x31')],_0x419b1f[_0xe0b0('0x2e')]);_0x15e13b[_0xe0b0('0x32')]=_[_0xe0b0('0x30')](_0x419b1f['model'],qs[_0xe0b0('0x33')](_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x33')]));_0x15e13b[_0xe0b0('0x32')]=_0x15e13b[_0xe0b0('0x32')][_0xe0b0('0x34')]?_0x15e13b[_0xe0b0('0x32')]:_0x419b1f[_0xe0b0('0x31')];if(!_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x35')](_0xe0b0('0x36'))){_0x15e13b[_0xe0b0('0x1d')]=qs[_0xe0b0('0x1d')](_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x1d')]);_0x15e13b['offset']=qs[_0xe0b0('0x1c')](_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x1c')]);}_0x15e13b[_0xe0b0('0x37')]=qs[_0xe0b0('0x38')](_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x38')]);_0x15e13b['where']=qs['filters'](_['pick'](_0x1b8aa8['query'],_0x419b1f[_0xe0b0('0x39')]),_0x1d5759);if(_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x3a')]){_0x15e13b['where']=_[_0xe0b0('0x3b')](_0x15e13b[_0xe0b0('0x3c')],{'$or':_[_0xe0b0('0x29')](_0x1d5759,function(_0x297c64){if(_0x297c64['type']!==_0xe0b0('0x3d')){var _0xfbb61d={};_0xfbb61d[_0x297c64[_0xe0b0('0x27')]]={'$like':'%'+_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x3a')]+'%'};return _0xfbb61d;}})});}_0x15e13b=_[_0xe0b0('0x3b')]({},_0x15e13b,_0x1b8aa8[_0xe0b0('0x3e')]);var _0x115a69={'where':_0x15e13b[_0xe0b0('0x3c')]};return db['CloudProvider'][_0xe0b0('0x3f')](_0x115a69)['then'](function(_0x34178d){_0x36d137[_0xe0b0('0x3f')]=_0x34178d;if(_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x40')]){_0x15e13b['include']=[{'all':!![]}];}return db[_0xe0b0('0x2a')][_0xe0b0('0x41')](_0x15e13b);})[_0xe0b0('0x23')](function(_0x402a0e){_0x36d137[_0xe0b0('0x42')]=_0x402a0e;return _0x36d137;})[_0xe0b0('0x23')](respondWithFilteredResult(_0x5b7a64,_0x15e13b))[_0xe0b0('0x43')](handleError(_0x5b7a64,null));};exports[_0xe0b0('0x44')]=function(_0x52ffe4,_0x2aad80){var _0x309bbf={'raw':!![],'where':{'id':_0x52ffe4['params']['id']}},_0x528818={};_0x528818[_0xe0b0('0x31')]=_[_0xe0b0('0x2f')](db['CloudProvider'][_0xe0b0('0x2b')]);_0x528818[_0xe0b0('0x2e')]=_[_0xe0b0('0x2f')](_0x52ffe4[_0xe0b0('0x2e')]);_0x528818[_0xe0b0('0x39')]=_['intersection'](_0x528818['model'],_0x528818['query']);_0x309bbf[_0xe0b0('0x32')]=_[_0xe0b0('0x30')](_0x528818['model'],qs[_0xe0b0('0x33')](_0x52ffe4[_0xe0b0('0x2e')][_0xe0b0('0x33')]));_0x309bbf[_0xe0b0('0x32')]=_0x309bbf[_0xe0b0('0x32')]['length']?_0x309bbf['attributes']:_0x528818[_0xe0b0('0x31')];if(_0x52ffe4[_0xe0b0('0x2e')][_0xe0b0('0x40')]){_0x309bbf[_0xe0b0('0x45')]=[{'all':!![]}];}_0x309bbf=_[_0xe0b0('0x3b')]({},_0x309bbf,_0x52ffe4['options']);return db[_0xe0b0('0x2a')][_0xe0b0('0x46')](_0x309bbf)['then'](handleEntityNotFound(_0x2aad80,null))['then'](respondWithResult(_0x2aad80,null))['catch'](handleError(_0x2aad80,null));};exports[_0xe0b0('0x47')]=function(_0x2184d3,_0x2419ce){return db[_0xe0b0('0x2a')]['create'](_0x2184d3[_0xe0b0('0x48')],{})[_0xe0b0('0x23')](respondWithResult(_0x2419ce,0xc9))['catch'](handleError(_0x2419ce,null));};exports['update']=function(_0x2365be,_0x1bc6e0){if(_0x2365be['body']['id']){delete _0x2365be[_0xe0b0('0x48')]['id'];}return db[_0xe0b0('0x2a')]['find']({'where':{'id':_0x2365be['params']['id']}})[_0xe0b0('0x23')](handleEntityNotFound(_0x1bc6e0,null))['then'](saveUpdates(_0x2365be[_0xe0b0('0x48')],null))[_0xe0b0('0x23')](respondWithResult(_0x1bc6e0,null))[_0xe0b0('0x43')](handleError(_0x1bc6e0,null));};exports[_0xe0b0('0x24')]=function(_0x19ee71,_0xf9e694){return db['CloudProvider']['find']({'where':{'id':_0x19ee71[_0xe0b0('0x49')]['id']}})['then'](handleEntityNotFound(_0xf9e694,null))['then'](removeEntity(_0xf9e694,null))[_0xe0b0('0x43')](handleError(_0xf9e694,null));};
\ No newline at end of file
+var _0xadb5=['model','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','filters','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','create','body','find','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','update','then','destroy','end','stack','name','send','index','map','CloudProvider','fieldName','type','key'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0xadb5,0xad));var _0x5adb=function(_0x4748db,_0x3788b9){_0x4748db=_0x4748db-0x0;var _0x4124bd=_0xadb5[_0x4748db];return _0x4124bd;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5adb('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x5adb('0x1'));var rp=require(_0x5adb('0x2'));var moment=require(_0x5adb('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x5adb('0x4'));var util=require(_0x5adb('0x5'));var path=require(_0x5adb('0x6'));var sox=require('sox');var csv=require(_0x5adb('0x7'));var ejs=require(_0x5adb('0x8'));var fs=require('fs');var fs_extra=require(_0x5adb('0x9'));var _=require(_0x5adb('0xa'));var squel=require(_0x5adb('0xb'));var crypto=require(_0x5adb('0xc'));var jsforce=require(_0x5adb('0xd'));var deskjs=require(_0x5adb('0xe'));var toCsv=require(_0x5adb('0x7'));var querystring=require(_0x5adb('0xf'));var Papa=require(_0x5adb('0x10'));var Redis=require(_0x5adb('0x11'));var authService=require(_0x5adb('0x12'));var qs=require(_0x5adb('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x5adb('0x14'))(_0x5adb('0x15'));var utils=require(_0x5adb('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x5adb('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2a0b70,_0x5433bf){_0x5433bf=_0x5433bf||0xcc;return function(_0x8cfcc6){if(_0x8cfcc6){return _0x2a0b70[_0x5adb('0x18')](_0x5433bf);}return _0x2a0b70[_0x5adb('0x19')](_0x5433bf)['end']();};}function respondWithResult(_0x2a545b,_0x34af2c){_0x34af2c=_0x34af2c||0xc8;return function(_0xf82f72){if(_0xf82f72){return _0x2a545b['status'](_0x34af2c)[_0x5adb('0x1a')](_0xf82f72);}};}function respondWithFilteredResult(_0x518823,_0x367d82){return function(_0x42a482){if(_0x42a482){var _0x30614e=typeof _0x367d82[_0x5adb('0x1b')]===_0x5adb('0x1c')&&typeof _0x367d82[_0x5adb('0x1d')]===_0x5adb('0x1c');var _0x42f4c6=_0x42a482[_0x5adb('0x1e')];var _0x529b65=_0x30614e?0x0:_0x367d82[_0x5adb('0x1b')];var _0x5de028=_0x30614e?_0x42a482[_0x5adb('0x1e')]:_0x367d82['offset']+_0x367d82[_0x5adb('0x1d')];var _0x50e84f;if(_0x5de028>=_0x42f4c6){_0x5de028=_0x42f4c6;_0x50e84f=0xc8;}else{_0x50e84f=0xce;}_0x518823['status'](_0x50e84f);return _0x518823[_0x5adb('0x1f')](_0x5adb('0x20'),_0x529b65+'-'+_0x5de028+'/'+_0x42f4c6)[_0x5adb('0x1a')](_0x42a482);}return null;};}function patchUpdates(_0x1fd4a7){return function(_0x99bc6c){try{jsonpatch['apply'](_0x99bc6c,_0x1fd4a7,!![]);}catch(_0x3255b3){return BPromise['reject'](_0x3255b3);}return _0x99bc6c['save']();};}function saveUpdates(_0x3754cc,_0x379b33){return function(_0x1a38d3){if(_0x1a38d3){return _0x1a38d3[_0x5adb('0x21')](_0x3754cc)[_0x5adb('0x22')](function(_0x413911){return _0x413911;});}return null;};}function removeEntity(_0xfd9bb9,_0x4ca150){return function(_0x4b1957){if(_0x4b1957){return _0x4b1957[_0x5adb('0x23')]()[_0x5adb('0x22')](function(){_0xfd9bb9[_0x5adb('0x19')](0xcc)[_0x5adb('0x24')]();});}};}function handleEntityNotFound(_0x49f203,_0x2fee18){return function(_0x2e1e63){if(!_0x2e1e63){_0x49f203['sendStatus'](0x194);}return _0x2e1e63;};}function handleError(_0x1feecf,_0x1ded9f){_0x1ded9f=_0x1ded9f||0x1f4;return function(_0x1a0acd){logger['error'](_0x1a0acd[_0x5adb('0x25')]);if(_0x1a0acd[_0x5adb('0x26')]){delete _0x1a0acd[_0x5adb('0x26')];}_0x1feecf[_0x5adb('0x19')](_0x1ded9f)[_0x5adb('0x27')](_0x1a0acd);};}exports[_0x5adb('0x28')]=function(_0x4a5d46,_0x49992e){var _0x5d457e={},_0x39bddd={},_0x1eac55={'count':0x0,'rows':[]};var _0x60a672=_[_0x5adb('0x29')](db[_0x5adb('0x2a')]['rawAttributes'],function(_0x11ec2a){return{'name':_0x11ec2a[_0x5adb('0x2b')],'type':_0x11ec2a[_0x5adb('0x2c')][_0x5adb('0x2d')]};});_0x39bddd[_0x5adb('0x2e')]=_[_0x5adb('0x29')](_0x60a672,_0x5adb('0x26'));_0x39bddd[_0x5adb('0x2f')]=_[_0x5adb('0x30')](_0x4a5d46[_0x5adb('0x2f')]);_0x39bddd['filters']=_[_0x5adb('0x31')](_0x39bddd['model'],_0x39bddd[_0x5adb('0x2f')]);_0x5d457e[_0x5adb('0x32')]=_['intersection'](_0x39bddd[_0x5adb('0x2e')],qs[_0x5adb('0x33')](_0x4a5d46[_0x5adb('0x2f')]['fields']));_0x5d457e[_0x5adb('0x32')]=_0x5d457e[_0x5adb('0x32')]['length']?_0x5d457e['attributes']:_0x39bddd[_0x5adb('0x2e')];if(!_0x4a5d46['query'][_0x5adb('0x34')](_0x5adb('0x35'))){_0x5d457e[_0x5adb('0x1d')]=qs[_0x5adb('0x1d')](_0x4a5d46[_0x5adb('0x2f')]['limit']);_0x5d457e[_0x5adb('0x1b')]=qs[_0x5adb('0x1b')](_0x4a5d46[_0x5adb('0x2f')]['offset']);}_0x5d457e['order']=qs[_0x5adb('0x36')](_0x4a5d46[_0x5adb('0x2f')]['sort']);_0x5d457e[_0x5adb('0x37')]=qs['filters'](_[_0x5adb('0x38')](_0x4a5d46['query'],_0x39bddd[_0x5adb('0x39')]),_0x60a672);if(_0x4a5d46['query'][_0x5adb('0x3a')]){_0x5d457e[_0x5adb('0x37')]=_['merge'](_0x5d457e[_0x5adb('0x37')],{'$or':_['map'](_0x60a672,function(_0xadbe37){if(_0xadbe37[_0x5adb('0x2c')]!==_0x5adb('0x3b')){var _0x50edd1={};_0x50edd1[_0xadbe37[_0x5adb('0x26')]]={'$like':'%'+_0x4a5d46[_0x5adb('0x2f')][_0x5adb('0x3a')]+'%'};return _0x50edd1;}})});}_0x5d457e=_[_0x5adb('0x3c')]({},_0x5d457e,_0x4a5d46[_0x5adb('0x3d')]);var _0x52d74f={'where':_0x5d457e['where']};return db['CloudProvider']['count'](_0x52d74f)[_0x5adb('0x22')](function(_0x2fbe14){_0x1eac55[_0x5adb('0x1e')]=_0x2fbe14;if(_0x4a5d46[_0x5adb('0x2f')][_0x5adb('0x3e')]){_0x5d457e[_0x5adb('0x3f')]=[{'all':!![]}];}return db[_0x5adb('0x2a')][_0x5adb('0x40')](_0x5d457e);})['then'](function(_0x53f2c6){_0x1eac55[_0x5adb('0x41')]=_0x53f2c6;return _0x1eac55;})['then'](respondWithFilteredResult(_0x49992e,_0x5d457e))[_0x5adb('0x42')](handleError(_0x49992e,null));};exports[_0x5adb('0x43')]=function(_0x299746,_0x121714){var _0xdfecfd={'raw':!![],'where':{'id':_0x299746[_0x5adb('0x44')]['id']}},_0x522ee5={};_0x522ee5[_0x5adb('0x2e')]=_['keys'](db[_0x5adb('0x2a')][_0x5adb('0x45')]);_0x522ee5['query']=_[_0x5adb('0x30')](_0x299746[_0x5adb('0x2f')]);_0x522ee5[_0x5adb('0x39')]=_[_0x5adb('0x31')](_0x522ee5[_0x5adb('0x2e')],_0x522ee5[_0x5adb('0x2f')]);_0xdfecfd[_0x5adb('0x32')]=_['intersection'](_0x522ee5['model'],qs[_0x5adb('0x33')](_0x299746[_0x5adb('0x2f')][_0x5adb('0x33')]));_0xdfecfd[_0x5adb('0x32')]=_0xdfecfd['attributes']['length']?_0xdfecfd[_0x5adb('0x32')]:_0x522ee5[_0x5adb('0x2e')];if(_0x299746[_0x5adb('0x2f')][_0x5adb('0x3e')]){_0xdfecfd[_0x5adb('0x3f')]=[{'all':!![]}];}_0xdfecfd=_['merge']({},_0xdfecfd,_0x299746[_0x5adb('0x3d')]);return db[_0x5adb('0x2a')]['find'](_0xdfecfd)[_0x5adb('0x22')](handleEntityNotFound(_0x121714,null))[_0x5adb('0x22')](respondWithResult(_0x121714,null))[_0x5adb('0x42')](handleError(_0x121714,null));};exports[_0x5adb('0x46')]=function(_0x186bd2,_0x3a5409){return db[_0x5adb('0x2a')][_0x5adb('0x46')](_0x186bd2['body'],{})[_0x5adb('0x22')](respondWithResult(_0x3a5409,0xc9))['catch'](handleError(_0x3a5409,null));};exports['update']=function(_0x5015ee,_0x3cd211){if(_0x5015ee[_0x5adb('0x47')]['id']){delete _0x5015ee[_0x5adb('0x47')]['id'];}return db['CloudProvider'][_0x5adb('0x48')]({'where':{'id':_0x5015ee['params']['id']}})[_0x5adb('0x22')](handleEntityNotFound(_0x3cd211,null))[_0x5adb('0x22')](saveUpdates(_0x5015ee[_0x5adb('0x47')],null))['then'](respondWithResult(_0x3cd211,null))[_0x5adb('0x42')](handleError(_0x3cd211,null));};exports['destroy']=function(_0x22fa54,_0x6dc067){return db['CloudProvider'][_0x5adb('0x48')]({'where':{'id':_0x22fa54[_0x5adb('0x44')]['id']}})[_0x5adb('0x22')](handleEntityNotFound(_0x6dc067,null))[_0x5adb('0x22')](removeEntity(_0x6dc067,null))[_0x5adb('0x42')](handleError(_0x6dc067,null));};
\ No newline at end of file
index 624b6a3..5b1eb23 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5556=['rimraf','./cloudProvider.attributes','exports','CloudProvider','cloud_providers','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x21cf72,_0x27e452){var _0x21e12c=function(_0x3b42ee){while(--_0x3b42ee){_0x21cf72['push'](_0x21cf72['shift']());}};_0x21e12c(++_0x27e452);}(_0x5556,0x13d));var _0x6555=function(_0x34ded7,_0x5752df){_0x34ded7=_0x34ded7-0x0;var _0x39e7ce=_0x5556[_0x34ded7];return _0x39e7ce;};'use strict';var _=require('lodash');var util=require(_0x6555('0x0'));var logger=require(_0x6555('0x1'))(_0x6555('0x2'));var moment=require(_0x6555('0x3'));var BPromise=require(_0x6555('0x4'));var rp=require(_0x6555('0x5'));var fs=require('fs');var path=require(_0x6555('0x6'));var rimraf=require(_0x6555('0x7'));var config=require('../../config/environment');var attributes=require(_0x6555('0x8'));module[_0x6555('0x9')]=function(_0x367c0d,_0x1dbb51){return _0x367c0d['define'](_0x6555('0xa'),attributes,{'tableName':_0x6555('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xdb2f=['define','CloudProvider','lodash','util','api','moment','path','../../config/environment','exports'];(function(_0x407b59,_0x5194d1){var _0x11bf3e=function(_0x41a203){while(--_0x41a203){_0x407b59['push'](_0x407b59['shift']());}};_0x11bf3e(++_0x5194d1);}(_0xdb2f,0x1d6));var _0xfdb2=function(_0x411add,_0x1aed38){_0x411add=_0x411add-0x0;var _0x238242=_0xdb2f[_0x411add];return _0x238242;};'use strict';var _=require(_0xfdb2('0x0'));var util=require(_0xfdb2('0x1'));var logger=require('../../config/logger')(_0xfdb2('0x2'));var moment=require(_0xfdb2('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xfdb2('0x4'));var rimraf=require('rimraf');var config=require(_0xfdb2('0x5'));var attributes=require('./cloudProvider.attributes');module[_0xfdb2('0x6')]=function(_0xcb89ed,_0x54fb69){return _0xcb89ed[_0xfdb2('0x7')](_0xfdb2('0x8'),attributes,{'tableName':'cloud_providers','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 751fde5..4e77080 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3af5=['stringify','error','code','message','info','request\x20sent','catch','lodash','util','bluebird','randomstring','../../config/utils','../../config/environment','jayson/promise','http','request','then','CloudProvider,\x20%s,\x20%s','debug','CloudProvider,\x20%s,\x20%s,\x20%s'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0x3af5,0x1d3));var _0x53af=function(_0x507965,_0x4944f4){_0x507965=_0x507965-0x0;var _0x3608fc=_0x3af5[_0x507965];return _0x3608fc;};'use strict';var _=require(_0x53af('0x0'));var util=require(_0x53af('0x1'));var moment=require('moment');var BPromise=require(_0x53af('0x2'));var rs=require(_0x53af('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x53af('0x4'));var logger=require('../../config/logger')('rpc');var config=require(_0x53af('0x5'));var jayson=require(_0x53af('0x6'));var client=jayson['client'][_0x53af('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x4eb461,_0x3aefaf,_0x27eed3){return new BPromise(function(_0x2875ab,_0x22c0cb){return client[_0x53af('0x8')](_0x4eb461,_0x27eed3)[_0x53af('0x9')](function(_0x56751b){logger['info'](_0x53af('0xa'),_0x3aefaf,'request\x20sent');logger[_0x53af('0xb')](_0x53af('0xc'),_0x3aefaf,'request\x20sent',JSON[_0x53af('0xd')](_0x56751b));if(_0x56751b[_0x53af('0xe')]){if(_0x56751b['error'][_0x53af('0xf')]===0x1f4){logger[_0x53af('0xe')](_0x53af('0xa'),_0x3aefaf,_0x56751b['error'][_0x53af('0x10')]);return _0x22c0cb(_0x56751b['error'][_0x53af('0x10')]);}logger[_0x53af('0xe')](_0x53af('0xa'),_0x3aefaf,_0x56751b[_0x53af('0xe')][_0x53af('0x10')]);return _0x2875ab(_0x56751b[_0x53af('0xe')][_0x53af('0x10')]);}else{logger[_0x53af('0x11')](_0x53af('0xa'),_0x3aefaf,_0x53af('0x12'));_0x2875ab(_0x56751b['result'][_0x53af('0x10')]);}})[_0x53af('0x13')](function(_0x29bb86){logger[_0x53af('0xe')](_0x53af('0xa'),_0x3aefaf,_0x29bb86);_0x22c0cb(_0x29bb86);});});}
\ No newline at end of file
+var _0x8b0e=['client','http','request','then','info','CloudProvider,\x20%s,\x20%s','request\x20sent','debug','CloudProvider,\x20%s,\x20%s,\x20%s','error','code','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0x8b0e,0x166));var _0xe8b0=function(_0xf20b6,_0x49ddbb){_0xf20b6=_0xf20b6-0x0;var _0x4ff567=_0x8b0e[_0xf20b6];return _0x4ff567;};'use strict';var _=require(_0xe8b0('0x0'));var util=require(_0xe8b0('0x1'));var moment=require(_0xe8b0('0x2'));var BPromise=require(_0xe8b0('0x3'));var rs=require(_0xe8b0('0x4'));var fs=require('fs');var Redis=require(_0xe8b0('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xe8b0('0x6'));var logger=require('../../config/logger')(_0xe8b0('0x7'));var config=require(_0xe8b0('0x8'));var jayson=require(_0xe8b0('0x9'));var client=jayson[_0xe8b0('0xa')][_0xe8b0('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x35fe3d,_0x25faf7,_0x2e56f4){return new BPromise(function(_0x59f3a4,_0x103966){return client[_0xe8b0('0xc')](_0x35fe3d,_0x2e56f4)[_0xe8b0('0xd')](function(_0x82589f){logger[_0xe8b0('0xe')](_0xe8b0('0xf'),_0x25faf7,_0xe8b0('0x10'));logger[_0xe8b0('0x11')](_0xe8b0('0x12'),_0x25faf7,'request\x20sent',JSON['stringify'](_0x82589f));if(_0x82589f[_0xe8b0('0x13')]){if(_0x82589f[_0xe8b0('0x13')][_0xe8b0('0x14')]===0x1f4){logger['error'](_0xe8b0('0xf'),_0x25faf7,_0x82589f[_0xe8b0('0x13')][_0xe8b0('0x15')]);return _0x103966(_0x82589f[_0xe8b0('0x13')][_0xe8b0('0x15')]);}logger[_0xe8b0('0x13')](_0xe8b0('0xf'),_0x25faf7,_0x82589f['error'][_0xe8b0('0x15')]);return _0x59f3a4(_0x82589f[_0xe8b0('0x13')][_0xe8b0('0x15')]);}else{logger['info'](_0xe8b0('0xf'),_0x25faf7,'request\x20sent');_0x59f3a4(_0x82589f['result']['message']);}})[_0xe8b0('0x16')](function(_0x3818a7){logger['error'](_0xe8b0('0xf'),_0x25faf7,_0x3818a7);_0x103966(_0x3818a7);});});}
\ No newline at end of file
index 2283aad..42d2045 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x299c=['isAuthenticated','index','/:id','show','update','delete','multer','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get'];(function(_0x12a26d,_0x132d64){var _0x42f07c=function(_0x3d6ed0){while(--_0x3d6ed0){_0x12a26d['push'](_0x12a26d['shift']());}};_0x42f07c(++_0x132d64);}(_0x299c,0x180));var _0xc299=function(_0x3490c2,_0x548c5e){_0x3490c2=_0x3490c2-0x0;var _0x891d41=_0x299c[_0x3490c2];return _0x891d41;};'use strict';var multer=require(_0xc299('0x0'));var util=require('util');var path=require(_0xc299('0x1'));var timeout=require('connect-timeout');var express=require(_0xc299('0x2'));var router=express[_0xc299('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xc299('0x4'));var interaction=require(_0xc299('0x5'));var config=require(_0xc299('0x6'));var controller=require('./cloudProvider.controller');router[_0xc299('0x7')]('/',auth[_0xc299('0x8')](),controller[_0xc299('0x9')]);router['get'](_0xc299('0xa'),auth[_0xc299('0x8')](),controller[_0xc299('0xb')]);router['post']('/',auth[_0xc299('0x8')](),controller['create']);router['put'](_0xc299('0xa'),auth[_0xc299('0x8')](),controller[_0xc299('0xc')]);router[_0xc299('0xd')]('/:id',auth[_0xc299('0x8')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xd8a5=['connect-timeout','Router','fs-extra','../../components/interaction/service','./cloudProvider.controller','isAuthenticated','get','/:id','post','put','destroy','exports','multer'];(function(_0x1cc8fe,_0x105328){var _0x230054=function(_0x1a1b56){while(--_0x1a1b56){_0x1cc8fe['push'](_0x1cc8fe['shift']());}};_0x230054(++_0x105328);}(_0xd8a5,0x81));var _0x5d8a=function(_0x43bee3,_0x474e67){_0x43bee3=_0x43bee3-0x0;var _0xd77ae7=_0xd8a5[_0x43bee3];return _0xd77ae7;};'use strict';var multer=require(_0x5d8a('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x5d8a('0x1'));var express=require('express');var router=express[_0x5d8a('0x2')]();var fs_extra=require(_0x5d8a('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x5d8a('0x4'));var config=require('../../config/environment');var controller=require(_0x5d8a('0x5'));router['get']('/',auth[_0x5d8a('0x6')](),controller['index']);router[_0x5d8a('0x7')](_0x5d8a('0x8'),auth[_0x5d8a('0x6')](),controller['show']);router[_0x5d8a('0x9')]('/',auth[_0x5d8a('0x6')](),controller['create']);router[_0x5d8a('0xa')](_0x5d8a('0x8'),auth[_0x5d8a('0x6')](),controller['update']);router['delete'](_0x5d8a('0x8'),auth[_0x5d8a('0x6')](),controller[_0x5d8a('0xb')]);module[_0x5d8a('0xc')]=router;
\ No newline at end of file
index 8e245c2..c0025fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1fc9=['name','STRING','sequelize','exports'];(function(_0x159d15,_0x4eda0d){var _0x1bce7c=function(_0x261521){while(--_0x261521){_0x159d15['push'](_0x159d15['shift']());}};_0x1bce7c(++_0x4eda0d);}(_0x1fc9,0x136));var _0x91fc=function(_0xf139fb,_0x3cc921){_0xf139fb=_0xf139fb-0x0;var _0x2a9824=_0x1fc9[_0xf139fb];return _0x2a9824;};'use strict';var Sequelize=require(_0x91fc('0x0'));module[_0x91fc('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x91fc('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'vat':{'type':Sequelize[_0x91fc('0x3')]},'companyId':{'type':Sequelize['STRING']},'website':{'type':Sequelize[_0x91fc('0x3')]},'phone':{'type':Sequelize[_0x91fc('0x3')]},'fax':{'type':Sequelize[_0x91fc('0x3')]},'type':{'type':Sequelize[_0x91fc('0x3')]},'street':{'type':Sequelize[_0x91fc('0x3')]},'postalCode':{'type':Sequelize[_0x91fc('0x3')]},'city':{'type':Sequelize[_0x91fc('0x3')]},'country':{'type':Sequelize[_0x91fc('0x3')]},'email':{'type':Sequelize['STRING'],'validate':{'isEmail':!![]}},'emailDomain':{'type':Sequelize[_0x91fc('0x3')]},'sStreet':{'type':Sequelize[_0x91fc('0x3')]},'sPostalCode':{'type':Sequelize['STRING']},'sCity':{'type':Sequelize['STRING']},'sCountry':{'type':Sequelize[_0x91fc('0x3')]},'description':{'type':Sequelize[_0x91fc('0x3')]}};
\ No newline at end of file
+var _0xc4fe=['name','sequelize','exports','STRING'];(function(_0x2f53cd,_0x13c0b3){var _0x203559=function(_0x4d0fc6){while(--_0x4d0fc6){_0x2f53cd['push'](_0x2f53cd['shift']());}};_0x203559(++_0x13c0b3);}(_0xc4fe,0x1bd));var _0xec4f=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xc4fe[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0xec4f('0x0'));module[_0xec4f('0x1')]={'name':{'type':Sequelize[_0xec4f('0x2')],'unique':_0xec4f('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'vat':{'type':Sequelize['STRING']},'companyId':{'type':Sequelize[_0xec4f('0x2')]},'website':{'type':Sequelize['STRING']},'phone':{'type':Sequelize[_0xec4f('0x2')]},'fax':{'type':Sequelize[_0xec4f('0x2')]},'type':{'type':Sequelize[_0xec4f('0x2')]},'street':{'type':Sequelize[_0xec4f('0x2')]},'postalCode':{'type':Sequelize[_0xec4f('0x2')]},'city':{'type':Sequelize[_0xec4f('0x2')]},'country':{'type':Sequelize['STRING']},'email':{'type':Sequelize[_0xec4f('0x2')],'validate':{'isEmail':!![]}},'emailDomain':{'type':Sequelize[_0xec4f('0x2')]},'sStreet':{'type':Sequelize['STRING']},'sPostalCode':{'type':Sequelize['STRING']},'sCity':{'type':Sequelize[_0xec4f('0x2')]},'sCountry':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index cb38ab6..2764106 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1e8e=['Companies','UserProfileResource','error','stack','name','index','CmCompany','describe','keys','query','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','map','filter','include','rows','catch','show','params','options','find','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','addContacts','CmContact','omit','ids','getContacts','findOne','rawAttributes','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','lodash','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','json','reject','update','destroy','then','get'];(function(_0xb29b6e,_0x59d03e){var _0x96fab1=function(_0xb40fba){while(--_0xb40fba){_0xb29b6e['push'](_0xb29b6e['shift']());}};_0x96fab1(++_0x59d03e);}(_0x1e8e,0x12d));var _0xe1e8=function(_0x4c730e,_0x287a09){_0x4c730e=_0x4c730e-0x0;var _0x2294f2=_0x1e8e[_0x4c730e];return _0x2294f2;};'use strict';var emlformat=require(_0xe1e8('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xe1e8('0x1'));var jsonpatch=require(_0xe1e8('0x2'));var rp=require(_0xe1e8('0x3'));var moment=require(_0xe1e8('0x4'));var BPromise=require(_0xe1e8('0x5'));var Mustache=require(_0xe1e8('0x6'));var util=require(_0xe1e8('0x7'));var path=require('path');var sox=require(_0xe1e8('0x8'));var csv=require(_0xe1e8('0x9'));var ejs=require(_0xe1e8('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xe1e8('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xe1e8('0xc'));var deskjs=require(_0xe1e8('0xd'));var toCsv=require(_0xe1e8('0x9'));var querystring=require(_0xe1e8('0xe'));var Papa=require(_0xe1e8('0xf'));var Redis=require(_0xe1e8('0x10'));var authService=require(_0xe1e8('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xe1e8('0x12'));var hardwareService=require(_0xe1e8('0x13'));var logger=require(_0xe1e8('0x14'))('api');var utils=require(_0xe1e8('0x15'));var config=require(_0xe1e8('0x16'));var licenseUtil=require(_0xe1e8('0x17'));var db=require(_0xe1e8('0x18'))['db'];function respondWithStatusCode(_0x3f22e2,_0x5dd019){_0x5dd019=_0x5dd019||0xcc;return function(_0x319cec){if(_0x319cec){return _0x3f22e2[_0xe1e8('0x19')](_0x5dd019);}return _0x3f22e2[_0xe1e8('0x1a')](_0x5dd019)[_0xe1e8('0x1b')]();};}function respondWithResult(_0x2e4ee5,_0x123ca3){_0x123ca3=_0x123ca3||0xc8;return function(_0x2feabb){if(_0x2feabb){return _0x2e4ee5['status'](_0x123ca3)['json'](_0x2feabb);}};}function respondWithFilteredResult(_0x5b5c55,_0x52e18b){return function(_0x4e09cd){if(_0x4e09cd){var _0x259a59=typeof _0x52e18b[_0xe1e8('0x1c')]===_0xe1e8('0x1d')&&typeof _0x52e18b[_0xe1e8('0x1e')]===_0xe1e8('0x1d');var _0x5ea148=_0x4e09cd[_0xe1e8('0x1f')];var _0x48dad4=_0x259a59?0x0:_0x52e18b['offset'];var _0x896893=_0x259a59?_0x4e09cd[_0xe1e8('0x1f')]:_0x52e18b[_0xe1e8('0x1c')]+_0x52e18b[_0xe1e8('0x1e')];var _0xca1e71;if(_0x896893>=_0x5ea148){_0x896893=_0x5ea148;_0xca1e71=0xc8;}else{_0xca1e71=0xce;}_0x5b5c55['status'](_0xca1e71);return _0x5b5c55[_0xe1e8('0x20')]('Content-Range',_0x48dad4+'-'+_0x896893+'/'+_0x5ea148)[_0xe1e8('0x21')](_0x4e09cd);}return null;};}function patchUpdates(_0x37cc65){return function(_0x337b9e){try{jsonpatch['apply'](_0x337b9e,_0x37cc65,!![]);}catch(_0x5cf9d3){return BPromise[_0xe1e8('0x22')](_0x5cf9d3);}return _0x337b9e['save']();};}function saveUpdates(_0x402fd8,_0x4b01c1){return function(_0x4f14f7){if(_0x4f14f7){return _0x4f14f7[_0xe1e8('0x23')](_0x402fd8)['then'](function(_0x2ed533){return _0x2ed533;});}return null;};}function removeEntity(_0x3e2702,_0x50b99f){return function(_0x31b912){if(_0x31b912){return _0x31b912[_0xe1e8('0x24')]()[_0xe1e8('0x25')](function(){var _0x5d8683=_0x31b912[_0xe1e8('0x26')]({'plain':!![]});var _0x166c30=_0xe1e8('0x27');return db[_0xe1e8('0x28')][_0xe1e8('0x24')]({'where':{'type':_0x166c30,'resourceId':_0x5d8683['id']}})[_0xe1e8('0x25')](function(){return _0x31b912;});})[_0xe1e8('0x25')](function(){_0x3e2702[_0xe1e8('0x1a')](0xcc)[_0xe1e8('0x1b')]();});}};}function handleEntityNotFound(_0x4c5f2f,_0x1d607f){return function(_0x5bd3f2){if(!_0x5bd3f2){_0x4c5f2f[_0xe1e8('0x19')](0x194);}return _0x5bd3f2;};}function handleError(_0x3ff368,_0x1f507c){_0x1f507c=_0x1f507c||0x1f4;return function(_0x302733){logger[_0xe1e8('0x29')](_0x302733[_0xe1e8('0x2a')]);if(_0x302733[_0xe1e8('0x2b')]){delete _0x302733['name'];}_0x3ff368['status'](_0x1f507c)['send'](_0x302733);};}exports[_0xe1e8('0x2c')]=function(_0x562bcc,_0xccf046){var _0x1f4fb7={},_0x5816b4={},_0x56a14d={'count':0x0,'rows':[]};return db[_0xe1e8('0x2d')][_0xe1e8('0x2e')]()[_0xe1e8('0x25')](function(_0x1fc4ec){_0x5816b4['model']=_[_0xe1e8('0x2f')](_0x1fc4ec);_0x5816b4[_0xe1e8('0x30')]=_[_0xe1e8('0x2f')](_0x562bcc['query']);_0x5816b4[_0xe1e8('0x31')]=_[_0xe1e8('0x32')](_0x5816b4['model'],_0x5816b4[_0xe1e8('0x30')]);_0x1f4fb7[_0xe1e8('0x33')]=_['intersection'](_0x5816b4[_0xe1e8('0x34')],qs[_0xe1e8('0x35')](_0x562bcc[_0xe1e8('0x30')][_0xe1e8('0x35')]));_0x1f4fb7['attributes']=_0x1f4fb7[_0xe1e8('0x33')][_0xe1e8('0x36')]?_0x1f4fb7[_0xe1e8('0x33')]:_0x5816b4[_0xe1e8('0x34')];if(!_0x562bcc[_0xe1e8('0x30')][_0xe1e8('0x37')](_0xe1e8('0x38'))){_0x1f4fb7[_0xe1e8('0x1e')]=qs['limit'](_0x562bcc[_0xe1e8('0x30')][_0xe1e8('0x1e')]);_0x1f4fb7[_0xe1e8('0x1c')]=qs['offset'](_0x562bcc['query']['offset']);}_0x1f4fb7[_0xe1e8('0x39')]=qs[_0xe1e8('0x3a')](_0x562bcc['query'][_0xe1e8('0x3a')]);_0x1f4fb7[_0xe1e8('0x3b')]=qs[_0xe1e8('0x31')](_[_0xe1e8('0x3c')](_0x562bcc[_0xe1e8('0x30')],_0x5816b4[_0xe1e8('0x31')]),_0x1fc4ec);if(_0x562bcc['query']['filter']){_0x1f4fb7['where']=_[_0xe1e8('0x3d')](_0x1f4fb7[_0xe1e8('0x3b')],{'$or':_[_0xe1e8('0x3e')](_0x1f4fb7[_0xe1e8('0x33')],function(_0x17e4e0){var _0x3f0012={};_0x3f0012[_0x17e4e0]={'$like':'%'+_0x562bcc[_0xe1e8('0x30')][_0xe1e8('0x3f')]+'%'};return _0x3f0012;})});}_0x1f4fb7=_[_0xe1e8('0x3d')]({},_0x1f4fb7,_0x562bcc['options']);var _0x3b2039={'where':_0x1f4fb7[_0xe1e8('0x3b')]};return db[_0xe1e8('0x2d')][_0xe1e8('0x1f')](_0x3b2039)[_0xe1e8('0x25')](function(_0x485239){_0x56a14d['count']=_0x485239;if(_0x562bcc['query']['includeAll']){_0x1f4fb7[_0xe1e8('0x40')]=[{'all':!![]}];}return db[_0xe1e8('0x2d')]['findAll'](_0x1f4fb7);})[_0xe1e8('0x25')](function(_0x3bb3ae){_0x56a14d[_0xe1e8('0x41')]=_0x3bb3ae;return _0x56a14d;})[_0xe1e8('0x25')](respondWithFilteredResult(_0xccf046,_0x1f4fb7))[_0xe1e8('0x42')](handleError(_0xccf046,null));})[_0xe1e8('0x42')](handleError(_0xccf046,null));};exports[_0xe1e8('0x43')]=function(_0x4d0717,_0x2edd7b){var _0xbb3bcd={'raw':![],'where':{'id':_0x4d0717[_0xe1e8('0x44')]['id']}},_0x7524b7={};_0x7524b7[_0xe1e8('0x34')]=_[_0xe1e8('0x2f')](db['CmCompany']['rawAttributes']);_0x7524b7[_0xe1e8('0x30')]=_[_0xe1e8('0x2f')](_0x4d0717[_0xe1e8('0x30')]);_0x7524b7['filters']=_[_0xe1e8('0x32')](_0x7524b7[_0xe1e8('0x34')],_0x7524b7[_0xe1e8('0x30')]);_0xbb3bcd[_0xe1e8('0x33')]=_[_0xe1e8('0x32')](_0x7524b7[_0xe1e8('0x34')],qs[_0xe1e8('0x35')](_0x4d0717[_0xe1e8('0x30')]['fields']));_0xbb3bcd['attributes']=_0xbb3bcd[_0xe1e8('0x33')][_0xe1e8('0x36')]?_0xbb3bcd['attributes']:_0x7524b7[_0xe1e8('0x34')];if(_0x4d0717[_0xe1e8('0x30')]['includeAll']){_0xbb3bcd[_0xe1e8('0x40')]=[{'all':!![]}];}_0xbb3bcd=_[_0xe1e8('0x3d')]({},_0xbb3bcd,_0x4d0717[_0xe1e8('0x45')]);return db['CmCompany'][_0xe1e8('0x46')](_0xbb3bcd)[_0xe1e8('0x25')](handleEntityNotFound(_0x2edd7b,null))[_0xe1e8('0x25')](respondWithResult(_0x2edd7b,null))['catch'](handleError(_0x2edd7b,null));};exports[_0xe1e8('0x47')]=function(_0x2bf5b5,_0x4f316c){return db['CmCompany'][_0xe1e8('0x47')](_0x2bf5b5['body'],{})['then'](function(_0x46ebab){var _0x198f3b=_0x2bf5b5['user'][_0xe1e8('0x26')]({'plain':!![]});if(!_0x198f3b)throw new Error(_0xe1e8('0x48'));if(_0x198f3b['role']===_0xe1e8('0x49')){var _0x5d38a2=_0x46ebab['get']({'plain':!![]});var _0x31e3a7=_0xe1e8('0x27');return db['UserProfileSection'][_0xe1e8('0x46')]({'where':{'name':_0x31e3a7,'userProfileId':_0x198f3b[_0xe1e8('0x4a')]},'raw':!![]})[_0xe1e8('0x25')](function(_0x47f460){if(_0x47f460&&_0x47f460[_0xe1e8('0x4b')]===0x0){return db[_0xe1e8('0x28')]['create']({'name':_0x5d38a2['name'],'resourceId':_0x5d38a2['id'],'type':_0x47f460[_0xe1e8('0x2b')],'sectionId':_0x47f460['id']},{})[_0xe1e8('0x25')](function(){return _0x46ebab;});}else{return _0x46ebab;}})[_0xe1e8('0x42')](function(_0x168fb3){logger[_0xe1e8('0x29')](_0xe1e8('0x4c'),_0x168fb3);throw _0x168fb3;});}return _0x46ebab;})[_0xe1e8('0x25')](respondWithResult(_0x4f316c,0xc9))[_0xe1e8('0x42')](handleError(_0x4f316c,null));};exports[_0xe1e8('0x23')]=function(_0x1cb860,_0x2b2cd1){if(_0x1cb860[_0xe1e8('0x4d')]['id']){delete _0x1cb860[_0xe1e8('0x4d')]['id'];}return db[_0xe1e8('0x2d')][_0xe1e8('0x46')]({'where':{'id':_0x1cb860[_0xe1e8('0x44')]['id']}})[_0xe1e8('0x25')](handleEntityNotFound(_0x2b2cd1,null))['then'](saveUpdates(_0x1cb860[_0xe1e8('0x4d')],null))[_0xe1e8('0x25')](respondWithResult(_0x2b2cd1,null))[_0xe1e8('0x42')](handleError(_0x2b2cd1,null));};exports[_0xe1e8('0x24')]=function(_0x2607fa,_0x10ec16){return db[_0xe1e8('0x2d')][_0xe1e8('0x46')]({'where':{'id':_0x2607fa[_0xe1e8('0x44')]['id']}})['then'](handleEntityNotFound(_0x10ec16,null))[_0xe1e8('0x25')](removeEntity(_0x10ec16,null))[_0xe1e8('0x42')](handleError(_0x10ec16,null));};exports[_0xe1e8('0x2e')]=function(_0x40d17d,_0xdd1f53){return db['CmCompany'][_0xe1e8('0x2e')]()['then'](respondWithResult(_0xdd1f53,null))['catch'](handleError(_0xdd1f53,null));};exports[_0xe1e8('0x4e')]=function(_0x40c69d,_0x5c78ed,_0x3cf0c5){return db[_0xe1e8('0x4f')]['find']({'where':{'id':_0x40c69d[_0xe1e8('0x44')]['id']}})['then'](handleEntityNotFound(_0x5c78ed,null))[_0xe1e8('0x25')](function(_0x464c5c){if(_0x464c5c){return _0x464c5c[_0xe1e8('0x4e')](_0x40c69d[_0xe1e8('0x4d')]['ids'],_[_0xe1e8('0x50')](_0x40c69d['body'],[_0xe1e8('0x51'),'id'])||{});}})['then'](respondWithResult(_0x5c78ed,null))[_0xe1e8('0x42')](handleError(_0x5c78ed,null));};exports[_0xe1e8('0x52')]=function(_0x49d0cb,_0x49a953,_0x16235b){var _0x2ae558={};var _0x4f6c3a={};var _0x407618;var _0x40f900;return db[_0xe1e8('0x2d')][_0xe1e8('0x53')]({'where':{'id':_0x49d0cb['params']['id']}})[_0xe1e8('0x25')](handleEntityNotFound(_0x49a953,null))[_0xe1e8('0x25')](function(_0x558037){if(_0x558037){_0x407618=_0x558037;_0x4f6c3a[_0xe1e8('0x34')]=_[_0xe1e8('0x2f')](db['CmContact'][_0xe1e8('0x54')]);_0x4f6c3a[_0xe1e8('0x30')]=_[_0xe1e8('0x2f')](_0x49d0cb['query']);_0x4f6c3a[_0xe1e8('0x31')]=_[_0xe1e8('0x32')](_0x4f6c3a[_0xe1e8('0x34')],_0x4f6c3a['query']);_0x2ae558[_0xe1e8('0x33')]=_[_0xe1e8('0x32')](_0x4f6c3a['model'],qs['fields'](_0x49d0cb[_0xe1e8('0x30')]['fields']));_0x2ae558['attributes']=_0x2ae558[_0xe1e8('0x33')][_0xe1e8('0x36')]?_0x2ae558[_0xe1e8('0x33')]:_0x4f6c3a[_0xe1e8('0x34')];_0x2ae558[_0xe1e8('0x39')]=qs[_0xe1e8('0x3a')](_0x49d0cb['query']['sort']);_0x2ae558[_0xe1e8('0x3b')]=qs[_0xe1e8('0x31')](_[_0xe1e8('0x3c')](_0x49d0cb[_0xe1e8('0x30')],_0x4f6c3a[_0xe1e8('0x31')]));if(_0x49d0cb[_0xe1e8('0x30')]['filter']){_0x2ae558[_0xe1e8('0x3b')]=_[_0xe1e8('0x3d')](_0x2ae558[_0xe1e8('0x3b')],{'$or':_[_0xe1e8('0x3e')](_0x2ae558[_0xe1e8('0x33')],function(_0x4577ab){var _0x1b920c={};_0x1b920c[_0x4577ab]={'$like':'%'+_0x49d0cb[_0xe1e8('0x30')][_0xe1e8('0x3f')]+'%'};return _0x1b920c;})});}_0x2ae558=_['merge']({},_0x2ae558,_0x49d0cb['options']);return _0x407618[_0xe1e8('0x52')](_0x2ae558);}})[_0xe1e8('0x25')](function(_0x5095d2){if(_0x5095d2){_0x40f900=_0x5095d2[_0xe1e8('0x36')];if(!_0x49d0cb['query']['hasOwnProperty'](_0xe1e8('0x38'))){_0x2ae558[_0xe1e8('0x1e')]=qs[_0xe1e8('0x1e')](_0x49d0cb[_0xe1e8('0x30')][_0xe1e8('0x1e')]);_0x2ae558[_0xe1e8('0x1c')]=qs[_0xe1e8('0x1c')](_0x49d0cb[_0xe1e8('0x30')][_0xe1e8('0x1c')]);}return _0x407618[_0xe1e8('0x52')](_0x2ae558);}})[_0xe1e8('0x25')](function(_0x31af9f){if(_0x31af9f){return _0x31af9f?{'count':_0x40f900,'rows':_0x31af9f}:null;}})[_0xe1e8('0x25')](respondWithResult(_0x49a953,null))['catch'](handleError(_0x49a953,null));};
\ No newline at end of file
+var _0x496c=['length','nolimit','order','sort','where','filters','filter','merge','map','count','includeAll','include','rows','catch','params','rawAttributes','options','find','create','user','role','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','addContacts','CmContact','ids','getContacts','rimraf','request-promise','moment','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','limit','offset','set','Content-Range','json','apply','reject','save','update','then','destroy','get','Companies','UserProfileResource','error','stack','name','send','index','CmCompany','model','keys','query','intersection','attributes','fields'];(function(_0x2cfd0b,_0x12c7b2){var _0x57906e=function(_0x3e2743){while(--_0x3e2743){_0x2cfd0b['push'](_0x2cfd0b['shift']());}};_0x57906e(++_0x12c7b2);}(_0x496c,0x6c));var _0xc496=function(_0x3c99dd,_0x409d27){_0x3c99dd=_0x3c99dd-0x0;var _0xa0d3a9=_0x496c[_0x3c99dd];return _0xa0d3a9;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xc496('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xc496('0x1'));var moment=require(_0xc496('0x2'));var BPromise=require('bluebird');var Mustache=require(_0xc496('0x3'));var util=require(_0xc496('0x4'));var path=require(_0xc496('0x5'));var sox=require('sox');var csv=require(_0xc496('0x6'));var ejs=require(_0xc496('0x7'));var fs=require('fs');var fs_extra=require(_0xc496('0x8'));var _=require(_0xc496('0x9'));var squel=require(_0xc496('0xa'));var crypto=require('crypto');var jsforce=require(_0xc496('0xb'));var deskjs=require(_0xc496('0xc'));var toCsv=require(_0xc496('0x6'));var querystring=require('querystring');var Papa=require(_0xc496('0xd'));var Redis=require(_0xc496('0xe'));var authService=require(_0xc496('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0xc496('0x10'));var hardwareService=require(_0xc496('0x11'));var logger=require('../../config/logger')('api');var utils=require(_0xc496('0x12'));var config=require(_0xc496('0x13'));var licenseUtil=require(_0xc496('0x14'));var db=require(_0xc496('0x15'))['db'];function respondWithStatusCode(_0x529c90,_0x5754b0){_0x5754b0=_0x5754b0||0xcc;return function(_0x1d4772){if(_0x1d4772){return _0x529c90[_0xc496('0x16')](_0x5754b0);}return _0x529c90[_0xc496('0x17')](_0x5754b0)['end']();};}function respondWithResult(_0x24bb39,_0x5721a6){_0x5721a6=_0x5721a6||0xc8;return function(_0x3a866b){if(_0x3a866b){return _0x24bb39[_0xc496('0x17')](_0x5721a6)['json'](_0x3a866b);}};}function respondWithFilteredResult(_0x69a098,_0xb71bf9){return function(_0xc24a20){if(_0xc24a20){var _0x18b06f=typeof _0xb71bf9['offset']==='undefined'&&typeof _0xb71bf9[_0xc496('0x18')]==='undefined';var _0x489fae=_0xc24a20['count'];var _0x52a56f=_0x18b06f?0x0:_0xb71bf9[_0xc496('0x19')];var _0x13342f=_0x18b06f?_0xc24a20['count']:_0xb71bf9['offset']+_0xb71bf9[_0xc496('0x18')];var _0x2ae788;if(_0x13342f>=_0x489fae){_0x13342f=_0x489fae;_0x2ae788=0xc8;}else{_0x2ae788=0xce;}_0x69a098[_0xc496('0x17')](_0x2ae788);return _0x69a098[_0xc496('0x1a')](_0xc496('0x1b'),_0x52a56f+'-'+_0x13342f+'/'+_0x489fae)[_0xc496('0x1c')](_0xc24a20);}return null;};}function patchUpdates(_0x539e10){return function(_0x36f03d){try{jsonpatch[_0xc496('0x1d')](_0x36f03d,_0x539e10,!![]);}catch(_0x13f5a2){return BPromise[_0xc496('0x1e')](_0x13f5a2);}return _0x36f03d[_0xc496('0x1f')]();};}function saveUpdates(_0x41ed2e,_0x113d11){return function(_0x21bc46){if(_0x21bc46){return _0x21bc46[_0xc496('0x20')](_0x41ed2e)[_0xc496('0x21')](function(_0x235fa1){return _0x235fa1;});}return null;};}function removeEntity(_0x2a8daf,_0x5965db){return function(_0x269afe){if(_0x269afe){return _0x269afe[_0xc496('0x22')]()['then'](function(){var _0x514214=_0x269afe[_0xc496('0x23')]({'plain':!![]});var _0x17bfe8=_0xc496('0x24');return db[_0xc496('0x25')][_0xc496('0x22')]({'where':{'type':_0x17bfe8,'resourceId':_0x514214['id']}})[_0xc496('0x21')](function(){return _0x269afe;});})[_0xc496('0x21')](function(){_0x2a8daf[_0xc496('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x48eb4f,_0x38b96a){return function(_0x44402b){if(!_0x44402b){_0x48eb4f[_0xc496('0x16')](0x194);}return _0x44402b;};}function handleError(_0x4b21ae,_0x7158c7){_0x7158c7=_0x7158c7||0x1f4;return function(_0x17eaf1){logger[_0xc496('0x26')](_0x17eaf1[_0xc496('0x27')]);if(_0x17eaf1[_0xc496('0x28')]){delete _0x17eaf1[_0xc496('0x28')];}_0x4b21ae[_0xc496('0x17')](_0x7158c7)[_0xc496('0x29')](_0x17eaf1);};}exports[_0xc496('0x2a')]=function(_0x2c8f0c,_0x106414){var _0x15342f={},_0x1c0590={},_0x206c6e={'count':0x0,'rows':[]};return db[_0xc496('0x2b')]['describe']()[_0xc496('0x21')](function(_0x377e4d){_0x1c0590[_0xc496('0x2c')]=_[_0xc496('0x2d')](_0x377e4d);_0x1c0590[_0xc496('0x2e')]=_['keys'](_0x2c8f0c['query']);_0x1c0590['filters']=_[_0xc496('0x2f')](_0x1c0590[_0xc496('0x2c')],_0x1c0590[_0xc496('0x2e')]);_0x15342f[_0xc496('0x30')]=_[_0xc496('0x2f')](_0x1c0590[_0xc496('0x2c')],qs[_0xc496('0x31')](_0x2c8f0c[_0xc496('0x2e')][_0xc496('0x31')]));_0x15342f[_0xc496('0x30')]=_0x15342f[_0xc496('0x30')][_0xc496('0x32')]?_0x15342f[_0xc496('0x30')]:_0x1c0590[_0xc496('0x2c')];if(!_0x2c8f0c[_0xc496('0x2e')]['hasOwnProperty'](_0xc496('0x33'))){_0x15342f[_0xc496('0x18')]=qs['limit'](_0x2c8f0c[_0xc496('0x2e')][_0xc496('0x18')]);_0x15342f['offset']=qs[_0xc496('0x19')](_0x2c8f0c['query'][_0xc496('0x19')]);}_0x15342f[_0xc496('0x34')]=qs['sort'](_0x2c8f0c[_0xc496('0x2e')][_0xc496('0x35')]);_0x15342f[_0xc496('0x36')]=qs[_0xc496('0x37')](_['pick'](_0x2c8f0c[_0xc496('0x2e')],_0x1c0590[_0xc496('0x37')]),_0x377e4d);if(_0x2c8f0c[_0xc496('0x2e')][_0xc496('0x38')]){_0x15342f[_0xc496('0x36')]=_[_0xc496('0x39')](_0x15342f[_0xc496('0x36')],{'$or':_[_0xc496('0x3a')](_0x15342f[_0xc496('0x30')],function(_0x5a5db4){var _0x441498={};_0x441498[_0x5a5db4]={'$like':'%'+_0x2c8f0c['query'][_0xc496('0x38')]+'%'};return _0x441498;})});}_0x15342f=_[_0xc496('0x39')]({},_0x15342f,_0x2c8f0c['options']);var _0x207f96={'where':_0x15342f['where']};return db['CmCompany'][_0xc496('0x3b')](_0x207f96)[_0xc496('0x21')](function(_0x2947fb){_0x206c6e[_0xc496('0x3b')]=_0x2947fb;if(_0x2c8f0c[_0xc496('0x2e')][_0xc496('0x3c')]){_0x15342f[_0xc496('0x3d')]=[{'all':!![]}];}return db[_0xc496('0x2b')]['findAll'](_0x15342f);})[_0xc496('0x21')](function(_0x5b0c9d){_0x206c6e[_0xc496('0x3e')]=_0x5b0c9d;return _0x206c6e;})[_0xc496('0x21')](respondWithFilteredResult(_0x106414,_0x15342f))[_0xc496('0x3f')](handleError(_0x106414,null));})[_0xc496('0x3f')](handleError(_0x106414,null));};exports['show']=function(_0x504b3a,_0x4d11cd){var _0x581a27={'raw':![],'where':{'id':_0x504b3a[_0xc496('0x40')]['id']}},_0x41ce94={};_0x41ce94['model']=_[_0xc496('0x2d')](db[_0xc496('0x2b')][_0xc496('0x41')]);_0x41ce94[_0xc496('0x2e')]=_[_0xc496('0x2d')](_0x504b3a[_0xc496('0x2e')]);_0x41ce94[_0xc496('0x37')]=_[_0xc496('0x2f')](_0x41ce94['model'],_0x41ce94['query']);_0x581a27[_0xc496('0x30')]=_['intersection'](_0x41ce94[_0xc496('0x2c')],qs['fields'](_0x504b3a['query'][_0xc496('0x31')]));_0x581a27[_0xc496('0x30')]=_0x581a27[_0xc496('0x30')][_0xc496('0x32')]?_0x581a27[_0xc496('0x30')]:_0x41ce94[_0xc496('0x2c')];if(_0x504b3a[_0xc496('0x2e')][_0xc496('0x3c')]){_0x581a27[_0xc496('0x3d')]=[{'all':!![]}];}_0x581a27=_['merge']({},_0x581a27,_0x504b3a[_0xc496('0x42')]);return db[_0xc496('0x2b')][_0xc496('0x43')](_0x581a27)['then'](handleEntityNotFound(_0x4d11cd,null))['then'](respondWithResult(_0x4d11cd,null))[_0xc496('0x3f')](handleError(_0x4d11cd,null));};exports[_0xc496('0x44')]=function(_0x1227ce,_0xc558c9){return db[_0xc496('0x2b')][_0xc496('0x44')](_0x1227ce['body'],{})[_0xc496('0x21')](function(_0x1f9da9){var _0x209c47=_0x1227ce[_0xc496('0x45')][_0xc496('0x23')]({'plain':!![]});if(!_0x209c47)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x209c47[_0xc496('0x46')]===_0xc496('0x45')){var _0x1dc68c=_0x1f9da9[_0xc496('0x23')]({'plain':!![]});var _0x123a1b=_0xc496('0x24');return db['UserProfileSection'][_0xc496('0x43')]({'where':{'name':_0x123a1b,'userProfileId':_0x209c47['userProfileId']},'raw':!![]})[_0xc496('0x21')](function(_0x5a1595){if(_0x5a1595&&_0x5a1595[_0xc496('0x47')]===0x0){return db[_0xc496('0x25')][_0xc496('0x44')]({'name':_0x1dc68c['name'],'resourceId':_0x1dc68c['id'],'type':_0x5a1595[_0xc496('0x28')],'sectionId':_0x5a1595['id']},{})[_0xc496('0x21')](function(){return _0x1f9da9;});}else{return _0x1f9da9;}})[_0xc496('0x3f')](function(_0x4c1ffb){logger['error'](_0xc496('0x48'),_0x4c1ffb);throw _0x4c1ffb;});}return _0x1f9da9;})['then'](respondWithResult(_0xc558c9,0xc9))['catch'](handleError(_0xc558c9,null));};exports[_0xc496('0x20')]=function(_0x43c327,_0x324928){if(_0x43c327[_0xc496('0x49')]['id']){delete _0x43c327[_0xc496('0x49')]['id'];}return db['CmCompany'][_0xc496('0x43')]({'where':{'id':_0x43c327[_0xc496('0x40')]['id']}})[_0xc496('0x21')](handleEntityNotFound(_0x324928,null))['then'](saveUpdates(_0x43c327[_0xc496('0x49')],null))['then'](respondWithResult(_0x324928,null))[_0xc496('0x3f')](handleError(_0x324928,null));};exports[_0xc496('0x22')]=function(_0x228b29,_0x2f632f){return db['CmCompany'][_0xc496('0x43')]({'where':{'id':_0x228b29[_0xc496('0x40')]['id']}})[_0xc496('0x21')](handleEntityNotFound(_0x2f632f,null))[_0xc496('0x21')](removeEntity(_0x2f632f,null))['catch'](handleError(_0x2f632f,null));};exports[_0xc496('0x4a')]=function(_0x8d989f,_0x21e105){return db[_0xc496('0x2b')][_0xc496('0x4a')]()['then'](respondWithResult(_0x21e105,null))[_0xc496('0x3f')](handleError(_0x21e105,null));};exports[_0xc496('0x4b')]=function(_0x2f5592,_0x59aa15,_0x406181){return db[_0xc496('0x4c')]['find']({'where':{'id':_0x2f5592['params']['id']}})['then'](handleEntityNotFound(_0x59aa15,null))['then'](function(_0x662ac9){if(_0x662ac9){return _0x662ac9[_0xc496('0x4b')](_0x2f5592[_0xc496('0x49')][_0xc496('0x4d')],_['omit'](_0x2f5592['body'],[_0xc496('0x4d'),'id'])||{});}})[_0xc496('0x21')](respondWithResult(_0x59aa15,null))[_0xc496('0x3f')](handleError(_0x59aa15,null));};exports[_0xc496('0x4e')]=function(_0x2accaf,_0x5d4395,_0x2575bb){var _0x443383={};var _0x58d20d={};var _0xcbbaa7;var _0x469da6;return db['CmCompany']['findOne']({'where':{'id':_0x2accaf[_0xc496('0x40')]['id']}})[_0xc496('0x21')](handleEntityNotFound(_0x5d4395,null))[_0xc496('0x21')](function(_0x551f28){if(_0x551f28){_0xcbbaa7=_0x551f28;_0x58d20d[_0xc496('0x2c')]=_[_0xc496('0x2d')](db[_0xc496('0x4c')][_0xc496('0x41')]);_0x58d20d['query']=_[_0xc496('0x2d')](_0x2accaf['query']);_0x58d20d['filters']=_[_0xc496('0x2f')](_0x58d20d[_0xc496('0x2c')],_0x58d20d[_0xc496('0x2e')]);_0x443383['attributes']=_[_0xc496('0x2f')](_0x58d20d[_0xc496('0x2c')],qs[_0xc496('0x31')](_0x2accaf[_0xc496('0x2e')]['fields']));_0x443383['attributes']=_0x443383['attributes']['length']?_0x443383[_0xc496('0x30')]:_0x58d20d[_0xc496('0x2c')];_0x443383[_0xc496('0x34')]=qs[_0xc496('0x35')](_0x2accaf[_0xc496('0x2e')][_0xc496('0x35')]);_0x443383[_0xc496('0x36')]=qs['filters'](_['pick'](_0x2accaf['query'],_0x58d20d[_0xc496('0x37')]));if(_0x2accaf['query'][_0xc496('0x38')]){_0x443383[_0xc496('0x36')]=_[_0xc496('0x39')](_0x443383['where'],{'$or':_[_0xc496('0x3a')](_0x443383['attributes'],function(_0xb94dc8){var _0x15c411={};_0x15c411[_0xb94dc8]={'$like':'%'+_0x2accaf[_0xc496('0x2e')][_0xc496('0x38')]+'%'};return _0x15c411;})});}_0x443383=_['merge']({},_0x443383,_0x2accaf['options']);return _0xcbbaa7['getContacts'](_0x443383);}})['then'](function(_0xc23c11){if(_0xc23c11){_0x469da6=_0xc23c11['length'];if(!_0x2accaf['query']['hasOwnProperty'](_0xc496('0x33'))){_0x443383[_0xc496('0x18')]=qs['limit'](_0x2accaf['query']['limit']);_0x443383[_0xc496('0x19')]=qs[_0xc496('0x19')](_0x2accaf[_0xc496('0x2e')][_0xc496('0x19')]);}return _0xcbbaa7['getContacts'](_0x443383);}})[_0xc496('0x21')](function(_0x129fb6){if(_0x129fb6){return _0x129fb6?{'count':_0x469da6,'rows':_0x129fb6}:null;}})[_0xc496('0x21')](respondWithResult(_0x5d4395,null))[_0xc496('0x3f')](handleError(_0x5d4395,null));};
\ No newline at end of file
index eabba72..b1c40e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4eeb=['request-promise','path','../../config/environment','./cmCompany.attributes','exports','define','CmCompany','cm_companies','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x5c49f1,_0xbf249d){var _0x3913ad=function(_0x45a2b4){while(--_0x45a2b4){_0x5c49f1['push'](_0x5c49f1['shift']());}};_0x3913ad(++_0xbf249d);}(_0x4eeb,0xe8));var _0xb4ee=function(_0x8c9e52,_0x3d0891){_0x8c9e52=_0x8c9e52-0x0;var _0x3e11b0=_0x4eeb[_0x8c9e52];return _0x3e11b0;};'use strict';var _=require(_0xb4ee('0x0'));var util=require(_0xb4ee('0x1'));var logger=require(_0xb4ee('0x2'))(_0xb4ee('0x3'));var moment=require(_0xb4ee('0x4'));var BPromise=require(_0xb4ee('0x5'));var rp=require(_0xb4ee('0x6'));var fs=require('fs');var path=require(_0xb4ee('0x7'));var rimraf=require('rimraf');var config=require(_0xb4ee('0x8'));var attributes=require(_0xb4ee('0x9'));module[_0xb4ee('0xa')]=function(_0x5a2d3b,_0x4a4617){return _0x5a2d3b[_0xb4ee('0xb')](_0xb4ee('0xc'),attributes,{'tableName':_0xb4ee('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe1ef=['cm_companies','lodash','util','../../config/logger','api','moment','bluebird','rimraf','../../config/environment','./cmCompany.attributes','exports','define','CmCompany'];(function(_0xad581b,_0xc543f1){var _0x2db6e9=function(_0x2ae91c){while(--_0x2ae91c){_0xad581b['push'](_0xad581b['shift']());}};_0x2db6e9(++_0xc543f1);}(_0xe1ef,0x160));var _0xfe1e=function(_0x1a81b2,_0x22fd6f){_0x1a81b2=_0x1a81b2-0x0;var _0x462bd5=_0xe1ef[_0x1a81b2];return _0x462bd5;};'use strict';var _=require(_0xfe1e('0x0'));var util=require(_0xfe1e('0x1'));var logger=require(_0xfe1e('0x2'))(_0xfe1e('0x3'));var moment=require(_0xfe1e('0x4'));var BPromise=require(_0xfe1e('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xfe1e('0x6'));var config=require(_0xfe1e('0x7'));var attributes=require(_0xfe1e('0x8'));module[_0xfe1e('0x9')]=function(_0x2c3ecb,_0x21ecb6){return _0x2c3ecb[_0xfe1e('0xa')](_0xfe1e('0xb'),attributes,{'tableName':_0xfe1e('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b61f459..e89bd56 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f29=['message','result','catch','lodash','util','bluebird','ioredis','../../mysqldb','../../config/logger','jayson/promise','request','then','info','CmCompany,\x20%s,\x20%s','request\x20sent','debug','CmCompany,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x74912e,_0x25c8c9){var _0x54e755=function(_0x46c8f1){while(--_0x46c8f1){_0x74912e['push'](_0x74912e['shift']());}};_0x54e755(++_0x25c8c9);}(_0x1f29,0x10d));var _0x91f2=function(_0x2fc7a2,_0x4a9b39){_0x2fc7a2=_0x2fc7a2-0x0;var _0x4c9beb=_0x1f29[_0x2fc7a2];return _0x4c9beb;};'use strict';var _=require(_0x91f2('0x0'));var util=require(_0x91f2('0x1'));var moment=require('moment');var BPromise=require(_0x91f2('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x91f2('0x3'));var db=require(_0x91f2('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x91f2('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0x91f2('0x6'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x2e6685,_0x218584,_0x184d58){return new BPromise(function(_0x28ac41,_0xf650a1){return client[_0x91f2('0x7')](_0x2e6685,_0x184d58)[_0x91f2('0x8')](function(_0x3d1236){logger[_0x91f2('0x9')](_0x91f2('0xa'),_0x218584,_0x91f2('0xb'));logger[_0x91f2('0xc')](_0x91f2('0xd'),_0x218584,_0x91f2('0xb'),JSON[_0x91f2('0xe')](_0x3d1236));if(_0x3d1236[_0x91f2('0xf')]){if(_0x3d1236[_0x91f2('0xf')]['code']===0x1f4){logger[_0x91f2('0xf')]('CmCompany,\x20%s,\x20%s',_0x218584,_0x3d1236[_0x91f2('0xf')]['message']);return _0xf650a1(_0x3d1236[_0x91f2('0xf')][_0x91f2('0x10')]);}logger['error'](_0x91f2('0xa'),_0x218584,_0x3d1236['error'][_0x91f2('0x10')]);return _0x28ac41(_0x3d1236['error'][_0x91f2('0x10')]);}else{logger['info'](_0x91f2('0xa'),_0x218584,_0x91f2('0xb'));_0x28ac41(_0x3d1236[_0x91f2('0x11')][_0x91f2('0x10')]);}})[_0x91f2('0x12')](function(_0x16a276){logger[_0x91f2('0xf')]('CmCompany,\x20%s,\x20%s',_0x218584,_0x16a276);_0xf650a1(_0x16a276);});});}
\ No newline at end of file
+var _0x7139=['lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','request','then','info','CmCompany,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch'];(function(_0x379356,_0x2a7a12){var _0x4337a1=function(_0xedee84){while(--_0xedee84){_0x379356['push'](_0x379356['shift']());}};_0x4337a1(++_0x2a7a12);}(_0x7139,0x108));var _0x9713=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x7139[_0x2641f9];return _0x585741;};'use strict';var _=require(_0x9713('0x0'));var util=require(_0x9713('0x1'));var moment=require(_0x9713('0x2'));var BPromise=require(_0x9713('0x3'));var rs=require(_0x9713('0x4'));var fs=require('fs');var Redis=require(_0x9713('0x5'));var db=require(_0x9713('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x9713('0x7'));var config=require(_0x9713('0x8'));var jayson=require(_0x9713('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0xd565f6,_0x463a20,_0x391f58){return new BPromise(function(_0x50a4dc,_0x98c3cc){return client[_0x9713('0xa')](_0xd565f6,_0x391f58)[_0x9713('0xb')](function(_0x428054){logger[_0x9713('0xc')](_0x9713('0xd'),_0x463a20,_0x9713('0xe'));logger[_0x9713('0xf')]('CmCompany,\x20%s,\x20%s,\x20%s',_0x463a20,'request\x20sent',JSON[_0x9713('0x10')](_0x428054));if(_0x428054['error']){if(_0x428054[_0x9713('0x11')][_0x9713('0x12')]===0x1f4){logger[_0x9713('0x11')](_0x9713('0xd'),_0x463a20,_0x428054['error'][_0x9713('0x13')]);return _0x98c3cc(_0x428054['error'][_0x9713('0x13')]);}logger[_0x9713('0x11')]('CmCompany,\x20%s,\x20%s',_0x463a20,_0x428054[_0x9713('0x11')][_0x9713('0x13')]);return _0x50a4dc(_0x428054[_0x9713('0x11')]['message']);}else{logger['info'](_0x9713('0xd'),_0x463a20,_0x9713('0xe'));_0x50a4dc(_0x428054[_0x9713('0x14')][_0x9713('0x13')]);}})[_0x9713('0x15')](function(_0x5b4000){logger[_0x9713('0x11')](_0x9713('0xd'),_0x463a20,_0x5b4000);_0x98c3cc(_0x5b4000);});});}
\ No newline at end of file
index 976210f..ae0a148 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa410=['/:id','show','/:id/contacts','getContacts','create','post','addContacts','update','exports','multer','path','Router','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe'];(function(_0x407545,_0x4b90c4){var _0x3ef24b=function(_0x26b0c9){while(--_0x26b0c9){_0x407545['push'](_0x407545['shift']());}};_0x3ef24b(++_0x4b90c4);}(_0xa410,0xa9));var _0x0a41=function(_0x3d798f,_0x544807){_0x3d798f=_0x3d798f-0x0;var _0x2e7e6f=_0xa410[_0x3d798f];return _0x2e7e6f;};'use strict';var multer=require(_0x0a41('0x0'));var util=require('util');var path=require(_0x0a41('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a41('0x2')]();var fs_extra=require(_0x0a41('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x0a41('0x4'));var config=require(_0x0a41('0x5'));var controller=require('./cmCompany.controller');router[_0x0a41('0x6')]('/',auth[_0x0a41('0x7')](),controller[_0x0a41('0x8')]);router['get'](_0x0a41('0x9'),auth['isAuthenticated'](),controller[_0x0a41('0xa')]);router[_0x0a41('0x6')](_0x0a41('0xb'),auth[_0x0a41('0x7')](),controller[_0x0a41('0xc')]);router[_0x0a41('0x6')](_0x0a41('0xd'),auth[_0x0a41('0x7')](),controller[_0x0a41('0xe')]);router['post']('/',auth[_0x0a41('0x7')](),controller[_0x0a41('0xf')]);router[_0x0a41('0x10')](_0x0a41('0xd'),auth[_0x0a41('0x7')](),controller[_0x0a41('0x11')]);router['put']('/:id',auth[_0x0a41('0x7')](),controller[_0x0a41('0x12')]);router['delete'](_0x0a41('0xb'),auth[_0x0a41('0x7')](),controller['destroy']);module[_0x0a41('0x13')]=router;
\ No newline at end of file
+var _0xefb4=['../../config/environment','get','isAuthenticated','describe','/:id','/:id/contacts','getContacts','create','post','addContacts','update','delete','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x4eb485,_0xb2e75e){var _0x2fa654=function(_0x17cc55){while(--_0x17cc55){_0x4eb485['push'](_0x4eb485['shift']());}};_0x2fa654(++_0xb2e75e);}(_0xefb4,0x98));var _0x4efb=function(_0x3656e2,_0x22b321){_0x3656e2=_0x3656e2-0x0;var _0x2f7928=_0xefb4[_0x3656e2];return _0x2f7928;};'use strict';var multer=require(_0x4efb('0x0'));var util=require(_0x4efb('0x1'));var path=require(_0x4efb('0x2'));var timeout=require(_0x4efb('0x3'));var express=require(_0x4efb('0x4'));var router=express['Router']();var fs_extra=require(_0x4efb('0x5'));var auth=require(_0x4efb('0x6'));var interaction=require(_0x4efb('0x7'));var config=require(_0x4efb('0x8'));var controller=require('./cmCompany.controller');router[_0x4efb('0x9')]('/',auth[_0x4efb('0xa')](),controller['index']);router[_0x4efb('0x9')]('/describe',auth[_0x4efb('0xa')](),controller[_0x4efb('0xb')]);router['get'](_0x4efb('0xc'),auth['isAuthenticated'](),controller['show']);router[_0x4efb('0x9')](_0x4efb('0xd'),auth[_0x4efb('0xa')](),controller[_0x4efb('0xe')]);router['post']('/',auth['isAuthenticated'](),controller[_0x4efb('0xf')]);router[_0x4efb('0x10')](_0x4efb('0xd'),auth['isAuthenticated'](),controller[_0x4efb('0x11')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0x4efb('0x12')]);router[_0x4efb('0x13')]('/:id',auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 4dbf847..902c58d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b8e=['STRING','INTEGER','UNSIGNED','DATE','NOW','lodash','sequelize','exports'];(function(_0x2fa1c6,_0x4a5b8d){var _0x5f3257=function(_0x195b53){while(--_0x195b53){_0x2fa1c6['push'](_0x2fa1c6['shift']());}};_0x5f3257(++_0x4a5b8d);}(_0x5b8e,0x11d));var _0xe5b8=function(_0x52215e,_0x3644bd){_0x52215e=_0x52215e-0x0;var _0x5e787c=_0x5b8e[_0x52215e];return _0x5e787c;};'use strict';var _=require(_0xe5b8('0x0'));var Sequelize=require(_0xe5b8('0x1'));module[_0xe5b8('0x2')]={'firstName':{'type':Sequelize[_0xe5b8('0x3')],'allowNull':![]},'lastName':{'type':Sequelize[_0xe5b8('0x3')]},'street':{'type':Sequelize[_0xe5b8('0x3')]},'postalCode':{'type':Sequelize[_0xe5b8('0x3')]},'city':{'type':Sequelize[_0xe5b8('0x3')]},'country':{'type':Sequelize['STRING']},'dateOfBirth':{'type':Sequelize['STRING']},'description':{'type':Sequelize['TEXT']},'phone':{'type':Sequelize[_0xe5b8('0x3')]},'mobile':{'type':Sequelize['STRING']},'fax':{'type':Sequelize[_0xe5b8('0x3')]},'email':{'type':Sequelize[_0xe5b8('0x3')]},'url':{'type':Sequelize[_0xe5b8('0x3')]},'facebook':{'type':Sequelize[_0xe5b8('0x3')]},'fb_data':{'type':Sequelize[_0xe5b8('0x3')]},'twitter':{'type':Sequelize['STRING']},'skype':{'type':Sequelize['STRING']},'teams':{'type':Sequelize['STRING']},'viber':{'type':Sequelize['STRING']},'line':{'type':Sequelize[_0xe5b8('0x3')]},'wechat':{'type':Sequelize[_0xe5b8('0x3')]},'telegram':{'type':Sequelize['STRING']},'UserId':{'type':Sequelize[_0xe5b8('0x4')]},'priority':{'type':Sequelize[_0xe5b8('0x4')](0x2)[_0xe5b8('0x5')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'scheduledat':{'type':Sequelize[_0xe5b8('0x6')],'defaultValue':Sequelize[_0xe5b8('0x7')]}};
\ No newline at end of file
+var _0x89d5=['INTEGER','UNSIGNED','DATE','sequelize','exports','STRING'];(function(_0x4bd539,_0x4ff3d1){var _0x18bcf3=function(_0x528738){while(--_0x528738){_0x4bd539['push'](_0x4bd539['shift']());}};_0x18bcf3(++_0x4ff3d1);}(_0x89d5,0x12f));var _0x589d=function(_0x3054be,_0x1bdc8b){_0x3054be=_0x3054be-0x0;var _0x3df150=_0x89d5[_0x3054be];return _0x3df150;};'use strict';var _=require('lodash');var Sequelize=require(_0x589d('0x0'));module[_0x589d('0x1')]={'firstName':{'type':Sequelize[_0x589d('0x2')],'allowNull':![]},'lastName':{'type':Sequelize[_0x589d('0x2')]},'street':{'type':Sequelize['STRING']},'postalCode':{'type':Sequelize[_0x589d('0x2')]},'city':{'type':Sequelize[_0x589d('0x2')]},'country':{'type':Sequelize[_0x589d('0x2')]},'dateOfBirth':{'type':Sequelize[_0x589d('0x2')]},'description':{'type':Sequelize['TEXT']},'phone':{'type':Sequelize[_0x589d('0x2')]},'mobile':{'type':Sequelize[_0x589d('0x2')]},'fax':{'type':Sequelize[_0x589d('0x2')]},'email':{'type':Sequelize[_0x589d('0x2')]},'url':{'type':Sequelize[_0x589d('0x2')]},'facebook':{'type':Sequelize[_0x589d('0x2')]},'fb_data':{'type':Sequelize[_0x589d('0x2')]},'twitter':{'type':Sequelize[_0x589d('0x2')]},'skype':{'type':Sequelize['STRING']},'teams':{'type':Sequelize[_0x589d('0x2')]},'viber':{'type':Sequelize[_0x589d('0x2')]},'line':{'type':Sequelize['STRING']},'wechat':{'type':Sequelize[_0x589d('0x2')]},'telegram':{'type':Sequelize['STRING']},'UserId':{'type':Sequelize[_0x589d('0x3')]},'priority':{'type':Sequelize[_0x589d('0x3')](0x2)[_0x589d('0x4')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'scheduledat':{'type':Sequelize[_0x589d('0x5')],'defaultValue':Sequelize['NOW']}};
\ No newline at end of file
index b1a83a7..3b0b658 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3691=['uc.UserId\x20=\x20?','datetime','castTo','DATE','buildExpression','text','start','hasOwnProperty','isNil','Contact','ListId','c.ListId\x20IN\x20?','concat','CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?','\x20=\x20?','isArray','tag','filter','replace','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','isNumeric','c.id\x20LIKE\x20?','c.phone\x20LIKE\x20?','c.fax\x20LIKE\x20?','isEmail','c.firstName\x20LIKE\x20?','c.lastName\x20LIKE\x20?','group','c.id','Sequelize','QueryTypes','clone','order','DESC','t.id\x20IN\x20?','resolve','user','agent','some','getLists','isEmpty','c.ListId\x20IS\x20NULL','role','sequelize','toString','merge','CmContact','c.firstName','c.lastName','c.fax','c.email','c.ListId','GROUP_CONCAT(DISTINCT\x20t.id)','TagIds','Tags','rows','catch','columnName','displayName','CmCustomField','findAll','values','body','get','mergeWith','tags','join','info','[CmContact][merge]\x20to\x20%s\x20from\x20%s','CmHopper','[CmContact][merge][destroy][CmHopper],\x20%s','CmHopperBlack','[CmContact][merge][destroy][CmHopperBlack],\x20%s','ChatInteraction','ChatMessage','update','MailInteraction','MailMessage','SmsInteraction','FaxInteraction','FaxMessage','OpenchannelInteraction','OpenchannelMessage','CmHopperFinal','CmHopperHistory','ReportAgentPreview','VoiceCallReport','FaxQueueReport','MailQueueReport','OpenchannelQueueReport','JscriptySessionReport','WhatsappMessage','WhatsappQueueReport','each','duplicates','$or','findOrCreate','spread','params','$and','omit','cf_%d','pickBy','format','table','cm_contacts','setFields','id\x20=\x20?','toParam','phone','pick','options','getTags','nolimit','setTags','ids','getHoppers','rawAttributes','ContactId','includeAll','include','getHopperHistories','getJscriptySessions','binding_keys','No\x20association\x20keys\x20specified!','No\x20association\x20values\x20specified!','socket_timestamp','Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed','binding_values','No\x20phone\x20column\x20specified','No\x20firstName\x20column\x20specified','root','server/files/tmp','file','filename','0777','child_process','fork','CompanyId','pid','send','upload','meta','import','No\x20ListId\x20specified','binding','firstName','../../components/import/cm/csv2','stringify','message','start\x20child\x20process\x20correctly!','error\x20child\x20process','getJourney','chat','sms','fax','voice','-createdAt','channel','includes','toLowerCase','Invalid\x20channel','range','parse','isValid','Invalid\x20date\x20for\x20range\x20from\x20filter','Invalid\x20date\x20for\x20range\x20to\x20filter','Invalid\x20createdAt\x20filter','uniqueid','destination','callerid','starttime','endtime','duration','note','createdAt','userDisposition','userSecondDisposition','userThirdDisposition','UserId','fullname','findAndCountAll','alias','startCase','Website','Account','closedAt','disposition','thirdDisposition','Owner','browserName','customerIp','customerPort','deviceModel','osName','ratingMessage','ratingType','ratingValue','subject','substatus','openchannel','threadId','Interaction','flatten','sortBy','reverse','eml-format','rimraf','moment','bluebird','mustache','path','sox','fs-extra','lodash','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','defaults','redis','./cmContact.socket','register','status','json','offset','undefined','limit','count','set','apply','reject','then','destroy','end','sendStatus','error','stack','describe','keys','length','startsWith','cf_','push','findOne','all','fieldType','type','model','query','filters','intersection','attributes','fields','sort','where','select','field','name','color','tools_tags','from','left_join','cm_user_has_contacts','uc.CmContactId\x20=\x20c.id','ct.CmContactId\x20=\x20c.id','expr','search','parseSearch','sqlOperator','conditions','find','Tag','value','split','map','forEach','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','User','and'];(function(_0x1fa759,_0x4ecdce){var _0x2da9f4=function(_0x463e2a){while(--_0x463e2a){_0x1fa759['push'](_0x1fa759['shift']());}};_0x2da9f4(++_0x4ecdce);}(_0x3691,0xcf));var _0x1369=function(_0x32009e,_0x3d6d16){_0x32009e=_0x32009e-0x0;var _0xaeacae=_0x3691[_0x32009e];return _0xaeacae;};'use strict';var emlformat=require(_0x1369('0x0'));var rimraf=require(_0x1369('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x1369('0x2'));var BPromise=require(_0x1369('0x3'));var Mustache=require(_0x1369('0x4'));var util=require('util');var path=require(_0x1369('0x5'));var sox=require(_0x1369('0x6'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1369('0x7'));var _=require(_0x1369('0x8'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x1369('0x9'));var toCsv=require(_0x1369('0xa'));var querystring=require('querystring');var Papa=require(_0x1369('0xb'));var Redis=require(_0x1369('0xc'));var authService=require(_0x1369('0xd'));var qs=require(_0x1369('0xe'));var as=require(_0x1369('0xf'));var hardwareService=require(_0x1369('0x10'));var logger=require(_0x1369('0x11'))(_0x1369('0x12'));var utils=require('../../config/utils');var config=require(_0x1369('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x1369('0x14'))['db'];config['redis']=_[_0x1369('0x15')](config[_0x1369('0x16')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x1369('0x16')]));require(_0x1369('0x17'))[_0x1369('0x18')](socket);function respondWithStatusCode(_0x509c2e,_0x352b05){_0x352b05=_0x352b05||0xcc;return function(_0x59d75f){if(_0x59d75f){return _0x509c2e['sendStatus'](_0x352b05);}return _0x509c2e[_0x1369('0x19')](_0x352b05)['end']();};}function respondWithResult(_0x4534bf,_0x4f1021){_0x4f1021=_0x4f1021||0xc8;return function(_0x627d8f){if(_0x627d8f){return _0x4534bf['status'](_0x4f1021)[_0x1369('0x1a')](_0x627d8f);}};}function respondWithFilteredResult(_0x10c613,_0x45340e){return function(_0x7eb699){if(_0x7eb699){var _0x19f5d4=typeof _0x45340e[_0x1369('0x1b')]===_0x1369('0x1c')&&typeof _0x45340e[_0x1369('0x1d')]===_0x1369('0x1c');var _0x31fe7a=_0x7eb699[_0x1369('0x1e')];var _0x2262cb=_0x19f5d4?0x0:_0x45340e['offset'];var _0x5d76f4=_0x19f5d4?_0x7eb699[_0x1369('0x1e')]:_0x45340e[_0x1369('0x1b')]+_0x45340e[_0x1369('0x1d')];var _0x471aff;if(_0x5d76f4>=_0x31fe7a){_0x5d76f4=_0x31fe7a;_0x471aff=0xc8;}else{_0x471aff=0xce;}_0x10c613[_0x1369('0x19')](_0x471aff);return _0x10c613[_0x1369('0x1f')]('Content-Range',_0x2262cb+'-'+_0x5d76f4+'/'+_0x31fe7a)['json'](_0x7eb699);}return null;};}function patchUpdates(_0x1fc159){return function(_0x323049){try{jsonpatch[_0x1369('0x20')](_0x323049,_0x1fc159,!![]);}catch(_0xcd6a1c){return BPromise[_0x1369('0x21')](_0xcd6a1c);}return _0x323049['save']();};}function saveUpdates(_0x48bf2b,_0x3e5fb3){return function(_0x493f0f){if(_0x493f0f){return _0x493f0f['update'](_0x48bf2b)[_0x1369('0x22')](function(_0x1fd488){return _0x1fd488;});}return null;};}function removeEntity(_0x3039d4,_0x499093){return function(_0x36de02){if(_0x36de02){return _0x36de02[_0x1369('0x23')]()[_0x1369('0x22')](function(){_0x3039d4[_0x1369('0x19')](0xcc)[_0x1369('0x24')]();});}};}function handleEntityNotFound(_0x4c6ae9,_0x271c01){return function(_0x4edb28){if(!_0x4edb28){_0x4c6ae9[_0x1369('0x25')](0x194);}return _0x4edb28;};}function handleError(_0x2fd36e,_0x461311){_0x461311=_0x461311||0x1f4;return function(_0x2471fb){logger[_0x1369('0x26')](_0x2471fb[_0x1369('0x27')]);if(_0x2471fb['name']){delete _0x2471fb['name'];}_0x2fd36e['status'](_0x461311)['send'](_0x2471fb);};}exports['index']=function(_0x26884e,_0x2ac244){var _0x156522={},_0xd4d72d={},_0x109e04={'count':0x0,'rows':[]};return db['CmContact'][_0x1369('0x28')]()[_0x1369('0x22')](function(_0x4a60eb){var _0x2fa5c5=[];for(var _0x2d0259=0x0;_0x2d0259<Object[_0x1369('0x29')](_0x4a60eb)[_0x1369('0x2a')];_0x2d0259++){var _0x3b69f5=Object['keys'](_0x4a60eb)[_0x2d0259];if(_[_0x1369('0x2b')](_0x3b69f5,_0x1369('0x2c'))){_0x2fa5c5[_0x1369('0x2d')](db['CmCustomField'][_0x1369('0x2e')]({'where':{'id':_['trimStart'](_0x3b69f5,'cf_')},'raw':!![]}));}}return BPromise[_0x1369('0x2f')](_0x2fa5c5)[_0x1369('0x22')](function(_0x4e14bf){for(var _0x4a9e4a=0x0;_0x4a9e4a<_0x4e14bf[_0x1369('0x2a')];_0x4a9e4a++){if(_0x4e14bf[_0x4a9e4a]){var _0xa164db=_0x1369('0x2c')+_0x4e14bf[_0x4a9e4a]['id'];var _0x413834=_0x4a60eb[_0xa164db];_0x413834[_0x1369('0x30')]=_0x4e14bf[_0x4a9e4a][_0x1369('0x31')];}}return _0x4a60eb;});})[_0x1369('0x22')](function(_0x59fc51){_0xd4d72d[_0x1369('0x32')]=_[_0x1369('0x29')](_0x59fc51);_0xd4d72d[_0x1369('0x33')]=_[_0x1369('0x29')](_0x26884e[_0x1369('0x33')]);_0xd4d72d[_0x1369('0x34')]=_[_0x1369('0x35')](_0xd4d72d[_0x1369('0x32')],_0xd4d72d[_0x1369('0x33')]);_0x156522[_0x1369('0x36')]=_[_0x1369('0x35')](_0xd4d72d[_0x1369('0x32')],qs['fields'](_0x26884e['query'][_0x1369('0x37')]));_0x156522[_0x1369('0x36')]=_0x156522[_0x1369('0x36')][_0x1369('0x2a')]?_0x156522[_0x1369('0x36')]:_0xd4d72d[_0x1369('0x32')];if(!_0x26884e[_0x1369('0x33')]['hasOwnProperty']('nolimit')){_0x156522[_0x1369('0x1d')]=qs[_0x1369('0x1d')](_0x26884e[_0x1369('0x33')][_0x1369('0x1d')]);_0x156522['offset']=qs[_0x1369('0x1b')](_0x26884e['query']['offset']);}_0x156522['order']=qs[_0x1369('0x38')](_0x26884e['query']['sort']);_0x156522[_0x1369('0x39')]=qs[_0x1369('0x34')](_['pick'](_0x26884e[_0x1369('0x33')],_0xd4d72d['filters']),_0x59fc51);var _0x3ed85a=[];var _0x53e45e=squel[_0x1369('0x3a')]()[_0x1369('0x3b')]('id')[_0x1369('0x3b')](_0x1369('0x3c'))[_0x1369('0x3b')](_0x1369('0x3d'))['from'](_0x1369('0x3e'));var _0x31e850=squel['select']()[_0x1369('0x3f')]('cm_contacts','c')[_0x1369('0x40')](_0x1369('0x41'),'uc',_0x1369('0x42'))[_0x1369('0x40')]('cm_contact_has_tags','ct',_0x1369('0x43'))[_0x1369('0x40')]('tools_tags','t','t.id\x20=\x20ct.TagId')['where']('c.deletedAt\x20IS\x20NULL');var _0x577889=squel[_0x1369('0x44')]();var _0x132f99=[];var _0x1b26ed=squel[_0x1369('0x44')]();var _0x58467f;if(_0x26884e[_0x1369('0x33')][_0x1369('0x45')]){_0x58467f=as[_0x1369('0x46')](_0x26884e[_0x1369('0x33')]['search']);var _0x3136b8=_0x58467f[_0x1369('0x47')];for(var _0x552a6c=0x0;_0x552a6c<_0x58467f[_0x1369('0x48')][_0x1369('0x2a')];_0x552a6c++){var _0x2781a1=_0x58467f['conditions'][_0x552a6c];var _0x31c197='c';var _0x53b6c1=_(_0x59fc51)[_0x1369('0x29')]()[_0x1369('0x49')](function(_0x171456){return _0x171456===_0x2781a1[_0x1369('0x3b')];});if(_0x53b6c1)_0x53b6c1=_0x59fc51[_0x2781a1[_0x1369('0x3b')]];if(!_0x53b6c1){if(_0x2781a1[_0x1369('0x3b')]===_0x1369('0x4a')){var _0x46a9cb=_0x2781a1[_0x1369('0x4b')][_0x1369('0x4c')](',')[_0x1369('0x4d')](function(_0x3dbc6c){return Number(_0x3dbc6c);});_0x46a9cb[_0x1369('0x4e')](function(_0x4fdd7b){_0x1b26ed['or'](_0x1369('0x4f'),'%,'+_0x4fdd7b+',%');});_0x132f99=_['union'](_0x132f99,_0x46a9cb);}else if(_0x2781a1[_0x1369('0x3b')]===_0x1369('0x50')){_0x577889[_0x1369('0x51')](_0x1369('0x52'),_0x2781a1['value']);}}else{if(_0x2781a1['field']==='dateOfBirth'||_0x53b6c1[_0x1369('0x30')]===_0x1369('0x53'))_0x2781a1[_0x1369('0x54')]=_0x1369('0x55');var _0xa75c87=as[_0x1369('0x56')](_0x31c197,_0x53b6c1['type'],_0x2781a1);_0x577889[_0x3136b8](_0xa75c87[_0x1369('0x57')],_0xa75c87[_0x1369('0x4b')][_0x1369('0x58')],_0xa75c87[_0x1369('0x4b')][_0x1369('0x24')]);}}}else{var _0x187fb8=_(Object[_0x1369('0x29')](_0x26884e[_0x1369('0x33')]))[_0x1369('0x4d')](function(_0x49ed71){return _0x59fc51[_0x1369('0x59')](_0x49ed71)?_0x49ed71:undefined;})['filter'](function(_0x50bf08){return!_[_0x1369('0x5a')](_0x50bf08);})['value']();if(_0x26884e[_0x1369('0x33')][_0x1369('0x5b')])_0x187fb8[_0x1369('0x2d')](_0x1369('0x5b'));if(!_['isEmpty'](_0x187fb8)){_0x187fb8[_0x1369('0x4e')](function(_0x1d99b1){if(_0x1d99b1===_0x1369('0x5c')){_0x31e850[_0x1369('0x39')](_0x1369('0x5d'),[][_0x1369('0x5e')](_0x26884e[_0x1369('0x33')][_0x1d99b1]));}else if(_0x1d99b1===_0x1369('0x5b')){var _0x4438ef='%'+_0x26884e[_0x1369('0x33')][_0x1d99b1]+'%';_0x31e850[_0x1369('0x39')](_0x1369('0x5f'),_0x4438ef);}else{_0x31e850[_0x1369('0x39')]('c.'+_0x1d99b1+_0x1369('0x60'),_0x26884e['query'][_0x1d99b1]);}});}if(_0x26884e[_0x1369('0x33')]['tag']){_0x132f99=_[_0x1369('0x61')](_0x26884e[_0x1369('0x33')][_0x1369('0x62')])?_0x26884e[_0x1369('0x33')][_0x1369('0x62')]:new Array(_0x26884e['query'][_0x1369('0x62')]);_0x132f99[_0x1369('0x4e')](function(_0x464096){_0x1b26ed['or'](_0x1369('0x4f'),'%,'+_0x464096+',%');});}if(_0x26884e[_0x1369('0x33')][_0x1369('0x63')]){var _0xc5c81f=_0x26884e['query'][_0x1369('0x63')][_0x1369('0x64')]('\x5c','\x5c\x5c')[_0x1369('0x64')](/'/g,'\x27\x27');if(_0xc5c81f[_0x1369('0x4c')]('\x20')['length']>0x1){_0x577889['or'](_0x1369('0x65'),qs[_0x1369('0x66')](_0xc5c81f),null);}else{if(qs[_0x1369('0x67')](_0xc5c81f)){_0x577889['or'](_0x1369('0x68'),_0xc5c81f+'%');_0x577889['or'](_0x1369('0x69'),_0xc5c81f+'%');_0x577889['or']('c.mobile\x20LIKE\x20?',_0xc5c81f+'%');_0x577889['or'](_0x1369('0x6a'),_0xc5c81f+'%');}else if(qs[_0x1369('0x6b')](_0xc5c81f)){_0x577889['or']('c.email\x20LIKE\x20?',_0xc5c81f+'%');}else{_0x577889['or'](_0x1369('0x6c'),'%'+_0xc5c81f+'%');_0x577889['or'](_0x1369('0x6d'),'%'+_0xc5c81f+'%');_0x577889['or']('c.email\x20LIKE\x20?','%'+_0xc5c81f+'%');}}}}_0x31e850[_0x1369('0x39')](_0x577889);_0x31e850[_0x1369('0x6e')](_0x1369('0x6f'));var _0x49d637={'type':db[_0x1369('0x70')][_0x1369('0x71')]['SELECT'],'raw':!![]};var _0x51d23b=_0x31e850[_0x1369('0x72')]()[_0x1369('0x3b')](_0x1369('0x6f'));if(_0x156522[_0x1369('0x73')]){_0x156522[_0x1369('0x73')][_0x1369('0x4e')](function(_0x203f6f){_0x31e850[_0x1369('0x73')]('c.'+_0x203f6f[0x0],_0x203f6f[0x1]===_0x1369('0x74')?![]:!![]);});}if(!_['isEmpty'](_0x132f99)){_0x31e850['having'](_0x1b26ed);_0x51d23b[_0x1369('0x39')](_0x1369('0x75'),_0x132f99);}BPromise[_0x1369('0x76')]()[_0x1369('0x22')](function(){if(!_0x58467f)return;if(_0x26884e[_0x1369('0x77')]['role']!==_0x1369('0x78'))return;if(!_[_0x1369('0x79')](_0x58467f['conditions'],[_0x1369('0x3b'),_0x1369('0x50')])){return _0x26884e['user'][_0x1369('0x7a')]({'attributes':['id'],'raw':!![]})['then'](function(_0x4bbdd9){if(_[_0x1369('0x7b')](_0x4bbdd9)){_0x51d23b[_0x1369('0x39')](_0x1369('0x7c'));_0x31e850[_0x1369('0x39')](_0x1369('0x7c'));}else{_0x51d23b['where'](_0x1369('0x5d'),_[_0x1369('0x4d')](_0x4bbdd9,'id'));_0x31e850[_0x1369('0x39')]('c.ListId\x20IN\x20?',_[_0x1369('0x4d')](_0x4bbdd9,'id'));}});}})[_0x1369('0x22')](function(){if(_0x26884e['user'][_0x1369('0x7d')]===_0x1369('0x78')&&!_0x58467f&&!_0x26884e[_0x1369('0x33')]['ListId'])return[];return db[_0x1369('0x7e')][_0x1369('0x33')](_0x51d23b[_0x1369('0x7f')](),_0x49d637);})[_0x1369('0x22')](function(_0x30e19f){_0x109e04[_0x1369('0x1e')]=_0x30e19f['length'];if(_0x109e04[_0x1369('0x1e')]===0x0)return[];return db[_0x1369('0x7e')][_0x1369('0x33')](_0x53e45e[_0x1369('0x7f')](),_0x49d637)['then'](function(_0x3a8b9f){_0x3ed85a=_['keyBy'](_0x3a8b9f,'id');_0x49d637=_[_0x1369('0x80')](_0x49d637,{'model':db[_0x1369('0x81')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x26884e[_0x1369('0x33')][_0x1369('0x37')]){_0x156522[_0x1369('0x36')]['forEach'](function(_0x2fdc3c){_0x31e850['field']('c.'+_0x2fdc3c);});}else{_0x31e850[_0x1369('0x3b')](_0x1369('0x6f'));_0x31e850[_0x1369('0x3b')](_0x1369('0x82'));_0x31e850[_0x1369('0x3b')](_0x1369('0x83'));_0x31e850[_0x1369('0x3b')]('c.phone');_0x31e850[_0x1369('0x3b')]('c.mobile');_0x31e850[_0x1369('0x3b')](_0x1369('0x84'));_0x31e850['field'](_0x1369('0x85'));_0x31e850['field'](_0x1369('0x86'));_0x31e850[_0x1369('0x3b')]('c.createdAt');_0x31e850[_0x1369('0x3b')]('c.deletedAt');_0x31e850['field']('c.CompanyId');_0x31e850[_0x1369('0x3b')](_0x1369('0x87'),_0x1369('0x88'));}if(_0x156522[_0x1369('0x1d')])_0x31e850[_0x1369('0x1d')](_0x156522[_0x1369('0x1d')]);if(_0x156522['offset'])_0x31e850['offset'](_0x156522[_0x1369('0x1b')]);return db[_0x1369('0x7e')][_0x1369('0x33')](_0x31e850[_0x1369('0x7f')](),_0x49d637);});})[_0x1369('0x22')](function(_0x143ae3){_0x143ae3[_0x1369('0x4e')](function(_0x545b0d){if(_0x545b0d[_0x1369('0x88')]){_0x545b0d[_0x1369('0x89')]=[];_0x545b0d[_0x1369('0x88')][_0x1369('0x4c')](',')[_0x1369('0x4e')](function(_0x1d80d6){_0x545b0d[_0x1369('0x89')][_0x1369('0x2d')](_0x3ed85a[_0x1d80d6]);});}delete _0x545b0d[_0x1369('0x88')];});_0x109e04[_0x1369('0x8a')]=_0x143ae3;return _0x109e04;})[_0x1369('0x22')](respondWithFilteredResult(_0x2ac244,_0x156522));})[_0x1369('0x8b')](handleError(_0x2ac244,null));};exports[_0x1369('0x23')]=function(_0xeb97e0,_0x14319d){return db[_0x1369('0x81')][_0x1369('0x49')]({'where':{'id':_0xeb97e0['params']['id']}})['then'](handleEntityNotFound(_0x14319d,null))['then'](removeEntity(_0x14319d,null))[_0x1369('0x8b')](handleError(_0x14319d,null));};exports[_0x1369('0x28')]=function(_0x9f8e4c,_0x193f2b){return db['CmContact'][_0x1369('0x28')]()[_0x1369('0x22')](function(_0x52cb10){delete _0x52cb10['tags'];for(var _0x36d986=0x0;_0x36d986<Object[_0x1369('0x29')](_0x52cb10)[_0x1369('0x2a')];_0x36d986++){var _0x2f1f71=Object[_0x1369('0x29')](_0x52cb10)[_0x36d986];if(!_[_0x1369('0x2b')](_0x2f1f71,_0x1369('0x2c'))){_0x52cb10[_0x2f1f71][_0x1369('0x8c')]=_0x2f1f71;_0x52cb10[_0x2f1f71][_0x1369('0x8d')]=_0x2f1f71;}}return _0x52cb10;})[_0x1369('0x22')](function(_0xb4df5b){var _0x18b66f={'where':{'$or':[{'ListId':_0x9f8e4c['query']['id']},{'ListId':null}]},'raw':!![]};return db[_0x1369('0x8e')][_0x1369('0x8f')](_0x18b66f)[_0x1369('0x22')](function(_0x2b4cd6){for(var _0x3650bb=0x0;_0x3650bb<_0x2b4cd6[_0x1369('0x2a')];_0x3650bb++){var _0x51428b='cf_'+_0x2b4cd6[_0x3650bb]['id'];_0xb4df5b[_0x51428b][_0x1369('0x8c')]=_0x51428b;_0xb4df5b[_0x51428b][_0x1369('0x8d')]=_0x2b4cd6[_0x3650bb]['alias'];_0xb4df5b[_0x51428b]['custom']={'type':_0x2b4cd6[_0x3650bb][_0x1369('0x31')],'values':_0x2b4cd6[_0x3650bb][_0x1369('0x90')]};}Object['keys'](_0xb4df5b)[_0x1369('0x4e')](function(_0x485bf9){if(!_0xb4df5b[_0x485bf9][_0x1369('0x59')](_0x1369('0x8c'))){delete _0xb4df5b[_0x485bf9];}});return _0xb4df5b;});})[_0x1369('0x22')](respondWithResult(_0x193f2b,null))[_0x1369('0x8b')](handleError(_0x193f2b,null));};exports['merge']=function(_0x328ced,_0x56ed43){var _0xffbbe3;var _0x104973;var _0x18bcd2;if(_0x328ced[_0x1369('0x91')]['id']){delete _0x328ced[_0x1369('0x91')]['id'];}return db['CmContact'][_0x1369('0x8f')]({'where':{'id':[_0x328ced['body']['to'],_0x328ced['body'][_0x1369('0x3f')]]}})['then'](function(_0x31bacc){if(_0x31bacc){if(_0x31bacc[_0x1369('0x2a')]!==0x2){return null;}_0x31bacc[0x0]=_0x31bacc[0x0]['get']({'plain':!![]});_0x31bacc[0x1]=_0x31bacc[0x1][_0x1369('0x92')]({'plain':!![]});delete _0x31bacc[0x0]['id'];delete _0x31bacc[0x1]['id'];return _[_0x1369('0x93')](_0x31bacc[0x0],_0x31bacc[0x1],function(_0x250074,_0x1ff33d){if(Array[_0x1369('0x61')](_0x1ff33d)&&!_0x1ff33d[_0x1369('0x2a')]){return _0x250074;}else if(!_0x1ff33d){return _0x250074;}});}})[_0x1369('0x22')](handleEntityNotFound(_0x56ed43,null))['then'](function(_0x1b67f8){if(_0x1b67f8){if(_0x1b67f8['tags']&&_[_0x1369('0x61')](_0x1b67f8[_0x1369('0x94')])){_0x1b67f8['tags']=_0x1b67f8[_0x1369('0x94')][_0x1369('0x95')]();}logger[_0x1369('0x96')](_0x1369('0x97'),_0x328ced[_0x1369('0x91')]['to'],_0x328ced['body'][_0x1369('0x3f')]);return db[_0x1369('0x98')][_0x1369('0x23')]({'where':{'ContactId':[_0x328ced[_0x1369('0x91')]['to'],_0x328ced[_0x1369('0x91')][_0x1369('0x3f')]]}})[_0x1369('0x22')](function(_0x5f202c){logger[_0x1369('0x96')](_0x1369('0x99'),_0x5f202c);return db[_0x1369('0x9a')]['destroy']({'where':{'ContactId':[_0x328ced[_0x1369('0x91')]['to'],_0x328ced[_0x1369('0x91')]['from']]}})[_0x1369('0x22')](function(_0x27221e){logger['info'](_0x1369('0x9b'),_0x27221e);return db[_0x1369('0x81')]['create'](_0x1b67f8);});});}})['then'](function(_0x26b1b9){if(_0x26b1b9){_0xffbbe3=_0x26b1b9;_0x104973={'ContactId':_0xffbbe3['id']};_0x18bcd2={'where':{'ContactId':[_0x328ced['body']['to'],_0x328ced[_0x1369('0x91')][_0x1369('0x3f')]]}};return db[_0x1369('0x9c')]['update'](_0x104973,_0x18bcd2);}})[_0x1369('0x22')](function(){if(_0xffbbe3){return db[_0x1369('0x9d')][_0x1369('0x9e')](_0x104973,_0x18bcd2);}})[_0x1369('0x22')](function(){if(_0xffbbe3){return db['ChatOfflineMessage'][_0x1369('0x9e')](_0x104973,_0x18bcd2);}})[_0x1369('0x22')](function(){if(_0xffbbe3){return db[_0x1369('0x9f')][_0x1369('0x9e')](_0x104973,_0x18bcd2);}})['then'](function(){if(_0xffbbe3){return db[_0x1369('0xa0')][_0x1369('0x9e')](_0x104973,_0x18bcd2);}})['then'](function(){if(_0xffbbe3){return db[_0x1369('0x9f')][_0x1369('0x9e')](_0x104973,_0x18bcd2);}})[_0x1369('0x22')](function(){if(_0xffbbe3){return db[_0x1369('0xa0')]['update'](_0x104973,_0x18bcd2);}})[_0x1369('0x22')](function(){if(_0xffbbe3){return db[_0x1369('0xa1')]['update'](_0x104973,_0x18bcd2);}})[_0x1369('0x22')](function(){if(_0xffbbe3){return db['SmsMessage']['update'](_0x104973,_0x18bcd2);}})[_0x1369('0x22')](function(){if(_0xffbbe3){return db[_0x1369('0xa2')][_0x1369('0x9e')](_0x104973,_0x18bcd2);}})[_0x1369('0x22')](function(){if(_0xffbbe3){return db[_0x1369('0xa3')][_0x1369('0x9e')](_0x104973,_0x18bcd2);}})[_0x1369('0x22')](function(){if(_0xffbbe3){return db[_0x1369('0xa4')]['update'](_0x104973,_0x18bcd2);}})[_0x1369('0x22')](function(){if(_0xffbbe3){return db[_0x1369('0xa5')][_0x1369('0x9e')](_0x104973,_0x18bcd2);}})[_0x1369('0x22')](function(){if(_0xffbbe3){return db[_0x1369('0xa6')][_0x1369('0x9e')](_0x104973,_0x18bcd2);}})[_0x1369('0x22')](function(){if(_0xffbbe3){return db[_0x1369('0xa7')][_0x1369('0x9e')](_0x104973,_0x18bcd2);}})[_0x1369('0x22')](function(){if(_0xffbbe3){return db[_0x1369('0xa8')][_0x1369('0x9e')](_0x104973,_0x18bcd2);}})['then'](function(){if(_0xffbbe3){return db[_0x1369('0xa9')][_0x1369('0x9e')](_0x104973,_0x18bcd2);}})['then'](function(){if(_0xffbbe3){return db['ChatQueueReport'][_0x1369('0x9e')](_0x104973,_0x18bcd2);}})['then'](function(){if(_0xffbbe3){return db[_0x1369('0xaa')][_0x1369('0x9e')](_0x104973,_0x18bcd2);}})[_0x1369('0x22')](function(){if(_0xffbbe3){return db[_0x1369('0xab')][_0x1369('0x9e')](_0x104973,_0x18bcd2);}})[_0x1369('0x22')](function(){if(_0xffbbe3){return db[_0x1369('0xac')]['update'](_0x104973,_0x18bcd2);}})[_0x1369('0x22')](function(){if(_0xffbbe3){return db['SmsQueueReport'][_0x1369('0x9e')](_0x104973,_0x18bcd2);}})[_0x1369('0x22')](function(){if(_0xffbbe3){return db[_0x1369('0xad')][_0x1369('0x9e')](_0x104973,_0x18bcd2);}})['then'](function(){if(_0xffbbe3){return db['WhatsappInteraction'][_0x1369('0x9e')](_0x104973,_0x18bcd2);}})[_0x1369('0x22')](function(){if(_0xffbbe3){return db[_0x1369('0xae')][_0x1369('0x9e')](_0x104973,_0x18bcd2);}})[_0x1369('0x22')](function(){if(_0xffbbe3){return db[_0x1369('0xaf')][_0x1369('0x9e')](_0x104973,_0x18bcd2);}})[_0x1369('0x22')](function(){if(_0xffbbe3){return db[_0x1369('0x81')][_0x1369('0x23')]({'where':{'id':[_0x328ced[_0x1369('0x91')]['to'],_0x328ced['body']['from']]}});}})[_0x1369('0x22')](function(){if(_0xffbbe3){return _0xffbbe3;}})[_0x1369('0x22')](respondWithResult(_0x56ed43,null))[_0x1369('0x8b')](handleError(_0x56ed43,null));};exports['create']=function(_0x409e0f,_0x2ed43f){return db[_0x1369('0x81')][_0x1369('0x28')]()[_0x1369('0x22')](function(_0x119ea6){if(_0x409e0f[_0x1369('0x91')][_0x1369('0x94')]&&_[_0x1369('0x61')](_0x409e0f[_0x1369('0x91')]['tags'])){if(_0x409e0f[_0x1369('0x91')][_0x1369('0x94')][_0x1369('0x2a')]){_0x409e0f[_0x1369('0x91')]['tags']=_0x409e0f[_0x1369('0x91')][_0x1369('0x94')][_0x1369('0x95')](';')+';';}else{_0x409e0f[_0x1369('0x91')][_0x1369('0x94')]=null;}}else{_0x409e0f['body'][_0x1369('0x94')]=null;}return db[_0x1369('0x81')]['create'](_0x409e0f[_0x1369('0x91')],{'fields':_[_0x1369('0x29')](_0x119ea6),'raw':!![]});})[_0x1369('0x22')](respondWithResult(_0x2ed43f,0xc9))[_0x1369('0x8b')](handleError(_0x2ed43f,null));};exports['bulkCreate']=function(_0x1a935d,_0xe5e605){var _0x223076=[];var _0x5c62d9=0x0;var _0x2526ac=0x0;var _0x242490=0x0;return db[_0x1369('0x81')][_0x1369('0x28')]()[_0x1369('0x22')](function(_0xd7c431){return BPromise[_0x1369('0xb0')](_0x1a935d[_0x1369('0x91')],function(_0x2323e7){var _0x3065d2={'where':{'$or':[]},'defaults':_0x2323e7,'fields':_[_0x1369('0x29')](_0xd7c431),'raw':!![]};if(_0x2323e7[_0x1369('0xb1')]){for(var _0x53c138=0x0;_0x53c138<_0x2323e7[_0x1369('0xb1')][_0x1369('0x2a')];_0x53c138++){var _0x4360a5={};_0x4360a5[_0x2323e7[_0x1369('0xb1')][_0x53c138]]=_0x2323e7[_0x2323e7[_0x1369('0xb1')][_0x53c138]];_0x3065d2['where'][_0x1369('0xb2')]['push'](_0x4360a5);}_0x3065d2[_0x1369('0x39')][_0x1369('0x5c')]=_0x2323e7[_0x1369('0x5c')];}return db[_0x1369('0x81')][_0x1369('0xb3')](_0x3065d2)[_0x1369('0xb4')](function(_0x3af700,_0x4156fb){if(_0x4156fb){_0x5c62d9++;}else{_0x242490++;}})[_0x1369('0x8b')](function(_0x8f9df){console[_0x1369('0x26')](_0x8f9df);_0x2526ac++;});});})[_0x1369('0x22')](function(_0x27df71){if(_0x27df71){return{'success':_0x5c62d9,'failure':_0x2526ac,'duplicates':_0x242490};}})[_0x1369('0x22')](respondWithResult(_0xe5e605,0xc9))[_0x1369('0x8b')](handleError(_0xe5e605,null));};exports['show']=function(_0x2706fc,_0x39f134,_0xa55d02){var _0x17bec4;return db[_0x1369('0x81')][_0x1369('0x28')]()['then'](function(_0x4a34e1){return db['CmContact'][_0x1369('0x49')]({'where':{'id':_0x2706fc[_0x1369('0xb5')]['id']},'include':[{'model':db[_0x1369('0x4a')],'as':'Tags','attributes':['id',_0x1369('0x3c'),_0x1369('0x3d')],'required':_0x2706fc[_0x1369('0x33')][_0x1369('0x62')]?!![]:![]}],'attributes':_[_0x1369('0x29')](_0x4a34e1)});})['then'](function(_0x28ae03){_0x17bec4=_0x28ae03['get']({'plain':!![]});var _0x275c4e={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x28ae03&&_0x28ae03[_0x1369('0x5c')]){if(_0x28ae03['ListId']){_0x275c4e['where'][_0x1369('0xb6')][_0x1369('0x2d')]({'ListId':{'$ne':_0x28ae03[_0x1369('0x5c')]}});}}return db[_0x1369('0x8e')][_0x1369('0x8f')](_0x275c4e);})['then'](function(_0x3c8772){return _[_0x1369('0xb7')](_0x17bec4,_['map'](_0x3c8772,function(_0x592eab){return util['format'](_0x1369('0xb8'),_0x592eab['id']);}));})[_0x1369('0x22')](handleEntityNotFound(_0x39f134,null))['then'](respondWithResult(_0x39f134,null))[_0x1369('0x8b')](handleError(_0x39f134,null));};exports[_0x1369('0x9e')]=function(_0x860988,_0x446a83){var _0x3127b2;if(_0x860988[_0x1369('0x91')]['id']){delete _0x860988['body']['id'];}return db[_0x1369('0x81')][_0x1369('0x49')]({'where':{'id':_0x860988['params']['id']}})[_0x1369('0x22')](handleEntityNotFound(_0x446a83,null))[_0x1369('0x22')](saveUpdates(_0x860988[_0x1369('0x91')],null))[_0x1369('0x22')](function(_0x6446b0){_0x3127b2=_0x6446b0;var _0x5155f8={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x6446b0&&_0x6446b0[_0x1369('0x5c')]){if(_0x6446b0[_0x1369('0x5c')]){_0x5155f8[_0x1369('0x39')][_0x1369('0xb6')][_0x1369('0x2d')]({'ListId':{'$ne':_0x6446b0['ListId']}});}}return db[_0x1369('0x8e')]['findAll'](_0x5155f8);})['then'](function(_0x24eb35){if(_0x24eb35){return _[_0x1369('0xb7')](_[_0x1369('0xb9')](_0x860988['body'],function(_0x373275,_0x1308bd){return _[_0x1369('0x2b')](_0x1308bd,_0x1369('0x2c'));}),_[_0x1369('0x4d')](_0x24eb35,function(_0x26bca1){return util[_0x1369('0xba')](_0x1369('0xb8'),_0x26bca1['id']);}));}})[_0x1369('0x22')](function(_0x7192f){if(_0x7192f&&!_[_0x1369('0x7b')](_0x7192f)){var _0x4a5ec0=squel[_0x1369('0x9e')]()[_0x1369('0xbb')](_0x1369('0xbc'))[_0x1369('0xbd')](_0x7192f)[_0x1369('0x39')](_0x1369('0xbe'),_0x860988[_0x1369('0xb5')]['id'])[_0x1369('0xbf')]();return db[_0x1369('0x7e')]['query'](_0x4a5ec0[_0x1369('0x57')],{'replacements':_0x4a5ec0['values']});}})[_0x1369('0x22')](function(){if(_0x860988[_0x1369('0x91')][_0x1369('0xc0')]&&_0x3127b2){return db[_0x1369('0x98')][_0x1369('0x9e')]({'phone':_0x860988[_0x1369('0x91')][_0x1369('0xc0')]},{'where':{'ContactId':_0x3127b2['id']}});}})[_0x1369('0x22')](function(){return _0x3127b2;})['then'](respondWithResult(_0x446a83,null))[_0x1369('0x8b')](handleError(_0x446a83,null));};exports['getTags']=function(_0x5f412b,_0x3ad6f3,_0x116cc5){var _0x12243b={};var _0x29d0bc={};var _0x373958;var _0x5ba371;return db[_0x1369('0x81')][_0x1369('0x2e')]({'where':{'id':_0x5f412b[_0x1369('0xb5')]['id']}})[_0x1369('0x22')](handleEntityNotFound(_0x3ad6f3,null))[_0x1369('0x22')](function(_0x17bd08){if(_0x17bd08){_0x373958=_0x17bd08;_0x29d0bc[_0x1369('0x32')]=_['keys'](db[_0x1369('0x4a')]['rawAttributes']);_0x29d0bc[_0x1369('0x33')]=_[_0x1369('0x29')](_0x5f412b[_0x1369('0x33')]);_0x29d0bc['filters']=_[_0x1369('0x35')](_0x29d0bc[_0x1369('0x32')],_0x29d0bc['query']);_0x12243b[_0x1369('0x36')]=_['intersection'](_0x29d0bc[_0x1369('0x32')],qs[_0x1369('0x37')](_0x5f412b[_0x1369('0x33')][_0x1369('0x37')]));_0x12243b['attributes']=_0x12243b[_0x1369('0x36')][_0x1369('0x2a')]?_0x12243b['attributes']:_0x29d0bc[_0x1369('0x32')];_0x12243b[_0x1369('0x73')]=qs['sort'](_0x5f412b[_0x1369('0x33')][_0x1369('0x38')]);_0x12243b[_0x1369('0x39')]=qs[_0x1369('0x34')](_[_0x1369('0xc1')](_0x5f412b['query'],_0x29d0bc['filters']));if(_0x5f412b['query'][_0x1369('0x63')]){_0x12243b['where']=_['merge'](_0x12243b[_0x1369('0x39')],{'$or':_['map'](_0x12243b[_0x1369('0x36')],function(_0x479661){var _0x4884d7={};_0x4884d7[_0x479661]={'$like':'%'+_0x5f412b[_0x1369('0x33')]['filter']+'%'};return _0x4884d7;})});}_0x12243b=_['merge']({},_0x12243b,_0x5f412b[_0x1369('0xc2')]);return _0x373958[_0x1369('0xc3')](_0x12243b);}})['then'](function(_0x128a55){if(_0x128a55){_0x5ba371=_0x128a55[_0x1369('0x2a')];if(!_0x5f412b['query'][_0x1369('0x59')](_0x1369('0xc4'))){_0x12243b['limit']=qs['limit'](_0x5f412b[_0x1369('0x33')][_0x1369('0x1d')]);_0x12243b['offset']=qs[_0x1369('0x1b')](_0x5f412b[_0x1369('0x33')][_0x1369('0x1b')]);}return _0x373958[_0x1369('0xc3')](_0x12243b);}})['then'](function(_0x13afe6){if(_0x13afe6){return _0x13afe6?{'count':_0x5ba371,'rows':_0x13afe6}:null;}})[_0x1369('0x22')](respondWithResult(_0x3ad6f3,null))[_0x1369('0x8b')](handleError(_0x3ad6f3,null));};exports['setTags']=function(_0x568404,_0x49b4a5,_0x247916){if(_0x568404[_0x1369('0x91')]['id']){delete _0x568404[_0x1369('0x91')]['id'];}return db['CmContact'][_0x1369('0x2e')]({'where':{'id':_0x568404[_0x1369('0xb5')]['id']}})[_0x1369('0x22')](handleEntityNotFound(_0x49b4a5,null))[_0x1369('0x22')](function(_0xad69d6){if(_0xad69d6){return _0xad69d6[_0x1369('0xc5')](_0x568404[_0x1369('0x91')][_0x1369('0xc6')]||[]);}return null;})[_0x1369('0x22')](respondWithResult(_0x49b4a5,null))['catch'](handleError(_0x49b4a5,null));};exports[_0x1369('0xc7')]=function(_0x3386f3,_0x339ce6,_0x2712e8){var _0x423562={'raw':![],'where':{}};var _0xf11ab0={};var _0x328883={'count':0x0,'rows':[]};return db[_0x1369('0x81')][_0x1369('0x2e')]({'where':{'id':_0x3386f3[_0x1369('0xb5')]['id']}})['then'](handleEntityNotFound(_0x339ce6,null))[_0x1369('0x22')](function(_0x58479d){if(_0x58479d){_0xf11ab0[_0x1369('0x32')]=_['keys'](db[_0x1369('0x98')][_0x1369('0xc8')]);_0xf11ab0[_0x1369('0x33')]=_[_0x1369('0x29')](_0x3386f3[_0x1369('0x33')]);_0xf11ab0['filters']=_[_0x1369('0x35')](_0xf11ab0[_0x1369('0x32')],_0xf11ab0['query']);_0x423562[_0x1369('0x36')]=_[_0x1369('0x35')](_0xf11ab0[_0x1369('0x32')],qs[_0x1369('0x37')](_0x3386f3[_0x1369('0x33')][_0x1369('0x37')]));_0x423562[_0x1369('0x36')]=_0x423562[_0x1369('0x36')][_0x1369('0x2a')]?_0x423562[_0x1369('0x36')]:_0xf11ab0[_0x1369('0x32')];if(!_0x3386f3[_0x1369('0x33')][_0x1369('0x59')]('nolimit')){_0x423562['limit']=qs['limit'](_0x3386f3[_0x1369('0x33')][_0x1369('0x1d')]);_0x423562[_0x1369('0x1b')]=qs[_0x1369('0x1b')](_0x3386f3[_0x1369('0x33')][_0x1369('0x1b')]);}_0x423562['order']=qs['sort'](_0x3386f3[_0x1369('0x33')][_0x1369('0x38')]);_0x423562[_0x1369('0x39')]=qs[_0x1369('0x34')](_[_0x1369('0xc1')](_0x3386f3[_0x1369('0x33')],_0xf11ab0[_0x1369('0x34')]));_0x423562['where'][_0x1369('0xc9')]=_0x58479d['id'];if(_0x3386f3[_0x1369('0x33')][_0x1369('0x63')]){_0x423562[_0x1369('0x39')]=_[_0x1369('0x80')](_0x423562[_0x1369('0x39')],{'$or':_[_0x1369('0x4d')](_0x423562[_0x1369('0x36')],function(_0x2f0043){var _0x259c22={};_0x259c22[_0x2f0043]={'$like':'%'+_0x3386f3[_0x1369('0x33')][_0x1369('0x63')]+'%'};return _0x259c22;})});}_0x423562=_[_0x1369('0x80')]({},_0x423562,_0x3386f3[_0x1369('0xc2')]);return db[_0x1369('0x98')]['count']({'where':_0x423562[_0x1369('0x39')]})[_0x1369('0x22')](function(_0x32f070){_0x328883[_0x1369('0x1e')]=_0x32f070;if(_0x3386f3[_0x1369('0x33')][_0x1369('0xca')]){_0x423562[_0x1369('0xcb')]=[{'all':!![]}];}return db[_0x1369('0x98')][_0x1369('0x8f')](_0x423562);})[_0x1369('0x22')](function(_0x176c88){_0x328883[_0x1369('0x8a')]=_0x176c88;return _0x328883;});}})['then'](respondWithFilteredResult(_0x339ce6,_0x423562))['catch'](handleError(_0x339ce6,null));};exports[_0x1369('0xcc')]=function(_0x4ed8c0,_0x4f57cb,_0x879ad9){var _0x4df0b0={'raw':!![],'where':{}};var _0x3e3836={};var _0x5f4fdb={'count':0x0,'rows':[]};return db[_0x1369('0x81')][_0x1369('0x2e')]({'where':{'id':_0x4ed8c0[_0x1369('0xb5')]['id']}})[_0x1369('0x22')](handleEntityNotFound(_0x4f57cb,null))[_0x1369('0x22')](function(_0x5b39ec){if(_0x5b39ec){_0x3e3836['model']=_[_0x1369('0x29')](db[_0x1369('0xa7')][_0x1369('0xc8')]);_0x3e3836[_0x1369('0x33')]=_['keys'](_0x4ed8c0[_0x1369('0x33')]);_0x3e3836[_0x1369('0x34')]=_[_0x1369('0x35')](_0x3e3836[_0x1369('0x32')],_0x3e3836[_0x1369('0x33')]);_0x4df0b0[_0x1369('0x36')]=_[_0x1369('0x35')](_0x3e3836[_0x1369('0x32')],qs[_0x1369('0x37')](_0x4ed8c0[_0x1369('0x33')][_0x1369('0x37')]));_0x4df0b0[_0x1369('0x36')]=_0x4df0b0['attributes'][_0x1369('0x2a')]?_0x4df0b0[_0x1369('0x36')]:_0x3e3836[_0x1369('0x32')];if(!_0x4ed8c0[_0x1369('0x33')][_0x1369('0x59')](_0x1369('0xc4'))){_0x4df0b0['limit']=qs[_0x1369('0x1d')](_0x4ed8c0['query'][_0x1369('0x1d')]);_0x4df0b0['offset']=qs[_0x1369('0x1b')](_0x4ed8c0['query'][_0x1369('0x1b')]);}_0x4df0b0[_0x1369('0x73')]=qs['sort'](_0x4ed8c0[_0x1369('0x33')][_0x1369('0x38')]);_0x4df0b0[_0x1369('0x39')]=qs[_0x1369('0x34')](_[_0x1369('0xc1')](_0x4ed8c0[_0x1369('0x33')],_0x3e3836[_0x1369('0x34')]));_0x4df0b0[_0x1369('0x39')][_0x1369('0xc9')]=_0x5b39ec['id'];if(_0x4ed8c0[_0x1369('0x33')][_0x1369('0x63')]){_0x4df0b0['where']=_['merge'](_0x4df0b0[_0x1369('0x39')],{'$or':_['map'](_0x4df0b0[_0x1369('0x36')],function(_0x178951){var _0x2e21e8={};_0x2e21e8[_0x178951]={'$like':'%'+_0x4ed8c0[_0x1369('0x33')][_0x1369('0x63')]+'%'};return _0x2e21e8;})});}_0x4df0b0=_[_0x1369('0x80')]({},_0x4df0b0,_0x4ed8c0[_0x1369('0xc2')]);return db[_0x1369('0xa7')][_0x1369('0x1e')]({'where':_0x4df0b0[_0x1369('0x39')]})[_0x1369('0x22')](function(_0x11d952){_0x5f4fdb['count']=_0x11d952;if(_0x4ed8c0['query'][_0x1369('0xca')]){_0x4df0b0['include']=[{'all':!![]}];}return db['CmHopperHistory'][_0x1369('0x8f')](_0x4df0b0);})[_0x1369('0x22')](function(_0x8ba67){_0x5f4fdb[_0x1369('0x8a')]=_0x8ba67;return _0x5f4fdb;});}})[_0x1369('0x22')](respondWithFilteredResult(_0x4f57cb,_0x4df0b0))['catch'](handleError(_0x4f57cb,null));};exports['getHopperFinals']=function(_0x2c05c3,_0x1a3790,_0x285a9e){var _0x21b991={'raw':!![],'where':{}};var _0x24e784={};var _0x476f03={'count':0x0,'rows':[]};return db[_0x1369('0x81')][_0x1369('0x2e')]({'where':{'id':_0x2c05c3[_0x1369('0xb5')]['id']}})[_0x1369('0x22')](handleEntityNotFound(_0x1a3790,null))[_0x1369('0x22')](function(_0x3b98ab){if(_0x3b98ab){_0x24e784[_0x1369('0x32')]=_['keys'](db[_0x1369('0xa6')]['rawAttributes']);_0x24e784[_0x1369('0x33')]=_[_0x1369('0x29')](_0x2c05c3[_0x1369('0x33')]);_0x24e784[_0x1369('0x34')]=_['intersection'](_0x24e784[_0x1369('0x32')],_0x24e784[_0x1369('0x33')]);_0x21b991[_0x1369('0x36')]=_[_0x1369('0x35')](_0x24e784[_0x1369('0x32')],qs['fields'](_0x2c05c3[_0x1369('0x33')][_0x1369('0x37')]));_0x21b991[_0x1369('0x36')]=_0x21b991['attributes'][_0x1369('0x2a')]?_0x21b991['attributes']:_0x24e784[_0x1369('0x32')];if(!_0x2c05c3[_0x1369('0x33')]['hasOwnProperty'](_0x1369('0xc4'))){_0x21b991['limit']=qs[_0x1369('0x1d')](_0x2c05c3[_0x1369('0x33')]['limit']);_0x21b991[_0x1369('0x1b')]=qs[_0x1369('0x1b')](_0x2c05c3[_0x1369('0x33')][_0x1369('0x1b')]);}_0x21b991[_0x1369('0x73')]=qs[_0x1369('0x38')](_0x2c05c3[_0x1369('0x33')][_0x1369('0x38')]);_0x21b991[_0x1369('0x39')]=qs[_0x1369('0x34')](_[_0x1369('0xc1')](_0x2c05c3[_0x1369('0x33')],_0x24e784['filters']));_0x21b991[_0x1369('0x39')][_0x1369('0xc9')]=_0x3b98ab['id'];if(_0x2c05c3[_0x1369('0x33')][_0x1369('0x63')]){_0x21b991[_0x1369('0x39')]=_[_0x1369('0x80')](_0x21b991[_0x1369('0x39')],{'$or':_[_0x1369('0x4d')](_0x21b991[_0x1369('0x36')],function(_0x1d3eaf){var _0x2e943b={};_0x2e943b[_0x1d3eaf]={'$like':'%'+_0x2c05c3[_0x1369('0x33')][_0x1369('0x63')]+'%'};return _0x2e943b;})});}_0x21b991=_[_0x1369('0x80')]({},_0x21b991,_0x2c05c3[_0x1369('0xc2')]);return db['CmHopperFinal'][_0x1369('0x1e')]({'where':_0x21b991[_0x1369('0x39')]})[_0x1369('0x22')](function(_0x3bcae0){_0x476f03[_0x1369('0x1e')]=_0x3bcae0;if(_0x2c05c3[_0x1369('0x33')][_0x1369('0xca')]){_0x21b991[_0x1369('0xcb')]=[{'all':!![]}];}return db['CmHopperFinal'][_0x1369('0x8f')](_0x21b991);})[_0x1369('0x22')](function(_0x37403b){_0x476f03[_0x1369('0x8a')]=_0x37403b;return _0x476f03;});}})[_0x1369('0x22')](respondWithFilteredResult(_0x1a3790,_0x21b991))[_0x1369('0x8b')](handleError(_0x1a3790,null));};exports[_0x1369('0xcd')]=function(_0x224dc2,_0x3a973a,_0x5838cf){var _0x4ab376={'raw':!![],'where':{}};var _0x3ba9bd={};var _0x2e4289={'count':0x0,'rows':[]};return db['CmContact'][_0x1369('0x2e')]({'where':{'id':_0x224dc2['params']['id']}})[_0x1369('0x22')](handleEntityNotFound(_0x3a973a,null))[_0x1369('0x22')](function(_0x40c454){if(_0x40c454){_0x3ba9bd[_0x1369('0x32')]=_[_0x1369('0x29')](db[_0x1369('0xad')][_0x1369('0xc8')]);_0x3ba9bd['query']=_[_0x1369('0x29')](_0x224dc2[_0x1369('0x33')]);_0x3ba9bd[_0x1369('0x34')]=_[_0x1369('0x35')](_0x3ba9bd[_0x1369('0x32')],_0x3ba9bd['query']);_0x4ab376[_0x1369('0x36')]=_[_0x1369('0x35')](_0x3ba9bd[_0x1369('0x32')],qs[_0x1369('0x37')](_0x224dc2[_0x1369('0x33')][_0x1369('0x37')]));_0x4ab376[_0x1369('0x36')]=_0x4ab376['attributes']['length']?_0x4ab376[_0x1369('0x36')]:_0x3ba9bd[_0x1369('0x32')];if(!_0x224dc2[_0x1369('0x33')][_0x1369('0x59')](_0x1369('0xc4'))){_0x4ab376['limit']=qs[_0x1369('0x1d')](_0x224dc2[_0x1369('0x33')][_0x1369('0x1d')]);_0x4ab376[_0x1369('0x1b')]=qs[_0x1369('0x1b')](_0x224dc2[_0x1369('0x33')][_0x1369('0x1b')]);}_0x4ab376['order']=qs[_0x1369('0x38')](_0x224dc2[_0x1369('0x33')][_0x1369('0x38')]);_0x4ab376['where']=qs[_0x1369('0x34')](_[_0x1369('0xc1')](_0x224dc2[_0x1369('0x33')],_0x3ba9bd['filters']));_0x4ab376[_0x1369('0x39')]['ContactId']=_0x40c454['id'];if(_0x224dc2['query'][_0x1369('0x63')]){_0x4ab376[_0x1369('0x39')]=_[_0x1369('0x80')](_0x4ab376[_0x1369('0x39')],{'$or':_['map'](_0x4ab376[_0x1369('0x36')],function(_0xbcdf02){var _0x118969={};_0x118969[_0xbcdf02]={'$like':'%'+_0x224dc2[_0x1369('0x33')][_0x1369('0x63')]+'%'};return _0x118969;})});}_0x4ab376=_[_0x1369('0x80')]({},_0x4ab376,_0x224dc2[_0x1369('0xc2')]);return db[_0x1369('0xad')][_0x1369('0x1e')]({'where':_0x4ab376[_0x1369('0x39')]})[_0x1369('0x22')](function(_0x3d405c){_0x2e4289[_0x1369('0x1e')]=_0x3d405c;if(_0x224dc2[_0x1369('0x33')][_0x1369('0xca')]){_0x4ab376[_0x1369('0xcb')]=[{'all':!![]}];}return db['JscriptySessionReport'][_0x1369('0x8f')](_0x4ab376);})[_0x1369('0x22')](function(_0x464c67){_0x2e4289[_0x1369('0x8a')]=_0x464c67;return _0x2e4289;});}})[_0x1369('0x22')](respondWithFilteredResult(_0x3a973a,_0x4ab376))[_0x1369('0x8b')](handleError(_0x3a973a,null));};exports['uploadCsv']=function(_0x2c141b,_0x36b5b4,_0x51a0b5){try{if(!_0x2c141b['body'][_0x1369('0x5c')]){throw new Error('No\x20ListId\x20specified');}if(!_0x2c141b[_0x1369('0x91')][_0x1369('0xce')]){throw new Error(_0x1369('0xcf'));}if(!_0x2c141b['body']['binding_values']){throw new Error(_0x1369('0xd0'));}if(!_0x2c141b[_0x1369('0x91')][_0x1369('0xd1')]){throw new Error(_0x1369('0xd2'));}var _0x4dd94f=_0x2c141b[_0x1369('0x91')][_0x1369('0xce')][_0x1369('0x4c')](',');var _0x49e3be=_0x2c141b['body'][_0x1369('0xd3')][_0x1369('0x4c')](',');if(!_0x4dd94f[_0x1369('0x2a')]||!_0x49e3be['length']||_0x4dd94f[_0x1369('0x2a')]!==_0x49e3be[_0x1369('0x2a')]){throw new Error('Incorrect\x20binding\x20parameters\x20passed!');}_0x2c141b['body'][_0x1369('0x37')]=_['zipObject'](_0x4dd94f,_0x49e3be);if(!_0x2c141b[_0x1369('0x91')][_0x1369('0x37')][_0x1369('0xc0')]){throw new Error(_0x1369('0xd4'));}if(!_0x2c141b['body'][_0x1369('0x37')]['firstName']){throw new Error(_0x1369('0xd5'));}var _0x13e61b=path[_0x1369('0x95')](config[_0x1369('0xd6')],_0x1369('0xd7'),_0x2c141b[_0x1369('0xd8')][_0x1369('0xd9')]);fs['chmodSync'](_0x13e61b,parseInt(_0x1369('0xda'),0x8));var _0x23266a=require(_0x1369('0xdb'))[_0x1369('0xdc')](path[_0x1369('0x95')](__dirname,'../../components/import/cm/csv'),[_0x13e61b,_0x2c141b[_0x1369('0x91')][_0x1369('0xce')],_0x2c141b[_0x1369('0x91')]['binding_values'],_0x2c141b['body'][_0x1369('0x5c')],_0x2c141b[_0x1369('0x91')][_0x1369('0xdd')],_0x2c141b[_0x1369('0x91')][_0x1369('0xb1')],_0x2c141b[_0x1369('0x91')][_0x1369('0xd1')]]);return _0x36b5b4['status'](0xc8)['json']({'message':'File\x20uploaded\x20correctly!','pid':_0x23266a[_0x1369('0xde')]});}catch(_0x4c09bc){return _0x36b5b4[_0x1369('0x19')](0x1f4)[_0x1369('0xdf')](_0x4c09bc);}};exports[_0x1369('0xe0')]=function(_0x1f1b49,_0x52a3ab,_0x9b510f){var _0x1b76aa=fs['createReadStream'](_0x1f1b49[_0x1369('0xd8')]['path']);Papa['parse'](_0x1b76aa,{'header':!![],'skipEmptyLines':!![],'preview':0x1,'complete':function(_0x385a6c){return _0x52a3ab[_0x1369('0x19')](0xc8)['json']({'file':_0x1f1b49['file'],'fields':_0x385a6c[_0x1369('0xe1')][_0x1369('0x37')]});}});};exports[_0x1369('0xe2')]=function(_0x431cfb,_0x38ec70,_0x5ec6c5){return db[_0x1369('0x50')][_0x1369('0x8f')]({'raw':!![],'attributes':['id'],'where':{'role':_0x1369('0x78')}})[_0x1369('0x22')](function(_0x11a62e){var _0x2e3a7e=![];if(!_0x431cfb[_0x1369('0x91')][_0x1369('0x5c')]){throw new Error(_0x1369('0xe3'));}if(!_0x431cfb[_0x1369('0x91')][_0x1369('0xe4')][_0x1369('0xc0')]){throw new Error(_0x1369('0xd4'));}if(!_0x431cfb[_0x1369('0x91')][_0x1369('0xe4')][_0x1369('0xe5')]){throw new Error('No\x20firstName\x20column\x20specified');}if(!_0x431cfb['body']['socket_timestamp']){throw new Error(_0x1369('0xd2'));}var _0x311831=require('child_process')[_0x1369('0xdc')](path[_0x1369('0x95')](__dirname,_0x1369('0xe6')),[_0x431cfb[_0x1369('0xb5')]['id'],JSON[_0x1369('0xe7')](_0x431cfb[_0x1369('0x91')]),JSON[_0x1369('0xe7')](_0x11a62e)]);_0x311831['on'](_0x1369('0xe8'),function(_0xd39b5c){_0x2e3a7e=!![];return _0x38ec70['status'](0xc8)['json']({'message':_0x1369('0xe9'),'pid':_0x311831[_0x1369('0xde')]});});_0x311831['on']('exit',function(_0x108219){if(_0x108219&&!_0x2e3a7e){return _0x38ec70[_0x1369('0x19')](0x1f4)[_0x1369('0x1a')]({'message':_0x1369('0xea'),'pid':_0x311831[_0x1369('0xde')]});}});})[_0x1369('0x8b')](handleError(_0x38ec70,null));};exports[_0x1369('0xeb')]=function(_0x513122,_0x27cfde){var _0x15492a=['mail',_0x1369('0xec'),_0x1369('0xed'),'openchannel',_0x1369('0xee'),'whatsapp',_0x1369('0xef')];var _0x14f037={'offset':0x0,'order':qs[_0x1369('0x38')](_0x1369('0xf0'))},_0x34302a={'count':0x0,'rows':[]};Promise['resolve']()[_0x1369('0x22')](function(){if(_0x513122['query'][_0x1369('0xf1')]){if(!_[_0x1369('0xf2')](_0x15492a,_0x513122[_0x1369('0x33')][_0x1369('0xf1')][_0x1369('0xf3')]())){throw new Error(_0x1369('0xf4'));}_0x15492a=[_0x513122[_0x1369('0x33')][_0x1369('0xf1')]['toLowerCase']()];}if(_0x513122['query'][_0x1369('0xf5')]){try{var _0xed7db5=JSON[_0x1369('0xf6')](_0x513122[_0x1369('0x33')][_0x1369('0xf5')]);if(!moment(_0xed7db5[_0x1369('0x3f')])[_0x1369('0xf7')]()){throw new Error(_0x1369('0xf8'));}if(!moment(_0xed7db5['to'])[_0x1369('0xf7')]()){throw new Error(_0x1369('0xf9'));}}catch(_0x546262){throw new Error(_0x1369('0xfa'));}}if(!_0x513122[_0x1369('0x33')]['hasOwnProperty'](_0x1369('0xc4'))){_0x14f037[_0x1369('0x1d')]=qs['limit'](_0x513122['query']['limit']||0xa);_0x14f037[_0x1369('0x1b')]=qs[_0x1369('0x1b')](_0x513122[_0x1369('0x33')][_0x1369('0x1b')]);}var _0x526f34=_0x15492a[_0x1369('0x4d')](function(_0x1067f8){if(_0x1067f8===_0x1369('0xef')){var _0x3fd453={'attributes':['id',_0x1369('0xfb'),_0x1369('0x31'),'source',_0x1369('0xfc'),_0x1369('0xfd'),_0x1369('0xfe'),_0x1369('0xff'),_0x1369('0x100'),_0x1369('0x101'),_0x1369('0x102'),_0x1369('0x103'),_0x1369('0x104'),_0x1369('0x105'),_0x1369('0x106')],'where':{'ContactId':_0x513122['params']['id']},'include':[{'model':db['User'],'as':'User','attributes':['id',_0x1369('0x3c'),_0x1369('0x107'),'alias']}],'order':[[_0x1369('0x102'),_0x1369('0x74')]]};if(_0x513122[_0x1369('0x33')][_0x1369('0xf5')]){_0x3fd453[_0x1369('0x39')]['createdAt']={'$gte':_0xed7db5[_0x1369('0x3f')],'$lte':_0xed7db5['to']};}return db[_0x1369('0xa9')][_0x1369('0x108')](_0x3fd453)[_0x1369('0x22')](function(_0x10a6b9){_0x34302a['count']+=_0x10a6b9[_0x1369('0x1e')];return _['map'](_0x10a6b9[_0x1369('0x8a')],function(_0xaba465){var _0x3c2674=_0xaba465[_0x1369('0x92')]({'plain':!![]});_0x3c2674['channel']=_0x1067f8;if(_0x3c2674[_0x1369('0x50')]){_0x3c2674[_0x1369('0x50')]={'id':_0x3c2674['User']['id'],'name':_0x3c2674[_0x1369('0x50')][_0x1369('0x3c')],'fullname':_0x3c2674[_0x1369('0x50')][_0x1369('0x107')],'alias':_0x3c2674[_0x1369('0x50')][_0x1369('0x109')]};}return _0x3c2674;});});}else{var _0x2f768a=_[_0x1369('0x10a')](_0x1067f8)+(_0x1067f8==='chat'?_0x1369('0x10b'):_0x1369('0x10c'));var _0x4864af={'attributes':['id','closed',_0x1369('0x10d'),_0x1369('0x102'),_0x1369('0x101'),_0x1369('0x10e'),'secondDisposition',_0x1369('0x10f'),_0x1369('0x106'),_0x2f768a+'Id'],'where':{'ContactId':_0x513122['params']['id']},'include':[{'model':db[_0x2f768a],'as':_0x1369('0x10c'),'attributes':['id',_0x1369('0x3c'),'key']},{'model':db[_0x1369('0x50')],'as':_0x1369('0x110'),'attributes':['id',_0x1369('0x3c'),_0x1369('0x107')]},{'model':db[_0x1369('0x4a')],'as':_0x1369('0x89'),'attributes':['id',_0x1369('0x3c'),'color'],'through':{'attributes':[]}}],'order':[[_0x1369('0x102'),'DESC']]};if(_0x513122[_0x1369('0x33')][_0x1369('0xf5')]){_0x4864af['where'][_0x1369('0x102')]={'$gte':_0xed7db5[_0x1369('0x3f')],'$lte':_0xed7db5['to']};}switch(_0x1067f8){case _0x1369('0xec'):_0x4864af[_0x1369('0x36')][_0x1369('0x2d')](_0x1369('0x111'),_0x1369('0x112'),_0x1369('0x113'),_0x1369('0x114'),_0x1369('0x115'),_0x1369('0x116'),_0x1369('0x117'),_0x1369('0x118'),'referer');break;case'mail':_0x4864af['attributes']['push'](_0x1369('0x119'),_0x1369('0x11a'));break;case _0x1369('0x11b'):_0x4864af[_0x1369('0x36')][_0x1369('0x2d')]('externalUrl',_0x1369('0x11c'));break;}return db[_[_0x1369('0x10a')](_0x1067f8)+_0x1369('0x11d')][_0x1369('0x108')](_0x4864af)[_0x1369('0x22')](function(_0x985f6c){_0x34302a['count']+=_0x985f6c[_0x1369('0x1e')];return _[_0x1369('0x4d')](_0x985f6c[_0x1369('0x8a')],function(_0x57bc76){var _0xdbf148=_0x57bc76['get']({'plain':!![]});_0xdbf148[_0x1369('0xf1')]=_0x1067f8;if(_0xdbf148[_0x1369('0x110')]){_0xdbf148[_0x1369('0x110')]={'id':_0xdbf148[_0x1369('0x110')]['id'],'name':_0xdbf148[_0x1369('0x110')][_0x1369('0x3c')],'fullname':_0xdbf148['Owner'][_0x1369('0x107')]};}return _0xdbf148;});});}});return Promise['all'](_0x526f34);})[_0x1369('0x22')](function(_0x312679){return _(_0x312679)[_0x1369('0x11e')]()[_0x1369('0x11f')](_0x1369('0x102'))[_0x1369('0x120')]()[_0x1369('0x4b')]();})[_0x1369('0x22')](function(_0x48f5f6){_0x34302a[_0x1369('0x8a')]=_0x14f037[_0x1369('0x1d')]?_0x48f5f6['slice'](_0x14f037['offset'],_0x14f037['offset']+_0x14f037[_0x1369('0x1d')]):_0x48f5f6;return _0x34302a;})[_0x1369('0x22')](respondWithFilteredResult(_0x27cfde,_0x14f037))[_0x1369('0x8b')](handleError(_0x27cfde,null));};
\ No newline at end of file
+var _0x31b9=['having','resolve','user','agent','some','User','getLists','c.ListId\x20IS\x20NULL','role','sequelize','toString','merge','CmContact','c.firstName','c.lastName','c.phone','c.mobile','c.fax','c.email','c.ListId','c.createdAt','c.deletedAt','c.CompanyId','TagIds','Tags','rows','catch','destroy','params','describe','tags','analytics','findAll','columnName','alias','custom','values','body','from','get','mergeWith','join','info','[CmContact][merge]\x20to\x20%s\x20from\x20%s','CmHopper','[CmContact][merge][destroy][CmHopper],\x20%s','[CmContact][merge][destroy][CmHopperBlack],\x20%s','create','ChatMessage','MailInteraction','MailMessage','SmsInteraction','SmsMessage','FaxInteraction','FaxMessage','OpenchannelInteraction','OpenchannelMessage','CmHopperFinal','CmHopperHistory','ReportAgentPreview','VoiceCallReport','FaxQueueReport','MailQueueReport','OpenchannelQueueReport','SmsQueueReport','JscriptySessionReport','WhatsappInteraction','WhatsappMessage','WhatsappQueueReport','bulkCreate','duplicates','$or','findOrCreate','spread','show','Tag','name','$and','CmCustomField','omit','format','pickBy','cf_%d','setFields','id\x20=\x20?','toParam','phone','getTags','findOne','rawAttributes','options','setTags','ids','getHoppers','ContactId','includeAll','include','getHopperHistories','getHopperFinals','getJscriptySessions','uploadCsv','No\x20ListId\x20specified','binding_keys','binding_values','No\x20association\x20values\x20specified!','Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed','Incorrect\x20binding\x20parameters\x20passed!','zipObject','No\x20phone\x20column\x20specified','firstName','No\x20firstName\x20column\x20specified','root','file','chmodSync','0777','child_process','fork','../../components/import/cm/csv','CompanyId','socket_timestamp','pid','createReadStream','parse','meta','import','binding','../../components/import/cm/csv2','stringify','message','start\x20child\x20process\x20correctly!','exit','error\x20child\x20process','getJourney','mail','chat','sms','openchannel','fax','whatsapp','voice','channel','toLowerCase','range','isValid','Invalid\x20date\x20for\x20range\x20from\x20filter','Invalid\x20date\x20for\x20range\x20to\x20filter','Invalid\x20createdAt\x20filter','uniqueid','source','destination','callerid','endtime','note','createdAt','userDisposition','userSecondDisposition','userThirdDisposition','fullname','startCase','Website','closed','disposition','secondDisposition','UserId','Account','key','DESC','browserName','customerPort','deviceModel','osName','ratingMessage','ratingType','ratingValue','subject','substatus','externalUrl','Owner','sortBy','slice','util','path','lodash','squel','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/logger','../../config/environment','../../mysqldb','redis','defaults','localhost','./cmContact.socket','register','status','json','offset','undefined','limit','count','Content-Range','update','then','end','sendStatus','stack','send','index','keys','length','startsWith','cf_','push','trimStart','all','fieldType','model','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','select','field','color','tools_tags','cm_contacts','left_join','cm_user_has_contacts','uc.CmContactId\x20=\x20c.id','ct.CmContactId\x20=\x20c.id','t.id\x20=\x20ct.TagId','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','and','dateOfBirth','datetime','castTo','DATE','buildExpression','type','text','start','filter','isNil','Contact','isEmpty','ListId','c.ListId\x20IN\x20?','concat','\x20=\x20?','tag','isArray','replace','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','c.id\x20LIKE\x20?','c.phone\x20LIKE\x20?','c.mobile\x20LIKE\x20?','c.fax\x20LIKE\x20?','isEmail','c.email\x20LIKE\x20?','c.firstName\x20LIKE\x20?','c.lastName\x20LIKE\x20?','group','c.id','Sequelize','SELECT','order'];(function(_0x420f2a,_0x2cc58d){var _0x28f802=function(_0x3329cc){while(--_0x3329cc){_0x420f2a['push'](_0x420f2a['shift']());}};_0x28f802(++_0x2cc58d);}(_0x31b9,0xb4));var _0x931b=function(_0x48428a,_0x5aa71a){_0x48428a=_0x48428a-0x0;var _0x1bf522=_0x31b9[_0x48428a];return _0x1bf522;};'use strict';var moment=require('moment');var BPromise=require('bluebird');var util=require(_0x931b('0x0'));var path=require(_0x931b('0x1'));var fs=require('fs');var _=require(_0x931b('0x2'));var squel=require(_0x931b('0x3'));var Papa=require(_0x931b('0x4'));var Redis=require(_0x931b('0x5'));var qs=require('../../components/parsers/qs');var as=require(_0x931b('0x6'));var logger=require(_0x931b('0x7'))('api');var config=require(_0x931b('0x8'));var db=require(_0x931b('0x9'))['db'];config[_0x931b('0xa')]=_[_0x931b('0xb')](config[_0x931b('0xa')],{'host':_0x931b('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x931b('0xa')]));require(_0x931b('0xd'))[_0x931b('0xe')](socket);function respondWithResult(_0x4e50f5,_0x302253){_0x302253=_0x302253||0xc8;return function(_0x512cd6){if(_0x512cd6){return _0x4e50f5[_0x931b('0xf')](_0x302253)[_0x931b('0x10')](_0x512cd6);}};}function respondWithFilteredResult(_0x25ed1f,_0x4343a9){return function(_0x2b57fd){if(_0x2b57fd){var _0x13b7f8=typeof _0x4343a9[_0x931b('0x11')]===_0x931b('0x12')&&typeof _0x4343a9[_0x931b('0x13')]===_0x931b('0x12');var _0x125dd2=_0x2b57fd[_0x931b('0x14')];var _0x2189ee=_0x13b7f8?0x0:_0x4343a9['offset'];var _0x519904=_0x13b7f8?_0x2b57fd['count']:_0x4343a9[_0x931b('0x11')]+_0x4343a9['limit'];var _0x43f6dd;if(_0x519904>=_0x125dd2){_0x519904=_0x125dd2;_0x43f6dd=0xc8;}else{_0x43f6dd=0xce;}_0x25ed1f[_0x931b('0xf')](_0x43f6dd);return _0x25ed1f['set'](_0x931b('0x15'),_0x2189ee+'-'+_0x519904+'/'+_0x125dd2)[_0x931b('0x10')](_0x2b57fd);}return null;};}function saveUpdates(_0x19c35b){return function(_0x37c140){if(_0x37c140){return _0x37c140[_0x931b('0x16')](_0x19c35b)[_0x931b('0x17')](function(_0x51dc1e){return _0x51dc1e;});}return null;};}function removeEntity(_0x1c781f){return function(_0x5d5de5){if(_0x5d5de5){return _0x5d5de5['destroy']()[_0x931b('0x17')](function(){_0x1c781f['status'](0xcc)[_0x931b('0x18')]();});}};}function handleEntityNotFound(_0x3b6214){return function(_0x13ee7a){if(!_0x13ee7a){_0x3b6214[_0x931b('0x19')](0x194);}return _0x13ee7a;};}function handleError(_0x448c20,_0x4b0858){_0x4b0858=_0x4b0858||0x1f4;return function(_0x5a4042){logger['error'](_0x5a4042[_0x931b('0x1a')]);if(_0x5a4042['name']){delete _0x5a4042['name'];}_0x448c20[_0x931b('0xf')](_0x4b0858)[_0x931b('0x1b')](_0x5a4042);};}exports[_0x931b('0x1c')]=function(_0x1d8627,_0x404f70){var _0x43a121={},_0x558a4e={},_0x499c62={'count':0x0,'rows':[]};return db['CmContact']['describe']()[_0x931b('0x17')](function(_0x3e7e1a){var _0x3f9bba=[];for(var _0x686724=0x0;_0x686724<Object[_0x931b('0x1d')](_0x3e7e1a)[_0x931b('0x1e')];_0x686724++){var _0x36dc59=Object[_0x931b('0x1d')](_0x3e7e1a)[_0x686724];if(_[_0x931b('0x1f')](_0x36dc59,_0x931b('0x20'))){_0x3f9bba[_0x931b('0x21')](db['CmCustomField']['findOne']({'where':{'id':_[_0x931b('0x22')](_0x36dc59,'cf_')},'raw':!![]}));}}return BPromise[_0x931b('0x23')](_0x3f9bba)[_0x931b('0x17')](function(_0x181a59){for(var _0x1fa932=0x0;_0x1fa932<_0x181a59[_0x931b('0x1e')];_0x1fa932++){if(_0x181a59[_0x1fa932]){var _0x5f44df=_0x931b('0x20')+_0x181a59[_0x1fa932]['id'];var _0x43ef1f=_0x3e7e1a[_0x5f44df];_0x43ef1f[_0x931b('0x24')]=_0x181a59[_0x1fa932]['type'];}}return _0x3e7e1a;});})['then'](function(_0x256bcd){_0x558a4e[_0x931b('0x25')]=_['keys'](_0x256bcd);_0x558a4e[_0x931b('0x26')]=_[_0x931b('0x1d')](_0x1d8627[_0x931b('0x26')]);_0x558a4e[_0x931b('0x27')]=_[_0x931b('0x28')](_0x558a4e[_0x931b('0x25')],_0x558a4e['query']);_0x43a121[_0x931b('0x29')]=_[_0x931b('0x28')](_0x558a4e[_0x931b('0x25')],qs[_0x931b('0x2a')](_0x1d8627[_0x931b('0x26')][_0x931b('0x2a')]));_0x43a121[_0x931b('0x29')]=_0x43a121[_0x931b('0x29')]['length']?_0x43a121[_0x931b('0x29')]:_0x558a4e['model'];if(!_0x1d8627[_0x931b('0x26')][_0x931b('0x2b')](_0x931b('0x2c'))){_0x43a121[_0x931b('0x13')]=qs[_0x931b('0x13')](_0x1d8627[_0x931b('0x26')][_0x931b('0x13')]);_0x43a121[_0x931b('0x11')]=qs[_0x931b('0x11')](_0x1d8627[_0x931b('0x26')][_0x931b('0x11')]);}_0x43a121['order']=qs[_0x931b('0x2d')](_0x1d8627[_0x931b('0x26')][_0x931b('0x2d')]);_0x43a121[_0x931b('0x2e')]=qs['filters'](_[_0x931b('0x2f')](_0x1d8627[_0x931b('0x26')],_0x558a4e[_0x931b('0x27')]),_0x256bcd);var _0x178f33=[];var _0x2cfa8b=squel[_0x931b('0x30')]()[_0x931b('0x31')]('id')[_0x931b('0x31')]('name')['field'](_0x931b('0x32'))['from'](_0x931b('0x33'));var _0x58e6c8=squel[_0x931b('0x30')]()['from'](_0x931b('0x34'),'c')[_0x931b('0x35')](_0x931b('0x36'),'uc',_0x931b('0x37'))[_0x931b('0x35')]('cm_contact_has_tags','ct',_0x931b('0x38'))['left_join'](_0x931b('0x33'),'t',_0x931b('0x39'))[_0x931b('0x2e')](_0x931b('0x3a'));var _0x5b4050=squel[_0x931b('0x3b')]();var _0x57b28b=[];var _0xc84408=squel[_0x931b('0x3b')]();var _0x3998a6;if(_0x1d8627['query'][_0x931b('0x3c')]){_0x3998a6=as[_0x931b('0x3d')](_0x1d8627[_0x931b('0x26')][_0x931b('0x3c')]);var _0x558021=_0x3998a6[_0x931b('0x3e')];for(var _0x43e6ea=0x0;_0x43e6ea<_0x3998a6['conditions'][_0x931b('0x1e')];_0x43e6ea++){var _0x33be6c=_0x3998a6[_0x931b('0x3f')][_0x43e6ea];var _0x3713dc='c';var _0xeb01f0=_(_0x256bcd)[_0x931b('0x1d')]()[_0x931b('0x40')](function(_0x3586a6){return _0x3586a6===_0x33be6c[_0x931b('0x31')];});if(_0xeb01f0)_0xeb01f0=_0x256bcd[_0x33be6c[_0x931b('0x31')]];if(!_0xeb01f0){if(_0x33be6c['field']==='Tag'){var _0x56db78=_0x33be6c[_0x931b('0x41')][_0x931b('0x42')](',')[_0x931b('0x43')](function(_0x1a6b0d){return Number(_0x1a6b0d);});_0x56db78[_0x931b('0x44')](function(_0x37e1a9){_0xc84408['or'](_0x931b('0x45'),'%,'+_0x37e1a9+',%');});_0x57b28b=_[_0x931b('0x46')](_0x57b28b,_0x56db78);}else if(_0x33be6c['field']==='User'){_0x5b4050[_0x931b('0x47')]('uc.UserId\x20=\x20?',_0x33be6c['value']);}}else{if(_0x33be6c['field']===_0x931b('0x48')||_0xeb01f0[_0x931b('0x24')]===_0x931b('0x49'))_0x33be6c[_0x931b('0x4a')]=_0x931b('0x4b');var _0x50b13d=as[_0x931b('0x4c')](_0x3713dc,_0xeb01f0[_0x931b('0x4d')],_0x33be6c);_0x5b4050[_0x558021](_0x50b13d[_0x931b('0x4e')],_0x50b13d[_0x931b('0x41')][_0x931b('0x4f')],_0x50b13d[_0x931b('0x41')][_0x931b('0x18')]);}}}else{var _0x2c3d8e=_(Object[_0x931b('0x1d')](_0x1d8627[_0x931b('0x26')]))[_0x931b('0x43')](function(_0x59cc82){return _0x256bcd[_0x931b('0x2b')](_0x59cc82)?_0x59cc82:undefined;})[_0x931b('0x50')](function(_0x55b575){return!_[_0x931b('0x51')](_0x55b575);})['value']();if(_0x1d8627[_0x931b('0x26')][_0x931b('0x52')])_0x2c3d8e[_0x931b('0x21')](_0x931b('0x52'));if(!_[_0x931b('0x53')](_0x2c3d8e)){_0x2c3d8e[_0x931b('0x44')](function(_0x48d289){if(_0x48d289===_0x931b('0x54')){_0x58e6c8[_0x931b('0x2e')](_0x931b('0x55'),[][_0x931b('0x56')](_0x1d8627[_0x931b('0x26')][_0x48d289]));}else if(_0x48d289===_0x931b('0x52')){var _0x1f3b1b='%'+_0x1d8627['query'][_0x48d289]+'%';_0x58e6c8[_0x931b('0x2e')]('CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?',_0x1f3b1b);}else{_0x58e6c8[_0x931b('0x2e')]('c.'+_0x48d289+_0x931b('0x57'),_0x1d8627['query'][_0x48d289]);}});}if(_0x1d8627[_0x931b('0x26')][_0x931b('0x58')]){_0x57b28b=_[_0x931b('0x59')](_0x1d8627[_0x931b('0x26')][_0x931b('0x58')])?_0x1d8627[_0x931b('0x26')]['tag']:new Array(_0x1d8627[_0x931b('0x26')]['tag']);_0x57b28b[_0x931b('0x44')](function(_0x136476){_0xc84408['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x136476+',%');});}if(_0x1d8627['query'][_0x931b('0x50')]){var _0x25cf76=_0x1d8627[_0x931b('0x26')][_0x931b('0x50')][_0x931b('0x5a')]('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(_0x25cf76[_0x931b('0x42')]('\x20')[_0x931b('0x1e')]>0x1){_0x5b4050['or'](_0x931b('0x5b'),qs[_0x931b('0x5c')](_0x25cf76),null);}else{if(qs['isNumeric'](_0x25cf76)){_0x5b4050['or'](_0x931b('0x5d'),_0x25cf76+'%');_0x5b4050['or'](_0x931b('0x5e'),_0x25cf76+'%');_0x5b4050['or'](_0x931b('0x5f'),_0x25cf76+'%');_0x5b4050['or'](_0x931b('0x60'),_0x25cf76+'%');}else if(qs[_0x931b('0x61')](_0x25cf76)){_0x5b4050['or'](_0x931b('0x62'),_0x25cf76+'%');}else{_0x5b4050['or'](_0x931b('0x63'),'%'+_0x25cf76+'%');_0x5b4050['or'](_0x931b('0x64'),'%'+_0x25cf76+'%');_0x5b4050['or'](_0x931b('0x62'),'%'+_0x25cf76+'%');}}}}_0x58e6c8[_0x931b('0x2e')](_0x5b4050);_0x58e6c8[_0x931b('0x65')](_0x931b('0x66'));var _0xf5f82={'type':db[_0x931b('0x67')]['QueryTypes'][_0x931b('0x68')],'raw':!![]};var _0x2225b1=_0x58e6c8['clone']()['field'](_0x931b('0x66'));if(_0x43a121[_0x931b('0x69')]){_0x43a121['order'][_0x931b('0x44')](function(_0x84067d){_0x58e6c8['order']('c.'+_0x84067d[0x0],_0x84067d[0x1]==='DESC'?![]:!![]);});}if(!_['isEmpty'](_0x57b28b)){_0x58e6c8[_0x931b('0x6a')](_0xc84408);_0x2225b1[_0x931b('0x2e')]('t.id\x20IN\x20?',_0x57b28b);}BPromise[_0x931b('0x6b')]()[_0x931b('0x17')](function(){if(!_0x3998a6)return;if(_0x1d8627[_0x931b('0x6c')]['role']!==_0x931b('0x6d'))return;if(!_[_0x931b('0x6e')](_0x3998a6[_0x931b('0x3f')],['field',_0x931b('0x6f')])){return _0x1d8627[_0x931b('0x6c')][_0x931b('0x70')]({'attributes':['id'],'raw':!![]})[_0x931b('0x17')](function(_0x1706a0){if(_['isEmpty'](_0x1706a0)){_0x2225b1[_0x931b('0x2e')](_0x931b('0x71'));_0x58e6c8['where']('c.ListId\x20IS\x20NULL');}else{_0x2225b1[_0x931b('0x2e')](_0x931b('0x55'),_[_0x931b('0x43')](_0x1706a0,'id'));_0x58e6c8['where'](_0x931b('0x55'),_[_0x931b('0x43')](_0x1706a0,'id'));}});}})[_0x931b('0x17')](function(){if(_0x1d8627[_0x931b('0x6c')][_0x931b('0x72')]==='agent'&&!_0x3998a6&&!_0x1d8627[_0x931b('0x26')][_0x931b('0x54')])return[];return db[_0x931b('0x73')][_0x931b('0x26')](_0x2225b1[_0x931b('0x74')](),_0xf5f82);})['then'](function(_0x4b428c){_0x499c62[_0x931b('0x14')]=_0x4b428c[_0x931b('0x1e')];if(_0x499c62['count']===0x0)return[];return db[_0x931b('0x73')]['query'](_0x2cfa8b[_0x931b('0x74')](),_0xf5f82)[_0x931b('0x17')](function(_0xdaa2b0){_0x178f33=_['keyBy'](_0xdaa2b0,'id');_0xf5f82=_[_0x931b('0x75')](_0xf5f82,{'model':db[_0x931b('0x76')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x1d8627[_0x931b('0x26')][_0x931b('0x2a')]){_0x43a121[_0x931b('0x29')][_0x931b('0x44')](function(_0x1cc6ba){_0x58e6c8['field']('c.'+_0x1cc6ba);});}else{_0x58e6c8[_0x931b('0x31')](_0x931b('0x66'));_0x58e6c8[_0x931b('0x31')](_0x931b('0x77'));_0x58e6c8[_0x931b('0x31')](_0x931b('0x78'));_0x58e6c8[_0x931b('0x31')](_0x931b('0x79'));_0x58e6c8[_0x931b('0x31')](_0x931b('0x7a'));_0x58e6c8[_0x931b('0x31')](_0x931b('0x7b'));_0x58e6c8[_0x931b('0x31')](_0x931b('0x7c'));_0x58e6c8['field'](_0x931b('0x7d'));_0x58e6c8[_0x931b('0x31')](_0x931b('0x7e'));_0x58e6c8[_0x931b('0x31')](_0x931b('0x7f'));_0x58e6c8[_0x931b('0x31')](_0x931b('0x80'));_0x58e6c8[_0x931b('0x31')]('GROUP_CONCAT(DISTINCT\x20t.id)',_0x931b('0x81'));}if(_0x43a121[_0x931b('0x13')])_0x58e6c8['limit'](_0x43a121['limit']);if(_0x43a121[_0x931b('0x11')])_0x58e6c8['offset'](_0x43a121[_0x931b('0x11')]);return db[_0x931b('0x73')]['query'](_0x58e6c8['toString'](),_0xf5f82);});})[_0x931b('0x17')](function(_0x4b2d39){_0x4b2d39['forEach'](function(_0x3c4503){if(_0x3c4503[_0x931b('0x81')]){_0x3c4503[_0x931b('0x82')]=[];_0x3c4503[_0x931b('0x81')][_0x931b('0x42')](',')['forEach'](function(_0x287708){_0x3c4503[_0x931b('0x82')][_0x931b('0x21')](_0x178f33[_0x287708]);});}delete _0x3c4503[_0x931b('0x81')];});_0x499c62[_0x931b('0x83')]=_0x4b2d39;return _0x499c62;})[_0x931b('0x17')](respondWithFilteredResult(_0x404f70,_0x43a121));})[_0x931b('0x84')](handleError(_0x404f70,null));};exports[_0x931b('0x85')]=function(_0x29ea2d,_0x4942ec){return db[_0x931b('0x76')][_0x931b('0x40')]({'where':{'id':_0x29ea2d[_0x931b('0x86')]['id']}})['then'](handleEntityNotFound(_0x4942ec,null))[_0x931b('0x17')](removeEntity(_0x4942ec,null))[_0x931b('0x84')](handleError(_0x4942ec,null));};exports[_0x931b('0x87')]=function(_0x4ef21b,_0x44794b){return db[_0x931b('0x76')][_0x931b('0x87')]()['then'](function(_0x2247c2){delete _0x2247c2[_0x931b('0x88')];for(var _0x3f70f1=0x0;_0x3f70f1<Object[_0x931b('0x1d')](_0x2247c2)[_0x931b('0x1e')];_0x3f70f1++){var _0x199531=Object[_0x931b('0x1d')](_0x2247c2)[_0x3f70f1];if(!_[_0x931b('0x1f')](_0x199531,_0x931b('0x20'))){_0x2247c2[_0x199531]['columnName']=_0x199531;_0x2247c2[_0x199531]['displayName']=_0x199531;}}return _0x2247c2;})['then'](function(_0x500f14){var _0x351e56={'where':Boolean(_0x4ef21b[_0x931b('0x26')][_0x931b('0x89')])===!![]?undefined:{'$or':[{'ListId':_0x4ef21b[_0x931b('0x26')]['id']},{'ListId':null}]},'raw':!![]};return db['CmCustomField'][_0x931b('0x8a')](_0x351e56)['then'](function(_0x8dfad8){for(var _0x3b4138=0x0;_0x3b4138<_0x8dfad8['length'];_0x3b4138++){var _0x59e8e9='cf_'+_0x8dfad8[_0x3b4138]['id'];_0x500f14[_0x59e8e9][_0x931b('0x8b')]=_0x59e8e9;_0x500f14[_0x59e8e9]['displayName']=_0x8dfad8[_0x3b4138][_0x931b('0x8c')];_0x500f14[_0x59e8e9][_0x931b('0x8d')]={'type':_0x8dfad8[_0x3b4138][_0x931b('0x4d')],'values':_0x8dfad8[_0x3b4138][_0x931b('0x8e')]};}Object[_0x931b('0x1d')](_0x500f14)['forEach'](function(_0xef913b){if(!_0x500f14[_0xef913b][_0x931b('0x2b')]('columnName')){delete _0x500f14[_0xef913b];}});return _0x500f14;});})['then'](respondWithResult(_0x44794b,null))[_0x931b('0x84')](handleError(_0x44794b,null));};exports['merge']=function(_0x348254,_0x2ec46e){var _0x5bc48d;var _0x2b2e90;var _0x1c7554;if(_0x348254[_0x931b('0x8f')]['id']){delete _0x348254['body']['id'];}return db[_0x931b('0x76')]['findAll']({'where':{'id':[_0x348254[_0x931b('0x8f')]['to'],_0x348254[_0x931b('0x8f')][_0x931b('0x90')]]}})[_0x931b('0x17')](function(_0x5b319c){if(_0x5b319c){if(_0x5b319c[_0x931b('0x1e')]!==0x2){return null;}_0x5b319c[0x0]=_0x5b319c[0x0][_0x931b('0x91')]({'plain':!![]});_0x5b319c[0x1]=_0x5b319c[0x1][_0x931b('0x91')]({'plain':!![]});delete _0x5b319c[0x0]['id'];delete _0x5b319c[0x1]['id'];return _[_0x931b('0x92')](_0x5b319c[0x0],_0x5b319c[0x1],function(_0xc773d6,_0x320e13){if(Array[_0x931b('0x59')](_0x320e13)&&!_0x320e13['length']){return _0xc773d6;}else if(!_0x320e13){return _0xc773d6;}});}})[_0x931b('0x17')](handleEntityNotFound(_0x2ec46e,null))[_0x931b('0x17')](function(_0x1c37aa){if(_0x1c37aa){if(_0x1c37aa[_0x931b('0x88')]&&_[_0x931b('0x59')](_0x1c37aa[_0x931b('0x88')])){_0x1c37aa[_0x931b('0x88')]=_0x1c37aa['tags'][_0x931b('0x93')]();}logger[_0x931b('0x94')](_0x931b('0x95'),_0x348254[_0x931b('0x8f')]['to'],_0x348254['body']['from']);return db[_0x931b('0x96')]['destroy']({'where':{'ContactId':[_0x348254['body']['to'],_0x348254[_0x931b('0x8f')][_0x931b('0x90')]]}})['then'](function(_0x320d4b){logger[_0x931b('0x94')](_0x931b('0x97'),_0x320d4b);return db['CmHopperBlack'][_0x931b('0x85')]({'where':{'ContactId':[_0x348254['body']['to'],_0x348254[_0x931b('0x8f')][_0x931b('0x90')]]}})['then'](function(_0x642d57){logger[_0x931b('0x94')](_0x931b('0x98'),_0x642d57);return db[_0x931b('0x76')][_0x931b('0x99')](_0x1c37aa);});});}})[_0x931b('0x17')](function(_0x2c59e0){if(_0x2c59e0){_0x5bc48d=_0x2c59e0;_0x2b2e90={'ContactId':_0x5bc48d['id']};_0x1c7554={'where':{'ContactId':[_0x348254[_0x931b('0x8f')]['to'],_0x348254[_0x931b('0x8f')][_0x931b('0x90')]]}};return db['ChatInteraction'][_0x931b('0x16')](_0x2b2e90,_0x1c7554);}})[_0x931b('0x17')](function(){if(_0x5bc48d){return db[_0x931b('0x9a')]['update'](_0x2b2e90,_0x1c7554);}})[_0x931b('0x17')](function(){if(_0x5bc48d){return db['ChatOfflineMessage'][_0x931b('0x16')](_0x2b2e90,_0x1c7554);}})[_0x931b('0x17')](function(){if(_0x5bc48d){return db[_0x931b('0x9b')]['update'](_0x2b2e90,_0x1c7554);}})[_0x931b('0x17')](function(){if(_0x5bc48d){return db[_0x931b('0x9c')][_0x931b('0x16')](_0x2b2e90,_0x1c7554);}})[_0x931b('0x17')](function(){if(_0x5bc48d){return db[_0x931b('0x9b')][_0x931b('0x16')](_0x2b2e90,_0x1c7554);}})['then'](function(){if(_0x5bc48d){return db[_0x931b('0x9c')]['update'](_0x2b2e90,_0x1c7554);}})[_0x931b('0x17')](function(){if(_0x5bc48d){return db[_0x931b('0x9d')][_0x931b('0x16')](_0x2b2e90,_0x1c7554);}})[_0x931b('0x17')](function(){if(_0x5bc48d){return db[_0x931b('0x9e')][_0x931b('0x16')](_0x2b2e90,_0x1c7554);}})[_0x931b('0x17')](function(){if(_0x5bc48d){return db[_0x931b('0x9f')]['update'](_0x2b2e90,_0x1c7554);}})[_0x931b('0x17')](function(){if(_0x5bc48d){return db[_0x931b('0xa0')][_0x931b('0x16')](_0x2b2e90,_0x1c7554);}})[_0x931b('0x17')](function(){if(_0x5bc48d){return db[_0x931b('0xa1')][_0x931b('0x16')](_0x2b2e90,_0x1c7554);}})[_0x931b('0x17')](function(){if(_0x5bc48d){return db[_0x931b('0xa2')][_0x931b('0x16')](_0x2b2e90,_0x1c7554);}})[_0x931b('0x17')](function(){if(_0x5bc48d){return db[_0x931b('0xa3')][_0x931b('0x16')](_0x2b2e90,_0x1c7554);}})['then'](function(){if(_0x5bc48d){return db[_0x931b('0xa4')]['update'](_0x2b2e90,_0x1c7554);}})[_0x931b('0x17')](function(){if(_0x5bc48d){return db[_0x931b('0xa5')][_0x931b('0x16')](_0x2b2e90,_0x1c7554);}})['then'](function(){if(_0x5bc48d){return db[_0x931b('0xa6')]['update'](_0x2b2e90,_0x1c7554);}})[_0x931b('0x17')](function(){if(_0x5bc48d){return db['ChatQueueReport']['update'](_0x2b2e90,_0x1c7554);}})[_0x931b('0x17')](function(){if(_0x5bc48d){return db[_0x931b('0xa7')][_0x931b('0x16')](_0x2b2e90,_0x1c7554);}})[_0x931b('0x17')](function(){if(_0x5bc48d){return db[_0x931b('0xa8')]['update'](_0x2b2e90,_0x1c7554);}})[_0x931b('0x17')](function(){if(_0x5bc48d){return db[_0x931b('0xa9')]['update'](_0x2b2e90,_0x1c7554);}})[_0x931b('0x17')](function(){if(_0x5bc48d){return db[_0x931b('0xaa')][_0x931b('0x16')](_0x2b2e90,_0x1c7554);}})[_0x931b('0x17')](function(){if(_0x5bc48d){return db[_0x931b('0xab')][_0x931b('0x16')](_0x2b2e90,_0x1c7554);}})['then'](function(){if(_0x5bc48d){return db[_0x931b('0xac')][_0x931b('0x16')](_0x2b2e90,_0x1c7554);}})['then'](function(){if(_0x5bc48d){return db[_0x931b('0xad')]['update'](_0x2b2e90,_0x1c7554);}})[_0x931b('0x17')](function(){if(_0x5bc48d){return db[_0x931b('0xae')]['update'](_0x2b2e90,_0x1c7554);}})[_0x931b('0x17')](function(){if(_0x5bc48d){return db['CmContact'][_0x931b('0x85')]({'where':{'id':[_0x348254[_0x931b('0x8f')]['to'],_0x348254[_0x931b('0x8f')]['from']]}});}})[_0x931b('0x17')](function(){if(_0x5bc48d){return _0x5bc48d;}})[_0x931b('0x17')](respondWithResult(_0x2ec46e,null))[_0x931b('0x84')](handleError(_0x2ec46e,null));};exports[_0x931b('0x99')]=function(_0x58d064,_0x198881){return db[_0x931b('0x76')][_0x931b('0x87')]()[_0x931b('0x17')](function(_0x28fdd9){if(_0x58d064['body'][_0x931b('0x88')]&&_[_0x931b('0x59')](_0x58d064[_0x931b('0x8f')][_0x931b('0x88')])){if(_0x58d064[_0x931b('0x8f')][_0x931b('0x88')][_0x931b('0x1e')]){_0x58d064[_0x931b('0x8f')][_0x931b('0x88')]=_0x58d064[_0x931b('0x8f')][_0x931b('0x88')][_0x931b('0x93')](';')+';';}else{_0x58d064[_0x931b('0x8f')][_0x931b('0x88')]=null;}}else{_0x58d064[_0x931b('0x8f')][_0x931b('0x88')]=null;}return db[_0x931b('0x76')][_0x931b('0x99')](_0x58d064['body'],{'fields':_['keys'](_0x28fdd9),'raw':!![]});})[_0x931b('0x17')](respondWithResult(_0x198881,0xc9))[_0x931b('0x84')](handleError(_0x198881,null));};exports[_0x931b('0xaf')]=function(_0x2e6374,_0x8ed07d){var _0x2c40d6=0x0;var _0x47a2d2=0x0;var _0x2ef764=0x0;return db[_0x931b('0x76')][_0x931b('0x87')]()[_0x931b('0x17')](function(_0xbf7863){return BPromise['each'](_0x2e6374[_0x931b('0x8f')],function(_0x5285c7){var _0x23d703={'where':{'$or':[]},'defaults':_0x5285c7,'fields':_[_0x931b('0x1d')](_0xbf7863),'raw':!![]};if(_0x5285c7[_0x931b('0xb0')]){for(var _0x75e291=0x0;_0x75e291<_0x5285c7[_0x931b('0xb0')][_0x931b('0x1e')];_0x75e291++){var _0x299e03={};_0x299e03[_0x5285c7[_0x931b('0xb0')][_0x75e291]]=_0x5285c7[_0x5285c7[_0x931b('0xb0')][_0x75e291]];_0x23d703[_0x931b('0x2e')][_0x931b('0xb1')][_0x931b('0x21')](_0x299e03);}_0x23d703[_0x931b('0x2e')][_0x931b('0x54')]=_0x5285c7[_0x931b('0x54')];}return db[_0x931b('0x76')][_0x931b('0xb2')](_0x23d703)[_0x931b('0xb3')](function(_0x3f69b2,_0x1f4393){if(_0x1f4393){_0x2c40d6++;}else{_0x2ef764++;}})[_0x931b('0x84')](function(){_0x47a2d2++;});});})[_0x931b('0x17')](function(_0x2585bd){if(_0x2585bd){return{'success':_0x2c40d6,'failure':_0x47a2d2,'duplicates':_0x2ef764};}})['then'](respondWithResult(_0x8ed07d,0xc9))[_0x931b('0x84')](handleError(_0x8ed07d,null));};exports[_0x931b('0xb4')]=function(_0x4a1882,_0x44c4a1){var _0x553271;return db[_0x931b('0x76')][_0x931b('0x87')]()[_0x931b('0x17')](function(_0x591266){return db[_0x931b('0x76')][_0x931b('0x40')]({'where':{'id':_0x4a1882['params']['id']},'include':[{'model':db[_0x931b('0xb5')],'as':_0x931b('0x82'),'attributes':['id',_0x931b('0xb6'),_0x931b('0x32')],'required':_0x4a1882[_0x931b('0x26')][_0x931b('0x58')]?!![]:![]}],'attributes':_[_0x931b('0x1d')](_0x591266)});})['then'](function(_0x1ea809){if(!_['isNil'](_0x1ea809)){_0x553271=_0x1ea809['get']({'plain':!![]});var _0x32ce7c={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x1ea809&&_0x1ea809[_0x931b('0x54')]){if(_0x1ea809[_0x931b('0x54')]){_0x32ce7c[_0x931b('0x2e')][_0x931b('0xb7')]['push']({'ListId':{'$ne':_0x1ea809[_0x931b('0x54')]}});}}return db[_0x931b('0xb8')]['findAll'](_0x32ce7c);}})['then'](function(_0x5ac304){if(!_['isNil'](_0x5ac304)){return _[_0x931b('0xb9')](_0x553271,_[_0x931b('0x43')](_0x5ac304,function(_0x20434d){return util[_0x931b('0xba')]('cf_%d',_0x20434d['id']);}));}})['then'](handleEntityNotFound(_0x44c4a1,null))[_0x931b('0x17')](respondWithResult(_0x44c4a1,null))[_0x931b('0x84')](handleError(_0x44c4a1,null));};exports[_0x931b('0x16')]=function(_0x2e987c,_0x50cf0d){var _0x53ff59;if(_0x2e987c[_0x931b('0x8f')]['id']){delete _0x2e987c[_0x931b('0x8f')]['id'];}return db[_0x931b('0x76')]['find']({'where':{'id':_0x2e987c[_0x931b('0x86')]['id']}})['then'](handleEntityNotFound(_0x50cf0d,null))['then'](saveUpdates(_0x2e987c[_0x931b('0x8f')],null))['then'](function(_0x514442){_0x53ff59=_0x514442;var _0x141c12={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x514442&&_0x514442[_0x931b('0x54')]){if(_0x514442['ListId']){_0x141c12[_0x931b('0x2e')][_0x931b('0xb7')]['push']({'ListId':{'$ne':_0x514442[_0x931b('0x54')]}});}}return db[_0x931b('0xb8')][_0x931b('0x8a')](_0x141c12);})[_0x931b('0x17')](function(_0x538deb){if(_0x538deb){return _[_0x931b('0xb9')](_[_0x931b('0xbb')](_0x2e987c[_0x931b('0x8f')],function(_0x5d68c5,_0x16450d){return _['startsWith'](_0x16450d,_0x931b('0x20'));}),_[_0x931b('0x43')](_0x538deb,function(_0x2505ae){return util[_0x931b('0xba')](_0x931b('0xbc'),_0x2505ae['id']);}));}})[_0x931b('0x17')](function(_0xe2a3a){if(_0xe2a3a&&!_[_0x931b('0x53')](_0xe2a3a)){var _0x2d2ad7=squel[_0x931b('0x16')]()['table'](_0x931b('0x34'))[_0x931b('0xbd')](_0xe2a3a)['where'](_0x931b('0xbe'),_0x2e987c[_0x931b('0x86')]['id'])[_0x931b('0xbf')]();return db['sequelize'][_0x931b('0x26')](_0x2d2ad7[_0x931b('0x4e')],{'replacements':_0x2d2ad7[_0x931b('0x8e')]});}})[_0x931b('0x17')](function(){if(_0x2e987c['body'][_0x931b('0xc0')]&&_0x53ff59){return db[_0x931b('0x96')]['update']({'phone':_0x2e987c[_0x931b('0x8f')][_0x931b('0xc0')]},{'where':{'ContactId':_0x53ff59['id']}});}})[_0x931b('0x17')](function(){return _0x53ff59;})[_0x931b('0x17')](respondWithResult(_0x50cf0d,null))[_0x931b('0x84')](handleError(_0x50cf0d,null));};exports[_0x931b('0xc1')]=function(_0x29c1fe,_0x3ab9b9){var _0xbf5f01={};var _0x31482f={};var _0x439883;var _0x3a3dbc;return db[_0x931b('0x76')][_0x931b('0xc2')]({'where':{'id':_0x29c1fe['params']['id']}})[_0x931b('0x17')](handleEntityNotFound(_0x3ab9b9,null))[_0x931b('0x17')](function(_0x3d91ec){if(_0x3d91ec){_0x439883=_0x3d91ec;_0x31482f[_0x931b('0x25')]=_[_0x931b('0x1d')](db['Tag'][_0x931b('0xc3')]);_0x31482f[_0x931b('0x26')]=_[_0x931b('0x1d')](_0x29c1fe[_0x931b('0x26')]);_0x31482f[_0x931b('0x27')]=_[_0x931b('0x28')](_0x31482f[_0x931b('0x25')],_0x31482f['query']);_0xbf5f01[_0x931b('0x29')]=_[_0x931b('0x28')](_0x31482f[_0x931b('0x25')],qs['fields'](_0x29c1fe['query'][_0x931b('0x2a')]));_0xbf5f01[_0x931b('0x29')]=_0xbf5f01['attributes'][_0x931b('0x1e')]?_0xbf5f01[_0x931b('0x29')]:_0x31482f[_0x931b('0x25')];_0xbf5f01[_0x931b('0x69')]=qs[_0x931b('0x2d')](_0x29c1fe['query'][_0x931b('0x2d')]);_0xbf5f01[_0x931b('0x2e')]=qs[_0x931b('0x27')](_[_0x931b('0x2f')](_0x29c1fe['query'],_0x31482f[_0x931b('0x27')]));if(_0x29c1fe[_0x931b('0x26')][_0x931b('0x50')]){_0xbf5f01[_0x931b('0x2e')]=_['merge'](_0xbf5f01[_0x931b('0x2e')],{'$or':_[_0x931b('0x43')](_0xbf5f01[_0x931b('0x29')],function(_0x509992){var _0x26f7e8={};_0x26f7e8[_0x509992]={'$like':'%'+_0x29c1fe[_0x931b('0x26')]['filter']+'%'};return _0x26f7e8;})});}_0xbf5f01=_['merge']({},_0xbf5f01,_0x29c1fe[_0x931b('0xc4')]);return _0x439883[_0x931b('0xc1')](_0xbf5f01);}})[_0x931b('0x17')](function(_0xef16f8){if(_0xef16f8){_0x3a3dbc=_0xef16f8[_0x931b('0x1e')];if(!_0x29c1fe[_0x931b('0x26')][_0x931b('0x2b')](_0x931b('0x2c'))){_0xbf5f01[_0x931b('0x13')]=qs['limit'](_0x29c1fe[_0x931b('0x26')][_0x931b('0x13')]);_0xbf5f01[_0x931b('0x11')]=qs['offset'](_0x29c1fe[_0x931b('0x26')][_0x931b('0x11')]);}return _0x439883[_0x931b('0xc1')](_0xbf5f01);}})[_0x931b('0x17')](function(_0x4457ad){if(_0x4457ad){return _0x4457ad?{'count':_0x3a3dbc,'rows':_0x4457ad}:null;}})['then'](respondWithResult(_0x3ab9b9,null))[_0x931b('0x84')](handleError(_0x3ab9b9,null));};exports[_0x931b('0xc5')]=function(_0x28b26a,_0x4497ff){if(_0x28b26a[_0x931b('0x8f')]['id']){delete _0x28b26a[_0x931b('0x8f')]['id'];}return db[_0x931b('0x76')][_0x931b('0xc2')]({'where':{'id':_0x28b26a[_0x931b('0x86')]['id']}})['then'](handleEntityNotFound(_0x4497ff,null))['then'](function(_0x280a8e){if(_0x280a8e){return _0x280a8e[_0x931b('0xc5')](_0x28b26a[_0x931b('0x8f')][_0x931b('0xc6')]||[]);}return null;})['then'](respondWithResult(_0x4497ff,null))[_0x931b('0x84')](handleError(_0x4497ff,null));};exports[_0x931b('0xc7')]=function(_0x24845d,_0x476734){var _0x31b078={'raw':![],'where':{}};var _0xf2f8f0={};var _0x201e5a={'count':0x0,'rows':[]};return db[_0x931b('0x76')]['findOne']({'where':{'id':_0x24845d[_0x931b('0x86')]['id']}})[_0x931b('0x17')](handleEntityNotFound(_0x476734,null))[_0x931b('0x17')](function(_0x493e8e){if(_0x493e8e){_0xf2f8f0[_0x931b('0x25')]=_['keys'](db[_0x931b('0x96')][_0x931b('0xc3')]);_0xf2f8f0['query']=_['keys'](_0x24845d[_0x931b('0x26')]);_0xf2f8f0[_0x931b('0x27')]=_[_0x931b('0x28')](_0xf2f8f0['model'],_0xf2f8f0[_0x931b('0x26')]);_0x31b078[_0x931b('0x29')]=_[_0x931b('0x28')](_0xf2f8f0['model'],qs[_0x931b('0x2a')](_0x24845d[_0x931b('0x26')]['fields']));_0x31b078['attributes']=_0x31b078[_0x931b('0x29')][_0x931b('0x1e')]?_0x31b078[_0x931b('0x29')]:_0xf2f8f0[_0x931b('0x25')];if(!_0x24845d['query'][_0x931b('0x2b')](_0x931b('0x2c'))){_0x31b078[_0x931b('0x13')]=qs[_0x931b('0x13')](_0x24845d['query']['limit']);_0x31b078[_0x931b('0x11')]=qs[_0x931b('0x11')](_0x24845d[_0x931b('0x26')][_0x931b('0x11')]);}_0x31b078[_0x931b('0x69')]=qs[_0x931b('0x2d')](_0x24845d[_0x931b('0x26')]['sort']);_0x31b078[_0x931b('0x2e')]=qs[_0x931b('0x27')](_['pick'](_0x24845d[_0x931b('0x26')],_0xf2f8f0['filters']));_0x31b078[_0x931b('0x2e')][_0x931b('0xc8')]=_0x493e8e['id'];if(_0x24845d[_0x931b('0x26')][_0x931b('0x50')]){_0x31b078[_0x931b('0x2e')]=_[_0x931b('0x75')](_0x31b078['where'],{'$or':_[_0x931b('0x43')](_0x31b078[_0x931b('0x29')],function(_0x241b7a){var _0x36faeb={};_0x36faeb[_0x241b7a]={'$like':'%'+_0x24845d[_0x931b('0x26')]['filter']+'%'};return _0x36faeb;})});}_0x31b078=_[_0x931b('0x75')]({},_0x31b078,_0x24845d[_0x931b('0xc4')]);return db['CmHopper']['count']({'where':_0x31b078[_0x931b('0x2e')]})[_0x931b('0x17')](function(_0x466a5c){_0x201e5a[_0x931b('0x14')]=_0x466a5c;if(_0x24845d[_0x931b('0x26')][_0x931b('0xc9')]){_0x31b078[_0x931b('0xca')]=[{'all':!![]}];}return db[_0x931b('0x96')][_0x931b('0x8a')](_0x31b078);})[_0x931b('0x17')](function(_0x5a90f6){_0x201e5a[_0x931b('0x83')]=_0x5a90f6;return _0x201e5a;});}})[_0x931b('0x17')](respondWithFilteredResult(_0x476734,_0x31b078))[_0x931b('0x84')](handleError(_0x476734,null));};exports[_0x931b('0xcb')]=function(_0x11a9da,_0x290eee){var _0x34d983={'raw':!![],'where':{}};var _0x42a051={};var _0x2840f7={'count':0x0,'rows':[]};return db[_0x931b('0x76')][_0x931b('0xc2')]({'where':{'id':_0x11a9da[_0x931b('0x86')]['id']}})[_0x931b('0x17')](handleEntityNotFound(_0x290eee,null))[_0x931b('0x17')](function(_0xb0a4a0){if(_0xb0a4a0){_0x42a051['model']=_[_0x931b('0x1d')](db[_0x931b('0xa4')][_0x931b('0xc3')]);_0x42a051[_0x931b('0x26')]=_[_0x931b('0x1d')](_0x11a9da[_0x931b('0x26')]);_0x42a051['filters']=_['intersection'](_0x42a051[_0x931b('0x25')],_0x42a051[_0x931b('0x26')]);_0x34d983['attributes']=_[_0x931b('0x28')](_0x42a051[_0x931b('0x25')],qs[_0x931b('0x2a')](_0x11a9da[_0x931b('0x26')][_0x931b('0x2a')]));_0x34d983[_0x931b('0x29')]=_0x34d983[_0x931b('0x29')][_0x931b('0x1e')]?_0x34d983[_0x931b('0x29')]:_0x42a051['model'];if(!_0x11a9da[_0x931b('0x26')]['hasOwnProperty'](_0x931b('0x2c'))){_0x34d983[_0x931b('0x13')]=qs['limit'](_0x11a9da['query']['limit']);_0x34d983['offset']=qs['offset'](_0x11a9da[_0x931b('0x26')]['offset']);}_0x34d983['order']=qs[_0x931b('0x2d')](_0x11a9da['query'][_0x931b('0x2d')]);_0x34d983[_0x931b('0x2e')]=qs[_0x931b('0x27')](_[_0x931b('0x2f')](_0x11a9da[_0x931b('0x26')],_0x42a051[_0x931b('0x27')]));_0x34d983[_0x931b('0x2e')][_0x931b('0xc8')]=_0xb0a4a0['id'];if(_0x11a9da[_0x931b('0x26')][_0x931b('0x50')]){_0x34d983[_0x931b('0x2e')]=_[_0x931b('0x75')](_0x34d983[_0x931b('0x2e')],{'$or':_[_0x931b('0x43')](_0x34d983['attributes'],function(_0x156917){var _0x526c2d={};_0x526c2d[_0x156917]={'$like':'%'+_0x11a9da[_0x931b('0x26')][_0x931b('0x50')]+'%'};return _0x526c2d;})});}_0x34d983=_['merge']({},_0x34d983,_0x11a9da[_0x931b('0xc4')]);return db[_0x931b('0xa4')]['count']({'where':_0x34d983['where']})[_0x931b('0x17')](function(_0x5bfdb6){_0x2840f7[_0x931b('0x14')]=_0x5bfdb6;if(_0x11a9da[_0x931b('0x26')]['includeAll']){_0x34d983[_0x931b('0xca')]=[{'all':!![]}];}return db[_0x931b('0xa4')][_0x931b('0x8a')](_0x34d983);})[_0x931b('0x17')](function(_0x2fc1e9){_0x2840f7[_0x931b('0x83')]=_0x2fc1e9;return _0x2840f7;});}})[_0x931b('0x17')](respondWithFilteredResult(_0x290eee,_0x34d983))['catch'](handleError(_0x290eee,null));};exports[_0x931b('0xcc')]=function(_0x30b8bb,_0xffa0f6){var _0x3d9116={'raw':!![],'where':{}};var _0x401cc2={};var _0x1f4ee5={'count':0x0,'rows':[]};return db[_0x931b('0x76')][_0x931b('0xc2')]({'where':{'id':_0x30b8bb['params']['id']}})[_0x931b('0x17')](handleEntityNotFound(_0xffa0f6,null))[_0x931b('0x17')](function(_0x744949){if(_0x744949){_0x401cc2[_0x931b('0x25')]=_[_0x931b('0x1d')](db[_0x931b('0xa3')][_0x931b('0xc3')]);_0x401cc2[_0x931b('0x26')]=_[_0x931b('0x1d')](_0x30b8bb['query']);_0x401cc2[_0x931b('0x27')]=_[_0x931b('0x28')](_0x401cc2[_0x931b('0x25')],_0x401cc2['query']);_0x3d9116[_0x931b('0x29')]=_[_0x931b('0x28')](_0x401cc2[_0x931b('0x25')],qs['fields'](_0x30b8bb['query']['fields']));_0x3d9116[_0x931b('0x29')]=_0x3d9116['attributes']['length']?_0x3d9116['attributes']:_0x401cc2[_0x931b('0x25')];if(!_0x30b8bb[_0x931b('0x26')][_0x931b('0x2b')]('nolimit')){_0x3d9116[_0x931b('0x13')]=qs['limit'](_0x30b8bb[_0x931b('0x26')][_0x931b('0x13')]);_0x3d9116['offset']=qs[_0x931b('0x11')](_0x30b8bb[_0x931b('0x26')]['offset']);}_0x3d9116[_0x931b('0x69')]=qs[_0x931b('0x2d')](_0x30b8bb[_0x931b('0x26')][_0x931b('0x2d')]);_0x3d9116[_0x931b('0x2e')]=qs[_0x931b('0x27')](_[_0x931b('0x2f')](_0x30b8bb[_0x931b('0x26')],_0x401cc2[_0x931b('0x27')]));_0x3d9116[_0x931b('0x2e')][_0x931b('0xc8')]=_0x744949['id'];if(_0x30b8bb['query'][_0x931b('0x50')]){_0x3d9116[_0x931b('0x2e')]=_['merge'](_0x3d9116[_0x931b('0x2e')],{'$or':_[_0x931b('0x43')](_0x3d9116[_0x931b('0x29')],function(_0x57ffe2){var _0x5ab326={};_0x5ab326[_0x57ffe2]={'$like':'%'+_0x30b8bb['query'][_0x931b('0x50')]+'%'};return _0x5ab326;})});}_0x3d9116=_[_0x931b('0x75')]({},_0x3d9116,_0x30b8bb[_0x931b('0xc4')]);return db[_0x931b('0xa3')][_0x931b('0x14')]({'where':_0x3d9116['where']})['then'](function(_0x3fe2a3){_0x1f4ee5['count']=_0x3fe2a3;if(_0x30b8bb[_0x931b('0x26')]['includeAll']){_0x3d9116[_0x931b('0xca')]=[{'all':!![]}];}return db['CmHopperFinal'][_0x931b('0x8a')](_0x3d9116);})['then'](function(_0xf69d04){_0x1f4ee5[_0x931b('0x83')]=_0xf69d04;return _0x1f4ee5;});}})[_0x931b('0x17')](respondWithFilteredResult(_0xffa0f6,_0x3d9116))[_0x931b('0x84')](handleError(_0xffa0f6,null));};exports[_0x931b('0xcd')]=function(_0x7c0627,_0x48b832){var _0x50f2ac={'raw':!![],'where':{}};var _0x1a8535={};var _0x5da80e={'count':0x0,'rows':[]};return db[_0x931b('0x76')][_0x931b('0xc2')]({'where':{'id':_0x7c0627['params']['id']}})['then'](handleEntityNotFound(_0x48b832,null))['then'](function(_0x4e8b5f){if(_0x4e8b5f){_0x1a8535[_0x931b('0x25')]=_[_0x931b('0x1d')](db['JscriptySessionReport'][_0x931b('0xc3')]);_0x1a8535[_0x931b('0x26')]=_[_0x931b('0x1d')](_0x7c0627[_0x931b('0x26')]);_0x1a8535['filters']=_[_0x931b('0x28')](_0x1a8535[_0x931b('0x25')],_0x1a8535[_0x931b('0x26')]);_0x50f2ac['attributes']=_[_0x931b('0x28')](_0x1a8535[_0x931b('0x25')],qs[_0x931b('0x2a')](_0x7c0627[_0x931b('0x26')][_0x931b('0x2a')]));_0x50f2ac[_0x931b('0x29')]=_0x50f2ac[_0x931b('0x29')]['length']?_0x50f2ac[_0x931b('0x29')]:_0x1a8535['model'];if(!_0x7c0627[_0x931b('0x26')][_0x931b('0x2b')]('nolimit')){_0x50f2ac['limit']=qs[_0x931b('0x13')](_0x7c0627['query'][_0x931b('0x13')]);_0x50f2ac['offset']=qs[_0x931b('0x11')](_0x7c0627[_0x931b('0x26')][_0x931b('0x11')]);}_0x50f2ac[_0x931b('0x69')]=qs['sort'](_0x7c0627[_0x931b('0x26')][_0x931b('0x2d')]);_0x50f2ac['where']=qs['filters'](_[_0x931b('0x2f')](_0x7c0627[_0x931b('0x26')],_0x1a8535[_0x931b('0x27')]));_0x50f2ac['where'][_0x931b('0xc8')]=_0x4e8b5f['id'];if(_0x7c0627['query'][_0x931b('0x50')]){_0x50f2ac['where']=_[_0x931b('0x75')](_0x50f2ac['where'],{'$or':_[_0x931b('0x43')](_0x50f2ac[_0x931b('0x29')],function(_0x19875d){var _0x4573c4={};_0x4573c4[_0x19875d]={'$like':'%'+_0x7c0627['query'][_0x931b('0x50')]+'%'};return _0x4573c4;})});}_0x50f2ac=_[_0x931b('0x75')]({},_0x50f2ac,_0x7c0627[_0x931b('0xc4')]);return db[_0x931b('0xab')][_0x931b('0x14')]({'where':_0x50f2ac[_0x931b('0x2e')]})[_0x931b('0x17')](function(_0xf9446e){_0x5da80e[_0x931b('0x14')]=_0xf9446e;if(_0x7c0627['query'][_0x931b('0xc9')]){_0x50f2ac[_0x931b('0xca')]=[{'all':!![]}];}return db[_0x931b('0xab')]['findAll'](_0x50f2ac);})[_0x931b('0x17')](function(_0x18750a){_0x5da80e[_0x931b('0x83')]=_0x18750a;return _0x5da80e;});}})[_0x931b('0x17')](respondWithFilteredResult(_0x48b832,_0x50f2ac))[_0x931b('0x84')](handleError(_0x48b832,null));};exports[_0x931b('0xce')]=function(_0x586b4f,_0x570966){try{if(!_0x586b4f[_0x931b('0x8f')]['ListId']){throw new Error(_0x931b('0xcf'));}if(!_0x586b4f[_0x931b('0x8f')][_0x931b('0xd0')]){throw new Error('No\x20association\x20keys\x20specified!');}if(!_0x586b4f['body'][_0x931b('0xd1')]){throw new Error(_0x931b('0xd2'));}if(!_0x586b4f[_0x931b('0x8f')]['socket_timestamp']){throw new Error(_0x931b('0xd3'));}var _0x4110ba=_0x586b4f[_0x931b('0x8f')][_0x931b('0xd0')][_0x931b('0x42')](',');var _0x1d278e=_0x586b4f[_0x931b('0x8f')][_0x931b('0xd1')][_0x931b('0x42')](',');if(!_0x4110ba[_0x931b('0x1e')]||!_0x1d278e[_0x931b('0x1e')]||_0x4110ba['length']!==_0x1d278e[_0x931b('0x1e')]){throw new Error(_0x931b('0xd4'));}_0x586b4f[_0x931b('0x8f')][_0x931b('0x2a')]=_[_0x931b('0xd5')](_0x4110ba,_0x1d278e);if(!_0x586b4f['body'][_0x931b('0x2a')][_0x931b('0xc0')]){throw new Error(_0x931b('0xd6'));}if(!_0x586b4f['body']['fields'][_0x931b('0xd7')]){throw new Error(_0x931b('0xd8'));}var _0x458325=path['join'](config[_0x931b('0xd9')],'server/files/tmp',_0x586b4f[_0x931b('0xda')]['filename']);fs[_0x931b('0xdb')](_0x458325,parseInt(_0x931b('0xdc'),0x8));var _0x2e7bbb=require(_0x931b('0xdd'))[_0x931b('0xde')](path['join'](__dirname,_0x931b('0xdf')),[_0x458325,_0x586b4f['body'][_0x931b('0xd0')],_0x586b4f[_0x931b('0x8f')]['binding_values'],_0x586b4f[_0x931b('0x8f')][_0x931b('0x54')],_0x586b4f[_0x931b('0x8f')][_0x931b('0xe0')],_0x586b4f[_0x931b('0x8f')][_0x931b('0xb0')],_0x586b4f[_0x931b('0x8f')][_0x931b('0xe1')]]);return _0x570966[_0x931b('0xf')](0xc8)[_0x931b('0x10')]({'message':'File\x20uploaded\x20correctly!','pid':_0x2e7bbb[_0x931b('0xe2')]});}catch(_0x5d2f53){return _0x570966[_0x931b('0xf')](0x1f4)[_0x931b('0x1b')](_0x5d2f53);}};exports['upload']=function(_0x409add,_0x38162f){var _0x7abaaa=fs[_0x931b('0xe3')](_0x409add['file'][_0x931b('0x1')]);Papa[_0x931b('0xe4')](_0x7abaaa,{'header':!![],'skipEmptyLines':!![],'preview':0x1,'complete':function(_0x4dd15f){return _0x38162f[_0x931b('0xf')](0xc8)['json']({'file':_0x409add[_0x931b('0xda')],'fields':_0x4dd15f[_0x931b('0xe5')][_0x931b('0x2a')]});}});};exports[_0x931b('0xe6')]=function(_0x536ba0,_0x14140e){return db[_0x931b('0x6f')][_0x931b('0x8a')]({'raw':!![],'attributes':['id'],'where':{'role':_0x931b('0x6d')}})[_0x931b('0x17')](function(_0x5d18ae){var _0x207346=![];if(!_0x536ba0[_0x931b('0x8f')][_0x931b('0x54')]){throw new Error('No\x20ListId\x20specified');}if(!_0x536ba0[_0x931b('0x8f')][_0x931b('0xe7')][_0x931b('0xc0')]){throw new Error('No\x20phone\x20column\x20specified');}if(!_0x536ba0[_0x931b('0x8f')][_0x931b('0xe7')][_0x931b('0xd7')]){throw new Error('No\x20firstName\x20column\x20specified');}if(!_0x536ba0['body']['socket_timestamp']){throw new Error('Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed');}var _0x3f6411=require(_0x931b('0xdd'))[_0x931b('0xde')](path[_0x931b('0x93')](__dirname,_0x931b('0xe8')),[_0x536ba0['params']['id'],JSON[_0x931b('0xe9')](_0x536ba0[_0x931b('0x8f')]),JSON[_0x931b('0xe9')](_0x5d18ae)]);_0x3f6411['on'](_0x931b('0xea'),function(){_0x207346=!![];return _0x14140e[_0x931b('0xf')](0xc8)[_0x931b('0x10')]({'message':_0x931b('0xeb'),'pid':_0x3f6411[_0x931b('0xe2')]});});_0x3f6411['on'](_0x931b('0xec'),function(_0x3360b1){if(_0x3360b1&&!_0x207346){return _0x14140e[_0x931b('0xf')](0x1f4)[_0x931b('0x10')]({'message':_0x931b('0xed'),'pid':_0x3f6411[_0x931b('0xe2')]});}});})[_0x931b('0x84')](handleError(_0x14140e,null));};exports[_0x931b('0xee')]=function(_0x1b248c,_0x38cbe5){var _0x36486c=[_0x931b('0xef'),_0x931b('0xf0'),_0x931b('0xf1'),_0x931b('0xf2'),_0x931b('0xf3'),_0x931b('0xf4'),_0x931b('0xf5')];var _0x2d5b97={'offset':0x0,'order':qs[_0x931b('0x2d')]('-createdAt')},_0x15242e={'count':0x0,'rows':[]};Promise[_0x931b('0x6b')]()[_0x931b('0x17')](function(){if(_0x1b248c[_0x931b('0x26')][_0x931b('0xf6')]){if(!_['includes'](_0x36486c,_0x1b248c[_0x931b('0x26')][_0x931b('0xf6')]['toLowerCase']())){throw new Error('Invalid\x20channel');}_0x36486c=[_0x1b248c[_0x931b('0x26')][_0x931b('0xf6')][_0x931b('0xf7')]()];}if(_0x1b248c[_0x931b('0x26')][_0x931b('0xf8')]){try{var _0x44ba8b=JSON['parse'](_0x1b248c[_0x931b('0x26')]['range']);if(!moment(_0x44ba8b[_0x931b('0x90')])[_0x931b('0xf9')]()){throw new Error(_0x931b('0xfa'));}if(!moment(_0x44ba8b['to'])['isValid']()){throw new Error(_0x931b('0xfb'));}}catch(_0x5b43b8){throw new Error(_0x931b('0xfc'));}}if(!_0x1b248c['query'][_0x931b('0x2b')](_0x931b('0x2c'))){_0x2d5b97[_0x931b('0x13')]=qs[_0x931b('0x13')](_0x1b248c[_0x931b('0x26')]['limit']||0xa);_0x2d5b97[_0x931b('0x11')]=qs[_0x931b('0x11')](_0x1b248c[_0x931b('0x26')][_0x931b('0x11')]);}var _0xe68f6a=_0x36486c['map'](function(_0x472dc9){if(_0x472dc9===_0x931b('0xf5')){var _0x13c296={'attributes':['id',_0x931b('0xfd'),_0x931b('0x4d'),_0x931b('0xfe'),_0x931b('0xff'),_0x931b('0x100'),'starttime',_0x931b('0x101'),'duration',_0x931b('0x102'),_0x931b('0x103'),_0x931b('0x104'),_0x931b('0x105'),_0x931b('0x106'),'UserId'],'where':{'ContactId':_0x1b248c[_0x931b('0x86')]['id']},'include':[{'model':db[_0x931b('0x6f')],'as':_0x931b('0x6f'),'attributes':['id',_0x931b('0xb6'),_0x931b('0x107'),_0x931b('0x8c')]}],'order':[[_0x931b('0x103'),'DESC']]};if(_0x1b248c[_0x931b('0x26')][_0x931b('0xf8')]){_0x13c296['where']['createdAt']={'$gte':_0x44ba8b[_0x931b('0x90')],'$lte':_0x44ba8b['to']};}return db[_0x931b('0xa6')]['findAndCountAll'](_0x13c296)[_0x931b('0x17')](function(_0x22c46a){_0x15242e[_0x931b('0x14')]+=_0x22c46a['count'];return _[_0x931b('0x43')](_0x22c46a['rows'],function(_0x522976){var _0x484664=_0x522976[_0x931b('0x91')]({'plain':!![]});_0x484664[_0x931b('0xf6')]=_0x472dc9;if(_0x484664['User']){_0x484664['User']={'id':_0x484664['User']['id'],'name':_0x484664['User'][_0x931b('0xb6')],'fullname':_0x484664['User'][_0x931b('0x107')],'alias':_0x484664['User'][_0x931b('0x8c')]};}return _0x484664;});});}else{var _0xaf93da=_[_0x931b('0x108')](_0x472dc9)+(_0x472dc9===_0x931b('0xf0')?_0x931b('0x109'):'Account');var _0x27ba92={'attributes':['id',_0x931b('0x10a'),'closedAt',_0x931b('0x103'),_0x931b('0x102'),_0x931b('0x10b'),_0x931b('0x10c'),'thirdDisposition',_0x931b('0x10d'),_0xaf93da+'Id'],'where':{'ContactId':_0x1b248c[_0x931b('0x86')]['id']},'include':[{'model':db[_0xaf93da],'as':_0x931b('0x10e'),'attributes':['id',_0x931b('0xb6'),_0x931b('0x10f')]},{'model':db[_0x931b('0x6f')],'as':'Owner','attributes':['id',_0x931b('0xb6'),'fullname']},{'model':db['Tag'],'as':_0x931b('0x82'),'attributes':['id',_0x931b('0xb6'),_0x931b('0x32')],'through':{'attributes':[]}}],'order':[[_0x931b('0x103'),_0x931b('0x110')]]};if(_0x1b248c[_0x931b('0x26')]['range']){_0x27ba92['where'][_0x931b('0x103')]={'$gte':_0x44ba8b[_0x931b('0x90')],'$lte':_0x44ba8b['to']};}switch(_0x472dc9){case'chat':_0x27ba92[_0x931b('0x29')][_0x931b('0x21')](_0x931b('0x111'),'customerIp',_0x931b('0x112'),_0x931b('0x113'),_0x931b('0x114'),_0x931b('0x115'),_0x931b('0x116'),_0x931b('0x117'),'referer');break;case _0x931b('0xef'):_0x27ba92['attributes'][_0x931b('0x21')](_0x931b('0x118'),_0x931b('0x119'));break;case _0x931b('0xf2'):_0x27ba92[_0x931b('0x29')][_0x931b('0x21')](_0x931b('0x11a'),'threadId');break;}return db[_[_0x931b('0x108')](_0x472dc9)+'Interaction']['findAndCountAll'](_0x27ba92)[_0x931b('0x17')](function(_0x12911e){_0x15242e[_0x931b('0x14')]+=_0x12911e[_0x931b('0x14')];return _[_0x931b('0x43')](_0x12911e[_0x931b('0x83')],function(_0x340c39){var _0x382cfa=_0x340c39['get']({'plain':!![]});_0x382cfa[_0x931b('0xf6')]=_0x472dc9;if(_0x382cfa[_0x931b('0x11b')]){_0x382cfa['Owner']={'id':_0x382cfa[_0x931b('0x11b')]['id'],'name':_0x382cfa[_0x931b('0x11b')][_0x931b('0xb6')],'fullname':_0x382cfa[_0x931b('0x11b')]['fullname']};}return _0x382cfa;});});}});return Promise[_0x931b('0x23')](_0xe68f6a);})[_0x931b('0x17')](function(_0x21f5d7){return _(_0x21f5d7)['flatten']()[_0x931b('0x11c')](_0x931b('0x103'))['reverse']()[_0x931b('0x41')]();})[_0x931b('0x17')](function(_0x15656c){_0x15242e[_0x931b('0x83')]=_0x2d5b97[_0x931b('0x13')]?_0x15656c[_0x931b('0x11d')](_0x2d5b97[_0x931b('0x11')],_0x2d5b97[_0x931b('0x11')]+_0x2d5b97[_0x931b('0x13')]):_0x15656c;return _0x15242e;})[_0x931b('0x17')](respondWithFilteredResult(_0x38cbe5,_0x2d5b97))[_0x931b('0x84')](handleError(_0x38cbe5,null));};
\ No newline at end of file
index 89289df..f2a27ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ac4=['emit','hook','CmContact','setMaxListeners','update','remove'];(function(_0x15e6fe,_0x1a5c39){var _0x34894d=function(_0x32eec2){while(--_0x32eec2){_0x15e6fe['push'](_0x15e6fe['shift']());}};_0x34894d(++_0x1a5c39);}(_0x6ac4,0x11c));var _0x46ac=function(_0x1e890f,_0x50d225){_0x1e890f=_0x1e890f-0x0;var _0x479e79=_0x6ac4[_0x1e890f];return _0x479e79;};'use strict';var EventEmitter=require('events');var CmContact=require('../../mysqldb')['db'][_0x46ac('0x0')];var CmContactEvents=new EventEmitter();CmContactEvents[_0x46ac('0x1')](0x0);var events={'afterCreate':'save','afterUpdate':_0x46ac('0x2'),'afterDestroy':_0x46ac('0x3')};function emitEvent(_0x22b5ee){return function(_0x7a804b,_0xf66328,_0xff8c7b){CmContactEvents[_0x46ac('0x4')](_0x22b5ee+':'+_0x7a804b['id'],_0x7a804b);CmContactEvents[_0x46ac('0x4')](_0x22b5ee,_0x7a804b);_0xff8c7b(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];CmContact[_0x46ac('0x5')](e,emitEvent(event));}}module['exports']=CmContactEvents;
\ No newline at end of file
+var _0x1053=['events','CmContact','setMaxListeners','save','remove','emit','hook','exports'];(function(_0x100770,_0x2a6617){var _0x26c777=function(_0x58174d){while(--_0x58174d){_0x100770['push'](_0x100770['shift']());}};_0x26c777(++_0x2a6617);}(_0x1053,0x1f0));var _0x3105=function(_0x52b62b,_0x1100cd){_0x52b62b=_0x52b62b-0x0;var _0x3d14d0=_0x1053[_0x52b62b];return _0x3d14d0;};'use strict';var EventEmitter=require(_0x3105('0x0'));var CmContact=require('../../mysqldb')['db'][_0x3105('0x1')];var CmContactEvents=new EventEmitter();CmContactEvents[_0x3105('0x2')](0x0);var events={'afterCreate':_0x3105('0x3'),'afterUpdate':'update','afterDestroy':_0x3105('0x4')};function emitEvent(_0x29fa0a){return function(_0x1d3929,_0x4758f7,_0xb2dec0){CmContactEvents['emit'](_0x29fa0a+':'+_0x1d3929['id'],_0x1d3929);CmContactEvents[_0x3105('0x5')](_0x29fa0a,_0x1d3929);_0xb2dec0(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];CmContact[_0x3105('0x6')](e,emitEvent(event));}}module[_0x3105('0x7')]=CmContactEvents;
\ No newline at end of file
index b9302fd..13c2f2f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0cef=['cmContact','findOne','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20Campaign\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20Campaign\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20Campaign\x20','VoiceQueue','findAll','dialCheckDuplicateType','CmList','Lists','length','always','onlyIfOpen','BlackLists','get','CmHopperBlack','cmContact,\x20%s,\x20%s','Campaign','message','List\x20not\x20found','destroy','ContactId','VoiceQueueId','push','info','[CmContact][afterDestroy][Succesfull]','lodash','../../config/logger','api','moment','bluebird','request-promise','path','./cmContact.attributes','exports','CmContact','cm_contacts','phone','fti_cm_contacts','firstName','lastName','mobile','fax','email','FULLTEXT','utf8mb4','models','error','afterCreate','inspect','CmHopper','isNil','cmContact,\x20afterCreate\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','create','priority','scheduledat','format','YYYY-MM-DD\x20HH:mm:ss','callbackUniqueid','catch','then','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','CmHopperFinal','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20VoiceQueue\x20','ListId'];(function(_0x1c5ffb,_0xf65383){var _0x1aa85f=function(_0x539527){while(--_0x539527){_0x1c5ffb['push'](_0x1c5ffb['shift']());}};_0x1aa85f(++_0xf65383);}(_0x0cef,0xe0));var _0xf0ce=function(_0x12b449,_0x2b8a36){_0x12b449=_0x12b449-0x0;var _0x4e3784=_0x0cef[_0x12b449];return _0x4e3784;};'use strict';var _=require(_0xf0ce('0x0'));var util=require('util');var logger=require(_0xf0ce('0x1'))(_0xf0ce('0x2'));var moment=require(_0xf0ce('0x3'));var BPromise=require(_0xf0ce('0x4'));var rp=require(_0xf0ce('0x5'));var fs=require('fs');var path=require(_0xf0ce('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xf0ce('0x7'));module[_0xf0ce('0x8')]=function(_0x16ca6f,_0x2483e5){return _0x16ca6f['define'](_0xf0ce('0x9'),attributes,{'tableName':_0xf0ce('0xa'),'paranoid':!![],'indexes':[{'name':'phone','fields':[_0xf0ce('0xb')]},{'name':_0xf0ce('0xc'),'fields':[_0xf0ce('0xd'),_0xf0ce('0xe'),_0xf0ce('0xb'),_0xf0ce('0xf'),_0xf0ce('0x10'),_0xf0ce('0x11')],'type':_0xf0ce('0x12')}],'timestamps':!![],'charset':_0xf0ce('0x13'),'collate':'utf8mb4_unicode_ci','hooks':{'afterCreate':function(_0x1ffc90,_0x24b2dc,_0x327934){var _0x29990c=_0x16ca6f[_0xf0ce('0x14')];var _0x532186=_0x1ffc90['get']({'plain':!![]});function _0x1a5a6a(){return function(_0x430181){logger[_0xf0ce('0x15')]('cmContact',_0xf0ce('0x16'),util[_0xf0ce('0x17')](_0x430181,{'showHidden':![],'depth':null}));};}var _0x544c55=function(_0x130661){return new BPromise(function(_0x263898,_0x3ac895){_0x29990c[_0xf0ce('0x18')]['findOne']({'where':{'phone':_0x532186[_0xf0ce('0xb')],'VoiceQueueId':_0x130661['id']}})['then'](function(_0x502fee){if(!_[_0xf0ce('0x19')](_0x502fee)){throw new Error(_0xf0ce('0x1a')+_0x532186['phone']+_0xf0ce('0x1b')+_0x130661['id']);}return _0x29990c[_0xf0ce('0x18')][_0xf0ce('0x1c')]({'phone':_0x532186[_0xf0ce('0xb')],'ContactId':_0x532186['id'],'ListId':_0x532186['ListId'],'priority':_0x532186['priority']?_0x532186[_0xf0ce('0x1d')]:0x2,'scheduledat':_0x532186[_0xf0ce('0x1e')]?_0x532186['scheduledat']:moment()[_0xf0ce('0x1f')](_0xf0ce('0x20')),'callback':_0x532186['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x532186['callbackUniqueid']?_0x532186[_0xf0ce('0x21')]:undefined,'callbackat':_0x532186[_0xf0ce('0x21')]?moment()[_0xf0ce('0x1f')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'VoiceQueueId':_0x130661['id']});})[_0xf0ce('0x22')](function(_0x18900a){_0x3ac895(_0x18900a);});});};var _0x594015=function(_0x419999){return new BPromise(function(_0x126177,_0x4ba0f1){_0x29990c[_0xf0ce('0x18')]['findOne']({'where':{'phone':_0x532186[_0xf0ce('0xb')],'VoiceQueueId':_0x419999['id']}})[_0xf0ce('0x23')](function(_0x43d03a){if(!_['isNil'](_0x43d03a)){throw new Error(_0xf0ce('0x1a')+_0x532186[_0xf0ce('0xb')]+_0xf0ce('0x24')+_0x419999['id']);}return _0x29990c[_0xf0ce('0x25')]['findOne']({'where':{'calleridnum':_0x532186[_0xf0ce('0xb')],'VoiceQueueId':_0x419999['id']}});})['then'](function(_0x4812ad){if(!_[_0xf0ce('0x19')](_0x4812ad)){throw new Error('cmContact,\x20afterCreate,\x20'+_0x532186[_0xf0ce('0xb')]+_0xf0ce('0x26')+_0x419999['id']);}return _0x29990c['CmHopper'][_0xf0ce('0x1c')]({'phone':_0x532186[_0xf0ce('0xb')],'ContactId':_0x532186['id'],'ListId':_0x532186[_0xf0ce('0x27')],'priority':_0x532186[_0xf0ce('0x1d')]?_0x532186[_0xf0ce('0x1d')]:0x2,'scheduledat':_0x532186[_0xf0ce('0x1e')]?_0x532186[_0xf0ce('0x1e')]:moment()[_0xf0ce('0x1f')]('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x532186[_0xf0ce('0x21')]?!![]:![],'callbackuniqueid':_0x532186[_0xf0ce('0x21')]?_0x532186['callbackUniqueid']:undefined,'callbackat':_0x532186['callbackUniqueid']?moment()[_0xf0ce('0x1f')](_0xf0ce('0x20')):undefined,'VoiceQueueId':_0x419999['id']});})[_0xf0ce('0x22')](function(_0x307875){_0x4ba0f1(_0x307875);});});};function _0x308603(){return function(_0x4e1cde){logger[_0xf0ce('0x15')](_0xf0ce('0x28'),_0xf0ce('0x16'),util['inspect'](_0x4e1cde,{'showHidden':![],'depth':null}));};}var _0x3ee0cf=function(_0x459f8c){return new BPromise(function(_0x2a5493,_0x4b338f){_0x29990c[_0xf0ce('0x18')][_0xf0ce('0x29')]({'where':{'phone':_0x532186[_0xf0ce('0xb')],'CampaignId':_0x459f8c['id']}})[_0xf0ce('0x23')](function(_0x40defe){if(!_['isNil'](_0x40defe)){throw new Error(_0xf0ce('0x1a')+_0x532186[_0xf0ce('0xb')]+_0xf0ce('0x2a')+_0x459f8c['id']);}return _0x29990c[_0xf0ce('0x18')][_0xf0ce('0x1c')]({'phone':_0x532186['phone'],'ContactId':_0x532186['id'],'ListId':_0x532186[_0xf0ce('0x27')],'priority':_0x532186[_0xf0ce('0x1d')]?_0x532186[_0xf0ce('0x1d')]:0x2,'scheduledat':_0x532186[_0xf0ce('0x1e')]?_0x532186[_0xf0ce('0x1e')]:moment()[_0xf0ce('0x1f')](_0xf0ce('0x20')),'callback':_0x532186['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x532186['callbackUniqueid']?_0x532186['callbackUniqueid']:undefined,'callbackat':_0x532186[_0xf0ce('0x21')]?moment()['format'](_0xf0ce('0x20')):undefined,'CampaignId':_0x459f8c['id']});})[_0xf0ce('0x22')](function(_0x9bb2f7){_0x4b338f(_0x9bb2f7);});});};var _0x2d12a6=function(_0x55ada1){return new BPromise(function(_0x43b8d0,_0x46fe10){_0x29990c[_0xf0ce('0x18')][_0xf0ce('0x29')]({'where':{'phone':_0x532186[_0xf0ce('0xb')],'CampaignId':_0x55ada1['id']}})[_0xf0ce('0x23')](function(_0x26ae80){if(!_[_0xf0ce('0x19')](_0x26ae80)){throw new Error(_0xf0ce('0x1a')+_0x532186['phone']+_0xf0ce('0x2b')+_0x55ada1['id']);}return _0x29990c[_0xf0ce('0x25')][_0xf0ce('0x29')]({'where':{'calleridnum':_0x532186[_0xf0ce('0xb')],'CampaignId':_0x55ada1['id']}});})[_0xf0ce('0x23')](function(_0x48dab1){if(!_[_0xf0ce('0x19')](_0x48dab1)){throw new Error('cmContact,\x20afterCreate,\x20'+_0x532186[_0xf0ce('0xb')]+_0xf0ce('0x2c')+_0x55ada1['id']);}return _0x29990c[_0xf0ce('0x18')][_0xf0ce('0x1c')]({'phone':_0x532186[_0xf0ce('0xb')],'ContactId':_0x532186['id'],'ListId':_0x532186[_0xf0ce('0x27')],'priority':_0x532186[_0xf0ce('0x1d')]?_0x532186[_0xf0ce('0x1d')]:0x2,'scheduledat':_0x532186[_0xf0ce('0x1e')]?_0x532186[_0xf0ce('0x1e')]:moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x532186[_0xf0ce('0x21')]?!![]:![],'callbackuniqueid':_0x532186['callbackUniqueid']?_0x532186[_0xf0ce('0x21')]:undefined,'callbackat':_0x532186[_0xf0ce('0x21')]?moment()[_0xf0ce('0x1f')](_0xf0ce('0x20')):undefined,'CampaignId':_0x55ada1['id']});})[_0xf0ce('0x22')](function(_0x5f360f){_0x46fe10(_0x5f360f);});});};if(_0x532186[_0xf0ce('0x27')]){_0x29990c[_0xf0ce('0x2d')][_0xf0ce('0x2e')]({'where':{'type':'outbound'},'attributes':['id',_0xf0ce('0x2f')],'include':[{'model':_0x29990c[_0xf0ce('0x30')],'as':_0xf0ce('0x31'),'where':{'id':_0x532186[_0xf0ce('0x27')]}}]})['then'](function(_0x3609e0){if(_0x3609e0){var _0x561b04=[];for(var _0x25830e=0x0,_0x129465;_0x25830e<_0x3609e0[_0xf0ce('0x32')];_0x25830e+=0x1){_0x129465=_0x3609e0[_0x25830e]['get']({'plain':!![]});switch(_0x129465[_0xf0ce('0x2f')]){case _0xf0ce('0x33'):_0x594015(_0x129465)[_0xf0ce('0x22')](_0x1a5a6a());break;case _0xf0ce('0x34'):_0x544c55(_0x129465)[_0xf0ce('0x22')](_0x1a5a6a());break;default:_0x29990c[_0xf0ce('0x18')][_0xf0ce('0x1c')]({'phone':_0x532186[_0xf0ce('0xb')],'ContactId':_0x532186['id'],'ListId':_0x532186[_0xf0ce('0x27')],'scheduledat':_0x532186[_0xf0ce('0x1e')]?_0x532186[_0xf0ce('0x1e')]:moment()[_0xf0ce('0x1f')](_0xf0ce('0x20')),'priority':_0x532186['priority']?_0x532186[_0xf0ce('0x1d')]:0x2,'callback':_0x532186[_0xf0ce('0x21')]?!![]:![],'callbackuniqueid':_0x532186[_0xf0ce('0x21')]?_0x532186['callbackUniqueid']:undefined,'callbackat':_0x532186[_0xf0ce('0x21')]?moment()[_0xf0ce('0x1f')](_0xf0ce('0x20')):undefined,'VoiceQueueId':_0x129465['id']})[_0xf0ce('0x22')](_0x1a5a6a());}}}})['then'](function(){return _0x29990c[_0xf0ce('0x2d')][_0xf0ce('0x2e')]({'where':{'type':'outbound'},'attributes':['id'],'include':[{'model':_0x29990c['CmList'],'as':_0xf0ce('0x35'),'where':{'id':_0x532186[_0xf0ce('0x27')]}}]})['then'](function(_0x4e0cf4){if(_0x4e0cf4){var _0x2b16e9=[];for(var _0x23f84a=0x0,_0x56c7b7;_0x23f84a<_0x4e0cf4['length'];_0x23f84a+=0x1){_0x56c7b7=_0x4e0cf4[_0x23f84a][_0xf0ce('0x36')]({'plain':!![]});_0x29990c[_0xf0ce('0x37')][_0xf0ce('0x1c')]({'phone':_0x532186['phone'],'ContactId':_0x532186['id'],'ListId':_0x532186[_0xf0ce('0x27')],'VoiceQueueId':_0x56c7b7['id']})['catch'](function(_0x1a1738){logger['error'](_0xf0ce('0x38'),'afterCreate',_0x1a1738['message']);});}}});})['then'](function(){return _0x29990c['Campaign'][_0xf0ce('0x2e')]({'attributes':['id',_0xf0ce('0x2f')],'include':[{'model':_0x29990c['CmList'],'as':_0xf0ce('0x31'),'where':{'id':_0x532186[_0xf0ce('0x27')]}}]})['then'](function(_0xe8db64){if(_0xe8db64){var _0x1f497c=[];for(var _0x23020c=0x0,_0x229a55;_0x23020c<_0xe8db64[_0xf0ce('0x32')];_0x23020c+=0x1){_0x229a55=_0xe8db64[_0x23020c][_0xf0ce('0x36')]({'plain':!![]});switch(_0x229a55[_0xf0ce('0x2f')]){case _0xf0ce('0x33'):_0x2d12a6(_0x229a55)[_0xf0ce('0x22')](_0x308603());break;case _0xf0ce('0x34'):_0x3ee0cf(_0x229a55)[_0xf0ce('0x22')](_0x308603());break;default:_0x29990c[_0xf0ce('0x18')]['create']({'phone':_0x532186[_0xf0ce('0xb')],'ContactId':_0x532186['id'],'ListId':_0x532186['ListId'],'scheduledat':_0x532186['scheduledat']?_0x532186[_0xf0ce('0x1e')]:moment()['format'](_0xf0ce('0x20')),'priority':_0x532186[_0xf0ce('0x1d')]?_0x532186['priority']:0x2,'callback':_0x532186['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x532186[_0xf0ce('0x21')]?_0x532186[_0xf0ce('0x21')]:undefined,'callbackat':_0x532186[_0xf0ce('0x21')]?moment()[_0xf0ce('0x1f')](_0xf0ce('0x20')):undefined,'CampaignId':_0x229a55['id']})['catch'](_0x308603());}}}});})[_0xf0ce('0x23')](function(){return _0x29990c[_0xf0ce('0x39')][_0xf0ce('0x2e')]({'attributes':['id'],'include':[{'model':_0x29990c[_0xf0ce('0x30')],'as':_0xf0ce('0x35'),'where':{'id':_0x532186['ListId']}}]})[_0xf0ce('0x23')](function(_0xc00518){if(_0xc00518){var _0x24628d=[];for(var _0x482206=0x0,_0x40d395;_0x482206<_0xc00518['length'];_0x482206+=0x1){_0x40d395=_0xc00518[_0x482206][_0xf0ce('0x36')]({'plain':!![]});_0x29990c['CmHopperBlack']['create']({'phone':_0x532186[_0xf0ce('0xb')],'ContactId':_0x532186['id'],'ListId':_0x532186[_0xf0ce('0x27')],'CampaignId':_0x40d395['id']})[_0xf0ce('0x22')](function(_0x344931){logger[_0xf0ce('0x15')](_0xf0ce('0x38'),_0xf0ce('0x16'),_0x344931[_0xf0ce('0x3a')]);});}}});})['then'](function(){_0x327934();})[_0xf0ce('0x22')](function(_0x2f442f){logger[_0xf0ce('0x15')](_0xf0ce('0x38'),'afterCreate',_0x2f442f[_0xf0ce('0x3a')]);_0x327934(_0x2f442f);});}else{_0x327934(new Error(_0xf0ce('0x3b')));}},'afterDestroy':function(_0x23bd9f,_0x3c8b13,_0x4927ba){var _0x46f3a0=_0x16ca6f[_0xf0ce('0x14')];var _0x4b1b53=_0x23bd9f[_0xf0ce('0x36')]({'plain':!![]});return _0x46f3a0[_0xf0ce('0x18')][_0xf0ce('0x2e')]({'raw':!![],'where':{'ListId':_0x4b1b53['ListId'],'ContactId':_0x4b1b53['id']}})[_0xf0ce('0x23')](function(_0x1369a1){if(!_['isEmpty'](_0x1369a1)){var _0x9d9c45=[];for(var _0x37e1ac=0x0;_0x37e1ac<_0x1369a1[_0xf0ce('0x32')];_0x37e1ac+=0x1){var _0x5000f6=_0x46f3a0[_0xf0ce('0x18')][_0xf0ce('0x3c')]({'where':{'ListId':_0x1369a1[_0x37e1ac]['ListId'],'ContactId':_0x1369a1[_0x37e1ac][_0xf0ce('0x3d')],'VoiceQueueId':_0x1369a1[_0x37e1ac][_0xf0ce('0x3e')],'CampaignId':_0x1369a1[_0x37e1ac]['CampaignId']}});_0x9d9c45[_0xf0ce('0x3f')](_0x5000f6);}return BPromise['all'](_0x9d9c45);}})['then'](function(_0x9e1efc){logger[_0xf0ce('0x40')](_0xf0ce('0x41'),util[_0xf0ce('0x17')](_0x9e1efc,{'showHidden':![],'depth':null}));_0x4927ba();})[_0xf0ce('0x22')](function(_0x40dbe4){logger[_0xf0ce('0x15')]('[CmContact][afterDestroy][Error]',util[_0xf0ce('0x17')](_0x40dbe4,{'showHidden':![],'depth':null}));_0x4927ba(_0x40dbe4);});}}});};
\ No newline at end of file
+var _0xcb99=['destroy','ContactId','VoiceQueueId','CampaignId','all','info','[CmContact][afterDestroy][Succesfull]','lodash','util','moment','bluebird','request-promise','path','./cmContact.attributes','exports','define','CmContact','cm_contacts','phone','fti_cm_contacts','firstName','lastName','fax','email','FULLTEXT','utf8mb4_unicode_ci','models','get','cmContact','afterCreate','inspect','CmHopper','findOne','then','cmContact,\x20afterCreate\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','create','priority','YYYY-MM-DD\x20HH:mm:ss','callbackUniqueid','format','catch','isNil','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','cmContact,\x20afterCreate,\x20','ListId','scheduledat','error','VoiceQueue','findAll','outbound','dialCheckDuplicateType','CmList','Lists','always','BlackLists','length','CmHopperBlack','cmContact,\x20%s,\x20%s','message','Campaign','List\x20not\x20found','isEmpty'];(function(_0x21ed7c,_0x5900b3){var _0x45b26d=function(_0x384c13){while(--_0x384c13){_0x21ed7c['push'](_0x21ed7c['shift']());}};_0x45b26d(++_0x5900b3);}(_0xcb99,0x85));var _0x9cb9=function(_0x347884,_0xd8ef37){_0x347884=_0x347884-0x0;var _0x2cd3fa=_0xcb99[_0x347884];return _0x2cd3fa;};'use strict';var _=require(_0x9cb9('0x0'));var util=require(_0x9cb9('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x9cb9('0x2'));var BPromise=require(_0x9cb9('0x3'));var rp=require(_0x9cb9('0x4'));var fs=require('fs');var path=require(_0x9cb9('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x9cb9('0x6'));module[_0x9cb9('0x7')]=function(_0x50109e,_0x37da11){return _0x50109e[_0x9cb9('0x8')](_0x9cb9('0x9'),attributes,{'tableName':_0x9cb9('0xa'),'paranoid':!![],'indexes':[{'name':_0x9cb9('0xb'),'fields':[_0x9cb9('0xb')]},{'name':_0x9cb9('0xc'),'fields':[_0x9cb9('0xd'),_0x9cb9('0xe'),_0x9cb9('0xb'),'mobile',_0x9cb9('0xf'),_0x9cb9('0x10')],'type':_0x9cb9('0x11')}],'timestamps':!![],'charset':'utf8mb4','collate':_0x9cb9('0x12'),'hooks':{'afterCreate':function(_0x131352,_0x40e84a,_0x107745){var _0x39dd8d=_0x50109e[_0x9cb9('0x13')];var _0x2beae4=_0x131352[_0x9cb9('0x14')]({'plain':!![]});function _0x5fd4b3(){return function(_0x444380){logger['error'](_0x9cb9('0x15'),_0x9cb9('0x16'),util[_0x9cb9('0x17')](_0x444380,{'showHidden':![],'depth':null}));};}var _0x195ab6=function(_0x23b64f){return new BPromise(function(_0x1e90b6,_0x450515){_0x39dd8d[_0x9cb9('0x18')][_0x9cb9('0x19')]({'where':{'phone':_0x2beae4[_0x9cb9('0xb')],'VoiceQueueId':_0x23b64f['id']}})[_0x9cb9('0x1a')](function(_0x271c56){if(!_['isNil'](_0x271c56)){throw new Error(_0x9cb9('0x1b')+_0x2beae4[_0x9cb9('0xb')]+_0x9cb9('0x1c')+_0x23b64f['id']);}return _0x39dd8d[_0x9cb9('0x18')][_0x9cb9('0x1d')]({'phone':_0x2beae4['phone'],'ContactId':_0x2beae4['id'],'ListId':_0x2beae4['ListId'],'priority':_0x2beae4[_0x9cb9('0x1e')]?_0x2beae4[_0x9cb9('0x1e')]:0x2,'scheduledat':_0x2beae4['scheduledat']?_0x2beae4['scheduledat']:moment()['format'](_0x9cb9('0x1f')),'callback':_0x2beae4[_0x9cb9('0x20')]?!![]:![],'callbackuniqueid':_0x2beae4['callbackUniqueid']?_0x2beae4[_0x9cb9('0x20')]:undefined,'callbackat':_0x2beae4['callbackUniqueid']?moment()[_0x9cb9('0x21')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'VoiceQueueId':_0x23b64f['id']});})[_0x9cb9('0x22')](function(_0x2f0dcf){_0x450515(_0x2f0dcf);});});};var _0x41e3ac=function(_0x4a0a8e){return new BPromise(function(_0x5f4218,_0x2f97b2){_0x39dd8d[_0x9cb9('0x18')][_0x9cb9('0x19')]({'where':{'phone':_0x2beae4[_0x9cb9('0xb')],'VoiceQueueId':_0x4a0a8e['id']}})[_0x9cb9('0x1a')](function(_0x5eca0a){if(!_[_0x9cb9('0x23')](_0x5eca0a)){throw new Error(_0x9cb9('0x1b')+_0x2beae4[_0x9cb9('0xb')]+_0x9cb9('0x24')+_0x4a0a8e['id']);}return _0x39dd8d['CmHopperFinal'][_0x9cb9('0x19')]({'where':{'calleridnum':_0x2beae4['phone'],'VoiceQueueId':_0x4a0a8e['id']}});})[_0x9cb9('0x1a')](function(_0x43d63b){if(!_[_0x9cb9('0x23')](_0x43d63b)){throw new Error(_0x9cb9('0x25')+_0x2beae4[_0x9cb9('0xb')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20VoiceQueue\x20'+_0x4a0a8e['id']);}return _0x39dd8d[_0x9cb9('0x18')][_0x9cb9('0x1d')]({'phone':_0x2beae4['phone'],'ContactId':_0x2beae4['id'],'ListId':_0x2beae4[_0x9cb9('0x26')],'priority':_0x2beae4['priority']?_0x2beae4[_0x9cb9('0x1e')]:0x2,'scheduledat':_0x2beae4[_0x9cb9('0x27')]?_0x2beae4[_0x9cb9('0x27')]:moment()[_0x9cb9('0x21')](_0x9cb9('0x1f')),'callback':_0x2beae4['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x2beae4['callbackUniqueid']?_0x2beae4[_0x9cb9('0x20')]:undefined,'callbackat':_0x2beae4[_0x9cb9('0x20')]?moment()[_0x9cb9('0x21')](_0x9cb9('0x1f')):undefined,'VoiceQueueId':_0x4a0a8e['id']});})['catch'](function(_0xe6d814){_0x2f97b2(_0xe6d814);});});};function _0x927484(){return function(_0x34cfdd){logger[_0x9cb9('0x28')](_0x9cb9('0x15'),_0x9cb9('0x16'),util[_0x9cb9('0x17')](_0x34cfdd,{'showHidden':![],'depth':null}));};}var _0x4d65d2=function(_0x1dad0f){return new BPromise(function(_0x1fd2fd,_0x1c8b4b){_0x39dd8d['CmHopper'][_0x9cb9('0x19')]({'where':{'phone':_0x2beae4[_0x9cb9('0xb')],'CampaignId':_0x1dad0f['id']}})[_0x9cb9('0x1a')](function(_0x21f101){if(!_[_0x9cb9('0x23')](_0x21f101)){throw new Error(_0x9cb9('0x1b')+_0x2beae4['phone']+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20Campaign\x20'+_0x1dad0f['id']);}return _0x39dd8d[_0x9cb9('0x18')][_0x9cb9('0x1d')]({'phone':_0x2beae4[_0x9cb9('0xb')],'ContactId':_0x2beae4['id'],'ListId':_0x2beae4[_0x9cb9('0x26')],'priority':_0x2beae4['priority']?_0x2beae4[_0x9cb9('0x1e')]:0x2,'scheduledat':_0x2beae4[_0x9cb9('0x27')]?_0x2beae4['scheduledat']:moment()[_0x9cb9('0x21')](_0x9cb9('0x1f')),'callback':_0x2beae4['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x2beae4[_0x9cb9('0x20')]?_0x2beae4[_0x9cb9('0x20')]:undefined,'callbackat':_0x2beae4[_0x9cb9('0x20')]?moment()[_0x9cb9('0x21')](_0x9cb9('0x1f')):undefined,'CampaignId':_0x1dad0f['id']});})[_0x9cb9('0x22')](function(_0x84b1f7){_0x1c8b4b(_0x84b1f7);});});};var _0x4d06ba=function(_0x1212e0){return new BPromise(function(_0x278b0e,_0x4a5e6a){_0x39dd8d[_0x9cb9('0x18')][_0x9cb9('0x19')]({'where':{'phone':_0x2beae4[_0x9cb9('0xb')],'CampaignId':_0x1212e0['id']}})[_0x9cb9('0x1a')](function(_0x1e1ec3){if(!_[_0x9cb9('0x23')](_0x1e1ec3)){throw new Error(_0x9cb9('0x1b')+_0x2beae4[_0x9cb9('0xb')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20Campaign\x20'+_0x1212e0['id']);}return _0x39dd8d['CmHopperFinal'][_0x9cb9('0x19')]({'where':{'calleridnum':_0x2beae4[_0x9cb9('0xb')],'CampaignId':_0x1212e0['id']}});})[_0x9cb9('0x1a')](function(_0x2cf57b){if(!_[_0x9cb9('0x23')](_0x2cf57b)){throw new Error(_0x9cb9('0x25')+_0x2beae4[_0x9cb9('0xb')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20Campaign\x20'+_0x1212e0['id']);}return _0x39dd8d[_0x9cb9('0x18')][_0x9cb9('0x1d')]({'phone':_0x2beae4[_0x9cb9('0xb')],'ContactId':_0x2beae4['id'],'ListId':_0x2beae4[_0x9cb9('0x26')],'priority':_0x2beae4[_0x9cb9('0x1e')]?_0x2beae4[_0x9cb9('0x1e')]:0x2,'scheduledat':_0x2beae4[_0x9cb9('0x27')]?_0x2beae4['scheduledat']:moment()[_0x9cb9('0x21')](_0x9cb9('0x1f')),'callback':_0x2beae4[_0x9cb9('0x20')]?!![]:![],'callbackuniqueid':_0x2beae4[_0x9cb9('0x20')]?_0x2beae4['callbackUniqueid']:undefined,'callbackat':_0x2beae4[_0x9cb9('0x20')]?moment()[_0x9cb9('0x21')](_0x9cb9('0x1f')):undefined,'CampaignId':_0x1212e0['id']});})['catch'](function(_0xfadfd9){_0x4a5e6a(_0xfadfd9);});});};if(_0x2beae4[_0x9cb9('0x26')]){_0x39dd8d[_0x9cb9('0x29')][_0x9cb9('0x2a')]({'where':{'type':_0x9cb9('0x2b')},'attributes':['id',_0x9cb9('0x2c')],'include':[{'model':_0x39dd8d[_0x9cb9('0x2d')],'as':_0x9cb9('0x2e'),'where':{'id':_0x2beae4['ListId']}}]})[_0x9cb9('0x1a')](function(_0x14b59c){if(_0x14b59c){var _0x3f2ada=[];for(var _0x4af44c=0x0,_0xe5b00a;_0x4af44c<_0x14b59c['length'];_0x4af44c+=0x1){_0xe5b00a=_0x14b59c[_0x4af44c][_0x9cb9('0x14')]({'plain':!![]});switch(_0xe5b00a['dialCheckDuplicateType']){case _0x9cb9('0x2f'):_0x41e3ac(_0xe5b00a)[_0x9cb9('0x22')](_0x5fd4b3());break;case'onlyIfOpen':_0x195ab6(_0xe5b00a)[_0x9cb9('0x22')](_0x5fd4b3());break;default:_0x39dd8d[_0x9cb9('0x18')][_0x9cb9('0x1d')]({'phone':_0x2beae4['phone'],'ContactId':_0x2beae4['id'],'ListId':_0x2beae4['ListId'],'scheduledat':_0x2beae4[_0x9cb9('0x27')]?_0x2beae4[_0x9cb9('0x27')]:moment()[_0x9cb9('0x21')](_0x9cb9('0x1f')),'priority':_0x2beae4[_0x9cb9('0x1e')]?_0x2beae4[_0x9cb9('0x1e')]:0x2,'callback':_0x2beae4[_0x9cb9('0x20')]?!![]:![],'callbackuniqueid':_0x2beae4['callbackUniqueid']?_0x2beae4['callbackUniqueid']:undefined,'callbackat':_0x2beae4[_0x9cb9('0x20')]?moment()[_0x9cb9('0x21')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'VoiceQueueId':_0xe5b00a['id']})[_0x9cb9('0x22')](_0x5fd4b3());}}}})[_0x9cb9('0x1a')](function(){return _0x39dd8d[_0x9cb9('0x29')][_0x9cb9('0x2a')]({'where':{'type':_0x9cb9('0x2b')},'attributes':['id'],'include':[{'model':_0x39dd8d[_0x9cb9('0x2d')],'as':_0x9cb9('0x30'),'where':{'id':_0x2beae4[_0x9cb9('0x26')]}}]})[_0x9cb9('0x1a')](function(_0x5c35cf){if(_0x5c35cf){var _0x5b1277=[];for(var _0xf902df=0x0,_0x50a5c1;_0xf902df<_0x5c35cf[_0x9cb9('0x31')];_0xf902df+=0x1){_0x50a5c1=_0x5c35cf[_0xf902df][_0x9cb9('0x14')]({'plain':!![]});_0x39dd8d[_0x9cb9('0x32')][_0x9cb9('0x1d')]({'phone':_0x2beae4[_0x9cb9('0xb')],'ContactId':_0x2beae4['id'],'ListId':_0x2beae4[_0x9cb9('0x26')],'VoiceQueueId':_0x50a5c1['id']})['catch'](function(_0x27383a){logger[_0x9cb9('0x28')](_0x9cb9('0x33'),_0x9cb9('0x16'),_0x27383a[_0x9cb9('0x34')]);});}}});})[_0x9cb9('0x1a')](function(){return _0x39dd8d[_0x9cb9('0x35')][_0x9cb9('0x2a')]({'attributes':['id',_0x9cb9('0x2c')],'include':[{'model':_0x39dd8d[_0x9cb9('0x2d')],'as':_0x9cb9('0x2e'),'where':{'id':_0x2beae4[_0x9cb9('0x26')]}}]})[_0x9cb9('0x1a')](function(_0x134437){if(_0x134437){var _0xb8c7f1=[];for(var _0x37c8d5=0x0,_0x279f15;_0x37c8d5<_0x134437['length'];_0x37c8d5+=0x1){_0x279f15=_0x134437[_0x37c8d5][_0x9cb9('0x14')]({'plain':!![]});switch(_0x279f15[_0x9cb9('0x2c')]){case _0x9cb9('0x2f'):_0x4d06ba(_0x279f15)[_0x9cb9('0x22')](_0x927484());break;case'onlyIfOpen':_0x4d65d2(_0x279f15)[_0x9cb9('0x22')](_0x927484());break;default:_0x39dd8d[_0x9cb9('0x18')][_0x9cb9('0x1d')]({'phone':_0x2beae4[_0x9cb9('0xb')],'ContactId':_0x2beae4['id'],'ListId':_0x2beae4['ListId'],'scheduledat':_0x2beae4[_0x9cb9('0x27')]?_0x2beae4[_0x9cb9('0x27')]:moment()[_0x9cb9('0x21')](_0x9cb9('0x1f')),'priority':_0x2beae4[_0x9cb9('0x1e')]?_0x2beae4[_0x9cb9('0x1e')]:0x2,'callback':_0x2beae4[_0x9cb9('0x20')]?!![]:![],'callbackuniqueid':_0x2beae4[_0x9cb9('0x20')]?_0x2beae4['callbackUniqueid']:undefined,'callbackat':_0x2beae4[_0x9cb9('0x20')]?moment()[_0x9cb9('0x21')](_0x9cb9('0x1f')):undefined,'CampaignId':_0x279f15['id']})[_0x9cb9('0x22')](_0x927484());}}}});})[_0x9cb9('0x1a')](function(){return _0x39dd8d['Campaign']['findAll']({'attributes':['id'],'include':[{'model':_0x39dd8d[_0x9cb9('0x2d')],'as':_0x9cb9('0x30'),'where':{'id':_0x2beae4[_0x9cb9('0x26')]}}]})[_0x9cb9('0x1a')](function(_0x16e351){if(_0x16e351){var _0x4761c8=[];for(var _0x4b71ee=0x0,_0x22efb0;_0x4b71ee<_0x16e351['length'];_0x4b71ee+=0x1){_0x22efb0=_0x16e351[_0x4b71ee][_0x9cb9('0x14')]({'plain':!![]});_0x39dd8d['CmHopperBlack'][_0x9cb9('0x1d')]({'phone':_0x2beae4[_0x9cb9('0xb')],'ContactId':_0x2beae4['id'],'ListId':_0x2beae4[_0x9cb9('0x26')],'CampaignId':_0x22efb0['id']})['catch'](function(_0x46fba2){logger[_0x9cb9('0x28')](_0x9cb9('0x33'),'afterCreate',_0x46fba2[_0x9cb9('0x34')]);});}}});})['then'](function(){_0x107745();})['catch'](function(_0x45cb49){logger[_0x9cb9('0x28')](_0x9cb9('0x33'),_0x9cb9('0x16'),_0x45cb49[_0x9cb9('0x34')]);_0x107745(_0x45cb49);});}else{_0x107745(new Error(_0x9cb9('0x36')));}},'afterDestroy':function(_0x3fcbcd,_0x406d48,_0x39588a){var _0x21af84=_0x50109e[_0x9cb9('0x13')];var _0x1a51d2=_0x3fcbcd['get']({'plain':!![]});return _0x21af84[_0x9cb9('0x18')][_0x9cb9('0x2a')]({'raw':!![],'where':{'ListId':_0x1a51d2[_0x9cb9('0x26')],'ContactId':_0x1a51d2['id']}})[_0x9cb9('0x1a')](function(_0x3a8b97){if(!_[_0x9cb9('0x37')](_0x3a8b97)){var _0x4742ee=[];for(var _0x4934bf=0x0;_0x4934bf<_0x3a8b97['length'];_0x4934bf+=0x1){var _0x29a8d6=_0x21af84[_0x9cb9('0x18')][_0x9cb9('0x38')]({'where':{'ListId':_0x3a8b97[_0x4934bf][_0x9cb9('0x26')],'ContactId':_0x3a8b97[_0x4934bf][_0x9cb9('0x39')],'VoiceQueueId':_0x3a8b97[_0x4934bf][_0x9cb9('0x3a')],'CampaignId':_0x3a8b97[_0x4934bf][_0x9cb9('0x3b')]}});_0x4742ee['push'](_0x29a8d6);}return BPromise[_0x9cb9('0x3c')](_0x4742ee);}})[_0x9cb9('0x1a')](function(_0x234be1){logger[_0x9cb9('0x3d')](_0x9cb9('0x3e'),util[_0x9cb9('0x17')](_0x234be1,{'showHidden':![],'depth':null}));_0x39588a();})[_0x9cb9('0x22')](function(_0x3943dc){logger[_0x9cb9('0x28')]('[CmContact][afterDestroy][Error]',util[_0x9cb9('0x17')](_0x3943dc,{'showHidden':![],'depth':null}));_0x39588a(_0x3943dc);});}}});};
\ No newline at end of file
index 37dcf2c..53c3a6f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d12=['../../config/logger','../../config/environment','client','redis','localhost','socket.io-emitter','./cmContact.socket','then','info','request\x20sent','stringify','error','code','CmContact,\x20%s,\x20%s','message','catch','GetCmContact','CmContact','findAll','options','raw','where','attributes','include','map','model','debug','CreateCmContact','create','body','length','startsWith','cf_','update','table','id\x20=\x20?','toString','sequelize','lodash','moment','bluebird','randomstring','ioredis','squel','../../mysqldb','../../config/utils'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0x1d12,0x82));var _0x21d1=function(_0x4f1d17,_0x245fb2){_0x4f1d17=_0x4f1d17-0x0;var _0x55783b=_0x1d12[_0x4f1d17];return _0x55783b;};'use strict';var _=require(_0x21d1('0x0'));var util=require('util');var moment=require(_0x21d1('0x1'));var BPromise=require(_0x21d1('0x2'));var rs=require(_0x21d1('0x3'));var fs=require('fs');var Redis=require(_0x21d1('0x4'));var squel=require(_0x21d1('0x5'));var db=require(_0x21d1('0x6'))['db'];var utils=require(_0x21d1('0x7'));var logger=require(_0x21d1('0x8'))('rpc');var config=require(_0x21d1('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x21d1('0xa')]['http']({'port':0x232a});config['redis']=_['defaults'](config[_0x21d1('0xb')],{'host':_0x21d1('0xc'),'port':0x18eb});var socket=require(_0x21d1('0xd'))(new Redis(config[_0x21d1('0xb')]));require(_0x21d1('0xe'))['register'](socket);function respondWithRpcPromise(_0x2c7ff1,_0x50653d,_0x329f3f){return new BPromise(function(_0x18eeb7,_0x21e240){return client['request'](_0x2c7ff1,_0x329f3f)[_0x21d1('0xf')](function(_0x32fade){logger[_0x21d1('0x10')]('CmContact,\x20%s,\x20%s',_0x50653d,'request\x20sent');logger['debug']('CmContact,\x20%s,\x20%s,\x20%s',_0x50653d,_0x21d1('0x11'),JSON[_0x21d1('0x12')](_0x32fade));if(_0x32fade[_0x21d1('0x13')]){if(_0x32fade[_0x21d1('0x13')][_0x21d1('0x14')]===0x1f4){logger['error']('CmContact,\x20%s,\x20%s',_0x50653d,_0x32fade['error']['message']);return _0x21e240(_0x32fade[_0x21d1('0x13')]['message']);}logger[_0x21d1('0x13')](_0x21d1('0x15'),_0x50653d,_0x32fade['error'][_0x21d1('0x16')]);return _0x18eeb7(_0x32fade[_0x21d1('0x13')]['message']);}else{logger[_0x21d1('0x10')](_0x21d1('0x15'),_0x50653d,_0x21d1('0x11'));_0x18eeb7(_0x32fade['result']['message']);}})[_0x21d1('0x17')](function(_0x3d81d2){logger[_0x21d1('0x13')](_0x21d1('0x15'),_0x50653d,_0x3d81d2);_0x21e240(_0x3d81d2);});});}exports[_0x21d1('0x18')]=function(_0x3989bb){var _0x38684f=this;return new Promise(function(_0x3ab05c,_0x5afefc){return db[_0x21d1('0x19')][_0x21d1('0x1a')]({'raw':_0x3989bb[_0x21d1('0x1b')]?_0x3989bb[_0x21d1('0x1b')][_0x21d1('0x1c')]===undefined?!![]:![]:!![],'where':_0x3989bb[_0x21d1('0x1b')]?_0x3989bb['options'][_0x21d1('0x1d')]||null:null,'attributes':_0x3989bb['options']?_0x3989bb['options'][_0x21d1('0x1e')]||null:null,'limit':_0x3989bb['options']?_0x3989bb[_0x21d1('0x1b')]['limit']||null:null,'include':_0x3989bb[_0x21d1('0x1b')]?_0x3989bb[_0x21d1('0x1b')][_0x21d1('0x1f')]?_[_0x21d1('0x20')](_0x3989bb[_0x21d1('0x1b')][_0x21d1('0x1f')],function(_0x54108a){return{'model':db[_0x54108a['model']],'as':_0x54108a['as'],'attributes':_0x54108a[_0x21d1('0x1e')],'include':_0x54108a['include']?_['map'](_0x54108a[_0x21d1('0x1f')],function(_0x54795b){return{'model':db[_0x54795b['model']],'as':_0x54795b['as'],'attributes':_0x54795b['attributes'],'include':_0x54795b[_0x21d1('0x1f')]?_['map'](_0x54795b[_0x21d1('0x1f')],function(_0x53b726){return{'model':db[_0x53b726[_0x21d1('0x21')]],'as':_0x53b726['as'],'attributes':_0x53b726['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x3557c2){logger['info'](_0x21d1('0x18'),_0x3989bb);logger[_0x21d1('0x22')](_0x21d1('0x18'),_0x3989bb,JSON[_0x21d1('0x12')](_0x3557c2));_0x3ab05c(_0x3557c2);})['catch'](function(_0xea0a32){logger['error'](_0x21d1('0x18'),_0xea0a32['message'],_0x3989bb);_0x5afefc(_0x38684f[_0x21d1('0x13')](0x1f4,_0xea0a32[_0x21d1('0x16')]));});});};exports[_0x21d1('0x23')]=function(_0x45f8b0){var _0x5cb492=this;return new Promise(function(_0x4c5ca6,_0x7294d){return db['CmContact'][_0x21d1('0x24')](_0x45f8b0[_0x21d1('0x25')],{'raw':_0x45f8b0[_0x21d1('0x1b')]?_0x45f8b0[_0x21d1('0x1b')][_0x21d1('0x1c')]===undefined?!![]:![]:!![]})[_0x21d1('0xf')](function(_0x597938){var _0x1b2bfc;for(var _0x1b45fa=0x0;_0x1b45fa<Object['keys'](_0x45f8b0[_0x21d1('0x25')])[_0x21d1('0x26')];_0x1b45fa++){var _0x38871f=Object['keys'](_0x45f8b0['body'])[_0x1b45fa];if(_0x38871f[_0x21d1('0x27')](_0x21d1('0x28'))){_0x1b2bfc=squel[_0x21d1('0x29')]()[_0x21d1('0x2a')]('cm_contacts')['set'](_0x38871f,_0x45f8b0['body'][_0x38871f])['where'](_0x21d1('0x2b'),_0x597938['id'])[_0x21d1('0x2c')]();break;}}if(!_0x1b2bfc)return _0x597938;return db[_0x21d1('0x2d')]['query'](_0x1b2bfc)[_0x21d1('0xf')](function(){return _0x597938;});})[_0x21d1('0xf')](function(_0x3fdde8){logger['info'](_0x21d1('0x23'),_0x45f8b0);logger[_0x21d1('0x22')]('CreateCmContact',_0x45f8b0,JSON[_0x21d1('0x12')](_0x3fdde8));_0x4c5ca6(_0x3fdde8);})[_0x21d1('0x17')](function(_0x251042){logger['error'](_0x21d1('0x23'),_0x251042[_0x21d1('0x16')],_0x45f8b0);_0x7294d(_0x5cb492['error'](0x1f4,_0x251042[_0x21d1('0x16')]));});});};
\ No newline at end of file
+var _0xa6cd=['GetCmContact','catch','CreateCmContact','keys','body','startsWith','update','table','cm_contacts','set','id\x20=\x20?','toString','sequelize','query','util','moment','bluebird','randomstring','ioredis','squel','../../mysqldb','../../config/utils','rpc','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./cmContact.socket','request','info','CmContact,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','CmContact','findAll','options','raw','where','attributes','limit','map','model','include','then'];(function(_0x815741,_0x454d7e){var _0x1ac72b=function(_0x267a78){while(--_0x267a78){_0x815741['push'](_0x815741['shift']());}};_0x1ac72b(++_0x454d7e);}(_0xa6cd,0x74));var _0xda6c=function(_0x39c009,_0x21b330){_0x39c009=_0x39c009-0x0;var _0x2c6cb8=_0xa6cd[_0x39c009];return _0x2c6cb8;};'use strict';var _=require('lodash');var util=require(_0xda6c('0x0'));var moment=require(_0xda6c('0x1'));var BPromise=require(_0xda6c('0x2'));var rs=require(_0xda6c('0x3'));var fs=require('fs');var Redis=require(_0xda6c('0x4'));var squel=require(_0xda6c('0x5'));var db=require(_0xda6c('0x6'))['db'];var utils=require(_0xda6c('0x7'));var logger=require('../../config/logger')(_0xda6c('0x8'));var config=require('../../config/environment');var jayson=require(_0xda6c('0x9'));var client=jayson['client'][_0xda6c('0xa')]({'port':0x232a});config[_0xda6c('0xb')]=_[_0xda6c('0xc')](config[_0xda6c('0xb')],{'host':_0xda6c('0xd'),'port':0x18eb});var socket=require(_0xda6c('0xe'))(new Redis(config[_0xda6c('0xb')]));require(_0xda6c('0xf'))['register'](socket);function respondWithRpcPromise(_0x2be01b,_0x4360da,_0x532c2e){return new BPromise(function(_0x4f4278,_0x5dcdb2){return client[_0xda6c('0x10')](_0x2be01b,_0x532c2e)['then'](function(_0x3529d9){logger[_0xda6c('0x11')](_0xda6c('0x12'),_0x4360da,_0xda6c('0x13'));logger[_0xda6c('0x14')]('CmContact,\x20%s,\x20%s,\x20%s',_0x4360da,_0xda6c('0x13'),JSON[_0xda6c('0x15')](_0x3529d9));if(_0x3529d9[_0xda6c('0x16')]){if(_0x3529d9[_0xda6c('0x16')][_0xda6c('0x17')]===0x1f4){logger[_0xda6c('0x16')](_0xda6c('0x12'),_0x4360da,_0x3529d9[_0xda6c('0x16')]['message']);return _0x5dcdb2(_0x3529d9[_0xda6c('0x16')][_0xda6c('0x18')]);}logger[_0xda6c('0x16')](_0xda6c('0x12'),_0x4360da,_0x3529d9[_0xda6c('0x16')][_0xda6c('0x18')]);return _0x4f4278(_0x3529d9[_0xda6c('0x16')][_0xda6c('0x18')]);}else{logger['info'](_0xda6c('0x12'),_0x4360da,_0xda6c('0x13'));_0x4f4278(_0x3529d9[_0xda6c('0x19')][_0xda6c('0x18')]);}})['catch'](function(_0x4b2b7e){logger[_0xda6c('0x16')](_0xda6c('0x12'),_0x4360da,_0x4b2b7e);_0x5dcdb2(_0x4b2b7e);});});}exports['GetCmContact']=function(_0x96ac29){var _0x4ce57a=this;return new Promise(function(_0x549f19,_0x59741b){return db[_0xda6c('0x1a')][_0xda6c('0x1b')]({'raw':_0x96ac29['options']?_0x96ac29[_0xda6c('0x1c')][_0xda6c('0x1d')]===undefined?!![]:![]:!![],'where':_0x96ac29[_0xda6c('0x1c')]?_0x96ac29[_0xda6c('0x1c')][_0xda6c('0x1e')]||null:null,'attributes':_0x96ac29[_0xda6c('0x1c')]?_0x96ac29[_0xda6c('0x1c')][_0xda6c('0x1f')]||null:null,'limit':_0x96ac29['options']?_0x96ac29['options'][_0xda6c('0x20')]||null:null,'include':_0x96ac29['options']?_0x96ac29[_0xda6c('0x1c')]['include']?_[_0xda6c('0x21')](_0x96ac29[_0xda6c('0x1c')]['include'],function(_0x5cfd51){return{'model':db[_0x5cfd51[_0xda6c('0x22')]],'as':_0x5cfd51['as'],'attributes':_0x5cfd51['attributes'],'include':_0x5cfd51[_0xda6c('0x23')]?_[_0xda6c('0x21')](_0x5cfd51[_0xda6c('0x23')],function(_0x43b5a5){return{'model':db[_0x43b5a5[_0xda6c('0x22')]],'as':_0x43b5a5['as'],'attributes':_0x43b5a5[_0xda6c('0x1f')],'include':_0x43b5a5[_0xda6c('0x23')]?_[_0xda6c('0x21')](_0x43b5a5[_0xda6c('0x23')],function(_0x214d74){return{'model':db[_0x214d74['model']],'as':_0x214d74['as'],'attributes':_0x214d74[_0xda6c('0x1f')]};}):[]};}):[]};}):[]:[]})[_0xda6c('0x24')](function(_0x2fa8f1){logger[_0xda6c('0x11')](_0xda6c('0x25'),_0x96ac29);logger[_0xda6c('0x14')](_0xda6c('0x25'),_0x96ac29,JSON['stringify'](_0x2fa8f1));_0x549f19(_0x2fa8f1);})[_0xda6c('0x26')](function(_0x4848bd){logger['error'](_0xda6c('0x25'),_0x4848bd[_0xda6c('0x18')],_0x96ac29);_0x59741b(_0x4ce57a['error'](0x1f4,_0x4848bd[_0xda6c('0x18')]));});});};exports[_0xda6c('0x27')]=function(_0x182302){var _0x26b3c5=this;return new Promise(function(_0x415bb5,_0x4154af){return db[_0xda6c('0x1a')]['create'](_0x182302['body'],{'raw':_0x182302[_0xda6c('0x1c')]?_0x182302['options'][_0xda6c('0x1d')]===undefined?!![]:![]:!![]})[_0xda6c('0x24')](function(_0x4b4559){var _0x38fbe5;for(var _0x1e2bfe=0x0;_0x1e2bfe<Object[_0xda6c('0x28')](_0x182302[_0xda6c('0x29')])['length'];_0x1e2bfe++){var _0x3c8e01=Object[_0xda6c('0x28')](_0x182302['body'])[_0x1e2bfe];if(_0x3c8e01[_0xda6c('0x2a')]('cf_')){_0x38fbe5=squel[_0xda6c('0x2b')]()[_0xda6c('0x2c')](_0xda6c('0x2d'))[_0xda6c('0x2e')](_0x3c8e01,_0x182302['body'][_0x3c8e01])[_0xda6c('0x1e')](_0xda6c('0x2f'),_0x4b4559['id'])[_0xda6c('0x30')]();break;}}if(!_0x38fbe5)return _0x4b4559;return db[_0xda6c('0x31')][_0xda6c('0x32')](_0x38fbe5)[_0xda6c('0x24')](function(){return _0x4b4559;});})[_0xda6c('0x24')](function(_0xe7000a){logger[_0xda6c('0x11')](_0xda6c('0x27'),_0x182302);logger[_0xda6c('0x14')](_0xda6c('0x27'),_0x182302,JSON['stringify'](_0xe7000a));_0x415bb5(_0xe7000a);})['catch'](function(_0x7c1d5a){logger['error']('CreateCmContact',_0x7c1d5a['message'],_0x182302);_0x4154af(_0x26b3c5[_0xda6c('0x16')](0x1f4,_0x7c1d5a[_0xda6c('0x18')]));});});};
\ No newline at end of file
index ed7016d..9a5a149 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(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4bfac3,_0x58324d){_0x4bfac3=_0x4bfac3-0x0;var _0x15f0f2=_0xa9e0[_0x4bfac3];return _0x15f0f2;};'use strict';var CmContactEvents=require(_0x0a9e('0x0'));var events=[_0x0a9e('0x1'),_0x0a9e('0x2'),'update'];function createListener(_0x550fbc,_0x18d5c9){return function(_0x4ce2f1){_0x18d5c9[_0x0a9e('0x3')](_0x550fbc,_0x4ce2f1);};}function removeListener(_0x432180,_0x2ab90b){return function(){CmContactEvents[_0x0a9e('0x4')](_0x432180,_0x2ab90b);};}exports[_0x0a9e('0x5')]=function(_0x57b080){for(var _0x219af0=0x0,_0x441e3a=events[_0x0a9e('0x6')];_0x219af0<_0x441e3a;_0x219af0++){var _0x5f41ea=events[_0x219af0];var _0x503809=createListener(_0x0a9e('0x7')+_0x5f41ea,_0x57b080);CmContactEvents['on'](_0x5f41ea,_0x503809);}};
\ No newline at end of file
+var _0xa9e0=['register','length','cmContact:','./cmContact.events','save','remove','emit','removeListener'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0xa9e0[_0x2dafbe];return _0x58a45a;};'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 b62153a..f107766 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf51b=['/:id/hoppers','getHoppers','/:id/hopper_histories','/:id/hopper_finals','getHopperFinals','/:id/jscripty_sessions','/:id/journey','post','/merge','create','/create_many','bulkCreate','/:id/tags','setTags','root','server/files/tmp','originalname','format','%s-%s%s','extname','now','/csv','single','uploadCsv','replace','basename','/upload','file','/upload/:id','import','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmContact.controller','index','get','/describe','isAuthenticated','describe','/:id','show','getTags'];(function(_0x11dc39,_0x491115){var _0x457277=function(_0x1d77cd){while(--_0x1d77cd){_0x11dc39['push'](_0x11dc39['shift']());}};_0x457277(++_0x491115);}(_0xf51b,0xf2));var _0xbf51=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xf51b[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0xbf51('0x0'));var util=require('util');var path=require(_0xbf51('0x1'));var timeout=require(_0xbf51('0x2'));var express=require(_0xbf51('0x3'));var router=express[_0xbf51('0x4')]();var fs_extra=require(_0xbf51('0x5'));var auth=require(_0xbf51('0x6'));var interaction=require(_0xbf51('0x7'));var config=require(_0xbf51('0x8'));var controller=require(_0xbf51('0x9'));router['get']('/',auth['isAuthenticated'](),controller[_0xbf51('0xa')]);router[_0xbf51('0xb')](_0xbf51('0xc'),auth[_0xbf51('0xd')](),controller[_0xbf51('0xe')]);router[_0xbf51('0xb')](_0xbf51('0xf'),auth[_0xbf51('0xd')](),controller[_0xbf51('0x10')]);router[_0xbf51('0xb')]('/:id/tags',auth[_0xbf51('0xd')](),controller[_0xbf51('0x11')]);router[_0xbf51('0xb')](_0xbf51('0x12'),auth[_0xbf51('0xd')](),controller[_0xbf51('0x13')]);router[_0xbf51('0xb')](_0xbf51('0x14'),auth[_0xbf51('0xd')](),controller['getHopperHistories']);router[_0xbf51('0xb')](_0xbf51('0x15'),auth[_0xbf51('0xd')](),controller[_0xbf51('0x16')]);router['get'](_0xbf51('0x17'),auth[_0xbf51('0xd')](),controller['getJscriptySessions']);router[_0xbf51('0xb')](_0xbf51('0x18'),auth['isAuthenticated'](),controller['getJourney']);router[_0xbf51('0x19')](_0xbf51('0x1a'),auth[_0xbf51('0xd')](),controller['merge']);router[_0xbf51('0x19')]('/',auth[_0xbf51('0xd')](),controller[_0xbf51('0x1b')]);router[_0xbf51('0x19')](_0xbf51('0x1c'),auth[_0xbf51('0xd')](),controller[_0xbf51('0x1d')]);router[_0xbf51('0x19')](_0xbf51('0x1e'),auth[_0xbf51('0xd')](),controller[_0xbf51('0x1f')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x289436,_0x302b96,_0x584cd2){_0x584cd2(null,path['join'](config[_0xbf51('0x20')],_0xbf51('0x21')));},'filename':function(_0x5ada63,_0x5643e2,_0x5351d2){_0x5643e2[_0xbf51('0x22')]=_0x5643e2[_0xbf51('0x22')]['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x5351d2(null,util[_0xbf51('0x23')](_0xbf51('0x24'),path['basename'](_0x5643e2['originalname'],path[_0xbf51('0x25')](_0x5643e2[_0xbf51('0x22')])),Date[_0xbf51('0x26')](),path[_0xbf51('0x25')](_0x5643e2[_0xbf51('0x22')])));}})});router[_0xbf51('0x19')](_0xbf51('0x27'),upload[_0xbf51('0x28')]('file'),controller[_0xbf51('0x29')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x5d8053,_0x3dfb86,_0x4e2c44){_0x4e2c44(null,path['join'](config[_0xbf51('0x20')],_0xbf51('0x21')));},'filename':function(_0x4ed2fb,_0x4512f4,_0x3c79a1){_0x4512f4['originalname']=_0x4512f4[_0xbf51('0x22')][_0xbf51('0x2a')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x3c79a1(null,util[_0xbf51('0x23')](_0xbf51('0x24'),path[_0xbf51('0x2b')](_0x4512f4[_0xbf51('0x22')],path[_0xbf51('0x25')](_0x4512f4[_0xbf51('0x22')])),Date[_0xbf51('0x26')](),path[_0xbf51('0x25')](_0x4512f4[_0xbf51('0x22')])));}})});router[_0xbf51('0x19')](_0xbf51('0x2c'),upload[_0xbf51('0x28')](_0xbf51('0x2d')),controller['upload']);router['post'](_0xbf51('0x2e'),auth[_0xbf51('0xd')](),controller[_0xbf51('0x2f')]);router['put'](_0xbf51('0xf'),auth[_0xbf51('0xd')](),controller[_0xbf51('0x30')]);router[_0xbf51('0x31')](_0xbf51('0xf'),auth['isAuthenticated'](),controller[_0xbf51('0x32')]);module[_0xbf51('0x33')]=router;
\ No newline at end of file
+var _0xd23b=['isAuthenticated','describe','/:id','show','getTags','/:id/hoppers','/:id/hopper_histories','getHopperHistories','/:id/hopper_finals','getHopperFinals','/:id/jscripty_sessions','getJscriptySessions','/:id/journey','getJourney','post','/merge','merge','create','/create_many','bulkCreate','setTags','diskStorage','join','root','server/files/tmp','originalname','replace','format','%s-%s%s','basename','extname','now','/csv','uploadCsv','/upload','single','file','upload','import','put','update','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./cmContact.controller','get','index','/describe'];(function(_0xb66f92,_0x301f99){var _0x344d2d=function(_0x34378c){while(--_0x34378c){_0xb66f92['push'](_0xb66f92['shift']());}};_0x344d2d(++_0x301f99);}(_0xd23b,0x143));var _0xbd23=function(_0x9d639c,_0x524dbe){_0x9d639c=_0x9d639c-0x0;var _0x1671de=_0xd23b[_0x9d639c];return _0x1671de;};'use strict';var multer=require(_0xbd23('0x0'));var util=require(_0xbd23('0x1'));var path=require(_0xbd23('0x2'));var timeout=require(_0xbd23('0x3'));var express=require(_0xbd23('0x4'));var router=express[_0xbd23('0x5')]();var fs_extra=require(_0xbd23('0x6'));var auth=require(_0xbd23('0x7'));var interaction=require(_0xbd23('0x8'));var config=require('../../config/environment');var controller=require(_0xbd23('0x9'));router[_0xbd23('0xa')]('/',auth['isAuthenticated'](),controller[_0xbd23('0xb')]);router[_0xbd23('0xa')](_0xbd23('0xc'),auth[_0xbd23('0xd')](),controller[_0xbd23('0xe')]);router[_0xbd23('0xa')](_0xbd23('0xf'),auth[_0xbd23('0xd')](),controller[_0xbd23('0x10')]);router[_0xbd23('0xa')]('/:id/tags',auth[_0xbd23('0xd')](),controller[_0xbd23('0x11')]);router['get'](_0xbd23('0x12'),auth[_0xbd23('0xd')](),controller['getHoppers']);router[_0xbd23('0xa')](_0xbd23('0x13'),auth[_0xbd23('0xd')](),controller[_0xbd23('0x14')]);router[_0xbd23('0xa')](_0xbd23('0x15'),auth[_0xbd23('0xd')](),controller[_0xbd23('0x16')]);router[_0xbd23('0xa')](_0xbd23('0x17'),auth[_0xbd23('0xd')](),controller[_0xbd23('0x18')]);router['get'](_0xbd23('0x19'),auth[_0xbd23('0xd')](),controller[_0xbd23('0x1a')]);router[_0xbd23('0x1b')](_0xbd23('0x1c'),auth[_0xbd23('0xd')](),controller[_0xbd23('0x1d')]);router[_0xbd23('0x1b')]('/',auth[_0xbd23('0xd')](),controller[_0xbd23('0x1e')]);router[_0xbd23('0x1b')](_0xbd23('0x1f'),auth[_0xbd23('0xd')](),controller[_0xbd23('0x20')]);router[_0xbd23('0x1b')]('/:id/tags',auth['isAuthenticated'](),controller[_0xbd23('0x21')]);var upload=multer({'storage':multer[_0xbd23('0x22')]({'destination':function(_0x178af6,_0xd0728e,_0x403574){_0x403574(null,path[_0xbd23('0x23')](config[_0xbd23('0x24')],_0xbd23('0x25')));},'filename':function(_0x298488,_0x552386,_0x49f102){_0x552386[_0xbd23('0x26')]=_0x552386[_0xbd23('0x26')][_0xbd23('0x27')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x49f102(null,util[_0xbd23('0x28')](_0xbd23('0x29'),path[_0xbd23('0x2a')](_0x552386['originalname'],path[_0xbd23('0x2b')](_0x552386[_0xbd23('0x26')])),Date[_0xbd23('0x2c')](),path[_0xbd23('0x2b')](_0x552386[_0xbd23('0x26')])));}})});router['post'](_0xbd23('0x2d'),upload['single']('file'),controller[_0xbd23('0x2e')]);var upload=multer({'storage':multer[_0xbd23('0x22')]({'destination':function(_0x3bd942,_0x36e79d,_0x445fd2){_0x445fd2(null,path[_0xbd23('0x23')](config[_0xbd23('0x24')],_0xbd23('0x25')));},'filename':function(_0x1d8c10,_0x3c688e,_0x333351){_0x3c688e[_0xbd23('0x26')]=_0x3c688e['originalname'][_0xbd23('0x27')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x333351(null,util[_0xbd23('0x28')](_0xbd23('0x29'),path[_0xbd23('0x2a')](_0x3c688e[_0xbd23('0x26')],path[_0xbd23('0x2b')](_0x3c688e[_0xbd23('0x26')])),Date['now'](),path[_0xbd23('0x2b')](_0x3c688e[_0xbd23('0x26')])));}})});router[_0xbd23('0x1b')](_0xbd23('0x2f'),upload[_0xbd23('0x30')](_0xbd23('0x31')),controller[_0xbd23('0x32')]);router[_0xbd23('0x1b')]('/upload/:id',auth[_0xbd23('0xd')](),controller[_0xbd23('0x33')]);router[_0xbd23('0x34')](_0xbd23('0xf'),auth[_0xbd23('0xd')](),controller[_0xbd23('0x35')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0xbd23('0x36')]);module[_0xbd23('0x37')]=router;
\ No newline at end of file
index fdbbac2..f562856 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x92e9=['long','type','select','parse','values','isArray','setDataValue','stringify','BOOLEAN','ENUM','sequelize','lodash','exports','VIRTUAL','getDataValue','alias','STRING'];(function(_0x2ca453,_0x518513){var _0x454bb4=function(_0x3a2620){while(--_0x3a2620){_0x2ca453['push'](_0x2ca453['shift']());}};_0x454bb4(++_0x518513);}(_0x92e9,0x15e));var _0x992e=function(_0x1b4b07,_0x150b64){_0x1b4b07=_0x1b4b07-0x0;var _0x5dce6f=_0x92e9[_0x1b4b07];return _0x5dce6f;};'use strict';var Sequelize=require(_0x992e('0x0'));var _=require(_0x992e('0x1'));module[_0x992e('0x2')]={'name':{'type':Sequelize[_0x992e('0x3')],'get':function(_0x1cae74){return this[_0x992e('0x4')](_0x992e('0x5'));}},'alias':{'type':Sequelize[_0x992e('0x6')],'allowNull':![],'set':function(_0x5535bb){this['setDataValue'](_0x992e('0x5'),_0x5535bb?_0x5535bb:this[_0x992e('0x4')]('name'));}},'type':{'type':Sequelize[_0x992e('0x6')],'allowNull':![]},'values':{'type':Sequelize['TEXT'](_0x992e('0x7')),'get':function(){if(this[_0x992e('0x4')](_0x992e('0x8'))===_0x992e('0x9')){return JSON[_0x992e('0xa')](this[_0x992e('0x4')](_0x992e('0xb')));}else{return this['getDataValue'](_0x992e('0xb'));}},'set':function(_0x30a798){if(Array[_0x992e('0xc')](_0x30a798)){this[_0x992e('0xd')]('values',JSON[_0x992e('0xe')](_0x30a798));}else{this[_0x992e('0xd')](_0x992e('0xb'),_0x30a798);}}},'required':{'type':Sequelize[_0x992e('0xf')],'defaultValue':![]},'clickToAction':{'type':Sequelize[_0x992e('0xf')],'defaultValue':![]},'actionType':{'type':Sequelize[_0x992e('0x10')]('voice')}};
\ No newline at end of file
+var _0x34b9=['TEXT','long','type','parse','values','isArray','stringify','BOOLEAN','ENUM','voice','lodash','VIRTUAL','getDataValue','alias','STRING','setDataValue'];(function(_0x69f6e7,_0x26b73e){var _0x135a2d=function(_0x4643c4){while(--_0x4643c4){_0x69f6e7['push'](_0x69f6e7['shift']());}};_0x135a2d(++_0x26b73e);}(_0x34b9,0xba));var _0x934b=function(_0x25c5ba,_0x407c17){_0x25c5ba=_0x25c5ba-0x0;var _0x20ec4e=_0x34b9[_0x25c5ba];return _0x20ec4e;};'use strict';var Sequelize=require('sequelize');var _=require(_0x934b('0x0'));module['exports']={'name':{'type':Sequelize[_0x934b('0x1')],'get':function(_0x538330){return this[_0x934b('0x2')](_0x934b('0x3'));}},'alias':{'type':Sequelize[_0x934b('0x4')],'allowNull':![],'set':function(_0x11f05e){this[_0x934b('0x5')]('alias',_0x11f05e?_0x11f05e:this[_0x934b('0x2')]('name'));}},'type':{'type':Sequelize[_0x934b('0x4')],'allowNull':![]},'values':{'type':Sequelize[_0x934b('0x6')](_0x934b('0x7')),'get':function(){if(this['getDataValue'](_0x934b('0x8'))==='select'){return JSON[_0x934b('0x9')](this[_0x934b('0x2')](_0x934b('0xa')));}else{return this[_0x934b('0x2')]('values');}},'set':function(_0x216aba){if(Array[_0x934b('0xb')](_0x216aba)){this[_0x934b('0x5')]('values',JSON[_0x934b('0xc')](_0x216aba));}else{this[_0x934b('0x5')](_0x934b('0xa'),_0x216aba);}}},'required':{'type':Sequelize[_0x934b('0xd')],'defaultValue':![]},'clickToAction':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'actionType':{'type':Sequelize[_0x934b('0xe')](_0x934b('0xf'))}};
\ No newline at end of file
index ec7fc52..6da5961 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4346=['../../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','apply','reject','update','destroy','send','map','fieldName','model','name','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','CmCustomField','then','includeAll','include','findAll','catch','show','params','rawAttributes','options','find','body','create','sequelize','transaction','TEXT','text','INTEGER','switch','Sequelize','BOOLEAN','defaultValue','queryInterface','addColumn','cm_contacts','cf_%d','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis'];(function(_0x35da42,_0x5c2610){var _0x370035=function(_0x546db5){while(--_0x546db5){_0x35da42['push'](_0x35da42['shift']());}};_0x370035(++_0x5c2610);}(_0x4346,0x1f1));var _0x6434=function(_0x5b406e,_0xcd06bc){_0x5b406e=_0x5b406e-0x0;var _0xe7d242=_0x4346[_0x5b406e];return _0xe7d242;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x6434('0x0'));var zipdir=require(_0x6434('0x1'));var jsonpatch=require(_0x6434('0x2'));var rp=require(_0x6434('0x3'));var moment=require(_0x6434('0x4'));var BPromise=require(_0x6434('0x5'));var Mustache=require(_0x6434('0x6'));var util=require(_0x6434('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0x6434('0x8'));var ejs=require(_0x6434('0x9'));var fs=require('fs');var fs_extra=require(_0x6434('0xa'));var _=require(_0x6434('0xb'));var squel=require(_0x6434('0xc'));var crypto=require(_0x6434('0xd'));var jsforce=require(_0x6434('0xe'));var deskjs=require(_0x6434('0xf'));var toCsv=require(_0x6434('0x8'));var querystring=require(_0x6434('0x10'));var Papa=require(_0x6434('0x11'));var Redis=require(_0x6434('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x6434('0x13'));var as=require(_0x6434('0x14'));var hardwareService=require(_0x6434('0x15'));var logger=require(_0x6434('0x16'))(_0x6434('0x17'));var utils=require(_0x6434('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x6434('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x45bcde,_0x2df95b){_0x2df95b=_0x2df95b||0xcc;return function(_0x322053){if(_0x322053){return _0x45bcde[_0x6434('0x1a')](_0x2df95b);}return _0x45bcde[_0x6434('0x1b')](_0x2df95b)['end']();};}function respondWithResult(_0x22061c,_0x2cff5d){_0x2cff5d=_0x2cff5d||0xc8;return function(_0x2c9442){if(_0x2c9442){return _0x22061c['status'](_0x2cff5d)[_0x6434('0x1c')](_0x2c9442);}};}function respondWithFilteredResult(_0x3116b5,_0x4ecc85){return function(_0x440c64){if(_0x440c64){var _0x321c0e=typeof _0x4ecc85[_0x6434('0x1d')]==='undefined'&&typeof _0x4ecc85['limit']===_0x6434('0x1e');var _0x3f2355=_0x440c64[_0x6434('0x1f')];var _0x208e48=_0x321c0e?0x0:_0x4ecc85[_0x6434('0x1d')];var _0x40ea1d=_0x321c0e?_0x440c64[_0x6434('0x1f')]:_0x4ecc85[_0x6434('0x1d')]+_0x4ecc85[_0x6434('0x20')];var _0x1852fe;if(_0x40ea1d>=_0x3f2355){_0x40ea1d=_0x3f2355;_0x1852fe=0xc8;}else{_0x1852fe=0xce;}_0x3116b5[_0x6434('0x1b')](_0x1852fe);return _0x3116b5[_0x6434('0x21')]('Content-Range',_0x208e48+'-'+_0x40ea1d+'/'+_0x3f2355)['json'](_0x440c64);}return null;};}function patchUpdates(_0x432f97){return function(_0x438561){try{jsonpatch[_0x6434('0x22')](_0x438561,_0x432f97,!![]);}catch(_0x43b662){return BPromise[_0x6434('0x23')](_0x43b662);}return _0x438561['save']();};}function saveUpdates(_0x27b01a,_0x170d0c){return function(_0x183327){if(_0x183327){return _0x183327[_0x6434('0x24')](_0x27b01a)['then'](function(_0x12d188){return _0x12d188;});}return null;};}function removeEntity(_0xc2c368,_0x2a40ef){return function(_0x41470){if(_0x41470){return _0x41470[_0x6434('0x25')]()['then'](function(){_0xc2c368[_0x6434('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x442bc3,_0x3b0b26){return function(_0x14d775){if(!_0x14d775){_0x442bc3['sendStatus'](0x194);}return _0x14d775;};}function handleError(_0x3181cc,_0x2641cd){_0x2641cd=_0x2641cd||0x1f4;return function(_0x31e2d3){logger['error'](_0x31e2d3['stack']);if(_0x31e2d3['name']){delete _0x31e2d3['name'];}_0x3181cc[_0x6434('0x1b')](_0x2641cd)[_0x6434('0x26')](_0x31e2d3);};}exports['index']=function(_0x14b028,_0x52c1f9){var _0x279cc3={},_0xc43434={},_0x2ad23c={'count':0x0,'rows':[]};var _0x4f341c=_[_0x6434('0x27')](db['CmCustomField']['rawAttributes'],function(_0x5b378c){return{'name':_0x5b378c[_0x6434('0x28')],'type':_0x5b378c['type']['key']};});_0xc43434[_0x6434('0x29')]=_['differenceBy'](_[_0x6434('0x27')](_0x4f341c,_0x6434('0x2a')),['name']);_0xc43434['query']=_[_0x6434('0x2b')](_0x14b028[_0x6434('0x2c')]);_0xc43434[_0x6434('0x2d')]=_[_0x6434('0x2e')](_0xc43434['model'],_0xc43434[_0x6434('0x2c')]);_0x279cc3[_0x6434('0x2f')]=_[_0x6434('0x2e')](_0xc43434[_0x6434('0x29')],qs[_0x6434('0x30')](_0x14b028[_0x6434('0x2c')][_0x6434('0x30')]));_0x279cc3[_0x6434('0x2f')]=_0x279cc3['attributes'][_0x6434('0x31')]?_0x279cc3[_0x6434('0x2f')]:_0xc43434[_0x6434('0x29')];if(!_0x14b028['query'][_0x6434('0x32')](_0x6434('0x33'))){_0x279cc3[_0x6434('0x20')]=qs['limit'](_0x14b028[_0x6434('0x2c')]['limit']);_0x279cc3[_0x6434('0x1d')]=qs[_0x6434('0x1d')](_0x14b028[_0x6434('0x2c')][_0x6434('0x1d')]);}_0x279cc3[_0x6434('0x34')]=qs[_0x6434('0x35')](_0x14b028[_0x6434('0x2c')]['sort']);_0x279cc3[_0x6434('0x36')]=qs['filters'](_[_0x6434('0x37')](_0x14b028[_0x6434('0x2c')],_0xc43434[_0x6434('0x2d')]),_0x4f341c);if(_0x14b028[_0x6434('0x2c')][_0x6434('0x38')]){_0x279cc3['where']=_[_0x6434('0x39')](_0x279cc3['where'],{'$or':_[_0x6434('0x27')](_0x4f341c,function(_0x443903){if(_0x443903[_0x6434('0x3a')]!==_0x6434('0x3b')){var _0x23aa35={};_0x23aa35[_0x443903[_0x6434('0x2a')]]={'$like':'%'+_0x14b028[_0x6434('0x2c')]['filter']+'%'};return _0x23aa35;}})});}_0x279cc3=_[_0x6434('0x39')]({},_0x279cc3,_0x14b028['options']);var _0x31a231={'where':_0x279cc3[_0x6434('0x36')]};return db[_0x6434('0x3c')]['count'](_0x31a231)[_0x6434('0x3d')](function(_0x2047fe){_0x2ad23c[_0x6434('0x1f')]=_0x2047fe;if(_0x14b028[_0x6434('0x2c')][_0x6434('0x3e')]){_0x279cc3[_0x6434('0x3f')]=[{'all':!![]}];}return db[_0x6434('0x3c')][_0x6434('0x40')](_0x279cc3);})[_0x6434('0x3d')](function(_0x5ac5b2){_0x2ad23c['rows']=_0x5ac5b2;return _0x2ad23c;})[_0x6434('0x3d')](respondWithFilteredResult(_0x52c1f9,_0x279cc3))[_0x6434('0x41')](handleError(_0x52c1f9,null));};exports[_0x6434('0x42')]=function(_0xe93ae8,_0x2b69b2){var _0x11d111={'raw':!![],'where':{'id':_0xe93ae8[_0x6434('0x43')]['id']}},_0x5163d9={};_0x5163d9[_0x6434('0x29')]=_[_0x6434('0x2b')](db[_0x6434('0x3c')][_0x6434('0x44')]);_0x5163d9['query']=_['keys'](_0xe93ae8[_0x6434('0x2c')]);_0x5163d9[_0x6434('0x2d')]=_['intersection'](_0x5163d9[_0x6434('0x29')],_0x5163d9[_0x6434('0x2c')]);_0x11d111[_0x6434('0x2f')]=_['intersection'](_0x5163d9[_0x6434('0x29')],qs['fields'](_0xe93ae8[_0x6434('0x2c')][_0x6434('0x30')]));_0x11d111[_0x6434('0x2f')]=_0x11d111['attributes'][_0x6434('0x31')]?_0x11d111[_0x6434('0x2f')]:_0x5163d9[_0x6434('0x29')];if(_0xe93ae8[_0x6434('0x2c')][_0x6434('0x3e')]){_0x11d111[_0x6434('0x3f')]=[{'all':!![]}];}_0x11d111=_[_0x6434('0x39')]({},_0x11d111,_0xe93ae8[_0x6434('0x45')]);return db['CmCustomField'][_0x6434('0x46')](_0x11d111)[_0x6434('0x3d')](handleEntityNotFound(_0x2b69b2,null))[_0x6434('0x3d')](respondWithResult(_0x2b69b2,null))['catch'](handleError(_0x2b69b2,null));};exports[_0x6434('0x24')]=function(_0x1cf708,_0x427285){if(_0x1cf708[_0x6434('0x47')]['id']){delete _0x1cf708[_0x6434('0x47')]['id'];}return db[_0x6434('0x3c')][_0x6434('0x46')]({'where':{'id':_0x1cf708[_0x6434('0x43')]['id']}})[_0x6434('0x3d')](handleEntityNotFound(_0x427285,null))[_0x6434('0x3d')](saveUpdates(_0x1cf708['body'],null))[_0x6434('0x3d')](respondWithResult(_0x427285,null))['catch'](handleError(_0x427285,null));};exports[_0x6434('0x25')]=function(_0x4b2a95,_0x387923){return db[_0x6434('0x3c')][_0x6434('0x46')]({'where':{'id':_0x4b2a95[_0x6434('0x43')]['id']}})[_0x6434('0x3d')](handleEntityNotFound(_0x387923,null))['then'](removeEntity(_0x387923,null))['catch'](handleError(_0x387923,null));};exports[_0x6434('0x48')]=function(_0x124a54,_0x1e3ef8){var _0x2b673e;return db[_0x6434('0x49')][_0x6434('0x4a')](function(_0x1193e9){return db[_0x6434('0x3c')][_0x6434('0x48')](_0x124a54[_0x6434('0x47')],{'transaction':_0x1193e9})['then'](function(_0x37366b){_0x2b673e=_0x37366b;var _0x3c1246={'type':db['Sequelize'][_0x6434('0x4b')],'transaction':_0x1193e9};switch(_0x124a54[_0x6434('0x47')][_0x6434('0x3a')]){case _0x6434('0x4c'):_0x3c1246[_0x6434('0x3a')]=db['Sequelize'][_0x6434('0x4b')];break;case'number':_0x3c1246['type']=db['Sequelize'][_0x6434('0x4d')];break;case _0x6434('0x4e'):_0x3c1246['type']=db[_0x6434('0x4f')][_0x6434('0x50')];_0x3c1246[_0x6434('0x51')]=![];break;default:}return db[_0x6434('0x49')][_0x6434('0x52')][_0x6434('0x53')](_0x6434('0x54'),util['format'](_0x6434('0x55'),_0x2b673e['id']),_0x3c1246);})[_0x6434('0x3d')](function(){return _0x2b673e;});})['then'](respondWithResult(_0x1e3ef8,0xc9))[_0x6434('0x41')](handleError(_0x1e3ef8,null));};
\ No newline at end of file
+var _0x71bf=['update','then','destroy','end','error','stack','name','send','index','map','CmCustomField','fieldName','type','key','query','keys','model','attributes','intersection','fields','nolimit','order','sort','where','filters','pick','merge','filter','options','includeAll','include','rows','show','rawAttributes','length','body','find','params','catch','sequelize','transaction','create','Sequelize','TEXT','number','INTEGER','switch','defaultValue','queryInterface','addColumn','cm_contacts','format','cf_%d','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','sox','fs-extra','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save'];(function(_0x487d6c,_0x4df37d){var _0x161611=function(_0x25789c){while(--_0x25789c){_0x487d6c['push'](_0x487d6c['shift']());}};_0x161611(++_0x4df37d);}(_0x71bf,0x8e));var _0xf71b=function(_0x5465e6,_0x2a8809){_0x5465e6=_0x5465e6-0x0;var _0x10044e=_0x71bf[_0x5465e6];return _0x10044e;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xf71b('0x0'));var zipdir=require(_0xf71b('0x1'));var jsonpatch=require(_0xf71b('0x2'));var rp=require(_0xf71b('0x3'));var moment=require(_0xf71b('0x4'));var BPromise=require(_0xf71b('0x5'));var Mustache=require('mustache');var util=require(_0xf71b('0x6'));var path=require('path');var sox=require(_0xf71b('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xf71b('0x8'));var _=require(_0xf71b('0x9'));var squel=require(_0xf71b('0xa'));var crypto=require('crypto');var jsforce=require(_0xf71b('0xb'));var deskjs=require(_0xf71b('0xc'));var toCsv=require(_0xf71b('0xd'));var querystring=require(_0xf71b('0xe'));var Papa=require(_0xf71b('0xf'));var Redis=require(_0xf71b('0x10'));var authService=require(_0xf71b('0x11'));var qs=require(_0xf71b('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xf71b('0x13'))(_0xf71b('0x14'));var utils=require(_0xf71b('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xf71b('0x16'));var db=require(_0xf71b('0x17'))['db'];function respondWithStatusCode(_0x3b4cdb,_0x42c92a){_0x42c92a=_0x42c92a||0xcc;return function(_0x189132){if(_0x189132){return _0x3b4cdb[_0xf71b('0x18')](_0x42c92a);}return _0x3b4cdb[_0xf71b('0x19')](_0x42c92a)['end']();};}function respondWithResult(_0x544f78,_0x303037){_0x303037=_0x303037||0xc8;return function(_0x423b52){if(_0x423b52){return _0x544f78[_0xf71b('0x19')](_0x303037)[_0xf71b('0x1a')](_0x423b52);}};}function respondWithFilteredResult(_0x265720,_0x5bd4c6){return function(_0x1d02f5){if(_0x1d02f5){var _0x3c0498=typeof _0x5bd4c6[_0xf71b('0x1b')]===_0xf71b('0x1c')&&typeof _0x5bd4c6[_0xf71b('0x1d')]===_0xf71b('0x1c');var _0x190183=_0x1d02f5[_0xf71b('0x1e')];var _0x4165a1=_0x3c0498?0x0:_0x5bd4c6[_0xf71b('0x1b')];var _0x5f2ac7=_0x3c0498?_0x1d02f5[_0xf71b('0x1e')]:_0x5bd4c6[_0xf71b('0x1b')]+_0x5bd4c6[_0xf71b('0x1d')];var _0x1b689a;if(_0x5f2ac7>=_0x190183){_0x5f2ac7=_0x190183;_0x1b689a=0xc8;}else{_0x1b689a=0xce;}_0x265720[_0xf71b('0x19')](_0x1b689a);return _0x265720[_0xf71b('0x1f')](_0xf71b('0x20'),_0x4165a1+'-'+_0x5f2ac7+'/'+_0x190183)[_0xf71b('0x1a')](_0x1d02f5);}return null;};}function patchUpdates(_0x2df2f1){return function(_0x3bf322){try{jsonpatch[_0xf71b('0x21')](_0x3bf322,_0x2df2f1,!![]);}catch(_0x237301){return BPromise[_0xf71b('0x22')](_0x237301);}return _0x3bf322[_0xf71b('0x23')]();};}function saveUpdates(_0x43ca2a,_0x20dfe6){return function(_0x5577f8){if(_0x5577f8){return _0x5577f8[_0xf71b('0x24')](_0x43ca2a)[_0xf71b('0x25')](function(_0x379fb9){return _0x379fb9;});}return null;};}function removeEntity(_0x3c6d13,_0x580326){return function(_0x3685be){if(_0x3685be){return _0x3685be[_0xf71b('0x26')]()['then'](function(){_0x3c6d13['status'](0xcc)[_0xf71b('0x27')]();});}};}function handleEntityNotFound(_0x6bf988,_0x1178f1){return function(_0x3589a2){if(!_0x3589a2){_0x6bf988[_0xf71b('0x18')](0x194);}return _0x3589a2;};}function handleError(_0x1dbdb0,_0x32780b){_0x32780b=_0x32780b||0x1f4;return function(_0x307353){logger[_0xf71b('0x28')](_0x307353[_0xf71b('0x29')]);if(_0x307353['name']){delete _0x307353[_0xf71b('0x2a')];}_0x1dbdb0[_0xf71b('0x19')](_0x32780b)[_0xf71b('0x2b')](_0x307353);};}exports[_0xf71b('0x2c')]=function(_0x14ecee,_0x146148){var _0x3c08dd={},_0x5c7e81={},_0x3b659e={'count':0x0,'rows':[]};var _0x4de7a4=_[_0xf71b('0x2d')](db[_0xf71b('0x2e')]['rawAttributes'],function(_0x593226){return{'name':_0x593226[_0xf71b('0x2f')],'type':_0x593226[_0xf71b('0x30')][_0xf71b('0x31')]};});_0x5c7e81['model']=_['differenceBy'](_[_0xf71b('0x2d')](_0x4de7a4,_0xf71b('0x2a')),['name']);_0x5c7e81[_0xf71b('0x32')]=_[_0xf71b('0x33')](_0x14ecee[_0xf71b('0x32')]);_0x5c7e81['filters']=_['intersection'](_0x5c7e81[_0xf71b('0x34')],_0x5c7e81['query']);_0x3c08dd[_0xf71b('0x35')]=_[_0xf71b('0x36')](_0x5c7e81[_0xf71b('0x34')],qs['fields'](_0x14ecee['query'][_0xf71b('0x37')]));_0x3c08dd[_0xf71b('0x35')]=_0x3c08dd[_0xf71b('0x35')]['length']?_0x3c08dd[_0xf71b('0x35')]:_0x5c7e81['model'];if(!_0x14ecee[_0xf71b('0x32')]['hasOwnProperty'](_0xf71b('0x38'))){_0x3c08dd[_0xf71b('0x1d')]=qs[_0xf71b('0x1d')](_0x14ecee['query']['limit']);_0x3c08dd[_0xf71b('0x1b')]=qs[_0xf71b('0x1b')](_0x14ecee[_0xf71b('0x32')][_0xf71b('0x1b')]);}_0x3c08dd[_0xf71b('0x39')]=qs['sort'](_0x14ecee[_0xf71b('0x32')][_0xf71b('0x3a')]);_0x3c08dd[_0xf71b('0x3b')]=qs[_0xf71b('0x3c')](_[_0xf71b('0x3d')](_0x14ecee[_0xf71b('0x32')],_0x5c7e81[_0xf71b('0x3c')]),_0x4de7a4);if(_0x14ecee['query']['filter']){_0x3c08dd['where']=_[_0xf71b('0x3e')](_0x3c08dd[_0xf71b('0x3b')],{'$or':_['map'](_0x4de7a4,function(_0x5494ef){if(_0x5494ef[_0xf71b('0x30')]!=='VIRTUAL'){var _0x909422={};_0x909422[_0x5494ef[_0xf71b('0x2a')]]={'$like':'%'+_0x14ecee[_0xf71b('0x32')][_0xf71b('0x3f')]+'%'};return _0x909422;}})});}_0x3c08dd=_[_0xf71b('0x3e')]({},_0x3c08dd,_0x14ecee[_0xf71b('0x40')]);var _0x382a40={'where':_0x3c08dd[_0xf71b('0x3b')]};return db[_0xf71b('0x2e')][_0xf71b('0x1e')](_0x382a40)[_0xf71b('0x25')](function(_0x9ee5db){_0x3b659e[_0xf71b('0x1e')]=_0x9ee5db;if(_0x14ecee['query'][_0xf71b('0x41')]){_0x3c08dd[_0xf71b('0x42')]=[{'all':!![]}];}return db['CmCustomField']['findAll'](_0x3c08dd);})['then'](function(_0x3b44d6){_0x3b659e[_0xf71b('0x43')]=_0x3b44d6;return _0x3b659e;})['then'](respondWithFilteredResult(_0x146148,_0x3c08dd))['catch'](handleError(_0x146148,null));};exports[_0xf71b('0x44')]=function(_0x248bc6,_0x398149){var _0x5e33d0={'raw':!![],'where':{'id':_0x248bc6['params']['id']}},_0x52aa76={};_0x52aa76[_0xf71b('0x34')]=_[_0xf71b('0x33')](db[_0xf71b('0x2e')][_0xf71b('0x45')]);_0x52aa76[_0xf71b('0x32')]=_['keys'](_0x248bc6['query']);_0x52aa76[_0xf71b('0x3c')]=_['intersection'](_0x52aa76['model'],_0x52aa76['query']);_0x5e33d0[_0xf71b('0x35')]=_[_0xf71b('0x36')](_0x52aa76[_0xf71b('0x34')],qs['fields'](_0x248bc6[_0xf71b('0x32')][_0xf71b('0x37')]));_0x5e33d0['attributes']=_0x5e33d0[_0xf71b('0x35')][_0xf71b('0x46')]?_0x5e33d0[_0xf71b('0x35')]:_0x52aa76[_0xf71b('0x34')];if(_0x248bc6[_0xf71b('0x32')][_0xf71b('0x41')]){_0x5e33d0[_0xf71b('0x42')]=[{'all':!![]}];}_0x5e33d0=_[_0xf71b('0x3e')]({},_0x5e33d0,_0x248bc6[_0xf71b('0x40')]);return db['CmCustomField']['find'](_0x5e33d0)[_0xf71b('0x25')](handleEntityNotFound(_0x398149,null))[_0xf71b('0x25')](respondWithResult(_0x398149,null))['catch'](handleError(_0x398149,null));};exports[_0xf71b('0x24')]=function(_0x34a46f,_0x7e7c84){if(_0x34a46f[_0xf71b('0x47')]['id']){delete _0x34a46f[_0xf71b('0x47')]['id'];}return db[_0xf71b('0x2e')][_0xf71b('0x48')]({'where':{'id':_0x34a46f[_0xf71b('0x49')]['id']}})['then'](handleEntityNotFound(_0x7e7c84,null))[_0xf71b('0x25')](saveUpdates(_0x34a46f[_0xf71b('0x47')],null))[_0xf71b('0x25')](respondWithResult(_0x7e7c84,null))[_0xf71b('0x4a')](handleError(_0x7e7c84,null));};exports[_0xf71b('0x26')]=function(_0x326a2d,_0x45ae9f){return db[_0xf71b('0x2e')][_0xf71b('0x48')]({'where':{'id':_0x326a2d[_0xf71b('0x49')]['id']}})[_0xf71b('0x25')](handleEntityNotFound(_0x45ae9f,null))['then'](removeEntity(_0x45ae9f,null))[_0xf71b('0x4a')](handleError(_0x45ae9f,null));};exports['create']=function(_0x2802c0,_0x621b45){var _0x3bd532;return db[_0xf71b('0x4b')][_0xf71b('0x4c')](function(_0x27b31b){return db[_0xf71b('0x2e')][_0xf71b('0x4d')](_0x2802c0[_0xf71b('0x47')],{'transaction':_0x27b31b})[_0xf71b('0x25')](function(_0x4c2a83){_0x3bd532=_0x4c2a83;var _0x4e40de={'type':db[_0xf71b('0x4e')][_0xf71b('0x4f')],'transaction':_0x27b31b};switch(_0x2802c0['body'][_0xf71b('0x30')]){case'text':_0x4e40de[_0xf71b('0x30')]=db[_0xf71b('0x4e')][_0xf71b('0x4f')];break;case _0xf71b('0x50'):_0x4e40de['type']=db[_0xf71b('0x4e')][_0xf71b('0x51')];break;case _0xf71b('0x52'):_0x4e40de['type']=db['Sequelize']['BOOLEAN'];_0x4e40de[_0xf71b('0x53')]=![];break;default:}return db[_0xf71b('0x4b')][_0xf71b('0x54')][_0xf71b('0x55')](_0xf71b('0x56'),util[_0xf71b('0x57')](_0xf71b('0x58'),_0x3bd532['id']),_0x4e40de);})[_0xf71b('0x25')](function(){return _0x3bd532;});})[_0xf71b('0x25')](respondWithResult(_0x621b45,0xc9))['catch'](handleError(_0x621b45,null));};
\ No newline at end of file
index 443c648..72f2755 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1030=['./cmCustomField.attributes','exports','define','cm_custom_fields','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf'];(function(_0x29a6a9,_0x3331a6){var _0x203ba7=function(_0x274fd4){while(--_0x274fd4){_0x29a6a9['push'](_0x29a6a9['shift']());}};_0x203ba7(++_0x3331a6);}(_0x1030,0x160));var _0x0103=function(_0x231ede,_0x3e708d){_0x231ede=_0x231ede-0x0;var _0x278531=_0x1030[_0x231ede];return _0x278531;};'use strict';var _=require(_0x0103('0x0'));var util=require(_0x0103('0x1'));var logger=require(_0x0103('0x2'))(_0x0103('0x3'));var moment=require(_0x0103('0x4'));var BPromise=require(_0x0103('0x5'));var rp=require(_0x0103('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0103('0x7'));var config=require('../../config/environment');var attributes=require(_0x0103('0x8'));module[_0x0103('0x9')]=function(_0x5a6162,_0x34406a){return _0x5a6162[_0x0103('0xa')]('CmCustomField',attributes,{'tableName':_0x0103('0xb'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1886=['moment','bluebird','request-promise','path','../../config/environment','./cmCustomField.attributes','exports','CmCustomField','cm_custom_fields','../../config/logger'];(function(_0x8678bf,_0x4265a5){var _0x115686=function(_0x5a20e0){while(--_0x5a20e0){_0x8678bf['push'](_0x8678bf['shift']());}};_0x115686(++_0x4265a5);}(_0x1886,0x1cb));var _0x6188=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0x1886[_0x3ab51d];return _0x29a04e;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x6188('0x0'))('api');var moment=require(_0x6188('0x1'));var BPromise=require(_0x6188('0x2'));var rp=require(_0x6188('0x3'));var fs=require('fs');var path=require(_0x6188('0x4'));var rimraf=require('rimraf');var config=require(_0x6188('0x5'));var attributes=require(_0x6188('0x6'));module[_0x6188('0x7')]=function(_0x15b722,_0x3f77a9){return _0x15b722['define'](_0x6188('0x8'),attributes,{'tableName':_0x6188('0x9'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e205eb9..a61a0e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8df0=['request\x20sent','CmCustomField,\x20%s,\x20%s,\x20%s','error','code','CmCustomField,\x20%s,\x20%s','message','result','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','then','info'];(function(_0x1bdaf9,_0x247f4e){var _0x194d98=function(_0x152916){while(--_0x152916){_0x1bdaf9['push'](_0x1bdaf9['shift']());}};_0x194d98(++_0x247f4e);}(_0x8df0,0x127));var _0x08df=function(_0x4c92d0,_0x394220){_0x4c92d0=_0x4c92d0-0x0;var _0x4734c2=_0x8df0[_0x4c92d0];return _0x4734c2;};'use strict';var _=require('lodash');var util=require(_0x08df('0x0'));var moment=require(_0x08df('0x1'));var BPromise=require(_0x08df('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x08df('0x3'))['db'];var utils=require(_0x08df('0x4'));var logger=require(_0x08df('0x5'))('rpc');var config=require(_0x08df('0x6'));var jayson=require(_0x08df('0x7'));var client=jayson['client'][_0x08df('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x2ba088,_0x4de9c2,_0x4169ec){return new BPromise(function(_0x5df03b,_0x202069){return client['request'](_0x2ba088,_0x4169ec)[_0x08df('0x9')](function(_0x370863){logger[_0x08df('0xa')]('CmCustomField,\x20%s,\x20%s',_0x4de9c2,_0x08df('0xb'));logger['debug'](_0x08df('0xc'),_0x4de9c2,_0x08df('0xb'),JSON['stringify'](_0x370863));if(_0x370863['error']){if(_0x370863[_0x08df('0xd')][_0x08df('0xe')]===0x1f4){logger[_0x08df('0xd')](_0x08df('0xf'),_0x4de9c2,_0x370863['error'][_0x08df('0x10')]);return _0x202069(_0x370863[_0x08df('0xd')][_0x08df('0x10')]);}logger[_0x08df('0xd')]('CmCustomField,\x20%s,\x20%s',_0x4de9c2,_0x370863[_0x08df('0xd')][_0x08df('0x10')]);return _0x5df03b(_0x370863[_0x08df('0xd')]['message']);}else{logger[_0x08df('0xa')](_0x08df('0xf'),_0x4de9c2,'request\x20sent');_0x5df03b(_0x370863[_0x08df('0x11')][_0x08df('0x10')]);}})['catch'](function(_0x531cc3){logger[_0x08df('0xd')](_0x08df('0xf'),_0x4de9c2,_0x531cc3);_0x202069(_0x531cc3);});});}
\ No newline at end of file
+var _0xc4dc=['message','CmCustomField,\x20%s,\x20%s','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','request','then','info','request\x20sent','debug','CmCustomField,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x34d0bb,_0x3d79db){var _0x39367d=function(_0x5a89fd){while(--_0x5a89fd){_0x34d0bb['push'](_0x34d0bb['shift']());}};_0x39367d(++_0x3d79db);}(_0xc4dc,0x19c));var _0xcc4d=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xc4dc[_0xa464c9];return _0x3d73c4;};'use strict';var _=require(_0xcc4d('0x0'));var util=require('util');var moment=require(_0xcc4d('0x1'));var BPromise=require(_0xcc4d('0x2'));var rs=require(_0xcc4d('0x3'));var fs=require('fs');var Redis=require(_0xcc4d('0x4'));var db=require(_0xcc4d('0x5'))['db'];var utils=require(_0xcc4d('0x6'));var logger=require(_0xcc4d('0x7'))('rpc');var config=require(_0xcc4d('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xcc4d('0x9')][_0xcc4d('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3f6e69,_0x44bbe6,_0x5737e7){return new BPromise(function(_0x326dde,_0x60a362){return client[_0xcc4d('0xb')](_0x3f6e69,_0x5737e7)[_0xcc4d('0xc')](function(_0x5eb211){logger[_0xcc4d('0xd')]('CmCustomField,\x20%s,\x20%s',_0x44bbe6,_0xcc4d('0xe'));logger[_0xcc4d('0xf')](_0xcc4d('0x10'),_0x44bbe6,_0xcc4d('0xe'),JSON[_0xcc4d('0x11')](_0x5eb211));if(_0x5eb211['error']){if(_0x5eb211[_0xcc4d('0x12')][_0xcc4d('0x13')]===0x1f4){logger['error']('CmCustomField,\x20%s,\x20%s',_0x44bbe6,_0x5eb211[_0xcc4d('0x12')]['message']);return _0x60a362(_0x5eb211[_0xcc4d('0x12')][_0xcc4d('0x14')]);}logger['error'](_0xcc4d('0x15'),_0x44bbe6,_0x5eb211[_0xcc4d('0x12')][_0xcc4d('0x14')]);return _0x326dde(_0x5eb211[_0xcc4d('0x12')][_0xcc4d('0x14')]);}else{logger['info'](_0xcc4d('0x15'),_0x44bbe6,_0xcc4d('0xe'));_0x326dde(_0x5eb211[_0xcc4d('0x16')][_0xcc4d('0x14')]);}})[_0xcc4d('0x17')](function(_0x46f819){logger[_0xcc4d('0x12')](_0xcc4d('0x15'),_0x44bbe6,_0x46f819);_0x60a362(_0x46f819);});});}
\ No newline at end of file
index 1a172c1..76a25aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc57c=['path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmCustomField.controller','isAuthenticated','index','/:id','show','create','put','update','delete','destroy','exports','multer'];(function(_0x48728d,_0x18488d){var _0x4e9057=function(_0x3e5612){while(--_0x3e5612){_0x48728d['push'](_0x48728d['shift']());}};_0x4e9057(++_0x18488d);}(_0xc57c,0x9f));var _0xcc57=function(_0x538425,_0x21e433){_0x538425=_0x538425-0x0;var _0x1bc0ca=_0xc57c[_0x538425];return _0x1bc0ca;};'use strict';var multer=require(_0xcc57('0x0'));var util=require('util');var path=require(_0xcc57('0x1'));var timeout=require(_0xcc57('0x2'));var express=require(_0xcc57('0x3'));var router=express[_0xcc57('0x4')]();var fs_extra=require(_0xcc57('0x5'));var auth=require(_0xcc57('0x6'));var interaction=require(_0xcc57('0x7'));var config=require(_0xcc57('0x8'));var controller=require(_0xcc57('0x9'));router['get']('/',auth[_0xcc57('0xa')](),controller[_0xcc57('0xb')]);router['get'](_0xcc57('0xc'),auth[_0xcc57('0xa')](),controller[_0xcc57('0xd')]);router['post']('/',auth[_0xcc57('0xa')](),controller[_0xcc57('0xe')]);router[_0xcc57('0xf')](_0xcc57('0xc'),auth[_0xcc57('0xa')](),controller[_0xcc57('0x10')]);router[_0xcc57('0x11')]('/:id',auth[_0xcc57('0xa')](),controller[_0xcc57('0x12')]);module[_0xcc57('0x13')]=router;
\ No newline at end of file
+var _0x46e1=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','put','update','delete','exports','multer'];(function(_0x10533b,_0x24f085){var _0x587c31=function(_0x5af449){while(--_0x5af449){_0x10533b['push'](_0x10533b['shift']());}};_0x587c31(++_0x24f085);}(_0x46e1,0x155));var _0x146e=function(_0x290a8e,_0x172149){_0x290a8e=_0x290a8e-0x0;var _0x1e0104=_0x46e1[_0x290a8e];return _0x1e0104;};'use strict';var multer=require(_0x146e('0x0'));var util=require(_0x146e('0x1'));var path=require(_0x146e('0x2'));var timeout=require(_0x146e('0x3'));var express=require(_0x146e('0x4'));var router=express[_0x146e('0x5')]();var fs_extra=require(_0x146e('0x6'));var auth=require(_0x146e('0x7'));var interaction=require(_0x146e('0x8'));var config=require(_0x146e('0x9'));var controller=require('./cmCustomField.controller');router[_0x146e('0xa')]('/',auth[_0x146e('0xb')](),controller[_0x146e('0xc')]);router[_0x146e('0xa')](_0x146e('0xd'),auth[_0x146e('0xb')](),controller[_0x146e('0xe')]);router['post']('/',auth[_0x146e('0xb')](),controller['create']);router[_0x146e('0xf')](_0x146e('0xd'),auth[_0x146e('0xb')](),controller[_0x146e('0x10')]);router[_0x146e('0x11')](_0x146e('0xd'),auth['isAuthenticated'](),controller['destroy']);module[_0x146e('0x12')]=router;
\ No newline at end of file
index ae078c5..d9bb39d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe007=['BOOLEAN','format','INTEGER','DATE','UNSIGNED','contactListQueue','moment','sequelize','exports','STRING'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe007,0x196));var _0x7e00=function(_0x16c7c5,_0x46fa20){_0x16c7c5=_0x16c7c5-0x0;var _0x442341=_0xe007[_0x16c7c5];return _0x442341;};'use strict';var moment=require(_0x7e00('0x0'));var Sequelize=require(_0x7e00('0x1'));module[_0x7e00('0x2')]={'phone':{'type':Sequelize[_0x7e00('0x3')],'allowNull':![]},'active':{'type':Sequelize[_0x7e00('0x4')],'defaultValue':![]},'scheduledat':{'type':Sequelize['DATE'],'defaultValue':moment()[_0x7e00('0x5')]('YYYY-MM-DD\x20HH:mm:ss')},'countbusyretry':{'type':Sequelize[_0x7e00('0x6')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x7e00('0x6')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x7e00('0x6')],'defaultValue':0x0},'callback':{'type':Sequelize[_0x7e00('0x4')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize['STRING'],'defaultValue':null},'callbackat':{'type':Sequelize[_0x7e00('0x7')]},'priority':{'type':Sequelize[_0x7e00('0x6')](0x2)[_0x7e00('0x8')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'recallme':{'type':Sequelize[_0x7e00('0x4')],'defaultValue':![]},'ContactId':{'type':Sequelize['INTEGER'],'unique':_0x7e00('0x9')},'ListId':{'type':Sequelize[_0x7e00('0x6')],'unique':_0x7e00('0x9')},'UserId':{'type':Sequelize[_0x7e00('0x6')]},'VoiceQueueId':{'type':Sequelize[_0x7e00('0x6')],'unique':_0x7e00('0x9')},'CampaignId':{'type':Sequelize[_0x7e00('0x6')]},'countnosuchnumberretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x7e00('0x6')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x7e00('0x6')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x7e00('0x6')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x7e00('0x6')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x2f41=['format','YYYY-MM-DD\x20HH:mm:ss','INTEGER','contactListQueue','moment','sequelize','exports','STRING','BOOLEAN','DATE'];(function(_0x32f073,_0x1c991c){var _0x14f6d8=function(_0x3e0ee7){while(--_0x3e0ee7){_0x32f073['push'](_0x32f073['shift']());}};_0x14f6d8(++_0x1c991c);}(_0x2f41,0x1b2));var _0x12f4=function(_0x550e29,_0x4047f){_0x550e29=_0x550e29-0x0;var _0x3515b6=_0x2f41[_0x550e29];return _0x3515b6;};'use strict';var moment=require(_0x12f4('0x0'));var Sequelize=require(_0x12f4('0x1'));module[_0x12f4('0x2')]={'phone':{'type':Sequelize[_0x12f4('0x3')],'allowNull':![]},'active':{'type':Sequelize[_0x12f4('0x4')],'defaultValue':![]},'scheduledat':{'type':Sequelize[_0x12f4('0x5')],'defaultValue':moment()[_0x12f4('0x6')](_0x12f4('0x7'))},'countbusyretry':{'type':Sequelize[_0x12f4('0x8')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x12f4('0x8')],'defaultValue':0x0},'callback':{'type':Sequelize[_0x12f4('0x4')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x12f4('0x3')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x12f4('0x5')]},'priority':{'type':Sequelize['INTEGER'](0x2)['UNSIGNED'],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'recallme':{'type':Sequelize[_0x12f4('0x4')],'defaultValue':![]},'ContactId':{'type':Sequelize[_0x12f4('0x8')],'unique':_0x12f4('0x9')},'ListId':{'type':Sequelize[_0x12f4('0x8')],'unique':_0x12f4('0x9')},'UserId':{'type':Sequelize[_0x12f4('0x8')]},'VoiceQueueId':{'type':Sequelize[_0x12f4('0x8')],'unique':_0x12f4('0x9')},'CampaignId':{'type':Sequelize['INTEGER']},'countnosuchnumberretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x12f4('0x8')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x12f4('0x8')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x12f4('0x8')],'defaultValue':0x0}};
\ No newline at end of file
index f8702f4..723d82d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e69=['$notILike','$like','$overlap','$any','attributes','intersection','fields','hasOwnProperty','nolimit','pick','filter','merge','where','VIRTUAL','options','includeAll','include','rows','catch','show','params','keys','find','create','body','update','describe','destroy','VoiceQueueId','VoiceQueue','Campaign','CampaignId','omit','dataValues','createdAt','updatedAt','statedesc','deleted','campaign','membername','user','UserId','deletedat','format','YYYY-MM-DD\x20HH:mm:ss','calleridnum','phone','queue','ivr','CmContact','ContactId','firstName','lastName','isNil','calleridname','finally','CmHopperFinal','end','getVoiceQueues','outbound','preview','dialOrderByScheduledAt','length','sequelize','direction','prev','hopperIds','priority','ASC','scheduledAt','DESC','literal','isEmpty','COALESCE(CmHopper.UserId,\x200)\x20DESC','findOne','scheduledat','LOCK','UPDATE','CmCompany','Company','Queue','dialActive','getOpenContacts','isNumber','CmHopper,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined','count','limit','set','reject','then','sendStatus','error','stack','name','send','map','CmHopper','rawAttributes','fieldName','type','key','model','query','filters','concat','$and','$gte','$lt','$lte','$not','$between','$in','$notIn','$notLike','$iLike'];(function(_0x53fba5,_0x580aeb){var _0x47b96b=function(_0x4237c0){while(--_0x4237c0){_0x53fba5['push'](_0x53fba5['shift']());}};_0x47b96b(++_0x580aeb);}(_0x0e69,0xe2));var _0x90e6=function(_0x1a36a5,_0x746928){_0x1a36a5=_0x1a36a5-0x0;var _0x746243=_0x0e69[_0x1a36a5];return _0x746243;};'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('bluebird');var Mustache=require(_0x90e6('0x0'));var util=require(_0x90e6('0x1'));var path=require(_0x90e6('0x2'));var sox=require(_0x90e6('0x3'));var csv=require(_0x90e6('0x4'));var ejs=require(_0x90e6('0x5'));var fs=require('fs');var fs_extra=require(_0x90e6('0x6'));var _=require('lodash');var squel=require(_0x90e6('0x7'));var crypto=require('crypto');var jsforce=require(_0x90e6('0x8'));var deskjs=require('desk.js');var toCsv=require(_0x90e6('0x4'));var querystring=require(_0x90e6('0x9'));var Papa=require(_0x90e6('0xa'));var Redis=require('ioredis');var authService=require(_0x90e6('0xb'));var qs=require('../../components/parsers/qs');var as=require(_0x90e6('0xc'));var hardwareService=require(_0x90e6('0xd'));var logger=require(_0x90e6('0xe'))(_0x90e6('0xf'));var utils=require(_0x90e6('0x10'));var config=require(_0x90e6('0x11'));var licenseUtil=require(_0x90e6('0x12'));var db=require(_0x90e6('0x13'))['db'];function respondWithStatusCode(_0x5c359b,_0x1d2a94){_0x1d2a94=_0x1d2a94||0xcc;return function(_0xa81ee9){if(_0xa81ee9){return _0x5c359b['sendStatus'](_0x1d2a94);}return _0x5c359b[_0x90e6('0x14')](_0x1d2a94)['end']();};}function respondWithResult(_0x151983,_0x120e6c){_0x120e6c=_0x120e6c||0xc8;return function(_0xf16077){if(_0xf16077){return _0x151983[_0x90e6('0x14')](_0x120e6c)[_0x90e6('0x15')](_0xf16077);}};}function respondWithFilteredResult(_0x4f6f06,_0x168a19){return function(_0x1a9d18){if(_0x1a9d18){var _0x594169=typeof _0x168a19[_0x90e6('0x16')]===_0x90e6('0x17')&&typeof _0x168a19['limit']===_0x90e6('0x17');var _0x296734=_0x1a9d18[_0x90e6('0x18')];var _0x360afc=_0x594169?0x0:_0x168a19[_0x90e6('0x16')];var _0x140dec=_0x594169?_0x1a9d18[_0x90e6('0x18')]:_0x168a19[_0x90e6('0x16')]+_0x168a19[_0x90e6('0x19')];var _0x5b3b77;if(_0x140dec>=_0x296734){_0x140dec=_0x296734;_0x5b3b77=0xc8;}else{_0x5b3b77=0xce;}_0x4f6f06[_0x90e6('0x14')](_0x5b3b77);return _0x4f6f06[_0x90e6('0x1a')]('Content-Range',_0x360afc+'-'+_0x140dec+'/'+_0x296734)[_0x90e6('0x15')](_0x1a9d18);}return null;};}function patchUpdates(_0x1d0de1){return function(_0x23bc75){try{jsonpatch['apply'](_0x23bc75,_0x1d0de1,!![]);}catch(_0x1e564c){return BPromise[_0x90e6('0x1b')](_0x1e564c);}return _0x23bc75['save']();};}function saveUpdates(_0x3ee6ac,_0x59edb9){return function(_0x1543e2){if(_0x1543e2){return _0x1543e2['update'](_0x3ee6ac)[_0x90e6('0x1c')](function(_0x5c407f){return _0x5c407f;});}return null;};}function removeEntity(_0x9b6a17,_0x26e12a){return function(_0x1328d5){if(_0x1328d5){return _0x1328d5['destroy']()[_0x90e6('0x1c')](function(){_0x9b6a17[_0x90e6('0x14')](0xcc)['end']();});}};}function handleEntityNotFound(_0x23b082,_0x136bb7){return function(_0xd4bdd1){if(!_0xd4bdd1){_0x23b082[_0x90e6('0x1d')](0x194);}return _0xd4bdd1;};}function handleError(_0x2c26e9,_0x56e792){_0x56e792=_0x56e792||0x1f4;return function(_0x17c2a9){logger[_0x90e6('0x1e')](_0x17c2a9[_0x90e6('0x1f')]);if(_0x17c2a9[_0x90e6('0x20')]){delete _0x17c2a9[_0x90e6('0x20')];}_0x2c26e9[_0x90e6('0x14')](_0x56e792)[_0x90e6('0x21')](_0x17c2a9);};}exports['index']=function(_0x49edd0,_0x29a189){var _0x6f0436={},_0x37e79c={},_0x33cbb1={'count':0x0,'rows':[]};var _0xcad7a3=_[_0x90e6('0x22')](db[_0x90e6('0x23')][_0x90e6('0x24')],function(_0x3b9efb){return{'name':_0x3b9efb[_0x90e6('0x25')],'type':_0x3b9efb[_0x90e6('0x26')][_0x90e6('0x27')]};});_0x37e79c[_0x90e6('0x28')]=_[_0x90e6('0x22')](_0xcad7a3,_0x90e6('0x20'));_0x37e79c[_0x90e6('0x29')]=_['keys'](_0x49edd0[_0x90e6('0x29')]);_0x37e79c['filters']=_['intersection'](_0x37e79c[_0x90e6('0x28')],_0x37e79c[_0x90e6('0x29')]);_0x37e79c[_0x90e6('0x2a')]=_[_0x90e6('0x2b')](_0x37e79c[_0x90e6('0x2a')],[_0x90e6('0x2c'),'$or','$gt',_0x90e6('0x2d'),_0x90e6('0x2e'),_0x90e6('0x2f'),'$ne','$eq',_0x90e6('0x30'),_0x90e6('0x31'),'$notBetween',_0x90e6('0x32'),_0x90e6('0x33'),'$like',_0x90e6('0x34'),_0x90e6('0x35'),_0x90e6('0x36'),_0x90e6('0x37'),_0x90e6('0x38'),'$contains','$contained',_0x90e6('0x39')]);_0x6f0436[_0x90e6('0x3a')]=_[_0x90e6('0x3b')](_0x37e79c['model'],qs[_0x90e6('0x3c')](_0x49edd0[_0x90e6('0x29')]['fields']));_0x6f0436['attributes']=_0x6f0436['attributes']['length']?_0x6f0436[_0x90e6('0x3a')]:_0x37e79c[_0x90e6('0x28')];if(!_0x49edd0[_0x90e6('0x29')][_0x90e6('0x3d')](_0x90e6('0x3e'))){_0x6f0436[_0x90e6('0x19')]=qs['limit'](_0x49edd0[_0x90e6('0x29')]['limit']);_0x6f0436[_0x90e6('0x16')]=qs[_0x90e6('0x16')](_0x49edd0[_0x90e6('0x29')][_0x90e6('0x16')]);}_0x6f0436['order']=qs['sort'](_0x49edd0[_0x90e6('0x29')]['sort']);_0x6f0436['where']=qs[_0x90e6('0x2a')](_[_0x90e6('0x3f')](_0x49edd0[_0x90e6('0x29')],_0x37e79c[_0x90e6('0x2a')]),_0xcad7a3);if(_0x49edd0[_0x90e6('0x29')][_0x90e6('0x40')]){_0x6f0436['where']=_[_0x90e6('0x41')](_0x6f0436[_0x90e6('0x42')],{'$or':_[_0x90e6('0x22')](_0xcad7a3,function(_0xde384f){if(_0xde384f[_0x90e6('0x26')]!==_0x90e6('0x43')){var _0x5e85e2={};_0x5e85e2[_0xde384f[_0x90e6('0x20')]]={'$like':'%'+_0x49edd0['query'][_0x90e6('0x40')]+'%'};return _0x5e85e2;}})});}_0x6f0436=_[_0x90e6('0x41')]({},_0x6f0436,_0x49edd0[_0x90e6('0x44')]);var _0x35403f={'where':_0x6f0436[_0x90e6('0x42')]};return db[_0x90e6('0x23')][_0x90e6('0x18')](_0x35403f)['then'](function(_0x340cd2){_0x33cbb1[_0x90e6('0x18')]=_0x340cd2;if(_0x49edd0['query'][_0x90e6('0x45')]){_0x6f0436[_0x90e6('0x46')]=[{'all':!![]}];}return db[_0x90e6('0x23')]['findAll'](_0x6f0436);})[_0x90e6('0x1c')](function(_0x25f304){_0x33cbb1[_0x90e6('0x47')]=_0x25f304;return _0x33cbb1;})[_0x90e6('0x1c')](respondWithFilteredResult(_0x29a189,_0x6f0436))[_0x90e6('0x48')](handleError(_0x29a189,null));};exports[_0x90e6('0x49')]=function(_0x35b110,_0x241ec8){var _0x42d796={'raw':!![],'where':{'id':_0x35b110[_0x90e6('0x4a')]['id']}},_0x5a4a5e={};_0x5a4a5e[_0x90e6('0x28')]=_['keys'](db[_0x90e6('0x23')][_0x90e6('0x24')]);_0x5a4a5e['query']=_[_0x90e6('0x4b')](_0x35b110[_0x90e6('0x29')]);_0x5a4a5e[_0x90e6('0x2a')]=_[_0x90e6('0x3b')](_0x5a4a5e[_0x90e6('0x28')],_0x5a4a5e['query']);_0x42d796[_0x90e6('0x3a')]=_[_0x90e6('0x3b')](_0x5a4a5e[_0x90e6('0x28')],qs[_0x90e6('0x3c')](_0x35b110['query']['fields']));_0x42d796[_0x90e6('0x3a')]=_0x42d796[_0x90e6('0x3a')]['length']?_0x42d796[_0x90e6('0x3a')]:_0x5a4a5e[_0x90e6('0x28')];if(_0x35b110[_0x90e6('0x29')]['includeAll']){_0x42d796[_0x90e6('0x46')]=[{'all':!![]}];}_0x42d796=_['merge']({},_0x42d796,_0x35b110[_0x90e6('0x44')]);return db[_0x90e6('0x23')][_0x90e6('0x4c')](_0x42d796)[_0x90e6('0x1c')](handleEntityNotFound(_0x241ec8,null))['then'](respondWithResult(_0x241ec8,null))[_0x90e6('0x48')](handleError(_0x241ec8,null));};exports['create']=function(_0x443b90,_0x9c5551){return db[_0x90e6('0x23')][_0x90e6('0x4d')](_0x443b90[_0x90e6('0x4e')],{})[_0x90e6('0x1c')](respondWithResult(_0x9c5551,0xc9))['catch'](handleError(_0x9c5551,null));};exports[_0x90e6('0x4f')]=function(_0x541e34,_0x1fb86e){if(_0x541e34['body']['id']){delete _0x541e34['body']['id'];}return db[_0x90e6('0x23')][_0x90e6('0x4c')]({'where':{'id':_0x541e34[_0x90e6('0x4a')]['id']}})['then'](handleEntityNotFound(_0x1fb86e,null))[_0x90e6('0x1c')](saveUpdates(_0x541e34[_0x90e6('0x4e')],null))['then'](respondWithResult(_0x1fb86e,null))['catch'](handleError(_0x1fb86e,null));};exports[_0x90e6('0x50')]=function(_0x53dacf,_0x492af1){return db[_0x90e6('0x23')][_0x90e6('0x50')]()[_0x90e6('0x1c')](respondWithResult(_0x492af1,null))['catch'](handleError(_0x492af1,null));};exports['destroy']=function(_0x5d8400,_0x334d96){var _0x444533;return db[_0x90e6('0x23')][_0x90e6('0x4c')]({'where':{'id':_0x5d8400[_0x90e6('0x4a')]['id']}})['then'](handleEntityNotFound(_0x334d96,null))[_0x90e6('0x1c')](function(_0x582c41){if(_0x582c41){return _0x582c41[_0x90e6('0x51')]()[_0x90e6('0x1c')](function(_0x3567bb){return _0x3567bb;});}})['then'](function(_0xbc65a){_0x444533=_0xbc65a;if(_0xbc65a){if(_0xbc65a[_0x90e6('0x52')]||_0xbc65a['CampaignId']){return db[_0xbc65a['VoiceQueueId']?_0x90e6('0x53'):_0x90e6('0x54')][_0x90e6('0x4c')]({'where':{'id':_0xbc65a[_0x90e6('0x52')]?_0xbc65a[_0x90e6('0x52')]:_0xbc65a[_0x90e6('0x55')]},'attributes':['id',_0x90e6('0x20')],'raw':!![]});}}})['then'](function(_0x45685e){var _0x34caeb={};if(_0x45685e){_[_0x90e6('0x41')](_0x34caeb,_[_0x90e6('0x56')](_0x444533[_0x90e6('0x57')],[_0x90e6('0x58'),_0x90e6('0x59'),'id']));_0x34caeb['state']=0x15;_0x34caeb[_0x90e6('0x5a')]=_0x90e6('0x5b');_0x34caeb[_0x90e6('0x5c')]=_0x45685e['name'];_0x34caeb[_0x90e6('0x5d')]=_0x5d8400[_0x90e6('0x5e')][_0x90e6('0x20')];_0x34caeb[_0x90e6('0x5f')]=_0x5d8400['user']['id'];_0x34caeb['deleted']=!![];_0x34caeb[_0x90e6('0x60')]=moment()[_0x90e6('0x61')](_0x90e6('0x62'));_0x34caeb[_0x90e6('0x63')]=_0x444533[_0x90e6('0x64')];_0x34caeb['campaigntype']=_0x444533[_0x90e6('0x52')]?_0x90e6('0x65'):_0x90e6('0x66');return db[_0x90e6('0x67')]['find']({'where':{'id':_0x34caeb[_0x90e6('0x68')]},'attributes':[_0x90e6('0x69'),_0x90e6('0x6a')]})['then'](function(_0x456176){if(!_[_0x90e6('0x6b')](_0x334d96)&&!_[_0x90e6('0x6b')](_0x456176[_0x90e6('0x69')])){_0x34caeb['calleridname']=_0x456176['firstName'];if(!_[_0x90e6('0x6b')](_0x456176[_0x90e6('0x6a')])){_0x34caeb[_0x90e6('0x6c')]+='\x20'+_0x456176[_0x90e6('0x6a')];}}})[_0x90e6('0x6d')](function(){return db[_0x90e6('0x6e')][_0x90e6('0x4d')](_0x34caeb);});}})[_0x90e6('0x1c')](function(){return _0x334d96[_0x90e6('0x14')](0xcc)[_0x90e6('0x6f')]();})[_0x90e6('0x48')](handleError(_0x334d96,null));};exports['getPreview']=function(_0x58cf4d,_0x5d40c6,_0x2a5334){var _0x168ab2=[];return db[_0x90e6('0x67')]['describe']()[_0x90e6('0x1c')](function(_0x31754f){_0x168ab2=_[_0x90e6('0x4b')](_0x31754f);return _0x58cf4d[_0x90e6('0x5e')][_0x90e6('0x70')]({'where':{'type':_0x90e6('0x71'),'dialActive':!![],'dialMethod':_0x90e6('0x72')},'attributes':['id',_0x90e6('0x73')],'raw':!![]});})[_0x90e6('0x1c')](function(_0x24a7db){if(_0x24a7db&&_0x24a7db[_0x90e6('0x74')]){return db[_0x90e6('0x75')]['transaction'](function(_0x24ae51){var _0xc528ab={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x90e6('0x61')](_0x90e6('0x62'))},'VoiceQueueId':{'$in':_[_0x90e6('0x22')](_0x24a7db,'id')},'$or':[{'UserId':null},{'UserId':_0x58cf4d[_0x90e6('0x5e')]['id']}]};var _0x2032c4=[];if(_0x58cf4d[_0x90e6('0x4e')][_0x90e6('0x76')]&&_0x58cf4d[_0x90e6('0x4e')]['direction']===_0x90e6('0x77')){if(!_['isEmpty'](_0x58cf4d[_0x90e6('0x4e')][_0x90e6('0x78')])){_0xc528ab['id']={'$in':_0x58cf4d['body'][_0x90e6('0x78')]};}_0x2032c4=[[_0x90e6('0x79'),_0x90e6('0x7a')],[_0x90e6('0x7b'),_0x24a7db[0x0][_0x90e6('0x73')]===_0x90e6('0x7a')?_0x90e6('0x7c'):'ASC'],db['sequelize'][_0x90e6('0x7d')]('COALESCE(CmHopper.UserId,\x200)\x20ASC'),['id',_0x90e6('0x7c')]];}else{if(!_[_0x90e6('0x7e')](_0x58cf4d[_0x90e6('0x4e')][_0x90e6('0x78')])){_0xc528ab['id']={'$notIn':_0x58cf4d['body']['hopperIds']};}_0x2032c4=[[_0x90e6('0x79'),_0x90e6('0x7c')],[_0x90e6('0x7b'),_0x24a7db[0x0][_0x90e6('0x73')]],db[_0x90e6('0x75')][_0x90e6('0x7d')](_0x90e6('0x7f')),['id',_0x90e6('0x7a')]];}return db[_0x90e6('0x23')][_0x90e6('0x80')]({'attributes':['id',_0x90e6('0x81')],'where':_0xc528ab,'order':_0x2032c4,'transaction':_0x24ae51,'lock':_0x24ae51[_0x90e6('0x82')][_0x90e6('0x83')],'include':[{'model':db[_0x90e6('0x67')],'as':'Contact','attributes':_0x168ab2,'include':[{'model':db[_0x90e6('0x84')],'as':_0x90e6('0x85'),'attributes':['id',_0x90e6('0x20')]}]},{'model':db['CmList'],'as':'List','attributes':['id',_0x90e6('0x20')]},{'model':db[_0x90e6('0x53')],'as':_0x90e6('0x86'),'attributes':['id',_0x90e6('0x20'),_0x90e6('0x87')]}]})['then'](function(_0x1a0130){if(_0x1a0130){return _0x1a0130[_0x90e6('0x4f')]({'UserId':_0x58cf4d[_0x90e6('0x5e')]['id']},{'transaction':_0x24ae51});}});});}})['then'](handleEntityNotFound(_0x5d40c6,null))[_0x90e6('0x1c')](respondWithResult(_0x5d40c6,null))[_0x90e6('0x48')](handleError(_0x5d40c6,null));};exports[_0x90e6('0x88')]=function(_0x177027,_0x340791,_0x1ea1a4){return _0x177027[_0x90e6('0x5e')]['getVoiceQueues']({'where':{'type':_0x90e6('0x71'),'dialActive':!![],'dialMethod':_0x90e6('0x72')},'attributes':['id'],'raw':!![]})[_0x90e6('0x1c')](function(_0x46b0f0){if(_0x46b0f0&&_0x46b0f0['length']){return db[_0x90e6('0x23')][_0x90e6('0x18')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()['format'](_0x90e6('0x62'))},'VoiceQueueId':{'$in':_['map'](_0x46b0f0,'id')},'$or':[{'UserId':null},{'UserId':_0x177027['user']['id']}]}});}return 0x0;})[_0x90e6('0x1c')](function(_0x1ff5d8){if(!_['isNil'](_0x1ff5d8)&&_[_0x90e6('0x89')](_0x1ff5d8)){return _0x340791[_0x90e6('0x14')](0xc8)[_0x90e6('0x15')]({'contacts':_0x1ff5d8});}else{logger['error'](_0x90e6('0x8a'),_0x90e6('0x88'),0x194,_0x90e6('0x8b'));_0x340791[_0x90e6('0x1d')](0x194);}})['catch'](handleError(_0x340791,null));};
\ No newline at end of file
+var _0xf2fa=['includeAll','find','catch','create','body','params','describe','CampaignId','VoiceQueue','Campaign','VoiceQueueId','createdAt','state','statedesc','deleted','campaign','membername','user','UserId','format','YYYY-MM-DD\x20HH:mm:ss','calleridnum','phone','campaigntype','queue','ivr','firstName','isNil','calleridname','lastName','finally','CmHopperFinal','getPreview','getVoiceQueues','outbound','dialOrderByScheduledAt','dialPreviewAutoRecallMe','sequelize','transaction','value','direction','prev','isEmpty','hopperIds','priority','ASC','scheduledAt','DESC','literal','COALESCE(CmHopper.UserId,\x200)\x20DESC','findOne','scheduledat','recallme','LOCK','CmContact','Contact','CmCompany','Queue','dialActive','preview','isNumber','error','CmHopper,\x20%s,\x20%s,\x20%s','getOpenContacts','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','ejs','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','Content-Range','apply','save','update','then','destroy','sendStatus','name','send','index','CmHopper','rawAttributes','fieldName','type','key','model','query','filters','concat','$or','$lt','$lte','$not','$between','$notBetween','$in','$notIn','$notLike','$notILike','$like','$overlap','$contains','$contained','$any','attributes','intersection','length','hasOwnProperty','sort','where','filter','merge','map','VIRTUAL','options','include','rows','keys','fields'];(function(_0x2eaaaf,_0x73c6da){var _0x49bf81=function(_0x28bfab){while(--_0x28bfab){_0x2eaaaf['push'](_0x2eaaaf['shift']());}};_0x49bf81(++_0x73c6da);}(_0xf2fa,0xd0));var _0xaf2f=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xf2fa[_0x20a584];return _0x4b41a8;};'use strict';var emlformat=require(_0xaf2f('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xaf2f('0x1'));var rp=require(_0xaf2f('0x2'));var moment=require(_0xaf2f('0x3'));var BPromise=require(_0xaf2f('0x4'));var Mustache=require(_0xaf2f('0x5'));var util=require(_0xaf2f('0x6'));var path=require(_0xaf2f('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xaf2f('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xaf2f('0x9'));var squel=require(_0xaf2f('0xa'));var crypto=require(_0xaf2f('0xb'));var jsforce=require(_0xaf2f('0xc'));var deskjs=require(_0xaf2f('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xaf2f('0xe'));var authService=require(_0xaf2f('0xf'));var qs=require(_0xaf2f('0x10'));var as=require(_0xaf2f('0x11'));var hardwareService=require(_0xaf2f('0x12'));var logger=require(_0xaf2f('0x13'))(_0xaf2f('0x14'));var utils=require(_0xaf2f('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xaf2f('0x16'));var db=require(_0xaf2f('0x17'))['db'];function respondWithStatusCode(_0x3dea79,_0x578499){_0x578499=_0x578499||0xcc;return function(_0x57cdb0){if(_0x57cdb0){return _0x3dea79['sendStatus'](_0x578499);}return _0x3dea79[_0xaf2f('0x18')](_0x578499)[_0xaf2f('0x19')]();};}function respondWithResult(_0x580fa6,_0x305755){_0x305755=_0x305755||0xc8;return function(_0x131862){if(_0x131862){return _0x580fa6['status'](_0x305755)[_0xaf2f('0x1a')](_0x131862);}};}function respondWithFilteredResult(_0x4db0fc,_0x402485){return function(_0x30905b){if(_0x30905b){var _0x3d475a=typeof _0x402485[_0xaf2f('0x1b')]===_0xaf2f('0x1c')&&typeof _0x402485[_0xaf2f('0x1d')]===_0xaf2f('0x1c');var _0x2a5d4a=_0x30905b[_0xaf2f('0x1e')];var _0x244435=_0x3d475a?0x0:_0x402485['offset'];var _0x1a2d28=_0x3d475a?_0x30905b[_0xaf2f('0x1e')]:_0x402485['offset']+_0x402485['limit'];var _0xb64c0e;if(_0x1a2d28>=_0x2a5d4a){_0x1a2d28=_0x2a5d4a;_0xb64c0e=0xc8;}else{_0xb64c0e=0xce;}_0x4db0fc[_0xaf2f('0x18')](_0xb64c0e);return _0x4db0fc['set'](_0xaf2f('0x1f'),_0x244435+'-'+_0x1a2d28+'/'+_0x2a5d4a)['json'](_0x30905b);}return null;};}function patchUpdates(_0x2dbd9b){return function(_0x5a6c9d){try{jsonpatch[_0xaf2f('0x20')](_0x5a6c9d,_0x2dbd9b,!![]);}catch(_0xccf664){return BPromise['reject'](_0xccf664);}return _0x5a6c9d[_0xaf2f('0x21')]();};}function saveUpdates(_0x42b7ae,_0x359dc2){return function(_0x19da71){if(_0x19da71){return _0x19da71[_0xaf2f('0x22')](_0x42b7ae)[_0xaf2f('0x23')](function(_0x2fe731){return _0x2fe731;});}return null;};}function removeEntity(_0x1da2bb,_0x4f5018){return function(_0x5f199d){if(_0x5f199d){return _0x5f199d[_0xaf2f('0x24')]()[_0xaf2f('0x23')](function(){_0x1da2bb[_0xaf2f('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1f7440,_0x38ecee){return function(_0x29fc22){if(!_0x29fc22){_0x1f7440[_0xaf2f('0x25')](0x194);}return _0x29fc22;};}function handleError(_0x2f2068,_0x324876){_0x324876=_0x324876||0x1f4;return function(_0x593e4d){logger['error'](_0x593e4d['stack']);if(_0x593e4d[_0xaf2f('0x26')]){delete _0x593e4d['name'];}_0x2f2068['status'](_0x324876)[_0xaf2f('0x27')](_0x593e4d);};}exports[_0xaf2f('0x28')]=function(_0x16eb77,_0x21bf39){var _0x2374dd={},_0x5a752a={},_0x142dc5={'count':0x0,'rows':[]};var _0xabe0b=_['map'](db[_0xaf2f('0x29')][_0xaf2f('0x2a')],function(_0x49b428){return{'name':_0x49b428[_0xaf2f('0x2b')],'type':_0x49b428[_0xaf2f('0x2c')][_0xaf2f('0x2d')]};});_0x5a752a[_0xaf2f('0x2e')]=_['map'](_0xabe0b,_0xaf2f('0x26'));_0x5a752a[_0xaf2f('0x2f')]=_['keys'](_0x16eb77['query']);_0x5a752a[_0xaf2f('0x30')]=_['intersection'](_0x5a752a[_0xaf2f('0x2e')],_0x5a752a[_0xaf2f('0x2f')]);_0x5a752a[_0xaf2f('0x30')]=_[_0xaf2f('0x31')](_0x5a752a[_0xaf2f('0x30')],['$and',_0xaf2f('0x32'),'$gt','$gte',_0xaf2f('0x33'),_0xaf2f('0x34'),'$ne','$eq',_0xaf2f('0x35'),_0xaf2f('0x36'),_0xaf2f('0x37'),_0xaf2f('0x38'),_0xaf2f('0x39'),'$like',_0xaf2f('0x3a'),'$iLike',_0xaf2f('0x3b'),_0xaf2f('0x3c'),_0xaf2f('0x3d'),_0xaf2f('0x3e'),_0xaf2f('0x3f'),_0xaf2f('0x40')]);_0x2374dd[_0xaf2f('0x41')]=_[_0xaf2f('0x42')](_0x5a752a['model'],qs['fields'](_0x16eb77[_0xaf2f('0x2f')]['fields']));_0x2374dd[_0xaf2f('0x41')]=_0x2374dd['attributes'][_0xaf2f('0x43')]?_0x2374dd[_0xaf2f('0x41')]:_0x5a752a['model'];if(!_0x16eb77[_0xaf2f('0x2f')][_0xaf2f('0x44')]('nolimit')){_0x2374dd[_0xaf2f('0x1d')]=qs[_0xaf2f('0x1d')](_0x16eb77['query'][_0xaf2f('0x1d')]);_0x2374dd['offset']=qs[_0xaf2f('0x1b')](_0x16eb77['query']['offset']);}_0x2374dd['order']=qs[_0xaf2f('0x45')](_0x16eb77[_0xaf2f('0x2f')]['sort']);_0x2374dd[_0xaf2f('0x46')]=qs['filters'](_['pick'](_0x16eb77[_0xaf2f('0x2f')],_0x5a752a[_0xaf2f('0x30')]),_0xabe0b);if(_0x16eb77[_0xaf2f('0x2f')][_0xaf2f('0x47')]){_0x2374dd[_0xaf2f('0x46')]=_[_0xaf2f('0x48')](_0x2374dd[_0xaf2f('0x46')],{'$or':_[_0xaf2f('0x49')](_0xabe0b,function(_0x57a493){if(_0x57a493[_0xaf2f('0x2c')]!==_0xaf2f('0x4a')){var _0x95e218={};_0x95e218[_0x57a493[_0xaf2f('0x26')]]={'$like':'%'+_0x16eb77[_0xaf2f('0x2f')]['filter']+'%'};return _0x95e218;}})});}_0x2374dd=_[_0xaf2f('0x48')]({},_0x2374dd,_0x16eb77[_0xaf2f('0x4b')]);var _0x409f71={'where':_0x2374dd[_0xaf2f('0x46')]};return db[_0xaf2f('0x29')]['count'](_0x409f71)[_0xaf2f('0x23')](function(_0x4de8ff){_0x142dc5['count']=_0x4de8ff;if(_0x16eb77[_0xaf2f('0x2f')]['includeAll']){_0x2374dd[_0xaf2f('0x4c')]=[{'all':!![]}];}return db[_0xaf2f('0x29')]['findAll'](_0x2374dd);})[_0xaf2f('0x23')](function(_0x2a14cf){_0x142dc5[_0xaf2f('0x4d')]=_0x2a14cf;return _0x142dc5;})[_0xaf2f('0x23')](respondWithFilteredResult(_0x21bf39,_0x2374dd))['catch'](handleError(_0x21bf39,null));};exports['show']=function(_0x2351e1,_0x1835e4){var _0x37d495={'raw':!![],'where':{'id':_0x2351e1['params']['id']}},_0x58b066={};_0x58b066[_0xaf2f('0x2e')]=_['keys'](db[_0xaf2f('0x29')][_0xaf2f('0x2a')]);_0x58b066['query']=_[_0xaf2f('0x4e')](_0x2351e1[_0xaf2f('0x2f')]);_0x58b066[_0xaf2f('0x30')]=_['intersection'](_0x58b066['model'],_0x58b066[_0xaf2f('0x2f')]);_0x37d495['attributes']=_[_0xaf2f('0x42')](_0x58b066[_0xaf2f('0x2e')],qs['fields'](_0x2351e1[_0xaf2f('0x2f')][_0xaf2f('0x4f')]));_0x37d495[_0xaf2f('0x41')]=_0x37d495[_0xaf2f('0x41')][_0xaf2f('0x43')]?_0x37d495['attributes']:_0x58b066['model'];if(_0x2351e1['query'][_0xaf2f('0x50')]){_0x37d495[_0xaf2f('0x4c')]=[{'all':!![]}];}_0x37d495=_['merge']({},_0x37d495,_0x2351e1['options']);return db[_0xaf2f('0x29')][_0xaf2f('0x51')](_0x37d495)[_0xaf2f('0x23')](handleEntityNotFound(_0x1835e4,null))[_0xaf2f('0x23')](respondWithResult(_0x1835e4,null))[_0xaf2f('0x52')](handleError(_0x1835e4,null));};exports[_0xaf2f('0x53')]=function(_0x168ec0,_0x511f5f){return db['CmHopper'][_0xaf2f('0x53')](_0x168ec0[_0xaf2f('0x54')],{})[_0xaf2f('0x23')](respondWithResult(_0x511f5f,0xc9))[_0xaf2f('0x52')](handleError(_0x511f5f,null));};exports['update']=function(_0x53eb7b,_0x2c1c3a){if(_0x53eb7b[_0xaf2f('0x54')]['id']){delete _0x53eb7b[_0xaf2f('0x54')]['id'];}return db[_0xaf2f('0x29')][_0xaf2f('0x51')]({'where':{'id':_0x53eb7b[_0xaf2f('0x55')]['id']}})[_0xaf2f('0x23')](handleEntityNotFound(_0x2c1c3a,null))[_0xaf2f('0x23')](saveUpdates(_0x53eb7b[_0xaf2f('0x54')],null))[_0xaf2f('0x23')](respondWithResult(_0x2c1c3a,null))[_0xaf2f('0x52')](handleError(_0x2c1c3a,null));};exports[_0xaf2f('0x56')]=function(_0x3867b4,_0x5a542b){return db[_0xaf2f('0x29')][_0xaf2f('0x56')]()[_0xaf2f('0x23')](respondWithResult(_0x5a542b,null))['catch'](handleError(_0x5a542b,null));};exports['destroy']=function(_0x33aaaf,_0x190f9a){var _0x55adc7;return db[_0xaf2f('0x29')]['find']({'where':{'id':_0x33aaaf[_0xaf2f('0x55')]['id']}})[_0xaf2f('0x23')](handleEntityNotFound(_0x190f9a,null))[_0xaf2f('0x23')](function(_0x16eeb1){if(_0x16eeb1){return _0x16eeb1[_0xaf2f('0x24')]()[_0xaf2f('0x23')](function(_0x32db71){return _0x32db71;});}})['then'](function(_0x15a9d6){_0x55adc7=_0x15a9d6;if(_0x15a9d6){if(_0x15a9d6['VoiceQueueId']||_0x15a9d6[_0xaf2f('0x57')]){return db[_0x15a9d6['VoiceQueueId']?_0xaf2f('0x58'):_0xaf2f('0x59')]['find']({'where':{'id':_0x15a9d6['VoiceQueueId']?_0x15a9d6[_0xaf2f('0x5a')]:_0x15a9d6[_0xaf2f('0x57')]},'attributes':['id',_0xaf2f('0x26')],'raw':!![]});}}})[_0xaf2f('0x23')](function(_0x228715){var _0x3d2b58={};if(_0x228715){_[_0xaf2f('0x48')](_0x3d2b58,_['omit'](_0x55adc7['dataValues'],[_0xaf2f('0x5b'),'updatedAt','id']));_0x3d2b58[_0xaf2f('0x5c')]=0x15;_0x3d2b58[_0xaf2f('0x5d')]=_0xaf2f('0x5e');_0x3d2b58[_0xaf2f('0x5f')]=_0x228715[_0xaf2f('0x26')];_0x3d2b58[_0xaf2f('0x60')]=_0x33aaaf[_0xaf2f('0x61')][_0xaf2f('0x26')];_0x3d2b58[_0xaf2f('0x62')]=_0x33aaaf[_0xaf2f('0x61')]['id'];_0x3d2b58[_0xaf2f('0x5e')]=!![];_0x3d2b58['deletedat']=moment()[_0xaf2f('0x63')](_0xaf2f('0x64'));_0x3d2b58[_0xaf2f('0x65')]=_0x55adc7[_0xaf2f('0x66')];_0x3d2b58[_0xaf2f('0x67')]=_0x55adc7['VoiceQueueId']?_0xaf2f('0x68'):_0xaf2f('0x69');return db['CmContact'][_0xaf2f('0x51')]({'where':{'id':_0x3d2b58['ContactId']},'attributes':[_0xaf2f('0x6a'),'lastName']})[_0xaf2f('0x23')](function(_0x1e2164){if(!_[_0xaf2f('0x6b')](_0x190f9a)&&!_['isNil'](_0x1e2164['firstName'])){_0x3d2b58[_0xaf2f('0x6c')]=_0x1e2164[_0xaf2f('0x6a')];if(!_[_0xaf2f('0x6b')](_0x1e2164[_0xaf2f('0x6d')])){_0x3d2b58[_0xaf2f('0x6c')]+='\x20'+_0x1e2164[_0xaf2f('0x6d')];}}})[_0xaf2f('0x6e')](function(){return db[_0xaf2f('0x6f')]['create'](_0x3d2b58);});}})[_0xaf2f('0x23')](function(){return _0x190f9a[_0xaf2f('0x18')](0xcc)['end']();})[_0xaf2f('0x52')](handleError(_0x190f9a,null));};exports[_0xaf2f('0x70')]=function(_0xd3aafe,_0x3be98e,_0x39d4c8){var _0x204834=[];return db['CmContact'][_0xaf2f('0x56')]()[_0xaf2f('0x23')](function(_0x37da03){_0x204834=_[_0xaf2f('0x4e')](_0x37da03);return _0xd3aafe['user'][_0xaf2f('0x71')]({'where':{'type':_0xaf2f('0x72'),'dialActive':!![],'dialMethod':'preview'},'attributes':['id',_0xaf2f('0x73'),_0xaf2f('0x74')],'raw':!![]});})[_0xaf2f('0x23')](function(_0x1db43a){if(_0x1db43a&&_0x1db43a['length']){return db[_0xaf2f('0x75')][_0xaf2f('0x76')](function(_0x2d31a){var _0x4b6aad={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0xaf2f('0x63')](_0xaf2f('0x64'))},'VoiceQueueId':{'$in':_['map'](_0x1db43a,'id')},'$or':[{'UserId':null},{'UserId':_0xd3aafe[_0xaf2f('0x61')]['id']}]};var _0x1f010b={'active':![],'recallme':!![],'VoiceQueueId':{'$in':_(_0x1db43a)[_0xaf2f('0x47')]([_0xaf2f('0x74'),0x0])[_0xaf2f('0x49')]('id')[_0xaf2f('0x77')]()},'$or':[{'UserId':null},{'UserId':_0xd3aafe[_0xaf2f('0x61')]['id']}]};var _0x15f296={'$or':[_0x4b6aad,_0x1f010b]};var _0x447149=[];if(_0xd3aafe[_0xaf2f('0x54')][_0xaf2f('0x78')]&&_0xd3aafe[_0xaf2f('0x54')]['direction']===_0xaf2f('0x79')){if(!_[_0xaf2f('0x7a')](_0xd3aafe[_0xaf2f('0x54')][_0xaf2f('0x7b')])){_0x15f296['id']={'$in':_0xd3aafe[_0xaf2f('0x54')][_0xaf2f('0x7b')]};}_0x447149=[[_0xaf2f('0x7c'),_0xaf2f('0x7d')],[_0xaf2f('0x7e'),_0x1db43a[0x0][_0xaf2f('0x73')]===_0xaf2f('0x7d')?_0xaf2f('0x7f'):_0xaf2f('0x7d')],db[_0xaf2f('0x75')]['literal']('COALESCE(CmHopper.UserId,\x200)\x20ASC'),['id','DESC']];}else{if(!_[_0xaf2f('0x7a')](_0xd3aafe[_0xaf2f('0x54')][_0xaf2f('0x7b')])){_0x15f296['id']={'$notIn':_0xd3aafe[_0xaf2f('0x54')][_0xaf2f('0x7b')]};}_0x447149=[[_0xaf2f('0x7c'),_0xaf2f('0x7f')],[_0xaf2f('0x7e'),_0x1db43a[0x0][_0xaf2f('0x73')]],db['sequelize'][_0xaf2f('0x80')](_0xaf2f('0x81')),['id','ASC']];}return db[_0xaf2f('0x29')][_0xaf2f('0x82')]({'attributes':['id',_0xaf2f('0x83'),_0xaf2f('0x84')],'where':_0x15f296,'order':_0x447149,'transaction':_0x2d31a,'lock':_0x2d31a[_0xaf2f('0x85')]['UPDATE'],'include':[{'model':db[_0xaf2f('0x86')],'as':_0xaf2f('0x87'),'attributes':_0x204834,'include':[{'model':db[_0xaf2f('0x88')],'as':'Company','attributes':['id',_0xaf2f('0x26')]}]},{'model':db['CmList'],'as':'List','attributes':['id','name']},{'model':db[_0xaf2f('0x58')],'as':_0xaf2f('0x89'),'attributes':['id',_0xaf2f('0x26'),_0xaf2f('0x8a')]}]})[_0xaf2f('0x23')](function(_0x4512f7){if(_0x4512f7){return _0x4512f7[_0xaf2f('0x22')]({'UserId':_0xd3aafe[_0xaf2f('0x61')]['id']},{'transaction':_0x2d31a});}});});}})['then'](handleEntityNotFound(_0x3be98e,null))[_0xaf2f('0x23')](respondWithResult(_0x3be98e,null))[_0xaf2f('0x52')](handleError(_0x3be98e,null));};exports['getOpenContacts']=function(_0x19063e,_0x2b7a49,_0x1b2844){return _0x19063e[_0xaf2f('0x61')][_0xaf2f('0x71')]({'where':{'type':_0xaf2f('0x72'),'dialActive':!![],'dialMethod':_0xaf2f('0x8b')},'attributes':['id'],'raw':!![]})[_0xaf2f('0x23')](function(_0xa3ac5d){if(_0xa3ac5d&&_0xa3ac5d[_0xaf2f('0x43')]){return db['CmHopper'][_0xaf2f('0x1e')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()['format'](_0xaf2f('0x64'))},'VoiceQueueId':{'$in':_[_0xaf2f('0x49')](_0xa3ac5d,'id')},'$or':[{'UserId':null},{'UserId':_0x19063e[_0xaf2f('0x61')]['id']}]}});}return 0x0;})['then'](function(_0x31c82e){if(!_[_0xaf2f('0x6b')](_0x31c82e)&&_[_0xaf2f('0x8c')](_0x31c82e)){return _0x2b7a49['status'](0xc8)[_0xaf2f('0x1a')]({'contacts':_0x31c82e});}else{logger[_0xaf2f('0x8d')](_0xaf2f('0x8e'),_0xaf2f('0x8f'),0x194,'entity\x20not\x20found');_0x2b7a49['sendStatus'](0x194);}})[_0xaf2f('0x52')](handleError(_0x2b7a49,null));};
\ No newline at end of file
index cc477f4..959c895 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1883=['../../config/environment','./cmHopper.attributes','exports','define','CmHopper','cm_hopper','scheduledat','phone','priority','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x4d662b,_0x3da4aa){var _0x5003b6=function(_0x134798){while(--_0x134798){_0x4d662b['push'](_0x4d662b['shift']());}};_0x5003b6(++_0x3da4aa);}(_0x1883,0xab));var _0x3188=function(_0x36e84a,_0xc37a13){_0x36e84a=_0x36e84a-0x0;var _0x11839e=_0x1883[_0x36e84a];return _0x11839e;};'use strict';var _=require(_0x3188('0x0'));var util=require(_0x3188('0x1'));var logger=require(_0x3188('0x2'))(_0x3188('0x3'));var moment=require(_0x3188('0x4'));var BPromise=require(_0x3188('0x5'));var rp=require(_0x3188('0x6'));var fs=require('fs');var path=require(_0x3188('0x7'));var rimraf=require(_0x3188('0x8'));var config=require(_0x3188('0x9'));var attributes=require(_0x3188('0xa'));module[_0x3188('0xb')]=function(_0x408ae0,_0x33b62d){return _0x408ae0[_0x3188('0xc')](_0x3188('0xd'),attributes,{'tableName':_0x3188('0xe'),'paranoid':![],'indexes':[{'name':'scheduledat','fields':[_0x3188('0xf')]},{'name':_0x3188('0x10'),'fields':['phone']},{'name':_0x3188('0x11'),'fields':['priority']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x1883=['../../config/environment','./cmHopper.attributes','exports','define','CmHopper','cm_hopper','scheduledat','phone','priority','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x5d9695,_0x28cb2a){var _0x5ea6c2=function(_0x48a0c5){while(--_0x48a0c5){_0x5d9695['push'](_0x5d9695['shift']());}};_0x5ea6c2(++_0x28cb2a);}(_0x1883,0xab));var _0x3188=function(_0x57e009,_0x4c5e53){_0x57e009=_0x57e009-0x0;var _0x26ab88=_0x1883[_0x57e009];return _0x26ab88;};'use strict';var _=require(_0x3188('0x0'));var util=require(_0x3188('0x1'));var logger=require(_0x3188('0x2'))(_0x3188('0x3'));var moment=require(_0x3188('0x4'));var BPromise=require(_0x3188('0x5'));var rp=require(_0x3188('0x6'));var fs=require('fs');var path=require(_0x3188('0x7'));var rimraf=require(_0x3188('0x8'));var config=require(_0x3188('0x9'));var attributes=require(_0x3188('0xa'));module[_0x3188('0xb')]=function(_0x408ae0,_0x33b62d){return _0x408ae0[_0x3188('0xc')](_0x3188('0xd'),attributes,{'tableName':_0x3188('0xe'),'paranoid':![],'indexes':[{'name':'scheduledat','fields':[_0x3188('0xf')]},{'name':_0x3188('0x10'),'fields':['phone']},{'name':_0x3188('0x11'),'fields':['priority']}],'timestamps':!![]});};
\ No newline at end of file
index 25a5736..162e305 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7fd4=['catch','GetCmHopper','CmHopper','findAll','options','attributes','limit','include','map','model','ShowCmHopper','find','where','CreateCmHopper','UpdateCmHopper','body','raw','DestroyCmHopper','destroy','GetContactDialer','sequelize','transaction','LOCK','UPDATE','Contact','keys','User','Agent','name','voicePause','length','UserId','push','update','all','create','MoveContactManagedDialer','COUNT','literal','`scheduledat`\x20>=\x20','format','YYYY-MM-DD\x20HH:mm:ss','\x20,\x201,\x20null','contactsRescheduled','CountReScheduled','GetContactRecallMe','CmContact','describe','order','lodash','moment','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','request','then','info','CmHopper,\x20%s,\x20%s','debug','CmHopper,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','code','error','message','result'];(function(_0x5b9a30,_0x2b3667){var _0x35f722=function(_0xfb962b){while(--_0xfb962b){_0x5b9a30['push'](_0x5b9a30['shift']());}};_0x35f722(++_0x2b3667);}(_0x7fd4,0x103));var _0x47fd=function(_0x2e913b,_0x4b7071){_0x2e913b=_0x2e913b-0x0;var _0x173899=_0x7fd4[_0x2e913b];return _0x173899;};'use strict';var _=require(_0x47fd('0x0'));var util=require('util');var moment=require(_0x47fd('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x47fd('0x2'));var db=require(_0x47fd('0x3'))['db'];var utils=require(_0x47fd('0x4'));var logger=require('../../config/logger')(_0x47fd('0x5'));var config=require(_0x47fd('0x6'));var jayson=require(_0x47fd('0x7'));var client=jayson['client'][_0x47fd('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x31fa2a,_0x115f15,_0x1727ca){return new BPromise(function(_0x4b1642,_0x1a06c5){return client[_0x47fd('0x9')](_0x31fa2a,_0x1727ca)[_0x47fd('0xa')](function(_0x249bab){logger[_0x47fd('0xb')](_0x47fd('0xc'),_0x115f15,'request\x20sent');logger[_0x47fd('0xd')](_0x47fd('0xe'),_0x115f15,_0x47fd('0xf'),JSON[_0x47fd('0x10')](_0x249bab));if(_0x249bab['error']){if(_0x249bab['error'][_0x47fd('0x11')]===0x1f4){logger[_0x47fd('0x12')](_0x47fd('0xc'),_0x115f15,_0x249bab[_0x47fd('0x12')][_0x47fd('0x13')]);return _0x1a06c5(_0x249bab['error'][_0x47fd('0x13')]);}logger['error'](_0x47fd('0xc'),_0x115f15,_0x249bab[_0x47fd('0x12')][_0x47fd('0x13')]);return _0x4b1642(_0x249bab[_0x47fd('0x12')][_0x47fd('0x13')]);}else{logger[_0x47fd('0xb')]('CmHopper,\x20%s,\x20%s',_0x115f15,_0x47fd('0xf'));_0x4b1642(_0x249bab[_0x47fd('0x14')][_0x47fd('0x13')]);}})[_0x47fd('0x15')](function(_0x59ca1c){logger['error'](_0x47fd('0xc'),_0x115f15,_0x59ca1c);_0x1a06c5(_0x59ca1c);});});}exports[_0x47fd('0x16')]=function(_0x338a77){var _0x4c3a2d=this;return new Promise(function(_0x17597a,_0x1c4f15){return db[_0x47fd('0x17')][_0x47fd('0x18')]({'raw':_0x338a77[_0x47fd('0x19')]?_0x338a77[_0x47fd('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x338a77['options']?_0x338a77['options']['where']||null:null,'attributes':_0x338a77['options']?_0x338a77['options'][_0x47fd('0x1a')]||null:null,'limit':_0x338a77[_0x47fd('0x19')]?_0x338a77['options'][_0x47fd('0x1b')]||null:null,'include':_0x338a77[_0x47fd('0x19')]?_0x338a77[_0x47fd('0x19')][_0x47fd('0x1c')]?_[_0x47fd('0x1d')](_0x338a77[_0x47fd('0x19')][_0x47fd('0x1c')],function(_0x21b63e){return{'model':db[_0x21b63e[_0x47fd('0x1e')]],'as':_0x21b63e['as'],'attributes':_0x21b63e[_0x47fd('0x1a')],'include':_0x21b63e[_0x47fd('0x1c')]?_[_0x47fd('0x1d')](_0x21b63e['include'],function(_0x4533c9){return{'model':db[_0x4533c9[_0x47fd('0x1e')]],'as':_0x4533c9['as'],'attributes':_0x4533c9['attributes'],'include':_0x4533c9[_0x47fd('0x1c')]?_[_0x47fd('0x1d')](_0x4533c9[_0x47fd('0x1c')],function(_0x2630a6){return{'model':db[_0x2630a6[_0x47fd('0x1e')]],'as':_0x2630a6['as'],'attributes':_0x2630a6['attributes']};}):[]};}):[]};}):[]:[]})[_0x47fd('0xa')](function(_0x182dae){logger[_0x47fd('0xb')](_0x47fd('0x16'),_0x338a77);logger['debug']('GetCmHopper',_0x338a77,JSON[_0x47fd('0x10')](_0x182dae));_0x17597a(_0x182dae);})[_0x47fd('0x15')](function(_0x43d92d){logger[_0x47fd('0x12')](_0x47fd('0x16'),_0x43d92d[_0x47fd('0x13')],_0x338a77);_0x1c4f15(_0x4c3a2d[_0x47fd('0x12')](0x1f4,_0x43d92d[_0x47fd('0x13')]));});});};exports[_0x47fd('0x1f')]=function(_0x172e46){var _0x2daa21=this;return new Promise(function(_0x269e84,_0x2b61ca){return db[_0x47fd('0x17')][_0x47fd('0x20')]({'raw':_0x172e46[_0x47fd('0x19')]?_0x172e46[_0x47fd('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x172e46[_0x47fd('0x19')]?_0x172e46[_0x47fd('0x19')][_0x47fd('0x21')]||null:null,'attributes':_0x172e46[_0x47fd('0x19')]?_0x172e46[_0x47fd('0x19')][_0x47fd('0x1a')]||null:null,'include':_0x172e46[_0x47fd('0x19')]?_0x172e46[_0x47fd('0x19')][_0x47fd('0x1c')]?_['map'](_0x172e46['options'][_0x47fd('0x1c')],function(_0x51aa30){return{'model':db[_0x51aa30[_0x47fd('0x1e')]],'as':_0x51aa30['as'],'attributes':_0x51aa30[_0x47fd('0x1a')],'include':_0x51aa30[_0x47fd('0x1c')]?_[_0x47fd('0x1d')](_0x51aa30['include'],function(_0x481ca6){return{'model':db[_0x481ca6[_0x47fd('0x1e')]],'as':_0x481ca6['as'],'attributes':_0x481ca6[_0x47fd('0x1a')],'include':_0x481ca6[_0x47fd('0x1c')]?_[_0x47fd('0x1d')](_0x481ca6[_0x47fd('0x1c')],function(_0x123875){return{'model':db[_0x123875[_0x47fd('0x1e')]],'as':_0x123875['as'],'attributes':_0x123875[_0x47fd('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x47fd('0xa')](function(_0x4eb5c0){logger[_0x47fd('0xb')](_0x47fd('0x1f'),_0x172e46);logger[_0x47fd('0xd')](_0x47fd('0x1f'),_0x172e46,JSON[_0x47fd('0x10')](_0x4eb5c0));_0x269e84(_0x4eb5c0);})[_0x47fd('0x15')](function(_0x14959d){logger[_0x47fd('0x12')](_0x47fd('0x1f'),_0x14959d['message'],_0x172e46);_0x2b61ca(_0x2daa21[_0x47fd('0x12')](0x1f4,_0x14959d[_0x47fd('0x13')]));});});};exports[_0x47fd('0x22')]=function(_0x2fe771){var _0x17b91d=this;return new Promise(function(_0x340dfd,_0x258a5a){return db[_0x47fd('0x17')]['create'](_0x2fe771['body'],{'raw':_0x2fe771['options']?_0x2fe771[_0x47fd('0x19')]['raw']===undefined?!![]:![]:!![]})[_0x47fd('0xa')](function(_0x525e5f){logger[_0x47fd('0xb')](_0x47fd('0x22'),_0x2fe771);logger['debug'](_0x47fd('0x22'),_0x2fe771,JSON[_0x47fd('0x10')](_0x525e5f));_0x340dfd(_0x525e5f);})[_0x47fd('0x15')](function(_0x189460){logger['error'](_0x47fd('0x22'),_0x189460['message'],_0x2fe771);_0x258a5a(_0x17b91d[_0x47fd('0x12')](0x1f4,_0x189460[_0x47fd('0x13')]));});});};exports[_0x47fd('0x23')]=function(_0x2527a1){var _0x39c265=this;return new Promise(function(_0x35e386,_0x3d6e3c){return db[_0x47fd('0x17')]['update'](_0x2527a1[_0x47fd('0x24')],{'raw':_0x2527a1['options']?_0x2527a1['options'][_0x47fd('0x25')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2527a1[_0x47fd('0x19')]?_0x2527a1['options'][_0x47fd('0x21')]||null:null,'attributes':_0x2527a1['options']?_0x2527a1['options'][_0x47fd('0x1a')]||null:null,'limit':_0x2527a1[_0x47fd('0x19')]?_0x2527a1[_0x47fd('0x19')][_0x47fd('0x1b')]||null:null})[_0x47fd('0xa')](function(_0x4a4049){logger[_0x47fd('0xb')](_0x47fd('0x23'),_0x2527a1);logger[_0x47fd('0xd')](_0x47fd('0x23'),_0x2527a1,JSON[_0x47fd('0x10')](_0x4a4049));_0x35e386(_0x4a4049);})['catch'](function(_0xb02a09){logger[_0x47fd('0x12')](_0x47fd('0x23'),_0xb02a09[_0x47fd('0x13')],_0x2527a1);_0x3d6e3c(_0x39c265[_0x47fd('0x12')](0x1f4,_0xb02a09['message']));});});};exports[_0x47fd('0x26')]=function(_0x1e32f7){var _0x2b9173=this;return new Promise(function(_0x2ba510,_0x464f22){return db[_0x47fd('0x17')][_0x47fd('0x27')]({'where':_0x1e32f7[_0x47fd('0x19')]?_0x1e32f7[_0x47fd('0x19')]['where']||null:null})[_0x47fd('0xa')](function(_0x4043a4){logger[_0x47fd('0xb')](_0x47fd('0x26'),_0x1e32f7);logger[_0x47fd('0xd')](_0x47fd('0x26'),_0x1e32f7,JSON['stringify'](_0x4043a4));_0x2ba510(_0x4043a4);})[_0x47fd('0x15')](function(_0x1e12df){logger[_0x47fd('0x12')]('DestroyCmHopper',_0x1e12df[_0x47fd('0x13')],_0x1e32f7);_0x464f22(_0x2b9173['error'](0x1f4,_0x1e12df[_0x47fd('0x13')]));});});};exports[_0x47fd('0x28')]=function(_0x36790e){var _0x4c76ce=this;return new Promise(function(_0x18da5c,_0x32c510){return db['CmContact']['describe']()[_0x47fd('0xa')](function(_0x31b273){return db[_0x47fd('0x29')][_0x47fd('0x2a')](function(_0x1b146a){return db[_0x47fd('0x17')]['findAll']({'where':_0x36790e[_0x47fd('0x19')]?_0x36790e['options'][_0x47fd('0x21')]||null:null,'attributes':_0x36790e[_0x47fd('0x19')]?_0x36790e[_0x47fd('0x19')][_0x47fd('0x1a')]||null:null,'limit':_0x36790e[_0x47fd('0x19')]?_0x36790e[_0x47fd('0x19')]['limit']||null:null,'order':_0x36790e[_0x47fd('0x19')]?_0x36790e['options']['order']||null:null,'transaction':_0x1b146a,'lock':_0x1b146a[_0x47fd('0x2b')][_0x47fd('0x2c')],'include':[{'model':db['CmContact'],'as':_0x47fd('0x2d'),'attributes':_[_0x47fd('0x2e')](_0x31b273)},{'model':db[_0x47fd('0x2f')],'as':_0x47fd('0x30'),'attributes':['id',_0x47fd('0x31'),_0x47fd('0x32')]}]})['then'](function(_0x5c4647){var _0x5855e5=[];var _0x236ad5=[];for(var _0x5d518c=0x0;_0x5d518c<_0x5c4647[_0x47fd('0x33')];_0x5d518c+=0x1){var _0xc667e0=_0x5c4647[_0x5d518c][_0x47fd('0x34')];if(_0xc667e0===null){_0x5855e5[_0x47fd('0x35')](_0x5c4647[_0x5d518c][_0x47fd('0x36')](_0x36790e[_0x47fd('0x24')],{'transaction':_0x1b146a}));}else if(!_0x236ad5['includes'](_0xc667e0)){_0x236ad5[_0x47fd('0x35')](_0xc667e0);_0x5855e5['push'](_0x5c4647[_0x5d518c]['update'](_0x36790e[_0x47fd('0x24')],{'transaction':_0x1b146a}));}}return BPromise[_0x47fd('0x37')](_0x5855e5);});})[_0x47fd('0xa')](function(_0x3e06ef){logger[_0x47fd('0xb')](_0x47fd('0x28'),_0x36790e);logger[_0x47fd('0xd')](_0x47fd('0x28'),_0x36790e,JSON['stringify'](_0x3e06ef));_0x18da5c(_0x3e06ef);})[_0x47fd('0x15')](function(_0x453fa3){logger[_0x47fd('0x12')](_0x47fd('0x28'),_0x453fa3['message'],_0x36790e);_0x32c510(_0x4c76ce['error'](0x1f4,_0x453fa3['message']));});});});};exports['MoveContactManagedDialer']=function(_0x1e4f7c){var _0x47b87c=this;return new Promise(function(_0xd1e76a,_0x34dfe0){return db[_0x47fd('0x29')]['transaction'](function(_0x50d907){return db['CmHopperFinal'][_0x47fd('0x38')](_0x1e4f7c[_0x47fd('0x24')],{'raw':_0x1e4f7c['options']?_0x1e4f7c['options'][_0x47fd('0x25')]===undefined?!![]:![]:!![],'transaction':_0x50d907})[_0x47fd('0xa')](function(){return db[_0x47fd('0x17')][_0x47fd('0x27')]({'where':_0x1e4f7c[_0x47fd('0x19')]?_0x1e4f7c[_0x47fd('0x19')]['where']||null:null,'transaction':_0x50d907});});})[_0x47fd('0xa')](function(_0x100768){logger[_0x47fd('0xb')](_0x47fd('0x39'),_0x1e4f7c);logger[_0x47fd('0xd')](_0x47fd('0x39'),_0x1e4f7c,JSON[_0x47fd('0x10')](_0x100768));_0xd1e76a(_0x100768);})[_0x47fd('0x15')](function(_0x6f9e9a){logger[_0x47fd('0x12')](_0x47fd('0x39'),_0x6f9e9a['message'],_0x1e4f7c);_0x34dfe0(_0x47b87c[_0x47fd('0x12')](0x1f4,_0x6f9e9a[_0x47fd('0x13')]));});});};exports['CountReScheduled']=function(_0x1e5db8){var _0x1af468=this;return new Promise(function(_0x36b77b,_0x1bd152){return db[_0x47fd('0x17')][_0x47fd('0x18')]({'raw':_0x1e5db8['options']?_0x1e5db8[_0x47fd('0x19')][_0x47fd('0x25')]===undefined?!![]:![]:!![],'where':_0x1e5db8[_0x47fd('0x19')]?_0x1e5db8[_0x47fd('0x19')][_0x47fd('0x21')]||null:null,'attributes':[[db[_0x47fd('0x29')]['fn'](_0x47fd('0x3a'),db[_0x47fd('0x29')]['fn']('IF',db['sequelize'][_0x47fd('0x3b')](_0x47fd('0x3c')+util[_0x47fd('0x3d')]('\x22%s\x22',moment()[_0x47fd('0x3d')](_0x47fd('0x3e')))+_0x47fd('0x3f')))),_0x47fd('0x40')]]})[_0x47fd('0xa')](function(_0x45ac1e){logger[_0x47fd('0xb')](_0x47fd('0x41'),_0x1e5db8);logger[_0x47fd('0xd')](_0x47fd('0x41'),_0x1e5db8,JSON[_0x47fd('0x10')](_0x45ac1e));_0x36b77b(_0x45ac1e);})['catch'](function(_0x3bbb9b){logger[_0x47fd('0x12')](_0x47fd('0x41'),_0x3bbb9b[_0x47fd('0x13')],_0x1e5db8);_0x1bd152(_0x1af468['error'](0x1f4,_0x3bbb9b[_0x47fd('0x13')]));});});};exports[_0x47fd('0x42')]=function(_0x4650b7){var _0x5f02c6=this;return new Promise(function(_0x3a9c38,_0x17196a){return db[_0x47fd('0x43')][_0x47fd('0x44')]()[_0x47fd('0xa')](function(_0x4442be){return db[_0x47fd('0x29')][_0x47fd('0x2a')](function(_0x51cfba){return db['CmHopper'][_0x47fd('0x18')]({'where':_0x4650b7['options']?_0x4650b7['options']['where']||null:null,'attributes':_0x4650b7[_0x47fd('0x19')]?_0x4650b7['options'][_0x47fd('0x1a')]||null:null,'limit':0x1,'order':_0x4650b7[_0x47fd('0x19')]?_0x4650b7[_0x47fd('0x19')][_0x47fd('0x45')]||null:null,'group':db[_0x47fd('0x17')][_0x47fd('0x34')],'transaction':_0x51cfba,'lock':_0x51cfba[_0x47fd('0x2b')][_0x47fd('0x2c')],'include':_0x4650b7[_0x47fd('0x19')]?_0x4650b7[_0x47fd('0x19')][_0x47fd('0x1c')]?_[_0x47fd('0x1d')](_0x4650b7['options']['include'],function(_0x2fcdc5){return{'model':db[_0x2fcdc5[_0x47fd('0x1e')]],'as':_0x2fcdc5['as'],'attributes':_0x2fcdc5[_0x47fd('0x1a')],'include':_0x2fcdc5['include']?_['map'](_0x2fcdc5[_0x47fd('0x1c')],function(_0x471f){return{'model':db[_0x471f[_0x47fd('0x1e')]],'as':_0x471f['as'],'attributes':_0x471f[_0x47fd('0x1a')],'include':_0x471f['include']?_[_0x47fd('0x1d')](_0x471f[_0x47fd('0x1c')],function(_0x5e28da){return{'model':db[_0x5e28da[_0x47fd('0x1e')]],'as':_0x5e28da['as'],'attributes':_0x5e28da[_0x47fd('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4f8373){var _0x3dd654=[];for(var _0x526380=0x0;_0x526380<_0x4f8373[_0x47fd('0x33')];_0x526380+=0x1){_0x3dd654[_0x47fd('0x35')](_0x4f8373[_0x526380][_0x47fd('0x36')](_0x4650b7[_0x47fd('0x24')],{'transaction':_0x51cfba}));}return BPromise[_0x47fd('0x37')](_0x3dd654);});})[_0x47fd('0xa')](function(_0x352cd9){logger[_0x47fd('0xb')](_0x47fd('0x42'),_0x4650b7);logger[_0x47fd('0xd')]('GetContactRecallMe',_0x4650b7,JSON[_0x47fd('0x10')](_0x352cd9));_0x3a9c38(_0x352cd9);})['catch'](function(_0x1579b0){logger[_0x47fd('0x12')](_0x47fd('0x42'),_0x1579b0[_0x47fd('0x13')],_0x4650b7);_0x17196a(_0x5f02c6['error'](0x1f4,_0x1579b0[_0x47fd('0x13')]));});});});};exports['GetCmHopperPreview']=function(_0x50f061){var _0x418c27=this;return new Promise(function(_0x369541,_0x43c880){db[_0x47fd('0x43')][_0x47fd('0x44')]()[_0x47fd('0xa')](function(_0x25ccb3){return db[_0x47fd('0x17')][_0x47fd('0x18')]({'raw':_0x50f061[_0x47fd('0x19')]?_0x50f061[_0x47fd('0x19')][_0x47fd('0x25')]===undefined?!![]:![]:!![],'where':_0x50f061['options']?_0x50f061[_0x47fd('0x19')][_0x47fd('0x21')]||null:null,'attributes':_0x50f061[_0x47fd('0x19')]?_0x50f061[_0x47fd('0x19')][_0x47fd('0x1a')]||null:null,'limit':_0x50f061['options']?_0x50f061[_0x47fd('0x19')]['limit']||null:null,'include':_0x50f061[_0x47fd('0x19')]?_0x50f061['options'][_0x47fd('0x1c')]?_['map'](_0x50f061[_0x47fd('0x19')]['include'],function(_0x40378c){return{'model':db[_0x40378c['model']],'as':_0x40378c['as'],'attributes':_0x40378c['as']===_0x47fd('0x2d')?_['keys'](_0x25ccb3):_0x40378c[_0x47fd('0x1a')],'include':_0x40378c[_0x47fd('0x1c')]?_[_0x47fd('0x1d')](_0x40378c[_0x47fd('0x1c')],function(_0x5b5869){return{'model':db[_0x5b5869['model']],'as':_0x5b5869['as'],'attributes':_0x5b5869[_0x47fd('0x1a')],'include':_0x5b5869['include']?_[_0x47fd('0x1d')](_0x5b5869[_0x47fd('0x1c')],function(_0xf96815){return{'model':db[_0xf96815[_0x47fd('0x1e')]],'as':_0xf96815['as'],'attributes':_0xf96815['attributes']};}):[]};}):[]};}):[]:[]})[_0x47fd('0xa')](function(_0xc79e41){logger[_0x47fd('0xb')](_0x47fd('0x16'),_0x50f061);logger[_0x47fd('0xd')]('GetCmHopper',_0x50f061,JSON['stringify'](_0xc79e41));_0x369541(_0xc79e41);})[_0x47fd('0x15')](function(_0x2bbbc6){logger[_0x47fd('0x12')](_0x47fd('0x16'),_0x2bbbc6[_0x47fd('0x13')],_0x50f061);_0x43c880(_0x418c27[_0x47fd('0x12')](0x1f4,_0x2bbbc6['message']));});});});};
\ No newline at end of file
+var _0x269d=['request\x20sent','debug','CmHopper,\x20%s,\x20%s,\x20%s','error','CmHopper,\x20%s,\x20%s','message','catch','GetCmHopper','CmHopper','raw','options','where','attributes','limit','include','model','map','then','stringify','ShowCmHopper','find','CreateCmHopper','create','body','UpdateCmHopper','update','DestroyCmHopper','GetContactDialer','CmContact','describe','transaction','LOCK','UPDATE','keys','Agent','name','voicePause','length','UserId','includes','push','all','MoveContactManagedDialer','sequelize','CmHopperFinal','destroy','CountReScheduled','findAll','COUNT','literal','`scheduledat`\x20>=\x20','format','\x22%s\x22','YYYY-MM-DD\x20HH:mm:ss','contactsRescheduled','GetContactRecallMe','order','GetCmHopperPreview','bluebird','randomstring','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','http','request','info'];(function(_0x2bdf72,_0x3aa93a){var _0x3f51da=function(_0x12a68b){while(--_0x12a68b){_0x2bdf72['push'](_0x2bdf72['shift']());}};_0x3f51da(++_0x3aa93a);}(_0x269d,0xc0));var _0xd269=function(_0x2b3767,_0x485cbc){_0x2b3767=_0x2b3767-0x0;var _0x890b4a=_0x269d[_0x2b3767];return _0x890b4a;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0xd269('0x0'));var rs=require(_0xd269('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xd269('0x2'))['db'];var utils=require('../../config/utils');var logger=require(_0xd269('0x3'))('rpc');var config=require(_0xd269('0x4'));var jayson=require(_0xd269('0x5'));var client=jayson['client'][_0xd269('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x4e5831,_0x15c0c4,_0x3f65a5){return new BPromise(function(_0x4ef29e,_0x5412b5){return client[_0xd269('0x7')](_0x4e5831,_0x3f65a5)['then'](function(_0x2eae51){logger[_0xd269('0x8')]('CmHopper,\x20%s,\x20%s',_0x15c0c4,_0xd269('0x9'));logger[_0xd269('0xa')](_0xd269('0xb'),_0x15c0c4,_0xd269('0x9'),JSON['stringify'](_0x2eae51));if(_0x2eae51['error']){if(_0x2eae51['error']['code']===0x1f4){logger[_0xd269('0xc')](_0xd269('0xd'),_0x15c0c4,_0x2eae51['error'][_0xd269('0xe')]);return _0x5412b5(_0x2eae51[_0xd269('0xc')][_0xd269('0xe')]);}logger[_0xd269('0xc')]('CmHopper,\x20%s,\x20%s',_0x15c0c4,_0x2eae51[_0xd269('0xc')][_0xd269('0xe')]);return _0x4ef29e(_0x2eae51[_0xd269('0xc')][_0xd269('0xe')]);}else{logger[_0xd269('0x8')](_0xd269('0xd'),_0x15c0c4,_0xd269('0x9'));_0x4ef29e(_0x2eae51['result'][_0xd269('0xe')]);}})[_0xd269('0xf')](function(_0x3322ef){logger[_0xd269('0xc')](_0xd269('0xd'),_0x15c0c4,_0x3322ef);_0x5412b5(_0x3322ef);});});}exports[_0xd269('0x10')]=function(_0x558cda){var _0x20f509=this;return new Promise(function(_0x8c7fa6,_0x239a83){return db[_0xd269('0x11')]['findAll']({'raw':_0x558cda['options']?_0x558cda['options'][_0xd269('0x12')]===undefined?!![]:![]:!![],'where':_0x558cda[_0xd269('0x13')]?_0x558cda['options'][_0xd269('0x14')]||null:null,'attributes':_0x558cda[_0xd269('0x13')]?_0x558cda[_0xd269('0x13')][_0xd269('0x15')]||null:null,'limit':_0x558cda['options']?_0x558cda['options'][_0xd269('0x16')]||null:null,'include':_0x558cda[_0xd269('0x13')]?_0x558cda['options'][_0xd269('0x17')]?_['map'](_0x558cda[_0xd269('0x13')]['include'],function(_0x18d850){return{'model':db[_0x18d850[_0xd269('0x18')]],'as':_0x18d850['as'],'attributes':_0x18d850[_0xd269('0x15')],'include':_0x18d850[_0xd269('0x17')]?_[_0xd269('0x19')](_0x18d850[_0xd269('0x17')],function(_0x1503ba){return{'model':db[_0x1503ba[_0xd269('0x18')]],'as':_0x1503ba['as'],'attributes':_0x1503ba[_0xd269('0x15')],'include':_0x1503ba[_0xd269('0x17')]?_[_0xd269('0x19')](_0x1503ba[_0xd269('0x17')],function(_0x47d105){return{'model':db[_0x47d105[_0xd269('0x18')]],'as':_0x47d105['as'],'attributes':_0x47d105[_0xd269('0x15')]};}):[]};}):[]};}):[]:[]})[_0xd269('0x1a')](function(_0x5c710c){logger[_0xd269('0x8')](_0xd269('0x10'),_0x558cda);logger[_0xd269('0xa')](_0xd269('0x10'),_0x558cda,JSON[_0xd269('0x1b')](_0x5c710c));_0x8c7fa6(_0x5c710c);})[_0xd269('0xf')](function(_0x3816af){logger[_0xd269('0xc')](_0xd269('0x10'),_0x3816af[_0xd269('0xe')],_0x558cda);_0x239a83(_0x20f509[_0xd269('0xc')](0x1f4,_0x3816af[_0xd269('0xe')]));});});};exports[_0xd269('0x1c')]=function(_0x22b5ba){var _0x441ba8=this;return new Promise(function(_0x145815,_0x5a6e42){return db[_0xd269('0x11')][_0xd269('0x1d')]({'raw':_0x22b5ba[_0xd269('0x13')]?_0x22b5ba[_0xd269('0x13')]['raw']===undefined?!![]:![]:!![],'where':_0x22b5ba[_0xd269('0x13')]?_0x22b5ba[_0xd269('0x13')][_0xd269('0x14')]||null:null,'attributes':_0x22b5ba[_0xd269('0x13')]?_0x22b5ba[_0xd269('0x13')]['attributes']||null:null,'include':_0x22b5ba[_0xd269('0x13')]?_0x22b5ba[_0xd269('0x13')][_0xd269('0x17')]?_['map'](_0x22b5ba[_0xd269('0x13')][_0xd269('0x17')],function(_0x8ba191){return{'model':db[_0x8ba191[_0xd269('0x18')]],'as':_0x8ba191['as'],'attributes':_0x8ba191[_0xd269('0x15')],'include':_0x8ba191[_0xd269('0x17')]?_[_0xd269('0x19')](_0x8ba191[_0xd269('0x17')],function(_0x6bc974){return{'model':db[_0x6bc974[_0xd269('0x18')]],'as':_0x6bc974['as'],'attributes':_0x6bc974[_0xd269('0x15')],'include':_0x6bc974[_0xd269('0x17')]?_[_0xd269('0x19')](_0x6bc974['include'],function(_0x2b4ae0){return{'model':db[_0x2b4ae0[_0xd269('0x18')]],'as':_0x2b4ae0['as'],'attributes':_0x2b4ae0[_0xd269('0x15')]};}):[]};}):[]};}):[]:[]})[_0xd269('0x1a')](function(_0x2ad317){logger['info'](_0xd269('0x1c'),_0x22b5ba);logger['debug']('ShowCmHopper',_0x22b5ba,JSON[_0xd269('0x1b')](_0x2ad317));_0x145815(_0x2ad317);})[_0xd269('0xf')](function(_0x92716a){logger[_0xd269('0xc')](_0xd269('0x1c'),_0x92716a[_0xd269('0xe')],_0x22b5ba);_0x5a6e42(_0x441ba8[_0xd269('0xc')](0x1f4,_0x92716a['message']));});});};exports[_0xd269('0x1e')]=function(_0xb6e25b){var _0x445596=this;return new Promise(function(_0x1219f9,_0x56f7ab){return db[_0xd269('0x11')][_0xd269('0x1f')](_0xb6e25b[_0xd269('0x20')],{'raw':_0xb6e25b[_0xd269('0x13')]?_0xb6e25b['options'][_0xd269('0x12')]===undefined?!![]:![]:!![]})[_0xd269('0x1a')](function(_0x42ca8f){logger[_0xd269('0x8')](_0xd269('0x1e'),_0xb6e25b);logger[_0xd269('0xa')]('CreateCmHopper',_0xb6e25b,JSON[_0xd269('0x1b')](_0x42ca8f));_0x1219f9(_0x42ca8f);})[_0xd269('0xf')](function(_0x113f4b){logger[_0xd269('0xc')]('CreateCmHopper',_0x113f4b[_0xd269('0xe')],_0xb6e25b);_0x56f7ab(_0x445596['error'](0x1f4,_0x113f4b[_0xd269('0xe')]));});});};exports[_0xd269('0x21')]=function(_0x56292b){var _0x40493b=this;return new Promise(function(_0x13cb90,_0xe07758){return db[_0xd269('0x11')][_0xd269('0x22')](_0x56292b[_0xd269('0x20')],{'raw':_0x56292b[_0xd269('0x13')]?_0x56292b[_0xd269('0x13')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x56292b['options']?_0x56292b[_0xd269('0x13')][_0xd269('0x14')]||null:null,'attributes':_0x56292b['options']?_0x56292b[_0xd269('0x13')][_0xd269('0x15')]||null:null,'limit':_0x56292b['options']?_0x56292b['options'][_0xd269('0x16')]||null:null})[_0xd269('0x1a')](function(_0x5c5966){logger[_0xd269('0x8')](_0xd269('0x21'),_0x56292b);logger[_0xd269('0xa')](_0xd269('0x21'),_0x56292b,JSON['stringify'](_0x5c5966));_0x13cb90(_0x5c5966);})['catch'](function(_0x11cb6f){logger[_0xd269('0xc')](_0xd269('0x21'),_0x11cb6f[_0xd269('0xe')],_0x56292b);_0xe07758(_0x40493b[_0xd269('0xc')](0x1f4,_0x11cb6f[_0xd269('0xe')]));});});};exports['DestroyCmHopper']=function(_0x41b5ce){var _0x3ad63b=this;return new Promise(function(_0x12999a,_0x40a541){return db[_0xd269('0x11')]['destroy']({'where':_0x41b5ce[_0xd269('0x13')]?_0x41b5ce[_0xd269('0x13')][_0xd269('0x14')]||null:null})[_0xd269('0x1a')](function(_0xaf001){logger[_0xd269('0x8')](_0xd269('0x23'),_0x41b5ce);logger[_0xd269('0xa')](_0xd269('0x23'),_0x41b5ce,JSON['stringify'](_0xaf001));_0x12999a(_0xaf001);})[_0xd269('0xf')](function(_0x2cdde5){logger[_0xd269('0xc')]('DestroyCmHopper',_0x2cdde5[_0xd269('0xe')],_0x41b5ce);_0x40a541(_0x3ad63b[_0xd269('0xc')](0x1f4,_0x2cdde5[_0xd269('0xe')]));});});};exports[_0xd269('0x24')]=function(_0x13393b){var _0x3f28d2=this;return new Promise(function(_0xe4ed03,_0x49a9de){return db[_0xd269('0x25')][_0xd269('0x26')]()[_0xd269('0x1a')](function(_0x36aaa8){return db['sequelize'][_0xd269('0x27')](function(_0x5a117f){return db['CmHopper']['findAll']({'where':_0x13393b['options']?_0x13393b['options']['where']||null:null,'attributes':_0x13393b[_0xd269('0x13')]?_0x13393b[_0xd269('0x13')][_0xd269('0x15')]||null:null,'limit':_0x13393b[_0xd269('0x13')]?_0x13393b[_0xd269('0x13')][_0xd269('0x16')]||null:null,'order':_0x13393b['options']?_0x13393b[_0xd269('0x13')]['order']||null:null,'transaction':_0x5a117f,'lock':_0x5a117f[_0xd269('0x28')][_0xd269('0x29')],'include':[{'model':db[_0xd269('0x25')],'as':'Contact','attributes':_[_0xd269('0x2a')](_0x36aaa8)},{'model':db['User'],'as':_0xd269('0x2b'),'attributes':['id',_0xd269('0x2c'),_0xd269('0x2d')]}]})[_0xd269('0x1a')](function(_0x2aa47d){var _0x265d7e=[];var _0xb1f0bb=[];for(var _0x1c5043=0x0;_0x1c5043<_0x2aa47d[_0xd269('0x2e')];_0x1c5043+=0x1){var _0x77ba10=_0x2aa47d[_0x1c5043][_0xd269('0x2f')];if(_0x77ba10===null){_0x265d7e['push'](_0x2aa47d[_0x1c5043][_0xd269('0x22')](_0x13393b['body'],{'transaction':_0x5a117f}));}else if(!_0xb1f0bb[_0xd269('0x30')](_0x77ba10)){_0xb1f0bb[_0xd269('0x31')](_0x77ba10);_0x265d7e[_0xd269('0x31')](_0x2aa47d[_0x1c5043]['update'](_0x13393b[_0xd269('0x20')],{'transaction':_0x5a117f}));}}return BPromise[_0xd269('0x32')](_0x265d7e);});})['then'](function(_0x3ea8a7){logger[_0xd269('0x8')]('GetContactDialer',_0x13393b);logger[_0xd269('0xa')](_0xd269('0x24'),_0x13393b,JSON[_0xd269('0x1b')](_0x3ea8a7));_0xe4ed03(_0x3ea8a7);})[_0xd269('0xf')](function(_0xbc10af){logger['error']('GetContactDialer',_0xbc10af[_0xd269('0xe')],_0x13393b);_0x49a9de(_0x3f28d2[_0xd269('0xc')](0x1f4,_0xbc10af[_0xd269('0xe')]));});});});};exports[_0xd269('0x33')]=function(_0x68847d){var _0x95454e=this;return new Promise(function(_0x30ab28,_0x5b3303){return db[_0xd269('0x34')][_0xd269('0x27')](function(_0x2a0f1d){return db[_0xd269('0x35')][_0xd269('0x1f')](_0x68847d[_0xd269('0x20')],{'raw':_0x68847d['options']?_0x68847d['options']['raw']===undefined?!![]:![]:!![],'transaction':_0x2a0f1d})[_0xd269('0x1a')](function(){return db[_0xd269('0x11')][_0xd269('0x36')]({'where':_0x68847d[_0xd269('0x13')]?_0x68847d[_0xd269('0x13')][_0xd269('0x14')]||null:null,'transaction':_0x2a0f1d});});})['then'](function(_0x8e75dc){logger[_0xd269('0x8')](_0xd269('0x33'),_0x68847d);logger['debug'](_0xd269('0x33'),_0x68847d,JSON[_0xd269('0x1b')](_0x8e75dc));_0x30ab28(_0x8e75dc);})['catch'](function(_0x2c916d){logger[_0xd269('0xc')]('MoveContactManagedDialer',_0x2c916d[_0xd269('0xe')],_0x68847d);_0x5b3303(_0x95454e[_0xd269('0xc')](0x1f4,_0x2c916d['message']));});});};exports[_0xd269('0x37')]=function(_0x3d6f21){var _0x3d3a74=this;return new Promise(function(_0x1f3710,_0x1d315c){return db['CmHopper'][_0xd269('0x38')]({'raw':_0x3d6f21[_0xd269('0x13')]?_0x3d6f21['options'][_0xd269('0x12')]===undefined?!![]:![]:!![],'where':_0x3d6f21[_0xd269('0x13')]?_0x3d6f21[_0xd269('0x13')]['where']||null:null,'attributes':[[db[_0xd269('0x34')]['fn'](_0xd269('0x39'),db[_0xd269('0x34')]['fn']('IF',db[_0xd269('0x34')][_0xd269('0x3a')](_0xd269('0x3b')+util[_0xd269('0x3c')](_0xd269('0x3d'),moment()[_0xd269('0x3c')](_0xd269('0x3e')))+'\x20,\x201,\x20null'))),_0xd269('0x3f')]]})[_0xd269('0x1a')](function(_0x27e4e8){logger['info'](_0xd269('0x37'),_0x3d6f21);logger[_0xd269('0xa')]('CountReScheduled',_0x3d6f21,JSON['stringify'](_0x27e4e8));_0x1f3710(_0x27e4e8);})[_0xd269('0xf')](function(_0x303530){logger[_0xd269('0xc')]('CountReScheduled',_0x303530['message'],_0x3d6f21);_0x1d315c(_0x3d3a74['error'](0x1f4,_0x303530[_0xd269('0xe')]));});});};exports[_0xd269('0x40')]=function(_0xadd58f){var _0x651368=this;return new Promise(function(_0x3273ea,_0x52535){return db[_0xd269('0x25')][_0xd269('0x26')]()[_0xd269('0x1a')](function(_0x4d142c){return db[_0xd269('0x34')][_0xd269('0x27')](function(_0x2ab98c){return db['CmHopper']['findAll']({'where':_0xadd58f[_0xd269('0x13')]?_0xadd58f['options'][_0xd269('0x14')]||null:null,'attributes':_0xadd58f[_0xd269('0x13')]?_0xadd58f['options'][_0xd269('0x15')]||null:null,'limit':0x1,'order':_0xadd58f[_0xd269('0x13')]?_0xadd58f[_0xd269('0x13')][_0xd269('0x41')]||null:null,'group':db[_0xd269('0x11')][_0xd269('0x2f')],'transaction':_0x2ab98c,'lock':_0x2ab98c['LOCK'][_0xd269('0x29')],'include':_0xadd58f['options']?_0xadd58f['options']['include']?_[_0xd269('0x19')](_0xadd58f[_0xd269('0x13')][_0xd269('0x17')],function(_0x7586d9){return{'model':db[_0x7586d9[_0xd269('0x18')]],'as':_0x7586d9['as'],'attributes':_0x7586d9['attributes'],'include':_0x7586d9[_0xd269('0x17')]?_[_0xd269('0x19')](_0x7586d9['include'],function(_0x1c749e){return{'model':db[_0x1c749e[_0xd269('0x18')]],'as':_0x1c749e['as'],'attributes':_0x1c749e[_0xd269('0x15')],'include':_0x1c749e['include']?_['map'](_0x1c749e['include'],function(_0x2d8fb7){return{'model':db[_0x2d8fb7[_0xd269('0x18')]],'as':_0x2d8fb7['as'],'attributes':_0x2d8fb7[_0xd269('0x15')]};}):[]};}):[]};}):[]:[]})[_0xd269('0x1a')](function(_0x28ae2e){var _0x4565b9=[];for(var _0x580987=0x0;_0x580987<_0x28ae2e[_0xd269('0x2e')];_0x580987+=0x1){_0x4565b9[_0xd269('0x31')](_0x28ae2e[_0x580987][_0xd269('0x22')](_0xadd58f['body'],{'transaction':_0x2ab98c}));}return BPromise[_0xd269('0x32')](_0x4565b9);});})[_0xd269('0x1a')](function(_0x29e5ba){logger[_0xd269('0x8')]('GetContactRecallMe',_0xadd58f);logger[_0xd269('0xa')](_0xd269('0x40'),_0xadd58f,JSON['stringify'](_0x29e5ba));_0x3273ea(_0x29e5ba);})[_0xd269('0xf')](function(_0x15816d){logger[_0xd269('0xc')](_0xd269('0x40'),_0x15816d[_0xd269('0xe')],_0xadd58f);_0x52535(_0x651368[_0xd269('0xc')](0x1f4,_0x15816d[_0xd269('0xe')]));});});});};exports[_0xd269('0x42')]=function(_0x2cc597){var _0x482284=this;return new Promise(function(_0x553086,_0x4dbbcd){db[_0xd269('0x25')]['describe']()['then'](function(_0xd984b6){return db[_0xd269('0x11')][_0xd269('0x38')]({'raw':_0x2cc597[_0xd269('0x13')]?_0x2cc597['options'][_0xd269('0x12')]===undefined?!![]:![]:!![],'where':_0x2cc597[_0xd269('0x13')]?_0x2cc597['options'][_0xd269('0x14')]||null:null,'attributes':_0x2cc597[_0xd269('0x13')]?_0x2cc597[_0xd269('0x13')][_0xd269('0x15')]||null:null,'limit':_0x2cc597['options']?_0x2cc597[_0xd269('0x13')][_0xd269('0x16')]||null:null,'include':_0x2cc597[_0xd269('0x13')]?_0x2cc597[_0xd269('0x13')]['include']?_[_0xd269('0x19')](_0x2cc597[_0xd269('0x13')][_0xd269('0x17')],function(_0x1e0a2a){return{'model':db[_0x1e0a2a[_0xd269('0x18')]],'as':_0x1e0a2a['as'],'attributes':_0x1e0a2a['as']==='Contact'?_[_0xd269('0x2a')](_0xd984b6):_0x1e0a2a[_0xd269('0x15')],'include':_0x1e0a2a[_0xd269('0x17')]?_['map'](_0x1e0a2a[_0xd269('0x17')],function(_0x9105e9){return{'model':db[_0x9105e9[_0xd269('0x18')]],'as':_0x9105e9['as'],'attributes':_0x9105e9[_0xd269('0x15')],'include':_0x9105e9['include']?_[_0xd269('0x19')](_0x9105e9['include'],function(_0x5b2995){return{'model':db[_0x5b2995[_0xd269('0x18')]],'as':_0x5b2995['as'],'attributes':_0x5b2995[_0xd269('0x15')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x3acbff){logger[_0xd269('0x8')](_0xd269('0x10'),_0x2cc597);logger[_0xd269('0xa')](_0xd269('0x10'),_0x2cc597,JSON[_0xd269('0x1b')](_0x3acbff));_0x553086(_0x3acbff);})[_0xd269('0xf')](function(_0xfa195b){logger[_0xd269('0xc')]('GetCmHopper',_0xfa195b['message'],_0x2cc597);_0x4dbbcd(_0x482284[_0xd269('0xc')](0x1f4,_0xfa195b['message']));});});});};
\ No newline at end of file
index ba86b52..aa5a04e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd6f3=['../../config/environment','isAuthenticated','index','/describe','describe','get','getOpenContacts','/:id','show','create','post','/preview','put','update','delete','destroy','exports','multer','util','connect-timeout','Router','../../components/interaction/service'];(function(_0xb71632,_0x246506){var _0x2f8124=function(_0x50a3a5){while(--_0x50a3a5){_0xb71632['push'](_0xb71632['shift']());}};_0x2f8124(++_0x246506);}(_0xd6f3,0xc1));var _0x3d6f=function(_0x4334b1,_0x1ee3d2){_0x4334b1=_0x4334b1-0x0;var _0x1e4efa=_0xd6f3[_0x4334b1];return _0x1e4efa;};'use strict';var multer=require(_0x3d6f('0x0'));var util=require(_0x3d6f('0x1'));var path=require('path');var timeout=require(_0x3d6f('0x2'));var express=require('express');var router=express[_0x3d6f('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x3d6f('0x4'));var config=require(_0x3d6f('0x5'));var controller=require('./cmHopper.controller');router['get']('/',auth[_0x3d6f('0x6')](),controller[_0x3d6f('0x7')]);router['get'](_0x3d6f('0x8'),auth['isAuthenticated'](),controller[_0x3d6f('0x9')]);router[_0x3d6f('0xa')]('/opencontacts',auth[_0x3d6f('0x6')](),controller[_0x3d6f('0xb')]);router[_0x3d6f('0xa')](_0x3d6f('0xc'),auth['isAuthenticated'](),controller[_0x3d6f('0xd')]);router['post']('/',auth[_0x3d6f('0x6')](),controller[_0x3d6f('0xe')]);router[_0x3d6f('0xf')](_0x3d6f('0x10'),auth['isAuthenticated'](),controller['getPreview']);router[_0x3d6f('0x11')](_0x3d6f('0xc'),auth[_0x3d6f('0x6')](),controller[_0x3d6f('0x12')]);router[_0x3d6f('0x13')](_0x3d6f('0xc'),auth[_0x3d6f('0x6')](),controller[_0x3d6f('0x14')]);module[_0x3d6f('0x15')]=router;
\ No newline at end of file
+var _0xa326=['/:id','post','create','/preview','getPreview','update','delete','destroy','exports','util','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','./cmHopper.controller','get','isAuthenticated','index','/describe','getOpenContacts'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xa326,0x16e));var _0x6a32=function(_0x5a558e,_0x2c0473){_0x5a558e=_0x5a558e-0x0;var _0x44eb26=_0xa326[_0x5a558e];return _0x44eb26;};'use strict';var multer=require('multer');var util=require(_0x6a32('0x0'));var path=require(_0x6a32('0x1'));var timeout=require('connect-timeout');var express=require(_0x6a32('0x2'));var router=express['Router']();var fs_extra=require(_0x6a32('0x3'));var auth=require(_0x6a32('0x4'));var interaction=require(_0x6a32('0x5'));var config=require('../../config/environment');var controller=require(_0x6a32('0x6'));router[_0x6a32('0x7')]('/',auth[_0x6a32('0x8')](),controller[_0x6a32('0x9')]);router[_0x6a32('0x7')](_0x6a32('0xa'),auth[_0x6a32('0x8')](),controller['describe']);router[_0x6a32('0x7')]('/opencontacts',auth[_0x6a32('0x8')](),controller[_0x6a32('0xb')]);router[_0x6a32('0x7')](_0x6a32('0xc'),auth[_0x6a32('0x8')](),controller['show']);router[_0x6a32('0xd')]('/',auth['isAuthenticated'](),controller[_0x6a32('0xe')]);router[_0x6a32('0xd')](_0x6a32('0xf'),auth[_0x6a32('0x8')](),controller[_0x6a32('0x10')]);router['put'](_0x6a32('0xc'),auth[_0x6a32('0x8')](),controller[_0x6a32('0x11')]);router[_0x6a32('0x12')](_0x6a32('0xc'),auth[_0x6a32('0x8')](),controller[_0x6a32('0x13')]);module[_0x6a32('0x14')]=router;
\ No newline at end of file
index 4caeb2f..efe5235 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x80cf=['INTEGER','contactListQueue','moment','sequelize','exports'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x80cf,0xfc));var _0xf80c=function(_0x4a051e,_0x87acaa){_0x4a051e=_0x4a051e-0x0;var _0xede580=_0x80cf[_0x4a051e];return _0xede580;};'use strict';var moment=require(_0xf80c('0x0'));var Sequelize=require(_0xf80c('0x1'));module[_0xf80c('0x2')]={'phone':{'type':Sequelize['STRING'],'allowNull':![]},'ContactId':{'type':Sequelize['INTEGER'],'unique':'contactListQueue'},'ListId':{'type':Sequelize[_0xf80c('0x3')],'unique':_0xf80c('0x4')},'VoiceQueueId':{'type':Sequelize[_0xf80c('0x3')],'unique':_0xf80c('0x4')}};
\ No newline at end of file
+var _0x0909=['sequelize','INTEGER','contactListQueue'];(function(_0x2797c6,_0x37421b){var _0x54809f=function(_0x2d100c){while(--_0x2d100c){_0x2797c6['push'](_0x2797c6['shift']());}};_0x54809f(++_0x37421b);}(_0x0909,0x1e6));var _0x9090=function(_0x22197a,_0x1bcb36){_0x22197a=_0x22197a-0x0;var _0x4e5f6e=_0x0909[_0x22197a];return _0x4e5f6e;};'use strict';var moment=require('moment');var Sequelize=require(_0x9090('0x0'));module['exports']={'phone':{'type':Sequelize['STRING'],'allowNull':![]},'ContactId':{'type':Sequelize[_0x9090('0x1')],'unique':_0x9090('0x2')},'ListId':{'type':Sequelize['INTEGER'],'unique':_0x9090('0x2')},'VoiceQueueId':{'type':Sequelize[_0x9090('0x1')],'unique':_0x9090('0x2')}};
\ No newline at end of file
index 4b1aa59..fd0848f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe81d=['then','destroy','end','error','stack','name','send','CmHopperBlack','fieldName','key','map','query','filters','intersection','attributes','model','fields','length','nolimit','offset','order','sort','pick','filter','where','merge','type','includeAll','include','catch','show','params','keys','rawAttributes','options','find','body','describe','eml-format','rimraf','moment','bluebird','mustache','path','sox','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','json','undefined','count','limit','status','Content-Range','apply','reject','save','update'];(function(_0x59cf8b,_0x266915){var _0x460ae2=function(_0x46d43d){while(--_0x46d43d){_0x59cf8b['push'](_0x59cf8b['shift']());}};_0x460ae2(++_0x266915);}(_0xe81d,0x142));var _0xde81=function(_0x54f5bb,_0x18d3fc){_0x54f5bb=_0x54f5bb-0x0;var _0x5f605b=_0xe81d[_0x54f5bb];return _0x5f605b;};'use strict';var emlformat=require(_0xde81('0x0'));var rimraf=require(_0xde81('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xde81('0x2'));var BPromise=require(_0xde81('0x3'));var Mustache=require(_0xde81('0x4'));var util=require('util');var path=require(_0xde81('0x5'));var sox=require(_0xde81('0x6'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xde81('0x7'));var _=require(_0xde81('0x8'));var squel=require(_0xde81('0x9'));var crypto=require(_0xde81('0xa'));var jsforce=require(_0xde81('0xb'));var deskjs=require(_0xde81('0xc'));var toCsv=require('to-csv');var querystring=require(_0xde81('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xde81('0xe'));var qs=require(_0xde81('0xf'));var as=require(_0xde81('0x10'));var hardwareService=require(_0xde81('0x11'));var logger=require('../../config/logger')(_0xde81('0x12'));var utils=require(_0xde81('0x13'));var config=require(_0xde81('0x14'));var licenseUtil=require(_0xde81('0x15'));var db=require(_0xde81('0x16'))['db'];function respondWithStatusCode(_0x58ba52,_0x399e90){_0x399e90=_0x399e90||0xcc;return function(_0xb265a6){if(_0xb265a6){return _0x58ba52['sendStatus'](_0x399e90);}return _0x58ba52['status'](_0x399e90)['end']();};}function respondWithResult(_0x146dd9,_0xdb8853){_0xdb8853=_0xdb8853||0xc8;return function(_0x4f329c){if(_0x4f329c){return _0x146dd9['status'](_0xdb8853)[_0xde81('0x17')](_0x4f329c);}};}function respondWithFilteredResult(_0x2b8407,_0x2992cb){return function(_0x446052){if(_0x446052){var _0x2f3e0c=typeof _0x2992cb['offset']===_0xde81('0x18')&&typeof _0x2992cb['limit']===_0xde81('0x18');var _0x1014f0=_0x446052[_0xde81('0x19')];var _0x100cc1=_0x2f3e0c?0x0:_0x2992cb['offset'];var _0x34cd3f=_0x2f3e0c?_0x446052['count']:_0x2992cb['offset']+_0x2992cb[_0xde81('0x1a')];var _0x516d0d;if(_0x34cd3f>=_0x1014f0){_0x34cd3f=_0x1014f0;_0x516d0d=0xc8;}else{_0x516d0d=0xce;}_0x2b8407[_0xde81('0x1b')](_0x516d0d);return _0x2b8407['set'](_0xde81('0x1c'),_0x100cc1+'-'+_0x34cd3f+'/'+_0x1014f0)[_0xde81('0x17')](_0x446052);}return null;};}function patchUpdates(_0x562160){return function(_0x56f585){try{jsonpatch[_0xde81('0x1d')](_0x56f585,_0x562160,!![]);}catch(_0x4d353d){return BPromise[_0xde81('0x1e')](_0x4d353d);}return _0x56f585[_0xde81('0x1f')]();};}function saveUpdates(_0x1f0a22,_0x4a3948){return function(_0x267dc4){if(_0x267dc4){return _0x267dc4[_0xde81('0x20')](_0x1f0a22)[_0xde81('0x21')](function(_0x489cf9){return _0x489cf9;});}return null;};}function removeEntity(_0xd8a8a6,_0x130fd4){return function(_0x429918){if(_0x429918){return _0x429918[_0xde81('0x22')]()[_0xde81('0x21')](function(){_0xd8a8a6['status'](0xcc)[_0xde81('0x23')]();});}};}function handleEntityNotFound(_0x2b7dae,_0x125466){return function(_0x5aa545){if(!_0x5aa545){_0x2b7dae['sendStatus'](0x194);}return _0x5aa545;};}function handleError(_0x321927,_0xf66b73){_0xf66b73=_0xf66b73||0x1f4;return function(_0x4412df){logger[_0xde81('0x24')](_0x4412df[_0xde81('0x25')]);if(_0x4412df['name']){delete _0x4412df[_0xde81('0x26')];}_0x321927[_0xde81('0x1b')](_0xf66b73)[_0xde81('0x27')](_0x4412df);};}exports['index']=function(_0x17a097,_0x1748e1){var _0x294894={},_0x3f7094={},_0x47449b={'count':0x0,'rows':[]};var _0x18174b=_['map'](db[_0xde81('0x28')]['rawAttributes'],function(_0x20cc27){return{'name':_0x20cc27[_0xde81('0x29')],'type':_0x20cc27['type'][_0xde81('0x2a')]};});_0x3f7094['model']=_[_0xde81('0x2b')](_0x18174b,'name');_0x3f7094[_0xde81('0x2c')]=_['keys'](_0x17a097[_0xde81('0x2c')]);_0x3f7094[_0xde81('0x2d')]=_[_0xde81('0x2e')](_0x3f7094['model'],_0x3f7094[_0xde81('0x2c')]);_0x294894[_0xde81('0x2f')]=_['intersection'](_0x3f7094[_0xde81('0x30')],qs[_0xde81('0x31')](_0x17a097[_0xde81('0x2c')]['fields']));_0x294894[_0xde81('0x2f')]=_0x294894[_0xde81('0x2f')][_0xde81('0x32')]?_0x294894[_0xde81('0x2f')]:_0x3f7094[_0xde81('0x30')];if(!_0x17a097[_0xde81('0x2c')]['hasOwnProperty'](_0xde81('0x33'))){_0x294894['limit']=qs[_0xde81('0x1a')](_0x17a097['query'][_0xde81('0x1a')]);_0x294894['offset']=qs[_0xde81('0x34')](_0x17a097[_0xde81('0x2c')][_0xde81('0x34')]);}_0x294894[_0xde81('0x35')]=qs[_0xde81('0x36')](_0x17a097[_0xde81('0x2c')][_0xde81('0x36')]);_0x294894['where']=qs[_0xde81('0x2d')](_[_0xde81('0x37')](_0x17a097['query'],_0x3f7094[_0xde81('0x2d')]),_0x18174b);if(_0x17a097['query'][_0xde81('0x38')]){_0x294894[_0xde81('0x39')]=_[_0xde81('0x3a')](_0x294894[_0xde81('0x39')],{'$or':_[_0xde81('0x2b')](_0x18174b,function(_0x5c5aaf){if(_0x5c5aaf[_0xde81('0x3b')]!=='VIRTUAL'){var _0x4e2306={};_0x4e2306[_0x5c5aaf[_0xde81('0x26')]]={'$like':'%'+_0x17a097[_0xde81('0x2c')]['filter']+'%'};return _0x4e2306;}})});}_0x294894=_[_0xde81('0x3a')]({},_0x294894,_0x17a097['options']);var _0x2efb61={'where':_0x294894['where']};return db[_0xde81('0x28')][_0xde81('0x19')](_0x2efb61)[_0xde81('0x21')](function(_0x2016b6){_0x47449b[_0xde81('0x19')]=_0x2016b6;if(_0x17a097[_0xde81('0x2c')][_0xde81('0x3c')]){_0x294894[_0xde81('0x3d')]=[{'all':!![]}];}return db['CmHopperBlack']['findAll'](_0x294894);})['then'](function(_0x1cf729){_0x47449b['rows']=_0x1cf729;return _0x47449b;})[_0xde81('0x21')](respondWithFilteredResult(_0x1748e1,_0x294894))[_0xde81('0x3e')](handleError(_0x1748e1,null));};exports[_0xde81('0x3f')]=function(_0x494d3e,_0x275986){var _0x3184aa={'raw':!![],'where':{'id':_0x494d3e[_0xde81('0x40')]['id']}},_0x809d0={};_0x809d0[_0xde81('0x30')]=_[_0xde81('0x41')](db[_0xde81('0x28')][_0xde81('0x42')]);_0x809d0[_0xde81('0x2c')]=_[_0xde81('0x41')](_0x494d3e[_0xde81('0x2c')]);_0x809d0['filters']=_['intersection'](_0x809d0[_0xde81('0x30')],_0x809d0['query']);_0x3184aa[_0xde81('0x2f')]=_['intersection'](_0x809d0[_0xde81('0x30')],qs['fields'](_0x494d3e[_0xde81('0x2c')]['fields']));_0x3184aa['attributes']=_0x3184aa[_0xde81('0x2f')][_0xde81('0x32')]?_0x3184aa[_0xde81('0x2f')]:_0x809d0[_0xde81('0x30')];if(_0x494d3e['query'][_0xde81('0x3c')]){_0x3184aa[_0xde81('0x3d')]=[{'all':!![]}];}_0x3184aa=_[_0xde81('0x3a')]({},_0x3184aa,_0x494d3e[_0xde81('0x43')]);return db[_0xde81('0x28')][_0xde81('0x44')](_0x3184aa)[_0xde81('0x21')](handleEntityNotFound(_0x275986,null))[_0xde81('0x21')](respondWithResult(_0x275986,null))['catch'](handleError(_0x275986,null));};exports['update']=function(_0x2f6a93,_0x23cd64){if(_0x2f6a93[_0xde81('0x45')]['id']){delete _0x2f6a93['body']['id'];}return db[_0xde81('0x28')][_0xde81('0x44')]({'where':{'id':_0x2f6a93[_0xde81('0x40')]['id']}})[_0xde81('0x21')](handleEntityNotFound(_0x23cd64,null))[_0xde81('0x21')](saveUpdates(_0x2f6a93[_0xde81('0x45')],null))[_0xde81('0x21')](respondWithResult(_0x23cd64,null))[_0xde81('0x3e')](handleError(_0x23cd64,null));};exports[_0xde81('0x22')]=function(_0x30678b,_0x15ca4b){return db[_0xde81('0x28')][_0xde81('0x44')]({'where':{'id':_0x30678b['params']['id']}})['then'](handleEntityNotFound(_0x15ca4b,null))[_0xde81('0x21')](removeEntity(_0x15ca4b,null))[_0xde81('0x3e')](handleError(_0x15ca4b,null));};exports['describe']=function(_0x551588,_0x599d26){return db[_0xde81('0x28')][_0xde81('0x46')]()[_0xde81('0x21')](respondWithResult(_0x599d26,null))['catch'](handleError(_0x599d26,null));};
\ No newline at end of file
+var _0xa4c2=['pick','merge','type','VIRTUAL','filter','includeAll','include','findAll','rows','catch','show','body','find','params','describe','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','sendStatus','end','status','undefined','limit','count','offset','set','Content-Range','json','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','CmHopperBlack','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where'];(function(_0x1ff92d,_0x3bfdeb){var _0x129a98=function(_0x45a90b){while(--_0x45a90b){_0x1ff92d['push'](_0x1ff92d['shift']());}};_0x129a98(++_0x3bfdeb);}(_0xa4c2,0x186));var _0x2a4c=function(_0xe6cf52,_0x43803d){_0xe6cf52=_0xe6cf52-0x0;var _0x3fc1c4=_0xa4c2[_0xe6cf52];return _0x3fc1c4;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2a4c('0x0'));var zipdir=require(_0x2a4c('0x1'));var jsonpatch=require(_0x2a4c('0x2'));var rp=require(_0x2a4c('0x3'));var moment=require('moment');var BPromise=require(_0x2a4c('0x4'));var Mustache=require(_0x2a4c('0x5'));var util=require(_0x2a4c('0x6'));var path=require(_0x2a4c('0x7'));var sox=require(_0x2a4c('0x8'));var csv=require(_0x2a4c('0x9'));var ejs=require(_0x2a4c('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x2a4c('0xb'));var squel=require(_0x2a4c('0xc'));var crypto=require(_0x2a4c('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x2a4c('0xe'));var toCsv=require(_0x2a4c('0x9'));var querystring=require(_0x2a4c('0xf'));var Papa=require('papaparse');var Redis=require(_0x2a4c('0x10'));var authService=require(_0x2a4c('0x11'));var qs=require(_0x2a4c('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x2a4c('0x13'));var logger=require(_0x2a4c('0x14'))('api');var utils=require(_0x2a4c('0x15'));var config=require(_0x2a4c('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x117ace,_0x58797f){_0x58797f=_0x58797f||0xcc;return function(_0x5ea36b){if(_0x5ea36b){return _0x117ace[_0x2a4c('0x17')](_0x58797f);}return _0x117ace['status'](_0x58797f)[_0x2a4c('0x18')]();};}function respondWithResult(_0xcc734e,_0xa013d4){_0xa013d4=_0xa013d4||0xc8;return function(_0x4019cb){if(_0x4019cb){return _0xcc734e[_0x2a4c('0x19')](_0xa013d4)['json'](_0x4019cb);}};}function respondWithFilteredResult(_0x5e148a,_0x105db0){return function(_0x43aadf){if(_0x43aadf){var _0x56b1b9=typeof _0x105db0['offset']===_0x2a4c('0x1a')&&typeof _0x105db0[_0x2a4c('0x1b')]==='undefined';var _0x4a808f=_0x43aadf[_0x2a4c('0x1c')];var _0x4c984b=_0x56b1b9?0x0:_0x105db0[_0x2a4c('0x1d')];var _0x2c7893=_0x56b1b9?_0x43aadf['count']:_0x105db0[_0x2a4c('0x1d')]+_0x105db0[_0x2a4c('0x1b')];var _0x49e070;if(_0x2c7893>=_0x4a808f){_0x2c7893=_0x4a808f;_0x49e070=0xc8;}else{_0x49e070=0xce;}_0x5e148a['status'](_0x49e070);return _0x5e148a[_0x2a4c('0x1e')](_0x2a4c('0x1f'),_0x4c984b+'-'+_0x2c7893+'/'+_0x4a808f)[_0x2a4c('0x20')](_0x43aadf);}return null;};}function patchUpdates(_0x2bdc0b){return function(_0x5b8939){try{jsonpatch[_0x2a4c('0x21')](_0x5b8939,_0x2bdc0b,!![]);}catch(_0x2e6d7f){return BPromise[_0x2a4c('0x22')](_0x2e6d7f);}return _0x5b8939[_0x2a4c('0x23')]();};}function saveUpdates(_0x38336f,_0x199e99){return function(_0x2bf83f){if(_0x2bf83f){return _0x2bf83f[_0x2a4c('0x24')](_0x38336f)[_0x2a4c('0x25')](function(_0x2bfcc2){return _0x2bfcc2;});}return null;};}function removeEntity(_0x2ba65e,_0x3837d2){return function(_0x2fbfa0){if(_0x2fbfa0){return _0x2fbfa0[_0x2a4c('0x26')]()[_0x2a4c('0x25')](function(){_0x2ba65e[_0x2a4c('0x19')](0xcc)[_0x2a4c('0x18')]();});}};}function handleEntityNotFound(_0x59cb27,_0x4e4aa8){return function(_0xacfa4e){if(!_0xacfa4e){_0x59cb27[_0x2a4c('0x17')](0x194);}return _0xacfa4e;};}function handleError(_0x1cce2a,_0x23da20){_0x23da20=_0x23da20||0x1f4;return function(_0x27112d){logger[_0x2a4c('0x27')](_0x27112d[_0x2a4c('0x28')]);if(_0x27112d[_0x2a4c('0x29')]){delete _0x27112d[_0x2a4c('0x29')];}_0x1cce2a[_0x2a4c('0x19')](_0x23da20)[_0x2a4c('0x2a')](_0x27112d);};}exports[_0x2a4c('0x2b')]=function(_0x1ec6b3,_0xecdd41){var _0xa2e591={},_0x3ac4d5={},_0x28b5d4={'count':0x0,'rows':[]};var _0x1f5cf3=_[_0x2a4c('0x2c')](db[_0x2a4c('0x2d')]['rawAttributes'],function(_0xe908af){return{'name':_0xe908af[_0x2a4c('0x2e')],'type':_0xe908af['type'][_0x2a4c('0x2f')]};});_0x3ac4d5[_0x2a4c('0x30')]=_[_0x2a4c('0x2c')](_0x1f5cf3,_0x2a4c('0x29'));_0x3ac4d5[_0x2a4c('0x31')]=_[_0x2a4c('0x32')](_0x1ec6b3['query']);_0x3ac4d5[_0x2a4c('0x33')]=_[_0x2a4c('0x34')](_0x3ac4d5[_0x2a4c('0x30')],_0x3ac4d5[_0x2a4c('0x31')]);_0xa2e591[_0x2a4c('0x35')]=_[_0x2a4c('0x34')](_0x3ac4d5[_0x2a4c('0x30')],qs[_0x2a4c('0x36')](_0x1ec6b3['query'][_0x2a4c('0x36')]));_0xa2e591['attributes']=_0xa2e591[_0x2a4c('0x35')][_0x2a4c('0x37')]?_0xa2e591[_0x2a4c('0x35')]:_0x3ac4d5[_0x2a4c('0x30')];if(!_0x1ec6b3['query']['hasOwnProperty'](_0x2a4c('0x38'))){_0xa2e591[_0x2a4c('0x1b')]=qs['limit'](_0x1ec6b3[_0x2a4c('0x31')]['limit']);_0xa2e591[_0x2a4c('0x1d')]=qs[_0x2a4c('0x1d')](_0x1ec6b3[_0x2a4c('0x31')][_0x2a4c('0x1d')]);}_0xa2e591[_0x2a4c('0x39')]=qs[_0x2a4c('0x3a')](_0x1ec6b3[_0x2a4c('0x31')][_0x2a4c('0x3a')]);_0xa2e591[_0x2a4c('0x3b')]=qs[_0x2a4c('0x33')](_[_0x2a4c('0x3c')](_0x1ec6b3['query'],_0x3ac4d5[_0x2a4c('0x33')]),_0x1f5cf3);if(_0x1ec6b3[_0x2a4c('0x31')]['filter']){_0xa2e591[_0x2a4c('0x3b')]=_[_0x2a4c('0x3d')](_0xa2e591[_0x2a4c('0x3b')],{'$or':_[_0x2a4c('0x2c')](_0x1f5cf3,function(_0x27d53e){if(_0x27d53e[_0x2a4c('0x3e')]!==_0x2a4c('0x3f')){var _0x15e891={};_0x15e891[_0x27d53e[_0x2a4c('0x29')]]={'$like':'%'+_0x1ec6b3[_0x2a4c('0x31')][_0x2a4c('0x40')]+'%'};return _0x15e891;}})});}_0xa2e591=_[_0x2a4c('0x3d')]({},_0xa2e591,_0x1ec6b3['options']);var _0x28813b={'where':_0xa2e591[_0x2a4c('0x3b')]};return db[_0x2a4c('0x2d')][_0x2a4c('0x1c')](_0x28813b)[_0x2a4c('0x25')](function(_0x2bf4a1){_0x28b5d4[_0x2a4c('0x1c')]=_0x2bf4a1;if(_0x1ec6b3['query'][_0x2a4c('0x41')]){_0xa2e591[_0x2a4c('0x42')]=[{'all':!![]}];}return db[_0x2a4c('0x2d')][_0x2a4c('0x43')](_0xa2e591);})[_0x2a4c('0x25')](function(_0x166e75){_0x28b5d4[_0x2a4c('0x44')]=_0x166e75;return _0x28b5d4;})[_0x2a4c('0x25')](respondWithFilteredResult(_0xecdd41,_0xa2e591))[_0x2a4c('0x45')](handleError(_0xecdd41,null));};exports[_0x2a4c('0x46')]=function(_0x31da42,_0x31787a){var _0xf22119={'raw':!![],'where':{'id':_0x31da42['params']['id']}},_0x5c88cd={};_0x5c88cd[_0x2a4c('0x30')]=_[_0x2a4c('0x32')](db['CmHopperBlack']['rawAttributes']);_0x5c88cd[_0x2a4c('0x31')]=_['keys'](_0x31da42[_0x2a4c('0x31')]);_0x5c88cd['filters']=_[_0x2a4c('0x34')](_0x5c88cd['model'],_0x5c88cd[_0x2a4c('0x31')]);_0xf22119[_0x2a4c('0x35')]=_[_0x2a4c('0x34')](_0x5c88cd['model'],qs[_0x2a4c('0x36')](_0x31da42['query'][_0x2a4c('0x36')]));_0xf22119[_0x2a4c('0x35')]=_0xf22119[_0x2a4c('0x35')][_0x2a4c('0x37')]?_0xf22119[_0x2a4c('0x35')]:_0x5c88cd[_0x2a4c('0x30')];if(_0x31da42[_0x2a4c('0x31')]['includeAll']){_0xf22119['include']=[{'all':!![]}];}_0xf22119=_[_0x2a4c('0x3d')]({},_0xf22119,_0x31da42['options']);return db[_0x2a4c('0x2d')]['find'](_0xf22119)[_0x2a4c('0x25')](handleEntityNotFound(_0x31787a,null))[_0x2a4c('0x25')](respondWithResult(_0x31787a,null))[_0x2a4c('0x45')](handleError(_0x31787a,null));};exports[_0x2a4c('0x24')]=function(_0x522720,_0x30b838){if(_0x522720[_0x2a4c('0x47')]['id']){delete _0x522720[_0x2a4c('0x47')]['id'];}return db[_0x2a4c('0x2d')][_0x2a4c('0x48')]({'where':{'id':_0x522720[_0x2a4c('0x49')]['id']}})['then'](handleEntityNotFound(_0x30b838,null))[_0x2a4c('0x25')](saveUpdates(_0x522720['body'],null))['then'](respondWithResult(_0x30b838,null))[_0x2a4c('0x45')](handleError(_0x30b838,null));};exports['destroy']=function(_0x588f30,_0x415d8e){return db['CmHopperBlack'][_0x2a4c('0x48')]({'where':{'id':_0x588f30[_0x2a4c('0x49')]['id']}})[_0x2a4c('0x25')](handleEntityNotFound(_0x415d8e,null))['then'](removeEntity(_0x415d8e,null))[_0x2a4c('0x45')](handleError(_0x415d8e,null));};exports[_0x2a4c('0x4a')]=function(_0x199474,_0xbfecd8){return db[_0x2a4c('0x2d')][_0x2a4c('0x4a')]()[_0x2a4c('0x25')](respondWithResult(_0xbfecd8,null))[_0x2a4c('0x45')](handleError(_0xbfecd8,null));};
\ No newline at end of file
index 73932f2..6fa4227 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5cde=['cm_hopper_black','lodash','util','../../config/logger','api','request-promise','path','rimraf','../../config/environment','./cmHopperBlack.attributes','exports','CmHopperBlack'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x5cde,0x18d));var _0xe5cd=function(_0x45d55e,_0x2fede3){_0x45d55e=_0x45d55e-0x0;var _0x29812a=_0x5cde[_0x45d55e];return _0x29812a;};'use strict';var _=require(_0xe5cd('0x0'));var util=require(_0xe5cd('0x1'));var logger=require(_0xe5cd('0x2'))(_0xe5cd('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xe5cd('0x4'));var fs=require('fs');var path=require(_0xe5cd('0x5'));var rimraf=require(_0xe5cd('0x6'));var config=require(_0xe5cd('0x7'));var attributes=require(_0xe5cd('0x8'));module[_0xe5cd('0x9')]=function(_0x53d68a,_0xaf2824){return _0x53d68a['define'](_0xe5cd('0xa'),attributes,{'tableName':_0xe5cd('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe23e=['rimraf','./cmHopperBlack.attributes','CmHopperBlack','cm_hopper_black','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x3d7a9f,_0x24e0f1){var _0x13f5f1=function(_0x1fbbda){while(--_0x1fbbda){_0x3d7a9f['push'](_0x3d7a9f['shift']());}};_0x13f5f1(++_0x24e0f1);}(_0xe23e,0x70));var _0xee23=function(_0x597c90,_0x2fb7f8){_0x597c90=_0x597c90-0x0;var _0x4b673e=_0xe23e[_0x597c90];return _0x4b673e;};'use strict';var _=require(_0xee23('0x0'));var util=require(_0xee23('0x1'));var logger=require(_0xee23('0x2'))(_0xee23('0x3'));var moment=require(_0xee23('0x4'));var BPromise=require(_0xee23('0x5'));var rp=require(_0xee23('0x6'));var fs=require('fs');var path=require(_0xee23('0x7'));var rimraf=require(_0xee23('0x8'));var config=require('../../config/environment');var attributes=require(_0xee23('0x9'));module['exports']=function(_0x661e5b,_0x2e93af){return _0x661e5b['define'](_0xee23('0xa'),attributes,{'tableName':_0xee23('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f5aa11c..b84cbe0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb89=['CmHopperBlack,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','GetCmHopperBlack','CmHopperBlack','findAll','options','raw','limit','include','map','model','attributes','UpdateCmHopperBlack','update','body','where','DestroyCmHopperBlack','destroy','then','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/environment','jayson/promise','request','CmHopperBlack,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x418355,_0x31d168){var _0x2deb1f=function(_0x16cced){while(--_0x16cced){_0x418355['push'](_0x418355['shift']());}};_0x2deb1f(++_0x31d168);}(_0xcb89,0xad));var _0x9cb8=function(_0x5c2e3e,_0x26ecd3){_0x5c2e3e=_0x5c2e3e-0x0;var _0x53f64a=_0xcb89[_0x5c2e3e];return _0x53f64a;};'use strict';var _=require(_0x9cb8('0x0'));var util=require('util');var moment=require(_0x9cb8('0x1'));var BPromise=require(_0x9cb8('0x2'));var rs=require(_0x9cb8('0x3'));var fs=require('fs');var Redis=require(_0x9cb8('0x4'));var db=require(_0x9cb8('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x9cb8('0x6'));var jayson=require(_0x9cb8('0x7'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x9f8482,_0x1e6fa5,_0x233f0f){return new BPromise(function(_0x19e700,_0x29f603){return client[_0x9cb8('0x8')](_0x9f8482,_0x233f0f)['then'](function(_0x382f45){logger['info'](_0x9cb8('0x9'),_0x1e6fa5,_0x9cb8('0xa'));logger[_0x9cb8('0xb')](_0x9cb8('0xc'),_0x1e6fa5,'request\x20sent',JSON[_0x9cb8('0xd')](_0x382f45));if(_0x382f45[_0x9cb8('0xe')]){if(_0x382f45[_0x9cb8('0xe')][_0x9cb8('0xf')]===0x1f4){logger[_0x9cb8('0xe')]('CmHopperBlack,\x20%s,\x20%s',_0x1e6fa5,_0x382f45['error'][_0x9cb8('0x10')]);return _0x29f603(_0x382f45[_0x9cb8('0xe')]['message']);}logger[_0x9cb8('0xe')](_0x9cb8('0x9'),_0x1e6fa5,_0x382f45[_0x9cb8('0xe')][_0x9cb8('0x10')]);return _0x19e700(_0x382f45[_0x9cb8('0xe')][_0x9cb8('0x10')]);}else{logger[_0x9cb8('0x11')](_0x9cb8('0x9'),_0x1e6fa5,'request\x20sent');_0x19e700(_0x382f45[_0x9cb8('0x12')]['message']);}})[_0x9cb8('0x13')](function(_0x65ff42){logger[_0x9cb8('0xe')](_0x9cb8('0x9'),_0x1e6fa5,_0x65ff42);_0x29f603(_0x65ff42);});});}exports[_0x9cb8('0x14')]=function(_0x942682){var _0x4bbbbf=this;return new Promise(function(_0x4a13e5,_0x478f51){return db[_0x9cb8('0x15')][_0x9cb8('0x16')]({'raw':_0x942682[_0x9cb8('0x17')]?_0x942682[_0x9cb8('0x17')][_0x9cb8('0x18')]===undefined?!![]:![]:!![],'where':_0x942682[_0x9cb8('0x17')]?_0x942682['options']['where']||null:null,'attributes':_0x942682['options']?_0x942682[_0x9cb8('0x17')]['attributes']||null:null,'limit':_0x942682[_0x9cb8('0x17')]?_0x942682['options'][_0x9cb8('0x19')]||null:null,'include':_0x942682[_0x9cb8('0x17')]?_0x942682[_0x9cb8('0x17')][_0x9cb8('0x1a')]?_[_0x9cb8('0x1b')](_0x942682[_0x9cb8('0x17')][_0x9cb8('0x1a')],function(_0x882353){return{'model':db[_0x882353[_0x9cb8('0x1c')]],'as':_0x882353['as'],'attributes':_0x882353[_0x9cb8('0x1d')],'include':_0x882353[_0x9cb8('0x1a')]?_['map'](_0x882353['include'],function(_0x2b9ba3){return{'model':db[_0x2b9ba3[_0x9cb8('0x1c')]],'as':_0x2b9ba3['as'],'attributes':_0x2b9ba3[_0x9cb8('0x1d')],'include':_0x2b9ba3['include']?_[_0x9cb8('0x1b')](_0x2b9ba3[_0x9cb8('0x1a')],function(_0x5bb3ec){return{'model':db[_0x5bb3ec[_0x9cb8('0x1c')]],'as':_0x5bb3ec['as'],'attributes':_0x5bb3ec[_0x9cb8('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2a5183){logger[_0x9cb8('0x11')](_0x9cb8('0x14'),_0x942682);logger[_0x9cb8('0xb')](_0x9cb8('0x14'),_0x942682,JSON[_0x9cb8('0xd')](_0x2a5183));_0x4a13e5(_0x2a5183);})[_0x9cb8('0x13')](function(_0x7e4813){logger[_0x9cb8('0xe')](_0x9cb8('0x14'),_0x7e4813['message'],_0x942682);_0x478f51(_0x4bbbbf[_0x9cb8('0xe')](0x1f4,_0x7e4813[_0x9cb8('0x10')]));});});};exports[_0x9cb8('0x1e')]=function(_0x1e1d16){var _0x3b7ac4=this;return new Promise(function(_0x2aaaad,_0x21873a){return db['CmHopperBlack'][_0x9cb8('0x1f')](_0x1e1d16[_0x9cb8('0x20')],{'raw':_0x1e1d16[_0x9cb8('0x17')]?_0x1e1d16[_0x9cb8('0x17')][_0x9cb8('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1e1d16[_0x9cb8('0x17')]?_0x1e1d16[_0x9cb8('0x17')][_0x9cb8('0x21')]||null:null,'attributes':_0x1e1d16['options']?_0x1e1d16[_0x9cb8('0x17')]['attributes']||null:null,'limit':_0x1e1d16['options']?_0x1e1d16[_0x9cb8('0x17')][_0x9cb8('0x19')]||null:null})['then'](function(_0x21345c){logger['info'](_0x9cb8('0x1e'),_0x1e1d16);logger[_0x9cb8('0xb')](_0x9cb8('0x1e'),_0x1e1d16,JSON[_0x9cb8('0xd')](_0x21345c));_0x2aaaad(_0x21345c);})[_0x9cb8('0x13')](function(_0x5ea343){logger['error']('UpdateCmHopperBlack',_0x5ea343[_0x9cb8('0x10')],_0x1e1d16);_0x21873a(_0x3b7ac4[_0x9cb8('0xe')](0x1f4,_0x5ea343['message']));});});};exports[_0x9cb8('0x22')]=function(_0x6786e){var _0x25c7df=this;return new Promise(function(_0x3d30aa,_0x34ed9f){return db['CmHopperBlack'][_0x9cb8('0x23')]({'where':_0x6786e['options']?_0x6786e['options'][_0x9cb8('0x21')]||null:null})[_0x9cb8('0x24')](function(_0x5b21e3){logger[_0x9cb8('0x11')](_0x9cb8('0x22'),_0x6786e);logger[_0x9cb8('0xb')](_0x9cb8('0x22'),_0x6786e,JSON['stringify'](_0x5b21e3));_0x3d30aa(_0x5b21e3);})[_0x9cb8('0x13')](function(_0x43b83a){logger['error'](_0x9cb8('0x22'),_0x43b83a[_0x9cb8('0x10')],_0x6786e);_0x34ed9f(_0x25c7df['error'](0x1f4,_0x43b83a[_0x9cb8('0x10')]));});});};
\ No newline at end of file
+var _0x408b=['attributes','limit','map','include','model','GetCmHopperBlack','debug','stringify','UpdateCmHopperBlack','CmHopperBlack','update','body','catch','DestroyCmHopperBlack','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','CmHopperBlack,\x20%s,\x20%s,\x20%s','request\x20sent','error','message','CmHopperBlack,\x20%s,\x20%s','result','findAll','options','raw'];(function(_0x243b59,_0x3f9495){var _0x3e1676=function(_0x354052){while(--_0x354052){_0x243b59['push'](_0x243b59['shift']());}};_0x3e1676(++_0x3f9495);}(_0x408b,0x146));var _0xb408=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x408b[_0x17d9e3];return _0x14192d;};'use strict';var _=require(_0xb408('0x0'));var util=require(_0xb408('0x1'));var moment=require(_0xb408('0x2'));var BPromise=require(_0xb408('0x3'));var rs=require(_0xb408('0x4'));var fs=require('fs');var Redis=require(_0xb408('0x5'));var db=require(_0xb408('0x6'))['db'];var utils=require(_0xb408('0x7'));var logger=require(_0xb408('0x8'))(_0xb408('0x9'));var config=require(_0xb408('0xa'));var jayson=require(_0xb408('0xb'));var client=jayson[_0xb408('0xc')][_0xb408('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x50e378,_0x23bf4a,_0x107fb9){return new BPromise(function(_0x14b8a0,_0x2df6a8){return client['request'](_0x50e378,_0x107fb9)[_0xb408('0xe')](function(_0x5e82f0){logger[_0xb408('0xf')]('CmHopperBlack,\x20%s,\x20%s',_0x23bf4a,'request\x20sent');logger['debug'](_0xb408('0x10'),_0x23bf4a,_0xb408('0x11'),JSON['stringify'](_0x5e82f0));if(_0x5e82f0[_0xb408('0x12')]){if(_0x5e82f0[_0xb408('0x12')]['code']===0x1f4){logger['error']('CmHopperBlack,\x20%s,\x20%s',_0x23bf4a,_0x5e82f0[_0xb408('0x12')][_0xb408('0x13')]);return _0x2df6a8(_0x5e82f0[_0xb408('0x12')][_0xb408('0x13')]);}logger[_0xb408('0x12')](_0xb408('0x14'),_0x23bf4a,_0x5e82f0['error'][_0xb408('0x13')]);return _0x14b8a0(_0x5e82f0[_0xb408('0x12')][_0xb408('0x13')]);}else{logger[_0xb408('0xf')](_0xb408('0x14'),_0x23bf4a,'request\x20sent');_0x14b8a0(_0x5e82f0[_0xb408('0x15')][_0xb408('0x13')]);}})['catch'](function(_0x4c03fe){logger['error'](_0xb408('0x14'),_0x23bf4a,_0x4c03fe);_0x2df6a8(_0x4c03fe);});});}exports['GetCmHopperBlack']=function(_0x26b7a9){var _0x12eb4d=this;return new Promise(function(_0x58d818,_0x4a1ea4){return db['CmHopperBlack'][_0xb408('0x16')]({'raw':_0x26b7a9[_0xb408('0x17')]?_0x26b7a9[_0xb408('0x17')][_0xb408('0x18')]===undefined?!![]:![]:!![],'where':_0x26b7a9[_0xb408('0x17')]?_0x26b7a9[_0xb408('0x17')]['where']||null:null,'attributes':_0x26b7a9[_0xb408('0x17')]?_0x26b7a9[_0xb408('0x17')][_0xb408('0x19')]||null:null,'limit':_0x26b7a9[_0xb408('0x17')]?_0x26b7a9[_0xb408('0x17')][_0xb408('0x1a')]||null:null,'include':_0x26b7a9[_0xb408('0x17')]?_0x26b7a9['options']['include']?_[_0xb408('0x1b')](_0x26b7a9['options'][_0xb408('0x1c')],function(_0x45661f){return{'model':db[_0x45661f[_0xb408('0x1d')]],'as':_0x45661f['as'],'attributes':_0x45661f['attributes'],'include':_0x45661f['include']?_[_0xb408('0x1b')](_0x45661f['include'],function(_0xb42926){return{'model':db[_0xb42926[_0xb408('0x1d')]],'as':_0xb42926['as'],'attributes':_0xb42926['attributes'],'include':_0xb42926[_0xb408('0x1c')]?_[_0xb408('0x1b')](_0xb42926[_0xb408('0x1c')],function(_0x562890){return{'model':db[_0x562890[_0xb408('0x1d')]],'as':_0x562890['as'],'attributes':_0x562890[_0xb408('0x19')]};}):[]};}):[]};}):[]:[]})[_0xb408('0xe')](function(_0x2bd053){logger[_0xb408('0xf')](_0xb408('0x1e'),_0x26b7a9);logger[_0xb408('0x1f')](_0xb408('0x1e'),_0x26b7a9,JSON[_0xb408('0x20')](_0x2bd053));_0x58d818(_0x2bd053);})['catch'](function(_0x5afaf6){logger['error']('GetCmHopperBlack',_0x5afaf6[_0xb408('0x13')],_0x26b7a9);_0x4a1ea4(_0x12eb4d[_0xb408('0x12')](0x1f4,_0x5afaf6[_0xb408('0x13')]));});});};exports[_0xb408('0x21')]=function(_0x14750d){var _0x5d08f9=this;return new Promise(function(_0x5a1127,_0x48edae){return db[_0xb408('0x22')][_0xb408('0x23')](_0x14750d[_0xb408('0x24')],{'raw':_0x14750d[_0xb408('0x17')]?_0x14750d[_0xb408('0x17')][_0xb408('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x14750d[_0xb408('0x17')]?_0x14750d[_0xb408('0x17')]['where']||null:null,'attributes':_0x14750d[_0xb408('0x17')]?_0x14750d[_0xb408('0x17')][_0xb408('0x19')]||null:null,'limit':_0x14750d['options']?_0x14750d[_0xb408('0x17')][_0xb408('0x1a')]||null:null})[_0xb408('0xe')](function(_0x56afaf){logger['info'](_0xb408('0x21'),_0x14750d);logger[_0xb408('0x1f')](_0xb408('0x21'),_0x14750d,JSON['stringify'](_0x56afaf));_0x5a1127(_0x56afaf);})[_0xb408('0x25')](function(_0x1c1aaf){logger[_0xb408('0x12')]('UpdateCmHopperBlack',_0x1c1aaf[_0xb408('0x13')],_0x14750d);_0x48edae(_0x5d08f9[_0xb408('0x12')](0x1f4,_0x1c1aaf['message']));});});};exports[_0xb408('0x26')]=function(_0x3d538f){var _0x25b9a8=this;return new Promise(function(_0x3d75c9,_0x273175){return db[_0xb408('0x22')]['destroy']({'where':_0x3d538f[_0xb408('0x17')]?_0x3d538f[_0xb408('0x17')]['where']||null:null})[_0xb408('0xe')](function(_0x22c2f9){logger[_0xb408('0xf')](_0xb408('0x26'),_0x3d538f);logger[_0xb408('0x1f')]('DestroyCmHopperBlack',_0x3d538f,JSON[_0xb408('0x20')](_0x22c2f9));_0x3d75c9(_0x22c2f9);})[_0xb408('0x25')](function(_0x1b094f){logger['error'](_0xb408('0x26'),_0x1b094f[_0xb408('0x13')],_0x3d538f);_0x273175(_0x25b9a8[_0xb408('0x12')](0x1f4,_0x1b094f['message']));});});};
\ No newline at end of file
index 21ea265..66e5382 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9536=['connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperBlack.controller','get','index','/describe','isAuthenticated','describe','/:id','show','update','delete','destroy','exports','multer','util','path'];(function(_0x54c64a,_0x5189d4){var _0x483d41=function(_0x3e4339){while(--_0x3e4339){_0x54c64a['push'](_0x54c64a['shift']());}};_0x483d41(++_0x5189d4);}(_0x9536,0x179));var _0x6953=function(_0x54d4a8,_0x585a59){_0x54d4a8=_0x54d4a8-0x0;var _0x3b321b=_0x9536[_0x54d4a8];return _0x3b321b;};'use strict';var multer=require(_0x6953('0x0'));var util=require(_0x6953('0x1'));var path=require(_0x6953('0x2'));var timeout=require(_0x6953('0x3'));var express=require('express');var router=express[_0x6953('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x6953('0x5'));var interaction=require(_0x6953('0x6'));var config=require(_0x6953('0x7'));var controller=require(_0x6953('0x8'));router[_0x6953('0x9')]('/',auth['isAuthenticated'](),controller[_0x6953('0xa')]);router[_0x6953('0x9')](_0x6953('0xb'),auth[_0x6953('0xc')](),controller[_0x6953('0xd')]);router['get'](_0x6953('0xe'),auth[_0x6953('0xc')](),controller[_0x6953('0xf')]);router['put'](_0x6953('0xe'),auth[_0x6953('0xc')](),controller[_0x6953('0x10')]);router[_0x6953('0x11')](_0x6953('0xe'),auth[_0x6953('0xc')](),controller[_0x6953('0x12')]);module[_0x6953('0x13')]=router;
\ No newline at end of file
+var _0x7046=['exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./cmHopperBlack.controller','get','isAuthenticated','index','/describe','show','put','/:id','update','delete'];(function(_0xa3bfa0,_0xfd3b80){var _0x2bd037=function(_0x31a320){while(--_0x31a320){_0xa3bfa0['push'](_0xa3bfa0['shift']());}};_0x2bd037(++_0xfd3b80);}(_0x7046,0x144));var _0x6704=function(_0x4b055c,_0x4b870b){_0x4b055c=_0x4b055c-0x0;var _0x4b62bb=_0x7046[_0x4b055c];return _0x4b62bb;};'use strict';var multer=require(_0x6704('0x0'));var util=require(_0x6704('0x1'));var path=require(_0x6704('0x2'));var timeout=require(_0x6704('0x3'));var express=require('express');var router=express[_0x6704('0x4')]();var fs_extra=require(_0x6704('0x5'));var auth=require(_0x6704('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x6704('0x7'));var controller=require(_0x6704('0x8'));router[_0x6704('0x9')]('/',auth[_0x6704('0xa')](),controller[_0x6704('0xb')]);router['get'](_0x6704('0xc'),auth['isAuthenticated'](),controller['describe']);router[_0x6704('0x9')]('/:id',auth['isAuthenticated'](),controller[_0x6704('0xd')]);router[_0x6704('0xe')](_0x6704('0xf'),auth[_0x6704('0xa')](),controller[_0x6704('0x10')]);router[_0x6704('0x11')](_0x6704('0xf'),auth[_0x6704('0xa')](),controller['destroy']);module[_0x6704('0x12')]=router;
\ No newline at end of file
index 232da9c..e74df2d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe274=['INTEGER','STRING','DATE','getDataValue','endtime','followuptime','diff','dispositionat','BOOLEAN','sequelize','moment','exports'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0xe274,0x189));var _0x4e27=function(_0x45909d,_0x5d2200){_0x45909d=_0x45909d-0x0;var _0x2d7e8e=_0xe274[_0x45909d];return _0x2d7e8e;};'use strict';var Sequelize=require(_0x4e27('0x0'));var moment=require(_0x4e27('0x1'));module[_0x4e27('0x2')]={'state':{'type':Sequelize[_0x4e27('0x3')](0x2)},'statedesc':{'type':Sequelize[_0x4e27('0x4')]},'scheduledat':{'type':Sequelize[_0x4e27('0x5')]},'countbusyretry':{'type':Sequelize[_0x4e27('0x3')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x4e27('0x3')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x4e27('0x3')],'defaultValue':0x0},'uniqueid':{'type':Sequelize['STRING']},'originatecalleridnum':{'type':Sequelize[_0x4e27('0x4')]},'originatecalleridname':{'type':Sequelize[_0x4e27('0x4')]},'calleridnum':{'type':Sequelize[_0x4e27('0x4')]},'calleridname':{'type':Sequelize[_0x4e27('0x4')]},'starttime':{'type':Sequelize[_0x4e27('0x5')]},'responsetime':{'type':Sequelize['DATE']},'answertime':{'type':Sequelize[_0x4e27('0x5')]},'droptime':{'type':Sequelize[_0x4e27('0x5')]},'endtime':{'type':Sequelize[_0x4e27('0x5')]},'ringtime':{'type':Sequelize[_0x4e27('0x3')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0x4e27('0x3')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0x4e27('0x3')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0x4e27('0x3')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0x4e27('0x4')]},'campaign':{'type':Sequelize['STRING']},'campaigntype':{'type':Sequelize['STRING']},'membername':{'type':Sequelize[_0x4e27('0x4')]},'reason':{'type':Sequelize[_0x4e27('0x4')]},'disposition':{'type':Sequelize[_0x4e27('0x4')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0x4e27('0x4')]},'dispositionat':{'type':Sequelize['DATE'],'set':function(_0x2f5c7a){var _0xac3298=this[_0x4e27('0x6')](_0x4e27('0x7'));if(_0xac3298&&_0x2f5c7a){this['setDataValue'](_0x4e27('0x8'),moment(_0x2f5c7a)[_0x4e27('0x9')](moment(_0xac3298),'seconds'));}return this['setDataValue'](_0x4e27('0xa'),_0x2f5c7a);}},'amd':{'type':Sequelize[_0x4e27('0xb')],'defaultValue':![]},'fax':{'type':Sequelize[_0x4e27('0xb')],'defaultValue':![]},'blacklist':{'type':Sequelize[_0x4e27('0xb')],'defaultValue':![]},'rescheduled':{'type':Sequelize[_0x4e27('0xb')],'defaultValue':![]},'rescheduledat':{'type':Sequelize['DATE']},'callback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x4e27('0x4')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x4e27('0x5')]},'deleted':{'type':Sequelize['STRING'],'defaultValue':null},'deletedat':{'type':Sequelize[_0x4e27('0x5')]},'recallme':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agiafterat':{'type':Sequelize[_0x4e27('0x5')]},'countnosuchnumberretry':{'type':Sequelize[_0x4e27('0x3')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x4e27('0x3')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x4e27('0x3')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x4e27('0x3')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xb41e=['endtime','setDataValue','followuptime','seconds','dispositionat','BOOLEAN','sequelize','exports','INTEGER','STRING','DATE'];(function(_0x433163,_0x3c3a04){var _0x39a855=function(_0x3d7ebc){while(--_0x3d7ebc){_0x433163['push'](_0x433163['shift']());}};_0x39a855(++_0x3c3a04);}(_0xb41e,0x145));var _0xeb41=function(_0x714d60,_0x1ede1f){_0x714d60=_0x714d60-0x0;var _0x25b2f1=_0xb41e[_0x714d60];return _0x25b2f1;};'use strict';var Sequelize=require(_0xeb41('0x0'));var moment=require('moment');module[_0xeb41('0x1')]={'state':{'type':Sequelize[_0xeb41('0x2')](0x2)},'statedesc':{'type':Sequelize[_0xeb41('0x3')]},'scheduledat':{'type':Sequelize['DATE']},'countbusyretry':{'type':Sequelize[_0xeb41('0x2')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0xeb41('0x2')],'defaultValue':0x0},'countglobal':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'uniqueid':{'type':Sequelize['STRING']},'originatecalleridnum':{'type':Sequelize[_0xeb41('0x3')]},'originatecalleridname':{'type':Sequelize[_0xeb41('0x3')]},'calleridnum':{'type':Sequelize[_0xeb41('0x3')]},'calleridname':{'type':Sequelize[_0xeb41('0x3')]},'starttime':{'type':Sequelize['DATE']},'responsetime':{'type':Sequelize[_0xeb41('0x4')]},'answertime':{'type':Sequelize[_0xeb41('0x4')]},'droptime':{'type':Sequelize[_0xeb41('0x4')]},'endtime':{'type':Sequelize[_0xeb41('0x4')]},'ringtime':{'type':Sequelize[_0xeb41('0x2')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0xeb41('0x2')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0xeb41('0x2')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0xeb41('0x2')],'defaultValue':0x0},'dropreason':{'type':Sequelize['STRING']},'campaign':{'type':Sequelize[_0xeb41('0x3')]},'campaigntype':{'type':Sequelize['STRING']},'membername':{'type':Sequelize[_0xeb41('0x3')]},'reason':{'type':Sequelize[_0xeb41('0x3')]},'disposition':{'type':Sequelize[_0xeb41('0x3')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0xeb41('0x3')]},'dispositionat':{'type':Sequelize[_0xeb41('0x4')],'set':function(_0x3c983c){var _0x51bfbd=this['getDataValue'](_0xeb41('0x5'));if(_0x51bfbd&&_0x3c983c){this[_0xeb41('0x6')](_0xeb41('0x7'),moment(_0x3c983c)['diff'](moment(_0x51bfbd),_0xeb41('0x8')));}return this[_0xeb41('0x6')](_0xeb41('0x9'),_0x3c983c);}},'amd':{'type':Sequelize[_0xeb41('0xa')],'defaultValue':![]},'fax':{'type':Sequelize[_0xeb41('0xa')],'defaultValue':![]},'blacklist':{'type':Sequelize[_0xeb41('0xa')],'defaultValue':![]},'rescheduled':{'type':Sequelize[_0xeb41('0xa')],'defaultValue':![]},'rescheduledat':{'type':Sequelize[_0xeb41('0x4')]},'callback':{'type':Sequelize[_0xeb41('0xa')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0xeb41('0x3')],'defaultValue':null},'callbackat':{'type':Sequelize[_0xeb41('0x4')]},'deleted':{'type':Sequelize[_0xeb41('0x3')],'defaultValue':null},'deletedat':{'type':Sequelize[_0xeb41('0x4')]},'recallme':{'type':Sequelize[_0xeb41('0xa')],'defaultValue':![]},'agiafterat':{'type':Sequelize[_0xeb41('0x4')]},'countnosuchnumberretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0xeb41('0x2')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0xeb41('0x2')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index 8cb1750..c5aa504 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xafc4=['../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','then','stack','name','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','filter','merge','map','VIRTUAL','options','CmHopperFinal','includeAll','catch','show','params','describe','body','uniqueid','find','countContactsQueueCampaignHopperFinal','findAll','sequelize','COUNT','literal','`state`\x20=\x200,\x201,\x20null','noSuchContacts','noAnswerContacts','`state`\x20=\x205,\x201,\x20null','busyContacts','congestionContacts','`state`\x20=\x2011\x20,\x201,\x20null','abandonedContacts','`state`\x20=\x2022,\x201,\x20null','reCallContacts','`state`\x20=\x2019,\x201,\x20null','answeringMachine','countContactsIvrCampaignHopperFinal','`state`\x20=\x203,\x201,\x20null','`state`\x20=\x208,\x201,\x20null','`state`\x20=\x2010\x20,\x201,\x20null','moveContactsQueueCampaignHopperFinal','insert','into','cm_hopper','phone','scheduledAt','ListId','VoiceQueueId','createdAt','select','field','ANY_VALUE(calleridnum)','NOW()','ContactId','ANY_VALUE(VoiceQueueId)','updatedAt','from','cm_hopper_final','VoiceQueueId\x20=\x20?','toString','state\x20=\x20?','state','calleridnum\x20IS\x20NOT\x20NULL','calleridnum\x20NOT\x20IN\x20(?)','calleridnum','state\x20=\x204','Campaign','fromQuery','CampaignId','CampaignId\x20=\x20?','group','CmHopper','findOne','eml-format','zip-dir','request-promise','moment','bluebird','mustache','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','api'];(function(_0x585876,_0x174c06){var _0x2e5e8a=function(_0x42bf90){while(--_0x42bf90){_0x585876['push'](_0x585876['shift']());}};_0x2e5e8a(++_0x174c06);}(_0xafc4,0x69));var _0x4afc=function(_0x2f1c49,_0x49116e){_0x2f1c49=_0x2f1c49-0x0;var _0x68516d=_0xafc4[_0x2f1c49];return _0x68516d;};'use strict';var emlformat=require(_0x4afc('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x4afc('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x4afc('0x2'));var moment=require(_0x4afc('0x3'));var BPromise=require(_0x4afc('0x4'));var Mustache=require(_0x4afc('0x5'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x4afc('0x6'));var ejs=require(_0x4afc('0x7'));var fs=require('fs');var fs_extra=require(_0x4afc('0x8'));var _=require(_0x4afc('0x9'));var squel=require(_0x4afc('0xa'));var crypto=require(_0x4afc('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x4afc('0xc'));var toCsv=require(_0x4afc('0x6'));var querystring=require(_0x4afc('0xd'));var Papa=require(_0x4afc('0xe'));var Redis=require(_0x4afc('0xf'));var authService=require(_0x4afc('0x10'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4afc('0x11'));var logger=require('../../config/logger')(_0x4afc('0x12'));var utils=require(_0x4afc('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x4afc('0x14'));var db=require(_0x4afc('0x15'))['db'];function respondWithStatusCode(_0x2b191c,_0x2768bf){_0x2768bf=_0x2768bf||0xcc;return function(_0x1d8f98){if(_0x1d8f98){return _0x2b191c[_0x4afc('0x16')](_0x2768bf);}return _0x2b191c[_0x4afc('0x17')](_0x2768bf)[_0x4afc('0x18')]();};}function respondWithResult(_0x5effb4,_0x26f3f1){_0x26f3f1=_0x26f3f1||0xc8;return function(_0x429fd8){if(_0x429fd8){return _0x5effb4[_0x4afc('0x17')](_0x26f3f1)[_0x4afc('0x19')](_0x429fd8);}};}function respondWithFilteredResult(_0x5f2dc9,_0x4e32e8){return function(_0x2452ae){if(_0x2452ae){var _0x4f3127=typeof _0x4e32e8[_0x4afc('0x1a')]===_0x4afc('0x1b')&&typeof _0x4e32e8[_0x4afc('0x1c')]===_0x4afc('0x1b');var _0x3a306f=_0x2452ae[_0x4afc('0x1d')];var _0x22f809=_0x4f3127?0x0:_0x4e32e8[_0x4afc('0x1a')];var _0x16365f=_0x4f3127?_0x2452ae[_0x4afc('0x1d')]:_0x4e32e8[_0x4afc('0x1a')]+_0x4e32e8['limit'];var _0x1a8f49;if(_0x16365f>=_0x3a306f){_0x16365f=_0x3a306f;_0x1a8f49=0xc8;}else{_0x1a8f49=0xce;}_0x5f2dc9[_0x4afc('0x17')](_0x1a8f49);return _0x5f2dc9[_0x4afc('0x1e')](_0x4afc('0x1f'),_0x22f809+'-'+_0x16365f+'/'+_0x3a306f)['json'](_0x2452ae);}return null;};}function patchUpdates(_0x3bddc0){return function(_0x30eda3){try{jsonpatch[_0x4afc('0x20')](_0x30eda3,_0x3bddc0,!![]);}catch(_0x280587){return BPromise[_0x4afc('0x21')](_0x280587);}return _0x30eda3[_0x4afc('0x22')]();};}function saveUpdates(_0x3ad7a5,_0x573a75){return function(_0x5403e4){if(_0x5403e4){return _0x5403e4[_0x4afc('0x23')](_0x3ad7a5)['then'](function(_0x37debf){return _0x37debf;});}return null;};}function removeEntity(_0x4e9a48,_0x1aa676){return function(_0x2a0314){if(_0x2a0314){return _0x2a0314[_0x4afc('0x24')]()[_0x4afc('0x25')](function(){_0x4e9a48[_0x4afc('0x17')](0xcc)[_0x4afc('0x18')]();});}};}function handleEntityNotFound(_0x40a0db,_0x383a71){return function(_0x2bb837){if(!_0x2bb837){_0x40a0db[_0x4afc('0x16')](0x194);}return _0x2bb837;};}function handleError(_0x4e8273,_0x359c07){_0x359c07=_0x359c07||0x1f4;return function(_0x35f5b3){logger['error'](_0x35f5b3[_0x4afc('0x26')]);if(_0x35f5b3[_0x4afc('0x27')]){delete _0x35f5b3[_0x4afc('0x27')];}_0x4e8273['status'](_0x359c07)['send'](_0x35f5b3);};}exports['index']=function(_0x426e9d,_0x5db47e){var _0x5e4747={},_0xd26d2f={},_0x628e42={'count':0x0,'rows':[]};var _0x494fe7=_['map'](db['CmHopperFinal'][_0x4afc('0x28')],function(_0x34434a){return{'name':_0x34434a[_0x4afc('0x29')],'type':_0x34434a[_0x4afc('0x2a')][_0x4afc('0x2b')]};});_0xd26d2f[_0x4afc('0x2c')]=_['map'](_0x494fe7,_0x4afc('0x27'));_0xd26d2f[_0x4afc('0x2d')]=_[_0x4afc('0x2e')](_0x426e9d[_0x4afc('0x2d')]);_0xd26d2f[_0x4afc('0x2f')]=_[_0x4afc('0x30')](_0xd26d2f[_0x4afc('0x2c')],_0xd26d2f[_0x4afc('0x2d')]);_0x5e4747['attributes']=_[_0x4afc('0x30')](_0xd26d2f['model'],qs['fields'](_0x426e9d[_0x4afc('0x2d')][_0x4afc('0x31')]));_0x5e4747[_0x4afc('0x32')]=_0x5e4747[_0x4afc('0x32')][_0x4afc('0x33')]?_0x5e4747[_0x4afc('0x32')]:_0xd26d2f['model'];if(!_0x426e9d[_0x4afc('0x2d')][_0x4afc('0x34')](_0x4afc('0x35'))){_0x5e4747[_0x4afc('0x1c')]=qs[_0x4afc('0x1c')](_0x426e9d[_0x4afc('0x2d')]['limit']);_0x5e4747[_0x4afc('0x1a')]=qs[_0x4afc('0x1a')](_0x426e9d[_0x4afc('0x2d')][_0x4afc('0x1a')]);}_0x5e4747['order']=qs['sort'](_0x426e9d[_0x4afc('0x2d')][_0x4afc('0x36')]);_0x5e4747[_0x4afc('0x37')]=qs['filters'](_['pick'](_0x426e9d[_0x4afc('0x2d')],_0xd26d2f['filters']),_0x494fe7);if(_0x426e9d['query'][_0x4afc('0x38')]){_0x5e4747[_0x4afc('0x37')]=_[_0x4afc('0x39')](_0x5e4747[_0x4afc('0x37')],{'$or':_[_0x4afc('0x3a')](_0x494fe7,function(_0x4420fb){if(_0x4420fb[_0x4afc('0x2a')]!==_0x4afc('0x3b')){var _0x3ccc5a={};_0x3ccc5a[_0x4420fb[_0x4afc('0x27')]]={'$like':'%'+_0x426e9d[_0x4afc('0x2d')][_0x4afc('0x38')]+'%'};return _0x3ccc5a;}})});}_0x5e4747=_[_0x4afc('0x39')]({},_0x5e4747,_0x426e9d[_0x4afc('0x3c')]);var _0x46dd2a={'where':_0x5e4747['where']};return db[_0x4afc('0x3d')][_0x4afc('0x1d')](_0x46dd2a)[_0x4afc('0x25')](function(_0xe6db12){_0x628e42[_0x4afc('0x1d')]=_0xe6db12;if(_0x426e9d[_0x4afc('0x2d')][_0x4afc('0x3e')]){_0x5e4747['include']=[{'all':!![]}];}return db['CmHopperFinal']['findAll'](_0x5e4747);})[_0x4afc('0x25')](function(_0x105c03){_0x628e42['rows']=_0x105c03;return _0x628e42;})[_0x4afc('0x25')](respondWithFilteredResult(_0x5db47e,_0x5e4747))[_0x4afc('0x3f')](handleError(_0x5db47e,null));};exports[_0x4afc('0x40')]=function(_0x397996,_0x545109){var _0x12b5db={'raw':!![],'where':{'id':_0x397996[_0x4afc('0x41')]['id']}},_0x45c9c3={};_0x45c9c3[_0x4afc('0x2c')]=_[_0x4afc('0x2e')](db[_0x4afc('0x3d')]['rawAttributes']);_0x45c9c3[_0x4afc('0x2d')]=_['keys'](_0x397996[_0x4afc('0x2d')]);_0x45c9c3[_0x4afc('0x2f')]=_[_0x4afc('0x30')](_0x45c9c3['model'],_0x45c9c3['query']);_0x12b5db[_0x4afc('0x32')]=_[_0x4afc('0x30')](_0x45c9c3[_0x4afc('0x2c')],qs[_0x4afc('0x31')](_0x397996[_0x4afc('0x2d')][_0x4afc('0x31')]));_0x12b5db[_0x4afc('0x32')]=_0x12b5db[_0x4afc('0x32')]['length']?_0x12b5db[_0x4afc('0x32')]:_0x45c9c3[_0x4afc('0x2c')];if(_0x397996['query'][_0x4afc('0x3e')]){_0x12b5db['include']=[{'all':!![]}];}_0x12b5db=_[_0x4afc('0x39')]({},_0x12b5db,_0x397996[_0x4afc('0x3c')]);return db[_0x4afc('0x3d')]['find'](_0x12b5db)[_0x4afc('0x25')](handleEntityNotFound(_0x545109,null))[_0x4afc('0x25')](respondWithResult(_0x545109,null))[_0x4afc('0x3f')](handleError(_0x545109,null));};exports[_0x4afc('0x42')]=function(_0x4772db,_0x19a0ac){return db['CmHopperFinal']['describe']()['then'](respondWithResult(_0x19a0ac,null))[_0x4afc('0x3f')](handleError(_0x19a0ac,null));};exports[_0x4afc('0x23')]=function(_0x42e274,_0x269c24){if(_0x42e274[_0x4afc('0x43')][_0x4afc('0x44')]){delete _0x42e274[_0x4afc('0x43')][_0x4afc('0x44')];}return db[_0x4afc('0x3d')][_0x4afc('0x45')]({'where':{'uniqueid':_0x42e274['params']['id']}})[_0x4afc('0x25')](handleEntityNotFound(_0x269c24,null))['then'](saveUpdates(_0x42e274['body'],null))[_0x4afc('0x25')](respondWithResult(_0x269c24,null))['catch'](handleError(_0x269c24,null));};exports[_0x4afc('0x46')]=function(_0x355198,_0x2fe2ae,_0x2cafc3){return db['CmHopperFinal'][_0x4afc('0x47')]({'raw':![],'where':{'VoiceQueueId':_0x355198['params']['id']},'attributes':[[db[_0x4afc('0x48')]['fn'](_0x4afc('0x49'),db[_0x4afc('0x48')]['fn']('IF',db[_0x4afc('0x48')][_0x4afc('0x4a')](_0x4afc('0x4b')))),_0x4afc('0x4c')],[db[_0x4afc('0x48')]['fn'](_0x4afc('0x49'),db[_0x4afc('0x48')]['fn']('IF',db[_0x4afc('0x48')][_0x4afc('0x4a')]('`state`\x20=\x203,\x201,\x20null'))),_0x4afc('0x4d')],[db[_0x4afc('0x48')]['fn'](_0x4afc('0x49'),db[_0x4afc('0x48')]['fn']('IF',db[_0x4afc('0x48')][_0x4afc('0x4a')](_0x4afc('0x4e')))),_0x4afc('0x4f')],[db[_0x4afc('0x48')]['fn'](_0x4afc('0x49'),db[_0x4afc('0x48')]['fn']('IF',db[_0x4afc('0x48')][_0x4afc('0x4a')]('`state`\x20=\x208,\x201,\x20null'))),_0x4afc('0x50')],[db['sequelize']['fn'](_0x4afc('0x49'),db[_0x4afc('0x48')]['fn']('IF',db[_0x4afc('0x48')][_0x4afc('0x4a')]('`state`\x20=\x2010\x20,\x201,\x20null'))),'dropContacts'],[db[_0x4afc('0x48')]['fn'](_0x4afc('0x49'),db['sequelize']['fn']('IF',db[_0x4afc('0x48')][_0x4afc('0x4a')](_0x4afc('0x51')))),_0x4afc('0x52')],[db[_0x4afc('0x48')]['fn'](_0x4afc('0x49'),db[_0x4afc('0x48')]['fn']('IF',db[_0x4afc('0x48')][_0x4afc('0x4a')](_0x4afc('0x53')))),_0x4afc('0x54')],[db[_0x4afc('0x48')]['fn'](_0x4afc('0x49'),db[_0x4afc('0x48')]['fn']('IF',db['sequelize'][_0x4afc('0x4a')](_0x4afc('0x55')))),_0x4afc('0x56')]]})[_0x4afc('0x25')](handleEntityNotFound(_0x2fe2ae,null))[_0x4afc('0x25')](respondWithResult(_0x2fe2ae,null))[_0x4afc('0x3f')](handleError(_0x2fe2ae,null));};exports[_0x4afc('0x57')]=function(_0x4985c6,_0x1771e8,_0x323c65){return db['CmHopperFinal']['findAll']({'raw':![],'where':{'CampaignId':_0x4985c6[_0x4afc('0x41')]['id']},'attributes':[[db[_0x4afc('0x48')]['fn'](_0x4afc('0x49'),db[_0x4afc('0x48')]['fn']('IF',db[_0x4afc('0x48')][_0x4afc('0x4a')](_0x4afc('0x4b')))),_0x4afc('0x4c')],[db[_0x4afc('0x48')]['fn'](_0x4afc('0x49'),db['sequelize']['fn']('IF',db['sequelize'][_0x4afc('0x4a')](_0x4afc('0x58')))),'noAnswerContacts'],[db[_0x4afc('0x48')]['fn'](_0x4afc('0x49'),db['sequelize']['fn']('IF',db['sequelize'][_0x4afc('0x4a')](_0x4afc('0x4e')))),_0x4afc('0x4f')],[db['sequelize']['fn'](_0x4afc('0x49'),db['sequelize']['fn']('IF',db['sequelize'][_0x4afc('0x4a')](_0x4afc('0x59')))),_0x4afc('0x50')],[db[_0x4afc('0x48')]['fn'](_0x4afc('0x49'),db[_0x4afc('0x48')]['fn']('IF',db[_0x4afc('0x48')][_0x4afc('0x4a')](_0x4afc('0x5a')))),'dropContacts'],[db[_0x4afc('0x48')]['fn'](_0x4afc('0x49'),db[_0x4afc('0x48')]['fn']('IF',db['sequelize']['literal']('`state`\x20=\x2011\x20,\x201,\x20null'))),_0x4afc('0x52')],[db[_0x4afc('0x48')]['fn'](_0x4afc('0x49'),db['sequelize']['fn']('IF',db[_0x4afc('0x48')]['literal']('`state`\x20=\x2022,\x201,\x20null'))),'reCallContacts'],[db[_0x4afc('0x48')]['fn'](_0x4afc('0x49'),db[_0x4afc('0x48')]['fn']('IF',db['sequelize'][_0x4afc('0x4a')](_0x4afc('0x55')))),_0x4afc('0x56')]]})['then'](handleEntityNotFound(_0x1771e8,null))[_0x4afc('0x25')](respondWithResult(_0x1771e8,null))[_0x4afc('0x3f')](handleError(_0x1771e8,null));};exports[_0x4afc('0x5b')]=function(_0x392252,_0x1f652a,_0x481263){return db['VoiceQueue'][_0x4afc('0x45')]({'where':{'id':_0x392252[_0x4afc('0x41')]['id']}})[_0x4afc('0x25')](handleEntityNotFound(_0x1f652a,null))['then'](function(_0x380c56){var _0x14a216;if(_0x380c56){_0x14a216=squel[_0x4afc('0x5c')]()[_0x4afc('0x5d')](_0x4afc('0x5e'))['fromQuery']([_0x4afc('0x5f'),_0x4afc('0x60'),'ContactId',_0x4afc('0x61'),_0x4afc('0x62'),_0x4afc('0x63'),'updatedAt'],squel[_0x4afc('0x64')]()[_0x4afc('0x65')](_0x4afc('0x66'),_0x4afc('0x5f'))[_0x4afc('0x65')](_0x4afc('0x67'),_0x4afc('0x60'))[_0x4afc('0x65')]('ANY_VALUE(ContactId)',_0x4afc('0x68'))['field']('ANY_VALUE(ListId)',_0x4afc('0x61'))[_0x4afc('0x65')](_0x4afc('0x69'),'VoiceQueueId')['field'](_0x4afc('0x67'),_0x4afc('0x63'))[_0x4afc('0x65')](_0x4afc('0x67'),_0x4afc('0x6a'))[_0x4afc('0x6b')](_0x4afc('0x6c'))[_0x4afc('0x37')](_0x4afc('0x6d'),_0x392252[_0x4afc('0x41')]['id'][_0x4afc('0x6e')]())[_0x4afc('0x37')](_0x4afc('0x6f'),_0x392252[_0x4afc('0x43')][_0x4afc('0x70')][_0x4afc('0x6e')]())['where'](_0x4afc('0x71'))[_0x4afc('0x37')](_0x4afc('0x72'),squel[_0x4afc('0x64')]()[_0x4afc('0x65')](_0x4afc('0x5f'))[_0x4afc('0x6b')](_0x4afc('0x5e'))[_0x4afc('0x37')]('VoiceQueueId\x20=\x20?',_0x392252[_0x4afc('0x41')]['id'][_0x4afc('0x6e')]()))[_0x4afc('0x37')](_0x4afc('0x72'),squel['select']()[_0x4afc('0x65')](_0x4afc('0x73'))[_0x4afc('0x6b')](_0x4afc('0x6c'))[_0x4afc('0x37')](_0x4afc('0x6d'),_0x392252[_0x4afc('0x41')]['id'][_0x4afc('0x6e')]())[_0x4afc('0x37')](_0x4afc('0x74')))['group'](_0x4afc('0x68')))[_0x4afc('0x6e')]();return db['sequelize'][_0x4afc('0x2d')](_0x14a216);}return[];})[_0x4afc('0x25')](respondWithResult(_0x1f652a,null))[_0x4afc('0x3f')](handleError(_0x1f652a,null));};exports['moveContactsIvrCampaignHopperFinal']=function(_0x1c3d20,_0x3478aa,_0x24553b){return db[_0x4afc('0x75')]['find']({'where':{'id':_0x1c3d20[_0x4afc('0x41')]['id']}})[_0x4afc('0x25')](handleEntityNotFound(_0x3478aa,null))['then'](function(_0x2dc8a1){var _0x36f3ea;if(_0x2dc8a1){_0x36f3ea=squel[_0x4afc('0x5c')]()['into']('cm_hopper')[_0x4afc('0x76')]([_0x4afc('0x5f'),_0x4afc('0x60'),_0x4afc('0x68'),_0x4afc('0x61'),_0x4afc('0x77'),_0x4afc('0x63'),_0x4afc('0x6a')],squel[_0x4afc('0x64')]()[_0x4afc('0x65')](_0x4afc('0x66'),_0x4afc('0x5f'))[_0x4afc('0x65')](_0x4afc('0x67'),_0x4afc('0x60'))[_0x4afc('0x65')]('ANY_VALUE(ContactId)',_0x4afc('0x68'))[_0x4afc('0x65')]('ANY_VALUE(ListId)',_0x4afc('0x61'))['field']('ANY_VALUE(CampaignId)',_0x4afc('0x77'))['field']('NOW()',_0x4afc('0x63'))['field'](_0x4afc('0x67'),'updatedAt')[_0x4afc('0x6b')](_0x4afc('0x6c'))[_0x4afc('0x37')](_0x4afc('0x78'),_0x1c3d20[_0x4afc('0x41')]['id']['toString']())[_0x4afc('0x37')](_0x4afc('0x6f'),_0x1c3d20['body']['state'][_0x4afc('0x6e')]())[_0x4afc('0x37')](_0x4afc('0x71'))[_0x4afc('0x37')](_0x4afc('0x72'),squel['select']()[_0x4afc('0x65')](_0x4afc('0x5f'))[_0x4afc('0x6b')](_0x4afc('0x5e'))['where'](_0x4afc('0x78'),_0x1c3d20['params']['id'][_0x4afc('0x6e')]()))[_0x4afc('0x37')](_0x4afc('0x72'),squel[_0x4afc('0x64')]()[_0x4afc('0x65')](_0x4afc('0x73'))[_0x4afc('0x6b')](_0x4afc('0x6c'))[_0x4afc('0x37')](_0x4afc('0x78'),_0x1c3d20[_0x4afc('0x41')]['id']['toString']())[_0x4afc('0x37')]('state\x20=\x204'))[_0x4afc('0x79')]('ContactId'))['toString']();return db[_0x4afc('0x48')]['query'](_0x36f3ea);}return[];})['then'](respondWithResult(_0x3478aa,null))[_0x4afc('0x3f')](handleError(_0x3478aa,null));};exports['checkContactHopper']=function(_0x272e36,_0x24bf53,_0x5b1421){return db[_0x4afc('0x7a')][_0x4afc('0x7b')]({'where':{'VoiceQueueId':_0x272e36['body'][_0x4afc('0x62')],'CampaignId':_0x272e36[_0x4afc('0x43')][_0x4afc('0x77')],'ContactId':_0x272e36['body'][_0x4afc('0x68')]}})[_0x4afc('0x25')](handleEntityNotFound(_0x24bf53,null))[_0x4afc('0x25')](function(_0x16eb6d){if(_0x16eb6d){return _0x16eb6d;}return null;})[_0x4afc('0x25')](respondWithResult(_0x24bf53,null))[_0x4afc('0x3f')](handleError(_0x24bf53,null));};
\ No newline at end of file
+var _0x2a07=['jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','Content-Range','apply','reject','save','update','then','error','name','send','index','map','CmHopperFinal','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','count','include','catch','show','params','fields','includeAll','describe','body','uniqueid','find','findAll','sequelize','COUNT','literal','`state`\x20=\x203,\x201,\x20null','noAnswerContacts','busyContacts','`state`\x20=\x2010\x20,\x201,\x20null','abandonedContacts','`state`\x20=\x2022,\x201,\x20null','reCallContacts','`state`\x20=\x2019,\x201,\x20null','`state`\x20=\x200,\x201,\x20null','noSuchContacts','`state`\x20=\x205,\x201,\x20null','`state`\x20=\x208,\x201,\x20null','congestionContacts','moveContactsQueueCampaignHopperFinal','insert','into','cm_hopper','ContactId','ListId','VoiceQueueId','createdAt','updatedAt','select','ANY_VALUE(calleridnum)','phone','field','NOW()','scheduledAt','ANY_VALUE(ContactId)','ANY_VALUE(ListId)','ANY_VALUE(VoiceQueueId)','from','cm_hopper_final','VoiceQueueId\x20=\x20?','state\x20=\x20?','state','calleridnum\x20IS\x20NOT\x20NULL','calleridnum\x20NOT\x20IN\x20(?)','calleridnum','state\x20=\x204','toString','Campaign','CampaignId','ANY_VALUE(CampaignId)','CampaignId\x20=\x20?','group','checkContactHopper','CmHopper','findOne','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto'];(function(_0x3ab385,_0x6c1b1c){var _0x2cb07f=function(_0x9e3f15){while(--_0x9e3f15){_0x3ab385['push'](_0x3ab385['shift']());}};_0x2cb07f(++_0x6c1b1c);}(_0x2a07,0x74));var _0x72a0=function(_0x1ac84d,_0x2d5f8f){_0x1ac84d=_0x1ac84d-0x0;var _0x1829d2=_0x2a07[_0x1ac84d];return _0x1829d2;};'use strict';var emlformat=require(_0x72a0('0x0'));var rimraf=require(_0x72a0('0x1'));var zipdir=require(_0x72a0('0x2'));var jsonpatch=require(_0x72a0('0x3'));var rp=require(_0x72a0('0x4'));var moment=require('moment');var BPromise=require(_0x72a0('0x5'));var Mustache=require(_0x72a0('0x6'));var util=require(_0x72a0('0x7'));var path=require(_0x72a0('0x8'));var sox=require(_0x72a0('0x9'));var csv=require(_0x72a0('0xa'));var ejs=require(_0x72a0('0xb'));var fs=require('fs');var fs_extra=require(_0x72a0('0xc'));var _=require(_0x72a0('0xd'));var squel=require(_0x72a0('0xe'));var crypto=require(_0x72a0('0xf'));var jsforce=require(_0x72a0('0x10'));var deskjs=require(_0x72a0('0x11'));var toCsv=require(_0x72a0('0xa'));var querystring=require(_0x72a0('0x12'));var Papa=require(_0x72a0('0x13'));var Redis=require('ioredis');var authService=require(_0x72a0('0x14'));var qs=require(_0x72a0('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x72a0('0x16'));var logger=require(_0x72a0('0x17'))(_0x72a0('0x18'));var utils=require(_0x72a0('0x19'));var config=require(_0x72a0('0x1a'));var licenseUtil=require('../../config/license/util');var db=require(_0x72a0('0x1b'))['db'];function respondWithStatusCode(_0x335b9f,_0x123ca4){_0x123ca4=_0x123ca4||0xcc;return function(_0xf91a82){if(_0xf91a82){return _0x335b9f[_0x72a0('0x1c')](_0x123ca4);}return _0x335b9f[_0x72a0('0x1d')](_0x123ca4)[_0x72a0('0x1e')]();};}function respondWithResult(_0x5e0b5f,_0x4930c5){_0x4930c5=_0x4930c5||0xc8;return function(_0xe103dc){if(_0xe103dc){return _0x5e0b5f[_0x72a0('0x1d')](_0x4930c5)[_0x72a0('0x1f')](_0xe103dc);}};}function respondWithFilteredResult(_0x1d1133,_0x23b001){return function(_0x3f3d62){if(_0x3f3d62){var _0x4ab55e=typeof _0x23b001[_0x72a0('0x20')]===_0x72a0('0x21')&&typeof _0x23b001[_0x72a0('0x22')]===_0x72a0('0x21');var _0x2d1e95=_0x3f3d62['count'];var _0x100d8f=_0x4ab55e?0x0:_0x23b001[_0x72a0('0x20')];var _0x131b73=_0x4ab55e?_0x3f3d62['count']:_0x23b001[_0x72a0('0x20')]+_0x23b001[_0x72a0('0x22')];var _0x30899b;if(_0x131b73>=_0x2d1e95){_0x131b73=_0x2d1e95;_0x30899b=0xc8;}else{_0x30899b=0xce;}_0x1d1133[_0x72a0('0x1d')](_0x30899b);return _0x1d1133['set'](_0x72a0('0x23'),_0x100d8f+'-'+_0x131b73+'/'+_0x2d1e95)['json'](_0x3f3d62);}return null;};}function patchUpdates(_0x3d0607){return function(_0x315413){try{jsonpatch[_0x72a0('0x24')](_0x315413,_0x3d0607,!![]);}catch(_0x5c7479){return BPromise[_0x72a0('0x25')](_0x5c7479);}return _0x315413[_0x72a0('0x26')]();};}function saveUpdates(_0x1d22d8,_0x3d1965){return function(_0x5d6145){if(_0x5d6145){return _0x5d6145[_0x72a0('0x27')](_0x1d22d8)[_0x72a0('0x28')](function(_0x1ddd54){return _0x1ddd54;});}return null;};}function removeEntity(_0x23b918,_0x3022b0){return function(_0x174b1b){if(_0x174b1b){return _0x174b1b['destroy']()['then'](function(){_0x23b918[_0x72a0('0x1d')](0xcc)[_0x72a0('0x1e')]();});}};}function handleEntityNotFound(_0x123df4,_0x1504ed){return function(_0xf5cb49){if(!_0xf5cb49){_0x123df4[_0x72a0('0x1c')](0x194);}return _0xf5cb49;};}function handleError(_0xa5bda0,_0x15922a){_0x15922a=_0x15922a||0x1f4;return function(_0xee99e2){logger[_0x72a0('0x29')](_0xee99e2['stack']);if(_0xee99e2[_0x72a0('0x2a')]){delete _0xee99e2[_0x72a0('0x2a')];}_0xa5bda0[_0x72a0('0x1d')](_0x15922a)[_0x72a0('0x2b')](_0xee99e2);};}exports[_0x72a0('0x2c')]=function(_0x177a3a,_0x432179){var _0x12eda2={},_0x23c96a={},_0x916733={'count':0x0,'rows':[]};var _0x4ba037=_[_0x72a0('0x2d')](db[_0x72a0('0x2e')][_0x72a0('0x2f')],function(_0xfbe9b3){return{'name':_0xfbe9b3[_0x72a0('0x30')],'type':_0xfbe9b3[_0x72a0('0x31')][_0x72a0('0x32')]};});_0x23c96a['model']=_[_0x72a0('0x2d')](_0x4ba037,_0x72a0('0x2a'));_0x23c96a[_0x72a0('0x33')]=_[_0x72a0('0x34')](_0x177a3a[_0x72a0('0x33')]);_0x23c96a[_0x72a0('0x35')]=_[_0x72a0('0x36')](_0x23c96a[_0x72a0('0x37')],_0x23c96a['query']);_0x12eda2[_0x72a0('0x38')]=_[_0x72a0('0x36')](_0x23c96a[_0x72a0('0x37')],qs['fields'](_0x177a3a[_0x72a0('0x33')]['fields']));_0x12eda2[_0x72a0('0x38')]=_0x12eda2[_0x72a0('0x38')][_0x72a0('0x39')]?_0x12eda2[_0x72a0('0x38')]:_0x23c96a[_0x72a0('0x37')];if(!_0x177a3a[_0x72a0('0x33')][_0x72a0('0x3a')](_0x72a0('0x3b'))){_0x12eda2[_0x72a0('0x22')]=qs[_0x72a0('0x22')](_0x177a3a[_0x72a0('0x33')][_0x72a0('0x22')]);_0x12eda2['offset']=qs[_0x72a0('0x20')](_0x177a3a['query'][_0x72a0('0x20')]);}_0x12eda2[_0x72a0('0x3c')]=qs[_0x72a0('0x3d')](_0x177a3a[_0x72a0('0x33')][_0x72a0('0x3d')]);_0x12eda2[_0x72a0('0x3e')]=qs[_0x72a0('0x35')](_[_0x72a0('0x3f')](_0x177a3a[_0x72a0('0x33')],_0x23c96a['filters']),_0x4ba037);if(_0x177a3a['query'][_0x72a0('0x40')]){_0x12eda2[_0x72a0('0x3e')]=_[_0x72a0('0x41')](_0x12eda2[_0x72a0('0x3e')],{'$or':_[_0x72a0('0x2d')](_0x4ba037,function(_0x512a06){if(_0x512a06[_0x72a0('0x31')]!==_0x72a0('0x42')){var _0x582c90={};_0x582c90[_0x512a06[_0x72a0('0x2a')]]={'$like':'%'+_0x177a3a['query']['filter']+'%'};return _0x582c90;}})});}_0x12eda2=_['merge']({},_0x12eda2,_0x177a3a[_0x72a0('0x43')]);var _0x49633b={'where':_0x12eda2[_0x72a0('0x3e')]};return db[_0x72a0('0x2e')][_0x72a0('0x44')](_0x49633b)[_0x72a0('0x28')](function(_0x4bf56e){_0x916733['count']=_0x4bf56e;if(_0x177a3a['query']['includeAll']){_0x12eda2[_0x72a0('0x45')]=[{'all':!![]}];}return db[_0x72a0('0x2e')]['findAll'](_0x12eda2);})[_0x72a0('0x28')](function(_0x35d790){_0x916733['rows']=_0x35d790;return _0x916733;})[_0x72a0('0x28')](respondWithFilteredResult(_0x432179,_0x12eda2))[_0x72a0('0x46')](handleError(_0x432179,null));};exports[_0x72a0('0x47')]=function(_0xe4abe1,_0x340153){var _0x341451={'raw':!![],'where':{'id':_0xe4abe1[_0x72a0('0x48')]['id']}},_0x50eb7f={};_0x50eb7f['model']=_[_0x72a0('0x34')](db['CmHopperFinal'][_0x72a0('0x2f')]);_0x50eb7f[_0x72a0('0x33')]=_['keys'](_0xe4abe1[_0x72a0('0x33')]);_0x50eb7f['filters']=_[_0x72a0('0x36')](_0x50eb7f[_0x72a0('0x37')],_0x50eb7f[_0x72a0('0x33')]);_0x341451['attributes']=_[_0x72a0('0x36')](_0x50eb7f[_0x72a0('0x37')],qs[_0x72a0('0x49')](_0xe4abe1['query']['fields']));_0x341451[_0x72a0('0x38')]=_0x341451['attributes'][_0x72a0('0x39')]?_0x341451[_0x72a0('0x38')]:_0x50eb7f[_0x72a0('0x37')];if(_0xe4abe1[_0x72a0('0x33')][_0x72a0('0x4a')]){_0x341451[_0x72a0('0x45')]=[{'all':!![]}];}_0x341451=_[_0x72a0('0x41')]({},_0x341451,_0xe4abe1[_0x72a0('0x43')]);return db[_0x72a0('0x2e')]['find'](_0x341451)[_0x72a0('0x28')](handleEntityNotFound(_0x340153,null))[_0x72a0('0x28')](respondWithResult(_0x340153,null))[_0x72a0('0x46')](handleError(_0x340153,null));};exports[_0x72a0('0x4b')]=function(_0x3a669d,_0x304400){return db[_0x72a0('0x2e')]['describe']()['then'](respondWithResult(_0x304400,null))[_0x72a0('0x46')](handleError(_0x304400,null));};exports[_0x72a0('0x27')]=function(_0xe38fb3,_0x3cab6a){if(_0xe38fb3[_0x72a0('0x4c')][_0x72a0('0x4d')]){delete _0xe38fb3[_0x72a0('0x4c')][_0x72a0('0x4d')];}return db[_0x72a0('0x2e')][_0x72a0('0x4e')]({'where':{'uniqueid':_0xe38fb3['params']['id']}})[_0x72a0('0x28')](handleEntityNotFound(_0x3cab6a,null))[_0x72a0('0x28')](saveUpdates(_0xe38fb3[_0x72a0('0x4c')],null))[_0x72a0('0x28')](respondWithResult(_0x3cab6a,null))[_0x72a0('0x46')](handleError(_0x3cab6a,null));};exports['countContactsQueueCampaignHopperFinal']=function(_0x143410,_0x595243,_0x4d712b){return db[_0x72a0('0x2e')][_0x72a0('0x4f')]({'raw':![],'where':{'VoiceQueueId':_0x143410[_0x72a0('0x48')]['id']},'attributes':[[db[_0x72a0('0x50')]['fn'](_0x72a0('0x51'),db['sequelize']['fn']('IF',db[_0x72a0('0x50')][_0x72a0('0x52')]('`state`\x20=\x200,\x201,\x20null'))),'noSuchContacts'],[db[_0x72a0('0x50')]['fn'](_0x72a0('0x51'),db[_0x72a0('0x50')]['fn']('IF',db[_0x72a0('0x50')][_0x72a0('0x52')](_0x72a0('0x53')))),_0x72a0('0x54')],[db[_0x72a0('0x50')]['fn']('COUNT',db[_0x72a0('0x50')]['fn']('IF',db['sequelize']['literal']('`state`\x20=\x205,\x201,\x20null'))),_0x72a0('0x55')],[db[_0x72a0('0x50')]['fn']('COUNT',db[_0x72a0('0x50')]['fn']('IF',db['sequelize'][_0x72a0('0x52')]('`state`\x20=\x208,\x201,\x20null'))),'congestionContacts'],[db[_0x72a0('0x50')]['fn'](_0x72a0('0x51'),db['sequelize']['fn']('IF',db[_0x72a0('0x50')]['literal'](_0x72a0('0x56')))),'dropContacts'],[db['sequelize']['fn'](_0x72a0('0x51'),db[_0x72a0('0x50')]['fn']('IF',db[_0x72a0('0x50')]['literal']('`state`\x20=\x2011\x20,\x201,\x20null'))),_0x72a0('0x57')],[db['sequelize']['fn'](_0x72a0('0x51'),db[_0x72a0('0x50')]['fn']('IF',db[_0x72a0('0x50')][_0x72a0('0x52')](_0x72a0('0x58')))),_0x72a0('0x59')],[db[_0x72a0('0x50')]['fn'](_0x72a0('0x51'),db[_0x72a0('0x50')]['fn']('IF',db[_0x72a0('0x50')][_0x72a0('0x52')](_0x72a0('0x5a')))),'answeringMachine']]})[_0x72a0('0x28')](handleEntityNotFound(_0x595243,null))['then'](respondWithResult(_0x595243,null))['catch'](handleError(_0x595243,null));};exports['countContactsIvrCampaignHopperFinal']=function(_0x522ee2,_0x237025,_0x4e5d05){return db[_0x72a0('0x2e')]['findAll']({'raw':![],'where':{'CampaignId':_0x522ee2[_0x72a0('0x48')]['id']},'attributes':[[db['sequelize']['fn'](_0x72a0('0x51'),db[_0x72a0('0x50')]['fn']('IF',db['sequelize'][_0x72a0('0x52')](_0x72a0('0x5b')))),_0x72a0('0x5c')],[db[_0x72a0('0x50')]['fn']('COUNT',db[_0x72a0('0x50')]['fn']('IF',db['sequelize'][_0x72a0('0x52')](_0x72a0('0x53')))),_0x72a0('0x54')],[db['sequelize']['fn'](_0x72a0('0x51'),db[_0x72a0('0x50')]['fn']('IF',db[_0x72a0('0x50')][_0x72a0('0x52')](_0x72a0('0x5d')))),'busyContacts'],[db['sequelize']['fn'](_0x72a0('0x51'),db['sequelize']['fn']('IF',db[_0x72a0('0x50')]['literal'](_0x72a0('0x5e')))),_0x72a0('0x5f')],[db['sequelize']['fn'](_0x72a0('0x51'),db[_0x72a0('0x50')]['fn']('IF',db[_0x72a0('0x50')]['literal'](_0x72a0('0x56')))),'dropContacts'],[db[_0x72a0('0x50')]['fn'](_0x72a0('0x51'),db['sequelize']['fn']('IF',db[_0x72a0('0x50')]['literal']('`state`\x20=\x2011\x20,\x201,\x20null'))),'abandonedContacts'],[db[_0x72a0('0x50')]['fn']('COUNT',db[_0x72a0('0x50')]['fn']('IF',db['sequelize'][_0x72a0('0x52')](_0x72a0('0x58')))),_0x72a0('0x59')],[db['sequelize']['fn'](_0x72a0('0x51'),db[_0x72a0('0x50')]['fn']('IF',db[_0x72a0('0x50')][_0x72a0('0x52')](_0x72a0('0x5a')))),'answeringMachine']]})[_0x72a0('0x28')](handleEntityNotFound(_0x237025,null))[_0x72a0('0x28')](respondWithResult(_0x237025,null))[_0x72a0('0x46')](handleError(_0x237025,null));};exports[_0x72a0('0x60')]=function(_0x4f0944,_0x3dd25d,_0x647e75){return db['VoiceQueue'][_0x72a0('0x4e')]({'where':{'id':_0x4f0944['params']['id']}})[_0x72a0('0x28')](handleEntityNotFound(_0x3dd25d,null))[_0x72a0('0x28')](function(_0xb17e09){var _0x1238a3;if(_0xb17e09){_0x1238a3=squel[_0x72a0('0x61')]()[_0x72a0('0x62')](_0x72a0('0x63'))['fromQuery'](['phone','scheduledAt',_0x72a0('0x64'),_0x72a0('0x65'),_0x72a0('0x66'),_0x72a0('0x67'),_0x72a0('0x68')],squel[_0x72a0('0x69')]()['field'](_0x72a0('0x6a'),_0x72a0('0x6b'))[_0x72a0('0x6c')](_0x72a0('0x6d'),_0x72a0('0x6e'))[_0x72a0('0x6c')](_0x72a0('0x6f'),'ContactId')[_0x72a0('0x6c')](_0x72a0('0x70'),_0x72a0('0x65'))[_0x72a0('0x6c')](_0x72a0('0x71'),_0x72a0('0x66'))['field'](_0x72a0('0x6d'),'createdAt')[_0x72a0('0x6c')](_0x72a0('0x6d'),_0x72a0('0x68'))[_0x72a0('0x72')](_0x72a0('0x73'))['where'](_0x72a0('0x74'),_0x4f0944[_0x72a0('0x48')]['id']['toString']())[_0x72a0('0x3e')](_0x72a0('0x75'),_0x4f0944[_0x72a0('0x4c')][_0x72a0('0x76')]['toString']())[_0x72a0('0x3e')](_0x72a0('0x77'))[_0x72a0('0x3e')](_0x72a0('0x78'),squel[_0x72a0('0x69')]()[_0x72a0('0x6c')](_0x72a0('0x6b'))[_0x72a0('0x72')](_0x72a0('0x63'))[_0x72a0('0x3e')](_0x72a0('0x74'),_0x4f0944[_0x72a0('0x48')]['id']['toString']()))[_0x72a0('0x3e')](_0x72a0('0x78'),squel[_0x72a0('0x69')]()[_0x72a0('0x6c')](_0x72a0('0x79'))[_0x72a0('0x72')](_0x72a0('0x73'))[_0x72a0('0x3e')]('VoiceQueueId\x20=\x20?',_0x4f0944[_0x72a0('0x48')]['id']['toString']())['where'](_0x72a0('0x7a')))['group']('ContactId'))[_0x72a0('0x7b')]();return db['sequelize'][_0x72a0('0x33')](_0x1238a3);}return[];})[_0x72a0('0x28')](respondWithResult(_0x3dd25d,null))[_0x72a0('0x46')](handleError(_0x3dd25d,null));};exports['moveContactsIvrCampaignHopperFinal']=function(_0x344a69,_0x179ca2,_0x3832d7){return db[_0x72a0('0x7c')][_0x72a0('0x4e')]({'where':{'id':_0x344a69['params']['id']}})[_0x72a0('0x28')](handleEntityNotFound(_0x179ca2,null))[_0x72a0('0x28')](function(_0x38736e){var _0x4f421f;if(_0x38736e){_0x4f421f=squel[_0x72a0('0x61')]()[_0x72a0('0x62')](_0x72a0('0x63'))['fromQuery']([_0x72a0('0x6b'),_0x72a0('0x6e'),_0x72a0('0x64'),_0x72a0('0x65'),_0x72a0('0x7d'),_0x72a0('0x67'),_0x72a0('0x68')],squel[_0x72a0('0x69')]()[_0x72a0('0x6c')]('ANY_VALUE(calleridnum)',_0x72a0('0x6b'))[_0x72a0('0x6c')](_0x72a0('0x6d'),_0x72a0('0x6e'))[_0x72a0('0x6c')]('ANY_VALUE(ContactId)',_0x72a0('0x64'))[_0x72a0('0x6c')](_0x72a0('0x70'),_0x72a0('0x65'))['field'](_0x72a0('0x7e'),_0x72a0('0x7d'))[_0x72a0('0x6c')]('NOW()','createdAt')[_0x72a0('0x6c')](_0x72a0('0x6d'),_0x72a0('0x68'))[_0x72a0('0x72')](_0x72a0('0x73'))['where']('CampaignId\x20=\x20?',_0x344a69['params']['id'][_0x72a0('0x7b')]())['where'](_0x72a0('0x75'),_0x344a69['body']['state']['toString']())['where'](_0x72a0('0x77'))[_0x72a0('0x3e')](_0x72a0('0x78'),squel[_0x72a0('0x69')]()['field'](_0x72a0('0x6b'))[_0x72a0('0x72')]('cm_hopper')[_0x72a0('0x3e')](_0x72a0('0x7f'),_0x344a69['params']['id'][_0x72a0('0x7b')]()))[_0x72a0('0x3e')](_0x72a0('0x78'),squel[_0x72a0('0x69')]()['field']('calleridnum')[_0x72a0('0x72')](_0x72a0('0x73'))[_0x72a0('0x3e')](_0x72a0('0x7f'),_0x344a69[_0x72a0('0x48')]['id'][_0x72a0('0x7b')]())['where']('state\x20=\x204'))[_0x72a0('0x80')](_0x72a0('0x64')))['toString']();return db[_0x72a0('0x50')][_0x72a0('0x33')](_0x4f421f);}return[];})[_0x72a0('0x28')](respondWithResult(_0x179ca2,null))[_0x72a0('0x46')](handleError(_0x179ca2,null));};exports[_0x72a0('0x81')]=function(_0x167a80,_0x7533ea,_0x56bdf5){return db[_0x72a0('0x82')][_0x72a0('0x83')]({'where':{'VoiceQueueId':_0x167a80[_0x72a0('0x4c')]['VoiceQueueId'],'CampaignId':_0x167a80[_0x72a0('0x4c')][_0x72a0('0x7d')],'ContactId':_0x167a80[_0x72a0('0x4c')][_0x72a0('0x64')]}})[_0x72a0('0x28')](handleEntityNotFound(_0x7533ea,null))['then'](function(_0xc16765){if(_0xc16765){return _0xc16765;}return null;})[_0x72a0('0x28')](respondWithResult(_0x7533ea,null))[_0x72a0('0x46')](handleError(_0x7533ea,null));};
\ No newline at end of file
index 73a9eed..3831ed4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3246=['bluebird','request-promise','rimraf','./cmHopperFinal.attributes','exports','define','CmHopperFinal','cm_hopper_final','calleridnum','uniqueid','util','../../config/logger','api'];(function(_0x3e44fa,_0x75ed2a){var _0x2a0aba=function(_0x1db6a7){while(--_0x1db6a7){_0x3e44fa['push'](_0x3e44fa['shift']());}};_0x2a0aba(++_0x75ed2a);}(_0x3246,0x72));var _0x6324=function(_0x54738a,_0xf35ebb){_0x54738a=_0x54738a-0x0;var _0x3ffdd4=_0x3246[_0x54738a];return _0x3ffdd4;};'use strict';var _=require('lodash');var util=require(_0x6324('0x0'));var logger=require(_0x6324('0x1'))(_0x6324('0x2'));var moment=require('moment');var BPromise=require(_0x6324('0x3'));var rp=require(_0x6324('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x6324('0x5'));var config=require('../../config/environment');var attributes=require(_0x6324('0x6'));module[_0x6324('0x7')]=function(_0x4af0fc,_0x447f10){return _0x4af0fc[_0x6324('0x8')](_0x6324('0x9'),attributes,{'tableName':_0x6324('0xa'),'paranoid':![],'indexes':[{'name':_0x6324('0xb'),'fields':[_0x6324('0xb')]},{'name':_0x6324('0xc'),'fields':[_0x6324('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x79d1=['path','rimraf','../../config/environment','./cmHopperFinal.attributes','CmHopperFinal','calleridnum','uniqueid','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x4d3f5e,_0x2c3ef3){var _0x2ebb3c=function(_0x153338){while(--_0x153338){_0x4d3f5e['push'](_0x4d3f5e['shift']());}};_0x2ebb3c(++_0x2c3ef3);}(_0x79d1,0x180));var _0x179d=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0x79d1[_0x40a045];return _0x1a687c;};'use strict';var _=require(_0x179d('0x0'));var util=require(_0x179d('0x1'));var logger=require(_0x179d('0x2'))(_0x179d('0x3'));var moment=require(_0x179d('0x4'));var BPromise=require(_0x179d('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x179d('0x6'));var rimraf=require(_0x179d('0x7'));var config=require(_0x179d('0x8'));var attributes=require(_0x179d('0x9'));module['exports']=function(_0x2ede91,_0xfd2019){return _0x2ede91['define'](_0x179d('0xa'),attributes,{'tableName':'cm_hopper_final','paranoid':![],'indexes':[{'name':'calleridnum','fields':[_0x179d('0xb')]},{'name':_0x179d('0xc'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index cb1ddf3..47da461 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['../../config/environment','jayson/promise','http','info','CmHopperFinal,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch','CmHopperFinal','create','body','options','raw','CreateCmHopperFinal','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc'];(function(_0x40c802,_0x4e896c){var _0x2ed275=function(_0x206652){while(--_0x206652){_0x40c802['push'](_0x40c802['shift']());}};_0x2ed275(++_0x4e896c);}(_0x7a54,0x106));var _0x47a5=function(_0x1ce23f,_0x5ae2e9){_0x1ce23f=_0x1ce23f-0x0;var _0x22a1fe=_0x7a54[_0x1ce23f];return _0x22a1fe;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var moment=require(_0x47a5('0x2'));var BPromise=require('bluebird');var rs=require(_0x47a5('0x3'));var fs=require('fs');var Redis=require(_0x47a5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x47a5('0x5'));var logger=require(_0x47a5('0x6'))(_0x47a5('0x7'));var config=require(_0x47a5('0x8'));var jayson=require(_0x47a5('0x9'));var client=jayson['client'][_0x47a5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x59199c,_0x343372,_0x30e405){return new BPromise(function(_0x506eda,_0x194fb0){return client['request'](_0x59199c,_0x30e405)['then'](function(_0x582352){logger[_0x47a5('0xb')](_0x47a5('0xc'),_0x343372,'request\x20sent');logger[_0x47a5('0xd')]('CmHopperFinal,\x20%s,\x20%s,\x20%s',_0x343372,'request\x20sent',JSON[_0x47a5('0xe')](_0x582352));if(_0x582352[_0x47a5('0xf')]){if(_0x582352[_0x47a5('0xf')][_0x47a5('0x10')]===0x1f4){logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')]['message']);return _0x194fb0(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);return _0x506eda(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}else{logger['info'](_0x47a5('0xc'),_0x343372,_0x47a5('0x12'));_0x506eda(_0x582352[_0x47a5('0x13')][_0x47a5('0x11')]);}})[_0x47a5('0x14')](function(_0x574af6){logger['error'](_0x47a5('0xc'),_0x343372,_0x574af6);_0x194fb0(_0x574af6);});});}exports['CreateCmHopperFinal']=function(_0x5247fd){var _0x423a81=this;return new Promise(function(_0xaf70a6,_0x2ce454){return db[_0x47a5('0x15')][_0x47a5('0x16')](_0x5247fd[_0x47a5('0x17')],{'raw':_0x5247fd[_0x47a5('0x18')]?_0x5247fd[_0x47a5('0x18')][_0x47a5('0x19')]===undefined?!![]:![]:!![]})['then'](function(_0x1570bc){logger[_0x47a5('0xb')]('CreateCmHopperFinal',_0x5247fd);logger[_0x47a5('0xd')](_0x47a5('0x1a'),_0x5247fd,JSON[_0x47a5('0xe')](_0x1570bc));_0xaf70a6(_0x1570bc);})['catch'](function(_0xb8ae6c){logger[_0x47a5('0xf')](_0x47a5('0x1a'),_0xb8ae6c[_0x47a5('0x11')],_0x5247fd);_0x2ce454(_0x423a81['error'](0x1f4,_0xb8ae6c[_0x47a5('0x11')]));});});};
\ No newline at end of file
+var _0xb10b=['debug','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','CmHopperFinal,\x20%s,\x20%s','CmHopperFinal,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','CreateCmHopperFinal','CmHopperFinal','create','options','raw'];(function(_0x276fcf,_0x127741){var _0x2ac6ef=function(_0x471a5a){while(--_0x471a5a){_0x276fcf['push'](_0x276fcf['shift']());}};_0x2ac6ef(++_0x127741);}(_0xb10b,0x12a));var _0xbb10=function(_0x3dac28,_0x345de7){_0x3dac28=_0x3dac28-0x0;var _0x139e69=_0xb10b[_0x3dac28];return _0x139e69;};'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 815b36b..0962c9b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdfcf=['/voice/queue/countAttributes/:id','countContactsQueueCampaignHopperFinal','countContactsIvrCampaignHopperFinal','post','/voice/queue/moveContacts/:id','moveContactsQueueCampaignHopperFinal','/voice/campaign/moveContacts/:id','/checkContactHopper','checkContactHopper','put','update','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperFinal.controller','get','isAuthenticated','index','/describe','describe','/:id','show'];(function(_0x4914e2,_0x48be8f){var _0x2dcd07=function(_0x1a2565){while(--_0x1a2565){_0x4914e2['push'](_0x4914e2['shift']());}};_0x2dcd07(++_0x48be8f);}(_0xdfcf,0x185));var _0xfdfc=function(_0x11ce46,_0x177a85){_0x11ce46=_0x11ce46-0x0;var _0x368a1e=_0xdfcf[_0x11ce46];return _0x368a1e;};'use strict';var multer=require('multer');var util=require(_0xfdfc('0x0'));var path=require(_0xfdfc('0x1'));var timeout=require(_0xfdfc('0x2'));var express=require(_0xfdfc('0x3'));var router=express[_0xfdfc('0x4')]();var fs_extra=require(_0xfdfc('0x5'));var auth=require(_0xfdfc('0x6'));var interaction=require(_0xfdfc('0x7'));var config=require(_0xfdfc('0x8'));var controller=require(_0xfdfc('0x9'));router[_0xfdfc('0xa')]('/',auth[_0xfdfc('0xb')](),controller[_0xfdfc('0xc')]);router[_0xfdfc('0xa')](_0xfdfc('0xd'),auth[_0xfdfc('0xb')](),controller[_0xfdfc('0xe')]);router['get'](_0xfdfc('0xf'),auth[_0xfdfc('0xb')](),controller[_0xfdfc('0x10')]);router[_0xfdfc('0xa')](_0xfdfc('0x11'),auth['isAuthenticated'](),controller[_0xfdfc('0x12')]);router[_0xfdfc('0xa')]('/campaign/countAttributes/:id',auth[_0xfdfc('0xb')](),controller[_0xfdfc('0x13')]);router[_0xfdfc('0x14')](_0xfdfc('0x15'),auth['isAuthenticated'](),controller[_0xfdfc('0x16')]);router[_0xfdfc('0x14')](_0xfdfc('0x17'),auth[_0xfdfc('0xb')](),controller['moveContactsIvrCampaignHopperFinal']);router[_0xfdfc('0x14')](_0xfdfc('0x18'),auth[_0xfdfc('0xb')](),controller[_0xfdfc('0x19')]);router[_0xfdfc('0x1a')](_0xfdfc('0xf'),auth[_0xfdfc('0xb')](),controller[_0xfdfc('0x1b')]);module[_0xfdfc('0x1c')]=router;
\ No newline at end of file
+var _0xa91a=['post','/voice/queue/moveContacts/:id','moveContactsQueueCampaignHopperFinal','moveContactsIvrCampaignHopperFinal','checkContactHopper','put','update','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperFinal.controller','get','isAuthenticated','index','/describe','describe','/:id','countContactsQueueCampaignHopperFinal','/campaign/countAttributes/:id','countContactsIvrCampaignHopperFinal'];(function(_0x231dda,_0x5b04cc){var _0x3f88cb=function(_0x16eb77){while(--_0x16eb77){_0x231dda['push'](_0x231dda['shift']());}};_0x3f88cb(++_0x5b04cc);}(_0xa91a,0x167));var _0xaa91=function(_0x10c4f1,_0x4c9553){_0x10c4f1=_0x10c4f1-0x0;var _0x4aa000=_0xa91a[_0x10c4f1];return _0x4aa000;};'use strict';var multer=require('multer');var util=require(_0xaa91('0x0'));var path=require(_0xaa91('0x1'));var timeout=require(_0xaa91('0x2'));var express=require(_0xaa91('0x3'));var router=express[_0xaa91('0x4')]();var fs_extra=require(_0xaa91('0x5'));var auth=require(_0xaa91('0x6'));var interaction=require(_0xaa91('0x7'));var config=require(_0xaa91('0x8'));var controller=require(_0xaa91('0x9'));router[_0xaa91('0xa')]('/',auth[_0xaa91('0xb')](),controller[_0xaa91('0xc')]);router[_0xaa91('0xa')](_0xaa91('0xd'),auth[_0xaa91('0xb')](),controller[_0xaa91('0xe')]);router[_0xaa91('0xa')](_0xaa91('0xf'),auth[_0xaa91('0xb')](),controller['show']);router[_0xaa91('0xa')]('/voice/queue/countAttributes/:id',auth[_0xaa91('0xb')](),controller[_0xaa91('0x10')]);router[_0xaa91('0xa')](_0xaa91('0x11'),auth[_0xaa91('0xb')](),controller[_0xaa91('0x12')]);router[_0xaa91('0x13')](_0xaa91('0x14'),auth[_0xaa91('0xb')](),controller[_0xaa91('0x15')]);router['post']('/voice/campaign/moveContacts/:id',auth[_0xaa91('0xb')](),controller[_0xaa91('0x16')]);router[_0xaa91('0x13')]('/checkContactHopper',auth[_0xaa91('0xb')](),controller[_0xaa91('0x17')]);router[_0xaa91('0x18')]('/:id',auth[_0xaa91('0xb')](),controller[_0xaa91('0x19')]);module[_0xaa91('0x1a')]=router;
\ No newline at end of file
index b1d4be6..e7f270d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a6a=['INTEGER','DATE','BOOLEAN','sequelize','STRING'];(function(_0x4dd63a,_0x1464a5){var _0xc80f1b=function(_0x4628c4){while(--_0x4628c4){_0x4dd63a['push'](_0x4dd63a['shift']());}};_0xc80f1b(++_0x1464a5);}(_0x5a6a,0x170));var _0xa5a6=function(_0x22bc2b,_0xb2deee){_0x22bc2b=_0x22bc2b-0x0;var _0x2b652a=_0x5a6a[_0x22bc2b];return _0x2b652a;};'use strict';var Sequelize=require(_0xa5a6('0x0'));module['exports']={'state':{'type':Sequelize['INTEGER'](0x2)},'statedesc':{'type':Sequelize[_0xa5a6('0x1')]},'scheduledat':{'type':Sequelize['DATE']},'countbusyretry':{'type':Sequelize[_0xa5a6('0x2')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0xa5a6('0x2')],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0xa5a6('0x2')],'defaultValue':0x0},'uniqueid':{'type':Sequelize['STRING']},'originatecalleridnum':{'type':Sequelize['STRING']},'originatecalleridname':{'type':Sequelize[_0xa5a6('0x1')]},'calleridnum':{'type':Sequelize[_0xa5a6('0x1')]},'calleridname':{'type':Sequelize[_0xa5a6('0x1')]},'starttime':{'type':Sequelize[_0xa5a6('0x3')]},'responsetime':{'type':Sequelize[_0xa5a6('0x3')]},'answertime':{'type':Sequelize[_0xa5a6('0x3')]},'droptime':{'type':Sequelize[_0xa5a6('0x3')]},'endtime':{'type':Sequelize[_0xa5a6('0x3')]},'ringtime':{'type':Sequelize[_0xa5a6('0x2')],'defaultValue':0x0},'holdtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'talktime':{'type':Sequelize[_0xa5a6('0x2')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0xa5a6('0x2')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0xa5a6('0x1')]},'campaign':{'type':Sequelize['STRING']},'campaigntype':{'type':Sequelize[_0xa5a6('0x1')]},'membername':{'type':Sequelize[_0xa5a6('0x1')]},'reason':{'type':Sequelize['STRING']},'amd':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'fax':{'type':Sequelize[_0xa5a6('0x4')],'defaultValue':![]},'callback':{'type':Sequelize[_0xa5a6('0x4')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0xa5a6('0x1')],'defaultValue':null},'callbackat':{'type':Sequelize[_0xa5a6('0x3')]},'recallme':{'type':Sequelize[_0xa5a6('0x4')],'defaultValue':![]},'editedat':{'type':Sequelize[_0xa5a6('0x3')]},'edited':{'type':Sequelize[_0xa5a6('0x4')],'defaultValue':![]},'countnosuchnumberretry':{'type':Sequelize[_0xa5a6('0x2')],'defaultValue':0x0},'countdropretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0xa5a6('0x2')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0xa5a6('0x2')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0xa5a6('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x43c1=['DATE','BOOLEAN','sequelize','exports','INTEGER','STRING'];(function(_0x3f477c,_0x52b7ff){var _0x4c36b3=function(_0x3b47bb){while(--_0x3b47bb){_0x3f477c['push'](_0x3f477c['shift']());}};_0x4c36b3(++_0x52b7ff);}(_0x43c1,0xb6));var _0x143c=function(_0x5e21c3,_0xf76965){_0x5e21c3=_0x5e21c3-0x0;var _0x2b728f=_0x43c1[_0x5e21c3];return _0x2b728f;};'use strict';var Sequelize=require(_0x143c('0x0'));module[_0x143c('0x1')]={'state':{'type':Sequelize[_0x143c('0x2')](0x2)},'statedesc':{'type':Sequelize[_0x143c('0x3')]},'scheduledat':{'type':Sequelize['DATE']},'countbusyretry':{'type':Sequelize[_0x143c('0x2')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x143c('0x2')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x143c('0x2')],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x143c('0x2')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0x143c('0x3')]},'originatecalleridnum':{'type':Sequelize[_0x143c('0x3')]},'originatecalleridname':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0x143c('0x3')]},'calleridname':{'type':Sequelize[_0x143c('0x3')]},'starttime':{'type':Sequelize[_0x143c('0x4')]},'responsetime':{'type':Sequelize[_0x143c('0x4')]},'answertime':{'type':Sequelize['DATE']},'droptime':{'type':Sequelize[_0x143c('0x4')]},'endtime':{'type':Sequelize[_0x143c('0x4')]},'ringtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0x143c('0x2')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0x143c('0x2')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0x143c('0x2')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0x143c('0x3')]},'campaign':{'type':Sequelize['STRING']},'campaigntype':{'type':Sequelize[_0x143c('0x3')]},'membername':{'type':Sequelize[_0x143c('0x3')]},'reason':{'type':Sequelize[_0x143c('0x3')]},'amd':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'fax':{'type':Sequelize[_0x143c('0x5')],'defaultValue':![]},'callback':{'type':Sequelize[_0x143c('0x5')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x143c('0x3')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x143c('0x4')]},'recallme':{'type':Sequelize[_0x143c('0x5')],'defaultValue':![]},'editedat':{'type':Sequelize['DATE']},'edited':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'countnosuchnumberretry':{'type':Sequelize[_0x143c('0x2')],'defaultValue':0x0},'countdropretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x143c('0x2')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x143c('0x2')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x143c('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 6ccb54a..7575964 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x38bb=['save','update','then','error','stack','name','send','index','map','CmHopperHistory','rawAttributes','fieldName','type','key','model','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','includeAll','findAll','rows','catch','show','params','keys','include','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','count','Content-Range','apply','reject'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x38bb,0xcc));var _0xb38b=function(_0x530950,_0x355068){_0x530950=_0x530950-0x0;var _0x30a1f3=_0x38bb[_0x530950];return _0x30a1f3;};'use strict';var emlformat=require(_0xb38b('0x0'));var rimraf=require(_0xb38b('0x1'));var zipdir=require(_0xb38b('0x2'));var jsonpatch=require(_0xb38b('0x3'));var rp=require(_0xb38b('0x4'));var moment=require(_0xb38b('0x5'));var BPromise=require(_0xb38b('0x6'));var Mustache=require(_0xb38b('0x7'));var util=require(_0xb38b('0x8'));var path=require(_0xb38b('0x9'));var sox=require(_0xb38b('0xa'));var csv=require(_0xb38b('0xb'));var ejs=require(_0xb38b('0xc'));var fs=require('fs');var fs_extra=require(_0xb38b('0xd'));var _=require(_0xb38b('0xe'));var squel=require(_0xb38b('0xf'));var crypto=require(_0xb38b('0x10'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xb38b('0x11'));var Papa=require(_0xb38b('0x12'));var Redis=require(_0xb38b('0x13'));var authService=require(_0xb38b('0x14'));var qs=require(_0xb38b('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xb38b('0x16'));var logger=require(_0xb38b('0x17'))(_0xb38b('0x18'));var utils=require(_0xb38b('0x19'));var config=require(_0xb38b('0x1a'));var licenseUtil=require(_0xb38b('0x1b'));var db=require(_0xb38b('0x1c'))['db'];function respondWithStatusCode(_0x2d120f,_0x1a6c54){_0x1a6c54=_0x1a6c54||0xcc;return function(_0x9be4ed){if(_0x9be4ed){return _0x2d120f[_0xb38b('0x1d')](_0x1a6c54);}return _0x2d120f[_0xb38b('0x1e')](_0x1a6c54)[_0xb38b('0x1f')]();};}function respondWithResult(_0xb2bd5d,_0x53b436){_0x53b436=_0x53b436||0xc8;return function(_0x201ded){if(_0x201ded){return _0xb2bd5d[_0xb38b('0x1e')](_0x53b436)[_0xb38b('0x20')](_0x201ded);}};}function respondWithFilteredResult(_0x1f4df9,_0x1dfdf8){return function(_0x1e1981){if(_0x1e1981){var _0x518e37=typeof _0x1dfdf8[_0xb38b('0x21')]==='undefined'&&typeof _0x1dfdf8[_0xb38b('0x22')]==='undefined';var _0x498e1b=_0x1e1981[_0xb38b('0x23')];var _0x9ffa5a=_0x518e37?0x0:_0x1dfdf8[_0xb38b('0x21')];var _0x1d5eb0=_0x518e37?_0x1e1981[_0xb38b('0x23')]:_0x1dfdf8[_0xb38b('0x21')]+_0x1dfdf8[_0xb38b('0x22')];var _0x39cde5;if(_0x1d5eb0>=_0x498e1b){_0x1d5eb0=_0x498e1b;_0x39cde5=0xc8;}else{_0x39cde5=0xce;}_0x1f4df9[_0xb38b('0x1e')](_0x39cde5);return _0x1f4df9['set'](_0xb38b('0x24'),_0x9ffa5a+'-'+_0x1d5eb0+'/'+_0x498e1b)['json'](_0x1e1981);}return null;};}function patchUpdates(_0x1aebda){return function(_0xb98e1e){try{jsonpatch[_0xb38b('0x25')](_0xb98e1e,_0x1aebda,!![]);}catch(_0x1681d9){return BPromise[_0xb38b('0x26')](_0x1681d9);}return _0xb98e1e[_0xb38b('0x27')]();};}function saveUpdates(_0x279293,_0xba97b9){return function(_0x293c6d){if(_0x293c6d){return _0x293c6d[_0xb38b('0x28')](_0x279293)[_0xb38b('0x29')](function(_0x1ab2ad){return _0x1ab2ad;});}return null;};}function removeEntity(_0x59ab90,_0x3620d2){return function(_0x5c4eee){if(_0x5c4eee){return _0x5c4eee['destroy']()[_0xb38b('0x29')](function(){_0x59ab90[_0xb38b('0x1e')](0xcc)[_0xb38b('0x1f')]();});}};}function handleEntityNotFound(_0x246767,_0x1d7f3b){return function(_0x460992){if(!_0x460992){_0x246767[_0xb38b('0x1d')](0x194);}return _0x460992;};}function handleError(_0x27ac79,_0x2c9473){_0x2c9473=_0x2c9473||0x1f4;return function(_0x50bbe0){logger[_0xb38b('0x2a')](_0x50bbe0[_0xb38b('0x2b')]);if(_0x50bbe0[_0xb38b('0x2c')]){delete _0x50bbe0[_0xb38b('0x2c')];}_0x27ac79[_0xb38b('0x1e')](_0x2c9473)[_0xb38b('0x2d')](_0x50bbe0);};}exports[_0xb38b('0x2e')]=function(_0x47a1de,_0x5235c1){var _0x16517e={},_0xcfd641={},_0x2ffb6a={'count':0x0,'rows':[]};var _0x105714=_[_0xb38b('0x2f')](db[_0xb38b('0x30')][_0xb38b('0x31')],function(_0x28aeb2){return{'name':_0x28aeb2[_0xb38b('0x32')],'type':_0x28aeb2[_0xb38b('0x33')][_0xb38b('0x34')]};});_0xcfd641[_0xb38b('0x35')]=_[_0xb38b('0x2f')](_0x105714,_0xb38b('0x2c'));_0xcfd641['query']=_['keys'](_0x47a1de['query']);_0xcfd641['filters']=_[_0xb38b('0x36')](_0xcfd641[_0xb38b('0x35')],_0xcfd641[_0xb38b('0x37')]);_0x16517e[_0xb38b('0x38')]=_[_0xb38b('0x36')](_0xcfd641[_0xb38b('0x35')],qs['fields'](_0x47a1de[_0xb38b('0x37')][_0xb38b('0x39')]));_0x16517e['attributes']=_0x16517e[_0xb38b('0x38')][_0xb38b('0x3a')]?_0x16517e[_0xb38b('0x38')]:_0xcfd641['model'];if(!_0x47a1de[_0xb38b('0x37')][_0xb38b('0x3b')](_0xb38b('0x3c'))){_0x16517e[_0xb38b('0x22')]=qs[_0xb38b('0x22')](_0x47a1de['query'][_0xb38b('0x22')]);_0x16517e[_0xb38b('0x21')]=qs[_0xb38b('0x21')](_0x47a1de[_0xb38b('0x37')]['offset']);}_0x16517e[_0xb38b('0x3d')]=qs[_0xb38b('0x3e')](_0x47a1de['query'][_0xb38b('0x3e')]);_0x16517e[_0xb38b('0x3f')]=qs[_0xb38b('0x40')](_[_0xb38b('0x41')](_0x47a1de['query'],_0xcfd641[_0xb38b('0x40')]),_0x105714);if(_0x47a1de[_0xb38b('0x37')][_0xb38b('0x42')]){_0x16517e['where']=_[_0xb38b('0x43')](_0x16517e['where'],{'$or':_['map'](_0x105714,function(_0x320f90){if(_0x320f90['type']!==_0xb38b('0x44')){var _0x465dbd={};_0x465dbd[_0x320f90[_0xb38b('0x2c')]]={'$like':'%'+_0x47a1de['query'][_0xb38b('0x42')]+'%'};return _0x465dbd;}})});}_0x16517e=_[_0xb38b('0x43')]({},_0x16517e,_0x47a1de['options']);var _0x5b0ae5={'where':_0x16517e[_0xb38b('0x3f')]};return db[_0xb38b('0x30')][_0xb38b('0x23')](_0x5b0ae5)[_0xb38b('0x29')](function(_0xb4a857){_0x2ffb6a[_0xb38b('0x23')]=_0xb4a857;if(_0x47a1de['query'][_0xb38b('0x45')]){_0x16517e['include']=[{'all':!![]}];}return db[_0xb38b('0x30')][_0xb38b('0x46')](_0x16517e);})[_0xb38b('0x29')](function(_0x2536c4){_0x2ffb6a[_0xb38b('0x47')]=_0x2536c4;return _0x2ffb6a;})[_0xb38b('0x29')](respondWithFilteredResult(_0x5235c1,_0x16517e))[_0xb38b('0x48')](handleError(_0x5235c1,null));};exports[_0xb38b('0x49')]=function(_0x3b978c,_0x3a60a6){var _0x5215a7={'raw':!![],'where':{'id':_0x3b978c[_0xb38b('0x4a')]['id']}},_0x5ef5f7={};_0x5ef5f7['model']=_[_0xb38b('0x4b')](db[_0xb38b('0x30')]['rawAttributes']);_0x5ef5f7[_0xb38b('0x37')]=_[_0xb38b('0x4b')](_0x3b978c[_0xb38b('0x37')]);_0x5ef5f7[_0xb38b('0x40')]=_[_0xb38b('0x36')](_0x5ef5f7['model'],_0x5ef5f7[_0xb38b('0x37')]);_0x5215a7[_0xb38b('0x38')]=_[_0xb38b('0x36')](_0x5ef5f7['model'],qs[_0xb38b('0x39')](_0x3b978c['query']['fields']));_0x5215a7[_0xb38b('0x38')]=_0x5215a7[_0xb38b('0x38')][_0xb38b('0x3a')]?_0x5215a7[_0xb38b('0x38')]:_0x5ef5f7[_0xb38b('0x35')];if(_0x3b978c[_0xb38b('0x37')][_0xb38b('0x45')]){_0x5215a7[_0xb38b('0x4c')]=[{'all':!![]}];}_0x5215a7=_[_0xb38b('0x43')]({},_0x5215a7,_0x3b978c['options']);return db[_0xb38b('0x30')][_0xb38b('0x4d')](_0x5215a7)['then'](handleEntityNotFound(_0x3a60a6,null))['then'](respondWithResult(_0x3a60a6,null))[_0xb38b('0x48')](handleError(_0x3a60a6,null));};exports['create']=function(_0x3a99aa,_0x2a49f4){return db[_0xb38b('0x30')][_0xb38b('0x4e')](_0x3a99aa[_0xb38b('0x4f')],{})[_0xb38b('0x29')](respondWithResult(_0x2a49f4,0xc9))[_0xb38b('0x48')](handleError(_0x2a49f4,null));};exports[_0xb38b('0x50')]=function(_0x21f1fe,_0x4e4f39){return db[_0xb38b('0x30')][_0xb38b('0x50')]()[_0xb38b('0x29')](respondWithResult(_0x4e4f39,null))[_0xb38b('0x48')](handleError(_0x4e4f39,null));};exports[_0xb38b('0x28')]=function(_0x21e4d6,_0x16f250){if(_0x21e4d6[_0xb38b('0x4f')]['uniqueid']){delete _0x21e4d6[_0xb38b('0x4f')]['uniqueid'];}return db[_0xb38b('0x30')][_0xb38b('0x4d')]({'where':{'uniqueid':_0x21e4d6[_0xb38b('0x4a')]['id']}})[_0xb38b('0x29')](handleEntityNotFound(_0x16f250,null))[_0xb38b('0x29')](saveUpdates(_0x21e4d6[_0xb38b('0x4f')],null))[_0xb38b('0x29')](respondWithResult(_0x16f250,null))[_0xb38b('0x48')](handleError(_0x16f250,null));};
\ No newline at end of file
+var _0x3897=['../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','count','offset','limit','set','Content-Range','apply','stack','name','CmHopperHistory','rawAttributes','fieldName','type','key','map','query','filters','intersection','fields','attributes','length','model','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','then','rows','catch','params','keys','options','find','create','describe','update','body','uniqueid','eml-format','rimraf','zip-dir','request-promise','mustache','util','path','to-csv','ejs','fs-extra','lodash','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils'];(function(_0x2e4e19,_0x493b50){var _0x9ba20b=function(_0x2f6456){while(--_0x2f6456){_0x2e4e19['push'](_0x2e4e19['shift']());}};_0x9ba20b(++_0x493b50);}(_0x3897,0xc2));var _0x7389=function(_0x5a26f5,_0x196300){_0x5a26f5=_0x5a26f5-0x0;var _0x2e9ef7=_0x3897[_0x5a26f5];return _0x2e9ef7;};'use strict';var emlformat=require(_0x7389('0x0'));var rimraf=require(_0x7389('0x1'));var zipdir=require(_0x7389('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x7389('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x7389('0x4'));var util=require(_0x7389('0x5'));var path=require(_0x7389('0x6'));var sox=require('sox');var csv=require(_0x7389('0x7'));var ejs=require(_0x7389('0x8'));var fs=require('fs');var fs_extra=require(_0x7389('0x9'));var _=require(_0x7389('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x7389('0xb'));var toCsv=require(_0x7389('0x7'));var querystring=require(_0x7389('0xc'));var Papa=require(_0x7389('0xd'));var Redis=require(_0x7389('0xe'));var authService=require(_0x7389('0xf'));var qs=require(_0x7389('0x10'));var as=require(_0x7389('0x11'));var hardwareService=require(_0x7389('0x12'));var logger=require(_0x7389('0x13'))(_0x7389('0x14'));var utils=require(_0x7389('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x7389('0x16'));var db=require(_0x7389('0x17'))['db'];function respondWithStatusCode(_0xa6d49e,_0x30d2b2){_0x30d2b2=_0x30d2b2||0xcc;return function(_0x8c2ae9){if(_0x8c2ae9){return _0xa6d49e[_0x7389('0x18')](_0x30d2b2);}return _0xa6d49e[_0x7389('0x19')](_0x30d2b2)[_0x7389('0x1a')]();};}function respondWithResult(_0xc56fc7,_0x2e1e50){_0x2e1e50=_0x2e1e50||0xc8;return function(_0x1e8672){if(_0x1e8672){return _0xc56fc7['status'](_0x2e1e50)[_0x7389('0x1b')](_0x1e8672);}};}function respondWithFilteredResult(_0x1c7959,_0x54acf2){return function(_0x4ee60f){if(_0x4ee60f){var _0x1296c6=typeof _0x54acf2['offset']===_0x7389('0x1c')&&typeof _0x54acf2['limit']===_0x7389('0x1c');var _0x5efb2a=_0x4ee60f[_0x7389('0x1d')];var _0x5e2bbf=_0x1296c6?0x0:_0x54acf2[_0x7389('0x1e')];var _0x154767=_0x1296c6?_0x4ee60f['count']:_0x54acf2[_0x7389('0x1e')]+_0x54acf2[_0x7389('0x1f')];var _0x252eed;if(_0x154767>=_0x5efb2a){_0x154767=_0x5efb2a;_0x252eed=0xc8;}else{_0x252eed=0xce;}_0x1c7959['status'](_0x252eed);return _0x1c7959[_0x7389('0x20')](_0x7389('0x21'),_0x5e2bbf+'-'+_0x154767+'/'+_0x5efb2a)[_0x7389('0x1b')](_0x4ee60f);}return null;};}function patchUpdates(_0x25c502){return function(_0xe41aa3){try{jsonpatch[_0x7389('0x22')](_0xe41aa3,_0x25c502,!![]);}catch(_0x499adb){return BPromise['reject'](_0x499adb);}return _0xe41aa3['save']();};}function saveUpdates(_0x442b07,_0x4d93b2){return function(_0x241b73){if(_0x241b73){return _0x241b73['update'](_0x442b07)['then'](function(_0x328d11){return _0x328d11;});}return null;};}function removeEntity(_0x3d8abe,_0x43d4c1){return function(_0xfa1a7a){if(_0xfa1a7a){return _0xfa1a7a['destroy']()['then'](function(){_0x3d8abe[_0x7389('0x19')](0xcc)[_0x7389('0x1a')]();});}};}function handleEntityNotFound(_0x59740f,_0x2c1451){return function(_0x2cf24f){if(!_0x2cf24f){_0x59740f[_0x7389('0x18')](0x194);}return _0x2cf24f;};}function handleError(_0x5689cf,_0x5b54d3){_0x5b54d3=_0x5b54d3||0x1f4;return function(_0x5673ac){logger['error'](_0x5673ac[_0x7389('0x23')]);if(_0x5673ac[_0x7389('0x24')]){delete _0x5673ac['name'];}_0x5689cf[_0x7389('0x19')](_0x5b54d3)['send'](_0x5673ac);};}exports['index']=function(_0x5af943,_0x2668f5){var _0x1b2e71={},_0x2d97fd={},_0x3aae4e={'count':0x0,'rows':[]};var _0x80b556=_['map'](db[_0x7389('0x25')][_0x7389('0x26')],function(_0x2bff93){return{'name':_0x2bff93[_0x7389('0x27')],'type':_0x2bff93[_0x7389('0x28')][_0x7389('0x29')]};});_0x2d97fd['model']=_[_0x7389('0x2a')](_0x80b556,'name');_0x2d97fd[_0x7389('0x2b')]=_['keys'](_0x5af943[_0x7389('0x2b')]);_0x2d97fd[_0x7389('0x2c')]=_[_0x7389('0x2d')](_0x2d97fd['model'],_0x2d97fd['query']);_0x1b2e71['attributes']=_[_0x7389('0x2d')](_0x2d97fd['model'],qs['fields'](_0x5af943[_0x7389('0x2b')][_0x7389('0x2e')]));_0x1b2e71[_0x7389('0x2f')]=_0x1b2e71[_0x7389('0x2f')][_0x7389('0x30')]?_0x1b2e71['attributes']:_0x2d97fd[_0x7389('0x31')];if(!_0x5af943[_0x7389('0x2b')][_0x7389('0x32')]('nolimit')){_0x1b2e71['limit']=qs['limit'](_0x5af943['query'][_0x7389('0x1f')]);_0x1b2e71['offset']=qs[_0x7389('0x1e')](_0x5af943[_0x7389('0x2b')]['offset']);}_0x1b2e71[_0x7389('0x33')]=qs[_0x7389('0x34')](_0x5af943[_0x7389('0x2b')][_0x7389('0x34')]);_0x1b2e71[_0x7389('0x35')]=qs['filters'](_[_0x7389('0x36')](_0x5af943['query'],_0x2d97fd['filters']),_0x80b556);if(_0x5af943['query'][_0x7389('0x37')]){_0x1b2e71['where']=_[_0x7389('0x38')](_0x1b2e71['where'],{'$or':_[_0x7389('0x2a')](_0x80b556,function(_0x3abd59){if(_0x3abd59[_0x7389('0x28')]!==_0x7389('0x39')){var _0x572d78={};_0x572d78[_0x3abd59[_0x7389('0x24')]]={'$like':'%'+_0x5af943[_0x7389('0x2b')][_0x7389('0x37')]+'%'};return _0x572d78;}})});}_0x1b2e71=_[_0x7389('0x38')]({},_0x1b2e71,_0x5af943['options']);var _0xe2c6f9={'where':_0x1b2e71[_0x7389('0x35')]};return db[_0x7389('0x25')][_0x7389('0x1d')](_0xe2c6f9)['then'](function(_0xce7208){_0x3aae4e[_0x7389('0x1d')]=_0xce7208;if(_0x5af943[_0x7389('0x2b')][_0x7389('0x3a')]){_0x1b2e71[_0x7389('0x3b')]=[{'all':!![]}];}return db[_0x7389('0x25')]['findAll'](_0x1b2e71);})[_0x7389('0x3c')](function(_0x136fd4){_0x3aae4e[_0x7389('0x3d')]=_0x136fd4;return _0x3aae4e;})[_0x7389('0x3c')](respondWithFilteredResult(_0x2668f5,_0x1b2e71))[_0x7389('0x3e')](handleError(_0x2668f5,null));};exports['show']=function(_0x283aa7,_0xb03942){var _0x51c09e={'raw':!![],'where':{'id':_0x283aa7[_0x7389('0x3f')]['id']}},_0x3b2956={};_0x3b2956[_0x7389('0x31')]=_['keys'](db[_0x7389('0x25')][_0x7389('0x26')]);_0x3b2956[_0x7389('0x2b')]=_[_0x7389('0x40')](_0x283aa7[_0x7389('0x2b')]);_0x3b2956[_0x7389('0x2c')]=_[_0x7389('0x2d')](_0x3b2956[_0x7389('0x31')],_0x3b2956[_0x7389('0x2b')]);_0x51c09e[_0x7389('0x2f')]=_[_0x7389('0x2d')](_0x3b2956[_0x7389('0x31')],qs[_0x7389('0x2e')](_0x283aa7[_0x7389('0x2b')]['fields']));_0x51c09e[_0x7389('0x2f')]=_0x51c09e['attributes'][_0x7389('0x30')]?_0x51c09e[_0x7389('0x2f')]:_0x3b2956[_0x7389('0x31')];if(_0x283aa7['query'][_0x7389('0x3a')]){_0x51c09e[_0x7389('0x3b')]=[{'all':!![]}];}_0x51c09e=_[_0x7389('0x38')]({},_0x51c09e,_0x283aa7[_0x7389('0x41')]);return db['CmHopperHistory'][_0x7389('0x42')](_0x51c09e)['then'](handleEntityNotFound(_0xb03942,null))[_0x7389('0x3c')](respondWithResult(_0xb03942,null))[_0x7389('0x3e')](handleError(_0xb03942,null));};exports[_0x7389('0x43')]=function(_0x155d29,_0x1ed7a0){return db[_0x7389('0x25')][_0x7389('0x43')](_0x155d29['body'],{})['then'](respondWithResult(_0x1ed7a0,0xc9))[_0x7389('0x3e')](handleError(_0x1ed7a0,null));};exports['describe']=function(_0x16aa7c,_0x5f2134){return db['CmHopperHistory'][_0x7389('0x44')]()[_0x7389('0x3c')](respondWithResult(_0x5f2134,null))['catch'](handleError(_0x5f2134,null));};exports[_0x7389('0x45')]=function(_0xbd86f,_0x4c2ec9){if(_0xbd86f[_0x7389('0x46')][_0x7389('0x47')]){delete _0xbd86f['body'][_0x7389('0x47')];}return db['CmHopperHistory'][_0x7389('0x42')]({'where':{'uniqueid':_0xbd86f['params']['id']}})[_0x7389('0x3c')](handleEntityNotFound(_0x4c2ec9,null))['then'](saveUpdates(_0xbd86f[_0x7389('0x46')],null))[_0x7389('0x3c')](respondWithResult(_0x4c2ec9,null))[_0x7389('0x3e')](handleError(_0x4c2ec9,null));};
\ No newline at end of file
index d8ffc35..93ecee1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2d0b=['api','bluebird','request-promise','path','rimraf','./cmHopperHistory.attributes','define','CmHopperHistory','cm_hopper_history','endtime','uniqueid','util','../../config/logger'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0x2d0b,0x102));var _0xb2d0=function(_0x425727,_0x159a35){_0x425727=_0x425727-0x0;var _0x25cd98=_0x2d0b[_0x425727];return _0x25cd98;};'use strict';var _=require('lodash');var util=require(_0xb2d0('0x0'));var logger=require(_0xb2d0('0x1'))(_0xb2d0('0x2'));var moment=require('moment');var BPromise=require(_0xb2d0('0x3'));var rp=require(_0xb2d0('0x4'));var fs=require('fs');var path=require(_0xb2d0('0x5'));var rimraf=require(_0xb2d0('0x6'));var config=require('../../config/environment');var attributes=require(_0xb2d0('0x7'));module['exports']=function(_0x395e69,_0x41521f){return _0x395e69[_0xb2d0('0x8')](_0xb2d0('0x9'),attributes,{'tableName':_0xb2d0('0xa'),'paranoid':![],'indexes':[{'name':_0xb2d0('0xb'),'fields':[_0xb2d0('0xb')]},{'name':_0xb2d0('0xc'),'fields':[_0xb2d0('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x887b=['api','moment','bluebird','request-promise','path','rimraf','./cmHopperHistory.attributes','define','CmHopperHistory','endtime','uniqueid','lodash','util','../../config/logger'];(function(_0x4abcf4,_0x4d80bc){var _0x24c066=function(_0x52ef99){while(--_0x52ef99){_0x4abcf4['push'](_0x4abcf4['shift']());}};_0x24c066(++_0x4d80bc);}(_0x887b,0x185));var _0xb887=function(_0x2b9b2d,_0x13f0c6){_0x2b9b2d=_0x2b9b2d-0x0;var _0x1fd912=_0x887b[_0x2b9b2d];return _0x1fd912;};'use strict';var _=require(_0xb887('0x0'));var util=require(_0xb887('0x1'));var logger=require(_0xb887('0x2'))(_0xb887('0x3'));var moment=require(_0xb887('0x4'));var BPromise=require(_0xb887('0x5'));var rp=require(_0xb887('0x6'));var fs=require('fs');var path=require(_0xb887('0x7'));var rimraf=require(_0xb887('0x8'));var config=require('../../config/environment');var attributes=require(_0xb887('0x9'));module['exports']=function(_0x4bafed,_0x48f83b){return _0x4bafed[_0xb887('0xa')](_0xb887('0xb'),attributes,{'tableName':'cm_hopper_history','paranoid':![],'indexes':[{'name':'endtime','fields':[_0xb887('0xc')]},{'name':_0xb887('0xd'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index c7e85eb..2f3d4e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe829=['GetCampaignHopperHistory','name','ivrTotalCallsDays','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','then','request\x20sent','debug','CmHopperHistory,\x20%s,\x20%s,\x20%s','stringify','error','code','CmHopperHistory,\x20%s,\x20%s','message','info','catch','CmHopperHistory','create','options','raw','CreateCmHopperHistory','AvgHandleTime','findAll','where','sequelize','COUNT','col','literal','`state`\x20=\x204,\x201,\x20null','predictiveIntervalAnsweredCalls','`state`\x20=\x2010,\x201,\x20null','predictiveIntervalDroppedCallsTimeout','`state`\x20=\x2011,\x201,\x20null','predictiveIntervalDroppedCallsCallersExit','AVG','predictiveIntervalAvgHoldtime','`state`\x20=\x204,\x20`talktime`,\x20null','predictiveIntervalAvgTalktime','GetVoiceQueueHopperHistory','campaign','`state`\x20=\x200,\x201,\x20null','outboundNoSuchCallsDay','`state`\x20=\x203,\x201,\x20null','outboundNoAnswerCallsDay','outboundAnswerCallsDay','`state`\x20=\x205,\x201,\x20null','outboundBusyCallsDay','outboundCongestionCallsDay','`state`\x20=\x2010\x20,\x201,\x20null','outboundDropCallsDayTimeout','`state`\x20=\x2011\x20,\x201,\x20null','outboundUnknownCallsDay','`state`\x20=\x2013,\x201,\x20null','outboundBlacklistCallsDay','`state`\x20=\x2018,\x201,\x20null','outboundRejectCallsDay','outboundAnswerAgiCallsDay','`state`\x20=\x2020,\x201,\x20null'];(function(_0x32ad2c,_0xc381de){var _0x2df995=function(_0x722eed){while(--_0x722eed){_0x32ad2c['push'](_0x32ad2c['shift']());}};_0x2df995(++_0xc381de);}(_0xe829,0x1d8));var _0x9e82=function(_0x18eb1a,_0x446792){_0x18eb1a=_0x18eb1a-0x0;var _0x279ad8=_0xe829[_0x18eb1a];return _0x279ad8;};'use strict';var _=require(_0x9e82('0x0'));var util=require(_0x9e82('0x1'));var moment=require(_0x9e82('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9e82('0x3'));var db=require(_0x9e82('0x4'))['db'];var utils=require(_0x9e82('0x5'));var logger=require(_0x9e82('0x6'))(_0x9e82('0x7'));var config=require(_0x9e82('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x9e82('0x9')][_0x9e82('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1a63b3,_0x7cebd4,_0x2d91ba){return new BPromise(function(_0x5c4c57,_0x149f39){return client['request'](_0x1a63b3,_0x2d91ba)[_0x9e82('0xb')](function(_0x13070b){logger['info']('CmHopperHistory,\x20%s,\x20%s',_0x7cebd4,_0x9e82('0xc'));logger[_0x9e82('0xd')](_0x9e82('0xe'),_0x7cebd4,_0x9e82('0xc'),JSON[_0x9e82('0xf')](_0x13070b));if(_0x13070b[_0x9e82('0x10')]){if(_0x13070b[_0x9e82('0x10')][_0x9e82('0x11')]===0x1f4){logger[_0x9e82('0x10')](_0x9e82('0x12'),_0x7cebd4,_0x13070b[_0x9e82('0x10')][_0x9e82('0x13')]);return _0x149f39(_0x13070b['error']['message']);}logger[_0x9e82('0x10')](_0x9e82('0x12'),_0x7cebd4,_0x13070b[_0x9e82('0x10')][_0x9e82('0x13')]);return _0x5c4c57(_0x13070b['error'][_0x9e82('0x13')]);}else{logger[_0x9e82('0x14')](_0x9e82('0x12'),_0x7cebd4,_0x9e82('0xc'));_0x5c4c57(_0x13070b['result'][_0x9e82('0x13')]);}})[_0x9e82('0x15')](function(_0x3f70a3){logger[_0x9e82('0x10')]('CmHopperHistory,\x20%s,\x20%s',_0x7cebd4,_0x3f70a3);_0x149f39(_0x3f70a3);});});}exports['CreateCmHopperHistory']=function(_0x4815d8){var _0x40757e=this;return new Promise(function(_0x2de033,_0xdb5e7b){return db[_0x9e82('0x16')][_0x9e82('0x17')](_0x4815d8['body'],{'raw':_0x4815d8[_0x9e82('0x18')]?_0x4815d8[_0x9e82('0x18')][_0x9e82('0x19')]===undefined?!![]:![]:!![]})[_0x9e82('0xb')](function(_0x528ff4){logger['info'](_0x9e82('0x1a'),_0x4815d8);logger[_0x9e82('0xd')](_0x9e82('0x1a'),_0x4815d8,JSON[_0x9e82('0xf')](_0x528ff4));_0x2de033(_0x528ff4);})[_0x9e82('0x15')](function(_0x10c3d6){logger['error'](_0x9e82('0x1a'),_0x10c3d6[_0x9e82('0x13')],_0x4815d8);_0xdb5e7b(_0x40757e[_0x9e82('0x10')](0x1f4,_0x10c3d6[_0x9e82('0x13')]));});});};exports[_0x9e82('0x1b')]=function(_0x4e0570){var _0x21519d=this;return new Promise(function(_0x4a628c,_0x2112ee){return db['CmHopperHistory'][_0x9e82('0x1c')]({'raw':_0x4e0570[_0x9e82('0x18')]?_0x4e0570[_0x9e82('0x18')][_0x9e82('0x19')]===undefined?!![]:![]:!![],'where':_0x4e0570[_0x9e82('0x18')]?_0x4e0570[_0x9e82('0x18')][_0x9e82('0x1d')]||null:null,'attributes':[[db[_0x9e82('0x1e')]['fn'](_0x9e82('0x1f'),db[_0x9e82('0x1e')][_0x9e82('0x20')]('id')),'predictiveIntervalTotalCalls'],[db[_0x9e82('0x1e')]['fn'](_0x9e82('0x1f'),db[_0x9e82('0x1e')]['fn']('IF',db[_0x9e82('0x1e')][_0x9e82('0x21')](_0x9e82('0x22')))),_0x9e82('0x23')],[db[_0x9e82('0x1e')]['fn'](_0x9e82('0x1f'),db[_0x9e82('0x1e')]['fn']('IF',db[_0x9e82('0x1e')][_0x9e82('0x21')](_0x9e82('0x24')))),_0x9e82('0x25')],[db['sequelize']['fn']('COUNT',db[_0x9e82('0x1e')]['fn']('IF',db[_0x9e82('0x1e')][_0x9e82('0x21')](_0x9e82('0x26')))),_0x9e82('0x27')],[db[_0x9e82('0x1e')]['fn'](_0x9e82('0x28'),db[_0x9e82('0x1e')]['fn']('IF',db[_0x9e82('0x1e')][_0x9e82('0x21')]('`state`\x20=\x204,\x20`holdtime`,\x20null'))),_0x9e82('0x29')],[db[_0x9e82('0x1e')]['fn']('AVG',db[_0x9e82('0x1e')]['fn']('IF',db[_0x9e82('0x1e')][_0x9e82('0x21')](_0x9e82('0x2a')))),_0x9e82('0x2b')]]})[_0x9e82('0xb')](function(_0x2fe280){logger['info'](_0x9e82('0x1b'),_0x4e0570);logger['debug']('AvgHandleTime',_0x4e0570,JSON[_0x9e82('0xf')](_0x2fe280));_0x4a628c(_0x2fe280);})[_0x9e82('0x15')](function(_0x17b0a9){logger[_0x9e82('0x10')]('AvgHandleTime',_0x17b0a9['message'],_0x4e0570);_0x2112ee(_0x21519d[_0x9e82('0x10')](0x1f4,_0x17b0a9[_0x9e82('0x13')]));});});};exports[_0x9e82('0x2c')]=function(_0x3b75ac){var _0xbe42f0=this;return new Promise(function(_0x151ee5,_0x26b921){return db[_0x9e82('0x16')][_0x9e82('0x1c')]({'raw':_0x3b75ac[_0x9e82('0x18')]?_0x3b75ac['options'][_0x9e82('0x19')]===undefined?!![]:![]:!![],'where':_0x3b75ac[_0x9e82('0x18')]?_0x3b75ac[_0x9e82('0x18')][_0x9e82('0x1d')]||null:null,'attributes':[[_0x9e82('0x2d'),'name'],[db['sequelize']['fn']('COUNT',db['sequelize']['fn']('IF',db[_0x9e82('0x1e')][_0x9e82('0x21')](_0x9e82('0x2e')))),_0x9e82('0x2f')],[db[_0x9e82('0x1e')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0x9e82('0x1e')][_0x9e82('0x21')](_0x9e82('0x30')))),_0x9e82('0x31')],[db['sequelize']['fn'](_0x9e82('0x1f'),db[_0x9e82('0x1e')]['fn']('IF',db[_0x9e82('0x1e')]['literal']('`state`\x20=\x204,\x201,\x20null'))),_0x9e82('0x32')],[db['sequelize']['fn'](_0x9e82('0x1f'),db[_0x9e82('0x1e')]['fn']('IF',db['sequelize'][_0x9e82('0x21')](_0x9e82('0x33')))),_0x9e82('0x34')],[db[_0x9e82('0x1e')]['fn'](_0x9e82('0x1f'),db[_0x9e82('0x1e')]['fn']('IF',db['sequelize'][_0x9e82('0x21')]('`state`\x20=\x208,\x201,\x20null'))),_0x9e82('0x35')],[db[_0x9e82('0x1e')]['fn'](_0x9e82('0x1f'),db[_0x9e82('0x1e')]['fn']('IF',db['sequelize'][_0x9e82('0x21')](_0x9e82('0x36')))),_0x9e82('0x37')],[db['sequelize']['fn'](_0x9e82('0x1f'),db[_0x9e82('0x1e')]['fn']('IF',db[_0x9e82('0x1e')][_0x9e82('0x21')](_0x9e82('0x38')))),'outboundDropCallsDayCallersExit'],[db[_0x9e82('0x1e')]['fn'](_0x9e82('0x1f'),db[_0x9e82('0x1e')]['fn']('IF',db[_0x9e82('0x1e')]['literal']('`state`\x20=\x2012,\x201,\x20null'))),_0x9e82('0x39')],[db[_0x9e82('0x1e')]['fn'](_0x9e82('0x1f'),db[_0x9e82('0x1e')]['fn']('IF',db[_0x9e82('0x1e')]['literal'](_0x9e82('0x3a')))),_0x9e82('0x3b')],[db[_0x9e82('0x1e')]['fn'](_0x9e82('0x1f'),db['sequelize']['fn']('IF',db['sequelize'][_0x9e82('0x21')]('`state`\x20=\x2014,\x201,\x20null'))),'outboundOriginateFailureCallsDay'],[db[_0x9e82('0x1e')]['fn'](_0x9e82('0x1f'),db[_0x9e82('0x1e')]['fn']('IF',db[_0x9e82('0x1e')][_0x9e82('0x21')](_0x9e82('0x3c')))),_0x9e82('0x3d')],[db[_0x9e82('0x1e')]['fn'](_0x9e82('0x1f'),db[_0x9e82('0x1e')]['fn']('IF',db[_0x9e82('0x1e')][_0x9e82('0x21')]('`state`\x20=\x2016,\x201,\x20null'))),_0x9e82('0x3e')],[db['sequelize']['fn'](_0x9e82('0x1f'),db[_0x9e82('0x1e')]['fn']('IF',db['sequelize'][_0x9e82('0x21')](_0x9e82('0x3f')))),'outboundRejectCallsDay'],[db[_0x9e82('0x1e')]['fn'](_0x9e82('0x1f'),db[_0x9e82('0x1e')]['fn']('IF',db[_0x9e82('0x1e')][_0x9e82('0x21')]('`state`\x20=\x2022\x20or\x20`state`\x20=\x2023,\x201,\x20null'))),'outboundReCallsDay']],'group':[_0x9e82('0x2d')]})['then'](function(_0x5beca7){logger[_0x9e82('0x14')](_0x9e82('0x2c'),_0x3b75ac);logger[_0x9e82('0xd')](_0x9e82('0x2c'),_0x3b75ac,JSON[_0x9e82('0xf')](_0x5beca7));_0x151ee5(_0x5beca7);})[_0x9e82('0x15')](function(_0x32dcdc){logger['error'](_0x9e82('0x2c'),_0x32dcdc[_0x9e82('0x13')],_0x3b75ac);_0x26b921(_0xbe42f0['error'](0x1f4,_0x32dcdc['message']));});});};exports[_0x9e82('0x40')]=function(_0xc1f02b){var _0x2ed5ef=this;return new Promise(function(_0xf2060a,_0x163947){return db[_0x9e82('0x16')][_0x9e82('0x1c')]({'raw':_0xc1f02b[_0x9e82('0x18')]?_0xc1f02b['options']['raw']===undefined?!![]:![]:!![],'where':_0xc1f02b[_0x9e82('0x18')]?_0xc1f02b[_0x9e82('0x18')][_0x9e82('0x1d')]||null:null,'attributes':[[_0x9e82('0x2d'),_0x9e82('0x41')],[db['sequelize']['fn'](_0x9e82('0x1f'),db[_0x9e82('0x1e')][_0x9e82('0x20')]('id')),_0x9e82('0x42')],[db[_0x9e82('0x1e')]['fn'](_0x9e82('0x1f'),db['sequelize']['fn']('IF',db[_0x9e82('0x1e')][_0x9e82('0x21')](_0x9e82('0x22')))),'ivrAnswerCallsDay']],'group':['campaign']})[_0x9e82('0xb')](function(_0xf67a3b){logger['info'](_0x9e82('0x40'),_0xc1f02b);logger['debug'](_0x9e82('0x40'),_0xc1f02b,JSON['stringify'](_0xf67a3b));_0xf2060a(_0xf67a3b);})[_0x9e82('0x15')](function(_0x142b4d){logger[_0x9e82('0x10')](_0x9e82('0x40'),_0x142b4d[_0x9e82('0x13')],_0xc1f02b);_0x163947(_0x2ed5ef[_0x9e82('0x10')](0x1f4,_0x142b4d[_0x9e82('0x13')]));});});};
\ No newline at end of file
+var _0x8eeb=['`state`\x20=\x204,\x201,\x20null','predictiveIntervalAnsweredCalls','literal','`state`\x20=\x2010,\x201,\x20null','predictiveIntervalDroppedCallsTimeout','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalAvgHoldtime','AVG','predictiveIntervalAvgTalktime','GetVoiceQueueHopperHistory','CmHopperHistory','findAll','campaign','name','outboundNoSuchCallsDay','`state`\x20=\x203,\x201,\x20null','outboundAnswerCallsDay','outboundBusyCallsDay','`state`\x20=\x208,\x201,\x20null','outboundCongestionCallsDay','`state`\x20=\x2010\x20,\x201,\x20null','outboundDropCallsDayTimeout','`state`\x20=\x2011\x20,\x201,\x20null','outboundDropCallsDayCallersExit','`state`\x20=\x2012,\x201,\x20null','`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','ivrTotalCallsDays','ivrAnswerCallsDay','GetCampaignHopperHistory','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','request','then','info','request\x20sent','debug','CmHopperHistory,\x20%s,\x20%s,\x20%s','stringify','error','code','CmHopperHistory,\x20%s,\x20%s','message','result','CreateCmHopperHistory','create','body','options','raw','catch','AvgHandleTime','where','sequelize','COUNT','col'];(function(_0x5220b5,_0x5ee6ba){var _0xf2343e=function(_0x58b256){while(--_0x58b256){_0x5220b5['push'](_0x5220b5['shift']());}};_0xf2343e(++_0x5ee6ba);}(_0x8eeb,0x183));var _0xb8ee=function(_0x967d35,_0x1c27f6){_0x967d35=_0x967d35-0x0;var _0x413e1e=_0x8eeb[_0x967d35];return _0x413e1e;};'use strict';var _=require(_0xb8ee('0x0'));var util=require('util');var moment=require(_0xb8ee('0x1'));var BPromise=require(_0xb8ee('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xb8ee('0x3'));var db=require(_0xb8ee('0x4'))['db'];var utils=require(_0xb8ee('0x5'));var logger=require(_0xb8ee('0x6'))(_0xb8ee('0x7'));var config=require('../../config/environment');var jayson=require(_0xb8ee('0x8'));var client=jayson['client'][_0xb8ee('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x30dff7,_0x430b38,_0x469393){return new BPromise(function(_0x4e2428,_0x27243c){return client[_0xb8ee('0xa')](_0x30dff7,_0x469393)[_0xb8ee('0xb')](function(_0x5ea3ab){logger[_0xb8ee('0xc')]('CmHopperHistory,\x20%s,\x20%s',_0x430b38,_0xb8ee('0xd'));logger[_0xb8ee('0xe')](_0xb8ee('0xf'),_0x430b38,_0xb8ee('0xd'),JSON[_0xb8ee('0x10')](_0x5ea3ab));if(_0x5ea3ab[_0xb8ee('0x11')]){if(_0x5ea3ab[_0xb8ee('0x11')][_0xb8ee('0x12')]===0x1f4){logger['error'](_0xb8ee('0x13'),_0x430b38,_0x5ea3ab[_0xb8ee('0x11')][_0xb8ee('0x14')]);return _0x27243c(_0x5ea3ab[_0xb8ee('0x11')][_0xb8ee('0x14')]);}logger[_0xb8ee('0x11')]('CmHopperHistory,\x20%s,\x20%s',_0x430b38,_0x5ea3ab[_0xb8ee('0x11')][_0xb8ee('0x14')]);return _0x4e2428(_0x5ea3ab[_0xb8ee('0x11')][_0xb8ee('0x14')]);}else{logger[_0xb8ee('0xc')](_0xb8ee('0x13'),_0x430b38,_0xb8ee('0xd'));_0x4e2428(_0x5ea3ab[_0xb8ee('0x15')][_0xb8ee('0x14')]);}})['catch'](function(_0x135d5d){logger['error']('CmHopperHistory,\x20%s,\x20%s',_0x430b38,_0x135d5d);_0x27243c(_0x135d5d);});});}exports[_0xb8ee('0x16')]=function(_0x34dfb9){var _0x4d9a82=this;return new Promise(function(_0x3f0577,_0x369e3e){return db['CmHopperHistory'][_0xb8ee('0x17')](_0x34dfb9[_0xb8ee('0x18')],{'raw':_0x34dfb9[_0xb8ee('0x19')]?_0x34dfb9['options'][_0xb8ee('0x1a')]===undefined?!![]:![]:!![]})[_0xb8ee('0xb')](function(_0x39d8b2){logger[_0xb8ee('0xc')](_0xb8ee('0x16'),_0x34dfb9);logger['debug'](_0xb8ee('0x16'),_0x34dfb9,JSON['stringify'](_0x39d8b2));_0x3f0577(_0x39d8b2);})[_0xb8ee('0x1b')](function(_0x134ddb){logger[_0xb8ee('0x11')](_0xb8ee('0x16'),_0x134ddb[_0xb8ee('0x14')],_0x34dfb9);_0x369e3e(_0x4d9a82[_0xb8ee('0x11')](0x1f4,_0x134ddb[_0xb8ee('0x14')]));});});};exports[_0xb8ee('0x1c')]=function(_0x25a972){var _0x2d868b=this;return new Promise(function(_0x5b9767,_0x14b746){return db['CmHopperHistory']['findAll']({'raw':_0x25a972['options']?_0x25a972['options'][_0xb8ee('0x1a')]===undefined?!![]:![]:!![],'where':_0x25a972[_0xb8ee('0x19')]?_0x25a972[_0xb8ee('0x19')][_0xb8ee('0x1d')]||null:null,'attributes':[[db[_0xb8ee('0x1e')]['fn'](_0xb8ee('0x1f'),db[_0xb8ee('0x1e')][_0xb8ee('0x20')]('id')),'predictiveIntervalTotalCalls'],[db[_0xb8ee('0x1e')]['fn'](_0xb8ee('0x1f'),db[_0xb8ee('0x1e')]['fn']('IF',db[_0xb8ee('0x1e')]['literal'](_0xb8ee('0x21')))),_0xb8ee('0x22')],[db['sequelize']['fn'](_0xb8ee('0x1f'),db[_0xb8ee('0x1e')]['fn']('IF',db['sequelize'][_0xb8ee('0x23')](_0xb8ee('0x24')))),_0xb8ee('0x25')],[db['sequelize']['fn'](_0xb8ee('0x1f'),db[_0xb8ee('0x1e')]['fn']('IF',db[_0xb8ee('0x1e')]['literal']('`state`\x20=\x2011,\x201,\x20null'))),_0xb8ee('0x26')],[db[_0xb8ee('0x1e')]['fn']('AVG',db[_0xb8ee('0x1e')]['fn']('IF',db['sequelize'][_0xb8ee('0x23')]('`state`\x20=\x204,\x20`holdtime`,\x20null'))),_0xb8ee('0x27')],[db[_0xb8ee('0x1e')]['fn'](_0xb8ee('0x28'),db[_0xb8ee('0x1e')]['fn']('IF',db[_0xb8ee('0x1e')]['literal']('`state`\x20=\x204,\x20`talktime`,\x20null'))),_0xb8ee('0x29')]]})[_0xb8ee('0xb')](function(_0x2eadf6){logger[_0xb8ee('0xc')](_0xb8ee('0x1c'),_0x25a972);logger[_0xb8ee('0xe')](_0xb8ee('0x1c'),_0x25a972,JSON[_0xb8ee('0x10')](_0x2eadf6));_0x5b9767(_0x2eadf6);})[_0xb8ee('0x1b')](function(_0x44059e){logger[_0xb8ee('0x11')](_0xb8ee('0x1c'),_0x44059e[_0xb8ee('0x14')],_0x25a972);_0x14b746(_0x2d868b[_0xb8ee('0x11')](0x1f4,_0x44059e[_0xb8ee('0x14')]));});});};exports[_0xb8ee('0x2a')]=function(_0x22b89a){var _0x3c6324=this;return new Promise(function(_0x4aaafe,_0x10fbcf){return db[_0xb8ee('0x2b')][_0xb8ee('0x2c')]({'raw':_0x22b89a[_0xb8ee('0x19')]?_0x22b89a[_0xb8ee('0x19')][_0xb8ee('0x1a')]===undefined?!![]:![]:!![],'where':_0x22b89a['options']?_0x22b89a[_0xb8ee('0x19')]['where']||null:null,'attributes':[[_0xb8ee('0x2d'),_0xb8ee('0x2e')],[db[_0xb8ee('0x1e')]['fn'](_0xb8ee('0x1f'),db[_0xb8ee('0x1e')]['fn']('IF',db['sequelize']['literal']('`state`\x20=\x200,\x201,\x20null'))),_0xb8ee('0x2f')],[db[_0xb8ee('0x1e')]['fn']('COUNT',db[_0xb8ee('0x1e')]['fn']('IF',db[_0xb8ee('0x1e')]['literal'](_0xb8ee('0x30')))),'outboundNoAnswerCallsDay'],[db[_0xb8ee('0x1e')]['fn'](_0xb8ee('0x1f'),db[_0xb8ee('0x1e')]['fn']('IF',db['sequelize'][_0xb8ee('0x23')](_0xb8ee('0x21')))),_0xb8ee('0x31')],[db['sequelize']['fn']('COUNT',db['sequelize']['fn']('IF',db[_0xb8ee('0x1e')][_0xb8ee('0x23')]('`state`\x20=\x205,\x201,\x20null'))),_0xb8ee('0x32')],[db[_0xb8ee('0x1e')]['fn'](_0xb8ee('0x1f'),db['sequelize']['fn']('IF',db[_0xb8ee('0x1e')][_0xb8ee('0x23')](_0xb8ee('0x33')))),_0xb8ee('0x34')],[db[_0xb8ee('0x1e')]['fn'](_0xb8ee('0x1f'),db[_0xb8ee('0x1e')]['fn']('IF',db[_0xb8ee('0x1e')][_0xb8ee('0x23')](_0xb8ee('0x35')))),_0xb8ee('0x36')],[db[_0xb8ee('0x1e')]['fn']('COUNT',db[_0xb8ee('0x1e')]['fn']('IF',db[_0xb8ee('0x1e')][_0xb8ee('0x23')](_0xb8ee('0x37')))),_0xb8ee('0x38')],[db[_0xb8ee('0x1e')]['fn']('COUNT',db[_0xb8ee('0x1e')]['fn']('IF',db[_0xb8ee('0x1e')]['literal'](_0xb8ee('0x39')))),'outboundUnknownCallsDay'],[db[_0xb8ee('0x1e')]['fn'](_0xb8ee('0x1f'),db['sequelize']['fn']('IF',db[_0xb8ee('0x1e')][_0xb8ee('0x23')](_0xb8ee('0x3a')))),_0xb8ee('0x3b')],[db[_0xb8ee('0x1e')]['fn'](_0xb8ee('0x1f'),db['sequelize']['fn']('IF',db[_0xb8ee('0x1e')][_0xb8ee('0x23')](_0xb8ee('0x3c')))),_0xb8ee('0x3d')],[db[_0xb8ee('0x1e')]['fn']('COUNT',db[_0xb8ee('0x1e')]['fn']('IF',db[_0xb8ee('0x1e')][_0xb8ee('0x23')](_0xb8ee('0x3e')))),_0xb8ee('0x3f')],[db[_0xb8ee('0x1e')]['fn'](_0xb8ee('0x1f'),db['sequelize']['fn']('IF',db[_0xb8ee('0x1e')][_0xb8ee('0x23')](_0xb8ee('0x40')))),_0xb8ee('0x41')],[db[_0xb8ee('0x1e')]['fn'](_0xb8ee('0x1f'),db['sequelize']['fn']('IF',db[_0xb8ee('0x1e')][_0xb8ee('0x23')](_0xb8ee('0x42')))),_0xb8ee('0x3f')],[db[_0xb8ee('0x1e')]['fn'](_0xb8ee('0x1f'),db[_0xb8ee('0x1e')]['fn']('IF',db[_0xb8ee('0x1e')][_0xb8ee('0x23')]('`state`\x20=\x2022\x20or\x20`state`\x20=\x2023,\x201,\x20null'))),'outboundReCallsDay']],'group':[_0xb8ee('0x2d')]})['then'](function(_0x4ba434){logger['info'](_0xb8ee('0x2a'),_0x22b89a);logger[_0xb8ee('0xe')](_0xb8ee('0x2a'),_0x22b89a,JSON['stringify'](_0x4ba434));_0x4aaafe(_0x4ba434);})[_0xb8ee('0x1b')](function(_0x67bf8d){logger[_0xb8ee('0x11')](_0xb8ee('0x2a'),_0x67bf8d['message'],_0x22b89a);_0x10fbcf(_0x3c6324[_0xb8ee('0x11')](0x1f4,_0x67bf8d['message']));});});};exports['GetCampaignHopperHistory']=function(_0x404fe8){var _0x391b90=this;return new Promise(function(_0x12fe6a,_0x2ea313){return db['CmHopperHistory']['findAll']({'raw':_0x404fe8[_0xb8ee('0x19')]?_0x404fe8[_0xb8ee('0x19')][_0xb8ee('0x1a')]===undefined?!![]:![]:!![],'where':_0x404fe8[_0xb8ee('0x19')]?_0x404fe8[_0xb8ee('0x19')][_0xb8ee('0x1d')]||null:null,'attributes':[[_0xb8ee('0x2d'),_0xb8ee('0x2e')],[db[_0xb8ee('0x1e')]['fn']('COUNT',db['sequelize']['col']('id')),_0xb8ee('0x43')],[db['sequelize']['fn'](_0xb8ee('0x1f'),db['sequelize']['fn']('IF',db[_0xb8ee('0x1e')][_0xb8ee('0x23')]('`state`\x20=\x204,\x201,\x20null'))),_0xb8ee('0x44')]],'group':[_0xb8ee('0x2d')]})[_0xb8ee('0xb')](function(_0x3c2a44){logger['info'](_0xb8ee('0x45'),_0x404fe8);logger[_0xb8ee('0xe')]('GetCampaignHopperHistory',_0x404fe8,JSON[_0xb8ee('0x10')](_0x3c2a44));_0x12fe6a(_0x3c2a44);})[_0xb8ee('0x1b')](function(_0x2b27c1){logger[_0xb8ee('0x11')](_0xb8ee('0x45'),_0x2b27c1['message'],_0x404fe8);_0x2ea313(_0x391b90[_0xb8ee('0x11')](0x1f4,_0x2b27c1['message']));});});};
\ No newline at end of file
index 15263b1..975b0dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1aae=['./cmHopperHistory.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','put','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment'];(function(_0x399731,_0x416945){var _0x25c691=function(_0x595bce){while(--_0x595bce){_0x399731['push'](_0x399731['shift']());}};_0x25c691(++_0x416945);}(_0x1aae,0x14c));var _0xe1aa=function(_0x34c0f3,_0x166ac7){_0x34c0f3=_0x34c0f3-0x0;var _0x378067=_0x1aae[_0x34c0f3];return _0x378067;};'use strict';var multer=require(_0xe1aa('0x0'));var util=require(_0xe1aa('0x1'));var path=require(_0xe1aa('0x2'));var timeout=require(_0xe1aa('0x3'));var express=require('express');var router=express[_0xe1aa('0x4')]();var fs_extra=require(_0xe1aa('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xe1aa('0x6'));var config=require(_0xe1aa('0x7'));var controller=require(_0xe1aa('0x8'));router[_0xe1aa('0x9')]('/',auth[_0xe1aa('0xa')](),controller[_0xe1aa('0xb')]);router[_0xe1aa('0x9')](_0xe1aa('0xc'),auth['isAuthenticated'](),controller[_0xe1aa('0xd')]);router[_0xe1aa('0x9')](_0xe1aa('0xe'),auth[_0xe1aa('0xa')](),controller[_0xe1aa('0xf')]);router[_0xe1aa('0x10')]('/',auth['isAuthenticated'](),controller[_0xe1aa('0x11')]);router[_0xe1aa('0x12')](_0xe1aa('0xe'),auth[_0xe1aa('0xa')](),controller['update']);module[_0xe1aa('0x13')]=router;
\ No newline at end of file
+var _0xff9d=['/:id','show','post','update','multer','util','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./cmHopperHistory.controller','get','isAuthenticated','index','describe'];(function(_0x1b64a3,_0x545d1f){var _0xd8b7e0=function(_0x44389f){while(--_0x44389f){_0x1b64a3['push'](_0x1b64a3['shift']());}};_0xd8b7e0(++_0x545d1f);}(_0xff9d,0x74));var _0xdff9=function(_0x570a90,_0x4b56f2){_0x570a90=_0x570a90-0x0;var _0x3073fa=_0xff9d[_0x570a90];return _0x3073fa;};'use strict';var multer=require(_0xdff9('0x0'));var util=require(_0xdff9('0x1'));var path=require('path');var timeout=require(_0xdff9('0x2'));var express=require(_0xdff9('0x3'));var router=express[_0xdff9('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xdff9('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xdff9('0x6'));var controller=require(_0xdff9('0x7'));router[_0xdff9('0x8')]('/',auth[_0xdff9('0x9')](),controller[_0xdff9('0xa')]);router[_0xdff9('0x8')]('/describe',auth[_0xdff9('0x9')](),controller[_0xdff9('0xb')]);router[_0xdff9('0x8')](_0xdff9('0xc'),auth[_0xdff9('0x9')](),controller[_0xdff9('0xd')]);router[_0xdff9('0xe')]('/',auth[_0xdff9('0x9')](),controller['create']);router['put'](_0xdff9('0xc'),auth['isAuthenticated'](),controller[_0xdff9('0xf')]);module['exports']=router;
\ No newline at end of file
index 2400cf3..a9e0e77 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea89=['STRING','name','sequelize','exports'];(function(_0x1d54f9,_0x1a648){var _0x14d524=function(_0x7d5c3){while(--_0x7d5c3){_0x1d54f9['push'](_0x1d54f9['shift']());}};_0x14d524(++_0x1a648);}(_0xea89,0x1e2));var _0x9ea8=function(_0x34f9e2,_0x5a8e00){_0x34f9e2=_0x34f9e2-0x0;var _0xd6447f=_0xea89[_0x34f9e2];return _0xd6447f;};'use strict';var Sequelize=require(_0x9ea8('0x0'));module[_0x9ea8('0x1')]={'name':{'type':Sequelize[_0x9ea8('0x2')],'unique':_0x9ea8('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x9ea8('0x2')]},'dialPrefix':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xac31=['STRING','name','sequelize','exports'];(function(_0x4973fc,_0x495e19){var _0x59d445=function(_0x5ed09a){while(--_0x5ed09a){_0x4973fc['push'](_0x4973fc['shift']());}};_0x59d445(++_0x495e19);}(_0xac31,0xca));var _0x1ac3=function(_0x555cfb,_0x4ffb01){_0x555cfb=_0x555cfb-0x0;var _0xb31e8d=_0xac31[_0x555cfb];return _0xb31e8d;};'use strict';var Sequelize=require(_0x1ac3('0x0'));module[_0x1ac3('0x1')]={'name':{'type':Sequelize[_0x1ac3('0x2')],'unique':_0x1ac3('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x1ac3('0x2')]},'dialPrefix':{'type':Sequelize[_0x1ac3('0x2')]}};
\ No newline at end of file
index 10b964e..138a2f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x97f3=['../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','register','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','get','UserProfileResource','then','error','stack','send','index','map','CmList','rawAttributes','fieldName','type','key','model','name','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','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','describe','addDisposition','ListId','Disposition','getDispositions','findOne','removeDispositions','ids','addContacts','CmContact','isArray','tags','join','push','each','omit','success','dataValues','errors','getContacts','CmCustomField','CustomFields','format','raw','concat','cf_%d','isEmpty','now','writeFileSync','/tmp/list_%d_%s.csv','setHeader','Content-disposition','attachment;\x20filename=','list_%d_%s.csv','download','sequelize','transaction','addCustomFields','Sequelize','TEXT','text','INTEGER','BOOLEAN','queryInterface','addColumn','cm_contacts','getCustomFields','addAgents','userCmList:save','removeAgents','emit','userCmList:remove','getAgents','User','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','ioredis'];(function(_0x27be61,_0x5331d9){var _0x10d04c=function(_0x38dc44){while(--_0x38dc44){_0x27be61['push'](_0x27be61['shift']());}};_0x10d04c(++_0x5331d9);}(_0x97f3,0x1ad));var _0x397f=function(_0x15b89c,_0x346d3e){_0x15b89c=_0x15b89c-0x0;var _0x425a35=_0x97f3[_0x15b89c];return _0x425a35;};'use strict';var emlformat=require(_0x397f('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x397f('0x1'));var jsonpatch=require(_0x397f('0x2'));var rp=require(_0x397f('0x3'));var moment=require(_0x397f('0x4'));var BPromise=require(_0x397f('0x5'));var Mustache=require(_0x397f('0x6'));var util=require(_0x397f('0x7'));var path=require(_0x397f('0x8'));var sox=require(_0x397f('0x9'));var csv=require(_0x397f('0xa'));var ejs=require(_0x397f('0xb'));var fs=require('fs');var fs_extra=require(_0x397f('0xc'));var _=require(_0x397f('0xd'));var squel=require(_0x397f('0xe'));var crypto=require('crypto');var jsforce=require(_0x397f('0xf'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x397f('0x10'));var Papa=require('papaparse');var Redis=require(_0x397f('0x11'));var authService=require(_0x397f('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x397f('0x13'));var hardwareService=require(_0x397f('0x14'));var logger=require(_0x397f('0x15'))(_0x397f('0x16'));var utils=require(_0x397f('0x17'));var config=require(_0x397f('0x18'));var licenseUtil=require(_0x397f('0x19'));var db=require(_0x397f('0x1a'))['db'];config[_0x397f('0x1b')]=_[_0x397f('0x1c')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x397f('0x1d'))(new Redis(config[_0x397f('0x1b')]));require('./cmList.socket')[_0x397f('0x1e')](socket);function respondWithStatusCode(_0x3d795c,_0x5b1e48){_0x5b1e48=_0x5b1e48||0xcc;return function(_0x45a285){if(_0x45a285){return _0x3d795c[_0x397f('0x1f')](_0x5b1e48);}return _0x3d795c['status'](_0x5b1e48)[_0x397f('0x20')]();};}function respondWithResult(_0x24b8e1,_0x59079e){_0x59079e=_0x59079e||0xc8;return function(_0x9deb9e){if(_0x9deb9e){return _0x24b8e1[_0x397f('0x21')](_0x59079e)[_0x397f('0x22')](_0x9deb9e);}};}function respondWithFilteredResult(_0x33af47,_0x49e591){return function(_0x20cc3e){if(_0x20cc3e){var _0x270106=typeof _0x49e591[_0x397f('0x23')]===_0x397f('0x24')&&typeof _0x49e591[_0x397f('0x25')]==='undefined';var _0x4eb277=_0x20cc3e[_0x397f('0x26')];var _0x1680d4=_0x270106?0x0:_0x49e591['offset'];var _0x7bd61=_0x270106?_0x20cc3e[_0x397f('0x26')]:_0x49e591[_0x397f('0x23')]+_0x49e591['limit'];var _0x1e7714;if(_0x7bd61>=_0x4eb277){_0x7bd61=_0x4eb277;_0x1e7714=0xc8;}else{_0x1e7714=0xce;}_0x33af47[_0x397f('0x21')](_0x1e7714);return _0x33af47[_0x397f('0x27')](_0x397f('0x28'),_0x1680d4+'-'+_0x7bd61+'/'+_0x4eb277)['json'](_0x20cc3e);}return null;};}function patchUpdates(_0xb06fd){return function(_0x415845){try{jsonpatch[_0x397f('0x29')](_0x415845,_0xb06fd,!![]);}catch(_0x4a5fe4){return BPromise[_0x397f('0x2a')](_0x4a5fe4);}return _0x415845[_0x397f('0x2b')]();};}function saveUpdates(_0x2ea3b8,_0x26b9ed){return function(_0x2eec26){if(_0x2eec26){return _0x2eec26[_0x397f('0x2c')](_0x2ea3b8)['then'](function(_0x30f96c){return _0x30f96c;});}return null;};}function removeEntity(_0x37888b,_0x251bcc){return function(_0x9b9934){if(_0x9b9934){return _0x9b9934[_0x397f('0x2d')]()['then'](function(){var _0x21482e=_0x9b9934[_0x397f('0x2e')]({'plain':!![]});var _0x351a04='Lists';return db[_0x397f('0x2f')][_0x397f('0x2d')]({'where':{'type':_0x351a04,'resourceId':_0x21482e['id']}})['then'](function(){return _0x9b9934;});})[_0x397f('0x30')](function(){_0x37888b['status'](0xcc)[_0x397f('0x20')]();});}};}function handleEntityNotFound(_0x404c6d,_0x5d6e75){return function(_0xd5a7c3){if(!_0xd5a7c3){_0x404c6d[_0x397f('0x1f')](0x194);}return _0xd5a7c3;};}function handleError(_0x485a43,_0x1772a6){_0x1772a6=_0x1772a6||0x1f4;return function(_0x28dd4d){logger[_0x397f('0x31')](_0x28dd4d[_0x397f('0x32')]);if(_0x28dd4d['name']){delete _0x28dd4d['name'];}_0x485a43[_0x397f('0x21')](_0x1772a6)[_0x397f('0x33')](_0x28dd4d);};}exports[_0x397f('0x34')]=function(_0x4518bd,_0x266cf2){var _0x24d479={},_0x275789={},_0x31caa1={'count':0x0,'rows':[]};var _0x46e48b=_[_0x397f('0x35')](db[_0x397f('0x36')][_0x397f('0x37')],function(_0x321e3f){return{'name':_0x321e3f[_0x397f('0x38')],'type':_0x321e3f[_0x397f('0x39')][_0x397f('0x3a')]};});_0x275789[_0x397f('0x3b')]=_['map'](_0x46e48b,_0x397f('0x3c'));_0x275789[_0x397f('0x3d')]=_[_0x397f('0x3e')](_0x4518bd[_0x397f('0x3d')]);_0x275789[_0x397f('0x3f')]=_[_0x397f('0x40')](_0x275789[_0x397f('0x3b')],_0x275789[_0x397f('0x3d')]);_0x24d479['attributes']=_[_0x397f('0x40')](_0x275789['model'],qs[_0x397f('0x41')](_0x4518bd[_0x397f('0x3d')][_0x397f('0x41')]));_0x24d479[_0x397f('0x42')]=_0x24d479['attributes'][_0x397f('0x43')]?_0x24d479[_0x397f('0x42')]:_0x275789['model'];if(!_0x4518bd['query'][_0x397f('0x44')](_0x397f('0x45'))){_0x24d479[_0x397f('0x25')]=qs[_0x397f('0x25')](_0x4518bd[_0x397f('0x3d')][_0x397f('0x25')]);_0x24d479[_0x397f('0x23')]=qs[_0x397f('0x23')](_0x4518bd[_0x397f('0x3d')][_0x397f('0x23')]);}_0x24d479[_0x397f('0x46')]=qs[_0x397f('0x47')](_0x4518bd[_0x397f('0x3d')][_0x397f('0x47')]);_0x24d479['where']=qs[_0x397f('0x3f')](_[_0x397f('0x48')](_0x4518bd['query'],_0x275789[_0x397f('0x3f')]),_0x46e48b);if(_0x4518bd[_0x397f('0x3d')][_0x397f('0x49')]){_0x24d479[_0x397f('0x4a')]=_[_0x397f('0x4b')](_0x24d479['where'],{'$or':_[_0x397f('0x35')](_0x46e48b,function(_0x4ad06a){if(_0x4ad06a['type']!==_0x397f('0x4c')){var _0x2bad61={};_0x2bad61[_0x4ad06a[_0x397f('0x3c')]]={'$like':'%'+_0x4518bd['query'][_0x397f('0x49')]+'%'};return _0x2bad61;}})});}_0x24d479=_[_0x397f('0x4b')]({},_0x24d479,_0x4518bd[_0x397f('0x4d')]);var _0x14c036={'where':_0x24d479[_0x397f('0x4a')]};return db['CmList'][_0x397f('0x26')](_0x14c036)['then'](function(_0x1f6b2d){_0x31caa1[_0x397f('0x26')]=_0x1f6b2d;if(_0x4518bd[_0x397f('0x3d')][_0x397f('0x4e')]){_0x24d479[_0x397f('0x4f')]=[{'all':!![]}];}return db[_0x397f('0x36')][_0x397f('0x50')](_0x24d479);})[_0x397f('0x30')](function(_0x494321){_0x31caa1[_0x397f('0x51')]=_0x494321;return _0x31caa1;})[_0x397f('0x30')](respondWithFilteredResult(_0x266cf2,_0x24d479))[_0x397f('0x52')](handleError(_0x266cf2,null));};exports[_0x397f('0x53')]=function(_0x286214,_0x12134b){var _0x2bca10={'raw':![],'where':{'id':_0x286214[_0x397f('0x54')]['id']}},_0x1c8b99={};_0x1c8b99['model']=_[_0x397f('0x3e')](db[_0x397f('0x36')][_0x397f('0x37')]);_0x1c8b99[_0x397f('0x3d')]=_[_0x397f('0x3e')](_0x286214['query']);_0x1c8b99['filters']=_[_0x397f('0x40')](_0x1c8b99[_0x397f('0x3b')],_0x1c8b99['query']);_0x2bca10[_0x397f('0x42')]=_[_0x397f('0x40')](_0x1c8b99[_0x397f('0x3b')],qs[_0x397f('0x41')](_0x286214[_0x397f('0x3d')][_0x397f('0x41')]));_0x2bca10['attributes']=_0x2bca10[_0x397f('0x42')][_0x397f('0x43')]?_0x2bca10[_0x397f('0x42')]:_0x1c8b99[_0x397f('0x3b')];if(_0x286214[_0x397f('0x3d')][_0x397f('0x4e')]){_0x2bca10[_0x397f('0x4f')]=[{'all':!![]}];}_0x2bca10=_[_0x397f('0x4b')]({},_0x2bca10,_0x286214['options']);return db[_0x397f('0x36')][_0x397f('0x55')](_0x2bca10)[_0x397f('0x30')](handleEntityNotFound(_0x12134b,null))[_0x397f('0x30')](respondWithResult(_0x12134b,null))[_0x397f('0x52')](handleError(_0x12134b,null));};exports['create']=function(_0x834a01,_0x447ab1){return db[_0x397f('0x36')][_0x397f('0x56')](_0x834a01['body'],{})[_0x397f('0x30')](function(_0x46d676){var _0x2f04f5=_0x834a01[_0x397f('0x57')]['get']({'plain':!![]});if(!_0x2f04f5)throw new Error(_0x397f('0x58'));if(_0x2f04f5[_0x397f('0x59')]==='user'){var _0x4639be=_0x46d676[_0x397f('0x2e')]({'plain':!![]});var _0x5d6d87='Lists';return db[_0x397f('0x5a')]['find']({'where':{'name':_0x5d6d87,'userProfileId':_0x2f04f5[_0x397f('0x5b')]},'raw':!![]})[_0x397f('0x30')](function(_0x12d200){if(_0x12d200&&_0x12d200[_0x397f('0x5c')]===0x0){return db[_0x397f('0x2f')][_0x397f('0x56')]({'name':_0x4639be['name'],'resourceId':_0x4639be['id'],'type':_0x12d200[_0x397f('0x3c')],'sectionId':_0x12d200['id']},{})[_0x397f('0x30')](function(){return _0x46d676;});}else{return _0x46d676;}})[_0x397f('0x52')](function(_0x206089){logger[_0x397f('0x31')](_0x397f('0x5d'),_0x206089);throw _0x206089;});}return _0x46d676;})[_0x397f('0x30')](respondWithResult(_0x447ab1,0xc9))[_0x397f('0x52')](handleError(_0x447ab1,null));};exports['update']=function(_0x13be4b,_0xb223e9){if(_0x13be4b[_0x397f('0x5e')]['id']){delete _0x13be4b['body']['id'];}return db['CmList'][_0x397f('0x55')]({'where':{'id':_0x13be4b['params']['id']}})[_0x397f('0x30')](handleEntityNotFound(_0xb223e9,null))[_0x397f('0x30')](saveUpdates(_0x13be4b[_0x397f('0x5e')],null))[_0x397f('0x30')](respondWithResult(_0xb223e9,null))[_0x397f('0x52')](handleError(_0xb223e9,null));};exports[_0x397f('0x2d')]=function(_0x33b30a,_0x45fd2f){return db['CmList'][_0x397f('0x55')]({'where':{'id':_0x33b30a['params']['id']}})[_0x397f('0x30')](handleEntityNotFound(_0x45fd2f,null))[_0x397f('0x30')](removeEntity(_0x45fd2f,null))[_0x397f('0x52')](handleError(_0x45fd2f,null));};exports[_0x397f('0x5f')]=function(_0x32d5b9,_0x1a7f90){return db[_0x397f('0x36')]['describe']()[_0x397f('0x30')](respondWithResult(_0x1a7f90,null))[_0x397f('0x52')](handleError(_0x1a7f90,null));};exports[_0x397f('0x60')]=function(_0x4eaa63,_0x1ac5f8,_0x40f72e){if(_0x4eaa63[_0x397f('0x5e')]['id']){delete _0x4eaa63[_0x397f('0x5e')]['id'];}return db[_0x397f('0x36')]['find']({'where':{'id':_0x4eaa63[_0x397f('0x54')]['id']}})[_0x397f('0x30')](handleEntityNotFound(_0x1ac5f8,null))[_0x397f('0x30')](function(_0x5af963){if(_0x5af963){_0x4eaa63[_0x397f('0x5e')][_0x397f('0x61')]=_0x5af963['id'];return db[_0x397f('0x62')][_0x397f('0x56')](_0x4eaa63[_0x397f('0x5e')]);}})[_0x397f('0x30')](respondWithResult(_0x1ac5f8,null))[_0x397f('0x52')](handleError(_0x1ac5f8,null));};exports[_0x397f('0x63')]=function(_0x5a2403,_0x34db50,_0x43b1d8){var _0x406129={'raw':![],'where':{}};var _0x24b17c={};var _0x298e69={'count':0x0,'rows':[]};return db[_0x397f('0x36')][_0x397f('0x64')]({'where':{'id':_0x5a2403[_0x397f('0x54')]['id']}})[_0x397f('0x30')](handleEntityNotFound(_0x34db50,null))[_0x397f('0x30')](function(_0x22e394){if(_0x22e394){_0x24b17c[_0x397f('0x3b')]=_[_0x397f('0x3e')](db['Disposition'][_0x397f('0x37')]);_0x24b17c['query']=_[_0x397f('0x3e')](_0x5a2403[_0x397f('0x3d')]);_0x24b17c[_0x397f('0x3f')]=_[_0x397f('0x40')](_0x24b17c[_0x397f('0x3b')],_0x24b17c[_0x397f('0x3d')]);_0x406129[_0x397f('0x42')]=_[_0x397f('0x40')](_0x24b17c[_0x397f('0x3b')],qs['fields'](_0x5a2403[_0x397f('0x3d')][_0x397f('0x41')]));_0x406129[_0x397f('0x42')]=_0x406129[_0x397f('0x42')][_0x397f('0x43')]?_0x406129[_0x397f('0x42')]:_0x24b17c['model'];if(!_0x5a2403[_0x397f('0x3d')][_0x397f('0x44')](_0x397f('0x45'))){_0x406129[_0x397f('0x25')]=qs['limit'](_0x5a2403['query']['limit']);_0x406129['offset']=qs[_0x397f('0x23')](_0x5a2403['query'][_0x397f('0x23')]);}_0x406129[_0x397f('0x46')]=qs[_0x397f('0x47')](_0x5a2403['query'][_0x397f('0x47')]);_0x406129[_0x397f('0x4a')]=qs['filters'](_[_0x397f('0x48')](_0x5a2403[_0x397f('0x3d')],_0x24b17c['filters']));_0x406129[_0x397f('0x4a')][_0x397f('0x61')]=_0x22e394['id'];if(_0x5a2403[_0x397f('0x3d')][_0x397f('0x49')]){_0x406129[_0x397f('0x4a')]=_[_0x397f('0x4b')](_0x406129['where'],{'$or':_['map'](_0x406129[_0x397f('0x42')],function(_0x4ed46a){var _0x2810e8={};_0x2810e8[_0x4ed46a]={'$like':'%'+_0x5a2403[_0x397f('0x3d')]['filter']+'%'};return _0x2810e8;})});}_0x406129=_['merge']({},_0x406129,_0x5a2403[_0x397f('0x4d')]);return db[_0x397f('0x62')][_0x397f('0x26')]({'where':_0x406129[_0x397f('0x4a')]})[_0x397f('0x30')](function(_0x38bba0){_0x298e69[_0x397f('0x26')]=_0x38bba0;if(_0x5a2403[_0x397f('0x3d')][_0x397f('0x4e')]){_0x406129[_0x397f('0x4f')]=[{'all':!![]}];}return db[_0x397f('0x62')][_0x397f('0x50')](_0x406129);})[_0x397f('0x30')](function(_0x5011f2){_0x298e69['rows']=_0x5011f2;return _0x298e69;});}})[_0x397f('0x30')](respondWithFilteredResult(_0x34db50,_0x406129))[_0x397f('0x52')](handleError(_0x34db50,null));};exports[_0x397f('0x65')]=function(_0x899144,_0x3b6cbe,_0x558ba3){return db[_0x397f('0x36')]['find']({'where':{'id':_0x899144[_0x397f('0x54')]['id']}})[_0x397f('0x30')](handleEntityNotFound(_0x3b6cbe,null))[_0x397f('0x30')](function(_0x52be61){if(_0x52be61){return _0x52be61['removeDispositions'](_0x899144[_0x397f('0x3d')][_0x397f('0x66')]);}})['then'](respondWithStatusCode(_0x3b6cbe,null))['catch'](handleError(_0x3b6cbe,null));};exports[_0x397f('0x67')]=function(_0x2f42ff,_0x4f35d1,_0x569de0){return db['CmList'][_0x397f('0x55')]({'where':{'id':_0x2f42ff['params']['id']}})['then'](handleEntityNotFound(_0x4f35d1,null))[_0x397f('0x30')](function(_0x4a6c82){if(_0x4a6c82){var _0x208682=[];var _0x122308={'success':[],'errors':[]};return db[_0x397f('0x68')]['describe']()[_0x397f('0x30')](function(_0x834164){if(_0x2f42ff[_0x397f('0x5e')]['tags']&&_[_0x397f('0x69')](_0x2f42ff['body'][_0x397f('0x6a')])){if(_0x2f42ff['body'][_0x397f('0x6a')][_0x397f('0x43')]){_0x2f42ff[_0x397f('0x5e')][_0x397f('0x6a')]=_0x2f42ff['body'][_0x397f('0x6a')][_0x397f('0x6b')](';')+';';}else{_0x2f42ff[_0x397f('0x5e')][_0x397f('0x6a')]=null;}}else{_0x2f42ff[_0x397f('0x5e')][_0x397f('0x6a')]=null;}if(_0x2f42ff[_0x397f('0x5e')]&&_['isArray'](_0x2f42ff[_0x397f('0x5e')])){for(var _0x44f71d=0x0;_0x44f71d<_0x2f42ff['body']['length'];_0x44f71d+=0x1){_0x2f42ff[_0x397f('0x5e')][_0x44f71d][_0x397f('0x61')]=_0x2f42ff[_0x397f('0x54')]['id'];_0x208682[_0x397f('0x6c')](_0x2f42ff[_0x397f('0x5e')][_0x44f71d]);}return BPromise[_0x397f('0x6d')](_0x208682,function(_0x3161aa){return db[_0x397f('0x68')][_0x397f('0x56')](_[_0x397f('0x6e')](_0x3161aa,['ids','id'])||{},{'fields':_['keys'](_0x834164),'raw':!![]})[_0x397f('0x30')](function(_0x55fb06){_0x122308[_0x397f('0x6f')][_0x397f('0x6c')](_0x55fb06[_0x397f('0x70')]);})[_0x397f('0x52')](function(_0x5d7e1f){_0x122308[_0x397f('0x71')][_0x397f('0x6c')]({'data':_0x3161aa,'error':_0x5d7e1f['message']});});})[_0x397f('0x30')](function(_0x305c6b){return _0x122308;})[_0x397f('0x52')](function(_0x1418e8){return _0x1418e8;});}else{_0x4f35d1['status'](0x190)[_0x397f('0x22')]({'message':'Malformed\x20request\x20syntax'});}});}})['then'](respondWithResult(_0x4f35d1,null))[_0x397f('0x52')](handleError(_0x4f35d1,null));};exports[_0x397f('0x72')]=function(_0x405dd5,_0x1767d9,_0x50c8f1){var _0x4ffafc;return db[_0x397f('0x36')][_0x397f('0x55')]({'where':{'id':_0x405dd5['params']['id']},'include':[{'model':db[_0x397f('0x73')],'as':'CustomFields'}]})[_0x397f('0x30')](handleEntityNotFound(_0x1767d9,null))['then'](function(_0x13d3ad){if(_0x13d3ad){_0x4ffafc=_0x13d3ad;return db['CmContact']['rawAttributes'];}})[_0x397f('0x30')](function(_0x46f1de){if(_0x46f1de){var _0x563981={};var _0x4ce4f5={};_0x4ce4f5[_0x397f('0x3b')]=_['concat'](_[_0x397f('0x3e')](_0x46f1de),_[_0x397f('0x35')](_0x4ffafc[_0x397f('0x74')],function(_0x53d841){return util[_0x397f('0x75')]('cf_%d',_0x53d841['id']);}));_0x4ce4f5[_0x397f('0x3d')]=_[_0x397f('0x3e')](_0x405dd5[_0x397f('0x3d')]);_0x4ce4f5[_0x397f('0x3f')]=_['intersection'](_0x4ce4f5[_0x397f('0x3b')],_0x4ce4f5['query']);_0x563981['attributes']=_['intersection'](_0x4ce4f5[_0x397f('0x3b')],qs[_0x397f('0x41')](_0x405dd5[_0x397f('0x3d')][_0x397f('0x41')]));_0x563981[_0x397f('0x42')]=_0x563981[_0x397f('0x42')]['length']?_0x563981[_0x397f('0x42')]:_0x4ce4f5[_0x397f('0x3b')];if(!_0x405dd5[_0x397f('0x3d')][_0x397f('0x44')](_0x397f('0x45'))){_0x563981['limit']=qs[_0x397f('0x25')](_0x405dd5[_0x397f('0x3d')][_0x397f('0x25')]);_0x563981[_0x397f('0x23')]=qs[_0x397f('0x23')](_0x405dd5['query']['offset']);}_0x563981[_0x397f('0x46')]=qs[_0x397f('0x47')](_0x405dd5[_0x397f('0x3d')]['sort']);_0x563981['where']=qs[_0x397f('0x3f')](_[_0x397f('0x48')](_0x405dd5[_0x397f('0x3d')],_0x4ce4f5[_0x397f('0x3f')]));_0x563981[_0x397f('0x76')]=!![];if(_0x405dd5[_0x397f('0x3d')]['filter']){_0x563981['where']=_[_0x397f('0x4b')](_0x563981[_0x397f('0x4a')],{'$or':_[_0x397f('0x35')](_0x563981[_0x397f('0x42')],function(_0x56242f){var _0x92a010={};_0x92a010[_0x56242f]={'$like':'%'+_0x405dd5[_0x397f('0x3d')][_0x397f('0x49')]+'%'};return _0x92a010;})});}_0x563981=_[_0x397f('0x4b')]({},_0x563981,_0x405dd5[_0x397f('0x4d')]);return _0x4ffafc[_0x397f('0x72')](_0x563981);}})[_0x397f('0x30')](respondWithResult(_0x1767d9,null))[_0x397f('0x52')](handleError(_0x1767d9,null));};exports['getContactsCsv']=function(_0x15e7ab,_0x1b73b2,_0x4848ce){var _0x3b40f5;return db[_0x397f('0x36')][_0x397f('0x55')]({'where':{'id':_0x15e7ab[_0x397f('0x54')]['id']},'include':[{'model':db['CmCustomField'],'as':'CustomFields'}]})[_0x397f('0x30')](handleEntityNotFound(_0x1b73b2,null))[_0x397f('0x30')](function(_0x516aeb){if(_0x516aeb){_0x3b40f5=_0x516aeb;return db[_0x397f('0x68')][_0x397f('0x37')];}})[_0x397f('0x30')](function(_0xd2cea3){if(_0xd2cea3){var _0x1b6097={};var _0x5aee66={};_0x5aee66[_0x397f('0x3b')]=_[_0x397f('0x77')](_['keys'](_0xd2cea3),_[_0x397f('0x35')](_0x3b40f5[_0x397f('0x74')],function(_0xc6057c){return util[_0x397f('0x75')](_0x397f('0x78'),_0xc6057c['id']);}));_0x5aee66['query']=_[_0x397f('0x3e')](_0x15e7ab[_0x397f('0x3d')]);_0x5aee66[_0x397f('0x3f')]=_[_0x397f('0x40')](_0x5aee66['model'],_0x5aee66[_0x397f('0x3d')]);_0x1b6097[_0x397f('0x42')]=_['intersection'](_0x5aee66[_0x397f('0x3b')],qs[_0x397f('0x41')](_0x15e7ab[_0x397f('0x3d')]['fields']));_0x1b6097[_0x397f('0x42')]=_0x1b6097[_0x397f('0x42')][_0x397f('0x43')]?_0x1b6097['attributes']:_0x5aee66[_0x397f('0x3b')];if(!_0x15e7ab[_0x397f('0x3d')]['hasOwnProperty'](_0x397f('0x45'))){_0x1b6097[_0x397f('0x25')]=qs[_0x397f('0x25')](_0x15e7ab[_0x397f('0x3d')][_0x397f('0x25')]);_0x1b6097[_0x397f('0x23')]=qs['offset'](_0x15e7ab[_0x397f('0x3d')][_0x397f('0x23')]);}_0x1b6097[_0x397f('0x46')]=qs[_0x397f('0x47')](_0x15e7ab[_0x397f('0x3d')][_0x397f('0x47')]);_0x1b6097[_0x397f('0x4a')]=qs[_0x397f('0x3f')](_['pick'](_0x15e7ab[_0x397f('0x3d')],_0x5aee66['filters']));_0x1b6097[_0x397f('0x76')]=!![];if(_0x15e7ab[_0x397f('0x3d')]['filter']){_0x1b6097['where']=_[_0x397f('0x4b')](_0x1b6097['where'],{'$or':_[_0x397f('0x35')](_0x1b6097['attributes'],function(_0x3c31cb){var _0x22a353={};_0x22a353[_0x3c31cb]={'$like':'%'+_0x15e7ab[_0x397f('0x3d')][_0x397f('0x49')]+'%'};return _0x22a353;})});}_0x1b6097=_[_0x397f('0x4b')]({},_0x1b6097,_0x15e7ab['options']);return _0x3b40f5[_0x397f('0x72')](_0x1b6097);}})[_0x397f('0x30')](function(_0x29dd12){if(!_[_0x397f('0x79')](_0x29dd12)){var _0x4df175=toCsv(_0x29dd12);var _0x44f32d=Date[_0x397f('0x7a')]();fs[_0x397f('0x7b')](util['format'](_0x397f('0x7c'),_0x3b40f5['id'],_0x44f32d),_0x4df175);_0x1b73b2[_0x397f('0x7d')](_0x397f('0x7e'),_0x397f('0x7f')+util[_0x397f('0x75')](_0x397f('0x80'),_0x3b40f5['id'],_0x44f32d));_0x1b73b2[_0x397f('0x7d')]('Content-type','text/csv');return _0x1b73b2[_0x397f('0x81')](util['format'](_0x397f('0x7c'),_0x3b40f5['id'],_0x44f32d));}else{return _0x1b73b2[_0x397f('0x1f')](0xcc);}})[_0x397f('0x52')](handleError(_0x1b73b2,null));};exports['addCustomField']=function(_0x4122de,_0x3df1f5,_0x450a7f){var _0x3435ee;delete _0x4122de['body']['id'];return db[_0x397f('0x36')][_0x397f('0x64')]({'where':{'id':_0x4122de[_0x397f('0x54')]['id']}})[_0x397f('0x30')](handleEntityNotFound(_0x3df1f5,null))['then'](function(_0x14bdf0){if(_0x14bdf0){return db[_0x397f('0x82')][_0x397f('0x83')](function(_0x2c1561){return db[_0x397f('0x73')][_0x397f('0x56')](_0x4122de['body'],{'transaction':_0x2c1561})[_0x397f('0x30')](function(_0x17d792){_0x3435ee=_0x17d792;return _0x14bdf0[_0x397f('0x84')](_0x17d792,{'transaction':_0x2c1561});})[_0x397f('0x30')](function(){var _0x38a50={'type':db[_0x397f('0x85')][_0x397f('0x86')],'transaction':_0x2c1561};switch(_0x4122de[_0x397f('0x5e')]['type']){case _0x397f('0x87'):_0x38a50['type']=db[_0x397f('0x85')][_0x397f('0x86')];break;case'number':_0x38a50[_0x397f('0x39')]=db[_0x397f('0x85')][_0x397f('0x88')];break;case'switch':_0x38a50[_0x397f('0x39')]=db[_0x397f('0x85')][_0x397f('0x89')];_0x38a50['defaultValue']=![];break;default:}return db[_0x397f('0x82')][_0x397f('0x8a')][_0x397f('0x8b')](_0x397f('0x8c'),util[_0x397f('0x75')]('cf_%s',_0x3435ee['id']),_0x38a50);})[_0x397f('0x30')](function(){return _0x3435ee;});});}})[_0x397f('0x30')](respondWithResult(_0x3df1f5,null))[_0x397f('0x52')](handleError(_0x3df1f5,null));};exports[_0x397f('0x8d')]=function(_0x33664e,_0x4b0548,_0x4888fc){var _0x2312c9={};var _0xcb9119={};var _0x3d5cfe;var _0x5779d0;return db[_0x397f('0x36')][_0x397f('0x64')]({'where':{'id':_0x33664e[_0x397f('0x54')]['id']}})['then'](handleEntityNotFound(_0x4b0548,null))['then'](function(_0x55ebcf){if(_0x55ebcf){_0x3d5cfe=_0x55ebcf;_0xcb9119[_0x397f('0x3b')]=_[_0x397f('0x3e')](db[_0x397f('0x73')][_0x397f('0x37')]);_0xcb9119[_0x397f('0x3d')]=_[_0x397f('0x3e')](_0x33664e[_0x397f('0x3d')]);_0xcb9119[_0x397f('0x3f')]=_[_0x397f('0x40')](_0xcb9119[_0x397f('0x3b')],_0xcb9119['query']);_0x2312c9[_0x397f('0x42')]=_[_0x397f('0x40')](_0xcb9119[_0x397f('0x3b')],qs[_0x397f('0x41')](_0x33664e[_0x397f('0x3d')][_0x397f('0x41')]));_0x2312c9['attributes']=_0x2312c9['attributes'][_0x397f('0x43')]?_0x2312c9[_0x397f('0x42')]:_0xcb9119['model'];_0x2312c9['order']=qs[_0x397f('0x47')](_0x33664e['query'][_0x397f('0x47')]);_0x2312c9[_0x397f('0x4a')]=qs[_0x397f('0x3f')](_[_0x397f('0x48')](_0x33664e[_0x397f('0x3d')],_0xcb9119[_0x397f('0x3f')]));_0x2312c9[_0x397f('0x4a')]=_[_0x397f('0x4b')](_0x2312c9[_0x397f('0x4a')],{'$or':[{'ListId':_0x55ebcf['id']},{'ListId':null}]});if(_0x33664e[_0x397f('0x3d')][_0x397f('0x49')]){_0x2312c9['where']=_[_0x397f('0x4b')](_0x2312c9[_0x397f('0x4a')],{'$or':_[_0x397f('0x35')](_0x2312c9[_0x397f('0x42')],function(_0x3a10c1){var _0x29e5f9={};_0x29e5f9[_0x3a10c1]={'$like':'%'+_0x33664e[_0x397f('0x3d')]['filter']+'%'};return _0x29e5f9;})});}_0x2312c9=_[_0x397f('0x4b')]({},_0x2312c9,_0x33664e[_0x397f('0x4d')]);return db[_0x397f('0x73')]['findAndCountAll'](_0x2312c9);}})[_0x397f('0x30')](respondWithResult(_0x4b0548,null))['catch'](handleError(_0x4b0548,null));};exports[_0x397f('0x8e')]=function(_0x29db63,_0x31d7bb,_0x44c5a3){return db['CmList'][_0x397f('0x55')]({'where':{'id':_0x29db63[_0x397f('0x54')]['id']}})['then'](handleEntityNotFound(_0x31d7bb,null))[_0x397f('0x30')](function(_0x3dd47b){if(_0x3dd47b){return _0x3dd47b[_0x397f('0x8e')](_0x29db63[_0x397f('0x5e')][_0x397f('0x66')],_[_0x397f('0x6e')](_0x29db63[_0x397f('0x5e')],[_0x397f('0x66'),'id'])||{})['spread'](function(_0x357bbc){for(var _0x814c49=0x0;_0x814c49<_0x29db63['body']['ids']['length'];_0x814c49+=0x1){socket['emit'](_0x397f('0x8f'),{'UserId':Number(_0x29db63['body'][_0x397f('0x66')][_0x814c49]),'CmListId':Number(_0x29db63['params']['id'])});}return _0x357bbc;});}})['then'](respondWithResult(_0x31d7bb,null))['catch'](handleError(_0x31d7bb,null));};exports[_0x397f('0x90')]=function(_0x3fbf9f,_0x4476c0,_0x538362){return db['CmList'][_0x397f('0x55')]({'where':{'id':_0x3fbf9f[_0x397f('0x54')]['id']}})['then'](handleEntityNotFound(_0x4476c0,null))[_0x397f('0x30')](function(_0x3b1507){if(_0x3b1507){return _0x3b1507[_0x397f('0x90')](_0x3fbf9f[_0x397f('0x3d')][_0x397f('0x66')])[_0x397f('0x30')](function(){if(_['isArray'](_0x3fbf9f[_0x397f('0x3d')][_0x397f('0x66')])){for(var _0x3dd59d=0x0;_0x3dd59d<_0x3fbf9f[_0x397f('0x3d')][_0x397f('0x66')][_0x397f('0x43')];_0x3dd59d+=0x1){socket[_0x397f('0x91')](_0x397f('0x92'),{'UserId':Number(_0x3fbf9f[_0x397f('0x3d')][_0x397f('0x66')][_0x3dd59d]),'CmListId':Number(_0x3fbf9f[_0x397f('0x54')]['id'])});}}else{socket[_0x397f('0x91')]('userCmList:remove',{'UserId':Number(_0x3fbf9f[_0x397f('0x3d')][_0x397f('0x66')]),'CmListId':Number(_0x3fbf9f[_0x397f('0x54')]['id'])});}});}})[_0x397f('0x30')](respondWithStatusCode(_0x4476c0,null))[_0x397f('0x52')](handleError(_0x4476c0,null));};exports[_0x397f('0x93')]=function(_0x165cf8,_0x4000d2,_0x56b729){var _0x607025={};var _0x3c01f8={};var _0x24e857;var _0x402c3a;return db[_0x397f('0x36')]['findOne']({'where':{'id':_0x165cf8[_0x397f('0x54')]['id']}})['then'](handleEntityNotFound(_0x4000d2,null))[_0x397f('0x30')](function(_0x35efd3){if(_0x35efd3){_0x24e857=_0x35efd3;_0x3c01f8[_0x397f('0x3b')]=_[_0x397f('0x3e')](db[_0x397f('0x94')]['rawAttributes']);_0x3c01f8['query']=_['keys'](_0x165cf8[_0x397f('0x3d')]);_0x3c01f8[_0x397f('0x3f')]=_['intersection'](_0x3c01f8[_0x397f('0x3b')],_0x3c01f8[_0x397f('0x3d')]);_0x607025['attributes']=_['intersection'](_0x3c01f8[_0x397f('0x3b')],qs['fields'](_0x165cf8['query'][_0x397f('0x41')]));_0x607025[_0x397f('0x42')]=_0x607025['attributes'][_0x397f('0x43')]?_0x607025[_0x397f('0x42')]:_0x3c01f8[_0x397f('0x3b')];_0x607025['order']=qs['sort'](_0x165cf8[_0x397f('0x3d')][_0x397f('0x47')]);_0x607025['where']=qs[_0x397f('0x3f')](_[_0x397f('0x48')](_0x165cf8[_0x397f('0x3d')],_0x3c01f8[_0x397f('0x3f')]));if(_0x165cf8[_0x397f('0x3d')][_0x397f('0x49')]){_0x607025['where']=_[_0x397f('0x4b')](_0x607025[_0x397f('0x4a')],{'$or':_[_0x397f('0x35')](_0x607025[_0x397f('0x42')],function(_0x5e206c){var _0x207e9a={};_0x207e9a[_0x5e206c]={'$like':'%'+_0x165cf8[_0x397f('0x3d')][_0x397f('0x49')]+'%'};return _0x207e9a;})});}_0x607025=_[_0x397f('0x4b')]({},_0x607025,_0x165cf8['options']);return _0x24e857['getAgents'](_0x607025);}})[_0x397f('0x30')](function(_0x5ba85a){if(_0x5ba85a){_0x402c3a=_0x5ba85a[_0x397f('0x43')];if(!_0x165cf8[_0x397f('0x3d')][_0x397f('0x44')](_0x397f('0x45'))){_0x607025[_0x397f('0x25')]=qs[_0x397f('0x25')](_0x165cf8[_0x397f('0x3d')][_0x397f('0x25')]);_0x607025[_0x397f('0x23')]=qs[_0x397f('0x23')](_0x165cf8[_0x397f('0x3d')]['offset']);}return _0x24e857[_0x397f('0x93')](_0x607025);}})['then'](function(_0x1023e0){if(_0x1023e0){return _0x1023e0?{'count':_0x402c3a,'rows':_0x1023e0}:null;}})['then'](respondWithResult(_0x4000d2,null))[_0x397f('0x52')](handleError(_0x4000d2,null));};
\ No newline at end of file
+var _0x209c=['api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./cmList.socket','sendStatus','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','get','Lists','destroy','status','error','name','send','index','CmList','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','filter','merge','map','includeAll','findAll','rows','catch','show','params','include','options','create','body','user','UserProfileSection','find','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','ListId','Disposition','findOne','pick','removeDispositions','addContacts','CmContact','tags','join','isArray','push','each','omit','success','dataValues','errors','message','getContacts','CustomFields','format','cf_%d','raw','getContactsCsv','isEmpty','now','writeFileSync','/tmp/list_%d_%s.csv','attachment;\x20filename=','list_%d_%s.csv','setHeader','Content-type','text/csv','addCustomField','sequelize','transaction','CmCustomField','Sequelize','TEXT','text','number','INTEGER','switch','defaultValue','queryInterface','addColumn','cm_contacts','getCustomFields','findAndCountAll','addAgents','ids','spread','userCmList:save','removeAgents','emit','userCmList:remove','getAgents','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger'];(function(_0x1ebd6a,_0x49ac75){var _0x32112c=function(_0x2452e5){while(--_0x2452e5){_0x1ebd6a['push'](_0x1ebd6a['shift']());}};_0x32112c(++_0x49ac75);}(_0x209c,0x1a5));var _0xc209=function(_0x725cb5,_0x4fc050){_0x725cb5=_0x725cb5-0x0;var _0x3b3d99=_0x209c[_0x725cb5];return _0x3b3d99;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xc209('0x0'));var zipdir=require(_0xc209('0x1'));var jsonpatch=require(_0xc209('0x2'));var rp=require(_0xc209('0x3'));var moment=require('moment');var BPromise=require(_0xc209('0x4'));var Mustache=require(_0xc209('0x5'));var util=require('util');var path=require(_0xc209('0x6'));var sox=require(_0xc209('0x7'));var csv=require(_0xc209('0x8'));var ejs=require(_0xc209('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xc209('0xa'));var squel=require(_0xc209('0xb'));var crypto=require(_0xc209('0xc'));var jsforce=require(_0xc209('0xd'));var deskjs=require(_0xc209('0xe'));var toCsv=require(_0xc209('0x8'));var querystring=require('querystring');var Papa=require(_0xc209('0xf'));var Redis=require('ioredis');var authService=require(_0xc209('0x10'));var qs=require(_0xc209('0x11'));var as=require(_0xc209('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xc209('0x13'))(_0xc209('0x14'));var utils=require(_0xc209('0x15'));var config=require(_0xc209('0x16'));var licenseUtil=require(_0xc209('0x17'));var db=require(_0xc209('0x18'))['db'];config[_0xc209('0x19')]=_[_0xc209('0x1a')](config[_0xc209('0x19')],{'host':_0xc209('0x1b'),'port':0x18eb});var socket=require(_0xc209('0x1c'))(new Redis(config[_0xc209('0x19')]));require(_0xc209('0x1d'))['register'](socket);function respondWithStatusCode(_0x34d8f1,_0x2712c8){_0x2712c8=_0x2712c8||0xcc;return function(_0x5e34ca){if(_0x5e34ca){return _0x34d8f1[_0xc209('0x1e')](_0x2712c8);}return _0x34d8f1['status'](_0x2712c8)[_0xc209('0x1f')]();};}function respondWithResult(_0xa0eb1,_0xc7421e){_0xc7421e=_0xc7421e||0xc8;return function(_0x59852b){if(_0x59852b){return _0xa0eb1['status'](_0xc7421e)[_0xc209('0x20')](_0x59852b);}};}function respondWithFilteredResult(_0xa0a74c,_0x18756c){return function(_0x2ccccd){if(_0x2ccccd){var _0x3bf586=typeof _0x18756c[_0xc209('0x21')]===_0xc209('0x22')&&typeof _0x18756c[_0xc209('0x23')]===_0xc209('0x22');var _0x27c6a4=_0x2ccccd[_0xc209('0x24')];var _0x2e89e6=_0x3bf586?0x0:_0x18756c[_0xc209('0x21')];var _0x1713b1=_0x3bf586?_0x2ccccd['count']:_0x18756c[_0xc209('0x21')]+_0x18756c[_0xc209('0x23')];var _0x39cd4d;if(_0x1713b1>=_0x27c6a4){_0x1713b1=_0x27c6a4;_0x39cd4d=0xc8;}else{_0x39cd4d=0xce;}_0xa0a74c['status'](_0x39cd4d);return _0xa0a74c[_0xc209('0x25')](_0xc209('0x26'),_0x2e89e6+'-'+_0x1713b1+'/'+_0x27c6a4)[_0xc209('0x20')](_0x2ccccd);}return null;};}function patchUpdates(_0x44a1d3){return function(_0x4e5f74){try{jsonpatch[_0xc209('0x27')](_0x4e5f74,_0x44a1d3,!![]);}catch(_0x4354d2){return BPromise[_0xc209('0x28')](_0x4354d2);}return _0x4e5f74[_0xc209('0x29')]();};}function saveUpdates(_0x90dad2,_0x3facb4){return function(_0x3e2c88){if(_0x3e2c88){return _0x3e2c88[_0xc209('0x2a')](_0x90dad2)[_0xc209('0x2b')](function(_0x5aef95){return _0x5aef95;});}return null;};}function removeEntity(_0x484260,_0x36d563){return function(_0x33375c){if(_0x33375c){return _0x33375c['destroy']()[_0xc209('0x2b')](function(){var _0x2f273d=_0x33375c[_0xc209('0x2c')]({'plain':!![]});var _0x458950=_0xc209('0x2d');return db['UserProfileResource'][_0xc209('0x2e')]({'where':{'type':_0x458950,'resourceId':_0x2f273d['id']}})[_0xc209('0x2b')](function(){return _0x33375c;});})[_0xc209('0x2b')](function(){_0x484260[_0xc209('0x2f')](0xcc)[_0xc209('0x1f')]();});}};}function handleEntityNotFound(_0x48a4ef,_0x47196f){return function(_0x4a330f){if(!_0x4a330f){_0x48a4ef[_0xc209('0x1e')](0x194);}return _0x4a330f;};}function handleError(_0x387b16,_0x2f5870){_0x2f5870=_0x2f5870||0x1f4;return function(_0x526859){logger[_0xc209('0x30')](_0x526859['stack']);if(_0x526859[_0xc209('0x31')]){delete _0x526859[_0xc209('0x31')];}_0x387b16[_0xc209('0x2f')](_0x2f5870)[_0xc209('0x32')](_0x526859);};}exports[_0xc209('0x33')]=function(_0x32c233,_0x2b13db){var _0x5a3509={},_0x21f338={},_0x15ecf8={'count':0x0,'rows':[]};var _0x2bb9c3=_['map'](db[_0xc209('0x34')][_0xc209('0x35')],function(_0x111a3c){return{'name':_0x111a3c[_0xc209('0x36')],'type':_0x111a3c[_0xc209('0x37')][_0xc209('0x38')]};});_0x21f338[_0xc209('0x39')]=_['map'](_0x2bb9c3,_0xc209('0x31'));_0x21f338[_0xc209('0x3a')]=_[_0xc209('0x3b')](_0x32c233[_0xc209('0x3a')]);_0x21f338['filters']=_[_0xc209('0x3c')](_0x21f338[_0xc209('0x39')],_0x21f338[_0xc209('0x3a')]);_0x5a3509[_0xc209('0x3d')]=_[_0xc209('0x3c')](_0x21f338[_0xc209('0x39')],qs[_0xc209('0x3e')](_0x32c233[_0xc209('0x3a')]['fields']));_0x5a3509[_0xc209('0x3d')]=_0x5a3509[_0xc209('0x3d')][_0xc209('0x3f')]?_0x5a3509[_0xc209('0x3d')]:_0x21f338['model'];if(!_0x32c233[_0xc209('0x3a')][_0xc209('0x40')](_0xc209('0x41'))){_0x5a3509['limit']=qs['limit'](_0x32c233[_0xc209('0x3a')][_0xc209('0x23')]);_0x5a3509[_0xc209('0x21')]=qs[_0xc209('0x21')](_0x32c233[_0xc209('0x3a')]['offset']);}_0x5a3509[_0xc209('0x42')]=qs[_0xc209('0x43')](_0x32c233[_0xc209('0x3a')][_0xc209('0x43')]);_0x5a3509[_0xc209('0x44')]=qs[_0xc209('0x45')](_['pick'](_0x32c233[_0xc209('0x3a')],_0x21f338[_0xc209('0x45')]),_0x2bb9c3);if(_0x32c233['query'][_0xc209('0x46')]){_0x5a3509[_0xc209('0x44')]=_[_0xc209('0x47')](_0x5a3509['where'],{'$or':_[_0xc209('0x48')](_0x2bb9c3,function(_0xff365a){if(_0xff365a['type']!=='VIRTUAL'){var _0x49eb62={};_0x49eb62[_0xff365a[_0xc209('0x31')]]={'$like':'%'+_0x32c233[_0xc209('0x3a')]['filter']+'%'};return _0x49eb62;}})});}_0x5a3509=_[_0xc209('0x47')]({},_0x5a3509,_0x32c233['options']);var _0x261aa6={'where':_0x5a3509['where']};return db['CmList'][_0xc209('0x24')](_0x261aa6)['then'](function(_0x18aa9f){_0x15ecf8[_0xc209('0x24')]=_0x18aa9f;if(_0x32c233[_0xc209('0x3a')][_0xc209('0x49')]){_0x5a3509['include']=[{'all':!![]}];}return db[_0xc209('0x34')][_0xc209('0x4a')](_0x5a3509);})['then'](function(_0x4f45c3){_0x15ecf8[_0xc209('0x4b')]=_0x4f45c3;return _0x15ecf8;})['then'](respondWithFilteredResult(_0x2b13db,_0x5a3509))[_0xc209('0x4c')](handleError(_0x2b13db,null));};exports[_0xc209('0x4d')]=function(_0x3cccd8,_0xd8eab4){var _0x3656ae={'raw':![],'where':{'id':_0x3cccd8[_0xc209('0x4e')]['id']}},_0xe12684={};_0xe12684[_0xc209('0x39')]=_[_0xc209('0x3b')](db[_0xc209('0x34')][_0xc209('0x35')]);_0xe12684[_0xc209('0x3a')]=_[_0xc209('0x3b')](_0x3cccd8[_0xc209('0x3a')]);_0xe12684[_0xc209('0x45')]=_[_0xc209('0x3c')](_0xe12684['model'],_0xe12684[_0xc209('0x3a')]);_0x3656ae[_0xc209('0x3d')]=_[_0xc209('0x3c')](_0xe12684[_0xc209('0x39')],qs[_0xc209('0x3e')](_0x3cccd8[_0xc209('0x3a')][_0xc209('0x3e')]));_0x3656ae['attributes']=_0x3656ae['attributes']['length']?_0x3656ae[_0xc209('0x3d')]:_0xe12684[_0xc209('0x39')];if(_0x3cccd8[_0xc209('0x3a')]['includeAll']){_0x3656ae[_0xc209('0x4f')]=[{'all':!![]}];}_0x3656ae=_[_0xc209('0x47')]({},_0x3656ae,_0x3cccd8[_0xc209('0x50')]);return db[_0xc209('0x34')]['find'](_0x3656ae)['then'](handleEntityNotFound(_0xd8eab4,null))['then'](respondWithResult(_0xd8eab4,null))['catch'](handleError(_0xd8eab4,null));};exports['create']=function(_0x3777e7,_0x151e3f){return db[_0xc209('0x34')][_0xc209('0x51')](_0x3777e7[_0xc209('0x52')],{})[_0xc209('0x2b')](function(_0x3ffa01){var _0xf27ff7=_0x3777e7[_0xc209('0x53')][_0xc209('0x2c')]({'plain':!![]});if(!_0xf27ff7)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0xf27ff7['role']===_0xc209('0x53')){var _0x15e916=_0x3ffa01[_0xc209('0x2c')]({'plain':!![]});var _0x4ef8ac=_0xc209('0x2d');return db[_0xc209('0x54')][_0xc209('0x55')]({'where':{'name':_0x4ef8ac,'userProfileId':_0xf27ff7[_0xc209('0x56')]},'raw':!![]})[_0xc209('0x2b')](function(_0x576192){if(_0x576192&&_0x576192[_0xc209('0x57')]===0x0){return db[_0xc209('0x58')][_0xc209('0x51')]({'name':_0x15e916[_0xc209('0x31')],'resourceId':_0x15e916['id'],'type':_0x576192[_0xc209('0x31')],'sectionId':_0x576192['id']},{})[_0xc209('0x2b')](function(){return _0x3ffa01;});}else{return _0x3ffa01;}})[_0xc209('0x4c')](function(_0x4755d4){logger[_0xc209('0x30')](_0xc209('0x59'),_0x4755d4);throw _0x4755d4;});}return _0x3ffa01;})['then'](respondWithResult(_0x151e3f,0xc9))[_0xc209('0x4c')](handleError(_0x151e3f,null));};exports[_0xc209('0x2a')]=function(_0x510069,_0x1beff5){if(_0x510069['body']['id']){delete _0x510069[_0xc209('0x52')]['id'];}return db[_0xc209('0x34')]['find']({'where':{'id':_0x510069[_0xc209('0x4e')]['id']}})[_0xc209('0x2b')](handleEntityNotFound(_0x1beff5,null))['then'](saveUpdates(_0x510069[_0xc209('0x52')],null))[_0xc209('0x2b')](respondWithResult(_0x1beff5,null))[_0xc209('0x4c')](handleError(_0x1beff5,null));};exports[_0xc209('0x2e')]=function(_0x49926b,_0x33a224){return db[_0xc209('0x34')]['find']({'where':{'id':_0x49926b[_0xc209('0x4e')]['id']}})[_0xc209('0x2b')](handleEntityNotFound(_0x33a224,null))[_0xc209('0x2b')](removeEntity(_0x33a224,null))[_0xc209('0x4c')](handleError(_0x33a224,null));};exports['describe']=function(_0x2753bc,_0x230ea4){return db[_0xc209('0x34')][_0xc209('0x5a')]()[_0xc209('0x2b')](respondWithResult(_0x230ea4,null))['catch'](handleError(_0x230ea4,null));};exports['addDisposition']=function(_0x49bede,_0x4e8909,_0x555b6e){if(_0x49bede[_0xc209('0x52')]['id']){delete _0x49bede[_0xc209('0x52')]['id'];}return db['CmList'][_0xc209('0x55')]({'where':{'id':_0x49bede[_0xc209('0x4e')]['id']}})[_0xc209('0x2b')](handleEntityNotFound(_0x4e8909,null))['then'](function(_0x419a87){if(_0x419a87){_0x49bede[_0xc209('0x52')][_0xc209('0x5b')]=_0x419a87['id'];return db[_0xc209('0x5c')][_0xc209('0x51')](_0x49bede['body']);}})[_0xc209('0x2b')](respondWithResult(_0x4e8909,null))[_0xc209('0x4c')](handleError(_0x4e8909,null));};exports['getDispositions']=function(_0x1b1e40,_0xa1e1b7,_0x15b191){var _0x2c67c9={'raw':![],'where':{}};var _0x191d9f={};var _0x5a8e31={'count':0x0,'rows':[]};return db[_0xc209('0x34')][_0xc209('0x5d')]({'where':{'id':_0x1b1e40[_0xc209('0x4e')]['id']}})[_0xc209('0x2b')](handleEntityNotFound(_0xa1e1b7,null))[_0xc209('0x2b')](function(_0x30f746){if(_0x30f746){_0x191d9f[_0xc209('0x39')]=_[_0xc209('0x3b')](db[_0xc209('0x5c')][_0xc209('0x35')]);_0x191d9f[_0xc209('0x3a')]=_[_0xc209('0x3b')](_0x1b1e40[_0xc209('0x3a')]);_0x191d9f[_0xc209('0x45')]=_['intersection'](_0x191d9f[_0xc209('0x39')],_0x191d9f[_0xc209('0x3a')]);_0x2c67c9[_0xc209('0x3d')]=_[_0xc209('0x3c')](_0x191d9f[_0xc209('0x39')],qs['fields'](_0x1b1e40[_0xc209('0x3a')][_0xc209('0x3e')]));_0x2c67c9[_0xc209('0x3d')]=_0x2c67c9[_0xc209('0x3d')][_0xc209('0x3f')]?_0x2c67c9['attributes']:_0x191d9f[_0xc209('0x39')];if(!_0x1b1e40['query'][_0xc209('0x40')](_0xc209('0x41'))){_0x2c67c9['limit']=qs[_0xc209('0x23')](_0x1b1e40[_0xc209('0x3a')][_0xc209('0x23')]);_0x2c67c9['offset']=qs[_0xc209('0x21')](_0x1b1e40[_0xc209('0x3a')]['offset']);}_0x2c67c9['order']=qs[_0xc209('0x43')](_0x1b1e40[_0xc209('0x3a')][_0xc209('0x43')]);_0x2c67c9[_0xc209('0x44')]=qs[_0xc209('0x45')](_[_0xc209('0x5e')](_0x1b1e40[_0xc209('0x3a')],_0x191d9f[_0xc209('0x45')]));_0x2c67c9[_0xc209('0x44')][_0xc209('0x5b')]=_0x30f746['id'];if(_0x1b1e40['query'][_0xc209('0x46')]){_0x2c67c9[_0xc209('0x44')]=_[_0xc209('0x47')](_0x2c67c9[_0xc209('0x44')],{'$or':_[_0xc209('0x48')](_0x2c67c9[_0xc209('0x3d')],function(_0x50d98a){var _0x1af592={};_0x1af592[_0x50d98a]={'$like':'%'+_0x1b1e40[_0xc209('0x3a')][_0xc209('0x46')]+'%'};return _0x1af592;})});}_0x2c67c9=_[_0xc209('0x47')]({},_0x2c67c9,_0x1b1e40[_0xc209('0x50')]);return db['Disposition']['count']({'where':_0x2c67c9[_0xc209('0x44')]})['then'](function(_0xc59787){_0x5a8e31['count']=_0xc59787;if(_0x1b1e40['query'][_0xc209('0x49')]){_0x2c67c9[_0xc209('0x4f')]=[{'all':!![]}];}return db[_0xc209('0x5c')][_0xc209('0x4a')](_0x2c67c9);})[_0xc209('0x2b')](function(_0x33a088){_0x5a8e31[_0xc209('0x4b')]=_0x33a088;return _0x5a8e31;});}})[_0xc209('0x2b')](respondWithFilteredResult(_0xa1e1b7,_0x2c67c9))['catch'](handleError(_0xa1e1b7,null));};exports[_0xc209('0x5f')]=function(_0xc8f781,_0x3c32d0,_0x19f5f1){return db[_0xc209('0x34')]['find']({'where':{'id':_0xc8f781[_0xc209('0x4e')]['id']}})[_0xc209('0x2b')](handleEntityNotFound(_0x3c32d0,null))[_0xc209('0x2b')](function(_0x3bccc6){if(_0x3bccc6){return _0x3bccc6['removeDispositions'](_0xc8f781[_0xc209('0x3a')]['ids']);}})['then'](respondWithStatusCode(_0x3c32d0,null))[_0xc209('0x4c')](handleError(_0x3c32d0,null));};exports[_0xc209('0x60')]=function(_0x2f2b88,_0x32fbb0,_0x4f1f58){return db[_0xc209('0x34')][_0xc209('0x55')]({'where':{'id':_0x2f2b88[_0xc209('0x4e')]['id']}})[_0xc209('0x2b')](handleEntityNotFound(_0x32fbb0,null))[_0xc209('0x2b')](function(_0x3cb860){if(_0x3cb860){var _0x1d00ab=[];var _0x1888be={'success':[],'errors':[]};return db[_0xc209('0x61')][_0xc209('0x5a')]()['then'](function(_0x3f618b){if(_0x2f2b88[_0xc209('0x52')][_0xc209('0x62')]&&_['isArray'](_0x2f2b88['body'][_0xc209('0x62')])){if(_0x2f2b88[_0xc209('0x52')][_0xc209('0x62')][_0xc209('0x3f')]){_0x2f2b88[_0xc209('0x52')]['tags']=_0x2f2b88[_0xc209('0x52')][_0xc209('0x62')][_0xc209('0x63')](';')+';';}else{_0x2f2b88['body']['tags']=null;}}else{_0x2f2b88[_0xc209('0x52')][_0xc209('0x62')]=null;}if(_0x2f2b88['body']&&_[_0xc209('0x64')](_0x2f2b88[_0xc209('0x52')])){for(var _0x230f01=0x0;_0x230f01<_0x2f2b88[_0xc209('0x52')]['length'];_0x230f01+=0x1){_0x2f2b88['body'][_0x230f01]['ListId']=_0x2f2b88['params']['id'];_0x1d00ab[_0xc209('0x65')](_0x2f2b88[_0xc209('0x52')][_0x230f01]);}return BPromise[_0xc209('0x66')](_0x1d00ab,function(_0x25efcb){return db[_0xc209('0x61')][_0xc209('0x51')](_[_0xc209('0x67')](_0x25efcb,['ids','id'])||{},{'fields':_[_0xc209('0x3b')](_0x3f618b),'raw':!![]})[_0xc209('0x2b')](function(_0x10fe09){_0x1888be[_0xc209('0x68')][_0xc209('0x65')](_0x10fe09[_0xc209('0x69')]);})[_0xc209('0x4c')](function(_0x9479ef){_0x1888be[_0xc209('0x6a')][_0xc209('0x65')]({'data':_0x25efcb,'error':_0x9479ef[_0xc209('0x6b')]});});})[_0xc209('0x2b')](function(_0x4606ac){return _0x1888be;})[_0xc209('0x4c')](function(_0x1b9691){return _0x1b9691;});}else{_0x32fbb0[_0xc209('0x2f')](0x190)[_0xc209('0x20')]({'message':'Malformed\x20request\x20syntax'});}});}})[_0xc209('0x2b')](respondWithResult(_0x32fbb0,null))[_0xc209('0x4c')](handleError(_0x32fbb0,null));};exports[_0xc209('0x6c')]=function(_0x22d260,_0x6679ec,_0x951792){var _0x465ca3;return db[_0xc209('0x34')][_0xc209('0x55')]({'where':{'id':_0x22d260[_0xc209('0x4e')]['id']},'include':[{'model':db['CmCustomField'],'as':_0xc209('0x6d')}]})[_0xc209('0x2b')](handleEntityNotFound(_0x6679ec,null))['then'](function(_0x21c282){if(_0x21c282){_0x465ca3=_0x21c282;return db[_0xc209('0x61')][_0xc209('0x35')];}})[_0xc209('0x2b')](function(_0x26bde4){if(_0x26bde4){var _0x28f78f={};var _0x2552d1={};_0x2552d1[_0xc209('0x39')]=_['concat'](_[_0xc209('0x3b')](_0x26bde4),_[_0xc209('0x48')](_0x465ca3['CustomFields'],function(_0x9166d3){return util[_0xc209('0x6e')](_0xc209('0x6f'),_0x9166d3['id']);}));_0x2552d1[_0xc209('0x3a')]=_[_0xc209('0x3b')](_0x22d260['query']);_0x2552d1[_0xc209('0x45')]=_[_0xc209('0x3c')](_0x2552d1[_0xc209('0x39')],_0x2552d1[_0xc209('0x3a')]);_0x28f78f[_0xc209('0x3d')]=_[_0xc209('0x3c')](_0x2552d1[_0xc209('0x39')],qs[_0xc209('0x3e')](_0x22d260[_0xc209('0x3a')][_0xc209('0x3e')]));_0x28f78f[_0xc209('0x3d')]=_0x28f78f[_0xc209('0x3d')][_0xc209('0x3f')]?_0x28f78f['attributes']:_0x2552d1[_0xc209('0x39')];if(!_0x22d260[_0xc209('0x3a')][_0xc209('0x40')](_0xc209('0x41'))){_0x28f78f[_0xc209('0x23')]=qs[_0xc209('0x23')](_0x22d260[_0xc209('0x3a')][_0xc209('0x23')]);_0x28f78f[_0xc209('0x21')]=qs['offset'](_0x22d260['query'][_0xc209('0x21')]);}_0x28f78f[_0xc209('0x42')]=qs[_0xc209('0x43')](_0x22d260[_0xc209('0x3a')][_0xc209('0x43')]);_0x28f78f[_0xc209('0x44')]=qs[_0xc209('0x45')](_['pick'](_0x22d260[_0xc209('0x3a')],_0x2552d1['filters']));_0x28f78f[_0xc209('0x70')]=!![];if(_0x22d260[_0xc209('0x3a')][_0xc209('0x46')]){_0x28f78f[_0xc209('0x44')]=_[_0xc209('0x47')](_0x28f78f[_0xc209('0x44')],{'$or':_[_0xc209('0x48')](_0x28f78f[_0xc209('0x3d')],function(_0x417a50){var _0x425683={};_0x425683[_0x417a50]={'$like':'%'+_0x22d260[_0xc209('0x3a')][_0xc209('0x46')]+'%'};return _0x425683;})});}_0x28f78f=_['merge']({},_0x28f78f,_0x22d260[_0xc209('0x50')]);return _0x465ca3['getContacts'](_0x28f78f);}})[_0xc209('0x2b')](respondWithResult(_0x6679ec,null))[_0xc209('0x4c')](handleError(_0x6679ec,null));};exports[_0xc209('0x71')]=function(_0x936870,_0x12339a,_0xddc0aa){var _0x187230;return db[_0xc209('0x34')]['find']({'where':{'id':_0x936870[_0xc209('0x4e')]['id']},'include':[{'model':db['CmCustomField'],'as':_0xc209('0x6d')}]})[_0xc209('0x2b')](handleEntityNotFound(_0x12339a,null))[_0xc209('0x2b')](function(_0x84dff){if(_0x84dff){_0x187230=_0x84dff;return db['CmContact']['rawAttributes'];}})['then'](function(_0x310555){if(_0x310555){var _0xa1b755={};var _0x554a23={};_0x554a23['model']=_['concat'](_[_0xc209('0x3b')](_0x310555),_['map'](_0x187230[_0xc209('0x6d')],function(_0xca14e6){return util[_0xc209('0x6e')]('cf_%d',_0xca14e6['id']);}));_0x554a23[_0xc209('0x3a')]=_[_0xc209('0x3b')](_0x936870[_0xc209('0x3a')]);_0x554a23['filters']=_[_0xc209('0x3c')](_0x554a23['model'],_0x554a23[_0xc209('0x3a')]);_0xa1b755[_0xc209('0x3d')]=_[_0xc209('0x3c')](_0x554a23[_0xc209('0x39')],qs[_0xc209('0x3e')](_0x936870[_0xc209('0x3a')][_0xc209('0x3e')]));_0xa1b755[_0xc209('0x3d')]=_0xa1b755[_0xc209('0x3d')][_0xc209('0x3f')]?_0xa1b755[_0xc209('0x3d')]:_0x554a23[_0xc209('0x39')];if(!_0x936870[_0xc209('0x3a')][_0xc209('0x40')]('nolimit')){_0xa1b755[_0xc209('0x23')]=qs[_0xc209('0x23')](_0x936870[_0xc209('0x3a')][_0xc209('0x23')]);_0xa1b755['offset']=qs['offset'](_0x936870[_0xc209('0x3a')][_0xc209('0x21')]);}_0xa1b755[_0xc209('0x42')]=qs['sort'](_0x936870['query'][_0xc209('0x43')]);_0xa1b755[_0xc209('0x44')]=qs[_0xc209('0x45')](_[_0xc209('0x5e')](_0x936870[_0xc209('0x3a')],_0x554a23['filters']));_0xa1b755[_0xc209('0x70')]=!![];if(_0x936870['query'][_0xc209('0x46')]){_0xa1b755[_0xc209('0x44')]=_[_0xc209('0x47')](_0xa1b755[_0xc209('0x44')],{'$or':_['map'](_0xa1b755[_0xc209('0x3d')],function(_0x42e615){var _0x56372f={};_0x56372f[_0x42e615]={'$like':'%'+_0x936870['query'][_0xc209('0x46')]+'%'};return _0x56372f;})});}_0xa1b755=_[_0xc209('0x47')]({},_0xa1b755,_0x936870[_0xc209('0x50')]);return _0x187230[_0xc209('0x6c')](_0xa1b755);}})['then'](function(_0x275166){if(!_[_0xc209('0x72')](_0x275166)){var _0x2442d6=toCsv(_0x275166);var _0x37c32e=Date[_0xc209('0x73')]();fs[_0xc209('0x74')](util[_0xc209('0x6e')](_0xc209('0x75'),_0x187230['id'],_0x37c32e),_0x2442d6);_0x12339a['setHeader']('Content-disposition',_0xc209('0x76')+util['format'](_0xc209('0x77'),_0x187230['id'],_0x37c32e));_0x12339a[_0xc209('0x78')](_0xc209('0x79'),_0xc209('0x7a'));return _0x12339a['download'](util[_0xc209('0x6e')](_0xc209('0x75'),_0x187230['id'],_0x37c32e));}else{return _0x12339a[_0xc209('0x1e')](0xcc);}})['catch'](handleError(_0x12339a,null));};exports[_0xc209('0x7b')]=function(_0x3738ff,_0x2b7c33,_0x1f75d2){var _0x365049;delete _0x3738ff['body']['id'];return db[_0xc209('0x34')][_0xc209('0x5d')]({'where':{'id':_0x3738ff[_0xc209('0x4e')]['id']}})['then'](handleEntityNotFound(_0x2b7c33,null))[_0xc209('0x2b')](function(_0x3eea2d){if(_0x3eea2d){return db[_0xc209('0x7c')][_0xc209('0x7d')](function(_0x555789){return db[_0xc209('0x7e')]['create'](_0x3738ff[_0xc209('0x52')],{'transaction':_0x555789})[_0xc209('0x2b')](function(_0x19344b){_0x365049=_0x19344b;return _0x3eea2d['addCustomFields'](_0x19344b,{'transaction':_0x555789});})[_0xc209('0x2b')](function(){var _0x5044c6={'type':db[_0xc209('0x7f')][_0xc209('0x80')],'transaction':_0x555789};switch(_0x3738ff[_0xc209('0x52')][_0xc209('0x37')]){case _0xc209('0x81'):_0x5044c6[_0xc209('0x37')]=db[_0xc209('0x7f')][_0xc209('0x80')];break;case _0xc209('0x82'):_0x5044c6[_0xc209('0x37')]=db['Sequelize'][_0xc209('0x83')];break;case _0xc209('0x84'):_0x5044c6[_0xc209('0x37')]=db['Sequelize']['BOOLEAN'];_0x5044c6[_0xc209('0x85')]=![];break;default:}return db['sequelize'][_0xc209('0x86')][_0xc209('0x87')](_0xc209('0x88'),util[_0xc209('0x6e')]('cf_%s',_0x365049['id']),_0x5044c6);})[_0xc209('0x2b')](function(){return _0x365049;});});}})[_0xc209('0x2b')](respondWithResult(_0x2b7c33,null))['catch'](handleError(_0x2b7c33,null));};exports[_0xc209('0x89')]=function(_0x5a575e,_0xf0c53,_0xe02e8b){var _0x39db69={};var _0x5aca28={};var _0x35bdfe;var _0x1111d7;return db['CmList'][_0xc209('0x5d')]({'where':{'id':_0x5a575e['params']['id']}})[_0xc209('0x2b')](handleEntityNotFound(_0xf0c53,null))[_0xc209('0x2b')](function(_0x5a84ce){if(_0x5a84ce){_0x35bdfe=_0x5a84ce;_0x5aca28[_0xc209('0x39')]=_[_0xc209('0x3b')](db[_0xc209('0x7e')][_0xc209('0x35')]);_0x5aca28['query']=_[_0xc209('0x3b')](_0x5a575e[_0xc209('0x3a')]);_0x5aca28['filters']=_[_0xc209('0x3c')](_0x5aca28[_0xc209('0x39')],_0x5aca28[_0xc209('0x3a')]);_0x39db69['attributes']=_[_0xc209('0x3c')](_0x5aca28[_0xc209('0x39')],qs[_0xc209('0x3e')](_0x5a575e['query']['fields']));_0x39db69[_0xc209('0x3d')]=_0x39db69[_0xc209('0x3d')]['length']?_0x39db69[_0xc209('0x3d')]:_0x5aca28[_0xc209('0x39')];_0x39db69[_0xc209('0x42')]=qs[_0xc209('0x43')](_0x5a575e[_0xc209('0x3a')][_0xc209('0x43')]);_0x39db69[_0xc209('0x44')]=qs['filters'](_[_0xc209('0x5e')](_0x5a575e[_0xc209('0x3a')],_0x5aca28['filters']));_0x39db69[_0xc209('0x44')]=_['merge'](_0x39db69[_0xc209('0x44')],{'$or':[{'ListId':_0x5a84ce['id']},{'ListId':null}]});if(_0x5a575e[_0xc209('0x3a')][_0xc209('0x46')]){_0x39db69[_0xc209('0x44')]=_[_0xc209('0x47')](_0x39db69['where'],{'$or':_[_0xc209('0x48')](_0x39db69['attributes'],function(_0x10fdca){var _0x5b959e={};_0x5b959e[_0x10fdca]={'$like':'%'+_0x5a575e[_0xc209('0x3a')][_0xc209('0x46')]+'%'};return _0x5b959e;})});}_0x39db69=_[_0xc209('0x47')]({},_0x39db69,_0x5a575e[_0xc209('0x50')]);return db[_0xc209('0x7e')][_0xc209('0x8a')](_0x39db69);}})[_0xc209('0x2b')](respondWithResult(_0xf0c53,null))[_0xc209('0x4c')](handleError(_0xf0c53,null));};exports[_0xc209('0x8b')]=function(_0x1a34c5,_0x2b6ebb,_0x39b6f0){return db[_0xc209('0x34')][_0xc209('0x55')]({'where':{'id':_0x1a34c5[_0xc209('0x4e')]['id']}})[_0xc209('0x2b')](handleEntityNotFound(_0x2b6ebb,null))[_0xc209('0x2b')](function(_0x1bca21){if(_0x1bca21){return _0x1bca21['addAgents'](_0x1a34c5[_0xc209('0x52')][_0xc209('0x8c')],_[_0xc209('0x67')](_0x1a34c5['body'],[_0xc209('0x8c'),'id'])||{})[_0xc209('0x8d')](function(_0x11fe99){for(var _0x350832=0x0;_0x350832<_0x1a34c5[_0xc209('0x52')][_0xc209('0x8c')][_0xc209('0x3f')];_0x350832+=0x1){socket['emit'](_0xc209('0x8e'),{'UserId':Number(_0x1a34c5[_0xc209('0x52')]['ids'][_0x350832]),'CmListId':Number(_0x1a34c5[_0xc209('0x4e')]['id'])});}return _0x11fe99;});}})[_0xc209('0x2b')](respondWithResult(_0x2b6ebb,null))[_0xc209('0x4c')](handleError(_0x2b6ebb,null));};exports['removeAgents']=function(_0x2f5f2a,_0x29c052,_0x10ec74){return db['CmList']['find']({'where':{'id':_0x2f5f2a['params']['id']}})[_0xc209('0x2b')](handleEntityNotFound(_0x29c052,null))[_0xc209('0x2b')](function(_0x2abf50){if(_0x2abf50){return _0x2abf50[_0xc209('0x8f')](_0x2f5f2a['query'][_0xc209('0x8c')])[_0xc209('0x2b')](function(){if(_[_0xc209('0x64')](_0x2f5f2a[_0xc209('0x3a')][_0xc209('0x8c')])){for(var _0x29e5cb=0x0;_0x29e5cb<_0x2f5f2a[_0xc209('0x3a')][_0xc209('0x8c')]['length'];_0x29e5cb+=0x1){socket[_0xc209('0x90')](_0xc209('0x91'),{'UserId':Number(_0x2f5f2a[_0xc209('0x3a')][_0xc209('0x8c')][_0x29e5cb]),'CmListId':Number(_0x2f5f2a['params']['id'])});}}else{socket[_0xc209('0x90')](_0xc209('0x91'),{'UserId':Number(_0x2f5f2a[_0xc209('0x3a')]['ids']),'CmListId':Number(_0x2f5f2a['params']['id'])});}});}})[_0xc209('0x2b')](respondWithStatusCode(_0x29c052,null))['catch'](handleError(_0x29c052,null));};exports[_0xc209('0x92')]=function(_0xa31f98,_0x48bc5e,_0x3904ca){var _0x2fd690={};var _0x450bbe={};var _0x594748;var _0xd82a70;return db[_0xc209('0x34')][_0xc209('0x5d')]({'where':{'id':_0xa31f98[_0xc209('0x4e')]['id']}})['then'](handleEntityNotFound(_0x48bc5e,null))[_0xc209('0x2b')](function(_0x4f6439){if(_0x4f6439){_0x594748=_0x4f6439;_0x450bbe['model']=_[_0xc209('0x3b')](db['User'][_0xc209('0x35')]);_0x450bbe['query']=_[_0xc209('0x3b')](_0xa31f98[_0xc209('0x3a')]);_0x450bbe[_0xc209('0x45')]=_[_0xc209('0x3c')](_0x450bbe[_0xc209('0x39')],_0x450bbe[_0xc209('0x3a')]);_0x2fd690[_0xc209('0x3d')]=_[_0xc209('0x3c')](_0x450bbe[_0xc209('0x39')],qs[_0xc209('0x3e')](_0xa31f98['query'][_0xc209('0x3e')]));_0x2fd690['attributes']=_0x2fd690[_0xc209('0x3d')]['length']?_0x2fd690[_0xc209('0x3d')]:_0x450bbe[_0xc209('0x39')];_0x2fd690['order']=qs[_0xc209('0x43')](_0xa31f98['query'][_0xc209('0x43')]);_0x2fd690[_0xc209('0x44')]=qs[_0xc209('0x45')](_[_0xc209('0x5e')](_0xa31f98[_0xc209('0x3a')],_0x450bbe[_0xc209('0x45')]));if(_0xa31f98[_0xc209('0x3a')]['filter']){_0x2fd690['where']=_[_0xc209('0x47')](_0x2fd690[_0xc209('0x44')],{'$or':_['map'](_0x2fd690[_0xc209('0x3d')],function(_0x48f177){var _0xb3103b={};_0xb3103b[_0x48f177]={'$like':'%'+_0xa31f98[_0xc209('0x3a')][_0xc209('0x46')]+'%'};return _0xb3103b;})});}_0x2fd690=_[_0xc209('0x47')]({},_0x2fd690,_0xa31f98[_0xc209('0x50')]);return _0x594748[_0xc209('0x92')](_0x2fd690);}})['then'](function(_0x15c8b4){if(_0x15c8b4){_0xd82a70=_0x15c8b4[_0xc209('0x3f')];if(!_0xa31f98['query']['hasOwnProperty'](_0xc209('0x41'))){_0x2fd690[_0xc209('0x23')]=qs[_0xc209('0x23')](_0xa31f98[_0xc209('0x3a')][_0xc209('0x23')]);_0x2fd690[_0xc209('0x21')]=qs[_0xc209('0x21')](_0xa31f98[_0xc209('0x3a')][_0xc209('0x21')]);}return _0x594748[_0xc209('0x92')](_0x2fd690);}})[_0xc209('0x2b')](function(_0x39262c){if(_0x39262c){return _0x39262c?{'count':_0xd82a70,'rows':_0x39262c}:null;}})[_0xc209('0x2b')](respondWithResult(_0x48bc5e,null))['catch'](handleError(_0x48bc5e,null));};
\ No newline at end of file
index b9a9791..1b66e5a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x326f=['exports','events','setMaxListeners','save','update','remove','emit','hook'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x326f,0xd1));var _0xf326=function(_0x507ad2,_0x423ad3){_0x507ad2=_0x507ad2-0x0;var _0x129517=_0x326f[_0x507ad2];return _0x129517;};'use strict';var EventEmitter=require(_0xf326('0x0'));var CmList=require('../../mysqldb')['db']['CmList'];var CmListEvents=new EventEmitter();CmListEvents[_0xf326('0x1')](0x0);var events={'afterCreate':_0xf326('0x2'),'afterUpdate':_0xf326('0x3'),'afterDestroy':_0xf326('0x4')};function emitEvent(_0x27e8d7){return function(_0x120a26,_0x9445c6,_0xf1c243){CmListEvents[_0xf326('0x5')](_0x27e8d7+':'+_0x120a26['id'],_0x120a26);CmListEvents[_0xf326('0x5')](_0x27e8d7,_0x120a26);_0xf1c243(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];CmList[_0xf326('0x6')](e,emitEvent(event));}}module[_0xf326('0x7')]=CmListEvents;
\ No newline at end of file
+var _0x7217=['emit','hasOwnProperty','hook','exports','events','CmList','setMaxListeners','save','update','remove'];(function(_0x1b2748,_0x4b3ad2){var _0x18fe11=function(_0x561c11){while(--_0x561c11){_0x1b2748['push'](_0x1b2748['shift']());}};_0x18fe11(++_0x4b3ad2);}(_0x7217,0x19e));var _0x7721=function(_0x4fc9e6,_0xc51915){_0x4fc9e6=_0x4fc9e6-0x0;var _0x551d28=_0x7217[_0x4fc9e6];return _0x551d28;};'use strict';var EventEmitter=require(_0x7721('0x0'));var CmList=require('../../mysqldb')['db'][_0x7721('0x1')];var CmListEvents=new EventEmitter();CmListEvents[_0x7721('0x2')](0x0);var events={'afterCreate':_0x7721('0x3'),'afterUpdate':_0x7721('0x4'),'afterDestroy':_0x7721('0x5')};function emitEvent(_0x4d6446){return function(_0x5bf160,_0x472a96,_0xce17f9){CmListEvents[_0x7721('0x6')](_0x4d6446+':'+_0x5bf160['id'],_0x5bf160);CmListEvents[_0x7721('0x6')](_0x4d6446,_0x5bf160);_0xce17f9(null);};}for(var e in events){if(events[_0x7721('0x7')](e)){var event=events[e];CmList[_0x7721('0x8')](e,emitEvent(event));}}module[_0x7721('0x9')]=CmListEvents;
\ No newline at end of file
index 21decb8..605a7a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['request-promise','path','rimraf','../../config/environment','./cmList.attributes','exports','define','CmList','cm_lists','lodash','util','../../config/logger','moment','bluebird'];(function(_0x3d4e2e,_0x2a90ea){var _0x1f710b=function(_0x3f090b){while(--_0x3f090b){_0x3d4e2e['push'](_0x3d4e2e['shift']());}};_0x1f710b(++_0x2a90ea);}(_0xe706,0xa3));var _0x6e70=function(_0x54cef6,_0x146b0e){_0x54cef6=_0x54cef6-0x0;var _0x39aacf=_0xe706[_0x54cef6];return _0x39aacf;};'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':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xee5b=['request-promise','path','rimraf','exports','define','lodash','../../config/logger','api','bluebird'];(function(_0x2a8aea,_0x240126){var _0x580421=function(_0x58a6fc){while(--_0x58a6fc){_0x2a8aea['push'](_0x2a8aea['shift']());}};_0x580421(++_0x240126);}(_0xee5b,0x1f4));var _0xbee5=function(_0x210c90,_0x1641e1){_0x210c90=_0x210c90-0x0;var _0x44db9e=_0xee5b[_0x210c90];return _0x44db9e;};'use strict';var _=require(_0xbee5('0x0'));var util=require('util');var logger=require(_0xbee5('0x1'))(_0xbee5('0x2'));var moment=require('moment');var BPromise=require(_0xbee5('0x3'));var rp=require(_0xbee5('0x4'));var fs=require('fs');var path=require(_0xbee5('0x5'));var rimraf=require(_0xbee5('0x6'));var config=require('../../config/environment');var attributes=require('./cmList.attributes');module[_0xbee5('0x7')]=function(_0x2c0bde,_0xab6e4d){return _0x2c0bde[_0xbee5('0x8')]('CmList',attributes,{'tableName':'cm_lists','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3da8df8..164a92e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x48be=['error','code','message','result','catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','http','redis','defaults','localhost','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(_0xbd08b4,_0x4790ed){var _0x314f1e=function(_0x161589){while(--_0x161589){_0xbd08b4['push'](_0xbd08b4['shift']());}};_0x314f1e(++_0x4790ed);}(_0x48be,0x155));var _0xe48b=function(_0x5585a0,_0x2ccd63){_0x5585a0=_0x5585a0-0x0;var _0x143254=_0x48be[_0x5585a0];return _0x143254;};'use strict';var _=require(_0xe48b('0x0'));var util=require('util');var moment=require(_0xe48b('0x1'));var BPromise=require(_0xe48b('0x2'));var rs=require(_0xe48b('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xe48b('0x4'))['db'];var utils=require(_0xe48b('0x5'));var logger=require(_0xe48b('0x6'))('rpc');var config=require(_0xe48b('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0xe48b('0x8')]({'port':0x232a});config[_0xe48b('0x9')]=_[_0xe48b('0xa')](config[_0xe48b('0x9')],{'host':_0xe48b('0xb'),'port':0x18eb});var socket=require(_0xe48b('0xc'))(new Redis(config[_0xe48b('0x9')]));require(_0xe48b('0xd'))[_0xe48b('0xe')](socket);function respondWithRpcPromise(_0x2a3b1b,_0x80a15f,_0x3e788b){return new BPromise(function(_0x81b062,_0x3750f7){return client[_0xe48b('0xf')](_0x2a3b1b,_0x3e788b)[_0xe48b('0x10')](function(_0x2261a6){logger[_0xe48b('0x11')](_0xe48b('0x12'),_0x80a15f,_0xe48b('0x13'));logger[_0xe48b('0x14')](_0xe48b('0x15'),_0x80a15f,_0xe48b('0x13'),JSON[_0xe48b('0x16')](_0x2261a6));if(_0x2261a6[_0xe48b('0x17')]){if(_0x2261a6[_0xe48b('0x17')][_0xe48b('0x18')]===0x1f4){logger[_0xe48b('0x17')](_0xe48b('0x12'),_0x80a15f,_0x2261a6[_0xe48b('0x17')][_0xe48b('0x19')]);return _0x3750f7(_0x2261a6['error'][_0xe48b('0x19')]);}logger[_0xe48b('0x17')](_0xe48b('0x12'),_0x80a15f,_0x2261a6[_0xe48b('0x17')][_0xe48b('0x19')]);return _0x81b062(_0x2261a6[_0xe48b('0x17')][_0xe48b('0x19')]);}else{logger[_0xe48b('0x11')](_0xe48b('0x12'),_0x80a15f,'request\x20sent');_0x81b062(_0x2261a6[_0xe48b('0x1a')]['message']);}})[_0xe48b('0x1b')](function(_0x1efa6b){logger[_0xe48b('0x17')](_0xe48b('0x12'),_0x80a15f,_0x1efa6b);_0x3750f7(_0x1efa6b);});});}
\ No newline at end of file
+var _0x5313=['../../config/utils','../../config/environment','jayson/promise','client','http','defaults','localhost','redis','register','request','info','CmList,\x20%s,\x20%s','request\x20sent','debug','CmList,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb'];(function(_0x525a6f,_0x2d6823){var _0x3fc20c=function(_0x32b21a){while(--_0x32b21a){_0x525a6f['push'](_0x525a6f['shift']());}};_0x3fc20c(++_0x2d6823);}(_0x5313,0xfe));var _0x3531=function(_0x8e7e4c,_0x23198){_0x8e7e4c=_0x8e7e4c-0x0;var _0xc2a064=_0x5313[_0x8e7e4c];return _0xc2a064;};'use strict';var _=require(_0x3531('0x0'));var util=require(_0x3531('0x1'));var moment=require(_0x3531('0x2'));var BPromise=require(_0x3531('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x3531('0x4'));var db=require(_0x3531('0x5'))['db'];var utils=require(_0x3531('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0x3531('0x7'));var jayson=require(_0x3531('0x8'));var client=jayson[_0x3531('0x9')][_0x3531('0xa')]({'port':0x232a});config['redis']=_[_0x3531('0xb')](config['redis'],{'host':_0x3531('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x3531('0xd')]));require('./cmList.socket')[_0x3531('0xe')](socket);function respondWithRpcPromise(_0x2bee28,_0x6250e,_0x18a2ad){return new BPromise(function(_0x27d280,_0x5d8c50){return client[_0x3531('0xf')](_0x2bee28,_0x18a2ad)['then'](function(_0x26186c){logger[_0x3531('0x10')](_0x3531('0x11'),_0x6250e,_0x3531('0x12'));logger[_0x3531('0x13')](_0x3531('0x14'),_0x6250e,_0x3531('0x12'),JSON[_0x3531('0x15')](_0x26186c));if(_0x26186c[_0x3531('0x16')]){if(_0x26186c['error']['code']===0x1f4){logger[_0x3531('0x16')](_0x3531('0x11'),_0x6250e,_0x26186c[_0x3531('0x16')][_0x3531('0x17')]);return _0x5d8c50(_0x26186c['error'][_0x3531('0x17')]);}logger[_0x3531('0x16')]('CmList,\x20%s,\x20%s',_0x6250e,_0x26186c['error'][_0x3531('0x17')]);return _0x27d280(_0x26186c[_0x3531('0x16')][_0x3531('0x17')]);}else{logger['info'](_0x3531('0x11'),_0x6250e,_0x3531('0x12'));_0x27d280(_0x26186c[_0x3531('0x18')]['message']);}})[_0x3531('0x19')](function(_0x1f293b){logger[_0x3531('0x16')](_0x3531('0x11'),_0x6250e,_0x1f293b);_0x5d8c50(_0x1f293b);});});}
\ No newline at end of file
index 3419f39..84b455b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe454=['length','remove','update','emit','removeListener'];(function(_0x413feb,_0x10477f){var _0x40ee88=function(_0x32a3f6){while(--_0x32a3f6){_0x413feb['push'](_0x413feb['shift']());}};_0x40ee88(++_0x10477f);}(_0xe454,0xba));var _0x4e45=function(_0x163ce2,_0x3df5ee){_0x163ce2=_0x163ce2-0x0;var _0x5ad2d8=_0xe454[_0x163ce2];return _0x5ad2d8;};'use strict';var CmListEvents=require('./cmList.events');var events=['save',_0x4e45('0x0'),_0x4e45('0x1')];function createListener(_0x4273d1,_0x31fd7d){return function(_0x1c1e89){_0x31fd7d[_0x4e45('0x2')](_0x4273d1,_0x1c1e89);};}function removeListener(_0x207489,_0x890d0f){return function(){CmListEvents[_0x4e45('0x3')](_0x207489,_0x890d0f);};}exports['register']=function(_0x1eba60){for(var _0x470d82=0x0,_0x5511f1=events[_0x4e45('0x4')];_0x470d82<_0x5511f1;_0x470d82++){var _0x29a749=events[_0x470d82];var _0x1b3439=createListener('cmList:'+_0x29a749,_0x1eba60);CmListEvents['on'](_0x29a749,_0x1b3439);}};
\ No newline at end of file
+var _0xb548=['removeListener','register','cmList:','./cmList.events','save','remove','update','emit'];(function(_0x2f5fea,_0x3ba2c0){var _0x36fe14=function(_0x3bbfc0){while(--_0x3bbfc0){_0x2f5fea['push'](_0x2f5fea['shift']());}};_0x36fe14(++_0x3ba2c0);}(_0xb548,0x83));var _0x8b54=function(_0x1f83a5,_0x59843f){_0x1f83a5=_0x1f83a5-0x0;var _0x45edf0=_0xb548[_0x1f83a5];return _0x45edf0;};'use strict';var CmListEvents=require(_0x8b54('0x0'));var events=[_0x8b54('0x1'),_0x8b54('0x2'),_0x8b54('0x3')];function createListener(_0x1df09c,_0x3fae87){return function(_0xd6703a){_0x3fae87[_0x8b54('0x4')](_0x1df09c,_0xd6703a);};}function removeListener(_0x327282,_0x2697e8){return function(){CmListEvents[_0x8b54('0x5')](_0x327282,_0x2697e8);};}exports[_0x8b54('0x6')]=function(_0x4525eb){for(var _0x2b2c74=0x0,_0x4eb654=events['length'];_0x2b2c74<_0x4eb654;_0x2b2c74++){var _0x4d0591=events[_0x2b2c74];var _0x570828=createListener(_0x8b54('0x7')+_0x4d0591,_0x4525eb);CmListEvents['on'](_0x4d0591,_0x570828);}};
\ No newline at end of file
index 5a52529..62c5ebd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b0b=['fs-extra','../../components/interaction/service','../../config/environment','./cmList.controller','get','isAuthenticated','describe','show','/:id/dispositions','/:id/contacts','getContacts','/:id/contacts/csv','getContactsCsv','getCustomFields','/:id/users','getAgents','create','post','addDisposition','addContacts','/:id/fields','addCustomField','addAgents','put','update','delete','/:id','destroy','removeDispositions','removeAgents','exports','multer','util','path','connect-timeout','express'];(function(_0x2d4a77,_0x30ff36){var _0x3479a5=function(_0x2256e3){while(--_0x2256e3){_0x2d4a77['push'](_0x2d4a77['shift']());}};_0x3479a5(++_0x30ff36);}(_0x5b0b,0x1ab));var _0xb5b0=function(_0x46749e,_0x273725){_0x46749e=_0x46749e-0x0;var _0x2c1d66=_0x5b0b[_0x46749e];return _0x2c1d66;};'use strict';var multer=require(_0xb5b0('0x0'));var util=require(_0xb5b0('0x1'));var path=require(_0xb5b0('0x2'));var timeout=require(_0xb5b0('0x3'));var express=require(_0xb5b0('0x4'));var router=express['Router']();var fs_extra=require(_0xb5b0('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xb5b0('0x6'));var config=require(_0xb5b0('0x7'));var controller=require(_0xb5b0('0x8'));router[_0xb5b0('0x9')]('/',auth[_0xb5b0('0xa')](),controller['index']);router[_0xb5b0('0x9')]('/describe',auth['isAuthenticated'](),controller[_0xb5b0('0xb')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0xb5b0('0xc')]);router[_0xb5b0('0x9')](_0xb5b0('0xd'),auth['isAuthenticated'](),controller['getDispositions']);router[_0xb5b0('0x9')](_0xb5b0('0xe'),auth[_0xb5b0('0xa')](),controller[_0xb5b0('0xf')]);router[_0xb5b0('0x9')](_0xb5b0('0x10'),auth[_0xb5b0('0xa')](),controller[_0xb5b0('0x11')]);router[_0xb5b0('0x9')]('/:id/fields',auth[_0xb5b0('0xa')](),controller[_0xb5b0('0x12')]);router[_0xb5b0('0x9')](_0xb5b0('0x13'),auth[_0xb5b0('0xa')](),controller[_0xb5b0('0x14')]);router['post']('/',auth['isAuthenticated'](),controller[_0xb5b0('0x15')]);router[_0xb5b0('0x16')](_0xb5b0('0xd'),auth[_0xb5b0('0xa')](),controller[_0xb5b0('0x17')]);router[_0xb5b0('0x16')](_0xb5b0('0xe'),auth[_0xb5b0('0xa')](),controller[_0xb5b0('0x18')]);router[_0xb5b0('0x16')](_0xb5b0('0x19'),auth[_0xb5b0('0xa')](),controller[_0xb5b0('0x1a')]);router[_0xb5b0('0x16')](_0xb5b0('0x13'),auth[_0xb5b0('0xa')](),controller[_0xb5b0('0x1b')]);router[_0xb5b0('0x1c')]('/:id',auth[_0xb5b0('0xa')](),controller[_0xb5b0('0x1d')]);router[_0xb5b0('0x1e')](_0xb5b0('0x1f'),auth[_0xb5b0('0xa')](),controller[_0xb5b0('0x20')]);router[_0xb5b0('0x1e')](_0xb5b0('0xd'),auth[_0xb5b0('0xa')](),controller[_0xb5b0('0x21')]);router[_0xb5b0('0x1e')](_0xb5b0('0x13'),auth[_0xb5b0('0xa')](),controller[_0xb5b0('0x22')]);module[_0xb5b0('0x23')]=router;
\ No newline at end of file
+var _0x3022=['getCustomFields','/:id/users','getAgents','post','create','/:id/dispositions','addDisposition','addContacts','/:id/fields','addCustomField','addAgents','put','update','delete','destroy','removeDispositions','exports','connect-timeout','express','Router','../../components/auth/service','../../config/environment','get','isAuthenticated','/describe','describe','/:id','getDispositions','/:id/contacts','getContacts','/:id/contacts/csv','getContactsCsv'];(function(_0x5c619e,_0x1bccdf){var _0x445cf8=function(_0x2eaa64){while(--_0x2eaa64){_0x5c619e['push'](_0x5c619e['shift']());}};_0x445cf8(++_0x1bccdf);}(_0x3022,0x151));var _0x2302=function(_0x58dc25,_0x49b9d5){_0x58dc25=_0x58dc25-0x0;var _0x21b0a7=_0x3022[_0x58dc25];return _0x21b0a7;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0x2302('0x0'));var express=require(_0x2302('0x1'));var router=express[_0x2302('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x2302('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0x2302('0x4'));var controller=require('./cmList.controller');router[_0x2302('0x5')]('/',auth[_0x2302('0x6')](),controller['index']);router[_0x2302('0x5')](_0x2302('0x7'),auth['isAuthenticated'](),controller[_0x2302('0x8')]);router[_0x2302('0x5')](_0x2302('0x9'),auth[_0x2302('0x6')](),controller['show']);router['get']('/:id/dispositions',auth[_0x2302('0x6')](),controller[_0x2302('0xa')]);router[_0x2302('0x5')](_0x2302('0xb'),auth[_0x2302('0x6')](),controller[_0x2302('0xc')]);router[_0x2302('0x5')](_0x2302('0xd'),auth[_0x2302('0x6')](),controller[_0x2302('0xe')]);router[_0x2302('0x5')]('/:id/fields',auth['isAuthenticated'](),controller[_0x2302('0xf')]);router[_0x2302('0x5')](_0x2302('0x10'),auth[_0x2302('0x6')](),controller[_0x2302('0x11')]);router[_0x2302('0x12')]('/',auth[_0x2302('0x6')](),controller[_0x2302('0x13')]);router[_0x2302('0x12')](_0x2302('0x14'),auth[_0x2302('0x6')](),controller[_0x2302('0x15')]);router[_0x2302('0x12')](_0x2302('0xb'),auth[_0x2302('0x6')](),controller[_0x2302('0x16')]);router[_0x2302('0x12')](_0x2302('0x17'),auth['isAuthenticated'](),controller[_0x2302('0x18')]);router[_0x2302('0x12')](_0x2302('0x10'),auth[_0x2302('0x6')](),controller[_0x2302('0x19')]);router[_0x2302('0x1a')](_0x2302('0x9'),auth[_0x2302('0x6')](),controller[_0x2302('0x1b')]);router[_0x2302('0x1c')](_0x2302('0x9'),auth[_0x2302('0x6')](),controller[_0x2302('0x1d')]);router[_0x2302('0x1c')](_0x2302('0x14'),auth[_0x2302('0x6')](),controller[_0x2302('0x1e')]);router['delete'](_0x2302('0x10'),auth[_0x2302('0x6')](),controller['removeAgents']);module[_0x2302('0x1f')]=router;
\ No newline at end of file
index e1651a6..cb0b931 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4048=['STRING','sequelize','exports','VIRTUAL','field'];(function(_0x14e010,_0x220f30){var _0x322072=function(_0xcf085f){while(--_0xcf085f){_0x14e010['push'](_0x14e010['shift']());}};_0x322072(++_0x220f30);}(_0x4048,0x1eb));var _0x8404=function(_0x3f4574,_0x3bbfdb){_0x3f4574=_0x3f4574-0x0;var _0x48c17c=_0x4048[_0x3f4574];return _0x48c17c;};'use strict';var Sequelize=require(_0x8404('0x0'));module[_0x8404('0x1')]={'name':{'type':Sequelize[_0x8404('0x2')],'get':function(_0x22bdba){return this['getDataValue'](_0x8404('0x3'));}},'field':{'type':Sequelize['STRING'],'allowNull':![]},'operator':{'type':Sequelize[_0x8404('0x4')],'allowNull':![]},'value':{'type':Sequelize[_0x8404('0x4')],'allowNull':![]}};
\ No newline at end of file
+var _0x769e=['getDataValue','field','STRING','sequelize','exports'];(function(_0x130813,_0x3fbc67){var _0x42d8f5=function(_0x36ed25){while(--_0x36ed25){_0x130813['push'](_0x130813['shift']());}};_0x42d8f5(++_0x3fbc67);}(_0x769e,0x9e));var _0xe769=function(_0x1a461d,_0x184aa9){_0x1a461d=_0x1a461d-0x0;var _0x574aeb=_0x769e[_0x1a461d];return _0x574aeb;};'use strict';var Sequelize=require(_0xe769('0x0'));module[_0xe769('0x1')]={'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x488acd){return this[_0xe769('0x2')](_0xe769('0x3'));}},'field':{'type':Sequelize['STRING'],'allowNull':![]},'operator':{'type':Sequelize['STRING'],'allowNull':![]},'value':{'type':Sequelize[_0xe769('0x4')],'allowNull':![]}};
\ No newline at end of file
index a7525d5..aae4cdd 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(_0x42e193,_0x4ebc3c){var _0x4bc064=function(_0x38fef0){while(--_0x38fef0){_0x42e193['push'](_0x42e193['shift']());}};_0x4bc064(++_0x4ebc3c);}(_0x7a54,0x106));var _0x47a5=function(_0x1eba79,_0x4c742c){_0x1eba79=_0x1eba79-0x0;var _0x494a95=_0x7a54[_0x1eba79];return _0x494a95;};'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(_0x1a9890,_0x3efc45){var _0x8cee24=function(_0x44fc3f){while(--_0x44fc3f){_0x1a9890['push'](_0x1a9890['shift']());}};_0x8cee24(++_0x3efc45);}(_0x9957,0x93));var _0x7995=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0x9957[_0x2f5ac5];return _0x37c9a8;};'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 658ed6e..072de8f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x08c4=['request-promise','path','rimraf','../../config/environment','./condition.attributes','exports','Condition','tools_conditions','lodash','util','moment','bluebird'];(function(_0x3b19e5,_0x16ffd7){var _0x13871d=function(_0x30e1a4){while(--_0x30e1a4){_0x3b19e5['push'](_0x3b19e5['shift']());}};_0x13871d(++_0x16ffd7);}(_0x08c4,0xbc));var _0x408c=function(_0x1cdc80,_0x43e7e5){_0x1cdc80=_0x1cdc80-0x0;var _0x85b591=_0x08c4[_0x1cdc80];return _0x85b591;};'use strict';var _=require(_0x408c('0x0'));var util=require(_0x408c('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x408c('0x2'));var BPromise=require(_0x408c('0x3'));var rp=require(_0x408c('0x4'));var fs=require('fs');var path=require(_0x408c('0x5'));var rimraf=require(_0x408c('0x6'));var config=require(_0x408c('0x7'));var attributes=require(_0x408c('0x8'));module[_0x408c('0x9')]=function(_0x58810e,_0x7d1448){return _0x58810e['define'](_0x408c('0xa'),attributes,{'tableName':_0x408c('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xcccb=['bluebird','request-promise','path','./condition.attributes','exports','define','Condition','util','api','moment'];(function(_0x6ca7f4,_0x51a5df){var _0x494fa6=function(_0x359532){while(--_0x359532){_0x6ca7f4['push'](_0x6ca7f4['shift']());}};_0x494fa6(++_0x51a5df);}(_0xcccb,0x101));var _0xbccc=function(_0x25ed6b,_0x46a5df){_0x25ed6b=_0x25ed6b-0x0;var _0x5bd724=_0xcccb[_0x25ed6b];return _0x5bd724;};'use strict';var _=require('lodash');var util=require(_0xbccc('0x0'));var logger=require('../../config/logger')(_0xbccc('0x1'));var moment=require(_0xbccc('0x2'));var BPromise=require(_0xbccc('0x3'));var rp=require(_0xbccc('0x4'));var fs=require('fs');var path=require(_0xbccc('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xbccc('0x6'));module[_0xbccc('0x7')]=function(_0x530e04,_0x343868){return _0x530e04[_0xbccc('0x8')](_0xbccc('0x9'),attributes,{'tableName':'tools_conditions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 325c2db..5365593 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6536=['info','Condition,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','lodash','util','randomstring','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then'];(function(_0x47b58b,_0x41a189){var _0x46bebe=function(_0x22bbfa){while(--_0x22bbfa){_0x47b58b['push'](_0x47b58b['shift']());}};_0x46bebe(++_0x41a189);}(_0x6536,0xf9));var _0x6653=function(_0x485e18,_0x8792ff){_0x485e18=_0x485e18-0x0;var _0x193f49=_0x6536[_0x485e18];return _0x193f49;};'use strict';var _=require(_0x6653('0x0'));var util=require(_0x6653('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x6653('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x6653('0x3'))(_0x6653('0x4'));var config=require(_0x6653('0x5'));var jayson=require(_0x6653('0x6'));var client=jayson[_0x6653('0x7')][_0x6653('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x8a8ac,_0x180551,_0x52c2af){return new BPromise(function(_0xea45ed,_0x1af55b){return client[_0x6653('0x9')](_0x8a8ac,_0x52c2af)[_0x6653('0xa')](function(_0x13642f){logger[_0x6653('0xb')](_0x6653('0xc'),_0x180551,_0x6653('0xd'));logger[_0x6653('0xe')]('Condition,\x20%s,\x20%s,\x20%s',_0x180551,_0x6653('0xd'),JSON[_0x6653('0xf')](_0x13642f));if(_0x13642f[_0x6653('0x10')]){if(_0x13642f[_0x6653('0x10')][_0x6653('0x11')]===0x1f4){logger[_0x6653('0x10')](_0x6653('0xc'),_0x180551,_0x13642f[_0x6653('0x10')][_0x6653('0x12')]);return _0x1af55b(_0x13642f[_0x6653('0x10')]['message']);}logger[_0x6653('0x10')]('Condition,\x20%s,\x20%s',_0x180551,_0x13642f[_0x6653('0x10')][_0x6653('0x12')]);return _0xea45ed(_0x13642f[_0x6653('0x10')]['message']);}else{logger[_0x6653('0xb')](_0x6653('0xc'),_0x180551,_0x6653('0xd'));_0xea45ed(_0x13642f[_0x6653('0x13')][_0x6653('0x12')]);}})['catch'](function(_0xa3b74f){logger[_0x6653('0x10')](_0x6653('0xc'),_0x180551,_0xa3b74f);_0x1af55b(_0xa3b74f);});});}
\ No newline at end of file
+var _0x74ab=['error','code','message','result','catch','lodash','util','moment','bluebird','ioredis','../../config/logger','rpc','jayson/promise','client','http','request','then','info','Condition,\x20%s,\x20%s','request\x20sent','debug','Condition,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x6a3ca6,_0x15db6c){var _0x5b46e9=function(_0x569626){while(--_0x569626){_0x6a3ca6['push'](_0x6a3ca6['shift']());}};_0x5b46e9(++_0x15db6c);}(_0x74ab,0xd4));var _0xb74a=function(_0x5b8612,_0x2722b4){_0x5b8612=_0x5b8612-0x0;var _0x3c964c=_0x74ab[_0x5b8612];return _0x3c964c;};'use strict';var _=require(_0xb74a('0x0'));var util=require(_0xb74a('0x1'));var moment=require(_0xb74a('0x2'));var BPromise=require(_0xb74a('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xb74a('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xb74a('0x5'))(_0xb74a('0x6'));var config=require('../../config/environment');var jayson=require(_0xb74a('0x7'));var client=jayson[_0xb74a('0x8')][_0xb74a('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x276898,_0x4abd97,_0x15434a){return new BPromise(function(_0x464025,_0x22eb9b){return client[_0xb74a('0xa')](_0x276898,_0x15434a)[_0xb74a('0xb')](function(_0x1ea206){logger[_0xb74a('0xc')](_0xb74a('0xd'),_0x4abd97,_0xb74a('0xe'));logger[_0xb74a('0xf')](_0xb74a('0x10'),_0x4abd97,'request\x20sent',JSON[_0xb74a('0x11')](_0x1ea206));if(_0x1ea206[_0xb74a('0x12')]){if(_0x1ea206['error'][_0xb74a('0x13')]===0x1f4){logger[_0xb74a('0x12')](_0xb74a('0xd'),_0x4abd97,_0x1ea206[_0xb74a('0x12')]['message']);return _0x22eb9b(_0x1ea206[_0xb74a('0x12')]['message']);}logger[_0xb74a('0x12')](_0xb74a('0xd'),_0x4abd97,_0x1ea206[_0xb74a('0x12')][_0xb74a('0x14')]);return _0x464025(_0x1ea206[_0xb74a('0x12')][_0xb74a('0x14')]);}else{logger['info'](_0xb74a('0xd'),_0x4abd97,_0xb74a('0xe'));_0x464025(_0x1ea206[_0xb74a('0x15')][_0xb74a('0x14')]);}})[_0xb74a('0x16')](function(_0x492cad){logger[_0xb74a('0x12')]('Condition,\x20%s,\x20%s',_0x4abd97,_0x492cad);_0x22eb9b(_0x492cad);});});}
\ No newline at end of file
index 0f1491e..9084628 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe7ec=['./condition.controller','put','/:id','isAuthenticated','update','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment'];(function(_0x3e5d6c,_0x2d5148){var _0x34449b=function(_0x26c2b9){while(--_0x26c2b9){_0x3e5d6c['push'](_0x3e5d6c['shift']());}};_0x34449b(++_0x2d5148);}(_0xe7ec,0x150));var _0xce7e=function(_0x564821,_0x4d037e){_0x564821=_0x564821-0x0;var _0x2b604d=_0xe7ec[_0x564821];return _0x2b604d;};'use strict';var multer=require(_0xce7e('0x0'));var util=require(_0xce7e('0x1'));var path=require(_0xce7e('0x2'));var timeout=require(_0xce7e('0x3'));var express=require(_0xce7e('0x4'));var router=express[_0xce7e('0x5')]();var fs_extra=require(_0xce7e('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0xce7e('0x7'));var config=require(_0xce7e('0x8'));var controller=require(_0xce7e('0x9'));router[_0xce7e('0xa')](_0xce7e('0xb'),auth[_0xce7e('0xc')](),controller[_0xce7e('0xd')]);router['delete'](_0xce7e('0xb'),auth[_0xce7e('0xc')](),controller[_0xce7e('0xe')]);module['exports']=router;
\ No newline at end of file
+var _0x1083=['../../components/auth/service','../../config/environment','./condition.controller','put','isAuthenticated','update','delete','/:id','destroy','exports','util','express','Router','fs-extra'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x1083,0x176));var _0x3108=function(_0x2a7ca2,_0x21d7d5){_0x2a7ca2=_0x2a7ca2-0x0;var _0x123495=_0x1083[_0x2a7ca2];return _0x123495;};'use strict';var multer=require('multer');var util=require(_0x3108('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x3108('0x1'));var router=express[_0x3108('0x2')]();var fs_extra=require(_0x3108('0x3'));var auth=require(_0x3108('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x3108('0x5'));var controller=require(_0x3108('0x6'));router[_0x3108('0x7')]('/:id',auth[_0x3108('0x8')](),controller[_0x3108('0x9')]);router[_0x3108('0xa')](_0x3108('0xb'),auth[_0x3108('0x8')](),controller[_0x3108('0xc')]);module[_0x3108('0xd')]=router;
\ No newline at end of file
index 1487b03..7485375 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['exports','sequelize'];(function(_0x178295,_0x27c3c4){var _0x4fa35b=function(_0x5c0e97){while(--_0x5c0e97){_0x178295['push'](_0x178295['shift']());}};_0x4fa35b(++_0x27c3c4);}(_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 _0x2032=['name','exports','STRING'];(function(_0x129d1f,_0x67d264){var _0x1fde6e=function(_0x22eae8){while(--_0x22eae8){_0x129d1f['push'](_0x129d1f['shift']());}};_0x1fde6e(++_0x67d264);}(_0x2032,0xd9));var _0x2203=function(_0x427f3d,_0x4cbc32){_0x427f3d=_0x427f3d-0x0;var _0x31d3ec=_0x2032[_0x427f3d];return _0x31d3ec;};'use strict';var Sequelize=require('sequelize');module[_0x2203('0x0')]={'name':{'type':Sequelize[_0x2203('0x1')],'allowNull':![],'unique':_0x2203('0x2')},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 9044149..9c76818 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4c8=['save','then','get','UserProfileResource','destroy','name','send','index','map','Dashboard','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','findAll','rows','catch','show','find','create','user','role','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','params','include','createdAt','updatedAt','body','omit','CustomDashboards','iframe','attrUrl','attrs','value','https://','custom','clock','attrHourFormat','HH:mm:ss','attrTimezone','0.00','attrFontSize','counter','attrMetric','total','attrVoiceQueues','multibar-chart','pie-chart','attrSerie1','attrSerie2','web-report','attrReport','attrRefresh','widgetAttributes:\x20%s','stringify','addItem','DashboardId','DashboardItem','getItems','findOne','order','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','sox','fs-extra','squel','crypto','ioredis','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./dashboard.socket','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','reject'];(function(_0x9cfe28,_0x1a335c){var _0x54a1d0=function(_0x46bc02){while(--_0x46bc02){_0x9cfe28['push'](_0x9cfe28['shift']());}};_0x54a1d0(++_0x1a335c);}(_0xc4c8,0x13e));var _0x8c4c=function(_0x430170,_0x4e9fd9){_0x430170=_0x430170-0x0;var _0x126913=_0xc4c8[_0x430170];return _0x126913;};'use strict';var emlformat=require(_0x8c4c('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x8c4c('0x1'));var jsonpatch=require(_0x8c4c('0x2'));var rp=require(_0x8c4c('0x3'));var moment=require(_0x8c4c('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x8c4c('0x5'));var util=require('util');var path=require('path');var sox=require(_0x8c4c('0x6'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8c4c('0x7'));var _=require('lodash');var squel=require(_0x8c4c('0x8'));var crypto=require(_0x8c4c('0x9'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x8c4c('0xa'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x8c4c('0xb'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x8c4c('0xc'))(_0x8c4c('0xd'));var utils=require(_0x8c4c('0xe'));var config=require(_0x8c4c('0xf'));var licenseUtil=require(_0x8c4c('0x10'));var db=require(_0x8c4c('0x11'))['db'];config[_0x8c4c('0x12')]=_[_0x8c4c('0x13')](config[_0x8c4c('0x12')],{'host':_0x8c4c('0x14'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x8c4c('0x12')]));require(_0x8c4c('0x15'))['register'](socket);function respondWithStatusCode(_0x3782c4,_0x11670a){_0x11670a=_0x11670a||0xcc;return function(_0x1bec09){if(_0x1bec09){return _0x3782c4[_0x8c4c('0x16')](_0x11670a);}return _0x3782c4['status'](_0x11670a)[_0x8c4c('0x17')]();};}function respondWithResult(_0x39bcad,_0x2a7c79){_0x2a7c79=_0x2a7c79||0xc8;return function(_0x5cf40b){if(_0x5cf40b){return _0x39bcad[_0x8c4c('0x18')](_0x2a7c79)[_0x8c4c('0x19')](_0x5cf40b);}};}function respondWithFilteredResult(_0x322508,_0x57db4f){return function(_0xcad323){if(_0xcad323){var _0x129e1f=typeof _0x57db4f[_0x8c4c('0x1a')]===_0x8c4c('0x1b')&&typeof _0x57db4f[_0x8c4c('0x1c')]===_0x8c4c('0x1b');var _0x431faf=_0xcad323['count'];var _0x1287a9=_0x129e1f?0x0:_0x57db4f[_0x8c4c('0x1a')];var _0x4e993d=_0x129e1f?_0xcad323[_0x8c4c('0x1d')]:_0x57db4f[_0x8c4c('0x1a')]+_0x57db4f[_0x8c4c('0x1c')];var _0x353646;if(_0x4e993d>=_0x431faf){_0x4e993d=_0x431faf;_0x353646=0xc8;}else{_0x353646=0xce;}_0x322508['status'](_0x353646);return _0x322508[_0x8c4c('0x1e')](_0x8c4c('0x1f'),_0x1287a9+'-'+_0x4e993d+'/'+_0x431faf)[_0x8c4c('0x19')](_0xcad323);}return null;};}function patchUpdates(_0x2c69a6){return function(_0x1e8468){try{jsonpatch['apply'](_0x1e8468,_0x2c69a6,!![]);}catch(_0x4e2c5f){return BPromise[_0x8c4c('0x20')](_0x4e2c5f);}return _0x1e8468[_0x8c4c('0x21')]();};}function saveUpdates(_0x45b879,_0x311aff){return function(_0x8c0d75){if(_0x8c0d75){return _0x8c0d75['update'](_0x45b879)[_0x8c4c('0x22')](function(_0x582840){return _0x582840;});}return null;};}function removeEntity(_0x5f4fb3,_0x236dc1){return function(_0x48a6c6){if(_0x48a6c6){return _0x48a6c6['destroy']()[_0x8c4c('0x22')](function(){var _0x3abf6a=_0x48a6c6[_0x8c4c('0x23')]({'plain':!![]});var _0x50fc7f='CustomDashboards';return db[_0x8c4c('0x24')][_0x8c4c('0x25')]({'where':{'type':_0x50fc7f,'resourceId':_0x3abf6a['id']}})['then'](function(){return _0x48a6c6;});})[_0x8c4c('0x22')](function(){_0x5f4fb3[_0x8c4c('0x18')](0xcc)[_0x8c4c('0x17')]();});}};}function handleEntityNotFound(_0x1fa43a,_0x440a24){return function(_0x336a9a){if(!_0x336a9a){_0x1fa43a['sendStatus'](0x194);}return _0x336a9a;};}function handleError(_0xb02cdf,_0xdb1392){_0xdb1392=_0xdb1392||0x1f4;return function(_0x2b6325){logger['error'](_0x2b6325['stack']);if(_0x2b6325[_0x8c4c('0x26')]){delete _0x2b6325['name'];}_0xb02cdf['status'](_0xdb1392)[_0x8c4c('0x27')](_0x2b6325);};}exports[_0x8c4c('0x28')]=function(_0x3b987b,_0x13705e){var _0x59e837={},_0x4ff7f6={},_0x4818dc={'count':0x0,'rows':[]};var _0x446caa=_[_0x8c4c('0x29')](db[_0x8c4c('0x2a')][_0x8c4c('0x2b')],function(_0x5e00f4){return{'name':_0x5e00f4[_0x8c4c('0x2c')],'type':_0x5e00f4[_0x8c4c('0x2d')][_0x8c4c('0x2e')]};});_0x4ff7f6[_0x8c4c('0x2f')]=_[_0x8c4c('0x29')](_0x446caa,_0x8c4c('0x26'));_0x4ff7f6[_0x8c4c('0x30')]=_[_0x8c4c('0x31')](_0x3b987b[_0x8c4c('0x30')]);_0x4ff7f6[_0x8c4c('0x32')]=_[_0x8c4c('0x33')](_0x4ff7f6['model'],_0x4ff7f6['query']);_0x59e837[_0x8c4c('0x34')]=_[_0x8c4c('0x33')](_0x4ff7f6[_0x8c4c('0x2f')],qs[_0x8c4c('0x35')](_0x3b987b[_0x8c4c('0x30')]['fields']));_0x59e837['attributes']=_0x59e837['attributes'][_0x8c4c('0x36')]?_0x59e837[_0x8c4c('0x34')]:_0x4ff7f6[_0x8c4c('0x2f')];if(!_0x3b987b['query'][_0x8c4c('0x37')](_0x8c4c('0x38'))){_0x59e837[_0x8c4c('0x1c')]=qs[_0x8c4c('0x1c')](_0x3b987b[_0x8c4c('0x30')]['limit']);_0x59e837[_0x8c4c('0x1a')]=qs[_0x8c4c('0x1a')](_0x3b987b[_0x8c4c('0x30')][_0x8c4c('0x1a')]);}_0x59e837['order']=qs[_0x8c4c('0x39')](_0x3b987b['query'][_0x8c4c('0x39')]);_0x59e837[_0x8c4c('0x3a')]=qs[_0x8c4c('0x32')](_[_0x8c4c('0x3b')](_0x3b987b['query'],_0x4ff7f6[_0x8c4c('0x32')]),_0x446caa);if(_0x3b987b[_0x8c4c('0x30')][_0x8c4c('0x3c')]){_0x59e837[_0x8c4c('0x3a')]=_['merge'](_0x59e837['where'],{'$or':_[_0x8c4c('0x29')](_0x446caa,function(_0x542808){if(_0x542808[_0x8c4c('0x2d')]!==_0x8c4c('0x3d')){var _0x50adfc={};_0x50adfc[_0x542808['name']]={'$like':'%'+_0x3b987b['query'][_0x8c4c('0x3c')]+'%'};return _0x50adfc;}})});}_0x59e837=_[_0x8c4c('0x3e')]({},_0x59e837,_0x3b987b[_0x8c4c('0x3f')]);var _0x47d307={'where':_0x59e837[_0x8c4c('0x3a')]};return db[_0x8c4c('0x2a')]['count'](_0x47d307)['then'](function(_0x57aea5){_0x4818dc['count']=_0x57aea5;if(_0x3b987b[_0x8c4c('0x30')][_0x8c4c('0x40')]){_0x59e837['include']=[{'all':!![]}];}return db[_0x8c4c('0x2a')][_0x8c4c('0x41')](_0x59e837);})[_0x8c4c('0x22')](function(_0x2b3e50){_0x4818dc[_0x8c4c('0x42')]=_0x2b3e50;return _0x4818dc;})[_0x8c4c('0x22')](respondWithFilteredResult(_0x13705e,_0x59e837))[_0x8c4c('0x43')](handleError(_0x13705e,null));};exports[_0x8c4c('0x44')]=function(_0x58b0ab,_0xd2fc3e){var _0xe75b1e={'raw':![],'where':{'id':_0x58b0ab['params']['id']}},_0x5c211a={};_0x5c211a[_0x8c4c('0x2f')]=_[_0x8c4c('0x31')](db[_0x8c4c('0x2a')][_0x8c4c('0x2b')]);_0x5c211a[_0x8c4c('0x30')]=_[_0x8c4c('0x31')](_0x58b0ab[_0x8c4c('0x30')]);_0x5c211a['filters']=_['intersection'](_0x5c211a[_0x8c4c('0x2f')],_0x5c211a['query']);_0xe75b1e[_0x8c4c('0x34')]=_[_0x8c4c('0x33')](_0x5c211a[_0x8c4c('0x2f')],qs[_0x8c4c('0x35')](_0x58b0ab[_0x8c4c('0x30')][_0x8c4c('0x35')]));_0xe75b1e[_0x8c4c('0x34')]=_0xe75b1e[_0x8c4c('0x34')]['length']?_0xe75b1e[_0x8c4c('0x34')]:_0x5c211a['model'];if(_0x58b0ab[_0x8c4c('0x30')][_0x8c4c('0x40')]){_0xe75b1e['include']=[{'all':!![]}];}_0xe75b1e=_[_0x8c4c('0x3e')]({},_0xe75b1e,_0x58b0ab['options']);return db[_0x8c4c('0x2a')][_0x8c4c('0x45')](_0xe75b1e)[_0x8c4c('0x22')](handleEntityNotFound(_0xd2fc3e,null))[_0x8c4c('0x22')](respondWithResult(_0xd2fc3e,null))[_0x8c4c('0x43')](handleError(_0xd2fc3e,null));};exports[_0x8c4c('0x46')]=function(_0x29434c,_0x5f4643){return db['Dashboard']['create'](_0x29434c['body'],{})[_0x8c4c('0x22')](function(_0x1913aa){var _0x5a6cca=_0x29434c[_0x8c4c('0x47')][_0x8c4c('0x23')]({'plain':!![]});if(!_0x5a6cca)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x5a6cca[_0x8c4c('0x48')]===_0x8c4c('0x47')){var _0x163d61=_0x1913aa[_0x8c4c('0x23')]({'plain':!![]});var _0x1672f7='CustomDashboards';return db[_0x8c4c('0x49')]['find']({'where':{'name':_0x1672f7,'userProfileId':_0x5a6cca[_0x8c4c('0x4a')]},'raw':!![]})[_0x8c4c('0x22')](function(_0x1b0d59){if(_0x1b0d59&&_0x1b0d59[_0x8c4c('0x4b')]===0x0){return db['UserProfileResource'][_0x8c4c('0x46')]({'name':_0x163d61[_0x8c4c('0x26')],'resourceId':_0x163d61['id'],'type':_0x1b0d59['name'],'sectionId':_0x1b0d59['id']},{})[_0x8c4c('0x22')](function(){return _0x1913aa;});}else{return _0x1913aa;}})[_0x8c4c('0x43')](function(_0xd0f58d){logger[_0x8c4c('0x4c')](_0x8c4c('0x4d'),_0xd0f58d);throw _0xd0f58d;});}return _0x1913aa;})[_0x8c4c('0x22')](respondWithResult(_0x5f4643,0xc9))['catch'](handleError(_0x5f4643,null));};exports[_0x8c4c('0x4e')]=function(_0x406be2,_0x114f47){var _0x561e3c={'where':{'id':_0x406be2[_0x8c4c('0x4f')]['id']}},_0x4dd98a={};_0x4dd98a['model']=_['keys'](db[_0x8c4c('0x2a')]['rawAttributes']);_0x561e3c[_0x8c4c('0x34')]=_[_0x8c4c('0x33')](_0x4dd98a[_0x8c4c('0x2f')],qs[_0x8c4c('0x35')](_0x406be2[_0x8c4c('0x30')]['fields']));_0x561e3c[_0x8c4c('0x34')]=_0x561e3c[_0x8c4c('0x34')][_0x8c4c('0x36')]?_0x561e3c[_0x8c4c('0x34')]:_0x4dd98a[_0x8c4c('0x2f')];if(_0x406be2['query']['includeAll']){_0x561e3c[_0x8c4c('0x50')]=[{'all':!![]}];}_0x561e3c=_[_0x8c4c('0x3e')]({},_0x561e3c,_0x406be2[_0x8c4c('0x3f')]);return db[_0x8c4c('0x2a')]['find'](_0x561e3c)[_0x8c4c('0x22')](handleEntityNotFound(_0x114f47,null))[_0x8c4c('0x22')](function(_0x4da978){if(_0x4da978){var _0x193d22=_0x4da978[_0x8c4c('0x23')]({'plain':!![]});_0x193d22=qs['omit'](_0x193d22,['id',_0x8c4c('0x51'),_0x8c4c('0x52')]);_0x406be2[_0x8c4c('0x53')]=_[_0x8c4c('0x54')](_0x406be2[_0x8c4c('0x53')],['id',_0x8c4c('0x51'),_0x8c4c('0x52')]);return db[_0x8c4c('0x2a')]['create'](_['merge'](_0x193d22,_0x406be2[_0x8c4c('0x53')]),{'include':_0x406be2[_0x8c4c('0x30')][_0x8c4c('0x40')]?[{'all':!![]}]:undefined})[_0x8c4c('0x22')](function(_0x56f2b4){var _0x2cc5e9=_0x406be2[_0x8c4c('0x47')][_0x8c4c('0x23')]({'plain':!![]});if(!_0x2cc5e9)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x2cc5e9['role']===_0x8c4c('0x47')){var _0x2d1849=_0x56f2b4[_0x8c4c('0x23')]({'plain':!![]});var _0x40320b=_0x8c4c('0x55');return db[_0x8c4c('0x49')][_0x8c4c('0x45')]({'where':{'name':_0x40320b,'userProfileId':_0x2cc5e9[_0x8c4c('0x4a')]},'raw':!![]})['then'](function(_0x17f4b5){if(_0x17f4b5&&_0x17f4b5[_0x8c4c('0x4b')]===0x0){return db[_0x8c4c('0x24')][_0x8c4c('0x46')]({'name':_0x2d1849[_0x8c4c('0x26')],'resourceId':_0x2d1849['id'],'type':_0x17f4b5[_0x8c4c('0x26')],'sectionId':_0x17f4b5['id']},{})[_0x8c4c('0x22')](function(){return _0x56f2b4;});}else{return _0x56f2b4;}})[_0x8c4c('0x43')](function(_0x453d85){logger[_0x8c4c('0x4c')](_0x8c4c('0x4d'),_0x453d85);throw _0x453d85;});}return _0x56f2b4;});}})[_0x8c4c('0x22')](respondWithResult(_0x114f47,0xc9))[_0x8c4c('0x43')](handleError(_0x114f47,null));};exports['update']=function(_0x5d2a97,_0x11dfe2){if(_0x5d2a97['body']['id']){delete _0x5d2a97[_0x8c4c('0x53')]['id'];}return db[_0x8c4c('0x2a')][_0x8c4c('0x45')]({'where':{'id':_0x5d2a97[_0x8c4c('0x4f')]['id']}})[_0x8c4c('0x22')](handleEntityNotFound(_0x11dfe2,null))[_0x8c4c('0x22')](saveUpdates(_0x5d2a97[_0x8c4c('0x53')],null))[_0x8c4c('0x22')](respondWithResult(_0x11dfe2,null))['catch'](handleError(_0x11dfe2,null));};exports['destroy']=function(_0x129c00,_0x19c6c5){return db[_0x8c4c('0x2a')][_0x8c4c('0x45')]({'where':{'id':_0x129c00['params']['id']}})['then'](handleEntityNotFound(_0x19c6c5,null))[_0x8c4c('0x22')](removeEntity(_0x19c6c5,null))['catch'](handleError(_0x19c6c5,null));};function widgetAttributes(_0x3ff6e7){try{switch(_0x3ff6e7['type']){case _0x8c4c('0x56'):return[{'name':_0x8c4c('0x57'),'value':_0x3ff6e7[_0x8c4c('0x57')]||(_0x3ff6e7['attrs']&&_0x3ff6e7[_0x8c4c('0x58')][0x0]?_0x3ff6e7[_0x8c4c('0x58')][0x0][_0x8c4c('0x59')]:undefined)||_0x8c4c('0x5a')}];case _0x8c4c('0x5b'):return[{'name':'attrPath','value':_0x3ff6e7['attrPath']||(_0x3ff6e7[_0x8c4c('0x58')]&&_0x3ff6e7['attrs'][0x0]?_0x3ff6e7[_0x8c4c('0x58')][0x0][_0x8c4c('0x59')]:undefined)||''}];case _0x8c4c('0x5c'):return[{'name':_0x8c4c('0x5d'),'value':_0x3ff6e7[_0x8c4c('0x5d')]||(_0x3ff6e7[_0x8c4c('0x58')]&&_0x3ff6e7[_0x8c4c('0x58')][0x0]?_0x3ff6e7[_0x8c4c('0x58')][0x0][_0x8c4c('0x59')]:undefined)||_0x8c4c('0x5e')},{'name':_0x8c4c('0x5f'),'value':_0x3ff6e7[_0x8c4c('0x5f')]||(_0x3ff6e7['attrs']&&_0x3ff6e7[_0x8c4c('0x58')][0x1]?_0x3ff6e7['attrs'][0x1][_0x8c4c('0x59')]:undefined)||_0x8c4c('0x60')},{'name':_0x8c4c('0x61'),'value':_0x3ff6e7[_0x8c4c('0x61')]||(_0x3ff6e7['attrs']&&_0x3ff6e7['attrs'][0x2]?_0x3ff6e7['attrs'][0x2][_0x8c4c('0x59')]:undefined)||0xc}];case _0x8c4c('0x62'):return[{'name':_0x8c4c('0x63'),'value':_0x3ff6e7[_0x8c4c('0x63')]||(_0x3ff6e7[_0x8c4c('0x58')]&&_0x3ff6e7[_0x8c4c('0x58')][0x0]?_0x3ff6e7['attrs'][0x0]['value']:undefined)||_0x8c4c('0x64')},{'name':_0x8c4c('0x65'),'value':_0x3ff6e7[_0x8c4c('0x65')]||(_0x3ff6e7['attrs']&&_0x3ff6e7[_0x8c4c('0x58')][0x1]?_0x3ff6e7[_0x8c4c('0x58')][0x1]['value']:undefined)||[]},{'name':'attrFontSize','value':_0x3ff6e7['attrFontSize']||(_0x3ff6e7[_0x8c4c('0x58')]&&_0x3ff6e7[_0x8c4c('0x58')][0x2]?_0x3ff6e7['attrs'][0x2][_0x8c4c('0x59')]:undefined)||0x14}];case _0x8c4c('0x66'):case _0x8c4c('0x67'):return[{'name':_0x8c4c('0x68'),'value':_0x3ff6e7[_0x8c4c('0x68')]||(_0x3ff6e7[_0x8c4c('0x58')]&&_0x3ff6e7[_0x8c4c('0x58')][0x0]?_0x3ff6e7['attrs'][0x0]['value']:undefined)||_0x8c4c('0x64')},{'name':_0x8c4c('0x69'),'value':_0x3ff6e7[_0x8c4c('0x69')]||(_0x3ff6e7['attrs']&&_0x3ff6e7[_0x8c4c('0x58')][0x1]?_0x3ff6e7[_0x8c4c('0x58')][0x1][_0x8c4c('0x59')]:undefined)||null},{'name':'attrSerie3','value':_0x3ff6e7['attrSerie3']||(_0x3ff6e7[_0x8c4c('0x58')]&&_0x3ff6e7[_0x8c4c('0x58')][0x2]?_0x3ff6e7[_0x8c4c('0x58')][0x2][_0x8c4c('0x59')]:undefined)||null},{'name':'attrVoiceQueues','value':_0x3ff6e7[_0x8c4c('0x65')]||(_0x3ff6e7[_0x8c4c('0x58')]&&_0x3ff6e7['attrs'][0x3]?_0x3ff6e7[_0x8c4c('0x58')][0x3][_0x8c4c('0x59')]:undefined)||[]}];case _0x8c4c('0x6a'):return[{'name':_0x8c4c('0x6b'),'type':_0x3ff6e7['reportType']||(_0x3ff6e7[_0x8c4c('0x58')]&&_0x3ff6e7[_0x8c4c('0x58')][0x0]?_0x3ff6e7[_0x8c4c('0x58')][0x0][_0x8c4c('0x2d')]:undefined)||null,'value':_0x3ff6e7[_0x8c4c('0x6b')]||(_0x3ff6e7[_0x8c4c('0x58')]&&_0x3ff6e7[_0x8c4c('0x58')][0x0]?_0x3ff6e7[_0x8c4c('0x58')][0x0][_0x8c4c('0x59')]:undefined)||null},{'name':_0x8c4c('0x6c'),'value':_0x3ff6e7[_0x8c4c('0x6c')]||(_0x3ff6e7['attrs']&&_0x3ff6e7[_0x8c4c('0x58')][0x1]?_0x3ff6e7['attrs'][0x1][_0x8c4c('0x59')]:undefined)||0x0}];default:return[];}}catch(_0x3eca3a){logger['error'](_0x8c4c('0x6d'),JSON[_0x8c4c('0x6e')](_0x3eca3a));return[];}}exports[_0x8c4c('0x6f')]=function(_0x2d6b3e,_0x126c16,_0x19813a){if(_0x2d6b3e[_0x8c4c('0x53')]['id']){delete _0x2d6b3e[_0x8c4c('0x53')]['id'];}return db['Dashboard']['find']({'where':{'id':_0x2d6b3e['params']['id']}})[_0x8c4c('0x22')](handleEntityNotFound(_0x126c16,null))[_0x8c4c('0x22')](function(_0xb65b3a){if(_0xb65b3a){_0x2d6b3e[_0x8c4c('0x53')][_0x8c4c('0x70')]=_0xb65b3a['id'];_0x2d6b3e[_0x8c4c('0x53')][_0x8c4c('0x58')]=widgetAttributes(_0x2d6b3e['body']);return db[_0x8c4c('0x71')]['create'](_0x2d6b3e[_0x8c4c('0x53')]);}})['then'](respondWithResult(_0x126c16,null))[_0x8c4c('0x43')](handleError(_0x126c16,null));};exports[_0x8c4c('0x72')]=function(_0x11a87b,_0xde98ce,_0x18a4af){var _0x5518eb={};var _0x5d428b={};var _0x425fad;var _0x52171b;return db['Dashboard'][_0x8c4c('0x73')]({'where':{'id':_0x11a87b['params']['id']}})['then'](handleEntityNotFound(_0xde98ce,null))[_0x8c4c('0x22')](function(_0x4fdbdd){if(_0x4fdbdd){_0x425fad=_0x4fdbdd;_0x5d428b[_0x8c4c('0x2f')]=_[_0x8c4c('0x31')](db[_0x8c4c('0x71')][_0x8c4c('0x2b')]);_0x5d428b[_0x8c4c('0x30')]=_[_0x8c4c('0x31')](_0x11a87b['query']);_0x5d428b[_0x8c4c('0x32')]=_[_0x8c4c('0x33')](_0x5d428b[_0x8c4c('0x2f')],_0x5d428b[_0x8c4c('0x30')]);_0x5518eb['attributes']=_[_0x8c4c('0x33')](_0x5d428b[_0x8c4c('0x2f')],qs[_0x8c4c('0x35')](_0x11a87b[_0x8c4c('0x30')][_0x8c4c('0x35')]));_0x5518eb[_0x8c4c('0x34')]=_0x5518eb[_0x8c4c('0x34')][_0x8c4c('0x36')]?_0x5518eb[_0x8c4c('0x34')]:_0x5d428b[_0x8c4c('0x2f')];_0x5518eb[_0x8c4c('0x74')]=qs[_0x8c4c('0x39')](_0x11a87b[_0x8c4c('0x30')][_0x8c4c('0x39')]);_0x5518eb[_0x8c4c('0x3a')]=qs[_0x8c4c('0x32')](_['pick'](_0x11a87b['query'],_0x5d428b[_0x8c4c('0x32')]));if(_0x11a87b['query'][_0x8c4c('0x3c')]){_0x5518eb['where']=_[_0x8c4c('0x3e')](_0x5518eb[_0x8c4c('0x3a')],{'$or':_['map'](_0x5518eb[_0x8c4c('0x34')],function(_0x20301e){var _0x396b0b={};_0x396b0b[_0x20301e]={'$like':'%'+_0x11a87b[_0x8c4c('0x30')][_0x8c4c('0x3c')]+'%'};return _0x396b0b;})});}_0x5518eb=_[_0x8c4c('0x3e')]({},_0x5518eb,_0x11a87b[_0x8c4c('0x3f')]);return _0x425fad[_0x8c4c('0x72')](_0x5518eb);}})[_0x8c4c('0x22')](function(_0x1c822a){if(_0x1c822a){_0x52171b=_0x1c822a[_0x8c4c('0x36')];if(!_0x11a87b[_0x8c4c('0x30')][_0x8c4c('0x37')](_0x8c4c('0x38'))){_0x5518eb[_0x8c4c('0x1c')]=qs[_0x8c4c('0x1c')](_0x11a87b[_0x8c4c('0x30')][_0x8c4c('0x1c')]);_0x5518eb[_0x8c4c('0x1a')]=qs[_0x8c4c('0x1a')](_0x11a87b[_0x8c4c('0x30')][_0x8c4c('0x1a')]);}return _0x425fad['getItems'](_0x5518eb);}})[_0x8c4c('0x22')](function(_0x37cbf9){if(_0x37cbf9){return _0x37cbf9?{'count':_0x52171b,'rows':_0x37cbf9}:null;}})[_0x8c4c('0x22')](respondWithResult(_0xde98ce,null))[_0x8c4c('0x43')](handleError(_0xde98ce,null));};
\ No newline at end of file
+var _0xf26b=['set','Content-Range','save','update','then','destroy','get','CustomDashboards','UserProfileResource','error','stack','name','send','index','Dashboard','rawAttributes','type','key','map','query','keys','intersection','attributes','fields','length','model','nolimit','order','sort','filters','where','merge','filter','options','include','catch','params','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','includeAll','omit','createdAt','updatedAt','iframe','attrUrl','attrs','https://','custom','attrPath','value','clock','attrHourFormat','HH:mm:ss','0.00','attrFontSize','counter','attrVoiceQueues','pie-chart','attrSerie1','attrSerie2','attrSerie3','web-report','attrReport','reportType','attrRefresh','widgetAttributes:\x20%s','stringify','addItem','DashboardId','DashboardItem','getItems','findOne','pick','hasOwnProperty','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','lodash','jsforce','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./dashboard.socket','register','sendStatus','status','end','json','undefined','limit','count','offset'];(function(_0x508685,_0x9f94af){var _0x976a76=function(_0x1bcb05){while(--_0x1bcb05){_0x508685['push'](_0x508685['shift']());}};_0x976a76(++_0x9f94af);}(_0xf26b,0x1b9));var _0xbf26=function(_0x514d47,_0x4bc037){_0x514d47=_0x514d47-0x0;var _0x27534c=_0xf26b[_0x514d47];return _0x27534c;};'use strict';var emlformat=require(_0xbf26('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xbf26('0x1'));var jsonpatch=require(_0xbf26('0x2'));var rp=require(_0xbf26('0x3'));var moment=require(_0xbf26('0x4'));var BPromise=require(_0xbf26('0x5'));var Mustache=require(_0xbf26('0x6'));var util=require(_0xbf26('0x7'));var path=require(_0xbf26('0x8'));var sox=require(_0xbf26('0x9'));var csv=require('to-csv');var ejs=require(_0xbf26('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xbf26('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xbf26('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xbf26('0xd'));var querystring=require(_0xbf26('0xe'));var Papa=require('papaparse');var Redis=require(_0xbf26('0xf'));var authService=require(_0xbf26('0x10'));var qs=require(_0xbf26('0x11'));var as=require(_0xbf26('0x12'));var hardwareService=require(_0xbf26('0x13'));var logger=require('../../config/logger')(_0xbf26('0x14'));var utils=require(_0xbf26('0x15'));var config=require(_0xbf26('0x16'));var licenseUtil=require(_0xbf26('0x17'));var db=require(_0xbf26('0x18'))['db'];config[_0xbf26('0x19')]=_[_0xbf26('0x1a')](config['redis'],{'host':_0xbf26('0x1b'),'port':0x18eb});var socket=require(_0xbf26('0x1c'))(new Redis(config[_0xbf26('0x19')]));require(_0xbf26('0x1d'))[_0xbf26('0x1e')](socket);function respondWithStatusCode(_0xaed6f0,_0x852115){_0x852115=_0x852115||0xcc;return function(_0x3bb6ee){if(_0x3bb6ee){return _0xaed6f0[_0xbf26('0x1f')](_0x852115);}return _0xaed6f0[_0xbf26('0x20')](_0x852115)[_0xbf26('0x21')]();};}function respondWithResult(_0x12e45c,_0x1cbc5b){_0x1cbc5b=_0x1cbc5b||0xc8;return function(_0x18883f){if(_0x18883f){return _0x12e45c[_0xbf26('0x20')](_0x1cbc5b)[_0xbf26('0x22')](_0x18883f);}};}function respondWithFilteredResult(_0x32e810,_0x405065){return function(_0x334374){if(_0x334374){var _0x534357=typeof _0x405065['offset']===_0xbf26('0x23')&&typeof _0x405065[_0xbf26('0x24')]===_0xbf26('0x23');var _0x2b996f=_0x334374[_0xbf26('0x25')];var _0x322793=_0x534357?0x0:_0x405065[_0xbf26('0x26')];var _0x5481b9=_0x534357?_0x334374[_0xbf26('0x25')]:_0x405065[_0xbf26('0x26')]+_0x405065[_0xbf26('0x24')];var _0x246101;if(_0x5481b9>=_0x2b996f){_0x5481b9=_0x2b996f;_0x246101=0xc8;}else{_0x246101=0xce;}_0x32e810[_0xbf26('0x20')](_0x246101);return _0x32e810[_0xbf26('0x27')](_0xbf26('0x28'),_0x322793+'-'+_0x5481b9+'/'+_0x2b996f)[_0xbf26('0x22')](_0x334374);}return null;};}function patchUpdates(_0x22fd78){return function(_0x3837d8){try{jsonpatch['apply'](_0x3837d8,_0x22fd78,!![]);}catch(_0x537c85){return BPromise['reject'](_0x537c85);}return _0x3837d8[_0xbf26('0x29')]();};}function saveUpdates(_0x41c099,_0xc44fda){return function(_0x311833){if(_0x311833){return _0x311833[_0xbf26('0x2a')](_0x41c099)[_0xbf26('0x2b')](function(_0x48c0d5){return _0x48c0d5;});}return null;};}function removeEntity(_0x2a309a,_0x1dd300){return function(_0x3aabf3){if(_0x3aabf3){return _0x3aabf3[_0xbf26('0x2c')]()['then'](function(){var _0x2b75f0=_0x3aabf3[_0xbf26('0x2d')]({'plain':!![]});var _0x32a808=_0xbf26('0x2e');return db[_0xbf26('0x2f')][_0xbf26('0x2c')]({'where':{'type':_0x32a808,'resourceId':_0x2b75f0['id']}})[_0xbf26('0x2b')](function(){return _0x3aabf3;});})[_0xbf26('0x2b')](function(){_0x2a309a[_0xbf26('0x20')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3154bc,_0xc4283b){return function(_0x2a8dba){if(!_0x2a8dba){_0x3154bc[_0xbf26('0x1f')](0x194);}return _0x2a8dba;};}function handleError(_0x347cb5,_0x12cadf){_0x12cadf=_0x12cadf||0x1f4;return function(_0x47f3d9){logger[_0xbf26('0x30')](_0x47f3d9[_0xbf26('0x31')]);if(_0x47f3d9[_0xbf26('0x32')]){delete _0x47f3d9[_0xbf26('0x32')];}_0x347cb5['status'](_0x12cadf)[_0xbf26('0x33')](_0x47f3d9);};}exports[_0xbf26('0x34')]=function(_0xd46268,_0x1f732c){var _0x34af01={},_0x4bead4={},_0x9dc632={'count':0x0,'rows':[]};var _0x6bb5a4=_['map'](db[_0xbf26('0x35')][_0xbf26('0x36')],function(_0x345f9b){return{'name':_0x345f9b['fieldName'],'type':_0x345f9b[_0xbf26('0x37')][_0xbf26('0x38')]};});_0x4bead4['model']=_[_0xbf26('0x39')](_0x6bb5a4,_0xbf26('0x32'));_0x4bead4[_0xbf26('0x3a')]=_[_0xbf26('0x3b')](_0xd46268[_0xbf26('0x3a')]);_0x4bead4['filters']=_[_0xbf26('0x3c')](_0x4bead4['model'],_0x4bead4['query']);_0x34af01[_0xbf26('0x3d')]=_['intersection'](_0x4bead4['model'],qs[_0xbf26('0x3e')](_0xd46268['query'][_0xbf26('0x3e')]));_0x34af01['attributes']=_0x34af01['attributes'][_0xbf26('0x3f')]?_0x34af01[_0xbf26('0x3d')]:_0x4bead4[_0xbf26('0x40')];if(!_0xd46268['query']['hasOwnProperty'](_0xbf26('0x41'))){_0x34af01[_0xbf26('0x24')]=qs[_0xbf26('0x24')](_0xd46268[_0xbf26('0x3a')][_0xbf26('0x24')]);_0x34af01[_0xbf26('0x26')]=qs[_0xbf26('0x26')](_0xd46268[_0xbf26('0x3a')][_0xbf26('0x26')]);}_0x34af01[_0xbf26('0x42')]=qs[_0xbf26('0x43')](_0xd46268[_0xbf26('0x3a')]['sort']);_0x34af01['where']=qs[_0xbf26('0x44')](_['pick'](_0xd46268[_0xbf26('0x3a')],_0x4bead4[_0xbf26('0x44')]),_0x6bb5a4);if(_0xd46268[_0xbf26('0x3a')]['filter']){_0x34af01[_0xbf26('0x45')]=_[_0xbf26('0x46')](_0x34af01['where'],{'$or':_[_0xbf26('0x39')](_0x6bb5a4,function(_0x3abd93){if(_0x3abd93[_0xbf26('0x37')]!=='VIRTUAL'){var _0x59f6f1={};_0x59f6f1[_0x3abd93[_0xbf26('0x32')]]={'$like':'%'+_0xd46268[_0xbf26('0x3a')][_0xbf26('0x47')]+'%'};return _0x59f6f1;}})});}_0x34af01=_[_0xbf26('0x46')]({},_0x34af01,_0xd46268[_0xbf26('0x48')]);var _0x3aba2e={'where':_0x34af01['where']};return db[_0xbf26('0x35')][_0xbf26('0x25')](_0x3aba2e)[_0xbf26('0x2b')](function(_0xd1c47e){_0x9dc632[_0xbf26('0x25')]=_0xd1c47e;if(_0xd46268[_0xbf26('0x3a')]['includeAll']){_0x34af01[_0xbf26('0x49')]=[{'all':!![]}];}return db['Dashboard']['findAll'](_0x34af01);})['then'](function(_0x4cb082){_0x9dc632['rows']=_0x4cb082;return _0x9dc632;})['then'](respondWithFilteredResult(_0x1f732c,_0x34af01))[_0xbf26('0x4a')](handleError(_0x1f732c,null));};exports['show']=function(_0x594a86,_0x4d8e56){var _0x85de0={'raw':![],'where':{'id':_0x594a86[_0xbf26('0x4b')]['id']}},_0x3e7934={};_0x3e7934[_0xbf26('0x40')]=_[_0xbf26('0x3b')](db[_0xbf26('0x35')][_0xbf26('0x36')]);_0x3e7934[_0xbf26('0x3a')]=_[_0xbf26('0x3b')](_0x594a86[_0xbf26('0x3a')]);_0x3e7934[_0xbf26('0x44')]=_['intersection'](_0x3e7934[_0xbf26('0x40')],_0x3e7934[_0xbf26('0x3a')]);_0x85de0[_0xbf26('0x3d')]=_[_0xbf26('0x3c')](_0x3e7934['model'],qs[_0xbf26('0x3e')](_0x594a86[_0xbf26('0x3a')][_0xbf26('0x3e')]));_0x85de0[_0xbf26('0x3d')]=_0x85de0[_0xbf26('0x3d')][_0xbf26('0x3f')]?_0x85de0[_0xbf26('0x3d')]:_0x3e7934[_0xbf26('0x40')];if(_0x594a86['query']['includeAll']){_0x85de0['include']=[{'all':!![]}];}_0x85de0=_[_0xbf26('0x46')]({},_0x85de0,_0x594a86[_0xbf26('0x48')]);return db[_0xbf26('0x35')][_0xbf26('0x4c')](_0x85de0)['then'](handleEntityNotFound(_0x4d8e56,null))[_0xbf26('0x2b')](respondWithResult(_0x4d8e56,null))['catch'](handleError(_0x4d8e56,null));};exports[_0xbf26('0x4d')]=function(_0x53a5ee,_0x25d47b){return db[_0xbf26('0x35')][_0xbf26('0x4d')](_0x53a5ee[_0xbf26('0x4e')],{})[_0xbf26('0x2b')](function(_0x351dc6){var _0xcd6a92=_0x53a5ee[_0xbf26('0x4f')][_0xbf26('0x2d')]({'plain':!![]});if(!_0xcd6a92)throw new Error(_0xbf26('0x50'));if(_0xcd6a92[_0xbf26('0x51')]===_0xbf26('0x4f')){var _0x55b8e5=_0x351dc6[_0xbf26('0x2d')]({'plain':!![]});var _0x131660=_0xbf26('0x2e');return db[_0xbf26('0x52')][_0xbf26('0x4c')]({'where':{'name':_0x131660,'userProfileId':_0xcd6a92['userProfileId']},'raw':!![]})[_0xbf26('0x2b')](function(_0xb17ad5){if(_0xb17ad5&&_0xb17ad5[_0xbf26('0x53')]===0x0){return db[_0xbf26('0x2f')]['create']({'name':_0x55b8e5[_0xbf26('0x32')],'resourceId':_0x55b8e5['id'],'type':_0xb17ad5[_0xbf26('0x32')],'sectionId':_0xb17ad5['id']},{})[_0xbf26('0x2b')](function(){return _0x351dc6;});}else{return _0x351dc6;}})[_0xbf26('0x4a')](function(_0x308cc6){logger[_0xbf26('0x30')](_0xbf26('0x54'),_0x308cc6);throw _0x308cc6;});}return _0x351dc6;})[_0xbf26('0x2b')](respondWithResult(_0x25d47b,0xc9))[_0xbf26('0x4a')](handleError(_0x25d47b,null));};exports['clone']=function(_0x511d76,_0x3b465d){var _0x20a531={'where':{'id':_0x511d76[_0xbf26('0x4b')]['id']}},_0x6e270b={};_0x6e270b['model']=_[_0xbf26('0x3b')](db[_0xbf26('0x35')][_0xbf26('0x36')]);_0x20a531[_0xbf26('0x3d')]=_[_0xbf26('0x3c')](_0x6e270b['model'],qs[_0xbf26('0x3e')](_0x511d76[_0xbf26('0x3a')][_0xbf26('0x3e')]));_0x20a531[_0xbf26('0x3d')]=_0x20a531[_0xbf26('0x3d')][_0xbf26('0x3f')]?_0x20a531[_0xbf26('0x3d')]:_0x6e270b['model'];if(_0x511d76[_0xbf26('0x3a')][_0xbf26('0x55')]){_0x20a531['include']=[{'all':!![]}];}_0x20a531=_['merge']({},_0x20a531,_0x511d76[_0xbf26('0x48')]);return db[_0xbf26('0x35')]['find'](_0x20a531)[_0xbf26('0x2b')](handleEntityNotFound(_0x3b465d,null))[_0xbf26('0x2b')](function(_0x15978d){if(_0x15978d){var _0x2843da=_0x15978d['get']({'plain':!![]});_0x2843da=qs[_0xbf26('0x56')](_0x2843da,['id',_0xbf26('0x57'),_0xbf26('0x58')]);_0x511d76[_0xbf26('0x4e')]=_[_0xbf26('0x56')](_0x511d76[_0xbf26('0x4e')],['id','createdAt',_0xbf26('0x58')]);return db[_0xbf26('0x35')]['create'](_[_0xbf26('0x46')](_0x2843da,_0x511d76[_0xbf26('0x4e')]),{'include':_0x511d76[_0xbf26('0x3a')][_0xbf26('0x55')]?[{'all':!![]}]:undefined})['then'](function(_0x2fc91e){var _0x446ef4=_0x511d76[_0xbf26('0x4f')][_0xbf26('0x2d')]({'plain':!![]});if(!_0x446ef4)throw new Error(_0xbf26('0x50'));if(_0x446ef4[_0xbf26('0x51')]===_0xbf26('0x4f')){var _0x5e31d1=_0x2fc91e[_0xbf26('0x2d')]({'plain':!![]});var _0x4c9b45=_0xbf26('0x2e');return db[_0xbf26('0x52')][_0xbf26('0x4c')]({'where':{'name':_0x4c9b45,'userProfileId':_0x446ef4['userProfileId']},'raw':!![]})[_0xbf26('0x2b')](function(_0x7056f8){if(_0x7056f8&&_0x7056f8['autoAssociation']===0x0){return db['UserProfileResource'][_0xbf26('0x4d')]({'name':_0x5e31d1[_0xbf26('0x32')],'resourceId':_0x5e31d1['id'],'type':_0x7056f8[_0xbf26('0x32')],'sectionId':_0x7056f8['id']},{})[_0xbf26('0x2b')](function(){return _0x2fc91e;});}else{return _0x2fc91e;}})[_0xbf26('0x4a')](function(_0x3e6171){logger['error'](_0xbf26('0x54'),_0x3e6171);throw _0x3e6171;});}return _0x2fc91e;});}})[_0xbf26('0x2b')](respondWithResult(_0x3b465d,0xc9))['catch'](handleError(_0x3b465d,null));};exports[_0xbf26('0x2a')]=function(_0x4e86a7,_0x15279d){if(_0x4e86a7['body']['id']){delete _0x4e86a7[_0xbf26('0x4e')]['id'];}return db[_0xbf26('0x35')][_0xbf26('0x4c')]({'where':{'id':_0x4e86a7[_0xbf26('0x4b')]['id']}})[_0xbf26('0x2b')](handleEntityNotFound(_0x15279d,null))[_0xbf26('0x2b')](saveUpdates(_0x4e86a7[_0xbf26('0x4e')],null))[_0xbf26('0x2b')](respondWithResult(_0x15279d,null))['catch'](handleError(_0x15279d,null));};exports[_0xbf26('0x2c')]=function(_0x11bdb0,_0x2a6dad){return db[_0xbf26('0x35')][_0xbf26('0x4c')]({'where':{'id':_0x11bdb0['params']['id']}})[_0xbf26('0x2b')](handleEntityNotFound(_0x2a6dad,null))[_0xbf26('0x2b')](removeEntity(_0x2a6dad,null))[_0xbf26('0x4a')](handleError(_0x2a6dad,null));};function widgetAttributes(_0x28a823){try{switch(_0x28a823[_0xbf26('0x37')]){case _0xbf26('0x59'):return[{'name':_0xbf26('0x5a'),'value':_0x28a823[_0xbf26('0x5a')]||(_0x28a823[_0xbf26('0x5b')]&&_0x28a823['attrs'][0x0]?_0x28a823[_0xbf26('0x5b')][0x0]['value']:undefined)||_0xbf26('0x5c')}];case _0xbf26('0x5d'):return[{'name':'attrPath','value':_0x28a823[_0xbf26('0x5e')]||(_0x28a823[_0xbf26('0x5b')]&&_0x28a823[_0xbf26('0x5b')][0x0]?_0x28a823[_0xbf26('0x5b')][0x0][_0xbf26('0x5f')]:undefined)||''}];case _0xbf26('0x60'):return[{'name':'attrHourFormat','value':_0x28a823[_0xbf26('0x61')]||(_0x28a823['attrs']&&_0x28a823[_0xbf26('0x5b')][0x0]?_0x28a823[_0xbf26('0x5b')][0x0]['value']:undefined)||_0xbf26('0x62')},{'name':'attrTimezone','value':_0x28a823['attrTimezone']||(_0x28a823[_0xbf26('0x5b')]&&_0x28a823[_0xbf26('0x5b')][0x1]?_0x28a823['attrs'][0x1][_0xbf26('0x5f')]:undefined)||_0xbf26('0x63')},{'name':_0xbf26('0x64'),'value':_0x28a823[_0xbf26('0x64')]||(_0x28a823['attrs']&&_0x28a823['attrs'][0x2]?_0x28a823[_0xbf26('0x5b')][0x2][_0xbf26('0x5f')]:undefined)||0xc}];case _0xbf26('0x65'):return[{'name':'attrMetric','value':_0x28a823['attrMetric']||(_0x28a823[_0xbf26('0x5b')]&&_0x28a823[_0xbf26('0x5b')][0x0]?_0x28a823[_0xbf26('0x5b')][0x0][_0xbf26('0x5f')]:undefined)||'total'},{'name':'attrVoiceQueues','value':_0x28a823[_0xbf26('0x66')]||(_0x28a823[_0xbf26('0x5b')]&&_0x28a823[_0xbf26('0x5b')][0x1]?_0x28a823[_0xbf26('0x5b')][0x1]['value']:undefined)||[]},{'name':_0xbf26('0x64'),'value':_0x28a823[_0xbf26('0x64')]||(_0x28a823[_0xbf26('0x5b')]&&_0x28a823[_0xbf26('0x5b')][0x2]?_0x28a823[_0xbf26('0x5b')][0x2]['value']:undefined)||0x14}];case'multibar-chart':case _0xbf26('0x67'):return[{'name':_0xbf26('0x68'),'value':_0x28a823[_0xbf26('0x68')]||(_0x28a823[_0xbf26('0x5b')]&&_0x28a823[_0xbf26('0x5b')][0x0]?_0x28a823['attrs'][0x0][_0xbf26('0x5f')]:undefined)||'total'},{'name':_0xbf26('0x69'),'value':_0x28a823['attrSerie2']||(_0x28a823[_0xbf26('0x5b')]&&_0x28a823[_0xbf26('0x5b')][0x1]?_0x28a823[_0xbf26('0x5b')][0x1][_0xbf26('0x5f')]:undefined)||null},{'name':_0xbf26('0x6a'),'value':_0x28a823[_0xbf26('0x6a')]||(_0x28a823[_0xbf26('0x5b')]&&_0x28a823['attrs'][0x2]?_0x28a823[_0xbf26('0x5b')][0x2][_0xbf26('0x5f')]:undefined)||null},{'name':_0xbf26('0x66'),'value':_0x28a823[_0xbf26('0x66')]||(_0x28a823[_0xbf26('0x5b')]&&_0x28a823[_0xbf26('0x5b')][0x3]?_0x28a823['attrs'][0x3][_0xbf26('0x5f')]:undefined)||[]}];case _0xbf26('0x6b'):return[{'name':_0xbf26('0x6c'),'type':_0x28a823[_0xbf26('0x6d')]||(_0x28a823[_0xbf26('0x5b')]&&_0x28a823['attrs'][0x0]?_0x28a823[_0xbf26('0x5b')][0x0]['type']:undefined)||null,'value':_0x28a823[_0xbf26('0x6c')]||(_0x28a823[_0xbf26('0x5b')]&&_0x28a823[_0xbf26('0x5b')][0x0]?_0x28a823[_0xbf26('0x5b')][0x0][_0xbf26('0x5f')]:undefined)||null},{'name':_0xbf26('0x6e'),'value':_0x28a823['attrRefresh']||(_0x28a823[_0xbf26('0x5b')]&&_0x28a823['attrs'][0x1]?_0x28a823[_0xbf26('0x5b')][0x1][_0xbf26('0x5f')]:undefined)||0x0}];default:return[];}}catch(_0x35e628){logger[_0xbf26('0x30')](_0xbf26('0x6f'),JSON[_0xbf26('0x70')](_0x35e628));return[];}}exports[_0xbf26('0x71')]=function(_0xe3a04,_0x4bb17f,_0x3d93ea){if(_0xe3a04[_0xbf26('0x4e')]['id']){delete _0xe3a04['body']['id'];}return db[_0xbf26('0x35')][_0xbf26('0x4c')]({'where':{'id':_0xe3a04[_0xbf26('0x4b')]['id']}})[_0xbf26('0x2b')](handleEntityNotFound(_0x4bb17f,null))[_0xbf26('0x2b')](function(_0x17d77e){if(_0x17d77e){_0xe3a04[_0xbf26('0x4e')][_0xbf26('0x72')]=_0x17d77e['id'];_0xe3a04['body'][_0xbf26('0x5b')]=widgetAttributes(_0xe3a04[_0xbf26('0x4e')]);return db[_0xbf26('0x73')][_0xbf26('0x4d')](_0xe3a04[_0xbf26('0x4e')]);}})[_0xbf26('0x2b')](respondWithResult(_0x4bb17f,null))[_0xbf26('0x4a')](handleError(_0x4bb17f,null));};exports[_0xbf26('0x74')]=function(_0x1316f3,_0x456dc5,_0x548310){var _0x39f802={};var _0xc17fb1={};var _0x53091b;var _0x4a7f67;return db[_0xbf26('0x35')][_0xbf26('0x75')]({'where':{'id':_0x1316f3[_0xbf26('0x4b')]['id']}})[_0xbf26('0x2b')](handleEntityNotFound(_0x456dc5,null))[_0xbf26('0x2b')](function(_0x318e4d){if(_0x318e4d){_0x53091b=_0x318e4d;_0xc17fb1[_0xbf26('0x40')]=_[_0xbf26('0x3b')](db[_0xbf26('0x73')]['rawAttributes']);_0xc17fb1['query']=_['keys'](_0x1316f3[_0xbf26('0x3a')]);_0xc17fb1[_0xbf26('0x44')]=_[_0xbf26('0x3c')](_0xc17fb1[_0xbf26('0x40')],_0xc17fb1['query']);_0x39f802[_0xbf26('0x3d')]=_[_0xbf26('0x3c')](_0xc17fb1[_0xbf26('0x40')],qs[_0xbf26('0x3e')](_0x1316f3[_0xbf26('0x3a')][_0xbf26('0x3e')]));_0x39f802[_0xbf26('0x3d')]=_0x39f802[_0xbf26('0x3d')][_0xbf26('0x3f')]?_0x39f802['attributes']:_0xc17fb1[_0xbf26('0x40')];_0x39f802[_0xbf26('0x42')]=qs[_0xbf26('0x43')](_0x1316f3[_0xbf26('0x3a')]['sort']);_0x39f802[_0xbf26('0x45')]=qs[_0xbf26('0x44')](_[_0xbf26('0x76')](_0x1316f3[_0xbf26('0x3a')],_0xc17fb1[_0xbf26('0x44')]));if(_0x1316f3['query'][_0xbf26('0x47')]){_0x39f802[_0xbf26('0x45')]=_[_0xbf26('0x46')](_0x39f802[_0xbf26('0x45')],{'$or':_['map'](_0x39f802[_0xbf26('0x3d')],function(_0x584bd6){var _0x563078={};_0x563078[_0x584bd6]={'$like':'%'+_0x1316f3[_0xbf26('0x3a')][_0xbf26('0x47')]+'%'};return _0x563078;})});}_0x39f802=_[_0xbf26('0x46')]({},_0x39f802,_0x1316f3[_0xbf26('0x48')]);return _0x53091b['getItems'](_0x39f802);}})[_0xbf26('0x2b')](function(_0x291a38){if(_0x291a38){_0x4a7f67=_0x291a38['length'];if(!_0x1316f3[_0xbf26('0x3a')][_0xbf26('0x77')](_0xbf26('0x41'))){_0x39f802[_0xbf26('0x24')]=qs['limit'](_0x1316f3[_0xbf26('0x3a')][_0xbf26('0x24')]);_0x39f802[_0xbf26('0x26')]=qs[_0xbf26('0x26')](_0x1316f3[_0xbf26('0x3a')][_0xbf26('0x26')]);}return _0x53091b[_0xbf26('0x74')](_0x39f802);}})[_0xbf26('0x2b')](function(_0x384f9e){if(_0x384f9e){return _0x384f9e?{'count':_0x4a7f67,'rows':_0x384f9e}:null;}})['then'](respondWithResult(_0x456dc5,null))[_0xbf26('0x4a')](handleError(_0x456dc5,null));};
\ No newline at end of file
index 02b644e..a6c612f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc387=['setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports','Dashboard'];(function(_0x2c7975,_0x66dbbb){var _0x78299e=function(_0x7314f8){while(--_0x7314f8){_0x2c7975['push'](_0x2c7975['shift']());}};_0x78299e(++_0x66dbbb);}(_0xc387,0x128));var _0x7c38=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xc387[_0x14add3];return _0x4a174f;};'use strict';var EventEmitter=require('events');var Dashboard=require('../../mysqldb')['db'][_0x7c38('0x0')];var DashboardEvents=new EventEmitter();DashboardEvents[_0x7c38('0x1')](0x0);var events={'afterCreate':_0x7c38('0x2'),'afterUpdate':_0x7c38('0x3'),'afterDestroy':_0x7c38('0x4')};function emitEvent(_0x5dc4b1){return function(_0x56b428,_0x1df709,_0x678893){DashboardEvents[_0x7c38('0x5')](_0x5dc4b1+':'+_0x56b428['id'],_0x56b428);DashboardEvents[_0x7c38('0x5')](_0x5dc4b1,_0x56b428);_0x678893(null);};}for(var e in events){if(events[_0x7c38('0x6')](e)){var event=events[e];Dashboard[_0x7c38('0x7')](e,emitEvent(event));}}module[_0x7c38('0x8')]=DashboardEvents;
\ No newline at end of file
+var _0x50ed=['events','../../mysqldb','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports'];(function(_0x3c98f9,_0x486d22){var _0x5673dd=function(_0x22131a){while(--_0x22131a){_0x3c98f9['push'](_0x3c98f9['shift']());}};_0x5673dd(++_0x486d22);}(_0x50ed,0x14a));var _0xd50e=function(_0x1702b5,_0x13b553){_0x1702b5=_0x1702b5-0x0;var _0x5890c6=_0x50ed[_0x1702b5];return _0x5890c6;};'use strict';var EventEmitter=require(_0xd50e('0x0'));var Dashboard=require(_0xd50e('0x1'))['db']['Dashboard'];var DashboardEvents=new EventEmitter();DashboardEvents[_0xd50e('0x2')](0x0);var events={'afterCreate':_0xd50e('0x3'),'afterUpdate':_0xd50e('0x4'),'afterDestroy':_0xd50e('0x5')};function emitEvent(_0x5de757){return function(_0x4b1292,_0x3daecc,_0x1a1b59){DashboardEvents[_0xd50e('0x6')](_0x5de757+':'+_0x4b1292['id'],_0x4b1292);DashboardEvents[_0xd50e('0x6')](_0x5de757,_0x4b1292);_0x1a1b59(null);};}for(var e in events){if(events[_0xd50e('0x7')](e)){var event=events[e];Dashboard[_0xd50e('0x8')](e,emitEvent(event));}}module[_0xd50e('0x9')]=DashboardEvents;
\ No newline at end of file
index a3ba145..e54f33e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x173c=['define','Dashboard','lodash','util','../../config/logger','api','moment','bluebird','rimraf','../../config/environment','./dashboard.attributes','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x173c,0xf2));var _0xc173=function(_0xe7bd0a,_0xd166e8){_0xe7bd0a=_0xe7bd0a-0x0;var _0x5901b0=_0x173c[_0xe7bd0a];return _0x5901b0;};'use strict';var _=require(_0xc173('0x0'));var util=require(_0xc173('0x1'));var logger=require(_0xc173('0x2'))(_0xc173('0x3'));var moment=require(_0xc173('0x4'));var BPromise=require(_0xc173('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xc173('0x6'));var config=require(_0xc173('0x7'));var attributes=require(_0xc173('0x8'));module[_0xc173('0x9')]=function(_0x5a0bbd,_0x5a7804){return _0x5a0bbd[_0xc173('0xa')](_0xc173('0xb'),attributes,{'tableName':'dashboards','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9fa9=['../../config/environment','./dashboard.attributes','exports','dashboards','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x53d2be,_0xea766f){var _0x15a701=function(_0x1ec9e3){while(--_0x1ec9e3){_0x53d2be['push'](_0x53d2be['shift']());}};_0x15a701(++_0xea766f);}(_0x9fa9,0x1c7));var _0x99fa=function(_0x256eb1,_0x458213){_0x256eb1=_0x256eb1-0x0;var _0x27d079=_0x9fa9[_0x256eb1];return _0x27d079;};'use strict';var _=require(_0x99fa('0x0'));var util=require(_0x99fa('0x1'));var logger=require(_0x99fa('0x2'))(_0x99fa('0x3'));var moment=require(_0x99fa('0x4'));var BPromise=require(_0x99fa('0x5'));var rp=require(_0x99fa('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x99fa('0x7'));var attributes=require(_0x99fa('0x8'));module[_0x99fa('0x9')]=function(_0x8bcef9,_0x5cd263){return _0x8bcef9['define']('Dashboard',attributes,{'tableName':_0x99fa('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8f4ef89..7ddf783 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d0f=['error','code','message','info','result','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./dashboard.socket','register','request','then','Dashboard,\x20%s,\x20%s','request\x20sent','Dashboard,\x20%s,\x20%s,\x20%s'];(function(_0x2c45f7,_0x14e99e){var _0x14e48b=function(_0x57854e){while(--_0x57854e){_0x2c45f7['push'](_0x2c45f7['shift']());}};_0x14e48b(++_0x14e99e);}(_0x1d0f,0x1c5));var _0xf1d0=function(_0x436f0a,_0x26573e){_0x436f0a=_0x436f0a-0x0;var _0xbd3230=_0x1d0f[_0x436f0a];return _0xbd3230;};'use strict';var _=require(_0xf1d0('0x0'));var util=require(_0xf1d0('0x1'));var moment=require(_0xf1d0('0x2'));var BPromise=require(_0xf1d0('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xf1d0('0x4'));var db=require(_0xf1d0('0x5'))['db'];var utils=require(_0xf1d0('0x6'));var logger=require(_0xf1d0('0x7'))(_0xf1d0('0x8'));var config=require('../../config/environment');var jayson=require(_0xf1d0('0x9'));var client=jayson[_0xf1d0('0xa')][_0xf1d0('0xb')]({'port':0x232a});config[_0xf1d0('0xc')]=_[_0xf1d0('0xd')](config[_0xf1d0('0xc')],{'host':_0xf1d0('0xe'),'port':0x18eb});var socket=require(_0xf1d0('0xf'))(new Redis(config[_0xf1d0('0xc')]));require(_0xf1d0('0x10'))[_0xf1d0('0x11')](socket);function respondWithRpcPromise(_0x2c111a,_0x3043dd,_0x53e836){return new BPromise(function(_0x45fde6,_0x128921){return client[_0xf1d0('0x12')](_0x2c111a,_0x53e836)[_0xf1d0('0x13')](function(_0x49243f){logger['info'](_0xf1d0('0x14'),_0x3043dd,_0xf1d0('0x15'));logger['debug'](_0xf1d0('0x16'),_0x3043dd,_0xf1d0('0x15'),JSON['stringify'](_0x49243f));if(_0x49243f[_0xf1d0('0x17')]){if(_0x49243f['error'][_0xf1d0('0x18')]===0x1f4){logger[_0xf1d0('0x17')](_0xf1d0('0x14'),_0x3043dd,_0x49243f[_0xf1d0('0x17')]['message']);return _0x128921(_0x49243f[_0xf1d0('0x17')]['message']);}logger[_0xf1d0('0x17')](_0xf1d0('0x14'),_0x3043dd,_0x49243f[_0xf1d0('0x17')]['message']);return _0x45fde6(_0x49243f['error'][_0xf1d0('0x19')]);}else{logger[_0xf1d0('0x1a')]('Dashboard,\x20%s,\x20%s',_0x3043dd,_0xf1d0('0x15'));_0x45fde6(_0x49243f[_0xf1d0('0x1b')][_0xf1d0('0x19')]);}})['catch'](function(_0x13e5dc){logger['error'](_0xf1d0('0x14'),_0x3043dd,_0x13e5dc);_0x128921(_0x13e5dc);});});}
\ No newline at end of file
+var _0xf6ef=['defaults','socket.io-emitter','./dashboard.socket','register','info','Dashboard,\x20%s,\x20%s','debug','error','code','message','request\x20sent','result','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','http','redis'];(function(_0x2302a6,_0x365184){var _0x5803ba=function(_0x3bd2f6){while(--_0x3bd2f6){_0x2302a6['push'](_0x2302a6['shift']());}};_0x5803ba(++_0x365184);}(_0xf6ef,0x115));var _0xff6e=function(_0x40c120,_0x945e7a){_0x40c120=_0x40c120-0x0;var _0xe9f0d=_0xf6ef[_0x40c120];return _0xe9f0d;};'use strict';var _=require(_0xff6e('0x0'));var util=require(_0xff6e('0x1'));var moment=require(_0xff6e('0x2'));var BPromise=require('bluebird');var rs=require(_0xff6e('0x3'));var fs=require('fs');var Redis=require(_0xff6e('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xff6e('0x5'));var logger=require(_0xff6e('0x6'))(_0xff6e('0x7'));var config=require('../../config/environment');var jayson=require(_0xff6e('0x8'));var client=jayson['client'][_0xff6e('0x9')]({'port':0x232a});config[_0xff6e('0xa')]=_[_0xff6e('0xb')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xff6e('0xc'))(new Redis(config[_0xff6e('0xa')]));require(_0xff6e('0xd'))[_0xff6e('0xe')](socket);function respondWithRpcPromise(_0x370b4b,_0x206466,_0x3c621b){return new BPromise(function(_0x440214,_0x4032c5){return client['request'](_0x370b4b,_0x3c621b)['then'](function(_0x8383cb){logger[_0xff6e('0xf')](_0xff6e('0x10'),_0x206466,'request\x20sent');logger[_0xff6e('0x11')]('Dashboard,\x20%s,\x20%s,\x20%s',_0x206466,'request\x20sent',JSON['stringify'](_0x8383cb));if(_0x8383cb[_0xff6e('0x12')]){if(_0x8383cb[_0xff6e('0x12')][_0xff6e('0x13')]===0x1f4){logger[_0xff6e('0x12')](_0xff6e('0x10'),_0x206466,_0x8383cb[_0xff6e('0x12')][_0xff6e('0x14')]);return _0x4032c5(_0x8383cb[_0xff6e('0x12')][_0xff6e('0x14')]);}logger['error'](_0xff6e('0x10'),_0x206466,_0x8383cb[_0xff6e('0x12')][_0xff6e('0x14')]);return _0x440214(_0x8383cb[_0xff6e('0x12')][_0xff6e('0x14')]);}else{logger[_0xff6e('0xf')](_0xff6e('0x10'),_0x206466,_0xff6e('0x15'));_0x440214(_0x8383cb[_0xff6e('0x16')][_0xff6e('0x14')]);}})[_0xff6e('0x17')](function(_0x3cf51a){logger[_0xff6e('0x12')](_0xff6e('0x10'),_0x206466,_0x3cf51a);_0x4032c5(_0x3cf51a);});});}
\ No newline at end of file
index 4a7ac6f..f117ad7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0ecc=['emit','register','length','dashboard:','./dashboard.events','save','remove'];(function(_0xc03391,_0x4d56df){var _0xe361bf=function(_0x289330){while(--_0x289330){_0xc03391['push'](_0xc03391['shift']());}};_0xe361bf(++_0x4d56df);}(_0x0ecc,0xf2));var _0xc0ec=function(_0x1ba24e,_0x1f6ed6){_0x1ba24e=_0x1ba24e-0x0;var _0x4356a3=_0x0ecc[_0x1ba24e];return _0x4356a3;};'use strict';var DashboardEvents=require(_0xc0ec('0x0'));var events=[_0xc0ec('0x1'),_0xc0ec('0x2'),'update'];function createListener(_0x1c5f5c,_0x1f5812){return function(_0x1e0b3b){_0x1f5812[_0xc0ec('0x3')](_0x1c5f5c,_0x1e0b3b);};}function removeListener(_0x5a6376,_0x459127){return function(){DashboardEvents['removeListener'](_0x5a6376,_0x459127);};}exports[_0xc0ec('0x4')]=function(_0x487daf){for(var _0x38b551=0x0,_0x2bb5bd=events[_0xc0ec('0x5')];_0x38b551<_0x2bb5bd;_0x38b551++){var _0x5b46b8=events[_0x38b551];var _0x355b03=createListener(_0xc0ec('0x6')+_0x5b46b8,_0x487daf);DashboardEvents['on'](_0x5b46b8,_0x355b03);}};
\ No newline at end of file
+var _0x6cc7=['remove','update','emit','removeListener','register','length','dashboard:','./dashboard.events'];(function(_0x39f34f,_0x298f45){var _0x59fee1=function(_0x6ebbb7){while(--_0x6ebbb7){_0x39f34f['push'](_0x39f34f['shift']());}};_0x59fee1(++_0x298f45);}(_0x6cc7,0x1e7));var _0x76cc=function(_0x211fef,_0x4ab716){_0x211fef=_0x211fef-0x0;var _0x5447bf=_0x6cc7[_0x211fef];return _0x5447bf;};'use strict';var DashboardEvents=require(_0x76cc('0x0'));var events=['save',_0x76cc('0x1'),_0x76cc('0x2')];function createListener(_0x5ecc4a,_0x6cd2fb){return function(_0x35810e){_0x6cd2fb[_0x76cc('0x3')](_0x5ecc4a,_0x35810e);};}function removeListener(_0x1fe5c3,_0x3cc34b){return function(){DashboardEvents[_0x76cc('0x4')](_0x1fe5c3,_0x3cc34b);};}exports[_0x76cc('0x5')]=function(_0x2cae43){for(var _0x41b773=0x0,_0x1c4623=events[_0x76cc('0x6')];_0x41b773<_0x1c4623;_0x41b773++){var _0x1c0bd0=events[_0x41b773];var _0x4a9812=createListener(_0x76cc('0x7')+_0x1c0bd0,_0x2cae43);DashboardEvents['on'](_0x1c0bd0,_0x4a9812);}};
\ No newline at end of file
index 0c149fe..95f1cc2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad88=['put','delete','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','./dashboard.controller','get','isAuthenticated','index','/:id','show','/:id/items','create','clone','post','addItem'];(function(_0x21092d,_0x142920){var _0x543018=function(_0x3db396){while(--_0x3db396){_0x21092d['push'](_0x21092d['shift']());}};_0x543018(++_0x142920);}(_0xad88,0x13e));var _0x8ad8=function(_0x2faddb,_0xc18b78){_0x2faddb=_0x2faddb-0x0;var _0x273c05=_0xad88[_0x2faddb];return _0x273c05;};'use strict';var multer=require(_0x8ad8('0x0'));var util=require(_0x8ad8('0x1'));var path=require('path');var timeout=require(_0x8ad8('0x2'));var express=require(_0x8ad8('0x3'));var router=express[_0x8ad8('0x4')]();var fs_extra=require(_0x8ad8('0x5'));var auth=require(_0x8ad8('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x8ad8('0x7'));router[_0x8ad8('0x8')]('/',auth[_0x8ad8('0x9')](),controller[_0x8ad8('0xa')]);router[_0x8ad8('0x8')](_0x8ad8('0xb'),auth[_0x8ad8('0x9')](),controller[_0x8ad8('0xc')]);router[_0x8ad8('0x8')](_0x8ad8('0xd'),auth['isAuthenticated'](),controller['getItems']);router['post']('/',auth[_0x8ad8('0x9')](),controller[_0x8ad8('0xe')]);router['post']('/:id/clone',auth[_0x8ad8('0x9')](),controller[_0x8ad8('0xf')]);router[_0x8ad8('0x10')]('/:id/items',auth[_0x8ad8('0x9')](),controller[_0x8ad8('0x11')]);router[_0x8ad8('0x12')](_0x8ad8('0xb'),auth[_0x8ad8('0x9')](),controller['update']);router[_0x8ad8('0x13')]('/:id',auth[_0x8ad8('0x9')](),controller['destroy']);module[_0x8ad8('0x14')]=router;
\ No newline at end of file
+var _0x2b27=['../../components/interaction/service','../../config/environment','./dashboard.controller','isAuthenticated','get','/:id/items','getItems','post','create','/:id/clone','clone','addItem','put','/:id','delete','destroy','multer','util','connect-timeout','express','Router','fs-extra'];(function(_0x4d8ed9,_0x2ae284){var _0x1e2140=function(_0x9cca89){while(--_0x9cca89){_0x4d8ed9['push'](_0x4d8ed9['shift']());}};_0x1e2140(++_0x2ae284);}(_0x2b27,0x186));var _0x72b2=function(_0xcdac34,_0x43f665){_0xcdac34=_0xcdac34-0x0;var _0x269d23=_0x2b27[_0xcdac34];return _0x269d23;};'use strict';var multer=require(_0x72b2('0x0'));var util=require(_0x72b2('0x1'));var path=require('path');var timeout=require(_0x72b2('0x2'));var express=require(_0x72b2('0x3'));var router=express[_0x72b2('0x4')]();var fs_extra=require(_0x72b2('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x72b2('0x6'));var config=require(_0x72b2('0x7'));var controller=require(_0x72b2('0x8'));router['get']('/',auth[_0x72b2('0x9')](),controller['index']);router[_0x72b2('0xa')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0x72b2('0xa')](_0x72b2('0xb'),auth['isAuthenticated'](),controller[_0x72b2('0xc')]);router[_0x72b2('0xd')]('/',auth[_0x72b2('0x9')](),controller[_0x72b2('0xe')]);router[_0x72b2('0xd')](_0x72b2('0xf'),auth[_0x72b2('0x9')](),controller[_0x72b2('0x10')]);router[_0x72b2('0xd')](_0x72b2('0xb'),auth[_0x72b2('0x9')](),controller[_0x72b2('0x11')]);router[_0x72b2('0x12')](_0x72b2('0x13'),auth[_0x72b2('0x9')](),controller['update']);router[_0x72b2('0x14')](_0x72b2('0x13'),auth[_0x72b2('0x9')](),controller[_0x72b2('0x15')]);module['exports']=router;
\ No newline at end of file
index 2274e08..8aad60d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c60=['attrs','setDataValue','stringify','INTEGER','#ffffff','#2196f3','sequelize','squel','lodash','exports','STRING'];(function(_0x4ffab7,_0x2790ea){var _0x2857cc=function(_0x40d7ac){while(--_0x40d7ac){_0x4ffab7['push'](_0x4ffab7['shift']());}};_0x2857cc(++_0x2790ea);}(_0x4c60,0xc1));var _0x04c6=function(_0x3fef39,_0x1e4923){_0x3fef39=_0x3fef39-0x0;var _0x1147ea=_0x4c60[_0x3fef39];return _0x1147ea;};'use strict';var Sequelize=require(_0x04c6('0x0'));var squel=require(_0x04c6('0x1'));var _=require(_0x04c6('0x2'));module[_0x04c6('0x3')]={'title':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x04c6('0x4')](0x14),'allowNull':![],'validate':{'len':[0x1,0x14]}},'attrs':{'type':Sequelize['TEXT']('long'),'get':function(){try{return JSON['parse'](this['getDataValue'](_0x04c6('0x5')));}catch(_0xc6e772){return[];}},'set':function(_0x2054da){try{this[_0x04c6('0x6')](_0x04c6('0x5'),JSON[_0x04c6('0x7')](_0x2054da));}catch(_0x8f9b13){this['setDataValue'](_0x04c6('0x5'),JSON[_0x04c6('0x7')]([]));}}},'sizeX':{'type':Sequelize[_0x04c6('0x8')],'allowNull':![],'defaultValue':0x1},'sizeY':{'type':Sequelize[_0x04c6('0x8')],'allowNull':![],'defaultValue':0x1},'row':{'type':Sequelize['INTEGER']},'col':{'type':Sequelize['INTEGER']},'background':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x04c6('0x9'),'validate':{'notEmpty':!![]}},'foreground':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x04c6('0xa'),'validate':{'notEmpty':!![]}},'link':{'type':Sequelize[_0x04c6('0x4')]},'titleFontSize':{'type':Sequelize['INTEGER'],'defaultValue':0xc}};
\ No newline at end of file
+var _0x687b=['sequelize','squel','lodash','exports','TEXT','long','parse','getDataValue','attrs','setDataValue','stringify','INTEGER','STRING','#ffffff','#2196f3'];(function(_0x5f2995,_0x383c39){var _0xd9d591=function(_0xc9b057){while(--_0xc9b057){_0x5f2995['push'](_0x5f2995['shift']());}};_0xd9d591(++_0x383c39);}(_0x687b,0x14a));var _0xb687=function(_0x5aea3e,_0x20d237){_0x5aea3e=_0x5aea3e-0x0;var _0x558b7b=_0x687b[_0x5aea3e];return _0x558b7b;};'use strict';var Sequelize=require(_0xb687('0x0'));var squel=require(_0xb687('0x1'));var _=require(_0xb687('0x2'));module[_0xb687('0x3')]={'title':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize['STRING'](0x14),'allowNull':![],'validate':{'len':[0x1,0x14]}},'attrs':{'type':Sequelize[_0xb687('0x4')](_0xb687('0x5')),'get':function(){try{return JSON[_0xb687('0x6')](this[_0xb687('0x7')](_0xb687('0x8')));}catch(_0x194c55){return[];}},'set':function(_0x16ccf3){try{this[_0xb687('0x9')](_0xb687('0x8'),JSON[_0xb687('0xa')](_0x16ccf3));}catch(_0x48942b){this[_0xb687('0x9')](_0xb687('0x8'),JSON['stringify']([]));}}},'sizeX':{'type':Sequelize[_0xb687('0xb')],'allowNull':![],'defaultValue':0x1},'sizeY':{'type':Sequelize[_0xb687('0xb')],'allowNull':![],'defaultValue':0x1},'row':{'type':Sequelize[_0xb687('0xb')]},'col':{'type':Sequelize[_0xb687('0xb')]},'background':{'type':Sequelize[_0xb687('0xc')],'allowNull':![],'defaultValue':_0xb687('0xd'),'validate':{'notEmpty':!![]}},'foreground':{'type':Sequelize[_0xb687('0xc')],'allowNull':![],'defaultValue':_0xb687('0xe'),'validate':{'notEmpty':!![]}},'link':{'type':Sequelize[_0xb687('0xc')]},'titleFontSize':{'type':Sequelize['INTEGER'],'defaultValue':0xc}};
\ No newline at end of file
index 402acaf..6051106 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b8a=['attrFontSize','counter','attrMetric','total','attrVoiceQueues','multibar-chart','pie-chart','attrSerie1','attrSerie2','attrSerie3','web-report','attrReport','attrRefresh','widgetAttributes:\x20%s','stringify','create','body','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','defaults','localhost','socket.io-emitter','./dashboardItem.socket','register','sendStatus','status','end','offset','count','limit','set','Content-Range','json','apply','reject','update','then','destroy','error','stack','name','send','show','params','model','keys','rawAttributes','query','attributes','intersection','fields','length','includeAll','include','merge','options','DashboardItem','catch','find','type','iframe','attrUrl','attrs','value','https://','custom','attrPath','clock','attrHourFormat','HH:mm:ss','attrTimezone'];(function(_0x1b3d60,_0x51583b){var _0x4abc3d=function(_0x5c9acb){while(--_0x5c9acb){_0x1b3d60['push'](_0x1b3d60['shift']());}};_0x4abc3d(++_0x51583b);}(_0x4b8a,0xd3));var _0xa4b8=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0x4b8a[_0x167cc1];return _0x10bc4b;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xa4b8('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xa4b8('0x1'));var rp=require(_0xa4b8('0x2'));var moment=require(_0xa4b8('0x3'));var BPromise=require(_0xa4b8('0x4'));var Mustache=require(_0xa4b8('0x5'));var util=require(_0xa4b8('0x6'));var path=require(_0xa4b8('0x7'));var sox=require(_0xa4b8('0x8'));var csv=require(_0xa4b8('0x9'));var ejs=require(_0xa4b8('0xa'));var fs=require('fs');var fs_extra=require(_0xa4b8('0xb'));var _=require(_0xa4b8('0xc'));var squel=require(_0xa4b8('0xd'));var crypto=require(_0xa4b8('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xa4b8('0xf'));var toCsv=require(_0xa4b8('0x9'));var querystring=require(_0xa4b8('0x10'));var Papa=require(_0xa4b8('0x11'));var Redis=require(_0xa4b8('0x12'));var authService=require(_0xa4b8('0x13'));var qs=require(_0xa4b8('0x14'));var as=require(_0xa4b8('0x15'));var hardwareService=require(_0xa4b8('0x16'));var logger=require(_0xa4b8('0x17'))(_0xa4b8('0x18'));var utils=require(_0xa4b8('0x19'));var config=require(_0xa4b8('0x1a'));var licenseUtil=require(_0xa4b8('0x1b'));var db=require('../../mysqldb')['db'];config['redis']=_[_0xa4b8('0x1c')](config['redis'],{'host':_0xa4b8('0x1d'),'port':0x18eb});var socket=require(_0xa4b8('0x1e'))(new Redis(config['redis']));require(_0xa4b8('0x1f'))[_0xa4b8('0x20')](socket);function respondWithStatusCode(_0x1c8369,_0x17c3be){_0x17c3be=_0x17c3be||0xcc;return function(_0x28bcdd){if(_0x28bcdd){return _0x1c8369[_0xa4b8('0x21')](_0x17c3be);}return _0x1c8369[_0xa4b8('0x22')](_0x17c3be)[_0xa4b8('0x23')]();};}function respondWithResult(_0x2fd884,_0x48fda9){_0x48fda9=_0x48fda9||0xc8;return function(_0x4c5b32){if(_0x4c5b32){return _0x2fd884[_0xa4b8('0x22')](_0x48fda9)['json'](_0x4c5b32);}};}function respondWithFilteredResult(_0x315df1,_0x3dc7a4){return function(_0x215cdf){if(_0x215cdf){var _0x2b7f3a=typeof _0x3dc7a4[_0xa4b8('0x24')]==='undefined'&&typeof _0x3dc7a4['limit']==='undefined';var _0x518134=_0x215cdf[_0xa4b8('0x25')];var _0xe11af1=_0x2b7f3a?0x0:_0x3dc7a4[_0xa4b8('0x24')];var _0x3e728c=_0x2b7f3a?_0x215cdf[_0xa4b8('0x25')]:_0x3dc7a4[_0xa4b8('0x24')]+_0x3dc7a4[_0xa4b8('0x26')];var _0x10534b;if(_0x3e728c>=_0x518134){_0x3e728c=_0x518134;_0x10534b=0xc8;}else{_0x10534b=0xce;}_0x315df1[_0xa4b8('0x22')](_0x10534b);return _0x315df1[_0xa4b8('0x27')](_0xa4b8('0x28'),_0xe11af1+'-'+_0x3e728c+'/'+_0x518134)[_0xa4b8('0x29')](_0x215cdf);}return null;};}function patchUpdates(_0x144e62){return function(_0x3e218d){try{jsonpatch[_0xa4b8('0x2a')](_0x3e218d,_0x144e62,!![]);}catch(_0xeb5ae1){return BPromise[_0xa4b8('0x2b')](_0xeb5ae1);}return _0x3e218d['save']();};}function saveUpdates(_0x27530c,_0x1f3c4b){return function(_0x5e2f85){if(_0x5e2f85){return _0x5e2f85[_0xa4b8('0x2c')](_0x27530c)[_0xa4b8('0x2d')](function(_0x5b0257){return _0x5b0257;});}return null;};}function removeEntity(_0x58b94d,_0x4cd363){return function(_0xc17660){if(_0xc17660){return _0xc17660[_0xa4b8('0x2e')]()[_0xa4b8('0x2d')](function(){_0x58b94d[_0xa4b8('0x22')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3ff3de,_0x1508fe){return function(_0x175c5d){if(!_0x175c5d){_0x3ff3de[_0xa4b8('0x21')](0x194);}return _0x175c5d;};}function handleError(_0x4aa5af,_0x1f715e){_0x1f715e=_0x1f715e||0x1f4;return function(_0x4475eb){logger[_0xa4b8('0x2f')](_0x4475eb[_0xa4b8('0x30')]);if(_0x4475eb[_0xa4b8('0x31')]){delete _0x4475eb[_0xa4b8('0x31')];}_0x4aa5af[_0xa4b8('0x22')](_0x1f715e)[_0xa4b8('0x32')](_0x4475eb);};}exports[_0xa4b8('0x33')]=function(_0x3dbc1c,_0x41f627){var _0x127d1d={'raw':![],'where':{'id':_0x3dbc1c[_0xa4b8('0x34')]['id']}},_0x513aa8={};_0x513aa8[_0xa4b8('0x35')]=_[_0xa4b8('0x36')](db['DashboardItem'][_0xa4b8('0x37')]);_0x513aa8[_0xa4b8('0x38')]=_['keys'](_0x3dbc1c['query']);_0x513aa8['filters']=_['intersection'](_0x513aa8[_0xa4b8('0x35')],_0x513aa8['query']);_0x127d1d[_0xa4b8('0x39')]=_[_0xa4b8('0x3a')](_0x513aa8[_0xa4b8('0x35')],qs['fields'](_0x3dbc1c[_0xa4b8('0x38')][_0xa4b8('0x3b')]));_0x127d1d[_0xa4b8('0x39')]=_0x127d1d[_0xa4b8('0x39')][_0xa4b8('0x3c')]?_0x127d1d['attributes']:_0x513aa8[_0xa4b8('0x35')];if(_0x3dbc1c[_0xa4b8('0x38')][_0xa4b8('0x3d')]){_0x127d1d[_0xa4b8('0x3e')]=[{'all':!![]}];}_0x127d1d=_[_0xa4b8('0x3f')]({},_0x127d1d,_0x3dbc1c[_0xa4b8('0x40')]);return db[_0xa4b8('0x41')]['find'](_0x127d1d)[_0xa4b8('0x2d')](handleEntityNotFound(_0x41f627,null))[_0xa4b8('0x2d')](respondWithResult(_0x41f627,null))[_0xa4b8('0x42')](handleError(_0x41f627,null));};exports[_0xa4b8('0x2e')]=function(_0x29f28b,_0x4c236c){return db[_0xa4b8('0x41')][_0xa4b8('0x43')]({'where':{'id':_0x29f28b[_0xa4b8('0x34')]['id']}})[_0xa4b8('0x2d')](handleEntityNotFound(_0x4c236c,null))['then'](removeEntity(_0x4c236c,null))['catch'](handleError(_0x4c236c,null));};function widgetAttributes(_0x1204b3){try{switch(_0x1204b3[_0xa4b8('0x44')]){case _0xa4b8('0x45'):return[{'name':_0xa4b8('0x46'),'value':_0x1204b3[_0xa4b8('0x46')]||(_0x1204b3[_0xa4b8('0x47')]&&_0x1204b3[_0xa4b8('0x47')][0x0]?_0x1204b3[_0xa4b8('0x47')][0x0][_0xa4b8('0x48')]:undefined)||_0xa4b8('0x49')}];case _0xa4b8('0x4a'):return[{'name':_0xa4b8('0x4b'),'value':_0x1204b3[_0xa4b8('0x4b')]||(_0x1204b3[_0xa4b8('0x47')]&&_0x1204b3['attrs'][0x0]?_0x1204b3[_0xa4b8('0x47')][0x0]['value']:undefined)||''}];case _0xa4b8('0x4c'):return[{'name':_0xa4b8('0x4d'),'value':_0x1204b3['attrHourFormat']||(_0x1204b3['attrs']&&_0x1204b3[_0xa4b8('0x47')][0x0]?_0x1204b3[_0xa4b8('0x47')][0x0][_0xa4b8('0x48')]:undefined)||_0xa4b8('0x4e')},{'name':_0xa4b8('0x4f'),'value':_0x1204b3[_0xa4b8('0x4f')]||(_0x1204b3['attrs']&&_0x1204b3[_0xa4b8('0x47')][0x1]?_0x1204b3[_0xa4b8('0x47')][0x1][_0xa4b8('0x48')]:undefined)||'0.00'},{'name':_0xa4b8('0x50'),'value':_0x1204b3[_0xa4b8('0x50')]||(_0x1204b3[_0xa4b8('0x47')]&&_0x1204b3[_0xa4b8('0x47')][0x2]?_0x1204b3[_0xa4b8('0x47')][0x2][_0xa4b8('0x48')]:undefined)||0xc}];case _0xa4b8('0x51'):return[{'name':_0xa4b8('0x52'),'value':_0x1204b3[_0xa4b8('0x52')]||(_0x1204b3['attrs']&&_0x1204b3[_0xa4b8('0x47')][0x0]?_0x1204b3[_0xa4b8('0x47')][0x0][_0xa4b8('0x48')]:undefined)||_0xa4b8('0x53')},{'name':_0xa4b8('0x54'),'value':_0x1204b3[_0xa4b8('0x54')]||(_0x1204b3[_0xa4b8('0x47')]&&_0x1204b3['attrs'][0x1]?_0x1204b3[_0xa4b8('0x47')][0x1]['value']:undefined)||[]},{'name':_0xa4b8('0x50'),'value':_0x1204b3[_0xa4b8('0x50')]||(_0x1204b3['attrs']&&_0x1204b3[_0xa4b8('0x47')][0x2]?_0x1204b3['attrs'][0x2][_0xa4b8('0x48')]:undefined)||0x14}];case _0xa4b8('0x55'):case _0xa4b8('0x56'):return[{'name':_0xa4b8('0x57'),'value':_0x1204b3[_0xa4b8('0x57')]||(_0x1204b3[_0xa4b8('0x47')]&&_0x1204b3[_0xa4b8('0x47')][0x0]?_0x1204b3[_0xa4b8('0x47')][0x0][_0xa4b8('0x48')]:undefined)||'total'},{'name':_0xa4b8('0x58'),'value':_0x1204b3['attrSerie2']||(_0x1204b3[_0xa4b8('0x47')]&&_0x1204b3[_0xa4b8('0x47')][0x1]?_0x1204b3[_0xa4b8('0x47')][0x1]['value']:undefined)||null},{'name':'attrSerie3','value':_0x1204b3[_0xa4b8('0x59')]||(_0x1204b3[_0xa4b8('0x47')]&&_0x1204b3['attrs'][0x2]?_0x1204b3[_0xa4b8('0x47')][0x2]['value']:undefined)||null},{'name':_0xa4b8('0x54'),'value':_0x1204b3[_0xa4b8('0x54')]||(_0x1204b3[_0xa4b8('0x47')]&&_0x1204b3['attrs'][0x3]?_0x1204b3[_0xa4b8('0x47')][0x3][_0xa4b8('0x48')]:undefined)||[]}];case _0xa4b8('0x5a'):return[{'name':'attrReport','type':_0x1204b3['reportType']||(_0x1204b3[_0xa4b8('0x47')]&&_0x1204b3[_0xa4b8('0x47')][0x0]?_0x1204b3[_0xa4b8('0x47')][0x0][_0xa4b8('0x44')]:undefined)||null,'value':_0x1204b3[_0xa4b8('0x5b')]||(_0x1204b3['attrs']&&_0x1204b3[_0xa4b8('0x47')][0x0]?_0x1204b3['attrs'][0x0][_0xa4b8('0x48')]:undefined)||null},{'name':_0xa4b8('0x5c'),'value':_0x1204b3[_0xa4b8('0x5c')]||(_0x1204b3['attrs']&&_0x1204b3[_0xa4b8('0x47')][0x1]?_0x1204b3[_0xa4b8('0x47')][0x1][_0xa4b8('0x48')]:undefined)||0x0}];default:return[];}}catch(_0x46ba07){logger[_0xa4b8('0x2f')](_0xa4b8('0x5d'),JSON[_0xa4b8('0x5e')](_0x46ba07));return[];}}exports[_0xa4b8('0x5f')]=function(_0x3c2c6b,_0x22cdd4){if(_0x3c2c6b[_0xa4b8('0x60')]){_0x3c2c6b['body'][_0xa4b8('0x47')]=widgetAttributes(_0x3c2c6b[_0xa4b8('0x60')]);}return db[_0xa4b8('0x41')][_0xa4b8('0x5f')](_0x3c2c6b[_0xa4b8('0x60')],{})[_0xa4b8('0x2d')](respondWithResult(_0x22cdd4,0xc9))[_0xa4b8('0x42')](handleError(_0x22cdd4,null));};exports['update']=function(_0x589af0,_0x296c08){if(_0x589af0[_0xa4b8('0x60')]['id']){delete _0x589af0['body']['id'];}_0x589af0['body']['attrs']=widgetAttributes(_0x589af0['body']);return db['DashboardItem'][_0xa4b8('0x43')]({'where':{'id':_0x589af0[_0xa4b8('0x34')]['id']}})[_0xa4b8('0x2d')](handleEntityNotFound(_0x296c08,null))[_0xa4b8('0x2d')](saveUpdates(_0x589af0[_0xa4b8('0x60')],null))[_0xa4b8('0x2d')](respondWithResult(_0x296c08,null))['catch'](handleError(_0x296c08,null));};
\ No newline at end of file
+var _0x31dc=['fields','length','includeAll','merge','options','find','catch','destroy','params','iframe','attrUrl','attrs','value','attrPath','clock','attrHourFormat','attrTimezone','0.00','attrFontSize','counter','attrMetric','attrVoiceQueues','multibar-chart','attrSerie1','attrSerie2','attrSerie3','web-report','attrReport','reportType','widgetAttributes:\x20%s','stringify','body','create','eml-format','rimraf','zip-dir','fast-json-patch','mustache','path','to-csv','lodash','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','register','sendStatus','end','status','json','offset','undefined','count','limit','set','apply','reject','save','update','then','error','stack','show','model','DashboardItem','rawAttributes','keys','query','filters','intersection','attributes'];(function(_0x422890,_0x434494){var _0x202cf0=function(_0x10e9f0){while(--_0x10e9f0){_0x422890['push'](_0x422890['shift']());}};_0x202cf0(++_0x434494);}(_0x31dc,0xc3));var _0xc31d=function(_0xc0463a,_0x3f9346){_0xc0463a=_0xc0463a-0x0;var _0x4d11bd=_0x31dc[_0xc0463a];return _0x4d11bd;};'use strict';var emlformat=require(_0xc31d('0x0'));var rimraf=require(_0xc31d('0x1'));var zipdir=require(_0xc31d('0x2'));var jsonpatch=require(_0xc31d('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xc31d('0x4'));var util=require('util');var path=require(_0xc31d('0x5'));var sox=require('sox');var csv=require(_0xc31d('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xc31d('0x7'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xc31d('0x8'));var deskjs=require(_0xc31d('0x9'));var toCsv=require(_0xc31d('0x6'));var querystring=require(_0xc31d('0xa'));var Papa=require('papaparse');var Redis=require(_0xc31d('0xb'));var authService=require('../../components/auth/service');var qs=require(_0xc31d('0xc'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xc31d('0xd'))(_0xc31d('0xe'));var utils=require(_0xc31d('0xf'));var config=require(_0xc31d('0x10'));var licenseUtil=require(_0xc31d('0x11'));var db=require(_0xc31d('0x12'))['db'];config[_0xc31d('0x13')]=_['defaults'](config['redis'],{'host':_0xc31d('0x14'),'port':0x18eb});var socket=require(_0xc31d('0x15'))(new Redis(config[_0xc31d('0x13')]));require('./dashboardItem.socket')[_0xc31d('0x16')](socket);function respondWithStatusCode(_0x1eb929,_0x2179c0){_0x2179c0=_0x2179c0||0xcc;return function(_0x8ac7e7){if(_0x8ac7e7){return _0x1eb929[_0xc31d('0x17')](_0x2179c0);}return _0x1eb929['status'](_0x2179c0)[_0xc31d('0x18')]();};}function respondWithResult(_0x52bb9e,_0x2f3c3d){_0x2f3c3d=_0x2f3c3d||0xc8;return function(_0x397cdd){if(_0x397cdd){return _0x52bb9e[_0xc31d('0x19')](_0x2f3c3d)[_0xc31d('0x1a')](_0x397cdd);}};}function respondWithFilteredResult(_0x50d83d,_0x45b9b6){return function(_0x118bba){if(_0x118bba){var _0x1e8e7a=typeof _0x45b9b6[_0xc31d('0x1b')]==='undefined'&&typeof _0x45b9b6['limit']===_0xc31d('0x1c');var _0x2a2d33=_0x118bba[_0xc31d('0x1d')];var _0x353134=_0x1e8e7a?0x0:_0x45b9b6['offset'];var _0x53598c=_0x1e8e7a?_0x118bba[_0xc31d('0x1d')]:_0x45b9b6[_0xc31d('0x1b')]+_0x45b9b6[_0xc31d('0x1e')];var _0x4cac68;if(_0x53598c>=_0x2a2d33){_0x53598c=_0x2a2d33;_0x4cac68=0xc8;}else{_0x4cac68=0xce;}_0x50d83d[_0xc31d('0x19')](_0x4cac68);return _0x50d83d[_0xc31d('0x1f')]('Content-Range',_0x353134+'-'+_0x53598c+'/'+_0x2a2d33)[_0xc31d('0x1a')](_0x118bba);}return null;};}function patchUpdates(_0x3b6e3c){return function(_0x52799e){try{jsonpatch[_0xc31d('0x20')](_0x52799e,_0x3b6e3c,!![]);}catch(_0xbff23){return BPromise[_0xc31d('0x21')](_0xbff23);}return _0x52799e[_0xc31d('0x22')]();};}function saveUpdates(_0x8793f4,_0x29c82b){return function(_0x522f42){if(_0x522f42){return _0x522f42[_0xc31d('0x23')](_0x8793f4)['then'](function(_0x126922){return _0x126922;});}return null;};}function removeEntity(_0x255d26,_0x21fd06){return function(_0x2dd3b7){if(_0x2dd3b7){return _0x2dd3b7['destroy']()[_0xc31d('0x24')](function(){_0x255d26[_0xc31d('0x19')](0xcc)[_0xc31d('0x18')]();});}};}function handleEntityNotFound(_0x3c5b9a,_0x1a5e7c){return function(_0x2c742f){if(!_0x2c742f){_0x3c5b9a[_0xc31d('0x17')](0x194);}return _0x2c742f;};}function handleError(_0x46df95,_0x461eee){_0x461eee=_0x461eee||0x1f4;return function(_0x271a22){logger[_0xc31d('0x25')](_0x271a22[_0xc31d('0x26')]);if(_0x271a22['name']){delete _0x271a22['name'];}_0x46df95['status'](_0x461eee)['send'](_0x271a22);};}exports[_0xc31d('0x27')]=function(_0x5645fd,_0x38990d){var _0x822e84={'raw':![],'where':{'id':_0x5645fd['params']['id']}},_0x5382aa={};_0x5382aa[_0xc31d('0x28')]=_['keys'](db[_0xc31d('0x29')][_0xc31d('0x2a')]);_0x5382aa['query']=_[_0xc31d('0x2b')](_0x5645fd[_0xc31d('0x2c')]);_0x5382aa[_0xc31d('0x2d')]=_[_0xc31d('0x2e')](_0x5382aa['model'],_0x5382aa[_0xc31d('0x2c')]);_0x822e84[_0xc31d('0x2f')]=_[_0xc31d('0x2e')](_0x5382aa['model'],qs[_0xc31d('0x30')](_0x5645fd['query'][_0xc31d('0x30')]));_0x822e84[_0xc31d('0x2f')]=_0x822e84[_0xc31d('0x2f')][_0xc31d('0x31')]?_0x822e84[_0xc31d('0x2f')]:_0x5382aa[_0xc31d('0x28')];if(_0x5645fd[_0xc31d('0x2c')][_0xc31d('0x32')]){_0x822e84['include']=[{'all':!![]}];}_0x822e84=_[_0xc31d('0x33')]({},_0x822e84,_0x5645fd[_0xc31d('0x34')]);return db['DashboardItem'][_0xc31d('0x35')](_0x822e84)[_0xc31d('0x24')](handleEntityNotFound(_0x38990d,null))['then'](respondWithResult(_0x38990d,null))[_0xc31d('0x36')](handleError(_0x38990d,null));};exports[_0xc31d('0x37')]=function(_0x4274a1,_0x534655){return db[_0xc31d('0x29')]['find']({'where':{'id':_0x4274a1[_0xc31d('0x38')]['id']}})[_0xc31d('0x24')](handleEntityNotFound(_0x534655,null))[_0xc31d('0x24')](removeEntity(_0x534655,null))['catch'](handleError(_0x534655,null));};function widgetAttributes(_0x5acc8c){try{switch(_0x5acc8c['type']){case _0xc31d('0x39'):return[{'name':'attrUrl','value':_0x5acc8c[_0xc31d('0x3a')]||(_0x5acc8c['attrs']&&_0x5acc8c[_0xc31d('0x3b')][0x0]?_0x5acc8c[_0xc31d('0x3b')][0x0][_0xc31d('0x3c')]:undefined)||'https://'}];case'custom':return[{'name':_0xc31d('0x3d'),'value':_0x5acc8c[_0xc31d('0x3d')]||(_0x5acc8c[_0xc31d('0x3b')]&&_0x5acc8c[_0xc31d('0x3b')][0x0]?_0x5acc8c[_0xc31d('0x3b')][0x0][_0xc31d('0x3c')]:undefined)||''}];case _0xc31d('0x3e'):return[{'name':_0xc31d('0x3f'),'value':_0x5acc8c[_0xc31d('0x3f')]||(_0x5acc8c[_0xc31d('0x3b')]&&_0x5acc8c[_0xc31d('0x3b')][0x0]?_0x5acc8c[_0xc31d('0x3b')][0x0]['value']:undefined)||'HH:mm:ss'},{'name':_0xc31d('0x40'),'value':_0x5acc8c['attrTimezone']||(_0x5acc8c['attrs']&&_0x5acc8c[_0xc31d('0x3b')][0x1]?_0x5acc8c['attrs'][0x1]['value']:undefined)||_0xc31d('0x41')},{'name':_0xc31d('0x42'),'value':_0x5acc8c[_0xc31d('0x42')]||(_0x5acc8c['attrs']&&_0x5acc8c[_0xc31d('0x3b')][0x2]?_0x5acc8c[_0xc31d('0x3b')][0x2][_0xc31d('0x3c')]:undefined)||0xc}];case _0xc31d('0x43'):return[{'name':_0xc31d('0x44'),'value':_0x5acc8c[_0xc31d('0x44')]||(_0x5acc8c[_0xc31d('0x3b')]&&_0x5acc8c[_0xc31d('0x3b')][0x0]?_0x5acc8c['attrs'][0x0]['value']:undefined)||'total'},{'name':_0xc31d('0x45'),'value':_0x5acc8c[_0xc31d('0x45')]||(_0x5acc8c[_0xc31d('0x3b')]&&_0x5acc8c[_0xc31d('0x3b')][0x1]?_0x5acc8c[_0xc31d('0x3b')][0x1][_0xc31d('0x3c')]:undefined)||[]},{'name':_0xc31d('0x42'),'value':_0x5acc8c[_0xc31d('0x42')]||(_0x5acc8c[_0xc31d('0x3b')]&&_0x5acc8c[_0xc31d('0x3b')][0x2]?_0x5acc8c[_0xc31d('0x3b')][0x2][_0xc31d('0x3c')]:undefined)||0x14}];case _0xc31d('0x46'):case'pie-chart':return[{'name':'attrSerie1','value':_0x5acc8c[_0xc31d('0x47')]||(_0x5acc8c[_0xc31d('0x3b')]&&_0x5acc8c[_0xc31d('0x3b')][0x0]?_0x5acc8c[_0xc31d('0x3b')][0x0][_0xc31d('0x3c')]:undefined)||'total'},{'name':_0xc31d('0x48'),'value':_0x5acc8c['attrSerie2']||(_0x5acc8c[_0xc31d('0x3b')]&&_0x5acc8c[_0xc31d('0x3b')][0x1]?_0x5acc8c[_0xc31d('0x3b')][0x1][_0xc31d('0x3c')]:undefined)||null},{'name':'attrSerie3','value':_0x5acc8c[_0xc31d('0x49')]||(_0x5acc8c['attrs']&&_0x5acc8c[_0xc31d('0x3b')][0x2]?_0x5acc8c['attrs'][0x2][_0xc31d('0x3c')]:undefined)||null},{'name':'attrVoiceQueues','value':_0x5acc8c[_0xc31d('0x45')]||(_0x5acc8c['attrs']&&_0x5acc8c[_0xc31d('0x3b')][0x3]?_0x5acc8c[_0xc31d('0x3b')][0x3][_0xc31d('0x3c')]:undefined)||[]}];case _0xc31d('0x4a'):return[{'name':_0xc31d('0x4b'),'type':_0x5acc8c[_0xc31d('0x4c')]||(_0x5acc8c['attrs']&&_0x5acc8c[_0xc31d('0x3b')][0x0]?_0x5acc8c[_0xc31d('0x3b')][0x0]['type']:undefined)||null,'value':_0x5acc8c['attrReport']||(_0x5acc8c[_0xc31d('0x3b')]&&_0x5acc8c[_0xc31d('0x3b')][0x0]?_0x5acc8c[_0xc31d('0x3b')][0x0]['value']:undefined)||null},{'name':'attrRefresh','value':_0x5acc8c['attrRefresh']||(_0x5acc8c[_0xc31d('0x3b')]&&_0x5acc8c['attrs'][0x1]?_0x5acc8c[_0xc31d('0x3b')][0x1]['value']:undefined)||0x0}];default:return[];}}catch(_0x4c68e6){logger[_0xc31d('0x25')](_0xc31d('0x4d'),JSON[_0xc31d('0x4e')](_0x4c68e6));return[];}}exports['create']=function(_0x3e7ab5,_0x35cd2e){if(_0x3e7ab5[_0xc31d('0x4f')]){_0x3e7ab5[_0xc31d('0x4f')][_0xc31d('0x3b')]=widgetAttributes(_0x3e7ab5[_0xc31d('0x4f')]);}return db[_0xc31d('0x29')][_0xc31d('0x50')](_0x3e7ab5[_0xc31d('0x4f')],{})['then'](respondWithResult(_0x35cd2e,0xc9))[_0xc31d('0x36')](handleError(_0x35cd2e,null));};exports[_0xc31d('0x23')]=function(_0x1dd412,_0x268098){if(_0x1dd412[_0xc31d('0x4f')]['id']){delete _0x1dd412[_0xc31d('0x4f')]['id'];}_0x1dd412[_0xc31d('0x4f')][_0xc31d('0x3b')]=widgetAttributes(_0x1dd412['body']);return db['DashboardItem'][_0xc31d('0x35')]({'where':{'id':_0x1dd412[_0xc31d('0x38')]['id']}})[_0xc31d('0x24')](handleEntityNotFound(_0x268098,null))[_0xc31d('0x24')](saveUpdates(_0x1dd412[_0xc31d('0x4f')],null))[_0xc31d('0x24')](respondWithResult(_0x268098,null))['catch'](handleError(_0x268098,null));};
\ No newline at end of file
index 8fab845..b10160a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc822=['DashboardItem','save','update','emit','hasOwnProperty','hook','exports','events','../../mysqldb'];(function(_0x5d4d08,_0x449f98){var _0x138d9d=function(_0x44173d){while(--_0x44173d){_0x5d4d08['push'](_0x5d4d08['shift']());}};_0x138d9d(++_0x449f98);}(_0xc822,0x1b7));var _0x2c82=function(_0x44268d,_0xad8443){_0x44268d=_0x44268d-0x0;var _0x4be92d=_0xc822[_0x44268d];return _0x4be92d;};'use strict';var EventEmitter=require(_0x2c82('0x0'));var DashboardItem=require(_0x2c82('0x1'))['db'][_0x2c82('0x2')];var DashboardItemEvents=new EventEmitter();DashboardItemEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x2c82('0x3'),'afterUpdate':_0x2c82('0x4'),'afterDestroy':'remove'};function emitEvent(_0x2b0b50){return function(_0x126745,_0x1cb1b4,_0x236e55){DashboardItemEvents[_0x2c82('0x5')](_0x2b0b50+':'+_0x126745['id'],_0x126745);DashboardItemEvents['emit'](_0x2b0b50,_0x126745);_0x236e55(null);};}for(var e in events){if(events[_0x2c82('0x6')](e)){var event=events[e];DashboardItem[_0x2c82('0x7')](e,emitEvent(event));}}module[_0x2c82('0x8')]=DashboardItemEvents;
\ No newline at end of file
+var _0xa064=['hasOwnProperty','exports','events','../../mysqldb','DashboardItem','setMaxListeners','save','emit'];(function(_0x5071da,_0x23bdc1){var _0x400833=function(_0x4917de){while(--_0x4917de){_0x5071da['push'](_0x5071da['shift']());}};_0x400833(++_0x23bdc1);}(_0xa064,0x192));var _0x4a06=function(_0x12e3d2,_0x77a0e0){_0x12e3d2=_0x12e3d2-0x0;var _0x2e632c=_0xa064[_0x12e3d2];return _0x2e632c;};'use strict';var EventEmitter=require(_0x4a06('0x0'));var DashboardItem=require(_0x4a06('0x1'))['db'][_0x4a06('0x2')];var DashboardItemEvents=new EventEmitter();DashboardItemEvents[_0x4a06('0x3')](0x0);var events={'afterCreate':_0x4a06('0x4'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x2e300a){return function(_0x4add79,_0x390fdc,_0x475a0d){DashboardItemEvents['emit'](_0x2e300a+':'+_0x4add79['id'],_0x4add79);DashboardItemEvents[_0x4a06('0x5')](_0x2e300a,_0x4add79);_0x475a0d(null);};}for(var e in events){if(events[_0x4a06('0x6')](e)){var event=events[e];DashboardItem['hook'](e,emitEvent(event));}}module[_0x4a06('0x7')]=DashboardItemEvents;
\ No newline at end of file
index 5442111..eb2b2d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x070c=['exports','define','DashboardItem','dashboard_items','lodash','util','../../config/logger','api','moment','bluebird','path','../../config/environment','./dashboardItem.attributes'];(function(_0x12ea97,_0x3405b6){var _0x3bad0=function(_0x4d5a74){while(--_0x4d5a74){_0x12ea97['push'](_0x12ea97['shift']());}};_0x3bad0(++_0x3405b6);}(_0x070c,0xfb));var _0xc070=function(_0x2f0ae8,_0x2bd1c4){_0x2f0ae8=_0x2f0ae8-0x0;var _0x1e7b13=_0x070c[_0x2f0ae8];return _0x1e7b13;};'use strict';var _=require(_0xc070('0x0'));var util=require(_0xc070('0x1'));var logger=require(_0xc070('0x2'))(_0xc070('0x3'));var moment=require(_0xc070('0x4'));var BPromise=require(_0xc070('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xc070('0x6'));var rimraf=require('rimraf');var config=require(_0xc070('0x7'));var attributes=require(_0xc070('0x8'));module[_0xc070('0x9')]=function(_0x429369,_0x9c4f6f){return _0x429369[_0xc070('0xa')](_0xc070('0xb'),attributes,{'tableName':_0xc070('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7b78=['./dashboardItem.attributes','exports','define','dashboard_items','lodash','util','../../config/logger','moment','request-promise','rimraf','../../config/environment'];(function(_0x1a8333,_0x360c7c){var _0x1f7bf4=function(_0xe02d4f){while(--_0xe02d4f){_0x1a8333['push'](_0x1a8333['shift']());}};_0x1f7bf4(++_0x360c7c);}(_0x7b78,0x185));var _0x87b7=function(_0x57cd47,_0x1d5c41){_0x57cd47=_0x57cd47-0x0;var _0x2397f3=_0x7b78[_0x57cd47];return _0x2397f3;};'use strict';var _=require(_0x87b7('0x0'));var util=require(_0x87b7('0x1'));var logger=require(_0x87b7('0x2'))('api');var moment=require(_0x87b7('0x3'));var BPromise=require('bluebird');var rp=require(_0x87b7('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x87b7('0x5'));var config=require(_0x87b7('0x6'));var attributes=require(_0x87b7('0x7'));module[_0x87b7('0x8')]=function(_0x151665,_0x49ca66){return _0x151665[_0x87b7('0x9')]('DashboardItem',attributes,{'tableName':_0x87b7('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b9b10c9..12129a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa6cd=['http','redis','defaults','socket.io-emitter','./dashboardItem.socket','register','request','then','request\x20sent','DashboardItem,\x20%s,\x20%s,\x20%s','stringify','error','code','DashboardItem,\x20%s,\x20%s','message','info','result','lodash','util','moment','randomstring','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x4274a3,_0x26a309){var _0x5bfa4e=function(_0x1fa2ec){while(--_0x1fa2ec){_0x4274a3['push'](_0x4274a3['shift']());}};_0x5bfa4e(++_0x26a309);}(_0xa6cd,0x79));var _0xda6c=function(_0x3881c8,_0x5f028f){_0x3881c8=_0x3881c8-0x0;var _0x2e26b0=_0xa6cd[_0x3881c8];return _0x2e26b0;};'use strict';var _=require(_0xda6c('0x0'));var util=require(_0xda6c('0x1'));var moment=require(_0xda6c('0x2'));var BPromise=require('bluebird');var rs=require(_0xda6c('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xda6c('0x4'))(_0xda6c('0x5'));var config=require(_0xda6c('0x6'));var jayson=require(_0xda6c('0x7'));var client=jayson[_0xda6c('0x8')][_0xda6c('0x9')]({'port':0x232a});config[_0xda6c('0xa')]=_[_0xda6c('0xb')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xda6c('0xc'))(new Redis(config[_0xda6c('0xa')]));require(_0xda6c('0xd'))[_0xda6c('0xe')](socket);function respondWithRpcPromise(_0x4c14f5,_0x5c76ff,_0x20b493){return new BPromise(function(_0x505ed8,_0x4ecc2a){return client[_0xda6c('0xf')](_0x4c14f5,_0x20b493)[_0xda6c('0x10')](function(_0x55f6e5){logger['info']('DashboardItem,\x20%s,\x20%s',_0x5c76ff,_0xda6c('0x11'));logger['debug'](_0xda6c('0x12'),_0x5c76ff,_0xda6c('0x11'),JSON[_0xda6c('0x13')](_0x55f6e5));if(_0x55f6e5[_0xda6c('0x14')]){if(_0x55f6e5[_0xda6c('0x14')][_0xda6c('0x15')]===0x1f4){logger[_0xda6c('0x14')](_0xda6c('0x16'),_0x5c76ff,_0x55f6e5['error'][_0xda6c('0x17')]);return _0x4ecc2a(_0x55f6e5[_0xda6c('0x14')][_0xda6c('0x17')]);}logger[_0xda6c('0x14')](_0xda6c('0x16'),_0x5c76ff,_0x55f6e5['error'][_0xda6c('0x17')]);return _0x505ed8(_0x55f6e5['error'][_0xda6c('0x17')]);}else{logger[_0xda6c('0x18')]('DashboardItem,\x20%s,\x20%s',_0x5c76ff,_0xda6c('0x11'));_0x505ed8(_0x55f6e5[_0xda6c('0x19')][_0xda6c('0x17')]);}})['catch'](function(_0xc9b06c){logger[_0xda6c('0x14')](_0xda6c('0x16'),_0x5c76ff,_0xc9b06c);_0x4ecc2a(_0xc9b06c);});});}
\ No newline at end of file
+var _0xecca=['message','result','catch','lodash','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','register','request','then','info','DashboardItem,\x20%s,\x20%s','debug','DashboardItem,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x4bc0c6,_0x2bd7c7){var _0x7eb06d=function(_0xa59e7){while(--_0xa59e7){_0x4bc0c6['push'](_0x4bc0c6['shift']());}};_0x7eb06d(++_0x2bd7c7);}(_0xecca,0x16f));var _0xaecc=function(_0x580576,_0x2f107d){_0x580576=_0x580576-0x0;var _0x3f55a0=_0xecca[_0x580576];return _0x3f55a0;};'use strict';var _=require(_0xaecc('0x0'));var util=require(_0xaecc('0x1'));var moment=require('moment');var BPromise=require(_0xaecc('0x2'));var rs=require(_0xaecc('0x3'));var fs=require('fs');var Redis=require(_0xaecc('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xaecc('0x5'));var logger=require(_0xaecc('0x6'))(_0xaecc('0x7'));var config=require(_0xaecc('0x8'));var jayson=require(_0xaecc('0x9'));var client=jayson[_0xaecc('0xa')][_0xaecc('0xb')]({'port':0x232a});config[_0xaecc('0xc')]=_['defaults'](config['redis'],{'host':_0xaecc('0xd'),'port':0x18eb});var socket=require(_0xaecc('0xe'))(new Redis(config[_0xaecc('0xc')]));require('./dashboardItem.socket')[_0xaecc('0xf')](socket);function respondWithRpcPromise(_0x4e9cac,_0x26a676,_0x25b221){return new BPromise(function(_0x2814bd,_0x3f006a){return client[_0xaecc('0x10')](_0x4e9cac,_0x25b221)[_0xaecc('0x11')](function(_0x2d1fce){logger[_0xaecc('0x12')](_0xaecc('0x13'),_0x26a676,'request\x20sent');logger[_0xaecc('0x14')](_0xaecc('0x15'),_0x26a676,_0xaecc('0x16'),JSON[_0xaecc('0x17')](_0x2d1fce));if(_0x2d1fce['error']){if(_0x2d1fce[_0xaecc('0x18')]['code']===0x1f4){logger['error'](_0xaecc('0x13'),_0x26a676,_0x2d1fce[_0xaecc('0x18')][_0xaecc('0x19')]);return _0x3f006a(_0x2d1fce[_0xaecc('0x18')][_0xaecc('0x19')]);}logger[_0xaecc('0x18')](_0xaecc('0x13'),_0x26a676,_0x2d1fce['error'][_0xaecc('0x19')]);return _0x2814bd(_0x2d1fce['error']['message']);}else{logger[_0xaecc('0x12')](_0xaecc('0x13'),_0x26a676,_0xaecc('0x16'));_0x2814bd(_0x2d1fce[_0xaecc('0x1a')][_0xaecc('0x19')]);}})[_0xaecc('0x1b')](function(_0x4f544a){logger['error'](_0xaecc('0x13'),_0x26a676,_0x4f544a);_0x3f006a(_0x4f544a);});});}
\ No newline at end of file
index e2cff32..ce6f6cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6fdf=['remove','update','emit','removeListener','register','length','dashboardItem:','save'];(function(_0x434e82,_0x3985f8){var _0x3cb611=function(_0x5d9397){while(--_0x5d9397){_0x434e82['push'](_0x434e82['shift']());}};_0x3cb611(++_0x3985f8);}(_0x6fdf,0xb7));var _0xf6fd=function(_0x2262b8,_0x11b9aa){_0x2262b8=_0x2262b8-0x0;var _0x41d373=_0x6fdf[_0x2262b8];return _0x41d373;};'use strict';var DashboardItemEvents=require('./dashboardItem.events');var events=[_0xf6fd('0x0'),_0xf6fd('0x1'),_0xf6fd('0x2')];function createListener(_0x54f7cb,_0x1e18f2){return function(_0x3b3589){_0x1e18f2[_0xf6fd('0x3')](_0x54f7cb,_0x3b3589);};}function removeListener(_0x946194,_0x4baab7){return function(){DashboardItemEvents[_0xf6fd('0x4')](_0x946194,_0x4baab7);};}exports[_0xf6fd('0x5')]=function(_0x4ddbd3){for(var _0x56bd22=0x0,_0x2f2f4c=events[_0xf6fd('0x6')];_0x56bd22<_0x2f2f4c;_0x56bd22++){var _0x110434=events[_0x56bd22];var _0x23610c=createListener(_0xf6fd('0x7')+_0x110434,_0x4ddbd3);DashboardItemEvents['on'](_0x110434,_0x23610c);}};
\ No newline at end of file
+var _0x896a=['removeListener','register','length','./dashboardItem.events','save','update','emit'];(function(_0x38d167,_0x23db07){var _0x52cf53=function(_0x136ef5){while(--_0x136ef5){_0x38d167['push'](_0x38d167['shift']());}};_0x52cf53(++_0x23db07);}(_0x896a,0x1c3));var _0xa896=function(_0xca883,_0x30aee1){_0xca883=_0xca883-0x0;var _0x572132=_0x896a[_0xca883];return _0x572132;};'use strict';var DashboardItemEvents=require(_0xa896('0x0'));var events=[_0xa896('0x1'),'remove',_0xa896('0x2')];function createListener(_0x41d6e7,_0x528f92){return function(_0x1191e0){_0x528f92[_0xa896('0x3')](_0x41d6e7,_0x1191e0);};}function removeListener(_0x245765,_0xf159d1){return function(){DashboardItemEvents[_0xa896('0x4')](_0x245765,_0xf159d1);};}exports[_0xa896('0x5')]=function(_0x1e4b94){for(var _0x409eae=0x0,_0x2f9143=events[_0xa896('0x6')];_0x409eae<_0x2f9143;_0x409eae++){var _0x1d2889=events[_0x409eae];var _0x49b4dd=createListener('dashboardItem:'+_0x1d2889,_0x1e4b94);DashboardItemEvents['on'](_0x1d2889,_0x49b4dd);}};
\ No newline at end of file
index fa8d837..7540ed3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa3f2=['delete','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','/:id','isAuthenticated','post','create','put'];(function(_0x391db1,_0xf3c31f){var _0x1ae1d5=function(_0x5b798f){while(--_0x5b798f){_0x391db1['push'](_0x391db1['shift']());}};_0x1ae1d5(++_0xf3c31f);}(_0xa3f2,0x1d7));var _0x2a3f=function(_0x199169,_0x4ef0e5){_0x199169=_0x199169-0x0;var _0x2d5391=_0xa3f2[_0x199169];return _0x2d5391;};'use strict';var multer=require(_0x2a3f('0x0'));var util=require(_0x2a3f('0x1'));var path=require(_0x2a3f('0x2'));var timeout=require(_0x2a3f('0x3'));var express=require(_0x2a3f('0x4'));var router=express[_0x2a3f('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x2a3f('0x6'));var interaction=require(_0x2a3f('0x7'));var config=require(_0x2a3f('0x8'));var controller=require('./dashboardItem.controller');router[_0x2a3f('0x9')](_0x2a3f('0xa'),auth[_0x2a3f('0xb')](),controller['show']);router[_0x2a3f('0xc')]('/',auth[_0x2a3f('0xb')](),controller[_0x2a3f('0xd')]);router[_0x2a3f('0xe')](_0x2a3f('0xa'),auth['isAuthenticated'](),controller['update']);router[_0x2a3f('0xf')](_0x2a3f('0xa'),auth[_0x2a3f('0xb')](),controller[_0x2a3f('0x10')]);module[_0x2a3f('0x11')]=router;
\ No newline at end of file
+var _0xf503=['get','show','post','isAuthenticated','create','/:id','update','delete','exports','multer','util','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xf503,0x1d4));var _0x3f50=function(_0x359877,_0x46bbd1){_0x359877=_0x359877-0x0;var _0x32e0a1=_0xf503[_0x359877];return _0x32e0a1;};'use strict';var multer=require(_0x3f50('0x0'));var util=require(_0x3f50('0x1'));var path=require(_0x3f50('0x2'));var timeout=require(_0x3f50('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x3f50('0x4'));var auth=require(_0x3f50('0x5'));var interaction=require(_0x3f50('0x6'));var config=require(_0x3f50('0x7'));var controller=require('./dashboardItem.controller');router[_0x3f50('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x3f50('0x9')]);router[_0x3f50('0xa')]('/',auth[_0x3f50('0xb')](),controller[_0x3f50('0xc')]);router['put'](_0x3f50('0xd'),auth[_0x3f50('0xb')](),controller[_0x3f50('0xe')]);router[_0x3f50('0xf')](_0x3f50('0xd'),auth[_0x3f50('0xb')](),controller['destroy']);module[_0x3f50('0x10')]=router;
\ No newline at end of file
index d4a507c..7fe4245 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f6e=['second','sequelize','STRING','first'];(function(_0x5466ab,_0x227b13){var _0x40751a=function(_0x477f9e){while(--_0x477f9e){_0x5466ab['push'](_0x5466ab['shift']());}};_0x40751a(++_0x227b13);}(_0x9f6e,0x1f1));var _0xe9f6=function(_0x333ff0,_0x4f7386){_0x333ff0=_0x333ff0-0x0;var _0x19f208=_0x9f6e[_0x333ff0];return _0x19f208;};'use strict';var Sequelize=require(_0xe9f6('0x0'));module['exports']={'name':{'type':Sequelize[_0xe9f6('0x1')],'allowNull':![]},'level':{'type':Sequelize['ENUM'](_0xe9f6('0x2'),_0xe9f6('0x3'),'third'),'allowNull':![],'defaultValue':_0xe9f6('0x2')},'description':{'type':Sequelize[_0xe9f6('0x1')]}};
\ No newline at end of file
+var _0x5e14=['third','STRING','sequelize','exports','ENUM','first'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5e14,0x188));var _0x45e1=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x5e14[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x45e1('0x0'));module[_0x45e1('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'level':{'type':Sequelize[_0x45e1('0x2')](_0x45e1('0x3'),'second',_0x45e1('0x4')),'allowNull':![],'defaultValue':'first'},'description':{'type':Sequelize[_0x45e1('0x5')]}};
\ No newline at end of file
index 14e3e28..ad0d033 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x58a7=['UserProfileResource','end','error','name','map','Disposition','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','order','sort','where','pick','merge','options','include','findAll','catch','show','includeAll','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','params','eml-format','zip-dir','fast-json-patch','request-promise','moment','util','path','sox','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','Dispositions'];(function(_0x134c2e,_0x3573c4){var _0x2825db=function(_0x2a574d){while(--_0x2a574d){_0x134c2e['push'](_0x134c2e['shift']());}};_0x2825db(++_0x3573c4);}(_0x58a7,0xc7));var _0x758a=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0x58a7[_0x2c91e9];return _0x13f0ff;};'use strict';var emlformat=require(_0x758a('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x758a('0x1'));var jsonpatch=require(_0x758a('0x2'));var rp=require(_0x758a('0x3'));var moment=require(_0x758a('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x758a('0x5'));var path=require(_0x758a('0x6'));var sox=require(_0x758a('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x758a('0x8'));var _=require(_0x758a('0x9'));var squel=require(_0x758a('0xa'));var crypto=require(_0x758a('0xb'));var jsforce=require(_0x758a('0xc'));var deskjs=require(_0x758a('0xd'));var toCsv=require(_0x758a('0xe'));var querystring=require(_0x758a('0xf'));var Papa=require(_0x758a('0x10'));var Redis=require('ioredis');var authService=require(_0x758a('0x11'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x758a('0x12'));var logger=require('../../config/logger')(_0x758a('0x13'));var utils=require(_0x758a('0x14'));var config=require(_0x758a('0x15'));var licenseUtil=require(_0x758a('0x16'));var db=require(_0x758a('0x17'))['db'];function respondWithStatusCode(_0x2f9ea7,_0x1784d1){_0x1784d1=_0x1784d1||0xcc;return function(_0x3e89aa){if(_0x3e89aa){return _0x2f9ea7[_0x758a('0x18')](_0x1784d1);}return _0x2f9ea7[_0x758a('0x19')](_0x1784d1)['end']();};}function respondWithResult(_0x5dc507,_0x33a2b0){_0x33a2b0=_0x33a2b0||0xc8;return function(_0x1e9045){if(_0x1e9045){return _0x5dc507[_0x758a('0x19')](_0x33a2b0)['json'](_0x1e9045);}};}function respondWithFilteredResult(_0x191b47,_0x341386){return function(_0x4197ec){if(_0x4197ec){var _0x1ff4ec=typeof _0x341386[_0x758a('0x1a')]===_0x758a('0x1b')&&typeof _0x341386[_0x758a('0x1c')]===_0x758a('0x1b');var _0x387166=_0x4197ec[_0x758a('0x1d')];var _0x29ee6a=_0x1ff4ec?0x0:_0x341386['offset'];var _0x285295=_0x1ff4ec?_0x4197ec['count']:_0x341386['offset']+_0x341386[_0x758a('0x1c')];var _0x5467ab;if(_0x285295>=_0x387166){_0x285295=_0x387166;_0x5467ab=0xc8;}else{_0x5467ab=0xce;}_0x191b47[_0x758a('0x19')](_0x5467ab);return _0x191b47['set'](_0x758a('0x1e'),_0x29ee6a+'-'+_0x285295+'/'+_0x387166)['json'](_0x4197ec);}return null;};}function patchUpdates(_0x45e285){return function(_0x5c249e){try{jsonpatch[_0x758a('0x1f')](_0x5c249e,_0x45e285,!![]);}catch(_0x18ccf9){return BPromise[_0x758a('0x20')](_0x18ccf9);}return _0x5c249e[_0x758a('0x21')]();};}function saveUpdates(_0x112311,_0x2af358){return function(_0x455bce){if(_0x455bce){return _0x455bce[_0x758a('0x22')](_0x112311)[_0x758a('0x23')](function(_0x3cddb1){return _0x3cddb1;});}return null;};}function removeEntity(_0x18ce9e,_0xf5ae8){return function(_0x56150c){if(_0x56150c){return _0x56150c[_0x758a('0x24')]()[_0x758a('0x23')](function(){var _0x1540d8=_0x56150c['get']({'plain':!![]});var _0x1283ea=_0x758a('0x25');return db[_0x758a('0x26')][_0x758a('0x24')]({'where':{'type':_0x1283ea,'resourceId':_0x1540d8['id']}})[_0x758a('0x23')](function(){return _0x56150c;});})['then'](function(){_0x18ce9e[_0x758a('0x19')](0xcc)[_0x758a('0x27')]();});}};}function handleEntityNotFound(_0x352d50,_0x276a74){return function(_0x392070){if(!_0x392070){_0x352d50['sendStatus'](0x194);}return _0x392070;};}function handleError(_0x54493a,_0xc4741a){_0xc4741a=_0xc4741a||0x1f4;return function(_0x15ad21){logger[_0x758a('0x28')](_0x15ad21['stack']);if(_0x15ad21[_0x758a('0x29')]){delete _0x15ad21[_0x758a('0x29')];}_0x54493a[_0x758a('0x19')](_0xc4741a)['send'](_0x15ad21);};}exports['index']=function(_0x45703f,_0x3af087){var _0x355840={},_0x402045={},_0x27db21={'count':0x0,'rows':[]};var _0x432449=_[_0x758a('0x2a')](db[_0x758a('0x2b')][_0x758a('0x2c')],function(_0x445eca){return{'name':_0x445eca[_0x758a('0x2d')],'type':_0x445eca[_0x758a('0x2e')][_0x758a('0x2f')]};});_0x402045[_0x758a('0x30')]=_[_0x758a('0x2a')](_0x432449,_0x758a('0x29'));_0x402045[_0x758a('0x31')]=_[_0x758a('0x32')](_0x45703f[_0x758a('0x31')]);_0x402045[_0x758a('0x33')]=_[_0x758a('0x34')](_0x402045[_0x758a('0x30')],_0x402045[_0x758a('0x31')]);_0x355840[_0x758a('0x35')]=_[_0x758a('0x34')](_0x402045[_0x758a('0x30')],qs[_0x758a('0x36')](_0x45703f['query'][_0x758a('0x36')]));_0x355840['attributes']=_0x355840[_0x758a('0x35')]['length']?_0x355840[_0x758a('0x35')]:_0x402045['model'];if(!_0x45703f[_0x758a('0x31')][_0x758a('0x37')]('nolimit')){_0x355840[_0x758a('0x1c')]=qs[_0x758a('0x1c')](_0x45703f[_0x758a('0x31')][_0x758a('0x1c')]);_0x355840['offset']=qs[_0x758a('0x1a')](_0x45703f[_0x758a('0x31')][_0x758a('0x1a')]);}_0x355840[_0x758a('0x38')]=qs[_0x758a('0x39')](_0x45703f[_0x758a('0x31')][_0x758a('0x39')]);_0x355840[_0x758a('0x3a')]=qs[_0x758a('0x33')](_[_0x758a('0x3b')](_0x45703f['query'],_0x402045['filters']),_0x432449);if(_0x45703f[_0x758a('0x31')]['filter']){_0x355840['where']=_['merge'](_0x355840['where'],{'$or':_[_0x758a('0x2a')](_0x432449,function(_0x84bdfa){if(_0x84bdfa[_0x758a('0x2e')]!=='VIRTUAL'){var _0x117f0c={};_0x117f0c[_0x84bdfa['name']]={'$like':'%'+_0x45703f[_0x758a('0x31')]['filter']+'%'};return _0x117f0c;}})});}_0x355840=_[_0x758a('0x3c')]({},_0x355840,_0x45703f[_0x758a('0x3d')]);var _0x37f78c={'where':_0x355840[_0x758a('0x3a')]};return db[_0x758a('0x2b')]['count'](_0x37f78c)[_0x758a('0x23')](function(_0xcf37b7){_0x27db21[_0x758a('0x1d')]=_0xcf37b7;if(_0x45703f[_0x758a('0x31')]['includeAll']){_0x355840[_0x758a('0x3e')]=[{'all':!![]}];}return db[_0x758a('0x2b')][_0x758a('0x3f')](_0x355840);})[_0x758a('0x23')](function(_0x576286){_0x27db21['rows']=_0x576286;return _0x27db21;})[_0x758a('0x23')](respondWithFilteredResult(_0x3af087,_0x355840))[_0x758a('0x40')](handleError(_0x3af087,null));};exports[_0x758a('0x41')]=function(_0x550ef2,_0x160428){var _0x54b209={'raw':!![],'where':{'id':_0x550ef2['params']['id']}},_0x1f105e={};_0x1f105e[_0x758a('0x30')]=_[_0x758a('0x32')](db[_0x758a('0x2b')]['rawAttributes']);_0x1f105e['query']=_[_0x758a('0x32')](_0x550ef2[_0x758a('0x31')]);_0x1f105e[_0x758a('0x33')]=_[_0x758a('0x34')](_0x1f105e['model'],_0x1f105e['query']);_0x54b209['attributes']=_['intersection'](_0x1f105e[_0x758a('0x30')],qs[_0x758a('0x36')](_0x550ef2[_0x758a('0x31')][_0x758a('0x36')]));_0x54b209['attributes']=_0x54b209[_0x758a('0x35')]['length']?_0x54b209[_0x758a('0x35')]:_0x1f105e['model'];if(_0x550ef2[_0x758a('0x31')][_0x758a('0x42')]){_0x54b209['include']=[{'all':!![]}];}_0x54b209=_[_0x758a('0x3c')]({},_0x54b209,_0x550ef2[_0x758a('0x3d')]);return db[_0x758a('0x2b')][_0x758a('0x43')](_0x54b209)[_0x758a('0x23')](handleEntityNotFound(_0x160428,null))[_0x758a('0x23')](respondWithResult(_0x160428,null))['catch'](handleError(_0x160428,null));};exports[_0x758a('0x44')]=function(_0x11f7c5,_0x484eda){return db['Disposition'][_0x758a('0x44')](_0x11f7c5[_0x758a('0x45')],{})['then'](function(_0x1bc1f7){var _0x1fe551=_0x11f7c5[_0x758a('0x46')][_0x758a('0x47')]({'plain':!![]});if(!_0x1fe551)throw new Error(_0x758a('0x48'));if(_0x1fe551[_0x758a('0x49')]===_0x758a('0x46')){var _0x63a04=_0x1bc1f7[_0x758a('0x47')]({'plain':!![]});var _0xb7645d=_0x758a('0x25');return db[_0x758a('0x4a')][_0x758a('0x43')]({'where':{'name':_0xb7645d,'userProfileId':_0x1fe551[_0x758a('0x4b')]},'raw':!![]})[_0x758a('0x23')](function(_0x3ef934){if(_0x3ef934&&_0x3ef934[_0x758a('0x4c')]===0x0){return db[_0x758a('0x26')][_0x758a('0x44')]({'name':_0x63a04[_0x758a('0x29')],'resourceId':_0x63a04['id'],'type':_0x3ef934[_0x758a('0x29')],'sectionId':_0x3ef934['id']},{})['then'](function(){return _0x1bc1f7;});}else{return _0x1bc1f7;}})[_0x758a('0x40')](function(_0x4e4e08){logger[_0x758a('0x28')](_0x758a('0x4d'),_0x4e4e08);throw _0x4e4e08;});}return _0x1bc1f7;})[_0x758a('0x23')](respondWithResult(_0x484eda,0xc9))['catch'](handleError(_0x484eda,null));};exports[_0x758a('0x22')]=function(_0x40497a,_0x32fa62){if(_0x40497a['body']['id']){delete _0x40497a[_0x758a('0x45')]['id'];}return db[_0x758a('0x2b')][_0x758a('0x43')]({'where':{'id':_0x40497a[_0x758a('0x4e')]['id']}})[_0x758a('0x23')](handleEntityNotFound(_0x32fa62,null))[_0x758a('0x23')](saveUpdates(_0x40497a[_0x758a('0x45')],null))[_0x758a('0x23')](respondWithResult(_0x32fa62,null))[_0x758a('0x40')](handleError(_0x32fa62,null));};exports[_0x758a('0x24')]=function(_0x469efc,_0x29c5a4){return db['Disposition'][_0x758a('0x43')]({'where':{'id':_0x469efc[_0x758a('0x4e')]['id']}})[_0x758a('0x23')](handleEntityNotFound(_0x29c5a4,null))[_0x758a('0x23')](removeEntity(_0x29c5a4,null))[_0x758a('0x40')](handleError(_0x29c5a4,null));};
\ No newline at end of file
+var _0xb012=['status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','Dispositions','error','stack','name','index','map','Disposition','rawAttributes','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','pick','filter','merge','type','VIRTUAL','include','findAll','catch','show','params','options','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','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/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus'];(function(_0x43980e,_0x51e994){var _0x1c8d39=function(_0x407e83){while(--_0x407e83){_0x43980e['push'](_0x43980e['shift']());}};_0x1c8d39(++_0x51e994);}(_0xb012,0x92));var _0x2b01=function(_0x5b12f3,_0x595a0a){_0x5b12f3=_0x5b12f3-0x0;var _0x3e1511=_0xb012[_0x5b12f3];return _0x3e1511;};'use strict';var emlformat=require(_0x2b01('0x0'));var rimraf=require(_0x2b01('0x1'));var zipdir=require(_0x2b01('0x2'));var jsonpatch=require(_0x2b01('0x3'));var rp=require(_0x2b01('0x4'));var moment=require(_0x2b01('0x5'));var BPromise=require(_0x2b01('0x6'));var Mustache=require(_0x2b01('0x7'));var util=require(_0x2b01('0x8'));var path=require('path');var sox=require('sox');var csv=require(_0x2b01('0x9'));var ejs=require(_0x2b01('0xa'));var fs=require('fs');var fs_extra=require(_0x2b01('0xb'));var _=require(_0x2b01('0xc'));var squel=require(_0x2b01('0xd'));var crypto=require('crypto');var jsforce=require(_0x2b01('0xe'));var deskjs=require(_0x2b01('0xf'));var toCsv=require(_0x2b01('0x9'));var querystring=require(_0x2b01('0x10'));var Papa=require(_0x2b01('0x11'));var Redis=require(_0x2b01('0x12'));var authService=require(_0x2b01('0x13'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x2b01('0x14'));var logger=require(_0x2b01('0x15'))(_0x2b01('0x16'));var utils=require(_0x2b01('0x17'));var config=require(_0x2b01('0x18'));var licenseUtil=require(_0x2b01('0x19'));var db=require(_0x2b01('0x1a'))['db'];function respondWithStatusCode(_0x2488bb,_0x79b8c0){_0x79b8c0=_0x79b8c0||0xcc;return function(_0x2e57ae){if(_0x2e57ae){return _0x2488bb[_0x2b01('0x1b')](_0x79b8c0);}return _0x2488bb[_0x2b01('0x1c')](_0x79b8c0)[_0x2b01('0x1d')]();};}function respondWithResult(_0x3c81a4,_0x396429){_0x396429=_0x396429||0xc8;return function(_0x9255ea){if(_0x9255ea){return _0x3c81a4[_0x2b01('0x1c')](_0x396429)[_0x2b01('0x1e')](_0x9255ea);}};}function respondWithFilteredResult(_0x24855e,_0x3e28be){return function(_0x14eb60){if(_0x14eb60){var _0x26cf1f=typeof _0x3e28be[_0x2b01('0x1f')]===_0x2b01('0x20')&&typeof _0x3e28be[_0x2b01('0x21')]===_0x2b01('0x20');var _0x5e825a=_0x14eb60[_0x2b01('0x22')];var _0x40ddd6=_0x26cf1f?0x0:_0x3e28be['offset'];var _0x585ace=_0x26cf1f?_0x14eb60[_0x2b01('0x22')]:_0x3e28be['offset']+_0x3e28be[_0x2b01('0x21')];var _0x3fd07b;if(_0x585ace>=_0x5e825a){_0x585ace=_0x5e825a;_0x3fd07b=0xc8;}else{_0x3fd07b=0xce;}_0x24855e[_0x2b01('0x1c')](_0x3fd07b);return _0x24855e[_0x2b01('0x23')](_0x2b01('0x24'),_0x40ddd6+'-'+_0x585ace+'/'+_0x5e825a)['json'](_0x14eb60);}return null;};}function patchUpdates(_0x45beb7){return function(_0x52dcd4){try{jsonpatch[_0x2b01('0x25')](_0x52dcd4,_0x45beb7,!![]);}catch(_0x3be87e){return BPromise[_0x2b01('0x26')](_0x3be87e);}return _0x52dcd4[_0x2b01('0x27')]();};}function saveUpdates(_0xc9160d,_0x4544de){return function(_0x1a8188){if(_0x1a8188){return _0x1a8188[_0x2b01('0x28')](_0xc9160d)[_0x2b01('0x29')](function(_0x151e89){return _0x151e89;});}return null;};}function removeEntity(_0x263214,_0x392f35){return function(_0x4924ce){if(_0x4924ce){return _0x4924ce[_0x2b01('0x2a')]()[_0x2b01('0x29')](function(){var _0x3610ae=_0x4924ce['get']({'plain':!![]});var _0x12dd4b=_0x2b01('0x2b');return db['UserProfileResource']['destroy']({'where':{'type':_0x12dd4b,'resourceId':_0x3610ae['id']}})[_0x2b01('0x29')](function(){return _0x4924ce;});})['then'](function(){_0x263214[_0x2b01('0x1c')](0xcc)[_0x2b01('0x1d')]();});}};}function handleEntityNotFound(_0x1210f4,_0x31a554){return function(_0x4be07c){if(!_0x4be07c){_0x1210f4[_0x2b01('0x1b')](0x194);}return _0x4be07c;};}function handleError(_0x5bdc47,_0x449222){_0x449222=_0x449222||0x1f4;return function(_0x54ae57){logger[_0x2b01('0x2c')](_0x54ae57[_0x2b01('0x2d')]);if(_0x54ae57[_0x2b01('0x2e')]){delete _0x54ae57['name'];}_0x5bdc47[_0x2b01('0x1c')](_0x449222)['send'](_0x54ae57);};}exports[_0x2b01('0x2f')]=function(_0x44b6b3,_0x3c0699){var _0x33b5d6={},_0x4d2736={},_0x5d906f={'count':0x0,'rows':[]};var _0x5a52ac=_[_0x2b01('0x30')](db[_0x2b01('0x31')][_0x2b01('0x32')],function(_0x345789){return{'name':_0x345789['fieldName'],'type':_0x345789['type'][_0x2b01('0x33')]};});_0x4d2736[_0x2b01('0x34')]=_[_0x2b01('0x30')](_0x5a52ac,'name');_0x4d2736[_0x2b01('0x35')]=_[_0x2b01('0x36')](_0x44b6b3['query']);_0x4d2736[_0x2b01('0x37')]=_[_0x2b01('0x38')](_0x4d2736['model'],_0x4d2736[_0x2b01('0x35')]);_0x33b5d6['attributes']=_['intersection'](_0x4d2736[_0x2b01('0x34')],qs[_0x2b01('0x39')](_0x44b6b3[_0x2b01('0x35')][_0x2b01('0x39')]));_0x33b5d6['attributes']=_0x33b5d6[_0x2b01('0x3a')][_0x2b01('0x3b')]?_0x33b5d6[_0x2b01('0x3a')]:_0x4d2736[_0x2b01('0x34')];if(!_0x44b6b3[_0x2b01('0x35')][_0x2b01('0x3c')]('nolimit')){_0x33b5d6[_0x2b01('0x21')]=qs['limit'](_0x44b6b3[_0x2b01('0x35')][_0x2b01('0x21')]);_0x33b5d6[_0x2b01('0x1f')]=qs[_0x2b01('0x1f')](_0x44b6b3[_0x2b01('0x35')][_0x2b01('0x1f')]);}_0x33b5d6[_0x2b01('0x3d')]=qs[_0x2b01('0x3e')](_0x44b6b3[_0x2b01('0x35')][_0x2b01('0x3e')]);_0x33b5d6[_0x2b01('0x3f')]=qs[_0x2b01('0x37')](_[_0x2b01('0x40')](_0x44b6b3[_0x2b01('0x35')],_0x4d2736[_0x2b01('0x37')]),_0x5a52ac);if(_0x44b6b3[_0x2b01('0x35')][_0x2b01('0x41')]){_0x33b5d6[_0x2b01('0x3f')]=_[_0x2b01('0x42')](_0x33b5d6[_0x2b01('0x3f')],{'$or':_[_0x2b01('0x30')](_0x5a52ac,function(_0x221e2a){if(_0x221e2a[_0x2b01('0x43')]!==_0x2b01('0x44')){var _0x3e26a7={};_0x3e26a7[_0x221e2a[_0x2b01('0x2e')]]={'$like':'%'+_0x44b6b3['query'][_0x2b01('0x41')]+'%'};return _0x3e26a7;}})});}_0x33b5d6=_[_0x2b01('0x42')]({},_0x33b5d6,_0x44b6b3['options']);var _0x28b133={'where':_0x33b5d6[_0x2b01('0x3f')]};return db[_0x2b01('0x31')]['count'](_0x28b133)[_0x2b01('0x29')](function(_0x45b9c0){_0x5d906f[_0x2b01('0x22')]=_0x45b9c0;if(_0x44b6b3[_0x2b01('0x35')]['includeAll']){_0x33b5d6[_0x2b01('0x45')]=[{'all':!![]}];}return db[_0x2b01('0x31')][_0x2b01('0x46')](_0x33b5d6);})[_0x2b01('0x29')](function(_0x46c93e){_0x5d906f['rows']=_0x46c93e;return _0x5d906f;})[_0x2b01('0x29')](respondWithFilteredResult(_0x3c0699,_0x33b5d6))[_0x2b01('0x47')](handleError(_0x3c0699,null));};exports[_0x2b01('0x48')]=function(_0x252037,_0x59d10f){var _0x1d03a6={'raw':!![],'where':{'id':_0x252037[_0x2b01('0x49')]['id']}},_0x2b681e={};_0x2b681e[_0x2b01('0x34')]=_[_0x2b01('0x36')](db['Disposition'][_0x2b01('0x32')]);_0x2b681e[_0x2b01('0x35')]=_[_0x2b01('0x36')](_0x252037['query']);_0x2b681e['filters']=_[_0x2b01('0x38')](_0x2b681e['model'],_0x2b681e['query']);_0x1d03a6[_0x2b01('0x3a')]=_['intersection'](_0x2b681e[_0x2b01('0x34')],qs[_0x2b01('0x39')](_0x252037[_0x2b01('0x35')][_0x2b01('0x39')]));_0x1d03a6[_0x2b01('0x3a')]=_0x1d03a6[_0x2b01('0x3a')][_0x2b01('0x3b')]?_0x1d03a6[_0x2b01('0x3a')]:_0x2b681e['model'];if(_0x252037[_0x2b01('0x35')]['includeAll']){_0x1d03a6[_0x2b01('0x45')]=[{'all':!![]}];}_0x1d03a6=_[_0x2b01('0x42')]({},_0x1d03a6,_0x252037[_0x2b01('0x4a')]);return db['Disposition'][_0x2b01('0x4b')](_0x1d03a6)[_0x2b01('0x29')](handleEntityNotFound(_0x59d10f,null))[_0x2b01('0x29')](respondWithResult(_0x59d10f,null))[_0x2b01('0x47')](handleError(_0x59d10f,null));};exports['create']=function(_0x23fbc1,_0x5072c4){return db['Disposition'][_0x2b01('0x4c')](_0x23fbc1[_0x2b01('0x4d')],{})[_0x2b01('0x29')](function(_0x35f6d1){var _0x43f002=_0x23fbc1[_0x2b01('0x4e')][_0x2b01('0x4f')]({'plain':!![]});if(!_0x43f002)throw new Error(_0x2b01('0x50'));if(_0x43f002[_0x2b01('0x51')]==='user'){var _0x365fd8=_0x35f6d1[_0x2b01('0x4f')]({'plain':!![]});var _0x3e47ca='Dispositions';return db[_0x2b01('0x52')]['find']({'where':{'name':_0x3e47ca,'userProfileId':_0x43f002[_0x2b01('0x53')]},'raw':!![]})[_0x2b01('0x29')](function(_0x364543){if(_0x364543&&_0x364543[_0x2b01('0x54')]===0x0){return db[_0x2b01('0x55')][_0x2b01('0x4c')]({'name':_0x365fd8[_0x2b01('0x2e')],'resourceId':_0x365fd8['id'],'type':_0x364543['name'],'sectionId':_0x364543['id']},{})[_0x2b01('0x29')](function(){return _0x35f6d1;});}else{return _0x35f6d1;}})[_0x2b01('0x47')](function(_0x5209ac){logger[_0x2b01('0x2c')](_0x2b01('0x56'),_0x5209ac);throw _0x5209ac;});}return _0x35f6d1;})[_0x2b01('0x29')](respondWithResult(_0x5072c4,0xc9))[_0x2b01('0x47')](handleError(_0x5072c4,null));};exports[_0x2b01('0x28')]=function(_0x100bf3,_0x3ec932){if(_0x100bf3[_0x2b01('0x4d')]['id']){delete _0x100bf3['body']['id'];}return db['Disposition'][_0x2b01('0x4b')]({'where':{'id':_0x100bf3['params']['id']}})[_0x2b01('0x29')](handleEntityNotFound(_0x3ec932,null))['then'](saveUpdates(_0x100bf3[_0x2b01('0x4d')],null))[_0x2b01('0x29')](respondWithResult(_0x3ec932,null))[_0x2b01('0x47')](handleError(_0x3ec932,null));};exports[_0x2b01('0x2a')]=function(_0xdb053c,_0x5c56dc){return db['Disposition'][_0x2b01('0x4b')]({'where':{'id':_0xdb053c[_0x2b01('0x49')]['id']}})[_0x2b01('0x29')](handleEntityNotFound(_0x5c56dc,null))[_0x2b01('0x29')](removeEntity(_0x5c56dc,null))[_0x2b01('0x47')](handleError(_0x5c56dc,null));};
\ No newline at end of file
index f4c466c..6135910 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x22c6=['util','../../config/logger','api','moment','bluebird','../../config/environment','exports','Disposition','tools_dispositions','name_voice','name','ListId','name_chat','ChatWebsiteId','name_mail','MailAccountId','name_fax','FaxAccountId','OpenchannelAccountId','name_whatsapp','WhatsappAccountId'];(function(_0x5b3e54,_0x56c5a6){var _0x1d6821=function(_0x2c68a5){while(--_0x2c68a5){_0x5b3e54['push'](_0x5b3e54['shift']());}};_0x1d6821(++_0x56c5a6);}(_0x22c6,0x18f));var _0x622c=function(_0x16d132,_0x505f87){_0x16d132=_0x16d132-0x0;var _0x40be52=_0x22c6[_0x16d132];return _0x40be52;};'use strict';var _=require('lodash');var util=require(_0x622c('0x0'));var logger=require(_0x622c('0x1'))(_0x622c('0x2'));var moment=require(_0x622c('0x3'));var BPromise=require(_0x622c('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x622c('0x5'));var attributes=require('./disposition.attributes');module[_0x622c('0x6')]=function(_0x398fb6,_0x4053d1){return _0x398fb6['define'](_0x622c('0x7'),attributes,{'tableName':_0x622c('0x8'),'paranoid':![],'indexes':[{'unique':!![],'name':_0x622c('0x9'),'fields':[_0x622c('0xa'),_0x622c('0xb')]},{'unique':!![],'name':_0x622c('0xc'),'fields':[_0x622c('0xa'),_0x622c('0xd')]},{'unique':!![],'name':_0x622c('0xe'),'fields':[_0x622c('0xa'),_0x622c('0xf')]},{'unique':!![],'name':'name_sms','fields':[_0x622c('0xa'),'SmsAccountId']},{'unique':!![],'name':_0x622c('0x10'),'fields':['name',_0x622c('0x11')]},{'unique':!![],'name':'name_openchannel','fields':['name',_0x622c('0x12')]},{'unique':!![],'name':_0x622c('0x13'),'fields':[_0x622c('0xa'),_0x622c('0x14')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xd48a=['./disposition.attributes','exports','define','tools_dispositions','name','ListId','name_chat','ChatWebsiteId','name_mail','name_sms','SmsAccountId','name_fax','FaxAccountId','name_openchannel','OpenchannelAccountId','WhatsappAccountId','lodash','../../config/logger','api','moment','bluebird','request-promise','../../config/environment'];(function(_0x4e676e,_0x2a7c6d){var _0x336a3c=function(_0x4767c4){while(--_0x4767c4){_0x4e676e['push'](_0x4e676e['shift']());}};_0x336a3c(++_0x2a7c6d);}(_0xd48a,0x9a));var _0xad48=function(_0x198006,_0x48ebd4){_0x198006=_0x198006-0x0;var _0x254a96=_0xd48a[_0x198006];return _0x254a96;};'use strict';var _=require(_0xad48('0x0'));var util=require('util');var logger=require(_0xad48('0x1'))(_0xad48('0x2'));var moment=require(_0xad48('0x3'));var BPromise=require(_0xad48('0x4'));var rp=require(_0xad48('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xad48('0x6'));var attributes=require(_0xad48('0x7'));module[_0xad48('0x8')]=function(_0x14ebac,_0x4964dd){return _0x14ebac[_0xad48('0x9')]('Disposition',attributes,{'tableName':_0xad48('0xa'),'paranoid':![],'indexes':[{'unique':!![],'name':'name_voice','fields':[_0xad48('0xb'),_0xad48('0xc')]},{'unique':!![],'name':_0xad48('0xd'),'fields':[_0xad48('0xb'),_0xad48('0xe')]},{'unique':!![],'name':_0xad48('0xf'),'fields':[_0xad48('0xb'),'MailAccountId']},{'unique':!![],'name':_0xad48('0x10'),'fields':['name',_0xad48('0x11')]},{'unique':!![],'name':_0xad48('0x12'),'fields':['name',_0xad48('0x13')]},{'unique':!![],'name':_0xad48('0x14'),'fields':[_0xad48('0xb'),_0xad48('0x15')]},{'unique':!![],'name':'name_whatsapp','fields':[_0xad48('0xb'),_0xad48('0x16')]}],'timestamps':!![]});};
\ No newline at end of file
index 973f41a..0867808 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(_0x2f83e6,_0x1da53e){var _0x5bc2b1=function(_0x277a8c){while(--_0x277a8c){_0x2f83e6['push'](_0x2f83e6['shift']());}};_0x5bc2b1(++_0x1da53e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0xa9e0[_0x6c993a];return _0x27f547;};'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(_0x851eee,_0x5be795){var _0x166d2e=function(_0x54e589){while(--_0x54e589){_0x851eee['push'](_0x851eee['shift']());}};_0x166d2e(++_0x5be795);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3635ce,_0x33a6f9){_0x3635ce=_0x3635ce-0x0;var _0x97ecd0=_0xa9e0[_0x3635ce];return _0x97ecd0;};'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 22ac68c..d1085a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x923d=['fs-extra','../../components/interaction/service','../../config/environment','./disposition.controller','get','isAuthenticated','index','show','post','create','put','/:id','delete','destroy','multer','util','path','Router'];(function(_0x2e54e9,_0x22f214){var _0x34f392=function(_0x38987e){while(--_0x38987e){_0x2e54e9['push'](_0x2e54e9['shift']());}};_0x34f392(++_0x22f214);}(_0x923d,0x9e));var _0xd923=function(_0x48aba3,_0x23efea){_0x48aba3=_0x48aba3-0x0;var _0x2eac03=_0x923d[_0x48aba3];return _0x2eac03;};'use strict';var multer=require(_0xd923('0x0'));var util=require(_0xd923('0x1'));var path=require(_0xd923('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xd923('0x3')]();var fs_extra=require(_0xd923('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xd923('0x5'));var config=require(_0xd923('0x6'));var controller=require(_0xd923('0x7'));router[_0xd923('0x8')]('/',auth[_0xd923('0x9')](),controller[_0xd923('0xa')]);router[_0xd923('0x8')]('/:id',auth[_0xd923('0x9')](),controller[_0xd923('0xb')]);router[_0xd923('0xc')]('/',auth['isAuthenticated'](),controller[_0xd923('0xd')]);router[_0xd923('0xe')](_0xd923('0xf'),auth[_0xd923('0x9')](),controller['update']);router[_0xd923('0x10')](_0xd923('0xf'),auth[_0xd923('0x9')](),controller[_0xd923('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0x654a=['post','create','put','/:id','delete','exports','multer','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./disposition.controller','get','index','isAuthenticated','show'];(function(_0x55e2f4,_0x715c55){var _0x53e0f3=function(_0x248020){while(--_0x248020){_0x55e2f4['push'](_0x55e2f4['shift']());}};_0x53e0f3(++_0x715c55);}(_0x654a,0x16e));var _0xa654=function(_0x4aba38,_0x170974){_0x4aba38=_0x4aba38-0x0;var _0x52b7cb=_0x654a[_0x4aba38];return _0x52b7cb;};'use strict';var multer=require(_0xa654('0x0'));var util=require('util');var path=require(_0xa654('0x1'));var timeout=require(_0xa654('0x2'));var express=require('express');var router=express[_0xa654('0x3')]();var fs_extra=require(_0xa654('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xa654('0x5'));var config=require(_0xa654('0x6'));var controller=require(_0xa654('0x7'));router[_0xa654('0x8')]('/',auth['isAuthenticated'](),controller[_0xa654('0x9')]);router['get']('/:id',auth[_0xa654('0xa')](),controller[_0xa654('0xb')]);router[_0xa654('0xc')]('/',auth[_0xa654('0xa')](),controller[_0xa654('0xd')]);router[_0xa654('0xe')](_0xa654('0xf'),auth[_0xa654('0xa')](),controller['update']);router[_0xa654('0x10')]('/:id',auth[_0xa654('0xa')](),controller['destroy']);module[_0xa654('0x11')]=router;
\ No newline at end of file
index 2676367..1d45a7c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2da7=['BOOLEAN','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','exports','STRING','ENUM','xCALLY\x20Motion\x20Fax','localstationid','2400','4800','7200','9600','12000','14400','INTEGER','IAX','DADHI','KHOMP','SIP','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}'];(function(_0x507e09,_0x17712f){var _0x4904e8=function(_0x5ece3e){while(--_0x5ece3e){_0x507e09['push'](_0x507e09['shift']());}};_0x4904e8(++_0x17712f);}(_0x2da7,0xc5));var _0x72da=function(_0x3e401e,_0x93e08d){_0x3e401e=_0x3e401e-0x0;var _0x720da3=_0x2da7[_0x3e401e];return _0x720da3;};'use strict';var Sequelize=require(_0x72da('0x0'));module[_0x72da('0x1')]={'name':{'type':Sequelize[_0x72da('0x2')],'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x72da('0x2')]},'ecm':{'type':Sequelize[_0x72da('0x3')]('yes','no'),'defaultValue':'yes'},'headerinfo':{'type':Sequelize[_0x72da('0x2')],'defaultValue':_0x72da('0x4')},'localstationid':{'type':Sequelize[_0x72da('0x2')],'unique':_0x72da('0x5')},'minrate':{'type':Sequelize['ENUM'](_0x72da('0x6'),_0x72da('0x7'),_0x72da('0x8'),_0x72da('0x9'),_0x72da('0xa'),_0x72da('0xb')),'defaultValue':_0x72da('0x7')},'maxrate':{'type':Sequelize['ENUM'](_0x72da('0x6'),_0x72da('0x7'),_0x72da('0x8'),'9600',_0x72da('0xa'),'14400'),'defaultValue':_0x72da('0xb')},'modem':{'type':Sequelize[_0x72da('0x2')],'defaultValue':'v17,v27,v29'},'gateway':{'type':Sequelize[_0x72da('0x2')],'defaultValue':'no','validate':{'is':/^(?:yes|no|[0-9]+)$/}},'faxdetect':{'type':Sequelize['STRING'],'defaultValue':'no','validate':{'is':/^(?:yes|no|t38|cng|[0-9]+)$/}},'t38timeout':{'type':Sequelize[_0x72da('0xc')],'defaultValue':0x1388,'validate':{'min':0x3e8}},'tech':{'type':Sequelize[_0x72da('0x3')]('SIP',_0x72da('0xd'),_0x72da('0xe'),_0x72da('0xf')),'defaultValue':_0x72da('0x10')},'key':{'type':Sequelize['STRING'],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0x72da('0x11')],'defaultValue':function(){return _0x72da('0x12');}},'notificationSound':{'type':Sequelize[_0x72da('0x13')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x72da('0x13')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x72da('0xc')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x72da('0x13')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x72da('0xc')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x72da('0x13')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x72da('0xc')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x72da('0xc')],'allowNull':!![],'defaultValue':null,'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0x72da('0x13')],'defaultValue':![],'comment':_0x72da('0x14'),'set':function(_0x42118b){if(!_0x42118b)this[_0x72da('0x15')](_0x72da('0x16'),null);this[_0x72da('0x15')](_0x72da('0x17'),_0x42118b);}}};
\ No newline at end of file
+var _0xfb3b=['v17,v27,v29','IAX','DADHI','KHOMP','SIP','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','setDataValue','sequelize','exports','STRING','ENUM','yes','xCALLY\x20Motion\x20Fax','4800','14400','2400','9600','12000'];(function(_0x49a1b2,_0x2bc6b6){var _0x160321=function(_0x1c5096){while(--_0x1c5096){_0x49a1b2['push'](_0x49a1b2['shift']());}};_0x160321(++_0x2bc6b6);}(_0xfb3b,0x109));var _0xbfb3=function(_0x31aad3,_0x320d89){_0x31aad3=_0x31aad3-0x0;var _0x22092b=_0xfb3b[_0x31aad3];return _0x22092b;};'use strict';var Sequelize=require(_0xbfb3('0x0'));module[_0xbfb3('0x1')]={'name':{'type':Sequelize[_0xbfb3('0x2')],'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xbfb3('0x2')]},'ecm':{'type':Sequelize[_0xbfb3('0x3')](_0xbfb3('0x4'),'no'),'defaultValue':_0xbfb3('0x4')},'headerinfo':{'type':Sequelize['STRING'],'defaultValue':_0xbfb3('0x5')},'localstationid':{'type':Sequelize[_0xbfb3('0x2')],'unique':'localstationid'},'minrate':{'type':Sequelize[_0xbfb3('0x3')]('2400',_0xbfb3('0x6'),'7200','9600','12000',_0xbfb3('0x7')),'defaultValue':_0xbfb3('0x6')},'maxrate':{'type':Sequelize['ENUM'](_0xbfb3('0x8'),_0xbfb3('0x6'),'7200',_0xbfb3('0x9'),_0xbfb3('0xa'),'14400'),'defaultValue':'14400'},'modem':{'type':Sequelize[_0xbfb3('0x2')],'defaultValue':_0xbfb3('0xb')},'gateway':{'type':Sequelize[_0xbfb3('0x2')],'defaultValue':'no','validate':{'is':/^(?:yes|no|[0-9]+)$/}},'faxdetect':{'type':Sequelize[_0xbfb3('0x2')],'defaultValue':'no','validate':{'is':/^(?:yes|no|t38|cng|[0-9]+)$/}},'t38timeout':{'type':Sequelize['INTEGER'],'defaultValue':0x1388,'validate':{'min':0x3e8}},'tech':{'type':Sequelize[_0xbfb3('0x3')]('SIP',_0xbfb3('0xc'),_0xbfb3('0xd'),_0xbfb3('0xe')),'defaultValue':_0xbfb3('0xf')},'key':{'type':Sequelize[_0xbfb3('0x2')],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0xbfb3('0x10')],'defaultValue':function(){return _0xbfb3('0x11');}},'notificationSound':{'type':Sequelize[_0xbfb3('0x12')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xbfb3('0x12')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xbfb3('0x13')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xbfb3('0x13')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xbfb3('0x12')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xbfb3('0x13')],'allowNull':!![],'defaultValue':null,'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0xbfb3('0x14'),'set':function(_0x494c0f){if(!_0x494c0f)this['setDataValue'](_0xbfb3('0x15'),null);this[_0xbfb3('0x16')]('mandatoryDisposition',_0x494c0f);}}};
\ No newline at end of file
index 90d46b9..e59775f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x808e=['userProfileId','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','FaxAccountId','Disposition','findOne','hasOwnProperty','removeDispositions','addAnswer','CannedAnswer','getAnswers','removeAnswers','ids','addInteraction','FaxInteraction','omit','getInteractions','CmContact','User','Owner','fullname','Tag','Tags','color','tag','FaxApplication','bulkCreate','priority','getApplications','context','from-voip-provider','exten','system','description','appdata','push','CDR(type)=inbound-fax','Set','ecm','localstationid','gateway','faxdetect','headerinfo','minrate','modem','t38timeout','FAXOPT(','/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','sequelize','transaction','VoiceExtension','updateAccountApplications','tech','key','createdAt','TrunkId','ListId','findById','getMessages','FaxMessage','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','send','List','Contacts','DESC','attachments','join','root','basename','CheckAfterSend','isNil','from','\x22%s\x22\x20<%s>','fax','Send\x20Fax\x20failed','out','filename','Messages','Contact\x20not\x20found','spread','ContactId','dataValues','SendFax','SendFaxRpc,\x20%s','addAgents','emit','userFaxAccount:save','removeAgents','isArray','userFaxAccount:remove','getAgents','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','path','sox','to-csv','ejs','fs-extra','lodash','desk.js','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./faxAccount.socket','register','http','request','then','info','FaxAccount,\x20%s,\x20%s','request\x20sent','error','message','result','catch','sendStatus','status','end','json','limit','count','offset','set','Content-Range','apply','reject','save','update','destroy','get','FaxAccounts','stack','name','index','Pause','mandatoryDispositionPause','map','rawAttributes','fieldName','model','query','filters','intersection','fields','attributes','length','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','FaxAccount','includeAll','include','findAll','rows','show','params','keys','options','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','find'];(function(_0x57195c,_0x204f43){var _0x420d35=function(_0x22f886){while(--_0x22f886){_0x57195c['push'](_0x57195c['shift']());}};_0x420d35(++_0x204f43);}(_0x808e,0x11d));var _0xe808=function(_0x4fc9e6,_0xc51915){_0x4fc9e6=_0x4fc9e6-0x0;var _0x551d28=_0x808e[_0x4fc9e6];return _0x551d28;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe808('0x0'));var zipdir=require(_0xe808('0x1'));var jsonpatch=require(_0xe808('0x2'));var rp=require(_0xe808('0x3'));var moment=require(_0xe808('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xe808('0x5'));var path=require(_0xe808('0x6'));var sox=require(_0xe808('0x7'));var csv=require(_0xe808('0x8'));var ejs=require(_0xe808('0x9'));var fs=require('fs');var fs_extra=require(_0xe808('0xa'));var _=require(_0xe808('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xe808('0xc'));var toCsv=require(_0xe808('0x8'));var querystring=require('querystring');var Papa=require(_0xe808('0xd'));var Redis=require(_0xe808('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xe808('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xe808('0x10'));var logger=require(_0xe808('0x11'))(_0xe808('0x12'));var utils=require('../../config/utils');var config=require(_0xe808('0x13'));var licenseUtil=require(_0xe808('0x14'));var db=require(_0xe808('0x15'))['db'];config[_0xe808('0x16')]=_[_0xe808('0x17')](config[_0xe808('0x16')],{'host':_0xe808('0x18'),'port':0x18eb});var socket=require(_0xe808('0x19'))(new Redis(config[_0xe808('0x16')]));require(_0xe808('0x1a'))[_0xe808('0x1b')](socket);var jayson=require('jayson/promise');var client=jayson['client'][_0xe808('0x1c')]({'port':0x232c});var client9002=jayson['client'][_0xe808('0x1c')]({'port':0x232a});function respondWithRpcPromise(_0x2816d6,_0x32b150,_0x46e1e8,_0x11dd3c){return new BPromise(function(_0x5a8640,_0x2f9540){var _0x13460c=_0x11dd3c||client;return _0x13460c[_0xe808('0x1d')](_0x2816d6,_0x46e1e8)[_0xe808('0x1e')](function(_0x18304a){logger[_0xe808('0x1f')](_0xe808('0x20'),_0x32b150,_0xe808('0x21'));logger['debug']('FaxAccount,\x20%s,\x20%s,\x20%s',_0x32b150,_0xe808('0x21'),JSON['stringify'](_0x18304a));if(_0x18304a['error']){if(_0x18304a[_0xe808('0x22')]['code']===0x1f4){logger[_0xe808('0x22')](_0xe808('0x20'),_0x32b150,_0x18304a[_0xe808('0x22')][_0xe808('0x23')]);return _0x2f9540(_0x18304a[_0xe808('0x22')][_0xe808('0x23')]);}logger['error'](_0xe808('0x20'),_0x32b150,_0x18304a[_0xe808('0x22')][_0xe808('0x23')]);return _0x5a8640(_0x18304a[_0xe808('0x22')][_0xe808('0x23')]);}else{logger[_0xe808('0x1f')](_0xe808('0x20'),_0x32b150,_0xe808('0x21'));_0x5a8640(_0x18304a[_0xe808('0x24')][_0xe808('0x23')]);}})[_0xe808('0x25')](function(_0x2b1481){logger[_0xe808('0x22')](_0xe808('0x20'),_0x32b150,_0x2b1481);_0x2f9540(_0x2b1481);});});}function respondWithStatusCode(_0xb1e262,_0x4d86e3){_0x4d86e3=_0x4d86e3||0xcc;return function(_0x31b3d3){if(_0x31b3d3){return _0xb1e262[_0xe808('0x26')](_0x4d86e3);}return _0xb1e262[_0xe808('0x27')](_0x4d86e3)[_0xe808('0x28')]();};}function respondWithResult(_0x53d8ea,_0x2f4fab){_0x2f4fab=_0x2f4fab||0xc8;return function(_0x2ffd82){if(_0x2ffd82){return _0x53d8ea[_0xe808('0x27')](_0x2f4fab)[_0xe808('0x29')](_0x2ffd82);}};}function respondWithFilteredResult(_0x46ae4c,_0x3e5e1b){return function(_0x555915){if(_0x555915){var _0x1e836d=typeof _0x3e5e1b['offset']==='undefined'&&typeof _0x3e5e1b[_0xe808('0x2a')]==='undefined';var _0x3503ce=_0x555915[_0xe808('0x2b')];var _0x4d96bd=_0x1e836d?0x0:_0x3e5e1b[_0xe808('0x2c')];var _0x4992f3=_0x1e836d?_0x555915[_0xe808('0x2b')]:_0x3e5e1b[_0xe808('0x2c')]+_0x3e5e1b[_0xe808('0x2a')];var _0xfe95e5;if(_0x4992f3>=_0x3503ce){_0x4992f3=_0x3503ce;_0xfe95e5=0xc8;}else{_0xfe95e5=0xce;}_0x46ae4c[_0xe808('0x27')](_0xfe95e5);return _0x46ae4c[_0xe808('0x2d')](_0xe808('0x2e'),_0x4d96bd+'-'+_0x4992f3+'/'+_0x3503ce)[_0xe808('0x29')](_0x555915);}return null;};}function patchUpdates(_0x3e24e4){return function(_0x363e68){try{jsonpatch[_0xe808('0x2f')](_0x363e68,_0x3e24e4,!![]);}catch(_0xd417c){return BPromise[_0xe808('0x30')](_0xd417c);}return _0x363e68[_0xe808('0x31')]();};}function saveUpdates(_0x482604,_0x39f742){return function(_0x546975){if(_0x546975){return _0x546975[_0xe808('0x32')](_0x482604)[_0xe808('0x1e')](function(_0x7eaf3e){return _0x7eaf3e;});}return null;};}function removeEntity(_0x785f27,_0x880183){return function(_0x57b292){if(_0x57b292){return _0x57b292[_0xe808('0x33')]()[_0xe808('0x1e')](function(){var _0x1fe2d8=_0x57b292[_0xe808('0x34')]({'plain':!![]});var _0x5e2870=_0xe808('0x35');return db['UserProfileResource']['destroy']({'where':{'type':_0x5e2870,'resourceId':_0x1fe2d8['id']}})[_0xe808('0x1e')](function(){return _0x57b292;});})[_0xe808('0x1e')](function(){_0x785f27[_0xe808('0x27')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1941ac,_0x109765){return function(_0x1e5370){if(!_0x1e5370){_0x1941ac[_0xe808('0x26')](0x194);}return _0x1e5370;};}function handleError(_0x78f7a9,_0x5d30a0){_0x5d30a0=_0x5d30a0||0x1f4;return function(_0x401309){logger['error'](_0x401309[_0xe808('0x36')]);if(_0x401309[_0xe808('0x37')]){delete _0x401309[_0xe808('0x37')];}_0x78f7a9[_0xe808('0x27')](_0x5d30a0)['send'](_0x401309);};}exports[_0xe808('0x38')]=function(_0x1f534c,_0x48cb07){var _0x1c5bad={'include':[{'model':db[_0xe808('0x39')],'as':_0xe808('0x3a')}]},_0xfbdc17={},_0x53a36a={'count':0x0,'rows':[]};var _0x2cea72=_[_0xe808('0x3b')](db['FaxAccount'][_0xe808('0x3c')],function(_0x5901ec){return{'name':_0x5901ec[_0xe808('0x3d')],'type':_0x5901ec['type']['key']};});_0xfbdc17[_0xe808('0x3e')]=_[_0xe808('0x3b')](_0x2cea72,'name');_0xfbdc17[_0xe808('0x3f')]=_['keys'](_0x1f534c['query']);_0xfbdc17[_0xe808('0x40')]=_[_0xe808('0x41')](_0xfbdc17[_0xe808('0x3e')],_0xfbdc17[_0xe808('0x3f')]);_0x1c5bad['attributes']=_[_0xe808('0x41')](_0xfbdc17[_0xe808('0x3e')],qs[_0xe808('0x42')](_0x1f534c[_0xe808('0x3f')][_0xe808('0x42')]));_0x1c5bad[_0xe808('0x43')]=_0x1c5bad[_0xe808('0x43')][_0xe808('0x44')]?_0x1c5bad[_0xe808('0x43')]:_0xfbdc17[_0xe808('0x3e')];if(!_0x1f534c[_0xe808('0x3f')]['hasOwnProperty'](_0xe808('0x45'))){_0x1c5bad[_0xe808('0x2a')]=qs[_0xe808('0x2a')](_0x1f534c[_0xe808('0x3f')]['limit']);_0x1c5bad[_0xe808('0x2c')]=qs[_0xe808('0x2c')](_0x1f534c[_0xe808('0x3f')][_0xe808('0x2c')]);}_0x1c5bad[_0xe808('0x46')]=qs[_0xe808('0x47')](_0x1f534c[_0xe808('0x3f')][_0xe808('0x47')]);_0x1c5bad[_0xe808('0x48')]=qs[_0xe808('0x40')](_[_0xe808('0x49')](_0x1f534c[_0xe808('0x3f')],_0xfbdc17['filters']),_0x2cea72);if(_0x1f534c[_0xe808('0x3f')][_0xe808('0x4a')]){_0x1c5bad[_0xe808('0x48')]=_[_0xe808('0x4b')](_0x1c5bad[_0xe808('0x48')],{'$or':_[_0xe808('0x3b')](_0x2cea72,function(_0x3833b1){if(_0x3833b1[_0xe808('0x4c')]!==_0xe808('0x4d')){var _0x232b0f={};_0x232b0f[_0x3833b1[_0xe808('0x37')]]={'$like':'%'+_0x1f534c['query']['filter']+'%'};return _0x232b0f;}})});}_0x1c5bad=_[_0xe808('0x4b')]({},_0x1c5bad,_0x1f534c['options']);var _0x71ee60={'where':_0x1c5bad[_0xe808('0x48')]};return db[_0xe808('0x4e')][_0xe808('0x2b')](_0x71ee60)[_0xe808('0x1e')](function(_0x7a3c9){_0x53a36a['count']=_0x7a3c9;if(_0x1f534c[_0xe808('0x3f')][_0xe808('0x4f')]){_0x1c5bad[_0xe808('0x50')]=[{'all':!![]}];}return db[_0xe808('0x4e')][_0xe808('0x51')](_0x1c5bad);})['then'](function(_0x2669c4){_0x53a36a[_0xe808('0x52')]=_0x2669c4;return _0x53a36a;})[_0xe808('0x1e')](respondWithFilteredResult(_0x48cb07,_0x1c5bad))[_0xe808('0x25')](handleError(_0x48cb07,null));};exports[_0xe808('0x53')]=function(_0x51e2dc,_0x699d93){var _0x330145={'raw':![],'where':{'id':_0x51e2dc[_0xe808('0x54')]['id']},'include':[{'model':db[_0xe808('0x39')],'as':_0xe808('0x3a')}]},_0x579819={};_0x579819[_0xe808('0x3e')]=_[_0xe808('0x55')](db['FaxAccount'][_0xe808('0x3c')]);_0x579819['query']=_[_0xe808('0x55')](_0x51e2dc[_0xe808('0x3f')]);_0x579819[_0xe808('0x40')]=_[_0xe808('0x41')](_0x579819[_0xe808('0x3e')],_0x579819[_0xe808('0x3f')]);_0x330145[_0xe808('0x43')]=_[_0xe808('0x41')](_0x579819[_0xe808('0x3e')],qs['fields'](_0x51e2dc[_0xe808('0x3f')]['fields']));_0x330145[_0xe808('0x43')]=_0x330145['attributes'][_0xe808('0x44')]?_0x330145[_0xe808('0x43')]:_0x579819['model'];if(_0x51e2dc[_0xe808('0x3f')][_0xe808('0x4f')]){_0x330145[_0xe808('0x50')]=[{'all':!![]}];}_0x330145=_[_0xe808('0x4b')]({},_0x330145,_0x51e2dc[_0xe808('0x56')]);return db[_0xe808('0x4e')]['find'](_0x330145)['then'](handleEntityNotFound(_0x699d93,null))[_0xe808('0x1e')](respondWithResult(_0x699d93,null))[_0xe808('0x25')](handleError(_0x699d93,null));};exports[_0xe808('0x57')]=function(_0x26b610,_0x51b094){return db[_0xe808('0x4e')][_0xe808('0x57')](_0x26b610[_0xe808('0x58')],{})[_0xe808('0x1e')](function(_0x309fd6){var _0x533856=_0x26b610[_0xe808('0x59')][_0xe808('0x34')]({'plain':!![]});if(!_0x533856)throw new Error(_0xe808('0x5a'));if(_0x533856['role']===_0xe808('0x59')){var _0x4ad7c3=_0x309fd6['get']({'plain':!![]});var _0x3863ce=_0xe808('0x35');return db[_0xe808('0x5b')][_0xe808('0x5c')]({'where':{'name':_0x3863ce,'userProfileId':_0x533856[_0xe808('0x5d')]},'raw':!![]})['then'](function(_0x3a4dc9){if(_0x3a4dc9&&_0x3a4dc9['autoAssociation']===0x0){return db[_0xe808('0x5e')][_0xe808('0x57')]({'name':_0x4ad7c3['name'],'resourceId':_0x4ad7c3['id'],'type':_0x3a4dc9[_0xe808('0x37')],'sectionId':_0x3a4dc9['id']},{})[_0xe808('0x1e')](function(){return _0x309fd6;});}else{return _0x309fd6;}})['catch'](function(_0x521b8d){logger[_0xe808('0x22')](_0xe808('0x5f'),_0x521b8d);throw _0x521b8d;});}return _0x309fd6;})[_0xe808('0x1e')](respondWithResult(_0x51b094,0xc9))[_0xe808('0x25')](handleError(_0x51b094,null));};exports[_0xe808('0x32')]=function(_0x343959,_0x46d077){if(_0x343959[_0xe808('0x58')]['id']){delete _0x343959[_0xe808('0x58')]['id'];}return db[_0xe808('0x4e')][_0xe808('0x5c')]({'where':{'id':_0x343959[_0xe808('0x54')]['id']},'include':[{'model':db[_0xe808('0x39')],'as':_0xe808('0x3a')}]})[_0xe808('0x1e')](handleEntityNotFound(_0x46d077,null))[_0xe808('0x1e')](saveUpdates(_0x343959[_0xe808('0x58')],null))[_0xe808('0x1e')](respondWithResult(_0x46d077,null))[_0xe808('0x25')](handleError(_0x46d077,null));};exports['destroy']=function(_0xe4b90c,_0x533f53){return db[_0xe808('0x4e')]['find']({'where':{'id':_0xe4b90c['params']['id']}})[_0xe808('0x1e')](handleEntityNotFound(_0x533f53,null))['then'](removeEntity(_0x533f53,null))[_0xe808('0x25')](handleError(_0x533f53,null));};exports[_0xe808('0x60')]=function(_0x4e2f28,_0x26b07e){return db[_0xe808('0x4e')]['describe']()[_0xe808('0x1e')](respondWithResult(_0x26b07e,null))[_0xe808('0x25')](handleError(_0x26b07e,null));};exports[_0xe808('0x61')]=function(_0x31d231,_0x12720c,_0x46c5bb){if(_0x31d231[_0xe808('0x58')]['id']){delete _0x31d231['body']['id'];}return db[_0xe808('0x4e')][_0xe808('0x5c')]({'where':{'id':_0x31d231[_0xe808('0x54')]['id']}})[_0xe808('0x1e')](handleEntityNotFound(_0x12720c,null))[_0xe808('0x1e')](function(_0x4d8ee1){if(_0x4d8ee1){_0x31d231[_0xe808('0x58')][_0xe808('0x62')]=_0x4d8ee1['id'];return db[_0xe808('0x63')][_0xe808('0x57')](_0x31d231[_0xe808('0x58')]);}})[_0xe808('0x1e')](respondWithResult(_0x12720c,null))[_0xe808('0x25')](handleError(_0x12720c,null));};exports['getDispositions']=function(_0x465783,_0x525721,_0x4bbd4c){var _0x4fdcbc={'raw':![],'where':{}};var _0x9399ba={};var _0x10c159={'count':0x0,'rows':[]};return db[_0xe808('0x4e')][_0xe808('0x64')]({'where':{'id':_0x465783['params']['id']}})[_0xe808('0x1e')](handleEntityNotFound(_0x525721,null))[_0xe808('0x1e')](function(_0x3582b9){if(_0x3582b9){_0x9399ba[_0xe808('0x3e')]=_[_0xe808('0x55')](db[_0xe808('0x63')][_0xe808('0x3c')]);_0x9399ba['query']=_['keys'](_0x465783['query']);_0x9399ba[_0xe808('0x40')]=_[_0xe808('0x41')](_0x9399ba[_0xe808('0x3e')],_0x9399ba[_0xe808('0x3f')]);_0x4fdcbc[_0xe808('0x43')]=_['intersection'](_0x9399ba['model'],qs['fields'](_0x465783[_0xe808('0x3f')][_0xe808('0x42')]));_0x4fdcbc['attributes']=_0x4fdcbc[_0xe808('0x43')][_0xe808('0x44')]?_0x4fdcbc[_0xe808('0x43')]:_0x9399ba[_0xe808('0x3e')];if(!_0x465783[_0xe808('0x3f')][_0xe808('0x65')](_0xe808('0x45'))){_0x4fdcbc[_0xe808('0x2a')]=qs[_0xe808('0x2a')](_0x465783[_0xe808('0x3f')][_0xe808('0x2a')]);_0x4fdcbc[_0xe808('0x2c')]=qs['offset'](_0x465783['query'][_0xe808('0x2c')]);}_0x4fdcbc[_0xe808('0x46')]=qs['sort'](_0x465783[_0xe808('0x3f')]['sort']);_0x4fdcbc[_0xe808('0x48')]=qs[_0xe808('0x40')](_[_0xe808('0x49')](_0x465783[_0xe808('0x3f')],_0x9399ba[_0xe808('0x40')]));_0x4fdcbc['where'][_0xe808('0x62')]=_0x3582b9['id'];if(_0x465783['query'][_0xe808('0x4a')]){_0x4fdcbc['where']=_[_0xe808('0x4b')](_0x4fdcbc[_0xe808('0x48')],{'$or':_['map'](_0x4fdcbc[_0xe808('0x43')],function(_0x2bd218){var _0x26c087={};_0x26c087[_0x2bd218]={'$like':'%'+_0x465783[_0xe808('0x3f')][_0xe808('0x4a')]+'%'};return _0x26c087;})});}_0x4fdcbc=_[_0xe808('0x4b')]({},_0x4fdcbc,_0x465783[_0xe808('0x56')]);return db[_0xe808('0x63')]['count']({'where':_0x4fdcbc[_0xe808('0x48')]})[_0xe808('0x1e')](function(_0x175ac3){_0x10c159['count']=_0x175ac3;if(_0x465783[_0xe808('0x3f')][_0xe808('0x4f')]){_0x4fdcbc['include']=[{'all':!![]}];}return db['Disposition']['findAll'](_0x4fdcbc);})[_0xe808('0x1e')](function(_0x1e25e7){_0x10c159[_0xe808('0x52')]=_0x1e25e7;return _0x10c159;});}})[_0xe808('0x1e')](respondWithFilteredResult(_0x525721,_0x4fdcbc))[_0xe808('0x25')](handleError(_0x525721,null));};exports[_0xe808('0x66')]=function(_0x3d40ba,_0x366a81,_0x5a32e1){return db[_0xe808('0x4e')][_0xe808('0x5c')]({'where':{'id':_0x3d40ba[_0xe808('0x54')]['id']}})['then'](handleEntityNotFound(_0x366a81,null))[_0xe808('0x1e')](function(_0x1d45b1){if(_0x1d45b1){return _0x1d45b1[_0xe808('0x66')](_0x3d40ba[_0xe808('0x3f')]['ids']);}})['then'](respondWithStatusCode(_0x366a81,null))[_0xe808('0x25')](handleError(_0x366a81,null));};exports[_0xe808('0x67')]=function(_0x38cc3f,_0x307ed6,_0x4eef38){if(_0x38cc3f[_0xe808('0x58')]['id']){delete _0x38cc3f[_0xe808('0x58')]['id'];}return db[_0xe808('0x4e')][_0xe808('0x5c')]({'where':{'id':_0x38cc3f['params']['id']}})[_0xe808('0x1e')](handleEntityNotFound(_0x307ed6,null))[_0xe808('0x1e')](function(_0x2b74ab){if(_0x2b74ab){_0x38cc3f[_0xe808('0x58')]['FaxAccountId']=_0x2b74ab['id'];return db[_0xe808('0x68')]['create'](_0x38cc3f[_0xe808('0x58')]);}})[_0xe808('0x1e')](respondWithResult(_0x307ed6,null))[_0xe808('0x25')](handleError(_0x307ed6,null));};exports[_0xe808('0x69')]=function(_0x5b27dc,_0x490798,_0xee609d){var _0x50acd8={'raw':![],'where':{}};var _0x2a509c={};var _0x366b6d={'count':0x0,'rows':[]};return db[_0xe808('0x4e')][_0xe808('0x64')]({'where':{'id':_0x5b27dc['params']['id']}})[_0xe808('0x1e')](handleEntityNotFound(_0x490798,null))[_0xe808('0x1e')](function(_0x5a1b85){if(_0x5a1b85){_0x2a509c[_0xe808('0x3e')]=_['keys'](db[_0xe808('0x68')][_0xe808('0x3c')]);_0x2a509c['query']=_[_0xe808('0x55')](_0x5b27dc[_0xe808('0x3f')]);_0x2a509c[_0xe808('0x40')]=_[_0xe808('0x41')](_0x2a509c['model'],_0x2a509c[_0xe808('0x3f')]);_0x50acd8[_0xe808('0x43')]=_['intersection'](_0x2a509c[_0xe808('0x3e')],qs[_0xe808('0x42')](_0x5b27dc[_0xe808('0x3f')][_0xe808('0x42')]));_0x50acd8[_0xe808('0x43')]=_0x50acd8[_0xe808('0x43')][_0xe808('0x44')]?_0x50acd8[_0xe808('0x43')]:_0x2a509c[_0xe808('0x3e')];if(!_0x5b27dc[_0xe808('0x3f')][_0xe808('0x65')]('nolimit')){_0x50acd8[_0xe808('0x2a')]=qs[_0xe808('0x2a')](_0x5b27dc['query'][_0xe808('0x2a')]);_0x50acd8[_0xe808('0x2c')]=qs[_0xe808('0x2c')](_0x5b27dc['query'][_0xe808('0x2c')]);}_0x50acd8['order']=qs[_0xe808('0x47')](_0x5b27dc[_0xe808('0x3f')][_0xe808('0x47')]);_0x50acd8[_0xe808('0x48')]=qs[_0xe808('0x40')](_['pick'](_0x5b27dc[_0xe808('0x3f')],_0x2a509c['filters']));_0x50acd8[_0xe808('0x48')][_0xe808('0x62')]=_0x5a1b85['id'];if(_0x5b27dc[_0xe808('0x3f')][_0xe808('0x4a')]){_0x50acd8[_0xe808('0x48')]=_['merge'](_0x50acd8[_0xe808('0x48')],{'$or':_[_0xe808('0x3b')](_0x50acd8[_0xe808('0x43')],function(_0x186f5c){var _0x309301={};_0x309301[_0x186f5c]={'$like':'%'+_0x5b27dc[_0xe808('0x3f')]['filter']+'%'};return _0x309301;})});}_0x50acd8=_[_0xe808('0x4b')]({},_0x50acd8,_0x5b27dc[_0xe808('0x56')]);return db[_0xe808('0x68')]['count']({'where':_0x50acd8[_0xe808('0x48')]})['then'](function(_0x5d953c){_0x366b6d[_0xe808('0x2b')]=_0x5d953c;if(_0x5b27dc['query'][_0xe808('0x4f')]){_0x50acd8['include']=[{'all':!![]}];}return db[_0xe808('0x68')][_0xe808('0x51')](_0x50acd8);})[_0xe808('0x1e')](function(_0x3a2705){_0x366b6d[_0xe808('0x52')]=_0x3a2705;return _0x366b6d;});}})['then'](respondWithFilteredResult(_0x490798,_0x50acd8))['catch'](handleError(_0x490798,null));};exports[_0xe808('0x6a')]=function(_0x4f4608,_0x3c35b2,_0x510bac){return db[_0xe808('0x4e')][_0xe808('0x5c')]({'where':{'id':_0x4f4608[_0xe808('0x54')]['id']}})[_0xe808('0x1e')](handleEntityNotFound(_0x3c35b2,null))[_0xe808('0x1e')](function(_0x374a19){if(_0x374a19){return _0x374a19[_0xe808('0x6a')](_0x4f4608['query'][_0xe808('0x6b')]);}})['then'](respondWithStatusCode(_0x3c35b2,null))['catch'](handleError(_0x3c35b2,null));};exports[_0xe808('0x6c')]=function(_0x444b23,_0x2f2206,_0x597d6d){return db[_0xe808('0x6d')][_0xe808('0x5c')]({'where':{'id':_0x444b23[_0xe808('0x54')]['id']}})[_0xe808('0x1e')](handleEntityNotFound(_0x2f2206,null))[_0xe808('0x1e')](function(_0x136737){if(_0x136737){return _0x136737[_0xe808('0x6c')](_0x444b23[_0xe808('0x58')]['ids'],_[_0xe808('0x6e')](_0x444b23[_0xe808('0x58')],[_0xe808('0x6b'),'id'])||{});}})[_0xe808('0x1e')](respondWithResult(_0x2f2206,null))['catch'](handleError(_0x2f2206,null));};exports[_0xe808('0x6f')]=function(_0x59da2c,_0x280826,_0x13130c){var _0x4f4147={'raw':![],'where':{}};var _0x15ef9f={};var _0x46bcd3={'count':0x0,'rows':[]};return db[_0xe808('0x4e')][_0xe808('0x64')]({'where':{'id':_0x59da2c[_0xe808('0x54')]['id']}})[_0xe808('0x1e')](handleEntityNotFound(_0x280826,null))[_0xe808('0x1e')](function(_0x484d32){if(_0x484d32){_0x15ef9f['model']=_[_0xe808('0x55')](db['FaxInteraction']['rawAttributes']);_0x15ef9f['query']=_['keys'](_0x59da2c[_0xe808('0x3f')]);_0x15ef9f[_0xe808('0x40')]=_[_0xe808('0x41')](_0x15ef9f['model'],_0x15ef9f[_0xe808('0x3f')]);_0x4f4147[_0xe808('0x43')]=_[_0xe808('0x41')](_0x15ef9f[_0xe808('0x3e')],qs[_0xe808('0x42')](_0x59da2c[_0xe808('0x3f')][_0xe808('0x42')]));_0x4f4147[_0xe808('0x43')]=_0x4f4147['attributes'][_0xe808('0x44')]?_0x4f4147[_0xe808('0x43')]:_0x15ef9f[_0xe808('0x3e')];if(!_0x59da2c[_0xe808('0x3f')][_0xe808('0x65')]('nolimit')){_0x4f4147[_0xe808('0x2a')]=qs[_0xe808('0x2a')](_0x59da2c[_0xe808('0x3f')][_0xe808('0x2a')]);_0x4f4147[_0xe808('0x2c')]=qs['offset'](_0x59da2c[_0xe808('0x3f')][_0xe808('0x2c')]);}_0x4f4147[_0xe808('0x46')]=qs[_0xe808('0x47')](_0x59da2c[_0xe808('0x3f')][_0xe808('0x47')]);_0x4f4147[_0xe808('0x48')]=qs['filters'](_[_0xe808('0x49')](_0x59da2c[_0xe808('0x3f')],_0x15ef9f[_0xe808('0x40')]));_0x4f4147[_0xe808('0x48')][_0xe808('0x62')]=_0x484d32['id'];if(_0x59da2c[_0xe808('0x3f')][_0xe808('0x4a')]){_0x4f4147[_0xe808('0x48')]=_['merge'](_0x4f4147[_0xe808('0x48')],{'$or':_['map'](_0x4f4147['attributes'],function(_0x4c01a6){var _0x1f8eef={};_0x1f8eef[_0x4c01a6]={'$like':'%'+_0x59da2c[_0xe808('0x3f')][_0xe808('0x4a')]+'%'};return _0x1f8eef;})});}_0x4f4147=_['merge']({},_0x4f4147,_0x59da2c[_0xe808('0x56')]);return db[_0xe808('0x6d')][_0xe808('0x2b')]({'where':_0x4f4147[_0xe808('0x48')]})['then'](function(_0x42036c){_0x46bcd3[_0xe808('0x2b')]=_0x42036c;if(_0x59da2c[_0xe808('0x3f')][_0xe808('0x4f')]){_0x4f4147[_0xe808('0x50')]=[{'model':db[_0xe808('0x70')],'as':'Contact','required':![]},{'model':db[_0xe808('0x71')],'as':_0xe808('0x72'),'attributes':[_0xe808('0x37'),_0xe808('0x73'),'internal'],'required':![]},{'model':db[_0xe808('0x74')],'as':_0xe808('0x75'),'attributes':['id',_0xe808('0x37'),_0xe808('0x76')],'where':_0x59da2c[_0xe808('0x3f')][_0xe808('0x77')]?{'id':_0x59da2c[_0xe808('0x3f')][_0xe808('0x77')]}:undefined,'required':_0x59da2c[_0xe808('0x3f')][_0xe808('0x77')]?!![]:![]}];}return db[_0xe808('0x6d')][_0xe808('0x51')](_0x4f4147);})[_0xe808('0x1e')](function(_0x42220d){_0x46bcd3[_0xe808('0x52')]=_0x42220d;return _0x46bcd3;});}})[_0xe808('0x1e')](respondWithFilteredResult(_0x280826,_0x4f4147))['catch'](handleError(_0x280826,null));};exports['addApplications']=function(_0x349085,_0x46cbf8,_0x3ea338){return db[_0xe808('0x4e')]['findOne']({'where':{'id':_0x349085['params']['id']}})[_0xe808('0x1e')](handleEntityNotFound(_0x46cbf8,null))[_0xe808('0x1e')](function(_0x3203ce){if(_0x3203ce){return db['sequelize']['transaction'](function(_0x6bb956){return db['FaxApplication']['destroy']({'where':{'FaxAccountId':_0x349085[_0xe808('0x54')]['id']},'transaction':_0x6bb956})[_0xe808('0x1e')](function(_0x5694e5){var _0x3a1b0a=_[_0xe808('0x3b')](_0x349085[_0xe808('0x58')],function(_0x4e6308){_0x4e6308[_0xe808('0x62')]=_0x349085[_0xe808('0x54')]['id'];return _0x4e6308;});return db[_0xe808('0x78')][_0xe808('0x79')](_0x3a1b0a,{'transaction':_0x6bb956});});})[_0xe808('0x1e')](function(){return db[_0xe808('0x78')]['findAndCountAll']({'where':{'FaxAccountId':_0x349085[_0xe808('0x54')]['id']},'order':_0xe808('0x7a')});});}})[_0xe808('0x1e')](respondWithResult(_0x46cbf8,null))[_0xe808('0x25')](handleError(_0x46cbf8,null));};exports['getApplications']=function(_0x2ad1be,_0x1e8855,_0x742091){var _0x1f9f3a={};var _0x17c514={};var _0x517fa2;var _0x5eaf11;return db[_0xe808('0x4e')]['findOne']({'where':{'id':_0x2ad1be['params']['id']}})[_0xe808('0x1e')](handleEntityNotFound(_0x1e8855,null))['then'](function(_0x148b44){if(_0x148b44){_0x517fa2=_0x148b44;_0x17c514[_0xe808('0x3e')]=_[_0xe808('0x55')](db[_0xe808('0x78')][_0xe808('0x3c')]);_0x17c514[_0xe808('0x3f')]=_['keys'](_0x2ad1be['query']);_0x17c514['filters']=_[_0xe808('0x41')](_0x17c514['model'],_0x17c514[_0xe808('0x3f')]);_0x1f9f3a['attributes']=_['intersection'](_0x17c514['model'],qs[_0xe808('0x42')](_0x2ad1be['query'][_0xe808('0x42')]));_0x1f9f3a[_0xe808('0x43')]=_0x1f9f3a['attributes']['length']?_0x1f9f3a['attributes']:_0x17c514[_0xe808('0x3e')];_0x1f9f3a[_0xe808('0x46')]=qs['sort'](_0x2ad1be[_0xe808('0x3f')][_0xe808('0x47')]);_0x1f9f3a['where']=qs[_0xe808('0x40')](_[_0xe808('0x49')](_0x2ad1be[_0xe808('0x3f')],_0x17c514[_0xe808('0x40')]));if(_0x2ad1be['query'][_0xe808('0x4a')]){_0x1f9f3a['where']=_[_0xe808('0x4b')](_0x1f9f3a['where'],{'$or':_['map'](_0x1f9f3a[_0xe808('0x43')],function(_0x536deb){var _0x465467={};_0x465467[_0x536deb]={'$like':'%'+_0x2ad1be['query'][_0xe808('0x4a')]+'%'};return _0x465467;})});}_0x1f9f3a=_['merge']({},_0x1f9f3a,_0x2ad1be['options']);return _0x517fa2[_0xe808('0x7b')](_0x1f9f3a);}})[_0xe808('0x1e')](function(_0x750d46){if(_0x750d46){_0x5eaf11=_0x750d46[_0xe808('0x44')];if(!_0x2ad1be[_0xe808('0x3f')][_0xe808('0x65')](_0xe808('0x45'))){_0x1f9f3a['limit']=qs[_0xe808('0x2a')](_0x2ad1be[_0xe808('0x3f')][_0xe808('0x2a')]);_0x1f9f3a['offset']=qs[_0xe808('0x2c')](_0x2ad1be[_0xe808('0x3f')][_0xe808('0x2c')]);}return _0x517fa2[_0xe808('0x7b')](_0x1f9f3a);}})['then'](function(_0x113c58){if(_0x113c58){return _0x113c58?{'count':_0x5eaf11,'rows':_0x113c58}:null;}})[_0xe808('0x1e')](respondWithResult(_0x1e8855,null))[_0xe808('0x25')](handleError(_0x1e8855,null));};function Extension(_0x23f447,_0x1a769e,_0x215e41,_0x15ac6b){this[_0xe808('0x7c')]=_0xe808('0x7d');this[_0xe808('0x7e')]=_0x23f447['localstationid'];this['app']=_0x15ac6b;this[_0xe808('0x4c')]=_0xe808('0x7f');this[_0xe808('0x80')]='Fax\x20Extension';this[_0xe808('0x62')]=_0x23f447['id'];this[_0xe808('0x7a')]=_0x1a769e;this[_0xe808('0x81')]=_0x215e41;}function createExtensionsReciveFax(_0x566901){var _0xda74ac=0x1;var _0x5ac3ce=[];_0x5ac3ce[_0xe808('0x82')](new Extension(_0x566901,_0xda74ac,'','Answer'));_0xda74ac+=0x1;_0x5ac3ce[_0xe808('0x82')](new Extension(_0x566901,_0xda74ac,_0xe808('0x83'),_0xe808('0x84')));_0xda74ac+=0x1;for(var _0x17e10b in _0x566901){if(_0x566901[_0xe808('0x65')](_0x17e10b)&&(_0x17e10b===_0xe808('0x85')||_0x17e10b===_0xe808('0x86')||_0x17e10b===_0xe808('0x87')||_0x17e10b===_0xe808('0x88')||_0x17e10b===_0xe808('0x89')||_0x17e10b==='maxrate'||_0x17e10b===_0xe808('0x8a')||_0x17e10b===_0xe808('0x8b')||_0x17e10b===_0xe808('0x8c'))){_0x5ac3ce[_0xe808('0x82')](new Extension(_0x566901,_0xda74ac,_0xe808('0x8d')+_0x17e10b+')='+_0x566901[_0x17e10b],_0xe808('0x84')));_0xda74ac+=0x1;}}_0x5ac3ce[_0xe808('0x82')](new Extension(_0x566901,_0xda74ac,'6','Wait'));_0xda74ac+=0x1;_0x5ac3ce[_0xe808('0x82')](new Extension(_0x566901,_0xda74ac,_0xe808('0x8e'),'ReceiveFax'));_0xda74ac=0x0;return _0x5ac3ce;}exports['addAccountApplications']=function(_0x5e9d24,_0x2b9a33,_0xc4a4ab){var _0x4fdcb3;return db[_0xe808('0x8f')][_0xe808('0x90')](function(_0x3f28a8){return db[_0xe808('0x4e')][_0xe808('0x57')](_0x5e9d24[_0xe808('0x58')],{'transaction':_0x3f28a8})[_0xe808('0x1e')](function(_0x56f2d8){_0x4fdcb3=_0x56f2d8[_0xe808('0x34')]({'plain':!![]});return db[_0xe808('0x91')]['bulkCreate'](createExtensionsReciveFax(_0x4fdcb3),{'transaction':_0x3f28a8});});})[_0xe808('0x1e')](function(){return _0x4fdcb3;})[_0xe808('0x1e')](respondWithResult(_0x2b9a33,null))[_0xe808('0x25')](handleError(_0x2b9a33,null));};exports[_0xe808('0x92')]=function(_0x28c0f2,_0x5abf88,_0x1350e9){var _0x21485e;return db['sequelize']['transaction'](function(_0x2b6a9d){return db['FaxAccount'][_0xe808('0x32')](_0x28c0f2[_0xe808('0x58')],{'where':{'id':_0x28c0f2[_0xe808('0x58')]['id']},'transaction':_0x2b6a9d})[_0xe808('0x1e')](function(_0x5291dd){return db[_0xe808('0x91')][_0xe808('0x33')]({'where':{'FaxAccountId':_0x28c0f2[_0xe808('0x58')]['id']},'transaction':_0x2b6a9d})[_0xe808('0x1e')](function(_0x291f71){return db[_0xe808('0x91')]['bulkCreate'](createExtensionsReciveFax(_[_0xe808('0x6e')](_0x28c0f2[_0xe808('0x58')],[_0xe808('0x93'),_0xe808('0x94'),_0xe808('0x95'),'updatedAt',_0xe808('0x96'),_0xe808('0x97')])),{'transaction':_0x2b6a9d});});});})[_0xe808('0x1e')](function(){return db[_0xe808('0x4e')][_0xe808('0x98')](_0x28c0f2[_0xe808('0x58')]['id']);})['then'](respondWithResult(_0x5abf88,null))[_0xe808('0x25')](handleError(_0x5abf88,null));};exports[_0xe808('0x99')]=function(_0x4230f1,_0xb56be3,_0x3f1971){var _0x5d4b8a={'raw':!![],'where':{}};var _0x5b60c6={};var _0x74aa9c={'count':0x0,'rows':[]};return db[_0xe808('0x4e')][_0xe808('0x64')]({'where':{'id':_0x4230f1[_0xe808('0x54')]['id']}})[_0xe808('0x1e')](handleEntityNotFound(_0xb56be3,null))[_0xe808('0x1e')](function(_0x50217b){if(_0x50217b){_0x5b60c6[_0xe808('0x3e')]=_[_0xe808('0x55')](db[_0xe808('0x9a')][_0xe808('0x3c')]);_0x5b60c6[_0xe808('0x3f')]=_[_0xe808('0x55')](_0x4230f1[_0xe808('0x3f')]);_0x5b60c6['filters']=_[_0xe808('0x41')](_0x5b60c6[_0xe808('0x3e')],_0x5b60c6[_0xe808('0x3f')]);_0x5d4b8a[_0xe808('0x43')]=_[_0xe808('0x41')](_0x5b60c6[_0xe808('0x3e')],qs[_0xe808('0x42')](_0x4230f1[_0xe808('0x3f')][_0xe808('0x42')]));_0x5d4b8a[_0xe808('0x43')]=_0x5d4b8a[_0xe808('0x43')]['length']?_0x5d4b8a[_0xe808('0x43')]:_0x5b60c6[_0xe808('0x3e')];if(!_0x4230f1[_0xe808('0x3f')]['hasOwnProperty']('nolimit')){_0x5d4b8a[_0xe808('0x2a')]=qs[_0xe808('0x2a')](_0x4230f1[_0xe808('0x3f')][_0xe808('0x2a')]);_0x5d4b8a[_0xe808('0x2c')]=qs[_0xe808('0x2c')](_0x4230f1[_0xe808('0x3f')]['offset']);}_0x5d4b8a[_0xe808('0x46')]=qs[_0xe808('0x47')](_0x4230f1[_0xe808('0x3f')][_0xe808('0x47')]);_0x5d4b8a[_0xe808('0x48')]=qs[_0xe808('0x40')](_[_0xe808('0x49')](_0x4230f1[_0xe808('0x3f')],_0x5b60c6['filters']));_0x5d4b8a['where']['FaxAccountId']=_0x50217b['id'];if(_0x4230f1[_0xe808('0x3f')][_0xe808('0x4a')]){_0x5d4b8a[_0xe808('0x48')]=_[_0xe808('0x4b')](_0x5d4b8a[_0xe808('0x48')],{'$or':_[_0xe808('0x3b')](_0x5d4b8a[_0xe808('0x43')],function(_0x3f0599){var _0x16b096={};_0x16b096[_0x3f0599]={'$like':'%'+_0x4230f1[_0xe808('0x3f')][_0xe808('0x4a')]+'%'};return _0x16b096;})});}if(_0x4230f1[_0xe808('0x3f')][_0xe808('0x9b')]){var _0x18d387=_0x4230f1[_0xe808('0x3f')][_0xe808('0x9b')][_0xe808('0x9c')](',');var _0x364b32={};_0x364b32[_0x18d387[0x0]]={'$gte':moment(_0x18d387[0x1])[_0xe808('0x9d')](_0xe808('0x9e'))};_0x5d4b8a[_0xe808('0x48')]=_['merge'](_0x5d4b8a['where'],_0x364b32);}_0x5d4b8a=_[_0xe808('0x4b')]({},_0x5d4b8a,_0x4230f1['options']);return db[_0xe808('0x9a')]['count']({'where':_0x5d4b8a['where']})['then'](function(_0x18f4e2){_0x74aa9c[_0xe808('0x2b')]=_0x18f4e2;if(_0x4230f1[_0xe808('0x3f')][_0xe808('0x4f')]){_0x5d4b8a['include']=[{'all':!![]}];}return db[_0xe808('0x9a')][_0xe808('0x51')](_0x5d4b8a);})[_0xe808('0x1e')](function(_0x1c4acf){_0x74aa9c['rows']=_0x1c4acf;return _0x74aa9c;});}})[_0xe808('0x1e')](respondWithFilteredResult(_0xb56be3,_0x5d4b8a))[_0xe808('0x25')](handleError(_0xb56be3,null));};exports[_0xe808('0x9f')]=function(_0x44af43,_0x47019b,_0x23025e){var _0x20bcc2,_0x2df315={},_0x23ba30;if(_0x44af43[_0xe808('0x58')]['to']){_0x23ba30=_0x44af43[_0xe808('0x58')]['to'][0x0];}return db[_0xe808('0x4e')]['find']({'where':{'id':_0x44af43[_0xe808('0x54')]['id']},'include':[{'model':db['CmList'],'as':_0xe808('0xa0'),'include':[{'model':db['CmContact'],'as':_0xe808('0xa1'),'where':{'fax':_0x23ba30},'limit':0x1,'order':[['updatedAt',_0xe808('0xa2')]]}]}]})[_0xe808('0x1e')](handleEntityNotFound(_0x47019b,null))[_0xe808('0x1e')](function(_0x4cbb9d){_0x20bcc2=_0x4cbb9d;if(_0x44af43[_0xe808('0x58')][_0xe808('0xa3')]&&_0x44af43['body'][_0xe808('0xa3')][_0xe808('0x44')]){for(var _0x56b859=0x0;_0x56b859<_0x44af43[_0xe808('0x58')][_0xe808('0xa3')][_0xe808('0x44')];_0x56b859+=0x1){_0x44af43[_0xe808('0x58')][_0xe808('0xa3')][_0x56b859]={'filename':_0x44af43[_0xe808('0x58')][_0xe808('0xa3')][_0x56b859][_0xe808('0x37')],'id':_0x44af43['body'][_0xe808('0xa3')][_0x56b859]['id'],'path':path[_0xe808('0xa4')](config[_0xe808('0xa5')],'server/files/attachments',_0x44af43['body']['attachments'][_0x56b859][_0xe808('0xa6')])};}}return respondWithRpcPromise(_0xe808('0xa7'),_0xe808('0xa7'),{'FaxAccountId':_[_0xe808('0xa8')](_0x44af43[_0xe808('0x54')]['id'])?undefined:_0x44af43['params']['id'],'path':_[_0xe808('0xa8')](_0x44af43[_0xe808('0x58')][_0xe808('0xa3')][0x0]['path'])?undefined:_0x44af43['body'][_0xe808('0xa3')][0x0]['path'],'fax':_[_0xe808('0xa8')](_0x44af43[_0xe808('0x58')]['to'][0x0])?undefined:_0x44af43[_0xe808('0x58')]['to'][0x0]},client9002);})[_0xe808('0x1e')](function(){if(_0x20bcc2){if(_[_0xe808('0xa8')](_0x44af43['body'][_0xe808('0xa9')])){_0x44af43['body'][_0xe808('0xa9')]=util[_0xe808('0x9d')](_0xe808('0xaa'),_0x20bcc2[_0xe808('0x37')],_0x20bcc2[_0xe808('0xab')]);}if(_0x20bcc2[_0xe808('0xa0')]){if(_0x20bcc2[_0xe808('0xa0')][_0xe808('0xa1')][_0xe808('0x44')]){return _0x20bcc2['List'][_0xe808('0xa1')][0x0];}else{return db[_0xe808('0x70')]['create'](_['defaults'](_0x44af43['body'],{'firstName':_0x44af43[_0xe808('0x58')]['to'][0x0],'phone':_0x44af43[_0xe808('0x58')]['to'][0x0],'fax':_0x44af43[_0xe808('0x58')]['to'][0x0],'ListId':_0x20bcc2['ListId']}));}}else{throw new Error('List\x20not\x20found');}}else{throw new Error(_0xe808('0xac'));}})[_0xe808('0x1e')](function(_0x362cd5){if(_0x362cd5){return db[_0xe808('0x6d')][_0xe808('0x5c')]({'where':{'ContactId':_0x362cd5['id'],'closed':![],'FaxAccountId':_0x20bcc2['id']}})['then'](function(_0x22106a){if(_0x22106a){return[_0x22106a,![]];}return db['FaxInteraction'][_0xe808('0x57')]({'UserId':_0x44af43[_0xe808('0x59')]['id'],'ContactId':_0x362cd5['id'],'FaxAccountId':_0x20bcc2['id'],'fax':_0x44af43[_0xe808('0x58')]['to'][0x0],'firstMsgDirection':_0xe808('0xad'),'Messages':[_['merge'](_0x44af43[_0xe808('0x58')],{'read':![],'body':_0x44af43[_0xe808('0x58')][_0xe808('0xa3')][0x0][_0xe808('0xae')],'FaxAccountId':_0x20bcc2['id'],'UserId':_0x44af43['user']['id'],'ContactId':_0x362cd5['id'],'AttachmentId':_0x44af43[_0xe808('0x58')]['attachments'][0x0]['id']})]},{'include':[{'model':db['FaxMessage'],'as':_0xe808('0xaf')}]})[_0xe808('0x1e')](function(_0x4051e3){return[_0x4051e3,!![]];});});}else{throw new Error(_0xe808('0xb0'));}})[_0xe808('0xb1')](function(_0xa05dc4,_0x4e2084){if(_0x4e2084){return _0xa05dc4;}return db[_0xe808('0x9a')][_0xe808('0x57')]({'direction':'out','read':![],'body':_0x44af43[_0xe808('0x58')][_0xe808('0xa3')][0x0][_0xe808('0xae')],'FaxAccountId':_0x20bcc2['id'],'FaxInteractionId':_0xa05dc4['id'],'UserId':_0x44af43[_0xe808('0x59')]['id'],'ContactId':_0xa05dc4[_0xe808('0xb2')],'AttachmentId':_0x44af43[_0xe808('0x58')][_0xe808('0xa3')][0x0]['id']})['then'](function(_0x28c76f){_0xa05dc4['dataValues'][_0xe808('0xaf')]=[];_0xa05dc4['dataValues'][_0xe808('0xaf')][_0xe808('0x82')](_0x28c76f[_0xe808('0xb3')]);return _0xa05dc4;});})[_0xe808('0x1e')](function(_0x25f6cd){respondWithRpcPromise(_0xe808('0xb4'),_0xe808('0xb4'),{'FaxAccountId':_[_0xe808('0xa8')](_0x44af43[_0xe808('0x54')]['id'])?undefined:_0x44af43['params']['id'],'path':_[_0xe808('0xa8')](_0x44af43[_0xe808('0x58')]['attachments'][0x0][_0xe808('0x6')])?undefined:_0x44af43[_0xe808('0x58')][_0xe808('0xa3')][0x0][_0xe808('0x6')],'fax':_[_0xe808('0xa8')](_0x44af43['body']['to'][0x0])?undefined:_0x44af43['body']['to'][0x0],'AttachmentId':_0x44af43[_0xe808('0x58')][_0xe808('0xa3')][0x0]['id']},client9002)[_0xe808('0x1e')](function(_0x150854){logger[_0xe808('0x1f')](_0xe808('0xb5'),_0x150854);})['catch'](function(_0x3dd847){logger[_0xe808('0x1f')](_0xe808('0xb5'),_0x3dd847);});return _0x25f6cd;})['then'](respondWithResult(_0x47019b,null))[_0xe808('0x25')](handleError(_0x47019b,null));};exports[_0xe808('0xb6')]=function(_0x2fabb3,_0x4327d6,_0x1703ff){return db['FaxAccount'][_0xe808('0x5c')]({'where':{'id':_0x2fabb3['params']['id']}})[_0xe808('0x1e')](handleEntityNotFound(_0x4327d6,null))[_0xe808('0x1e')](function(_0x3acb3d){if(_0x3acb3d){return _0x3acb3d[_0xe808('0xb6')](_0x2fabb3[_0xe808('0x58')][_0xe808('0x6b')],_[_0xe808('0x6e')](_0x2fabb3[_0xe808('0x58')],[_0xe808('0x6b'),'id'])||{})[_0xe808('0xb1')](function(_0x22ebc8){for(var _0x72c83a=0x0;_0x72c83a<_0x2fabb3[_0xe808('0x58')][_0xe808('0x6b')][_0xe808('0x44')];_0x72c83a+=0x1){socket[_0xe808('0xb7')](_0xe808('0xb8'),{'UserId':Number(_0x2fabb3[_0xe808('0x58')][_0xe808('0x6b')][_0x72c83a]),'FaxAccountId':Number(_0x2fabb3['params']['id'])});}return _0x22ebc8;});}})[_0xe808('0x1e')](respondWithResult(_0x4327d6,null))[_0xe808('0x25')](handleError(_0x4327d6,null));};exports[_0xe808('0xb9')]=function(_0x72f69,_0x5718d0,_0x530a94){return db[_0xe808('0x4e')]['find']({'where':{'id':_0x72f69['params']['id']}})[_0xe808('0x1e')](handleEntityNotFound(_0x5718d0,null))['then'](function(_0x124f75){if(_0x124f75){return _0x124f75['removeAgents'](_0x72f69[_0xe808('0x3f')][_0xe808('0x6b')])[_0xe808('0x1e')](function(){if(_[_0xe808('0xba')](_0x72f69[_0xe808('0x3f')][_0xe808('0x6b')])){for(var _0x1ecbd3=0x0;_0x1ecbd3<_0x72f69[_0xe808('0x3f')][_0xe808('0x6b')]['length'];_0x1ecbd3+=0x1){socket[_0xe808('0xb7')](_0xe808('0xbb'),{'UserId':Number(_0x72f69['query'][_0xe808('0x6b')][_0x1ecbd3]),'FaxAccountId':Number(_0x72f69['params']['id'])});}}else{socket['emit'](_0xe808('0xbb'),{'UserId':Number(_0x72f69['query'][_0xe808('0x6b')]),'FaxAccountId':Number(_0x72f69['params']['id'])});}});}})[_0xe808('0x1e')](respondWithStatusCode(_0x5718d0,null))[_0xe808('0x25')](handleError(_0x5718d0,null));};exports[_0xe808('0xbc')]=function(_0x5ca7e7,_0x4e23f2,_0x53858d){var _0x517948={};var _0x2e8e11={};var _0xfd0e6;var _0x3a124d;return db[_0xe808('0x4e')]['findOne']({'where':{'id':_0x5ca7e7[_0xe808('0x54')]['id']}})[_0xe808('0x1e')](handleEntityNotFound(_0x4e23f2,null))[_0xe808('0x1e')](function(_0x185a72){if(_0x185a72){_0xfd0e6=_0x185a72;_0x2e8e11[_0xe808('0x3e')]=_['keys'](db[_0xe808('0x71')][_0xe808('0x3c')]);_0x2e8e11[_0xe808('0x3f')]=_[_0xe808('0x55')](_0x5ca7e7[_0xe808('0x3f')]);_0x2e8e11[_0xe808('0x40')]=_[_0xe808('0x41')](_0x2e8e11[_0xe808('0x3e')],_0x2e8e11[_0xe808('0x3f')]);_0x517948['attributes']=_[_0xe808('0x41')](_0x2e8e11[_0xe808('0x3e')],qs[_0xe808('0x42')](_0x5ca7e7['query'][_0xe808('0x42')]));_0x517948[_0xe808('0x43')]=_0x517948[_0xe808('0x43')][_0xe808('0x44')]?_0x517948[_0xe808('0x43')]:_0x2e8e11[_0xe808('0x3e')];_0x517948[_0xe808('0x46')]=qs[_0xe808('0x47')](_0x5ca7e7[_0xe808('0x3f')][_0xe808('0x47')]);_0x517948[_0xe808('0x48')]=qs[_0xe808('0x40')](_[_0xe808('0x49')](_0x5ca7e7[_0xe808('0x3f')],_0x2e8e11[_0xe808('0x40')]));if(_0x5ca7e7[_0xe808('0x3f')][_0xe808('0x4a')]){_0x517948['where']=_['merge'](_0x517948[_0xe808('0x48')],{'$or':_['map'](_0x517948[_0xe808('0x43')],function(_0x1838d8){var _0x17c269={};_0x17c269[_0x1838d8]={'$like':'%'+_0x5ca7e7[_0xe808('0x3f')][_0xe808('0x4a')]+'%'};return _0x17c269;})});}_0x517948=_[_0xe808('0x4b')]({},_0x517948,_0x5ca7e7[_0xe808('0x56')]);return _0xfd0e6[_0xe808('0xbc')](_0x517948);}})[_0xe808('0x1e')](function(_0x3f7e0d){if(_0x3f7e0d){_0x3a124d=_0x3f7e0d[_0xe808('0x44')];if(!_0x5ca7e7[_0xe808('0x3f')]['hasOwnProperty'](_0xe808('0x45'))){_0x517948[_0xe808('0x2a')]=qs[_0xe808('0x2a')](_0x5ca7e7[_0xe808('0x3f')]['limit']);_0x517948['offset']=qs[_0xe808('0x2c')](_0x5ca7e7['query'][_0xe808('0x2c')]);}return _0xfd0e6[_0xe808('0xbc')](_0x517948);}})[_0xe808('0x1e')](function(_0xe20d61){if(_0xe20d61){return _0xe20d61?{'count':_0x3a124d,'rows':_0xe20d61}:null;}})[_0xe808('0x1e')](respondWithResult(_0x4e23f2,null))['catch'](handleError(_0x4e23f2,null));};
\ No newline at end of file
+var _0xfd67=['stringify','error','code','message','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','set','update','destroy','get','FaxAccounts','UserProfileResource','stack','name','send','Pause','mandatoryDispositionPause','map','rawAttributes','type','key','model','keys','filters','query','attributes','intersection','hasOwnProperty','nolimit','sort','where','filter','merge','VIRTUAL','includeAll','include','FaxAccount','findAll','show','params','fields','length','options','find','create','body','user','role','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','FaxAccountId','Disposition','getDispositions','findOne','order','pick','rows','removeDispositions','CannedAnswer','getAnswers','removeAnswers','ids','addInteraction','omit','getInteractions','FaxInteraction','CmContact','Contact','User','fullname','internal','Tag','Tags','color','tag','addApplications','transaction','FaxApplication','findAndCountAll','priority','getApplications','from-voip-provider','exten','localstationid','app','description','Fax\x20Extension','appdata','push','CDR(type)=inbound-fax','Set','ecm','gateway','modem','t38timeout','FAXOPT(','Wait','/var/opt/motion2/server/files/attachments/fax-${CALLERID(num)}-${CUT(UNIQUEID,.,1)}-${CUT(UNIQUEID,.,2)}-${STRFTIME(,,%C%y%m%d%H%M%S)}-rx.tif,d','ReceiveFax','addAccountApplications','VoiceExtension','bulkCreate','tech','createdAt','TrunkId','findById','getMessages','FaxMessage','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','CmList','List','Contacts','updatedAt','DESC','attachments','join','server/files/attachments','basename','CheckAfterSend','isNil','path','from','fax','ListId','List\x20not\x20found','Send\x20Fax\x20failed','out','filename','Messages','spread','ContactId','dataValues','SendFaxRpc,\x20%s','addAgents','userFaxAccount:save','removeAgents','isArray','emit','userFaxAccount:remove','getAgents','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','util','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','defaults','localhost','socket.io-emitter','./faxAccount.socket','register','jayson/promise','client','request','then','info','FaxAccount,\x20%s,\x20%s','request\x20sent','debug','FaxAccount,\x20%s,\x20%s,\x20%s'];(function(_0x241798,_0x3ff229){var _0x62b9=function(_0x37d7ee){while(--_0x37d7ee){_0x241798['push'](_0x241798['shift']());}};_0x62b9(++_0x3ff229);}(_0xfd67,0x9a));var _0x7fd6=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xfd67[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x7fd6('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x7fd6('0x1'));var jsonpatch=require(_0x7fd6('0x2'));var rp=require(_0x7fd6('0x3'));var moment=require('moment');var BPromise=require(_0x7fd6('0x4'));var Mustache=require('mustache');var util=require(_0x7fd6('0x5'));var path=require('path');var sox=require(_0x7fd6('0x6'));var csv=require(_0x7fd6('0x7'));var ejs=require(_0x7fd6('0x8'));var fs=require('fs');var fs_extra=require(_0x7fd6('0x9'));var _=require(_0x7fd6('0xa'));var squel=require('squel');var crypto=require(_0x7fd6('0xb'));var jsforce=require(_0x7fd6('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x7fd6('0x7'));var querystring=require(_0x7fd6('0xd'));var Papa=require(_0x7fd6('0xe'));var Redis=require(_0x7fd6('0xf'));var authService=require(_0x7fd6('0x10'));var qs=require(_0x7fd6('0x11'));var as=require(_0x7fd6('0x12'));var hardwareService=require(_0x7fd6('0x13'));var logger=require('../../config/logger')(_0x7fd6('0x14'));var utils=require('../../config/utils');var config=require(_0x7fd6('0x15'));var licenseUtil=require(_0x7fd6('0x16'));var db=require(_0x7fd6('0x17'))['db'];config['redis']=_[_0x7fd6('0x18')](config['redis'],{'host':_0x7fd6('0x19'),'port':0x18eb});var socket=require(_0x7fd6('0x1a'))(new Redis(config['redis']));require(_0x7fd6('0x1b'))[_0x7fd6('0x1c')](socket);var jayson=require(_0x7fd6('0x1d'));var client=jayson['client']['http']({'port':0x232c});var client9002=jayson[_0x7fd6('0x1e')]['http']({'port':0x232a});function respondWithRpcPromise(_0x597b19,_0x35d497,_0x1ce768,_0x1fad69){return new BPromise(function(_0x53acf1,_0x1f2491){var _0x1debc4=_0x1fad69||client;return _0x1debc4[_0x7fd6('0x1f')](_0x597b19,_0x1ce768)[_0x7fd6('0x20')](function(_0x24b810){logger[_0x7fd6('0x21')](_0x7fd6('0x22'),_0x35d497,_0x7fd6('0x23'));logger[_0x7fd6('0x24')](_0x7fd6('0x25'),_0x35d497,_0x7fd6('0x23'),JSON[_0x7fd6('0x26')](_0x24b810));if(_0x24b810[_0x7fd6('0x27')]){if(_0x24b810[_0x7fd6('0x27')][_0x7fd6('0x28')]===0x1f4){logger['error'](_0x7fd6('0x22'),_0x35d497,_0x24b810[_0x7fd6('0x27')]['message']);return _0x1f2491(_0x24b810['error'][_0x7fd6('0x29')]);}logger[_0x7fd6('0x27')](_0x7fd6('0x22'),_0x35d497,_0x24b810[_0x7fd6('0x27')][_0x7fd6('0x29')]);return _0x53acf1(_0x24b810['error']['message']);}else{logger[_0x7fd6('0x21')](_0x7fd6('0x22'),_0x35d497,'request\x20sent');_0x53acf1(_0x24b810[_0x7fd6('0x2a')][_0x7fd6('0x29')]);}})[_0x7fd6('0x2b')](function(_0x2061a7){logger[_0x7fd6('0x27')]('FaxAccount,\x20%s,\x20%s',_0x35d497,_0x2061a7);_0x1f2491(_0x2061a7);});});}function respondWithStatusCode(_0x53cf2b,_0x2cfbb8){_0x2cfbb8=_0x2cfbb8||0xcc;return function(_0x158db5){if(_0x158db5){return _0x53cf2b[_0x7fd6('0x2c')](_0x2cfbb8);}return _0x53cf2b[_0x7fd6('0x2d')](_0x2cfbb8)[_0x7fd6('0x2e')]();};}function respondWithResult(_0x33fc40,_0x2f7f80){_0x2f7f80=_0x2f7f80||0xc8;return function(_0x43e3be){if(_0x43e3be){return _0x33fc40[_0x7fd6('0x2d')](_0x2f7f80)[_0x7fd6('0x2f')](_0x43e3be);}};}function respondWithFilteredResult(_0xf1a3a9,_0x79687b){return function(_0x4997d8){if(_0x4997d8){var _0x427d49=typeof _0x79687b[_0x7fd6('0x30')]===_0x7fd6('0x31')&&typeof _0x79687b[_0x7fd6('0x32')]===_0x7fd6('0x31');var _0x535725=_0x4997d8[_0x7fd6('0x33')];var _0x14a9db=_0x427d49?0x0:_0x79687b[_0x7fd6('0x30')];var _0x624d18=_0x427d49?_0x4997d8[_0x7fd6('0x33')]:_0x79687b[_0x7fd6('0x30')]+_0x79687b[_0x7fd6('0x32')];var _0x2ad36b;if(_0x624d18>=_0x535725){_0x624d18=_0x535725;_0x2ad36b=0xc8;}else{_0x2ad36b=0xce;}_0xf1a3a9[_0x7fd6('0x2d')](_0x2ad36b);return _0xf1a3a9[_0x7fd6('0x34')]('Content-Range',_0x14a9db+'-'+_0x624d18+'/'+_0x535725)[_0x7fd6('0x2f')](_0x4997d8);}return null;};}function patchUpdates(_0x1360be){return function(_0x58241a){try{jsonpatch['apply'](_0x58241a,_0x1360be,!![]);}catch(_0x2d1702){return BPromise['reject'](_0x2d1702);}return _0x58241a['save']();};}function saveUpdates(_0x4984c1,_0x228bfc){return function(_0x2dface){if(_0x2dface){return _0x2dface[_0x7fd6('0x35')](_0x4984c1)[_0x7fd6('0x20')](function(_0x1a3af9){return _0x1a3af9;});}return null;};}function removeEntity(_0x3dd805,_0x4c7860){return function(_0x16f79e){if(_0x16f79e){return _0x16f79e[_0x7fd6('0x36')]()[_0x7fd6('0x20')](function(){var _0x1fe397=_0x16f79e[_0x7fd6('0x37')]({'plain':!![]});var _0x1670e2=_0x7fd6('0x38');return db[_0x7fd6('0x39')][_0x7fd6('0x36')]({'where':{'type':_0x1670e2,'resourceId':_0x1fe397['id']}})['then'](function(){return _0x16f79e;});})[_0x7fd6('0x20')](function(){_0x3dd805[_0x7fd6('0x2d')](0xcc)[_0x7fd6('0x2e')]();});}};}function handleEntityNotFound(_0x5fe88a,_0x3ee476){return function(_0xdb48fa){if(!_0xdb48fa){_0x5fe88a[_0x7fd6('0x2c')](0x194);}return _0xdb48fa;};}function handleError(_0x3b487c,_0x49d3c1){_0x49d3c1=_0x49d3c1||0x1f4;return function(_0x2a015f){logger['error'](_0x2a015f[_0x7fd6('0x3a')]);if(_0x2a015f['name']){delete _0x2a015f[_0x7fd6('0x3b')];}_0x3b487c[_0x7fd6('0x2d')](_0x49d3c1)[_0x7fd6('0x3c')](_0x2a015f);};}exports['index']=function(_0x25fc22,_0x60994){var _0x311abf={'include':[{'model':db[_0x7fd6('0x3d')],'as':_0x7fd6('0x3e')}]},_0x412c48={},_0x4e4958={'count':0x0,'rows':[]};var _0x3c2b67=_[_0x7fd6('0x3f')](db['FaxAccount'][_0x7fd6('0x40')],function(_0x32f98c){return{'name':_0x32f98c['fieldName'],'type':_0x32f98c[_0x7fd6('0x41')][_0x7fd6('0x42')]};});_0x412c48[_0x7fd6('0x43')]=_[_0x7fd6('0x3f')](_0x3c2b67,_0x7fd6('0x3b'));_0x412c48['query']=_[_0x7fd6('0x44')](_0x25fc22['query']);_0x412c48[_0x7fd6('0x45')]=_['intersection'](_0x412c48[_0x7fd6('0x43')],_0x412c48[_0x7fd6('0x46')]);_0x311abf[_0x7fd6('0x47')]=_[_0x7fd6('0x48')](_0x412c48[_0x7fd6('0x43')],qs['fields'](_0x25fc22['query']['fields']));_0x311abf['attributes']=_0x311abf[_0x7fd6('0x47')]['length']?_0x311abf[_0x7fd6('0x47')]:_0x412c48[_0x7fd6('0x43')];if(!_0x25fc22['query'][_0x7fd6('0x49')](_0x7fd6('0x4a'))){_0x311abf[_0x7fd6('0x32')]=qs[_0x7fd6('0x32')](_0x25fc22['query'][_0x7fd6('0x32')]);_0x311abf['offset']=qs[_0x7fd6('0x30')](_0x25fc22[_0x7fd6('0x46')][_0x7fd6('0x30')]);}_0x311abf['order']=qs[_0x7fd6('0x4b')](_0x25fc22[_0x7fd6('0x46')][_0x7fd6('0x4b')]);_0x311abf[_0x7fd6('0x4c')]=qs[_0x7fd6('0x45')](_['pick'](_0x25fc22[_0x7fd6('0x46')],_0x412c48['filters']),_0x3c2b67);if(_0x25fc22[_0x7fd6('0x46')][_0x7fd6('0x4d')]){_0x311abf[_0x7fd6('0x4c')]=_[_0x7fd6('0x4e')](_0x311abf[_0x7fd6('0x4c')],{'$or':_[_0x7fd6('0x3f')](_0x3c2b67,function(_0xab30de){if(_0xab30de[_0x7fd6('0x41')]!==_0x7fd6('0x4f')){var _0x44c292={};_0x44c292[_0xab30de['name']]={'$like':'%'+_0x25fc22[_0x7fd6('0x46')][_0x7fd6('0x4d')]+'%'};return _0x44c292;}})});}_0x311abf=_[_0x7fd6('0x4e')]({},_0x311abf,_0x25fc22['options']);var _0x5ca6a8={'where':_0x311abf[_0x7fd6('0x4c')]};return db['FaxAccount'][_0x7fd6('0x33')](_0x5ca6a8)[_0x7fd6('0x20')](function(_0x38f61a){_0x4e4958[_0x7fd6('0x33')]=_0x38f61a;if(_0x25fc22['query'][_0x7fd6('0x50')]){_0x311abf[_0x7fd6('0x51')]=[{'all':!![]}];}return db[_0x7fd6('0x52')][_0x7fd6('0x53')](_0x311abf);})[_0x7fd6('0x20')](function(_0x25feb6){_0x4e4958['rows']=_0x25feb6;return _0x4e4958;})['then'](respondWithFilteredResult(_0x60994,_0x311abf))[_0x7fd6('0x2b')](handleError(_0x60994,null));};exports[_0x7fd6('0x54')]=function(_0x49fd55,_0x2f66b3){var _0x4250f6={'raw':![],'where':{'id':_0x49fd55[_0x7fd6('0x55')]['id']},'include':[{'model':db['Pause'],'as':'mandatoryDispositionPause'}]},_0x43e08e={};_0x43e08e[_0x7fd6('0x43')]=_[_0x7fd6('0x44')](db['FaxAccount'][_0x7fd6('0x40')]);_0x43e08e['query']=_[_0x7fd6('0x44')](_0x49fd55[_0x7fd6('0x46')]);_0x43e08e[_0x7fd6('0x45')]=_[_0x7fd6('0x48')](_0x43e08e[_0x7fd6('0x43')],_0x43e08e[_0x7fd6('0x46')]);_0x4250f6[_0x7fd6('0x47')]=_[_0x7fd6('0x48')](_0x43e08e['model'],qs[_0x7fd6('0x56')](_0x49fd55[_0x7fd6('0x46')][_0x7fd6('0x56')]));_0x4250f6[_0x7fd6('0x47')]=_0x4250f6[_0x7fd6('0x47')][_0x7fd6('0x57')]?_0x4250f6['attributes']:_0x43e08e['model'];if(_0x49fd55[_0x7fd6('0x46')]['includeAll']){_0x4250f6[_0x7fd6('0x51')]=[{'all':!![]}];}_0x4250f6=_[_0x7fd6('0x4e')]({},_0x4250f6,_0x49fd55[_0x7fd6('0x58')]);return db[_0x7fd6('0x52')][_0x7fd6('0x59')](_0x4250f6)[_0x7fd6('0x20')](handleEntityNotFound(_0x2f66b3,null))['then'](respondWithResult(_0x2f66b3,null))[_0x7fd6('0x2b')](handleError(_0x2f66b3,null));};exports[_0x7fd6('0x5a')]=function(_0x46c2f3,_0x48e748){return db['FaxAccount'][_0x7fd6('0x5a')](_0x46c2f3[_0x7fd6('0x5b')],{})['then'](function(_0x6eec01){var _0x3eb13d=_0x46c2f3[_0x7fd6('0x5c')][_0x7fd6('0x37')]({'plain':!![]});if(!_0x3eb13d)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3eb13d[_0x7fd6('0x5d')]===_0x7fd6('0x5c')){var _0x46ca78=_0x6eec01[_0x7fd6('0x37')]({'plain':!![]});var _0x24249f='FaxAccounts';return db[_0x7fd6('0x5e')]['find']({'where':{'name':_0x24249f,'userProfileId':_0x3eb13d[_0x7fd6('0x5f')]},'raw':!![]})[_0x7fd6('0x20')](function(_0x4d4984){if(_0x4d4984&&_0x4d4984['autoAssociation']===0x0){return db['UserProfileResource'][_0x7fd6('0x5a')]({'name':_0x46ca78[_0x7fd6('0x3b')],'resourceId':_0x46ca78['id'],'type':_0x4d4984[_0x7fd6('0x3b')],'sectionId':_0x4d4984['id']},{})['then'](function(){return _0x6eec01;});}else{return _0x6eec01;}})['catch'](function(_0x537d31){logger['error'](_0x7fd6('0x60'),_0x537d31);throw _0x537d31;});}return _0x6eec01;})[_0x7fd6('0x20')](respondWithResult(_0x48e748,0xc9))[_0x7fd6('0x2b')](handleError(_0x48e748,null));};exports['update']=function(_0x4c6ef8,_0x5b12ae){if(_0x4c6ef8[_0x7fd6('0x5b')]['id']){delete _0x4c6ef8['body']['id'];}return db[_0x7fd6('0x52')][_0x7fd6('0x59')]({'where':{'id':_0x4c6ef8[_0x7fd6('0x55')]['id']},'include':[{'model':db[_0x7fd6('0x3d')],'as':_0x7fd6('0x3e')}]})[_0x7fd6('0x20')](handleEntityNotFound(_0x5b12ae,null))[_0x7fd6('0x20')](saveUpdates(_0x4c6ef8[_0x7fd6('0x5b')],null))[_0x7fd6('0x20')](respondWithResult(_0x5b12ae,null))[_0x7fd6('0x2b')](handleError(_0x5b12ae,null));};exports[_0x7fd6('0x36')]=function(_0x47f7e7,_0xc03583){return db[_0x7fd6('0x52')]['find']({'where':{'id':_0x47f7e7[_0x7fd6('0x55')]['id']}})['then'](handleEntityNotFound(_0xc03583,null))['then'](removeEntity(_0xc03583,null))['catch'](handleError(_0xc03583,null));};exports[_0x7fd6('0x61')]=function(_0x568768,_0x10f017){return db[_0x7fd6('0x52')][_0x7fd6('0x61')]()[_0x7fd6('0x20')](respondWithResult(_0x10f017,null))['catch'](handleError(_0x10f017,null));};exports[_0x7fd6('0x62')]=function(_0x18449b,_0x199e50,_0x4b054d){if(_0x18449b[_0x7fd6('0x5b')]['id']){delete _0x18449b[_0x7fd6('0x5b')]['id'];}return db['FaxAccount'][_0x7fd6('0x59')]({'where':{'id':_0x18449b[_0x7fd6('0x55')]['id']}})[_0x7fd6('0x20')](handleEntityNotFound(_0x199e50,null))[_0x7fd6('0x20')](function(_0x2879a4){if(_0x2879a4){_0x18449b[_0x7fd6('0x5b')][_0x7fd6('0x63')]=_0x2879a4['id'];return db[_0x7fd6('0x64')][_0x7fd6('0x5a')](_0x18449b[_0x7fd6('0x5b')]);}})[_0x7fd6('0x20')](respondWithResult(_0x199e50,null))[_0x7fd6('0x2b')](handleError(_0x199e50,null));};exports[_0x7fd6('0x65')]=function(_0x16110c,_0x4a74fb,_0x3f36c8){var _0x3b1090={'raw':![],'where':{}};var _0x372b26={};var _0x27cffc={'count':0x0,'rows':[]};return db['FaxAccount'][_0x7fd6('0x66')]({'where':{'id':_0x16110c[_0x7fd6('0x55')]['id']}})['then'](handleEntityNotFound(_0x4a74fb,null))['then'](function(_0x50260f){if(_0x50260f){_0x372b26[_0x7fd6('0x43')]=_[_0x7fd6('0x44')](db[_0x7fd6('0x64')][_0x7fd6('0x40')]);_0x372b26['query']=_[_0x7fd6('0x44')](_0x16110c['query']);_0x372b26[_0x7fd6('0x45')]=_['intersection'](_0x372b26[_0x7fd6('0x43')],_0x372b26['query']);_0x3b1090[_0x7fd6('0x47')]=_['intersection'](_0x372b26['model'],qs['fields'](_0x16110c['query']['fields']));_0x3b1090[_0x7fd6('0x47')]=_0x3b1090[_0x7fd6('0x47')][_0x7fd6('0x57')]?_0x3b1090[_0x7fd6('0x47')]:_0x372b26[_0x7fd6('0x43')];if(!_0x16110c[_0x7fd6('0x46')][_0x7fd6('0x49')](_0x7fd6('0x4a'))){_0x3b1090['limit']=qs[_0x7fd6('0x32')](_0x16110c[_0x7fd6('0x46')][_0x7fd6('0x32')]);_0x3b1090['offset']=qs[_0x7fd6('0x30')](_0x16110c['query'][_0x7fd6('0x30')]);}_0x3b1090[_0x7fd6('0x67')]=qs[_0x7fd6('0x4b')](_0x16110c[_0x7fd6('0x46')][_0x7fd6('0x4b')]);_0x3b1090[_0x7fd6('0x4c')]=qs[_0x7fd6('0x45')](_[_0x7fd6('0x68')](_0x16110c[_0x7fd6('0x46')],_0x372b26['filters']));_0x3b1090[_0x7fd6('0x4c')][_0x7fd6('0x63')]=_0x50260f['id'];if(_0x16110c[_0x7fd6('0x46')]['filter']){_0x3b1090[_0x7fd6('0x4c')]=_[_0x7fd6('0x4e')](_0x3b1090['where'],{'$or':_['map'](_0x3b1090[_0x7fd6('0x47')],function(_0x3a29bc){var _0x3b627f={};_0x3b627f[_0x3a29bc]={'$like':'%'+_0x16110c['query'][_0x7fd6('0x4d')]+'%'};return _0x3b627f;})});}_0x3b1090=_[_0x7fd6('0x4e')]({},_0x3b1090,_0x16110c[_0x7fd6('0x58')]);return db[_0x7fd6('0x64')][_0x7fd6('0x33')]({'where':_0x3b1090[_0x7fd6('0x4c')]})[_0x7fd6('0x20')](function(_0x387cbc){_0x27cffc[_0x7fd6('0x33')]=_0x387cbc;if(_0x16110c[_0x7fd6('0x46')][_0x7fd6('0x50')]){_0x3b1090['include']=[{'all':!![]}];}return db['Disposition']['findAll'](_0x3b1090);})[_0x7fd6('0x20')](function(_0x20a621){_0x27cffc[_0x7fd6('0x69')]=_0x20a621;return _0x27cffc;});}})[_0x7fd6('0x20')](respondWithFilteredResult(_0x4a74fb,_0x3b1090))[_0x7fd6('0x2b')](handleError(_0x4a74fb,null));};exports[_0x7fd6('0x6a')]=function(_0x2290ed,_0x5f2e6e,_0xa21456){return db['FaxAccount'][_0x7fd6('0x59')]({'where':{'id':_0x2290ed[_0x7fd6('0x55')]['id']}})[_0x7fd6('0x20')](handleEntityNotFound(_0x5f2e6e,null))[_0x7fd6('0x20')](function(_0x29e8fb){if(_0x29e8fb){return _0x29e8fb[_0x7fd6('0x6a')](_0x2290ed[_0x7fd6('0x46')]['ids']);}})[_0x7fd6('0x20')](respondWithStatusCode(_0x5f2e6e,null))['catch'](handleError(_0x5f2e6e,null));};exports['addAnswer']=function(_0x94aa6a,_0x389a85,_0x5804c5){if(_0x94aa6a[_0x7fd6('0x5b')]['id']){delete _0x94aa6a[_0x7fd6('0x5b')]['id'];}return db[_0x7fd6('0x52')]['find']({'where':{'id':_0x94aa6a['params']['id']}})[_0x7fd6('0x20')](handleEntityNotFound(_0x389a85,null))[_0x7fd6('0x20')](function(_0x4d3b92){if(_0x4d3b92){_0x94aa6a['body'][_0x7fd6('0x63')]=_0x4d3b92['id'];return db[_0x7fd6('0x6b')][_0x7fd6('0x5a')](_0x94aa6a[_0x7fd6('0x5b')]);}})['then'](respondWithResult(_0x389a85,null))[_0x7fd6('0x2b')](handleError(_0x389a85,null));};exports[_0x7fd6('0x6c')]=function(_0x20e155,_0x5f18af,_0x4573da){var _0x4c0f07={'raw':![],'where':{}};var _0x1290ac={};var _0x11d285={'count':0x0,'rows':[]};return db[_0x7fd6('0x52')]['findOne']({'where':{'id':_0x20e155[_0x7fd6('0x55')]['id']}})['then'](handleEntityNotFound(_0x5f18af,null))['then'](function(_0x497bf9){if(_0x497bf9){_0x1290ac[_0x7fd6('0x43')]=_[_0x7fd6('0x44')](db['CannedAnswer'][_0x7fd6('0x40')]);_0x1290ac[_0x7fd6('0x46')]=_[_0x7fd6('0x44')](_0x20e155['query']);_0x1290ac[_0x7fd6('0x45')]=_[_0x7fd6('0x48')](_0x1290ac[_0x7fd6('0x43')],_0x1290ac[_0x7fd6('0x46')]);_0x4c0f07['attributes']=_[_0x7fd6('0x48')](_0x1290ac[_0x7fd6('0x43')],qs[_0x7fd6('0x56')](_0x20e155[_0x7fd6('0x46')][_0x7fd6('0x56')]));_0x4c0f07['attributes']=_0x4c0f07[_0x7fd6('0x47')][_0x7fd6('0x57')]?_0x4c0f07[_0x7fd6('0x47')]:_0x1290ac['model'];if(!_0x20e155[_0x7fd6('0x46')][_0x7fd6('0x49')](_0x7fd6('0x4a'))){_0x4c0f07[_0x7fd6('0x32')]=qs['limit'](_0x20e155[_0x7fd6('0x46')][_0x7fd6('0x32')]);_0x4c0f07[_0x7fd6('0x30')]=qs['offset'](_0x20e155['query'][_0x7fd6('0x30')]);}_0x4c0f07[_0x7fd6('0x67')]=qs[_0x7fd6('0x4b')](_0x20e155[_0x7fd6('0x46')]['sort']);_0x4c0f07['where']=qs[_0x7fd6('0x45')](_[_0x7fd6('0x68')](_0x20e155[_0x7fd6('0x46')],_0x1290ac['filters']));_0x4c0f07['where'][_0x7fd6('0x63')]=_0x497bf9['id'];if(_0x20e155['query'][_0x7fd6('0x4d')]){_0x4c0f07[_0x7fd6('0x4c')]=_[_0x7fd6('0x4e')](_0x4c0f07[_0x7fd6('0x4c')],{'$or':_[_0x7fd6('0x3f')](_0x4c0f07[_0x7fd6('0x47')],function(_0x84e515){var _0x1ebe98={};_0x1ebe98[_0x84e515]={'$like':'%'+_0x20e155[_0x7fd6('0x46')][_0x7fd6('0x4d')]+'%'};return _0x1ebe98;})});}_0x4c0f07=_[_0x7fd6('0x4e')]({},_0x4c0f07,_0x20e155['options']);return db[_0x7fd6('0x6b')][_0x7fd6('0x33')]({'where':_0x4c0f07[_0x7fd6('0x4c')]})[_0x7fd6('0x20')](function(_0x1ce1ec){_0x11d285[_0x7fd6('0x33')]=_0x1ce1ec;if(_0x20e155[_0x7fd6('0x46')][_0x7fd6('0x50')]){_0x4c0f07[_0x7fd6('0x51')]=[{'all':!![]}];}return db['CannedAnswer'][_0x7fd6('0x53')](_0x4c0f07);})[_0x7fd6('0x20')](function(_0x599d8b){_0x11d285[_0x7fd6('0x69')]=_0x599d8b;return _0x11d285;});}})['then'](respondWithFilteredResult(_0x5f18af,_0x4c0f07))[_0x7fd6('0x2b')](handleError(_0x5f18af,null));};exports['removeAnswers']=function(_0x359c5a,_0x365b4c,_0x337469){return db['FaxAccount'][_0x7fd6('0x59')]({'where':{'id':_0x359c5a[_0x7fd6('0x55')]['id']}})['then'](handleEntityNotFound(_0x365b4c,null))[_0x7fd6('0x20')](function(_0x344dde){if(_0x344dde){return _0x344dde[_0x7fd6('0x6d')](_0x359c5a['query'][_0x7fd6('0x6e')]);}})[_0x7fd6('0x20')](respondWithStatusCode(_0x365b4c,null))[_0x7fd6('0x2b')](handleError(_0x365b4c,null));};exports[_0x7fd6('0x6f')]=function(_0x3127e6,_0x44f58d,_0x1fec1b){return db['FaxInteraction'][_0x7fd6('0x59')]({'where':{'id':_0x3127e6[_0x7fd6('0x55')]['id']}})[_0x7fd6('0x20')](handleEntityNotFound(_0x44f58d,null))['then'](function(_0xb12180){if(_0xb12180){return _0xb12180[_0x7fd6('0x6f')](_0x3127e6[_0x7fd6('0x5b')][_0x7fd6('0x6e')],_[_0x7fd6('0x70')](_0x3127e6[_0x7fd6('0x5b')],['ids','id'])||{});}})['then'](respondWithResult(_0x44f58d,null))['catch'](handleError(_0x44f58d,null));};exports[_0x7fd6('0x71')]=function(_0x54dc89,_0x2bf2d0,_0x11a9b6){var _0x50ce35={'raw':![],'where':{}};var _0xc80689={};var _0x2d0fe9={'count':0x0,'rows':[]};return db[_0x7fd6('0x52')][_0x7fd6('0x66')]({'where':{'id':_0x54dc89['params']['id']}})[_0x7fd6('0x20')](handleEntityNotFound(_0x2bf2d0,null))[_0x7fd6('0x20')](function(_0x130331){if(_0x130331){_0xc80689[_0x7fd6('0x43')]=_[_0x7fd6('0x44')](db[_0x7fd6('0x72')][_0x7fd6('0x40')]);_0xc80689['query']=_[_0x7fd6('0x44')](_0x54dc89[_0x7fd6('0x46')]);_0xc80689[_0x7fd6('0x45')]=_[_0x7fd6('0x48')](_0xc80689[_0x7fd6('0x43')],_0xc80689[_0x7fd6('0x46')]);_0x50ce35['attributes']=_[_0x7fd6('0x48')](_0xc80689[_0x7fd6('0x43')],qs[_0x7fd6('0x56')](_0x54dc89[_0x7fd6('0x46')][_0x7fd6('0x56')]));_0x50ce35['attributes']=_0x50ce35[_0x7fd6('0x47')]['length']?_0x50ce35[_0x7fd6('0x47')]:_0xc80689[_0x7fd6('0x43')];if(!_0x54dc89['query']['hasOwnProperty'](_0x7fd6('0x4a'))){_0x50ce35['limit']=qs[_0x7fd6('0x32')](_0x54dc89[_0x7fd6('0x46')][_0x7fd6('0x32')]);_0x50ce35[_0x7fd6('0x30')]=qs['offset'](_0x54dc89[_0x7fd6('0x46')][_0x7fd6('0x30')]);}_0x50ce35['order']=qs[_0x7fd6('0x4b')](_0x54dc89[_0x7fd6('0x46')][_0x7fd6('0x4b')]);_0x50ce35['where']=qs[_0x7fd6('0x45')](_[_0x7fd6('0x68')](_0x54dc89['query'],_0xc80689[_0x7fd6('0x45')]));_0x50ce35[_0x7fd6('0x4c')][_0x7fd6('0x63')]=_0x130331['id'];if(_0x54dc89[_0x7fd6('0x46')][_0x7fd6('0x4d')]){_0x50ce35[_0x7fd6('0x4c')]=_[_0x7fd6('0x4e')](_0x50ce35[_0x7fd6('0x4c')],{'$or':_[_0x7fd6('0x3f')](_0x50ce35[_0x7fd6('0x47')],function(_0x3b1121){var _0xf45e55={};_0xf45e55[_0x3b1121]={'$like':'%'+_0x54dc89[_0x7fd6('0x46')][_0x7fd6('0x4d')]+'%'};return _0xf45e55;})});}_0x50ce35=_[_0x7fd6('0x4e')]({},_0x50ce35,_0x54dc89['options']);return db['FaxInteraction'][_0x7fd6('0x33')]({'where':_0x50ce35[_0x7fd6('0x4c')]})[_0x7fd6('0x20')](function(_0x53c3f7){_0x2d0fe9[_0x7fd6('0x33')]=_0x53c3f7;if(_0x54dc89[_0x7fd6('0x46')]['includeAll']){_0x50ce35[_0x7fd6('0x51')]=[{'model':db[_0x7fd6('0x73')],'as':_0x7fd6('0x74'),'required':![]},{'model':db[_0x7fd6('0x75')],'as':'Owner','attributes':[_0x7fd6('0x3b'),_0x7fd6('0x76'),_0x7fd6('0x77')],'required':![]},{'model':db[_0x7fd6('0x78')],'as':_0x7fd6('0x79'),'attributes':['id',_0x7fd6('0x3b'),_0x7fd6('0x7a')],'where':_0x54dc89['query']['tag']?{'id':_0x54dc89[_0x7fd6('0x46')][_0x7fd6('0x7b')]}:undefined,'required':_0x54dc89[_0x7fd6('0x46')]['tag']?!![]:![]}];}return db[_0x7fd6('0x72')][_0x7fd6('0x53')](_0x50ce35);})['then'](function(_0x332946){_0x2d0fe9[_0x7fd6('0x69')]=_0x332946;return _0x2d0fe9;});}})[_0x7fd6('0x20')](respondWithFilteredResult(_0x2bf2d0,_0x50ce35))[_0x7fd6('0x2b')](handleError(_0x2bf2d0,null));};exports[_0x7fd6('0x7c')]=function(_0x199312,_0x121c9f,_0x318b93){return db['FaxAccount'][_0x7fd6('0x66')]({'where':{'id':_0x199312[_0x7fd6('0x55')]['id']}})['then'](handleEntityNotFound(_0x121c9f,null))[_0x7fd6('0x20')](function(_0x58669e){if(_0x58669e){return db['sequelize'][_0x7fd6('0x7d')](function(_0x3b8c5e){return db[_0x7fd6('0x7e')]['destroy']({'where':{'FaxAccountId':_0x199312['params']['id']},'transaction':_0x3b8c5e})[_0x7fd6('0x20')](function(_0x475e8c){var _0x1a7091=_['map'](_0x199312[_0x7fd6('0x5b')],function(_0x500028){_0x500028[_0x7fd6('0x63')]=_0x199312['params']['id'];return _0x500028;});return db[_0x7fd6('0x7e')]['bulkCreate'](_0x1a7091,{'transaction':_0x3b8c5e});});})[_0x7fd6('0x20')](function(){return db[_0x7fd6('0x7e')][_0x7fd6('0x7f')]({'where':{'FaxAccountId':_0x199312[_0x7fd6('0x55')]['id']},'order':_0x7fd6('0x80')});});}})['then'](respondWithResult(_0x121c9f,null))[_0x7fd6('0x2b')](handleError(_0x121c9f,null));};exports['getApplications']=function(_0x5a6078,_0x2c2ef3,_0x354d93){var _0x4a3bd2={};var _0x65addd={};var _0x4940e5;var _0x114d00;return db['FaxAccount'][_0x7fd6('0x66')]({'where':{'id':_0x5a6078[_0x7fd6('0x55')]['id']}})['then'](handleEntityNotFound(_0x2c2ef3,null))['then'](function(_0x5055b9){if(_0x5055b9){_0x4940e5=_0x5055b9;_0x65addd[_0x7fd6('0x43')]=_[_0x7fd6('0x44')](db[_0x7fd6('0x7e')]['rawAttributes']);_0x65addd[_0x7fd6('0x46')]=_[_0x7fd6('0x44')](_0x5a6078[_0x7fd6('0x46')]);_0x65addd['filters']=_['intersection'](_0x65addd['model'],_0x65addd[_0x7fd6('0x46')]);_0x4a3bd2['attributes']=_[_0x7fd6('0x48')](_0x65addd[_0x7fd6('0x43')],qs[_0x7fd6('0x56')](_0x5a6078[_0x7fd6('0x46')]['fields']));_0x4a3bd2[_0x7fd6('0x47')]=_0x4a3bd2['attributes'][_0x7fd6('0x57')]?_0x4a3bd2['attributes']:_0x65addd[_0x7fd6('0x43')];_0x4a3bd2[_0x7fd6('0x67')]=qs[_0x7fd6('0x4b')](_0x5a6078['query'][_0x7fd6('0x4b')]);_0x4a3bd2[_0x7fd6('0x4c')]=qs[_0x7fd6('0x45')](_['pick'](_0x5a6078['query'],_0x65addd[_0x7fd6('0x45')]));if(_0x5a6078[_0x7fd6('0x46')][_0x7fd6('0x4d')]){_0x4a3bd2[_0x7fd6('0x4c')]=_[_0x7fd6('0x4e')](_0x4a3bd2[_0x7fd6('0x4c')],{'$or':_[_0x7fd6('0x3f')](_0x4a3bd2[_0x7fd6('0x47')],function(_0x3e249d){var _0x47dd2c={};_0x47dd2c[_0x3e249d]={'$like':'%'+_0x5a6078['query'][_0x7fd6('0x4d')]+'%'};return _0x47dd2c;})});}_0x4a3bd2=_[_0x7fd6('0x4e')]({},_0x4a3bd2,_0x5a6078[_0x7fd6('0x58')]);return _0x4940e5[_0x7fd6('0x81')](_0x4a3bd2);}})[_0x7fd6('0x20')](function(_0x1c0a8c){if(_0x1c0a8c){_0x114d00=_0x1c0a8c[_0x7fd6('0x57')];if(!_0x5a6078[_0x7fd6('0x46')][_0x7fd6('0x49')]('nolimit')){_0x4a3bd2[_0x7fd6('0x32')]=qs['limit'](_0x5a6078[_0x7fd6('0x46')][_0x7fd6('0x32')]);_0x4a3bd2['offset']=qs[_0x7fd6('0x30')](_0x5a6078[_0x7fd6('0x46')][_0x7fd6('0x30')]);}return _0x4940e5[_0x7fd6('0x81')](_0x4a3bd2);}})[_0x7fd6('0x20')](function(_0xe31d6e){if(_0xe31d6e){return _0xe31d6e?{'count':_0x114d00,'rows':_0xe31d6e}:null;}})[_0x7fd6('0x20')](respondWithResult(_0x2c2ef3,null))[_0x7fd6('0x2b')](handleError(_0x2c2ef3,null));};function Extension(_0x4342bb,_0x4b28c4,_0x45e7eb,_0x3d3feb){this['context']=_0x7fd6('0x82');this[_0x7fd6('0x83')]=_0x4342bb[_0x7fd6('0x84')];this[_0x7fd6('0x85')]=_0x3d3feb;this[_0x7fd6('0x41')]='system';this[_0x7fd6('0x86')]=_0x7fd6('0x87');this[_0x7fd6('0x63')]=_0x4342bb['id'];this[_0x7fd6('0x80')]=_0x4b28c4;this[_0x7fd6('0x88')]=_0x45e7eb;}function createExtensionsReciveFax(_0x1ca05b){var _0x45abd3=0x1;var _0x381e88=[];_0x381e88['push'](new Extension(_0x1ca05b,_0x45abd3,'','Answer'));_0x45abd3+=0x1;_0x381e88[_0x7fd6('0x89')](new Extension(_0x1ca05b,_0x45abd3,_0x7fd6('0x8a'),_0x7fd6('0x8b')));_0x45abd3+=0x1;for(var _0xb9d406 in _0x1ca05b){if(_0x1ca05b['hasOwnProperty'](_0xb9d406)&&(_0xb9d406===_0x7fd6('0x8c')||_0xb9d406==='localstationid'||_0xb9d406===_0x7fd6('0x8d')||_0xb9d406==='faxdetect'||_0xb9d406==='headerinfo'||_0xb9d406==='maxrate'||_0xb9d406==='minrate'||_0xb9d406===_0x7fd6('0x8e')||_0xb9d406===_0x7fd6('0x8f'))){_0x381e88['push'](new Extension(_0x1ca05b,_0x45abd3,_0x7fd6('0x90')+_0xb9d406+')='+_0x1ca05b[_0xb9d406],'Set'));_0x45abd3+=0x1;}}_0x381e88[_0x7fd6('0x89')](new Extension(_0x1ca05b,_0x45abd3,'6',_0x7fd6('0x91')));_0x45abd3+=0x1;_0x381e88['push'](new Extension(_0x1ca05b,_0x45abd3,_0x7fd6('0x92'),_0x7fd6('0x93')));_0x45abd3=0x0;return _0x381e88;}exports[_0x7fd6('0x94')]=function(_0x3baaca,_0x3d0bbc,_0x50266e){var _0x247199;return db['sequelize'][_0x7fd6('0x7d')](function(_0x20d43a){return db[_0x7fd6('0x52')][_0x7fd6('0x5a')](_0x3baaca['body'],{'transaction':_0x20d43a})[_0x7fd6('0x20')](function(_0x377b0c){_0x247199=_0x377b0c['get']({'plain':!![]});return db[_0x7fd6('0x95')][_0x7fd6('0x96')](createExtensionsReciveFax(_0x247199),{'transaction':_0x20d43a});});})[_0x7fd6('0x20')](function(){return _0x247199;})[_0x7fd6('0x20')](respondWithResult(_0x3d0bbc,null))['catch'](handleError(_0x3d0bbc,null));};exports['updateAccountApplications']=function(_0x150d7e,_0x35cb24,_0x32929b){var _0x456bec;return db['sequelize']['transaction'](function(_0x5c47f8){return db[_0x7fd6('0x52')][_0x7fd6('0x35')](_0x150d7e['body'],{'where':{'id':_0x150d7e[_0x7fd6('0x5b')]['id']},'transaction':_0x5c47f8})['then'](function(_0xbfd7ce){return db[_0x7fd6('0x95')][_0x7fd6('0x36')]({'where':{'FaxAccountId':_0x150d7e[_0x7fd6('0x5b')]['id']},'transaction':_0x5c47f8})[_0x7fd6('0x20')](function(_0x47c6bc){return db[_0x7fd6('0x95')]['bulkCreate'](createExtensionsReciveFax(_[_0x7fd6('0x70')](_0x150d7e[_0x7fd6('0x5b')],[_0x7fd6('0x97'),_0x7fd6('0x42'),_0x7fd6('0x98'),'updatedAt',_0x7fd6('0x99'),'ListId'])),{'transaction':_0x5c47f8});});});})[_0x7fd6('0x20')](function(){return db[_0x7fd6('0x52')][_0x7fd6('0x9a')](_0x150d7e[_0x7fd6('0x5b')]['id']);})[_0x7fd6('0x20')](respondWithResult(_0x35cb24,null))['catch'](handleError(_0x35cb24,null));};exports[_0x7fd6('0x9b')]=function(_0x338961,_0x3aec47,_0x3d8d22){var _0x2821d6={'raw':!![],'where':{}};var _0x321dac={};var _0x587ea6={'count':0x0,'rows':[]};return db[_0x7fd6('0x52')][_0x7fd6('0x66')]({'where':{'id':_0x338961[_0x7fd6('0x55')]['id']}})['then'](handleEntityNotFound(_0x3aec47,null))[_0x7fd6('0x20')](function(_0x226bad){if(_0x226bad){_0x321dac[_0x7fd6('0x43')]=_['keys'](db[_0x7fd6('0x9c')][_0x7fd6('0x40')]);_0x321dac[_0x7fd6('0x46')]=_['keys'](_0x338961[_0x7fd6('0x46')]);_0x321dac['filters']=_[_0x7fd6('0x48')](_0x321dac[_0x7fd6('0x43')],_0x321dac[_0x7fd6('0x46')]);_0x2821d6[_0x7fd6('0x47')]=_[_0x7fd6('0x48')](_0x321dac[_0x7fd6('0x43')],qs[_0x7fd6('0x56')](_0x338961[_0x7fd6('0x46')][_0x7fd6('0x56')]));_0x2821d6[_0x7fd6('0x47')]=_0x2821d6[_0x7fd6('0x47')][_0x7fd6('0x57')]?_0x2821d6[_0x7fd6('0x47')]:_0x321dac[_0x7fd6('0x43')];if(!_0x338961['query'][_0x7fd6('0x49')](_0x7fd6('0x4a'))){_0x2821d6[_0x7fd6('0x32')]=qs[_0x7fd6('0x32')](_0x338961['query']['limit']);_0x2821d6[_0x7fd6('0x30')]=qs[_0x7fd6('0x30')](_0x338961[_0x7fd6('0x46')][_0x7fd6('0x30')]);}_0x2821d6['order']=qs['sort'](_0x338961[_0x7fd6('0x46')][_0x7fd6('0x4b')]);_0x2821d6['where']=qs['filters'](_['pick'](_0x338961[_0x7fd6('0x46')],_0x321dac[_0x7fd6('0x45')]));_0x2821d6[_0x7fd6('0x4c')][_0x7fd6('0x63')]=_0x226bad['id'];if(_0x338961[_0x7fd6('0x46')][_0x7fd6('0x4d')]){_0x2821d6[_0x7fd6('0x4c')]=_[_0x7fd6('0x4e')](_0x2821d6[_0x7fd6('0x4c')],{'$or':_['map'](_0x2821d6[_0x7fd6('0x47')],function(_0x32e03a){var _0x1d32d8={};_0x1d32d8[_0x32e03a]={'$like':'%'+_0x338961[_0x7fd6('0x46')]['filter']+'%'};return _0x1d32d8;})});}if(_0x338961[_0x7fd6('0x46')][_0x7fd6('0x9d')]){var _0x3eaf82=_0x338961[_0x7fd6('0x46')][_0x7fd6('0x9d')][_0x7fd6('0x9e')](',');var _0x576a82={};_0x576a82[_0x3eaf82[0x0]]={'$gte':moment(_0x3eaf82[0x1])[_0x7fd6('0x9f')](_0x7fd6('0xa0'))};_0x2821d6[_0x7fd6('0x4c')]=_[_0x7fd6('0x4e')](_0x2821d6[_0x7fd6('0x4c')],_0x576a82);}_0x2821d6=_['merge']({},_0x2821d6,_0x338961[_0x7fd6('0x58')]);return db['FaxMessage'][_0x7fd6('0x33')]({'where':_0x2821d6[_0x7fd6('0x4c')]})['then'](function(_0x1f97bb){_0x587ea6[_0x7fd6('0x33')]=_0x1f97bb;if(_0x338961[_0x7fd6('0x46')][_0x7fd6('0x50')]){_0x2821d6[_0x7fd6('0x51')]=[{'all':!![]}];}return db[_0x7fd6('0x9c')][_0x7fd6('0x53')](_0x2821d6);})[_0x7fd6('0x20')](function(_0x2ce198){_0x587ea6[_0x7fd6('0x69')]=_0x2ce198;return _0x587ea6;});}})[_0x7fd6('0x20')](respondWithFilteredResult(_0x3aec47,_0x2821d6))[_0x7fd6('0x2b')](handleError(_0x3aec47,null));};exports['send']=function(_0x3f79d4,_0x3cfd99,_0x599334){var _0xb51fd,_0x318d86={},_0x471d84;if(_0x3f79d4['body']['to']){_0x471d84=_0x3f79d4[_0x7fd6('0x5b')]['to'][0x0];}return db['FaxAccount'][_0x7fd6('0x59')]({'where':{'id':_0x3f79d4[_0x7fd6('0x55')]['id']},'include':[{'model':db[_0x7fd6('0xa1')],'as':_0x7fd6('0xa2'),'include':[{'model':db[_0x7fd6('0x73')],'as':_0x7fd6('0xa3'),'where':{'fax':_0x471d84},'limit':0x1,'order':[[_0x7fd6('0xa4'),_0x7fd6('0xa5')]]}]}]})['then'](handleEntityNotFound(_0x3cfd99,null))[_0x7fd6('0x20')](function(_0x2fe2bf){_0xb51fd=_0x2fe2bf;if(_0x3f79d4[_0x7fd6('0x5b')][_0x7fd6('0xa6')]&&_0x3f79d4[_0x7fd6('0x5b')]['attachments'][_0x7fd6('0x57')]){for(var _0x305fab=0x0;_0x305fab<_0x3f79d4[_0x7fd6('0x5b')]['attachments'][_0x7fd6('0x57')];_0x305fab+=0x1){_0x3f79d4[_0x7fd6('0x5b')][_0x7fd6('0xa6')][_0x305fab]={'filename':_0x3f79d4[_0x7fd6('0x5b')]['attachments'][_0x305fab]['name'],'id':_0x3f79d4[_0x7fd6('0x5b')][_0x7fd6('0xa6')][_0x305fab]['id'],'path':path[_0x7fd6('0xa7')](config['root'],_0x7fd6('0xa8'),_0x3f79d4[_0x7fd6('0x5b')][_0x7fd6('0xa6')][_0x305fab][_0x7fd6('0xa9')])};}}return respondWithRpcPromise(_0x7fd6('0xaa'),_0x7fd6('0xaa'),{'FaxAccountId':_[_0x7fd6('0xab')](_0x3f79d4[_0x7fd6('0x55')]['id'])?undefined:_0x3f79d4[_0x7fd6('0x55')]['id'],'path':_[_0x7fd6('0xab')](_0x3f79d4[_0x7fd6('0x5b')][_0x7fd6('0xa6')][0x0][_0x7fd6('0xac')])?undefined:_0x3f79d4['body'][_0x7fd6('0xa6')][0x0]['path'],'fax':_[_0x7fd6('0xab')](_0x3f79d4[_0x7fd6('0x5b')]['to'][0x0])?undefined:_0x3f79d4['body']['to'][0x0]},client9002);})[_0x7fd6('0x20')](function(){if(_0xb51fd){if(_['isNil'](_0x3f79d4[_0x7fd6('0x5b')]['from'])){_0x3f79d4[_0x7fd6('0x5b')][_0x7fd6('0xad')]=util['format']('\x22%s\x22\x20<%s>',_0xb51fd[_0x7fd6('0x3b')],_0xb51fd[_0x7fd6('0xae')]);}if(_0xb51fd[_0x7fd6('0xa2')]){if(_0xb51fd[_0x7fd6('0xa2')][_0x7fd6('0xa3')][_0x7fd6('0x57')]){return _0xb51fd[_0x7fd6('0xa2')][_0x7fd6('0xa3')][0x0];}else{return db[_0x7fd6('0x73')][_0x7fd6('0x5a')](_[_0x7fd6('0x18')](_0x3f79d4[_0x7fd6('0x5b')],{'firstName':_0x3f79d4[_0x7fd6('0x5b')]['to'][0x0],'phone':_0x3f79d4[_0x7fd6('0x5b')]['to'][0x0],'fax':_0x3f79d4[_0x7fd6('0x5b')]['to'][0x0],'ListId':_0xb51fd[_0x7fd6('0xaf')]}));}}else{throw new Error(_0x7fd6('0xb0'));}}else{throw new Error(_0x7fd6('0xb1'));}})['then'](function(_0x1baaef){if(_0x1baaef){return db['FaxInteraction']['find']({'where':{'ContactId':_0x1baaef['id'],'closed':![],'FaxAccountId':_0xb51fd['id']}})[_0x7fd6('0x20')](function(_0xa47fbf){if(_0xa47fbf){return[_0xa47fbf,![]];}return db[_0x7fd6('0x72')]['create']({'UserId':_0x3f79d4[_0x7fd6('0x5c')]['id'],'ContactId':_0x1baaef['id'],'FaxAccountId':_0xb51fd['id'],'fax':_0x3f79d4['body']['to'][0x0],'firstMsgDirection':_0x7fd6('0xb2'),'Messages':[_[_0x7fd6('0x4e')](_0x3f79d4['body'],{'read':![],'body':_0x3f79d4['body'][_0x7fd6('0xa6')][0x0][_0x7fd6('0xb3')],'FaxAccountId':_0xb51fd['id'],'UserId':_0x3f79d4['user']['id'],'ContactId':_0x1baaef['id'],'AttachmentId':_0x3f79d4[_0x7fd6('0x5b')][_0x7fd6('0xa6')][0x0]['id']})]},{'include':[{'model':db[_0x7fd6('0x9c')],'as':_0x7fd6('0xb4')}]})[_0x7fd6('0x20')](function(_0x47c74b){return[_0x47c74b,!![]];});});}else{throw new Error('Contact\x20not\x20found');}})[_0x7fd6('0xb5')](function(_0x4b9dae,_0x15cbdb){if(_0x15cbdb){return _0x4b9dae;}return db[_0x7fd6('0x9c')][_0x7fd6('0x5a')]({'direction':_0x7fd6('0xb2'),'read':![],'body':_0x3f79d4[_0x7fd6('0x5b')][_0x7fd6('0xa6')][0x0]['filename'],'FaxAccountId':_0xb51fd['id'],'FaxInteractionId':_0x4b9dae['id'],'UserId':_0x3f79d4[_0x7fd6('0x5c')]['id'],'ContactId':_0x4b9dae[_0x7fd6('0xb6')],'AttachmentId':_0x3f79d4[_0x7fd6('0x5b')][_0x7fd6('0xa6')][0x0]['id']})[_0x7fd6('0x20')](function(_0x1b261d){_0x4b9dae[_0x7fd6('0xb7')][_0x7fd6('0xb4')]=[];_0x4b9dae[_0x7fd6('0xb7')][_0x7fd6('0xb4')][_0x7fd6('0x89')](_0x1b261d[_0x7fd6('0xb7')]);return _0x4b9dae;});})[_0x7fd6('0x20')](function(_0xb8771b){respondWithRpcPromise('SendFax','SendFax',{'FaxAccountId':_[_0x7fd6('0xab')](_0x3f79d4[_0x7fd6('0x55')]['id'])?undefined:_0x3f79d4[_0x7fd6('0x55')]['id'],'path':_['isNil'](_0x3f79d4[_0x7fd6('0x5b')]['attachments'][0x0][_0x7fd6('0xac')])?undefined:_0x3f79d4[_0x7fd6('0x5b')][_0x7fd6('0xa6')][0x0][_0x7fd6('0xac')],'fax':_[_0x7fd6('0xab')](_0x3f79d4[_0x7fd6('0x5b')]['to'][0x0])?undefined:_0x3f79d4[_0x7fd6('0x5b')]['to'][0x0],'AttachmentId':_0x3f79d4[_0x7fd6('0x5b')]['attachments'][0x0]['id']},client9002)[_0x7fd6('0x20')](function(_0x46b832){logger[_0x7fd6('0x21')]('SendFaxRpc,\x20%s',_0x46b832);})[_0x7fd6('0x2b')](function(_0x401148){logger[_0x7fd6('0x21')](_0x7fd6('0xb8'),_0x401148);});return _0xb8771b;})[_0x7fd6('0x20')](respondWithResult(_0x3cfd99,null))[_0x7fd6('0x2b')](handleError(_0x3cfd99,null));};exports[_0x7fd6('0xb9')]=function(_0x113d76,_0x1a5019,_0x222d57){return db[_0x7fd6('0x52')][_0x7fd6('0x59')]({'where':{'id':_0x113d76[_0x7fd6('0x55')]['id']}})['then'](handleEntityNotFound(_0x1a5019,null))['then'](function(_0x4999f5){if(_0x4999f5){return _0x4999f5[_0x7fd6('0xb9')](_0x113d76[_0x7fd6('0x5b')][_0x7fd6('0x6e')],_[_0x7fd6('0x70')](_0x113d76[_0x7fd6('0x5b')],[_0x7fd6('0x6e'),'id'])||{})[_0x7fd6('0xb5')](function(_0x2c1a41){for(var _0x56af3d=0x0;_0x56af3d<_0x113d76[_0x7fd6('0x5b')][_0x7fd6('0x6e')][_0x7fd6('0x57')];_0x56af3d+=0x1){socket['emit'](_0x7fd6('0xba'),{'UserId':Number(_0x113d76['body']['ids'][_0x56af3d]),'FaxAccountId':Number(_0x113d76[_0x7fd6('0x55')]['id'])});}return _0x2c1a41;});}})['then'](respondWithResult(_0x1a5019,null))[_0x7fd6('0x2b')](handleError(_0x1a5019,null));};exports[_0x7fd6('0xbb')]=function(_0x245ef6,_0x21b55a,_0x5e0fc1){return db[_0x7fd6('0x52')][_0x7fd6('0x59')]({'where':{'id':_0x245ef6[_0x7fd6('0x55')]['id']}})[_0x7fd6('0x20')](handleEntityNotFound(_0x21b55a,null))[_0x7fd6('0x20')](function(_0x1c6d70){if(_0x1c6d70){return _0x1c6d70[_0x7fd6('0xbb')](_0x245ef6[_0x7fd6('0x46')][_0x7fd6('0x6e')])[_0x7fd6('0x20')](function(){if(_[_0x7fd6('0xbc')](_0x245ef6[_0x7fd6('0x46')]['ids'])){for(var _0x5b5ee2=0x0;_0x5b5ee2<_0x245ef6['query'][_0x7fd6('0x6e')][_0x7fd6('0x57')];_0x5b5ee2+=0x1){socket[_0x7fd6('0xbd')]('userFaxAccount:remove',{'UserId':Number(_0x245ef6[_0x7fd6('0x46')][_0x7fd6('0x6e')][_0x5b5ee2]),'FaxAccountId':Number(_0x245ef6['params']['id'])});}}else{socket[_0x7fd6('0xbd')](_0x7fd6('0xbe'),{'UserId':Number(_0x245ef6[_0x7fd6('0x46')][_0x7fd6('0x6e')]),'FaxAccountId':Number(_0x245ef6[_0x7fd6('0x55')]['id'])});}});}})[_0x7fd6('0x20')](respondWithStatusCode(_0x21b55a,null))[_0x7fd6('0x2b')](handleError(_0x21b55a,null));};exports[_0x7fd6('0xbf')]=function(_0x283d02,_0x55e9f4,_0x3c976e){var _0x5c0009={};var _0x39b2e5={};var _0x1f0045;var _0xf1151b;return db[_0x7fd6('0x52')][_0x7fd6('0x66')]({'where':{'id':_0x283d02[_0x7fd6('0x55')]['id']}})[_0x7fd6('0x20')](handleEntityNotFound(_0x55e9f4,null))['then'](function(_0x3a3ead){if(_0x3a3ead){_0x1f0045=_0x3a3ead;_0x39b2e5[_0x7fd6('0x43')]=_[_0x7fd6('0x44')](db[_0x7fd6('0x75')][_0x7fd6('0x40')]);_0x39b2e5['query']=_[_0x7fd6('0x44')](_0x283d02[_0x7fd6('0x46')]);_0x39b2e5['filters']=_[_0x7fd6('0x48')](_0x39b2e5[_0x7fd6('0x43')],_0x39b2e5['query']);_0x5c0009['attributes']=_[_0x7fd6('0x48')](_0x39b2e5[_0x7fd6('0x43')],qs['fields'](_0x283d02[_0x7fd6('0x46')]['fields']));_0x5c0009[_0x7fd6('0x47')]=_0x5c0009[_0x7fd6('0x47')]['length']?_0x5c0009[_0x7fd6('0x47')]:_0x39b2e5['model'];_0x5c0009[_0x7fd6('0x67')]=qs['sort'](_0x283d02[_0x7fd6('0x46')][_0x7fd6('0x4b')]);_0x5c0009['where']=qs['filters'](_[_0x7fd6('0x68')](_0x283d02[_0x7fd6('0x46')],_0x39b2e5[_0x7fd6('0x45')]));if(_0x283d02['query'][_0x7fd6('0x4d')]){_0x5c0009[_0x7fd6('0x4c')]=_[_0x7fd6('0x4e')](_0x5c0009[_0x7fd6('0x4c')],{'$or':_['map'](_0x5c0009[_0x7fd6('0x47')],function(_0x509fcf){var _0x3d2ab8={};_0x3d2ab8[_0x509fcf]={'$like':'%'+_0x283d02[_0x7fd6('0x46')]['filter']+'%'};return _0x3d2ab8;})});}_0x5c0009=_[_0x7fd6('0x4e')]({},_0x5c0009,_0x283d02[_0x7fd6('0x58')]);return _0x1f0045[_0x7fd6('0xbf')](_0x5c0009);}})[_0x7fd6('0x20')](function(_0x3c8e22){if(_0x3c8e22){_0xf1151b=_0x3c8e22[_0x7fd6('0x57')];if(!_0x283d02[_0x7fd6('0x46')]['hasOwnProperty']('nolimit')){_0x5c0009[_0x7fd6('0x32')]=qs[_0x7fd6('0x32')](_0x283d02['query']['limit']);_0x5c0009[_0x7fd6('0x30')]=qs['offset'](_0x283d02[_0x7fd6('0x46')][_0x7fd6('0x30')]);}return _0x1f0045['getAgents'](_0x5c0009);}})[_0x7fd6('0x20')](function(_0x59e6d1){if(_0x59e6d1){return _0x59e6d1?{'count':_0xf1151b,'rows':_0x59e6d1}:null;}})[_0x7fd6('0x20')](respondWithResult(_0x55e9f4,null))[_0x7fd6('0x2b')](handleError(_0x55e9f4,null));};
\ No newline at end of file
index 49351e4..49bfe7c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd5b=['remove','emit','hasOwnProperty','hook','events','../../mysqldb','setMaxListeners','save','update'];(function(_0x1589dd,_0x2b9d22){var _0x1bddd1=function(_0x3687f8){while(--_0x3687f8){_0x1589dd['push'](_0x1589dd['shift']());}};_0x1bddd1(++_0x2b9d22);}(_0xfd5b,0x15a));var _0xbfd5=function(_0xbc2b14,_0x51b5ab){_0xbc2b14=_0xbc2b14-0x0;var _0x523b70=_0xfd5b[_0xbc2b14];return _0x523b70;};'use strict';var EventEmitter=require(_0xbfd5('0x0'));var FaxAccount=require(_0xbfd5('0x1'))['db']['FaxAccount'];var FaxAccountEvents=new EventEmitter();FaxAccountEvents[_0xbfd5('0x2')](0x0);var events={'afterCreate':_0xbfd5('0x3'),'afterUpdate':_0xbfd5('0x4'),'afterDestroy':_0xbfd5('0x5')};function emitEvent(_0x154a10){return function(_0x37c974,_0x1fb6ba,_0x16738b){FaxAccountEvents[_0xbfd5('0x6')](_0x154a10+':'+_0x37c974['id'],_0x37c974);FaxAccountEvents[_0xbfd5('0x6')](_0x154a10,_0x37c974);_0x16738b(null);};}for(var e in events){if(events[_0xbfd5('0x7')](e)){var event=events[e];FaxAccount[_0xbfd5('0x8')](e,emitEvent(event));}}module['exports']=FaxAccountEvents;
\ No newline at end of file
+var _0x24d6=['setMaxListeners','update','remove','emit','hasOwnProperty','hook','../../mysqldb','FaxAccount'];(function(_0x24578d,_0xa74849){var _0x284f03=function(_0x5307fd){while(--_0x5307fd){_0x24578d['push'](_0x24578d['shift']());}};_0x284f03(++_0xa74849);}(_0x24d6,0xee));var _0x624d=function(_0x4fbb15,_0x21be0c){_0x4fbb15=_0x4fbb15-0x0;var _0x436338=_0x24d6[_0x4fbb15];return _0x436338;};'use strict';var EventEmitter=require('events');var FaxAccount=require(_0x624d('0x0'))['db'][_0x624d('0x1')];var FaxAccountEvents=new EventEmitter();FaxAccountEvents[_0x624d('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x624d('0x3'),'afterDestroy':_0x624d('0x4')};function emitEvent(_0x5d5e70){return function(_0x3c6907,_0x4aca94,_0x44e7d2){FaxAccountEvents[_0x624d('0x5')](_0x5d5e70+':'+_0x3c6907['id'],_0x3c6907);FaxAccountEvents[_0x624d('0x5')](_0x5d5e70,_0x3c6907);_0x44e7d2(null);};}for(var e in events){if(events[_0x624d('0x6')](e)){var event=events[e];FaxAccount[_0x624d('0x7')](e,emitEvent(event));}}module['exports']=FaxAccountEvents;
\ No newline at end of file
index 15b770a..77d79d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc03b=['exports','define','FaxAccount','fax_accounts','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./faxAccount.attributes'];(function(_0x571e9e,_0x8b6e7f){var _0x1a9eab=function(_0xd84dd8){while(--_0xd84dd8){_0x571e9e['push'](_0x571e9e['shift']());}};_0x1a9eab(++_0x8b6e7f);}(_0xc03b,0xf2));var _0xbc03=function(_0x174a2d,_0x44cf92){_0x174a2d=_0x174a2d-0x0;var _0x3a58c3=_0xc03b[_0x174a2d];return _0x3a58c3;};'use strict';var _=require(_0xbc03('0x0'));var util=require(_0xbc03('0x1'));var logger=require(_0xbc03('0x2'))(_0xbc03('0x3'));var moment=require(_0xbc03('0x4'));var BPromise=require('bluebird');var rp=require(_0xbc03('0x5'));var fs=require('fs');var path=require(_0xbc03('0x6'));var rimraf=require(_0xbc03('0x7'));var config=require(_0xbc03('0x8'));var attributes=require(_0xbc03('0x9'));module[_0xbc03('0xa')]=function(_0x23135b,_0xd528ed){return _0x23135b[_0xbc03('0xb')](_0xbc03('0xc'),attributes,{'tableName':_0xbc03('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xfcb0=['moment','request-promise','path','rimraf','../../config/environment','./faxAccount.attributes','define','FaxAccount','fax_accounts','util','../../config/logger','api'];(function(_0x19f9e6,_0x4f59a6){var _0x45c862=function(_0x3447fb){while(--_0x3447fb){_0x19f9e6['push'](_0x19f9e6['shift']());}};_0x45c862(++_0x4f59a6);}(_0xfcb0,0x1a1));var _0x0fcb=function(_0x52fa13,_0x1813f3){_0x52fa13=_0x52fa13-0x0;var _0x1abdcb=_0xfcb0[_0x52fa13];return _0x1abdcb;};'use strict';var _=require('lodash');var util=require(_0x0fcb('0x0'));var logger=require(_0x0fcb('0x1'))(_0x0fcb('0x2'));var moment=require(_0x0fcb('0x3'));var BPromise=require('bluebird');var rp=require(_0x0fcb('0x4'));var fs=require('fs');var path=require(_0x0fcb('0x5'));var rimraf=require(_0x0fcb('0x6'));var config=require(_0x0fcb('0x7'));var attributes=require(_0x0fcb('0x8'));module['exports']=function(_0x572b42,_0x4dfcbb){return _0x572b42[_0x0fcb('0x9')](_0x0fcb('0xa'),attributes,{'tableName':_0x0fcb('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 110bda7..e398177 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc467=['include','map','model','attributes','NotifyFaxAccount','body','fax','CmContact','describe','Sequelize','ValidationError','difference','keys','createdAt','updatedAt','CompanyId','ListId','isNil','from','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','find','account','List','DESC','FaxApplication','applications','Applications','list','priority','asc','Contacts','length','contact','FaxInteraction','create','spread','autoclose','push','close','created','interaction','FaxMessage','ContactId','AttachmentId','UserId','User','name','unshift','agent','waitForTheAssignedAgent','startRouting','Start','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','redis','defaults','socket.io-emitter','./faxAccount.socket','register','request','then','info','FaxAccount,\x20%s,\x20%s','request\x20sent','debug','FaxAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetFaxAccount','FaxAccount','findAll','options','where','limit'];(function(_0x2571dc,_0x7493fc){var _0x3b0e9e=function(_0x378121){while(--_0x378121){_0x2571dc['push'](_0x2571dc['shift']());}};_0x3b0e9e(++_0x7493fc);}(_0xc467,0x149));var _0x7c46=function(_0x37a7c6,_0x3a84b6){_0x37a7c6=_0x37a7c6-0x0;var _0x539905=_0xc467[_0x37a7c6];return _0x539905;};'use strict';var _=require(_0x7c46('0x0'));var util=require(_0x7c46('0x1'));var moment=require(_0x7c46('0x2'));var BPromise=require('bluebird');var rs=require(_0x7c46('0x3'));var fs=require('fs');var Redis=require(_0x7c46('0x4'));var db=require(_0x7c46('0x5'))['db'];var utils=require(_0x7c46('0x6'));var logger=require(_0x7c46('0x7'))('rpc');var config=require(_0x7c46('0x8'));var jayson=require(_0x7c46('0x9'));var client=jayson[_0x7c46('0xa')]['http']({'port':0x232c});config[_0x7c46('0xb')]=_[_0x7c46('0xc')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x7c46('0xd'))(new Redis(config[_0x7c46('0xb')]));require(_0x7c46('0xe'))[_0x7c46('0xf')](socket);function respondWithRpcPromise(_0x49a8a2,_0xf388de,_0x17204f){return new BPromise(function(_0x431825,_0x5b8738){return client[_0x7c46('0x10')](_0x49a8a2,_0x17204f)[_0x7c46('0x11')](function(_0x38ed2b){logger[_0x7c46('0x12')](_0x7c46('0x13'),_0xf388de,_0x7c46('0x14'));logger[_0x7c46('0x15')](_0x7c46('0x16'),_0xf388de,_0x7c46('0x14'),JSON[_0x7c46('0x17')](_0x38ed2b));if(_0x38ed2b[_0x7c46('0x18')]){if(_0x38ed2b[_0x7c46('0x18')][_0x7c46('0x19')]===0x1f4){logger['error'](_0x7c46('0x13'),_0xf388de,_0x38ed2b[_0x7c46('0x18')]['message']);return _0x5b8738(_0x38ed2b['error'][_0x7c46('0x1a')]);}logger[_0x7c46('0x18')]('FaxAccount,\x20%s,\x20%s',_0xf388de,_0x38ed2b['error'][_0x7c46('0x1a')]);return _0x431825(_0x38ed2b[_0x7c46('0x18')]['message']);}else{logger['info']('FaxAccount,\x20%s,\x20%s',_0xf388de,_0x7c46('0x14'));_0x431825(_0x38ed2b[_0x7c46('0x1b')][_0x7c46('0x1a')]);}})[_0x7c46('0x1c')](function(_0x536683){logger[_0x7c46('0x18')](_0x7c46('0x13'),_0xf388de,_0x536683);_0x5b8738(_0x536683);});});}exports[_0x7c46('0x1d')]=function(_0x4df16f){var _0x67f7c5=this;return new Promise(function(_0x5e6b4f,_0x360fe7){return db[_0x7c46('0x1e')][_0x7c46('0x1f')]({'raw':_0x4df16f[_0x7c46('0x20')]?_0x4df16f['options']['raw']===undefined?!![]:![]:!![],'where':_0x4df16f[_0x7c46('0x20')]?_0x4df16f[_0x7c46('0x20')][_0x7c46('0x21')]||null:null,'attributes':_0x4df16f[_0x7c46('0x20')]?_0x4df16f[_0x7c46('0x20')]['attributes']||null:null,'limit':_0x4df16f[_0x7c46('0x20')]?_0x4df16f[_0x7c46('0x20')][_0x7c46('0x22')]||null:null,'include':_0x4df16f[_0x7c46('0x20')]?_0x4df16f['options'][_0x7c46('0x23')]?_[_0x7c46('0x24')](_0x4df16f[_0x7c46('0x20')]['include'],function(_0x5cf1e8){return{'model':db[_0x5cf1e8[_0x7c46('0x25')]],'as':_0x5cf1e8['as'],'attributes':_0x5cf1e8['attributes'],'include':_0x5cf1e8[_0x7c46('0x23')]?_[_0x7c46('0x24')](_0x5cf1e8[_0x7c46('0x23')],function(_0x123f1a){return{'model':db[_0x123f1a[_0x7c46('0x25')]],'as':_0x123f1a['as'],'attributes':_0x123f1a[_0x7c46('0x26')],'include':_0x123f1a[_0x7c46('0x23')]?_[_0x7c46('0x24')](_0x123f1a['include'],function(_0x5222a7){return{'model':db[_0x5222a7[_0x7c46('0x25')]],'as':_0x5222a7['as'],'attributes':_0x5222a7[_0x7c46('0x26')]};}):[]};}):[]};}):[]:[]})[_0x7c46('0x11')](function(_0x1f6574){logger[_0x7c46('0x12')](_0x7c46('0x1d'),_0x4df16f);logger[_0x7c46('0x15')](_0x7c46('0x1d'),_0x4df16f,JSON[_0x7c46('0x17')](_0x1f6574));_0x5e6b4f(_0x1f6574);})[_0x7c46('0x1c')](function(_0x590559){logger[_0x7c46('0x18')](_0x7c46('0x1d'),_0x590559[_0x7c46('0x1a')],_0x4df16f);_0x360fe7(_0x67f7c5[_0x7c46('0x18')](0x1f4,_0x590559[_0x7c46('0x1a')]));});});};exports[_0x7c46('0x27')]=function(_0x213044,_0x1a0d40,_0x1d7a1d){var _0x18c404=this;return new Promise(function(_0x4f668b,_0x5202a4){var _0x4f2b5c={'body':_0x213044[_0x7c46('0x28')],'channel':_0x7c46('0x29')};var _0x4656b4=[];var _0x79c29=[];var _0x10c9c3={};return db[_0x7c46('0x2a')][_0x7c46('0x2b')]()[_0x7c46('0x11')](function(_0x79d347){if(!_0x79d347){throw new db[(_0x7c46('0x2c'))][(_0x7c46('0x2d'))]('no\x20available\x20attributes');}_0x4656b4=_[_0x7c46('0x2e')](_[_0x7c46('0x2f')](_0x79d347),[_0x7c46('0x30'),_0x7c46('0x31')]);_0x79c29=_[_0x7c46('0x2e')](_[_0x7c46('0x2f')](_0x79d347),[_0x7c46('0x30'),_0x7c46('0x31'),_0x7c46('0x32'),_0x7c46('0x33')]);if(_0x213044[_0x7c46('0x28')]['id']){delete _0x213044[_0x7c46('0x28')]['id'];}if(_[_0x7c46('0x34')](_0x213044[_0x7c46('0x28')][_0x7c46('0x35')])){throw new db[(_0x7c46('0x2c'))]['ValidationError'](_0x7c46('0x36'));}if(_['isNil'](_0x213044[_0x7c46('0x28')][_0x7c46('0x28')])||_0x213044[_0x7c46('0x28')][_0x7c46('0x28')]===''){throw new db['Sequelize'][(_0x7c46('0x2d'))](_0x7c46('0x37'));}if(_[_0x7c46('0x34')](_0x213044[_0x7c46('0x28')][_0x7c46('0x38')])){throw new db[(_0x7c46('0x2c'))][(_0x7c46('0x2d'))]('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x79c29);}if(!_[_0x7c46('0x39')](_0x79c29,_0x213044[_0x7c46('0x28')]['mapKey'])){throw new db['Sequelize'][(_0x7c46('0x2d'))](_0x7c46('0x3a')+_0x79c29);}_0x10c9c3[_0x213044[_0x7c46('0x28')][_0x7c46('0x38')]]=_0x213044[_0x7c46('0x28')]['from'];})[_0x7c46('0x11')](function(){return db[_0x7c46('0x1e')][_0x7c46('0x3b')]({'where':{'id':_0x213044[_0x7c46('0x3c')]['id']},'include':[{'model':db['CmList'],'as':_0x7c46('0x3d'),'include':[{'model':db[_0x7c46('0x2a')],'as':'Contacts','where':_0x10c9c3,'limit':0x1,'order':[[_0x7c46('0x31'),_0x7c46('0x3e')]]}]},{'model':db[_0x7c46('0x3f')],'as':'Applications'}]});})[_0x7c46('0x11')](function(_0x491fae){if(_0x491fae&&_0x491fae[_0x7c46('0x3d')]){var _0x36266f=_0x491fae['get']({'plain':!![]});_0x4f2b5c[_0x7c46('0x3c')]=_0x36266f;_0x4f2b5c[_0x7c46('0x40')]=_0x36266f[_0x7c46('0x41')];_0x4f2b5c[_0x7c46('0x42')]=_0x36266f[_0x7c46('0x3d')];_0x4f2b5c[_0x7c46('0x40')]=_['orderBy'](_0x4f2b5c[_0x7c46('0x40')],[_0x7c46('0x43')],[_0x7c46('0x44')]);if(_0x4f2b5c['account'][_0x7c46('0x41')]){delete _0x4f2b5c[_0x7c46('0x3c')][_0x7c46('0x41')];}if(_0x4f2b5c['account'][_0x7c46('0x3d')]&&_0x4f2b5c['account']['List'][_0x7c46('0x45')][_0x7c46('0x46')]){return _0x4f2b5c[_0x7c46('0x3c')][_0x7c46('0x3d')][_0x7c46('0x45')][0x0];}var _0x579061=_[_0x7c46('0xc')](_0x213044[_0x7c46('0x28')],{'firstName':_0x213044[_0x7c46('0x28')][_0x7c46('0x35')],'ListId':_0x36266f[_0x7c46('0x33')]});_0x579061[_0x213044[_0x7c46('0x28')][_0x7c46('0x38')]]=_0x213044[_0x7c46('0x28')][_0x7c46('0x35')];return db[_0x7c46('0x2a')]['create'](_0x579061,{'fields':_0x4656b4,'raw':!![]});}})[_0x7c46('0x11')](function(_0x4e9367){_0x4f2b5c[_0x7c46('0x47')]=_0x4e9367;if(_0x4e9367){var _0x25d15e={'ContactId':_0x4e9367['id'],'FaxAccountId':_0x213044[_0x7c46('0x3c')]['id'],'fax':_0x4e9367[_0x7c46('0x29')]};return db[_0x7c46('0x48')][_0x7c46('0x3b')]({'where':{'ContactId':_0x4e9367['id'],'closed':![],'FaxAccountId':_0x213044[_0x7c46('0x3c')]['id']}})['then'](function(_0x2b20b5){if(_0x2b20b5){return[_0x2b20b5,![]];}return db[_0x7c46('0x48')][_0x7c46('0x49')](_0x25d15e)['then'](function(_0x385215){return[_0x385215,!![]];});});}else{throw new Error('Contact\x20not\x20found');}})[_0x7c46('0x4a')](function(_0x53a24d,_0x3d784e){var _0x152c96=_0x53a24d['get']({'plain':!![]});if(_0x3d784e){if(_0x4f2b5c[_0x7c46('0x3c')][_0x7c46('0x4b')]){_0x4f2b5c[_0x7c46('0x40')][_0x7c46('0x4c')]({'id':0x0,'priority':_0x4f2b5c[_0x7c46('0x40')][_0x7c46('0x46')]+0x1,'app':_0x7c46('0x4d'),'appdata':'unmanaged','interval':'*,*,*,*'});}_0x152c96[_0x7c46('0x4e')]=!![];}else{_0x152c96[_0x7c46('0x4e')]=![];}_0x4f2b5c[_0x7c46('0x4f')]=_0x152c96;return db[_0x7c46('0x50')]['create']({'body':_0x213044[_0x7c46('0x28')]['body'],'FaxAccountId':_0x213044['account']['id'],'FaxInteractionId':_0x53a24d['id'],'direction':'in','ContactId':_0x53a24d[_0x7c46('0x51')],'AttachmentId':_0x213044[_0x7c46('0x28')][_0x7c46('0x52')]});})[_0x7c46('0x11')](function(_0x241800){_0x4f2b5c['message']=_0x241800;if(_0x4f2b5c[_0x7c46('0x4f')][_0x7c46('0x53')]){return db[_0x7c46('0x54')][_0x7c46('0x3b')]({'attributes':['id',_0x7c46('0x55')],'where':{'id':_0x4f2b5c[_0x7c46('0x4f')][_0x7c46('0x53')]}})[_0x7c46('0x11')](function(_0x284e3c){if(_0x284e3c){_0x4f2b5c[_0x7c46('0x40')][_0x7c46('0x56')]({'id':0x0,'priority':0x0,'app':_0x7c46('0x57'),'appdata':_0x284e3c[_0x7c46('0x55')]+','+(_0x4f2b5c[_0x7c46('0x3c')][_0x7c46('0x58')]||0xa),'interval':'*,*,*,*'});}return respondWithRpcPromise('Start',_0x7c46('0x59'),_0x4f2b5c);});}return respondWithRpcPromise(_0x7c46('0x5a'),_0x7c46('0x59'),_0x4f2b5c);})[_0x7c46('0x11')](function(_0xc1dda9){_0x4f668b(_0xc1dda9);})[_0x7c46('0x1c')](function(_0x543a7a){_0x5202a4(_0x18c404[_0x7c46('0x18')](0x1f4,_0x543a7a[_0x7c46('0x1a')]));});});};
\ No newline at end of file
+var _0x3eb0=['spread','get','autoclose','push','close','unmanaged','created','interaction','ContactId','AttachmentId','UserId','unshift','name','*,*,*,*','Start','startRouting','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','./faxAccount.socket','register','request','then','request\x20sent','debug','FaxAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','FaxAccount,\x20%s,\x20%s','message','info','result','FaxAccount','findAll','options','raw','attributes','include','model','map','GetFaxAccount','catch','NotifyFaxAccount','body','describe','Sequelize','ValidationError','no\x20available\x20attributes','difference','keys','createdAt','updatedAt','CompanyId','isNil','from','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','find','account','CmList','List','Contacts','DESC','Applications','applications','list','orderBy','priority','asc','length','ListId','create','contact','FaxInteraction','Contact\x20not\x20found'];(function(_0x4e6ae6,_0x49dba6){var _0x23c108=function(_0x1bc103){while(--_0x1bc103){_0x4e6ae6['push'](_0x4e6ae6['shift']());}};_0x23c108(++_0x49dba6);}(_0x3eb0,0xc8));var _0x03eb=function(_0x519b9d,_0x351105){_0x519b9d=_0x519b9d-0x0;var _0x3cc1e5=_0x3eb0[_0x519b9d];return _0x3cc1e5;};'use strict';var _=require(_0x03eb('0x0'));var util=require(_0x03eb('0x1'));var moment=require(_0x03eb('0x2'));var BPromise=require(_0x03eb('0x3'));var rs=require(_0x03eb('0x4'));var fs=require('fs');var Redis=require(_0x03eb('0x5'));var db=require(_0x03eb('0x6'))['db'];var utils=require(_0x03eb('0x7'));var logger=require(_0x03eb('0x8'))(_0x03eb('0x9'));var config=require(_0x03eb('0xa'));var jayson=require(_0x03eb('0xb'));var client=jayson[_0x03eb('0xc')][_0x03eb('0xd')]({'port':0x232c});config[_0x03eb('0xe')]=_[_0x03eb('0xf')](config[_0x03eb('0xe')],{'host':_0x03eb('0x10'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x03eb('0xe')]));require(_0x03eb('0x11'))[_0x03eb('0x12')](socket);function respondWithRpcPromise(_0x26cd0c,_0xaa3aab,_0x2cab0b){return new BPromise(function(_0x4eba6b,_0x49e46f){return client[_0x03eb('0x13')](_0x26cd0c,_0x2cab0b)[_0x03eb('0x14')](function(_0x44052d){logger['info']('FaxAccount,\x20%s,\x20%s',_0xaa3aab,_0x03eb('0x15'));logger[_0x03eb('0x16')](_0x03eb('0x17'),_0xaa3aab,_0x03eb('0x15'),JSON[_0x03eb('0x18')](_0x44052d));if(_0x44052d['error']){if(_0x44052d[_0x03eb('0x19')][_0x03eb('0x1a')]===0x1f4){logger[_0x03eb('0x19')](_0x03eb('0x1b'),_0xaa3aab,_0x44052d['error'][_0x03eb('0x1c')]);return _0x49e46f(_0x44052d['error'][_0x03eb('0x1c')]);}logger[_0x03eb('0x19')](_0x03eb('0x1b'),_0xaa3aab,_0x44052d[_0x03eb('0x19')]['message']);return _0x4eba6b(_0x44052d[_0x03eb('0x19')]['message']);}else{logger[_0x03eb('0x1d')](_0x03eb('0x1b'),_0xaa3aab,_0x03eb('0x15'));_0x4eba6b(_0x44052d[_0x03eb('0x1e')][_0x03eb('0x1c')]);}})['catch'](function(_0x4c2cba){logger['error'](_0x03eb('0x1b'),_0xaa3aab,_0x4c2cba);_0x49e46f(_0x4c2cba);});});}exports['GetFaxAccount']=function(_0x20c62f){var _0x2dea7c=this;return new Promise(function(_0xbc227e,_0xbf094d){return db[_0x03eb('0x1f')][_0x03eb('0x20')]({'raw':_0x20c62f[_0x03eb('0x21')]?_0x20c62f[_0x03eb('0x21')][_0x03eb('0x22')]===undefined?!![]:![]:!![],'where':_0x20c62f['options']?_0x20c62f[_0x03eb('0x21')]['where']||null:null,'attributes':_0x20c62f[_0x03eb('0x21')]?_0x20c62f['options'][_0x03eb('0x23')]||null:null,'limit':_0x20c62f[_0x03eb('0x21')]?_0x20c62f[_0x03eb('0x21')]['limit']||null:null,'include':_0x20c62f['options']?_0x20c62f[_0x03eb('0x21')][_0x03eb('0x24')]?_['map'](_0x20c62f['options'][_0x03eb('0x24')],function(_0x27dff9){return{'model':db[_0x27dff9[_0x03eb('0x25')]],'as':_0x27dff9['as'],'attributes':_0x27dff9[_0x03eb('0x23')],'include':_0x27dff9['include']?_['map'](_0x27dff9['include'],function(_0x469342){return{'model':db[_0x469342[_0x03eb('0x25')]],'as':_0x469342['as'],'attributes':_0x469342[_0x03eb('0x23')],'include':_0x469342[_0x03eb('0x24')]?_[_0x03eb('0x26')](_0x469342[_0x03eb('0x24')],function(_0x33c4ba){return{'model':db[_0x33c4ba['model']],'as':_0x33c4ba['as'],'attributes':_0x33c4ba[_0x03eb('0x23')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1f70dd){logger[_0x03eb('0x1d')](_0x03eb('0x27'),_0x20c62f);logger['debug']('GetFaxAccount',_0x20c62f,JSON['stringify'](_0x1f70dd));_0xbc227e(_0x1f70dd);})[_0x03eb('0x28')](function(_0x427113){logger[_0x03eb('0x19')](_0x03eb('0x27'),_0x427113[_0x03eb('0x1c')],_0x20c62f);_0xbf094d(_0x2dea7c[_0x03eb('0x19')](0x1f4,_0x427113['message']));});});};exports[_0x03eb('0x29')]=function(_0x2278bf,_0x58ce8b,_0xa05c55){var _0x3ceb2c=this;return new Promise(function(_0x4c981d,_0x5715d0){var _0x413926={'body':_0x2278bf[_0x03eb('0x2a')],'channel':'fax'};var _0x351614=[];var _0x13606b=[];var _0x28c6e7={};return db['CmContact'][_0x03eb('0x2b')]()[_0x03eb('0x14')](function(_0x3dcd0a){if(!_0x3dcd0a){throw new db[(_0x03eb('0x2c'))][(_0x03eb('0x2d'))](_0x03eb('0x2e'));}_0x351614=_[_0x03eb('0x2f')](_[_0x03eb('0x30')](_0x3dcd0a),[_0x03eb('0x31'),_0x03eb('0x32')]);_0x13606b=_[_0x03eb('0x2f')](_[_0x03eb('0x30')](_0x3dcd0a),['createdAt',_0x03eb('0x32'),_0x03eb('0x33'),'ListId']);if(_0x2278bf[_0x03eb('0x2a')]['id']){delete _0x2278bf[_0x03eb('0x2a')]['id'];}if(_[_0x03eb('0x34')](_0x2278bf[_0x03eb('0x2a')][_0x03eb('0x35')])){throw new db[(_0x03eb('0x2c'))][(_0x03eb('0x2d'))](_0x03eb('0x36'));}if(_[_0x03eb('0x34')](_0x2278bf['body'][_0x03eb('0x2a')])||_0x2278bf[_0x03eb('0x2a')][_0x03eb('0x2a')]===''){throw new db['Sequelize'][(_0x03eb('0x2d'))](_0x03eb('0x37'));}if(_[_0x03eb('0x34')](_0x2278bf['body'][_0x03eb('0x38')])){throw new db[(_0x03eb('0x2c'))]['ValidationError']('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x13606b);}if(!_['includes'](_0x13606b,_0x2278bf[_0x03eb('0x2a')]['mapKey'])){throw new db['Sequelize'][(_0x03eb('0x2d'))](_0x03eb('0x39')+_0x13606b);}_0x28c6e7[_0x2278bf['body'][_0x03eb('0x38')]]=_0x2278bf[_0x03eb('0x2a')]['from'];})[_0x03eb('0x14')](function(){return db['FaxAccount'][_0x03eb('0x3a')]({'where':{'id':_0x2278bf[_0x03eb('0x3b')]['id']},'include':[{'model':db[_0x03eb('0x3c')],'as':_0x03eb('0x3d'),'include':[{'model':db['CmContact'],'as':_0x03eb('0x3e'),'where':_0x28c6e7,'limit':0x1,'order':[['updatedAt',_0x03eb('0x3f')]]}]},{'model':db['FaxApplication'],'as':_0x03eb('0x40')}]});})[_0x03eb('0x14')](function(_0x2de04a){if(_0x2de04a&&_0x2de04a[_0x03eb('0x3d')]){var _0x374de3=_0x2de04a['get']({'plain':!![]});_0x413926[_0x03eb('0x3b')]=_0x374de3;_0x413926[_0x03eb('0x41')]=_0x374de3[_0x03eb('0x40')];_0x413926[_0x03eb('0x42')]=_0x374de3['List'];_0x413926[_0x03eb('0x41')]=_[_0x03eb('0x43')](_0x413926[_0x03eb('0x41')],[_0x03eb('0x44')],[_0x03eb('0x45')]);if(_0x413926['account']['Applications']){delete _0x413926[_0x03eb('0x3b')][_0x03eb('0x40')];}if(_0x413926[_0x03eb('0x3b')][_0x03eb('0x3d')]&&_0x413926[_0x03eb('0x3b')][_0x03eb('0x3d')][_0x03eb('0x3e')][_0x03eb('0x46')]){return _0x413926[_0x03eb('0x3b')][_0x03eb('0x3d')]['Contacts'][0x0];}var _0x1d4618=_['defaults'](_0x2278bf[_0x03eb('0x2a')],{'firstName':_0x2278bf[_0x03eb('0x2a')]['from'],'ListId':_0x374de3[_0x03eb('0x47')]});_0x1d4618[_0x2278bf['body'][_0x03eb('0x38')]]=_0x2278bf[_0x03eb('0x2a')][_0x03eb('0x35')];return db['CmContact'][_0x03eb('0x48')](_0x1d4618,{'fields':_0x351614,'raw':!![]});}})[_0x03eb('0x14')](function(_0x1003f5){_0x413926[_0x03eb('0x49')]=_0x1003f5;if(_0x1003f5){var _0x68c9fd={'ContactId':_0x1003f5['id'],'FaxAccountId':_0x2278bf[_0x03eb('0x3b')]['id'],'fax':_0x1003f5['fax']};return db[_0x03eb('0x4a')][_0x03eb('0x3a')]({'where':{'ContactId':_0x1003f5['id'],'closed':![],'FaxAccountId':_0x2278bf[_0x03eb('0x3b')]['id']}})[_0x03eb('0x14')](function(_0x274657){if(_0x274657){return[_0x274657,![]];}return db[_0x03eb('0x4a')]['create'](_0x68c9fd)[_0x03eb('0x14')](function(_0x51edc4){return[_0x51edc4,!![]];});});}else{throw new Error(_0x03eb('0x4b'));}})[_0x03eb('0x4c')](function(_0x3f89a3,_0x5ecbad){var _0x13f228=_0x3f89a3[_0x03eb('0x4d')]({'plain':!![]});if(_0x5ecbad){if(_0x413926[_0x03eb('0x3b')][_0x03eb('0x4e')]){_0x413926['applications'][_0x03eb('0x4f')]({'id':0x0,'priority':_0x413926[_0x03eb('0x41')][_0x03eb('0x46')]+0x1,'app':_0x03eb('0x50'),'appdata':_0x03eb('0x51'),'interval':'*,*,*,*'});}_0x13f228[_0x03eb('0x52')]=!![];}else{_0x13f228[_0x03eb('0x52')]=![];}_0x413926[_0x03eb('0x53')]=_0x13f228;return db['FaxMessage'][_0x03eb('0x48')]({'body':_0x2278bf[_0x03eb('0x2a')][_0x03eb('0x2a')],'FaxAccountId':_0x2278bf[_0x03eb('0x3b')]['id'],'FaxInteractionId':_0x3f89a3['id'],'direction':'in','ContactId':_0x3f89a3[_0x03eb('0x54')],'AttachmentId':_0x2278bf[_0x03eb('0x2a')][_0x03eb('0x55')]});})[_0x03eb('0x14')](function(_0x5ac30c){_0x413926['message']=_0x5ac30c;if(_0x413926[_0x03eb('0x53')][_0x03eb('0x56')]){return db['User'][_0x03eb('0x3a')]({'attributes':['id','name'],'where':{'id':_0x413926['interaction'][_0x03eb('0x56')]}})[_0x03eb('0x14')](function(_0x5b24a9){if(_0x5b24a9){_0x413926[_0x03eb('0x41')][_0x03eb('0x57')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x5b24a9[_0x03eb('0x58')]+','+(_0x413926[_0x03eb('0x3b')]['waitForTheAssignedAgent']||0xa),'interval':_0x03eb('0x59')});}return respondWithRpcPromise(_0x03eb('0x5a'),'startRouting',_0x413926);});}return respondWithRpcPromise(_0x03eb('0x5a'),_0x03eb('0x5b'),_0x413926);})[_0x03eb('0x14')](function(_0x3e9823){_0x4c981d(_0x3e9823);})[_0x03eb('0x28')](function(_0x161e04){_0x5715d0(_0x3ceb2c[_0x03eb('0x19')](0x1f4,_0x161e04['message']));});});};
\ No newline at end of file
index 28bb099..a9e2887 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd9f=['save','remove','update','emit','removeListener','register','length','./faxAccount.events'];(function(_0x3f1710,_0x3877a2){var _0x528458=function(_0x4b5d0f){while(--_0x4b5d0f){_0x3f1710['push'](_0x3f1710['shift']());}};_0x528458(++_0x3877a2);}(_0xfd9f,0x167));var _0xffd9=function(_0x5eb782,_0x32b544){_0x5eb782=_0x5eb782-0x0;var _0x7c28b=_0xfd9f[_0x5eb782];return _0x7c28b;};'use strict';var FaxAccountEvents=require(_0xffd9('0x0'));var events=[_0xffd9('0x1'),_0xffd9('0x2'),_0xffd9('0x3')];function createListener(_0x4cf183,_0x2139ba){return function(_0x54ed32){_0x2139ba[_0xffd9('0x4')](_0x4cf183,_0x54ed32);};}function removeListener(_0x350a68,_0x3ea352){return function(){FaxAccountEvents[_0xffd9('0x5')](_0x350a68,_0x3ea352);};}exports[_0xffd9('0x6')]=function(_0x3e282d){for(var _0x289f8e=0x0,_0x48bd8a=events[_0xffd9('0x7')];_0x289f8e<_0x48bd8a;_0x289f8e++){var _0x3fae98=events[_0x289f8e];var _0x487ca0=createListener('faxAccount:'+_0x3fae98,_0x3e282d);FaxAccountEvents['on'](_0x3fae98,_0x487ca0);}};
\ No newline at end of file
+var _0x9e1c=['register','length','faxAccount:','save','remove','emit','removeListener'];(function(_0x2bf9a4,_0x364ce6){var _0x321a80=function(_0x48433a){while(--_0x48433a){_0x2bf9a4['push'](_0x2bf9a4['shift']());}};_0x321a80(++_0x364ce6);}(_0x9e1c,0xf1));var _0xc9e1=function(_0x2abdbe,_0x27b378){_0x2abdbe=_0x2abdbe-0x0;var _0x31b5dc=_0x9e1c[_0x2abdbe];return _0x31b5dc;};'use strict';var FaxAccountEvents=require('./faxAccount.events');var events=[_0xc9e1('0x0'),_0xc9e1('0x1'),'update'];function createListener(_0x4309c8,_0x597a61){return function(_0x5cacb5){_0x597a61[_0xc9e1('0x2')](_0x4309c8,_0x5cacb5);};}function removeListener(_0x49327f,_0x29052a){return function(){FaxAccountEvents[_0xc9e1('0x3')](_0x49327f,_0x29052a);};}exports[_0xc9e1('0x4')]=function(_0x442134){for(var _0x11e155=0x0,_0x393a9d=events[_0xc9e1('0x5')];_0x11e155<_0x393a9d;_0x11e155++){var _0xfcea9f=events[_0x11e155];var _0x250f4b=createListener(_0xc9e1('0x6')+_0xfcea9f,_0x442134);FaxAccountEvents['on'](_0xfcea9f,_0x250f4b);}};
\ No newline at end of file
index 65b4ff4..2ea3081 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(_0x52b839,_0x27dbe9){var _0x521c91=function(_0x3e8bf1){while(--_0x3e8bf1){_0x52b839['push'](_0x52b839['shift']());}};_0x521c91(++_0x27dbe9);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2d8fc2,_0x1c461d){_0x2d8fc2=_0x2d8fc2-0x0;var _0x3a9e53=_0xa9e0[_0x2d8fc2];return _0x3a9e53;};'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(_0xc2c89,_0x22c701){var _0x4f9032=function(_0x1fbeae){while(--_0x1fbeae){_0xc2c89['push'](_0xc2c89['shift']());}};_0x4f9032(++_0x22c701);}(_0xa9e0,0x123));var _0x0a9e=function(_0xc6be3a,_0x540e05){_0xc6be3a=_0xc6be3a-0x0;var _0x56a310=_0xa9e0[_0xc6be3a];return _0x56a310;};'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 5f81a65..955d371 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3da7=['TEXT','sequelize','INTEGER','STRING','noop'];(function(_0x2ba00c,_0x10f136){var _0x4a4853=function(_0x42add8){while(--_0x42add8){_0x2ba00c['push'](_0x2ba00c['shift']());}};_0x4a4853(++_0x10f136);}(_0x3da7,0xe2));var _0x73da=function(_0x5ddaac,_0x2697a8){_0x5ddaac=_0x5ddaac-0x0;var _0x2a9c58=_0x3da7[_0x5ddaac];return _0x2a9c58;};'use strict';var Sequelize=require(_0x73da('0x0'));module['exports']={'priority':{'type':Sequelize[_0x73da('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0x73da('0x2')],'allowNull':![],'defaultValue':_0x73da('0x3')},'appdata':{'type':Sequelize[_0x73da('0x4')]()},'description':{'type':Sequelize[_0x73da('0x2')]},'interval':{'type':Sequelize[_0x73da('0x2')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
+var _0x0be3=['TEXT','*,*,*,*','sequelize','exports','INTEGER','STRING','noop'];(function(_0x281a3d,_0x54da07){var _0x5888bf=function(_0x4c78ef){while(--_0x4c78ef){_0x281a3d['push'](_0x281a3d['shift']());}};_0x5888bf(++_0x54da07);}(_0x0be3,0xa3));var _0x30be=function(_0x116573,_0x234dde){_0x116573=_0x116573-0x0;var _0x4274e0=_0x0be3[_0x116573];return _0x4274e0;};'use strict';var Sequelize=require(_0x30be('0x0'));module[_0x30be('0x1')]={'priority':{'type':Sequelize[_0x30be('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0x30be('0x3')],'allowNull':![],'defaultValue':_0x30be('0x4')},'appdata':{'type':Sequelize[_0x30be('0x5')]()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0x30be('0x3')],'defaultValue':_0x30be('0x6')}};
\ No newline at end of file
index c0ed518..e21f155 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x760c=['model','query','filters','attributes','intersection','fields','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','show','params','length','create','body','update','find','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','undefined','count','offset','limit','set','apply','reject','save','then','destroy','error','name','send','index','map','FaxApplication','rawAttributes','fieldName','type'];(function(_0x56d590,_0x4da1e7){var _0x5c5955=function(_0x47104a){while(--_0x47104a){_0x56d590['push'](_0x56d590['shift']());}};_0x5c5955(++_0x4da1e7);}(_0x760c,0x1e2));var _0xc760=function(_0x178e48,_0x3c9509){_0x178e48=_0x178e48-0x0;var _0x440d7e=_0x760c[_0x178e48];return _0x440d7e;};'use strict';var emlformat=require(_0xc760('0x0'));var rimraf=require(_0xc760('0x1'));var zipdir=require(_0xc760('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xc760('0x3'));var BPromise=require(_0xc760('0x4'));var Mustache=require(_0xc760('0x5'));var util=require(_0xc760('0x6'));var path=require(_0xc760('0x7'));var sox=require(_0xc760('0x8'));var csv=require(_0xc760('0x9'));var ejs=require(_0xc760('0xa'));var fs=require('fs');var fs_extra=require(_0xc760('0xb'));var _=require('lodash');var squel=require(_0xc760('0xc'));var crypto=require(_0xc760('0xd'));var jsforce=require(_0xc760('0xe'));var deskjs=require(_0xc760('0xf'));var toCsv=require(_0xc760('0x9'));var querystring=require(_0xc760('0x10'));var Papa=require(_0xc760('0x11'));var Redis=require(_0xc760('0x12'));var authService=require(_0xc760('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0xc760('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xc760('0x15'))(_0xc760('0x16'));var utils=require(_0xc760('0x17'));var config=require(_0xc760('0x18'));var licenseUtil=require(_0xc760('0x19'));var db=require(_0xc760('0x1a'))['db'];function respondWithStatusCode(_0x596840,_0x12a956){_0x12a956=_0x12a956||0xcc;return function(_0x25fe10){if(_0x25fe10){return _0x596840[_0xc760('0x1b')](_0x12a956);}return _0x596840['status'](_0x12a956)[_0xc760('0x1c')]();};}function respondWithResult(_0x264fb0,_0x1612f9){_0x1612f9=_0x1612f9||0xc8;return function(_0x230c67){if(_0x230c67){return _0x264fb0[_0xc760('0x1d')](_0x1612f9)[_0xc760('0x1e')](_0x230c67);}};}function respondWithFilteredResult(_0x3855e6,_0x253b1d){return function(_0x237ad4){if(_0x237ad4){var _0x34f764=typeof _0x253b1d['offset']==='undefined'&&typeof _0x253b1d['limit']===_0xc760('0x1f');var _0x206aab=_0x237ad4[_0xc760('0x20')];var _0x3820c9=_0x34f764?0x0:_0x253b1d['offset'];var _0x1ea2a9=_0x34f764?_0x237ad4[_0xc760('0x20')]:_0x253b1d[_0xc760('0x21')]+_0x253b1d[_0xc760('0x22')];var _0x37a80a;if(_0x1ea2a9>=_0x206aab){_0x1ea2a9=_0x206aab;_0x37a80a=0xc8;}else{_0x37a80a=0xce;}_0x3855e6[_0xc760('0x1d')](_0x37a80a);return _0x3855e6[_0xc760('0x23')]('Content-Range',_0x3820c9+'-'+_0x1ea2a9+'/'+_0x206aab)[_0xc760('0x1e')](_0x237ad4);}return null;};}function patchUpdates(_0x12c765){return function(_0x7884f2){try{jsonpatch[_0xc760('0x24')](_0x7884f2,_0x12c765,!![]);}catch(_0x4a7113){return BPromise[_0xc760('0x25')](_0x4a7113);}return _0x7884f2[_0xc760('0x26')]();};}function saveUpdates(_0x4a63f2,_0x326a15){return function(_0x57dc40){if(_0x57dc40){return _0x57dc40['update'](_0x4a63f2)[_0xc760('0x27')](function(_0x1dab5d){return _0x1dab5d;});}return null;};}function removeEntity(_0xa2cc4b,_0x36c679){return function(_0x21d529){if(_0x21d529){return _0x21d529[_0xc760('0x28')]()[_0xc760('0x27')](function(){_0xa2cc4b[_0xc760('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x53c235,_0x20aa79){return function(_0x22c5a0){if(!_0x22c5a0){_0x53c235[_0xc760('0x1b')](0x194);}return _0x22c5a0;};}function handleError(_0x145c40,_0x12b139){_0x12b139=_0x12b139||0x1f4;return function(_0x573801){logger[_0xc760('0x29')](_0x573801['stack']);if(_0x573801[_0xc760('0x2a')]){delete _0x573801[_0xc760('0x2a')];}_0x145c40[_0xc760('0x1d')](_0x12b139)[_0xc760('0x2b')](_0x573801);};}exports[_0xc760('0x2c')]=function(_0x221965,_0x4a7b86){var _0x2dd9be={},_0x3abf6c={},_0x52d658={'count':0x0,'rows':[]};var _0x2b71e7=_[_0xc760('0x2d')](db[_0xc760('0x2e')][_0xc760('0x2f')],function(_0x50f7bf){return{'name':_0x50f7bf[_0xc760('0x30')],'type':_0x50f7bf[_0xc760('0x31')]['key']};});_0x3abf6c[_0xc760('0x32')]=_['map'](_0x2b71e7,_0xc760('0x2a'));_0x3abf6c[_0xc760('0x33')]=_['keys'](_0x221965[_0xc760('0x33')]);_0x3abf6c[_0xc760('0x34')]=_['intersection'](_0x3abf6c[_0xc760('0x32')],_0x3abf6c[_0xc760('0x33')]);_0x2dd9be[_0xc760('0x35')]=_[_0xc760('0x36')](_0x3abf6c[_0xc760('0x32')],qs[_0xc760('0x37')](_0x221965[_0xc760('0x33')][_0xc760('0x37')]));_0x2dd9be[_0xc760('0x35')]=_0x2dd9be[_0xc760('0x35')]['length']?_0x2dd9be['attributes']:_0x3abf6c[_0xc760('0x32')];if(!_0x221965['query'][_0xc760('0x38')]('nolimit')){_0x2dd9be[_0xc760('0x22')]=qs[_0xc760('0x22')](_0x221965[_0xc760('0x33')][_0xc760('0x22')]);_0x2dd9be[_0xc760('0x21')]=qs[_0xc760('0x21')](_0x221965[_0xc760('0x33')][_0xc760('0x21')]);}_0x2dd9be[_0xc760('0x39')]=qs[_0xc760('0x3a')](_0x221965[_0xc760('0x33')][_0xc760('0x3a')]);_0x2dd9be[_0xc760('0x3b')]=qs['filters'](_[_0xc760('0x3c')](_0x221965['query'],_0x3abf6c['filters']),_0x2b71e7);if(_0x221965[_0xc760('0x33')][_0xc760('0x3d')]){_0x2dd9be[_0xc760('0x3b')]=_[_0xc760('0x3e')](_0x2dd9be[_0xc760('0x3b')],{'$or':_[_0xc760('0x2d')](_0x2b71e7,function(_0x45c11f){if(_0x45c11f[_0xc760('0x31')]!==_0xc760('0x3f')){var _0x40c9ec={};_0x40c9ec[_0x45c11f['name']]={'$like':'%'+_0x221965['query'][_0xc760('0x3d')]+'%'};return _0x40c9ec;}})});}_0x2dd9be=_[_0xc760('0x3e')]({},_0x2dd9be,_0x221965[_0xc760('0x40')]);var _0x53e4e8={'where':_0x2dd9be[_0xc760('0x3b')]};return db['FaxApplication']['count'](_0x53e4e8)[_0xc760('0x27')](function(_0x553bb2){_0x52d658[_0xc760('0x20')]=_0x553bb2;if(_0x221965[_0xc760('0x33')][_0xc760('0x41')]){_0x2dd9be[_0xc760('0x42')]=[{'all':!![]}];}return db[_0xc760('0x2e')]['findAll'](_0x2dd9be);})[_0xc760('0x27')](function(_0x5c288a){_0x52d658[_0xc760('0x43')]=_0x5c288a;return _0x52d658;})['then'](respondWithFilteredResult(_0x4a7b86,_0x2dd9be))[_0xc760('0x44')](handleError(_0x4a7b86,null));};exports[_0xc760('0x45')]=function(_0x4ccb1e,_0x5c1a69){var _0x11e503={'raw':!![],'where':{'id':_0x4ccb1e[_0xc760('0x46')]['id']}},_0x241edd={};_0x241edd[_0xc760('0x32')]=_['keys'](db[_0xc760('0x2e')]['rawAttributes']);_0x241edd[_0xc760('0x33')]=_['keys'](_0x4ccb1e[_0xc760('0x33')]);_0x241edd[_0xc760('0x34')]=_[_0xc760('0x36')](_0x241edd[_0xc760('0x32')],_0x241edd[_0xc760('0x33')]);_0x11e503[_0xc760('0x35')]=_[_0xc760('0x36')](_0x241edd[_0xc760('0x32')],qs[_0xc760('0x37')](_0x4ccb1e[_0xc760('0x33')][_0xc760('0x37')]));_0x11e503[_0xc760('0x35')]=_0x11e503[_0xc760('0x35')][_0xc760('0x47')]?_0x11e503[_0xc760('0x35')]:_0x241edd[_0xc760('0x32')];if(_0x4ccb1e[_0xc760('0x33')][_0xc760('0x41')]){_0x11e503[_0xc760('0x42')]=[{'all':!![]}];}_0x11e503=_[_0xc760('0x3e')]({},_0x11e503,_0x4ccb1e[_0xc760('0x40')]);return db[_0xc760('0x2e')]['find'](_0x11e503)[_0xc760('0x27')](handleEntityNotFound(_0x5c1a69,null))[_0xc760('0x27')](respondWithResult(_0x5c1a69,null))[_0xc760('0x44')](handleError(_0x5c1a69,null));};exports[_0xc760('0x48')]=function(_0x2b98b9,_0x94cee4){return db[_0xc760('0x2e')][_0xc760('0x48')](_0x2b98b9[_0xc760('0x49')],{})[_0xc760('0x27')](respondWithResult(_0x94cee4,0xc9))[_0xc760('0x44')](handleError(_0x94cee4,null));};exports[_0xc760('0x4a')]=function(_0x4beebe,_0x25ef43){if(_0x4beebe[_0xc760('0x49')]['id']){delete _0x4beebe['body']['id'];}return db[_0xc760('0x2e')][_0xc760('0x4b')]({'where':{'id':_0x4beebe['params']['id']}})[_0xc760('0x27')](handleEntityNotFound(_0x25ef43,null))[_0xc760('0x27')](saveUpdates(_0x4beebe[_0xc760('0x49')],null))[_0xc760('0x27')](respondWithResult(_0x25ef43,null))[_0xc760('0x44')](handleError(_0x25ef43,null));};exports[_0xc760('0x28')]=function(_0x4a02c3,_0x3c0b72){return db[_0xc760('0x2e')]['find']({'where':{'id':_0x4a02c3['params']['id']}})['then'](handleEntityNotFound(_0x3c0b72,null))[_0xc760('0x27')](removeEntity(_0x3c0b72,null))[_0xc760('0x44')](handleError(_0x3c0b72,null));};
\ No newline at end of file
+var _0x9cda=['set','Content-Range','reject','save','update','then','destroy','error','name','send','index','map','FaxApplication','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','keys','include','find','create','body','eml-format','rimraf','fast-json-patch','request-promise','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x9cda,0x104));var _0xa9cd=function(_0x39ff15,_0x2842f5){_0x39ff15=_0x39ff15-0x0;var _0x26687a=_0x9cda[_0x39ff15];return _0x26687a;};'use strict';var emlformat=require(_0xa9cd('0x0'));var rimraf=require(_0xa9cd('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xa9cd('0x2'));var rp=require(_0xa9cd('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0xa9cd('0x4'));var csv=require(_0xa9cd('0x5'));var ejs=require(_0xa9cd('0x6'));var fs=require('fs');var fs_extra=require(_0xa9cd('0x7'));var _=require('lodash');var squel=require(_0xa9cd('0x8'));var crypto=require(_0xa9cd('0x9'));var jsforce=require(_0xa9cd('0xa'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xa9cd('0xb'));var Papa=require('papaparse');var Redis=require(_0xa9cd('0xc'));var authService=require('../../components/auth/service');var qs=require(_0xa9cd('0xd'));var as=require(_0xa9cd('0xe'));var hardwareService=require(_0xa9cd('0xf'));var logger=require(_0xa9cd('0x10'))('api');var utils=require(_0xa9cd('0x11'));var config=require(_0xa9cd('0x12'));var licenseUtil=require(_0xa9cd('0x13'));var db=require(_0xa9cd('0x14'))['db'];function respondWithStatusCode(_0xc3fb29,_0x36673e){_0x36673e=_0x36673e||0xcc;return function(_0x522577){if(_0x522577){return _0xc3fb29['sendStatus'](_0x36673e);}return _0xc3fb29[_0xa9cd('0x15')](_0x36673e)[_0xa9cd('0x16')]();};}function respondWithResult(_0x27d50e,_0x50fef0){_0x50fef0=_0x50fef0||0xc8;return function(_0x3f34a6){if(_0x3f34a6){return _0x27d50e['status'](_0x50fef0)[_0xa9cd('0x17')](_0x3f34a6);}};}function respondWithFilteredResult(_0x5f3f6f,_0x287cb0){return function(_0x2842d1){if(_0x2842d1){var _0x574ccc=typeof _0x287cb0[_0xa9cd('0x18')]===_0xa9cd('0x19')&&typeof _0x287cb0[_0xa9cd('0x1a')]===_0xa9cd('0x19');var _0x48ff01=_0x2842d1[_0xa9cd('0x1b')];var _0x4bac1c=_0x574ccc?0x0:_0x287cb0['offset'];var _0x5c15f1=_0x574ccc?_0x2842d1['count']:_0x287cb0['offset']+_0x287cb0[_0xa9cd('0x1a')];var _0x1b4ca9;if(_0x5c15f1>=_0x48ff01){_0x5c15f1=_0x48ff01;_0x1b4ca9=0xc8;}else{_0x1b4ca9=0xce;}_0x5f3f6f[_0xa9cd('0x15')](_0x1b4ca9);return _0x5f3f6f[_0xa9cd('0x1c')](_0xa9cd('0x1d'),_0x4bac1c+'-'+_0x5c15f1+'/'+_0x48ff01)[_0xa9cd('0x17')](_0x2842d1);}return null;};}function patchUpdates(_0xf059b4){return function(_0x3a74b7){try{jsonpatch['apply'](_0x3a74b7,_0xf059b4,!![]);}catch(_0x3b8d4f){return BPromise[_0xa9cd('0x1e')](_0x3b8d4f);}return _0x3a74b7[_0xa9cd('0x1f')]();};}function saveUpdates(_0x4f7cd2,_0x3249c4){return function(_0x21d188){if(_0x21d188){return _0x21d188[_0xa9cd('0x20')](_0x4f7cd2)[_0xa9cd('0x21')](function(_0x2f0a70){return _0x2f0a70;});}return null;};}function removeEntity(_0xa53fcf,_0x42c8fa){return function(_0x408d53){if(_0x408d53){return _0x408d53[_0xa9cd('0x22')]()[_0xa9cd('0x21')](function(){_0xa53fcf[_0xa9cd('0x15')](0xcc)[_0xa9cd('0x16')]();});}};}function handleEntityNotFound(_0x4140f9,_0x16d165){return function(_0x1cdf03){if(!_0x1cdf03){_0x4140f9['sendStatus'](0x194);}return _0x1cdf03;};}function handleError(_0x15a7b1,_0x13e4d3){_0x13e4d3=_0x13e4d3||0x1f4;return function(_0x4e3b47){logger[_0xa9cd('0x23')](_0x4e3b47['stack']);if(_0x4e3b47[_0xa9cd('0x24')]){delete _0x4e3b47['name'];}_0x15a7b1['status'](_0x13e4d3)[_0xa9cd('0x25')](_0x4e3b47);};}exports[_0xa9cd('0x26')]=function(_0x32a408,_0x126712){var _0x2b32a9={},_0x4a8095={},_0x52c95a={'count':0x0,'rows':[]};var _0xb1294e=_[_0xa9cd('0x27')](db[_0xa9cd('0x28')][_0xa9cd('0x29')],function(_0x4e93a6){return{'name':_0x4e93a6[_0xa9cd('0x2a')],'type':_0x4e93a6[_0xa9cd('0x2b')][_0xa9cd('0x2c')]};});_0x4a8095[_0xa9cd('0x2d')]=_[_0xa9cd('0x27')](_0xb1294e,_0xa9cd('0x24'));_0x4a8095['query']=_['keys'](_0x32a408[_0xa9cd('0x2e')]);_0x4a8095[_0xa9cd('0x2f')]=_[_0xa9cd('0x30')](_0x4a8095['model'],_0x4a8095['query']);_0x2b32a9[_0xa9cd('0x31')]=_[_0xa9cd('0x30')](_0x4a8095[_0xa9cd('0x2d')],qs[_0xa9cd('0x32')](_0x32a408[_0xa9cd('0x2e')][_0xa9cd('0x32')]));_0x2b32a9[_0xa9cd('0x31')]=_0x2b32a9[_0xa9cd('0x31')][_0xa9cd('0x33')]?_0x2b32a9[_0xa9cd('0x31')]:_0x4a8095[_0xa9cd('0x2d')];if(!_0x32a408[_0xa9cd('0x2e')][_0xa9cd('0x34')](_0xa9cd('0x35'))){_0x2b32a9['limit']=qs['limit'](_0x32a408[_0xa9cd('0x2e')][_0xa9cd('0x1a')]);_0x2b32a9[_0xa9cd('0x18')]=qs[_0xa9cd('0x18')](_0x32a408[_0xa9cd('0x2e')][_0xa9cd('0x18')]);}_0x2b32a9[_0xa9cd('0x36')]=qs[_0xa9cd('0x37')](_0x32a408[_0xa9cd('0x2e')][_0xa9cd('0x37')]);_0x2b32a9['where']=qs[_0xa9cd('0x2f')](_[_0xa9cd('0x38')](_0x32a408[_0xa9cd('0x2e')],_0x4a8095[_0xa9cd('0x2f')]),_0xb1294e);if(_0x32a408[_0xa9cd('0x2e')][_0xa9cd('0x39')]){_0x2b32a9[_0xa9cd('0x3a')]=_['merge'](_0x2b32a9[_0xa9cd('0x3a')],{'$or':_[_0xa9cd('0x27')](_0xb1294e,function(_0x504a25){if(_0x504a25[_0xa9cd('0x2b')]!==_0xa9cd('0x3b')){var _0x3d245d={};_0x3d245d[_0x504a25[_0xa9cd('0x24')]]={'$like':'%'+_0x32a408[_0xa9cd('0x2e')][_0xa9cd('0x39')]+'%'};return _0x3d245d;}})});}_0x2b32a9=_['merge']({},_0x2b32a9,_0x32a408[_0xa9cd('0x3c')]);var _0x1c948a={'where':_0x2b32a9['where']};return db[_0xa9cd('0x28')][_0xa9cd('0x1b')](_0x1c948a)[_0xa9cd('0x21')](function(_0x41de40){_0x52c95a['count']=_0x41de40;if(_0x32a408['query'][_0xa9cd('0x3d')]){_0x2b32a9['include']=[{'all':!![]}];}return db[_0xa9cd('0x28')][_0xa9cd('0x3e')](_0x2b32a9);})[_0xa9cd('0x21')](function(_0x483feb){_0x52c95a[_0xa9cd('0x3f')]=_0x483feb;return _0x52c95a;})[_0xa9cd('0x21')](respondWithFilteredResult(_0x126712,_0x2b32a9))[_0xa9cd('0x40')](handleError(_0x126712,null));};exports[_0xa9cd('0x41')]=function(_0x235194,_0x1abcdf){var _0x3ed1f0={'raw':!![],'where':{'id':_0x235194[_0xa9cd('0x42')]['id']}},_0x28f204={};_0x28f204[_0xa9cd('0x2d')]=_[_0xa9cd('0x43')](db[_0xa9cd('0x28')][_0xa9cd('0x29')]);_0x28f204[_0xa9cd('0x2e')]=_[_0xa9cd('0x43')](_0x235194[_0xa9cd('0x2e')]);_0x28f204[_0xa9cd('0x2f')]=_[_0xa9cd('0x30')](_0x28f204[_0xa9cd('0x2d')],_0x28f204[_0xa9cd('0x2e')]);_0x3ed1f0[_0xa9cd('0x31')]=_[_0xa9cd('0x30')](_0x28f204[_0xa9cd('0x2d')],qs[_0xa9cd('0x32')](_0x235194[_0xa9cd('0x2e')][_0xa9cd('0x32')]));_0x3ed1f0[_0xa9cd('0x31')]=_0x3ed1f0[_0xa9cd('0x31')][_0xa9cd('0x33')]?_0x3ed1f0[_0xa9cd('0x31')]:_0x28f204[_0xa9cd('0x2d')];if(_0x235194['query'][_0xa9cd('0x3d')]){_0x3ed1f0[_0xa9cd('0x44')]=[{'all':!![]}];}_0x3ed1f0=_['merge']({},_0x3ed1f0,_0x235194[_0xa9cd('0x3c')]);return db[_0xa9cd('0x28')][_0xa9cd('0x45')](_0x3ed1f0)[_0xa9cd('0x21')](handleEntityNotFound(_0x1abcdf,null))[_0xa9cd('0x21')](respondWithResult(_0x1abcdf,null))[_0xa9cd('0x40')](handleError(_0x1abcdf,null));};exports[_0xa9cd('0x46')]=function(_0xce46a,_0x3dc31a){return db[_0xa9cd('0x28')][_0xa9cd('0x46')](_0xce46a[_0xa9cd('0x47')],{})[_0xa9cd('0x21')](respondWithResult(_0x3dc31a,0xc9))[_0xa9cd('0x40')](handleError(_0x3dc31a,null));};exports[_0xa9cd('0x20')]=function(_0x1683c2,_0x13490e){if(_0x1683c2[_0xa9cd('0x47')]['id']){delete _0x1683c2[_0xa9cd('0x47')]['id'];}return db[_0xa9cd('0x28')][_0xa9cd('0x45')]({'where':{'id':_0x1683c2[_0xa9cd('0x42')]['id']}})['then'](handleEntityNotFound(_0x13490e,null))['then'](saveUpdates(_0x1683c2[_0xa9cd('0x47')],null))[_0xa9cd('0x21')](respondWithResult(_0x13490e,null))['catch'](handleError(_0x13490e,null));};exports[_0xa9cd('0x22')]=function(_0x4b52c0,_0x5a8092){return db[_0xa9cd('0x28')]['find']({'where':{'id':_0x4b52c0[_0xa9cd('0x42')]['id']}})['then'](handleEntityNotFound(_0x5a8092,null))[_0xa9cd('0x21')](removeEntity(_0x5a8092,null))[_0xa9cd('0x40')](handleError(_0x5a8092,null));};
\ No newline at end of file
index 0724e7e..d1cbf43 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x43eb=['path','rimraf','../../config/environment','exports','define','FaxApplication','fax_applications','utf8mb4','lodash','api','moment'];(function(_0x22943f,_0x33b25e){var _0xc270a7=function(_0x12345f){while(--_0x12345f){_0x22943f['push'](_0x22943f['shift']());}};_0xc270a7(++_0x33b25e);}(_0x43eb,0x97));var _0xb43e=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x43eb[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xb43e('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xb43e('0x1'));var moment=require(_0xb43e('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xb43e('0x3'));var rimraf=require(_0xb43e('0x4'));var config=require(_0xb43e('0x5'));var attributes=require('./faxApplication.attributes');module[_0xb43e('0x6')]=function(_0x4123b7,_0x365fc2){return _0x4123b7[_0xb43e('0x7')](_0xb43e('0x8'),attributes,{'tableName':_0xb43e('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xb43e('0xa'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0xd194=['../../config/environment','./faxApplication.attributes','exports','define','FaxApplication','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x16dfe2,_0x36e128){var _0x3a61a5=function(_0x534057){while(--_0x534057){_0x16dfe2['push'](_0x16dfe2['shift']());}};_0x3a61a5(++_0x36e128);}(_0xd194,0x1e7));var _0x4d19=function(_0x5345e1,_0x262bbb){_0x5345e1=_0x5345e1-0x0;var _0x4d2b34=_0xd194[_0x5345e1];return _0x4d2b34;};'use strict';var _=require(_0x4d19('0x0'));var util=require(_0x4d19('0x1'));var logger=require(_0x4d19('0x2'))(_0x4d19('0x3'));var moment=require(_0x4d19('0x4'));var BPromise=require(_0x4d19('0x5'));var rp=require(_0x4d19('0x6'));var fs=require('fs');var path=require(_0x4d19('0x7'));var rimraf=require(_0x4d19('0x8'));var config=require(_0x4d19('0x9'));var attributes=require(_0x4d19('0xa'));module[_0x4d19('0xb')]=function(_0x395c53,_0x30846b){return _0x395c53[_0x4d19('0xc')](_0x4d19('0xd'),attributes,{'tableName':'fax_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x4d19('0xe'),'collate':_0x4d19('0xf')});};
\ No newline at end of file
index 22a5194..c897b00 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xede3=['limit','debug','stringify','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','request\x20sent','FaxApplication,\x20%s,\x20%s,\x20%s','error','code','FaxApplication,\x20%s,\x20%s','message','result','catch','UpdateFaxApplication','body','options','raw','where','attributes'];(function(_0x49b8db,_0x3c2fb8){var _0x311d7f=function(_0x4b5ccc){while(--_0x4b5ccc){_0x49b8db['push'](_0x49b8db['shift']());}};_0x311d7f(++_0x3c2fb8);}(_0xede3,0xf3));var _0x3ede=function(_0x4563e3,_0x3a197e){_0x4563e3=_0x4563e3-0x0;var _0x54bdd3=_0xede3[_0x4563e3];return _0x54bdd3;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x3ede('0x0'));var BPromise=require(_0x3ede('0x1'));var rs=require(_0x3ede('0x2'));var fs=require('fs');var Redis=require(_0x3ede('0x3'));var db=require(_0x3ede('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x3ede('0x5'))(_0x3ede('0x6'));var config=require(_0x3ede('0x7'));var jayson=require(_0x3ede('0x8'));var client=jayson['client'][_0x3ede('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x58e26d,_0x20b663,_0x4d4071){return new BPromise(function(_0x199875,_0xcccda1){return client[_0x3ede('0xa')](_0x58e26d,_0x4d4071)[_0x3ede('0xb')](function(_0x3af4d7){logger[_0x3ede('0xc')]('FaxApplication,\x20%s,\x20%s',_0x20b663,_0x3ede('0xd'));logger['debug'](_0x3ede('0xe'),_0x20b663,_0x3ede('0xd'),JSON['stringify'](_0x3af4d7));if(_0x3af4d7['error']){if(_0x3af4d7[_0x3ede('0xf')][_0x3ede('0x10')]===0x1f4){logger[_0x3ede('0xf')](_0x3ede('0x11'),_0x20b663,_0x3af4d7[_0x3ede('0xf')][_0x3ede('0x12')]);return _0xcccda1(_0x3af4d7['error'][_0x3ede('0x12')]);}logger[_0x3ede('0xf')](_0x3ede('0x11'),_0x20b663,_0x3af4d7[_0x3ede('0xf')][_0x3ede('0x12')]);return _0x199875(_0x3af4d7[_0x3ede('0xf')]['message']);}else{logger['info'](_0x3ede('0x11'),_0x20b663,_0x3ede('0xd'));_0x199875(_0x3af4d7[_0x3ede('0x13')][_0x3ede('0x12')]);}})[_0x3ede('0x14')](function(_0x2f1b31){logger[_0x3ede('0xf')](_0x3ede('0x11'),_0x20b663,_0x2f1b31);_0xcccda1(_0x2f1b31);});});}exports[_0x3ede('0x15')]=function(_0xf24b82){var _0x28d7dc=this;return new Promise(function(_0x428333,_0x10a124){return db['FaxApplication']['update'](_0xf24b82[_0x3ede('0x16')],{'raw':_0xf24b82[_0x3ede('0x17')]?_0xf24b82['options'][_0x3ede('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xf24b82[_0x3ede('0x17')]?_0xf24b82[_0x3ede('0x17')][_0x3ede('0x19')]||null:null,'attributes':_0xf24b82[_0x3ede('0x17')]?_0xf24b82[_0x3ede('0x17')][_0x3ede('0x1a')]||null:null,'limit':_0xf24b82[_0x3ede('0x17')]?_0xf24b82[_0x3ede('0x17')][_0x3ede('0x1b')]||null:null})[_0x3ede('0xb')](function(_0x241a2d){logger['info'](_0x3ede('0x15'),_0xf24b82);logger[_0x3ede('0x1c')](_0x3ede('0x15'),_0xf24b82,JSON[_0x3ede('0x1d')](_0x241a2d));_0x428333(_0x241a2d);})[_0x3ede('0x14')](function(_0x51d052){logger['error'](_0x3ede('0x15'),_0x51d052[_0x3ede('0x12')],_0xf24b82);_0x10a124(_0x28d7dc[_0x3ede('0xf')](0x1f4,_0x51d052[_0x3ede('0x12')]));});});};
\ No newline at end of file
+var _0x291c=['FaxApplication','update','body','options','raw','where','attributes','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','FaxApplication,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','catch','UpdateFaxApplication'];(function(_0x5453a8,_0xf84d9b){var _0x392939=function(_0x31cd5c){while(--_0x31cd5c){_0x5453a8['push'](_0x5453a8['shift']());}};_0x392939(++_0xf84d9b);}(_0x291c,0xe0));var _0xc291=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0x291c[_0x59ee6f];return _0x4c0979;};'use strict';var _=require(_0xc291('0x0'));var util=require(_0xc291('0x1'));var moment=require(_0xc291('0x2'));var BPromise=require(_0xc291('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc291('0x4'));var db=require(_0xc291('0x5'))['db'];var utils=require(_0xc291('0x6'));var logger=require(_0xc291('0x7'))(_0xc291('0x8'));var config=require(_0xc291('0x9'));var jayson=require(_0xc291('0xa'));var client=jayson[_0xc291('0xb')][_0xc291('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x2b603d,_0x53a20c,_0x2fd37e){return new BPromise(function(_0xcb4be0,_0x374a0b){return client[_0xc291('0xd')](_0x2b603d,_0x2fd37e)[_0xc291('0xe')](function(_0xfe4a51){logger[_0xc291('0xf')](_0xc291('0x10'),_0x53a20c,_0xc291('0x11'));logger[_0xc291('0x12')]('FaxApplication,\x20%s,\x20%s,\x20%s',_0x53a20c,_0xc291('0x11'),JSON[_0xc291('0x13')](_0xfe4a51));if(_0xfe4a51[_0xc291('0x14')]){if(_0xfe4a51['error']['code']===0x1f4){logger[_0xc291('0x14')](_0xc291('0x10'),_0x53a20c,_0xfe4a51['error'][_0xc291('0x15')]);return _0x374a0b(_0xfe4a51[_0xc291('0x14')]['message']);}logger[_0xc291('0x14')](_0xc291('0x10'),_0x53a20c,_0xfe4a51[_0xc291('0x14')]['message']);return _0xcb4be0(_0xfe4a51[_0xc291('0x14')][_0xc291('0x15')]);}else{logger[_0xc291('0xf')](_0xc291('0x10'),_0x53a20c,_0xc291('0x11'));_0xcb4be0(_0xfe4a51['result']['message']);}})[_0xc291('0x16')](function(_0x127b26){logger['error']('FaxApplication,\x20%s,\x20%s',_0x53a20c,_0x127b26);_0x374a0b(_0x127b26);});});}exports[_0xc291('0x17')]=function(_0x2c60ed){var _0x5a3df9=this;return new Promise(function(_0x5c308e,_0x2a849d){return db[_0xc291('0x18')][_0xc291('0x19')](_0x2c60ed[_0xc291('0x1a')],{'raw':_0x2c60ed[_0xc291('0x1b')]?_0x2c60ed['options'][_0xc291('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2c60ed[_0xc291('0x1b')]?_0x2c60ed[_0xc291('0x1b')][_0xc291('0x1d')]||null:null,'attributes':_0x2c60ed[_0xc291('0x1b')]?_0x2c60ed[_0xc291('0x1b')][_0xc291('0x1e')]||null:null,'limit':_0x2c60ed[_0xc291('0x1b')]?_0x2c60ed[_0xc291('0x1b')]['limit']||null:null})[_0xc291('0xe')](function(_0x144cf3){logger[_0xc291('0xf')](_0xc291('0x17'),_0x2c60ed);logger[_0xc291('0x12')]('UpdateFaxApplication',_0x2c60ed,JSON['stringify'](_0x144cf3));_0x5c308e(_0x144cf3);})[_0xc291('0x16')](function(_0x405d47){logger[_0xc291('0x14')](_0xc291('0x17'),_0x405d47[_0xc291('0x15')],_0x2c60ed);_0x2a849d(_0x5a3df9['error'](0x1f4,_0x405d47[_0xc291('0x15')]));});});};
\ No newline at end of file
index dc1b684..9b93a21 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4f4=['../../config/environment','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x12954a,_0x304691){var _0x5ccde2=function(_0x5c3d68){while(--_0x5c3d68){_0x12954a['push'](_0x12954a['shift']());}};_0x5ccde2(++_0x304691);}(_0xf4f4,0xe3));var _0x4f4f=function(_0xab1a13,_0x5e6076){_0xab1a13=_0xab1a13-0x0;var _0x24ce8b=_0xf4f4[_0xab1a13];return _0x24ce8b;};'use strict';var multer=require(_0x4f4f('0x0'));var util=require(_0x4f4f('0x1'));var path=require('path');var timeout=require(_0x4f4f('0x2'));var express=require(_0x4f4f('0x3'));var router=express[_0x4f4f('0x4')]();var fs_extra=require(_0x4f4f('0x5'));var auth=require(_0x4f4f('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x4f4f('0x7'));var controller=require('./faxApplication.controller');router[_0x4f4f('0x8')]('/',auth[_0x4f4f('0x9')](),controller[_0x4f4f('0xa')]);router[_0x4f4f('0x8')](_0x4f4f('0xb'),auth[_0x4f4f('0x9')](),controller[_0x4f4f('0xc')]);router[_0x4f4f('0xd')]('/',auth['isAuthenticated'](),controller[_0x4f4f('0xe')]);router[_0x4f4f('0xf')](_0x4f4f('0xb'),auth[_0x4f4f('0x9')](),controller[_0x4f4f('0x10')]);router[_0x4f4f('0x11')](_0x4f4f('0xb'),auth[_0x4f4f('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x0abf=['isAuthenticated','index','show','post','put','/:id','destroy','exports','multer','path','connect-timeout','fs-extra','../../components/interaction/service','../../config/environment','./faxApplication.controller','get'];(function(_0x5a776b,_0x46f785){var _0xbbef59=function(_0x38313e){while(--_0x38313e){_0x5a776b['push'](_0x5a776b['shift']());}};_0xbbef59(++_0x46f785);}(_0x0abf,0xe8));var _0xf0ab=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x0abf[_0x501510];return _0x1e6ee5;};'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')]('/:id',auth[_0xf0ab('0x8')](),controller[_0xf0ab('0xa')]);router[_0xf0ab('0xb')]('/',auth[_0xf0ab('0x8')](),controller['create']);router[_0xf0ab('0xc')](_0xf0ab('0xd'),auth[_0xf0ab('0x8')](),controller['update']);router['delete'](_0xf0ab('0xd'),auth['isAuthenticated'](),controller[_0xf0ab('0xe')]);module[_0xf0ab('0xf')]=router;
\ No newline at end of file
index 53f41f1..82da1e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x44be=['DATE','STRING','ENUM','sequelize','exports','BOOLEAN'];(function(_0x2a42ee,_0x4d099b){var _0x30b78a=function(_0x36598c){while(--_0x36598c){_0x2a42ee['push'](_0x2a42ee['shift']());}};_0x30b78a(++_0x4d099b);}(_0x44be,0xbd));var _0xe44b=function(_0x183b97,_0x2d297c){_0x183b97=_0x183b97-0x0;var _0x629cf7=_0x44be[_0x183b97];return _0x629cf7;};'use strict';var Sequelize=require(_0xe44b('0x0'));module[_0xe44b('0x1')]={'closed':{'type':Sequelize[_0xe44b('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xe44b('0x3')]},'disposition':{'type':Sequelize[_0xe44b('0x4')]},'secondDisposition':{'type':Sequelize[_0xe44b('0x4')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0xe44b('0x4')]},'read1stAt':{'type':Sequelize[_0xe44b('0x3')]},'fax':{'type':Sequelize[_0xe44b('0x4')]},'firstMsgDirection':{'type':Sequelize[_0xe44b('0x5')]('in','out'),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0xe44b('0x3')]},'lastMsgDirection':{'type':Sequelize[_0xe44b('0x5')]('in','out'),'defaultValue':'in','allowNull':![]}};
\ No newline at end of file
+var _0xb4e5=['sequelize','BOOLEAN','DATE','STRING','out'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0xb4e5,0x104));var _0x5b4e=function(_0x5a2fcb,_0x5c2c24){_0x5a2fcb=_0x5a2fcb-0x0;var _0x2e9db4=_0xb4e5[_0x5a2fcb];return _0x2e9db4;};'use strict';var Sequelize=require(_0x5b4e('0x0'));module['exports']={'closed':{'type':Sequelize[_0x5b4e('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x5b4e('0x2')]},'disposition':{'type':Sequelize[_0x5b4e('0x3')]},'secondDisposition':{'type':Sequelize[_0x5b4e('0x3')]},'thirdDisposition':{'type':Sequelize[_0x5b4e('0x3')]},'note':{'type':Sequelize[_0x5b4e('0x3')]},'read1stAt':{'type':Sequelize[_0x5b4e('0x2')]},'fax':{'type':Sequelize[_0x5b4e('0x3')]},'firstMsgDirection':{'type':Sequelize['ENUM']('in',_0x5b4e('0x4')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0x5b4e('0x4')),'defaultValue':'in','allowNull':![]}};
\ No newline at end of file
index 7b57978..9519849 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x24b8=['set','Content-Range','json','apply','save','update','error','stack','name','send','TagIds','split','forEach','push','then','index','map','FaxInteraction','rawAttributes','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','filters','pick','field','from','tools_tags','select','ui.FaxInteractionId','user_has_fax_interactions','left_join','users','fax_interactions','cm_contacts','o.id\x20=\x20i.UserId','fax_accounts','a.id\x20=\x20i.FaxAccountId','fax_messages','me.FaxInteractionId\x20=\x20i.id','fax_interaction_has_tags','it.FaxInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','parseSearch','sqlOperator','conditions','find','unreadMessages','having','`\x20=\x200','`\x20>\x200','Contact','operator','$substring','value','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','ContactId','Tag','union','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','buildExpression','text','start','where','i.FaxAccountId\x20IN\x20?','concat','createdAt','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','isArray','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','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','DESC','isEmpty','resolve','FaxAccountId','i.FaxAccountId\x20IS\x20NOT\x20NULL','role','agent','user','getFaxAccounts','i.FaxAccountId\x20IS\x20NULL','sequelize','toString','count','keyBy','merge','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','c.firstName','Contact.firstName','c.lastName','Contact.lastName','c.email','Contact.email','Contact.phone','Contact.mobile','c.fax','Contact.fax','Owner.fullname','o.internal','Owner.internal','ui.FaxInteractionId\x20IN\x20?','FaxInteractionId','all','show','params','includeAll','include','options','catch','create','body','destroy','describe','FaxMessage','addMessage','ids','omit','getMessages','findOne','filter','format','YYYY-MM-DD\x20HH:mm:ss','findAll','rows','addTags','setTags','faxInteractionTags:save','removeTags','download','unix','join','root','server','attachments','transcript-%d-%s.zip','Attachment','Messages','get','mkdirSync','basename','existsSync','createReadStream','log','err','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','./faxInteraction.socket','register','sendStatus','status','end','offset','undefined'];(function(_0x317c38,_0x9d154d){var _0x304c05=function(_0x27a100){while(--_0x27a100){_0x317c38['push'](_0x317c38['shift']());}};_0x304c05(++_0x9d154d);}(_0x24b8,0xb2));var _0x824b=function(_0x17a752,_0x820c0){_0x17a752=_0x17a752-0x0;var _0x2aa4a0=_0x24b8[_0x17a752];return _0x2aa4a0;};'use strict';var emlformat=require(_0x824b('0x0'));var rimraf=require(_0x824b('0x1'));var zipdir=require(_0x824b('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x824b('0x3'));var moment=require(_0x824b('0x4'));var BPromise=require(_0x824b('0x5'));var Mustache=require(_0x824b('0x6'));var util=require('util');var path=require('path');var sox=require(_0x824b('0x7'));var csv=require(_0x824b('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x824b('0x9'));var _=require(_0x824b('0xa'));var squel=require(_0x824b('0xb'));var crypto=require(_0x824b('0xc'));var jsforce=require(_0x824b('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x824b('0x8'));var querystring=require(_0x824b('0xe'));var Papa=require(_0x824b('0xf'));var Redis=require(_0x824b('0x10'));var authService=require(_0x824b('0x11'));var qs=require(_0x824b('0x12'));var as=require(_0x824b('0x13'));var hardwareService=require(_0x824b('0x14'));var logger=require('../../config/logger')('api');var utils=require(_0x824b('0x15'));var config=require(_0x824b('0x16'));var licenseUtil=require(_0x824b('0x17'));var db=require(_0x824b('0x18'))['db'];config[_0x824b('0x19')]=_[_0x824b('0x1a')](config[_0x824b('0x19')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x824b('0x19')]));require(_0x824b('0x1b'))[_0x824b('0x1c')](socket);function respondWithStatusCode(_0x52c74a,_0x17e7b0){_0x17e7b0=_0x17e7b0||0xcc;return function(_0x536071){if(_0x536071){return _0x52c74a[_0x824b('0x1d')](_0x17e7b0);}return _0x52c74a[_0x824b('0x1e')](_0x17e7b0)[_0x824b('0x1f')]();};}function respondWithResult(_0x16323a,_0x31b944){_0x31b944=_0x31b944||0xc8;return function(_0x31df76){if(_0x31df76){return _0x16323a[_0x824b('0x1e')](_0x31b944)['json'](_0x31df76);}};}function respondWithFilteredResult(_0x28f2fe,_0x325704){return function(_0x4442ed){if(_0x4442ed){var _0x2e891c=typeof _0x325704[_0x824b('0x20')]===_0x824b('0x21')&&typeof _0x325704['limit']===_0x824b('0x21');var _0x303cee=_0x4442ed['count'];var _0x44740b=_0x2e891c?0x0:_0x325704[_0x824b('0x20')];var _0x8fcd4b=_0x2e891c?_0x4442ed['count']:_0x325704[_0x824b('0x20')]+_0x325704['limit'];var _0xe80504;if(_0x8fcd4b>=_0x303cee){_0x8fcd4b=_0x303cee;_0xe80504=0xc8;}else{_0xe80504=0xce;}_0x28f2fe['status'](_0xe80504);return _0x28f2fe[_0x824b('0x22')](_0x824b('0x23'),_0x44740b+'-'+_0x8fcd4b+'/'+_0x303cee)[_0x824b('0x24')](_0x4442ed);}return null;};}function patchUpdates(_0x373a39){return function(_0x474e3a){try{jsonpatch[_0x824b('0x25')](_0x474e3a,_0x373a39,!![]);}catch(_0x14af69){return BPromise['reject'](_0x14af69);}return _0x474e3a[_0x824b('0x26')]();};}function saveUpdates(_0x2a1431,_0x5ca1b3){return function(_0x472deb){if(_0x472deb){return _0x472deb[_0x824b('0x27')](_0x2a1431)['then'](function(_0x57b28e){return _0x57b28e;});}return null;};}function removeEntity(_0x4b99a0,_0x3855ca){return function(_0x4161f4){if(_0x4161f4){return _0x4161f4['destroy']()['then'](function(){_0x4b99a0['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x5c0dc8,_0x5b34ec){return function(_0x3f97ef){if(!_0x3f97ef){_0x5c0dc8['sendStatus'](0x194);}return _0x3f97ef;};}function handleError(_0x271622,_0x3ed49d){_0x3ed49d=_0x3ed49d||0x1f4;return function(_0xb9f565){logger[_0x824b('0x28')](_0xb9f565[_0x824b('0x29')]);if(_0xb9f565[_0x824b('0x2a')]){delete _0xb9f565['name'];}_0x271622[_0x824b('0x1e')](_0x3ed49d)[_0x824b('0x2b')](_0xb9f565);};}function getInteractionUsers(_0x1e1525,_0x2dfbea){return new BPromise(function(_0x5bc5bf,_0x5e4bbd){try{if(_0x2dfbea[_0x1e1525['id']]){_0x1e1525['Users']=_['map'](_0x2dfbea[_0x1e1525['id']],function(_0x9bec48){return{'id':_0x9bec48['id'],'fullname':_0x9bec48['fullname']};});}}catch(_0x4908a2){_0x5e4bbd(_0x4908a2);}_0x5bc5bf(_0x1e1525);});}function getInteractionTags(_0x51f8d3,_0x24e309){return new BPromise(function(_0x53fd28,_0x26470c){try{if(_0x51f8d3[_0x824b('0x2c')]){_0x51f8d3['Tags']=[];_0x51f8d3[_0x824b('0x2c')][_0x824b('0x2d')](',')[_0x824b('0x2e')](function(_0x1a9c36){_0x51f8d3['Tags'][_0x824b('0x2f')](_0x24e309[_0x1a9c36]);});}delete _0x51f8d3['TagIds'];}catch(_0x2a79bd){_0x26470c(_0x2a79bd);}_0x53fd28(_0x51f8d3);});}function updateFaxInteraction(_0x18b48d,_0x4888d4,_0x46bd55){return new BPromise(function(_0x4dcd03,_0x46c885){return getInteractionUsers(_0x18b48d,_0x46bd55)['then'](function(_0x41eae2){return getInteractionTags(_0x41eae2,_0x4888d4);})[_0x824b('0x30')](function(_0x3f8ae5){_0x4dcd03(_0x3f8ae5);})['catch'](function(_0x3b5b7a){_0x46c885(_0x3b5b7a);});});}exports[_0x824b('0x31')]=function(_0x5d498d,_0x23ceb6){var _0x37fda5={},_0x5c6f8c={},_0x27a979={'count':0x0,'rows':[]};var _0x119766=_[_0x824b('0x32')](db[_0x824b('0x33')][_0x824b('0x34')],function(_0x5f0abd){return{'name':_0x5f0abd['fieldName'],'type':_0x5f0abd[_0x824b('0x35')][_0x824b('0x36')]};});_0x5c6f8c[_0x824b('0x37')]=_[_0x824b('0x32')](_0x119766,'name');_0x5c6f8c[_0x824b('0x38')]=_[_0x824b('0x39')](_0x5d498d[_0x824b('0x38')]);_0x5c6f8c['filters']=_[_0x824b('0x3a')](_0x5c6f8c[_0x824b('0x37')],_0x5c6f8c[_0x824b('0x38')]);_0x37fda5[_0x824b('0x3b')]=_[_0x824b('0x3a')](_0x5c6f8c['model'],qs[_0x824b('0x3c')](_0x5d498d[_0x824b('0x38')][_0x824b('0x3c')]));_0x37fda5[_0x824b('0x3b')]=_0x37fda5[_0x824b('0x3b')][_0x824b('0x3d')]?_0x37fda5['attributes']:_0x5c6f8c[_0x824b('0x37')];if(!_0x5d498d[_0x824b('0x38')][_0x824b('0x3e')](_0x824b('0x3f'))){_0x37fda5[_0x824b('0x40')]=qs[_0x824b('0x40')](_0x5d498d[_0x824b('0x38')]['limit']);_0x37fda5[_0x824b('0x20')]=qs[_0x824b('0x20')](_0x5d498d[_0x824b('0x38')][_0x824b('0x20')]);}_0x37fda5[_0x824b('0x41')]=qs[_0x824b('0x42')](_0x5d498d[_0x824b('0x38')][_0x824b('0x42')]);_0x37fda5['where']=qs[_0x824b('0x43')](_[_0x824b('0x44')](_0x5d498d['query'],_0x5c6f8c[_0x824b('0x43')]),_0x119766);var _0x55faa4=[];var _0x58d2a5=squel['select']()[_0x824b('0x45')]('id')[_0x824b('0x45')](_0x824b('0x2a'))[_0x824b('0x45')]('color')[_0x824b('0x46')](_0x824b('0x47'));var _0x2df492=squel[_0x824b('0x48')]()['field']('u.id')['field']('u.fullname')[_0x824b('0x45')](_0x824b('0x49'))['from'](_0x824b('0x4a'),'ui')[_0x824b('0x4b')](_0x824b('0x4c'),'u','u.id\x20=\x20ui.UserId');var _0x7d6e8=squel[_0x824b('0x48')]()['from'](_0x824b('0x4d'),'i')[_0x824b('0x4b')](_0x824b('0x4e'),'c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')[_0x824b('0x4b')]('users','o',_0x824b('0x4f'))[_0x824b('0x4b')](_0x824b('0x50'),'a',_0x824b('0x51'))[_0x824b('0x4b')](_0x824b('0x52'),'me',_0x824b('0x53'))['left_join'](_0x824b('0x54'),'it',_0x824b('0x55'))[_0x824b('0x4b')]('tools_tags','t',_0x824b('0x56'));var _0x505763=squel['expr']();var _0x2bf720=[];var _0x3d64fd=squel[_0x824b('0x57')]();var _0x14d296;if(_0x5d498d['query'][_0x824b('0x58')]){_0x14d296=as[_0x824b('0x59')](_0x5d498d['query'][_0x824b('0x58')]);var _0x5d9f2d=_0x14d296[_0x824b('0x5a')];for(var _0x3390b7=0x0;_0x3390b7<_0x14d296[_0x824b('0x5b')][_0x824b('0x3d')];_0x3390b7++){var _0x42a7a0=_0x14d296['conditions'][_0x3390b7];var _0x40c004='i';var _0xbd5b5c=_[_0x824b('0x5c')](_0x119766,[_0x824b('0x2a'),_0x42a7a0[_0x824b('0x45')]]);if(!_0xbd5b5c){switch(_0x42a7a0['field']){case _0x824b('0x5d'):if(_0x42a7a0['value']==0x1){_0x7d6e8[_0x824b('0x5e')]('`'+_0x42a7a0[_0x824b('0x45')]+_0x824b('0x5f'));}else{_0x7d6e8[_0x824b('0x5e')]('`'+_0x42a7a0['field']+_0x824b('0x60'));}break;case _0x824b('0x61'):if(_0x42a7a0[_0x824b('0x62')]===_0x824b('0x63')){if(_0x42a7a0[_0x824b('0x64')][_0x824b('0x2d')]('\x20')['length']>0x1){_0x505763[_0x5d9f2d](_0x824b('0x65'),qs['getFullTextValue'](_0x42a7a0[_0x824b('0x64')]),null);}else{var _0x1b3be8='%'+_0x42a7a0['value']+'%';_0x505763[_0x5d9f2d]('c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?',_0x1b3be8,_0x1b3be8,_0x1b3be8);}}else{_0xbd5b5c=_['find'](_0x119766,['name',_0x824b('0x66')]);_0x42a7a0[_0x824b('0x45')]=_0x824b('0x66');_0x476345=as['buildExpression'](_0x40c004,_0xbd5b5c[_0x824b('0x35')],_0x42a7a0);_0x505763[_0x5d9f2d](_0x476345['text'],_0x476345[_0x824b('0x64')]['start'],_0x476345[_0x824b('0x64')][_0x824b('0x1f')]);}break;case _0x824b('0x67'):var _0x2f9052=_0x42a7a0[_0x824b('0x64')][_0x824b('0x2d')](',')[_0x824b('0x32')](function(_0x2d3cb4){return Number(_0x2d3cb4);});_0x2f9052[_0x824b('0x2e')](function(_0x5b2612){_0x3d64fd['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x5b2612+',%');});_0x2bf720=_[_0x824b('0x68')](_0x2bf720,_0x2f9052);break;case _0x824b('0x69'):if(_0x42a7a0['operator']===_0x824b('0x63')){_0x505763[_0x5d9f2d](_0x824b('0x6a'),'%'+_0x42a7a0[_0x824b('0x64')]+'%',null);}else{_0xbd5b5c=_[_0x824b('0x5c')](_0x119766,[_0x824b('0x2a'),_0x824b('0x6b')]);_0x42a7a0['field']='UserId';_0x476345=as[_0x824b('0x6c')](_0x40c004,_0xbd5b5c[_0x824b('0x35')],_0x42a7a0);_0x505763[_0x5d9f2d](_0x476345[_0x824b('0x6d')],_0x476345[_0x824b('0x64')]['start'],_0x476345['value'][_0x824b('0x1f')]);}break;case'body':_0x476345=as[_0x824b('0x6c')]('me',null,_0x42a7a0);_0x505763[_0x5d9f2d](_0x476345['text'],_0x476345[_0x824b('0x64')]['start'],_0x476345[_0x824b('0x64')][_0x824b('0x1f')]);break;}}else{var _0x476345=as[_0x824b('0x6c')](_0x40c004,_0xbd5b5c['type'],_0x42a7a0);_0x505763[_0x5d9f2d](_0x476345[_0x824b('0x6d')],_0x476345['value'][_0x824b('0x6e')],_0x476345[_0x824b('0x64')][_0x824b('0x1f')]);}}}else{var _0x3314b4=_(_0x5d498d[_0x824b('0x38')])[_0x824b('0x39')]()[_0x824b('0x32')](function(_0x4d2def){return _['some'](_0x119766,[_0x824b('0x2a'),_0x4d2def])?_0x4d2def:undefined;})['compact']()[_0x824b('0x64')]();if(!_['isEmpty'](_0x3314b4)){_0x3314b4[_0x824b('0x2e')](function(_0x2ad5ac){if(_0x2ad5ac==='FaxAccountId'){_0x7d6e8[_0x824b('0x6f')](_0x824b('0x70'),[][_0x824b('0x71')](_0x5d498d[_0x824b('0x38')][_0x2ad5ac]));}else if(_0x2ad5ac===_0x824b('0x72')){var _0x35da9a=JSON[_0x824b('0x73')](_0x5d498d['query'][_0x2ad5ac])[_0x824b('0x74')];var _0x332b10=JSON[_0x824b('0x73')](_0x5d498d[_0x824b('0x38')][_0x2ad5ac])[_0x824b('0x75')];_0x7d6e8[_0x824b('0x6f')](_0x824b('0x76'),_0x35da9a,_0x332b10);}else{if(_0x5d498d[_0x824b('0x38')][_0x2ad5ac]==='null'){_0x7d6e8[_0x824b('0x6f')]('i.'+_0x2ad5ac+_0x824b('0x77'));}else{_0x7d6e8[_0x824b('0x6f')]('i.'+_0x2ad5ac+_0x824b('0x78'),_0x5d498d[_0x824b('0x38')][_0x2ad5ac]);}}});}if(_0x5d498d[_0x824b('0x38')][_0x824b('0x79')]){if(_0x5d498d[_0x824b('0x38')][_0x824b('0x79')]==0x1){_0x7d6e8[_0x824b('0x5e')](_0x824b('0x7a'));}else{_0x7d6e8[_0x824b('0x5e')](_0x824b('0x7b'));}}if(_0x5d498d[_0x824b('0x38')][_0x824b('0x7c')]){_0x2bf720=_[_0x824b('0x7d')](_0x5d498d[_0x824b('0x38')][_0x824b('0x7c')])?_0x5d498d[_0x824b('0x38')][_0x824b('0x7c')]:new Array(_0x5d498d[_0x824b('0x38')][_0x824b('0x7c')]);_0x2bf720[_0x824b('0x2e')](function(_0x26b6cc){_0x3d64fd['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x26b6cc+',%');});}if(_0x5d498d[_0x824b('0x38')]['filter']){var _0x344b87=_0x5d498d['query']['filter'][_0x824b('0x7e')]('\x5c','\x5c\x5c')[_0x824b('0x7e')](/'/g,'\x27\x27');if(qs['isNumeric'](_0x344b87)){_0x505763['or'](_0x824b('0x7f'),_0x344b87+'%')['or'](_0x824b('0x80'),_0x344b87+'%');}_0x505763['or'](_0x824b('0x81'),_0x344b87+'%');}}_0x7d6e8[_0x824b('0x6f')](_0x505763);_0x7d6e8[_0x824b('0x82')](_0x824b('0x83'));var _0x185074={'type':db[_0x824b('0x84')][_0x824b('0x85')]['SELECT'],'raw':!![]};var _0x2ce1ad=_0x7d6e8['clone']();_0x2ce1ad[_0x824b('0x45')](_0x824b('0x83'));_0x2ce1ad[_0x824b('0x45')](_0x824b('0x86'),_0x824b('0x5d'));if(_0x37fda5[_0x824b('0x41')]){_0x37fda5['order'][_0x824b('0x2e')](function(_0x2d452c){var _0x10777d=_0x2d452c[0x0]===_0x824b('0x87')?_0x2d452c[0x0]:'i.'+_0x2d452c[0x0];_0x7d6e8[_0x824b('0x41')](_0x10777d,_0x2d452c[0x1]===_0x824b('0x88')?![]:!![]);});}if(!_[_0x824b('0x89')](_0x2bf720)){_0x7d6e8['having'](_0x3d64fd);_0x2ce1ad[_0x824b('0x6f')]('t.id\x20IN\x20?',_0x2bf720);}BPromise[_0x824b('0x8a')]()[_0x824b('0x30')](function(){if(!_0x14d296){if(_0x5d498d[_0x824b('0x38')][_0x824b('0x8b')])return;_0x2ce1ad[_0x824b('0x6f')](_0x824b('0x8c'));_0x7d6e8[_0x824b('0x6f')]('i.FaxAccountId\x20IS\x20NOT\x20NULL');return;}if(_0x5d498d['user'][_0x824b('0x8d')]!==_0x824b('0x8e'))return;return _0x5d498d[_0x824b('0x8f')][_0x824b('0x90')]({'attributes':['id'],'raw':!![]})[_0x824b('0x30')](function(_0x2dc769){if(_[_0x824b('0x89')](_0x2dc769)){_0x2ce1ad[_0x824b('0x6f')](_0x824b('0x91'));_0x7d6e8[_0x824b('0x6f')]('i.FaxAccountId\x20IS\x20NULL');}else{_0x2ce1ad['where']('i.FaxAccountId\x20IN\x20?',_[_0x824b('0x32')](_0x2dc769,'id'));_0x7d6e8[_0x824b('0x6f')]('i.FaxAccountId\x20IN\x20?',_[_0x824b('0x32')](_0x2dc769,'id'));}});})[_0x824b('0x30')](function(){if(_0x5d498d['user'][_0x824b('0x8d')]===_0x824b('0x8e')&&!_0x14d296&&!_0x5d498d[_0x824b('0x38')][_0x824b('0x8b')])return[];return db[_0x824b('0x92')][_0x824b('0x38')](_0x2ce1ad[_0x824b('0x93')](),_0x185074);})[_0x824b('0x30')](function(_0x45481e){_0x27a979[_0x824b('0x94')]=_0x45481e['length'];if(_0x27a979[_0x824b('0x94')]===0x0)return[];return db[_0x824b('0x92')]['query'](_0x58d2a5[_0x824b('0x93')](),_0x185074)['then'](function(_0x1cd72f){_0x55faa4=_[_0x824b('0x95')](_0x1cd72f,'id');_0x185074=_[_0x824b('0x96')](_0x185074,{'model':db['FaxInteraction'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x5d498d['query']['fields']){_0x37fda5[_0x824b('0x3b')][_0x824b('0x2e')](function(_0x22efa5){_0x7d6e8[_0x824b('0x45')]('i.'+_0x22efa5);});}else{_0x7d6e8[_0x824b('0x45')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0x824b('0x5d'));_0x7d6e8['field'](_0x824b('0x97'),_0x824b('0x98'));_0x7d6e8[_0x824b('0x45')](_0x824b('0x99'),'Account.mandatoryDisposition');_0x7d6e8['field'](_0x824b('0x9a'),_0x824b('0x87'));_0x7d6e8['field']('i.*');_0x7d6e8['field'](_0x824b('0x9b'),_0x824b('0x9c'));_0x7d6e8[_0x824b('0x45')](_0x824b('0x9d'),_0x824b('0x9e'));_0x7d6e8[_0x824b('0x45')](_0x824b('0x9f'),_0x824b('0xa0'));_0x7d6e8['field']('c.phone',_0x824b('0xa1'));_0x7d6e8[_0x824b('0x45')]('c.mobile',_0x824b('0xa2'));_0x7d6e8[_0x824b('0x45')](_0x824b('0xa3'),_0x824b('0xa4'));_0x7d6e8[_0x824b('0x45')]('o.fullname',_0x824b('0xa5'));_0x7d6e8[_0x824b('0x45')](_0x824b('0xa6'),_0x824b('0xa7'));_0x7d6e8['field']('GROUP_CONCAT(DISTINCT\x20t.id)',_0x824b('0x2c'));}if(_0x37fda5[_0x824b('0x40')])_0x7d6e8[_0x824b('0x40')](_0x37fda5['limit']);if(_0x37fda5[_0x824b('0x20')])_0x7d6e8['offset'](_0x37fda5['offset']);return db[_0x824b('0x92')][_0x824b('0x38')](_0x7d6e8[_0x824b('0x93')](),_0x185074);})[_0x824b('0x30')](function(_0x344083){if(_0x344083[_0x824b('0x3d')]>0x0)_0x2df492['where'](_0x824b('0xa8'),_[_0x824b('0x32')](_0x344083,'id'));return db[_0x824b('0x92')]['query'](_0x2df492[_0x824b('0x93')](),_0x185074)[_0x824b('0x30')](function(_0x29575b){var _0x1bbafb=_['groupBy'](_0x29575b,_0x824b('0xa9'));var _0x1ff1ec=[];_0x344083[_0x824b('0x2e')](function(_0x519e8e){_0x1ff1ec[_0x824b('0x2f')](updateFaxInteraction(_0x519e8e,_0x55faa4,_0x1bbafb));});return BPromise[_0x824b('0xaa')](_0x1ff1ec);});});})[_0x824b('0x30')](function(_0x56ab8b){_0x27a979['rows']=_0x56ab8b;return _0x27a979;})[_0x824b('0x30')](respondWithFilteredResult(_0x23ceb6,_0x37fda5))['catch'](handleError(_0x23ceb6,null));};exports[_0x824b('0xab')]=function(_0x3ad8fa,_0x1a2280){var _0x2c6613={'raw':![],'where':{'id':_0x3ad8fa[_0x824b('0xac')]['id']}},_0x4558bb={};_0x4558bb[_0x824b('0x37')]=_['keys'](db[_0x824b('0x33')][_0x824b('0x34')]);_0x4558bb['query']=_[_0x824b('0x39')](_0x3ad8fa[_0x824b('0x38')]);_0x4558bb['filters']=_[_0x824b('0x3a')](_0x4558bb[_0x824b('0x37')],_0x4558bb[_0x824b('0x38')]);_0x2c6613[_0x824b('0x3b')]=_[_0x824b('0x3a')](_0x4558bb['model'],qs[_0x824b('0x3c')](_0x3ad8fa[_0x824b('0x38')]['fields']));_0x2c6613['attributes']=_0x2c6613['attributes'][_0x824b('0x3d')]?_0x2c6613[_0x824b('0x3b')]:_0x4558bb[_0x824b('0x37')];if(_0x3ad8fa[_0x824b('0x38')][_0x824b('0xad')]){_0x2c6613[_0x824b('0xae')]=[{'all':!![]}];}_0x2c6613=_['merge']({},_0x2c6613,_0x3ad8fa[_0x824b('0xaf')]);return db[_0x824b('0x33')][_0x824b('0x5c')](_0x2c6613)['then'](handleEntityNotFound(_0x1a2280,null))[_0x824b('0x30')](respondWithResult(_0x1a2280,null))[_0x824b('0xb0')](handleError(_0x1a2280,null));};exports[_0x824b('0xb1')]=function(_0x2b2bba,_0x2b08fc){return db[_0x824b('0x33')][_0x824b('0xb1')](_0x2b2bba[_0x824b('0xb2')],{})[_0x824b('0x30')](respondWithResult(_0x2b08fc,0xc9))[_0x824b('0xb0')](handleError(_0x2b08fc,null));};exports[_0x824b('0x27')]=function(_0x4e0cf2,_0x12cbb0){if(_0x4e0cf2['body']['id']){delete _0x4e0cf2['body']['id'];}return db['FaxInteraction'][_0x824b('0x5c')]({'where':{'id':_0x4e0cf2[_0x824b('0xac')]['id']}})['then'](handleEntityNotFound(_0x12cbb0,null))[_0x824b('0x30')](saveUpdates(_0x4e0cf2['body'],null))['then'](respondWithResult(_0x12cbb0,null))[_0x824b('0xb0')](handleError(_0x12cbb0,null));};exports[_0x824b('0xb3')]=function(_0x3707fd,_0x4eecf6){return db['FaxInteraction']['find']({'where':{'id':_0x3707fd[_0x824b('0xac')]['id']}})['then'](handleEntityNotFound(_0x4eecf6,null))[_0x824b('0x30')](removeEntity(_0x4eecf6,null))[_0x824b('0xb0')](handleError(_0x4eecf6,null));};exports[_0x824b('0xb4')]=function(_0x56b46c,_0x411299){return db['FaxInteraction'][_0x824b('0xb4')]()[_0x824b('0x30')](respondWithResult(_0x411299,null))[_0x824b('0xb0')](handleError(_0x411299,null));};exports['addMessage']=function(_0x415586,_0x55549f,_0x68cbd8){return db[_0x824b('0xb5')][_0x824b('0x5c')]({'where':{'id':_0x415586[_0x824b('0xac')]['id']}})['then'](handleEntityNotFound(_0x55549f,null))[_0x824b('0x30')](function(_0x35d8c2){if(_0x35d8c2){return _0x35d8c2[_0x824b('0xb6')](_0x415586[_0x824b('0xb2')][_0x824b('0xb7')],_[_0x824b('0xb8')](_0x415586[_0x824b('0xb2')],['ids','id'])||{});}})[_0x824b('0x30')](respondWithResult(_0x55549f,null))[_0x824b('0xb0')](handleError(_0x55549f,null));};exports[_0x824b('0xb9')]=function(_0x1d6b28,_0xd020e4,_0x4aac7f){var _0x3c554e={'raw':![],'where':{}};var _0x90647={};var _0xec1ed3={'count':0x0,'rows':[]};return db[_0x824b('0x33')][_0x824b('0xba')]({'where':{'id':_0x1d6b28[_0x824b('0xac')]['id']}})[_0x824b('0x30')](handleEntityNotFound(_0xd020e4,null))['then'](function(_0x2a62b8){if(_0x2a62b8){_0x90647[_0x824b('0x37')]=_[_0x824b('0x39')](db[_0x824b('0xb5')][_0x824b('0x34')]);_0x90647['query']=_[_0x824b('0x39')](_0x1d6b28['query']);_0x90647[_0x824b('0x43')]=_[_0x824b('0x3a')](_0x90647['model'],_0x90647['query']);_0x3c554e[_0x824b('0x3b')]=_[_0x824b('0x3a')](_0x90647[_0x824b('0x37')],qs[_0x824b('0x3c')](_0x1d6b28[_0x824b('0x38')][_0x824b('0x3c')]));_0x3c554e[_0x824b('0x3b')]=_0x3c554e[_0x824b('0x3b')][_0x824b('0x3d')]?_0x3c554e[_0x824b('0x3b')]:_0x90647[_0x824b('0x37')];if(!_0x1d6b28[_0x824b('0x38')]['hasOwnProperty'](_0x824b('0x3f'))){_0x3c554e[_0x824b('0x40')]=qs['limit'](_0x1d6b28[_0x824b('0x38')]['limit']);_0x3c554e[_0x824b('0x20')]=qs[_0x824b('0x20')](_0x1d6b28['query'][_0x824b('0x20')]);}_0x3c554e[_0x824b('0x41')]=qs['sort'](_0x1d6b28[_0x824b('0x38')]['sort']);_0x3c554e[_0x824b('0x6f')]=qs[_0x824b('0x43')](_[_0x824b('0x44')](_0x1d6b28[_0x824b('0x38')],_0x90647[_0x824b('0x43')]));_0x3c554e['where'][_0x824b('0xa9')]=_0x2a62b8['id'];if(_0x1d6b28[_0x824b('0x38')][_0x824b('0xbb')]){_0x3c554e[_0x824b('0x6f')]=_[_0x824b('0x96')](_0x3c554e[_0x824b('0x6f')],{'$or':_[_0x824b('0x32')](_0x3c554e[_0x824b('0x3b')],function(_0x509027){var _0x56d3a9={};_0x56d3a9[_0x509027]={'$like':'%'+_0x1d6b28[_0x824b('0x38')][_0x824b('0xbb')]+'%'};return _0x56d3a9;})});}if(_0x1d6b28[_0x824b('0x38')][_0x824b('0x74')]){var _0x207d53=_0x1d6b28[_0x824b('0x38')][_0x824b('0x74')][_0x824b('0x2d')](',');var _0x893ee2={};_0x893ee2[_0x207d53[0x0]]={'$gte':moment(_0x207d53[0x1])[_0x824b('0xbc')](_0x824b('0xbd'))};_0x3c554e['where']=_[_0x824b('0x96')](_0x3c554e[_0x824b('0x6f')],_0x893ee2);}_0x3c554e=_[_0x824b('0x96')]({},_0x3c554e,_0x1d6b28[_0x824b('0xaf')]);return db[_0x824b('0xb5')][_0x824b('0x94')]({'where':_0x3c554e[_0x824b('0x6f')]})[_0x824b('0x30')](function(_0x561eec){_0xec1ed3['count']=_0x561eec;if(_0x1d6b28[_0x824b('0x38')][_0x824b('0xad')]){_0x3c554e[_0x824b('0xae')]=[{'all':!![]}];}return db[_0x824b('0xb5')][_0x824b('0xbe')](_0x3c554e);})[_0x824b('0x30')](function(_0x4dc5f6){_0xec1ed3[_0x824b('0xbf')]=_0x4dc5f6;return _0xec1ed3;});}})[_0x824b('0x30')](respondWithFilteredResult(_0xd020e4,_0x3c554e))[_0x824b('0xb0')](handleError(_0xd020e4,null));};exports[_0x824b('0xc0')]=function(_0x271775,_0x4169b2,_0x10ca39){return db[_0x824b('0x33')]['find']({'where':{'id':_0x271775['params']['id']}})[_0x824b('0x30')](handleEntityNotFound(_0x4169b2,null))['then'](function(_0x371c60){if(_0x371c60){return _0x371c60[_0x824b('0xc1')](_0x271775['body']['ids'],_['omit'](_0x271775[_0x824b('0xb2')],[_0x824b('0xb7'),'id'])||{})['spread'](function(){return db[_0x824b('0x67')][_0x824b('0xbe')]({'attributes':['id','name','color'],'where':{'id':_0x271775[_0x824b('0xb2')][_0x824b('0xb7')]}});})[_0x824b('0x30')](function(_0x1f5926){socket['emit'](_0x824b('0xc2'),{'id':Number(_0x271775[_0x824b('0xac')]['id']),'tags':_0x1f5926||[]});return{'id':Number(_0x271775[_0x824b('0xac')]['id']),'tags':_0x1f5926||[]};});}})[_0x824b('0x30')](respondWithResult(_0x4169b2,null))[_0x824b('0xb0')](handleError(_0x4169b2,null));};exports[_0x824b('0xc3')]=function(_0x308c48,_0x1a8c8b,_0xd85ce1){return db[_0x824b('0x33')][_0x824b('0x5c')]({'where':{'id':_0x308c48[_0x824b('0xac')]['id']}})[_0x824b('0x30')](handleEntityNotFound(_0x1a8c8b,null))[_0x824b('0x30')](function(_0x5d50e5){if(_0x5d50e5){return _0x5d50e5['removeTags'](_0x308c48['query'][_0x824b('0xb7')]);}})[_0x824b('0x30')](respondWithStatusCode(_0x1a8c8b,null))[_0x824b('0xb0')](handleError(_0x1a8c8b,null));};exports[_0x824b('0xc4')]=function(_0x1b71f7,_0x520f06){var _0x19850d=moment()[_0x824b('0xc5')]()[_0x824b('0x93')]();var _0x4cfe0f=path[_0x824b('0xc6')](config[_0x824b('0xc7')],_0x824b('0xc8'),'files','tmp');var _0x234737=path[_0x824b('0xc6')](config[_0x824b('0xc7')],_0x824b('0xc8'),'files',_0x824b('0xc9'));var _0x5e258a=path[_0x824b('0xc6')](_0x4cfe0f,_0x19850d);var _0x355ff9=util[_0x824b('0xbc')](_0x824b('0xca'),_0x1b71f7[_0x824b('0xac')]['id'],_0x19850d);var _0x24940d=path[_0x824b('0xc6')](_0x4cfe0f,_0x355ff9);var _0x315bfe=[];_0x315bfe[_0x824b('0x2f')]({'model':db[_0x824b('0xcb')],'as':_0x824b('0xcb'),'raw':!![]});var _0x134ef4=[{'model':db[_0x824b('0xb5')],'as':'Messages','attributes':['id',_0x824b('0xb2'),'createdAt'],'include':_0x315bfe}];return db[_0x824b('0x33')][_0x824b('0x5c')]({'where':{'id':_0x1b71f7['params']['id']},'include':_0x134ef4})[_0x824b('0x30')](handleEntityNotFound(_0x520f06,null))[_0x824b('0x30')](function(_0x5dda6f){if(_0x5dda6f&&_0x5dda6f[_0x824b('0xcc')]){var _0x4d55f3=_0x5dda6f[_0x824b('0xcd')]({'plain':!![]});fs[_0x824b('0xce')](_0x5e258a);for(var _0x34e8ce=0x0;_0x34e8ce<_0x4d55f3[_0x824b('0xcc')]['length'];_0x34e8ce++){var _0x15ea78=_0x4d55f3[_0x824b('0xcc')][_0x34e8ce][_0x824b('0xcb')];if(_0x15ea78){var _0x356289=path[_0x824b('0xc6')](_0x234737,_0x15ea78[_0x824b('0xcf')]);if(fs[_0x824b('0xd0')](_0x356289)){fs[_0x824b('0xd1')](_0x356289)['pipe'](fs['createWriteStream'](path[_0x824b('0xc6')](_0x5e258a,_0x15ea78[_0x824b('0xcf')])));}}}return BPromise[_0x824b('0x8a')]()[_0x824b('0x30')](function(){return new BPromise(function(_0x1560ae,_0x1868a2){zipdir(_0x5e258a,{'saveTo':_0x24940d},function(_0x2e07b3,_0x444296){if(_0x2e07b3)return _0x1868a2(_0x2e07b3);return _0x1560ae(_0x444296);});})[_0x824b('0x30')](function(){return new BPromise(function(_0x39b6c0,_0x5acd1e){rimraf(_0x5e258a,function(_0x5c679c){if(_0x5c679c)_0x5acd1e(_0x5c679c);return _0x39b6c0();});});})[_0x824b('0x30')](function(){return _0x520f06[_0x824b('0xc4')](_0x24940d,_0x355ff9,function(_0x593d1e){if(_0x593d1e){console[_0x824b('0xd2')](_0x824b('0xd3'),_0x593d1e);}else{fs['unlinkSync'](_0x24940d);}});});});}else{return _0x520f06[_0x824b('0x1d')](0xc8);}})[_0x824b('0xb0')](handleError(_0x520f06,null));};
\ No newline at end of file
+var _0xa9f3=['FaxMessage','ids','omit','getMessages','findOne','format','YYYY-MM-DD\x20HH:mm:ss','options','setTags','spread','findAll','emit','faxInteractionTags:save','removeTags','download','unix','join','files','tmp','server','attachments','Attachment','Messages','createdAt','get','mkdirSync','basename','existsSync','createReadStream','log','err','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','ejs','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./faxInteraction.socket','register','status','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','sendStatus','stack','name','send','Users','map','fullname','TagIds','split','forEach','Tags','push','index','rawAttributes','fieldName','type','key','model','query','keys','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','where','filters','pick','select','field','color','from','tools_tags','u.id','u.fullname','ui.FaxInteractionId','user_has_fax_interactions','left_join','users','u.id\x20=\x20ui.UserId','fax_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','fax_messages','fax_interaction_has_tags','it.FaxInteractionId\x20=\x20i.id','expr','parseSearch','search','conditions','find','unreadMessages','value','having','`\x20>\x200','operator','length','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','ContactId','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','buildExpression','text','body','end','start','some','isEmpty','i.FaxAccountId\x20IN\x20?','concat','$gte','parse','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20>\x200','tag','isArray','filter','replace','isNumeric','i.id\x20LIKE\x20?','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','i.id','Sequelize','QueryTypes','clone','contactName','DESC','t.id\x20IN\x20?','resolve','FaxAccountId','i.FaxAccountId\x20IS\x20NOT\x20NULL','user','role','agent','i.FaxAccountId\x20IS\x20NULL','sequelize','keyBy','merge','FaxInteraction','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','a.key','Account.key','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','c.firstName','c.lastName','Contact.lastName','Contact.email','c.phone','Contact.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','o.fullname','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','toString','ui.FaxInteractionId\x20IN\x20?','groupBy','FaxInteractionId','all','rows','show','params','includeAll','include','catch','create','destroy','describe','addMessage'];(function(_0x4f3dd1,_0x467125){var _0x281d85=function(_0x25e01c){while(--_0x25e01c){_0x4f3dd1['push'](_0x4f3dd1['shift']());}};_0x281d85(++_0x467125);}(_0xa9f3,0xfb));var _0x3a9f=function(_0x482dd9,_0x5d7e11){_0x482dd9=_0x482dd9-0x0;var _0x2df7fd=_0xa9f3[_0x482dd9];return _0x2df7fd;};'use strict';var emlformat=require(_0x3a9f('0x0'));var rimraf=require(_0x3a9f('0x1'));var zipdir=require(_0x3a9f('0x2'));var jsonpatch=require(_0x3a9f('0x3'));var rp=require(_0x3a9f('0x4'));var moment=require(_0x3a9f('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x3a9f('0x6'));var util=require(_0x3a9f('0x7'));var path=require(_0x3a9f('0x8'));var sox=require(_0x3a9f('0x9'));var csv=require('to-csv');var ejs=require(_0x3a9f('0xa'));var fs=require('fs');var fs_extra=require(_0x3a9f('0xb'));var _=require(_0x3a9f('0xc'));var squel=require('squel');var crypto=require(_0x3a9f('0xd'));var jsforce=require(_0x3a9f('0xe'));var deskjs=require(_0x3a9f('0xf'));var toCsv=require(_0x3a9f('0x10'));var querystring=require(_0x3a9f('0x11'));var Papa=require(_0x3a9f('0x12'));var Redis=require(_0x3a9f('0x13'));var authService=require(_0x3a9f('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0x3a9f('0x15'));var hardwareService=require(_0x3a9f('0x16'));var logger=require(_0x3a9f('0x17'))('api');var utils=require(_0x3a9f('0x18'));var config=require(_0x3a9f('0x19'));var licenseUtil=require(_0x3a9f('0x1a'));var db=require(_0x3a9f('0x1b'))['db'];config['redis']=_[_0x3a9f('0x1c')](config[_0x3a9f('0x1d')],{'host':_0x3a9f('0x1e'),'port':0x18eb});var socket=require(_0x3a9f('0x1f'))(new Redis(config[_0x3a9f('0x1d')]));require(_0x3a9f('0x20'))[_0x3a9f('0x21')](socket);function respondWithStatusCode(_0x59f836,_0x3552f5){_0x3552f5=_0x3552f5||0xcc;return function(_0x2eeee3){if(_0x2eeee3){return _0x59f836['sendStatus'](_0x3552f5);}return _0x59f836[_0x3a9f('0x22')](_0x3552f5)['end']();};}function respondWithResult(_0x34d63b,_0x5cb0ca){_0x5cb0ca=_0x5cb0ca||0xc8;return function(_0x265faa){if(_0x265faa){return _0x34d63b['status'](_0x5cb0ca)[_0x3a9f('0x23')](_0x265faa);}};}function respondWithFilteredResult(_0x3b7c81,_0x4d1fdc){return function(_0xcf33ef){if(_0xcf33ef){var _0x4fa09b=typeof _0x4d1fdc[_0x3a9f('0x24')]===_0x3a9f('0x25')&&typeof _0x4d1fdc[_0x3a9f('0x26')]===_0x3a9f('0x25');var _0x1daab7=_0xcf33ef[_0x3a9f('0x27')];var _0x16d704=_0x4fa09b?0x0:_0x4d1fdc[_0x3a9f('0x24')];var _0x1ef9bb=_0x4fa09b?_0xcf33ef[_0x3a9f('0x27')]:_0x4d1fdc[_0x3a9f('0x24')]+_0x4d1fdc[_0x3a9f('0x26')];var _0x366d64;if(_0x1ef9bb>=_0x1daab7){_0x1ef9bb=_0x1daab7;_0x366d64=0xc8;}else{_0x366d64=0xce;}_0x3b7c81[_0x3a9f('0x22')](_0x366d64);return _0x3b7c81[_0x3a9f('0x28')](_0x3a9f('0x29'),_0x16d704+'-'+_0x1ef9bb+'/'+_0x1daab7)[_0x3a9f('0x23')](_0xcf33ef);}return null;};}function patchUpdates(_0x134917){return function(_0x589bff){try{jsonpatch['apply'](_0x589bff,_0x134917,!![]);}catch(_0xab2728){return BPromise[_0x3a9f('0x2a')](_0xab2728);}return _0x589bff[_0x3a9f('0x2b')]();};}function saveUpdates(_0x18d944,_0x2de60f){return function(_0x2f080a){if(_0x2f080a){return _0x2f080a[_0x3a9f('0x2c')](_0x18d944)[_0x3a9f('0x2d')](function(_0x4b00de){return _0x4b00de;});}return null;};}function removeEntity(_0x1fb55a,_0x150071){return function(_0x4ccec2){if(_0x4ccec2){return _0x4ccec2['destroy']()['then'](function(){_0x1fb55a[_0x3a9f('0x22')](0xcc)['end']();});}};}function handleEntityNotFound(_0x51f805,_0x67366c){return function(_0x1f8814){if(!_0x1f8814){_0x51f805[_0x3a9f('0x2e')](0x194);}return _0x1f8814;};}function handleError(_0x261f4c,_0xdc3499){_0xdc3499=_0xdc3499||0x1f4;return function(_0x29086a){logger['error'](_0x29086a[_0x3a9f('0x2f')]);if(_0x29086a[_0x3a9f('0x30')]){delete _0x29086a[_0x3a9f('0x30')];}_0x261f4c[_0x3a9f('0x22')](_0xdc3499)[_0x3a9f('0x31')](_0x29086a);};}function getInteractionUsers(_0xea4213,_0x1c3070){return new BPromise(function(_0x217e2a,_0x49ab5b){try{if(_0x1c3070[_0xea4213['id']]){_0xea4213[_0x3a9f('0x32')]=_[_0x3a9f('0x33')](_0x1c3070[_0xea4213['id']],function(_0x2e5391){return{'id':_0x2e5391['id'],'fullname':_0x2e5391[_0x3a9f('0x34')]};});}}catch(_0x473444){_0x49ab5b(_0x473444);}_0x217e2a(_0xea4213);});}function getInteractionTags(_0x1a28fd,_0x2c144c){return new BPromise(function(_0x23d4e3,_0x49eb12){try{if(_0x1a28fd[_0x3a9f('0x35')]){_0x1a28fd['Tags']=[];_0x1a28fd[_0x3a9f('0x35')][_0x3a9f('0x36')](',')[_0x3a9f('0x37')](function(_0x341b4f){_0x1a28fd[_0x3a9f('0x38')][_0x3a9f('0x39')](_0x2c144c[_0x341b4f]);});}delete _0x1a28fd[_0x3a9f('0x35')];}catch(_0x20d396){_0x49eb12(_0x20d396);}_0x23d4e3(_0x1a28fd);});}function updateFaxInteraction(_0x7b8d37,_0x2202a1,_0x4f8177){return new BPromise(function(_0x209e40,_0x1a3e45){return getInteractionUsers(_0x7b8d37,_0x4f8177)[_0x3a9f('0x2d')](function(_0x760447){return getInteractionTags(_0x760447,_0x2202a1);})[_0x3a9f('0x2d')](function(_0x1f3cbd){_0x209e40(_0x1f3cbd);})['catch'](function(_0x1af02a){_0x1a3e45(_0x1af02a);});});}exports[_0x3a9f('0x3a')]=function(_0x3f6f82,_0x3bf88f){var _0xaec48a={},_0x4a6d73={},_0xd7b061={'count':0x0,'rows':[]};var _0x595f7f=_[_0x3a9f('0x33')](db['FaxInteraction'][_0x3a9f('0x3b')],function(_0x2feaf1){return{'name':_0x2feaf1[_0x3a9f('0x3c')],'type':_0x2feaf1[_0x3a9f('0x3d')][_0x3a9f('0x3e')]};});_0x4a6d73[_0x3a9f('0x3f')]=_[_0x3a9f('0x33')](_0x595f7f,'name');_0x4a6d73[_0x3a9f('0x40')]=_[_0x3a9f('0x41')](_0x3f6f82['query']);_0x4a6d73['filters']=_['intersection'](_0x4a6d73[_0x3a9f('0x3f')],_0x4a6d73[_0x3a9f('0x40')]);_0xaec48a[_0x3a9f('0x42')]=_[_0x3a9f('0x43')](_0x4a6d73[_0x3a9f('0x3f')],qs[_0x3a9f('0x44')](_0x3f6f82[_0x3a9f('0x40')][_0x3a9f('0x44')]));_0xaec48a[_0x3a9f('0x42')]=_0xaec48a[_0x3a9f('0x42')]['length']?_0xaec48a['attributes']:_0x4a6d73[_0x3a9f('0x3f')];if(!_0x3f6f82[_0x3a9f('0x40')][_0x3a9f('0x45')](_0x3a9f('0x46'))){_0xaec48a[_0x3a9f('0x26')]=qs['limit'](_0x3f6f82[_0x3a9f('0x40')][_0x3a9f('0x26')]);_0xaec48a[_0x3a9f('0x24')]=qs[_0x3a9f('0x24')](_0x3f6f82['query'][_0x3a9f('0x24')]);}_0xaec48a[_0x3a9f('0x47')]=qs[_0x3a9f('0x48')](_0x3f6f82['query']['sort']);_0xaec48a[_0x3a9f('0x49')]=qs[_0x3a9f('0x4a')](_[_0x3a9f('0x4b')](_0x3f6f82['query'],_0x4a6d73[_0x3a9f('0x4a')]),_0x595f7f);var _0x161fc9=[];var _0x41b79d=squel[_0x3a9f('0x4c')]()[_0x3a9f('0x4d')]('id')[_0x3a9f('0x4d')](_0x3a9f('0x30'))['field'](_0x3a9f('0x4e'))[_0x3a9f('0x4f')](_0x3a9f('0x50'));var _0x4cc4ee=squel[_0x3a9f('0x4c')]()['field'](_0x3a9f('0x51'))[_0x3a9f('0x4d')](_0x3a9f('0x52'))[_0x3a9f('0x4d')](_0x3a9f('0x53'))[_0x3a9f('0x4f')](_0x3a9f('0x54'),'ui')[_0x3a9f('0x55')](_0x3a9f('0x56'),'u',_0x3a9f('0x57'));var _0x53b809=squel[_0x3a9f('0x4c')]()[_0x3a9f('0x4f')](_0x3a9f('0x58'),'i')['left_join'](_0x3a9f('0x59'),'c',_0x3a9f('0x5a'))[_0x3a9f('0x55')](_0x3a9f('0x56'),'o',_0x3a9f('0x5b'))[_0x3a9f('0x55')]('fax_accounts','a','a.id\x20=\x20i.FaxAccountId')[_0x3a9f('0x55')](_0x3a9f('0x5c'),'me','me.FaxInteractionId\x20=\x20i.id')['left_join'](_0x3a9f('0x5d'),'it',_0x3a9f('0x5e'))['left_join'](_0x3a9f('0x50'),'t','t.id\x20=\x20it.TagId');var _0x1a8884=squel[_0x3a9f('0x5f')]();var _0x453da8=[];var _0xfba690=squel[_0x3a9f('0x5f')]();var _0x5c5ca9;if(_0x3f6f82[_0x3a9f('0x40')]['search']){_0x5c5ca9=as[_0x3a9f('0x60')](_0x3f6f82['query'][_0x3a9f('0x61')]);var _0x309f58=_0x5c5ca9['sqlOperator'];for(var _0x2c67e8=0x0;_0x2c67e8<_0x5c5ca9[_0x3a9f('0x62')]['length'];_0x2c67e8++){var _0x2a5911=_0x5c5ca9[_0x3a9f('0x62')][_0x2c67e8];var _0xba2bc5='i';var _0x13e2bb=_[_0x3a9f('0x63')](_0x595f7f,[_0x3a9f('0x30'),_0x2a5911[_0x3a9f('0x4d')]]);if(!_0x13e2bb){switch(_0x2a5911[_0x3a9f('0x4d')]){case _0x3a9f('0x64'):if(_0x2a5911[_0x3a9f('0x65')]==0x1){_0x53b809['having']('`'+_0x2a5911[_0x3a9f('0x4d')]+'`\x20=\x200');}else{_0x53b809[_0x3a9f('0x66')]('`'+_0x2a5911['field']+_0x3a9f('0x67'));}break;case'Contact':if(_0x2a5911[_0x3a9f('0x68')]==='$substring'){if(_0x2a5911[_0x3a9f('0x65')][_0x3a9f('0x36')]('\x20')[_0x3a9f('0x69')]>0x1){_0x1a8884[_0x309f58](_0x3a9f('0x6a'),qs['getFullTextValue'](_0x2a5911[_0x3a9f('0x65')]),null);}else{var _0x288d32='%'+_0x2a5911[_0x3a9f('0x65')]+'%';_0x1a8884[_0x309f58]('c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?',_0x288d32,_0x288d32,_0x288d32);}}else{_0x13e2bb=_['find'](_0x595f7f,[_0x3a9f('0x30'),_0x3a9f('0x6b')]);_0x2a5911['field']='ContactId';_0x25c974=as['buildExpression'](_0xba2bc5,_0x13e2bb[_0x3a9f('0x3d')],_0x2a5911);_0x1a8884[_0x309f58](_0x25c974['text'],_0x25c974[_0x3a9f('0x65')]['start'],_0x25c974['value']['end']);}break;case _0x3a9f('0x6c'):var _0x1453cc=_0x2a5911[_0x3a9f('0x65')][_0x3a9f('0x36')](',')[_0x3a9f('0x33')](function(_0x8e7030){return Number(_0x8e7030);});_0x1453cc[_0x3a9f('0x37')](function(_0x4a8e8f){_0xfba690['or'](_0x3a9f('0x6d'),'%,'+_0x4a8e8f+',%');});_0x453da8=_[_0x3a9f('0x6e')](_0x453da8,_0x1453cc);break;case _0x3a9f('0x6f'):if(_0x2a5911['operator']==='$substring'){_0x1a8884[_0x309f58](_0x3a9f('0x70'),'%'+_0x2a5911[_0x3a9f('0x65')]+'%',null);}else{_0x13e2bb=_['find'](_0x595f7f,[_0x3a9f('0x30'),'UserId']);_0x2a5911[_0x3a9f('0x4d')]=_0x3a9f('0x71');_0x25c974=as[_0x3a9f('0x72')](_0xba2bc5,_0x13e2bb[_0x3a9f('0x3d')],_0x2a5911);_0x1a8884[_0x309f58](_0x25c974[_0x3a9f('0x73')],_0x25c974[_0x3a9f('0x65')]['start'],_0x25c974['value']['end']);}break;case _0x3a9f('0x74'):_0x25c974=as[_0x3a9f('0x72')]('me',null,_0x2a5911);_0x1a8884[_0x309f58](_0x25c974[_0x3a9f('0x73')],_0x25c974['value']['start'],_0x25c974['value'][_0x3a9f('0x75')]);break;}}else{var _0x25c974=as[_0x3a9f('0x72')](_0xba2bc5,_0x13e2bb[_0x3a9f('0x3d')],_0x2a5911);_0x1a8884[_0x309f58](_0x25c974[_0x3a9f('0x73')],_0x25c974[_0x3a9f('0x65')][_0x3a9f('0x76')],_0x25c974[_0x3a9f('0x65')][_0x3a9f('0x75')]);}}}else{var _0x13c50f=_(_0x3f6f82[_0x3a9f('0x40')])[_0x3a9f('0x41')]()['map'](function(_0x580fee){return _[_0x3a9f('0x77')](_0x595f7f,[_0x3a9f('0x30'),_0x580fee])?_0x580fee:undefined;})['compact']()[_0x3a9f('0x65')]();if(!_[_0x3a9f('0x78')](_0x13c50f)){_0x13c50f[_0x3a9f('0x37')](function(_0x2e6d28){if(_0x2e6d28==='FaxAccountId'){_0x53b809[_0x3a9f('0x49')](_0x3a9f('0x79'),[][_0x3a9f('0x7a')](_0x3f6f82[_0x3a9f('0x40')][_0x2e6d28]));}else if(_0x2e6d28==='createdAt'){var _0x4432ef=JSON['parse'](_0x3f6f82[_0x3a9f('0x40')][_0x2e6d28])[_0x3a9f('0x7b')];var _0x39e68d=JSON[_0x3a9f('0x7c')](_0x3f6f82[_0x3a9f('0x40')][_0x2e6d28])[_0x3a9f('0x7d')];_0x53b809[_0x3a9f('0x49')](_0x3a9f('0x7e'),_0x4432ef,_0x39e68d);}else{if(_0x3f6f82['query'][_0x2e6d28]===_0x3a9f('0x7f')){_0x53b809['where']('i.'+_0x2e6d28+_0x3a9f('0x80'));}else{_0x53b809[_0x3a9f('0x49')]('i.'+_0x2e6d28+_0x3a9f('0x81'),_0x3f6f82[_0x3a9f('0x40')][_0x2e6d28]);}}});}if(_0x3f6f82[_0x3a9f('0x40')][_0x3a9f('0x82')]){if(_0x3f6f82['query'][_0x3a9f('0x82')]==0x1){_0x53b809['having']('`unreadMessages`\x20=\x200');}else{_0x53b809[_0x3a9f('0x66')](_0x3a9f('0x83'));}}if(_0x3f6f82[_0x3a9f('0x40')][_0x3a9f('0x84')]){_0x453da8=_[_0x3a9f('0x85')](_0x3f6f82['query'][_0x3a9f('0x84')])?_0x3f6f82['query'][_0x3a9f('0x84')]:new Array(_0x3f6f82[_0x3a9f('0x40')][_0x3a9f('0x84')]);_0x453da8['forEach'](function(_0x5d2df9){_0xfba690['or'](_0x3a9f('0x6d'),'%,'+_0x5d2df9+',%');});}if(_0x3f6f82[_0x3a9f('0x40')][_0x3a9f('0x86')]){var _0x29312a=_0x3f6f82[_0x3a9f('0x40')]['filter'][_0x3a9f('0x87')]('\x5c','\x5c\x5c')[_0x3a9f('0x87')](/'/g,'\x27\x27');if(qs[_0x3a9f('0x88')](_0x29312a)){_0x1a8884['or'](_0x3a9f('0x89'),_0x29312a+'%')['or']('i.fax\x20LIKE\x20?',_0x29312a+'%');}_0x1a8884['or'](_0x3a9f('0x8a'),_0x29312a+'%');}}_0x53b809[_0x3a9f('0x49')](_0x1a8884);_0x53b809['group'](_0x3a9f('0x8b'));var _0x258f45={'type':db[_0x3a9f('0x8c')][_0x3a9f('0x8d')]['SELECT'],'raw':!![]};var _0x47861d=_0x53b809[_0x3a9f('0x8e')]();_0x47861d[_0x3a9f('0x4d')]('i.id');_0x47861d[_0x3a9f('0x4d')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0x3a9f('0x64'));if(_0xaec48a[_0x3a9f('0x47')]){_0xaec48a[_0x3a9f('0x47')][_0x3a9f('0x37')](function(_0x5be4cb){var _0x18222e=_0x5be4cb[0x0]===_0x3a9f('0x8f')?_0x5be4cb[0x0]:'i.'+_0x5be4cb[0x0];_0x53b809['order'](_0x18222e,_0x5be4cb[0x1]===_0x3a9f('0x90')?![]:!![]);});}if(!_[_0x3a9f('0x78')](_0x453da8)){_0x53b809['having'](_0xfba690);_0x47861d['where'](_0x3a9f('0x91'),_0x453da8);}BPromise[_0x3a9f('0x92')]()[_0x3a9f('0x2d')](function(){if(!_0x5c5ca9){if(_0x3f6f82[_0x3a9f('0x40')][_0x3a9f('0x93')])return;_0x47861d['where']('i.FaxAccountId\x20IS\x20NOT\x20NULL');_0x53b809[_0x3a9f('0x49')](_0x3a9f('0x94'));return;}if(_0x3f6f82[_0x3a9f('0x95')][_0x3a9f('0x96')]!==_0x3a9f('0x97'))return;return _0x3f6f82['user']['getFaxAccounts']({'attributes':['id'],'raw':!![]})[_0x3a9f('0x2d')](function(_0x378e3c){if(_[_0x3a9f('0x78')](_0x378e3c)){_0x47861d[_0x3a9f('0x49')](_0x3a9f('0x98'));_0x53b809[_0x3a9f('0x49')](_0x3a9f('0x98'));}else{_0x47861d[_0x3a9f('0x49')]('i.FaxAccountId\x20IN\x20?',_[_0x3a9f('0x33')](_0x378e3c,'id'));_0x53b809[_0x3a9f('0x49')](_0x3a9f('0x79'),_[_0x3a9f('0x33')](_0x378e3c,'id'));}});})['then'](function(){if(_0x3f6f82[_0x3a9f('0x95')]['role']===_0x3a9f('0x97')&&!_0x5c5ca9&&!_0x3f6f82[_0x3a9f('0x40')][_0x3a9f('0x93')])return[];return db[_0x3a9f('0x99')][_0x3a9f('0x40')](_0x47861d['toString'](),_0x258f45);})['then'](function(_0x1a55f2){_0xd7b061[_0x3a9f('0x27')]=_0x1a55f2[_0x3a9f('0x69')];if(_0xd7b061[_0x3a9f('0x27')]===0x0)return[];return db[_0x3a9f('0x99')][_0x3a9f('0x40')](_0x41b79d['toString'](),_0x258f45)[_0x3a9f('0x2d')](function(_0x404d64){_0x161fc9=_[_0x3a9f('0x9a')](_0x404d64,'id');_0x258f45=_[_0x3a9f('0x9b')](_0x258f45,{'model':db[_0x3a9f('0x9c')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x3f6f82['query'][_0x3a9f('0x44')]){_0xaec48a[_0x3a9f('0x42')][_0x3a9f('0x37')](function(_0x545fb4){_0x53b809['field']('i.'+_0x545fb4);});}else{_0x53b809[_0x3a9f('0x4d')](_0x3a9f('0x9d'),_0x3a9f('0x64'));_0x53b809['field'](_0x3a9f('0x9e'),_0x3a9f('0x9f'));_0x53b809[_0x3a9f('0x4d')]('a.mandatoryDisposition','Account.mandatoryDisposition');_0x53b809[_0x3a9f('0x4d')](_0x3a9f('0xa0'),_0x3a9f('0x8f'));_0x53b809[_0x3a9f('0x4d')]('i.*');_0x53b809[_0x3a9f('0x4d')](_0x3a9f('0xa1'),'Contact.firstName');_0x53b809[_0x3a9f('0x4d')](_0x3a9f('0xa2'),_0x3a9f('0xa3'));_0x53b809[_0x3a9f('0x4d')]('c.email',_0x3a9f('0xa4'));_0x53b809[_0x3a9f('0x4d')](_0x3a9f('0xa5'),_0x3a9f('0xa6'));_0x53b809[_0x3a9f('0x4d')](_0x3a9f('0xa7'),_0x3a9f('0xa8'));_0x53b809[_0x3a9f('0x4d')](_0x3a9f('0xa9'),_0x3a9f('0xaa'));_0x53b809['field'](_0x3a9f('0xab'),'Owner.fullname');_0x53b809['field']('o.internal',_0x3a9f('0xac'));_0x53b809[_0x3a9f('0x4d')](_0x3a9f('0xad'),_0x3a9f('0x35'));}if(_0xaec48a['limit'])_0x53b809['limit'](_0xaec48a[_0x3a9f('0x26')]);if(_0xaec48a[_0x3a9f('0x24')])_0x53b809[_0x3a9f('0x24')](_0xaec48a['offset']);return db[_0x3a9f('0x99')][_0x3a9f('0x40')](_0x53b809[_0x3a9f('0xae')](),_0x258f45);})[_0x3a9f('0x2d')](function(_0x49e51f){if(_0x49e51f[_0x3a9f('0x69')]>0x0)_0x4cc4ee[_0x3a9f('0x49')](_0x3a9f('0xaf'),_[_0x3a9f('0x33')](_0x49e51f,'id'));return db[_0x3a9f('0x99')][_0x3a9f('0x40')](_0x4cc4ee[_0x3a9f('0xae')](),_0x258f45)[_0x3a9f('0x2d')](function(_0xe8e1d7){var _0x5ec5f2=_[_0x3a9f('0xb0')](_0xe8e1d7,_0x3a9f('0xb1'));var _0x5d30a3=[];_0x49e51f['forEach'](function(_0x4c32d1){_0x5d30a3['push'](updateFaxInteraction(_0x4c32d1,_0x161fc9,_0x5ec5f2));});return BPromise[_0x3a9f('0xb2')](_0x5d30a3);});});})['then'](function(_0x5af2b3){_0xd7b061[_0x3a9f('0xb3')]=_0x5af2b3;return _0xd7b061;})['then'](respondWithFilteredResult(_0x3bf88f,_0xaec48a))['catch'](handleError(_0x3bf88f,null));};exports[_0x3a9f('0xb4')]=function(_0xd62d78,_0xa721b5){var _0x2dfe03={'raw':![],'where':{'id':_0xd62d78[_0x3a9f('0xb5')]['id']}},_0x57e067={};_0x57e067[_0x3a9f('0x3f')]=_[_0x3a9f('0x41')](db['FaxInteraction']['rawAttributes']);_0x57e067[_0x3a9f('0x40')]=_[_0x3a9f('0x41')](_0xd62d78[_0x3a9f('0x40')]);_0x57e067['filters']=_[_0x3a9f('0x43')](_0x57e067[_0x3a9f('0x3f')],_0x57e067['query']);_0x2dfe03[_0x3a9f('0x42')]=_[_0x3a9f('0x43')](_0x57e067[_0x3a9f('0x3f')],qs[_0x3a9f('0x44')](_0xd62d78['query']['fields']));_0x2dfe03[_0x3a9f('0x42')]=_0x2dfe03[_0x3a9f('0x42')]['length']?_0x2dfe03['attributes']:_0x57e067[_0x3a9f('0x3f')];if(_0xd62d78[_0x3a9f('0x40')][_0x3a9f('0xb6')]){_0x2dfe03[_0x3a9f('0xb7')]=[{'all':!![]}];}_0x2dfe03=_['merge']({},_0x2dfe03,_0xd62d78['options']);return db[_0x3a9f('0x9c')][_0x3a9f('0x63')](_0x2dfe03)[_0x3a9f('0x2d')](handleEntityNotFound(_0xa721b5,null))['then'](respondWithResult(_0xa721b5,null))[_0x3a9f('0xb8')](handleError(_0xa721b5,null));};exports[_0x3a9f('0xb9')]=function(_0x1a5858,_0xc55497){return db[_0x3a9f('0x9c')][_0x3a9f('0xb9')](_0x1a5858[_0x3a9f('0x74')],{})[_0x3a9f('0x2d')](respondWithResult(_0xc55497,0xc9))['catch'](handleError(_0xc55497,null));};exports[_0x3a9f('0x2c')]=function(_0x3881c6,_0x504256){if(_0x3881c6[_0x3a9f('0x74')]['id']){delete _0x3881c6[_0x3a9f('0x74')]['id'];}return db[_0x3a9f('0x9c')]['find']({'where':{'id':_0x3881c6[_0x3a9f('0xb5')]['id']}})[_0x3a9f('0x2d')](handleEntityNotFound(_0x504256,null))[_0x3a9f('0x2d')](saveUpdates(_0x3881c6[_0x3a9f('0x74')],null))[_0x3a9f('0x2d')](respondWithResult(_0x504256,null))[_0x3a9f('0xb8')](handleError(_0x504256,null));};exports[_0x3a9f('0xba')]=function(_0x498d29,_0x197fd9){return db['FaxInteraction'][_0x3a9f('0x63')]({'where':{'id':_0x498d29['params']['id']}})[_0x3a9f('0x2d')](handleEntityNotFound(_0x197fd9,null))[_0x3a9f('0x2d')](removeEntity(_0x197fd9,null))[_0x3a9f('0xb8')](handleError(_0x197fd9,null));};exports[_0x3a9f('0xbb')]=function(_0x41a7f4,_0x2da3a3){return db[_0x3a9f('0x9c')][_0x3a9f('0xbb')]()[_0x3a9f('0x2d')](respondWithResult(_0x2da3a3,null))[_0x3a9f('0xb8')](handleError(_0x2da3a3,null));};exports[_0x3a9f('0xbc')]=function(_0x406fad,_0x20b02a,_0x54358a){return db[_0x3a9f('0xbd')][_0x3a9f('0x63')]({'where':{'id':_0x406fad[_0x3a9f('0xb5')]['id']}})['then'](handleEntityNotFound(_0x20b02a,null))['then'](function(_0x51136f){if(_0x51136f){return _0x51136f[_0x3a9f('0xbc')](_0x406fad[_0x3a9f('0x74')][_0x3a9f('0xbe')],_[_0x3a9f('0xbf')](_0x406fad[_0x3a9f('0x74')],[_0x3a9f('0xbe'),'id'])||{});}})['then'](respondWithResult(_0x20b02a,null))['catch'](handleError(_0x20b02a,null));};exports[_0x3a9f('0xc0')]=function(_0x27d482,_0x1ac096,_0x19417d){var _0x40e06e={'raw':![],'where':{}};var _0x199243={};var _0x48f310={'count':0x0,'rows':[]};return db[_0x3a9f('0x9c')][_0x3a9f('0xc1')]({'where':{'id':_0x27d482['params']['id']}})[_0x3a9f('0x2d')](handleEntityNotFound(_0x1ac096,null))[_0x3a9f('0x2d')](function(_0x52356b){if(_0x52356b){_0x199243['model']=_[_0x3a9f('0x41')](db['FaxMessage'][_0x3a9f('0x3b')]);_0x199243[_0x3a9f('0x40')]=_[_0x3a9f('0x41')](_0x27d482[_0x3a9f('0x40')]);_0x199243['filters']=_[_0x3a9f('0x43')](_0x199243['model'],_0x199243[_0x3a9f('0x40')]);_0x40e06e['attributes']=_[_0x3a9f('0x43')](_0x199243[_0x3a9f('0x3f')],qs[_0x3a9f('0x44')](_0x27d482[_0x3a9f('0x40')][_0x3a9f('0x44')]));_0x40e06e[_0x3a9f('0x42')]=_0x40e06e[_0x3a9f('0x42')][_0x3a9f('0x69')]?_0x40e06e[_0x3a9f('0x42')]:_0x199243[_0x3a9f('0x3f')];if(!_0x27d482[_0x3a9f('0x40')][_0x3a9f('0x45')](_0x3a9f('0x46'))){_0x40e06e[_0x3a9f('0x26')]=qs[_0x3a9f('0x26')](_0x27d482[_0x3a9f('0x40')][_0x3a9f('0x26')]);_0x40e06e[_0x3a9f('0x24')]=qs['offset'](_0x27d482[_0x3a9f('0x40')]['offset']);}_0x40e06e[_0x3a9f('0x47')]=qs[_0x3a9f('0x48')](_0x27d482[_0x3a9f('0x40')][_0x3a9f('0x48')]);_0x40e06e[_0x3a9f('0x49')]=qs[_0x3a9f('0x4a')](_[_0x3a9f('0x4b')](_0x27d482[_0x3a9f('0x40')],_0x199243['filters']));_0x40e06e[_0x3a9f('0x49')][_0x3a9f('0xb1')]=_0x52356b['id'];if(_0x27d482[_0x3a9f('0x40')]['filter']){_0x40e06e[_0x3a9f('0x49')]=_[_0x3a9f('0x9b')](_0x40e06e[_0x3a9f('0x49')],{'$or':_[_0x3a9f('0x33')](_0x40e06e['attributes'],function(_0x162a20){var _0x25b08d={};_0x25b08d[_0x162a20]={'$like':'%'+_0x27d482['query'][_0x3a9f('0x86')]+'%'};return _0x25b08d;})});}if(_0x27d482[_0x3a9f('0x40')][_0x3a9f('0x7b')]){var _0x125f22=_0x27d482[_0x3a9f('0x40')][_0x3a9f('0x7b')][_0x3a9f('0x36')](',');var _0x263761={};_0x263761[_0x125f22[0x0]]={'$gte':moment(_0x125f22[0x1])[_0x3a9f('0xc2')](_0x3a9f('0xc3'))};_0x40e06e[_0x3a9f('0x49')]=_[_0x3a9f('0x9b')](_0x40e06e['where'],_0x263761);}_0x40e06e=_[_0x3a9f('0x9b')]({},_0x40e06e,_0x27d482[_0x3a9f('0xc4')]);return db['FaxMessage'][_0x3a9f('0x27')]({'where':_0x40e06e['where']})[_0x3a9f('0x2d')](function(_0xc08104){_0x48f310['count']=_0xc08104;if(_0x27d482[_0x3a9f('0x40')][_0x3a9f('0xb6')]){_0x40e06e[_0x3a9f('0xb7')]=[{'all':!![]}];}return db[_0x3a9f('0xbd')]['findAll'](_0x40e06e);})[_0x3a9f('0x2d')](function(_0x43ff75){_0x48f310[_0x3a9f('0xb3')]=_0x43ff75;return _0x48f310;});}})[_0x3a9f('0x2d')](respondWithFilteredResult(_0x1ac096,_0x40e06e))['catch'](handleError(_0x1ac096,null));};exports['addTags']=function(_0x529b49,_0x41c1af,_0x563de3){return db[_0x3a9f('0x9c')][_0x3a9f('0x63')]({'where':{'id':_0x529b49[_0x3a9f('0xb5')]['id']}})['then'](handleEntityNotFound(_0x41c1af,null))[_0x3a9f('0x2d')](function(_0x287701){if(_0x287701){return _0x287701[_0x3a9f('0xc5')](_0x529b49[_0x3a9f('0x74')][_0x3a9f('0xbe')],_[_0x3a9f('0xbf')](_0x529b49[_0x3a9f('0x74')],[_0x3a9f('0xbe'),'id'])||{})[_0x3a9f('0xc6')](function(){return db['Tag'][_0x3a9f('0xc7')]({'attributes':['id',_0x3a9f('0x30'),'color'],'where':{'id':_0x529b49[_0x3a9f('0x74')][_0x3a9f('0xbe')]}});})[_0x3a9f('0x2d')](function(_0x5a03e6){socket[_0x3a9f('0xc8')](_0x3a9f('0xc9'),{'id':Number(_0x529b49[_0x3a9f('0xb5')]['id']),'tags':_0x5a03e6||[]});return{'id':Number(_0x529b49[_0x3a9f('0xb5')]['id']),'tags':_0x5a03e6||[]};});}})[_0x3a9f('0x2d')](respondWithResult(_0x41c1af,null))[_0x3a9f('0xb8')](handleError(_0x41c1af,null));};exports['removeTags']=function(_0x14c06a,_0x33955c,_0x549c1d){return db['FaxInteraction'][_0x3a9f('0x63')]({'where':{'id':_0x14c06a[_0x3a9f('0xb5')]['id']}})['then'](handleEntityNotFound(_0x33955c,null))['then'](function(_0x32f570){if(_0x32f570){return _0x32f570[_0x3a9f('0xca')](_0x14c06a[_0x3a9f('0x40')][_0x3a9f('0xbe')]);}})[_0x3a9f('0x2d')](respondWithStatusCode(_0x33955c,null))[_0x3a9f('0xb8')](handleError(_0x33955c,null));};exports[_0x3a9f('0xcb')]=function(_0xa1313e,_0x31a18d){var _0xec8aa0=moment()[_0x3a9f('0xcc')]()['toString']();var _0x2c5612=path[_0x3a9f('0xcd')](config['root'],'server',_0x3a9f('0xce'),_0x3a9f('0xcf'));var _0x511a09=path[_0x3a9f('0xcd')](config['root'],_0x3a9f('0xd0'),_0x3a9f('0xce'),_0x3a9f('0xd1'));var _0x1ddb59=path['join'](_0x2c5612,_0xec8aa0);var _0x23d244=util[_0x3a9f('0xc2')]('transcript-%d-%s.zip',_0xa1313e[_0x3a9f('0xb5')]['id'],_0xec8aa0);var _0x15da69=path[_0x3a9f('0xcd')](_0x2c5612,_0x23d244);var _0x1be113=[];_0x1be113[_0x3a9f('0x39')]({'model':db[_0x3a9f('0xd2')],'as':'Attachment','raw':!![]});var _0x46848c=[{'model':db['FaxMessage'],'as':_0x3a9f('0xd3'),'attributes':['id',_0x3a9f('0x74'),_0x3a9f('0xd4')],'include':_0x1be113}];return db['FaxInteraction'][_0x3a9f('0x63')]({'where':{'id':_0xa1313e['params']['id']},'include':_0x46848c})['then'](handleEntityNotFound(_0x31a18d,null))[_0x3a9f('0x2d')](function(_0x30576a){if(_0x30576a&&_0x30576a[_0x3a9f('0xd3')]){var _0x9fe5f5=_0x30576a[_0x3a9f('0xd5')]({'plain':!![]});fs[_0x3a9f('0xd6')](_0x1ddb59);for(var _0x13afab=0x0;_0x13afab<_0x9fe5f5[_0x3a9f('0xd3')][_0x3a9f('0x69')];_0x13afab++){var _0x1285d3=_0x9fe5f5[_0x3a9f('0xd3')][_0x13afab]['Attachment'];if(_0x1285d3){var _0x5b609a=path[_0x3a9f('0xcd')](_0x511a09,_0x1285d3[_0x3a9f('0xd7')]);if(fs[_0x3a9f('0xd8')](_0x5b609a)){fs[_0x3a9f('0xd9')](_0x5b609a)['pipe'](fs['createWriteStream'](path[_0x3a9f('0xcd')](_0x1ddb59,_0x1285d3[_0x3a9f('0xd7')])));}}}return BPromise['resolve']()['then'](function(){return new BPromise(function(_0xd51e28,_0x621156){zipdir(_0x1ddb59,{'saveTo':_0x15da69},function(_0x2badea,_0x2469e6){if(_0x2badea)return _0x621156(_0x2badea);return _0xd51e28(_0x2469e6);});})[_0x3a9f('0x2d')](function(){return new BPromise(function(_0x19de06,_0x5ea774){rimraf(_0x1ddb59,function(_0x43120b){if(_0x43120b)_0x5ea774(_0x43120b);return _0x19de06();});});})[_0x3a9f('0x2d')](function(){return _0x31a18d[_0x3a9f('0xcb')](_0x15da69,_0x23d244,function(_0x5a3206){if(_0x5a3206){console[_0x3a9f('0xda')](_0x3a9f('0xdb'),_0x5a3206);}else{fs['unlinkSync'](_0x15da69);}});});});}else{return _0x31a18d[_0x3a9f('0x2e')](0xc8);}})[_0x3a9f('0xb8')](handleError(_0x31a18d,null));};
\ No newline at end of file
index a66ab00..932a5e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d56=['exports','../../mysqldb','FaxMessage','save','update','setDataValue','Users','map','then','unreadMessages','emit','catch','hasOwnProperty','hook'];(function(_0x3eb36f,_0x1a9c89){var _0x51212c=function(_0x37271c){while(--_0x37271c){_0x3eb36f['push'](_0x3eb36f['shift']());}};_0x51212c(++_0x1a9c89);}(_0x8d56,0x1cf));var _0x68d5=function(_0x3df871,_0xda2e11){_0x3df871=_0x3df871-0x0;var _0x570f7b=_0x8d56[_0x3df871];return _0x570f7b;};'use strict';var EventEmitter=require('events');var FaxInteraction=require(_0x68d5('0x0'))['db']['FaxInteraction'];var FaxMessage=require(_0x68d5('0x0'))['db'][_0x68d5('0x1')];var FaxInteractionEvents=new EventEmitter();FaxInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x68d5('0x2'),'afterUpdate':_0x68d5('0x3'),'afterDestroy':'remove'};function emitEvent(_0x25caf7){return function(_0x54b97b,_0x37ec10,_0x418e9e){_0x54b97b['getUsers']({'attributes':['id'],'raw':!![]})['then'](function(_0x52d922){_0x54b97b[_0x68d5('0x4')](_0x68d5('0x5'),_0x52d922[_0x68d5('0x6')](function(_0x3a7e15){return{'id':_0x3a7e15['id']};}));return FaxMessage['findAll']({'where':{'FaxInteractionId':_0x54b97b['id'],'direction':'in','read':![]},'raw':!![]});})[_0x68d5('0x7')](function(_0x1595d7){_0x54b97b['setDataValue'](_0x68d5('0x8'),_0x1595d7['length']);FaxInteractionEvents['emit'](_0x25caf7+':'+_0x54b97b['id'],_0x54b97b);FaxInteractionEvents[_0x68d5('0x9')](_0x25caf7,_0x54b97b);_0x418e9e(null);})[_0x68d5('0xa')](_0x418e9e(null));};}for(var e in events){if(events[_0x68d5('0xb')](e)){var event=events[e];FaxInteraction[_0x68d5('0xc')](e,emitEvent(event));}}module[_0x68d5('0xd')]=FaxInteractionEvents;
\ No newline at end of file
+var _0x2d38=['hasOwnProperty','hook','exports','../../mysqldb','FaxMessage','setMaxListeners','update','remove','then','Users','map','findAll','unreadMessages','emit','catch'];(function(_0x576700,_0x319a12){var _0x28ff31=function(_0xf356e1){while(--_0xf356e1){_0x576700['push'](_0x576700['shift']());}};_0x28ff31(++_0x319a12);}(_0x2d38,0x13e));var _0x82d3=function(_0x3a7be9,_0x17d289){_0x3a7be9=_0x3a7be9-0x0;var _0x240707=_0x2d38[_0x3a7be9];return _0x240707;};'use strict';var EventEmitter=require('events');var FaxInteraction=require(_0x82d3('0x0'))['db']['FaxInteraction'];var FaxMessage=require(_0x82d3('0x0'))['db'][_0x82d3('0x1')];var FaxInteractionEvents=new EventEmitter();FaxInteractionEvents[_0x82d3('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x82d3('0x3'),'afterDestroy':_0x82d3('0x4')};function emitEvent(_0x26214c){return function(_0x3fa365,_0x2d330c,_0xbb342c){_0x3fa365['getUsers']({'attributes':['id'],'raw':!![]})[_0x82d3('0x5')](function(_0x10aba3){_0x3fa365['setDataValue'](_0x82d3('0x6'),_0x10aba3[_0x82d3('0x7')](function(_0x24f19e){return{'id':_0x24f19e['id']};}));return FaxMessage[_0x82d3('0x8')]({'where':{'FaxInteractionId':_0x3fa365['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x57efe9){_0x3fa365['setDataValue'](_0x82d3('0x9'),_0x57efe9['length']);FaxInteractionEvents[_0x82d3('0xa')](_0x26214c+':'+_0x3fa365['id'],_0x3fa365);FaxInteractionEvents['emit'](_0x26214c,_0x3fa365);_0xbb342c(null);})[_0x82d3('0xb')](_0xbb342c(null));};}for(var e in events){if(events[_0x82d3('0xc')](e)){var event=events[e];FaxInteraction[_0x82d3('0xd')](e,emitEvent(event));}}module[_0x82d3('0xe')]=FaxInteractionEvents;
\ No newline at end of file
index 0672c6f..6b18d0f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0254=['changed','closed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','lodash','util','bluebird','request-promise','path','rimraf','../../config/environment','./faxInteraction.attributes','define','FaxInteraction'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x0254,0x1b8));var _0x4025=function(_0x262915,_0x151191){_0x262915=_0x262915-0x0;var _0x332e60=_0x0254[_0x262915];return _0x332e60;};'use strict';var _=require(_0x4025('0x0'));var util=require(_0x4025('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x4025('0x2'));var rp=require(_0x4025('0x3'));var fs=require('fs');var path=require(_0x4025('0x4'));var rimraf=require(_0x4025('0x5'));var config=require(_0x4025('0x6'));var attributes=require(_0x4025('0x7'));module['exports']=function(_0x3311b9,_0x5b2e73){return _0x3311b9[_0x4025('0x8')](_0x4025('0x9'),attributes,{'tableName':'fax_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x4b378e,_0x5ad128,_0x4ddc8e){if(_0x4b378e[_0x4025('0xa')](_0x4025('0xb'))){_0x4b378e[_0x4025('0xc')]=moment()[_0x4025('0xd')](_0x4025('0xe'));}_0x4ddc8e(null,_0x4b378e);}}});};
\ No newline at end of file
+var _0x9df6=['moment','bluebird','request-promise','path','../../config/environment','./faxInteraction.attributes','exports','FaxInteraction','fax_interactions','changed','util','../../config/logger'];(function(_0x33eca6,_0x891651){var _0x1ada39=function(_0x31ab8c){while(--_0x31ab8c){_0x33eca6['push'](_0x33eca6['shift']());}};_0x1ada39(++_0x891651);}(_0x9df6,0xe2));var _0x69df=function(_0x4ea69d,_0x290f53){_0x4ea69d=_0x4ea69d-0x0;var _0x5318e0=_0x9df6[_0x4ea69d];return _0x5318e0;};'use strict';var _=require('lodash');var util=require(_0x69df('0x0'));var logger=require(_0x69df('0x1'))('api');var moment=require(_0x69df('0x2'));var BPromise=require(_0x69df('0x3'));var rp=require(_0x69df('0x4'));var fs=require('fs');var path=require(_0x69df('0x5'));var rimraf=require('rimraf');var config=require(_0x69df('0x6'));var attributes=require(_0x69df('0x7'));module[_0x69df('0x8')]=function(_0x34ef84,_0x381120){return _0x34ef84['define'](_0x69df('0x9'),attributes,{'tableName':_0x69df('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x485636,_0x5b3fcb,_0x586062){if(_0x485636[_0x69df('0xb')]('closed')){_0x485636['closedAt']=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');}_0x586062(null,_0x485636);}}});};
\ No newline at end of file
index a639d79..b925fa8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9d3f=['stringify','AddTagsToFaxInteraction','find','addTags','ids','omit','spread','AddTags','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','./faxInteraction.socket','info','FaxInteraction,\x20%s,\x20%s','debug','FaxInteraction,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','UpdateFaxInteraction','FaxInteraction','update','body','options','where','limit','then'];(function(_0x499009,_0x76d2c){var _0x413967=function(_0x2ec265){while(--_0x2ec265){_0x499009['push'](_0x499009['shift']());}};_0x413967(++_0x76d2c);}(_0x9d3f,0x1cb));var _0xf9d3=function(_0x2314b7,_0x1bea46){_0x2314b7=_0x2314b7-0x0;var _0x10d950=_0x9d3f[_0x2314b7];return _0x10d950;};'use strict';var _=require(_0xf9d3('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xf9d3('0x1'));var rs=require(_0xf9d3('0x2'));var fs=require('fs');var Redis=require(_0xf9d3('0x3'));var db=require(_0xf9d3('0x4'))['db'];var utils=require(_0xf9d3('0x5'));var logger=require(_0xf9d3('0x6'))('rpc');var config=require(_0xf9d3('0x7'));var jayson=require(_0xf9d3('0x8'));var client=jayson[_0xf9d3('0x9')][_0xf9d3('0xa')]({'port':0x232a});config[_0xf9d3('0xb')]=_[_0xf9d3('0xc')](config[_0xf9d3('0xb')],{'host':_0xf9d3('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xf9d3('0xb')]));require(_0xf9d3('0xe'))['register'](socket);function respondWithRpcPromise(_0x2b2c9f,_0x3f3c2f,_0x23ca78){return new BPromise(function(_0x21a595,_0x2d3efc){return client['request'](_0x2b2c9f,_0x23ca78)['then'](function(_0x598146){logger[_0xf9d3('0xf')](_0xf9d3('0x10'),_0x3f3c2f,'request\x20sent');logger[_0xf9d3('0x11')](_0xf9d3('0x12'),_0x3f3c2f,_0xf9d3('0x13'),JSON['stringify'](_0x598146));if(_0x598146[_0xf9d3('0x14')]){if(_0x598146['error'][_0xf9d3('0x15')]===0x1f4){logger[_0xf9d3('0x14')]('FaxInteraction,\x20%s,\x20%s',_0x3f3c2f,_0x598146[_0xf9d3('0x14')][_0xf9d3('0x16')]);return _0x2d3efc(_0x598146['error'][_0xf9d3('0x16')]);}logger[_0xf9d3('0x14')]('FaxInteraction,\x20%s,\x20%s',_0x3f3c2f,_0x598146['error']['message']);return _0x21a595(_0x598146[_0xf9d3('0x14')][_0xf9d3('0x16')]);}else{logger[_0xf9d3('0xf')](_0xf9d3('0x10'),_0x3f3c2f,_0xf9d3('0x13'));_0x21a595(_0x598146[_0xf9d3('0x17')][_0xf9d3('0x16')]);}})[_0xf9d3('0x18')](function(_0x274d3e){logger[_0xf9d3('0x14')]('FaxInteraction,\x20%s,\x20%s',_0x3f3c2f,_0x274d3e);_0x2d3efc(_0x274d3e);});});}exports[_0xf9d3('0x19')]=function(_0x37dc2b){var _0x384265=this;return new Promise(function(_0x2dae46,_0x42130d){return db[_0xf9d3('0x1a')][_0xf9d3('0x1b')](_0x37dc2b[_0xf9d3('0x1c')],{'raw':_0x37dc2b[_0xf9d3('0x1d')]?_0x37dc2b[_0xf9d3('0x1d')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x37dc2b[_0xf9d3('0x1d')]?_0x37dc2b[_0xf9d3('0x1d')][_0xf9d3('0x1e')]||null:null,'attributes':_0x37dc2b[_0xf9d3('0x1d')]?_0x37dc2b[_0xf9d3('0x1d')]['attributes']||null:null,'limit':_0x37dc2b[_0xf9d3('0x1d')]?_0x37dc2b['options'][_0xf9d3('0x1f')]||null:null})[_0xf9d3('0x20')](function(_0xdf46d7){logger['info'](_0xf9d3('0x19'),_0x37dc2b);logger[_0xf9d3('0x11')]('UpdateFaxInteraction',_0x37dc2b,JSON[_0xf9d3('0x21')](_0xdf46d7));_0x2dae46(_0xdf46d7);})[_0xf9d3('0x18')](function(_0x3daa01){logger[_0xf9d3('0x14')](_0xf9d3('0x19'),_0x3daa01[_0xf9d3('0x16')],_0x37dc2b);_0x42130d(_0x384265[_0xf9d3('0x14')](0x1f4,_0x3daa01[_0xf9d3('0x16')]));});});};exports[_0xf9d3('0x22')]=function(_0x5a7c6e){return new Promise(function(_0x18fa74,_0x38e96a){return db[_0xf9d3('0x1a')][_0xf9d3('0x23')]({'where':_0x5a7c6e[_0xf9d3('0x1d')]?_0x5a7c6e[_0xf9d3('0x1d')][_0xf9d3('0x1e')]||null:null})[_0xf9d3('0x20')](function(_0xdae0c6){if(_0xdae0c6){return _0xdae0c6[_0xf9d3('0x24')](_0x5a7c6e['body'][_0xf9d3('0x25')],_[_0xf9d3('0x26')](_0x5a7c6e[_0xf9d3('0x1c')],[_0xf9d3('0x25'),'id'])||{});}})[_0xf9d3('0x27')](function(_0x541ba4){logger[_0xf9d3('0xf')]('AddTags',_0x5a7c6e);logger[_0xf9d3('0x11')](_0xf9d3('0x28'),_0x5a7c6e,JSON[_0xf9d3('0x21')](_0x541ba4));_0x18fa74(_0x541ba4);})['catch'](function(_0x5b82eb){logger[_0xf9d3('0x14')](_0xf9d3('0x28'),_0x5b82eb[_0xf9d3('0x16')],_0x5a7c6e);_0x38e96a(_this[_0xf9d3('0x14')](0x1f4,_0x5b82eb[_0xf9d3('0x16')]));});});};
\ No newline at end of file
+var _0x4823=['attributes','limit','AddTagsToFaxInteraction','then','addTags','ids','omit','spread','AddTags','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','client','http','defaults','redis','./faxInteraction.socket','request','info','FaxInteraction,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','UpdateFaxInteraction','FaxInteraction','update','body','options','where'];(function(_0x3cc17c,_0x59ed8c){var _0x14a694=function(_0x155cdb){while(--_0x155cdb){_0x3cc17c['push'](_0x3cc17c['shift']());}};_0x14a694(++_0x59ed8c);}(_0x4823,0xe7));var _0x3482=function(_0xbe40ad,_0x44343c){_0xbe40ad=_0xbe40ad-0x0;var _0x50fac9=_0x4823[_0xbe40ad];return _0x50fac9;};'use strict';var _=require(_0x3482('0x0'));var util=require(_0x3482('0x1'));var moment=require(_0x3482('0x2'));var BPromise=require(_0x3482('0x3'));var rs=require(_0x3482('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x3482('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x3482('0x6'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x3482('0x7')][_0x3482('0x8')]({'port':0x232a});config['redis']=_[_0x3482('0x9')](config[_0x3482('0xa')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x3482('0xa')]));require(_0x3482('0xb'))['register'](socket);function respondWithRpcPromise(_0x3bcc87,_0xaba44d,_0x13decd){return new BPromise(function(_0x28277b,_0x2c9672){return client[_0x3482('0xc')](_0x3bcc87,_0x13decd)['then'](function(_0x53ecc5){logger[_0x3482('0xd')](_0x3482('0xe'),_0xaba44d,_0x3482('0xf'));logger[_0x3482('0x10')]('FaxInteraction,\x20%s,\x20%s,\x20%s',_0xaba44d,_0x3482('0xf'),JSON[_0x3482('0x11')](_0x53ecc5));if(_0x53ecc5[_0x3482('0x12')]){if(_0x53ecc5[_0x3482('0x12')][_0x3482('0x13')]===0x1f4){logger['error'](_0x3482('0xe'),_0xaba44d,_0x53ecc5[_0x3482('0x12')][_0x3482('0x14')]);return _0x2c9672(_0x53ecc5[_0x3482('0x12')][_0x3482('0x14')]);}logger[_0x3482('0x12')](_0x3482('0xe'),_0xaba44d,_0x53ecc5['error']['message']);return _0x28277b(_0x53ecc5['error']['message']);}else{logger['info'](_0x3482('0xe'),_0xaba44d,_0x3482('0xf'));_0x28277b(_0x53ecc5['result']['message']);}})[_0x3482('0x15')](function(_0x36c5e7){logger[_0x3482('0x12')](_0x3482('0xe'),_0xaba44d,_0x36c5e7);_0x2c9672(_0x36c5e7);});});}exports[_0x3482('0x16')]=function(_0x5e8156){var _0x7e6d6c=this;return new Promise(function(_0x283b13,_0x445321){return db[_0x3482('0x17')][_0x3482('0x18')](_0x5e8156[_0x3482('0x19')],{'raw':_0x5e8156[_0x3482('0x1a')]?_0x5e8156[_0x3482('0x1a')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5e8156[_0x3482('0x1a')]?_0x5e8156[_0x3482('0x1a')][_0x3482('0x1b')]||null:null,'attributes':_0x5e8156['options']?_0x5e8156[_0x3482('0x1a')][_0x3482('0x1c')]||null:null,'limit':_0x5e8156['options']?_0x5e8156[_0x3482('0x1a')][_0x3482('0x1d')]||null:null})['then'](function(_0xf86bdc){logger[_0x3482('0xd')]('UpdateFaxInteraction',_0x5e8156);logger[_0x3482('0x10')](_0x3482('0x16'),_0x5e8156,JSON[_0x3482('0x11')](_0xf86bdc));_0x283b13(_0xf86bdc);})[_0x3482('0x15')](function(_0x55b273){logger[_0x3482('0x12')](_0x3482('0x16'),_0x55b273[_0x3482('0x14')],_0x5e8156);_0x445321(_0x7e6d6c['error'](0x1f4,_0x55b273[_0x3482('0x14')]));});});};exports[_0x3482('0x1e')]=function(_0x3bbdfa){return new Promise(function(_0x207e74,_0xc4bf3d){return db[_0x3482('0x17')]['find']({'where':_0x3bbdfa[_0x3482('0x1a')]?_0x3bbdfa[_0x3482('0x1a')][_0x3482('0x1b')]||null:null})[_0x3482('0x1f')](function(_0x239311){if(_0x239311){return _0x239311[_0x3482('0x20')](_0x3bbdfa[_0x3482('0x19')][_0x3482('0x21')],_[_0x3482('0x22')](_0x3bbdfa[_0x3482('0x19')],['ids','id'])||{});}})[_0x3482('0x23')](function(_0x549a5e){logger[_0x3482('0xd')](_0x3482('0x24'),_0x3bbdfa);logger[_0x3482('0x10')](_0x3482('0x24'),_0x3bbdfa,JSON[_0x3482('0x11')](_0x549a5e));_0x207e74(_0x549a5e);})[_0x3482('0x15')](function(_0x4433fd){logger[_0x3482('0x12')]('AddTags',_0x4433fd[_0x3482('0x14')],_0x3bbdfa);_0xc4bf3d(_this['error'](0x1f4,_0x4433fd[_0x3482('0x14')]));});});};
\ No newline at end of file
index ed9131e..5c98109 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5935=['update','emit','register','length','faxInteraction:','save'];(function(_0x3c0aa8,_0x46552e){var _0x4b89be=function(_0x48779c){while(--_0x48779c){_0x3c0aa8['push'](_0x3c0aa8['shift']());}};_0x4b89be(++_0x46552e);}(_0x5935,0xd1));var _0x5593=function(_0x67f95e,_0x3ca797){_0x67f95e=_0x67f95e-0x0;var _0x538f5a=_0x5935[_0x67f95e];return _0x538f5a;};'use strict';var FaxInteractionEvents=require('./faxInteraction.events');var events=[_0x5593('0x0'),'remove',_0x5593('0x1')];function createListener(_0x3a1510,_0x44bf1a){return function(_0x137f27){_0x44bf1a[_0x5593('0x2')](_0x3a1510,_0x137f27);};}function removeListener(_0x3c5a6a,_0xc7aa6d){return function(){FaxInteractionEvents['removeListener'](_0x3c5a6a,_0xc7aa6d);};}exports[_0x5593('0x3')]=function(_0x1c3b39){for(var _0x1e7e8e=0x0,_0x5b4193=events[_0x5593('0x4')];_0x1e7e8e<_0x5b4193;_0x1e7e8e++){var _0x2151de=events[_0x1e7e8e];var _0x326e31=createListener(_0x5593('0x5')+_0x2151de,_0x1c3b39);FaxInteractionEvents['on'](_0x2151de,_0x326e31);}};
\ No newline at end of file
+var _0x441e=['save','remove','update','removeListener','register','length','./faxInteraction.events'];(function(_0x5e17c4,_0x31787b){var _0x4c9a25=function(_0x462683){while(--_0x462683){_0x5e17c4['push'](_0x5e17c4['shift']());}};_0x4c9a25(++_0x31787b);}(_0x441e,0x76));var _0xe441=function(_0x43bcbf,_0x4d6833){_0x43bcbf=_0x43bcbf-0x0;var _0x5af252=_0x441e[_0x43bcbf];return _0x5af252;};'use strict';var FaxInteractionEvents=require(_0xe441('0x0'));var events=[_0xe441('0x1'),_0xe441('0x2'),_0xe441('0x3')];function createListener(_0x288ff7,_0x5253b3){return function(_0x3dca12){_0x5253b3['emit'](_0x288ff7,_0x3dca12);};}function removeListener(_0x5df635,_0x3cb9d3){return function(){FaxInteractionEvents[_0xe441('0x4')](_0x5df635,_0x3cb9d3);};}exports[_0xe441('0x5')]=function(_0x1913dc){for(var _0x54fc80=0x0,_0x2c2c99=events[_0xe441('0x6')];_0x54fc80<_0x2c2c99;_0x54fc80++){var _0x34a533=events[_0x54fc80];var _0x2926f5=createListener('faxInteraction:'+_0x34a533,_0x1913dc);FaxInteractionEvents['on'](_0x34a533,_0x2926f5);}};
\ No newline at end of file
index 1a5132e..c8c6bf1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc03=['/:id','faxinteraction:update','delete','faxinteraction:destroy','destroy','/:id/tags','removeTags','exports','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxInteraction.controller','isAuthenticated','index','get','show','/:id/messages','getMessages','download','post','addMessage','tracked','fax','faxinteraction:addtags','addTags','put'];(function(_0x88cd7b,_0x4c884c){var _0x56fcc8=function(_0x513b3d){while(--_0x513b3d){_0x88cd7b['push'](_0x88cd7b['shift']());}};_0x56fcc8(++_0x4c884c);}(_0xdc03,0x65));var _0x3dc0=function(_0x22093e,_0x58e80f){_0x22093e=_0x22093e-0x0;var _0x1684c0=_0xdc03[_0x22093e];return _0x1684c0;};'use strict';var multer=require(_0x3dc0('0x0'));var util=require('util');var path=require(_0x3dc0('0x1'));var timeout=require(_0x3dc0('0x2'));var express=require('express');var router=express[_0x3dc0('0x3')]();var fs_extra=require(_0x3dc0('0x4'));var auth=require(_0x3dc0('0x5'));var interaction=require(_0x3dc0('0x6'));var config=require(_0x3dc0('0x7'));var controller=require(_0x3dc0('0x8'));router['get']('/',auth[_0x3dc0('0x9')](),controller[_0x3dc0('0xa')]);router[_0x3dc0('0xb')]('/describe',auth[_0x3dc0('0x9')](),controller['describe']);router['get']('/:id',auth[_0x3dc0('0x9')](),controller[_0x3dc0('0xc')]);router[_0x3dc0('0xb')](_0x3dc0('0xd'),auth[_0x3dc0('0x9')](),controller[_0x3dc0('0xe')]);router[_0x3dc0('0xb')]('/:id/download',auth['isAuthenticated'](),controller[_0x3dc0('0xf')]);router[_0x3dc0('0x10')]('/',auth[_0x3dc0('0x9')](),controller['create']);router['post'](_0x3dc0('0xd'),auth['isAuthenticated'](),controller[_0x3dc0('0x11')]);router['post']('/:id/tags',auth[_0x3dc0('0x9')](),interaction[_0x3dc0('0x12')](_0x3dc0('0x13'),_0x3dc0('0x14')),controller[_0x3dc0('0x15')]);router[_0x3dc0('0x16')](_0x3dc0('0x17'),auth[_0x3dc0('0x9')](),interaction['tracked'](_0x3dc0('0x13'),_0x3dc0('0x18')),controller['update']);router[_0x3dc0('0x19')](_0x3dc0('0x17'),auth[_0x3dc0('0x9')](),interaction['tracked'](_0x3dc0('0x13'),_0x3dc0('0x1a')),controller[_0x3dc0('0x1b')]);router['delete'](_0x3dc0('0x1c'),auth[_0x3dc0('0x9')](),controller[_0x3dc0('0x1d')]);module[_0x3dc0('0x1e')]=router;
\ No newline at end of file
+var _0x52fa=['multer','util','path','Router','fs-extra','../../config/environment','./faxInteraction.controller','index','get','/describe','isAuthenticated','describe','/:id','show','/:id/messages','getMessages','/:id/download','download','post','addMessage','/:id/tags','tracked','fax','addTags','faxinteraction:update','update'];(function(_0xe46f22,_0x1d463d){var _0x33112c=function(_0x47a8bf){while(--_0x47a8bf){_0xe46f22['push'](_0xe46f22['shift']());}};_0x33112c(++_0x1d463d);}(_0x52fa,0x82));var _0xa52f=function(_0x229b66,_0x21752d){_0x229b66=_0x229b66-0x0;var _0x511d0b=_0x52fa[_0x229b66];return _0x511d0b;};'use strict';var multer=require(_0xa52f('0x0'));var util=require(_0xa52f('0x1'));var path=require(_0xa52f('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xa52f('0x3')]();var fs_extra=require(_0xa52f('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xa52f('0x5'));var controller=require(_0xa52f('0x6'));router['get']('/',auth['isAuthenticated'](),controller[_0xa52f('0x7')]);router[_0xa52f('0x8')](_0xa52f('0x9'),auth[_0xa52f('0xa')](),controller[_0xa52f('0xb')]);router['get'](_0xa52f('0xc'),auth[_0xa52f('0xa')](),controller[_0xa52f('0xd')]);router[_0xa52f('0x8')](_0xa52f('0xe'),auth[_0xa52f('0xa')](),controller[_0xa52f('0xf')]);router['get'](_0xa52f('0x10'),auth[_0xa52f('0xa')](),controller[_0xa52f('0x11')]);router[_0xa52f('0x12')]('/',auth['isAuthenticated'](),controller['create']);router[_0xa52f('0x12')](_0xa52f('0xe'),auth[_0xa52f('0xa')](),controller[_0xa52f('0x13')]);router[_0xa52f('0x12')](_0xa52f('0x14'),auth[_0xa52f('0xa')](),interaction[_0xa52f('0x15')](_0xa52f('0x16'),'faxinteraction:addtags'),controller[_0xa52f('0x17')]);router['put'](_0xa52f('0xc'),auth[_0xa52f('0xa')](),interaction[_0xa52f('0x15')](_0xa52f('0x16'),_0xa52f('0x18')),controller[_0xa52f('0x19')]);router['delete'](_0xa52f('0xc'),auth[_0xa52f('0xa')](),interaction[_0xa52f('0x15')]('fax','faxinteraction:destroy'),controller['destroy']);router['delete'](_0xa52f('0x14'),auth['isAuthenticated'](),controller['removeTags']);module['exports']=router;
\ No newline at end of file
index 2b9cd67..99f7549 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda65=['out','DATE','sequelize','exports','TEXT','BOOLEAN','ENUM'];(function(_0x4474d3,_0x72afd6){var _0xd87b54=function(_0x2fa4af){while(--_0x2fa4af){_0x4474d3['push'](_0x4474d3['shift']());}};_0xd87b54(++_0x72afd6);}(_0xda65,0x1d0));var _0x5da6=function(_0x218447,_0x284713){_0x218447=_0x218447-0x0;var _0x165a37=_0xda65[_0x218447];return _0x165a37;};'use strict';var Sequelize=require(_0x5da6('0x0'));module[_0x5da6('0x1')]={'body':{'type':Sequelize[_0x5da6('0x2')]('medium'),'allowNull':![]},'read':{'type':Sequelize[_0x5da6('0x3')],'defaultValue':![]},'direction':{'type':Sequelize[_0x5da6('0x4')]('in',_0x5da6('0x5')),'defaultValue':'out','allowNull':![]},'failMessage':{'type':Sequelize['TEXT'],'defaultValue':null},'readAt':{'type':Sequelize[_0x5da6('0x6')]}};
\ No newline at end of file
+var _0x3df4=['BOOLEAN','ENUM','out','TEXT','medium'];(function(_0x39c2b4,_0x4fc8ed){var _0x1312d8=function(_0x26b1e7){while(--_0x26b1e7){_0x39c2b4['push'](_0x39c2b4['shift']());}};_0x1312d8(++_0x4fc8ed);}(_0x3df4,0x102));var _0x43df=function(_0x46ee2c,_0x199875){_0x46ee2c=_0x46ee2c-0x0;var _0x5a409b=_0x3df4[_0x46ee2c];return _0x5a409b;};'use strict';var Sequelize=require('sequelize');module['exports']={'body':{'type':Sequelize[_0x43df('0x0')](_0x43df('0x1')),'allowNull':![]},'read':{'type':Sequelize[_0x43df('0x2')],'defaultValue':![]},'direction':{'type':Sequelize[_0x43df('0x3')]('in',_0x43df('0x4')),'defaultValue':_0x43df('0x4'),'allowNull':![]},'failMessage':{'type':Sequelize[_0x43df('0x0')],'defaultValue':null},'readAt':{'type':Sequelize['DATE']}};
\ No newline at end of file
index 8cdca62..9564d77 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x122e=['code','FaxMessage,\x20%s,\x20%s','message','info','result','catch','sendStatus','end','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','stack','name','send','map','rawAttributes','type','model','query','keys','filters','intersection','attributes','fields','length','sort','where','pick','merge','VIRTUAL','filter','options','FaxMessage','includeAll','include','findAll','rows','params','find','body','destroy','describe','accept','fax','read','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','FaxInteraction','FaxInteractionId','isNil','read1stAt','interaction','get','[FAXMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','Sequelize','QueryTypes','SELECT','User','fullname','internal','manual','interface','SIP/%s','channel','event','EventManager','acceptmessage','RejectMessage','rejectMessage','sequelize','contact','email','rejectmessage','create','Attachment','findOne','SendFax','FaxAccountId','AttachmentId','download','join','root','server','attachments','basename','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','ejs','fs-extra','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','redis','localhost','register','client','http','then','request\x20sent','FaxMessage,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x5eb39e,_0x4bac19){var _0x401f5e=function(_0x1c6225){while(--_0x1c6225){_0x5eb39e['push'](_0x5eb39e['shift']());}};_0x401f5e(++_0x4bac19);}(_0x122e,0x178));var _0xe122=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x122e[_0x321bb2];return _0x9c12ed;};'use strict';var emlformat=require(_0xe122('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xe122('0x1'));var jsonpatch=require(_0xe122('0x2'));var rp=require(_0xe122('0x3'));var moment=require(_0xe122('0x4'));var BPromise=require(_0xe122('0x5'));var Mustache=require('mustache');var util=require(_0xe122('0x6'));var path=require(_0xe122('0x7'));var sox=require(_0xe122('0x8'));var csv=require('to-csv');var ejs=require(_0xe122('0x9'));var fs=require('fs');var fs_extra=require(_0xe122('0xa'));var _=require('lodash');var squel=require(_0xe122('0xb'));var crypto=require(_0xe122('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xe122('0xd'));var toCsv=require(_0xe122('0xe'));var querystring=require(_0xe122('0xf'));var Papa=require(_0xe122('0x10'));var Redis=require(_0xe122('0x11'));var authService=require(_0xe122('0x12'));var qs=require(_0xe122('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xe122('0x14'));var logger=require(_0xe122('0x15'))(_0xe122('0x16'));var utils=require(_0xe122('0x17'));var config=require(_0xe122('0x18'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0xe122('0x19')]=_['defaults'](config[_0xe122('0x19')],{'host':_0xe122('0x1a'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./faxMessage.socket')[_0xe122('0x1b')](socket);var jayson=require('jayson/promise');var client=jayson[_0xe122('0x1c')][_0xe122('0x1d')]({'port':0x232c});var client9002=jayson['client'][_0xe122('0x1d')]({'port':0x232a});function respondWithRpcPromise(_0x4850dd,_0x20984b,_0x466e73,_0x3dc61b){return new BPromise(function(_0x33a589,_0x5b5641){var _0x250796=_0x3dc61b||client;return _0x250796['request'](_0x4850dd,_0x466e73)[_0xe122('0x1e')](function(_0x4b8b4f){logger['info']('FaxMessage,\x20%s,\x20%s',_0x20984b,_0xe122('0x1f'));logger['debug'](_0xe122('0x20'),_0x20984b,_0xe122('0x1f'),JSON[_0xe122('0x21')](_0x4b8b4f));if(_0x4b8b4f['error']){if(_0x4b8b4f[_0xe122('0x22')][_0xe122('0x23')]===0x1f4){logger[_0xe122('0x22')]('FaxMessage,\x20%s,\x20%s',_0x20984b,_0x4b8b4f[_0xe122('0x22')]['message']);return _0x5b5641(_0x4b8b4f['error']['message']);}logger[_0xe122('0x22')](_0xe122('0x24'),_0x20984b,_0x4b8b4f['error'][_0xe122('0x25')]);return _0x33a589(_0x4b8b4f[_0xe122('0x22')][_0xe122('0x25')]);}else{logger[_0xe122('0x26')](_0xe122('0x24'),_0x20984b,_0xe122('0x1f'));_0x33a589(_0x4b8b4f[_0xe122('0x27')]['message']);}})[_0xe122('0x28')](function(_0x6dc5d0){logger[_0xe122('0x22')](_0xe122('0x24'),_0x20984b,_0x6dc5d0);_0x5b5641(_0x6dc5d0);});});}function respondWithStatusCode(_0xf8b3ec,_0x2ff45c){_0x2ff45c=_0x2ff45c||0xcc;return function(_0x25a5d3){if(_0x25a5d3){return _0xf8b3ec[_0xe122('0x29')](_0x2ff45c);}return _0xf8b3ec['status'](_0x2ff45c)[_0xe122('0x2a')]();};}function respondWithResult(_0x185760,_0x3ca583){_0x3ca583=_0x3ca583||0xc8;return function(_0x18a7ef){if(_0x18a7ef){return _0x185760[_0xe122('0x2b')](_0x3ca583)[_0xe122('0x2c')](_0x18a7ef);}};}function respondWithFilteredResult(_0x14febb,_0x6f51d3){return function(_0x22ebf8){if(_0x22ebf8){var _0x1b9cd6=typeof _0x6f51d3[_0xe122('0x2d')]==='undefined'&&typeof _0x6f51d3['limit']===_0xe122('0x2e');var _0x51a769=_0x22ebf8[_0xe122('0x2f')];var _0x5a3b02=_0x1b9cd6?0x0:_0x6f51d3[_0xe122('0x2d')];var _0x48f873=_0x1b9cd6?_0x22ebf8['count']:_0x6f51d3[_0xe122('0x2d')]+_0x6f51d3[_0xe122('0x30')];var _0x49a918;if(_0x48f873>=_0x51a769){_0x48f873=_0x51a769;_0x49a918=0xc8;}else{_0x49a918=0xce;}_0x14febb[_0xe122('0x2b')](_0x49a918);return _0x14febb[_0xe122('0x31')](_0xe122('0x32'),_0x5a3b02+'-'+_0x48f873+'/'+_0x51a769)['json'](_0x22ebf8);}return null;};}function patchUpdates(_0x38ac67){return function(_0x3ba407){try{jsonpatch[_0xe122('0x33')](_0x3ba407,_0x38ac67,!![]);}catch(_0x396179){return BPromise[_0xe122('0x34')](_0x396179);}return _0x3ba407[_0xe122('0x35')]();};}function saveUpdates(_0x3a7848,_0xfe024a){return function(_0x32a92a){if(_0x32a92a){return _0x32a92a[_0xe122('0x36')](_0x3a7848)[_0xe122('0x1e')](function(_0x5861b1){return _0x5861b1;});}return null;};}function removeEntity(_0x11081b,_0x31be88){return function(_0x455211){if(_0x455211){return _0x455211['destroy']()[_0xe122('0x1e')](function(){_0x11081b[_0xe122('0x2b')](0xcc)[_0xe122('0x2a')]();});}};}function handleEntityNotFound(_0xbe1b0a,_0x25ed56){return function(_0x463957){if(!_0x463957){_0xbe1b0a[_0xe122('0x29')](0x194);}return _0x463957;};}function handleError(_0x329add,_0x105e72){_0x105e72=_0x105e72||0x1f4;return function(_0x523969){logger[_0xe122('0x22')](_0x523969[_0xe122('0x37')]);if(_0x523969[_0xe122('0x38')]){delete _0x523969[_0xe122('0x38')];}_0x329add[_0xe122('0x2b')](_0x105e72)[_0xe122('0x39')](_0x523969);};}exports['index']=function(_0x51576b,_0x58c793){var _0xb66824={},_0x330214={},_0x4f7f49={'count':0x0,'rows':[]};var _0x491149=_[_0xe122('0x3a')](db['FaxMessage'][_0xe122('0x3b')],function(_0x2ee129){return{'name':_0x2ee129['fieldName'],'type':_0x2ee129[_0xe122('0x3c')]['key']};});_0x330214[_0xe122('0x3d')]=_[_0xe122('0x3a')](_0x491149,_0xe122('0x38'));_0x330214[_0xe122('0x3e')]=_[_0xe122('0x3f')](_0x51576b[_0xe122('0x3e')]);_0x330214[_0xe122('0x40')]=_[_0xe122('0x41')](_0x330214[_0xe122('0x3d')],_0x330214['query']);_0xb66824[_0xe122('0x42')]=_['intersection'](_0x330214[_0xe122('0x3d')],qs[_0xe122('0x43')](_0x51576b[_0xe122('0x3e')][_0xe122('0x43')]));_0xb66824['attributes']=_0xb66824['attributes'][_0xe122('0x44')]?_0xb66824[_0xe122('0x42')]:_0x330214[_0xe122('0x3d')];if(!_0x51576b[_0xe122('0x3e')]['hasOwnProperty']('nolimit')){_0xb66824[_0xe122('0x30')]=qs[_0xe122('0x30')](_0x51576b[_0xe122('0x3e')][_0xe122('0x30')]);_0xb66824[_0xe122('0x2d')]=qs[_0xe122('0x2d')](_0x51576b[_0xe122('0x3e')]['offset']);}_0xb66824['order']=qs[_0xe122('0x45')](_0x51576b[_0xe122('0x3e')]['sort']);_0xb66824[_0xe122('0x46')]=qs[_0xe122('0x40')](_[_0xe122('0x47')](_0x51576b[_0xe122('0x3e')],_0x330214[_0xe122('0x40')]),_0x491149);if(_0x51576b[_0xe122('0x3e')]['filter']){_0xb66824[_0xe122('0x46')]=_[_0xe122('0x48')](_0xb66824[_0xe122('0x46')],{'$or':_['map'](_0x491149,function(_0x1decf5){if(_0x1decf5[_0xe122('0x3c')]!==_0xe122('0x49')){var _0x4f85be={};_0x4f85be[_0x1decf5['name']]={'$like':'%'+_0x51576b[_0xe122('0x3e')][_0xe122('0x4a')]+'%'};return _0x4f85be;}})});}_0xb66824=_[_0xe122('0x48')]({},_0xb66824,_0x51576b[_0xe122('0x4b')]);var _0x282abf={'where':_0xb66824[_0xe122('0x46')]};return db[_0xe122('0x4c')][_0xe122('0x2f')](_0x282abf)[_0xe122('0x1e')](function(_0x1013d2){_0x4f7f49[_0xe122('0x2f')]=_0x1013d2;if(_0x51576b[_0xe122('0x3e')][_0xe122('0x4d')]){_0xb66824[_0xe122('0x4e')]=[{'all':!![]}];}return db[_0xe122('0x4c')][_0xe122('0x4f')](_0xb66824);})[_0xe122('0x1e')](function(_0x3e9add){_0x4f7f49[_0xe122('0x50')]=_0x3e9add;return _0x4f7f49;})['then'](respondWithFilteredResult(_0x58c793,_0xb66824))[_0xe122('0x28')](handleError(_0x58c793,null));};exports['show']=function(_0x3c22f6,_0x93deb4){var _0x3e29d7={'raw':!![],'where':{'id':_0x3c22f6[_0xe122('0x51')]['id']}},_0x11d0aa={};_0x11d0aa[_0xe122('0x3d')]=_[_0xe122('0x3f')](db[_0xe122('0x4c')][_0xe122('0x3b')]);_0x11d0aa[_0xe122('0x3e')]=_[_0xe122('0x3f')](_0x3c22f6[_0xe122('0x3e')]);_0x11d0aa[_0xe122('0x40')]=_[_0xe122('0x41')](_0x11d0aa[_0xe122('0x3d')],_0x11d0aa['query']);_0x3e29d7['attributes']=_[_0xe122('0x41')](_0x11d0aa[_0xe122('0x3d')],qs[_0xe122('0x43')](_0x3c22f6[_0xe122('0x3e')][_0xe122('0x43')]));_0x3e29d7[_0xe122('0x42')]=_0x3e29d7['attributes']['length']?_0x3e29d7['attributes']:_0x11d0aa['model'];if(_0x3c22f6[_0xe122('0x3e')][_0xe122('0x4d')]){_0x3e29d7[_0xe122('0x4e')]=[{'all':!![]}];}_0x3e29d7=_[_0xe122('0x48')]({},_0x3e29d7,_0x3c22f6[_0xe122('0x4b')]);return db[_0xe122('0x4c')][_0xe122('0x52')](_0x3e29d7)[_0xe122('0x1e')](handleEntityNotFound(_0x93deb4,null))[_0xe122('0x1e')](respondWithResult(_0x93deb4,null))['catch'](handleError(_0x93deb4,null));};exports[_0xe122('0x36')]=function(_0x5c3496,_0x470b23){if(_0x5c3496['body']['id']){delete _0x5c3496['body']['id'];}return db['FaxMessage'][_0xe122('0x52')]({'where':{'id':_0x5c3496[_0xe122('0x51')]['id']}})['then'](handleEntityNotFound(_0x470b23,null))[_0xe122('0x1e')](saveUpdates(_0x5c3496[_0xe122('0x53')],null))[_0xe122('0x1e')](respondWithResult(_0x470b23,null))[_0xe122('0x28')](handleError(_0x470b23,null));};exports[_0xe122('0x54')]=function(_0x430e67,_0x32b502){return db[_0xe122('0x4c')][_0xe122('0x52')]({'where':{'id':_0x430e67['params']['id']}})[_0xe122('0x1e')](handleEntityNotFound(_0x32b502,null))[_0xe122('0x1e')](removeEntity(_0x32b502,null))['catch'](handleError(_0x32b502,null));};exports[_0xe122('0x55')]=function(_0x8e09b7,_0x3c4440){return db[_0xe122('0x4c')][_0xe122('0x55')]()['then'](respondWithResult(_0x3c4440,null))[_0xe122('0x28')](handleError(_0x3c4440,null));};var interaction_log=require(_0xe122('0x15'))('fax-interactions');exports[_0xe122('0x56')]=function(_0x102ea1,_0x3826ea,_0x187897){var _0x4f579f={'agent':{},'channel':_0xe122('0x57')};if(_0x102ea1[_0xe122('0x53')]['id']){delete _0x102ea1[_0xe122('0x53')]['id'];}_0x102ea1['body'][_0xe122('0x58')]=!![];_0x102ea1[_0xe122('0x53')]['readAt']=moment()[_0xe122('0x59')](_0xe122('0x5a'));_0x102ea1[_0xe122('0x53')][_0xe122('0x5b')]=_0x102ea1['body'][_0xe122('0x5b')]||_0x102ea1[_0xe122('0x5c')]['id'];_0x4f579f[_0xe122('0x5d')]['id']=_0x102ea1['body'][_0xe122('0x5b')];return db['FaxMessage'][_0xe122('0x52')]({'where':{'id':_0x102ea1[_0xe122('0x51')]['id'],'UserId':null}})[_0xe122('0x1e')](handleEntityNotFound(_0x3826ea,null))['then'](saveUpdates(_0x102ea1[_0xe122('0x53')],null))['then'](function(_0x2b0956){if(_0x2b0956){_0x4f579f[_0xe122('0x25')]=_0x2b0956['get']({'plain':!![]});return db[_0xe122('0x5e')][_0xe122('0x52')]({'where':{'id':_0x2b0956[_0xe122('0x5f')]}});}return null;})[_0xe122('0x1e')](handleEntityNotFound(_0x3826ea,null))[_0xe122('0x1e')](function(_0x4054bd){if(_0x4054bd){return _0x4054bd[_0xe122('0x36')]({'UserId':_0x102ea1[_0xe122('0x53')]['UserId'],'read1stAt':_[_0xe122('0x60')](_0x4054bd[_0xe122('0x61')])?moment()[_0xe122('0x59')](_0xe122('0x5a')):undefined});}return null;})[_0xe122('0x1e')](function(_0x688835){if(_0x688835){_0x4f579f[_0xe122('0x62')]=_0x688835[_0xe122('0x63')]({'plain':!![]});interaction_log['info'](_0xe122('0x64'),_0x102ea1[_0xe122('0x5c')]['id'],_0x102ea1['user'][_0xe122('0x38')],_0x102ea1['user'][_0xe122('0x65')],_0x4f579f[_0xe122('0x62')]['id'],_0x102ea1[_0xe122('0x53')]?JSON[_0xe122('0x21')](_0x102ea1[_0xe122('0x53')]):_0xe122('0x66'));return respondWithRpcPromise('AcceptMessage',_0xe122('0x67'),_0x4f579f);}return null;})[_0xe122('0x1e')](function(_0x2a44e2){var _0x3025ef=_0xe122('0x68')+_0x2a44e2['message'][_0xe122('0x69')];return db['sequelize'][_0xe122('0x3e')](_0x3025ef,{'type':db[_0xe122('0x6a')][_0xe122('0x6b')][_0xe122('0x6c')],'raw':!![]})[_0xe122('0x1e')](function(_0x55abf9){return _0x55abf9;});})[_0xe122('0x1e')](function(_0xcf622f){if(_0xcf622f){_0x4f579f[_0xe122('0x25')]['contact']=_0xcf622f[0x0];if(!_0x102ea1[_0xe122('0x53')][_0xe122('0x5b')])return;return db[_0xe122('0x6d')][_0xe122('0x52')]({'where':{'id':_0x102ea1[_0xe122('0x53')]['UserId'],'role':_0xe122('0x5d')},'attributes':['id',_0xe122('0x38'),_0xe122('0x6e'),'email',_0xe122('0x6f')],'raw':!![]});}return null;})[_0xe122('0x1e')](function(_0x4d8f93){if(!_0x4d8f93)return null;_0x4f579f[_0xe122('0x25')][_0xe122('0x5d')]=_0x4d8f93;return _0x4f579f;})['then'](function(_0x297ed5){if(_0x297ed5){if(_0x102ea1[_0xe122('0x53')][_0xe122('0x70')]){_0x4f579f[_0xe122('0x25')][_0xe122('0x71')]=util[_0xe122('0x59')](_0xe122('0x72'),_0x102ea1[_0xe122('0x5c')][_0xe122('0x38')]);_0x4f579f[_0xe122('0x25')][_0xe122('0x73')]=_0x4f579f['channel'];_0x4f579f['message'][_0xe122('0x74')]=_0xe122('0x56');return respondWithRpcPromise(_0xe122('0x75'),_0xe122('0x75'),{'event':_0xe122('0x76'),'message':_0x4f579f[_0xe122('0x25')]},client9002)[_0xe122('0x1e')](function(){return _0x4f579f;});}return _0x4f579f;}return null;})['then'](respondWithResult(_0x3826ea,null))[_0xe122('0x28')](handleError(_0x3826ea,null));};var interaction_log=require(_0xe122('0x15'))('fax-interactions');exports['reject']=function(_0x344127,_0x24fb05,_0x51b888){var _0x1c1805={'agent':{},'channel':_0xe122('0x57')};if(_0x344127[_0xe122('0x53')]['id']){delete _0x344127[_0xe122('0x53')]['id'];}_0x344127['body'][_0xe122('0x5b')]=_0x344127[_0xe122('0x53')][_0xe122('0x5b')]||_0x344127[_0xe122('0x5c')]['id'];_0x1c1805[_0xe122('0x5d')]['id']=_0x344127['body'][_0xe122('0x5b')];return db[_0xe122('0x4c')][_0xe122('0x52')]({'where':{'id':_0x344127[_0xe122('0x51')]['id'],'UserId':null}})[_0xe122('0x1e')](handleEntityNotFound(_0x24fb05,null))[_0xe122('0x1e')](function(_0x4843c2){if(_0x4843c2){_0x1c1805[_0xe122('0x25')]=_0x4843c2[_0xe122('0x63')]({'plain':!![]});return db[_0xe122('0x5e')][_0xe122('0x52')]({'where':{'id':_0x4843c2[_0xe122('0x5f')]}});}return null;})[_0xe122('0x1e')](handleEntityNotFound(_0x24fb05,null))[_0xe122('0x1e')](function(_0x11c329){if(_0x11c329){_0x1c1805[_0xe122('0x62')]=_0x11c329[_0xe122('0x63')]({'plain':!![]});interaction_log[_0xe122('0x26')]('[FAXMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x344127['user']['id'],_0x344127['user'][_0xe122('0x38')],_0x344127[_0xe122('0x5c')][_0xe122('0x65')],_0x1c1805['interaction']['id'],_0x344127[_0xe122('0x53')]?JSON[_0xe122('0x21')](_0x344127['body']):_0xe122('0x66'));return respondWithRpcPromise(_0xe122('0x77'),_0xe122('0x78'),_0x1c1805);}return null;})[_0xe122('0x1e')](function(_0x2ed8a8){var _0x2f01c1=_0xe122('0x68')+_0x2ed8a8['message'][_0xe122('0x69')];return db[_0xe122('0x79')][_0xe122('0x3e')](_0x2f01c1,{'type':db[_0xe122('0x6a')]['QueryTypes']['SELECT'],'raw':!![]})[_0xe122('0x1e')](function(_0x504758){return _0x504758;});})[_0xe122('0x1e')](function(_0x398061){if(_0x398061){_0x1c1805[_0xe122('0x25')][_0xe122('0x7a')]=_0x398061[0x0];if(!_0x344127[_0xe122('0x53')][_0xe122('0x5b')])return;return db[_0xe122('0x6d')][_0xe122('0x52')]({'where':{'id':_0x344127[_0xe122('0x53')][_0xe122('0x5b')],'role':_0xe122('0x5d')},'attributes':['id','name',_0xe122('0x6e'),_0xe122('0x7b'),_0xe122('0x6f')],'raw':!![]});}return null;})['then'](function(_0xba2473){if(!_0xba2473)return null;_0x1c1805[_0xe122('0x25')]['agent']=_0xba2473;return _0x1c1805;})['then'](function(_0x35941f){if(_0x35941f){_0x35941f['message'][_0xe122('0x71')]=util[_0xe122('0x59')]('SIP/%s',_0x344127[_0xe122('0x5c')][_0xe122('0x38')]);_0x35941f[_0xe122('0x25')][_0xe122('0x73')]=_0x1c1805[_0xe122('0x73')];_0x35941f[_0xe122('0x25')]['event']='reject';respondWithRpcPromise('EventManager',_0xe122('0x75'),{'event':_0xe122('0x7c'),'message':_0x35941f[_0xe122('0x25')]},client9002);return _0x1c1805;}return null;})['then'](respondWithResult(_0x24fb05,null))['catch'](handleError(_0x24fb05,null));};exports[_0xe122('0x7d')]=function(_0x58aa95,_0x5186fa){var _0x3fdc6f;return db[_0xe122('0x4c')][_0xe122('0x7d')](_0x58aa95[_0xe122('0x53')],{})[_0xe122('0x1e')](function(_0x1c75a3){_0x3fdc6f=_0x1c75a3;return db['CmContact']['findOne']({'where':{'id':_0x3fdc6f[_0xe122('0x69')]}});})[_0xe122('0x1e')](function(_0xd0a3d7){if(_[_0xe122('0x60')](_0xd0a3d7)){return;}else{_0x3fdc6f[_0xe122('0x57')]=_0xd0a3d7[_0xe122('0x57')];return db[_0xe122('0x7e')][_0xe122('0x7f')]({'where':{'id':_0x3fdc6f['AttachmentId']}});}})[_0xe122('0x1e')](function(_0x560e36){return respondWithRpcPromise(_0xe122('0x80'),'SendFax',{'FaxAccountId':_['isNil'](_0x58aa95[_0xe122('0x53')])?undefined:_0x58aa95[_0xe122('0x53')][_0xe122('0x81')],'path':_[_0xe122('0x60')](_0x560e36)?undefined:util['format']('/var/opt/motion2/server/files/attachments/%s',_0x560e36['basename']),'fax':_[_0xe122('0x60')](_0x3fdc6f['fax'])?undefined:_0x3fdc6f[_0xe122('0x57')],'AttachmentId':_0x3fdc6f[_0xe122('0x82')]},client9002);})['then'](respondWithResult(_0x5186fa,0xc9))[_0xe122('0x28')](handleError(_0x5186fa,null));};exports[_0xe122('0x83')]=function(_0x3635b6,_0x269102){var _0x19ab90=path[_0xe122('0x84')](config[_0xe122('0x85')],_0xe122('0x86'),'files',_0xe122('0x87'));return db['FaxMessage'][_0xe122('0x52')]({'where':{'id':_0x3635b6[_0xe122('0x51')]['id']},'include':[{'model':db[_0xe122('0x7e')],'as':_0xe122('0x7e')}]})['then'](handleEntityNotFound(_0x269102,null))['then'](function(_0x57510d){if(_0x57510d){return _0x269102[_0xe122('0x83')](path[_0xe122('0x84')](_0x19ab90,_0x57510d[_0xe122('0x7e')][_0xe122('0x88')]));}})['catch'](handleError(_0x269102,null));};
\ No newline at end of file
+var _0xc243=['stack','name','send','index','map','FaxMessage','rawAttributes','fieldName','key','model','query','keys','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','filters','pick','VIRTUAL','options','findAll','rows','params','length','includeAll','include','merge','find','update','body','describe','fax-interactions','fax','read','format','UserId','user','agent','get','FaxInteractionId','isNil','YYYY-MM-DD\x20HH:mm:ss','interaction','[FAXMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','AcceptMessage','ContactId','Sequelize','SELECT','contact','User','email','internal','interface','SIP/%s','channel','motionChannel','event','accept','EventManager','FaxInteraction','null','RejectMessage','rejectMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','fullname','rejectmessage','create','CmContact','findOne','AttachmentId','SendFax','FaxAccountId','/var/opt/motion2/server/files/attachments/%s','basename','download','root','server','files','attachments','Attachment','join','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./faxMessage.socket','register','jayson/promise','client','http','request','then','info','FaxMessage,\x20%s,\x20%s','debug','FaxMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','catch','sendStatus','status','end','json','limit','undefined','offset','count','set','Content-Range','apply','reject','destroy'];(function(_0x1e129a,_0x4bfa91){var _0x595d15=function(_0x116179){while(--_0x116179){_0x1e129a['push'](_0x1e129a['shift']());}};_0x595d15(++_0x4bfa91);}(_0xc243,0xe8));var _0x3c24=function(_0x257017,_0x330627){_0x257017=_0x257017-0x0;var _0x38536d=_0xc243[_0x257017];return _0x38536d;};'use strict';var emlformat=require(_0x3c24('0x0'));var rimraf=require(_0x3c24('0x1'));var zipdir=require(_0x3c24('0x2'));var jsonpatch=require(_0x3c24('0x3'));var rp=require(_0x3c24('0x4'));var moment=require(_0x3c24('0x5'));var BPromise=require(_0x3c24('0x6'));var Mustache=require(_0x3c24('0x7'));var util=require(_0x3c24('0x8'));var path=require('path');var sox=require(_0x3c24('0x9'));var csv=require(_0x3c24('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x3c24('0xb'));var squel=require(_0x3c24('0xc'));var crypto=require(_0x3c24('0xd'));var jsforce=require(_0x3c24('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x3c24('0xa'));var querystring=require(_0x3c24('0xf'));var Papa=require(_0x3c24('0x10'));var Redis=require(_0x3c24('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x3c24('0x12'));var as=require(_0x3c24('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x3c24('0x14'))('api');var utils=require(_0x3c24('0x15'));var config=require(_0x3c24('0x16'));var licenseUtil=require(_0x3c24('0x17'));var db=require(_0x3c24('0x18'))['db'];config[_0x3c24('0x19')]=_[_0x3c24('0x1a')](config[_0x3c24('0x19')],{'host':_0x3c24('0x1b'),'port':0x18eb});var socket=require(_0x3c24('0x1c'))(new Redis(config['redis']));require(_0x3c24('0x1d'))[_0x3c24('0x1e')](socket);var jayson=require(_0x3c24('0x1f'));var client=jayson[_0x3c24('0x20')][_0x3c24('0x21')]({'port':0x232c});var client9002=jayson[_0x3c24('0x20')][_0x3c24('0x21')]({'port':0x232a});function respondWithRpcPromise(_0x1eef7d,_0x288a7f,_0x5d3208,_0x186d54){return new BPromise(function(_0x56d303,_0x5c0f13){var _0x3b0b6b=_0x186d54||client;return _0x3b0b6b[_0x3c24('0x22')](_0x1eef7d,_0x5d3208)[_0x3c24('0x23')](function(_0x57adb0){logger[_0x3c24('0x24')](_0x3c24('0x25'),_0x288a7f,'request\x20sent');logger[_0x3c24('0x26')](_0x3c24('0x27'),_0x288a7f,'request\x20sent',JSON[_0x3c24('0x28')](_0x57adb0));if(_0x57adb0[_0x3c24('0x29')]){if(_0x57adb0[_0x3c24('0x29')][_0x3c24('0x2a')]===0x1f4){logger[_0x3c24('0x29')](_0x3c24('0x25'),_0x288a7f,_0x57adb0['error']['message']);return _0x5c0f13(_0x57adb0[_0x3c24('0x29')][_0x3c24('0x2b')]);}logger[_0x3c24('0x29')](_0x3c24('0x25'),_0x288a7f,_0x57adb0[_0x3c24('0x29')][_0x3c24('0x2b')]);return _0x56d303(_0x57adb0[_0x3c24('0x29')][_0x3c24('0x2b')]);}else{logger[_0x3c24('0x24')](_0x3c24('0x25'),_0x288a7f,_0x3c24('0x2c'));_0x56d303(_0x57adb0[_0x3c24('0x2d')][_0x3c24('0x2b')]);}})[_0x3c24('0x2e')](function(_0x1d07ad){logger[_0x3c24('0x29')](_0x3c24('0x25'),_0x288a7f,_0x1d07ad);_0x5c0f13(_0x1d07ad);});});}function respondWithStatusCode(_0x3fa715,_0x498121){_0x498121=_0x498121||0xcc;return function(_0x523d02){if(_0x523d02){return _0x3fa715[_0x3c24('0x2f')](_0x498121);}return _0x3fa715[_0x3c24('0x30')](_0x498121)[_0x3c24('0x31')]();};}function respondWithResult(_0x490dc5,_0x3d7086){_0x3d7086=_0x3d7086||0xc8;return function(_0x37024a){if(_0x37024a){return _0x490dc5[_0x3c24('0x30')](_0x3d7086)[_0x3c24('0x32')](_0x37024a);}};}function respondWithFilteredResult(_0x4129c8,_0x247277){return function(_0x354002){if(_0x354002){var _0x174766=typeof _0x247277['offset']==='undefined'&&typeof _0x247277[_0x3c24('0x33')]===_0x3c24('0x34');var _0x221a4a=_0x354002['count'];var _0x180d04=_0x174766?0x0:_0x247277[_0x3c24('0x35')];var _0x31e73d=_0x174766?_0x354002[_0x3c24('0x36')]:_0x247277['offset']+_0x247277[_0x3c24('0x33')];var _0xd9085a;if(_0x31e73d>=_0x221a4a){_0x31e73d=_0x221a4a;_0xd9085a=0xc8;}else{_0xd9085a=0xce;}_0x4129c8[_0x3c24('0x30')](_0xd9085a);return _0x4129c8[_0x3c24('0x37')](_0x3c24('0x38'),_0x180d04+'-'+_0x31e73d+'/'+_0x221a4a)[_0x3c24('0x32')](_0x354002);}return null;};}function patchUpdates(_0x26b3e8){return function(_0x33adba){try{jsonpatch[_0x3c24('0x39')](_0x33adba,_0x26b3e8,!![]);}catch(_0x4c7b6a){return BPromise[_0x3c24('0x3a')](_0x4c7b6a);}return _0x33adba['save']();};}function saveUpdates(_0x2f52ae,_0x3c5907){return function(_0x5a626a){if(_0x5a626a){return _0x5a626a['update'](_0x2f52ae)[_0x3c24('0x23')](function(_0x1854c0){return _0x1854c0;});}return null;};}function removeEntity(_0xe01b2f,_0x2495e0){return function(_0x3dbe62){if(_0x3dbe62){return _0x3dbe62[_0x3c24('0x3b')]()[_0x3c24('0x23')](function(){_0xe01b2f['status'](0xcc)[_0x3c24('0x31')]();});}};}function handleEntityNotFound(_0x44e7c8,_0xfb2713){return function(_0x9aedcc){if(!_0x9aedcc){_0x44e7c8[_0x3c24('0x2f')](0x194);}return _0x9aedcc;};}function handleError(_0x2b85c8,_0x21ecf1){_0x21ecf1=_0x21ecf1||0x1f4;return function(_0x303cc8){logger[_0x3c24('0x29')](_0x303cc8[_0x3c24('0x3c')]);if(_0x303cc8[_0x3c24('0x3d')]){delete _0x303cc8[_0x3c24('0x3d')];}_0x2b85c8['status'](_0x21ecf1)[_0x3c24('0x3e')](_0x303cc8);};}exports[_0x3c24('0x3f')]=function(_0x2af3c5,_0x1ae1cc){var _0x37cd32={},_0x4d1336={},_0x3ab5ea={'count':0x0,'rows':[]};var _0x3dcb02=_[_0x3c24('0x40')](db[_0x3c24('0x41')][_0x3c24('0x42')],function(_0x2d2f32){return{'name':_0x2d2f32[_0x3c24('0x43')],'type':_0x2d2f32['type'][_0x3c24('0x44')]};});_0x4d1336[_0x3c24('0x45')]=_[_0x3c24('0x40')](_0x3dcb02,_0x3c24('0x3d'));_0x4d1336[_0x3c24('0x46')]=_[_0x3c24('0x47')](_0x2af3c5[_0x3c24('0x46')]);_0x4d1336['filters']=_[_0x3c24('0x48')](_0x4d1336['model'],_0x4d1336[_0x3c24('0x46')]);_0x37cd32['attributes']=_['intersection'](_0x4d1336[_0x3c24('0x45')],qs['fields'](_0x2af3c5[_0x3c24('0x46')][_0x3c24('0x49')]));_0x37cd32[_0x3c24('0x4a')]=_0x37cd32['attributes']['length']?_0x37cd32[_0x3c24('0x4a')]:_0x4d1336[_0x3c24('0x45')];if(!_0x2af3c5[_0x3c24('0x46')][_0x3c24('0x4b')](_0x3c24('0x4c'))){_0x37cd32['limit']=qs[_0x3c24('0x33')](_0x2af3c5[_0x3c24('0x46')]['limit']);_0x37cd32[_0x3c24('0x35')]=qs[_0x3c24('0x35')](_0x2af3c5[_0x3c24('0x46')][_0x3c24('0x35')]);}_0x37cd32[_0x3c24('0x4d')]=qs[_0x3c24('0x4e')](_0x2af3c5[_0x3c24('0x46')][_0x3c24('0x4e')]);_0x37cd32[_0x3c24('0x4f')]=qs[_0x3c24('0x50')](_[_0x3c24('0x51')](_0x2af3c5['query'],_0x4d1336[_0x3c24('0x50')]),_0x3dcb02);if(_0x2af3c5[_0x3c24('0x46')]['filter']){_0x37cd32[_0x3c24('0x4f')]=_['merge'](_0x37cd32['where'],{'$or':_['map'](_0x3dcb02,function(_0x25fa55){if(_0x25fa55['type']!==_0x3c24('0x52')){var _0x5ddb49={};_0x5ddb49[_0x25fa55['name']]={'$like':'%'+_0x2af3c5[_0x3c24('0x46')]['filter']+'%'};return _0x5ddb49;}})});}_0x37cd32=_['merge']({},_0x37cd32,_0x2af3c5[_0x3c24('0x53')]);var _0x270973={'where':_0x37cd32['where']};return db[_0x3c24('0x41')]['count'](_0x270973)[_0x3c24('0x23')](function(_0x484128){_0x3ab5ea['count']=_0x484128;if(_0x2af3c5['query']['includeAll']){_0x37cd32['include']=[{'all':!![]}];}return db['FaxMessage'][_0x3c24('0x54')](_0x37cd32);})['then'](function(_0x373365){_0x3ab5ea[_0x3c24('0x55')]=_0x373365;return _0x3ab5ea;})['then'](respondWithFilteredResult(_0x1ae1cc,_0x37cd32))[_0x3c24('0x2e')](handleError(_0x1ae1cc,null));};exports['show']=function(_0x33a63d,_0x2e3a6d){var _0x66e9e7={'raw':!![],'where':{'id':_0x33a63d[_0x3c24('0x56')]['id']}},_0xe70060={};_0xe70060[_0x3c24('0x45')]=_[_0x3c24('0x47')](db[_0x3c24('0x41')][_0x3c24('0x42')]);_0xe70060[_0x3c24('0x46')]=_[_0x3c24('0x47')](_0x33a63d[_0x3c24('0x46')]);_0xe70060[_0x3c24('0x50')]=_[_0x3c24('0x48')](_0xe70060['model'],_0xe70060[_0x3c24('0x46')]);_0x66e9e7[_0x3c24('0x4a')]=_[_0x3c24('0x48')](_0xe70060['model'],qs[_0x3c24('0x49')](_0x33a63d[_0x3c24('0x46')][_0x3c24('0x49')]));_0x66e9e7[_0x3c24('0x4a')]=_0x66e9e7[_0x3c24('0x4a')][_0x3c24('0x57')]?_0x66e9e7[_0x3c24('0x4a')]:_0xe70060['model'];if(_0x33a63d[_0x3c24('0x46')][_0x3c24('0x58')]){_0x66e9e7[_0x3c24('0x59')]=[{'all':!![]}];}_0x66e9e7=_[_0x3c24('0x5a')]({},_0x66e9e7,_0x33a63d['options']);return db[_0x3c24('0x41')][_0x3c24('0x5b')](_0x66e9e7)[_0x3c24('0x23')](handleEntityNotFound(_0x2e3a6d,null))['then'](respondWithResult(_0x2e3a6d,null))[_0x3c24('0x2e')](handleError(_0x2e3a6d,null));};exports[_0x3c24('0x5c')]=function(_0xd9fa80,_0x44892b){if(_0xd9fa80[_0x3c24('0x5d')]['id']){delete _0xd9fa80[_0x3c24('0x5d')]['id'];}return db[_0x3c24('0x41')][_0x3c24('0x5b')]({'where':{'id':_0xd9fa80['params']['id']}})[_0x3c24('0x23')](handleEntityNotFound(_0x44892b,null))[_0x3c24('0x23')](saveUpdates(_0xd9fa80[_0x3c24('0x5d')],null))[_0x3c24('0x23')](respondWithResult(_0x44892b,null))[_0x3c24('0x2e')](handleError(_0x44892b,null));};exports[_0x3c24('0x3b')]=function(_0x5c4aba,_0x506e1c){return db[_0x3c24('0x41')][_0x3c24('0x5b')]({'where':{'id':_0x5c4aba['params']['id']}})[_0x3c24('0x23')](handleEntityNotFound(_0x506e1c,null))['then'](removeEntity(_0x506e1c,null))[_0x3c24('0x2e')](handleError(_0x506e1c,null));};exports['describe']=function(_0xf8b862,_0x8f7b89){return db[_0x3c24('0x41')][_0x3c24('0x5e')]()[_0x3c24('0x23')](respondWithResult(_0x8f7b89,null))[_0x3c24('0x2e')](handleError(_0x8f7b89,null));};var interaction_log=require('../../config/logger')(_0x3c24('0x5f'));exports['accept']=function(_0xc1fc7b,_0x30fa8e,_0x27e20a){var _0x8fd5f7={'agent':{},'channel':_0x3c24('0x60')};if(_0xc1fc7b[_0x3c24('0x5d')]['id']){delete _0xc1fc7b[_0x3c24('0x5d')]['id'];}_0xc1fc7b['body'][_0x3c24('0x61')]=!![];_0xc1fc7b[_0x3c24('0x5d')]['readAt']=moment()[_0x3c24('0x62')]('YYYY-MM-DD\x20HH:mm:ss');_0xc1fc7b[_0x3c24('0x5d')][_0x3c24('0x63')]=_0xc1fc7b[_0x3c24('0x5d')][_0x3c24('0x63')]||_0xc1fc7b[_0x3c24('0x64')]['id'];_0x8fd5f7[_0x3c24('0x65')]['id']=_0xc1fc7b[_0x3c24('0x5d')][_0x3c24('0x63')];return db['FaxMessage'][_0x3c24('0x5b')]({'where':{'id':_0xc1fc7b[_0x3c24('0x56')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x30fa8e,null))[_0x3c24('0x23')](saveUpdates(_0xc1fc7b[_0x3c24('0x5d')],null))['then'](function(_0x426c3e){if(_0x426c3e){_0x8fd5f7[_0x3c24('0x2b')]=_0x426c3e[_0x3c24('0x66')]({'plain':!![]});return db['FaxInteraction'][_0x3c24('0x5b')]({'where':{'id':_0x426c3e[_0x3c24('0x67')]}});}return null;})[_0x3c24('0x23')](handleEntityNotFound(_0x30fa8e,null))['then'](function(_0x45e4a0){if(_0x45e4a0){return _0x45e4a0[_0x3c24('0x5c')]({'UserId':_0xc1fc7b[_0x3c24('0x5d')][_0x3c24('0x63')],'read1stAt':_[_0x3c24('0x68')](_0x45e4a0['read1stAt'])?moment()['format'](_0x3c24('0x69')):undefined});}return null;})[_0x3c24('0x23')](function(_0x9152c3){if(_0x9152c3){_0x8fd5f7[_0x3c24('0x6a')]=_0x9152c3[_0x3c24('0x66')]({'plain':!![]});interaction_log['info'](_0x3c24('0x6b'),_0xc1fc7b[_0x3c24('0x64')]['id'],_0xc1fc7b['user'][_0x3c24('0x3d')],_0xc1fc7b[_0x3c24('0x64')]['role'],_0x8fd5f7[_0x3c24('0x6a')]['id'],_0xc1fc7b['body']?JSON[_0x3c24('0x28')](_0xc1fc7b[_0x3c24('0x5d')]):'null');return respondWithRpcPromise(_0x3c24('0x6c'),'acceptMessage',_0x8fd5f7);}return null;})[_0x3c24('0x23')](function(_0x46defb){var _0x279a24='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x46defb[_0x3c24('0x2b')][_0x3c24('0x6d')];return db['sequelize'][_0x3c24('0x46')](_0x279a24,{'type':db[_0x3c24('0x6e')]['QueryTypes'][_0x3c24('0x6f')],'raw':!![]})[_0x3c24('0x23')](function(_0x1d1f50){return _0x1d1f50;});})['then'](function(_0x4e3160){if(_0x4e3160){_0x8fd5f7[_0x3c24('0x2b')][_0x3c24('0x70')]=_0x4e3160[0x0];if(!_0xc1fc7b[_0x3c24('0x5d')][_0x3c24('0x63')])return;return db[_0x3c24('0x71')][_0x3c24('0x5b')]({'where':{'id':_0xc1fc7b[_0x3c24('0x5d')][_0x3c24('0x63')],'role':_0x3c24('0x65')},'attributes':['id','name','fullname',_0x3c24('0x72'),_0x3c24('0x73')],'raw':!![]});}return null;})['then'](function(_0x334f32){if(!_0x334f32)return null;_0x8fd5f7[_0x3c24('0x2b')]['agent']=_0x334f32;return _0x8fd5f7;})[_0x3c24('0x23')](function(_0x1bf919){if(_0x1bf919){if(_0xc1fc7b[_0x3c24('0x5d')]['manual']){_0x8fd5f7[_0x3c24('0x2b')][_0x3c24('0x74')]=util[_0x3c24('0x62')](_0x3c24('0x75'),_0xc1fc7b[_0x3c24('0x64')][_0x3c24('0x3d')]);_0x8fd5f7[_0x3c24('0x2b')][_0x3c24('0x76')]=_0x8fd5f7[_0x3c24('0x76')];_0x8fd5f7[_0x3c24('0x2b')][_0x3c24('0x77')]=_0x8fd5f7[_0x3c24('0x76')];_0x8fd5f7['message'][_0x3c24('0x78')]=_0x3c24('0x79');return respondWithRpcPromise(_0x3c24('0x7a'),_0x3c24('0x7a'),{'event':'acceptmessage','message':_0x8fd5f7['message']},client9002)['then'](function(){return _0x8fd5f7;});}return _0x8fd5f7;}return null;})[_0x3c24('0x23')](respondWithResult(_0x30fa8e,null))[_0x3c24('0x2e')](handleError(_0x30fa8e,null));};var interaction_log=require('../../config/logger')(_0x3c24('0x5f'));exports[_0x3c24('0x3a')]=function(_0x35b05c,_0xfa1a26,_0x53669a){var _0x41364d={'agent':{},'channel':_0x3c24('0x60')};if(_0x35b05c[_0x3c24('0x5d')]['id']){delete _0x35b05c[_0x3c24('0x5d')]['id'];}_0x35b05c[_0x3c24('0x5d')]['UserId']=_0x35b05c[_0x3c24('0x5d')]['UserId']||_0x35b05c[_0x3c24('0x64')]['id'];_0x41364d['agent']['id']=_0x35b05c[_0x3c24('0x5d')][_0x3c24('0x63')];return db[_0x3c24('0x41')][_0x3c24('0x5b')]({'where':{'id':_0x35b05c[_0x3c24('0x56')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0xfa1a26,null))[_0x3c24('0x23')](function(_0x17c113){if(_0x17c113){_0x41364d['message']=_0x17c113[_0x3c24('0x66')]({'plain':!![]});return db[_0x3c24('0x7b')][_0x3c24('0x5b')]({'where':{'id':_0x17c113['FaxInteractionId']}});}return null;})['then'](handleEntityNotFound(_0xfa1a26,null))[_0x3c24('0x23')](function(_0x3bde6e){if(_0x3bde6e){_0x41364d[_0x3c24('0x6a')]=_0x3bde6e['get']({'plain':!![]});interaction_log['info']('[FAXMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x35b05c[_0x3c24('0x64')]['id'],_0x35b05c['user'][_0x3c24('0x3d')],_0x35b05c['user']['role'],_0x41364d[_0x3c24('0x6a')]['id'],_0x35b05c[_0x3c24('0x5d')]?JSON[_0x3c24('0x28')](_0x35b05c[_0x3c24('0x5d')]):_0x3c24('0x7c'));return respondWithRpcPromise(_0x3c24('0x7d'),_0x3c24('0x7e'),_0x41364d);}return null;})['then'](function(_0x14e2bb){var _0x21e27a=_0x3c24('0x7f')+_0x14e2bb[_0x3c24('0x2b')][_0x3c24('0x6d')];return db[_0x3c24('0x80')][_0x3c24('0x46')](_0x21e27a,{'type':db[_0x3c24('0x6e')]['QueryTypes'][_0x3c24('0x6f')],'raw':!![]})[_0x3c24('0x23')](function(_0x237c30){return _0x237c30;});})[_0x3c24('0x23')](function(_0x3f5e34){if(_0x3f5e34){_0x41364d[_0x3c24('0x2b')]['contact']=_0x3f5e34[0x0];if(!_0x35b05c['body']['UserId'])return;return db['User']['find']({'where':{'id':_0x35b05c['body'][_0x3c24('0x63')],'role':_0x3c24('0x65')},'attributes':['id',_0x3c24('0x3d'),_0x3c24('0x81'),_0x3c24('0x72'),_0x3c24('0x73')],'raw':!![]});}return null;})[_0x3c24('0x23')](function(_0x5de2ff){if(!_0x5de2ff)return null;_0x41364d['message']['agent']=_0x5de2ff;return _0x41364d;})[_0x3c24('0x23')](function(_0x21d9cf){if(_0x21d9cf){_0x21d9cf[_0x3c24('0x2b')][_0x3c24('0x74')]=util['format'](_0x3c24('0x75'),_0x35b05c[_0x3c24('0x64')][_0x3c24('0x3d')]);_0x21d9cf['message'][_0x3c24('0x76')]=_0x41364d[_0x3c24('0x76')];_0x21d9cf[_0x3c24('0x2b')][_0x3c24('0x77')]=_0x41364d['channel'];_0x21d9cf[_0x3c24('0x2b')][_0x3c24('0x78')]=_0x3c24('0x3a');respondWithRpcPromise(_0x3c24('0x7a'),_0x3c24('0x7a'),{'event':_0x3c24('0x82'),'message':_0x21d9cf['message']},client9002);return _0x41364d;}return null;})['then'](respondWithResult(_0xfa1a26,null))[_0x3c24('0x2e')](handleError(_0xfa1a26,null));};exports[_0x3c24('0x83')]=function(_0x52cbb7,_0x2b92e9){var _0x285d4c;return db[_0x3c24('0x41')][_0x3c24('0x83')](_0x52cbb7[_0x3c24('0x5d')],{})[_0x3c24('0x23')](function(_0x2af408){_0x285d4c=_0x2af408;return db[_0x3c24('0x84')][_0x3c24('0x85')]({'where':{'id':_0x285d4c[_0x3c24('0x6d')]}});})[_0x3c24('0x23')](function(_0x5efa8c){if(_['isNil'](_0x5efa8c)){return;}else{_0x285d4c['fax']=_0x5efa8c[_0x3c24('0x60')];return db['Attachment'][_0x3c24('0x85')]({'where':{'id':_0x285d4c[_0x3c24('0x86')]}});}})[_0x3c24('0x23')](function(_0x4ae493){return respondWithRpcPromise(_0x3c24('0x87'),'SendFax',{'FaxAccountId':_[_0x3c24('0x68')](_0x52cbb7[_0x3c24('0x5d')])?undefined:_0x52cbb7[_0x3c24('0x5d')][_0x3c24('0x88')],'path':_[_0x3c24('0x68')](_0x4ae493)?undefined:util[_0x3c24('0x62')](_0x3c24('0x89'),_0x4ae493[_0x3c24('0x8a')]),'fax':_[_0x3c24('0x68')](_0x285d4c[_0x3c24('0x60')])?undefined:_0x285d4c['fax'],'AttachmentId':_0x285d4c[_0x3c24('0x86')]},client9002);})[_0x3c24('0x23')](respondWithResult(_0x2b92e9,0xc9))[_0x3c24('0x2e')](handleError(_0x2b92e9,null));};exports[_0x3c24('0x8b')]=function(_0x412dfb,_0x5b99ab){var _0x937f47=path['join'](config[_0x3c24('0x8c')],_0x3c24('0x8d'),_0x3c24('0x8e'),_0x3c24('0x8f'));return db[_0x3c24('0x41')][_0x3c24('0x5b')]({'where':{'id':_0x412dfb[_0x3c24('0x56')]['id']},'include':[{'model':db[_0x3c24('0x90')],'as':_0x3c24('0x90')}]})[_0x3c24('0x23')](handleEntityNotFound(_0x5b99ab,null))['then'](function(_0x1777e2){if(_0x1777e2){return _0x5b99ab[_0x3c24('0x8b')](path[_0x3c24('0x91')](_0x937f47,_0x1777e2[_0x3c24('0x90')][_0x3c24('0x8a')]));}})[_0x3c24('0x2e')](handleError(_0x5b99ab,null));};
\ No newline at end of file
index 057dc1d..845cdb6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9303=['events','setMaxListeners','update','emit','hasOwnProperty'];(function(_0x34e106,_0x91d313){var _0x23a796=function(_0x288d36){while(--_0x288d36){_0x34e106['push'](_0x34e106['shift']());}};_0x23a796(++_0x91d313);}(_0x9303,0xd7));var _0x3930=function(_0x5cd675,_0x352cca){_0x5cd675=_0x5cd675-0x0;var _0x2379b0=_0x9303[_0x5cd675];return _0x2379b0;};'use strict';var EventEmitter=require(_0x3930('0x0'));var FaxMessage=require('../../mysqldb')['db']['FaxMessage'];var FaxMessageEvents=new EventEmitter();FaxMessageEvents[_0x3930('0x1')](0x0);var events={'afterCreate':'save','afterUpdate':_0x3930('0x2'),'afterDestroy':'remove'};function emitEvent(_0x4fd19e){return function(_0x3e9314,_0x2dddd0,_0x1fb17){FaxMessageEvents[_0x3930('0x3')](_0x4fd19e+':'+_0x3e9314['id'],_0x3e9314);FaxMessageEvents['emit'](_0x4fd19e,_0x3e9314);_0x1fb17(null);};}for(var e in events){if(events[_0x3930('0x4')](e)){var event=events[e];FaxMessage['hook'](e,emitEvent(event));}}module['exports']=FaxMessageEvents;
\ No newline at end of file
+var _0x9b97=['setMaxListeners','save','update','remove','emit','hook','exports','events','FaxMessage'];(function(_0x3c6741,_0x24c6f0){var _0x5d3310=function(_0x504ffb){while(--_0x504ffb){_0x3c6741['push'](_0x3c6741['shift']());}};_0x5d3310(++_0x24c6f0);}(_0x9b97,0x11e));var _0x79b9=function(_0xf42301,_0x3d6866){_0xf42301=_0xf42301-0x0;var _0x1b78f9=_0x9b97[_0xf42301];return _0x1b78f9;};'use strict';var EventEmitter=require(_0x79b9('0x0'));var FaxMessage=require('../../mysqldb')['db'][_0x79b9('0x1')];var FaxMessageEvents=new EventEmitter();FaxMessageEvents[_0x79b9('0x2')](0x0);var events={'afterCreate':_0x79b9('0x3'),'afterUpdate':_0x79b9('0x4'),'afterDestroy':_0x79b9('0x5')};function emitEvent(_0x10c823){return function(_0x4edfcf,_0x5194ab,_0x1e0ed2){FaxMessageEvents[_0x79b9('0x6')](_0x10c823+':'+_0x4edfcf['id'],_0x4edfcf);FaxMessageEvents[_0x79b9('0x6')](_0x10c823,_0x4edfcf);_0x1e0ed2(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];FaxMessage[_0x79b9('0x7')](e,emitEvent(event));}}module[_0x79b9('0x8')]=FaxMessageEvents;
\ No newline at end of file
index ae1691b..85ab7f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c70=['utf8mb4','utf8mb4_unicode_ci','lodash','../../config/logger','moment','bluebird','request-promise','rimraf','define','FaxMessage','fti_fax_messages','FULLTEXT','direction','toLowerCase','out','isNil','UserId','FaxInteraction','findOne','update','createdAt','error'];(function(_0x509131,_0x5c1fd3){var _0x2c1d66=function(_0xb12ec6){while(--_0xb12ec6){_0x509131['push'](_0x509131['shift']());}};_0x2c1d66(++_0x5c1fd3);}(_0x9c70,0x136));var _0x09c7=function(_0x463934,_0x1e38ec){_0x463934=_0x463934-0x0;var _0x44c1a2=_0x9c70[_0x463934];return _0x44c1a2;};'use strict';var _=require(_0x09c7('0x0'));var util=require('util');var logger=require(_0x09c7('0x1'))('api');var moment=require(_0x09c7('0x2'));var BPromise=require(_0x09c7('0x3'));var rp=require(_0x09c7('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x09c7('0x5'));var config=require('../../config/environment');var attributes=require('./faxMessage.attributes');module['exports']=function(_0x371c81,_0x427fe9){return _0x371c81[_0x09c7('0x6')](_0x09c7('0x7'),attributes,{'tableName':'fax_messages','paranoid':![],'indexes':[{'name':_0x09c7('0x8'),'fields':['body'],'type':_0x09c7('0x9')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x3c1b52,_0x11f30f,_0x15b624){var _0x249a81=_0x371c81['models'];var _0x25db3c=_0x3c1b52['get']({'plain':!![]});if(_0x25db3c[_0x09c7('0xa')]['toLowerCase']()==='in'||_0x25db3c[_0x09c7('0xa')][_0x09c7('0xb')]()===_0x09c7('0xc')&&!_0x25db3c['secret']&&!_[_0x09c7('0xd')](_0x25db3c[_0x09c7('0xe')])){_0x249a81[_0x09c7('0xf')][_0x09c7('0x10')]({'where':{'id':_0x25db3c['FaxInteractionId']}})['then'](function(_0x59a90e){if(_0x59a90e){_0x59a90e[_0x09c7('0x11')]({'lastMsgAt':_0x25db3c[_0x09c7('0x12')],'lastMsgDirection':_0x25db3c[_0x09c7('0xa')]['toLowerCase']()});}})['catch'](function(_0x215d46){console[_0x09c7('0x13')](_0x215d46);});}_0x15b624();}},'charset':_0x09c7('0x14'),'collate':_0x09c7('0x15')});};
\ No newline at end of file
+var _0xdf80=['../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','define','FaxMessage','fti_fax_messages','FULLTEXT','models','get','direction','toLowerCase','out','secret','isNil','UserId','FaxInteraction','findOne','FaxInteractionId','then','update','utf8mb4','utf8mb4_unicode_ci'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0xdf80,0x152));var _0x0df8=function(_0x57fca6,_0x497213){_0x57fca6=_0x57fca6-0x0;var _0x1f2800=_0xdf80[_0x57fca6];return _0x1f2800;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x0df8('0x0'))(_0x0df8('0x1'));var moment=require(_0x0df8('0x2'));var BPromise=require('bluebird');var rp=require(_0x0df8('0x3'));var fs=require('fs');var path=require(_0x0df8('0x4'));var rimraf=require(_0x0df8('0x5'));var config=require(_0x0df8('0x6'));var attributes=require('./faxMessage.attributes');module['exports']=function(_0x58baf8,_0xddffd2){return _0x58baf8[_0x0df8('0x7')](_0x0df8('0x8'),attributes,{'tableName':'fax_messages','paranoid':![],'indexes':[{'name':_0x0df8('0x9'),'fields':['body'],'type':_0x0df8('0xa')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x50400f,_0x4b5678,_0x2ad37c){var _0x407965=_0x58baf8[_0x0df8('0xb')];var _0x1ccec1=_0x50400f[_0x0df8('0xc')]({'plain':!![]});if(_0x1ccec1[_0x0df8('0xd')][_0x0df8('0xe')]()==='in'||_0x1ccec1[_0x0df8('0xd')][_0x0df8('0xe')]()===_0x0df8('0xf')&&!_0x1ccec1[_0x0df8('0x10')]&&!_[_0x0df8('0x11')](_0x1ccec1[_0x0df8('0x12')])){_0x407965[_0x0df8('0x13')][_0x0df8('0x14')]({'where':{'id':_0x1ccec1[_0x0df8('0x15')]}})[_0x0df8('0x16')](function(_0x4d1ff6){if(_0x4d1ff6){_0x4d1ff6[_0x0df8('0x17')]({'lastMsgAt':_0x1ccec1['createdAt'],'lastMsgDirection':_0x1ccec1[_0x0df8('0xd')][_0x0df8('0xe')]()});}})['catch'](function(_0x1786d7){console['error'](_0x1786d7);});}_0x2ad37c();}},'charset':_0x0df8('0x18'),'collate':_0x0df8('0x19')});};
\ No newline at end of file
index 5839c2b..fe57701 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e0=['FaxMessage,\x20%s,\x20%s','request\x20sent','debug','FaxMessage,\x20%s,\x20%s,\x20%s','error','message','result','CreateFaxMessage','FaxMessage','create','body','options','stringify','catch','update','raw','where','limit','UpdateFaxMessage','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','redis','localhost','socket.io-emitter','./faxMessage.socket','register','request','then','info'];(function(_0x3c7f1d,_0x44b37b){var _0xd7ab0c=function(_0x1dd6b2){while(--_0x1dd6b2){_0x3c7f1d['push'](_0x3c7f1d['shift']());}};_0xd7ab0c(++_0x44b37b);}(_0x70e0,0x17b));var _0x070e=function(_0x1ada1c,_0x4bc917){_0x1ada1c=_0x1ada1c-0x0;var _0x3baac4=_0x70e0[_0x1ada1c];return _0x3baac4;};'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});config['redis']=_['defaults'](config[_0x070e('0x9')],{'host':_0x070e('0xa'),'port':0x18eb});var socket=require(_0x070e('0xb'))(new Redis(config[_0x070e('0x9')]));require(_0x070e('0xc'))[_0x070e('0xd')](socket);function respondWithRpcPromise(_0x11ffa8,_0x4e99e6,_0x49b2fb){return new BPromise(function(_0x50f4eb,_0x2e3e5e){return client[_0x070e('0xe')](_0x11ffa8,_0x49b2fb)[_0x070e('0xf')](function(_0xa927a2){logger[_0x070e('0x10')](_0x070e('0x11'),_0x4e99e6,_0x070e('0x12'));logger[_0x070e('0x13')](_0x070e('0x14'),_0x4e99e6,_0x070e('0x12'),JSON['stringify'](_0xa927a2));if(_0xa927a2['error']){if(_0xa927a2[_0x070e('0x15')]['code']===0x1f4){logger['error']('FaxMessage,\x20%s,\x20%s',_0x4e99e6,_0xa927a2[_0x070e('0x15')][_0x070e('0x16')]);return _0x2e3e5e(_0xa927a2['error']['message']);}logger[_0x070e('0x15')](_0x070e('0x11'),_0x4e99e6,_0xa927a2[_0x070e('0x15')][_0x070e('0x16')]);return _0x50f4eb(_0xa927a2['error']['message']);}else{logger[_0x070e('0x10')](_0x070e('0x11'),_0x4e99e6,_0x070e('0x12'));_0x50f4eb(_0xa927a2[_0x070e('0x17')][_0x070e('0x16')]);}})['catch'](function(_0x3938b5){logger[_0x070e('0x15')](_0x070e('0x11'),_0x4e99e6,_0x3938b5);_0x2e3e5e(_0x3938b5);});});}exports[_0x070e('0x18')]=function(_0x259893){var _0x5c16fd=this;return new Promise(function(_0x5b2f48,_0x4e958f){return db[_0x070e('0x19')][_0x070e('0x1a')](_0x259893[_0x070e('0x1b')],{'raw':_0x259893['options']?_0x259893[_0x070e('0x1c')]['raw']===undefined?!![]:![]:!![]})[_0x070e('0xf')](function(_0x3f6985){logger[_0x070e('0x10')](_0x070e('0x18'),_0x259893);logger[_0x070e('0x13')](_0x070e('0x18'),_0x259893,JSON[_0x070e('0x1d')](_0x3f6985));_0x5b2f48(_0x3f6985);})[_0x070e('0x1e')](function(_0x595c7e){logger[_0x070e('0x15')](_0x070e('0x18'),_0x595c7e[_0x070e('0x16')],_0x259893);_0x4e958f(_0x5c16fd['error'](0x1f4,_0x595c7e[_0x070e('0x16')]));});});};exports['UpdateFaxMessage']=function(_0x4a2dbd){var _0x2ccbd7=this;return new Promise(function(_0x25f6e,_0x41deb1){return db[_0x070e('0x19')][_0x070e('0x1f')](_0x4a2dbd['body'],{'raw':_0x4a2dbd[_0x070e('0x1c')]?_0x4a2dbd[_0x070e('0x1c')][_0x070e('0x20')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4a2dbd[_0x070e('0x1c')]?_0x4a2dbd[_0x070e('0x1c')][_0x070e('0x21')]||null:null,'attributes':_0x4a2dbd[_0x070e('0x1c')]?_0x4a2dbd[_0x070e('0x1c')]['attributes']||null:null,'limit':_0x4a2dbd[_0x070e('0x1c')]?_0x4a2dbd[_0x070e('0x1c')][_0x070e('0x22')]||null:null})['then'](function(_0x5c5f0d){logger[_0x070e('0x10')](_0x070e('0x23'),_0x4a2dbd);logger[_0x070e('0x13')]('UpdateFaxMessage',_0x4a2dbd,JSON[_0x070e('0x1d')](_0x5c5f0d));_0x25f6e(_0x5c5f0d);})[_0x070e('0x1e')](function(_0x3a9425){logger[_0x070e('0x15')]('UpdateFaxMessage',_0x3a9425['message'],_0x4a2dbd);_0x41deb1(_0x2ccbd7['error'](0x1f4,_0x3a9425['message']));});});};
\ No newline at end of file
+var _0x6aa7=['redis','defaults','socket.io-emitter','./faxMessage.socket','request','then','info','FaxMessage,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','CreateFaxMessage','FaxMessage','create','options','raw','catch','update','body','attributes','limit','UpdateFaxMessage','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','client'];(function(_0xec8e7,_0x1ada26){var _0x365aca=function(_0x4ff2e7){while(--_0x4ff2e7){_0xec8e7['push'](_0xec8e7['shift']());}};_0x365aca(++_0x1ada26);}(_0x6aa7,0x178));var _0x76aa=function(_0x52b56c,_0x5f274d){_0x52b56c=_0x52b56c-0x0;var _0x1cf461=_0x6aa7[_0x52b56c];return _0x1cf461;};'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});config[_0x76aa('0x9')]=_[_0x76aa('0xa')](config[_0x76aa('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0x76aa('0xb'))(new Redis(config[_0x76aa('0x9')]));require(_0x76aa('0xc'))['register'](socket);function respondWithRpcPromise(_0xcd99aa,_0x25856d,_0x41643a){return new BPromise(function(_0x16cb50,_0x37f1ab){return client[_0x76aa('0xd')](_0xcd99aa,_0x41643a)[_0x76aa('0xe')](function(_0x8dc35c){logger[_0x76aa('0xf')](_0x76aa('0x10'),_0x25856d,'request\x20sent');logger[_0x76aa('0x11')]('FaxMessage,\x20%s,\x20%s,\x20%s',_0x25856d,_0x76aa('0x12'),JSON[_0x76aa('0x13')](_0x8dc35c));if(_0x8dc35c[_0x76aa('0x14')]){if(_0x8dc35c[_0x76aa('0x14')][_0x76aa('0x15')]===0x1f4){logger['error']('FaxMessage,\x20%s,\x20%s',_0x25856d,_0x8dc35c[_0x76aa('0x14')]['message']);return _0x37f1ab(_0x8dc35c[_0x76aa('0x14')][_0x76aa('0x16')]);}logger['error'](_0x76aa('0x10'),_0x25856d,_0x8dc35c['error'][_0x76aa('0x16')]);return _0x16cb50(_0x8dc35c['error'][_0x76aa('0x16')]);}else{logger[_0x76aa('0xf')](_0x76aa('0x10'),_0x25856d,_0x76aa('0x12'));_0x16cb50(_0x8dc35c[_0x76aa('0x17')][_0x76aa('0x16')]);}})['catch'](function(_0x5d6202){logger[_0x76aa('0x14')](_0x76aa('0x10'),_0x25856d,_0x5d6202);_0x37f1ab(_0x5d6202);});});}exports[_0x76aa('0x18')]=function(_0x15b931){var _0x15109b=this;return new Promise(function(_0x191560,_0x19af92){return db[_0x76aa('0x19')][_0x76aa('0x1a')](_0x15b931['body'],{'raw':_0x15b931[_0x76aa('0x1b')]?_0x15b931[_0x76aa('0x1b')][_0x76aa('0x1c')]===undefined?!![]:![]:!![]})['then'](function(_0x41463a){logger[_0x76aa('0xf')](_0x76aa('0x18'),_0x15b931);logger[_0x76aa('0x11')](_0x76aa('0x18'),_0x15b931,JSON[_0x76aa('0x13')](_0x41463a));_0x191560(_0x41463a);})[_0x76aa('0x1d')](function(_0x3363b3){logger[_0x76aa('0x14')](_0x76aa('0x18'),_0x3363b3[_0x76aa('0x16')],_0x15b931);_0x19af92(_0x15109b[_0x76aa('0x14')](0x1f4,_0x3363b3[_0x76aa('0x16')]));});});};exports['UpdateFaxMessage']=function(_0xb5e8a9){var _0x1d6d15=this;return new Promise(function(_0x25c614,_0x2e7ab4){return db[_0x76aa('0x19')][_0x76aa('0x1e')](_0xb5e8a9[_0x76aa('0x1f')],{'raw':_0xb5e8a9[_0x76aa('0x1b')]?_0xb5e8a9[_0x76aa('0x1b')][_0x76aa('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xb5e8a9['options']?_0xb5e8a9[_0x76aa('0x1b')]['where']||null:null,'attributes':_0xb5e8a9[_0x76aa('0x1b')]?_0xb5e8a9[_0x76aa('0x1b')][_0x76aa('0x20')]||null:null,'limit':_0xb5e8a9[_0x76aa('0x1b')]?_0xb5e8a9[_0x76aa('0x1b')][_0x76aa('0x21')]||null:null})[_0x76aa('0xe')](function(_0x3827ec){logger[_0x76aa('0xf')](_0x76aa('0x22'),_0xb5e8a9);logger['debug'](_0x76aa('0x22'),_0xb5e8a9,JSON[_0x76aa('0x13')](_0x3827ec));_0x25c614(_0x3827ec);})[_0x76aa('0x1d')](function(_0x928ccf){logger[_0x76aa('0x14')](_0x76aa('0x22'),_0x928ccf[_0x76aa('0x16')],_0xb5e8a9);_0x2e7ab4(_0x1d6d15['error'](0x1f4,_0x928ccf[_0x76aa('0x16')]));});});};
\ No newline at end of file
index 31b9a62..37d1d4b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c57=['faxMessage:','save','remove','update','removeListener','register','length'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x4c57,0x19e));var _0x74c5=function(_0x220ff3,_0x30214d){_0x220ff3=_0x220ff3-0x0;var _0x158d9a=_0x4c57[_0x220ff3];return _0x158d9a;};'use strict';var FaxMessageEvents=require('./faxMessage.events');var events=[_0x74c5('0x0'),_0x74c5('0x1'),_0x74c5('0x2')];function createListener(_0x412fd7,_0x36cdbe){return function(_0x645c5d){_0x36cdbe['emit'](_0x412fd7,_0x645c5d);};}function removeListener(_0x508de8,_0x2fb4c4){return function(){FaxMessageEvents[_0x74c5('0x3')](_0x508de8,_0x2fb4c4);};}exports[_0x74c5('0x4')]=function(_0x32e7ab){for(var _0x486c9a=0x0,_0x5de69a=events[_0x74c5('0x5')];_0x486c9a<_0x5de69a;_0x486c9a++){var _0x39a216=events[_0x486c9a];var _0x52f6cc=createListener(_0x74c5('0x6')+_0x39a216,_0x32e7ab);FaxMessageEvents['on'](_0x39a216,_0x52f6cc);}};
\ No newline at end of file
+var _0xc12f=['emit','removeListener','register','length','faxMessage:','./faxMessage.events','save','remove','update'];(function(_0x5a58c,_0xd87e09){var _0x415cd7=function(_0x29c123){while(--_0x29c123){_0x5a58c['push'](_0x5a58c['shift']());}};_0x415cd7(++_0xd87e09);}(_0xc12f,0x101));var _0xfc12=function(_0x817d9b,_0x3c37e3){_0x817d9b=_0x817d9b-0x0;var _0x2752e1=_0xc12f[_0x817d9b];return _0x2752e1;};'use strict';var FaxMessageEvents=require(_0xfc12('0x0'));var events=[_0xfc12('0x1'),_0xfc12('0x2'),_0xfc12('0x3')];function createListener(_0x1b45e9,_0x8f56ae){return function(_0x1f9bc5){_0x8f56ae[_0xfc12('0x4')](_0x1b45e9,_0x1f9bc5);};}function removeListener(_0x342f6f,_0x48ddc5){return function(){FaxMessageEvents[_0xfc12('0x5')](_0x342f6f,_0x48ddc5);};}exports[_0xfc12('0x6')]=function(_0x5ab0b1){for(var _0x4304bd=0x0,_0x57d982=events[_0xfc12('0x7')];_0x4304bd<_0x57d982;_0x4304bd++){var _0x43d0b7=events[_0x4304bd];var _0x9c7a96=createListener(_0xfc12('0x8')+_0x43d0b7,_0x5ab0b1);FaxMessageEvents['on'](_0x43d0b7,_0x9c7a96);}};
\ No newline at end of file
index 736f37e..9888a7e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9348=['util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','./faxMessage.controller','get','isAuthenticated','index','describe','/:id/download','download','post','tracked','fax','faxmessage:create','create','put','update','/:id/accept','accept','/:id/reject','reject','delete','/:id','destroy','exports','multer'];(function(_0x2d5699,_0x1101c8){var _0x424d52=function(_0x7006f8){while(--_0x7006f8){_0x2d5699['push'](_0x2d5699['shift']());}};_0x424d52(++_0x1101c8);}(_0x9348,0x10d));var _0x8934=function(_0x425323,_0x2bb49f){_0x425323=_0x425323-0x0;var _0x23b6be=_0x9348[_0x425323];return _0x23b6be;};'use strict';var multer=require(_0x8934('0x0'));var util=require(_0x8934('0x1'));var path=require(_0x8934('0x2'));var timeout=require(_0x8934('0x3'));var express=require(_0x8934('0x4'));var router=express['Router']();var fs_extra=require(_0x8934('0x5'));var auth=require(_0x8934('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x8934('0x7'));var controller=require(_0x8934('0x8'));router[_0x8934('0x9')]('/',auth[_0x8934('0xa')](),controller[_0x8934('0xb')]);router[_0x8934('0x9')]('/describe',auth[_0x8934('0xa')](),controller[_0x8934('0xc')]);router[_0x8934('0x9')]('/:id',auth['isAuthenticated'](),controller['show']);router['get'](_0x8934('0xd'),auth['isAuthenticated'](),controller[_0x8934('0xe')]);router[_0x8934('0xf')]('/',auth[_0x8934('0xa')](),interaction[_0x8934('0x10')](_0x8934('0x11'),_0x8934('0x12')),controller[_0x8934('0x13')]);router[_0x8934('0x14')]('/:id',auth[_0x8934('0xa')](),controller[_0x8934('0x15')]);router[_0x8934('0x14')](_0x8934('0x16'),auth[_0x8934('0xa')](),controller[_0x8934('0x17')]);router['put'](_0x8934('0x18'),auth[_0x8934('0xa')](),controller[_0x8934('0x19')]);router[_0x8934('0x1a')](_0x8934('0x1b'),auth[_0x8934('0xa')](),controller[_0x8934('0x1c')]);module[_0x8934('0x1d')]=router;
\ No newline at end of file
+var _0x6f7a=['tracked','faxmessage:create','create','put','update','/:id/accept','accept','/:id/reject','reject','destroy','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxMessage.controller','get','isAuthenticated','index','/describe','/:id','show','download','post'];(function(_0x5cd7a3,_0x1aa14f){var _0x21235d=function(_0x3152a9){while(--_0x3152a9){_0x5cd7a3['push'](_0x5cd7a3['shift']());}};_0x21235d(++_0x1aa14f);}(_0x6f7a,0x1ae));var _0xa6f7=function(_0x1453d9,_0x5d63ab){_0x1453d9=_0x1453d9-0x0;var _0x37759d=_0x6f7a[_0x1453d9];return _0x37759d;};'use strict';var multer=require(_0xa6f7('0x0'));var util=require(_0xa6f7('0x1'));var path=require(_0xa6f7('0x2'));var timeout=require(_0xa6f7('0x3'));var express=require('express');var router=express[_0xa6f7('0x4')]();var fs_extra=require(_0xa6f7('0x5'));var auth=require(_0xa6f7('0x6'));var interaction=require(_0xa6f7('0x7'));var config=require(_0xa6f7('0x8'));var controller=require(_0xa6f7('0x9'));router[_0xa6f7('0xa')]('/',auth[_0xa6f7('0xb')](),controller[_0xa6f7('0xc')]);router[_0xa6f7('0xa')](_0xa6f7('0xd'),auth['isAuthenticated'](),controller['describe']);router[_0xa6f7('0xa')](_0xa6f7('0xe'),auth[_0xa6f7('0xb')](),controller[_0xa6f7('0xf')]);router[_0xa6f7('0xa')]('/:id/download',auth['isAuthenticated'](),controller[_0xa6f7('0x10')]);router[_0xa6f7('0x11')]('/',auth['isAuthenticated'](),interaction[_0xa6f7('0x12')]('fax',_0xa6f7('0x13')),controller[_0xa6f7('0x14')]);router[_0xa6f7('0x15')](_0xa6f7('0xe'),auth['isAuthenticated'](),controller[_0xa6f7('0x16')]);router['put'](_0xa6f7('0x17'),auth[_0xa6f7('0xb')](),controller[_0xa6f7('0x18')]);router['put'](_0xa6f7('0x19'),auth['isAuthenticated'](),controller[_0xa6f7('0x1a')]);router['delete'](_0xa6f7('0xe'),auth[_0xa6f7('0xb')](),controller[_0xa6f7('0x1b')]);module['exports']=router;
\ No newline at end of file
index ab9b89e..6ddbbf8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x84c6=['beepall','roundrobin','INTEGER','STRING','name','ENUM'];(function(_0x5551ce,_0x69b7ad){var _0x2f0f19=function(_0xd6189b){while(--_0xd6189b){_0x5551ce['push'](_0x5551ce['shift']());}};_0x2f0f19(++_0x69b7ad);}(_0x84c6,0xe7));var _0x684c=function(_0x4ea0d4,_0x2c9eaa){_0x4ea0d4=_0x4ea0d4-0x0;var _0x8ed333=_0x84c6[_0x4ea0d4];return _0x8ed333;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x684c('0x0')],'unique':_0x684c('0x1'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x684c('0x0')]},'timeout':{'type':Sequelize['INTEGER'],'allowNull':![],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x684c('0x2')]('rrmemory',_0x684c('0x3'),_0x684c('0x4')),'allowNull':![]},'lastAgent':{'type':Sequelize[_0x684c('0x5')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x9a37=['STRING','name','INTEGER','ENUM','rrmemory','roundrobin','sequelize','exports'];(function(_0x1640aa,_0x31f98c){var _0x46f9e4=function(_0x4e7551){while(--_0x4e7551){_0x1640aa['push'](_0x1640aa['shift']());}};_0x46f9e4(++_0x31f98c);}(_0x9a37,0x7e));var _0x79a3=function(_0x42a778,_0x3cde9f){_0x42a778=_0x42a778-0x0;var _0x216581=_0x9a37[_0x42a778];return _0x216581;};'use strict';var Sequelize=require(_0x79a3('0x0'));module[_0x79a3('0x1')]={'name':{'type':Sequelize[_0x79a3('0x2')],'unique':_0x79a3('0x3'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x79a3('0x2')]},'timeout':{'type':Sequelize[_0x79a3('0x4')],'allowNull':![],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x79a3('0x5')](_0x79a3('0x6'),'beepall',_0x79a3('0x7')),'allowNull':![]},'lastAgent':{'type':Sequelize[_0x79a3('0x4')],'defaultValue':0x0}};
\ No newline at end of file
index 4f3c524..182b504 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd40f=['where','merge','VIRTUAL','includeAll','findAll','rows','catch','params','keys','rawAttributes','include','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','findOne','UserFaxQueue','FaxQueueId','filter','options','User','findAndCountAll','UserId','agent','faxPause','updatedAt','createdAt','SIP','getTeams','addTeams','ids','Agents','voicePause','interface','flatMap','sequelize','transaction','each','findOrCreate','forEach','userFaxQueue:save','removeTeams','select','field','tq.TeamId','from','team_has_fax_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','FaxQueueId\x20=\x20?','ut.UserId\x20=\x20?','QueryTypes','SELECT','TeamId','union','value','isEmpty','removeAgents','emit','userFaxQueue:remove','addAgents','omit','spread','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./faxQueue.socket','register','sendStatus','end','status','json','offset','undefined','limit','count','Content-Range','apply','save','update','then','destroy','get','FaxQueues','error','stack','name','send','FaxQueue','fieldName','type','key','model','map','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filters','pick'];(function(_0x44e6a7,_0x4a6a11){var _0x18de7d=function(_0x472ecd){while(--_0x472ecd){_0x44e6a7['push'](_0x44e6a7['shift']());}};_0x18de7d(++_0x4a6a11);}(_0xd40f,0xd3));var _0xfd40=function(_0x50f0e9,_0x2f9300){_0x50f0e9=_0x50f0e9-0x0;var _0x12dae4=_0xd40f[_0x50f0e9];return _0x12dae4;};'use strict';var emlformat=require(_0xfd40('0x0'));var rimraf=require(_0xfd40('0x1'));var zipdir=require(_0xfd40('0x2'));var jsonpatch=require(_0xfd40('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xfd40('0x4'));var Mustache=require(_0xfd40('0x5'));var util=require(_0xfd40('0x6'));var path=require(_0xfd40('0x7'));var sox=require(_0xfd40('0x8'));var csv=require(_0xfd40('0x9'));var ejs=require(_0xfd40('0xa'));var fs=require('fs');var fs_extra=require(_0xfd40('0xb'));var _=require(_0xfd40('0xc'));var squel=require(_0xfd40('0xd'));var crypto=require(_0xfd40('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xfd40('0xf'));var toCsv=require('to-csv');var querystring=require(_0xfd40('0x10'));var Papa=require(_0xfd40('0x11'));var Redis=require(_0xfd40('0x12'));var authService=require('../../components/auth/service');var qs=require(_0xfd40('0x13'));var as=require(_0xfd40('0x14'));var hardwareService=require(_0xfd40('0x15'));var logger=require('../../config/logger')(_0xfd40('0x16'));var utils=require(_0xfd40('0x17'));var config=require(_0xfd40('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xfd40('0x19'))['db'];config[_0xfd40('0x1a')]=_[_0xfd40('0x1b')](config[_0xfd40('0x1a')],{'host':_0xfd40('0x1c'),'port':0x18eb});var socket=require(_0xfd40('0x1d'))(new Redis(config[_0xfd40('0x1a')]));require(_0xfd40('0x1e'))[_0xfd40('0x1f')](socket);function respondWithStatusCode(_0x3a892b,_0x436102){_0x436102=_0x436102||0xcc;return function(_0x31ae29){if(_0x31ae29){return _0x3a892b[_0xfd40('0x20')](_0x436102);}return _0x3a892b['status'](_0x436102)[_0xfd40('0x21')]();};}function respondWithResult(_0x16a853,_0x13f160){_0x13f160=_0x13f160||0xc8;return function(_0x510fa7){if(_0x510fa7){return _0x16a853[_0xfd40('0x22')](_0x13f160)[_0xfd40('0x23')](_0x510fa7);}};}function respondWithFilteredResult(_0x588b27,_0xb2643b){return function(_0x52b280){if(_0x52b280){var _0x21fbed=typeof _0xb2643b[_0xfd40('0x24')]===_0xfd40('0x25')&&typeof _0xb2643b[_0xfd40('0x26')]===_0xfd40('0x25');var _0x204967=_0x52b280[_0xfd40('0x27')];var _0xfd51b1=_0x21fbed?0x0:_0xb2643b[_0xfd40('0x24')];var _0x697871=_0x21fbed?_0x52b280[_0xfd40('0x27')]:_0xb2643b[_0xfd40('0x24')]+_0xb2643b['limit'];var _0x4b41cb;if(_0x697871>=_0x204967){_0x697871=_0x204967;_0x4b41cb=0xc8;}else{_0x4b41cb=0xce;}_0x588b27[_0xfd40('0x22')](_0x4b41cb);return _0x588b27['set'](_0xfd40('0x28'),_0xfd51b1+'-'+_0x697871+'/'+_0x204967)['json'](_0x52b280);}return null;};}function patchUpdates(_0x27ec9a){return function(_0x412084){try{jsonpatch[_0xfd40('0x29')](_0x412084,_0x27ec9a,!![]);}catch(_0xb89a2b){return BPromise['reject'](_0xb89a2b);}return _0x412084[_0xfd40('0x2a')]();};}function saveUpdates(_0x2d9611,_0x1027bb){return function(_0x426b09){if(_0x426b09){return _0x426b09[_0xfd40('0x2b')](_0x2d9611)[_0xfd40('0x2c')](function(_0x1cd79a){return _0x1cd79a;});}return null;};}function removeEntity(_0x36cd3b,_0x1da023){return function(_0x1a5fa7){if(_0x1a5fa7){return _0x1a5fa7[_0xfd40('0x2d')]()[_0xfd40('0x2c')](function(){var _0x2c930f=_0x1a5fa7[_0xfd40('0x2e')]({'plain':!![]});var _0x2f0e75=_0xfd40('0x2f');return db['UserProfileResource'][_0xfd40('0x2d')]({'where':{'type':_0x2f0e75,'resourceId':_0x2c930f['id']}})['then'](function(){return _0x1a5fa7;});})[_0xfd40('0x2c')](function(){_0x36cd3b[_0xfd40('0x22')](0xcc)[_0xfd40('0x21')]();});}};}function handleEntityNotFound(_0x2c0ffc,_0x2a981c){return function(_0x3bf8ac){if(!_0x3bf8ac){_0x2c0ffc[_0xfd40('0x20')](0x194);}return _0x3bf8ac;};}function handleError(_0x5a531a,_0x4fa9fe){_0x4fa9fe=_0x4fa9fe||0x1f4;return function(_0xf3ce13){logger[_0xfd40('0x30')](_0xf3ce13[_0xfd40('0x31')]);if(_0xf3ce13['name']){delete _0xf3ce13[_0xfd40('0x32')];}_0x5a531a['status'](_0x4fa9fe)[_0xfd40('0x33')](_0xf3ce13);};}exports['index']=function(_0x2ad176,_0xf19076){var _0x319f3a={},_0x4a70c5={},_0x26a811={'count':0x0,'rows':[]};var _0x4b0d44=_['map'](db[_0xfd40('0x34')]['rawAttributes'],function(_0x24ad93){return{'name':_0x24ad93[_0xfd40('0x35')],'type':_0x24ad93[_0xfd40('0x36')][_0xfd40('0x37')]};});_0x4a70c5[_0xfd40('0x38')]=_[_0xfd40('0x39')](_0x4b0d44,_0xfd40('0x32'));_0x4a70c5[_0xfd40('0x3a')]=_['keys'](_0x2ad176[_0xfd40('0x3a')]);_0x4a70c5['filters']=_[_0xfd40('0x3b')](_0x4a70c5[_0xfd40('0x38')],_0x4a70c5['query']);_0x319f3a[_0xfd40('0x3c')]=_['intersection'](_0x4a70c5[_0xfd40('0x38')],qs['fields'](_0x2ad176[_0xfd40('0x3a')][_0xfd40('0x3d')]));_0x319f3a['attributes']=_0x319f3a[_0xfd40('0x3c')][_0xfd40('0x3e')]?_0x319f3a['attributes']:_0x4a70c5[_0xfd40('0x38')];if(!_0x2ad176['query'][_0xfd40('0x3f')](_0xfd40('0x40'))){_0x319f3a[_0xfd40('0x26')]=qs[_0xfd40('0x26')](_0x2ad176[_0xfd40('0x3a')]['limit']);_0x319f3a[_0xfd40('0x24')]=qs[_0xfd40('0x24')](_0x2ad176[_0xfd40('0x3a')]['offset']);}_0x319f3a[_0xfd40('0x41')]=qs[_0xfd40('0x42')](_0x2ad176['query'][_0xfd40('0x42')]);_0x319f3a['where']=qs[_0xfd40('0x43')](_[_0xfd40('0x44')](_0x2ad176[_0xfd40('0x3a')],_0x4a70c5[_0xfd40('0x43')]),_0x4b0d44);if(_0x2ad176[_0xfd40('0x3a')]['filter']){_0x319f3a[_0xfd40('0x45')]=_[_0xfd40('0x46')](_0x319f3a[_0xfd40('0x45')],{'$or':_[_0xfd40('0x39')](_0x4b0d44,function(_0xa4458a){if(_0xa4458a[_0xfd40('0x36')]!==_0xfd40('0x47')){var _0x5ed8cb={};_0x5ed8cb[_0xa4458a['name']]={'$like':'%'+_0x2ad176[_0xfd40('0x3a')]['filter']+'%'};return _0x5ed8cb;}})});}_0x319f3a=_[_0xfd40('0x46')]({},_0x319f3a,_0x2ad176['options']);var _0x278799={'where':_0x319f3a[_0xfd40('0x45')]};return db[_0xfd40('0x34')][_0xfd40('0x27')](_0x278799)[_0xfd40('0x2c')](function(_0x3b16ab){_0x26a811['count']=_0x3b16ab;if(_0x2ad176[_0xfd40('0x3a')][_0xfd40('0x48')]){_0x319f3a['include']=[{'all':!![]}];}return db[_0xfd40('0x34')][_0xfd40('0x49')](_0x319f3a);})['then'](function(_0x29db7b){_0x26a811[_0xfd40('0x4a')]=_0x29db7b;return _0x26a811;})[_0xfd40('0x2c')](respondWithFilteredResult(_0xf19076,_0x319f3a))[_0xfd40('0x4b')](handleError(_0xf19076,null));};exports['show']=function(_0x2f9cd5,_0x2af559){var _0x131d2d={'raw':!![],'where':{'id':_0x2f9cd5[_0xfd40('0x4c')]['id']}},_0x579ab8={};_0x579ab8[_0xfd40('0x38')]=_[_0xfd40('0x4d')](db[_0xfd40('0x34')][_0xfd40('0x4e')]);_0x579ab8[_0xfd40('0x3a')]=_[_0xfd40('0x4d')](_0x2f9cd5[_0xfd40('0x3a')]);_0x579ab8[_0xfd40('0x43')]=_[_0xfd40('0x3b')](_0x579ab8[_0xfd40('0x38')],_0x579ab8[_0xfd40('0x3a')]);_0x131d2d[_0xfd40('0x3c')]=_[_0xfd40('0x3b')](_0x579ab8[_0xfd40('0x38')],qs[_0xfd40('0x3d')](_0x2f9cd5[_0xfd40('0x3a')][_0xfd40('0x3d')]));_0x131d2d['attributes']=_0x131d2d[_0xfd40('0x3c')][_0xfd40('0x3e')]?_0x131d2d['attributes']:_0x579ab8[_0xfd40('0x38')];if(_0x2f9cd5['query'][_0xfd40('0x48')]){_0x131d2d[_0xfd40('0x4f')]=[{'all':!![]}];}_0x131d2d=_[_0xfd40('0x46')]({},_0x131d2d,_0x2f9cd5['options']);return db[_0xfd40('0x34')][_0xfd40('0x50')](_0x131d2d)['then'](handleEntityNotFound(_0x2af559,null))['then'](respondWithResult(_0x2af559,null))[_0xfd40('0x4b')](handleError(_0x2af559,null));};exports[_0xfd40('0x51')]=function(_0x31d07d,_0x3b892a){return db['FaxQueue'][_0xfd40('0x51')](_0x31d07d['body'],{})[_0xfd40('0x2c')](function(_0xa0d087){var _0x6f4174=_0x31d07d[_0xfd40('0x52')]['get']({'plain':!![]});if(!_0x6f4174)throw new Error(_0xfd40('0x53'));if(_0x6f4174['role']===_0xfd40('0x52')){var _0x57fcf9=_0xa0d087[_0xfd40('0x2e')]({'plain':!![]});var _0x3bb314='FaxQueues';return db[_0xfd40('0x54')][_0xfd40('0x50')]({'where':{'name':_0x3bb314,'userProfileId':_0x6f4174[_0xfd40('0x55')]},'raw':!![]})['then'](function(_0x438c46){if(_0x438c46&&_0x438c46['autoAssociation']===0x0){return db[_0xfd40('0x56')][_0xfd40('0x51')]({'name':_0x57fcf9['name'],'resourceId':_0x57fcf9['id'],'type':_0x438c46[_0xfd40('0x32')],'sectionId':_0x438c46['id']},{})[_0xfd40('0x2c')](function(){return _0xa0d087;});}else{return _0xa0d087;}})[_0xfd40('0x4b')](function(_0x44801e){logger[_0xfd40('0x30')](_0xfd40('0x57'),_0x44801e);throw _0x44801e;});}return _0xa0d087;})['then'](respondWithResult(_0x3b892a,0xc9))[_0xfd40('0x4b')](handleError(_0x3b892a,null));};exports[_0xfd40('0x2b')]=function(_0x130eda,_0x5c1f64){if(_0x130eda[_0xfd40('0x58')]['id']){delete _0x130eda[_0xfd40('0x58')]['id'];}return db['FaxQueue'][_0xfd40('0x50')]({'where':{'id':_0x130eda[_0xfd40('0x4c')]['id']}})[_0xfd40('0x2c')](handleEntityNotFound(_0x5c1f64,null))[_0xfd40('0x2c')](saveUpdates(_0x130eda['body'],null))[_0xfd40('0x2c')](respondWithResult(_0x5c1f64,null))[_0xfd40('0x4b')](handleError(_0x5c1f64,null));};exports[_0xfd40('0x2d')]=function(_0x4e9209,_0x1d0aaa){return db[_0xfd40('0x34')][_0xfd40('0x50')]({'where':{'id':_0x4e9209[_0xfd40('0x4c')]['id']}})[_0xfd40('0x2c')](handleEntityNotFound(_0x1d0aaa,null))[_0xfd40('0x2c')](removeEntity(_0x1d0aaa,null))[_0xfd40('0x4b')](handleError(_0x1d0aaa,null));};exports[_0xfd40('0x59')]=function(_0x2c4e2d,_0x21b3f4){return db['FaxQueue'][_0xfd40('0x59')]()[_0xfd40('0x2c')](respondWithResult(_0x21b3f4,null))[_0xfd40('0x4b')](handleError(_0x21b3f4,null));};exports['getMembers']=function(_0x24811a,_0xce118b,_0x26873d){var _0x4b8def={'raw':!![],'where':{}},_0x377341={},_0x54dbb4;return db[_0xfd40('0x34')][_0xfd40('0x5a')]({'where':{'id':_0x24811a[_0xfd40('0x4c')]['id']}})[_0xfd40('0x2c')](handleEntityNotFound(_0xce118b,null))[_0xfd40('0x2c')](function(_0x18b25b){if(_0x18b25b){_0x54dbb4=_0x18b25b[_0xfd40('0x2e')]({'plain':!![]});_0x377341[_0xfd40('0x38')]=_[_0xfd40('0x4d')](db[_0xfd40('0x5b')][_0xfd40('0x4e')]);_0x377341['query']=_[_0xfd40('0x4d')](_0x24811a['query']);_0x377341[_0xfd40('0x43')]=_[_0xfd40('0x3b')](_0x377341[_0xfd40('0x38')],_0x377341['query']);_0x4b8def[_0xfd40('0x3c')]=_[_0xfd40('0x3b')](_0x377341[_0xfd40('0x38')],qs[_0xfd40('0x3d')](_0x24811a[_0xfd40('0x3a')][_0xfd40('0x3d')]));_0x4b8def[_0xfd40('0x3c')]=_0x4b8def['attributes'][_0xfd40('0x3e')]?_0x4b8def[_0xfd40('0x3c')]:_0x377341[_0xfd40('0x38')];if(!_0x24811a[_0xfd40('0x3a')]['hasOwnProperty'](_0xfd40('0x40'))){_0x4b8def[_0xfd40('0x26')]=qs[_0xfd40('0x26')](_0x24811a[_0xfd40('0x3a')][_0xfd40('0x26')]);_0x4b8def[_0xfd40('0x24')]=qs['offset'](_0x24811a[_0xfd40('0x3a')]['offset']);}_0x4b8def['order']=qs[_0xfd40('0x42')](_0x24811a[_0xfd40('0x3a')][_0xfd40('0x42')]);_0x4b8def[_0xfd40('0x45')]=qs[_0xfd40('0x43')](_[_0xfd40('0x44')](_0x24811a[_0xfd40('0x3a')],_0x377341[_0xfd40('0x43')]));_0x4b8def[_0xfd40('0x45')][_0xfd40('0x5c')]=_0x18b25b['id'];if(_0x24811a[_0xfd40('0x3a')][_0xfd40('0x5d')]){_0x4b8def[_0xfd40('0x45')]=_[_0xfd40('0x46')](_0x4b8def[_0xfd40('0x45')],{'$or':_[_0xfd40('0x39')](_0x4b8def[_0xfd40('0x3c')],function(_0x3dcb98){var _0x1675cd={};_0x1675cd[_0x3dcb98]={'$like':'%'+_0x24811a[_0xfd40('0x3a')]['filter']+'%'};return _0x1675cd;})});}_0x4b8def=_[_0xfd40('0x46')]({},_0x4b8def,_0x24811a[_0xfd40('0x5e')]);return db['UserFaxQueue'][_0xfd40('0x49')](_0x4b8def);}})[_0xfd40('0x2c')](function(_0x3507ee){if(_0x3507ee){return db[_0xfd40('0x5f')][_0xfd40('0x60')]({'where':{'id':_[_0xfd40('0x39')](_0x3507ee,_0xfd40('0x61')),'role':_0xfd40('0x62')},'attributes':['id',_0xfd40('0x32'),_0xfd40('0x63'),_0xfd40('0x64'),_0xfd40('0x65')]});}})[_0xfd40('0x2c')](function(_0x1fc3ad){if(_0x1fc3ad){return{'count':_0x1fc3ad['count'],'rows':_[_0xfd40('0x39')](_0x1fc3ad[_0xfd40('0x4a')],function(_0x437ee7){return{'membername':_0x437ee7[_0xfd40('0x32')],'UserId':_0x437ee7['id'],'queue_name':_0x54dbb4[_0xfd40('0x32')],'FaxQueueId':_0x54dbb4['id'],'interface':util['format']('%s/%s',_0xfd40('0x66'),_0x437ee7[_0xfd40('0x32')]),'penalty':0x0,'paused':_0x437ee7[_0xfd40('0x63')],'createdAt':_0x437ee7['createdAt'],'updatedAt':_0x437ee7[_0xfd40('0x64')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xfd40('0x2c')](respondWithFilteredResult(_0xce118b,_0x4b8def))['catch'](handleError(_0xce118b,null));};exports['getTeams']=function(_0x54b725,_0x377009,_0x113dd7){var _0x1c9fda={};var _0x869009={};var _0x448a8c;var _0x5ab8a2;return db[_0xfd40('0x34')][_0xfd40('0x5a')]({'where':{'id':_0x54b725[_0xfd40('0x4c')]['id']}})[_0xfd40('0x2c')](handleEntityNotFound(_0x377009,null))[_0xfd40('0x2c')](function(_0x544ca3){if(_0x544ca3){_0x448a8c=_0x544ca3;_0x869009[_0xfd40('0x38')]=_['keys'](db['Team'][_0xfd40('0x4e')]);_0x869009[_0xfd40('0x3a')]=_[_0xfd40('0x4d')](_0x54b725[_0xfd40('0x3a')]);_0x869009[_0xfd40('0x43')]=_['intersection'](_0x869009[_0xfd40('0x38')],_0x869009[_0xfd40('0x3a')]);_0x1c9fda[_0xfd40('0x3c')]=_[_0xfd40('0x3b')](_0x869009[_0xfd40('0x38')],qs['fields'](_0x54b725['query'][_0xfd40('0x3d')]));_0x1c9fda[_0xfd40('0x3c')]=_0x1c9fda[_0xfd40('0x3c')][_0xfd40('0x3e')]?_0x1c9fda[_0xfd40('0x3c')]:_0x869009[_0xfd40('0x38')];_0x1c9fda[_0xfd40('0x41')]=qs[_0xfd40('0x42')](_0x54b725['query'][_0xfd40('0x42')]);_0x1c9fda[_0xfd40('0x45')]=qs[_0xfd40('0x43')](_[_0xfd40('0x44')](_0x54b725['query'],_0x869009[_0xfd40('0x43')]));if(_0x54b725['query']['filter']){_0x1c9fda['where']=_[_0xfd40('0x46')](_0x1c9fda[_0xfd40('0x45')],{'$or':_[_0xfd40('0x39')](_0x1c9fda['attributes'],function(_0xf7b4d4){var _0x1e67b6={};_0x1e67b6[_0xf7b4d4]={'$like':'%'+_0x54b725[_0xfd40('0x3a')]['filter']+'%'};return _0x1e67b6;})});}_0x1c9fda=_[_0xfd40('0x46')]({},_0x1c9fda,_0x54b725[_0xfd40('0x5e')]);return _0x448a8c[_0xfd40('0x67')](_0x1c9fda);}})['then'](function(_0x15b2c5){if(_0x15b2c5){_0x5ab8a2=_0x15b2c5['length'];if(!_0x54b725[_0xfd40('0x3a')]['hasOwnProperty'](_0xfd40('0x40'))){_0x1c9fda[_0xfd40('0x26')]=qs[_0xfd40('0x26')](_0x54b725['query'][_0xfd40('0x26')]);_0x1c9fda[_0xfd40('0x24')]=qs[_0xfd40('0x24')](_0x54b725['query'][_0xfd40('0x24')]);}return _0x448a8c['getTeams'](_0x1c9fda);}})['then'](function(_0x77050e){if(_0x77050e){return _0x77050e?{'count':_0x5ab8a2,'rows':_0x77050e}:null;}})['then'](respondWithResult(_0x377009,null))[_0xfd40('0x4b')](handleError(_0x377009,null));};exports[_0xfd40('0x68')]=function(_0x12709c,_0x48eb49,_0x52e71c){var _0x3661d9=_0x12709c[_0xfd40('0x58')][_0xfd40('0x69')];return db['Team'][_0xfd40('0x49')]({'where':{'id':_0x3661d9},'attributes':['id'],'include':[{'model':db[_0xfd40('0x5f')],'as':_0xfd40('0x6a'),'attributes':['id','name','online',_0xfd40('0x6b'),_0xfd40('0x6c')],'raw':!![]}]})[_0xfd40('0x2c')](function(_0x128e0c){if(_0x128e0c){var _0x3bec59=_[_0xfd40('0x6d')](_0x128e0c,function(_0x1c70f0){var _0x12740e=_0x1c70f0[_0xfd40('0x2e')]({'plain':!![]});return _0x12740e[_0xfd40('0x6a')];});return db['FaxQueue'][_0xfd40('0x50')]({'where':{'id':_0x12709c['params']['id']}})[_0xfd40('0x2c')](function(_0x15c810){return db[_0xfd40('0x6e')][_0xfd40('0x6f')](function(_0x18ae9a){return _0x15c810['addTeams'](_0x3661d9,{'transaction':_0x18ae9a})['then'](function(){return BPromise[_0xfd40('0x70')](_0x3bec59,function(_0x3b66c0){return db[_0xfd40('0x5b')][_0xfd40('0x71')]({'where':{'UserId':_0x3b66c0['id'],'FaxQueueId':_0x12709c[_0xfd40('0x4c')]['id']},'transaction':_0x18ae9a});});})[_0xfd40('0x2c')](function(){_0x3bec59[_0xfd40('0x72')](function(_0x46a7d1){socket['emit'](_0xfd40('0x73'),{'UserId':_0x46a7d1['id'],'FaxQueueId':_0x15c810['id']});});});});});}})[_0xfd40('0x2c')](respondWithStatusCode(_0x48eb49,null))[_0xfd40('0x4b')](handleError(_0x48eb49,null));};exports[_0xfd40('0x74')]=function(_0x178450,_0x1d5804,_0x400cf3){return db['Team'][_0xfd40('0x49')]({'where':{'id':_0x178450['query']['ids']},'attributes':['id'],'include':[{'model':db[_0xfd40('0x5f')],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0xfd40('0x2c')](handleEntityNotFound(_0x1d5804,null))[_0xfd40('0x2c')](function(_0x1cd8be){var _0x1aa752=_['map'](_0x1cd8be,'id');var _0x37bdb0=[];var _0x454059=[];var _0x28bb06=squel[_0xfd40('0x75')]();_0x28bb06[_0xfd40('0x76')](_0xfd40('0x77'))[_0xfd40('0x78')](_0xfd40('0x79'),'tq')[_0xfd40('0x7a')](_0xfd40('0x7b'),'ut',_0xfd40('0x7c'))[_0xfd40('0x45')](_0xfd40('0x7d'),_0x178450[_0xfd40('0x4c')]['id']);for(var _0xc88ba=0x0;_0xc88ba<_0x1cd8be[_0xfd40('0x3e')];_0xc88ba+=0x1){let _0x1e15f2=_0x1cd8be[_0xc88ba];for(var _0x38f49e=0x0;_0x38f49e<_0x1e15f2['Agents'][_0xfd40('0x3e')];_0x38f49e+=0x1){let _0x1b46e0=_0x1e15f2[_0xfd40('0x6a')][_0x38f49e];var _0x364785=_0x28bb06['clone']();_0x364785[_0xfd40('0x45')](_0xfd40('0x7e'),_0x1b46e0['id']);_0x454059['push'](db[_0xfd40('0x6e')]['query'](_0x364785['toString'](),{'type':db[_0xfd40('0x6e')][_0xfd40('0x7f')][_0xfd40('0x80')]})[_0xfd40('0x2c')](function(_0x2db5fe){if(_0x2db5fe[_0xfd40('0x3e')]===0x1){return _0x1b46e0['id'];}else{var _0xe1b218=_['every'](_[_0xfd40('0x39')](_0x2db5fe,_0xfd40('0x81')),function(_0x6f5ee1){return _['includes'](_0x1aa752,_0x6f5ee1);});if(_0xe1b218){return _0x1b46e0['id'];}}}));}}return BPromise['all'](_0x454059)['then'](function(_0x2fe199){_0x37bdb0=_(_0x37bdb0)[_0xfd40('0x82')](_0x2fe199)['compact']()[_0xfd40('0x83')]();return db['FaxQueue']['find']({'where':{'id':_0x178450[_0xfd40('0x4c')]['id']}})[_0xfd40('0x2c')](function(_0x5a372c){return db[_0xfd40('0x6e')][_0xfd40('0x6f')](function(_0x198e5b){return _0x5a372c['removeTeams'](_0x178450['query']['ids'],{'transaction':_0x198e5b})[_0xfd40('0x2c')](function(){if(!_[_0xfd40('0x84')](_0x37bdb0)){return _0x5a372c[_0xfd40('0x85')](_0x37bdb0,{'transaction':_0x198e5b});}})[_0xfd40('0x2c')](function(){_0x37bdb0['forEach'](function(_0x53a985){socket[_0xfd40('0x86')](_0xfd40('0x87'),{'UserId':_0x53a985,'FaxQueueId':_0x5a372c['id']});});});});});});})[_0xfd40('0x2c')](respondWithStatusCode(_0x1d5804,null))[_0xfd40('0x4b')](handleError(_0x1d5804,null));};exports[_0xfd40('0x88')]=function(_0x3f6f7c,_0x150134,_0xc4e19b){return db[_0xfd40('0x34')][_0xfd40('0x50')]({'where':{'id':_0x3f6f7c[_0xfd40('0x4c')]['id']}})[_0xfd40('0x2c')](handleEntityNotFound(_0x150134,null))['then'](function(_0x58bdda){if(_0x58bdda){return _0x58bdda[_0xfd40('0x88')](_0x3f6f7c[_0xfd40('0x58')][_0xfd40('0x69')],_[_0xfd40('0x89')](_0x3f6f7c[_0xfd40('0x58')],['ids','id'])||{})[_0xfd40('0x8a')](function(_0x422d2b){for(var _0x4b106b=0x0;_0x4b106b<_0x3f6f7c[_0xfd40('0x58')][_0xfd40('0x69')]['length'];_0x4b106b+=0x1){socket[_0xfd40('0x86')]('userFaxQueue:save',{'UserId':Number(_0x3f6f7c['body']['ids'][_0x4b106b]),'FaxQueueId':Number(_0x3f6f7c[_0xfd40('0x4c')]['id'])});}return _0x422d2b;});}})[_0xfd40('0x2c')](respondWithResult(_0x150134,null))[_0xfd40('0x4b')](handleError(_0x150134,null));};exports[_0xfd40('0x85')]=function(_0xae2ce5,_0xfc5666,_0x27255b){return db[_0xfd40('0x34')][_0xfd40('0x50')]({'where':{'id':_0xae2ce5['params']['id']}})[_0xfd40('0x2c')](handleEntityNotFound(_0xfc5666,null))[_0xfd40('0x2c')](function(_0x190279){if(_0x190279){return _0x190279[_0xfd40('0x85')](_0xae2ce5['query']['ids'])[_0xfd40('0x2c')](function(){if(_['isArray'](_0xae2ce5[_0xfd40('0x3a')][_0xfd40('0x69')])){for(var _0x18e2e3=0x0;_0x18e2e3<_0xae2ce5[_0xfd40('0x3a')]['ids'][_0xfd40('0x3e')];_0x18e2e3+=0x1){socket['emit'](_0xfd40('0x87'),{'UserId':Number(_0xae2ce5['query'][_0xfd40('0x69')][_0x18e2e3]),'FaxQueueId':Number(_0xae2ce5[_0xfd40('0x4c')]['id'])});}}else{socket[_0xfd40('0x86')](_0xfd40('0x87'),{'UserId':Number(_0xae2ce5[_0xfd40('0x3a')]['ids']),'FaxQueueId':Number(_0xae2ce5[_0xfd40('0x4c')]['id'])});}});}})[_0xfd40('0x2c')](respondWithStatusCode(_0xfc5666,null))[_0xfd40('0x4b')](handleError(_0xfc5666,null));};exports[_0xfd40('0x8b')]=function(_0x88ebd8,_0x4a3941,_0x515ad5){var _0x1ae3bc={};var _0xd04c30={};var _0x500509;var _0x593dc3;return db['FaxQueue'][_0xfd40('0x5a')]({'where':{'id':_0x88ebd8[_0xfd40('0x4c')]['id']}})[_0xfd40('0x2c')](handleEntityNotFound(_0x4a3941,null))[_0xfd40('0x2c')](function(_0x40bfba){if(_0x40bfba){_0x500509=_0x40bfba;_0xd04c30[_0xfd40('0x38')]=_[_0xfd40('0x4d')](db[_0xfd40('0x5f')][_0xfd40('0x4e')]);_0xd04c30[_0xfd40('0x3a')]=_['keys'](_0x88ebd8[_0xfd40('0x3a')]);_0xd04c30[_0xfd40('0x43')]=_[_0xfd40('0x3b')](_0xd04c30[_0xfd40('0x38')],_0xd04c30[_0xfd40('0x3a')]);_0x1ae3bc[_0xfd40('0x3c')]=_[_0xfd40('0x3b')](_0xd04c30[_0xfd40('0x38')],qs[_0xfd40('0x3d')](_0x88ebd8[_0xfd40('0x3a')][_0xfd40('0x3d')]));_0x1ae3bc[_0xfd40('0x3c')]=_0x1ae3bc['attributes']['length']?_0x1ae3bc['attributes']:_0xd04c30['model'];_0x1ae3bc['order']=qs['sort'](_0x88ebd8[_0xfd40('0x3a')][_0xfd40('0x42')]);_0x1ae3bc[_0xfd40('0x45')]=qs['filters'](_[_0xfd40('0x44')](_0x88ebd8[_0xfd40('0x3a')],_0xd04c30['filters']));if(_0x88ebd8[_0xfd40('0x3a')][_0xfd40('0x5d')]){_0x1ae3bc[_0xfd40('0x45')]=_[_0xfd40('0x46')](_0x1ae3bc[_0xfd40('0x45')],{'$or':_[_0xfd40('0x39')](_0x1ae3bc[_0xfd40('0x3c')],function(_0x1e3f1a){var _0x40e259={};_0x40e259[_0x1e3f1a]={'$like':'%'+_0x88ebd8['query'][_0xfd40('0x5d')]+'%'};return _0x40e259;})});}_0x1ae3bc=_['merge']({},_0x1ae3bc,_0x88ebd8[_0xfd40('0x5e')]);return _0x500509[_0xfd40('0x8b')](_0x1ae3bc);}})[_0xfd40('0x2c')](function(_0x3cab81){if(_0x3cab81){_0x593dc3=_0x3cab81['length'];if(!_0x88ebd8[_0xfd40('0x3a')][_0xfd40('0x3f')](_0xfd40('0x40'))){_0x1ae3bc[_0xfd40('0x26')]=qs['limit'](_0x88ebd8['query']['limit']);_0x1ae3bc[_0xfd40('0x24')]=qs['offset'](_0x88ebd8['query']['offset']);}return _0x500509[_0xfd40('0x8b')](_0x1ae3bc);}})[_0xfd40('0x2c')](function(_0x4d46c0){if(_0x4d46c0){return _0x4d46c0?{'count':_0x593dc3,'rows':_0x4d46c0}:null;}})[_0xfd40('0x2c')](respondWithResult(_0x4a3941,null))[_0xfd40('0x4b')](handleError(_0x4a3941,null));};
\ No newline at end of file
+var _0x49d8=['save','update','destroy','then','get','FaxQueues','UserProfileResource','error','stack','name','index','FaxQueue','rawAttributes','fieldName','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','options','includeAll','rows','catch','show','include','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','find','params','describe','FaxQueueId','UserFaxQueue','User','findAndCountAll','agent','faxPause','createdAt','format','%s/%s','updatedAt','getTeams','findOne','Team','addTeams','findAll','online','voicePause','interface','flatMap','Agents','sequelize','each','forEach','userFaxQueue:save','removeTeams','field','tq.TeamId','team_has_fax_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','FaxQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','SELECT','every','TeamId','includes','all','value','transaction','ids','removeAgents','userFaxQueue:remove','addAgents','omit','spread','emit','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','../../config/license/hardware','api','../../config/utils','../../config/license/util','redis','defaults','localhost','socket.io-emitter','sendStatus','end','status','json','offset','limit','count','set','apply','reject'];(function(_0x30ae5e,_0x391fc4){var _0x1f2e93=function(_0x60307d){while(--_0x60307d){_0x30ae5e['push'](_0x30ae5e['shift']());}};_0x1f2e93(++_0x391fc4);}(_0x49d8,0xec));var _0x849d=function(_0x2af4e4,_0xfc6be8){_0x2af4e4=_0x2af4e4-0x0;var _0x517e9d=_0x49d8[_0x2af4e4];return _0x517e9d;};'use strict';var emlformat=require(_0x849d('0x0'));var rimraf=require(_0x849d('0x1'));var zipdir=require(_0x849d('0x2'));var jsonpatch=require(_0x849d('0x3'));var rp=require(_0x849d('0x4'));var moment=require(_0x849d('0x5'));var BPromise=require(_0x849d('0x6'));var Mustache=require(_0x849d('0x7'));var util=require(_0x849d('0x8'));var path=require(_0x849d('0x9'));var sox=require('sox');var csv=require(_0x849d('0xa'));var ejs=require(_0x849d('0xb'));var fs=require('fs');var fs_extra=require(_0x849d('0xc'));var _=require(_0x849d('0xd'));var squel=require(_0x849d('0xe'));var crypto=require(_0x849d('0xf'));var jsforce=require(_0x849d('0x10'));var deskjs=require(_0x849d('0x11'));var toCsv=require(_0x849d('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x849d('0x12'));var logger=require('../../config/logger')(_0x849d('0x13'));var utils=require(_0x849d('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x849d('0x15'));var db=require('../../mysqldb')['db'];config[_0x849d('0x16')]=_[_0x849d('0x17')](config[_0x849d('0x16')],{'host':_0x849d('0x18'),'port':0x18eb});var socket=require(_0x849d('0x19'))(new Redis(config[_0x849d('0x16')]));require('./faxQueue.socket')['register'](socket);function respondWithStatusCode(_0x7dd7ab,_0x1423fa){_0x1423fa=_0x1423fa||0xcc;return function(_0x3dd6b5){if(_0x3dd6b5){return _0x7dd7ab[_0x849d('0x1a')](_0x1423fa);}return _0x7dd7ab['status'](_0x1423fa)[_0x849d('0x1b')]();};}function respondWithResult(_0x5d6904,_0x38159a){_0x38159a=_0x38159a||0xc8;return function(_0x263e9f){if(_0x263e9f){return _0x5d6904[_0x849d('0x1c')](_0x38159a)[_0x849d('0x1d')](_0x263e9f);}};}function respondWithFilteredResult(_0x79fc3f,_0x35c619){return function(_0x447cd9){if(_0x447cd9){var _0x181125=typeof _0x35c619[_0x849d('0x1e')]==='undefined'&&typeof _0x35c619[_0x849d('0x1f')]==='undefined';var _0x3c7c82=_0x447cd9[_0x849d('0x20')];var _0x37a206=_0x181125?0x0:_0x35c619[_0x849d('0x1e')];var _0x3d4149=_0x181125?_0x447cd9[_0x849d('0x20')]:_0x35c619['offset']+_0x35c619['limit'];var _0xaa3feb;if(_0x3d4149>=_0x3c7c82){_0x3d4149=_0x3c7c82;_0xaa3feb=0xc8;}else{_0xaa3feb=0xce;}_0x79fc3f[_0x849d('0x1c')](_0xaa3feb);return _0x79fc3f[_0x849d('0x21')]('Content-Range',_0x37a206+'-'+_0x3d4149+'/'+_0x3c7c82)[_0x849d('0x1d')](_0x447cd9);}return null;};}function patchUpdates(_0x2b848c){return function(_0x21226b){try{jsonpatch[_0x849d('0x22')](_0x21226b,_0x2b848c,!![]);}catch(_0x47368d){return BPromise[_0x849d('0x23')](_0x47368d);}return _0x21226b[_0x849d('0x24')]();};}function saveUpdates(_0x1ba747,_0x4c0495){return function(_0x1b0e2d){if(_0x1b0e2d){return _0x1b0e2d[_0x849d('0x25')](_0x1ba747)['then'](function(_0xcd88d8){return _0xcd88d8;});}return null;};}function removeEntity(_0x38dc4a,_0x393897){return function(_0x3b2f84){if(_0x3b2f84){return _0x3b2f84[_0x849d('0x26')]()[_0x849d('0x27')](function(){var _0x2e4393=_0x3b2f84[_0x849d('0x28')]({'plain':!![]});var _0x1be66d=_0x849d('0x29');return db[_0x849d('0x2a')][_0x849d('0x26')]({'where':{'type':_0x1be66d,'resourceId':_0x2e4393['id']}})[_0x849d('0x27')](function(){return _0x3b2f84;});})[_0x849d('0x27')](function(){_0x38dc4a['status'](0xcc)[_0x849d('0x1b')]();});}};}function handleEntityNotFound(_0x30c952,_0x492205){return function(_0x3da96d){if(!_0x3da96d){_0x30c952[_0x849d('0x1a')](0x194);}return _0x3da96d;};}function handleError(_0x12b4c5,_0x46af32){_0x46af32=_0x46af32||0x1f4;return function(_0x4a2aa2){logger[_0x849d('0x2b')](_0x4a2aa2[_0x849d('0x2c')]);if(_0x4a2aa2[_0x849d('0x2d')]){delete _0x4a2aa2[_0x849d('0x2d')];}_0x12b4c5[_0x849d('0x1c')](_0x46af32)['send'](_0x4a2aa2);};}exports[_0x849d('0x2e')]=function(_0x2c754f,_0x463513){var _0x346979={},_0x358437={},_0x2c0fdd={'count':0x0,'rows':[]};var _0x345d77=_['map'](db[_0x849d('0x2f')][_0x849d('0x30')],function(_0x173412){return{'name':_0x173412[_0x849d('0x31')],'type':_0x173412['type']['key']};});_0x358437[_0x849d('0x32')]=_[_0x849d('0x33')](_0x345d77,_0x849d('0x2d'));_0x358437[_0x849d('0x34')]=_[_0x849d('0x35')](_0x2c754f['query']);_0x358437[_0x849d('0x36')]=_[_0x849d('0x37')](_0x358437['model'],_0x358437[_0x849d('0x34')]);_0x346979[_0x849d('0x38')]=_[_0x849d('0x37')](_0x358437['model'],qs[_0x849d('0x39')](_0x2c754f[_0x849d('0x34')]['fields']));_0x346979['attributes']=_0x346979[_0x849d('0x38')][_0x849d('0x3a')]?_0x346979[_0x849d('0x38')]:_0x358437['model'];if(!_0x2c754f[_0x849d('0x34')][_0x849d('0x3b')](_0x849d('0x3c'))){_0x346979['limit']=qs[_0x849d('0x1f')](_0x2c754f[_0x849d('0x34')][_0x849d('0x1f')]);_0x346979[_0x849d('0x1e')]=qs[_0x849d('0x1e')](_0x2c754f[_0x849d('0x34')][_0x849d('0x1e')]);}_0x346979[_0x849d('0x3d')]=qs[_0x849d('0x3e')](_0x2c754f[_0x849d('0x34')]['sort']);_0x346979[_0x849d('0x3f')]=qs['filters'](_[_0x849d('0x40')](_0x2c754f[_0x849d('0x34')],_0x358437[_0x849d('0x36')]),_0x345d77);if(_0x2c754f[_0x849d('0x34')][_0x849d('0x41')]){_0x346979[_0x849d('0x3f')]=_[_0x849d('0x42')](_0x346979[_0x849d('0x3f')],{'$or':_[_0x849d('0x33')](_0x345d77,function(_0x441cdf){if(_0x441cdf[_0x849d('0x43')]!=='VIRTUAL'){var _0x40ed94={};_0x40ed94[_0x441cdf[_0x849d('0x2d')]]={'$like':'%'+_0x2c754f['query'][_0x849d('0x41')]+'%'};return _0x40ed94;}})});}_0x346979=_['merge']({},_0x346979,_0x2c754f[_0x849d('0x44')]);var _0x4a2b9b={'where':_0x346979['where']};return db[_0x849d('0x2f')][_0x849d('0x20')](_0x4a2b9b)[_0x849d('0x27')](function(_0x1a2da0){_0x2c0fdd[_0x849d('0x20')]=_0x1a2da0;if(_0x2c754f[_0x849d('0x34')][_0x849d('0x45')]){_0x346979['include']=[{'all':!![]}];}return db[_0x849d('0x2f')]['findAll'](_0x346979);})['then'](function(_0x54eca1){_0x2c0fdd[_0x849d('0x46')]=_0x54eca1;return _0x2c0fdd;})[_0x849d('0x27')](respondWithFilteredResult(_0x463513,_0x346979))[_0x849d('0x47')](handleError(_0x463513,null));};exports[_0x849d('0x48')]=function(_0x333a17,_0x47f2af){var _0xe56c33={'raw':!![],'where':{'id':_0x333a17['params']['id']}},_0x87b938={};_0x87b938[_0x849d('0x32')]=_[_0x849d('0x35')](db['FaxQueue'][_0x849d('0x30')]);_0x87b938[_0x849d('0x34')]=_[_0x849d('0x35')](_0x333a17[_0x849d('0x34')]);_0x87b938[_0x849d('0x36')]=_[_0x849d('0x37')](_0x87b938['model'],_0x87b938['query']);_0xe56c33['attributes']=_[_0x849d('0x37')](_0x87b938['model'],qs[_0x849d('0x39')](_0x333a17['query'][_0x849d('0x39')]));_0xe56c33[_0x849d('0x38')]=_0xe56c33[_0x849d('0x38')][_0x849d('0x3a')]?_0xe56c33[_0x849d('0x38')]:_0x87b938['model'];if(_0x333a17[_0x849d('0x34')][_0x849d('0x45')]){_0xe56c33[_0x849d('0x49')]=[{'all':!![]}];}_0xe56c33=_[_0x849d('0x42')]({},_0xe56c33,_0x333a17[_0x849d('0x44')]);return db[_0x849d('0x2f')]['find'](_0xe56c33)[_0x849d('0x27')](handleEntityNotFound(_0x47f2af,null))[_0x849d('0x27')](respondWithResult(_0x47f2af,null))[_0x849d('0x47')](handleError(_0x47f2af,null));};exports[_0x849d('0x4a')]=function(_0x310c94,_0x317019){return db['FaxQueue'][_0x849d('0x4a')](_0x310c94[_0x849d('0x4b')],{})[_0x849d('0x27')](function(_0x9d2aaf){var _0x3c38f5=_0x310c94[_0x849d('0x4c')][_0x849d('0x28')]({'plain':!![]});if(!_0x3c38f5)throw new Error(_0x849d('0x4d'));if(_0x3c38f5[_0x849d('0x4e')]===_0x849d('0x4c')){var _0x4a0531=_0x9d2aaf[_0x849d('0x28')]({'plain':!![]});var _0xd3cf9c=_0x849d('0x29');return db[_0x849d('0x4f')]['find']({'where':{'name':_0xd3cf9c,'userProfileId':_0x3c38f5[_0x849d('0x50')]},'raw':!![]})[_0x849d('0x27')](function(_0x34cb84){if(_0x34cb84&&_0x34cb84[_0x849d('0x51')]===0x0){return db[_0x849d('0x2a')]['create']({'name':_0x4a0531[_0x849d('0x2d')],'resourceId':_0x4a0531['id'],'type':_0x34cb84['name'],'sectionId':_0x34cb84['id']},{})['then'](function(){return _0x9d2aaf;});}else{return _0x9d2aaf;}})[_0x849d('0x47')](function(_0x298861){logger['error'](_0x849d('0x52'),_0x298861);throw _0x298861;});}return _0x9d2aaf;})['then'](respondWithResult(_0x317019,0xc9))[_0x849d('0x47')](handleError(_0x317019,null));};exports[_0x849d('0x25')]=function(_0x50fe63,_0x204169){if(_0x50fe63[_0x849d('0x4b')]['id']){delete _0x50fe63[_0x849d('0x4b')]['id'];}return db[_0x849d('0x2f')][_0x849d('0x53')]({'where':{'id':_0x50fe63['params']['id']}})['then'](handleEntityNotFound(_0x204169,null))[_0x849d('0x27')](saveUpdates(_0x50fe63['body'],null))['then'](respondWithResult(_0x204169,null))[_0x849d('0x47')](handleError(_0x204169,null));};exports['destroy']=function(_0x5e6dbd,_0x35601e){return db['FaxQueue']['find']({'where':{'id':_0x5e6dbd[_0x849d('0x54')]['id']}})[_0x849d('0x27')](handleEntityNotFound(_0x35601e,null))['then'](removeEntity(_0x35601e,null))[_0x849d('0x47')](handleError(_0x35601e,null));};exports['describe']=function(_0x101d44,_0x11e49b){return db[_0x849d('0x2f')][_0x849d('0x55')]()[_0x849d('0x27')](respondWithResult(_0x11e49b,null))[_0x849d('0x47')](handleError(_0x11e49b,null));};exports['getMembers']=function(_0x474e51,_0x4cabc1,_0x2fe0af){var _0x26ff4c={'raw':!![],'where':{}},_0x5b08c8={},_0x2fecaa;return db[_0x849d('0x2f')]['findOne']({'where':{'id':_0x474e51['params']['id']}})['then'](handleEntityNotFound(_0x4cabc1,null))[_0x849d('0x27')](function(_0x36797b){if(_0x36797b){_0x2fecaa=_0x36797b[_0x849d('0x28')]({'plain':!![]});_0x5b08c8[_0x849d('0x32')]=_['keys'](db['UserFaxQueue'][_0x849d('0x30')]);_0x5b08c8['query']=_[_0x849d('0x35')](_0x474e51[_0x849d('0x34')]);_0x5b08c8[_0x849d('0x36')]=_[_0x849d('0x37')](_0x5b08c8['model'],_0x5b08c8[_0x849d('0x34')]);_0x26ff4c[_0x849d('0x38')]=_[_0x849d('0x37')](_0x5b08c8[_0x849d('0x32')],qs[_0x849d('0x39')](_0x474e51[_0x849d('0x34')]['fields']));_0x26ff4c[_0x849d('0x38')]=_0x26ff4c[_0x849d('0x38')][_0x849d('0x3a')]?_0x26ff4c[_0x849d('0x38')]:_0x5b08c8['model'];if(!_0x474e51[_0x849d('0x34')][_0x849d('0x3b')](_0x849d('0x3c'))){_0x26ff4c[_0x849d('0x1f')]=qs[_0x849d('0x1f')](_0x474e51[_0x849d('0x34')]['limit']);_0x26ff4c[_0x849d('0x1e')]=qs[_0x849d('0x1e')](_0x474e51[_0x849d('0x34')][_0x849d('0x1e')]);}_0x26ff4c[_0x849d('0x3d')]=qs['sort'](_0x474e51[_0x849d('0x34')][_0x849d('0x3e')]);_0x26ff4c[_0x849d('0x3f')]=qs[_0x849d('0x36')](_[_0x849d('0x40')](_0x474e51[_0x849d('0x34')],_0x5b08c8['filters']));_0x26ff4c[_0x849d('0x3f')][_0x849d('0x56')]=_0x36797b['id'];if(_0x474e51[_0x849d('0x34')]['filter']){_0x26ff4c[_0x849d('0x3f')]=_['merge'](_0x26ff4c[_0x849d('0x3f')],{'$or':_[_0x849d('0x33')](_0x26ff4c[_0x849d('0x38')],function(_0x44c5e2){var _0x2818c9={};_0x2818c9[_0x44c5e2]={'$like':'%'+_0x474e51[_0x849d('0x34')]['filter']+'%'};return _0x2818c9;})});}_0x26ff4c=_['merge']({},_0x26ff4c,_0x474e51[_0x849d('0x44')]);return db[_0x849d('0x57')]['findAll'](_0x26ff4c);}})[_0x849d('0x27')](function(_0x43d6fe){if(_0x43d6fe){return db[_0x849d('0x58')][_0x849d('0x59')]({'where':{'id':_['map'](_0x43d6fe,'UserId'),'role':_0x849d('0x5a')},'attributes':['id',_0x849d('0x2d'),_0x849d('0x5b'),'updatedAt',_0x849d('0x5c')]});}})['then'](function(_0x47d246){if(_0x47d246){return{'count':_0x47d246[_0x849d('0x20')],'rows':_[_0x849d('0x33')](_0x47d246[_0x849d('0x46')],function(_0x194bb5){return{'membername':_0x194bb5['name'],'UserId':_0x194bb5['id'],'queue_name':_0x2fecaa[_0x849d('0x2d')],'FaxQueueId':_0x2fecaa['id'],'interface':util[_0x849d('0x5d')](_0x849d('0x5e'),'SIP',_0x194bb5[_0x849d('0x2d')]),'penalty':0x0,'paused':_0x194bb5[_0x849d('0x5b')],'createdAt':_0x194bb5[_0x849d('0x5c')],'updatedAt':_0x194bb5[_0x849d('0x5f')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x849d('0x27')](respondWithFilteredResult(_0x4cabc1,_0x26ff4c))[_0x849d('0x47')](handleError(_0x4cabc1,null));};exports[_0x849d('0x60')]=function(_0x2c64e3,_0x3ded07,_0xb4908e){var _0x34bfe6={};var _0x582524={};var _0x8282ab;var _0x43f233;return db['FaxQueue'][_0x849d('0x61')]({'where':{'id':_0x2c64e3[_0x849d('0x54')]['id']}})['then'](handleEntityNotFound(_0x3ded07,null))[_0x849d('0x27')](function(_0x4663b3){if(_0x4663b3){_0x8282ab=_0x4663b3;_0x582524[_0x849d('0x32')]=_[_0x849d('0x35')](db[_0x849d('0x62')][_0x849d('0x30')]);_0x582524[_0x849d('0x34')]=_[_0x849d('0x35')](_0x2c64e3[_0x849d('0x34')]);_0x582524[_0x849d('0x36')]=_[_0x849d('0x37')](_0x582524[_0x849d('0x32')],_0x582524['query']);_0x34bfe6['attributes']=_[_0x849d('0x37')](_0x582524[_0x849d('0x32')],qs[_0x849d('0x39')](_0x2c64e3[_0x849d('0x34')]['fields']));_0x34bfe6['attributes']=_0x34bfe6[_0x849d('0x38')][_0x849d('0x3a')]?_0x34bfe6[_0x849d('0x38')]:_0x582524['model'];_0x34bfe6[_0x849d('0x3d')]=qs['sort'](_0x2c64e3[_0x849d('0x34')]['sort']);_0x34bfe6['where']=qs[_0x849d('0x36')](_['pick'](_0x2c64e3['query'],_0x582524[_0x849d('0x36')]));if(_0x2c64e3[_0x849d('0x34')][_0x849d('0x41')]){_0x34bfe6[_0x849d('0x3f')]=_[_0x849d('0x42')](_0x34bfe6['where'],{'$or':_[_0x849d('0x33')](_0x34bfe6[_0x849d('0x38')],function(_0x25c9d9){var _0x454a1c={};_0x454a1c[_0x25c9d9]={'$like':'%'+_0x2c64e3['query'][_0x849d('0x41')]+'%'};return _0x454a1c;})});}_0x34bfe6=_['merge']({},_0x34bfe6,_0x2c64e3[_0x849d('0x44')]);return _0x8282ab['getTeams'](_0x34bfe6);}})[_0x849d('0x27')](function(_0x4536a3){if(_0x4536a3){_0x43f233=_0x4536a3['length'];if(!_0x2c64e3[_0x849d('0x34')][_0x849d('0x3b')](_0x849d('0x3c'))){_0x34bfe6[_0x849d('0x1f')]=qs['limit'](_0x2c64e3[_0x849d('0x34')][_0x849d('0x1f')]);_0x34bfe6['offset']=qs[_0x849d('0x1e')](_0x2c64e3['query'][_0x849d('0x1e')]);}return _0x8282ab[_0x849d('0x60')](_0x34bfe6);}})[_0x849d('0x27')](function(_0x47e5cf){if(_0x47e5cf){return _0x47e5cf?{'count':_0x43f233,'rows':_0x47e5cf}:null;}})['then'](respondWithResult(_0x3ded07,null))['catch'](handleError(_0x3ded07,null));};exports[_0x849d('0x63')]=function(_0x1d2741,_0x16387a,_0x26b4bf){var _0x10098c=_0x1d2741[_0x849d('0x4b')]['ids'];return db['Team'][_0x849d('0x64')]({'where':{'id':_0x10098c},'attributes':['id'],'include':[{'model':db[_0x849d('0x58')],'as':'Agents','attributes':['id',_0x849d('0x2d'),_0x849d('0x65'),_0x849d('0x66'),_0x849d('0x67')],'raw':!![]}]})[_0x849d('0x27')](function(_0x24400a){if(_0x24400a){var _0x4d036a=_[_0x849d('0x68')](_0x24400a,function(_0x354e4c){var _0x2913ec=_0x354e4c['get']({'plain':!![]});return _0x2913ec[_0x849d('0x69')];});return db[_0x849d('0x2f')]['find']({'where':{'id':_0x1d2741['params']['id']}})[_0x849d('0x27')](function(_0x2b89fb){return db[_0x849d('0x6a')]['transaction'](function(_0x73c342){return _0x2b89fb[_0x849d('0x63')](_0x10098c,{'transaction':_0x73c342})[_0x849d('0x27')](function(){return BPromise[_0x849d('0x6b')](_0x4d036a,function(_0x3fb12a){return db[_0x849d('0x57')]['findOrCreate']({'where':{'UserId':_0x3fb12a['id'],'FaxQueueId':_0x1d2741[_0x849d('0x54')]['id']},'transaction':_0x73c342});});})[_0x849d('0x27')](function(){_0x4d036a[_0x849d('0x6c')](function(_0x506e39){socket['emit'](_0x849d('0x6d'),{'UserId':_0x506e39['id'],'FaxQueueId':_0x2b89fb['id']});});});});});}})[_0x849d('0x27')](respondWithStatusCode(_0x16387a,null))['catch'](handleError(_0x16387a,null));};exports[_0x849d('0x6e')]=function(_0x31a3fa,_0xe999fd,_0x46d8ad){return db[_0x849d('0x62')]['findAll']({'where':{'id':_0x31a3fa[_0x849d('0x34')]['ids']},'attributes':['id'],'include':[{'model':db['User'],'as':_0x849d('0x69'),'attributes':['id'],'raw':!![]}]})[_0x849d('0x27')](handleEntityNotFound(_0xe999fd,null))[_0x849d('0x27')](function(_0x15f931){var _0x46bbbc=_[_0x849d('0x33')](_0x15f931,'id');var _0x1528e9=[];var _0x1ef018=[];var _0x50b5e6=squel['select']();_0x50b5e6[_0x849d('0x6f')](_0x849d('0x70'))['from'](_0x849d('0x71'),'tq')[_0x849d('0x72')](_0x849d('0x73'),'ut',_0x849d('0x74'))[_0x849d('0x3f')](_0x849d('0x75'),_0x31a3fa[_0x849d('0x54')]['id']);for(var _0x3497bf=0x0;_0x3497bf<_0x15f931[_0x849d('0x3a')];_0x3497bf+=0x1){let _0xdf31dc=_0x15f931[_0x3497bf];for(var _0x28a647=0x0;_0x28a647<_0xdf31dc[_0x849d('0x69')][_0x849d('0x3a')];_0x28a647+=0x1){let _0x56b732=_0xdf31dc[_0x849d('0x69')][_0x28a647];var _0x187c15=_0x50b5e6[_0x849d('0x76')]();_0x187c15['where'](_0x849d('0x77'),_0x56b732['id']);_0x1ef018[_0x849d('0x78')](db[_0x849d('0x6a')]['query'](_0x187c15['toString'](),{'type':db[_0x849d('0x6a')]['QueryTypes'][_0x849d('0x79')]})[_0x849d('0x27')](function(_0x4e0858){if(_0x4e0858[_0x849d('0x3a')]===0x1){return _0x56b732['id'];}else{var _0x2b21fd=_[_0x849d('0x7a')](_[_0x849d('0x33')](_0x4e0858,_0x849d('0x7b')),function(_0x3cf13e){return _[_0x849d('0x7c')](_0x46bbbc,_0x3cf13e);});if(_0x2b21fd){return _0x56b732['id'];}}}));}}return BPromise[_0x849d('0x7d')](_0x1ef018)[_0x849d('0x27')](function(_0x356360){_0x1528e9=_(_0x1528e9)['union'](_0x356360)['compact']()[_0x849d('0x7e')]();return db['FaxQueue'][_0x849d('0x53')]({'where':{'id':_0x31a3fa[_0x849d('0x54')]['id']}})[_0x849d('0x27')](function(_0x3c6ebe){return db[_0x849d('0x6a')][_0x849d('0x7f')](function(_0x4e1762){return _0x3c6ebe[_0x849d('0x6e')](_0x31a3fa[_0x849d('0x34')][_0x849d('0x80')],{'transaction':_0x4e1762})[_0x849d('0x27')](function(){if(!_['isEmpty'](_0x1528e9)){return _0x3c6ebe[_0x849d('0x81')](_0x1528e9,{'transaction':_0x4e1762});}})[_0x849d('0x27')](function(){_0x1528e9[_0x849d('0x6c')](function(_0x4aae63){socket['emit'](_0x849d('0x82'),{'UserId':_0x4aae63,'FaxQueueId':_0x3c6ebe['id']});});});});});});})[_0x849d('0x27')](respondWithStatusCode(_0xe999fd,null))['catch'](handleError(_0xe999fd,null));};exports[_0x849d('0x83')]=function(_0x1d3c64,_0x1413ba,_0x60b08d){return db[_0x849d('0x2f')][_0x849d('0x53')]({'where':{'id':_0x1d3c64[_0x849d('0x54')]['id']}})[_0x849d('0x27')](handleEntityNotFound(_0x1413ba,null))[_0x849d('0x27')](function(_0x51ea7b){if(_0x51ea7b){return _0x51ea7b[_0x849d('0x83')](_0x1d3c64[_0x849d('0x4b')][_0x849d('0x80')],_[_0x849d('0x84')](_0x1d3c64['body'],['ids','id'])||{})[_0x849d('0x85')](function(_0x2e4ee1){for(var _0x2ec884=0x0;_0x2ec884<_0x1d3c64[_0x849d('0x4b')][_0x849d('0x80')][_0x849d('0x3a')];_0x2ec884+=0x1){socket['emit'](_0x849d('0x6d'),{'UserId':Number(_0x1d3c64[_0x849d('0x4b')]['ids'][_0x2ec884]),'FaxQueueId':Number(_0x1d3c64[_0x849d('0x54')]['id'])});}return _0x2e4ee1;});}})[_0x849d('0x27')](respondWithResult(_0x1413ba,null))[_0x849d('0x47')](handleError(_0x1413ba,null));};exports['removeAgents']=function(_0x22e05d,_0x30240e,_0xe958e8){return db[_0x849d('0x2f')][_0x849d('0x53')]({'where':{'id':_0x22e05d[_0x849d('0x54')]['id']}})['then'](handleEntityNotFound(_0x30240e,null))['then'](function(_0x2bfe88){if(_0x2bfe88){return _0x2bfe88[_0x849d('0x81')](_0x22e05d[_0x849d('0x34')]['ids'])[_0x849d('0x27')](function(){if(_['isArray'](_0x22e05d[_0x849d('0x34')][_0x849d('0x80')])){for(var _0x2d2acc=0x0;_0x2d2acc<_0x22e05d['query'][_0x849d('0x80')][_0x849d('0x3a')];_0x2d2acc+=0x1){socket[_0x849d('0x86')](_0x849d('0x82'),{'UserId':Number(_0x22e05d['query'][_0x849d('0x80')][_0x2d2acc]),'FaxQueueId':Number(_0x22e05d['params']['id'])});}}else{socket[_0x849d('0x86')](_0x849d('0x82'),{'UserId':Number(_0x22e05d[_0x849d('0x34')][_0x849d('0x80')]),'FaxQueueId':Number(_0x22e05d[_0x849d('0x54')]['id'])});}});}})['then'](respondWithStatusCode(_0x30240e,null))[_0x849d('0x47')](handleError(_0x30240e,null));};exports[_0x849d('0x87')]=function(_0x487e0c,_0xb38bda,_0xc31650){var _0x4c54ac={};var _0x52b578={};var _0x3b207f;var _0x4af676;return db[_0x849d('0x2f')][_0x849d('0x61')]({'where':{'id':_0x487e0c[_0x849d('0x54')]['id']}})[_0x849d('0x27')](handleEntityNotFound(_0xb38bda,null))[_0x849d('0x27')](function(_0x2272bf){if(_0x2272bf){_0x3b207f=_0x2272bf;_0x52b578['model']=_[_0x849d('0x35')](db[_0x849d('0x58')]['rawAttributes']);_0x52b578[_0x849d('0x34')]=_[_0x849d('0x35')](_0x487e0c[_0x849d('0x34')]);_0x52b578['filters']=_[_0x849d('0x37')](_0x52b578[_0x849d('0x32')],_0x52b578['query']);_0x4c54ac[_0x849d('0x38')]=_[_0x849d('0x37')](_0x52b578[_0x849d('0x32')],qs['fields'](_0x487e0c[_0x849d('0x34')][_0x849d('0x39')]));_0x4c54ac[_0x849d('0x38')]=_0x4c54ac['attributes'][_0x849d('0x3a')]?_0x4c54ac[_0x849d('0x38')]:_0x52b578[_0x849d('0x32')];_0x4c54ac[_0x849d('0x3d')]=qs[_0x849d('0x3e')](_0x487e0c[_0x849d('0x34')]['sort']);_0x4c54ac[_0x849d('0x3f')]=qs[_0x849d('0x36')](_[_0x849d('0x40')](_0x487e0c['query'],_0x52b578[_0x849d('0x36')]));if(_0x487e0c[_0x849d('0x34')][_0x849d('0x41')]){_0x4c54ac[_0x849d('0x3f')]=_['merge'](_0x4c54ac[_0x849d('0x3f')],{'$or':_[_0x849d('0x33')](_0x4c54ac[_0x849d('0x38')],function(_0x431e87){var _0x3ef86a={};_0x3ef86a[_0x431e87]={'$like':'%'+_0x487e0c[_0x849d('0x34')][_0x849d('0x41')]+'%'};return _0x3ef86a;})});}_0x4c54ac=_[_0x849d('0x42')]({},_0x4c54ac,_0x487e0c[_0x849d('0x44')]);return _0x3b207f['getAgents'](_0x4c54ac);}})[_0x849d('0x27')](function(_0x5cc235){if(_0x5cc235){_0x4af676=_0x5cc235[_0x849d('0x3a')];if(!_0x487e0c['query'][_0x849d('0x3b')]('nolimit')){_0x4c54ac[_0x849d('0x1f')]=qs[_0x849d('0x1f')](_0x487e0c['query'][_0x849d('0x1f')]);_0x4c54ac[_0x849d('0x1e')]=qs['offset'](_0x487e0c['query'][_0x849d('0x1e')]);}return _0x3b207f['getAgents'](_0x4c54ac);}})[_0x849d('0x27')](function(_0x3aad8b){if(_0x3aad8b){return _0x3aad8b?{'count':_0x4af676,'rows':_0x3aad8b}:null;}})['then'](respondWithResult(_0xb38bda,null))[_0x849d('0x47')](handleError(_0xb38bda,null));};
\ No newline at end of file
index b8d57c2..35072c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x618e=['emit','hasOwnProperty','hook','FaxQueue','save','update','remove'];(function(_0x273ace,_0x3b28bc){var _0x5a5548=function(_0x2d2aaf){while(--_0x2d2aaf){_0x273ace['push'](_0x273ace['shift']());}};_0x5a5548(++_0x3b28bc);}(_0x618e,0xf1));var _0xe618=function(_0x2d08c5,_0x2b19f1){_0x2d08c5=_0x2d08c5-0x0;var _0x5c71b1=_0x618e[_0x2d08c5];return _0x5c71b1;};'use strict';var EventEmitter=require('events');var FaxQueue=require('../../mysqldb')['db'][_0xe618('0x0')];var FaxQueueEvents=new EventEmitter();FaxQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xe618('0x1'),'afterUpdate':_0xe618('0x2'),'afterDestroy':_0xe618('0x3')};function emitEvent(_0x1b11c8){return function(_0x1466a2,_0x31ebea,_0x5ecc25){FaxQueueEvents[_0xe618('0x4')](_0x1b11c8+':'+_0x1466a2['id'],_0x1466a2);FaxQueueEvents['emit'](_0x1b11c8,_0x1466a2);_0x5ecc25(null);};}for(var e in events){if(events[_0xe618('0x5')](e)){var event=events[e];FaxQueue[_0xe618('0x6')](e,emitEvent(event));}}module['exports']=FaxQueueEvents;
\ No newline at end of file
+var _0xaf8e=['save','update','remove','emit','hasOwnProperty','exports','events','../../mysqldb','FaxQueue','setMaxListeners'];(function(_0x110a08,_0x1ddd40){var _0x38fd9b=function(_0x537a3c){while(--_0x537a3c){_0x110a08['push'](_0x110a08['shift']());}};_0x38fd9b(++_0x1ddd40);}(_0xaf8e,0x6a));var _0xeaf8=function(_0x3f35de,_0x44de71){_0x3f35de=_0x3f35de-0x0;var _0x263170=_0xaf8e[_0x3f35de];return _0x263170;};'use strict';var EventEmitter=require(_0xeaf8('0x0'));var FaxQueue=require(_0xeaf8('0x1'))['db'][_0xeaf8('0x2')];var FaxQueueEvents=new EventEmitter();FaxQueueEvents[_0xeaf8('0x3')](0x0);var events={'afterCreate':_0xeaf8('0x4'),'afterUpdate':_0xeaf8('0x5'),'afterDestroy':_0xeaf8('0x6')};function emitEvent(_0x10874e){return function(_0x4389c8,_0x3a2068,_0x4496bb){FaxQueueEvents[_0xeaf8('0x7')](_0x10874e+':'+_0x4389c8['id'],_0x4389c8);FaxQueueEvents[_0xeaf8('0x7')](_0x10874e,_0x4389c8);_0x4496bb(null);};}for(var e in events){if(events[_0xeaf8('0x8')](e)){var event=events[e];FaxQueue['hook'](e,emitEvent(event));}}module[_0xeaf8('0x9')]=FaxQueueEvents;
\ No newline at end of file
index 3c07ec7..afeaadf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f2c=['exports','FaxQueue','fax_queues','lodash','../../config/logger','api','moment','bluebird','../../config/environment'];(function(_0x2d2c16,_0x4e88b6){var _0x53f2fb=function(_0x6b6dac){while(--_0x6b6dac){_0x2d2c16['push'](_0x2d2c16['shift']());}};_0x53f2fb(++_0x4e88b6);}(_0x5f2c,0x6f));var _0xc5f2=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x5f2c[_0xa464c9];return _0x3d73c4;};'use strict';var _=require(_0xc5f2('0x0'));var util=require('util');var logger=require(_0xc5f2('0x1'))(_0xc5f2('0x2'));var moment=require(_0xc5f2('0x3'));var BPromise=require(_0xc5f2('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xc5f2('0x5'));var attributes=require('./faxQueue.attributes');module[_0xc5f2('0x6')]=function(_0x489192,_0x3e83b6){return _0x489192['define'](_0xc5f2('0x7'),attributes,{'tableName':_0xc5f2('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf0bd=['util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./faxQueue.attributes','define','fax_queues'];(function(_0x1fa31a,_0x2ad354){var _0x592dfb=function(_0xa16f0b){while(--_0xa16f0b){_0x1fa31a['push'](_0x1fa31a['shift']());}};_0x592dfb(++_0x2ad354);}(_0xf0bd,0x176));var _0xdf0b=function(_0x3a16a8,_0x29c536){_0x3a16a8=_0x3a16a8-0x0;var _0x2ab7b6=_0xf0bd[_0x3a16a8];return _0x2ab7b6;};'use strict';var _=require('lodash');var util=require(_0xdf0b('0x0'));var logger=require(_0xdf0b('0x1'))('api');var moment=require(_0xdf0b('0x2'));var BPromise=require(_0xdf0b('0x3'));var rp=require(_0xdf0b('0x4'));var fs=require('fs');var path=require(_0xdf0b('0x5'));var rimraf=require(_0xdf0b('0x6'));var config=require(_0xdf0b('0x7'));var attributes=require(_0xdf0b('0x8'));module['exports']=function(_0x9d7416,_0x140a45){return _0x9d7416[_0xdf0b('0x9')]('FaxQueue',attributes,{'tableName':_0xdf0b('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 839b186..726131b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbff5=['GetFaxQueue','FaxQueue','options','where','attributes','limit','include','model','map','stringify','find','ShowFaxQueue','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','./faxQueue.socket','register','request','then','FaxQueue,\x20%s,\x20%s','request\x20sent','debug','error','message','info','catch'];(function(_0x46361e,_0x243aaf){var _0x14e302=function(_0x9ebecf){while(--_0x9ebecf){_0x46361e['push'](_0x46361e['shift']());}};_0x14e302(++_0x243aaf);}(_0xbff5,0x1ae));var _0x5bff=function(_0x2e756d,_0x25710d){_0x2e756d=_0x2e756d-0x0;var _0x395fc8=_0xbff5[_0x2e756d];return _0x395fc8;};'use strict';var _=require(_0x5bff('0x0'));var util=require(_0x5bff('0x1'));var moment=require(_0x5bff('0x2'));var BPromise=require('bluebird');var rs=require(_0x5bff('0x3'));var fs=require('fs');var Redis=require(_0x5bff('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x5bff('0x5'));var logger=require(_0x5bff('0x6'))(_0x5bff('0x7'));var config=require(_0x5bff('0x8'));var jayson=require(_0x5bff('0x9'));var client=jayson[_0x5bff('0xa')][_0x5bff('0xb')]({'port':0x232a});config[_0x5bff('0xc')]=_[_0x5bff('0xd')](config['redis'],{'host':_0x5bff('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x5bff('0xc')]));require(_0x5bff('0xf'))[_0x5bff('0x10')](socket);function respondWithRpcPromise(_0x53b5aa,_0x3eff25,_0x18bb4a){return new BPromise(function(_0x29855b,_0x561cf4){return client[_0x5bff('0x11')](_0x53b5aa,_0x18bb4a)[_0x5bff('0x12')](function(_0x24dfc5){logger['info'](_0x5bff('0x13'),_0x3eff25,_0x5bff('0x14'));logger[_0x5bff('0x15')]('FaxQueue,\x20%s,\x20%s,\x20%s',_0x3eff25,'request\x20sent',JSON['stringify'](_0x24dfc5));if(_0x24dfc5['error']){if(_0x24dfc5[_0x5bff('0x16')]['code']===0x1f4){logger[_0x5bff('0x16')](_0x5bff('0x13'),_0x3eff25,_0x24dfc5[_0x5bff('0x16')]['message']);return _0x561cf4(_0x24dfc5['error'][_0x5bff('0x17')]);}logger['error']('FaxQueue,\x20%s,\x20%s',_0x3eff25,_0x24dfc5[_0x5bff('0x16')][_0x5bff('0x17')]);return _0x29855b(_0x24dfc5[_0x5bff('0x16')][_0x5bff('0x17')]);}else{logger[_0x5bff('0x18')](_0x5bff('0x13'),_0x3eff25,'request\x20sent');_0x29855b(_0x24dfc5['result'][_0x5bff('0x17')]);}})[_0x5bff('0x19')](function(_0x2c331a){logger[_0x5bff('0x16')](_0x5bff('0x13'),_0x3eff25,_0x2c331a);_0x561cf4(_0x2c331a);});});}exports[_0x5bff('0x1a')]=function(_0x316e2f){var _0x2470e9=this;return new Promise(function(_0x531973,_0x457e7a){return db[_0x5bff('0x1b')]['findAll']({'raw':_0x316e2f['options']?_0x316e2f['options']['raw']===undefined?!![]:![]:!![],'where':_0x316e2f[_0x5bff('0x1c')]?_0x316e2f[_0x5bff('0x1c')][_0x5bff('0x1d')]||null:null,'attributes':_0x316e2f[_0x5bff('0x1c')]?_0x316e2f[_0x5bff('0x1c')][_0x5bff('0x1e')]||null:null,'limit':_0x316e2f['options']?_0x316e2f[_0x5bff('0x1c')][_0x5bff('0x1f')]||null:null,'include':_0x316e2f[_0x5bff('0x1c')]?_0x316e2f[_0x5bff('0x1c')][_0x5bff('0x20')]?_['map'](_0x316e2f[_0x5bff('0x1c')][_0x5bff('0x20')],function(_0x2ac28e){return{'model':db[_0x2ac28e[_0x5bff('0x21')]],'as':_0x2ac28e['as'],'attributes':_0x2ac28e[_0x5bff('0x1e')],'include':_0x2ac28e['include']?_['map'](_0x2ac28e[_0x5bff('0x20')],function(_0x2ba0ee){return{'model':db[_0x2ba0ee['model']],'as':_0x2ba0ee['as'],'attributes':_0x2ba0ee['attributes'],'include':_0x2ba0ee[_0x5bff('0x20')]?_[_0x5bff('0x22')](_0x2ba0ee['include'],function(_0x312208){return{'model':db[_0x312208['model']],'as':_0x312208['as'],'attributes':_0x312208[_0x5bff('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x5bff('0x12')](function(_0x4f59f2){logger['info'](_0x5bff('0x1a'),_0x316e2f);logger['debug']('GetFaxQueue',_0x316e2f,JSON[_0x5bff('0x23')](_0x4f59f2));_0x531973(_0x4f59f2);})[_0x5bff('0x19')](function(_0x55fc3e){logger[_0x5bff('0x16')](_0x5bff('0x1a'),_0x55fc3e['message'],_0x316e2f);_0x457e7a(_0x2470e9[_0x5bff('0x16')](0x1f4,_0x55fc3e[_0x5bff('0x17')]));});});};exports['ShowFaxQueue']=function(_0x28662c){var _0x45eac7=this;return new Promise(function(_0x155046,_0x204699){return db[_0x5bff('0x1b')][_0x5bff('0x24')]({'raw':_0x28662c[_0x5bff('0x1c')]?_0x28662c[_0x5bff('0x1c')]['raw']===undefined?!![]:![]:!![],'where':_0x28662c[_0x5bff('0x1c')]?_0x28662c[_0x5bff('0x1c')][_0x5bff('0x1d')]||null:null,'attributes':_0x28662c[_0x5bff('0x1c')]?_0x28662c[_0x5bff('0x1c')]['attributes']||null:null,'include':_0x28662c[_0x5bff('0x1c')]?_0x28662c[_0x5bff('0x1c')][_0x5bff('0x20')]?_[_0x5bff('0x22')](_0x28662c[_0x5bff('0x1c')]['include'],function(_0x1ad615){return{'model':db[_0x1ad615[_0x5bff('0x21')]],'as':_0x1ad615['as'],'attributes':_0x1ad615['attributes'],'include':_0x1ad615['include']?_['map'](_0x1ad615[_0x5bff('0x20')],function(_0x492500){return{'model':db[_0x492500[_0x5bff('0x21')]],'as':_0x492500['as'],'attributes':_0x492500['attributes'],'include':_0x492500['include']?_[_0x5bff('0x22')](_0x492500['include'],function(_0x1de906){return{'model':db[_0x1de906[_0x5bff('0x21')]],'as':_0x1de906['as'],'attributes':_0x1de906[_0x5bff('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x5bff('0x12')](function(_0x26d346){logger[_0x5bff('0x18')](_0x5bff('0x25'),_0x28662c);logger[_0x5bff('0x15')]('ShowFaxQueue',_0x28662c,JSON['stringify'](_0x26d346));_0x155046(_0x26d346);})['catch'](function(_0x381d51){logger[_0x5bff('0x16')](_0x5bff('0x25'),_0x381d51[_0x5bff('0x17')],_0x28662c);_0x204699(_0x45eac7[_0x5bff('0x16')](0x1f4,_0x381d51[_0x5bff('0x17')]));});});};
\ No newline at end of file
+var _0x8409=['find','raw','ShowFaxQueue','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','http','redis','defaults','localhost','./faxQueue.socket','request','then','info','FaxQueue,\x20%s,\x20%s','request\x20sent','debug','FaxQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','FaxQueue','options','where','limit','include','attributes','model','map','GetFaxQueue'];(function(_0xf53f10,_0x1dcd43){var _0x5265a7=function(_0x1723dd){while(--_0x1723dd){_0xf53f10['push'](_0xf53f10['shift']());}};_0x5265a7(++_0x1dcd43);}(_0x8409,0x1e4));var _0x9840=function(_0x2c87dc,_0x139292){_0x2c87dc=_0x2c87dc-0x0;var _0x2b78ec=_0x8409[_0x2c87dc];return _0x2b78ec;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x9840('0x0'));var BPromise=require(_0x9840('0x1'));var rs=require(_0x9840('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9840('0x3'))['db'];var utils=require(_0x9840('0x4'));var logger=require(_0x9840('0x5'))('rpc');var config=require(_0x9840('0x6'));var jayson=require('jayson/promise');var client=jayson['client'][_0x9840('0x7')]({'port':0x232a});config[_0x9840('0x8')]=_[_0x9840('0x9')](config['redis'],{'host':_0x9840('0xa'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x9840('0x8')]));require(_0x9840('0xb'))['register'](socket);function respondWithRpcPromise(_0x4f6ca4,_0x11e43c,_0x41ec35){return new BPromise(function(_0x792f11,_0x95fa06){return client[_0x9840('0xc')](_0x4f6ca4,_0x41ec35)[_0x9840('0xd')](function(_0x5689f5){logger[_0x9840('0xe')](_0x9840('0xf'),_0x11e43c,_0x9840('0x10'));logger[_0x9840('0x11')](_0x9840('0x12'),_0x11e43c,_0x9840('0x10'),JSON[_0x9840('0x13')](_0x5689f5));if(_0x5689f5[_0x9840('0x14')]){if(_0x5689f5[_0x9840('0x14')][_0x9840('0x15')]===0x1f4){logger['error'](_0x9840('0xf'),_0x11e43c,_0x5689f5[_0x9840('0x14')][_0x9840('0x16')]);return _0x95fa06(_0x5689f5[_0x9840('0x14')][_0x9840('0x16')]);}logger[_0x9840('0x14')](_0x9840('0xf'),_0x11e43c,_0x5689f5[_0x9840('0x14')][_0x9840('0x16')]);return _0x792f11(_0x5689f5['error'][_0x9840('0x16')]);}else{logger['info']('FaxQueue,\x20%s,\x20%s',_0x11e43c,_0x9840('0x10'));_0x792f11(_0x5689f5[_0x9840('0x17')][_0x9840('0x16')]);}})[_0x9840('0x18')](function(_0x50d194){logger[_0x9840('0x14')]('FaxQueue,\x20%s,\x20%s',_0x11e43c,_0x50d194);_0x95fa06(_0x50d194);});});}exports['GetFaxQueue']=function(_0x4cca57){var _0x3f7191=this;return new Promise(function(_0x1d8ede,_0x2909a0){return db[_0x9840('0x19')]['findAll']({'raw':_0x4cca57[_0x9840('0x1a')]?_0x4cca57[_0x9840('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x4cca57[_0x9840('0x1a')]?_0x4cca57[_0x9840('0x1a')][_0x9840('0x1b')]||null:null,'attributes':_0x4cca57[_0x9840('0x1a')]?_0x4cca57[_0x9840('0x1a')]['attributes']||null:null,'limit':_0x4cca57[_0x9840('0x1a')]?_0x4cca57['options'][_0x9840('0x1c')]||null:null,'include':_0x4cca57['options']?_0x4cca57['options'][_0x9840('0x1d')]?_['map'](_0x4cca57[_0x9840('0x1a')][_0x9840('0x1d')],function(_0x39556c){return{'model':db[_0x39556c['model']],'as':_0x39556c['as'],'attributes':_0x39556c[_0x9840('0x1e')],'include':_0x39556c[_0x9840('0x1d')]?_['map'](_0x39556c[_0x9840('0x1d')],function(_0x44ff76){return{'model':db[_0x44ff76[_0x9840('0x1f')]],'as':_0x44ff76['as'],'attributes':_0x44ff76[_0x9840('0x1e')],'include':_0x44ff76['include']?_[_0x9840('0x20')](_0x44ff76['include'],function(_0x26d428){return{'model':db[_0x26d428[_0x9840('0x1f')]],'as':_0x26d428['as'],'attributes':_0x26d428[_0x9840('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x9840('0xd')](function(_0x1143dd){logger['info']('GetFaxQueue',_0x4cca57);logger[_0x9840('0x11')](_0x9840('0x21'),_0x4cca57,JSON[_0x9840('0x13')](_0x1143dd));_0x1d8ede(_0x1143dd);})[_0x9840('0x18')](function(_0x1d4838){logger['error'](_0x9840('0x21'),_0x1d4838[_0x9840('0x16')],_0x4cca57);_0x2909a0(_0x3f7191[_0x9840('0x14')](0x1f4,_0x1d4838[_0x9840('0x16')]));});});};exports['ShowFaxQueue']=function(_0x4d9b85){var _0x11d85d=this;return new Promise(function(_0xa3b67b,_0x5b6a17){return db[_0x9840('0x19')][_0x9840('0x22')]({'raw':_0x4d9b85[_0x9840('0x1a')]?_0x4d9b85[_0x9840('0x1a')][_0x9840('0x23')]===undefined?!![]:![]:!![],'where':_0x4d9b85['options']?_0x4d9b85['options'][_0x9840('0x1b')]||null:null,'attributes':_0x4d9b85[_0x9840('0x1a')]?_0x4d9b85[_0x9840('0x1a')]['attributes']||null:null,'include':_0x4d9b85[_0x9840('0x1a')]?_0x4d9b85['options'][_0x9840('0x1d')]?_[_0x9840('0x20')](_0x4d9b85[_0x9840('0x1a')][_0x9840('0x1d')],function(_0x501c71){return{'model':db[_0x501c71[_0x9840('0x1f')]],'as':_0x501c71['as'],'attributes':_0x501c71[_0x9840('0x1e')],'include':_0x501c71[_0x9840('0x1d')]?_['map'](_0x501c71[_0x9840('0x1d')],function(_0x3396da){return{'model':db[_0x3396da[_0x9840('0x1f')]],'as':_0x3396da['as'],'attributes':_0x3396da[_0x9840('0x1e')],'include':_0x3396da[_0x9840('0x1d')]?_['map'](_0x3396da[_0x9840('0x1d')],function(_0x202840){return{'model':db[_0x202840['model']],'as':_0x202840['as'],'attributes':_0x202840[_0x9840('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x9840('0xd')](function(_0x2f5540){logger[_0x9840('0xe')]('ShowFaxQueue',_0x4d9b85);logger[_0x9840('0x11')](_0x9840('0x24'),_0x4d9b85,JSON[_0x9840('0x13')](_0x2f5540));_0xa3b67b(_0x2f5540);})['catch'](function(_0x524280){logger[_0x9840('0x14')]('ShowFaxQueue',_0x524280[_0x9840('0x16')],_0x4d9b85);_0x5b6a17(_0x11d85d[_0x9840('0x14')](0x1f4,_0x524280[_0x9840('0x16')]));});});};
\ No newline at end of file
index d81fe6b..8a20666 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d6c=['./faxQueue.events','save','emit','removeListener','length','faxQueue:'];(function(_0x3e728e,_0xf37042){var _0x4ed513=function(_0xfd19d0){while(--_0xfd19d0){_0x3e728e['push'](_0x3e728e['shift']());}};_0x4ed513(++_0xf37042);}(_0x5d6c,0xfc));var _0xc5d6=function(_0x4c6225,_0x12c081){_0x4c6225=_0x4c6225-0x0;var _0x1a6ddf=_0x5d6c[_0x4c6225];return _0x1a6ddf;};'use strict';var FaxQueueEvents=require(_0xc5d6('0x0'));var events=[_0xc5d6('0x1'),'remove','update'];function createListener(_0x40b82f,_0x2ae640){return function(_0x4b6944){_0x2ae640[_0xc5d6('0x2')](_0x40b82f,_0x4b6944);};}function removeListener(_0x1e26ea,_0x5630ca){return function(){FaxQueueEvents[_0xc5d6('0x3')](_0x1e26ea,_0x5630ca);};}exports['register']=function(_0x43f4d0){for(var _0x2e06dc=0x0,_0x16704f=events[_0xc5d6('0x4')];_0x2e06dc<_0x16704f;_0x2e06dc++){var _0x3f14a3=events[_0x2e06dc];var _0xd9b8b=createListener(_0xc5d6('0x5')+_0x3f14a3,_0x43f4d0);FaxQueueEvents['on'](_0x3f14a3,_0xd9b8b);}};
\ No newline at end of file
+var _0xafb4=['./faxQueue.events','save','update','emit','removeListener','faxQueue:'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0xafb4,0x78));var _0x4afb=function(_0x2e7dea,_0x44f507){_0x2e7dea=_0x2e7dea-0x0;var _0x4904e2=_0xafb4[_0x2e7dea];return _0x4904e2;};'use strict';var FaxQueueEvents=require(_0x4afb('0x0'));var events=[_0x4afb('0x1'),'remove',_0x4afb('0x2')];function createListener(_0xb5fc9d,_0x3fac7c){return function(_0x3ba630){_0x3fac7c[_0x4afb('0x3')](_0xb5fc9d,_0x3ba630);};}function removeListener(_0x5cf4a1,_0xd30835){return function(){FaxQueueEvents[_0x4afb('0x4')](_0x5cf4a1,_0xd30835);};}exports['register']=function(_0x5923c4){for(var _0x9c3c30=0x0,_0x5a2177=events['length'];_0x9c3c30<_0x5a2177;_0x9c3c30++){var _0x15b60b=events[_0x9c3c30];var _0x4ae98d=createListener(_0x4afb('0x5')+_0x15b60b,_0x5923c4);FaxQueueEvents['on'](_0x15b60b,_0x4ae98d);}};
\ No newline at end of file
index 022d2c5..b3e7afd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2272=['multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','/describe','describe','/:id','getMembers','/:id/teams','/:id/users','getAgents','post','addAgents','put','update','delete','destroy','removeTeams','removeAgents','exports'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x2272,0xd8));var _0x2227=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x2272[_0x17d9e3];return _0x14192d;};'use strict';var multer=require(_0x2227('0x0'));var util=require(_0x2227('0x1'));var path=require(_0x2227('0x2'));var timeout=require(_0x2227('0x3'));var express=require(_0x2227('0x4'));var router=express['Router']();var fs_extra=require(_0x2227('0x5'));var auth=require(_0x2227('0x6'));var interaction=require(_0x2227('0x7'));var config=require('../../config/environment');var controller=require('./faxQueue.controller');router[_0x2227('0x8')]('/',auth[_0x2227('0x9')](),controller[_0x2227('0xa')]);router[_0x2227('0x8')](_0x2227('0xb'),auth[_0x2227('0x9')](),controller[_0x2227('0xc')]);router[_0x2227('0x8')](_0x2227('0xd'),auth[_0x2227('0x9')](),controller['show']);router[_0x2227('0x8')]('/:id/members',auth[_0x2227('0x9')](),controller[_0x2227('0xe')]);router[_0x2227('0x8')](_0x2227('0xf'),auth[_0x2227('0x9')](),controller['getTeams']);router[_0x2227('0x8')](_0x2227('0x10'),auth[_0x2227('0x9')](),controller[_0x2227('0x11')]);router[_0x2227('0x12')]('/',auth[_0x2227('0x9')](),controller['create']);router['post']('/:id/teams',auth[_0x2227('0x9')](),controller['addTeams']);router[_0x2227('0x12')](_0x2227('0x10'),auth['isAuthenticated'](),controller[_0x2227('0x13')]);router[_0x2227('0x14')](_0x2227('0xd'),auth[_0x2227('0x9')](),controller[_0x2227('0x15')]);router[_0x2227('0x16')]('/:id',auth[_0x2227('0x9')](),controller[_0x2227('0x17')]);router[_0x2227('0x16')]('/:id/teams',auth[_0x2227('0x9')](),controller[_0x2227('0x18')]);router[_0x2227('0x16')](_0x2227('0x10'),auth[_0x2227('0x9')](),controller[_0x2227('0x19')]);module[_0x2227('0x1a')]=router;
\ No newline at end of file
+var _0x1893=['describe','/:id','show','/:id/members','getMembers','getTeams','/:id/users','post','create','/:id/teams','addTeams','addAgents','put','update','delete','removeTeams','removeAgents','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./faxQueue.controller','get','isAuthenticated','index','/describe'];(function(_0x5c3381,_0xd2739b){var _0x3abd21=function(_0x88d81a){while(--_0x88d81a){_0x5c3381['push'](_0x5c3381['shift']());}};_0x3abd21(++_0xd2739b);}(_0x1893,0xa2));var _0x3189=function(_0x245ff8,_0x2e81f8){_0x245ff8=_0x245ff8-0x0;var _0x5a4faa=_0x1893[_0x245ff8];return _0x5a4faa;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3189('0x0'));var timeout=require(_0x3189('0x1'));var express=require(_0x3189('0x2'));var router=express[_0x3189('0x3')]();var fs_extra=require(_0x3189('0x4'));var auth=require(_0x3189('0x5'));var interaction=require(_0x3189('0x6'));var config=require('../../config/environment');var controller=require(_0x3189('0x7'));router[_0x3189('0x8')]('/',auth[_0x3189('0x9')](),controller[_0x3189('0xa')]);router[_0x3189('0x8')](_0x3189('0xb'),auth[_0x3189('0x9')](),controller[_0x3189('0xc')]);router['get'](_0x3189('0xd'),auth['isAuthenticated'](),controller[_0x3189('0xe')]);router['get'](_0x3189('0xf'),auth[_0x3189('0x9')](),controller[_0x3189('0x10')]);router[_0x3189('0x8')]('/:id/teams',auth[_0x3189('0x9')](),controller[_0x3189('0x11')]);router[_0x3189('0x8')](_0x3189('0x12'),auth[_0x3189('0x9')](),controller['getAgents']);router[_0x3189('0x13')]('/',auth[_0x3189('0x9')](),controller[_0x3189('0x14')]);router[_0x3189('0x13')](_0x3189('0x15'),auth[_0x3189('0x9')](),controller[_0x3189('0x16')]);router[_0x3189('0x13')]('/:id/users',auth[_0x3189('0x9')](),controller[_0x3189('0x17')]);router[_0x3189('0x18')](_0x3189('0xd'),auth['isAuthenticated'](),controller[_0x3189('0x19')]);router['delete']('/:id',auth[_0x3189('0x9')](),controller['destroy']);router[_0x3189('0x1a')](_0x3189('0x15'),auth[_0x3189('0x9')](),controller[_0x3189('0x1b')]);router['delete'](_0x3189('0x12'),auth[_0x3189('0x9')](),controller[_0x3189('0x1c')]);module['exports']=router;
\ No newline at end of file
index 740232b..ae659d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x32c2=['sequelize','exports','STRING','DATE','moment'];(function(_0x2d73a6,_0x224975){var _0x1effc7=function(_0x2e9ff2){while(--_0x2e9ff2){_0x2d73a6['push'](_0x2d73a6['shift']());}};_0x1effc7(++_0x224975);}(_0x32c2,0x90));var _0x232c=function(_0x1636b9,_0x511b43){_0x1636b9=_0x1636b9-0x0;var _0x22d9cb=_0x32c2[_0x1636b9];return _0x22d9cb;};'use strict';var moment=require(_0x232c('0x0'));var Sequelize=require(_0x232c('0x1'));module[_0x232c('0x2')]={'uniqueid':{'type':Sequelize[_0x232c('0x3')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0x232c('0x4')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0x232c('0x3')]}};
\ No newline at end of file
+var _0x21c3=['STRING','DATE','moment','sequelize','exports'];(function(_0x4511e1,_0x20a756){var _0x3c0594=function(_0x47b9c6){while(--_0x47b9c6){_0x4511e1['push'](_0x4511e1['shift']());}};_0x3c0594(++_0x20a756);}(_0x21c3,0xbb));var _0x321c=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x21c3[_0x3947c9];return _0x2e7871;};'use strict';var moment=require(_0x321c('0x0'));var Sequelize=require(_0x321c('0x1'));module[_0x321c('0x2')]={'uniqueid':{'type':Sequelize[_0x321c('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0x321c('0x3')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0x321c('0x4')]},'acceptAt':{'type':Sequelize[_0x321c('0x4')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0x321c('0x3')]}};
\ No newline at end of file
index 6413563..b9f3ff6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x559a=['rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','FaxQueueReport','then','includeAll','include','findAll','catch','show','params','keys','length','options','create','body','find','describe','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/license/util','sendStatus','status','json','undefined','limit','count','offset','apply','reject','save','update','destroy','end','error','stack','name','index','map'];(function(_0x525847,_0x2ec50e){var _0x32a484=function(_0x2031ec){while(--_0x2031ec){_0x525847['push'](_0x525847['shift']());}};_0x32a484(++_0x2ec50e);}(_0x559a,0xb3));var _0xa559=function(_0x5897c6,_0x4d75a6){_0x5897c6=_0x5897c6-0x0;var _0x4bf07e=_0x559a[_0x5897c6];return _0x4bf07e;};'use strict';var emlformat=require(_0xa559('0x0'));var rimraf=require(_0xa559('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xa559('0x2'));var rp=require(_0xa559('0x3'));var moment=require(_0xa559('0x4'));var BPromise=require(_0xa559('0x5'));var Mustache=require(_0xa559('0x6'));var util=require(_0xa559('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0xa559('0x8'));var ejs=require(_0xa559('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xa559('0xa'));var squel=require(_0xa559('0xb'));var crypto=require('crypto');var jsforce=require(_0xa559('0xc'));var deskjs=require(_0xa559('0xd'));var toCsv=require(_0xa559('0x8'));var querystring=require(_0xa559('0xe'));var Papa=require('papaparse');var Redis=require(_0xa559('0xf'));var authService=require(_0xa559('0x10'));var qs=require(_0xa559('0x11'));var as=require(_0xa559('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xa559('0x13'));var utils=require(_0xa559('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xa559('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x442e26,_0x5f0463){_0x5f0463=_0x5f0463||0xcc;return function(_0x2a646e){if(_0x2a646e){return _0x442e26[_0xa559('0x16')](_0x5f0463);}return _0x442e26[_0xa559('0x17')](_0x5f0463)['end']();};}function respondWithResult(_0xe93c61,_0x3853fd){_0x3853fd=_0x3853fd||0xc8;return function(_0x5ed915){if(_0x5ed915){return _0xe93c61[_0xa559('0x17')](_0x3853fd)[_0xa559('0x18')](_0x5ed915);}};}function respondWithFilteredResult(_0x369d26,_0x1e48b3){return function(_0x539a4b){if(_0x539a4b){var _0x309c27=typeof _0x1e48b3['offset']===_0xa559('0x19')&&typeof _0x1e48b3[_0xa559('0x1a')]==='undefined';var _0x2c6993=_0x539a4b[_0xa559('0x1b')];var _0x163405=_0x309c27?0x0:_0x1e48b3[_0xa559('0x1c')];var _0x1a4c42=_0x309c27?_0x539a4b[_0xa559('0x1b')]:_0x1e48b3[_0xa559('0x1c')]+_0x1e48b3[_0xa559('0x1a')];var _0x329d59;if(_0x1a4c42>=_0x2c6993){_0x1a4c42=_0x2c6993;_0x329d59=0xc8;}else{_0x329d59=0xce;}_0x369d26[_0xa559('0x17')](_0x329d59);return _0x369d26['set']('Content-Range',_0x163405+'-'+_0x1a4c42+'/'+_0x2c6993)[_0xa559('0x18')](_0x539a4b);}return null;};}function patchUpdates(_0x3aa532){return function(_0x47cb65){try{jsonpatch[_0xa559('0x1d')](_0x47cb65,_0x3aa532,!![]);}catch(_0x190a9e){return BPromise[_0xa559('0x1e')](_0x190a9e);}return _0x47cb65[_0xa559('0x1f')]();};}function saveUpdates(_0x1812ef,_0x2dd8cf){return function(_0x572046){if(_0x572046){return _0x572046[_0xa559('0x20')](_0x1812ef)['then'](function(_0x1d4370){return _0x1d4370;});}return null;};}function removeEntity(_0x396fe9,_0x314fef){return function(_0x487a60){if(_0x487a60){return _0x487a60[_0xa559('0x21')]()['then'](function(){_0x396fe9[_0xa559('0x17')](0xcc)[_0xa559('0x22')]();});}};}function handleEntityNotFound(_0x5834c6,_0x2a5181){return function(_0x552c2c){if(!_0x552c2c){_0x5834c6['sendStatus'](0x194);}return _0x552c2c;};}function handleError(_0x1581b9,_0x1914e7){_0x1914e7=_0x1914e7||0x1f4;return function(_0x3fcf7f){logger[_0xa559('0x23')](_0x3fcf7f[_0xa559('0x24')]);if(_0x3fcf7f[_0xa559('0x25')]){delete _0x3fcf7f[_0xa559('0x25')];}_0x1581b9[_0xa559('0x17')](_0x1914e7)['send'](_0x3fcf7f);};}exports[_0xa559('0x26')]=function(_0x30a781,_0x21c8a0){var _0x1c92b9={},_0x5f3fbb={},_0x1fb70f={'count':0x0,'rows':[]};var _0x32db9d=_[_0xa559('0x27')](db['FaxQueueReport'][_0xa559('0x28')],function(_0x224a3a){return{'name':_0x224a3a[_0xa559('0x29')],'type':_0x224a3a[_0xa559('0x2a')][_0xa559('0x2b')]};});_0x5f3fbb[_0xa559('0x2c')]=_[_0xa559('0x27')](_0x32db9d,_0xa559('0x25'));_0x5f3fbb[_0xa559('0x2d')]=_['keys'](_0x30a781[_0xa559('0x2d')]);_0x5f3fbb[_0xa559('0x2e')]=_[_0xa559('0x2f')](_0x5f3fbb[_0xa559('0x2c')],_0x5f3fbb['query']);_0x1c92b9[_0xa559('0x30')]=_['intersection'](_0x5f3fbb[_0xa559('0x2c')],qs[_0xa559('0x31')](_0x30a781[_0xa559('0x2d')][_0xa559('0x31')]));_0x1c92b9[_0xa559('0x30')]=_0x1c92b9[_0xa559('0x30')]['length']?_0x1c92b9[_0xa559('0x30')]:_0x5f3fbb[_0xa559('0x2c')];if(!_0x30a781[_0xa559('0x2d')][_0xa559('0x32')](_0xa559('0x33'))){_0x1c92b9[_0xa559('0x1a')]=qs[_0xa559('0x1a')](_0x30a781[_0xa559('0x2d')]['limit']);_0x1c92b9[_0xa559('0x1c')]=qs[_0xa559('0x1c')](_0x30a781[_0xa559('0x2d')][_0xa559('0x1c')]);}_0x1c92b9[_0xa559('0x34')]=qs[_0xa559('0x35')](_0x30a781[_0xa559('0x2d')]['sort']);_0x1c92b9[_0xa559('0x36')]=qs[_0xa559('0x2e')](_[_0xa559('0x37')](_0x30a781[_0xa559('0x2d')],_0x5f3fbb[_0xa559('0x2e')]),_0x32db9d);if(_0x30a781[_0xa559('0x2d')][_0xa559('0x38')]){_0x1c92b9[_0xa559('0x36')]=_[_0xa559('0x39')](_0x1c92b9[_0xa559('0x36')],{'$or':_[_0xa559('0x27')](_0x32db9d,function(_0x2e9351){if(_0x2e9351[_0xa559('0x2a')]!=='VIRTUAL'){var _0x3e58e3={};_0x3e58e3[_0x2e9351['name']]={'$like':'%'+_0x30a781[_0xa559('0x2d')]['filter']+'%'};return _0x3e58e3;}})});}_0x1c92b9=_[_0xa559('0x39')]({},_0x1c92b9,_0x30a781['options']);var _0x3873c9={'where':_0x1c92b9[_0xa559('0x36')]};return db[_0xa559('0x3a')][_0xa559('0x1b')](_0x3873c9)[_0xa559('0x3b')](function(_0x2efc09){_0x1fb70f[_0xa559('0x1b')]=_0x2efc09;if(_0x30a781['query'][_0xa559('0x3c')]){_0x1c92b9[_0xa559('0x3d')]=[{'all':!![]}];}return db[_0xa559('0x3a')][_0xa559('0x3e')](_0x1c92b9);})[_0xa559('0x3b')](function(_0x278f31){_0x1fb70f['rows']=_0x278f31;return _0x1fb70f;})[_0xa559('0x3b')](respondWithFilteredResult(_0x21c8a0,_0x1c92b9))[_0xa559('0x3f')](handleError(_0x21c8a0,null));};exports[_0xa559('0x40')]=function(_0x429249,_0x5d6325){var _0x6340d3={'raw':!![],'where':{'id':_0x429249[_0xa559('0x41')]['id']}},_0x2af622={};_0x2af622[_0xa559('0x2c')]=_[_0xa559('0x42')](db['FaxQueueReport'][_0xa559('0x28')]);_0x2af622[_0xa559('0x2d')]=_[_0xa559('0x42')](_0x429249[_0xa559('0x2d')]);_0x2af622[_0xa559('0x2e')]=_[_0xa559('0x2f')](_0x2af622[_0xa559('0x2c')],_0x2af622['query']);_0x6340d3[_0xa559('0x30')]=_[_0xa559('0x2f')](_0x2af622[_0xa559('0x2c')],qs[_0xa559('0x31')](_0x429249[_0xa559('0x2d')][_0xa559('0x31')]));_0x6340d3[_0xa559('0x30')]=_0x6340d3[_0xa559('0x30')][_0xa559('0x43')]?_0x6340d3['attributes']:_0x2af622[_0xa559('0x2c')];if(_0x429249[_0xa559('0x2d')][_0xa559('0x3c')]){_0x6340d3[_0xa559('0x3d')]=[{'all':!![]}];}_0x6340d3=_[_0xa559('0x39')]({},_0x6340d3,_0x429249[_0xa559('0x44')]);return db[_0xa559('0x3a')]['find'](_0x6340d3)[_0xa559('0x3b')](handleEntityNotFound(_0x5d6325,null))[_0xa559('0x3b')](respondWithResult(_0x5d6325,null))[_0xa559('0x3f')](handleError(_0x5d6325,null));};exports[_0xa559('0x45')]=function(_0x425dda,_0x482e46){return db[_0xa559('0x3a')][_0xa559('0x45')](_0x425dda['body'],{})[_0xa559('0x3b')](respondWithResult(_0x482e46,0xc9))[_0xa559('0x3f')](handleError(_0x482e46,null));};exports['update']=function(_0x56a722,_0x140490){if(_0x56a722[_0xa559('0x46')]['id']){delete _0x56a722[_0xa559('0x46')]['id'];}return db[_0xa559('0x3a')][_0xa559('0x47')]({'where':{'id':_0x56a722[_0xa559('0x41')]['id']}})['then'](handleEntityNotFound(_0x140490,null))[_0xa559('0x3b')](saveUpdates(_0x56a722['body'],null))['then'](respondWithResult(_0x140490,null))['catch'](handleError(_0x140490,null));};exports[_0xa559('0x21')]=function(_0x2c200e,_0x17453f){return db[_0xa559('0x3a')][_0xa559('0x47')]({'where':{'id':_0x2c200e[_0xa559('0x41')]['id']}})[_0xa559('0x3b')](handleEntityNotFound(_0x17453f,null))[_0xa559('0x3b')](removeEntity(_0x17453f,null))[_0xa559('0x3f')](handleError(_0x17453f,null));};exports[_0xa559('0x48')]=function(_0x3be912,_0x4abc17){return db[_0xa559('0x3a')][_0xa559('0x48')]()[_0xa559('0x3b')](respondWithResult(_0x4abc17,null))[_0xa559('0x3f')](handleError(_0x4abc17,null));};
\ No newline at end of file
+var _0xf4dd=['then','error','name','send','FaxQueueReport','rawAttributes','fieldName','type','map','query','keys','intersection','model','attributes','fields','length','nolimit','order','sort','where','filters','merge','filter','includeAll','include','catch','show','params','options','find','create','body','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','sox','ejs','lodash','crypto','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update'];(function(_0x192437,_0x2ec2c4){var _0x3b9f9e=function(_0x495940){while(--_0x495940){_0x192437['push'](_0x192437['shift']());}};_0x3b9f9e(++_0x2ec2c4);}(_0xf4dd,0xb4));var _0xdf4d=function(_0x33726b,_0x4d1ce3){_0x33726b=_0x33726b-0x0;var _0x3778e5=_0xf4dd[_0x33726b];return _0x3778e5;};'use strict';var emlformat=require(_0xdf4d('0x0'));var rimraf=require(_0xdf4d('0x1'));var zipdir=require(_0xdf4d('0x2'));var jsonpatch=require(_0xdf4d('0x3'));var rp=require(_0xdf4d('0x4'));var moment=require(_0xdf4d('0x5'));var BPromise=require(_0xdf4d('0x6'));var Mustache=require('mustache');var util=require(_0xdf4d('0x7'));var path=require('path');var sox=require(_0xdf4d('0x8'));var csv=require('to-csv');var ejs=require(_0xdf4d('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xdf4d('0xa'));var squel=require('squel');var crypto=require(_0xdf4d('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xdf4d('0xc'));var toCsv=require(_0xdf4d('0xd'));var querystring=require(_0xdf4d('0xe'));var Papa=require('papaparse');var Redis=require(_0xdf4d('0xf'));var authService=require(_0xdf4d('0x10'));var qs=require(_0xdf4d('0x11'));var as=require(_0xdf4d('0x12'));var hardwareService=require(_0xdf4d('0x13'));var logger=require(_0xdf4d('0x14'))(_0xdf4d('0x15'));var utils=require(_0xdf4d('0x16'));var config=require(_0xdf4d('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xdf4d('0x18'))['db'];function respondWithStatusCode(_0x3ef79d,_0x5930cd){_0x5930cd=_0x5930cd||0xcc;return function(_0x2d03ad){if(_0x2d03ad){return _0x3ef79d[_0xdf4d('0x19')](_0x5930cd);}return _0x3ef79d[_0xdf4d('0x1a')](_0x5930cd)[_0xdf4d('0x1b')]();};}function respondWithResult(_0x401b54,_0x380d5c){_0x380d5c=_0x380d5c||0xc8;return function(_0x16b3ac){if(_0x16b3ac){return _0x401b54[_0xdf4d('0x1a')](_0x380d5c)[_0xdf4d('0x1c')](_0x16b3ac);}};}function respondWithFilteredResult(_0x3925e4,_0x6cf76b){return function(_0x2ec82d){if(_0x2ec82d){var _0x363c45=typeof _0x6cf76b[_0xdf4d('0x1d')]===_0xdf4d('0x1e')&&typeof _0x6cf76b[_0xdf4d('0x1f')]==='undefined';var _0x49f737=_0x2ec82d[_0xdf4d('0x20')];var _0x95b106=_0x363c45?0x0:_0x6cf76b['offset'];var _0x4e02f8=_0x363c45?_0x2ec82d['count']:_0x6cf76b['offset']+_0x6cf76b[_0xdf4d('0x1f')];var _0x506cc2;if(_0x4e02f8>=_0x49f737){_0x4e02f8=_0x49f737;_0x506cc2=0xc8;}else{_0x506cc2=0xce;}_0x3925e4[_0xdf4d('0x1a')](_0x506cc2);return _0x3925e4[_0xdf4d('0x21')](_0xdf4d('0x22'),_0x95b106+'-'+_0x4e02f8+'/'+_0x49f737)['json'](_0x2ec82d);}return null;};}function patchUpdates(_0x1a9031){return function(_0x112ead){try{jsonpatch[_0xdf4d('0x23')](_0x112ead,_0x1a9031,!![]);}catch(_0x2f44da){return BPromise[_0xdf4d('0x24')](_0x2f44da);}return _0x112ead[_0xdf4d('0x25')]();};}function saveUpdates(_0x264816,_0x3acc2d){return function(_0x176aad){if(_0x176aad){return _0x176aad[_0xdf4d('0x26')](_0x264816)[_0xdf4d('0x27')](function(_0x3556dc){return _0x3556dc;});}return null;};}function removeEntity(_0x3c67c4,_0x3e96a0){return function(_0x150096){if(_0x150096){return _0x150096['destroy']()[_0xdf4d('0x27')](function(){_0x3c67c4['status'](0xcc)[_0xdf4d('0x1b')]();});}};}function handleEntityNotFound(_0x5e6009,_0x3a8a1c){return function(_0x507bda){if(!_0x507bda){_0x5e6009['sendStatus'](0x194);}return _0x507bda;};}function handleError(_0x3e727b,_0xe65528){_0xe65528=_0xe65528||0x1f4;return function(_0x34eed9){logger[_0xdf4d('0x28')](_0x34eed9['stack']);if(_0x34eed9[_0xdf4d('0x29')]){delete _0x34eed9[_0xdf4d('0x29')];}_0x3e727b[_0xdf4d('0x1a')](_0xe65528)[_0xdf4d('0x2a')](_0x34eed9);};}exports['index']=function(_0x46d140,_0x292eab){var _0x470b38={},_0x44e031={},_0xcc737f={'count':0x0,'rows':[]};var _0xccf69d=_['map'](db[_0xdf4d('0x2b')][_0xdf4d('0x2c')],function(_0x2f2b96){return{'name':_0x2f2b96[_0xdf4d('0x2d')],'type':_0x2f2b96[_0xdf4d('0x2e')]['key']};});_0x44e031['model']=_[_0xdf4d('0x2f')](_0xccf69d,_0xdf4d('0x29'));_0x44e031[_0xdf4d('0x30')]=_[_0xdf4d('0x31')](_0x46d140[_0xdf4d('0x30')]);_0x44e031['filters']=_[_0xdf4d('0x32')](_0x44e031[_0xdf4d('0x33')],_0x44e031[_0xdf4d('0x30')]);_0x470b38[_0xdf4d('0x34')]=_[_0xdf4d('0x32')](_0x44e031[_0xdf4d('0x33')],qs['fields'](_0x46d140[_0xdf4d('0x30')][_0xdf4d('0x35')]));_0x470b38[_0xdf4d('0x34')]=_0x470b38[_0xdf4d('0x34')][_0xdf4d('0x36')]?_0x470b38[_0xdf4d('0x34')]:_0x44e031[_0xdf4d('0x33')];if(!_0x46d140[_0xdf4d('0x30')]['hasOwnProperty'](_0xdf4d('0x37'))){_0x470b38[_0xdf4d('0x1f')]=qs[_0xdf4d('0x1f')](_0x46d140[_0xdf4d('0x30')]['limit']);_0x470b38[_0xdf4d('0x1d')]=qs[_0xdf4d('0x1d')](_0x46d140['query'][_0xdf4d('0x1d')]);}_0x470b38[_0xdf4d('0x38')]=qs[_0xdf4d('0x39')](_0x46d140['query'][_0xdf4d('0x39')]);_0x470b38[_0xdf4d('0x3a')]=qs[_0xdf4d('0x3b')](_['pick'](_0x46d140[_0xdf4d('0x30')],_0x44e031[_0xdf4d('0x3b')]),_0xccf69d);if(_0x46d140[_0xdf4d('0x30')]['filter']){_0x470b38[_0xdf4d('0x3a')]=_[_0xdf4d('0x3c')](_0x470b38[_0xdf4d('0x3a')],{'$or':_[_0xdf4d('0x2f')](_0xccf69d,function(_0x40bf1c){if(_0x40bf1c[_0xdf4d('0x2e')]!=='VIRTUAL'){var _0x53f6b8={};_0x53f6b8[_0x40bf1c[_0xdf4d('0x29')]]={'$like':'%'+_0x46d140[_0xdf4d('0x30')][_0xdf4d('0x3d')]+'%'};return _0x53f6b8;}})});}_0x470b38=_[_0xdf4d('0x3c')]({},_0x470b38,_0x46d140['options']);var _0x339304={'where':_0x470b38[_0xdf4d('0x3a')]};return db[_0xdf4d('0x2b')][_0xdf4d('0x20')](_0x339304)[_0xdf4d('0x27')](function(_0x3d2179){_0xcc737f[_0xdf4d('0x20')]=_0x3d2179;if(_0x46d140['query'][_0xdf4d('0x3e')]){_0x470b38[_0xdf4d('0x3f')]=[{'all':!![]}];}return db[_0xdf4d('0x2b')]['findAll'](_0x470b38);})[_0xdf4d('0x27')](function(_0x45100d){_0xcc737f['rows']=_0x45100d;return _0xcc737f;})[_0xdf4d('0x27')](respondWithFilteredResult(_0x292eab,_0x470b38))[_0xdf4d('0x40')](handleError(_0x292eab,null));};exports[_0xdf4d('0x41')]=function(_0x56b0cd,_0x397bd7){var _0x1ae830={'raw':!![],'where':{'id':_0x56b0cd[_0xdf4d('0x42')]['id']}},_0x220f7e={};_0x220f7e[_0xdf4d('0x33')]=_[_0xdf4d('0x31')](db['FaxQueueReport'][_0xdf4d('0x2c')]);_0x220f7e['query']=_[_0xdf4d('0x31')](_0x56b0cd[_0xdf4d('0x30')]);_0x220f7e[_0xdf4d('0x3b')]=_['intersection'](_0x220f7e[_0xdf4d('0x33')],_0x220f7e[_0xdf4d('0x30')]);_0x1ae830[_0xdf4d('0x34')]=_[_0xdf4d('0x32')](_0x220f7e['model'],qs[_0xdf4d('0x35')](_0x56b0cd[_0xdf4d('0x30')]['fields']));_0x1ae830[_0xdf4d('0x34')]=_0x1ae830['attributes'][_0xdf4d('0x36')]?_0x1ae830[_0xdf4d('0x34')]:_0x220f7e['model'];if(_0x56b0cd['query'][_0xdf4d('0x3e')]){_0x1ae830[_0xdf4d('0x3f')]=[{'all':!![]}];}_0x1ae830=_[_0xdf4d('0x3c')]({},_0x1ae830,_0x56b0cd[_0xdf4d('0x43')]);return db[_0xdf4d('0x2b')][_0xdf4d('0x44')](_0x1ae830)[_0xdf4d('0x27')](handleEntityNotFound(_0x397bd7,null))[_0xdf4d('0x27')](respondWithResult(_0x397bd7,null))['catch'](handleError(_0x397bd7,null));};exports['create']=function(_0x197b50,_0x3d756d){return db['FaxQueueReport'][_0xdf4d('0x45')](_0x197b50[_0xdf4d('0x46')],{})[_0xdf4d('0x27')](respondWithResult(_0x3d756d,0xc9))[_0xdf4d('0x40')](handleError(_0x3d756d,null));};exports[_0xdf4d('0x26')]=function(_0x429d22,_0x1ffdc3){if(_0x429d22['body']['id']){delete _0x429d22['body']['id'];}return db[_0xdf4d('0x2b')][_0xdf4d('0x44')]({'where':{'id':_0x429d22['params']['id']}})[_0xdf4d('0x27')](handleEntityNotFound(_0x1ffdc3,null))['then'](saveUpdates(_0x429d22[_0xdf4d('0x46')],null))[_0xdf4d('0x27')](respondWithResult(_0x1ffdc3,null))[_0xdf4d('0x40')](handleError(_0x1ffdc3,null));};exports[_0xdf4d('0x47')]=function(_0x267077,_0x97b9ef){return db[_0xdf4d('0x2b')]['find']({'where':{'id':_0x267077[_0xdf4d('0x42')]['id']}})[_0xdf4d('0x27')](handleEntityNotFound(_0x97b9ef,null))[_0xdf4d('0x27')](removeEntity(_0x97b9ef,null))[_0xdf4d('0x40')](handleError(_0x97b9ef,null));};exports['describe']=function(_0x539dd1,_0x1a7ba2){return db[_0xdf4d('0x2b')][_0xdf4d('0x48')]()[_0xdf4d('0x27')](respondWithResult(_0x1a7ba2,null))[_0xdf4d('0x40')](handleError(_0x1a7ba2,null));};
\ No newline at end of file
index 7cf6501..8bc7b4e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1261=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./faxQueueReport.attributes','define','report_fax_queue','uniqueid','util'];(function(_0x1ae0b2,_0x1f75b0){var _0x71e8fc=function(_0x306542){while(--_0x306542){_0x1ae0b2['push'](_0x1ae0b2['shift']());}};_0x71e8fc(++_0x1f75b0);}(_0x1261,0x144));var _0x1126=function(_0xdc0397,_0x20d1f1){_0xdc0397=_0xdc0397-0x0;var _0x553d02=_0x1261[_0xdc0397];return _0x553d02;};'use strict';var _=require('lodash');var util=require(_0x1126('0x0'));var logger=require(_0x1126('0x1'))(_0x1126('0x2'));var moment=require(_0x1126('0x3'));var BPromise=require(_0x1126('0x4'));var rp=require(_0x1126('0x5'));var fs=require('fs');var path=require(_0x1126('0x6'));var rimraf=require(_0x1126('0x7'));var config=require(_0x1126('0x8'));var attributes=require(_0x1126('0x9'));module['exports']=function(_0x5c68c8,_0x40ba58){return _0x5c68c8[_0x1126('0xa')]('FaxQueueReport',attributes,{'tableName':_0x1126('0xb'),'paranoid':![],'indexes':[{'name':_0x1126('0xc'),'fields':[_0x1126('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xe14b=['bluebird','path','./faxQueueReport.attributes','exports','define','FaxQueueReport','report_fax_queue','lodash','util','moment'];(function(_0x5c0d48,_0x3731e9){var _0x1b5331=function(_0x2287b8){while(--_0x2287b8){_0x5c0d48['push'](_0x5c0d48['shift']());}};_0x1b5331(++_0x3731e9);}(_0xe14b,0x93));var _0xbe14=function(_0x253fa2,_0x54d22a){_0x253fa2=_0x253fa2-0x0;var _0x2bafed=_0xe14b[_0x253fa2];return _0x2bafed;};'use strict';var _=require(_0xbe14('0x0'));var util=require(_0xbe14('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xbe14('0x2'));var BPromise=require(_0xbe14('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xbe14('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xbe14('0x5'));module[_0xbe14('0x6')]=function(_0x1fe204,_0x1ff100){return _0x1fe204[_0xbe14('0x7')](_0xbe14('0x8'),attributes,{'tableName':_0xbe14('0x9'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index d676574..33c2f7e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef60=['result','catch','CreateFaxQueueReport','FaxQueueReport','create','UpdateFaxQueueReport','update','body','options','raw','where','attributes','util','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','http','request','then','info','FaxQueueReport,\x20%s,\x20%s','request\x20sent','debug','FaxQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x397c86,_0x24edb8){var _0x5c40c5=function(_0x3c92a3){while(--_0x3c92a3){_0x397c86['push'](_0x397c86['shift']());}};_0x5c40c5(++_0x24edb8);}(_0xef60,0x1cc));var _0x0ef6=function(_0x28e066,_0x1c7046){_0x28e066=_0x28e066-0x0;var _0x13eed3=_0xef60[_0x28e066];return _0x13eed3;};'use strict';var _=require('lodash');var util=require(_0x0ef6('0x0'));var moment=require(_0x0ef6('0x1'));var BPromise=require('bluebird');var rs=require(_0x0ef6('0x2'));var fs=require('fs');var Redis=require(_0x0ef6('0x3'));var db=require(_0x0ef6('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x0ef6('0x5'))(_0x0ef6('0x6'));var config=require('../../config/environment');var jayson=require(_0x0ef6('0x7'));var client=jayson['client'][_0x0ef6('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x21a696,_0x4418db,_0x440227){return new BPromise(function(_0x25db70,_0x1b518b){return client[_0x0ef6('0x9')](_0x21a696,_0x440227)[_0x0ef6('0xa')](function(_0x39c602){logger[_0x0ef6('0xb')](_0x0ef6('0xc'),_0x4418db,_0x0ef6('0xd'));logger[_0x0ef6('0xe')](_0x0ef6('0xf'),_0x4418db,'request\x20sent',JSON[_0x0ef6('0x10')](_0x39c602));if(_0x39c602[_0x0ef6('0x11')]){if(_0x39c602[_0x0ef6('0x11')][_0x0ef6('0x12')]===0x1f4){logger[_0x0ef6('0x11')]('FaxQueueReport,\x20%s,\x20%s',_0x4418db,_0x39c602[_0x0ef6('0x11')][_0x0ef6('0x13')]);return _0x1b518b(_0x39c602[_0x0ef6('0x11')]['message']);}logger[_0x0ef6('0x11')](_0x0ef6('0xc'),_0x4418db,_0x39c602[_0x0ef6('0x11')][_0x0ef6('0x13')]);return _0x25db70(_0x39c602[_0x0ef6('0x11')][_0x0ef6('0x13')]);}else{logger[_0x0ef6('0xb')](_0x0ef6('0xc'),_0x4418db,_0x0ef6('0xd'));_0x25db70(_0x39c602[_0x0ef6('0x14')][_0x0ef6('0x13')]);}})[_0x0ef6('0x15')](function(_0x100a7f){logger['error'](_0x0ef6('0xc'),_0x4418db,_0x100a7f);_0x1b518b(_0x100a7f);});});}exports[_0x0ef6('0x16')]=function(_0x5e61e9){var _0x2be6bd=this;return new Promise(function(_0x53ccfa,_0x285c4b){return db[_0x0ef6('0x17')][_0x0ef6('0x18')](_0x5e61e9['body'],{'raw':_0x5e61e9['options']?_0x5e61e9['options']['raw']===undefined?!![]:![]:!![]})[_0x0ef6('0xa')](function(_0x14a56a){logger[_0x0ef6('0xb')](_0x0ef6('0x16'),_0x5e61e9);logger[_0x0ef6('0xe')](_0x0ef6('0x16'),_0x5e61e9,JSON[_0x0ef6('0x10')](_0x14a56a));_0x53ccfa(_0x14a56a);})[_0x0ef6('0x15')](function(_0xef6fe9){logger[_0x0ef6('0x11')](_0x0ef6('0x16'),_0xef6fe9[_0x0ef6('0x13')],_0x5e61e9);_0x285c4b(_0x2be6bd[_0x0ef6('0x11')](0x1f4,_0xef6fe9[_0x0ef6('0x13')]));});});};exports[_0x0ef6('0x19')]=function(_0x497b83){var _0x4aeaaf=this;return new Promise(function(_0x4d0661,_0x15a312){return db[_0x0ef6('0x17')][_0x0ef6('0x1a')](_0x497b83[_0x0ef6('0x1b')],{'raw':_0x497b83['options']?_0x497b83[_0x0ef6('0x1c')][_0x0ef6('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x497b83[_0x0ef6('0x1c')]?_0x497b83[_0x0ef6('0x1c')][_0x0ef6('0x1e')]||null:null,'attributes':_0x497b83[_0x0ef6('0x1c')]?_0x497b83[_0x0ef6('0x1c')][_0x0ef6('0x1f')]||null:null,'limit':_0x497b83['options']?_0x497b83[_0x0ef6('0x1c')]['limit']||null:null})[_0x0ef6('0xa')](function(_0x54e9c9){logger[_0x0ef6('0xb')](_0x0ef6('0x19'),_0x497b83);logger[_0x0ef6('0xe')]('UpdateFaxQueueReport',_0x497b83,JSON[_0x0ef6('0x10')](_0x54e9c9));_0x4d0661(_0x54e9c9);})['catch'](function(_0x48dceb){logger[_0x0ef6('0x11')](_0x0ef6('0x19'),_0x48dceb['message'],_0x497b83);_0x15a312(_0x4aeaaf[_0x0ef6('0x11')](0x1f4,_0x48dceb['message']));});});};
\ No newline at end of file
+var _0xa4d5=['options','raw','debug','UpdateFaxQueueReport','FaxQueueReport','update','where','limit','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','then','info','FaxQueueReport,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','CreateFaxQueueReport','create','body'];(function(_0x1e2ca5,_0x2cc178){var _0x5b56ca=function(_0x378f55){while(--_0x378f55){_0x1e2ca5['push'](_0x1e2ca5['shift']());}};_0x5b56ca(++_0x2cc178);}(_0xa4d5,0xc2));var _0x5a4d=function(_0x52713c,_0x5eee67){_0x52713c=_0x52713c-0x0;var _0x54d575=_0xa4d5[_0x52713c];return _0x54d575;};'use strict';var _=require(_0x5a4d('0x0'));var util=require(_0x5a4d('0x1'));var moment=require(_0x5a4d('0x2'));var BPromise=require(_0x5a4d('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5a4d('0x4'));var db=require(_0x5a4d('0x5'))['db'];var utils=require(_0x5a4d('0x6'));var logger=require('../../config/logger')(_0x5a4d('0x7'));var config=require('../../config/environment');var jayson=require(_0x5a4d('0x8'));var client=jayson[_0x5a4d('0x9')][_0x5a4d('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x59b202,_0x47f33a,_0x323c45){return new BPromise(function(_0x111a52,_0x27ce04){return client['request'](_0x59b202,_0x323c45)[_0x5a4d('0xb')](function(_0x1ff9c0){logger[_0x5a4d('0xc')](_0x5a4d('0xd'),_0x47f33a,'request\x20sent');logger['debug']('FaxQueueReport,\x20%s,\x20%s,\x20%s',_0x47f33a,_0x5a4d('0xe'),JSON[_0x5a4d('0xf')](_0x1ff9c0));if(_0x1ff9c0[_0x5a4d('0x10')]){if(_0x1ff9c0[_0x5a4d('0x10')][_0x5a4d('0x11')]===0x1f4){logger['error'](_0x5a4d('0xd'),_0x47f33a,_0x1ff9c0['error'][_0x5a4d('0x12')]);return _0x27ce04(_0x1ff9c0[_0x5a4d('0x10')][_0x5a4d('0x12')]);}logger[_0x5a4d('0x10')]('FaxQueueReport,\x20%s,\x20%s',_0x47f33a,_0x1ff9c0['error'][_0x5a4d('0x12')]);return _0x111a52(_0x1ff9c0['error'][_0x5a4d('0x12')]);}else{logger[_0x5a4d('0xc')](_0x5a4d('0xd'),_0x47f33a,_0x5a4d('0xe'));_0x111a52(_0x1ff9c0['result'][_0x5a4d('0x12')]);}})[_0x5a4d('0x13')](function(_0x3349d2){logger[_0x5a4d('0x10')](_0x5a4d('0xd'),_0x47f33a,_0x3349d2);_0x27ce04(_0x3349d2);});});}exports[_0x5a4d('0x14')]=function(_0x770129){var _0x1551a8=this;return new Promise(function(_0x1571f2,_0x3ea362){return db['FaxQueueReport'][_0x5a4d('0x15')](_0x770129[_0x5a4d('0x16')],{'raw':_0x770129[_0x5a4d('0x17')]?_0x770129[_0x5a4d('0x17')][_0x5a4d('0x18')]===undefined?!![]:![]:!![]})[_0x5a4d('0xb')](function(_0x5ec2a3){logger[_0x5a4d('0xc')](_0x5a4d('0x14'),_0x770129);logger[_0x5a4d('0x19')](_0x5a4d('0x14'),_0x770129,JSON['stringify'](_0x5ec2a3));_0x1571f2(_0x5ec2a3);})[_0x5a4d('0x13')](function(_0x53df06){logger[_0x5a4d('0x10')]('CreateFaxQueueReport',_0x53df06[_0x5a4d('0x12')],_0x770129);_0x3ea362(_0x1551a8[_0x5a4d('0x10')](0x1f4,_0x53df06[_0x5a4d('0x12')]));});});};exports[_0x5a4d('0x1a')]=function(_0x5acb32){var _0x322f5c=this;return new Promise(function(_0x5b6428,_0x4e0e0b){return db[_0x5a4d('0x1b')][_0x5a4d('0x1c')](_0x5acb32[_0x5a4d('0x16')],{'raw':_0x5acb32['options']?_0x5acb32[_0x5a4d('0x17')][_0x5a4d('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5acb32[_0x5a4d('0x17')]?_0x5acb32[_0x5a4d('0x17')][_0x5a4d('0x1d')]||null:null,'attributes':_0x5acb32[_0x5a4d('0x17')]?_0x5acb32[_0x5a4d('0x17')]['attributes']||null:null,'limit':_0x5acb32[_0x5a4d('0x17')]?_0x5acb32[_0x5a4d('0x17')][_0x5a4d('0x1e')]||null:null})[_0x5a4d('0xb')](function(_0x3bdadb){logger[_0x5a4d('0xc')](_0x5a4d('0x1a'),_0x5acb32);logger[_0x5a4d('0x19')](_0x5a4d('0x1a'),_0x5acb32,JSON[_0x5a4d('0xf')](_0x3bdadb));_0x5b6428(_0x3bdadb);})[_0x5a4d('0x13')](function(_0x5bcb2c){logger[_0x5a4d('0x10')]('UpdateFaxQueueReport',_0x5bcb2c[_0x5a4d('0x12')],_0x5acb32);_0x4e0e0b(_0x322f5c[_0x5a4d('0x10')](0x1f4,_0x5bcb2c[_0x5a4d('0x12')]));});});};
\ No newline at end of file
index a947bca..8c365bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a1a=['put','update','delete','destroy','exports','multer','util','express','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','/describe','/:id','show','post','create'];(function(_0x2468c3,_0x24b861){var _0x320a04=function(_0x1b5ccd){while(--_0x1b5ccd){_0x2468c3['push'](_0x2468c3['shift']());}};_0x320a04(++_0x24b861);}(_0x7a1a,0x1f3));var _0xa7a1=function(_0x24d15f,_0x4ecbcf){_0x24d15f=_0x24d15f-0x0;var _0x234339=_0x7a1a[_0x24d15f];return _0x234339;};'use strict';var multer=require(_0xa7a1('0x0'));var util=require(_0xa7a1('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xa7a1('0x2'));var router=express['Router']();var fs_extra=require(_0xa7a1('0x3'));var auth=require(_0xa7a1('0x4'));var interaction=require(_0xa7a1('0x5'));var config=require('../../config/environment');var controller=require('./faxQueueReport.controller');router[_0xa7a1('0x6')]('/',auth[_0xa7a1('0x7')](),controller[_0xa7a1('0x8')]);router['get'](_0xa7a1('0x9'),auth[_0xa7a1('0x7')](),controller['describe']);router[_0xa7a1('0x6')](_0xa7a1('0xa'),auth['isAuthenticated'](),controller[_0xa7a1('0xb')]);router[_0xa7a1('0xc')]('/',auth['isAuthenticated'](),controller[_0xa7a1('0xd')]);router[_0xa7a1('0xe')]('/:id',auth[_0xa7a1('0x7')](),controller[_0xa7a1('0xf')]);router[_0xa7a1('0x10')]('/:id',auth[_0xa7a1('0x7')](),controller[_0xa7a1('0x11')]);module[_0xa7a1('0x12')]=router;
\ No newline at end of file
+var _0x139b=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','isAuthenticated','index','/describe','describe','get','show','post','put','/:id','update','delete','exports','multer','util','path'];(function(_0x5d06b0,_0x230b8f){var _0x16c64f=function(_0x2c68a1){while(--_0x2c68a1){_0x5d06b0['push'](_0x5d06b0['shift']());}};_0x16c64f(++_0x230b8f);}(_0x139b,0x1cb));var _0xb139=function(_0x3d7662,_0x3862b0){_0x3d7662=_0x3d7662-0x0;var _0xb3320f=_0x139b[_0x3d7662];return _0xb3320f;};'use strict';var multer=require(_0xb139('0x0'));var util=require(_0xb139('0x1'));var path=require(_0xb139('0x2'));var timeout=require(_0xb139('0x3'));var express=require(_0xb139('0x4'));var router=express[_0xb139('0x5')]();var fs_extra=require(_0xb139('0x6'));var auth=require(_0xb139('0x7'));var interaction=require(_0xb139('0x8'));var config=require('../../config/environment');var controller=require('./faxQueueReport.controller');router['get']('/',auth[_0xb139('0x9')](),controller[_0xb139('0xa')]);router['get'](_0xb139('0xb'),auth[_0xb139('0x9')](),controller[_0xb139('0xc')]);router[_0xb139('0xd')]('/:id',auth[_0xb139('0x9')](),controller[_0xb139('0xe')]);router[_0xb139('0xf')]('/',auth['isAuthenticated'](),controller['create']);router[_0xb139('0x10')](_0xb139('0x11'),auth['isAuthenticated'](),controller[_0xb139('0x12')]);router[_0xb139('0x13')](_0xb139('0x11'),auth[_0xb139('0x9')](),controller['destroy']);module[_0xb139('0x14')]=router;
\ No newline at end of file
index 0c5c5b2..2a5b94f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['ENUM','account','agent','queue','NOW','exports','STRING'];(function(_0x4d150a,_0x25f904){var _0x885bd4=function(_0x552a7d){while(--_0x552a7d){_0x4d150a['push'](_0x4d150a['shift']());}};_0x885bd4(++_0x25f904);}(_0x9c44,0x178));var _0x49c4=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0x9c44[_0x167cc1];return _0x10bc4b;};'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 _0xf4eb=['NOW','moment','account','queue','DATE'];(function(_0x2b1cbb,_0x30ac5e){var _0x1d00d8=function(_0xaccf28){while(--_0xaccf28){_0x2b1cbb['push'](_0x2b1cbb['shift']());}};_0x1d00d8(++_0x30ac5e);}(_0xf4eb,0xec));var _0xbf4e=function(_0x3cafae,_0x509f7e){_0x3cafae=_0x3cafae-0x0;var _0x59bc0b=_0xf4eb[_0x3cafae];return _0x59bc0b;};'use strict';var moment=require(_0xbf4e('0x0'));var Sequelize=require('sequelize');module['exports']={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0xbf4e('0x1'),'agent','queue'),'allowNull':![],'defaultValue':_0xbf4e('0x2')},'transferredAt':{'type':Sequelize[_0xbf4e('0x3')],'allowNull':![],'defaultValue':Sequelize[_0xbf4e('0x4')]}};
\ No newline at end of file
index b8ebb2d..358e8fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0ee4=['filters','pick','merge','where','VIRTUAL','filter','options','includeAll','include','rows','then','catch','show','params','find','create','body','update','describe','eml-format','rimraf','fast-json-patch','bluebird','mustache','util','sox','to-csv','lodash','squel','desk.js','querystring','ioredis','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','limit','count','Content-Range','json','apply','reject','destroy','end','error','stack','name','send','index','map','FaxTransferReport','rawAttributes','fieldName','type','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','order','sort'];(function(_0x4a62a3,_0x421085){var _0x45e176=function(_0x330944){while(--_0x330944){_0x4a62a3['push'](_0x4a62a3['shift']());}};_0x45e176(++_0x421085);}(_0x0ee4,0x12f));var _0x40ee=function(_0x236f1a,_0x3e03c4){_0x236f1a=_0x236f1a-0x0;var _0x4e3071=_0x0ee4[_0x236f1a];return _0x4e3071;};'use strict';var emlformat=require(_0x40ee('0x0'));var rimraf=require(_0x40ee('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x40ee('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x40ee('0x3'));var Mustache=require(_0x40ee('0x4'));var util=require(_0x40ee('0x5'));var path=require('path');var sox=require(_0x40ee('0x6'));var csv=require(_0x40ee('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x40ee('0x8'));var squel=require(_0x40ee('0x9'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x40ee('0xa'));var toCsv=require(_0x40ee('0x7'));var querystring=require(_0x40ee('0xb'));var Papa=require('papaparse');var Redis=require(_0x40ee('0xc'));var authService=require('../../components/auth/service');var qs=require(_0x40ee('0xd'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x40ee('0xe'));var logger=require('../../config/logger')(_0x40ee('0xf'));var utils=require(_0x40ee('0x10'));var config=require(_0x40ee('0x11'));var licenseUtil=require(_0x40ee('0x12'));var db=require(_0x40ee('0x13'))['db'];function respondWithStatusCode(_0x30c9ce,_0x16c664){_0x16c664=_0x16c664||0xcc;return function(_0x4c3ee7){if(_0x4c3ee7){return _0x30c9ce[_0x40ee('0x14')](_0x16c664);}return _0x30c9ce[_0x40ee('0x15')](_0x16c664)['end']();};}function respondWithResult(_0x2a48f0,_0x297652){_0x297652=_0x297652||0xc8;return function(_0x413dc8){if(_0x413dc8){return _0x2a48f0[_0x40ee('0x15')](_0x297652)['json'](_0x413dc8);}};}function respondWithFilteredResult(_0x4fcca7,_0x4775d7){return function(_0x5bfa3e){if(_0x5bfa3e){var _0x21cff7=typeof _0x4775d7[_0x40ee('0x16')]===_0x40ee('0x17')&&typeof _0x4775d7[_0x40ee('0x18')]===_0x40ee('0x17');var _0x417532=_0x5bfa3e[_0x40ee('0x19')];var _0x2e97e0=_0x21cff7?0x0:_0x4775d7[_0x40ee('0x16')];var _0x3ef345=_0x21cff7?_0x5bfa3e[_0x40ee('0x19')]:_0x4775d7['offset']+_0x4775d7[_0x40ee('0x18')];var _0x49140c;if(_0x3ef345>=_0x417532){_0x3ef345=_0x417532;_0x49140c=0xc8;}else{_0x49140c=0xce;}_0x4fcca7[_0x40ee('0x15')](_0x49140c);return _0x4fcca7['set'](_0x40ee('0x1a'),_0x2e97e0+'-'+_0x3ef345+'/'+_0x417532)[_0x40ee('0x1b')](_0x5bfa3e);}return null;};}function patchUpdates(_0x6a7119){return function(_0x438e9f){try{jsonpatch[_0x40ee('0x1c')](_0x438e9f,_0x6a7119,!![]);}catch(_0x54016a){return BPromise[_0x40ee('0x1d')](_0x54016a);}return _0x438e9f['save']();};}function saveUpdates(_0xea3af,_0x220249){return function(_0x4bc6ac){if(_0x4bc6ac){return _0x4bc6ac['update'](_0xea3af)['then'](function(_0x1d4c16){return _0x1d4c16;});}return null;};}function removeEntity(_0x55fbe1,_0x275209){return function(_0x46ef67){if(_0x46ef67){return _0x46ef67[_0x40ee('0x1e')]()['then'](function(){_0x55fbe1[_0x40ee('0x15')](0xcc)[_0x40ee('0x1f')]();});}};}function handleEntityNotFound(_0x2f3d0a,_0x4e1e7a){return function(_0x4da5be){if(!_0x4da5be){_0x2f3d0a[_0x40ee('0x14')](0x194);}return _0x4da5be;};}function handleError(_0xae321e,_0x1ab3b6){_0x1ab3b6=_0x1ab3b6||0x1f4;return function(_0x2b2cdf){logger[_0x40ee('0x20')](_0x2b2cdf[_0x40ee('0x21')]);if(_0x2b2cdf[_0x40ee('0x22')]){delete _0x2b2cdf[_0x40ee('0x22')];}_0xae321e[_0x40ee('0x15')](_0x1ab3b6)[_0x40ee('0x23')](_0x2b2cdf);};}exports[_0x40ee('0x24')]=function(_0x23fe27,_0x312bc2){var _0x21be2d={},_0x46dbcf={},_0x4d32ff={'count':0x0,'rows':[]};var _0x23839b=_[_0x40ee('0x25')](db[_0x40ee('0x26')][_0x40ee('0x27')],function(_0x2274f7){return{'name':_0x2274f7[_0x40ee('0x28')],'type':_0x2274f7[_0x40ee('0x29')]['key']};});_0x46dbcf[_0x40ee('0x2a')]=_[_0x40ee('0x25')](_0x23839b,_0x40ee('0x22'));_0x46dbcf[_0x40ee('0x2b')]=_[_0x40ee('0x2c')](_0x23fe27[_0x40ee('0x2b')]);_0x46dbcf['filters']=_[_0x40ee('0x2d')](_0x46dbcf[_0x40ee('0x2a')],_0x46dbcf[_0x40ee('0x2b')]);_0x21be2d[_0x40ee('0x2e')]=_['intersection'](_0x46dbcf[_0x40ee('0x2a')],qs['fields'](_0x23fe27[_0x40ee('0x2b')][_0x40ee('0x2f')]));_0x21be2d[_0x40ee('0x2e')]=_0x21be2d[_0x40ee('0x2e')][_0x40ee('0x30')]?_0x21be2d[_0x40ee('0x2e')]:_0x46dbcf[_0x40ee('0x2a')];if(!_0x23fe27[_0x40ee('0x2b')][_0x40ee('0x31')]('nolimit')){_0x21be2d['limit']=qs[_0x40ee('0x18')](_0x23fe27[_0x40ee('0x2b')][_0x40ee('0x18')]);_0x21be2d[_0x40ee('0x16')]=qs['offset'](_0x23fe27[_0x40ee('0x2b')]['offset']);}_0x21be2d[_0x40ee('0x32')]=qs[_0x40ee('0x33')](_0x23fe27[_0x40ee('0x2b')][_0x40ee('0x33')]);_0x21be2d['where']=qs[_0x40ee('0x34')](_[_0x40ee('0x35')](_0x23fe27['query'],_0x46dbcf[_0x40ee('0x34')]),_0x23839b);if(_0x23fe27[_0x40ee('0x2b')]['filter']){_0x21be2d['where']=_[_0x40ee('0x36')](_0x21be2d[_0x40ee('0x37')],{'$or':_[_0x40ee('0x25')](_0x23839b,function(_0x556177){if(_0x556177[_0x40ee('0x29')]!==_0x40ee('0x38')){var _0x3dc0ba={};_0x3dc0ba[_0x556177[_0x40ee('0x22')]]={'$like':'%'+_0x23fe27[_0x40ee('0x2b')][_0x40ee('0x39')]+'%'};return _0x3dc0ba;}})});}_0x21be2d=_[_0x40ee('0x36')]({},_0x21be2d,_0x23fe27[_0x40ee('0x3a')]);var _0x2e9733={'where':_0x21be2d['where']};return db[_0x40ee('0x26')][_0x40ee('0x19')](_0x2e9733)['then'](function(_0x5d21fc){_0x4d32ff[_0x40ee('0x19')]=_0x5d21fc;if(_0x23fe27[_0x40ee('0x2b')][_0x40ee('0x3b')]){_0x21be2d[_0x40ee('0x3c')]=[{'all':!![]}];}return db[_0x40ee('0x26')]['findAll'](_0x21be2d);})['then'](function(_0x5233f9){_0x4d32ff[_0x40ee('0x3d')]=_0x5233f9;return _0x4d32ff;})[_0x40ee('0x3e')](respondWithFilteredResult(_0x312bc2,_0x21be2d))[_0x40ee('0x3f')](handleError(_0x312bc2,null));};exports[_0x40ee('0x40')]=function(_0x5a0aff,_0x595c2c){var _0x2a463c={'raw':!![],'where':{'id':_0x5a0aff[_0x40ee('0x41')]['id']}},_0xc6be8a={};_0xc6be8a['model']=_[_0x40ee('0x2c')](db[_0x40ee('0x26')]['rawAttributes']);_0xc6be8a['query']=_[_0x40ee('0x2c')](_0x5a0aff[_0x40ee('0x2b')]);_0xc6be8a[_0x40ee('0x34')]=_[_0x40ee('0x2d')](_0xc6be8a[_0x40ee('0x2a')],_0xc6be8a[_0x40ee('0x2b')]);_0x2a463c[_0x40ee('0x2e')]=_['intersection'](_0xc6be8a['model'],qs[_0x40ee('0x2f')](_0x5a0aff['query']['fields']));_0x2a463c[_0x40ee('0x2e')]=_0x2a463c['attributes'][_0x40ee('0x30')]?_0x2a463c[_0x40ee('0x2e')]:_0xc6be8a[_0x40ee('0x2a')];if(_0x5a0aff[_0x40ee('0x2b')][_0x40ee('0x3b')]){_0x2a463c[_0x40ee('0x3c')]=[{'all':!![]}];}_0x2a463c=_['merge']({},_0x2a463c,_0x5a0aff[_0x40ee('0x3a')]);return db['FaxTransferReport'][_0x40ee('0x42')](_0x2a463c)[_0x40ee('0x3e')](handleEntityNotFound(_0x595c2c,null))['then'](respondWithResult(_0x595c2c,null))['catch'](handleError(_0x595c2c,null));};exports[_0x40ee('0x43')]=function(_0x241235,_0x1a331c){return db[_0x40ee('0x26')][_0x40ee('0x43')](_0x241235[_0x40ee('0x44')],{})[_0x40ee('0x3e')](respondWithResult(_0x1a331c,0xc9))[_0x40ee('0x3f')](handleError(_0x1a331c,null));};exports[_0x40ee('0x45')]=function(_0x365594,_0x44155b){if(_0x365594[_0x40ee('0x44')]['id']){delete _0x365594[_0x40ee('0x44')]['id'];}return db[_0x40ee('0x26')][_0x40ee('0x42')]({'where':{'id':_0x365594[_0x40ee('0x41')]['id']}})[_0x40ee('0x3e')](handleEntityNotFound(_0x44155b,null))[_0x40ee('0x3e')](saveUpdates(_0x365594[_0x40ee('0x44')],null))[_0x40ee('0x3e')](respondWithResult(_0x44155b,null))[_0x40ee('0x3f')](handleError(_0x44155b,null));};exports[_0x40ee('0x1e')]=function(_0xa9c285,_0x571908){return db[_0x40ee('0x26')][_0x40ee('0x42')]({'where':{'id':_0xa9c285[_0x40ee('0x41')]['id']}})[_0x40ee('0x3e')](handleEntityNotFound(_0x571908,null))['then'](removeEntity(_0x571908,null))[_0x40ee('0x3f')](handleError(_0x571908,null));};exports[_0x40ee('0x46')]=function(_0x441c4a,_0x199d11){return db[_0x40ee('0x26')][_0x40ee('0x46')]()[_0x40ee('0x3e')](respondWithResult(_0x199d11,null))[_0x40ee('0x3f')](handleError(_0x199d11,null));};
\ No newline at end of file
+var _0x6ef6=['lodash','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','Content-Range','reject','save','update','destroy','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','VIRTUAL','filter','FaxTransferReport','then','findAll','rows','catch','show','includeAll','merge','find','create','body','params','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra'];(function(_0x530523,_0x3aa5ab){var _0x2871f0=function(_0x1386b8){while(--_0x1386b8){_0x530523['push'](_0x530523['shift']());}};_0x2871f0(++_0x3aa5ab);}(_0x6ef6,0x1a9));var _0x66ef=function(_0x282a3c,_0x520d33){_0x282a3c=_0x282a3c-0x0;var _0x483a64=_0x6ef6[_0x282a3c];return _0x483a64;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x66ef('0x0'));var zipdir=require(_0x66ef('0x1'));var jsonpatch=require(_0x66ef('0x2'));var rp=require(_0x66ef('0x3'));var moment=require(_0x66ef('0x4'));var BPromise=require(_0x66ef('0x5'));var Mustache=require(_0x66ef('0x6'));var util=require(_0x66ef('0x7'));var path=require(_0x66ef('0x8'));var sox=require(_0x66ef('0x9'));var csv=require(_0x66ef('0xa'));var ejs=require(_0x66ef('0xb'));var fs=require('fs');var fs_extra=require(_0x66ef('0xc'));var _=require(_0x66ef('0xd'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x66ef('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x66ef('0xa'));var querystring=require(_0x66ef('0xf'));var Papa=require(_0x66ef('0x10'));var Redis=require(_0x66ef('0x11'));var authService=require(_0x66ef('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x66ef('0x13'));var hardwareService=require(_0x66ef('0x14'));var logger=require('../../config/logger')(_0x66ef('0x15'));var utils=require('../../config/utils');var config=require(_0x66ef('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x66ef('0x17'))['db'];function respondWithStatusCode(_0x215c59,_0x500e56){_0x500e56=_0x500e56||0xcc;return function(_0x14f327){if(_0x14f327){return _0x215c59[_0x66ef('0x18')](_0x500e56);}return _0x215c59[_0x66ef('0x19')](_0x500e56)['end']();};}function respondWithResult(_0x28fca3,_0x30bcf5){_0x30bcf5=_0x30bcf5||0xc8;return function(_0x5ef15d){if(_0x5ef15d){return _0x28fca3[_0x66ef('0x19')](_0x30bcf5)[_0x66ef('0x1a')](_0x5ef15d);}};}function respondWithFilteredResult(_0x5ebc0b,_0x343938){return function(_0x52c432){if(_0x52c432){var _0x275076=typeof _0x343938[_0x66ef('0x1b')]===_0x66ef('0x1c')&&typeof _0x343938[_0x66ef('0x1d')]==='undefined';var _0x29a35f=_0x52c432[_0x66ef('0x1e')];var _0x4f7058=_0x275076?0x0:_0x343938[_0x66ef('0x1b')];var _0x29337c=_0x275076?_0x52c432[_0x66ef('0x1e')]:_0x343938[_0x66ef('0x1b')]+_0x343938[_0x66ef('0x1d')];var _0x2a4e43;if(_0x29337c>=_0x29a35f){_0x29337c=_0x29a35f;_0x2a4e43=0xc8;}else{_0x2a4e43=0xce;}_0x5ebc0b[_0x66ef('0x19')](_0x2a4e43);return _0x5ebc0b['set'](_0x66ef('0x1f'),_0x4f7058+'-'+_0x29337c+'/'+_0x29a35f)['json'](_0x52c432);}return null;};}function patchUpdates(_0x3aee85){return function(_0x30e1a6){try{jsonpatch['apply'](_0x30e1a6,_0x3aee85,!![]);}catch(_0x43ef97){return BPromise[_0x66ef('0x20')](_0x43ef97);}return _0x30e1a6[_0x66ef('0x21')]();};}function saveUpdates(_0xf18a9c,_0xf3347a){return function(_0x565ddc){if(_0x565ddc){return _0x565ddc[_0x66ef('0x22')](_0xf18a9c)['then'](function(_0xf8f4c4){return _0xf8f4c4;});}return null;};}function removeEntity(_0x5b0427,_0x427d8d){return function(_0x5c610a){if(_0x5c610a){return _0x5c610a[_0x66ef('0x23')]()['then'](function(){_0x5b0427['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x22339c,_0x2958a6){return function(_0x4cd83e){if(!_0x4cd83e){_0x22339c[_0x66ef('0x18')](0x194);}return _0x4cd83e;};}function handleError(_0x3e5652,_0x25fc69){_0x25fc69=_0x25fc69||0x1f4;return function(_0x28b118){logger['error'](_0x28b118[_0x66ef('0x24')]);if(_0x28b118[_0x66ef('0x25')]){delete _0x28b118['name'];}_0x3e5652['status'](_0x25fc69)[_0x66ef('0x26')](_0x28b118);};}exports[_0x66ef('0x27')]=function(_0x1029c2,_0x41d8db){var _0x576994={},_0x24dd1f={},_0x38d65d={'count':0x0,'rows':[]};var _0x44f771=_[_0x66ef('0x28')](db['FaxTransferReport'][_0x66ef('0x29')],function(_0x302077){return{'name':_0x302077[_0x66ef('0x2a')],'type':_0x302077[_0x66ef('0x2b')][_0x66ef('0x2c')]};});_0x24dd1f[_0x66ef('0x2d')]=_[_0x66ef('0x28')](_0x44f771,_0x66ef('0x25'));_0x24dd1f[_0x66ef('0x2e')]=_[_0x66ef('0x2f')](_0x1029c2[_0x66ef('0x2e')]);_0x24dd1f[_0x66ef('0x30')]=_[_0x66ef('0x31')](_0x24dd1f[_0x66ef('0x2d')],_0x24dd1f[_0x66ef('0x2e')]);_0x576994[_0x66ef('0x32')]=_[_0x66ef('0x31')](_0x24dd1f[_0x66ef('0x2d')],qs['fields'](_0x1029c2['query'][_0x66ef('0x33')]));_0x576994[_0x66ef('0x32')]=_0x576994['attributes'][_0x66ef('0x34')]?_0x576994[_0x66ef('0x32')]:_0x24dd1f[_0x66ef('0x2d')];if(!_0x1029c2[_0x66ef('0x2e')][_0x66ef('0x35')](_0x66ef('0x36'))){_0x576994['limit']=qs['limit'](_0x1029c2[_0x66ef('0x2e')][_0x66ef('0x1d')]);_0x576994['offset']=qs[_0x66ef('0x1b')](_0x1029c2[_0x66ef('0x2e')][_0x66ef('0x1b')]);}_0x576994[_0x66ef('0x37')]=qs['sort'](_0x1029c2[_0x66ef('0x2e')][_0x66ef('0x38')]);_0x576994[_0x66ef('0x39')]=qs['filters'](_['pick'](_0x1029c2[_0x66ef('0x2e')],_0x24dd1f[_0x66ef('0x30')]),_0x44f771);if(_0x1029c2[_0x66ef('0x2e')]['filter']){_0x576994[_0x66ef('0x39')]=_['merge'](_0x576994[_0x66ef('0x39')],{'$or':_['map'](_0x44f771,function(_0x352501){if(_0x352501[_0x66ef('0x2b')]!==_0x66ef('0x3a')){var _0x20a17c={};_0x20a17c[_0x352501['name']]={'$like':'%'+_0x1029c2['query'][_0x66ef('0x3b')]+'%'};return _0x20a17c;}})});}_0x576994=_['merge']({},_0x576994,_0x1029c2['options']);var _0x371255={'where':_0x576994['where']};return db[_0x66ef('0x3c')]['count'](_0x371255)[_0x66ef('0x3d')](function(_0x14674f){_0x38d65d[_0x66ef('0x1e')]=_0x14674f;if(_0x1029c2['query']['includeAll']){_0x576994['include']=[{'all':!![]}];}return db['FaxTransferReport'][_0x66ef('0x3e')](_0x576994);})[_0x66ef('0x3d')](function(_0x1768a6){_0x38d65d[_0x66ef('0x3f')]=_0x1768a6;return _0x38d65d;})[_0x66ef('0x3d')](respondWithFilteredResult(_0x41d8db,_0x576994))[_0x66ef('0x40')](handleError(_0x41d8db,null));};exports[_0x66ef('0x41')]=function(_0x594b0f,_0x32744b){var _0x125e1c={'raw':!![],'where':{'id':_0x594b0f['params']['id']}},_0x1f8009={};_0x1f8009[_0x66ef('0x2d')]=_[_0x66ef('0x2f')](db[_0x66ef('0x3c')][_0x66ef('0x29')]);_0x1f8009[_0x66ef('0x2e')]=_[_0x66ef('0x2f')](_0x594b0f[_0x66ef('0x2e')]);_0x1f8009[_0x66ef('0x30')]=_[_0x66ef('0x31')](_0x1f8009['model'],_0x1f8009[_0x66ef('0x2e')]);_0x125e1c['attributes']=_[_0x66ef('0x31')](_0x1f8009[_0x66ef('0x2d')],qs[_0x66ef('0x33')](_0x594b0f[_0x66ef('0x2e')][_0x66ef('0x33')]));_0x125e1c[_0x66ef('0x32')]=_0x125e1c[_0x66ef('0x32')]['length']?_0x125e1c['attributes']:_0x1f8009['model'];if(_0x594b0f[_0x66ef('0x2e')][_0x66ef('0x42')]){_0x125e1c['include']=[{'all':!![]}];}_0x125e1c=_[_0x66ef('0x43')]({},_0x125e1c,_0x594b0f['options']);return db[_0x66ef('0x3c')][_0x66ef('0x44')](_0x125e1c)[_0x66ef('0x3d')](handleEntityNotFound(_0x32744b,null))['then'](respondWithResult(_0x32744b,null))['catch'](handleError(_0x32744b,null));};exports[_0x66ef('0x45')]=function(_0xf656ff,_0x4792a9){return db[_0x66ef('0x3c')][_0x66ef('0x45')](_0xf656ff[_0x66ef('0x46')],{})[_0x66ef('0x3d')](respondWithResult(_0x4792a9,0xc9))[_0x66ef('0x40')](handleError(_0x4792a9,null));};exports[_0x66ef('0x22')]=function(_0x166481,_0x3b9e4b){if(_0x166481['body']['id']){delete _0x166481[_0x66ef('0x46')]['id'];}return db[_0x66ef('0x3c')][_0x66ef('0x44')]({'where':{'id':_0x166481[_0x66ef('0x47')]['id']}})[_0x66ef('0x3d')](handleEntityNotFound(_0x3b9e4b,null))[_0x66ef('0x3d')](saveUpdates(_0x166481[_0x66ef('0x46')],null))[_0x66ef('0x3d')](respondWithResult(_0x3b9e4b,null))['catch'](handleError(_0x3b9e4b,null));};exports[_0x66ef('0x23')]=function(_0x47df62,_0x5885c0){return db[_0x66ef('0x3c')]['find']({'where':{'id':_0x47df62['params']['id']}})['then'](handleEntityNotFound(_0x5885c0,null))[_0x66ef('0x3d')](removeEntity(_0x5885c0,null))[_0x66ef('0x40')](handleError(_0x5885c0,null));};exports[_0x66ef('0x48')]=function(_0x16f4c5,_0x199111){return db[_0x66ef('0x3c')]['describe']()[_0x66ef('0x3d')](respondWithResult(_0x199111,null))[_0x66ef('0x40')](handleError(_0x199111,null));};
\ No newline at end of file
index 2af80b9..85a2dc0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x52e1=['uniqueid','lodash','util','../../config/logger','moment','request-promise','path','rimraf','./faxTransferReport.attributes','exports','FaxTransferReport','report_fax_transfer'];(function(_0x534b0b,_0x3d3e7d){var _0x365628=function(_0xe4f1fa){while(--_0xe4f1fa){_0x534b0b['push'](_0x534b0b['shift']());}};_0x365628(++_0x3d3e7d);}(_0x52e1,0x175));var _0x152e=function(_0x14a3d9,_0x12f232){_0x14a3d9=_0x14a3d9-0x0;var _0xeef905=_0x52e1[_0x14a3d9];return _0xeef905;};'use strict';var _=require(_0x152e('0x0'));var util=require(_0x152e('0x1'));var logger=require(_0x152e('0x2'))('api');var moment=require(_0x152e('0x3'));var BPromise=require('bluebird');var rp=require(_0x152e('0x4'));var fs=require('fs');var path=require(_0x152e('0x5'));var rimraf=require(_0x152e('0x6'));var config=require('../../config/environment');var attributes=require(_0x152e('0x7'));module[_0x152e('0x8')]=function(_0x20e56d,_0x57e69e){return _0x20e56d['define'](_0x152e('0x9'),attributes,{'tableName':_0x152e('0xa'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x152e('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x13ac=['lodash','../../config/logger','api','moment','request-promise','path','rimraf','./faxTransferReport.attributes','define','FaxTransferReport','report_fax_transfer','uniqueid'];(function(_0x4d16da,_0x219c5){var _0x3cb012=function(_0x174fee){while(--_0x174fee){_0x4d16da['push'](_0x4d16da['shift']());}};_0x3cb012(++_0x219c5);}(_0x13ac,0x120));var _0xc13a=function(_0x1e71ba,_0x2b4111){_0x1e71ba=_0x1e71ba-0x0;var _0x1977aa=_0x13ac[_0x1e71ba];return _0x1977aa;};'use strict';var _=require(_0xc13a('0x0'));var util=require('util');var logger=require(_0xc13a('0x1'))(_0xc13a('0x2'));var moment=require(_0xc13a('0x3'));var BPromise=require('bluebird');var rp=require(_0xc13a('0x4'));var fs=require('fs');var path=require(_0xc13a('0x5'));var rimraf=require(_0xc13a('0x6'));var config=require('../../config/environment');var attributes=require(_0xc13a('0x7'));module['exports']=function(_0x53aa3a,_0x54348e){return _0x53aa3a[_0xc13a('0x8')](_0xc13a('0x9'),attributes,{'tableName':_0xc13a('0xa'),'paranoid':![],'indexes':[{'name':_0xc13a('0xb'),'fields':[_0xc13a('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index 0ded47a..b38f842 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ecf=['stringify','error','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','FaxTransferReport,\x20%s,\x20%s','request\x20sent','debug','FaxTransferReport,\x20%s,\x20%s,\x20%s'];(function(_0x1c5bd4,_0x235a34){var _0xa1becc=function(_0x5ef8ce){while(--_0x5ef8ce){_0x1c5bd4['push'](_0x1c5bd4['shift']());}};_0xa1becc(++_0x235a34);}(_0x8ecf,0x1ad));var _0xf8ec=function(_0x8b5326,_0x19b767){_0x8b5326=_0x8b5326-0x0;var _0x105462=_0x8ecf[_0x8b5326];return _0x105462;};'use strict';var _=require(_0xf8ec('0x0'));var util=require(_0xf8ec('0x1'));var moment=require(_0xf8ec('0x2'));var BPromise=require(_0xf8ec('0x3'));var rs=require(_0xf8ec('0x4'));var fs=require('fs');var Redis=require(_0xf8ec('0x5'));var db=require(_0xf8ec('0x6'))['db'];var utils=require(_0xf8ec('0x7'));var logger=require(_0xf8ec('0x8'))(_0xf8ec('0x9'));var config=require(_0xf8ec('0xa'));var jayson=require(_0xf8ec('0xb'));var client=jayson[_0xf8ec('0xc')][_0xf8ec('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x4b8a66,_0xf83a95,_0x2ddaa){return new BPromise(function(_0x3ecdbe,_0x31bfcf){return client[_0xf8ec('0xe')](_0x4b8a66,_0x2ddaa)[_0xf8ec('0xf')](function(_0x3cca42){logger[_0xf8ec('0x10')](_0xf8ec('0x11'),_0xf83a95,_0xf8ec('0x12'));logger[_0xf8ec('0x13')](_0xf8ec('0x14'),_0xf83a95,_0xf8ec('0x12'),JSON[_0xf8ec('0x15')](_0x3cca42));if(_0x3cca42[_0xf8ec('0x16')]){if(_0x3cca42[_0xf8ec('0x16')]['code']===0x1f4){logger[_0xf8ec('0x16')](_0xf8ec('0x11'),_0xf83a95,_0x3cca42[_0xf8ec('0x16')]['message']);return _0x31bfcf(_0x3cca42[_0xf8ec('0x16')][_0xf8ec('0x17')]);}logger[_0xf8ec('0x16')](_0xf8ec('0x11'),_0xf83a95,_0x3cca42[_0xf8ec('0x16')][_0xf8ec('0x17')]);return _0x3ecdbe(_0x3cca42[_0xf8ec('0x16')][_0xf8ec('0x17')]);}else{logger['info'](_0xf8ec('0x11'),_0xf83a95,_0xf8ec('0x12'));_0x3ecdbe(_0x3cca42[_0xf8ec('0x18')]['message']);}})['catch'](function(_0x3a53ab){logger[_0xf8ec('0x16')]('FaxTransferReport,\x20%s,\x20%s',_0xf83a95,_0x3a53ab);_0x31bfcf(_0x3a53ab);});});}
\ No newline at end of file
+var _0x92b3=['catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','info','FaxTransferReport,\x20%s,\x20%s','debug','FaxTransferReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result'];(function(_0xe9674c,_0x555a81){var _0x22a387=function(_0xc35d4d){while(--_0xc35d4d){_0xe9674c['push'](_0xe9674c['shift']());}};_0x22a387(++_0x555a81);}(_0x92b3,0xb9));var _0x392b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x92b3[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x392b('0x0'));var BPromise=require(_0x392b('0x1'));var rs=require(_0x392b('0x2'));var fs=require('fs');var Redis=require(_0x392b('0x3'));var db=require(_0x392b('0x4'))['db'];var utils=require(_0x392b('0x5'));var logger=require(_0x392b('0x6'))(_0x392b('0x7'));var config=require(_0x392b('0x8'));var jayson=require(_0x392b('0x9'));var client=jayson['client'][_0x392b('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x122950,_0x7dc65,_0x41591f){return new BPromise(function(_0x8e458d,_0x3fd222){return client[_0x392b('0xb')](_0x122950,_0x41591f)['then'](function(_0x14e277){logger[_0x392b('0xc')](_0x392b('0xd'),_0x7dc65,'request\x20sent');logger[_0x392b('0xe')](_0x392b('0xf'),_0x7dc65,_0x392b('0x10'),JSON[_0x392b('0x11')](_0x14e277));if(_0x14e277['error']){if(_0x14e277[_0x392b('0x12')][_0x392b('0x13')]===0x1f4){logger[_0x392b('0x12')](_0x392b('0xd'),_0x7dc65,_0x14e277[_0x392b('0x12')]['message']);return _0x3fd222(_0x14e277[_0x392b('0x12')]['message']);}logger['error']('FaxTransferReport,\x20%s,\x20%s',_0x7dc65,_0x14e277[_0x392b('0x12')][_0x392b('0x14')]);return _0x8e458d(_0x14e277[_0x392b('0x12')][_0x392b('0x14')]);}else{logger[_0x392b('0xc')](_0x392b('0xd'),_0x7dc65,'request\x20sent');_0x8e458d(_0x14e277[_0x392b('0x15')][_0x392b('0x14')]);}})[_0x392b('0x16')](function(_0x1a8242){logger[_0x392b('0x12')](_0x392b('0xd'),_0x7dc65,_0x1a8242);_0x3fd222(_0x1a8242);});});}
\ No newline at end of file
index a55c4ad..b550a72 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd3c6=['/describe','describe','/:id','show','post','create','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./faxTransferReport.controller','get','isAuthenticated','index'];(function(_0x25d6a3,_0x562002){var _0x5a8402=function(_0x372fe3){while(--_0x372fe3){_0x25d6a3['push'](_0x25d6a3['shift']());}};_0x5a8402(++_0x562002);}(_0xd3c6,0x1ac));var _0x6d3c=function(_0x244ec1,_0x5aefad){_0x244ec1=_0x244ec1-0x0;var _0x3c559e=_0xd3c6[_0x244ec1];return _0x3c559e;};'use strict';var multer=require(_0x6d3c('0x0'));var util=require(_0x6d3c('0x1'));var path=require('path');var timeout=require(_0x6d3c('0x2'));var express=require(_0x6d3c('0x3'));var router=express[_0x6d3c('0x4')]();var fs_extra=require(_0x6d3c('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x6d3c('0x6'));var config=require(_0x6d3c('0x7'));var controller=require(_0x6d3c('0x8'));router[_0x6d3c('0x9')]('/',auth[_0x6d3c('0xa')](),controller[_0x6d3c('0xb')]);router['get'](_0x6d3c('0xc'),auth['isAuthenticated'](),controller[_0x6d3c('0xd')]);router[_0x6d3c('0x9')](_0x6d3c('0xe'),auth['isAuthenticated'](),controller[_0x6d3c('0xf')]);router[_0x6d3c('0x10')]('/',auth[_0x6d3c('0xa')](),controller[_0x6d3c('0x11')]);router['put'](_0x6d3c('0xe'),auth['isAuthenticated'](),controller['update']);router['delete']('/:id',auth[_0x6d3c('0xa')](),controller[_0x6d3c('0x12')]);module[_0x6d3c('0x13')]=router;
\ No newline at end of file
+var _0xaae7=['../../components/interaction/service','../../config/environment','./faxTransferReport.controller','isAuthenticated','index','/describe','get','post','create','put','/:id','update','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x356b5b,_0x148ff3){var _0x26f888=function(_0x32f1c2){while(--_0x32f1c2){_0x356b5b['push'](_0x356b5b['shift']());}};_0x26f888(++_0x148ff3);}(_0xaae7,0x12c));var _0x7aae=function(_0x361e2e,_0x4a82f3){_0x361e2e=_0x361e2e-0x0;var _0x3bdac5=_0xaae7[_0x361e2e];return _0x3bdac5;};'use strict';var multer=require(_0x7aae('0x0'));var util=require(_0x7aae('0x1'));var path=require(_0x7aae('0x2'));var timeout=require(_0x7aae('0x3'));var express=require(_0x7aae('0x4'));var router=express[_0x7aae('0x5')]();var fs_extra=require(_0x7aae('0x6'));var auth=require(_0x7aae('0x7'));var interaction=require(_0x7aae('0x8'));var config=require(_0x7aae('0x9'));var controller=require(_0x7aae('0xa'));router['get']('/',auth[_0x7aae('0xb')](),controller[_0x7aae('0xc')]);router['get'](_0x7aae('0xd'),auth['isAuthenticated'](),controller['describe']);router[_0x7aae('0xe')]('/:id',auth[_0x7aae('0xb')](),controller['show']);router[_0x7aae('0xf')]('/',auth[_0x7aae('0xb')](),controller[_0x7aae('0x10')]);router[_0x7aae('0x11')](_0x7aae('0x12'),auth[_0x7aae('0xb')](),controller[_0x7aae('0x13')]);router[_0x7aae('0x14')]('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0x7aae('0x15')]=router;
\ No newline at end of file
index be46b20..42eed36 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x17ea=['exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDeskAccount.controller','get','isAuthenticated','/:id','show','/:id/configurations','/:id/fields','getFields','create','post','put','update','delete','destroy'];(function(_0x29f63a,_0x485ade){var _0x5b9b15=function(_0x516922){while(--_0x516922){_0x29f63a['push'](_0x29f63a['shift']());}};_0x5b9b15(++_0x485ade);}(_0x17ea,0x169));var _0xa17e=function(_0x112df6,_0x558a8b){_0x112df6=_0x112df6-0x0;var _0x88f50b=_0x17ea[_0x112df6];return _0x88f50b;};'use strict';var multer=require(_0xa17e('0x0'));var util=require(_0xa17e('0x1'));var path=require('path');var timeout=require(_0xa17e('0x2'));var express=require(_0xa17e('0x3'));var router=express[_0xa17e('0x4')]();var fs_extra=require(_0xa17e('0x5'));var auth=require(_0xa17e('0x6'));var interaction=require(_0xa17e('0x7'));var config=require(_0xa17e('0x8'));var controller=require(_0xa17e('0x9'));router[_0xa17e('0xa')]('/',auth[_0xa17e('0xb')](),controller['index']);router[_0xa17e('0xa')](_0xa17e('0xc'),auth[_0xa17e('0xb')](),controller[_0xa17e('0xd')]);router['get'](_0xa17e('0xe'),auth[_0xa17e('0xb')](),controller['getConfigurations']);router[_0xa17e('0xa')](_0xa17e('0xf'),auth[_0xa17e('0xb')](),controller[_0xa17e('0x10')]);router['post']('/',auth['isAuthenticated'](),controller[_0xa17e('0x11')]);router[_0xa17e('0x12')]('/:id/configurations',auth[_0xa17e('0xb')](),controller['addConfiguration']);router[_0xa17e('0x13')]('/:id',auth['isAuthenticated'](),controller[_0xa17e('0x14')]);router[_0xa17e('0x15')]('/:id',auth[_0xa17e('0xb')](),controller[_0xa17e('0x16')]);module[_0xa17e('0x17')]=router;
\ No newline at end of file
+var _0xe589=['show','/:id/configurations','getConfigurations','getFields','post','create','addConfiguration','put','update','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDeskAccount.controller','get','isAuthenticated','index','/:id'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe589,0x8e));var _0x9e58=function(_0x4e6ce4,_0x150e59){_0x4e6ce4=_0x4e6ce4-0x0;var _0x121167=_0xe589[_0x4e6ce4];return _0x121167;};'use strict';var multer=require('multer');var util=require(_0x9e58('0x0'));var path=require(_0x9e58('0x1'));var timeout=require(_0x9e58('0x2'));var express=require(_0x9e58('0x3'));var router=express[_0x9e58('0x4')]();var fs_extra=require(_0x9e58('0x5'));var auth=require(_0x9e58('0x6'));var interaction=require(_0x9e58('0x7'));var config=require(_0x9e58('0x8'));var controller=require(_0x9e58('0x9'));router[_0x9e58('0xa')]('/',auth[_0x9e58('0xb')](),controller[_0x9e58('0xc')]);router[_0x9e58('0xa')](_0x9e58('0xd'),auth[_0x9e58('0xb')](),controller[_0x9e58('0xe')]);router['get'](_0x9e58('0xf'),auth['isAuthenticated'](),controller[_0x9e58('0x10')]);router[_0x9e58('0xa')]('/:id/fields',auth['isAuthenticated'](),controller[_0x9e58('0x11')]);router[_0x9e58('0x12')]('/',auth[_0x9e58('0xb')](),controller[_0x9e58('0x13')]);router[_0x9e58('0x12')](_0x9e58('0xf'),auth[_0x9e58('0xb')](),controller[_0x9e58('0x14')]);router[_0x9e58('0x15')](_0x9e58('0xd'),auth[_0x9e58('0xb')](),controller[_0x9e58('0x16')]);router[_0x9e58('0x17')](_0x9e58('0xd'),auth[_0x9e58('0xb')](),controller[_0x9e58('0x18')]);module[_0x9e58('0x19')]=router;
\ No newline at end of file
index 39cfcdb..ad3131a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e0c=['exports','STRING','basic','ENUM','integrationTab','sequelize'];(function(_0x1aeb02,_0xe0b4f2){var _0xf830fb=function(_0xf51734){while(--_0xf51734){_0x1aeb02['push'](_0x1aeb02['shift']());}};_0xf830fb(++_0xe0b4f2);}(_0x7e0c,0x83));var _0xc7e0=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x7e0c[_0x14add3];return _0x4a174f;};'use strict';var Sequelize=require(_0xc7e0('0x0'));module[_0xc7e0('0x1')]={'name':{'type':Sequelize[_0xc7e0('0x2')]},'description':{'type':Sequelize[_0xc7e0('0x2')]},'username':{'type':Sequelize[_0xc7e0('0x2')]},'remoteUri':{'type':Sequelize['STRING']},'authType':{'type':Sequelize['ENUM'](_0xc7e0('0x3')),'defaultValue':_0xc7e0('0x3')},'password':{'type':Sequelize['STRING']},'consumerKey':{'type':Sequelize[_0xc7e0('0x2')]},'consumerSecret':{'type':Sequelize[_0xc7e0('0x2')]},'token':{'type':Sequelize['STRING']},'tokenSecret':{'type':Sequelize[_0xc7e0('0x2')]},'serverUrl':{'type':Sequelize[_0xc7e0('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0xc7e0('0x4')](_0xc7e0('0x5'),'newTab'),'defaultValue':_0xc7e0('0x5')}};
\ No newline at end of file
+var _0xa4f0=['sequelize','STRING','basic','ENUM','integrationTab','newTab'];(function(_0x47d338,_0x23eabf){var _0x5d3f11=function(_0x461462){while(--_0x461462){_0x47d338['push'](_0x47d338['shift']());}};_0x5d3f11(++_0x23eabf);}(_0xa4f0,0x96));var _0x0a4f=function(_0x135cd7,_0x6bdc01){_0x135cd7=_0x135cd7-0x0;var _0x300a1d=_0xa4f0[_0x135cd7];return _0x300a1d;};'use strict';var Sequelize=require(_0x0a4f('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0x0a4f('0x1')]},'authType':{'type':Sequelize['ENUM'](_0x0a4f('0x2')),'defaultValue':_0x0a4f('0x2')},'password':{'type':Sequelize[_0x0a4f('0x1')]},'consumerKey':{'type':Sequelize[_0x0a4f('0x1')]},'consumerSecret':{'type':Sequelize['STRING']},'token':{'type':Sequelize[_0x0a4f('0x1')]},'tokenSecret':{'type':Sequelize[_0x0a4f('0x1')]},'serverUrl':{'type':Sequelize[_0x0a4f('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x0a4f('0x3')](_0x0a4f('0x4'),_0x0a4f('0x5')),'defaultValue':_0x0a4f('0x4')}};
\ No newline at end of file
index f4ac3e0..1edc3d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe63b=['bluebird','mustache','path','sox','to-csv','fs-extra','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','offset','limit','undefined','count','set','Content-Range','json','reject','save','then','error','stack','name','send','index','DeskAccount','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','order','sort','where','pick','filter','VIRTUAL','options','includeAll','include','findAll','rows','show','merge','create','body','catch','find','destroy','params','getConfigurations','findOne','DeskConfiguration','map','hasOwnProperty','addConfiguration','AccountId','getSubjects','Descriptions','Subjects','getFields','priority','remoteUri','authType','username','password','consumerKey','consumerSecret','token','substring','%s/custom_fields','basic','headers','Authorization','format','Basic\x20%s','toString','base64','concat','active','label','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','test','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment'];(function(_0x4bf7f4,_0x292c2a){var _0x1bfd0d=function(_0xe8ca03){while(--_0xe8ca03){_0x4bf7f4['push'](_0x4bf7f4['shift']());}};_0x1bfd0d(++_0x292c2a);}(_0xe63b,0x14d));var _0xbe63=function(_0x4ed4d2,_0x47acf7){_0x4ed4d2=_0x4ed4d2-0x0;var _0x15ae2e=_0xe63b[_0x4ed4d2];return _0x15ae2e;};'use strict';var emlformat=require(_0xbe63('0x0'));var rimraf=require(_0xbe63('0x1'));var zipdir=require(_0xbe63('0x2'));var jsonpatch=require(_0xbe63('0x3'));var rp=require(_0xbe63('0x4'));var moment=require(_0xbe63('0x5'));var BPromise=require(_0xbe63('0x6'));var Mustache=require(_0xbe63('0x7'));var util=require('util');var path=require(_0xbe63('0x8'));var sox=require(_0xbe63('0x9'));var csv=require(_0xbe63('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xbe63('0xb'));var _=require('lodash');var squel=require(_0xbe63('0xc'));var crypto=require(_0xbe63('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xbe63('0xe'));var toCsv=require('to-csv');var querystring=require(_0xbe63('0xf'));var Papa=require(_0xbe63('0x10'));var Redis=require(_0xbe63('0x11'));var authService=require(_0xbe63('0x12'));var qs=require(_0xbe63('0x13'));var as=require(_0xbe63('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xbe63('0x15'))('api');var utils=require(_0xbe63('0x16'));var config=require(_0xbe63('0x17'));var licenseUtil=require(_0xbe63('0x18'));var db=require(_0xbe63('0x19'))['db'];var integrations=require(_0xbe63('0x1a'));function respondWithStatusCode(_0xf68bdc,_0xe9c4c){_0xe9c4c=_0xe9c4c||0xcc;return function(_0x55ab18){if(_0x55ab18){return _0xf68bdc[_0xbe63('0x1b')](_0xe9c4c);}return _0xf68bdc[_0xbe63('0x1c')](_0xe9c4c)[_0xbe63('0x1d')]();};}function respondWithResult(_0x458c5f,_0x20c8e0){_0x20c8e0=_0x20c8e0||0xc8;return function(_0x43d628){if(_0x43d628){return _0x458c5f['status'](_0x20c8e0)['json'](_0x43d628);}};}function respondWithFilteredResult(_0xab642b,_0x4c5f03){return function(_0x12b7f1){if(_0x12b7f1){var _0x13d007=typeof _0x4c5f03[_0xbe63('0x1e')]==='undefined'&&typeof _0x4c5f03[_0xbe63('0x1f')]===_0xbe63('0x20');var _0x5aff36=_0x12b7f1['count'];var _0x2e2167=_0x13d007?0x0:_0x4c5f03[_0xbe63('0x1e')];var _0x253a04=_0x13d007?_0x12b7f1[_0xbe63('0x21')]:_0x4c5f03[_0xbe63('0x1e')]+_0x4c5f03[_0xbe63('0x1f')];var _0x35cedc;if(_0x253a04>=_0x5aff36){_0x253a04=_0x5aff36;_0x35cedc=0xc8;}else{_0x35cedc=0xce;}_0xab642b[_0xbe63('0x1c')](_0x35cedc);return _0xab642b[_0xbe63('0x22')](_0xbe63('0x23'),_0x2e2167+'-'+_0x253a04+'/'+_0x5aff36)[_0xbe63('0x24')](_0x12b7f1);}return null;};}function patchUpdates(_0x5450bb){return function(_0x48bae8){try{jsonpatch['apply'](_0x48bae8,_0x5450bb,!![]);}catch(_0x2a1c41){return BPromise[_0xbe63('0x25')](_0x2a1c41);}return _0x48bae8[_0xbe63('0x26')]();};}function saveUpdates(_0x1fdd52,_0x160fff){return function(_0x1f2275){if(_0x1f2275){return _0x1f2275['update'](_0x1fdd52)[_0xbe63('0x27')](function(_0x5643bf){return _0x5643bf;});}return null;};}function removeEntity(_0x32f2b6,_0x1ce117){return function(_0x1df3f4){if(_0x1df3f4){return _0x1df3f4['destroy']()['then'](function(){_0x32f2b6[_0xbe63('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x423b17,_0xfac7e4){return function(_0x168b7e){if(!_0x168b7e){_0x423b17[_0xbe63('0x1b')](0x194);}return _0x168b7e;};}function handleError(_0x27a09d,_0x318ee7){_0x318ee7=_0x318ee7||0x1f4;return function(_0x35ab62){logger[_0xbe63('0x28')](_0x35ab62[_0xbe63('0x29')]);if(_0x35ab62[_0xbe63('0x2a')]){delete _0x35ab62[_0xbe63('0x2a')];}_0x27a09d[_0xbe63('0x1c')](_0x318ee7)[_0xbe63('0x2b')](_0x35ab62);};}exports[_0xbe63('0x2c')]=function(_0x409555,_0x2740bb){var _0x1fc765={},_0x1a783f={},_0x27192f={'count':0x0,'rows':[]};var _0x4ee2f3=_['map'](db[_0xbe63('0x2d')][_0xbe63('0x2e')],function(_0x355729){return{'name':_0x355729[_0xbe63('0x2f')],'type':_0x355729[_0xbe63('0x30')][_0xbe63('0x31')]};});_0x1a783f[_0xbe63('0x32')]=_['map'](_0x4ee2f3,_0xbe63('0x2a'));_0x1a783f[_0xbe63('0x33')]=_[_0xbe63('0x34')](_0x409555['query']);_0x1a783f[_0xbe63('0x35')]=_[_0xbe63('0x36')](_0x1a783f['model'],_0x1a783f[_0xbe63('0x33')]);_0x1fc765[_0xbe63('0x37')]=_[_0xbe63('0x36')](_0x1a783f['model'],qs[_0xbe63('0x38')](_0x409555[_0xbe63('0x33')][_0xbe63('0x38')]));_0x1fc765['attributes']=_0x1fc765[_0xbe63('0x37')][_0xbe63('0x39')]?_0x1fc765[_0xbe63('0x37')]:_0x1a783f[_0xbe63('0x32')];if(!_0x409555[_0xbe63('0x33')]['hasOwnProperty']('nolimit')){_0x1fc765[_0xbe63('0x1f')]=qs[_0xbe63('0x1f')](_0x409555[_0xbe63('0x33')][_0xbe63('0x1f')]);_0x1fc765[_0xbe63('0x1e')]=qs['offset'](_0x409555[_0xbe63('0x33')][_0xbe63('0x1e')]);}_0x1fc765[_0xbe63('0x3a')]=qs[_0xbe63('0x3b')](_0x409555[_0xbe63('0x33')][_0xbe63('0x3b')]);_0x1fc765[_0xbe63('0x3c')]=qs[_0xbe63('0x35')](_[_0xbe63('0x3d')](_0x409555['query'],_0x1a783f[_0xbe63('0x35')]),_0x4ee2f3);if(_0x409555[_0xbe63('0x33')][_0xbe63('0x3e')]){_0x1fc765[_0xbe63('0x3c')]=_['merge'](_0x1fc765['where'],{'$or':_['map'](_0x4ee2f3,function(_0x2b65c9){if(_0x2b65c9[_0xbe63('0x30')]!==_0xbe63('0x3f')){var _0x4d93e5={};_0x4d93e5[_0x2b65c9[_0xbe63('0x2a')]]={'$like':'%'+_0x409555[_0xbe63('0x33')][_0xbe63('0x3e')]+'%'};return _0x4d93e5;}})});}_0x1fc765=_['merge']({},_0x1fc765,_0x409555[_0xbe63('0x40')]);var _0x2e1a94={'where':_0x1fc765[_0xbe63('0x3c')]};return db[_0xbe63('0x2d')][_0xbe63('0x21')](_0x2e1a94)[_0xbe63('0x27')](function(_0x15e3ce){_0x27192f[_0xbe63('0x21')]=_0x15e3ce;if(_0x409555[_0xbe63('0x33')][_0xbe63('0x41')]){_0x1fc765[_0xbe63('0x42')]=[{'all':!![]}];}return db[_0xbe63('0x2d')][_0xbe63('0x43')](_0x1fc765);})[_0xbe63('0x27')](function(_0x16cab3){_0x27192f[_0xbe63('0x44')]=_0x16cab3;return _0x27192f;})['then'](respondWithFilteredResult(_0x2740bb,_0x1fc765))['catch'](handleError(_0x2740bb,null));};exports[_0xbe63('0x45')]=function(_0x55fb93,_0x18892b){var _0x49fe4f={'raw':![],'where':{'id':_0x55fb93['params']['id']}},_0x31416b={};_0x31416b[_0xbe63('0x32')]=_[_0xbe63('0x34')](db[_0xbe63('0x2d')][_0xbe63('0x2e')]);_0x31416b[_0xbe63('0x33')]=_['keys'](_0x55fb93[_0xbe63('0x33')]);_0x31416b[_0xbe63('0x35')]=_[_0xbe63('0x36')](_0x31416b[_0xbe63('0x32')],_0x31416b[_0xbe63('0x33')]);_0x49fe4f[_0xbe63('0x37')]=_[_0xbe63('0x36')](_0x31416b[_0xbe63('0x32')],qs[_0xbe63('0x38')](_0x55fb93[_0xbe63('0x33')][_0xbe63('0x38')]));_0x49fe4f[_0xbe63('0x37')]=_0x49fe4f[_0xbe63('0x37')][_0xbe63('0x39')]?_0x49fe4f['attributes']:_0x31416b[_0xbe63('0x32')];if(_0x55fb93[_0xbe63('0x33')]['includeAll']){_0x49fe4f['include']=[{'all':!![]}];}_0x49fe4f=_[_0xbe63('0x46')]({},_0x49fe4f,_0x55fb93[_0xbe63('0x40')]);return db['DeskAccount']['find'](_0x49fe4f)[_0xbe63('0x27')](handleEntityNotFound(_0x18892b,null))['then'](respondWithResult(_0x18892b,null))['catch'](handleError(_0x18892b,null));};exports[_0xbe63('0x47')]=function(_0x374cae,_0x368879){return db[_0xbe63('0x2d')]['create'](_0x374cae[_0xbe63('0x48')],{})[_0xbe63('0x27')](respondWithResult(_0x368879,0xc9))[_0xbe63('0x49')](handleError(_0x368879,null));};exports['update']=function(_0x15ec9f,_0x4b1c81){if(_0x15ec9f[_0xbe63('0x48')]['id']){delete _0x15ec9f[_0xbe63('0x48')]['id'];}return db[_0xbe63('0x2d')][_0xbe63('0x4a')]({'where':{'id':_0x15ec9f['params']['id']}})[_0xbe63('0x27')](handleEntityNotFound(_0x4b1c81,null))[_0xbe63('0x27')](saveUpdates(_0x15ec9f['body'],null))[_0xbe63('0x27')](respondWithResult(_0x4b1c81,null))[_0xbe63('0x49')](handleError(_0x4b1c81,null));};exports[_0xbe63('0x4b')]=function(_0xc8a1cf,_0x569cda){return db[_0xbe63('0x2d')][_0xbe63('0x4a')]({'where':{'id':_0xc8a1cf[_0xbe63('0x4c')]['id']}})[_0xbe63('0x27')](handleEntityNotFound(_0x569cda,null))[_0xbe63('0x27')](removeEntity(_0x569cda,null))[_0xbe63('0x49')](handleError(_0x569cda,null));};exports[_0xbe63('0x4d')]=function(_0x7cd5a6,_0x158291,_0x150ac8){var _0x51b222={};var _0x896092={};var _0x44ce19;var _0x47b9d4;return db[_0xbe63('0x2d')][_0xbe63('0x4e')]({'where':{'id':_0x7cd5a6['params']['id']}})[_0xbe63('0x27')](handleEntityNotFound(_0x158291,null))[_0xbe63('0x27')](function(_0xb38d8d){if(_0xb38d8d){_0x44ce19=_0xb38d8d;_0x896092[_0xbe63('0x32')]=_['keys'](db[_0xbe63('0x4f')][_0xbe63('0x2e')]);_0x896092['query']=_[_0xbe63('0x34')](_0x7cd5a6[_0xbe63('0x33')]);_0x896092[_0xbe63('0x35')]=_[_0xbe63('0x36')](_0x896092[_0xbe63('0x32')],_0x896092[_0xbe63('0x33')]);_0x51b222[_0xbe63('0x37')]=_[_0xbe63('0x36')](_0x896092[_0xbe63('0x32')],qs['fields'](_0x7cd5a6[_0xbe63('0x33')]['fields']));_0x51b222[_0xbe63('0x37')]=_0x51b222['attributes']['length']?_0x51b222[_0xbe63('0x37')]:_0x896092[_0xbe63('0x32')];_0x51b222['order']=qs[_0xbe63('0x3b')](_0x7cd5a6[_0xbe63('0x33')]['sort']);_0x51b222[_0xbe63('0x3c')]=qs[_0xbe63('0x35')](_['pick'](_0x7cd5a6[_0xbe63('0x33')],_0x896092[_0xbe63('0x35')]));if(_0x7cd5a6['query']['filter']){_0x51b222[_0xbe63('0x3c')]=_[_0xbe63('0x46')](_0x51b222[_0xbe63('0x3c')],{'$or':_[_0xbe63('0x50')](_0x51b222[_0xbe63('0x37')],function(_0xc3e176){var _0x128f28={};_0x128f28[_0xc3e176]={'$like':'%'+_0x7cd5a6[_0xbe63('0x33')][_0xbe63('0x3e')]+'%'};return _0x128f28;})});}_0x51b222=_[_0xbe63('0x46')]({},_0x51b222,_0x7cd5a6[_0xbe63('0x40')]);return _0x44ce19[_0xbe63('0x4d')](_0x51b222);}})['then'](function(_0x540487){if(_0x540487){_0x47b9d4=_0x540487[_0xbe63('0x39')];if(!_0x7cd5a6[_0xbe63('0x33')][_0xbe63('0x51')]('nolimit')){_0x51b222[_0xbe63('0x1f')]=qs[_0xbe63('0x1f')](_0x7cd5a6[_0xbe63('0x33')][_0xbe63('0x1f')]);_0x51b222[_0xbe63('0x1e')]=qs[_0xbe63('0x1e')](_0x7cd5a6['query'][_0xbe63('0x1e')]);}return _0x44ce19[_0xbe63('0x4d')](_0x51b222);}})[_0xbe63('0x27')](function(_0x3add67){if(_0x3add67){return _0x3add67?{'count':_0x47b9d4,'rows':_0x3add67}:null;}})[_0xbe63('0x27')](respondWithResult(_0x158291,null))[_0xbe63('0x49')](handleError(_0x158291,null));};exports[_0xbe63('0x52')]=function(_0x2de72f,_0x1003db,_0x2d94f7){if(_0x2de72f[_0xbe63('0x48')]['id']){delete _0x2de72f[_0xbe63('0x48')]['id'];}return db[_0xbe63('0x2d')][_0xbe63('0x4e')]({'where':{'id':_0x2de72f[_0xbe63('0x4c')]['id']}})[_0xbe63('0x27')](handleEntityNotFound(_0x1003db,null))[_0xbe63('0x27')](function(_0x4d4c6f){if(_0x4d4c6f){_0x2de72f['body'][_0xbe63('0x53')]=_0x4d4c6f['id'];_0x2de72f['body']['Subjects']=integrations[_0xbe63('0x54')](_0x2de72f['body']['channel'],_0x2de72f[_0xbe63('0x48')]['type']);_0x2de72f[_0xbe63('0x48')][_0xbe63('0x55')]=integrations['getDescriptions'](_0x2de72f[_0xbe63('0x48')]['channel'],_0x2de72f[_0xbe63('0x48')]['type']);return db['DeskConfiguration'][_0xbe63('0x47')](_0x2de72f[_0xbe63('0x48')],{'include':[{'model':db['DeskField'],'as':_0xbe63('0x56')},{'model':db['DeskField'],'as':'Descriptions'}]});}return null;})[_0xbe63('0x27')](respondWithResult(_0x1003db,null))[_0xbe63('0x49')](handleError(_0x1003db,null));};exports[_0xbe63('0x57')]=function(_0x8466c5,_0x169cbc,_0x13d073){var _0x437aca=[{'name':_0xbe63('0x58'),'label':_0xbe63('0x58'),'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 _0x168701='';return db[_0xbe63('0x2d')][_0xbe63('0x4e')]({'where':{'id':_0x8466c5[_0xbe63('0x4c')]['id']},'attributes':['id',_0xbe63('0x59'),_0xbe63('0x5a'),_0xbe63('0x5b'),_0xbe63('0x5c'),_0xbe63('0x5d'),_0xbe63('0x5e'),_0xbe63('0x5f'),'tokenSecret']})[_0xbe63('0x27')](handleEntityNotFound(_0x169cbc,null))[_0xbe63('0x27')](function(_0x11aec9){if(_0x11aec9){_0x168701=_0x11aec9[_0xbe63('0x59')];var _0x1e3295=_0x168701['slice'](-0x1);if(_0x1e3295==='/'){_0x168701=_0x168701[_0xbe63('0x60')](0x0,_0x168701['lastIndexOf'](_0x1e3295));}var _0x1bf3c5={'method':'GET','uri':util['format'](_0xbe63('0x61'),_0x168701),'headers':{'Content-Type':'application/json','Accept':'application/json'},'json':!![]};if(_0x11aec9[_0xbe63('0x5a')]===_0xbe63('0x62')){_0x1bf3c5[_0xbe63('0x63')][_0xbe63('0x64')]=util[_0xbe63('0x65')](_0xbe63('0x66'),new Buffer(util[_0xbe63('0x65')]('%s:%s',_0x11aec9[_0xbe63('0x5b')],_0x11aec9[_0xbe63('0x5c')]))[_0xbe63('0x67')](_0xbe63('0x68')));}return rp(_0x1bf3c5)[_0xbe63('0x27')](function(_0x8e82a3){return _0x437aca[_0xbe63('0x69')](_[_0xbe63('0x50')](_0x8e82a3['_embedded']['entries'],function(_0x4e4d3a){return{'id':_0x4e4d3a[_0xbe63('0x2a')],'name':_0x4e4d3a[_0xbe63('0x2a')],'type':_0x4e4d3a[_0xbe63('0x30')],'active':_0x4e4d3a[_0xbe63('0x6a')],'label':_0x4e4d3a[_0xbe63('0x6b')],'custom':!![]};}));});}})[_0xbe63('0x27')](function(_0x9adfe8){return{'count':_0x9adfe8[_0xbe63('0x39')],'rows':_0x9adfe8};})[_0xbe63('0x27')](respondWithResult(_0x169cbc,null))[_0xbe63('0x49')](function(_0x2c02da){var _0xc74934=_0x8466c5[_0xbe63('0x33')]['test']?0x1f4:_0x2c02da[_0xbe63('0x6c')]||0x1f4;logger[_0xbe63('0x28')](_0xbe63('0x6d'),_0xbe63('0x57'),_0xc74934,JSON[_0xbe63('0x6e')](_0x2c02da));delete _0x2c02da[_0xbe63('0x2a')];if(_0xc74934===0x191){_0xc74934=0x190;}_0x169cbc['status'](_0xc74934)[_0xbe63('0x2b')](_0x8466c5[_0xbe63('0x33')][_0xbe63('0x6f')]?{'message':_0xbe63('0x70'),'statusCode':_0x2c02da['statusCode']}:_0x2c02da);});};
\ No newline at end of file
+var _0xa6c9=['../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','json','undefined','count','offset','set','apply','reject','save','update','then','destroy','end','error','name','index','map','DeskAccount','rawAttributes','fieldName','type','key','query','filters','model','intersection','fields','attributes','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','merge','options','catch','show','params','keys','includeAll','include','find','create','body','getConfigurations','findOne','DeskConfiguration','addConfiguration','AccountId','getSubjects','channel','Descriptions','Subjects','DeskField','getFields','priority','remoteUri','authType','username','password','token','tokenSecret','slice','substring','lastIndexOf','GET','format','%s/custom_fields','application/json','basic','headers','Authorization','toString','base64','_embedded','entries','active','label','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','send','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs'];(function(_0x222528,_0x34cdb2){var _0x3345f6=function(_0x548250){while(--_0x548250){_0x222528['push'](_0x222528['shift']());}};_0x3345f6(++_0x34cdb2);}(_0xa6c9,0xd6));var _0x9a6c=function(_0x1e3f27,_0x2d3302){_0x1e3f27=_0x1e3f27-0x0;var _0x59406e=_0xa6c9[_0x1e3f27];return _0x59406e;};'use strict';var emlformat=require(_0x9a6c('0x0'));var rimraf=require(_0x9a6c('0x1'));var zipdir=require(_0x9a6c('0x2'));var jsonpatch=require(_0x9a6c('0x3'));var rp=require(_0x9a6c('0x4'));var moment=require(_0x9a6c('0x5'));var BPromise=require(_0x9a6c('0x6'));var Mustache=require(_0x9a6c('0x7'));var util=require(_0x9a6c('0x8'));var path=require('path');var sox=require(_0x9a6c('0x9'));var csv=require(_0x9a6c('0xa'));var ejs=require(_0x9a6c('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x9a6c('0xc'));var crypto=require(_0x9a6c('0xd'));var jsforce=require(_0x9a6c('0xe'));var deskjs=require(_0x9a6c('0xf'));var toCsv=require(_0x9a6c('0xa'));var querystring=require(_0x9a6c('0x10'));var Papa=require(_0x9a6c('0x11'));var Redis=require(_0x9a6c('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x9a6c('0x13'));var as=require(_0x9a6c('0x14'));var hardwareService=require(_0x9a6c('0x15'));var logger=require(_0x9a6c('0x16'))(_0x9a6c('0x17'));var utils=require('../../config/utils');var config=require(_0x9a6c('0x18'));var licenseUtil=require(_0x9a6c('0x19'));var db=require(_0x9a6c('0x1a'))['db'];var integrations=require(_0x9a6c('0x1b'));function respondWithStatusCode(_0x5210f2,_0xa1738c){_0xa1738c=_0xa1738c||0xcc;return function(_0x32262a){if(_0x32262a){return _0x5210f2[_0x9a6c('0x1c')](_0xa1738c);}return _0x5210f2[_0x9a6c('0x1d')](_0xa1738c)['end']();};}function respondWithResult(_0x1c0ac4,_0x3af717){_0x3af717=_0x3af717||0xc8;return function(_0x394b5b){if(_0x394b5b){return _0x1c0ac4[_0x9a6c('0x1d')](_0x3af717)[_0x9a6c('0x1e')](_0x394b5b);}};}function respondWithFilteredResult(_0x12a10f,_0x33ec43){return function(_0x139a38){if(_0x139a38){var _0x205a3a=typeof _0x33ec43['offset']===_0x9a6c('0x1f')&&typeof _0x33ec43['limit']===_0x9a6c('0x1f');var _0x5846be=_0x139a38[_0x9a6c('0x20')];var _0x2961ab=_0x205a3a?0x0:_0x33ec43[_0x9a6c('0x21')];var _0x1307ed=_0x205a3a?_0x139a38[_0x9a6c('0x20')]:_0x33ec43[_0x9a6c('0x21')]+_0x33ec43['limit'];var _0x41d8c1;if(_0x1307ed>=_0x5846be){_0x1307ed=_0x5846be;_0x41d8c1=0xc8;}else{_0x41d8c1=0xce;}_0x12a10f[_0x9a6c('0x1d')](_0x41d8c1);return _0x12a10f[_0x9a6c('0x22')]('Content-Range',_0x2961ab+'-'+_0x1307ed+'/'+_0x5846be)[_0x9a6c('0x1e')](_0x139a38);}return null;};}function patchUpdates(_0x3ef4a6){return function(_0x326dab){try{jsonpatch[_0x9a6c('0x23')](_0x326dab,_0x3ef4a6,!![]);}catch(_0xd16a6){return BPromise[_0x9a6c('0x24')](_0xd16a6);}return _0x326dab[_0x9a6c('0x25')]();};}function saveUpdates(_0x420a3a,_0x1b6654){return function(_0x391fcf){if(_0x391fcf){return _0x391fcf[_0x9a6c('0x26')](_0x420a3a)[_0x9a6c('0x27')](function(_0x2ee827){return _0x2ee827;});}return null;};}function removeEntity(_0x21950f,_0x2b0bc6){return function(_0x58718e){if(_0x58718e){return _0x58718e[_0x9a6c('0x28')]()[_0x9a6c('0x27')](function(){_0x21950f[_0x9a6c('0x1d')](0xcc)[_0x9a6c('0x29')]();});}};}function handleEntityNotFound(_0x1d6b42,_0xab48a8){return function(_0x401881){if(!_0x401881){_0x1d6b42['sendStatus'](0x194);}return _0x401881;};}function handleError(_0x360ea0,_0x5eb3cb){_0x5eb3cb=_0x5eb3cb||0x1f4;return function(_0x1efe63){logger[_0x9a6c('0x2a')](_0x1efe63['stack']);if(_0x1efe63[_0x9a6c('0x2b')]){delete _0x1efe63[_0x9a6c('0x2b')];}_0x360ea0['status'](_0x5eb3cb)['send'](_0x1efe63);};}exports[_0x9a6c('0x2c')]=function(_0x52154a,_0x4923ec){var _0x54de45={},_0x571eeb={},_0xafab50={'count':0x0,'rows':[]};var _0xed0f8b=_[_0x9a6c('0x2d')](db[_0x9a6c('0x2e')][_0x9a6c('0x2f')],function(_0x8e41e5){return{'name':_0x8e41e5[_0x9a6c('0x30')],'type':_0x8e41e5[_0x9a6c('0x31')][_0x9a6c('0x32')]};});_0x571eeb['model']=_['map'](_0xed0f8b,_0x9a6c('0x2b'));_0x571eeb[_0x9a6c('0x33')]=_['keys'](_0x52154a[_0x9a6c('0x33')]);_0x571eeb[_0x9a6c('0x34')]=_['intersection'](_0x571eeb[_0x9a6c('0x35')],_0x571eeb[_0x9a6c('0x33')]);_0x54de45['attributes']=_[_0x9a6c('0x36')](_0x571eeb[_0x9a6c('0x35')],qs[_0x9a6c('0x37')](_0x52154a[_0x9a6c('0x33')][_0x9a6c('0x37')]));_0x54de45[_0x9a6c('0x38')]=_0x54de45[_0x9a6c('0x38')][_0x9a6c('0x39')]?_0x54de45[_0x9a6c('0x38')]:_0x571eeb['model'];if(!_0x52154a['query'][_0x9a6c('0x3a')](_0x9a6c('0x3b'))){_0x54de45[_0x9a6c('0x3c')]=qs['limit'](_0x52154a['query'][_0x9a6c('0x3c')]);_0x54de45[_0x9a6c('0x21')]=qs[_0x9a6c('0x21')](_0x52154a['query']['offset']);}_0x54de45[_0x9a6c('0x3d')]=qs[_0x9a6c('0x3e')](_0x52154a[_0x9a6c('0x33')][_0x9a6c('0x3e')]);_0x54de45[_0x9a6c('0x3f')]=qs[_0x9a6c('0x34')](_[_0x9a6c('0x40')](_0x52154a[_0x9a6c('0x33')],_0x571eeb[_0x9a6c('0x34')]),_0xed0f8b);if(_0x52154a[_0x9a6c('0x33')][_0x9a6c('0x41')]){_0x54de45[_0x9a6c('0x3f')]=_[_0x9a6c('0x42')](_0x54de45['where'],{'$or':_[_0x9a6c('0x2d')](_0xed0f8b,function(_0x4b96f4){if(_0x4b96f4[_0x9a6c('0x31')]!=='VIRTUAL'){var _0x3552dd={};_0x3552dd[_0x4b96f4[_0x9a6c('0x2b')]]={'$like':'%'+_0x52154a[_0x9a6c('0x33')]['filter']+'%'};return _0x3552dd;}})});}_0x54de45=_[_0x9a6c('0x42')]({},_0x54de45,_0x52154a[_0x9a6c('0x43')]);var _0x1aa511={'where':_0x54de45['where']};return db[_0x9a6c('0x2e')][_0x9a6c('0x20')](_0x1aa511)[_0x9a6c('0x27')](function(_0x413981){_0xafab50[_0x9a6c('0x20')]=_0x413981;if(_0x52154a[_0x9a6c('0x33')]['includeAll']){_0x54de45['include']=[{'all':!![]}];}return db['DeskAccount']['findAll'](_0x54de45);})['then'](function(_0x4a6fce){_0xafab50['rows']=_0x4a6fce;return _0xafab50;})[_0x9a6c('0x27')](respondWithFilteredResult(_0x4923ec,_0x54de45))[_0x9a6c('0x44')](handleError(_0x4923ec,null));};exports[_0x9a6c('0x45')]=function(_0x1ccc2d,_0x5f22f6){var _0x4778a5={'raw':![],'where':{'id':_0x1ccc2d[_0x9a6c('0x46')]['id']}},_0xd75c55={};_0xd75c55['model']=_[_0x9a6c('0x47')](db[_0x9a6c('0x2e')][_0x9a6c('0x2f')]);_0xd75c55[_0x9a6c('0x33')]=_[_0x9a6c('0x47')](_0x1ccc2d[_0x9a6c('0x33')]);_0xd75c55[_0x9a6c('0x34')]=_['intersection'](_0xd75c55[_0x9a6c('0x35')],_0xd75c55['query']);_0x4778a5[_0x9a6c('0x38')]=_['intersection'](_0xd75c55[_0x9a6c('0x35')],qs[_0x9a6c('0x37')](_0x1ccc2d[_0x9a6c('0x33')][_0x9a6c('0x37')]));_0x4778a5[_0x9a6c('0x38')]=_0x4778a5[_0x9a6c('0x38')][_0x9a6c('0x39')]?_0x4778a5[_0x9a6c('0x38')]:_0xd75c55[_0x9a6c('0x35')];if(_0x1ccc2d[_0x9a6c('0x33')][_0x9a6c('0x48')]){_0x4778a5[_0x9a6c('0x49')]=[{'all':!![]}];}_0x4778a5=_[_0x9a6c('0x42')]({},_0x4778a5,_0x1ccc2d[_0x9a6c('0x43')]);return db[_0x9a6c('0x2e')][_0x9a6c('0x4a')](_0x4778a5)[_0x9a6c('0x27')](handleEntityNotFound(_0x5f22f6,null))[_0x9a6c('0x27')](respondWithResult(_0x5f22f6,null))[_0x9a6c('0x44')](handleError(_0x5f22f6,null));};exports[_0x9a6c('0x4b')]=function(_0xbfb036,_0x1b4d84){return db[_0x9a6c('0x2e')][_0x9a6c('0x4b')](_0xbfb036[_0x9a6c('0x4c')],{})[_0x9a6c('0x27')](respondWithResult(_0x1b4d84,0xc9))[_0x9a6c('0x44')](handleError(_0x1b4d84,null));};exports[_0x9a6c('0x26')]=function(_0x4f549b,_0x3b0eed){if(_0x4f549b[_0x9a6c('0x4c')]['id']){delete _0x4f549b[_0x9a6c('0x4c')]['id'];}return db[_0x9a6c('0x2e')][_0x9a6c('0x4a')]({'where':{'id':_0x4f549b[_0x9a6c('0x46')]['id']}})[_0x9a6c('0x27')](handleEntityNotFound(_0x3b0eed,null))[_0x9a6c('0x27')](saveUpdates(_0x4f549b[_0x9a6c('0x4c')],null))[_0x9a6c('0x27')](respondWithResult(_0x3b0eed,null))[_0x9a6c('0x44')](handleError(_0x3b0eed,null));};exports[_0x9a6c('0x28')]=function(_0x24fc1b,_0x3ac2c6){return db['DeskAccount']['find']({'where':{'id':_0x24fc1b[_0x9a6c('0x46')]['id']}})[_0x9a6c('0x27')](handleEntityNotFound(_0x3ac2c6,null))[_0x9a6c('0x27')](removeEntity(_0x3ac2c6,null))[_0x9a6c('0x44')](handleError(_0x3ac2c6,null));};exports[_0x9a6c('0x4d')]=function(_0x4b1761,_0x175c86,_0x5275d6){var _0x524c15={};var _0x54a726={};var _0x2258f5;var _0x51840b;return db['DeskAccount'][_0x9a6c('0x4e')]({'where':{'id':_0x4b1761[_0x9a6c('0x46')]['id']}})[_0x9a6c('0x27')](handleEntityNotFound(_0x175c86,null))[_0x9a6c('0x27')](function(_0x5a5327){if(_0x5a5327){_0x2258f5=_0x5a5327;_0x54a726[_0x9a6c('0x35')]=_['keys'](db[_0x9a6c('0x4f')][_0x9a6c('0x2f')]);_0x54a726[_0x9a6c('0x33')]=_['keys'](_0x4b1761['query']);_0x54a726[_0x9a6c('0x34')]=_[_0x9a6c('0x36')](_0x54a726['model'],_0x54a726[_0x9a6c('0x33')]);_0x524c15[_0x9a6c('0x38')]=_[_0x9a6c('0x36')](_0x54a726[_0x9a6c('0x35')],qs['fields'](_0x4b1761['query'][_0x9a6c('0x37')]));_0x524c15[_0x9a6c('0x38')]=_0x524c15[_0x9a6c('0x38')][_0x9a6c('0x39')]?_0x524c15[_0x9a6c('0x38')]:_0x54a726[_0x9a6c('0x35')];_0x524c15['order']=qs['sort'](_0x4b1761[_0x9a6c('0x33')][_0x9a6c('0x3e')]);_0x524c15[_0x9a6c('0x3f')]=qs[_0x9a6c('0x34')](_['pick'](_0x4b1761['query'],_0x54a726[_0x9a6c('0x34')]));if(_0x4b1761[_0x9a6c('0x33')][_0x9a6c('0x41')]){_0x524c15['where']=_[_0x9a6c('0x42')](_0x524c15['where'],{'$or':_['map'](_0x524c15['attributes'],function(_0x137eb8){var _0x7e461b={};_0x7e461b[_0x137eb8]={'$like':'%'+_0x4b1761['query'][_0x9a6c('0x41')]+'%'};return _0x7e461b;})});}_0x524c15=_[_0x9a6c('0x42')]({},_0x524c15,_0x4b1761[_0x9a6c('0x43')]);return _0x2258f5[_0x9a6c('0x4d')](_0x524c15);}})[_0x9a6c('0x27')](function(_0xa75278){if(_0xa75278){_0x51840b=_0xa75278[_0x9a6c('0x39')];if(!_0x4b1761[_0x9a6c('0x33')]['hasOwnProperty'](_0x9a6c('0x3b'))){_0x524c15[_0x9a6c('0x3c')]=qs[_0x9a6c('0x3c')](_0x4b1761[_0x9a6c('0x33')][_0x9a6c('0x3c')]);_0x524c15[_0x9a6c('0x21')]=qs[_0x9a6c('0x21')](_0x4b1761[_0x9a6c('0x33')][_0x9a6c('0x21')]);}return _0x2258f5['getConfigurations'](_0x524c15);}})[_0x9a6c('0x27')](function(_0x47c1a0){if(_0x47c1a0){return _0x47c1a0?{'count':_0x51840b,'rows':_0x47c1a0}:null;}})[_0x9a6c('0x27')](respondWithResult(_0x175c86,null))[_0x9a6c('0x44')](handleError(_0x175c86,null));};exports[_0x9a6c('0x50')]=function(_0x154793,_0x3cd3af,_0x421852){if(_0x154793[_0x9a6c('0x4c')]['id']){delete _0x154793['body']['id'];}return db[_0x9a6c('0x2e')][_0x9a6c('0x4e')]({'where':{'id':_0x154793['params']['id']}})[_0x9a6c('0x27')](handleEntityNotFound(_0x3cd3af,null))[_0x9a6c('0x27')](function(_0x5ca549){if(_0x5ca549){_0x154793['body'][_0x9a6c('0x51')]=_0x5ca549['id'];_0x154793[_0x9a6c('0x4c')]['Subjects']=integrations[_0x9a6c('0x52')](_0x154793[_0x9a6c('0x4c')][_0x9a6c('0x53')],_0x154793[_0x9a6c('0x4c')]['type']);_0x154793[_0x9a6c('0x4c')][_0x9a6c('0x54')]=integrations['getDescriptions'](_0x154793[_0x9a6c('0x4c')][_0x9a6c('0x53')],_0x154793[_0x9a6c('0x4c')][_0x9a6c('0x31')]);return db[_0x9a6c('0x4f')][_0x9a6c('0x4b')](_0x154793[_0x9a6c('0x4c')],{'include':[{'model':db['DeskField'],'as':_0x9a6c('0x55')},{'model':db[_0x9a6c('0x56')],'as':_0x9a6c('0x54')}]});}return null;})['then'](respondWithResult(_0x3cd3af,null))[_0x9a6c('0x44')](handleError(_0x3cd3af,null));};exports[_0x9a6c('0x57')]=function(_0x52a5bb,_0x177c79,_0x21120e){var _0x31c98e=[{'name':_0x9a6c('0x58'),'label':_0x9a6c('0x58'),'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 _0x510418='';return db['DeskAccount'][_0x9a6c('0x4e')]({'where':{'id':_0x52a5bb[_0x9a6c('0x46')]['id']},'attributes':['id',_0x9a6c('0x59'),_0x9a6c('0x5a'),_0x9a6c('0x5b'),_0x9a6c('0x5c'),'consumerKey','consumerSecret',_0x9a6c('0x5d'),_0x9a6c('0x5e')]})['then'](handleEntityNotFound(_0x177c79,null))[_0x9a6c('0x27')](function(_0x23fa15){if(_0x23fa15){_0x510418=_0x23fa15[_0x9a6c('0x59')];var _0x4d2b6a=_0x510418[_0x9a6c('0x5f')](-0x1);if(_0x4d2b6a==='/'){_0x510418=_0x510418[_0x9a6c('0x60')](0x0,_0x510418[_0x9a6c('0x61')](_0x4d2b6a));}var _0x348eb6={'method':_0x9a6c('0x62'),'uri':util[_0x9a6c('0x63')](_0x9a6c('0x64'),_0x510418),'headers':{'Content-Type':_0x9a6c('0x65'),'Accept':'application/json'},'json':!![]};if(_0x23fa15[_0x9a6c('0x5a')]===_0x9a6c('0x66')){_0x348eb6[_0x9a6c('0x67')][_0x9a6c('0x68')]=util[_0x9a6c('0x63')]('Basic\x20%s',new Buffer(util[_0x9a6c('0x63')]('%s:%s',_0x23fa15[_0x9a6c('0x5b')],_0x23fa15['password']))[_0x9a6c('0x69')](_0x9a6c('0x6a')));}return rp(_0x348eb6)[_0x9a6c('0x27')](function(_0x2536a1){return _0x31c98e['concat'](_[_0x9a6c('0x2d')](_0x2536a1[_0x9a6c('0x6b')][_0x9a6c('0x6c')],function(_0xf07796){return{'id':_0xf07796[_0x9a6c('0x2b')],'name':_0xf07796['name'],'type':_0xf07796[_0x9a6c('0x31')],'active':_0xf07796[_0x9a6c('0x6d')],'label':_0xf07796[_0x9a6c('0x6e')],'custom':!![]};}));});}})[_0x9a6c('0x27')](function(_0x515449){return{'count':_0x515449[_0x9a6c('0x39')],'rows':_0x515449};})[_0x9a6c('0x27')](respondWithResult(_0x177c79,null))[_0x9a6c('0x44')](function(_0x15448d){var _0x1a5729=_0x52a5bb[_0x9a6c('0x33')][_0x9a6c('0x6f')]?0x1f4:_0x15448d[_0x9a6c('0x70')]||0x1f4;logger[_0x9a6c('0x2a')](_0x9a6c('0x71'),_0x9a6c('0x57'),_0x1a5729,JSON[_0x9a6c('0x72')](_0x15448d));delete _0x15448d[_0x9a6c('0x2b')];if(_0x1a5729===0x191){_0x1a5729=0x190;}_0x177c79[_0x9a6c('0x1d')](_0x1a5729)[_0x9a6c('0x73')](_0x52a5bb[_0x9a6c('0x33')][_0x9a6c('0x6f')]?{'message':_0x9a6c('0x74'),'statusCode':_0x15448d[_0x9a6c('0x70')]}:_0x15448d);});};
\ No newline at end of file
index 811d941..abc52ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x36a1=['lodash','../../config/logger','api','request-promise','path','rimraf','../../config/environment','./intDeskAccount.attributes','../../components/integrations/configuration','exports','define','DeskAccount','int_desk_accounts'];(function(_0x52d2b4,_0x1d67fa){var _0x149ff5=function(_0x2f24f1){while(--_0x2f24f1){_0x52d2b4['push'](_0x52d2b4['shift']());}};_0x149ff5(++_0x1d67fa);}(_0x36a1,0x75));var _0x136a=function(_0x39dc1e,_0x2b2859){_0x39dc1e=_0x39dc1e-0x0;var _0x2e4f03=_0x36a1[_0x39dc1e];return _0x2e4f03;};'use strict';var _=require(_0x136a('0x0'));var util=require('util');var logger=require(_0x136a('0x1'))(_0x136a('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x136a('0x3'));var fs=require('fs');var path=require(_0x136a('0x4'));var rimraf=require(_0x136a('0x5'));var config=require(_0x136a('0x6'));var attributes=require(_0x136a('0x7'));var integrations=require(_0x136a('0x8'));module[_0x136a('0x9')]=function(_0x280c86,_0x312017){return _0x280c86[_0x136a('0xa')](_0x136a('0xb'),attributes,{'tableName':_0x136a('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8a2c=['./intDeskAccount.attributes','../../components/integrations/configuration','exports','define','int_desk_accounts','lodash','util','../../config/logger','moment','request-promise','path','../../config/environment'];(function(_0x2822e1,_0x2c640c){var _0x4fbea9=function(_0x1d4596){while(--_0x1d4596){_0x2822e1['push'](_0x2822e1['shift']());}};_0x4fbea9(++_0x2c640c);}(_0x8a2c,0x10d));var _0xc8a2=function(_0x565c49,_0x54acd0){_0x565c49=_0x565c49-0x0;var _0x20ca34=_0x8a2c[_0x565c49];return _0x20ca34;};'use strict';var _=require(_0xc8a2('0x0'));var util=require(_0xc8a2('0x1'));var logger=require(_0xc8a2('0x2'))('api');var moment=require(_0xc8a2('0x3'));var BPromise=require('bluebird');var rp=require(_0xc8a2('0x4'));var fs=require('fs');var path=require(_0xc8a2('0x5'));var rimraf=require('rimraf');var config=require(_0xc8a2('0x6'));var attributes=require(_0xc8a2('0x7'));var integrations=require(_0xc8a2('0x8'));module[_0xc8a2('0x9')]=function(_0x2a0902,_0x3ae009){return _0x2a0902[_0xc8a2('0xa')]('DeskAccount',attributes,{'tableName':_0xc8a2('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d5deb74..558ab14 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc711=['map','include','model','debug','ShowDeskAccount','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','DeskAccount,\x20%s,\x20%s','DeskAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','GetDeskAccount','DeskAccount','findAll','options','raw','where','attributes'];(function(_0x3e08a3,_0x378ba7){var _0x402083=function(_0x46bb8e){while(--_0x46bb8e){_0x3e08a3['push'](_0x3e08a3['shift']());}};_0x402083(++_0x378ba7);}(_0xc711,0x163));var _0x1c71=function(_0x3e0b8f,_0x1cddeb){_0x3e0b8f=_0x3e0b8f-0x0;var _0x22f742=_0xc711[_0x3e0b8f];return _0x22f742;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x1c71('0x0'));var BPromise=require(_0x1c71('0x1'));var rs=require(_0x1c71('0x2'));var fs=require('fs');var Redis=require(_0x1c71('0x3'));var db=require(_0x1c71('0x4'))['db'];var utils=require(_0x1c71('0x5'));var logger=require(_0x1c71('0x6'))(_0x1c71('0x7'));var config=require(_0x1c71('0x8'));var jayson=require(_0x1c71('0x9'));var client=jayson[_0x1c71('0xa')][_0x1c71('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xf6a212,_0x3f51ea,_0x2c9ae0){return new BPromise(function(_0x4fe02d,_0x43aafd){return client[_0x1c71('0xc')](_0xf6a212,_0x2c9ae0)[_0x1c71('0xd')](function(_0x2287e7){logger[_0x1c71('0xe')](_0x1c71('0xf'),_0x3f51ea,'request\x20sent');logger['debug'](_0x1c71('0x10'),_0x3f51ea,_0x1c71('0x11'),JSON[_0x1c71('0x12')](_0x2287e7));if(_0x2287e7[_0x1c71('0x13')]){if(_0x2287e7['error'][_0x1c71('0x14')]===0x1f4){logger[_0x1c71('0x13')](_0x1c71('0xf'),_0x3f51ea,_0x2287e7[_0x1c71('0x13')]['message']);return _0x43aafd(_0x2287e7[_0x1c71('0x13')][_0x1c71('0x15')]);}logger[_0x1c71('0x13')](_0x1c71('0xf'),_0x3f51ea,_0x2287e7['error'][_0x1c71('0x15')]);return _0x4fe02d(_0x2287e7[_0x1c71('0x13')]['message']);}else{logger[_0x1c71('0xe')](_0x1c71('0xf'),_0x3f51ea,'request\x20sent');_0x4fe02d(_0x2287e7['result'][_0x1c71('0x15')]);}})[_0x1c71('0x16')](function(_0x18a799){logger[_0x1c71('0x13')](_0x1c71('0xf'),_0x3f51ea,_0x18a799);_0x43aafd(_0x18a799);});});}exports[_0x1c71('0x17')]=function(_0x1a576e){var _0x348c87=this;return new Promise(function(_0x1d4899,_0x150897){return db[_0x1c71('0x18')][_0x1c71('0x19')]({'raw':_0x1a576e[_0x1c71('0x1a')]?_0x1a576e[_0x1c71('0x1a')][_0x1c71('0x1b')]===undefined?!![]:![]:!![],'where':_0x1a576e[_0x1c71('0x1a')]?_0x1a576e['options'][_0x1c71('0x1c')]||null:null,'attributes':_0x1a576e['options']?_0x1a576e['options'][_0x1c71('0x1d')]||null:null,'limit':_0x1a576e['options']?_0x1a576e[_0x1c71('0x1a')]['limit']||null:null,'include':_0x1a576e['options']?_0x1a576e[_0x1c71('0x1a')]['include']?_[_0x1c71('0x1e')](_0x1a576e[_0x1c71('0x1a')][_0x1c71('0x1f')],function(_0x49cd4b){return{'model':db[_0x49cd4b['model']],'as':_0x49cd4b['as'],'attributes':_0x49cd4b[_0x1c71('0x1d')],'include':_0x49cd4b[_0x1c71('0x1f')]?_[_0x1c71('0x1e')](_0x49cd4b[_0x1c71('0x1f')],function(_0x3f759c){return{'model':db[_0x3f759c[_0x1c71('0x20')]],'as':_0x3f759c['as'],'attributes':_0x3f759c[_0x1c71('0x1d')],'include':_0x3f759c[_0x1c71('0x1f')]?_[_0x1c71('0x1e')](_0x3f759c['include'],function(_0x15c829){return{'model':db[_0x15c829[_0x1c71('0x20')]],'as':_0x15c829['as'],'attributes':_0x15c829['attributes']};}):[]};}):[]};}):[]:[]})[_0x1c71('0xd')](function(_0x4f2c9d){logger[_0x1c71('0xe')](_0x1c71('0x17'),_0x1a576e);logger[_0x1c71('0x21')]('GetDeskAccount',_0x1a576e,JSON[_0x1c71('0x12')](_0x4f2c9d));_0x1d4899(_0x4f2c9d);})['catch'](function(_0x473b60){logger[_0x1c71('0x13')](_0x1c71('0x17'),_0x473b60[_0x1c71('0x15')],_0x1a576e);_0x150897(_0x348c87[_0x1c71('0x13')](0x1f4,_0x473b60['message']));});});};exports['ShowDeskAccount']=function(_0x51d71c){var _0x5eb931=this;return new Promise(function(_0x1fdad9,_0xc52cc0){return db[_0x1c71('0x18')]['find']({'raw':_0x51d71c[_0x1c71('0x1a')]?_0x51d71c[_0x1c71('0x1a')][_0x1c71('0x1b')]===undefined?!![]:![]:!![],'where':_0x51d71c[_0x1c71('0x1a')]?_0x51d71c[_0x1c71('0x1a')]['where']||null:null,'attributes':_0x51d71c[_0x1c71('0x1a')]?_0x51d71c['options'][_0x1c71('0x1d')]||null:null,'include':_0x51d71c[_0x1c71('0x1a')]?_0x51d71c[_0x1c71('0x1a')][_0x1c71('0x1f')]?_[_0x1c71('0x1e')](_0x51d71c['options']['include'],function(_0x1d1a62){return{'model':db[_0x1d1a62[_0x1c71('0x20')]],'as':_0x1d1a62['as'],'attributes':_0x1d1a62[_0x1c71('0x1d')],'include':_0x1d1a62[_0x1c71('0x1f')]?_[_0x1c71('0x1e')](_0x1d1a62[_0x1c71('0x1f')],function(_0x45448f){return{'model':db[_0x45448f[_0x1c71('0x20')]],'as':_0x45448f['as'],'attributes':_0x45448f[_0x1c71('0x1d')],'include':_0x45448f[_0x1c71('0x1f')]?_[_0x1c71('0x1e')](_0x45448f[_0x1c71('0x1f')],function(_0x1a842a){return{'model':db[_0x1a842a[_0x1c71('0x20')]],'as':_0x1a842a['as'],'attributes':_0x1a842a[_0x1c71('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x21fb95){logger[_0x1c71('0xe')](_0x1c71('0x22'),_0x51d71c);logger[_0x1c71('0x21')](_0x1c71('0x22'),_0x51d71c,JSON['stringify'](_0x21fb95));_0x1fdad9(_0x21fb95);})[_0x1c71('0x16')](function(_0x28a5d6){logger[_0x1c71('0x13')]('ShowDeskAccount',_0x28a5d6[_0x1c71('0x15')],_0x51d71c);_0xc52cc0(_0x5eb931[_0x1c71('0x13')](0x1f4,_0x28a5d6['message']));});});};
\ No newline at end of file
+var _0x6244=['util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','DeskAccount,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch','options','raw','attributes','limit','include','map','model','GetDeskAccount','ShowDeskAccount','find','lodash'];(function(_0x85d355,_0x546c82){var _0x31057a=function(_0x5d5dbc){while(--_0x5d5dbc){_0x85d355['push'](_0x85d355['shift']());}};_0x31057a(++_0x546c82);}(_0x6244,0xe6));var _0x4624=function(_0x3aabbb,_0x41c2a7){_0x3aabbb=_0x3aabbb-0x0;var _0x43a21d=_0x6244[_0x3aabbb];return _0x43a21d;};'use strict';var _=require(_0x4624('0x0'));var util=require(_0x4624('0x1'));var moment=require(_0x4624('0x2'));var BPromise=require(_0x4624('0x3'));var rs=require(_0x4624('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x4624('0x5'));var logger=require(_0x4624('0x6'))(_0x4624('0x7'));var config=require('../../config/environment');var jayson=require(_0x4624('0x8'));var client=jayson[_0x4624('0x9')][_0x4624('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5e604a,_0x283600,_0x1cbba2){return new BPromise(function(_0x2d7a4d,_0x3766f4){return client[_0x4624('0xb')](_0x5e604a,_0x1cbba2)[_0x4624('0xc')](function(_0x40b453){logger[_0x4624('0xd')](_0x4624('0xe'),_0x283600,'request\x20sent');logger[_0x4624('0xf')]('DeskAccount,\x20%s,\x20%s,\x20%s',_0x283600,'request\x20sent',JSON[_0x4624('0x10')](_0x40b453));if(_0x40b453['error']){if(_0x40b453[_0x4624('0x11')][_0x4624('0x12')]===0x1f4){logger[_0x4624('0x11')](_0x4624('0xe'),_0x283600,_0x40b453[_0x4624('0x11')][_0x4624('0x13')]);return _0x3766f4(_0x40b453[_0x4624('0x11')][_0x4624('0x13')]);}logger[_0x4624('0x11')](_0x4624('0xe'),_0x283600,_0x40b453['error'][_0x4624('0x13')]);return _0x2d7a4d(_0x40b453['error'][_0x4624('0x13')]);}else{logger[_0x4624('0xd')](_0x4624('0xe'),_0x283600,_0x4624('0x14'));_0x2d7a4d(_0x40b453[_0x4624('0x15')][_0x4624('0x13')]);}})[_0x4624('0x16')](function(_0x5a6ee5){logger[_0x4624('0x11')]('DeskAccount,\x20%s,\x20%s',_0x283600,_0x5a6ee5);_0x3766f4(_0x5a6ee5);});});}exports['GetDeskAccount']=function(_0x2da8e8){var _0x1b6b43=this;return new Promise(function(_0x45744b,_0x4bc0e8){return db['DeskAccount']['findAll']({'raw':_0x2da8e8[_0x4624('0x17')]?_0x2da8e8[_0x4624('0x17')][_0x4624('0x18')]===undefined?!![]:![]:!![],'where':_0x2da8e8[_0x4624('0x17')]?_0x2da8e8[_0x4624('0x17')]['where']||null:null,'attributes':_0x2da8e8[_0x4624('0x17')]?_0x2da8e8[_0x4624('0x17')][_0x4624('0x19')]||null:null,'limit':_0x2da8e8[_0x4624('0x17')]?_0x2da8e8['options'][_0x4624('0x1a')]||null:null,'include':_0x2da8e8[_0x4624('0x17')]?_0x2da8e8['options'][_0x4624('0x1b')]?_[_0x4624('0x1c')](_0x2da8e8[_0x4624('0x17')][_0x4624('0x1b')],function(_0xad9894){return{'model':db[_0xad9894[_0x4624('0x1d')]],'as':_0xad9894['as'],'attributes':_0xad9894[_0x4624('0x19')],'include':_0xad9894[_0x4624('0x1b')]?_[_0x4624('0x1c')](_0xad9894[_0x4624('0x1b')],function(_0x8c88db){return{'model':db[_0x8c88db[_0x4624('0x1d')]],'as':_0x8c88db['as'],'attributes':_0x8c88db[_0x4624('0x19')],'include':_0x8c88db['include']?_[_0x4624('0x1c')](_0x8c88db[_0x4624('0x1b')],function(_0x2a8968){return{'model':db[_0x2a8968['model']],'as':_0x2a8968['as'],'attributes':_0x2a8968[_0x4624('0x19')]};}):[]};}):[]};}):[]:[]})[_0x4624('0xc')](function(_0x44c002){logger[_0x4624('0xd')](_0x4624('0x1e'),_0x2da8e8);logger[_0x4624('0xf')]('GetDeskAccount',_0x2da8e8,JSON[_0x4624('0x10')](_0x44c002));_0x45744b(_0x44c002);})[_0x4624('0x16')](function(_0x2e5dae){logger['error']('GetDeskAccount',_0x2e5dae[_0x4624('0x13')],_0x2da8e8);_0x4bc0e8(_0x1b6b43[_0x4624('0x11')](0x1f4,_0x2e5dae[_0x4624('0x13')]));});});};exports[_0x4624('0x1f')]=function(_0x7ae023){var _0xbaa2c5=this;return new Promise(function(_0x440fe3,_0x2a3fa1){return db['DeskAccount'][_0x4624('0x20')]({'raw':_0x7ae023[_0x4624('0x17')]?_0x7ae023['options']['raw']===undefined?!![]:![]:!![],'where':_0x7ae023['options']?_0x7ae023[_0x4624('0x17')]['where']||null:null,'attributes':_0x7ae023['options']?_0x7ae023['options'][_0x4624('0x19')]||null:null,'include':_0x7ae023[_0x4624('0x17')]?_0x7ae023[_0x4624('0x17')][_0x4624('0x1b')]?_['map'](_0x7ae023['options'][_0x4624('0x1b')],function(_0x457bd1){return{'model':db[_0x457bd1[_0x4624('0x1d')]],'as':_0x457bd1['as'],'attributes':_0x457bd1[_0x4624('0x19')],'include':_0x457bd1[_0x4624('0x1b')]?_[_0x4624('0x1c')](_0x457bd1[_0x4624('0x1b')],function(_0x2c45f3){return{'model':db[_0x2c45f3[_0x4624('0x1d')]],'as':_0x2c45f3['as'],'attributes':_0x2c45f3[_0x4624('0x19')],'include':_0x2c45f3[_0x4624('0x1b')]?_[_0x4624('0x1c')](_0x2c45f3[_0x4624('0x1b')],function(_0x564917){return{'model':db[_0x564917[_0x4624('0x1d')]],'as':_0x564917['as'],'attributes':_0x564917[_0x4624('0x19')]};}):[]};}):[]};}):[]:[]})[_0x4624('0xc')](function(_0x3d3085){logger[_0x4624('0xd')]('ShowDeskAccount',_0x7ae023);logger[_0x4624('0xf')](_0x4624('0x1f'),_0x7ae023,JSON[_0x4624('0x10')](_0x3d3085));_0x440fe3(_0x3d3085);})[_0x4624('0x16')](function(_0x4d528b){logger[_0x4624('0x11')]('ShowDeskAccount',_0x4d528b[_0x4624('0x13')],_0x7ae023);_0x2a3fa1(_0xbaa2c5[_0x4624('0x11')](0x1f4,_0x4d528b[_0x4624('0x13')]));});});};
\ No newline at end of file
index cb4e27b..28c9f30 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['/:id/subjects','getSubjects','getDescriptions','/:id/tags','getTags','post','create','setTags','put','update','delete','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intDeskConfiguration.controller','get','isAuthenticated','index','/:id','show','getFields'];(function(_0x31c65c,_0x14a757){var _0x5454c2=function(_0x2d4511){while(--_0x2d4511){_0x31c65c['push'](_0x31c65c['shift']());}};_0x5454c2(++_0x14a757);}(_0x9957,0x93));var _0x7995=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x9957[_0x501510];return _0x1e6ee5;};'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/fields',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x9')]('/:id/descriptions',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/tags',auth['isAuthenticated'](),controller[_0x7995('0x16')]);router[_0x7995('0x17')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x18')]);router[_0x7995('0x19')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller['destroy']);module[_0x7995('0x1a')]=router;
\ No newline at end of file
+var _0xedd9=['getTags','post','create','setTags','put','update','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intDeskConfiguration.controller','get','isAuthenticated','index','/:id','show','/:id/fields','getSubjects','/:id/descriptions','/:id/tags'];(function(_0x3b5ad6,_0x1d3b69){var _0x2412c3=function(_0xb927cb){while(--_0xb927cb){_0x3b5ad6['push'](_0x3b5ad6['shift']());}};_0x2412c3(++_0x1d3b69);}(_0xedd9,0xfc));var _0x9edd=function(_0x2bdd6f,_0x48ad7e){_0x2bdd6f=_0x2bdd6f-0x0;var _0x392992=_0xedd9[_0x2bdd6f];return _0x392992;};'use strict';var multer=require('multer');var util=require(_0x9edd('0x0'));var path=require(_0x9edd('0x1'));var timeout=require(_0x9edd('0x2'));var express=require(_0x9edd('0x3'));var router=express[_0x9edd('0x4')]();var fs_extra=require(_0x9edd('0x5'));var auth=require(_0x9edd('0x6'));var interaction=require(_0x9edd('0x7'));var config=require('../../config/environment');var controller=require(_0x9edd('0x8'));router[_0x9edd('0x9')]('/',auth[_0x9edd('0xa')](),controller[_0x9edd('0xb')]);router['get'](_0x9edd('0xc'),auth['isAuthenticated'](),controller[_0x9edd('0xd')]);router[_0x9edd('0x9')](_0x9edd('0xe'),auth[_0x9edd('0xa')](),controller['getFields']);router[_0x9edd('0x9')]('/:id/subjects',auth[_0x9edd('0xa')](),controller[_0x9edd('0xf')]);router['get'](_0x9edd('0x10'),auth[_0x9edd('0xa')](),controller['getDescriptions']);router[_0x9edd('0x9')](_0x9edd('0x11'),auth[_0x9edd('0xa')](),controller[_0x9edd('0x12')]);router[_0x9edd('0x13')]('/',auth[_0x9edd('0xa')](),controller[_0x9edd('0x14')]);router[_0x9edd('0x13')]('/:id/tags',auth[_0x9edd('0xa')](),controller[_0x9edd('0x15')]);router[_0x9edd('0x16')](_0x9edd('0xc'),auth[_0x9edd('0xa')](),controller[_0x9edd('0x17')]);router[_0x9edd('0x18')](_0x9edd('0xc'),auth['isAuthenticated'](),controller[_0x9edd('0x19')]);module[_0x9edd('0x1a')]=router;
\ No newline at end of file
index c1abb31..839b0e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d24=['sequelize','STRING'];(function(_0x5e6c69,_0x516119){var _0x142383=function(_0x455809){while(--_0x455809){_0x5e6c69['push'](_0x5e6c69['shift']());}};_0x142383(++_0x516119);}(_0x8d24,0xc8));var _0x48d2=function(_0x3bf1e0,_0x1580be){_0x3bf1e0=_0x3bf1e0-0x0;var _0x5a9ded=_0x8d24[_0x3bf1e0];return _0x5a9ded;};'use strict';var Sequelize=require(_0x48d2('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x48d2('0x1')]}};
\ No newline at end of file
+var _0x8392=['sequelize','exports','STRING'];(function(_0x59aa99,_0x1a9ddc){var _0x4c8709=function(_0x3940ef){while(--_0x3940ef){_0x59aa99['push'](_0x59aa99['shift']());}};_0x4c8709(++_0x1a9ddc);}(_0x8392,0x10b));var _0x2839=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x8392[_0x501510];return _0x1e6ee5;};'use strict';var Sequelize=require(_0x2839('0x0'));module[_0x2839('0x1')]={'name':{'type':Sequelize[_0x2839('0x2')]},'description':{'type':Sequelize[_0x2839('0x2')]}};
\ No newline at end of file
index f02368b..ae49784 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf9b=['getSubjects','DeskField','getDescriptions','getTags','Tag','setTags','ids','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','ejs','fs-extra','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','../../mysqldb','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','stack','name','send','index','map','DeskConfiguration','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','where','pick','filter','merge','VIRTUAL','options','includeAll','rows','catch','show','params','include','find','create','body','findOne','sort','getFields'];(function(_0x5f275,_0x561d6b){var _0x17cd29=function(_0x909af0){while(--_0x909af0){_0x5f275['push'](_0x5f275['shift']());}};_0x17cd29(++_0x561d6b);}(_0xbf9b,0x103));var _0xbbf9=function(_0x13e741,_0x5d3c24){_0x13e741=_0x13e741-0x0;var _0x3f8bb3=_0xbf9b[_0x13e741];return _0x3f8bb3;};'use strict';var emlformat=require(_0xbbf9('0x0'));var rimraf=require(_0xbbf9('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xbbf9('0x2'));var rp=require(_0xbbf9('0x3'));var moment=require('moment');var BPromise=require(_0xbbf9('0x4'));var Mustache=require(_0xbbf9('0x5'));var util=require(_0xbbf9('0x6'));var path=require(_0xbbf9('0x7'));var sox=require(_0xbbf9('0x8'));var csv=require('to-csv');var ejs=require(_0xbbf9('0x9'));var fs=require('fs');var fs_extra=require(_0xbbf9('0xa'));var _=require('lodash');var squel=require(_0xbbf9('0xb'));var crypto=require(_0xbbf9('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xbbf9('0xd'));var toCsv=require(_0xbbf9('0xe'));var querystring=require(_0xbbf9('0xf'));var Papa=require('papaparse');var Redis=require(_0xbbf9('0x10'));var authService=require(_0xbbf9('0x11'));var qs=require(_0xbbf9('0x12'));var as=require(_0xbbf9('0x13'));var hardwareService=require(_0xbbf9('0x14'));var logger=require(_0xbbf9('0x15'))(_0xbbf9('0x16'));var utils=require('../../config/utils');var config=require(_0xbbf9('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xbbf9('0x18'))['db'];function respondWithStatusCode(_0x41b384,_0x3c5a82){_0x3c5a82=_0x3c5a82||0xcc;return function(_0xe3d546){if(_0xe3d546){return _0x41b384['sendStatus'](_0x3c5a82);}return _0x41b384['status'](_0x3c5a82)['end']();};}function respondWithResult(_0x47cc92,_0x568b35){_0x568b35=_0x568b35||0xc8;return function(_0x44a388){if(_0x44a388){return _0x47cc92[_0xbbf9('0x19')](_0x568b35)[_0xbbf9('0x1a')](_0x44a388);}};}function respondWithFilteredResult(_0x31a80d,_0x1aee80){return function(_0x509bee){if(_0x509bee){var _0x5c1af1=typeof _0x1aee80[_0xbbf9('0x1b')]===_0xbbf9('0x1c')&&typeof _0x1aee80['limit']===_0xbbf9('0x1c');var _0x1b56ec=_0x509bee[_0xbbf9('0x1d')];var _0x9d7965=_0x5c1af1?0x0:_0x1aee80[_0xbbf9('0x1b')];var _0x1f7f51=_0x5c1af1?_0x509bee['count']:_0x1aee80[_0xbbf9('0x1b')]+_0x1aee80[_0xbbf9('0x1e')];var _0x57ceab;if(_0x1f7f51>=_0x1b56ec){_0x1f7f51=_0x1b56ec;_0x57ceab=0xc8;}else{_0x57ceab=0xce;}_0x31a80d[_0xbbf9('0x19')](_0x57ceab);return _0x31a80d[_0xbbf9('0x1f')](_0xbbf9('0x20'),_0x9d7965+'-'+_0x1f7f51+'/'+_0x1b56ec)[_0xbbf9('0x1a')](_0x509bee);}return null;};}function patchUpdates(_0x4bbbf4){return function(_0x2ba98b){try{jsonpatch[_0xbbf9('0x21')](_0x2ba98b,_0x4bbbf4,!![]);}catch(_0x4a5e81){return BPromise[_0xbbf9('0x22')](_0x4a5e81);}return _0x2ba98b[_0xbbf9('0x23')]();};}function saveUpdates(_0x37fdb4,_0x56f50e){return function(_0x4ed3a6){if(_0x4ed3a6){return _0x4ed3a6[_0xbbf9('0x24')](_0x37fdb4)[_0xbbf9('0x25')](function(_0x912c9f){return _0x912c9f;});}return null;};}function removeEntity(_0x1d4f26,_0x41e69a){return function(_0x2cb55b){if(_0x2cb55b){return _0x2cb55b[_0xbbf9('0x26')]()[_0xbbf9('0x25')](function(){_0x1d4f26[_0xbbf9('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4a9d20,_0x47967c){return function(_0x1f6359){if(!_0x1f6359){_0x4a9d20['sendStatus'](0x194);}return _0x1f6359;};}function handleError(_0x573057,_0xb90f00){_0xb90f00=_0xb90f00||0x1f4;return function(_0x3d200c){logger['error'](_0x3d200c[_0xbbf9('0x27')]);if(_0x3d200c['name']){delete _0x3d200c[_0xbbf9('0x28')];}_0x573057[_0xbbf9('0x19')](_0xb90f00)[_0xbbf9('0x29')](_0x3d200c);};}exports[_0xbbf9('0x2a')]=function(_0x1a0fd0,_0x59dad3){var _0x34db20={},_0x344927={},_0x443700={'count':0x0,'rows':[]};var _0x31b193=_[_0xbbf9('0x2b')](db[_0xbbf9('0x2c')][_0xbbf9('0x2d')],function(_0x4a0620){return{'name':_0x4a0620['fieldName'],'type':_0x4a0620[_0xbbf9('0x2e')][_0xbbf9('0x2f')]};});_0x344927[_0xbbf9('0x30')]=_['map'](_0x31b193,_0xbbf9('0x28'));_0x344927[_0xbbf9('0x31')]=_[_0xbbf9('0x32')](_0x1a0fd0[_0xbbf9('0x31')]);_0x344927[_0xbbf9('0x33')]=_[_0xbbf9('0x34')](_0x344927[_0xbbf9('0x30')],_0x344927[_0xbbf9('0x31')]);_0x34db20[_0xbbf9('0x35')]=_[_0xbbf9('0x34')](_0x344927[_0xbbf9('0x30')],qs[_0xbbf9('0x36')](_0x1a0fd0[_0xbbf9('0x31')]['fields']));_0x34db20[_0xbbf9('0x35')]=_0x34db20[_0xbbf9('0x35')][_0xbbf9('0x37')]?_0x34db20[_0xbbf9('0x35')]:_0x344927[_0xbbf9('0x30')];if(!_0x1a0fd0[_0xbbf9('0x31')][_0xbbf9('0x38')](_0xbbf9('0x39'))){_0x34db20[_0xbbf9('0x1e')]=qs[_0xbbf9('0x1e')](_0x1a0fd0[_0xbbf9('0x31')][_0xbbf9('0x1e')]);_0x34db20['offset']=qs['offset'](_0x1a0fd0[_0xbbf9('0x31')][_0xbbf9('0x1b')]);}_0x34db20[_0xbbf9('0x3a')]=qs['sort'](_0x1a0fd0['query']['sort']);_0x34db20[_0xbbf9('0x3b')]=qs[_0xbbf9('0x33')](_[_0xbbf9('0x3c')](_0x1a0fd0[_0xbbf9('0x31')],_0x344927[_0xbbf9('0x33')]),_0x31b193);if(_0x1a0fd0['query'][_0xbbf9('0x3d')]){_0x34db20['where']=_[_0xbbf9('0x3e')](_0x34db20[_0xbbf9('0x3b')],{'$or':_[_0xbbf9('0x2b')](_0x31b193,function(_0x1ed5f3){if(_0x1ed5f3[_0xbbf9('0x2e')]!==_0xbbf9('0x3f')){var _0x49df4a={};_0x49df4a[_0x1ed5f3[_0xbbf9('0x28')]]={'$like':'%'+_0x1a0fd0[_0xbbf9('0x31')]['filter']+'%'};return _0x49df4a;}})});}_0x34db20=_[_0xbbf9('0x3e')]({},_0x34db20,_0x1a0fd0[_0xbbf9('0x40')]);var _0x3d9d29={'where':_0x34db20[_0xbbf9('0x3b')]};return db[_0xbbf9('0x2c')][_0xbbf9('0x1d')](_0x3d9d29)['then'](function(_0x240bde){_0x443700['count']=_0x240bde;if(_0x1a0fd0[_0xbbf9('0x31')][_0xbbf9('0x41')]){_0x34db20['include']=[{'all':!![]}];}return db['DeskConfiguration']['findAll'](_0x34db20);})[_0xbbf9('0x25')](function(_0x177694){_0x443700[_0xbbf9('0x42')]=_0x177694;return _0x443700;})[_0xbbf9('0x25')](respondWithFilteredResult(_0x59dad3,_0x34db20))[_0xbbf9('0x43')](handleError(_0x59dad3,null));};exports[_0xbbf9('0x44')]=function(_0x36f9df,_0x5e4e30){var _0x5357e2={'raw':![],'where':{'id':_0x36f9df[_0xbbf9('0x45')]['id']}},_0x594139={};_0x594139[_0xbbf9('0x30')]=_['keys'](db['DeskConfiguration']['rawAttributes']);_0x594139[_0xbbf9('0x31')]=_['keys'](_0x36f9df[_0xbbf9('0x31')]);_0x594139[_0xbbf9('0x33')]=_[_0xbbf9('0x34')](_0x594139[_0xbbf9('0x30')],_0x594139['query']);_0x5357e2[_0xbbf9('0x35')]=_[_0xbbf9('0x34')](_0x594139['model'],qs[_0xbbf9('0x36')](_0x36f9df[_0xbbf9('0x31')]['fields']));_0x5357e2[_0xbbf9('0x35')]=_0x5357e2[_0xbbf9('0x35')]['length']?_0x5357e2[_0xbbf9('0x35')]:_0x594139[_0xbbf9('0x30')];if(_0x36f9df[_0xbbf9('0x31')]['includeAll']){_0x5357e2[_0xbbf9('0x46')]=[{'all':!![]}];}_0x5357e2=_[_0xbbf9('0x3e')]({},_0x5357e2,_0x36f9df[_0xbbf9('0x40')]);return db[_0xbbf9('0x2c')][_0xbbf9('0x47')](_0x5357e2)[_0xbbf9('0x25')](handleEntityNotFound(_0x5e4e30,null))[_0xbbf9('0x25')](respondWithResult(_0x5e4e30,null))[_0xbbf9('0x43')](handleError(_0x5e4e30,null));};exports[_0xbbf9('0x48')]=function(_0x17b5ed,_0x2f1cd7){return db['DeskConfiguration']['create'](_0x17b5ed['body'],{})[_0xbbf9('0x25')](respondWithResult(_0x2f1cd7,0xc9))[_0xbbf9('0x43')](handleError(_0x2f1cd7,null));};exports['update']=function(_0xfb96ca,_0x116ecf){if(_0xfb96ca['body']['id']){delete _0xfb96ca['body']['id'];}return db[_0xbbf9('0x2c')][_0xbbf9('0x47')]({'where':{'id':_0xfb96ca['params']['id']}})[_0xbbf9('0x25')](handleEntityNotFound(_0x116ecf,null))[_0xbbf9('0x25')](saveUpdates(_0xfb96ca[_0xbbf9('0x49')],null))[_0xbbf9('0x25')](respondWithResult(_0x116ecf,null))['catch'](handleError(_0x116ecf,null));};exports[_0xbbf9('0x26')]=function(_0x5a155b,_0x5877a7){return db['DeskConfiguration'][_0xbbf9('0x47')]({'where':{'id':_0x5a155b[_0xbbf9('0x45')]['id']}})['then'](handleEntityNotFound(_0x5877a7,null))[_0xbbf9('0x25')](removeEntity(_0x5877a7,null))['catch'](handleError(_0x5877a7,null));};exports['getFields']=function(_0x1b87db,_0x6c9f18,_0x411553){var _0x4b7e73={};var _0x3c3ccc={};var _0x449b29;var _0x329eda;return db['DeskConfiguration'][_0xbbf9('0x4a')]({'where':{'id':_0x1b87db[_0xbbf9('0x45')]['id']}})[_0xbbf9('0x25')](handleEntityNotFound(_0x6c9f18,null))[_0xbbf9('0x25')](function(_0x1490fe){if(_0x1490fe){_0x449b29=_0x1490fe;_0x3c3ccc[_0xbbf9('0x30')]=_[_0xbbf9('0x32')](db['DeskField'][_0xbbf9('0x2d')]);_0x3c3ccc[_0xbbf9('0x31')]=_[_0xbbf9('0x32')](_0x1b87db[_0xbbf9('0x31')]);_0x3c3ccc[_0xbbf9('0x33')]=_['intersection'](_0x3c3ccc[_0xbbf9('0x30')],_0x3c3ccc[_0xbbf9('0x31')]);_0x4b7e73[_0xbbf9('0x35')]=_[_0xbbf9('0x34')](_0x3c3ccc['model'],qs[_0xbbf9('0x36')](_0x1b87db[_0xbbf9('0x31')][_0xbbf9('0x36')]));_0x4b7e73[_0xbbf9('0x35')]=_0x4b7e73[_0xbbf9('0x35')][_0xbbf9('0x37')]?_0x4b7e73[_0xbbf9('0x35')]:_0x3c3ccc['model'];_0x4b7e73[_0xbbf9('0x3a')]=qs[_0xbbf9('0x4b')](_0x1b87db['query']['sort']);_0x4b7e73[_0xbbf9('0x3b')]=qs[_0xbbf9('0x33')](_[_0xbbf9('0x3c')](_0x1b87db[_0xbbf9('0x31')],_0x3c3ccc['filters']));if(_0x1b87db[_0xbbf9('0x31')][_0xbbf9('0x3d')]){_0x4b7e73[_0xbbf9('0x3b')]=_['merge'](_0x4b7e73[_0xbbf9('0x3b')],{'$or':_[_0xbbf9('0x2b')](_0x4b7e73[_0xbbf9('0x35')],function(_0x31e5b5){var _0x3513e7={};_0x3513e7[_0x31e5b5]={'$like':'%'+_0x1b87db['query'][_0xbbf9('0x3d')]+'%'};return _0x3513e7;})});}_0x4b7e73=_[_0xbbf9('0x3e')]({},_0x4b7e73,_0x1b87db[_0xbbf9('0x40')]);return _0x449b29[_0xbbf9('0x4c')](_0x4b7e73);}})[_0xbbf9('0x25')](function(_0x46eb4f){if(_0x46eb4f){_0x329eda=_0x46eb4f[_0xbbf9('0x37')];if(!_0x1b87db[_0xbbf9('0x31')][_0xbbf9('0x38')](_0xbbf9('0x39'))){_0x4b7e73[_0xbbf9('0x1e')]=qs[_0xbbf9('0x1e')](_0x1b87db['query']['limit']);_0x4b7e73[_0xbbf9('0x1b')]=qs[_0xbbf9('0x1b')](_0x1b87db[_0xbbf9('0x31')][_0xbbf9('0x1b')]);}return _0x449b29['getFields'](_0x4b7e73);}})[_0xbbf9('0x25')](function(_0x3c8f65){if(_0x3c8f65){return _0x3c8f65?{'count':_0x329eda,'rows':_0x3c8f65}:null;}})[_0xbbf9('0x25')](respondWithResult(_0x6c9f18,null))[_0xbbf9('0x43')](handleError(_0x6c9f18,null));};exports[_0xbbf9('0x4d')]=function(_0x1a6382,_0x49c9cf,_0x697b85){var _0x40f9cd={};var _0x407755={};var _0x3bb2b5;var _0x595708;return db[_0xbbf9('0x2c')]['findOne']({'where':{'id':_0x1a6382[_0xbbf9('0x45')]['id']}})[_0xbbf9('0x25')](handleEntityNotFound(_0x49c9cf,null))[_0xbbf9('0x25')](function(_0x4666c8){if(_0x4666c8){_0x3bb2b5=_0x4666c8;_0x407755[_0xbbf9('0x30')]=_[_0xbbf9('0x32')](db[_0xbbf9('0x4e')]['rawAttributes']);_0x407755[_0xbbf9('0x31')]=_[_0xbbf9('0x32')](_0x1a6382['query']);_0x407755[_0xbbf9('0x33')]=_[_0xbbf9('0x34')](_0x407755[_0xbbf9('0x30')],_0x407755['query']);_0x40f9cd[_0xbbf9('0x35')]=_[_0xbbf9('0x34')](_0x407755[_0xbbf9('0x30')],qs['fields'](_0x1a6382['query'][_0xbbf9('0x36')]));_0x40f9cd['attributes']=_0x40f9cd[_0xbbf9('0x35')][_0xbbf9('0x37')]?_0x40f9cd[_0xbbf9('0x35')]:_0x407755[_0xbbf9('0x30')];_0x40f9cd[_0xbbf9('0x3a')]=qs[_0xbbf9('0x4b')](_0x1a6382[_0xbbf9('0x31')]['sort']);_0x40f9cd[_0xbbf9('0x3b')]=qs[_0xbbf9('0x33')](_[_0xbbf9('0x3c')](_0x1a6382[_0xbbf9('0x31')],_0x407755[_0xbbf9('0x33')]));if(_0x1a6382[_0xbbf9('0x31')][_0xbbf9('0x3d')]){_0x40f9cd['where']=_[_0xbbf9('0x3e')](_0x40f9cd[_0xbbf9('0x3b')],{'$or':_[_0xbbf9('0x2b')](_0x40f9cd['attributes'],function(_0x513723){var _0x100aee={};_0x100aee[_0x513723]={'$like':'%'+_0x1a6382['query'][_0xbbf9('0x3d')]+'%'};return _0x100aee;})});}_0x40f9cd=_['merge']({},_0x40f9cd,_0x1a6382[_0xbbf9('0x40')]);return _0x3bb2b5[_0xbbf9('0x4d')](_0x40f9cd);}})[_0xbbf9('0x25')](function(_0x30e0fb){if(_0x30e0fb){_0x595708=_0x30e0fb[_0xbbf9('0x37')];if(!_0x1a6382[_0xbbf9('0x31')][_0xbbf9('0x38')](_0xbbf9('0x39'))){_0x40f9cd[_0xbbf9('0x1e')]=qs['limit'](_0x1a6382[_0xbbf9('0x31')][_0xbbf9('0x1e')]);_0x40f9cd[_0xbbf9('0x1b')]=qs['offset'](_0x1a6382[_0xbbf9('0x31')][_0xbbf9('0x1b')]);}return _0x3bb2b5['getSubjects'](_0x40f9cd);}})[_0xbbf9('0x25')](function(_0xacbb94){if(_0xacbb94){return _0xacbb94?{'count':_0x595708,'rows':_0xacbb94}:null;}})[_0xbbf9('0x25')](respondWithResult(_0x49c9cf,null))[_0xbbf9('0x43')](handleError(_0x49c9cf,null));};exports['getDescriptions']=function(_0x3ea126,_0x2b2f56,_0x3a0369){var _0x58de5d={};var _0x579549={};var _0x257fac;var _0x266c25;return db['DeskConfiguration'][_0xbbf9('0x4a')]({'where':{'id':_0x3ea126[_0xbbf9('0x45')]['id']}})[_0xbbf9('0x25')](handleEntityNotFound(_0x2b2f56,null))['then'](function(_0x223d6d){if(_0x223d6d){_0x257fac=_0x223d6d;_0x579549[_0xbbf9('0x30')]=_[_0xbbf9('0x32')](db['DeskField'][_0xbbf9('0x2d')]);_0x579549[_0xbbf9('0x31')]=_['keys'](_0x3ea126[_0xbbf9('0x31')]);_0x579549[_0xbbf9('0x33')]=_[_0xbbf9('0x34')](_0x579549[_0xbbf9('0x30')],_0x579549[_0xbbf9('0x31')]);_0x58de5d['attributes']=_[_0xbbf9('0x34')](_0x579549[_0xbbf9('0x30')],qs['fields'](_0x3ea126['query'][_0xbbf9('0x36')]));_0x58de5d['attributes']=_0x58de5d[_0xbbf9('0x35')]['length']?_0x58de5d[_0xbbf9('0x35')]:_0x579549[_0xbbf9('0x30')];_0x58de5d[_0xbbf9('0x3a')]=qs[_0xbbf9('0x4b')](_0x3ea126[_0xbbf9('0x31')][_0xbbf9('0x4b')]);_0x58de5d[_0xbbf9('0x3b')]=qs[_0xbbf9('0x33')](_[_0xbbf9('0x3c')](_0x3ea126['query'],_0x579549[_0xbbf9('0x33')]));if(_0x3ea126[_0xbbf9('0x31')][_0xbbf9('0x3d')]){_0x58de5d['where']=_[_0xbbf9('0x3e')](_0x58de5d[_0xbbf9('0x3b')],{'$or':_['map'](_0x58de5d['attributes'],function(_0x5b8f9e){var _0x4e16f2={};_0x4e16f2[_0x5b8f9e]={'$like':'%'+_0x3ea126[_0xbbf9('0x31')][_0xbbf9('0x3d')]+'%'};return _0x4e16f2;})});}_0x58de5d=_[_0xbbf9('0x3e')]({},_0x58de5d,_0x3ea126[_0xbbf9('0x40')]);return _0x257fac[_0xbbf9('0x4f')](_0x58de5d);}})[_0xbbf9('0x25')](function(_0x2ad1c2){if(_0x2ad1c2){_0x266c25=_0x2ad1c2['length'];if(!_0x3ea126[_0xbbf9('0x31')][_0xbbf9('0x38')](_0xbbf9('0x39'))){_0x58de5d[_0xbbf9('0x1e')]=qs['limit'](_0x3ea126['query'][_0xbbf9('0x1e')]);_0x58de5d[_0xbbf9('0x1b')]=qs['offset'](_0x3ea126[_0xbbf9('0x31')][_0xbbf9('0x1b')]);}return _0x257fac['getDescriptions'](_0x58de5d);}})[_0xbbf9('0x25')](function(_0x102ec1){if(_0x102ec1){return _0x102ec1?{'count':_0x266c25,'rows':_0x102ec1}:null;}})['then'](respondWithResult(_0x2b2f56,null))[_0xbbf9('0x43')](handleError(_0x2b2f56,null));};exports[_0xbbf9('0x50')]=function(_0x41446a,_0x1c693c,_0x32c682){var _0x3162ce={};var _0x308836={};var _0x393e32;var _0x33868f;return db[_0xbbf9('0x2c')][_0xbbf9('0x4a')]({'where':{'id':_0x41446a['params']['id']}})[_0xbbf9('0x25')](handleEntityNotFound(_0x1c693c,null))[_0xbbf9('0x25')](function(_0x55ded1){if(_0x55ded1){_0x393e32=_0x55ded1;_0x308836[_0xbbf9('0x30')]=_['keys'](db[_0xbbf9('0x51')][_0xbbf9('0x2d')]);_0x308836[_0xbbf9('0x31')]=_[_0xbbf9('0x32')](_0x41446a[_0xbbf9('0x31')]);_0x308836[_0xbbf9('0x33')]=_[_0xbbf9('0x34')](_0x308836[_0xbbf9('0x30')],_0x308836[_0xbbf9('0x31')]);_0x3162ce[_0xbbf9('0x35')]=_['intersection'](_0x308836['model'],qs[_0xbbf9('0x36')](_0x41446a['query'][_0xbbf9('0x36')]));_0x3162ce[_0xbbf9('0x35')]=_0x3162ce[_0xbbf9('0x35')][_0xbbf9('0x37')]?_0x3162ce[_0xbbf9('0x35')]:_0x308836[_0xbbf9('0x30')];_0x3162ce[_0xbbf9('0x3a')]=qs[_0xbbf9('0x4b')](_0x41446a['query']['sort']);_0x3162ce['where']=qs['filters'](_['pick'](_0x41446a[_0xbbf9('0x31')],_0x308836[_0xbbf9('0x33')]));if(_0x41446a[_0xbbf9('0x31')][_0xbbf9('0x3d')]){_0x3162ce[_0xbbf9('0x3b')]=_['merge'](_0x3162ce[_0xbbf9('0x3b')],{'$or':_[_0xbbf9('0x2b')](_0x3162ce[_0xbbf9('0x35')],function(_0x5f0db0){var _0x5bfbaa={};_0x5bfbaa[_0x5f0db0]={'$like':'%'+_0x41446a[_0xbbf9('0x31')][_0xbbf9('0x3d')]+'%'};return _0x5bfbaa;})});}_0x3162ce=_[_0xbbf9('0x3e')]({},_0x3162ce,_0x41446a[_0xbbf9('0x40')]);return _0x393e32['getTags'](_0x3162ce);}})[_0xbbf9('0x25')](function(_0x1e9924){if(_0x1e9924){_0x33868f=_0x1e9924['length'];if(!_0x41446a[_0xbbf9('0x31')][_0xbbf9('0x38')](_0xbbf9('0x39'))){_0x3162ce['limit']=qs[_0xbbf9('0x1e')](_0x41446a[_0xbbf9('0x31')][_0xbbf9('0x1e')]);_0x3162ce[_0xbbf9('0x1b')]=qs[_0xbbf9('0x1b')](_0x41446a['query']['offset']);}return _0x393e32[_0xbbf9('0x50')](_0x3162ce);}})['then'](function(_0x4f8af4){if(_0x4f8af4){return _0x4f8af4?{'count':_0x33868f,'rows':_0x4f8af4}:null;}})[_0xbbf9('0x25')](respondWithResult(_0x1c693c,null))['catch'](handleError(_0x1c693c,null));};exports[_0xbbf9('0x52')]=function(_0x5079a3,_0x543d11,_0x441994){if(_0x5079a3[_0xbbf9('0x49')]['id']){delete _0x5079a3['body']['id'];}return db[_0xbbf9('0x2c')][_0xbbf9('0x4a')]({'where':{'id':_0x5079a3[_0xbbf9('0x45')]['id']}})[_0xbbf9('0x25')](handleEntityNotFound(_0x543d11,null))[_0xbbf9('0x25')](function(_0x2a6757){if(_0x2a6757){return _0x2a6757['setTags'](_0x5079a3[_0xbbf9('0x49')][_0xbbf9('0x53')]||[]);}return null;})['then'](respondWithResult(_0x543d11,null))[_0xbbf9('0x43')](handleError(_0x543d11,null));};
\ No newline at end of file
+var _0xd768=['send','index','map','rawAttributes','type','key','model','query','keys','filters','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','filter','where','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','intersection','DeskConfiguration','create','body','find','getFields','findOne','DeskField','length','getSubjects','getDescriptions','getTags','Tag','setTags','eml-format','rimraf','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/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','update','then','destroy','error','stack','name'];(function(_0x1e8c25,_0x43a2ea){var _0x3d001f=function(_0x11a2fb){while(--_0x11a2fb){_0x1e8c25['push'](_0x1e8c25['shift']());}};_0x3d001f(++_0x43a2ea);}(_0xd768,0x187));var _0x8d76=function(_0x40d5cc,_0xf9d2c7){_0x40d5cc=_0x40d5cc-0x0;var _0x6950af=_0xd768[_0x40d5cc];return _0x6950af;};'use strict';var emlformat=require(_0x8d76('0x0'));var rimraf=require(_0x8d76('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x8d76('0x2'));var rp=require(_0x8d76('0x3'));var moment=require(_0x8d76('0x4'));var BPromise=require(_0x8d76('0x5'));var Mustache=require(_0x8d76('0x6'));var util=require(_0x8d76('0x7'));var path=require(_0x8d76('0x8'));var sox=require(_0x8d76('0x9'));var csv=require(_0x8d76('0xa'));var ejs=require(_0x8d76('0xb'));var fs=require('fs');var fs_extra=require(_0x8d76('0xc'));var _=require('lodash');var squel=require(_0x8d76('0xd'));var crypto=require(_0x8d76('0xe'));var jsforce=require(_0x8d76('0xf'));var deskjs=require(_0x8d76('0x10'));var toCsv=require(_0x8d76('0xa'));var querystring=require(_0x8d76('0x11'));var Papa=require(_0x8d76('0x12'));var Redis=require(_0x8d76('0x13'));var authService=require(_0x8d76('0x14'));var qs=require(_0x8d76('0x15'));var as=require(_0x8d76('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x8d76('0x17'));var utils=require('../../config/utils');var config=require(_0x8d76('0x18'));var licenseUtil=require(_0x8d76('0x19'));var db=require(_0x8d76('0x1a'))['db'];function respondWithStatusCode(_0x49c36a,_0x207b6b){_0x207b6b=_0x207b6b||0xcc;return function(_0x3499c3){if(_0x3499c3){return _0x49c36a[_0x8d76('0x1b')](_0x207b6b);}return _0x49c36a[_0x8d76('0x1c')](_0x207b6b)[_0x8d76('0x1d')]();};}function respondWithResult(_0x52fe77,_0x5a4b53){_0x5a4b53=_0x5a4b53||0xc8;return function(_0x5a2820){if(_0x5a2820){return _0x52fe77[_0x8d76('0x1c')](_0x5a4b53)[_0x8d76('0x1e')](_0x5a2820);}};}function respondWithFilteredResult(_0x568126,_0x37a418){return function(_0x13071b){if(_0x13071b){var _0x444742=typeof _0x37a418[_0x8d76('0x1f')]===_0x8d76('0x20')&&typeof _0x37a418[_0x8d76('0x21')]===_0x8d76('0x20');var _0x5b5451=_0x13071b[_0x8d76('0x22')];var _0x58c4d7=_0x444742?0x0:_0x37a418[_0x8d76('0x1f')];var _0x3ef7c6=_0x444742?_0x13071b['count']:_0x37a418[_0x8d76('0x1f')]+_0x37a418['limit'];var _0x4e0d58;if(_0x3ef7c6>=_0x5b5451){_0x3ef7c6=_0x5b5451;_0x4e0d58=0xc8;}else{_0x4e0d58=0xce;}_0x568126[_0x8d76('0x1c')](_0x4e0d58);return _0x568126[_0x8d76('0x23')]('Content-Range',_0x58c4d7+'-'+_0x3ef7c6+'/'+_0x5b5451)[_0x8d76('0x1e')](_0x13071b);}return null;};}function patchUpdates(_0x5be6b5){return function(_0x36bb1a){try{jsonpatch[_0x8d76('0x24')](_0x36bb1a,_0x5be6b5,!![]);}catch(_0x31ec24){return BPromise[_0x8d76('0x25')](_0x31ec24);}return _0x36bb1a['save']();};}function saveUpdates(_0x4552f7,_0x5ce4f8){return function(_0x1b420e){if(_0x1b420e){return _0x1b420e[_0x8d76('0x26')](_0x4552f7)[_0x8d76('0x27')](function(_0x12f8e6){return _0x12f8e6;});}return null;};}function removeEntity(_0x22a0f2,_0x1ab762){return function(_0x3c780e){if(_0x3c780e){return _0x3c780e[_0x8d76('0x28')]()[_0x8d76('0x27')](function(){_0x22a0f2[_0x8d76('0x1c')](0xcc)[_0x8d76('0x1d')]();});}};}function handleEntityNotFound(_0x2d9cd8,_0xb81db7){return function(_0x4c7c31){if(!_0x4c7c31){_0x2d9cd8[_0x8d76('0x1b')](0x194);}return _0x4c7c31;};}function handleError(_0x500c8d,_0x5304b7){_0x5304b7=_0x5304b7||0x1f4;return function(_0x59ad76){logger[_0x8d76('0x29')](_0x59ad76[_0x8d76('0x2a')]);if(_0x59ad76['name']){delete _0x59ad76[_0x8d76('0x2b')];}_0x500c8d['status'](_0x5304b7)[_0x8d76('0x2c')](_0x59ad76);};}exports[_0x8d76('0x2d')]=function(_0x344260,_0x5cb76c){var _0x32fe3e={},_0x528b21={},_0x2d7cf8={'count':0x0,'rows':[]};var _0x2a2718=_[_0x8d76('0x2e')](db['DeskConfiguration'][_0x8d76('0x2f')],function(_0x5b8aad){return{'name':_0x5b8aad['fieldName'],'type':_0x5b8aad[_0x8d76('0x30')][_0x8d76('0x31')]};});_0x528b21[_0x8d76('0x32')]=_[_0x8d76('0x2e')](_0x2a2718,_0x8d76('0x2b'));_0x528b21[_0x8d76('0x33')]=_[_0x8d76('0x34')](_0x344260[_0x8d76('0x33')]);_0x528b21[_0x8d76('0x35')]=_['intersection'](_0x528b21[_0x8d76('0x32')],_0x528b21[_0x8d76('0x33')]);_0x32fe3e[_0x8d76('0x36')]=_['intersection'](_0x528b21[_0x8d76('0x32')],qs[_0x8d76('0x37')](_0x344260['query'][_0x8d76('0x37')]));_0x32fe3e[_0x8d76('0x36')]=_0x32fe3e[_0x8d76('0x36')]['length']?_0x32fe3e[_0x8d76('0x36')]:_0x528b21[_0x8d76('0x32')];if(!_0x344260[_0x8d76('0x33')][_0x8d76('0x38')](_0x8d76('0x39'))){_0x32fe3e['limit']=qs['limit'](_0x344260[_0x8d76('0x33')][_0x8d76('0x21')]);_0x32fe3e[_0x8d76('0x1f')]=qs['offset'](_0x344260[_0x8d76('0x33')]['offset']);}_0x32fe3e[_0x8d76('0x3a')]=qs[_0x8d76('0x3b')](_0x344260[_0x8d76('0x33')][_0x8d76('0x3b')]);_0x32fe3e['where']=qs[_0x8d76('0x35')](_[_0x8d76('0x3c')](_0x344260[_0x8d76('0x33')],_0x528b21[_0x8d76('0x35')]),_0x2a2718);if(_0x344260['query'][_0x8d76('0x3d')]){_0x32fe3e['where']=_['merge'](_0x32fe3e[_0x8d76('0x3e')],{'$or':_['map'](_0x2a2718,function(_0x3afcd2){if(_0x3afcd2[_0x8d76('0x30')]!==_0x8d76('0x3f')){var _0x4f530e={};_0x4f530e[_0x3afcd2['name']]={'$like':'%'+_0x344260['query'][_0x8d76('0x3d')]+'%'};return _0x4f530e;}})});}_0x32fe3e=_[_0x8d76('0x40')]({},_0x32fe3e,_0x344260[_0x8d76('0x41')]);var _0x4c5f9b={'where':_0x32fe3e['where']};return db['DeskConfiguration'][_0x8d76('0x22')](_0x4c5f9b)['then'](function(_0x57aa3e){_0x2d7cf8['count']=_0x57aa3e;if(_0x344260[_0x8d76('0x33')][_0x8d76('0x42')]){_0x32fe3e[_0x8d76('0x43')]=[{'all':!![]}];}return db['DeskConfiguration'][_0x8d76('0x44')](_0x32fe3e);})['then'](function(_0x3fb721){_0x2d7cf8[_0x8d76('0x45')]=_0x3fb721;return _0x2d7cf8;})['then'](respondWithFilteredResult(_0x5cb76c,_0x32fe3e))[_0x8d76('0x46')](handleError(_0x5cb76c,null));};exports[_0x8d76('0x47')]=function(_0x58f585,_0x2b4cce){var _0x42c7b0={'raw':![],'where':{'id':_0x58f585[_0x8d76('0x48')]['id']}},_0x43b22f={};_0x43b22f[_0x8d76('0x32')]=_[_0x8d76('0x34')](db['DeskConfiguration'][_0x8d76('0x2f')]);_0x43b22f[_0x8d76('0x33')]=_[_0x8d76('0x34')](_0x58f585[_0x8d76('0x33')]);_0x43b22f[_0x8d76('0x35')]=_[_0x8d76('0x49')](_0x43b22f['model'],_0x43b22f['query']);_0x42c7b0[_0x8d76('0x36')]=_[_0x8d76('0x49')](_0x43b22f[_0x8d76('0x32')],qs[_0x8d76('0x37')](_0x58f585[_0x8d76('0x33')][_0x8d76('0x37')]));_0x42c7b0[_0x8d76('0x36')]=_0x42c7b0['attributes']['length']?_0x42c7b0['attributes']:_0x43b22f[_0x8d76('0x32')];if(_0x58f585['query'][_0x8d76('0x42')]){_0x42c7b0[_0x8d76('0x43')]=[{'all':!![]}];}_0x42c7b0=_[_0x8d76('0x40')]({},_0x42c7b0,_0x58f585[_0x8d76('0x41')]);return db[_0x8d76('0x4a')]['find'](_0x42c7b0)[_0x8d76('0x27')](handleEntityNotFound(_0x2b4cce,null))[_0x8d76('0x27')](respondWithResult(_0x2b4cce,null))[_0x8d76('0x46')](handleError(_0x2b4cce,null));};exports[_0x8d76('0x4b')]=function(_0x56be7c,_0x1e0e2e){return db['DeskConfiguration'][_0x8d76('0x4b')](_0x56be7c['body'],{})['then'](respondWithResult(_0x1e0e2e,0xc9))[_0x8d76('0x46')](handleError(_0x1e0e2e,null));};exports[_0x8d76('0x26')]=function(_0x196392,_0x1c63af){if(_0x196392[_0x8d76('0x4c')]['id']){delete _0x196392[_0x8d76('0x4c')]['id'];}return db[_0x8d76('0x4a')][_0x8d76('0x4d')]({'where':{'id':_0x196392[_0x8d76('0x48')]['id']}})['then'](handleEntityNotFound(_0x1c63af,null))[_0x8d76('0x27')](saveUpdates(_0x196392['body'],null))['then'](respondWithResult(_0x1c63af,null))[_0x8d76('0x46')](handleError(_0x1c63af,null));};exports[_0x8d76('0x28')]=function(_0x5b1887,_0x1343bb){return db[_0x8d76('0x4a')]['find']({'where':{'id':_0x5b1887[_0x8d76('0x48')]['id']}})['then'](handleEntityNotFound(_0x1343bb,null))['then'](removeEntity(_0x1343bb,null))['catch'](handleError(_0x1343bb,null));};exports[_0x8d76('0x4e')]=function(_0x2518f0,_0x3eeaa1,_0x5a9459){var _0x4190ee={};var _0x5755a5={};var _0x308f22;var _0x8f5696;return db[_0x8d76('0x4a')][_0x8d76('0x4f')]({'where':{'id':_0x2518f0[_0x8d76('0x48')]['id']}})[_0x8d76('0x27')](handleEntityNotFound(_0x3eeaa1,null))[_0x8d76('0x27')](function(_0x1c5ea1){if(_0x1c5ea1){_0x308f22=_0x1c5ea1;_0x5755a5[_0x8d76('0x32')]=_[_0x8d76('0x34')](db[_0x8d76('0x50')][_0x8d76('0x2f')]);_0x5755a5[_0x8d76('0x33')]=_[_0x8d76('0x34')](_0x2518f0[_0x8d76('0x33')]);_0x5755a5[_0x8d76('0x35')]=_[_0x8d76('0x49')](_0x5755a5['model'],_0x5755a5[_0x8d76('0x33')]);_0x4190ee[_0x8d76('0x36')]=_[_0x8d76('0x49')](_0x5755a5['model'],qs['fields'](_0x2518f0['query'][_0x8d76('0x37')]));_0x4190ee[_0x8d76('0x36')]=_0x4190ee[_0x8d76('0x36')][_0x8d76('0x51')]?_0x4190ee[_0x8d76('0x36')]:_0x5755a5[_0x8d76('0x32')];_0x4190ee[_0x8d76('0x3a')]=qs[_0x8d76('0x3b')](_0x2518f0[_0x8d76('0x33')][_0x8d76('0x3b')]);_0x4190ee[_0x8d76('0x3e')]=qs[_0x8d76('0x35')](_[_0x8d76('0x3c')](_0x2518f0['query'],_0x5755a5[_0x8d76('0x35')]));if(_0x2518f0[_0x8d76('0x33')][_0x8d76('0x3d')]){_0x4190ee[_0x8d76('0x3e')]=_['merge'](_0x4190ee[_0x8d76('0x3e')],{'$or':_['map'](_0x4190ee[_0x8d76('0x36')],function(_0x49fdd2){var _0x7e4382={};_0x7e4382[_0x49fdd2]={'$like':'%'+_0x2518f0[_0x8d76('0x33')][_0x8d76('0x3d')]+'%'};return _0x7e4382;})});}_0x4190ee=_['merge']({},_0x4190ee,_0x2518f0['options']);return _0x308f22['getFields'](_0x4190ee);}})[_0x8d76('0x27')](function(_0x3474d3){if(_0x3474d3){_0x8f5696=_0x3474d3['length'];if(!_0x2518f0[_0x8d76('0x33')][_0x8d76('0x38')](_0x8d76('0x39'))){_0x4190ee[_0x8d76('0x21')]=qs[_0x8d76('0x21')](_0x2518f0['query'][_0x8d76('0x21')]);_0x4190ee['offset']=qs[_0x8d76('0x1f')](_0x2518f0[_0x8d76('0x33')][_0x8d76('0x1f')]);}return _0x308f22['getFields'](_0x4190ee);}})[_0x8d76('0x27')](function(_0x4f0a72){if(_0x4f0a72){return _0x4f0a72?{'count':_0x8f5696,'rows':_0x4f0a72}:null;}})[_0x8d76('0x27')](respondWithResult(_0x3eeaa1,null))[_0x8d76('0x46')](handleError(_0x3eeaa1,null));};exports[_0x8d76('0x52')]=function(_0x300699,_0x4051da,_0x21a6bd){var _0x55b7c6={};var _0x3a502b={};var _0x43e762;var _0x5688f7;return db[_0x8d76('0x4a')][_0x8d76('0x4f')]({'where':{'id':_0x300699['params']['id']}})['then'](handleEntityNotFound(_0x4051da,null))[_0x8d76('0x27')](function(_0x349c66){if(_0x349c66){_0x43e762=_0x349c66;_0x3a502b[_0x8d76('0x32')]=_[_0x8d76('0x34')](db[_0x8d76('0x50')]['rawAttributes']);_0x3a502b[_0x8d76('0x33')]=_['keys'](_0x300699[_0x8d76('0x33')]);_0x3a502b['filters']=_[_0x8d76('0x49')](_0x3a502b[_0x8d76('0x32')],_0x3a502b['query']);_0x55b7c6[_0x8d76('0x36')]=_['intersection'](_0x3a502b[_0x8d76('0x32')],qs[_0x8d76('0x37')](_0x300699[_0x8d76('0x33')][_0x8d76('0x37')]));_0x55b7c6['attributes']=_0x55b7c6[_0x8d76('0x36')][_0x8d76('0x51')]?_0x55b7c6[_0x8d76('0x36')]:_0x3a502b['model'];_0x55b7c6[_0x8d76('0x3a')]=qs[_0x8d76('0x3b')](_0x300699['query']['sort']);_0x55b7c6[_0x8d76('0x3e')]=qs['filters'](_[_0x8d76('0x3c')](_0x300699[_0x8d76('0x33')],_0x3a502b['filters']));if(_0x300699['query'][_0x8d76('0x3d')]){_0x55b7c6[_0x8d76('0x3e')]=_['merge'](_0x55b7c6[_0x8d76('0x3e')],{'$or':_[_0x8d76('0x2e')](_0x55b7c6[_0x8d76('0x36')],function(_0x3c84b5){var _0x273945={};_0x273945[_0x3c84b5]={'$like':'%'+_0x300699[_0x8d76('0x33')][_0x8d76('0x3d')]+'%'};return _0x273945;})});}_0x55b7c6=_['merge']({},_0x55b7c6,_0x300699[_0x8d76('0x41')]);return _0x43e762['getSubjects'](_0x55b7c6);}})[_0x8d76('0x27')](function(_0xc15cbb){if(_0xc15cbb){_0x5688f7=_0xc15cbb[_0x8d76('0x51')];if(!_0x300699[_0x8d76('0x33')]['hasOwnProperty']('nolimit')){_0x55b7c6[_0x8d76('0x21')]=qs[_0x8d76('0x21')](_0x300699['query'][_0x8d76('0x21')]);_0x55b7c6[_0x8d76('0x1f')]=qs[_0x8d76('0x1f')](_0x300699[_0x8d76('0x33')][_0x8d76('0x1f')]);}return _0x43e762[_0x8d76('0x52')](_0x55b7c6);}})['then'](function(_0x3a8157){if(_0x3a8157){return _0x3a8157?{'count':_0x5688f7,'rows':_0x3a8157}:null;}})[_0x8d76('0x27')](respondWithResult(_0x4051da,null))['catch'](handleError(_0x4051da,null));};exports[_0x8d76('0x53')]=function(_0x2c7071,_0x55fb4d,_0x5376a2){var _0xa8f3f3={};var _0x3a33bd={};var _0x3f7a64;var _0x252fdc;return db[_0x8d76('0x4a')]['findOne']({'where':{'id':_0x2c7071[_0x8d76('0x48')]['id']}})['then'](handleEntityNotFound(_0x55fb4d,null))[_0x8d76('0x27')](function(_0x33ab54){if(_0x33ab54){_0x3f7a64=_0x33ab54;_0x3a33bd[_0x8d76('0x32')]=_['keys'](db[_0x8d76('0x50')][_0x8d76('0x2f')]);_0x3a33bd[_0x8d76('0x33')]=_[_0x8d76('0x34')](_0x2c7071['query']);_0x3a33bd[_0x8d76('0x35')]=_[_0x8d76('0x49')](_0x3a33bd[_0x8d76('0x32')],_0x3a33bd[_0x8d76('0x33')]);_0xa8f3f3[_0x8d76('0x36')]=_['intersection'](_0x3a33bd[_0x8d76('0x32')],qs[_0x8d76('0x37')](_0x2c7071['query'][_0x8d76('0x37')]));_0xa8f3f3[_0x8d76('0x36')]=_0xa8f3f3['attributes'][_0x8d76('0x51')]?_0xa8f3f3[_0x8d76('0x36')]:_0x3a33bd['model'];_0xa8f3f3[_0x8d76('0x3a')]=qs[_0x8d76('0x3b')](_0x2c7071[_0x8d76('0x33')][_0x8d76('0x3b')]);_0xa8f3f3['where']=qs[_0x8d76('0x35')](_['pick'](_0x2c7071['query'],_0x3a33bd[_0x8d76('0x35')]));if(_0x2c7071[_0x8d76('0x33')][_0x8d76('0x3d')]){_0xa8f3f3['where']=_[_0x8d76('0x40')](_0xa8f3f3['where'],{'$or':_['map'](_0xa8f3f3['attributes'],function(_0x1e560a){var _0x21515f={};_0x21515f[_0x1e560a]={'$like':'%'+_0x2c7071['query']['filter']+'%'};return _0x21515f;})});}_0xa8f3f3=_['merge']({},_0xa8f3f3,_0x2c7071['options']);return _0x3f7a64[_0x8d76('0x53')](_0xa8f3f3);}})['then'](function(_0x13b0e0){if(_0x13b0e0){_0x252fdc=_0x13b0e0[_0x8d76('0x51')];if(!_0x2c7071[_0x8d76('0x33')][_0x8d76('0x38')]('nolimit')){_0xa8f3f3[_0x8d76('0x21')]=qs[_0x8d76('0x21')](_0x2c7071[_0x8d76('0x33')][_0x8d76('0x21')]);_0xa8f3f3[_0x8d76('0x1f')]=qs[_0x8d76('0x1f')](_0x2c7071[_0x8d76('0x33')]['offset']);}return _0x3f7a64[_0x8d76('0x53')](_0xa8f3f3);}})[_0x8d76('0x27')](function(_0xeede7c){if(_0xeede7c){return _0xeede7c?{'count':_0x252fdc,'rows':_0xeede7c}:null;}})['then'](respondWithResult(_0x55fb4d,null))[_0x8d76('0x46')](handleError(_0x55fb4d,null));};exports[_0x8d76('0x54')]=function(_0x2c9135,_0x43c7b8,_0xc08d40){var _0x468fe8={};var _0x50f5d6={};var _0x5be3d1;var _0x389afa;return db[_0x8d76('0x4a')][_0x8d76('0x4f')]({'where':{'id':_0x2c9135[_0x8d76('0x48')]['id']}})[_0x8d76('0x27')](handleEntityNotFound(_0x43c7b8,null))[_0x8d76('0x27')](function(_0x46581b){if(_0x46581b){_0x5be3d1=_0x46581b;_0x50f5d6['model']=_[_0x8d76('0x34')](db[_0x8d76('0x55')][_0x8d76('0x2f')]);_0x50f5d6[_0x8d76('0x33')]=_[_0x8d76('0x34')](_0x2c9135[_0x8d76('0x33')]);_0x50f5d6[_0x8d76('0x35')]=_[_0x8d76('0x49')](_0x50f5d6[_0x8d76('0x32')],_0x50f5d6['query']);_0x468fe8[_0x8d76('0x36')]=_[_0x8d76('0x49')](_0x50f5d6[_0x8d76('0x32')],qs['fields'](_0x2c9135[_0x8d76('0x33')][_0x8d76('0x37')]));_0x468fe8[_0x8d76('0x36')]=_0x468fe8[_0x8d76('0x36')][_0x8d76('0x51')]?_0x468fe8['attributes']:_0x50f5d6[_0x8d76('0x32')];_0x468fe8[_0x8d76('0x3a')]=qs['sort'](_0x2c9135[_0x8d76('0x33')][_0x8d76('0x3b')]);_0x468fe8[_0x8d76('0x3e')]=qs['filters'](_[_0x8d76('0x3c')](_0x2c9135[_0x8d76('0x33')],_0x50f5d6[_0x8d76('0x35')]));if(_0x2c9135[_0x8d76('0x33')]['filter']){_0x468fe8[_0x8d76('0x3e')]=_[_0x8d76('0x40')](_0x468fe8['where'],{'$or':_[_0x8d76('0x2e')](_0x468fe8[_0x8d76('0x36')],function(_0x64c1fa){var _0x30b5f4={};_0x30b5f4[_0x64c1fa]={'$like':'%'+_0x2c9135[_0x8d76('0x33')][_0x8d76('0x3d')]+'%'};return _0x30b5f4;})});}_0x468fe8=_[_0x8d76('0x40')]({},_0x468fe8,_0x2c9135['options']);return _0x5be3d1[_0x8d76('0x54')](_0x468fe8);}})[_0x8d76('0x27')](function(_0x4c5105){if(_0x4c5105){_0x389afa=_0x4c5105['length'];if(!_0x2c9135[_0x8d76('0x33')][_0x8d76('0x38')]('nolimit')){_0x468fe8[_0x8d76('0x21')]=qs['limit'](_0x2c9135[_0x8d76('0x33')][_0x8d76('0x21')]);_0x468fe8[_0x8d76('0x1f')]=qs[_0x8d76('0x1f')](_0x2c9135[_0x8d76('0x33')][_0x8d76('0x1f')]);}return _0x5be3d1[_0x8d76('0x54')](_0x468fe8);}})[_0x8d76('0x27')](function(_0x4470ac){if(_0x4470ac){return _0x4470ac?{'count':_0x389afa,'rows':_0x4470ac}:null;}})[_0x8d76('0x27')](respondWithResult(_0x43c7b8,null))['catch'](handleError(_0x43c7b8,null));};exports[_0x8d76('0x56')]=function(_0x581c5a,_0x5b3409,_0x1f36d9){if(_0x581c5a[_0x8d76('0x4c')]['id']){delete _0x581c5a[_0x8d76('0x4c')]['id'];}return db[_0x8d76('0x4a')][_0x8d76('0x4f')]({'where':{'id':_0x581c5a[_0x8d76('0x48')]['id']}})['then'](handleEntityNotFound(_0x5b3409,null))['then'](function(_0x13f30f){if(_0x13f30f){return _0x13f30f['setTags'](_0x581c5a['body']['ids']||[]);}return null;})[_0x8d76('0x27')](respondWithResult(_0x5b3409,null))[_0x8d76('0x46')](handleError(_0x5b3409,null));};
\ No newline at end of file
index 3ca4414..494135c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba50=['bluebird','request-promise','path','rimraf','../../config/environment','define','DeskConfiguration','int_desk_configurations','lodash','util','../../config/logger','api','moment'];(function(_0x11f1f0,_0x375011){var _0x49d82e=function(_0x2017de){while(--_0x2017de){_0x11f1f0['push'](_0x11f1f0['shift']());}};_0x49d82e(++_0x375011);}(_0xba50,0x15a));var _0x0ba5=function(_0xe9e8f9,_0xa250b8){_0xe9e8f9=_0xe9e8f9-0x0;var _0x28768e=_0xba50[_0xe9e8f9];return _0x28768e;};'use strict';var _=require(_0x0ba5('0x0'));var util=require(_0x0ba5('0x1'));var logger=require(_0x0ba5('0x2'))(_0x0ba5('0x3'));var moment=require(_0x0ba5('0x4'));var BPromise=require(_0x0ba5('0x5'));var rp=require(_0x0ba5('0x6'));var fs=require('fs');var path=require(_0x0ba5('0x7'));var rimraf=require(_0x0ba5('0x8'));var config=require(_0x0ba5('0x9'));var attributes=require('./intDeskConfiguration.attributes');module['exports']=function(_0x441c35,_0x4f0471){return _0x441c35[_0x0ba5('0xa')](_0x0ba5('0xb'),attributes,{'tableName':_0x0ba5('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb552=['../../config/logger','api','bluebird','request-promise','path','rimraf','./intDeskConfiguration.attributes','exports','DeskConfiguration','int_desk_configurations','lodash','util'];(function(_0x531c77,_0x520bba){var _0x38de6a=function(_0x313fd3){while(--_0x313fd3){_0x531c77['push'](_0x531c77['shift']());}};_0x38de6a(++_0x520bba);}(_0xb552,0xa6));var _0x2b55=function(_0x34d86e,_0xad9cb7){_0x34d86e=_0x34d86e-0x0;var _0x1193be=_0xb552[_0x34d86e];return _0x1193be;};'use strict';var _=require(_0x2b55('0x0'));var util=require(_0x2b55('0x1'));var logger=require(_0x2b55('0x2'))(_0x2b55('0x3'));var moment=require('moment');var BPromise=require(_0x2b55('0x4'));var rp=require(_0x2b55('0x5'));var fs=require('fs');var path=require(_0x2b55('0x6'));var rimraf=require(_0x2b55('0x7'));var config=require('../../config/environment');var attributes=require(_0x2b55('0x8'));module[_0x2b55('0x9')]=function(_0x523f0b,_0x4ede6d){return _0x523f0b['define'](_0x2b55('0xa'),attributes,{'tableName':_0x2b55('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index dab42dd..4bf4bb5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e63=['../../config/environment','jayson/promise','http','then','DeskConfiguration,\x20%s,\x20%s','request\x20sent','debug','DeskConfiguration,\x20%s,\x20%s,\x20%s','error','code','message','info','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x3f4cd0,_0x303070){var _0x3f9f01=function(_0x6ced93){while(--_0x6ced93){_0x3f4cd0['push'](_0x3f4cd0['shift']());}};_0x3f9f01(++_0x303070);}(_0x9e63,0x65));var _0x39e6=function(_0x40ac5e,_0x2de228){_0x40ac5e=_0x40ac5e-0x0;var _0x2839d6=_0x9e63[_0x40ac5e];return _0x2839d6;};'use strict';var _=require(_0x39e6('0x0'));var util=require(_0x39e6('0x1'));var moment=require(_0x39e6('0x2'));var BPromise=require('bluebird');var rs=require(_0x39e6('0x3'));var fs=require('fs');var Redis=require(_0x39e6('0x4'));var db=require(_0x39e6('0x5'))['db'];var utils=require(_0x39e6('0x6'));var logger=require(_0x39e6('0x7'))(_0x39e6('0x8'));var config=require(_0x39e6('0x9'));var jayson=require(_0x39e6('0xa'));var client=jayson['client'][_0x39e6('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3c2224,_0x3f2fa2,_0x554392){return new BPromise(function(_0x21938f,_0xddc291){return client['request'](_0x3c2224,_0x554392)[_0x39e6('0xc')](function(_0x4ee158){logger['info'](_0x39e6('0xd'),_0x3f2fa2,_0x39e6('0xe'));logger[_0x39e6('0xf')](_0x39e6('0x10'),_0x3f2fa2,_0x39e6('0xe'),JSON['stringify'](_0x4ee158));if(_0x4ee158['error']){if(_0x4ee158[_0x39e6('0x11')][_0x39e6('0x12')]===0x1f4){logger[_0x39e6('0x11')](_0x39e6('0xd'),_0x3f2fa2,_0x4ee158[_0x39e6('0x11')]['message']);return _0xddc291(_0x4ee158[_0x39e6('0x11')][_0x39e6('0x13')]);}logger[_0x39e6('0x11')](_0x39e6('0xd'),_0x3f2fa2,_0x4ee158['error']['message']);return _0x21938f(_0x4ee158[_0x39e6('0x11')][_0x39e6('0x13')]);}else{logger[_0x39e6('0x14')](_0x39e6('0xd'),_0x3f2fa2,_0x39e6('0xe'));_0x21938f(_0x4ee158['result'][_0x39e6('0x13')]);}})[_0x39e6('0x15')](function(_0x32ad13){logger[_0x39e6('0x11')](_0x39e6('0xd'),_0x3f2fa2,_0x32ad13);_0xddc291(_0x32ad13);});});}
\ No newline at end of file
+var _0xf2e3=['then','info','DeskConfiguration,\x20%s,\x20%s','request\x20sent','debug','DeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request'];(function(_0xf5b952,_0x82c02f){var _0x53933a=function(_0xd04bed){while(--_0xd04bed){_0xf5b952['push'](_0xf5b952['shift']());}};_0x53933a(++_0x82c02f);}(_0xf2e3,0x9b));var _0x3f2e=function(_0x1deb03,_0xd05ad8){_0x1deb03=_0x1deb03-0x0;var _0x189fe7=_0xf2e3[_0x1deb03];return _0x189fe7;};'use strict';var _=require(_0x3f2e('0x0'));var util=require('util');var moment=require(_0x3f2e('0x1'));var BPromise=require(_0x3f2e('0x2'));var rs=require(_0x3f2e('0x3'));var fs=require('fs');var Redis=require(_0x3f2e('0x4'));var db=require(_0x3f2e('0x5'))['db'];var utils=require(_0x3f2e('0x6'));var logger=require(_0x3f2e('0x7'))(_0x3f2e('0x8'));var config=require(_0x3f2e('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x3f2e('0xa')][_0x3f2e('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3c0864,_0xdf499f,_0x12c6e7){return new BPromise(function(_0x11067d,_0x3636f6){return client[_0x3f2e('0xc')](_0x3c0864,_0x12c6e7)[_0x3f2e('0xd')](function(_0x29a6cc){logger[_0x3f2e('0xe')](_0x3f2e('0xf'),_0xdf499f,_0x3f2e('0x10'));logger[_0x3f2e('0x11')](_0x3f2e('0x12'),_0xdf499f,_0x3f2e('0x10'),JSON[_0x3f2e('0x13')](_0x29a6cc));if(_0x29a6cc[_0x3f2e('0x14')]){if(_0x29a6cc[_0x3f2e('0x14')]['code']===0x1f4){logger[_0x3f2e('0x14')](_0x3f2e('0xf'),_0xdf499f,_0x29a6cc['error'][_0x3f2e('0x15')]);return _0x3636f6(_0x29a6cc[_0x3f2e('0x14')][_0x3f2e('0x15')]);}logger[_0x3f2e('0x14')](_0x3f2e('0xf'),_0xdf499f,_0x29a6cc['error'][_0x3f2e('0x15')]);return _0x11067d(_0x29a6cc[_0x3f2e('0x14')][_0x3f2e('0x15')]);}else{logger['info'](_0x3f2e('0xf'),_0xdf499f,_0x3f2e('0x10'));_0x11067d(_0x29a6cc[_0x3f2e('0x16')][_0x3f2e('0x15')]);}})[_0x3f2e('0x17')](function(_0x2fef73){logger[_0x3f2e('0x14')](_0x3f2e('0xf'),_0xdf499f,_0x2fef73);_0x3636f6(_0x2fef73);});});}
\ No newline at end of file
index 7602672..846fb66 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc582=['index','get','/:id','show','create','put','delete','exports','util','path','express','fs-extra','./intDeskField.controller','isAuthenticated'];(function(_0x57619a,_0xe16536){var _0xb177c8=function(_0x38bb63){while(--_0x38bb63){_0x57619a['push'](_0x57619a['shift']());}};_0xb177c8(++_0xe16536);}(_0xc582,0x182));var _0x2c58=function(_0x12fc8d,_0x19ee33){_0x12fc8d=_0x12fc8d-0x0;var _0x3f9d04=_0xc582[_0x12fc8d];return _0x3f9d04;};'use strict';var multer=require('multer');var util=require(_0x2c58('0x0'));var path=require(_0x2c58('0x1'));var timeout=require('connect-timeout');var express=require(_0x2c58('0x2'));var router=express['Router']();var fs_extra=require(_0x2c58('0x3'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x2c58('0x4'));router['get']('/',auth[_0x2c58('0x5')](),controller[_0x2c58('0x6')]);router[_0x2c58('0x7')](_0x2c58('0x8'),auth[_0x2c58('0x5')](),controller[_0x2c58('0x9')]);router['post']('/',auth[_0x2c58('0x5')](),controller[_0x2c58('0xa')]);router[_0x2c58('0xb')](_0x2c58('0x8'),auth[_0x2c58('0x5')](),controller['update']);router[_0x2c58('0xc')]('/:id',auth[_0x2c58('0x5')](),controller['destroy']);module[_0x2c58('0xd')]=router;
\ No newline at end of file
+var _0x6f18=['update','delete','destroy','exports','multer','path','express','Router','../../components/auth/service','../../components/interaction/service','./intDeskField.controller','get','isAuthenticated','index','show','post','create','/:id'];(function(_0x2fe102,_0x494300){var _0x51bc42=function(_0x292725){while(--_0x292725){_0x2fe102['push'](_0x2fe102['shift']());}};_0x51bc42(++_0x494300);}(_0x6f18,0x1b4));var _0x86f1=function(_0x594222,_0x327da9){_0x594222=_0x594222-0x0;var _0x499c70=_0x6f18[_0x594222];return _0x499c70;};'use strict';var multer=require(_0x86f1('0x0'));var util=require('util');var path=require(_0x86f1('0x1'));var timeout=require('connect-timeout');var express=require(_0x86f1('0x2'));var router=express[_0x86f1('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x86f1('0x4'));var interaction=require(_0x86f1('0x5'));var config=require('../../config/environment');var controller=require(_0x86f1('0x6'));router[_0x86f1('0x7')]('/',auth[_0x86f1('0x8')](),controller[_0x86f1('0x9')]);router[_0x86f1('0x7')]('/:id',auth[_0x86f1('0x8')](),controller[_0x86f1('0xa')]);router[_0x86f1('0xb')]('/',auth[_0x86f1('0x8')](),controller[_0x86f1('0xc')]);router['put'](_0x86f1('0xd'),auth[_0x86f1('0x8')](),controller[_0x86f1('0xe')]);router[_0x86f1('0xf')](_0x86f1('0xd'),auth[_0x86f1('0x8')](),controller[_0x86f1('0x10')]);module[_0x86f1('0x11')]=router;
\ No newline at end of file
index 1314f3e..624c5fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x23ef=['STRING','customVariable','ENUM','string','variable'];(function(_0x1fd81c,_0xc4fd7){var _0x395760=function(_0x88b6e){while(--_0x88b6e){_0x1fd81c['push'](_0x1fd81c['shift']());}};_0x395760(++_0xc4fd7);}(_0x23ef,0x75));var _0xf23e=function(_0x3b496e,_0x194b18){_0x3b496e=_0x3b496e-0x0;var _0x43376b=_0x23ef[_0x3b496e];return _0x43376b;};'use strict';var Sequelize=require('sequelize');module['exports']={'type':{'type':Sequelize[_0xf23e('0x0')](_0xf23e('0x1'),_0xf23e('0x2'),'customVariable','keyValue','picklist'),'defaultValue':_0xf23e('0x1')},'content':{'type':Sequelize[_0xf23e('0x3')]},'key':{'type':Sequelize[_0xf23e('0x3')]},'keyType':{'type':Sequelize[_0xf23e('0x0')]('string','variable',_0xf23e('0x4'))},'keyContent':{'type':Sequelize[_0xf23e('0x3')]},'idField':{'type':Sequelize[_0xf23e('0x3')]},'nameField':{'type':Sequelize[_0xf23e('0x3')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xf23e('0x3')]}};
\ No newline at end of file
+var _0xc412=['STRING','variable','BOOLEAN','sequelize','exports','ENUM','string','customVariable','picklist'];(function(_0x360a09,_0xd1d56c){var _0x4b1349=function(_0x3c92c0){while(--_0x3c92c0){_0x360a09['push'](_0x360a09['shift']());}};_0x4b1349(++_0xd1d56c);}(_0xc412,0x1e9));var _0x2c41=function(_0x433903,_0x451050){_0x433903=_0x433903-0x0;var _0x4e80ad=_0xc412[_0x433903];return _0x4e80ad;};'use strict';var Sequelize=require(_0x2c41('0x0'));module[_0x2c41('0x1')]={'type':{'type':Sequelize[_0x2c41('0x2')](_0x2c41('0x3'),'variable',_0x2c41('0x4'),'keyValue',_0x2c41('0x5')),'defaultValue':_0x2c41('0x3')},'content':{'type':Sequelize[_0x2c41('0x6')]},'key':{'type':Sequelize[_0x2c41('0x6')]},'keyType':{'type':Sequelize[_0x2c41('0x2')](_0x2c41('0x3'),_0x2c41('0x7'),_0x2c41('0x4'))},'keyContent':{'type':Sequelize[_0x2c41('0x6')]},'idField':{'type':Sequelize[_0x2c41('0x6')]},'nameField':{'type':Sequelize[_0x2c41('0x6')]},'customField':{'type':Sequelize[_0x2c41('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x2c41('0x6')]}};
\ No newline at end of file
index e4d9fdb..392ee82 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbe52=['set','Content-Range','apply','reject','update','then','destroy','error','name','send','index','map','DeskField','rawAttributes','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','keys','create','body','find','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','limit','undefined','count'];(function(_0x54aaac,_0x162860){var _0x37a771=function(_0x1ca4f0){while(--_0x1ca4f0){_0x54aaac['push'](_0x54aaac['shift']());}};_0x37a771(++_0x162860);}(_0xbe52,0x164));var _0x2be5=function(_0x39af63,_0x1f24f3){_0x39af63=_0x39af63-0x0;var _0x5e9dfa=_0xbe52[_0x39af63];return _0x5e9dfa;};'use strict';var emlformat=require(_0x2be5('0x0'));var rimraf=require(_0x2be5('0x1'));var zipdir=require(_0x2be5('0x2'));var jsonpatch=require(_0x2be5('0x3'));var rp=require(_0x2be5('0x4'));var moment=require('moment');var BPromise=require(_0x2be5('0x5'));var Mustache=require(_0x2be5('0x6'));var util=require(_0x2be5('0x7'));var path=require(_0x2be5('0x8'));var sox=require(_0x2be5('0x9'));var csv=require(_0x2be5('0xa'));var ejs=require(_0x2be5('0xb'));var fs=require('fs');var fs_extra=require(_0x2be5('0xc'));var _=require(_0x2be5('0xd'));var squel=require(_0x2be5('0xe'));var crypto=require(_0x2be5('0xf'));var jsforce=require(_0x2be5('0x10'));var deskjs=require('desk.js');var toCsv=require(_0x2be5('0xa'));var querystring=require(_0x2be5('0x11'));var Papa=require(_0x2be5('0x12'));var Redis=require('ioredis');var authService=require(_0x2be5('0x13'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x2be5('0x14'));var logger=require(_0x2be5('0x15'))(_0x2be5('0x16'));var utils=require(_0x2be5('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x2be5('0x18'));var db=require(_0x2be5('0x19'))['db'];function respondWithStatusCode(_0x5ce5ca,_0x588a62){_0x588a62=_0x588a62||0xcc;return function(_0x25b643){if(_0x25b643){return _0x5ce5ca[_0x2be5('0x1a')](_0x588a62);}return _0x5ce5ca['status'](_0x588a62)[_0x2be5('0x1b')]();};}function respondWithResult(_0x3af879,_0xd905c9){_0xd905c9=_0xd905c9||0xc8;return function(_0x71834e){if(_0x71834e){return _0x3af879[_0x2be5('0x1c')](_0xd905c9)[_0x2be5('0x1d')](_0x71834e);}};}function respondWithFilteredResult(_0x4a1be3,_0x4f8fce){return function(_0x3f4996){if(_0x3f4996){var _0x5e6f16=typeof _0x4f8fce[_0x2be5('0x1e')]==='undefined'&&typeof _0x4f8fce[_0x2be5('0x1f')]===_0x2be5('0x20');var _0x35db37=_0x3f4996['count'];var _0x8ea605=_0x5e6f16?0x0:_0x4f8fce[_0x2be5('0x1e')];var _0x544625=_0x5e6f16?_0x3f4996[_0x2be5('0x21')]:_0x4f8fce[_0x2be5('0x1e')]+_0x4f8fce[_0x2be5('0x1f')];var _0x1bffbf;if(_0x544625>=_0x35db37){_0x544625=_0x35db37;_0x1bffbf=0xc8;}else{_0x1bffbf=0xce;}_0x4a1be3[_0x2be5('0x1c')](_0x1bffbf);return _0x4a1be3[_0x2be5('0x22')](_0x2be5('0x23'),_0x8ea605+'-'+_0x544625+'/'+_0x35db37)['json'](_0x3f4996);}return null;};}function patchUpdates(_0x514223){return function(_0x329cf0){try{jsonpatch[_0x2be5('0x24')](_0x329cf0,_0x514223,!![]);}catch(_0x1bafd2){return BPromise[_0x2be5('0x25')](_0x1bafd2);}return _0x329cf0['save']();};}function saveUpdates(_0x2ecc64,_0x2bc13e){return function(_0x2bbe9f){if(_0x2bbe9f){return _0x2bbe9f[_0x2be5('0x26')](_0x2ecc64)[_0x2be5('0x27')](function(_0x3f78d4){return _0x3f78d4;});}return null;};}function removeEntity(_0x2b776f,_0x29910d){return function(_0x3f4430){if(_0x3f4430){return _0x3f4430[_0x2be5('0x28')]()['then'](function(){_0x2b776f[_0x2be5('0x1c')](0xcc)[_0x2be5('0x1b')]();});}};}function handleEntityNotFound(_0x323c2d,_0x4d3aee){return function(_0x25c47c){if(!_0x25c47c){_0x323c2d[_0x2be5('0x1a')](0x194);}return _0x25c47c;};}function handleError(_0x33ecf1,_0x127093){_0x127093=_0x127093||0x1f4;return function(_0x434637){logger[_0x2be5('0x29')](_0x434637['stack']);if(_0x434637[_0x2be5('0x2a')]){delete _0x434637[_0x2be5('0x2a')];}_0x33ecf1[_0x2be5('0x1c')](_0x127093)[_0x2be5('0x2b')](_0x434637);};}exports[_0x2be5('0x2c')]=function(_0x28c6bb,_0x19edba){var _0x5c8fec={},_0xed9be3={},_0x38e698={'count':0x0,'rows':[]};var _0x52ed0f=_[_0x2be5('0x2d')](db[_0x2be5('0x2e')][_0x2be5('0x2f')],function(_0x16afa0){return{'name':_0x16afa0['fieldName'],'type':_0x16afa0[_0x2be5('0x30')][_0x2be5('0x31')]};});_0xed9be3[_0x2be5('0x32')]=_['map'](_0x52ed0f,_0x2be5('0x2a'));_0xed9be3[_0x2be5('0x33')]=_['keys'](_0x28c6bb[_0x2be5('0x33')]);_0xed9be3[_0x2be5('0x34')]=_[_0x2be5('0x35')](_0xed9be3[_0x2be5('0x32')],_0xed9be3['query']);_0x5c8fec[_0x2be5('0x36')]=_[_0x2be5('0x35')](_0xed9be3[_0x2be5('0x32')],qs['fields'](_0x28c6bb['query'][_0x2be5('0x37')]));_0x5c8fec[_0x2be5('0x36')]=_0x5c8fec[_0x2be5('0x36')][_0x2be5('0x38')]?_0x5c8fec[_0x2be5('0x36')]:_0xed9be3[_0x2be5('0x32')];if(!_0x28c6bb['query'][_0x2be5('0x39')](_0x2be5('0x3a'))){_0x5c8fec['limit']=qs[_0x2be5('0x1f')](_0x28c6bb[_0x2be5('0x33')][_0x2be5('0x1f')]);_0x5c8fec['offset']=qs['offset'](_0x28c6bb[_0x2be5('0x33')][_0x2be5('0x1e')]);}_0x5c8fec[_0x2be5('0x3b')]=qs[_0x2be5('0x3c')](_0x28c6bb[_0x2be5('0x33')][_0x2be5('0x3c')]);_0x5c8fec[_0x2be5('0x3d')]=qs[_0x2be5('0x34')](_[_0x2be5('0x3e')](_0x28c6bb['query'],_0xed9be3[_0x2be5('0x34')]),_0x52ed0f);if(_0x28c6bb[_0x2be5('0x33')][_0x2be5('0x3f')]){_0x5c8fec['where']=_[_0x2be5('0x40')](_0x5c8fec[_0x2be5('0x3d')],{'$or':_[_0x2be5('0x2d')](_0x52ed0f,function(_0x4e21ff){if(_0x4e21ff['type']!==_0x2be5('0x41')){var _0x1af199={};_0x1af199[_0x4e21ff[_0x2be5('0x2a')]]={'$like':'%'+_0x28c6bb['query'][_0x2be5('0x3f')]+'%'};return _0x1af199;}})});}_0x5c8fec=_['merge']({},_0x5c8fec,_0x28c6bb[_0x2be5('0x42')]);var _0x399978={'where':_0x5c8fec['where']};return db[_0x2be5('0x2e')][_0x2be5('0x21')](_0x399978)[_0x2be5('0x27')](function(_0x3625b1){_0x38e698['count']=_0x3625b1;if(_0x28c6bb['query'][_0x2be5('0x43')]){_0x5c8fec[_0x2be5('0x44')]=[{'all':!![]}];}return db[_0x2be5('0x2e')][_0x2be5('0x45')](_0x5c8fec);})[_0x2be5('0x27')](function(_0x58794e){_0x38e698[_0x2be5('0x46')]=_0x58794e;return _0x38e698;})['then'](respondWithFilteredResult(_0x19edba,_0x5c8fec))[_0x2be5('0x47')](handleError(_0x19edba,null));};exports[_0x2be5('0x48')]=function(_0x97213c,_0xd93da9){var _0x2ad07a={'raw':!![],'where':{'id':_0x97213c['params']['id']}},_0x50f828={};_0x50f828['model']=_[_0x2be5('0x49')](db['DeskField'][_0x2be5('0x2f')]);_0x50f828['query']=_[_0x2be5('0x49')](_0x97213c[_0x2be5('0x33')]);_0x50f828['filters']=_['intersection'](_0x50f828[_0x2be5('0x32')],_0x50f828[_0x2be5('0x33')]);_0x2ad07a[_0x2be5('0x36')]=_['intersection'](_0x50f828['model'],qs[_0x2be5('0x37')](_0x97213c['query'][_0x2be5('0x37')]));_0x2ad07a['attributes']=_0x2ad07a['attributes']['length']?_0x2ad07a[_0x2be5('0x36')]:_0x50f828[_0x2be5('0x32')];if(_0x97213c['query'][_0x2be5('0x43')]){_0x2ad07a[_0x2be5('0x44')]=[{'all':!![]}];}_0x2ad07a=_[_0x2be5('0x40')]({},_0x2ad07a,_0x97213c[_0x2be5('0x42')]);return db['DeskField']['find'](_0x2ad07a)[_0x2be5('0x27')](handleEntityNotFound(_0xd93da9,null))[_0x2be5('0x27')](respondWithResult(_0xd93da9,null))[_0x2be5('0x47')](handleError(_0xd93da9,null));};exports[_0x2be5('0x4a')]=function(_0x3124da,_0x53155c){return db[_0x2be5('0x2e')][_0x2be5('0x4a')](_0x3124da[_0x2be5('0x4b')],{})[_0x2be5('0x27')](respondWithResult(_0x53155c,0xc9))[_0x2be5('0x47')](handleError(_0x53155c,null));};exports[_0x2be5('0x26')]=function(_0x47d3ce,_0x57371f){if(_0x47d3ce['body']['id']){delete _0x47d3ce[_0x2be5('0x4b')]['id'];}return db[_0x2be5('0x2e')][_0x2be5('0x4c')]({'where':{'id':_0x47d3ce[_0x2be5('0x4d')]['id']}})[_0x2be5('0x27')](handleEntityNotFound(_0x57371f,null))[_0x2be5('0x27')](saveUpdates(_0x47d3ce[_0x2be5('0x4b')],null))[_0x2be5('0x27')](respondWithResult(_0x57371f,null))[_0x2be5('0x47')](handleError(_0x57371f,null));};exports[_0x2be5('0x28')]=function(_0x3484a4,_0x2b3633){return db['DeskField'][_0x2be5('0x4c')]({'where':{'id':_0x3484a4[_0x2be5('0x4d')]['id']}})['then'](handleEntityNotFound(_0x2b3633,null))[_0x2be5('0x27')](removeEntity(_0x2b3633,null))[_0x2be5('0x47')](handleError(_0x2b3633,null));};
\ No newline at end of file
+var _0x9075=['limit','count','set','Content-Range','reject','save','update','then','end','sendStatus','error','stack','name','index','DeskField','rawAttributes','fieldName','type','map','keys','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','include','findAll','catch','show','params','includeAll','options','find','create','body','destroy','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','ejs','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined'];(function(_0x4068a2,_0x210b21){var _0x26a74c=function(_0xb4ab2f){while(--_0xb4ab2f){_0x4068a2['push'](_0x4068a2['shift']());}};_0x26a74c(++_0x210b21);}(_0x9075,0x7a));var _0x5907=function(_0x185f00,_0x1f9754){_0x185f00=_0x185f00-0x0;var _0x2ef08e=_0x9075[_0x185f00];return _0x2ef08e;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x5907('0x0'));var jsonpatch=require(_0x5907('0x1'));var rp=require(_0x5907('0x2'));var moment=require(_0x5907('0x3'));var BPromise=require(_0x5907('0x4'));var Mustache=require(_0x5907('0x5'));var util=require(_0x5907('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0x5907('0x7'));var ejs=require(_0x5907('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x5907('0x9'));var crypto=require('crypto');var jsforce=require(_0x5907('0xa'));var deskjs=require(_0x5907('0xb'));var toCsv=require(_0x5907('0x7'));var querystring=require('querystring');var Papa=require(_0x5907('0xc'));var Redis=require(_0x5907('0xd'));var authService=require(_0x5907('0xe'));var qs=require(_0x5907('0xf'));var as=require(_0x5907('0x10'));var hardwareService=require(_0x5907('0x11'));var logger=require(_0x5907('0x12'))(_0x5907('0x13'));var utils=require(_0x5907('0x14'));var config=require(_0x5907('0x15'));var licenseUtil=require(_0x5907('0x16'));var db=require(_0x5907('0x17'))['db'];function respondWithStatusCode(_0x18e5cb,_0xd80e8f){_0xd80e8f=_0xd80e8f||0xcc;return function(_0x1b8feb){if(_0x1b8feb){return _0x18e5cb['sendStatus'](_0xd80e8f);}return _0x18e5cb[_0x5907('0x18')](_0xd80e8f)['end']();};}function respondWithResult(_0x93baf1,_0x1f1c80){_0x1f1c80=_0x1f1c80||0xc8;return function(_0x2490fd){if(_0x2490fd){return _0x93baf1['status'](_0x1f1c80)[_0x5907('0x19')](_0x2490fd);}};}function respondWithFilteredResult(_0x15d420,_0x4c1b48){return function(_0xb49e1e){if(_0xb49e1e){var _0x48fc51=typeof _0x4c1b48[_0x5907('0x1a')]===_0x5907('0x1b')&&typeof _0x4c1b48[_0x5907('0x1c')]==='undefined';var _0x240398=_0xb49e1e['count'];var _0x399152=_0x48fc51?0x0:_0x4c1b48['offset'];var _0x3e0ce0=_0x48fc51?_0xb49e1e[_0x5907('0x1d')]:_0x4c1b48[_0x5907('0x1a')]+_0x4c1b48['limit'];var _0x4c7768;if(_0x3e0ce0>=_0x240398){_0x3e0ce0=_0x240398;_0x4c7768=0xc8;}else{_0x4c7768=0xce;}_0x15d420[_0x5907('0x18')](_0x4c7768);return _0x15d420[_0x5907('0x1e')](_0x5907('0x1f'),_0x399152+'-'+_0x3e0ce0+'/'+_0x240398)[_0x5907('0x19')](_0xb49e1e);}return null;};}function patchUpdates(_0x42dfdd){return function(_0x29fe5e){try{jsonpatch['apply'](_0x29fe5e,_0x42dfdd,!![]);}catch(_0x4f2e0a){return BPromise[_0x5907('0x20')](_0x4f2e0a);}return _0x29fe5e[_0x5907('0x21')]();};}function saveUpdates(_0x24402e,_0x5c8d35){return function(_0x277192){if(_0x277192){return _0x277192[_0x5907('0x22')](_0x24402e)[_0x5907('0x23')](function(_0x1149a3){return _0x1149a3;});}return null;};}function removeEntity(_0x2945f8,_0x534ef5){return function(_0x258e54){if(_0x258e54){return _0x258e54['destroy']()[_0x5907('0x23')](function(){_0x2945f8[_0x5907('0x18')](0xcc)[_0x5907('0x24')]();});}};}function handleEntityNotFound(_0x2c4106,_0x3b7d7e){return function(_0x15535b){if(!_0x15535b){_0x2c4106[_0x5907('0x25')](0x194);}return _0x15535b;};}function handleError(_0x4f966b,_0x550d15){_0x550d15=_0x550d15||0x1f4;return function(_0x51a7c5){logger[_0x5907('0x26')](_0x51a7c5[_0x5907('0x27')]);if(_0x51a7c5[_0x5907('0x28')]){delete _0x51a7c5[_0x5907('0x28')];}_0x4f966b[_0x5907('0x18')](_0x550d15)['send'](_0x51a7c5);};}exports[_0x5907('0x29')]=function(_0x4678c0,_0x5d5e28){var _0x307603={},_0x32f8c4={},_0x39ef24={'count':0x0,'rows':[]};var _0x63d9cf=_['map'](db[_0x5907('0x2a')][_0x5907('0x2b')],function(_0x235bcd){return{'name':_0x235bcd[_0x5907('0x2c')],'type':_0x235bcd[_0x5907('0x2d')]['key']};});_0x32f8c4['model']=_[_0x5907('0x2e')](_0x63d9cf,'name');_0x32f8c4['query']=_[_0x5907('0x2f')](_0x4678c0[_0x5907('0x30')]);_0x32f8c4[_0x5907('0x31')]=_[_0x5907('0x32')](_0x32f8c4[_0x5907('0x33')],_0x32f8c4[_0x5907('0x30')]);_0x307603[_0x5907('0x34')]=_['intersection'](_0x32f8c4['model'],qs['fields'](_0x4678c0['query'][_0x5907('0x35')]));_0x307603['attributes']=_0x307603[_0x5907('0x34')][_0x5907('0x36')]?_0x307603[_0x5907('0x34')]:_0x32f8c4['model'];if(!_0x4678c0['query'][_0x5907('0x37')](_0x5907('0x38'))){_0x307603[_0x5907('0x1c')]=qs[_0x5907('0x1c')](_0x4678c0[_0x5907('0x30')][_0x5907('0x1c')]);_0x307603[_0x5907('0x1a')]=qs[_0x5907('0x1a')](_0x4678c0['query'][_0x5907('0x1a')]);}_0x307603[_0x5907('0x39')]=qs[_0x5907('0x3a')](_0x4678c0[_0x5907('0x30')][_0x5907('0x3a')]);_0x307603[_0x5907('0x3b')]=qs['filters'](_[_0x5907('0x3c')](_0x4678c0[_0x5907('0x30')],_0x32f8c4['filters']),_0x63d9cf);if(_0x4678c0[_0x5907('0x30')]['filter']){_0x307603[_0x5907('0x3b')]=_[_0x5907('0x3d')](_0x307603[_0x5907('0x3b')],{'$or':_[_0x5907('0x2e')](_0x63d9cf,function(_0x253278){if(_0x253278[_0x5907('0x2d')]!==_0x5907('0x3e')){var _0x1b5b3a={};_0x1b5b3a[_0x253278[_0x5907('0x28')]]={'$like':'%'+_0x4678c0[_0x5907('0x30')][_0x5907('0x3f')]+'%'};return _0x1b5b3a;}})});}_0x307603=_[_0x5907('0x3d')]({},_0x307603,_0x4678c0['options']);var _0x58bf6f={'where':_0x307603[_0x5907('0x3b')]};return db[_0x5907('0x2a')]['count'](_0x58bf6f)[_0x5907('0x23')](function(_0x9300de){_0x39ef24[_0x5907('0x1d')]=_0x9300de;if(_0x4678c0[_0x5907('0x30')]['includeAll']){_0x307603[_0x5907('0x40')]=[{'all':!![]}];}return db[_0x5907('0x2a')][_0x5907('0x41')](_0x307603);})[_0x5907('0x23')](function(_0x55df45){_0x39ef24['rows']=_0x55df45;return _0x39ef24;})['then'](respondWithFilteredResult(_0x5d5e28,_0x307603))[_0x5907('0x42')](handleError(_0x5d5e28,null));};exports[_0x5907('0x43')]=function(_0x4fa23a,_0x41b8bb){var _0x127f3c={'raw':!![],'where':{'id':_0x4fa23a[_0x5907('0x44')]['id']}},_0x2f004b={};_0x2f004b[_0x5907('0x33')]=_[_0x5907('0x2f')](db['DeskField'][_0x5907('0x2b')]);_0x2f004b[_0x5907('0x30')]=_[_0x5907('0x2f')](_0x4fa23a[_0x5907('0x30')]);_0x2f004b['filters']=_[_0x5907('0x32')](_0x2f004b['model'],_0x2f004b[_0x5907('0x30')]);_0x127f3c[_0x5907('0x34')]=_['intersection'](_0x2f004b[_0x5907('0x33')],qs[_0x5907('0x35')](_0x4fa23a[_0x5907('0x30')]['fields']));_0x127f3c[_0x5907('0x34')]=_0x127f3c[_0x5907('0x34')]['length']?_0x127f3c[_0x5907('0x34')]:_0x2f004b[_0x5907('0x33')];if(_0x4fa23a[_0x5907('0x30')][_0x5907('0x45')]){_0x127f3c[_0x5907('0x40')]=[{'all':!![]}];}_0x127f3c=_[_0x5907('0x3d')]({},_0x127f3c,_0x4fa23a[_0x5907('0x46')]);return db[_0x5907('0x2a')][_0x5907('0x47')](_0x127f3c)['then'](handleEntityNotFound(_0x41b8bb,null))['then'](respondWithResult(_0x41b8bb,null))[_0x5907('0x42')](handleError(_0x41b8bb,null));};exports[_0x5907('0x48')]=function(_0x77bda0,_0x50e92b){return db[_0x5907('0x2a')]['create'](_0x77bda0[_0x5907('0x49')],{})['then'](respondWithResult(_0x50e92b,0xc9))[_0x5907('0x42')](handleError(_0x50e92b,null));};exports['update']=function(_0x476c7d,_0x3d915f){if(_0x476c7d['body']['id']){delete _0x476c7d[_0x5907('0x49')]['id'];}return db[_0x5907('0x2a')][_0x5907('0x47')]({'where':{'id':_0x476c7d['params']['id']}})['then'](handleEntityNotFound(_0x3d915f,null))[_0x5907('0x23')](saveUpdates(_0x476c7d[_0x5907('0x49')],null))['then'](respondWithResult(_0x3d915f,null))['catch'](handleError(_0x3d915f,null));};exports[_0x5907('0x4a')]=function(_0x5c78f5,_0x175c0e){return db['DeskField'][_0x5907('0x47')]({'where':{'id':_0x5c78f5[_0x5907('0x44')]['id']}})[_0x5907('0x23')](handleEntityNotFound(_0x175c0e,null))[_0x5907('0x23')](removeEntity(_0x175c0e,null))[_0x5907('0x42')](handleError(_0x175c0e,null));};
\ No newline at end of file
index ef2d1f9..1f0e0c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeee3=['moment','request-promise','path','../../config/environment','exports','DeskField','int_desk_fields','desk_unique_index','idField','lodash','util'];(function(_0x2bf5a3,_0x32fccf){var _0x19e769=function(_0x518858){while(--_0x518858){_0x2bf5a3['push'](_0x2bf5a3['shift']());}};_0x19e769(++_0x32fccf);}(_0xeee3,0x1d7));var _0x3eee=function(_0xc4d9ca,_0xeefc6e){_0xc4d9ca=_0xc4d9ca-0x0;var _0x4010be=_0xeee3[_0xc4d9ca];return _0x4010be;};'use strict';var _=require(_0x3eee('0x0'));var util=require(_0x3eee('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x3eee('0x2'));var BPromise=require('bluebird');var rp=require(_0x3eee('0x3'));var fs=require('fs');var path=require(_0x3eee('0x4'));var rimraf=require('rimraf');var config=require(_0x3eee('0x5'));var attributes=require('./intDeskField.attributes');module[_0x3eee('0x6')]=function(_0x498560,_0xff7041){return _0x498560['define'](_0x3eee('0x7'),attributes,{'tableName':_0x3eee('0x8'),'paranoid':![],'indexes':[{'name':_0x3eee('0x9'),'fields':[_0x3eee('0xa'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x84e4=['util','../../config/logger','api','moment','bluebird','path','../../config/environment','./intDeskField.attributes','exports','define','DeskField','desk_unique_index','idField','FieldId','lodash'];(function(_0x37e8db,_0x4a0d81){var _0xcfe2d0=function(_0x547885){while(--_0x547885){_0x37e8db['push'](_0x37e8db['shift']());}};_0xcfe2d0(++_0x4a0d81);}(_0x84e4,0x68));var _0x484e=function(_0x17b0d4,_0x377add){_0x17b0d4=_0x17b0d4-0x0;var _0x2d02c7=_0x84e4[_0x17b0d4];return _0x2d02c7;};'use strict';var _=require(_0x484e('0x0'));var util=require(_0x484e('0x1'));var logger=require(_0x484e('0x2'))(_0x484e('0x3'));var moment=require(_0x484e('0x4'));var BPromise=require(_0x484e('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x484e('0x6'));var rimraf=require('rimraf');var config=require(_0x484e('0x7'));var attributes=require(_0x484e('0x8'));module[_0x484e('0x9')]=function(_0x44033d,_0x416743){return _0x44033d[_0x484e('0xa')](_0x484e('0xb'),attributes,{'tableName':'int_desk_fields','paranoid':![],'indexes':[{'name':_0x484e('0xc'),'fields':[_0x484e('0xd'),_0x484e('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 1a9721f..5866d4d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1e63=['result','catch','moment','bluebird','randomstring','../../mysqldb','../../config/utils','jayson/promise','client','http','request','info','DeskField,\x20%s,\x20%s','request\x20sent','debug','DeskField,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x5c648f,_0x45107b){var _0x36fa43=function(_0x1a9a63){while(--_0x1a9a63){_0x5c648f['push'](_0x5c648f['shift']());}};_0x36fa43(++_0x45107b);}(_0x1e63,0x8e));var _0x31e6=function(_0x322e64,_0x55c53e){_0x322e64=_0x322e64-0x0;var _0x57d99a=_0x1e63[_0x322e64];return _0x57d99a;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x31e6('0x0'));var BPromise=require(_0x31e6('0x1'));var rs=require(_0x31e6('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x31e6('0x3'))['db'];var utils=require(_0x31e6('0x4'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x31e6('0x5'));var client=jayson[_0x31e6('0x6')][_0x31e6('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x404ba6,_0x571e4a,_0x25413c){return new BPromise(function(_0x5a61be,_0x56a470){return client[_0x31e6('0x8')](_0x404ba6,_0x25413c)['then'](function(_0x568465){logger[_0x31e6('0x9')](_0x31e6('0xa'),_0x571e4a,_0x31e6('0xb'));logger[_0x31e6('0xc')](_0x31e6('0xd'),_0x571e4a,_0x31e6('0xb'),JSON[_0x31e6('0xe')](_0x568465));if(_0x568465['error']){if(_0x568465[_0x31e6('0xf')][_0x31e6('0x10')]===0x1f4){logger['error']('DeskField,\x20%s,\x20%s',_0x571e4a,_0x568465[_0x31e6('0xf')][_0x31e6('0x11')]);return _0x56a470(_0x568465[_0x31e6('0xf')][_0x31e6('0x11')]);}logger[_0x31e6('0xf')]('DeskField,\x20%s,\x20%s',_0x571e4a,_0x568465[_0x31e6('0xf')][_0x31e6('0x11')]);return _0x5a61be(_0x568465['error'][_0x31e6('0x11')]);}else{logger[_0x31e6('0x9')](_0x31e6('0xa'),_0x571e4a,'request\x20sent');_0x5a61be(_0x568465[_0x31e6('0x12')]['message']);}})[_0x31e6('0x13')](function(_0x4b9d62){logger[_0x31e6('0xf')]('DeskField,\x20%s,\x20%s',_0x571e4a,_0x4b9d62);_0x56a470(_0x4b9d62);});});}
\ No newline at end of file
+var _0x55b7=['../../config/logger','rpc','jayson/promise','client','http','info','DeskField,\x20%s,\x20%s','debug','DeskField,\x20%s,\x20%s,\x20%s','stringify','error','message','request\x20sent','util','randomstring','../../mysqldb','../../config/utils'];(function(_0x45379d,_0x4651a0){var _0xa0ea5=function(_0x16766){while(--_0x16766){_0x45379d['push'](_0x45379d['shift']());}};_0xa0ea5(++_0x4651a0);}(_0x55b7,0x194));var _0x755b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x55b7[_0x20a584];return _0x4b41a8;};'use strict';var _=require('lodash');var util=require(_0x755b('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x755b('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x755b('0x2'))['db'];var utils=require(_0x755b('0x3'));var logger=require(_0x755b('0x4'))(_0x755b('0x5'));var config=require('../../config/environment');var jayson=require(_0x755b('0x6'));var client=jayson[_0x755b('0x7')][_0x755b('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x14158e,_0x458c64,_0x46eb12){return new BPromise(function(_0x256234,_0x5c71c6){return client['request'](_0x14158e,_0x46eb12)['then'](function(_0x4459c0){logger[_0x755b('0x9')](_0x755b('0xa'),_0x458c64,'request\x20sent');logger[_0x755b('0xb')](_0x755b('0xc'),_0x458c64,'request\x20sent',JSON[_0x755b('0xd')](_0x4459c0));if(_0x4459c0[_0x755b('0xe')]){if(_0x4459c0['error']['code']===0x1f4){logger[_0x755b('0xe')]('DeskField,\x20%s,\x20%s',_0x458c64,_0x4459c0[_0x755b('0xe')][_0x755b('0xf')]);return _0x5c71c6(_0x4459c0[_0x755b('0xe')]['message']);}logger[_0x755b('0xe')](_0x755b('0xa'),_0x458c64,_0x4459c0[_0x755b('0xe')][_0x755b('0xf')]);return _0x256234(_0x4459c0['error'][_0x755b('0xf')]);}else{logger[_0x755b('0x9')]('DeskField,\x20%s,\x20%s',_0x458c64,_0x755b('0x10'));_0x256234(_0x4459c0['result'][_0x755b('0xf')]);}})['catch'](function(_0x33e589){logger['error'](_0x755b('0xa'),_0x458c64,_0x33e589);_0x5c71c6(_0x33e589);});});}
\ No newline at end of file
index 7235f07..88ef279 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x224c=['index','get','/:id','/:id/configurations','getConfigurations','/:id/fields','post','addConfiguration','update','delete','destroy','multer','util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated'];(function(_0x49db21,_0x570db1){var _0x3f1d1f=function(_0x44b375){while(--_0x44b375){_0x49db21['push'](_0x49db21['shift']());}};_0x3f1d1f(++_0x570db1);}(_0x224c,0x1d7));var _0xc224=function(_0x13fd16,_0x2b3b13){_0x13fd16=_0x13fd16-0x0;var _0x3c44db=_0x224c[_0x13fd16];return _0x3c44db;};'use strict';var multer=require(_0xc224('0x0'));var util=require(_0xc224('0x1'));var path=require('path');var timeout=require(_0xc224('0x2'));var express=require(_0xc224('0x3'));var router=express['Router']();var fs_extra=require(_0xc224('0x4'));var auth=require(_0xc224('0x5'));var interaction=require(_0xc224('0x6'));var config=require(_0xc224('0x7'));var controller=require('./intDynamics365Account.controller');router['get']('/',auth[_0xc224('0x8')](),controller[_0xc224('0x9')]);router[_0xc224('0xa')](_0xc224('0xb'),auth[_0xc224('0x8')](),controller['show']);router['get'](_0xc224('0xc'),auth[_0xc224('0x8')](),controller[_0xc224('0xd')]);router['get'](_0xc224('0xe'),auth[_0xc224('0x8')](),controller['getFields']);router[_0xc224('0xf')]('/',auth['isAuthenticated'](),controller['create']);router[_0xc224('0xf')](_0xc224('0xc'),auth[_0xc224('0x8')](),controller[_0xc224('0x10')]);router['put']('/:id',auth[_0xc224('0x8')](),controller[_0xc224('0x11')]);router[_0xc224('0x12')](_0xc224('0xb'),auth[_0xc224('0x8')](),controller[_0xc224('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0xfbc4=['fs-extra','../../components/interaction/service','../../config/environment','get','index','/:id','isAuthenticated','show','/:id/configurations','getConfigurations','/:id/fields','getFields','post','addConfiguration','put','update','delete','destroy','util','path','Router'];(function(_0x22cc3d,_0x49b54d){var _0x51041e=function(_0x44500b){while(--_0x44500b){_0x22cc3d['push'](_0x22cc3d['shift']());}};_0x51041e(++_0x49b54d);}(_0xfbc4,0xf9));var _0x4fbc=function(_0x3c429f,_0x4fb350){_0x3c429f=_0x3c429f-0x0;var _0x438f3d=_0xfbc4[_0x3c429f];return _0x438f3d;};'use strict';var multer=require('multer');var util=require(_0x4fbc('0x0'));var path=require(_0x4fbc('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x4fbc('0x2')]();var fs_extra=require(_0x4fbc('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x4fbc('0x4'));var config=require(_0x4fbc('0x5'));var controller=require('./intDynamics365Account.controller');router[_0x4fbc('0x6')]('/',auth['isAuthenticated'](),controller[_0x4fbc('0x7')]);router['get'](_0x4fbc('0x8'),auth[_0x4fbc('0x9')](),controller[_0x4fbc('0xa')]);router[_0x4fbc('0x6')](_0x4fbc('0xb'),auth['isAuthenticated'](),controller[_0x4fbc('0xc')]);router[_0x4fbc('0x6')](_0x4fbc('0xd'),auth['isAuthenticated'](),controller[_0x4fbc('0xe')]);router[_0x4fbc('0xf')]('/',auth['isAuthenticated'](),controller['create']);router[_0x4fbc('0xf')](_0x4fbc('0xb'),auth['isAuthenticated'](),controller[_0x4fbc('0x10')]);router[_0x4fbc('0x11')](_0x4fbc('0x8'),auth['isAuthenticated'](),controller[_0x4fbc('0x12')]);router[_0x4fbc('0x13')](_0x4fbc('0x8'),auth[_0x4fbc('0x9')](),controller[_0x4fbc('0x14')]);module['exports']=router;
\ No newline at end of file
index ba266dd..b11c960 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe735=['exports','STRING','sequelize'];(function(_0x3d0397,_0x1d64c2){var _0x391edf=function(_0x239f9d){while(--_0x239f9d){_0x3d0397['push'](_0x3d0397['shift']());}};_0x391edf(++_0x1d64c2);}(_0xe735,0x6e));var _0x5e73=function(_0x189305,_0x46c43f){_0x189305=_0x189305-0x0;var _0xea3406=_0xe735[_0x189305];return _0xea3406;};'use strict';var Sequelize=require(_0x5e73('0x0'));module[_0x5e73('0x1')]={'name':{'type':Sequelize[_0x5e73('0x2')]},'username':{'type':Sequelize[_0x5e73('0x2')]},'password':{'type':Sequelize[_0x5e73('0x2')]},'remoteUri':{'type':Sequelize[_0x5e73('0x2')]},'tenantId':{'type':Sequelize[_0x5e73('0x2')]},'clientId':{'type':Sequelize[_0x5e73('0x2')]},'clientSecret':{'type':Sequelize['STRING']},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize[_0x5e73('0x2')]}};
\ No newline at end of file
+var _0xd131=['exports','STRING','sequelize'];(function(_0x449dd5,_0x1a341c){var _0x51bf09=function(_0x21eae2){while(--_0x21eae2){_0x449dd5['push'](_0x449dd5['shift']());}};_0x51bf09(++_0x1a341c);}(_0xd131,0x191));var _0x1d13=function(_0x14634f,_0x5ed190){_0x14634f=_0x14634f-0x0;var _0x5021f9=_0xd131[_0x14634f];return _0x5021f9;};'use strict';var Sequelize=require(_0x1d13('0x0'));module[_0x1d13('0x1')]={'name':{'type':Sequelize[_0x1d13('0x2')]},'username':{'type':Sequelize['STRING']},'password':{'type':Sequelize[_0x1d13('0x2')]},'remoteUri':{'type':Sequelize[_0x1d13('0x2')]},'tenantId':{'type':Sequelize['STRING']},'clientId':{'type':Sequelize[_0x1d13('0x2')]},'clientSecret':{'type':Sequelize[_0x1d13('0x2')]},'serverUrl':{'type':Sequelize[_0x1d13('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x1d13('0x2')]}};
\ No newline at end of file
index 34b6b46..e159bba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8558=['responseby','responsiblecontactidyominame','sentimentvalue','slainvokedidname','slaname','socialprofileidname','statecode','timezoneruleversionnumber','transactioncurrencyidname','traversedpath','utcconversiontimezonecode','versionnumber','concat','username','password','remoteUri','clientId','clientSecret','substring','lastIndexOf','format','%s/api/data/v9.0/','POST','tenantId','access_token','GET','Bearer\x20','4.0','value','EntityDefinitions(','Attributes','includes','LogicalName','forEach','@odata.type','push','MetadataId','isNil','StringAttributeMetadata','DoubleAttributeMetadata','BigIntAttributeMetadata','IntegerAttributeMetadata','DateTimeAttributeMetadata','StatusAttributeMetadata','EntityNameAttributeMetadata','StateAttributeMetadata','all','test','statusCode','error','Wrong\x20credentials',')/Attributes(',')/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?','$select=DisplayName,LogicalName&$expand=OptionSet($select=Options)','OptionSet','Options','UserLocalizedLabel','DisplayName',')/Microsoft.Dynamics.CRM.BooleanAttributeMetadata?$select=DisplayName,LogicalName&$expand=OptionSet($select=FalseOption,\x20TrueOption)','Label','true','FalseOption','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../components/integrations/configuration','sendStatus','status','end','undefined','offset','count','set','apply','reject','save','update','then','destroy','stack','name','send','index','rawAttributes','fieldName','type','key','model','keys','query','intersection','attributes','fields','length','hasOwnProperty','limit','order','sort','where','filters','pick','filter','merge','Dynamics365Account','includeAll','include','findAll','show','options','find','catch','create','body','params','getConfigurations','findOne','Dynamics365Configuration','map','nolimit','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','Dynamics365Field','getFields','ticketType','incident','Incident','PhoneCall','ownerid','caseorigincode','phonenumber','regardingobjectid','directioncode','phonecall_activity_parties','accountidname','accountidyominame','actualserviceunits','contactidname','contactidyominame','contractdetailidname','createdbyexternalpartyname','createdbyname','createdbyyominame','createdonbehalfbyname','createdonbehalfbyyominame','customeridname','customeridtype','customeridyominame','emailaddress','entitlementidname','entityimage_timestamp','entityimage_url','firstresponsebykpiidname','followupby','importsequencenumber','kbarticleidname','masteridname','modifiedbyexternalpartyyominame','modifiedbyname','modifiedonbehalfbyyominame','msdyn_incidenttypename','msdyn_iotalertname','numberofchildincidents','onholdtime','overriddencreatedon','owneridtype','owneridyominame','parentcaseidname','primarycontactidyominame','prioritycodename','productserialnumber','resolvebykpiidname'];(function(_0x4ae6ef,_0xc2af80){var _0x3cbb4e=function(_0x569ad5){while(--_0x569ad5){_0x4ae6ef['push'](_0x4ae6ef['shift']());}};_0x3cbb4e(++_0xc2af80);}(_0x8558,0x103));var _0x8855=function(_0x448191,_0x15147b){_0x448191=_0x448191-0x0;var _0xa43225=_0x8558[_0x448191];return _0xa43225;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x8855('0x0'));var zipdir=require(_0x8855('0x1'));var jsonpatch=require(_0x8855('0x2'));var rp=require(_0x8855('0x3'));var moment=require(_0x8855('0x4'));var BPromise=require(_0x8855('0x5'));var Mustache=require(_0x8855('0x6'));var util=require('util');var path=require(_0x8855('0x7'));var sox=require('sox');var csv=require(_0x8855('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8855('0x9'));var _=require(_0x8855('0xa'));var squel=require(_0x8855('0xb'));var crypto=require(_0x8855('0xc'));var jsforce=require(_0x8855('0xd'));var deskjs=require(_0x8855('0xe'));var toCsv=require(_0x8855('0x8'));var querystring=require('querystring');var Papa=require(_0x8855('0xf'));var Redis=require(_0x8855('0x10'));var authService=require(_0x8855('0x11'));var qs=require(_0x8855('0x12'));var as=require(_0x8855('0x13'));var hardwareService=require(_0x8855('0x14'));var logger=require(_0x8855('0x15'))(_0x8855('0x16'));var utils=require('../../config/utils');var config=require(_0x8855('0x17'));var licenseUtil=require(_0x8855('0x18'));var db=require('../../mysqldb')['db'];var integrations=require(_0x8855('0x19'));function respondWithStatusCode(_0x18e792,_0x4dfa81){_0x4dfa81=_0x4dfa81||0xcc;return function(_0x1b4652){if(_0x1b4652){return _0x18e792[_0x8855('0x1a')](_0x4dfa81);}return _0x18e792[_0x8855('0x1b')](_0x4dfa81)[_0x8855('0x1c')]();};}function respondWithResult(_0x49c654,_0x30d153){_0x30d153=_0x30d153||0xc8;return function(_0x4c8d10){if(_0x4c8d10){return _0x49c654[_0x8855('0x1b')](_0x30d153)['json'](_0x4c8d10);}};}function respondWithFilteredResult(_0x1084b3,_0x466da3){return function(_0x406b81){if(_0x406b81){var _0x3849a5=typeof _0x466da3['offset']===_0x8855('0x1d')&&typeof _0x466da3['limit']===_0x8855('0x1d');var _0x1d6978=_0x406b81['count'];var _0x7d150=_0x3849a5?0x0:_0x466da3[_0x8855('0x1e')];var _0x5a1a9b=_0x3849a5?_0x406b81[_0x8855('0x1f')]:_0x466da3[_0x8855('0x1e')]+_0x466da3['limit'];var _0x38c4f4;if(_0x5a1a9b>=_0x1d6978){_0x5a1a9b=_0x1d6978;_0x38c4f4=0xc8;}else{_0x38c4f4=0xce;}_0x1084b3[_0x8855('0x1b')](_0x38c4f4);return _0x1084b3[_0x8855('0x20')]('Content-Range',_0x7d150+'-'+_0x5a1a9b+'/'+_0x1d6978)['json'](_0x406b81);}return null;};}function patchUpdates(_0x5103f3){return function(_0x53db0b){try{jsonpatch[_0x8855('0x21')](_0x53db0b,_0x5103f3,!![]);}catch(_0x35c6e4){return BPromise[_0x8855('0x22')](_0x35c6e4);}return _0x53db0b[_0x8855('0x23')]();};}function saveUpdates(_0x43c2a0,_0xb0d645){return function(_0x3449ed){if(_0x3449ed){return _0x3449ed[_0x8855('0x24')](_0x43c2a0)[_0x8855('0x25')](function(_0x24371b){return _0x24371b;});}return null;};}function removeEntity(_0x59fed2,_0x4c5514){return function(_0xe3577){if(_0xe3577){return _0xe3577[_0x8855('0x26')]()[_0x8855('0x25')](function(){_0x59fed2[_0x8855('0x1b')](0xcc)[_0x8855('0x1c')]();});}};}function handleEntityNotFound(_0x320386,_0x695777){return function(_0x46b701){if(!_0x46b701){_0x320386[_0x8855('0x1a')](0x194);}return _0x46b701;};}function handleError(_0x3dca5b,_0x375972){_0x375972=_0x375972||0x1f4;return function(_0x58574c){logger['error'](_0x58574c[_0x8855('0x27')]);if(_0x58574c[_0x8855('0x28')]){delete _0x58574c[_0x8855('0x28')];}_0x3dca5b['status'](_0x375972)[_0x8855('0x29')](_0x58574c);};}exports[_0x8855('0x2a')]=function(_0x44e0b4,_0x346b2){var _0x1f26a9={},_0x2dad35={},_0x1774ed={'count':0x0,'rows':[]};var _0x5d3611=_['map'](db['Dynamics365Account'][_0x8855('0x2b')],function(_0x324fd3){return{'name':_0x324fd3[_0x8855('0x2c')],'type':_0x324fd3[_0x8855('0x2d')][_0x8855('0x2e')]};});_0x2dad35[_0x8855('0x2f')]=_['map'](_0x5d3611,'name');_0x2dad35['query']=_[_0x8855('0x30')](_0x44e0b4[_0x8855('0x31')]);_0x2dad35['filters']=_[_0x8855('0x32')](_0x2dad35['model'],_0x2dad35[_0x8855('0x31')]);_0x1f26a9[_0x8855('0x33')]=_[_0x8855('0x32')](_0x2dad35[_0x8855('0x2f')],qs['fields'](_0x44e0b4[_0x8855('0x31')][_0x8855('0x34')]));_0x1f26a9['attributes']=_0x1f26a9[_0x8855('0x33')][_0x8855('0x35')]?_0x1f26a9[_0x8855('0x33')]:_0x2dad35[_0x8855('0x2f')];if(!_0x44e0b4['query'][_0x8855('0x36')]('nolimit')){_0x1f26a9['limit']=qs[_0x8855('0x37')](_0x44e0b4[_0x8855('0x31')][_0x8855('0x37')]);_0x1f26a9['offset']=qs[_0x8855('0x1e')](_0x44e0b4[_0x8855('0x31')][_0x8855('0x1e')]);}_0x1f26a9[_0x8855('0x38')]=qs[_0x8855('0x39')](_0x44e0b4[_0x8855('0x31')][_0x8855('0x39')]);_0x1f26a9[_0x8855('0x3a')]=qs[_0x8855('0x3b')](_[_0x8855('0x3c')](_0x44e0b4['query'],_0x2dad35[_0x8855('0x3b')]),_0x5d3611);if(_0x44e0b4[_0x8855('0x31')][_0x8855('0x3d')]){_0x1f26a9[_0x8855('0x3a')]=_[_0x8855('0x3e')](_0x1f26a9['where'],{'$or':_['map'](_0x5d3611,function(_0x2b9658){if(_0x2b9658['type']!=='VIRTUAL'){var _0xc3f96c={};_0xc3f96c[_0x2b9658[_0x8855('0x28')]]={'$like':'%'+_0x44e0b4[_0x8855('0x31')][_0x8855('0x3d')]+'%'};return _0xc3f96c;}})});}_0x1f26a9=_[_0x8855('0x3e')]({},_0x1f26a9,_0x44e0b4['options']);var _0x162ff9={'where':_0x1f26a9[_0x8855('0x3a')]};return db[_0x8855('0x3f')]['count'](_0x162ff9)[_0x8855('0x25')](function(_0xea3a3){_0x1774ed[_0x8855('0x1f')]=_0xea3a3;if(_0x44e0b4[_0x8855('0x31')][_0x8855('0x40')]){_0x1f26a9[_0x8855('0x41')]=[{'all':!![]}];}return db[_0x8855('0x3f')][_0x8855('0x42')](_0x1f26a9);})[_0x8855('0x25')](function(_0x1f55c1){_0x1774ed['rows']=_0x1f55c1;return _0x1774ed;})['then'](respondWithFilteredResult(_0x346b2,_0x1f26a9))['catch'](handleError(_0x346b2,null));};exports[_0x8855('0x43')]=function(_0x35120e,_0x31c232){var _0x142af9={'raw':![],'where':{'id':_0x35120e['params']['id']}},_0x146311={};_0x146311[_0x8855('0x2f')]=_[_0x8855('0x30')](db[_0x8855('0x3f')]['rawAttributes']);_0x146311['query']=_[_0x8855('0x30')](_0x35120e['query']);_0x146311[_0x8855('0x3b')]=_[_0x8855('0x32')](_0x146311[_0x8855('0x2f')],_0x146311[_0x8855('0x31')]);_0x142af9[_0x8855('0x33')]=_[_0x8855('0x32')](_0x146311[_0x8855('0x2f')],qs[_0x8855('0x34')](_0x35120e[_0x8855('0x31')][_0x8855('0x34')]));_0x142af9['attributes']=_0x142af9[_0x8855('0x33')]['length']?_0x142af9['attributes']:_0x146311['model'];if(_0x35120e[_0x8855('0x31')][_0x8855('0x40')]){_0x142af9[_0x8855('0x41')]=[{'all':!![]}];}_0x142af9=_['merge']({},_0x142af9,_0x35120e[_0x8855('0x44')]);return db[_0x8855('0x3f')][_0x8855('0x45')](_0x142af9)[_0x8855('0x25')](handleEntityNotFound(_0x31c232,null))['then'](respondWithResult(_0x31c232,null))[_0x8855('0x46')](handleError(_0x31c232,null));};exports['create']=function(_0x458488,_0x110bbd){return db[_0x8855('0x3f')][_0x8855('0x47')](_0x458488[_0x8855('0x48')],{})[_0x8855('0x25')](respondWithResult(_0x110bbd,0xc9))[_0x8855('0x46')](handleError(_0x110bbd,null));};exports[_0x8855('0x24')]=function(_0x4f1bef,_0x150fee){if(_0x4f1bef[_0x8855('0x48')]['id']){delete _0x4f1bef['body']['id'];}return db['Dynamics365Account'][_0x8855('0x45')]({'where':{'id':_0x4f1bef[_0x8855('0x49')]['id']}})[_0x8855('0x25')](handleEntityNotFound(_0x150fee,null))['then'](saveUpdates(_0x4f1bef['body'],null))[_0x8855('0x25')](respondWithResult(_0x150fee,null))['catch'](handleError(_0x150fee,null));};exports['destroy']=function(_0x113d33,_0x2bb4fe){return db['Dynamics365Account'][_0x8855('0x45')]({'where':{'id':_0x113d33['params']['id']}})[_0x8855('0x25')](handleEntityNotFound(_0x2bb4fe,null))['then'](removeEntity(_0x2bb4fe,null))['catch'](handleError(_0x2bb4fe,null));};exports[_0x8855('0x4a')]=function(_0x5a6e91,_0x57e669,_0xad84d8){var _0xfc9b15={};var _0x274a81={};var _0x451d58;var _0x40d738;return db[_0x8855('0x3f')][_0x8855('0x4b')]({'where':{'id':_0x5a6e91[_0x8855('0x49')]['id']}})[_0x8855('0x25')](handleEntityNotFound(_0x57e669,null))[_0x8855('0x25')](function(_0x32385b){if(_0x32385b){_0x451d58=_0x32385b;_0x274a81[_0x8855('0x2f')]=_[_0x8855('0x30')](db[_0x8855('0x4c')]['rawAttributes']);_0x274a81[_0x8855('0x31')]=_[_0x8855('0x30')](_0x5a6e91[_0x8855('0x31')]);_0x274a81['filters']=_[_0x8855('0x32')](_0x274a81[_0x8855('0x2f')],_0x274a81[_0x8855('0x31')]);_0xfc9b15[_0x8855('0x33')]=_[_0x8855('0x32')](_0x274a81[_0x8855('0x2f')],qs['fields'](_0x5a6e91['query'][_0x8855('0x34')]));_0xfc9b15[_0x8855('0x33')]=_0xfc9b15['attributes']['length']?_0xfc9b15['attributes']:_0x274a81[_0x8855('0x2f')];_0xfc9b15['order']=qs['sort'](_0x5a6e91[_0x8855('0x31')][_0x8855('0x39')]);_0xfc9b15[_0x8855('0x3a')]=qs[_0x8855('0x3b')](_['pick'](_0x5a6e91[_0x8855('0x31')],_0x274a81[_0x8855('0x3b')]));if(_0x5a6e91[_0x8855('0x31')][_0x8855('0x3d')]){_0xfc9b15['where']=_['merge'](_0xfc9b15[_0x8855('0x3a')],{'$or':_[_0x8855('0x4d')](_0xfc9b15[_0x8855('0x33')],function(_0x2cbca5){var _0x51cddf={};_0x51cddf[_0x2cbca5]={'$like':'%'+_0x5a6e91[_0x8855('0x31')][_0x8855('0x3d')]+'%'};return _0x51cddf;})});}_0xfc9b15=_[_0x8855('0x3e')]({},_0xfc9b15,_0x5a6e91[_0x8855('0x44')]);return _0x451d58['getConfigurations'](_0xfc9b15);}})[_0x8855('0x25')](function(_0x21fb59){if(_0x21fb59){_0x40d738=_0x21fb59[_0x8855('0x35')];if(!_0x5a6e91[_0x8855('0x31')][_0x8855('0x36')](_0x8855('0x4e'))){_0xfc9b15['limit']=qs['limit'](_0x5a6e91['query'][_0x8855('0x37')]);_0xfc9b15[_0x8855('0x1e')]=qs[_0x8855('0x1e')](_0x5a6e91['query'][_0x8855('0x1e')]);}return _0x451d58['getConfigurations'](_0xfc9b15);}})[_0x8855('0x25')](function(_0x190602){if(_0x190602){return _0x190602?{'count':_0x40d738,'rows':_0x190602}:null;}})[_0x8855('0x25')](respondWithResult(_0x57e669,null))[_0x8855('0x46')](handleError(_0x57e669,null));};exports[_0x8855('0x4f')]=function(_0x10e5d3,_0x2819eb,_0x3fceb3){if(_0x10e5d3[_0x8855('0x48')]['id']){delete _0x10e5d3['body']['id'];}return db['Dynamics365Account'][_0x8855('0x4b')]({'where':{'id':_0x10e5d3[_0x8855('0x49')]['id']}})[_0x8855('0x25')](handleEntityNotFound(_0x2819eb,null))[_0x8855('0x25')](function(_0x149dd4){if(_0x149dd4){_0x10e5d3[_0x8855('0x48')][_0x8855('0x50')]=_0x149dd4['id'];_0x10e5d3['body'][_0x8855('0x51')]=integrations[_0x8855('0x52')](_0x10e5d3[_0x8855('0x48')][_0x8855('0x53')],_0x10e5d3[_0x8855('0x48')][_0x8855('0x2d')]);_0x10e5d3['body'][_0x8855('0x54')]=integrations['getDescriptions'](_0x10e5d3[_0x8855('0x48')]['channel'],_0x10e5d3['body'][_0x8855('0x2d')]);return db['Dynamics365Configuration']['create'](_0x10e5d3[_0x8855('0x48')],{'include':[{'model':db['Dynamics365Field'],'as':_0x8855('0x51')},{'model':db[_0x8855('0x55')],'as':'Descriptions'}]});}return null;})['then'](respondWithResult(_0x2819eb,null))['catch'](handleError(_0x2819eb,null));};exports[_0x8855('0x56')]=function(_0xb664e1,_0x144c9c,_0x552ae3){var _0x188ff7=_0xb664e1[_0x8855('0x31')][_0x8855('0x57')];var _0x345ba3=_0x188ff7===_0x8855('0x58')?_0x8855('0x59'):_0x8855('0x5a');var _0x32fb2b='';var _0x3ab14d='';var _0x251d83='';var _0xef043e='';var _0x3df5dc='';var _0x1d7410='';var _0x33cbbb='';var _0x5e71d6='';var _0x3ca6b0=['title','description','customerid',_0x8855('0x5b'),_0x8855('0x5c'),'subject',_0x8855('0x5d'),_0x8855('0x5e'),_0x8855('0x5f'),_0x8855('0x60')];var _0x93fec1=[_0x8855('0x61'),_0x8855('0x62'),_0x8855('0x63'),'billedserviceunits',_0x8855('0x64'),_0x8855('0x65'),_0x8855('0x66'),'contractidname',_0x8855('0x67'),'createdbyexternalpartyyominame',_0x8855('0x68'),_0x8855('0x69'),'createdon',_0x8855('0x6a'),_0x8855('0x6b'),_0x8855('0x6c'),_0x8855('0x6d'),_0x8855('0x6e'),_0x8855('0x6f'),_0x8855('0x70'),_0x8855('0x71'),_0x8855('0x72'),'escalatedon','exchangerate',_0x8855('0x73'),_0x8855('0x74'),_0x8855('0x75'),'influencescore',_0x8855('0x76'),'lastonholdtime',_0x8855('0x77'),'modifiedbyexternalpartyname',_0x8855('0x78'),_0x8855('0x79'),'modifiedbyyominame','modifiedon','modifiedonbehalfbyname',_0x8855('0x7a'),_0x8855('0x7b'),_0x8855('0x7c'),_0x8855('0x7d'),_0x8855('0x7e'),_0x8855('0x7f'),'owneridname',_0x8855('0x80'),_0x8855('0x81'),_0x8855('0x82'),'primarycontactidname',_0x8855('0x83'),_0x8855('0x84'),'productidname',_0x8855('0x85'),'resolveby',_0x8855('0x86'),_0x8855('0x87'),'responsiblecontactidname',_0x8855('0x88'),_0x8855('0x89'),_0x8855('0x8a'),_0x8855('0x8b'),_0x8855('0x8c'),_0x8855('0x8d'),'statuscode','subjectidname','ticketnumber',_0x8855('0x8e'),_0x8855('0x8f'),_0x8855('0x90'),_0x8855('0x91'),_0x8855('0x92')];var _0x564838=_0x3ca6b0[_0x8855('0x93')](_0x93fec1);return db[_0x8855('0x3f')]['findOne']({'where':{'id':_0xb664e1['params']['id']},'attributes':['id',_0x8855('0x94'),_0x8855('0x95'),_0x8855('0x96'),'tenantId',_0x8855('0x97'),_0x8855('0x98')]})[_0x8855('0x25')](handleEntityNotFound(_0x144c9c,null))[_0x8855('0x25')](function(_0x457581){if(_0x457581){_0x5e71d6=_0x457581[_0x8855('0x96')];var _0x4f1978=_0x5e71d6['slice'](-0x1);if(_0x4f1978==='/'){_0x5e71d6=_0x5e71d6[_0x8855('0x99')](0x0,_0x5e71d6[_0x8855('0x9a')](_0x4f1978));}_0x33cbbb=util[_0x8855('0x9b')](_0x8855('0x9c'),_0x5e71d6);var _0x381d49={'method':_0x8855('0x9d'),'uri':'https://login.microsoftonline.com/'+_0x457581[_0x8855('0x9e')]+'/oauth2/token','form':{'client_id':_0x457581[_0x8855('0x97')],'resource':_0x5e71d6,'username':_0x457581[_0x8855('0x94')],'password':_0x457581['password'],'grant_type':'password','client_secret':_0x457581['clientSecret']},'json':!![]};return rp(_0x381d49);}})['then'](function(_0x30f5c4){_0x1d7410=_0x30f5c4[_0x8855('0x9f')];var _0x128422={'method':_0x8855('0xa0'),'uri':encodeURI(_0x33cbbb+'EntityDefinitions?$select=DisplayName,EntitySetName&$filter=SchemaName\x20eq\x20\x27'+_0x345ba3+'\x27'),'headers':{'Authorization':_0x8855('0xa1')+_0x1d7410,'If-None-Match':null,'OData-Version':_0x8855('0xa2')},'json':!![]};return rp(_0x128422);})[_0x8855('0x25')](function(_0x1f7389){var _0x5cb7e6=_0x1f7389[_0x8855('0xa3')][0x0];var _0x2fe5c7=_0x5cb7e6['MetadataId'];var _0x5af2d9={'method':_0x8855('0xa0'),'uri':_0x33cbbb+_0x8855('0xa4')+_0x2fe5c7+')?$select=LogicalName&$expand=Attributes($select=LogicalName)','headers':{'Authorization':_0x8855('0xa1')+_0x1d7410,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x5af2d9);})['then'](function(_0x330d24){_0x32fb2b=_0x330d24;_0x3ab14d=_0x32fb2b[_0x8855('0xa5')];_0x3ab14d=_['remove'](_0x3ab14d,function(_0x12888c){return!_0x564838[_0x8855('0xa6')](_0x12888c[_0x8855('0xa7')]);});var _0x1e9084=[];var _0x3b97cf=[];_0x3ab14d[_0x8855('0xa8')](function(_0x50860e){if(_0x50860e['@odata.type']){var _0x1bc160=_0x50860e[_0x8855('0xa9')][_0x8855('0x99')](_0x50860e[_0x8855('0xa9')][_0x8855('0x9a')]('.')+0x1);if(_0x1bc160==='PicklistAttributeMetadata'){_0x1e9084[_0x8855('0xaa')](getSelectList(_0x33cbbb,_0x188ff7,_0x3b97cf,_0x32fb2b[_0x8855('0xab')],_0x50860e[_0x8855('0xab')],_0x1d7410));}}});return Promise['all'](_0x1e9084);})[_0x8855('0x25')](function(_0x2d317f){_0x251d83=_0x2d317f[0x0];var _0x3b0081=[];var _0x39a9ce=[];_0x3ab14d[_0x8855('0xa8')](function(_0x32af30){if(!_[_0x8855('0xac')](_0x32af30['@odata.type'])){var _0x55a8b6=_0x32af30[_0x8855('0xa9')][_0x8855('0x99')](_0x32af30[_0x8855('0xa9')][_0x8855('0x9a')]('.')+0x1);if(_0x55a8b6==='BooleanAttributeMetadata'){_0x3b0081['push'](getBooleanList(_0x33cbbb,_0x188ff7,_0x39a9ce,_0x32fb2b[_0x8855('0xab')],_0x32af30[_0x8855('0xab')],_0x1d7410));}}});return Promise['all'](_0x3b0081);})[_0x8855('0x25')](function(_0x41f91c){_0xef043e=_0x41f91c[0x0];var _0x47dc67=[];var _0x54c951=[];_0x3ab14d[_0x8855('0xa8')](function(_0x2e20bd){if(_0x2e20bd[_0x8855('0xa9')]){var _0xca473a=_0x2e20bd[_0x8855('0xa9')][_0x8855('0x99')](_0x2e20bd['@odata.type'][_0x8855('0x9a')]('.')+0x1);if(_0xca473a===_0x8855('0xad')||_0xca473a===_0x8855('0xae')||_0xca473a===_0x8855('0xaf')||_0xca473a===_0x8855('0xb0')||_0xca473a==='MemoAttributeMetadata'||_0xca473a===_0x8855('0xb1')||_0xca473a===_0x8855('0xb2')||_0xca473a===_0x8855('0xb3')||_0xca473a===_0x8855('0xb4')||_0xca473a==='DecimalAttributeMetadata'){_0x47dc67[_0x8855('0xaa')](getInputList(_0x33cbbb,_0x188ff7,_0xca473a,_0x54c951,_0x32fb2b[_0x8855('0xab')],_0x2e20bd['MetadataId'],_0x1d7410));}}});return Promise[_0x8855('0xb5')](_0x47dc67);})[_0x8855('0x25')](function(_0xa96b3f){_0x3df5dc=_0xa96b3f[0x0];var _0x2f90b4=_0x251d83[_0x8855('0x93')](_0xef043e)['concat'](_0x3df5dc);var _0x1ce7b9={'count':_0x2f90b4[_0x8855('0x35')],'rows':_0x2f90b4};return _0x1ce7b9;})[_0x8855('0x25')](respondWithResult(_0x144c9c,null))[_0x8855('0x46')](function(_0x2140ee){var _0x26d2f2=_0xb664e1[_0x8855('0x31')][_0x8855('0xb6')]?0x1f4:_0x2140ee[_0x8855('0xb7')]||0x1f4;logger[_0x8855('0xb8')](_0x2140ee['stack']);delete _0x2140ee[_0x8855('0x28')];if(_0x26d2f2===0x191){_0x26d2f2=0x190;}_0x144c9c['status'](_0x26d2f2)[_0x8855('0x29')](_0xb664e1[_0x8855('0x31')][_0x8855('0xb6')]?{'message':_0x8855('0xb9'),'statusCode':_0x2140ee['statusCode']}:_0x2140ee);});};function getSelectList(_0xe6951b,_0x56ab14,_0x24c73f,_0x1c48c8,_0x16cd2d,_0x48bb8d){var _0x14dbb4={'method':_0x8855('0xa0'),'uri':_0xe6951b+_0x8855('0xa4')+_0x1c48c8+_0x8855('0xba')+_0x16cd2d+_0x8855('0xbb')+_0x8855('0xbc'),'headers':{'Authorization':_0x8855('0xa1')+_0x48bb8d,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x14dbb4)[_0x8855('0x25')](function(_0x25fa91){var _0x39709d=[];var _0x17f9c5=_0x25fa91[_0x8855('0xbd')][_0x8855('0xbe')];_0x17f9c5[_0x8855('0xa8')](function(_0x1f8dae){_0x39709d[_0x8855('0xaa')]({'name':_0x1f8dae['Label'][_0x8855('0xbf')]['Label'],'value':String(_0x1f8dae['Value'])});});var _0x2d90f0={'id':_0x56ab14+'_'+_0x25fa91[_0x8855('0xa7')],'name':_0x25fa91[_0x8855('0xc0')]['UserLocalizedLabel']['Label'],'custom':![],'options':_0x39709d};_0x24c73f[_0x8855('0xaa')](_0x2d90f0);return _0x24c73f;});}function getBooleanList(_0x1e9d55,_0x40855f,_0x4b0d03,_0x12f466,_0x169f0c,_0xfd9c65){var _0x2a02f1={'method':'GET','uri':_0x1e9d55+_0x8855('0xa4')+_0x12f466+')/Attributes('+_0x169f0c+_0x8855('0xc1'),'headers':{'Authorization':_0x8855('0xa1')+_0xfd9c65,'If-None-Match':null,'OData-Version':_0x8855('0xa2')},'json':!![]};return rp(_0x2a02f1)['then'](function(_0x2c31af){var _0x10f17f=[];_0x10f17f[_0x8855('0xaa')]({'name':_0x2c31af[_0x8855('0xbd')]['TrueOption'][_0x8855('0xc2')][_0x8855('0xbf')][_0x8855('0xc2')],'value':_0x8855('0xc3')},{'name':_0x2c31af[_0x8855('0xbd')][_0x8855('0xc4')]['Label'][_0x8855('0xbf')]['Label'],'value':'false'});var _0x4579af={'id':_0x40855f+'_'+_0x2c31af[_0x8855('0xa7')],'name':_0x2c31af['DisplayName'][_0x8855('0xbf')][_0x8855('0xc2')],'custom':![],'options':_0x10f17f};_0x4b0d03['push'](_0x4579af);return _0x4b0d03;});}function getInputList(_0x1a3bc1,_0x3ca60e,_0x50280e,_0x3b54bf,_0x1a513d,_0x254316,_0x1924cc){var _0x35a13e={'method':_0x8855('0xa0'),'uri':_0x1a3bc1+'EntityDefinitions('+_0x1a513d+_0x8855('0xba')+_0x254316+')/Microsoft.Dynamics.CRM.'+_0x50280e+'?$select=DisplayName,LogicalName','headers':{'Authorization':_0x8855('0xa1')+_0x1924cc,'If-None-Match':null,'OData-Version':_0x8855('0xa2')},'json':!![]};return rp(_0x35a13e)[_0x8855('0x25')](function(_0x441719){var _0x32ab4e={'id':_0x3ca60e+'_'+_0x441719[_0x8855('0xa7')],'name':_0x441719[_0x8855('0xc0')]['UserLocalizedLabel']?_0x441719[_0x8855('0xc0')][_0x8855('0xbf')][_0x8855('0xc2')]:_0x441719[_0x8855('0xa7')],'custom':![],'options':[]};_0x3b54bf[_0x8855('0xaa')](_0x32ab4e);return _0x3b54bf;});}
\ No newline at end of file
+var _0xe0b2=['https://login.microsoftonline.com/','/oauth2/token','GET','EntityDefinitions?$select=DisplayName,EntitySetName&$filter=SchemaName\x20eq\x20\x27','Bearer\x20','4.0','value','MetadataId','EntityDefinitions(','Attributes','remove','forEach','@odata.type','substring','push','all','isNil','BooleanAttributeMetadata','BigIntAttributeMetadata','DateTimeAttributeMetadata','StatusAttributeMetadata','StateAttributeMetadata','test','statusCode',')/Attributes(',')/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?','$select=DisplayName,LogicalName&$expand=OptionSet($select=Options)','Options','UserLocalizedLabel','LogicalName','DisplayName',')/Microsoft.Dynamics.CRM.BooleanAttributeMetadata?$select=DisplayName,LogicalName&$expand=OptionSet($select=FalseOption,\x20TrueOption)','OptionSet','Label','true','FalseOption','false','?$select=DisplayName,LogicalName','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','offset','undefined','count','limit','set','json','apply','save','update','then','destroy','error','stack','name','send','index','map','Dynamics365Account','rawAttributes','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','type','VIRTUAL','options','includeAll','findAll','rows','catch','params','include','find','create','body','getConfigurations','findOne','addConfiguration','AccountId','getSubjects','channel','Descriptions','getDescriptions','Dynamics365Configuration','Dynamics365Field','Subjects','getFields','ticketType','incident','PhoneCall','title','description','customerid','ownerid','subject','directioncode','phonecall_activity_parties','accountidname','accountidyominame','contractdetailidname','contractidname','createdbyexternalpartyyominame','createdbyname','createdbyyominame','createdon','createdonbehalfbyname','createdonbehalfbyyominame','customeridname','customeridtype','customeridyominame','entitlementidname','entityimage_timestamp','entityimage_url','escalatedon','exchangerate','followupby','importsequencenumber','kbarticleidname','lastonholdtime','masteridname','modifiedbyexternalpartyname','modifiedbyexternalpartyyominame','modifiedbyname','modifiedbyyominame','modifiedon','modifiedonbehalfbyname','msdyn_incidenttypename','msdyn_iotalertname','numberofchildincidents','owneridname','owneridtype','owneridyominame','primarycontactidname','primarycontactidyominame','productidname','productserialnumber','resolvebykpiidname','responsiblecontactidname','responsiblecontactidyominame','sentimentvalue','slainvokedidname','socialprofileidname','subjectidname','ticketnumber','timezoneruleversionnumber','transactioncurrencyidname','traversedpath','utcconversiontimezonecode','concat','username','password','tenantId','clientId','clientSecret','remoteUri','slice','lastIndexOf','format','POST'];(function(_0x9d79a5,_0x2fcbdd){var _0x3de4af=function(_0x117478){while(--_0x117478){_0x9d79a5['push'](_0x9d79a5['shift']());}};_0x3de4af(++_0x2fcbdd);}(_0xe0b2,0xec));var _0x2e0b=function(_0x40be91,_0x7e000d){_0x40be91=_0x40be91-0x0;var _0xc4ecf0=_0xe0b2[_0x40be91];return _0xc4ecf0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2e0b('0x0'));var zipdir=require(_0x2e0b('0x1'));var jsonpatch=require(_0x2e0b('0x2'));var rp=require(_0x2e0b('0x3'));var moment=require(_0x2e0b('0x4'));var BPromise=require(_0x2e0b('0x5'));var Mustache=require(_0x2e0b('0x6'));var util=require('util');var path=require(_0x2e0b('0x7'));var sox=require(_0x2e0b('0x8'));var csv=require(_0x2e0b('0x9'));var ejs=require(_0x2e0b('0xa'));var fs=require('fs');var fs_extra=require(_0x2e0b('0xb'));var _=require(_0x2e0b('0xc'));var squel=require('squel');var crypto=require(_0x2e0b('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x2e0b('0xe'));var toCsv=require(_0x2e0b('0x9'));var querystring=require(_0x2e0b('0xf'));var Papa=require(_0x2e0b('0x10'));var Redis=require(_0x2e0b('0x11'));var authService=require(_0x2e0b('0x12'));var qs=require(_0x2e0b('0x13'));var as=require(_0x2e0b('0x14'));var hardwareService=require(_0x2e0b('0x15'));var logger=require('../../config/logger')(_0x2e0b('0x16'));var utils=require(_0x2e0b('0x17'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x2e0b('0x18'))['db'];var integrations=require(_0x2e0b('0x19'));function respondWithStatusCode(_0x25d727,_0x425e0a){_0x425e0a=_0x425e0a||0xcc;return function(_0x2a7d19){if(_0x2a7d19){return _0x25d727[_0x2e0b('0x1a')](_0x425e0a);}return _0x25d727[_0x2e0b('0x1b')](_0x425e0a)[_0x2e0b('0x1c')]();};}function respondWithResult(_0x188928,_0x36e5df){_0x36e5df=_0x36e5df||0xc8;return function(_0x15151d){if(_0x15151d){return _0x188928[_0x2e0b('0x1b')](_0x36e5df)['json'](_0x15151d);}};}function respondWithFilteredResult(_0x5a5022,_0x4a7c04){return function(_0x1cb1fe){if(_0x1cb1fe){var _0x4bcc46=typeof _0x4a7c04[_0x2e0b('0x1d')]===_0x2e0b('0x1e')&&typeof _0x4a7c04['limit']==='undefined';var _0x5b9374=_0x1cb1fe[_0x2e0b('0x1f')];var _0x477af9=_0x4bcc46?0x0:_0x4a7c04[_0x2e0b('0x1d')];var _0xfa98b1=_0x4bcc46?_0x1cb1fe[_0x2e0b('0x1f')]:_0x4a7c04['offset']+_0x4a7c04[_0x2e0b('0x20')];var _0x5bbed2;if(_0xfa98b1>=_0x5b9374){_0xfa98b1=_0x5b9374;_0x5bbed2=0xc8;}else{_0x5bbed2=0xce;}_0x5a5022[_0x2e0b('0x1b')](_0x5bbed2);return _0x5a5022[_0x2e0b('0x21')]('Content-Range',_0x477af9+'-'+_0xfa98b1+'/'+_0x5b9374)[_0x2e0b('0x22')](_0x1cb1fe);}return null;};}function patchUpdates(_0x3eb2dc){return function(_0x2afd88){try{jsonpatch[_0x2e0b('0x23')](_0x2afd88,_0x3eb2dc,!![]);}catch(_0x3a6615){return BPromise['reject'](_0x3a6615);}return _0x2afd88[_0x2e0b('0x24')]();};}function saveUpdates(_0x4a3ae7,_0x49d111){return function(_0x2485f2){if(_0x2485f2){return _0x2485f2[_0x2e0b('0x25')](_0x4a3ae7)[_0x2e0b('0x26')](function(_0x5688c6){return _0x5688c6;});}return null;};}function removeEntity(_0x40e3e5,_0x147a14){return function(_0x20b662){if(_0x20b662){return _0x20b662[_0x2e0b('0x27')]()[_0x2e0b('0x26')](function(){_0x40e3e5[_0x2e0b('0x1b')](0xcc)[_0x2e0b('0x1c')]();});}};}function handleEntityNotFound(_0x263170,_0x501e7d){return function(_0x5d61f7){if(!_0x5d61f7){_0x263170['sendStatus'](0x194);}return _0x5d61f7;};}function handleError(_0x17be9f,_0x100770){_0x100770=_0x100770||0x1f4;return function(_0x1cda21){logger[_0x2e0b('0x28')](_0x1cda21[_0x2e0b('0x29')]);if(_0x1cda21[_0x2e0b('0x2a')]){delete _0x1cda21[_0x2e0b('0x2a')];}_0x17be9f['status'](_0x100770)[_0x2e0b('0x2b')](_0x1cda21);};}exports[_0x2e0b('0x2c')]=function(_0x63c043,_0x397c30){var _0x5e19c6={},_0x2049a6={},_0x49e19e={'count':0x0,'rows':[]};var _0x514eac=_[_0x2e0b('0x2d')](db[_0x2e0b('0x2e')][_0x2e0b('0x2f')],function(_0x3a0027){return{'name':_0x3a0027['fieldName'],'type':_0x3a0027['type']['key']};});_0x2049a6[_0x2e0b('0x30')]=_[_0x2e0b('0x2d')](_0x514eac,_0x2e0b('0x2a'));_0x2049a6[_0x2e0b('0x31')]=_[_0x2e0b('0x32')](_0x63c043[_0x2e0b('0x31')]);_0x2049a6['filters']=_[_0x2e0b('0x33')](_0x2049a6[_0x2e0b('0x30')],_0x2049a6[_0x2e0b('0x31')]);_0x5e19c6['attributes']=_[_0x2e0b('0x33')](_0x2049a6['model'],qs[_0x2e0b('0x34')](_0x63c043[_0x2e0b('0x31')]['fields']));_0x5e19c6[_0x2e0b('0x35')]=_0x5e19c6[_0x2e0b('0x35')][_0x2e0b('0x36')]?_0x5e19c6[_0x2e0b('0x35')]:_0x2049a6[_0x2e0b('0x30')];if(!_0x63c043['query'][_0x2e0b('0x37')](_0x2e0b('0x38'))){_0x5e19c6[_0x2e0b('0x20')]=qs[_0x2e0b('0x20')](_0x63c043['query'][_0x2e0b('0x20')]);_0x5e19c6['offset']=qs['offset'](_0x63c043['query'][_0x2e0b('0x1d')]);}_0x5e19c6[_0x2e0b('0x39')]=qs[_0x2e0b('0x3a')](_0x63c043[_0x2e0b('0x31')][_0x2e0b('0x3a')]);_0x5e19c6[_0x2e0b('0x3b')]=qs[_0x2e0b('0x3c')](_[_0x2e0b('0x3d')](_0x63c043['query'],_0x2049a6[_0x2e0b('0x3c')]),_0x514eac);if(_0x63c043[_0x2e0b('0x31')][_0x2e0b('0x3e')]){_0x5e19c6[_0x2e0b('0x3b')]=_[_0x2e0b('0x3f')](_0x5e19c6[_0x2e0b('0x3b')],{'$or':_['map'](_0x514eac,function(_0x518cba){if(_0x518cba[_0x2e0b('0x40')]!==_0x2e0b('0x41')){var _0x2bc684={};_0x2bc684[_0x518cba[_0x2e0b('0x2a')]]={'$like':'%'+_0x63c043[_0x2e0b('0x31')]['filter']+'%'};return _0x2bc684;}})});}_0x5e19c6=_[_0x2e0b('0x3f')]({},_0x5e19c6,_0x63c043[_0x2e0b('0x42')]);var _0x35201b={'where':_0x5e19c6['where']};return db[_0x2e0b('0x2e')][_0x2e0b('0x1f')](_0x35201b)[_0x2e0b('0x26')](function(_0x1247af){_0x49e19e[_0x2e0b('0x1f')]=_0x1247af;if(_0x63c043['query'][_0x2e0b('0x43')]){_0x5e19c6['include']=[{'all':!![]}];}return db[_0x2e0b('0x2e')][_0x2e0b('0x44')](_0x5e19c6);})[_0x2e0b('0x26')](function(_0xa10452){_0x49e19e[_0x2e0b('0x45')]=_0xa10452;return _0x49e19e;})[_0x2e0b('0x26')](respondWithFilteredResult(_0x397c30,_0x5e19c6))[_0x2e0b('0x46')](handleError(_0x397c30,null));};exports['show']=function(_0x27a4f7,_0x2a9e0a){var _0x3c590c={'raw':![],'where':{'id':_0x27a4f7[_0x2e0b('0x47')]['id']}},_0x5a3ad1={};_0x5a3ad1[_0x2e0b('0x30')]=_[_0x2e0b('0x32')](db[_0x2e0b('0x2e')][_0x2e0b('0x2f')]);_0x5a3ad1[_0x2e0b('0x31')]=_['keys'](_0x27a4f7['query']);_0x5a3ad1[_0x2e0b('0x3c')]=_[_0x2e0b('0x33')](_0x5a3ad1['model'],_0x5a3ad1['query']);_0x3c590c[_0x2e0b('0x35')]=_[_0x2e0b('0x33')](_0x5a3ad1[_0x2e0b('0x30')],qs[_0x2e0b('0x34')](_0x27a4f7[_0x2e0b('0x31')][_0x2e0b('0x34')]));_0x3c590c['attributes']=_0x3c590c[_0x2e0b('0x35')][_0x2e0b('0x36')]?_0x3c590c['attributes']:_0x5a3ad1['model'];if(_0x27a4f7[_0x2e0b('0x31')][_0x2e0b('0x43')]){_0x3c590c[_0x2e0b('0x48')]=[{'all':!![]}];}_0x3c590c=_['merge']({},_0x3c590c,_0x27a4f7[_0x2e0b('0x42')]);return db[_0x2e0b('0x2e')][_0x2e0b('0x49')](_0x3c590c)[_0x2e0b('0x26')](handleEntityNotFound(_0x2a9e0a,null))['then'](respondWithResult(_0x2a9e0a,null))[_0x2e0b('0x46')](handleError(_0x2a9e0a,null));};exports[_0x2e0b('0x4a')]=function(_0x561a08,_0x1dbf8b){return db[_0x2e0b('0x2e')][_0x2e0b('0x4a')](_0x561a08[_0x2e0b('0x4b')],{})[_0x2e0b('0x26')](respondWithResult(_0x1dbf8b,0xc9))[_0x2e0b('0x46')](handleError(_0x1dbf8b,null));};exports[_0x2e0b('0x25')]=function(_0x64d1b6,_0x2e7635){if(_0x64d1b6['body']['id']){delete _0x64d1b6[_0x2e0b('0x4b')]['id'];}return db[_0x2e0b('0x2e')][_0x2e0b('0x49')]({'where':{'id':_0x64d1b6[_0x2e0b('0x47')]['id']}})[_0x2e0b('0x26')](handleEntityNotFound(_0x2e7635,null))[_0x2e0b('0x26')](saveUpdates(_0x64d1b6[_0x2e0b('0x4b')],null))[_0x2e0b('0x26')](respondWithResult(_0x2e7635,null))[_0x2e0b('0x46')](handleError(_0x2e7635,null));};exports['destroy']=function(_0x5b2384,_0x38c51f){return db['Dynamics365Account'][_0x2e0b('0x49')]({'where':{'id':_0x5b2384[_0x2e0b('0x47')]['id']}})[_0x2e0b('0x26')](handleEntityNotFound(_0x38c51f,null))[_0x2e0b('0x26')](removeEntity(_0x38c51f,null))['catch'](handleError(_0x38c51f,null));};exports[_0x2e0b('0x4c')]=function(_0xf4fcc4,_0x483d96,_0x1766b2){var _0x3a7f16={};var _0x4b476b={};var _0x36492e;var _0x1ae195;return db[_0x2e0b('0x2e')][_0x2e0b('0x4d')]({'where':{'id':_0xf4fcc4['params']['id']}})['then'](handleEntityNotFound(_0x483d96,null))[_0x2e0b('0x26')](function(_0x321f53){if(_0x321f53){_0x36492e=_0x321f53;_0x4b476b['model']=_[_0x2e0b('0x32')](db['Dynamics365Configuration'][_0x2e0b('0x2f')]);_0x4b476b[_0x2e0b('0x31')]=_['keys'](_0xf4fcc4[_0x2e0b('0x31')]);_0x4b476b[_0x2e0b('0x3c')]=_[_0x2e0b('0x33')](_0x4b476b['model'],_0x4b476b[_0x2e0b('0x31')]);_0x3a7f16[_0x2e0b('0x35')]=_[_0x2e0b('0x33')](_0x4b476b[_0x2e0b('0x30')],qs[_0x2e0b('0x34')](_0xf4fcc4[_0x2e0b('0x31')][_0x2e0b('0x34')]));_0x3a7f16[_0x2e0b('0x35')]=_0x3a7f16[_0x2e0b('0x35')][_0x2e0b('0x36')]?_0x3a7f16[_0x2e0b('0x35')]:_0x4b476b['model'];_0x3a7f16[_0x2e0b('0x39')]=qs[_0x2e0b('0x3a')](_0xf4fcc4[_0x2e0b('0x31')]['sort']);_0x3a7f16['where']=qs[_0x2e0b('0x3c')](_[_0x2e0b('0x3d')](_0xf4fcc4[_0x2e0b('0x31')],_0x4b476b['filters']));if(_0xf4fcc4['query'][_0x2e0b('0x3e')]){_0x3a7f16[_0x2e0b('0x3b')]=_['merge'](_0x3a7f16[_0x2e0b('0x3b')],{'$or':_['map'](_0x3a7f16[_0x2e0b('0x35')],function(_0x349f20){var _0x59a411={};_0x59a411[_0x349f20]={'$like':'%'+_0xf4fcc4[_0x2e0b('0x31')][_0x2e0b('0x3e')]+'%'};return _0x59a411;})});}_0x3a7f16=_['merge']({},_0x3a7f16,_0xf4fcc4['options']);return _0x36492e[_0x2e0b('0x4c')](_0x3a7f16);}})[_0x2e0b('0x26')](function(_0x2a7c1d){if(_0x2a7c1d){_0x1ae195=_0x2a7c1d['length'];if(!_0xf4fcc4[_0x2e0b('0x31')][_0x2e0b('0x37')]('nolimit')){_0x3a7f16[_0x2e0b('0x20')]=qs[_0x2e0b('0x20')](_0xf4fcc4[_0x2e0b('0x31')]['limit']);_0x3a7f16[_0x2e0b('0x1d')]=qs['offset'](_0xf4fcc4[_0x2e0b('0x31')][_0x2e0b('0x1d')]);}return _0x36492e['getConfigurations'](_0x3a7f16);}})[_0x2e0b('0x26')](function(_0x120109){if(_0x120109){return _0x120109?{'count':_0x1ae195,'rows':_0x120109}:null;}})['then'](respondWithResult(_0x483d96,null))['catch'](handleError(_0x483d96,null));};exports[_0x2e0b('0x4e')]=function(_0xad4a2c,_0x17c44f,_0x180d82){if(_0xad4a2c['body']['id']){delete _0xad4a2c[_0x2e0b('0x4b')]['id'];}return db[_0x2e0b('0x2e')][_0x2e0b('0x4d')]({'where':{'id':_0xad4a2c[_0x2e0b('0x47')]['id']}})[_0x2e0b('0x26')](handleEntityNotFound(_0x17c44f,null))['then'](function(_0x5d4907){if(_0x5d4907){_0xad4a2c[_0x2e0b('0x4b')][_0x2e0b('0x4f')]=_0x5d4907['id'];_0xad4a2c[_0x2e0b('0x4b')]['Subjects']=integrations[_0x2e0b('0x50')](_0xad4a2c[_0x2e0b('0x4b')][_0x2e0b('0x51')],_0xad4a2c['body']['type']);_0xad4a2c[_0x2e0b('0x4b')][_0x2e0b('0x52')]=integrations[_0x2e0b('0x53')](_0xad4a2c[_0x2e0b('0x4b')][_0x2e0b('0x51')],_0xad4a2c[_0x2e0b('0x4b')][_0x2e0b('0x40')]);return db[_0x2e0b('0x54')]['create'](_0xad4a2c[_0x2e0b('0x4b')],{'include':[{'model':db[_0x2e0b('0x55')],'as':_0x2e0b('0x56')},{'model':db['Dynamics365Field'],'as':'Descriptions'}]});}return null;})[_0x2e0b('0x26')](respondWithResult(_0x17c44f,null))[_0x2e0b('0x46')](handleError(_0x17c44f,null));};exports[_0x2e0b('0x57')]=function(_0x585e36,_0x44ff7c,_0x52716a){var _0x5560e6=_0x585e36[_0x2e0b('0x31')][_0x2e0b('0x58')];var _0x2ea61f=_0x5560e6===_0x2e0b('0x59')?'Incident':_0x2e0b('0x5a');var _0x529588='';var _0x34d545='';var _0x292684='';var _0x3390f6='';var _0x549245='';var _0x4887c1='';var _0x434bdf='';var _0x18c024='';var _0x253898=[_0x2e0b('0x5b'),_0x2e0b('0x5c'),_0x2e0b('0x5d'),_0x2e0b('0x5e'),'caseorigincode',_0x2e0b('0x5f'),'phonenumber','regardingobjectid',_0x2e0b('0x60'),_0x2e0b('0x61')];var _0x5d11e0=[_0x2e0b('0x62'),_0x2e0b('0x63'),'actualserviceunits','billedserviceunits','contactidname','contactidyominame',_0x2e0b('0x64'),_0x2e0b('0x65'),'createdbyexternalpartyname',_0x2e0b('0x66'),_0x2e0b('0x67'),_0x2e0b('0x68'),_0x2e0b('0x69'),_0x2e0b('0x6a'),_0x2e0b('0x6b'),_0x2e0b('0x6c'),_0x2e0b('0x6d'),_0x2e0b('0x6e'),'emailaddress',_0x2e0b('0x6f'),_0x2e0b('0x70'),_0x2e0b('0x71'),_0x2e0b('0x72'),_0x2e0b('0x73'),'firstresponsebykpiidname',_0x2e0b('0x74'),_0x2e0b('0x75'),'influencescore',_0x2e0b('0x76'),_0x2e0b('0x77'),_0x2e0b('0x78'),_0x2e0b('0x79'),_0x2e0b('0x7a'),_0x2e0b('0x7b'),_0x2e0b('0x7c'),_0x2e0b('0x7d'),_0x2e0b('0x7e'),'modifiedonbehalfbyyominame',_0x2e0b('0x7f'),_0x2e0b('0x80'),_0x2e0b('0x81'),'onholdtime','overriddencreatedon',_0x2e0b('0x82'),_0x2e0b('0x83'),_0x2e0b('0x84'),'parentcaseidname',_0x2e0b('0x85'),_0x2e0b('0x86'),'prioritycodename',_0x2e0b('0x87'),_0x2e0b('0x88'),'resolveby',_0x2e0b('0x89'),'responseby',_0x2e0b('0x8a'),_0x2e0b('0x8b'),_0x2e0b('0x8c'),_0x2e0b('0x8d'),'slaname',_0x2e0b('0x8e'),'statecode','statuscode',_0x2e0b('0x8f'),_0x2e0b('0x90'),_0x2e0b('0x91'),_0x2e0b('0x92'),_0x2e0b('0x93'),_0x2e0b('0x94'),'versionnumber'];var _0x2f3d77=_0x253898[_0x2e0b('0x95')](_0x5d11e0);return db[_0x2e0b('0x2e')][_0x2e0b('0x4d')]({'where':{'id':_0x585e36['params']['id']},'attributes':['id',_0x2e0b('0x96'),_0x2e0b('0x97'),'remoteUri',_0x2e0b('0x98'),_0x2e0b('0x99'),_0x2e0b('0x9a')]})['then'](handleEntityNotFound(_0x44ff7c,null))[_0x2e0b('0x26')](function(_0x5d7f0e){if(_0x5d7f0e){_0x18c024=_0x5d7f0e[_0x2e0b('0x9b')];var _0x5f5a97=_0x18c024[_0x2e0b('0x9c')](-0x1);if(_0x5f5a97==='/'){_0x18c024=_0x18c024['substring'](0x0,_0x18c024[_0x2e0b('0x9d')](_0x5f5a97));}_0x434bdf=util[_0x2e0b('0x9e')]('%s/api/data/v9.0/',_0x18c024);var _0x5c74c1={'method':_0x2e0b('0x9f'),'uri':_0x2e0b('0xa0')+_0x5d7f0e[_0x2e0b('0x98')]+_0x2e0b('0xa1'),'form':{'client_id':_0x5d7f0e['clientId'],'resource':_0x18c024,'username':_0x5d7f0e[_0x2e0b('0x96')],'password':_0x5d7f0e[_0x2e0b('0x97')],'grant_type':_0x2e0b('0x97'),'client_secret':_0x5d7f0e[_0x2e0b('0x9a')]},'json':!![]};return rp(_0x5c74c1);}})[_0x2e0b('0x26')](function(_0x172ff9){_0x4887c1=_0x172ff9['access_token'];var _0x54d6e7={'method':_0x2e0b('0xa2'),'uri':encodeURI(_0x434bdf+_0x2e0b('0xa3')+_0x2ea61f+'\x27'),'headers':{'Authorization':_0x2e0b('0xa4')+_0x4887c1,'If-None-Match':null,'OData-Version':_0x2e0b('0xa5')},'json':!![]};return rp(_0x54d6e7);})[_0x2e0b('0x26')](function(_0x2b6bcc){var _0x5f54e9=_0x2b6bcc[_0x2e0b('0xa6')][0x0];var _0x72c7a8=_0x5f54e9[_0x2e0b('0xa7')];var _0x4bb745={'method':'GET','uri':_0x434bdf+_0x2e0b('0xa8')+_0x72c7a8+')?$select=LogicalName&$expand=Attributes($select=LogicalName)','headers':{'Authorization':_0x2e0b('0xa4')+_0x4887c1,'If-None-Match':null,'OData-Version':_0x2e0b('0xa5')},'json':!![]};return rp(_0x4bb745);})['then'](function(_0x5d1dea){_0x529588=_0x5d1dea;_0x34d545=_0x529588[_0x2e0b('0xa9')];_0x34d545=_[_0x2e0b('0xaa')](_0x34d545,function(_0x1d15f5){return!_0x2f3d77['includes'](_0x1d15f5['LogicalName']);});var _0x3dccdb=[];var _0x161fe6=[];_0x34d545[_0x2e0b('0xab')](function(_0x521906){if(_0x521906[_0x2e0b('0xac')]){var _0xfa8c92=_0x521906[_0x2e0b('0xac')][_0x2e0b('0xad')](_0x521906[_0x2e0b('0xac')]['lastIndexOf']('.')+0x1);if(_0xfa8c92==='PicklistAttributeMetadata'){_0x3dccdb[_0x2e0b('0xae')](getSelectList(_0x434bdf,_0x5560e6,_0x161fe6,_0x529588['MetadataId'],_0x521906[_0x2e0b('0xa7')],_0x4887c1));}}});return Promise[_0x2e0b('0xaf')](_0x3dccdb);})['then'](function(_0x16ab15){_0x292684=_0x16ab15[0x0];var _0x42f740=[];var _0x511d93=[];_0x34d545['forEach'](function(_0x29abea){if(!_[_0x2e0b('0xb0')](_0x29abea[_0x2e0b('0xac')])){var _0x56cb8f=_0x29abea['@odata.type'][_0x2e0b('0xad')](_0x29abea['@odata.type']['lastIndexOf']('.')+0x1);if(_0x56cb8f===_0x2e0b('0xb1')){_0x42f740['push'](getBooleanList(_0x434bdf,_0x5560e6,_0x511d93,_0x529588['MetadataId'],_0x29abea['MetadataId'],_0x4887c1));}}});return Promise[_0x2e0b('0xaf')](_0x42f740);})[_0x2e0b('0x26')](function(_0x1facea){_0x3390f6=_0x1facea[0x0];var _0x46f874=[];var _0x3800ec=[];_0x34d545[_0x2e0b('0xab')](function(_0x10a20f){if(_0x10a20f[_0x2e0b('0xac')]){var _0x7d61d=_0x10a20f[_0x2e0b('0xac')][_0x2e0b('0xad')](_0x10a20f[_0x2e0b('0xac')][_0x2e0b('0x9d')]('.')+0x1);if(_0x7d61d==='StringAttributeMetadata'||_0x7d61d==='DoubleAttributeMetadata'||_0x7d61d===_0x2e0b('0xb2')||_0x7d61d==='IntegerAttributeMetadata'||_0x7d61d==='MemoAttributeMetadata'||_0x7d61d===_0x2e0b('0xb3')||_0x7d61d===_0x2e0b('0xb4')||_0x7d61d==='EntityNameAttributeMetadata'||_0x7d61d===_0x2e0b('0xb5')||_0x7d61d==='DecimalAttributeMetadata'){_0x46f874[_0x2e0b('0xae')](getInputList(_0x434bdf,_0x5560e6,_0x7d61d,_0x3800ec,_0x529588['MetadataId'],_0x10a20f[_0x2e0b('0xa7')],_0x4887c1));}}});return Promise[_0x2e0b('0xaf')](_0x46f874);})[_0x2e0b('0x26')](function(_0x239e4a){_0x549245=_0x239e4a[0x0];var _0x51e370=_0x292684['concat'](_0x3390f6)[_0x2e0b('0x95')](_0x549245);var _0x134944={'count':_0x51e370[_0x2e0b('0x36')],'rows':_0x51e370};return _0x134944;})[_0x2e0b('0x26')](respondWithResult(_0x44ff7c,null))[_0x2e0b('0x46')](function(_0x3f144c){var _0x3664ea=_0x585e36['query'][_0x2e0b('0xb6')]?0x1f4:_0x3f144c['statusCode']||0x1f4;logger[_0x2e0b('0x28')](_0x3f144c[_0x2e0b('0x29')]);delete _0x3f144c[_0x2e0b('0x2a')];if(_0x3664ea===0x191){_0x3664ea=0x190;}_0x44ff7c[_0x2e0b('0x1b')](_0x3664ea)[_0x2e0b('0x2b')](_0x585e36[_0x2e0b('0x31')][_0x2e0b('0xb6')]?{'message':'Wrong\x20credentials','statusCode':_0x3f144c[_0x2e0b('0xb7')]}:_0x3f144c);});};function getSelectList(_0x6c0e77,_0x2ef3bd,_0x28fc5b,_0x1792ed,_0x163417,_0x3c374d){var _0x1690bf={'method':_0x2e0b('0xa2'),'uri':_0x6c0e77+_0x2e0b('0xa8')+_0x1792ed+_0x2e0b('0xb8')+_0x163417+_0x2e0b('0xb9')+_0x2e0b('0xba'),'headers':{'Authorization':_0x2e0b('0xa4')+_0x3c374d,'If-None-Match':null,'OData-Version':_0x2e0b('0xa5')},'json':!![]};return rp(_0x1690bf)[_0x2e0b('0x26')](function(_0x465bf9){var _0x28d68f=[];var _0x2a0571=_0x465bf9['OptionSet'][_0x2e0b('0xbb')];_0x2a0571[_0x2e0b('0xab')](function(_0x6b09c5){_0x28d68f['push']({'name':_0x6b09c5['Label'][_0x2e0b('0xbc')]['Label'],'value':String(_0x6b09c5['Value'])});});var _0x2eb617={'id':_0x2ef3bd+'_'+_0x465bf9[_0x2e0b('0xbd')],'name':_0x465bf9[_0x2e0b('0xbe')][_0x2e0b('0xbc')]['Label'],'custom':![],'options':_0x28d68f};_0x28fc5b['push'](_0x2eb617);return _0x28fc5b;});}function getBooleanList(_0x164541,_0x561454,_0x159393,_0x3fe089,_0x4a2cbf,_0x1bba2d){var _0xb1fed4={'method':_0x2e0b('0xa2'),'uri':_0x164541+_0x2e0b('0xa8')+_0x3fe089+_0x2e0b('0xb8')+_0x4a2cbf+_0x2e0b('0xbf'),'headers':{'Authorization':'Bearer\x20'+_0x1bba2d,'If-None-Match':null,'OData-Version':_0x2e0b('0xa5')},'json':!![]};return rp(_0xb1fed4)[_0x2e0b('0x26')](function(_0x25cc5c){var _0x27f043=[];_0x27f043[_0x2e0b('0xae')]({'name':_0x25cc5c[_0x2e0b('0xc0')]['TrueOption'][_0x2e0b('0xc1')][_0x2e0b('0xbc')][_0x2e0b('0xc1')],'value':_0x2e0b('0xc2')},{'name':_0x25cc5c[_0x2e0b('0xc0')][_0x2e0b('0xc3')]['Label']['UserLocalizedLabel']['Label'],'value':_0x2e0b('0xc4')});var _0x2f24c7={'id':_0x561454+'_'+_0x25cc5c['LogicalName'],'name':_0x25cc5c[_0x2e0b('0xbe')][_0x2e0b('0xbc')][_0x2e0b('0xc1')],'custom':![],'options':_0x27f043};_0x159393[_0x2e0b('0xae')](_0x2f24c7);return _0x159393;});}function getInputList(_0x259405,_0x7ff173,_0x4ccb62,_0x26d6a1,_0x26fca3,_0x215c50,_0x5ecec0){var _0x14a43a={'method':_0x2e0b('0xa2'),'uri':_0x259405+'EntityDefinitions('+_0x26fca3+_0x2e0b('0xb8')+_0x215c50+')/Microsoft.Dynamics.CRM.'+_0x4ccb62+_0x2e0b('0xc5'),'headers':{'Authorization':_0x2e0b('0xa4')+_0x5ecec0,'If-None-Match':null,'OData-Version':_0x2e0b('0xa5')},'json':!![]};return rp(_0x14a43a)['then'](function(_0x1c0469){var _0x4f28f7={'id':_0x7ff173+'_'+_0x1c0469[_0x2e0b('0xbd')],'name':_0x1c0469['DisplayName']['UserLocalizedLabel']?_0x1c0469[_0x2e0b('0xbe')]['UserLocalizedLabel'][_0x2e0b('0xc1')]:_0x1c0469['LogicalName'],'custom':![],'options':[]};_0x26d6a1[_0x2e0b('0xae')](_0x4f28f7);return _0x26d6a1;});}
\ No newline at end of file
index f3457a2..76848b9 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','./intDynamics365Account.attributes','../../components/integrations/configuration','exports','define','Dynamics365Account','int_dynamics365_accounts','lodash','util'];(function(_0x4c96a0,_0x29fa6a){var _0x42873d=function(_0x40977e){while(--_0x40977e){_0x4c96a0['push'](_0x4c96a0['shift']());}};_0x42873d(++_0x29fa6a);}(_0xe706,0xa3));var _0x6e70=function(_0x4b2407,_0x3fa63e){_0x4b2407=_0x4b2407-0x0;var _0x5defa2=_0xe706[_0x4b2407];return _0x5defa2;};'use strict';var _=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var logger=require(_0x6e70('0x2'))('api');var moment=require(_0x6e70('0x3'));var BPromise=require(_0x6e70('0x4'));var rp=require(_0x6e70('0x5'));var fs=require('fs');var path=require(_0x6e70('0x6'));var rimraf=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));var attributes=require(_0x6e70('0x9'));var integrations=require(_0x6e70('0xa'));module[_0x6e70('0xb')]=function(_0x4381d1,_0x36357b){return _0x4381d1[_0x6e70('0xc')](_0x6e70('0xd'),attributes,{'tableName':_0x6e70('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xcb91=['rimraf','./intDynamics365Account.attributes','../../components/integrations/configuration','Dynamics365Account','int_dynamics365_accounts','../../config/logger','api','moment','bluebird','path'];(function(_0x4e3aed,_0x2f492a){var _0x530978=function(_0x5b5066){while(--_0x5b5066){_0x4e3aed['push'](_0x4e3aed['shift']());}};_0x530978(++_0x2f492a);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x5d3903,_0x3d6c3e){_0x5d3903=_0x5d3903-0x0;var _0x4b8bc9=_0xcb91[_0x5d3903];return _0x4b8bc9;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x1cb9('0x0'))(_0x1cb9('0x1'));var moment=require(_0x1cb9('0x2'));var BPromise=require(_0x1cb9('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x1cb9('0x4'));var rimraf=require(_0x1cb9('0x5'));var config=require('../../config/environment');var attributes=require(_0x1cb9('0x6'));var integrations=require(_0x1cb9('0x7'));module['exports']=function(_0x226b69,_0x3f7deb){return _0x226b69['define'](_0x1cb9('0x8'),attributes,{'tableName':_0x1cb9('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d8a30fd..d25779f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a43=['include','map','attributes','model','GetDynamics365Account','ShowDynamics365Account','Dynamics365Account','where','stringify','catch','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','then','info','Dynamics365Account,\x20%s,\x20%s','debug','error','code','message','request\x20sent','findAll','options','raw','limit'];(function(_0x5d5125,_0x15a52c){var _0x4d44c3=function(_0x3a19c4){while(--_0x3a19c4){_0x5d5125['push'](_0x5d5125['shift']());}};_0x4d44c3(++_0x15a52c);}(_0x5a43,0x12a));var _0x35a4=function(_0x4dc8b5,_0x3423ab){_0x4dc8b5=_0x4dc8b5-0x0;var _0x253822=_0x5a43[_0x4dc8b5];return _0x253822;};'use strict';var _=require(_0x35a4('0x0'));var util=require(_0x35a4('0x1'));var moment=require('moment');var BPromise=require(_0x35a4('0x2'));var rs=require(_0x35a4('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x35a4('0x4'))['db'];var utils=require(_0x35a4('0x5'));var logger=require('../../config/logger')(_0x35a4('0x6'));var config=require('../../config/environment');var jayson=require(_0x35a4('0x7'));var client=jayson[_0x35a4('0x8')][_0x35a4('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4fbb88,_0x185dec,_0x1b2ec2){return new BPromise(function(_0x502070,_0x76a5d0){return client['request'](_0x4fbb88,_0x1b2ec2)[_0x35a4('0xa')](function(_0x355d49){logger[_0x35a4('0xb')](_0x35a4('0xc'),_0x185dec,'request\x20sent');logger[_0x35a4('0xd')]('Dynamics365Account,\x20%s,\x20%s,\x20%s',_0x185dec,'request\x20sent',JSON['stringify'](_0x355d49));if(_0x355d49['error']){if(_0x355d49[_0x35a4('0xe')][_0x35a4('0xf')]===0x1f4){logger['error'](_0x35a4('0xc'),_0x185dec,_0x355d49[_0x35a4('0xe')][_0x35a4('0x10')]);return _0x76a5d0(_0x355d49[_0x35a4('0xe')]['message']);}logger[_0x35a4('0xe')](_0x35a4('0xc'),_0x185dec,_0x355d49[_0x35a4('0xe')][_0x35a4('0x10')]);return _0x502070(_0x355d49[_0x35a4('0xe')][_0x35a4('0x10')]);}else{logger[_0x35a4('0xb')](_0x35a4('0xc'),_0x185dec,_0x35a4('0x11'));_0x502070(_0x355d49['result'][_0x35a4('0x10')]);}})['catch'](function(_0x124146){logger[_0x35a4('0xe')]('Dynamics365Account,\x20%s,\x20%s',_0x185dec,_0x124146);_0x76a5d0(_0x124146);});});}exports['GetDynamics365Account']=function(_0x7ee098){var _0x55b841=this;return new Promise(function(_0x3b7d13,_0x17a151){return db['Dynamics365Account'][_0x35a4('0x12')]({'raw':_0x7ee098[_0x35a4('0x13')]?_0x7ee098['options'][_0x35a4('0x14')]===undefined?!![]:![]:!![],'where':_0x7ee098[_0x35a4('0x13')]?_0x7ee098[_0x35a4('0x13')]['where']||null:null,'attributes':_0x7ee098[_0x35a4('0x13')]?_0x7ee098[_0x35a4('0x13')]['attributes']||null:null,'limit':_0x7ee098['options']?_0x7ee098[_0x35a4('0x13')][_0x35a4('0x15')]||null:null,'include':_0x7ee098[_0x35a4('0x13')]?_0x7ee098[_0x35a4('0x13')][_0x35a4('0x16')]?_[_0x35a4('0x17')](_0x7ee098['options'][_0x35a4('0x16')],function(_0x95a379){return{'model':db[_0x95a379['model']],'as':_0x95a379['as'],'attributes':_0x95a379[_0x35a4('0x18')],'include':_0x95a379[_0x35a4('0x16')]?_['map'](_0x95a379[_0x35a4('0x16')],function(_0x2cc1d2){return{'model':db[_0x2cc1d2[_0x35a4('0x19')]],'as':_0x2cc1d2['as'],'attributes':_0x2cc1d2[_0x35a4('0x18')],'include':_0x2cc1d2[_0x35a4('0x16')]?_[_0x35a4('0x17')](_0x2cc1d2[_0x35a4('0x16')],function(_0x41f01f){return{'model':db[_0x41f01f[_0x35a4('0x19')]],'as':_0x41f01f['as'],'attributes':_0x41f01f[_0x35a4('0x18')]};}):[]};}):[]};}):[]:[]})[_0x35a4('0xa')](function(_0x5a72be){logger[_0x35a4('0xb')](_0x35a4('0x1a'),_0x7ee098);logger[_0x35a4('0xd')]('GetDynamics365Account',_0x7ee098,JSON['stringify'](_0x5a72be));_0x3b7d13(_0x5a72be);})['catch'](function(_0x4cc8da){logger[_0x35a4('0xe')](_0x35a4('0x1a'),_0x4cc8da[_0x35a4('0x10')],_0x7ee098);_0x17a151(_0x55b841['error'](0x1f4,_0x4cc8da[_0x35a4('0x10')]));});});};exports[_0x35a4('0x1b')]=function(_0x3fdab4){var _0x2b763c=this;return new Promise(function(_0xc08a92,_0x54bd57){return db[_0x35a4('0x1c')]['find']({'raw':_0x3fdab4[_0x35a4('0x13')]?_0x3fdab4['options'][_0x35a4('0x14')]===undefined?!![]:![]:!![],'where':_0x3fdab4['options']?_0x3fdab4[_0x35a4('0x13')][_0x35a4('0x1d')]||null:null,'attributes':_0x3fdab4[_0x35a4('0x13')]?_0x3fdab4[_0x35a4('0x13')][_0x35a4('0x18')]||null:null,'include':_0x3fdab4[_0x35a4('0x13')]?_0x3fdab4[_0x35a4('0x13')][_0x35a4('0x16')]?_['map'](_0x3fdab4[_0x35a4('0x13')][_0x35a4('0x16')],function(_0x3c54a2){return{'model':db[_0x3c54a2['model']],'as':_0x3c54a2['as'],'attributes':_0x3c54a2[_0x35a4('0x18')],'include':_0x3c54a2[_0x35a4('0x16')]?_[_0x35a4('0x17')](_0x3c54a2[_0x35a4('0x16')],function(_0x3b38a4){return{'model':db[_0x3b38a4[_0x35a4('0x19')]],'as':_0x3b38a4['as'],'attributes':_0x3b38a4[_0x35a4('0x18')],'include':_0x3b38a4[_0x35a4('0x16')]?_['map'](_0x3b38a4['include'],function(_0x4669c1){return{'model':db[_0x4669c1[_0x35a4('0x19')]],'as':_0x4669c1['as'],'attributes':_0x4669c1[_0x35a4('0x18')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x142851){logger[_0x35a4('0xb')](_0x35a4('0x1b'),_0x3fdab4);logger[_0x35a4('0xd')](_0x35a4('0x1b'),_0x3fdab4,JSON[_0x35a4('0x1e')](_0x142851));_0xc08a92(_0x142851);})[_0x35a4('0x1f')](function(_0x25922f){logger[_0x35a4('0xe')](_0x35a4('0x1b'),_0x25922f[_0x35a4('0x10')],_0x3fdab4);_0x54bd57(_0x2b763c[_0x35a4('0xe')](0x1f4,_0x25922f[_0x35a4('0x10')]));});});};
\ No newline at end of file
+var _0x6281=['Dynamics365Account','options','where','attributes','include','map','model','catch','ShowDynamics365Account','raw','lodash','util','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','Dynamics365Account,\x20%s,\x20%s','request\x20sent','debug','Dynamics365Account,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','GetDynamics365Account'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x6281,0x175));var _0x1628=function(_0x14a84e,_0xffb06){_0x14a84e=_0x14a84e-0x0;var _0x2aca47=_0x6281[_0x14a84e];return _0x2aca47;};'use strict';var _=require(_0x1628('0x0'));var util=require(_0x1628('0x1'));var moment=require('moment');var BPromise=require(_0x1628('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1628('0x3'));var db=require(_0x1628('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x1628('0x5'))(_0x1628('0x6'));var config=require(_0x1628('0x7'));var jayson=require(_0x1628('0x8'));var client=jayson['client'][_0x1628('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x25c971,_0x25610b,_0x9d2518){return new BPromise(function(_0x312888,_0x5f1256){return client[_0x1628('0xa')](_0x25c971,_0x9d2518)[_0x1628('0xb')](function(_0x4827a4){logger['info'](_0x1628('0xc'),_0x25610b,_0x1628('0xd'));logger[_0x1628('0xe')](_0x1628('0xf'),_0x25610b,_0x1628('0xd'),JSON[_0x1628('0x10')](_0x4827a4));if(_0x4827a4[_0x1628('0x11')]){if(_0x4827a4[_0x1628('0x11')][_0x1628('0x12')]===0x1f4){logger[_0x1628('0x11')]('Dynamics365Account,\x20%s,\x20%s',_0x25610b,_0x4827a4['error'][_0x1628('0x13')]);return _0x5f1256(_0x4827a4[_0x1628('0x11')][_0x1628('0x13')]);}logger[_0x1628('0x11')](_0x1628('0xc'),_0x25610b,_0x4827a4[_0x1628('0x11')][_0x1628('0x13')]);return _0x312888(_0x4827a4[_0x1628('0x11')][_0x1628('0x13')]);}else{logger[_0x1628('0x14')](_0x1628('0xc'),_0x25610b,'request\x20sent');_0x312888(_0x4827a4[_0x1628('0x15')][_0x1628('0x13')]);}})['catch'](function(_0x5072dd){logger[_0x1628('0x11')](_0x1628('0xc'),_0x25610b,_0x5072dd);_0x5f1256(_0x5072dd);});});}exports[_0x1628('0x16')]=function(_0x21f1b0){var _0x15298e=this;return new Promise(function(_0x19551d,_0x47ba45){return db[_0x1628('0x17')]['findAll']({'raw':_0x21f1b0['options']?_0x21f1b0[_0x1628('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x21f1b0['options']?_0x21f1b0[_0x1628('0x18')][_0x1628('0x19')]||null:null,'attributes':_0x21f1b0['options']?_0x21f1b0[_0x1628('0x18')][_0x1628('0x1a')]||null:null,'limit':_0x21f1b0['options']?_0x21f1b0[_0x1628('0x18')]['limit']||null:null,'include':_0x21f1b0[_0x1628('0x18')]?_0x21f1b0[_0x1628('0x18')][_0x1628('0x1b')]?_[_0x1628('0x1c')](_0x21f1b0[_0x1628('0x18')][_0x1628('0x1b')],function(_0x2734be){return{'model':db[_0x2734be[_0x1628('0x1d')]],'as':_0x2734be['as'],'attributes':_0x2734be[_0x1628('0x1a')],'include':_0x2734be[_0x1628('0x1b')]?_[_0x1628('0x1c')](_0x2734be['include'],function(_0x1483ac){return{'model':db[_0x1483ac['model']],'as':_0x1483ac['as'],'attributes':_0x1483ac[_0x1628('0x1a')],'include':_0x1483ac[_0x1628('0x1b')]?_[_0x1628('0x1c')](_0x1483ac[_0x1628('0x1b')],function(_0x5431c5){return{'model':db[_0x5431c5[_0x1628('0x1d')]],'as':_0x5431c5['as'],'attributes':_0x5431c5[_0x1628('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x1628('0xb')](function(_0x5999ca){logger[_0x1628('0x14')](_0x1628('0x16'),_0x21f1b0);logger[_0x1628('0xe')](_0x1628('0x16'),_0x21f1b0,JSON['stringify'](_0x5999ca));_0x19551d(_0x5999ca);})[_0x1628('0x1e')](function(_0x5b1118){logger[_0x1628('0x11')](_0x1628('0x16'),_0x5b1118['message'],_0x21f1b0);_0x47ba45(_0x15298e[_0x1628('0x11')](0x1f4,_0x5b1118[_0x1628('0x13')]));});});};exports[_0x1628('0x1f')]=function(_0x414801){var _0x15d96d=this;return new Promise(function(_0x154c54,_0x16e6aa){return db[_0x1628('0x17')]['find']({'raw':_0x414801[_0x1628('0x18')]?_0x414801['options'][_0x1628('0x20')]===undefined?!![]:![]:!![],'where':_0x414801[_0x1628('0x18')]?_0x414801[_0x1628('0x18')][_0x1628('0x19')]||null:null,'attributes':_0x414801['options']?_0x414801[_0x1628('0x18')]['attributes']||null:null,'include':_0x414801['options']?_0x414801[_0x1628('0x18')][_0x1628('0x1b')]?_['map'](_0x414801[_0x1628('0x18')][_0x1628('0x1b')],function(_0x574cb1){return{'model':db[_0x574cb1['model']],'as':_0x574cb1['as'],'attributes':_0x574cb1[_0x1628('0x1a')],'include':_0x574cb1['include']?_['map'](_0x574cb1[_0x1628('0x1b')],function(_0x4d72e1){return{'model':db[_0x4d72e1[_0x1628('0x1d')]],'as':_0x4d72e1['as'],'attributes':_0x4d72e1[_0x1628('0x1a')],'include':_0x4d72e1['include']?_['map'](_0x4d72e1[_0x1628('0x1b')],function(_0x363f6b){return{'model':db[_0x363f6b[_0x1628('0x1d')]],'as':_0x363f6b['as'],'attributes':_0x363f6b['attributes']};}):[]};}):[]};}):[]:[]})[_0x1628('0xb')](function(_0x34ff15){logger[_0x1628('0x14')](_0x1628('0x1f'),_0x414801);logger['debug'](_0x1628('0x1f'),_0x414801,JSON[_0x1628('0x10')](_0x34ff15));_0x154c54(_0x34ff15);})[_0x1628('0x1e')](function(_0x136310){logger[_0x1628('0x11')](_0x1628('0x1f'),_0x136310[_0x1628('0x13')],_0x414801);_0x16e6aa(_0x15d96d[_0x1628('0x11')](0x1f4,_0x136310[_0x1628('0x13')]));});});};
\ No newline at end of file
index c6999d5..f8a0ff1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6da9=['express','Router','fs-extra','./intDynamics365Configuration.controller','get','isAuthenticated','show','/:id/subjects','/:id/descriptions','getDescriptions','post','create','put','/:id','update','delete','destroy','multer','util','path','connect-timeout'];(function(_0x594f05,_0x31eb63){var _0x430a72=function(_0xf4d132){while(--_0xf4d132){_0x594f05['push'](_0x594f05['shift']());}};_0x430a72(++_0x31eb63);}(_0x6da9,0x161));var _0x96da=function(_0xca86cd,_0x8c51fe){_0xca86cd=_0xca86cd-0x0;var _0x27307d=_0x6da9[_0xca86cd];return _0x27307d;};'use strict';var multer=require(_0x96da('0x0'));var util=require(_0x96da('0x1'));var path=require(_0x96da('0x2'));var timeout=require(_0x96da('0x3'));var express=require(_0x96da('0x4'));var router=express[_0x96da('0x5')]();var fs_extra=require(_0x96da('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x96da('0x7'));router[_0x96da('0x8')]('/',auth[_0x96da('0x9')](),controller['index']);router[_0x96da('0x8')]('/:id',auth[_0x96da('0x9')](),controller[_0x96da('0xa')]);router[_0x96da('0x8')]('/:id/fields',auth['isAuthenticated'](),controller['getFields']);router[_0x96da('0x8')](_0x96da('0xb'),auth[_0x96da('0x9')](),controller['getSubjects']);router[_0x96da('0x8')](_0x96da('0xc'),auth['isAuthenticated'](),controller[_0x96da('0xd')]);router[_0x96da('0xe')]('/',auth[_0x96da('0x9')](),controller[_0x96da('0xf')]);router[_0x96da('0x10')](_0x96da('0x11'),auth[_0x96da('0x9')](),controller[_0x96da('0x12')]);router[_0x96da('0x13')]('/:id',auth[_0x96da('0x9')](),controller[_0x96da('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0x4024=['delete','/:id','destroy','exports','multer','util','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/:id/fields','getDescriptions','create','put','update'];(function(_0x469cb,_0x4037f3){var _0x5fd9f5=function(_0x59c62b){while(--_0x59c62b){_0x469cb['push'](_0x469cb['shift']());}};_0x5fd9f5(++_0x4037f3);}(_0x4024,0x89));var _0x4402=function(_0x13f911,_0x2afe78){_0x13f911=_0x13f911-0x0;var _0x33c71b=_0x4024[_0x13f911];return _0x33c71b;};'use strict';var multer=require(_0x4402('0x0'));var util=require(_0x4402('0x1'));var path=require('path');var timeout=require(_0x4402('0x2'));var express=require(_0x4402('0x3'));var router=express['Router']();var fs_extra=require(_0x4402('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x4402('0x5'));var config=require(_0x4402('0x6'));var controller=require('./intDynamics365Configuration.controller');router['get']('/',auth[_0x4402('0x7')](),controller[_0x4402('0x8')]);router[_0x4402('0x9')]('/:id',auth[_0x4402('0x7')](),controller['show']);router['get'](_0x4402('0xa'),auth['isAuthenticated'](),controller['getFields']);router[_0x4402('0x9')]('/:id/subjects',auth[_0x4402('0x7')](),controller['getSubjects']);router[_0x4402('0x9')]('/:id/descriptions',auth[_0x4402('0x7')](),controller[_0x4402('0xb')]);router['post']('/',auth[_0x4402('0x7')](),controller[_0x4402('0xc')]);router[_0x4402('0xd')]('/:id',auth[_0x4402('0x7')](),controller[_0x4402('0xe')]);router[_0x4402('0xf')](_0x4402('0x10'),auth[_0x4402('0x7')](),controller[_0x4402('0x11')]);module[_0x4402('0x12')]=router;
\ No newline at end of file
index bc5de53..00c93ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1ff9=['ENUM','incident','sequelize','exports','STRING'];(function(_0x5ed973,_0x42389f){var _0x2b41c9=function(_0xa2b346){while(--_0xa2b346){_0x5ed973['push'](_0x5ed973['shift']());}};_0x2b41c9(++_0x42389f);}(_0x1ff9,0x15b));var _0x91ff=function(_0x2606e7,_0xcbe32c){_0x2606e7=_0x2606e7-0x0;var _0x56d2b6=_0x1ff9[_0x2606e7];return _0x56d2b6;};'use strict';var Sequelize=require(_0x91ff('0x0'));module[_0x91ff('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x91ff('0x2')]},'ticketType':{'type':Sequelize[_0x91ff('0x3')](_0x91ff('0x4'),'phonecall'),'defaultValue':'incident'}};
\ No newline at end of file
+var _0xc338=['incident','exports','STRING','ENUM'];(function(_0x146223,_0x200f25){var _0x45bac4=function(_0x147bad){while(--_0x147bad){_0x146223['push'](_0x146223['shift']());}};_0x45bac4(++_0x200f25);}(_0xc338,0x191));var _0x8c33=function(_0x17d2da,_0x1100e2){_0x17d2da=_0x17d2da-0x0;var _0x457d60=_0xc338[_0x17d2da];return _0x457d60;};'use strict';var Sequelize=require('sequelize');module[_0x8c33('0x0')]={'name':{'type':Sequelize[_0x8c33('0x1')]},'description':{'type':Sequelize['STRING']},'ticketType':{'type':Sequelize[_0x8c33('0x2')]('incident','phonecall'),'defaultValue':_0x8c33('0x3')}};
\ No newline at end of file
index b4e5e7e..5ef9998 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0089=['findOne','rimraf','request-promise','bluebird','util','path','to-csv','ejs','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','status','end','json','limit','undefined','count','Content-Range','apply','reject','save','then','destroy','error','stack','name','send','index','Dynamics365Configuration','rawAttributes','fieldName','type','key','model','map','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','offset','order','sort','where','filters','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','options','create','body','update','find','getFields','Dynamics365Field','length','getSubjects','getDescriptions'];(function(_0x426fb9,_0x73b8ed){var _0x2d1760=function(_0x10d531){while(--_0x10d531){_0x426fb9['push'](_0x426fb9['shift']());}};_0x2d1760(++_0x73b8ed);}(_0x0089,0x9f));var _0x9008=function(_0x40e2d6,_0x307f84){_0x40e2d6=_0x40e2d6-0x0;var _0x2f298d=_0x0089[_0x40e2d6];return _0x2f298d;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9008('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x9008('0x1'));var moment=require('moment');var BPromise=require(_0x9008('0x2'));var Mustache=require('mustache');var util=require(_0x9008('0x3'));var path=require(_0x9008('0x4'));var sox=require('sox');var csv=require(_0x9008('0x5'));var ejs=require(_0x9008('0x6'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x9008('0x7'));var squel=require(_0x9008('0x8'));var crypto=require(_0x9008('0x9'));var jsforce=require(_0x9008('0xa'));var deskjs=require('desk.js');var toCsv=require(_0x9008('0x5'));var querystring=require(_0x9008('0xb'));var Papa=require(_0x9008('0xc'));var Redis=require(_0x9008('0xd'));var authService=require(_0x9008('0xe'));var qs=require(_0x9008('0xf'));var as=require(_0x9008('0x10'));var hardwareService=require(_0x9008('0x11'));var logger=require('../../config/logger')('api');var utils=require(_0x9008('0x12'));var config=require(_0x9008('0x13'));var licenseUtil=require(_0x9008('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4eaffc,_0x723a5f){_0x723a5f=_0x723a5f||0xcc;return function(_0x336364){if(_0x336364){return _0x4eaffc['sendStatus'](_0x723a5f);}return _0x4eaffc[_0x9008('0x15')](_0x723a5f)[_0x9008('0x16')]();};}function respondWithResult(_0x530ef7,_0x5dfef2){_0x5dfef2=_0x5dfef2||0xc8;return function(_0x5b3a61){if(_0x5b3a61){return _0x530ef7[_0x9008('0x15')](_0x5dfef2)[_0x9008('0x17')](_0x5b3a61);}};}function respondWithFilteredResult(_0x3f0509,_0x2296ba){return function(_0x4c3b70){if(_0x4c3b70){var _0x537dd0=typeof _0x2296ba['offset']==='undefined'&&typeof _0x2296ba[_0x9008('0x18')]===_0x9008('0x19');var _0x349a29=_0x4c3b70['count'];var _0x42ab35=_0x537dd0?0x0:_0x2296ba['offset'];var _0x1c6657=_0x537dd0?_0x4c3b70[_0x9008('0x1a')]:_0x2296ba['offset']+_0x2296ba[_0x9008('0x18')];var _0x2969ec;if(_0x1c6657>=_0x349a29){_0x1c6657=_0x349a29;_0x2969ec=0xc8;}else{_0x2969ec=0xce;}_0x3f0509[_0x9008('0x15')](_0x2969ec);return _0x3f0509['set'](_0x9008('0x1b'),_0x42ab35+'-'+_0x1c6657+'/'+_0x349a29)[_0x9008('0x17')](_0x4c3b70);}return null;};}function patchUpdates(_0x5367c1){return function(_0x4ab4c7){try{jsonpatch[_0x9008('0x1c')](_0x4ab4c7,_0x5367c1,!![]);}catch(_0x2c4278){return BPromise[_0x9008('0x1d')](_0x2c4278);}return _0x4ab4c7[_0x9008('0x1e')]();};}function saveUpdates(_0x3c4ecc,_0x48ee80){return function(_0x339e18){if(_0x339e18){return _0x339e18['update'](_0x3c4ecc)[_0x9008('0x1f')](function(_0x400af5){return _0x400af5;});}return null;};}function removeEntity(_0x1412bc,_0x1b1b9c){return function(_0x6c4543){if(_0x6c4543){return _0x6c4543[_0x9008('0x20')]()[_0x9008('0x1f')](function(){_0x1412bc[_0x9008('0x15')](0xcc)[_0x9008('0x16')]();});}};}function handleEntityNotFound(_0xdfb36a,_0x597fd9){return function(_0x1a50f2){if(!_0x1a50f2){_0xdfb36a['sendStatus'](0x194);}return _0x1a50f2;};}function handleError(_0x4b2045,_0x2a5c2d){_0x2a5c2d=_0x2a5c2d||0x1f4;return function(_0x51582d){logger[_0x9008('0x21')](_0x51582d[_0x9008('0x22')]);if(_0x51582d[_0x9008('0x23')]){delete _0x51582d['name'];}_0x4b2045[_0x9008('0x15')](_0x2a5c2d)[_0x9008('0x24')](_0x51582d);};}exports[_0x9008('0x25')]=function(_0x51013f,_0x19858c){var _0x30a51b={},_0x47d1f3={},_0x57f8ce={'count':0x0,'rows':[]};var _0x4ff156=_['map'](db[_0x9008('0x26')][_0x9008('0x27')],function(_0xacffa9){return{'name':_0xacffa9[_0x9008('0x28')],'type':_0xacffa9[_0x9008('0x29')][_0x9008('0x2a')]};});_0x47d1f3[_0x9008('0x2b')]=_[_0x9008('0x2c')](_0x4ff156,'name');_0x47d1f3[_0x9008('0x2d')]=_[_0x9008('0x2e')](_0x51013f[_0x9008('0x2d')]);_0x47d1f3['filters']=_[_0x9008('0x2f')](_0x47d1f3['model'],_0x47d1f3['query']);_0x30a51b[_0x9008('0x30')]=_[_0x9008('0x2f')](_0x47d1f3[_0x9008('0x2b')],qs[_0x9008('0x31')](_0x51013f[_0x9008('0x2d')][_0x9008('0x31')]));_0x30a51b['attributes']=_0x30a51b[_0x9008('0x30')]['length']?_0x30a51b[_0x9008('0x30')]:_0x47d1f3[_0x9008('0x2b')];if(!_0x51013f[_0x9008('0x2d')][_0x9008('0x32')](_0x9008('0x33'))){_0x30a51b[_0x9008('0x18')]=qs[_0x9008('0x18')](_0x51013f['query'][_0x9008('0x18')]);_0x30a51b[_0x9008('0x34')]=qs[_0x9008('0x34')](_0x51013f[_0x9008('0x2d')][_0x9008('0x34')]);}_0x30a51b[_0x9008('0x35')]=qs[_0x9008('0x36')](_0x51013f[_0x9008('0x2d')]['sort']);_0x30a51b[_0x9008('0x37')]=qs[_0x9008('0x38')](_[_0x9008('0x39')](_0x51013f[_0x9008('0x2d')],_0x47d1f3['filters']),_0x4ff156);if(_0x51013f['query'][_0x9008('0x3a')]){_0x30a51b['where']=_[_0x9008('0x3b')](_0x30a51b[_0x9008('0x37')],{'$or':_[_0x9008('0x2c')](_0x4ff156,function(_0x21a3fa){if(_0x21a3fa[_0x9008('0x29')]!==_0x9008('0x3c')){var _0x87d049={};_0x87d049[_0x21a3fa['name']]={'$like':'%'+_0x51013f[_0x9008('0x2d')][_0x9008('0x3a')]+'%'};return _0x87d049;}})});}_0x30a51b=_[_0x9008('0x3b')]({},_0x30a51b,_0x51013f['options']);var _0x47d514={'where':_0x30a51b['where']};return db[_0x9008('0x26')][_0x9008('0x1a')](_0x47d514)['then'](function(_0x537ba0){_0x57f8ce[_0x9008('0x1a')]=_0x537ba0;if(_0x51013f[_0x9008('0x2d')][_0x9008('0x3d')]){_0x30a51b[_0x9008('0x3e')]=[{'all':!![]}];}return db[_0x9008('0x26')][_0x9008('0x3f')](_0x30a51b);})[_0x9008('0x1f')](function(_0x2097be){_0x57f8ce[_0x9008('0x40')]=_0x2097be;return _0x57f8ce;})[_0x9008('0x1f')](respondWithFilteredResult(_0x19858c,_0x30a51b))[_0x9008('0x41')](handleError(_0x19858c,null));};exports[_0x9008('0x42')]=function(_0x1fba4c,_0x3ceb4a){var _0x18d016={'raw':![],'where':{'id':_0x1fba4c[_0x9008('0x43')]['id']}},_0xa38257={};_0xa38257[_0x9008('0x2b')]=_[_0x9008('0x2e')](db['Dynamics365Configuration'][_0x9008('0x27')]);_0xa38257[_0x9008('0x2d')]=_[_0x9008('0x2e')](_0x1fba4c[_0x9008('0x2d')]);_0xa38257['filters']=_[_0x9008('0x2f')](_0xa38257[_0x9008('0x2b')],_0xa38257[_0x9008('0x2d')]);_0x18d016['attributes']=_[_0x9008('0x2f')](_0xa38257[_0x9008('0x2b')],qs[_0x9008('0x31')](_0x1fba4c['query'][_0x9008('0x31')]));_0x18d016[_0x9008('0x30')]=_0x18d016[_0x9008('0x30')]['length']?_0x18d016['attributes']:_0xa38257[_0x9008('0x2b')];if(_0x1fba4c[_0x9008('0x2d')][_0x9008('0x3d')]){_0x18d016['include']=[{'all':!![]}];}_0x18d016=_[_0x9008('0x3b')]({},_0x18d016,_0x1fba4c[_0x9008('0x44')]);return db[_0x9008('0x26')]['find'](_0x18d016)[_0x9008('0x1f')](handleEntityNotFound(_0x3ceb4a,null))[_0x9008('0x1f')](respondWithResult(_0x3ceb4a,null))[_0x9008('0x41')](handleError(_0x3ceb4a,null));};exports[_0x9008('0x45')]=function(_0x3e0955,_0x5a0e56){return db[_0x9008('0x26')][_0x9008('0x45')](_0x3e0955[_0x9008('0x46')],{})['then'](respondWithResult(_0x5a0e56,0xc9))[_0x9008('0x41')](handleError(_0x5a0e56,null));};exports[_0x9008('0x47')]=function(_0x1d2500,_0x218e5c){if(_0x1d2500['body']['id']){delete _0x1d2500[_0x9008('0x46')]['id'];}return db[_0x9008('0x26')][_0x9008('0x48')]({'where':{'id':_0x1d2500[_0x9008('0x43')]['id']}})[_0x9008('0x1f')](handleEntityNotFound(_0x218e5c,null))[_0x9008('0x1f')](saveUpdates(_0x1d2500['body'],null))['then'](respondWithResult(_0x218e5c,null))[_0x9008('0x41')](handleError(_0x218e5c,null));};exports[_0x9008('0x20')]=function(_0x4da909,_0xb09535){return db[_0x9008('0x26')][_0x9008('0x48')]({'where':{'id':_0x4da909['params']['id']}})['then'](handleEntityNotFound(_0xb09535,null))['then'](removeEntity(_0xb09535,null))[_0x9008('0x41')](handleError(_0xb09535,null));};exports[_0x9008('0x49')]=function(_0x45b0a7,_0x1b5c64,_0x3c70ed){var _0x3b2971={};var _0x26fb26={};var _0x3cb4fd;var _0x340f3a;return db['Dynamics365Configuration']['findOne']({'where':{'id':_0x45b0a7[_0x9008('0x43')]['id']}})[_0x9008('0x1f')](handleEntityNotFound(_0x1b5c64,null))['then'](function(_0x2e05be){if(_0x2e05be){_0x3cb4fd=_0x2e05be;_0x26fb26[_0x9008('0x2b')]=_[_0x9008('0x2e')](db[_0x9008('0x4a')][_0x9008('0x27')]);_0x26fb26['query']=_[_0x9008('0x2e')](_0x45b0a7[_0x9008('0x2d')]);_0x26fb26[_0x9008('0x38')]=_['intersection'](_0x26fb26[_0x9008('0x2b')],_0x26fb26['query']);_0x3b2971[_0x9008('0x30')]=_[_0x9008('0x2f')](_0x26fb26[_0x9008('0x2b')],qs[_0x9008('0x31')](_0x45b0a7[_0x9008('0x2d')][_0x9008('0x31')]));_0x3b2971[_0x9008('0x30')]=_0x3b2971[_0x9008('0x30')]['length']?_0x3b2971['attributes']:_0x26fb26[_0x9008('0x2b')];_0x3b2971[_0x9008('0x35')]=qs[_0x9008('0x36')](_0x45b0a7['query']['sort']);_0x3b2971[_0x9008('0x37')]=qs[_0x9008('0x38')](_[_0x9008('0x39')](_0x45b0a7['query'],_0x26fb26[_0x9008('0x38')]));if(_0x45b0a7[_0x9008('0x2d')][_0x9008('0x3a')]){_0x3b2971[_0x9008('0x37')]=_[_0x9008('0x3b')](_0x3b2971[_0x9008('0x37')],{'$or':_['map'](_0x3b2971[_0x9008('0x30')],function(_0x312940){var _0x3fad82={};_0x3fad82[_0x312940]={'$like':'%'+_0x45b0a7[_0x9008('0x2d')][_0x9008('0x3a')]+'%'};return _0x3fad82;})});}_0x3b2971=_['merge']({},_0x3b2971,_0x45b0a7['options']);return _0x3cb4fd[_0x9008('0x49')](_0x3b2971);}})['then'](function(_0x5193a6){if(_0x5193a6){_0x340f3a=_0x5193a6[_0x9008('0x4b')];if(!_0x45b0a7[_0x9008('0x2d')]['hasOwnProperty'](_0x9008('0x33'))){_0x3b2971[_0x9008('0x18')]=qs['limit'](_0x45b0a7[_0x9008('0x2d')][_0x9008('0x18')]);_0x3b2971['offset']=qs['offset'](_0x45b0a7[_0x9008('0x2d')][_0x9008('0x34')]);}return _0x3cb4fd[_0x9008('0x49')](_0x3b2971);}})[_0x9008('0x1f')](function(_0x28d5a3){if(_0x28d5a3){return _0x28d5a3?{'count':_0x340f3a,'rows':_0x28d5a3}:null;}})[_0x9008('0x1f')](respondWithResult(_0x1b5c64,null))['catch'](handleError(_0x1b5c64,null));};exports['getSubjects']=function(_0x3e5722,_0x29ecdc,_0x5064a3){var _0x446175={};var _0x45c51b={};var _0x105b24;var _0x5ec2c8;return db[_0x9008('0x26')]['findOne']({'where':{'id':_0x3e5722[_0x9008('0x43')]['id']}})[_0x9008('0x1f')](handleEntityNotFound(_0x29ecdc,null))[_0x9008('0x1f')](function(_0x5d507a){if(_0x5d507a){_0x105b24=_0x5d507a;_0x45c51b[_0x9008('0x2b')]=_[_0x9008('0x2e')](db['Dynamics365Field'][_0x9008('0x27')]);_0x45c51b[_0x9008('0x2d')]=_['keys'](_0x3e5722[_0x9008('0x2d')]);_0x45c51b[_0x9008('0x38')]=_[_0x9008('0x2f')](_0x45c51b['model'],_0x45c51b[_0x9008('0x2d')]);_0x446175[_0x9008('0x30')]=_[_0x9008('0x2f')](_0x45c51b['model'],qs[_0x9008('0x31')](_0x3e5722[_0x9008('0x2d')][_0x9008('0x31')]));_0x446175[_0x9008('0x30')]=_0x446175[_0x9008('0x30')][_0x9008('0x4b')]?_0x446175[_0x9008('0x30')]:_0x45c51b['model'];_0x446175[_0x9008('0x35')]=qs[_0x9008('0x36')](_0x3e5722[_0x9008('0x2d')]['sort']);_0x446175[_0x9008('0x37')]=qs[_0x9008('0x38')](_['pick'](_0x3e5722[_0x9008('0x2d')],_0x45c51b[_0x9008('0x38')]));if(_0x3e5722['query']['filter']){_0x446175['where']=_[_0x9008('0x3b')](_0x446175[_0x9008('0x37')],{'$or':_[_0x9008('0x2c')](_0x446175[_0x9008('0x30')],function(_0x41eefa){var _0x5d708c={};_0x5d708c[_0x41eefa]={'$like':'%'+_0x3e5722[_0x9008('0x2d')]['filter']+'%'};return _0x5d708c;})});}_0x446175=_[_0x9008('0x3b')]({},_0x446175,_0x3e5722[_0x9008('0x44')]);return _0x105b24[_0x9008('0x4c')](_0x446175);}})[_0x9008('0x1f')](function(_0x5a699c){if(_0x5a699c){_0x5ec2c8=_0x5a699c[_0x9008('0x4b')];if(!_0x3e5722[_0x9008('0x2d')][_0x9008('0x32')](_0x9008('0x33'))){_0x446175[_0x9008('0x18')]=qs[_0x9008('0x18')](_0x3e5722[_0x9008('0x2d')][_0x9008('0x18')]);_0x446175[_0x9008('0x34')]=qs[_0x9008('0x34')](_0x3e5722['query']['offset']);}return _0x105b24['getSubjects'](_0x446175);}})[_0x9008('0x1f')](function(_0xf5d973){if(_0xf5d973){return _0xf5d973?{'count':_0x5ec2c8,'rows':_0xf5d973}:null;}})['then'](respondWithResult(_0x29ecdc,null))[_0x9008('0x41')](handleError(_0x29ecdc,null));};exports[_0x9008('0x4d')]=function(_0x4abf1e,_0x20ae46,_0x19c6c0){var _0x17374e={};var _0x3a4ca7={};var _0x3ad6da;var _0x60d5d8;return db[_0x9008('0x26')][_0x9008('0x4e')]({'where':{'id':_0x4abf1e['params']['id']}})[_0x9008('0x1f')](handleEntityNotFound(_0x20ae46,null))['then'](function(_0x121314){if(_0x121314){_0x3ad6da=_0x121314;_0x3a4ca7[_0x9008('0x2b')]=_[_0x9008('0x2e')](db[_0x9008('0x4a')][_0x9008('0x27')]);_0x3a4ca7['query']=_[_0x9008('0x2e')](_0x4abf1e[_0x9008('0x2d')]);_0x3a4ca7[_0x9008('0x38')]=_[_0x9008('0x2f')](_0x3a4ca7[_0x9008('0x2b')],_0x3a4ca7['query']);_0x17374e['attributes']=_[_0x9008('0x2f')](_0x3a4ca7[_0x9008('0x2b')],qs[_0x9008('0x31')](_0x4abf1e['query'][_0x9008('0x31')]));_0x17374e['attributes']=_0x17374e['attributes']['length']?_0x17374e[_0x9008('0x30')]:_0x3a4ca7[_0x9008('0x2b')];_0x17374e[_0x9008('0x35')]=qs[_0x9008('0x36')](_0x4abf1e[_0x9008('0x2d')]['sort']);_0x17374e[_0x9008('0x37')]=qs[_0x9008('0x38')](_[_0x9008('0x39')](_0x4abf1e[_0x9008('0x2d')],_0x3a4ca7[_0x9008('0x38')]));if(_0x4abf1e[_0x9008('0x2d')][_0x9008('0x3a')]){_0x17374e['where']=_[_0x9008('0x3b')](_0x17374e[_0x9008('0x37')],{'$or':_[_0x9008('0x2c')](_0x17374e['attributes'],function(_0x53f6f0){var _0x3dd4d1={};_0x3dd4d1[_0x53f6f0]={'$like':'%'+_0x4abf1e[_0x9008('0x2d')][_0x9008('0x3a')]+'%'};return _0x3dd4d1;})});}_0x17374e=_['merge']({},_0x17374e,_0x4abf1e['options']);return _0x3ad6da[_0x9008('0x4d')](_0x17374e);}})[_0x9008('0x1f')](function(_0x120912){if(_0x120912){_0x60d5d8=_0x120912[_0x9008('0x4b')];if(!_0x4abf1e['query']['hasOwnProperty'](_0x9008('0x33'))){_0x17374e[_0x9008('0x18')]=qs['limit'](_0x4abf1e['query'][_0x9008('0x18')]);_0x17374e[_0x9008('0x34')]=qs[_0x9008('0x34')](_0x4abf1e[_0x9008('0x2d')][_0x9008('0x34')]);}return _0x3ad6da['getDescriptions'](_0x17374e);}})[_0x9008('0x1f')](function(_0x9b5922){if(_0x9b5922){return _0x9b5922?{'count':_0x60d5d8,'rows':_0x9b5922}:null;}})[_0x9008('0x1f')](respondWithResult(_0x20ae46,null))[_0x9008('0x41')](handleError(_0x20ae46,null));};
\ No newline at end of file
+var _0xecb3=['keys','filters','intersection','query','attributes','fields','length','nolimit','limit','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','find','create','body','getFields','hasOwnProperty','getSubjects','Dynamics365Field','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','sox','to-csv','ejs','lodash','squel','crypto','desk.js','papaparse','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','set','apply','reject','save','update','then','destroy','error','stack','name','send','map','Dynamics365Configuration','fieldName','type','key','model'];(function(_0x511dd6,_0x5d294d){var _0x39f16b=function(_0x150692){while(--_0x150692){_0x511dd6['push'](_0x511dd6['shift']());}};_0x39f16b(++_0x5d294d);}(_0xecb3,0x71));var _0x3ecb=function(_0x580647,_0x43d2c3){_0x580647=_0x580647-0x0;var _0x5f0792=_0xecb3[_0x580647];return _0x5f0792;};'use strict';var emlformat=require(_0x3ecb('0x0'));var rimraf=require(_0x3ecb('0x1'));var zipdir=require(_0x3ecb('0x2'));var jsonpatch=require(_0x3ecb('0x3'));var rp=require(_0x3ecb('0x4'));var moment=require(_0x3ecb('0x5'));var BPromise=require(_0x3ecb('0x6'));var Mustache=require('mustache');var util=require('util');var path=require(_0x3ecb('0x7'));var sox=require(_0x3ecb('0x8'));var csv=require(_0x3ecb('0x9'));var ejs=require(_0x3ecb('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x3ecb('0xb'));var squel=require(_0x3ecb('0xc'));var crypto=require(_0x3ecb('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x3ecb('0xe'));var toCsv=require(_0x3ecb('0x9'));var querystring=require('querystring');var Papa=require(_0x3ecb('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x3ecb('0x10'));var hardwareService=require(_0x3ecb('0x11'));var logger=require('../../config/logger')(_0x3ecb('0x12'));var utils=require(_0x3ecb('0x13'));var config=require(_0x3ecb('0x14'));var licenseUtil=require(_0x3ecb('0x15'));var db=require(_0x3ecb('0x16'))['db'];function respondWithStatusCode(_0x47234e,_0x446751){_0x446751=_0x446751||0xcc;return function(_0x411bce){if(_0x411bce){return _0x47234e[_0x3ecb('0x17')](_0x446751);}return _0x47234e[_0x3ecb('0x18')](_0x446751)[_0x3ecb('0x19')]();};}function respondWithResult(_0x9e5c68,_0x578264){_0x578264=_0x578264||0xc8;return function(_0x169862){if(_0x169862){return _0x9e5c68['status'](_0x578264)[_0x3ecb('0x1a')](_0x169862);}};}function respondWithFilteredResult(_0x36770e,_0x4ac969){return function(_0x11ad77){if(_0x11ad77){var _0x1a7ad4=typeof _0x4ac969[_0x3ecb('0x1b')]===_0x3ecb('0x1c')&&typeof _0x4ac969['limit']==='undefined';var _0x4b7d34=_0x11ad77[_0x3ecb('0x1d')];var _0x553ce4=_0x1a7ad4?0x0:_0x4ac969[_0x3ecb('0x1b')];var _0x360181=_0x1a7ad4?_0x11ad77[_0x3ecb('0x1d')]:_0x4ac969[_0x3ecb('0x1b')]+_0x4ac969['limit'];var _0x5df877;if(_0x360181>=_0x4b7d34){_0x360181=_0x4b7d34;_0x5df877=0xc8;}else{_0x5df877=0xce;}_0x36770e[_0x3ecb('0x18')](_0x5df877);return _0x36770e[_0x3ecb('0x1e')]('Content-Range',_0x553ce4+'-'+_0x360181+'/'+_0x4b7d34)[_0x3ecb('0x1a')](_0x11ad77);}return null;};}function patchUpdates(_0xc89289){return function(_0x403b33){try{jsonpatch[_0x3ecb('0x1f')](_0x403b33,_0xc89289,!![]);}catch(_0x7b8f11){return BPromise[_0x3ecb('0x20')](_0x7b8f11);}return _0x403b33[_0x3ecb('0x21')]();};}function saveUpdates(_0x49472c,_0x11f6ef){return function(_0x33566b){if(_0x33566b){return _0x33566b[_0x3ecb('0x22')](_0x49472c)[_0x3ecb('0x23')](function(_0x7adb92){return _0x7adb92;});}return null;};}function removeEntity(_0x5b2a50,_0x20b5b1){return function(_0x1f01d8){if(_0x1f01d8){return _0x1f01d8[_0x3ecb('0x24')]()['then'](function(){_0x5b2a50[_0x3ecb('0x18')](0xcc)[_0x3ecb('0x19')]();});}};}function handleEntityNotFound(_0x34dbb8,_0x48f56c){return function(_0x33b3eb){if(!_0x33b3eb){_0x34dbb8['sendStatus'](0x194);}return _0x33b3eb;};}function handleError(_0x47f392,_0xa5e19e){_0xa5e19e=_0xa5e19e||0x1f4;return function(_0x337477){logger[_0x3ecb('0x25')](_0x337477[_0x3ecb('0x26')]);if(_0x337477[_0x3ecb('0x27')]){delete _0x337477[_0x3ecb('0x27')];}_0x47f392[_0x3ecb('0x18')](_0xa5e19e)[_0x3ecb('0x28')](_0x337477);};}exports['index']=function(_0xb24158,_0x319be9){var _0x3e1f7b={},_0x2a3ee9={},_0x5db4aa={'count':0x0,'rows':[]};var _0x3df824=_[_0x3ecb('0x29')](db[_0x3ecb('0x2a')]['rawAttributes'],function(_0x5960a6){return{'name':_0x5960a6[_0x3ecb('0x2b')],'type':_0x5960a6[_0x3ecb('0x2c')][_0x3ecb('0x2d')]};});_0x2a3ee9[_0x3ecb('0x2e')]=_[_0x3ecb('0x29')](_0x3df824,_0x3ecb('0x27'));_0x2a3ee9['query']=_[_0x3ecb('0x2f')](_0xb24158['query']);_0x2a3ee9[_0x3ecb('0x30')]=_[_0x3ecb('0x31')](_0x2a3ee9[_0x3ecb('0x2e')],_0x2a3ee9[_0x3ecb('0x32')]);_0x3e1f7b[_0x3ecb('0x33')]=_[_0x3ecb('0x31')](_0x2a3ee9[_0x3ecb('0x2e')],qs[_0x3ecb('0x34')](_0xb24158[_0x3ecb('0x32')][_0x3ecb('0x34')]));_0x3e1f7b[_0x3ecb('0x33')]=_0x3e1f7b['attributes'][_0x3ecb('0x35')]?_0x3e1f7b[_0x3ecb('0x33')]:_0x2a3ee9[_0x3ecb('0x2e')];if(!_0xb24158[_0x3ecb('0x32')]['hasOwnProperty'](_0x3ecb('0x36'))){_0x3e1f7b[_0x3ecb('0x37')]=qs[_0x3ecb('0x37')](_0xb24158[_0x3ecb('0x32')]['limit']);_0x3e1f7b['offset']=qs[_0x3ecb('0x1b')](_0xb24158[_0x3ecb('0x32')]['offset']);}_0x3e1f7b[_0x3ecb('0x38')]=qs[_0x3ecb('0x39')](_0xb24158[_0x3ecb('0x32')][_0x3ecb('0x39')]);_0x3e1f7b['where']=qs[_0x3ecb('0x30')](_[_0x3ecb('0x3a')](_0xb24158[_0x3ecb('0x32')],_0x2a3ee9[_0x3ecb('0x30')]),_0x3df824);if(_0xb24158[_0x3ecb('0x32')][_0x3ecb('0x3b')]){_0x3e1f7b[_0x3ecb('0x3c')]=_[_0x3ecb('0x3d')](_0x3e1f7b[_0x3ecb('0x3c')],{'$or':_[_0x3ecb('0x29')](_0x3df824,function(_0x2f507e){if(_0x2f507e['type']!==_0x3ecb('0x3e')){var _0x467bfb={};_0x467bfb[_0x2f507e[_0x3ecb('0x27')]]={'$like':'%'+_0xb24158[_0x3ecb('0x32')]['filter']+'%'};return _0x467bfb;}})});}_0x3e1f7b=_[_0x3ecb('0x3d')]({},_0x3e1f7b,_0xb24158[_0x3ecb('0x3f')]);var _0x2ad359={'where':_0x3e1f7b['where']};return db[_0x3ecb('0x2a')][_0x3ecb('0x1d')](_0x2ad359)[_0x3ecb('0x23')](function(_0xd79df1){_0x5db4aa[_0x3ecb('0x1d')]=_0xd79df1;if(_0xb24158[_0x3ecb('0x32')][_0x3ecb('0x40')]){_0x3e1f7b[_0x3ecb('0x41')]=[{'all':!![]}];}return db[_0x3ecb('0x2a')][_0x3ecb('0x42')](_0x3e1f7b);})['then'](function(_0x2ce8aa){_0x5db4aa[_0x3ecb('0x43')]=_0x2ce8aa;return _0x5db4aa;})[_0x3ecb('0x23')](respondWithFilteredResult(_0x319be9,_0x3e1f7b))[_0x3ecb('0x44')](handleError(_0x319be9,null));};exports[_0x3ecb('0x45')]=function(_0x59edb0,_0x26b95b){var _0x17fb96={'raw':![],'where':{'id':_0x59edb0[_0x3ecb('0x46')]['id']}},_0x1d0ed0={};_0x1d0ed0[_0x3ecb('0x2e')]=_['keys'](db[_0x3ecb('0x2a')][_0x3ecb('0x47')]);_0x1d0ed0[_0x3ecb('0x32')]=_['keys'](_0x59edb0[_0x3ecb('0x32')]);_0x1d0ed0[_0x3ecb('0x30')]=_[_0x3ecb('0x31')](_0x1d0ed0[_0x3ecb('0x2e')],_0x1d0ed0[_0x3ecb('0x32')]);_0x17fb96[_0x3ecb('0x33')]=_[_0x3ecb('0x31')](_0x1d0ed0[_0x3ecb('0x2e')],qs[_0x3ecb('0x34')](_0x59edb0[_0x3ecb('0x32')][_0x3ecb('0x34')]));_0x17fb96['attributes']=_0x17fb96[_0x3ecb('0x33')][_0x3ecb('0x35')]?_0x17fb96[_0x3ecb('0x33')]:_0x1d0ed0[_0x3ecb('0x2e')];if(_0x59edb0[_0x3ecb('0x32')][_0x3ecb('0x40')]){_0x17fb96[_0x3ecb('0x41')]=[{'all':!![]}];}_0x17fb96=_[_0x3ecb('0x3d')]({},_0x17fb96,_0x59edb0[_0x3ecb('0x3f')]);return db[_0x3ecb('0x2a')][_0x3ecb('0x48')](_0x17fb96)[_0x3ecb('0x23')](handleEntityNotFound(_0x26b95b,null))[_0x3ecb('0x23')](respondWithResult(_0x26b95b,null))[_0x3ecb('0x44')](handleError(_0x26b95b,null));};exports[_0x3ecb('0x49')]=function(_0xc87496,_0x4c1581){return db['Dynamics365Configuration'][_0x3ecb('0x49')](_0xc87496[_0x3ecb('0x4a')],{})[_0x3ecb('0x23')](respondWithResult(_0x4c1581,0xc9))[_0x3ecb('0x44')](handleError(_0x4c1581,null));};exports[_0x3ecb('0x22')]=function(_0x1c85ee,_0x51aa02){if(_0x1c85ee['body']['id']){delete _0x1c85ee[_0x3ecb('0x4a')]['id'];}return db['Dynamics365Configuration'][_0x3ecb('0x48')]({'where':{'id':_0x1c85ee[_0x3ecb('0x46')]['id']}})[_0x3ecb('0x23')](handleEntityNotFound(_0x51aa02,null))[_0x3ecb('0x23')](saveUpdates(_0x1c85ee[_0x3ecb('0x4a')],null))[_0x3ecb('0x23')](respondWithResult(_0x51aa02,null))['catch'](handleError(_0x51aa02,null));};exports[_0x3ecb('0x24')]=function(_0x396ea3,_0x3cfe3a){return db[_0x3ecb('0x2a')]['find']({'where':{'id':_0x396ea3[_0x3ecb('0x46')]['id']}})[_0x3ecb('0x23')](handleEntityNotFound(_0x3cfe3a,null))['then'](removeEntity(_0x3cfe3a,null))['catch'](handleError(_0x3cfe3a,null));};exports['getFields']=function(_0x611c7b,_0x4de0db,_0x5408ea){var _0x204491={};var _0x13bf82={};var _0x16f936;var _0x4736a0;return db['Dynamics365Configuration']['findOne']({'where':{'id':_0x611c7b[_0x3ecb('0x46')]['id']}})[_0x3ecb('0x23')](handleEntityNotFound(_0x4de0db,null))['then'](function(_0x1279e1){if(_0x1279e1){_0x16f936=_0x1279e1;_0x13bf82[_0x3ecb('0x2e')]=_[_0x3ecb('0x2f')](db['Dynamics365Field'][_0x3ecb('0x47')]);_0x13bf82[_0x3ecb('0x32')]=_['keys'](_0x611c7b[_0x3ecb('0x32')]);_0x13bf82[_0x3ecb('0x30')]=_[_0x3ecb('0x31')](_0x13bf82[_0x3ecb('0x2e')],_0x13bf82[_0x3ecb('0x32')]);_0x204491[_0x3ecb('0x33')]=_[_0x3ecb('0x31')](_0x13bf82[_0x3ecb('0x2e')],qs[_0x3ecb('0x34')](_0x611c7b[_0x3ecb('0x32')][_0x3ecb('0x34')]));_0x204491['attributes']=_0x204491[_0x3ecb('0x33')][_0x3ecb('0x35')]?_0x204491[_0x3ecb('0x33')]:_0x13bf82['model'];_0x204491['order']=qs['sort'](_0x611c7b[_0x3ecb('0x32')]['sort']);_0x204491[_0x3ecb('0x3c')]=qs[_0x3ecb('0x30')](_[_0x3ecb('0x3a')](_0x611c7b[_0x3ecb('0x32')],_0x13bf82['filters']));if(_0x611c7b[_0x3ecb('0x32')][_0x3ecb('0x3b')]){_0x204491[_0x3ecb('0x3c')]=_[_0x3ecb('0x3d')](_0x204491[_0x3ecb('0x3c')],{'$or':_[_0x3ecb('0x29')](_0x204491[_0x3ecb('0x33')],function(_0x47319a){var _0x42a10e={};_0x42a10e[_0x47319a]={'$like':'%'+_0x611c7b['query'][_0x3ecb('0x3b')]+'%'};return _0x42a10e;})});}_0x204491=_[_0x3ecb('0x3d')]({},_0x204491,_0x611c7b[_0x3ecb('0x3f')]);return _0x16f936[_0x3ecb('0x4b')](_0x204491);}})[_0x3ecb('0x23')](function(_0x4482f1){if(_0x4482f1){_0x4736a0=_0x4482f1[_0x3ecb('0x35')];if(!_0x611c7b[_0x3ecb('0x32')][_0x3ecb('0x4c')]('nolimit')){_0x204491[_0x3ecb('0x37')]=qs['limit'](_0x611c7b[_0x3ecb('0x32')]['limit']);_0x204491['offset']=qs[_0x3ecb('0x1b')](_0x611c7b[_0x3ecb('0x32')][_0x3ecb('0x1b')]);}return _0x16f936['getFields'](_0x204491);}})[_0x3ecb('0x23')](function(_0xe5486a){if(_0xe5486a){return _0xe5486a?{'count':_0x4736a0,'rows':_0xe5486a}:null;}})[_0x3ecb('0x23')](respondWithResult(_0x4de0db,null))[_0x3ecb('0x44')](handleError(_0x4de0db,null));};exports[_0x3ecb('0x4d')]=function(_0x220862,_0x375512,_0x56bce1){var _0x15f0b6={};var _0x76202c={};var _0x3d5ebf;var _0x386e23;return db['Dynamics365Configuration']['findOne']({'where':{'id':_0x220862['params']['id']}})[_0x3ecb('0x23')](handleEntityNotFound(_0x375512,null))[_0x3ecb('0x23')](function(_0x1e9425){if(_0x1e9425){_0x3d5ebf=_0x1e9425;_0x76202c[_0x3ecb('0x2e')]=_[_0x3ecb('0x2f')](db[_0x3ecb('0x4e')][_0x3ecb('0x47')]);_0x76202c['query']=_[_0x3ecb('0x2f')](_0x220862[_0x3ecb('0x32')]);_0x76202c[_0x3ecb('0x30')]=_[_0x3ecb('0x31')](_0x76202c['model'],_0x76202c[_0x3ecb('0x32')]);_0x15f0b6[_0x3ecb('0x33')]=_[_0x3ecb('0x31')](_0x76202c[_0x3ecb('0x2e')],qs[_0x3ecb('0x34')](_0x220862[_0x3ecb('0x32')]['fields']));_0x15f0b6[_0x3ecb('0x33')]=_0x15f0b6[_0x3ecb('0x33')][_0x3ecb('0x35')]?_0x15f0b6['attributes']:_0x76202c[_0x3ecb('0x2e')];_0x15f0b6[_0x3ecb('0x38')]=qs[_0x3ecb('0x39')](_0x220862[_0x3ecb('0x32')][_0x3ecb('0x39')]);_0x15f0b6[_0x3ecb('0x3c')]=qs['filters'](_[_0x3ecb('0x3a')](_0x220862[_0x3ecb('0x32')],_0x76202c[_0x3ecb('0x30')]));if(_0x220862[_0x3ecb('0x32')]['filter']){_0x15f0b6[_0x3ecb('0x3c')]=_[_0x3ecb('0x3d')](_0x15f0b6[_0x3ecb('0x3c')],{'$or':_[_0x3ecb('0x29')](_0x15f0b6[_0x3ecb('0x33')],function(_0x394c73){var _0x238a14={};_0x238a14[_0x394c73]={'$like':'%'+_0x220862[_0x3ecb('0x32')][_0x3ecb('0x3b')]+'%'};return _0x238a14;})});}_0x15f0b6=_[_0x3ecb('0x3d')]({},_0x15f0b6,_0x220862[_0x3ecb('0x3f')]);return _0x3d5ebf[_0x3ecb('0x4d')](_0x15f0b6);}})[_0x3ecb('0x23')](function(_0xc547c){if(_0xc547c){_0x386e23=_0xc547c[_0x3ecb('0x35')];if(!_0x220862[_0x3ecb('0x32')][_0x3ecb('0x4c')](_0x3ecb('0x36'))){_0x15f0b6['limit']=qs[_0x3ecb('0x37')](_0x220862['query'][_0x3ecb('0x37')]);_0x15f0b6['offset']=qs[_0x3ecb('0x1b')](_0x220862[_0x3ecb('0x32')]['offset']);}return _0x3d5ebf['getSubjects'](_0x15f0b6);}})['then'](function(_0x5c53f1){if(_0x5c53f1){return _0x5c53f1?{'count':_0x386e23,'rows':_0x5c53f1}:null;}})['then'](respondWithResult(_0x375512,null))[_0x3ecb('0x44')](handleError(_0x375512,null));};exports[_0x3ecb('0x4f')]=function(_0x5248ac,_0x270737,_0x5511b2){var _0x3b9c57={};var _0x20f625={};var _0x3b6a78;var _0x2273f0;return db[_0x3ecb('0x2a')]['findOne']({'where':{'id':_0x5248ac[_0x3ecb('0x46')]['id']}})[_0x3ecb('0x23')](handleEntityNotFound(_0x270737,null))['then'](function(_0x402a04){if(_0x402a04){_0x3b6a78=_0x402a04;_0x20f625[_0x3ecb('0x2e')]=_[_0x3ecb('0x2f')](db['Dynamics365Field'][_0x3ecb('0x47')]);_0x20f625[_0x3ecb('0x32')]=_[_0x3ecb('0x2f')](_0x5248ac[_0x3ecb('0x32')]);_0x20f625['filters']=_['intersection'](_0x20f625[_0x3ecb('0x2e')],_0x20f625['query']);_0x3b9c57[_0x3ecb('0x33')]=_[_0x3ecb('0x31')](_0x20f625[_0x3ecb('0x2e')],qs[_0x3ecb('0x34')](_0x5248ac[_0x3ecb('0x32')][_0x3ecb('0x34')]));_0x3b9c57[_0x3ecb('0x33')]=_0x3b9c57[_0x3ecb('0x33')][_0x3ecb('0x35')]?_0x3b9c57['attributes']:_0x20f625[_0x3ecb('0x2e')];_0x3b9c57[_0x3ecb('0x38')]=qs[_0x3ecb('0x39')](_0x5248ac[_0x3ecb('0x32')][_0x3ecb('0x39')]);_0x3b9c57[_0x3ecb('0x3c')]=qs[_0x3ecb('0x30')](_[_0x3ecb('0x3a')](_0x5248ac[_0x3ecb('0x32')],_0x20f625[_0x3ecb('0x30')]));if(_0x5248ac[_0x3ecb('0x32')]['filter']){_0x3b9c57[_0x3ecb('0x3c')]=_[_0x3ecb('0x3d')](_0x3b9c57[_0x3ecb('0x3c')],{'$or':_[_0x3ecb('0x29')](_0x3b9c57[_0x3ecb('0x33')],function(_0x4acfde){var _0xc81543={};_0xc81543[_0x4acfde]={'$like':'%'+_0x5248ac[_0x3ecb('0x32')]['filter']+'%'};return _0xc81543;})});}_0x3b9c57=_[_0x3ecb('0x3d')]({},_0x3b9c57,_0x5248ac['options']);return _0x3b6a78[_0x3ecb('0x4f')](_0x3b9c57);}})['then'](function(_0x50db5f){if(_0x50db5f){_0x2273f0=_0x50db5f[_0x3ecb('0x35')];if(!_0x5248ac[_0x3ecb('0x32')][_0x3ecb('0x4c')](_0x3ecb('0x36'))){_0x3b9c57[_0x3ecb('0x37')]=qs['limit'](_0x5248ac[_0x3ecb('0x32')][_0x3ecb('0x37')]);_0x3b9c57[_0x3ecb('0x1b')]=qs[_0x3ecb('0x1b')](_0x5248ac['query'][_0x3ecb('0x1b')]);}return _0x3b6a78[_0x3ecb('0x4f')](_0x3b9c57);}})['then'](function(_0x4e3db3){if(_0x4e3db3){return _0x4e3db3?{'count':_0x2273f0,'rows':_0x4e3db3}:null;}})[_0x3ecb('0x23')](respondWithResult(_0x270737,null))[_0x3ecb('0x44')](handleError(_0x270737,null));};
\ No newline at end of file
index 166c7c8..76e2cfc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b84=['moment','path','rimraf','../../config/environment','Dynamics365Configuration','lodash','util'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x4b84,0x1cc));var _0x44b8=function(_0x2e249d,_0x41b7e7){_0x2e249d=_0x2e249d-0x0;var _0x1faa37=_0x4b84[_0x2e249d];return _0x1faa37;};'use strict';var _=require(_0x44b8('0x0'));var util=require(_0x44b8('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x44b8('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x44b8('0x3'));var rimraf=require(_0x44b8('0x4'));var config=require(_0x44b8('0x5'));var attributes=require('./intDynamics365Configuration.attributes');module['exports']=function(_0x55f25d,_0x996a8b){return _0x55f25d['define'](_0x44b8('0x6'),attributes,{'tableName':'int_dynamics365_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbec5=['request-promise','path','../../config/environment','./intDynamics365Configuration.attributes','exports','define','Dynamics365Configuration','int_dynamics365_configurations','lodash','util','api','moment','bluebird'];(function(_0x467e23,_0x5e319d){var _0x27080a=function(_0x16f2dd){while(--_0x16f2dd){_0x467e23['push'](_0x467e23['shift']());}};_0x27080a(++_0x5e319d);}(_0xbec5,0xe5));var _0x5bec=function(_0x35e75a,_0x5ed225){_0x35e75a=_0x35e75a-0x0;var _0xb23c7f=_0xbec5[_0x35e75a];return _0xb23c7f;};'use strict';var _=require(_0x5bec('0x0'));var util=require(_0x5bec('0x1'));var logger=require('../../config/logger')(_0x5bec('0x2'));var moment=require(_0x5bec('0x3'));var BPromise=require(_0x5bec('0x4'));var rp=require(_0x5bec('0x5'));var fs=require('fs');var path=require(_0x5bec('0x6'));var rimraf=require('rimraf');var config=require(_0x5bec('0x7'));var attributes=require(_0x5bec('0x8'));module[_0x5bec('0x9')]=function(_0x4aaac6,_0x3ed67a){return _0x4aaac6[_0x5bec('0xa')](_0x5bec('0xb'),attributes,{'tableName':_0x5bec('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index dca98c9..5d8c4d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb669=['bluebird','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','Dynamics365Configuration,\x20%s,\x20%s','debug','Dynamics365Configuration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','lodash','util','moment'];(function(_0x5519c4,_0x270f91){var _0x2c1c3=function(_0x28178c){while(--_0x28178c){_0x5519c4['push'](_0x5519c4['shift']());}};_0x2c1c3(++_0x270f91);}(_0xb669,0x15d));var _0x9b66=function(_0x4a0165,_0x534c79){_0x4a0165=_0x4a0165-0x0;var _0x1c597c=_0xb669[_0x4a0165];return _0x1c597c;};'use strict';var _=require(_0x9b66('0x0'));var util=require(_0x9b66('0x1'));var moment=require(_0x9b66('0x2'));var BPromise=require(_0x9b66('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9b66('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x9b66('0x5'))(_0x9b66('0x6'));var config=require(_0x9b66('0x7'));var jayson=require(_0x9b66('0x8'));var client=jayson['client'][_0x9b66('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1843da,_0x165141,_0x8c789a){return new BPromise(function(_0x332305,_0x465269){return client[_0x9b66('0xa')](_0x1843da,_0x8c789a)[_0x9b66('0xb')](function(_0x32ca24){logger[_0x9b66('0xc')](_0x9b66('0xd'),_0x165141,'request\x20sent');logger[_0x9b66('0xe')](_0x9b66('0xf'),_0x165141,_0x9b66('0x10'),JSON[_0x9b66('0x11')](_0x32ca24));if(_0x32ca24['error']){if(_0x32ca24[_0x9b66('0x12')][_0x9b66('0x13')]===0x1f4){logger['error'](_0x9b66('0xd'),_0x165141,_0x32ca24[_0x9b66('0x12')]['message']);return _0x465269(_0x32ca24['error'][_0x9b66('0x14')]);}logger[_0x9b66('0x12')](_0x9b66('0xd'),_0x165141,_0x32ca24['error'][_0x9b66('0x14')]);return _0x332305(_0x32ca24['error']['message']);}else{logger[_0x9b66('0xc')](_0x9b66('0xd'),_0x165141,_0x9b66('0x10'));_0x332305(_0x32ca24['result'][_0x9b66('0x14')]);}})[_0x9b66('0x15')](function(_0x3971c9){logger['error']('Dynamics365Configuration,\x20%s,\x20%s',_0x165141,_0x3971c9);_0x465269(_0x3971c9);});});}
\ No newline at end of file
+var _0x1be4=['debug','Dynamics365Configuration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','Dynamics365Configuration,\x20%s,\x20%s','message','result','catch','lodash','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','info'];(function(_0x40220a,_0x22feb1){var _0x3903cc=function(_0x33a296){while(--_0x33a296){_0x40220a['push'](_0x40220a['shift']());}};_0x3903cc(++_0x22feb1);}(_0x1be4,0x6d));var _0x41be=function(_0x395af7,_0x32901c){_0x395af7=_0x395af7-0x0;var _0x3d15cb=_0x1be4[_0x395af7];return _0x3d15cb;};'use strict';var _=require(_0x41be('0x0'));var util=require(_0x41be('0x1'));var moment=require('moment');var BPromise=require(_0x41be('0x2'));var rs=require(_0x41be('0x3'));var fs=require('fs');var Redis=require(_0x41be('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x41be('0x5'));var logger=require(_0x41be('0x6'))(_0x41be('0x7'));var config=require('../../config/environment');var jayson=require(_0x41be('0x8'));var client=jayson[_0x41be('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4456b0,_0xfe0c7a,_0x411282){return new BPromise(function(_0x3eed03,_0x4a1ff3){return client['request'](_0x4456b0,_0x411282)['then'](function(_0x12436d){logger[_0x41be('0xa')]('Dynamics365Configuration,\x20%s,\x20%s',_0xfe0c7a,'request\x20sent');logger[_0x41be('0xb')](_0x41be('0xc'),_0xfe0c7a,_0x41be('0xd'),JSON[_0x41be('0xe')](_0x12436d));if(_0x12436d[_0x41be('0xf')]){if(_0x12436d[_0x41be('0xf')]['code']===0x1f4){logger[_0x41be('0xf')](_0x41be('0x10'),_0xfe0c7a,_0x12436d[_0x41be('0xf')][_0x41be('0x11')]);return _0x4a1ff3(_0x12436d[_0x41be('0xf')]['message']);}logger['error'](_0x41be('0x10'),_0xfe0c7a,_0x12436d[_0x41be('0xf')][_0x41be('0x11')]);return _0x3eed03(_0x12436d[_0x41be('0xf')][_0x41be('0x11')]);}else{logger[_0x41be('0xa')]('Dynamics365Configuration,\x20%s,\x20%s',_0xfe0c7a,_0x41be('0xd'));_0x3eed03(_0x12436d[_0x41be('0x12')]['message']);}})[_0x41be('0x13')](function(_0x5e9352){logger[_0x41be('0xf')](_0x41be('0x10'),_0xfe0c7a,_0x5e9352);_0x4a1ff3(_0x5e9352);});});}
\ No newline at end of file
index 7b01a2a..f1d2460 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca62=['path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./intDynamics365Field.controller','isAuthenticated','/:id','show','post','create','delete','exports'];(function(_0x2bb9fa,_0x33f63d){var _0x18a068=function(_0x1b89c3){while(--_0x1b89c3){_0x2bb9fa['push'](_0x2bb9fa['shift']());}};_0x18a068(++_0x33f63d);}(_0xca62,0x1a4));var _0x2ca6=function(_0x2813aa,_0x26cfcb){_0x2813aa=_0x2813aa-0x0;var _0x70e7f4=_0xca62[_0x2813aa];return _0x70e7f4;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x2ca6('0x0'));var timeout=require(_0x2ca6('0x1'));var express=require(_0x2ca6('0x2'));var router=express[_0x2ca6('0x3')]();var fs_extra=require(_0x2ca6('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x2ca6('0x5'));var config=require(_0x2ca6('0x6'));var controller=require(_0x2ca6('0x7'));router['get']('/',auth[_0x2ca6('0x8')](),controller['index']);router['get'](_0x2ca6('0x9'),auth['isAuthenticated'](),controller[_0x2ca6('0xa')]);router[_0x2ca6('0xb')]('/',auth[_0x2ca6('0x8')](),controller[_0x2ca6('0xc')]);router['put'](_0x2ca6('0x9'),auth[_0x2ca6('0x8')](),controller['update']);router[_0x2ca6('0xd')](_0x2ca6('0x9'),auth[_0x2ca6('0x8')](),controller['destroy']);module[_0x2ca6('0xe')]=router;
\ No newline at end of file
+var _0xa422=['/:id','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDynamics365Field.controller','get','index','isAuthenticated','show','post','put'];(function(_0x4d33dd,_0x503491){var _0x226f09=function(_0x882343){while(--_0x882343){_0x4d33dd['push'](_0x4d33dd['shift']());}};_0x226f09(++_0x503491);}(_0xa422,0x1de));var _0x2a42=function(_0x5862d4,_0x23d7a1){_0x5862d4=_0x5862d4-0x0;var _0x368114=_0xa422[_0x5862d4];return _0x368114;};'use strict';var multer=require(_0x2a42('0x0'));var util=require('util');var path=require(_0x2a42('0x1'));var timeout=require(_0x2a42('0x2'));var express=require(_0x2a42('0x3'));var router=express[_0x2a42('0x4')]();var fs_extra=require(_0x2a42('0x5'));var auth=require(_0x2a42('0x6'));var interaction=require(_0x2a42('0x7'));var config=require(_0x2a42('0x8'));var controller=require(_0x2a42('0x9'));router[_0x2a42('0xa')]('/',auth['isAuthenticated'](),controller[_0x2a42('0xb')]);router[_0x2a42('0xa')]('/:id',auth[_0x2a42('0xc')](),controller[_0x2a42('0xd')]);router[_0x2a42('0xe')]('/',auth[_0x2a42('0xc')](),controller['create']);router[_0x2a42('0xf')](_0x2a42('0x10'),auth[_0x2a42('0xc')](),controller['update']);router['delete'](_0x2a42('0x10'),auth[_0x2a42('0xc')](),controller[_0x2a42('0x11')]);module[_0x2a42('0x12')]=router;
\ No newline at end of file
index 5984f02..ef33ac2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f86=['STRING','BOOLEAN','sequelize','ENUM','string','variable','customVariable','keyValue'];(function(_0x2642cb,_0x4b917f){var _0xe6e41=function(_0x281676){while(--_0x281676){_0x2642cb['push'](_0x2642cb['shift']());}};_0xe6e41(++_0x4b917f);}(_0x6f86,0xe2));var _0x66f8=function(_0x146a85,_0x529b52){_0x146a85=_0x146a85-0x0;var _0x1b59bf=_0x6f86[_0x146a85];return _0x1b59bf;};'use strict';var Sequelize=require(_0x66f8('0x0'));module['exports']={'type':{'type':Sequelize[_0x66f8('0x1')](_0x66f8('0x2'),_0x66f8('0x3'),_0x66f8('0x4'),_0x66f8('0x5'),'picklist'),'defaultValue':_0x66f8('0x2')},'content':{'type':Sequelize[_0x66f8('0x6')]},'key':{'type':Sequelize[_0x66f8('0x6')]},'keyType':{'type':Sequelize[_0x66f8('0x1')](_0x66f8('0x2'),_0x66f8('0x3'),_0x66f8('0x4'))},'keyContent':{'type':Sequelize[_0x66f8('0x6')]},'idField':{'type':Sequelize[_0x66f8('0x6')]},'nameField':{'type':Sequelize[_0x66f8('0x6')]},'customField':{'type':Sequelize[_0x66f8('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x66f8('0x6')]}};
\ No newline at end of file
+var _0xf3a7=['customVariable','keyValue','STRING','ENUM','BOOLEAN','sequelize','exports','string','variable'];(function(_0x3f78a3,_0x1a451e){var _0x85f6c8=function(_0x33a5d0){while(--_0x33a5d0){_0x3f78a3['push'](_0x3f78a3['shift']());}};_0x85f6c8(++_0x1a451e);}(_0xf3a7,0x8c));var _0x7f3a=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xf3a7[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x7f3a('0x0'));module[_0x7f3a('0x1')]={'type':{'type':Sequelize['ENUM'](_0x7f3a('0x2'),_0x7f3a('0x3'),_0x7f3a('0x4'),_0x7f3a('0x5'),'picklist'),'defaultValue':_0x7f3a('0x2')},'content':{'type':Sequelize[_0x7f3a('0x6')]},'key':{'type':Sequelize[_0x7f3a('0x6')]},'keyType':{'type':Sequelize[_0x7f3a('0x7')](_0x7f3a('0x2'),'variable','customVariable')},'keyContent':{'type':Sequelize[_0x7f3a('0x6')]},'idField':{'type':Sequelize[_0x7f3a('0x6')]},'nameField':{'type':Sequelize[_0x7f3a('0x6')]},'customField':{'type':Sequelize[_0x7f3a('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 2bc43b4..d0d8f6e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ca3=['ejs','fs-extra','squel','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','undefined','limit','count','offset','set','Content-Range','apply','save','update','destroy','then','sendStatus','error','stack','name','send','index','map','Dynamics365Field','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','includeAll','findAll','rows','show','params','include','options','find','catch','create','body','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox'];(function(_0x10985f,_0x8ba2c5){var _0x6fea68=function(_0x1d2a89){while(--_0x1d2a89){_0x10985f['push'](_0x10985f['shift']());}};_0x6fea68(++_0x8ba2c5);}(_0x8ca3,0xdb));var _0x38ca=function(_0x38c632,_0x14e8e6){_0x38c632=_0x38c632-0x0;var _0x12737e=_0x8ca3[_0x38c632];return _0x12737e;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x38ca('0x0'));var zipdir=require(_0x38ca('0x1'));var jsonpatch=require(_0x38ca('0x2'));var rp=require(_0x38ca('0x3'));var moment=require(_0x38ca('0x4'));var BPromise=require(_0x38ca('0x5'));var Mustache=require('mustache');var util=require(_0x38ca('0x6'));var path=require(_0x38ca('0x7'));var sox=require(_0x38ca('0x8'));var csv=require('to-csv');var ejs=require(_0x38ca('0x9'));var fs=require('fs');var fs_extra=require(_0x38ca('0xa'));var _=require('lodash');var squel=require(_0x38ca('0xb'));var crypto=require(_0x38ca('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x38ca('0xd'));var toCsv=require(_0x38ca('0xe'));var querystring=require(_0x38ca('0xf'));var Papa=require(_0x38ca('0x10'));var Redis=require(_0x38ca('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x38ca('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x38ca('0x13'))('api');var utils=require(_0x38ca('0x14'));var config=require(_0x38ca('0x15'));var licenseUtil=require(_0x38ca('0x16'));var db=require(_0x38ca('0x17'))['db'];function respondWithStatusCode(_0x14f364,_0x189e27){_0x189e27=_0x189e27||0xcc;return function(_0x5b86f7){if(_0x5b86f7){return _0x14f364['sendStatus'](_0x189e27);}return _0x14f364[_0x38ca('0x18')](_0x189e27)[_0x38ca('0x19')]();};}function respondWithResult(_0x231123,_0x38120a){_0x38120a=_0x38120a||0xc8;return function(_0xa4e969){if(_0xa4e969){return _0x231123['status'](_0x38120a)['json'](_0xa4e969);}};}function respondWithFilteredResult(_0xdfb35c,_0x31fcdd){return function(_0x4cb119){if(_0x4cb119){var _0x18c1ee=typeof _0x31fcdd['offset']===_0x38ca('0x1a')&&typeof _0x31fcdd[_0x38ca('0x1b')]===_0x38ca('0x1a');var _0x19a51a=_0x4cb119['count'];var _0xa02eaf=_0x18c1ee?0x0:_0x31fcdd['offset'];var _0x428d9e=_0x18c1ee?_0x4cb119[_0x38ca('0x1c')]:_0x31fcdd[_0x38ca('0x1d')]+_0x31fcdd['limit'];var _0x5902ed;if(_0x428d9e>=_0x19a51a){_0x428d9e=_0x19a51a;_0x5902ed=0xc8;}else{_0x5902ed=0xce;}_0xdfb35c[_0x38ca('0x18')](_0x5902ed);return _0xdfb35c[_0x38ca('0x1e')](_0x38ca('0x1f'),_0xa02eaf+'-'+_0x428d9e+'/'+_0x19a51a)['json'](_0x4cb119);}return null;};}function patchUpdates(_0x221856){return function(_0x39942b){try{jsonpatch[_0x38ca('0x20')](_0x39942b,_0x221856,!![]);}catch(_0x12a09e){return BPromise['reject'](_0x12a09e);}return _0x39942b[_0x38ca('0x21')]();};}function saveUpdates(_0x293f8d,_0x5cbc66){return function(_0x412de2){if(_0x412de2){return _0x412de2[_0x38ca('0x22')](_0x293f8d)['then'](function(_0x317e03){return _0x317e03;});}return null;};}function removeEntity(_0x29a14c,_0x2f5fbd){return function(_0x33c6ff){if(_0x33c6ff){return _0x33c6ff[_0x38ca('0x23')]()[_0x38ca('0x24')](function(){_0x29a14c[_0x38ca('0x18')](0xcc)[_0x38ca('0x19')]();});}};}function handleEntityNotFound(_0x1491b8,_0x553df7){return function(_0x426199){if(!_0x426199){_0x1491b8[_0x38ca('0x25')](0x194);}return _0x426199;};}function handleError(_0x2f3ce9,_0x4ed592){_0x4ed592=_0x4ed592||0x1f4;return function(_0x5787e1){logger[_0x38ca('0x26')](_0x5787e1[_0x38ca('0x27')]);if(_0x5787e1[_0x38ca('0x28')]){delete _0x5787e1[_0x38ca('0x28')];}_0x2f3ce9[_0x38ca('0x18')](_0x4ed592)[_0x38ca('0x29')](_0x5787e1);};}exports[_0x38ca('0x2a')]=function(_0x597c3a,_0x10fc8d){var _0x5c435f={},_0x460865={},_0x10f569={'count':0x0,'rows':[]};var _0x5460cc=_[_0x38ca('0x2b')](db[_0x38ca('0x2c')][_0x38ca('0x2d')],function(_0x7b2241){return{'name':_0x7b2241[_0x38ca('0x2e')],'type':_0x7b2241[_0x38ca('0x2f')][_0x38ca('0x30')]};});_0x460865[_0x38ca('0x31')]=_['map'](_0x5460cc,'name');_0x460865[_0x38ca('0x32')]=_[_0x38ca('0x33')](_0x597c3a[_0x38ca('0x32')]);_0x460865[_0x38ca('0x34')]=_[_0x38ca('0x35')](_0x460865[_0x38ca('0x31')],_0x460865['query']);_0x5c435f[_0x38ca('0x36')]=_[_0x38ca('0x35')](_0x460865[_0x38ca('0x31')],qs[_0x38ca('0x37')](_0x597c3a[_0x38ca('0x32')][_0x38ca('0x37')]));_0x5c435f[_0x38ca('0x36')]=_0x5c435f[_0x38ca('0x36')][_0x38ca('0x38')]?_0x5c435f[_0x38ca('0x36')]:_0x460865['model'];if(!_0x597c3a['query'][_0x38ca('0x39')](_0x38ca('0x3a'))){_0x5c435f[_0x38ca('0x1b')]=qs[_0x38ca('0x1b')](_0x597c3a['query']['limit']);_0x5c435f['offset']=qs[_0x38ca('0x1d')](_0x597c3a[_0x38ca('0x32')][_0x38ca('0x1d')]);}_0x5c435f[_0x38ca('0x3b')]=qs[_0x38ca('0x3c')](_0x597c3a[_0x38ca('0x32')]['sort']);_0x5c435f[_0x38ca('0x3d')]=qs[_0x38ca('0x34')](_[_0x38ca('0x3e')](_0x597c3a['query'],_0x460865['filters']),_0x5460cc);if(_0x597c3a[_0x38ca('0x32')][_0x38ca('0x3f')]){_0x5c435f[_0x38ca('0x3d')]=_[_0x38ca('0x40')](_0x5c435f[_0x38ca('0x3d')],{'$or':_['map'](_0x5460cc,function(_0x264117){if(_0x264117['type']!=='VIRTUAL'){var _0x4a8425={};_0x4a8425[_0x264117[_0x38ca('0x28')]]={'$like':'%'+_0x597c3a[_0x38ca('0x32')]['filter']+'%'};return _0x4a8425;}})});}_0x5c435f=_[_0x38ca('0x40')]({},_0x5c435f,_0x597c3a['options']);var _0x31bc7e={'where':_0x5c435f[_0x38ca('0x3d')]};return db['Dynamics365Field'][_0x38ca('0x1c')](_0x31bc7e)[_0x38ca('0x24')](function(_0x48410f){_0x10f569['count']=_0x48410f;if(_0x597c3a[_0x38ca('0x32')][_0x38ca('0x41')]){_0x5c435f['include']=[{'all':!![]}];}return db[_0x38ca('0x2c')][_0x38ca('0x42')](_0x5c435f);})['then'](function(_0x2c7cb0){_0x10f569[_0x38ca('0x43')]=_0x2c7cb0;return _0x10f569;})[_0x38ca('0x24')](respondWithFilteredResult(_0x10fc8d,_0x5c435f))['catch'](handleError(_0x10fc8d,null));};exports[_0x38ca('0x44')]=function(_0x1fc8aa,_0x1cd12d){var _0x2d7d4c={'raw':!![],'where':{'id':_0x1fc8aa[_0x38ca('0x45')]['id']}},_0x548780={};_0x548780['model']=_['keys'](db[_0x38ca('0x2c')]['rawAttributes']);_0x548780[_0x38ca('0x32')]=_[_0x38ca('0x33')](_0x1fc8aa['query']);_0x548780[_0x38ca('0x34')]=_[_0x38ca('0x35')](_0x548780[_0x38ca('0x31')],_0x548780[_0x38ca('0x32')]);_0x2d7d4c[_0x38ca('0x36')]=_['intersection'](_0x548780['model'],qs[_0x38ca('0x37')](_0x1fc8aa['query'][_0x38ca('0x37')]));_0x2d7d4c[_0x38ca('0x36')]=_0x2d7d4c[_0x38ca('0x36')]['length']?_0x2d7d4c['attributes']:_0x548780[_0x38ca('0x31')];if(_0x1fc8aa['query'][_0x38ca('0x41')]){_0x2d7d4c[_0x38ca('0x46')]=[{'all':!![]}];}_0x2d7d4c=_[_0x38ca('0x40')]({},_0x2d7d4c,_0x1fc8aa[_0x38ca('0x47')]);return db['Dynamics365Field'][_0x38ca('0x48')](_0x2d7d4c)[_0x38ca('0x24')](handleEntityNotFound(_0x1cd12d,null))['then'](respondWithResult(_0x1cd12d,null))[_0x38ca('0x49')](handleError(_0x1cd12d,null));};exports[_0x38ca('0x4a')]=function(_0x1d7cd6,_0x558229){return db[_0x38ca('0x2c')]['create'](_0x1d7cd6['body'],{})[_0x38ca('0x24')](respondWithResult(_0x558229,0xc9))['catch'](handleError(_0x558229,null));};exports[_0x38ca('0x22')]=function(_0x4995ad,_0x15c1d7){if(_0x4995ad[_0x38ca('0x4b')]['id']){delete _0x4995ad[_0x38ca('0x4b')]['id'];}return db[_0x38ca('0x2c')][_0x38ca('0x48')]({'where':{'id':_0x4995ad[_0x38ca('0x45')]['id']}})['then'](handleEntityNotFound(_0x15c1d7,null))[_0x38ca('0x24')](saveUpdates(_0x4995ad[_0x38ca('0x4b')],null))[_0x38ca('0x24')](respondWithResult(_0x15c1d7,null))[_0x38ca('0x49')](handleError(_0x15c1d7,null));};exports[_0x38ca('0x23')]=function(_0xfb71f4,_0x5681f0){return db[_0x38ca('0x2c')][_0x38ca('0x48')]({'where':{'id':_0xfb71f4['params']['id']}})['then'](handleEntityNotFound(_0x5681f0,null))[_0x38ca('0x24')](removeEntity(_0x5681f0,null))[_0x38ca('0x49')](handleError(_0x5681f0,null));};
\ No newline at end of file
+var _0x5bdd=['destroy','error','stack','name','send','index','map','Dynamics365Field','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','pick','filter','merge','where','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','ejs','fs-extra','lodash','squel','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','update','then'];(function(_0x2f9467,_0x40576f){var _0x39894c=function(_0x13e344){while(--_0x13e344){_0x2f9467['push'](_0x2f9467['shift']());}};_0x39894c(++_0x40576f);}(_0x5bdd,0x157));var _0xd5bd=function(_0x5616ad,_0x2eaeef){_0x5616ad=_0x5616ad-0x0;var _0x44d699=_0x5bdd[_0x5616ad];return _0x44d699;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xd5bd('0x0'));var jsonpatch=require(_0xd5bd('0x1'));var rp=require(_0xd5bd('0x2'));var moment=require(_0xd5bd('0x3'));var BPromise=require(_0xd5bd('0x4'));var Mustache=require('mustache');var util=require(_0xd5bd('0x5'));var path=require(_0xd5bd('0x6'));var sox=require(_0xd5bd('0x7'));var csv=require('to-csv');var ejs=require(_0xd5bd('0x8'));var fs=require('fs');var fs_extra=require(_0xd5bd('0x9'));var _=require(_0xd5bd('0xa'));var squel=require(_0xd5bd('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xd5bd('0xc'));var toCsv=require('to-csv');var querystring=require(_0xd5bd('0xd'));var Papa=require(_0xd5bd('0xe'));var Redis=require(_0xd5bd('0xf'));var authService=require(_0xd5bd('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0xd5bd('0x11'));var hardwareService=require(_0xd5bd('0x12'));var logger=require(_0xd5bd('0x13'))(_0xd5bd('0x14'));var utils=require('../../config/utils');var config=require(_0xd5bd('0x15'));var licenseUtil=require(_0xd5bd('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x117676,_0xcdd516){_0xcdd516=_0xcdd516||0xcc;return function(_0x44dee2){if(_0x44dee2){return _0x117676[_0xd5bd('0x17')](_0xcdd516);}return _0x117676[_0xd5bd('0x18')](_0xcdd516)[_0xd5bd('0x19')]();};}function respondWithResult(_0x50d168,_0x23635e){_0x23635e=_0x23635e||0xc8;return function(_0x3694d0){if(_0x3694d0){return _0x50d168[_0xd5bd('0x18')](_0x23635e)[_0xd5bd('0x1a')](_0x3694d0);}};}function respondWithFilteredResult(_0xfb869e,_0x562f38){return function(_0x41d8de){if(_0x41d8de){var _0x52795d=typeof _0x562f38[_0xd5bd('0x1b')]==='undefined'&&typeof _0x562f38[_0xd5bd('0x1c')]===_0xd5bd('0x1d');var _0x1cd454=_0x41d8de['count'];var _0x4ca0eb=_0x52795d?0x0:_0x562f38['offset'];var _0x2739f6=_0x52795d?_0x41d8de[_0xd5bd('0x1e')]:_0x562f38['offset']+_0x562f38[_0xd5bd('0x1c')];var _0x3c5175;if(_0x2739f6>=_0x1cd454){_0x2739f6=_0x1cd454;_0x3c5175=0xc8;}else{_0x3c5175=0xce;}_0xfb869e[_0xd5bd('0x18')](_0x3c5175);return _0xfb869e[_0xd5bd('0x1f')](_0xd5bd('0x20'),_0x4ca0eb+'-'+_0x2739f6+'/'+_0x1cd454)['json'](_0x41d8de);}return null;};}function patchUpdates(_0x333cff){return function(_0x2ed3ed){try{jsonpatch[_0xd5bd('0x21')](_0x2ed3ed,_0x333cff,!![]);}catch(_0x325bf1){return BPromise[_0xd5bd('0x22')](_0x325bf1);}return _0x2ed3ed['save']();};}function saveUpdates(_0x10b91c,_0x56b7b3){return function(_0x52c2a2){if(_0x52c2a2){return _0x52c2a2[_0xd5bd('0x23')](_0x10b91c)[_0xd5bd('0x24')](function(_0x295807){return _0x295807;});}return null;};}function removeEntity(_0x47cb25,_0x46c8f2){return function(_0x57d680){if(_0x57d680){return _0x57d680[_0xd5bd('0x25')]()[_0xd5bd('0x24')](function(){_0x47cb25[_0xd5bd('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x532aab,_0x202e33){return function(_0x4c39d0){if(!_0x4c39d0){_0x532aab[_0xd5bd('0x17')](0x194);}return _0x4c39d0;};}function handleError(_0x25e873,_0x382fc1){_0x382fc1=_0x382fc1||0x1f4;return function(_0x7cd25d){logger[_0xd5bd('0x26')](_0x7cd25d[_0xd5bd('0x27')]);if(_0x7cd25d[_0xd5bd('0x28')]){delete _0x7cd25d['name'];}_0x25e873[_0xd5bd('0x18')](_0x382fc1)[_0xd5bd('0x29')](_0x7cd25d);};}exports[_0xd5bd('0x2a')]=function(_0x2e5d0f,_0x3b9772){var _0x1a2579={},_0x5736fe={},_0x56b984={'count':0x0,'rows':[]};var _0x1a2481=_[_0xd5bd('0x2b')](db[_0xd5bd('0x2c')][_0xd5bd('0x2d')],function(_0x49fbcc){return{'name':_0x49fbcc[_0xd5bd('0x2e')],'type':_0x49fbcc[_0xd5bd('0x2f')][_0xd5bd('0x30')]};});_0x5736fe[_0xd5bd('0x31')]=_[_0xd5bd('0x2b')](_0x1a2481,_0xd5bd('0x28'));_0x5736fe[_0xd5bd('0x32')]=_[_0xd5bd('0x33')](_0x2e5d0f[_0xd5bd('0x32')]);_0x5736fe[_0xd5bd('0x34')]=_[_0xd5bd('0x35')](_0x5736fe[_0xd5bd('0x31')],_0x5736fe[_0xd5bd('0x32')]);_0x1a2579[_0xd5bd('0x36')]=_[_0xd5bd('0x35')](_0x5736fe[_0xd5bd('0x31')],qs['fields'](_0x2e5d0f[_0xd5bd('0x32')][_0xd5bd('0x37')]));_0x1a2579[_0xd5bd('0x36')]=_0x1a2579[_0xd5bd('0x36')][_0xd5bd('0x38')]?_0x1a2579['attributes']:_0x5736fe[_0xd5bd('0x31')];if(!_0x2e5d0f[_0xd5bd('0x32')][_0xd5bd('0x39')]('nolimit')){_0x1a2579['limit']=qs[_0xd5bd('0x1c')](_0x2e5d0f[_0xd5bd('0x32')]['limit']);_0x1a2579[_0xd5bd('0x1b')]=qs[_0xd5bd('0x1b')](_0x2e5d0f[_0xd5bd('0x32')]['offset']);}_0x1a2579[_0xd5bd('0x3a')]=qs['sort'](_0x2e5d0f['query'][_0xd5bd('0x3b')]);_0x1a2579['where']=qs[_0xd5bd('0x34')](_[_0xd5bd('0x3c')](_0x2e5d0f[_0xd5bd('0x32')],_0x5736fe['filters']),_0x1a2481);if(_0x2e5d0f[_0xd5bd('0x32')][_0xd5bd('0x3d')]){_0x1a2579['where']=_[_0xd5bd('0x3e')](_0x1a2579[_0xd5bd('0x3f')],{'$or':_[_0xd5bd('0x2b')](_0x1a2481,function(_0x1ac27b){if(_0x1ac27b[_0xd5bd('0x2f')]!==_0xd5bd('0x40')){var _0xd4f2ee={};_0xd4f2ee[_0x1ac27b[_0xd5bd('0x28')]]={'$like':'%'+_0x2e5d0f[_0xd5bd('0x32')][_0xd5bd('0x3d')]+'%'};return _0xd4f2ee;}})});}_0x1a2579=_[_0xd5bd('0x3e')]({},_0x1a2579,_0x2e5d0f[_0xd5bd('0x41')]);var _0x143222={'where':_0x1a2579['where']};return db[_0xd5bd('0x2c')][_0xd5bd('0x1e')](_0x143222)['then'](function(_0x5070ac){_0x56b984[_0xd5bd('0x1e')]=_0x5070ac;if(_0x2e5d0f[_0xd5bd('0x32')][_0xd5bd('0x42')]){_0x1a2579[_0xd5bd('0x43')]=[{'all':!![]}];}return db[_0xd5bd('0x2c')][_0xd5bd('0x44')](_0x1a2579);})[_0xd5bd('0x24')](function(_0x373f41){_0x56b984[_0xd5bd('0x45')]=_0x373f41;return _0x56b984;})[_0xd5bd('0x24')](respondWithFilteredResult(_0x3b9772,_0x1a2579))[_0xd5bd('0x46')](handleError(_0x3b9772,null));};exports[_0xd5bd('0x47')]=function(_0x306909,_0x4cdaf6){var _0x34117c={'raw':!![],'where':{'id':_0x306909[_0xd5bd('0x48')]['id']}},_0x5af8e7={};_0x5af8e7[_0xd5bd('0x31')]=_['keys'](db[_0xd5bd('0x2c')][_0xd5bd('0x2d')]);_0x5af8e7[_0xd5bd('0x32')]=_[_0xd5bd('0x33')](_0x306909[_0xd5bd('0x32')]);_0x5af8e7[_0xd5bd('0x34')]=_[_0xd5bd('0x35')](_0x5af8e7[_0xd5bd('0x31')],_0x5af8e7[_0xd5bd('0x32')]);_0x34117c[_0xd5bd('0x36')]=_[_0xd5bd('0x35')](_0x5af8e7[_0xd5bd('0x31')],qs[_0xd5bd('0x37')](_0x306909['query'][_0xd5bd('0x37')]));_0x34117c[_0xd5bd('0x36')]=_0x34117c[_0xd5bd('0x36')][_0xd5bd('0x38')]?_0x34117c[_0xd5bd('0x36')]:_0x5af8e7['model'];if(_0x306909['query'][_0xd5bd('0x42')]){_0x34117c[_0xd5bd('0x43')]=[{'all':!![]}];}_0x34117c=_[_0xd5bd('0x3e')]({},_0x34117c,_0x306909[_0xd5bd('0x41')]);return db[_0xd5bd('0x2c')][_0xd5bd('0x49')](_0x34117c)['then'](handleEntityNotFound(_0x4cdaf6,null))[_0xd5bd('0x24')](respondWithResult(_0x4cdaf6,null))[_0xd5bd('0x46')](handleError(_0x4cdaf6,null));};exports[_0xd5bd('0x4a')]=function(_0x15b3d6,_0x202677){return db['Dynamics365Field'][_0xd5bd('0x4a')](_0x15b3d6['body'],{})[_0xd5bd('0x24')](respondWithResult(_0x202677,0xc9))[_0xd5bd('0x46')](handleError(_0x202677,null));};exports[_0xd5bd('0x23')]=function(_0x400995,_0x1df7f2){if(_0x400995[_0xd5bd('0x4b')]['id']){delete _0x400995['body']['id'];}return db[_0xd5bd('0x2c')][_0xd5bd('0x49')]({'where':{'id':_0x400995[_0xd5bd('0x48')]['id']}})['then'](handleEntityNotFound(_0x1df7f2,null))[_0xd5bd('0x24')](saveUpdates(_0x400995[_0xd5bd('0x4b')],null))['then'](respondWithResult(_0x1df7f2,null))['catch'](handleError(_0x1df7f2,null));};exports[_0xd5bd('0x25')]=function(_0x5b20c0,_0x236697){return db[_0xd5bd('0x2c')][_0xd5bd('0x49')]({'where':{'id':_0x5b20c0[_0xd5bd('0x48')]['id']}})['then'](handleEntityNotFound(_0x236697,null))[_0xd5bd('0x24')](removeEntity(_0x236697,null))[_0xd5bd('0x46')](handleError(_0x236697,null));};
\ No newline at end of file
index 777988b..f36977c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb100=['../../config/environment','exports','define','int_dynamics365_fields','dynamics365_unique_index','idField','lodash','../../config/logger','moment','bluebird','path','rimraf'];(function(_0x5d00e9,_0x496174){var _0x399693=function(_0x241538){while(--_0x241538){_0x5d00e9['push'](_0x5d00e9['shift']());}};_0x399693(++_0x496174);}(_0xb100,0xde));var _0x0b10=function(_0x87667f,_0x2fa934){_0x87667f=_0x87667f-0x0;var _0x1c162b=_0xb100[_0x87667f];return _0x1c162b;};'use strict';var _=require(_0x0b10('0x0'));var util=require('util');var logger=require(_0x0b10('0x1'))('api');var moment=require(_0x0b10('0x2'));var BPromise=require(_0x0b10('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0b10('0x4'));var rimraf=require(_0x0b10('0x5'));var config=require(_0x0b10('0x6'));var attributes=require('./intDynamics365Field.attributes');module[_0x0b10('0x7')]=function(_0x4b05c0,_0x5394e2){return _0x4b05c0[_0x0b10('0x8')]('Dynamics365Field',attributes,{'tableName':_0x0b10('0x9'),'paranoid':![],'indexes':[{'name':_0x0b10('0xa'),'fields':[_0x0b10('0xb'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xad5c=['bluebird','request-promise','path','rimraf','../../config/environment','./intDynamics365Field.attributes','exports','Dynamics365Field','dynamics365_unique_index','FieldId','lodash','util','../../config/logger','api','moment'];(function(_0x4ca764,_0x572b2a){var _0x39292d=function(_0x377500){while(--_0x377500){_0x4ca764['push'](_0x4ca764['shift']());}};_0x39292d(++_0x572b2a);}(_0xad5c,0x154));var _0xcad5=function(_0x248270,_0x4bcec2){_0x248270=_0x248270-0x0;var _0x4fdcf7=_0xad5c[_0x248270];return _0x4fdcf7;};'use strict';var _=require(_0xcad5('0x0'));var util=require(_0xcad5('0x1'));var logger=require(_0xcad5('0x2'))(_0xcad5('0x3'));var moment=require(_0xcad5('0x4'));var BPromise=require(_0xcad5('0x5'));var rp=require(_0xcad5('0x6'));var fs=require('fs');var path=require(_0xcad5('0x7'));var rimraf=require(_0xcad5('0x8'));var config=require(_0xcad5('0x9'));var attributes=require(_0xcad5('0xa'));module[_0xcad5('0xb')]=function(_0x344394,_0x1cb9fe){return _0x344394['define'](_0xcad5('0xc'),attributes,{'tableName':'int_dynamics365_fields','paranoid':![],'indexes':[{'name':_0xcad5('0xd'),'fields':['idField',_0xcad5('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 416dc30..0e358fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x77b1=['info','Dynamics365Field,\x20%s,\x20%s','request\x20sent','debug','Dynamics365Field,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','jayson/promise','client','http','request','then'];(function(_0x47c110,_0x5f1677){var _0x786b10=function(_0x3cc5cf){while(--_0x3cc5cf){_0x47c110['push'](_0x47c110['shift']());}};_0x786b10(++_0x5f1677);}(_0x77b1,0x16a));var _0x177b=function(_0x534163,_0x4d8b9d){_0x534163=_0x534163-0x0;var _0x223f51=_0x77b1[_0x534163];return _0x223f51;};'use strict';var _=require('lodash');var util=require(_0x177b('0x0'));var moment=require(_0x177b('0x1'));var BPromise=require(_0x177b('0x2'));var rs=require(_0x177b('0x3'));var fs=require('fs');var Redis=require(_0x177b('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x177b('0x5'));var logger=require(_0x177b('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0x177b('0x7'));var client=jayson[_0x177b('0x8')][_0x177b('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x6cc81e,_0x4b5e3d,_0x3a5267){return new BPromise(function(_0x1df1d5,_0x2c821b){return client[_0x177b('0xa')](_0x6cc81e,_0x3a5267)[_0x177b('0xb')](function(_0x3d5416){logger[_0x177b('0xc')](_0x177b('0xd'),_0x4b5e3d,_0x177b('0xe'));logger[_0x177b('0xf')](_0x177b('0x10'),_0x4b5e3d,_0x177b('0xe'),JSON['stringify'](_0x3d5416));if(_0x3d5416[_0x177b('0x11')]){if(_0x3d5416[_0x177b('0x11')][_0x177b('0x12')]===0x1f4){logger[_0x177b('0x11')](_0x177b('0xd'),_0x4b5e3d,_0x3d5416[_0x177b('0x11')][_0x177b('0x13')]);return _0x2c821b(_0x3d5416[_0x177b('0x11')][_0x177b('0x13')]);}logger['error']('Dynamics365Field,\x20%s,\x20%s',_0x4b5e3d,_0x3d5416[_0x177b('0x11')][_0x177b('0x13')]);return _0x1df1d5(_0x3d5416[_0x177b('0x11')][_0x177b('0x13')]);}else{logger[_0x177b('0xc')](_0x177b('0xd'),_0x4b5e3d,_0x177b('0xe'));_0x1df1d5(_0x3d5416[_0x177b('0x14')]['message']);}})[_0x177b('0x15')](function(_0x96f894){logger[_0x177b('0x11')](_0x177b('0xd'),_0x4b5e3d,_0x96f894);_0x2c821b(_0x96f894);});});}
\ No newline at end of file
+var _0x6d17=['catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','Dynamics365Field,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x6d17,0x146));var _0x76d1=function(_0x5c2a2b,_0x22c94e){_0x5c2a2b=_0x5c2a2b-0x0;var _0x19921f=_0x6d17[_0x5c2a2b];return _0x19921f;};'use strict';var _=require(_0x76d1('0x0'));var util=require(_0x76d1('0x1'));var moment=require(_0x76d1('0x2'));var BPromise=require(_0x76d1('0x3'));var rs=require(_0x76d1('0x4'));var fs=require('fs');var Redis=require(_0x76d1('0x5'));var db=require(_0x76d1('0x6'))['db'];var utils=require(_0x76d1('0x7'));var logger=require(_0x76d1('0x8'))(_0x76d1('0x9'));var config=require(_0x76d1('0xa'));var jayson=require(_0x76d1('0xb'));var client=jayson[_0x76d1('0xc')][_0x76d1('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x53ea3e,_0xe4f91c,_0x3493fa){return new BPromise(function(_0x1763cd,_0x2910a8){return client['request'](_0x53ea3e,_0x3493fa)[_0x76d1('0xe')](function(_0x306bb3){logger[_0x76d1('0xf')](_0x76d1('0x10'),_0xe4f91c,_0x76d1('0x11'));logger[_0x76d1('0x12')]('Dynamics365Field,\x20%s,\x20%s,\x20%s',_0xe4f91c,_0x76d1('0x11'),JSON[_0x76d1('0x13')](_0x306bb3));if(_0x306bb3[_0x76d1('0x14')]){if(_0x306bb3['error'][_0x76d1('0x15')]===0x1f4){logger[_0x76d1('0x14')](_0x76d1('0x10'),_0xe4f91c,_0x306bb3[_0x76d1('0x14')][_0x76d1('0x16')]);return _0x2910a8(_0x306bb3[_0x76d1('0x14')]['message']);}logger[_0x76d1('0x14')](_0x76d1('0x10'),_0xe4f91c,_0x306bb3[_0x76d1('0x14')][_0x76d1('0x16')]);return _0x1763cd(_0x306bb3[_0x76d1('0x14')][_0x76d1('0x16')]);}else{logger[_0x76d1('0xf')](_0x76d1('0x10'),_0xe4f91c,_0x76d1('0x11'));_0x1763cd(_0x306bb3[_0x76d1('0x17')][_0x76d1('0x16')]);}})[_0x76d1('0x18')](function(_0x1d2a7c){logger[_0x76d1('0x14')]('Dynamics365Field,\x20%s,\x20%s',_0xe4f91c,_0x1d2a7c);_0x2910a8(_0x1d2a7c);});});}
\ No newline at end of file
index 557ca41..73a7399 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x76d7=['destroy','exports','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshdeskAccount.controller','get','isAuthenticated','/:id','show','getConfigurations','/:id/fields','getFields','create','post','addConfiguration','delete'];(function(_0x37851f,_0x42a596){var _0x11d455=function(_0x1f68f1){while(--_0x1f68f1){_0x37851f['push'](_0x37851f['shift']());}};_0x11d455(++_0x42a596);}(_0x76d7,0x128));var _0x776d=function(_0x390791,_0x56a05f){_0x390791=_0x390791-0x0;var _0x543bc6=_0x76d7[_0x390791];return _0x543bc6;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x776d('0x0'));var timeout=require(_0x776d('0x1'));var express=require('express');var router=express[_0x776d('0x2')]();var fs_extra=require(_0x776d('0x3'));var auth=require(_0x776d('0x4'));var interaction=require(_0x776d('0x5'));var config=require(_0x776d('0x6'));var controller=require(_0x776d('0x7'));router[_0x776d('0x8')]('/',auth[_0x776d('0x9')](),controller['index']);router[_0x776d('0x8')](_0x776d('0xa'),auth['isAuthenticated'](),controller[_0x776d('0xb')]);router['get']('/:id/configurations',auth[_0x776d('0x9')](),controller[_0x776d('0xc')]);router[_0x776d('0x8')](_0x776d('0xd'),auth[_0x776d('0x9')](),controller[_0x776d('0xe')]);router['post']('/',auth[_0x776d('0x9')](),controller[_0x776d('0xf')]);router[_0x776d('0x10')]('/:id/configurations',auth[_0x776d('0x9')](),controller[_0x776d('0x11')]);router['put'](_0x776d('0xa'),auth[_0x776d('0x9')](),controller['update']);router[_0x776d('0x12')](_0x776d('0xa'),auth[_0x776d('0x9')](),controller[_0x776d('0x13')]);module[_0x776d('0x14')]=router;
\ No newline at end of file
+var _0xf725=['../../components/auth/service','../../config/environment','./intFreshdeskAccount.controller','get','index','isAuthenticated','show','post','create','addConfiguration','put','/:id','delete','destroy','exports','util','path','connect-timeout','express','fs-extra'];(function(_0x413d74,_0x5bab1b){var _0x177f90=function(_0x15e9de){while(--_0x15e9de){_0x413d74['push'](_0x413d74['shift']());}};_0x177f90(++_0x5bab1b);}(_0xf725,0x13b));var _0x5f72=function(_0x347acd,_0x41dc47){_0x347acd=_0x347acd-0x0;var _0x3aea95=_0xf725[_0x347acd];return _0x3aea95;};'use strict';var multer=require('multer');var util=require(_0x5f72('0x0'));var path=require(_0x5f72('0x1'));var timeout=require(_0x5f72('0x2'));var express=require(_0x5f72('0x3'));var router=express['Router']();var fs_extra=require(_0x5f72('0x4'));var auth=require(_0x5f72('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x5f72('0x6'));var controller=require(_0x5f72('0x7'));router[_0x5f72('0x8')]('/',auth['isAuthenticated'](),controller[_0x5f72('0x9')]);router['get']('/:id',auth[_0x5f72('0xa')](),controller[_0x5f72('0xb')]);router[_0x5f72('0x8')]('/:id/configurations',auth[_0x5f72('0xa')](),controller['getConfigurations']);router[_0x5f72('0x8')]('/:id/fields',auth[_0x5f72('0xa')](),controller['getFields']);router[_0x5f72('0xc')]('/',auth[_0x5f72('0xa')](),controller[_0x5f72('0xd')]);router['post']('/:id/configurations',auth[_0x5f72('0xa')](),controller[_0x5f72('0xe')]);router[_0x5f72('0xf')](_0x5f72('0x10'),auth[_0x5f72('0xa')](),controller['update']);router[_0x5f72('0x11')]('/:id',auth[_0x5f72('0xa')](),controller[_0x5f72('0x12')]);module[_0x5f72('0x13')]=router;
\ No newline at end of file
index 5c279e4..8cb44ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x77e6=['STRING','username','sequelize','exports'];(function(_0x1147ab,_0x10e72b){var _0x55cb5a=function(_0x364bd6){while(--_0x364bd6){_0x1147ab['push'](_0x1147ab['shift']());}};_0x55cb5a(++_0x10e72b);}(_0x77e6,0x1a6));var _0x677e=function(_0x4bc277,_0x980b87){_0x4bc277=_0x4bc277-0x0;var _0x3d3396=_0x77e6[_0x4bc277];return _0x3d3396;};'use strict';var Sequelize=require(_0x677e('0x0'));module[_0x677e('0x1')]={'name':{'type':Sequelize[_0x677e('0x2')]},'description':{'type':Sequelize[_0x677e('0x2')]},'username':{'type':Sequelize[_0x677e('0x2')],'unique':_0x677e('0x3')},'apiKey':{'type':Sequelize[_0x677e('0x2')]},'remoteUri':{'type':Sequelize[_0x677e('0x2')],'unique':'remoteUri'},'serverUrl':{'type':Sequelize[_0x677e('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0xc2c7=['exports','STRING','username','remoteUri'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xc2c7,0x134));var _0x7c2c=function(_0x2a8a9e,_0x24bd11){_0x2a8a9e=_0x2a8a9e-0x0;var _0x2d63af=_0xc2c7[_0x2a8a9e];return _0x2d63af;};'use strict';var Sequelize=require('sequelize');module[_0x7c2c('0x0')]={'name':{'type':Sequelize[_0x7c2c('0x1')]},'description':{'type':Sequelize[_0x7c2c('0x1')]},'username':{'type':Sequelize[_0x7c2c('0x1')],'unique':_0x7c2c('0x2')},'apiKey':{'type':Sequelize[_0x7c2c('0x1')]},'remoteUri':{'type':Sequelize[_0x7c2c('0x1')],'unique':_0x7c2c('0x3')},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
index d8d85d7..77d2f79 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde13=['../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','stack','name','send','index','rawAttributes','fieldName','type','key','map','query','keys','filters','intersection','model','attributes','length','hasOwnProperty','order','where','pick','filter','merge','VIRTUAL','FreshdeskAccount','includeAll','include','findAll','rows','show','params','fields','options','catch','create','body','find','getConfigurations','FreshdeskConfiguration','sort','addConfiguration','findOne','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','FreshdeskField','remoteUri','substring','lastIndexOf','GET','format','%s/%s','%s:X','toString','base64','requester','agent','priority','group','source','ticket_type','company','remove','default','custom_text','label','choices','capitalize','test','statusCode','error','getFields,\x20%s,\x20%s,\x20%s','getFields','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','ejs','fs-extra','lodash','squel','jsforce','desk.js','to-csv','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch'];(function(_0x2b3730,_0x1756f1){var _0x2a373a=function(_0x3c7a44){while(--_0x3c7a44){_0x2b3730['push'](_0x2b3730['shift']());}};_0x2a373a(++_0x1756f1);}(_0xde13,0x146));var _0x3de1=function(_0x500389,_0x352fc9){_0x500389=_0x500389-0x0;var _0x33fbb7=_0xde13[_0x500389];return _0x33fbb7;};'use strict';var emlformat=require(_0x3de1('0x0'));var rimraf=require(_0x3de1('0x1'));var zipdir=require(_0x3de1('0x2'));var jsonpatch=require(_0x3de1('0x3'));var rp=require(_0x3de1('0x4'));var moment=require('moment');var BPromise=require(_0x3de1('0x5'));var Mustache=require(_0x3de1('0x6'));var util=require(_0x3de1('0x7'));var path=require('path');var sox=require(_0x3de1('0x8'));var csv=require('to-csv');var ejs=require(_0x3de1('0x9'));var fs=require('fs');var fs_extra=require(_0x3de1('0xa'));var _=require(_0x3de1('0xb'));var squel=require(_0x3de1('0xc'));var crypto=require('crypto');var jsforce=require(_0x3de1('0xd'));var deskjs=require(_0x3de1('0xe'));var toCsv=require(_0x3de1('0xf'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x3de1('0x10'));var qs=require(_0x3de1('0x11'));var as=require(_0x3de1('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x3de1('0x13'))(_0x3de1('0x14'));var utils=require(_0x3de1('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x3de1('0x16'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x585909,_0x5794ff){_0x5794ff=_0x5794ff||0xcc;return function(_0x41e61b){if(_0x41e61b){return _0x585909[_0x3de1('0x17')](_0x5794ff);}return _0x585909[_0x3de1('0x18')](_0x5794ff)[_0x3de1('0x19')]();};}function respondWithResult(_0x5e4c56,_0x3405f9){_0x3405f9=_0x3405f9||0xc8;return function(_0x5f087b){if(_0x5f087b){return _0x5e4c56[_0x3de1('0x18')](_0x3405f9)['json'](_0x5f087b);}};}function respondWithFilteredResult(_0x48e218,_0x14156f){return function(_0x214f19){if(_0x214f19){var _0x4fe27e=typeof _0x14156f[_0x3de1('0x1a')]===_0x3de1('0x1b')&&typeof _0x14156f[_0x3de1('0x1c')]===_0x3de1('0x1b');var _0x87651a=_0x214f19['count'];var _0x19254b=_0x4fe27e?0x0:_0x14156f['offset'];var _0x1e5a06=_0x4fe27e?_0x214f19[_0x3de1('0x1d')]:_0x14156f['offset']+_0x14156f[_0x3de1('0x1c')];var _0x4819df;if(_0x1e5a06>=_0x87651a){_0x1e5a06=_0x87651a;_0x4819df=0xc8;}else{_0x4819df=0xce;}_0x48e218[_0x3de1('0x18')](_0x4819df);return _0x48e218[_0x3de1('0x1e')](_0x3de1('0x1f'),_0x19254b+'-'+_0x1e5a06+'/'+_0x87651a)['json'](_0x214f19);}return null;};}function patchUpdates(_0x2c4830){return function(_0x4510c6){try{jsonpatch[_0x3de1('0x20')](_0x4510c6,_0x2c4830,!![]);}catch(_0x55c555){return BPromise[_0x3de1('0x21')](_0x55c555);}return _0x4510c6[_0x3de1('0x22')]();};}function saveUpdates(_0x594bdb,_0x4c0c1a){return function(_0x123f7e){if(_0x123f7e){return _0x123f7e[_0x3de1('0x23')](_0x594bdb)[_0x3de1('0x24')](function(_0xcfe95c){return _0xcfe95c;});}return null;};}function removeEntity(_0x242ab0,_0x4370f2){return function(_0x1e074c){if(_0x1e074c){return _0x1e074c[_0x3de1('0x25')]()['then'](function(){_0x242ab0['status'](0xcc)[_0x3de1('0x19')]();});}};}function handleEntityNotFound(_0xa2120f,_0x192532){return function(_0x2c4f40){if(!_0x2c4f40){_0xa2120f[_0x3de1('0x17')](0x194);}return _0x2c4f40;};}function handleError(_0x5c9a13,_0x5985b2){_0x5985b2=_0x5985b2||0x1f4;return function(_0x5b84a0){logger['error'](_0x5b84a0[_0x3de1('0x26')]);if(_0x5b84a0[_0x3de1('0x27')]){delete _0x5b84a0[_0x3de1('0x27')];}_0x5c9a13[_0x3de1('0x18')](_0x5985b2)[_0x3de1('0x28')](_0x5b84a0);};}exports[_0x3de1('0x29')]=function(_0xa5f4a6,_0x1d2721){var _0x898786={},_0x3ec2ee={},_0x3dae9b={'count':0x0,'rows':[]};var _0x19e10b=_['map'](db['FreshdeskAccount'][_0x3de1('0x2a')],function(_0x4e0517){return{'name':_0x4e0517[_0x3de1('0x2b')],'type':_0x4e0517[_0x3de1('0x2c')][_0x3de1('0x2d')]};});_0x3ec2ee['model']=_[_0x3de1('0x2e')](_0x19e10b,_0x3de1('0x27'));_0x3ec2ee[_0x3de1('0x2f')]=_[_0x3de1('0x30')](_0xa5f4a6[_0x3de1('0x2f')]);_0x3ec2ee[_0x3de1('0x31')]=_[_0x3de1('0x32')](_0x3ec2ee[_0x3de1('0x33')],_0x3ec2ee[_0x3de1('0x2f')]);_0x898786[_0x3de1('0x34')]=_[_0x3de1('0x32')](_0x3ec2ee[_0x3de1('0x33')],qs['fields'](_0xa5f4a6['query']['fields']));_0x898786[_0x3de1('0x34')]=_0x898786[_0x3de1('0x34')][_0x3de1('0x35')]?_0x898786[_0x3de1('0x34')]:_0x3ec2ee['model'];if(!_0xa5f4a6['query'][_0x3de1('0x36')]('nolimit')){_0x898786['limit']=qs[_0x3de1('0x1c')](_0xa5f4a6[_0x3de1('0x2f')]['limit']);_0x898786[_0x3de1('0x1a')]=qs[_0x3de1('0x1a')](_0xa5f4a6[_0x3de1('0x2f')][_0x3de1('0x1a')]);}_0x898786[_0x3de1('0x37')]=qs['sort'](_0xa5f4a6[_0x3de1('0x2f')]['sort']);_0x898786[_0x3de1('0x38')]=qs[_0x3de1('0x31')](_[_0x3de1('0x39')](_0xa5f4a6[_0x3de1('0x2f')],_0x3ec2ee[_0x3de1('0x31')]),_0x19e10b);if(_0xa5f4a6[_0x3de1('0x2f')][_0x3de1('0x3a')]){_0x898786[_0x3de1('0x38')]=_[_0x3de1('0x3b')](_0x898786['where'],{'$or':_[_0x3de1('0x2e')](_0x19e10b,function(_0x5aec4e){if(_0x5aec4e[_0x3de1('0x2c')]!==_0x3de1('0x3c')){var _0x425315={};_0x425315[_0x5aec4e[_0x3de1('0x27')]]={'$like':'%'+_0xa5f4a6[_0x3de1('0x2f')][_0x3de1('0x3a')]+'%'};return _0x425315;}})});}_0x898786=_[_0x3de1('0x3b')]({},_0x898786,_0xa5f4a6['options']);var _0x2f2883={'where':_0x898786[_0x3de1('0x38')]};return db[_0x3de1('0x3d')][_0x3de1('0x1d')](_0x2f2883)[_0x3de1('0x24')](function(_0x466397){_0x3dae9b['count']=_0x466397;if(_0xa5f4a6[_0x3de1('0x2f')][_0x3de1('0x3e')]){_0x898786[_0x3de1('0x3f')]=[{'all':!![]}];}return db[_0x3de1('0x3d')][_0x3de1('0x40')](_0x898786);})[_0x3de1('0x24')](function(_0xe256d7){_0x3dae9b[_0x3de1('0x41')]=_0xe256d7;return _0x3dae9b;})[_0x3de1('0x24')](respondWithFilteredResult(_0x1d2721,_0x898786))['catch'](handleError(_0x1d2721,null));};exports[_0x3de1('0x42')]=function(_0xb2f806,_0x59dccc){var _0x573cbb={'raw':![],'where':{'id':_0xb2f806[_0x3de1('0x43')]['id']}},_0x36daa8={};_0x36daa8['model']=_['keys'](db[_0x3de1('0x3d')][_0x3de1('0x2a')]);_0x36daa8['query']=_[_0x3de1('0x30')](_0xb2f806[_0x3de1('0x2f')]);_0x36daa8[_0x3de1('0x31')]=_['intersection'](_0x36daa8[_0x3de1('0x33')],_0x36daa8[_0x3de1('0x2f')]);_0x573cbb[_0x3de1('0x34')]=_['intersection'](_0x36daa8['model'],qs[_0x3de1('0x44')](_0xb2f806[_0x3de1('0x2f')]['fields']));_0x573cbb[_0x3de1('0x34')]=_0x573cbb[_0x3de1('0x34')][_0x3de1('0x35')]?_0x573cbb[_0x3de1('0x34')]:_0x36daa8[_0x3de1('0x33')];if(_0xb2f806[_0x3de1('0x2f')][_0x3de1('0x3e')]){_0x573cbb[_0x3de1('0x3f')]=[{'all':!![]}];}_0x573cbb=_['merge']({},_0x573cbb,_0xb2f806[_0x3de1('0x45')]);return db[_0x3de1('0x3d')]['find'](_0x573cbb)['then'](handleEntityNotFound(_0x59dccc,null))[_0x3de1('0x24')](respondWithResult(_0x59dccc,null))[_0x3de1('0x46')](handleError(_0x59dccc,null));};exports[_0x3de1('0x47')]=function(_0x1f507c,_0x57e9b8){return db['FreshdeskAccount']['create'](_0x1f507c[_0x3de1('0x48')],{})[_0x3de1('0x24')](respondWithResult(_0x57e9b8,0xc9))[_0x3de1('0x46')](handleError(_0x57e9b8,null));};exports['update']=function(_0x9bb512,_0x622a5a){if(_0x9bb512[_0x3de1('0x48')]['id']){delete _0x9bb512[_0x3de1('0x48')]['id'];}return db[_0x3de1('0x3d')]['find']({'where':{'id':_0x9bb512[_0x3de1('0x43')]['id']}})[_0x3de1('0x24')](handleEntityNotFound(_0x622a5a,null))[_0x3de1('0x24')](saveUpdates(_0x9bb512[_0x3de1('0x48')],null))[_0x3de1('0x24')](respondWithResult(_0x622a5a,null))[_0x3de1('0x46')](handleError(_0x622a5a,null));};exports[_0x3de1('0x25')]=function(_0x10015e,_0x4463d3){return db[_0x3de1('0x3d')][_0x3de1('0x49')]({'where':{'id':_0x10015e[_0x3de1('0x43')]['id']}})[_0x3de1('0x24')](handleEntityNotFound(_0x4463d3,null))[_0x3de1('0x24')](removeEntity(_0x4463d3,null))[_0x3de1('0x46')](handleError(_0x4463d3,null));};exports[_0x3de1('0x4a')]=function(_0x37caf9,_0x29c69f,_0x20494a){var _0x38306e={};var _0x33feec={};var _0x5e8105;var _0x3fa07a;return db[_0x3de1('0x3d')]['findOne']({'where':{'id':_0x37caf9[_0x3de1('0x43')]['id']}})[_0x3de1('0x24')](handleEntityNotFound(_0x29c69f,null))[_0x3de1('0x24')](function(_0xecd118){if(_0xecd118){_0x5e8105=_0xecd118;_0x33feec[_0x3de1('0x33')]=_[_0x3de1('0x30')](db[_0x3de1('0x4b')][_0x3de1('0x2a')]);_0x33feec['query']=_[_0x3de1('0x30')](_0x37caf9[_0x3de1('0x2f')]);_0x33feec[_0x3de1('0x31')]=_[_0x3de1('0x32')](_0x33feec[_0x3de1('0x33')],_0x33feec[_0x3de1('0x2f')]);_0x38306e[_0x3de1('0x34')]=_[_0x3de1('0x32')](_0x33feec[_0x3de1('0x33')],qs[_0x3de1('0x44')](_0x37caf9[_0x3de1('0x2f')]['fields']));_0x38306e[_0x3de1('0x34')]=_0x38306e['attributes']['length']?_0x38306e[_0x3de1('0x34')]:_0x33feec[_0x3de1('0x33')];_0x38306e['order']=qs['sort'](_0x37caf9[_0x3de1('0x2f')][_0x3de1('0x4c')]);_0x38306e[_0x3de1('0x38')]=qs[_0x3de1('0x31')](_['pick'](_0x37caf9['query'],_0x33feec[_0x3de1('0x31')]));if(_0x37caf9[_0x3de1('0x2f')][_0x3de1('0x3a')]){_0x38306e[_0x3de1('0x38')]=_[_0x3de1('0x3b')](_0x38306e['where'],{'$or':_[_0x3de1('0x2e')](_0x38306e[_0x3de1('0x34')],function(_0x56612c){var _0x25c92a={};_0x25c92a[_0x56612c]={'$like':'%'+_0x37caf9[_0x3de1('0x2f')][_0x3de1('0x3a')]+'%'};return _0x25c92a;})});}_0x38306e=_[_0x3de1('0x3b')]({},_0x38306e,_0x37caf9[_0x3de1('0x45')]);return _0x5e8105[_0x3de1('0x4a')](_0x38306e);}})[_0x3de1('0x24')](function(_0x27685d){if(_0x27685d){_0x3fa07a=_0x27685d[_0x3de1('0x35')];if(!_0x37caf9['query']['hasOwnProperty']('nolimit')){_0x38306e['limit']=qs[_0x3de1('0x1c')](_0x37caf9[_0x3de1('0x2f')][_0x3de1('0x1c')]);_0x38306e[_0x3de1('0x1a')]=qs[_0x3de1('0x1a')](_0x37caf9[_0x3de1('0x2f')][_0x3de1('0x1a')]);}return _0x5e8105['getConfigurations'](_0x38306e);}})[_0x3de1('0x24')](function(_0xc7cd08){if(_0xc7cd08){return _0xc7cd08?{'count':_0x3fa07a,'rows':_0xc7cd08}:null;}})[_0x3de1('0x24')](respondWithResult(_0x29c69f,null))['catch'](handleError(_0x29c69f,null));};exports[_0x3de1('0x4d')]=function(_0x1da30d,_0x2cdb7a,_0x4b7dcd){if(_0x1da30d['body']['id']){delete _0x1da30d[_0x3de1('0x48')]['id'];}return db[_0x3de1('0x3d')][_0x3de1('0x4e')]({'where':{'id':_0x1da30d[_0x3de1('0x43')]['id']}})['then'](handleEntityNotFound(_0x2cdb7a,null))['then'](function(_0x23d4bb){if(_0x23d4bb){_0x1da30d[_0x3de1('0x48')][_0x3de1('0x4f')]=_0x23d4bb['id'];_0x1da30d['body'][_0x3de1('0x50')]=integrations[_0x3de1('0x51')](_0x1da30d[_0x3de1('0x48')][_0x3de1('0x52')],_0x1da30d[_0x3de1('0x48')][_0x3de1('0x2c')]);_0x1da30d[_0x3de1('0x48')][_0x3de1('0x53')]=integrations[_0x3de1('0x54')](_0x1da30d[_0x3de1('0x48')][_0x3de1('0x52')],_0x1da30d[_0x3de1('0x48')][_0x3de1('0x2c')]);return db['FreshdeskConfiguration']['create'](_0x1da30d['body'],{'include':[{'model':db['FreshdeskField'],'as':'Subjects'},{'model':db[_0x3de1('0x55')],'as':_0x3de1('0x53')}]});}return null;})['then'](respondWithResult(_0x2cdb7a,null))[_0x3de1('0x46')](handleError(_0x2cdb7a,null));};exports['getFields']=function(_0x10b9cc,_0x53ee21,_0x238c99){var _0x37be68='';return db[_0x3de1('0x3d')][_0x3de1('0x4e')]({'where':{'id':_0x10b9cc['params']['id']},'attributes':['id',_0x3de1('0x56'),'apiKey']})[_0x3de1('0x24')](handleEntityNotFound(_0x53ee21,null))[_0x3de1('0x24')](function(_0x56d32c){if(_0x56d32c){_0x37be68=_0x56d32c['remoteUri'];var _0x13d9e4=_0x37be68['slice'](-0x1);if(_0x13d9e4==='/'){_0x37be68=_0x37be68[_0x3de1('0x57')](0x0,_0x37be68[_0x3de1('0x58')](_0x13d9e4));}return rp({'method':_0x3de1('0x59'),'uri':util[_0x3de1('0x5a')](_0x3de1('0x5b'),_0x37be68,'api/v2/ticket_fields'),'headers':{'Authorization':util[_0x3de1('0x5a')]('Basic\x20%s',new Buffer(util['format'](_0x3de1('0x5c'),_0x56d32c['apiKey']))[_0x3de1('0x5d')](_0x3de1('0x5e')))},'json':!![]});}})[_0x3de1('0x24')](function(_0x1f5c05){if(_0x1f5c05){var _0x3a8155=[_0x3de1('0x5f'),'subject',_0x3de1('0x60'),'description',_0x3de1('0x18'),_0x3de1('0x61'),_0x3de1('0x62'),_0x3de1('0x63'),_0x3de1('0x64'),_0x3de1('0x62'),_0x3de1('0x65')];_[_0x3de1('0x66')](_0x1f5c05,function(_0x3b080b){return _0x3a8155['includes'](_0x3b080b[_0x3de1('0x27')])||!_0x3b080b[_0x3de1('0x67')]&&_0x3b080b[_0x3de1('0x2c')]!==_0x3de1('0x68')&&_0x3b080b['type']!=='custom_dropdown';});return{'count':_0x1f5c05['length'],'rows':_[_0x3de1('0x2e')](_0x1f5c05,function(_0x198be6){return{'id':_0x198be6['name'],'name':_0x198be6[_0x3de1('0x69')],'custom':!_0x198be6[_0x3de1('0x67')],'options':_0x198be6[_0x3de1('0x6a')]?_[_0x3de1('0x2e')](_0x198be6['choices'],function(_0x26d7df){return{'name':_[_0x3de1('0x6b')](_0x26d7df),'value':_0x26d7df};}):[]};})};}})[_0x3de1('0x24')](respondWithResult(_0x53ee21,null))['catch'](function(_0x1f0071){var _0x7ce7ad=_0x10b9cc[_0x3de1('0x2f')][_0x3de1('0x6c')]?0x1f4:_0x1f0071[_0x3de1('0x6d')]||0x1f4;logger[_0x3de1('0x6e')](_0x3de1('0x6f'),_0x3de1('0x70'),_0x7ce7ad,JSON[_0x3de1('0x71')](_0x1f0071));delete _0x1f0071[_0x3de1('0x27')];if(_0x7ce7ad===0x191){_0x7ce7ad=0x190;}_0x53ee21['status'](_0x7ce7ad)[_0x3de1('0x28')](_0x10b9cc[_0x3de1('0x2f')][_0x3de1('0x6c')]?{'message':_0x3de1('0x72'),'statusCode':_0x1f0071[_0x3de1('0x6d')]}:_0x1f0071);});};
\ No newline at end of file
+var _0x3cfb=['../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','name','send','index','map','FreshdeskAccount','model','query','keys','filters','intersection','attributes','fields','nolimit','order','sort','filter','where','includeAll','include','findAll','rows','catch','show','length','merge','options','find','create','body','params','getConfigurations','findOne','rawAttributes','pick','hasOwnProperty','AccountId','Subjects','getSubjects','channel','Descriptions','type','FreshdeskConfiguration','FreshdeskField','getFields','remoteUri','apiKey','slice','substring','lastIndexOf','GET','format','Basic\x20%s','%s:X','toString','base64','requester','subject','agent','description','priority','group','ticket_type','company','remove','includes','default','custom_dropdown','label','test','statusCode','error','stringify','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','fs-extra','lodash','squel','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api'];(function(_0x516927,_0xb4aad0){var _0x30749b=function(_0x2ca6cc){while(--_0x2ca6cc){_0x516927['push'](_0x516927['shift']());}};_0x30749b(++_0xb4aad0);}(_0x3cfb,0x1b8));var _0xb3cf=function(_0x2bb93b,_0x39d756){_0x2bb93b=_0x2bb93b-0x0;var _0xb7f9dc=_0x3cfb[_0x2bb93b];return _0xb7f9dc;};'use strict';var emlformat=require(_0xb3cf('0x0'));var rimraf=require(_0xb3cf('0x1'));var zipdir=require(_0xb3cf('0x2'));var jsonpatch=require(_0xb3cf('0x3'));var rp=require(_0xb3cf('0x4'));var moment=require(_0xb3cf('0x5'));var BPromise=require(_0xb3cf('0x6'));var Mustache=require(_0xb3cf('0x7'));var util=require('util');var path=require(_0xb3cf('0x8'));var sox=require(_0xb3cf('0x9'));var csv=require(_0xb3cf('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb3cf('0xb'));var _=require(_0xb3cf('0xc'));var squel=require(_0xb3cf('0xd'));var crypto=require('crypto');var jsforce=require(_0xb3cf('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xb3cf('0xf'));var Papa=require(_0xb3cf('0x10'));var Redis=require(_0xb3cf('0x11'));var authService=require(_0xb3cf('0x12'));var qs=require(_0xb3cf('0x13'));var as=require(_0xb3cf('0x14'));var hardwareService=require(_0xb3cf('0x15'));var logger=require(_0xb3cf('0x16'))(_0xb3cf('0x17'));var utils=require(_0xb3cf('0x18'));var config=require(_0xb3cf('0x19'));var licenseUtil=require(_0xb3cf('0x1a'));var db=require(_0xb3cf('0x1b'))['db'];var integrations=require(_0xb3cf('0x1c'));function respondWithStatusCode(_0x16bb17,_0x530325){_0x530325=_0x530325||0xcc;return function(_0x495b2a){if(_0x495b2a){return _0x16bb17[_0xb3cf('0x1d')](_0x530325);}return _0x16bb17[_0xb3cf('0x1e')](_0x530325)['end']();};}function respondWithResult(_0x21ce6c,_0x510bae){_0x510bae=_0x510bae||0xc8;return function(_0x5c7a5c){if(_0x5c7a5c){return _0x21ce6c[_0xb3cf('0x1e')](_0x510bae)[_0xb3cf('0x1f')](_0x5c7a5c);}};}function respondWithFilteredResult(_0x2eff5c,_0x56f703){return function(_0x17e8cd){if(_0x17e8cd){var _0x87f87=typeof _0x56f703[_0xb3cf('0x20')]===_0xb3cf('0x21')&&typeof _0x56f703[_0xb3cf('0x22')]===_0xb3cf('0x21');var _0x1670d0=_0x17e8cd[_0xb3cf('0x23')];var _0x1526c9=_0x87f87?0x0:_0x56f703[_0xb3cf('0x20')];var _0x4b0a82=_0x87f87?_0x17e8cd[_0xb3cf('0x23')]:_0x56f703[_0xb3cf('0x20')]+_0x56f703[_0xb3cf('0x22')];var _0x416910;if(_0x4b0a82>=_0x1670d0){_0x4b0a82=_0x1670d0;_0x416910=0xc8;}else{_0x416910=0xce;}_0x2eff5c['status'](_0x416910);return _0x2eff5c[_0xb3cf('0x24')](_0xb3cf('0x25'),_0x1526c9+'-'+_0x4b0a82+'/'+_0x1670d0)[_0xb3cf('0x1f')](_0x17e8cd);}return null;};}function patchUpdates(_0x1dfbc3){return function(_0x283249){try{jsonpatch[_0xb3cf('0x26')](_0x283249,_0x1dfbc3,!![]);}catch(_0x161cad){return BPromise[_0xb3cf('0x27')](_0x161cad);}return _0x283249[_0xb3cf('0x28')]();};}function saveUpdates(_0x1bfe02,_0x4c96fd){return function(_0x227360){if(_0x227360){return _0x227360[_0xb3cf('0x29')](_0x1bfe02)[_0xb3cf('0x2a')](function(_0x203ce3){return _0x203ce3;});}return null;};}function removeEntity(_0x1fb3ea,_0x402d3e){return function(_0x13b0b1){if(_0x13b0b1){return _0x13b0b1[_0xb3cf('0x2b')]()[_0xb3cf('0x2a')](function(){_0x1fb3ea[_0xb3cf('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x89f345,_0x3b8c91){return function(_0x1662e5){if(!_0x1662e5){_0x89f345['sendStatus'](0x194);}return _0x1662e5;};}function handleError(_0x4cae37,_0x15cf4d){_0x15cf4d=_0x15cf4d||0x1f4;return function(_0x173177){logger['error'](_0x173177['stack']);if(_0x173177[_0xb3cf('0x2c')]){delete _0x173177[_0xb3cf('0x2c')];}_0x4cae37['status'](_0x15cf4d)[_0xb3cf('0x2d')](_0x173177);};}exports[_0xb3cf('0x2e')]=function(_0x20c6f5,_0x376f73){var _0x1b1460={},_0x440fb6={},_0x1203a4={'count':0x0,'rows':[]};var _0x11efb3=_[_0xb3cf('0x2f')](db[_0xb3cf('0x30')]['rawAttributes'],function(_0x46882a){return{'name':_0x46882a['fieldName'],'type':_0x46882a['type']['key']};});_0x440fb6[_0xb3cf('0x31')]=_[_0xb3cf('0x2f')](_0x11efb3,'name');_0x440fb6[_0xb3cf('0x32')]=_[_0xb3cf('0x33')](_0x20c6f5[_0xb3cf('0x32')]);_0x440fb6[_0xb3cf('0x34')]=_[_0xb3cf('0x35')](_0x440fb6[_0xb3cf('0x31')],_0x440fb6['query']);_0x1b1460[_0xb3cf('0x36')]=_['intersection'](_0x440fb6[_0xb3cf('0x31')],qs[_0xb3cf('0x37')](_0x20c6f5[_0xb3cf('0x32')][_0xb3cf('0x37')]));_0x1b1460[_0xb3cf('0x36')]=_0x1b1460[_0xb3cf('0x36')]['length']?_0x1b1460['attributes']:_0x440fb6[_0xb3cf('0x31')];if(!_0x20c6f5['query']['hasOwnProperty'](_0xb3cf('0x38'))){_0x1b1460['limit']=qs[_0xb3cf('0x22')](_0x20c6f5[_0xb3cf('0x32')][_0xb3cf('0x22')]);_0x1b1460[_0xb3cf('0x20')]=qs[_0xb3cf('0x20')](_0x20c6f5[_0xb3cf('0x32')]['offset']);}_0x1b1460[_0xb3cf('0x39')]=qs[_0xb3cf('0x3a')](_0x20c6f5[_0xb3cf('0x32')][_0xb3cf('0x3a')]);_0x1b1460['where']=qs[_0xb3cf('0x34')](_['pick'](_0x20c6f5[_0xb3cf('0x32')],_0x440fb6['filters']),_0x11efb3);if(_0x20c6f5[_0xb3cf('0x32')][_0xb3cf('0x3b')]){_0x1b1460[_0xb3cf('0x3c')]=_['merge'](_0x1b1460['where'],{'$or':_[_0xb3cf('0x2f')](_0x11efb3,function(_0x41defa){if(_0x41defa['type']!=='VIRTUAL'){var _0x4cc895={};_0x4cc895[_0x41defa[_0xb3cf('0x2c')]]={'$like':'%'+_0x20c6f5[_0xb3cf('0x32')]['filter']+'%'};return _0x4cc895;}})});}_0x1b1460=_['merge']({},_0x1b1460,_0x20c6f5['options']);var _0x10c027={'where':_0x1b1460[_0xb3cf('0x3c')]};return db[_0xb3cf('0x30')][_0xb3cf('0x23')](_0x10c027)['then'](function(_0x4881b3){_0x1203a4[_0xb3cf('0x23')]=_0x4881b3;if(_0x20c6f5[_0xb3cf('0x32')][_0xb3cf('0x3d')]){_0x1b1460[_0xb3cf('0x3e')]=[{'all':!![]}];}return db['FreshdeskAccount'][_0xb3cf('0x3f')](_0x1b1460);})[_0xb3cf('0x2a')](function(_0x3fd9e5){_0x1203a4[_0xb3cf('0x40')]=_0x3fd9e5;return _0x1203a4;})['then'](respondWithFilteredResult(_0x376f73,_0x1b1460))[_0xb3cf('0x41')](handleError(_0x376f73,null));};exports[_0xb3cf('0x42')]=function(_0x5528fa,_0x4e9bbe){var _0x2486d1={'raw':![],'where':{'id':_0x5528fa['params']['id']}},_0x4c795b={};_0x4c795b[_0xb3cf('0x31')]=_[_0xb3cf('0x33')](db['FreshdeskAccount']['rawAttributes']);_0x4c795b[_0xb3cf('0x32')]=_[_0xb3cf('0x33')](_0x5528fa[_0xb3cf('0x32')]);_0x4c795b['filters']=_[_0xb3cf('0x35')](_0x4c795b[_0xb3cf('0x31')],_0x4c795b[_0xb3cf('0x32')]);_0x2486d1[_0xb3cf('0x36')]=_[_0xb3cf('0x35')](_0x4c795b[_0xb3cf('0x31')],qs[_0xb3cf('0x37')](_0x5528fa[_0xb3cf('0x32')]['fields']));_0x2486d1[_0xb3cf('0x36')]=_0x2486d1[_0xb3cf('0x36')][_0xb3cf('0x43')]?_0x2486d1[_0xb3cf('0x36')]:_0x4c795b[_0xb3cf('0x31')];if(_0x5528fa[_0xb3cf('0x32')]['includeAll']){_0x2486d1[_0xb3cf('0x3e')]=[{'all':!![]}];}_0x2486d1=_[_0xb3cf('0x44')]({},_0x2486d1,_0x5528fa[_0xb3cf('0x45')]);return db[_0xb3cf('0x30')][_0xb3cf('0x46')](_0x2486d1)[_0xb3cf('0x2a')](handleEntityNotFound(_0x4e9bbe,null))[_0xb3cf('0x2a')](respondWithResult(_0x4e9bbe,null))[_0xb3cf('0x41')](handleError(_0x4e9bbe,null));};exports[_0xb3cf('0x47')]=function(_0x45b779,_0x20bf67){return db[_0xb3cf('0x30')]['create'](_0x45b779[_0xb3cf('0x48')],{})['then'](respondWithResult(_0x20bf67,0xc9))[_0xb3cf('0x41')](handleError(_0x20bf67,null));};exports['update']=function(_0x2ef02b,_0x58398e){if(_0x2ef02b[_0xb3cf('0x48')]['id']){delete _0x2ef02b['body']['id'];}return db[_0xb3cf('0x30')][_0xb3cf('0x46')]({'where':{'id':_0x2ef02b[_0xb3cf('0x49')]['id']}})[_0xb3cf('0x2a')](handleEntityNotFound(_0x58398e,null))['then'](saveUpdates(_0x2ef02b['body'],null))[_0xb3cf('0x2a')](respondWithResult(_0x58398e,null))[_0xb3cf('0x41')](handleError(_0x58398e,null));};exports[_0xb3cf('0x2b')]=function(_0x439e69,_0x27e1e3){return db[_0xb3cf('0x30')]['find']({'where':{'id':_0x439e69['params']['id']}})[_0xb3cf('0x2a')](handleEntityNotFound(_0x27e1e3,null))[_0xb3cf('0x2a')](removeEntity(_0x27e1e3,null))[_0xb3cf('0x41')](handleError(_0x27e1e3,null));};exports[_0xb3cf('0x4a')]=function(_0x3cd144,_0x788ad9,_0x2ac152){var _0x1cc46c={};var _0xd3da14={};var _0x149755;var _0x57a1df;return db[_0xb3cf('0x30')][_0xb3cf('0x4b')]({'where':{'id':_0x3cd144[_0xb3cf('0x49')]['id']}})['then'](handleEntityNotFound(_0x788ad9,null))[_0xb3cf('0x2a')](function(_0x4bfff3){if(_0x4bfff3){_0x149755=_0x4bfff3;_0xd3da14['model']=_[_0xb3cf('0x33')](db['FreshdeskConfiguration'][_0xb3cf('0x4c')]);_0xd3da14['query']=_['keys'](_0x3cd144['query']);_0xd3da14['filters']=_[_0xb3cf('0x35')](_0xd3da14['model'],_0xd3da14[_0xb3cf('0x32')]);_0x1cc46c[_0xb3cf('0x36')]=_[_0xb3cf('0x35')](_0xd3da14[_0xb3cf('0x31')],qs[_0xb3cf('0x37')](_0x3cd144['query'][_0xb3cf('0x37')]));_0x1cc46c[_0xb3cf('0x36')]=_0x1cc46c['attributes'][_0xb3cf('0x43')]?_0x1cc46c[_0xb3cf('0x36')]:_0xd3da14[_0xb3cf('0x31')];_0x1cc46c[_0xb3cf('0x39')]=qs[_0xb3cf('0x3a')](_0x3cd144[_0xb3cf('0x32')][_0xb3cf('0x3a')]);_0x1cc46c['where']=qs[_0xb3cf('0x34')](_[_0xb3cf('0x4d')](_0x3cd144['query'],_0xd3da14['filters']));if(_0x3cd144[_0xb3cf('0x32')][_0xb3cf('0x3b')]){_0x1cc46c[_0xb3cf('0x3c')]=_[_0xb3cf('0x44')](_0x1cc46c[_0xb3cf('0x3c')],{'$or':_[_0xb3cf('0x2f')](_0x1cc46c[_0xb3cf('0x36')],function(_0x495c7a){var _0x9bd198={};_0x9bd198[_0x495c7a]={'$like':'%'+_0x3cd144['query'][_0xb3cf('0x3b')]+'%'};return _0x9bd198;})});}_0x1cc46c=_[_0xb3cf('0x44')]({},_0x1cc46c,_0x3cd144['options']);return _0x149755['getConfigurations'](_0x1cc46c);}})[_0xb3cf('0x2a')](function(_0x308018){if(_0x308018){_0x57a1df=_0x308018['length'];if(!_0x3cd144[_0xb3cf('0x32')][_0xb3cf('0x4e')](_0xb3cf('0x38'))){_0x1cc46c['limit']=qs['limit'](_0x3cd144[_0xb3cf('0x32')][_0xb3cf('0x22')]);_0x1cc46c[_0xb3cf('0x20')]=qs[_0xb3cf('0x20')](_0x3cd144[_0xb3cf('0x32')][_0xb3cf('0x20')]);}return _0x149755[_0xb3cf('0x4a')](_0x1cc46c);}})[_0xb3cf('0x2a')](function(_0x585a1e){if(_0x585a1e){return _0x585a1e?{'count':_0x57a1df,'rows':_0x585a1e}:null;}})[_0xb3cf('0x2a')](respondWithResult(_0x788ad9,null))[_0xb3cf('0x41')](handleError(_0x788ad9,null));};exports['addConfiguration']=function(_0x3159a2,_0x2fc9d9,_0x4f03f0){if(_0x3159a2[_0xb3cf('0x48')]['id']){delete _0x3159a2[_0xb3cf('0x48')]['id'];}return db['FreshdeskAccount'][_0xb3cf('0x4b')]({'where':{'id':_0x3159a2[_0xb3cf('0x49')]['id']}})['then'](handleEntityNotFound(_0x2fc9d9,null))[_0xb3cf('0x2a')](function(_0x4bfe81){if(_0x4bfe81){_0x3159a2['body'][_0xb3cf('0x4f')]=_0x4bfe81['id'];_0x3159a2['body'][_0xb3cf('0x50')]=integrations[_0xb3cf('0x51')](_0x3159a2[_0xb3cf('0x48')][_0xb3cf('0x52')],_0x3159a2['body']['type']);_0x3159a2[_0xb3cf('0x48')][_0xb3cf('0x53')]=integrations['getDescriptions'](_0x3159a2[_0xb3cf('0x48')]['channel'],_0x3159a2[_0xb3cf('0x48')][_0xb3cf('0x54')]);return db[_0xb3cf('0x55')]['create'](_0x3159a2[_0xb3cf('0x48')],{'include':[{'model':db[_0xb3cf('0x56')],'as':_0xb3cf('0x50')},{'model':db['FreshdeskField'],'as':'Descriptions'}]});}return null;})[_0xb3cf('0x2a')](respondWithResult(_0x2fc9d9,null))['catch'](handleError(_0x2fc9d9,null));};exports[_0xb3cf('0x57')]=function(_0x2e1ca3,_0x3e0f55,_0x4ac9de){var _0x596c2f='';return db[_0xb3cf('0x30')]['findOne']({'where':{'id':_0x2e1ca3[_0xb3cf('0x49')]['id']},'attributes':['id',_0xb3cf('0x58'),_0xb3cf('0x59')]})[_0xb3cf('0x2a')](handleEntityNotFound(_0x3e0f55,null))['then'](function(_0x4f779e){if(_0x4f779e){_0x596c2f=_0x4f779e[_0xb3cf('0x58')];var _0x558dcb=_0x596c2f[_0xb3cf('0x5a')](-0x1);if(_0x558dcb==='/'){_0x596c2f=_0x596c2f[_0xb3cf('0x5b')](0x0,_0x596c2f[_0xb3cf('0x5c')](_0x558dcb));}return rp({'method':_0xb3cf('0x5d'),'uri':util['format']('%s/%s',_0x596c2f,'api/v2/ticket_fields'),'headers':{'Authorization':util[_0xb3cf('0x5e')](_0xb3cf('0x5f'),new Buffer(util[_0xb3cf('0x5e')](_0xb3cf('0x60'),_0x4f779e['apiKey']))[_0xb3cf('0x61')](_0xb3cf('0x62')))},'json':!![]});}})[_0xb3cf('0x2a')](function(_0xb3c5d2){if(_0xb3c5d2){var _0x8938c7=[_0xb3cf('0x63'),_0xb3cf('0x64'),_0xb3cf('0x65'),_0xb3cf('0x66'),_0xb3cf('0x1e'),_0xb3cf('0x67'),_0xb3cf('0x68'),'source',_0xb3cf('0x69'),_0xb3cf('0x68'),_0xb3cf('0x6a')];_[_0xb3cf('0x6b')](_0xb3c5d2,function(_0x12cadc){return _0x8938c7[_0xb3cf('0x6c')](_0x12cadc['name'])||!_0x12cadc[_0xb3cf('0x6d')]&&_0x12cadc[_0xb3cf('0x54')]!=='custom_text'&&_0x12cadc[_0xb3cf('0x54')]!==_0xb3cf('0x6e');});return{'count':_0xb3c5d2[_0xb3cf('0x43')],'rows':_[_0xb3cf('0x2f')](_0xb3c5d2,function(_0x135f05){return{'id':_0x135f05[_0xb3cf('0x2c')],'name':_0x135f05[_0xb3cf('0x6f')],'custom':!_0x135f05[_0xb3cf('0x6d')],'options':_0x135f05['choices']?_['map'](_0x135f05['choices'],function(_0x1a1288){return{'name':_['capitalize'](_0x1a1288),'value':_0x1a1288};}):[]};})};}})[_0xb3cf('0x2a')](respondWithResult(_0x3e0f55,null))[_0xb3cf('0x41')](function(_0x1e22b4){var _0x523adb=_0x2e1ca3['query'][_0xb3cf('0x70')]?0x1f4:_0x1e22b4[_0xb3cf('0x71')]||0x1f4;logger[_0xb3cf('0x72')]('getFields,\x20%s,\x20%s,\x20%s','getFields',_0x523adb,JSON[_0xb3cf('0x73')](_0x1e22b4));delete _0x1e22b4[_0xb3cf('0x2c')];if(_0x523adb===0x191){_0x523adb=0x190;}_0x3e0f55['status'](_0x523adb)[_0xb3cf('0x2d')](_0x2e1ca3['query']['test']?{'message':'Wrong\x20credentials','statusCode':_0x1e22b4[_0xb3cf('0x71')]}:_0x1e22b4);});};
\ No newline at end of file
index 3ffc30b..e9897db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3497=['./intFreshdeskAccount.attributes','../../components/integrations/configuration','define','FreshdeskAccount','int_freshdesk_accounts','lodash','util','api','moment','path','rimraf','../../config/environment'];(function(_0x3433eb,_0xc4d2b3){var _0x46df3a=function(_0x577f7e){while(--_0x577f7e){_0x3433eb['push'](_0x3433eb['shift']());}};_0x46df3a(++_0xc4d2b3);}(_0x3497,0x95));var _0x7349=function(_0x20a394,_0x5c4e0c){_0x20a394=_0x20a394-0x0;var _0x8a454f=_0x3497[_0x20a394];return _0x8a454f;};'use strict';var _=require(_0x7349('0x0'));var util=require(_0x7349('0x1'));var logger=require('../../config/logger')(_0x7349('0x2'));var moment=require(_0x7349('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x7349('0x4'));var rimraf=require(_0x7349('0x5'));var config=require(_0x7349('0x6'));var attributes=require(_0x7349('0x7'));var integrations=require(_0x7349('0x8'));module['exports']=function(_0x468d95,_0x588276){return _0x468d95[_0x7349('0x9')](_0x7349('0xa'),attributes,{'tableName':_0x7349('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x591b=['moment','bluebird','path','../../config/environment','./intFreshdeskAccount.attributes','../../components/integrations/configuration','exports','FreshdeskAccount','int_freshdesk_accounts','lodash','util','../../config/logger','api'];(function(_0x4782a3,_0x2b4e99){var _0x3b9735=function(_0x2e418c){while(--_0x2e418c){_0x4782a3['push'](_0x4782a3['shift']());}};_0x3b9735(++_0x2b4e99);}(_0x591b,0x1ea));var _0xb591=function(_0x5eb5a9,_0xa3bdd0){_0x5eb5a9=_0x5eb5a9-0x0;var _0x161b56=_0x591b[_0x5eb5a9];return _0x161b56;};'use strict';var _=require(_0xb591('0x0'));var util=require(_0xb591('0x1'));var logger=require(_0xb591('0x2'))(_0xb591('0x3'));var moment=require(_0xb591('0x4'));var BPromise=require(_0xb591('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xb591('0x6'));var rimraf=require('rimraf');var config=require(_0xb591('0x7'));var attributes=require(_0xb591('0x8'));var integrations=require(_0xb591('0x9'));module[_0xb591('0xa')]=function(_0x4053b4,_0x373497){return _0x4053b4['define'](_0xb591('0xb'),attributes,{'tableName':_0xb591('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3cdd0af..fba7f17 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b92=['map','include','model','then','debug','ShowFreshdeskAccount','find','lodash','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','jayson/promise','client','http','request','info','FreshdeskAccount,\x20%s,\x20%s','FreshdeskAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','GetFreshdeskAccount','FreshdeskAccount','findAll','options','raw','where','attributes','limit'];(function(_0x323fe0,_0x6d0bc9){var _0xbb0659=function(_0x513553){while(--_0x513553){_0x323fe0['push'](_0x323fe0['shift']());}};_0xbb0659(++_0x6d0bc9);}(_0x5b92,0xdf));var _0x25b9=function(_0x47a7d0,_0x4e182d){_0x47a7d0=_0x47a7d0-0x0;var _0xb9bd08=_0x5b92[_0x47a7d0];return _0xb9bd08;};'use strict';var _=require(_0x25b9('0x0'));var util=require(_0x25b9('0x1'));var moment=require('moment');var BPromise=require(_0x25b9('0x2'));var rs=require(_0x25b9('0x3'));var fs=require('fs');var Redis=require(_0x25b9('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x25b9('0x5'));var logger=require(_0x25b9('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0x25b9('0x7'));var client=jayson[_0x25b9('0x8')][_0x25b9('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2f9009,_0x439af4,_0x2f7b81){return new BPromise(function(_0x862a56,_0x43d2e3){return client[_0x25b9('0xa')](_0x2f9009,_0x2f7b81)['then'](function(_0x59ed89){logger[_0x25b9('0xb')](_0x25b9('0xc'),_0x439af4,'request\x20sent');logger['debug'](_0x25b9('0xd'),_0x439af4,_0x25b9('0xe'),JSON[_0x25b9('0xf')](_0x59ed89));if(_0x59ed89[_0x25b9('0x10')]){if(_0x59ed89[_0x25b9('0x10')][_0x25b9('0x11')]===0x1f4){logger[_0x25b9('0x10')](_0x25b9('0xc'),_0x439af4,_0x59ed89['error'][_0x25b9('0x12')]);return _0x43d2e3(_0x59ed89[_0x25b9('0x10')][_0x25b9('0x12')]);}logger[_0x25b9('0x10')](_0x25b9('0xc'),_0x439af4,_0x59ed89[_0x25b9('0x10')][_0x25b9('0x12')]);return _0x862a56(_0x59ed89['error']['message']);}else{logger[_0x25b9('0xb')](_0x25b9('0xc'),_0x439af4,_0x25b9('0xe'));_0x862a56(_0x59ed89[_0x25b9('0x13')][_0x25b9('0x12')]);}})[_0x25b9('0x14')](function(_0x4f68d0){logger[_0x25b9('0x10')](_0x25b9('0xc'),_0x439af4,_0x4f68d0);_0x43d2e3(_0x4f68d0);});});}exports[_0x25b9('0x15')]=function(_0x2cb83f){var _0x29f698=this;return new Promise(function(_0x1dea07,_0x2c2b43){return db[_0x25b9('0x16')][_0x25b9('0x17')]({'raw':_0x2cb83f[_0x25b9('0x18')]?_0x2cb83f[_0x25b9('0x18')][_0x25b9('0x19')]===undefined?!![]:![]:!![],'where':_0x2cb83f[_0x25b9('0x18')]?_0x2cb83f[_0x25b9('0x18')][_0x25b9('0x1a')]||null:null,'attributes':_0x2cb83f[_0x25b9('0x18')]?_0x2cb83f[_0x25b9('0x18')][_0x25b9('0x1b')]||null:null,'limit':_0x2cb83f[_0x25b9('0x18')]?_0x2cb83f['options'][_0x25b9('0x1c')]||null:null,'include':_0x2cb83f[_0x25b9('0x18')]?_0x2cb83f[_0x25b9('0x18')]['include']?_[_0x25b9('0x1d')](_0x2cb83f[_0x25b9('0x18')][_0x25b9('0x1e')],function(_0x50bdbd){return{'model':db[_0x50bdbd['model']],'as':_0x50bdbd['as'],'attributes':_0x50bdbd[_0x25b9('0x1b')],'include':_0x50bdbd[_0x25b9('0x1e')]?_['map'](_0x50bdbd['include'],function(_0x572075){return{'model':db[_0x572075[_0x25b9('0x1f')]],'as':_0x572075['as'],'attributes':_0x572075[_0x25b9('0x1b')],'include':_0x572075[_0x25b9('0x1e')]?_['map'](_0x572075['include'],function(_0x4c71ee){return{'model':db[_0x4c71ee[_0x25b9('0x1f')]],'as':_0x4c71ee['as'],'attributes':_0x4c71ee['attributes']};}):[]};}):[]};}):[]:[]})[_0x25b9('0x20')](function(_0x23bff6){logger[_0x25b9('0xb')](_0x25b9('0x15'),_0x2cb83f);logger[_0x25b9('0x21')](_0x25b9('0x15'),_0x2cb83f,JSON[_0x25b9('0xf')](_0x23bff6));_0x1dea07(_0x23bff6);})[_0x25b9('0x14')](function(_0x4c76e4){logger[_0x25b9('0x10')](_0x25b9('0x15'),_0x4c76e4[_0x25b9('0x12')],_0x2cb83f);_0x2c2b43(_0x29f698[_0x25b9('0x10')](0x1f4,_0x4c76e4[_0x25b9('0x12')]));});});};exports[_0x25b9('0x22')]=function(_0x2439f0){var _0x300f83=this;return new Promise(function(_0xba80fc,_0x5cfe21){return db[_0x25b9('0x16')][_0x25b9('0x23')]({'raw':_0x2439f0['options']?_0x2439f0['options'][_0x25b9('0x19')]===undefined?!![]:![]:!![],'where':_0x2439f0[_0x25b9('0x18')]?_0x2439f0['options']['where']||null:null,'attributes':_0x2439f0[_0x25b9('0x18')]?_0x2439f0['options']['attributes']||null:null,'include':_0x2439f0[_0x25b9('0x18')]?_0x2439f0['options'][_0x25b9('0x1e')]?_[_0x25b9('0x1d')](_0x2439f0[_0x25b9('0x18')][_0x25b9('0x1e')],function(_0x29c687){return{'model':db[_0x29c687['model']],'as':_0x29c687['as'],'attributes':_0x29c687[_0x25b9('0x1b')],'include':_0x29c687[_0x25b9('0x1e')]?_[_0x25b9('0x1d')](_0x29c687['include'],function(_0x2a8467){return{'model':db[_0x2a8467['model']],'as':_0x2a8467['as'],'attributes':_0x2a8467[_0x25b9('0x1b')],'include':_0x2a8467[_0x25b9('0x1e')]?_[_0x25b9('0x1d')](_0x2a8467[_0x25b9('0x1e')],function(_0x51040e){return{'model':db[_0x51040e[_0x25b9('0x1f')]],'as':_0x51040e['as'],'attributes':_0x51040e[_0x25b9('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x25b9('0x20')](function(_0x442869){logger[_0x25b9('0xb')](_0x25b9('0x22'),_0x2439f0);logger[_0x25b9('0x21')]('ShowFreshdeskAccount',_0x2439f0,JSON[_0x25b9('0xf')](_0x442869));_0xba80fc(_0x442869);})[_0x25b9('0x14')](function(_0x3e8ac6){logger[_0x25b9('0x10')](_0x25b9('0x22'),_0x3e8ac6[_0x25b9('0x12')],_0x2439f0);_0x5cfe21(_0x300f83[_0x25b9('0x10')](0x1f4,_0x3e8ac6[_0x25b9('0x12')]));});});};
\ No newline at end of file
+var _0x9bf9=['where','attributes','limit','include','map','model','debug','GetFreshdeskAccount','ShowFreshdeskAccount','find','lodash','util','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','request','then','info','FreshdeskAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','FreshdeskAccount,\x20%s,\x20%s','message','result','catch','FreshdeskAccount','findAll','options','raw'];(function(_0x2e4aa2,_0x11956a){var _0x5e6092=function(_0x4c12c2){while(--_0x4c12c2){_0x2e4aa2['push'](_0x2e4aa2['shift']());}};_0x5e6092(++_0x11956a);}(_0x9bf9,0x168));var _0x99bf=function(_0x311909,_0x414bf7){_0x311909=_0x311909-0x0;var _0x8d3163=_0x9bf9[_0x311909];return _0x8d3163;};'use strict';var _=require(_0x99bf('0x0'));var util=require(_0x99bf('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x99bf('0x2'));var fs=require('fs');var Redis=require(_0x99bf('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x99bf('0x4'));var logger=require(_0x99bf('0x5'))('rpc');var config=require(_0x99bf('0x6'));var jayson=require(_0x99bf('0x7'));var client=jayson[_0x99bf('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1d4d33,_0x52ebd4,_0x57c830){return new BPromise(function(_0x4ad829,_0x5f1e74){return client[_0x99bf('0x9')](_0x1d4d33,_0x57c830)[_0x99bf('0xa')](function(_0x5f57b0){logger[_0x99bf('0xb')]('FreshdeskAccount,\x20%s,\x20%s',_0x52ebd4,'request\x20sent');logger['debug'](_0x99bf('0xc'),_0x52ebd4,_0x99bf('0xd'),JSON[_0x99bf('0xe')](_0x5f57b0));if(_0x5f57b0[_0x99bf('0xf')]){if(_0x5f57b0[_0x99bf('0xf')][_0x99bf('0x10')]===0x1f4){logger[_0x99bf('0xf')](_0x99bf('0x11'),_0x52ebd4,_0x5f57b0['error'][_0x99bf('0x12')]);return _0x5f1e74(_0x5f57b0[_0x99bf('0xf')][_0x99bf('0x12')]);}logger[_0x99bf('0xf')]('FreshdeskAccount,\x20%s,\x20%s',_0x52ebd4,_0x5f57b0[_0x99bf('0xf')][_0x99bf('0x12')]);return _0x4ad829(_0x5f57b0['error'][_0x99bf('0x12')]);}else{logger[_0x99bf('0xb')](_0x99bf('0x11'),_0x52ebd4,_0x99bf('0xd'));_0x4ad829(_0x5f57b0[_0x99bf('0x13')][_0x99bf('0x12')]);}})[_0x99bf('0x14')](function(_0x189e31){logger['error'](_0x99bf('0x11'),_0x52ebd4,_0x189e31);_0x5f1e74(_0x189e31);});});}exports['GetFreshdeskAccount']=function(_0xc11ed){var _0x44a09c=this;return new Promise(function(_0x1725ad,_0x11f76a){return db[_0x99bf('0x15')][_0x99bf('0x16')]({'raw':_0xc11ed['options']?_0xc11ed[_0x99bf('0x17')][_0x99bf('0x18')]===undefined?!![]:![]:!![],'where':_0xc11ed[_0x99bf('0x17')]?_0xc11ed[_0x99bf('0x17')][_0x99bf('0x19')]||null:null,'attributes':_0xc11ed[_0x99bf('0x17')]?_0xc11ed[_0x99bf('0x17')][_0x99bf('0x1a')]||null:null,'limit':_0xc11ed['options']?_0xc11ed['options'][_0x99bf('0x1b')]||null:null,'include':_0xc11ed[_0x99bf('0x17')]?_0xc11ed[_0x99bf('0x17')][_0x99bf('0x1c')]?_[_0x99bf('0x1d')](_0xc11ed[_0x99bf('0x17')][_0x99bf('0x1c')],function(_0x219ce2){return{'model':db[_0x219ce2[_0x99bf('0x1e')]],'as':_0x219ce2['as'],'attributes':_0x219ce2[_0x99bf('0x1a')],'include':_0x219ce2[_0x99bf('0x1c')]?_[_0x99bf('0x1d')](_0x219ce2[_0x99bf('0x1c')],function(_0x2ef2a2){return{'model':db[_0x2ef2a2[_0x99bf('0x1e')]],'as':_0x2ef2a2['as'],'attributes':_0x2ef2a2[_0x99bf('0x1a')],'include':_0x2ef2a2[_0x99bf('0x1c')]?_[_0x99bf('0x1d')](_0x2ef2a2['include'],function(_0x522767){return{'model':db[_0x522767[_0x99bf('0x1e')]],'as':_0x522767['as'],'attributes':_0x522767['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0xbf01){logger[_0x99bf('0xb')]('GetFreshdeskAccount',_0xc11ed);logger[_0x99bf('0x1f')](_0x99bf('0x20'),_0xc11ed,JSON[_0x99bf('0xe')](_0xbf01));_0x1725ad(_0xbf01);})['catch'](function(_0x20d77b){logger[_0x99bf('0xf')](_0x99bf('0x20'),_0x20d77b[_0x99bf('0x12')],_0xc11ed);_0x11f76a(_0x44a09c[_0x99bf('0xf')](0x1f4,_0x20d77b[_0x99bf('0x12')]));});});};exports[_0x99bf('0x21')]=function(_0x3612fd){var _0x3ac92b=this;return new Promise(function(_0x3e6c07,_0x397bcc){return db[_0x99bf('0x15')][_0x99bf('0x22')]({'raw':_0x3612fd[_0x99bf('0x17')]?_0x3612fd[_0x99bf('0x17')][_0x99bf('0x18')]===undefined?!![]:![]:!![],'where':_0x3612fd['options']?_0x3612fd['options']['where']||null:null,'attributes':_0x3612fd[_0x99bf('0x17')]?_0x3612fd['options'][_0x99bf('0x1a')]||null:null,'include':_0x3612fd[_0x99bf('0x17')]?_0x3612fd[_0x99bf('0x17')][_0x99bf('0x1c')]?_[_0x99bf('0x1d')](_0x3612fd['options']['include'],function(_0x2c831c){return{'model':db[_0x2c831c[_0x99bf('0x1e')]],'as':_0x2c831c['as'],'attributes':_0x2c831c['attributes'],'include':_0x2c831c[_0x99bf('0x1c')]?_[_0x99bf('0x1d')](_0x2c831c[_0x99bf('0x1c')],function(_0x7dec9d){return{'model':db[_0x7dec9d[_0x99bf('0x1e')]],'as':_0x7dec9d['as'],'attributes':_0x7dec9d['attributes'],'include':_0x7dec9d[_0x99bf('0x1c')]?_[_0x99bf('0x1d')](_0x7dec9d[_0x99bf('0x1c')],function(_0x2f553f){return{'model':db[_0x2f553f[_0x99bf('0x1e')]],'as':_0x2f553f['as'],'attributes':_0x2f553f['attributes']};}):[]};}):[]};}):[]:[]})[_0x99bf('0xa')](function(_0x569fd6){logger[_0x99bf('0xb')](_0x99bf('0x21'),_0x3612fd);logger['debug'](_0x99bf('0x21'),_0x3612fd,JSON[_0x99bf('0xe')](_0x569fd6));_0x3e6c07(_0x569fd6);})[_0x99bf('0x14')](function(_0x26ec33){logger[_0x99bf('0xf')](_0x99bf('0x21'),_0x26ec33[_0x99bf('0x12')],_0x3612fd);_0x397bcc(_0x3ac92b['error'](0x1f4,_0x26ec33[_0x99bf('0x12')]));});});};
\ No newline at end of file
index c073917..763bd1c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9148=['update','destroy','multer','path','fs-extra','../../components/auth/service','../../config/environment','index','get','/:id','isAuthenticated','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','/:id/tags','post','create','setTags','put'];(function(_0x5f1391,_0x19c132){var _0x50ebe3=function(_0x3d00a3){while(--_0x3d00a3){_0x5f1391['push'](_0x5f1391['shift']());}};_0x50ebe3(++_0x19c132);}(_0x9148,0x162));var _0x8914=function(_0x367585,_0x2271c6){_0x367585=_0x367585-0x0;var _0x690365=_0x9148[_0x367585];return _0x690365;};'use strict';var multer=require(_0x8914('0x0'));var util=require('util');var path=require(_0x8914('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0x8914('0x2'));var auth=require(_0x8914('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0x8914('0x4'));var controller=require('./intFreshdeskConfiguration.controller');router['get']('/',auth['isAuthenticated'](),controller[_0x8914('0x5')]);router[_0x8914('0x6')](_0x8914('0x7'),auth[_0x8914('0x8')](),controller[_0x8914('0x9')]);router[_0x8914('0x6')](_0x8914('0xa'),auth['isAuthenticated'](),controller[_0x8914('0xb')]);router['get'](_0x8914('0xc'),auth['isAuthenticated'](),controller[_0x8914('0xd')]);router[_0x8914('0x6')](_0x8914('0xe'),auth[_0x8914('0x8')](),controller['getDescriptions']);router['get'](_0x8914('0xf'),auth[_0x8914('0x8')](),controller['getTags']);router[_0x8914('0x10')]('/',auth[_0x8914('0x8')](),controller[_0x8914('0x11')]);router[_0x8914('0x10')]('/:id/tags',auth[_0x8914('0x8')](),controller[_0x8914('0x12')]);router[_0x8914('0x13')]('/:id',auth[_0x8914('0x8')](),controller[_0x8914('0x14')]);router['delete'](_0x8914('0x7'),auth[_0x8914('0x8')](),controller[_0x8914('0x15')]);module['exports']=router;
\ No newline at end of file
+var _0x25f8=['/:id','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','/:id/tags','post','create','setTags','update','delete','destroy','exports','multer','util','path','express','Router','../../components/auth/service','../../config/environment','./intFreshdeskConfiguration.controller','isAuthenticated','index','get'];(function(_0x3d4cf4,_0x2e490c){var _0x101a7b=function(_0x4cd544){while(--_0x4cd544){_0x3d4cf4['push'](_0x3d4cf4['shift']());}};_0x101a7b(++_0x2e490c);}(_0x25f8,0xf9));var _0x825f=function(_0x1cc8fe,_0x105328){_0x1cc8fe=_0x1cc8fe-0x0;var _0x230054=_0x25f8[_0x1cc8fe];return _0x230054;};'use strict';var multer=require(_0x825f('0x0'));var util=require(_0x825f('0x1'));var path=require(_0x825f('0x2'));var timeout=require('connect-timeout');var express=require(_0x825f('0x3'));var router=express[_0x825f('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x825f('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x825f('0x6'));var controller=require(_0x825f('0x7'));router['get']('/',auth[_0x825f('0x8')](),controller[_0x825f('0x9')]);router[_0x825f('0xa')](_0x825f('0xb'),auth[_0x825f('0x8')](),controller['show']);router[_0x825f('0xa')](_0x825f('0xc'),auth[_0x825f('0x8')](),controller[_0x825f('0xd')]);router[_0x825f('0xa')](_0x825f('0xe'),auth[_0x825f('0x8')](),controller[_0x825f('0xf')]);router[_0x825f('0xa')](_0x825f('0x10'),auth['isAuthenticated'](),controller[_0x825f('0x11')]);router[_0x825f('0xa')](_0x825f('0x12'),auth[_0x825f('0x8')](),controller['getTags']);router[_0x825f('0x13')]('/',auth[_0x825f('0x8')](),controller[_0x825f('0x14')]);router['post'](_0x825f('0x12'),auth[_0x825f('0x8')](),controller[_0x825f('0x15')]);router['put'](_0x825f('0xb'),auth[_0x825f('0x8')](),controller[_0x825f('0x16')]);router[_0x825f('0x17')](_0x825f('0xb'),auth['isAuthenticated'](),controller[_0x825f('0x18')]);module[_0x825f('0x19')]=router;
\ No newline at end of file
index 0a2fcb6..377bb42 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa706=['sequelize','exports','STRING'];(function(_0x18a843,_0x2742a6){var _0x1bc81e=function(_0x5b46ea){while(--_0x5b46ea){_0x18a843['push'](_0x18a843['shift']());}};_0x1bc81e(++_0x2742a6);}(_0xa706,0x99));var _0x6a70=function(_0xdaacfa,_0x433efa){_0xdaacfa=_0xdaacfa-0x0;var _0x3aab19=_0xa706[_0xdaacfa];return _0x3aab19;};'use strict';var Sequelize=require(_0x6a70('0x0'));module[_0x6a70('0x1')]={'name':{'type':Sequelize[_0x6a70('0x2')]},'description':{'type':Sequelize[_0x6a70('0x2')]}};
\ No newline at end of file
+var _0xf6cd=['sequelize','STRING'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xf6cd,0xd8));var _0xdf6c=function(_0x3f758f,_0x302451){_0x3f758f=_0x3f758f-0x0;var _0x26e4ae=_0xf6cd[_0x3f758f];return _0x26e4ae;};'use strict';var Sequelize=require(_0xdf6c('0x0'));module['exports']={'name':{'type':Sequelize[_0xdf6c('0x1')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 711b883..f729803 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea0c=['../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','limit','count','offset','Content-Range','apply','reject','save','then','destroy','end','error','stack','name','send','index','map','FreshdeskConfiguration','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','include','find','create','body','update','params','getFields','FreshdeskField','order','hasOwnProperty','getSubjects','getDescriptions','findOne','getTags','Tag','setTags','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','../../components/auth/service'];(function(_0x23f28b,_0x838493){var _0x188683=function(_0x3f137e){while(--_0x3f137e){_0x23f28b['push'](_0x23f28b['shift']());}};_0x188683(++_0x838493);}(_0xea0c,0x142));var _0xcea0=function(_0x5d2f52,_0x56463d){_0x5d2f52=_0x5d2f52-0x0;var _0xf1022a=_0xea0c[_0x5d2f52];return _0xf1022a;};'use strict';var emlformat=require(_0xcea0('0x0'));var rimraf=require(_0xcea0('0x1'));var zipdir=require(_0xcea0('0x2'));var jsonpatch=require(_0xcea0('0x3'));var rp=require('request-promise');var moment=require(_0xcea0('0x4'));var BPromise=require(_0xcea0('0x5'));var Mustache=require(_0xcea0('0x6'));var util=require(_0xcea0('0x7'));var path=require(_0xcea0('0x8'));var sox=require(_0xcea0('0x9'));var csv=require(_0xcea0('0xa'));var ejs=require(_0xcea0('0xb'));var fs=require('fs');var fs_extra=require(_0xcea0('0xc'));var _=require(_0xcea0('0xd'));var squel=require(_0xcea0('0xe'));var crypto=require(_0xcea0('0xf'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xcea0('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xcea0('0x11'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xcea0('0x12'));var logger=require(_0xcea0('0x13'))(_0xcea0('0x14'));var utils=require(_0xcea0('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xcea0('0x16'));var db=require(_0xcea0('0x17'))['db'];function respondWithStatusCode(_0x48db6b,_0x52de85){_0x52de85=_0x52de85||0xcc;return function(_0x5dffaf){if(_0x5dffaf){return _0x48db6b[_0xcea0('0x18')](_0x52de85);}return _0x48db6b[_0xcea0('0x19')](_0x52de85)['end']();};}function respondWithResult(_0x449607,_0x556f1c){_0x556f1c=_0x556f1c||0xc8;return function(_0x2c5f9b){if(_0x2c5f9b){return _0x449607['status'](_0x556f1c)[_0xcea0('0x1a')](_0x2c5f9b);}};}function respondWithFilteredResult(_0x170bae,_0x5909c2){return function(_0x1d689d){if(_0x1d689d){var _0x17b8a5=typeof _0x5909c2['offset']===_0xcea0('0x1b')&&typeof _0x5909c2[_0xcea0('0x1c')]===_0xcea0('0x1b');var _0x825b12=_0x1d689d[_0xcea0('0x1d')];var _0x1c33a9=_0x17b8a5?0x0:_0x5909c2[_0xcea0('0x1e')];var _0x3093b2=_0x17b8a5?_0x1d689d[_0xcea0('0x1d')]:_0x5909c2[_0xcea0('0x1e')]+_0x5909c2[_0xcea0('0x1c')];var _0x2c588f;if(_0x3093b2>=_0x825b12){_0x3093b2=_0x825b12;_0x2c588f=0xc8;}else{_0x2c588f=0xce;}_0x170bae['status'](_0x2c588f);return _0x170bae['set'](_0xcea0('0x1f'),_0x1c33a9+'-'+_0x3093b2+'/'+_0x825b12)[_0xcea0('0x1a')](_0x1d689d);}return null;};}function patchUpdates(_0x243217){return function(_0x382215){try{jsonpatch[_0xcea0('0x20')](_0x382215,_0x243217,!![]);}catch(_0x1ec44b){return BPromise[_0xcea0('0x21')](_0x1ec44b);}return _0x382215[_0xcea0('0x22')]();};}function saveUpdates(_0x6eb8,_0x364589){return function(_0x5704dc){if(_0x5704dc){return _0x5704dc['update'](_0x6eb8)[_0xcea0('0x23')](function(_0x56630a){return _0x56630a;});}return null;};}function removeEntity(_0x3bd6f6,_0x4b20b1){return function(_0x1e24bd){if(_0x1e24bd){return _0x1e24bd[_0xcea0('0x24')]()[_0xcea0('0x23')](function(){_0x3bd6f6[_0xcea0('0x19')](0xcc)[_0xcea0('0x25')]();});}};}function handleEntityNotFound(_0xc0a84f,_0x3f1b65){return function(_0x14aa3b){if(!_0x14aa3b){_0xc0a84f[_0xcea0('0x18')](0x194);}return _0x14aa3b;};}function handleError(_0x97b913,_0x22f0c1){_0x22f0c1=_0x22f0c1||0x1f4;return function(_0x2a5f7e){logger[_0xcea0('0x26')](_0x2a5f7e[_0xcea0('0x27')]);if(_0x2a5f7e[_0xcea0('0x28')]){delete _0x2a5f7e['name'];}_0x97b913['status'](_0x22f0c1)[_0xcea0('0x29')](_0x2a5f7e);};}exports[_0xcea0('0x2a')]=function(_0xca6bfe,_0x48466a){var _0x13a3b4={},_0x5dbfc2={},_0x5e7611={'count':0x0,'rows':[]};var _0xfd90b1=_[_0xcea0('0x2b')](db[_0xcea0('0x2c')][_0xcea0('0x2d')],function(_0x6e301){return{'name':_0x6e301[_0xcea0('0x2e')],'type':_0x6e301[_0xcea0('0x2f')][_0xcea0('0x30')]};});_0x5dbfc2[_0xcea0('0x31')]=_[_0xcea0('0x2b')](_0xfd90b1,_0xcea0('0x28'));_0x5dbfc2[_0xcea0('0x32')]=_[_0xcea0('0x33')](_0xca6bfe[_0xcea0('0x32')]);_0x5dbfc2[_0xcea0('0x34')]=_[_0xcea0('0x35')](_0x5dbfc2['model'],_0x5dbfc2[_0xcea0('0x32')]);_0x13a3b4['attributes']=_[_0xcea0('0x35')](_0x5dbfc2[_0xcea0('0x31')],qs['fields'](_0xca6bfe[_0xcea0('0x32')][_0xcea0('0x36')]));_0x13a3b4['attributes']=_0x13a3b4[_0xcea0('0x37')][_0xcea0('0x38')]?_0x13a3b4[_0xcea0('0x37')]:_0x5dbfc2[_0xcea0('0x31')];if(!_0xca6bfe[_0xcea0('0x32')]['hasOwnProperty'](_0xcea0('0x39'))){_0x13a3b4[_0xcea0('0x1c')]=qs[_0xcea0('0x1c')](_0xca6bfe['query'][_0xcea0('0x1c')]);_0x13a3b4[_0xcea0('0x1e')]=qs[_0xcea0('0x1e')](_0xca6bfe[_0xcea0('0x32')]['offset']);}_0x13a3b4['order']=qs[_0xcea0('0x3a')](_0xca6bfe['query'][_0xcea0('0x3a')]);_0x13a3b4[_0xcea0('0x3b')]=qs[_0xcea0('0x34')](_[_0xcea0('0x3c')](_0xca6bfe[_0xcea0('0x32')],_0x5dbfc2[_0xcea0('0x34')]),_0xfd90b1);if(_0xca6bfe[_0xcea0('0x32')][_0xcea0('0x3d')]){_0x13a3b4[_0xcea0('0x3b')]=_[_0xcea0('0x3e')](_0x13a3b4[_0xcea0('0x3b')],{'$or':_[_0xcea0('0x2b')](_0xfd90b1,function(_0x23131f){if(_0x23131f[_0xcea0('0x2f')]!==_0xcea0('0x3f')){var _0x3402f9={};_0x3402f9[_0x23131f['name']]={'$like':'%'+_0xca6bfe[_0xcea0('0x32')]['filter']+'%'};return _0x3402f9;}})});}_0x13a3b4=_[_0xcea0('0x3e')]({},_0x13a3b4,_0xca6bfe[_0xcea0('0x40')]);var _0x67091e={'where':_0x13a3b4['where']};return db[_0xcea0('0x2c')][_0xcea0('0x1d')](_0x67091e)[_0xcea0('0x23')](function(_0x296d5d){_0x5e7611[_0xcea0('0x1d')]=_0x296d5d;if(_0xca6bfe[_0xcea0('0x32')][_0xcea0('0x41')]){_0x13a3b4['include']=[{'all':!![]}];}return db[_0xcea0('0x2c')][_0xcea0('0x42')](_0x13a3b4);})['then'](function(_0x534333){_0x5e7611[_0xcea0('0x43')]=_0x534333;return _0x5e7611;})[_0xcea0('0x23')](respondWithFilteredResult(_0x48466a,_0x13a3b4))[_0xcea0('0x44')](handleError(_0x48466a,null));};exports['show']=function(_0x5a63ce,_0x370f7d){var _0x761d5c={'raw':![],'where':{'id':_0x5a63ce['params']['id']}},_0x3dbf20={};_0x3dbf20[_0xcea0('0x31')]=_[_0xcea0('0x33')](db[_0xcea0('0x2c')][_0xcea0('0x2d')]);_0x3dbf20[_0xcea0('0x32')]=_[_0xcea0('0x33')](_0x5a63ce[_0xcea0('0x32')]);_0x3dbf20['filters']=_[_0xcea0('0x35')](_0x3dbf20[_0xcea0('0x31')],_0x3dbf20[_0xcea0('0x32')]);_0x761d5c[_0xcea0('0x37')]=_[_0xcea0('0x35')](_0x3dbf20[_0xcea0('0x31')],qs[_0xcea0('0x36')](_0x5a63ce['query']['fields']));_0x761d5c[_0xcea0('0x37')]=_0x761d5c[_0xcea0('0x37')][_0xcea0('0x38')]?_0x761d5c[_0xcea0('0x37')]:_0x3dbf20[_0xcea0('0x31')];if(_0x5a63ce['query'][_0xcea0('0x41')]){_0x761d5c[_0xcea0('0x45')]=[{'all':!![]}];}_0x761d5c=_[_0xcea0('0x3e')]({},_0x761d5c,_0x5a63ce[_0xcea0('0x40')]);return db['FreshdeskConfiguration'][_0xcea0('0x46')](_0x761d5c)[_0xcea0('0x23')](handleEntityNotFound(_0x370f7d,null))[_0xcea0('0x23')](respondWithResult(_0x370f7d,null))['catch'](handleError(_0x370f7d,null));};exports[_0xcea0('0x47')]=function(_0x19874c,_0x443c10){return db[_0xcea0('0x2c')]['create'](_0x19874c[_0xcea0('0x48')],{})['then'](respondWithResult(_0x443c10,0xc9))['catch'](handleError(_0x443c10,null));};exports[_0xcea0('0x49')]=function(_0x378918,_0x400554){if(_0x378918[_0xcea0('0x48')]['id']){delete _0x378918[_0xcea0('0x48')]['id'];}return db['FreshdeskConfiguration'][_0xcea0('0x46')]({'where':{'id':_0x378918[_0xcea0('0x4a')]['id']}})[_0xcea0('0x23')](handleEntityNotFound(_0x400554,null))[_0xcea0('0x23')](saveUpdates(_0x378918[_0xcea0('0x48')],null))['then'](respondWithResult(_0x400554,null))[_0xcea0('0x44')](handleError(_0x400554,null));};exports[_0xcea0('0x24')]=function(_0x334424,_0x3035bf){return db['FreshdeskConfiguration'][_0xcea0('0x46')]({'where':{'id':_0x334424['params']['id']}})[_0xcea0('0x23')](handleEntityNotFound(_0x3035bf,null))[_0xcea0('0x23')](removeEntity(_0x3035bf,null))['catch'](handleError(_0x3035bf,null));};exports[_0xcea0('0x4b')]=function(_0xd61439,_0xfc47d0,_0x1c0bb5){var _0x4061a5={};var _0x10e9ef={};var _0x2ea49b;var _0x1b8c25;return db[_0xcea0('0x2c')]['findOne']({'where':{'id':_0xd61439['params']['id']}})['then'](handleEntityNotFound(_0xfc47d0,null))['then'](function(_0x3b60fa){if(_0x3b60fa){_0x2ea49b=_0x3b60fa;_0x10e9ef[_0xcea0('0x31')]=_[_0xcea0('0x33')](db[_0xcea0('0x4c')][_0xcea0('0x2d')]);_0x10e9ef[_0xcea0('0x32')]=_['keys'](_0xd61439[_0xcea0('0x32')]);_0x10e9ef['filters']=_[_0xcea0('0x35')](_0x10e9ef[_0xcea0('0x31')],_0x10e9ef[_0xcea0('0x32')]);_0x4061a5['attributes']=_['intersection'](_0x10e9ef[_0xcea0('0x31')],qs[_0xcea0('0x36')](_0xd61439[_0xcea0('0x32')]['fields']));_0x4061a5['attributes']=_0x4061a5[_0xcea0('0x37')][_0xcea0('0x38')]?_0x4061a5[_0xcea0('0x37')]:_0x10e9ef[_0xcea0('0x31')];_0x4061a5[_0xcea0('0x4d')]=qs[_0xcea0('0x3a')](_0xd61439[_0xcea0('0x32')][_0xcea0('0x3a')]);_0x4061a5[_0xcea0('0x3b')]=qs[_0xcea0('0x34')](_['pick'](_0xd61439[_0xcea0('0x32')],_0x10e9ef[_0xcea0('0x34')]));if(_0xd61439[_0xcea0('0x32')][_0xcea0('0x3d')]){_0x4061a5[_0xcea0('0x3b')]=_[_0xcea0('0x3e')](_0x4061a5[_0xcea0('0x3b')],{'$or':_['map'](_0x4061a5['attributes'],function(_0x3cec30){var _0x3e7125={};_0x3e7125[_0x3cec30]={'$like':'%'+_0xd61439[_0xcea0('0x32')][_0xcea0('0x3d')]+'%'};return _0x3e7125;})});}_0x4061a5=_[_0xcea0('0x3e')]({},_0x4061a5,_0xd61439[_0xcea0('0x40')]);return _0x2ea49b[_0xcea0('0x4b')](_0x4061a5);}})['then'](function(_0x125aea){if(_0x125aea){_0x1b8c25=_0x125aea['length'];if(!_0xd61439[_0xcea0('0x32')][_0xcea0('0x4e')](_0xcea0('0x39'))){_0x4061a5[_0xcea0('0x1c')]=qs['limit'](_0xd61439[_0xcea0('0x32')][_0xcea0('0x1c')]);_0x4061a5[_0xcea0('0x1e')]=qs[_0xcea0('0x1e')](_0xd61439[_0xcea0('0x32')][_0xcea0('0x1e')]);}return _0x2ea49b[_0xcea0('0x4b')](_0x4061a5);}})[_0xcea0('0x23')](function(_0x1a8d14){if(_0x1a8d14){return _0x1a8d14?{'count':_0x1b8c25,'rows':_0x1a8d14}:null;}})[_0xcea0('0x23')](respondWithResult(_0xfc47d0,null))[_0xcea0('0x44')](handleError(_0xfc47d0,null));};exports[_0xcea0('0x4f')]=function(_0x271604,_0x4ff18e,_0x1deeb8){var _0x428157={};var _0x16534f={};var _0x3d6a06;var _0xdf290d;return db[_0xcea0('0x2c')]['findOne']({'where':{'id':_0x271604[_0xcea0('0x4a')]['id']}})[_0xcea0('0x23')](handleEntityNotFound(_0x4ff18e,null))[_0xcea0('0x23')](function(_0x45a85f){if(_0x45a85f){_0x3d6a06=_0x45a85f;_0x16534f[_0xcea0('0x31')]=_[_0xcea0('0x33')](db[_0xcea0('0x4c')][_0xcea0('0x2d')]);_0x16534f[_0xcea0('0x32')]=_['keys'](_0x271604['query']);_0x16534f[_0xcea0('0x34')]=_['intersection'](_0x16534f['model'],_0x16534f[_0xcea0('0x32')]);_0x428157[_0xcea0('0x37')]=_[_0xcea0('0x35')](_0x16534f[_0xcea0('0x31')],qs[_0xcea0('0x36')](_0x271604[_0xcea0('0x32')][_0xcea0('0x36')]));_0x428157[_0xcea0('0x37')]=_0x428157[_0xcea0('0x37')][_0xcea0('0x38')]?_0x428157['attributes']:_0x16534f[_0xcea0('0x31')];_0x428157[_0xcea0('0x4d')]=qs[_0xcea0('0x3a')](_0x271604[_0xcea0('0x32')][_0xcea0('0x3a')]);_0x428157[_0xcea0('0x3b')]=qs[_0xcea0('0x34')](_[_0xcea0('0x3c')](_0x271604[_0xcea0('0x32')],_0x16534f['filters']));if(_0x271604[_0xcea0('0x32')][_0xcea0('0x3d')]){_0x428157['where']=_['merge'](_0x428157[_0xcea0('0x3b')],{'$or':_['map'](_0x428157[_0xcea0('0x37')],function(_0xe990a2){var _0x2c1189={};_0x2c1189[_0xe990a2]={'$like':'%'+_0x271604[_0xcea0('0x32')]['filter']+'%'};return _0x2c1189;})});}_0x428157=_['merge']({},_0x428157,_0x271604[_0xcea0('0x40')]);return _0x3d6a06['getSubjects'](_0x428157);}})['then'](function(_0x5be8ab){if(_0x5be8ab){_0xdf290d=_0x5be8ab['length'];if(!_0x271604[_0xcea0('0x32')][_0xcea0('0x4e')](_0xcea0('0x39'))){_0x428157[_0xcea0('0x1c')]=qs[_0xcea0('0x1c')](_0x271604[_0xcea0('0x32')][_0xcea0('0x1c')]);_0x428157[_0xcea0('0x1e')]=qs[_0xcea0('0x1e')](_0x271604[_0xcea0('0x32')]['offset']);}return _0x3d6a06[_0xcea0('0x4f')](_0x428157);}})['then'](function(_0x209c9a){if(_0x209c9a){return _0x209c9a?{'count':_0xdf290d,'rows':_0x209c9a}:null;}})[_0xcea0('0x23')](respondWithResult(_0x4ff18e,null))['catch'](handleError(_0x4ff18e,null));};exports[_0xcea0('0x50')]=function(_0x5ccfa4,_0x3ba7db,_0x2a83f4){var _0x4a6bfd={};var _0x56dff1={};var _0x181b1b;var _0x4f1b61;return db[_0xcea0('0x2c')][_0xcea0('0x51')]({'where':{'id':_0x5ccfa4[_0xcea0('0x4a')]['id']}})['then'](handleEntityNotFound(_0x3ba7db,null))[_0xcea0('0x23')](function(_0x4c6cd3){if(_0x4c6cd3){_0x181b1b=_0x4c6cd3;_0x56dff1[_0xcea0('0x31')]=_[_0xcea0('0x33')](db[_0xcea0('0x4c')]['rawAttributes']);_0x56dff1[_0xcea0('0x32')]=_[_0xcea0('0x33')](_0x5ccfa4[_0xcea0('0x32')]);_0x56dff1['filters']=_['intersection'](_0x56dff1[_0xcea0('0x31')],_0x56dff1[_0xcea0('0x32')]);_0x4a6bfd[_0xcea0('0x37')]=_[_0xcea0('0x35')](_0x56dff1[_0xcea0('0x31')],qs[_0xcea0('0x36')](_0x5ccfa4[_0xcea0('0x32')][_0xcea0('0x36')]));_0x4a6bfd[_0xcea0('0x37')]=_0x4a6bfd['attributes'][_0xcea0('0x38')]?_0x4a6bfd[_0xcea0('0x37')]:_0x56dff1['model'];_0x4a6bfd[_0xcea0('0x4d')]=qs[_0xcea0('0x3a')](_0x5ccfa4[_0xcea0('0x32')]['sort']);_0x4a6bfd['where']=qs[_0xcea0('0x34')](_['pick'](_0x5ccfa4['query'],_0x56dff1[_0xcea0('0x34')]));if(_0x5ccfa4[_0xcea0('0x32')][_0xcea0('0x3d')]){_0x4a6bfd['where']=_['merge'](_0x4a6bfd[_0xcea0('0x3b')],{'$or':_[_0xcea0('0x2b')](_0x4a6bfd[_0xcea0('0x37')],function(_0x1fe2f9){var _0x388886={};_0x388886[_0x1fe2f9]={'$like':'%'+_0x5ccfa4[_0xcea0('0x32')][_0xcea0('0x3d')]+'%'};return _0x388886;})});}_0x4a6bfd=_[_0xcea0('0x3e')]({},_0x4a6bfd,_0x5ccfa4['options']);return _0x181b1b[_0xcea0('0x50')](_0x4a6bfd);}})[_0xcea0('0x23')](function(_0x8019a9){if(_0x8019a9){_0x4f1b61=_0x8019a9[_0xcea0('0x38')];if(!_0x5ccfa4[_0xcea0('0x32')][_0xcea0('0x4e')]('nolimit')){_0x4a6bfd[_0xcea0('0x1c')]=qs[_0xcea0('0x1c')](_0x5ccfa4[_0xcea0('0x32')][_0xcea0('0x1c')]);_0x4a6bfd[_0xcea0('0x1e')]=qs[_0xcea0('0x1e')](_0x5ccfa4[_0xcea0('0x32')][_0xcea0('0x1e')]);}return _0x181b1b[_0xcea0('0x50')](_0x4a6bfd);}})['then'](function(_0x40f113){if(_0x40f113){return _0x40f113?{'count':_0x4f1b61,'rows':_0x40f113}:null;}})[_0xcea0('0x23')](respondWithResult(_0x3ba7db,null))[_0xcea0('0x44')](handleError(_0x3ba7db,null));};exports[_0xcea0('0x52')]=function(_0x57baf2,_0xe31b67,_0x5db94a){var _0x1f34e2={};var _0x3e50aa={};var _0x1bb120;var _0x27a0b9;return db[_0xcea0('0x2c')][_0xcea0('0x51')]({'where':{'id':_0x57baf2[_0xcea0('0x4a')]['id']}})['then'](handleEntityNotFound(_0xe31b67,null))[_0xcea0('0x23')](function(_0x87b747){if(_0x87b747){_0x1bb120=_0x87b747;_0x3e50aa[_0xcea0('0x31')]=_[_0xcea0('0x33')](db[_0xcea0('0x53')][_0xcea0('0x2d')]);_0x3e50aa[_0xcea0('0x32')]=_['keys'](_0x57baf2['query']);_0x3e50aa['filters']=_[_0xcea0('0x35')](_0x3e50aa[_0xcea0('0x31')],_0x3e50aa[_0xcea0('0x32')]);_0x1f34e2[_0xcea0('0x37')]=_[_0xcea0('0x35')](_0x3e50aa[_0xcea0('0x31')],qs[_0xcea0('0x36')](_0x57baf2[_0xcea0('0x32')][_0xcea0('0x36')]));_0x1f34e2[_0xcea0('0x37')]=_0x1f34e2[_0xcea0('0x37')]['length']?_0x1f34e2[_0xcea0('0x37')]:_0x3e50aa[_0xcea0('0x31')];_0x1f34e2[_0xcea0('0x4d')]=qs[_0xcea0('0x3a')](_0x57baf2[_0xcea0('0x32')][_0xcea0('0x3a')]);_0x1f34e2[_0xcea0('0x3b')]=qs[_0xcea0('0x34')](_[_0xcea0('0x3c')](_0x57baf2[_0xcea0('0x32')],_0x3e50aa[_0xcea0('0x34')]));if(_0x57baf2['query'][_0xcea0('0x3d')]){_0x1f34e2[_0xcea0('0x3b')]=_[_0xcea0('0x3e')](_0x1f34e2[_0xcea0('0x3b')],{'$or':_[_0xcea0('0x2b')](_0x1f34e2['attributes'],function(_0x56e92b){var _0x13bd49={};_0x13bd49[_0x56e92b]={'$like':'%'+_0x57baf2[_0xcea0('0x32')][_0xcea0('0x3d')]+'%'};return _0x13bd49;})});}_0x1f34e2=_[_0xcea0('0x3e')]({},_0x1f34e2,_0x57baf2['options']);return _0x1bb120[_0xcea0('0x52')](_0x1f34e2);}})[_0xcea0('0x23')](function(_0x2c06df){if(_0x2c06df){_0x27a0b9=_0x2c06df[_0xcea0('0x38')];if(!_0x57baf2[_0xcea0('0x32')]['hasOwnProperty'](_0xcea0('0x39'))){_0x1f34e2[_0xcea0('0x1c')]=qs[_0xcea0('0x1c')](_0x57baf2['query'][_0xcea0('0x1c')]);_0x1f34e2[_0xcea0('0x1e')]=qs[_0xcea0('0x1e')](_0x57baf2[_0xcea0('0x32')][_0xcea0('0x1e')]);}return _0x1bb120[_0xcea0('0x52')](_0x1f34e2);}})[_0xcea0('0x23')](function(_0x58b5b5){if(_0x58b5b5){return _0x58b5b5?{'count':_0x27a0b9,'rows':_0x58b5b5}:null;}})[_0xcea0('0x23')](respondWithResult(_0xe31b67,null))[_0xcea0('0x44')](handleError(_0xe31b67,null));};exports[_0xcea0('0x54')]=function(_0x34cfce,_0x4146b5,_0x145a0){if(_0x34cfce[_0xcea0('0x48')]['id']){delete _0x34cfce[_0xcea0('0x48')]['id'];}return db[_0xcea0('0x2c')][_0xcea0('0x51')]({'where':{'id':_0x34cfce['params']['id']}})['then'](handleEntityNotFound(_0x4146b5,null))[_0xcea0('0x23')](function(_0x191911){if(_0x191911){return _0x191911['setTags'](_0x34cfce[_0xcea0('0x48')]['ids']||[]);}return null;})['then'](respondWithResult(_0x4146b5,null))[_0xcea0('0x44')](handleError(_0x4146b5,null));};
\ No newline at end of file
+var _0x1a81=['fields','length','hasOwnProperty','sort','pick','filter','where','map','VIRTUAL','merge','options','FreshdeskConfiguration','includeAll','findAll','rows','params','include','find','catch','create','body','getFields','findOne','FreshdeskField','nolimit','getSubjects','getDescriptions','getTags','order','setTags','ids','zip-dir','fast-json-patch','bluebird','mustache','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','then','destroy','error','stack','name','send','index','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection'];(function(_0x24403d,_0x94ebf1){var _0x3fabf3=function(_0x39b1a9){while(--_0x39b1a9){_0x24403d['push'](_0x24403d['shift']());}};_0x3fabf3(++_0x94ebf1);}(_0x1a81,0x1b4));var _0x11a8=function(_0x1dd147,_0x12f4c8){_0x1dd147=_0x1dd147-0x0;var _0x57e75c=_0x1a81[_0x1dd147];return _0x57e75c;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x11a8('0x0'));var jsonpatch=require(_0x11a8('0x1'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x11a8('0x2'));var Mustache=require(_0x11a8('0x3'));var util=require('util');var path=require(_0x11a8('0x4'));var sox=require(_0x11a8('0x5'));var csv=require('to-csv');var ejs=require(_0x11a8('0x6'));var fs=require('fs');var fs_extra=require(_0x11a8('0x7'));var _=require(_0x11a8('0x8'));var squel=require(_0x11a8('0x9'));var crypto=require(_0x11a8('0xa'));var jsforce=require(_0x11a8('0xb'));var deskjs=require(_0x11a8('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x11a8('0xd'));var Redis=require('ioredis');var authService=require(_0x11a8('0xe'));var qs=require(_0x11a8('0xf'));var as=require(_0x11a8('0x10'));var hardwareService=require(_0x11a8('0x11'));var logger=require(_0x11a8('0x12'))(_0x11a8('0x13'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x11a8('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xb0da96,_0x1c755c){_0x1c755c=_0x1c755c||0xcc;return function(_0x351bfd){if(_0x351bfd){return _0xb0da96[_0x11a8('0x15')](_0x1c755c);}return _0xb0da96[_0x11a8('0x16')](_0x1c755c)[_0x11a8('0x17')]();};}function respondWithResult(_0x26776d,_0x5e50c3){_0x5e50c3=_0x5e50c3||0xc8;return function(_0x4011db){if(_0x4011db){return _0x26776d[_0x11a8('0x16')](_0x5e50c3)[_0x11a8('0x18')](_0x4011db);}};}function respondWithFilteredResult(_0x4e31a4,_0xf62865){return function(_0x67ba29){if(_0x67ba29){var _0x402947=typeof _0xf62865[_0x11a8('0x19')]===_0x11a8('0x1a')&&typeof _0xf62865[_0x11a8('0x1b')]===_0x11a8('0x1a');var _0x15d18c=_0x67ba29[_0x11a8('0x1c')];var _0xfa84d2=_0x402947?0x0:_0xf62865[_0x11a8('0x19')];var _0x4754a5=_0x402947?_0x67ba29[_0x11a8('0x1c')]:_0xf62865['offset']+_0xf62865[_0x11a8('0x1b')];var _0x45e13e;if(_0x4754a5>=_0x15d18c){_0x4754a5=_0x15d18c;_0x45e13e=0xc8;}else{_0x45e13e=0xce;}_0x4e31a4[_0x11a8('0x16')](_0x45e13e);return _0x4e31a4[_0x11a8('0x1d')]('Content-Range',_0xfa84d2+'-'+_0x4754a5+'/'+_0x15d18c)[_0x11a8('0x18')](_0x67ba29);}return null;};}function patchUpdates(_0x4becc9){return function(_0x1cd7ce){try{jsonpatch[_0x11a8('0x1e')](_0x1cd7ce,_0x4becc9,!![]);}catch(_0x4f11e8){return BPromise[_0x11a8('0x1f')](_0x4f11e8);}return _0x1cd7ce[_0x11a8('0x20')]();};}function saveUpdates(_0x176c34,_0x5defe7){return function(_0xb85a03){if(_0xb85a03){return _0xb85a03['update'](_0x176c34)[_0x11a8('0x21')](function(_0x3a5427){return _0x3a5427;});}return null;};}function removeEntity(_0xd75979,_0x312ad6){return function(_0x5c0856){if(_0x5c0856){return _0x5c0856[_0x11a8('0x22')]()[_0x11a8('0x21')](function(){_0xd75979[_0x11a8('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0x35dc4b,_0x151a5b){return function(_0x469c9f){if(!_0x469c9f){_0x35dc4b[_0x11a8('0x15')](0x194);}return _0x469c9f;};}function handleError(_0x38a9d6,_0x116d2b){_0x116d2b=_0x116d2b||0x1f4;return function(_0x32c1c4){logger[_0x11a8('0x23')](_0x32c1c4[_0x11a8('0x24')]);if(_0x32c1c4[_0x11a8('0x25')]){delete _0x32c1c4[_0x11a8('0x25')];}_0x38a9d6[_0x11a8('0x16')](_0x116d2b)[_0x11a8('0x26')](_0x32c1c4);};}exports[_0x11a8('0x27')]=function(_0x443052,_0x93f610){var _0x41e7b0={},_0x42aed={},_0x40af23={'count':0x0,'rows':[]};var _0x1c532b=_['map'](db['FreshdeskConfiguration'][_0x11a8('0x28')],function(_0x3142f7){return{'name':_0x3142f7[_0x11a8('0x29')],'type':_0x3142f7[_0x11a8('0x2a')][_0x11a8('0x2b')]};});_0x42aed[_0x11a8('0x2c')]=_['map'](_0x1c532b,_0x11a8('0x25'));_0x42aed[_0x11a8('0x2d')]=_[_0x11a8('0x2e')](_0x443052[_0x11a8('0x2d')]);_0x42aed[_0x11a8('0x2f')]=_['intersection'](_0x42aed[_0x11a8('0x2c')],_0x42aed[_0x11a8('0x2d')]);_0x41e7b0[_0x11a8('0x30')]=_[_0x11a8('0x31')](_0x42aed['model'],qs[_0x11a8('0x32')](_0x443052['query'][_0x11a8('0x32')]));_0x41e7b0[_0x11a8('0x30')]=_0x41e7b0[_0x11a8('0x30')][_0x11a8('0x33')]?_0x41e7b0[_0x11a8('0x30')]:_0x42aed['model'];if(!_0x443052[_0x11a8('0x2d')][_0x11a8('0x34')]('nolimit')){_0x41e7b0['limit']=qs['limit'](_0x443052[_0x11a8('0x2d')]['limit']);_0x41e7b0[_0x11a8('0x19')]=qs[_0x11a8('0x19')](_0x443052[_0x11a8('0x2d')][_0x11a8('0x19')]);}_0x41e7b0['order']=qs[_0x11a8('0x35')](_0x443052['query'][_0x11a8('0x35')]);_0x41e7b0['where']=qs[_0x11a8('0x2f')](_[_0x11a8('0x36')](_0x443052[_0x11a8('0x2d')],_0x42aed[_0x11a8('0x2f')]),_0x1c532b);if(_0x443052[_0x11a8('0x2d')][_0x11a8('0x37')]){_0x41e7b0[_0x11a8('0x38')]=_['merge'](_0x41e7b0[_0x11a8('0x38')],{'$or':_[_0x11a8('0x39')](_0x1c532b,function(_0x5a3f0e){if(_0x5a3f0e[_0x11a8('0x2a')]!==_0x11a8('0x3a')){var _0x2a3ddc={};_0x2a3ddc[_0x5a3f0e[_0x11a8('0x25')]]={'$like':'%'+_0x443052[_0x11a8('0x2d')]['filter']+'%'};return _0x2a3ddc;}})});}_0x41e7b0=_[_0x11a8('0x3b')]({},_0x41e7b0,_0x443052[_0x11a8('0x3c')]);var _0x4b0da9={'where':_0x41e7b0[_0x11a8('0x38')]};return db[_0x11a8('0x3d')]['count'](_0x4b0da9)[_0x11a8('0x21')](function(_0x2c1b1e){_0x40af23[_0x11a8('0x1c')]=_0x2c1b1e;if(_0x443052[_0x11a8('0x2d')][_0x11a8('0x3e')]){_0x41e7b0['include']=[{'all':!![]}];}return db[_0x11a8('0x3d')][_0x11a8('0x3f')](_0x41e7b0);})[_0x11a8('0x21')](function(_0x219cb3){_0x40af23[_0x11a8('0x40')]=_0x219cb3;return _0x40af23;})['then'](respondWithFilteredResult(_0x93f610,_0x41e7b0))['catch'](handleError(_0x93f610,null));};exports['show']=function(_0xb76518,_0x1128e7){var _0x5cc68c={'raw':![],'where':{'id':_0xb76518[_0x11a8('0x41')]['id']}},_0x4ba0d2={};_0x4ba0d2['model']=_[_0x11a8('0x2e')](db[_0x11a8('0x3d')][_0x11a8('0x28')]);_0x4ba0d2[_0x11a8('0x2d')]=_[_0x11a8('0x2e')](_0xb76518[_0x11a8('0x2d')]);_0x4ba0d2['filters']=_[_0x11a8('0x31')](_0x4ba0d2[_0x11a8('0x2c')],_0x4ba0d2['query']);_0x5cc68c[_0x11a8('0x30')]=_[_0x11a8('0x31')](_0x4ba0d2['model'],qs['fields'](_0xb76518[_0x11a8('0x2d')][_0x11a8('0x32')]));_0x5cc68c['attributes']=_0x5cc68c[_0x11a8('0x30')][_0x11a8('0x33')]?_0x5cc68c[_0x11a8('0x30')]:_0x4ba0d2[_0x11a8('0x2c')];if(_0xb76518[_0x11a8('0x2d')][_0x11a8('0x3e')]){_0x5cc68c[_0x11a8('0x42')]=[{'all':!![]}];}_0x5cc68c=_[_0x11a8('0x3b')]({},_0x5cc68c,_0xb76518[_0x11a8('0x3c')]);return db[_0x11a8('0x3d')][_0x11a8('0x43')](_0x5cc68c)['then'](handleEntityNotFound(_0x1128e7,null))[_0x11a8('0x21')](respondWithResult(_0x1128e7,null))[_0x11a8('0x44')](handleError(_0x1128e7,null));};exports[_0x11a8('0x45')]=function(_0x237bcf,_0x275ec5){return db['FreshdeskConfiguration'][_0x11a8('0x45')](_0x237bcf[_0x11a8('0x46')],{})['then'](respondWithResult(_0x275ec5,0xc9))[_0x11a8('0x44')](handleError(_0x275ec5,null));};exports['update']=function(_0x5c5c37,_0x2dc6d5){if(_0x5c5c37['body']['id']){delete _0x5c5c37[_0x11a8('0x46')]['id'];}return db[_0x11a8('0x3d')][_0x11a8('0x43')]({'where':{'id':_0x5c5c37[_0x11a8('0x41')]['id']}})[_0x11a8('0x21')](handleEntityNotFound(_0x2dc6d5,null))[_0x11a8('0x21')](saveUpdates(_0x5c5c37[_0x11a8('0x46')],null))[_0x11a8('0x21')](respondWithResult(_0x2dc6d5,null))['catch'](handleError(_0x2dc6d5,null));};exports[_0x11a8('0x22')]=function(_0x28f689,_0x40da8d){return db[_0x11a8('0x3d')]['find']({'where':{'id':_0x28f689[_0x11a8('0x41')]['id']}})[_0x11a8('0x21')](handleEntityNotFound(_0x40da8d,null))['then'](removeEntity(_0x40da8d,null))[_0x11a8('0x44')](handleError(_0x40da8d,null));};exports[_0x11a8('0x47')]=function(_0x31c6f8,_0x33b4bc,_0x39e766){var _0x5d01aa={};var _0x32040a={};var _0x569ab9;var _0x273daf;return db[_0x11a8('0x3d')][_0x11a8('0x48')]({'where':{'id':_0x31c6f8[_0x11a8('0x41')]['id']}})[_0x11a8('0x21')](handleEntityNotFound(_0x33b4bc,null))[_0x11a8('0x21')](function(_0x2be094){if(_0x2be094){_0x569ab9=_0x2be094;_0x32040a[_0x11a8('0x2c')]=_['keys'](db[_0x11a8('0x49')][_0x11a8('0x28')]);_0x32040a[_0x11a8('0x2d')]=_['keys'](_0x31c6f8[_0x11a8('0x2d')]);_0x32040a['filters']=_[_0x11a8('0x31')](_0x32040a[_0x11a8('0x2c')],_0x32040a['query']);_0x5d01aa['attributes']=_['intersection'](_0x32040a['model'],qs[_0x11a8('0x32')](_0x31c6f8[_0x11a8('0x2d')][_0x11a8('0x32')]));_0x5d01aa[_0x11a8('0x30')]=_0x5d01aa[_0x11a8('0x30')][_0x11a8('0x33')]?_0x5d01aa[_0x11a8('0x30')]:_0x32040a[_0x11a8('0x2c')];_0x5d01aa['order']=qs['sort'](_0x31c6f8[_0x11a8('0x2d')][_0x11a8('0x35')]);_0x5d01aa[_0x11a8('0x38')]=qs[_0x11a8('0x2f')](_[_0x11a8('0x36')](_0x31c6f8[_0x11a8('0x2d')],_0x32040a[_0x11a8('0x2f')]));if(_0x31c6f8['query'][_0x11a8('0x37')]){_0x5d01aa['where']=_[_0x11a8('0x3b')](_0x5d01aa[_0x11a8('0x38')],{'$or':_[_0x11a8('0x39')](_0x5d01aa[_0x11a8('0x30')],function(_0x5ad81f){var _0x60bf75={};_0x60bf75[_0x5ad81f]={'$like':'%'+_0x31c6f8[_0x11a8('0x2d')][_0x11a8('0x37')]+'%'};return _0x60bf75;})});}_0x5d01aa=_[_0x11a8('0x3b')]({},_0x5d01aa,_0x31c6f8[_0x11a8('0x3c')]);return _0x569ab9[_0x11a8('0x47')](_0x5d01aa);}})[_0x11a8('0x21')](function(_0x5e4a99){if(_0x5e4a99){_0x273daf=_0x5e4a99[_0x11a8('0x33')];if(!_0x31c6f8[_0x11a8('0x2d')][_0x11a8('0x34')](_0x11a8('0x4a'))){_0x5d01aa['limit']=qs[_0x11a8('0x1b')](_0x31c6f8['query'][_0x11a8('0x1b')]);_0x5d01aa[_0x11a8('0x19')]=qs[_0x11a8('0x19')](_0x31c6f8[_0x11a8('0x2d')][_0x11a8('0x19')]);}return _0x569ab9[_0x11a8('0x47')](_0x5d01aa);}})[_0x11a8('0x21')](function(_0x4544f0){if(_0x4544f0){return _0x4544f0?{'count':_0x273daf,'rows':_0x4544f0}:null;}})[_0x11a8('0x21')](respondWithResult(_0x33b4bc,null))[_0x11a8('0x44')](handleError(_0x33b4bc,null));};exports[_0x11a8('0x4b')]=function(_0x1c162f,_0x41a848,_0x99f520){var _0x3b9769={};var _0x3dd38d={};var _0x433df6;var _0x5adc46;return db['FreshdeskConfiguration'][_0x11a8('0x48')]({'where':{'id':_0x1c162f[_0x11a8('0x41')]['id']}})[_0x11a8('0x21')](handleEntityNotFound(_0x41a848,null))[_0x11a8('0x21')](function(_0x91c6c6){if(_0x91c6c6){_0x433df6=_0x91c6c6;_0x3dd38d[_0x11a8('0x2c')]=_[_0x11a8('0x2e')](db[_0x11a8('0x49')][_0x11a8('0x28')]);_0x3dd38d[_0x11a8('0x2d')]=_[_0x11a8('0x2e')](_0x1c162f['query']);_0x3dd38d[_0x11a8('0x2f')]=_[_0x11a8('0x31')](_0x3dd38d[_0x11a8('0x2c')],_0x3dd38d[_0x11a8('0x2d')]);_0x3b9769[_0x11a8('0x30')]=_['intersection'](_0x3dd38d[_0x11a8('0x2c')],qs[_0x11a8('0x32')](_0x1c162f[_0x11a8('0x2d')][_0x11a8('0x32')]));_0x3b9769['attributes']=_0x3b9769[_0x11a8('0x30')][_0x11a8('0x33')]?_0x3b9769['attributes']:_0x3dd38d['model'];_0x3b9769['order']=qs[_0x11a8('0x35')](_0x1c162f[_0x11a8('0x2d')][_0x11a8('0x35')]);_0x3b9769[_0x11a8('0x38')]=qs[_0x11a8('0x2f')](_[_0x11a8('0x36')](_0x1c162f[_0x11a8('0x2d')],_0x3dd38d['filters']));if(_0x1c162f[_0x11a8('0x2d')]['filter']){_0x3b9769[_0x11a8('0x38')]=_['merge'](_0x3b9769[_0x11a8('0x38')],{'$or':_[_0x11a8('0x39')](_0x3b9769[_0x11a8('0x30')],function(_0x3693d2){var _0x57784a={};_0x57784a[_0x3693d2]={'$like':'%'+_0x1c162f[_0x11a8('0x2d')][_0x11a8('0x37')]+'%'};return _0x57784a;})});}_0x3b9769=_[_0x11a8('0x3b')]({},_0x3b9769,_0x1c162f[_0x11a8('0x3c')]);return _0x433df6[_0x11a8('0x4b')](_0x3b9769);}})['then'](function(_0x102a77){if(_0x102a77){_0x5adc46=_0x102a77[_0x11a8('0x33')];if(!_0x1c162f[_0x11a8('0x2d')]['hasOwnProperty']('nolimit')){_0x3b9769[_0x11a8('0x1b')]=qs[_0x11a8('0x1b')](_0x1c162f[_0x11a8('0x2d')][_0x11a8('0x1b')]);_0x3b9769[_0x11a8('0x19')]=qs[_0x11a8('0x19')](_0x1c162f[_0x11a8('0x2d')]['offset']);}return _0x433df6[_0x11a8('0x4b')](_0x3b9769);}})[_0x11a8('0x21')](function(_0x1999b6){if(_0x1999b6){return _0x1999b6?{'count':_0x5adc46,'rows':_0x1999b6}:null;}})[_0x11a8('0x21')](respondWithResult(_0x41a848,null))['catch'](handleError(_0x41a848,null));};exports['getDescriptions']=function(_0x3e855e,_0x4a11eb,_0xc2044f){var _0x26f0a6={};var _0x2e63d5={};var _0x3eb656;var _0x1d5673;return db[_0x11a8('0x3d')][_0x11a8('0x48')]({'where':{'id':_0x3e855e[_0x11a8('0x41')]['id']}})[_0x11a8('0x21')](handleEntityNotFound(_0x4a11eb,null))[_0x11a8('0x21')](function(_0x46bb3c){if(_0x46bb3c){_0x3eb656=_0x46bb3c;_0x2e63d5[_0x11a8('0x2c')]=_['keys'](db[_0x11a8('0x49')][_0x11a8('0x28')]);_0x2e63d5[_0x11a8('0x2d')]=_[_0x11a8('0x2e')](_0x3e855e[_0x11a8('0x2d')]);_0x2e63d5[_0x11a8('0x2f')]=_[_0x11a8('0x31')](_0x2e63d5[_0x11a8('0x2c')],_0x2e63d5[_0x11a8('0x2d')]);_0x26f0a6[_0x11a8('0x30')]=_['intersection'](_0x2e63d5[_0x11a8('0x2c')],qs[_0x11a8('0x32')](_0x3e855e[_0x11a8('0x2d')][_0x11a8('0x32')]));_0x26f0a6[_0x11a8('0x30')]=_0x26f0a6['attributes'][_0x11a8('0x33')]?_0x26f0a6[_0x11a8('0x30')]:_0x2e63d5[_0x11a8('0x2c')];_0x26f0a6['order']=qs[_0x11a8('0x35')](_0x3e855e[_0x11a8('0x2d')][_0x11a8('0x35')]);_0x26f0a6[_0x11a8('0x38')]=qs[_0x11a8('0x2f')](_[_0x11a8('0x36')](_0x3e855e[_0x11a8('0x2d')],_0x2e63d5[_0x11a8('0x2f')]));if(_0x3e855e[_0x11a8('0x2d')][_0x11a8('0x37')]){_0x26f0a6['where']=_['merge'](_0x26f0a6[_0x11a8('0x38')],{'$or':_[_0x11a8('0x39')](_0x26f0a6[_0x11a8('0x30')],function(_0xe2b5b8){var _0x4d6117={};_0x4d6117[_0xe2b5b8]={'$like':'%'+_0x3e855e[_0x11a8('0x2d')][_0x11a8('0x37')]+'%'};return _0x4d6117;})});}_0x26f0a6=_[_0x11a8('0x3b')]({},_0x26f0a6,_0x3e855e[_0x11a8('0x3c')]);return _0x3eb656['getDescriptions'](_0x26f0a6);}})[_0x11a8('0x21')](function(_0x3983a1){if(_0x3983a1){_0x1d5673=_0x3983a1[_0x11a8('0x33')];if(!_0x3e855e[_0x11a8('0x2d')]['hasOwnProperty']('nolimit')){_0x26f0a6['limit']=qs[_0x11a8('0x1b')](_0x3e855e[_0x11a8('0x2d')][_0x11a8('0x1b')]);_0x26f0a6[_0x11a8('0x19')]=qs[_0x11a8('0x19')](_0x3e855e[_0x11a8('0x2d')][_0x11a8('0x19')]);}return _0x3eb656[_0x11a8('0x4c')](_0x26f0a6);}})[_0x11a8('0x21')](function(_0x151487){if(_0x151487){return _0x151487?{'count':_0x1d5673,'rows':_0x151487}:null;}})[_0x11a8('0x21')](respondWithResult(_0x4a11eb,null))['catch'](handleError(_0x4a11eb,null));};exports[_0x11a8('0x4d')]=function(_0x507457,_0x3118f9,_0x1ef8f2){var _0x214df0={};var _0x113c07={};var _0x29f7f9;var _0x597915;return db[_0x11a8('0x3d')][_0x11a8('0x48')]({'where':{'id':_0x507457[_0x11a8('0x41')]['id']}})[_0x11a8('0x21')](handleEntityNotFound(_0x3118f9,null))[_0x11a8('0x21')](function(_0x18fe1a){if(_0x18fe1a){_0x29f7f9=_0x18fe1a;_0x113c07[_0x11a8('0x2c')]=_[_0x11a8('0x2e')](db['Tag'][_0x11a8('0x28')]);_0x113c07['query']=_['keys'](_0x507457[_0x11a8('0x2d')]);_0x113c07[_0x11a8('0x2f')]=_[_0x11a8('0x31')](_0x113c07[_0x11a8('0x2c')],_0x113c07[_0x11a8('0x2d')]);_0x214df0[_0x11a8('0x30')]=_[_0x11a8('0x31')](_0x113c07[_0x11a8('0x2c')],qs['fields'](_0x507457[_0x11a8('0x2d')][_0x11a8('0x32')]));_0x214df0[_0x11a8('0x30')]=_0x214df0[_0x11a8('0x30')]['length']?_0x214df0[_0x11a8('0x30')]:_0x113c07[_0x11a8('0x2c')];_0x214df0[_0x11a8('0x4e')]=qs[_0x11a8('0x35')](_0x507457[_0x11a8('0x2d')][_0x11a8('0x35')]);_0x214df0['where']=qs[_0x11a8('0x2f')](_[_0x11a8('0x36')](_0x507457[_0x11a8('0x2d')],_0x113c07['filters']));if(_0x507457[_0x11a8('0x2d')][_0x11a8('0x37')]){_0x214df0[_0x11a8('0x38')]=_['merge'](_0x214df0['where'],{'$or':_[_0x11a8('0x39')](_0x214df0[_0x11a8('0x30')],function(_0x3292fe){var _0x40290d={};_0x40290d[_0x3292fe]={'$like':'%'+_0x507457['query'][_0x11a8('0x37')]+'%'};return _0x40290d;})});}_0x214df0=_[_0x11a8('0x3b')]({},_0x214df0,_0x507457[_0x11a8('0x3c')]);return _0x29f7f9['getTags'](_0x214df0);}})[_0x11a8('0x21')](function(_0x282a8e){if(_0x282a8e){_0x597915=_0x282a8e['length'];if(!_0x507457['query'][_0x11a8('0x34')](_0x11a8('0x4a'))){_0x214df0[_0x11a8('0x1b')]=qs[_0x11a8('0x1b')](_0x507457['query'][_0x11a8('0x1b')]);_0x214df0[_0x11a8('0x19')]=qs['offset'](_0x507457['query'][_0x11a8('0x19')]);}return _0x29f7f9[_0x11a8('0x4d')](_0x214df0);}})[_0x11a8('0x21')](function(_0x1c2e99){if(_0x1c2e99){return _0x1c2e99?{'count':_0x597915,'rows':_0x1c2e99}:null;}})[_0x11a8('0x21')](respondWithResult(_0x3118f9,null))[_0x11a8('0x44')](handleError(_0x3118f9,null));};exports[_0x11a8('0x4f')]=function(_0x1edf1e,_0x2a165b,_0x248374){if(_0x1edf1e[_0x11a8('0x46')]['id']){delete _0x1edf1e['body']['id'];}return db[_0x11a8('0x3d')][_0x11a8('0x48')]({'where':{'id':_0x1edf1e[_0x11a8('0x41')]['id']}})['then'](handleEntityNotFound(_0x2a165b,null))['then'](function(_0x4ab648){if(_0x4ab648){return _0x4ab648[_0x11a8('0x4f')](_0x1edf1e[_0x11a8('0x46')][_0x11a8('0x50')]||[]);}return null;})[_0x11a8('0x21')](respondWithResult(_0x2a165b,null))[_0x11a8('0x44')](handleError(_0x2a165b,null));};
\ No newline at end of file
index b2030fa..48fb28f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0bca=['util','api','bluebird','request-promise','path','../../config/environment','./intFreshdeskConfiguration.attributes','exports','define','FreshdeskConfiguration','int_freshdesk_configurations','lodash'];(function(_0x289305,_0x2d50b4){var _0x3e4bd8=function(_0x457c6a){while(--_0x457c6a){_0x289305['push'](_0x289305['shift']());}};_0x3e4bd8(++_0x2d50b4);}(_0x0bca,0xa7));var _0xa0bc=function(_0x382a62,_0x1baa5e){_0x382a62=_0x382a62-0x0;var _0x490a25=_0x0bca[_0x382a62];return _0x490a25;};'use strict';var _=require(_0xa0bc('0x0'));var util=require(_0xa0bc('0x1'));var logger=require('../../config/logger')(_0xa0bc('0x2'));var moment=require('moment');var BPromise=require(_0xa0bc('0x3'));var rp=require(_0xa0bc('0x4'));var fs=require('fs');var path=require(_0xa0bc('0x5'));var rimraf=require('rimraf');var config=require(_0xa0bc('0x6'));var attributes=require(_0xa0bc('0x7'));module[_0xa0bc('0x8')]=function(_0x566feb,_0x513716){return _0x566feb[_0xa0bc('0x9')](_0xa0bc('0xa'),attributes,{'tableName':_0xa0bc('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x485a=['bluebird','request-promise','path','rimraf','../../config/environment','./intFreshdeskConfiguration.attributes','exports','define','FreshdeskConfiguration','lodash','util','moment'];(function(_0x247090,_0x280661){var _0x32b2cb=function(_0x22f3ec){while(--_0x22f3ec){_0x247090['push'](_0x247090['shift']());}};_0x32b2cb(++_0x280661);}(_0x485a,0x1ad));var _0xa485=function(_0x29ceb7,_0x464552){_0x29ceb7=_0x29ceb7-0x0;var _0x26e370=_0x485a[_0x29ceb7];return _0x26e370;};'use strict';var _=require(_0xa485('0x0'));var util=require(_0xa485('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xa485('0x2'));var BPromise=require(_0xa485('0x3'));var rp=require(_0xa485('0x4'));var fs=require('fs');var path=require(_0xa485('0x5'));var rimraf=require(_0xa485('0x6'));var config=require(_0xa485('0x7'));var attributes=require(_0xa485('0x8'));module[_0xa485('0x9')]=function(_0x9093d3,_0x338954){return _0x9093d3[_0xa485('0xa')](_0xa485('0xb'),attributes,{'tableName':'int_freshdesk_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index dfad91e..7e04288 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1eba=['debug','FreshdeskConfiguration,\x20%s,\x20%s,\x20%s','FreshdeskConfiguration,\x20%s,\x20%s','error','message','info','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','client','http','request','then','request\x20sent'];(function(_0x475296,_0xfe00e9){var _0x39a546=function(_0x70039d){while(--_0x70039d){_0x475296['push'](_0x475296['shift']());}};_0x39a546(++_0xfe00e9);}(_0x1eba,0x138));var _0xa1eb=function(_0x2f227c,_0x360c3a){_0x2f227c=_0x2f227c-0x0;var _0x5032bc=_0x1eba[_0x2f227c];return _0x5032bc;};'use strict';var _=require('lodash');var util=require(_0xa1eb('0x0'));var moment=require('moment');var BPromise=require(_0xa1eb('0x1'));var rs=require(_0xa1eb('0x2'));var fs=require('fs');var Redis=require(_0xa1eb('0x3'));var db=require(_0xa1eb('0x4'))['db'];var utils=require(_0xa1eb('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0xa1eb('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xa1eb('0x7')][_0xa1eb('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x50117f,_0x5625c8,_0x41b35d){return new BPromise(function(_0x21bf42,_0x11cca1){return client[_0xa1eb('0x9')](_0x50117f,_0x41b35d)[_0xa1eb('0xa')](function(_0x319d59){logger['info']('FreshdeskConfiguration,\x20%s,\x20%s',_0x5625c8,_0xa1eb('0xb'));logger[_0xa1eb('0xc')](_0xa1eb('0xd'),_0x5625c8,_0xa1eb('0xb'),JSON['stringify'](_0x319d59));if(_0x319d59['error']){if(_0x319d59['error']['code']===0x1f4){logger['error'](_0xa1eb('0xe'),_0x5625c8,_0x319d59[_0xa1eb('0xf')][_0xa1eb('0x10')]);return _0x11cca1(_0x319d59[_0xa1eb('0xf')]['message']);}logger['error'](_0xa1eb('0xe'),_0x5625c8,_0x319d59['error'][_0xa1eb('0x10')]);return _0x21bf42(_0x319d59[_0xa1eb('0xf')]['message']);}else{logger[_0xa1eb('0x11')](_0xa1eb('0xe'),_0x5625c8,_0xa1eb('0xb'));_0x21bf42(_0x319d59['result'][_0xa1eb('0x10')]);}})['catch'](function(_0x31312f){logger[_0xa1eb('0xf')](_0xa1eb('0xe'),_0x5625c8,_0x31312f);_0x11cca1(_0x31312f);});});}
\ No newline at end of file
+var _0x2890=['rpc','../../config/environment','jayson/promise','client','http','request','debug','request\x20sent','stringify','error','code','FreshdeskConfiguration,\x20%s,\x20%s','message','info','result','catch','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x2890,0x13b));var _0x0289=function(_0x2ede7c,_0x1e6eec){_0x2ede7c=_0x2ede7c-0x0;var _0x310558=_0x2890[_0x2ede7c];return _0x310558;};'use strict';var _=require(_0x0289('0x0'));var util=require(_0x0289('0x1'));var moment=require(_0x0289('0x2'));var BPromise=require('bluebird');var rs=require(_0x0289('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x0289('0x4'))['db'];var utils=require(_0x0289('0x5'));var logger=require(_0x0289('0x6'))(_0x0289('0x7'));var config=require(_0x0289('0x8'));var jayson=require(_0x0289('0x9'));var client=jayson[_0x0289('0xa')][_0x0289('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x22e007,_0x209c6d,_0x547295){return new BPromise(function(_0x2f247b,_0x4e35ba){return client[_0x0289('0xc')](_0x22e007,_0x547295)['then'](function(_0x3be48c){logger['info']('FreshdeskConfiguration,\x20%s,\x20%s',_0x209c6d,'request\x20sent');logger[_0x0289('0xd')]('FreshdeskConfiguration,\x20%s,\x20%s,\x20%s',_0x209c6d,_0x0289('0xe'),JSON[_0x0289('0xf')](_0x3be48c));if(_0x3be48c[_0x0289('0x10')]){if(_0x3be48c['error'][_0x0289('0x11')]===0x1f4){logger[_0x0289('0x10')](_0x0289('0x12'),_0x209c6d,_0x3be48c[_0x0289('0x10')][_0x0289('0x13')]);return _0x4e35ba(_0x3be48c[_0x0289('0x10')][_0x0289('0x13')]);}logger['error'](_0x0289('0x12'),_0x209c6d,_0x3be48c[_0x0289('0x10')][_0x0289('0x13')]);return _0x2f247b(_0x3be48c[_0x0289('0x10')]['message']);}else{logger[_0x0289('0x14')](_0x0289('0x12'),_0x209c6d,_0x0289('0xe'));_0x2f247b(_0x3be48c[_0x0289('0x15')][_0x0289('0x13')]);}})[_0x0289('0x16')](function(_0x25c52b){logger[_0x0289('0x10')](_0x0289('0x12'),_0x209c6d,_0x25c52b);_0x4e35ba(_0x25c52b);});});}
\ No newline at end of file
index 27c51d6..204c7c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa066=['index','get','/:id','post','create','put','delete','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./intFreshdeskField.controller','isAuthenticated'];(function(_0xa35c72,_0x1841cd){var _0x7743eb=function(_0x4010dd){while(--_0x4010dd){_0xa35c72['push'](_0xa35c72['shift']());}};_0x7743eb(++_0x1841cd);}(_0xa066,0xc3));var _0x6a06=function(_0x13e9d4,_0x25483d){_0x13e9d4=_0x13e9d4-0x0;var _0x2c62b8=_0xa066[_0x13e9d4];return _0x2c62b8;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x6a06('0x0'));var timeout=require(_0x6a06('0x1'));var express=require(_0x6a06('0x2'));var router=express[_0x6a06('0x3')]();var fs_extra=require(_0x6a06('0x4'));var auth=require(_0x6a06('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x6a06('0x6'));var controller=require(_0x6a06('0x7'));router['get']('/',auth[_0x6a06('0x8')](),controller[_0x6a06('0x9')]);router[_0x6a06('0xa')](_0x6a06('0xb'),auth[_0x6a06('0x8')](),controller['show']);router[_0x6a06('0xc')]('/',auth[_0x6a06('0x8')](),controller[_0x6a06('0xd')]);router[_0x6a06('0xe')](_0x6a06('0xb'),auth[_0x6a06('0x8')](),controller['update']);router[_0x6a06('0xf')](_0x6a06('0xb'),auth[_0x6a06('0x8')](),controller['destroy']);module[_0x6a06('0x10')]=router;
\ No newline at end of file
+var _0xb40a=['exports','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshdeskField.controller','isAuthenticated','/:id','show','create','put','update','destroy'];(function(_0x3aaea0,_0x24b149){var _0x369654=function(_0x381fda){while(--_0x381fda){_0x3aaea0['push'](_0x3aaea0['shift']());}};_0x369654(++_0x24b149);}(_0xb40a,0x67));var _0xab40=function(_0x4179fb,_0x320231){_0x4179fb=_0x4179fb-0x0;var _0x22f3bf=_0xb40a[_0x4179fb];return _0x22f3bf;};'use strict';var multer=require('multer');var util=require(_0xab40('0x0'));var path=require(_0xab40('0x1'));var timeout=require(_0xab40('0x2'));var express=require(_0xab40('0x3'));var router=express[_0xab40('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xab40('0x5'));var interaction=require(_0xab40('0x6'));var config=require(_0xab40('0x7'));var controller=require(_0xab40('0x8'));router['get']('/',auth[_0xab40('0x9')](),controller['index']);router['get'](_0xab40('0xa'),auth['isAuthenticated'](),controller[_0xab40('0xb')]);router['post']('/',auth['isAuthenticated'](),controller[_0xab40('0xc')]);router[_0xab40('0xd')]('/:id',auth[_0xab40('0x9')](),controller[_0xab40('0xe')]);router['delete'](_0xab40('0xa'),auth[_0xab40('0x9')](),controller[_0xab40('0xf')]);module[_0xab40('0x10')]=router;
\ No newline at end of file
index d923f25..5ca107a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x91ef=['picklist','STRING','ENUM','BOOLEAN','exports','string','variable','customVariable','keyValue'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x91ef,0x175));var _0xf91e=function(_0x16b9ed,_0x56517a){_0x16b9ed=_0x16b9ed-0x0;var _0x66b1f8=_0x91ef[_0x16b9ed];return _0x66b1f8;};'use strict';var Sequelize=require('sequelize');module[_0xf91e('0x0')]={'type':{'type':Sequelize['ENUM'](_0xf91e('0x1'),_0xf91e('0x2'),_0xf91e('0x3'),_0xf91e('0x4'),_0xf91e('0x5')),'defaultValue':'string'},'content':{'type':Sequelize[_0xf91e('0x6')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0xf91e('0x7')]('string',_0xf91e('0x2'),_0xf91e('0x3'))},'keyContent':{'type':Sequelize[_0xf91e('0x6')]},'idField':{'type':Sequelize[_0xf91e('0x6')]},'nameField':{'type':Sequelize[_0xf91e('0x6')]},'customField':{'type':Sequelize[_0xf91e('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xf91e('0x6')]}};
\ No newline at end of file
+var _0x1bfe=['exports','ENUM','string','customVariable','STRING','variable','sequelize'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0x1bfe,0xb5));var _0xe1bf=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0x1bfe[_0x5ddb1c];return _0x354adc;};'use strict';var Sequelize=require(_0xe1bf('0x0'));module[_0xe1bf('0x1')]={'type':{'type':Sequelize[_0xe1bf('0x2')](_0xe1bf('0x3'),'variable',_0xe1bf('0x4'),'keyValue','picklist'),'defaultValue':'string'},'content':{'type':Sequelize[_0xe1bf('0x5')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0xe1bf('0x2')](_0xe1bf('0x3'),_0xe1bf('0x6'),_0xe1bf('0x4'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0xe1bf('0x5')]},'nameField':{'type':Sequelize[_0xe1bf('0x5')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xe1bf('0x5')]}};
\ No newline at end of file
index 159800f..b22403f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x04b8=['undefined','count','Content-Range','apply','reject','save','then','destroy','error','name','send','index','map','FreshdeskField','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','type','VIRTUAL','options','include','findAll','rows','catch','show','params','rawAttributes','includeAll','create','body','update','find','rimraf','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','limit'];(function(_0x16c219,_0x4b0e05){var _0x4a07ef=function(_0x16654a){while(--_0x16654a){_0x16c219['push'](_0x16c219['shift']());}};_0x4a07ef(++_0x4b0e05);}(_0x04b8,0x159));var _0x804b=function(_0x39e2f1,_0x53ed8f){_0x39e2f1=_0x39e2f1-0x0;var _0x5272c5=_0x04b8[_0x39e2f1];return _0x5272c5;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x804b('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x804b('0x1'));var rp=require(_0x804b('0x2'));var moment=require('moment');var BPromise=require(_0x804b('0x3'));var Mustache=require(_0x804b('0x4'));var util=require('util');var path=require(_0x804b('0x5'));var sox=require(_0x804b('0x6'));var csv=require(_0x804b('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x804b('0x8'));var _=require(_0x804b('0x9'));var squel=require(_0x804b('0xa'));var crypto=require('crypto');var jsforce=require(_0x804b('0xb'));var deskjs=require(_0x804b('0xc'));var toCsv=require('to-csv');var querystring=require(_0x804b('0xd'));var Papa=require(_0x804b('0xe'));var Redis=require(_0x804b('0xf'));var authService=require(_0x804b('0x10'));var qs=require(_0x804b('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x804b('0x12'));var logger=require(_0x804b('0x13'))(_0x804b('0x14'));var utils=require(_0x804b('0x15'));var config=require(_0x804b('0x16'));var licenseUtil=require(_0x804b('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x15a4eb,_0x5303cc){_0x5303cc=_0x5303cc||0xcc;return function(_0x23ee57){if(_0x23ee57){return _0x15a4eb[_0x804b('0x18')](_0x5303cc);}return _0x15a4eb[_0x804b('0x19')](_0x5303cc)[_0x804b('0x1a')]();};}function respondWithResult(_0x581fbf,_0x215825){_0x215825=_0x215825||0xc8;return function(_0x1b01a7){if(_0x1b01a7){return _0x581fbf[_0x804b('0x19')](_0x215825)[_0x804b('0x1b')](_0x1b01a7);}};}function respondWithFilteredResult(_0x4ff1be,_0x2fd593){return function(_0x8ccbe0){if(_0x8ccbe0){var _0x5e1cfe=typeof _0x2fd593[_0x804b('0x1c')]==='undefined'&&typeof _0x2fd593[_0x804b('0x1d')]===_0x804b('0x1e');var _0x13662e=_0x8ccbe0[_0x804b('0x1f')];var _0x3a05c0=_0x5e1cfe?0x0:_0x2fd593['offset'];var _0x871d6c=_0x5e1cfe?_0x8ccbe0['count']:_0x2fd593[_0x804b('0x1c')]+_0x2fd593[_0x804b('0x1d')];var _0x42cceb;if(_0x871d6c>=_0x13662e){_0x871d6c=_0x13662e;_0x42cceb=0xc8;}else{_0x42cceb=0xce;}_0x4ff1be[_0x804b('0x19')](_0x42cceb);return _0x4ff1be['set'](_0x804b('0x20'),_0x3a05c0+'-'+_0x871d6c+'/'+_0x13662e)[_0x804b('0x1b')](_0x8ccbe0);}return null;};}function patchUpdates(_0x427166){return function(_0x11eaf6){try{jsonpatch[_0x804b('0x21')](_0x11eaf6,_0x427166,!![]);}catch(_0x267878){return BPromise[_0x804b('0x22')](_0x267878);}return _0x11eaf6[_0x804b('0x23')]();};}function saveUpdates(_0xaa9521,_0x2b7271){return function(_0x1acc48){if(_0x1acc48){return _0x1acc48['update'](_0xaa9521)[_0x804b('0x24')](function(_0x5a77e0){return _0x5a77e0;});}return null;};}function removeEntity(_0x5585f8,_0x44a921){return function(_0x367024){if(_0x367024){return _0x367024[_0x804b('0x25')]()[_0x804b('0x24')](function(){_0x5585f8[_0x804b('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2de812,_0x7d9c33){return function(_0x4e7266){if(!_0x4e7266){_0x2de812[_0x804b('0x18')](0x194);}return _0x4e7266;};}function handleError(_0x2366b6,_0x1117a5){_0x1117a5=_0x1117a5||0x1f4;return function(_0x27d5ec){logger[_0x804b('0x26')](_0x27d5ec['stack']);if(_0x27d5ec[_0x804b('0x27')]){delete _0x27d5ec[_0x804b('0x27')];}_0x2366b6[_0x804b('0x19')](_0x1117a5)[_0x804b('0x28')](_0x27d5ec);};}exports[_0x804b('0x29')]=function(_0x4a6079,_0x3eb531){var _0x2931ff={},_0x410871={},_0x5c7026={'count':0x0,'rows':[]};var _0x3dbd41=_[_0x804b('0x2a')](db[_0x804b('0x2b')]['rawAttributes'],function(_0x408857){return{'name':_0x408857[_0x804b('0x2c')],'type':_0x408857['type'][_0x804b('0x2d')]};});_0x410871[_0x804b('0x2e')]=_[_0x804b('0x2a')](_0x3dbd41,_0x804b('0x27'));_0x410871[_0x804b('0x2f')]=_[_0x804b('0x30')](_0x4a6079['query']);_0x410871[_0x804b('0x31')]=_[_0x804b('0x32')](_0x410871[_0x804b('0x2e')],_0x410871[_0x804b('0x2f')]);_0x2931ff[_0x804b('0x33')]=_[_0x804b('0x32')](_0x410871[_0x804b('0x2e')],qs[_0x804b('0x34')](_0x4a6079[_0x804b('0x2f')][_0x804b('0x34')]));_0x2931ff[_0x804b('0x33')]=_0x2931ff[_0x804b('0x33')][_0x804b('0x35')]?_0x2931ff[_0x804b('0x33')]:_0x410871[_0x804b('0x2e')];if(!_0x4a6079[_0x804b('0x2f')][_0x804b('0x36')](_0x804b('0x37'))){_0x2931ff[_0x804b('0x1d')]=qs[_0x804b('0x1d')](_0x4a6079[_0x804b('0x2f')][_0x804b('0x1d')]);_0x2931ff[_0x804b('0x1c')]=qs[_0x804b('0x1c')](_0x4a6079[_0x804b('0x2f')]['offset']);}_0x2931ff['order']=qs['sort'](_0x4a6079[_0x804b('0x2f')][_0x804b('0x38')]);_0x2931ff[_0x804b('0x39')]=qs['filters'](_['pick'](_0x4a6079['query'],_0x410871[_0x804b('0x31')]),_0x3dbd41);if(_0x4a6079[_0x804b('0x2f')][_0x804b('0x3a')]){_0x2931ff[_0x804b('0x39')]=_[_0x804b('0x3b')](_0x2931ff[_0x804b('0x39')],{'$or':_[_0x804b('0x2a')](_0x3dbd41,function(_0xc5eefa){if(_0xc5eefa[_0x804b('0x3c')]!==_0x804b('0x3d')){var _0x878dac={};_0x878dac[_0xc5eefa[_0x804b('0x27')]]={'$like':'%'+_0x4a6079[_0x804b('0x2f')]['filter']+'%'};return _0x878dac;}})});}_0x2931ff=_[_0x804b('0x3b')]({},_0x2931ff,_0x4a6079[_0x804b('0x3e')]);var _0xb877d6={'where':_0x2931ff[_0x804b('0x39')]};return db[_0x804b('0x2b')]['count'](_0xb877d6)['then'](function(_0x203890){_0x5c7026[_0x804b('0x1f')]=_0x203890;if(_0x4a6079[_0x804b('0x2f')]['includeAll']){_0x2931ff[_0x804b('0x3f')]=[{'all':!![]}];}return db['FreshdeskField'][_0x804b('0x40')](_0x2931ff);})[_0x804b('0x24')](function(_0x20ccc7){_0x5c7026[_0x804b('0x41')]=_0x20ccc7;return _0x5c7026;})[_0x804b('0x24')](respondWithFilteredResult(_0x3eb531,_0x2931ff))[_0x804b('0x42')](handleError(_0x3eb531,null));};exports[_0x804b('0x43')]=function(_0x51c8ff,_0x17972a){var _0x1c0363={'raw':!![],'where':{'id':_0x51c8ff[_0x804b('0x44')]['id']}},_0x1dcec8={};_0x1dcec8['model']=_[_0x804b('0x30')](db[_0x804b('0x2b')][_0x804b('0x45')]);_0x1dcec8[_0x804b('0x2f')]=_[_0x804b('0x30')](_0x51c8ff[_0x804b('0x2f')]);_0x1dcec8[_0x804b('0x31')]=_[_0x804b('0x32')](_0x1dcec8['model'],_0x1dcec8[_0x804b('0x2f')]);_0x1c0363['attributes']=_['intersection'](_0x1dcec8['model'],qs[_0x804b('0x34')](_0x51c8ff['query'][_0x804b('0x34')]));_0x1c0363[_0x804b('0x33')]=_0x1c0363[_0x804b('0x33')][_0x804b('0x35')]?_0x1c0363['attributes']:_0x1dcec8[_0x804b('0x2e')];if(_0x51c8ff[_0x804b('0x2f')][_0x804b('0x46')]){_0x1c0363['include']=[{'all':!![]}];}_0x1c0363=_[_0x804b('0x3b')]({},_0x1c0363,_0x51c8ff[_0x804b('0x3e')]);return db[_0x804b('0x2b')]['find'](_0x1c0363)[_0x804b('0x24')](handleEntityNotFound(_0x17972a,null))[_0x804b('0x24')](respondWithResult(_0x17972a,null))[_0x804b('0x42')](handleError(_0x17972a,null));};exports[_0x804b('0x47')]=function(_0x1051e9,_0x3a39f5){return db[_0x804b('0x2b')][_0x804b('0x47')](_0x1051e9[_0x804b('0x48')],{})[_0x804b('0x24')](respondWithResult(_0x3a39f5,0xc9))[_0x804b('0x42')](handleError(_0x3a39f5,null));};exports[_0x804b('0x49')]=function(_0x20862f,_0x2c1796){if(_0x20862f['body']['id']){delete _0x20862f['body']['id'];}return db[_0x804b('0x2b')][_0x804b('0x4a')]({'where':{'id':_0x20862f[_0x804b('0x44')]['id']}})[_0x804b('0x24')](handleEntityNotFound(_0x2c1796,null))[_0x804b('0x24')](saveUpdates(_0x20862f['body'],null))[_0x804b('0x24')](respondWithResult(_0x2c1796,null))[_0x804b('0x42')](handleError(_0x2c1796,null));};exports[_0x804b('0x25')]=function(_0x3ca9ff,_0x47247c){return db[_0x804b('0x2b')]['find']({'where':{'id':_0x3ca9ff['params']['id']}})[_0x804b('0x24')](handleEntityNotFound(_0x47247c,null))[_0x804b('0x24')](removeEntity(_0x47247c,null))['catch'](handleError(_0x47247c,null));};
\ No newline at end of file
+var _0xc36d=['desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../mysqldb','status','end','json','limit','undefined','count','offset','Content-Range','apply','save','update','then','destroy','stack','name','send','index','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','merge','map','options','includeAll','include','rows','catch','show','params','FreshdeskField','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce'];(function(_0x2c92f8,_0x23eb70){var _0x176f4a=function(_0x2ef0fa){while(--_0x2ef0fa){_0x2c92f8['push'](_0x2c92f8['shift']());}};_0x176f4a(++_0x23eb70);}(_0xc36d,0x7d));var _0xdc36=function(_0x41dfac,_0x278319){_0x41dfac=_0x41dfac-0x0;var _0x12900b=_0xc36d[_0x41dfac];return _0x12900b;};'use strict';var emlformat=require(_0xdc36('0x0'));var rimraf=require(_0xdc36('0x1'));var zipdir=require(_0xdc36('0x2'));var jsonpatch=require(_0xdc36('0x3'));var rp=require(_0xdc36('0x4'));var moment=require(_0xdc36('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xdc36('0x6'));var util=require(_0xdc36('0x7'));var path=require('path');var sox=require(_0xdc36('0x8'));var csv=require(_0xdc36('0x9'));var ejs=require(_0xdc36('0xa'));var fs=require('fs');var fs_extra=require(_0xdc36('0xb'));var _=require(_0xdc36('0xc'));var squel=require('squel');var crypto=require(_0xdc36('0xd'));var jsforce=require(_0xdc36('0xe'));var deskjs=require(_0xdc36('0xf'));var toCsv=require(_0xdc36('0x9'));var querystring=require('querystring');var Papa=require(_0xdc36('0x10'));var Redis=require(_0xdc36('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xdc36('0x12'));var as=require(_0xdc36('0x13'));var hardwareService=require(_0xdc36('0x14'));var logger=require('../../config/logger')(_0xdc36('0x15'));var utils=require(_0xdc36('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xdc36('0x17'))['db'];function respondWithStatusCode(_0x276692,_0x519fa5){_0x519fa5=_0x519fa5||0xcc;return function(_0x5d62ee){if(_0x5d62ee){return _0x276692['sendStatus'](_0x519fa5);}return _0x276692[_0xdc36('0x18')](_0x519fa5)[_0xdc36('0x19')]();};}function respondWithResult(_0x243d54,_0xae6ad3){_0xae6ad3=_0xae6ad3||0xc8;return function(_0x30803d){if(_0x30803d){return _0x243d54[_0xdc36('0x18')](_0xae6ad3)[_0xdc36('0x1a')](_0x30803d);}};}function respondWithFilteredResult(_0x809cf0,_0x57ebde){return function(_0x155cce){if(_0x155cce){var _0x526ac8=typeof _0x57ebde['offset']==='undefined'&&typeof _0x57ebde[_0xdc36('0x1b')]===_0xdc36('0x1c');var _0x5a498f=_0x155cce[_0xdc36('0x1d')];var _0x219a73=_0x526ac8?0x0:_0x57ebde[_0xdc36('0x1e')];var _0x225878=_0x526ac8?_0x155cce[_0xdc36('0x1d')]:_0x57ebde[_0xdc36('0x1e')]+_0x57ebde['limit'];var _0x3d4c4c;if(_0x225878>=_0x5a498f){_0x225878=_0x5a498f;_0x3d4c4c=0xc8;}else{_0x3d4c4c=0xce;}_0x809cf0[_0xdc36('0x18')](_0x3d4c4c);return _0x809cf0['set'](_0xdc36('0x1f'),_0x219a73+'-'+_0x225878+'/'+_0x5a498f)[_0xdc36('0x1a')](_0x155cce);}return null;};}function patchUpdates(_0x3f25f0){return function(_0x5f15ef){try{jsonpatch[_0xdc36('0x20')](_0x5f15ef,_0x3f25f0,!![]);}catch(_0x235a39){return BPromise['reject'](_0x235a39);}return _0x5f15ef[_0xdc36('0x21')]();};}function saveUpdates(_0x480277,_0x5a6e35){return function(_0x12f9d8){if(_0x12f9d8){return _0x12f9d8[_0xdc36('0x22')](_0x480277)[_0xdc36('0x23')](function(_0xda916b){return _0xda916b;});}return null;};}function removeEntity(_0x2d83c0,_0x34d261){return function(_0x14b595){if(_0x14b595){return _0x14b595[_0xdc36('0x24')]()['then'](function(){_0x2d83c0[_0xdc36('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2338d7,_0x38bd73){return function(_0x15e686){if(!_0x15e686){_0x2338d7['sendStatus'](0x194);}return _0x15e686;};}function handleError(_0xbc4322,_0x6e3906){_0x6e3906=_0x6e3906||0x1f4;return function(_0x337091){logger['error'](_0x337091[_0xdc36('0x25')]);if(_0x337091[_0xdc36('0x26')]){delete _0x337091[_0xdc36('0x26')];}_0xbc4322['status'](_0x6e3906)[_0xdc36('0x27')](_0x337091);};}exports[_0xdc36('0x28')]=function(_0x4b15b4,_0x3fe57f){var _0x12fed2={},_0x4ea2ad={},_0x21151b={'count':0x0,'rows':[]};var _0x5bba0b=_['map'](db['FreshdeskField'][_0xdc36('0x29')],function(_0x2f2bb4){return{'name':_0x2f2bb4['fieldName'],'type':_0x2f2bb4[_0xdc36('0x2a')][_0xdc36('0x2b')]};});_0x4ea2ad[_0xdc36('0x2c')]=_['map'](_0x5bba0b,_0xdc36('0x26'));_0x4ea2ad[_0xdc36('0x2d')]=_[_0xdc36('0x2e')](_0x4b15b4[_0xdc36('0x2d')]);_0x4ea2ad[_0xdc36('0x2f')]=_[_0xdc36('0x30')](_0x4ea2ad[_0xdc36('0x2c')],_0x4ea2ad['query']);_0x12fed2[_0xdc36('0x31')]=_[_0xdc36('0x30')](_0x4ea2ad['model'],qs['fields'](_0x4b15b4[_0xdc36('0x2d')][_0xdc36('0x32')]));_0x12fed2[_0xdc36('0x31')]=_0x12fed2['attributes']['length']?_0x12fed2[_0xdc36('0x31')]:_0x4ea2ad[_0xdc36('0x2c')];if(!_0x4b15b4[_0xdc36('0x2d')][_0xdc36('0x33')](_0xdc36('0x34'))){_0x12fed2[_0xdc36('0x1b')]=qs[_0xdc36('0x1b')](_0x4b15b4[_0xdc36('0x2d')][_0xdc36('0x1b')]);_0x12fed2[_0xdc36('0x1e')]=qs[_0xdc36('0x1e')](_0x4b15b4['query'][_0xdc36('0x1e')]);}_0x12fed2[_0xdc36('0x35')]=qs[_0xdc36('0x36')](_0x4b15b4[_0xdc36('0x2d')]['sort']);_0x12fed2[_0xdc36('0x37')]=qs[_0xdc36('0x2f')](_[_0xdc36('0x38')](_0x4b15b4[_0xdc36('0x2d')],_0x4ea2ad['filters']),_0x5bba0b);if(_0x4b15b4[_0xdc36('0x2d')]['filter']){_0x12fed2['where']=_[_0xdc36('0x39')](_0x12fed2[_0xdc36('0x37')],{'$or':_[_0xdc36('0x3a')](_0x5bba0b,function(_0x54c45d){if(_0x54c45d[_0xdc36('0x2a')]!=='VIRTUAL'){var _0x45760b={};_0x45760b[_0x54c45d[_0xdc36('0x26')]]={'$like':'%'+_0x4b15b4[_0xdc36('0x2d')]['filter']+'%'};return _0x45760b;}})});}_0x12fed2=_[_0xdc36('0x39')]({},_0x12fed2,_0x4b15b4[_0xdc36('0x3b')]);var _0xd98d42={'where':_0x12fed2[_0xdc36('0x37')]};return db['FreshdeskField'][_0xdc36('0x1d')](_0xd98d42)[_0xdc36('0x23')](function(_0x68816d){_0x21151b['count']=_0x68816d;if(_0x4b15b4['query'][_0xdc36('0x3c')]){_0x12fed2[_0xdc36('0x3d')]=[{'all':!![]}];}return db['FreshdeskField']['findAll'](_0x12fed2);})[_0xdc36('0x23')](function(_0x8f4c80){_0x21151b[_0xdc36('0x3e')]=_0x8f4c80;return _0x21151b;})[_0xdc36('0x23')](respondWithFilteredResult(_0x3fe57f,_0x12fed2))[_0xdc36('0x3f')](handleError(_0x3fe57f,null));};exports[_0xdc36('0x40')]=function(_0x932213,_0x2a83ee){var _0x2f4c89={'raw':!![],'where':{'id':_0x932213[_0xdc36('0x41')]['id']}},_0x125f0e={};_0x125f0e[_0xdc36('0x2c')]=_[_0xdc36('0x2e')](db[_0xdc36('0x42')][_0xdc36('0x29')]);_0x125f0e[_0xdc36('0x2d')]=_[_0xdc36('0x2e')](_0x932213[_0xdc36('0x2d')]);_0x125f0e[_0xdc36('0x2f')]=_[_0xdc36('0x30')](_0x125f0e[_0xdc36('0x2c')],_0x125f0e[_0xdc36('0x2d')]);_0x2f4c89[_0xdc36('0x31')]=_[_0xdc36('0x30')](_0x125f0e[_0xdc36('0x2c')],qs[_0xdc36('0x32')](_0x932213['query'][_0xdc36('0x32')]));_0x2f4c89[_0xdc36('0x31')]=_0x2f4c89['attributes']['length']?_0x2f4c89[_0xdc36('0x31')]:_0x125f0e['model'];if(_0x932213[_0xdc36('0x2d')]['includeAll']){_0x2f4c89[_0xdc36('0x3d')]=[{'all':!![]}];}_0x2f4c89=_[_0xdc36('0x39')]({},_0x2f4c89,_0x932213[_0xdc36('0x3b')]);return db[_0xdc36('0x42')][_0xdc36('0x43')](_0x2f4c89)[_0xdc36('0x23')](handleEntityNotFound(_0x2a83ee,null))[_0xdc36('0x23')](respondWithResult(_0x2a83ee,null))[_0xdc36('0x3f')](handleError(_0x2a83ee,null));};exports[_0xdc36('0x44')]=function(_0x38c24b,_0x3c27c7){return db[_0xdc36('0x42')][_0xdc36('0x44')](_0x38c24b[_0xdc36('0x45')],{})[_0xdc36('0x23')](respondWithResult(_0x3c27c7,0xc9))[_0xdc36('0x3f')](handleError(_0x3c27c7,null));};exports[_0xdc36('0x22')]=function(_0x3399cc,_0x562c86){if(_0x3399cc['body']['id']){delete _0x3399cc[_0xdc36('0x45')]['id'];}return db[_0xdc36('0x42')][_0xdc36('0x43')]({'where':{'id':_0x3399cc[_0xdc36('0x41')]['id']}})[_0xdc36('0x23')](handleEntityNotFound(_0x562c86,null))[_0xdc36('0x23')](saveUpdates(_0x3399cc['body'],null))[_0xdc36('0x23')](respondWithResult(_0x562c86,null))[_0xdc36('0x3f')](handleError(_0x562c86,null));};exports[_0xdc36('0x24')]=function(_0x49f456,_0x2c6856){return db[_0xdc36('0x42')][_0xdc36('0x43')]({'where':{'id':_0x49f456[_0xdc36('0x41')]['id']}})[_0xdc36('0x23')](handleEntityNotFound(_0x2c6856,null))[_0xdc36('0x23')](removeEntity(_0x2c6856,null))['catch'](handleError(_0x2c6856,null));};
\ No newline at end of file
index eb3d2bf..60da471 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f67=['freshdesk_unique_index','idField','FieldId','../../config/logger','api','moment','bluebird','path','rimraf','./intFreshdeskField.attributes','exports','define','FreshdeskField','int_freshdesk_fields'];(function(_0x16629d,_0x492375){var _0x56ccee=function(_0xa982b7){while(--_0xa982b7){_0x16629d['push'](_0x16629d['shift']());}};_0x56ccee(++_0x492375);}(_0x0f67,0xab));var _0x70f6=function(_0x1ca93c,_0x3271ab){_0x1ca93c=_0x1ca93c-0x0;var _0x185169=_0x0f67[_0x1ca93c];return _0x185169;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x70f6('0x0'))(_0x70f6('0x1'));var moment=require(_0x70f6('0x2'));var BPromise=require(_0x70f6('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x70f6('0x4'));var rimraf=require(_0x70f6('0x5'));var config=require('../../config/environment');var attributes=require(_0x70f6('0x6'));module[_0x70f6('0x7')]=function(_0x34ecf0,_0x138109){return _0x34ecf0[_0x70f6('0x8')](_0x70f6('0x9'),attributes,{'tableName':_0x70f6('0xa'),'paranoid':![],'indexes':[{'name':_0x70f6('0xb'),'fields':[_0x70f6('0xc'),_0x70f6('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xe991=['idField','FieldId','lodash','util','api','moment','bluebird','path','rimraf','../../config/environment','./intFreshdeskField.attributes','exports','define','FreshdeskField','int_freshdesk_fields','freshdesk_unique_index'];(function(_0x1af98d,_0x3c608e){var _0x3553ea=function(_0x5668a4){while(--_0x5668a4){_0x1af98d['push'](_0x1af98d['shift']());}};_0x3553ea(++_0x3c608e);}(_0xe991,0x92));var _0x1e99=function(_0xc87dff,_0x47113d){_0xc87dff=_0xc87dff-0x0;var _0x3e0f32=_0xe991[_0xc87dff];return _0x3e0f32;};'use strict';var _=require(_0x1e99('0x0'));var util=require(_0x1e99('0x1'));var logger=require('../../config/logger')(_0x1e99('0x2'));var moment=require(_0x1e99('0x3'));var BPromise=require(_0x1e99('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x1e99('0x5'));var rimraf=require(_0x1e99('0x6'));var config=require(_0x1e99('0x7'));var attributes=require(_0x1e99('0x8'));module[_0x1e99('0x9')]=function(_0x1d5c98,_0xa56a31){return _0x1d5c98[_0x1e99('0xa')](_0x1e99('0xb'),attributes,{'tableName':_0x1e99('0xc'),'paranoid':![],'indexes':[{'name':_0x1e99('0xd'),'fields':[_0x1e99('0xe'),_0x1e99('0xf')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 6247bf0..607ca15 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f92=['lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','FreshdeskField,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch'];(function(_0x289c6c,_0x2fed8a){var _0x4b925a=function(_0x2b78a9){while(--_0x2b78a9){_0x289c6c['push'](_0x289c6c['shift']());}};_0x4b925a(++_0x2fed8a);}(_0x1f92,0xd8));var _0x21f9=function(_0x131e64,_0x24bee3){_0x131e64=_0x131e64-0x0;var _0x11e31a=_0x1f92[_0x131e64];return _0x11e31a;};'use strict';var _=require(_0x21f9('0x0'));var util=require(_0x21f9('0x1'));var moment=require(_0x21f9('0x2'));var BPromise=require(_0x21f9('0x3'));var rs=require(_0x21f9('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x21f9('0x5'))['db'];var utils=require(_0x21f9('0x6'));var logger=require(_0x21f9('0x7'))(_0x21f9('0x8'));var config=require('../../config/environment');var jayson=require(_0x21f9('0x9'));var client=jayson[_0x21f9('0xa')][_0x21f9('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3b59fc,_0x25584c,_0x3d7b84){return new BPromise(function(_0x11d3d9,_0xd13a74){return client[_0x21f9('0xc')](_0x3b59fc,_0x3d7b84)[_0x21f9('0xd')](function(_0x5c3236){logger[_0x21f9('0xe')](_0x21f9('0xf'),_0x25584c,'request\x20sent');logger[_0x21f9('0x10')]('FreshdeskField,\x20%s,\x20%s,\x20%s',_0x25584c,'request\x20sent',JSON[_0x21f9('0x11')](_0x5c3236));if(_0x5c3236[_0x21f9('0x12')]){if(_0x5c3236[_0x21f9('0x12')][_0x21f9('0x13')]===0x1f4){logger[_0x21f9('0x12')]('FreshdeskField,\x20%s,\x20%s',_0x25584c,_0x5c3236[_0x21f9('0x12')][_0x21f9('0x14')]);return _0xd13a74(_0x5c3236['error'][_0x21f9('0x14')]);}logger[_0x21f9('0x12')](_0x21f9('0xf'),_0x25584c,_0x5c3236[_0x21f9('0x12')][_0x21f9('0x14')]);return _0x11d3d9(_0x5c3236[_0x21f9('0x12')][_0x21f9('0x14')]);}else{logger['info'](_0x21f9('0xf'),_0x25584c,_0x21f9('0x15'));_0x11d3d9(_0x5c3236[_0x21f9('0x16')][_0x21f9('0x14')]);}})[_0x21f9('0x17')](function(_0x83efbd){logger['error'](_0x21f9('0xf'),_0x25584c,_0x83efbd);_0xd13a74(_0x83efbd);});});}
\ No newline at end of file
+var _0x2f78=['util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','http','then','info','FreshdeskField,\x20%s,\x20%s','debug','FreshdeskField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','catch','lodash'];(function(_0x3c327a,_0x161627){var _0x1fcf1a=function(_0x466117){while(--_0x466117){_0x3c327a['push'](_0x3c327a['shift']());}};_0x1fcf1a(++_0x161627);}(_0x2f78,0x15f));var _0x82f7=function(_0x2eb27b,_0x3758a1){_0x2eb27b=_0x2eb27b-0x0;var _0x461836=_0x2f78[_0x2eb27b];return _0x461836;};'use strict';var _=require(_0x82f7('0x0'));var util=require(_0x82f7('0x1'));var moment=require(_0x82f7('0x2'));var BPromise=require('bluebird');var rs=require(_0x82f7('0x3'));var fs=require('fs');var Redis=require(_0x82f7('0x4'));var db=require(_0x82f7('0x5'))['db'];var utils=require(_0x82f7('0x6'));var logger=require(_0x82f7('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x82f7('0x8'));var client=jayson['client'][_0x82f7('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x24d187,_0x29f15a,_0x491a56){return new BPromise(function(_0x35883d,_0x234faf){return client['request'](_0x24d187,_0x491a56)[_0x82f7('0xa')](function(_0x2051c8){logger[_0x82f7('0xb')](_0x82f7('0xc'),_0x29f15a,'request\x20sent');logger[_0x82f7('0xd')](_0x82f7('0xe'),_0x29f15a,'request\x20sent',JSON[_0x82f7('0xf')](_0x2051c8));if(_0x2051c8[_0x82f7('0x10')]){if(_0x2051c8[_0x82f7('0x10')][_0x82f7('0x11')]===0x1f4){logger[_0x82f7('0x10')]('FreshdeskField,\x20%s,\x20%s',_0x29f15a,_0x2051c8['error']['message']);return _0x234faf(_0x2051c8[_0x82f7('0x10')]['message']);}logger[_0x82f7('0x10')](_0x82f7('0xc'),_0x29f15a,_0x2051c8[_0x82f7('0x10')][_0x82f7('0x12')]);return _0x35883d(_0x2051c8['error'][_0x82f7('0x12')]);}else{logger[_0x82f7('0xb')](_0x82f7('0xc'),_0x29f15a,_0x82f7('0x13'));_0x35883d(_0x2051c8[_0x82f7('0x14')][_0x82f7('0x12')]);}})[_0x82f7('0x15')](function(_0xcf8ce1){logger['error'](_0x82f7('0xc'),_0x29f15a,_0xcf8ce1);_0x234faf(_0xcf8ce1);});});}
\ No newline at end of file
index 757daa7..edc07a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xefda=['update','destroy','exports','multer','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshsalesAccount.controller','get','index','/:id','isAuthenticated','/:id/configurations','getFields','post','create','addConfiguration','put'];(function(_0x331b85,_0x5f3e6e){var _0x1b97b2=function(_0x44d7c9){while(--_0x44d7c9){_0x331b85['push'](_0x331b85['shift']());}};_0x1b97b2(++_0x5f3e6e);}(_0xefda,0x96));var _0xaefd=function(_0x1d1b38,_0x56fb20){_0x1d1b38=_0x1d1b38-0x0;var _0x3980ae=_0xefda[_0x1d1b38];return _0x3980ae;};'use strict';var multer=require(_0xaefd('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xaefd('0x1'));var express=require(_0xaefd('0x2'));var router=express['Router']();var fs_extra=require(_0xaefd('0x3'));var auth=require(_0xaefd('0x4'));var interaction=require(_0xaefd('0x5'));var config=require(_0xaefd('0x6'));var controller=require(_0xaefd('0x7'));router[_0xaefd('0x8')]('/',auth['isAuthenticated'](),controller[_0xaefd('0x9')]);router[_0xaefd('0x8')](_0xaefd('0xa'),auth[_0xaefd('0xb')](),controller['show']);router[_0xaefd('0x8')](_0xaefd('0xc'),auth[_0xaefd('0xb')](),controller['getConfigurations']);router['get']('/:id/fields',auth[_0xaefd('0xb')](),controller[_0xaefd('0xd')]);router[_0xaefd('0xe')]('/',auth[_0xaefd('0xb')](),controller[_0xaefd('0xf')]);router[_0xaefd('0xe')](_0xaefd('0xc'),auth[_0xaefd('0xb')](),controller[_0xaefd('0x10')]);router[_0xaefd('0x11')](_0xaefd('0xa'),auth['isAuthenticated'](),controller[_0xaefd('0x12')]);router['delete'](_0xaefd('0xa'),auth[_0xaefd('0xb')](),controller[_0xaefd('0x13')]);module[_0xaefd('0x14')]=router;
\ No newline at end of file
+var _0xf45e=['exports','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshsalesAccount.controller','get','isAuthenticated','index','/:id','show','/:id/configurations','getConfigurations','getFields','post','create','addConfiguration','put','destroy'];(function(_0xe82606,_0x433ec1){var _0x495d9d=function(_0x46362d){while(--_0x46362d){_0xe82606['push'](_0xe82606['shift']());}};_0x495d9d(++_0x433ec1);}(_0xf45e,0x115));var _0xef45=function(_0x144908,_0x43592c){_0x144908=_0x144908-0x0;var _0x4cefbb=_0xf45e[_0x144908];return _0x4cefbb;};'use strict';var multer=require(_0xef45('0x0'));var util=require('util');var path=require(_0xef45('0x1'));var timeout=require('connect-timeout');var express=require(_0xef45('0x2'));var router=express[_0xef45('0x3')]();var fs_extra=require(_0xef45('0x4'));var auth=require(_0xef45('0x5'));var interaction=require(_0xef45('0x6'));var config=require(_0xef45('0x7'));var controller=require(_0xef45('0x8'));router[_0xef45('0x9')]('/',auth[_0xef45('0xa')](),controller[_0xef45('0xb')]);router[_0xef45('0x9')](_0xef45('0xc'),auth[_0xef45('0xa')](),controller[_0xef45('0xd')]);router[_0xef45('0x9')](_0xef45('0xe'),auth[_0xef45('0xa')](),controller[_0xef45('0xf')]);router[_0xef45('0x9')]('/:id/fields',auth[_0xef45('0xa')](),controller[_0xef45('0x10')]);router[_0xef45('0x11')]('/',auth[_0xef45('0xa')](),controller[_0xef45('0x12')]);router[_0xef45('0x11')]('/:id/configurations',auth[_0xef45('0xa')](),controller[_0xef45('0x13')]);router[_0xef45('0x14')](_0xef45('0xc'),auth[_0xef45('0xa')](),controller['update']);router['delete'](_0xef45('0xc'),auth['isAuthenticated'](),controller[_0xef45('0x15')]);module[_0xef45('0x16')]=router;
\ No newline at end of file
index b73e785..1d12f12 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f66=['STRING','username','exports'];(function(_0x3578c6,_0x14ba2f){var _0xf53f58=function(_0x58b115){while(--_0x58b115){_0x3578c6['push'](_0x3578c6['shift']());}};_0xf53f58(++_0x14ba2f);}(_0x5f66,0x1a0));var _0x65f6=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0x5f66[_0x21a9d9];return _0x46adce;};'use strict';var Sequelize=require('sequelize');module[_0x65f6('0x0')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x65f6('0x1')]},'username':{'type':Sequelize[_0x65f6('0x1')],'unique':_0x65f6('0x2')},'apiKey':{'type':Sequelize[_0x65f6('0x1')]},'remoteUri':{'type':Sequelize[_0x65f6('0x1')],'unique':'remoteUri'},'serverUrl':{'type':Sequelize[_0x65f6('0x1')],'allowNull':![]}};
\ No newline at end of file
+var _0xeb3b=['sequelize','exports','STRING'];(function(_0x3a3b9e,_0xc59037){var _0x148103=function(_0x406731){while(--_0x406731){_0x3a3b9e['push'](_0x3a3b9e['shift']());}};_0x148103(++_0xc59037);}(_0xeb3b,0x19e));var _0xbeb3=function(_0x1dac7a,_0x1828ce){_0x1dac7a=_0x1dac7a-0x0;var _0x4cb363=_0xeb3b[_0x1dac7a];return _0x4cb363;};'use strict';var Sequelize=require(_0xbeb3('0x0'));module[_0xbeb3('0x1')]={'name':{'type':Sequelize[_0xbeb3('0x2')]},'description':{'type':Sequelize[_0xbeb3('0x2')]},'username':{'type':Sequelize[_0xbeb3('0x2')],'unique':'username'},'apiKey':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0xbeb3('0x2')],'unique':'remoteUri'},'serverUrl':{'type':Sequelize[_0xbeb3('0x2')],'allowNull':![]}};
\ No newline at end of file
index d893b3f..6da66ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9aee=['intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','pick','filter','where','VIRTUAL','merge','options','includeAll','include','rows','catch','show','rawAttributes','keys','create','find','params','body','getConfigurations','order','findOne','AccountId','Subjects','getSubjects','channel','Descriptions','FreshsalesConfiguration','FreshsalesField','username','remoteUri','apiKey','slice','lastIndexOf','format','%s%s','/api/selector/owners','Token\x20token=','test','statusCode','error','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','save','update','then','name','send','index','map','FreshsalesAccount','type','key','model','query','filters'];(function(_0x523fd7,_0x118f44){var _0x2f51ea=function(_0x1b6833){while(--_0x1b6833){_0x523fd7['push'](_0x523fd7['shift']());}};_0x2f51ea(++_0x118f44);}(_0x9aee,0x15d));var _0xe9ae=function(_0x33d9f0,_0x33ca57){_0x33d9f0=_0x33d9f0-0x0;var _0x4dabd5=_0x9aee[_0x33d9f0];return _0x4dabd5;};'use strict';var emlformat=require(_0xe9ae('0x0'));var rimraf=require(_0xe9ae('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xe9ae('0x2'));var rp=require(_0xe9ae('0x3'));var moment=require(_0xe9ae('0x4'));var BPromise=require(_0xe9ae('0x5'));var Mustache=require(_0xe9ae('0x6'));var util=require(_0xe9ae('0x7'));var path=require('path');var sox=require(_0xe9ae('0x8'));var csv=require(_0xe9ae('0x9'));var ejs=require(_0xe9ae('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xe9ae('0xb'));var crypto=require(_0xe9ae('0xc'));var jsforce=require(_0xe9ae('0xd'));var deskjs=require(_0xe9ae('0xe'));var toCsv=require(_0xe9ae('0x9'));var querystring=require(_0xe9ae('0xf'));var Papa=require(_0xe9ae('0x10'));var Redis=require(_0xe9ae('0x11'));var authService=require(_0xe9ae('0x12'));var qs=require(_0xe9ae('0x13'));var as=require(_0xe9ae('0x14'));var hardwareService=require(_0xe9ae('0x15'));var logger=require(_0xe9ae('0x16'))(_0xe9ae('0x17'));var utils=require(_0xe9ae('0x18'));var config=require(_0xe9ae('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0xe9ae('0x1a'))['db'];var integrations=require(_0xe9ae('0x1b'));function respondWithStatusCode(_0x470ec6,_0x1f1b1c){_0x1f1b1c=_0x1f1b1c||0xcc;return function(_0x13ccf9){if(_0x13ccf9){return _0x470ec6[_0xe9ae('0x1c')](_0x1f1b1c);}return _0x470ec6[_0xe9ae('0x1d')](_0x1f1b1c)[_0xe9ae('0x1e')]();};}function respondWithResult(_0x50a521,_0x2cea32){_0x2cea32=_0x2cea32||0xc8;return function(_0x2890c6){if(_0x2890c6){return _0x50a521[_0xe9ae('0x1d')](_0x2cea32)[_0xe9ae('0x1f')](_0x2890c6);}};}function respondWithFilteredResult(_0xefaea0,_0x2d2cd5){return function(_0x1db880){if(_0x1db880){var _0x9979de=typeof _0x2d2cd5[_0xe9ae('0x20')]===_0xe9ae('0x21')&&typeof _0x2d2cd5[_0xe9ae('0x22')]===_0xe9ae('0x21');var _0x231d11=_0x1db880[_0xe9ae('0x23')];var _0x4184da=_0x9979de?0x0:_0x2d2cd5[_0xe9ae('0x20')];var _0x413411=_0x9979de?_0x1db880[_0xe9ae('0x23')]:_0x2d2cd5[_0xe9ae('0x20')]+_0x2d2cd5[_0xe9ae('0x22')];var _0x3b75a8;if(_0x413411>=_0x231d11){_0x413411=_0x231d11;_0x3b75a8=0xc8;}else{_0x3b75a8=0xce;}_0xefaea0[_0xe9ae('0x1d')](_0x3b75a8);return _0xefaea0[_0xe9ae('0x24')]('Content-Range',_0x4184da+'-'+_0x413411+'/'+_0x231d11)[_0xe9ae('0x1f')](_0x1db880);}return null;};}function patchUpdates(_0x4f7d25){return function(_0x541ff8){try{jsonpatch[_0xe9ae('0x25')](_0x541ff8,_0x4f7d25,!![]);}catch(_0x5d7929){return BPromise['reject'](_0x5d7929);}return _0x541ff8[_0xe9ae('0x26')]();};}function saveUpdates(_0x50b4e8,_0x2faef0){return function(_0x1149b3){if(_0x1149b3){return _0x1149b3[_0xe9ae('0x27')](_0x50b4e8)['then'](function(_0x3809c3){return _0x3809c3;});}return null;};}function removeEntity(_0x4646dc,_0x37d0c0){return function(_0x422f34){if(_0x422f34){return _0x422f34['destroy']()[_0xe9ae('0x28')](function(){_0x4646dc['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x12e991,_0x564c3d){return function(_0x3b51ce){if(!_0x3b51ce){_0x12e991[_0xe9ae('0x1c')](0x194);}return _0x3b51ce;};}function handleError(_0x1d8cf0,_0x48685e){_0x48685e=_0x48685e||0x1f4;return function(_0x14a312){logger['error'](_0x14a312['stack']);if(_0x14a312[_0xe9ae('0x29')]){delete _0x14a312[_0xe9ae('0x29')];}_0x1d8cf0['status'](_0x48685e)[_0xe9ae('0x2a')](_0x14a312);};}exports[_0xe9ae('0x2b')]=function(_0x2baca5,_0x4f4881){var _0x369f1a={},_0x407acc={},_0x4ba761={'count':0x0,'rows':[]};var _0xf59177=_[_0xe9ae('0x2c')](db[_0xe9ae('0x2d')]['rawAttributes'],function(_0x5aa35b){return{'name':_0x5aa35b['fieldName'],'type':_0x5aa35b[_0xe9ae('0x2e')][_0xe9ae('0x2f')]};});_0x407acc[_0xe9ae('0x30')]=_[_0xe9ae('0x2c')](_0xf59177,_0xe9ae('0x29'));_0x407acc[_0xe9ae('0x31')]=_['keys'](_0x2baca5[_0xe9ae('0x31')]);_0x407acc[_0xe9ae('0x32')]=_[_0xe9ae('0x33')](_0x407acc[_0xe9ae('0x30')],_0x407acc[_0xe9ae('0x31')]);_0x369f1a[_0xe9ae('0x34')]=_[_0xe9ae('0x33')](_0x407acc[_0xe9ae('0x30')],qs[_0xe9ae('0x35')](_0x2baca5[_0xe9ae('0x31')][_0xe9ae('0x35')]));_0x369f1a[_0xe9ae('0x34')]=_0x369f1a[_0xe9ae('0x34')][_0xe9ae('0x36')]?_0x369f1a[_0xe9ae('0x34')]:_0x407acc[_0xe9ae('0x30')];if(!_0x2baca5[_0xe9ae('0x31')][_0xe9ae('0x37')](_0xe9ae('0x38'))){_0x369f1a['limit']=qs[_0xe9ae('0x22')](_0x2baca5[_0xe9ae('0x31')]['limit']);_0x369f1a[_0xe9ae('0x20')]=qs['offset'](_0x2baca5['query'][_0xe9ae('0x20')]);}_0x369f1a['order']=qs[_0xe9ae('0x39')](_0x2baca5[_0xe9ae('0x31')][_0xe9ae('0x39')]);_0x369f1a['where']=qs['filters'](_[_0xe9ae('0x3a')](_0x2baca5[_0xe9ae('0x31')],_0x407acc['filters']),_0xf59177);if(_0x2baca5[_0xe9ae('0x31')][_0xe9ae('0x3b')]){_0x369f1a[_0xe9ae('0x3c')]=_['merge'](_0x369f1a[_0xe9ae('0x3c')],{'$or':_['map'](_0xf59177,function(_0x4eefa3){if(_0x4eefa3[_0xe9ae('0x2e')]!==_0xe9ae('0x3d')){var _0x24ba0e={};_0x24ba0e[_0x4eefa3[_0xe9ae('0x29')]]={'$like':'%'+_0x2baca5[_0xe9ae('0x31')]['filter']+'%'};return _0x24ba0e;}})});}_0x369f1a=_[_0xe9ae('0x3e')]({},_0x369f1a,_0x2baca5[_0xe9ae('0x3f')]);var _0x4f3a45={'where':_0x369f1a['where']};return db[_0xe9ae('0x2d')][_0xe9ae('0x23')](_0x4f3a45)[_0xe9ae('0x28')](function(_0x28be41){_0x4ba761[_0xe9ae('0x23')]=_0x28be41;if(_0x2baca5['query'][_0xe9ae('0x40')]){_0x369f1a[_0xe9ae('0x41')]=[{'all':!![]}];}return db['FreshsalesAccount']['findAll'](_0x369f1a);})[_0xe9ae('0x28')](function(_0x4c42b8){_0x4ba761[_0xe9ae('0x42')]=_0x4c42b8;return _0x4ba761;})[_0xe9ae('0x28')](respondWithFilteredResult(_0x4f4881,_0x369f1a))[_0xe9ae('0x43')](handleError(_0x4f4881,null));};exports[_0xe9ae('0x44')]=function(_0x37959f,_0x5a76cf){var _0x1f3928={'raw':![],'where':{'id':_0x37959f['params']['id']}},_0x1933b3={};_0x1933b3[_0xe9ae('0x30')]=_['keys'](db[_0xe9ae('0x2d')][_0xe9ae('0x45')]);_0x1933b3[_0xe9ae('0x31')]=_[_0xe9ae('0x46')](_0x37959f[_0xe9ae('0x31')]);_0x1933b3[_0xe9ae('0x32')]=_[_0xe9ae('0x33')](_0x1933b3[_0xe9ae('0x30')],_0x1933b3['query']);_0x1f3928[_0xe9ae('0x34')]=_[_0xe9ae('0x33')](_0x1933b3[_0xe9ae('0x30')],qs[_0xe9ae('0x35')](_0x37959f[_0xe9ae('0x31')][_0xe9ae('0x35')]));_0x1f3928[_0xe9ae('0x34')]=_0x1f3928[_0xe9ae('0x34')]['length']?_0x1f3928[_0xe9ae('0x34')]:_0x1933b3[_0xe9ae('0x30')];if(_0x37959f[_0xe9ae('0x31')][_0xe9ae('0x40')]){_0x1f3928['include']=[{'all':!![]}];}_0x1f3928=_[_0xe9ae('0x3e')]({},_0x1f3928,_0x37959f[_0xe9ae('0x3f')]);return db[_0xe9ae('0x2d')]['find'](_0x1f3928)['then'](handleEntityNotFound(_0x5a76cf,null))[_0xe9ae('0x28')](respondWithResult(_0x5a76cf,null))['catch'](handleError(_0x5a76cf,null));};exports[_0xe9ae('0x47')]=function(_0x36fa79,_0x34c7d0){return db['FreshsalesAccount']['create'](_0x36fa79['body'],{})[_0xe9ae('0x28')](respondWithResult(_0x34c7d0,0xc9))[_0xe9ae('0x43')](handleError(_0x34c7d0,null));};exports[_0xe9ae('0x27')]=function(_0x5829ba,_0x448897){if(_0x5829ba['body']['id']){delete _0x5829ba['body']['id'];}return db[_0xe9ae('0x2d')][_0xe9ae('0x48')]({'where':{'id':_0x5829ba[_0xe9ae('0x49')]['id']}})[_0xe9ae('0x28')](handleEntityNotFound(_0x448897,null))[_0xe9ae('0x28')](saveUpdates(_0x5829ba[_0xe9ae('0x4a')],null))[_0xe9ae('0x28')](respondWithResult(_0x448897,null))[_0xe9ae('0x43')](handleError(_0x448897,null));};exports['destroy']=function(_0x3fb2dc,_0x239868){return db[_0xe9ae('0x2d')][_0xe9ae('0x48')]({'where':{'id':_0x3fb2dc['params']['id']}})[_0xe9ae('0x28')](handleEntityNotFound(_0x239868,null))[_0xe9ae('0x28')](removeEntity(_0x239868,null))[_0xe9ae('0x43')](handleError(_0x239868,null));};exports[_0xe9ae('0x4b')]=function(_0x2ecfac,_0x58d2e9,_0x12df1b){var _0x45e536={};var _0x52cbe6={};var _0x3987fe;var _0x154ba4;return db[_0xe9ae('0x2d')]['findOne']({'where':{'id':_0x2ecfac[_0xe9ae('0x49')]['id']}})[_0xe9ae('0x28')](handleEntityNotFound(_0x58d2e9,null))[_0xe9ae('0x28')](function(_0x304eb){if(_0x304eb){_0x3987fe=_0x304eb;_0x52cbe6[_0xe9ae('0x30')]=_[_0xe9ae('0x46')](db['FreshsalesConfiguration'][_0xe9ae('0x45')]);_0x52cbe6['query']=_[_0xe9ae('0x46')](_0x2ecfac[_0xe9ae('0x31')]);_0x52cbe6['filters']=_[_0xe9ae('0x33')](_0x52cbe6[_0xe9ae('0x30')],_0x52cbe6[_0xe9ae('0x31')]);_0x45e536['attributes']=_[_0xe9ae('0x33')](_0x52cbe6['model'],qs[_0xe9ae('0x35')](_0x2ecfac[_0xe9ae('0x31')][_0xe9ae('0x35')]));_0x45e536['attributes']=_0x45e536[_0xe9ae('0x34')][_0xe9ae('0x36')]?_0x45e536[_0xe9ae('0x34')]:_0x52cbe6['model'];_0x45e536[_0xe9ae('0x4c')]=qs[_0xe9ae('0x39')](_0x2ecfac[_0xe9ae('0x31')][_0xe9ae('0x39')]);_0x45e536['where']=qs['filters'](_[_0xe9ae('0x3a')](_0x2ecfac[_0xe9ae('0x31')],_0x52cbe6[_0xe9ae('0x32')]));if(_0x2ecfac[_0xe9ae('0x31')][_0xe9ae('0x3b')]){_0x45e536[_0xe9ae('0x3c')]=_[_0xe9ae('0x3e')](_0x45e536['where'],{'$or':_[_0xe9ae('0x2c')](_0x45e536[_0xe9ae('0x34')],function(_0x5c7883){var _0x3b26ce={};_0x3b26ce[_0x5c7883]={'$like':'%'+_0x2ecfac['query']['filter']+'%'};return _0x3b26ce;})});}_0x45e536=_[_0xe9ae('0x3e')]({},_0x45e536,_0x2ecfac[_0xe9ae('0x3f')]);return _0x3987fe[_0xe9ae('0x4b')](_0x45e536);}})[_0xe9ae('0x28')](function(_0x481daa){if(_0x481daa){_0x154ba4=_0x481daa[_0xe9ae('0x36')];if(!_0x2ecfac[_0xe9ae('0x31')][_0xe9ae('0x37')](_0xe9ae('0x38'))){_0x45e536[_0xe9ae('0x22')]=qs['limit'](_0x2ecfac[_0xe9ae('0x31')][_0xe9ae('0x22')]);_0x45e536[_0xe9ae('0x20')]=qs['offset'](_0x2ecfac[_0xe9ae('0x31')][_0xe9ae('0x20')]);}return _0x3987fe[_0xe9ae('0x4b')](_0x45e536);}})['then'](function(_0x3c145e){if(_0x3c145e){return _0x3c145e?{'count':_0x154ba4,'rows':_0x3c145e}:null;}})['then'](respondWithResult(_0x58d2e9,null))['catch'](handleError(_0x58d2e9,null));};exports['addConfiguration']=function(_0x2feca7,_0x1b6114,_0x2f8c66){if(_0x2feca7[_0xe9ae('0x4a')]['id']){delete _0x2feca7[_0xe9ae('0x4a')]['id'];}return db[_0xe9ae('0x2d')][_0xe9ae('0x4d')]({'where':{'id':_0x2feca7[_0xe9ae('0x49')]['id']}})[_0xe9ae('0x28')](handleEntityNotFound(_0x1b6114,null))[_0xe9ae('0x28')](function(_0x3eb255){if(_0x3eb255){_0x2feca7['body'][_0xe9ae('0x4e')]=_0x3eb255['id'];_0x2feca7[_0xe9ae('0x4a')][_0xe9ae('0x4f')]=integrations[_0xe9ae('0x50')](_0x2feca7[_0xe9ae('0x4a')][_0xe9ae('0x51')],_0x2feca7[_0xe9ae('0x4a')][_0xe9ae('0x2e')]);_0x2feca7[_0xe9ae('0x4a')][_0xe9ae('0x52')]=integrations['getDescriptions'](_0x2feca7[_0xe9ae('0x4a')][_0xe9ae('0x51')],_0x2feca7[_0xe9ae('0x4a')][_0xe9ae('0x2e')]);return db[_0xe9ae('0x53')][_0xe9ae('0x47')](_0x2feca7[_0xe9ae('0x4a')],{'include':[{'model':db[_0xe9ae('0x54')],'as':'Subjects'},{'model':db['FreshsalesField'],'as':_0xe9ae('0x52')}]});}return null;})[_0xe9ae('0x28')](respondWithResult(_0x1b6114,null))[_0xe9ae('0x43')](handleError(_0x1b6114,null));};exports['getFields']=function(_0x46f3d8,_0xeb143b,_0x389f87){var _0x31fdda='';var _0x2f45ee='';return db[_0xe9ae('0x2d')][_0xe9ae('0x4d')]({'where':{'id':_0x46f3d8['params']['id']},'attributes':['id',_0xe9ae('0x55'),_0xe9ae('0x56'),_0xe9ae('0x57')]})['then'](handleEntityNotFound(_0xeb143b,null))[_0xe9ae('0x28')](function(_0x770d9d){if(_0x770d9d){_0x2f45ee=_0x770d9d[_0xe9ae('0x55')];_0x31fdda=_0x770d9d[_0xe9ae('0x56')];var _0x11ae66=_0x770d9d[_0xe9ae('0x56')][_0xe9ae('0x58')](-0x1);if(_0x11ae66==='/'){_0x31fdda=_0x31fdda['substring'](0x0,_0x31fdda[_0xe9ae('0x59')](_0x11ae66));}return rp({'method':'GET','uri':util[_0xe9ae('0x5a')](_0xe9ae('0x5b'),_0x31fdda,_0xe9ae('0x5c')),'headers':{'Authorization':_0xe9ae('0x5d')+_0x770d9d['apiKey']},'json':!![]});}})['then'](function(_0x5751f5){if(_0x5751f5){var _0x172a89=_0x5751f5['users'];var _0x258e47=![];var _0x55d7e2=null;for(_0x55d7e2=0x0;_0x55d7e2<_0x172a89['length'];_0x55d7e2++){if(_0x172a89[_0x55d7e2]['email']===_0x2f45ee){_0x258e47=!![];}}if(_0x258e47){return!![];}else{throw new Error({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}})[_0xe9ae('0x28')](respondWithResult(_0xeb143b,null))[_0xe9ae('0x43')](function(_0x36b916){var _0x17c5ad=_0x46f3d8[_0xe9ae('0x31')][_0xe9ae('0x5e')]?0x1f4:_0x36b916[_0xe9ae('0x5f')]||0x1f4;logger[_0xe9ae('0x60')](_0xe9ae('0x61'),'getFields',_0x17c5ad,JSON[_0xe9ae('0x62')](_0x36b916));delete _0x36b916['name'];if(_0x17c5ad===0x191){_0x17c5ad=0x190;}_0xeb143b[_0xe9ae('0x1d')](_0x17c5ad)['send'](_0x46f3d8[_0xe9ae('0x31')][_0xe9ae('0x5e')]?{'message':_0xe9ae('0x63'),'statusCode':_0x36b916[_0xe9ae('0x5f')]}:_0x36b916);});};
\ No newline at end of file
+var _0xb3ed=['key','query','filters','model','attributes','intersection','fields','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','include','catch','show','params','keys','length','includeAll','find','body','findOne','FreshsalesConfiguration','getConfigurations','hasOwnProperty','addConfiguration','getSubjects','channel','getDescriptions','create','Subjects','FreshsalesField','getFields','username','remoteUri','apiKey','substring','lastIndexOf','GET','format','Token\x20token=','users','email','Requested\x20Resource\x20not\x20Found','test','statusCode','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','limit','count','offset','Content-Range','reject','update','destroy','then','error','stack','name','send','index','map','FreshsalesAccount','rawAttributes','fieldName','type'];(function(_0x5a118e,_0x31ef02){var _0x8cc18f=function(_0x13a2c3){while(--_0x13a2c3){_0x5a118e['push'](_0x5a118e['shift']());}};_0x8cc18f(++_0x31ef02);}(_0xb3ed,0x95));var _0xdb3e=function(_0x165d30,_0x6a621e){_0x165d30=_0x165d30-0x0;var _0x275385=_0xb3ed[_0x165d30];return _0x275385;};'use strict';var emlformat=require(_0xdb3e('0x0'));var rimraf=require(_0xdb3e('0x1'));var zipdir=require(_0xdb3e('0x2'));var jsonpatch=require(_0xdb3e('0x3'));var rp=require(_0xdb3e('0x4'));var moment=require(_0xdb3e('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xdb3e('0x6'));var util=require('util');var path=require(_0xdb3e('0x7'));var sox=require(_0xdb3e('0x8'));var csv=require(_0xdb3e('0x9'));var ejs=require(_0xdb3e('0xa'));var fs=require('fs');var fs_extra=require(_0xdb3e('0xb'));var _=require(_0xdb3e('0xc'));var squel=require(_0xdb3e('0xd'));var crypto=require(_0xdb3e('0xe'));var jsforce=require(_0xdb3e('0xf'));var deskjs=require(_0xdb3e('0x10'));var toCsv=require(_0xdb3e('0x9'));var querystring=require('querystring');var Papa=require(_0xdb3e('0x11'));var Redis=require('ioredis');var authService=require(_0xdb3e('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xdb3e('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xdb3e('0x14'))('api');var utils=require(_0xdb3e('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xdb3e('0x16'))['db'];var integrations=require(_0xdb3e('0x17'));function respondWithStatusCode(_0x43c12c,_0x5f1be5){_0x5f1be5=_0x5f1be5||0xcc;return function(_0x109687){if(_0x109687){return _0x43c12c[_0xdb3e('0x18')](_0x5f1be5);}return _0x43c12c[_0xdb3e('0x19')](_0x5f1be5)[_0xdb3e('0x1a')]();};}function respondWithResult(_0x50f6a9,_0x8e816a){_0x8e816a=_0x8e816a||0xc8;return function(_0x542c49){if(_0x542c49){return _0x50f6a9[_0xdb3e('0x19')](_0x8e816a)['json'](_0x542c49);}};}function respondWithFilteredResult(_0x2834c4,_0x1abd25){return function(_0x59d75c){if(_0x59d75c){var _0x52336d=typeof _0x1abd25['offset']==='undefined'&&typeof _0x1abd25[_0xdb3e('0x1b')]==='undefined';var _0x19ac74=_0x59d75c[_0xdb3e('0x1c')];var _0x237287=_0x52336d?0x0:_0x1abd25[_0xdb3e('0x1d')];var _0x328ab6=_0x52336d?_0x59d75c['count']:_0x1abd25['offset']+_0x1abd25['limit'];var _0x1c1701;if(_0x328ab6>=_0x19ac74){_0x328ab6=_0x19ac74;_0x1c1701=0xc8;}else{_0x1c1701=0xce;}_0x2834c4[_0xdb3e('0x19')](_0x1c1701);return _0x2834c4['set'](_0xdb3e('0x1e'),_0x237287+'-'+_0x328ab6+'/'+_0x19ac74)['json'](_0x59d75c);}return null;};}function patchUpdates(_0x70a9d7){return function(_0x4c9c44){try{jsonpatch['apply'](_0x4c9c44,_0x70a9d7,!![]);}catch(_0x1d5202){return BPromise[_0xdb3e('0x1f')](_0x1d5202);}return _0x4c9c44['save']();};}function saveUpdates(_0x583728,_0x5c074f){return function(_0xa5bfb9){if(_0xa5bfb9){return _0xa5bfb9[_0xdb3e('0x20')](_0x583728)['then'](function(_0x4200c8){return _0x4200c8;});}return null;};}function removeEntity(_0x2793aa,_0x5bdc73){return function(_0x3de39a){if(_0x3de39a){return _0x3de39a[_0xdb3e('0x21')]()[_0xdb3e('0x22')](function(){_0x2793aa[_0xdb3e('0x19')](0xcc)[_0xdb3e('0x1a')]();});}};}function handleEntityNotFound(_0x1b644,_0x209735){return function(_0x3e3029){if(!_0x3e3029){_0x1b644[_0xdb3e('0x18')](0x194);}return _0x3e3029;};}function handleError(_0x200f40,_0x350cf8){_0x350cf8=_0x350cf8||0x1f4;return function(_0x165258){logger[_0xdb3e('0x23')](_0x165258[_0xdb3e('0x24')]);if(_0x165258[_0xdb3e('0x25')]){delete _0x165258[_0xdb3e('0x25')];}_0x200f40[_0xdb3e('0x19')](_0x350cf8)[_0xdb3e('0x26')](_0x165258);};}exports[_0xdb3e('0x27')]=function(_0x879cdb,_0x2725de){var _0x855151={},_0x503fa3={},_0xa3cfe6={'count':0x0,'rows':[]};var _0x400b3a=_[_0xdb3e('0x28')](db[_0xdb3e('0x29')][_0xdb3e('0x2a')],function(_0x288f20){return{'name':_0x288f20[_0xdb3e('0x2b')],'type':_0x288f20[_0xdb3e('0x2c')][_0xdb3e('0x2d')]};});_0x503fa3['model']=_['map'](_0x400b3a,'name');_0x503fa3[_0xdb3e('0x2e')]=_['keys'](_0x879cdb[_0xdb3e('0x2e')]);_0x503fa3[_0xdb3e('0x2f')]=_['intersection'](_0x503fa3[_0xdb3e('0x30')],_0x503fa3[_0xdb3e('0x2e')]);_0x855151[_0xdb3e('0x31')]=_[_0xdb3e('0x32')](_0x503fa3[_0xdb3e('0x30')],qs[_0xdb3e('0x33')](_0x879cdb[_0xdb3e('0x2e')][_0xdb3e('0x33')]));_0x855151[_0xdb3e('0x31')]=_0x855151[_0xdb3e('0x31')]['length']?_0x855151[_0xdb3e('0x31')]:_0x503fa3[_0xdb3e('0x30')];if(!_0x879cdb[_0xdb3e('0x2e')]['hasOwnProperty'](_0xdb3e('0x34'))){_0x855151[_0xdb3e('0x1b')]=qs[_0xdb3e('0x1b')](_0x879cdb[_0xdb3e('0x2e')]['limit']);_0x855151[_0xdb3e('0x1d')]=qs[_0xdb3e('0x1d')](_0x879cdb[_0xdb3e('0x2e')]['offset']);}_0x855151[_0xdb3e('0x35')]=qs[_0xdb3e('0x36')](_0x879cdb[_0xdb3e('0x2e')][_0xdb3e('0x36')]);_0x855151['where']=qs[_0xdb3e('0x2f')](_[_0xdb3e('0x37')](_0x879cdb[_0xdb3e('0x2e')],_0x503fa3[_0xdb3e('0x2f')]),_0x400b3a);if(_0x879cdb[_0xdb3e('0x2e')][_0xdb3e('0x38')]){_0x855151[_0xdb3e('0x39')]=_[_0xdb3e('0x3a')](_0x855151[_0xdb3e('0x39')],{'$or':_[_0xdb3e('0x28')](_0x400b3a,function(_0x193a95){if(_0x193a95[_0xdb3e('0x2c')]!==_0xdb3e('0x3b')){var _0x25b064={};_0x25b064[_0x193a95[_0xdb3e('0x25')]]={'$like':'%'+_0x879cdb[_0xdb3e('0x2e')][_0xdb3e('0x38')]+'%'};return _0x25b064;}})});}_0x855151=_[_0xdb3e('0x3a')]({},_0x855151,_0x879cdb[_0xdb3e('0x3c')]);var _0x3a2a5a={'where':_0x855151['where']};return db[_0xdb3e('0x29')]['count'](_0x3a2a5a)[_0xdb3e('0x22')](function(_0x1e426a){_0xa3cfe6[_0xdb3e('0x1c')]=_0x1e426a;if(_0x879cdb['query']['includeAll']){_0x855151[_0xdb3e('0x3d')]=[{'all':!![]}];}return db[_0xdb3e('0x29')]['findAll'](_0x855151);})[_0xdb3e('0x22')](function(_0x47ef09){_0xa3cfe6['rows']=_0x47ef09;return _0xa3cfe6;})[_0xdb3e('0x22')](respondWithFilteredResult(_0x2725de,_0x855151))[_0xdb3e('0x3e')](handleError(_0x2725de,null));};exports[_0xdb3e('0x3f')]=function(_0x37e4b0,_0x440692){var _0x1f711a={'raw':![],'where':{'id':_0x37e4b0[_0xdb3e('0x40')]['id']}},_0x360ecf={};_0x360ecf[_0xdb3e('0x30')]=_[_0xdb3e('0x41')](db[_0xdb3e('0x29')][_0xdb3e('0x2a')]);_0x360ecf[_0xdb3e('0x2e')]=_[_0xdb3e('0x41')](_0x37e4b0[_0xdb3e('0x2e')]);_0x360ecf[_0xdb3e('0x2f')]=_[_0xdb3e('0x32')](_0x360ecf[_0xdb3e('0x30')],_0x360ecf[_0xdb3e('0x2e')]);_0x1f711a[_0xdb3e('0x31')]=_['intersection'](_0x360ecf[_0xdb3e('0x30')],qs[_0xdb3e('0x33')](_0x37e4b0['query'][_0xdb3e('0x33')]));_0x1f711a[_0xdb3e('0x31')]=_0x1f711a[_0xdb3e('0x31')][_0xdb3e('0x42')]?_0x1f711a[_0xdb3e('0x31')]:_0x360ecf[_0xdb3e('0x30')];if(_0x37e4b0[_0xdb3e('0x2e')][_0xdb3e('0x43')]){_0x1f711a[_0xdb3e('0x3d')]=[{'all':!![]}];}_0x1f711a=_[_0xdb3e('0x3a')]({},_0x1f711a,_0x37e4b0[_0xdb3e('0x3c')]);return db[_0xdb3e('0x29')][_0xdb3e('0x44')](_0x1f711a)[_0xdb3e('0x22')](handleEntityNotFound(_0x440692,null))[_0xdb3e('0x22')](respondWithResult(_0x440692,null))[_0xdb3e('0x3e')](handleError(_0x440692,null));};exports['create']=function(_0x3f645f,_0x4dd44c){return db[_0xdb3e('0x29')]['create'](_0x3f645f[_0xdb3e('0x45')],{})[_0xdb3e('0x22')](respondWithResult(_0x4dd44c,0xc9))[_0xdb3e('0x3e')](handleError(_0x4dd44c,null));};exports[_0xdb3e('0x20')]=function(_0x5f4e97,_0x2db2ca){if(_0x5f4e97[_0xdb3e('0x45')]['id']){delete _0x5f4e97[_0xdb3e('0x45')]['id'];}return db['FreshsalesAccount'][_0xdb3e('0x44')]({'where':{'id':_0x5f4e97['params']['id']}})[_0xdb3e('0x22')](handleEntityNotFound(_0x2db2ca,null))[_0xdb3e('0x22')](saveUpdates(_0x5f4e97[_0xdb3e('0x45')],null))['then'](respondWithResult(_0x2db2ca,null))['catch'](handleError(_0x2db2ca,null));};exports[_0xdb3e('0x21')]=function(_0xbda8a0,_0x73cbe4){return db['FreshsalesAccount'][_0xdb3e('0x44')]({'where':{'id':_0xbda8a0['params']['id']}})[_0xdb3e('0x22')](handleEntityNotFound(_0x73cbe4,null))[_0xdb3e('0x22')](removeEntity(_0x73cbe4,null))[_0xdb3e('0x3e')](handleError(_0x73cbe4,null));};exports['getConfigurations']=function(_0x4100b5,_0x2cf227,_0x2f768f){var _0x9a4b81={};var _0x2197b0={};var _0xa0fb17;var _0x4ce8c7;return db[_0xdb3e('0x29')][_0xdb3e('0x46')]({'where':{'id':_0x4100b5['params']['id']}})[_0xdb3e('0x22')](handleEntityNotFound(_0x2cf227,null))[_0xdb3e('0x22')](function(_0x43eb45){if(_0x43eb45){_0xa0fb17=_0x43eb45;_0x2197b0[_0xdb3e('0x30')]=_[_0xdb3e('0x41')](db[_0xdb3e('0x47')][_0xdb3e('0x2a')]);_0x2197b0[_0xdb3e('0x2e')]=_[_0xdb3e('0x41')](_0x4100b5[_0xdb3e('0x2e')]);_0x2197b0[_0xdb3e('0x2f')]=_['intersection'](_0x2197b0['model'],_0x2197b0[_0xdb3e('0x2e')]);_0x9a4b81['attributes']=_['intersection'](_0x2197b0[_0xdb3e('0x30')],qs[_0xdb3e('0x33')](_0x4100b5[_0xdb3e('0x2e')]['fields']));_0x9a4b81[_0xdb3e('0x31')]=_0x9a4b81[_0xdb3e('0x31')]['length']?_0x9a4b81[_0xdb3e('0x31')]:_0x2197b0[_0xdb3e('0x30')];_0x9a4b81[_0xdb3e('0x35')]=qs[_0xdb3e('0x36')](_0x4100b5[_0xdb3e('0x2e')][_0xdb3e('0x36')]);_0x9a4b81['where']=qs[_0xdb3e('0x2f')](_[_0xdb3e('0x37')](_0x4100b5[_0xdb3e('0x2e')],_0x2197b0['filters']));if(_0x4100b5[_0xdb3e('0x2e')][_0xdb3e('0x38')]){_0x9a4b81['where']=_[_0xdb3e('0x3a')](_0x9a4b81[_0xdb3e('0x39')],{'$or':_[_0xdb3e('0x28')](_0x9a4b81['attributes'],function(_0x37dda1){var _0x31a6b1={};_0x31a6b1[_0x37dda1]={'$like':'%'+_0x4100b5['query'][_0xdb3e('0x38')]+'%'};return _0x31a6b1;})});}_0x9a4b81=_[_0xdb3e('0x3a')]({},_0x9a4b81,_0x4100b5[_0xdb3e('0x3c')]);return _0xa0fb17[_0xdb3e('0x48')](_0x9a4b81);}})[_0xdb3e('0x22')](function(_0x22a2e3){if(_0x22a2e3){_0x4ce8c7=_0x22a2e3['length'];if(!_0x4100b5[_0xdb3e('0x2e')][_0xdb3e('0x49')](_0xdb3e('0x34'))){_0x9a4b81[_0xdb3e('0x1b')]=qs[_0xdb3e('0x1b')](_0x4100b5['query'][_0xdb3e('0x1b')]);_0x9a4b81['offset']=qs[_0xdb3e('0x1d')](_0x4100b5['query'][_0xdb3e('0x1d')]);}return _0xa0fb17[_0xdb3e('0x48')](_0x9a4b81);}})[_0xdb3e('0x22')](function(_0x89d8d7){if(_0x89d8d7){return _0x89d8d7?{'count':_0x4ce8c7,'rows':_0x89d8d7}:null;}})['then'](respondWithResult(_0x2cf227,null))['catch'](handleError(_0x2cf227,null));};exports[_0xdb3e('0x4a')]=function(_0x3099eb,_0x23cfac,_0x33a387){if(_0x3099eb[_0xdb3e('0x45')]['id']){delete _0x3099eb[_0xdb3e('0x45')]['id'];}return db[_0xdb3e('0x29')][_0xdb3e('0x46')]({'where':{'id':_0x3099eb[_0xdb3e('0x40')]['id']}})['then'](handleEntityNotFound(_0x23cfac,null))[_0xdb3e('0x22')](function(_0x4651f7){if(_0x4651f7){_0x3099eb[_0xdb3e('0x45')]['AccountId']=_0x4651f7['id'];_0x3099eb['body']['Subjects']=integrations[_0xdb3e('0x4b')](_0x3099eb[_0xdb3e('0x45')][_0xdb3e('0x4c')],_0x3099eb[_0xdb3e('0x45')][_0xdb3e('0x2c')]);_0x3099eb[_0xdb3e('0x45')]['Descriptions']=integrations[_0xdb3e('0x4d')](_0x3099eb[_0xdb3e('0x45')][_0xdb3e('0x4c')],_0x3099eb['body'][_0xdb3e('0x2c')]);return db[_0xdb3e('0x47')][_0xdb3e('0x4e')](_0x3099eb[_0xdb3e('0x45')],{'include':[{'model':db['FreshsalesField'],'as':_0xdb3e('0x4f')},{'model':db[_0xdb3e('0x50')],'as':'Descriptions'}]});}return null;})[_0xdb3e('0x22')](respondWithResult(_0x23cfac,null))[_0xdb3e('0x3e')](handleError(_0x23cfac,null));};exports[_0xdb3e('0x51')]=function(_0x347471,_0x464e06,_0x51d222){var _0x195965='';var _0xb862ca='';return db[_0xdb3e('0x29')][_0xdb3e('0x46')]({'where':{'id':_0x347471[_0xdb3e('0x40')]['id']},'attributes':['id',_0xdb3e('0x52'),_0xdb3e('0x53'),_0xdb3e('0x54')]})[_0xdb3e('0x22')](handleEntityNotFound(_0x464e06,null))[_0xdb3e('0x22')](function(_0x4739fc){if(_0x4739fc){_0xb862ca=_0x4739fc['username'];_0x195965=_0x4739fc['remoteUri'];var _0x52339a=_0x4739fc['remoteUri']['slice'](-0x1);if(_0x52339a==='/'){_0x195965=_0x195965[_0xdb3e('0x55')](0x0,_0x195965[_0xdb3e('0x56')](_0x52339a));}return rp({'method':_0xdb3e('0x57'),'uri':util[_0xdb3e('0x58')]('%s%s',_0x195965,'/api/selector/owners'),'headers':{'Authorization':_0xdb3e('0x59')+_0x4739fc[_0xdb3e('0x54')]},'json':!![]});}})[_0xdb3e('0x22')](function(_0xaa2ed6){if(_0xaa2ed6){var _0x6518f1=_0xaa2ed6[_0xdb3e('0x5a')];var _0x2fbbe4=![];var _0xb757c=null;for(_0xb757c=0x0;_0xb757c<_0x6518f1[_0xdb3e('0x42')];_0xb757c++){if(_0x6518f1[_0xb757c][_0xdb3e('0x5b')]===_0xb862ca){_0x2fbbe4=!![];}}if(_0x2fbbe4){return!![];}else{throw new Error({'statusCode':0x194,'message':_0xdb3e('0x5c')});}}})['then'](respondWithResult(_0x464e06,null))[_0xdb3e('0x3e')](function(_0x58e5f5){var _0x523bab=_0x347471[_0xdb3e('0x2e')][_0xdb3e('0x5d')]?0x1f4:_0x58e5f5[_0xdb3e('0x5e')]||0x1f4;logger[_0xdb3e('0x23')]('getFields,\x20%s,\x20%s,\x20%s',_0xdb3e('0x51'),_0x523bab,JSON[_0xdb3e('0x5f')](_0x58e5f5));delete _0x58e5f5[_0xdb3e('0x25')];if(_0x523bab===0x191){_0x523bab=0x190;}_0x464e06['status'](_0x523bab)[_0xdb3e('0x26')](_0x347471[_0xdb3e('0x2e')][_0xdb3e('0x5d')]?{'message':_0xdb3e('0x60'),'statusCode':_0x58e5f5[_0xdb3e('0x5e')]}:_0x58e5f5);});};
\ No newline at end of file
index 53afaba..6264e0c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fab=['lodash','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intFreshsalesAccount.attributes','../../components/integrations/configuration','exports','define','FreshsalesAccount','int_freshsales_accounts'];(function(_0x291d3f,_0x3ef99f){var _0x242080=function(_0x257705){while(--_0x257705){_0x291d3f['push'](_0x291d3f['shift']());}};_0x242080(++_0x3ef99f);}(_0x5fab,0x177));var _0xb5fa=function(_0x44aac2,_0x336163){_0x44aac2=_0x44aac2-0x0;var _0x38a6bc=_0x5fab[_0x44aac2];return _0x38a6bc;};'use strict';var _=require(_0xb5fa('0x0'));var util=require(_0xb5fa('0x1'));var logger=require('../../config/logger')(_0xb5fa('0x2'));var moment=require(_0xb5fa('0x3'));var BPromise=require(_0xb5fa('0x4'));var rp=require(_0xb5fa('0x5'));var fs=require('fs');var path=require(_0xb5fa('0x6'));var rimraf=require(_0xb5fa('0x7'));var config=require(_0xb5fa('0x8'));var attributes=require(_0xb5fa('0x9'));var integrations=require(_0xb5fa('0xa'));module[_0xb5fa('0xb')]=function(_0x4a0249,_0x5d70f6){return _0x4a0249[_0xb5fa('0xc')](_0xb5fa('0xd'),attributes,{'tableName':_0xb5fa('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1261=['util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intFreshsalesAccount.attributes','FreshsalesAccount','int_freshsales_accounts'];(function(_0x4ff5b2,_0x3fc06e){var _0x4d48e4=function(_0x4c9ff8){while(--_0x4c9ff8){_0x4ff5b2['push'](_0x4ff5b2['shift']());}};_0x4d48e4(++_0x3fc06e);}(_0x1261,0x144));var _0x1126=function(_0x291c1b,_0x5216a6){_0x291c1b=_0x291c1b-0x0;var _0x2109c9=_0x1261[_0x291c1b];return _0x2109c9;};'use strict';var _=require('lodash');var util=require(_0x1126('0x0'));var logger=require(_0x1126('0x1'))(_0x1126('0x2'));var moment=require(_0x1126('0x3'));var BPromise=require(_0x1126('0x4'));var rp=require(_0x1126('0x5'));var fs=require('fs');var path=require(_0x1126('0x6'));var rimraf=require(_0x1126('0x7'));var config=require(_0x1126('0x8'));var attributes=require(_0x1126('0x9'));var integrations=require('../../components/integrations/configuration');module['exports']=function(_0x40ba58,_0x907180){return _0x40ba58['define'](_0x1126('0xa'),attributes,{'tableName':_0x1126('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9307905..66616b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x77e6=['result','catch','FreshsalesAccount','findAll','options','where','attributes','limit','include','model','map','GetFreshsalesAccount','ShowFreshsalesAccount','find','raw','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','request','then','info','request\x20sent','debug','FreshsalesAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','FreshsalesAccount,\x20%s,\x20%s','message'];(function(_0x566501,_0x25f894){var _0x5a8b63=function(_0x2d76b6){while(--_0x2d76b6){_0x566501['push'](_0x566501['shift']());}};_0x5a8b63(++_0x25f894);}(_0x77e6,0x1a6));var _0x677e=function(_0x5040c0,_0x34a2b3){_0x5040c0=_0x5040c0-0x0;var _0x2fff06=_0x77e6[_0x5040c0];return _0x2fff06;};'use strict';var _=require(_0x677e('0x0'));var util=require(_0x677e('0x1'));var moment=require(_0x677e('0x2'));var BPromise=require(_0x677e('0x3'));var rs=require(_0x677e('0x4'));var fs=require('fs');var Redis=require(_0x677e('0x5'));var db=require(_0x677e('0x6'))['db'];var utils=require(_0x677e('0x7'));var logger=require('../../config/logger')(_0x677e('0x8'));var config=require(_0x677e('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x677e('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x40d314,_0x4d1a57,_0x5a5dd3){return new BPromise(function(_0x2eb40c,_0x4c519f){return client[_0x677e('0xb')](_0x40d314,_0x5a5dd3)[_0x677e('0xc')](function(_0x552931){logger[_0x677e('0xd')]('FreshsalesAccount,\x20%s,\x20%s',_0x4d1a57,_0x677e('0xe'));logger[_0x677e('0xf')](_0x677e('0x10'),_0x4d1a57,_0x677e('0xe'),JSON[_0x677e('0x11')](_0x552931));if(_0x552931[_0x677e('0x12')]){if(_0x552931[_0x677e('0x12')][_0x677e('0x13')]===0x1f4){logger[_0x677e('0x12')](_0x677e('0x14'),_0x4d1a57,_0x552931[_0x677e('0x12')][_0x677e('0x15')]);return _0x4c519f(_0x552931[_0x677e('0x12')][_0x677e('0x15')]);}logger['error']('FreshsalesAccount,\x20%s,\x20%s',_0x4d1a57,_0x552931['error'][_0x677e('0x15')]);return _0x2eb40c(_0x552931[_0x677e('0x12')][_0x677e('0x15')]);}else{logger[_0x677e('0xd')](_0x677e('0x14'),_0x4d1a57,_0x677e('0xe'));_0x2eb40c(_0x552931[_0x677e('0x16')][_0x677e('0x15')]);}})[_0x677e('0x17')](function(_0x32d306){logger[_0x677e('0x12')](_0x677e('0x14'),_0x4d1a57,_0x32d306);_0x4c519f(_0x32d306);});});}exports['GetFreshsalesAccount']=function(_0x1c5124){var _0x2ef2bf=this;return new Promise(function(_0x385b06,_0x221b6d){return db[_0x677e('0x18')][_0x677e('0x19')]({'raw':_0x1c5124['options']?_0x1c5124[_0x677e('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x1c5124[_0x677e('0x1a')]?_0x1c5124[_0x677e('0x1a')][_0x677e('0x1b')]||null:null,'attributes':_0x1c5124['options']?_0x1c5124[_0x677e('0x1a')][_0x677e('0x1c')]||null:null,'limit':_0x1c5124[_0x677e('0x1a')]?_0x1c5124[_0x677e('0x1a')][_0x677e('0x1d')]||null:null,'include':_0x1c5124[_0x677e('0x1a')]?_0x1c5124[_0x677e('0x1a')]['include']?_['map'](_0x1c5124['options'][_0x677e('0x1e')],function(_0x154fce){return{'model':db[_0x154fce[_0x677e('0x1f')]],'as':_0x154fce['as'],'attributes':_0x154fce[_0x677e('0x1c')],'include':_0x154fce[_0x677e('0x1e')]?_[_0x677e('0x20')](_0x154fce[_0x677e('0x1e')],function(_0x42f2b8){return{'model':db[_0x42f2b8[_0x677e('0x1f')]],'as':_0x42f2b8['as'],'attributes':_0x42f2b8[_0x677e('0x1c')],'include':_0x42f2b8['include']?_['map'](_0x42f2b8[_0x677e('0x1e')],function(_0x184f68){return{'model':db[_0x184f68['model']],'as':_0x184f68['as'],'attributes':_0x184f68[_0x677e('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x677e('0xc')](function(_0xf6b3ad){logger[_0x677e('0xd')](_0x677e('0x21'),_0x1c5124);logger[_0x677e('0xf')]('GetFreshsalesAccount',_0x1c5124,JSON[_0x677e('0x11')](_0xf6b3ad));_0x385b06(_0xf6b3ad);})[_0x677e('0x17')](function(_0xeca8e2){logger[_0x677e('0x12')](_0x677e('0x21'),_0xeca8e2[_0x677e('0x15')],_0x1c5124);_0x221b6d(_0x2ef2bf[_0x677e('0x12')](0x1f4,_0xeca8e2[_0x677e('0x15')]));});});};exports[_0x677e('0x22')]=function(_0x4c5113){var _0x22ccfb=this;return new Promise(function(_0x3cac19,_0x2fb815){return db[_0x677e('0x18')][_0x677e('0x23')]({'raw':_0x4c5113[_0x677e('0x1a')]?_0x4c5113[_0x677e('0x1a')][_0x677e('0x24')]===undefined?!![]:![]:!![],'where':_0x4c5113[_0x677e('0x1a')]?_0x4c5113[_0x677e('0x1a')]['where']||null:null,'attributes':_0x4c5113[_0x677e('0x1a')]?_0x4c5113[_0x677e('0x1a')][_0x677e('0x1c')]||null:null,'include':_0x4c5113[_0x677e('0x1a')]?_0x4c5113[_0x677e('0x1a')][_0x677e('0x1e')]?_['map'](_0x4c5113[_0x677e('0x1a')][_0x677e('0x1e')],function(_0x2d0bc0){return{'model':db[_0x2d0bc0['model']],'as':_0x2d0bc0['as'],'attributes':_0x2d0bc0[_0x677e('0x1c')],'include':_0x2d0bc0[_0x677e('0x1e')]?_[_0x677e('0x20')](_0x2d0bc0[_0x677e('0x1e')],function(_0x35c945){return{'model':db[_0x35c945['model']],'as':_0x35c945['as'],'attributes':_0x35c945[_0x677e('0x1c')],'include':_0x35c945[_0x677e('0x1e')]?_[_0x677e('0x20')](_0x35c945[_0x677e('0x1e')],function(_0x548b22){return{'model':db[_0x548b22[_0x677e('0x1f')]],'as':_0x548b22['as'],'attributes':_0x548b22[_0x677e('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x677e('0xc')](function(_0x576443){logger['info'](_0x677e('0x22'),_0x4c5113);logger[_0x677e('0xf')]('ShowFreshsalesAccount',_0x4c5113,JSON[_0x677e('0x11')](_0x576443));_0x3cac19(_0x576443);})[_0x677e('0x17')](function(_0x497dca){logger['error'](_0x677e('0x22'),_0x497dca[_0x677e('0x15')],_0x4c5113);_0x2fb815(_0x22ccfb['error'](0x1f4,_0x497dca['message']));});});};
\ No newline at end of file
+var _0xc6ac=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','FreshsalesAccount,\x20%s,\x20%s','debug','FreshsalesAccount,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','GetFreshsalesAccount','FreshsalesAccount','findAll','options','raw','where','attributes','limit','map','include','model','stringify','catch','ShowFreshsalesAccount','find','lodash','util','moment','bluebird'];(function(_0x36eaaa,_0x326732){var _0x461349=function(_0x4e4180){while(--_0x4e4180){_0x36eaaa['push'](_0x36eaaa['shift']());}};_0x461349(++_0x326732);}(_0xc6ac,0x15b));var _0xcc6a=function(_0xe03bff,_0x2c764e){_0xe03bff=_0xe03bff-0x0;var _0xcb14ef=_0xc6ac[_0xe03bff];return _0xcb14ef;};'use strict';var _=require(_0xcc6a('0x0'));var util=require(_0xcc6a('0x1'));var moment=require(_0xcc6a('0x2'));var BPromise=require(_0xcc6a('0x3'));var rs=require(_0xcc6a('0x4'));var fs=require('fs');var Redis=require(_0xcc6a('0x5'));var db=require(_0xcc6a('0x6'))['db'];var utils=require(_0xcc6a('0x7'));var logger=require(_0xcc6a('0x8'))(_0xcc6a('0x9'));var config=require(_0xcc6a('0xa'));var jayson=require(_0xcc6a('0xb'));var client=jayson[_0xcc6a('0xc')][_0xcc6a('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x5f3887,_0x3dd497,_0x11b919){return new BPromise(function(_0xf02261,_0x560cc4){return client[_0xcc6a('0xe')](_0x5f3887,_0x11b919)[_0xcc6a('0xf')](function(_0x7806a0){logger[_0xcc6a('0x10')](_0xcc6a('0x11'),_0x3dd497,'request\x20sent');logger[_0xcc6a('0x12')](_0xcc6a('0x13'),_0x3dd497,_0xcc6a('0x14'),JSON['stringify'](_0x7806a0));if(_0x7806a0[_0xcc6a('0x15')]){if(_0x7806a0[_0xcc6a('0x15')][_0xcc6a('0x16')]===0x1f4){logger['error']('FreshsalesAccount,\x20%s,\x20%s',_0x3dd497,_0x7806a0[_0xcc6a('0x15')][_0xcc6a('0x17')]);return _0x560cc4(_0x7806a0[_0xcc6a('0x15')]['message']);}logger['error'](_0xcc6a('0x11'),_0x3dd497,_0x7806a0[_0xcc6a('0x15')][_0xcc6a('0x17')]);return _0xf02261(_0x7806a0[_0xcc6a('0x15')][_0xcc6a('0x17')]);}else{logger[_0xcc6a('0x10')](_0xcc6a('0x11'),_0x3dd497,_0xcc6a('0x14'));_0xf02261(_0x7806a0['result']['message']);}})['catch'](function(_0x395a55){logger[_0xcc6a('0x15')](_0xcc6a('0x11'),_0x3dd497,_0x395a55);_0x560cc4(_0x395a55);});});}exports[_0xcc6a('0x18')]=function(_0x33079c){var _0x12ef33=this;return new Promise(function(_0x2d9585,_0x412bc7){return db[_0xcc6a('0x19')][_0xcc6a('0x1a')]({'raw':_0x33079c[_0xcc6a('0x1b')]?_0x33079c['options'][_0xcc6a('0x1c')]===undefined?!![]:![]:!![],'where':_0x33079c[_0xcc6a('0x1b')]?_0x33079c[_0xcc6a('0x1b')][_0xcc6a('0x1d')]||null:null,'attributes':_0x33079c[_0xcc6a('0x1b')]?_0x33079c[_0xcc6a('0x1b')][_0xcc6a('0x1e')]||null:null,'limit':_0x33079c[_0xcc6a('0x1b')]?_0x33079c[_0xcc6a('0x1b')][_0xcc6a('0x1f')]||null:null,'include':_0x33079c[_0xcc6a('0x1b')]?_0x33079c[_0xcc6a('0x1b')]['include']?_[_0xcc6a('0x20')](_0x33079c[_0xcc6a('0x1b')][_0xcc6a('0x21')],function(_0x581aae){return{'model':db[_0x581aae[_0xcc6a('0x22')]],'as':_0x581aae['as'],'attributes':_0x581aae[_0xcc6a('0x1e')],'include':_0x581aae[_0xcc6a('0x21')]?_[_0xcc6a('0x20')](_0x581aae[_0xcc6a('0x21')],function(_0x5fc697){return{'model':db[_0x5fc697['model']],'as':_0x5fc697['as'],'attributes':_0x5fc697[_0xcc6a('0x1e')],'include':_0x5fc697[_0xcc6a('0x21')]?_[_0xcc6a('0x20')](_0x5fc697['include'],function(_0x3afb3a){return{'model':db[_0x3afb3a[_0xcc6a('0x22')]],'as':_0x3afb3a['as'],'attributes':_0x3afb3a['attributes']};}):[]};}):[]};}):[]:[]})[_0xcc6a('0xf')](function(_0x8b1b2b){logger[_0xcc6a('0x10')](_0xcc6a('0x18'),_0x33079c);logger['debug'](_0xcc6a('0x18'),_0x33079c,JSON[_0xcc6a('0x23')](_0x8b1b2b));_0x2d9585(_0x8b1b2b);})[_0xcc6a('0x24')](function(_0x4f176b){logger[_0xcc6a('0x15')]('GetFreshsalesAccount',_0x4f176b['message'],_0x33079c);_0x412bc7(_0x12ef33[_0xcc6a('0x15')](0x1f4,_0x4f176b[_0xcc6a('0x17')]));});});};exports[_0xcc6a('0x25')]=function(_0x11b481){var _0x2b575d=this;return new Promise(function(_0x131138,_0x4e2de4){return db[_0xcc6a('0x19')][_0xcc6a('0x26')]({'raw':_0x11b481[_0xcc6a('0x1b')]?_0x11b481[_0xcc6a('0x1b')][_0xcc6a('0x1c')]===undefined?!![]:![]:!![],'where':_0x11b481[_0xcc6a('0x1b')]?_0x11b481[_0xcc6a('0x1b')][_0xcc6a('0x1d')]||null:null,'attributes':_0x11b481['options']?_0x11b481[_0xcc6a('0x1b')][_0xcc6a('0x1e')]||null:null,'include':_0x11b481[_0xcc6a('0x1b')]?_0x11b481[_0xcc6a('0x1b')][_0xcc6a('0x21')]?_[_0xcc6a('0x20')](_0x11b481[_0xcc6a('0x1b')]['include'],function(_0x5d2287){return{'model':db[_0x5d2287['model']],'as':_0x5d2287['as'],'attributes':_0x5d2287['attributes'],'include':_0x5d2287['include']?_[_0xcc6a('0x20')](_0x5d2287[_0xcc6a('0x21')],function(_0x1101ec){return{'model':db[_0x1101ec[_0xcc6a('0x22')]],'as':_0x1101ec['as'],'attributes':_0x1101ec[_0xcc6a('0x1e')],'include':_0x1101ec['include']?_['map'](_0x1101ec[_0xcc6a('0x21')],function(_0x11173a){return{'model':db[_0x11173a[_0xcc6a('0x22')]],'as':_0x11173a['as'],'attributes':_0x11173a['attributes']};}):[]};}):[]};}):[]:[]})[_0xcc6a('0xf')](function(_0x2207df){logger[_0xcc6a('0x10')](_0xcc6a('0x25'),_0x11b481);logger[_0xcc6a('0x12')](_0xcc6a('0x25'),_0x11b481,JSON[_0xcc6a('0x23')](_0x2207df));_0x131138(_0x2207df);})[_0xcc6a('0x24')](function(_0x2a1cd2){logger[_0xcc6a('0x15')](_0xcc6a('0x25'),_0x2a1cd2[_0xcc6a('0x17')],_0x11b481);_0x4e2de4(_0x2b575d[_0xcc6a('0x15')](0x1f4,_0x2a1cd2[_0xcc6a('0x17')]));});});};
\ No newline at end of file
index 4015393..2006157 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc033=['express','Router','fs-extra','../../config/environment','./intFreshsalesConfiguration.controller','get','/:id','isAuthenticated','/:id/descriptions','getDescriptions','getFields','post','put','destroy','exports','util'];(function(_0x3df92e,_0x576813){var _0x2a3b78=function(_0x2e7f79){while(--_0x2e7f79){_0x3df92e['push'](_0x3df92e['shift']());}};_0x2a3b78(++_0x576813);}(_0xc033,0x8f));var _0x3c03=function(_0x5ad924,_0x3a0103){_0x5ad924=_0x5ad924-0x0;var _0x44ad27=_0xc033[_0x5ad924];return _0x44ad27;};'use strict';var multer=require('multer');var util=require(_0x3c03('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x3c03('0x1'));var router=express[_0x3c03('0x2')]();var fs_extra=require(_0x3c03('0x3'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x3c03('0x4'));var controller=require(_0x3c03('0x5'));router[_0x3c03('0x6')]('/',auth['isAuthenticated'](),controller['index']);router[_0x3c03('0x6')](_0x3c03('0x7'),auth[_0x3c03('0x8')](),controller['show']);router[_0x3c03('0x6')]('/:id/subjects',auth[_0x3c03('0x8')](),controller['getSubjects']);router[_0x3c03('0x6')](_0x3c03('0x9'),auth[_0x3c03('0x8')](),controller[_0x3c03('0xa')]);router[_0x3c03('0x6')]('/:id/fields',auth[_0x3c03('0x8')](),controller[_0x3c03('0xb')]);router[_0x3c03('0xc')]('/',auth[_0x3c03('0x8')](),controller['create']);router[_0x3c03('0xd')](_0x3c03('0x7'),auth[_0x3c03('0x8')](),controller['update']);router['delete'](_0x3c03('0x7'),auth[_0x3c03('0x8')](),controller[_0x3c03('0xe')]);module[_0x3c03('0xf')]=router;
\ No newline at end of file
+var _0x612d=['put','/:id','update','delete','multer','util','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','index','get','isAuthenticated','show','/:id/subjects','/:id/descriptions','getDescriptions','post'];(function(_0x1e3c16,_0x372caa){var _0x47a0c9=function(_0x47f81d){while(--_0x47f81d){_0x1e3c16['push'](_0x1e3c16['shift']());}};_0x47a0c9(++_0x372caa);}(_0x612d,0x193));var _0xd612=function(_0x2a6fd5,_0x3d6deb){_0x2a6fd5=_0x2a6fd5-0x0;var _0x43c6a4=_0x612d[_0x2a6fd5];return _0x43c6a4;};'use strict';var multer=require(_0xd612('0x0'));var util=require(_0xd612('0x1'));var path=require('path');var timeout=require(_0xd612('0x2'));var express=require(_0xd612('0x3'));var router=express['Router']();var fs_extra=require(_0xd612('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xd612('0x5'));var config=require(_0xd612('0x6'));var controller=require('./intFreshsalesConfiguration.controller');router['get']('/',auth['isAuthenticated'](),controller[_0xd612('0x7')]);router[_0xd612('0x8')]('/:id',auth[_0xd612('0x9')](),controller[_0xd612('0xa')]);router[_0xd612('0x8')](_0xd612('0xb'),auth[_0xd612('0x9')](),controller['getSubjects']);router[_0xd612('0x8')](_0xd612('0xc'),auth[_0xd612('0x9')](),controller[_0xd612('0xd')]);router['get']('/:id/fields',auth[_0xd612('0x9')](),controller['getFields']);router[_0xd612('0xe')]('/',auth[_0xd612('0x9')](),controller['create']);router[_0xd612('0xf')](_0xd612('0x10'),auth['isAuthenticated'](),controller[_0xd612('0x11')]);router[_0xd612('0x12')]('/:id',auth[_0xd612('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index b53e6e7..d6aee1d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfaa0=['STRING','sequelize','exports'];(function(_0x19c745,_0x33678e){var _0x2ec795=function(_0x1700f5){while(--_0x1700f5){_0x19c745['push'](_0x19c745['shift']());}};_0x2ec795(++_0x33678e);}(_0xfaa0,0xac));var _0x0faa=function(_0x49ba85,_0x6c81b3){_0x49ba85=_0x49ba85-0x0;var _0x47ff7c=_0xfaa0[_0x49ba85];return _0x47ff7c;};'use strict';var Sequelize=require(_0x0faa('0x0'));module[_0x0faa('0x1')]={'name':{'type':Sequelize[_0x0faa('0x2')]},'description':{'type':Sequelize[_0x0faa('0x2')]}};
\ No newline at end of file
+var _0xe65a=['STRING'];(function(_0x253a2c,_0x1b3f55){var _0x97079a=function(_0x13debd){while(--_0x13debd){_0x253a2c['push'](_0x253a2c['shift']());}};_0x97079a(++_0x1b3f55);}(_0xe65a,0x195));var _0xae65=function(_0x403c20,_0x4a7b99){_0x403c20=_0x403c20-0x0;var _0x2b271a=_0xe65a[_0x403c20];return _0x2b271a;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0xae65('0x0')]},'description':{'type':Sequelize[_0xae65('0x0')]}};
\ No newline at end of file
index 765ca55..b4ec015 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x76df=['count','set','json','apply','reject','save','then','sendStatus','error','stack','name','index','map','FreshsalesConfiguration','rawAttributes','fieldName','keys','query','filters','intersection','model','fields','attributes','length','hasOwnProperty','order','sort','where','pick','merge','type','VIRTUAL','filter','options','includeAll','findAll','rows','catch','show','params','include','find','create','update','body','destroy','getSubjects','FreshsalesField','getDescriptions','nolimit','getFields','findOne','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','status','offset','undefined','limit'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x76df,0x87));var _0xf76d=function(_0x3db745,_0x49ad24){_0x3db745=_0x3db745-0x0;var _0x4bcb72=_0x76df[_0x3db745];return _0x4bcb72;};'use strict';var emlformat=require(_0xf76d('0x0'));var rimraf=require(_0xf76d('0x1'));var zipdir=require(_0xf76d('0x2'));var jsonpatch=require(_0xf76d('0x3'));var rp=require(_0xf76d('0x4'));var moment=require(_0xf76d('0x5'));var BPromise=require(_0xf76d('0x6'));var Mustache=require(_0xf76d('0x7'));var util=require(_0xf76d('0x8'));var path=require(_0xf76d('0x9'));var sox=require(_0xf76d('0xa'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xf76d('0xb'));var _=require(_0xf76d('0xc'));var squel=require('squel');var crypto=require(_0xf76d('0xd'));var jsforce=require(_0xf76d('0xe'));var deskjs=require(_0xf76d('0xf'));var toCsv=require(_0xf76d('0x10'));var querystring=require(_0xf76d('0x11'));var Papa=require('papaparse');var Redis=require(_0xf76d('0x12'));var authService=require(_0xf76d('0x13'));var qs=require(_0xf76d('0x14'));var as=require(_0xf76d('0x15'));var hardwareService=require(_0xf76d('0x16'));var logger=require(_0xf76d('0x17'))('api');var utils=require(_0xf76d('0x18'));var config=require(_0xf76d('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0xf76d('0x1a'))['db'];function respondWithStatusCode(_0x47d49e,_0x2afea4){_0x2afea4=_0x2afea4||0xcc;return function(_0x4ed19e){if(_0x4ed19e){return _0x47d49e['sendStatus'](_0x2afea4);}return _0x47d49e['status'](_0x2afea4)['end']();};}function respondWithResult(_0x4108e6,_0x281659){_0x281659=_0x281659||0xc8;return function(_0x4ac86b){if(_0x4ac86b){return _0x4108e6[_0xf76d('0x1b')](_0x281659)['json'](_0x4ac86b);}};}function respondWithFilteredResult(_0x554da8,_0x25c16f){return function(_0x5896a8){if(_0x5896a8){var _0xf50d1d=typeof _0x25c16f[_0xf76d('0x1c')]===_0xf76d('0x1d')&&typeof _0x25c16f[_0xf76d('0x1e')]===_0xf76d('0x1d');var _0x507402=_0x5896a8['count'];var _0x4452fd=_0xf50d1d?0x0:_0x25c16f[_0xf76d('0x1c')];var _0x57c1cb=_0xf50d1d?_0x5896a8[_0xf76d('0x1f')]:_0x25c16f[_0xf76d('0x1c')]+_0x25c16f['limit'];var _0x2375f4;if(_0x57c1cb>=_0x507402){_0x57c1cb=_0x507402;_0x2375f4=0xc8;}else{_0x2375f4=0xce;}_0x554da8[_0xf76d('0x1b')](_0x2375f4);return _0x554da8[_0xf76d('0x20')]('Content-Range',_0x4452fd+'-'+_0x57c1cb+'/'+_0x507402)[_0xf76d('0x21')](_0x5896a8);}return null;};}function patchUpdates(_0x23ecb0){return function(_0x5e6ee7){try{jsonpatch[_0xf76d('0x22')](_0x5e6ee7,_0x23ecb0,!![]);}catch(_0x2d044b){return BPromise[_0xf76d('0x23')](_0x2d044b);}return _0x5e6ee7[_0xf76d('0x24')]();};}function saveUpdates(_0x28065a,_0x21b955){return function(_0x4ac446){if(_0x4ac446){return _0x4ac446['update'](_0x28065a)['then'](function(_0x1822ad){return _0x1822ad;});}return null;};}function removeEntity(_0x23fabd,_0x44f39b){return function(_0x1aaa05){if(_0x1aaa05){return _0x1aaa05['destroy']()[_0xf76d('0x25')](function(){_0x23fabd[_0xf76d('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x53403e,_0x12a445){return function(_0x465874){if(!_0x465874){_0x53403e[_0xf76d('0x26')](0x194);}return _0x465874;};}function handleError(_0x214822,_0x1fa933){_0x1fa933=_0x1fa933||0x1f4;return function(_0x6d3dec){logger[_0xf76d('0x27')](_0x6d3dec[_0xf76d('0x28')]);if(_0x6d3dec[_0xf76d('0x29')]){delete _0x6d3dec[_0xf76d('0x29')];}_0x214822[_0xf76d('0x1b')](_0x1fa933)['send'](_0x6d3dec);};}exports[_0xf76d('0x2a')]=function(_0x2cb6f6,_0x46422b){var _0x3ab083={},_0x29cc93={},_0x5b07cb={'count':0x0,'rows':[]};var _0x4a74f1=_[_0xf76d('0x2b')](db[_0xf76d('0x2c')][_0xf76d('0x2d')],function(_0x2c3a02){return{'name':_0x2c3a02[_0xf76d('0x2e')],'type':_0x2c3a02['type']['key']};});_0x29cc93['model']=_[_0xf76d('0x2b')](_0x4a74f1,'name');_0x29cc93['query']=_[_0xf76d('0x2f')](_0x2cb6f6[_0xf76d('0x30')]);_0x29cc93[_0xf76d('0x31')]=_[_0xf76d('0x32')](_0x29cc93[_0xf76d('0x33')],_0x29cc93['query']);_0x3ab083['attributes']=_[_0xf76d('0x32')](_0x29cc93[_0xf76d('0x33')],qs[_0xf76d('0x34')](_0x2cb6f6[_0xf76d('0x30')][_0xf76d('0x34')]));_0x3ab083['attributes']=_0x3ab083[_0xf76d('0x35')][_0xf76d('0x36')]?_0x3ab083['attributes']:_0x29cc93[_0xf76d('0x33')];if(!_0x2cb6f6[_0xf76d('0x30')][_0xf76d('0x37')]('nolimit')){_0x3ab083[_0xf76d('0x1e')]=qs[_0xf76d('0x1e')](_0x2cb6f6[_0xf76d('0x30')][_0xf76d('0x1e')]);_0x3ab083[_0xf76d('0x1c')]=qs[_0xf76d('0x1c')](_0x2cb6f6['query'][_0xf76d('0x1c')]);}_0x3ab083[_0xf76d('0x38')]=qs[_0xf76d('0x39')](_0x2cb6f6[_0xf76d('0x30')]['sort']);_0x3ab083[_0xf76d('0x3a')]=qs[_0xf76d('0x31')](_[_0xf76d('0x3b')](_0x2cb6f6['query'],_0x29cc93[_0xf76d('0x31')]),_0x4a74f1);if(_0x2cb6f6['query']['filter']){_0x3ab083[_0xf76d('0x3a')]=_[_0xf76d('0x3c')](_0x3ab083[_0xf76d('0x3a')],{'$or':_[_0xf76d('0x2b')](_0x4a74f1,function(_0x21c740){if(_0x21c740[_0xf76d('0x3d')]!==_0xf76d('0x3e')){var _0x149ed8={};_0x149ed8[_0x21c740[_0xf76d('0x29')]]={'$like':'%'+_0x2cb6f6['query'][_0xf76d('0x3f')]+'%'};return _0x149ed8;}})});}_0x3ab083=_['merge']({},_0x3ab083,_0x2cb6f6[_0xf76d('0x40')]);var _0x2dc0b8={'where':_0x3ab083[_0xf76d('0x3a')]};return db[_0xf76d('0x2c')][_0xf76d('0x1f')](_0x2dc0b8)[_0xf76d('0x25')](function(_0x1779b5){_0x5b07cb[_0xf76d('0x1f')]=_0x1779b5;if(_0x2cb6f6['query'][_0xf76d('0x41')]){_0x3ab083['include']=[{'all':!![]}];}return db[_0xf76d('0x2c')][_0xf76d('0x42')](_0x3ab083);})[_0xf76d('0x25')](function(_0x43a7e0){_0x5b07cb[_0xf76d('0x43')]=_0x43a7e0;return _0x5b07cb;})[_0xf76d('0x25')](respondWithFilteredResult(_0x46422b,_0x3ab083))[_0xf76d('0x44')](handleError(_0x46422b,null));};exports[_0xf76d('0x45')]=function(_0x2554ff,_0x16b52d){var _0x42c979={'raw':![],'where':{'id':_0x2554ff[_0xf76d('0x46')]['id']}},_0x20b6e9={};_0x20b6e9[_0xf76d('0x33')]=_[_0xf76d('0x2f')](db[_0xf76d('0x2c')][_0xf76d('0x2d')]);_0x20b6e9[_0xf76d('0x30')]=_[_0xf76d('0x2f')](_0x2554ff['query']);_0x20b6e9[_0xf76d('0x31')]=_[_0xf76d('0x32')](_0x20b6e9['model'],_0x20b6e9['query']);_0x42c979[_0xf76d('0x35')]=_['intersection'](_0x20b6e9[_0xf76d('0x33')],qs[_0xf76d('0x34')](_0x2554ff['query'][_0xf76d('0x34')]));_0x42c979[_0xf76d('0x35')]=_0x42c979[_0xf76d('0x35')][_0xf76d('0x36')]?_0x42c979[_0xf76d('0x35')]:_0x20b6e9[_0xf76d('0x33')];if(_0x2554ff['query']['includeAll']){_0x42c979[_0xf76d('0x47')]=[{'all':!![]}];}_0x42c979=_[_0xf76d('0x3c')]({},_0x42c979,_0x2554ff['options']);return db[_0xf76d('0x2c')][_0xf76d('0x48')](_0x42c979)['then'](handleEntityNotFound(_0x16b52d,null))[_0xf76d('0x25')](respondWithResult(_0x16b52d,null))[_0xf76d('0x44')](handleError(_0x16b52d,null));};exports[_0xf76d('0x49')]=function(_0x45f931,_0x53d2bd){return db[_0xf76d('0x2c')][_0xf76d('0x49')](_0x45f931['body'],{})[_0xf76d('0x25')](respondWithResult(_0x53d2bd,0xc9))['catch'](handleError(_0x53d2bd,null));};exports[_0xf76d('0x4a')]=function(_0x4d55b1,_0x2b506b){if(_0x4d55b1[_0xf76d('0x4b')]['id']){delete _0x4d55b1[_0xf76d('0x4b')]['id'];}return db[_0xf76d('0x2c')][_0xf76d('0x48')]({'where':{'id':_0x4d55b1[_0xf76d('0x46')]['id']}})['then'](handleEntityNotFound(_0x2b506b,null))[_0xf76d('0x25')](saveUpdates(_0x4d55b1[_0xf76d('0x4b')],null))[_0xf76d('0x25')](respondWithResult(_0x2b506b,null))['catch'](handleError(_0x2b506b,null));};exports[_0xf76d('0x4c')]=function(_0xf53af8,_0x2daeac){return db['FreshsalesConfiguration']['find']({'where':{'id':_0xf53af8[_0xf76d('0x46')]['id']}})[_0xf76d('0x25')](handleEntityNotFound(_0x2daeac,null))[_0xf76d('0x25')](removeEntity(_0x2daeac,null))['catch'](handleError(_0x2daeac,null));};exports[_0xf76d('0x4d')]=function(_0xfed588,_0x7da56,_0x44bf2d){var _0x48a797={};var _0x5439b9={};var _0x451682;var _0x509a18;return db['FreshsalesConfiguration']['findOne']({'where':{'id':_0xfed588[_0xf76d('0x46')]['id']}})['then'](handleEntityNotFound(_0x7da56,null))[_0xf76d('0x25')](function(_0x4f088e){if(_0x4f088e){_0x451682=_0x4f088e;_0x5439b9['model']=_[_0xf76d('0x2f')](db[_0xf76d('0x4e')][_0xf76d('0x2d')]);_0x5439b9[_0xf76d('0x30')]=_[_0xf76d('0x2f')](_0xfed588[_0xf76d('0x30')]);_0x5439b9[_0xf76d('0x31')]=_[_0xf76d('0x32')](_0x5439b9[_0xf76d('0x33')],_0x5439b9[_0xf76d('0x30')]);_0x48a797[_0xf76d('0x35')]=_[_0xf76d('0x32')](_0x5439b9['model'],qs['fields'](_0xfed588[_0xf76d('0x30')]['fields']));_0x48a797[_0xf76d('0x35')]=_0x48a797[_0xf76d('0x35')][_0xf76d('0x36')]?_0x48a797[_0xf76d('0x35')]:_0x5439b9[_0xf76d('0x33')];_0x48a797[_0xf76d('0x38')]=qs['sort'](_0xfed588[_0xf76d('0x30')][_0xf76d('0x39')]);_0x48a797['where']=qs[_0xf76d('0x31')](_[_0xf76d('0x3b')](_0xfed588[_0xf76d('0x30')],_0x5439b9['filters']));if(_0xfed588['query']['filter']){_0x48a797[_0xf76d('0x3a')]=_['merge'](_0x48a797[_0xf76d('0x3a')],{'$or':_[_0xf76d('0x2b')](_0x48a797[_0xf76d('0x35')],function(_0x31347c){var _0x44899a={};_0x44899a[_0x31347c]={'$like':'%'+_0xfed588[_0xf76d('0x30')][_0xf76d('0x3f')]+'%'};return _0x44899a;})});}_0x48a797=_[_0xf76d('0x3c')]({},_0x48a797,_0xfed588[_0xf76d('0x40')]);return _0x451682[_0xf76d('0x4d')](_0x48a797);}})['then'](function(_0x78ccc6){if(_0x78ccc6){_0x509a18=_0x78ccc6['length'];if(!_0xfed588[_0xf76d('0x30')][_0xf76d('0x37')]('nolimit')){_0x48a797[_0xf76d('0x1e')]=qs[_0xf76d('0x1e')](_0xfed588[_0xf76d('0x30')][_0xf76d('0x1e')]);_0x48a797[_0xf76d('0x1c')]=qs[_0xf76d('0x1c')](_0xfed588[_0xf76d('0x30')][_0xf76d('0x1c')]);}return _0x451682[_0xf76d('0x4d')](_0x48a797);}})[_0xf76d('0x25')](function(_0x1cb368){if(_0x1cb368){return _0x1cb368?{'count':_0x509a18,'rows':_0x1cb368}:null;}})['then'](respondWithResult(_0x7da56,null))[_0xf76d('0x44')](handleError(_0x7da56,null));};exports['getDescriptions']=function(_0x20573d,_0x2e97c7,_0xcc3c30){var _0x58ddae={};var _0x2efac8={};var _0x3baf92;var _0x356ffc;return db['FreshsalesConfiguration']['findOne']({'where':{'id':_0x20573d[_0xf76d('0x46')]['id']}})[_0xf76d('0x25')](handleEntityNotFound(_0x2e97c7,null))[_0xf76d('0x25')](function(_0x408f34){if(_0x408f34){_0x3baf92=_0x408f34;_0x2efac8[_0xf76d('0x33')]=_[_0xf76d('0x2f')](db[_0xf76d('0x4e')][_0xf76d('0x2d')]);_0x2efac8['query']=_[_0xf76d('0x2f')](_0x20573d['query']);_0x2efac8['filters']=_[_0xf76d('0x32')](_0x2efac8[_0xf76d('0x33')],_0x2efac8[_0xf76d('0x30')]);_0x58ddae['attributes']=_[_0xf76d('0x32')](_0x2efac8[_0xf76d('0x33')],qs[_0xf76d('0x34')](_0x20573d[_0xf76d('0x30')][_0xf76d('0x34')]));_0x58ddae[_0xf76d('0x35')]=_0x58ddae[_0xf76d('0x35')][_0xf76d('0x36')]?_0x58ddae[_0xf76d('0x35')]:_0x2efac8[_0xf76d('0x33')];_0x58ddae[_0xf76d('0x38')]=qs['sort'](_0x20573d[_0xf76d('0x30')][_0xf76d('0x39')]);_0x58ddae[_0xf76d('0x3a')]=qs[_0xf76d('0x31')](_[_0xf76d('0x3b')](_0x20573d[_0xf76d('0x30')],_0x2efac8[_0xf76d('0x31')]));if(_0x20573d['query'][_0xf76d('0x3f')]){_0x58ddae[_0xf76d('0x3a')]=_[_0xf76d('0x3c')](_0x58ddae[_0xf76d('0x3a')],{'$or':_['map'](_0x58ddae['attributes'],function(_0xe612e0){var _0x43ad97={};_0x43ad97[_0xe612e0]={'$like':'%'+_0x20573d['query'][_0xf76d('0x3f')]+'%'};return _0x43ad97;})});}_0x58ddae=_[_0xf76d('0x3c')]({},_0x58ddae,_0x20573d[_0xf76d('0x40')]);return _0x3baf92[_0xf76d('0x4f')](_0x58ddae);}})['then'](function(_0x33aab6){if(_0x33aab6){_0x356ffc=_0x33aab6['length'];if(!_0x20573d[_0xf76d('0x30')][_0xf76d('0x37')](_0xf76d('0x50'))){_0x58ddae['limit']=qs['limit'](_0x20573d[_0xf76d('0x30')][_0xf76d('0x1e')]);_0x58ddae[_0xf76d('0x1c')]=qs['offset'](_0x20573d[_0xf76d('0x30')][_0xf76d('0x1c')]);}return _0x3baf92[_0xf76d('0x4f')](_0x58ddae);}})[_0xf76d('0x25')](function(_0x28862a){if(_0x28862a){return _0x28862a?{'count':_0x356ffc,'rows':_0x28862a}:null;}})['then'](respondWithResult(_0x2e97c7,null))[_0xf76d('0x44')](handleError(_0x2e97c7,null));};exports[_0xf76d('0x51')]=function(_0x325fe5,_0x37ddff,_0x6f1816){var _0x183040={};var _0x470458={};var _0x7215b9;var _0x21354e;return db[_0xf76d('0x2c')][_0xf76d('0x52')]({'where':{'id':_0x325fe5[_0xf76d('0x46')]['id']}})[_0xf76d('0x25')](handleEntityNotFound(_0x37ddff,null))[_0xf76d('0x25')](function(_0x586779){if(_0x586779){_0x7215b9=_0x586779;_0x470458['model']=_[_0xf76d('0x2f')](db[_0xf76d('0x4e')]['rawAttributes']);_0x470458['query']=_[_0xf76d('0x2f')](_0x325fe5['query']);_0x470458['filters']=_[_0xf76d('0x32')](_0x470458[_0xf76d('0x33')],_0x470458[_0xf76d('0x30')]);_0x183040[_0xf76d('0x35')]=_['intersection'](_0x470458[_0xf76d('0x33')],qs['fields'](_0x325fe5['query']['fields']));_0x183040[_0xf76d('0x35')]=_0x183040['attributes'][_0xf76d('0x36')]?_0x183040[_0xf76d('0x35')]:_0x470458[_0xf76d('0x33')];_0x183040['order']=qs[_0xf76d('0x39')](_0x325fe5[_0xf76d('0x30')][_0xf76d('0x39')]);_0x183040[_0xf76d('0x3a')]=qs[_0xf76d('0x31')](_[_0xf76d('0x3b')](_0x325fe5[_0xf76d('0x30')],_0x470458[_0xf76d('0x31')]));if(_0x325fe5[_0xf76d('0x30')]['filter']){_0x183040[_0xf76d('0x3a')]=_[_0xf76d('0x3c')](_0x183040[_0xf76d('0x3a')],{'$or':_[_0xf76d('0x2b')](_0x183040[_0xf76d('0x35')],function(_0x264fbc){var _0x5e2398={};_0x5e2398[_0x264fbc]={'$like':'%'+_0x325fe5[_0xf76d('0x30')][_0xf76d('0x3f')]+'%'};return _0x5e2398;})});}_0x183040=_[_0xf76d('0x3c')]({},_0x183040,_0x325fe5[_0xf76d('0x40')]);return _0x7215b9[_0xf76d('0x51')](_0x183040);}})[_0xf76d('0x25')](function(_0x2b30c1){if(_0x2b30c1){_0x21354e=_0x2b30c1['length'];if(!_0x325fe5[_0xf76d('0x30')][_0xf76d('0x37')](_0xf76d('0x50'))){_0x183040[_0xf76d('0x1e')]=qs[_0xf76d('0x1e')](_0x325fe5[_0xf76d('0x30')][_0xf76d('0x1e')]);_0x183040[_0xf76d('0x1c')]=qs['offset'](_0x325fe5[_0xf76d('0x30')][_0xf76d('0x1c')]);}return _0x7215b9['getFields'](_0x183040);}})['then'](function(_0x5eff12){if(_0x5eff12){return _0x5eff12?{'count':_0x21354e,'rows':_0x5eff12}:null;}})['then'](respondWithResult(_0x37ddff,null))['catch'](handleError(_0x37ddff,null));};
\ No newline at end of file
+var _0x8c18=['../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','apply','reject','save','then','destroy','error','stack','name','index','map','FreshsalesConfiguration','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','catch','params','create','body','update','find','getSubjects','FreshsalesField','hasOwnProperty','getDescriptions','findOne','pick','getFields','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','fs-extra','lodash','squel','crypto','jsforce','to-csv','querystring','papaparse','ioredis'];(function(_0x44c0a8,_0x48c5b2){var _0xd70073=function(_0x2364ca){while(--_0x2364ca){_0x44c0a8['push'](_0x44c0a8['shift']());}};_0xd70073(++_0x48c5b2);}(_0x8c18,0x12b));var _0x88c1=function(_0x364af4,_0xb92d89){_0x364af4=_0x364af4-0x0;var _0x4059eb=_0x8c18[_0x364af4];return _0x4059eb;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x88c1('0x0'));var zipdir=require(_0x88c1('0x1'));var jsonpatch=require(_0x88c1('0x2'));var rp=require(_0x88c1('0x3'));var moment=require('moment');var BPromise=require(_0x88c1('0x4'));var Mustache=require(_0x88c1('0x5'));var util=require(_0x88c1('0x6'));var path=require(_0x88c1('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x88c1('0x8'));var _=require(_0x88c1('0x9'));var squel=require(_0x88c1('0xa'));var crypto=require(_0x88c1('0xb'));var jsforce=require(_0x88c1('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x88c1('0xd'));var querystring=require(_0x88c1('0xe'));var Papa=require(_0x88c1('0xf'));var Redis=require(_0x88c1('0x10'));var authService=require(_0x88c1('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x88c1('0x12'));var hardwareService=require(_0x88c1('0x13'));var logger=require(_0x88c1('0x14'))(_0x88c1('0x15'));var utils=require(_0x88c1('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x88c1('0x17'));var db=require(_0x88c1('0x18'))['db'];function respondWithStatusCode(_0x6e2785,_0x4cc20c){_0x4cc20c=_0x4cc20c||0xcc;return function(_0x18d255){if(_0x18d255){return _0x6e2785[_0x88c1('0x19')](_0x4cc20c);}return _0x6e2785[_0x88c1('0x1a')](_0x4cc20c)[_0x88c1('0x1b')]();};}function respondWithResult(_0x37ade0,_0x1bc00c){_0x1bc00c=_0x1bc00c||0xc8;return function(_0x434336){if(_0x434336){return _0x37ade0[_0x88c1('0x1a')](_0x1bc00c)['json'](_0x434336);}};}function respondWithFilteredResult(_0x47a4cb,_0x2c4ae2){return function(_0x2adc9a){if(_0x2adc9a){var _0x5c58a5=typeof _0x2c4ae2[_0x88c1('0x1c')]===_0x88c1('0x1d')&&typeof _0x2c4ae2[_0x88c1('0x1e')]===_0x88c1('0x1d');var _0x16aaaa=_0x2adc9a[_0x88c1('0x1f')];var _0xaff496=_0x5c58a5?0x0:_0x2c4ae2[_0x88c1('0x1c')];var _0x1aace4=_0x5c58a5?_0x2adc9a[_0x88c1('0x1f')]:_0x2c4ae2[_0x88c1('0x1c')]+_0x2c4ae2[_0x88c1('0x1e')];var _0x49b5f7;if(_0x1aace4>=_0x16aaaa){_0x1aace4=_0x16aaaa;_0x49b5f7=0xc8;}else{_0x49b5f7=0xce;}_0x47a4cb['status'](_0x49b5f7);return _0x47a4cb[_0x88c1('0x20')]('Content-Range',_0xaff496+'-'+_0x1aace4+'/'+_0x16aaaa)['json'](_0x2adc9a);}return null;};}function patchUpdates(_0x59a168){return function(_0x3138b0){try{jsonpatch[_0x88c1('0x21')](_0x3138b0,_0x59a168,!![]);}catch(_0x3845e6){return BPromise[_0x88c1('0x22')](_0x3845e6);}return _0x3138b0[_0x88c1('0x23')]();};}function saveUpdates(_0x460bb3,_0x1cdf8c){return function(_0x33c4f5){if(_0x33c4f5){return _0x33c4f5['update'](_0x460bb3)[_0x88c1('0x24')](function(_0x22a763){return _0x22a763;});}return null;};}function removeEntity(_0x4760a7,_0x6c47c8){return function(_0x38ea3a){if(_0x38ea3a){return _0x38ea3a[_0x88c1('0x25')]()[_0x88c1('0x24')](function(){_0x4760a7['status'](0xcc)[_0x88c1('0x1b')]();});}};}function handleEntityNotFound(_0x296cae,_0x44cb52){return function(_0xd09157){if(!_0xd09157){_0x296cae[_0x88c1('0x19')](0x194);}return _0xd09157;};}function handleError(_0x32f9b2,_0x2afe6c){_0x2afe6c=_0x2afe6c||0x1f4;return function(_0x54d6af){logger[_0x88c1('0x26')](_0x54d6af[_0x88c1('0x27')]);if(_0x54d6af[_0x88c1('0x28')]){delete _0x54d6af[_0x88c1('0x28')];}_0x32f9b2['status'](_0x2afe6c)['send'](_0x54d6af);};}exports[_0x88c1('0x29')]=function(_0x4f9229,_0x2c507d){var _0x8adf4d={},_0x331367={},_0x294dbf={'count':0x0,'rows':[]};var _0xf83a2f=_[_0x88c1('0x2a')](db[_0x88c1('0x2b')][_0x88c1('0x2c')],function(_0x444749){return{'name':_0x444749['fieldName'],'type':_0x444749[_0x88c1('0x2d')][_0x88c1('0x2e')]};});_0x331367[_0x88c1('0x2f')]=_[_0x88c1('0x2a')](_0xf83a2f,_0x88c1('0x28'));_0x331367[_0x88c1('0x30')]=_[_0x88c1('0x31')](_0x4f9229[_0x88c1('0x30')]);_0x331367[_0x88c1('0x32')]=_[_0x88c1('0x33')](_0x331367[_0x88c1('0x2f')],_0x331367['query']);_0x8adf4d[_0x88c1('0x34')]=_['intersection'](_0x331367['model'],qs[_0x88c1('0x35')](_0x4f9229['query']['fields']));_0x8adf4d[_0x88c1('0x34')]=_0x8adf4d['attributes'][_0x88c1('0x36')]?_0x8adf4d[_0x88c1('0x34')]:_0x331367['model'];if(!_0x4f9229[_0x88c1('0x30')]['hasOwnProperty'](_0x88c1('0x37'))){_0x8adf4d[_0x88c1('0x1e')]=qs[_0x88c1('0x1e')](_0x4f9229['query']['limit']);_0x8adf4d[_0x88c1('0x1c')]=qs['offset'](_0x4f9229['query'][_0x88c1('0x1c')]);}_0x8adf4d[_0x88c1('0x38')]=qs[_0x88c1('0x39')](_0x4f9229[_0x88c1('0x30')][_0x88c1('0x39')]);_0x8adf4d[_0x88c1('0x3a')]=qs[_0x88c1('0x32')](_['pick'](_0x4f9229[_0x88c1('0x30')],_0x331367[_0x88c1('0x32')]),_0xf83a2f);if(_0x4f9229[_0x88c1('0x30')][_0x88c1('0x3b')]){_0x8adf4d[_0x88c1('0x3a')]=_[_0x88c1('0x3c')](_0x8adf4d['where'],{'$or':_['map'](_0xf83a2f,function(_0x588fd3){if(_0x588fd3[_0x88c1('0x2d')]!==_0x88c1('0x3d')){var _0x23f3e7={};_0x23f3e7[_0x588fd3[_0x88c1('0x28')]]={'$like':'%'+_0x4f9229[_0x88c1('0x30')][_0x88c1('0x3b')]+'%'};return _0x23f3e7;}})});}_0x8adf4d=_[_0x88c1('0x3c')]({},_0x8adf4d,_0x4f9229[_0x88c1('0x3e')]);var _0x4ba640={'where':_0x8adf4d[_0x88c1('0x3a')]};return db[_0x88c1('0x2b')][_0x88c1('0x1f')](_0x4ba640)[_0x88c1('0x24')](function(_0x51ed4e){_0x294dbf[_0x88c1('0x1f')]=_0x51ed4e;if(_0x4f9229[_0x88c1('0x30')][_0x88c1('0x3f')]){_0x8adf4d[_0x88c1('0x40')]=[{'all':!![]}];}return db['FreshsalesConfiguration'][_0x88c1('0x41')](_0x8adf4d);})[_0x88c1('0x24')](function(_0x3a77c5){_0x294dbf['rows']=_0x3a77c5;return _0x294dbf;})['then'](respondWithFilteredResult(_0x2c507d,_0x8adf4d))[_0x88c1('0x42')](handleError(_0x2c507d,null));};exports['show']=function(_0xa38b38,_0x2a7949){var _0x2197a0={'raw':![],'where':{'id':_0xa38b38[_0x88c1('0x43')]['id']}},_0x279683={};_0x279683[_0x88c1('0x2f')]=_[_0x88c1('0x31')](db[_0x88c1('0x2b')][_0x88c1('0x2c')]);_0x279683[_0x88c1('0x30')]=_[_0x88c1('0x31')](_0xa38b38[_0x88c1('0x30')]);_0x279683[_0x88c1('0x32')]=_[_0x88c1('0x33')](_0x279683[_0x88c1('0x2f')],_0x279683[_0x88c1('0x30')]);_0x2197a0[_0x88c1('0x34')]=_[_0x88c1('0x33')](_0x279683[_0x88c1('0x2f')],qs[_0x88c1('0x35')](_0xa38b38['query'][_0x88c1('0x35')]));_0x2197a0['attributes']=_0x2197a0[_0x88c1('0x34')]['length']?_0x2197a0[_0x88c1('0x34')]:_0x279683[_0x88c1('0x2f')];if(_0xa38b38[_0x88c1('0x30')]['includeAll']){_0x2197a0['include']=[{'all':!![]}];}_0x2197a0=_[_0x88c1('0x3c')]({},_0x2197a0,_0xa38b38[_0x88c1('0x3e')]);return db[_0x88c1('0x2b')]['find'](_0x2197a0)[_0x88c1('0x24')](handleEntityNotFound(_0x2a7949,null))[_0x88c1('0x24')](respondWithResult(_0x2a7949,null))[_0x88c1('0x42')](handleError(_0x2a7949,null));};exports[_0x88c1('0x44')]=function(_0x53f732,_0x48cd84){return db['FreshsalesConfiguration'][_0x88c1('0x44')](_0x53f732[_0x88c1('0x45')],{})[_0x88c1('0x24')](respondWithResult(_0x48cd84,0xc9))[_0x88c1('0x42')](handleError(_0x48cd84,null));};exports[_0x88c1('0x46')]=function(_0x3bd370,_0x5629ee){if(_0x3bd370[_0x88c1('0x45')]['id']){delete _0x3bd370['body']['id'];}return db[_0x88c1('0x2b')][_0x88c1('0x47')]({'where':{'id':_0x3bd370[_0x88c1('0x43')]['id']}})['then'](handleEntityNotFound(_0x5629ee,null))['then'](saveUpdates(_0x3bd370[_0x88c1('0x45')],null))[_0x88c1('0x24')](respondWithResult(_0x5629ee,null))[_0x88c1('0x42')](handleError(_0x5629ee,null));};exports[_0x88c1('0x25')]=function(_0x1b7903,_0x125c90){return db[_0x88c1('0x2b')][_0x88c1('0x47')]({'where':{'id':_0x1b7903[_0x88c1('0x43')]['id']}})[_0x88c1('0x24')](handleEntityNotFound(_0x125c90,null))[_0x88c1('0x24')](removeEntity(_0x125c90,null))[_0x88c1('0x42')](handleError(_0x125c90,null));};exports[_0x88c1('0x48')]=function(_0x1b0368,_0x443cd6,_0x2cfa49){var _0x3a42f8={};var _0x59908e={};var _0x1ad46d;var _0xe9c630;return db[_0x88c1('0x2b')]['findOne']({'where':{'id':_0x1b0368[_0x88c1('0x43')]['id']}})['then'](handleEntityNotFound(_0x443cd6,null))[_0x88c1('0x24')](function(_0x44512e){if(_0x44512e){_0x1ad46d=_0x44512e;_0x59908e[_0x88c1('0x2f')]=_['keys'](db[_0x88c1('0x49')][_0x88c1('0x2c')]);_0x59908e[_0x88c1('0x30')]=_[_0x88c1('0x31')](_0x1b0368[_0x88c1('0x30')]);_0x59908e[_0x88c1('0x32')]=_[_0x88c1('0x33')](_0x59908e[_0x88c1('0x2f')],_0x59908e[_0x88c1('0x30')]);_0x3a42f8['attributes']=_['intersection'](_0x59908e[_0x88c1('0x2f')],qs[_0x88c1('0x35')](_0x1b0368['query'][_0x88c1('0x35')]));_0x3a42f8[_0x88c1('0x34')]=_0x3a42f8[_0x88c1('0x34')][_0x88c1('0x36')]?_0x3a42f8['attributes']:_0x59908e[_0x88c1('0x2f')];_0x3a42f8[_0x88c1('0x38')]=qs[_0x88c1('0x39')](_0x1b0368[_0x88c1('0x30')]['sort']);_0x3a42f8['where']=qs[_0x88c1('0x32')](_['pick'](_0x1b0368['query'],_0x59908e[_0x88c1('0x32')]));if(_0x1b0368[_0x88c1('0x30')][_0x88c1('0x3b')]){_0x3a42f8[_0x88c1('0x3a')]=_[_0x88c1('0x3c')](_0x3a42f8[_0x88c1('0x3a')],{'$or':_[_0x88c1('0x2a')](_0x3a42f8[_0x88c1('0x34')],function(_0x19bc9d){var _0x1872b2={};_0x1872b2[_0x19bc9d]={'$like':'%'+_0x1b0368['query']['filter']+'%'};return _0x1872b2;})});}_0x3a42f8=_[_0x88c1('0x3c')]({},_0x3a42f8,_0x1b0368['options']);return _0x1ad46d['getSubjects'](_0x3a42f8);}})[_0x88c1('0x24')](function(_0x4d59b5){if(_0x4d59b5){_0xe9c630=_0x4d59b5[_0x88c1('0x36')];if(!_0x1b0368[_0x88c1('0x30')][_0x88c1('0x4a')]('nolimit')){_0x3a42f8[_0x88c1('0x1e')]=qs[_0x88c1('0x1e')](_0x1b0368[_0x88c1('0x30')][_0x88c1('0x1e')]);_0x3a42f8['offset']=qs[_0x88c1('0x1c')](_0x1b0368[_0x88c1('0x30')]['offset']);}return _0x1ad46d[_0x88c1('0x48')](_0x3a42f8);}})['then'](function(_0x3db4e5){if(_0x3db4e5){return _0x3db4e5?{'count':_0xe9c630,'rows':_0x3db4e5}:null;}})[_0x88c1('0x24')](respondWithResult(_0x443cd6,null))[_0x88c1('0x42')](handleError(_0x443cd6,null));};exports[_0x88c1('0x4b')]=function(_0xead00a,_0x20d3f6,_0x1aa216){var _0x510de3={};var _0xb90d30={};var _0x2caa1c;var _0x26faa2;return db[_0x88c1('0x2b')][_0x88c1('0x4c')]({'where':{'id':_0xead00a[_0x88c1('0x43')]['id']}})[_0x88c1('0x24')](handleEntityNotFound(_0x20d3f6,null))[_0x88c1('0x24')](function(_0xc92d1c){if(_0xc92d1c){_0x2caa1c=_0xc92d1c;_0xb90d30[_0x88c1('0x2f')]=_['keys'](db['FreshsalesField']['rawAttributes']);_0xb90d30[_0x88c1('0x30')]=_[_0x88c1('0x31')](_0xead00a[_0x88c1('0x30')]);_0xb90d30[_0x88c1('0x32')]=_[_0x88c1('0x33')](_0xb90d30['model'],_0xb90d30[_0x88c1('0x30')]);_0x510de3['attributes']=_[_0x88c1('0x33')](_0xb90d30[_0x88c1('0x2f')],qs[_0x88c1('0x35')](_0xead00a['query'][_0x88c1('0x35')]));_0x510de3['attributes']=_0x510de3[_0x88c1('0x34')][_0x88c1('0x36')]?_0x510de3[_0x88c1('0x34')]:_0xb90d30[_0x88c1('0x2f')];_0x510de3['order']=qs[_0x88c1('0x39')](_0xead00a[_0x88c1('0x30')][_0x88c1('0x39')]);_0x510de3[_0x88c1('0x3a')]=qs[_0x88c1('0x32')](_[_0x88c1('0x4d')](_0xead00a[_0x88c1('0x30')],_0xb90d30[_0x88c1('0x32')]));if(_0xead00a[_0x88c1('0x30')][_0x88c1('0x3b')]){_0x510de3[_0x88c1('0x3a')]=_[_0x88c1('0x3c')](_0x510de3[_0x88c1('0x3a')],{'$or':_[_0x88c1('0x2a')](_0x510de3[_0x88c1('0x34')],function(_0x56c4c0){var _0x474e7f={};_0x474e7f[_0x56c4c0]={'$like':'%'+_0xead00a[_0x88c1('0x30')][_0x88c1('0x3b')]+'%'};return _0x474e7f;})});}_0x510de3=_[_0x88c1('0x3c')]({},_0x510de3,_0xead00a[_0x88c1('0x3e')]);return _0x2caa1c['getDescriptions'](_0x510de3);}})[_0x88c1('0x24')](function(_0x19c0c8){if(_0x19c0c8){_0x26faa2=_0x19c0c8[_0x88c1('0x36')];if(!_0xead00a[_0x88c1('0x30')][_0x88c1('0x4a')](_0x88c1('0x37'))){_0x510de3[_0x88c1('0x1e')]=qs['limit'](_0xead00a[_0x88c1('0x30')][_0x88c1('0x1e')]);_0x510de3[_0x88c1('0x1c')]=qs[_0x88c1('0x1c')](_0xead00a[_0x88c1('0x30')]['offset']);}return _0x2caa1c[_0x88c1('0x4b')](_0x510de3);}})['then'](function(_0x2905fc){if(_0x2905fc){return _0x2905fc?{'count':_0x26faa2,'rows':_0x2905fc}:null;}})[_0x88c1('0x24')](respondWithResult(_0x20d3f6,null))[_0x88c1('0x42')](handleError(_0x20d3f6,null));};exports[_0x88c1('0x4e')]=function(_0x30e759,_0x45beca,_0x1f8d78){var _0x5f4af2={};var _0x7b4bbc={};var _0x43dcfa;var _0x470e51;return db[_0x88c1('0x2b')][_0x88c1('0x4c')]({'where':{'id':_0x30e759[_0x88c1('0x43')]['id']}})[_0x88c1('0x24')](handleEntityNotFound(_0x45beca,null))['then'](function(_0x4c9cf3){if(_0x4c9cf3){_0x43dcfa=_0x4c9cf3;_0x7b4bbc[_0x88c1('0x2f')]=_[_0x88c1('0x31')](db[_0x88c1('0x49')][_0x88c1('0x2c')]);_0x7b4bbc[_0x88c1('0x30')]=_[_0x88c1('0x31')](_0x30e759[_0x88c1('0x30')]);_0x7b4bbc[_0x88c1('0x32')]=_[_0x88c1('0x33')](_0x7b4bbc[_0x88c1('0x2f')],_0x7b4bbc[_0x88c1('0x30')]);_0x5f4af2[_0x88c1('0x34')]=_[_0x88c1('0x33')](_0x7b4bbc[_0x88c1('0x2f')],qs[_0x88c1('0x35')](_0x30e759[_0x88c1('0x30')][_0x88c1('0x35')]));_0x5f4af2[_0x88c1('0x34')]=_0x5f4af2[_0x88c1('0x34')][_0x88c1('0x36')]?_0x5f4af2[_0x88c1('0x34')]:_0x7b4bbc[_0x88c1('0x2f')];_0x5f4af2['order']=qs[_0x88c1('0x39')](_0x30e759[_0x88c1('0x30')][_0x88c1('0x39')]);_0x5f4af2[_0x88c1('0x3a')]=qs[_0x88c1('0x32')](_[_0x88c1('0x4d')](_0x30e759['query'],_0x7b4bbc[_0x88c1('0x32')]));if(_0x30e759[_0x88c1('0x30')]['filter']){_0x5f4af2[_0x88c1('0x3a')]=_['merge'](_0x5f4af2[_0x88c1('0x3a')],{'$or':_[_0x88c1('0x2a')](_0x5f4af2[_0x88c1('0x34')],function(_0x1393a2){var _0x170cf5={};_0x170cf5[_0x1393a2]={'$like':'%'+_0x30e759[_0x88c1('0x30')][_0x88c1('0x3b')]+'%'};return _0x170cf5;})});}_0x5f4af2=_['merge']({},_0x5f4af2,_0x30e759[_0x88c1('0x3e')]);return _0x43dcfa[_0x88c1('0x4e')](_0x5f4af2);}})['then'](function(_0x569964){if(_0x569964){_0x470e51=_0x569964[_0x88c1('0x36')];if(!_0x30e759[_0x88c1('0x30')][_0x88c1('0x4a')]('nolimit')){_0x5f4af2[_0x88c1('0x1e')]=qs[_0x88c1('0x1e')](_0x30e759[_0x88c1('0x30')][_0x88c1('0x1e')]);_0x5f4af2[_0x88c1('0x1c')]=qs['offset'](_0x30e759[_0x88c1('0x30')]['offset']);}return _0x43dcfa[_0x88c1('0x4e')](_0x5f4af2);}})[_0x88c1('0x24')](function(_0x590b26){if(_0x590b26){return _0x590b26?{'count':_0x470e51,'rows':_0x590b26}:null;}})['then'](respondWithResult(_0x45beca,null))['catch'](handleError(_0x45beca,null));};
\ No newline at end of file
index 8d51255..e0f936f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8563=['./intFreshsalesConfiguration.attributes','exports','define','FreshsalesConfiguration','int_freshsales_configurations','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0x8563,0x75));var _0x3856=function(_0x53270b,_0x322373){_0x53270b=_0x53270b-0x0;var _0x37f827=_0x8563[_0x53270b];return _0x37f827;};'use strict';var _=require(_0x3856('0x0'));var util=require(_0x3856('0x1'));var logger=require(_0x3856('0x2'))(_0x3856('0x3'));var moment=require('moment');var BPromise=require(_0x3856('0x4'));var rp=require(_0x3856('0x5'));var fs=require('fs');var path=require(_0x3856('0x6'));var rimraf=require(_0x3856('0x7'));var config=require(_0x3856('0x8'));var attributes=require(_0x3856('0x9'));module[_0x3856('0xa')]=function(_0x4cdc98,_0x46d2f4){return _0x4cdc98[_0x3856('0xb')](_0x3856('0xc'),attributes,{'tableName':_0x3856('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4591=['../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','define','FreshsalesConfiguration','lodash','util'];(function(_0x548627,_0x4ec392){var _0x844a84=function(_0x2ffdd2){while(--_0x2ffdd2){_0x548627['push'](_0x548627['shift']());}};_0x844a84(++_0x4ec392);}(_0x4591,0x132));var _0x1459=function(_0x5626af,_0x4285c3){_0x5626af=_0x5626af-0x0;var _0x12e826=_0x4591[_0x5626af];return _0x12e826;};'use strict';var _=require(_0x1459('0x0'));var util=require(_0x1459('0x1'));var logger=require(_0x1459('0x2'))(_0x1459('0x3'));var moment=require(_0x1459('0x4'));var BPromise=require(_0x1459('0x5'));var rp=require(_0x1459('0x6'));var fs=require('fs');var path=require(_0x1459('0x7'));var rimraf=require('rimraf');var config=require(_0x1459('0x8'));var attributes=require('./intFreshsalesConfiguration.attributes');module['exports']=function(_0x54bb00,_0x5dff48){return _0x54bb00[_0x1459('0x9')](_0x1459('0xa'),attributes,{'tableName':'int_freshsales_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 926cb1b..5d3ba5e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x11cd=['moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','client','request','then','request\x20sent','debug','FreshsalesConfiguration,\x20%s,\x20%s,\x20%s','stringify','code','error','FreshsalesConfiguration,\x20%s,\x20%s','message','info','catch','lodash','util'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x11cd,0xd0));var _0xd11c=function(_0x1d6fd8,_0x964fea){_0x1d6fd8=_0x1d6fd8-0x0;var _0x1686bb=_0x11cd[_0x1d6fd8];return _0x1686bb;};'use strict';var _=require(_0xd11c('0x0'));var util=require(_0xd11c('0x1'));var moment=require(_0xd11c('0x2'));var BPromise=require(_0xd11c('0x3'));var rs=require(_0xd11c('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xd11c('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xd11c('0x6'))(_0xd11c('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xd11c('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0xc78dd9,_0x151173,_0x40d10e){return new BPromise(function(_0x11b85d,_0x374b01){return client[_0xd11c('0x9')](_0xc78dd9,_0x40d10e)[_0xd11c('0xa')](function(_0x4d7681){logger['info']('FreshsalesConfiguration,\x20%s,\x20%s',_0x151173,_0xd11c('0xb'));logger[_0xd11c('0xc')](_0xd11c('0xd'),_0x151173,_0xd11c('0xb'),JSON[_0xd11c('0xe')](_0x4d7681));if(_0x4d7681['error']){if(_0x4d7681['error'][_0xd11c('0xf')]===0x1f4){logger[_0xd11c('0x10')](_0xd11c('0x11'),_0x151173,_0x4d7681[_0xd11c('0x10')][_0xd11c('0x12')]);return _0x374b01(_0x4d7681[_0xd11c('0x10')][_0xd11c('0x12')]);}logger['error'](_0xd11c('0x11'),_0x151173,_0x4d7681[_0xd11c('0x10')][_0xd11c('0x12')]);return _0x11b85d(_0x4d7681[_0xd11c('0x10')]['message']);}else{logger[_0xd11c('0x13')](_0xd11c('0x11'),_0x151173,_0xd11c('0xb'));_0x11b85d(_0x4d7681['result'][_0xd11c('0x12')]);}})[_0xd11c('0x14')](function(_0x4d59d9){logger['error'](_0xd11c('0x11'),_0x151173,_0x4d59d9);_0x374b01(_0x4d59d9);});});}
\ No newline at end of file
+var _0x17fc=['message','result','catch','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','info','FreshsalesConfiguration,\x20%s,\x20%s','request\x20sent','FreshsalesConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x2f5ac5,_0x1ee939){var _0x37c9a8=function(_0x15031f){while(--_0x15031f){_0x2f5ac5['push'](_0x2f5ac5['shift']());}};_0x37c9a8(++_0x1ee939);}(_0x17fc,0x96));var _0xc17f=function(_0x5f4975,_0x167d7c){_0x5f4975=_0x5f4975-0x0;var _0x1b55d6=_0x17fc[_0x5f4975];return _0x1b55d6;};'use strict';var _=require('lodash');var util=require(_0xc17f('0x0'));var moment=require(_0xc17f('0x1'));var BPromise=require('bluebird');var rs=require(_0xc17f('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc17f('0x3'))['db'];var utils=require(_0xc17f('0x4'));var logger=require(_0xc17f('0x5'))(_0xc17f('0x6'));var config=require(_0xc17f('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xc17f('0x8')][_0xc17f('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x9c9dd1,_0x3d7c70,_0x19e69c){return new BPromise(function(_0x43618e,_0x2ac5c6){return client[_0xc17f('0xa')](_0x9c9dd1,_0x19e69c)['then'](function(_0x573c62){logger[_0xc17f('0xb')](_0xc17f('0xc'),_0x3d7c70,_0xc17f('0xd'));logger['debug'](_0xc17f('0xe'),_0x3d7c70,_0xc17f('0xd'),JSON[_0xc17f('0xf')](_0x573c62));if(_0x573c62[_0xc17f('0x10')]){if(_0x573c62['error'][_0xc17f('0x11')]===0x1f4){logger['error'](_0xc17f('0xc'),_0x3d7c70,_0x573c62[_0xc17f('0x10')][_0xc17f('0x12')]);return _0x2ac5c6(_0x573c62[_0xc17f('0x10')][_0xc17f('0x12')]);}logger[_0xc17f('0x10')]('FreshsalesConfiguration,\x20%s,\x20%s',_0x3d7c70,_0x573c62[_0xc17f('0x10')]['message']);return _0x43618e(_0x573c62[_0xc17f('0x10')][_0xc17f('0x12')]);}else{logger[_0xc17f('0xb')](_0xc17f('0xc'),_0x3d7c70,_0xc17f('0xd'));_0x43618e(_0x573c62[_0xc17f('0x13')][_0xc17f('0x12')]);}})[_0xc17f('0x14')](function(_0x400949){logger[_0xc17f('0x10')]('FreshsalesConfiguration,\x20%s,\x20%s',_0x3d7c70,_0x400949);_0x2ac5c6(_0x400949);});});}
\ No newline at end of file
index 8f3b6e8..120c587 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5825=['../../components/interaction/service','../../config/environment','./intFreshsalesField.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','../../components/auth/service'];(function(_0x1d8d45,_0x105ff4){var _0x2244ca=function(_0x1f405a){while(--_0x1f405a){_0x1d8d45['push'](_0x1d8d45['shift']());}};_0x2244ca(++_0x105ff4);}(_0x5825,0x78));var _0x5582=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0x5825[_0x19950b];return _0x3c6b41;};'use strict';var multer=require(_0x5582('0x0'));var util=require(_0x5582('0x1'));var path=require(_0x5582('0x2'));var timeout=require(_0x5582('0x3'));var express=require('express');var router=express[_0x5582('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x5582('0x5'));var interaction=require(_0x5582('0x6'));var config=require(_0x5582('0x7'));var controller=require(_0x5582('0x8'));router[_0x5582('0x9')]('/',auth[_0x5582('0xa')](),controller[_0x5582('0xb')]);router['get'](_0x5582('0xc'),auth[_0x5582('0xa')](),controller[_0x5582('0xd')]);router[_0x5582('0xe')]('/',auth['isAuthenticated'](),controller[_0x5582('0xf')]);router[_0x5582('0x10')](_0x5582('0xc'),auth['isAuthenticated'](),controller[_0x5582('0x11')]);router[_0x5582('0x12')](_0x5582('0xc'),auth['isAuthenticated'](),controller[_0x5582('0x13')]);module[_0x5582('0x14')]=router;
\ No newline at end of file
+var _0xccdc=['isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy','exports','multer','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshsalesField.controller','get'];(function(_0x3e5086,_0x48f4a2){var _0xfeb102=function(_0x5a945f){while(--_0x5a945f){_0x3e5086['push'](_0x3e5086['shift']());}};_0xfeb102(++_0x48f4a2);}(_0xccdc,0x1c4));var _0xcccd=function(_0x266618,_0x18f637){_0x266618=_0x266618-0x0;var _0x54dbf5=_0xccdc[_0x266618];return _0x54dbf5;};'use strict';var multer=require(_0xcccd('0x0'));var util=require(_0xcccd('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xcccd('0x2'));var router=express[_0xcccd('0x3')]();var fs_extra=require(_0xcccd('0x4'));var auth=require(_0xcccd('0x5'));var interaction=require(_0xcccd('0x6'));var config=require(_0xcccd('0x7'));var controller=require(_0xcccd('0x8'));router[_0xcccd('0x9')]('/',auth[_0xcccd('0xa')](),controller[_0xcccd('0xb')]);router['get'](_0xcccd('0xc'),auth[_0xcccd('0xa')](),controller[_0xcccd('0xd')]);router[_0xcccd('0xe')]('/',auth[_0xcccd('0xa')](),controller[_0xcccd('0xf')]);router[_0xcccd('0x10')](_0xcccd('0xc'),auth['isAuthenticated'](),controller[_0xcccd('0x11')]);router[_0xcccd('0x12')](_0xcccd('0xc'),auth[_0xcccd('0xa')](),controller[_0xcccd('0x13')]);module[_0xcccd('0x14')]=router;
\ No newline at end of file
index 045bfa7..158b4b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b22=['BOOLEAN','sequelize','exports','variable','customVariable','keyValue','picklist','string','STRING','ENUM'];(function(_0x5e3701,_0x596265){var _0x345dcf=function(_0x5eb12a){while(--_0x5eb12a){_0x5e3701['push'](_0x5e3701['shift']());}};_0x345dcf(++_0x596265);}(_0x7b22,0x105));var _0x27b2=function(_0x1559a5,_0x41924e){_0x1559a5=_0x1559a5-0x0;var _0x17a783=_0x7b22[_0x1559a5];return _0x17a783;};'use strict';var Sequelize=require(_0x27b2('0x0'));module[_0x27b2('0x1')]={'type':{'type':Sequelize['ENUM']('string',_0x27b2('0x2'),_0x27b2('0x3'),_0x27b2('0x4'),_0x27b2('0x5')),'defaultValue':_0x27b2('0x6')},'content':{'type':Sequelize[_0x27b2('0x7')]},'key':{'type':Sequelize[_0x27b2('0x7')]},'keyType':{'type':Sequelize[_0x27b2('0x8')](_0x27b2('0x6'),_0x27b2('0x2'),_0x27b2('0x3'))},'keyContent':{'type':Sequelize[_0x27b2('0x7')]},'idField':{'type':Sequelize[_0x27b2('0x7')]},'nameField':{'type':Sequelize[_0x27b2('0x7')]},'customField':{'type':Sequelize[_0x27b2('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x27b2('0x7')]}};
\ No newline at end of file
+var _0x24c4=['BOOLEAN','exports','string','variable','customVariable','keyValue','picklist','STRING','ENUM'];(function(_0x3f5aa6,_0x227f8a){var _0x4f85c1=function(_0x3e73ed){while(--_0x3e73ed){_0x3f5aa6['push'](_0x3f5aa6['shift']());}};_0x4f85c1(++_0x227f8a);}(_0x24c4,0x7f));var _0x424c=function(_0x153dae,_0x1a5301){_0x153dae=_0x153dae-0x0;var _0x37eaff=_0x24c4[_0x153dae];return _0x37eaff;};'use strict';var Sequelize=require('sequelize');module[_0x424c('0x0')]={'type':{'type':Sequelize['ENUM'](_0x424c('0x1'),_0x424c('0x2'),_0x424c('0x3'),_0x424c('0x4'),_0x424c('0x5')),'defaultValue':_0x424c('0x1')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0x424c('0x6')]},'keyType':{'type':Sequelize[_0x424c('0x7')]('string',_0x424c('0x2'),_0x424c('0x3'))},'keyContent':{'type':Sequelize[_0x424c('0x6')]},'idField':{'type':Sequelize[_0x424c('0x6')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x424c('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index b48806a..3d2a398 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x06e2=['crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','Content-Range','apply','save','update','then','destroy','stack','name','send','map','FreshsalesField','rawAttributes','fieldName','type','key','query','keys','intersection','fields','attributes','model','hasOwnProperty','sort','filter','where','merge','VIRTUAL','options','includeAll','include','rows','show','params','filters','length','find','catch','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel'];(function(_0x513606,_0x11d15c){var _0x53364a=function(_0x3b2a7a){while(--_0x3b2a7a){_0x513606['push'](_0x513606['shift']());}};_0x53364a(++_0x11d15c);}(_0x06e2,0xd1));var _0x206e=function(_0x59d33e,_0x157a9a){_0x59d33e=_0x59d33e-0x0;var _0x52a6c9=_0x06e2[_0x59d33e];return _0x52a6c9;};'use strict';var emlformat=require(_0x206e('0x0'));var rimraf=require(_0x206e('0x1'));var zipdir=require(_0x206e('0x2'));var jsonpatch=require(_0x206e('0x3'));var rp=require(_0x206e('0x4'));var moment=require(_0x206e('0x5'));var BPromise=require(_0x206e('0x6'));var Mustache=require(_0x206e('0x7'));var util=require(_0x206e('0x8'));var path=require(_0x206e('0x9'));var sox=require(_0x206e('0xa'));var csv=require(_0x206e('0xb'));var ejs=require(_0x206e('0xc'));var fs=require('fs');var fs_extra=require(_0x206e('0xd'));var _=require(_0x206e('0xe'));var squel=require(_0x206e('0xf'));var crypto=require(_0x206e('0x10'));var jsforce=require(_0x206e('0x11'));var deskjs=require(_0x206e('0x12'));var toCsv=require(_0x206e('0xb'));var querystring=require(_0x206e('0x13'));var Papa=require('papaparse');var Redis=require(_0x206e('0x14'));var authService=require(_0x206e('0x15'));var qs=require(_0x206e('0x16'));var as=require(_0x206e('0x17'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0x206e('0x18'));var config=require(_0x206e('0x19'));var licenseUtil=require(_0x206e('0x1a'));var db=require(_0x206e('0x1b'))['db'];function respondWithStatusCode(_0x219dbe,_0x301bdd){_0x301bdd=_0x301bdd||0xcc;return function(_0x4cf05d){if(_0x4cf05d){return _0x219dbe[_0x206e('0x1c')](_0x301bdd);}return _0x219dbe[_0x206e('0x1d')](_0x301bdd)[_0x206e('0x1e')]();};}function respondWithResult(_0x415630,_0x190659){_0x190659=_0x190659||0xc8;return function(_0x59e099){if(_0x59e099){return _0x415630[_0x206e('0x1d')](_0x190659)[_0x206e('0x1f')](_0x59e099);}};}function respondWithFilteredResult(_0x506c7b,_0x34af43){return function(_0x39040c){if(_0x39040c){var _0x2adef2=typeof _0x34af43[_0x206e('0x20')]===_0x206e('0x21')&&typeof _0x34af43['limit']===_0x206e('0x21');var _0x5b3e15=_0x39040c['count'];var _0x439232=_0x2adef2?0x0:_0x34af43[_0x206e('0x20')];var _0x343c6a=_0x2adef2?_0x39040c[_0x206e('0x22')]:_0x34af43[_0x206e('0x20')]+_0x34af43[_0x206e('0x23')];var _0x157869;if(_0x343c6a>=_0x5b3e15){_0x343c6a=_0x5b3e15;_0x157869=0xc8;}else{_0x157869=0xce;}_0x506c7b[_0x206e('0x1d')](_0x157869);return _0x506c7b['set'](_0x206e('0x24'),_0x439232+'-'+_0x343c6a+'/'+_0x5b3e15)[_0x206e('0x1f')](_0x39040c);}return null;};}function patchUpdates(_0x5c1e44){return function(_0xdd2607){try{jsonpatch[_0x206e('0x25')](_0xdd2607,_0x5c1e44,!![]);}catch(_0x40be0b){return BPromise['reject'](_0x40be0b);}return _0xdd2607[_0x206e('0x26')]();};}function saveUpdates(_0x4206d2,_0x3e5adc){return function(_0x50f778){if(_0x50f778){return _0x50f778[_0x206e('0x27')](_0x4206d2)[_0x206e('0x28')](function(_0x46e7ac){return _0x46e7ac;});}return null;};}function removeEntity(_0x3add7b,_0x34447f){return function(_0x195622){if(_0x195622){return _0x195622[_0x206e('0x29')]()[_0x206e('0x28')](function(){_0x3add7b[_0x206e('0x1d')](0xcc)[_0x206e('0x1e')]();});}};}function handleEntityNotFound(_0x5ae7e7,_0x287d3f){return function(_0x36e524){if(!_0x36e524){_0x5ae7e7[_0x206e('0x1c')](0x194);}return _0x36e524;};}function handleError(_0x3e3412,_0x417919){_0x417919=_0x417919||0x1f4;return function(_0x232882){logger['error'](_0x232882[_0x206e('0x2a')]);if(_0x232882[_0x206e('0x2b')]){delete _0x232882[_0x206e('0x2b')];}_0x3e3412[_0x206e('0x1d')](_0x417919)[_0x206e('0x2c')](_0x232882);};}exports['index']=function(_0x1919b6,_0x4b1965){var _0x211772={},_0x3db4e8={},_0x620ac3={'count':0x0,'rows':[]};var _0x31bff6=_[_0x206e('0x2d')](db[_0x206e('0x2e')][_0x206e('0x2f')],function(_0x459a3e){return{'name':_0x459a3e[_0x206e('0x30')],'type':_0x459a3e[_0x206e('0x31')][_0x206e('0x32')]};});_0x3db4e8['model']=_[_0x206e('0x2d')](_0x31bff6,_0x206e('0x2b'));_0x3db4e8[_0x206e('0x33')]=_[_0x206e('0x34')](_0x1919b6[_0x206e('0x33')]);_0x3db4e8['filters']=_[_0x206e('0x35')](_0x3db4e8['model'],_0x3db4e8[_0x206e('0x33')]);_0x211772['attributes']=_[_0x206e('0x35')](_0x3db4e8['model'],qs[_0x206e('0x36')](_0x1919b6['query']['fields']));_0x211772[_0x206e('0x37')]=_0x211772[_0x206e('0x37')]['length']?_0x211772[_0x206e('0x37')]:_0x3db4e8[_0x206e('0x38')];if(!_0x1919b6[_0x206e('0x33')][_0x206e('0x39')]('nolimit')){_0x211772[_0x206e('0x23')]=qs[_0x206e('0x23')](_0x1919b6['query'][_0x206e('0x23')]);_0x211772['offset']=qs[_0x206e('0x20')](_0x1919b6[_0x206e('0x33')][_0x206e('0x20')]);}_0x211772['order']=qs[_0x206e('0x3a')](_0x1919b6['query'][_0x206e('0x3a')]);_0x211772['where']=qs['filters'](_['pick'](_0x1919b6['query'],_0x3db4e8['filters']),_0x31bff6);if(_0x1919b6['query'][_0x206e('0x3b')]){_0x211772[_0x206e('0x3c')]=_[_0x206e('0x3d')](_0x211772[_0x206e('0x3c')],{'$or':_[_0x206e('0x2d')](_0x31bff6,function(_0x2801ef){if(_0x2801ef[_0x206e('0x31')]!==_0x206e('0x3e')){var _0x3d9cb0={};_0x3d9cb0[_0x2801ef[_0x206e('0x2b')]]={'$like':'%'+_0x1919b6[_0x206e('0x33')][_0x206e('0x3b')]+'%'};return _0x3d9cb0;}})});}_0x211772=_[_0x206e('0x3d')]({},_0x211772,_0x1919b6[_0x206e('0x3f')]);var _0x4925f2={'where':_0x211772[_0x206e('0x3c')]};return db[_0x206e('0x2e')][_0x206e('0x22')](_0x4925f2)[_0x206e('0x28')](function(_0x3a2cbd){_0x620ac3[_0x206e('0x22')]=_0x3a2cbd;if(_0x1919b6['query'][_0x206e('0x40')]){_0x211772[_0x206e('0x41')]=[{'all':!![]}];}return db['FreshsalesField']['findAll'](_0x211772);})[_0x206e('0x28')](function(_0x3d167c){_0x620ac3[_0x206e('0x42')]=_0x3d167c;return _0x620ac3;})[_0x206e('0x28')](respondWithFilteredResult(_0x4b1965,_0x211772))['catch'](handleError(_0x4b1965,null));};exports[_0x206e('0x43')]=function(_0xc1b3fe,_0x2967f3){var _0x48f9b7={'raw':!![],'where':{'id':_0xc1b3fe[_0x206e('0x44')]['id']}},_0x5c96d9={};_0x5c96d9[_0x206e('0x38')]=_[_0x206e('0x34')](db[_0x206e('0x2e')]['rawAttributes']);_0x5c96d9[_0x206e('0x33')]=_[_0x206e('0x34')](_0xc1b3fe[_0x206e('0x33')]);_0x5c96d9[_0x206e('0x45')]=_[_0x206e('0x35')](_0x5c96d9['model'],_0x5c96d9[_0x206e('0x33')]);_0x48f9b7[_0x206e('0x37')]=_[_0x206e('0x35')](_0x5c96d9['model'],qs[_0x206e('0x36')](_0xc1b3fe[_0x206e('0x33')][_0x206e('0x36')]));_0x48f9b7[_0x206e('0x37')]=_0x48f9b7[_0x206e('0x37')][_0x206e('0x46')]?_0x48f9b7[_0x206e('0x37')]:_0x5c96d9[_0x206e('0x38')];if(_0xc1b3fe[_0x206e('0x33')][_0x206e('0x40')]){_0x48f9b7['include']=[{'all':!![]}];}_0x48f9b7=_[_0x206e('0x3d')]({},_0x48f9b7,_0xc1b3fe[_0x206e('0x3f')]);return db[_0x206e('0x2e')][_0x206e('0x47')](_0x48f9b7)[_0x206e('0x28')](handleEntityNotFound(_0x2967f3,null))[_0x206e('0x28')](respondWithResult(_0x2967f3,null))[_0x206e('0x48')](handleError(_0x2967f3,null));};exports[_0x206e('0x49')]=function(_0x1e2f73,_0x56825a){return db['FreshsalesField'][_0x206e('0x49')](_0x1e2f73[_0x206e('0x4a')],{})[_0x206e('0x28')](respondWithResult(_0x56825a,0xc9))['catch'](handleError(_0x56825a,null));};exports[_0x206e('0x27')]=function(_0x110b7b,_0x2ba45d){if(_0x110b7b[_0x206e('0x4a')]['id']){delete _0x110b7b[_0x206e('0x4a')]['id'];}return db[_0x206e('0x2e')]['find']({'where':{'id':_0x110b7b[_0x206e('0x44')]['id']}})['then'](handleEntityNotFound(_0x2ba45d,null))[_0x206e('0x28')](saveUpdates(_0x110b7b[_0x206e('0x4a')],null))['then'](respondWithResult(_0x2ba45d,null))[_0x206e('0x48')](handleError(_0x2ba45d,null));};exports[_0x206e('0x29')]=function(_0x471c59,_0x369791){return db[_0x206e('0x2e')]['find']({'where':{'id':_0x471c59['params']['id']}})[_0x206e('0x28')](handleEntityNotFound(_0x369791,null))[_0x206e('0x28')](removeEntity(_0x369791,null))['catch'](handleError(_0x369791,null));};
\ No newline at end of file
+var _0x784d=['util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','reject','then','destroy','stack','name','index','map','FreshsalesField','rawAttributes','fieldName','type','key','model','query','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','filters','filter','merge','where','options','includeAll','include','findAll','catch','params','keys','find','create','body','update','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache'];(function(_0x447546,_0x1e9a91){var _0x27c2c2=function(_0xcd6849){while(--_0xcd6849){_0x447546['push'](_0x447546['shift']());}};_0x27c2c2(++_0x1e9a91);}(_0x784d,0xd0));var _0xd784=function(_0xf49e3,_0x3f7a8c){_0xf49e3=_0xf49e3-0x0;var _0x51e5fa=_0x784d[_0xf49e3];return _0x51e5fa;};'use strict';var emlformat=require(_0xd784('0x0'));var rimraf=require(_0xd784('0x1'));var zipdir=require(_0xd784('0x2'));var jsonpatch=require(_0xd784('0x3'));var rp=require(_0xd784('0x4'));var moment=require(_0xd784('0x5'));var BPromise=require(_0xd784('0x6'));var Mustache=require(_0xd784('0x7'));var util=require(_0xd784('0x8'));var path=require(_0xd784('0x9'));var sox=require(_0xd784('0xa'));var csv=require(_0xd784('0xb'));var ejs=require(_0xd784('0xc'));var fs=require('fs');var fs_extra=require(_0xd784('0xd'));var _=require(_0xd784('0xe'));var squel=require('squel');var crypto=require(_0xd784('0xf'));var jsforce=require(_0xd784('0x10'));var deskjs=require('desk.js');var toCsv=require(_0xd784('0xb'));var querystring=require(_0xd784('0x11'));var Papa=require(_0xd784('0x12'));var Redis=require(_0xd784('0x13'));var authService=require(_0xd784('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0xd784('0x15'));var hardwareService=require(_0xd784('0x16'));var logger=require(_0xd784('0x17'))('api');var utils=require(_0xd784('0x18'));var config=require(_0xd784('0x19'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x67a56d,_0x32ab2f){_0x32ab2f=_0x32ab2f||0xcc;return function(_0x44dc38){if(_0x44dc38){return _0x67a56d[_0xd784('0x1a')](_0x32ab2f);}return _0x67a56d[_0xd784('0x1b')](_0x32ab2f)[_0xd784('0x1c')]();};}function respondWithResult(_0x2e2fb8,_0x4ab5af){_0x4ab5af=_0x4ab5af||0xc8;return function(_0x41c4d5){if(_0x41c4d5){return _0x2e2fb8[_0xd784('0x1b')](_0x4ab5af)[_0xd784('0x1d')](_0x41c4d5);}};}function respondWithFilteredResult(_0x29085e,_0x2e83a5){return function(_0x51f7ea){if(_0x51f7ea){var _0x51e7ef=typeof _0x2e83a5[_0xd784('0x1e')]===_0xd784('0x1f')&&typeof _0x2e83a5[_0xd784('0x20')]===_0xd784('0x1f');var _0x277edb=_0x51f7ea[_0xd784('0x21')];var _0x2c8f3f=_0x51e7ef?0x0:_0x2e83a5[_0xd784('0x1e')];var _0x112e49=_0x51e7ef?_0x51f7ea[_0xd784('0x21')]:_0x2e83a5[_0xd784('0x1e')]+_0x2e83a5[_0xd784('0x20')];var _0x65b854;if(_0x112e49>=_0x277edb){_0x112e49=_0x277edb;_0x65b854=0xc8;}else{_0x65b854=0xce;}_0x29085e[_0xd784('0x1b')](_0x65b854);return _0x29085e['set'](_0xd784('0x22'),_0x2c8f3f+'-'+_0x112e49+'/'+_0x277edb)[_0xd784('0x1d')](_0x51f7ea);}return null;};}function patchUpdates(_0x3966e2){return function(_0x535a05){try{jsonpatch['apply'](_0x535a05,_0x3966e2,!![]);}catch(_0x5a3c62){return BPromise[_0xd784('0x23')](_0x5a3c62);}return _0x535a05['save']();};}function saveUpdates(_0x2662d9,_0x2ab7fb){return function(_0x82fbf1){if(_0x82fbf1){return _0x82fbf1['update'](_0x2662d9)[_0xd784('0x24')](function(_0x136b39){return _0x136b39;});}return null;};}function removeEntity(_0x485828,_0x2d5a4d){return function(_0x49b813){if(_0x49b813){return _0x49b813[_0xd784('0x25')]()[_0xd784('0x24')](function(){_0x485828[_0xd784('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3c6c11,_0x5951cd){return function(_0x48ed05){if(!_0x48ed05){_0x3c6c11['sendStatus'](0x194);}return _0x48ed05;};}function handleError(_0x483b46,_0x5cb074){_0x5cb074=_0x5cb074||0x1f4;return function(_0x59db89){logger['error'](_0x59db89[_0xd784('0x26')]);if(_0x59db89[_0xd784('0x27')]){delete _0x59db89[_0xd784('0x27')];}_0x483b46['status'](_0x5cb074)['send'](_0x59db89);};}exports[_0xd784('0x28')]=function(_0x1a8b24,_0x1c8cbf){var _0x520be0={},_0x14b4bd={},_0x19630c={'count':0x0,'rows':[]};var _0xebb388=_[_0xd784('0x29')](db[_0xd784('0x2a')][_0xd784('0x2b')],function(_0x864753){return{'name':_0x864753[_0xd784('0x2c')],'type':_0x864753[_0xd784('0x2d')][_0xd784('0x2e')]};});_0x14b4bd[_0xd784('0x2f')]=_[_0xd784('0x29')](_0xebb388,_0xd784('0x27'));_0x14b4bd[_0xd784('0x30')]=_['keys'](_0x1a8b24['query']);_0x14b4bd['filters']=_['intersection'](_0x14b4bd[_0xd784('0x2f')],_0x14b4bd[_0xd784('0x30')]);_0x520be0['attributes']=_[_0xd784('0x31')](_0x14b4bd[_0xd784('0x2f')],qs[_0xd784('0x32')](_0x1a8b24[_0xd784('0x30')][_0xd784('0x32')]));_0x520be0[_0xd784('0x33')]=_0x520be0[_0xd784('0x33')][_0xd784('0x34')]?_0x520be0[_0xd784('0x33')]:_0x14b4bd[_0xd784('0x2f')];if(!_0x1a8b24['query'][_0xd784('0x35')](_0xd784('0x36'))){_0x520be0['limit']=qs['limit'](_0x1a8b24[_0xd784('0x30')][_0xd784('0x20')]);_0x520be0[_0xd784('0x1e')]=qs[_0xd784('0x1e')](_0x1a8b24['query'][_0xd784('0x1e')]);}_0x520be0[_0xd784('0x37')]=qs[_0xd784('0x38')](_0x1a8b24[_0xd784('0x30')][_0xd784('0x38')]);_0x520be0['where']=qs[_0xd784('0x39')](_['pick'](_0x1a8b24[_0xd784('0x30')],_0x14b4bd[_0xd784('0x39')]),_0xebb388);if(_0x1a8b24[_0xd784('0x30')][_0xd784('0x3a')]){_0x520be0['where']=_[_0xd784('0x3b')](_0x520be0[_0xd784('0x3c')],{'$or':_[_0xd784('0x29')](_0xebb388,function(_0x37be54){if(_0x37be54[_0xd784('0x2d')]!=='VIRTUAL'){var _0x5265cb={};_0x5265cb[_0x37be54[_0xd784('0x27')]]={'$like':'%'+_0x1a8b24['query'][_0xd784('0x3a')]+'%'};return _0x5265cb;}})});}_0x520be0=_['merge']({},_0x520be0,_0x1a8b24[_0xd784('0x3d')]);var _0x5aacd7={'where':_0x520be0[_0xd784('0x3c')]};return db[_0xd784('0x2a')][_0xd784('0x21')](_0x5aacd7)[_0xd784('0x24')](function(_0x3fbf97){_0x19630c[_0xd784('0x21')]=_0x3fbf97;if(_0x1a8b24[_0xd784('0x30')][_0xd784('0x3e')]){_0x520be0[_0xd784('0x3f')]=[{'all':!![]}];}return db[_0xd784('0x2a')][_0xd784('0x40')](_0x520be0);})[_0xd784('0x24')](function(_0x52b18){_0x19630c['rows']=_0x52b18;return _0x19630c;})[_0xd784('0x24')](respondWithFilteredResult(_0x1c8cbf,_0x520be0))[_0xd784('0x41')](handleError(_0x1c8cbf,null));};exports['show']=function(_0x5935d3,_0x80b908){var _0x438804={'raw':!![],'where':{'id':_0x5935d3[_0xd784('0x42')]['id']}},_0x22c746={};_0x22c746[_0xd784('0x2f')]=_[_0xd784('0x43')](db['FreshsalesField'][_0xd784('0x2b')]);_0x22c746['query']=_[_0xd784('0x43')](_0x5935d3[_0xd784('0x30')]);_0x22c746['filters']=_[_0xd784('0x31')](_0x22c746['model'],_0x22c746[_0xd784('0x30')]);_0x438804[_0xd784('0x33')]=_['intersection'](_0x22c746['model'],qs['fields'](_0x5935d3[_0xd784('0x30')][_0xd784('0x32')]));_0x438804[_0xd784('0x33')]=_0x438804[_0xd784('0x33')][_0xd784('0x34')]?_0x438804['attributes']:_0x22c746['model'];if(_0x5935d3[_0xd784('0x30')][_0xd784('0x3e')]){_0x438804[_0xd784('0x3f')]=[{'all':!![]}];}_0x438804=_[_0xd784('0x3b')]({},_0x438804,_0x5935d3['options']);return db['FreshsalesField'][_0xd784('0x44')](_0x438804)[_0xd784('0x24')](handleEntityNotFound(_0x80b908,null))[_0xd784('0x24')](respondWithResult(_0x80b908,null))[_0xd784('0x41')](handleError(_0x80b908,null));};exports[_0xd784('0x45')]=function(_0x543d4b,_0x39e006){return db[_0xd784('0x2a')][_0xd784('0x45')](_0x543d4b[_0xd784('0x46')],{})[_0xd784('0x24')](respondWithResult(_0x39e006,0xc9))['catch'](handleError(_0x39e006,null));};exports[_0xd784('0x47')]=function(_0x4de2ef,_0x3e4c4d){if(_0x4de2ef[_0xd784('0x46')]['id']){delete _0x4de2ef[_0xd784('0x46')]['id'];}return db[_0xd784('0x2a')][_0xd784('0x44')]({'where':{'id':_0x4de2ef[_0xd784('0x42')]['id']}})[_0xd784('0x24')](handleEntityNotFound(_0x3e4c4d,null))['then'](saveUpdates(_0x4de2ef[_0xd784('0x46')],null))['then'](respondWithResult(_0x3e4c4d,null))[_0xd784('0x41')](handleError(_0x3e4c4d,null));};exports[_0xd784('0x25')]=function(_0x5193f4,_0xcb89f9){return db[_0xd784('0x2a')]['find']({'where':{'id':_0x5193f4[_0xd784('0x42')]['id']}})[_0xd784('0x24')](handleEntityNotFound(_0xcb89f9,null))[_0xd784('0x24')](removeEntity(_0xcb89f9,null))[_0xd784('0x41')](handleError(_0xcb89f9,null));};
\ No newline at end of file
index fe91b20..d2fd6f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe8e8=['lodash','util','moment','bluebird','rimraf','./intFreshsalesField.attributes','exports','FreshsalesField','freshsales_unique_index','idField','FieldId'];(function(_0x157706,_0x56a1a2){var _0x50ddc9=function(_0x384f15){while(--_0x384f15){_0x157706['push'](_0x157706['shift']());}};_0x50ddc9(++_0x56a1a2);}(_0xe8e8,0xc6));var _0x8e8e=function(_0xc82201,_0x524296){_0xc82201=_0xc82201-0x0;var _0x4165ab=_0xe8e8[_0xc82201];return _0x4165ab;};'use strict';var _=require(_0x8e8e('0x0'));var util=require(_0x8e8e('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x8e8e('0x2'));var BPromise=require(_0x8e8e('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x8e8e('0x4'));var config=require('../../config/environment');var attributes=require(_0x8e8e('0x5'));module[_0x8e8e('0x6')]=function(_0x355de7,_0x294176){return _0x355de7['define'](_0x8e8e('0x7'),attributes,{'tableName':'int_freshsales_fields','paranoid':![],'indexes':[{'name':_0x8e8e('0x8'),'fields':[_0x8e8e('0x9'),_0x8e8e('0xa')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xfa28=['../../config/environment','./intFreshsalesField.attributes','FreshsalesField','int_freshsales_fields','freshsales_unique_index','idField','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x5f33a6,_0x34fd32){var _0x2543f7=function(_0x35699c){while(--_0x35699c){_0x5f33a6['push'](_0x5f33a6['shift']());}};_0x2543f7(++_0x34fd32);}(_0xfa28,0x1c6));var _0x8fa2=function(_0x381589,_0x27a707){_0x381589=_0x381589-0x0;var _0x2a075d=_0xfa28[_0x381589];return _0x2a075d;};'use strict';var _=require(_0x8fa2('0x0'));var util=require(_0x8fa2('0x1'));var logger=require(_0x8fa2('0x2'))(_0x8fa2('0x3'));var moment=require(_0x8fa2('0x4'));var BPromise=require(_0x8fa2('0x5'));var rp=require(_0x8fa2('0x6'));var fs=require('fs');var path=require(_0x8fa2('0x7'));var rimraf=require('rimraf');var config=require(_0x8fa2('0x8'));var attributes=require(_0x8fa2('0x9'));module['exports']=function(_0x48263e,_0x4df001){return _0x48263e['define'](_0x8fa2('0xa'),attributes,{'tableName':_0x8fa2('0xb'),'paranoid':![],'indexes':[{'name':_0x8fa2('0xc'),'fields':[_0x8fa2('0xd'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 934909a..c87522a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2bd8=['info','request\x20sent','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','request','FreshsalesField,\x20%s,\x20%s','FreshsalesField,\x20%s,\x20%s,\x20%s','error','message'];(function(_0x25a0fc,_0x5cc676){var _0x38b375=function(_0x288bdd){while(--_0x288bdd){_0x25a0fc['push'](_0x25a0fc['shift']());}};_0x38b375(++_0x5cc676);}(_0x2bd8,0x130));var _0x82bd=function(_0x3164b7,_0x1f7af9){_0x3164b7=_0x3164b7-0x0;var _0x1512d8=_0x2bd8[_0x3164b7];return _0x1512d8;};'use strict';var _=require(_0x82bd('0x0'));var util=require('util');var moment=require(_0x82bd('0x1'));var BPromise=require(_0x82bd('0x2'));var rs=require(_0x82bd('0x3'));var fs=require('fs');var Redis=require(_0x82bd('0x4'));var db=require(_0x82bd('0x5'))['db'];var utils=require(_0x82bd('0x6'));var logger=require(_0x82bd('0x7'))('rpc');var config=require(_0x82bd('0x8'));var jayson=require(_0x82bd('0x9'));var client=jayson[_0x82bd('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x19dbb1,_0x77d7a9,_0x226f60){return new BPromise(function(_0x1f7463,_0x4dc3a6){return client[_0x82bd('0xb')](_0x19dbb1,_0x226f60)['then'](function(_0x4a9b2c){logger['info'](_0x82bd('0xc'),_0x77d7a9,'request\x20sent');logger['debug'](_0x82bd('0xd'),_0x77d7a9,'request\x20sent',JSON['stringify'](_0x4a9b2c));if(_0x4a9b2c[_0x82bd('0xe')]){if(_0x4a9b2c[_0x82bd('0xe')]['code']===0x1f4){logger[_0x82bd('0xe')]('FreshsalesField,\x20%s,\x20%s',_0x77d7a9,_0x4a9b2c[_0x82bd('0xe')]['message']);return _0x4dc3a6(_0x4a9b2c[_0x82bd('0xe')][_0x82bd('0xf')]);}logger[_0x82bd('0xe')](_0x82bd('0xc'),_0x77d7a9,_0x4a9b2c['error'][_0x82bd('0xf')]);return _0x1f7463(_0x4a9b2c[_0x82bd('0xe')]['message']);}else{logger[_0x82bd('0x10')]('FreshsalesField,\x20%s,\x20%s',_0x77d7a9,_0x82bd('0x11'));_0x1f7463(_0x4a9b2c[_0x82bd('0x12')][_0x82bd('0xf')]);}})[_0x82bd('0x13')](function(_0x209081){logger[_0x82bd('0xe')](_0x82bd('0xc'),_0x77d7a9,_0x209081);_0x4dc3a6(_0x209081);});});}
\ No newline at end of file
+var _0xfcf0=['randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','FreshsalesField,\x20%s,\x20%s','debug','request\x20sent','stringify','error','message','result','lodash','util','bluebird'];(function(_0x42c118,_0x197006){var _0x112ebd=function(_0x337411){while(--_0x337411){_0x42c118['push'](_0x42c118['shift']());}};_0x112ebd(++_0x197006);}(_0xfcf0,0x138));var _0x0fcf=function(_0xa4928c,_0x16b89c){_0xa4928c=_0xa4928c-0x0;var _0x27cc29=_0xfcf0[_0xa4928c];return _0x27cc29;};'use strict';var _=require(_0x0fcf('0x0'));var util=require(_0x0fcf('0x1'));var moment=require('moment');var BPromise=require(_0x0fcf('0x2'));var rs=require(_0x0fcf('0x3'));var fs=require('fs');var Redis=require(_0x0fcf('0x4'));var db=require(_0x0fcf('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x0fcf('0x6'))(_0x0fcf('0x7'));var config=require(_0x0fcf('0x8'));var jayson=require(_0x0fcf('0x9'));var client=jayson[_0x0fcf('0xa')][_0x0fcf('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x61bbb9,_0x2dfdf8,_0x50c575){return new BPromise(function(_0x1388d1,_0x6ced94){return client[_0x0fcf('0xc')](_0x61bbb9,_0x50c575)['then'](function(_0x69a840){logger[_0x0fcf('0xd')](_0x0fcf('0xe'),_0x2dfdf8,'request\x20sent');logger[_0x0fcf('0xf')]('FreshsalesField,\x20%s,\x20%s,\x20%s',_0x2dfdf8,_0x0fcf('0x10'),JSON[_0x0fcf('0x11')](_0x69a840));if(_0x69a840[_0x0fcf('0x12')]){if(_0x69a840['error']['code']===0x1f4){logger[_0x0fcf('0x12')](_0x0fcf('0xe'),_0x2dfdf8,_0x69a840['error'][_0x0fcf('0x13')]);return _0x6ced94(_0x69a840[_0x0fcf('0x12')][_0x0fcf('0x13')]);}logger[_0x0fcf('0x12')](_0x0fcf('0xe'),_0x2dfdf8,_0x69a840['error'][_0x0fcf('0x13')]);return _0x1388d1(_0x69a840[_0x0fcf('0x12')][_0x0fcf('0x13')]);}else{logger['info'](_0x0fcf('0xe'),_0x2dfdf8,_0x0fcf('0x10'));_0x1388d1(_0x69a840[_0x0fcf('0x14')][_0x0fcf('0x13')]);}})['catch'](function(_0x3e78d0){logger[_0x0fcf('0x12')](_0x0fcf('0xe'),_0x2dfdf8,_0x3e78d0);_0x6ced94(_0x3e78d0);});});}
\ No newline at end of file
index 27c83a4..4061aec 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(_0x7daa3,_0x12e723){var _0x15090a=function(_0x392151){while(--_0x392151){_0x7daa3['push'](_0x7daa3['shift']());}};_0x15090a(++_0x12e723);}(_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/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(_0x42a4a3,_0x3d0117){var _0x55c406=function(_0x1a44eb){while(--_0x1a44eb){_0x42a4a3['push'](_0x42a4a3['shift']());}};_0x55c406(++_0x3d0117);}(_0x9957,0x93));var _0x7995=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0x9957[_0x1ac595];return _0x455fff;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x9')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x11')]('/',auth['isAuthenticated'](),controller[_0x7995('0x12')]);router[_0x7995('0x11')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0x13')]);router[_0x7995('0x14')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x15')]);router[_0x7995('0x16')]('/:id',auth['isAuthenticated'](),controller[_0x7995('0x17')]);module[_0x7995('0x18')]=router;
\ No newline at end of file
index 18a316a..014773e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdbc6=['STRING','username','ENUM','newTab','integrationTab'];(function(_0x51707a,_0x40ad27){var _0x5ebd5b=function(_0x3198c9){while(--_0x3198c9){_0x51707a['push'](_0x51707a['shift']());}};_0x5ebd5b(++_0x40ad27);}(_0xdbc6,0x13b));var _0x6dbc=function(_0x4a023d,_0x2ac995){_0x4a023d=_0x4a023d-0x0;var _0xd4ca1=_0xdbc6[_0x4a023d];return _0xd4ca1;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x6dbc('0x0')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0x6dbc('0x0')],'unique':_0x6dbc('0x1')},'remoteUri':{'type':Sequelize[_0x6dbc('0x0')]},'password':{'type':Sequelize[_0x6dbc('0x0')]},'clientId':{'type':Sequelize[_0x6dbc('0x0')]},'clientSecret':{'type':Sequelize[_0x6dbc('0x0')]},'securityToken':{'type':Sequelize['STRING']},'serverUrl':{'type':Sequelize[_0x6dbc('0x0')],'allowNull':![]},'type':{'type':Sequelize[_0x6dbc('0x2')]('integrationTab',_0x6dbc('0x3')),'defaultValue':_0x6dbc('0x4')}};
\ No newline at end of file
+var _0xcac2=['STRING','username','ENUM','integrationTab','newTab','sequelize','exports'];(function(_0x110c3d,_0x12ee06){var _0x226d67=function(_0x1fb6e1){while(--_0x1fb6e1){_0x110c3d['push'](_0x110c3d['shift']());}};_0x226d67(++_0x12ee06);}(_0xcac2,0x1e8));var _0x2cac=function(_0x2b94c9,_0x5b1207){_0x2b94c9=_0x2b94c9-0x0;var _0x292b22=_0xcac2[_0x2b94c9];return _0x292b22;};'use strict';var Sequelize=require(_0x2cac('0x0'));module[_0x2cac('0x1')]={'name':{'type':Sequelize[_0x2cac('0x2')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0x2cac('0x2')],'unique':_0x2cac('0x3')},'remoteUri':{'type':Sequelize['STRING']},'password':{'type':Sequelize['STRING']},'clientId':{'type':Sequelize['STRING']},'clientSecret':{'type':Sequelize['STRING']},'securityToken':{'type':Sequelize[_0x2cac('0x2')]},'serverUrl':{'type':Sequelize[_0x2cac('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x2cac('0x4')](_0x2cac('0x5'),_0x2cac('0x6')),'defaultValue':_0x2cac('0x5')}};
\ No newline at end of file
index c0266cf..fa5e122 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6fdf=['count','set','Content-Range','reject','save','destroy','end','sendStatus','name','send','index','map','rawAttributes','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','filter','where','merge','VIRTUAL','options','then','include','SalesforceAccount','findAll','rows','show','params','includeAll','find','create','body','catch','getConfigurations','SalesforceConfiguration','sort','pick','nolimit','addConfiguration','findOne','AccountId','Subjects','channel','Descriptions','SalesforceField','getFields','clientId','clientSecret','password','securityToken','remoteUri','slice','substring','Connection','username','concat','isNil','ticketType','sobject','describe','OwnerId','ActivityDate','IsReminderSet','IsRecurrence','Subject','Description','string','int','picklist','textarea','includes','label','custom','picklistValues','value','boolean','True','true','False','test','statusCode','error','getFields,\x20%s,\x20%s,\x20%s','stringify','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','lodash','squel','crypto','desk.js','querystring','ioredis','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','status','json','offset','undefined','limit'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x6fdf,0x1ca));var _0xf6fd=function(_0x206693,_0x38cc7c){_0x206693=_0x206693-0x0;var _0x4cebbc=_0x6fdf[_0x206693];return _0x4cebbc;};'use strict';var emlformat=require(_0xf6fd('0x0'));var rimraf=require(_0xf6fd('0x1'));var zipdir=require(_0xf6fd('0x2'));var jsonpatch=require(_0xf6fd('0x3'));var rp=require(_0xf6fd('0x4'));var moment=require(_0xf6fd('0x5'));var BPromise=require(_0xf6fd('0x6'));var Mustache=require('mustache');var util=require(_0xf6fd('0x7'));var path=require(_0xf6fd('0x8'));var sox=require(_0xf6fd('0x9'));var csv=require(_0xf6fd('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf6fd('0xb'));var squel=require(_0xf6fd('0xc'));var crypto=require(_0xf6fd('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xf6fd('0xe'));var toCsv=require(_0xf6fd('0xa'));var querystring=require(_0xf6fd('0xf'));var Papa=require('papaparse');var Redis=require(_0xf6fd('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xf6fd('0x11'));var logger=require(_0xf6fd('0x12'))(_0xf6fd('0x13'));var utils=require(_0xf6fd('0x14'));var config=require(_0xf6fd('0x15'));var licenseUtil=require(_0xf6fd('0x16'));var db=require(_0xf6fd('0x17'))['db'];var integrations=require(_0xf6fd('0x18'));function respondWithStatusCode(_0x1dbbc2,_0x5f008d){_0x5f008d=_0x5f008d||0xcc;return function(_0x2f4ece){if(_0x2f4ece){return _0x1dbbc2['sendStatus'](_0x5f008d);}return _0x1dbbc2['status'](_0x5f008d)['end']();};}function respondWithResult(_0x4fa959,_0x53d9e3){_0x53d9e3=_0x53d9e3||0xc8;return function(_0x7ba34a){if(_0x7ba34a){return _0x4fa959[_0xf6fd('0x19')](_0x53d9e3)[_0xf6fd('0x1a')](_0x7ba34a);}};}function respondWithFilteredResult(_0x5e0470,_0x4e171d){return function(_0x20175b){if(_0x20175b){var _0x5de621=typeof _0x4e171d[_0xf6fd('0x1b')]===_0xf6fd('0x1c')&&typeof _0x4e171d[_0xf6fd('0x1d')]==='undefined';var _0x221712=_0x20175b[_0xf6fd('0x1e')];var _0x4d8a03=_0x5de621?0x0:_0x4e171d[_0xf6fd('0x1b')];var _0x27efe1=_0x5de621?_0x20175b[_0xf6fd('0x1e')]:_0x4e171d[_0xf6fd('0x1b')]+_0x4e171d[_0xf6fd('0x1d')];var _0x418201;if(_0x27efe1>=_0x221712){_0x27efe1=_0x221712;_0x418201=0xc8;}else{_0x418201=0xce;}_0x5e0470[_0xf6fd('0x19')](_0x418201);return _0x5e0470[_0xf6fd('0x1f')](_0xf6fd('0x20'),_0x4d8a03+'-'+_0x27efe1+'/'+_0x221712)[_0xf6fd('0x1a')](_0x20175b);}return null;};}function patchUpdates(_0x3a9f2b){return function(_0x471722){try{jsonpatch['apply'](_0x471722,_0x3a9f2b,!![]);}catch(_0x25eaf2){return BPromise[_0xf6fd('0x21')](_0x25eaf2);}return _0x471722[_0xf6fd('0x22')]();};}function saveUpdates(_0x577b9c,_0x1e433c){return function(_0x419abb){if(_0x419abb){return _0x419abb['update'](_0x577b9c)['then'](function(_0x41bf54){return _0x41bf54;});}return null;};}function removeEntity(_0x190d20,_0x371de3){return function(_0x302082){if(_0x302082){return _0x302082[_0xf6fd('0x23')]()['then'](function(){_0x190d20[_0xf6fd('0x19')](0xcc)[_0xf6fd('0x24')]();});}};}function handleEntityNotFound(_0x12c6c6,_0x53cb44){return function(_0x5a654c){if(!_0x5a654c){_0x12c6c6[_0xf6fd('0x25')](0x194);}return _0x5a654c;};}function handleError(_0x31201f,_0x54016d){_0x54016d=_0x54016d||0x1f4;return function(_0x39d6de){logger['error'](_0x39d6de['stack']);if(_0x39d6de[_0xf6fd('0x26')]){delete _0x39d6de[_0xf6fd('0x26')];}_0x31201f[_0xf6fd('0x19')](_0x54016d)[_0xf6fd('0x27')](_0x39d6de);};}exports[_0xf6fd('0x28')]=function(_0x2c4b81,_0x5ad023){var _0x36fcdd={},_0x340de2={},_0xe27154={'count':0x0,'rows':[]};var _0xdb53f0=_[_0xf6fd('0x29')](db['SalesforceAccount'][_0xf6fd('0x2a')],function(_0x523fe2){return{'name':_0x523fe2['fieldName'],'type':_0x523fe2[_0xf6fd('0x2b')]['key']};});_0x340de2[_0xf6fd('0x2c')]=_['map'](_0xdb53f0,_0xf6fd('0x26'));_0x340de2[_0xf6fd('0x2d')]=_[_0xf6fd('0x2e')](_0x2c4b81[_0xf6fd('0x2d')]);_0x340de2[_0xf6fd('0x2f')]=_[_0xf6fd('0x30')](_0x340de2[_0xf6fd('0x2c')],_0x340de2[_0xf6fd('0x2d')]);_0x36fcdd[_0xf6fd('0x31')]=_[_0xf6fd('0x30')](_0x340de2[_0xf6fd('0x2c')],qs[_0xf6fd('0x32')](_0x2c4b81[_0xf6fd('0x2d')]['fields']));_0x36fcdd[_0xf6fd('0x31')]=_0x36fcdd['attributes'][_0xf6fd('0x33')]?_0x36fcdd[_0xf6fd('0x31')]:_0x340de2['model'];if(!_0x2c4b81['query'][_0xf6fd('0x34')]('nolimit')){_0x36fcdd[_0xf6fd('0x1d')]=qs['limit'](_0x2c4b81[_0xf6fd('0x2d')][_0xf6fd('0x1d')]);_0x36fcdd['offset']=qs[_0xf6fd('0x1b')](_0x2c4b81['query'][_0xf6fd('0x1b')]);}_0x36fcdd[_0xf6fd('0x35')]=qs['sort'](_0x2c4b81[_0xf6fd('0x2d')]['sort']);_0x36fcdd['where']=qs[_0xf6fd('0x2f')](_['pick'](_0x2c4b81[_0xf6fd('0x2d')],_0x340de2[_0xf6fd('0x2f')]),_0xdb53f0);if(_0x2c4b81['query'][_0xf6fd('0x36')]){_0x36fcdd[_0xf6fd('0x37')]=_[_0xf6fd('0x38')](_0x36fcdd[_0xf6fd('0x37')],{'$or':_[_0xf6fd('0x29')](_0xdb53f0,function(_0x5f114a){if(_0x5f114a[_0xf6fd('0x2b')]!==_0xf6fd('0x39')){var _0x2ba681={};_0x2ba681[_0x5f114a[_0xf6fd('0x26')]]={'$like':'%'+_0x2c4b81[_0xf6fd('0x2d')][_0xf6fd('0x36')]+'%'};return _0x2ba681;}})});}_0x36fcdd=_[_0xf6fd('0x38')]({},_0x36fcdd,_0x2c4b81[_0xf6fd('0x3a')]);var _0x3fa949={'where':_0x36fcdd[_0xf6fd('0x37')]};return db['SalesforceAccount'][_0xf6fd('0x1e')](_0x3fa949)[_0xf6fd('0x3b')](function(_0x5745b0){_0xe27154[_0xf6fd('0x1e')]=_0x5745b0;if(_0x2c4b81['query']['includeAll']){_0x36fcdd[_0xf6fd('0x3c')]=[{'all':!![]}];}return db[_0xf6fd('0x3d')][_0xf6fd('0x3e')](_0x36fcdd);})['then'](function(_0x344a22){_0xe27154[_0xf6fd('0x3f')]=_0x344a22;return _0xe27154;})[_0xf6fd('0x3b')](respondWithFilteredResult(_0x5ad023,_0x36fcdd))['catch'](handleError(_0x5ad023,null));};exports[_0xf6fd('0x40')]=function(_0x44e5a4,_0x37e8df){var _0xe10c33={'raw':![],'where':{'id':_0x44e5a4[_0xf6fd('0x41')]['id']}},_0x138a27={};_0x138a27[_0xf6fd('0x2c')]=_[_0xf6fd('0x2e')](db[_0xf6fd('0x3d')][_0xf6fd('0x2a')]);_0x138a27[_0xf6fd('0x2d')]=_['keys'](_0x44e5a4['query']);_0x138a27[_0xf6fd('0x2f')]=_[_0xf6fd('0x30')](_0x138a27[_0xf6fd('0x2c')],_0x138a27[_0xf6fd('0x2d')]);_0xe10c33[_0xf6fd('0x31')]=_['intersection'](_0x138a27[_0xf6fd('0x2c')],qs[_0xf6fd('0x32')](_0x44e5a4[_0xf6fd('0x2d')][_0xf6fd('0x32')]));_0xe10c33['attributes']=_0xe10c33[_0xf6fd('0x31')][_0xf6fd('0x33')]?_0xe10c33[_0xf6fd('0x31')]:_0x138a27['model'];if(_0x44e5a4['query'][_0xf6fd('0x42')]){_0xe10c33['include']=[{'all':!![]}];}_0xe10c33=_['merge']({},_0xe10c33,_0x44e5a4[_0xf6fd('0x3a')]);return db[_0xf6fd('0x3d')][_0xf6fd('0x43')](_0xe10c33)[_0xf6fd('0x3b')](handleEntityNotFound(_0x37e8df,null))[_0xf6fd('0x3b')](respondWithResult(_0x37e8df,null))['catch'](handleError(_0x37e8df,null));};exports[_0xf6fd('0x44')]=function(_0x3b48a0,_0x4ecccc){return db[_0xf6fd('0x3d')][_0xf6fd('0x44')](_0x3b48a0[_0xf6fd('0x45')],{})[_0xf6fd('0x3b')](respondWithResult(_0x4ecccc,0xc9))['catch'](handleError(_0x4ecccc,null));};exports['update']=function(_0x532429,_0x2652b1){if(_0x532429['body']['id']){delete _0x532429[_0xf6fd('0x45')]['id'];}return db[_0xf6fd('0x3d')][_0xf6fd('0x43')]({'where':{'id':_0x532429[_0xf6fd('0x41')]['id']}})[_0xf6fd('0x3b')](handleEntityNotFound(_0x2652b1,null))[_0xf6fd('0x3b')](saveUpdates(_0x532429[_0xf6fd('0x45')],null))[_0xf6fd('0x3b')](respondWithResult(_0x2652b1,null))[_0xf6fd('0x46')](handleError(_0x2652b1,null));};exports[_0xf6fd('0x23')]=function(_0x24f8d1,_0x4e9507){return db[_0xf6fd('0x3d')][_0xf6fd('0x43')]({'where':{'id':_0x24f8d1[_0xf6fd('0x41')]['id']}})[_0xf6fd('0x3b')](handleEntityNotFound(_0x4e9507,null))[_0xf6fd('0x3b')](removeEntity(_0x4e9507,null))['catch'](handleError(_0x4e9507,null));};exports[_0xf6fd('0x47')]=function(_0x2a5c22,_0x3abb39,_0xddb62d){var _0x1c30e6={};var _0x5506c9={};var _0x1731a9;var _0x33d90e;return db['SalesforceAccount']['findOne']({'where':{'id':_0x2a5c22[_0xf6fd('0x41')]['id']}})[_0xf6fd('0x3b')](handleEntityNotFound(_0x3abb39,null))['then'](function(_0x36143b){if(_0x36143b){_0x1731a9=_0x36143b;_0x5506c9[_0xf6fd('0x2c')]=_[_0xf6fd('0x2e')](db[_0xf6fd('0x48')][_0xf6fd('0x2a')]);_0x5506c9[_0xf6fd('0x2d')]=_[_0xf6fd('0x2e')](_0x2a5c22[_0xf6fd('0x2d')]);_0x5506c9[_0xf6fd('0x2f')]=_[_0xf6fd('0x30')](_0x5506c9['model'],_0x5506c9['query']);_0x1c30e6[_0xf6fd('0x31')]=_[_0xf6fd('0x30')](_0x5506c9['model'],qs[_0xf6fd('0x32')](_0x2a5c22['query'][_0xf6fd('0x32')]));_0x1c30e6[_0xf6fd('0x31')]=_0x1c30e6[_0xf6fd('0x31')]['length']?_0x1c30e6[_0xf6fd('0x31')]:_0x5506c9['model'];_0x1c30e6[_0xf6fd('0x35')]=qs[_0xf6fd('0x49')](_0x2a5c22[_0xf6fd('0x2d')]['sort']);_0x1c30e6[_0xf6fd('0x37')]=qs[_0xf6fd('0x2f')](_[_0xf6fd('0x4a')](_0x2a5c22[_0xf6fd('0x2d')],_0x5506c9['filters']));if(_0x2a5c22[_0xf6fd('0x2d')][_0xf6fd('0x36')]){_0x1c30e6['where']=_['merge'](_0x1c30e6['where'],{'$or':_['map'](_0x1c30e6[_0xf6fd('0x31')],function(_0x1f20b5){var _0x298e86={};_0x298e86[_0x1f20b5]={'$like':'%'+_0x2a5c22[_0xf6fd('0x2d')][_0xf6fd('0x36')]+'%'};return _0x298e86;})});}_0x1c30e6=_[_0xf6fd('0x38')]({},_0x1c30e6,_0x2a5c22['options']);return _0x1731a9[_0xf6fd('0x47')](_0x1c30e6);}})[_0xf6fd('0x3b')](function(_0x44f513){if(_0x44f513){_0x33d90e=_0x44f513[_0xf6fd('0x33')];if(!_0x2a5c22[_0xf6fd('0x2d')][_0xf6fd('0x34')](_0xf6fd('0x4b'))){_0x1c30e6[_0xf6fd('0x1d')]=qs[_0xf6fd('0x1d')](_0x2a5c22[_0xf6fd('0x2d')]['limit']);_0x1c30e6[_0xf6fd('0x1b')]=qs['offset'](_0x2a5c22[_0xf6fd('0x2d')][_0xf6fd('0x1b')]);}return _0x1731a9['getConfigurations'](_0x1c30e6);}})[_0xf6fd('0x3b')](function(_0x41efe4){if(_0x41efe4){return _0x41efe4?{'count':_0x33d90e,'rows':_0x41efe4}:null;}})['then'](respondWithResult(_0x3abb39,null))['catch'](handleError(_0x3abb39,null));};exports[_0xf6fd('0x4c')]=function(_0x50b789,_0x302fb0,_0x4085a9){if(_0x50b789[_0xf6fd('0x45')]['id']){delete _0x50b789[_0xf6fd('0x45')]['id'];}return db[_0xf6fd('0x3d')][_0xf6fd('0x4d')]({'where':{'id':_0x50b789[_0xf6fd('0x41')]['id']}})[_0xf6fd('0x3b')](handleEntityNotFound(_0x302fb0,null))['then'](function(_0x10162d){if(_0x10162d){_0x50b789['body'][_0xf6fd('0x4e')]=_0x10162d['id'];_0x50b789[_0xf6fd('0x45')][_0xf6fd('0x4f')]=integrations['getSubjects'](_0x50b789['body'][_0xf6fd('0x50')],_0x50b789['body'][_0xf6fd('0x2b')]);_0x50b789['body'][_0xf6fd('0x51')]=integrations['getDescriptions'](_0x50b789[_0xf6fd('0x45')][_0xf6fd('0x50')],_0x50b789[_0xf6fd('0x45')]['type']);return db[_0xf6fd('0x48')][_0xf6fd('0x44')](_0x50b789['body'],{'include':[{'model':db[_0xf6fd('0x52')],'as':_0xf6fd('0x4f')},{'model':db['SalesforceField'],'as':_0xf6fd('0x51')}]});}return null;})['then'](respondWithResult(_0x302fb0,null))[_0xf6fd('0x46')](handleError(_0x302fb0,null));};exports[_0xf6fd('0x53')]=function(_0x103944,_0x67f26c,_0x3f1f4c){var _0x38d6a5;var _0x5d8b50='';var _0x1f7f90='Task';return db[_0xf6fd('0x3d')][_0xf6fd('0x4d')]({'where':{'id':_0x103944[_0xf6fd('0x41')]['id']},'attributes':['id','remoteUri',_0xf6fd('0x54'),_0xf6fd('0x55'),'username',_0xf6fd('0x56'),_0xf6fd('0x57')]})['then'](handleEntityNotFound(_0x67f26c,null))[_0xf6fd('0x3b')](function(_0x2ab38c){if(_0x2ab38c){_0x5d8b50=_0x2ab38c[_0xf6fd('0x58')];var _0x59d475=_0x5d8b50[_0xf6fd('0x59')](-0x1);if(_0x59d475==='/'){_0x5d8b50=_0x5d8b50[_0xf6fd('0x5a')](0x0,_0x5d8b50['lastIndexOf'](_0x59d475));}_0x38d6a5=new jsforce[(_0xf6fd('0x5b'))]({'oauth2':{'loginUrl':_0x5d8b50,'clientId':_0x2ab38c[_0xf6fd('0x54')],'clientSecret':_0x2ab38c[_0xf6fd('0x55')]}});return _0x38d6a5['login'](_0x2ab38c[_0xf6fd('0x5c')],_0x2ab38c[_0xf6fd('0x56')][_0xf6fd('0x5d')](_0x2ab38c[_0xf6fd('0x57')]));}})['then'](function(_0x3a8f25){if(_0x3a8f25){if(!_[_0xf6fd('0x5e')](_0x103944[_0xf6fd('0x2d')][_0xf6fd('0x5f')])){_0x1f7f90=_0x103944['query'][_0xf6fd('0x5f')];}return _0x38d6a5[_0xf6fd('0x60')](_0x1f7f90)[_0xf6fd('0x61')]();}})[_0xf6fd('0x3b')](function(_0x81d932){var _0x2cfe5d=[_0xf6fd('0x62'),_0xf6fd('0x63'),_0xf6fd('0x64'),_0xf6fd('0x65'),_0xf6fd('0x66'),_0xf6fd('0x67')];var _0x27ca3c=[_0xf6fd('0x68'),_0xf6fd('0x69'),_0xf6fd('0x6a'),'boolean','email',_0xf6fd('0x6b'),'phone'];if(_0x81d932){_['remove'](_0x81d932['fields'],function(_0x6a874f){return _0x2cfe5d[_0xf6fd('0x6c')](_0x6a874f[_0xf6fd('0x26')])||!_0x27ca3c[_0xf6fd('0x6c')](_0x6a874f[_0xf6fd('0x2b')]);});return{'count':_0x81d932[_0xf6fd('0x32')][_0xf6fd('0x33')],'rows':_['map'](_0x81d932[_0xf6fd('0x32')],function(_0x1f7c97){return{'id':_0x1f7c97[_0xf6fd('0x26')],'name':_0x1f7c97[_0xf6fd('0x6d')],'custom':_0x1f7c97[_0xf6fd('0x6e')],'options':_0x1f7c97[_0xf6fd('0x6f')]['length']>0x0?_[_0xf6fd('0x29')](_0x1f7c97['picklistValues'],function(_0x670ef7){return{'name':_0x670ef7['label'],'value':_0x670ef7[_0xf6fd('0x70')]};}):_0x1f7c97[_0xf6fd('0x2b')]==_0xf6fd('0x71')?[{'name':_0xf6fd('0x72'),'value':_0xf6fd('0x73')},{'name':_0xf6fd('0x74'),'value':'false'}]:[]};})};}})[_0xf6fd('0x3b')](respondWithResult(_0x67f26c,null))[_0xf6fd('0x46')](function(_0x41fffd){var _0x23bf85=_0x103944[_0xf6fd('0x2d')][_0xf6fd('0x75')]?0x1f4:_0x41fffd[_0xf6fd('0x76')]||0x1f4;logger[_0xf6fd('0x77')](_0xf6fd('0x78'),'getFields',_0x23bf85,JSON[_0xf6fd('0x79')](_0x41fffd));delete _0x41fffd[_0xf6fd('0x26')];if(_0x23bf85===0x191){_0x23bf85=0x190;}_0x67f26c['status'](_0x23bf85)[_0xf6fd('0x27')](_0x103944[_0xf6fd('0x2d')][_0xf6fd('0x75')]?{'message':'Wrong\x20credentials','statusCode':_0x41fffd[_0xf6fd('0x76')]}:_0x41fffd);});};
\ No newline at end of file
+var _0x839b=['body','update','params','destroy','getConfigurations','SalesforceConfiguration','addConfiguration','findOne','getSubjects','channel','Descriptions','getDescriptions','SalesforceField','Subjects','getFields','Task','remoteUri','clientSecret','username','password','securityToken','slice','substring','lastIndexOf','Connection','clientId','login','concat','isNil','ticketType','sobject','describe','OwnerId','ActivityDate','IsReminderSet','IsRecurrence','Description','string','picklist','boolean','email','textarea','phone','includes','label','custom','picklistValues','value','True','true','False','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','send','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','count','Content-Range','reject','save','then','stack','name','SalesforceAccount','fieldName','type','key','map','query','keys','filters','model','attributes','intersection','fields','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','catch','show','rawAttributes','length','include','find','create'];(function(_0x19973a,_0x3324fd){var _0x305b72=function(_0x5517bf){while(--_0x5517bf){_0x19973a['push'](_0x19973a['shift']());}};_0x305b72(++_0x3324fd);}(_0x839b,0xb5));var _0xb839=function(_0x5b810b,_0x2d63b2){_0x5b810b=_0x5b810b-0x0;var _0x240195=_0x839b[_0x5b810b];return _0x240195;};'use strict';var emlformat=require(_0xb839('0x0'));var rimraf=require(_0xb839('0x1'));var zipdir=require(_0xb839('0x2'));var jsonpatch=require(_0xb839('0x3'));var rp=require(_0xb839('0x4'));var moment=require(_0xb839('0x5'));var BPromise=require(_0xb839('0x6'));var Mustache=require(_0xb839('0x7'));var util=require(_0xb839('0x8'));var path=require('path');var sox=require(_0xb839('0x9'));var csv=require(_0xb839('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb839('0xb'));var _=require(_0xb839('0xc'));var squel=require(_0xb839('0xd'));var crypto=require(_0xb839('0xe'));var jsforce=require(_0xb839('0xf'));var deskjs=require('desk.js');var toCsv=require(_0xb839('0xa'));var querystring=require(_0xb839('0x10'));var Papa=require(_0xb839('0x11'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xb839('0x12'));var as=require(_0xb839('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xb839('0x14'));var utils=require(_0xb839('0x15'));var config=require(_0xb839('0x16'));var licenseUtil=require(_0xb839('0x17'));var db=require(_0xb839('0x18'))['db'];var integrations=require(_0xb839('0x19'));function respondWithStatusCode(_0x17df58,_0x2452d4){_0x2452d4=_0x2452d4||0xcc;return function(_0x28503c){if(_0x28503c){return _0x17df58[_0xb839('0x1a')](_0x2452d4);}return _0x17df58[_0xb839('0x1b')](_0x2452d4)[_0xb839('0x1c')]();};}function respondWithResult(_0xbc3b62,_0x1d6a68){_0x1d6a68=_0x1d6a68||0xc8;return function(_0x12c5e2){if(_0x12c5e2){return _0xbc3b62[_0xb839('0x1b')](_0x1d6a68)[_0xb839('0x1d')](_0x12c5e2);}};}function respondWithFilteredResult(_0x2c1906,_0x1e3406){return function(_0x3d12de){if(_0x3d12de){var _0x457b08=typeof _0x1e3406[_0xb839('0x1e')]===_0xb839('0x1f')&&typeof _0x1e3406['limit']===_0xb839('0x1f');var _0x51f690=_0x3d12de[_0xb839('0x20')];var _0x3c6675=_0x457b08?0x0:_0x1e3406['offset'];var _0x2ae12a=_0x457b08?_0x3d12de['count']:_0x1e3406[_0xb839('0x1e')]+_0x1e3406['limit'];var _0x272aaf;if(_0x2ae12a>=_0x51f690){_0x2ae12a=_0x51f690;_0x272aaf=0xc8;}else{_0x272aaf=0xce;}_0x2c1906[_0xb839('0x1b')](_0x272aaf);return _0x2c1906['set'](_0xb839('0x21'),_0x3c6675+'-'+_0x2ae12a+'/'+_0x51f690)[_0xb839('0x1d')](_0x3d12de);}return null;};}function patchUpdates(_0x33dbae){return function(_0x5789c0){try{jsonpatch['apply'](_0x5789c0,_0x33dbae,!![]);}catch(_0x469813){return BPromise[_0xb839('0x22')](_0x469813);}return _0x5789c0[_0xb839('0x23')]();};}function saveUpdates(_0x5379da,_0x496b8d){return function(_0x270c4e){if(_0x270c4e){return _0x270c4e['update'](_0x5379da)[_0xb839('0x24')](function(_0x5734cb){return _0x5734cb;});}return null;};}function removeEntity(_0x1b0c09,_0x12ecb6){return function(_0x3fc901){if(_0x3fc901){return _0x3fc901['destroy']()[_0xb839('0x24')](function(){_0x1b0c09['status'](0xcc)[_0xb839('0x1c')]();});}};}function handleEntityNotFound(_0xe6dc07,_0x224bfe){return function(_0x2aa9c8){if(!_0x2aa9c8){_0xe6dc07[_0xb839('0x1a')](0x194);}return _0x2aa9c8;};}function handleError(_0x3196de,_0x8e8b){_0x8e8b=_0x8e8b||0x1f4;return function(_0x5d6cbd){logger['error'](_0x5d6cbd[_0xb839('0x25')]);if(_0x5d6cbd['name']){delete _0x5d6cbd[_0xb839('0x26')];}_0x3196de[_0xb839('0x1b')](_0x8e8b)['send'](_0x5d6cbd);};}exports['index']=function(_0x4efea1,_0x4cb794){var _0x161311={},_0xb13639={},_0x407bcf={'count':0x0,'rows':[]};var _0x330611=_['map'](db[_0xb839('0x27')]['rawAttributes'],function(_0x322b2f){return{'name':_0x322b2f[_0xb839('0x28')],'type':_0x322b2f[_0xb839('0x29')][_0xb839('0x2a')]};});_0xb13639['model']=_[_0xb839('0x2b')](_0x330611,_0xb839('0x26'));_0xb13639[_0xb839('0x2c')]=_[_0xb839('0x2d')](_0x4efea1[_0xb839('0x2c')]);_0xb13639[_0xb839('0x2e')]=_['intersection'](_0xb13639[_0xb839('0x2f')],_0xb13639[_0xb839('0x2c')]);_0x161311[_0xb839('0x30')]=_[_0xb839('0x31')](_0xb13639[_0xb839('0x2f')],qs[_0xb839('0x32')](_0x4efea1[_0xb839('0x2c')]['fields']));_0x161311[_0xb839('0x30')]=_0x161311[_0xb839('0x30')]['length']?_0x161311[_0xb839('0x30')]:_0xb13639[_0xb839('0x2f')];if(!_0x4efea1[_0xb839('0x2c')][_0xb839('0x33')](_0xb839('0x34'))){_0x161311[_0xb839('0x35')]=qs['limit'](_0x4efea1[_0xb839('0x2c')]['limit']);_0x161311['offset']=qs['offset'](_0x4efea1[_0xb839('0x2c')][_0xb839('0x1e')]);}_0x161311[_0xb839('0x36')]=qs[_0xb839('0x37')](_0x4efea1[_0xb839('0x2c')]['sort']);_0x161311[_0xb839('0x38')]=qs[_0xb839('0x2e')](_[_0xb839('0x39')](_0x4efea1[_0xb839('0x2c')],_0xb13639[_0xb839('0x2e')]),_0x330611);if(_0x4efea1[_0xb839('0x2c')][_0xb839('0x3a')]){_0x161311['where']=_[_0xb839('0x3b')](_0x161311[_0xb839('0x38')],{'$or':_[_0xb839('0x2b')](_0x330611,function(_0x222bf9){if(_0x222bf9[_0xb839('0x29')]!==_0xb839('0x3c')){var _0x52acae={};_0x52acae[_0x222bf9[_0xb839('0x26')]]={'$like':'%'+_0x4efea1['query'][_0xb839('0x3a')]+'%'};return _0x52acae;}})});}_0x161311=_['merge']({},_0x161311,_0x4efea1[_0xb839('0x3d')]);var _0x56bdeb={'where':_0x161311['where']};return db[_0xb839('0x27')][_0xb839('0x20')](_0x56bdeb)['then'](function(_0x2f54b1){_0x407bcf[_0xb839('0x20')]=_0x2f54b1;if(_0x4efea1[_0xb839('0x2c')][_0xb839('0x3e')]){_0x161311['include']=[{'all':!![]}];}return db[_0xb839('0x27')][_0xb839('0x3f')](_0x161311);})[_0xb839('0x24')](function(_0x3b9535){_0x407bcf['rows']=_0x3b9535;return _0x407bcf;})[_0xb839('0x24')](respondWithFilteredResult(_0x4cb794,_0x161311))[_0xb839('0x40')](handleError(_0x4cb794,null));};exports[_0xb839('0x41')]=function(_0x4c6814,_0x206329){var _0x5a8b03={'raw':![],'where':{'id':_0x4c6814['params']['id']}},_0x35d549={};_0x35d549['model']=_[_0xb839('0x2d')](db[_0xb839('0x27')][_0xb839('0x42')]);_0x35d549[_0xb839('0x2c')]=_['keys'](_0x4c6814['query']);_0x35d549['filters']=_[_0xb839('0x31')](_0x35d549['model'],_0x35d549['query']);_0x5a8b03[_0xb839('0x30')]=_[_0xb839('0x31')](_0x35d549[_0xb839('0x2f')],qs[_0xb839('0x32')](_0x4c6814[_0xb839('0x2c')]['fields']));_0x5a8b03[_0xb839('0x30')]=_0x5a8b03[_0xb839('0x30')][_0xb839('0x43')]?_0x5a8b03[_0xb839('0x30')]:_0x35d549[_0xb839('0x2f')];if(_0x4c6814[_0xb839('0x2c')][_0xb839('0x3e')]){_0x5a8b03[_0xb839('0x44')]=[{'all':!![]}];}_0x5a8b03=_['merge']({},_0x5a8b03,_0x4c6814['options']);return db['SalesforceAccount'][_0xb839('0x45')](_0x5a8b03)[_0xb839('0x24')](handleEntityNotFound(_0x206329,null))[_0xb839('0x24')](respondWithResult(_0x206329,null))[_0xb839('0x40')](handleError(_0x206329,null));};exports[_0xb839('0x46')]=function(_0x50cf8a,_0x58f816){return db[_0xb839('0x27')][_0xb839('0x46')](_0x50cf8a[_0xb839('0x47')],{})[_0xb839('0x24')](respondWithResult(_0x58f816,0xc9))[_0xb839('0x40')](handleError(_0x58f816,null));};exports[_0xb839('0x48')]=function(_0x49c0b7,_0x563f8d){if(_0x49c0b7[_0xb839('0x47')]['id']){delete _0x49c0b7[_0xb839('0x47')]['id'];}return db['SalesforceAccount'][_0xb839('0x45')]({'where':{'id':_0x49c0b7[_0xb839('0x49')]['id']}})[_0xb839('0x24')](handleEntityNotFound(_0x563f8d,null))['then'](saveUpdates(_0x49c0b7[_0xb839('0x47')],null))[_0xb839('0x24')](respondWithResult(_0x563f8d,null))['catch'](handleError(_0x563f8d,null));};exports[_0xb839('0x4a')]=function(_0x6d0cdb,_0x1e38b8){return db[_0xb839('0x27')][_0xb839('0x45')]({'where':{'id':_0x6d0cdb['params']['id']}})['then'](handleEntityNotFound(_0x1e38b8,null))[_0xb839('0x24')](removeEntity(_0x1e38b8,null))['catch'](handleError(_0x1e38b8,null));};exports[_0xb839('0x4b')]=function(_0x4be826,_0x52a683,_0x1988a9){var _0x334358={};var _0x54e453={};var _0x354628;var _0x4612cc;return db[_0xb839('0x27')]['findOne']({'where':{'id':_0x4be826[_0xb839('0x49')]['id']}})['then'](handleEntityNotFound(_0x52a683,null))['then'](function(_0x479f4d){if(_0x479f4d){_0x354628=_0x479f4d;_0x54e453[_0xb839('0x2f')]=_[_0xb839('0x2d')](db[_0xb839('0x4c')]['rawAttributes']);_0x54e453[_0xb839('0x2c')]=_[_0xb839('0x2d')](_0x4be826[_0xb839('0x2c')]);_0x54e453[_0xb839('0x2e')]=_[_0xb839('0x31')](_0x54e453['model'],_0x54e453[_0xb839('0x2c')]);_0x334358[_0xb839('0x30')]=_['intersection'](_0x54e453[_0xb839('0x2f')],qs[_0xb839('0x32')](_0x4be826[_0xb839('0x2c')]['fields']));_0x334358[_0xb839('0x30')]=_0x334358['attributes'][_0xb839('0x43')]?_0x334358['attributes']:_0x54e453[_0xb839('0x2f')];_0x334358[_0xb839('0x36')]=qs[_0xb839('0x37')](_0x4be826[_0xb839('0x2c')][_0xb839('0x37')]);_0x334358[_0xb839('0x38')]=qs[_0xb839('0x2e')](_['pick'](_0x4be826[_0xb839('0x2c')],_0x54e453[_0xb839('0x2e')]));if(_0x4be826[_0xb839('0x2c')][_0xb839('0x3a')]){_0x334358[_0xb839('0x38')]=_[_0xb839('0x3b')](_0x334358[_0xb839('0x38')],{'$or':_[_0xb839('0x2b')](_0x334358['attributes'],function(_0x47e17d){var _0x41a81c={};_0x41a81c[_0x47e17d]={'$like':'%'+_0x4be826[_0xb839('0x2c')][_0xb839('0x3a')]+'%'};return _0x41a81c;})});}_0x334358=_[_0xb839('0x3b')]({},_0x334358,_0x4be826['options']);return _0x354628[_0xb839('0x4b')](_0x334358);}})[_0xb839('0x24')](function(_0x405b09){if(_0x405b09){_0x4612cc=_0x405b09[_0xb839('0x43')];if(!_0x4be826[_0xb839('0x2c')]['hasOwnProperty']('nolimit')){_0x334358[_0xb839('0x35')]=qs[_0xb839('0x35')](_0x4be826[_0xb839('0x2c')][_0xb839('0x35')]);_0x334358[_0xb839('0x1e')]=qs[_0xb839('0x1e')](_0x4be826[_0xb839('0x2c')][_0xb839('0x1e')]);}return _0x354628[_0xb839('0x4b')](_0x334358);}})[_0xb839('0x24')](function(_0x20221e){if(_0x20221e){return _0x20221e?{'count':_0x4612cc,'rows':_0x20221e}:null;}})[_0xb839('0x24')](respondWithResult(_0x52a683,null))[_0xb839('0x40')](handleError(_0x52a683,null));};exports[_0xb839('0x4d')]=function(_0x1dbcd1,_0x2e28d6,_0x3e78ba){if(_0x1dbcd1[_0xb839('0x47')]['id']){delete _0x1dbcd1['body']['id'];}return db['SalesforceAccount'][_0xb839('0x4e')]({'where':{'id':_0x1dbcd1[_0xb839('0x49')]['id']}})[_0xb839('0x24')](handleEntityNotFound(_0x2e28d6,null))[_0xb839('0x24')](function(_0x43dc88){if(_0x43dc88){_0x1dbcd1[_0xb839('0x47')]['AccountId']=_0x43dc88['id'];_0x1dbcd1[_0xb839('0x47')]['Subjects']=integrations[_0xb839('0x4f')](_0x1dbcd1['body'][_0xb839('0x50')],_0x1dbcd1[_0xb839('0x47')][_0xb839('0x29')]);_0x1dbcd1[_0xb839('0x47')][_0xb839('0x51')]=integrations[_0xb839('0x52')](_0x1dbcd1[_0xb839('0x47')][_0xb839('0x50')],_0x1dbcd1['body'][_0xb839('0x29')]);return db[_0xb839('0x4c')]['create'](_0x1dbcd1['body'],{'include':[{'model':db[_0xb839('0x53')],'as':_0xb839('0x54')},{'model':db[_0xb839('0x53')],'as':_0xb839('0x51')}]});}return null;})[_0xb839('0x24')](respondWithResult(_0x2e28d6,null))[_0xb839('0x40')](handleError(_0x2e28d6,null));};exports[_0xb839('0x55')]=function(_0x347c51,_0xf28a4b,_0x2d1d4e){var _0x586c20;var _0xed7acd='';var _0x5b0f23=_0xb839('0x56');return db[_0xb839('0x27')][_0xb839('0x4e')]({'where':{'id':_0x347c51[_0xb839('0x49')]['id']},'attributes':['id',_0xb839('0x57'),'clientId',_0xb839('0x58'),_0xb839('0x59'),_0xb839('0x5a'),_0xb839('0x5b')]})[_0xb839('0x24')](handleEntityNotFound(_0xf28a4b,null))[_0xb839('0x24')](function(_0x37b35d){if(_0x37b35d){_0xed7acd=_0x37b35d['remoteUri'];var _0x1fc9d6=_0xed7acd[_0xb839('0x5c')](-0x1);if(_0x1fc9d6==='/'){_0xed7acd=_0xed7acd[_0xb839('0x5d')](0x0,_0xed7acd[_0xb839('0x5e')](_0x1fc9d6));}_0x586c20=new jsforce[(_0xb839('0x5f'))]({'oauth2':{'loginUrl':_0xed7acd,'clientId':_0x37b35d[_0xb839('0x60')],'clientSecret':_0x37b35d[_0xb839('0x58')]}});return _0x586c20[_0xb839('0x61')](_0x37b35d[_0xb839('0x59')],_0x37b35d[_0xb839('0x5a')][_0xb839('0x62')](_0x37b35d[_0xb839('0x5b')]));}})[_0xb839('0x24')](function(_0x3ab3b0){if(_0x3ab3b0){if(!_[_0xb839('0x63')](_0x347c51[_0xb839('0x2c')][_0xb839('0x64')])){_0x5b0f23=_0x347c51[_0xb839('0x2c')][_0xb839('0x64')];}return _0x586c20[_0xb839('0x65')](_0x5b0f23)[_0xb839('0x66')]();}})[_0xb839('0x24')](function(_0x352b7a){var _0x52b857=[_0xb839('0x67'),_0xb839('0x68'),_0xb839('0x69'),_0xb839('0x6a'),'Subject',_0xb839('0x6b')];var _0x3630a6=[_0xb839('0x6c'),'int',_0xb839('0x6d'),_0xb839('0x6e'),_0xb839('0x6f'),_0xb839('0x70'),_0xb839('0x71')];if(_0x352b7a){_['remove'](_0x352b7a['fields'],function(_0x35759f){return _0x52b857[_0xb839('0x72')](_0x35759f[_0xb839('0x26')])||!_0x3630a6[_0xb839('0x72')](_0x35759f[_0xb839('0x29')]);});return{'count':_0x352b7a['fields'][_0xb839('0x43')],'rows':_['map'](_0x352b7a['fields'],function(_0x3ef391){return{'id':_0x3ef391[_0xb839('0x26')],'name':_0x3ef391[_0xb839('0x73')],'custom':_0x3ef391[_0xb839('0x74')],'options':_0x3ef391[_0xb839('0x75')][_0xb839('0x43')]>0x0?_[_0xb839('0x2b')](_0x3ef391[_0xb839('0x75')],function(_0x9e3308){return{'name':_0x9e3308[_0xb839('0x73')],'value':_0x9e3308[_0xb839('0x76')]};}):_0x3ef391[_0xb839('0x29')]==_0xb839('0x6e')?[{'name':_0xb839('0x77'),'value':_0xb839('0x78')},{'name':_0xb839('0x79'),'value':'false'}]:[]};})};}})['then'](respondWithResult(_0xf28a4b,null))[_0xb839('0x40')](function(_0x3d79d9){var _0x3a2770=_0x347c51[_0xb839('0x2c')][_0xb839('0x7a')]?0x1f4:_0x3d79d9[_0xb839('0x7b')]||0x1f4;logger['error'](_0xb839('0x7c'),_0xb839('0x55'),_0x3a2770,JSON['stringify'](_0x3d79d9));delete _0x3d79d9[_0xb839('0x26')];if(_0x3a2770===0x191){_0x3a2770=0x190;}_0xf28a4b[_0xb839('0x1b')](_0x3a2770)[_0xb839('0x7d')](_0x347c51['query'][_0xb839('0x7a')]?{'message':'Wrong\x20credentials','statusCode':_0x3d79d9[_0xb839('0x7b')]}:_0x3d79d9);});};
\ No newline at end of file
index 2357f41..8d89e40 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1171=['../../config/environment','./intSalesforceAccount.attributes','exports','define','SalesforceAccount','lodash','util','../../config/logger','request-promise','path','rimraf'];(function(_0x4e01a5,_0x1ec389){var _0x20a07c=function(_0x15f101){while(--_0x15f101){_0x4e01a5['push'](_0x4e01a5['shift']());}};_0x20a07c(++_0x1ec389);}(_0x1171,0x14f));var _0x1117=function(_0x5bd6da,_0x3f7ac8){_0x5bd6da=_0x5bd6da-0x0;var _0x5e6b8=_0x1171[_0x5bd6da];return _0x5e6b8;};'use strict';var _=require(_0x1117('0x0'));var util=require(_0x1117('0x1'));var logger=require(_0x1117('0x2'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x1117('0x3'));var fs=require('fs');var path=require(_0x1117('0x4'));var rimraf=require(_0x1117('0x5'));var config=require(_0x1117('0x6'));var attributes=require(_0x1117('0x7'));var integrations=require('../../components/integrations/configuration');module[_0x1117('0x8')]=function(_0x453e1a,_0x81b2f8){return _0x453e1a[_0x1117('0x9')](_0x1117('0xa'),attributes,{'tableName':'int_salesforce_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb578=['util','api','request-promise','path','rimraf','./intSalesforceAccount.attributes','../../components/integrations/configuration','exports'];(function(_0x3078b3,_0x274642){var _0x411cbc=function(_0x2ee4ca){while(--_0x2ee4ca){_0x3078b3['push'](_0x3078b3['shift']());}};_0x411cbc(++_0x274642);}(_0xb578,0x78));var _0x8b57=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xb578[_0x20a584];return _0x4b41a8;};'use strict';var _=require('lodash');var util=require(_0x8b57('0x0'));var logger=require('../../config/logger')(_0x8b57('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x8b57('0x2'));var fs=require('fs');var path=require(_0x8b57('0x3'));var rimraf=require(_0x8b57('0x4'));var config=require('../../config/environment');var attributes=require(_0x8b57('0x5'));var integrations=require(_0x8b57('0x6'));module[_0x8b57('0x7')]=function(_0x35e64d,_0x5ad9eb){return _0x35e64d['define']('SalesforceAccount',attributes,{'tableName':'int_salesforce_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1d1dab5..343c0a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3905=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','then','SalesforceAccount,\x20%s,\x20%s','request\x20sent','debug','SalesforceAccount,\x20%s,\x20%s,\x20%s','stringify','code','error','message','info','result','catch','SalesforceAccount','options','where','attributes','include','model','GetSalesforceAccount','raw','map','ShowSalesforceAccount','lodash','moment','randomstring'];(function(_0x2ba68a,_0x20b1d1){var _0x50d9b1=function(_0x31b4c2){while(--_0x31b4c2){_0x2ba68a['push'](_0x2ba68a['shift']());}};_0x50d9b1(++_0x20b1d1);}(_0x3905,0xc3));var _0x5390=function(_0x35d06e,_0x2e3503){_0x35d06e=_0x35d06e-0x0;var _0x9e9053=_0x3905[_0x35d06e];return _0x9e9053;};'use strict';var _=require(_0x5390('0x0'));var util=require('util');var moment=require(_0x5390('0x1'));var BPromise=require('bluebird');var rs=require(_0x5390('0x2'));var fs=require('fs');var Redis=require(_0x5390('0x3'));var db=require(_0x5390('0x4'))['db'];var utils=require(_0x5390('0x5'));var logger=require(_0x5390('0x6'))(_0x5390('0x7'));var config=require(_0x5390('0x8'));var jayson=require(_0x5390('0x9'));var client=jayson['client'][_0x5390('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3aef76,_0x24fd08,_0x55e3a8){return new BPromise(function(_0x1bbef5,_0xbcdb2d){return client['request'](_0x3aef76,_0x55e3a8)[_0x5390('0xb')](function(_0x54916c){logger['info'](_0x5390('0xc'),_0x24fd08,_0x5390('0xd'));logger[_0x5390('0xe')](_0x5390('0xf'),_0x24fd08,_0x5390('0xd'),JSON[_0x5390('0x10')](_0x54916c));if(_0x54916c['error']){if(_0x54916c['error'][_0x5390('0x11')]===0x1f4){logger[_0x5390('0x12')](_0x5390('0xc'),_0x24fd08,_0x54916c['error'][_0x5390('0x13')]);return _0xbcdb2d(_0x54916c[_0x5390('0x12')][_0x5390('0x13')]);}logger[_0x5390('0x12')](_0x5390('0xc'),_0x24fd08,_0x54916c[_0x5390('0x12')]['message']);return _0x1bbef5(_0x54916c['error'][_0x5390('0x13')]);}else{logger[_0x5390('0x14')](_0x5390('0xc'),_0x24fd08,_0x5390('0xd'));_0x1bbef5(_0x54916c[_0x5390('0x15')][_0x5390('0x13')]);}})[_0x5390('0x16')](function(_0xd0df6a){logger[_0x5390('0x12')](_0x5390('0xc'),_0x24fd08,_0xd0df6a);_0xbcdb2d(_0xd0df6a);});});}exports['GetSalesforceAccount']=function(_0x1354d4){var _0x562e49=this;return new Promise(function(_0x476c8b,_0x7df8c0){return db[_0x5390('0x17')]['findAll']({'raw':_0x1354d4[_0x5390('0x18')]?_0x1354d4['options']['raw']===undefined?!![]:![]:!![],'where':_0x1354d4[_0x5390('0x18')]?_0x1354d4['options'][_0x5390('0x19')]||null:null,'attributes':_0x1354d4['options']?_0x1354d4['options'][_0x5390('0x1a')]||null:null,'limit':_0x1354d4[_0x5390('0x18')]?_0x1354d4[_0x5390('0x18')]['limit']||null:null,'include':_0x1354d4[_0x5390('0x18')]?_0x1354d4[_0x5390('0x18')][_0x5390('0x1b')]?_['map'](_0x1354d4[_0x5390('0x18')][_0x5390('0x1b')],function(_0x3b8541){return{'model':db[_0x3b8541['model']],'as':_0x3b8541['as'],'attributes':_0x3b8541['attributes'],'include':_0x3b8541[_0x5390('0x1b')]?_['map'](_0x3b8541[_0x5390('0x1b')],function(_0x4869d5){return{'model':db[_0x4869d5[_0x5390('0x1c')]],'as':_0x4869d5['as'],'attributes':_0x4869d5['attributes'],'include':_0x4869d5[_0x5390('0x1b')]?_['map'](_0x4869d5['include'],function(_0x1aa55a){return{'model':db[_0x1aa55a[_0x5390('0x1c')]],'as':_0x1aa55a['as'],'attributes':_0x1aa55a[_0x5390('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x5390('0xb')](function(_0x13ca55){logger[_0x5390('0x14')](_0x5390('0x1d'),_0x1354d4);logger['debug'](_0x5390('0x1d'),_0x1354d4,JSON[_0x5390('0x10')](_0x13ca55));_0x476c8b(_0x13ca55);})[_0x5390('0x16')](function(_0x3a5124){logger[_0x5390('0x12')](_0x5390('0x1d'),_0x3a5124[_0x5390('0x13')],_0x1354d4);_0x7df8c0(_0x562e49[_0x5390('0x12')](0x1f4,_0x3a5124['message']));});});};exports['ShowSalesforceAccount']=function(_0x4b3219){var _0x364fcd=this;return new Promise(function(_0x3a244b,_0x426e98){return db[_0x5390('0x17')]['find']({'raw':_0x4b3219[_0x5390('0x18')]?_0x4b3219[_0x5390('0x18')][_0x5390('0x1e')]===undefined?!![]:![]:!![],'where':_0x4b3219[_0x5390('0x18')]?_0x4b3219[_0x5390('0x18')]['where']||null:null,'attributes':_0x4b3219[_0x5390('0x18')]?_0x4b3219[_0x5390('0x18')][_0x5390('0x1a')]||null:null,'include':_0x4b3219[_0x5390('0x18')]?_0x4b3219['options'][_0x5390('0x1b')]?_[_0x5390('0x1f')](_0x4b3219[_0x5390('0x18')][_0x5390('0x1b')],function(_0x210681){return{'model':db[_0x210681[_0x5390('0x1c')]],'as':_0x210681['as'],'attributes':_0x210681[_0x5390('0x1a')],'include':_0x210681[_0x5390('0x1b')]?_[_0x5390('0x1f')](_0x210681[_0x5390('0x1b')],function(_0x86b797){return{'model':db[_0x86b797[_0x5390('0x1c')]],'as':_0x86b797['as'],'attributes':_0x86b797[_0x5390('0x1a')],'include':_0x86b797['include']?_[_0x5390('0x1f')](_0x86b797[_0x5390('0x1b')],function(_0x36a346){return{'model':db[_0x36a346[_0x5390('0x1c')]],'as':_0x36a346['as'],'attributes':_0x36a346['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x10ba0c){logger[_0x5390('0x14')](_0x5390('0x20'),_0x4b3219);logger[_0x5390('0xe')](_0x5390('0x20'),_0x4b3219,JSON['stringify'](_0x10ba0c));_0x3a244b(_0x10ba0c);})[_0x5390('0x16')](function(_0x3b5cd6){logger[_0x5390('0x12')](_0x5390('0x20'),_0x3b5cd6[_0x5390('0x13')],_0x4b3219);_0x426e98(_0x364fcd[_0x5390('0x12')](0x1f4,_0x3b5cd6[_0x5390('0x13')]));});});};
\ No newline at end of file
+var _0x332c=['then','catch','ShowSalesforceAccount','where','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','request','info','SalesforceAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','GetSalesforceAccount','SalesforceAccount','options','raw','attributes','limit','include','model','map'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x332c,0x11b));var _0xc332=function(_0xe8a7df,_0x21915c){_0xe8a7df=_0xe8a7df-0x0;var _0x22b8ed=_0x332c[_0xe8a7df];return _0x22b8ed;};'use strict';var _=require(_0xc332('0x0'));var util=require(_0xc332('0x1'));var moment=require(_0xc332('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc332('0x3'));var db=require(_0xc332('0x4'))['db'];var utils=require(_0xc332('0x5'));var logger=require(_0xc332('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0xc332('0x7'));var client=jayson[_0xc332('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x54bc4d,_0x52ee8b,_0x48381b){return new BPromise(function(_0x41d077,_0x1e08e8){return client[_0xc332('0x9')](_0x54bc4d,_0x48381b)['then'](function(_0x1d3326){logger[_0xc332('0xa')](_0xc332('0xb'),_0x52ee8b,_0xc332('0xc'));logger[_0xc332('0xd')]('SalesforceAccount,\x20%s,\x20%s,\x20%s',_0x52ee8b,'request\x20sent',JSON[_0xc332('0xe')](_0x1d3326));if(_0x1d3326[_0xc332('0xf')]){if(_0x1d3326[_0xc332('0xf')]['code']===0x1f4){logger['error'](_0xc332('0xb'),_0x52ee8b,_0x1d3326['error']['message']);return _0x1e08e8(_0x1d3326[_0xc332('0xf')][_0xc332('0x10')]);}logger[_0xc332('0xf')](_0xc332('0xb'),_0x52ee8b,_0x1d3326['error'][_0xc332('0x10')]);return _0x41d077(_0x1d3326[_0xc332('0xf')][_0xc332('0x10')]);}else{logger[_0xc332('0xa')](_0xc332('0xb'),_0x52ee8b,_0xc332('0xc'));_0x41d077(_0x1d3326[_0xc332('0x11')][_0xc332('0x10')]);}})['catch'](function(_0x5beb4f){logger[_0xc332('0xf')](_0xc332('0xb'),_0x52ee8b,_0x5beb4f);_0x1e08e8(_0x5beb4f);});});}exports[_0xc332('0x12')]=function(_0x26e117){var _0x5d628d=this;return new Promise(function(_0x1d64f9,_0xf74d37){return db[_0xc332('0x13')]['findAll']({'raw':_0x26e117[_0xc332('0x14')]?_0x26e117[_0xc332('0x14')][_0xc332('0x15')]===undefined?!![]:![]:!![],'where':_0x26e117[_0xc332('0x14')]?_0x26e117[_0xc332('0x14')]['where']||null:null,'attributes':_0x26e117[_0xc332('0x14')]?_0x26e117['options'][_0xc332('0x16')]||null:null,'limit':_0x26e117[_0xc332('0x14')]?_0x26e117['options'][_0xc332('0x17')]||null:null,'include':_0x26e117[_0xc332('0x14')]?_0x26e117[_0xc332('0x14')][_0xc332('0x18')]?_['map'](_0x26e117[_0xc332('0x14')][_0xc332('0x18')],function(_0x447002){return{'model':db[_0x447002[_0xc332('0x19')]],'as':_0x447002['as'],'attributes':_0x447002[_0xc332('0x16')],'include':_0x447002[_0xc332('0x18')]?_[_0xc332('0x1a')](_0x447002['include'],function(_0x5b5b61){return{'model':db[_0x5b5b61['model']],'as':_0x5b5b61['as'],'attributes':_0x5b5b61[_0xc332('0x16')],'include':_0x5b5b61[_0xc332('0x18')]?_[_0xc332('0x1a')](_0x5b5b61[_0xc332('0x18')],function(_0x550102){return{'model':db[_0x550102[_0xc332('0x19')]],'as':_0x550102['as'],'attributes':_0x550102[_0xc332('0x16')]};}):[]};}):[]};}):[]:[]})[_0xc332('0x1b')](function(_0x200665){logger[_0xc332('0xa')](_0xc332('0x12'),_0x26e117);logger['debug']('GetSalesforceAccount',_0x26e117,JSON[_0xc332('0xe')](_0x200665));_0x1d64f9(_0x200665);})[_0xc332('0x1c')](function(_0x28fba4){logger[_0xc332('0xf')](_0xc332('0x12'),_0x28fba4[_0xc332('0x10')],_0x26e117);_0xf74d37(_0x5d628d[_0xc332('0xf')](0x1f4,_0x28fba4[_0xc332('0x10')]));});});};exports[_0xc332('0x1d')]=function(_0x592754){var _0x4fe3cc=this;return new Promise(function(_0x2892cb,_0x2b5434){return db[_0xc332('0x13')]['find']({'raw':_0x592754[_0xc332('0x14')]?_0x592754['options']['raw']===undefined?!![]:![]:!![],'where':_0x592754[_0xc332('0x14')]?_0x592754[_0xc332('0x14')][_0xc332('0x1e')]||null:null,'attributes':_0x592754[_0xc332('0x14')]?_0x592754['options'][_0xc332('0x16')]||null:null,'include':_0x592754[_0xc332('0x14')]?_0x592754[_0xc332('0x14')][_0xc332('0x18')]?_[_0xc332('0x1a')](_0x592754[_0xc332('0x14')][_0xc332('0x18')],function(_0x17c169){return{'model':db[_0x17c169[_0xc332('0x19')]],'as':_0x17c169['as'],'attributes':_0x17c169[_0xc332('0x16')],'include':_0x17c169[_0xc332('0x18')]?_[_0xc332('0x1a')](_0x17c169[_0xc332('0x18')],function(_0x358d5f){return{'model':db[_0x358d5f['model']],'as':_0x358d5f['as'],'attributes':_0x358d5f[_0xc332('0x16')],'include':_0x358d5f[_0xc332('0x18')]?_[_0xc332('0x1a')](_0x358d5f['include'],function(_0x2d7916){return{'model':db[_0x2d7916[_0xc332('0x19')]],'as':_0x2d7916['as'],'attributes':_0x2d7916[_0xc332('0x16')]};}):[]};}):[]};}):[]:[]})[_0xc332('0x1b')](function(_0x183099){logger[_0xc332('0xa')](_0xc332('0x1d'),_0x592754);logger['debug'](_0xc332('0x1d'),_0x592754,JSON['stringify'](_0x183099));_0x2892cb(_0x183099);})[_0xc332('0x1c')](function(_0x4f89ed){logger[_0xc332('0xf')](_0xc332('0x1d'),_0x4f89ed[_0xc332('0x10')],_0x592754);_0x2b5434(_0x4fe3cc['error'](0x1f4,_0x4f89ed[_0xc332('0x10')]));});});};
\ No newline at end of file
index 136d326..caf5c3c 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(_0x4e55b0,_0x29daf4){var _0x4589bc=function(_0x1a0d3f){while(--_0x1a0d3f){_0x4e55b0['push'](_0x4e55b0['shift']());}};_0x4589bc(++_0x29daf4);}(_0x5f2f,0x73));var _0xf5f2=function(_0x4c4d08,_0x34376d){_0x4c4d08=_0x4c4d08-0x0;var _0x1ca404=_0x5f2f[_0x4c4d08];return _0x1ca404;};'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 _0x7a54=['getSubjects','getDescriptions','post','create','put','update','delete','destroy','exports','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSalesforceConfiguration.controller','get','index','/:id','isAuthenticated','/:id/subjects'];(function(_0x31de03,_0x2247ff){var _0x440bf5=function(_0x27ff5a){while(--_0x27ff5a){_0x31de03['push'](_0x31de03['shift']());}};_0x440bf5(++_0x2247ff);}(_0x7a54,0x106));var _0x47a5=function(_0x694198,_0x379b97){_0x694198=_0x694198-0x0;var _0xd08677=_0x7a54[_0x694198];return _0xd08677;};'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('0x9')]('/:id/fields',auth['isAuthenticated'](),controller['getFields']);router[_0x47a5('0x9')](_0x47a5('0xd'),auth['isAuthenticated'](),controller[_0x47a5('0xe')]);router['get']('/:id/descriptions',auth[_0x47a5('0xc')](),controller[_0x47a5('0xf')]);router[_0x47a5('0x10')]('/',auth[_0x47a5('0xc')](),controller[_0x47a5('0x11')]);router[_0x47a5('0x12')](_0x47a5('0xb'),auth['isAuthenticated'](),controller[_0x47a5('0x13')]);router[_0x47a5('0x14')](_0x47a5('0xb'),auth[_0x47a5('0xc')](),controller[_0x47a5('0x15')]);module[_0x47a5('0x16')]=router;
\ No newline at end of file
index df04b87..1f5cbef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd6e3=['nothing','contact','lead','sequelize','STRING','ENUM','Task','contact_lead','account_contact_lead','account'];(function(_0x3160b1,_0x1af397){var _0x5242c9=function(_0xf22c93){while(--_0xf22c93){_0x3160b1['push'](_0x3160b1['shift']());}};_0x5242c9(++_0x1af397);}(_0xd6e3,0xcb));var _0x3d6e=function(_0x2e7ddc,_0x22ad4d){_0x2e7ddc=_0x2e7ddc-0x0;var _0x57dc69=_0xd6e3[_0x2e7ddc];return _0x57dc69;};'use strict';var Sequelize=require(_0x3d6e('0x0'));module['exports']={'name':{'type':Sequelize[_0x3d6e('0x1')]},'description':{'type':Sequelize[_0x3d6e('0x1')]},'ticketType':{'type':Sequelize[_0x3d6e('0x2')](_0x3d6e('0x3'),'Case'),'defaultValue':'Task'},'moduleSearch':{'type':Sequelize['ENUM'](_0x3d6e('0x4'),'contact','lead',_0x3d6e('0x5'),_0x3d6e('0x6')),'defaultValue':_0x3d6e('0x4')},'moduleCreate':{'type':Sequelize['ENUM'](_0x3d6e('0x7'),_0x3d6e('0x8'),_0x3d6e('0x9'),_0x3d6e('0x6')),'defaultValue':_0x3d6e('0x9')},'leadId':{'type':Sequelize['STRING']},'additionalSearchAccount':{'type':Sequelize[_0x3d6e('0x1')]},'additionalSearchContact':{'type':Sequelize[_0x3d6e('0x1')]},'additionalSearchLead':{'type':Sequelize[_0x3d6e('0x1')]}};
\ No newline at end of file
+var _0x7427=['Task','Case','ENUM','contact_lead','contact','lead','account_contact_lead','nothing','account','sequelize','exports','STRING'];(function(_0x12b711,_0x130b8c){var _0x43025b=function(_0x287cc2){while(--_0x287cc2){_0x12b711['push'](_0x12b711['shift']());}};_0x43025b(++_0x130b8c);}(_0x7427,0x111));var _0x7742=function(_0xcd5a3d,_0x3c5b33){_0xcd5a3d=_0xcd5a3d-0x0;var _0xd43207=_0x7427[_0xcd5a3d];return _0xd43207;};'use strict';var Sequelize=require(_0x7742('0x0'));module[_0x7742('0x1')]={'name':{'type':Sequelize[_0x7742('0x2')]},'description':{'type':Sequelize[_0x7742('0x2')]},'ticketType':{'type':Sequelize['ENUM'](_0x7742('0x3'),_0x7742('0x4')),'defaultValue':'Task'},'moduleSearch':{'type':Sequelize[_0x7742('0x5')](_0x7742('0x6'),_0x7742('0x7'),_0x7742('0x8'),_0x7742('0x9'),'account'),'defaultValue':'contact_lead'},'moduleCreate':{'type':Sequelize[_0x7742('0x5')](_0x7742('0xa'),_0x7742('0x7'),_0x7742('0x8'),_0x7742('0xb')),'defaultValue':_0x7742('0x8')},'leadId':{'type':Sequelize[_0x7742('0x2')]},'additionalSearchAccount':{'type':Sequelize[_0x7742('0x2')]},'additionalSearchContact':{'type':Sequelize['STRING']},'additionalSearchLead':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 6d647f7..16fb3ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe009=['limit','set','Content-Range','reject','save','update','destroy','then','error','stack','name','map','SalesforceConfiguration','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','nolimit','sort','where','pick','filter','VIRTUAL','merge','options','findAll','rows','show','keys','rawAttributes','includeAll','include','find','catch','create','body','params','findOne','SalesforceField','hasOwnProperty','getFields','getSubjects','getDescriptions','order','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','sendStatus','status','end','json','offset','count'];(function(_0x4f5cbe,_0x452a39){var _0x50c2d2=function(_0x352046){while(--_0x352046){_0x4f5cbe['push'](_0x4f5cbe['shift']());}};_0x50c2d2(++_0x452a39);}(_0xe009,0x122));var _0x9e00=function(_0x31e7cc,_0x2c6439){_0x31e7cc=_0x31e7cc-0x0;var _0x2403d5=_0xe009[_0x31e7cc];return _0x2403d5;};'use strict';var emlformat=require(_0x9e00('0x0'));var rimraf=require(_0x9e00('0x1'));var zipdir=require(_0x9e00('0x2'));var jsonpatch=require(_0x9e00('0x3'));var rp=require('request-promise');var moment=require(_0x9e00('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x9e00('0x5'));var util=require(_0x9e00('0x6'));var path=require(_0x9e00('0x7'));var sox=require(_0x9e00('0x8'));var csv=require(_0x9e00('0x9'));var ejs=require(_0x9e00('0xa'));var fs=require('fs');var fs_extra=require(_0x9e00('0xb'));var _=require(_0x9e00('0xc'));var squel=require(_0x9e00('0xd'));var crypto=require(_0x9e00('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x9e00('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x9e00('0x10'));var Redis=require(_0x9e00('0x11'));var authService=require(_0x9e00('0x12'));var qs=require(_0x9e00('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x9e00('0x14'));var logger=require(_0x9e00('0x15'))(_0x9e00('0x16'));var utils=require('../../config/utils');var config=require(_0x9e00('0x17'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3b81bc,_0x48d63b){_0x48d63b=_0x48d63b||0xcc;return function(_0x3485d9){if(_0x3485d9){return _0x3b81bc[_0x9e00('0x18')](_0x48d63b);}return _0x3b81bc[_0x9e00('0x19')](_0x48d63b)[_0x9e00('0x1a')]();};}function respondWithResult(_0x175e7d,_0x40b563){_0x40b563=_0x40b563||0xc8;return function(_0x580f5c){if(_0x580f5c){return _0x175e7d['status'](_0x40b563)[_0x9e00('0x1b')](_0x580f5c);}};}function respondWithFilteredResult(_0x4f3aad,_0x10df77){return function(_0x22ff8f){if(_0x22ff8f){var _0x298cb4=typeof _0x10df77[_0x9e00('0x1c')]==='undefined'&&typeof _0x10df77['limit']==='undefined';var _0x4a2ce8=_0x22ff8f[_0x9e00('0x1d')];var _0x5971eb=_0x298cb4?0x0:_0x10df77[_0x9e00('0x1c')];var _0x4402b=_0x298cb4?_0x22ff8f['count']:_0x10df77[_0x9e00('0x1c')]+_0x10df77[_0x9e00('0x1e')];var _0x11246e;if(_0x4402b>=_0x4a2ce8){_0x4402b=_0x4a2ce8;_0x11246e=0xc8;}else{_0x11246e=0xce;}_0x4f3aad[_0x9e00('0x19')](_0x11246e);return _0x4f3aad[_0x9e00('0x1f')](_0x9e00('0x20'),_0x5971eb+'-'+_0x4402b+'/'+_0x4a2ce8)[_0x9e00('0x1b')](_0x22ff8f);}return null;};}function patchUpdates(_0x306094){return function(_0x500416){try{jsonpatch['apply'](_0x500416,_0x306094,!![]);}catch(_0x181609){return BPromise[_0x9e00('0x21')](_0x181609);}return _0x500416[_0x9e00('0x22')]();};}function saveUpdates(_0x5c819f,_0x217bcd){return function(_0x35a1ef){if(_0x35a1ef){return _0x35a1ef[_0x9e00('0x23')](_0x5c819f)['then'](function(_0x45b3b3){return _0x45b3b3;});}return null;};}function removeEntity(_0x4008f9,_0x18fac5){return function(_0x781601){if(_0x781601){return _0x781601[_0x9e00('0x24')]()[_0x9e00('0x25')](function(){_0x4008f9[_0x9e00('0x19')](0xcc)[_0x9e00('0x1a')]();});}};}function handleEntityNotFound(_0x2a1113,_0x418f8a){return function(_0x2520ba){if(!_0x2520ba){_0x2a1113[_0x9e00('0x18')](0x194);}return _0x2520ba;};}function handleError(_0x232bcf,_0x4b9097){_0x4b9097=_0x4b9097||0x1f4;return function(_0x831f2b){logger[_0x9e00('0x26')](_0x831f2b[_0x9e00('0x27')]);if(_0x831f2b[_0x9e00('0x28')]){delete _0x831f2b[_0x9e00('0x28')];}_0x232bcf['status'](_0x4b9097)['send'](_0x831f2b);};}exports['index']=function(_0x418d06,_0xd88357){var _0x351b30={},_0x1806be={},_0x4fc9da={'count':0x0,'rows':[]};var _0x2205a4=_[_0x9e00('0x29')](db[_0x9e00('0x2a')]['rawAttributes'],function(_0x3a90f9){return{'name':_0x3a90f9[_0x9e00('0x2b')],'type':_0x3a90f9[_0x9e00('0x2c')][_0x9e00('0x2d')]};});_0x1806be[_0x9e00('0x2e')]=_[_0x9e00('0x29')](_0x2205a4,_0x9e00('0x28'));_0x1806be[_0x9e00('0x2f')]=_['keys'](_0x418d06['query']);_0x1806be[_0x9e00('0x30')]=_[_0x9e00('0x31')](_0x1806be[_0x9e00('0x2e')],_0x1806be[_0x9e00('0x2f')]);_0x351b30[_0x9e00('0x32')]=_[_0x9e00('0x31')](_0x1806be[_0x9e00('0x2e')],qs[_0x9e00('0x33')](_0x418d06['query'][_0x9e00('0x33')]));_0x351b30['attributes']=_0x351b30[_0x9e00('0x32')][_0x9e00('0x34')]?_0x351b30[_0x9e00('0x32')]:_0x1806be[_0x9e00('0x2e')];if(!_0x418d06[_0x9e00('0x2f')]['hasOwnProperty'](_0x9e00('0x35'))){_0x351b30['limit']=qs['limit'](_0x418d06[_0x9e00('0x2f')]['limit']);_0x351b30['offset']=qs[_0x9e00('0x1c')](_0x418d06[_0x9e00('0x2f')][_0x9e00('0x1c')]);}_0x351b30['order']=qs[_0x9e00('0x36')](_0x418d06[_0x9e00('0x2f')][_0x9e00('0x36')]);_0x351b30[_0x9e00('0x37')]=qs[_0x9e00('0x30')](_[_0x9e00('0x38')](_0x418d06['query'],_0x1806be['filters']),_0x2205a4);if(_0x418d06[_0x9e00('0x2f')][_0x9e00('0x39')]){_0x351b30[_0x9e00('0x37')]=_['merge'](_0x351b30[_0x9e00('0x37')],{'$or':_['map'](_0x2205a4,function(_0x5ee888){if(_0x5ee888['type']!==_0x9e00('0x3a')){var _0x1d5424={};_0x1d5424[_0x5ee888['name']]={'$like':'%'+_0x418d06[_0x9e00('0x2f')][_0x9e00('0x39')]+'%'};return _0x1d5424;}})});}_0x351b30=_[_0x9e00('0x3b')]({},_0x351b30,_0x418d06[_0x9e00('0x3c')]);var _0x31d1c4={'where':_0x351b30[_0x9e00('0x37')]};return db[_0x9e00('0x2a')][_0x9e00('0x1d')](_0x31d1c4)['then'](function(_0x40ea5b){_0x4fc9da['count']=_0x40ea5b;if(_0x418d06['query']['includeAll']){_0x351b30['include']=[{'all':!![]}];}return db[_0x9e00('0x2a')][_0x9e00('0x3d')](_0x351b30);})[_0x9e00('0x25')](function(_0x27ed48){_0x4fc9da[_0x9e00('0x3e')]=_0x27ed48;return _0x4fc9da;})['then'](respondWithFilteredResult(_0xd88357,_0x351b30))['catch'](handleError(_0xd88357,null));};exports[_0x9e00('0x3f')]=function(_0x25cffb,_0x30e895){var _0xfeef95={'raw':![],'where':{'id':_0x25cffb['params']['id']}},_0x1d889b={};_0x1d889b[_0x9e00('0x2e')]=_[_0x9e00('0x40')](db['SalesforceConfiguration'][_0x9e00('0x41')]);_0x1d889b[_0x9e00('0x2f')]=_[_0x9e00('0x40')](_0x25cffb[_0x9e00('0x2f')]);_0x1d889b[_0x9e00('0x30')]=_[_0x9e00('0x31')](_0x1d889b['model'],_0x1d889b['query']);_0xfeef95[_0x9e00('0x32')]=_[_0x9e00('0x31')](_0x1d889b[_0x9e00('0x2e')],qs[_0x9e00('0x33')](_0x25cffb[_0x9e00('0x2f')][_0x9e00('0x33')]));_0xfeef95[_0x9e00('0x32')]=_0xfeef95[_0x9e00('0x32')][_0x9e00('0x34')]?_0xfeef95['attributes']:_0x1d889b[_0x9e00('0x2e')];if(_0x25cffb[_0x9e00('0x2f')][_0x9e00('0x42')]){_0xfeef95[_0x9e00('0x43')]=[{'all':!![]}];}_0xfeef95=_[_0x9e00('0x3b')]({},_0xfeef95,_0x25cffb['options']);return db['SalesforceConfiguration'][_0x9e00('0x44')](_0xfeef95)[_0x9e00('0x25')](handleEntityNotFound(_0x30e895,null))[_0x9e00('0x25')](respondWithResult(_0x30e895,null))[_0x9e00('0x45')](handleError(_0x30e895,null));};exports[_0x9e00('0x46')]=function(_0x817961,_0x47c646){return db[_0x9e00('0x2a')][_0x9e00('0x46')](_0x817961[_0x9e00('0x47')],{})['then'](respondWithResult(_0x47c646,0xc9))[_0x9e00('0x45')](handleError(_0x47c646,null));};exports['update']=function(_0x41bd72,_0x12dc78){if(_0x41bd72['body']['id']){delete _0x41bd72[_0x9e00('0x47')]['id'];}return db[_0x9e00('0x2a')]['find']({'where':{'id':_0x41bd72[_0x9e00('0x48')]['id']}})['then'](handleEntityNotFound(_0x12dc78,null))[_0x9e00('0x25')](saveUpdates(_0x41bd72['body'],null))[_0x9e00('0x25')](respondWithResult(_0x12dc78,null))[_0x9e00('0x45')](handleError(_0x12dc78,null));};exports[_0x9e00('0x24')]=function(_0x35a9fe,_0x5acd59){return db['SalesforceConfiguration'][_0x9e00('0x44')]({'where':{'id':_0x35a9fe['params']['id']}})[_0x9e00('0x25')](handleEntityNotFound(_0x5acd59,null))[_0x9e00('0x25')](removeEntity(_0x5acd59,null))[_0x9e00('0x45')](handleError(_0x5acd59,null));};exports['getFields']=function(_0x526b00,_0x424e37,_0x42b0e5){var _0x502f4d={};var _0x5a5d73={};var _0x52459e;var _0x3d2e9a;return db[_0x9e00('0x2a')][_0x9e00('0x49')]({'where':{'id':_0x526b00['params']['id']}})[_0x9e00('0x25')](handleEntityNotFound(_0x424e37,null))[_0x9e00('0x25')](function(_0xa961db){if(_0xa961db){_0x52459e=_0xa961db;_0x5a5d73[_0x9e00('0x2e')]=_['keys'](db[_0x9e00('0x4a')]['rawAttributes']);_0x5a5d73['query']=_['keys'](_0x526b00[_0x9e00('0x2f')]);_0x5a5d73['filters']=_[_0x9e00('0x31')](_0x5a5d73[_0x9e00('0x2e')],_0x5a5d73[_0x9e00('0x2f')]);_0x502f4d[_0x9e00('0x32')]=_[_0x9e00('0x31')](_0x5a5d73[_0x9e00('0x2e')],qs[_0x9e00('0x33')](_0x526b00[_0x9e00('0x2f')][_0x9e00('0x33')]));_0x502f4d['attributes']=_0x502f4d[_0x9e00('0x32')][_0x9e00('0x34')]?_0x502f4d[_0x9e00('0x32')]:_0x5a5d73[_0x9e00('0x2e')];_0x502f4d['order']=qs[_0x9e00('0x36')](_0x526b00[_0x9e00('0x2f')]['sort']);_0x502f4d[_0x9e00('0x37')]=qs['filters'](_[_0x9e00('0x38')](_0x526b00[_0x9e00('0x2f')],_0x5a5d73[_0x9e00('0x30')]));if(_0x526b00[_0x9e00('0x2f')][_0x9e00('0x39')]){_0x502f4d[_0x9e00('0x37')]=_[_0x9e00('0x3b')](_0x502f4d[_0x9e00('0x37')],{'$or':_[_0x9e00('0x29')](_0x502f4d[_0x9e00('0x32')],function(_0x190820){var _0x1e3218={};_0x1e3218[_0x190820]={'$like':'%'+_0x526b00[_0x9e00('0x2f')][_0x9e00('0x39')]+'%'};return _0x1e3218;})});}_0x502f4d=_[_0x9e00('0x3b')]({},_0x502f4d,_0x526b00['options']);return _0x52459e['getFields'](_0x502f4d);}})['then'](function(_0x5f0c2e){if(_0x5f0c2e){_0x3d2e9a=_0x5f0c2e[_0x9e00('0x34')];if(!_0x526b00['query'][_0x9e00('0x4b')](_0x9e00('0x35'))){_0x502f4d[_0x9e00('0x1e')]=qs[_0x9e00('0x1e')](_0x526b00[_0x9e00('0x2f')][_0x9e00('0x1e')]);_0x502f4d[_0x9e00('0x1c')]=qs[_0x9e00('0x1c')](_0x526b00['query'][_0x9e00('0x1c')]);}return _0x52459e[_0x9e00('0x4c')](_0x502f4d);}})['then'](function(_0x53b224){if(_0x53b224){return _0x53b224?{'count':_0x3d2e9a,'rows':_0x53b224}:null;}})['then'](respondWithResult(_0x424e37,null))[_0x9e00('0x45')](handleError(_0x424e37,null));};exports[_0x9e00('0x4d')]=function(_0x4b08f3,_0x12984c,_0x1b0cf8){var _0x4c5c0a={};var _0x18a849={};var _0x1a6c8c;var _0x506452;return db[_0x9e00('0x2a')]['findOne']({'where':{'id':_0x4b08f3[_0x9e00('0x48')]['id']}})['then'](handleEntityNotFound(_0x12984c,null))[_0x9e00('0x25')](function(_0x2bdc4b){if(_0x2bdc4b){_0x1a6c8c=_0x2bdc4b;_0x18a849[_0x9e00('0x2e')]=_[_0x9e00('0x40')](db[_0x9e00('0x4a')][_0x9e00('0x41')]);_0x18a849[_0x9e00('0x2f')]=_['keys'](_0x4b08f3[_0x9e00('0x2f')]);_0x18a849['filters']=_[_0x9e00('0x31')](_0x18a849[_0x9e00('0x2e')],_0x18a849['query']);_0x4c5c0a[_0x9e00('0x32')]=_[_0x9e00('0x31')](_0x18a849['model'],qs[_0x9e00('0x33')](_0x4b08f3[_0x9e00('0x2f')][_0x9e00('0x33')]));_0x4c5c0a[_0x9e00('0x32')]=_0x4c5c0a['attributes'][_0x9e00('0x34')]?_0x4c5c0a['attributes']:_0x18a849[_0x9e00('0x2e')];_0x4c5c0a['order']=qs[_0x9e00('0x36')](_0x4b08f3['query']['sort']);_0x4c5c0a[_0x9e00('0x37')]=qs[_0x9e00('0x30')](_[_0x9e00('0x38')](_0x4b08f3[_0x9e00('0x2f')],_0x18a849[_0x9e00('0x30')]));if(_0x4b08f3['query'][_0x9e00('0x39')]){_0x4c5c0a[_0x9e00('0x37')]=_['merge'](_0x4c5c0a['where'],{'$or':_[_0x9e00('0x29')](_0x4c5c0a[_0x9e00('0x32')],function(_0x4c812e){var _0x4d6633={};_0x4d6633[_0x4c812e]={'$like':'%'+_0x4b08f3[_0x9e00('0x2f')][_0x9e00('0x39')]+'%'};return _0x4d6633;})});}_0x4c5c0a=_[_0x9e00('0x3b')]({},_0x4c5c0a,_0x4b08f3[_0x9e00('0x3c')]);return _0x1a6c8c[_0x9e00('0x4d')](_0x4c5c0a);}})[_0x9e00('0x25')](function(_0x11cb14){if(_0x11cb14){_0x506452=_0x11cb14[_0x9e00('0x34')];if(!_0x4b08f3[_0x9e00('0x2f')]['hasOwnProperty'](_0x9e00('0x35'))){_0x4c5c0a[_0x9e00('0x1e')]=qs[_0x9e00('0x1e')](_0x4b08f3[_0x9e00('0x2f')]['limit']);_0x4c5c0a[_0x9e00('0x1c')]=qs[_0x9e00('0x1c')](_0x4b08f3[_0x9e00('0x2f')][_0x9e00('0x1c')]);}return _0x1a6c8c[_0x9e00('0x4d')](_0x4c5c0a);}})['then'](function(_0x678776){if(_0x678776){return _0x678776?{'count':_0x506452,'rows':_0x678776}:null;}})[_0x9e00('0x25')](respondWithResult(_0x12984c,null))['catch'](handleError(_0x12984c,null));};exports[_0x9e00('0x4e')]=function(_0x396000,_0x4b1dd3,_0x39ee01){var _0x3a8f50={};var _0x538d22={};var _0x26b321;var _0x4f7bae;return db[_0x9e00('0x2a')][_0x9e00('0x49')]({'where':{'id':_0x396000[_0x9e00('0x48')]['id']}})['then'](handleEntityNotFound(_0x4b1dd3,null))[_0x9e00('0x25')](function(_0x2d2ba7){if(_0x2d2ba7){_0x26b321=_0x2d2ba7;_0x538d22[_0x9e00('0x2e')]=_[_0x9e00('0x40')](db[_0x9e00('0x4a')][_0x9e00('0x41')]);_0x538d22['query']=_[_0x9e00('0x40')](_0x396000[_0x9e00('0x2f')]);_0x538d22[_0x9e00('0x30')]=_[_0x9e00('0x31')](_0x538d22[_0x9e00('0x2e')],_0x538d22[_0x9e00('0x2f')]);_0x3a8f50[_0x9e00('0x32')]=_[_0x9e00('0x31')](_0x538d22['model'],qs['fields'](_0x396000[_0x9e00('0x2f')][_0x9e00('0x33')]));_0x3a8f50[_0x9e00('0x32')]=_0x3a8f50['attributes'][_0x9e00('0x34')]?_0x3a8f50[_0x9e00('0x32')]:_0x538d22['model'];_0x3a8f50[_0x9e00('0x4f')]=qs[_0x9e00('0x36')](_0x396000[_0x9e00('0x2f')]['sort']);_0x3a8f50[_0x9e00('0x37')]=qs[_0x9e00('0x30')](_[_0x9e00('0x38')](_0x396000[_0x9e00('0x2f')],_0x538d22['filters']));if(_0x396000[_0x9e00('0x2f')][_0x9e00('0x39')]){_0x3a8f50[_0x9e00('0x37')]=_['merge'](_0x3a8f50[_0x9e00('0x37')],{'$or':_['map'](_0x3a8f50['attributes'],function(_0x3e1c0f){var _0x26af74={};_0x26af74[_0x3e1c0f]={'$like':'%'+_0x396000[_0x9e00('0x2f')][_0x9e00('0x39')]+'%'};return _0x26af74;})});}_0x3a8f50=_[_0x9e00('0x3b')]({},_0x3a8f50,_0x396000[_0x9e00('0x3c')]);return _0x26b321[_0x9e00('0x4e')](_0x3a8f50);}})[_0x9e00('0x25')](function(_0x19fdee){if(_0x19fdee){_0x4f7bae=_0x19fdee[_0x9e00('0x34')];if(!_0x396000['query'][_0x9e00('0x4b')]('nolimit')){_0x3a8f50[_0x9e00('0x1e')]=qs[_0x9e00('0x1e')](_0x396000[_0x9e00('0x2f')]['limit']);_0x3a8f50[_0x9e00('0x1c')]=qs['offset'](_0x396000[_0x9e00('0x2f')][_0x9e00('0x1c')]);}return _0x26b321[_0x9e00('0x4e')](_0x3a8f50);}})[_0x9e00('0x25')](function(_0x816b26){if(_0x816b26){return _0x816b26?{'count':_0x4f7bae,'rows':_0x816b26}:null;}})[_0x9e00('0x25')](respondWithResult(_0x4b1dd3,null))[_0x9e00('0x45')](handleError(_0x4b1dd3,null));};
\ No newline at end of file
+var _0x34e8=['limit','count','offset','set','Content-Range','json','apply','reject','save','update','then','destroy','error','stack','name','map','SalesforceConfiguration','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','getFields','findOne','SalesforceField','nolimit','order','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','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'];(function(_0x1d3d1a,_0x2a3dde){var _0x4bc3ad=function(_0x534345){while(--_0x534345){_0x1d3d1a['push'](_0x1d3d1a['shift']());}};_0x4bc3ad(++_0x2a3dde);}(_0x34e8,0x12c));var _0x834e=function(_0x1c590e,_0xf11e33){_0x1c590e=_0x1c590e-0x0;var _0x57fb2a=_0x34e8[_0x1c590e];return _0x57fb2a;};'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['SalesforceConfiguration'][_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['SalesforceConfiguration'][_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,_0x4549ba){var _0x4a8b32={};var _0x1ad7fe={};var _0x8bc6c6;var _0x3e0550;return db[_0x834e('0x30')][_0x834e('0x4d')]({'where':{'id':_0x4288e4[_0x834e('0x46')]['id']}})[_0x834e('0x2a')](handleEntityNotFound(_0xb77aab,null))[_0x834e('0x2a')](function(_0x5afa07){if(_0x5afa07){_0x8bc6c6=_0x5afa07;_0x1ad7fe[_0x834e('0x35')]=_['keys'](db[_0x834e('0x4e')]['rawAttributes']);_0x1ad7fe[_0x834e('0x36')]=_['keys'](_0x4288e4['query']);_0x1ad7fe[_0x834e('0x37')]=_[_0x834e('0x38')](_0x1ad7fe['model'],_0x1ad7fe['query']);_0x4a8b32[_0x834e('0x39')]=_[_0x834e('0x38')](_0x1ad7fe[_0x834e('0x35')],qs[_0x834e('0x3a')](_0x4288e4[_0x834e('0x36')][_0x834e('0x3a')]));_0x4a8b32[_0x834e('0x39')]=_0x4a8b32[_0x834e('0x39')]['length']?_0x4a8b32[_0x834e('0x39')]:_0x1ad7fe[_0x834e('0x35')];_0x4a8b32['order']=qs[_0x834e('0x3d')](_0x4288e4['query'][_0x834e('0x3d')]);_0x4a8b32[_0x834e('0x3e')]=qs['filters'](_[_0x834e('0x3f')](_0x4288e4[_0x834e('0x36')],_0x1ad7fe[_0x834e('0x37')]));if(_0x4288e4[_0x834e('0x36')]['filter']){_0x4a8b32[_0x834e('0x3e')]=_[_0x834e('0x41')](_0x4a8b32[_0x834e('0x3e')],{'$or':_['map'](_0x4a8b32[_0x834e('0x39')],function(_0x1fcae9){var _0x3a7683={};_0x3a7683[_0x1fcae9]={'$like':'%'+_0x4288e4[_0x834e('0x36')][_0x834e('0x40')]+'%'};return _0x3a7683;})});}_0x4a8b32=_[_0x834e('0x41')]({},_0x4a8b32,_0x4288e4[_0x834e('0x42')]);return _0x8bc6c6[_0x834e('0x4c')](_0x4a8b32);}})[_0x834e('0x2a')](function(_0xfcccd8){if(_0xfcccd8){_0x3e0550=_0xfcccd8[_0x834e('0x3b')];if(!_0x4288e4[_0x834e('0x36')][_0x834e('0x3c')](_0x834e('0x4f'))){_0x4a8b32[_0x834e('0x20')]=qs[_0x834e('0x20')](_0x4288e4[_0x834e('0x36')][_0x834e('0x20')]);_0x4a8b32[_0x834e('0x22')]=qs[_0x834e('0x22')](_0x4288e4[_0x834e('0x36')][_0x834e('0x22')]);}return _0x8bc6c6['getFields'](_0x4a8b32);}})[_0x834e('0x2a')](function(_0x25d6f4){if(_0x25d6f4){return _0x25d6f4?{'count':_0x3e0550,'rows':_0x25d6f4}:null;}})[_0x834e('0x2a')](respondWithResult(_0xb77aab,null))[_0x834e('0x44')](handleError(_0xb77aab,null));};exports['getSubjects']=function(_0x30faa8,_0x5a9c70,_0x56a152){var _0x2fdb1b={};var _0x2b1ec7={};var _0x1644dd;var _0xe79465;return db[_0x834e('0x30')][_0x834e('0x4d')]({'where':{'id':_0x30faa8[_0x834e('0x46')]['id']}})[_0x834e('0x2a')](handleEntityNotFound(_0x5a9c70,null))['then'](function(_0xdef8c4){if(_0xdef8c4){_0x1644dd=_0xdef8c4;_0x2b1ec7['model']=_[_0x834e('0x47')](db[_0x834e('0x4e')]['rawAttributes']);_0x2b1ec7['query']=_[_0x834e('0x47')](_0x30faa8[_0x834e('0x36')]);_0x2b1ec7[_0x834e('0x37')]=_[_0x834e('0x38')](_0x2b1ec7[_0x834e('0x35')],_0x2b1ec7['query']);_0x2fdb1b[_0x834e('0x39')]=_[_0x834e('0x38')](_0x2b1ec7[_0x834e('0x35')],qs[_0x834e('0x3a')](_0x30faa8[_0x834e('0x36')][_0x834e('0x3a')]));_0x2fdb1b[_0x834e('0x39')]=_0x2fdb1b[_0x834e('0x39')][_0x834e('0x3b')]?_0x2fdb1b[_0x834e('0x39')]:_0x2b1ec7['model'];_0x2fdb1b[_0x834e('0x50')]=qs[_0x834e('0x3d')](_0x30faa8[_0x834e('0x36')][_0x834e('0x3d')]);_0x2fdb1b['where']=qs[_0x834e('0x37')](_['pick'](_0x30faa8['query'],_0x2b1ec7['filters']));if(_0x30faa8[_0x834e('0x36')][_0x834e('0x40')]){_0x2fdb1b['where']=_[_0x834e('0x41')](_0x2fdb1b[_0x834e('0x3e')],{'$or':_['map'](_0x2fdb1b[_0x834e('0x39')],function(_0x18ccb2){var _0x4b88e7={};_0x4b88e7[_0x18ccb2]={'$like':'%'+_0x30faa8['query'][_0x834e('0x40')]+'%'};return _0x4b88e7;})});}_0x2fdb1b=_[_0x834e('0x41')]({},_0x2fdb1b,_0x30faa8[_0x834e('0x42')]);return _0x1644dd[_0x834e('0x51')](_0x2fdb1b);}})[_0x834e('0x2a')](function(_0x493239){if(_0x493239){_0xe79465=_0x493239[_0x834e('0x3b')];if(!_0x30faa8['query'][_0x834e('0x3c')](_0x834e('0x4f'))){_0x2fdb1b[_0x834e('0x20')]=qs['limit'](_0x30faa8[_0x834e('0x36')][_0x834e('0x20')]);_0x2fdb1b['offset']=qs[_0x834e('0x22')](_0x30faa8[_0x834e('0x36')][_0x834e('0x22')]);}return _0x1644dd['getSubjects'](_0x2fdb1b);}})[_0x834e('0x2a')](function(_0x1d4e66){if(_0x1d4e66){return _0x1d4e66?{'count':_0xe79465,'rows':_0x1d4e66}:null;}})[_0x834e('0x2a')](respondWithResult(_0x5a9c70,null))[_0x834e('0x44')](handleError(_0x5a9c70,null));};exports[_0x834e('0x52')]=function(_0x29bfd7,_0x1372dd,_0x23b5d9){var _0xd49002={};var _0x1691d5={};var _0x57d898;var _0x5c3945;return db['SalesforceConfiguration'][_0x834e('0x4d')]({'where':{'id':_0x29bfd7[_0x834e('0x46')]['id']}})[_0x834e('0x2a')](handleEntityNotFound(_0x1372dd,null))[_0x834e('0x2a')](function(_0x2faa0d){if(_0x2faa0d){_0x57d898=_0x2faa0d;_0x1691d5['model']=_['keys'](db[_0x834e('0x4e')][_0x834e('0x31')]);_0x1691d5[_0x834e('0x36')]=_[_0x834e('0x47')](_0x29bfd7[_0x834e('0x36')]);_0x1691d5['filters']=_[_0x834e('0x38')](_0x1691d5[_0x834e('0x35')],_0x1691d5[_0x834e('0x36')]);_0xd49002['attributes']=_[_0x834e('0x38')](_0x1691d5[_0x834e('0x35')],qs[_0x834e('0x3a')](_0x29bfd7[_0x834e('0x36')][_0x834e('0x3a')]));_0xd49002['attributes']=_0xd49002['attributes'][_0x834e('0x3b')]?_0xd49002[_0x834e('0x39')]:_0x1691d5['model'];_0xd49002[_0x834e('0x50')]=qs['sort'](_0x29bfd7[_0x834e('0x36')][_0x834e('0x3d')]);_0xd49002[_0x834e('0x3e')]=qs['filters'](_[_0x834e('0x3f')](_0x29bfd7['query'],_0x1691d5['filters']));if(_0x29bfd7['query'][_0x834e('0x40')]){_0xd49002[_0x834e('0x3e')]=_[_0x834e('0x41')](_0xd49002[_0x834e('0x3e')],{'$or':_[_0x834e('0x2f')](_0xd49002[_0x834e('0x39')],function(_0x3aa388){var _0x179892={};_0x179892[_0x3aa388]={'$like':'%'+_0x29bfd7[_0x834e('0x36')]['filter']+'%'};return _0x179892;})});}_0xd49002=_[_0x834e('0x41')]({},_0xd49002,_0x29bfd7['options']);return _0x57d898[_0x834e('0x52')](_0xd49002);}})[_0x834e('0x2a')](function(_0x38bfa4){if(_0x38bfa4){_0x5c3945=_0x38bfa4[_0x834e('0x3b')];if(!_0x29bfd7[_0x834e('0x36')][_0x834e('0x3c')]('nolimit')){_0xd49002['limit']=qs[_0x834e('0x20')](_0x29bfd7[_0x834e('0x36')]['limit']);_0xd49002[_0x834e('0x22')]=qs[_0x834e('0x22')](_0x29bfd7[_0x834e('0x36')][_0x834e('0x22')]);}return _0x57d898[_0x834e('0x52')](_0xd49002);}})['then'](function(_0x29839d){if(_0x29839d){return _0x29839d?{'count':_0x5c3945,'rows':_0x29839d}:null;}})[_0x834e('0x2a')](respondWithResult(_0x1372dd,null))['catch'](handleError(_0x1372dd,null));};
\ No newline at end of file
index e3a2d96..2a6db49 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe856=['bluebird','request-promise','rimraf','../../config/environment','./intSalesforceConfiguration.attributes','define','SalesforceConfiguration','int_salesforce_configurations','util','../../config/logger'];(function(_0x188069,_0x3a1091){var _0x2456b1=function(_0x5bfb7a){while(--_0x5bfb7a){_0x188069['push'](_0x188069['shift']());}};_0x2456b1(++_0x3a1091);}(_0xe856,0x198));var _0x6e85=function(_0xa148b7,_0x2f3eb2){_0xa148b7=_0xa148b7-0x0;var _0x51efd3=_0xe856[_0xa148b7];return _0x51efd3;};'use strict';var _=require('lodash');var util=require(_0x6e85('0x0'));var logger=require(_0x6e85('0x1'))('api');var moment=require('moment');var BPromise=require(_0x6e85('0x2'));var rp=require(_0x6e85('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x6e85('0x4'));var config=require(_0x6e85('0x5'));var attributes=require(_0x6e85('0x6'));module['exports']=function(_0x289dda,_0xb58105){return _0x289dda[_0x6e85('0x7')](_0x6e85('0x8'),attributes,{'tableName':_0x6e85('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x26e9=['bluebird','path','rimraf','./intSalesforceConfiguration.attributes','define','int_salesforce_configurations','util','../../config/logger','moment'];(function(_0x14afb9,_0x11db46){var _0x1fde91=function(_0x34811a){while(--_0x34811a){_0x14afb9['push'](_0x14afb9['shift']());}};_0x1fde91(++_0x11db46);}(_0x26e9,0x192));var _0x926e=function(_0x1406c8,_0x40a801){_0x1406c8=_0x1406c8-0x0;var _0x3ec6f8=_0x26e9[_0x1406c8];return _0x3ec6f8;};'use strict';var _=require('lodash');var util=require(_0x926e('0x0'));var logger=require(_0x926e('0x1'))('api');var moment=require(_0x926e('0x2'));var BPromise=require(_0x926e('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x926e('0x4'));var rimraf=require(_0x926e('0x5'));var config=require('../../config/environment');var attributes=require(_0x926e('0x6'));module['exports']=function(_0x51f84f,_0x333337){return _0x51f84f[_0x926e('0x7')]('SalesforceConfiguration',attributes,{'tableName':_0x926e('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d1834dc..93a9a9d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd33c=['bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','http','request','info','SalesforceConfiguration,\x20%s,\x20%s','request\x20sent','error','code','message','catch','lodash','moment'];(function(_0x140202,_0x4245c7){var _0x3037c2=function(_0x525d19){while(--_0x525d19){_0x140202['push'](_0x140202['shift']());}};_0x3037c2(++_0x4245c7);}(_0xd33c,0x19c));var _0xcd33=function(_0x397cfb,_0xb8f317){_0x397cfb=_0x397cfb-0x0;var _0x15fed9=_0xd33c[_0x397cfb];return _0x15fed9;};'use strict';var _=require(_0xcd33('0x0'));var util=require('util');var moment=require(_0xcd33('0x1'));var BPromise=require(_0xcd33('0x2'));var rs=require(_0xcd33('0x3'));var fs=require('fs');var Redis=require(_0xcd33('0x4'));var db=require(_0xcd33('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xcd33('0x6'))('rpc');var config=require(_0xcd33('0x7'));var jayson=require(_0xcd33('0x8'));var client=jayson['client'][_0xcd33('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3e6379,_0x57a812,_0x32da47){return new BPromise(function(_0x172d2f,_0x13ff61){return client[_0xcd33('0xa')](_0x3e6379,_0x32da47)['then'](function(_0xfaa483){logger[_0xcd33('0xb')](_0xcd33('0xc'),_0x57a812,_0xcd33('0xd'));logger['debug']('SalesforceConfiguration,\x20%s,\x20%s,\x20%s',_0x57a812,_0xcd33('0xd'),JSON['stringify'](_0xfaa483));if(_0xfaa483[_0xcd33('0xe')]){if(_0xfaa483[_0xcd33('0xe')][_0xcd33('0xf')]===0x1f4){logger[_0xcd33('0xe')](_0xcd33('0xc'),_0x57a812,_0xfaa483[_0xcd33('0xe')][_0xcd33('0x10')]);return _0x13ff61(_0xfaa483[_0xcd33('0xe')][_0xcd33('0x10')]);}logger[_0xcd33('0xe')](_0xcd33('0xc'),_0x57a812,_0xfaa483[_0xcd33('0xe')]['message']);return _0x172d2f(_0xfaa483[_0xcd33('0xe')][_0xcd33('0x10')]);}else{logger[_0xcd33('0xb')]('SalesforceConfiguration,\x20%s,\x20%s',_0x57a812,'request\x20sent');_0x172d2f(_0xfaa483['result'][_0xcd33('0x10')]);}})[_0xcd33('0x11')](function(_0x2cf357){logger[_0xcd33('0xe')](_0xcd33('0xc'),_0x57a812,_0x2cf357);_0x13ff61(_0x2cf357);});});}
\ No newline at end of file
+var _0x79bc=['../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','then','info','SalesforceConfiguration,\x20%s,\x20%s','debug','SalesforceConfiguration,\x20%s,\x20%s,\x20%s','stringify','code','error','message','request\x20sent','result','catch','lodash','util','moment','bluebird','randomstring'];(function(_0x5d486e,_0x1a8500){var _0x2945c6=function(_0x4f77d1){while(--_0x4f77d1){_0x5d486e['push'](_0x5d486e['shift']());}};_0x2945c6(++_0x1a8500);}(_0x79bc,0xd3));var _0xc79b=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0x79bc[_0x40a045];return _0x1a687c;};'use strict';var _=require(_0xc79b('0x0'));var util=require(_0xc79b('0x1'));var moment=require(_0xc79b('0x2'));var BPromise=require(_0xc79b('0x3'));var rs=require(_0xc79b('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc79b('0x5'))['db'];var utils=require(_0xc79b('0x6'));var logger=require(_0xc79b('0x7'))(_0xc79b('0x8'));var config=require('../../config/environment');var jayson=require(_0xc79b('0x9'));var client=jayson[_0xc79b('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2800a2,_0xd1bea,_0x352679){return new BPromise(function(_0x25ba3e,_0x4a0023){return client[_0xc79b('0xb')](_0x2800a2,_0x352679)[_0xc79b('0xc')](function(_0x54367d){logger[_0xc79b('0xd')](_0xc79b('0xe'),_0xd1bea,'request\x20sent');logger[_0xc79b('0xf')](_0xc79b('0x10'),_0xd1bea,'request\x20sent',JSON[_0xc79b('0x11')](_0x54367d));if(_0x54367d['error']){if(_0x54367d['error'][_0xc79b('0x12')]===0x1f4){logger[_0xc79b('0x13')](_0xc79b('0xe'),_0xd1bea,_0x54367d[_0xc79b('0x13')]['message']);return _0x4a0023(_0x54367d[_0xc79b('0x13')]['message']);}logger[_0xc79b('0x13')](_0xc79b('0xe'),_0xd1bea,_0x54367d['error'][_0xc79b('0x14')]);return _0x25ba3e(_0x54367d[_0xc79b('0x13')][_0xc79b('0x14')]);}else{logger[_0xc79b('0xd')](_0xc79b('0xe'),_0xd1bea,_0xc79b('0x15'));_0x25ba3e(_0x54367d[_0xc79b('0x16')][_0xc79b('0x14')]);}})[_0xc79b('0x17')](function(_0x3dac56){logger[_0xc79b('0x13')](_0xc79b('0xe'),_0xd1bea,_0x3dac56);_0x4a0023(_0x3dac56);});});}
\ No newline at end of file
index 213f5f2..cb82721 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c63=['../../config/environment','get','index','/:id','isAuthenticated','post','delete','destroy','exports','multer','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x4c63,0x189));var _0x34c6=function(_0x6b715e,_0x43a807){_0x6b715e=_0x6b715e-0x0;var _0x118409=_0x4c63[_0x6b715e];return _0x118409;};'use strict';var multer=require(_0x34c6('0x0'));var util=require('util');var path=require(_0x34c6('0x1'));var timeout=require(_0x34c6('0x2'));var express=require(_0x34c6('0x3'));var router=express[_0x34c6('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x34c6('0x5'));var interaction=require(_0x34c6('0x6'));var config=require(_0x34c6('0x7'));var controller=require('./intSalesforceField.controller');router[_0x34c6('0x8')]('/',auth['isAuthenticated'](),controller[_0x34c6('0x9')]);router['get'](_0x34c6('0xa'),auth[_0x34c6('0xb')](),controller['show']);router[_0x34c6('0xc')]('/',auth[_0x34c6('0xb')](),controller['create']);router['put'](_0x34c6('0xa'),auth[_0x34c6('0xb')](),controller['update']);router[_0x34c6('0xd')]('/:id',auth[_0x34c6('0xb')](),controller[_0x34c6('0xe')]);module[_0x34c6('0xf')]=router;
\ No newline at end of file
+var _0xcea7=['express','fs-extra','../../components/interaction/service','./intSalesforceField.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','exports','util','connect-timeout'];(function(_0x245afe,_0x319cde){var _0x4eefde=function(_0x15a1fa){while(--_0x15a1fa){_0x245afe['push'](_0x245afe['shift']());}};_0x4eefde(++_0x319cde);}(_0xcea7,0x16e));var _0x7cea=function(_0x1ec08d,_0x5893ad){_0x1ec08d=_0x1ec08d-0x0;var _0x3c6c1d=_0xcea7[_0x1ec08d];return _0x3c6c1d;};'use strict';var multer=require('multer');var util=require(_0x7cea('0x0'));var path=require('path');var timeout=require(_0x7cea('0x1'));var express=require(_0x7cea('0x2'));var router=express['Router']();var fs_extra=require(_0x7cea('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x7cea('0x4'));var config=require('../../config/environment');var controller=require(_0x7cea('0x5'));router[_0x7cea('0x6')]('/',auth[_0x7cea('0x7')](),controller[_0x7cea('0x8')]);router[_0x7cea('0x6')](_0x7cea('0x9'),auth[_0x7cea('0x7')](),controller[_0x7cea('0xa')]);router[_0x7cea('0xb')]('/',auth[_0x7cea('0x7')](),controller[_0x7cea('0xc')]);router[_0x7cea('0xd')](_0x7cea('0x9'),auth[_0x7cea('0x7')](),controller[_0x7cea('0xe')]);router['delete']('/:id',auth[_0x7cea('0x7')](),controller['destroy']);module[_0x7cea('0xf')]=router;
\ No newline at end of file
index 2b3c29e..dae9ecb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc928=['string','variable','keyValue','STRING','ENUM','sequelize','exports'];(function(_0x4afac5,_0x1ab4ed){var _0x2404b3=function(_0x5c700b){while(--_0x5c700b){_0x4afac5['push'](_0x4afac5['shift']());}};_0x2404b3(++_0x1ab4ed);}(_0xc928,0x75));var _0x8c92=function(_0x18ef90,_0xa5e478){_0x18ef90=_0x18ef90-0x0;var _0x2e3732=_0xc928[_0x18ef90];return _0x2e3732;};'use strict';var Sequelize=require(_0x8c92('0x0'));module[_0x8c92('0x1')]={'type':{'type':Sequelize['ENUM'](_0x8c92('0x2'),_0x8c92('0x3'),'customVariable',_0x8c92('0x4'),'picklist'),'defaultValue':'string'},'content':{'type':Sequelize[_0x8c92('0x5')]},'key':{'type':Sequelize[_0x8c92('0x5')]},'keyType':{'type':Sequelize[_0x8c92('0x6')]('string',_0x8c92('0x3'),'customVariable')},'keyContent':{'type':Sequelize[_0x8c92('0x5')]},'idField':{'type':Sequelize['STRING']},'variableName':{'type':Sequelize[_0x8c92('0x5')]}};
\ No newline at end of file
+var _0xf87e=['string','STRING','ENUM','sequelize','variable','customVariable','keyValue','picklist'];(function(_0xc9c008,_0x2715df){var _0x5b22f0=function(_0x36df99){while(--_0x36df99){_0xc9c008['push'](_0xc9c008['shift']());}};_0x5b22f0(++_0x2715df);}(_0xf87e,0x1eb));var _0xef87=function(_0x465a0c,_0x19d4d5){_0x465a0c=_0x465a0c-0x0;var _0x1e202e=_0xf87e[_0x465a0c];return _0x1e202e;};'use strict';var Sequelize=require(_0xef87('0x0'));module['exports']={'type':{'type':Sequelize['ENUM']('string',_0xef87('0x1'),_0xef87('0x2'),_0xef87('0x3'),_0xef87('0x4')),'defaultValue':_0xef87('0x5')},'content':{'type':Sequelize[_0xef87('0x6')]},'key':{'type':Sequelize[_0xef87('0x6')]},'keyType':{'type':Sequelize[_0xef87('0x7')](_0xef87('0x5'),'variable','customVariable')},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0xef87('0x6')]},'variableName':{'type':Sequelize[_0xef87('0x6')]}};
\ No newline at end of file
index 8ae9a2f..ef45fa8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b25=['findAll','show','params','rawAttributes','includeAll','include','find','catch','create','body','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','count','offset','limit','save','update','then','destroy','stack','name','send','SalesforceField','fieldName','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','options'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x2b25,0x16d));var _0x52b2=function(_0x31ec29,_0x58915c){_0x31ec29=_0x31ec29-0x0;var _0x3275fc=_0x2b25[_0x31ec29];return _0x3275fc;};'use strict';var emlformat=require(_0x52b2('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x52b2('0x1'));var jsonpatch=require(_0x52b2('0x2'));var rp=require(_0x52b2('0x3'));var moment=require(_0x52b2('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x52b2('0x5'));var util=require('util');var path=require(_0x52b2('0x6'));var sox=require(_0x52b2('0x7'));var csv=require(_0x52b2('0x8'));var ejs=require(_0x52b2('0x9'));var fs=require('fs');var fs_extra=require(_0x52b2('0xa'));var _=require(_0x52b2('0xb'));var squel=require(_0x52b2('0xc'));var crypto=require(_0x52b2('0xd'));var jsforce=require(_0x52b2('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x52b2('0x8'));var querystring=require(_0x52b2('0xf'));var Papa=require(_0x52b2('0x10'));var Redis=require('ioredis');var authService=require(_0x52b2('0x11'));var qs=require(_0x52b2('0x12'));var as=require(_0x52b2('0x13'));var hardwareService=require(_0x52b2('0x14'));var logger=require(_0x52b2('0x15'))(_0x52b2('0x16'));var utils=require(_0x52b2('0x17'));var config=require(_0x52b2('0x18'));var licenseUtil=require(_0x52b2('0x19'));var db=require(_0x52b2('0x1a'))['db'];function respondWithStatusCode(_0x6d0d4d,_0x37fa5d){_0x37fa5d=_0x37fa5d||0xcc;return function(_0xbdc3bd){if(_0xbdc3bd){return _0x6d0d4d[_0x52b2('0x1b')](_0x37fa5d);}return _0x6d0d4d[_0x52b2('0x1c')](_0x37fa5d)[_0x52b2('0x1d')]();};}function respondWithResult(_0x46888a,_0x58f46f){_0x58f46f=_0x58f46f||0xc8;return function(_0x4c3b13){if(_0x4c3b13){return _0x46888a[_0x52b2('0x1c')](_0x58f46f)[_0x52b2('0x1e')](_0x4c3b13);}};}function respondWithFilteredResult(_0x94f03e,_0x1eebe3){return function(_0x3e2047){if(_0x3e2047){var _0x33fcba=typeof _0x1eebe3['offset']===_0x52b2('0x1f')&&typeof _0x1eebe3['limit']==='undefined';var _0x216a64=_0x3e2047[_0x52b2('0x20')];var _0x20a249=_0x33fcba?0x0:_0x1eebe3[_0x52b2('0x21')];var _0x1d3a3a=_0x33fcba?_0x3e2047[_0x52b2('0x20')]:_0x1eebe3[_0x52b2('0x21')]+_0x1eebe3[_0x52b2('0x22')];var _0x3a9986;if(_0x1d3a3a>=_0x216a64){_0x1d3a3a=_0x216a64;_0x3a9986=0xc8;}else{_0x3a9986=0xce;}_0x94f03e[_0x52b2('0x1c')](_0x3a9986);return _0x94f03e['set']('Content-Range',_0x20a249+'-'+_0x1d3a3a+'/'+_0x216a64)[_0x52b2('0x1e')](_0x3e2047);}return null;};}function patchUpdates(_0x487e3e){return function(_0x4a34e6){try{jsonpatch['apply'](_0x4a34e6,_0x487e3e,!![]);}catch(_0x140c15){return BPromise['reject'](_0x140c15);}return _0x4a34e6[_0x52b2('0x23')]();};}function saveUpdates(_0x4a53e2,_0x25c4e8){return function(_0x2ad824){if(_0x2ad824){return _0x2ad824[_0x52b2('0x24')](_0x4a53e2)[_0x52b2('0x25')](function(_0x4a6ef0){return _0x4a6ef0;});}return null;};}function removeEntity(_0x45818d,_0x2de7d8){return function(_0x57e480){if(_0x57e480){return _0x57e480[_0x52b2('0x26')]()[_0x52b2('0x25')](function(){_0x45818d[_0x52b2('0x1c')](0xcc)[_0x52b2('0x1d')]();});}};}function handleEntityNotFound(_0x408eb3,_0x51135e){return function(_0x26cbf9){if(!_0x26cbf9){_0x408eb3['sendStatus'](0x194);}return _0x26cbf9;};}function handleError(_0x26b754,_0xbcbf1c){_0xbcbf1c=_0xbcbf1c||0x1f4;return function(_0x218ad4){logger['error'](_0x218ad4[_0x52b2('0x27')]);if(_0x218ad4[_0x52b2('0x28')]){delete _0x218ad4['name'];}_0x26b754[_0x52b2('0x1c')](_0xbcbf1c)[_0x52b2('0x29')](_0x218ad4);};}exports['index']=function(_0x58b51d,_0x3ee868){var _0x43197d={},_0xf0da94={},_0x19bd10={'count':0x0,'rows':[]};var _0x18131c=_['map'](db[_0x52b2('0x2a')]['rawAttributes'],function(_0x2e6754){return{'name':_0x2e6754[_0x52b2('0x2b')],'type':_0x2e6754['type'][_0x52b2('0x2c')]};});_0xf0da94[_0x52b2('0x2d')]=_[_0x52b2('0x2e')](_0x18131c,_0x52b2('0x28'));_0xf0da94[_0x52b2('0x2f')]=_[_0x52b2('0x30')](_0x58b51d[_0x52b2('0x2f')]);_0xf0da94[_0x52b2('0x31')]=_[_0x52b2('0x32')](_0xf0da94[_0x52b2('0x2d')],_0xf0da94[_0x52b2('0x2f')]);_0x43197d[_0x52b2('0x33')]=_[_0x52b2('0x32')](_0xf0da94[_0x52b2('0x2d')],qs['fields'](_0x58b51d[_0x52b2('0x2f')][_0x52b2('0x34')]));_0x43197d['attributes']=_0x43197d['attributes'][_0x52b2('0x35')]?_0x43197d[_0x52b2('0x33')]:_0xf0da94['model'];if(!_0x58b51d['query'][_0x52b2('0x36')](_0x52b2('0x37'))){_0x43197d[_0x52b2('0x22')]=qs[_0x52b2('0x22')](_0x58b51d['query']['limit']);_0x43197d[_0x52b2('0x21')]=qs['offset'](_0x58b51d[_0x52b2('0x2f')][_0x52b2('0x21')]);}_0x43197d['order']=qs[_0x52b2('0x38')](_0x58b51d[_0x52b2('0x2f')]['sort']);_0x43197d[_0x52b2('0x39')]=qs[_0x52b2('0x31')](_['pick'](_0x58b51d[_0x52b2('0x2f')],_0xf0da94['filters']),_0x18131c);if(_0x58b51d['query'][_0x52b2('0x3a')]){_0x43197d['where']=_[_0x52b2('0x3b')](_0x43197d[_0x52b2('0x39')],{'$or':_[_0x52b2('0x2e')](_0x18131c,function(_0x7dc2f5){if(_0x7dc2f5['type']!=='VIRTUAL'){var _0x16101c={};_0x16101c[_0x7dc2f5['name']]={'$like':'%'+_0x58b51d[_0x52b2('0x2f')][_0x52b2('0x3a')]+'%'};return _0x16101c;}})});}_0x43197d=_['merge']({},_0x43197d,_0x58b51d[_0x52b2('0x3c')]);var _0x3137c5={'where':_0x43197d[_0x52b2('0x39')]};return db[_0x52b2('0x2a')][_0x52b2('0x20')](_0x3137c5)[_0x52b2('0x25')](function(_0x4857c4){_0x19bd10[_0x52b2('0x20')]=_0x4857c4;if(_0x58b51d[_0x52b2('0x2f')]['includeAll']){_0x43197d['include']=[{'all':!![]}];}return db[_0x52b2('0x2a')][_0x52b2('0x3d')](_0x43197d);})[_0x52b2('0x25')](function(_0x1a7447){_0x19bd10['rows']=_0x1a7447;return _0x19bd10;})[_0x52b2('0x25')](respondWithFilteredResult(_0x3ee868,_0x43197d))['catch'](handleError(_0x3ee868,null));};exports[_0x52b2('0x3e')]=function(_0x172267,_0x2e0901){var _0x49d3b5={'raw':!![],'where':{'id':_0x172267[_0x52b2('0x3f')]['id']}},_0x20a4c0={};_0x20a4c0[_0x52b2('0x2d')]=_[_0x52b2('0x30')](db[_0x52b2('0x2a')][_0x52b2('0x40')]);_0x20a4c0['query']=_[_0x52b2('0x30')](_0x172267[_0x52b2('0x2f')]);_0x20a4c0['filters']=_[_0x52b2('0x32')](_0x20a4c0[_0x52b2('0x2d')],_0x20a4c0['query']);_0x49d3b5[_0x52b2('0x33')]=_[_0x52b2('0x32')](_0x20a4c0['model'],qs['fields'](_0x172267[_0x52b2('0x2f')][_0x52b2('0x34')]));_0x49d3b5['attributes']=_0x49d3b5[_0x52b2('0x33')][_0x52b2('0x35')]?_0x49d3b5[_0x52b2('0x33')]:_0x20a4c0['model'];if(_0x172267[_0x52b2('0x2f')][_0x52b2('0x41')]){_0x49d3b5[_0x52b2('0x42')]=[{'all':!![]}];}_0x49d3b5=_['merge']({},_0x49d3b5,_0x172267[_0x52b2('0x3c')]);return db[_0x52b2('0x2a')][_0x52b2('0x43')](_0x49d3b5)[_0x52b2('0x25')](handleEntityNotFound(_0x2e0901,null))[_0x52b2('0x25')](respondWithResult(_0x2e0901,null))[_0x52b2('0x44')](handleError(_0x2e0901,null));};exports[_0x52b2('0x45')]=function(_0x52cd9d,_0x166127){return db[_0x52b2('0x2a')][_0x52b2('0x45')](_0x52cd9d[_0x52b2('0x46')],{})[_0x52b2('0x25')](respondWithResult(_0x166127,0xc9))[_0x52b2('0x44')](handleError(_0x166127,null));};exports['update']=function(_0x2961fa,_0x2a4bcd){if(_0x2961fa[_0x52b2('0x46')]['id']){delete _0x2961fa['body']['id'];}return db[_0x52b2('0x2a')]['find']({'where':{'id':_0x2961fa['params']['id']}})['then'](handleEntityNotFound(_0x2a4bcd,null))[_0x52b2('0x25')](saveUpdates(_0x2961fa[_0x52b2('0x46')],null))['then'](respondWithResult(_0x2a4bcd,null))['catch'](handleError(_0x2a4bcd,null));};exports[_0x52b2('0x26')]=function(_0x119087,_0x505d88){return db['SalesforceField'][_0x52b2('0x43')]({'where':{'id':_0x119087[_0x52b2('0x3f')]['id']}})['then'](handleEntityNotFound(_0x505d88,null))[_0x52b2('0x25')](removeEntity(_0x505d88,null))[_0x52b2('0x44')](handleError(_0x505d88,null));};
\ No newline at end of file
+var _0xf466=['then','destroy','end','stack','name','send','index','map','SalesforceField','rawAttributes','fieldName','type','key','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','VIRTUAL','merge','include','findAll','rows','catch','show','find','body','update','params','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','lodash','jsforce','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','offset','undefined','count','limit','set','apply','reject'];(function(_0xd1f854,_0x532346){var _0x548294=function(_0x4be823){while(--_0x4be823){_0xd1f854['push'](_0xd1f854['shift']());}};_0x548294(++_0x532346);}(_0xf466,0x6c));var _0x6f46=function(_0x102b0c,_0x33dee4){_0x102b0c=_0x102b0c-0x0;var _0x9b15ca=_0xf466[_0x102b0c];return _0x9b15ca;};'use strict';var emlformat=require(_0x6f46('0x0'));var rimraf=require(_0x6f46('0x1'));var zipdir=require(_0x6f46('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6f46('0x3'));var moment=require(_0x6f46('0x4'));var BPromise=require(_0x6f46('0x5'));var Mustache=require(_0x6f46('0x6'));var util=require('util');var path=require(_0x6f46('0x7'));var sox=require(_0x6f46('0x8'));var csv=require(_0x6f46('0x9'));var ejs=require(_0x6f46('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x6f46('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x6f46('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x6f46('0x9'));var querystring=require(_0x6f46('0xd'));var Papa=require(_0x6f46('0xe'));var Redis=require(_0x6f46('0xf'));var authService=require(_0x6f46('0x10'));var qs=require(_0x6f46('0x11'));var as=require(_0x6f46('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x6f46('0x13'))(_0x6f46('0x14'));var utils=require(_0x6f46('0x15'));var config=require(_0x6f46('0x16'));var licenseUtil=require(_0x6f46('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x569ef0,_0xb3df17){_0xb3df17=_0xb3df17||0xcc;return function(_0x508495){if(_0x508495){return _0x569ef0[_0x6f46('0x18')](_0xb3df17);}return _0x569ef0[_0x6f46('0x19')](_0xb3df17)['end']();};}function respondWithResult(_0xaece0b,_0x14c894){_0x14c894=_0x14c894||0xc8;return function(_0x320fd3){if(_0x320fd3){return _0xaece0b['status'](_0x14c894)[_0x6f46('0x1a')](_0x320fd3);}};}function respondWithFilteredResult(_0x3e2520,_0x8655){return function(_0x2bfaee){if(_0x2bfaee){var _0x21b3cf=typeof _0x8655[_0x6f46('0x1b')]==='undefined'&&typeof _0x8655['limit']===_0x6f46('0x1c');var _0x2c4eeb=_0x2bfaee[_0x6f46('0x1d')];var _0x177e0d=_0x21b3cf?0x0:_0x8655['offset'];var _0x4a3366=_0x21b3cf?_0x2bfaee[_0x6f46('0x1d')]:_0x8655['offset']+_0x8655[_0x6f46('0x1e')];var _0x4a4b01;if(_0x4a3366>=_0x2c4eeb){_0x4a3366=_0x2c4eeb;_0x4a4b01=0xc8;}else{_0x4a4b01=0xce;}_0x3e2520[_0x6f46('0x19')](_0x4a4b01);return _0x3e2520[_0x6f46('0x1f')]('Content-Range',_0x177e0d+'-'+_0x4a3366+'/'+_0x2c4eeb)[_0x6f46('0x1a')](_0x2bfaee);}return null;};}function patchUpdates(_0x5dec37){return function(_0x210ac8){try{jsonpatch[_0x6f46('0x20')](_0x210ac8,_0x5dec37,!![]);}catch(_0x569215){return BPromise[_0x6f46('0x21')](_0x569215);}return _0x210ac8['save']();};}function saveUpdates(_0x18cfb0,_0x1c2cbe){return function(_0x36d1aa){if(_0x36d1aa){return _0x36d1aa['update'](_0x18cfb0)[_0x6f46('0x22')](function(_0x17d583){return _0x17d583;});}return null;};}function removeEntity(_0x648e38,_0x120458){return function(_0x2dec6d){if(_0x2dec6d){return _0x2dec6d[_0x6f46('0x23')]()[_0x6f46('0x22')](function(){_0x648e38[_0x6f46('0x19')](0xcc)[_0x6f46('0x24')]();});}};}function handleEntityNotFound(_0x116d74,_0xbc3a5){return function(_0x9f3dd6){if(!_0x9f3dd6){_0x116d74[_0x6f46('0x18')](0x194);}return _0x9f3dd6;};}function handleError(_0x4ff1b9,_0x306e11){_0x306e11=_0x306e11||0x1f4;return function(_0xc30ccb){logger['error'](_0xc30ccb[_0x6f46('0x25')]);if(_0xc30ccb[_0x6f46('0x26')]){delete _0xc30ccb[_0x6f46('0x26')];}_0x4ff1b9[_0x6f46('0x19')](_0x306e11)[_0x6f46('0x27')](_0xc30ccb);};}exports[_0x6f46('0x28')]=function(_0x5dcf7e,_0x30ef50){var _0x32e15b={},_0x4ba4c1={},_0x6b1482={'count':0x0,'rows':[]};var _0x331b10=_[_0x6f46('0x29')](db[_0x6f46('0x2a')][_0x6f46('0x2b')],function(_0x328fe2){return{'name':_0x328fe2[_0x6f46('0x2c')],'type':_0x328fe2[_0x6f46('0x2d')][_0x6f46('0x2e')]};});_0x4ba4c1['model']=_[_0x6f46('0x29')](_0x331b10,_0x6f46('0x26'));_0x4ba4c1[_0x6f46('0x2f')]=_['keys'](_0x5dcf7e[_0x6f46('0x2f')]);_0x4ba4c1[_0x6f46('0x30')]=_[_0x6f46('0x31')](_0x4ba4c1[_0x6f46('0x32')],_0x4ba4c1[_0x6f46('0x2f')]);_0x32e15b[_0x6f46('0x33')]=_[_0x6f46('0x31')](_0x4ba4c1['model'],qs[_0x6f46('0x34')](_0x5dcf7e['query'][_0x6f46('0x34')]));_0x32e15b[_0x6f46('0x33')]=_0x32e15b[_0x6f46('0x33')][_0x6f46('0x35')]?_0x32e15b[_0x6f46('0x33')]:_0x4ba4c1[_0x6f46('0x32')];if(!_0x5dcf7e[_0x6f46('0x2f')][_0x6f46('0x36')]('nolimit')){_0x32e15b[_0x6f46('0x1e')]=qs[_0x6f46('0x1e')](_0x5dcf7e[_0x6f46('0x2f')][_0x6f46('0x1e')]);_0x32e15b[_0x6f46('0x1b')]=qs['offset'](_0x5dcf7e[_0x6f46('0x2f')][_0x6f46('0x1b')]);}_0x32e15b[_0x6f46('0x37')]=qs['sort'](_0x5dcf7e[_0x6f46('0x2f')][_0x6f46('0x38')]);_0x32e15b[_0x6f46('0x39')]=qs['filters'](_[_0x6f46('0x3a')](_0x5dcf7e['query'],_0x4ba4c1[_0x6f46('0x30')]),_0x331b10);if(_0x5dcf7e['query'][_0x6f46('0x3b')]){_0x32e15b['where']=_['merge'](_0x32e15b['where'],{'$or':_[_0x6f46('0x29')](_0x331b10,function(_0x4a1677){if(_0x4a1677[_0x6f46('0x2d')]!==_0x6f46('0x3c')){var _0x96f279={};_0x96f279[_0x4a1677['name']]={'$like':'%'+_0x5dcf7e[_0x6f46('0x2f')][_0x6f46('0x3b')]+'%'};return _0x96f279;}})});}_0x32e15b=_[_0x6f46('0x3d')]({},_0x32e15b,_0x5dcf7e['options']);var _0x2dbb05={'where':_0x32e15b[_0x6f46('0x39')]};return db[_0x6f46('0x2a')][_0x6f46('0x1d')](_0x2dbb05)['then'](function(_0x30b26d){_0x6b1482[_0x6f46('0x1d')]=_0x30b26d;if(_0x5dcf7e['query']['includeAll']){_0x32e15b[_0x6f46('0x3e')]=[{'all':!![]}];}return db[_0x6f46('0x2a')][_0x6f46('0x3f')](_0x32e15b);})[_0x6f46('0x22')](function(_0x475d3a){_0x6b1482[_0x6f46('0x40')]=_0x475d3a;return _0x6b1482;})[_0x6f46('0x22')](respondWithFilteredResult(_0x30ef50,_0x32e15b))[_0x6f46('0x41')](handleError(_0x30ef50,null));};exports[_0x6f46('0x42')]=function(_0x52e810,_0x21f13b){var _0x311dc7={'raw':!![],'where':{'id':_0x52e810['params']['id']}},_0x1fe016={};_0x1fe016[_0x6f46('0x32')]=_['keys'](db[_0x6f46('0x2a')][_0x6f46('0x2b')]);_0x1fe016[_0x6f46('0x2f')]=_['keys'](_0x52e810[_0x6f46('0x2f')]);_0x1fe016[_0x6f46('0x30')]=_[_0x6f46('0x31')](_0x1fe016[_0x6f46('0x32')],_0x1fe016[_0x6f46('0x2f')]);_0x311dc7[_0x6f46('0x33')]=_['intersection'](_0x1fe016[_0x6f46('0x32')],qs[_0x6f46('0x34')](_0x52e810[_0x6f46('0x2f')][_0x6f46('0x34')]));_0x311dc7[_0x6f46('0x33')]=_0x311dc7['attributes'][_0x6f46('0x35')]?_0x311dc7[_0x6f46('0x33')]:_0x1fe016['model'];if(_0x52e810['query']['includeAll']){_0x311dc7['include']=[{'all':!![]}];}_0x311dc7=_[_0x6f46('0x3d')]({},_0x311dc7,_0x52e810['options']);return db[_0x6f46('0x2a')][_0x6f46('0x43')](_0x311dc7)[_0x6f46('0x22')](handleEntityNotFound(_0x21f13b,null))['then'](respondWithResult(_0x21f13b,null))[_0x6f46('0x41')](handleError(_0x21f13b,null));};exports['create']=function(_0xb7347a,_0x402eda){return db[_0x6f46('0x2a')]['create'](_0xb7347a[_0x6f46('0x44')],{})[_0x6f46('0x22')](respondWithResult(_0x402eda,0xc9))[_0x6f46('0x41')](handleError(_0x402eda,null));};exports[_0x6f46('0x45')]=function(_0x4bc6dc,_0x44645e){if(_0x4bc6dc[_0x6f46('0x44')]['id']){delete _0x4bc6dc[_0x6f46('0x44')]['id'];}return db[_0x6f46('0x2a')][_0x6f46('0x43')]({'where':{'id':_0x4bc6dc[_0x6f46('0x46')]['id']}})[_0x6f46('0x22')](handleEntityNotFound(_0x44645e,null))[_0x6f46('0x22')](saveUpdates(_0x4bc6dc[_0x6f46('0x44')],null))[_0x6f46('0x22')](respondWithResult(_0x44645e,null))['catch'](handleError(_0x44645e,null));};exports[_0x6f46('0x23')]=function(_0x44f7c3,_0x3c818d){return db[_0x6f46('0x2a')][_0x6f46('0x43')]({'where':{'id':_0x44f7c3[_0x6f46('0x46')]['id']}})[_0x6f46('0x22')](handleEntityNotFound(_0x3c818d,null))[_0x6f46('0x22')](removeEntity(_0x3c818d,null))[_0x6f46('0x41')](handleError(_0x3c818d,null));};
\ No newline at end of file
index 902c997..2170b7b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xffdb=['int_salesforce_fields','salesforce_unique_index','idField','FieldId','lodash','util','../../config/logger','moment','bluebird','path','rimraf','../../config/environment','define','SalesforceField'];(function(_0x599e60,_0x5b6519){var _0x468e19=function(_0xcdfd97){while(--_0xcdfd97){_0x599e60['push'](_0x599e60['shift']());}};_0x468e19(++_0x5b6519);}(_0xffdb,0x1c4));var _0xbffd=function(_0x8c43de,_0x90ff31){_0x8c43de=_0x8c43de-0x0;var _0xa6591b=_0xffdb[_0x8c43de];return _0xa6591b;};'use strict';var _=require(_0xbffd('0x0'));var util=require(_0xbffd('0x1'));var logger=require(_0xbffd('0x2'))('api');var moment=require(_0xbffd('0x3'));var BPromise=require(_0xbffd('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xbffd('0x5'));var rimraf=require(_0xbffd('0x6'));var config=require(_0xbffd('0x7'));var attributes=require('./intSalesforceField.attributes');module['exports']=function(_0x2e4835,_0x3852a0){return _0x2e4835[_0xbffd('0x8')](_0xbffd('0x9'),attributes,{'tableName':_0xbffd('0xa'),'paranoid':![],'indexes':[{'name':_0xbffd('0xb'),'fields':[_0xbffd('0xc'),_0xbffd('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x1030=['FieldId','lodash','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./intSalesforceField.attributes','exports','define','SalesforceField','salesforce_unique_index','idField'];(function(_0x5e2f7a,_0x50ae85){var _0x38ab65=function(_0x3e6edf){while(--_0x3e6edf){_0x5e2f7a['push'](_0x5e2f7a['shift']());}};_0x38ab65(++_0x50ae85);}(_0x1030,0x1a5));var _0x0103=function(_0x1ce7bf,_0x4c2ac2){_0x1ce7bf=_0x1ce7bf-0x0;var _0x3bcce0=_0x1030[_0x1ce7bf];return _0x3bcce0;};'use strict';var _=require(_0x0103('0x0'));var util=require('util');var logger=require(_0x0103('0x1'))(_0x0103('0x2'));var moment=require(_0x0103('0x3'));var BPromise=require(_0x0103('0x4'));var rp=require(_0x0103('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0103('0x6'));var config=require(_0x0103('0x7'));var attributes=require(_0x0103('0x8'));module[_0x0103('0x9')]=function(_0x2a4cde,_0x38a71b){return _0x2a4cde[_0x0103('0xa')](_0x0103('0xb'),attributes,{'tableName':'int_salesforce_fields','paranoid':![],'indexes':[{'name':_0x0103('0xc'),'fields':[_0x0103('0xd'),_0x0103('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index a8bbdf7..bb4b88f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe810=['request','then','info','request\x20sent','SalesforceField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','SalesforceField,\x20%s,\x20%s','result','catch','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','client'];(function(_0x501d0f,_0x4adf25){var _0x50cea4=function(_0x19b0fc){while(--_0x19b0fc){_0x501d0f['push'](_0x501d0f['shift']());}};_0x50cea4(++_0x4adf25);}(_0xe810,0x19b));var _0x0e81=function(_0x4565f4,_0x2a46c5){_0x4565f4=_0x4565f4-0x0;var _0x58a1c7=_0xe810[_0x4565f4];return _0x58a1c7;};'use strict';var _=require('lodash');var util=require(_0x0e81('0x0'));var moment=require(_0x0e81('0x1'));var BPromise=require(_0x0e81('0x2'));var rs=require(_0x0e81('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x0e81('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x0e81('0x5'))(_0x0e81('0x6'));var config=require(_0x0e81('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x0e81('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4fa0cf,_0x40ce19,_0x2341b1){return new BPromise(function(_0xd1f473,_0x345e1a){return client[_0x0e81('0x9')](_0x4fa0cf,_0x2341b1)[_0x0e81('0xa')](function(_0x30669e){logger[_0x0e81('0xb')]('SalesforceField,\x20%s,\x20%s',_0x40ce19,_0x0e81('0xc'));logger['debug'](_0x0e81('0xd'),_0x40ce19,_0x0e81('0xc'),JSON[_0x0e81('0xe')](_0x30669e));if(_0x30669e[_0x0e81('0xf')]){if(_0x30669e[_0x0e81('0xf')][_0x0e81('0x10')]===0x1f4){logger[_0x0e81('0xf')]('SalesforceField,\x20%s,\x20%s',_0x40ce19,_0x30669e['error']['message']);return _0x345e1a(_0x30669e[_0x0e81('0xf')][_0x0e81('0x11')]);}logger[_0x0e81('0xf')](_0x0e81('0x12'),_0x40ce19,_0x30669e['error'][_0x0e81('0x11')]);return _0xd1f473(_0x30669e['error'][_0x0e81('0x11')]);}else{logger[_0x0e81('0xb')](_0x0e81('0x12'),_0x40ce19,_0x0e81('0xc'));_0xd1f473(_0x30669e[_0x0e81('0x13')][_0x0e81('0x11')]);}})[_0x0e81('0x14')](function(_0x42efc2){logger[_0x0e81('0xf')](_0x0e81('0x12'),_0x40ce19,_0x42efc2);_0x345e1a(_0x42efc2);});});}
\ No newline at end of file
+var _0xe167=['message','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','then','info','SalesforceField,\x20%s,\x20%s','request\x20sent','debug','SalesforceField,\x20%s,\x20%s,\x20%s','error','code'];(function(_0x1084a5,_0x720b3c){var _0x29ad59=function(_0x215f3b){while(--_0x215f3b){_0x1084a5['push'](_0x1084a5['shift']());}};_0x29ad59(++_0x720b3c);}(_0xe167,0x12d));var _0x7e16=function(_0x384322,_0x436b7a){_0x384322=_0x384322-0x0;var _0x436a6d=_0xe167[_0x384322];return _0x436a6d;};'use strict';var _=require(_0x7e16('0x0'));var util=require('util');var moment=require(_0x7e16('0x1'));var BPromise=require(_0x7e16('0x2'));var rs=require(_0x7e16('0x3'));var fs=require('fs');var Redis=require(_0x7e16('0x4'));var db=require(_0x7e16('0x5'))['db'];var utils=require(_0x7e16('0x6'));var logger=require('../../config/logger')(_0x7e16('0x7'));var config=require(_0x7e16('0x8'));var jayson=require(_0x7e16('0x9'));var client=jayson[_0x7e16('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3155a8,_0x4a8d57,_0x12a981){return new BPromise(function(_0x464003,_0x2f8cdd){return client['request'](_0x3155a8,_0x12a981)[_0x7e16('0xb')](function(_0x448fa6){logger[_0x7e16('0xc')](_0x7e16('0xd'),_0x4a8d57,_0x7e16('0xe'));logger[_0x7e16('0xf')](_0x7e16('0x10'),_0x4a8d57,_0x7e16('0xe'),JSON['stringify'](_0x448fa6));if(_0x448fa6['error']){if(_0x448fa6[_0x7e16('0x11')][_0x7e16('0x12')]===0x1f4){logger[_0x7e16('0x11')](_0x7e16('0xd'),_0x4a8d57,_0x448fa6[_0x7e16('0x11')]['message']);return _0x2f8cdd(_0x448fa6[_0x7e16('0x11')][_0x7e16('0x13')]);}logger[_0x7e16('0x11')]('SalesforceField,\x20%s,\x20%s',_0x4a8d57,_0x448fa6[_0x7e16('0x11')][_0x7e16('0x13')]);return _0x464003(_0x448fa6[_0x7e16('0x11')][_0x7e16('0x13')]);}else{logger['info'](_0x7e16('0xd'),_0x4a8d57,'request\x20sent');_0x464003(_0x448fa6['result'][_0x7e16('0x13')]);}})['catch'](function(_0x3f5eca){logger['error'](_0x7e16('0xd'),_0x4a8d57,_0x3f5eca);_0x2f8cdd(_0x3f5eca);});});}
\ No newline at end of file
index f86fcff..e03eef3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c87=['fs-extra','../../components/auth/service','../../components/interaction/service','./intServicenowAccount.controller','get','index','/:id','isAuthenticated','show','/:id/configurations','getConfigurations','/:id/fields','getFields','post','addConfiguration','put','update','destroy','exports','multer','util','path','connect-timeout','express','Router'];(function(_0x2d2c16,_0x4e88b6){var _0x53f2fb=function(_0x6b6dac){while(--_0x6b6dac){_0x2d2c16['push'](_0x2d2c16['shift']());}};_0x53f2fb(++_0x4e88b6);}(_0x0c87,0x1d5));var _0x70c8=function(_0x190364,_0x223405){_0x190364=_0x190364-0x0;var _0x1a6974=_0x0c87[_0x190364];return _0x1a6974;};'use strict';var multer=require(_0x70c8('0x0'));var util=require(_0x70c8('0x1'));var path=require(_0x70c8('0x2'));var timeout=require(_0x70c8('0x3'));var express=require(_0x70c8('0x4'));var router=express[_0x70c8('0x5')]();var fs_extra=require(_0x70c8('0x6'));var auth=require(_0x70c8('0x7'));var interaction=require(_0x70c8('0x8'));var config=require('../../config/environment');var controller=require(_0x70c8('0x9'));router[_0x70c8('0xa')]('/',auth['isAuthenticated'](),controller[_0x70c8('0xb')]);router[_0x70c8('0xa')](_0x70c8('0xc'),auth[_0x70c8('0xd')](),controller[_0x70c8('0xe')]);router['get'](_0x70c8('0xf'),auth[_0x70c8('0xd')](),controller[_0x70c8('0x10')]);router[_0x70c8('0xa')](_0x70c8('0x11'),auth[_0x70c8('0xd')](),controller[_0x70c8('0x12')]);router[_0x70c8('0x13')]('/',auth['isAuthenticated'](),controller['create']);router[_0x70c8('0x13')](_0x70c8('0xf'),auth[_0x70c8('0xd')](),controller[_0x70c8('0x14')]);router[_0x70c8('0x15')](_0x70c8('0xc'),auth[_0x70c8('0xd')](),controller[_0x70c8('0x16')]);router['delete'](_0x70c8('0xc'),auth[_0x70c8('0xd')](),controller[_0x70c8('0x17')]);module[_0x70c8('0x18')]=router;
\ No newline at end of file
+var _0x085c=['/:id/configurations','getConfigurations','/:id/fields','getFields','post','put','update','delete','destroy','exports','multer','util','path','express','fs-extra','../../components/interaction/service','../../config/environment','./intServicenowAccount.controller','get','index','/:id','isAuthenticated','show'];(function(_0x2d90a8,_0x1fad1d){var _0x5dd911=function(_0xd7c848){while(--_0xd7c848){_0x2d90a8['push'](_0x2d90a8['shift']());}};_0x5dd911(++_0x1fad1d);}(_0x085c,0xd9));var _0xc085=function(_0x347399,_0x42bbda){_0x347399=_0x347399-0x0;var _0x24e7be=_0x085c[_0x347399];return _0x24e7be;};'use strict';var multer=require(_0xc085('0x0'));var util=require(_0xc085('0x1'));var path=require(_0xc085('0x2'));var timeout=require('connect-timeout');var express=require(_0xc085('0x3'));var router=express['Router']();var fs_extra=require(_0xc085('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xc085('0x5'));var config=require(_0xc085('0x6'));var controller=require(_0xc085('0x7'));router[_0xc085('0x8')]('/',auth['isAuthenticated'](),controller[_0xc085('0x9')]);router[_0xc085('0x8')](_0xc085('0xa'),auth[_0xc085('0xb')](),controller[_0xc085('0xc')]);router[_0xc085('0x8')](_0xc085('0xd'),auth['isAuthenticated'](),controller[_0xc085('0xe')]);router['get'](_0xc085('0xf'),auth['isAuthenticated'](),controller[_0xc085('0x10')]);router[_0xc085('0x11')]('/',auth[_0xc085('0xb')](),controller['create']);router[_0xc085('0x11')](_0xc085('0xd'),auth['isAuthenticated'](),controller['addConfiguration']);router[_0xc085('0x12')]('/:id',auth[_0xc085('0xb')](),controller[_0xc085('0x13')]);router[_0xc085('0x14')]('/:id',auth[_0xc085('0xb')](),controller[_0xc085('0x15')]);module[_0xc085('0x16')]=router;
\ No newline at end of file
index ffcc64e..735848f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x90a1=['sequelize','exports','STRING','username','remoteUri'];(function(_0x34cbf9,_0x400ef4){var _0x244a99=function(_0x437dda){while(--_0x437dda){_0x34cbf9['push'](_0x34cbf9['shift']());}};_0x244a99(++_0x400ef4);}(_0x90a1,0xff));var _0x190a=function(_0x5d6456,_0x58ecc7){_0x5d6456=_0x5d6456-0x0;var _0x4d66c1=_0x90a1[_0x5d6456];return _0x4d66c1;};'use strict';var Sequelize=require(_0x190a('0x0'));module[_0x190a('0x1')]={'name':{'type':Sequelize[_0x190a('0x2')]},'description':{'type':Sequelize[_0x190a('0x2')]},'username':{'type':Sequelize['STRING'],'unique':_0x190a('0x3')},'password':{'type':Sequelize[_0x190a('0x2')]},'email':{'type':Sequelize[_0x190a('0x2')]},'remoteUri':{'type':Sequelize[_0x190a('0x2')],'unique':_0x190a('0x4')},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
+var _0x4d7e=['remoteUri','sequelize','STRING','username'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x4d7e,0x185));var _0xe4d7=function(_0x510be7,_0x2eba08){_0x510be7=_0x510be7-0x0;var _0x17af2d=_0x4d7e[_0x510be7];return _0x17af2d;};'use strict';var Sequelize=require(_0xe4d7('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xe4d7('0x1')]},'username':{'type':Sequelize[_0xe4d7('0x1')],'unique':_0xe4d7('0x2')},'password':{'type':Sequelize[_0xe4d7('0x1')]},'email':{'type':Sequelize[_0xe4d7('0x1')]},'remoteUri':{'type':Sequelize[_0xe4d7('0x1')],'unique':_0xe4d7('0x3')},'serverUrl':{'type':Sequelize[_0xe4d7('0x1')],'allowNull':![]}};
\ No newline at end of file
index 7d3d72a..54b7445 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x91ad=['name','send','index','map','rawAttributes','type','key','model','query','keys','intersection','attributes','fields','length','nolimit','order','sort','where','filters','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','ServicenowAccount','find','create','body','findOne','ServicenowConfiguration','pick','hasOwnProperty','getConfigurations','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','ServicenowField','getFields','made_sla','hold_reason','knowledge','close_code','severity','category','caused_by','watch_list','upon_reject','sys_updated_on','approval_history','number','resolved_by','sys_updated_by','user_input','sys_created_on','state','closed_at','cmdb_ci','delivery_plan','active','work_notes_list','business_service','expected_start','opened_at','group_list','work_end','reopened_time','resolved_at','caller_id','approval_set','work_notes','short_description','correlation_display','delivery_task','work_start','assignment_group','business_stc','description','close_notes','closed_by','follow_up','parent_incident','contact_type','reopened_by','incident_state','urgency','problem_id','reassignment_count','activity_due','assigned_to','comments','sla_due','approval','due_date','sys_mod_count','reopen_count','sys_tags','escalation','correlation_id','password','email','remoteUri','slice','substring','%s/api/now/doc/table/schema/','%s/api/now/table/','username','GET','incident?sysparm_display_value=all','result','assign','remove','includes','forEach','label','push','all','log','TCL:\x20_object','TCL:\x20exports.getEntityFields\x20->\x20_objectsCustom','internalType','concat','ServiceNow\x20error:\x20','test','statusCode','Wrong\x20credentials','boolean','True','false','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../components/integrations/configuration','sendStatus','end','status','json','offset','limit','undefined','count','set','reject','update','then','error','stack'];(function(_0x54a529,_0x14374b){var _0x2a9bb1=function(_0x2f21fa){while(--_0x2f21fa){_0x54a529['push'](_0x54a529['shift']());}};_0x2a9bb1(++_0x14374b);}(_0x91ad,0x8a));var _0xd91a=function(_0x461c41,_0x2e6d1c){_0x461c41=_0x461c41-0x0;var _0x509e12=_0x91ad[_0x461c41];return _0x509e12;};'use strict';var emlformat=require(_0xd91a('0x0'));var rimraf=require(_0xd91a('0x1'));var zipdir=require(_0xd91a('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xd91a('0x3'));var moment=require(_0xd91a('0x4'));var BPromise=require(_0xd91a('0x5'));var Mustache=require(_0xd91a('0x6'));var util=require(_0xd91a('0x7'));var path=require(_0xd91a('0x8'));var sox=require(_0xd91a('0x9'));var csv=require('to-csv');var ejs=require(_0xd91a('0xa'));var fs=require('fs');var fs_extra=require(_0xd91a('0xb'));var _=require(_0xd91a('0xc'));var squel=require(_0xd91a('0xd'));var crypto=require(_0xd91a('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xd91a('0xf'));var toCsv=require(_0xd91a('0x10'));var querystring=require(_0xd91a('0x11'));var Papa=require(_0xd91a('0x12'));var Redis=require('ioredis');var authService=require(_0xd91a('0x13'));var qs=require(_0xd91a('0x14'));var as=require(_0xd91a('0x15'));var hardwareService=require(_0xd91a('0x16'));var logger=require('../../config/logger')(_0xd91a('0x17'));var utils=require(_0xd91a('0x18'));var config=require(_0xd91a('0x19'));var licenseUtil=require(_0xd91a('0x1a'));var db=require('../../mysqldb')['db'];var integrations=require(_0xd91a('0x1b'));function respondWithStatusCode(_0x561d5d,_0x2f72e3){_0x2f72e3=_0x2f72e3||0xcc;return function(_0x61db7){if(_0x61db7){return _0x561d5d[_0xd91a('0x1c')](_0x2f72e3);}return _0x561d5d['status'](_0x2f72e3)[_0xd91a('0x1d')]();};}function respondWithResult(_0x735a21,_0x2e1a69){_0x2e1a69=_0x2e1a69||0xc8;return function(_0x539b8b){if(_0x539b8b){return _0x735a21[_0xd91a('0x1e')](_0x2e1a69)[_0xd91a('0x1f')](_0x539b8b);}};}function respondWithFilteredResult(_0x3cc27c,_0x187c9e){return function(_0x57f108){if(_0x57f108){var _0x57b70c=typeof _0x187c9e[_0xd91a('0x20')]==='undefined'&&typeof _0x187c9e[_0xd91a('0x21')]===_0xd91a('0x22');var _0x553380=_0x57f108['count'];var _0x4d946c=_0x57b70c?0x0:_0x187c9e[_0xd91a('0x20')];var _0x2c43d7=_0x57b70c?_0x57f108[_0xd91a('0x23')]:_0x187c9e['offset']+_0x187c9e[_0xd91a('0x21')];var _0x404977;if(_0x2c43d7>=_0x553380){_0x2c43d7=_0x553380;_0x404977=0xc8;}else{_0x404977=0xce;}_0x3cc27c['status'](_0x404977);return _0x3cc27c[_0xd91a('0x24')]('Content-Range',_0x4d946c+'-'+_0x2c43d7+'/'+_0x553380)[_0xd91a('0x1f')](_0x57f108);}return null;};}function patchUpdates(_0x370c78){return function(_0x562f79){try{jsonpatch['apply'](_0x562f79,_0x370c78,!![]);}catch(_0x41b17a){return BPromise[_0xd91a('0x25')](_0x41b17a);}return _0x562f79['save']();};}function saveUpdates(_0x8607ce,_0x421ca1){return function(_0x105482){if(_0x105482){return _0x105482[_0xd91a('0x26')](_0x8607ce)[_0xd91a('0x27')](function(_0xb3e3b0){return _0xb3e3b0;});}return null;};}function removeEntity(_0x1b39f0,_0x146453){return function(_0x5dc69e){if(_0x5dc69e){return _0x5dc69e['destroy']()[_0xd91a('0x27')](function(){_0x1b39f0[_0xd91a('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x157239,_0x10aee3){return function(_0x29e291){if(!_0x29e291){_0x157239['sendStatus'](0x194);}return _0x29e291;};}function handleError(_0x25dbf3,_0x1248fd){_0x1248fd=_0x1248fd||0x1f4;return function(_0x3794df){logger[_0xd91a('0x28')](_0x3794df[_0xd91a('0x29')]);if(_0x3794df[_0xd91a('0x2a')]){delete _0x3794df[_0xd91a('0x2a')];}_0x25dbf3[_0xd91a('0x1e')](_0x1248fd)[_0xd91a('0x2b')](_0x3794df);};}exports[_0xd91a('0x2c')]=function(_0x444866,_0x54cecc){var _0x1f241a={},_0x16a1b9={},_0x43c103={'count':0x0,'rows':[]};var _0x99f0ca=_[_0xd91a('0x2d')](db['ServicenowAccount'][_0xd91a('0x2e')],function(_0x2e0d98){return{'name':_0x2e0d98['fieldName'],'type':_0x2e0d98[_0xd91a('0x2f')][_0xd91a('0x30')]};});_0x16a1b9[_0xd91a('0x31')]=_[_0xd91a('0x2d')](_0x99f0ca,_0xd91a('0x2a'));_0x16a1b9[_0xd91a('0x32')]=_[_0xd91a('0x33')](_0x444866[_0xd91a('0x32')]);_0x16a1b9['filters']=_[_0xd91a('0x34')](_0x16a1b9[_0xd91a('0x31')],_0x16a1b9[_0xd91a('0x32')]);_0x1f241a[_0xd91a('0x35')]=_[_0xd91a('0x34')](_0x16a1b9[_0xd91a('0x31')],qs[_0xd91a('0x36')](_0x444866[_0xd91a('0x32')][_0xd91a('0x36')]));_0x1f241a['attributes']=_0x1f241a[_0xd91a('0x35')][_0xd91a('0x37')]?_0x1f241a[_0xd91a('0x35')]:_0x16a1b9[_0xd91a('0x31')];if(!_0x444866[_0xd91a('0x32')]['hasOwnProperty'](_0xd91a('0x38'))){_0x1f241a[_0xd91a('0x21')]=qs[_0xd91a('0x21')](_0x444866[_0xd91a('0x32')][_0xd91a('0x21')]);_0x1f241a[_0xd91a('0x20')]=qs[_0xd91a('0x20')](_0x444866[_0xd91a('0x32')][_0xd91a('0x20')]);}_0x1f241a[_0xd91a('0x39')]=qs[_0xd91a('0x3a')](_0x444866[_0xd91a('0x32')][_0xd91a('0x3a')]);_0x1f241a[_0xd91a('0x3b')]=qs[_0xd91a('0x3c')](_['pick'](_0x444866[_0xd91a('0x32')],_0x16a1b9[_0xd91a('0x3c')]),_0x99f0ca);if(_0x444866[_0xd91a('0x32')][_0xd91a('0x3d')]){_0x1f241a[_0xd91a('0x3b')]=_[_0xd91a('0x3e')](_0x1f241a[_0xd91a('0x3b')],{'$or':_[_0xd91a('0x2d')](_0x99f0ca,function(_0x4a8fa0){if(_0x4a8fa0[_0xd91a('0x2f')]!==_0xd91a('0x3f')){var _0x3a2c6e={};_0x3a2c6e[_0x4a8fa0[_0xd91a('0x2a')]]={'$like':'%'+_0x444866['query']['filter']+'%'};return _0x3a2c6e;}})});}_0x1f241a=_[_0xd91a('0x3e')]({},_0x1f241a,_0x444866[_0xd91a('0x40')]);var _0x1d8b8f={'where':_0x1f241a['where']};return db['ServicenowAccount'][_0xd91a('0x23')](_0x1d8b8f)[_0xd91a('0x27')](function(_0x465a76){_0x43c103['count']=_0x465a76;if(_0x444866['query'][_0xd91a('0x41')]){_0x1f241a[_0xd91a('0x42')]=[{'all':!![]}];}return db['ServicenowAccount'][_0xd91a('0x43')](_0x1f241a);})[_0xd91a('0x27')](function(_0x4158b5){_0x43c103[_0xd91a('0x44')]=_0x4158b5;return _0x43c103;})[_0xd91a('0x27')](respondWithFilteredResult(_0x54cecc,_0x1f241a))[_0xd91a('0x45')](handleError(_0x54cecc,null));};exports[_0xd91a('0x46')]=function(_0x5a853b,_0x4dd3e3){var _0x688ea6={'raw':![],'where':{'id':_0x5a853b[_0xd91a('0x47')]['id']}},_0x1e3938={};_0x1e3938['model']=_[_0xd91a('0x33')](db[_0xd91a('0x48')][_0xd91a('0x2e')]);_0x1e3938[_0xd91a('0x32')]=_[_0xd91a('0x33')](_0x5a853b[_0xd91a('0x32')]);_0x1e3938['filters']=_['intersection'](_0x1e3938[_0xd91a('0x31')],_0x1e3938[_0xd91a('0x32')]);_0x688ea6[_0xd91a('0x35')]=_['intersection'](_0x1e3938[_0xd91a('0x31')],qs[_0xd91a('0x36')](_0x5a853b[_0xd91a('0x32')]['fields']));_0x688ea6[_0xd91a('0x35')]=_0x688ea6[_0xd91a('0x35')][_0xd91a('0x37')]?_0x688ea6['attributes']:_0x1e3938[_0xd91a('0x31')];if(_0x5a853b[_0xd91a('0x32')][_0xd91a('0x41')]){_0x688ea6[_0xd91a('0x42')]=[{'all':!![]}];}_0x688ea6=_[_0xd91a('0x3e')]({},_0x688ea6,_0x5a853b['options']);return db[_0xd91a('0x48')][_0xd91a('0x49')](_0x688ea6)[_0xd91a('0x27')](handleEntityNotFound(_0x4dd3e3,null))[_0xd91a('0x27')](respondWithResult(_0x4dd3e3,null))['catch'](handleError(_0x4dd3e3,null));};exports[_0xd91a('0x4a')]=function(_0x3cf5eb,_0x3c0457){return db[_0xd91a('0x48')][_0xd91a('0x4a')](_0x3cf5eb[_0xd91a('0x4b')],{})['then'](respondWithResult(_0x3c0457,0xc9))[_0xd91a('0x45')](handleError(_0x3c0457,null));};exports[_0xd91a('0x26')]=function(_0x3feaeb,_0xb9cee9){if(_0x3feaeb[_0xd91a('0x4b')]['id']){delete _0x3feaeb[_0xd91a('0x4b')]['id'];}return db['ServicenowAccount']['find']({'where':{'id':_0x3feaeb['params']['id']}})[_0xd91a('0x27')](handleEntityNotFound(_0xb9cee9,null))[_0xd91a('0x27')](saveUpdates(_0x3feaeb[_0xd91a('0x4b')],null))['then'](respondWithResult(_0xb9cee9,null))[_0xd91a('0x45')](handleError(_0xb9cee9,null));};exports['destroy']=function(_0x113a07,_0x74fc02){return db[_0xd91a('0x48')][_0xd91a('0x49')]({'where':{'id':_0x113a07[_0xd91a('0x47')]['id']}})[_0xd91a('0x27')](handleEntityNotFound(_0x74fc02,null))['then'](removeEntity(_0x74fc02,null))[_0xd91a('0x45')](handleError(_0x74fc02,null));};exports['getConfigurations']=function(_0x548c68,_0xd72265,_0x914ce6){var _0xc90b40={};var _0x10234b={};var _0x55377a;var _0x196929;return db['ServicenowAccount'][_0xd91a('0x4c')]({'where':{'id':_0x548c68['params']['id']}})['then'](handleEntityNotFound(_0xd72265,null))[_0xd91a('0x27')](function(_0x32f2be){if(_0x32f2be){_0x55377a=_0x32f2be;_0x10234b[_0xd91a('0x31')]=_[_0xd91a('0x33')](db[_0xd91a('0x4d')][_0xd91a('0x2e')]);_0x10234b[_0xd91a('0x32')]=_[_0xd91a('0x33')](_0x548c68[_0xd91a('0x32')]);_0x10234b[_0xd91a('0x3c')]=_[_0xd91a('0x34')](_0x10234b[_0xd91a('0x31')],_0x10234b[_0xd91a('0x32')]);_0xc90b40[_0xd91a('0x35')]=_[_0xd91a('0x34')](_0x10234b[_0xd91a('0x31')],qs['fields'](_0x548c68[_0xd91a('0x32')][_0xd91a('0x36')]));_0xc90b40[_0xd91a('0x35')]=_0xc90b40['attributes'][_0xd91a('0x37')]?_0xc90b40['attributes']:_0x10234b['model'];_0xc90b40[_0xd91a('0x39')]=qs[_0xd91a('0x3a')](_0x548c68[_0xd91a('0x32')]['sort']);_0xc90b40[_0xd91a('0x3b')]=qs[_0xd91a('0x3c')](_[_0xd91a('0x4e')](_0x548c68[_0xd91a('0x32')],_0x10234b[_0xd91a('0x3c')]));if(_0x548c68[_0xd91a('0x32')]['filter']){_0xc90b40[_0xd91a('0x3b')]=_[_0xd91a('0x3e')](_0xc90b40[_0xd91a('0x3b')],{'$or':_[_0xd91a('0x2d')](_0xc90b40['attributes'],function(_0x4b6b0b){var _0x209d91={};_0x209d91[_0x4b6b0b]={'$like':'%'+_0x548c68['query'][_0xd91a('0x3d')]+'%'};return _0x209d91;})});}_0xc90b40=_['merge']({},_0xc90b40,_0x548c68[_0xd91a('0x40')]);return _0x55377a['getConfigurations'](_0xc90b40);}})[_0xd91a('0x27')](function(_0x2709af){if(_0x2709af){_0x196929=_0x2709af[_0xd91a('0x37')];if(!_0x548c68[_0xd91a('0x32')][_0xd91a('0x4f')](_0xd91a('0x38'))){_0xc90b40[_0xd91a('0x21')]=qs[_0xd91a('0x21')](_0x548c68[_0xd91a('0x32')][_0xd91a('0x21')]);_0xc90b40['offset']=qs[_0xd91a('0x20')](_0x548c68[_0xd91a('0x32')][_0xd91a('0x20')]);}return _0x55377a[_0xd91a('0x50')](_0xc90b40);}})[_0xd91a('0x27')](function(_0x1fec47){if(_0x1fec47){return _0x1fec47?{'count':_0x196929,'rows':_0x1fec47}:null;}})[_0xd91a('0x27')](respondWithResult(_0xd72265,null))[_0xd91a('0x45')](handleError(_0xd72265,null));};exports[_0xd91a('0x51')]=function(_0x379380,_0x2018e9,_0xd11bba){if(_0x379380[_0xd91a('0x4b')]['id']){delete _0x379380[_0xd91a('0x4b')]['id'];}return db['ServicenowAccount'][_0xd91a('0x4c')]({'where':{'id':_0x379380[_0xd91a('0x47')]['id']}})[_0xd91a('0x27')](handleEntityNotFound(_0x2018e9,null))['then'](function(_0x401dd1){if(_0x401dd1){_0x379380['body'][_0xd91a('0x52')]=_0x401dd1['id'];_0x379380[_0xd91a('0x4b')][_0xd91a('0x53')]=integrations[_0xd91a('0x54')](_0x379380['body'][_0xd91a('0x55')],_0x379380[_0xd91a('0x4b')][_0xd91a('0x2f')]);_0x379380[_0xd91a('0x4b')][_0xd91a('0x56')]=integrations[_0xd91a('0x57')](_0x379380['body'][_0xd91a('0x55')],_0x379380[_0xd91a('0x4b')]['type']);return db[_0xd91a('0x4d')][_0xd91a('0x4a')](_0x379380['body'],{'include':[{'model':db['ServicenowField'],'as':_0xd91a('0x53')},{'model':db[_0xd91a('0x58')],'as':'Descriptions'}]});}return null;})[_0xd91a('0x27')](respondWithResult(_0x2018e9,null))[_0xd91a('0x45')](handleError(_0x2018e9,null));};exports[_0xd91a('0x59')]=function(_0x3e1882,_0x109d5d,_0x399b7f){var _0x2e1130=[_0xd91a('0x5a'),_0xd91a('0x5b'),_0xd91a('0x5c'),'subcategory',_0xd91a('0x5d'),'notify','incident_state',_0xd91a('0x5e'),_0xd91a('0x5f')];var _0x382fa5=['parent','made_sla',_0xd91a('0x60'),_0xd91a('0x61'),_0xd91a('0x62'),_0xd91a('0x63'),'child_incidents',_0xd91a('0x5b'),_0xd91a('0x64'),_0xd91a('0x65'),_0xd91a('0x66'),_0xd91a('0x67'),'opened_by',_0xd91a('0x68'),_0xd91a('0x69'),'sys_domain',_0xd91a('0x6a'),'sys_created_by',_0xd91a('0x5c'),'order','calendar_stc',_0xd91a('0x6b'),_0xd91a('0x6c'),_0xd91a('0x6d'),'impact',_0xd91a('0x6e'),_0xd91a('0x6f'),_0xd91a('0x70'),'priority','sys_domain_path','rfc','time_worked',_0xd91a('0x71'),_0xd91a('0x72'),'business_duration',_0xd91a('0x73'),_0xd91a('0x74'),_0xd91a('0x75'),_0xd91a('0x76'),_0xd91a('0x77'),_0xd91a('0x78'),'subcategory',_0xd91a('0x79'),_0xd91a('0x7a'),_0xd91a('0x5d'),_0xd91a('0x7b'),_0xd91a('0x7c'),_0xd91a('0x7d'),_0xd91a('0x7e'),_0xd91a('0x7f'),'additional_assignee_list',_0xd91a('0x80'),'calendar_duration','notify','sys_class_name',_0xd91a('0x81'),_0xd91a('0x82'),_0xd91a('0x83'),_0xd91a('0x84'),'sys_id',_0xd91a('0x85'),_0xd91a('0x86'),_0xd91a('0x87'),_0xd91a('0x88'),_0xd91a('0x89'),'company',_0xd91a('0x8a'),_0xd91a('0x8b'),_0xd91a('0x8c'),_0xd91a('0x5e'),_0xd91a('0x8d'),_0xd91a('0x8e'),_0xd91a('0x8f'),'comments_and_work_notes',_0xd91a('0x90'),_0xd91a('0x91'),_0xd91a('0x92'),_0xd91a('0x93'),_0xd91a('0x94'),'upon_approval',_0xd91a('0x95'),'location',_0xd91a('0x5f')];var _0x43a958='';var _0x28eede='';var _0x3e2fce=[];var _0x1a5d8a='';var _0x4b0bd4='';var _0xc05f96=[];var _0x2ab16f='';var _0x2569fd='';var _0x51bc99={};var _0x2e59e5='';return db['ServicenowAccount'][_0xd91a('0x4c')]({'where':{'id':_0x3e1882['params']['id']},'attributes':['id','username',_0xd91a('0x96'),_0xd91a('0x97'),_0xd91a('0x98'),'serverUrl']})[_0xd91a('0x27')](handleEntityNotFound(_0x109d5d,null))[_0xd91a('0x27')](function(_0x5548e1){if(_0x5548e1){_0x2e59e5=_0x5548e1['remoteUri'];var _0x59e1d2=_0x2e59e5[_0xd91a('0x99')](-0x1);if(_0x59e1d2==='/'){_0x2e59e5=_0x2e59e5[_0xd91a('0x9a')](0x0,_0x2e59e5['lastIndexOf'](_0x59e1d2));}_0x2569fd=util['format'](_0xd91a('0x9b'),_0x2e59e5);_0x2ab16f=util['format'](_0xd91a('0x9c'),_0x2e59e5);_0x51bc99={'user':_0x5548e1[_0xd91a('0x9d')],'pass':_0x5548e1[_0xd91a('0x96')]};var _0x31462a={'method':_0xd91a('0x9e'),'uri':_0x2569fd+_0xd91a('0x9f'),'auth':_0x51bc99,'json':!![]};return rp(_0x31462a);}})[_0xd91a('0x27')](function(_0x43549a){if(_0x43549a['result'][_0xd91a('0x37')]>0x0){_0x43a958=_0x43549a[_0xd91a('0xa0')];}console['log']('incident\x20table\x20objects',_0x43a958);_0xc05f96=[];_0x28eede=Object[_0xd91a('0xa1')]([],_0x43a958);_[_0xd91a('0xa2')](_0x28eede,function(_0x37e1c9){return!_0x2e1130[_0xd91a('0xa3')](_0x37e1c9['name']);});_0x28eede[_0xd91a('0xa4')](function(_0x1e2bcd){var _0x2747f5=createFieldObject(_0x2ab16f,_0x51bc99,_0x1e2bcd['internalType'],_0x1e2bcd[_0xd91a('0x2a')],_0x1e2bcd[_0xd91a('0xa5')],![]);_0xc05f96[_0xd91a('0xa6')](_0x2747f5);});return Promise[_0xd91a('0xa7')](_0xc05f96);})['then'](function(_0x202139){_0x3e2fce=_0x202139;_0x1a5d8a=Object[_0xd91a('0xa1')]([],_0x43a958);console[_0xd91a('0xa8')](_0xd91a('0xa9'),_0x43a958);_[_0xd91a('0xa2')](_0x1a5d8a,function(_0x248452){return _0x382fa5[_0xd91a('0xa3')](_0x248452['name']);});console[_0xd91a('0xa8')](_0xd91a('0xaa'),_0x1a5d8a);_0xc05f96=[];_0x1a5d8a['forEach'](function(_0x5ecd32){var _0x342104=createFieldObject(_0x2ab16f,_0x51bc99,_0x5ecd32[_0xd91a('0xab')],_0x5ecd32['name'],_0x5ecd32['label'],!![]);_0xc05f96[_0xd91a('0xa6')](_0x342104);});return Promise[_0xd91a('0xa7')](_0xc05f96);})['then'](function(_0x161642){_0x4b0bd4=_0x161642;var _0xb04d13=_0x3e2fce[_0xd91a('0xac')](_0x4b0bd4);return{'count':_0xb04d13[_0xd91a('0x37')],'rows':_0xb04d13};})[_0xd91a('0x27')](respondWithResult(_0x109d5d,null))[_0xd91a('0x45')](function(_0x1a5c07){console['log'](_0xd91a('0xad')+_0x1a5c07);var _0x594b2b=_0x3e1882['query'][_0xd91a('0xae')]?0x1f4:_0x1a5c07[_0xd91a('0xaf')]||0x1f4;logger[_0xd91a('0x28')](_0x1a5c07[_0xd91a('0x29')]);delete _0x1a5c07[_0xd91a('0x2a')];if(_0x594b2b===0x191){_0x594b2b=0x190;}_0x109d5d[_0xd91a('0x1e')](_0x594b2b)[_0xd91a('0x2b')](_0x3e1882[_0xd91a('0x32')][_0xd91a('0xae')]?{'message':_0xd91a('0xb0'),'statusCode':_0x1a5c07[_0xd91a('0xaf')]}:_0x1a5c07);});};function createFieldObject(_0x4d6cf5,_0x147a60,_0x12bbc5,_0x300459,_0x3351c3,_0x54d1fe){return new Promise(function(_0x3d3753,_0x4014f6){var _0x12fbfe={'id':_0x300459,'name':_0x3351c3,'custom':_0x54d1fe};if(_0x12bbc5===_0xd91a('0xb1')){_0x12fbfe['options']=[{'name':_0xd91a('0xb2'),'value':'true'},{'name':'False','value':_0xd91a('0xb3')}];_0x3d3753(_0x12fbfe);}else{var _0x29e235={'method':_0xd91a('0x9e'),'uri':_0x4d6cf5+'sys_choice?sysparm_query=name=incident^element='+_0x300459,'auth':_0x147a60,'json':!![]};return rp(_0x29e235)[_0xd91a('0x27')](function(_0x20534f){var _0xcd4a1b=[];if(_0x20534f[_0xd91a('0xa0')]['length']>0x0){_0x20534f[_0xd91a('0xa0')]['forEach'](function(_0x2f3204){if(_0x2f3204['inactive']===_0xd91a('0xb3')){var _0x322059={'name':_0x2f3204[_0xd91a('0xa5')],'value':_0x2f3204['value']};_0xcd4a1b[_0xd91a('0xa6')](_0x322059);}});}_0x12fbfe[_0xd91a('0x40')]=_0xcd4a1b;if(_0x12fbfe['options'][_0xd91a('0x37')]>0x0){_0x3d3753(_0x12fbfe);}else{if(_0x54d1fe==![]){_0x3d3753();}else{_0x3d3753(_0x12fbfe);}}});}});}
\ No newline at end of file
+var _0xac90=['end','error','stack','name','send','index','map','ServicenowAccount','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','options','count','includeAll','include','rows','rawAttributes','catch','create','body','find','params','getConfigurations','findOne','order','addConfiguration','AccountId','getSubjects','channel','Descriptions','getDescriptions','ServicenowConfiguration','Subjects','ServicenowField','getFields','hold_reason','knowledge','subcategory','close_code','notify','severity','category','parent','made_sla','caused_by','sys_updated_on','child_incidents','approval_history','number','resolved_by','sys_updated_by','opened_by','user_input','sys_created_on','sys_created_by','calendar_stc','cmdb_ci','delivery_plan','impact','work_notes_list','business_service','priority','sys_domain_path','rfc','time_worked','expected_start','opened_at','business_duration','group_list','reopened_time','resolved_at','caller_id','approval_set','work_notes','short_description','correlation_display','delivery_task','work_start','assignment_group','business_stc','additional_assignee_list','description','calendar_duration','sys_class_name','close_notes','closed_by','follow_up','sys_id','reopened_by','incident_state','urgency','reassignment_count','activity_due','assigned_to','comments','approval','comments_and_work_notes','due_date','sys_mod_count','sys_tags','escalation','upon_approval','correlation_id','location','username','password','email','remoteUri','slice','substring','lastIndexOf','format','%s/api/now/table/','GET','incident?sysparm_display_value=all','result','assign','remove','includes','forEach','push','all','log','TCL:\x20_object','internalType','label','concat','test','statusCode','Wrong\x20credentials','True','true','False','sys_choice?sysparm_query=name=incident^element=','inactive','false','value','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','status','json','offset','undefined','limit','Content-Range','apply','reject','update','then','destroy'];(function(_0x1ad740,_0x3ff0dd){var _0x494cf1=function(_0x4fef20){while(--_0x4fef20){_0x1ad740['push'](_0x1ad740['shift']());}};_0x494cf1(++_0x3ff0dd);}(_0xac90,0x98));var _0x0ac9=function(_0x1cdd2f,_0x5d6c7a){_0x1cdd2f=_0x1cdd2f-0x0;var _0x2c8c5b=_0xac90[_0x1cdd2f];return _0x2c8c5b;};'use strict';var emlformat=require(_0x0ac9('0x0'));var rimraf=require(_0x0ac9('0x1'));var zipdir=require(_0x0ac9('0x2'));var jsonpatch=require(_0x0ac9('0x3'));var rp=require('request-promise');var moment=require(_0x0ac9('0x4'));var BPromise=require(_0x0ac9('0x5'));var Mustache=require(_0x0ac9('0x6'));var util=require(_0x0ac9('0x7'));var path=require(_0x0ac9('0x8'));var sox=require(_0x0ac9('0x9'));var csv=require(_0x0ac9('0xa'));var ejs=require(_0x0ac9('0xb'));var fs=require('fs');var fs_extra=require(_0x0ac9('0xc'));var _=require(_0x0ac9('0xd'));var squel=require('squel');var crypto=require(_0x0ac9('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x0ac9('0xf'));var toCsv=require(_0x0ac9('0xa'));var querystring=require(_0x0ac9('0x10'));var Papa=require(_0x0ac9('0x11'));var Redis=require(_0x0ac9('0x12'));var authService=require(_0x0ac9('0x13'));var qs=require(_0x0ac9('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x0ac9('0x15'));var logger=require(_0x0ac9('0x16'))(_0x0ac9('0x17'));var utils=require('../../config/utils');var config=require(_0x0ac9('0x18'));var licenseUtil=require(_0x0ac9('0x19'));var db=require('../../mysqldb')['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x373f56,_0x15f0f5){_0x15f0f5=_0x15f0f5||0xcc;return function(_0x525ef5){if(_0x525ef5){return _0x373f56[_0x0ac9('0x1a')](_0x15f0f5);}return _0x373f56[_0x0ac9('0x1b')](_0x15f0f5)['end']();};}function respondWithResult(_0x59f346,_0x129616){_0x129616=_0x129616||0xc8;return function(_0x249761){if(_0x249761){return _0x59f346[_0x0ac9('0x1b')](_0x129616)[_0x0ac9('0x1c')](_0x249761);}};}function respondWithFilteredResult(_0x1a330e,_0x5de607){return function(_0x4eef24){if(_0x4eef24){var _0x2a9657=typeof _0x5de607[_0x0ac9('0x1d')]===_0x0ac9('0x1e')&&typeof _0x5de607[_0x0ac9('0x1f')]==='undefined';var _0x4ea7d0=_0x4eef24['count'];var _0x5cffc6=_0x2a9657?0x0:_0x5de607[_0x0ac9('0x1d')];var _0x497725=_0x2a9657?_0x4eef24['count']:_0x5de607[_0x0ac9('0x1d')]+_0x5de607['limit'];var _0x8c6a61;if(_0x497725>=_0x4ea7d0){_0x497725=_0x4ea7d0;_0x8c6a61=0xc8;}else{_0x8c6a61=0xce;}_0x1a330e['status'](_0x8c6a61);return _0x1a330e['set'](_0x0ac9('0x20'),_0x5cffc6+'-'+_0x497725+'/'+_0x4ea7d0)['json'](_0x4eef24);}return null;};}function patchUpdates(_0x4bf02a){return function(_0x58b7dc){try{jsonpatch[_0x0ac9('0x21')](_0x58b7dc,_0x4bf02a,!![]);}catch(_0x4575be){return BPromise[_0x0ac9('0x22')](_0x4575be);}return _0x58b7dc['save']();};}function saveUpdates(_0x2da4fd,_0x191137){return function(_0x202d61){if(_0x202d61){return _0x202d61[_0x0ac9('0x23')](_0x2da4fd)[_0x0ac9('0x24')](function(_0x5d786c){return _0x5d786c;});}return null;};}function removeEntity(_0x2275fb,_0x4de1a9){return function(_0x7b9439){if(_0x7b9439){return _0x7b9439[_0x0ac9('0x25')]()[_0x0ac9('0x24')](function(){_0x2275fb['status'](0xcc)[_0x0ac9('0x26')]();});}};}function handleEntityNotFound(_0xd75899,_0x8dfb07){return function(_0xbdb3c7){if(!_0xbdb3c7){_0xd75899[_0x0ac9('0x1a')](0x194);}return _0xbdb3c7;};}function handleError(_0x14f305,_0x208b01){_0x208b01=_0x208b01||0x1f4;return function(_0x2d5259){logger[_0x0ac9('0x27')](_0x2d5259[_0x0ac9('0x28')]);if(_0x2d5259[_0x0ac9('0x29')]){delete _0x2d5259[_0x0ac9('0x29')];}_0x14f305[_0x0ac9('0x1b')](_0x208b01)[_0x0ac9('0x2a')](_0x2d5259);};}exports[_0x0ac9('0x2b')]=function(_0x5dc767,_0x4aff15){var _0x1cacb3={},_0x49267e={},_0x45a1ce={'count':0x0,'rows':[]};var _0x23f162=_[_0x0ac9('0x2c')](db[_0x0ac9('0x2d')]['rawAttributes'],function(_0x52080d){return{'name':_0x52080d[_0x0ac9('0x2e')],'type':_0x52080d[_0x0ac9('0x2f')][_0x0ac9('0x30')]};});_0x49267e[_0x0ac9('0x31')]=_[_0x0ac9('0x2c')](_0x23f162,'name');_0x49267e[_0x0ac9('0x32')]=_[_0x0ac9('0x33')](_0x5dc767[_0x0ac9('0x32')]);_0x49267e[_0x0ac9('0x34')]=_['intersection'](_0x49267e['model'],_0x49267e[_0x0ac9('0x32')]);_0x1cacb3[_0x0ac9('0x35')]=_[_0x0ac9('0x36')](_0x49267e[_0x0ac9('0x31')],qs['fields'](_0x5dc767['query'][_0x0ac9('0x37')]));_0x1cacb3[_0x0ac9('0x35')]=_0x1cacb3[_0x0ac9('0x35')][_0x0ac9('0x38')]?_0x1cacb3[_0x0ac9('0x35')]:_0x49267e[_0x0ac9('0x31')];if(!_0x5dc767['query'][_0x0ac9('0x39')](_0x0ac9('0x3a'))){_0x1cacb3[_0x0ac9('0x1f')]=qs['limit'](_0x5dc767['query'][_0x0ac9('0x1f')]);_0x1cacb3[_0x0ac9('0x1d')]=qs[_0x0ac9('0x1d')](_0x5dc767[_0x0ac9('0x32')][_0x0ac9('0x1d')]);}_0x1cacb3['order']=qs['sort'](_0x5dc767[_0x0ac9('0x32')][_0x0ac9('0x3b')]);_0x1cacb3[_0x0ac9('0x3c')]=qs[_0x0ac9('0x34')](_[_0x0ac9('0x3d')](_0x5dc767[_0x0ac9('0x32')],_0x49267e[_0x0ac9('0x34')]),_0x23f162);if(_0x5dc767[_0x0ac9('0x32')][_0x0ac9('0x3e')]){_0x1cacb3[_0x0ac9('0x3c')]=_[_0x0ac9('0x3f')](_0x1cacb3[_0x0ac9('0x3c')],{'$or':_[_0x0ac9('0x2c')](_0x23f162,function(_0x5908ff){if(_0x5908ff[_0x0ac9('0x2f')]!=='VIRTUAL'){var _0x1f5f57={};_0x1f5f57[_0x5908ff[_0x0ac9('0x29')]]={'$like':'%'+_0x5dc767['query']['filter']+'%'};return _0x1f5f57;}})});}_0x1cacb3=_['merge']({},_0x1cacb3,_0x5dc767[_0x0ac9('0x40')]);var _0x459d3c={'where':_0x1cacb3[_0x0ac9('0x3c')]};return db[_0x0ac9('0x2d')]['count'](_0x459d3c)[_0x0ac9('0x24')](function(_0x79ff53){_0x45a1ce[_0x0ac9('0x41')]=_0x79ff53;if(_0x5dc767[_0x0ac9('0x32')][_0x0ac9('0x42')]){_0x1cacb3[_0x0ac9('0x43')]=[{'all':!![]}];}return db[_0x0ac9('0x2d')]['findAll'](_0x1cacb3);})[_0x0ac9('0x24')](function(_0x20047f){_0x45a1ce[_0x0ac9('0x44')]=_0x20047f;return _0x45a1ce;})[_0x0ac9('0x24')](respondWithFilteredResult(_0x4aff15,_0x1cacb3))['catch'](handleError(_0x4aff15,null));};exports['show']=function(_0x14b7ed,_0x4111e8){var _0x22d3a4={'raw':![],'where':{'id':_0x14b7ed['params']['id']}},_0x40f25c={};_0x40f25c['model']=_[_0x0ac9('0x33')](db[_0x0ac9('0x2d')][_0x0ac9('0x45')]);_0x40f25c[_0x0ac9('0x32')]=_[_0x0ac9('0x33')](_0x14b7ed[_0x0ac9('0x32')]);_0x40f25c[_0x0ac9('0x34')]=_[_0x0ac9('0x36')](_0x40f25c[_0x0ac9('0x31')],_0x40f25c['query']);_0x22d3a4[_0x0ac9('0x35')]=_[_0x0ac9('0x36')](_0x40f25c[_0x0ac9('0x31')],qs[_0x0ac9('0x37')](_0x14b7ed['query'][_0x0ac9('0x37')]));_0x22d3a4['attributes']=_0x22d3a4['attributes'][_0x0ac9('0x38')]?_0x22d3a4[_0x0ac9('0x35')]:_0x40f25c[_0x0ac9('0x31')];if(_0x14b7ed[_0x0ac9('0x32')][_0x0ac9('0x42')]){_0x22d3a4['include']=[{'all':!![]}];}_0x22d3a4=_['merge']({},_0x22d3a4,_0x14b7ed[_0x0ac9('0x40')]);return db[_0x0ac9('0x2d')]['find'](_0x22d3a4)[_0x0ac9('0x24')](handleEntityNotFound(_0x4111e8,null))[_0x0ac9('0x24')](respondWithResult(_0x4111e8,null))[_0x0ac9('0x46')](handleError(_0x4111e8,null));};exports[_0x0ac9('0x47')]=function(_0x586ca9,_0x109fe5){return db[_0x0ac9('0x2d')][_0x0ac9('0x47')](_0x586ca9[_0x0ac9('0x48')],{})[_0x0ac9('0x24')](respondWithResult(_0x109fe5,0xc9))[_0x0ac9('0x46')](handleError(_0x109fe5,null));};exports['update']=function(_0x3301b4,_0x5a7092){if(_0x3301b4[_0x0ac9('0x48')]['id']){delete _0x3301b4['body']['id'];}return db[_0x0ac9('0x2d')]['find']({'where':{'id':_0x3301b4['params']['id']}})['then'](handleEntityNotFound(_0x5a7092,null))['then'](saveUpdates(_0x3301b4['body'],null))[_0x0ac9('0x24')](respondWithResult(_0x5a7092,null))['catch'](handleError(_0x5a7092,null));};exports[_0x0ac9('0x25')]=function(_0x32468c,_0x21b502){return db[_0x0ac9('0x2d')][_0x0ac9('0x49')]({'where':{'id':_0x32468c[_0x0ac9('0x4a')]['id']}})[_0x0ac9('0x24')](handleEntityNotFound(_0x21b502,null))[_0x0ac9('0x24')](removeEntity(_0x21b502,null))[_0x0ac9('0x46')](handleError(_0x21b502,null));};exports[_0x0ac9('0x4b')]=function(_0x3a9278,_0xb425a9,_0xae3a6e){var _0x998d24={};var _0x49a28e={};var _0x39c93e;var _0x23a5cb;return db[_0x0ac9('0x2d')][_0x0ac9('0x4c')]({'where':{'id':_0x3a9278['params']['id']}})[_0x0ac9('0x24')](handleEntityNotFound(_0xb425a9,null))[_0x0ac9('0x24')](function(_0x4e85ff){if(_0x4e85ff){_0x39c93e=_0x4e85ff;_0x49a28e[_0x0ac9('0x31')]=_[_0x0ac9('0x33')](db['ServicenowConfiguration']['rawAttributes']);_0x49a28e['query']=_[_0x0ac9('0x33')](_0x3a9278[_0x0ac9('0x32')]);_0x49a28e['filters']=_[_0x0ac9('0x36')](_0x49a28e['model'],_0x49a28e[_0x0ac9('0x32')]);_0x998d24[_0x0ac9('0x35')]=_[_0x0ac9('0x36')](_0x49a28e['model'],qs[_0x0ac9('0x37')](_0x3a9278[_0x0ac9('0x32')][_0x0ac9('0x37')]));_0x998d24[_0x0ac9('0x35')]=_0x998d24['attributes']['length']?_0x998d24[_0x0ac9('0x35')]:_0x49a28e[_0x0ac9('0x31')];_0x998d24[_0x0ac9('0x4d')]=qs[_0x0ac9('0x3b')](_0x3a9278[_0x0ac9('0x32')]['sort']);_0x998d24['where']=qs['filters'](_[_0x0ac9('0x3d')](_0x3a9278[_0x0ac9('0x32')],_0x49a28e[_0x0ac9('0x34')]));if(_0x3a9278[_0x0ac9('0x32')][_0x0ac9('0x3e')]){_0x998d24['where']=_[_0x0ac9('0x3f')](_0x998d24[_0x0ac9('0x3c')],{'$or':_[_0x0ac9('0x2c')](_0x998d24['attributes'],function(_0x4d5953){var _0x437ad0={};_0x437ad0[_0x4d5953]={'$like':'%'+_0x3a9278[_0x0ac9('0x32')]['filter']+'%'};return _0x437ad0;})});}_0x998d24=_[_0x0ac9('0x3f')]({},_0x998d24,_0x3a9278[_0x0ac9('0x40')]);return _0x39c93e[_0x0ac9('0x4b')](_0x998d24);}})[_0x0ac9('0x24')](function(_0x1d438f){if(_0x1d438f){_0x23a5cb=_0x1d438f['length'];if(!_0x3a9278[_0x0ac9('0x32')][_0x0ac9('0x39')](_0x0ac9('0x3a'))){_0x998d24['limit']=qs[_0x0ac9('0x1f')](_0x3a9278[_0x0ac9('0x32')][_0x0ac9('0x1f')]);_0x998d24[_0x0ac9('0x1d')]=qs[_0x0ac9('0x1d')](_0x3a9278[_0x0ac9('0x32')][_0x0ac9('0x1d')]);}return _0x39c93e[_0x0ac9('0x4b')](_0x998d24);}})[_0x0ac9('0x24')](function(_0x53f171){if(_0x53f171){return _0x53f171?{'count':_0x23a5cb,'rows':_0x53f171}:null;}})[_0x0ac9('0x24')](respondWithResult(_0xb425a9,null))['catch'](handleError(_0xb425a9,null));};exports[_0x0ac9('0x4e')]=function(_0x517d40,_0xc0fb3c,_0x48d2fb){if(_0x517d40[_0x0ac9('0x48')]['id']){delete _0x517d40[_0x0ac9('0x48')]['id'];}return db['ServicenowAccount']['findOne']({'where':{'id':_0x517d40['params']['id']}})[_0x0ac9('0x24')](handleEntityNotFound(_0xc0fb3c,null))[_0x0ac9('0x24')](function(_0x257c45){if(_0x257c45){_0x517d40[_0x0ac9('0x48')][_0x0ac9('0x4f')]=_0x257c45['id'];_0x517d40[_0x0ac9('0x48')]['Subjects']=integrations[_0x0ac9('0x50')](_0x517d40['body'][_0x0ac9('0x51')],_0x517d40[_0x0ac9('0x48')]['type']);_0x517d40[_0x0ac9('0x48')][_0x0ac9('0x52')]=integrations[_0x0ac9('0x53')](_0x517d40[_0x0ac9('0x48')][_0x0ac9('0x51')],_0x517d40[_0x0ac9('0x48')][_0x0ac9('0x2f')]);return db[_0x0ac9('0x54')][_0x0ac9('0x47')](_0x517d40[_0x0ac9('0x48')],{'include':[{'model':db['ServicenowField'],'as':_0x0ac9('0x55')},{'model':db[_0x0ac9('0x56')],'as':_0x0ac9('0x52')}]});}return null;})[_0x0ac9('0x24')](respondWithResult(_0xc0fb3c,null))[_0x0ac9('0x46')](handleError(_0xc0fb3c,null));};exports[_0x0ac9('0x57')]=function(_0x36364c,_0x461c07,_0x1dc858){var _0x39f7c9=['made_sla',_0x0ac9('0x58'),_0x0ac9('0x59'),_0x0ac9('0x5a'),_0x0ac9('0x5b'),_0x0ac9('0x5c'),'incident_state',_0x0ac9('0x5d'),_0x0ac9('0x5e')];var _0x4d150f=[_0x0ac9('0x5f'),_0x0ac9('0x60'),_0x0ac9('0x61'),'watch_list','upon_reject',_0x0ac9('0x62'),_0x0ac9('0x63'),_0x0ac9('0x58'),_0x0ac9('0x64'),_0x0ac9('0x65'),_0x0ac9('0x66'),_0x0ac9('0x67'),_0x0ac9('0x68'),_0x0ac9('0x69'),_0x0ac9('0x6a'),'sys_domain','state',_0x0ac9('0x6b'),_0x0ac9('0x59'),_0x0ac9('0x4d'),_0x0ac9('0x6c'),'closed_at',_0x0ac9('0x6d'),_0x0ac9('0x6e'),_0x0ac9('0x6f'),'active',_0x0ac9('0x70'),_0x0ac9('0x71'),_0x0ac9('0x72'),_0x0ac9('0x73'),_0x0ac9('0x74'),_0x0ac9('0x75'),_0x0ac9('0x76'),_0x0ac9('0x77'),_0x0ac9('0x78'),_0x0ac9('0x79'),'work_end',_0x0ac9('0x7a'),_0x0ac9('0x7b'),_0x0ac9('0x7c'),_0x0ac9('0x7d'),_0x0ac9('0x5a'),_0x0ac9('0x7e'),_0x0ac9('0x7f'),_0x0ac9('0x5b'),_0x0ac9('0x80'),_0x0ac9('0x81'),_0x0ac9('0x82'),_0x0ac9('0x83'),_0x0ac9('0x84'),_0x0ac9('0x85'),_0x0ac9('0x86'),_0x0ac9('0x87'),'notify',_0x0ac9('0x88'),_0x0ac9('0x89'),_0x0ac9('0x8a'),_0x0ac9('0x8b'),'parent_incident',_0x0ac9('0x8c'),'contact_type',_0x0ac9('0x8d'),_0x0ac9('0x8e'),_0x0ac9('0x8f'),'problem_id','company',_0x0ac9('0x90'),_0x0ac9('0x91'),_0x0ac9('0x92'),_0x0ac9('0x5d'),_0x0ac9('0x93'),'sla_due',_0x0ac9('0x94'),_0x0ac9('0x95'),_0x0ac9('0x96'),_0x0ac9('0x97'),'reopen_count',_0x0ac9('0x98'),_0x0ac9('0x99'),_0x0ac9('0x9a'),_0x0ac9('0x9b'),_0x0ac9('0x9c'),'category'];var _0x30a828='';var _0x43e1dc='';var _0x238085=[];var _0x29a916='';var _0x4cba5c='';var _0x1866c4=[];var _0xe01600='';var _0x458a75='';var _0x41d5d5={};var _0x3f7b85='';return db[_0x0ac9('0x2d')][_0x0ac9('0x4c')]({'where':{'id':_0x36364c[_0x0ac9('0x4a')]['id']},'attributes':['id',_0x0ac9('0x9d'),_0x0ac9('0x9e'),_0x0ac9('0x9f'),'remoteUri','serverUrl']})[_0x0ac9('0x24')](handleEntityNotFound(_0x461c07,null))['then'](function(_0xb87d56){if(_0xb87d56){_0x3f7b85=_0xb87d56[_0x0ac9('0xa0')];var _0x1094d6=_0x3f7b85[_0x0ac9('0xa1')](-0x1);if(_0x1094d6==='/'){_0x3f7b85=_0x3f7b85[_0x0ac9('0xa2')](0x0,_0x3f7b85[_0x0ac9('0xa3')](_0x1094d6));}_0x458a75=util['format']('%s/api/now/doc/table/schema/',_0x3f7b85);_0xe01600=util[_0x0ac9('0xa4')](_0x0ac9('0xa5'),_0x3f7b85);_0x41d5d5={'user':_0xb87d56['username'],'pass':_0xb87d56[_0x0ac9('0x9e')]};var _0x269d4e={'method':_0x0ac9('0xa6'),'uri':_0x458a75+_0x0ac9('0xa7'),'auth':_0x41d5d5,'json':!![]};return rp(_0x269d4e);}})[_0x0ac9('0x24')](function(_0xdb6ee5){if(_0xdb6ee5[_0x0ac9('0xa8')][_0x0ac9('0x38')]>0x0){_0x30a828=_0xdb6ee5[_0x0ac9('0xa8')];}console['log']('incident\x20table\x20objects',_0x30a828);_0x1866c4=[];_0x43e1dc=Object[_0x0ac9('0xa9')]([],_0x30a828);_[_0x0ac9('0xaa')](_0x43e1dc,function(_0x324fce){return!_0x39f7c9[_0x0ac9('0xab')](_0x324fce[_0x0ac9('0x29')]);});_0x43e1dc[_0x0ac9('0xac')](function(_0x51f1aa){var _0xd10972=createFieldObject(_0xe01600,_0x41d5d5,_0x51f1aa['internalType'],_0x51f1aa['name'],_0x51f1aa['label'],![]);_0x1866c4[_0x0ac9('0xad')](_0xd10972);});return Promise[_0x0ac9('0xae')](_0x1866c4);})[_0x0ac9('0x24')](function(_0x2cb62e){_0x238085=_0x2cb62e;_0x29a916=Object[_0x0ac9('0xa9')]([],_0x30a828);console[_0x0ac9('0xaf')](_0x0ac9('0xb0'),_0x30a828);_[_0x0ac9('0xaa')](_0x29a916,function(_0x4fd8d8){return _0x4d150f[_0x0ac9('0xab')](_0x4fd8d8[_0x0ac9('0x29')]);});console[_0x0ac9('0xaf')]('TCL:\x20exports.getEntityFields\x20->\x20_objectsCustom',_0x29a916);_0x1866c4=[];_0x29a916[_0x0ac9('0xac')](function(_0x19f33b){var _0x581f76=createFieldObject(_0xe01600,_0x41d5d5,_0x19f33b[_0x0ac9('0xb1')],_0x19f33b[_0x0ac9('0x29')],_0x19f33b[_0x0ac9('0xb2')],!![]);_0x1866c4[_0x0ac9('0xad')](_0x581f76);});return Promise['all'](_0x1866c4);})[_0x0ac9('0x24')](function(_0x459999){_0x4cba5c=_0x459999;var _0x27b735=_0x238085[_0x0ac9('0xb3')](_0x4cba5c);return{'count':_0x27b735[_0x0ac9('0x38')],'rows':_0x27b735};})[_0x0ac9('0x24')](respondWithResult(_0x461c07,null))['catch'](function(_0x18fa9d){console[_0x0ac9('0xaf')]('ServiceNow\x20error:\x20'+_0x18fa9d);var _0x2ef847=_0x36364c[_0x0ac9('0x32')][_0x0ac9('0xb4')]?0x1f4:_0x18fa9d[_0x0ac9('0xb5')]||0x1f4;logger[_0x0ac9('0x27')](_0x18fa9d[_0x0ac9('0x28')]);delete _0x18fa9d['name'];if(_0x2ef847===0x191){_0x2ef847=0x190;}_0x461c07[_0x0ac9('0x1b')](_0x2ef847)[_0x0ac9('0x2a')](_0x36364c['query'][_0x0ac9('0xb4')]?{'message':_0x0ac9('0xb6'),'statusCode':_0x18fa9d[_0x0ac9('0xb5')]}:_0x18fa9d);});};function createFieldObject(_0x3644a0,_0xe07a3d,_0x3cc392,_0x2e9929,_0x371db8,_0x427930){return new Promise(function(_0x2f78a1,_0x17e249){var _0x18dd1a={'id':_0x2e9929,'name':_0x371db8,'custom':_0x427930};if(_0x3cc392==='boolean'){_0x18dd1a[_0x0ac9('0x40')]=[{'name':_0x0ac9('0xb7'),'value':_0x0ac9('0xb8')},{'name':_0x0ac9('0xb9'),'value':'false'}];_0x2f78a1(_0x18dd1a);}else{var _0x55ca36={'method':'GET','uri':_0x3644a0+_0x0ac9('0xba')+_0x2e9929,'auth':_0xe07a3d,'json':!![]};return rp(_0x55ca36)[_0x0ac9('0x24')](function(_0x50fd99){var _0x773894=[];if(_0x50fd99[_0x0ac9('0xa8')][_0x0ac9('0x38')]>0x0){_0x50fd99[_0x0ac9('0xa8')]['forEach'](function(_0x3fe589){if(_0x3fe589[_0x0ac9('0xbb')]===_0x0ac9('0xbc')){var _0x575cdb={'name':_0x3fe589[_0x0ac9('0xb2')],'value':_0x3fe589[_0x0ac9('0xbd')]};_0x773894[_0x0ac9('0xad')](_0x575cdb);}});}_0x18dd1a[_0x0ac9('0x40')]=_0x773894;if(_0x18dd1a[_0x0ac9('0x40')]['length']>0x0){_0x2f78a1(_0x18dd1a);}else{if(_0x427930==![]){_0x2f78a1();}else{_0x2f78a1(_0x18dd1a);}}});}});}
\ No newline at end of file
index a934977..7d426b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7217=['api','moment','bluebird','request-promise','../../config/environment','./intServicenowAccount.attributes','../../components/integrations/configuration','exports','define','ServicenowAccount','int_servicenow_accounts','lodash','../../config/logger'];(function(_0x26499a,_0x5527dd){var _0xfd8c26=function(_0x3f60da){while(--_0x3f60da){_0x26499a['push'](_0x26499a['shift']());}};_0xfd8c26(++_0x5527dd);}(_0x7217,0x19e));var _0x7721=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0x7217[_0x6131cd];return _0x47e916;};'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'));var integrations=require(_0x7721('0x8'));module[_0x7721('0x9')]=function(_0xb239e0,_0xf7ff37){return _0xb239e0[_0x7721('0xa')](_0x7721('0xb'),attributes,{'tableName':_0x7721('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1261=['util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intServicenowAccount.attributes','ServicenowAccount','int_servicenow_accounts'];(function(_0x1b7610,_0x14282e){var _0x5b52ed=function(_0x4c8bb9){while(--_0x4c8bb9){_0x1b7610['push'](_0x1b7610['shift']());}};_0x5b52ed(++_0x14282e);}(_0x1261,0x144));var _0x1126=function(_0x220afa,_0xf5f6cc){_0x220afa=_0x220afa-0x0;var _0x1b79d1=_0x1261[_0x220afa];return _0x1b79d1;};'use strict';var _=require('lodash');var util=require(_0x1126('0x0'));var logger=require(_0x1126('0x1'))(_0x1126('0x2'));var moment=require(_0x1126('0x3'));var BPromise=require(_0x1126('0x4'));var rp=require(_0x1126('0x5'));var fs=require('fs');var path=require(_0x1126('0x6'));var rimraf=require(_0x1126('0x7'));var config=require(_0x1126('0x8'));var attributes=require(_0x1126('0x9'));var integrations=require('../../components/integrations/configuration');module['exports']=function(_0x40ba58,_0x907180){return _0x40ba58['define'](_0x1126('0xa'),attributes,{'tableName':_0x1126('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ce4d5c4..8aaf640 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x291f=['code','message','result','catch','ServicenowAccount','findAll','options','raw','where','attributes','limit','include','map','model','GetServicenowAccount','ShowServicenowAccount','moment','randomstring','../../mysqldb','../../config/logger','jayson/promise','client','http','then','info','ServicenowAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error'];(function(_0x3e15a9,_0x51797a){var _0x1f6e25=function(_0x321d72){while(--_0x321d72){_0x3e15a9['push'](_0x3e15a9['shift']());}};_0x1f6e25(++_0x51797a);}(_0x291f,0xa6));var _0xf291=function(_0x3031a3,_0x259efa){_0x3031a3=_0x3031a3-0x0;var _0x22b6d1=_0x291f[_0x3031a3];return _0x22b6d1;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xf291('0x0'));var BPromise=require('bluebird');var rs=require(_0xf291('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf291('0x2'))['db'];var utils=require('../../config/utils');var logger=require(_0xf291('0x3'))('rpc');var config=require('../../config/environment');var jayson=require(_0xf291('0x4'));var client=jayson[_0xf291('0x5')][_0xf291('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x9ba697,_0x50be96,_0x56ec5d){return new BPromise(function(_0x286048,_0x353d1b){return client['request'](_0x9ba697,_0x56ec5d)[_0xf291('0x7')](function(_0x463091){logger[_0xf291('0x8')](_0xf291('0x9'),_0x50be96,_0xf291('0xa'));logger[_0xf291('0xb')]('ServicenowAccount,\x20%s,\x20%s,\x20%s',_0x50be96,_0xf291('0xa'),JSON[_0xf291('0xc')](_0x463091));if(_0x463091[_0xf291('0xd')]){if(_0x463091[_0xf291('0xd')][_0xf291('0xe')]===0x1f4){logger[_0xf291('0xd')](_0xf291('0x9'),_0x50be96,_0x463091['error'][_0xf291('0xf')]);return _0x353d1b(_0x463091[_0xf291('0xd')][_0xf291('0xf')]);}logger[_0xf291('0xd')](_0xf291('0x9'),_0x50be96,_0x463091[_0xf291('0xd')][_0xf291('0xf')]);return _0x286048(_0x463091[_0xf291('0xd')][_0xf291('0xf')]);}else{logger[_0xf291('0x8')](_0xf291('0x9'),_0x50be96,_0xf291('0xa'));_0x286048(_0x463091[_0xf291('0x10')]['message']);}})[_0xf291('0x11')](function(_0x1658fc){logger['error'](_0xf291('0x9'),_0x50be96,_0x1658fc);_0x353d1b(_0x1658fc);});});}exports['GetServicenowAccount']=function(_0x57b4c5){var _0x15fa8d=this;return new Promise(function(_0x31a734,_0x2c0f3e){return db[_0xf291('0x12')][_0xf291('0x13')]({'raw':_0x57b4c5[_0xf291('0x14')]?_0x57b4c5['options'][_0xf291('0x15')]===undefined?!![]:![]:!![],'where':_0x57b4c5[_0xf291('0x14')]?_0x57b4c5[_0xf291('0x14')][_0xf291('0x16')]||null:null,'attributes':_0x57b4c5[_0xf291('0x14')]?_0x57b4c5['options'][_0xf291('0x17')]||null:null,'limit':_0x57b4c5['options']?_0x57b4c5[_0xf291('0x14')][_0xf291('0x18')]||null:null,'include':_0x57b4c5[_0xf291('0x14')]?_0x57b4c5[_0xf291('0x14')][_0xf291('0x19')]?_[_0xf291('0x1a')](_0x57b4c5['options'][_0xf291('0x19')],function(_0x566301){return{'model':db[_0x566301['model']],'as':_0x566301['as'],'attributes':_0x566301[_0xf291('0x17')],'include':_0x566301['include']?_[_0xf291('0x1a')](_0x566301[_0xf291('0x19')],function(_0x149ae7){return{'model':db[_0x149ae7[_0xf291('0x1b')]],'as':_0x149ae7['as'],'attributes':_0x149ae7[_0xf291('0x17')],'include':_0x149ae7[_0xf291('0x19')]?_['map'](_0x149ae7['include'],function(_0x228fc3){return{'model':db[_0x228fc3[_0xf291('0x1b')]],'as':_0x228fc3['as'],'attributes':_0x228fc3[_0xf291('0x17')]};}):[]};}):[]};}):[]:[]})[_0xf291('0x7')](function(_0xdde84d){logger[_0xf291('0x8')]('GetServicenowAccount',_0x57b4c5);logger['debug'](_0xf291('0x1c'),_0x57b4c5,JSON[_0xf291('0xc')](_0xdde84d));_0x31a734(_0xdde84d);})[_0xf291('0x11')](function(_0x92b55a){logger[_0xf291('0xd')]('GetServicenowAccount',_0x92b55a[_0xf291('0xf')],_0x57b4c5);_0x2c0f3e(_0x15fa8d[_0xf291('0xd')](0x1f4,_0x92b55a[_0xf291('0xf')]));});});};exports[_0xf291('0x1d')]=function(_0x1dd1a8){var _0x2f49d6=this;return new Promise(function(_0x2d6dea,_0x123cbb){return db[_0xf291('0x12')]['find']({'raw':_0x1dd1a8[_0xf291('0x14')]?_0x1dd1a8[_0xf291('0x14')][_0xf291('0x15')]===undefined?!![]:![]:!![],'where':_0x1dd1a8[_0xf291('0x14')]?_0x1dd1a8[_0xf291('0x14')][_0xf291('0x16')]||null:null,'attributes':_0x1dd1a8[_0xf291('0x14')]?_0x1dd1a8['options'][_0xf291('0x17')]||null:null,'include':_0x1dd1a8['options']?_0x1dd1a8[_0xf291('0x14')][_0xf291('0x19')]?_[_0xf291('0x1a')](_0x1dd1a8['options'][_0xf291('0x19')],function(_0x2b7337){return{'model':db[_0x2b7337['model']],'as':_0x2b7337['as'],'attributes':_0x2b7337[_0xf291('0x17')],'include':_0x2b7337[_0xf291('0x19')]?_[_0xf291('0x1a')](_0x2b7337[_0xf291('0x19')],function(_0xd6762f){return{'model':db[_0xd6762f['model']],'as':_0xd6762f['as'],'attributes':_0xd6762f[_0xf291('0x17')],'include':_0xd6762f[_0xf291('0x19')]?_[_0xf291('0x1a')](_0xd6762f[_0xf291('0x19')],function(_0x390bce){return{'model':db[_0x390bce[_0xf291('0x1b')]],'as':_0x390bce['as'],'attributes':_0x390bce[_0xf291('0x17')]};}):[]};}):[]};}):[]:[]})[_0xf291('0x7')](function(_0x5247aa){logger[_0xf291('0x8')](_0xf291('0x1d'),_0x1dd1a8);logger[_0xf291('0xb')](_0xf291('0x1d'),_0x1dd1a8,JSON[_0xf291('0xc')](_0x5247aa));_0x2d6dea(_0x5247aa);})[_0xf291('0x11')](function(_0x119abc){logger[_0xf291('0xd')](_0xf291('0x1d'),_0x119abc[_0xf291('0xf')],_0x1dd1a8);_0x123cbb(_0x2f49d6[_0xf291('0xd')](0x1f4,_0x119abc[_0xf291('0xf')]));});});};
\ No newline at end of file
+var _0xe1aa=['model','find','ShowServicenowAccount','lodash','util','moment','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','then','info','ServicenowAccount,\x20%s,\x20%s','debug','ServicenowAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','GetServicenowAccount','ServicenowAccount','findAll','options','raw','where','attributes','limit','include','map'];(function(_0x537aa4,_0xf3315e){var _0x5dda8c=function(_0x1624e5){while(--_0x1624e5){_0x537aa4['push'](_0x537aa4['shift']());}};_0x5dda8c(++_0xf3315e);}(_0xe1aa,0x1b0));var _0xae1a=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0xe1aa[_0x5b644e];return _0x49c6bf;};'use strict';var _=require(_0xae1a('0x0'));var util=require(_0xae1a('0x1'));var moment=require(_0xae1a('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xae1a('0x3'))['db'];var utils=require(_0xae1a('0x4'));var logger=require(_0xae1a('0x5'))('rpc');var config=require(_0xae1a('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xae1a('0x7')][_0xae1a('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x5a646a,_0x46b21f,_0x1a6617){return new BPromise(function(_0x4199b5,_0x33bf0b){return client['request'](_0x5a646a,_0x1a6617)[_0xae1a('0x9')](function(_0x4e3b20){logger[_0xae1a('0xa')](_0xae1a('0xb'),_0x46b21f,'request\x20sent');logger[_0xae1a('0xc')](_0xae1a('0xd'),_0x46b21f,_0xae1a('0xe'),JSON[_0xae1a('0xf')](_0x4e3b20));if(_0x4e3b20[_0xae1a('0x10')]){if(_0x4e3b20['error']['code']===0x1f4){logger['error'](_0xae1a('0xb'),_0x46b21f,_0x4e3b20[_0xae1a('0x10')][_0xae1a('0x11')]);return _0x33bf0b(_0x4e3b20['error']['message']);}logger[_0xae1a('0x10')](_0xae1a('0xb'),_0x46b21f,_0x4e3b20[_0xae1a('0x10')]['message']);return _0x4199b5(_0x4e3b20[_0xae1a('0x10')][_0xae1a('0x11')]);}else{logger['info']('ServicenowAccount,\x20%s,\x20%s',_0x46b21f,'request\x20sent');_0x4199b5(_0x4e3b20[_0xae1a('0x12')][_0xae1a('0x11')]);}})[_0xae1a('0x13')](function(_0x477c77){logger[_0xae1a('0x10')](_0xae1a('0xb'),_0x46b21f,_0x477c77);_0x33bf0b(_0x477c77);});});}exports[_0xae1a('0x14')]=function(_0x17d3ca){var _0x165ca9=this;return new Promise(function(_0x41dbb2,_0x563109){return db[_0xae1a('0x15')][_0xae1a('0x16')]({'raw':_0x17d3ca['options']?_0x17d3ca[_0xae1a('0x17')][_0xae1a('0x18')]===undefined?!![]:![]:!![],'where':_0x17d3ca[_0xae1a('0x17')]?_0x17d3ca['options'][_0xae1a('0x19')]||null:null,'attributes':_0x17d3ca[_0xae1a('0x17')]?_0x17d3ca[_0xae1a('0x17')][_0xae1a('0x1a')]||null:null,'limit':_0x17d3ca[_0xae1a('0x17')]?_0x17d3ca[_0xae1a('0x17')][_0xae1a('0x1b')]||null:null,'include':_0x17d3ca[_0xae1a('0x17')]?_0x17d3ca[_0xae1a('0x17')][_0xae1a('0x1c')]?_[_0xae1a('0x1d')](_0x17d3ca[_0xae1a('0x17')]['include'],function(_0x31ec85){return{'model':db[_0x31ec85[_0xae1a('0x1e')]],'as':_0x31ec85['as'],'attributes':_0x31ec85[_0xae1a('0x1a')],'include':_0x31ec85[_0xae1a('0x1c')]?_['map'](_0x31ec85[_0xae1a('0x1c')],function(_0xf524fc){return{'model':db[_0xf524fc[_0xae1a('0x1e')]],'as':_0xf524fc['as'],'attributes':_0xf524fc[_0xae1a('0x1a')],'include':_0xf524fc[_0xae1a('0x1c')]?_[_0xae1a('0x1d')](_0xf524fc['include'],function(_0x66d761){return{'model':db[_0x66d761[_0xae1a('0x1e')]],'as':_0x66d761['as'],'attributes':_0x66d761[_0xae1a('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xae1a('0x9')](function(_0x2b6a5b){logger['info'](_0xae1a('0x14'),_0x17d3ca);logger['debug'](_0xae1a('0x14'),_0x17d3ca,JSON[_0xae1a('0xf')](_0x2b6a5b));_0x41dbb2(_0x2b6a5b);})[_0xae1a('0x13')](function(_0x45e8f6){logger['error']('GetServicenowAccount',_0x45e8f6[_0xae1a('0x11')],_0x17d3ca);_0x563109(_0x165ca9[_0xae1a('0x10')](0x1f4,_0x45e8f6[_0xae1a('0x11')]));});});};exports['ShowServicenowAccount']=function(_0x4991a8){var _0x1618cd=this;return new Promise(function(_0x39d11b,_0x189a41){return db[_0xae1a('0x15')][_0xae1a('0x1f')]({'raw':_0x4991a8[_0xae1a('0x17')]?_0x4991a8['options'][_0xae1a('0x18')]===undefined?!![]:![]:!![],'where':_0x4991a8[_0xae1a('0x17')]?_0x4991a8[_0xae1a('0x17')]['where']||null:null,'attributes':_0x4991a8['options']?_0x4991a8[_0xae1a('0x17')][_0xae1a('0x1a')]||null:null,'include':_0x4991a8['options']?_0x4991a8[_0xae1a('0x17')][_0xae1a('0x1c')]?_[_0xae1a('0x1d')](_0x4991a8['options']['include'],function(_0x3f55e4){return{'model':db[_0x3f55e4[_0xae1a('0x1e')]],'as':_0x3f55e4['as'],'attributes':_0x3f55e4[_0xae1a('0x1a')],'include':_0x3f55e4[_0xae1a('0x1c')]?_[_0xae1a('0x1d')](_0x3f55e4[_0xae1a('0x1c')],function(_0x5696d5){return{'model':db[_0x5696d5['model']],'as':_0x5696d5['as'],'attributes':_0x5696d5[_0xae1a('0x1a')],'include':_0x5696d5[_0xae1a('0x1c')]?_[_0xae1a('0x1d')](_0x5696d5[_0xae1a('0x1c')],function(_0x19dc40){return{'model':db[_0x19dc40['model']],'as':_0x19dc40['as'],'attributes':_0x19dc40[_0xae1a('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xae1a('0x9')](function(_0x5c038e){logger[_0xae1a('0xa')](_0xae1a('0x20'),_0x4991a8);logger['debug']('ShowServicenowAccount',_0x4991a8,JSON[_0xae1a('0xf')](_0x5c038e));_0x39d11b(_0x5c038e);})[_0xae1a('0x13')](function(_0x4cf9b5){logger['error'](_0xae1a('0x20'),_0x4cf9b5['message'],_0x4991a8);_0x189a41(_0x1618cd[_0xae1a('0x10')](0x1f4,_0x4cf9b5[_0xae1a('0x11')]));});});};
\ No newline at end of file
index d51b9d4..b623d91 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9d45=['update','delete','destroy','exports','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intServicenowConfiguration.controller','get','/:id','show','/:id/fields','getFields','/:id/subjects','isAuthenticated','getSubjects','/:id/descriptions','post','create','put'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0x9d45,0xfe));var _0x59d4=function(_0x1f0219,_0x20989d){_0x1f0219=_0x1f0219-0x0;var _0x1028be=_0x9d45[_0x1f0219];return _0x1028be;};'use strict';var multer=require(_0x59d4('0x0'));var util=require('util');var path=require(_0x59d4('0x1'));var timeout=require('connect-timeout');var express=require(_0x59d4('0x2'));var router=express[_0x59d4('0x3')]();var fs_extra=require(_0x59d4('0x4'));var auth=require(_0x59d4('0x5'));var interaction=require(_0x59d4('0x6'));var config=require(_0x59d4('0x7'));var controller=require(_0x59d4('0x8'));router[_0x59d4('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x59d4('0x9')](_0x59d4('0xa'),auth['isAuthenticated'](),controller[_0x59d4('0xb')]);router[_0x59d4('0x9')](_0x59d4('0xc'),auth['isAuthenticated'](),controller[_0x59d4('0xd')]);router[_0x59d4('0x9')](_0x59d4('0xe'),auth[_0x59d4('0xf')](),controller[_0x59d4('0x10')]);router[_0x59d4('0x9')](_0x59d4('0x11'),auth[_0x59d4('0xf')](),controller['getDescriptions']);router[_0x59d4('0x12')]('/',auth[_0x59d4('0xf')](),controller[_0x59d4('0x13')]);router[_0x59d4('0x14')](_0x59d4('0xa'),auth[_0x59d4('0xf')](),controller[_0x59d4('0x15')]);router[_0x59d4('0x16')](_0x59d4('0xa'),auth['isAuthenticated'](),controller[_0x59d4('0x17')]);module[_0x59d4('0x18')]=router;
\ No newline at end of file
+var _0xb522=['update','delete','destroy','exports','multer','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intServicenowConfiguration.controller','get','isAuthenticated','index','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','post','put','/:id'];(function(_0x2a9f60,_0x51ec39){var _0x6560d4=function(_0x5d780e){while(--_0x5d780e){_0x2a9f60['push'](_0x2a9f60['shift']());}};_0x6560d4(++_0x51ec39);}(_0xb522,0x130));var _0x2b52=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xb522[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x2b52('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x2b52('0x1'));var express=require(_0x2b52('0x2'));var router=express[_0x2b52('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x2b52('0x4'));var interaction=require(_0x2b52('0x5'));var config=require(_0x2b52('0x6'));var controller=require(_0x2b52('0x7'));router[_0x2b52('0x8')]('/',auth[_0x2b52('0x9')](),controller[_0x2b52('0xa')]);router[_0x2b52('0x8')]('/:id',auth[_0x2b52('0x9')](),controller[_0x2b52('0xb')]);router[_0x2b52('0x8')](_0x2b52('0xc'),auth[_0x2b52('0x9')](),controller[_0x2b52('0xd')]);router[_0x2b52('0x8')](_0x2b52('0xe'),auth['isAuthenticated'](),controller[_0x2b52('0xf')]);router['get'](_0x2b52('0x10'),auth[_0x2b52('0x9')](),controller[_0x2b52('0x11')]);router[_0x2b52('0x12')]('/',auth[_0x2b52('0x9')](),controller['create']);router[_0x2b52('0x13')](_0x2b52('0x14'),auth['isAuthenticated'](),controller[_0x2b52('0x15')]);router[_0x2b52('0x16')](_0x2b52('0x14'),auth[_0x2b52('0x9')](),controller[_0x2b52('0x17')]);module[_0x2b52('0x18')]=router;
\ No newline at end of file
index a543178..4ef208b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x81cc=['sequelize','STRING'];(function(_0x2f7ffe,_0xfff10a){var _0x39f082=function(_0x584e9c){while(--_0x584e9c){_0x2f7ffe['push'](_0x2f7ffe['shift']());}};_0x39f082(++_0xfff10a);}(_0x81cc,0xa8));var _0xc81c=function(_0x707081,_0x4dde83){_0x707081=_0x707081-0x0;var _0x323b8f=_0x81cc[_0x707081];return _0x323b8f;};'use strict';var Sequelize=require(_0xc81c('0x0'));module['exports']={'name':{'type':Sequelize[_0xc81c('0x1')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x9444=['sequelize','STRING'];(function(_0x556be0,_0x16a424){var _0x4d7130=function(_0x3319c3){while(--_0x3319c3){_0x556be0['push'](_0x556be0['shift']());}};_0x4d7130(++_0x16a424);}(_0x9444,0xde));var _0x4944=function(_0x11e30d,_0x5584aa){_0x11e30d=_0x11e30d-0x0;var _0x2d4e29=_0x9444[_0x11e30d];return _0x2d4e29;};'use strict';var Sequelize=require(_0x4944('0x0'));module['exports']={'name':{'type':Sequelize[_0x4944('0x1')]},'description':{'type':Sequelize[_0x4944('0x1')]}};
\ No newline at end of file
index 57b7333..4be54f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b26=['fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','type','VIRTUAL','options','ServicenowConfiguration','includeAll','include','findAll','rows','show','params','keys','catch','create','body','find','destroy','getFields','findOne','ServicenowField','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','to-csv','ejs','fs-extra','squel','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/environment','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','apply','reject','update','then','error','stack','name','send','index','map','rawAttributes','fieldName','key','model','query','filters','intersection','attributes'];(function(_0x5a337e,_0x5ca4e5){var _0x33d8b8=function(_0x4212f7){while(--_0x4212f7){_0x5a337e['push'](_0x5a337e['shift']());}};_0x33d8b8(++_0x5ca4e5);}(_0x8b26,0x1b4));var _0x68b2=function(_0x3b95e2,_0x3d2dfb){_0x3b95e2=_0x3b95e2-0x0;var _0x1191c4=_0x8b26[_0x3b95e2];return _0x1191c4;};'use strict';var emlformat=require(_0x68b2('0x0'));var rimraf=require(_0x68b2('0x1'));var zipdir=require(_0x68b2('0x2'));var jsonpatch=require(_0x68b2('0x3'));var rp=require(_0x68b2('0x4'));var moment=require('moment');var BPromise=require(_0x68b2('0x5'));var Mustache=require(_0x68b2('0x6'));var util=require(_0x68b2('0x7'));var path=require(_0x68b2('0x8'));var sox=require('sox');var csv=require(_0x68b2('0x9'));var ejs=require(_0x68b2('0xa'));var fs=require('fs');var fs_extra=require(_0x68b2('0xb'));var _=require('lodash');var squel=require(_0x68b2('0xc'));var crypto=require(_0x68b2('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x68b2('0xe'));var toCsv=require(_0x68b2('0x9'));var querystring=require(_0x68b2('0xf'));var Papa=require('papaparse');var Redis=require(_0x68b2('0x10'));var authService=require(_0x68b2('0x11'));var qs=require(_0x68b2('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x68b2('0x13'));var logger=require('../../config/logger')(_0x68b2('0x14'));var utils=require('../../config/utils');var config=require(_0x68b2('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x68b2('0x16'))['db'];function respondWithStatusCode(_0x2ef86a,_0x4c97e6){_0x4c97e6=_0x4c97e6||0xcc;return function(_0x4946f0){if(_0x4946f0){return _0x2ef86a[_0x68b2('0x17')](_0x4c97e6);}return _0x2ef86a['status'](_0x4c97e6)[_0x68b2('0x18')]();};}function respondWithResult(_0x2ac89a,_0x57c47c){_0x57c47c=_0x57c47c||0xc8;return function(_0x3cc327){if(_0x3cc327){return _0x2ac89a[_0x68b2('0x19')](_0x57c47c)[_0x68b2('0x1a')](_0x3cc327);}};}function respondWithFilteredResult(_0x1fce0d,_0x504337){return function(_0x122e48){if(_0x122e48){var _0x4440e9=typeof _0x504337[_0x68b2('0x1b')]===_0x68b2('0x1c')&&typeof _0x504337[_0x68b2('0x1d')]==='undefined';var _0x15a0a2=_0x122e48['count'];var _0x17c9dd=_0x4440e9?0x0:_0x504337['offset'];var _0x1f3352=_0x4440e9?_0x122e48[_0x68b2('0x1e')]:_0x504337['offset']+_0x504337[_0x68b2('0x1d')];var _0x4a4a94;if(_0x1f3352>=_0x15a0a2){_0x1f3352=_0x15a0a2;_0x4a4a94=0xc8;}else{_0x4a4a94=0xce;}_0x1fce0d[_0x68b2('0x19')](_0x4a4a94);return _0x1fce0d[_0x68b2('0x1f')]('Content-Range',_0x17c9dd+'-'+_0x1f3352+'/'+_0x15a0a2)[_0x68b2('0x1a')](_0x122e48);}return null;};}function patchUpdates(_0x48066f){return function(_0x10c6f7){try{jsonpatch[_0x68b2('0x20')](_0x10c6f7,_0x48066f,!![]);}catch(_0x32ae9e){return BPromise[_0x68b2('0x21')](_0x32ae9e);}return _0x10c6f7['save']();};}function saveUpdates(_0x175fee,_0x55d3c6){return function(_0x49ed6b){if(_0x49ed6b){return _0x49ed6b[_0x68b2('0x22')](_0x175fee)['then'](function(_0x5e3c7f){return _0x5e3c7f;});}return null;};}function removeEntity(_0x2ff66f,_0x401efb){return function(_0x15840b){if(_0x15840b){return _0x15840b['destroy']()[_0x68b2('0x23')](function(){_0x2ff66f[_0x68b2('0x19')](0xcc)[_0x68b2('0x18')]();});}};}function handleEntityNotFound(_0x34c68a,_0x176f12){return function(_0x40914c){if(!_0x40914c){_0x34c68a[_0x68b2('0x17')](0x194);}return _0x40914c;};}function handleError(_0x2900bb,_0x1d14ca){_0x1d14ca=_0x1d14ca||0x1f4;return function(_0xd4b932){logger[_0x68b2('0x24')](_0xd4b932[_0x68b2('0x25')]);if(_0xd4b932[_0x68b2('0x26')]){delete _0xd4b932[_0x68b2('0x26')];}_0x2900bb[_0x68b2('0x19')](_0x1d14ca)[_0x68b2('0x27')](_0xd4b932);};}exports[_0x68b2('0x28')]=function(_0x9d515f,_0x259db1){var _0x4c788e={},_0x10c866={},_0x5b5dfb={'count':0x0,'rows':[]};var _0x4d71a1=_[_0x68b2('0x29')](db['ServicenowConfiguration'][_0x68b2('0x2a')],function(_0x30527c){return{'name':_0x30527c[_0x68b2('0x2b')],'type':_0x30527c['type'][_0x68b2('0x2c')]};});_0x10c866[_0x68b2('0x2d')]=_['map'](_0x4d71a1,_0x68b2('0x26'));_0x10c866[_0x68b2('0x2e')]=_['keys'](_0x9d515f[_0x68b2('0x2e')]);_0x10c866[_0x68b2('0x2f')]=_[_0x68b2('0x30')](_0x10c866[_0x68b2('0x2d')],_0x10c866['query']);_0x4c788e[_0x68b2('0x31')]=_[_0x68b2('0x30')](_0x10c866[_0x68b2('0x2d')],qs[_0x68b2('0x32')](_0x9d515f['query']['fields']));_0x4c788e[_0x68b2('0x31')]=_0x4c788e[_0x68b2('0x31')][_0x68b2('0x33')]?_0x4c788e[_0x68b2('0x31')]:_0x10c866[_0x68b2('0x2d')];if(!_0x9d515f['query'][_0x68b2('0x34')](_0x68b2('0x35'))){_0x4c788e[_0x68b2('0x1d')]=qs[_0x68b2('0x1d')](_0x9d515f['query'][_0x68b2('0x1d')]);_0x4c788e[_0x68b2('0x1b')]=qs[_0x68b2('0x1b')](_0x9d515f[_0x68b2('0x2e')]['offset']);}_0x4c788e[_0x68b2('0x36')]=qs[_0x68b2('0x37')](_0x9d515f[_0x68b2('0x2e')][_0x68b2('0x37')]);_0x4c788e['where']=qs[_0x68b2('0x2f')](_[_0x68b2('0x38')](_0x9d515f[_0x68b2('0x2e')],_0x10c866[_0x68b2('0x2f')]),_0x4d71a1);if(_0x9d515f[_0x68b2('0x2e')][_0x68b2('0x39')]){_0x4c788e[_0x68b2('0x3a')]=_[_0x68b2('0x3b')](_0x4c788e[_0x68b2('0x3a')],{'$or':_[_0x68b2('0x29')](_0x4d71a1,function(_0x23934b){if(_0x23934b[_0x68b2('0x3c')]!==_0x68b2('0x3d')){var _0x491057={};_0x491057[_0x23934b[_0x68b2('0x26')]]={'$like':'%'+_0x9d515f['query'][_0x68b2('0x39')]+'%'};return _0x491057;}})});}_0x4c788e=_['merge']({},_0x4c788e,_0x9d515f[_0x68b2('0x3e')]);var _0x2057cd={'where':_0x4c788e[_0x68b2('0x3a')]};return db[_0x68b2('0x3f')]['count'](_0x2057cd)[_0x68b2('0x23')](function(_0x1d93b6){_0x5b5dfb[_0x68b2('0x1e')]=_0x1d93b6;if(_0x9d515f['query'][_0x68b2('0x40')]){_0x4c788e[_0x68b2('0x41')]=[{'all':!![]}];}return db[_0x68b2('0x3f')][_0x68b2('0x42')](_0x4c788e);})[_0x68b2('0x23')](function(_0x4847fc){_0x5b5dfb[_0x68b2('0x43')]=_0x4847fc;return _0x5b5dfb;})['then'](respondWithFilteredResult(_0x259db1,_0x4c788e))['catch'](handleError(_0x259db1,null));};exports[_0x68b2('0x44')]=function(_0x1d6187,_0x492d51){var _0x1b268f={'raw':![],'where':{'id':_0x1d6187[_0x68b2('0x45')]['id']}},_0x5dcdd4={};_0x5dcdd4[_0x68b2('0x2d')]=_['keys'](db[_0x68b2('0x3f')]['rawAttributes']);_0x5dcdd4[_0x68b2('0x2e')]=_[_0x68b2('0x46')](_0x1d6187[_0x68b2('0x2e')]);_0x5dcdd4[_0x68b2('0x2f')]=_['intersection'](_0x5dcdd4[_0x68b2('0x2d')],_0x5dcdd4['query']);_0x1b268f[_0x68b2('0x31')]=_[_0x68b2('0x30')](_0x5dcdd4[_0x68b2('0x2d')],qs[_0x68b2('0x32')](_0x1d6187[_0x68b2('0x2e')]['fields']));_0x1b268f[_0x68b2('0x31')]=_0x1b268f[_0x68b2('0x31')][_0x68b2('0x33')]?_0x1b268f[_0x68b2('0x31')]:_0x5dcdd4[_0x68b2('0x2d')];if(_0x1d6187[_0x68b2('0x2e')][_0x68b2('0x40')]){_0x1b268f[_0x68b2('0x41')]=[{'all':!![]}];}_0x1b268f=_[_0x68b2('0x3b')]({},_0x1b268f,_0x1d6187[_0x68b2('0x3e')]);return db[_0x68b2('0x3f')]['find'](_0x1b268f)['then'](handleEntityNotFound(_0x492d51,null))['then'](respondWithResult(_0x492d51,null))[_0x68b2('0x47')](handleError(_0x492d51,null));};exports[_0x68b2('0x48')]=function(_0xfec73d,_0x2f3a71){return db[_0x68b2('0x3f')][_0x68b2('0x48')](_0xfec73d[_0x68b2('0x49')],{})[_0x68b2('0x23')](respondWithResult(_0x2f3a71,0xc9))['catch'](handleError(_0x2f3a71,null));};exports[_0x68b2('0x22')]=function(_0xbe18a,_0x1a9618){if(_0xbe18a['body']['id']){delete _0xbe18a['body']['id'];}return db[_0x68b2('0x3f')][_0x68b2('0x4a')]({'where':{'id':_0xbe18a[_0x68b2('0x45')]['id']}})[_0x68b2('0x23')](handleEntityNotFound(_0x1a9618,null))[_0x68b2('0x23')](saveUpdates(_0xbe18a[_0x68b2('0x49')],null))['then'](respondWithResult(_0x1a9618,null))['catch'](handleError(_0x1a9618,null));};exports[_0x68b2('0x4b')]=function(_0x22d6bf,_0x29a0f8){return db[_0x68b2('0x3f')][_0x68b2('0x4a')]({'where':{'id':_0x22d6bf[_0x68b2('0x45')]['id']}})[_0x68b2('0x23')](handleEntityNotFound(_0x29a0f8,null))[_0x68b2('0x23')](removeEntity(_0x29a0f8,null))[_0x68b2('0x47')](handleError(_0x29a0f8,null));};exports[_0x68b2('0x4c')]=function(_0x36ca81,_0x325a72,_0x4b6187){var _0x10e626={};var _0x4860e1={};var _0x334456;var _0x31d9bf;return db[_0x68b2('0x3f')][_0x68b2('0x4d')]({'where':{'id':_0x36ca81[_0x68b2('0x45')]['id']}})[_0x68b2('0x23')](handleEntityNotFound(_0x325a72,null))[_0x68b2('0x23')](function(_0x20683f){if(_0x20683f){_0x334456=_0x20683f;_0x4860e1[_0x68b2('0x2d')]=_[_0x68b2('0x46')](db[_0x68b2('0x4e')][_0x68b2('0x2a')]);_0x4860e1[_0x68b2('0x2e')]=_[_0x68b2('0x46')](_0x36ca81[_0x68b2('0x2e')]);_0x4860e1['filters']=_['intersection'](_0x4860e1[_0x68b2('0x2d')],_0x4860e1[_0x68b2('0x2e')]);_0x10e626[_0x68b2('0x31')]=_['intersection'](_0x4860e1[_0x68b2('0x2d')],qs[_0x68b2('0x32')](_0x36ca81[_0x68b2('0x2e')][_0x68b2('0x32')]));_0x10e626[_0x68b2('0x31')]=_0x10e626[_0x68b2('0x31')][_0x68b2('0x33')]?_0x10e626['attributes']:_0x4860e1['model'];_0x10e626['order']=qs[_0x68b2('0x37')](_0x36ca81['query'][_0x68b2('0x37')]);_0x10e626[_0x68b2('0x3a')]=qs[_0x68b2('0x2f')](_[_0x68b2('0x38')](_0x36ca81['query'],_0x4860e1['filters']));if(_0x36ca81[_0x68b2('0x2e')][_0x68b2('0x39')]){_0x10e626[_0x68b2('0x3a')]=_[_0x68b2('0x3b')](_0x10e626['where'],{'$or':_['map'](_0x10e626[_0x68b2('0x31')],function(_0xc10e0b){var _0x265013={};_0x265013[_0xc10e0b]={'$like':'%'+_0x36ca81[_0x68b2('0x2e')]['filter']+'%'};return _0x265013;})});}_0x10e626=_[_0x68b2('0x3b')]({},_0x10e626,_0x36ca81['options']);return _0x334456[_0x68b2('0x4c')](_0x10e626);}})['then'](function(_0x229d03){if(_0x229d03){_0x31d9bf=_0x229d03[_0x68b2('0x33')];if(!_0x36ca81[_0x68b2('0x2e')][_0x68b2('0x34')](_0x68b2('0x35'))){_0x10e626[_0x68b2('0x1d')]=qs[_0x68b2('0x1d')](_0x36ca81['query']['limit']);_0x10e626[_0x68b2('0x1b')]=qs['offset'](_0x36ca81[_0x68b2('0x2e')]['offset']);}return _0x334456[_0x68b2('0x4c')](_0x10e626);}})[_0x68b2('0x23')](function(_0x265f8f){if(_0x265f8f){return _0x265f8f?{'count':_0x31d9bf,'rows':_0x265f8f}:null;}})['then'](respondWithResult(_0x325a72,null))[_0x68b2('0x47')](handleError(_0x325a72,null));};exports['getSubjects']=function(_0x40f650,_0x38f56d,_0x28a57f){var _0x3e61a={};var _0x2a5b39={};var _0x2ec6e5;var _0x20bd9f;return db[_0x68b2('0x3f')][_0x68b2('0x4d')]({'where':{'id':_0x40f650[_0x68b2('0x45')]['id']}})[_0x68b2('0x23')](handleEntityNotFound(_0x38f56d,null))[_0x68b2('0x23')](function(_0x25b50e){if(_0x25b50e){_0x2ec6e5=_0x25b50e;_0x2a5b39[_0x68b2('0x2d')]=_[_0x68b2('0x46')](db['ServicenowField'][_0x68b2('0x2a')]);_0x2a5b39[_0x68b2('0x2e')]=_[_0x68b2('0x46')](_0x40f650['query']);_0x2a5b39[_0x68b2('0x2f')]=_[_0x68b2('0x30')](_0x2a5b39['model'],_0x2a5b39['query']);_0x3e61a[_0x68b2('0x31')]=_['intersection'](_0x2a5b39[_0x68b2('0x2d')],qs['fields'](_0x40f650['query'][_0x68b2('0x32')]));_0x3e61a[_0x68b2('0x31')]=_0x3e61a[_0x68b2('0x31')][_0x68b2('0x33')]?_0x3e61a['attributes']:_0x2a5b39['model'];_0x3e61a[_0x68b2('0x36')]=qs['sort'](_0x40f650['query'][_0x68b2('0x37')]);_0x3e61a[_0x68b2('0x3a')]=qs['filters'](_['pick'](_0x40f650[_0x68b2('0x2e')],_0x2a5b39[_0x68b2('0x2f')]));if(_0x40f650[_0x68b2('0x2e')]['filter']){_0x3e61a[_0x68b2('0x3a')]=_[_0x68b2('0x3b')](_0x3e61a[_0x68b2('0x3a')],{'$or':_[_0x68b2('0x29')](_0x3e61a[_0x68b2('0x31')],function(_0x3abf6f){var _0x2ee6c7={};_0x2ee6c7[_0x3abf6f]={'$like':'%'+_0x40f650['query'][_0x68b2('0x39')]+'%'};return _0x2ee6c7;})});}_0x3e61a=_[_0x68b2('0x3b')]({},_0x3e61a,_0x40f650['options']);return _0x2ec6e5[_0x68b2('0x4f')](_0x3e61a);}})[_0x68b2('0x23')](function(_0x125b76){if(_0x125b76){_0x20bd9f=_0x125b76[_0x68b2('0x33')];if(!_0x40f650[_0x68b2('0x2e')][_0x68b2('0x34')](_0x68b2('0x35'))){_0x3e61a[_0x68b2('0x1d')]=qs[_0x68b2('0x1d')](_0x40f650[_0x68b2('0x2e')][_0x68b2('0x1d')]);_0x3e61a['offset']=qs[_0x68b2('0x1b')](_0x40f650[_0x68b2('0x2e')]['offset']);}return _0x2ec6e5[_0x68b2('0x4f')](_0x3e61a);}})[_0x68b2('0x23')](function(_0x5578cf){if(_0x5578cf){return _0x5578cf?{'count':_0x20bd9f,'rows':_0x5578cf}:null;}})[_0x68b2('0x23')](respondWithResult(_0x38f56d,null))[_0x68b2('0x47')](handleError(_0x38f56d,null));};exports[_0x68b2('0x50')]=function(_0x4bbe39,_0x27a48a,_0x3592ce){var _0x56e49d={};var _0x2c30f8={};var _0x123de8;var _0x6fd079;return db[_0x68b2('0x3f')]['findOne']({'where':{'id':_0x4bbe39['params']['id']}})['then'](handleEntityNotFound(_0x27a48a,null))[_0x68b2('0x23')](function(_0x2080e1){if(_0x2080e1){_0x123de8=_0x2080e1;_0x2c30f8[_0x68b2('0x2d')]=_[_0x68b2('0x46')](db[_0x68b2('0x4e')]['rawAttributes']);_0x2c30f8[_0x68b2('0x2e')]=_[_0x68b2('0x46')](_0x4bbe39[_0x68b2('0x2e')]);_0x2c30f8['filters']=_['intersection'](_0x2c30f8[_0x68b2('0x2d')],_0x2c30f8[_0x68b2('0x2e')]);_0x56e49d[_0x68b2('0x31')]=_['intersection'](_0x2c30f8[_0x68b2('0x2d')],qs['fields'](_0x4bbe39['query']['fields']));_0x56e49d[_0x68b2('0x31')]=_0x56e49d['attributes'][_0x68b2('0x33')]?_0x56e49d[_0x68b2('0x31')]:_0x2c30f8['model'];_0x56e49d[_0x68b2('0x36')]=qs['sort'](_0x4bbe39['query'][_0x68b2('0x37')]);_0x56e49d[_0x68b2('0x3a')]=qs[_0x68b2('0x2f')](_[_0x68b2('0x38')](_0x4bbe39[_0x68b2('0x2e')],_0x2c30f8['filters']));if(_0x4bbe39[_0x68b2('0x2e')][_0x68b2('0x39')]){_0x56e49d['where']=_[_0x68b2('0x3b')](_0x56e49d[_0x68b2('0x3a')],{'$or':_['map'](_0x56e49d[_0x68b2('0x31')],function(_0x434b11){var _0x1ecf13={};_0x1ecf13[_0x434b11]={'$like':'%'+_0x4bbe39[_0x68b2('0x2e')][_0x68b2('0x39')]+'%'};return _0x1ecf13;})});}_0x56e49d=_['merge']({},_0x56e49d,_0x4bbe39[_0x68b2('0x3e')]);return _0x123de8[_0x68b2('0x50')](_0x56e49d);}})[_0x68b2('0x23')](function(_0x48a82a){if(_0x48a82a){_0x6fd079=_0x48a82a[_0x68b2('0x33')];if(!_0x4bbe39[_0x68b2('0x2e')][_0x68b2('0x34')](_0x68b2('0x35'))){_0x56e49d[_0x68b2('0x1d')]=qs[_0x68b2('0x1d')](_0x4bbe39[_0x68b2('0x2e')]['limit']);_0x56e49d[_0x68b2('0x1b')]=qs[_0x68b2('0x1b')](_0x4bbe39[_0x68b2('0x2e')][_0x68b2('0x1b')]);}return _0x123de8[_0x68b2('0x50')](_0x56e49d);}})['then'](function(_0x3d0e7b){if(_0x3d0e7b){return _0x3d0e7b?{'count':_0x6fd079,'rows':_0x3d0e7b}:null;}})[_0x68b2('0x23')](respondWithResult(_0x27a48a,null))[_0x68b2('0x47')](handleError(_0x27a48a,null));};
\ No newline at end of file
+var _0xd2ac=['squel','crypto','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','reject','save','then','destroy','error','stack','name','send','index','map','ServicenowConfiguration','rawAttributes','type','key','query','keys','filters','attributes','intersection','model','fields','length','hasOwnProperty','nolimit','order','sort','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','find','create','body','update','params','getFields','findOne','ServicenowField','pick','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash'];(function(_0x109498,_0x47df19){var _0x5c235=function(_0x48c835){while(--_0x48c835){_0x109498['push'](_0x109498['shift']());}};_0x5c235(++_0x47df19);}(_0xd2ac,0x13f));var _0xcd2a=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xd2ac[_0x14add3];return _0x4a174f;};'use strict';var emlformat=require(_0xcd2a('0x0'));var rimraf=require(_0xcd2a('0x1'));var zipdir=require(_0xcd2a('0x2'));var jsonpatch=require(_0xcd2a('0x3'));var rp=require(_0xcd2a('0x4'));var moment=require('moment');var BPromise=require(_0xcd2a('0x5'));var Mustache=require(_0xcd2a('0x6'));var util=require(_0xcd2a('0x7'));var path=require('path');var sox=require(_0xcd2a('0x8'));var csv=require(_0xcd2a('0x9'));var ejs=require(_0xcd2a('0xa'));var fs=require('fs');var fs_extra=require(_0xcd2a('0xb'));var _=require(_0xcd2a('0xc'));var squel=require(_0xcd2a('0xd'));var crypto=require(_0xcd2a('0xe'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xcd2a('0xf'));var Papa=require('papaparse');var Redis=require(_0xcd2a('0x10'));var authService=require(_0xcd2a('0x11'));var qs=require(_0xcd2a('0x12'));var as=require(_0xcd2a('0x13'));var hardwareService=require(_0xcd2a('0x14'));var logger=require('../../config/logger')(_0xcd2a('0x15'));var utils=require(_0xcd2a('0x16'));var config=require(_0xcd2a('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xcd2a('0x18'))['db'];function respondWithStatusCode(_0x119ad2,_0x4d78ed){_0x4d78ed=_0x4d78ed||0xcc;return function(_0x338832){if(_0x338832){return _0x119ad2[_0xcd2a('0x19')](_0x4d78ed);}return _0x119ad2['status'](_0x4d78ed)[_0xcd2a('0x1a')]();};}function respondWithResult(_0x379af9,_0xf78c76){_0xf78c76=_0xf78c76||0xc8;return function(_0x4d60c9){if(_0x4d60c9){return _0x379af9[_0xcd2a('0x1b')](_0xf78c76)[_0xcd2a('0x1c')](_0x4d60c9);}};}function respondWithFilteredResult(_0x1a2a89,_0x24d6fd){return function(_0xd6f58){if(_0xd6f58){var _0x5c6374=typeof _0x24d6fd[_0xcd2a('0x1d')]===_0xcd2a('0x1e')&&typeof _0x24d6fd[_0xcd2a('0x1f')]==='undefined';var _0x55381d=_0xd6f58['count'];var _0x4bedde=_0x5c6374?0x0:_0x24d6fd[_0xcd2a('0x1d')];var _0x14f710=_0x5c6374?_0xd6f58[_0xcd2a('0x20')]:_0x24d6fd[_0xcd2a('0x1d')]+_0x24d6fd[_0xcd2a('0x1f')];var _0x2369d5;if(_0x14f710>=_0x55381d){_0x14f710=_0x55381d;_0x2369d5=0xc8;}else{_0x2369d5=0xce;}_0x1a2a89[_0xcd2a('0x1b')](_0x2369d5);return _0x1a2a89[_0xcd2a('0x21')](_0xcd2a('0x22'),_0x4bedde+'-'+_0x14f710+'/'+_0x55381d)[_0xcd2a('0x1c')](_0xd6f58);}return null;};}function patchUpdates(_0x4a05ce){return function(_0x4a9fb4){try{jsonpatch['apply'](_0x4a9fb4,_0x4a05ce,!![]);}catch(_0x25c026){return BPromise[_0xcd2a('0x23')](_0x25c026);}return _0x4a9fb4[_0xcd2a('0x24')]();};}function saveUpdates(_0x504931,_0x23a0f7){return function(_0x4e3217){if(_0x4e3217){return _0x4e3217['update'](_0x504931)[_0xcd2a('0x25')](function(_0x3337c0){return _0x3337c0;});}return null;};}function removeEntity(_0x18a92f,_0x2d249e){return function(_0x2abfb1){if(_0x2abfb1){return _0x2abfb1[_0xcd2a('0x26')]()['then'](function(){_0x18a92f[_0xcd2a('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x51a052,_0xef60be){return function(_0x16a213){if(!_0x16a213){_0x51a052[_0xcd2a('0x19')](0x194);}return _0x16a213;};}function handleError(_0x42835f,_0x5cb3ca){_0x5cb3ca=_0x5cb3ca||0x1f4;return function(_0x4208e3){logger[_0xcd2a('0x27')](_0x4208e3[_0xcd2a('0x28')]);if(_0x4208e3[_0xcd2a('0x29')]){delete _0x4208e3['name'];}_0x42835f[_0xcd2a('0x1b')](_0x5cb3ca)[_0xcd2a('0x2a')](_0x4208e3);};}exports[_0xcd2a('0x2b')]=function(_0x12b5d9,_0x4d4639){var _0x351a86={},_0x2f2bca={},_0x28b61f={'count':0x0,'rows':[]};var _0x5c87ce=_[_0xcd2a('0x2c')](db[_0xcd2a('0x2d')][_0xcd2a('0x2e')],function(_0x3b97da){return{'name':_0x3b97da['fieldName'],'type':_0x3b97da[_0xcd2a('0x2f')][_0xcd2a('0x30')]};});_0x2f2bca['model']=_[_0xcd2a('0x2c')](_0x5c87ce,_0xcd2a('0x29'));_0x2f2bca[_0xcd2a('0x31')]=_[_0xcd2a('0x32')](_0x12b5d9[_0xcd2a('0x31')]);_0x2f2bca[_0xcd2a('0x33')]=_['intersection'](_0x2f2bca['model'],_0x2f2bca[_0xcd2a('0x31')]);_0x351a86[_0xcd2a('0x34')]=_[_0xcd2a('0x35')](_0x2f2bca[_0xcd2a('0x36')],qs[_0xcd2a('0x37')](_0x12b5d9[_0xcd2a('0x31')][_0xcd2a('0x37')]));_0x351a86[_0xcd2a('0x34')]=_0x351a86[_0xcd2a('0x34')][_0xcd2a('0x38')]?_0x351a86[_0xcd2a('0x34')]:_0x2f2bca[_0xcd2a('0x36')];if(!_0x12b5d9[_0xcd2a('0x31')][_0xcd2a('0x39')](_0xcd2a('0x3a'))){_0x351a86[_0xcd2a('0x1f')]=qs[_0xcd2a('0x1f')](_0x12b5d9[_0xcd2a('0x31')]['limit']);_0x351a86[_0xcd2a('0x1d')]=qs['offset'](_0x12b5d9[_0xcd2a('0x31')][_0xcd2a('0x1d')]);}_0x351a86[_0xcd2a('0x3b')]=qs[_0xcd2a('0x3c')](_0x12b5d9[_0xcd2a('0x31')][_0xcd2a('0x3c')]);_0x351a86['where']=qs[_0xcd2a('0x33')](_['pick'](_0x12b5d9[_0xcd2a('0x31')],_0x2f2bca['filters']),_0x5c87ce);if(_0x12b5d9[_0xcd2a('0x31')][_0xcd2a('0x3d')]){_0x351a86[_0xcd2a('0x3e')]=_[_0xcd2a('0x3f')](_0x351a86[_0xcd2a('0x3e')],{'$or':_[_0xcd2a('0x2c')](_0x5c87ce,function(_0x287ac){if(_0x287ac[_0xcd2a('0x2f')]!==_0xcd2a('0x40')){var _0xc50d2d={};_0xc50d2d[_0x287ac[_0xcd2a('0x29')]]={'$like':'%'+_0x12b5d9[_0xcd2a('0x31')][_0xcd2a('0x3d')]+'%'};return _0xc50d2d;}})});}_0x351a86=_['merge']({},_0x351a86,_0x12b5d9[_0xcd2a('0x41')]);var _0x13ffc3={'where':_0x351a86[_0xcd2a('0x3e')]};return db['ServicenowConfiguration'][_0xcd2a('0x20')](_0x13ffc3)[_0xcd2a('0x25')](function(_0x209d8e){_0x28b61f[_0xcd2a('0x20')]=_0x209d8e;if(_0x12b5d9['query'][_0xcd2a('0x42')]){_0x351a86[_0xcd2a('0x43')]=[{'all':!![]}];}return db[_0xcd2a('0x2d')][_0xcd2a('0x44')](_0x351a86);})['then'](function(_0x11dd2f){_0x28b61f[_0xcd2a('0x45')]=_0x11dd2f;return _0x28b61f;})['then'](respondWithFilteredResult(_0x4d4639,_0x351a86))[_0xcd2a('0x46')](handleError(_0x4d4639,null));};exports[_0xcd2a('0x47')]=function(_0x4d1fc8,_0x299853){var _0x103548={'raw':![],'where':{'id':_0x4d1fc8['params']['id']}},_0x5bc0b9={};_0x5bc0b9[_0xcd2a('0x36')]=_['keys'](db['ServicenowConfiguration'][_0xcd2a('0x2e')]);_0x5bc0b9[_0xcd2a('0x31')]=_[_0xcd2a('0x32')](_0x4d1fc8[_0xcd2a('0x31')]);_0x5bc0b9[_0xcd2a('0x33')]=_[_0xcd2a('0x35')](_0x5bc0b9['model'],_0x5bc0b9[_0xcd2a('0x31')]);_0x103548[_0xcd2a('0x34')]=_[_0xcd2a('0x35')](_0x5bc0b9[_0xcd2a('0x36')],qs[_0xcd2a('0x37')](_0x4d1fc8['query'][_0xcd2a('0x37')]));_0x103548[_0xcd2a('0x34')]=_0x103548[_0xcd2a('0x34')][_0xcd2a('0x38')]?_0x103548[_0xcd2a('0x34')]:_0x5bc0b9['model'];if(_0x4d1fc8[_0xcd2a('0x31')][_0xcd2a('0x42')]){_0x103548['include']=[{'all':!![]}];}_0x103548=_[_0xcd2a('0x3f')]({},_0x103548,_0x4d1fc8[_0xcd2a('0x41')]);return db[_0xcd2a('0x2d')][_0xcd2a('0x48')](_0x103548)[_0xcd2a('0x25')](handleEntityNotFound(_0x299853,null))[_0xcd2a('0x25')](respondWithResult(_0x299853,null))[_0xcd2a('0x46')](handleError(_0x299853,null));};exports[_0xcd2a('0x49')]=function(_0x3dc574,_0x5b386c){return db[_0xcd2a('0x2d')]['create'](_0x3dc574[_0xcd2a('0x4a')],{})[_0xcd2a('0x25')](respondWithResult(_0x5b386c,0xc9))[_0xcd2a('0x46')](handleError(_0x5b386c,null));};exports[_0xcd2a('0x4b')]=function(_0x3d1edc,_0x3c9270){if(_0x3d1edc['body']['id']){delete _0x3d1edc[_0xcd2a('0x4a')]['id'];}return db[_0xcd2a('0x2d')][_0xcd2a('0x48')]({'where':{'id':_0x3d1edc[_0xcd2a('0x4c')]['id']}})['then'](handleEntityNotFound(_0x3c9270,null))[_0xcd2a('0x25')](saveUpdates(_0x3d1edc[_0xcd2a('0x4a')],null))[_0xcd2a('0x25')](respondWithResult(_0x3c9270,null))[_0xcd2a('0x46')](handleError(_0x3c9270,null));};exports[_0xcd2a('0x26')]=function(_0x48d1ba,_0x51ea0a){return db[_0xcd2a('0x2d')][_0xcd2a('0x48')]({'where':{'id':_0x48d1ba[_0xcd2a('0x4c')]['id']}})['then'](handleEntityNotFound(_0x51ea0a,null))['then'](removeEntity(_0x51ea0a,null))[_0xcd2a('0x46')](handleError(_0x51ea0a,null));};exports[_0xcd2a('0x4d')]=function(_0x2a29dd,_0x50eaf8,_0x233d0e){var _0x240e8d={};var _0x187bc5={};var _0x447d10;var _0x3af98b;return db[_0xcd2a('0x2d')][_0xcd2a('0x4e')]({'where':{'id':_0x2a29dd[_0xcd2a('0x4c')]['id']}})[_0xcd2a('0x25')](handleEntityNotFound(_0x50eaf8,null))[_0xcd2a('0x25')](function(_0x37ede8){if(_0x37ede8){_0x447d10=_0x37ede8;_0x187bc5['model']=_[_0xcd2a('0x32')](db[_0xcd2a('0x4f')]['rawAttributes']);_0x187bc5['query']=_[_0xcd2a('0x32')](_0x2a29dd[_0xcd2a('0x31')]);_0x187bc5[_0xcd2a('0x33')]=_[_0xcd2a('0x35')](_0x187bc5[_0xcd2a('0x36')],_0x187bc5[_0xcd2a('0x31')]);_0x240e8d[_0xcd2a('0x34')]=_[_0xcd2a('0x35')](_0x187bc5[_0xcd2a('0x36')],qs['fields'](_0x2a29dd[_0xcd2a('0x31')][_0xcd2a('0x37')]));_0x240e8d[_0xcd2a('0x34')]=_0x240e8d[_0xcd2a('0x34')][_0xcd2a('0x38')]?_0x240e8d[_0xcd2a('0x34')]:_0x187bc5[_0xcd2a('0x36')];_0x240e8d[_0xcd2a('0x3b')]=qs[_0xcd2a('0x3c')](_0x2a29dd[_0xcd2a('0x31')][_0xcd2a('0x3c')]);_0x240e8d[_0xcd2a('0x3e')]=qs[_0xcd2a('0x33')](_[_0xcd2a('0x50')](_0x2a29dd['query'],_0x187bc5[_0xcd2a('0x33')]));if(_0x2a29dd['query']['filter']){_0x240e8d[_0xcd2a('0x3e')]=_[_0xcd2a('0x3f')](_0x240e8d[_0xcd2a('0x3e')],{'$or':_[_0xcd2a('0x2c')](_0x240e8d[_0xcd2a('0x34')],function(_0x5f4e4b){var _0x4d716d={};_0x4d716d[_0x5f4e4b]={'$like':'%'+_0x2a29dd[_0xcd2a('0x31')]['filter']+'%'};return _0x4d716d;})});}_0x240e8d=_['merge']({},_0x240e8d,_0x2a29dd[_0xcd2a('0x41')]);return _0x447d10['getFields'](_0x240e8d);}})[_0xcd2a('0x25')](function(_0x3e4df1){if(_0x3e4df1){_0x3af98b=_0x3e4df1['length'];if(!_0x2a29dd[_0xcd2a('0x31')]['hasOwnProperty']('nolimit')){_0x240e8d[_0xcd2a('0x1f')]=qs[_0xcd2a('0x1f')](_0x2a29dd[_0xcd2a('0x31')][_0xcd2a('0x1f')]);_0x240e8d[_0xcd2a('0x1d')]=qs['offset'](_0x2a29dd[_0xcd2a('0x31')][_0xcd2a('0x1d')]);}return _0x447d10[_0xcd2a('0x4d')](_0x240e8d);}})[_0xcd2a('0x25')](function(_0x384658){if(_0x384658){return _0x384658?{'count':_0x3af98b,'rows':_0x384658}:null;}})[_0xcd2a('0x25')](respondWithResult(_0x50eaf8,null))[_0xcd2a('0x46')](handleError(_0x50eaf8,null));};exports[_0xcd2a('0x51')]=function(_0x2972df,_0x538952,_0x324bf3){var _0x5be53e={};var _0x3dabc9={};var _0x5b6efc;var _0x48c67a;return db[_0xcd2a('0x2d')][_0xcd2a('0x4e')]({'where':{'id':_0x2972df[_0xcd2a('0x4c')]['id']}})[_0xcd2a('0x25')](handleEntityNotFound(_0x538952,null))[_0xcd2a('0x25')](function(_0x94deea){if(_0x94deea){_0x5b6efc=_0x94deea;_0x3dabc9[_0xcd2a('0x36')]=_[_0xcd2a('0x32')](db[_0xcd2a('0x4f')][_0xcd2a('0x2e')]);_0x3dabc9[_0xcd2a('0x31')]=_[_0xcd2a('0x32')](_0x2972df[_0xcd2a('0x31')]);_0x3dabc9[_0xcd2a('0x33')]=_['intersection'](_0x3dabc9['model'],_0x3dabc9[_0xcd2a('0x31')]);_0x5be53e['attributes']=_[_0xcd2a('0x35')](_0x3dabc9[_0xcd2a('0x36')],qs[_0xcd2a('0x37')](_0x2972df[_0xcd2a('0x31')][_0xcd2a('0x37')]));_0x5be53e['attributes']=_0x5be53e[_0xcd2a('0x34')][_0xcd2a('0x38')]?_0x5be53e[_0xcd2a('0x34')]:_0x3dabc9[_0xcd2a('0x36')];_0x5be53e['order']=qs[_0xcd2a('0x3c')](_0x2972df[_0xcd2a('0x31')][_0xcd2a('0x3c')]);_0x5be53e[_0xcd2a('0x3e')]=qs['filters'](_[_0xcd2a('0x50')](_0x2972df[_0xcd2a('0x31')],_0x3dabc9['filters']));if(_0x2972df[_0xcd2a('0x31')][_0xcd2a('0x3d')]){_0x5be53e['where']=_[_0xcd2a('0x3f')](_0x5be53e[_0xcd2a('0x3e')],{'$or':_['map'](_0x5be53e[_0xcd2a('0x34')],function(_0x483ba7){var _0x261c33={};_0x261c33[_0x483ba7]={'$like':'%'+_0x2972df['query']['filter']+'%'};return _0x261c33;})});}_0x5be53e=_[_0xcd2a('0x3f')]({},_0x5be53e,_0x2972df[_0xcd2a('0x41')]);return _0x5b6efc['getSubjects'](_0x5be53e);}})['then'](function(_0x578889){if(_0x578889){_0x48c67a=_0x578889[_0xcd2a('0x38')];if(!_0x2972df[_0xcd2a('0x31')]['hasOwnProperty']('nolimit')){_0x5be53e[_0xcd2a('0x1f')]=qs[_0xcd2a('0x1f')](_0x2972df[_0xcd2a('0x31')][_0xcd2a('0x1f')]);_0x5be53e[_0xcd2a('0x1d')]=qs[_0xcd2a('0x1d')](_0x2972df[_0xcd2a('0x31')]['offset']);}return _0x5b6efc[_0xcd2a('0x51')](_0x5be53e);}})[_0xcd2a('0x25')](function(_0x222bea){if(_0x222bea){return _0x222bea?{'count':_0x48c67a,'rows':_0x222bea}:null;}})['then'](respondWithResult(_0x538952,null))[_0xcd2a('0x46')](handleError(_0x538952,null));};exports[_0xcd2a('0x52')]=function(_0x32ab74,_0x2767a3,_0x8ac693){var _0x4d43bc={};var _0x229d3a={};var _0x50575c;var _0x3b90c9;return db[_0xcd2a('0x2d')]['findOne']({'where':{'id':_0x32ab74[_0xcd2a('0x4c')]['id']}})['then'](handleEntityNotFound(_0x2767a3,null))[_0xcd2a('0x25')](function(_0x1777a6){if(_0x1777a6){_0x50575c=_0x1777a6;_0x229d3a[_0xcd2a('0x36')]=_[_0xcd2a('0x32')](db[_0xcd2a('0x4f')][_0xcd2a('0x2e')]);_0x229d3a[_0xcd2a('0x31')]=_['keys'](_0x32ab74[_0xcd2a('0x31')]);_0x229d3a[_0xcd2a('0x33')]=_[_0xcd2a('0x35')](_0x229d3a['model'],_0x229d3a[_0xcd2a('0x31')]);_0x4d43bc[_0xcd2a('0x34')]=_['intersection'](_0x229d3a[_0xcd2a('0x36')],qs[_0xcd2a('0x37')](_0x32ab74[_0xcd2a('0x31')][_0xcd2a('0x37')]));_0x4d43bc[_0xcd2a('0x34')]=_0x4d43bc[_0xcd2a('0x34')][_0xcd2a('0x38')]?_0x4d43bc['attributes']:_0x229d3a[_0xcd2a('0x36')];_0x4d43bc['order']=qs[_0xcd2a('0x3c')](_0x32ab74['query'][_0xcd2a('0x3c')]);_0x4d43bc['where']=qs['filters'](_[_0xcd2a('0x50')](_0x32ab74[_0xcd2a('0x31')],_0x229d3a['filters']));if(_0x32ab74[_0xcd2a('0x31')][_0xcd2a('0x3d')]){_0x4d43bc[_0xcd2a('0x3e')]=_[_0xcd2a('0x3f')](_0x4d43bc['where'],{'$or':_['map'](_0x4d43bc[_0xcd2a('0x34')],function(_0x24faa2){var _0xa79b5c={};_0xa79b5c[_0x24faa2]={'$like':'%'+_0x32ab74[_0xcd2a('0x31')]['filter']+'%'};return _0xa79b5c;})});}_0x4d43bc=_[_0xcd2a('0x3f')]({},_0x4d43bc,_0x32ab74[_0xcd2a('0x41')]);return _0x50575c['getDescriptions'](_0x4d43bc);}})[_0xcd2a('0x25')](function(_0x4143df){if(_0x4143df){_0x3b90c9=_0x4143df[_0xcd2a('0x38')];if(!_0x32ab74[_0xcd2a('0x31')][_0xcd2a('0x39')](_0xcd2a('0x3a'))){_0x4d43bc[_0xcd2a('0x1f')]=qs['limit'](_0x32ab74[_0xcd2a('0x31')]['limit']);_0x4d43bc[_0xcd2a('0x1d')]=qs[_0xcd2a('0x1d')](_0x32ab74[_0xcd2a('0x31')]['offset']);}return _0x50575c[_0xcd2a('0x52')](_0x4d43bc);}})['then'](function(_0x124a6c){if(_0x124a6c){return _0x124a6c?{'count':_0x3b90c9,'rows':_0x124a6c}:null;}})[_0xcd2a('0x25')](respondWithResult(_0x2767a3,null))[_0xcd2a('0x46')](handleError(_0x2767a3,null));};
\ No newline at end of file
index 3ac2a4c..44fe03d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x32b6=['moment','path','rimraf','../../config/environment','./intServicenowConfiguration.attributes','exports','define','ServicenowConfiguration','int_servicenow_configurations','lodash','util','api'];(function(_0x168d8f,_0x4676c8){var _0x149716=function(_0x576513){while(--_0x576513){_0x168d8f['push'](_0x168d8f['shift']());}};_0x149716(++_0x4676c8);}(_0x32b6,0x1d1));var _0x632b=function(_0x5e365a,_0x27c8a2){_0x5e365a=_0x5e365a-0x0;var _0x96979d=_0x32b6[_0x5e365a];return _0x96979d;};'use strict';var _=require(_0x632b('0x0'));var util=require(_0x632b('0x1'));var logger=require('../../config/logger')(_0x632b('0x2'));var moment=require(_0x632b('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x632b('0x4'));var rimraf=require(_0x632b('0x5'));var config=require(_0x632b('0x6'));var attributes=require(_0x632b('0x7'));module[_0x632b('0x8')]=function(_0x122768,_0x24ceab){return _0x122768[_0x632b('0x9')](_0x632b('0xa'),attributes,{'tableName':_0x632b('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb077=['../../config/environment','define','lodash','api','bluebird','request-promise','path','rimraf'];(function(_0x58b3fa,_0x3eec77){var _0xba2980=function(_0x1069aa){while(--_0x1069aa){_0x58b3fa['push'](_0x58b3fa['shift']());}};_0xba2980(++_0x3eec77);}(_0xb077,0x7a));var _0x7b07=function(_0x5368a4,_0xa17377){_0x5368a4=_0x5368a4-0x0;var _0x58b6b6=_0xb077[_0x5368a4];return _0x58b6b6;};'use strict';var _=require(_0x7b07('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x7b07('0x1'));var moment=require('moment');var BPromise=require(_0x7b07('0x2'));var rp=require(_0x7b07('0x3'));var fs=require('fs');var path=require(_0x7b07('0x4'));var rimraf=require(_0x7b07('0x5'));var config=require(_0x7b07('0x6'));var attributes=require('./intServicenowConfiguration.attributes');module['exports']=function(_0xdc333,_0x325d95){return _0xdc333[_0x7b07('0x7')]('ServicenowConfiguration',attributes,{'tableName':'int_servicenow_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3023a2d..3088e2f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x75dd=['catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','ServicenowConfiguration,\x20%s,\x20%s','request\x20sent','debug','ServicenowConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x421d8a,_0x215d4e){var _0x39c3ef=function(_0x4f362b){while(--_0x4f362b){_0x421d8a['push'](_0x421d8a['shift']());}};_0x39c3ef(++_0x215d4e);}(_0x75dd,0x1c9));var _0xd75d=function(_0x14a2de,_0xb6f4fa){_0x14a2de=_0x14a2de-0x0;var _0x5f2d6c=_0x75dd[_0x14a2de];return _0x5f2d6c;};'use strict';var _=require(_0xd75d('0x0'));var util=require(_0xd75d('0x1'));var moment=require(_0xd75d('0x2'));var BPromise=require(_0xd75d('0x3'));var rs=require(_0xd75d('0x4'));var fs=require('fs');var Redis=require(_0xd75d('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xd75d('0x6'));var logger=require(_0xd75d('0x7'))(_0xd75d('0x8'));var config=require(_0xd75d('0x9'));var jayson=require(_0xd75d('0xa'));var client=jayson[_0xd75d('0xb')][_0xd75d('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x3594fc,_0x48cce5,_0x7ad4a3){return new BPromise(function(_0x216ea5,_0x22b9f1){return client[_0xd75d('0xd')](_0x3594fc,_0x7ad4a3)['then'](function(_0x2a7bab){logger[_0xd75d('0xe')](_0xd75d('0xf'),_0x48cce5,_0xd75d('0x10'));logger[_0xd75d('0x11')](_0xd75d('0x12'),_0x48cce5,_0xd75d('0x10'),JSON[_0xd75d('0x13')](_0x2a7bab));if(_0x2a7bab['error']){if(_0x2a7bab[_0xd75d('0x14')][_0xd75d('0x15')]===0x1f4){logger['error'](_0xd75d('0xf'),_0x48cce5,_0x2a7bab[_0xd75d('0x14')]['message']);return _0x22b9f1(_0x2a7bab[_0xd75d('0x14')][_0xd75d('0x16')]);}logger['error']('ServicenowConfiguration,\x20%s,\x20%s',_0x48cce5,_0x2a7bab[_0xd75d('0x14')][_0xd75d('0x16')]);return _0x216ea5(_0x2a7bab[_0xd75d('0x14')]['message']);}else{logger[_0xd75d('0xe')]('ServicenowConfiguration,\x20%s,\x20%s',_0x48cce5,'request\x20sent');_0x216ea5(_0x2a7bab['result'][_0xd75d('0x16')]);}})[_0xd75d('0x17')](function(_0x5b1c56){logger['error'](_0xd75d('0xf'),_0x48cce5,_0x5b1c56);_0x22b9f1(_0x5b1c56);});});}
\ No newline at end of file
+var _0xa842=['moment','ioredis','../../mysqldb','../../config/logger','jayson/promise','http','then','info','ServicenowConfiguration,\x20%s,\x20%s','debug','request\x20sent','stringify','error','message','result','catch','lodash','util'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa842,0x8e));var _0x2a84=function(_0x5188de,_0x250952){_0x5188de=_0x5188de-0x0;var _0x6fdace=_0xa842[_0x5188de];return _0x6fdace;};'use strict';var _=require(_0x2a84('0x0'));var util=require(_0x2a84('0x1'));var moment=require(_0x2a84('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x2a84('0x3'));var db=require(_0x2a84('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x2a84('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0x2a84('0x6'));var client=jayson['client'][_0x2a84('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x428583,_0x2a8306,_0x4c60de){return new BPromise(function(_0x353c4a,_0x231211){return client['request'](_0x428583,_0x4c60de)[_0x2a84('0x8')](function(_0x5f1d16){logger[_0x2a84('0x9')](_0x2a84('0xa'),_0x2a8306,'request\x20sent');logger[_0x2a84('0xb')]('ServicenowConfiguration,\x20%s,\x20%s,\x20%s',_0x2a8306,_0x2a84('0xc'),JSON[_0x2a84('0xd')](_0x5f1d16));if(_0x5f1d16[_0x2a84('0xe')]){if(_0x5f1d16[_0x2a84('0xe')]['code']===0x1f4){logger[_0x2a84('0xe')]('ServicenowConfiguration,\x20%s,\x20%s',_0x2a8306,_0x5f1d16[_0x2a84('0xe')][_0x2a84('0xf')]);return _0x231211(_0x5f1d16[_0x2a84('0xe')]['message']);}logger[_0x2a84('0xe')]('ServicenowConfiguration,\x20%s,\x20%s',_0x2a8306,_0x5f1d16['error'][_0x2a84('0xf')]);return _0x353c4a(_0x5f1d16[_0x2a84('0xe')][_0x2a84('0xf')]);}else{logger[_0x2a84('0x9')](_0x2a84('0xa'),_0x2a8306,_0x2a84('0xc'));_0x353c4a(_0x5f1d16[_0x2a84('0x10')]['message']);}})[_0x2a84('0x11')](function(_0x208fa7){logger[_0x2a84('0xe')]('ServicenowConfiguration,\x20%s,\x20%s',_0x2a8306,_0x208fa7);_0x231211(_0x208fa7);});});}
\ No newline at end of file
index b860b1a..1c9645e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x17a7=['destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intServicenowField.controller','get','isAuthenticated','show','post','create','update','delete','/:id'];(function(_0x4e9d3c,_0x1f4b98){var _0x2d0825=function(_0x384676){while(--_0x384676){_0x4e9d3c['push'](_0x4e9d3c['shift']());}};_0x2d0825(++_0x1f4b98);}(_0x17a7,0x144));var _0x717a=function(_0x4ad3b1,_0x551a41){_0x4ad3b1=_0x4ad3b1-0x0;var _0x21596f=_0x17a7[_0x4ad3b1];return _0x21596f;};'use strict';var multer=require(_0x717a('0x0'));var util=require(_0x717a('0x1'));var path=require(_0x717a('0x2'));var timeout=require(_0x717a('0x3'));var express=require(_0x717a('0x4'));var router=express[_0x717a('0x5')]();var fs_extra=require(_0x717a('0x6'));var auth=require(_0x717a('0x7'));var interaction=require(_0x717a('0x8'));var config=require('../../config/environment');var controller=require(_0x717a('0x9'));router[_0x717a('0xa')]('/',auth['isAuthenticated'](),controller['index']);router[_0x717a('0xa')]('/:id',auth[_0x717a('0xb')](),controller[_0x717a('0xc')]);router[_0x717a('0xd')]('/',auth['isAuthenticated'](),controller[_0x717a('0xe')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0x717a('0xf')]);router[_0x717a('0x10')](_0x717a('0x11'),auth[_0x717a('0xb')](),controller[_0x717a('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0xc87b=['create','/:id','update','destroy','exports','multer','util','path','Router','fs-extra','../../components/auth/service','../../config/environment','./intServicenowField.controller','get','isAuthenticated','index','show','post'];(function(_0x406115,_0x19f7a1){var _0xbbabdb=function(_0x28554d){while(--_0x28554d){_0x406115['push'](_0x406115['shift']());}};_0xbbabdb(++_0x19f7a1);}(_0xc87b,0x125));var _0xbc87=function(_0x47a7d0,_0x4e182d){_0x47a7d0=_0x47a7d0-0x0;var _0xb9bd08=_0xc87b[_0x47a7d0];return _0xb9bd08;};'use strict';var multer=require(_0xbc87('0x0'));var util=require(_0xbc87('0x1'));var path=require(_0xbc87('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xbc87('0x3')]();var fs_extra=require(_0xbc87('0x4'));var auth=require(_0xbc87('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xbc87('0x6'));var controller=require(_0xbc87('0x7'));router[_0xbc87('0x8')]('/',auth[_0xbc87('0x9')](),controller[_0xbc87('0xa')]);router[_0xbc87('0x8')]('/:id',auth['isAuthenticated'](),controller[_0xbc87('0xb')]);router[_0xbc87('0xc')]('/',auth[_0xbc87('0x9')](),controller[_0xbc87('0xd')]);router['put'](_0xbc87('0xe'),auth[_0xbc87('0x9')](),controller[_0xbc87('0xf')]);router['delete']('/:id',auth[_0xbc87('0x9')](),controller[_0xbc87('0x10')]);module[_0xbc87('0x11')]=router;
\ No newline at end of file
index 73054a5..1286b76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f3b=['variable','keyValue','string','STRING','BOOLEAN','sequelize','ENUM'];(function(_0x172660,_0x260d9b){var _0x83204f=function(_0x4d6c80){while(--_0x4d6c80){_0x172660['push'](_0x172660['shift']());}};_0x83204f(++_0x260d9b);}(_0x9f3b,0x91));var _0xb9f3=function(_0x2ff762,_0x342c0b){_0x2ff762=_0x2ff762-0x0;var _0x158b02=_0x9f3b[_0x2ff762];return _0x158b02;};'use strict';var Sequelize=require(_0xb9f3('0x0'));module['exports']={'type':{'type':Sequelize[_0xb9f3('0x1')]('string',_0xb9f3('0x2'),'customVariable',_0xb9f3('0x3'),'picklist'),'defaultValue':_0xb9f3('0x4')},'content':{'type':Sequelize[_0xb9f3('0x5')]},'key':{'type':Sequelize[_0xb9f3('0x5')]},'keyType':{'type':Sequelize[_0xb9f3('0x1')]('string',_0xb9f3('0x2'),'customVariable')},'keyContent':{'type':Sequelize[_0xb9f3('0x5')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0xb9f3('0x5')]},'customField':{'type':Sequelize[_0xb9f3('0x6')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xb9f3('0x5')]}};
\ No newline at end of file
+var _0xdf87=['sequelize','exports','ENUM','string','customVariable','keyValue','picklist','STRING','variable'];(function(_0x26f0c2,_0xeb0df8){var _0x2ad24d=function(_0x3fd942){while(--_0x3fd942){_0x26f0c2['push'](_0x26f0c2['shift']());}};_0x2ad24d(++_0xeb0df8);}(_0xdf87,0x1ef));var _0x7df8=function(_0x1d1860,_0x55062b){_0x1d1860=_0x1d1860-0x0;var _0x19ddca=_0xdf87[_0x1d1860];return _0x19ddca;};'use strict';var Sequelize=require(_0x7df8('0x0'));module[_0x7df8('0x1')]={'type':{'type':Sequelize[_0x7df8('0x2')](_0x7df8('0x3'),'variable',_0x7df8('0x4'),_0x7df8('0x5'),_0x7df8('0x6')),'defaultValue':_0x7df8('0x3')},'content':{'type':Sequelize[_0x7df8('0x7')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize['ENUM'](_0x7df8('0x3'),_0x7df8('0x8'),_0x7df8('0x4'))},'keyContent':{'type':Sequelize[_0x7df8('0x7')]},'idField':{'type':Sequelize[_0x7df8('0x7')]},'nameField':{'type':Sequelize[_0x7df8('0x7')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x7df8('0x7')]}};
\ No newline at end of file
index 9765d65..3e90306 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x170e=['where','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','params','find','body','update','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','destroy','end','stack','name','send','index','map','ServicenowField','rawAttributes','type','key','model','query','keys','intersection','attributes','fields','length','nolimit','order','sort','filters','pick'];(function(_0x193288,_0x2ecd4a){var _0x54709d=function(_0x3dead3){while(--_0x3dead3){_0x193288['push'](_0x193288['shift']());}};_0x54709d(++_0x2ecd4a);}(_0x170e,0x147));var _0xe170=function(_0x376b45,_0x5964fb){_0x376b45=_0x376b45-0x0;var _0x2341b3=_0x170e[_0x376b45];return _0x2341b3;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe170('0x0'));var zipdir=require(_0xe170('0x1'));var jsonpatch=require(_0xe170('0x2'));var rp=require(_0xe170('0x3'));var moment=require(_0xe170('0x4'));var BPromise=require(_0xe170('0x5'));var Mustache=require(_0xe170('0x6'));var util=require(_0xe170('0x7'));var path=require(_0xe170('0x8'));var sox=require(_0xe170('0x9'));var csv=require(_0xe170('0xa'));var ejs=require(_0xe170('0xb'));var fs=require('fs');var fs_extra=require(_0xe170('0xc'));var _=require('lodash');var squel=require(_0xe170('0xd'));var crypto=require(_0xe170('0xe'));var jsforce=require(_0xe170('0xf'));var deskjs=require('desk.js');var toCsv=require(_0xe170('0xa'));var querystring=require(_0xe170('0x10'));var Papa=require(_0xe170('0x11'));var Redis=require('ioredis');var authService=require(_0xe170('0x12'));var qs=require(_0xe170('0x13'));var as=require(_0xe170('0x14'));var hardwareService=require(_0xe170('0x15'));var logger=require(_0xe170('0x16'))(_0xe170('0x17'));var utils=require(_0xe170('0x18'));var config=require(_0xe170('0x19'));var licenseUtil=require(_0xe170('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4c2381,_0x292472){_0x292472=_0x292472||0xcc;return function(_0x5693a4){if(_0x5693a4){return _0x4c2381[_0xe170('0x1b')](_0x292472);}return _0x4c2381[_0xe170('0x1c')](_0x292472)['end']();};}function respondWithResult(_0x520706,_0x53b58e){_0x53b58e=_0x53b58e||0xc8;return function(_0xc6838d){if(_0xc6838d){return _0x520706[_0xe170('0x1c')](_0x53b58e)[_0xe170('0x1d')](_0xc6838d);}};}function respondWithFilteredResult(_0x23199a,_0x5ccdd7){return function(_0x585180){if(_0x585180){var _0x93f56c=typeof _0x5ccdd7[_0xe170('0x1e')]===_0xe170('0x1f')&&typeof _0x5ccdd7[_0xe170('0x20')]===_0xe170('0x1f');var _0x207fa7=_0x585180[_0xe170('0x21')];var _0x27d44d=_0x93f56c?0x0:_0x5ccdd7['offset'];var _0x3ca84d=_0x93f56c?_0x585180[_0xe170('0x21')]:_0x5ccdd7['offset']+_0x5ccdd7[_0xe170('0x20')];var _0x2c468f;if(_0x3ca84d>=_0x207fa7){_0x3ca84d=_0x207fa7;_0x2c468f=0xc8;}else{_0x2c468f=0xce;}_0x23199a[_0xe170('0x1c')](_0x2c468f);return _0x23199a[_0xe170('0x22')](_0xe170('0x23'),_0x27d44d+'-'+_0x3ca84d+'/'+_0x207fa7)['json'](_0x585180);}return null;};}function patchUpdates(_0x48ed61){return function(_0x2b6948){try{jsonpatch[_0xe170('0x24')](_0x2b6948,_0x48ed61,!![]);}catch(_0x388e4e){return BPromise[_0xe170('0x25')](_0x388e4e);}return _0x2b6948[_0xe170('0x26')]();};}function saveUpdates(_0x2e34df,_0x398d87){return function(_0x1bf125){if(_0x1bf125){return _0x1bf125['update'](_0x2e34df)[_0xe170('0x27')](function(_0x5a7fbe){return _0x5a7fbe;});}return null;};}function removeEntity(_0x27f946,_0x1a4584){return function(_0x4e5a73){if(_0x4e5a73){return _0x4e5a73[_0xe170('0x28')]()[_0xe170('0x27')](function(){_0x27f946[_0xe170('0x1c')](0xcc)[_0xe170('0x29')]();});}};}function handleEntityNotFound(_0x16c620,_0xb73070){return function(_0x3d5cce){if(!_0x3d5cce){_0x16c620[_0xe170('0x1b')](0x194);}return _0x3d5cce;};}function handleError(_0x20e549,_0x3f1a4){_0x3f1a4=_0x3f1a4||0x1f4;return function(_0x40c944){logger['error'](_0x40c944[_0xe170('0x2a')]);if(_0x40c944[_0xe170('0x2b')]){delete _0x40c944[_0xe170('0x2b')];}_0x20e549[_0xe170('0x1c')](_0x3f1a4)[_0xe170('0x2c')](_0x40c944);};}exports[_0xe170('0x2d')]=function(_0x264011,_0x18148e){var _0x44dbbf={},_0x258af5={},_0x3e5f98={'count':0x0,'rows':[]};var _0x4d73b7=_[_0xe170('0x2e')](db[_0xe170('0x2f')][_0xe170('0x30')],function(_0x598c60){return{'name':_0x598c60['fieldName'],'type':_0x598c60[_0xe170('0x31')][_0xe170('0x32')]};});_0x258af5[_0xe170('0x33')]=_[_0xe170('0x2e')](_0x4d73b7,'name');_0x258af5[_0xe170('0x34')]=_[_0xe170('0x35')](_0x264011['query']);_0x258af5['filters']=_[_0xe170('0x36')](_0x258af5['model'],_0x258af5['query']);_0x44dbbf[_0xe170('0x37')]=_[_0xe170('0x36')](_0x258af5[_0xe170('0x33')],qs[_0xe170('0x38')](_0x264011[_0xe170('0x34')][_0xe170('0x38')]));_0x44dbbf[_0xe170('0x37')]=_0x44dbbf[_0xe170('0x37')][_0xe170('0x39')]?_0x44dbbf[_0xe170('0x37')]:_0x258af5[_0xe170('0x33')];if(!_0x264011['query']['hasOwnProperty'](_0xe170('0x3a'))){_0x44dbbf['limit']=qs[_0xe170('0x20')](_0x264011['query'][_0xe170('0x20')]);_0x44dbbf['offset']=qs['offset'](_0x264011[_0xe170('0x34')][_0xe170('0x1e')]);}_0x44dbbf[_0xe170('0x3b')]=qs[_0xe170('0x3c')](_0x264011['query'][_0xe170('0x3c')]);_0x44dbbf['where']=qs[_0xe170('0x3d')](_[_0xe170('0x3e')](_0x264011[_0xe170('0x34')],_0x258af5[_0xe170('0x3d')]),_0x4d73b7);if(_0x264011[_0xe170('0x34')]['filter']){_0x44dbbf[_0xe170('0x3f')]=_[_0xe170('0x40')](_0x44dbbf['where'],{'$or':_[_0xe170('0x2e')](_0x4d73b7,function(_0x41cbc5){if(_0x41cbc5[_0xe170('0x31')]!==_0xe170('0x41')){var _0x4ae6ed={};_0x4ae6ed[_0x41cbc5[_0xe170('0x2b')]]={'$like':'%'+_0x264011[_0xe170('0x34')][_0xe170('0x42')]+'%'};return _0x4ae6ed;}})});}_0x44dbbf=_['merge']({},_0x44dbbf,_0x264011[_0xe170('0x43')]);var _0x61ec03={'where':_0x44dbbf[_0xe170('0x3f')]};return db[_0xe170('0x2f')][_0xe170('0x21')](_0x61ec03)['then'](function(_0x154db6){_0x3e5f98[_0xe170('0x21')]=_0x154db6;if(_0x264011[_0xe170('0x34')][_0xe170('0x44')]){_0x44dbbf[_0xe170('0x45')]=[{'all':!![]}];}return db[_0xe170('0x2f')][_0xe170('0x46')](_0x44dbbf);})[_0xe170('0x27')](function(_0x40f164){_0x3e5f98[_0xe170('0x47')]=_0x40f164;return _0x3e5f98;})[_0xe170('0x27')](respondWithFilteredResult(_0x18148e,_0x44dbbf))[_0xe170('0x48')](handleError(_0x18148e,null));};exports[_0xe170('0x49')]=function(_0x3dba1c,_0x58ecdf){var _0x207a82={'raw':!![],'where':{'id':_0x3dba1c[_0xe170('0x4a')]['id']}},_0x148b99={};_0x148b99[_0xe170('0x33')]=_[_0xe170('0x35')](db[_0xe170('0x2f')][_0xe170('0x30')]);_0x148b99[_0xe170('0x34')]=_[_0xe170('0x35')](_0x3dba1c[_0xe170('0x34')]);_0x148b99[_0xe170('0x3d')]=_[_0xe170('0x36')](_0x148b99[_0xe170('0x33')],_0x148b99['query']);_0x207a82[_0xe170('0x37')]=_[_0xe170('0x36')](_0x148b99['model'],qs[_0xe170('0x38')](_0x3dba1c[_0xe170('0x34')][_0xe170('0x38')]));_0x207a82[_0xe170('0x37')]=_0x207a82['attributes'][_0xe170('0x39')]?_0x207a82[_0xe170('0x37')]:_0x148b99[_0xe170('0x33')];if(_0x3dba1c[_0xe170('0x34')][_0xe170('0x44')]){_0x207a82[_0xe170('0x45')]=[{'all':!![]}];}_0x207a82=_[_0xe170('0x40')]({},_0x207a82,_0x3dba1c[_0xe170('0x43')]);return db[_0xe170('0x2f')][_0xe170('0x4b')](_0x207a82)[_0xe170('0x27')](handleEntityNotFound(_0x58ecdf,null))['then'](respondWithResult(_0x58ecdf,null))[_0xe170('0x48')](handleError(_0x58ecdf,null));};exports['create']=function(_0x36a05c,_0x2aa08a){return db[_0xe170('0x2f')]['create'](_0x36a05c[_0xe170('0x4c')],{})[_0xe170('0x27')](respondWithResult(_0x2aa08a,0xc9))[_0xe170('0x48')](handleError(_0x2aa08a,null));};exports[_0xe170('0x4d')]=function(_0x3b0f14,_0x332d9a){if(_0x3b0f14[_0xe170('0x4c')]['id']){delete _0x3b0f14[_0xe170('0x4c')]['id'];}return db[_0xe170('0x2f')][_0xe170('0x4b')]({'where':{'id':_0x3b0f14['params']['id']}})['then'](handleEntityNotFound(_0x332d9a,null))[_0xe170('0x27')](saveUpdates(_0x3b0f14[_0xe170('0x4c')],null))[_0xe170('0x27')](respondWithResult(_0x332d9a,null))['catch'](handleError(_0x332d9a,null));};exports[_0xe170('0x28')]=function(_0xd11f36,_0x9b8f71){return db[_0xe170('0x2f')][_0xe170('0x4b')]({'where':{'id':_0xd11f36[_0xe170('0x4a')]['id']}})[_0xe170('0x27')](handleEntityNotFound(_0x9b8f71,null))[_0xe170('0x27')](removeEntity(_0x9b8f71,null))['catch'](handleError(_0x9b8f71,null));};
\ No newline at end of file
+var _0xd977=['params','find','body','eml-format','zip-dir','moment','bluebird','mustache','util','path','to-csv','fs-extra','lodash','squel','jsforce','desk.js','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','json','limit','undefined','count','offset','set','Content-Range','apply','reject','save','update','then','destroy','end','error','name','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','options','ServicenowField','includeAll','include','catch'];(function(_0x92f35d,_0x1fd6cd){var _0x257014=function(_0x2df868){while(--_0x2df868){_0x92f35d['push'](_0x92f35d['shift']());}};_0x257014(++_0x1fd6cd);}(_0xd977,0xd2));var _0x7d97=function(_0x1d127b,_0x53bedc){_0x1d127b=_0x1d127b-0x0;var _0x3b1e19=_0xd977[_0x1d127b];return _0x3b1e19;};'use strict';var emlformat=require(_0x7d97('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x7d97('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x7d97('0x2'));var BPromise=require(_0x7d97('0x3'));var Mustache=require(_0x7d97('0x4'));var util=require(_0x7d97('0x5'));var path=require(_0x7d97('0x6'));var sox=require('sox');var csv=require(_0x7d97('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x7d97('0x8'));var _=require(_0x7d97('0x9'));var squel=require(_0x7d97('0xa'));var crypto=require('crypto');var jsforce=require(_0x7d97('0xb'));var deskjs=require(_0x7d97('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x7d97('0xd'));var qs=require(_0x7d97('0xe'));var as=require(_0x7d97('0xf'));var hardwareService=require(_0x7d97('0x10'));var logger=require(_0x7d97('0x11'))(_0x7d97('0x12'));var utils=require(_0x7d97('0x13'));var config=require(_0x7d97('0x14'));var licenseUtil=require(_0x7d97('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x557bf2,_0x3f0809){_0x3f0809=_0x3f0809||0xcc;return function(_0x4d5953){if(_0x4d5953){return _0x557bf2[_0x7d97('0x16')](_0x3f0809);}return _0x557bf2[_0x7d97('0x17')](_0x3f0809)['end']();};}function respondWithResult(_0xa02802,_0x778756){_0x778756=_0x778756||0xc8;return function(_0x509543){if(_0x509543){return _0xa02802[_0x7d97('0x17')](_0x778756)[_0x7d97('0x18')](_0x509543);}};}function respondWithFilteredResult(_0x256a3a,_0x2ae3ea){return function(_0x2fe795){if(_0x2fe795){var _0x2a1c5b=typeof _0x2ae3ea['offset']==='undefined'&&typeof _0x2ae3ea[_0x7d97('0x19')]===_0x7d97('0x1a');var _0x3c229f=_0x2fe795[_0x7d97('0x1b')];var _0x169471=_0x2a1c5b?0x0:_0x2ae3ea[_0x7d97('0x1c')];var _0x521d56=_0x2a1c5b?_0x2fe795[_0x7d97('0x1b')]:_0x2ae3ea['offset']+_0x2ae3ea[_0x7d97('0x19')];var _0xce00b0;if(_0x521d56>=_0x3c229f){_0x521d56=_0x3c229f;_0xce00b0=0xc8;}else{_0xce00b0=0xce;}_0x256a3a['status'](_0xce00b0);return _0x256a3a[_0x7d97('0x1d')](_0x7d97('0x1e'),_0x169471+'-'+_0x521d56+'/'+_0x3c229f)[_0x7d97('0x18')](_0x2fe795);}return null;};}function patchUpdates(_0x384dc7){return function(_0x426efa){try{jsonpatch[_0x7d97('0x1f')](_0x426efa,_0x384dc7,!![]);}catch(_0x16941a){return BPromise[_0x7d97('0x20')](_0x16941a);}return _0x426efa[_0x7d97('0x21')]();};}function saveUpdates(_0x387525,_0x3ec7a4){return function(_0x72244b){if(_0x72244b){return _0x72244b[_0x7d97('0x22')](_0x387525)[_0x7d97('0x23')](function(_0x135d93){return _0x135d93;});}return null;};}function removeEntity(_0x3ac158,_0x2f439c){return function(_0x366d20){if(_0x366d20){return _0x366d20[_0x7d97('0x24')]()[_0x7d97('0x23')](function(){_0x3ac158[_0x7d97('0x17')](0xcc)[_0x7d97('0x25')]();});}};}function handleEntityNotFound(_0x1a78d9,_0x480760){return function(_0x35d708){if(!_0x35d708){_0x1a78d9['sendStatus'](0x194);}return _0x35d708;};}function handleError(_0x230e73,_0x1bd7fa){_0x1bd7fa=_0x1bd7fa||0x1f4;return function(_0x1ea899){logger[_0x7d97('0x26')](_0x1ea899['stack']);if(_0x1ea899[_0x7d97('0x27')]){delete _0x1ea899[_0x7d97('0x27')];}_0x230e73[_0x7d97('0x17')](_0x1bd7fa)['send'](_0x1ea899);};}exports['index']=function(_0x296089,_0x7625ec){var _0x475432={},_0x7f6ebb={},_0xa02684={'count':0x0,'rows':[]};var _0x3ff74d=_[_0x7d97('0x28')](db['ServicenowField'][_0x7d97('0x29')],function(_0x32872c){return{'name':_0x32872c[_0x7d97('0x2a')],'type':_0x32872c[_0x7d97('0x2b')][_0x7d97('0x2c')]};});_0x7f6ebb[_0x7d97('0x2d')]=_[_0x7d97('0x28')](_0x3ff74d,'name');_0x7f6ebb[_0x7d97('0x2e')]=_[_0x7d97('0x2f')](_0x296089[_0x7d97('0x2e')]);_0x7f6ebb[_0x7d97('0x30')]=_[_0x7d97('0x31')](_0x7f6ebb[_0x7d97('0x2d')],_0x7f6ebb[_0x7d97('0x2e')]);_0x475432[_0x7d97('0x32')]=_[_0x7d97('0x31')](_0x7f6ebb[_0x7d97('0x2d')],qs[_0x7d97('0x33')](_0x296089['query']['fields']));_0x475432[_0x7d97('0x32')]=_0x475432['attributes'][_0x7d97('0x34')]?_0x475432[_0x7d97('0x32')]:_0x7f6ebb[_0x7d97('0x2d')];if(!_0x296089['query'][_0x7d97('0x35')](_0x7d97('0x36'))){_0x475432[_0x7d97('0x19')]=qs[_0x7d97('0x19')](_0x296089[_0x7d97('0x2e')][_0x7d97('0x19')]);_0x475432[_0x7d97('0x1c')]=qs['offset'](_0x296089['query'][_0x7d97('0x1c')]);}_0x475432[_0x7d97('0x37')]=qs['sort'](_0x296089[_0x7d97('0x2e')][_0x7d97('0x38')]);_0x475432['where']=qs[_0x7d97('0x30')](_[_0x7d97('0x39')](_0x296089['query'],_0x7f6ebb[_0x7d97('0x30')]),_0x3ff74d);if(_0x296089[_0x7d97('0x2e')][_0x7d97('0x3a')]){_0x475432[_0x7d97('0x3b')]=_['merge'](_0x475432['where'],{'$or':_[_0x7d97('0x28')](_0x3ff74d,function(_0xa9701f){if(_0xa9701f[_0x7d97('0x2b')]!=='VIRTUAL'){var _0x4c9211={};_0x4c9211[_0xa9701f[_0x7d97('0x27')]]={'$like':'%'+_0x296089[_0x7d97('0x2e')]['filter']+'%'};return _0x4c9211;}})});}_0x475432=_[_0x7d97('0x3c')]({},_0x475432,_0x296089[_0x7d97('0x3d')]);var _0x28755c={'where':_0x475432['where']};return db[_0x7d97('0x3e')][_0x7d97('0x1b')](_0x28755c)[_0x7d97('0x23')](function(_0x47fef6){_0xa02684[_0x7d97('0x1b')]=_0x47fef6;if(_0x296089[_0x7d97('0x2e')][_0x7d97('0x3f')]){_0x475432[_0x7d97('0x40')]=[{'all':!![]}];}return db[_0x7d97('0x3e')]['findAll'](_0x475432);})[_0x7d97('0x23')](function(_0x26e8e7){_0xa02684['rows']=_0x26e8e7;return _0xa02684;})[_0x7d97('0x23')](respondWithFilteredResult(_0x7625ec,_0x475432))[_0x7d97('0x41')](handleError(_0x7625ec,null));};exports['show']=function(_0x90879b,_0x198024){var _0xd8a4ac={'raw':!![],'where':{'id':_0x90879b[_0x7d97('0x42')]['id']}},_0x1c8d4c={};_0x1c8d4c[_0x7d97('0x2d')]=_[_0x7d97('0x2f')](db[_0x7d97('0x3e')]['rawAttributes']);_0x1c8d4c[_0x7d97('0x2e')]=_['keys'](_0x90879b[_0x7d97('0x2e')]);_0x1c8d4c[_0x7d97('0x30')]=_[_0x7d97('0x31')](_0x1c8d4c[_0x7d97('0x2d')],_0x1c8d4c[_0x7d97('0x2e')]);_0xd8a4ac[_0x7d97('0x32')]=_[_0x7d97('0x31')](_0x1c8d4c[_0x7d97('0x2d')],qs[_0x7d97('0x33')](_0x90879b[_0x7d97('0x2e')][_0x7d97('0x33')]));_0xd8a4ac['attributes']=_0xd8a4ac[_0x7d97('0x32')][_0x7d97('0x34')]?_0xd8a4ac[_0x7d97('0x32')]:_0x1c8d4c['model'];if(_0x90879b[_0x7d97('0x2e')][_0x7d97('0x3f')]){_0xd8a4ac[_0x7d97('0x40')]=[{'all':!![]}];}_0xd8a4ac=_['merge']({},_0xd8a4ac,_0x90879b[_0x7d97('0x3d')]);return db[_0x7d97('0x3e')][_0x7d97('0x43')](_0xd8a4ac)['then'](handleEntityNotFound(_0x198024,null))['then'](respondWithResult(_0x198024,null))[_0x7d97('0x41')](handleError(_0x198024,null));};exports['create']=function(_0x535d5e,_0x1b762b){return db[_0x7d97('0x3e')]['create'](_0x535d5e[_0x7d97('0x44')],{})['then'](respondWithResult(_0x1b762b,0xc9))[_0x7d97('0x41')](handleError(_0x1b762b,null));};exports[_0x7d97('0x22')]=function(_0x5e8ee9,_0x62089a){if(_0x5e8ee9[_0x7d97('0x44')]['id']){delete _0x5e8ee9[_0x7d97('0x44')]['id'];}return db[_0x7d97('0x3e')][_0x7d97('0x43')]({'where':{'id':_0x5e8ee9[_0x7d97('0x42')]['id']}})[_0x7d97('0x23')](handleEntityNotFound(_0x62089a,null))['then'](saveUpdates(_0x5e8ee9['body'],null))[_0x7d97('0x23')](respondWithResult(_0x62089a,null))[_0x7d97('0x41')](handleError(_0x62089a,null));};exports[_0x7d97('0x24')]=function(_0x1d73f5,_0x233506){return db[_0x7d97('0x3e')][_0x7d97('0x43')]({'where':{'id':_0x1d73f5[_0x7d97('0x42')]['id']}})[_0x7d97('0x23')](handleEntityNotFound(_0x233506,null))[_0x7d97('0x23')](removeEntity(_0x233506,null))[_0x7d97('0x41')](handleError(_0x233506,null));};
\ No newline at end of file
index fcef7df..d0925ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f21=['path','rimraf','../../config/environment','./intServicenowField.attributes','ServicenowField','servicenow_unique_index','idField','FieldId','lodash','util','../../config/logger','request-promise'];(function(_0x5822c9,_0x5d1998){var _0x4a5d40=function(_0xebe031){while(--_0xebe031){_0x5822c9['push'](_0x5822c9['shift']());}};_0x4a5d40(++_0x5d1998);}(_0x8f21,0x1f4));var _0x18f2=function(_0xbfa698,_0x3ea3b7){_0xbfa698=_0xbfa698-0x0;var _0x1eb36a=_0x8f21[_0xbfa698];return _0x1eb36a;};'use strict';var _=require(_0x18f2('0x0'));var util=require(_0x18f2('0x1'));var logger=require(_0x18f2('0x2'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x18f2('0x3'));var fs=require('fs');var path=require(_0x18f2('0x4'));var rimraf=require(_0x18f2('0x5'));var config=require(_0x18f2('0x6'));var attributes=require(_0x18f2('0x7'));module['exports']=function(_0x49b898,_0x595ce){return _0x49b898['define'](_0x18f2('0x8'),attributes,{'tableName':'int_servicenow_fields','paranoid':![],'indexes':[{'name':_0x18f2('0x9'),'fields':[_0x18f2('0xa'),_0x18f2('0xb')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x9bca=['lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./intServicenowField.attributes','define','int_servicenow_fields','servicenow_unique_index','idField'];(function(_0x3e44fa,_0x75ed2a){var _0x2a0aba=function(_0x1db6a7){while(--_0x1db6a7){_0x3e44fa['push'](_0x3e44fa['shift']());}};_0x2a0aba(++_0x75ed2a);}(_0x9bca,0xee));var _0xa9bc=function(_0x552c05,_0x3249ba){_0x552c05=_0x552c05-0x0;var _0x328073=_0x9bca[_0x552c05];return _0x328073;};'use strict';var _=require(_0xa9bc('0x0'));var util=require(_0xa9bc('0x1'));var logger=require(_0xa9bc('0x2'))(_0xa9bc('0x3'));var moment=require(_0xa9bc('0x4'));var BPromise=require('bluebird');var rp=require(_0xa9bc('0x5'));var fs=require('fs');var path=require(_0xa9bc('0x6'));var rimraf=require(_0xa9bc('0x7'));var config=require(_0xa9bc('0x8'));var attributes=require(_0xa9bc('0x9'));module['exports']=function(_0x251a89,_0x362d6f){return _0x251a89[_0xa9bc('0xa')]('ServicenowField',attributes,{'tableName':_0xa9bc('0xb'),'paranoid':![],'indexes':[{'name':_0xa9bc('0xc'),'fields':[_0xa9bc('0xd'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 5dc54b4..39c08fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda3f=['rpc','jayson/promise','client','request','then','info','ServicenowField,\x20%s,\x20%s','request\x20sent','debug','ServicenowField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','util','moment','../../mysqldb','../../config/logger'];(function(_0x108d5f,_0x33f82d){var _0x456ea3=function(_0x228200){while(--_0x228200){_0x108d5f['push'](_0x108d5f['shift']());}};_0x456ea3(++_0x33f82d);}(_0xda3f,0xec));var _0xfda3=function(_0x23ae0c,_0x4fdd60){_0x23ae0c=_0x23ae0c-0x0;var _0x13a220=_0xda3f[_0x23ae0c];return _0x13a220;};'use strict';var _=require('lodash');var util=require(_0xfda3('0x0'));var moment=require(_0xfda3('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xfda3('0x2'))['db'];var utils=require('../../config/utils');var logger=require(_0xfda3('0x3'))(_0xfda3('0x4'));var config=require('../../config/environment');var jayson=require(_0xfda3('0x5'));var client=jayson[_0xfda3('0x6')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4e72d1,_0x316792,_0x42476a){return new BPromise(function(_0x125e2a,_0x4018c0){return client[_0xfda3('0x7')](_0x4e72d1,_0x42476a)[_0xfda3('0x8')](function(_0x46655c){logger[_0xfda3('0x9')](_0xfda3('0xa'),_0x316792,_0xfda3('0xb'));logger[_0xfda3('0xc')](_0xfda3('0xd'),_0x316792,'request\x20sent',JSON[_0xfda3('0xe')](_0x46655c));if(_0x46655c[_0xfda3('0xf')]){if(_0x46655c[_0xfda3('0xf')][_0xfda3('0x10')]===0x1f4){logger[_0xfda3('0xf')]('ServicenowField,\x20%s,\x20%s',_0x316792,_0x46655c[_0xfda3('0xf')]['message']);return _0x4018c0(_0x46655c[_0xfda3('0xf')][_0xfda3('0x11')]);}logger['error']('ServicenowField,\x20%s,\x20%s',_0x316792,_0x46655c['error'][_0xfda3('0x11')]);return _0x125e2a(_0x46655c[_0xfda3('0xf')]['message']);}else{logger['info']('ServicenowField,\x20%s,\x20%s',_0x316792,_0xfda3('0xb'));_0x125e2a(_0x46655c[_0xfda3('0x12')][_0xfda3('0x11')]);}})[_0xfda3('0x13')](function(_0x34900d){logger[_0xfda3('0xf')](_0xfda3('0xa'),_0x316792,_0x34900d);_0x4018c0(_0x34900d);});});}
\ No newline at end of file
+var _0xac4a=['ServicenowField,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','client','then','info','debug','ServicenowField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0xac4a,0x13f));var _0xaac4=function(_0x40eb74,_0x5f21f4){_0x40eb74=_0x40eb74-0x0;var _0x585ec4=_0xac4a[_0x40eb74];return _0x585ec4;};'use strict';var _=require(_0xaac4('0x0'));var util=require(_0xaac4('0x1'));var moment=require(_0xaac4('0x2'));var BPromise=require(_0xaac4('0x3'));var rs=require(_0xaac4('0x4'));var fs=require('fs');var Redis=require(_0xaac4('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xaac4('0x6'))(_0xaac4('0x7'));var config=require(_0xaac4('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xaac4('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1cdfc5,_0x5870e8,_0x1e4283){return new BPromise(function(_0x27354c,_0x567295){return client['request'](_0x1cdfc5,_0x1e4283)[_0xaac4('0xa')](function(_0x50d114){logger[_0xaac4('0xb')]('ServicenowField,\x20%s,\x20%s',_0x5870e8,'request\x20sent');logger[_0xaac4('0xc')](_0xaac4('0xd'),_0x5870e8,_0xaac4('0xe'),JSON[_0xaac4('0xf')](_0x50d114));if(_0x50d114[_0xaac4('0x10')]){if(_0x50d114['error']['code']===0x1f4){logger[_0xaac4('0x10')](_0xaac4('0x11'),_0x5870e8,_0x50d114[_0xaac4('0x10')]['message']);return _0x567295(_0x50d114[_0xaac4('0x10')][_0xaac4('0x12')]);}logger['error'](_0xaac4('0x11'),_0x5870e8,_0x50d114[_0xaac4('0x10')][_0xaac4('0x12')]);return _0x27354c(_0x50d114[_0xaac4('0x10')][_0xaac4('0x12')]);}else{logger[_0xaac4('0xb')](_0xaac4('0x11'),_0x5870e8,_0xaac4('0xe'));_0x27354c(_0x50d114[_0xaac4('0x13')][_0xaac4('0x12')]);}})[_0xaac4('0x14')](function(_0x1766c2){logger[_0xaac4('0x10')]('ServicenowField,\x20%s,\x20%s',_0x5870e8,_0x1766c2);_0x567295(_0x1766c2);});});}
\ No newline at end of file
index 6cccc1f..8e49bc8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intSugarcrmAccount.controller','get','isAuthenticated','index','/:id','show','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','update','delete','destroy','exports','multer','util','path'];(function(_0x1a223e,_0x4f3f52){var _0x356624=function(_0x5c71d3){while(--_0x5c71d3){_0x1a223e['push'](_0x1a223e['shift']());}};_0x356624(++_0x4f3f52);}(_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
+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(_0x10e53c,_0x264e5d){var _0x84f027=function(_0x245416){while(--_0x245416){_0x10e53c['push'](_0x10e53c['shift']());}};_0x84f027(++_0x264e5d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3a6efd,_0x2a5102){_0x3a6efd=_0x3a6efd-0x0;var _0x487b9a=_0xa9e0[_0x3a6efd];return _0x487b9a;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('0x8')]('/:id/configurations',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xf')]('/',auth['isAuthenticated'](),controller['create']);router['post']('/:id/configurations',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x11')](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x12')]);router['delete'](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);module[_0x0a9e('0x14')]=router;
\ No newline at end of file
index 7944457..17c3056 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['remoteUri','sequelize','exports','STRING','username'];(function(_0x1a1695,_0x4c1057){var _0x20744d=function(_0x135f46){while(--_0x135f46){_0x1a1695['push'](_0x1a1695['shift']());}};_0x20744d(++_0x4c1057);}(_0xa9e0,0x123));var _0x0a9e=function(_0x102e37,_0x14a181){_0x102e37=_0x102e37-0x0;var _0x35a07c=_0xa9e0[_0x102e37];return _0x35a07c;};'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(_0x58a91f,_0x58cbd9){var _0x2cbe22=function(_0x558d8e){while(--_0x558d8e){_0x58a91f['push'](_0x58a91f['shift']());}};_0x2cbe22(++_0x58cbd9);}(_0xa9e0,0x123));var _0x0a9e=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xa9e0[_0x14add3];return _0x4a174f;};'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 796fdcc..476f392 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3abb=['ejs','lodash','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../components/integrations/configuration','sendStatus','status','json','offset','undefined','count','set','Content-Range','save','update','destroy','then','end','error','stack','name','send','index','map','SugarcrmAccount','rawAttributes','type','key','model','query','filters','attributes','intersection','fields','hasOwnProperty','nolimit','limit','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','keys','length','find','body','catch','params','getConfigurations','addConfiguration','findOne','AccountId','getSubjects','channel','Descriptions','SugarcrmConfiguration','create','SugarcrmField','getFields','assigned_user_id','created_by','description','date_start','duration_minutes','parent_id','parent_name','direction','username','password','remoteUri','slice','substring','lastIndexOf','format','/service/v4_1/rest.php','login','JSON','stringify','PLAIN','xCALLY\x20Motion\x20Integration','Password\x20Expired','POST','%s%s','get_module_fields','module_fields','remove','includes','label','value','statusCode','test','Wrong\x20credentials','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv'];(function(_0x109bb6,_0x29b46a){var _0x4f092d=function(_0x553ad9){while(--_0x553ad9){_0x109bb6['push'](_0x109bb6['shift']());}};_0x4f092d(++_0x29b46a);}(_0x3abb,0x6e));var _0xb3ab=function(_0x2080a3,_0x48acfa){_0x2080a3=_0x2080a3-0x0;var _0x8d7d17=_0x3abb[_0x2080a3];return _0x8d7d17;};'use strict';var emlformat=require(_0xb3ab('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xb3ab('0x1'));var jsonpatch=require(_0xb3ab('0x2'));var rp=require(_0xb3ab('0x3'));var moment=require(_0xb3ab('0x4'));var BPromise=require(_0xb3ab('0x5'));var Mustache=require(_0xb3ab('0x6'));var util=require(_0xb3ab('0x7'));var path=require('path');var sox=require(_0xb3ab('0x8'));var csv=require(_0xb3ab('0x9'));var ejs=require(_0xb3ab('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb3ab('0xb'));var squel=require('squel');var crypto=require(_0xb3ab('0xc'));var jsforce=require(_0xb3ab('0xd'));var deskjs=require(_0xb3ab('0xe'));var toCsv=require('to-csv');var querystring=require(_0xb3ab('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xb3ab('0x10'));var qs=require(_0xb3ab('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xb3ab('0x12'));var logger=require(_0xb3ab('0x13'))(_0xb3ab('0x14'));var utils=require(_0xb3ab('0x15'));var config=require(_0xb3ab('0x16'));var licenseUtil=require(_0xb3ab('0x17'));var db=require('../../mysqldb')['db'];var integrations=require(_0xb3ab('0x18'));function respondWithStatusCode(_0x2005c5,_0x262a51){_0x262a51=_0x262a51||0xcc;return function(_0x51d372){if(_0x51d372){return _0x2005c5[_0xb3ab('0x19')](_0x262a51);}return _0x2005c5[_0xb3ab('0x1a')](_0x262a51)['end']();};}function respondWithResult(_0x179517,_0x1ec185){_0x1ec185=_0x1ec185||0xc8;return function(_0x74a4d8){if(_0x74a4d8){return _0x179517[_0xb3ab('0x1a')](_0x1ec185)[_0xb3ab('0x1b')](_0x74a4d8);}};}function respondWithFilteredResult(_0x452a9a,_0x4aa02e){return function(_0x36137e){if(_0x36137e){var _0x2c2645=typeof _0x4aa02e[_0xb3ab('0x1c')]===_0xb3ab('0x1d')&&typeof _0x4aa02e['limit']==='undefined';var _0x30d48c=_0x36137e[_0xb3ab('0x1e')];var _0x198600=_0x2c2645?0x0:_0x4aa02e[_0xb3ab('0x1c')];var _0x14964b=_0x2c2645?_0x36137e['count']:_0x4aa02e['offset']+_0x4aa02e['limit'];var _0x1eb477;if(_0x14964b>=_0x30d48c){_0x14964b=_0x30d48c;_0x1eb477=0xc8;}else{_0x1eb477=0xce;}_0x452a9a[_0xb3ab('0x1a')](_0x1eb477);return _0x452a9a[_0xb3ab('0x1f')](_0xb3ab('0x20'),_0x198600+'-'+_0x14964b+'/'+_0x30d48c)[_0xb3ab('0x1b')](_0x36137e);}return null;};}function patchUpdates(_0x4957d2){return function(_0x30063d){try{jsonpatch['apply'](_0x30063d,_0x4957d2,!![]);}catch(_0x1d1c22){return BPromise['reject'](_0x1d1c22);}return _0x30063d[_0xb3ab('0x21')]();};}function saveUpdates(_0x47f401,_0x265bd3){return function(_0x497533){if(_0x497533){return _0x497533[_0xb3ab('0x22')](_0x47f401)['then'](function(_0x59af4e){return _0x59af4e;});}return null;};}function removeEntity(_0x308b61,_0x3d9f58){return function(_0x56b2b9){if(_0x56b2b9){return _0x56b2b9[_0xb3ab('0x23')]()[_0xb3ab('0x24')](function(){_0x308b61[_0xb3ab('0x1a')](0xcc)[_0xb3ab('0x25')]();});}};}function handleEntityNotFound(_0x35be27,_0x4f41cb){return function(_0x3ddb59){if(!_0x3ddb59){_0x35be27[_0xb3ab('0x19')](0x194);}return _0x3ddb59;};}function handleError(_0x3ffe7e,_0x55a8e7){_0x55a8e7=_0x55a8e7||0x1f4;return function(_0x16a5e3){logger[_0xb3ab('0x26')](_0x16a5e3[_0xb3ab('0x27')]);if(_0x16a5e3[_0xb3ab('0x28')]){delete _0x16a5e3[_0xb3ab('0x28')];}_0x3ffe7e[_0xb3ab('0x1a')](_0x55a8e7)[_0xb3ab('0x29')](_0x16a5e3);};}exports[_0xb3ab('0x2a')]=function(_0x591c3c,_0x79aeca){var _0x36db16={},_0x1889ec={},_0x55b306={'count':0x0,'rows':[]};var _0x248b46=_[_0xb3ab('0x2b')](db[_0xb3ab('0x2c')][_0xb3ab('0x2d')],function(_0x2338b4){return{'name':_0x2338b4['fieldName'],'type':_0x2338b4[_0xb3ab('0x2e')][_0xb3ab('0x2f')]};});_0x1889ec[_0xb3ab('0x30')]=_[_0xb3ab('0x2b')](_0x248b46,_0xb3ab('0x28'));_0x1889ec[_0xb3ab('0x31')]=_['keys'](_0x591c3c[_0xb3ab('0x31')]);_0x1889ec[_0xb3ab('0x32')]=_['intersection'](_0x1889ec[_0xb3ab('0x30')],_0x1889ec[_0xb3ab('0x31')]);_0x36db16[_0xb3ab('0x33')]=_[_0xb3ab('0x34')](_0x1889ec[_0xb3ab('0x30')],qs[_0xb3ab('0x35')](_0x591c3c[_0xb3ab('0x31')][_0xb3ab('0x35')]));_0x36db16[_0xb3ab('0x33')]=_0x36db16['attributes']['length']?_0x36db16['attributes']:_0x1889ec['model'];if(!_0x591c3c[_0xb3ab('0x31')][_0xb3ab('0x36')](_0xb3ab('0x37'))){_0x36db16[_0xb3ab('0x38')]=qs[_0xb3ab('0x38')](_0x591c3c[_0xb3ab('0x31')][_0xb3ab('0x38')]);_0x36db16[_0xb3ab('0x1c')]=qs[_0xb3ab('0x1c')](_0x591c3c['query'][_0xb3ab('0x1c')]);}_0x36db16[_0xb3ab('0x39')]=qs[_0xb3ab('0x3a')](_0x591c3c['query']['sort']);_0x36db16['where']=qs['filters'](_[_0xb3ab('0x3b')](_0x591c3c[_0xb3ab('0x31')],_0x1889ec[_0xb3ab('0x32')]),_0x248b46);if(_0x591c3c[_0xb3ab('0x31')][_0xb3ab('0x3c')]){_0x36db16[_0xb3ab('0x3d')]=_[_0xb3ab('0x3e')](_0x36db16['where'],{'$or':_[_0xb3ab('0x2b')](_0x248b46,function(_0x5d884f){if(_0x5d884f[_0xb3ab('0x2e')]!==_0xb3ab('0x3f')){var _0x15c7b8={};_0x15c7b8[_0x5d884f[_0xb3ab('0x28')]]={'$like':'%'+_0x591c3c[_0xb3ab('0x31')][_0xb3ab('0x3c')]+'%'};return _0x15c7b8;}})});}_0x36db16=_['merge']({},_0x36db16,_0x591c3c[_0xb3ab('0x40')]);var _0x1b5293={'where':_0x36db16[_0xb3ab('0x3d')]};return db['SugarcrmAccount'][_0xb3ab('0x1e')](_0x1b5293)['then'](function(_0x5b5c7e){_0x55b306[_0xb3ab('0x1e')]=_0x5b5c7e;if(_0x591c3c[_0xb3ab('0x31')][_0xb3ab('0x41')]){_0x36db16[_0xb3ab('0x42')]=[{'all':!![]}];}return db[_0xb3ab('0x2c')][_0xb3ab('0x43')](_0x36db16);})[_0xb3ab('0x24')](function(_0x459593){_0x55b306[_0xb3ab('0x44')]=_0x459593;return _0x55b306;})['then'](respondWithFilteredResult(_0x79aeca,_0x36db16))['catch'](handleError(_0x79aeca,null));};exports[_0xb3ab('0x45')]=function(_0x44c100,_0x28ef66){var _0x15632a={'raw':![],'where':{'id':_0x44c100['params']['id']}},_0x5ec490={};_0x5ec490[_0xb3ab('0x30')]=_[_0xb3ab('0x46')](db['SugarcrmAccount'][_0xb3ab('0x2d')]);_0x5ec490[_0xb3ab('0x31')]=_[_0xb3ab('0x46')](_0x44c100['query']);_0x5ec490[_0xb3ab('0x32')]=_[_0xb3ab('0x34')](_0x5ec490[_0xb3ab('0x30')],_0x5ec490['query']);_0x15632a['attributes']=_['intersection'](_0x5ec490[_0xb3ab('0x30')],qs['fields'](_0x44c100[_0xb3ab('0x31')][_0xb3ab('0x35')]));_0x15632a[_0xb3ab('0x33')]=_0x15632a[_0xb3ab('0x33')][_0xb3ab('0x47')]?_0x15632a['attributes']:_0x5ec490[_0xb3ab('0x30')];if(_0x44c100['query'][_0xb3ab('0x41')]){_0x15632a[_0xb3ab('0x42')]=[{'all':!![]}];}_0x15632a=_[_0xb3ab('0x3e')]({},_0x15632a,_0x44c100[_0xb3ab('0x40')]);return db[_0xb3ab('0x2c')][_0xb3ab('0x48')](_0x15632a)[_0xb3ab('0x24')](handleEntityNotFound(_0x28ef66,null))[_0xb3ab('0x24')](respondWithResult(_0x28ef66,null))['catch'](handleError(_0x28ef66,null));};exports['create']=function(_0x11e72e,_0x233dd3){return db[_0xb3ab('0x2c')]['create'](_0x11e72e[_0xb3ab('0x49')],{})['then'](respondWithResult(_0x233dd3,0xc9))[_0xb3ab('0x4a')](handleError(_0x233dd3,null));};exports[_0xb3ab('0x22')]=function(_0x5e4006,_0x18c3d1){if(_0x5e4006[_0xb3ab('0x49')]['id']){delete _0x5e4006[_0xb3ab('0x49')]['id'];}return db[_0xb3ab('0x2c')][_0xb3ab('0x48')]({'where':{'id':_0x5e4006[_0xb3ab('0x4b')]['id']}})[_0xb3ab('0x24')](handleEntityNotFound(_0x18c3d1,null))[_0xb3ab('0x24')](saveUpdates(_0x5e4006[_0xb3ab('0x49')],null))[_0xb3ab('0x24')](respondWithResult(_0x18c3d1,null))[_0xb3ab('0x4a')](handleError(_0x18c3d1,null));};exports[_0xb3ab('0x23')]=function(_0x5245e7,_0x2019f8){return db[_0xb3ab('0x2c')]['find']({'where':{'id':_0x5245e7[_0xb3ab('0x4b')]['id']}})[_0xb3ab('0x24')](handleEntityNotFound(_0x2019f8,null))[_0xb3ab('0x24')](removeEntity(_0x2019f8,null))[_0xb3ab('0x4a')](handleError(_0x2019f8,null));};exports[_0xb3ab('0x4c')]=function(_0x477996,_0xc80cd4,_0x39358c){var _0x5dc38e={};var _0x10e992={};var _0x16df31;var _0x2fc8f5;return db[_0xb3ab('0x2c')]['findOne']({'where':{'id':_0x477996[_0xb3ab('0x4b')]['id']}})['then'](handleEntityNotFound(_0xc80cd4,null))[_0xb3ab('0x24')](function(_0x55bcd4){if(_0x55bcd4){_0x16df31=_0x55bcd4;_0x10e992[_0xb3ab('0x30')]=_[_0xb3ab('0x46')](db['SugarcrmConfiguration']['rawAttributes']);_0x10e992[_0xb3ab('0x31')]=_[_0xb3ab('0x46')](_0x477996[_0xb3ab('0x31')]);_0x10e992[_0xb3ab('0x32')]=_[_0xb3ab('0x34')](_0x10e992['model'],_0x10e992[_0xb3ab('0x31')]);_0x5dc38e[_0xb3ab('0x33')]=_[_0xb3ab('0x34')](_0x10e992[_0xb3ab('0x30')],qs[_0xb3ab('0x35')](_0x477996[_0xb3ab('0x31')][_0xb3ab('0x35')]));_0x5dc38e[_0xb3ab('0x33')]=_0x5dc38e[_0xb3ab('0x33')]['length']?_0x5dc38e[_0xb3ab('0x33')]:_0x10e992[_0xb3ab('0x30')];_0x5dc38e[_0xb3ab('0x39')]=qs[_0xb3ab('0x3a')](_0x477996[_0xb3ab('0x31')][_0xb3ab('0x3a')]);_0x5dc38e['where']=qs[_0xb3ab('0x32')](_[_0xb3ab('0x3b')](_0x477996[_0xb3ab('0x31')],_0x10e992['filters']));if(_0x477996[_0xb3ab('0x31')]['filter']){_0x5dc38e[_0xb3ab('0x3d')]=_[_0xb3ab('0x3e')](_0x5dc38e[_0xb3ab('0x3d')],{'$or':_[_0xb3ab('0x2b')](_0x5dc38e[_0xb3ab('0x33')],function(_0x11570f){var _0x30a6a1={};_0x30a6a1[_0x11570f]={'$like':'%'+_0x477996[_0xb3ab('0x31')][_0xb3ab('0x3c')]+'%'};return _0x30a6a1;})});}_0x5dc38e=_[_0xb3ab('0x3e')]({},_0x5dc38e,_0x477996[_0xb3ab('0x40')]);return _0x16df31[_0xb3ab('0x4c')](_0x5dc38e);}})[_0xb3ab('0x24')](function(_0xcddf98){if(_0xcddf98){_0x2fc8f5=_0xcddf98[_0xb3ab('0x47')];if(!_0x477996[_0xb3ab('0x31')][_0xb3ab('0x36')](_0xb3ab('0x37'))){_0x5dc38e['limit']=qs[_0xb3ab('0x38')](_0x477996[_0xb3ab('0x31')][_0xb3ab('0x38')]);_0x5dc38e[_0xb3ab('0x1c')]=qs[_0xb3ab('0x1c')](_0x477996['query'][_0xb3ab('0x1c')]);}return _0x16df31['getConfigurations'](_0x5dc38e);}})[_0xb3ab('0x24')](function(_0xa3fa){if(_0xa3fa){return _0xa3fa?{'count':_0x2fc8f5,'rows':_0xa3fa}:null;}})[_0xb3ab('0x24')](respondWithResult(_0xc80cd4,null))[_0xb3ab('0x4a')](handleError(_0xc80cd4,null));};exports[_0xb3ab('0x4d')]=function(_0x28e370,_0x622c71,_0x511a1c){if(_0x28e370[_0xb3ab('0x49')]['id']){delete _0x28e370[_0xb3ab('0x49')]['id'];}return db[_0xb3ab('0x2c')][_0xb3ab('0x4e')]({'where':{'id':_0x28e370[_0xb3ab('0x4b')]['id']}})[_0xb3ab('0x24')](handleEntityNotFound(_0x622c71,null))[_0xb3ab('0x24')](function(_0x39c9e4){if(_0x39c9e4){_0x28e370[_0xb3ab('0x49')][_0xb3ab('0x4f')]=_0x39c9e4['id'];_0x28e370['body']['Subjects']=integrations[_0xb3ab('0x50')](_0x28e370[_0xb3ab('0x49')][_0xb3ab('0x51')],_0x28e370[_0xb3ab('0x49')]['type']);_0x28e370[_0xb3ab('0x49')][_0xb3ab('0x52')]=integrations['getDescriptions'](_0x28e370['body'][_0xb3ab('0x51')],_0x28e370[_0xb3ab('0x49')][_0xb3ab('0x2e')]);return db[_0xb3ab('0x53')][_0xb3ab('0x54')](_0x28e370[_0xb3ab('0x49')],{'include':[{'model':db[_0xb3ab('0x55')],'as':'Subjects'},{'model':db[_0xb3ab('0x55')],'as':_0xb3ab('0x52')}]});}return null;})[_0xb3ab('0x24')](respondWithResult(_0x622c71,null))[_0xb3ab('0x4a')](handleError(_0x622c71,null));};exports[_0xb3ab('0x56')]=function(_0x44c900,_0x712a46,_0x19a807){var _0x56dc45='';var _0x5102c0=['id','name',_0xb3ab('0x57'),_0xb3ab('0x58'),_0xb3ab('0x59'),_0xb3ab('0x5a'),'duration_hours',_0xb3ab('0x5b'),_0xb3ab('0x5c'),'parent_type',_0xb3ab('0x5d'),_0xb3ab('0x5e')];return db[_0xb3ab('0x2c')][_0xb3ab('0x4e')]({'where':{'id':_0x44c900[_0xb3ab('0x4b')]['id']},'attributes':['id',_0xb3ab('0x5f'),_0xb3ab('0x60'),_0xb3ab('0x61')]})[_0xb3ab('0x24')](handleEntityNotFound(_0x712a46,null))[_0xb3ab('0x24')](function(_0x43997a){if(_0x43997a){_0x56dc45=_0x43997a[_0xb3ab('0x61')];var _0x2351aa=_0x56dc45[_0xb3ab('0x62')](-0x1);if(_0x2351aa==='/'){_0x56dc45=_0x56dc45[_0xb3ab('0x63')](0x0,_0x56dc45[_0xb3ab('0x64')](_0x2351aa));}return rp({'method':'POST','uri':util[_0xb3ab('0x65')]('%s%s',_0x56dc45,_0xb3ab('0x66')),'json':!![],'form':{'method':_0xb3ab('0x67'),'input_type':_0xb3ab('0x68'),'response_type':_0xb3ab('0x68'),'rest_data':JSON[_0xb3ab('0x69')]({'user_auth':{'user_name':_0x43997a[_0xb3ab('0x5f')],'password':_0x43997a['password'],'encryption':_0xb3ab('0x6a')},'application':_0xb3ab('0x6b')})}});}})['then'](function(_0x540263){if(_0x540263&&_0x540263[_0xb3ab('0x28')]!=='Invalid\x20Login'&&_0x540263[_0xb3ab('0x28')]!==_0xb3ab('0x6c')){return rp({'method':_0xb3ab('0x6d'),'uri':util['format'](_0xb3ab('0x6e'),_0x56dc45,_0xb3ab('0x66')),'json':!![],'form':{'method':_0xb3ab('0x6f'),'input_type':_0xb3ab('0x68'),'response_type':_0xb3ab('0x68'),'rest_data':JSON[_0xb3ab('0x69')]({'session':_0x540263['id'],'module_name':'Calls'})}})[_0xb3ab('0x24')](function(_0x21bc9c){if(_0x21bc9c){var _0x273b9a=_['values'](_0x21bc9c[_0xb3ab('0x70')]);_[_0xb3ab('0x71')](_0x273b9a,function(_0x470955){return _0x5102c0[_0xb3ab('0x72')](_0x470955[_0xb3ab('0x28')]);});return{'count':_0x273b9a[_0xb3ab('0x47')],'rows':_['map'](_0x273b9a,function(_0x4eb43a){return{'id':_0x4eb43a[_0xb3ab('0x28')],'name':_0x4eb43a[_0xb3ab('0x73')],'custom':_['endsWith'](_0x4eb43a['name'],'_c')?!![]:![],'options':_0x4eb43a[_0xb3ab('0x40')]?_[_0xb3ab('0x2b')](_['values'](_0x4eb43a[_0xb3ab('0x40')]),function(_0x257f9f){return{'name':_0x257f9f[_0xb3ab('0x74')],'value':_0x257f9f[_0xb3ab('0x28')]};}):[]};})};}})['then'](respondWithResult(_0x712a46,null))[_0xb3ab('0x4a')](function(_0x3ac287){var _0x4583a6=_0x44c900[_0xb3ab('0x31')]['test']?0x1f4:_0x3ac287[_0xb3ab('0x75')]||0x1f4;logger[_0xb3ab('0x26')]('getFields,\x20%s,\x20%s,\x20%s','getFields',_0x4583a6,JSON[_0xb3ab('0x69')](_0x3ac287));delete _0x3ac287[_0xb3ab('0x28')];if(_0x4583a6===0x191){_0x4583a6=0x190;}_0x712a46[_0xb3ab('0x1a')](_0x4583a6)[_0xb3ab('0x29')](_0x44c900[_0xb3ab('0x31')][_0xb3ab('0x76')]?{'message':'Wrong\x20credentials','statusCode':_0x3ac287[_0xb3ab('0x75')]}:_0x3ac287);});}else{var _0x4b2e64=0x1f4;_0x712a46[_0xb3ab('0x1a')](_0x4b2e64)[_0xb3ab('0x29')]({'message':_0xb3ab('0x77'),'statusCode':0x190});}});};
\ No newline at end of file
+var _0x6bdc=['../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','end','status','json','limit','undefined','count','offset','set','Content-Range','apply','save','update','then','destroy','error','stack','name','send','index','SugarcrmAccount','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','includeAll','include','findAll','rows','show','params','rawAttributes','options','find','catch','create','body','getConfigurations','SugarcrmConfiguration','addConfiguration','findOne','AccountId','getSubjects','Descriptions','getDescriptions','channel','SugarcrmField','Subjects','getFields','assigned_user_id','created_by','description','date_start','duration_hours','parent_type','parent_name','direction','username','remoteUri','slice','substring','POST','format','%s%s','/service/v4_1/rest.php','login','JSON','password','PLAIN','Invalid\x20Login','Password\x20Expired','get_module_fields','stringify','module_fields','remove','includes','label','values','value','test','getFields,\x20%s,\x20%s,\x20%s','Wrong\x20credentials','statusCode','eml-format','rimraf','zip-dir','fast-json-patch','moment','util','path','sox','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils'];(function(_0x202003,_0x2b9ff0){var _0x5e9189=function(_0x2b6f86){while(--_0x2b6f86){_0x202003['push'](_0x202003['shift']());}};_0x5e9189(++_0x2b9ff0);}(_0x6bdc,0x1e1));var _0xc6bd=function(_0x382ec1,_0x18e382){_0x382ec1=_0x382ec1-0x0;var _0x9c208f=_0x6bdc[_0x382ec1];return _0x9c208f;};'use strict';var emlformat=require(_0xc6bd('0x0'));var rimraf=require(_0xc6bd('0x1'));var zipdir=require(_0xc6bd('0x2'));var jsonpatch=require(_0xc6bd('0x3'));var rp=require('request-promise');var moment=require(_0xc6bd('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xc6bd('0x5'));var path=require(_0xc6bd('0x6'));var sox=require(_0xc6bd('0x7'));var csv=require('to-csv');var ejs=require(_0xc6bd('0x8'));var fs=require('fs');var fs_extra=require(_0xc6bd('0x9'));var _=require(_0xc6bd('0xa'));var squel=require('squel');var crypto=require(_0xc6bd('0xb'));var jsforce=require(_0xc6bd('0xc'));var deskjs=require(_0xc6bd('0xd'));var toCsv=require('to-csv');var querystring=require(_0xc6bd('0xe'));var Papa=require(_0xc6bd('0xf'));var Redis=require('ioredis');var authService=require(_0xc6bd('0x10'));var qs=require(_0xc6bd('0x11'));var as=require(_0xc6bd('0x12'));var hardwareService=require(_0xc6bd('0x13'));var logger=require(_0xc6bd('0x14'))(_0xc6bd('0x15'));var utils=require(_0xc6bd('0x16'));var config=require(_0xc6bd('0x17'));var licenseUtil=require(_0xc6bd('0x18'));var db=require(_0xc6bd('0x19'))['db'];var integrations=require(_0xc6bd('0x1a'));function respondWithStatusCode(_0x827e7c,_0x428b25){_0x428b25=_0x428b25||0xcc;return function(_0x3675cb){if(_0x3675cb){return _0x827e7c[_0xc6bd('0x1b')](_0x428b25);}return _0x827e7c['status'](_0x428b25)[_0xc6bd('0x1c')]();};}function respondWithResult(_0x935cd2,_0x1626b9){_0x1626b9=_0x1626b9||0xc8;return function(_0x7fe8a2){if(_0x7fe8a2){return _0x935cd2[_0xc6bd('0x1d')](_0x1626b9)[_0xc6bd('0x1e')](_0x7fe8a2);}};}function respondWithFilteredResult(_0x7383d1,_0x34c418){return function(_0x49bea3){if(_0x49bea3){var _0x4ecc12=typeof _0x34c418['offset']==='undefined'&&typeof _0x34c418[_0xc6bd('0x1f')]===_0xc6bd('0x20');var _0x3cf518=_0x49bea3[_0xc6bd('0x21')];var _0x471a0e=_0x4ecc12?0x0:_0x34c418[_0xc6bd('0x22')];var _0x2ef9e4=_0x4ecc12?_0x49bea3[_0xc6bd('0x21')]:_0x34c418['offset']+_0x34c418['limit'];var _0x354a8d;if(_0x2ef9e4>=_0x3cf518){_0x2ef9e4=_0x3cf518;_0x354a8d=0xc8;}else{_0x354a8d=0xce;}_0x7383d1[_0xc6bd('0x1d')](_0x354a8d);return _0x7383d1[_0xc6bd('0x23')](_0xc6bd('0x24'),_0x471a0e+'-'+_0x2ef9e4+'/'+_0x3cf518)['json'](_0x49bea3);}return null;};}function patchUpdates(_0x1cc4ce){return function(_0x46d45c){try{jsonpatch[_0xc6bd('0x25')](_0x46d45c,_0x1cc4ce,!![]);}catch(_0x296cd4){return BPromise['reject'](_0x296cd4);}return _0x46d45c[_0xc6bd('0x26')]();};}function saveUpdates(_0x3b7bf9,_0x3a8698){return function(_0x238234){if(_0x238234){return _0x238234[_0xc6bd('0x27')](_0x3b7bf9)[_0xc6bd('0x28')](function(_0x371346){return _0x371346;});}return null;};}function removeEntity(_0x1bff2a,_0x45a17d){return function(_0x4f6895){if(_0x4f6895){return _0x4f6895[_0xc6bd('0x29')]()[_0xc6bd('0x28')](function(){_0x1bff2a['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x56ea6f,_0x5edd2f){return function(_0x56a711){if(!_0x56a711){_0x56ea6f[_0xc6bd('0x1b')](0x194);}return _0x56a711;};}function handleError(_0x22b4d3,_0x464c17){_0x464c17=_0x464c17||0x1f4;return function(_0x264d30){logger[_0xc6bd('0x2a')](_0x264d30[_0xc6bd('0x2b')]);if(_0x264d30['name']){delete _0x264d30[_0xc6bd('0x2c')];}_0x22b4d3[_0xc6bd('0x1d')](_0x464c17)[_0xc6bd('0x2d')](_0x264d30);};}exports[_0xc6bd('0x2e')]=function(_0x28ac60,_0x412f9c){var _0x26a82f={},_0xaf3c28={},_0x5642cc={'count':0x0,'rows':[]};var _0x35887b=_['map'](db[_0xc6bd('0x2f')]['rawAttributes'],function(_0x344fe9){return{'name':_0x344fe9['fieldName'],'type':_0x344fe9[_0xc6bd('0x30')][_0xc6bd('0x31')]};});_0xaf3c28[_0xc6bd('0x32')]=_[_0xc6bd('0x33')](_0x35887b,_0xc6bd('0x2c'));_0xaf3c28[_0xc6bd('0x34')]=_[_0xc6bd('0x35')](_0x28ac60[_0xc6bd('0x34')]);_0xaf3c28[_0xc6bd('0x36')]=_[_0xc6bd('0x37')](_0xaf3c28[_0xc6bd('0x32')],_0xaf3c28[_0xc6bd('0x34')]);_0x26a82f[_0xc6bd('0x38')]=_['intersection'](_0xaf3c28[_0xc6bd('0x32')],qs[_0xc6bd('0x39')](_0x28ac60['query'][_0xc6bd('0x39')]));_0x26a82f[_0xc6bd('0x38')]=_0x26a82f[_0xc6bd('0x38')][_0xc6bd('0x3a')]?_0x26a82f['attributes']:_0xaf3c28[_0xc6bd('0x32')];if(!_0x28ac60[_0xc6bd('0x34')][_0xc6bd('0x3b')](_0xc6bd('0x3c'))){_0x26a82f[_0xc6bd('0x1f')]=qs[_0xc6bd('0x1f')](_0x28ac60['query'][_0xc6bd('0x1f')]);_0x26a82f[_0xc6bd('0x22')]=qs['offset'](_0x28ac60['query'][_0xc6bd('0x22')]);}_0x26a82f[_0xc6bd('0x3d')]=qs[_0xc6bd('0x3e')](_0x28ac60[_0xc6bd('0x34')]['sort']);_0x26a82f[_0xc6bd('0x3f')]=qs[_0xc6bd('0x36')](_[_0xc6bd('0x40')](_0x28ac60[_0xc6bd('0x34')],_0xaf3c28[_0xc6bd('0x36')]),_0x35887b);if(_0x28ac60['query']['filter']){_0x26a82f[_0xc6bd('0x3f')]=_[_0xc6bd('0x41')](_0x26a82f[_0xc6bd('0x3f')],{'$or':_[_0xc6bd('0x33')](_0x35887b,function(_0x59bf10){if(_0x59bf10[_0xc6bd('0x30')]!==_0xc6bd('0x42')){var _0x4326a0={};_0x4326a0[_0x59bf10[_0xc6bd('0x2c')]]={'$like':'%'+_0x28ac60[_0xc6bd('0x34')][_0xc6bd('0x43')]+'%'};return _0x4326a0;}})});}_0x26a82f=_[_0xc6bd('0x41')]({},_0x26a82f,_0x28ac60['options']);var _0x4830cc={'where':_0x26a82f[_0xc6bd('0x3f')]};return db[_0xc6bd('0x2f')][_0xc6bd('0x21')](_0x4830cc)[_0xc6bd('0x28')](function(_0x48e902){_0x5642cc['count']=_0x48e902;if(_0x28ac60['query'][_0xc6bd('0x44')]){_0x26a82f[_0xc6bd('0x45')]=[{'all':!![]}];}return db[_0xc6bd('0x2f')][_0xc6bd('0x46')](_0x26a82f);})[_0xc6bd('0x28')](function(_0x65d1e4){_0x5642cc[_0xc6bd('0x47')]=_0x65d1e4;return _0x5642cc;})[_0xc6bd('0x28')](respondWithFilteredResult(_0x412f9c,_0x26a82f))['catch'](handleError(_0x412f9c,null));};exports[_0xc6bd('0x48')]=function(_0x1ab7e0,_0x4b74bf){var _0x406f4a={'raw':![],'where':{'id':_0x1ab7e0[_0xc6bd('0x49')]['id']}},_0x369b64={};_0x369b64['model']=_[_0xc6bd('0x35')](db[_0xc6bd('0x2f')][_0xc6bd('0x4a')]);_0x369b64['query']=_['keys'](_0x1ab7e0[_0xc6bd('0x34')]);_0x369b64['filters']=_['intersection'](_0x369b64[_0xc6bd('0x32')],_0x369b64[_0xc6bd('0x34')]);_0x406f4a[_0xc6bd('0x38')]=_['intersection'](_0x369b64[_0xc6bd('0x32')],qs[_0xc6bd('0x39')](_0x1ab7e0[_0xc6bd('0x34')][_0xc6bd('0x39')]));_0x406f4a[_0xc6bd('0x38')]=_0x406f4a['attributes'][_0xc6bd('0x3a')]?_0x406f4a[_0xc6bd('0x38')]:_0x369b64[_0xc6bd('0x32')];if(_0x1ab7e0[_0xc6bd('0x34')][_0xc6bd('0x44')]){_0x406f4a[_0xc6bd('0x45')]=[{'all':!![]}];}_0x406f4a=_[_0xc6bd('0x41')]({},_0x406f4a,_0x1ab7e0[_0xc6bd('0x4b')]);return db[_0xc6bd('0x2f')][_0xc6bd('0x4c')](_0x406f4a)[_0xc6bd('0x28')](handleEntityNotFound(_0x4b74bf,null))['then'](respondWithResult(_0x4b74bf,null))[_0xc6bd('0x4d')](handleError(_0x4b74bf,null));};exports[_0xc6bd('0x4e')]=function(_0x88d645,_0x4c3638){return db[_0xc6bd('0x2f')][_0xc6bd('0x4e')](_0x88d645[_0xc6bd('0x4f')],{})[_0xc6bd('0x28')](respondWithResult(_0x4c3638,0xc9))[_0xc6bd('0x4d')](handleError(_0x4c3638,null));};exports['update']=function(_0xc6180,_0xaf5c48){if(_0xc6180[_0xc6bd('0x4f')]['id']){delete _0xc6180[_0xc6bd('0x4f')]['id'];}return db['SugarcrmAccount']['find']({'where':{'id':_0xc6180[_0xc6bd('0x49')]['id']}})[_0xc6bd('0x28')](handleEntityNotFound(_0xaf5c48,null))[_0xc6bd('0x28')](saveUpdates(_0xc6180[_0xc6bd('0x4f')],null))[_0xc6bd('0x28')](respondWithResult(_0xaf5c48,null))['catch'](handleError(_0xaf5c48,null));};exports[_0xc6bd('0x29')]=function(_0x486bf2,_0x2e4378){return db[_0xc6bd('0x2f')]['find']({'where':{'id':_0x486bf2[_0xc6bd('0x49')]['id']}})[_0xc6bd('0x28')](handleEntityNotFound(_0x2e4378,null))['then'](removeEntity(_0x2e4378,null))[_0xc6bd('0x4d')](handleError(_0x2e4378,null));};exports[_0xc6bd('0x50')]=function(_0x88961,_0x418732,_0x350e8c){var _0x5790dd={};var _0x4204e1={};var _0x537d80;var _0x5b6402;return db['SugarcrmAccount']['findOne']({'where':{'id':_0x88961['params']['id']}})[_0xc6bd('0x28')](handleEntityNotFound(_0x418732,null))['then'](function(_0xbe8c4a){if(_0xbe8c4a){_0x537d80=_0xbe8c4a;_0x4204e1[_0xc6bd('0x32')]=_['keys'](db[_0xc6bd('0x51')]['rawAttributes']);_0x4204e1[_0xc6bd('0x34')]=_[_0xc6bd('0x35')](_0x88961[_0xc6bd('0x34')]);_0x4204e1[_0xc6bd('0x36')]=_[_0xc6bd('0x37')](_0x4204e1[_0xc6bd('0x32')],_0x4204e1[_0xc6bd('0x34')]);_0x5790dd[_0xc6bd('0x38')]=_[_0xc6bd('0x37')](_0x4204e1['model'],qs[_0xc6bd('0x39')](_0x88961[_0xc6bd('0x34')][_0xc6bd('0x39')]));_0x5790dd['attributes']=_0x5790dd[_0xc6bd('0x38')][_0xc6bd('0x3a')]?_0x5790dd[_0xc6bd('0x38')]:_0x4204e1['model'];_0x5790dd[_0xc6bd('0x3d')]=qs[_0xc6bd('0x3e')](_0x88961[_0xc6bd('0x34')][_0xc6bd('0x3e')]);_0x5790dd[_0xc6bd('0x3f')]=qs['filters'](_[_0xc6bd('0x40')](_0x88961[_0xc6bd('0x34')],_0x4204e1[_0xc6bd('0x36')]));if(_0x88961['query']['filter']){_0x5790dd[_0xc6bd('0x3f')]=_['merge'](_0x5790dd[_0xc6bd('0x3f')],{'$or':_[_0xc6bd('0x33')](_0x5790dd[_0xc6bd('0x38')],function(_0x1abc47){var _0x5f0a50={};_0x5f0a50[_0x1abc47]={'$like':'%'+_0x88961[_0xc6bd('0x34')]['filter']+'%'};return _0x5f0a50;})});}_0x5790dd=_['merge']({},_0x5790dd,_0x88961['options']);return _0x537d80[_0xc6bd('0x50')](_0x5790dd);}})['then'](function(_0x3efcfd){if(_0x3efcfd){_0x5b6402=_0x3efcfd[_0xc6bd('0x3a')];if(!_0x88961[_0xc6bd('0x34')][_0xc6bd('0x3b')](_0xc6bd('0x3c'))){_0x5790dd['limit']=qs[_0xc6bd('0x1f')](_0x88961[_0xc6bd('0x34')]['limit']);_0x5790dd[_0xc6bd('0x22')]=qs[_0xc6bd('0x22')](_0x88961[_0xc6bd('0x34')][_0xc6bd('0x22')]);}return _0x537d80[_0xc6bd('0x50')](_0x5790dd);}})['then'](function(_0x14d804){if(_0x14d804){return _0x14d804?{'count':_0x5b6402,'rows':_0x14d804}:null;}})['then'](respondWithResult(_0x418732,null))[_0xc6bd('0x4d')](handleError(_0x418732,null));};exports[_0xc6bd('0x52')]=function(_0x4064bb,_0x3d6da0,_0x3c7316){if(_0x4064bb[_0xc6bd('0x4f')]['id']){delete _0x4064bb['body']['id'];}return db[_0xc6bd('0x2f')][_0xc6bd('0x53')]({'where':{'id':_0x4064bb[_0xc6bd('0x49')]['id']}})['then'](handleEntityNotFound(_0x3d6da0,null))['then'](function(_0x51dd1e){if(_0x51dd1e){_0x4064bb[_0xc6bd('0x4f')][_0xc6bd('0x54')]=_0x51dd1e['id'];_0x4064bb['body']['Subjects']=integrations[_0xc6bd('0x55')](_0x4064bb['body']['channel'],_0x4064bb['body']['type']);_0x4064bb[_0xc6bd('0x4f')][_0xc6bd('0x56')]=integrations[_0xc6bd('0x57')](_0x4064bb['body'][_0xc6bd('0x58')],_0x4064bb[_0xc6bd('0x4f')][_0xc6bd('0x30')]);return db[_0xc6bd('0x51')]['create'](_0x4064bb[_0xc6bd('0x4f')],{'include':[{'model':db[_0xc6bd('0x59')],'as':_0xc6bd('0x5a')},{'model':db[_0xc6bd('0x59')],'as':_0xc6bd('0x56')}]});}return null;})[_0xc6bd('0x28')](respondWithResult(_0x3d6da0,null))['catch'](handleError(_0x3d6da0,null));};exports[_0xc6bd('0x5b')]=function(_0x1b0941,_0x283b28,_0x5d4dff){var _0x56e697='';var _0x39afbe=['id',_0xc6bd('0x2c'),_0xc6bd('0x5c'),_0xc6bd('0x5d'),_0xc6bd('0x5e'),_0xc6bd('0x5f'),_0xc6bd('0x60'),'duration_minutes','parent_id',_0xc6bd('0x61'),_0xc6bd('0x62'),_0xc6bd('0x63')];return db[_0xc6bd('0x2f')][_0xc6bd('0x53')]({'where':{'id':_0x1b0941['params']['id']},'attributes':['id',_0xc6bd('0x64'),'password',_0xc6bd('0x65')]})[_0xc6bd('0x28')](handleEntityNotFound(_0x283b28,null))[_0xc6bd('0x28')](function(_0x4fd4d2){if(_0x4fd4d2){_0x56e697=_0x4fd4d2[_0xc6bd('0x65')];var _0x2cfdee=_0x56e697[_0xc6bd('0x66')](-0x1);if(_0x2cfdee==='/'){_0x56e697=_0x56e697[_0xc6bd('0x67')](0x0,_0x56e697['lastIndexOf'](_0x2cfdee));}return rp({'method':_0xc6bd('0x68'),'uri':util[_0xc6bd('0x69')](_0xc6bd('0x6a'),_0x56e697,_0xc6bd('0x6b')),'json':!![],'form':{'method':_0xc6bd('0x6c'),'input_type':_0xc6bd('0x6d'),'response_type':_0xc6bd('0x6d'),'rest_data':JSON['stringify']({'user_auth':{'user_name':_0x4fd4d2[_0xc6bd('0x64')],'password':_0x4fd4d2[_0xc6bd('0x6e')],'encryption':_0xc6bd('0x6f')},'application':'xCALLY\x20Motion\x20Integration'})}});}})[_0xc6bd('0x28')](function(_0x261838){if(_0x261838&&_0x261838[_0xc6bd('0x2c')]!==_0xc6bd('0x70')&&_0x261838['name']!==_0xc6bd('0x71')){return rp({'method':'POST','uri':util[_0xc6bd('0x69')](_0xc6bd('0x6a'),_0x56e697,_0xc6bd('0x6b')),'json':!![],'form':{'method':_0xc6bd('0x72'),'input_type':'JSON','response_type':_0xc6bd('0x6d'),'rest_data':JSON[_0xc6bd('0x73')]({'session':_0x261838['id'],'module_name':'Calls'})}})[_0xc6bd('0x28')](function(_0x4b76e1){if(_0x4b76e1){var _0xe54760=_['values'](_0x4b76e1[_0xc6bd('0x74')]);_[_0xc6bd('0x75')](_0xe54760,function(_0x4432c1){return _0x39afbe[_0xc6bd('0x76')](_0x4432c1[_0xc6bd('0x2c')]);});return{'count':_0xe54760[_0xc6bd('0x3a')],'rows':_[_0xc6bd('0x33')](_0xe54760,function(_0x22e0a6){return{'id':_0x22e0a6[_0xc6bd('0x2c')],'name':_0x22e0a6[_0xc6bd('0x77')],'custom':_['endsWith'](_0x22e0a6['name'],'_c')?!![]:![],'options':_0x22e0a6[_0xc6bd('0x4b')]?_[_0xc6bd('0x33')](_[_0xc6bd('0x78')](_0x22e0a6['options']),function(_0xfd06d3){return{'name':_0xfd06d3[_0xc6bd('0x79')],'value':_0xfd06d3[_0xc6bd('0x2c')]};}):[]};})};}})[_0xc6bd('0x28')](respondWithResult(_0x283b28,null))[_0xc6bd('0x4d')](function(_0x371286){var _0xf6c0c9=_0x1b0941[_0xc6bd('0x34')][_0xc6bd('0x7a')]?0x1f4:_0x371286['statusCode']||0x1f4;logger[_0xc6bd('0x2a')](_0xc6bd('0x7b'),_0xc6bd('0x5b'),_0xf6c0c9,JSON[_0xc6bd('0x73')](_0x371286));delete _0x371286[_0xc6bd('0x2c')];if(_0xf6c0c9===0x191){_0xf6c0c9=0x190;}_0x283b28[_0xc6bd('0x1d')](_0xf6c0c9)[_0xc6bd('0x2d')](_0x1b0941[_0xc6bd('0x34')][_0xc6bd('0x7a')]?{'message':_0xc6bd('0x7c'),'statusCode':_0x371286[_0xc6bd('0x7d')]}:_0x371286);});}else{var _0x1ecdbe=0x1f4;_0x283b28[_0xc6bd('0x1d')](_0x1ecdbe)[_0xc6bd('0x2d')]({'message':_0xc6bd('0x7c'),'statusCode':0x190});}});};
\ No newline at end of file
index e120aee..0a18d4c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x513e=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intSugarcrmAccount.attributes','exports','define','SugarcrmAccount','int_sugarcrm_accounts','lodash','util','../../config/logger'];(function(_0x388a57,_0x57d885){var _0x85c874=function(_0x40a4f9){while(--_0x40a4f9){_0x388a57['push'](_0x388a57['shift']());}};_0x85c874(++_0x57d885);}(_0x513e,0x138));var _0xe513=function(_0x256b72,_0x340985){_0x256b72=_0x256b72-0x0;var _0x2183e3=_0x513e[_0x256b72];return _0x2183e3;};'use strict';var _=require(_0xe513('0x0'));var util=require(_0xe513('0x1'));var logger=require(_0xe513('0x2'))(_0xe513('0x3'));var moment=require(_0xe513('0x4'));var BPromise=require(_0xe513('0x5'));var rp=require(_0xe513('0x6'));var fs=require('fs');var path=require(_0xe513('0x7'));var rimraf=require(_0xe513('0x8'));var config=require(_0xe513('0x9'));var attributes=require(_0xe513('0xa'));var integrations=require('../../components/integrations/configuration');module[_0xe513('0xb')]=function(_0x4cf910,_0x2dd1bd){return _0x4cf910[_0xe513('0xc')](_0xe513('0xd'),attributes,{'tableName':_0xe513('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4bd3=['int_sugarcrm_accounts','api','moment','path','rimraf','../../config/environment','../../components/integrations/configuration','exports','define','SugarcrmAccount'];(function(_0x244762,_0x454dcf){var _0x17f11d=function(_0x1ff330){while(--_0x1ff330){_0x244762['push'](_0x244762['shift']());}};_0x17f11d(++_0x454dcf);}(_0x4bd3,0x10f));var _0x34bd=function(_0x141d60,_0x3abb43){_0x141d60=_0x141d60-0x0;var _0x25fde7=_0x4bd3[_0x141d60];return _0x25fde7;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0x34bd('0x0'));var moment=require(_0x34bd('0x1'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x34bd('0x2'));var rimraf=require(_0x34bd('0x3'));var config=require(_0x34bd('0x4'));var attributes=require('./intSugarcrmAccount.attributes');var integrations=require(_0x34bd('0x5'));module[_0x34bd('0x6')]=function(_0x29c72d,_0x211fe){return _0x29c72d[_0x34bd('0x7')](_0x34bd('0x8'),attributes,{'tableName':_0x34bd('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index de1375c..dd49c3e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e94=['options','raw','where','attributes','include','model','map','GetSugarcrmAccount','ShowSugarcrmAccount','find','stringify','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','SugarcrmAccount,\x20%s,\x20%s','request\x20sent','debug','SugarcrmAccount,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','SugarcrmAccount','findAll'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0x9e94,0x173));var _0x49e9=function(_0x55abb6,_0x17a62c){_0x55abb6=_0x55abb6-0x0;var _0x619b3b=_0x9e94[_0x55abb6];return _0x619b3b;};'use strict';var _=require(_0x49e9('0x0'));var util=require(_0x49e9('0x1'));var moment=require(_0x49e9('0x2'));var BPromise=require(_0x49e9('0x3'));var rs=require(_0x49e9('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x49e9('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x49e9('0x6'))(_0x49e9('0x7'));var config=require(_0x49e9('0x8'));var jayson=require(_0x49e9('0x9'));var client=jayson[_0x49e9('0xa')][_0x49e9('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x14988f,_0x20b212,_0x2b785b){return new BPromise(function(_0x288ce2,_0x3432a1){return client['request'](_0x14988f,_0x2b785b)[_0x49e9('0xc')](function(_0x32068e){logger[_0x49e9('0xd')](_0x49e9('0xe'),_0x20b212,_0x49e9('0xf'));logger[_0x49e9('0x10')](_0x49e9('0x11'),_0x20b212,_0x49e9('0xf'),JSON['stringify'](_0x32068e));if(_0x32068e[_0x49e9('0x12')]){if(_0x32068e[_0x49e9('0x12')][_0x49e9('0x13')]===0x1f4){logger['error'](_0x49e9('0xe'),_0x20b212,_0x32068e[_0x49e9('0x12')][_0x49e9('0x14')]);return _0x3432a1(_0x32068e[_0x49e9('0x12')][_0x49e9('0x14')]);}logger[_0x49e9('0x12')]('SugarcrmAccount,\x20%s,\x20%s',_0x20b212,_0x32068e[_0x49e9('0x12')][_0x49e9('0x14')]);return _0x288ce2(_0x32068e[_0x49e9('0x12')][_0x49e9('0x14')]);}else{logger[_0x49e9('0xd')]('SugarcrmAccount,\x20%s,\x20%s',_0x20b212,'request\x20sent');_0x288ce2(_0x32068e[_0x49e9('0x15')]['message']);}})[_0x49e9('0x16')](function(_0x5f12e8){logger[_0x49e9('0x12')](_0x49e9('0xe'),_0x20b212,_0x5f12e8);_0x3432a1(_0x5f12e8);});});}exports['GetSugarcrmAccount']=function(_0x4fa35a){var _0x40b532=this;return new Promise(function(_0x90a32e,_0x33cea8){return db[_0x49e9('0x17')][_0x49e9('0x18')]({'raw':_0x4fa35a[_0x49e9('0x19')]?_0x4fa35a[_0x49e9('0x19')][_0x49e9('0x1a')]===undefined?!![]:![]:!![],'where':_0x4fa35a[_0x49e9('0x19')]?_0x4fa35a[_0x49e9('0x19')][_0x49e9('0x1b')]||null:null,'attributes':_0x4fa35a[_0x49e9('0x19')]?_0x4fa35a[_0x49e9('0x19')][_0x49e9('0x1c')]||null:null,'limit':_0x4fa35a[_0x49e9('0x19')]?_0x4fa35a[_0x49e9('0x19')]['limit']||null:null,'include':_0x4fa35a[_0x49e9('0x19')]?_0x4fa35a['options'][_0x49e9('0x1d')]?_['map'](_0x4fa35a[_0x49e9('0x19')][_0x49e9('0x1d')],function(_0x3c2d63){return{'model':db[_0x3c2d63[_0x49e9('0x1e')]],'as':_0x3c2d63['as'],'attributes':_0x3c2d63[_0x49e9('0x1c')],'include':_0x3c2d63[_0x49e9('0x1d')]?_[_0x49e9('0x1f')](_0x3c2d63[_0x49e9('0x1d')],function(_0x206be0){return{'model':db[_0x206be0[_0x49e9('0x1e')]],'as':_0x206be0['as'],'attributes':_0x206be0[_0x49e9('0x1c')],'include':_0x206be0['include']?_[_0x49e9('0x1f')](_0x206be0[_0x49e9('0x1d')],function(_0xfd766e){return{'model':db[_0xfd766e[_0x49e9('0x1e')]],'as':_0xfd766e['as'],'attributes':_0xfd766e[_0x49e9('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x49e9('0xc')](function(_0x348c04){logger[_0x49e9('0xd')](_0x49e9('0x20'),_0x4fa35a);logger[_0x49e9('0x10')]('GetSugarcrmAccount',_0x4fa35a,JSON['stringify'](_0x348c04));_0x90a32e(_0x348c04);})[_0x49e9('0x16')](function(_0x51d421){logger[_0x49e9('0x12')](_0x49e9('0x20'),_0x51d421['message'],_0x4fa35a);_0x33cea8(_0x40b532['error'](0x1f4,_0x51d421[_0x49e9('0x14')]));});});};exports[_0x49e9('0x21')]=function(_0x313f1c){var _0xaabbbe=this;return new Promise(function(_0x251585,_0x3a1ee6){return db['SugarcrmAccount'][_0x49e9('0x22')]({'raw':_0x313f1c['options']?_0x313f1c['options'][_0x49e9('0x1a')]===undefined?!![]:![]:!![],'where':_0x313f1c[_0x49e9('0x19')]?_0x313f1c['options'][_0x49e9('0x1b')]||null:null,'attributes':_0x313f1c['options']?_0x313f1c['options'][_0x49e9('0x1c')]||null:null,'include':_0x313f1c[_0x49e9('0x19')]?_0x313f1c[_0x49e9('0x19')]['include']?_[_0x49e9('0x1f')](_0x313f1c[_0x49e9('0x19')][_0x49e9('0x1d')],function(_0x3e5aa4){return{'model':db[_0x3e5aa4['model']],'as':_0x3e5aa4['as'],'attributes':_0x3e5aa4['attributes'],'include':_0x3e5aa4[_0x49e9('0x1d')]?_['map'](_0x3e5aa4[_0x49e9('0x1d')],function(_0x59cccf){return{'model':db[_0x59cccf[_0x49e9('0x1e')]],'as':_0x59cccf['as'],'attributes':_0x59cccf[_0x49e9('0x1c')],'include':_0x59cccf[_0x49e9('0x1d')]?_[_0x49e9('0x1f')](_0x59cccf[_0x49e9('0x1d')],function(_0x457e9c){return{'model':db[_0x457e9c[_0x49e9('0x1e')]],'as':_0x457e9c['as'],'attributes':_0x457e9c[_0x49e9('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x49e9('0xc')](function(_0x412660){logger[_0x49e9('0xd')](_0x49e9('0x21'),_0x313f1c);logger[_0x49e9('0x10')](_0x49e9('0x21'),_0x313f1c,JSON[_0x49e9('0x23')](_0x412660));_0x251585(_0x412660);})[_0x49e9('0x16')](function(_0x16df6a){logger[_0x49e9('0x12')](_0x49e9('0x21'),_0x16df6a[_0x49e9('0x14')],_0x313f1c);_0x3a1ee6(_0xaabbbe[_0x49e9('0x12')](0x1f4,_0x16df6a[_0x49e9('0x14')]));});});};
\ No newline at end of file
+var _0x185f=['options','raw','attributes','map','include','model','stringify','ShowSugarcrmAccount','find','where','lodash','util','moment','randomstring','ioredis','../../mysqldb','rpc','jayson/promise','http','request','then','info','SugarcrmAccount,\x20%s,\x20%s','request\x20sent','debug','SugarcrmAccount,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','GetSugarcrmAccount','SugarcrmAccount','findAll'];(function(_0x350830,_0x24ad35){var _0x17d587=function(_0x3ca0c7){while(--_0x3ca0c7){_0x350830['push'](_0x350830['shift']());}};_0x17d587(++_0x24ad35);}(_0x185f,0xb4));var _0xf185=function(_0x39237b,_0x277150){_0x39237b=_0x39237b-0x0;var _0x14ad30=_0x185f[_0x39237b];return _0x14ad30;};'use strict';var _=require(_0xf185('0x0'));var util=require(_0xf185('0x1'));var moment=require(_0xf185('0x2'));var BPromise=require('bluebird');var rs=require(_0xf185('0x3'));var fs=require('fs');var Redis=require(_0xf185('0x4'));var db=require(_0xf185('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xf185('0x6'));var config=require('../../config/environment');var jayson=require(_0xf185('0x7'));var client=jayson['client'][_0xf185('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3907a6,_0xfed64a,_0x3d29cc){return new BPromise(function(_0x267a47,_0x3686e2){return client[_0xf185('0x9')](_0x3907a6,_0x3d29cc)[_0xf185('0xa')](function(_0x3344ed){logger[_0xf185('0xb')](_0xf185('0xc'),_0xfed64a,_0xf185('0xd'));logger[_0xf185('0xe')](_0xf185('0xf'),_0xfed64a,_0xf185('0xd'),JSON['stringify'](_0x3344ed));if(_0x3344ed[_0xf185('0x10')]){if(_0x3344ed['error'][_0xf185('0x11')]===0x1f4){logger['error'](_0xf185('0xc'),_0xfed64a,_0x3344ed[_0xf185('0x10')]['message']);return _0x3686e2(_0x3344ed[_0xf185('0x10')]['message']);}logger['error'](_0xf185('0xc'),_0xfed64a,_0x3344ed[_0xf185('0x10')][_0xf185('0x12')]);return _0x267a47(_0x3344ed['error'][_0xf185('0x12')]);}else{logger[_0xf185('0xb')](_0xf185('0xc'),_0xfed64a,_0xf185('0xd'));_0x267a47(_0x3344ed[_0xf185('0x13')]['message']);}})[_0xf185('0x14')](function(_0x52c3e9){logger[_0xf185('0x10')](_0xf185('0xc'),_0xfed64a,_0x52c3e9);_0x3686e2(_0x52c3e9);});});}exports[_0xf185('0x15')]=function(_0x14859a){var _0xbb781f=this;return new Promise(function(_0x4d3918,_0xceacad){return db[_0xf185('0x16')][_0xf185('0x17')]({'raw':_0x14859a[_0xf185('0x18')]?_0x14859a[_0xf185('0x18')][_0xf185('0x19')]===undefined?!![]:![]:!![],'where':_0x14859a['options']?_0x14859a[_0xf185('0x18')]['where']||null:null,'attributes':_0x14859a[_0xf185('0x18')]?_0x14859a['options'][_0xf185('0x1a')]||null:null,'limit':_0x14859a['options']?_0x14859a[_0xf185('0x18')]['limit']||null:null,'include':_0x14859a[_0xf185('0x18')]?_0x14859a[_0xf185('0x18')]['include']?_[_0xf185('0x1b')](_0x14859a[_0xf185('0x18')][_0xf185('0x1c')],function(_0x48a571){return{'model':db[_0x48a571[_0xf185('0x1d')]],'as':_0x48a571['as'],'attributes':_0x48a571['attributes'],'include':_0x48a571[_0xf185('0x1c')]?_[_0xf185('0x1b')](_0x48a571['include'],function(_0xa69506){return{'model':db[_0xa69506[_0xf185('0x1d')]],'as':_0xa69506['as'],'attributes':_0xa69506['attributes'],'include':_0xa69506[_0xf185('0x1c')]?_['map'](_0xa69506['include'],function(_0x2d705f){return{'model':db[_0x2d705f[_0xf185('0x1d')]],'as':_0x2d705f['as'],'attributes':_0x2d705f[_0xf185('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xf185('0xa')](function(_0x33de73){logger['info']('GetSugarcrmAccount',_0x14859a);logger[_0xf185('0xe')]('GetSugarcrmAccount',_0x14859a,JSON[_0xf185('0x1e')](_0x33de73));_0x4d3918(_0x33de73);})[_0xf185('0x14')](function(_0x287c95){logger[_0xf185('0x10')](_0xf185('0x15'),_0x287c95['message'],_0x14859a);_0xceacad(_0xbb781f[_0xf185('0x10')](0x1f4,_0x287c95[_0xf185('0x12')]));});});};exports[_0xf185('0x1f')]=function(_0x56745c){var _0x5b1d02=this;return new Promise(function(_0x673083,_0x350d55){return db[_0xf185('0x16')][_0xf185('0x20')]({'raw':_0x56745c[_0xf185('0x18')]?_0x56745c['options']['raw']===undefined?!![]:![]:!![],'where':_0x56745c['options']?_0x56745c[_0xf185('0x18')][_0xf185('0x21')]||null:null,'attributes':_0x56745c[_0xf185('0x18')]?_0x56745c[_0xf185('0x18')][_0xf185('0x1a')]||null:null,'include':_0x56745c[_0xf185('0x18')]?_0x56745c['options'][_0xf185('0x1c')]?_[_0xf185('0x1b')](_0x56745c[_0xf185('0x18')]['include'],function(_0xde683){return{'model':db[_0xde683[_0xf185('0x1d')]],'as':_0xde683['as'],'attributes':_0xde683[_0xf185('0x1a')],'include':_0xde683[_0xf185('0x1c')]?_['map'](_0xde683[_0xf185('0x1c')],function(_0x220dd9){return{'model':db[_0x220dd9[_0xf185('0x1d')]],'as':_0x220dd9['as'],'attributes':_0x220dd9[_0xf185('0x1a')],'include':_0x220dd9[_0xf185('0x1c')]?_[_0xf185('0x1b')](_0x220dd9['include'],function(_0x2b28db){return{'model':db[_0x2b28db[_0xf185('0x1d')]],'as':_0x2b28db['as'],'attributes':_0x2b28db[_0xf185('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xf185('0xa')](function(_0x5069be){logger[_0xf185('0xb')](_0xf185('0x1f'),_0x56745c);logger[_0xf185('0xe')]('ShowSugarcrmAccount',_0x56745c,JSON['stringify'](_0x5069be));_0x673083(_0x5069be);})['catch'](function(_0x386f58){logger[_0xf185('0x10')]('ShowSugarcrmAccount',_0x386f58[_0xf185('0x12')],_0x56745c);_0x350d55(_0x5b1d02[_0xf185('0x10')](0x1f4,_0x386f58[_0xf185('0x12')]));});});};
\ No newline at end of file
index bebd626..8780195 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeb04=['update','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../config/environment','get','index','/:id','isAuthenticated','show','/:id/fields','getFields','/:id/subjects','/:id/descriptions','getDescriptions','post','create'];(function(_0x2efb64,_0x4b1e54){var _0x2861e0=function(_0x4cece9){while(--_0x4cece9){_0x2efb64['push'](_0x2efb64['shift']());}};_0x2861e0(++_0x4b1e54);}(_0xeb04,0x146));var _0x4eb0=function(_0x196842,_0x2b238a){_0x196842=_0x196842-0x0;var _0x4400f1=_0xeb04[_0x196842];return _0x4400f1;};'use strict';var multer=require(_0x4eb0('0x0'));var util=require(_0x4eb0('0x1'));var path=require('path');var timeout=require(_0x4eb0('0x2'));var express=require(_0x4eb0('0x3'));var router=express[_0x4eb0('0x4')]();var fs_extra=require(_0x4eb0('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x4eb0('0x6'));var controller=require('./intSugarcrmConfiguration.controller');router[_0x4eb0('0x7')]('/',auth['isAuthenticated'](),controller[_0x4eb0('0x8')]);router[_0x4eb0('0x7')](_0x4eb0('0x9'),auth[_0x4eb0('0xa')](),controller[_0x4eb0('0xb')]);router[_0x4eb0('0x7')](_0x4eb0('0xc'),auth[_0x4eb0('0xa')](),controller[_0x4eb0('0xd')]);router['get'](_0x4eb0('0xe'),auth[_0x4eb0('0xa')](),controller['getSubjects']);router[_0x4eb0('0x7')](_0x4eb0('0xf'),auth[_0x4eb0('0xa')](),controller[_0x4eb0('0x10')]);router[_0x4eb0('0x11')]('/',auth[_0x4eb0('0xa')](),controller[_0x4eb0('0x12')]);router['put'](_0x4eb0('0x9'),auth['isAuthenticated'](),controller[_0x4eb0('0x13')]);router[_0x4eb0('0x14')](_0x4eb0('0x9'),auth[_0x4eb0('0xa')](),controller[_0x4eb0('0x15')]);module[_0x4eb0('0x16')]=router;
\ No newline at end of file
+var _0x8a32=['put','update','delete','/:id','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./intSugarcrmConfiguration.controller','get','index','isAuthenticated','/:id/fields','/:id/subjects','getSubjects','/:id/descriptions','create'];(function(_0xe4c16d,_0x9eec06){var _0x4514f7=function(_0x2de0b2){while(--_0x2de0b2){_0xe4c16d['push'](_0xe4c16d['shift']());}};_0x4514f7(++_0x9eec06);}(_0x8a32,0x1d2));var _0x28a3=function(_0x254fdc,_0x302ff7){_0x254fdc=_0x254fdc-0x0;var _0xb4e833=_0x8a32[_0x254fdc];return _0xb4e833;};'use strict';var multer=require(_0x28a3('0x0'));var util=require(_0x28a3('0x1'));var path=require(_0x28a3('0x2'));var timeout=require(_0x28a3('0x3'));var express=require(_0x28a3('0x4'));var router=express['Router']();var fs_extra=require(_0x28a3('0x5'));var auth=require(_0x28a3('0x6'));var interaction=require(_0x28a3('0x7'));var config=require('../../config/environment');var controller=require(_0x28a3('0x8'));router[_0x28a3('0x9')]('/',auth['isAuthenticated'](),controller[_0x28a3('0xa')]);router[_0x28a3('0x9')]('/:id',auth[_0x28a3('0xb')](),controller['show']);router[_0x28a3('0x9')](_0x28a3('0xc'),auth[_0x28a3('0xb')](),controller['getFields']);router[_0x28a3('0x9')](_0x28a3('0xd'),auth[_0x28a3('0xb')](),controller[_0x28a3('0xe')]);router[_0x28a3('0x9')](_0x28a3('0xf'),auth[_0x28a3('0xb')](),controller['getDescriptions']);router['post']('/',auth[_0x28a3('0xb')](),controller[_0x28a3('0x10')]);router[_0x28a3('0x11')]('/:id',auth[_0x28a3('0xb')](),controller[_0x28a3('0x12')]);router[_0x28a3('0x13')](_0x28a3('0x14'),auth[_0x28a3('0xb')](),controller[_0x28a3('0x15')]);module[_0x28a3('0x16')]=router;
\ No newline at end of file
index 1076c4b..2c4325b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xabd6=['sequelize','STRING'];(function(_0x2b2511,_0x39f94c){var _0x10ed93=function(_0x4f476b){while(--_0x4f476b){_0x2b2511['push'](_0x2b2511['shift']());}};_0x10ed93(++_0x39f94c);}(_0xabd6,0x1ca));var _0x6abd=function(_0x4715d2,_0x3371b2){_0x4715d2=_0x4715d2-0x0;var _0x141811=_0xabd6[_0x4715d2];return _0x141811;};'use strict';var Sequelize=require(_0x6abd('0x0'));module['exports']={'name':{'type':Sequelize[_0x6abd('0x1')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x0d52=['sequelize','exports','STRING'];(function(_0x50c9af,_0x414a5b){var _0x3c82c2=function(_0x5a432c){while(--_0x5a432c){_0x50c9af['push'](_0x50c9af['shift']());}};_0x3c82c2(++_0x414a5b);}(_0x0d52,0x1c5));var _0x20d5=function(_0x2112d4,_0x3c863c){_0x2112d4=_0x2112d4-0x0;var _0x434972=_0x0d52[_0x2112d4];return _0x434972;};'use strict';var Sequelize=require(_0x20d5('0x0'));module[_0x20d5('0x1')]={'name':{'type':Sequelize[_0x20d5('0x2')]},'description':{'type':Sequelize[_0x20d5('0x2')]}};
\ No newline at end of file
index f5c8f39..04ed883 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8bd3=['api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','destroy','then','stack','name','send','map','SugarcrmConfiguration','fieldName','type','key','query','filters','attributes','model','fields','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','keys','rawAttributes','intersection','length','find','create','body','params','getFields','findOne','SugarcrmField','order','getSubjects','getDescriptions','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger'];(function(_0x6b84c3,_0x59a94b){var _0x296230=function(_0x177538){while(--_0x177538){_0x6b84c3['push'](_0x6b84c3['shift']());}};_0x296230(++_0x59a94b);}(_0x8bd3,0xec));var _0x38bd=function(_0x425d5e,_0x3b9040){_0x425d5e=_0x425d5e-0x0;var _0x3cc67b=_0x8bd3[_0x425d5e];return _0x3cc67b;};'use strict';var emlformat=require(_0x38bd('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x38bd('0x1'));var jsonpatch=require(_0x38bd('0x2'));var rp=require(_0x38bd('0x3'));var moment=require(_0x38bd('0x4'));var BPromise=require(_0x38bd('0x5'));var Mustache=require(_0x38bd('0x6'));var util=require(_0x38bd('0x7'));var path=require('path');var sox=require(_0x38bd('0x8'));var csv=require(_0x38bd('0x9'));var ejs=require(_0x38bd('0xa'));var fs=require('fs');var fs_extra=require(_0x38bd('0xb'));var _=require(_0x38bd('0xc'));var squel=require(_0x38bd('0xd'));var crypto=require(_0x38bd('0xe'));var jsforce=require(_0x38bd('0xf'));var deskjs=require(_0x38bd('0x10'));var toCsv=require(_0x38bd('0x9'));var querystring=require(_0x38bd('0x11'));var Papa=require(_0x38bd('0x12'));var Redis=require(_0x38bd('0x13'));var authService=require(_0x38bd('0x14'));var qs=require(_0x38bd('0x15'));var as=require(_0x38bd('0x16'));var hardwareService=require(_0x38bd('0x17'));var logger=require(_0x38bd('0x18'))(_0x38bd('0x19'));var utils=require(_0x38bd('0x1a'));var config=require(_0x38bd('0x1b'));var licenseUtil=require(_0x38bd('0x1c'));var db=require(_0x38bd('0x1d'))['db'];function respondWithStatusCode(_0x383688,_0x46bdf5){_0x46bdf5=_0x46bdf5||0xcc;return function(_0x54ef1c){if(_0x54ef1c){return _0x383688[_0x38bd('0x1e')](_0x46bdf5);}return _0x383688[_0x38bd('0x1f')](_0x46bdf5)[_0x38bd('0x20')]();};}function respondWithResult(_0x549c98,_0x4da356){_0x4da356=_0x4da356||0xc8;return function(_0x3189a4){if(_0x3189a4){return _0x549c98[_0x38bd('0x1f')](_0x4da356)[_0x38bd('0x21')](_0x3189a4);}};}function respondWithFilteredResult(_0x149a7d,_0x188377){return function(_0x1f0485){if(_0x1f0485){var _0x568e94=typeof _0x188377[_0x38bd('0x22')]===_0x38bd('0x23')&&typeof _0x188377['limit']==='undefined';var _0x26d783=_0x1f0485[_0x38bd('0x24')];var _0x33347b=_0x568e94?0x0:_0x188377[_0x38bd('0x22')];var _0x31dd54=_0x568e94?_0x1f0485[_0x38bd('0x24')]:_0x188377[_0x38bd('0x22')]+_0x188377[_0x38bd('0x25')];var _0x57b70e;if(_0x31dd54>=_0x26d783){_0x31dd54=_0x26d783;_0x57b70e=0xc8;}else{_0x57b70e=0xce;}_0x149a7d[_0x38bd('0x1f')](_0x57b70e);return _0x149a7d[_0x38bd('0x26')](_0x38bd('0x27'),_0x33347b+'-'+_0x31dd54+'/'+_0x26d783)['json'](_0x1f0485);}return null;};}function patchUpdates(_0x400e3d){return function(_0x2a25d9){try{jsonpatch[_0x38bd('0x28')](_0x2a25d9,_0x400e3d,!![]);}catch(_0x11fc5b){return BPromise[_0x38bd('0x29')](_0x11fc5b);}return _0x2a25d9[_0x38bd('0x2a')]();};}function saveUpdates(_0x43c63b,_0xaa8131){return function(_0x2f35de){if(_0x2f35de){return _0x2f35de[_0x38bd('0x2b')](_0x43c63b)['then'](function(_0x42ff26){return _0x42ff26;});}return null;};}function removeEntity(_0x232b61,_0x5b0c5f){return function(_0x5ac204){if(_0x5ac204){return _0x5ac204[_0x38bd('0x2c')]()[_0x38bd('0x2d')](function(){_0x232b61[_0x38bd('0x1f')](0xcc)[_0x38bd('0x20')]();});}};}function handleEntityNotFound(_0x555c50,_0x2527b9){return function(_0x15bafc){if(!_0x15bafc){_0x555c50[_0x38bd('0x1e')](0x194);}return _0x15bafc;};}function handleError(_0x79340c,_0x10cd3e){_0x10cd3e=_0x10cd3e||0x1f4;return function(_0x22a36e){logger['error'](_0x22a36e[_0x38bd('0x2e')]);if(_0x22a36e[_0x38bd('0x2f')]){delete _0x22a36e[_0x38bd('0x2f')];}_0x79340c[_0x38bd('0x1f')](_0x10cd3e)[_0x38bd('0x30')](_0x22a36e);};}exports['index']=function(_0x13a9c2,_0x4319c2){var _0x4ab6d9={},_0x5e28b2={},_0x24a537={'count':0x0,'rows':[]};var _0x598789=_[_0x38bd('0x31')](db[_0x38bd('0x32')]['rawAttributes'],function(_0x2abaf2){return{'name':_0x2abaf2[_0x38bd('0x33')],'type':_0x2abaf2[_0x38bd('0x34')][_0x38bd('0x35')]};});_0x5e28b2['model']=_[_0x38bd('0x31')](_0x598789,_0x38bd('0x2f'));_0x5e28b2[_0x38bd('0x36')]=_['keys'](_0x13a9c2['query']);_0x5e28b2[_0x38bd('0x37')]=_['intersection'](_0x5e28b2['model'],_0x5e28b2[_0x38bd('0x36')]);_0x4ab6d9[_0x38bd('0x38')]=_['intersection'](_0x5e28b2[_0x38bd('0x39')],qs[_0x38bd('0x3a')](_0x13a9c2[_0x38bd('0x36')]['fields']));_0x4ab6d9['attributes']=_0x4ab6d9[_0x38bd('0x38')]['length']?_0x4ab6d9[_0x38bd('0x38')]:_0x5e28b2[_0x38bd('0x39')];if(!_0x13a9c2[_0x38bd('0x36')][_0x38bd('0x3b')](_0x38bd('0x3c'))){_0x4ab6d9[_0x38bd('0x25')]=qs[_0x38bd('0x25')](_0x13a9c2['query'][_0x38bd('0x25')]);_0x4ab6d9['offset']=qs[_0x38bd('0x22')](_0x13a9c2[_0x38bd('0x36')][_0x38bd('0x22')]);}_0x4ab6d9['order']=qs['sort'](_0x13a9c2['query'][_0x38bd('0x3d')]);_0x4ab6d9[_0x38bd('0x3e')]=qs['filters'](_[_0x38bd('0x3f')](_0x13a9c2[_0x38bd('0x36')],_0x5e28b2[_0x38bd('0x37')]),_0x598789);if(_0x13a9c2['query'][_0x38bd('0x40')]){_0x4ab6d9[_0x38bd('0x3e')]=_[_0x38bd('0x41')](_0x4ab6d9[_0x38bd('0x3e')],{'$or':_[_0x38bd('0x31')](_0x598789,function(_0x36cd0e){if(_0x36cd0e['type']!==_0x38bd('0x42')){var _0x35b4d6={};_0x35b4d6[_0x36cd0e['name']]={'$like':'%'+_0x13a9c2[_0x38bd('0x36')]['filter']+'%'};return _0x35b4d6;}})});}_0x4ab6d9=_['merge']({},_0x4ab6d9,_0x13a9c2[_0x38bd('0x43')]);var _0x40e5b7={'where':_0x4ab6d9[_0x38bd('0x3e')]};return db[_0x38bd('0x32')]['count'](_0x40e5b7)['then'](function(_0x383977){_0x24a537['count']=_0x383977;if(_0x13a9c2[_0x38bd('0x36')][_0x38bd('0x44')]){_0x4ab6d9['include']=[{'all':!![]}];}return db[_0x38bd('0x32')][_0x38bd('0x45')](_0x4ab6d9);})[_0x38bd('0x2d')](function(_0x2e757c){_0x24a537[_0x38bd('0x46')]=_0x2e757c;return _0x24a537;})[_0x38bd('0x2d')](respondWithFilteredResult(_0x4319c2,_0x4ab6d9))[_0x38bd('0x47')](handleError(_0x4319c2,null));};exports[_0x38bd('0x48')]=function(_0x518b10,_0x207f68){var _0x5690c0={'raw':![],'where':{'id':_0x518b10['params']['id']}},_0x5e0fb7={};_0x5e0fb7[_0x38bd('0x39')]=_[_0x38bd('0x49')](db[_0x38bd('0x32')][_0x38bd('0x4a')]);_0x5e0fb7[_0x38bd('0x36')]=_[_0x38bd('0x49')](_0x518b10['query']);_0x5e0fb7[_0x38bd('0x37')]=_['intersection'](_0x5e0fb7[_0x38bd('0x39')],_0x5e0fb7[_0x38bd('0x36')]);_0x5690c0[_0x38bd('0x38')]=_[_0x38bd('0x4b')](_0x5e0fb7['model'],qs[_0x38bd('0x3a')](_0x518b10['query'][_0x38bd('0x3a')]));_0x5690c0['attributes']=_0x5690c0[_0x38bd('0x38')][_0x38bd('0x4c')]?_0x5690c0['attributes']:_0x5e0fb7['model'];if(_0x518b10[_0x38bd('0x36')]['includeAll']){_0x5690c0['include']=[{'all':!![]}];}_0x5690c0=_[_0x38bd('0x41')]({},_0x5690c0,_0x518b10[_0x38bd('0x43')]);return db[_0x38bd('0x32')][_0x38bd('0x4d')](_0x5690c0)[_0x38bd('0x2d')](handleEntityNotFound(_0x207f68,null))[_0x38bd('0x2d')](respondWithResult(_0x207f68,null))['catch'](handleError(_0x207f68,null));};exports[_0x38bd('0x4e')]=function(_0x59920d,_0x22970a){return db[_0x38bd('0x32')][_0x38bd('0x4e')](_0x59920d[_0x38bd('0x4f')],{})[_0x38bd('0x2d')](respondWithResult(_0x22970a,0xc9))[_0x38bd('0x47')](handleError(_0x22970a,null));};exports[_0x38bd('0x2b')]=function(_0x4fffbd,_0x2b2ae3){if(_0x4fffbd[_0x38bd('0x4f')]['id']){delete _0x4fffbd['body']['id'];}return db[_0x38bd('0x32')][_0x38bd('0x4d')]({'where':{'id':_0x4fffbd[_0x38bd('0x50')]['id']}})[_0x38bd('0x2d')](handleEntityNotFound(_0x2b2ae3,null))[_0x38bd('0x2d')](saveUpdates(_0x4fffbd['body'],null))[_0x38bd('0x2d')](respondWithResult(_0x2b2ae3,null))[_0x38bd('0x47')](handleError(_0x2b2ae3,null));};exports['destroy']=function(_0x101d5f,_0x299a68){return db[_0x38bd('0x32')][_0x38bd('0x4d')]({'where':{'id':_0x101d5f[_0x38bd('0x50')]['id']}})['then'](handleEntityNotFound(_0x299a68,null))[_0x38bd('0x2d')](removeEntity(_0x299a68,null))[_0x38bd('0x47')](handleError(_0x299a68,null));};exports[_0x38bd('0x51')]=function(_0x9070eb,_0x2b023d,_0xb163d8){var _0x51f421={};var _0xe9ec8f={};var _0x5386a7;var _0x2d79f8;return db['SugarcrmConfiguration'][_0x38bd('0x52')]({'where':{'id':_0x9070eb[_0x38bd('0x50')]['id']}})[_0x38bd('0x2d')](handleEntityNotFound(_0x2b023d,null))['then'](function(_0x45301e){if(_0x45301e){_0x5386a7=_0x45301e;_0xe9ec8f[_0x38bd('0x39')]=_[_0x38bd('0x49')](db[_0x38bd('0x53')][_0x38bd('0x4a')]);_0xe9ec8f[_0x38bd('0x36')]=_[_0x38bd('0x49')](_0x9070eb['query']);_0xe9ec8f['filters']=_['intersection'](_0xe9ec8f['model'],_0xe9ec8f['query']);_0x51f421['attributes']=_[_0x38bd('0x4b')](_0xe9ec8f['model'],qs['fields'](_0x9070eb['query'][_0x38bd('0x3a')]));_0x51f421[_0x38bd('0x38')]=_0x51f421[_0x38bd('0x38')]['length']?_0x51f421[_0x38bd('0x38')]:_0xe9ec8f[_0x38bd('0x39')];_0x51f421[_0x38bd('0x54')]=qs[_0x38bd('0x3d')](_0x9070eb[_0x38bd('0x36')][_0x38bd('0x3d')]);_0x51f421[_0x38bd('0x3e')]=qs[_0x38bd('0x37')](_['pick'](_0x9070eb['query'],_0xe9ec8f['filters']));if(_0x9070eb[_0x38bd('0x36')][_0x38bd('0x40')]){_0x51f421['where']=_[_0x38bd('0x41')](_0x51f421[_0x38bd('0x3e')],{'$or':_[_0x38bd('0x31')](_0x51f421[_0x38bd('0x38')],function(_0x23b381){var _0x28e039={};_0x28e039[_0x23b381]={'$like':'%'+_0x9070eb[_0x38bd('0x36')]['filter']+'%'};return _0x28e039;})});}_0x51f421=_[_0x38bd('0x41')]({},_0x51f421,_0x9070eb[_0x38bd('0x43')]);return _0x5386a7[_0x38bd('0x51')](_0x51f421);}})[_0x38bd('0x2d')](function(_0x419178){if(_0x419178){_0x2d79f8=_0x419178['length'];if(!_0x9070eb[_0x38bd('0x36')][_0x38bd('0x3b')](_0x38bd('0x3c'))){_0x51f421['limit']=qs[_0x38bd('0x25')](_0x9070eb[_0x38bd('0x36')][_0x38bd('0x25')]);_0x51f421['offset']=qs['offset'](_0x9070eb['query']['offset']);}return _0x5386a7[_0x38bd('0x51')](_0x51f421);}})['then'](function(_0x559d02){if(_0x559d02){return _0x559d02?{'count':_0x2d79f8,'rows':_0x559d02}:null;}})['then'](respondWithResult(_0x2b023d,null))[_0x38bd('0x47')](handleError(_0x2b023d,null));};exports['getSubjects']=function(_0x270ff4,_0x360005,_0x50271c){var _0x545902={};var _0x56df2c={};var _0x23c1a8;var _0x5a67f2;return db[_0x38bd('0x32')][_0x38bd('0x52')]({'where':{'id':_0x270ff4[_0x38bd('0x50')]['id']}})[_0x38bd('0x2d')](handleEntityNotFound(_0x360005,null))[_0x38bd('0x2d')](function(_0x181377){if(_0x181377){_0x23c1a8=_0x181377;_0x56df2c[_0x38bd('0x39')]=_[_0x38bd('0x49')](db['SugarcrmField'][_0x38bd('0x4a')]);_0x56df2c[_0x38bd('0x36')]=_[_0x38bd('0x49')](_0x270ff4[_0x38bd('0x36')]);_0x56df2c[_0x38bd('0x37')]=_[_0x38bd('0x4b')](_0x56df2c[_0x38bd('0x39')],_0x56df2c['query']);_0x545902[_0x38bd('0x38')]=_['intersection'](_0x56df2c[_0x38bd('0x39')],qs[_0x38bd('0x3a')](_0x270ff4[_0x38bd('0x36')]['fields']));_0x545902[_0x38bd('0x38')]=_0x545902[_0x38bd('0x38')][_0x38bd('0x4c')]?_0x545902[_0x38bd('0x38')]:_0x56df2c['model'];_0x545902[_0x38bd('0x54')]=qs[_0x38bd('0x3d')](_0x270ff4[_0x38bd('0x36')][_0x38bd('0x3d')]);_0x545902[_0x38bd('0x3e')]=qs[_0x38bd('0x37')](_[_0x38bd('0x3f')](_0x270ff4['query'],_0x56df2c[_0x38bd('0x37')]));if(_0x270ff4[_0x38bd('0x36')]['filter']){_0x545902['where']=_[_0x38bd('0x41')](_0x545902[_0x38bd('0x3e')],{'$or':_[_0x38bd('0x31')](_0x545902[_0x38bd('0x38')],function(_0x33f883){var _0x645c57={};_0x645c57[_0x33f883]={'$like':'%'+_0x270ff4['query'][_0x38bd('0x40')]+'%'};return _0x645c57;})});}_0x545902=_[_0x38bd('0x41')]({},_0x545902,_0x270ff4[_0x38bd('0x43')]);return _0x23c1a8[_0x38bd('0x55')](_0x545902);}})[_0x38bd('0x2d')](function(_0x128681){if(_0x128681){_0x5a67f2=_0x128681[_0x38bd('0x4c')];if(!_0x270ff4[_0x38bd('0x36')][_0x38bd('0x3b')](_0x38bd('0x3c'))){_0x545902[_0x38bd('0x25')]=qs['limit'](_0x270ff4[_0x38bd('0x36')][_0x38bd('0x25')]);_0x545902[_0x38bd('0x22')]=qs[_0x38bd('0x22')](_0x270ff4[_0x38bd('0x36')][_0x38bd('0x22')]);}return _0x23c1a8[_0x38bd('0x55')](_0x545902);}})[_0x38bd('0x2d')](function(_0x4417bb){if(_0x4417bb){return _0x4417bb?{'count':_0x5a67f2,'rows':_0x4417bb}:null;}})[_0x38bd('0x2d')](respondWithResult(_0x360005,null))['catch'](handleError(_0x360005,null));};exports['getDescriptions']=function(_0x4c0adf,_0x426416,_0x419377){var _0x192f5c={};var _0x307458={};var _0x181635;var _0x233f7c;return db[_0x38bd('0x32')]['findOne']({'where':{'id':_0x4c0adf['params']['id']}})['then'](handleEntityNotFound(_0x426416,null))[_0x38bd('0x2d')](function(_0x3bddf5){if(_0x3bddf5){_0x181635=_0x3bddf5;_0x307458[_0x38bd('0x39')]=_['keys'](db['SugarcrmField'][_0x38bd('0x4a')]);_0x307458[_0x38bd('0x36')]=_[_0x38bd('0x49')](_0x4c0adf[_0x38bd('0x36')]);_0x307458['filters']=_[_0x38bd('0x4b')](_0x307458['model'],_0x307458[_0x38bd('0x36')]);_0x192f5c[_0x38bd('0x38')]=_[_0x38bd('0x4b')](_0x307458['model'],qs['fields'](_0x4c0adf[_0x38bd('0x36')][_0x38bd('0x3a')]));_0x192f5c[_0x38bd('0x38')]=_0x192f5c[_0x38bd('0x38')][_0x38bd('0x4c')]?_0x192f5c[_0x38bd('0x38')]:_0x307458['model'];_0x192f5c[_0x38bd('0x54')]=qs[_0x38bd('0x3d')](_0x4c0adf[_0x38bd('0x36')]['sort']);_0x192f5c[_0x38bd('0x3e')]=qs[_0x38bd('0x37')](_['pick'](_0x4c0adf['query'],_0x307458[_0x38bd('0x37')]));if(_0x4c0adf[_0x38bd('0x36')][_0x38bd('0x40')]){_0x192f5c[_0x38bd('0x3e')]=_['merge'](_0x192f5c[_0x38bd('0x3e')],{'$or':_['map'](_0x192f5c[_0x38bd('0x38')],function(_0x5afc0a){var _0x205ca3={};_0x205ca3[_0x5afc0a]={'$like':'%'+_0x4c0adf[_0x38bd('0x36')]['filter']+'%'};return _0x205ca3;})});}_0x192f5c=_[_0x38bd('0x41')]({},_0x192f5c,_0x4c0adf[_0x38bd('0x43')]);return _0x181635[_0x38bd('0x56')](_0x192f5c);}})[_0x38bd('0x2d')](function(_0x180aec){if(_0x180aec){_0x233f7c=_0x180aec['length'];if(!_0x4c0adf[_0x38bd('0x36')]['hasOwnProperty'](_0x38bd('0x3c'))){_0x192f5c['limit']=qs[_0x38bd('0x25')](_0x4c0adf[_0x38bd('0x36')]['limit']);_0x192f5c[_0x38bd('0x22')]=qs['offset'](_0x4c0adf[_0x38bd('0x36')]['offset']);}return _0x181635[_0x38bd('0x56')](_0x192f5c);}})[_0x38bd('0x2d')](function(_0x415e0d){if(_0x415e0d){return _0x415e0d?{'count':_0x233f7c,'rows':_0x415e0d}:null;}})[_0x38bd('0x2d')](respondWithResult(_0x426416,null))[_0x38bd('0x47')](handleError(_0x426416,null));};
\ No newline at end of file
+var _0x594e=['moment','bluebird','mustache','util','path','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','error','stack','name','send','map','SugarcrmConfiguration','rawAttributes','fieldName','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','filter','type','VIRTUAL','merge','options','includeAll','findAll','rows','show','params','find','create','body','catch','getFields','pick','getSubjects','findOne','getDescriptions','SugarcrmField','rimraf','zip-dir','fast-json-patch','request-promise'];(function(_0x178aeb,_0x3dbd8e){var _0x56d2b8=function(_0x192934){while(--_0x192934){_0x178aeb['push'](_0x178aeb['shift']());}};_0x56d2b8(++_0x3dbd8e);}(_0x594e,0x18c));var _0xe594=function(_0x2bd655,_0x299ed0){_0x2bd655=_0x2bd655-0x0;var _0x560e77=_0x594e[_0x2bd655];return _0x560e77;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe594('0x0'));var zipdir=require(_0xe594('0x1'));var jsonpatch=require(_0xe594('0x2'));var rp=require(_0xe594('0x3'));var moment=require(_0xe594('0x4'));var BPromise=require(_0xe594('0x5'));var Mustache=require(_0xe594('0x6'));var util=require(_0xe594('0x7'));var path=require(_0xe594('0x8'));var sox=require('sox');var csv=require(_0xe594('0x9'));var ejs=require(_0xe594('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xe594('0xb'));var crypto=require(_0xe594('0xc'));var jsforce=require(_0xe594('0xd'));var deskjs=require(_0xe594('0xe'));var toCsv=require('to-csv');var querystring=require(_0xe594('0xf'));var Papa=require(_0xe594('0x10'));var Redis=require('ioredis');var authService=require(_0xe594('0x11'));var qs=require(_0xe594('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xe594('0x13'))(_0xe594('0x14'));var utils=require(_0xe594('0x15'));var config=require(_0xe594('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5a7171,_0x367221){_0x367221=_0x367221||0xcc;return function(_0x31fc7e){if(_0x31fc7e){return _0x5a7171[_0xe594('0x17')](_0x367221);}return _0x5a7171['status'](_0x367221)[_0xe594('0x18')]();};}function respondWithResult(_0x60ad82,_0x5efb4c){_0x5efb4c=_0x5efb4c||0xc8;return function(_0x11bc80){if(_0x11bc80){return _0x60ad82[_0xe594('0x19')](_0x5efb4c)[_0xe594('0x1a')](_0x11bc80);}};}function respondWithFilteredResult(_0x22d584,_0x4ee3f1){return function(_0x2bf84d){if(_0x2bf84d){var _0x2cca9c=typeof _0x4ee3f1[_0xe594('0x1b')]===_0xe594('0x1c')&&typeof _0x4ee3f1[_0xe594('0x1d')]===_0xe594('0x1c');var _0x36532f=_0x2bf84d['count'];var _0xc25ee3=_0x2cca9c?0x0:_0x4ee3f1[_0xe594('0x1b')];var _0x1a0ff7=_0x2cca9c?_0x2bf84d[_0xe594('0x1e')]:_0x4ee3f1[_0xe594('0x1b')]+_0x4ee3f1['limit'];var _0x362974;if(_0x1a0ff7>=_0x36532f){_0x1a0ff7=_0x36532f;_0x362974=0xc8;}else{_0x362974=0xce;}_0x22d584['status'](_0x362974);return _0x22d584[_0xe594('0x1f')](_0xe594('0x20'),_0xc25ee3+'-'+_0x1a0ff7+'/'+_0x36532f)[_0xe594('0x1a')](_0x2bf84d);}return null;};}function patchUpdates(_0x5a4ebb){return function(_0x581acf){try{jsonpatch[_0xe594('0x21')](_0x581acf,_0x5a4ebb,!![]);}catch(_0x163b53){return BPromise[_0xe594('0x22')](_0x163b53);}return _0x581acf[_0xe594('0x23')]();};}function saveUpdates(_0x5e4a81,_0x2e2515){return function(_0x177b6f){if(_0x177b6f){return _0x177b6f[_0xe594('0x24')](_0x5e4a81)[_0xe594('0x25')](function(_0x2f544d){return _0x2f544d;});}return null;};}function removeEntity(_0x10e770,_0x3f64fe){return function(_0x38ab81){if(_0x38ab81){return _0x38ab81['destroy']()['then'](function(){_0x10e770[_0xe594('0x19')](0xcc)[_0xe594('0x18')]();});}};}function handleEntityNotFound(_0x5172c1,_0x352e60){return function(_0x37472c){if(!_0x37472c){_0x5172c1['sendStatus'](0x194);}return _0x37472c;};}function handleError(_0x444a83,_0x723cbf){_0x723cbf=_0x723cbf||0x1f4;return function(_0x564e0e){logger[_0xe594('0x26')](_0x564e0e[_0xe594('0x27')]);if(_0x564e0e[_0xe594('0x28')]){delete _0x564e0e[_0xe594('0x28')];}_0x444a83[_0xe594('0x19')](_0x723cbf)[_0xe594('0x29')](_0x564e0e);};}exports['index']=function(_0x46edbc,_0xdca46d){var _0x563a32={},_0x5677ca={},_0x37cbc7={'count':0x0,'rows':[]};var _0x1d5c32=_[_0xe594('0x2a')](db[_0xe594('0x2b')][_0xe594('0x2c')],function(_0xe4a0c9){return{'name':_0xe4a0c9[_0xe594('0x2d')],'type':_0xe4a0c9['type'][_0xe594('0x2e')]};});_0x5677ca[_0xe594('0x2f')]=_['map'](_0x1d5c32,'name');_0x5677ca[_0xe594('0x30')]=_[_0xe594('0x31')](_0x46edbc[_0xe594('0x30')]);_0x5677ca['filters']=_[_0xe594('0x32')](_0x5677ca[_0xe594('0x2f')],_0x5677ca[_0xe594('0x30')]);_0x563a32[_0xe594('0x33')]=_[_0xe594('0x32')](_0x5677ca[_0xe594('0x2f')],qs[_0xe594('0x34')](_0x46edbc[_0xe594('0x30')]['fields']));_0x563a32[_0xe594('0x33')]=_0x563a32[_0xe594('0x33')][_0xe594('0x35')]?_0x563a32['attributes']:_0x5677ca[_0xe594('0x2f')];if(!_0x46edbc[_0xe594('0x30')][_0xe594('0x36')](_0xe594('0x37'))){_0x563a32['limit']=qs['limit'](_0x46edbc[_0xe594('0x30')]['limit']);_0x563a32[_0xe594('0x1b')]=qs['offset'](_0x46edbc[_0xe594('0x30')]['offset']);}_0x563a32[_0xe594('0x38')]=qs[_0xe594('0x39')](_0x46edbc[_0xe594('0x30')]['sort']);_0x563a32[_0xe594('0x3a')]=qs[_0xe594('0x3b')](_['pick'](_0x46edbc['query'],_0x5677ca[_0xe594('0x3b')]),_0x1d5c32);if(_0x46edbc[_0xe594('0x30')][_0xe594('0x3c')]){_0x563a32[_0xe594('0x3a')]=_['merge'](_0x563a32[_0xe594('0x3a')],{'$or':_['map'](_0x1d5c32,function(_0x4e20ab){if(_0x4e20ab[_0xe594('0x3d')]!==_0xe594('0x3e')){var _0x5e05b5={};_0x5e05b5[_0x4e20ab[_0xe594('0x28')]]={'$like':'%'+_0x46edbc[_0xe594('0x30')][_0xe594('0x3c')]+'%'};return _0x5e05b5;}})});}_0x563a32=_[_0xe594('0x3f')]({},_0x563a32,_0x46edbc[_0xe594('0x40')]);var _0x2e5c07={'where':_0x563a32[_0xe594('0x3a')]};return db[_0xe594('0x2b')]['count'](_0x2e5c07)['then'](function(_0x4865f6){_0x37cbc7[_0xe594('0x1e')]=_0x4865f6;if(_0x46edbc[_0xe594('0x30')][_0xe594('0x41')]){_0x563a32['include']=[{'all':!![]}];}return db['SugarcrmConfiguration'][_0xe594('0x42')](_0x563a32);})[_0xe594('0x25')](function(_0x4f677a){_0x37cbc7[_0xe594('0x43')]=_0x4f677a;return _0x37cbc7;})['then'](respondWithFilteredResult(_0xdca46d,_0x563a32))['catch'](handleError(_0xdca46d,null));};exports[_0xe594('0x44')]=function(_0xdaf262,_0xcd540c){var _0x2105f7={'raw':![],'where':{'id':_0xdaf262[_0xe594('0x45')]['id']}},_0x3d31ce={};_0x3d31ce[_0xe594('0x2f')]=_[_0xe594('0x31')](db[_0xe594('0x2b')]['rawAttributes']);_0x3d31ce[_0xe594('0x30')]=_[_0xe594('0x31')](_0xdaf262['query']);_0x3d31ce[_0xe594('0x3b')]=_[_0xe594('0x32')](_0x3d31ce['model'],_0x3d31ce[_0xe594('0x30')]);_0x2105f7[_0xe594('0x33')]=_[_0xe594('0x32')](_0x3d31ce[_0xe594('0x2f')],qs['fields'](_0xdaf262[_0xe594('0x30')][_0xe594('0x34')]));_0x2105f7[_0xe594('0x33')]=_0x2105f7[_0xe594('0x33')][_0xe594('0x35')]?_0x2105f7[_0xe594('0x33')]:_0x3d31ce[_0xe594('0x2f')];if(_0xdaf262['query'][_0xe594('0x41')]){_0x2105f7['include']=[{'all':!![]}];}_0x2105f7=_[_0xe594('0x3f')]({},_0x2105f7,_0xdaf262[_0xe594('0x40')]);return db[_0xe594('0x2b')][_0xe594('0x46')](_0x2105f7)['then'](handleEntityNotFound(_0xcd540c,null))[_0xe594('0x25')](respondWithResult(_0xcd540c,null))['catch'](handleError(_0xcd540c,null));};exports[_0xe594('0x47')]=function(_0x111aa8,_0x3bb728){return db[_0xe594('0x2b')][_0xe594('0x47')](_0x111aa8[_0xe594('0x48')],{})['then'](respondWithResult(_0x3bb728,0xc9))[_0xe594('0x49')](handleError(_0x3bb728,null));};exports['update']=function(_0x517af1,_0x4e9b78){if(_0x517af1[_0xe594('0x48')]['id']){delete _0x517af1[_0xe594('0x48')]['id'];}return db['SugarcrmConfiguration']['find']({'where':{'id':_0x517af1['params']['id']}})[_0xe594('0x25')](handleEntityNotFound(_0x4e9b78,null))[_0xe594('0x25')](saveUpdates(_0x517af1[_0xe594('0x48')],null))[_0xe594('0x25')](respondWithResult(_0x4e9b78,null))['catch'](handleError(_0x4e9b78,null));};exports['destroy']=function(_0x23a267,_0x3d15c6){return db['SugarcrmConfiguration'][_0xe594('0x46')]({'where':{'id':_0x23a267[_0xe594('0x45')]['id']}})[_0xe594('0x25')](handleEntityNotFound(_0x3d15c6,null))[_0xe594('0x25')](removeEntity(_0x3d15c6,null))[_0xe594('0x49')](handleError(_0x3d15c6,null));};exports[_0xe594('0x4a')]=function(_0x2f59a6,_0x19252b,_0x114052){var _0x4ff52c={};var _0x6ec9eb={};var _0x97861a;var _0x47d7e8;return db['SugarcrmConfiguration']['findOne']({'where':{'id':_0x2f59a6[_0xe594('0x45')]['id']}})[_0xe594('0x25')](handleEntityNotFound(_0x19252b,null))[_0xe594('0x25')](function(_0x523303){if(_0x523303){_0x97861a=_0x523303;_0x6ec9eb[_0xe594('0x2f')]=_[_0xe594('0x31')](db['SugarcrmField'][_0xe594('0x2c')]);_0x6ec9eb[_0xe594('0x30')]=_[_0xe594('0x31')](_0x2f59a6['query']);_0x6ec9eb[_0xe594('0x3b')]=_[_0xe594('0x32')](_0x6ec9eb['model'],_0x6ec9eb[_0xe594('0x30')]);_0x4ff52c[_0xe594('0x33')]=_[_0xe594('0x32')](_0x6ec9eb[_0xe594('0x2f')],qs[_0xe594('0x34')](_0x2f59a6[_0xe594('0x30')][_0xe594('0x34')]));_0x4ff52c[_0xe594('0x33')]=_0x4ff52c[_0xe594('0x33')][_0xe594('0x35')]?_0x4ff52c[_0xe594('0x33')]:_0x6ec9eb['model'];_0x4ff52c[_0xe594('0x38')]=qs[_0xe594('0x39')](_0x2f59a6['query'][_0xe594('0x39')]);_0x4ff52c[_0xe594('0x3a')]=qs[_0xe594('0x3b')](_[_0xe594('0x4b')](_0x2f59a6[_0xe594('0x30')],_0x6ec9eb[_0xe594('0x3b')]));if(_0x2f59a6[_0xe594('0x30')][_0xe594('0x3c')]){_0x4ff52c[_0xe594('0x3a')]=_[_0xe594('0x3f')](_0x4ff52c[_0xe594('0x3a')],{'$or':_[_0xe594('0x2a')](_0x4ff52c[_0xe594('0x33')],function(_0x44dd7a){var _0x15ff46={};_0x15ff46[_0x44dd7a]={'$like':'%'+_0x2f59a6[_0xe594('0x30')]['filter']+'%'};return _0x15ff46;})});}_0x4ff52c=_[_0xe594('0x3f')]({},_0x4ff52c,_0x2f59a6['options']);return _0x97861a['getFields'](_0x4ff52c);}})['then'](function(_0x3b3abd){if(_0x3b3abd){_0x47d7e8=_0x3b3abd['length'];if(!_0x2f59a6[_0xe594('0x30')][_0xe594('0x36')]('nolimit')){_0x4ff52c[_0xe594('0x1d')]=qs[_0xe594('0x1d')](_0x2f59a6[_0xe594('0x30')][_0xe594('0x1d')]);_0x4ff52c['offset']=qs[_0xe594('0x1b')](_0x2f59a6['query']['offset']);}return _0x97861a[_0xe594('0x4a')](_0x4ff52c);}})[_0xe594('0x25')](function(_0x5bcf23){if(_0x5bcf23){return _0x5bcf23?{'count':_0x47d7e8,'rows':_0x5bcf23}:null;}})[_0xe594('0x25')](respondWithResult(_0x19252b,null))['catch'](handleError(_0x19252b,null));};exports[_0xe594('0x4c')]=function(_0x25ec51,_0x513142,_0x103e35){var _0x235375={};var _0xd0aff6={};var _0x42e4be;var _0x1c95cc;return db[_0xe594('0x2b')][_0xe594('0x4d')]({'where':{'id':_0x25ec51[_0xe594('0x45')]['id']}})[_0xe594('0x25')](handleEntityNotFound(_0x513142,null))[_0xe594('0x25')](function(_0xf15ed7){if(_0xf15ed7){_0x42e4be=_0xf15ed7;_0xd0aff6[_0xe594('0x2f')]=_[_0xe594('0x31')](db['SugarcrmField'][_0xe594('0x2c')]);_0xd0aff6[_0xe594('0x30')]=_['keys'](_0x25ec51['query']);_0xd0aff6[_0xe594('0x3b')]=_[_0xe594('0x32')](_0xd0aff6[_0xe594('0x2f')],_0xd0aff6[_0xe594('0x30')]);_0x235375[_0xe594('0x33')]=_[_0xe594('0x32')](_0xd0aff6['model'],qs['fields'](_0x25ec51[_0xe594('0x30')][_0xe594('0x34')]));_0x235375['attributes']=_0x235375['attributes'][_0xe594('0x35')]?_0x235375[_0xe594('0x33')]:_0xd0aff6[_0xe594('0x2f')];_0x235375[_0xe594('0x38')]=qs[_0xe594('0x39')](_0x25ec51['query'][_0xe594('0x39')]);_0x235375[_0xe594('0x3a')]=qs[_0xe594('0x3b')](_[_0xe594('0x4b')](_0x25ec51[_0xe594('0x30')],_0xd0aff6[_0xe594('0x3b')]));if(_0x25ec51['query'][_0xe594('0x3c')]){_0x235375['where']=_[_0xe594('0x3f')](_0x235375[_0xe594('0x3a')],{'$or':_[_0xe594('0x2a')](_0x235375[_0xe594('0x33')],function(_0x5748a5){var _0x350bf3={};_0x350bf3[_0x5748a5]={'$like':'%'+_0x25ec51[_0xe594('0x30')][_0xe594('0x3c')]+'%'};return _0x350bf3;})});}_0x235375=_[_0xe594('0x3f')]({},_0x235375,_0x25ec51[_0xe594('0x40')]);return _0x42e4be['getSubjects'](_0x235375);}})[_0xe594('0x25')](function(_0x47f2eb){if(_0x47f2eb){_0x1c95cc=_0x47f2eb[_0xe594('0x35')];if(!_0x25ec51[_0xe594('0x30')][_0xe594('0x36')](_0xe594('0x37'))){_0x235375[_0xe594('0x1d')]=qs[_0xe594('0x1d')](_0x25ec51['query'][_0xe594('0x1d')]);_0x235375['offset']=qs[_0xe594('0x1b')](_0x25ec51[_0xe594('0x30')]['offset']);}return _0x42e4be[_0xe594('0x4c')](_0x235375);}})[_0xe594('0x25')](function(_0xb9dc10){if(_0xb9dc10){return _0xb9dc10?{'count':_0x1c95cc,'rows':_0xb9dc10}:null;}})[_0xe594('0x25')](respondWithResult(_0x513142,null))[_0xe594('0x49')](handleError(_0x513142,null));};exports[_0xe594('0x4e')]=function(_0x43efff,_0x46dae9,_0x388936){var _0x3b5cb4={};var _0x20b902={};var _0x51dc8b;var _0x12e025;return db[_0xe594('0x2b')][_0xe594('0x4d')]({'where':{'id':_0x43efff[_0xe594('0x45')]['id']}})[_0xe594('0x25')](handleEntityNotFound(_0x46dae9,null))[_0xe594('0x25')](function(_0x369edd){if(_0x369edd){_0x51dc8b=_0x369edd;_0x20b902[_0xe594('0x2f')]=_['keys'](db[_0xe594('0x4f')][_0xe594('0x2c')]);_0x20b902[_0xe594('0x30')]=_[_0xe594('0x31')](_0x43efff[_0xe594('0x30')]);_0x20b902['filters']=_[_0xe594('0x32')](_0x20b902['model'],_0x20b902[_0xe594('0x30')]);_0x3b5cb4[_0xe594('0x33')]=_[_0xe594('0x32')](_0x20b902[_0xe594('0x2f')],qs[_0xe594('0x34')](_0x43efff['query'][_0xe594('0x34')]));_0x3b5cb4[_0xe594('0x33')]=_0x3b5cb4['attributes']['length']?_0x3b5cb4[_0xe594('0x33')]:_0x20b902[_0xe594('0x2f')];_0x3b5cb4['order']=qs[_0xe594('0x39')](_0x43efff[_0xe594('0x30')][_0xe594('0x39')]);_0x3b5cb4[_0xe594('0x3a')]=qs[_0xe594('0x3b')](_[_0xe594('0x4b')](_0x43efff[_0xe594('0x30')],_0x20b902[_0xe594('0x3b')]));if(_0x43efff[_0xe594('0x30')]['filter']){_0x3b5cb4[_0xe594('0x3a')]=_[_0xe594('0x3f')](_0x3b5cb4[_0xe594('0x3a')],{'$or':_[_0xe594('0x2a')](_0x3b5cb4[_0xe594('0x33')],function(_0x27c998){var _0x283c38={};_0x283c38[_0x27c998]={'$like':'%'+_0x43efff[_0xe594('0x30')][_0xe594('0x3c')]+'%'};return _0x283c38;})});}_0x3b5cb4=_[_0xe594('0x3f')]({},_0x3b5cb4,_0x43efff[_0xe594('0x40')]);return _0x51dc8b['getDescriptions'](_0x3b5cb4);}})['then'](function(_0x14e7dd){if(_0x14e7dd){_0x12e025=_0x14e7dd[_0xe594('0x35')];if(!_0x43efff[_0xe594('0x30')][_0xe594('0x36')](_0xe594('0x37'))){_0x3b5cb4[_0xe594('0x1d')]=qs[_0xe594('0x1d')](_0x43efff[_0xe594('0x30')]['limit']);_0x3b5cb4['offset']=qs[_0xe594('0x1b')](_0x43efff[_0xe594('0x30')][_0xe594('0x1b')]);}return _0x51dc8b[_0xe594('0x4e')](_0x3b5cb4);}})['then'](function(_0x4b787c){if(_0x4b787c){return _0x4b787c?{'count':_0x12e025,'rows':_0x4b787c}:null;}})[_0xe594('0x25')](respondWithResult(_0x46dae9,null))[_0xe594('0x49')](handleError(_0x46dae9,null));};
\ No newline at end of file
index 974eea7..f0a8d57 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x80dd=['./intSugarcrmConfiguration.attributes','exports','SugarcrmConfiguration','int_sugarcrm_configurations','lodash','../../config/logger','api','moment','request-promise','rimraf','../../config/environment'];(function(_0x3070dc,_0x40cf11){var _0x431489=function(_0x49bc2a){while(--_0x49bc2a){_0x3070dc['push'](_0x3070dc['shift']());}};_0x431489(++_0x40cf11);}(_0x80dd,0x9e));var _0xd80d=function(_0x3c2705,_0x467014){_0x3c2705=_0x3c2705-0x0;var _0x2d0e2a=_0x80dd[_0x3c2705];return _0x2d0e2a;};'use strict';var _=require(_0xd80d('0x0'));var util=require('util');var logger=require(_0xd80d('0x1'))(_0xd80d('0x2'));var moment=require(_0xd80d('0x3'));var BPromise=require('bluebird');var rp=require(_0xd80d('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xd80d('0x5'));var config=require(_0xd80d('0x6'));var attributes=require(_0xd80d('0x7'));module[_0xd80d('0x8')]=function(_0x5d66cd,_0x452c89){return _0x5d66cd['define'](_0xd80d('0x9'),attributes,{'tableName':_0xd80d('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5a44=['SugarcrmConfiguration','int_sugarcrm_configurations','lodash','api','request-promise','rimraf','./intSugarcrmConfiguration.attributes','exports','define'];(function(_0x48f392,_0x4bbef4){var _0x19c1e3=function(_0x52b9e0){while(--_0x52b9e0){_0x48f392['push'](_0x48f392['shift']());}};_0x19c1e3(++_0x4bbef4);}(_0x5a44,0xec));var _0x45a4=function(_0x5769f9,_0x4cc023){_0x5769f9=_0x5769f9-0x0;var _0x2d6eaa=_0x5a44[_0x5769f9];return _0x2d6eaa;};'use strict';var _=require(_0x45a4('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x45a4('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x45a4('0x2'));var fs=require('fs');var path=require('path');var rimraf=require(_0x45a4('0x3'));var config=require('../../config/environment');var attributes=require(_0x45a4('0x4'));module[_0x45a4('0x5')]=function(_0x148241,_0x205095){return _0x148241[_0x45a4('0x6')](_0x45a4('0x7'),attributes,{'tableName':_0x45a4('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c5bb51a..b0316c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0ae7=['request','then','debug','request\x20sent','stringify','error','code','SugarcrmConfiguration,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http'];(function(_0x43aadd,_0x27ec0f){var _0x36596a=function(_0x467ff2){while(--_0x467ff2){_0x43aadd['push'](_0x43aadd['shift']());}};_0x36596a(++_0x27ec0f);}(_0x0ae7,0x169));var _0x70ae=function(_0x15bc81,_0x4d4f77){_0x15bc81=_0x15bc81-0x0;var _0x59440e=_0x0ae7[_0x15bc81];return _0x59440e;};'use strict';var _=require(_0x70ae('0x0'));var util=require(_0x70ae('0x1'));var moment=require(_0x70ae('0x2'));var BPromise=require(_0x70ae('0x3'));var rs=require(_0x70ae('0x4'));var fs=require('fs');var Redis=require(_0x70ae('0x5'));var db=require(_0x70ae('0x6'))['db'];var utils=require(_0x70ae('0x7'));var logger=require(_0x70ae('0x8'))(_0x70ae('0x9'));var config=require(_0x70ae('0xa'));var jayson=require(_0x70ae('0xb'));var client=jayson[_0x70ae('0xc')][_0x70ae('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x313c8f,_0x154bf9,_0x3936e6){return new BPromise(function(_0x1ec2d5,_0x57b399){return client[_0x70ae('0xe')](_0x313c8f,_0x3936e6)[_0x70ae('0xf')](function(_0x4fb2c3){logger['info']('SugarcrmConfiguration,\x20%s,\x20%s',_0x154bf9,'request\x20sent');logger[_0x70ae('0x10')]('SugarcrmConfiguration,\x20%s,\x20%s,\x20%s',_0x154bf9,_0x70ae('0x11'),JSON[_0x70ae('0x12')](_0x4fb2c3));if(_0x4fb2c3[_0x70ae('0x13')]){if(_0x4fb2c3[_0x70ae('0x13')][_0x70ae('0x14')]===0x1f4){logger[_0x70ae('0x13')](_0x70ae('0x15'),_0x154bf9,_0x4fb2c3[_0x70ae('0x13')][_0x70ae('0x16')]);return _0x57b399(_0x4fb2c3[_0x70ae('0x13')][_0x70ae('0x16')]);}logger[_0x70ae('0x13')](_0x70ae('0x15'),_0x154bf9,_0x4fb2c3[_0x70ae('0x13')][_0x70ae('0x16')]);return _0x1ec2d5(_0x4fb2c3[_0x70ae('0x13')][_0x70ae('0x16')]);}else{logger['info'](_0x70ae('0x15'),_0x154bf9,_0x70ae('0x11'));_0x1ec2d5(_0x4fb2c3[_0x70ae('0x17')]['message']);}})[_0x70ae('0x18')](function(_0x10e53c){logger[_0x70ae('0x13')](_0x70ae('0x15'),_0x154bf9,_0x10e53c);_0x57b399(_0x10e53c);});});}
\ No newline at end of file
+var _0x8612=['then','info','SugarcrmConfiguration,\x20%s,\x20%s','debug','SugarcrmConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','code','error','message','result','catch','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','request'];(function(_0x2a89c2,_0x2ac03f){var _0x5704a3=function(_0x42072d){while(--_0x42072d){_0x2a89c2['push'](_0x2a89c2['shift']());}};_0x5704a3(++_0x2ac03f);}(_0x8612,0x1da));var _0x2861=function(_0x43f0ca,_0x266752){_0x43f0ca=_0x43f0ca-0x0;var _0x24b392=_0x8612[_0x43f0ca];return _0x24b392;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x2861('0x0'));var fs=require('fs');var Redis=require(_0x2861('0x1'));var db=require(_0x2861('0x2'))['db'];var utils=require('../../config/utils');var logger=require(_0x2861('0x3'))(_0x2861('0x4'));var config=require('../../config/environment');var jayson=require(_0x2861('0x5'));var client=jayson[_0x2861('0x6')][_0x2861('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x18eef9,_0x24114a,_0x56443b){return new BPromise(function(_0x249c77,_0x1a2c73){return client[_0x2861('0x8')](_0x18eef9,_0x56443b)[_0x2861('0x9')](function(_0x57e5a6){logger[_0x2861('0xa')](_0x2861('0xb'),_0x24114a,'request\x20sent');logger[_0x2861('0xc')](_0x2861('0xd'),_0x24114a,_0x2861('0xe'),JSON[_0x2861('0xf')](_0x57e5a6));if(_0x57e5a6['error']){if(_0x57e5a6['error'][_0x2861('0x10')]===0x1f4){logger['error'](_0x2861('0xb'),_0x24114a,_0x57e5a6[_0x2861('0x11')][_0x2861('0x12')]);return _0x1a2c73(_0x57e5a6['error'][_0x2861('0x12')]);}logger[_0x2861('0x11')](_0x2861('0xb'),_0x24114a,_0x57e5a6[_0x2861('0x11')][_0x2861('0x12')]);return _0x249c77(_0x57e5a6[_0x2861('0x11')][_0x2861('0x12')]);}else{logger['info'](_0x2861('0xb'),_0x24114a,_0x2861('0xe'));_0x249c77(_0x57e5a6[_0x2861('0x13')][_0x2861('0x12')]);}})[_0x2861('0x14')](function(_0x41c96b){logger[_0x2861('0x11')](_0x2861('0xb'),_0x24114a,_0x41c96b);_0x1a2c73(_0x41c96b);});});}
\ No newline at end of file
index 05fbcd1..92785aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec64=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSugarcrmField.controller','get','index','/:id','isAuthenticated','show','create','put','update','delete','exports','multer','util','connect-timeout','express'];(function(_0x1ad57d,_0xc91a96){var _0xc96b18=function(_0x48db6e){while(--_0x48db6e){_0x1ad57d['push'](_0x1ad57d['shift']());}};_0xc96b18(++_0xc91a96);}(_0xec64,0x128));var _0x4ec6=function(_0x3b2244,_0x54873f){_0x3b2244=_0x3b2244-0x0;var _0x2dcc14=_0xec64[_0x3b2244];return _0x2dcc14;};'use strict';var multer=require(_0x4ec6('0x0'));var util=require(_0x4ec6('0x1'));var path=require('path');var timeout=require(_0x4ec6('0x2'));var express=require(_0x4ec6('0x3'));var router=express[_0x4ec6('0x4')]();var fs_extra=require(_0x4ec6('0x5'));var auth=require(_0x4ec6('0x6'));var interaction=require(_0x4ec6('0x7'));var config=require(_0x4ec6('0x8'));var controller=require(_0x4ec6('0x9'));router[_0x4ec6('0xa')]('/',auth['isAuthenticated'](),controller[_0x4ec6('0xb')]);router[_0x4ec6('0xa')](_0x4ec6('0xc'),auth[_0x4ec6('0xd')](),controller[_0x4ec6('0xe')]);router['post']('/',auth[_0x4ec6('0xd')](),controller[_0x4ec6('0xf')]);router[_0x4ec6('0x10')](_0x4ec6('0xc'),auth['isAuthenticated'](),controller[_0x4ec6('0x11')]);router[_0x4ec6('0x12')](_0x4ec6('0xc'),auth['isAuthenticated'](),controller['destroy']);module[_0x4ec6('0x13')]=router;
\ No newline at end of file
+var _0x83cb=['util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','show','post','create','/:id','update','destroy','exports','multer'];(function(_0x1c5288,_0x54ded1){var _0x1075e5=function(_0x7b5f13){while(--_0x7b5f13){_0x1c5288['push'](_0x1c5288['shift']());}};_0x1075e5(++_0x54ded1);}(_0x83cb,0x155));var _0xb83c=function(_0x2a4b6c,_0x2cac39){_0x2a4b6c=_0x2a4b6c-0x0;var _0x3daa18=_0x83cb[_0x2a4b6c];return _0x3daa18;};'use strict';var multer=require(_0xb83c('0x0'));var util=require(_0xb83c('0x1'));var path=require(_0xb83c('0x2'));var timeout=require(_0xb83c('0x3'));var express=require('express');var router=express[_0xb83c('0x4')]();var fs_extra=require(_0xb83c('0x5'));var auth=require(_0xb83c('0x6'));var interaction=require(_0xb83c('0x7'));var config=require(_0xb83c('0x8'));var controller=require('./intSugarcrmField.controller');router[_0xb83c('0x9')]('/',auth[_0xb83c('0xa')](),controller[_0xb83c('0xb')]);router['get']('/:id',auth[_0xb83c('0xa')](),controller[_0xb83c('0xc')]);router[_0xb83c('0xd')]('/',auth[_0xb83c('0xa')](),controller[_0xb83c('0xe')]);router['put'](_0xb83c('0xf'),auth[_0xb83c('0xa')](),controller[_0xb83c('0x10')]);router['delete'](_0xb83c('0xf'),auth[_0xb83c('0xa')](),controller[_0xb83c('0x11')]);module[_0xb83c('0x12')]=router;
\ No newline at end of file
index 7fbf54d..b72ed75 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb618=['STRING','variable','BOOLEAN','exports','ENUM','string','customVariable','keyValue'];(function(_0xe89382,_0x3480a4){var _0x28f382=function(_0x505771){while(--_0x505771){_0xe89382['push'](_0xe89382['shift']());}};_0x28f382(++_0x3480a4);}(_0xb618,0x8b));var _0x8b61=function(_0x251ff3,_0x44b8fb){_0x251ff3=_0x251ff3-0x0;var _0x2cf5f5=_0xb618[_0x251ff3];return _0x2cf5f5;};'use strict';var Sequelize=require('sequelize');module[_0x8b61('0x0')]={'type':{'type':Sequelize[_0x8b61('0x1')](_0x8b61('0x2'),'variable',_0x8b61('0x3'),_0x8b61('0x4'),'picklist'),'defaultValue':'string'},'content':{'type':Sequelize[_0x8b61('0x5')]},'key':{'type':Sequelize[_0x8b61('0x5')]},'keyType':{'type':Sequelize[_0x8b61('0x1')](_0x8b61('0x2'),_0x8b61('0x6'),_0x8b61('0x3'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0x8b61('0x5')]},'nameField':{'type':Sequelize[_0x8b61('0x5')]},'customField':{'type':Sequelize[_0x8b61('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x0eb1=['ENUM','customVariable','keyValue','string','STRING','variable','BOOLEAN','exports'];(function(_0x892fed,_0xb9234d){var _0x301ff4=function(_0x2ac34f){while(--_0x2ac34f){_0x892fed['push'](_0x892fed['shift']());}};_0x301ff4(++_0xb9234d);}(_0x0eb1,0x137));var _0x10eb=function(_0x5c1363,_0x330fc1){_0x5c1363=_0x5c1363-0x0;var _0x54c378=_0x0eb1[_0x5c1363];return _0x54c378;};'use strict';var Sequelize=require('sequelize');module[_0x10eb('0x0')]={'type':{'type':Sequelize[_0x10eb('0x1')]('string','variable',_0x10eb('0x2'),_0x10eb('0x3'),'picklist'),'defaultValue':_0x10eb('0x4')},'content':{'type':Sequelize[_0x10eb('0x5')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize['ENUM'](_0x10eb('0x4'),_0x10eb('0x6'),_0x10eb('0x2'))},'keyContent':{'type':Sequelize[_0x10eb('0x5')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0x10eb('0x5')]},'customField':{'type':Sequelize[_0x10eb('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x10eb('0x5')]}};
\ No newline at end of file
index 73c6f65..cf20491 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x654c=['../../mysqldb','sendStatus','status','json','count','offset','limit','set','apply','reject','update','then','destroy','end','error','send','index','map','rawAttributes','fieldName','type','key','model','name','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','VIRTUAL','merge','options','SugarcrmField','includeAll','include','findAll','catch','show','params','find','create','body','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment'];(function(_0x3f8a98,_0x15b004){var _0x13d1f2=function(_0x15d3af){while(--_0x15d3af){_0x3f8a98['push'](_0x3f8a98['shift']());}};_0x13d1f2(++_0x15b004);}(_0x654c,0x7a));var _0xc654=function(_0x16627a,_0x45511f){_0x16627a=_0x16627a-0x0;var _0x120d1b=_0x654c[_0x16627a];return _0x120d1b;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xc654('0x0'));var jsonpatch=require(_0xc654('0x1'));var rp=require('request-promise');var moment=require(_0xc654('0x2'));var BPromise=require(_0xc654('0x3'));var Mustache=require(_0xc654('0x4'));var util=require('util');var path=require(_0xc654('0x5'));var sox=require(_0xc654('0x6'));var csv=require(_0xc654('0x7'));var ejs=require(_0xc654('0x8'));var fs=require('fs');var fs_extra=require(_0xc654('0x9'));var _=require(_0xc654('0xa'));var squel=require(_0xc654('0xb'));var crypto=require(_0xc654('0xc'));var jsforce=require(_0xc654('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xc654('0x7'));var querystring=require(_0xc654('0xe'));var Papa=require(_0xc654('0xf'));var Redis=require('ioredis');var authService=require(_0xc654('0x10'));var qs=require(_0xc654('0x11'));var as=require(_0xc654('0x12'));var hardwareService=require(_0xc654('0x13'));var logger=require(_0xc654('0x14'))('api');var utils=require('../../config/utils');var config=require(_0xc654('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0xc654('0x16'))['db'];function respondWithStatusCode(_0x395738,_0x4e6572){_0x4e6572=_0x4e6572||0xcc;return function(_0x432cf9){if(_0x432cf9){return _0x395738[_0xc654('0x17')](_0x4e6572);}return _0x395738[_0xc654('0x18')](_0x4e6572)['end']();};}function respondWithResult(_0x669910,_0x462a30){_0x462a30=_0x462a30||0xc8;return function(_0x339d69){if(_0x339d69){return _0x669910[_0xc654('0x18')](_0x462a30)[_0xc654('0x19')](_0x339d69);}};}function respondWithFilteredResult(_0x3a81a7,_0x25fb94){return function(_0x47ef3a){if(_0x47ef3a){var _0x56c53a=typeof _0x25fb94['offset']==='undefined'&&typeof _0x25fb94['limit']==='undefined';var _0x1361f7=_0x47ef3a[_0xc654('0x1a')];var _0x22f390=_0x56c53a?0x0:_0x25fb94[_0xc654('0x1b')];var _0x2f73cf=_0x56c53a?_0x47ef3a[_0xc654('0x1a')]:_0x25fb94[_0xc654('0x1b')]+_0x25fb94[_0xc654('0x1c')];var _0x5bc4e0;if(_0x2f73cf>=_0x1361f7){_0x2f73cf=_0x1361f7;_0x5bc4e0=0xc8;}else{_0x5bc4e0=0xce;}_0x3a81a7[_0xc654('0x18')](_0x5bc4e0);return _0x3a81a7[_0xc654('0x1d')]('Content-Range',_0x22f390+'-'+_0x2f73cf+'/'+_0x1361f7)[_0xc654('0x19')](_0x47ef3a);}return null;};}function patchUpdates(_0x590e87){return function(_0x145e90){try{jsonpatch[_0xc654('0x1e')](_0x145e90,_0x590e87,!![]);}catch(_0x42c446){return BPromise[_0xc654('0x1f')](_0x42c446);}return _0x145e90['save']();};}function saveUpdates(_0x593b7b,_0x4cae8b){return function(_0x4f75e8){if(_0x4f75e8){return _0x4f75e8[_0xc654('0x20')](_0x593b7b)[_0xc654('0x21')](function(_0xf24318){return _0xf24318;});}return null;};}function removeEntity(_0x28b92f,_0x43b9e5){return function(_0x52fa9d){if(_0x52fa9d){return _0x52fa9d[_0xc654('0x22')]()[_0xc654('0x21')](function(){_0x28b92f[_0xc654('0x18')](0xcc)[_0xc654('0x23')]();});}};}function handleEntityNotFound(_0x240d9b,_0x1fc8bc){return function(_0x461295){if(!_0x461295){_0x240d9b[_0xc654('0x17')](0x194);}return _0x461295;};}function handleError(_0x7637a1,_0x2f7282){_0x2f7282=_0x2f7282||0x1f4;return function(_0x35e381){logger[_0xc654('0x24')](_0x35e381['stack']);if(_0x35e381['name']){delete _0x35e381['name'];}_0x7637a1[_0xc654('0x18')](_0x2f7282)[_0xc654('0x25')](_0x35e381);};}exports[_0xc654('0x26')]=function(_0x4b8d71,_0x16b4c8){var _0x170881={},_0x440ae2={},_0x1e1285={'count':0x0,'rows':[]};var _0x14423b=_[_0xc654('0x27')](db['SugarcrmField'][_0xc654('0x28')],function(_0x1b831d){return{'name':_0x1b831d[_0xc654('0x29')],'type':_0x1b831d[_0xc654('0x2a')][_0xc654('0x2b')]};});_0x440ae2[_0xc654('0x2c')]=_['map'](_0x14423b,_0xc654('0x2d'));_0x440ae2[_0xc654('0x2e')]=_[_0xc654('0x2f')](_0x4b8d71[_0xc654('0x2e')]);_0x440ae2[_0xc654('0x30')]=_['intersection'](_0x440ae2['model'],_0x440ae2['query']);_0x170881[_0xc654('0x31')]=_[_0xc654('0x32')](_0x440ae2['model'],qs[_0xc654('0x33')](_0x4b8d71['query']['fields']));_0x170881[_0xc654('0x31')]=_0x170881[_0xc654('0x31')][_0xc654('0x34')]?_0x170881['attributes']:_0x440ae2[_0xc654('0x2c')];if(!_0x4b8d71[_0xc654('0x2e')][_0xc654('0x35')](_0xc654('0x36'))){_0x170881[_0xc654('0x1c')]=qs[_0xc654('0x1c')](_0x4b8d71['query'][_0xc654('0x1c')]);_0x170881['offset']=qs[_0xc654('0x1b')](_0x4b8d71[_0xc654('0x2e')]['offset']);}_0x170881[_0xc654('0x37')]=qs[_0xc654('0x38')](_0x4b8d71[_0xc654('0x2e')][_0xc654('0x38')]);_0x170881[_0xc654('0x39')]=qs['filters'](_['pick'](_0x4b8d71[_0xc654('0x2e')],_0x440ae2[_0xc654('0x30')]),_0x14423b);if(_0x4b8d71[_0xc654('0x2e')][_0xc654('0x3a')]){_0x170881[_0xc654('0x39')]=_['merge'](_0x170881['where'],{'$or':_[_0xc654('0x27')](_0x14423b,function(_0x3e9a78){if(_0x3e9a78['type']!==_0xc654('0x3b')){var _0x1a4543={};_0x1a4543[_0x3e9a78[_0xc654('0x2d')]]={'$like':'%'+_0x4b8d71[_0xc654('0x2e')][_0xc654('0x3a')]+'%'};return _0x1a4543;}})});}_0x170881=_[_0xc654('0x3c')]({},_0x170881,_0x4b8d71[_0xc654('0x3d')]);var _0x112050={'where':_0x170881['where']};return db[_0xc654('0x3e')][_0xc654('0x1a')](_0x112050)[_0xc654('0x21')](function(_0x3a5df8){_0x1e1285[_0xc654('0x1a')]=_0x3a5df8;if(_0x4b8d71[_0xc654('0x2e')][_0xc654('0x3f')]){_0x170881[_0xc654('0x40')]=[{'all':!![]}];}return db[_0xc654('0x3e')][_0xc654('0x41')](_0x170881);})[_0xc654('0x21')](function(_0xa08282){_0x1e1285['rows']=_0xa08282;return _0x1e1285;})['then'](respondWithFilteredResult(_0x16b4c8,_0x170881))[_0xc654('0x42')](handleError(_0x16b4c8,null));};exports[_0xc654('0x43')]=function(_0x1ff137,_0xdb6fb2){var _0x2bafa2={'raw':!![],'where':{'id':_0x1ff137[_0xc654('0x44')]['id']}},_0x376557={};_0x376557[_0xc654('0x2c')]=_['keys'](db[_0xc654('0x3e')][_0xc654('0x28')]);_0x376557['query']=_[_0xc654('0x2f')](_0x1ff137[_0xc654('0x2e')]);_0x376557[_0xc654('0x30')]=_['intersection'](_0x376557[_0xc654('0x2c')],_0x376557[_0xc654('0x2e')]);_0x2bafa2[_0xc654('0x31')]=_['intersection'](_0x376557[_0xc654('0x2c')],qs[_0xc654('0x33')](_0x1ff137[_0xc654('0x2e')][_0xc654('0x33')]));_0x2bafa2['attributes']=_0x2bafa2['attributes'][_0xc654('0x34')]?_0x2bafa2['attributes']:_0x376557['model'];if(_0x1ff137[_0xc654('0x2e')]['includeAll']){_0x2bafa2[_0xc654('0x40')]=[{'all':!![]}];}_0x2bafa2=_[_0xc654('0x3c')]({},_0x2bafa2,_0x1ff137['options']);return db[_0xc654('0x3e')][_0xc654('0x45')](_0x2bafa2)[_0xc654('0x21')](handleEntityNotFound(_0xdb6fb2,null))[_0xc654('0x21')](respondWithResult(_0xdb6fb2,null))['catch'](handleError(_0xdb6fb2,null));};exports[_0xc654('0x46')]=function(_0x21d6c5,_0x5f20e0){return db['SugarcrmField'][_0xc654('0x46')](_0x21d6c5[_0xc654('0x47')],{})[_0xc654('0x21')](respondWithResult(_0x5f20e0,0xc9))[_0xc654('0x42')](handleError(_0x5f20e0,null));};exports[_0xc654('0x20')]=function(_0x4545b2,_0x44676c){if(_0x4545b2[_0xc654('0x47')]['id']){delete _0x4545b2[_0xc654('0x47')]['id'];}return db['SugarcrmField']['find']({'where':{'id':_0x4545b2[_0xc654('0x44')]['id']}})[_0xc654('0x21')](handleEntityNotFound(_0x44676c,null))[_0xc654('0x21')](saveUpdates(_0x4545b2[_0xc654('0x47')],null))[_0xc654('0x21')](respondWithResult(_0x44676c,null))['catch'](handleError(_0x44676c,null));};exports[_0xc654('0x22')]=function(_0x3c8d94,_0x3743a0){return db[_0xc654('0x3e')][_0xc654('0x45')]({'where':{'id':_0x3c8d94[_0xc654('0x44')]['id']}})[_0xc654('0x21')](handleEntityNotFound(_0x3743a0,null))[_0xc654('0x21')](removeEntity(_0x3743a0,null))[_0xc654('0x42')](handleError(_0x3743a0,null));};
\ No newline at end of file
+var _0x427a=['fields','length','hasOwnProperty','nolimit','order','filter','where','merge','options','SugarcrmField','includeAll','include','findAll','catch','show','params','intersection','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','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/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','limit','undefined','count','set','json','apply','reject','then','destroy','error','stack','name','send','rawAttributes','fieldName','type','key','model','map','query','keys','filters','attributes'];(function(_0x564f2b,_0x3e14c7){var _0x2145ad=function(_0x142b3b){while(--_0x142b3b){_0x564f2b['push'](_0x564f2b['shift']());}};_0x2145ad(++_0x3e14c7);}(_0x427a,0x1ca));var _0xa427=function(_0x3d8c4d,_0x6518ca){_0x3d8c4d=_0x3d8c4d-0x0;var _0x382c4e=_0x427a[_0x3d8c4d];return _0x382c4e;};'use strict';var emlformat=require(_0xa427('0x0'));var rimraf=require(_0xa427('0x1'));var zipdir=require(_0xa427('0x2'));var jsonpatch=require(_0xa427('0x3'));var rp=require(_0xa427('0x4'));var moment=require(_0xa427('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xa427('0x6'));var util=require(_0xa427('0x7'));var path=require('path');var sox=require(_0xa427('0x8'));var csv=require(_0xa427('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa427('0xa'));var _=require(_0xa427('0xb'));var squel=require(_0xa427('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xa427('0xd'));var toCsv=require(_0xa427('0x9'));var querystring=require(_0xa427('0xe'));var Papa=require(_0xa427('0xf'));var Redis=require(_0xa427('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xa427('0x11'));var as=require(_0xa427('0x12'));var hardwareService=require(_0xa427('0x13'));var logger=require(_0xa427('0x14'))(_0xa427('0x15'));var utils=require(_0xa427('0x16'));var config=require(_0xa427('0x17'));var licenseUtil=require(_0xa427('0x18'));var db=require(_0xa427('0x19'))['db'];function respondWithStatusCode(_0x3f6e50,_0x2e7353){_0x2e7353=_0x2e7353||0xcc;return function(_0xada053){if(_0xada053){return _0x3f6e50[_0xa427('0x1a')](_0x2e7353);}return _0x3f6e50[_0xa427('0x1b')](_0x2e7353)[_0xa427('0x1c')]();};}function respondWithResult(_0x782f58,_0x5c6aad){_0x5c6aad=_0x5c6aad||0xc8;return function(_0x127174){if(_0x127174){return _0x782f58[_0xa427('0x1b')](_0x5c6aad)['json'](_0x127174);}};}function respondWithFilteredResult(_0x30bf56,_0x48b724){return function(_0x153f4e){if(_0x153f4e){var _0x4b124b=typeof _0x48b724[_0xa427('0x1d')]==='undefined'&&typeof _0x48b724[_0xa427('0x1e')]===_0xa427('0x1f');var _0x5ab1b9=_0x153f4e['count'];var _0x4e126f=_0x4b124b?0x0:_0x48b724[_0xa427('0x1d')];var _0x46ebf1=_0x4b124b?_0x153f4e[_0xa427('0x20')]:_0x48b724['offset']+_0x48b724['limit'];var _0x411bf7;if(_0x46ebf1>=_0x5ab1b9){_0x46ebf1=_0x5ab1b9;_0x411bf7=0xc8;}else{_0x411bf7=0xce;}_0x30bf56[_0xa427('0x1b')](_0x411bf7);return _0x30bf56[_0xa427('0x21')]('Content-Range',_0x4e126f+'-'+_0x46ebf1+'/'+_0x5ab1b9)[_0xa427('0x22')](_0x153f4e);}return null;};}function patchUpdates(_0x364a73){return function(_0x821860){try{jsonpatch[_0xa427('0x23')](_0x821860,_0x364a73,!![]);}catch(_0x381374){return BPromise[_0xa427('0x24')](_0x381374);}return _0x821860['save']();};}function saveUpdates(_0x5c1ac9,_0x3959e6){return function(_0x44c68e){if(_0x44c68e){return _0x44c68e['update'](_0x5c1ac9)[_0xa427('0x25')](function(_0x33dfb9){return _0x33dfb9;});}return null;};}function removeEntity(_0x28049e,_0x37f5ad){return function(_0x26122d){if(_0x26122d){return _0x26122d[_0xa427('0x26')]()[_0xa427('0x25')](function(){_0x28049e[_0xa427('0x1b')](0xcc)[_0xa427('0x1c')]();});}};}function handleEntityNotFound(_0x49b2e7,_0x2bfea8){return function(_0x2dbef1){if(!_0x2dbef1){_0x49b2e7[_0xa427('0x1a')](0x194);}return _0x2dbef1;};}function handleError(_0x278a6c,_0x2c69b4){_0x2c69b4=_0x2c69b4||0x1f4;return function(_0x448173){logger[_0xa427('0x27')](_0x448173[_0xa427('0x28')]);if(_0x448173[_0xa427('0x29')]){delete _0x448173['name'];}_0x278a6c[_0xa427('0x1b')](_0x2c69b4)[_0xa427('0x2a')](_0x448173);};}exports['index']=function(_0x196d4f,_0xb44013){var _0x58a3dc={},_0x32d2fc={},_0x3129d6={'count':0x0,'rows':[]};var _0x190e3e=_['map'](db['SugarcrmField'][_0xa427('0x2b')],function(_0x5b2c39){return{'name':_0x5b2c39[_0xa427('0x2c')],'type':_0x5b2c39[_0xa427('0x2d')][_0xa427('0x2e')]};});_0x32d2fc[_0xa427('0x2f')]=_[_0xa427('0x30')](_0x190e3e,'name');_0x32d2fc[_0xa427('0x31')]=_[_0xa427('0x32')](_0x196d4f[_0xa427('0x31')]);_0x32d2fc[_0xa427('0x33')]=_['intersection'](_0x32d2fc[_0xa427('0x2f')],_0x32d2fc[_0xa427('0x31')]);_0x58a3dc[_0xa427('0x34')]=_['intersection'](_0x32d2fc['model'],qs['fields'](_0x196d4f[_0xa427('0x31')][_0xa427('0x35')]));_0x58a3dc[_0xa427('0x34')]=_0x58a3dc[_0xa427('0x34')][_0xa427('0x36')]?_0x58a3dc[_0xa427('0x34')]:_0x32d2fc['model'];if(!_0x196d4f[_0xa427('0x31')][_0xa427('0x37')](_0xa427('0x38'))){_0x58a3dc[_0xa427('0x1e')]=qs[_0xa427('0x1e')](_0x196d4f[_0xa427('0x31')][_0xa427('0x1e')]);_0x58a3dc[_0xa427('0x1d')]=qs[_0xa427('0x1d')](_0x196d4f[_0xa427('0x31')]['offset']);}_0x58a3dc[_0xa427('0x39')]=qs['sort'](_0x196d4f[_0xa427('0x31')]['sort']);_0x58a3dc['where']=qs[_0xa427('0x33')](_['pick'](_0x196d4f[_0xa427('0x31')],_0x32d2fc[_0xa427('0x33')]),_0x190e3e);if(_0x196d4f[_0xa427('0x31')][_0xa427('0x3a')]){_0x58a3dc[_0xa427('0x3b')]=_[_0xa427('0x3c')](_0x58a3dc[_0xa427('0x3b')],{'$or':_['map'](_0x190e3e,function(_0x275763){if(_0x275763[_0xa427('0x2d')]!=='VIRTUAL'){var _0x204023={};_0x204023[_0x275763[_0xa427('0x29')]]={'$like':'%'+_0x196d4f[_0xa427('0x31')][_0xa427('0x3a')]+'%'};return _0x204023;}})});}_0x58a3dc=_[_0xa427('0x3c')]({},_0x58a3dc,_0x196d4f[_0xa427('0x3d')]);var _0x182429={'where':_0x58a3dc[_0xa427('0x3b')]};return db[_0xa427('0x3e')]['count'](_0x182429)[_0xa427('0x25')](function(_0x579809){_0x3129d6[_0xa427('0x20')]=_0x579809;if(_0x196d4f['query'][_0xa427('0x3f')]){_0x58a3dc[_0xa427('0x40')]=[{'all':!![]}];}return db[_0xa427('0x3e')][_0xa427('0x41')](_0x58a3dc);})[_0xa427('0x25')](function(_0x16506a){_0x3129d6['rows']=_0x16506a;return _0x3129d6;})[_0xa427('0x25')](respondWithFilteredResult(_0xb44013,_0x58a3dc))[_0xa427('0x42')](handleError(_0xb44013,null));};exports[_0xa427('0x43')]=function(_0x1bc70d,_0x1223bd){var _0x4f59ec={'raw':!![],'where':{'id':_0x1bc70d[_0xa427('0x44')]['id']}},_0x4bf5cb={};_0x4bf5cb['model']=_[_0xa427('0x32')](db['SugarcrmField'][_0xa427('0x2b')]);_0x4bf5cb[_0xa427('0x31')]=_[_0xa427('0x32')](_0x1bc70d[_0xa427('0x31')]);_0x4bf5cb[_0xa427('0x33')]=_['intersection'](_0x4bf5cb[_0xa427('0x2f')],_0x4bf5cb['query']);_0x4f59ec['attributes']=_[_0xa427('0x45')](_0x4bf5cb[_0xa427('0x2f')],qs[_0xa427('0x35')](_0x1bc70d[_0xa427('0x31')]['fields']));_0x4f59ec['attributes']=_0x4f59ec[_0xa427('0x34')]['length']?_0x4f59ec[_0xa427('0x34')]:_0x4bf5cb[_0xa427('0x2f')];if(_0x1bc70d[_0xa427('0x31')][_0xa427('0x3f')]){_0x4f59ec['include']=[{'all':!![]}];}_0x4f59ec=_['merge']({},_0x4f59ec,_0x1bc70d[_0xa427('0x3d')]);return db[_0xa427('0x3e')][_0xa427('0x46')](_0x4f59ec)[_0xa427('0x25')](handleEntityNotFound(_0x1223bd,null))['then'](respondWithResult(_0x1223bd,null))[_0xa427('0x42')](handleError(_0x1223bd,null));};exports[_0xa427('0x47')]=function(_0x62fb3d,_0x4da6fa){return db[_0xa427('0x3e')][_0xa427('0x47')](_0x62fb3d[_0xa427('0x48')],{})[_0xa427('0x25')](respondWithResult(_0x4da6fa,0xc9))[_0xa427('0x42')](handleError(_0x4da6fa,null));};exports['update']=function(_0x2f19c0,_0x29cfcd){if(_0x2f19c0['body']['id']){delete _0x2f19c0[_0xa427('0x48')]['id'];}return db[_0xa427('0x3e')][_0xa427('0x46')]({'where':{'id':_0x2f19c0[_0xa427('0x44')]['id']}})['then'](handleEntityNotFound(_0x29cfcd,null))[_0xa427('0x25')](saveUpdates(_0x2f19c0['body'],null))[_0xa427('0x25')](respondWithResult(_0x29cfcd,null))[_0xa427('0x42')](handleError(_0x29cfcd,null));};exports['destroy']=function(_0x3ea69a,_0x1652c7){return db[_0xa427('0x3e')][_0xa427('0x46')]({'where':{'id':_0x3ea69a[_0xa427('0x44')]['id']}})[_0xa427('0x25')](handleEntityNotFound(_0x1652c7,null))[_0xa427('0x25')](removeEntity(_0x1652c7,null))[_0xa427('0x42')](handleError(_0x1652c7,null));};
\ No newline at end of file
index 9ea9d02..74dd2c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x676a=['request-promise','path','./intSugarcrmField.attributes','exports','define','int_sugarcrm_fields','FieldId','lodash','util','moment'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x676a,0xbb));var _0xa676=function(_0x764874,_0x3ed544){_0x764874=_0x764874-0x0;var _0x29f9d5=_0x676a[_0x764874];return _0x29f9d5;};'use strict';var _=require(_0xa676('0x0'));var util=require(_0xa676('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xa676('0x2'));var BPromise=require('bluebird');var rp=require(_0xa676('0x3'));var fs=require('fs');var path=require(_0xa676('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xa676('0x5'));module[_0xa676('0x6')]=function(_0x13f664,_0x2e3681){return _0x13f664[_0xa676('0x7')]('SugarcrmField',attributes,{'tableName':_0xa676('0x8'),'paranoid':![],'indexes':[{'name':'sugarcrm_unique_index','fields':['idField',_0xa676('0x9')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x3529=['api','moment','request-promise','rimraf','../../config/environment','./intSugarcrmField.attributes','exports','idField','FieldId','util','../../config/logger'];(function(_0x18b5d9,_0x32b1f2){var _0x3bcea1=function(_0x5821cc){while(--_0x5821cc){_0x18b5d9['push'](_0x18b5d9['shift']());}};_0x3bcea1(++_0x32b1f2);}(_0x3529,0xda));var _0x9352=function(_0x4b5c23,_0x101faa){_0x4b5c23=_0x4b5c23-0x0;var _0x262cfd=_0x3529[_0x4b5c23];return _0x262cfd;};'use strict';var _=require('lodash');var util=require(_0x9352('0x0'));var logger=require(_0x9352('0x1'))(_0x9352('0x2'));var moment=require(_0x9352('0x3'));var BPromise=require('bluebird');var rp=require(_0x9352('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x9352('0x5'));var config=require(_0x9352('0x6'));var attributes=require(_0x9352('0x7'));module[_0x9352('0x8')]=function(_0x2e277a,_0x496fdb){return _0x2e277a['define']('SugarcrmField',attributes,{'tableName':'int_sugarcrm_fields','paranoid':![],'indexes':[{'name':'sugarcrm_unique_index','fields':[_0x9352('0x9'),_0x9352('0xa')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index b83b109..9100105 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaddd=['moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','http','request','then','SugarcrmField,\x20%s,\x20%s','request\x20sent','debug','SugarcrmField,\x20%s,\x20%s,\x20%s','error','message','info','catch','lodash','util'];(function(_0x2c1aa8,_0x3e0609){var _0x4019f5=function(_0x916eac){while(--_0x916eac){_0x2c1aa8['push'](_0x2c1aa8['shift']());}};_0x4019f5(++_0x3e0609);}(_0xaddd,0xb2));var _0xdadd=function(_0x2c8de4,_0x48ecd7){_0x2c8de4=_0x2c8de4-0x0;var _0xa5f1d5=_0xaddd[_0x2c8de4];return _0xa5f1d5;};'use strict';var _=require(_0xdadd('0x0'));var util=require(_0xdadd('0x1'));var moment=require(_0xdadd('0x2'));var BPromise=require(_0xdadd('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xdadd('0x4'));var db=require(_0xdadd('0x5'))['db'];var utils=require(_0xdadd('0x6'));var logger=require(_0xdadd('0x7'))(_0xdadd('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0xdadd('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1225fb,_0xdf85b0,_0x16b8b5){return new BPromise(function(_0x49c2d9,_0x373a55){return client[_0xdadd('0xa')](_0x1225fb,_0x16b8b5)[_0xdadd('0xb')](function(_0xe97895){logger['info'](_0xdadd('0xc'),_0xdf85b0,_0xdadd('0xd'));logger[_0xdadd('0xe')](_0xdadd('0xf'),_0xdf85b0,_0xdadd('0xd'),JSON['stringify'](_0xe97895));if(_0xe97895[_0xdadd('0x10')]){if(_0xe97895[_0xdadd('0x10')]['code']===0x1f4){logger['error']('SugarcrmField,\x20%s,\x20%s',_0xdf85b0,_0xe97895[_0xdadd('0x10')][_0xdadd('0x11')]);return _0x373a55(_0xe97895['error'][_0xdadd('0x11')]);}logger[_0xdadd('0x10')](_0xdadd('0xc'),_0xdf85b0,_0xe97895[_0xdadd('0x10')]['message']);return _0x49c2d9(_0xe97895['error'][_0xdadd('0x11')]);}else{logger[_0xdadd('0x12')]('SugarcrmField,\x20%s,\x20%s',_0xdf85b0,'request\x20sent');_0x49c2d9(_0xe97895['result']['message']);}})[_0xdadd('0x13')](function(_0x268653){logger[_0xdadd('0x10')](_0xdadd('0xc'),_0xdf85b0,_0x268653);_0x373a55(_0x268653);});});}
\ No newline at end of file
+var _0xb3b9=['client','http','request','info','SugarcrmField,\x20%s,\x20%s','request\x20sent','debug','SugarcrmField,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','jayson/promise'];(function(_0x420282,_0x1f941f){var _0x535480=function(_0x18cddc){while(--_0x18cddc){_0x420282['push'](_0x420282['shift']());}};_0x535480(++_0x1f941f);}(_0xb3b9,0x1f0));var _0x9b3b=function(_0x111163,_0x2c5125){_0x111163=_0x111163-0x0;var _0x17067e=_0xb3b9[_0x111163];return _0x17067e;};'use strict';var _=require(_0x9b3b('0x0'));var util=require(_0x9b3b('0x1'));var moment=require('moment');var BPromise=require(_0x9b3b('0x2'));var rs=require(_0x9b3b('0x3'));var fs=require('fs');var Redis=require(_0x9b3b('0x4'));var db=require(_0x9b3b('0x5'))['db'];var utils=require(_0x9b3b('0x6'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x9b3b('0x7'));var client=jayson[_0x9b3b('0x8')][_0x9b3b('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x7ef48c,_0x3c0e44,_0x647eb){return new BPromise(function(_0x41be7f,_0x59f6b3){return client[_0x9b3b('0xa')](_0x7ef48c,_0x647eb)['then'](function(_0x81277){logger[_0x9b3b('0xb')](_0x9b3b('0xc'),_0x3c0e44,_0x9b3b('0xd'));logger[_0x9b3b('0xe')](_0x9b3b('0xf'),_0x3c0e44,_0x9b3b('0xd'),JSON[_0x9b3b('0x10')](_0x81277));if(_0x81277[_0x9b3b('0x11')]){if(_0x81277[_0x9b3b('0x11')]['code']===0x1f4){logger[_0x9b3b('0x11')](_0x9b3b('0xc'),_0x3c0e44,_0x81277['error']['message']);return _0x59f6b3(_0x81277[_0x9b3b('0x11')][_0x9b3b('0x12')]);}logger[_0x9b3b('0x11')](_0x9b3b('0xc'),_0x3c0e44,_0x81277[_0x9b3b('0x11')]['message']);return _0x41be7f(_0x81277['error']['message']);}else{logger[_0x9b3b('0xb')]('SugarcrmField,\x20%s,\x20%s',_0x3c0e44,_0x9b3b('0xd'));_0x41be7f(_0x81277[_0x9b3b('0x13')][_0x9b3b('0x12')]);}})[_0x9b3b('0x14')](function(_0x2cf985){logger[_0x9b3b('0x11')](_0x9b3b('0xc'),_0x3c0e44,_0x2cf985);_0x59f6b3(_0x2cf985);});});}
\ No newline at end of file
index 8356c57..efe6b5d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x39e0=['/:id','isAuthenticated','show','/:id/configurations','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','destroy','exports','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','./intVtigerAccount.controller','get','index'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x39e0,0x1c5));var _0x039e=function(_0x315714,_0xe6f8e3){_0x315714=_0x315714-0x0;var _0x159f71=_0x39e0[_0x315714];return _0x159f71;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x039e('0x0'));var timeout=require('connect-timeout');var express=require(_0x039e('0x1'));var router=express[_0x039e('0x2')]();var fs_extra=require(_0x039e('0x3'));var auth=require(_0x039e('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x039e('0x5'));var controller=require(_0x039e('0x6'));router[_0x039e('0x7')]('/',auth['isAuthenticated'](),controller[_0x039e('0x8')]);router[_0x039e('0x7')](_0x039e('0x9'),auth[_0x039e('0xa')](),controller[_0x039e('0xb')]);router[_0x039e('0x7')](_0x039e('0xc'),auth[_0x039e('0xa')](),controller[_0x039e('0xd')]);router['get'](_0x039e('0xe'),auth[_0x039e('0xa')](),controller[_0x039e('0xf')]);router[_0x039e('0x10')]('/',auth[_0x039e('0xa')](),controller[_0x039e('0x11')]);router['post'](_0x039e('0xc'),auth[_0x039e('0xa')](),controller[_0x039e('0x12')]);router[_0x039e('0x13')]('/:id',auth[_0x039e('0xa')](),controller['update']);router['delete'](_0x039e('0x9'),auth[_0x039e('0xa')](),controller[_0x039e('0x14')]);module[_0x039e('0x15')]=router;
\ No newline at end of file
+var _0xe64a=['express','Router','fs-extra','../../components/auth/service','isAuthenticated','index','get','/:id','show','/:id/configurations','getConfigurations','create','post','addConfiguration','update','delete','destroy','exports','multer','util','path','connect-timeout'];(function(_0x307195,_0x275b0c){var _0x16c4f4=function(_0x83c0c1){while(--_0x83c0c1){_0x307195['push'](_0x307195['shift']());}};_0x16c4f4(++_0x275b0c);}(_0xe64a,0x1e0));var _0xae64=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xe64a[_0x122ef9];return _0x42fba0;};'use strict';var multer=require(_0xae64('0x0'));var util=require(_0xae64('0x1'));var path=require(_0xae64('0x2'));var timeout=require(_0xae64('0x3'));var express=require(_0xae64('0x4'));var router=express[_0xae64('0x5')]();var fs_extra=require(_0xae64('0x6'));var auth=require(_0xae64('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./intVtigerAccount.controller');router['get']('/',auth[_0xae64('0x8')](),controller[_0xae64('0x9')]);router[_0xae64('0xa')](_0xae64('0xb'),auth[_0xae64('0x8')](),controller[_0xae64('0xc')]);router[_0xae64('0xa')](_0xae64('0xd'),auth[_0xae64('0x8')](),controller[_0xae64('0xe')]);router[_0xae64('0xa')]('/:id/fields',auth[_0xae64('0x8')](),controller['getFields']);router['post']('/',auth[_0xae64('0x8')](),controller[_0xae64('0xf')]);router[_0xae64('0x10')](_0xae64('0xd'),auth['isAuthenticated'](),controller[_0xae64('0x11')]);router['put']('/:id',auth[_0xae64('0x8')](),controller[_0xae64('0x12')]);router[_0xae64('0x13')]('/:id',auth[_0xae64('0x8')](),controller[_0xae64('0x14')]);module[_0xae64('0x15')]=router;
\ No newline at end of file
index 56ec12a..f71ac2d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd07=['STRING','HelpDesk','sequelize'];(function(_0x11d405,_0x5ba595){var _0x17210a=function(_0x548e11){while(--_0x548e11){_0x11d405['push'](_0x11d405['shift']());}};_0x17210a(++_0x5ba595);}(_0xdd07,0x155));var _0x7dd0=function(_0x45bf86,_0x75586e){_0x45bf86=_0x45bf86-0x0;var _0x1f02b7=_0xdd07[_0x45bf86];return _0x1f02b7;};'use strict';var Sequelize=require(_0x7dd0('0x0'));module['exports']={'name':{'type':Sequelize[_0x7dd0('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0x7dd0('0x1')]},'username':{'type':Sequelize[_0x7dd0('0x1')],'allowNull':![]},'moduleName':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x7dd0('0x2')},'remoteUri':{'type':Sequelize[_0x7dd0('0x1')],'allowNull':![]},'serverUrl':{'type':Sequelize[_0x7dd0('0x1')],'allowNull':![]},'accessKey':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
+var _0xc5d2=['HelpDesk','sequelize','exports','STRING'];(function(_0x36eaaa,_0x326732){var _0x461349=function(_0x4e4180){while(--_0x4e4180){_0x36eaaa['push'](_0x36eaaa['shift']());}};_0x461349(++_0x326732);}(_0xc5d2,0x191));var _0x2c5d=function(_0x1b5aea,_0x3f04b7){_0x1b5aea=_0x1b5aea-0x0;var _0x15cfc6=_0xc5d2[_0x1b5aea];return _0x15cfc6;};'use strict';var Sequelize=require(_0x2c5d('0x0'));module[_0x2c5d('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize[_0x2c5d('0x2')]},'username':{'type':Sequelize[_0x2c5d('0x2')],'allowNull':![]},'moduleName':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x2c5d('0x3')},'remoteUri':{'type':Sequelize[_0x2c5d('0x2')],'allowNull':![]},'serverUrl':{'type':Sequelize[_0x2c5d('0x2')],'allowNull':![]},'accessKey':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
index a2e2da9..9950681 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f98=['show','params','keys','options','find','create','body','destroy','findOne','pick','getConfigurations','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','VtigerConfiguration','VtigerField','username','description','accessKey','moduleName','slice','substring','lastIndexOf','%s/webservice.php','GET','getchallenge','success','login','result','token','describe','sessionName','autogenerated','reference','owner','remove','includes','editable','label','startsWith','picklist','picklistValues','value','log','vTiger\x20error:\x20','test','statusCode','getFields','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','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','../../components/integrations/configuration','sendStatus','end','status','json','limit','undefined','count','offset','set','Content-Range','apply','reject','save','update','then','error','stack','name','send','VtigerAccount','rawAttributes','fieldName','type','key','model','map','query','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','merge','filter','includeAll','include','findAll','rows','catch'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0x4f98,0x131));var _0x84f9=function(_0x62c958,_0x2bfdbc){_0x62c958=_0x62c958-0x0;var _0x57ec61=_0x4f98[_0x62c958];return _0x57ec61;};'use strict';var emlformat=require(_0x84f9('0x0'));var rimraf=require(_0x84f9('0x1'));var zipdir=require(_0x84f9('0x2'));var jsonpatch=require(_0x84f9('0x3'));var rp=require(_0x84f9('0x4'));var moment=require(_0x84f9('0x5'));var BPromise=require(_0x84f9('0x6'));var Mustache=require(_0x84f9('0x7'));var util=require('util');var path=require(_0x84f9('0x8'));var sox=require(_0x84f9('0x9'));var csv=require(_0x84f9('0xa'));var ejs=require(_0x84f9('0xb'));var fs=require('fs');var fs_extra=require(_0x84f9('0xc'));var _=require(_0x84f9('0xd'));var squel=require('squel');var crypto=require(_0x84f9('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x84f9('0xf'));var toCsv=require('to-csv');var querystring=require(_0x84f9('0x10'));var Papa=require(_0x84f9('0x11'));var Redis=require(_0x84f9('0x12'));var authService=require(_0x84f9('0x13'));var qs=require(_0x84f9('0x14'));var as=require(_0x84f9('0x15'));var hardwareService=require(_0x84f9('0x16'));var logger=require(_0x84f9('0x17'))(_0x84f9('0x18'));var utils=require('../../config/utils');var config=require(_0x84f9('0x19'));var licenseUtil=require(_0x84f9('0x1a'));var db=require(_0x84f9('0x1b'))['db'];var integrations=require(_0x84f9('0x1c'));function respondWithStatusCode(_0x59965c,_0x271674){_0x271674=_0x271674||0xcc;return function(_0x51e962){if(_0x51e962){return _0x59965c[_0x84f9('0x1d')](_0x271674);}return _0x59965c['status'](_0x271674)[_0x84f9('0x1e')]();};}function respondWithResult(_0x5af413,_0x5c7698){_0x5c7698=_0x5c7698||0xc8;return function(_0x5c73ca){if(_0x5c73ca){return _0x5af413[_0x84f9('0x1f')](_0x5c7698)[_0x84f9('0x20')](_0x5c73ca);}};}function respondWithFilteredResult(_0x38a357,_0xe90a34){return function(_0x44397e){if(_0x44397e){var _0x4ee7a4=typeof _0xe90a34['offset']==='undefined'&&typeof _0xe90a34[_0x84f9('0x21')]===_0x84f9('0x22');var _0x39ae12=_0x44397e[_0x84f9('0x23')];var _0x51bcc3=_0x4ee7a4?0x0:_0xe90a34[_0x84f9('0x24')];var _0x42ba14=_0x4ee7a4?_0x44397e[_0x84f9('0x23')]:_0xe90a34[_0x84f9('0x24')]+_0xe90a34['limit'];var _0x35c6c4;if(_0x42ba14>=_0x39ae12){_0x42ba14=_0x39ae12;_0x35c6c4=0xc8;}else{_0x35c6c4=0xce;}_0x38a357['status'](_0x35c6c4);return _0x38a357[_0x84f9('0x25')](_0x84f9('0x26'),_0x51bcc3+'-'+_0x42ba14+'/'+_0x39ae12)['json'](_0x44397e);}return null;};}function patchUpdates(_0x240524){return function(_0x29d538){try{jsonpatch[_0x84f9('0x27')](_0x29d538,_0x240524,!![]);}catch(_0x3a2e01){return BPromise[_0x84f9('0x28')](_0x3a2e01);}return _0x29d538[_0x84f9('0x29')]();};}function saveUpdates(_0x19ac10,_0x467131){return function(_0x9c6134){if(_0x9c6134){return _0x9c6134[_0x84f9('0x2a')](_0x19ac10)[_0x84f9('0x2b')](function(_0x260bb8){return _0x260bb8;});}return null;};}function removeEntity(_0x5db85c,_0x5639df){return function(_0x12bbcb){if(_0x12bbcb){return _0x12bbcb['destroy']()[_0x84f9('0x2b')](function(){_0x5db85c[_0x84f9('0x1f')](0xcc)[_0x84f9('0x1e')]();});}};}function handleEntityNotFound(_0x4426d3,_0x3c4b30){return function(_0x9c586d){if(!_0x9c586d){_0x4426d3[_0x84f9('0x1d')](0x194);}return _0x9c586d;};}function handleError(_0x447e89,_0x416b20){_0x416b20=_0x416b20||0x1f4;return function(_0x4ddc56){logger[_0x84f9('0x2c')](_0x4ddc56[_0x84f9('0x2d')]);if(_0x4ddc56[_0x84f9('0x2e')]){delete _0x4ddc56[_0x84f9('0x2e')];}_0x447e89['status'](_0x416b20)[_0x84f9('0x2f')](_0x4ddc56);};}exports['index']=function(_0x180dfb,_0x3269f6){var _0x5dfcd8={},_0x28a582={},_0x29fd8f={'count':0x0,'rows':[]};var _0x200b43=_['map'](db[_0x84f9('0x30')][_0x84f9('0x31')],function(_0x11369a){return{'name':_0x11369a[_0x84f9('0x32')],'type':_0x11369a[_0x84f9('0x33')][_0x84f9('0x34')]};});_0x28a582[_0x84f9('0x35')]=_[_0x84f9('0x36')](_0x200b43,_0x84f9('0x2e'));_0x28a582['query']=_['keys'](_0x180dfb[_0x84f9('0x37')]);_0x28a582['filters']=_[_0x84f9('0x38')](_0x28a582['model'],_0x28a582['query']);_0x5dfcd8['attributes']=_[_0x84f9('0x38')](_0x28a582[_0x84f9('0x35')],qs['fields'](_0x180dfb['query'][_0x84f9('0x39')]));_0x5dfcd8[_0x84f9('0x3a')]=_0x5dfcd8[_0x84f9('0x3a')][_0x84f9('0x3b')]?_0x5dfcd8[_0x84f9('0x3a')]:_0x28a582['model'];if(!_0x180dfb[_0x84f9('0x37')][_0x84f9('0x3c')](_0x84f9('0x3d'))){_0x5dfcd8[_0x84f9('0x21')]=qs[_0x84f9('0x21')](_0x180dfb[_0x84f9('0x37')][_0x84f9('0x21')]);_0x5dfcd8[_0x84f9('0x24')]=qs['offset'](_0x180dfb[_0x84f9('0x37')]['offset']);}_0x5dfcd8[_0x84f9('0x3e')]=qs[_0x84f9('0x3f')](_0x180dfb[_0x84f9('0x37')][_0x84f9('0x3f')]);_0x5dfcd8[_0x84f9('0x40')]=qs[_0x84f9('0x41')](_['pick'](_0x180dfb[_0x84f9('0x37')],_0x28a582[_0x84f9('0x41')]),_0x200b43);if(_0x180dfb[_0x84f9('0x37')]['filter']){_0x5dfcd8[_0x84f9('0x40')]=_[_0x84f9('0x42')](_0x5dfcd8[_0x84f9('0x40')],{'$or':_[_0x84f9('0x36')](_0x200b43,function(_0x40ee0d){if(_0x40ee0d[_0x84f9('0x33')]!=='VIRTUAL'){var _0x414964={};_0x414964[_0x40ee0d[_0x84f9('0x2e')]]={'$like':'%'+_0x180dfb[_0x84f9('0x37')][_0x84f9('0x43')]+'%'};return _0x414964;}})});}_0x5dfcd8=_[_0x84f9('0x42')]({},_0x5dfcd8,_0x180dfb['options']);var _0x2c4325={'where':_0x5dfcd8['where']};return db['VtigerAccount'][_0x84f9('0x23')](_0x2c4325)['then'](function(_0x5767a2){_0x29fd8f['count']=_0x5767a2;if(_0x180dfb[_0x84f9('0x37')][_0x84f9('0x44')]){_0x5dfcd8[_0x84f9('0x45')]=[{'all':!![]}];}return db[_0x84f9('0x30')][_0x84f9('0x46')](_0x5dfcd8);})[_0x84f9('0x2b')](function(_0x2365f0){_0x29fd8f[_0x84f9('0x47')]=_0x2365f0;return _0x29fd8f;})[_0x84f9('0x2b')](respondWithFilteredResult(_0x3269f6,_0x5dfcd8))[_0x84f9('0x48')](handleError(_0x3269f6,null));};exports[_0x84f9('0x49')]=function(_0x36dd90,_0x1052c5){var _0x27cb60={'raw':![],'where':{'id':_0x36dd90[_0x84f9('0x4a')]['id']}},_0x379b7b={};_0x379b7b[_0x84f9('0x35')]=_[_0x84f9('0x4b')](db[_0x84f9('0x30')][_0x84f9('0x31')]);_0x379b7b[_0x84f9('0x37')]=_['keys'](_0x36dd90[_0x84f9('0x37')]);_0x379b7b[_0x84f9('0x41')]=_[_0x84f9('0x38')](_0x379b7b[_0x84f9('0x35')],_0x379b7b[_0x84f9('0x37')]);_0x27cb60['attributes']=_[_0x84f9('0x38')](_0x379b7b[_0x84f9('0x35')],qs[_0x84f9('0x39')](_0x36dd90[_0x84f9('0x37')][_0x84f9('0x39')]));_0x27cb60[_0x84f9('0x3a')]=_0x27cb60['attributes']['length']?_0x27cb60['attributes']:_0x379b7b['model'];if(_0x36dd90['query']['includeAll']){_0x27cb60[_0x84f9('0x45')]=[{'all':!![]}];}_0x27cb60=_[_0x84f9('0x42')]({},_0x27cb60,_0x36dd90[_0x84f9('0x4c')]);return db['VtigerAccount'][_0x84f9('0x4d')](_0x27cb60)[_0x84f9('0x2b')](handleEntityNotFound(_0x1052c5,null))[_0x84f9('0x2b')](respondWithResult(_0x1052c5,null))[_0x84f9('0x48')](handleError(_0x1052c5,null));};exports['create']=function(_0x55bed1,_0x4ca753){return db[_0x84f9('0x30')][_0x84f9('0x4e')](_0x55bed1[_0x84f9('0x4f')],{})[_0x84f9('0x2b')](respondWithResult(_0x4ca753,0xc9))['catch'](handleError(_0x4ca753,null));};exports[_0x84f9('0x2a')]=function(_0x3bd1db,_0x11c321){if(_0x3bd1db[_0x84f9('0x4f')]['id']){delete _0x3bd1db[_0x84f9('0x4f')]['id'];}return db[_0x84f9('0x30')][_0x84f9('0x4d')]({'where':{'id':_0x3bd1db['params']['id']}})[_0x84f9('0x2b')](handleEntityNotFound(_0x11c321,null))[_0x84f9('0x2b')](saveUpdates(_0x3bd1db[_0x84f9('0x4f')],null))['then'](respondWithResult(_0x11c321,null))[_0x84f9('0x48')](handleError(_0x11c321,null));};exports[_0x84f9('0x50')]=function(_0x5836ff,_0x30d671){return db['VtigerAccount'][_0x84f9('0x4d')]({'where':{'id':_0x5836ff[_0x84f9('0x4a')]['id']}})['then'](handleEntityNotFound(_0x30d671,null))[_0x84f9('0x2b')](removeEntity(_0x30d671,null))[_0x84f9('0x48')](handleError(_0x30d671,null));};exports['getConfigurations']=function(_0x4544aa,_0x2c62b7,_0x1677b9){var _0x284153={};var _0x18ace7={};var _0x28e447;var _0x2d10bc;return db['VtigerAccount'][_0x84f9('0x51')]({'where':{'id':_0x4544aa['params']['id']}})['then'](handleEntityNotFound(_0x2c62b7,null))[_0x84f9('0x2b')](function(_0x57e9e7){if(_0x57e9e7){_0x28e447=_0x57e9e7;_0x18ace7[_0x84f9('0x35')]=_['keys'](db['VtigerConfiguration'][_0x84f9('0x31')]);_0x18ace7[_0x84f9('0x37')]=_[_0x84f9('0x4b')](_0x4544aa[_0x84f9('0x37')]);_0x18ace7[_0x84f9('0x41')]=_['intersection'](_0x18ace7[_0x84f9('0x35')],_0x18ace7[_0x84f9('0x37')]);_0x284153[_0x84f9('0x3a')]=_[_0x84f9('0x38')](_0x18ace7[_0x84f9('0x35')],qs['fields'](_0x4544aa[_0x84f9('0x37')][_0x84f9('0x39')]));_0x284153[_0x84f9('0x3a')]=_0x284153[_0x84f9('0x3a')][_0x84f9('0x3b')]?_0x284153[_0x84f9('0x3a')]:_0x18ace7[_0x84f9('0x35')];_0x284153[_0x84f9('0x3e')]=qs[_0x84f9('0x3f')](_0x4544aa[_0x84f9('0x37')][_0x84f9('0x3f')]);_0x284153[_0x84f9('0x40')]=qs[_0x84f9('0x41')](_[_0x84f9('0x52')](_0x4544aa[_0x84f9('0x37')],_0x18ace7['filters']));if(_0x4544aa[_0x84f9('0x37')][_0x84f9('0x43')]){_0x284153[_0x84f9('0x40')]=_[_0x84f9('0x42')](_0x284153[_0x84f9('0x40')],{'$or':_['map'](_0x284153[_0x84f9('0x3a')],function(_0x2f3602){var _0x56718a={};_0x56718a[_0x2f3602]={'$like':'%'+_0x4544aa['query'][_0x84f9('0x43')]+'%'};return _0x56718a;})});}_0x284153=_[_0x84f9('0x42')]({},_0x284153,_0x4544aa[_0x84f9('0x4c')]);return _0x28e447[_0x84f9('0x53')](_0x284153);}})[_0x84f9('0x2b')](function(_0x45f5c1){if(_0x45f5c1){_0x2d10bc=_0x45f5c1[_0x84f9('0x3b')];if(!_0x4544aa[_0x84f9('0x37')]['hasOwnProperty'](_0x84f9('0x3d'))){_0x284153['limit']=qs[_0x84f9('0x21')](_0x4544aa[_0x84f9('0x37')]['limit']);_0x284153[_0x84f9('0x24')]=qs['offset'](_0x4544aa[_0x84f9('0x37')][_0x84f9('0x24')]);}return _0x28e447[_0x84f9('0x53')](_0x284153);}})['then'](function(_0x4c2e24){if(_0x4c2e24){return _0x4c2e24?{'count':_0x2d10bc,'rows':_0x4c2e24}:null;}})[_0x84f9('0x2b')](respondWithResult(_0x2c62b7,null))[_0x84f9('0x48')](handleError(_0x2c62b7,null));};exports['addConfiguration']=function(_0x3e97f9,_0x338aab,_0x3adec2){if(_0x3e97f9[_0x84f9('0x4f')]['id']){delete _0x3e97f9[_0x84f9('0x4f')]['id'];}return db[_0x84f9('0x30')][_0x84f9('0x51')]({'where':{'id':_0x3e97f9['params']['id']}})[_0x84f9('0x2b')](handleEntityNotFound(_0x338aab,null))[_0x84f9('0x2b')](function(_0x132ca2){if(_0x132ca2){_0x3e97f9[_0x84f9('0x4f')][_0x84f9('0x54')]=_0x132ca2['id'];_0x3e97f9['body'][_0x84f9('0x55')]=integrations[_0x84f9('0x56')](_0x3e97f9[_0x84f9('0x4f')][_0x84f9('0x57')],_0x3e97f9['body'][_0x84f9('0x33')]);_0x3e97f9[_0x84f9('0x4f')][_0x84f9('0x58')]=integrations[_0x84f9('0x59')](_0x3e97f9[_0x84f9('0x4f')]['channel'],_0x3e97f9['body']['type']);return db[_0x84f9('0x5a')][_0x84f9('0x4e')](_0x3e97f9[_0x84f9('0x4f')],{'include':[{'model':db['VtigerField'],'as':_0x84f9('0x55')},{'model':db[_0x84f9('0x5b')],'as':_0x84f9('0x58')}]});}return null;})[_0x84f9('0x2b')](respondWithResult(_0x338aab,null))[_0x84f9('0x48')](handleError(_0x338aab,null));};var md5=require('md5');exports['getFields']=function(_0x31686e,_0x4747f2,_0x3ea8a7){var _0xff8fa3=null;var _0x256829=null;var _0x368f72=null;var _0x595117=null;var _0x2287b9='';return db[_0x84f9('0x30')]['findOne']({'where':{'id':_0x31686e['params']['id']},'attributes':['id',_0x84f9('0x2e'),_0x84f9('0x5c'),_0x84f9('0x5d'),'moduleName','remoteUri','serverUrl','accessKey']})['then'](handleEntityNotFound(_0x4747f2,null))[_0x84f9('0x2b')](function(_0x4c9432){if(_0x4c9432){_0xff8fa3=_0x4c9432[_0x84f9('0x5c')];_0x256829=_0x4c9432[_0x84f9('0x5e')];_0x368f72=_0x4c9432[_0x84f9('0x5f')];_0x2287b9=_0x4c9432['remoteUri'];var _0x169088=_0x2287b9[_0x84f9('0x60')](-0x1);if(_0x169088==='/'){_0x2287b9=_0x2287b9[_0x84f9('0x61')](0x0,_0x2287b9[_0x84f9('0x62')](_0x169088));}_0x595117=util['format'](_0x84f9('0x63'),_0x2287b9);var _0x30f48a={'method':_0x84f9('0x64'),'uri':_0x595117,'qs':{'operation':_0x84f9('0x65'),'username':_0x4c9432[_0x84f9('0x5c')]},'json':!![]};return rp(_0x30f48a);}})[_0x84f9('0x2b')](function(_0x5ac689){if(_0x5ac689[_0x84f9('0x66')]){var _0xb167a0={'method':'POST','uri':_0x595117,'form':{'operation':_0x84f9('0x67'),'username':_0xff8fa3,'accessKey':md5(_0x5ac689[_0x84f9('0x68')][_0x84f9('0x69')]+_0x256829)},'json':!![]};return rp(_0xb167a0);}})['then'](function(_0x89e7d5){if(_0x89e7d5[_0x84f9('0x66')]){var _0x499a37={'method':_0x84f9('0x64'),'uri':_0x595117,'qs':{'operation':_0x84f9('0x6a'),'username':_0xff8fa3,'sessionName':_0x89e7d5['result'][_0x84f9('0x6b')],'elementType':_0x368f72},'json':!![]};return rp(_0x499a37);}})[_0x84f9('0x2b')](function(_0x2eca5a){if(_0x2eca5a['success']){var _0x54f79f=[_0x84f9('0x6c'),_0x84f9('0x6d'),_0x84f9('0x6e')];_[_0x84f9('0x6f')](_0x2eca5a[_0x84f9('0x68')][_0x84f9('0x39')],function(_0x3d144f){return _0x54f79f[_0x84f9('0x70')](_0x3d144f['type']['name']);});_[_0x84f9('0x6f')](_0x2eca5a[_0x84f9('0x68')][_0x84f9('0x39')],function(_0x5bdadf){return _0x5bdadf[_0x84f9('0x71')]==='false';});return{'count':_0x2eca5a[_0x84f9('0x68')][_0x84f9('0x39')][_0x84f9('0x3b')],'rows':_[_0x84f9('0x36')](_0x2eca5a[_0x84f9('0x68')][_0x84f9('0x39')],function(_0x3f1668){return{'id':_0x3f1668[_0x84f9('0x2e')],'name':_0x3f1668[_0x84f9('0x72')],'custom':_[_0x84f9('0x73')](_0x3f1668['name'],'cf_')?!![]:![],'options':_0x3f1668[_0x84f9('0x33')][_0x84f9('0x2e')]===_0x84f9('0x74')&&_0x3f1668[_0x84f9('0x33')]['picklistValues'][_0x84f9('0x3b')]>0x0?_['map'](_0x3f1668['type'][_0x84f9('0x75')],function(_0xac2253){return{'name':_0xac2253[_0x84f9('0x72')],'value':_0xac2253[_0x84f9('0x76')]};}):[]};})};}})['then'](respondWithResult(_0x4747f2,null))[_0x84f9('0x48')](function(_0x34120d){console[_0x84f9('0x77')](_0x84f9('0x78')+_0x34120d);var _0x43005e=_0x31686e[_0x84f9('0x37')][_0x84f9('0x79')]?0x1f4:_0x34120d[_0x84f9('0x7a')]||0x1f4;logger[_0x84f9('0x2c')]('getFields,\x20%s,\x20%s,\x20%s',_0x84f9('0x7b'),_0x43005e,JSON[_0x84f9('0x7c')](_0x34120d));delete _0x34120d['name'];if(_0x43005e===0x191){_0x43005e=0x190;}_0x4747f2[_0x84f9('0x1f')](_0x43005e)['send'](_0x31686e['query']['test']?{'message':_0x84f9('0x7d'),'statusCode':_0x34120d[_0x84f9('0x7a')]}:_0x34120d);});};
\ No newline at end of file
+var _0x7811=['limit','count','Content-Range','apply','reject','update','then','destroy','end','stack','name','index','VtigerAccount','rawAttributes','type','key','model','query','keys','filters','attributes','intersection','fields','length','nolimit','order','sort','where','pick','filter','map','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','params','create','body','find','VtigerConfiguration','getConfigurations','hasOwnProperty','findOne','AccountId','Subjects','getSubjects','channel','Descriptions','VtigerField','md5','getFields','moduleName','remoteUri','username','slice','substring','lastIndexOf','format','%s/webservice.php','getchallenge','POST','login','token','success','describe','result','sessionName','autogenerated','reference','owner','remove','includes','editable','label','startsWith','cf_','picklistValues','value','vTiger\x20error:\x20','test','statusCode','error','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','mustache','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../components/integrations/configuration','sendStatus','status','json','offset','undefined'];(function(_0x137af2,_0x296423){var _0x58dc5e=function(_0x2f9916){while(--_0x2f9916){_0x137af2['push'](_0x137af2['shift']());}};_0x58dc5e(++_0x296423);}(_0x7811,0xce));var _0x1781=function(_0x5225a0,_0x1d3783){_0x5225a0=_0x5225a0-0x0;var _0x1c6627=_0x7811[_0x5225a0];return _0x1c6627;};'use strict';var emlformat=require(_0x1781('0x0'));var rimraf=require(_0x1781('0x1'));var zipdir=require(_0x1781('0x2'));var jsonpatch=require(_0x1781('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x1781('0x4'));var util=require('util');var path=require('path');var sox=require(_0x1781('0x5'));var csv=require(_0x1781('0x6'));var ejs=require(_0x1781('0x7'));var fs=require('fs');var fs_extra=require(_0x1781('0x8'));var _=require('lodash');var squel=require(_0x1781('0x9'));var crypto=require(_0x1781('0xa'));var jsforce=require(_0x1781('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x1781('0x6'));var querystring=require(_0x1781('0xc'));var Papa=require(_0x1781('0xd'));var Redis=require(_0x1781('0xe'));var authService=require(_0x1781('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x1781('0x10'));var hardwareService=require(_0x1781('0x11'));var logger=require(_0x1781('0x12'))('api');var utils=require(_0x1781('0x13'));var config=require(_0x1781('0x14'));var licenseUtil=require(_0x1781('0x15'));var db=require('../../mysqldb')['db'];var integrations=require(_0x1781('0x16'));function respondWithStatusCode(_0x1789fa,_0x715a34){_0x715a34=_0x715a34||0xcc;return function(_0x4fb24b){if(_0x4fb24b){return _0x1789fa[_0x1781('0x17')](_0x715a34);}return _0x1789fa[_0x1781('0x18')](_0x715a34)['end']();};}function respondWithResult(_0x50ae82,_0x42fd8f){_0x42fd8f=_0x42fd8f||0xc8;return function(_0x2e20e0){if(_0x2e20e0){return _0x50ae82[_0x1781('0x18')](_0x42fd8f)[_0x1781('0x19')](_0x2e20e0);}};}function respondWithFilteredResult(_0x38b44b,_0x204ae5){return function(_0x49e237){if(_0x49e237){var _0x330166=typeof _0x204ae5[_0x1781('0x1a')]===_0x1781('0x1b')&&typeof _0x204ae5[_0x1781('0x1c')]==='undefined';var _0x6913b1=_0x49e237[_0x1781('0x1d')];var _0x5aa770=_0x330166?0x0:_0x204ae5[_0x1781('0x1a')];var _0x32aabc=_0x330166?_0x49e237[_0x1781('0x1d')]:_0x204ae5[_0x1781('0x1a')]+_0x204ae5['limit'];var _0x55899f;if(_0x32aabc>=_0x6913b1){_0x32aabc=_0x6913b1;_0x55899f=0xc8;}else{_0x55899f=0xce;}_0x38b44b[_0x1781('0x18')](_0x55899f);return _0x38b44b['set'](_0x1781('0x1e'),_0x5aa770+'-'+_0x32aabc+'/'+_0x6913b1)[_0x1781('0x19')](_0x49e237);}return null;};}function patchUpdates(_0x6be87f){return function(_0x5a5012){try{jsonpatch[_0x1781('0x1f')](_0x5a5012,_0x6be87f,!![]);}catch(_0x4fc373){return BPromise[_0x1781('0x20')](_0x4fc373);}return _0x5a5012['save']();};}function saveUpdates(_0x2b3f76,_0x2ce9ce){return function(_0x102d5a){if(_0x102d5a){return _0x102d5a[_0x1781('0x21')](_0x2b3f76)[_0x1781('0x22')](function(_0xb1d979){return _0xb1d979;});}return null;};}function removeEntity(_0x5798cc,_0x2d78b2){return function(_0x122264){if(_0x122264){return _0x122264[_0x1781('0x23')]()[_0x1781('0x22')](function(){_0x5798cc['status'](0xcc)[_0x1781('0x24')]();});}};}function handleEntityNotFound(_0x4edb5f,_0x4cac4a){return function(_0xbed2f7){if(!_0xbed2f7){_0x4edb5f[_0x1781('0x17')](0x194);}return _0xbed2f7;};}function handleError(_0x5e2699,_0x55bc62){_0x55bc62=_0x55bc62||0x1f4;return function(_0x14942a){logger['error'](_0x14942a[_0x1781('0x25')]);if(_0x14942a['name']){delete _0x14942a[_0x1781('0x26')];}_0x5e2699[_0x1781('0x18')](_0x55bc62)['send'](_0x14942a);};}exports[_0x1781('0x27')]=function(_0x51cf01,_0x42719a){var _0x4a7d48={},_0x1d7460={},_0x4bdbfe={'count':0x0,'rows':[]};var _0x3e7f80=_['map'](db[_0x1781('0x28')][_0x1781('0x29')],function(_0x28c57e){return{'name':_0x28c57e['fieldName'],'type':_0x28c57e[_0x1781('0x2a')][_0x1781('0x2b')]};});_0x1d7460[_0x1781('0x2c')]=_['map'](_0x3e7f80,'name');_0x1d7460[_0x1781('0x2d')]=_[_0x1781('0x2e')](_0x51cf01[_0x1781('0x2d')]);_0x1d7460[_0x1781('0x2f')]=_['intersection'](_0x1d7460['model'],_0x1d7460[_0x1781('0x2d')]);_0x4a7d48[_0x1781('0x30')]=_[_0x1781('0x31')](_0x1d7460['model'],qs[_0x1781('0x32')](_0x51cf01[_0x1781('0x2d')][_0x1781('0x32')]));_0x4a7d48[_0x1781('0x30')]=_0x4a7d48[_0x1781('0x30')][_0x1781('0x33')]?_0x4a7d48[_0x1781('0x30')]:_0x1d7460[_0x1781('0x2c')];if(!_0x51cf01[_0x1781('0x2d')]['hasOwnProperty'](_0x1781('0x34'))){_0x4a7d48[_0x1781('0x1c')]=qs[_0x1781('0x1c')](_0x51cf01[_0x1781('0x2d')][_0x1781('0x1c')]);_0x4a7d48[_0x1781('0x1a')]=qs[_0x1781('0x1a')](_0x51cf01[_0x1781('0x2d')][_0x1781('0x1a')]);}_0x4a7d48[_0x1781('0x35')]=qs['sort'](_0x51cf01['query'][_0x1781('0x36')]);_0x4a7d48[_0x1781('0x37')]=qs['filters'](_[_0x1781('0x38')](_0x51cf01[_0x1781('0x2d')],_0x1d7460[_0x1781('0x2f')]),_0x3e7f80);if(_0x51cf01[_0x1781('0x2d')][_0x1781('0x39')]){_0x4a7d48[_0x1781('0x37')]=_['merge'](_0x4a7d48[_0x1781('0x37')],{'$or':_[_0x1781('0x3a')](_0x3e7f80,function(_0x5ce3c2){if(_0x5ce3c2[_0x1781('0x2a')]!==_0x1781('0x3b')){var _0x1aac36={};_0x1aac36[_0x5ce3c2['name']]={'$like':'%'+_0x51cf01[_0x1781('0x2d')][_0x1781('0x39')]+'%'};return _0x1aac36;}})});}_0x4a7d48=_[_0x1781('0x3c')]({},_0x4a7d48,_0x51cf01[_0x1781('0x3d')]);var _0x171a5c={'where':_0x4a7d48[_0x1781('0x37')]};return db[_0x1781('0x28')][_0x1781('0x1d')](_0x171a5c)[_0x1781('0x22')](function(_0x12698b){_0x4bdbfe['count']=_0x12698b;if(_0x51cf01[_0x1781('0x2d')][_0x1781('0x3e')]){_0x4a7d48[_0x1781('0x3f')]=[{'all':!![]}];}return db[_0x1781('0x28')][_0x1781('0x40')](_0x4a7d48);})[_0x1781('0x22')](function(_0x56e6da){_0x4bdbfe[_0x1781('0x41')]=_0x56e6da;return _0x4bdbfe;})[_0x1781('0x22')](respondWithFilteredResult(_0x42719a,_0x4a7d48))[_0x1781('0x42')](handleError(_0x42719a,null));};exports['show']=function(_0x3dd564,_0x593dad){var _0x2dbc3f={'raw':![],'where':{'id':_0x3dd564[_0x1781('0x43')]['id']}},_0x37a277={};_0x37a277[_0x1781('0x2c')]=_[_0x1781('0x2e')](db[_0x1781('0x28')]['rawAttributes']);_0x37a277[_0x1781('0x2d')]=_[_0x1781('0x2e')](_0x3dd564[_0x1781('0x2d')]);_0x37a277[_0x1781('0x2f')]=_['intersection'](_0x37a277[_0x1781('0x2c')],_0x37a277['query']);_0x2dbc3f[_0x1781('0x30')]=_[_0x1781('0x31')](_0x37a277['model'],qs[_0x1781('0x32')](_0x3dd564[_0x1781('0x2d')][_0x1781('0x32')]));_0x2dbc3f[_0x1781('0x30')]=_0x2dbc3f[_0x1781('0x30')]['length']?_0x2dbc3f[_0x1781('0x30')]:_0x37a277['model'];if(_0x3dd564[_0x1781('0x2d')][_0x1781('0x3e')]){_0x2dbc3f[_0x1781('0x3f')]=[{'all':!![]}];}_0x2dbc3f=_[_0x1781('0x3c')]({},_0x2dbc3f,_0x3dd564[_0x1781('0x3d')]);return db[_0x1781('0x28')]['find'](_0x2dbc3f)[_0x1781('0x22')](handleEntityNotFound(_0x593dad,null))[_0x1781('0x22')](respondWithResult(_0x593dad,null))[_0x1781('0x42')](handleError(_0x593dad,null));};exports[_0x1781('0x44')]=function(_0x261cb6,_0x379214){return db[_0x1781('0x28')]['create'](_0x261cb6[_0x1781('0x45')],{})[_0x1781('0x22')](respondWithResult(_0x379214,0xc9))[_0x1781('0x42')](handleError(_0x379214,null));};exports[_0x1781('0x21')]=function(_0x2e42f6,_0x57e115){if(_0x2e42f6[_0x1781('0x45')]['id']){delete _0x2e42f6[_0x1781('0x45')]['id'];}return db[_0x1781('0x28')][_0x1781('0x46')]({'where':{'id':_0x2e42f6[_0x1781('0x43')]['id']}})['then'](handleEntityNotFound(_0x57e115,null))[_0x1781('0x22')](saveUpdates(_0x2e42f6[_0x1781('0x45')],null))['then'](respondWithResult(_0x57e115,null))[_0x1781('0x42')](handleError(_0x57e115,null));};exports[_0x1781('0x23')]=function(_0xfc1f5d,_0x30d10a){return db[_0x1781('0x28')][_0x1781('0x46')]({'where':{'id':_0xfc1f5d[_0x1781('0x43')]['id']}})[_0x1781('0x22')](handleEntityNotFound(_0x30d10a,null))['then'](removeEntity(_0x30d10a,null))[_0x1781('0x42')](handleError(_0x30d10a,null));};exports['getConfigurations']=function(_0x29d120,_0x254ff9,_0x1391cd){var _0x173eab={};var _0x3e2574={};var _0x325583;var _0xac6cee;return db[_0x1781('0x28')]['findOne']({'where':{'id':_0x29d120['params']['id']}})[_0x1781('0x22')](handleEntityNotFound(_0x254ff9,null))['then'](function(_0x1e32b1){if(_0x1e32b1){_0x325583=_0x1e32b1;_0x3e2574[_0x1781('0x2c')]=_['keys'](db[_0x1781('0x47')][_0x1781('0x29')]);_0x3e2574['query']=_[_0x1781('0x2e')](_0x29d120[_0x1781('0x2d')]);_0x3e2574['filters']=_[_0x1781('0x31')](_0x3e2574['model'],_0x3e2574[_0x1781('0x2d')]);_0x173eab['attributes']=_[_0x1781('0x31')](_0x3e2574['model'],qs[_0x1781('0x32')](_0x29d120[_0x1781('0x2d')]['fields']));_0x173eab[_0x1781('0x30')]=_0x173eab[_0x1781('0x30')][_0x1781('0x33')]?_0x173eab['attributes']:_0x3e2574[_0x1781('0x2c')];_0x173eab['order']=qs['sort'](_0x29d120[_0x1781('0x2d')]['sort']);_0x173eab[_0x1781('0x37')]=qs[_0x1781('0x2f')](_[_0x1781('0x38')](_0x29d120[_0x1781('0x2d')],_0x3e2574[_0x1781('0x2f')]));if(_0x29d120['query'][_0x1781('0x39')]){_0x173eab[_0x1781('0x37')]=_['merge'](_0x173eab[_0x1781('0x37')],{'$or':_['map'](_0x173eab[_0x1781('0x30')],function(_0x4cc819){var _0x57d997={};_0x57d997[_0x4cc819]={'$like':'%'+_0x29d120['query'][_0x1781('0x39')]+'%'};return _0x57d997;})});}_0x173eab=_[_0x1781('0x3c')]({},_0x173eab,_0x29d120[_0x1781('0x3d')]);return _0x325583[_0x1781('0x48')](_0x173eab);}})[_0x1781('0x22')](function(_0x50b4cd){if(_0x50b4cd){_0xac6cee=_0x50b4cd['length'];if(!_0x29d120['query'][_0x1781('0x49')](_0x1781('0x34'))){_0x173eab[_0x1781('0x1c')]=qs[_0x1781('0x1c')](_0x29d120['query'][_0x1781('0x1c')]);_0x173eab[_0x1781('0x1a')]=qs[_0x1781('0x1a')](_0x29d120[_0x1781('0x2d')]['offset']);}return _0x325583[_0x1781('0x48')](_0x173eab);}})['then'](function(_0x13dc9a){if(_0x13dc9a){return _0x13dc9a?{'count':_0xac6cee,'rows':_0x13dc9a}:null;}})[_0x1781('0x22')](respondWithResult(_0x254ff9,null))[_0x1781('0x42')](handleError(_0x254ff9,null));};exports['addConfiguration']=function(_0x33fc52,_0x559d3f,_0x582136){if(_0x33fc52['body']['id']){delete _0x33fc52[_0x1781('0x45')]['id'];}return db[_0x1781('0x28')][_0x1781('0x4a')]({'where':{'id':_0x33fc52[_0x1781('0x43')]['id']}})[_0x1781('0x22')](handleEntityNotFound(_0x559d3f,null))[_0x1781('0x22')](function(_0x371504){if(_0x371504){_0x33fc52[_0x1781('0x45')][_0x1781('0x4b')]=_0x371504['id'];_0x33fc52[_0x1781('0x45')][_0x1781('0x4c')]=integrations[_0x1781('0x4d')](_0x33fc52[_0x1781('0x45')][_0x1781('0x4e')],_0x33fc52['body'][_0x1781('0x2a')]);_0x33fc52[_0x1781('0x45')][_0x1781('0x4f')]=integrations['getDescriptions'](_0x33fc52[_0x1781('0x45')][_0x1781('0x4e')],_0x33fc52[_0x1781('0x45')]['type']);return db[_0x1781('0x47')]['create'](_0x33fc52[_0x1781('0x45')],{'include':[{'model':db['VtigerField'],'as':_0x1781('0x4c')},{'model':db[_0x1781('0x50')],'as':_0x1781('0x4f')}]});}return null;})[_0x1781('0x22')](respondWithResult(_0x559d3f,null))['catch'](handleError(_0x559d3f,null));};var md5=require(_0x1781('0x51'));exports[_0x1781('0x52')]=function(_0x26fe06,_0x5be7c2,_0x1159ce){var _0x22a90b=null;var _0x3cc9e4=null;var _0x57de74=null;var _0x2622dd=null;var _0x57c0ae='';return db['VtigerAccount'][_0x1781('0x4a')]({'where':{'id':_0x26fe06[_0x1781('0x43')]['id']},'attributes':['id',_0x1781('0x26'),'username','description',_0x1781('0x53'),_0x1781('0x54'),'serverUrl','accessKey']})[_0x1781('0x22')](handleEntityNotFound(_0x5be7c2,null))[_0x1781('0x22')](function(_0x280d9f){if(_0x280d9f){_0x22a90b=_0x280d9f[_0x1781('0x55')];_0x3cc9e4=_0x280d9f['accessKey'];_0x57de74=_0x280d9f[_0x1781('0x53')];_0x57c0ae=_0x280d9f[_0x1781('0x54')];var _0x548159=_0x57c0ae[_0x1781('0x56')](-0x1);if(_0x548159==='/'){_0x57c0ae=_0x57c0ae[_0x1781('0x57')](0x0,_0x57c0ae[_0x1781('0x58')](_0x548159));}_0x2622dd=util[_0x1781('0x59')](_0x1781('0x5a'),_0x57c0ae);var _0xc3c448={'method':'GET','uri':_0x2622dd,'qs':{'operation':_0x1781('0x5b'),'username':_0x280d9f[_0x1781('0x55')]},'json':!![]};return rp(_0xc3c448);}})[_0x1781('0x22')](function(_0x59097e){if(_0x59097e['success']){var _0x21dad1={'method':_0x1781('0x5c'),'uri':_0x2622dd,'form':{'operation':_0x1781('0x5d'),'username':_0x22a90b,'accessKey':md5(_0x59097e['result'][_0x1781('0x5e')]+_0x3cc9e4)},'json':!![]};return rp(_0x21dad1);}})[_0x1781('0x22')](function(_0x2a30c8){if(_0x2a30c8[_0x1781('0x5f')]){var _0x1baf94={'method':'GET','uri':_0x2622dd,'qs':{'operation':_0x1781('0x60'),'username':_0x22a90b,'sessionName':_0x2a30c8[_0x1781('0x61')][_0x1781('0x62')],'elementType':_0x57de74},'json':!![]};return rp(_0x1baf94);}})[_0x1781('0x22')](function(_0x22d340){if(_0x22d340[_0x1781('0x5f')]){var _0x101ae6=[_0x1781('0x63'),_0x1781('0x64'),_0x1781('0x65')];_[_0x1781('0x66')](_0x22d340['result']['fields'],function(_0x171abb){return _0x101ae6[_0x1781('0x67')](_0x171abb[_0x1781('0x2a')]['name']);});_[_0x1781('0x66')](_0x22d340[_0x1781('0x61')][_0x1781('0x32')],function(_0x2d990d){return _0x2d990d[_0x1781('0x68')]==='false';});return{'count':_0x22d340['result']['fields'][_0x1781('0x33')],'rows':_['map'](_0x22d340[_0x1781('0x61')]['fields'],function(_0x452517){return{'id':_0x452517[_0x1781('0x26')],'name':_0x452517[_0x1781('0x69')],'custom':_[_0x1781('0x6a')](_0x452517['name'],_0x1781('0x6b'))?!![]:![],'options':_0x452517[_0x1781('0x2a')][_0x1781('0x26')]==='picklist'&&_0x452517['type']['picklistValues']['length']>0x0?_[_0x1781('0x3a')](_0x452517[_0x1781('0x2a')][_0x1781('0x6c')],function(_0x356324){return{'name':_0x356324[_0x1781('0x69')],'value':_0x356324[_0x1781('0x6d')]};}):[]};})};}})[_0x1781('0x22')](respondWithResult(_0x5be7c2,null))[_0x1781('0x42')](function(_0x1febfc){console['log'](_0x1781('0x6e')+_0x1febfc);var _0x3cb524=_0x26fe06[_0x1781('0x2d')][_0x1781('0x6f')]?0x1f4:_0x1febfc[_0x1781('0x70')]||0x1f4;logger[_0x1781('0x71')](_0x1781('0x72'),_0x1781('0x52'),_0x3cb524,JSON[_0x1781('0x73')](_0x1febfc));delete _0x1febfc[_0x1781('0x26')];if(_0x3cb524===0x191){_0x3cb524=0x190;}_0x5be7c2[_0x1781('0x18')](_0x3cb524)['send'](_0x26fe06['query']['test']?{'message':_0x1781('0x74'),'statusCode':_0x1febfc['statusCode']}:_0x1febfc);});};
\ No newline at end of file
index 6acb239..3eba9e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd7f6=['bluebird','path','rimraf','../../components/integrations/configuration','define','VtigerAccount','int_vtiger_accounts','lodash','util'];(function(_0x293e00,_0x4a580e){var _0x55d600=function(_0x48550e){while(--_0x48550e){_0x293e00['push'](_0x293e00['shift']());}};_0x55d600(++_0x4a580e);}(_0xd7f6,0x154));var _0x6d7f=function(_0xf11794,_0x21915b){_0xf11794=_0xf11794-0x0;var _0x1e2dd3=_0xd7f6[_0xf11794];return _0x1e2dd3;};'use strict';var _=require(_0x6d7f('0x0'));var util=require(_0x6d7f('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x6d7f('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x6d7f('0x3'));var rimraf=require(_0x6d7f('0x4'));var config=require('../../config/environment');var attributes=require('./intVtigerAccount.attributes');var integrations=require(_0x6d7f('0x5'));module['exports']=function(_0x110310,_0x2c3c60){return _0x110310[_0x6d7f('0x6')](_0x6d7f('0x7'),attributes,{'tableName':_0x6d7f('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd5eb=['define','VtigerAccount','int_vtiger_accounts','lodash','util','api','moment','bluebird','request-promise','path','rimraf','exports'];(function(_0x3ea530,_0x2c0616){var _0x1ea8c9=function(_0x20a402){while(--_0x20a402){_0x3ea530['push'](_0x3ea530['shift']());}};_0x1ea8c9(++_0x2c0616);}(_0xd5eb,0x183));var _0xbd5e=function(_0x1d8409,_0x3ed12e){_0x1d8409=_0x1d8409-0x0;var _0x16374c=_0xd5eb[_0x1d8409];return _0x16374c;};'use strict';var _=require(_0xbd5e('0x0'));var util=require(_0xbd5e('0x1'));var logger=require('../../config/logger')(_0xbd5e('0x2'));var moment=require(_0xbd5e('0x3'));var BPromise=require(_0xbd5e('0x4'));var rp=require(_0xbd5e('0x5'));var fs=require('fs');var path=require(_0xbd5e('0x6'));var rimraf=require(_0xbd5e('0x7'));var config=require('../../config/environment');var attributes=require('./intVtigerAccount.attributes');var integrations=require('../../components/integrations/configuration');module[_0xbd5e('0x8')]=function(_0x256381,_0x5a5829){return _0x256381[_0xbd5e('0x9')](_0xbd5e('0xa'),attributes,{'tableName':_0xbd5e('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7eeab60..7f5bff4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7334=['code','message','request\x20sent','result','GetVtigerAccount','findAll','options','raw','where','attributes','limit','include','map','model','VtigerAccount','find','ShowVtigerAccount','catch','lodash','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','VtigerAccount,\x20%s,\x20%s','debug','VtigerAccount,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7334,0x184));var _0x4733=function(_0x3d3c8c,_0xe65112){_0x3d3c8c=_0x3d3c8c-0x0;var _0x3fcd92=_0x7334[_0x3d3c8c];return _0x3fcd92;};'use strict';var _=require(_0x4733('0x0'));var util=require(_0x4733('0x1'));var moment=require(_0x4733('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x4733('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x4733('0x4'));var logger=require(_0x4733('0x5'))(_0x4733('0x6'));var config=require(_0x4733('0x7'));var jayson=require(_0x4733('0x8'));var client=jayson[_0x4733('0x9')][_0x4733('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x283754,_0x12cafa,_0x43d95c){return new BPromise(function(_0x8257cf,_0x3562b7){return client[_0x4733('0xb')](_0x283754,_0x43d95c)[_0x4733('0xc')](function(_0x2d5fde){logger[_0x4733('0xd')](_0x4733('0xe'),_0x12cafa,'request\x20sent');logger[_0x4733('0xf')](_0x4733('0x10'),_0x12cafa,'request\x20sent',JSON[_0x4733('0x11')](_0x2d5fde));if(_0x2d5fde['error']){if(_0x2d5fde[_0x4733('0x12')][_0x4733('0x13')]===0x1f4){logger[_0x4733('0x12')](_0x4733('0xe'),_0x12cafa,_0x2d5fde[_0x4733('0x12')][_0x4733('0x14')]);return _0x3562b7(_0x2d5fde[_0x4733('0x12')]['message']);}logger[_0x4733('0x12')]('VtigerAccount,\x20%s,\x20%s',_0x12cafa,_0x2d5fde[_0x4733('0x12')][_0x4733('0x14')]);return _0x8257cf(_0x2d5fde[_0x4733('0x12')][_0x4733('0x14')]);}else{logger[_0x4733('0xd')](_0x4733('0xe'),_0x12cafa,_0x4733('0x15'));_0x8257cf(_0x2d5fde[_0x4733('0x16')][_0x4733('0x14')]);}})['catch'](function(_0x2c0031){logger[_0x4733('0x12')]('VtigerAccount,\x20%s,\x20%s',_0x12cafa,_0x2c0031);_0x3562b7(_0x2c0031);});});}exports[_0x4733('0x17')]=function(_0x1d2fb6){var _0x2aa223=this;return new Promise(function(_0x384e0c,_0x579f67){return db['VtigerAccount'][_0x4733('0x18')]({'raw':_0x1d2fb6[_0x4733('0x19')]?_0x1d2fb6['options'][_0x4733('0x1a')]===undefined?!![]:![]:!![],'where':_0x1d2fb6[_0x4733('0x19')]?_0x1d2fb6[_0x4733('0x19')][_0x4733('0x1b')]||null:null,'attributes':_0x1d2fb6['options']?_0x1d2fb6[_0x4733('0x19')][_0x4733('0x1c')]||null:null,'limit':_0x1d2fb6['options']?_0x1d2fb6[_0x4733('0x19')][_0x4733('0x1d')]||null:null,'include':_0x1d2fb6['options']?_0x1d2fb6[_0x4733('0x19')][_0x4733('0x1e')]?_[_0x4733('0x1f')](_0x1d2fb6[_0x4733('0x19')][_0x4733('0x1e')],function(_0x24db74){return{'model':db[_0x24db74[_0x4733('0x20')]],'as':_0x24db74['as'],'attributes':_0x24db74[_0x4733('0x1c')],'include':_0x24db74['include']?_[_0x4733('0x1f')](_0x24db74[_0x4733('0x1e')],function(_0x7884e5){return{'model':db[_0x7884e5[_0x4733('0x20')]],'as':_0x7884e5['as'],'attributes':_0x7884e5[_0x4733('0x1c')],'include':_0x7884e5[_0x4733('0x1e')]?_[_0x4733('0x1f')](_0x7884e5[_0x4733('0x1e')],function(_0x13bc12){return{'model':db[_0x13bc12[_0x4733('0x20')]],'as':_0x13bc12['as'],'attributes':_0x13bc12['attributes']};}):[]};}):[]};}):[]:[]})[_0x4733('0xc')](function(_0x4c91bc){logger['info'](_0x4733('0x17'),_0x1d2fb6);logger['debug'](_0x4733('0x17'),_0x1d2fb6,JSON['stringify'](_0x4c91bc));_0x384e0c(_0x4c91bc);})['catch'](function(_0x517c73){logger[_0x4733('0x12')](_0x4733('0x17'),_0x517c73[_0x4733('0x14')],_0x1d2fb6);_0x579f67(_0x2aa223[_0x4733('0x12')](0x1f4,_0x517c73['message']));});});};exports['ShowVtigerAccount']=function(_0x50f67e){var _0x2b2757=this;return new Promise(function(_0x56872b,_0x5a4814){return db[_0x4733('0x21')][_0x4733('0x22')]({'raw':_0x50f67e[_0x4733('0x19')]?_0x50f67e['options']['raw']===undefined?!![]:![]:!![],'where':_0x50f67e[_0x4733('0x19')]?_0x50f67e[_0x4733('0x19')][_0x4733('0x1b')]||null:null,'attributes':_0x50f67e[_0x4733('0x19')]?_0x50f67e[_0x4733('0x19')]['attributes']||null:null,'include':_0x50f67e[_0x4733('0x19')]?_0x50f67e[_0x4733('0x19')][_0x4733('0x1e')]?_[_0x4733('0x1f')](_0x50f67e[_0x4733('0x19')]['include'],function(_0x570bc6){return{'model':db[_0x570bc6[_0x4733('0x20')]],'as':_0x570bc6['as'],'attributes':_0x570bc6[_0x4733('0x1c')],'include':_0x570bc6[_0x4733('0x1e')]?_[_0x4733('0x1f')](_0x570bc6[_0x4733('0x1e')],function(_0x5e31c8){return{'model':db[_0x5e31c8[_0x4733('0x20')]],'as':_0x5e31c8['as'],'attributes':_0x5e31c8[_0x4733('0x1c')],'include':_0x5e31c8[_0x4733('0x1e')]?_['map'](_0x5e31c8[_0x4733('0x1e')],function(_0x10a5e9){return{'model':db[_0x10a5e9[_0x4733('0x20')]],'as':_0x10a5e9['as'],'attributes':_0x10a5e9[_0x4733('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x4733('0xc')](function(_0x311c1d){logger[_0x4733('0xd')](_0x4733('0x23'),_0x50f67e);logger['debug'](_0x4733('0x23'),_0x50f67e,JSON['stringify'](_0x311c1d));_0x56872b(_0x311c1d);})[_0x4733('0x24')](function(_0x29db03){logger[_0x4733('0x12')](_0x4733('0x23'),_0x29db03[_0x4733('0x14')],_0x50f67e);_0x5a4814(_0x2b2757[_0x4733('0x12')](0x1f4,_0x29db03[_0x4733('0x14')]));});});};
\ No newline at end of file
+var _0xb9a7=['then','debug','util','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','VtigerAccount,\x20%s,\x20%s','request\x20sent','VtigerAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','GetVtigerAccount','VtigerAccount','findAll','options','raw','attributes','limit','include','map','model','catch','ShowVtigerAccount','where'];(function(_0x5b5a51,_0x297d1c){var _0x913344=function(_0x1aa6b2){while(--_0x1aa6b2){_0x5b5a51['push'](_0x5b5a51['shift']());}};_0x913344(++_0x297d1c);}(_0xb9a7,0x112));var _0x7b9a=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0xb9a7[_0x4b369d];return _0x571a98;};'use strict';var _=require('lodash');var util=require(_0x7b9a('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7b9a('0x1'));var db=require('../../mysqldb')['db'];var utils=require(_0x7b9a('0x2'));var logger=require(_0x7b9a('0x3'))(_0x7b9a('0x4'));var config=require(_0x7b9a('0x5'));var jayson=require(_0x7b9a('0x6'));var client=jayson[_0x7b9a('0x7')][_0x7b9a('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x7019fd,_0x37ce81,_0x3e51f0){return new BPromise(function(_0x4d3f20,_0x43d8e2){return client[_0x7b9a('0x9')](_0x7019fd,_0x3e51f0)['then'](function(_0x511e28){logger['info'](_0x7b9a('0xa'),_0x37ce81,_0x7b9a('0xb'));logger['debug'](_0x7b9a('0xc'),_0x37ce81,'request\x20sent',JSON[_0x7b9a('0xd')](_0x511e28));if(_0x511e28['error']){if(_0x511e28[_0x7b9a('0xe')][_0x7b9a('0xf')]===0x1f4){logger[_0x7b9a('0xe')]('VtigerAccount,\x20%s,\x20%s',_0x37ce81,_0x511e28[_0x7b9a('0xe')][_0x7b9a('0x10')]);return _0x43d8e2(_0x511e28['error'][_0x7b9a('0x10')]);}logger[_0x7b9a('0xe')]('VtigerAccount,\x20%s,\x20%s',_0x37ce81,_0x511e28[_0x7b9a('0xe')][_0x7b9a('0x10')]);return _0x4d3f20(_0x511e28[_0x7b9a('0xe')][_0x7b9a('0x10')]);}else{logger[_0x7b9a('0x11')](_0x7b9a('0xa'),_0x37ce81,_0x7b9a('0xb'));_0x4d3f20(_0x511e28[_0x7b9a('0x12')][_0x7b9a('0x10')]);}})['catch'](function(_0x34a82d){logger['error'](_0x7b9a('0xa'),_0x37ce81,_0x34a82d);_0x43d8e2(_0x34a82d);});});}exports[_0x7b9a('0x13')]=function(_0x271263){var _0x169d16=this;return new Promise(function(_0x44a232,_0x180a67){return db[_0x7b9a('0x14')][_0x7b9a('0x15')]({'raw':_0x271263[_0x7b9a('0x16')]?_0x271263[_0x7b9a('0x16')][_0x7b9a('0x17')]===undefined?!![]:![]:!![],'where':_0x271263[_0x7b9a('0x16')]?_0x271263[_0x7b9a('0x16')]['where']||null:null,'attributes':_0x271263[_0x7b9a('0x16')]?_0x271263['options'][_0x7b9a('0x18')]||null:null,'limit':_0x271263['options']?_0x271263[_0x7b9a('0x16')][_0x7b9a('0x19')]||null:null,'include':_0x271263[_0x7b9a('0x16')]?_0x271263['options'][_0x7b9a('0x1a')]?_[_0x7b9a('0x1b')](_0x271263['options'][_0x7b9a('0x1a')],function(_0x374dca){return{'model':db[_0x374dca[_0x7b9a('0x1c')]],'as':_0x374dca['as'],'attributes':_0x374dca[_0x7b9a('0x18')],'include':_0x374dca[_0x7b9a('0x1a')]?_['map'](_0x374dca[_0x7b9a('0x1a')],function(_0x23219e){return{'model':db[_0x23219e['model']],'as':_0x23219e['as'],'attributes':_0x23219e[_0x7b9a('0x18')],'include':_0x23219e['include']?_[_0x7b9a('0x1b')](_0x23219e[_0x7b9a('0x1a')],function(_0x4c2271){return{'model':db[_0x4c2271['model']],'as':_0x4c2271['as'],'attributes':_0x4c2271[_0x7b9a('0x18')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x54df8a){logger[_0x7b9a('0x11')]('GetVtigerAccount',_0x271263);logger['debug'](_0x7b9a('0x13'),_0x271263,JSON['stringify'](_0x54df8a));_0x44a232(_0x54df8a);})[_0x7b9a('0x1d')](function(_0x314b6d){logger['error'](_0x7b9a('0x13'),_0x314b6d[_0x7b9a('0x10')],_0x271263);_0x180a67(_0x169d16[_0x7b9a('0xe')](0x1f4,_0x314b6d['message']));});});};exports[_0x7b9a('0x1e')]=function(_0x2ce78b){var _0x181e9c=this;return new Promise(function(_0x6c8b1f,_0x5028e7){return db[_0x7b9a('0x14')]['find']({'raw':_0x2ce78b['options']?_0x2ce78b[_0x7b9a('0x16')][_0x7b9a('0x17')]===undefined?!![]:![]:!![],'where':_0x2ce78b[_0x7b9a('0x16')]?_0x2ce78b['options'][_0x7b9a('0x1f')]||null:null,'attributes':_0x2ce78b[_0x7b9a('0x16')]?_0x2ce78b['options']['attributes']||null:null,'include':_0x2ce78b[_0x7b9a('0x16')]?_0x2ce78b[_0x7b9a('0x16')]['include']?_[_0x7b9a('0x1b')](_0x2ce78b[_0x7b9a('0x16')][_0x7b9a('0x1a')],function(_0x18db2f){return{'model':db[_0x18db2f[_0x7b9a('0x1c')]],'as':_0x18db2f['as'],'attributes':_0x18db2f['attributes'],'include':_0x18db2f[_0x7b9a('0x1a')]?_[_0x7b9a('0x1b')](_0x18db2f[_0x7b9a('0x1a')],function(_0x7070dd){return{'model':db[_0x7070dd[_0x7b9a('0x1c')]],'as':_0x7070dd['as'],'attributes':_0x7070dd[_0x7b9a('0x18')],'include':_0x7070dd['include']?_['map'](_0x7070dd[_0x7b9a('0x1a')],function(_0x31d29e){return{'model':db[_0x31d29e['model']],'as':_0x31d29e['as'],'attributes':_0x31d29e[_0x7b9a('0x18')]};}):[]};}):[]};}):[]:[]})[_0x7b9a('0x20')](function(_0xf58dca){logger['info'](_0x7b9a('0x1e'),_0x2ce78b);logger[_0x7b9a('0x21')]('ShowVtigerAccount',_0x2ce78b,JSON['stringify'](_0xf58dca));_0x6c8b1f(_0xf58dca);})[_0x7b9a('0x1d')](function(_0x130c04){logger[_0x7b9a('0xe')](_0x7b9a('0x1e'),_0x130c04[_0x7b9a('0x10')],_0x2ce78b);_0x5028e7(_0x181e9c[_0x7b9a('0xe')](0x1f4,_0x130c04[_0x7b9a('0x10')]));});});};
\ No newline at end of file
index cffaa9f..e9089cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b3e=['multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','getFields','/:id/subjects','/:id/descriptions','getDescriptions','post','put','update','delete','destroy'];(function(_0x2a8cb7,_0x314d29){var _0x183a1f=function(_0x7f65bc){while(--_0x7f65bc){_0x2a8cb7['push'](_0x2a8cb7['shift']());}};_0x183a1f(++_0x314d29);}(_0x6b3e,0x8a));var _0xe6b3=function(_0x59d6aa,_0x1c48cb){_0x59d6aa=_0x59d6aa-0x0;var _0xec5763=_0x6b3e[_0x59d6aa];return _0xec5763;};'use strict';var multer=require(_0xe6b3('0x0'));var util=require(_0xe6b3('0x1'));var path=require(_0xe6b3('0x2'));var timeout=require(_0xe6b3('0x3'));var express=require(_0xe6b3('0x4'));var router=express[_0xe6b3('0x5')]();var fs_extra=require(_0xe6b3('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0xe6b3('0x7'));var config=require(_0xe6b3('0x8'));var controller=require('./intVtigerConfiguration.controller');router[_0xe6b3('0x9')]('/',auth[_0xe6b3('0xa')](),controller[_0xe6b3('0xb')]);router['get'](_0xe6b3('0xc'),auth[_0xe6b3('0xa')](),controller[_0xe6b3('0xd')]);router[_0xe6b3('0x9')]('/:id/fields',auth[_0xe6b3('0xa')](),controller[_0xe6b3('0xe')]);router[_0xe6b3('0x9')](_0xe6b3('0xf'),auth[_0xe6b3('0xa')](),controller['getSubjects']);router[_0xe6b3('0x9')](_0xe6b3('0x10'),auth[_0xe6b3('0xa')](),controller[_0xe6b3('0x11')]);router[_0xe6b3('0x12')]('/',auth[_0xe6b3('0xa')](),controller['create']);router[_0xe6b3('0x13')]('/:id',auth[_0xe6b3('0xa')](),controller[_0xe6b3('0x14')]);router[_0xe6b3('0x15')](_0xe6b3('0xc'),auth['isAuthenticated'](),controller[_0xe6b3('0x16')]);module['exports']=router;
\ No newline at end of file
+var _0xe105=['/:id','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','post','create','put','update','delete','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./intVtigerConfiguration.controller','isAuthenticated','index','get'];(function(_0x5ddc37,_0x5cf372){var _0x3e419e=function(_0x49d3f3){while(--_0x49d3f3){_0x5ddc37['push'](_0x5ddc37['shift']());}};_0x3e419e(++_0x5cf372);}(_0xe105,0x1cf));var _0x5e10=function(_0x5576c8,_0x23971c){_0x5576c8=_0x5576c8-0x0;var _0x579560=_0xe105[_0x5576c8];return _0x579560;};'use strict';var multer=require(_0x5e10('0x0'));var util=require(_0x5e10('0x1'));var path=require('path');var timeout=require(_0x5e10('0x2'));var express=require(_0x5e10('0x3'));var router=express[_0x5e10('0x4')]();var fs_extra=require(_0x5e10('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x5e10('0x6'));var config=require(_0x5e10('0x7'));var controller=require(_0x5e10('0x8'));router['get']('/',auth[_0x5e10('0x9')](),controller[_0x5e10('0xa')]);router[_0x5e10('0xb')](_0x5e10('0xc'),auth['isAuthenticated'](),controller[_0x5e10('0xd')]);router[_0x5e10('0xb')](_0x5e10('0xe'),auth['isAuthenticated'](),controller[_0x5e10('0xf')]);router[_0x5e10('0xb')](_0x5e10('0x10'),auth[_0x5e10('0x9')](),controller[_0x5e10('0x11')]);router[_0x5e10('0xb')](_0x5e10('0x12'),auth['isAuthenticated'](),controller['getDescriptions']);router[_0x5e10('0x13')]('/',auth[_0x5e10('0x9')](),controller[_0x5e10('0x14')]);router[_0x5e10('0x15')](_0x5e10('0xc'),auth[_0x5e10('0x9')](),controller[_0x5e10('0x16')]);router[_0x5e10('0x17')](_0x5e10('0xc'),auth['isAuthenticated'](),controller['destroy']);module[_0x5e10('0x18')]=router;
\ No newline at end of file
index 8cde683..4e5bef2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd9ae=['STRING','sequelize'];(function(_0x977996,_0x4fbb97){var _0x93342c=function(_0x2395ed){while(--_0x2395ed){_0x977996['push'](_0x977996['shift']());}};_0x93342c(++_0x4fbb97);}(_0xd9ae,0xfb));var _0xed9a=function(_0x347b6c,_0x4d0d6f){_0x347b6c=_0x347b6c-0x0;var _0x2ab801=_0xd9ae[_0x347b6c];return _0x2ab801;};'use strict';var Sequelize=require(_0xed9a('0x0'));module['exports']={'name':{'type':Sequelize[_0xed9a('0x1')]},'description':{'type':Sequelize[_0xed9a('0x1')]}};
\ No newline at end of file
+var _0x6bfc=['STRING','exports'];(function(_0x10010f,_0x20b145){var _0x2afb68=function(_0x2985c2){while(--_0x2985c2){_0x10010f['push'](_0x10010f['shift']());}};_0x2afb68(++_0x20b145);}(_0x6bfc,0x1d9));var _0xc6bf=function(_0x30fe4e,_0x6f7468){_0x30fe4e=_0x30fe4e-0x0;var _0x43554d=_0x6bfc[_0x30fe4e];return _0x43554d;};'use strict';var Sequelize=require('sequelize');module[_0xc6bf('0x0')]={'name':{'type':Sequelize[_0xc6bf('0x1')]},'description':{'type':Sequelize[_0xc6bf('0x1')]}};
\ No newline at end of file
index 6bb9a2f..420705f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x05c2=['filter','merge','options','then','includeAll','findAll','rows','catch','show','rawAttributes','length','include','create','update','body','find','getFields','findOne','params','VtigerField','getSubjects','getDescriptions','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','offset','limit','undefined','count','set','json','reject','save','destroy','stack','name','send','index','map','VtigerConfiguration','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick'];(function(_0x507ac5,_0x33aaee){var _0x12c1bc=function(_0x5c953c){while(--_0x5c953c){_0x507ac5['push'](_0x507ac5['shift']());}};_0x12c1bc(++_0x33aaee);}(_0x05c2,0x1ab));var _0x205c=function(_0x4a86b1,_0x37a680){_0x4a86b1=_0x4a86b1-0x0;var _0x3bcc2c=_0x05c2[_0x4a86b1];return _0x3bcc2c;};'use strict';var emlformat=require(_0x205c('0x0'));var rimraf=require(_0x205c('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x205c('0x2'));var rp=require(_0x205c('0x3'));var moment=require(_0x205c('0x4'));var BPromise=require(_0x205c('0x5'));var Mustache=require(_0x205c('0x6'));var util=require('util');var path=require('path');var sox=require(_0x205c('0x7'));var csv=require(_0x205c('0x8'));var ejs=require(_0x205c('0x9'));var fs=require('fs');var fs_extra=require(_0x205c('0xa'));var _=require(_0x205c('0xb'));var squel=require('squel');var crypto=require(_0x205c('0xc'));var jsforce=require(_0x205c('0xd'));var deskjs=require(_0x205c('0xe'));var toCsv=require(_0x205c('0x8'));var querystring=require(_0x205c('0xf'));var Papa=require(_0x205c('0x10'));var Redis=require(_0x205c('0x11'));var authService=require(_0x205c('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x205c('0x13'));var hardwareService=require(_0x205c('0x14'));var logger=require('../../config/logger')(_0x205c('0x15'));var utils=require(_0x205c('0x16'));var config=require(_0x205c('0x17'));var licenseUtil=require(_0x205c('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x122c73,_0x93525a){_0x93525a=_0x93525a||0xcc;return function(_0x4d36a5){if(_0x4d36a5){return _0x122c73[_0x205c('0x19')](_0x93525a);}return _0x122c73[_0x205c('0x1a')](_0x93525a)[_0x205c('0x1b')]();};}function respondWithResult(_0x1ff834,_0x4f0108){_0x4f0108=_0x4f0108||0xc8;return function(_0x2d2c0a){if(_0x2d2c0a){return _0x1ff834[_0x205c('0x1a')](_0x4f0108)['json'](_0x2d2c0a);}};}function respondWithFilteredResult(_0xf1e506,_0x5bf6b4){return function(_0x1fee0c){if(_0x1fee0c){var _0x48f748=typeof _0x5bf6b4[_0x205c('0x1c')]==='undefined'&&typeof _0x5bf6b4[_0x205c('0x1d')]===_0x205c('0x1e');var _0x2c7026=_0x1fee0c[_0x205c('0x1f')];var _0x5a82dc=_0x48f748?0x0:_0x5bf6b4['offset'];var _0x4e1a5e=_0x48f748?_0x1fee0c['count']:_0x5bf6b4[_0x205c('0x1c')]+_0x5bf6b4['limit'];var _0x4c6ceb;if(_0x4e1a5e>=_0x2c7026){_0x4e1a5e=_0x2c7026;_0x4c6ceb=0xc8;}else{_0x4c6ceb=0xce;}_0xf1e506[_0x205c('0x1a')](_0x4c6ceb);return _0xf1e506[_0x205c('0x20')]('Content-Range',_0x5a82dc+'-'+_0x4e1a5e+'/'+_0x2c7026)[_0x205c('0x21')](_0x1fee0c);}return null;};}function patchUpdates(_0x3881b8){return function(_0x4cdc7c){try{jsonpatch['apply'](_0x4cdc7c,_0x3881b8,!![]);}catch(_0x252342){return BPromise[_0x205c('0x22')](_0x252342);}return _0x4cdc7c[_0x205c('0x23')]();};}function saveUpdates(_0x337df2,_0x43d847){return function(_0x5c93fa){if(_0x5c93fa){return _0x5c93fa['update'](_0x337df2)['then'](function(_0x548e50){return _0x548e50;});}return null;};}function removeEntity(_0x18f9c1,_0x4c69c7){return function(_0x4edd82){if(_0x4edd82){return _0x4edd82[_0x205c('0x24')]()['then'](function(){_0x18f9c1[_0x205c('0x1a')](0xcc)[_0x205c('0x1b')]();});}};}function handleEntityNotFound(_0x4d7cd1,_0x51e275){return function(_0xed5a10){if(!_0xed5a10){_0x4d7cd1[_0x205c('0x19')](0x194);}return _0xed5a10;};}function handleError(_0x23890a,_0x39f5fa){_0x39f5fa=_0x39f5fa||0x1f4;return function(_0x180042){logger['error'](_0x180042[_0x205c('0x25')]);if(_0x180042[_0x205c('0x26')]){delete _0x180042[_0x205c('0x26')];}_0x23890a[_0x205c('0x1a')](_0x39f5fa)[_0x205c('0x27')](_0x180042);};}exports[_0x205c('0x28')]=function(_0x385b24,_0x5dca4b){var _0x3a2027={},_0x1c9bcc={},_0x5a9c49={'count':0x0,'rows':[]};var _0x19d1a6=_[_0x205c('0x29')](db[_0x205c('0x2a')]['rawAttributes'],function(_0x2d76f1){return{'name':_0x2d76f1[_0x205c('0x2b')],'type':_0x2d76f1[_0x205c('0x2c')][_0x205c('0x2d')]};});_0x1c9bcc[_0x205c('0x2e')]=_[_0x205c('0x29')](_0x19d1a6,_0x205c('0x26'));_0x1c9bcc[_0x205c('0x2f')]=_[_0x205c('0x30')](_0x385b24[_0x205c('0x2f')]);_0x1c9bcc[_0x205c('0x31')]=_[_0x205c('0x32')](_0x1c9bcc['model'],_0x1c9bcc[_0x205c('0x2f')]);_0x3a2027[_0x205c('0x33')]=_['intersection'](_0x1c9bcc[_0x205c('0x2e')],qs[_0x205c('0x34')](_0x385b24['query']['fields']));_0x3a2027[_0x205c('0x33')]=_0x3a2027[_0x205c('0x33')]['length']?_0x3a2027[_0x205c('0x33')]:_0x1c9bcc[_0x205c('0x2e')];if(!_0x385b24['query'][_0x205c('0x35')](_0x205c('0x36'))){_0x3a2027['limit']=qs['limit'](_0x385b24['query'][_0x205c('0x1d')]);_0x3a2027[_0x205c('0x1c')]=qs[_0x205c('0x1c')](_0x385b24[_0x205c('0x2f')][_0x205c('0x1c')]);}_0x3a2027[_0x205c('0x37')]=qs[_0x205c('0x38')](_0x385b24['query'][_0x205c('0x38')]);_0x3a2027[_0x205c('0x39')]=qs[_0x205c('0x31')](_[_0x205c('0x3a')](_0x385b24[_0x205c('0x2f')],_0x1c9bcc['filters']),_0x19d1a6);if(_0x385b24[_0x205c('0x2f')]['filter']){_0x3a2027[_0x205c('0x39')]=_['merge'](_0x3a2027[_0x205c('0x39')],{'$or':_[_0x205c('0x29')](_0x19d1a6,function(_0xfc6437){if(_0xfc6437['type']!=='VIRTUAL'){var _0x2acda0={};_0x2acda0[_0xfc6437['name']]={'$like':'%'+_0x385b24['query'][_0x205c('0x3b')]+'%'};return _0x2acda0;}})});}_0x3a2027=_[_0x205c('0x3c')]({},_0x3a2027,_0x385b24[_0x205c('0x3d')]);var _0x142c04={'where':_0x3a2027['where']};return db[_0x205c('0x2a')][_0x205c('0x1f')](_0x142c04)[_0x205c('0x3e')](function(_0x56b288){_0x5a9c49[_0x205c('0x1f')]=_0x56b288;if(_0x385b24[_0x205c('0x2f')][_0x205c('0x3f')]){_0x3a2027['include']=[{'all':!![]}];}return db[_0x205c('0x2a')][_0x205c('0x40')](_0x3a2027);})[_0x205c('0x3e')](function(_0x1435cf){_0x5a9c49[_0x205c('0x41')]=_0x1435cf;return _0x5a9c49;})['then'](respondWithFilteredResult(_0x5dca4b,_0x3a2027))[_0x205c('0x42')](handleError(_0x5dca4b,null));};exports[_0x205c('0x43')]=function(_0x2feeff,_0x50eb17){var _0x2bf12f={'raw':![],'where':{'id':_0x2feeff['params']['id']}},_0x5dcda4={};_0x5dcda4[_0x205c('0x2e')]=_['keys'](db[_0x205c('0x2a')][_0x205c('0x44')]);_0x5dcda4['query']=_[_0x205c('0x30')](_0x2feeff['query']);_0x5dcda4['filters']=_['intersection'](_0x5dcda4[_0x205c('0x2e')],_0x5dcda4[_0x205c('0x2f')]);_0x2bf12f[_0x205c('0x33')]=_[_0x205c('0x32')](_0x5dcda4[_0x205c('0x2e')],qs['fields'](_0x2feeff['query'][_0x205c('0x34')]));_0x2bf12f[_0x205c('0x33')]=_0x2bf12f[_0x205c('0x33')][_0x205c('0x45')]?_0x2bf12f[_0x205c('0x33')]:_0x5dcda4['model'];if(_0x2feeff[_0x205c('0x2f')][_0x205c('0x3f')]){_0x2bf12f[_0x205c('0x46')]=[{'all':!![]}];}_0x2bf12f=_[_0x205c('0x3c')]({},_0x2bf12f,_0x2feeff[_0x205c('0x3d')]);return db[_0x205c('0x2a')]['find'](_0x2bf12f)[_0x205c('0x3e')](handleEntityNotFound(_0x50eb17,null))[_0x205c('0x3e')](respondWithResult(_0x50eb17,null))[_0x205c('0x42')](handleError(_0x50eb17,null));};exports['create']=function(_0x2f28b7,_0x318c1d){return db[_0x205c('0x2a')][_0x205c('0x47')](_0x2f28b7['body'],{})['then'](respondWithResult(_0x318c1d,0xc9))['catch'](handleError(_0x318c1d,null));};exports[_0x205c('0x48')]=function(_0x14bc23,_0xd0fc1f){if(_0x14bc23['body']['id']){delete _0x14bc23[_0x205c('0x49')]['id'];}return db[_0x205c('0x2a')]['find']({'where':{'id':_0x14bc23['params']['id']}})[_0x205c('0x3e')](handleEntityNotFound(_0xd0fc1f,null))['then'](saveUpdates(_0x14bc23[_0x205c('0x49')],null))[_0x205c('0x3e')](respondWithResult(_0xd0fc1f,null))[_0x205c('0x42')](handleError(_0xd0fc1f,null));};exports[_0x205c('0x24')]=function(_0x2f6e67,_0x2b8a4a){return db[_0x205c('0x2a')][_0x205c('0x4a')]({'where':{'id':_0x2f6e67['params']['id']}})[_0x205c('0x3e')](handleEntityNotFound(_0x2b8a4a,null))[_0x205c('0x3e')](removeEntity(_0x2b8a4a,null))[_0x205c('0x42')](handleError(_0x2b8a4a,null));};exports[_0x205c('0x4b')]=function(_0x220d32,_0x54b2d5,_0x26c33b){var _0x161167={};var _0x5f3434={};var _0x57052a;var _0x4735b3;return db[_0x205c('0x2a')][_0x205c('0x4c')]({'where':{'id':_0x220d32[_0x205c('0x4d')]['id']}})['then'](handleEntityNotFound(_0x54b2d5,null))['then'](function(_0xf5e817){if(_0xf5e817){_0x57052a=_0xf5e817;_0x5f3434['model']=_[_0x205c('0x30')](db['VtigerField'][_0x205c('0x44')]);_0x5f3434[_0x205c('0x2f')]=_[_0x205c('0x30')](_0x220d32['query']);_0x5f3434[_0x205c('0x31')]=_[_0x205c('0x32')](_0x5f3434[_0x205c('0x2e')],_0x5f3434[_0x205c('0x2f')]);_0x161167[_0x205c('0x33')]=_[_0x205c('0x32')](_0x5f3434[_0x205c('0x2e')],qs[_0x205c('0x34')](_0x220d32[_0x205c('0x2f')][_0x205c('0x34')]));_0x161167[_0x205c('0x33')]=_0x161167['attributes']['length']?_0x161167[_0x205c('0x33')]:_0x5f3434[_0x205c('0x2e')];_0x161167[_0x205c('0x37')]=qs[_0x205c('0x38')](_0x220d32[_0x205c('0x2f')][_0x205c('0x38')]);_0x161167['where']=qs[_0x205c('0x31')](_[_0x205c('0x3a')](_0x220d32[_0x205c('0x2f')],_0x5f3434[_0x205c('0x31')]));if(_0x220d32[_0x205c('0x2f')][_0x205c('0x3b')]){_0x161167[_0x205c('0x39')]=_[_0x205c('0x3c')](_0x161167[_0x205c('0x39')],{'$or':_['map'](_0x161167['attributes'],function(_0x2e18a1){var _0x48dac4={};_0x48dac4[_0x2e18a1]={'$like':'%'+_0x220d32['query'][_0x205c('0x3b')]+'%'};return _0x48dac4;})});}_0x161167=_[_0x205c('0x3c')]({},_0x161167,_0x220d32[_0x205c('0x3d')]);return _0x57052a[_0x205c('0x4b')](_0x161167);}})[_0x205c('0x3e')](function(_0x901cad){if(_0x901cad){_0x4735b3=_0x901cad['length'];if(!_0x220d32[_0x205c('0x2f')][_0x205c('0x35')](_0x205c('0x36'))){_0x161167[_0x205c('0x1d')]=qs[_0x205c('0x1d')](_0x220d32[_0x205c('0x2f')][_0x205c('0x1d')]);_0x161167[_0x205c('0x1c')]=qs[_0x205c('0x1c')](_0x220d32[_0x205c('0x2f')]['offset']);}return _0x57052a[_0x205c('0x4b')](_0x161167);}})[_0x205c('0x3e')](function(_0x40bfdd){if(_0x40bfdd){return _0x40bfdd?{'count':_0x4735b3,'rows':_0x40bfdd}:null;}})['then'](respondWithResult(_0x54b2d5,null))[_0x205c('0x42')](handleError(_0x54b2d5,null));};exports['getSubjects']=function(_0x4d0822,_0x5cd094,_0x3b553d){var _0x555dee={};var _0x33a943={};var _0x384f1f;var _0x3fa138;return db[_0x205c('0x2a')][_0x205c('0x4c')]({'where':{'id':_0x4d0822[_0x205c('0x4d')]['id']}})[_0x205c('0x3e')](handleEntityNotFound(_0x5cd094,null))[_0x205c('0x3e')](function(_0x215d68){if(_0x215d68){_0x384f1f=_0x215d68;_0x33a943[_0x205c('0x2e')]=_['keys'](db[_0x205c('0x4e')][_0x205c('0x44')]);_0x33a943[_0x205c('0x2f')]=_[_0x205c('0x30')](_0x4d0822[_0x205c('0x2f')]);_0x33a943[_0x205c('0x31')]=_[_0x205c('0x32')](_0x33a943[_0x205c('0x2e')],_0x33a943[_0x205c('0x2f')]);_0x555dee[_0x205c('0x33')]=_['intersection'](_0x33a943[_0x205c('0x2e')],qs[_0x205c('0x34')](_0x4d0822[_0x205c('0x2f')][_0x205c('0x34')]));_0x555dee[_0x205c('0x33')]=_0x555dee['attributes'][_0x205c('0x45')]?_0x555dee[_0x205c('0x33')]:_0x33a943['model'];_0x555dee['order']=qs['sort'](_0x4d0822['query']['sort']);_0x555dee[_0x205c('0x39')]=qs[_0x205c('0x31')](_[_0x205c('0x3a')](_0x4d0822[_0x205c('0x2f')],_0x33a943[_0x205c('0x31')]));if(_0x4d0822[_0x205c('0x2f')][_0x205c('0x3b')]){_0x555dee[_0x205c('0x39')]=_['merge'](_0x555dee[_0x205c('0x39')],{'$or':_[_0x205c('0x29')](_0x555dee[_0x205c('0x33')],function(_0x1d9e62){var _0x5d5e5d={};_0x5d5e5d[_0x1d9e62]={'$like':'%'+_0x4d0822[_0x205c('0x2f')][_0x205c('0x3b')]+'%'};return _0x5d5e5d;})});}_0x555dee=_[_0x205c('0x3c')]({},_0x555dee,_0x4d0822[_0x205c('0x3d')]);return _0x384f1f[_0x205c('0x4f')](_0x555dee);}})[_0x205c('0x3e')](function(_0x2823da){if(_0x2823da){_0x3fa138=_0x2823da['length'];if(!_0x4d0822[_0x205c('0x2f')][_0x205c('0x35')](_0x205c('0x36'))){_0x555dee['limit']=qs['limit'](_0x4d0822['query']['limit']);_0x555dee[_0x205c('0x1c')]=qs[_0x205c('0x1c')](_0x4d0822['query'][_0x205c('0x1c')]);}return _0x384f1f['getSubjects'](_0x555dee);}})['then'](function(_0x3c02f0){if(_0x3c02f0){return _0x3c02f0?{'count':_0x3fa138,'rows':_0x3c02f0}:null;}})[_0x205c('0x3e')](respondWithResult(_0x5cd094,null))[_0x205c('0x42')](handleError(_0x5cd094,null));};exports[_0x205c('0x50')]=function(_0x4b598d,_0x242d51,_0x5cbb5d){var _0xf1c5e3={};var _0x4b8236={};var _0x5117c0;var _0x54b8ad;return db[_0x205c('0x2a')][_0x205c('0x4c')]({'where':{'id':_0x4b598d['params']['id']}})[_0x205c('0x3e')](handleEntityNotFound(_0x242d51,null))['then'](function(_0xecd20f){if(_0xecd20f){_0x5117c0=_0xecd20f;_0x4b8236['model']=_['keys'](db[_0x205c('0x4e')][_0x205c('0x44')]);_0x4b8236['query']=_['keys'](_0x4b598d[_0x205c('0x2f')]);_0x4b8236[_0x205c('0x31')]=_[_0x205c('0x32')](_0x4b8236['model'],_0x4b8236[_0x205c('0x2f')]);_0xf1c5e3['attributes']=_[_0x205c('0x32')](_0x4b8236['model'],qs[_0x205c('0x34')](_0x4b598d['query'][_0x205c('0x34')]));_0xf1c5e3['attributes']=_0xf1c5e3[_0x205c('0x33')]['length']?_0xf1c5e3['attributes']:_0x4b8236[_0x205c('0x2e')];_0xf1c5e3['order']=qs[_0x205c('0x38')](_0x4b598d['query'][_0x205c('0x38')]);_0xf1c5e3[_0x205c('0x39')]=qs['filters'](_[_0x205c('0x3a')](_0x4b598d['query'],_0x4b8236[_0x205c('0x31')]));if(_0x4b598d['query'][_0x205c('0x3b')]){_0xf1c5e3[_0x205c('0x39')]=_[_0x205c('0x3c')](_0xf1c5e3[_0x205c('0x39')],{'$or':_['map'](_0xf1c5e3['attributes'],function(_0x1b52c9){var _0x5c1a18={};_0x5c1a18[_0x1b52c9]={'$like':'%'+_0x4b598d[_0x205c('0x2f')][_0x205c('0x3b')]+'%'};return _0x5c1a18;})});}_0xf1c5e3=_[_0x205c('0x3c')]({},_0xf1c5e3,_0x4b598d[_0x205c('0x3d')]);return _0x5117c0[_0x205c('0x50')](_0xf1c5e3);}})['then'](function(_0xd0bd6b){if(_0xd0bd6b){_0x54b8ad=_0xd0bd6b[_0x205c('0x45')];if(!_0x4b598d['query'][_0x205c('0x35')]('nolimit')){_0xf1c5e3[_0x205c('0x1d')]=qs[_0x205c('0x1d')](_0x4b598d['query'][_0x205c('0x1d')]);_0xf1c5e3[_0x205c('0x1c')]=qs[_0x205c('0x1c')](_0x4b598d[_0x205c('0x2f')]['offset']);}return _0x5117c0[_0x205c('0x50')](_0xf1c5e3);}})[_0x205c('0x3e')](function(_0x557d98){if(_0x557d98){return _0x557d98?{'count':_0x54b8ad,'rows':_0x557d98}:null;}})[_0x205c('0x3e')](respondWithResult(_0x242d51,null))[_0x205c('0x42')](handleError(_0x242d51,null));};
\ No newline at end of file
+var _0x3667=['destroy','stack','name','index','map','VtigerConfiguration','rawAttributes','fieldName','type','query','keys','filters','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','pick','where','merge','options','includeAll','findAll','catch','params','include','find','create','body','getFields','filter','VtigerField','order','getSubjects','getDescriptions','findOne','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','then'];(function(_0x42245d,_0x51758f){var _0x4b211a=function(_0x2634e){while(--_0x2634e){_0x42245d['push'](_0x42245d['shift']());}};_0x4b211a(++_0x51758f);}(_0x3667,0xcd));var _0x7366=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3667[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x7366('0x0'));var rimraf=require(_0x7366('0x1'));var zipdir=require(_0x7366('0x2'));var jsonpatch=require(_0x7366('0x3'));var rp=require(_0x7366('0x4'));var moment=require('moment');var BPromise=require(_0x7366('0x5'));var Mustache=require(_0x7366('0x6'));var util=require('util');var path=require(_0x7366('0x7'));var sox=require(_0x7366('0x8'));var csv=require(_0x7366('0x9'));var ejs=require(_0x7366('0xa'));var fs=require('fs');var fs_extra=require(_0x7366('0xb'));var _=require('lodash');var squel=require(_0x7366('0xc'));var crypto=require(_0x7366('0xd'));var jsforce=require(_0x7366('0xe'));var deskjs=require(_0x7366('0xf'));var toCsv=require(_0x7366('0x9'));var querystring=require(_0x7366('0x10'));var Papa=require(_0x7366('0x11'));var Redis=require(_0x7366('0x12'));var authService=require(_0x7366('0x13'));var qs=require(_0x7366('0x14'));var as=require(_0x7366('0x15'));var hardwareService=require(_0x7366('0x16'));var logger=require(_0x7366('0x17'))(_0x7366('0x18'));var utils=require(_0x7366('0x19'));var config=require(_0x7366('0x1a'));var licenseUtil=require(_0x7366('0x1b'));var db=require(_0x7366('0x1c'))['db'];function respondWithStatusCode(_0xd5bac8,_0x3e3a73){_0x3e3a73=_0x3e3a73||0xcc;return function(_0x262659){if(_0x262659){return _0xd5bac8[_0x7366('0x1d')](_0x3e3a73);}return _0xd5bac8[_0x7366('0x1e')](_0x3e3a73)[_0x7366('0x1f')]();};}function respondWithResult(_0x308253,_0x27500c){_0x27500c=_0x27500c||0xc8;return function(_0x22562f){if(_0x22562f){return _0x308253[_0x7366('0x1e')](_0x27500c)['json'](_0x22562f);}};}function respondWithFilteredResult(_0x23e763,_0x308752){return function(_0x338719){if(_0x338719){var _0x2c0422=typeof _0x308752[_0x7366('0x20')]===_0x7366('0x21')&&typeof _0x308752[_0x7366('0x22')]===_0x7366('0x21');var _0x83e5d5=_0x338719[_0x7366('0x23')];var _0x1a71f5=_0x2c0422?0x0:_0x308752['offset'];var _0x208ac8=_0x2c0422?_0x338719['count']:_0x308752[_0x7366('0x20')]+_0x308752[_0x7366('0x22')];var _0x3f23cd;if(_0x208ac8>=_0x83e5d5){_0x208ac8=_0x83e5d5;_0x3f23cd=0xc8;}else{_0x3f23cd=0xce;}_0x23e763['status'](_0x3f23cd);return _0x23e763[_0x7366('0x24')](_0x7366('0x25'),_0x1a71f5+'-'+_0x208ac8+'/'+_0x83e5d5)[_0x7366('0x26')](_0x338719);}return null;};}function patchUpdates(_0x532ce2){return function(_0x16e038){try{jsonpatch[_0x7366('0x27')](_0x16e038,_0x532ce2,!![]);}catch(_0x482946){return BPromise[_0x7366('0x28')](_0x482946);}return _0x16e038[_0x7366('0x29')]();};}function saveUpdates(_0xaab659,_0x1a12d2){return function(_0x3c30a2){if(_0x3c30a2){return _0x3c30a2[_0x7366('0x2a')](_0xaab659)[_0x7366('0x2b')](function(_0x22ed7e){return _0x22ed7e;});}return null;};}function removeEntity(_0x2095a1,_0x301220){return function(_0x12aed6){if(_0x12aed6){return _0x12aed6[_0x7366('0x2c')]()[_0x7366('0x2b')](function(){_0x2095a1['status'](0xcc)[_0x7366('0x1f')]();});}};}function handleEntityNotFound(_0x4fe7cf,_0x379146){return function(_0x4ab987){if(!_0x4ab987){_0x4fe7cf['sendStatus'](0x194);}return _0x4ab987;};}function handleError(_0x383055,_0x4d4cb5){_0x4d4cb5=_0x4d4cb5||0x1f4;return function(_0x254374){logger['error'](_0x254374[_0x7366('0x2d')]);if(_0x254374[_0x7366('0x2e')]){delete _0x254374['name'];}_0x383055[_0x7366('0x1e')](_0x4d4cb5)['send'](_0x254374);};}exports[_0x7366('0x2f')]=function(_0x2b61af,_0x4a4e67){var _0x3cef4a={},_0x507baf={},_0xc58ac7={'count':0x0,'rows':[]};var _0x46f80f=_[_0x7366('0x30')](db[_0x7366('0x31')][_0x7366('0x32')],function(_0x5e075c){return{'name':_0x5e075c[_0x7366('0x33')],'type':_0x5e075c[_0x7366('0x34')]['key']};});_0x507baf['model']=_['map'](_0x46f80f,'name');_0x507baf[_0x7366('0x35')]=_[_0x7366('0x36')](_0x2b61af[_0x7366('0x35')]);_0x507baf[_0x7366('0x37')]=_['intersection'](_0x507baf[_0x7366('0x38')],_0x507baf[_0x7366('0x35')]);_0x3cef4a[_0x7366('0x39')]=_[_0x7366('0x3a')](_0x507baf['model'],qs[_0x7366('0x3b')](_0x2b61af[_0x7366('0x35')]['fields']));_0x3cef4a[_0x7366('0x39')]=_0x3cef4a[_0x7366('0x39')][_0x7366('0x3c')]?_0x3cef4a[_0x7366('0x39')]:_0x507baf[_0x7366('0x38')];if(!_0x2b61af[_0x7366('0x35')][_0x7366('0x3d')](_0x7366('0x3e'))){_0x3cef4a[_0x7366('0x22')]=qs['limit'](_0x2b61af[_0x7366('0x35')][_0x7366('0x22')]);_0x3cef4a['offset']=qs[_0x7366('0x20')](_0x2b61af[_0x7366('0x35')][_0x7366('0x20')]);}_0x3cef4a['order']=qs[_0x7366('0x3f')](_0x2b61af['query'][_0x7366('0x3f')]);_0x3cef4a['where']=qs['filters'](_[_0x7366('0x40')](_0x2b61af['query'],_0x507baf[_0x7366('0x37')]),_0x46f80f);if(_0x2b61af[_0x7366('0x35')]['filter']){_0x3cef4a[_0x7366('0x41')]=_['merge'](_0x3cef4a[_0x7366('0x41')],{'$or':_[_0x7366('0x30')](_0x46f80f,function(_0x5e58c5){if(_0x5e58c5[_0x7366('0x34')]!=='VIRTUAL'){var _0x8ed827={};_0x8ed827[_0x5e58c5[_0x7366('0x2e')]]={'$like':'%'+_0x2b61af[_0x7366('0x35')]['filter']+'%'};return _0x8ed827;}})});}_0x3cef4a=_[_0x7366('0x42')]({},_0x3cef4a,_0x2b61af[_0x7366('0x43')]);var _0x14ec01={'where':_0x3cef4a[_0x7366('0x41')]};return db[_0x7366('0x31')][_0x7366('0x23')](_0x14ec01)[_0x7366('0x2b')](function(_0x4d45dd){_0xc58ac7['count']=_0x4d45dd;if(_0x2b61af[_0x7366('0x35')][_0x7366('0x44')]){_0x3cef4a['include']=[{'all':!![]}];}return db[_0x7366('0x31')][_0x7366('0x45')](_0x3cef4a);})['then'](function(_0x432f79){_0xc58ac7['rows']=_0x432f79;return _0xc58ac7;})[_0x7366('0x2b')](respondWithFilteredResult(_0x4a4e67,_0x3cef4a))[_0x7366('0x46')](handleError(_0x4a4e67,null));};exports['show']=function(_0x5b5a95,_0x3bc879){var _0xedc3c7={'raw':![],'where':{'id':_0x5b5a95[_0x7366('0x47')]['id']}},_0x2ac2e6={};_0x2ac2e6['model']=_[_0x7366('0x36')](db[_0x7366('0x31')][_0x7366('0x32')]);_0x2ac2e6[_0x7366('0x35')]=_[_0x7366('0x36')](_0x5b5a95[_0x7366('0x35')]);_0x2ac2e6[_0x7366('0x37')]=_['intersection'](_0x2ac2e6[_0x7366('0x38')],_0x2ac2e6[_0x7366('0x35')]);_0xedc3c7[_0x7366('0x39')]=_['intersection'](_0x2ac2e6[_0x7366('0x38')],qs[_0x7366('0x3b')](_0x5b5a95['query'][_0x7366('0x3b')]));_0xedc3c7[_0x7366('0x39')]=_0xedc3c7[_0x7366('0x39')]['length']?_0xedc3c7[_0x7366('0x39')]:_0x2ac2e6[_0x7366('0x38')];if(_0x5b5a95[_0x7366('0x35')]['includeAll']){_0xedc3c7[_0x7366('0x48')]=[{'all':!![]}];}_0xedc3c7=_[_0x7366('0x42')]({},_0xedc3c7,_0x5b5a95[_0x7366('0x43')]);return db['VtigerConfiguration'][_0x7366('0x49')](_0xedc3c7)[_0x7366('0x2b')](handleEntityNotFound(_0x3bc879,null))[_0x7366('0x2b')](respondWithResult(_0x3bc879,null))[_0x7366('0x46')](handleError(_0x3bc879,null));};exports['create']=function(_0x3725aa,_0x2d1c52){return db[_0x7366('0x31')][_0x7366('0x4a')](_0x3725aa[_0x7366('0x4b')],{})[_0x7366('0x2b')](respondWithResult(_0x2d1c52,0xc9))[_0x7366('0x46')](handleError(_0x2d1c52,null));};exports[_0x7366('0x2a')]=function(_0x2ad8bf,_0x59f078){if(_0x2ad8bf[_0x7366('0x4b')]['id']){delete _0x2ad8bf[_0x7366('0x4b')]['id'];}return db['VtigerConfiguration'][_0x7366('0x49')]({'where':{'id':_0x2ad8bf[_0x7366('0x47')]['id']}})['then'](handleEntityNotFound(_0x59f078,null))[_0x7366('0x2b')](saveUpdates(_0x2ad8bf['body'],null))[_0x7366('0x2b')](respondWithResult(_0x59f078,null))[_0x7366('0x46')](handleError(_0x59f078,null));};exports[_0x7366('0x2c')]=function(_0x22026a,_0x588b31){return db[_0x7366('0x31')][_0x7366('0x49')]({'where':{'id':_0x22026a[_0x7366('0x47')]['id']}})[_0x7366('0x2b')](handleEntityNotFound(_0x588b31,null))[_0x7366('0x2b')](removeEntity(_0x588b31,null))[_0x7366('0x46')](handleError(_0x588b31,null));};exports[_0x7366('0x4c')]=function(_0x3faff8,_0x30a533,_0x336b4d){var _0x4bc564={};var _0x1002f4={};var _0x5d2a2c;var _0xd4c2e;return db['VtigerConfiguration']['findOne']({'where':{'id':_0x3faff8[_0x7366('0x47')]['id']}})[_0x7366('0x2b')](handleEntityNotFound(_0x30a533,null))['then'](function(_0x121a24){if(_0x121a24){_0x5d2a2c=_0x121a24;_0x1002f4[_0x7366('0x38')]=_['keys'](db['VtigerField'][_0x7366('0x32')]);_0x1002f4['query']=_[_0x7366('0x36')](_0x3faff8[_0x7366('0x35')]);_0x1002f4['filters']=_[_0x7366('0x3a')](_0x1002f4[_0x7366('0x38')],_0x1002f4[_0x7366('0x35')]);_0x4bc564['attributes']=_[_0x7366('0x3a')](_0x1002f4[_0x7366('0x38')],qs[_0x7366('0x3b')](_0x3faff8[_0x7366('0x35')]['fields']));_0x4bc564[_0x7366('0x39')]=_0x4bc564[_0x7366('0x39')][_0x7366('0x3c')]?_0x4bc564[_0x7366('0x39')]:_0x1002f4[_0x7366('0x38')];_0x4bc564['order']=qs[_0x7366('0x3f')](_0x3faff8[_0x7366('0x35')][_0x7366('0x3f')]);_0x4bc564[_0x7366('0x41')]=qs['filters'](_[_0x7366('0x40')](_0x3faff8['query'],_0x1002f4[_0x7366('0x37')]));if(_0x3faff8[_0x7366('0x35')]['filter']){_0x4bc564[_0x7366('0x41')]=_[_0x7366('0x42')](_0x4bc564[_0x7366('0x41')],{'$or':_[_0x7366('0x30')](_0x4bc564['attributes'],function(_0x49e730){var _0x112c82={};_0x112c82[_0x49e730]={'$like':'%'+_0x3faff8['query'][_0x7366('0x4d')]+'%'};return _0x112c82;})});}_0x4bc564=_[_0x7366('0x42')]({},_0x4bc564,_0x3faff8[_0x7366('0x43')]);return _0x5d2a2c[_0x7366('0x4c')](_0x4bc564);}})[_0x7366('0x2b')](function(_0x3e64b7){if(_0x3e64b7){_0xd4c2e=_0x3e64b7[_0x7366('0x3c')];if(!_0x3faff8[_0x7366('0x35')][_0x7366('0x3d')]('nolimit')){_0x4bc564[_0x7366('0x22')]=qs['limit'](_0x3faff8['query']['limit']);_0x4bc564[_0x7366('0x20')]=qs['offset'](_0x3faff8[_0x7366('0x35')]['offset']);}return _0x5d2a2c[_0x7366('0x4c')](_0x4bc564);}})['then'](function(_0x32e6d5){if(_0x32e6d5){return _0x32e6d5?{'count':_0xd4c2e,'rows':_0x32e6d5}:null;}})[_0x7366('0x2b')](respondWithResult(_0x30a533,null))['catch'](handleError(_0x30a533,null));};exports['getSubjects']=function(_0x25942f,_0x22ad58,_0x3f7b82){var _0x37a599={};var _0x5dc9e2={};var _0x349bd2;var _0x1df3a6;return db[_0x7366('0x31')]['findOne']({'where':{'id':_0x25942f['params']['id']}})[_0x7366('0x2b')](handleEntityNotFound(_0x22ad58,null))[_0x7366('0x2b')](function(_0x133b0e){if(_0x133b0e){_0x349bd2=_0x133b0e;_0x5dc9e2['model']=_[_0x7366('0x36')](db[_0x7366('0x4e')][_0x7366('0x32')]);_0x5dc9e2[_0x7366('0x35')]=_[_0x7366('0x36')](_0x25942f[_0x7366('0x35')]);_0x5dc9e2[_0x7366('0x37')]=_[_0x7366('0x3a')](_0x5dc9e2[_0x7366('0x38')],_0x5dc9e2[_0x7366('0x35')]);_0x37a599[_0x7366('0x39')]=_['intersection'](_0x5dc9e2[_0x7366('0x38')],qs[_0x7366('0x3b')](_0x25942f['query'][_0x7366('0x3b')]));_0x37a599['attributes']=_0x37a599['attributes'][_0x7366('0x3c')]?_0x37a599[_0x7366('0x39')]:_0x5dc9e2[_0x7366('0x38')];_0x37a599[_0x7366('0x4f')]=qs[_0x7366('0x3f')](_0x25942f[_0x7366('0x35')]['sort']);_0x37a599[_0x7366('0x41')]=qs[_0x7366('0x37')](_[_0x7366('0x40')](_0x25942f['query'],_0x5dc9e2[_0x7366('0x37')]));if(_0x25942f['query']['filter']){_0x37a599[_0x7366('0x41')]=_['merge'](_0x37a599[_0x7366('0x41')],{'$or':_[_0x7366('0x30')](_0x37a599[_0x7366('0x39')],function(_0xd8f559){var _0x4b9045={};_0x4b9045[_0xd8f559]={'$like':'%'+_0x25942f['query'][_0x7366('0x4d')]+'%'};return _0x4b9045;})});}_0x37a599=_[_0x7366('0x42')]({},_0x37a599,_0x25942f[_0x7366('0x43')]);return _0x349bd2[_0x7366('0x50')](_0x37a599);}})['then'](function(_0x157a66){if(_0x157a66){_0x1df3a6=_0x157a66['length'];if(!_0x25942f['query'][_0x7366('0x3d')](_0x7366('0x3e'))){_0x37a599['limit']=qs[_0x7366('0x22')](_0x25942f[_0x7366('0x35')]['limit']);_0x37a599[_0x7366('0x20')]=qs[_0x7366('0x20')](_0x25942f[_0x7366('0x35')][_0x7366('0x20')]);}return _0x349bd2[_0x7366('0x50')](_0x37a599);}})[_0x7366('0x2b')](function(_0xb15eca){if(_0xb15eca){return _0xb15eca?{'count':_0x1df3a6,'rows':_0xb15eca}:null;}})[_0x7366('0x2b')](respondWithResult(_0x22ad58,null))[_0x7366('0x46')](handleError(_0x22ad58,null));};exports[_0x7366('0x51')]=function(_0x529aeb,_0x546b90,_0x56e0de){var _0x14531c={};var _0x1c3e4d={};var _0x26bc28;var _0x57a5da;return db[_0x7366('0x31')][_0x7366('0x52')]({'where':{'id':_0x529aeb[_0x7366('0x47')]['id']}})[_0x7366('0x2b')](handleEntityNotFound(_0x546b90,null))[_0x7366('0x2b')](function(_0x55bf2a){if(_0x55bf2a){_0x26bc28=_0x55bf2a;_0x1c3e4d[_0x7366('0x38')]=_[_0x7366('0x36')](db['VtigerField'][_0x7366('0x32')]);_0x1c3e4d[_0x7366('0x35')]=_[_0x7366('0x36')](_0x529aeb[_0x7366('0x35')]);_0x1c3e4d[_0x7366('0x37')]=_['intersection'](_0x1c3e4d['model'],_0x1c3e4d[_0x7366('0x35')]);_0x14531c[_0x7366('0x39')]=_[_0x7366('0x3a')](_0x1c3e4d[_0x7366('0x38')],qs[_0x7366('0x3b')](_0x529aeb[_0x7366('0x35')][_0x7366('0x3b')]));_0x14531c[_0x7366('0x39')]=_0x14531c[_0x7366('0x39')][_0x7366('0x3c')]?_0x14531c[_0x7366('0x39')]:_0x1c3e4d[_0x7366('0x38')];_0x14531c[_0x7366('0x4f')]=qs[_0x7366('0x3f')](_0x529aeb['query'][_0x7366('0x3f')]);_0x14531c['where']=qs[_0x7366('0x37')](_['pick'](_0x529aeb[_0x7366('0x35')],_0x1c3e4d['filters']));if(_0x529aeb[_0x7366('0x35')][_0x7366('0x4d')]){_0x14531c['where']=_[_0x7366('0x42')](_0x14531c[_0x7366('0x41')],{'$or':_['map'](_0x14531c['attributes'],function(_0x394367){var _0x1821e1={};_0x1821e1[_0x394367]={'$like':'%'+_0x529aeb['query'][_0x7366('0x4d')]+'%'};return _0x1821e1;})});}_0x14531c=_['merge']({},_0x14531c,_0x529aeb[_0x7366('0x43')]);return _0x26bc28['getDescriptions'](_0x14531c);}})['then'](function(_0x45a50f){if(_0x45a50f){_0x57a5da=_0x45a50f[_0x7366('0x3c')];if(!_0x529aeb[_0x7366('0x35')]['hasOwnProperty'](_0x7366('0x3e'))){_0x14531c[_0x7366('0x22')]=qs[_0x7366('0x22')](_0x529aeb['query'][_0x7366('0x22')]);_0x14531c[_0x7366('0x20')]=qs[_0x7366('0x20')](_0x529aeb[_0x7366('0x35')][_0x7366('0x20')]);}return _0x26bc28[_0x7366('0x51')](_0x14531c);}})['then'](function(_0x29e2ec){if(_0x29e2ec){return _0x29e2ec?{'count':_0x57a5da,'rows':_0x29e2ec}:null;}})[_0x7366('0x2b')](respondWithResult(_0x546b90,null))[_0x7366('0x46')](handleError(_0x546b90,null));};
\ No newline at end of file
index c3ada3a..2fdc94f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5eaa=['define','int_vtiger_configurations','lodash','../../config/logger','api','bluebird','path','rimraf','../../config/environment','./intVtigerConfiguration.attributes','exports'];(function(_0x37e845,_0x219f9f){var _0x59e55b=function(_0x5dc6c8){while(--_0x5dc6c8){_0x37e845['push'](_0x37e845['shift']());}};_0x59e55b(++_0x219f9f);}(_0x5eaa,0x1c5));var _0xa5ea=function(_0x1151ec,_0x4576b9){_0x1151ec=_0x1151ec-0x0;var _0xce4b78=_0x5eaa[_0x1151ec];return _0xce4b78;};'use strict';var _=require(_0xa5ea('0x0'));var util=require('util');var logger=require(_0xa5ea('0x1'))(_0xa5ea('0x2'));var moment=require('moment');var BPromise=require(_0xa5ea('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xa5ea('0x4'));var rimraf=require(_0xa5ea('0x5'));var config=require(_0xa5ea('0x6'));var attributes=require(_0xa5ea('0x7'));module[_0xa5ea('0x8')]=function(_0x5e63c1,_0x12c558){return _0x5e63c1[_0xa5ea('0x9')]('VtigerConfiguration',attributes,{'tableName':_0xa5ea('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xcac3=['lodash','util','api','bluebird','request-promise','path','rimraf','./intVtigerConfiguration.attributes','exports','VtigerConfiguration','int_vtiger_configurations'];(function(_0x5f48d4,_0x1bedc6){var _0x463662=function(_0x1673ed){while(--_0x1673ed){_0x5f48d4['push'](_0x5f48d4['shift']());}};_0x463662(++_0x1bedc6);}(_0xcac3,0x8f));var _0x3cac=function(_0x1613d9,_0x2f583e){_0x1613d9=_0x1613d9-0x0;var _0x1ab5e0=_0xcac3[_0x1613d9];return _0x1ab5e0;};'use strict';var _=require(_0x3cac('0x0'));var util=require(_0x3cac('0x1'));var logger=require('../../config/logger')(_0x3cac('0x2'));var moment=require('moment');var BPromise=require(_0x3cac('0x3'));var rp=require(_0x3cac('0x4'));var fs=require('fs');var path=require(_0x3cac('0x5'));var rimraf=require(_0x3cac('0x6'));var config=require('../../config/environment');var attributes=require(_0x3cac('0x7'));module[_0x3cac('0x8')]=function(_0x4bad88,_0x316a73){return _0x4bad88['define'](_0x3cac('0x9'),attributes,{'tableName':_0x3cac('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index be5c275..d31dfd8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae56=['then','info','VtigerConfiguration,\x20%s,\x20%s','request\x20sent','debug','VtigerConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','jayson/promise','http','request'];(function(_0x5a885b,_0x25eba0){var _0x5c8823=function(_0x59a3e3){while(--_0x59a3e3){_0x5a885b['push'](_0x5a885b['shift']());}};_0x5c8823(++_0x25eba0);}(_0xae56,0x165));var _0x6ae5=function(_0x3dfdae,_0x5c9fb9){_0x3dfdae=_0x3dfdae-0x0;var _0xd2373b=_0xae56[_0x3dfdae];return _0xd2373b;};'use strict';var _=require(_0x6ae5('0x0'));var util=require(_0x6ae5('0x1'));var moment=require(_0x6ae5('0x2'));var BPromise=require(_0x6ae5('0x3'));var rs=require(_0x6ae5('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6ae5('0x5'))['db'];var utils=require(_0x6ae5('0x6'));var logger=require('../../config/logger')(_0x6ae5('0x7'));var config=require('../../config/environment');var jayson=require(_0x6ae5('0x8'));var client=jayson['client'][_0x6ae5('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x258dad,_0x39ca94,_0x50d568){return new BPromise(function(_0x5ebeea,_0x3e32f4){return client[_0x6ae5('0xa')](_0x258dad,_0x50d568)[_0x6ae5('0xb')](function(_0x2ba9f3){logger[_0x6ae5('0xc')](_0x6ae5('0xd'),_0x39ca94,_0x6ae5('0xe'));logger[_0x6ae5('0xf')](_0x6ae5('0x10'),_0x39ca94,_0x6ae5('0xe'),JSON[_0x6ae5('0x11')](_0x2ba9f3));if(_0x2ba9f3[_0x6ae5('0x12')]){if(_0x2ba9f3['error'][_0x6ae5('0x13')]===0x1f4){logger[_0x6ae5('0x12')](_0x6ae5('0xd'),_0x39ca94,_0x2ba9f3['error'][_0x6ae5('0x14')]);return _0x3e32f4(_0x2ba9f3[_0x6ae5('0x12')]['message']);}logger[_0x6ae5('0x12')](_0x6ae5('0xd'),_0x39ca94,_0x2ba9f3[_0x6ae5('0x12')][_0x6ae5('0x14')]);return _0x5ebeea(_0x2ba9f3['error'][_0x6ae5('0x14')]);}else{logger[_0x6ae5('0xc')](_0x6ae5('0xd'),_0x39ca94,_0x6ae5('0xe'));_0x5ebeea(_0x2ba9f3[_0x6ae5('0x15')]['message']);}})[_0x6ae5('0x16')](function(_0x154afe){logger[_0x6ae5('0x12')](_0x6ae5('0xd'),_0x39ca94,_0x154afe);_0x3e32f4(_0x154afe);});});}
\ No newline at end of file
+var _0x0bbb=['result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','VtigerConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','VtigerConfiguration,\x20%s,\x20%s','message'];(function(_0x9c2427,_0x17c865){var _0x51984f=function(_0x177af6){while(--_0x177af6){_0x9c2427['push'](_0x9c2427['shift']());}};_0x51984f(++_0x17c865);}(_0x0bbb,0x66));var _0xb0bb=function(_0x29af75,_0x152b87){_0x29af75=_0x29af75-0x0;var _0x32b56b=_0x0bbb[_0x29af75];return _0x32b56b;};'use strict';var _=require(_0xb0bb('0x0'));var util=require(_0xb0bb('0x1'));var moment=require(_0xb0bb('0x2'));var BPromise=require(_0xb0bb('0x3'));var rs=require(_0xb0bb('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb0bb('0x5'))['db'];var utils=require(_0xb0bb('0x6'));var logger=require(_0xb0bb('0x7'))(_0xb0bb('0x8'));var config=require(_0xb0bb('0x9'));var jayson=require(_0xb0bb('0xa'));var client=jayson[_0xb0bb('0xb')][_0xb0bb('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x2410e8,_0x2e310d,_0x2f64e2){return new BPromise(function(_0x3bc6cb,_0x1a4c56){return client[_0xb0bb('0xd')](_0x2410e8,_0x2f64e2)[_0xb0bb('0xe')](function(_0x52a252){logger[_0xb0bb('0xf')]('VtigerConfiguration,\x20%s,\x20%s',_0x2e310d,_0xb0bb('0x10'));logger[_0xb0bb('0x11')](_0xb0bb('0x12'),_0x2e310d,_0xb0bb('0x10'),JSON[_0xb0bb('0x13')](_0x52a252));if(_0x52a252[_0xb0bb('0x14')]){if(_0x52a252[_0xb0bb('0x14')]['code']===0x1f4){logger['error'](_0xb0bb('0x15'),_0x2e310d,_0x52a252['error']['message']);return _0x1a4c56(_0x52a252[_0xb0bb('0x14')][_0xb0bb('0x16')]);}logger[_0xb0bb('0x14')](_0xb0bb('0x15'),_0x2e310d,_0x52a252['error'][_0xb0bb('0x16')]);return _0x3bc6cb(_0x52a252[_0xb0bb('0x14')][_0xb0bb('0x16')]);}else{logger[_0xb0bb('0xf')](_0xb0bb('0x15'),_0x2e310d,_0xb0bb('0x10'));_0x3bc6cb(_0x52a252[_0xb0bb('0x17')]['message']);}})[_0xb0bb('0x18')](function(_0x94c350){logger[_0xb0bb('0x14')]('VtigerConfiguration,\x20%s,\x20%s',_0x2e310d,_0x94c350);_0x1a4c56(_0x94c350);});});}
\ No newline at end of file
index e02d52c..48deaf2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1328=['show','post','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intVtigerField.controller','get','isAuthenticated','index','/:id'];(function(_0x2914c7,_0x1ae194){var _0x485e84=function(_0x5a71f3){while(--_0x5a71f3){_0x2914c7['push'](_0x2914c7['shift']());}};_0x485e84(++_0x1ae194);}(_0x1328,0xf9));var _0x8132=function(_0x1cd47d,_0x55bc75){_0x1cd47d=_0x1cd47d-0x0;var _0x29d52f=_0x1328[_0x1cd47d];return _0x29d52f;};'use strict';var multer=require(_0x8132('0x0'));var util=require(_0x8132('0x1'));var path=require(_0x8132('0x2'));var timeout=require(_0x8132('0x3'));var express=require(_0x8132('0x4'));var router=express[_0x8132('0x5')]();var fs_extra=require(_0x8132('0x6'));var auth=require(_0x8132('0x7'));var interaction=require(_0x8132('0x8'));var config=require(_0x8132('0x9'));var controller=require(_0x8132('0xa'));router[_0x8132('0xb')]('/',auth[_0x8132('0xc')](),controller[_0x8132('0xd')]);router[_0x8132('0xb')](_0x8132('0xe'),auth[_0x8132('0xc')](),controller[_0x8132('0xf')]);router[_0x8132('0x10')]('/',auth['isAuthenticated'](),controller['create']);router[_0x8132('0x11')]('/:id',auth[_0x8132('0xc')](),controller[_0x8132('0x12')]);router[_0x8132('0x13')]('/:id',auth[_0x8132('0xc')](),controller[_0x8132('0x14')]);module[_0x8132('0x15')]=router;
\ No newline at end of file
+var _0x537a=['path','express','Router','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','show','post','put','delete','/:id','exports','util'];(function(_0x23954f,_0x392b8c){var _0x2994d0=function(_0x4f83f3){while(--_0x4f83f3){_0x23954f['push'](_0x23954f['shift']());}};_0x2994d0(++_0x392b8c);}(_0x537a,0x10d));var _0xa537=function(_0x4e7ed3,_0x4a50e5){_0x4e7ed3=_0x4e7ed3-0x0;var _0x32247e=_0x537a[_0x4e7ed3];return _0x32247e;};'use strict';var multer=require('multer');var util=require(_0xa537('0x0'));var path=require(_0xa537('0x1'));var timeout=require('connect-timeout');var express=require(_0xa537('0x2'));var router=express[_0xa537('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xa537('0x4'));var config=require(_0xa537('0x5'));var controller=require('./intVtigerField.controller');router[_0xa537('0x6')]('/',auth[_0xa537('0x7')](),controller[_0xa537('0x8')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0xa537('0x9')]);router[_0xa537('0xa')]('/',auth[_0xa537('0x7')](),controller['create']);router[_0xa537('0xb')]('/:id',auth[_0xa537('0x7')](),controller['update']);router[_0xa537('0xc')](_0xa537('0xd'),auth[_0xa537('0x7')](),controller['destroy']);module[_0xa537('0xe')]=router;
\ No newline at end of file
index 1b698dd..084545f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x132a=['STRING','ENUM','string','variable','customVariable','keyValue','picklist'];(function(_0x221f12,_0x544366){var _0x21964d=function(_0x7063ac){while(--_0x7063ac){_0x221f12['push'](_0x221f12['shift']());}};_0x21964d(++_0x544366);}(_0x132a,0x64));var _0xa132=function(_0x273ef0,_0x1a40d7){_0x273ef0=_0x273ef0-0x0;var _0x50f42e=_0x132a[_0x273ef0];return _0x50f42e;};'use strict';var Sequelize=require('sequelize');module['exports']={'type':{'type':Sequelize['ENUM'](_0xa132('0x0'),_0xa132('0x1'),_0xa132('0x2'),_0xa132('0x3'),_0xa132('0x4')),'defaultValue':_0xa132('0x0')},'content':{'type':Sequelize[_0xa132('0x5')]},'key':{'type':Sequelize[_0xa132('0x5')]},'keyType':{'type':Sequelize[_0xa132('0x6')](_0xa132('0x0'),_0xa132('0x1'),_0xa132('0x2'))},'keyContent':{'type':Sequelize[_0xa132('0x5')]},'idField':{'type':Sequelize[_0xa132('0x5')]},'nameField':{'type':Sequelize[_0xa132('0x5')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x39c3=['sequelize','exports','ENUM','customVariable','picklist','string','STRING','BOOLEAN'];(function(_0x33c637,_0x597c26){var _0x14aa20=function(_0x32a8b5){while(--_0x32a8b5){_0x33c637['push'](_0x33c637['shift']());}};_0x14aa20(++_0x597c26);}(_0x39c3,0x68));var _0x339c=function(_0x438fe1,_0x3308d5){_0x438fe1=_0x438fe1-0x0;var _0x3c8e1b=_0x39c3[_0x438fe1];return _0x3c8e1b;};'use strict';var Sequelize=require(_0x339c('0x0'));module[_0x339c('0x1')]={'type':{'type':Sequelize[_0x339c('0x2')]('string','variable',_0x339c('0x3'),'keyValue',_0x339c('0x4')),'defaultValue':_0x339c('0x5')},'content':{'type':Sequelize[_0x339c('0x6')]},'key':{'type':Sequelize[_0x339c('0x6')]},'keyType':{'type':Sequelize[_0x339c('0x2')](_0x339c('0x5'),'variable','customVariable')},'keyContent':{'type':Sequelize[_0x339c('0x6')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0x339c('0x6')]},'customField':{'type':Sequelize[_0x339c('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x339c('0x6')]}};
\ No newline at end of file
index 94533fa..e253fac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba9a=['../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','save','update','then','destroy','error','stack','name','send','index','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','include','VtigerField','findAll','rows','params','includeAll','find','create','body','catch','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware'];(function(_0x35a72a,_0x57cbcf){var _0x2ac359=function(_0x30cc41){while(--_0x30cc41){_0x35a72a['push'](_0x35a72a['shift']());}};_0x2ac359(++_0x57cbcf);}(_0xba9a,0xd7));var _0xaba9=function(_0x20c996,_0xdda3d5){_0x20c996=_0x20c996-0x0;var _0x53051f=_0xba9a[_0x20c996];return _0x53051f;};'use strict';var emlformat=require(_0xaba9('0x0'));var rimraf=require(_0xaba9('0x1'));var zipdir=require(_0xaba9('0x2'));var jsonpatch=require(_0xaba9('0x3'));var rp=require(_0xaba9('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xaba9('0x5'));var util=require(_0xaba9('0x6'));var path=require(_0xaba9('0x7'));var sox=require(_0xaba9('0x8'));var csv=require(_0xaba9('0x9'));var ejs=require(_0xaba9('0xa'));var fs=require('fs');var fs_extra=require(_0xaba9('0xb'));var _=require(_0xaba9('0xc'));var squel=require('squel');var crypto=require(_0xaba9('0xd'));var jsforce=require(_0xaba9('0xe'));var deskjs=require(_0xaba9('0xf'));var toCsv=require('to-csv');var querystring=require(_0xaba9('0x10'));var Papa=require('papaparse');var Redis=require(_0xaba9('0x11'));var authService=require(_0xaba9('0x12'));var qs=require(_0xaba9('0x13'));var as=require(_0xaba9('0x14'));var hardwareService=require(_0xaba9('0x15'));var logger=require(_0xaba9('0x16'))(_0xaba9('0x17'));var utils=require('../../config/utils');var config=require(_0xaba9('0x18'));var licenseUtil=require(_0xaba9('0x19'));var db=require(_0xaba9('0x1a'))['db'];function respondWithStatusCode(_0x634e8d,_0x1fce55){_0x1fce55=_0x1fce55||0xcc;return function(_0x26ebaf){if(_0x26ebaf){return _0x634e8d[_0xaba9('0x1b')](_0x1fce55);}return _0x634e8d[_0xaba9('0x1c')](_0x1fce55)[_0xaba9('0x1d')]();};}function respondWithResult(_0x3d7441,_0x5a21c7){_0x5a21c7=_0x5a21c7||0xc8;return function(_0x27297f){if(_0x27297f){return _0x3d7441[_0xaba9('0x1c')](_0x5a21c7)[_0xaba9('0x1e')](_0x27297f);}};}function respondWithFilteredResult(_0x505554,_0x39ef2c){return function(_0x3dee70){if(_0x3dee70){var _0x408a14=typeof _0x39ef2c[_0xaba9('0x1f')]==='undefined'&&typeof _0x39ef2c[_0xaba9('0x20')]===_0xaba9('0x21');var _0xebc1ba=_0x3dee70[_0xaba9('0x22')];var _0x5c2340=_0x408a14?0x0:_0x39ef2c['offset'];var _0x517942=_0x408a14?_0x3dee70[_0xaba9('0x22')]:_0x39ef2c[_0xaba9('0x1f')]+_0x39ef2c['limit'];var _0x1bf191;if(_0x517942>=_0xebc1ba){_0x517942=_0xebc1ba;_0x1bf191=0xc8;}else{_0x1bf191=0xce;}_0x505554['status'](_0x1bf191);return _0x505554[_0xaba9('0x23')](_0xaba9('0x24'),_0x5c2340+'-'+_0x517942+'/'+_0xebc1ba)['json'](_0x3dee70);}return null;};}function patchUpdates(_0x4435ae){return function(_0x25b04){try{jsonpatch[_0xaba9('0x25')](_0x25b04,_0x4435ae,!![]);}catch(_0x5ed79d){return BPromise['reject'](_0x5ed79d);}return _0x25b04[_0xaba9('0x26')]();};}function saveUpdates(_0x5d20fd,_0x1a10b6){return function(_0x4a0bef){if(_0x4a0bef){return _0x4a0bef[_0xaba9('0x27')](_0x5d20fd)[_0xaba9('0x28')](function(_0xf04369){return _0xf04369;});}return null;};}function removeEntity(_0x165f75,_0x100306){return function(_0x3d2b1b){if(_0x3d2b1b){return _0x3d2b1b[_0xaba9('0x29')]()[_0xaba9('0x28')](function(){_0x165f75[_0xaba9('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x345d2a,_0x1ec62e){return function(_0xecd6f){if(!_0xecd6f){_0x345d2a[_0xaba9('0x1b')](0x194);}return _0xecd6f;};}function handleError(_0x4076b0,_0x245aa4){_0x245aa4=_0x245aa4||0x1f4;return function(_0x51b060){logger[_0xaba9('0x2a')](_0x51b060[_0xaba9('0x2b')]);if(_0x51b060[_0xaba9('0x2c')]){delete _0x51b060[_0xaba9('0x2c')];}_0x4076b0['status'](_0x245aa4)[_0xaba9('0x2d')](_0x51b060);};}exports[_0xaba9('0x2e')]=function(_0x367ac3,_0xf6d4de){var _0x15942e={},_0x407ad7={},_0x1c5fed={'count':0x0,'rows':[]};var _0x28eeab=_['map'](db['VtigerField'][_0xaba9('0x2f')],function(_0x344459){return{'name':_0x344459[_0xaba9('0x30')],'type':_0x344459[_0xaba9('0x31')][_0xaba9('0x32')]};});_0x407ad7[_0xaba9('0x33')]=_[_0xaba9('0x34')](_0x28eeab,'name');_0x407ad7[_0xaba9('0x35')]=_[_0xaba9('0x36')](_0x367ac3['query']);_0x407ad7[_0xaba9('0x37')]=_[_0xaba9('0x38')](_0x407ad7[_0xaba9('0x33')],_0x407ad7[_0xaba9('0x35')]);_0x15942e[_0xaba9('0x39')]=_[_0xaba9('0x38')](_0x407ad7[_0xaba9('0x33')],qs[_0xaba9('0x3a')](_0x367ac3[_0xaba9('0x35')]['fields']));_0x15942e[_0xaba9('0x39')]=_0x15942e[_0xaba9('0x39')][_0xaba9('0x3b')]?_0x15942e[_0xaba9('0x39')]:_0x407ad7[_0xaba9('0x33')];if(!_0x367ac3['query']['hasOwnProperty'](_0xaba9('0x3c'))){_0x15942e[_0xaba9('0x20')]=qs[_0xaba9('0x20')](_0x367ac3[_0xaba9('0x35')][_0xaba9('0x20')]);_0x15942e[_0xaba9('0x1f')]=qs['offset'](_0x367ac3[_0xaba9('0x35')][_0xaba9('0x1f')]);}_0x15942e[_0xaba9('0x3d')]=qs['sort'](_0x367ac3[_0xaba9('0x35')][_0xaba9('0x3e')]);_0x15942e[_0xaba9('0x3f')]=qs['filters'](_[_0xaba9('0x40')](_0x367ac3[_0xaba9('0x35')],_0x407ad7[_0xaba9('0x37')]),_0x28eeab);if(_0x367ac3[_0xaba9('0x35')][_0xaba9('0x41')]){_0x15942e[_0xaba9('0x3f')]=_['merge'](_0x15942e['where'],{'$or':_['map'](_0x28eeab,function(_0x201928){if(_0x201928[_0xaba9('0x31')]!==_0xaba9('0x42')){var _0x3cf0e9={};_0x3cf0e9[_0x201928['name']]={'$like':'%'+_0x367ac3[_0xaba9('0x35')][_0xaba9('0x41')]+'%'};return _0x3cf0e9;}})});}_0x15942e=_[_0xaba9('0x43')]({},_0x15942e,_0x367ac3[_0xaba9('0x44')]);var _0x2ce4af={'where':_0x15942e[_0xaba9('0x3f')]};return db['VtigerField']['count'](_0x2ce4af)[_0xaba9('0x28')](function(_0x590485){_0x1c5fed['count']=_0x590485;if(_0x367ac3[_0xaba9('0x35')]['includeAll']){_0x15942e[_0xaba9('0x45')]=[{'all':!![]}];}return db[_0xaba9('0x46')][_0xaba9('0x47')](_0x15942e);})[_0xaba9('0x28')](function(_0x52479d){_0x1c5fed[_0xaba9('0x48')]=_0x52479d;return _0x1c5fed;})[_0xaba9('0x28')](respondWithFilteredResult(_0xf6d4de,_0x15942e))['catch'](handleError(_0xf6d4de,null));};exports['show']=function(_0x47771d,_0x11a27c){var _0x369b4c={'raw':!![],'where':{'id':_0x47771d[_0xaba9('0x49')]['id']}},_0x5f30d2={};_0x5f30d2[_0xaba9('0x33')]=_[_0xaba9('0x36')](db[_0xaba9('0x46')][_0xaba9('0x2f')]);_0x5f30d2[_0xaba9('0x35')]=_['keys'](_0x47771d['query']);_0x5f30d2[_0xaba9('0x37')]=_[_0xaba9('0x38')](_0x5f30d2['model'],_0x5f30d2[_0xaba9('0x35')]);_0x369b4c[_0xaba9('0x39')]=_[_0xaba9('0x38')](_0x5f30d2[_0xaba9('0x33')],qs[_0xaba9('0x3a')](_0x47771d[_0xaba9('0x35')][_0xaba9('0x3a')]));_0x369b4c[_0xaba9('0x39')]=_0x369b4c['attributes'][_0xaba9('0x3b')]?_0x369b4c['attributes']:_0x5f30d2[_0xaba9('0x33')];if(_0x47771d[_0xaba9('0x35')][_0xaba9('0x4a')]){_0x369b4c[_0xaba9('0x45')]=[{'all':!![]}];}_0x369b4c=_[_0xaba9('0x43')]({},_0x369b4c,_0x47771d[_0xaba9('0x44')]);return db[_0xaba9('0x46')][_0xaba9('0x4b')](_0x369b4c)[_0xaba9('0x28')](handleEntityNotFound(_0x11a27c,null))[_0xaba9('0x28')](respondWithResult(_0x11a27c,null))['catch'](handleError(_0x11a27c,null));};exports[_0xaba9('0x4c')]=function(_0x4620fa,_0xf74256){return db['VtigerField'][_0xaba9('0x4c')](_0x4620fa[_0xaba9('0x4d')],{})[_0xaba9('0x28')](respondWithResult(_0xf74256,0xc9))[_0xaba9('0x4e')](handleError(_0xf74256,null));};exports[_0xaba9('0x27')]=function(_0x542406,_0x1b3c1e){if(_0x542406[_0xaba9('0x4d')]['id']){delete _0x542406['body']['id'];}return db[_0xaba9('0x46')][_0xaba9('0x4b')]({'where':{'id':_0x542406['params']['id']}})[_0xaba9('0x28')](handleEntityNotFound(_0x1b3c1e,null))[_0xaba9('0x28')](saveUpdates(_0x542406[_0xaba9('0x4d')],null))['then'](respondWithResult(_0x1b3c1e,null))['catch'](handleError(_0x1b3c1e,null));};exports[_0xaba9('0x29')]=function(_0x1605ca,_0x5492c5){return db['VtigerField'][_0xaba9('0x4b')]({'where':{'id':_0x1605ca[_0xaba9('0x49')]['id']}})[_0xaba9('0x28')](handleEntityNotFound(_0x5492c5,null))[_0xaba9('0x28')](removeEntity(_0x5492c5,null))[_0xaba9('0x4e')](handleError(_0x5492c5,null));};
\ No newline at end of file
+var _0xc14b=['fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','offset','count','limit','set','json','save','update','then','destroy','error','stack','name','index','map','VtigerField','rawAttributes','type','key','model','keys','filters','intersection','attributes','query','length','hasOwnProperty','order','sort','where','pick','filter','merge','options','includeAll','include','rows','catch','show','params','fields','find','create','body','eml-format','rimraf'];(function(_0x441d72,_0x42addc){var _0xfc9d6f=function(_0x15d3ef){while(--_0x15d3ef){_0x441d72['push'](_0x441d72['shift']());}};_0xfc9d6f(++_0x42addc);}(_0xc14b,0x161));var _0xbc14=function(_0x3a6930,_0x1d329e){_0x3a6930=_0x3a6930-0x0;var _0x9ebbe8=_0xc14b[_0x3a6930];return _0x9ebbe8;};'use strict';var emlformat=require(_0xbc14('0x0'));var rimraf=require(_0xbc14('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xbc14('0x2'));var rp=require(_0xbc14('0x3'));var moment=require(_0xbc14('0x4'));var BPromise=require(_0xbc14('0x5'));var Mustache=require(_0xbc14('0x6'));var util=require(_0xbc14('0x7'));var path=require(_0xbc14('0x8'));var sox=require(_0xbc14('0x9'));var csv=require(_0xbc14('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xbc14('0xb'));var _=require(_0xbc14('0xc'));var squel=require(_0xbc14('0xd'));var crypto=require(_0xbc14('0xe'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xbc14('0xa'));var querystring=require(_0xbc14('0xf'));var Papa=require(_0xbc14('0x10'));var Redis=require('ioredis');var authService=require(_0xbc14('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xbc14('0x12'));var hardwareService=require(_0xbc14('0x13'));var logger=require(_0xbc14('0x14'))(_0xbc14('0x15'));var utils=require(_0xbc14('0x16'));var config=require(_0xbc14('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xbc14('0x18'))['db'];function respondWithStatusCode(_0x5ee300,_0x304dcd){_0x304dcd=_0x304dcd||0xcc;return function(_0x33045a){if(_0x33045a){return _0x5ee300[_0xbc14('0x19')](_0x304dcd);}return _0x5ee300[_0xbc14('0x1a')](_0x304dcd)[_0xbc14('0x1b')]();};}function respondWithResult(_0x3e099a,_0x40a18a){_0x40a18a=_0x40a18a||0xc8;return function(_0x5c248b){if(_0x5c248b){return _0x3e099a[_0xbc14('0x1a')](_0x40a18a)['json'](_0x5c248b);}};}function respondWithFilteredResult(_0x4f3ae9,_0x2d4066){return function(_0x4dee85){if(_0x4dee85){var _0x4fae67=typeof _0x2d4066[_0xbc14('0x1c')]==='undefined'&&typeof _0x2d4066['limit']==='undefined';var _0x5aa8b2=_0x4dee85[_0xbc14('0x1d')];var _0x35b6dd=_0x4fae67?0x0:_0x2d4066[_0xbc14('0x1c')];var _0x5e318b=_0x4fae67?_0x4dee85[_0xbc14('0x1d')]:_0x2d4066['offset']+_0x2d4066[_0xbc14('0x1e')];var _0x51f1dd;if(_0x5e318b>=_0x5aa8b2){_0x5e318b=_0x5aa8b2;_0x51f1dd=0xc8;}else{_0x51f1dd=0xce;}_0x4f3ae9[_0xbc14('0x1a')](_0x51f1dd);return _0x4f3ae9[_0xbc14('0x1f')]('Content-Range',_0x35b6dd+'-'+_0x5e318b+'/'+_0x5aa8b2)[_0xbc14('0x20')](_0x4dee85);}return null;};}function patchUpdates(_0x458eb7){return function(_0x5a20c5){try{jsonpatch['apply'](_0x5a20c5,_0x458eb7,!![]);}catch(_0x261a97){return BPromise['reject'](_0x261a97);}return _0x5a20c5[_0xbc14('0x21')]();};}function saveUpdates(_0x20fa10,_0x1c0674){return function(_0xcd4b78){if(_0xcd4b78){return _0xcd4b78[_0xbc14('0x22')](_0x20fa10)[_0xbc14('0x23')](function(_0x5d9a13){return _0x5d9a13;});}return null;};}function removeEntity(_0x17da28,_0x2cfd02){return function(_0x11542c){if(_0x11542c){return _0x11542c[_0xbc14('0x24')]()[_0xbc14('0x23')](function(){_0x17da28[_0xbc14('0x1a')](0xcc)[_0xbc14('0x1b')]();});}};}function handleEntityNotFound(_0x4a0157,_0x18a9cc){return function(_0x1e94e9){if(!_0x1e94e9){_0x4a0157[_0xbc14('0x19')](0x194);}return _0x1e94e9;};}function handleError(_0x40a443,_0x44d786){_0x44d786=_0x44d786||0x1f4;return function(_0x2fe888){logger[_0xbc14('0x25')](_0x2fe888[_0xbc14('0x26')]);if(_0x2fe888[_0xbc14('0x27')]){delete _0x2fe888[_0xbc14('0x27')];}_0x40a443[_0xbc14('0x1a')](_0x44d786)['send'](_0x2fe888);};}exports[_0xbc14('0x28')]=function(_0x3cbb04,_0x4313f5){var _0x2aa396={},_0x17439c={},_0x8c4d8f={'count':0x0,'rows':[]};var _0x49369b=_[_0xbc14('0x29')](db[_0xbc14('0x2a')][_0xbc14('0x2b')],function(_0x12ab09){return{'name':_0x12ab09['fieldName'],'type':_0x12ab09[_0xbc14('0x2c')][_0xbc14('0x2d')]};});_0x17439c[_0xbc14('0x2e')]=_[_0xbc14('0x29')](_0x49369b,_0xbc14('0x27'));_0x17439c['query']=_[_0xbc14('0x2f')](_0x3cbb04['query']);_0x17439c[_0xbc14('0x30')]=_[_0xbc14('0x31')](_0x17439c['model'],_0x17439c['query']);_0x2aa396[_0xbc14('0x32')]=_[_0xbc14('0x31')](_0x17439c[_0xbc14('0x2e')],qs['fields'](_0x3cbb04[_0xbc14('0x33')]['fields']));_0x2aa396[_0xbc14('0x32')]=_0x2aa396[_0xbc14('0x32')][_0xbc14('0x34')]?_0x2aa396[_0xbc14('0x32')]:_0x17439c['model'];if(!_0x3cbb04['query'][_0xbc14('0x35')]('nolimit')){_0x2aa396['limit']=qs[_0xbc14('0x1e')](_0x3cbb04[_0xbc14('0x33')]['limit']);_0x2aa396[_0xbc14('0x1c')]=qs[_0xbc14('0x1c')](_0x3cbb04[_0xbc14('0x33')][_0xbc14('0x1c')]);}_0x2aa396[_0xbc14('0x36')]=qs[_0xbc14('0x37')](_0x3cbb04['query'][_0xbc14('0x37')]);_0x2aa396[_0xbc14('0x38')]=qs[_0xbc14('0x30')](_[_0xbc14('0x39')](_0x3cbb04[_0xbc14('0x33')],_0x17439c['filters']),_0x49369b);if(_0x3cbb04[_0xbc14('0x33')][_0xbc14('0x3a')]){_0x2aa396[_0xbc14('0x38')]=_['merge'](_0x2aa396[_0xbc14('0x38')],{'$or':_[_0xbc14('0x29')](_0x49369b,function(_0x3a7f68){if(_0x3a7f68[_0xbc14('0x2c')]!=='VIRTUAL'){var _0x2ce6e0={};_0x2ce6e0[_0x3a7f68[_0xbc14('0x27')]]={'$like':'%'+_0x3cbb04['query'][_0xbc14('0x3a')]+'%'};return _0x2ce6e0;}})});}_0x2aa396=_[_0xbc14('0x3b')]({},_0x2aa396,_0x3cbb04[_0xbc14('0x3c')]);var _0x5b83db={'where':_0x2aa396[_0xbc14('0x38')]};return db[_0xbc14('0x2a')][_0xbc14('0x1d')](_0x5b83db)[_0xbc14('0x23')](function(_0x2f3489){_0x8c4d8f[_0xbc14('0x1d')]=_0x2f3489;if(_0x3cbb04[_0xbc14('0x33')][_0xbc14('0x3d')]){_0x2aa396[_0xbc14('0x3e')]=[{'all':!![]}];}return db['VtigerField']['findAll'](_0x2aa396);})['then'](function(_0x116105){_0x8c4d8f[_0xbc14('0x3f')]=_0x116105;return _0x8c4d8f;})[_0xbc14('0x23')](respondWithFilteredResult(_0x4313f5,_0x2aa396))[_0xbc14('0x40')](handleError(_0x4313f5,null));};exports[_0xbc14('0x41')]=function(_0x246642,_0x3574bd){var _0x496ce1={'raw':!![],'where':{'id':_0x246642[_0xbc14('0x42')]['id']}},_0x20548f={};_0x20548f[_0xbc14('0x2e')]=_[_0xbc14('0x2f')](db[_0xbc14('0x2a')][_0xbc14('0x2b')]);_0x20548f['query']=_[_0xbc14('0x2f')](_0x246642['query']);_0x20548f[_0xbc14('0x30')]=_[_0xbc14('0x31')](_0x20548f['model'],_0x20548f[_0xbc14('0x33')]);_0x496ce1[_0xbc14('0x32')]=_[_0xbc14('0x31')](_0x20548f[_0xbc14('0x2e')],qs['fields'](_0x246642[_0xbc14('0x33')][_0xbc14('0x43')]));_0x496ce1[_0xbc14('0x32')]=_0x496ce1[_0xbc14('0x32')][_0xbc14('0x34')]?_0x496ce1[_0xbc14('0x32')]:_0x20548f['model'];if(_0x246642[_0xbc14('0x33')][_0xbc14('0x3d')]){_0x496ce1[_0xbc14('0x3e')]=[{'all':!![]}];}_0x496ce1=_['merge']({},_0x496ce1,_0x246642['options']);return db['VtigerField'][_0xbc14('0x44')](_0x496ce1)[_0xbc14('0x23')](handleEntityNotFound(_0x3574bd,null))['then'](respondWithResult(_0x3574bd,null))['catch'](handleError(_0x3574bd,null));};exports[_0xbc14('0x45')]=function(_0x92391b,_0xa594a7){return db[_0xbc14('0x2a')][_0xbc14('0x45')](_0x92391b[_0xbc14('0x46')],{})[_0xbc14('0x23')](respondWithResult(_0xa594a7,0xc9))['catch'](handleError(_0xa594a7,null));};exports[_0xbc14('0x22')]=function(_0xfd58f6,_0x32e11c){if(_0xfd58f6[_0xbc14('0x46')]['id']){delete _0xfd58f6[_0xbc14('0x46')]['id'];}return db[_0xbc14('0x2a')][_0xbc14('0x44')]({'where':{'id':_0xfd58f6[_0xbc14('0x42')]['id']}})[_0xbc14('0x23')](handleEntityNotFound(_0x32e11c,null))[_0xbc14('0x23')](saveUpdates(_0xfd58f6['body'],null))['then'](respondWithResult(_0x32e11c,null))['catch'](handleError(_0x32e11c,null));};exports[_0xbc14('0x24')]=function(_0x4b7a56,_0x39aaae){return db[_0xbc14('0x2a')]['find']({'where':{'id':_0x4b7a56[_0xbc14('0x42')]['id']}})[_0xbc14('0x23')](handleEntityNotFound(_0x39aaae,null))[_0xbc14('0x23')](removeEntity(_0x39aaae,null))[_0xbc14('0x40')](handleError(_0x39aaae,null));};
\ No newline at end of file
index ca7f5a0..6663aca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x096d=['vtiger_unique_index','idField','FieldId','util','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intVtigerField.attributes','define','VtigerField','int_vtiger_fields'];(function(_0x525c7b,_0x488fcc){var _0x27b33e=function(_0x56d43b){while(--_0x56d43b){_0x525c7b['push'](_0x525c7b['shift']());}};_0x27b33e(++_0x488fcc);}(_0x096d,0x199));var _0xd096=function(_0x48f9d2,_0x33ba0d){_0x48f9d2=_0x48f9d2-0x0;var _0x5228da=_0x096d[_0x48f9d2];return _0x5228da;};'use strict';var _=require('lodash');var util=require(_0xd096('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0xd096('0x1'));var BPromise=require(_0xd096('0x2'));var rp=require(_0xd096('0x3'));var fs=require('fs');var path=require(_0xd096('0x4'));var rimraf=require(_0xd096('0x5'));var config=require(_0xd096('0x6'));var attributes=require(_0xd096('0x7'));module['exports']=function(_0xbb8bac,_0x293d7d){return _0xbb8bac[_0xd096('0x8')](_0xd096('0x9'),attributes,{'tableName':_0xd096('0xa'),'paranoid':![],'indexes':[{'name':_0xd096('0xb'),'fields':[_0xd096('0xc'),_0xd096('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x3bea=['vtiger_unique_index','idField','lodash','util','../../config/logger','moment','bluebird','request-promise','rimraf','./intVtigerField.attributes','exports','define'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0x3bea,0x86));var _0xa3be=function(_0x278e3c,_0x1c9cfd){_0x278e3c=_0x278e3c-0x0;var _0x3e2d9b=_0x3bea[_0x278e3c];return _0x3e2d9b;};'use strict';var _=require(_0xa3be('0x0'));var util=require(_0xa3be('0x1'));var logger=require(_0xa3be('0x2'))('api');var moment=require(_0xa3be('0x3'));var BPromise=require(_0xa3be('0x4'));var rp=require(_0xa3be('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xa3be('0x6'));var config=require('../../config/environment');var attributes=require(_0xa3be('0x7'));module[_0xa3be('0x8')]=function(_0x2c8958,_0x17b48b){return _0x2c8958[_0xa3be('0x9')]('VtigerField',attributes,{'tableName':'int_vtiger_fields','paranoid':![],'indexes':[{'name':_0xa3be('0xa'),'fields':[_0xa3be('0xb'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 1cc8c0c..0dfb31e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e26=['ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','VtigerField,\x20%s,\x20%s','debug','VtigerField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','lodash','util','randomstring'];(function(_0x2f7137,_0x31e5bc){var _0x1097c9=function(_0x663205){while(--_0x663205){_0x2f7137['push'](_0x2f7137['shift']());}};_0x1097c9(++_0x31e5bc);}(_0x8e26,0x184));var _0x68e2=function(_0x4baf93,_0x57e399){_0x4baf93=_0x4baf93-0x0;var _0x3fc492=_0x8e26[_0x4baf93];return _0x3fc492;};'use strict';var _=require(_0x68e2('0x0'));var util=require(_0x68e2('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x68e2('0x2'));var fs=require('fs');var Redis=require(_0x68e2('0x3'));var db=require(_0x68e2('0x4'))['db'];var utils=require(_0x68e2('0x5'));var logger=require(_0x68e2('0x6'))('rpc');var config=require(_0x68e2('0x7'));var jayson=require(_0x68e2('0x8'));var client=jayson[_0x68e2('0x9')][_0x68e2('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2e21c5,_0x2ce1b5,_0xfe1ea3){return new BPromise(function(_0xa346d6,_0x17218e){return client[_0x68e2('0xb')](_0x2e21c5,_0xfe1ea3)[_0x68e2('0xc')](function(_0x454fb0){logger[_0x68e2('0xd')](_0x68e2('0xe'),_0x2ce1b5,'request\x20sent');logger[_0x68e2('0xf')](_0x68e2('0x10'),_0x2ce1b5,_0x68e2('0x11'),JSON[_0x68e2('0x12')](_0x454fb0));if(_0x454fb0[_0x68e2('0x13')]){if(_0x454fb0['error']['code']===0x1f4){logger[_0x68e2('0x13')]('VtigerField,\x20%s,\x20%s',_0x2ce1b5,_0x454fb0['error']['message']);return _0x17218e(_0x454fb0[_0x68e2('0x13')][_0x68e2('0x14')]);}logger[_0x68e2('0x13')](_0x68e2('0xe'),_0x2ce1b5,_0x454fb0[_0x68e2('0x13')][_0x68e2('0x14')]);return _0xa346d6(_0x454fb0[_0x68e2('0x13')][_0x68e2('0x14')]);}else{logger['info'](_0x68e2('0xe'),_0x2ce1b5,_0x68e2('0x11'));_0xa346d6(_0x454fb0[_0x68e2('0x15')][_0x68e2('0x14')]);}})[_0x68e2('0x16')](function(_0x1dcc6f){logger[_0x68e2('0x13')]('VtigerField,\x20%s,\x20%s',_0x2ce1b5,_0x1dcc6f);_0x17218e(_0x1dcc6f);});});}
\ No newline at end of file
+var _0x92d7=['error','message','result','catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/logger','../../config/environment','client','request','then','info','VtigerField,\x20%s,\x20%s','debug','request\x20sent','stringify'];(function(_0x2f5ac5,_0x1ee939){var _0x37c9a8=function(_0x15031f){while(--_0x15031f){_0x2f5ac5['push'](_0x2f5ac5['shift']());}};_0x37c9a8(++_0x1ee939);}(_0x92d7,0x147));var _0x792d=function(_0x4a2369,_0x55d943){_0x4a2369=_0x4a2369-0x0;var _0x2d14a5=_0x92d7[_0x4a2369];return _0x2d14a5;};'use strict';var _=require(_0x792d('0x0'));var util=require('util');var moment=require(_0x792d('0x1'));var BPromise=require(_0x792d('0x2'));var rs=require(_0x792d('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x792d('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x792d('0x5'))('rpc');var config=require(_0x792d('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x792d('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x214327,_0x2bcb1c,_0x1cd54c){return new BPromise(function(_0x358a3b,_0x5ab96a){return client[_0x792d('0x8')](_0x214327,_0x1cd54c)[_0x792d('0x9')](function(_0x1d35af){logger[_0x792d('0xa')](_0x792d('0xb'),_0x2bcb1c,'request\x20sent');logger[_0x792d('0xc')]('VtigerField,\x20%s,\x20%s,\x20%s',_0x2bcb1c,_0x792d('0xd'),JSON[_0x792d('0xe')](_0x1d35af));if(_0x1d35af[_0x792d('0xf')]){if(_0x1d35af['error']['code']===0x1f4){logger['error']('VtigerField,\x20%s,\x20%s',_0x2bcb1c,_0x1d35af[_0x792d('0xf')][_0x792d('0x10')]);return _0x5ab96a(_0x1d35af[_0x792d('0xf')][_0x792d('0x10')]);}logger['error'](_0x792d('0xb'),_0x2bcb1c,_0x1d35af['error'][_0x792d('0x10')]);return _0x358a3b(_0x1d35af['error'][_0x792d('0x10')]);}else{logger[_0x792d('0xa')]('VtigerField,\x20%s,\x20%s',_0x2bcb1c,_0x792d('0xd'));_0x358a3b(_0x1d35af[_0x792d('0x11')]['message']);}})[_0x792d('0x12')](function(_0x4c053f){logger[_0x792d('0xf')]('VtigerField,\x20%s,\x20%s',_0x2bcb1c,_0x4c053f);_0x5ab96a(_0x4c053f);});});}
\ No newline at end of file
index 0ac1cc1..49023f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3338=['post','create','put','update','delete','/:id','destroy','exports','multer','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZendeskAccount.controller','get','isAuthenticated','index','/:id/configurations','getConfigurations','/:id/fields','getFields'];(function(_0x465595,_0x49dffa){var _0x4701ec=function(_0x53cf16){while(--_0x53cf16){_0x465595['push'](_0x465595['shift']());}};_0x4701ec(++_0x49dffa);}(_0x3338,0xb0));var _0x8333=function(_0x49ab20,_0x204482){_0x49ab20=_0x49ab20-0x0;var _0x3c10b4=_0x3338[_0x49ab20];return _0x3c10b4;};'use strict';var multer=require(_0x8333('0x0'));var util=require(_0x8333('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x8333('0x2'));var router=express[_0x8333('0x3')]();var fs_extra=require(_0x8333('0x4'));var auth=require(_0x8333('0x5'));var interaction=require(_0x8333('0x6'));var config=require(_0x8333('0x7'));var controller=require(_0x8333('0x8'));router[_0x8333('0x9')]('/',auth[_0x8333('0xa')](),controller[_0x8333('0xb')]);router[_0x8333('0x9')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0x8333('0x9')](_0x8333('0xc'),auth['isAuthenticated'](),controller[_0x8333('0xd')]);router[_0x8333('0x9')](_0x8333('0xe'),auth['isAuthenticated'](),controller[_0x8333('0xf')]);router[_0x8333('0x10')]('/',auth[_0x8333('0xa')](),controller[_0x8333('0x11')]);router[_0x8333('0x10')](_0x8333('0xc'),auth[_0x8333('0xa')](),controller['addConfiguration']);router[_0x8333('0x12')]('/:id',auth[_0x8333('0xa')](),controller[_0x8333('0x13')]);router[_0x8333('0x14')](_0x8333('0x15'),auth[_0x8333('0xa')](),controller[_0x8333('0x16')]);module[_0x8333('0x17')]=router;
\ No newline at end of file
+var _0x1892=['post','addConfiguration','put','update','exports','multer','util','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','/:id','/:id/configurations','isAuthenticated','/:id/fields','getFields'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1892,0x1a3));var _0x2189=function(_0x1a2266,_0x590313){_0x1a2266=_0x1a2266-0x0;var _0xe00c65=_0x1892[_0x1a2266];return _0xe00c65;};'use strict';var multer=require(_0x2189('0x0'));var util=require(_0x2189('0x1'));var path=require('path');var timeout=require(_0x2189('0x2'));var express=require('express');var router=express[_0x2189('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x2189('0x4'));var interaction=require(_0x2189('0x5'));var config=require(_0x2189('0x6'));var controller=require('./intZendeskAccount.controller');router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x2189('0x7')](_0x2189('0x8'),auth['isAuthenticated'](),controller['show']);router[_0x2189('0x7')](_0x2189('0x9'),auth[_0x2189('0xa')](),controller['getConfigurations']);router[_0x2189('0x7')](_0x2189('0xb'),auth[_0x2189('0xa')](),controller[_0x2189('0xc')]);router['post']('/',auth[_0x2189('0xa')](),controller['create']);router[_0x2189('0xd')](_0x2189('0x9'),auth['isAuthenticated'](),controller[_0x2189('0xe')]);router[_0x2189('0xf')](_0x2189('0x8'),auth[_0x2189('0xa')](),controller[_0x2189('0x10')]);router['delete'](_0x2189('0x8'),auth[_0x2189('0xa')](),controller['destroy']);module[_0x2189('0x11')]=router;
\ No newline at end of file
index a7c9702..2b80dcc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x53ec=['username','remoteUri','ENUM','token','newTab','integrationTab','sequelize','exports','STRING'];(function(_0x2d7eee,_0x3ec8b1){var _0x4231e1=function(_0x6ca897){while(--_0x6ca897){_0x2d7eee['push'](_0x2d7eee['shift']());}};_0x4231e1(++_0x3ec8b1);}(_0x53ec,0x192));var _0xc53e=function(_0x43a5c7,_0x2286bf){_0x43a5c7=_0x43a5c7-0x0;var _0x3b12a2=_0x53ec[_0x43a5c7];return _0x3b12a2;};'use strict';var Sequelize=require(_0xc53e('0x0'));module[_0xc53e('0x1')]={'name':{'type':Sequelize[_0xc53e('0x2')]},'description':{'type':Sequelize[_0xc53e('0x2')]},'username':{'type':Sequelize[_0xc53e('0x2')],'unique':_0xc53e('0x3')},'password':{'type':Sequelize['STRING']},'token':{'type':Sequelize[_0xc53e('0x2')]},'remoteUri':{'type':Sequelize['STRING'],'unique':_0xc53e('0x4')},'authType':{'type':Sequelize[_0xc53e('0x5')]('password',_0xc53e('0x6')),'defaultValue':'password'},'serverUrl':{'type':Sequelize[_0xc53e('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0xc53e('0x5')]('integrationTab',_0xc53e('0x7')),'defaultValue':_0xc53e('0x8')}};
\ No newline at end of file
+var _0xaa37=['exports','STRING','username','remoteUri','ENUM','password','integrationTab','newTab','sequelize'];(function(_0x82b0a1,_0x5aa20a){var _0x25b782=function(_0x2693b5){while(--_0x2693b5){_0x82b0a1['push'](_0x82b0a1['shift']());}};_0x25b782(++_0x5aa20a);}(_0xaa37,0x1d3));var _0x7aa3=function(_0x618414,_0x1a7a60){_0x618414=_0x618414-0x0;var _0x21c19a=_0xaa37[_0x618414];return _0x21c19a;};'use strict';var Sequelize=require(_0x7aa3('0x0'));module[_0x7aa3('0x1')]={'name':{'type':Sequelize[_0x7aa3('0x2')]},'description':{'type':Sequelize[_0x7aa3('0x2')]},'username':{'type':Sequelize['STRING'],'unique':_0x7aa3('0x3')},'password':{'type':Sequelize[_0x7aa3('0x2')]},'token':{'type':Sequelize[_0x7aa3('0x2')]},'remoteUri':{'type':Sequelize[_0x7aa3('0x2')],'unique':_0x7aa3('0x4')},'authType':{'type':Sequelize[_0x7aa3('0x5')](_0x7aa3('0x6'),'token'),'defaultValue':_0x7aa3('0x6')},'serverUrl':{'type':Sequelize[_0x7aa3('0x2')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x7aa3('0x7'),_0x7aa3('0x8')),'defaultValue':_0x7aa3('0x7')}};
\ No newline at end of file
index 8e99025..72520df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x878f=['username','password','token','authType','remoteUri','substring','lastIndexOf','GET','format','%s/%s','ticket_fields','Basic\x20%s','%s:%s','toString','headers','%s/token:%s','base64','Sequelize','ValidationError','subject','description','group','assignee','includes','position','title','system_field_options','test','getFields,\x20%s,\x20%s,\x20%s','getFields','stringify','statusCode','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','lodash','squel','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','end','json','offset','undefined','limit','count','status','Content-Range','apply','reject','save','update','then','error','name','send','index','ZendeskAccount','type','model','map','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','params','filters','catch','create','body','destroy','getConfigurations','findOne','ZendeskConfiguration','addConfiguration','getSubjects','channel','Descriptions','getDescriptions','ZendeskField','Subjects'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x878f,0x173));var _0xf878=function(_0xea24a9,_0x277e0c){_0xea24a9=_0xea24a9-0x0;var _0x555612=_0x878f[_0xea24a9];return _0x555612;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xf878('0x0'));var zipdir=require(_0xf878('0x1'));var jsonpatch=require(_0xf878('0x2'));var rp=require(_0xf878('0x3'));var moment=require(_0xf878('0x4'));var BPromise=require(_0xf878('0x5'));var Mustache=require(_0xf878('0x6'));var util=require(_0xf878('0x7'));var path=require(_0xf878('0x8'));var sox=require(_0xf878('0x9'));var csv=require(_0xf878('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf878('0xb'));var squel=require(_0xf878('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xf878('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xf878('0xd'));var authService=require(_0xf878('0xe'));var qs=require(_0xf878('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xf878('0x10'));var logger=require(_0xf878('0x11'))('api');var utils=require(_0xf878('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0xf878('0x13'));var db=require(_0xf878('0x14'))['db'];var integrations=require(_0xf878('0x15'));function respondWithStatusCode(_0x596fb5,_0x1ce004){_0x1ce004=_0x1ce004||0xcc;return function(_0x38eddf){if(_0x38eddf){return _0x596fb5[_0xf878('0x16')](_0x1ce004);}return _0x596fb5['status'](_0x1ce004)[_0xf878('0x17')]();};}function respondWithResult(_0x3902f7,_0x119e9e){_0x119e9e=_0x119e9e||0xc8;return function(_0x492260){if(_0x492260){return _0x3902f7['status'](_0x119e9e)[_0xf878('0x18')](_0x492260);}};}function respondWithFilteredResult(_0x35ff2d,_0x31d888){return function(_0x6dbeca){if(_0x6dbeca){var _0x44aacc=typeof _0x31d888[_0xf878('0x19')]===_0xf878('0x1a')&&typeof _0x31d888[_0xf878('0x1b')]===_0xf878('0x1a');var _0x3a55f3=_0x6dbeca[_0xf878('0x1c')];var _0x47a91a=_0x44aacc?0x0:_0x31d888[_0xf878('0x19')];var _0x34ae59=_0x44aacc?_0x6dbeca[_0xf878('0x1c')]:_0x31d888[_0xf878('0x19')]+_0x31d888[_0xf878('0x1b')];var _0x237d15;if(_0x34ae59>=_0x3a55f3){_0x34ae59=_0x3a55f3;_0x237d15=0xc8;}else{_0x237d15=0xce;}_0x35ff2d[_0xf878('0x1d')](_0x237d15);return _0x35ff2d['set'](_0xf878('0x1e'),_0x47a91a+'-'+_0x34ae59+'/'+_0x3a55f3)[_0xf878('0x18')](_0x6dbeca);}return null;};}function patchUpdates(_0x250f85){return function(_0x59efcb){try{jsonpatch[_0xf878('0x1f')](_0x59efcb,_0x250f85,!![]);}catch(_0x23590c){return BPromise[_0xf878('0x20')](_0x23590c);}return _0x59efcb[_0xf878('0x21')]();};}function saveUpdates(_0x22d884,_0x442450){return function(_0x1cbc92){if(_0x1cbc92){return _0x1cbc92[_0xf878('0x22')](_0x22d884)[_0xf878('0x23')](function(_0x1a6506){return _0x1a6506;});}return null;};}function removeEntity(_0x45e61f,_0x566995){return function(_0x2ac38b){if(_0x2ac38b){return _0x2ac38b['destroy']()[_0xf878('0x23')](function(){_0x45e61f[_0xf878('0x1d')](0xcc)[_0xf878('0x17')]();});}};}function handleEntityNotFound(_0x280036,_0x20449e){return function(_0x5ebaa0){if(!_0x5ebaa0){_0x280036['sendStatus'](0x194);}return _0x5ebaa0;};}function handleError(_0x59ba7b,_0x242926){_0x242926=_0x242926||0x1f4;return function(_0x3baba4){logger[_0xf878('0x24')](_0x3baba4['stack']);if(_0x3baba4[_0xf878('0x25')]){delete _0x3baba4[_0xf878('0x25')];}_0x59ba7b[_0xf878('0x1d')](_0x242926)[_0xf878('0x26')](_0x3baba4);};}exports[_0xf878('0x27')]=function(_0x5aff46,_0x502322){var _0x9a127d={},_0x5d9c97={},_0x4a0286={'count':0x0,'rows':[]};var _0x31e2e1=_['map'](db[_0xf878('0x28')]['rawAttributes'],function(_0x2c61c1){return{'name':_0x2c61c1['fieldName'],'type':_0x2c61c1[_0xf878('0x29')]['key']};});_0x5d9c97[_0xf878('0x2a')]=_[_0xf878('0x2b')](_0x31e2e1,_0xf878('0x25'));_0x5d9c97[_0xf878('0x2c')]=_[_0xf878('0x2d')](_0x5aff46[_0xf878('0x2c')]);_0x5d9c97['filters']=_[_0xf878('0x2e')](_0x5d9c97[_0xf878('0x2a')],_0x5d9c97[_0xf878('0x2c')]);_0x9a127d[_0xf878('0x2f')]=_[_0xf878('0x2e')](_0x5d9c97['model'],qs[_0xf878('0x30')](_0x5aff46[_0xf878('0x2c')]['fields']));_0x9a127d[_0xf878('0x2f')]=_0x9a127d[_0xf878('0x2f')][_0xf878('0x31')]?_0x9a127d[_0xf878('0x2f')]:_0x5d9c97[_0xf878('0x2a')];if(!_0x5aff46['query'][_0xf878('0x32')](_0xf878('0x33'))){_0x9a127d[_0xf878('0x1b')]=qs[_0xf878('0x1b')](_0x5aff46['query'][_0xf878('0x1b')]);_0x9a127d['offset']=qs['offset'](_0x5aff46[_0xf878('0x2c')][_0xf878('0x19')]);}_0x9a127d[_0xf878('0x34')]=qs[_0xf878('0x35')](_0x5aff46[_0xf878('0x2c')]['sort']);_0x9a127d[_0xf878('0x36')]=qs['filters'](_[_0xf878('0x37')](_0x5aff46[_0xf878('0x2c')],_0x5d9c97['filters']),_0x31e2e1);if(_0x5aff46[_0xf878('0x2c')][_0xf878('0x38')]){_0x9a127d['where']=_[_0xf878('0x39')](_0x9a127d[_0xf878('0x36')],{'$or':_['map'](_0x31e2e1,function(_0x4129c2){if(_0x4129c2[_0xf878('0x29')]!==_0xf878('0x3a')){var _0xc8eb91={};_0xc8eb91[_0x4129c2[_0xf878('0x25')]]={'$like':'%'+_0x5aff46[_0xf878('0x2c')][_0xf878('0x38')]+'%'};return _0xc8eb91;}})});}_0x9a127d=_['merge']({},_0x9a127d,_0x5aff46[_0xf878('0x3b')]);var _0x14340d={'where':_0x9a127d['where']};return db[_0xf878('0x28')]['count'](_0x14340d)['then'](function(_0x2ec109){_0x4a0286[_0xf878('0x1c')]=_0x2ec109;if(_0x5aff46[_0xf878('0x2c')][_0xf878('0x3c')]){_0x9a127d[_0xf878('0x3d')]=[{'all':!![]}];}return db['ZendeskAccount'][_0xf878('0x3e')](_0x9a127d);})['then'](function(_0xb09736){_0x4a0286[_0xf878('0x3f')]=_0xb09736;return _0x4a0286;})['then'](respondWithFilteredResult(_0x502322,_0x9a127d))['catch'](handleError(_0x502322,null));};exports[_0xf878('0x40')]=function(_0x2a66c1,_0x13fcd3){var _0x2f6ee5={'raw':![],'where':{'id':_0x2a66c1[_0xf878('0x41')]['id']}},_0x5d6e03={};_0x5d6e03[_0xf878('0x2a')]=_[_0xf878('0x2d')](db[_0xf878('0x28')]['rawAttributes']);_0x5d6e03[_0xf878('0x2c')]=_[_0xf878('0x2d')](_0x2a66c1[_0xf878('0x2c')]);_0x5d6e03[_0xf878('0x42')]=_[_0xf878('0x2e')](_0x5d6e03[_0xf878('0x2a')],_0x5d6e03['query']);_0x2f6ee5[_0xf878('0x2f')]=_[_0xf878('0x2e')](_0x5d6e03[_0xf878('0x2a')],qs[_0xf878('0x30')](_0x2a66c1[_0xf878('0x2c')]['fields']));_0x2f6ee5[_0xf878('0x2f')]=_0x2f6ee5[_0xf878('0x2f')][_0xf878('0x31')]?_0x2f6ee5[_0xf878('0x2f')]:_0x5d6e03['model'];if(_0x2a66c1[_0xf878('0x2c')][_0xf878('0x3c')]){_0x2f6ee5[_0xf878('0x3d')]=[{'all':!![]}];}_0x2f6ee5=_['merge']({},_0x2f6ee5,_0x2a66c1['options']);return db[_0xf878('0x28')]['find'](_0x2f6ee5)['then'](handleEntityNotFound(_0x13fcd3,null))['then'](respondWithResult(_0x13fcd3,null))[_0xf878('0x43')](handleError(_0x13fcd3,null));};exports['create']=function(_0x156fdb,_0x450a10){return db[_0xf878('0x28')][_0xf878('0x44')](_0x156fdb[_0xf878('0x45')],{})[_0xf878('0x23')](respondWithResult(_0x450a10,0xc9))[_0xf878('0x43')](handleError(_0x450a10,null));};exports['update']=function(_0xb0bf4c,_0x361ac8){if(_0xb0bf4c[_0xf878('0x45')]['id']){delete _0xb0bf4c[_0xf878('0x45')]['id'];}return db[_0xf878('0x28')]['find']({'where':{'id':_0xb0bf4c['params']['id']}})[_0xf878('0x23')](handleEntityNotFound(_0x361ac8,null))[_0xf878('0x23')](saveUpdates(_0xb0bf4c['body'],null))[_0xf878('0x23')](respondWithResult(_0x361ac8,null))['catch'](handleError(_0x361ac8,null));};exports[_0xf878('0x46')]=function(_0x31adde,_0x379912){return db[_0xf878('0x28')]['find']({'where':{'id':_0x31adde[_0xf878('0x41')]['id']}})[_0xf878('0x23')](handleEntityNotFound(_0x379912,null))[_0xf878('0x23')](removeEntity(_0x379912,null))['catch'](handleError(_0x379912,null));};exports[_0xf878('0x47')]=function(_0x30df05,_0x1d3427,_0x28c393){var _0x53e3c3={};var _0x112f2a={};var _0x181f09;var _0x3f9fce;return db['ZendeskAccount'][_0xf878('0x48')]({'where':{'id':_0x30df05[_0xf878('0x41')]['id']}})[_0xf878('0x23')](handleEntityNotFound(_0x1d3427,null))[_0xf878('0x23')](function(_0x5118f4){if(_0x5118f4){_0x181f09=_0x5118f4;_0x112f2a['model']=_['keys'](db[_0xf878('0x49')]['rawAttributes']);_0x112f2a['query']=_['keys'](_0x30df05[_0xf878('0x2c')]);_0x112f2a[_0xf878('0x42')]=_['intersection'](_0x112f2a[_0xf878('0x2a')],_0x112f2a[_0xf878('0x2c')]);_0x53e3c3[_0xf878('0x2f')]=_['intersection'](_0x112f2a['model'],qs[_0xf878('0x30')](_0x30df05['query'][_0xf878('0x30')]));_0x53e3c3[_0xf878('0x2f')]=_0x53e3c3[_0xf878('0x2f')][_0xf878('0x31')]?_0x53e3c3[_0xf878('0x2f')]:_0x112f2a[_0xf878('0x2a')];_0x53e3c3['order']=qs[_0xf878('0x35')](_0x30df05[_0xf878('0x2c')]['sort']);_0x53e3c3[_0xf878('0x36')]=qs[_0xf878('0x42')](_[_0xf878('0x37')](_0x30df05[_0xf878('0x2c')],_0x112f2a[_0xf878('0x42')]));if(_0x30df05[_0xf878('0x2c')][_0xf878('0x38')]){_0x53e3c3['where']=_[_0xf878('0x39')](_0x53e3c3[_0xf878('0x36')],{'$or':_[_0xf878('0x2b')](_0x53e3c3['attributes'],function(_0x392242){var _0x560e0b={};_0x560e0b[_0x392242]={'$like':'%'+_0x30df05[_0xf878('0x2c')][_0xf878('0x38')]+'%'};return _0x560e0b;})});}_0x53e3c3=_[_0xf878('0x39')]({},_0x53e3c3,_0x30df05[_0xf878('0x3b')]);return _0x181f09[_0xf878('0x47')](_0x53e3c3);}})[_0xf878('0x23')](function(_0x1141dd){if(_0x1141dd){_0x3f9fce=_0x1141dd[_0xf878('0x31')];if(!_0x30df05[_0xf878('0x2c')][_0xf878('0x32')]('nolimit')){_0x53e3c3['limit']=qs['limit'](_0x30df05[_0xf878('0x2c')]['limit']);_0x53e3c3[_0xf878('0x19')]=qs[_0xf878('0x19')](_0x30df05['query']['offset']);}return _0x181f09[_0xf878('0x47')](_0x53e3c3);}})[_0xf878('0x23')](function(_0x3340c1){if(_0x3340c1){return _0x3340c1?{'count':_0x3f9fce,'rows':_0x3340c1}:null;}})[_0xf878('0x23')](respondWithResult(_0x1d3427,null))[_0xf878('0x43')](handleError(_0x1d3427,null));};exports[_0xf878('0x4a')]=function(_0x3e78fc,_0x302258,_0x1602ed){if(_0x3e78fc[_0xf878('0x45')]['id']){delete _0x3e78fc[_0xf878('0x45')]['id'];}return db[_0xf878('0x28')][_0xf878('0x48')]({'where':{'id':_0x3e78fc[_0xf878('0x41')]['id']}})[_0xf878('0x23')](handleEntityNotFound(_0x302258,null))[_0xf878('0x23')](function(_0x1254dd){if(_0x1254dd){_0x3e78fc[_0xf878('0x45')]['AccountId']=_0x1254dd['id'];_0x3e78fc[_0xf878('0x45')]['Subjects']=integrations[_0xf878('0x4b')](_0x3e78fc[_0xf878('0x45')][_0xf878('0x4c')],_0x3e78fc[_0xf878('0x45')][_0xf878('0x29')]);_0x3e78fc[_0xf878('0x45')][_0xf878('0x4d')]=integrations[_0xf878('0x4e')](_0x3e78fc[_0xf878('0x45')]['channel'],_0x3e78fc[_0xf878('0x45')][_0xf878('0x29')]);return db[_0xf878('0x49')][_0xf878('0x44')](_0x3e78fc['body'],{'include':[{'model':db[_0xf878('0x4f')],'as':_0xf878('0x50')},{'model':db[_0xf878('0x4f')],'as':_0xf878('0x4d')}]});}return null;})[_0xf878('0x23')](respondWithResult(_0x302258,null))['catch'](handleError(_0x302258,null));};exports['getFields']=function(_0x453644,_0x1b0230,_0x193f6c){var _0x251613='';return db[_0xf878('0x28')][_0xf878('0x48')]({'where':{'id':_0x453644[_0xf878('0x41')]['id']},'attributes':['id',_0xf878('0x51'),_0xf878('0x52'),_0xf878('0x53'),_0xf878('0x54'),_0xf878('0x55')]})[_0xf878('0x23')](handleEntityNotFound(_0x1b0230,null))[_0xf878('0x23')](function(_0x3bfd00){if(_0x3bfd00){_0x251613=_0x3bfd00[_0xf878('0x55')];var _0x153069=_0x251613['slice'](-0x1);if(_0x153069==='/'){_0x251613=_0x251613[_0xf878('0x56')](0x0,_0x251613[_0xf878('0x57')](_0x153069));}var _0x288235={'method':_0xf878('0x58'),'uri':util[_0xf878('0x59')](_0xf878('0x5a'),_0x251613,_0xf878('0x5b')),'json':!![]};switch(_0x3bfd00[_0xf878('0x54')]){case _0xf878('0x52'):_0x288235['headers']={'Authorization':util[_0xf878('0x59')](_0xf878('0x5c'),new Buffer(util[_0xf878('0x59')](_0xf878('0x5d'),_0x3bfd00[_0xf878('0x51')],_0x3bfd00[_0xf878('0x52')]))[_0xf878('0x5e')]('base64'))};break;case'token':_0x288235[_0xf878('0x5f')]={'Authorization':util['format'](_0xf878('0x5c'),new Buffer(util[_0xf878('0x59')](_0xf878('0x60'),_0x3bfd00[_0xf878('0x51')],_0x3bfd00['token']))[_0xf878('0x5e')](_0xf878('0x61')))};break;default:throw new db[(_0xf878('0x62'))][(_0xf878('0x63'))]('Unknown\x20authentication\x20type');}return rp(_0x288235);}})[_0xf878('0x23')](function(_0x565e8c){if(_0x565e8c){var _0x21537f=[_0xf878('0x64'),_0xf878('0x65'),_0xf878('0x66'),_0xf878('0x67')];_['remove'](_0x565e8c[_0xf878('0x5b')],function(_0x21c5d1){return _0x21537f[_0xf878('0x68')](_0x21c5d1[_0xf878('0x29')]);});return{'count':_0x565e8c['ticket_fields'][_0xf878('0x31')],'rows':_['map'](_0x565e8c[_0xf878('0x5b')],function(_0x107456){return{'id':_0x107456['id'],'name':_0x107456[_0xf878('0x69')]>0x7?_0x107456[_0xf878('0x6a')]:_0x107456[_0xf878('0x29')],'custom':_0x107456[_0xf878('0x69')]>0x7?!![]:![],'options':_0x107456[_0xf878('0x6b')]?_0x107456[_0xf878('0x6b')]:_0x107456['custom_field_options']?_0x107456['custom_field_options']:[]};})};}})['then'](respondWithResult(_0x1b0230,null))[_0xf878('0x43')](function(_0x1a9af7){var _0x497b7a=_0x453644['query'][_0xf878('0x6c')]?0x1f4:_0x1a9af7['statusCode']||0x1f4;logger[_0xf878('0x24')](_0xf878('0x6d'),_0xf878('0x6e'),_0x497b7a,JSON[_0xf878('0x6f')](_0x1a9af7));delete _0x1a9af7[_0xf878('0x25')];if(_0x497b7a===0x191){_0x497b7a=0x190;}_0x1b0230[_0xf878('0x1d')](_0x497b7a)[_0xf878('0x26')](_0x453644[_0xf878('0x2c')][_0xf878('0x6c')]?{'message':'Wrong\x20credentials','statusCode':_0x1a9af7[_0xf878('0x70')]}:_0x1a9af7);});};
\ No newline at end of file
+var _0x4024=['token','authType','remoteUri','substring','lastIndexOf','format','ticket_fields','headers','Basic\x20%s','%s:%s','base64','%s/token:%s','toString','ValidationError','Unknown\x20authentication\x20type','subject','description','group','assignee','includes','position','system_field_options','custom_field_options','test','statusCode','error','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','rimraf','fast-json-patch','request-promise','bluebird','util','path','ejs','fs-extra','lodash','crypto','to-csv','ioredis','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','update','then','destroy','stack','name','send','map','ZendeskAccount','rawAttributes','fieldName','type','key','model','query','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filters','filter','VIRTUAL','merge','includeAll','findAll','catch','params','keys','length','include','options','find','create','body','getConfigurations','findOne','ZendeskConfiguration','addConfiguration','Subjects','channel','getDescriptions','ZendeskField','getFields','username','password'];(function(_0x22334b,_0x4e7696){var _0x3a5b46=function(_0x326393){while(--_0x326393){_0x22334b['push'](_0x22334b['shift']());}};_0x3a5b46(++_0x4e7696);}(_0x4024,0x89));var _0x4402=function(_0x132709,_0x263cbc){_0x132709=_0x132709-0x0;var _0x2ac6f9=_0x4024[_0x132709];return _0x2ac6f9;};'use strict';var emlformat=require(_0x4402('0x0'));var rimraf=require(_0x4402('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x4402('0x2'));var rp=require(_0x4402('0x3'));var moment=require('moment');var BPromise=require(_0x4402('0x4'));var Mustache=require('mustache');var util=require(_0x4402('0x5'));var path=require(_0x4402('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x4402('0x7'));var fs=require('fs');var fs_extra=require(_0x4402('0x8'));var _=require(_0x4402('0x9'));var squel=require('squel');var crypto=require(_0x4402('0xa'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x4402('0xb'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x4402('0xc'));var authService=require('../../components/auth/service');var qs=require(_0x4402('0xd'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4402('0xe'));var logger=require('../../config/logger')(_0x4402('0xf'));var utils=require(_0x4402('0x10'));var config=require('../../config/environment');var licenseUtil=require(_0x4402('0x11'));var db=require(_0x4402('0x12'))['db'];var integrations=require(_0x4402('0x13'));function respondWithStatusCode(_0x4c9032,_0x7e4475){_0x7e4475=_0x7e4475||0xcc;return function(_0x34d952){if(_0x34d952){return _0x4c9032[_0x4402('0x14')](_0x7e4475);}return _0x4c9032[_0x4402('0x15')](_0x7e4475)[_0x4402('0x16')]();};}function respondWithResult(_0x31710c,_0x18c7a8){_0x18c7a8=_0x18c7a8||0xc8;return function(_0x3c7dd2){if(_0x3c7dd2){return _0x31710c[_0x4402('0x15')](_0x18c7a8)[_0x4402('0x17')](_0x3c7dd2);}};}function respondWithFilteredResult(_0x375166,_0xc03f65){return function(_0x2a2ce8){if(_0x2a2ce8){var _0x19fe7b=typeof _0xc03f65[_0x4402('0x18')]===_0x4402('0x19')&&typeof _0xc03f65[_0x4402('0x1a')]===_0x4402('0x19');var _0x186c22=_0x2a2ce8[_0x4402('0x1b')];var _0x5b127f=_0x19fe7b?0x0:_0xc03f65['offset'];var _0x663ab7=_0x19fe7b?_0x2a2ce8[_0x4402('0x1b')]:_0xc03f65['offset']+_0xc03f65[_0x4402('0x1a')];var _0x192855;if(_0x663ab7>=_0x186c22){_0x663ab7=_0x186c22;_0x192855=0xc8;}else{_0x192855=0xce;}_0x375166['status'](_0x192855);return _0x375166[_0x4402('0x1c')]('Content-Range',_0x5b127f+'-'+_0x663ab7+'/'+_0x186c22)['json'](_0x2a2ce8);}return null;};}function patchUpdates(_0x1b9599){return function(_0x46a1ad){try{jsonpatch[_0x4402('0x1d')](_0x46a1ad,_0x1b9599,!![]);}catch(_0x49bc21){return BPromise[_0x4402('0x1e')](_0x49bc21);}return _0x46a1ad['save']();};}function saveUpdates(_0x47ab54,_0x6f1f72){return function(_0x275c70){if(_0x275c70){return _0x275c70[_0x4402('0x1f')](_0x47ab54)[_0x4402('0x20')](function(_0x258d10){return _0x258d10;});}return null;};}function removeEntity(_0x2e6fee,_0x289a3e){return function(_0x6b1fc5){if(_0x6b1fc5){return _0x6b1fc5[_0x4402('0x21')]()['then'](function(){_0x2e6fee[_0x4402('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3733cd,_0x5ab28d){return function(_0x29f56b){if(!_0x29f56b){_0x3733cd[_0x4402('0x14')](0x194);}return _0x29f56b;};}function handleError(_0x5a43d0,_0x15c19f){_0x15c19f=_0x15c19f||0x1f4;return function(_0x4e9cb5){logger['error'](_0x4e9cb5[_0x4402('0x22')]);if(_0x4e9cb5[_0x4402('0x23')]){delete _0x4e9cb5[_0x4402('0x23')];}_0x5a43d0[_0x4402('0x15')](_0x15c19f)[_0x4402('0x24')](_0x4e9cb5);};}exports['index']=function(_0x41de44,_0x52e625){var _0x71da2f={},_0x1e2340={},_0x42dd32={'count':0x0,'rows':[]};var _0x48d20d=_[_0x4402('0x25')](db[_0x4402('0x26')][_0x4402('0x27')],function(_0x3f4bcb){return{'name':_0x3f4bcb[_0x4402('0x28')],'type':_0x3f4bcb[_0x4402('0x29')][_0x4402('0x2a')]};});_0x1e2340[_0x4402('0x2b')]=_[_0x4402('0x25')](_0x48d20d,_0x4402('0x23'));_0x1e2340[_0x4402('0x2c')]=_['keys'](_0x41de44[_0x4402('0x2c')]);_0x1e2340['filters']=_[_0x4402('0x2d')](_0x1e2340['model'],_0x1e2340[_0x4402('0x2c')]);_0x71da2f[_0x4402('0x2e')]=_[_0x4402('0x2d')](_0x1e2340[_0x4402('0x2b')],qs[_0x4402('0x2f')](_0x41de44['query'][_0x4402('0x2f')]));_0x71da2f[_0x4402('0x2e')]=_0x71da2f[_0x4402('0x2e')]['length']?_0x71da2f[_0x4402('0x2e')]:_0x1e2340[_0x4402('0x2b')];if(!_0x41de44['query'][_0x4402('0x30')](_0x4402('0x31'))){_0x71da2f[_0x4402('0x1a')]=qs[_0x4402('0x1a')](_0x41de44[_0x4402('0x2c')][_0x4402('0x1a')]);_0x71da2f[_0x4402('0x18')]=qs[_0x4402('0x18')](_0x41de44[_0x4402('0x2c')]['offset']);}_0x71da2f[_0x4402('0x32')]=qs[_0x4402('0x33')](_0x41de44[_0x4402('0x2c')]['sort']);_0x71da2f[_0x4402('0x34')]=qs[_0x4402('0x35')](_['pick'](_0x41de44['query'],_0x1e2340[_0x4402('0x35')]),_0x48d20d);if(_0x41de44[_0x4402('0x2c')][_0x4402('0x36')]){_0x71da2f[_0x4402('0x34')]=_['merge'](_0x71da2f['where'],{'$or':_['map'](_0x48d20d,function(_0x3a5e62){if(_0x3a5e62[_0x4402('0x29')]!==_0x4402('0x37')){var _0x3fd8ce={};_0x3fd8ce[_0x3a5e62['name']]={'$like':'%'+_0x41de44[_0x4402('0x2c')][_0x4402('0x36')]+'%'};return _0x3fd8ce;}})});}_0x71da2f=_[_0x4402('0x38')]({},_0x71da2f,_0x41de44['options']);var _0x2b92b7={'where':_0x71da2f['where']};return db[_0x4402('0x26')][_0x4402('0x1b')](_0x2b92b7)['then'](function(_0x16ef2e){_0x42dd32['count']=_0x16ef2e;if(_0x41de44[_0x4402('0x2c')][_0x4402('0x39')]){_0x71da2f['include']=[{'all':!![]}];}return db[_0x4402('0x26')][_0x4402('0x3a')](_0x71da2f);})[_0x4402('0x20')](function(_0x23c43a){_0x42dd32['rows']=_0x23c43a;return _0x42dd32;})['then'](respondWithFilteredResult(_0x52e625,_0x71da2f))[_0x4402('0x3b')](handleError(_0x52e625,null));};exports['show']=function(_0x3a589b,_0x2a6d78){var _0xb9cf85={'raw':![],'where':{'id':_0x3a589b[_0x4402('0x3c')]['id']}},_0x2e2391={};_0x2e2391[_0x4402('0x2b')]=_[_0x4402('0x3d')](db[_0x4402('0x26')][_0x4402('0x27')]);_0x2e2391[_0x4402('0x2c')]=_['keys'](_0x3a589b[_0x4402('0x2c')]);_0x2e2391[_0x4402('0x35')]=_['intersection'](_0x2e2391[_0x4402('0x2b')],_0x2e2391[_0x4402('0x2c')]);_0xb9cf85['attributes']=_[_0x4402('0x2d')](_0x2e2391[_0x4402('0x2b')],qs[_0x4402('0x2f')](_0x3a589b[_0x4402('0x2c')][_0x4402('0x2f')]));_0xb9cf85['attributes']=_0xb9cf85[_0x4402('0x2e')][_0x4402('0x3e')]?_0xb9cf85[_0x4402('0x2e')]:_0x2e2391[_0x4402('0x2b')];if(_0x3a589b[_0x4402('0x2c')][_0x4402('0x39')]){_0xb9cf85[_0x4402('0x3f')]=[{'all':!![]}];}_0xb9cf85=_[_0x4402('0x38')]({},_0xb9cf85,_0x3a589b[_0x4402('0x40')]);return db[_0x4402('0x26')][_0x4402('0x41')](_0xb9cf85)['then'](handleEntityNotFound(_0x2a6d78,null))[_0x4402('0x20')](respondWithResult(_0x2a6d78,null))['catch'](handleError(_0x2a6d78,null));};exports[_0x4402('0x42')]=function(_0x34ce00,_0x54e67a){return db[_0x4402('0x26')][_0x4402('0x42')](_0x34ce00[_0x4402('0x43')],{})[_0x4402('0x20')](respondWithResult(_0x54e67a,0xc9))[_0x4402('0x3b')](handleError(_0x54e67a,null));};exports[_0x4402('0x1f')]=function(_0x5b094b,_0xd0c9a5){if(_0x5b094b[_0x4402('0x43')]['id']){delete _0x5b094b[_0x4402('0x43')]['id'];}return db[_0x4402('0x26')][_0x4402('0x41')]({'where':{'id':_0x5b094b[_0x4402('0x3c')]['id']}})[_0x4402('0x20')](handleEntityNotFound(_0xd0c9a5,null))[_0x4402('0x20')](saveUpdates(_0x5b094b[_0x4402('0x43')],null))['then'](respondWithResult(_0xd0c9a5,null))['catch'](handleError(_0xd0c9a5,null));};exports['destroy']=function(_0x4c2d2e,_0x257010){return db[_0x4402('0x26')][_0x4402('0x41')]({'where':{'id':_0x4c2d2e[_0x4402('0x3c')]['id']}})['then'](handleEntityNotFound(_0x257010,null))[_0x4402('0x20')](removeEntity(_0x257010,null))[_0x4402('0x3b')](handleError(_0x257010,null));};exports[_0x4402('0x44')]=function(_0x2a4ea7,_0x196b2f,_0x352898){var _0x12f1fa={};var _0x53d306={};var _0x325b20;var _0x2a8085;return db[_0x4402('0x26')][_0x4402('0x45')]({'where':{'id':_0x2a4ea7[_0x4402('0x3c')]['id']}})[_0x4402('0x20')](handleEntityNotFound(_0x196b2f,null))['then'](function(_0xe8a8e9){if(_0xe8a8e9){_0x325b20=_0xe8a8e9;_0x53d306[_0x4402('0x2b')]=_[_0x4402('0x3d')](db[_0x4402('0x46')][_0x4402('0x27')]);_0x53d306[_0x4402('0x2c')]=_[_0x4402('0x3d')](_0x2a4ea7['query']);_0x53d306['filters']=_[_0x4402('0x2d')](_0x53d306[_0x4402('0x2b')],_0x53d306[_0x4402('0x2c')]);_0x12f1fa['attributes']=_['intersection'](_0x53d306[_0x4402('0x2b')],qs[_0x4402('0x2f')](_0x2a4ea7[_0x4402('0x2c')][_0x4402('0x2f')]));_0x12f1fa[_0x4402('0x2e')]=_0x12f1fa[_0x4402('0x2e')][_0x4402('0x3e')]?_0x12f1fa[_0x4402('0x2e')]:_0x53d306[_0x4402('0x2b')];_0x12f1fa[_0x4402('0x32')]=qs[_0x4402('0x33')](_0x2a4ea7[_0x4402('0x2c')][_0x4402('0x33')]);_0x12f1fa['where']=qs[_0x4402('0x35')](_['pick'](_0x2a4ea7[_0x4402('0x2c')],_0x53d306['filters']));if(_0x2a4ea7[_0x4402('0x2c')][_0x4402('0x36')]){_0x12f1fa[_0x4402('0x34')]=_[_0x4402('0x38')](_0x12f1fa[_0x4402('0x34')],{'$or':_[_0x4402('0x25')](_0x12f1fa['attributes'],function(_0xe425d0){var _0x25c1fc={};_0x25c1fc[_0xe425d0]={'$like':'%'+_0x2a4ea7[_0x4402('0x2c')][_0x4402('0x36')]+'%'};return _0x25c1fc;})});}_0x12f1fa=_[_0x4402('0x38')]({},_0x12f1fa,_0x2a4ea7['options']);return _0x325b20[_0x4402('0x44')](_0x12f1fa);}})[_0x4402('0x20')](function(_0x474b04){if(_0x474b04){_0x2a8085=_0x474b04[_0x4402('0x3e')];if(!_0x2a4ea7[_0x4402('0x2c')][_0x4402('0x30')](_0x4402('0x31'))){_0x12f1fa[_0x4402('0x1a')]=qs['limit'](_0x2a4ea7[_0x4402('0x2c')][_0x4402('0x1a')]);_0x12f1fa['offset']=qs[_0x4402('0x18')](_0x2a4ea7[_0x4402('0x2c')]['offset']);}return _0x325b20['getConfigurations'](_0x12f1fa);}})[_0x4402('0x20')](function(_0x1746c6){if(_0x1746c6){return _0x1746c6?{'count':_0x2a8085,'rows':_0x1746c6}:null;}})[_0x4402('0x20')](respondWithResult(_0x196b2f,null))['catch'](handleError(_0x196b2f,null));};exports[_0x4402('0x47')]=function(_0x12f3ac,_0x30e49b,_0x55f261){if(_0x12f3ac[_0x4402('0x43')]['id']){delete _0x12f3ac[_0x4402('0x43')]['id'];}return db[_0x4402('0x26')]['findOne']({'where':{'id':_0x12f3ac[_0x4402('0x3c')]['id']}})[_0x4402('0x20')](handleEntityNotFound(_0x30e49b,null))['then'](function(_0x5cef56){if(_0x5cef56){_0x12f3ac[_0x4402('0x43')]['AccountId']=_0x5cef56['id'];_0x12f3ac[_0x4402('0x43')][_0x4402('0x48')]=integrations['getSubjects'](_0x12f3ac['body'][_0x4402('0x49')],_0x12f3ac[_0x4402('0x43')][_0x4402('0x29')]);_0x12f3ac[_0x4402('0x43')]['Descriptions']=integrations[_0x4402('0x4a')](_0x12f3ac[_0x4402('0x43')][_0x4402('0x49')],_0x12f3ac[_0x4402('0x43')][_0x4402('0x29')]);return db[_0x4402('0x46')][_0x4402('0x42')](_0x12f3ac['body'],{'include':[{'model':db[_0x4402('0x4b')],'as':_0x4402('0x48')},{'model':db['ZendeskField'],'as':'Descriptions'}]});}return null;})[_0x4402('0x20')](respondWithResult(_0x30e49b,null))['catch'](handleError(_0x30e49b,null));};exports[_0x4402('0x4c')]=function(_0x586689,_0xc2ac06,_0x10b89a){var _0x22260b='';return db[_0x4402('0x26')][_0x4402('0x45')]({'where':{'id':_0x586689[_0x4402('0x3c')]['id']},'attributes':['id',_0x4402('0x4d'),_0x4402('0x4e'),_0x4402('0x4f'),_0x4402('0x50'),_0x4402('0x51')]})[_0x4402('0x20')](handleEntityNotFound(_0xc2ac06,null))[_0x4402('0x20')](function(_0xcf5c20){if(_0xcf5c20){_0x22260b=_0xcf5c20[_0x4402('0x51')];var _0x1d6af2=_0x22260b['slice'](-0x1);if(_0x1d6af2==='/'){_0x22260b=_0x22260b[_0x4402('0x52')](0x0,_0x22260b[_0x4402('0x53')](_0x1d6af2));}var _0xccb64f={'method':'GET','uri':util[_0x4402('0x54')]('%s/%s',_0x22260b,_0x4402('0x55')),'json':!![]};switch(_0xcf5c20[_0x4402('0x50')]){case _0x4402('0x4e'):_0xccb64f[_0x4402('0x56')]={'Authorization':util['format'](_0x4402('0x57'),new Buffer(util['format'](_0x4402('0x58'),_0xcf5c20[_0x4402('0x4d')],_0xcf5c20[_0x4402('0x4e')]))['toString'](_0x4402('0x59')))};break;case'token':_0xccb64f[_0x4402('0x56')]={'Authorization':util[_0x4402('0x54')](_0x4402('0x57'),new Buffer(util[_0x4402('0x54')](_0x4402('0x5a'),_0xcf5c20[_0x4402('0x4d')],_0xcf5c20[_0x4402('0x4f')]))[_0x4402('0x5b')](_0x4402('0x59')))};break;default:throw new db['Sequelize'][(_0x4402('0x5c'))](_0x4402('0x5d'));}return rp(_0xccb64f);}})[_0x4402('0x20')](function(_0x221889){if(_0x221889){var _0x4734ef=[_0x4402('0x5e'),_0x4402('0x5f'),_0x4402('0x60'),_0x4402('0x61')];_['remove'](_0x221889[_0x4402('0x55')],function(_0x2a6dc1){return _0x4734ef[_0x4402('0x62')](_0x2a6dc1['type']);});return{'count':_0x221889[_0x4402('0x55')]['length'],'rows':_[_0x4402('0x25')](_0x221889['ticket_fields'],function(_0xc1d540){return{'id':_0xc1d540['id'],'name':_0xc1d540[_0x4402('0x63')]>0x7?_0xc1d540['title']:_0xc1d540[_0x4402('0x29')],'custom':_0xc1d540['position']>0x7?!![]:![],'options':_0xc1d540[_0x4402('0x64')]?_0xc1d540[_0x4402('0x64')]:_0xc1d540['custom_field_options']?_0xc1d540[_0x4402('0x65')]:[]};})};}})[_0x4402('0x20')](respondWithResult(_0xc2ac06,null))['catch'](function(_0x189259){var _0x13c47e=_0x586689['query'][_0x4402('0x66')]?0x1f4:_0x189259[_0x4402('0x67')]||0x1f4;logger[_0x4402('0x68')](_0x4402('0x69'),_0x4402('0x4c'),_0x13c47e,JSON[_0x4402('0x6a')](_0x189259));delete _0x189259[_0x4402('0x23')];if(_0x13c47e===0x191){_0x13c47e=0x190;}_0xc2ac06[_0x4402('0x15')](_0x13c47e)[_0x4402('0x24')](_0x586689[_0x4402('0x2c')][_0x4402('0x66')]?{'message':_0x4402('0x6b'),'statusCode':_0x189259[_0x4402('0x67')]}:_0x189259);});};
\ No newline at end of file
index d02dab1..6f85281 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6010=['exports','define','int_zendesk_accounts','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./intZendeskAccount.attributes','../../components/integrations/configuration'];(function(_0x40675b,_0x13ae6b){var _0x29dd22=function(_0x162483){while(--_0x162483){_0x40675b['push'](_0x40675b['shift']());}};_0x29dd22(++_0x13ae6b);}(_0x6010,0xfa));var _0x0601=function(_0xab8f01,_0xd778b7){_0xab8f01=_0xab8f01-0x0;var _0x16ffb3=_0x6010[_0xab8f01];return _0x16ffb3;};'use strict';var _=require('lodash');var util=require(_0x0601('0x0'));var logger=require(_0x0601('0x1'))(_0x0601('0x2'));var moment=require(_0x0601('0x3'));var BPromise=require(_0x0601('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0601('0x5'));var rimraf=require(_0x0601('0x6'));var config=require(_0x0601('0x7'));var attributes=require(_0x0601('0x8'));var integrations=require(_0x0601('0x9'));module[_0x0601('0xa')]=function(_0x4a0c5c,_0x213711){return _0x4a0c5c[_0x0601('0xb')]('ZendeskAccount',attributes,{'tableName':_0x0601('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x783e=['ZendeskAccount','int_zendesk_accounts','util','api','moment','bluebird','request-promise','rimraf','../../config/environment','../../components/integrations/configuration','exports','define'];(function(_0x550e70,_0x3d9c91){var _0x4ac7da=function(_0x2f1ecc){while(--_0x2f1ecc){_0x550e70['push'](_0x550e70['shift']());}};_0x4ac7da(++_0x3d9c91);}(_0x783e,0xce));var _0xe783=function(_0x14bd69,_0xde7d77){_0x14bd69=_0x14bd69-0x0;var _0x287bc4=_0x783e[_0x14bd69];return _0x287bc4;};'use strict';var _=require('lodash');var util=require(_0xe783('0x0'));var logger=require('../../config/logger')(_0xe783('0x1'));var moment=require(_0xe783('0x2'));var BPromise=require(_0xe783('0x3'));var rp=require(_0xe783('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xe783('0x5'));var config=require(_0xe783('0x6'));var attributes=require('./intZendeskAccount.attributes');var integrations=require(_0xe783('0x7'));module[_0xe783('0x8')]=function(_0xae8c7d,_0x1cb4a1){return _0xae8c7d[_0xe783('0x9')](_0xe783('0xa'),attributes,{'tableName':_0xe783('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 369160e..779ed2e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x42ab=['GetZendeskAccount','ZendeskAccount','findAll','options','where','attributes','limit','map','include','model','then','ShowZendeskAccount','find','raw','catch','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','info','ZendeskAccount,\x20%s,\x20%s','request\x20sent','debug','ZendeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result'];(function(_0x87b0ff,_0x314389){var _0x3bc0b2=function(_0x41682b){while(--_0x41682b){_0x87b0ff['push'](_0x87b0ff['shift']());}};_0x3bc0b2(++_0x314389);}(_0x42ab,0x10b));var _0xb42a=function(_0xa5d896,_0x263a1d){_0xa5d896=_0xa5d896-0x0;var _0x1c31f8=_0x42ab[_0xa5d896];return _0x1c31f8;};'use strict';var _=require(_0xb42a('0x0'));var util=require('util');var moment=require(_0xb42a('0x1'));var BPromise=require('bluebird');var rs=require(_0xb42a('0x2'));var fs=require('fs');var Redis=require(_0xb42a('0x3'));var db=require(_0xb42a('0x4'))['db'];var utils=require(_0xb42a('0x5'));var logger=require(_0xb42a('0x6'))(_0xb42a('0x7'));var config=require(_0xb42a('0x8'));var jayson=require(_0xb42a('0x9'));var client=jayson['client'][_0xb42a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1bd4b4,_0x1e458d,_0x19f26a){return new BPromise(function(_0x376481,_0x4e4acf){return client['request'](_0x1bd4b4,_0x19f26a)['then'](function(_0x53637d){logger[_0xb42a('0xb')](_0xb42a('0xc'),_0x1e458d,_0xb42a('0xd'));logger[_0xb42a('0xe')](_0xb42a('0xf'),_0x1e458d,'request\x20sent',JSON[_0xb42a('0x10')](_0x53637d));if(_0x53637d[_0xb42a('0x11')]){if(_0x53637d[_0xb42a('0x11')][_0xb42a('0x12')]===0x1f4){logger['error'](_0xb42a('0xc'),_0x1e458d,_0x53637d[_0xb42a('0x11')][_0xb42a('0x13')]);return _0x4e4acf(_0x53637d[_0xb42a('0x11')][_0xb42a('0x13')]);}logger['error'](_0xb42a('0xc'),_0x1e458d,_0x53637d[_0xb42a('0x11')][_0xb42a('0x13')]);return _0x376481(_0x53637d[_0xb42a('0x11')]['message']);}else{logger[_0xb42a('0xb')](_0xb42a('0xc'),_0x1e458d,_0xb42a('0xd'));_0x376481(_0x53637d[_0xb42a('0x14')][_0xb42a('0x13')]);}})['catch'](function(_0x52ec0c){logger[_0xb42a('0x11')](_0xb42a('0xc'),_0x1e458d,_0x52ec0c);_0x4e4acf(_0x52ec0c);});});}exports[_0xb42a('0x15')]=function(_0x5132dd){var _0x2fc905=this;return new Promise(function(_0x1ef3e9,_0x3d1799){return db[_0xb42a('0x16')][_0xb42a('0x17')]({'raw':_0x5132dd[_0xb42a('0x18')]?_0x5132dd['options']['raw']===undefined?!![]:![]:!![],'where':_0x5132dd[_0xb42a('0x18')]?_0x5132dd['options'][_0xb42a('0x19')]||null:null,'attributes':_0x5132dd[_0xb42a('0x18')]?_0x5132dd[_0xb42a('0x18')][_0xb42a('0x1a')]||null:null,'limit':_0x5132dd[_0xb42a('0x18')]?_0x5132dd['options'][_0xb42a('0x1b')]||null:null,'include':_0x5132dd[_0xb42a('0x18')]?_0x5132dd[_0xb42a('0x18')]['include']?_[_0xb42a('0x1c')](_0x5132dd['options'][_0xb42a('0x1d')],function(_0x3e5b64){return{'model':db[_0x3e5b64[_0xb42a('0x1e')]],'as':_0x3e5b64['as'],'attributes':_0x3e5b64[_0xb42a('0x1a')],'include':_0x3e5b64[_0xb42a('0x1d')]?_[_0xb42a('0x1c')](_0x3e5b64[_0xb42a('0x1d')],function(_0xcd7dc7){return{'model':db[_0xcd7dc7[_0xb42a('0x1e')]],'as':_0xcd7dc7['as'],'attributes':_0xcd7dc7['attributes'],'include':_0xcd7dc7[_0xb42a('0x1d')]?_[_0xb42a('0x1c')](_0xcd7dc7[_0xb42a('0x1d')],function(_0x120784){return{'model':db[_0x120784['model']],'as':_0x120784['as'],'attributes':_0x120784[_0xb42a('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xb42a('0x1f')](function(_0x4e3d11){logger[_0xb42a('0xb')](_0xb42a('0x15'),_0x5132dd);logger['debug']('GetZendeskAccount',_0x5132dd,JSON['stringify'](_0x4e3d11));_0x1ef3e9(_0x4e3d11);})['catch'](function(_0xef724d){logger[_0xb42a('0x11')](_0xb42a('0x15'),_0xef724d[_0xb42a('0x13')],_0x5132dd);_0x3d1799(_0x2fc905[_0xb42a('0x11')](0x1f4,_0xef724d['message']));});});};exports[_0xb42a('0x20')]=function(_0x50c196){var _0x575fdf=this;return new Promise(function(_0x12f099,_0x35b8f5){return db[_0xb42a('0x16')][_0xb42a('0x21')]({'raw':_0x50c196[_0xb42a('0x18')]?_0x50c196[_0xb42a('0x18')][_0xb42a('0x22')]===undefined?!![]:![]:!![],'where':_0x50c196['options']?_0x50c196[_0xb42a('0x18')][_0xb42a('0x19')]||null:null,'attributes':_0x50c196[_0xb42a('0x18')]?_0x50c196[_0xb42a('0x18')]['attributes']||null:null,'include':_0x50c196[_0xb42a('0x18')]?_0x50c196[_0xb42a('0x18')]['include']?_[_0xb42a('0x1c')](_0x50c196['options'][_0xb42a('0x1d')],function(_0x1d8e9b){return{'model':db[_0x1d8e9b['model']],'as':_0x1d8e9b['as'],'attributes':_0x1d8e9b[_0xb42a('0x1a')],'include':_0x1d8e9b[_0xb42a('0x1d')]?_[_0xb42a('0x1c')](_0x1d8e9b[_0xb42a('0x1d')],function(_0x3fc836){return{'model':db[_0x3fc836[_0xb42a('0x1e')]],'as':_0x3fc836['as'],'attributes':_0x3fc836[_0xb42a('0x1a')],'include':_0x3fc836[_0xb42a('0x1d')]?_['map'](_0x3fc836[_0xb42a('0x1d')],function(_0x3d5853){return{'model':db[_0x3d5853[_0xb42a('0x1e')]],'as':_0x3d5853['as'],'attributes':_0x3d5853['attributes']};}):[]};}):[]};}):[]:[]})[_0xb42a('0x1f')](function(_0x4d135a){logger['info']('ShowZendeskAccount',_0x50c196);logger[_0xb42a('0xe')](_0xb42a('0x20'),_0x50c196,JSON[_0xb42a('0x10')](_0x4d135a));_0x12f099(_0x4d135a);})[_0xb42a('0x23')](function(_0x54c8f6){logger[_0xb42a('0x11')]('ShowZendeskAccount',_0x54c8f6['message'],_0x50c196);_0x35b8f5(_0x575fdf[_0xb42a('0x11')](0x1f4,_0x54c8f6[_0xb42a('0x13')]));});});};
\ No newline at end of file
+var _0x274e=['catch','GetZendeskAccount','ZendeskAccount','options','raw','where','attributes','limit','map','include','model','then','ShowZendeskAccount','find','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','request','ZendeskAccount,\x20%s,\x20%s','request\x20sent','code','error','message','info','result'];(function(_0x20d789,_0x4c80dc){var _0x58f380=function(_0x3c88fe){while(--_0x3c88fe){_0x20d789['push'](_0x20d789['shift']());}};_0x58f380(++_0x4c80dc);}(_0x274e,0x1c0));var _0xe274=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x274e[_0x397e5f];return _0x5302b8;};'use strict';var _=require('lodash');var util=require(_0xe274('0x0'));var moment=require(_0xe274('0x1'));var BPromise=require('bluebird');var rs=require(_0xe274('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xe274('0x3'))['db'];var utils=require(_0xe274('0x4'));var logger=require(_0xe274('0x5'))('rpc');var config=require(_0xe274('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xe274('0x7')][_0xe274('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x455973,_0x4a9e8d,_0x22e5f6){return new BPromise(function(_0x585b0d,_0x37d7b6){return client[_0xe274('0x9')](_0x455973,_0x22e5f6)['then'](function(_0x36dac5){logger['info'](_0xe274('0xa'),_0x4a9e8d,_0xe274('0xb'));logger['debug']('ZendeskAccount,\x20%s,\x20%s,\x20%s',_0x4a9e8d,_0xe274('0xb'),JSON['stringify'](_0x36dac5));if(_0x36dac5['error']){if(_0x36dac5['error'][_0xe274('0xc')]===0x1f4){logger[_0xe274('0xd')](_0xe274('0xa'),_0x4a9e8d,_0x36dac5[_0xe274('0xd')][_0xe274('0xe')]);return _0x37d7b6(_0x36dac5[_0xe274('0xd')][_0xe274('0xe')]);}logger[_0xe274('0xd')](_0xe274('0xa'),_0x4a9e8d,_0x36dac5[_0xe274('0xd')][_0xe274('0xe')]);return _0x585b0d(_0x36dac5[_0xe274('0xd')][_0xe274('0xe')]);}else{logger[_0xe274('0xf')](_0xe274('0xa'),_0x4a9e8d,_0xe274('0xb'));_0x585b0d(_0x36dac5[_0xe274('0x10')][_0xe274('0xe')]);}})[_0xe274('0x11')](function(_0x504214){logger[_0xe274('0xd')]('ZendeskAccount,\x20%s,\x20%s',_0x4a9e8d,_0x504214);_0x37d7b6(_0x504214);});});}exports[_0xe274('0x12')]=function(_0x14180c){var _0x3210de=this;return new Promise(function(_0x30959f,_0x38416c){return db[_0xe274('0x13')]['findAll']({'raw':_0x14180c[_0xe274('0x14')]?_0x14180c[_0xe274('0x14')][_0xe274('0x15')]===undefined?!![]:![]:!![],'where':_0x14180c['options']?_0x14180c['options'][_0xe274('0x16')]||null:null,'attributes':_0x14180c[_0xe274('0x14')]?_0x14180c['options'][_0xe274('0x17')]||null:null,'limit':_0x14180c[_0xe274('0x14')]?_0x14180c[_0xe274('0x14')][_0xe274('0x18')]||null:null,'include':_0x14180c['options']?_0x14180c[_0xe274('0x14')]['include']?_[_0xe274('0x19')](_0x14180c[_0xe274('0x14')][_0xe274('0x1a')],function(_0x5f5d78){return{'model':db[_0x5f5d78['model']],'as':_0x5f5d78['as'],'attributes':_0x5f5d78[_0xe274('0x17')],'include':_0x5f5d78['include']?_[_0xe274('0x19')](_0x5f5d78[_0xe274('0x1a')],function(_0x2699e4){return{'model':db[_0x2699e4[_0xe274('0x1b')]],'as':_0x2699e4['as'],'attributes':_0x2699e4[_0xe274('0x17')],'include':_0x2699e4[_0xe274('0x1a')]?_[_0xe274('0x19')](_0x2699e4[_0xe274('0x1a')],function(_0x343fc8){return{'model':db[_0x343fc8[_0xe274('0x1b')]],'as':_0x343fc8['as'],'attributes':_0x343fc8['attributes']};}):[]};}):[]};}):[]:[]})[_0xe274('0x1c')](function(_0x277e80){logger[_0xe274('0xf')](_0xe274('0x12'),_0x14180c);logger['debug'](_0xe274('0x12'),_0x14180c,JSON['stringify'](_0x277e80));_0x30959f(_0x277e80);})[_0xe274('0x11')](function(_0x2ef6fd){logger[_0xe274('0xd')](_0xe274('0x12'),_0x2ef6fd[_0xe274('0xe')],_0x14180c);_0x38416c(_0x3210de[_0xe274('0xd')](0x1f4,_0x2ef6fd[_0xe274('0xe')]));});});};exports[_0xe274('0x1d')]=function(_0x4d2d79){var _0x53d110=this;return new Promise(function(_0x4b7b75,_0x49f62b){return db[_0xe274('0x13')][_0xe274('0x1e')]({'raw':_0x4d2d79['options']?_0x4d2d79['options'][_0xe274('0x15')]===undefined?!![]:![]:!![],'where':_0x4d2d79[_0xe274('0x14')]?_0x4d2d79['options']['where']||null:null,'attributes':_0x4d2d79[_0xe274('0x14')]?_0x4d2d79[_0xe274('0x14')][_0xe274('0x17')]||null:null,'include':_0x4d2d79[_0xe274('0x14')]?_0x4d2d79[_0xe274('0x14')][_0xe274('0x1a')]?_[_0xe274('0x19')](_0x4d2d79['options'][_0xe274('0x1a')],function(_0xd68d2d){return{'model':db[_0xd68d2d[_0xe274('0x1b')]],'as':_0xd68d2d['as'],'attributes':_0xd68d2d['attributes'],'include':_0xd68d2d['include']?_['map'](_0xd68d2d['include'],function(_0x1473c1){return{'model':db[_0x1473c1['model']],'as':_0x1473c1['as'],'attributes':_0x1473c1['attributes'],'include':_0x1473c1[_0xe274('0x1a')]?_[_0xe274('0x19')](_0x1473c1[_0xe274('0x1a')],function(_0x5ab623){return{'model':db[_0x5ab623[_0xe274('0x1b')]],'as':_0x5ab623['as'],'attributes':_0x5ab623[_0xe274('0x17')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1f1140){logger[_0xe274('0xf')]('ShowZendeskAccount',_0x4d2d79);logger['debug']('ShowZendeskAccount',_0x4d2d79,JSON['stringify'](_0x1f1140));_0x4b7b75(_0x1f1140);})[_0xe274('0x11')](function(_0x38615f){logger[_0xe274('0xd')](_0xe274('0x1d'),_0x38615f[_0xe274('0xe')],_0x4d2d79);_0x49f62b(_0x53d110[_0xe274('0xd')](0x1f4,_0x38615f[_0xe274('0xe')]));});});};
\ No newline at end of file
index 44df104..9851180 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa571=['util','path','connect-timeout','Router','fs-extra','../../config/environment','get','isAuthenticated','index','/:id','/:id/fields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','getTags','post','create','put','update','exports','multer'];(function(_0xc32865,_0x157dea){var _0x26f169=function(_0x26bebf){while(--_0x26bebf){_0xc32865['push'](_0xc32865['shift']());}};_0x26f169(++_0x157dea);}(_0xa571,0x107));var _0x1a57=function(_0x51d2bb,_0x58e3ad){_0x51d2bb=_0x51d2bb-0x0;var _0xc3d3de=_0xa571[_0x51d2bb];return _0xc3d3de;};'use strict';var multer=require(_0x1a57('0x0'));var util=require(_0x1a57('0x1'));var path=require(_0x1a57('0x2'));var timeout=require(_0x1a57('0x3'));var express=require('express');var router=express[_0x1a57('0x4')]();var fs_extra=require(_0x1a57('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x1a57('0x6'));var controller=require('./intZendeskConfiguration.controller');router[_0x1a57('0x7')]('/',auth[_0x1a57('0x8')](),controller[_0x1a57('0x9')]);router[_0x1a57('0x7')](_0x1a57('0xa'),auth[_0x1a57('0x8')](),controller['show']);router[_0x1a57('0x7')](_0x1a57('0xb'),auth[_0x1a57('0x8')](),controller['getFields']);router[_0x1a57('0x7')](_0x1a57('0xc'),auth[_0x1a57('0x8')](),controller[_0x1a57('0xd')]);router[_0x1a57('0x7')](_0x1a57('0xe'),auth[_0x1a57('0x8')](),controller[_0x1a57('0xf')]);router['get']('/:id/tags',auth[_0x1a57('0x8')](),controller[_0x1a57('0x10')]);router[_0x1a57('0x11')]('/',auth['isAuthenticated'](),controller[_0x1a57('0x12')]);router[_0x1a57('0x11')]('/:id/tags',auth[_0x1a57('0x8')](),controller['setTags']);router[_0x1a57('0x13')](_0x1a57('0xa'),auth[_0x1a57('0x8')](),controller[_0x1a57('0x14')]);router['delete'](_0x1a57('0xa'),auth['isAuthenticated'](),controller['destroy']);module[_0x1a57('0x15')]=router;
\ No newline at end of file
+var _0xe706=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZendeskConfiguration.controller','get','isAuthenticated','index','/:id','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','/:id/tags','getTags','post','create','put','update','delete','exports','multer','util','path','express','Router'];(function(_0x1f07b9,_0x399b26){var _0x24420f=function(_0xfc3000){while(--_0xfc3000){_0x1f07b9['push'](_0x1f07b9['shift']());}};_0x24420f(++_0x399b26);}(_0xe706,0xa3));var _0x6e70=function(_0x49a2f7,_0x1602a3){_0x49a2f7=_0x49a2f7-0x0;var _0x1d015b=_0xe706[_0x49a2f7];return _0x1d015b;};'use strict';var multer=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var path=require(_0x6e70('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e70('0x3'));var router=express[_0x6e70('0x4')]();var fs_extra=require(_0x6e70('0x5'));var auth=require(_0x6e70('0x6'));var interaction=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));var controller=require(_0x6e70('0x9'));router[_0x6e70('0xa')]('/',auth[_0x6e70('0xb')](),controller[_0x6e70('0xc')]);router[_0x6e70('0xa')](_0x6e70('0xd'),auth[_0x6e70('0xb')](),controller[_0x6e70('0xe')]);router[_0x6e70('0xa')](_0x6e70('0xf'),auth[_0x6e70('0xb')](),controller[_0x6e70('0x10')]);router[_0x6e70('0xa')](_0x6e70('0x11'),auth[_0x6e70('0xb')](),controller[_0x6e70('0x12')]);router[_0x6e70('0xa')](_0x6e70('0x13'),auth['isAuthenticated'](),controller['getDescriptions']);router[_0x6e70('0xa')](_0x6e70('0x14'),auth[_0x6e70('0xb')](),controller[_0x6e70('0x15')]);router[_0x6e70('0x16')]('/',auth[_0x6e70('0xb')](),controller[_0x6e70('0x17')]);router[_0x6e70('0x16')]('/:id/tags',auth['isAuthenticated'](),controller['setTags']);router[_0x6e70('0x18')]('/:id',auth['isAuthenticated'](),controller[_0x6e70('0x19')]);router[_0x6e70('0x1a')]('/:id',auth[_0x6e70('0xb')](),controller['destroy']);module[_0x6e70('0x1b')]=router;
\ No newline at end of file
index 265ad0f..4d28b42 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcbcf=['STRING','sequelize','exports'];(function(_0x21ed2a,_0x56c3b0){var _0x856d7b=function(_0xe99ea6){while(--_0xe99ea6){_0x21ed2a['push'](_0x21ed2a['shift']());}};_0x856d7b(++_0x56c3b0);}(_0xcbcf,0x133));var _0xfcbc=function(_0xbe4694,_0x31acff){_0xbe4694=_0xbe4694-0x0;var _0x5d2a13=_0xcbcf[_0xbe4694];return _0x5d2a13;};'use strict';var Sequelize=require(_0xfcbc('0x0'));module[_0xfcbc('0x1')]={'name':{'type':Sequelize[_0xfcbc('0x2')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xb47a=['exports','STRING','sequelize'];(function(_0x2c9d22,_0x28f65a){var _0x160346=function(_0x14e429){while(--_0x14e429){_0x2c9d22['push'](_0x2c9d22['shift']());}};_0x160346(++_0x28f65a);}(_0xb47a,0x1c4));var _0xab47=function(_0x1f36bb,_0x8af718){_0x1f36bb=_0x1f36bb-0x0;var _0xaf97fa=_0xb47a[_0x1f36bb];return _0xaf97fa;};'use strict';var Sequelize=require(_0xab47('0x0'));module[_0xab47('0x1')]={'name':{'type':Sequelize[_0xab47('0x2')]},'description':{'type':Sequelize[_0xab47('0x2')]}};
\ No newline at end of file
index ad008a4..49ebdb5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8741=['../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','set','Content-Range','json','update','destroy','then','error','stack','name','send','map','ZendeskConfiguration','rawAttributes','fieldName','type','key','model','query','filters','intersection','fields','length','attributes','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','count','include','rows','catch','show','params','keys','includeAll','find','create','body','findOne','ZendeskField','getFields','hasOwnProperty','getSubjects','getDescriptions','getTags','Tag','setTags','ids','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','sox','ejs','lodash','squel','crypto','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger'];(function(_0x4c2cd4,_0x3427f6){var _0x328a6c=function(_0x175f44){while(--_0x175f44){_0x4c2cd4['push'](_0x4c2cd4['shift']());}};_0x328a6c(++_0x3427f6);}(_0x8741,0x1e3));var _0x1874=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x8741[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x1874('0x0'));var rimraf=require(_0x1874('0x1'));var zipdir=require(_0x1874('0x2'));var jsonpatch=require(_0x1874('0x3'));var rp=require('request-promise');var moment=require(_0x1874('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x1874('0x5'));var util=require(_0x1874('0x6'));var path=require(_0x1874('0x7'));var sox=require(_0x1874('0x8'));var csv=require('to-csv');var ejs=require(_0x1874('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x1874('0xa'));var squel=require(_0x1874('0xb'));var crypto=require(_0x1874('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x1874('0xd'));var querystring=require(_0x1874('0xe'));var Papa=require(_0x1874('0xf'));var Redis=require('ioredis');var authService=require(_0x1874('0x10'));var qs=require(_0x1874('0x11'));var as=require(_0x1874('0x12'));var hardwareService=require(_0x1874('0x13'));var logger=require(_0x1874('0x14'))('api');var utils=require(_0x1874('0x15'));var config=require(_0x1874('0x16'));var licenseUtil=require(_0x1874('0x17'));var db=require(_0x1874('0x18'))['db'];function respondWithStatusCode(_0x28258a,_0x32a151){_0x32a151=_0x32a151||0xcc;return function(_0x2b8cc7){if(_0x2b8cc7){return _0x28258a[_0x1874('0x19')](_0x32a151);}return _0x28258a[_0x1874('0x1a')](_0x32a151)[_0x1874('0x1b')]();};}function respondWithResult(_0x32f63e,_0x8631d){_0x8631d=_0x8631d||0xc8;return function(_0x16d33e){if(_0x16d33e){return _0x32f63e[_0x1874('0x1a')](_0x8631d)['json'](_0x16d33e);}};}function respondWithFilteredResult(_0x1c68b2,_0x11b45f){return function(_0x2c2816){if(_0x2c2816){var _0x29e506=typeof _0x11b45f[_0x1874('0x1c')]===_0x1874('0x1d')&&typeof _0x11b45f[_0x1874('0x1e')]===_0x1874('0x1d');var _0x270da2=_0x2c2816['count'];var _0x4021ea=_0x29e506?0x0:_0x11b45f[_0x1874('0x1c')];var _0x1e49ee=_0x29e506?_0x2c2816['count']:_0x11b45f[_0x1874('0x1c')]+_0x11b45f[_0x1874('0x1e')];var _0x2694a5;if(_0x1e49ee>=_0x270da2){_0x1e49ee=_0x270da2;_0x2694a5=0xc8;}else{_0x2694a5=0xce;}_0x1c68b2['status'](_0x2694a5);return _0x1c68b2[_0x1874('0x1f')](_0x1874('0x20'),_0x4021ea+'-'+_0x1e49ee+'/'+_0x270da2)[_0x1874('0x21')](_0x2c2816);}return null;};}function patchUpdates(_0x53f868){return function(_0xb744b6){try{jsonpatch['apply'](_0xb744b6,_0x53f868,!![]);}catch(_0x13ae92){return BPromise['reject'](_0x13ae92);}return _0xb744b6['save']();};}function saveUpdates(_0xc85d32,_0x4b4664){return function(_0x12b3d6){if(_0x12b3d6){return _0x12b3d6[_0x1874('0x22')](_0xc85d32)['then'](function(_0x2c4d25){return _0x2c4d25;});}return null;};}function removeEntity(_0x140fff,_0x3b521d){return function(_0x411880){if(_0x411880){return _0x411880[_0x1874('0x23')]()[_0x1874('0x24')](function(){_0x140fff['status'](0xcc)[_0x1874('0x1b')]();});}};}function handleEntityNotFound(_0xc4f498,_0x5ac1ae){return function(_0x5ec129){if(!_0x5ec129){_0xc4f498[_0x1874('0x19')](0x194);}return _0x5ec129;};}function handleError(_0x5d3709,_0x317ea9){_0x317ea9=_0x317ea9||0x1f4;return function(_0x4060a6){logger[_0x1874('0x25')](_0x4060a6[_0x1874('0x26')]);if(_0x4060a6[_0x1874('0x27')]){delete _0x4060a6[_0x1874('0x27')];}_0x5d3709['status'](_0x317ea9)[_0x1874('0x28')](_0x4060a6);};}exports['index']=function(_0x457c5d,_0x7df915){var _0x11c215={},_0x5c8a8f={},_0x188e9d={'count':0x0,'rows':[]};var _0xff780b=_[_0x1874('0x29')](db[_0x1874('0x2a')][_0x1874('0x2b')],function(_0x199254){return{'name':_0x199254[_0x1874('0x2c')],'type':_0x199254[_0x1874('0x2d')][_0x1874('0x2e')]};});_0x5c8a8f[_0x1874('0x2f')]=_[_0x1874('0x29')](_0xff780b,'name');_0x5c8a8f[_0x1874('0x30')]=_['keys'](_0x457c5d[_0x1874('0x30')]);_0x5c8a8f[_0x1874('0x31')]=_[_0x1874('0x32')](_0x5c8a8f['model'],_0x5c8a8f['query']);_0x11c215['attributes']=_[_0x1874('0x32')](_0x5c8a8f[_0x1874('0x2f')],qs[_0x1874('0x33')](_0x457c5d[_0x1874('0x30')][_0x1874('0x33')]));_0x11c215['attributes']=_0x11c215['attributes'][_0x1874('0x34')]?_0x11c215[_0x1874('0x35')]:_0x5c8a8f[_0x1874('0x2f')];if(!_0x457c5d['query']['hasOwnProperty'](_0x1874('0x36'))){_0x11c215[_0x1874('0x1e')]=qs[_0x1874('0x1e')](_0x457c5d[_0x1874('0x30')][_0x1874('0x1e')]);_0x11c215['offset']=qs[_0x1874('0x1c')](_0x457c5d[_0x1874('0x30')][_0x1874('0x1c')]);}_0x11c215[_0x1874('0x37')]=qs[_0x1874('0x38')](_0x457c5d['query'][_0x1874('0x38')]);_0x11c215[_0x1874('0x39')]=qs[_0x1874('0x31')](_[_0x1874('0x3a')](_0x457c5d[_0x1874('0x30')],_0x5c8a8f['filters']),_0xff780b);if(_0x457c5d[_0x1874('0x30')][_0x1874('0x3b')]){_0x11c215[_0x1874('0x39')]=_[_0x1874('0x3c')](_0x11c215[_0x1874('0x39')],{'$or':_[_0x1874('0x29')](_0xff780b,function(_0x533e84){if(_0x533e84[_0x1874('0x2d')]!==_0x1874('0x3d')){var _0x18d30c={};_0x18d30c[_0x533e84[_0x1874('0x27')]]={'$like':'%'+_0x457c5d[_0x1874('0x30')][_0x1874('0x3b')]+'%'};return _0x18d30c;}})});}_0x11c215=_[_0x1874('0x3c')]({},_0x11c215,_0x457c5d[_0x1874('0x3e')]);var _0xfd759e={'where':_0x11c215[_0x1874('0x39')]};return db[_0x1874('0x2a')][_0x1874('0x3f')](_0xfd759e)[_0x1874('0x24')](function(_0x234d59){_0x188e9d[_0x1874('0x3f')]=_0x234d59;if(_0x457c5d[_0x1874('0x30')]['includeAll']){_0x11c215[_0x1874('0x40')]=[{'all':!![]}];}return db[_0x1874('0x2a')]['findAll'](_0x11c215);})[_0x1874('0x24')](function(_0x5ca0b1){_0x188e9d[_0x1874('0x41')]=_0x5ca0b1;return _0x188e9d;})[_0x1874('0x24')](respondWithFilteredResult(_0x7df915,_0x11c215))[_0x1874('0x42')](handleError(_0x7df915,null));};exports[_0x1874('0x43')]=function(_0x143a59,_0x13411c){var _0x52b18a={'raw':![],'where':{'id':_0x143a59[_0x1874('0x44')]['id']}},_0x12a118={};_0x12a118['model']=_[_0x1874('0x45')](db[_0x1874('0x2a')][_0x1874('0x2b')]);_0x12a118[_0x1874('0x30')]=_['keys'](_0x143a59[_0x1874('0x30')]);_0x12a118[_0x1874('0x31')]=_[_0x1874('0x32')](_0x12a118['model'],_0x12a118[_0x1874('0x30')]);_0x52b18a[_0x1874('0x35')]=_[_0x1874('0x32')](_0x12a118[_0x1874('0x2f')],qs[_0x1874('0x33')](_0x143a59[_0x1874('0x30')][_0x1874('0x33')]));_0x52b18a[_0x1874('0x35')]=_0x52b18a[_0x1874('0x35')][_0x1874('0x34')]?_0x52b18a['attributes']:_0x12a118[_0x1874('0x2f')];if(_0x143a59['query'][_0x1874('0x46')]){_0x52b18a[_0x1874('0x40')]=[{'all':!![]}];}_0x52b18a=_['merge']({},_0x52b18a,_0x143a59[_0x1874('0x3e')]);return db[_0x1874('0x2a')][_0x1874('0x47')](_0x52b18a)[_0x1874('0x24')](handleEntityNotFound(_0x13411c,null))[_0x1874('0x24')](respondWithResult(_0x13411c,null))[_0x1874('0x42')](handleError(_0x13411c,null));};exports[_0x1874('0x48')]=function(_0x5bfbc9,_0x1a26bf){return db[_0x1874('0x2a')][_0x1874('0x48')](_0x5bfbc9[_0x1874('0x49')],{})[_0x1874('0x24')](respondWithResult(_0x1a26bf,0xc9))[_0x1874('0x42')](handleError(_0x1a26bf,null));};exports[_0x1874('0x22')]=function(_0x2377c5,_0x4cfbc8){if(_0x2377c5[_0x1874('0x49')]['id']){delete _0x2377c5[_0x1874('0x49')]['id'];}return db[_0x1874('0x2a')][_0x1874('0x47')]({'where':{'id':_0x2377c5[_0x1874('0x44')]['id']}})[_0x1874('0x24')](handleEntityNotFound(_0x4cfbc8,null))[_0x1874('0x24')](saveUpdates(_0x2377c5[_0x1874('0x49')],null))['then'](respondWithResult(_0x4cfbc8,null))[_0x1874('0x42')](handleError(_0x4cfbc8,null));};exports[_0x1874('0x23')]=function(_0x27e3d5,_0x26dff5){return db['ZendeskConfiguration']['find']({'where':{'id':_0x27e3d5['params']['id']}})[_0x1874('0x24')](handleEntityNotFound(_0x26dff5,null))[_0x1874('0x24')](removeEntity(_0x26dff5,null))['catch'](handleError(_0x26dff5,null));};exports['getFields']=function(_0x24b835,_0x3586ff,_0x2f1870){var _0x1cc7ab={};var _0x333759={};var _0x5cbab6;var _0x29158d;return db['ZendeskConfiguration'][_0x1874('0x4a')]({'where':{'id':_0x24b835[_0x1874('0x44')]['id']}})['then'](handleEntityNotFound(_0x3586ff,null))['then'](function(_0x4f4b1f){if(_0x4f4b1f){_0x5cbab6=_0x4f4b1f;_0x333759[_0x1874('0x2f')]=_[_0x1874('0x45')](db[_0x1874('0x4b')]['rawAttributes']);_0x333759['query']=_[_0x1874('0x45')](_0x24b835['query']);_0x333759['filters']=_['intersection'](_0x333759[_0x1874('0x2f')],_0x333759[_0x1874('0x30')]);_0x1cc7ab[_0x1874('0x35')]=_[_0x1874('0x32')](_0x333759['model'],qs[_0x1874('0x33')](_0x24b835[_0x1874('0x30')][_0x1874('0x33')]));_0x1cc7ab[_0x1874('0x35')]=_0x1cc7ab[_0x1874('0x35')][_0x1874('0x34')]?_0x1cc7ab[_0x1874('0x35')]:_0x333759[_0x1874('0x2f')];_0x1cc7ab[_0x1874('0x37')]=qs[_0x1874('0x38')](_0x24b835['query']['sort']);_0x1cc7ab[_0x1874('0x39')]=qs[_0x1874('0x31')](_[_0x1874('0x3a')](_0x24b835['query'],_0x333759[_0x1874('0x31')]));if(_0x24b835[_0x1874('0x30')][_0x1874('0x3b')]){_0x1cc7ab['where']=_[_0x1874('0x3c')](_0x1cc7ab['where'],{'$or':_[_0x1874('0x29')](_0x1cc7ab['attributes'],function(_0x29b2f3){var _0x4856de={};_0x4856de[_0x29b2f3]={'$like':'%'+_0x24b835[_0x1874('0x30')]['filter']+'%'};return _0x4856de;})});}_0x1cc7ab=_['merge']({},_0x1cc7ab,_0x24b835[_0x1874('0x3e')]);return _0x5cbab6[_0x1874('0x4c')](_0x1cc7ab);}})[_0x1874('0x24')](function(_0x518bb7){if(_0x518bb7){_0x29158d=_0x518bb7[_0x1874('0x34')];if(!_0x24b835[_0x1874('0x30')][_0x1874('0x4d')](_0x1874('0x36'))){_0x1cc7ab[_0x1874('0x1e')]=qs[_0x1874('0x1e')](_0x24b835[_0x1874('0x30')][_0x1874('0x1e')]);_0x1cc7ab['offset']=qs['offset'](_0x24b835[_0x1874('0x30')][_0x1874('0x1c')]);}return _0x5cbab6[_0x1874('0x4c')](_0x1cc7ab);}})['then'](function(_0x45b1d8){if(_0x45b1d8){return _0x45b1d8?{'count':_0x29158d,'rows':_0x45b1d8}:null;}})[_0x1874('0x24')](respondWithResult(_0x3586ff,null))[_0x1874('0x42')](handleError(_0x3586ff,null));};exports[_0x1874('0x4e')]=function(_0x42e729,_0x284729,_0xe8fb11){var _0x12140a={};var _0x59e91f={};var _0x5c26d3;var _0x49978a;return db[_0x1874('0x2a')][_0x1874('0x4a')]({'where':{'id':_0x42e729[_0x1874('0x44')]['id']}})['then'](handleEntityNotFound(_0x284729,null))['then'](function(_0x2a589c){if(_0x2a589c){_0x5c26d3=_0x2a589c;_0x59e91f[_0x1874('0x2f')]=_[_0x1874('0x45')](db['ZendeskField'][_0x1874('0x2b')]);_0x59e91f[_0x1874('0x30')]=_[_0x1874('0x45')](_0x42e729[_0x1874('0x30')]);_0x59e91f[_0x1874('0x31')]=_[_0x1874('0x32')](_0x59e91f['model'],_0x59e91f[_0x1874('0x30')]);_0x12140a[_0x1874('0x35')]=_['intersection'](_0x59e91f[_0x1874('0x2f')],qs[_0x1874('0x33')](_0x42e729['query'][_0x1874('0x33')]));_0x12140a['attributes']=_0x12140a[_0x1874('0x35')]['length']?_0x12140a[_0x1874('0x35')]:_0x59e91f['model'];_0x12140a[_0x1874('0x37')]=qs[_0x1874('0x38')](_0x42e729[_0x1874('0x30')][_0x1874('0x38')]);_0x12140a['where']=qs[_0x1874('0x31')](_['pick'](_0x42e729['query'],_0x59e91f[_0x1874('0x31')]));if(_0x42e729[_0x1874('0x30')][_0x1874('0x3b')]){_0x12140a[_0x1874('0x39')]=_[_0x1874('0x3c')](_0x12140a[_0x1874('0x39')],{'$or':_[_0x1874('0x29')](_0x12140a['attributes'],function(_0x8d9012){var _0x37c20e={};_0x37c20e[_0x8d9012]={'$like':'%'+_0x42e729[_0x1874('0x30')][_0x1874('0x3b')]+'%'};return _0x37c20e;})});}_0x12140a=_['merge']({},_0x12140a,_0x42e729[_0x1874('0x3e')]);return _0x5c26d3['getSubjects'](_0x12140a);}})[_0x1874('0x24')](function(_0x45dcde){if(_0x45dcde){_0x49978a=_0x45dcde[_0x1874('0x34')];if(!_0x42e729[_0x1874('0x30')][_0x1874('0x4d')](_0x1874('0x36'))){_0x12140a['limit']=qs[_0x1874('0x1e')](_0x42e729[_0x1874('0x30')][_0x1874('0x1e')]);_0x12140a[_0x1874('0x1c')]=qs[_0x1874('0x1c')](_0x42e729['query'][_0x1874('0x1c')]);}return _0x5c26d3[_0x1874('0x4e')](_0x12140a);}})[_0x1874('0x24')](function(_0x50636d){if(_0x50636d){return _0x50636d?{'count':_0x49978a,'rows':_0x50636d}:null;}})[_0x1874('0x24')](respondWithResult(_0x284729,null))[_0x1874('0x42')](handleError(_0x284729,null));};exports[_0x1874('0x4f')]=function(_0x4666ed,_0x90debb,_0x29c403){var _0x4c2a93={};var _0x301cee={};var _0x33727e;var _0x10a7aa;return db[_0x1874('0x2a')][_0x1874('0x4a')]({'where':{'id':_0x4666ed[_0x1874('0x44')]['id']}})[_0x1874('0x24')](handleEntityNotFound(_0x90debb,null))[_0x1874('0x24')](function(_0x2b13f1){if(_0x2b13f1){_0x33727e=_0x2b13f1;_0x301cee[_0x1874('0x2f')]=_[_0x1874('0x45')](db[_0x1874('0x4b')][_0x1874('0x2b')]);_0x301cee['query']=_['keys'](_0x4666ed[_0x1874('0x30')]);_0x301cee[_0x1874('0x31')]=_[_0x1874('0x32')](_0x301cee[_0x1874('0x2f')],_0x301cee[_0x1874('0x30')]);_0x4c2a93[_0x1874('0x35')]=_[_0x1874('0x32')](_0x301cee[_0x1874('0x2f')],qs[_0x1874('0x33')](_0x4666ed['query']['fields']));_0x4c2a93[_0x1874('0x35')]=_0x4c2a93['attributes'][_0x1874('0x34')]?_0x4c2a93[_0x1874('0x35')]:_0x301cee[_0x1874('0x2f')];_0x4c2a93[_0x1874('0x37')]=qs['sort'](_0x4666ed[_0x1874('0x30')][_0x1874('0x38')]);_0x4c2a93['where']=qs[_0x1874('0x31')](_[_0x1874('0x3a')](_0x4666ed['query'],_0x301cee[_0x1874('0x31')]));if(_0x4666ed[_0x1874('0x30')][_0x1874('0x3b')]){_0x4c2a93[_0x1874('0x39')]=_[_0x1874('0x3c')](_0x4c2a93[_0x1874('0x39')],{'$or':_[_0x1874('0x29')](_0x4c2a93['attributes'],function(_0x6014f4){var _0x109359={};_0x109359[_0x6014f4]={'$like':'%'+_0x4666ed[_0x1874('0x30')]['filter']+'%'};return _0x109359;})});}_0x4c2a93=_[_0x1874('0x3c')]({},_0x4c2a93,_0x4666ed[_0x1874('0x3e')]);return _0x33727e[_0x1874('0x4f')](_0x4c2a93);}})[_0x1874('0x24')](function(_0x2bc8c5){if(_0x2bc8c5){_0x10a7aa=_0x2bc8c5[_0x1874('0x34')];if(!_0x4666ed[_0x1874('0x30')][_0x1874('0x4d')](_0x1874('0x36'))){_0x4c2a93['limit']=qs[_0x1874('0x1e')](_0x4666ed[_0x1874('0x30')][_0x1874('0x1e')]);_0x4c2a93[_0x1874('0x1c')]=qs[_0x1874('0x1c')](_0x4666ed[_0x1874('0x30')][_0x1874('0x1c')]);}return _0x33727e[_0x1874('0x4f')](_0x4c2a93);}})[_0x1874('0x24')](function(_0x45acba){if(_0x45acba){return _0x45acba?{'count':_0x10a7aa,'rows':_0x45acba}:null;}})[_0x1874('0x24')](respondWithResult(_0x90debb,null))[_0x1874('0x42')](handleError(_0x90debb,null));};exports[_0x1874('0x50')]=function(_0x1c39c5,_0x264fe4,_0x2c05ab){var _0x158fb5={};var _0x40522f={};var _0x47aee0;var _0x158e98;return db[_0x1874('0x2a')][_0x1874('0x4a')]({'where':{'id':_0x1c39c5['params']['id']}})[_0x1874('0x24')](handleEntityNotFound(_0x264fe4,null))[_0x1874('0x24')](function(_0x215e5b){if(_0x215e5b){_0x47aee0=_0x215e5b;_0x40522f[_0x1874('0x2f')]=_[_0x1874('0x45')](db[_0x1874('0x51')][_0x1874('0x2b')]);_0x40522f[_0x1874('0x30')]=_[_0x1874('0x45')](_0x1c39c5[_0x1874('0x30')]);_0x40522f[_0x1874('0x31')]=_[_0x1874('0x32')](_0x40522f['model'],_0x40522f[_0x1874('0x30')]);_0x158fb5[_0x1874('0x35')]=_[_0x1874('0x32')](_0x40522f['model'],qs[_0x1874('0x33')](_0x1c39c5[_0x1874('0x30')]['fields']));_0x158fb5[_0x1874('0x35')]=_0x158fb5['attributes'][_0x1874('0x34')]?_0x158fb5[_0x1874('0x35')]:_0x40522f['model'];_0x158fb5['order']=qs[_0x1874('0x38')](_0x1c39c5['query'][_0x1874('0x38')]);_0x158fb5[_0x1874('0x39')]=qs[_0x1874('0x31')](_['pick'](_0x1c39c5[_0x1874('0x30')],_0x40522f['filters']));if(_0x1c39c5[_0x1874('0x30')]['filter']){_0x158fb5[_0x1874('0x39')]=_['merge'](_0x158fb5['where'],{'$or':_[_0x1874('0x29')](_0x158fb5['attributes'],function(_0x595ba8){var _0x46034b={};_0x46034b[_0x595ba8]={'$like':'%'+_0x1c39c5['query']['filter']+'%'};return _0x46034b;})});}_0x158fb5=_['merge']({},_0x158fb5,_0x1c39c5['options']);return _0x47aee0[_0x1874('0x50')](_0x158fb5);}})[_0x1874('0x24')](function(_0x110e74){if(_0x110e74){_0x158e98=_0x110e74[_0x1874('0x34')];if(!_0x1c39c5[_0x1874('0x30')][_0x1874('0x4d')](_0x1874('0x36'))){_0x158fb5[_0x1874('0x1e')]=qs[_0x1874('0x1e')](_0x1c39c5[_0x1874('0x30')]['limit']);_0x158fb5['offset']=qs[_0x1874('0x1c')](_0x1c39c5[_0x1874('0x30')][_0x1874('0x1c')]);}return _0x47aee0['getTags'](_0x158fb5);}})[_0x1874('0x24')](function(_0x393cb0){if(_0x393cb0){return _0x393cb0?{'count':_0x158e98,'rows':_0x393cb0}:null;}})[_0x1874('0x24')](respondWithResult(_0x264fe4,null))['catch'](handleError(_0x264fe4,null));};exports[_0x1874('0x52')]=function(_0x5c8ff9,_0x24b525,_0x2aaaf7){if(_0x5c8ff9['body']['id']){delete _0x5c8ff9[_0x1874('0x49')]['id'];}return db[_0x1874('0x2a')]['findOne']({'where':{'id':_0x5c8ff9[_0x1874('0x44')]['id']}})[_0x1874('0x24')](handleEntityNotFound(_0x24b525,null))[_0x1874('0x24')](function(_0x2f57d5){if(_0x2f57d5){return _0x2f57d5[_0x1874('0x52')](_0x5c8ff9['body'][_0x1874('0x53')]||[]);}return null;})[_0x1874('0x24')](respondWithResult(_0x24b525,null))[_0x1874('0x42')](handleError(_0x24b525,null));};
\ No newline at end of file
+var _0x6085=['ZendeskField','getSubjects','getDescriptions','getTags','Tag','setTags','ids','eml-format','request-promise','moment','bluebird','mustache','util','sox','ejs','fs-extra','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/environment','../../mysqldb','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','save','update','destroy','then','sendStatus','error','stack','name','send','index','map','ZendeskConfiguration','rawAttributes','fieldName','type','key','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','pick','where','VIRTUAL','filter','merge','findAll','catch','show','params','keys','includeAll','options','find','create','body','getFields','findOne'];(function(_0x4b6474,_0x21eb9b){var _0x5badd5=function(_0x4a7f38){while(--_0x4a7f38){_0x4b6474['push'](_0x4b6474['shift']());}};_0x5badd5(++_0x21eb9b);}(_0x6085,0x1a1));var _0x5608=function(_0x5a5195,_0x3504a1){_0x5a5195=_0x5a5195-0x0;var _0x34009a=_0x6085[_0x5a5195];return _0x34009a;};'use strict';var emlformat=require(_0x5608('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x5608('0x1'));var moment=require(_0x5608('0x2'));var BPromise=require(_0x5608('0x3'));var Mustache=require(_0x5608('0x4'));var util=require(_0x5608('0x5'));var path=require('path');var sox=require(_0x5608('0x6'));var csv=require('to-csv');var ejs=require(_0x5608('0x7'));var fs=require('fs');var fs_extra=require(_0x5608('0x8'));var _=require(_0x5608('0x9'));var squel=require(_0x5608('0xa'));var crypto=require('crypto');var jsforce=require(_0x5608('0xb'));var deskjs=require(_0x5608('0xc'));var toCsv=require(_0x5608('0xd'));var querystring=require(_0x5608('0xe'));var Papa=require(_0x5608('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x5608('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x5608('0x11'));var logger=require(_0x5608('0x12'))('api');var utils=require('../../config/utils');var config=require(_0x5608('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x5608('0x14'))['db'];function respondWithStatusCode(_0x13097d,_0x4754e1){_0x4754e1=_0x4754e1||0xcc;return function(_0x3dd285){if(_0x3dd285){return _0x13097d['sendStatus'](_0x4754e1);}return _0x13097d[_0x5608('0x15')](_0x4754e1)[_0x5608('0x16')]();};}function respondWithResult(_0x229260,_0x389fb8){_0x389fb8=_0x389fb8||0xc8;return function(_0x3bc903){if(_0x3bc903){return _0x229260[_0x5608('0x15')](_0x389fb8)[_0x5608('0x17')](_0x3bc903);}};}function respondWithFilteredResult(_0xe6cd63,_0x52641f){return function(_0x1b9422){if(_0x1b9422){var _0x135498=typeof _0x52641f['offset']===_0x5608('0x18')&&typeof _0x52641f[_0x5608('0x19')]==='undefined';var _0x33be55=_0x1b9422[_0x5608('0x1a')];var _0x37e4df=_0x135498?0x0:_0x52641f[_0x5608('0x1b')];var _0x209d2f=_0x135498?_0x1b9422[_0x5608('0x1a')]:_0x52641f[_0x5608('0x1b')]+_0x52641f['limit'];var _0x18ad11;if(_0x209d2f>=_0x33be55){_0x209d2f=_0x33be55;_0x18ad11=0xc8;}else{_0x18ad11=0xce;}_0xe6cd63[_0x5608('0x15')](_0x18ad11);return _0xe6cd63[_0x5608('0x1c')](_0x5608('0x1d'),_0x37e4df+'-'+_0x209d2f+'/'+_0x33be55)[_0x5608('0x17')](_0x1b9422);}return null;};}function patchUpdates(_0x30e698){return function(_0x2e25b9){try{jsonpatch[_0x5608('0x1e')](_0x2e25b9,_0x30e698,!![]);}catch(_0x58eaf1){return BPromise['reject'](_0x58eaf1);}return _0x2e25b9[_0x5608('0x1f')]();};}function saveUpdates(_0x13f084,_0x59a28c){return function(_0x8c919b){if(_0x8c919b){return _0x8c919b[_0x5608('0x20')](_0x13f084)['then'](function(_0x2ac105){return _0x2ac105;});}return null;};}function removeEntity(_0x48653e,_0xea24f2){return function(_0x5df2a1){if(_0x5df2a1){return _0x5df2a1[_0x5608('0x21')]()[_0x5608('0x22')](function(){_0x48653e['status'](0xcc)[_0x5608('0x16')]();});}};}function handleEntityNotFound(_0xcc3e48,_0x1f184b){return function(_0x382a47){if(!_0x382a47){_0xcc3e48[_0x5608('0x23')](0x194);}return _0x382a47;};}function handleError(_0xcfd8ca,_0x5e6853){_0x5e6853=_0x5e6853||0x1f4;return function(_0x53540d){logger[_0x5608('0x24')](_0x53540d[_0x5608('0x25')]);if(_0x53540d['name']){delete _0x53540d[_0x5608('0x26')];}_0xcfd8ca['status'](_0x5e6853)[_0x5608('0x27')](_0x53540d);};}exports[_0x5608('0x28')]=function(_0x13165e,_0x54503c){var _0xfde71d={},_0x4efb29={},_0x43a7df={'count':0x0,'rows':[]};var _0x1419e8=_[_0x5608('0x29')](db[_0x5608('0x2a')][_0x5608('0x2b')],function(_0x35d929){return{'name':_0x35d929[_0x5608('0x2c')],'type':_0x35d929[_0x5608('0x2d')][_0x5608('0x2e')]};});_0x4efb29[_0x5608('0x2f')]=_[_0x5608('0x29')](_0x1419e8,_0x5608('0x26'));_0x4efb29[_0x5608('0x30')]=_['keys'](_0x13165e[_0x5608('0x30')]);_0x4efb29[_0x5608('0x31')]=_['intersection'](_0x4efb29[_0x5608('0x2f')],_0x4efb29[_0x5608('0x30')]);_0xfde71d[_0x5608('0x32')]=_[_0x5608('0x33')](_0x4efb29[_0x5608('0x2f')],qs['fields'](_0x13165e[_0x5608('0x30')][_0x5608('0x34')]));_0xfde71d[_0x5608('0x32')]=_0xfde71d[_0x5608('0x32')][_0x5608('0x35')]?_0xfde71d[_0x5608('0x32')]:_0x4efb29['model'];if(!_0x13165e[_0x5608('0x30')][_0x5608('0x36')](_0x5608('0x37'))){_0xfde71d[_0x5608('0x19')]=qs[_0x5608('0x19')](_0x13165e[_0x5608('0x30')][_0x5608('0x19')]);_0xfde71d[_0x5608('0x1b')]=qs[_0x5608('0x1b')](_0x13165e[_0x5608('0x30')][_0x5608('0x1b')]);}_0xfde71d[_0x5608('0x38')]=qs['sort'](_0x13165e[_0x5608('0x30')][_0x5608('0x39')]);_0xfde71d['where']=qs[_0x5608('0x31')](_[_0x5608('0x3a')](_0x13165e['query'],_0x4efb29['filters']),_0x1419e8);if(_0x13165e[_0x5608('0x30')]['filter']){_0xfde71d[_0x5608('0x3b')]=_['merge'](_0xfde71d[_0x5608('0x3b')],{'$or':_[_0x5608('0x29')](_0x1419e8,function(_0x5f18be){if(_0x5f18be[_0x5608('0x2d')]!==_0x5608('0x3c')){var _0x105d2c={};_0x105d2c[_0x5f18be[_0x5608('0x26')]]={'$like':'%'+_0x13165e['query'][_0x5608('0x3d')]+'%'};return _0x105d2c;}})});}_0xfde71d=_[_0x5608('0x3e')]({},_0xfde71d,_0x13165e['options']);var _0x3329cf={'where':_0xfde71d[_0x5608('0x3b')]};return db[_0x5608('0x2a')]['count'](_0x3329cf)[_0x5608('0x22')](function(_0x4b3aa5){_0x43a7df['count']=_0x4b3aa5;if(_0x13165e[_0x5608('0x30')]['includeAll']){_0xfde71d['include']=[{'all':!![]}];}return db['ZendeskConfiguration'][_0x5608('0x3f')](_0xfde71d);})[_0x5608('0x22')](function(_0xccbe0f){_0x43a7df['rows']=_0xccbe0f;return _0x43a7df;})[_0x5608('0x22')](respondWithFilteredResult(_0x54503c,_0xfde71d))[_0x5608('0x40')](handleError(_0x54503c,null));};exports[_0x5608('0x41')]=function(_0x4441ab,_0x2d88cf){var _0x1e0db8={'raw':![],'where':{'id':_0x4441ab[_0x5608('0x42')]['id']}},_0xf28308={};_0xf28308[_0x5608('0x2f')]=_[_0x5608('0x43')](db[_0x5608('0x2a')][_0x5608('0x2b')]);_0xf28308[_0x5608('0x30')]=_[_0x5608('0x43')](_0x4441ab['query']);_0xf28308[_0x5608('0x31')]=_[_0x5608('0x33')](_0xf28308[_0x5608('0x2f')],_0xf28308[_0x5608('0x30')]);_0x1e0db8[_0x5608('0x32')]=_['intersection'](_0xf28308[_0x5608('0x2f')],qs[_0x5608('0x34')](_0x4441ab[_0x5608('0x30')]['fields']));_0x1e0db8[_0x5608('0x32')]=_0x1e0db8[_0x5608('0x32')][_0x5608('0x35')]?_0x1e0db8[_0x5608('0x32')]:_0xf28308[_0x5608('0x2f')];if(_0x4441ab[_0x5608('0x30')][_0x5608('0x44')]){_0x1e0db8['include']=[{'all':!![]}];}_0x1e0db8=_['merge']({},_0x1e0db8,_0x4441ab[_0x5608('0x45')]);return db[_0x5608('0x2a')][_0x5608('0x46')](_0x1e0db8)[_0x5608('0x22')](handleEntityNotFound(_0x2d88cf,null))['then'](respondWithResult(_0x2d88cf,null))[_0x5608('0x40')](handleError(_0x2d88cf,null));};exports['create']=function(_0x29fe15,_0x53c26f){return db['ZendeskConfiguration'][_0x5608('0x47')](_0x29fe15['body'],{})[_0x5608('0x22')](respondWithResult(_0x53c26f,0xc9))[_0x5608('0x40')](handleError(_0x53c26f,null));};exports[_0x5608('0x20')]=function(_0x3dc9a1,_0x258dde){if(_0x3dc9a1[_0x5608('0x48')]['id']){delete _0x3dc9a1[_0x5608('0x48')]['id'];}return db[_0x5608('0x2a')]['find']({'where':{'id':_0x3dc9a1[_0x5608('0x42')]['id']}})[_0x5608('0x22')](handleEntityNotFound(_0x258dde,null))['then'](saveUpdates(_0x3dc9a1[_0x5608('0x48')],null))[_0x5608('0x22')](respondWithResult(_0x258dde,null))[_0x5608('0x40')](handleError(_0x258dde,null));};exports[_0x5608('0x21')]=function(_0x5f27a5,_0xafbe18){return db[_0x5608('0x2a')][_0x5608('0x46')]({'where':{'id':_0x5f27a5[_0x5608('0x42')]['id']}})[_0x5608('0x22')](handleEntityNotFound(_0xafbe18,null))[_0x5608('0x22')](removeEntity(_0xafbe18,null))[_0x5608('0x40')](handleError(_0xafbe18,null));};exports[_0x5608('0x49')]=function(_0x392977,_0x2c2c2d,_0x5a24e8){var _0x18e28a={};var _0x254584={};var _0x26b8a7;var _0x2d0b92;return db[_0x5608('0x2a')][_0x5608('0x4a')]({'where':{'id':_0x392977[_0x5608('0x42')]['id']}})[_0x5608('0x22')](handleEntityNotFound(_0x2c2c2d,null))[_0x5608('0x22')](function(_0x1ec7d7){if(_0x1ec7d7){_0x26b8a7=_0x1ec7d7;_0x254584[_0x5608('0x2f')]=_['keys'](db[_0x5608('0x4b')][_0x5608('0x2b')]);_0x254584[_0x5608('0x30')]=_['keys'](_0x392977[_0x5608('0x30')]);_0x254584[_0x5608('0x31')]=_[_0x5608('0x33')](_0x254584[_0x5608('0x2f')],_0x254584[_0x5608('0x30')]);_0x18e28a['attributes']=_[_0x5608('0x33')](_0x254584[_0x5608('0x2f')],qs['fields'](_0x392977[_0x5608('0x30')]['fields']));_0x18e28a[_0x5608('0x32')]=_0x18e28a['attributes'][_0x5608('0x35')]?_0x18e28a['attributes']:_0x254584[_0x5608('0x2f')];_0x18e28a[_0x5608('0x38')]=qs[_0x5608('0x39')](_0x392977[_0x5608('0x30')][_0x5608('0x39')]);_0x18e28a[_0x5608('0x3b')]=qs[_0x5608('0x31')](_[_0x5608('0x3a')](_0x392977[_0x5608('0x30')],_0x254584[_0x5608('0x31')]));if(_0x392977[_0x5608('0x30')][_0x5608('0x3d')]){_0x18e28a[_0x5608('0x3b')]=_[_0x5608('0x3e')](_0x18e28a[_0x5608('0x3b')],{'$or':_[_0x5608('0x29')](_0x18e28a[_0x5608('0x32')],function(_0x3a5c5f){var _0x1813eb={};_0x1813eb[_0x3a5c5f]={'$like':'%'+_0x392977[_0x5608('0x30')][_0x5608('0x3d')]+'%'};return _0x1813eb;})});}_0x18e28a=_[_0x5608('0x3e')]({},_0x18e28a,_0x392977['options']);return _0x26b8a7[_0x5608('0x49')](_0x18e28a);}})['then'](function(_0x2c3e21){if(_0x2c3e21){_0x2d0b92=_0x2c3e21[_0x5608('0x35')];if(!_0x392977[_0x5608('0x30')][_0x5608('0x36')]('nolimit')){_0x18e28a['limit']=qs['limit'](_0x392977[_0x5608('0x30')][_0x5608('0x19')]);_0x18e28a[_0x5608('0x1b')]=qs[_0x5608('0x1b')](_0x392977['query'][_0x5608('0x1b')]);}return _0x26b8a7[_0x5608('0x49')](_0x18e28a);}})['then'](function(_0x2c9e70){if(_0x2c9e70){return _0x2c9e70?{'count':_0x2d0b92,'rows':_0x2c9e70}:null;}})[_0x5608('0x22')](respondWithResult(_0x2c2c2d,null))[_0x5608('0x40')](handleError(_0x2c2c2d,null));};exports[_0x5608('0x4c')]=function(_0x19f402,_0x1ec025,_0x2f1cc6){var _0xaa194c={};var _0x3703ca={};var _0x16ed45;var _0x3fb33e;return db[_0x5608('0x2a')]['findOne']({'where':{'id':_0x19f402[_0x5608('0x42')]['id']}})[_0x5608('0x22')](handleEntityNotFound(_0x1ec025,null))['then'](function(_0x4e191c){if(_0x4e191c){_0x16ed45=_0x4e191c;_0x3703ca[_0x5608('0x2f')]=_['keys'](db[_0x5608('0x4b')][_0x5608('0x2b')]);_0x3703ca[_0x5608('0x30')]=_[_0x5608('0x43')](_0x19f402[_0x5608('0x30')]);_0x3703ca['filters']=_['intersection'](_0x3703ca[_0x5608('0x2f')],_0x3703ca[_0x5608('0x30')]);_0xaa194c[_0x5608('0x32')]=_[_0x5608('0x33')](_0x3703ca[_0x5608('0x2f')],qs['fields'](_0x19f402['query']['fields']));_0xaa194c[_0x5608('0x32')]=_0xaa194c[_0x5608('0x32')][_0x5608('0x35')]?_0xaa194c[_0x5608('0x32')]:_0x3703ca[_0x5608('0x2f')];_0xaa194c['order']=qs['sort'](_0x19f402['query'][_0x5608('0x39')]);_0xaa194c[_0x5608('0x3b')]=qs['filters'](_[_0x5608('0x3a')](_0x19f402[_0x5608('0x30')],_0x3703ca[_0x5608('0x31')]));if(_0x19f402['query'][_0x5608('0x3d')]){_0xaa194c[_0x5608('0x3b')]=_[_0x5608('0x3e')](_0xaa194c[_0x5608('0x3b')],{'$or':_[_0x5608('0x29')](_0xaa194c[_0x5608('0x32')],function(_0x55e941){var _0x488d7e={};_0x488d7e[_0x55e941]={'$like':'%'+_0x19f402['query']['filter']+'%'};return _0x488d7e;})});}_0xaa194c=_[_0x5608('0x3e')]({},_0xaa194c,_0x19f402[_0x5608('0x45')]);return _0x16ed45[_0x5608('0x4c')](_0xaa194c);}})['then'](function(_0x2ac246){if(_0x2ac246){_0x3fb33e=_0x2ac246['length'];if(!_0x19f402[_0x5608('0x30')][_0x5608('0x36')]('nolimit')){_0xaa194c[_0x5608('0x19')]=qs[_0x5608('0x19')](_0x19f402[_0x5608('0x30')][_0x5608('0x19')]);_0xaa194c[_0x5608('0x1b')]=qs[_0x5608('0x1b')](_0x19f402[_0x5608('0x30')][_0x5608('0x1b')]);}return _0x16ed45[_0x5608('0x4c')](_0xaa194c);}})[_0x5608('0x22')](function(_0x4a467a){if(_0x4a467a){return _0x4a467a?{'count':_0x3fb33e,'rows':_0x4a467a}:null;}})[_0x5608('0x22')](respondWithResult(_0x1ec025,null))[_0x5608('0x40')](handleError(_0x1ec025,null));};exports['getDescriptions']=function(_0x2464d1,_0x1a1a7d,_0x4c0ef0){var _0x1323af={};var _0x9b3173={};var _0xc9bd44;var _0x4b79f2;return db['ZendeskConfiguration'][_0x5608('0x4a')]({'where':{'id':_0x2464d1[_0x5608('0x42')]['id']}})[_0x5608('0x22')](handleEntityNotFound(_0x1a1a7d,null))[_0x5608('0x22')](function(_0x3198bf){if(_0x3198bf){_0xc9bd44=_0x3198bf;_0x9b3173[_0x5608('0x2f')]=_[_0x5608('0x43')](db[_0x5608('0x4b')][_0x5608('0x2b')]);_0x9b3173['query']=_[_0x5608('0x43')](_0x2464d1[_0x5608('0x30')]);_0x9b3173['filters']=_[_0x5608('0x33')](_0x9b3173[_0x5608('0x2f')],_0x9b3173[_0x5608('0x30')]);_0x1323af[_0x5608('0x32')]=_[_0x5608('0x33')](_0x9b3173['model'],qs[_0x5608('0x34')](_0x2464d1[_0x5608('0x30')][_0x5608('0x34')]));_0x1323af['attributes']=_0x1323af[_0x5608('0x32')][_0x5608('0x35')]?_0x1323af[_0x5608('0x32')]:_0x9b3173[_0x5608('0x2f')];_0x1323af[_0x5608('0x38')]=qs[_0x5608('0x39')](_0x2464d1[_0x5608('0x30')][_0x5608('0x39')]);_0x1323af[_0x5608('0x3b')]=qs[_0x5608('0x31')](_[_0x5608('0x3a')](_0x2464d1[_0x5608('0x30')],_0x9b3173[_0x5608('0x31')]));if(_0x2464d1[_0x5608('0x30')][_0x5608('0x3d')]){_0x1323af[_0x5608('0x3b')]=_[_0x5608('0x3e')](_0x1323af[_0x5608('0x3b')],{'$or':_[_0x5608('0x29')](_0x1323af['attributes'],function(_0x59c53d){var _0x4ea6c6={};_0x4ea6c6[_0x59c53d]={'$like':'%'+_0x2464d1['query'][_0x5608('0x3d')]+'%'};return _0x4ea6c6;})});}_0x1323af=_['merge']({},_0x1323af,_0x2464d1[_0x5608('0x45')]);return _0xc9bd44[_0x5608('0x4d')](_0x1323af);}})[_0x5608('0x22')](function(_0x79f998){if(_0x79f998){_0x4b79f2=_0x79f998[_0x5608('0x35')];if(!_0x2464d1[_0x5608('0x30')][_0x5608('0x36')](_0x5608('0x37'))){_0x1323af[_0x5608('0x19')]=qs[_0x5608('0x19')](_0x2464d1[_0x5608('0x30')][_0x5608('0x19')]);_0x1323af[_0x5608('0x1b')]=qs['offset'](_0x2464d1[_0x5608('0x30')][_0x5608('0x1b')]);}return _0xc9bd44['getDescriptions'](_0x1323af);}})['then'](function(_0x523215){if(_0x523215){return _0x523215?{'count':_0x4b79f2,'rows':_0x523215}:null;}})[_0x5608('0x22')](respondWithResult(_0x1a1a7d,null))[_0x5608('0x40')](handleError(_0x1a1a7d,null));};exports[_0x5608('0x4e')]=function(_0x40e41e,_0x54a530,_0x4b9753){var _0x1b7d88={};var _0x1fb94f={};var _0x44eec1;var _0x57aeec;return db[_0x5608('0x2a')]['findOne']({'where':{'id':_0x40e41e[_0x5608('0x42')]['id']}})[_0x5608('0x22')](handleEntityNotFound(_0x54a530,null))['then'](function(_0x4dde60){if(_0x4dde60){_0x44eec1=_0x4dde60;_0x1fb94f['model']=_[_0x5608('0x43')](db[_0x5608('0x4f')]['rawAttributes']);_0x1fb94f[_0x5608('0x30')]=_[_0x5608('0x43')](_0x40e41e[_0x5608('0x30')]);_0x1fb94f[_0x5608('0x31')]=_[_0x5608('0x33')](_0x1fb94f[_0x5608('0x2f')],_0x1fb94f[_0x5608('0x30')]);_0x1b7d88[_0x5608('0x32')]=_[_0x5608('0x33')](_0x1fb94f[_0x5608('0x2f')],qs[_0x5608('0x34')](_0x40e41e['query']['fields']));_0x1b7d88['attributes']=_0x1b7d88[_0x5608('0x32')][_0x5608('0x35')]?_0x1b7d88['attributes']:_0x1fb94f[_0x5608('0x2f')];_0x1b7d88[_0x5608('0x38')]=qs['sort'](_0x40e41e[_0x5608('0x30')][_0x5608('0x39')]);_0x1b7d88[_0x5608('0x3b')]=qs[_0x5608('0x31')](_[_0x5608('0x3a')](_0x40e41e[_0x5608('0x30')],_0x1fb94f['filters']));if(_0x40e41e[_0x5608('0x30')][_0x5608('0x3d')]){_0x1b7d88[_0x5608('0x3b')]=_['merge'](_0x1b7d88['where'],{'$or':_[_0x5608('0x29')](_0x1b7d88[_0x5608('0x32')],function(_0x595d67){var _0x32c35a={};_0x32c35a[_0x595d67]={'$like':'%'+_0x40e41e[_0x5608('0x30')][_0x5608('0x3d')]+'%'};return _0x32c35a;})});}_0x1b7d88=_[_0x5608('0x3e')]({},_0x1b7d88,_0x40e41e[_0x5608('0x45')]);return _0x44eec1[_0x5608('0x4e')](_0x1b7d88);}})[_0x5608('0x22')](function(_0x2e0589){if(_0x2e0589){_0x57aeec=_0x2e0589['length'];if(!_0x40e41e[_0x5608('0x30')][_0x5608('0x36')](_0x5608('0x37'))){_0x1b7d88[_0x5608('0x19')]=qs['limit'](_0x40e41e[_0x5608('0x30')][_0x5608('0x19')]);_0x1b7d88[_0x5608('0x1b')]=qs[_0x5608('0x1b')](_0x40e41e[_0x5608('0x30')]['offset']);}return _0x44eec1['getTags'](_0x1b7d88);}})[_0x5608('0x22')](function(_0x3b23a9){if(_0x3b23a9){return _0x3b23a9?{'count':_0x57aeec,'rows':_0x3b23a9}:null;}})[_0x5608('0x22')](respondWithResult(_0x54a530,null))[_0x5608('0x40')](handleError(_0x54a530,null));};exports['setTags']=function(_0xcdcff5,_0x3b38e8,_0x4540eb){if(_0xcdcff5['body']['id']){delete _0xcdcff5[_0x5608('0x48')]['id'];}return db[_0x5608('0x2a')][_0x5608('0x4a')]({'where':{'id':_0xcdcff5[_0x5608('0x42')]['id']}})[_0x5608('0x22')](handleEntityNotFound(_0x3b38e8,null))[_0x5608('0x22')](function(_0x5e3e8d){if(_0x5e3e8d){return _0x5e3e8d[_0x5608('0x50')](_0xcdcff5[_0x5608('0x48')][_0x5608('0x51')]||[]);}return null;})[_0x5608('0x22')](respondWithResult(_0x3b38e8,null))[_0x5608('0x40')](handleError(_0x3b38e8,null));};
\ No newline at end of file
index 884e2e8..bd334ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2032=['int_zendesk_configurations','util','../../config/logger','api','bluebird','request-promise','rimraf','../../config/environment','./intZendeskConfiguration.attributes','exports','define','ZendeskConfiguration'];(function(_0xff025f,_0x62f531){var _0x4bf1de=function(_0x245d2f){while(--_0x245d2f){_0xff025f['push'](_0xff025f['shift']());}};_0x4bf1de(++_0x62f531);}(_0x2032,0xd9));var _0x2203=function(_0x1a1989,_0x3af0e4){_0x1a1989=_0x1a1989-0x0;var _0x3d13bc=_0x2032[_0x1a1989];return _0x3d13bc;};'use strict';var _=require('lodash');var util=require(_0x2203('0x0'));var logger=require(_0x2203('0x1'))(_0x2203('0x2'));var moment=require('moment');var BPromise=require(_0x2203('0x3'));var rp=require(_0x2203('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x2203('0x5'));var config=require(_0x2203('0x6'));var attributes=require(_0x2203('0x7'));module[_0x2203('0x8')]=function(_0x3f7ba1,_0x13367a){return _0x3f7ba1[_0x2203('0x9')](_0x2203('0xa'),attributes,{'tableName':_0x2203('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd824=['rimraf','../../config/environment','ZendeskConfiguration','int_zendesk_configurations','lodash','util','moment','bluebird','request-promise','path'];(function(_0x4efb7c,_0x1eab54){var _0x3a2e82=function(_0x3770c1){while(--_0x3770c1){_0x4efb7c['push'](_0x4efb7c['shift']());}};_0x3a2e82(++_0x1eab54);}(_0xd824,0xc2));var _0x4d82=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0xd824[_0xfae23b];return _0x200640;};'use strict';var _=require(_0x4d82('0x0'));var util=require(_0x4d82('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x4d82('0x2'));var BPromise=require(_0x4d82('0x3'));var rp=require(_0x4d82('0x4'));var fs=require('fs');var path=require(_0x4d82('0x5'));var rimraf=require(_0x4d82('0x6'));var config=require(_0x4d82('0x7'));var attributes=require('./intZendeskConfiguration.attributes');module['exports']=function(_0xd00023,_0x583c7c){return _0xd00023['define'](_0x4d82('0x8'),attributes,{'tableName':_0x4d82('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2fdcba5..cb2e8ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc59e=['client','request','then','ZendeskConfiguration,\x20%s,\x20%s','request\x20sent','error','message','info','result','catch','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xc59e,0x13a));var _0xec59=function(_0x384c23,_0x30cd65){_0x384c23=_0x384c23-0x0;var _0x1fdf67=_0xc59e[_0x384c23];return _0x1fdf67;};'use strict';var _=require(_0xec59('0x0'));var util=require('util');var moment=require(_0xec59('0x1'));var BPromise=require('bluebird');var rs=require(_0xec59('0x2'));var fs=require('fs');var Redis=require(_0xec59('0x3'));var db=require(_0xec59('0x4'))['db'];var utils=require(_0xec59('0x5'));var logger=require(_0xec59('0x6'))(_0xec59('0x7'));var config=require(_0xec59('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xec59('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x23428c,_0x505a1b,_0x1717ac){return new BPromise(function(_0x3f7125,_0x2d6016){return client[_0xec59('0xa')](_0x23428c,_0x1717ac)[_0xec59('0xb')](function(_0x15d5bf){logger['info'](_0xec59('0xc'),_0x505a1b,_0xec59('0xd'));logger['debug']('ZendeskConfiguration,\x20%s,\x20%s,\x20%s',_0x505a1b,_0xec59('0xd'),JSON['stringify'](_0x15d5bf));if(_0x15d5bf['error']){if(_0x15d5bf[_0xec59('0xe')]['code']===0x1f4){logger['error'](_0xec59('0xc'),_0x505a1b,_0x15d5bf[_0xec59('0xe')][_0xec59('0xf')]);return _0x2d6016(_0x15d5bf['error'][_0xec59('0xf')]);}logger[_0xec59('0xe')](_0xec59('0xc'),_0x505a1b,_0x15d5bf[_0xec59('0xe')]['message']);return _0x3f7125(_0x15d5bf[_0xec59('0xe')][_0xec59('0xf')]);}else{logger[_0xec59('0x10')](_0xec59('0xc'),_0x505a1b,'request\x20sent');_0x3f7125(_0x15d5bf[_0xec59('0x11')][_0xec59('0xf')]);}})[_0xec59('0x12')](function(_0x46af16){logger[_0xec59('0xe')](_0xec59('0xc'),_0x505a1b,_0x46af16);_0x2d6016(_0x46af16);});});}
\ No newline at end of file
+var _0xe3ad=['../../config/logger','rpc','jayson/promise','client','http','request','then','info','ZendeskConfiguration,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','catch','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x25b9e7,_0xf7a8ce){var _0x6080e9=function(_0x2be9b3){while(--_0x2be9b3){_0x25b9e7['push'](_0x25b9e7['shift']());}};_0x6080e9(++_0xf7a8ce);}(_0xe3ad,0x1b2));var _0xde3a=function(_0x2ab0c3,_0x980ec2){_0x2ab0c3=_0x2ab0c3-0x0;var _0x24e20f=_0xe3ad[_0x2ab0c3];return _0x24e20f;};'use strict';var _=require('lodash');var util=require(_0xde3a('0x0'));var moment=require('moment');var BPromise=require(_0xde3a('0x1'));var rs=require(_0xde3a('0x2'));var fs=require('fs');var Redis=require(_0xde3a('0x3'));var db=require(_0xde3a('0x4'))['db'];var utils=require(_0xde3a('0x5'));var logger=require(_0xde3a('0x6'))(_0xde3a('0x7'));var config=require('../../config/environment');var jayson=require(_0xde3a('0x8'));var client=jayson[_0xde3a('0x9')][_0xde3a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x44278a,_0x7d37a0,_0x34e2ba){return new BPromise(function(_0xed89a,_0x2681ad){return client[_0xde3a('0xb')](_0x44278a,_0x34e2ba)[_0xde3a('0xc')](function(_0x447bc1){logger[_0xde3a('0xd')](_0xde3a('0xe'),_0x7d37a0,_0xde3a('0xf'));logger[_0xde3a('0x10')]('ZendeskConfiguration,\x20%s,\x20%s,\x20%s',_0x7d37a0,_0xde3a('0xf'),JSON[_0xde3a('0x11')](_0x447bc1));if(_0x447bc1[_0xde3a('0x12')]){if(_0x447bc1[_0xde3a('0x12')]['code']===0x1f4){logger[_0xde3a('0x12')](_0xde3a('0xe'),_0x7d37a0,_0x447bc1[_0xde3a('0x12')][_0xde3a('0x13')]);return _0x2681ad(_0x447bc1[_0xde3a('0x12')][_0xde3a('0x13')]);}logger[_0xde3a('0x12')](_0xde3a('0xe'),_0x7d37a0,_0x447bc1[_0xde3a('0x12')][_0xde3a('0x13')]);return _0xed89a(_0x447bc1[_0xde3a('0x12')][_0xde3a('0x13')]);}else{logger[_0xde3a('0xd')](_0xde3a('0xe'),_0x7d37a0,'request\x20sent');_0xed89a(_0x447bc1[_0xde3a('0x14')]['message']);}})[_0xde3a('0x15')](function(_0x4ca28b){logger[_0xde3a('0x12')](_0xde3a('0xe'),_0x7d37a0,_0x4ca28b);_0x2681ad(_0x4ca28b);});});}
\ No newline at end of file
index caec761..bc431dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4bbc=['update','delete','exports','multer','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZendeskField.controller','get','isAuthenticated','index','/:id','show','put'];(function(_0x396930,_0x367b48){var _0x214d22=function(_0x4d239c){while(--_0x4d239c){_0x396930['push'](_0x396930['shift']());}};_0x214d22(++_0x367b48);}(_0x4bbc,0x18a));var _0xc4bb=function(_0x499fe1,_0x5881b3){_0x499fe1=_0x499fe1-0x0;var _0x1f5101=_0x4bbc[_0x499fe1];return _0x1f5101;};'use strict';var multer=require(_0xc4bb('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xc4bb('0x1'));var express=require(_0xc4bb('0x2'));var router=express[_0xc4bb('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xc4bb('0x4'));var interaction=require(_0xc4bb('0x5'));var config=require(_0xc4bb('0x6'));var controller=require(_0xc4bb('0x7'));router[_0xc4bb('0x8')]('/',auth[_0xc4bb('0x9')](),controller[_0xc4bb('0xa')]);router[_0xc4bb('0x8')](_0xc4bb('0xb'),auth[_0xc4bb('0x9')](),controller[_0xc4bb('0xc')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0xc4bb('0xd')](_0xc4bb('0xb'),auth[_0xc4bb('0x9')](),controller[_0xc4bb('0xe')]);router[_0xc4bb('0xf')]('/:id',auth[_0xc4bb('0x9')](),controller['destroy']);module[_0xc4bb('0x10')]=router;
\ No newline at end of file
+var _0x753d=['index','/:id','isAuthenticated','show','post','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../config/environment'];(function(_0x275c77,_0x2cb88c){var _0x23fb44=function(_0xeb4bb1){while(--_0xeb4bb1){_0x275c77['push'](_0x275c77['shift']());}};_0x23fb44(++_0x2cb88c);}(_0x753d,0x133));var _0xd753=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x753d[_0x122ef9];return _0x42fba0;};'use strict';var multer=require(_0xd753('0x0'));var util=require(_0xd753('0x1'));var path=require(_0xd753('0x2'));var timeout=require(_0xd753('0x3'));var express=require(_0xd753('0x4'));var router=express[_0xd753('0x5')]();var fs_extra=require(_0xd753('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xd753('0x7'));var controller=require('./intZendeskField.controller');router['get']('/',auth['isAuthenticated'](),controller[_0xd753('0x8')]);router['get'](_0xd753('0x9'),auth[_0xd753('0xa')](),controller[_0xd753('0xb')]);router[_0xd753('0xc')]('/',auth[_0xd753('0xa')](),controller['create']);router['put']('/:id',auth[_0xd753('0xa')](),controller['update']);router[_0xd753('0xd')]('/:id',auth['isAuthenticated'](),controller[_0xd753('0xe')]);module['exports']=router;
\ No newline at end of file
index 2a2136d..bf612f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd9fb=['variable','customVariable','keyValue','picklist','STRING','sequelize','exports','ENUM','string'];(function(_0x44ea92,_0x58b09d){var _0x38baab=function(_0x51cd38){while(--_0x51cd38){_0x44ea92['push'](_0x44ea92['shift']());}};_0x38baab(++_0x58b09d);}(_0xd9fb,0x140));var _0xbd9f=function(_0x710815,_0x520da8){_0x710815=_0x710815-0x0;var _0x5b3b89=_0xd9fb[_0x710815];return _0x5b3b89;};'use strict';var Sequelize=require(_0xbd9f('0x0'));module[_0xbd9f('0x1')]={'type':{'type':Sequelize[_0xbd9f('0x2')](_0xbd9f('0x3'),_0xbd9f('0x4'),_0xbd9f('0x5'),_0xbd9f('0x6'),_0xbd9f('0x7')),'defaultValue':_0xbd9f('0x3')},'content':{'type':Sequelize[_0xbd9f('0x8')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0xbd9f('0x2')]('string',_0xbd9f('0x4'),_0xbd9f('0x5'))},'keyContent':{'type':Sequelize[_0xbd9f('0x8')]},'idField':{'type':Sequelize[_0xbd9f('0x8')]},'nameField':{'type':Sequelize[_0xbd9f('0x8')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xbd9f('0x8')]}};
\ No newline at end of file
+var _0xe49d=['ENUM','string','keyValue','STRING','variable','customVariable','BOOLEAN','sequelize','exports'];(function(_0x2cf470,_0x5337da){var _0x2041f5=function(_0x78c3da){while(--_0x78c3da){_0x2cf470['push'](_0x2cf470['shift']());}};_0x2041f5(++_0x5337da);}(_0xe49d,0xa9));var _0xde49=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xe49d[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require(_0xde49('0x0'));module[_0xde49('0x1')]={'type':{'type':Sequelize[_0xde49('0x2')](_0xde49('0x3'),'variable','customVariable',_0xde49('0x4'),'picklist'),'defaultValue':_0xde49('0x3')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0xde49('0x5')]},'keyType':{'type':Sequelize[_0xde49('0x2')](_0xde49('0x3'),_0xde49('0x6'),_0xde49('0x7'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0xde49('0x5')]},'nameField':{'type':Sequelize[_0xde49('0x5')]},'customField':{'type':Sequelize[_0xde49('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xde49('0x5')]}};
\ No newline at end of file
index 6c56687..39c9523 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x883e=['nolimit','sort','pick','filter','where','merge','type','VIRTUAL','options','includeAll','include','findAll','catch','create','body','find','params','destroy','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/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','status','json','offset','undefined','limit','count','set','apply','reject','save','update','then','end','stack','name','send','ZendeskField','rawAttributes','fieldName','key','model','map','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty'];(function(_0x5ee049,_0x1bc45b){var _0x5e41e8=function(_0x4ffc6d){while(--_0x4ffc6d){_0x5ee049['push'](_0x5ee049['shift']());}};_0x5e41e8(++_0x1bc45b);}(_0x883e,0xf9));var _0xe883=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x883e[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0xe883('0x0'));var rimraf=require(_0xe883('0x1'));var zipdir=require(_0xe883('0x2'));var jsonpatch=require(_0xe883('0x3'));var rp=require(_0xe883('0x4'));var moment=require(_0xe883('0x5'));var BPromise=require(_0xe883('0x6'));var Mustache=require(_0xe883('0x7'));var util=require(_0xe883('0x8'));var path=require(_0xe883('0x9'));var sox=require(_0xe883('0xa'));var csv=require(_0xe883('0xb'));var ejs=require(_0xe883('0xc'));var fs=require('fs');var fs_extra=require(_0xe883('0xd'));var _=require(_0xe883('0xe'));var squel=require(_0xe883('0xf'));var crypto=require(_0xe883('0x10'));var jsforce=require(_0xe883('0x11'));var deskjs=require('desk.js');var toCsv=require(_0xe883('0xb'));var querystring=require(_0xe883('0x12'));var Papa=require(_0xe883('0x13'));var Redis=require(_0xe883('0x14'));var authService=require(_0xe883('0x15'));var qs=require(_0xe883('0x16'));var as=require(_0xe883('0x17'));var hardwareService=require(_0xe883('0x18'));var logger=require('../../config/logger')(_0xe883('0x19'));var utils=require(_0xe883('0x1a'));var config=require(_0xe883('0x1b'));var licenseUtil=require(_0xe883('0x1c'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5d59ed,_0x1b1c0a){_0x1b1c0a=_0x1b1c0a||0xcc;return function(_0x2b3904){if(_0x2b3904){return _0x5d59ed['sendStatus'](_0x1b1c0a);}return _0x5d59ed[_0xe883('0x1d')](_0x1b1c0a)['end']();};}function respondWithResult(_0x403826,_0x2c2d25){_0x2c2d25=_0x2c2d25||0xc8;return function(_0x534880){if(_0x534880){return _0x403826[_0xe883('0x1d')](_0x2c2d25)[_0xe883('0x1e')](_0x534880);}};}function respondWithFilteredResult(_0x40cc3d,_0x1cd19d){return function(_0x545389){if(_0x545389){var _0x2c5753=typeof _0x1cd19d[_0xe883('0x1f')]===_0xe883('0x20')&&typeof _0x1cd19d[_0xe883('0x21')]===_0xe883('0x20');var _0x1e87d7=_0x545389[_0xe883('0x22')];var _0x3008b3=_0x2c5753?0x0:_0x1cd19d[_0xe883('0x1f')];var _0x46b56e=_0x2c5753?_0x545389['count']:_0x1cd19d['offset']+_0x1cd19d[_0xe883('0x21')];var _0x461e8b;if(_0x46b56e>=_0x1e87d7){_0x46b56e=_0x1e87d7;_0x461e8b=0xc8;}else{_0x461e8b=0xce;}_0x40cc3d[_0xe883('0x1d')](_0x461e8b);return _0x40cc3d[_0xe883('0x23')]('Content-Range',_0x3008b3+'-'+_0x46b56e+'/'+_0x1e87d7)['json'](_0x545389);}return null;};}function patchUpdates(_0x3a34fc){return function(_0x185d74){try{jsonpatch[_0xe883('0x24')](_0x185d74,_0x3a34fc,!![]);}catch(_0x36e77e){return BPromise[_0xe883('0x25')](_0x36e77e);}return _0x185d74[_0xe883('0x26')]();};}function saveUpdates(_0x42b02c,_0x5895ae){return function(_0x539cb5){if(_0x539cb5){return _0x539cb5[_0xe883('0x27')](_0x42b02c)[_0xe883('0x28')](function(_0x339986){return _0x339986;});}return null;};}function removeEntity(_0xbdce0c,_0x22c441){return function(_0x278bed){if(_0x278bed){return _0x278bed['destroy']()[_0xe883('0x28')](function(){_0xbdce0c[_0xe883('0x1d')](0xcc)[_0xe883('0x29')]();});}};}function handleEntityNotFound(_0x29ecb8,_0x1e9f8e){return function(_0x247e7c){if(!_0x247e7c){_0x29ecb8['sendStatus'](0x194);}return _0x247e7c;};}function handleError(_0x565753,_0x41a526){_0x41a526=_0x41a526||0x1f4;return function(_0x3fe22b){logger['error'](_0x3fe22b[_0xe883('0x2a')]);if(_0x3fe22b[_0xe883('0x2b')]){delete _0x3fe22b[_0xe883('0x2b')];}_0x565753[_0xe883('0x1d')](_0x41a526)[_0xe883('0x2c')](_0x3fe22b);};}exports['index']=function(_0x1e0213,_0xdbd4d6){var _0x51421e={},_0x3494b6={},_0x408d7e={'count':0x0,'rows':[]};var _0x545962=_['map'](db[_0xe883('0x2d')][_0xe883('0x2e')],function(_0x112e62){return{'name':_0x112e62[_0xe883('0x2f')],'type':_0x112e62['type'][_0xe883('0x30')]};});_0x3494b6[_0xe883('0x31')]=_[_0xe883('0x32')](_0x545962,_0xe883('0x2b'));_0x3494b6['query']=_[_0xe883('0x33')](_0x1e0213[_0xe883('0x34')]);_0x3494b6[_0xe883('0x35')]=_['intersection'](_0x3494b6[_0xe883('0x31')],_0x3494b6['query']);_0x51421e['attributes']=_[_0xe883('0x36')](_0x3494b6[_0xe883('0x31')],qs[_0xe883('0x37')](_0x1e0213[_0xe883('0x34')]['fields']));_0x51421e[_0xe883('0x38')]=_0x51421e[_0xe883('0x38')][_0xe883('0x39')]?_0x51421e['attributes']:_0x3494b6[_0xe883('0x31')];if(!_0x1e0213[_0xe883('0x34')][_0xe883('0x3a')](_0xe883('0x3b'))){_0x51421e['limit']=qs['limit'](_0x1e0213[_0xe883('0x34')][_0xe883('0x21')]);_0x51421e[_0xe883('0x1f')]=qs['offset'](_0x1e0213[_0xe883('0x34')][_0xe883('0x1f')]);}_0x51421e['order']=qs[_0xe883('0x3c')](_0x1e0213[_0xe883('0x34')][_0xe883('0x3c')]);_0x51421e['where']=qs['filters'](_[_0xe883('0x3d')](_0x1e0213['query'],_0x3494b6[_0xe883('0x35')]),_0x545962);if(_0x1e0213['query'][_0xe883('0x3e')]){_0x51421e[_0xe883('0x3f')]=_[_0xe883('0x40')](_0x51421e['where'],{'$or':_[_0xe883('0x32')](_0x545962,function(_0x578a90){if(_0x578a90[_0xe883('0x41')]!==_0xe883('0x42')){var _0x5aa557={};_0x5aa557[_0x578a90[_0xe883('0x2b')]]={'$like':'%'+_0x1e0213[_0xe883('0x34')][_0xe883('0x3e')]+'%'};return _0x5aa557;}})});}_0x51421e=_[_0xe883('0x40')]({},_0x51421e,_0x1e0213[_0xe883('0x43')]);var _0x4ebc4b={'where':_0x51421e[_0xe883('0x3f')]};return db[_0xe883('0x2d')][_0xe883('0x22')](_0x4ebc4b)['then'](function(_0x5c7837){_0x408d7e['count']=_0x5c7837;if(_0x1e0213[_0xe883('0x34')][_0xe883('0x44')]){_0x51421e[_0xe883('0x45')]=[{'all':!![]}];}return db[_0xe883('0x2d')][_0xe883('0x46')](_0x51421e);})[_0xe883('0x28')](function(_0x5aa846){_0x408d7e['rows']=_0x5aa846;return _0x408d7e;})[_0xe883('0x28')](respondWithFilteredResult(_0xdbd4d6,_0x51421e))[_0xe883('0x47')](handleError(_0xdbd4d6,null));};exports['show']=function(_0x12c278,_0x3a23a7){var _0x164e6a={'raw':!![],'where':{'id':_0x12c278['params']['id']}},_0x3c47dc={};_0x3c47dc[_0xe883('0x31')]=_[_0xe883('0x33')](db[_0xe883('0x2d')][_0xe883('0x2e')]);_0x3c47dc['query']=_[_0xe883('0x33')](_0x12c278[_0xe883('0x34')]);_0x3c47dc['filters']=_[_0xe883('0x36')](_0x3c47dc['model'],_0x3c47dc[_0xe883('0x34')]);_0x164e6a['attributes']=_['intersection'](_0x3c47dc[_0xe883('0x31')],qs['fields'](_0x12c278[_0xe883('0x34')][_0xe883('0x37')]));_0x164e6a[_0xe883('0x38')]=_0x164e6a[_0xe883('0x38')][_0xe883('0x39')]?_0x164e6a['attributes']:_0x3c47dc['model'];if(_0x12c278['query']['includeAll']){_0x164e6a[_0xe883('0x45')]=[{'all':!![]}];}_0x164e6a=_[_0xe883('0x40')]({},_0x164e6a,_0x12c278[_0xe883('0x43')]);return db[_0xe883('0x2d')]['find'](_0x164e6a)['then'](handleEntityNotFound(_0x3a23a7,null))[_0xe883('0x28')](respondWithResult(_0x3a23a7,null))['catch'](handleError(_0x3a23a7,null));};exports[_0xe883('0x48')]=function(_0x212167,_0x1177ad){return db[_0xe883('0x2d')][_0xe883('0x48')](_0x212167[_0xe883('0x49')],{})[_0xe883('0x28')](respondWithResult(_0x1177ad,0xc9))[_0xe883('0x47')](handleError(_0x1177ad,null));};exports[_0xe883('0x27')]=function(_0x2d31ad,_0x296f33){if(_0x2d31ad[_0xe883('0x49')]['id']){delete _0x2d31ad[_0xe883('0x49')]['id'];}return db[_0xe883('0x2d')][_0xe883('0x4a')]({'where':{'id':_0x2d31ad[_0xe883('0x4b')]['id']}})[_0xe883('0x28')](handleEntityNotFound(_0x296f33,null))[_0xe883('0x28')](saveUpdates(_0x2d31ad[_0xe883('0x49')],null))[_0xe883('0x28')](respondWithResult(_0x296f33,null))[_0xe883('0x47')](handleError(_0x296f33,null));};exports[_0xe883('0x4c')]=function(_0x35f141,_0x4fceb5){return db[_0xe883('0x2d')][_0xe883('0x4a')]({'where':{'id':_0x35f141[_0xe883('0x4b')]['id']}})[_0xe883('0x28')](handleEntityNotFound(_0x4fceb5,null))['then'](removeEntity(_0x4fceb5,null))['catch'](handleError(_0x4fceb5,null));};
\ No newline at end of file
+var _0x9f62=['path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','sendStatus','status','end','json','offset','undefined','limit','set','Content-Range','update','destroy','then','error','stack','name','send','index','map','ZendeskField','rawAttributes','fieldName','type','key','keys','query','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','count','includeAll','findAll','rows','catch','include','find','create','body','params','rimraf','fast-json-patch','request-promise','moment','util'];(function(_0x432af8,_0x477b3d){var _0x228f4f=function(_0x2110c0){while(--_0x2110c0){_0x432af8['push'](_0x432af8['shift']());}};_0x228f4f(++_0x477b3d);}(_0x9f62,0x154));var _0x29f6=function(_0x3d8ee1,_0x37cdd0){_0x3d8ee1=_0x3d8ee1-0x0;var _0x5cf0a7=_0x9f62[_0x3d8ee1];return _0x5cf0a7;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x29f6('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x29f6('0x1'));var rp=require(_0x29f6('0x2'));var moment=require(_0x29f6('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x29f6('0x4'));var path=require(_0x29f6('0x5'));var sox=require(_0x29f6('0x6'));var csv=require(_0x29f6('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x29f6('0x8'));var _=require(_0x29f6('0x9'));var squel=require(_0x29f6('0xa'));var crypto=require(_0x29f6('0xb'));var jsforce=require(_0x29f6('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x29f6('0xd'));var authService=require(_0x29f6('0xe'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x29f6('0xf'));var logger=require(_0x29f6('0x10'))('api');var utils=require(_0x29f6('0x11'));var config=require(_0x29f6('0x12'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x559585,_0x57b2d2){_0x57b2d2=_0x57b2d2||0xcc;return function(_0x2ae0e4){if(_0x2ae0e4){return _0x559585[_0x29f6('0x13')](_0x57b2d2);}return _0x559585[_0x29f6('0x14')](_0x57b2d2)[_0x29f6('0x15')]();};}function respondWithResult(_0x17de6e,_0x156c96){_0x156c96=_0x156c96||0xc8;return function(_0x35d2e2){if(_0x35d2e2){return _0x17de6e[_0x29f6('0x14')](_0x156c96)[_0x29f6('0x16')](_0x35d2e2);}};}function respondWithFilteredResult(_0x19331f,_0x28d314){return function(_0x370484){if(_0x370484){var _0x1dde97=typeof _0x28d314[_0x29f6('0x17')]===_0x29f6('0x18')&&typeof _0x28d314[_0x29f6('0x19')]===_0x29f6('0x18');var _0x5bfda7=_0x370484['count'];var _0x2e66d3=_0x1dde97?0x0:_0x28d314[_0x29f6('0x17')];var _0xb31436=_0x1dde97?_0x370484['count']:_0x28d314[_0x29f6('0x17')]+_0x28d314[_0x29f6('0x19')];var _0x49252f;if(_0xb31436>=_0x5bfda7){_0xb31436=_0x5bfda7;_0x49252f=0xc8;}else{_0x49252f=0xce;}_0x19331f[_0x29f6('0x14')](_0x49252f);return _0x19331f[_0x29f6('0x1a')](_0x29f6('0x1b'),_0x2e66d3+'-'+_0xb31436+'/'+_0x5bfda7)[_0x29f6('0x16')](_0x370484);}return null;};}function patchUpdates(_0xb6e7a9){return function(_0x2bfb3d){try{jsonpatch['apply'](_0x2bfb3d,_0xb6e7a9,!![]);}catch(_0xfb8fd2){return BPromise['reject'](_0xfb8fd2);}return _0x2bfb3d['save']();};}function saveUpdates(_0x470019,_0x1fa159){return function(_0x39c6b3){if(_0x39c6b3){return _0x39c6b3[_0x29f6('0x1c')](_0x470019)['then'](function(_0x2c672e){return _0x2c672e;});}return null;};}function removeEntity(_0x49f67d,_0xd4179c){return function(_0xcce041){if(_0xcce041){return _0xcce041[_0x29f6('0x1d')]()[_0x29f6('0x1e')](function(){_0x49f67d['status'](0xcc)[_0x29f6('0x15')]();});}};}function handleEntityNotFound(_0x4d494f,_0x47c385){return function(_0x1401fb){if(!_0x1401fb){_0x4d494f[_0x29f6('0x13')](0x194);}return _0x1401fb;};}function handleError(_0x2519ac,_0x342038){_0x342038=_0x342038||0x1f4;return function(_0x84ccb7){logger[_0x29f6('0x1f')](_0x84ccb7[_0x29f6('0x20')]);if(_0x84ccb7['name']){delete _0x84ccb7[_0x29f6('0x21')];}_0x2519ac[_0x29f6('0x14')](_0x342038)[_0x29f6('0x22')](_0x84ccb7);};}exports[_0x29f6('0x23')]=function(_0xda0a63,_0x16a6ad){var _0x3790f5={},_0x17b2f2={},_0x3d88db={'count':0x0,'rows':[]};var _0x13a3a2=_[_0x29f6('0x24')](db[_0x29f6('0x25')][_0x29f6('0x26')],function(_0x304c28){return{'name':_0x304c28[_0x29f6('0x27')],'type':_0x304c28[_0x29f6('0x28')][_0x29f6('0x29')]};});_0x17b2f2['model']=_['map'](_0x13a3a2,_0x29f6('0x21'));_0x17b2f2['query']=_[_0x29f6('0x2a')](_0xda0a63[_0x29f6('0x2b')]);_0x17b2f2[_0x29f6('0x2c')]=_[_0x29f6('0x2d')](_0x17b2f2['model'],_0x17b2f2['query']);_0x3790f5[_0x29f6('0x2e')]=_[_0x29f6('0x2d')](_0x17b2f2[_0x29f6('0x2f')],qs[_0x29f6('0x30')](_0xda0a63[_0x29f6('0x2b')][_0x29f6('0x30')]));_0x3790f5[_0x29f6('0x2e')]=_0x3790f5[_0x29f6('0x2e')][_0x29f6('0x31')]?_0x3790f5[_0x29f6('0x2e')]:_0x17b2f2[_0x29f6('0x2f')];if(!_0xda0a63[_0x29f6('0x2b')][_0x29f6('0x32')](_0x29f6('0x33'))){_0x3790f5['limit']=qs['limit'](_0xda0a63[_0x29f6('0x2b')][_0x29f6('0x19')]);_0x3790f5[_0x29f6('0x17')]=qs['offset'](_0xda0a63[_0x29f6('0x2b')][_0x29f6('0x17')]);}_0x3790f5[_0x29f6('0x34')]=qs[_0x29f6('0x35')](_0xda0a63[_0x29f6('0x2b')]['sort']);_0x3790f5[_0x29f6('0x36')]=qs[_0x29f6('0x2c')](_[_0x29f6('0x37')](_0xda0a63[_0x29f6('0x2b')],_0x17b2f2['filters']),_0x13a3a2);if(_0xda0a63[_0x29f6('0x2b')][_0x29f6('0x38')]){_0x3790f5[_0x29f6('0x36')]=_[_0x29f6('0x39')](_0x3790f5['where'],{'$or':_['map'](_0x13a3a2,function(_0x35f9e1){if(_0x35f9e1['type']!==_0x29f6('0x3a')){var _0x551411={};_0x551411[_0x35f9e1[_0x29f6('0x21')]]={'$like':'%'+_0xda0a63['query'][_0x29f6('0x38')]+'%'};return _0x551411;}})});}_0x3790f5=_[_0x29f6('0x39')]({},_0x3790f5,_0xda0a63['options']);var _0x1431fc={'where':_0x3790f5['where']};return db[_0x29f6('0x25')][_0x29f6('0x3b')](_0x1431fc)['then'](function(_0xf9c531){_0x3d88db[_0x29f6('0x3b')]=_0xf9c531;if(_0xda0a63[_0x29f6('0x2b')][_0x29f6('0x3c')]){_0x3790f5['include']=[{'all':!![]}];}return db[_0x29f6('0x25')][_0x29f6('0x3d')](_0x3790f5);})[_0x29f6('0x1e')](function(_0x2322eb){_0x3d88db[_0x29f6('0x3e')]=_0x2322eb;return _0x3d88db;})['then'](respondWithFilteredResult(_0x16a6ad,_0x3790f5))[_0x29f6('0x3f')](handleError(_0x16a6ad,null));};exports['show']=function(_0x2ea303,_0x552257){var _0xbfe671={'raw':!![],'where':{'id':_0x2ea303['params']['id']}},_0x3a8a12={};_0x3a8a12[_0x29f6('0x2f')]=_[_0x29f6('0x2a')](db[_0x29f6('0x25')][_0x29f6('0x26')]);_0x3a8a12['query']=_[_0x29f6('0x2a')](_0x2ea303[_0x29f6('0x2b')]);_0x3a8a12[_0x29f6('0x2c')]=_['intersection'](_0x3a8a12[_0x29f6('0x2f')],_0x3a8a12['query']);_0xbfe671[_0x29f6('0x2e')]=_['intersection'](_0x3a8a12['model'],qs['fields'](_0x2ea303[_0x29f6('0x2b')][_0x29f6('0x30')]));_0xbfe671[_0x29f6('0x2e')]=_0xbfe671[_0x29f6('0x2e')][_0x29f6('0x31')]?_0xbfe671[_0x29f6('0x2e')]:_0x3a8a12[_0x29f6('0x2f')];if(_0x2ea303[_0x29f6('0x2b')][_0x29f6('0x3c')]){_0xbfe671[_0x29f6('0x40')]=[{'all':!![]}];}_0xbfe671=_['merge']({},_0xbfe671,_0x2ea303['options']);return db[_0x29f6('0x25')][_0x29f6('0x41')](_0xbfe671)[_0x29f6('0x1e')](handleEntityNotFound(_0x552257,null))[_0x29f6('0x1e')](respondWithResult(_0x552257,null))['catch'](handleError(_0x552257,null));};exports[_0x29f6('0x42')]=function(_0x1f5609,_0x532df5){return db[_0x29f6('0x25')][_0x29f6('0x42')](_0x1f5609[_0x29f6('0x43')],{})[_0x29f6('0x1e')](respondWithResult(_0x532df5,0xc9))[_0x29f6('0x3f')](handleError(_0x532df5,null));};exports[_0x29f6('0x1c')]=function(_0x320b5e,_0x1f03b6){if(_0x320b5e[_0x29f6('0x43')]['id']){delete _0x320b5e[_0x29f6('0x43')]['id'];}return db[_0x29f6('0x25')][_0x29f6('0x41')]({'where':{'id':_0x320b5e['params']['id']}})[_0x29f6('0x1e')](handleEntityNotFound(_0x1f03b6,null))[_0x29f6('0x1e')](saveUpdates(_0x320b5e[_0x29f6('0x43')],null))[_0x29f6('0x1e')](respondWithResult(_0x1f03b6,null))[_0x29f6('0x3f')](handleError(_0x1f03b6,null));};exports['destroy']=function(_0x2e29e3,_0x52be22){return db['ZendeskField'][_0x29f6('0x41')]({'where':{'id':_0x2e29e3[_0x29f6('0x44')]['id']}})[_0x29f6('0x1e')](handleEntityNotFound(_0x52be22,null))[_0x29f6('0x1e')](removeEntity(_0x52be22,null))[_0x29f6('0x3f')](handleError(_0x52be22,null));};
\ No newline at end of file
index 2c87b55..d9b8b4c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c47=['util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','exports','define','ZendeskField','int_zendesk_fields','zendesk_unique_index','idField','FieldId','lodash'];(function(_0x2567f0,_0x4fa60){var _0x14852a=function(_0x55b95f){while(--_0x55b95f){_0x2567f0['push'](_0x2567f0['shift']());}};_0x14852a(++_0x4fa60);}(_0x1c47,0x14f));var _0x71c4=function(_0x35da42,_0x5c2610){_0x35da42=_0x35da42-0x0;var _0x370035=_0x1c47[_0x35da42];return _0x370035;};'use strict';var _=require(_0x71c4('0x0'));var util=require(_0x71c4('0x1'));var logger=require(_0x71c4('0x2'))(_0x71c4('0x3'));var moment=require(_0x71c4('0x4'));var BPromise=require(_0x71c4('0x5'));var rp=require(_0x71c4('0x6'));var fs=require('fs');var path=require(_0x71c4('0x7'));var rimraf=require('rimraf');var config=require(_0x71c4('0x8'));var attributes=require('./intZendeskField.attributes');module[_0x71c4('0x9')]=function(_0x4a6f4c,_0x25e08d){return _0x4a6f4c[_0x71c4('0xa')](_0x71c4('0xb'),attributes,{'tableName':_0x71c4('0xc'),'paranoid':![],'indexes':[{'name':_0x71c4('0xd'),'fields':[_0x71c4('0xe'),_0x71c4('0xf')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xd15e=['bluebird','path','rimraf','../../config/environment','./intZendeskField.attributes','exports','define','ZendeskField','int_zendesk_fields','zendesk_unique_index','FieldId','lodash','util','../../config/logger','api'];(function(_0x4a5e84,_0x37c2d8){var _0xe8cd5f=function(_0x521079){while(--_0x521079){_0x4a5e84['push'](_0x4a5e84['shift']());}};_0xe8cd5f(++_0x37c2d8);}(_0xd15e,0x1af));var _0xed15=function(_0xbfe53a,_0xb0bf59){_0xbfe53a=_0xbfe53a-0x0;var _0x52a601=_0xd15e[_0xbfe53a];return _0x52a601;};'use strict';var _=require(_0xed15('0x0'));var util=require(_0xed15('0x1'));var logger=require(_0xed15('0x2'))(_0xed15('0x3'));var moment=require('moment');var BPromise=require(_0xed15('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xed15('0x5'));var rimraf=require(_0xed15('0x6'));var config=require(_0xed15('0x7'));var attributes=require(_0xed15('0x8'));module[_0xed15('0x9')]=function(_0x143ec8,_0x49f671){return _0x143ec8[_0xed15('0xa')](_0xed15('0xb'),attributes,{'tableName':_0xed15('0xc'),'paranoid':![],'indexes':[{'name':_0xed15('0xd'),'fields':['idField',_0xed15('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 9e0678b..ba6b515 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b5e=['then','info','request\x20sent','ZendeskField,\x20%s,\x20%s,\x20%s','stringify','error','ZendeskField,\x20%s,\x20%s','message','lodash','moment','randomstring','../../config/utils','rpc','jayson/promise','client','http'];(function(_0x1bb8e8,_0x2fc77f){var _0x36bd13=function(_0x9224ef){while(--_0x9224ef){_0x1bb8e8['push'](_0x1bb8e8['shift']());}};_0x36bd13(++_0x2fc77f);}(_0x8b5e,0x168));var _0xe8b5=function(_0x5bb320,_0x29f81d){_0x5bb320=_0x5bb320-0x0;var _0x11e715=_0x8b5e[_0x5bb320];return _0x11e715;};'use strict';var _=require(_0xe8b5('0x0'));var util=require('util');var moment=require(_0xe8b5('0x1'));var BPromise=require('bluebird');var rs=require(_0xe8b5('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xe8b5('0x3'));var logger=require('../../config/logger')(_0xe8b5('0x4'));var config=require('../../config/environment');var jayson=require(_0xe8b5('0x5'));var client=jayson[_0xe8b5('0x6')][_0xe8b5('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x5d1269,_0x4de5a6,_0x55c74b){return new BPromise(function(_0x172e92,_0x594c74){return client['request'](_0x5d1269,_0x55c74b)[_0xe8b5('0x8')](function(_0x2ae1e6){logger[_0xe8b5('0x9')]('ZendeskField,\x20%s,\x20%s',_0x4de5a6,_0xe8b5('0xa'));logger['debug'](_0xe8b5('0xb'),_0x4de5a6,_0xe8b5('0xa'),JSON[_0xe8b5('0xc')](_0x2ae1e6));if(_0x2ae1e6[_0xe8b5('0xd')]){if(_0x2ae1e6[_0xe8b5('0xd')]['code']===0x1f4){logger[_0xe8b5('0xd')](_0xe8b5('0xe'),_0x4de5a6,_0x2ae1e6[_0xe8b5('0xd')][_0xe8b5('0xf')]);return _0x594c74(_0x2ae1e6[_0xe8b5('0xd')][_0xe8b5('0xf')]);}logger[_0xe8b5('0xd')](_0xe8b5('0xe'),_0x4de5a6,_0x2ae1e6['error'][_0xe8b5('0xf')]);return _0x172e92(_0x2ae1e6[_0xe8b5('0xd')][_0xe8b5('0xf')]);}else{logger[_0xe8b5('0x9')](_0xe8b5('0xe'),_0x4de5a6,'request\x20sent');_0x172e92(_0x2ae1e6['result']['message']);}})['catch'](function(_0x270b79){logger[_0xe8b5('0xd')](_0xe8b5('0xe'),_0x4de5a6,_0x270b79);_0x594c74(_0x270b79);});});}
\ No newline at end of file
+var _0x642d=['moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','ZendeskField,\x20%s,\x20%s','debug','ZendeskField,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','lodash','util'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x642d,0xd6));var _0xd642=function(_0x1cb884,_0x258739){_0x1cb884=_0x1cb884-0x0;var _0x74b22b=_0x642d[_0x1cb884];return _0x74b22b;};'use strict';var _=require(_0xd642('0x0'));var util=require(_0xd642('0x1'));var moment=require(_0xd642('0x2'));var BPromise=require(_0xd642('0x3'));var rs=require(_0xd642('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xd642('0x5'))['db'];var utils=require(_0xd642('0x6'));var logger=require(_0xd642('0x7'))(_0xd642('0x8'));var config=require(_0xd642('0x9'));var jayson=require(_0xd642('0xa'));var client=jayson[_0xd642('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x20406a,_0x570958,_0x15b793){return new BPromise(function(_0x59c226,_0x52c72a){return client[_0xd642('0xc')](_0x20406a,_0x15b793)[_0xd642('0xd')](function(_0x2c8f32){logger[_0xd642('0xe')](_0xd642('0xf'),_0x570958,'request\x20sent');logger[_0xd642('0x10')](_0xd642('0x11'),_0x570958,_0xd642('0x12'),JSON['stringify'](_0x2c8f32));if(_0x2c8f32['error']){if(_0x2c8f32[_0xd642('0x13')][_0xd642('0x14')]===0x1f4){logger[_0xd642('0x13')](_0xd642('0xf'),_0x570958,_0x2c8f32[_0xd642('0x13')][_0xd642('0x15')]);return _0x52c72a(_0x2c8f32[_0xd642('0x13')][_0xd642('0x15')]);}logger[_0xd642('0x13')](_0xd642('0xf'),_0x570958,_0x2c8f32[_0xd642('0x13')][_0xd642('0x15')]);return _0x59c226(_0x2c8f32[_0xd642('0x13')]['message']);}else{logger['info'](_0xd642('0xf'),_0x570958,_0xd642('0x12'));_0x59c226(_0x2c8f32[_0xd642('0x16')][_0xd642('0x15')]);}})[_0xd642('0x17')](function(_0x2ff8c7){logger[_0xd642('0x13')]('ZendeskField,\x20%s,\x20%s',_0x570958,_0x2ff8c7);_0x52c72a(_0x2ff8c7);});});}
\ No newline at end of file
index 3e4e5ad..125bd65 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1fed=['express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/:id','/:id/configurations','getConfigurations','getFields','post','create','addConfiguration','update','delete'];(function(_0x2969be,_0x563237){var _0x1b879d=function(_0x3b7fce){while(--_0x3b7fce){_0x2969be['push'](_0x2969be['shift']());}};_0x1b879d(++_0x563237);}(_0x1fed,0x1b0));var _0xd1fe=function(_0x31061a,_0x5ab647){_0x31061a=_0x31061a-0x0;var _0x48d92a=_0x1fed[_0x31061a];return _0x48d92a;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0xd1fe('0x0'));var router=express['Router']();var fs_extra=require(_0xd1fe('0x1'));var auth=require(_0xd1fe('0x2'));var interaction=require(_0xd1fe('0x3'));var config=require(_0xd1fe('0x4'));var controller=require('./intZohoAccount.controller');router[_0xd1fe('0x5')]('/',auth[_0xd1fe('0x6')](),controller['index']);router[_0xd1fe('0x5')](_0xd1fe('0x7'),auth[_0xd1fe('0x6')](),controller['show']);router[_0xd1fe('0x5')](_0xd1fe('0x8'),auth[_0xd1fe('0x6')](),controller[_0xd1fe('0x9')]);router[_0xd1fe('0x5')]('/:id/fields',auth[_0xd1fe('0x6')](),controller[_0xd1fe('0xa')]);router[_0xd1fe('0xb')]('/',auth[_0xd1fe('0x6')](),controller[_0xd1fe('0xc')]);router[_0xd1fe('0xb')](_0xd1fe('0x8'),auth[_0xd1fe('0x6')](),controller[_0xd1fe('0xd')]);router['put'](_0xd1fe('0x7'),auth[_0xd1fe('0x6')](),controller[_0xd1fe('0xe')]);router[_0xd1fe('0xf')]('/:id',auth[_0xd1fe('0x6')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xc222=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id/configurations','getConfigurations','getFields','create','post','addConfiguration','put','/:id','update','delete','destroy','exports','multer'];(function(_0x43e13b,_0xe8005d){var _0x544285=function(_0x3d2e24){while(--_0x3d2e24){_0x43e13b['push'](_0x43e13b['shift']());}};_0x544285(++_0xe8005d);}(_0xc222,0x144));var _0x2c22=function(_0x56efbf,_0x585a41){_0x56efbf=_0x56efbf-0x0;var _0x8bbfa8=_0xc222[_0x56efbf];return _0x8bbfa8;};'use strict';var multer=require(_0x2c22('0x0'));var util=require(_0x2c22('0x1'));var path=require(_0x2c22('0x2'));var timeout=require(_0x2c22('0x3'));var express=require(_0x2c22('0x4'));var router=express[_0x2c22('0x5')]();var fs_extra=require(_0x2c22('0x6'));var auth=require(_0x2c22('0x7'));var interaction=require(_0x2c22('0x8'));var config=require(_0x2c22('0x9'));var controller=require('./intZohoAccount.controller');router[_0x2c22('0xa')]('/',auth[_0x2c22('0xb')](),controller[_0x2c22('0xc')]);router['get']('/:id',auth[_0x2c22('0xb')](),controller['show']);router[_0x2c22('0xa')](_0x2c22('0xd'),auth[_0x2c22('0xb')](),controller[_0x2c22('0xe')]);router[_0x2c22('0xa')]('/:id/fields',auth[_0x2c22('0xb')](),controller[_0x2c22('0xf')]);router['post']('/',auth[_0x2c22('0xb')](),controller[_0x2c22('0x10')]);router[_0x2c22('0x11')](_0x2c22('0xd'),auth[_0x2c22('0xb')](),controller[_0x2c22('0x12')]);router[_0x2c22('0x13')](_0x2c22('0x14'),auth[_0x2c22('0xb')](),controller[_0x2c22('0x15')]);router[_0x2c22('0x16')](_0x2c22('0x14'),auth['isAuthenticated'](),controller[_0x2c22('0x17')]);module[_0x2c22('0x18')]=router;
\ No newline at end of file
index dfde618..f1c03c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a19=['sequelize','exports','STRING'];(function(_0x111e94,_0x31c837){var _0x3de107=function(_0x65bd1e){while(--_0x65bd1e){_0x111e94['push'](_0x111e94['shift']());}};_0x3de107(++_0x31c837);}(_0x9a19,0x114));var _0x99a1=function(_0x1992f1,_0x5c61f0){_0x1992f1=_0x1992f1-0x0;var _0x413dfe=_0x9a19[_0x1992f1];return _0x413dfe;};'use strict';var Sequelize=require(_0x99a1('0x0'));module[_0x99a1('0x1')]={'name':{'type':Sequelize[_0x99a1('0x2')]},'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize[_0x99a1('0x2')]},'zone':{'type':Sequelize[_0x99a1('0x2')]},'clientId':{'type':Sequelize[_0x99a1('0x2')]},'clientSecret':{'type':Sequelize[_0x99a1('0x2')]},'serverUrl':{'type':Sequelize[_0x99a1('0x2')],'allowNull':![]},'code':{'type':Sequelize[_0x99a1('0x2')]},'refreshToken':{'type':Sequelize[_0x99a1('0x2')]}};
\ No newline at end of file
+var _0x9a19=['sequelize','exports','STRING'];(function(_0x21b36c,_0x543483){var _0x236627=function(_0x174f99){while(--_0x174f99){_0x21b36c['push'](_0x21b36c['shift']());}};_0x236627(++_0x543483);}(_0x9a19,0x114));var _0x99a1=function(_0x3b3cc6,_0x1a6e24){_0x3b3cc6=_0x3b3cc6-0x0;var _0x1161e4=_0x9a19[_0x3b3cc6];return _0x1161e4;};'use strict';var Sequelize=require(_0x99a1('0x0'));module[_0x99a1('0x1')]={'name':{'type':Sequelize[_0x99a1('0x2')]},'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize[_0x99a1('0x2')]},'zone':{'type':Sequelize[_0x99a1('0x2')]},'clientId':{'type':Sequelize[_0x99a1('0x2')]},'clientSecret':{'type':Sequelize[_0x99a1('0x2')]},'serverUrl':{'type':Sequelize[_0x99a1('0x2')],'allowNull':![]},'code':{'type':Sequelize[_0x99a1('0x2')]},'refreshToken':{'type':Sequelize[_0x99a1('0x2')]}};
\ No newline at end of file
index 7e6c2d7..7a520f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7832=['https://www.zohoapis.%s/crm/v2/settings/fields','Calls','response','error','message','Subject','Description','Call_Duration','Call_Type','remove','includes','system_mandatory','push','display_label','custom_field','picklist','pick_list_values','statusCode','stringify','test','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','destroy','stack','name','send','index','map','ZohoAccount','rawAttributes','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','order','sort','pick','filter','where','merge','type','VIRTUAL','options','includeAll','findAll','rows','then','catch','show','length','include','find','create','body','update','params','findOne','ZohoConfiguration','nolimit','getConfigurations','AccountId','channel','Descriptions','getDescriptions','ZohoField','Subjects','zone','https://accounts.zoho.com.au','https://accounts.zoho.eu','https://accounts.zoho.in','https://accounts.zoho.com.cn','POST','refreshToken','clientId','refresh_token','access_token','Unable\x20to\x20retrieve\x20the\x20access\x20token','getFields','host','clientSecret','serverUrl','code','zoho.eu','com','slice','lastIndexOf','format'];(function(_0x2f5ac5,_0x1ee939){var _0x37c9a8=function(_0x15031f){while(--_0x15031f){_0x2f5ac5['push'](_0x2f5ac5['shift']());}};_0x37c9a8(++_0x1ee939);}(_0x7832,0x1a4));var _0x2783=function(_0x18604c,_0xe9c6af){_0x18604c=_0x18604c-0x0;var _0x59a923=_0x7832[_0x18604c];return _0x59a923;};'use strict';var emlformat=require(_0x2783('0x0'));var rimraf=require(_0x2783('0x1'));var zipdir=require(_0x2783('0x2'));var jsonpatch=require(_0x2783('0x3'));var rp=require(_0x2783('0x4'));var moment=require(_0x2783('0x5'));var BPromise=require(_0x2783('0x6'));var Mustache=require(_0x2783('0x7'));var util=require(_0x2783('0x8'));var path=require('path');var sox=require(_0x2783('0x9'));var csv=require(_0x2783('0xa'));var ejs=require(_0x2783('0xb'));var fs=require('fs');var fs_extra=require(_0x2783('0xc'));var _=require(_0x2783('0xd'));var squel=require(_0x2783('0xe'));var crypto=require(_0x2783('0xf'));var jsforce=require(_0x2783('0x10'));var deskjs=require(_0x2783('0x11'));var toCsv=require(_0x2783('0xa'));var querystring=require(_0x2783('0x12'));var Papa=require(_0x2783('0x13'));var Redis=require(_0x2783('0x14'));var authService=require(_0x2783('0x15'));var qs=require(_0x2783('0x16'));var as=require(_0x2783('0x17'));var hardwareService=require(_0x2783('0x18'));var logger=require('../../config/logger')(_0x2783('0x19'));var utils=require(_0x2783('0x1a'));var config=require('../../config/environment');var licenseUtil=require(_0x2783('0x1b'));var db=require(_0x2783('0x1c'))['db'];var integrations=require(_0x2783('0x1d'));function respondWithStatusCode(_0xb74cc8,_0xef31db){_0xef31db=_0xef31db||0xcc;return function(_0x4d39a3){if(_0x4d39a3){return _0xb74cc8[_0x2783('0x1e')](_0xef31db);}return _0xb74cc8[_0x2783('0x1f')](_0xef31db)[_0x2783('0x20')]();};}function respondWithResult(_0x381b53,_0x426bed){_0x426bed=_0x426bed||0xc8;return function(_0xd00439){if(_0xd00439){return _0x381b53[_0x2783('0x1f')](_0x426bed)[_0x2783('0x21')](_0xd00439);}};}function respondWithFilteredResult(_0x4133ed,_0x327175){return function(_0xbabbbe){if(_0xbabbbe){var _0x32537f=typeof _0x327175[_0x2783('0x22')]===_0x2783('0x23')&&typeof _0x327175[_0x2783('0x24')]==='undefined';var _0x322c3a=_0xbabbbe['count'];var _0x43fd41=_0x32537f?0x0:_0x327175[_0x2783('0x22')];var _0x1d090c=_0x32537f?_0xbabbbe[_0x2783('0x25')]:_0x327175[_0x2783('0x22')]+_0x327175[_0x2783('0x24')];var _0x300cb7;if(_0x1d090c>=_0x322c3a){_0x1d090c=_0x322c3a;_0x300cb7=0xc8;}else{_0x300cb7=0xce;}_0x4133ed['status'](_0x300cb7);return _0x4133ed[_0x2783('0x26')](_0x2783('0x27'),_0x43fd41+'-'+_0x1d090c+'/'+_0x322c3a)[_0x2783('0x21')](_0xbabbbe);}return null;};}function patchUpdates(_0x358515){return function(_0x2de8dc){try{jsonpatch[_0x2783('0x28')](_0x2de8dc,_0x358515,!![]);}catch(_0x445bde){return BPromise[_0x2783('0x29')](_0x445bde);}return _0x2de8dc['save']();};}function saveUpdates(_0x4d22c7,_0x5f506a){return function(_0x207215){if(_0x207215){return _0x207215['update'](_0x4d22c7)['then'](function(_0x33a2f4){return _0x33a2f4;});}return null;};}function removeEntity(_0x4fa939,_0x429ba8){return function(_0x485bc1){if(_0x485bc1){return _0x485bc1[_0x2783('0x2a')]()['then'](function(){_0x4fa939[_0x2783('0x1f')](0xcc)[_0x2783('0x20')]();});}};}function handleEntityNotFound(_0x304366,_0x5b2282){return function(_0x2355d2){if(!_0x2355d2){_0x304366[_0x2783('0x1e')](0x194);}return _0x2355d2;};}function handleError(_0x3dc01d,_0x5984c3){_0x5984c3=_0x5984c3||0x1f4;return function(_0x117f42){logger['error'](_0x117f42[_0x2783('0x2b')]);if(_0x117f42['name']){delete _0x117f42[_0x2783('0x2c')];}_0x3dc01d['status'](_0x5984c3)[_0x2783('0x2d')](_0x117f42);};}exports[_0x2783('0x2e')]=function(_0x16357b,_0x439256){var _0x600e87={},_0x1a8f78={},_0x4df7cf={'count':0x0,'rows':[]};var _0x596777=_[_0x2783('0x2f')](db[_0x2783('0x30')][_0x2783('0x31')],function(_0x5dcc54){return{'name':_0x5dcc54['fieldName'],'type':_0x5dcc54['type'][_0x2783('0x32')]};});_0x1a8f78[_0x2783('0x33')]=_[_0x2783('0x2f')](_0x596777,_0x2783('0x2c'));_0x1a8f78[_0x2783('0x34')]=_[_0x2783('0x35')](_0x16357b[_0x2783('0x34')]);_0x1a8f78[_0x2783('0x36')]=_[_0x2783('0x37')](_0x1a8f78[_0x2783('0x33')],_0x1a8f78[_0x2783('0x34')]);_0x600e87[_0x2783('0x38')]=_[_0x2783('0x37')](_0x1a8f78[_0x2783('0x33')],qs[_0x2783('0x39')](_0x16357b[_0x2783('0x34')][_0x2783('0x39')]));_0x600e87[_0x2783('0x38')]=_0x600e87[_0x2783('0x38')]['length']?_0x600e87[_0x2783('0x38')]:_0x1a8f78[_0x2783('0x33')];if(!_0x16357b['query'][_0x2783('0x3a')]('nolimit')){_0x600e87['limit']=qs[_0x2783('0x24')](_0x16357b['query'][_0x2783('0x24')]);_0x600e87[_0x2783('0x22')]=qs['offset'](_0x16357b[_0x2783('0x34')][_0x2783('0x22')]);}_0x600e87[_0x2783('0x3b')]=qs[_0x2783('0x3c')](_0x16357b[_0x2783('0x34')][_0x2783('0x3c')]);_0x600e87['where']=qs[_0x2783('0x36')](_[_0x2783('0x3d')](_0x16357b[_0x2783('0x34')],_0x1a8f78['filters']),_0x596777);if(_0x16357b['query'][_0x2783('0x3e')]){_0x600e87[_0x2783('0x3f')]=_[_0x2783('0x40')](_0x600e87[_0x2783('0x3f')],{'$or':_[_0x2783('0x2f')](_0x596777,function(_0xe8bedf){if(_0xe8bedf[_0x2783('0x41')]!==_0x2783('0x42')){var _0x22cb3a={};_0x22cb3a[_0xe8bedf[_0x2783('0x2c')]]={'$like':'%'+_0x16357b[_0x2783('0x34')][_0x2783('0x3e')]+'%'};return _0x22cb3a;}})});}_0x600e87=_['merge']({},_0x600e87,_0x16357b[_0x2783('0x43')]);var _0x277033={'where':_0x600e87[_0x2783('0x3f')]};return db['ZohoAccount'][_0x2783('0x25')](_0x277033)['then'](function(_0x1a63a7){_0x4df7cf['count']=_0x1a63a7;if(_0x16357b[_0x2783('0x34')][_0x2783('0x44')]){_0x600e87['include']=[{'all':!![]}];}return db[_0x2783('0x30')][_0x2783('0x45')](_0x600e87);})['then'](function(_0x437ebd){_0x4df7cf[_0x2783('0x46')]=_0x437ebd;return _0x4df7cf;})[_0x2783('0x47')](respondWithFilteredResult(_0x439256,_0x600e87))[_0x2783('0x48')](handleError(_0x439256,null));};exports[_0x2783('0x49')]=function(_0x33e647,_0x339f07){var _0xbaaf56={'raw':![],'where':{'id':_0x33e647['params']['id']}},_0x12d7d5={};_0x12d7d5[_0x2783('0x33')]=_[_0x2783('0x35')](db['ZohoAccount'][_0x2783('0x31')]);_0x12d7d5[_0x2783('0x34')]=_['keys'](_0x33e647[_0x2783('0x34')]);_0x12d7d5[_0x2783('0x36')]=_[_0x2783('0x37')](_0x12d7d5[_0x2783('0x33')],_0x12d7d5[_0x2783('0x34')]);_0xbaaf56['attributes']=_['intersection'](_0x12d7d5[_0x2783('0x33')],qs[_0x2783('0x39')](_0x33e647['query']['fields']));_0xbaaf56[_0x2783('0x38')]=_0xbaaf56[_0x2783('0x38')][_0x2783('0x4a')]?_0xbaaf56['attributes']:_0x12d7d5[_0x2783('0x33')];if(_0x33e647['query'][_0x2783('0x44')]){_0xbaaf56[_0x2783('0x4b')]=[{'all':!![]}];}_0xbaaf56=_['merge']({},_0xbaaf56,_0x33e647[_0x2783('0x43')]);return db['ZohoAccount'][_0x2783('0x4c')](_0xbaaf56)['then'](handleEntityNotFound(_0x339f07,null))[_0x2783('0x47')](respondWithResult(_0x339f07,null))['catch'](handleError(_0x339f07,null));};exports['create']=function(_0x1af069,_0x3ecfc2){return db[_0x2783('0x30')][_0x2783('0x4d')](_0x1af069[_0x2783('0x4e')],{})[_0x2783('0x47')](respondWithResult(_0x3ecfc2,0xc9))[_0x2783('0x48')](handleError(_0x3ecfc2,null));};exports[_0x2783('0x4f')]=function(_0x1e329c,_0x593f49){if(_0x1e329c[_0x2783('0x4e')]['id']){delete _0x1e329c[_0x2783('0x4e')]['id'];}return db[_0x2783('0x30')][_0x2783('0x4c')]({'where':{'id':_0x1e329c[_0x2783('0x50')]['id']}})[_0x2783('0x47')](handleEntityNotFound(_0x593f49,null))[_0x2783('0x47')](saveUpdates(_0x1e329c[_0x2783('0x4e')],null))[_0x2783('0x47')](respondWithResult(_0x593f49,null))['catch'](handleError(_0x593f49,null));};exports[_0x2783('0x2a')]=function(_0x189513,_0x2793ec){return db[_0x2783('0x30')][_0x2783('0x4c')]({'where':{'id':_0x189513[_0x2783('0x50')]['id']}})[_0x2783('0x47')](handleEntityNotFound(_0x2793ec,null))[_0x2783('0x47')](removeEntity(_0x2793ec,null))['catch'](handleError(_0x2793ec,null));};exports['getConfigurations']=function(_0x10d257,_0x278a76,_0x158322){var _0x3c1115={};var _0x554fe5={};var _0x3194c8;var _0x563ab3;return db['ZohoAccount'][_0x2783('0x51')]({'where':{'id':_0x10d257[_0x2783('0x50')]['id']}})['then'](handleEntityNotFound(_0x278a76,null))['then'](function(_0x2b0723){if(_0x2b0723){_0x3194c8=_0x2b0723;_0x554fe5[_0x2783('0x33')]=_['keys'](db[_0x2783('0x52')][_0x2783('0x31')]);_0x554fe5['query']=_[_0x2783('0x35')](_0x10d257[_0x2783('0x34')]);_0x554fe5[_0x2783('0x36')]=_['intersection'](_0x554fe5['model'],_0x554fe5[_0x2783('0x34')]);_0x3c1115['attributes']=_[_0x2783('0x37')](_0x554fe5[_0x2783('0x33')],qs['fields'](_0x10d257[_0x2783('0x34')][_0x2783('0x39')]));_0x3c1115[_0x2783('0x38')]=_0x3c1115['attributes'][_0x2783('0x4a')]?_0x3c1115['attributes']:_0x554fe5[_0x2783('0x33')];_0x3c1115[_0x2783('0x3b')]=qs[_0x2783('0x3c')](_0x10d257[_0x2783('0x34')]['sort']);_0x3c1115[_0x2783('0x3f')]=qs['filters'](_[_0x2783('0x3d')](_0x10d257[_0x2783('0x34')],_0x554fe5['filters']));if(_0x10d257[_0x2783('0x34')][_0x2783('0x3e')]){_0x3c1115[_0x2783('0x3f')]=_[_0x2783('0x40')](_0x3c1115[_0x2783('0x3f')],{'$or':_['map'](_0x3c1115[_0x2783('0x38')],function(_0x547a6c){var _0xf9e9d0={};_0xf9e9d0[_0x547a6c]={'$like':'%'+_0x10d257['query'][_0x2783('0x3e')]+'%'};return _0xf9e9d0;})});}_0x3c1115=_['merge']({},_0x3c1115,_0x10d257[_0x2783('0x43')]);return _0x3194c8['getConfigurations'](_0x3c1115);}})[_0x2783('0x47')](function(_0x42ed4f){if(_0x42ed4f){_0x563ab3=_0x42ed4f['length'];if(!_0x10d257['query'][_0x2783('0x3a')](_0x2783('0x53'))){_0x3c1115[_0x2783('0x24')]=qs[_0x2783('0x24')](_0x10d257[_0x2783('0x34')][_0x2783('0x24')]);_0x3c1115['offset']=qs[_0x2783('0x22')](_0x10d257['query'][_0x2783('0x22')]);}return _0x3194c8[_0x2783('0x54')](_0x3c1115);}})['then'](function(_0x15c1a4){if(_0x15c1a4){return _0x15c1a4?{'count':_0x563ab3,'rows':_0x15c1a4}:null;}})[_0x2783('0x47')](respondWithResult(_0x278a76,null))[_0x2783('0x48')](handleError(_0x278a76,null));};exports['addConfiguration']=function(_0x4aee09,_0x450f6a,_0x8bc78c){if(_0x4aee09[_0x2783('0x4e')]['id']){delete _0x4aee09[_0x2783('0x4e')]['id'];}return db[_0x2783('0x30')][_0x2783('0x51')]({'where':{'id':_0x4aee09[_0x2783('0x50')]['id']}})[_0x2783('0x47')](handleEntityNotFound(_0x450f6a,null))[_0x2783('0x47')](function(_0x241840){if(_0x241840){_0x4aee09[_0x2783('0x4e')][_0x2783('0x55')]=_0x241840['id'];_0x4aee09[_0x2783('0x4e')]['Subjects']=integrations['getSubjects'](_0x4aee09[_0x2783('0x4e')][_0x2783('0x56')],_0x4aee09[_0x2783('0x4e')][_0x2783('0x41')]);_0x4aee09[_0x2783('0x4e')][_0x2783('0x57')]=integrations[_0x2783('0x58')](_0x4aee09[_0x2783('0x4e')][_0x2783('0x56')],_0x4aee09[_0x2783('0x4e')][_0x2783('0x41')]);return db[_0x2783('0x52')]['create'](_0x4aee09['body'],{'include':[{'model':db[_0x2783('0x59')],'as':_0x2783('0x5a')},{'model':db[_0x2783('0x59')],'as':_0x2783('0x57')}]});}return null;})[_0x2783('0x47')](respondWithResult(_0x450f6a,null))[_0x2783('0x48')](handleError(_0x450f6a,null));};function getAccessToken(_0x4b4c23){return new Promise(function(_0x3f8fc4,_0x570780){var _0x2f6583;switch(_0x4b4c23[_0x2783('0x5b')]){case'US':_0x2f6583='https://accounts.zoho.com';break;case'AU':_0x2f6583=_0x2783('0x5c');break;case'EU':_0x2f6583=_0x2783('0x5d');break;case'IN':_0x2f6583=_0x2783('0x5e');break;case'CN':_0x2f6583=_0x2783('0x5f');break;default:_0x2f6583='https://accounts.zoho.eu';break;}var _0x219eba={'method':_0x2783('0x60'),'uri':_0x2f6583+'/oauth/v2/token','qs':{'refresh_token':_0x4b4c23[_0x2783('0x61')],'client_id':_0x4b4c23[_0x2783('0x62')],'client_secret':_0x4b4c23['clientSecret'],'grant_type':_0x2783('0x63')},'json':!![]};return rp(_0x219eba)['then'](function(_0x1ae832){if(_0x1ae832[_0x2783('0x64')]){_0x3f8fc4(_0x1ae832[_0x2783('0x64')]);}else{_0x570780(_0x2783('0x65'));}})['catch'](function(_0x1fefd1){_0x570780(_0x1fefd1);});});}exports[_0x2783('0x66')]=function(_0x3c70c2,_0x28c353,_0x31eb53){var _0x41760c,_0x5ab85b,_0xa27f5b,_0x5d1943,_0x3fd41b;return db[_0x2783('0x30')][_0x2783('0x51')]({'where':{'id':_0x3c70c2[_0x2783('0x50')]['id']},'attributes':['id',_0x2783('0x67'),'zone',_0x2783('0x62'),_0x2783('0x68'),_0x2783('0x69'),_0x2783('0x6a'),_0x2783('0x61')]})[_0x2783('0x47')](handleEntityNotFound(_0x28c353,null))['then'](function(_0x28e356){_0x3fd41b=_0x28e356;_0x41760c=_0x3fd41b[_0x2783('0x67')];_0x5ab85b=_0x41760c===_0x2783('0x6b')?'eu':_0x2783('0x6c');_0xa27f5b=_0x3fd41b['serverUrl'];var _0x3bd5c5=_0xa27f5b[_0x2783('0x6d')](-0x1);if(_0x3bd5c5==='/'||_0x3bd5c5==='\x5c'||_0x3bd5c5===':'){_0xa27f5b=_0xa27f5b['substring'](0x0,_0xa27f5b[_0x2783('0x6e')](_0x3bd5c5));}if(!_0x3fd41b[_0x2783('0x61')]){throw new Error('Refresh\x20Token\x20not\x20available\x20for\x20the\x20account');}return getAccessToken(_0x3fd41b);})[_0x2783('0x47')](function(_0x3a4c62){if(_0x3a4c62){return rp({'method':'GET','uri':util[_0x2783('0x6f')](_0x2783('0x70'),_0x5ab85b),'qs':{'module':_0x2783('0x71')},'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x3a4c62},'json':!![]});}})['then'](function(_0xf80b7){if(_0xf80b7){if(_0xf80b7[_0x2783('0x72')]&&_0xf80b7[_0x2783('0x72')]['error']){throw new Error(_0xf80b7[_0x2783('0x72')][_0x2783('0x73')][_0x2783('0x74')]);}var _0x3f7cf3=[];var _0x3257e9=[];var _0x4af804=['Owner',_0x2783('0x75'),_0x2783('0x76'),'WhoId',_0x2783('0x77'),'Call_Result','Call_Start_Time',_0x2783('0x78')];_0x3257e9=_[_0x2783('0x79')](_0xf80b7[_0x2783('0x39')],function(_0x4c5b15){return _0x4af804[_0x2783('0x7a')](_0x4c5b15['api_name']);});for(var _0xe20d37=0x0;_0xe20d37<_0x3257e9[_0x2783('0x4a')];_0xe20d37++){if(_0x3257e9[_0xe20d37][_0x2783('0x7b')]===![]){_0x3f7cf3[_0x2783('0x7c')]({'id':_0x3257e9[_0xe20d37]['id'],'name':_0x3257e9[_0xe20d37][_0x2783('0x7d')],'custom':_0x3257e9[_0xe20d37][_0x2783('0x7e')],'options':_0x3257e9[_0xe20d37]['data_type']===_0x2783('0x7f')&&_0x3257e9[_0xe20d37][_0x2783('0x80')]['length']>-0x1?_['map'](_0x3257e9[_0xe20d37][_0x2783('0x80')],function(_0x1beeea){return{'name':_0x1beeea,'value':_0x1beeea};}):[]});}}return{'count':_0x3f7cf3[_0x2783('0x4a')],'rows':_0x3f7cf3};}else{return{'count':0x0,'rows':[]};}})[_0x2783('0x47')](respondWithResult(_0x28c353,null))[_0x2783('0x48')](function(_0xd48872){var _0x10e40b=_0x3c70c2[_0x2783('0x34')]['test']?0x1f4:_0xd48872[_0x2783('0x81')]||0x1f4;logger[_0x2783('0x73')]('getFields,\x20%s,\x20%s,\x20%s',_0x2783('0x66'),_0x10e40b,JSON[_0x2783('0x82')](_0xd48872));delete _0xd48872[_0x2783('0x2c')];if(_0x10e40b===0x191){_0x10e40b=0x190;}_0x28c353[_0x2783('0x1f')](_0x10e40b)['send'](_0x3c70c2[_0x2783('0x34')][_0x2783('0x83')]?{'message':_0x2783('0x84'),'statusCode':_0xd48872[_0x2783('0x81')]}:_0xd48872);});};
\ No newline at end of file
+var _0x1472=['../../components/integrations/configuration','sendStatus','end','json','offset','undefined','limit','count','status','set','apply','reject','error','name','send','map','ZohoAccount','rawAttributes','fieldName','type','key','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','filter','then','include','findAll','rows','catch','params','keys','includeAll','options','find','create','body','getConfigurations','findOne','ZohoConfiguration','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','ZohoField','https://accounts.zoho.com.au','https://accounts.zoho.eu','https://accounts.zoho.in','https://accounts.zoho.com.cn','POST','/oauth/v2/token','refreshToken','clientId','clientSecret','access_token','Unable\x20to\x20retrieve\x20the\x20access\x20token','getFields','zone','serverUrl','host','zoho.eu','com','slice','substring','lastIndexOf','GET','https://www.zohoapis.%s/crm/v2/settings/fields','Zoho-oauthtoken\x20','response','message','Owner','Description','WhoId','Call_Duration','Call_Result','Call_Start_Time','remove','includes','api_name','push','display_label','custom_field','data_type','picklist','pick_list_values','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','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','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../mysqldb'];(function(_0x17d346,_0x5a0fad){var _0x28d304=function(_0x2cb08e){while(--_0x2cb08e){_0x17d346['push'](_0x17d346['shift']());}};_0x28d304(++_0x5a0fad);}(_0x1472,0xe9));var _0x2147=function(_0x36dfbd,_0x5bfe2d){_0x36dfbd=_0x36dfbd-0x0;var _0x4ecad9=_0x1472[_0x36dfbd];return _0x4ecad9;};'use strict';var emlformat=require(_0x2147('0x0'));var rimraf=require(_0x2147('0x1'));var zipdir=require(_0x2147('0x2'));var jsonpatch=require(_0x2147('0x3'));var rp=require(_0x2147('0x4'));var moment=require(_0x2147('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x2147('0x6'));var util=require(_0x2147('0x7'));var path=require(_0x2147('0x8'));var sox=require(_0x2147('0x9'));var csv=require(_0x2147('0xa'));var ejs=require(_0x2147('0xb'));var fs=require('fs');var fs_extra=require(_0x2147('0xc'));var _=require(_0x2147('0xd'));var squel=require(_0x2147('0xe'));var crypto=require(_0x2147('0xf'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x2147('0xa'));var querystring=require(_0x2147('0x10'));var Papa=require(_0x2147('0x11'));var Redis=require('ioredis');var authService=require(_0x2147('0x12'));var qs=require(_0x2147('0x13'));var as=require(_0x2147('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x2147('0x15'))(_0x2147('0x16'));var utils=require(_0x2147('0x17'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x2147('0x18'))['db'];var integrations=require(_0x2147('0x19'));function respondWithStatusCode(_0x25509c,_0x5d5a8b){_0x5d5a8b=_0x5d5a8b||0xcc;return function(_0x278b48){if(_0x278b48){return _0x25509c[_0x2147('0x1a')](_0x5d5a8b);}return _0x25509c['status'](_0x5d5a8b)[_0x2147('0x1b')]();};}function respondWithResult(_0x3c16b2,_0x3547be){_0x3547be=_0x3547be||0xc8;return function(_0x5a84d0){if(_0x5a84d0){return _0x3c16b2['status'](_0x3547be)[_0x2147('0x1c')](_0x5a84d0);}};}function respondWithFilteredResult(_0x33a243,_0x250469){return function(_0x15302f){if(_0x15302f){var _0xa9daf0=typeof _0x250469[_0x2147('0x1d')]===_0x2147('0x1e')&&typeof _0x250469[_0x2147('0x1f')]==='undefined';var _0xb59aaf=_0x15302f[_0x2147('0x20')];var _0x270099=_0xa9daf0?0x0:_0x250469['offset'];var _0x3927ba=_0xa9daf0?_0x15302f[_0x2147('0x20')]:_0x250469[_0x2147('0x1d')]+_0x250469[_0x2147('0x1f')];var _0x241697;if(_0x3927ba>=_0xb59aaf){_0x3927ba=_0xb59aaf;_0x241697=0xc8;}else{_0x241697=0xce;}_0x33a243[_0x2147('0x21')](_0x241697);return _0x33a243[_0x2147('0x22')]('Content-Range',_0x270099+'-'+_0x3927ba+'/'+_0xb59aaf)['json'](_0x15302f);}return null;};}function patchUpdates(_0x2eceb1){return function(_0x33f23d){try{jsonpatch[_0x2147('0x23')](_0x33f23d,_0x2eceb1,!![]);}catch(_0x29262d){return BPromise[_0x2147('0x24')](_0x29262d);}return _0x33f23d['save']();};}function saveUpdates(_0x36e067,_0x565401){return function(_0x2fa72c){if(_0x2fa72c){return _0x2fa72c['update'](_0x36e067)['then'](function(_0x416172){return _0x416172;});}return null;};}function removeEntity(_0x1e964e,_0x4a094c){return function(_0x4bfc21){if(_0x4bfc21){return _0x4bfc21['destroy']()['then'](function(){_0x1e964e[_0x2147('0x21')](0xcc)[_0x2147('0x1b')]();});}};}function handleEntityNotFound(_0x4f0edd,_0x5b2dbe){return function(_0x5080ea){if(!_0x5080ea){_0x4f0edd[_0x2147('0x1a')](0x194);}return _0x5080ea;};}function handleError(_0x1ad0ce,_0x209f40){_0x209f40=_0x209f40||0x1f4;return function(_0x406075){logger[_0x2147('0x25')](_0x406075['stack']);if(_0x406075[_0x2147('0x26')]){delete _0x406075[_0x2147('0x26')];}_0x1ad0ce['status'](_0x209f40)[_0x2147('0x27')](_0x406075);};}exports['index']=function(_0x48d6df,_0x200558){var _0x460681={},_0x5a5b0b={},_0xc238d2={'count':0x0,'rows':[]};var _0x205809=_[_0x2147('0x28')](db[_0x2147('0x29')][_0x2147('0x2a')],function(_0xd295ff){return{'name':_0xd295ff[_0x2147('0x2b')],'type':_0xd295ff[_0x2147('0x2c')][_0x2147('0x2d')]};});_0x5a5b0b[_0x2147('0x2e')]=_[_0x2147('0x28')](_0x205809,_0x2147('0x26'));_0x5a5b0b['query']=_['keys'](_0x48d6df[_0x2147('0x2f')]);_0x5a5b0b[_0x2147('0x30')]=_['intersection'](_0x5a5b0b[_0x2147('0x2e')],_0x5a5b0b[_0x2147('0x2f')]);_0x460681[_0x2147('0x31')]=_[_0x2147('0x32')](_0x5a5b0b['model'],qs[_0x2147('0x33')](_0x48d6df[_0x2147('0x2f')][_0x2147('0x33')]));_0x460681[_0x2147('0x31')]=_0x460681['attributes'][_0x2147('0x34')]?_0x460681[_0x2147('0x31')]:_0x5a5b0b[_0x2147('0x2e')];if(!_0x48d6df[_0x2147('0x2f')][_0x2147('0x35')](_0x2147('0x36'))){_0x460681[_0x2147('0x1f')]=qs[_0x2147('0x1f')](_0x48d6df[_0x2147('0x2f')][_0x2147('0x1f')]);_0x460681[_0x2147('0x1d')]=qs['offset'](_0x48d6df['query']['offset']);}_0x460681[_0x2147('0x37')]=qs[_0x2147('0x38')](_0x48d6df['query']['sort']);_0x460681[_0x2147('0x39')]=qs[_0x2147('0x30')](_[_0x2147('0x3a')](_0x48d6df[_0x2147('0x2f')],_0x5a5b0b[_0x2147('0x30')]),_0x205809);if(_0x48d6df[_0x2147('0x2f')]['filter']){_0x460681[_0x2147('0x39')]=_[_0x2147('0x3b')](_0x460681['where'],{'$or':_['map'](_0x205809,function(_0x46047c){if(_0x46047c['type']!=='VIRTUAL'){var _0x30c006={};_0x30c006[_0x46047c[_0x2147('0x26')]]={'$like':'%'+_0x48d6df[_0x2147('0x2f')][_0x2147('0x3c')]+'%'};return _0x30c006;}})});}_0x460681=_[_0x2147('0x3b')]({},_0x460681,_0x48d6df['options']);var _0x2eaa90={'where':_0x460681[_0x2147('0x39')]};return db[_0x2147('0x29')][_0x2147('0x20')](_0x2eaa90)[_0x2147('0x3d')](function(_0x126072){_0xc238d2[_0x2147('0x20')]=_0x126072;if(_0x48d6df[_0x2147('0x2f')]['includeAll']){_0x460681[_0x2147('0x3e')]=[{'all':!![]}];}return db[_0x2147('0x29')][_0x2147('0x3f')](_0x460681);})[_0x2147('0x3d')](function(_0x294ff4){_0xc238d2[_0x2147('0x40')]=_0x294ff4;return _0xc238d2;})[_0x2147('0x3d')](respondWithFilteredResult(_0x200558,_0x460681))[_0x2147('0x41')](handleError(_0x200558,null));};exports['show']=function(_0x3de520,_0x29fba7){var _0x5d95e3={'raw':![],'where':{'id':_0x3de520[_0x2147('0x42')]['id']}},_0x6cc12f={};_0x6cc12f[_0x2147('0x2e')]=_[_0x2147('0x43')](db[_0x2147('0x29')]['rawAttributes']);_0x6cc12f[_0x2147('0x2f')]=_['keys'](_0x3de520[_0x2147('0x2f')]);_0x6cc12f[_0x2147('0x30')]=_[_0x2147('0x32')](_0x6cc12f[_0x2147('0x2e')],_0x6cc12f['query']);_0x5d95e3['attributes']=_[_0x2147('0x32')](_0x6cc12f[_0x2147('0x2e')],qs[_0x2147('0x33')](_0x3de520[_0x2147('0x2f')][_0x2147('0x33')]));_0x5d95e3[_0x2147('0x31')]=_0x5d95e3[_0x2147('0x31')][_0x2147('0x34')]?_0x5d95e3[_0x2147('0x31')]:_0x6cc12f['model'];if(_0x3de520[_0x2147('0x2f')][_0x2147('0x44')]){_0x5d95e3[_0x2147('0x3e')]=[{'all':!![]}];}_0x5d95e3=_['merge']({},_0x5d95e3,_0x3de520[_0x2147('0x45')]);return db['ZohoAccount'][_0x2147('0x46')](_0x5d95e3)[_0x2147('0x3d')](handleEntityNotFound(_0x29fba7,null))['then'](respondWithResult(_0x29fba7,null))[_0x2147('0x41')](handleError(_0x29fba7,null));};exports[_0x2147('0x47')]=function(_0x41c4fa,_0x33bf55){return db[_0x2147('0x29')][_0x2147('0x47')](_0x41c4fa[_0x2147('0x48')],{})[_0x2147('0x3d')](respondWithResult(_0x33bf55,0xc9))['catch'](handleError(_0x33bf55,null));};exports['update']=function(_0x549360,_0x291726){if(_0x549360[_0x2147('0x48')]['id']){delete _0x549360['body']['id'];}return db[_0x2147('0x29')][_0x2147('0x46')]({'where':{'id':_0x549360[_0x2147('0x42')]['id']}})[_0x2147('0x3d')](handleEntityNotFound(_0x291726,null))['then'](saveUpdates(_0x549360['body'],null))[_0x2147('0x3d')](respondWithResult(_0x291726,null))['catch'](handleError(_0x291726,null));};exports['destroy']=function(_0x5512ba,_0x15057e){return db[_0x2147('0x29')][_0x2147('0x46')]({'where':{'id':_0x5512ba[_0x2147('0x42')]['id']}})[_0x2147('0x3d')](handleEntityNotFound(_0x15057e,null))[_0x2147('0x3d')](removeEntity(_0x15057e,null))[_0x2147('0x41')](handleError(_0x15057e,null));};exports[_0x2147('0x49')]=function(_0x10a573,_0xf0a7bb,_0x1fd92c){var _0x123b88={};var _0x3b7770={};var _0x2169ea;var _0x42e8e6;return db[_0x2147('0x29')][_0x2147('0x4a')]({'where':{'id':_0x10a573[_0x2147('0x42')]['id']}})[_0x2147('0x3d')](handleEntityNotFound(_0xf0a7bb,null))['then'](function(_0x4e4b33){if(_0x4e4b33){_0x2169ea=_0x4e4b33;_0x3b7770[_0x2147('0x2e')]=_[_0x2147('0x43')](db[_0x2147('0x4b')][_0x2147('0x2a')]);_0x3b7770[_0x2147('0x2f')]=_['keys'](_0x10a573['query']);_0x3b7770[_0x2147('0x30')]=_[_0x2147('0x32')](_0x3b7770[_0x2147('0x2e')],_0x3b7770['query']);_0x123b88[_0x2147('0x31')]=_[_0x2147('0x32')](_0x3b7770[_0x2147('0x2e')],qs['fields'](_0x10a573[_0x2147('0x2f')]['fields']));_0x123b88['attributes']=_0x123b88[_0x2147('0x31')][_0x2147('0x34')]?_0x123b88[_0x2147('0x31')]:_0x3b7770[_0x2147('0x2e')];_0x123b88[_0x2147('0x37')]=qs[_0x2147('0x38')](_0x10a573[_0x2147('0x2f')][_0x2147('0x38')]);_0x123b88['where']=qs[_0x2147('0x30')](_['pick'](_0x10a573[_0x2147('0x2f')],_0x3b7770['filters']));if(_0x10a573[_0x2147('0x2f')][_0x2147('0x3c')]){_0x123b88[_0x2147('0x39')]=_['merge'](_0x123b88[_0x2147('0x39')],{'$or':_[_0x2147('0x28')](_0x123b88[_0x2147('0x31')],function(_0x359d08){var _0x5291eb={};_0x5291eb[_0x359d08]={'$like':'%'+_0x10a573[_0x2147('0x2f')]['filter']+'%'};return _0x5291eb;})});}_0x123b88=_[_0x2147('0x3b')]({},_0x123b88,_0x10a573[_0x2147('0x45')]);return _0x2169ea[_0x2147('0x49')](_0x123b88);}})[_0x2147('0x3d')](function(_0x117eab){if(_0x117eab){_0x42e8e6=_0x117eab['length'];if(!_0x10a573[_0x2147('0x2f')][_0x2147('0x35')]('nolimit')){_0x123b88[_0x2147('0x1f')]=qs[_0x2147('0x1f')](_0x10a573['query']['limit']);_0x123b88['offset']=qs[_0x2147('0x1d')](_0x10a573['query'][_0x2147('0x1d')]);}return _0x2169ea['getConfigurations'](_0x123b88);}})[_0x2147('0x3d')](function(_0x2d1ad3){if(_0x2d1ad3){return _0x2d1ad3?{'count':_0x42e8e6,'rows':_0x2d1ad3}:null;}})[_0x2147('0x3d')](respondWithResult(_0xf0a7bb,null))[_0x2147('0x41')](handleError(_0xf0a7bb,null));};exports[_0x2147('0x4c')]=function(_0x24b9cd,_0x337d6e,_0x1ac9d7){if(_0x24b9cd[_0x2147('0x48')]['id']){delete _0x24b9cd[_0x2147('0x48')]['id'];}return db[_0x2147('0x29')][_0x2147('0x4a')]({'where':{'id':_0x24b9cd[_0x2147('0x42')]['id']}})['then'](handleEntityNotFound(_0x337d6e,null))[_0x2147('0x3d')](function(_0x3c0eda){if(_0x3c0eda){_0x24b9cd[_0x2147('0x48')][_0x2147('0x4d')]=_0x3c0eda['id'];_0x24b9cd[_0x2147('0x48')][_0x2147('0x4e')]=integrations[_0x2147('0x4f')](_0x24b9cd[_0x2147('0x48')][_0x2147('0x50')],_0x24b9cd[_0x2147('0x48')][_0x2147('0x2c')]);_0x24b9cd[_0x2147('0x48')][_0x2147('0x51')]=integrations[_0x2147('0x52')](_0x24b9cd['body'][_0x2147('0x50')],_0x24b9cd[_0x2147('0x48')][_0x2147('0x2c')]);return db[_0x2147('0x4b')][_0x2147('0x47')](_0x24b9cd[_0x2147('0x48')],{'include':[{'model':db['ZohoField'],'as':_0x2147('0x4e')},{'model':db[_0x2147('0x53')],'as':_0x2147('0x51')}]});}return null;})[_0x2147('0x3d')](respondWithResult(_0x337d6e,null))[_0x2147('0x41')](handleError(_0x337d6e,null));};function getAccessToken(_0x3eca76){return new Promise(function(_0x4dac87,_0x19fee7){var _0xa7d135;switch(_0x3eca76['zone']){case'US':_0xa7d135='https://accounts.zoho.com';break;case'AU':_0xa7d135=_0x2147('0x54');break;case'EU':_0xa7d135=_0x2147('0x55');break;case'IN':_0xa7d135=_0x2147('0x56');break;case'CN':_0xa7d135=_0x2147('0x57');break;default:_0xa7d135=_0x2147('0x55');break;}var _0x5f4fdc={'method':_0x2147('0x58'),'uri':_0xa7d135+_0x2147('0x59'),'qs':{'refresh_token':_0x3eca76[_0x2147('0x5a')],'client_id':_0x3eca76[_0x2147('0x5b')],'client_secret':_0x3eca76[_0x2147('0x5c')],'grant_type':'refresh_token'},'json':!![]};return rp(_0x5f4fdc)[_0x2147('0x3d')](function(_0xe0d933){if(_0xe0d933['access_token']){_0x4dac87(_0xe0d933[_0x2147('0x5d')]);}else{_0x19fee7(_0x2147('0x5e'));}})[_0x2147('0x41')](function(_0x18057f){_0x19fee7(_0x18057f);});});}exports[_0x2147('0x5f')]=function(_0x5e0213,_0x9aa923,_0x16f5e3){var _0xc37f69,_0xcce661,_0x45e05e,_0x2d1f2a,_0x568ade;return db[_0x2147('0x29')]['findOne']({'where':{'id':_0x5e0213[_0x2147('0x42')]['id']},'attributes':['id','host',_0x2147('0x60'),_0x2147('0x5b'),_0x2147('0x5c'),_0x2147('0x61'),'code',_0x2147('0x5a')]})[_0x2147('0x3d')](handleEntityNotFound(_0x9aa923,null))['then'](function(_0x308640){_0x568ade=_0x308640;_0xc37f69=_0x568ade[_0x2147('0x62')];_0xcce661=_0xc37f69===_0x2147('0x63')?'eu':_0x2147('0x64');_0x45e05e=_0x568ade[_0x2147('0x61')];var _0x47dd02=_0x45e05e[_0x2147('0x65')](-0x1);if(_0x47dd02==='/'||_0x47dd02==='\x5c'||_0x47dd02===':'){_0x45e05e=_0x45e05e[_0x2147('0x66')](0x0,_0x45e05e[_0x2147('0x67')](_0x47dd02));}if(!_0x568ade['refreshToken']){throw new Error('Refresh\x20Token\x20not\x20available\x20for\x20the\x20account');}return getAccessToken(_0x568ade);})['then'](function(_0x424a51){if(_0x424a51){return rp({'method':_0x2147('0x68'),'uri':util['format'](_0x2147('0x69'),_0xcce661),'qs':{'module':'Calls'},'headers':{'Authorization':_0x2147('0x6a')+_0x424a51},'json':!![]});}})[_0x2147('0x3d')](function(_0x230443){if(_0x230443){if(_0x230443[_0x2147('0x6b')]&&_0x230443[_0x2147('0x6b')][_0x2147('0x25')]){throw new Error(_0x230443[_0x2147('0x6b')][_0x2147('0x25')][_0x2147('0x6c')]);}var _0x124db7=[];var _0xf455fb=[];var _0x2f30de=[_0x2147('0x6d'),'Subject',_0x2147('0x6e'),_0x2147('0x6f'),_0x2147('0x70'),_0x2147('0x71'),_0x2147('0x72'),'Call_Type'];_0xf455fb=_[_0x2147('0x73')](_0x230443['fields'],function(_0x2f5b41){return _0x2f30de[_0x2147('0x74')](_0x2f5b41[_0x2147('0x75')]);});for(var _0x27f02b=0x0;_0x27f02b<_0xf455fb[_0x2147('0x34')];_0x27f02b++){if(_0xf455fb[_0x27f02b]['system_mandatory']===![]){_0x124db7[_0x2147('0x76')]({'id':_0xf455fb[_0x27f02b]['id'],'name':_0xf455fb[_0x27f02b][_0x2147('0x77')],'custom':_0xf455fb[_0x27f02b][_0x2147('0x78')],'options':_0xf455fb[_0x27f02b][_0x2147('0x79')]===_0x2147('0x7a')&&_0xf455fb[_0x27f02b][_0x2147('0x7b')][_0x2147('0x34')]>-0x1?_[_0x2147('0x28')](_0xf455fb[_0x27f02b]['pick_list_values'],function(_0x5ebfdd){return{'name':_0x5ebfdd,'value':_0x5ebfdd};}):[]});}}return{'count':_0x124db7[_0x2147('0x34')],'rows':_0x124db7};}else{return{'count':0x0,'rows':[]};}})[_0x2147('0x3d')](respondWithResult(_0x9aa923,null))['catch'](function(_0x37cfb1){var _0x577cce=_0x5e0213[_0x2147('0x2f')][_0x2147('0x7c')]?0x1f4:_0x37cfb1[_0x2147('0x7d')]||0x1f4;logger[_0x2147('0x25')](_0x2147('0x7e'),_0x2147('0x5f'),_0x577cce,JSON[_0x2147('0x7f')](_0x37cfb1));delete _0x37cfb1[_0x2147('0x26')];if(_0x577cce===0x191){_0x577cce=0x190;}_0x9aa923['status'](_0x577cce)['send'](_0x5e0213['query'][_0x2147('0x7c')]?{'message':_0x2147('0x80'),'statusCode':_0x37cfb1[_0x2147('0x7d')]}:_0x37cfb1);});};
\ No newline at end of file
index 7c6cf16..4404ddf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x455d=['info','ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d','error','format','ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d','name','inspect','catch','zone','clientSecret','slice','lastIndexOf','https://accounts.zoho.in','refreshToken','lodash','util','../../config/logger','api','moment','request-promise','rimraf','../../config/environment','../../components/integrations/configuration','define','ZohoAccount','int_zoho_accounts','changed','serverUrl','code','host','substring','https://accounts.zoho.com.au','https://accounts.zoho.com.cn','https://accounts.zoho.eu','POST','/oauth/v2/token','authorization_code','clientId','application/x-www-form-urlencoded','refresh_token'];(function(_0x58a3a1,_0x59226b){var _0x53bf12=function(_0x32f179){while(--_0x32f179){_0x58a3a1['push'](_0x58a3a1['shift']());}};_0x53bf12(++_0x59226b);}(_0x455d,0xd6));var _0xd455=function(_0x4f0229,_0x2887f2){_0x4f0229=_0x4f0229-0x0;var _0x9975b7=_0x455d[_0x4f0229];return _0x9975b7;};'use strict';var _=require(_0xd455('0x0'));var util=require(_0xd455('0x1'));var logger=require(_0xd455('0x2'))(_0xd455('0x3'));var moment=require(_0xd455('0x4'));var BPromise=require('bluebird');var rp=require(_0xd455('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xd455('0x6'));var config=require(_0xd455('0x7'));var attributes=require('./intZohoAccount.attributes');var integrations=require(_0xd455('0x8'));module['exports']=function(_0x132fc5,_0x5ca64f){return _0x132fc5[_0xd455('0x9')](_0xd455('0xa'),attributes,{'tableName':_0xd455('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeCreate':function(_0x2921d2,_0x43673c,_0x3cea5f){if(_0x2921d2['changed']('zone')||_0x2921d2[_0xd455('0xc')](_0xd455('0xd'))||_0x2921d2[_0xd455('0xc')]('clientId')||_0x2921d2[_0xd455('0xc')]('clientSecret')||_0x2921d2[_0xd455('0xc')](_0xd455('0xe'))||_0x2921d2[_0xd455('0xc')](_0xd455('0xf'))){var _0x1a5cac,_0x5c1303;_0x1a5cac=_0x2921d2[_0xd455('0xd')];var _0x43f810=_0x1a5cac['slice'](-0x1);if(_0x43f810==='/'||_0x43f810==='\x5c'||_0x43f810===':'){_0x1a5cac=_0x1a5cac[_0xd455('0x10')](0x0,_0x1a5cac['lastIndexOf'](_0x43f810));}switch(_0x2921d2['zone']){case'US':_0x5c1303='https://accounts.zoho.com';break;case'AU':_0x5c1303=_0xd455('0x11');break;case'IN':_0x5c1303='https://accounts.zoho.in';break;case'CN':_0x5c1303=_0xd455('0x12');break;default:_0x5c1303=_0xd455('0x13');break;}var _0x4d622f={'method':_0xd455('0x14'),'uri':_0x5c1303+_0xd455('0x15'),'form':{'grant_type':_0xd455('0x16'),'client_id':_0x2921d2[_0xd455('0x17')],'client_secret':_0x2921d2['clientSecret'],'redirect_uri':_0x2921d2[_0xd455('0xd')],'code':_0x2921d2[_0xd455('0xe')]},'headers':{'Content-Type':_0xd455('0x18')}};return rp(_0x4d622f)['then'](function(_0x35ab18){var _0x592b30=JSON['parse'](_0x35ab18);if(_0x592b30[_0xd455('0x19')]){_0x2921d2['refreshToken']=_0x592b30[_0xd455('0x19')];logger[_0xd455('0x1a')](util['format'](_0xd455('0x1b'),_0x2921d2['name'],_0x2921d2['id']));}else{logger[_0xd455('0x1c')](util[_0xd455('0x1d')](_0xd455('0x1e'),_0x2921d2[_0xd455('0x1f')],_0x2921d2['id']),util[_0xd455('0x20')](_0x592b30,{'showHidden':![],'depth':null}));}return _0x3cea5f(null,_0x43673c);})[_0xd455('0x21')](function(_0x13b515){logger['error'](util[_0xd455('0x1d')]('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x2921d2['name'],_0x2921d2['id']),util[_0xd455('0x20')](parsedResult,{'showHidden':![],'depth':null}));return _0x3cea5f(_0x13b515);});}else{return _0x3cea5f(null,_0x43673c);}},'beforeUpdate':function(_0x3c68d7,_0x39a12a,_0x34e01c){if(_0x3c68d7[_0xd455('0xc')](_0xd455('0x22'))||_0x3c68d7[_0xd455('0xc')](_0xd455('0xd'))||_0x3c68d7[_0xd455('0xc')](_0xd455('0x17'))||_0x3c68d7[_0xd455('0xc')](_0xd455('0x23'))||_0x3c68d7[_0xd455('0xc')]('code')||_0x3c68d7[_0xd455('0xc')](_0xd455('0xf'))){var _0x17d644,_0x50d882;_0x17d644=_0x3c68d7[_0xd455('0xd')];var _0x8cb3a=_0x17d644[_0xd455('0x24')](-0x1);if(_0x8cb3a==='/'||_0x8cb3a==='\x5c'||_0x8cb3a===':'){_0x17d644=_0x17d644[_0xd455('0x10')](0x0,_0x17d644[_0xd455('0x25')](_0x8cb3a));}switch(_0x3c68d7[_0xd455('0x22')]){case'US':_0x50d882='https://accounts.zoho.com';break;case'AU':_0x50d882=_0xd455('0x11');break;case'IN':_0x50d882=_0xd455('0x26');break;case'CN':_0x50d882=_0xd455('0x12');break;default:_0x50d882='https://accounts.zoho.eu';break;}var _0xdbf3ce={'method':_0xd455('0x14'),'uri':_0x50d882+_0xd455('0x15'),'form':{'grant_type':_0xd455('0x16'),'client_id':_0x3c68d7['clientId'],'client_secret':_0x3c68d7['clientSecret'],'redirect_uri':_0x3c68d7[_0xd455('0xd')],'code':_0x3c68d7[_0xd455('0xe')]},'headers':{'Content-Type':_0xd455('0x18')}};return rp(_0xdbf3ce)['then'](function(_0x2c2ed8){var _0x4f46d3=JSON['parse'](_0x2c2ed8);if(_0x4f46d3[_0xd455('0x19')]){_0x3c68d7[_0xd455('0x27')]=_0x4f46d3[_0xd455('0x19')];logger[_0xd455('0x1a')](util[_0xd455('0x1d')](_0xd455('0x1b'),_0x3c68d7['name'],_0x3c68d7['id']));}else{logger[_0xd455('0x1c')](util[_0xd455('0x1d')]('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x3c68d7[_0xd455('0x1f')],_0x3c68d7['id']),util[_0xd455('0x20')](_0x4f46d3,{'showHidden':![],'depth':null}));}return _0x34e01c(null,_0x39a12a);})[_0xd455('0x21')](function(_0x6c527e){logger[_0xd455('0x1c')](util['format'](_0xd455('0x1e'),_0x3c68d7[_0xd455('0x1f')],_0x3c68d7['id']),util[_0xd455('0x20')](parsedResult,{'showHidden':![],'depth':null}));return _0x34e01c(_0x6c527e);});}else{return _0x34e01c(null,_0x39a12a);}}}});};
\ No newline at end of file
+var _0x5901=['serverUrl','clientSecret','host','substring','lastIndexOf','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.in','https://accounts.zoho.com.cn','https://accounts.zoho.eu','POST','/oauth/v2/token','authorization_code','clientId','code','application/x-www-form-urlencoded','then','refresh_token','refreshToken','info','format','ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d','name','error','inspect','catch','ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intZohoAccount.attributes','../../components/integrations/configuration','exports','ZohoAccount','changed','zone'];(function(_0x557083,_0x2520bb){var _0x4e4f51=function(_0x71f3ac){while(--_0x71f3ac){_0x557083['push'](_0x557083['shift']());}};_0x4e4f51(++_0x2520bb);}(_0x5901,0x183));var _0x1590=function(_0x5f4457,_0x5c22e2){_0x5f4457=_0x5f4457-0x0;var _0x48e89a=_0x5901[_0x5f4457];return _0x48e89a;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x1590('0x0'))('api');var moment=require(_0x1590('0x1'));var BPromise=require(_0x1590('0x2'));var rp=require(_0x1590('0x3'));var fs=require('fs');var path=require(_0x1590('0x4'));var rimraf=require(_0x1590('0x5'));var config=require(_0x1590('0x6'));var attributes=require(_0x1590('0x7'));var integrations=require(_0x1590('0x8'));module[_0x1590('0x9')]=function(_0x1d1ada,_0x24e3f5){return _0x1d1ada['define'](_0x1590('0xa'),attributes,{'tableName':'int_zoho_accounts','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeCreate':function(_0x4b784e,_0xc33828,_0x247679){if(_0x4b784e[_0x1590('0xb')](_0x1590('0xc'))||_0x4b784e[_0x1590('0xb')](_0x1590('0xd'))||_0x4b784e[_0x1590('0xb')]('clientId')||_0x4b784e[_0x1590('0xb')](_0x1590('0xe'))||_0x4b784e['changed']('code')||_0x4b784e[_0x1590('0xb')](_0x1590('0xf'))){var _0x10787,_0x49470d;_0x10787=_0x4b784e['serverUrl'];var _0x193363=_0x10787['slice'](-0x1);if(_0x193363==='/'||_0x193363==='\x5c'||_0x193363===':'){_0x10787=_0x10787[_0x1590('0x10')](0x0,_0x10787[_0x1590('0x11')](_0x193363));}switch(_0x4b784e[_0x1590('0xc')]){case'US':_0x49470d=_0x1590('0x12');break;case'AU':_0x49470d=_0x1590('0x13');break;case'IN':_0x49470d=_0x1590('0x14');break;case'CN':_0x49470d=_0x1590('0x15');break;default:_0x49470d=_0x1590('0x16');break;}var _0x37582c={'method':_0x1590('0x17'),'uri':_0x49470d+_0x1590('0x18'),'form':{'grant_type':_0x1590('0x19'),'client_id':_0x4b784e[_0x1590('0x1a')],'client_secret':_0x4b784e[_0x1590('0xe')],'redirect_uri':_0x4b784e['serverUrl'],'code':_0x4b784e[_0x1590('0x1b')]},'headers':{'Content-Type':_0x1590('0x1c')}};return rp(_0x37582c)[_0x1590('0x1d')](function(_0x58cb52){var _0x4f4f06=JSON['parse'](_0x58cb52);if(_0x4f4f06[_0x1590('0x1e')]){_0x4b784e[_0x1590('0x1f')]=_0x4f4f06[_0x1590('0x1e')];logger[_0x1590('0x20')](util[_0x1590('0x21')](_0x1590('0x22'),_0x4b784e[_0x1590('0x23')],_0x4b784e['id']));}else{logger[_0x1590('0x24')](util[_0x1590('0x21')]('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x4b784e[_0x1590('0x23')],_0x4b784e['id']),util[_0x1590('0x25')](_0x4f4f06,{'showHidden':![],'depth':null}));}return _0x247679(null,_0xc33828);})[_0x1590('0x26')](function(_0x5bcde2){logger[_0x1590('0x24')](util['format'](_0x1590('0x27'),_0x4b784e['name'],_0x4b784e['id']),util[_0x1590('0x25')](parsedResult,{'showHidden':![],'depth':null}));return _0x247679(_0x5bcde2);});}else{return _0x247679(null,_0xc33828);}},'beforeUpdate':function(_0x2bcc93,_0x446ece,_0x4f9c19){if(_0x2bcc93[_0x1590('0xb')](_0x1590('0xc'))||_0x2bcc93[_0x1590('0xb')](_0x1590('0xd'))||_0x2bcc93['changed'](_0x1590('0x1a'))||_0x2bcc93[_0x1590('0xb')]('clientSecret')||_0x2bcc93[_0x1590('0xb')](_0x1590('0x1b'))||_0x2bcc93['changed'](_0x1590('0xf'))){var _0xfdf113,_0x3ac3e3;_0xfdf113=_0x2bcc93[_0x1590('0xd')];var _0x1e3cbc=_0xfdf113['slice'](-0x1);if(_0x1e3cbc==='/'||_0x1e3cbc==='\x5c'||_0x1e3cbc===':'){_0xfdf113=_0xfdf113['substring'](0x0,_0xfdf113[_0x1590('0x11')](_0x1e3cbc));}switch(_0x2bcc93[_0x1590('0xc')]){case'US':_0x3ac3e3=_0x1590('0x12');break;case'AU':_0x3ac3e3='https://accounts.zoho.com.au';break;case'IN':_0x3ac3e3=_0x1590('0x14');break;case'CN':_0x3ac3e3=_0x1590('0x15');break;default:_0x3ac3e3=_0x1590('0x16');break;}var _0x3840a7={'method':_0x1590('0x17'),'uri':_0x3ac3e3+'/oauth/v2/token','form':{'grant_type':_0x1590('0x19'),'client_id':_0x2bcc93[_0x1590('0x1a')],'client_secret':_0x2bcc93['clientSecret'],'redirect_uri':_0x2bcc93[_0x1590('0xd')],'code':_0x2bcc93[_0x1590('0x1b')]},'headers':{'Content-Type':_0x1590('0x1c')}};return rp(_0x3840a7)[_0x1590('0x1d')](function(_0x1bab8e){var _0x4b3331=JSON['parse'](_0x1bab8e);if(_0x4b3331[_0x1590('0x1e')]){_0x2bcc93[_0x1590('0x1f')]=_0x4b3331[_0x1590('0x1e')];logger[_0x1590('0x20')](util[_0x1590('0x21')](_0x1590('0x22'),_0x2bcc93['name'],_0x2bcc93['id']));}else{logger[_0x1590('0x24')](util[_0x1590('0x21')](_0x1590('0x27'),_0x2bcc93[_0x1590('0x23')],_0x2bcc93['id']),util[_0x1590('0x25')](_0x4b3331,{'showHidden':![],'depth':null}));}return _0x4f9c19(null,_0x446ece);})[_0x1590('0x26')](function(_0x522b6f){logger[_0x1590('0x24')](util[_0x1590('0x21')](_0x1590('0x27'),_0x2bcc93['name'],_0x2bcc93['id']),util[_0x1590('0x25')](parsedResult,{'showHidden':![],'depth':null}));return _0x4f9c19(_0x522b6f);});}else{return _0x4f9c19(null,_0x446ece);}}}});};
\ No newline at end of file
index 45f5a03..6691fed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb515=['request\x20sent','debug','ZohoAccount,\x20%s,\x20%s,\x20%s','stringify','error','ZohoAccount,\x20%s,\x20%s','message','result','catch','ZohoAccount','options','raw','where','attributes','limit','include','map','model','GetZohoAccount','ShowZohoAccount','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info'];(function(_0x564523,_0x5db1c8){var _0x404d2a=function(_0x346236){while(--_0x346236){_0x564523['push'](_0x564523['shift']());}};_0x404d2a(++_0x5db1c8);}(_0xb515,0x1b8));var _0x5b51=function(_0xe5b349,_0x5f06e4){_0xe5b349=_0xe5b349-0x0;var _0x26b0ad=_0xb515[_0xe5b349];return _0x26b0ad;};'use strict';var _=require(_0x5b51('0x0'));var util=require('util');var moment=require(_0x5b51('0x1'));var BPromise=require(_0x5b51('0x2'));var rs=require(_0x5b51('0x3'));var fs=require('fs');var Redis=require(_0x5b51('0x4'));var db=require(_0x5b51('0x5'))['db'];var utils=require(_0x5b51('0x6'));var logger=require(_0x5b51('0x7'))(_0x5b51('0x8'));var config=require('../../config/environment');var jayson=require(_0x5b51('0x9'));var client=jayson[_0x5b51('0xa')][_0x5b51('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x293d82,_0x396b3f,_0x2c6d86){return new BPromise(function(_0x1d5082,_0x226e9c){return client[_0x5b51('0xc')](_0x293d82,_0x2c6d86)[_0x5b51('0xd')](function(_0x1085e6){logger[_0x5b51('0xe')]('ZohoAccount,\x20%s,\x20%s',_0x396b3f,_0x5b51('0xf'));logger[_0x5b51('0x10')](_0x5b51('0x11'),_0x396b3f,_0x5b51('0xf'),JSON[_0x5b51('0x12')](_0x1085e6));if(_0x1085e6[_0x5b51('0x13')]){if(_0x1085e6['error']['code']===0x1f4){logger['error'](_0x5b51('0x14'),_0x396b3f,_0x1085e6[_0x5b51('0x13')][_0x5b51('0x15')]);return _0x226e9c(_0x1085e6[_0x5b51('0x13')]['message']);}logger[_0x5b51('0x13')](_0x5b51('0x14'),_0x396b3f,_0x1085e6[_0x5b51('0x13')][_0x5b51('0x15')]);return _0x1d5082(_0x1085e6[_0x5b51('0x13')][_0x5b51('0x15')]);}else{logger[_0x5b51('0xe')](_0x5b51('0x14'),_0x396b3f,_0x5b51('0xf'));_0x1d5082(_0x1085e6[_0x5b51('0x16')][_0x5b51('0x15')]);}})[_0x5b51('0x17')](function(_0x520686){logger[_0x5b51('0x13')]('ZohoAccount,\x20%s,\x20%s',_0x396b3f,_0x520686);_0x226e9c(_0x520686);});});}exports['GetZohoAccount']=function(_0x3d570d){var _0x2142ad=this;return new Promise(function(_0x56e747,_0xb030d5){return db[_0x5b51('0x18')]['findAll']({'raw':_0x3d570d[_0x5b51('0x19')]?_0x3d570d['options'][_0x5b51('0x1a')]===undefined?!![]:![]:!![],'where':_0x3d570d[_0x5b51('0x19')]?_0x3d570d[_0x5b51('0x19')][_0x5b51('0x1b')]||null:null,'attributes':_0x3d570d[_0x5b51('0x19')]?_0x3d570d[_0x5b51('0x19')][_0x5b51('0x1c')]||null:null,'limit':_0x3d570d[_0x5b51('0x19')]?_0x3d570d['options'][_0x5b51('0x1d')]||null:null,'include':_0x3d570d[_0x5b51('0x19')]?_0x3d570d[_0x5b51('0x19')][_0x5b51('0x1e')]?_[_0x5b51('0x1f')](_0x3d570d[_0x5b51('0x19')]['include'],function(_0x59e842){return{'model':db[_0x59e842[_0x5b51('0x20')]],'as':_0x59e842['as'],'attributes':_0x59e842[_0x5b51('0x1c')],'include':_0x59e842['include']?_[_0x5b51('0x1f')](_0x59e842[_0x5b51('0x1e')],function(_0x4356fc){return{'model':db[_0x4356fc[_0x5b51('0x20')]],'as':_0x4356fc['as'],'attributes':_0x4356fc['attributes'],'include':_0x4356fc[_0x5b51('0x1e')]?_[_0x5b51('0x1f')](_0x4356fc[_0x5b51('0x1e')],function(_0x399d2a){return{'model':db[_0x399d2a[_0x5b51('0x20')]],'as':_0x399d2a['as'],'attributes':_0x399d2a['attributes']};}):[]};}):[]};}):[]:[]})[_0x5b51('0xd')](function(_0x5346c3){logger[_0x5b51('0xe')](_0x5b51('0x21'),_0x3d570d);logger[_0x5b51('0x10')](_0x5b51('0x21'),_0x3d570d,JSON[_0x5b51('0x12')](_0x5346c3));_0x56e747(_0x5346c3);})[_0x5b51('0x17')](function(_0xbefb98){logger[_0x5b51('0x13')](_0x5b51('0x21'),_0xbefb98[_0x5b51('0x15')],_0x3d570d);_0xb030d5(_0x2142ad['error'](0x1f4,_0xbefb98[_0x5b51('0x15')]));});});};exports[_0x5b51('0x22')]=function(_0x43d2e3){var _0xe456a9=this;return new Promise(function(_0x151955,_0x4ef6e0){return db[_0x5b51('0x18')]['find']({'raw':_0x43d2e3['options']?_0x43d2e3[_0x5b51('0x19')][_0x5b51('0x1a')]===undefined?!![]:![]:!![],'where':_0x43d2e3[_0x5b51('0x19')]?_0x43d2e3[_0x5b51('0x19')][_0x5b51('0x1b')]||null:null,'attributes':_0x43d2e3['options']?_0x43d2e3[_0x5b51('0x19')][_0x5b51('0x1c')]||null:null,'include':_0x43d2e3['options']?_0x43d2e3[_0x5b51('0x19')]['include']?_[_0x5b51('0x1f')](_0x43d2e3[_0x5b51('0x19')][_0x5b51('0x1e')],function(_0xaa1cd){return{'model':db[_0xaa1cd[_0x5b51('0x20')]],'as':_0xaa1cd['as'],'attributes':_0xaa1cd[_0x5b51('0x1c')],'include':_0xaa1cd[_0x5b51('0x1e')]?_[_0x5b51('0x1f')](_0xaa1cd[_0x5b51('0x1e')],function(_0x50d2ba){return{'model':db[_0x50d2ba['model']],'as':_0x50d2ba['as'],'attributes':_0x50d2ba[_0x5b51('0x1c')],'include':_0x50d2ba['include']?_[_0x5b51('0x1f')](_0x50d2ba[_0x5b51('0x1e')],function(_0x3d6127){return{'model':db[_0x3d6127[_0x5b51('0x20')]],'as':_0x3d6127['as'],'attributes':_0x3d6127[_0x5b51('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x5b51('0xd')](function(_0x38b5ab){logger['info'](_0x5b51('0x22'),_0x43d2e3);logger[_0x5b51('0x10')](_0x5b51('0x22'),_0x43d2e3,JSON[_0x5b51('0x12')](_0x38b5ab));_0x151955(_0x38b5ab);})['catch'](function(_0x42867e){logger[_0x5b51('0x13')]('ShowZohoAccount',_0x42867e[_0x5b51('0x15')],_0x43d2e3);_0x4ef6e0(_0xe456a9[_0x5b51('0x13')](0x1f4,_0x42867e[_0x5b51('0x15')]));});});};
\ No newline at end of file
+var _0xe61c=['lodash','moment','bluebird','randomstring','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','ZohoAccount,\x20%s,\x20%s','debug','ZohoAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','ZohoAccount','findAll','options','raw','attributes','limit','include','map','model','GetZohoAccount','where','catch','ShowZohoAccount'];(function(_0x155544,_0x19c365){var _0x3afc5b=function(_0x3851fa){while(--_0x3851fa){_0x155544['push'](_0x155544['shift']());}};_0x3afc5b(++_0x19c365);}(_0xe61c,0xee));var _0xce61=function(_0x44b3bd,_0x44c97d){_0x44b3bd=_0x44b3bd-0x0;var _0x1efc4a=_0xe61c[_0x44b3bd];return _0x1efc4a;};'use strict';var _=require(_0xce61('0x0'));var util=require('util');var moment=require(_0xce61('0x1'));var BPromise=require(_0xce61('0x2'));var rs=require(_0xce61('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xce61('0x4'));var logger=require('../../config/logger')(_0xce61('0x5'));var config=require(_0xce61('0x6'));var jayson=require(_0xce61('0x7'));var client=jayson[_0xce61('0x8')][_0xce61('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x310203,_0x24528e,_0x5f1d02){return new BPromise(function(_0x2fad37,_0x4b52c3){return client[_0xce61('0xa')](_0x310203,_0x5f1d02)[_0xce61('0xb')](function(_0xa1a028){logger[_0xce61('0xc')](_0xce61('0xd'),_0x24528e,'request\x20sent');logger[_0xce61('0xe')](_0xce61('0xf'),_0x24528e,'request\x20sent',JSON[_0xce61('0x10')](_0xa1a028));if(_0xa1a028[_0xce61('0x11')]){if(_0xa1a028['error'][_0xce61('0x12')]===0x1f4){logger['error'](_0xce61('0xd'),_0x24528e,_0xa1a028[_0xce61('0x11')]['message']);return _0x4b52c3(_0xa1a028[_0xce61('0x11')]['message']);}logger[_0xce61('0x11')]('ZohoAccount,\x20%s,\x20%s',_0x24528e,_0xa1a028[_0xce61('0x11')][_0xce61('0x13')]);return _0x2fad37(_0xa1a028[_0xce61('0x11')][_0xce61('0x13')]);}else{logger[_0xce61('0xc')]('ZohoAccount,\x20%s,\x20%s',_0x24528e,'request\x20sent');_0x2fad37(_0xa1a028[_0xce61('0x14')]['message']);}})['catch'](function(_0x1977f6){logger[_0xce61('0x11')](_0xce61('0xd'),_0x24528e,_0x1977f6);_0x4b52c3(_0x1977f6);});});}exports['GetZohoAccount']=function(_0x37d4a0){var _0x4baf32=this;return new Promise(function(_0x3df071,_0xafb99e){return db[_0xce61('0x15')][_0xce61('0x16')]({'raw':_0x37d4a0[_0xce61('0x17')]?_0x37d4a0[_0xce61('0x17')][_0xce61('0x18')]===undefined?!![]:![]:!![],'where':_0x37d4a0[_0xce61('0x17')]?_0x37d4a0['options']['where']||null:null,'attributes':_0x37d4a0[_0xce61('0x17')]?_0x37d4a0['options'][_0xce61('0x19')]||null:null,'limit':_0x37d4a0[_0xce61('0x17')]?_0x37d4a0[_0xce61('0x17')][_0xce61('0x1a')]||null:null,'include':_0x37d4a0[_0xce61('0x17')]?_0x37d4a0[_0xce61('0x17')][_0xce61('0x1b')]?_[_0xce61('0x1c')](_0x37d4a0['options']['include'],function(_0x28c7a7){return{'model':db[_0x28c7a7[_0xce61('0x1d')]],'as':_0x28c7a7['as'],'attributes':_0x28c7a7[_0xce61('0x19')],'include':_0x28c7a7[_0xce61('0x1b')]?_[_0xce61('0x1c')](_0x28c7a7[_0xce61('0x1b')],function(_0x471a08){return{'model':db[_0x471a08[_0xce61('0x1d')]],'as':_0x471a08['as'],'attributes':_0x471a08[_0xce61('0x19')],'include':_0x471a08[_0xce61('0x1b')]?_['map'](_0x471a08[_0xce61('0x1b')],function(_0x48b544){return{'model':db[_0x48b544[_0xce61('0x1d')]],'as':_0x48b544['as'],'attributes':_0x48b544[_0xce61('0x19')]};}):[]};}):[]};}):[]:[]})[_0xce61('0xb')](function(_0x23c30d){logger[_0xce61('0xc')]('GetZohoAccount',_0x37d4a0);logger[_0xce61('0xe')](_0xce61('0x1e'),_0x37d4a0,JSON['stringify'](_0x23c30d));_0x3df071(_0x23c30d);})['catch'](function(_0x5cb588){logger[_0xce61('0x11')](_0xce61('0x1e'),_0x5cb588[_0xce61('0x13')],_0x37d4a0);_0xafb99e(_0x4baf32[_0xce61('0x11')](0x1f4,_0x5cb588[_0xce61('0x13')]));});});};exports['ShowZohoAccount']=function(_0x74f1bc){var _0x314d62=this;return new Promise(function(_0x4f73cb,_0x187467){return db[_0xce61('0x15')]['find']({'raw':_0x74f1bc[_0xce61('0x17')]?_0x74f1bc[_0xce61('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x74f1bc[_0xce61('0x17')]?_0x74f1bc['options'][_0xce61('0x1f')]||null:null,'attributes':_0x74f1bc['options']?_0x74f1bc['options']['attributes']||null:null,'include':_0x74f1bc[_0xce61('0x17')]?_0x74f1bc[_0xce61('0x17')][_0xce61('0x1b')]?_[_0xce61('0x1c')](_0x74f1bc[_0xce61('0x17')][_0xce61('0x1b')],function(_0x23688d){return{'model':db[_0x23688d[_0xce61('0x1d')]],'as':_0x23688d['as'],'attributes':_0x23688d[_0xce61('0x19')],'include':_0x23688d[_0xce61('0x1b')]?_[_0xce61('0x1c')](_0x23688d[_0xce61('0x1b')],function(_0x259a75){return{'model':db[_0x259a75[_0xce61('0x1d')]],'as':_0x259a75['as'],'attributes':_0x259a75[_0xce61('0x19')],'include':_0x259a75[_0xce61('0x1b')]?_[_0xce61('0x1c')](_0x259a75[_0xce61('0x1b')],function(_0xdb7a31){return{'model':db[_0xdb7a31[_0xce61('0x1d')]],'as':_0xdb7a31['as'],'attributes':_0xdb7a31['attributes']};}):[]};}):[]};}):[]:[]})[_0xce61('0xb')](function(_0x152856){logger[_0xce61('0xc')]('ShowZohoAccount',_0x74f1bc);logger['debug']('ShowZohoAccount',_0x74f1bc,JSON[_0xce61('0x10')](_0x152856));_0x4f73cb(_0x152856);})[_0xce61('0x20')](function(_0x1b8c66){logger[_0xce61('0x11')](_0xce61('0x21'),_0x1b8c66[_0xce61('0x13')],_0x74f1bc);_0x187467(_0x314d62[_0xce61('0x11')](0x1f4,_0x1b8c66[_0xce61('0x13')]));});});};
\ No newline at end of file
index 3036f49..37cae3c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb78f=['getSubjects','getDescriptions','post','create','put','update','delete','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intZohoConfiguration.controller','get','isAuthenticated','/:id','show','/:id/fields','/:id/subjects'];(function(_0x3bb05b,_0x2533bd){var _0x6f6ac9=function(_0x441c1a){while(--_0x441c1a){_0x3bb05b['push'](_0x3bb05b['shift']());}};_0x6f6ac9(++_0x2533bd);}(_0xb78f,0xf7));var _0xfb78=function(_0x16d196,_0x967747){_0x16d196=_0x16d196-0x0;var _0x5de768=_0xb78f[_0x16d196];return _0x5de768;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0xfb78('0x0'));var express=require(_0xfb78('0x1'));var router=express[_0xfb78('0x2')]();var fs_extra=require(_0xfb78('0x3'));var auth=require(_0xfb78('0x4'));var interaction=require(_0xfb78('0x5'));var config=require('../../config/environment');var controller=require(_0xfb78('0x6'));router[_0xfb78('0x7')]('/',auth[_0xfb78('0x8')](),controller['index']);router[_0xfb78('0x7')](_0xfb78('0x9'),auth[_0xfb78('0x8')](),controller[_0xfb78('0xa')]);router[_0xfb78('0x7')](_0xfb78('0xb'),auth[_0xfb78('0x8')](),controller['getFields']);router[_0xfb78('0x7')](_0xfb78('0xc'),auth['isAuthenticated'](),controller[_0xfb78('0xd')]);router['get']('/:id/descriptions',auth[_0xfb78('0x8')](),controller[_0xfb78('0xe')]);router[_0xfb78('0xf')]('/',auth[_0xfb78('0x8')](),controller[_0xfb78('0x10')]);router[_0xfb78('0x11')](_0xfb78('0x9'),auth['isAuthenticated'](),controller[_0xfb78('0x12')]);router[_0xfb78('0x13')](_0xfb78('0x9'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x1085=['/:id/subjects','getSubjects','getDescriptions','create','put','delete','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZohoConfiguration.controller','index','/:id','isAuthenticated','get','/:id/fields'];(function(_0x2b7764,_0x2606f1){var _0x848dcb=function(_0x1ae85b){while(--_0x1ae85b){_0x2b7764['push'](_0x2b7764['shift']());}};_0x848dcb(++_0x2606f1);}(_0x1085,0xcd));var _0x5108=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1085[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x5108('0x0'));var util=require(_0x5108('0x1'));var path=require('path');var timeout=require(_0x5108('0x2'));var express=require(_0x5108('0x3'));var router=express[_0x5108('0x4')]();var fs_extra=require(_0x5108('0x5'));var auth=require(_0x5108('0x6'));var interaction=require(_0x5108('0x7'));var config=require(_0x5108('0x8'));var controller=require(_0x5108('0x9'));router['get']('/',auth['isAuthenticated'](),controller[_0x5108('0xa')]);router['get'](_0x5108('0xb'),auth[_0x5108('0xc')](),controller['show']);router[_0x5108('0xd')](_0x5108('0xe'),auth[_0x5108('0xc')](),controller['getFields']);router[_0x5108('0xd')](_0x5108('0xf'),auth[_0x5108('0xc')](),controller[_0x5108('0x10')]);router[_0x5108('0xd')]('/:id/descriptions',auth[_0x5108('0xc')](),controller[_0x5108('0x11')]);router['post']('/',auth[_0x5108('0xc')](),controller[_0x5108('0x12')]);router[_0x5108('0x13')]('/:id',auth['isAuthenticated'](),controller['update']);router[_0x5108('0x14')](_0x5108('0xb'),auth['isAuthenticated'](),controller['destroy']);module[_0x5108('0x15')]=router;
\ No newline at end of file
index ecf777a..367d6f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2071=['sequelize','STRING','ENUM','lead','nothing','contact_lead'];(function(_0x424f69,_0x788c05){var _0x19197e=function(_0x2a84ea){while(--_0x2a84ea){_0x424f69['push'](_0x424f69['shift']());}};_0x19197e(++_0x788c05);}(_0x2071,0xa2));var _0x1207=function(_0x210b46,_0x52a05f){_0x210b46=_0x210b46-0x0;var _0x203df2=_0x2071[_0x210b46];return _0x203df2;};'use strict';var Sequelize=require(_0x1207('0x0'));module['exports']={'name':{'type':Sequelize[_0x1207('0x1')]},'moduleCreate':{'type':Sequelize[_0x1207('0x2')](_0x1207('0x3'),'contact',_0x1207('0x4')),'defaultValue':_0x1207('0x3')},'moduleSearch':{'type':Sequelize[_0x1207('0x2')](_0x1207('0x5'),'contact','lead'),'defaultValue':_0x1207('0x5')},'description':{'type':Sequelize[_0x1207('0x1')]}};
\ No newline at end of file
+var _0x23a6=['exports','STRING','ENUM','lead','contact','nothing','contact_lead','sequelize'];(function(_0x3c202d,_0x5171ff){var _0x99199=function(_0x425a96){while(--_0x425a96){_0x3c202d['push'](_0x3c202d['shift']());}};_0x99199(++_0x5171ff);}(_0x23a6,0xff));var _0x623a=function(_0x516330,_0x5bf957){_0x516330=_0x516330-0x0;var _0x30d44e=_0x23a6[_0x516330];return _0x30d44e;};'use strict';var Sequelize=require(_0x623a('0x0'));module[_0x623a('0x1')]={'name':{'type':Sequelize[_0x623a('0x2')]},'moduleCreate':{'type':Sequelize[_0x623a('0x3')](_0x623a('0x4'),_0x623a('0x5'),_0x623a('0x6')),'defaultValue':_0x623a('0x4')},'moduleSearch':{'type':Sequelize[_0x623a('0x3')](_0x623a('0x7'),_0x623a('0x5'),_0x623a('0x4')),'defaultValue':_0x623a('0x7')},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index e376430..d21621b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc94f=['intersection','fields','length','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','find','create','body','params','findOne','getFields','hasOwnProperty','getSubjects','ZohoField','nolimit','getDescriptions','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','json','offset','limit','undefined','count','reject','save','update','then','destroy','sendStatus','error','stack','name','send','index','map','ZohoConfiguration','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes'];(function(_0x11e1ef,_0x3cbe5e){var _0x125d5b=function(_0x36267f){while(--_0x36267f){_0x11e1ef['push'](_0x11e1ef['shift']());}};_0x125d5b(++_0x3cbe5e);}(_0xc94f,0xbb));var _0xfc94=function(_0x422c2b,_0x2a36a1){_0x422c2b=_0x422c2b-0x0;var _0x1027d1=_0xc94f[_0x422c2b];return _0x1027d1;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xfc94('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xfc94('0x1'));var rp=require(_0xfc94('0x2'));var moment=require(_0xfc94('0x3'));var BPromise=require(_0xfc94('0x4'));var Mustache=require(_0xfc94('0x5'));var util=require(_0xfc94('0x6'));var path=require(_0xfc94('0x7'));var sox=require(_0xfc94('0x8'));var csv=require(_0xfc94('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xfc94('0xa'));var squel=require(_0xfc94('0xb'));var crypto=require('crypto');var jsforce=require(_0xfc94('0xc'));var deskjs=require(_0xfc94('0xd'));var toCsv=require(_0xfc94('0x9'));var querystring=require(_0xfc94('0xe'));var Papa=require(_0xfc94('0xf'));var Redis=require('ioredis');var authService=require(_0xfc94('0x10'));var qs=require(_0xfc94('0x11'));var as=require(_0xfc94('0x12'));var hardwareService=require(_0xfc94('0x13'));var logger=require(_0xfc94('0x14'))(_0xfc94('0x15'));var utils=require(_0xfc94('0x16'));var config=require(_0xfc94('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xfc94('0x18'))['db'];function respondWithStatusCode(_0x4e2e95,_0x186e4f){_0x186e4f=_0x186e4f||0xcc;return function(_0x2fffbd){if(_0x2fffbd){return _0x4e2e95['sendStatus'](_0x186e4f);}return _0x4e2e95[_0xfc94('0x19')](_0x186e4f)['end']();};}function respondWithResult(_0x12ff93,_0x5b3440){_0x5b3440=_0x5b3440||0xc8;return function(_0x4e2f76){if(_0x4e2f76){return _0x12ff93[_0xfc94('0x19')](_0x5b3440)[_0xfc94('0x1a')](_0x4e2f76);}};}function respondWithFilteredResult(_0x574bed,_0x52bcbc){return function(_0x5168f5){if(_0x5168f5){var _0x4ff2f9=typeof _0x52bcbc[_0xfc94('0x1b')]==='undefined'&&typeof _0x52bcbc[_0xfc94('0x1c')]===_0xfc94('0x1d');var _0x5d3682=_0x5168f5[_0xfc94('0x1e')];var _0x37ce03=_0x4ff2f9?0x0:_0x52bcbc['offset'];var _0x216c12=_0x4ff2f9?_0x5168f5[_0xfc94('0x1e')]:_0x52bcbc[_0xfc94('0x1b')]+_0x52bcbc[_0xfc94('0x1c')];var _0x39600d;if(_0x216c12>=_0x5d3682){_0x216c12=_0x5d3682;_0x39600d=0xc8;}else{_0x39600d=0xce;}_0x574bed[_0xfc94('0x19')](_0x39600d);return _0x574bed['set']('Content-Range',_0x37ce03+'-'+_0x216c12+'/'+_0x5d3682)[_0xfc94('0x1a')](_0x5168f5);}return null;};}function patchUpdates(_0x16e367){return function(_0x5d79a1){try{jsonpatch['apply'](_0x5d79a1,_0x16e367,!![]);}catch(_0x4b2163){return BPromise[_0xfc94('0x1f')](_0x4b2163);}return _0x5d79a1[_0xfc94('0x20')]();};}function saveUpdates(_0x55e7e0,_0x29d832){return function(_0x12248e){if(_0x12248e){return _0x12248e[_0xfc94('0x21')](_0x55e7e0)[_0xfc94('0x22')](function(_0x517a11){return _0x517a11;});}return null;};}function removeEntity(_0x37794d,_0x527979){return function(_0x247f46){if(_0x247f46){return _0x247f46[_0xfc94('0x23')]()[_0xfc94('0x22')](function(){_0x37794d['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x177801,_0x2d5519){return function(_0x24dd01){if(!_0x24dd01){_0x177801[_0xfc94('0x24')](0x194);}return _0x24dd01;};}function handleError(_0x3986e1,_0x21e528){_0x21e528=_0x21e528||0x1f4;return function(_0xe9e3d0){logger[_0xfc94('0x25')](_0xe9e3d0[_0xfc94('0x26')]);if(_0xe9e3d0[_0xfc94('0x27')]){delete _0xe9e3d0[_0xfc94('0x27')];}_0x3986e1['status'](_0x21e528)[_0xfc94('0x28')](_0xe9e3d0);};}exports[_0xfc94('0x29')]=function(_0x2eae39,_0xa39c55){var _0x4790b5={},_0x3697f6={},_0x2cb0c9={'count':0x0,'rows':[]};var _0x2d9e23=_[_0xfc94('0x2a')](db[_0xfc94('0x2b')][_0xfc94('0x2c')],function(_0x5ede12){return{'name':_0x5ede12[_0xfc94('0x2d')],'type':_0x5ede12[_0xfc94('0x2e')][_0xfc94('0x2f')]};});_0x3697f6[_0xfc94('0x30')]=_['map'](_0x2d9e23,_0xfc94('0x27'));_0x3697f6[_0xfc94('0x31')]=_[_0xfc94('0x32')](_0x2eae39[_0xfc94('0x31')]);_0x3697f6[_0xfc94('0x33')]=_['intersection'](_0x3697f6[_0xfc94('0x30')],_0x3697f6['query']);_0x4790b5[_0xfc94('0x34')]=_[_0xfc94('0x35')](_0x3697f6['model'],qs[_0xfc94('0x36')](_0x2eae39[_0xfc94('0x31')]['fields']));_0x4790b5['attributes']=_0x4790b5[_0xfc94('0x34')][_0xfc94('0x37')]?_0x4790b5[_0xfc94('0x34')]:_0x3697f6[_0xfc94('0x30')];if(!_0x2eae39[_0xfc94('0x31')]['hasOwnProperty']('nolimit')){_0x4790b5[_0xfc94('0x1c')]=qs['limit'](_0x2eae39[_0xfc94('0x31')]['limit']);_0x4790b5[_0xfc94('0x1b')]=qs[_0xfc94('0x1b')](_0x2eae39['query'][_0xfc94('0x1b')]);}_0x4790b5[_0xfc94('0x38')]=qs[_0xfc94('0x39')](_0x2eae39['query'][_0xfc94('0x39')]);_0x4790b5[_0xfc94('0x3a')]=qs[_0xfc94('0x33')](_[_0xfc94('0x3b')](_0x2eae39[_0xfc94('0x31')],_0x3697f6[_0xfc94('0x33')]),_0x2d9e23);if(_0x2eae39[_0xfc94('0x31')][_0xfc94('0x3c')]){_0x4790b5[_0xfc94('0x3a')]=_['merge'](_0x4790b5[_0xfc94('0x3a')],{'$or':_['map'](_0x2d9e23,function(_0x28d40d){if(_0x28d40d[_0xfc94('0x2e')]!==_0xfc94('0x3d')){var _0x316930={};_0x316930[_0x28d40d[_0xfc94('0x27')]]={'$like':'%'+_0x2eae39[_0xfc94('0x31')]['filter']+'%'};return _0x316930;}})});}_0x4790b5=_[_0xfc94('0x3e')]({},_0x4790b5,_0x2eae39[_0xfc94('0x3f')]);var _0x45ff69={'where':_0x4790b5[_0xfc94('0x3a')]};return db[_0xfc94('0x2b')][_0xfc94('0x1e')](_0x45ff69)['then'](function(_0x7592ee){_0x2cb0c9[_0xfc94('0x1e')]=_0x7592ee;if(_0x2eae39[_0xfc94('0x31')][_0xfc94('0x40')]){_0x4790b5[_0xfc94('0x41')]=[{'all':!![]}];}return db[_0xfc94('0x2b')][_0xfc94('0x42')](_0x4790b5);})[_0xfc94('0x22')](function(_0x471450){_0x2cb0c9[_0xfc94('0x43')]=_0x471450;return _0x2cb0c9;})[_0xfc94('0x22')](respondWithFilteredResult(_0xa39c55,_0x4790b5))[_0xfc94('0x44')](handleError(_0xa39c55,null));};exports['show']=function(_0x41e53c,_0x3a71b4){var _0x2450ae={'raw':![],'where':{'id':_0x41e53c['params']['id']}},_0x2a3eba={};_0x2a3eba[_0xfc94('0x30')]=_[_0xfc94('0x32')](db[_0xfc94('0x2b')][_0xfc94('0x2c')]);_0x2a3eba[_0xfc94('0x31')]=_[_0xfc94('0x32')](_0x41e53c[_0xfc94('0x31')]);_0x2a3eba[_0xfc94('0x33')]=_['intersection'](_0x2a3eba[_0xfc94('0x30')],_0x2a3eba[_0xfc94('0x31')]);_0x2450ae[_0xfc94('0x34')]=_['intersection'](_0x2a3eba['model'],qs[_0xfc94('0x36')](_0x41e53c[_0xfc94('0x31')][_0xfc94('0x36')]));_0x2450ae[_0xfc94('0x34')]=_0x2450ae[_0xfc94('0x34')][_0xfc94('0x37')]?_0x2450ae[_0xfc94('0x34')]:_0x2a3eba[_0xfc94('0x30')];if(_0x41e53c[_0xfc94('0x31')]['includeAll']){_0x2450ae['include']=[{'all':!![]}];}_0x2450ae=_['merge']({},_0x2450ae,_0x41e53c['options']);return db['ZohoConfiguration'][_0xfc94('0x45')](_0x2450ae)[_0xfc94('0x22')](handleEntityNotFound(_0x3a71b4,null))[_0xfc94('0x22')](respondWithResult(_0x3a71b4,null))[_0xfc94('0x44')](handleError(_0x3a71b4,null));};exports[_0xfc94('0x46')]=function(_0x4fab96,_0x152d59){return db[_0xfc94('0x2b')][_0xfc94('0x46')](_0x4fab96[_0xfc94('0x47')],{})[_0xfc94('0x22')](respondWithResult(_0x152d59,0xc9))[_0xfc94('0x44')](handleError(_0x152d59,null));};exports[_0xfc94('0x21')]=function(_0x26a391,_0x4c149c){if(_0x26a391[_0xfc94('0x47')]['id']){delete _0x26a391[_0xfc94('0x47')]['id'];}return db['ZohoConfiguration'][_0xfc94('0x45')]({'where':{'id':_0x26a391['params']['id']}})['then'](handleEntityNotFound(_0x4c149c,null))[_0xfc94('0x22')](saveUpdates(_0x26a391['body'],null))[_0xfc94('0x22')](respondWithResult(_0x4c149c,null))['catch'](handleError(_0x4c149c,null));};exports[_0xfc94('0x23')]=function(_0x20159a,_0x2c8dc8){return db['ZohoConfiguration'][_0xfc94('0x45')]({'where':{'id':_0x20159a[_0xfc94('0x48')]['id']}})['then'](handleEntityNotFound(_0x2c8dc8,null))['then'](removeEntity(_0x2c8dc8,null))[_0xfc94('0x44')](handleError(_0x2c8dc8,null));};exports['getFields']=function(_0x15a273,_0x37247f,_0x3cb06f){var _0x994da1={};var _0x10578b={};var _0x28984e;var _0x273658;return db[_0xfc94('0x2b')][_0xfc94('0x49')]({'where':{'id':_0x15a273[_0xfc94('0x48')]['id']}})['then'](handleEntityNotFound(_0x37247f,null))[_0xfc94('0x22')](function(_0x29c5ab){if(_0x29c5ab){_0x28984e=_0x29c5ab;_0x10578b[_0xfc94('0x30')]=_[_0xfc94('0x32')](db['ZohoField']['rawAttributes']);_0x10578b[_0xfc94('0x31')]=_['keys'](_0x15a273['query']);_0x10578b['filters']=_[_0xfc94('0x35')](_0x10578b['model'],_0x10578b[_0xfc94('0x31')]);_0x994da1[_0xfc94('0x34')]=_['intersection'](_0x10578b[_0xfc94('0x30')],qs[_0xfc94('0x36')](_0x15a273[_0xfc94('0x31')]['fields']));_0x994da1[_0xfc94('0x34')]=_0x994da1[_0xfc94('0x34')][_0xfc94('0x37')]?_0x994da1[_0xfc94('0x34')]:_0x10578b[_0xfc94('0x30')];_0x994da1[_0xfc94('0x38')]=qs['sort'](_0x15a273['query']['sort']);_0x994da1[_0xfc94('0x3a')]=qs[_0xfc94('0x33')](_[_0xfc94('0x3b')](_0x15a273[_0xfc94('0x31')],_0x10578b[_0xfc94('0x33')]));if(_0x15a273[_0xfc94('0x31')][_0xfc94('0x3c')]){_0x994da1[_0xfc94('0x3a')]=_[_0xfc94('0x3e')](_0x994da1[_0xfc94('0x3a')],{'$or':_[_0xfc94('0x2a')](_0x994da1[_0xfc94('0x34')],function(_0x4bc282){var _0x3b0f9c={};_0x3b0f9c[_0x4bc282]={'$like':'%'+_0x15a273[_0xfc94('0x31')]['filter']+'%'};return _0x3b0f9c;})});}_0x994da1=_[_0xfc94('0x3e')]({},_0x994da1,_0x15a273[_0xfc94('0x3f')]);return _0x28984e[_0xfc94('0x4a')](_0x994da1);}})[_0xfc94('0x22')](function(_0x3ac9d4){if(_0x3ac9d4){_0x273658=_0x3ac9d4[_0xfc94('0x37')];if(!_0x15a273[_0xfc94('0x31')][_0xfc94('0x4b')]('nolimit')){_0x994da1[_0xfc94('0x1c')]=qs['limit'](_0x15a273[_0xfc94('0x31')][_0xfc94('0x1c')]);_0x994da1['offset']=qs[_0xfc94('0x1b')](_0x15a273['query']['offset']);}return _0x28984e['getFields'](_0x994da1);}})[_0xfc94('0x22')](function(_0x27ed8e){if(_0x27ed8e){return _0x27ed8e?{'count':_0x273658,'rows':_0x27ed8e}:null;}})[_0xfc94('0x22')](respondWithResult(_0x37247f,null))['catch'](handleError(_0x37247f,null));};exports[_0xfc94('0x4c')]=function(_0x1b6214,_0x4ead93,_0x371471){var _0x2d37c8={};var _0x5cbba7={};var _0x130e45;var _0x449dd0;return db[_0xfc94('0x2b')][_0xfc94('0x49')]({'where':{'id':_0x1b6214[_0xfc94('0x48')]['id']}})[_0xfc94('0x22')](handleEntityNotFound(_0x4ead93,null))[_0xfc94('0x22')](function(_0x10afa8){if(_0x10afa8){_0x130e45=_0x10afa8;_0x5cbba7[_0xfc94('0x30')]=_[_0xfc94('0x32')](db[_0xfc94('0x4d')][_0xfc94('0x2c')]);_0x5cbba7['query']=_[_0xfc94('0x32')](_0x1b6214['query']);_0x5cbba7[_0xfc94('0x33')]=_[_0xfc94('0x35')](_0x5cbba7[_0xfc94('0x30')],_0x5cbba7['query']);_0x2d37c8[_0xfc94('0x34')]=_[_0xfc94('0x35')](_0x5cbba7[_0xfc94('0x30')],qs[_0xfc94('0x36')](_0x1b6214[_0xfc94('0x31')][_0xfc94('0x36')]));_0x2d37c8['attributes']=_0x2d37c8['attributes'][_0xfc94('0x37')]?_0x2d37c8[_0xfc94('0x34')]:_0x5cbba7[_0xfc94('0x30')];_0x2d37c8[_0xfc94('0x38')]=qs[_0xfc94('0x39')](_0x1b6214[_0xfc94('0x31')][_0xfc94('0x39')]);_0x2d37c8[_0xfc94('0x3a')]=qs['filters'](_[_0xfc94('0x3b')](_0x1b6214['query'],_0x5cbba7[_0xfc94('0x33')]));if(_0x1b6214[_0xfc94('0x31')]['filter']){_0x2d37c8[_0xfc94('0x3a')]=_['merge'](_0x2d37c8['where'],{'$or':_[_0xfc94('0x2a')](_0x2d37c8[_0xfc94('0x34')],function(_0x4da65b){var _0x582d30={};_0x582d30[_0x4da65b]={'$like':'%'+_0x1b6214[_0xfc94('0x31')][_0xfc94('0x3c')]+'%'};return _0x582d30;})});}_0x2d37c8=_[_0xfc94('0x3e')]({},_0x2d37c8,_0x1b6214['options']);return _0x130e45[_0xfc94('0x4c')](_0x2d37c8);}})[_0xfc94('0x22')](function(_0x293c24){if(_0x293c24){_0x449dd0=_0x293c24[_0xfc94('0x37')];if(!_0x1b6214[_0xfc94('0x31')][_0xfc94('0x4b')](_0xfc94('0x4e'))){_0x2d37c8[_0xfc94('0x1c')]=qs['limit'](_0x1b6214['query']['limit']);_0x2d37c8['offset']=qs[_0xfc94('0x1b')](_0x1b6214[_0xfc94('0x31')][_0xfc94('0x1b')]);}return _0x130e45[_0xfc94('0x4c')](_0x2d37c8);}})[_0xfc94('0x22')](function(_0x336ce1){if(_0x336ce1){return _0x336ce1?{'count':_0x449dd0,'rows':_0x336ce1}:null;}})[_0xfc94('0x22')](respondWithResult(_0x4ead93,null))['catch'](handleError(_0x4ead93,null));};exports[_0xfc94('0x4f')]=function(_0x34f62f,_0x2cccbc,_0x210cec){var _0x33e1d0={};var _0x4d5e1a={};var _0x51e078;var _0x2ab311;return db[_0xfc94('0x2b')][_0xfc94('0x49')]({'where':{'id':_0x34f62f['params']['id']}})[_0xfc94('0x22')](handleEntityNotFound(_0x2cccbc,null))['then'](function(_0x1f0b61){if(_0x1f0b61){_0x51e078=_0x1f0b61;_0x4d5e1a[_0xfc94('0x30')]=_[_0xfc94('0x32')](db[_0xfc94('0x4d')][_0xfc94('0x2c')]);_0x4d5e1a['query']=_[_0xfc94('0x32')](_0x34f62f[_0xfc94('0x31')]);_0x4d5e1a[_0xfc94('0x33')]=_['intersection'](_0x4d5e1a['model'],_0x4d5e1a[_0xfc94('0x31')]);_0x33e1d0[_0xfc94('0x34')]=_[_0xfc94('0x35')](_0x4d5e1a[_0xfc94('0x30')],qs[_0xfc94('0x36')](_0x34f62f['query'][_0xfc94('0x36')]));_0x33e1d0[_0xfc94('0x34')]=_0x33e1d0['attributes'][_0xfc94('0x37')]?_0x33e1d0[_0xfc94('0x34')]:_0x4d5e1a[_0xfc94('0x30')];_0x33e1d0[_0xfc94('0x38')]=qs[_0xfc94('0x39')](_0x34f62f['query'][_0xfc94('0x39')]);_0x33e1d0[_0xfc94('0x3a')]=qs[_0xfc94('0x33')](_[_0xfc94('0x3b')](_0x34f62f['query'],_0x4d5e1a['filters']));if(_0x34f62f[_0xfc94('0x31')][_0xfc94('0x3c')]){_0x33e1d0[_0xfc94('0x3a')]=_[_0xfc94('0x3e')](_0x33e1d0[_0xfc94('0x3a')],{'$or':_['map'](_0x33e1d0[_0xfc94('0x34')],function(_0x427ed5){var _0x1894c2={};_0x1894c2[_0x427ed5]={'$like':'%'+_0x34f62f['query']['filter']+'%'};return _0x1894c2;})});}_0x33e1d0=_['merge']({},_0x33e1d0,_0x34f62f[_0xfc94('0x3f')]);return _0x51e078[_0xfc94('0x4f')](_0x33e1d0);}})[_0xfc94('0x22')](function(_0xbe81cd){if(_0xbe81cd){_0x2ab311=_0xbe81cd[_0xfc94('0x37')];if(!_0x34f62f[_0xfc94('0x31')][_0xfc94('0x4b')](_0xfc94('0x4e'))){_0x33e1d0[_0xfc94('0x1c')]=qs[_0xfc94('0x1c')](_0x34f62f['query']['limit']);_0x33e1d0[_0xfc94('0x1b')]=qs['offset'](_0x34f62f[_0xfc94('0x31')][_0xfc94('0x1b')]);}return _0x51e078[_0xfc94('0x4f')](_0x33e1d0);}})[_0xfc94('0x22')](function(_0x2be52b){if(_0x2be52b){return _0x2be52b?{'count':_0x2ab311,'rows':_0x2be52b}:null;}})['then'](respondWithResult(_0x2cccbc,null))['catch'](handleError(_0x2cccbc,null));};
\ No newline at end of file
+var _0x99e7=['keys','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','filter','merge','where','VIRTUAL','options','ZohoConfiguration','includeAll','rows','catch','show','length','find','create','body','params','getFields','ZohoField','pick','getSubjects','getDescriptions','findOne','eml-format','request-promise','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','index','map','rawAttributes','type','key','model'];(function(_0x27714d,_0x457b53){var _0x18e2fb=function(_0x28f1d9){while(--_0x28f1d9){_0x27714d['push'](_0x27714d['shift']());}};_0x18e2fb(++_0x457b53);}(_0x99e7,0x6e));var _0x799e=function(_0x3048ea,_0x3838c2){_0x3048ea=_0x3048ea-0x0;var _0x1a13c4=_0x99e7[_0x3048ea];return _0x1a13c4;};'use strict';var emlformat=require(_0x799e('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x799e('0x1'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x799e('0x2'));var util=require(_0x799e('0x3'));var path=require(_0x799e('0x4'));var sox=require(_0x799e('0x5'));var csv=require(_0x799e('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x799e('0x7'));var _=require(_0x799e('0x8'));var squel=require(_0x799e('0x9'));var crypto=require(_0x799e('0xa'));var jsforce=require(_0x799e('0xb'));var deskjs=require(_0x799e('0xc'));var toCsv=require(_0x799e('0x6'));var querystring=require(_0x799e('0xd'));var Papa=require(_0x799e('0xe'));var Redis=require(_0x799e('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x799e('0x10'));var hardwareService=require(_0x799e('0x11'));var logger=require('../../config/logger')(_0x799e('0x12'));var utils=require(_0x799e('0x13'));var config=require(_0x799e('0x14'));var licenseUtil=require(_0x799e('0x15'));var db=require(_0x799e('0x16'))['db'];function respondWithStatusCode(_0x248303,_0x23fa14){_0x23fa14=_0x23fa14||0xcc;return function(_0x244829){if(_0x244829){return _0x248303['sendStatus'](_0x23fa14);}return _0x248303['status'](_0x23fa14)[_0x799e('0x17')]();};}function respondWithResult(_0x574645,_0x331476){_0x331476=_0x331476||0xc8;return function(_0x21f98b){if(_0x21f98b){return _0x574645[_0x799e('0x18')](_0x331476)[_0x799e('0x19')](_0x21f98b);}};}function respondWithFilteredResult(_0x3075c3,_0x3b7311){return function(_0x209166){if(_0x209166){var _0x3ed788=typeof _0x3b7311[_0x799e('0x1a')]===_0x799e('0x1b')&&typeof _0x3b7311[_0x799e('0x1c')]===_0x799e('0x1b');var _0x2dfcc9=_0x209166[_0x799e('0x1d')];var _0x5792d0=_0x3ed788?0x0:_0x3b7311[_0x799e('0x1a')];var _0x4eb2d8=_0x3ed788?_0x209166[_0x799e('0x1d')]:_0x3b7311[_0x799e('0x1a')]+_0x3b7311[_0x799e('0x1c')];var _0x33e029;if(_0x4eb2d8>=_0x2dfcc9){_0x4eb2d8=_0x2dfcc9;_0x33e029=0xc8;}else{_0x33e029=0xce;}_0x3075c3[_0x799e('0x18')](_0x33e029);return _0x3075c3[_0x799e('0x1e')](_0x799e('0x1f'),_0x5792d0+'-'+_0x4eb2d8+'/'+_0x2dfcc9)[_0x799e('0x19')](_0x209166);}return null;};}function patchUpdates(_0x45f7b9){return function(_0x5b50a7){try{jsonpatch[_0x799e('0x20')](_0x5b50a7,_0x45f7b9,!![]);}catch(_0x21dd47){return BPromise[_0x799e('0x21')](_0x21dd47);}return _0x5b50a7[_0x799e('0x22')]();};}function saveUpdates(_0x1990db,_0x167cc0){return function(_0xe3bc4){if(_0xe3bc4){return _0xe3bc4[_0x799e('0x23')](_0x1990db)[_0x799e('0x24')](function(_0x33b0a5){return _0x33b0a5;});}return null;};}function removeEntity(_0x500d3c,_0x5763ea){return function(_0x3b8d70){if(_0x3b8d70){return _0x3b8d70[_0x799e('0x25')]()[_0x799e('0x24')](function(){_0x500d3c[_0x799e('0x18')](0xcc)[_0x799e('0x17')]();});}};}function handleEntityNotFound(_0x297344,_0x1018f2){return function(_0x5e45d9){if(!_0x5e45d9){_0x297344[_0x799e('0x26')](0x194);}return _0x5e45d9;};}function handleError(_0x3aa1cc,_0x92884e){_0x92884e=_0x92884e||0x1f4;return function(_0x3f3cb8){logger[_0x799e('0x27')](_0x3f3cb8[_0x799e('0x28')]);if(_0x3f3cb8[_0x799e('0x29')]){delete _0x3f3cb8[_0x799e('0x29')];}_0x3aa1cc[_0x799e('0x18')](_0x92884e)['send'](_0x3f3cb8);};}exports[_0x799e('0x2a')]=function(_0x129a98,_0x2875a5){var _0x127451={},_0xb28cb2={},_0x5602e0={'count':0x0,'rows':[]};var _0x4b2bdc=_[_0x799e('0x2b')](db['ZohoConfiguration'][_0x799e('0x2c')],function(_0x25c6d9){return{'name':_0x25c6d9['fieldName'],'type':_0x25c6d9[_0x799e('0x2d')][_0x799e('0x2e')]};});_0xb28cb2[_0x799e('0x2f')]=_[_0x799e('0x2b')](_0x4b2bdc,_0x799e('0x29'));_0xb28cb2['query']=_[_0x799e('0x30')](_0x129a98[_0x799e('0x31')]);_0xb28cb2[_0x799e('0x32')]=_[_0x799e('0x33')](_0xb28cb2[_0x799e('0x2f')],_0xb28cb2['query']);_0x127451[_0x799e('0x34')]=_[_0x799e('0x33')](_0xb28cb2[_0x799e('0x2f')],qs['fields'](_0x129a98[_0x799e('0x31')][_0x799e('0x35')]));_0x127451['attributes']=_0x127451['attributes']['length']?_0x127451['attributes']:_0xb28cb2[_0x799e('0x2f')];if(!_0x129a98[_0x799e('0x31')][_0x799e('0x36')](_0x799e('0x37'))){_0x127451['limit']=qs[_0x799e('0x1c')](_0x129a98[_0x799e('0x31')][_0x799e('0x1c')]);_0x127451['offset']=qs[_0x799e('0x1a')](_0x129a98[_0x799e('0x31')][_0x799e('0x1a')]);}_0x127451[_0x799e('0x38')]=qs[_0x799e('0x39')](_0x129a98[_0x799e('0x31')][_0x799e('0x39')]);_0x127451['where']=qs[_0x799e('0x32')](_['pick'](_0x129a98[_0x799e('0x31')],_0xb28cb2['filters']),_0x4b2bdc);if(_0x129a98['query'][_0x799e('0x3a')]){_0x127451['where']=_[_0x799e('0x3b')](_0x127451[_0x799e('0x3c')],{'$or':_[_0x799e('0x2b')](_0x4b2bdc,function(_0x58501c){if(_0x58501c[_0x799e('0x2d')]!==_0x799e('0x3d')){var _0x1f5b40={};_0x1f5b40[_0x58501c[_0x799e('0x29')]]={'$like':'%'+_0x129a98[_0x799e('0x31')][_0x799e('0x3a')]+'%'};return _0x1f5b40;}})});}_0x127451=_[_0x799e('0x3b')]({},_0x127451,_0x129a98[_0x799e('0x3e')]);var _0x1ecc68={'where':_0x127451['where']};return db[_0x799e('0x3f')]['count'](_0x1ecc68)['then'](function(_0x46a23f){_0x5602e0[_0x799e('0x1d')]=_0x46a23f;if(_0x129a98[_0x799e('0x31')][_0x799e('0x40')]){_0x127451['include']=[{'all':!![]}];}return db['ZohoConfiguration']['findAll'](_0x127451);})[_0x799e('0x24')](function(_0x3bfa10){_0x5602e0[_0x799e('0x41')]=_0x3bfa10;return _0x5602e0;})[_0x799e('0x24')](respondWithFilteredResult(_0x2875a5,_0x127451))[_0x799e('0x42')](handleError(_0x2875a5,null));};exports[_0x799e('0x43')]=function(_0x154a2a,_0x5b13e4){var _0x58a3cd={'raw':![],'where':{'id':_0x154a2a['params']['id']}},_0x1845ee={};_0x1845ee[_0x799e('0x2f')]=_[_0x799e('0x30')](db[_0x799e('0x3f')][_0x799e('0x2c')]);_0x1845ee[_0x799e('0x31')]=_[_0x799e('0x30')](_0x154a2a[_0x799e('0x31')]);_0x1845ee[_0x799e('0x32')]=_[_0x799e('0x33')](_0x1845ee['model'],_0x1845ee[_0x799e('0x31')]);_0x58a3cd['attributes']=_['intersection'](_0x1845ee['model'],qs['fields'](_0x154a2a[_0x799e('0x31')][_0x799e('0x35')]));_0x58a3cd[_0x799e('0x34')]=_0x58a3cd[_0x799e('0x34')][_0x799e('0x44')]?_0x58a3cd[_0x799e('0x34')]:_0x1845ee[_0x799e('0x2f')];if(_0x154a2a[_0x799e('0x31')][_0x799e('0x40')]){_0x58a3cd['include']=[{'all':!![]}];}_0x58a3cd=_[_0x799e('0x3b')]({},_0x58a3cd,_0x154a2a[_0x799e('0x3e')]);return db[_0x799e('0x3f')][_0x799e('0x45')](_0x58a3cd)[_0x799e('0x24')](handleEntityNotFound(_0x5b13e4,null))['then'](respondWithResult(_0x5b13e4,null))[_0x799e('0x42')](handleError(_0x5b13e4,null));};exports[_0x799e('0x46')]=function(_0x4c1aef,_0x2cbdba){return db['ZohoConfiguration'][_0x799e('0x46')](_0x4c1aef[_0x799e('0x47')],{})['then'](respondWithResult(_0x2cbdba,0xc9))[_0x799e('0x42')](handleError(_0x2cbdba,null));};exports['update']=function(_0x3c02e8,_0x15ce1d){if(_0x3c02e8[_0x799e('0x47')]['id']){delete _0x3c02e8[_0x799e('0x47')]['id'];}return db[_0x799e('0x3f')][_0x799e('0x45')]({'where':{'id':_0x3c02e8[_0x799e('0x48')]['id']}})[_0x799e('0x24')](handleEntityNotFound(_0x15ce1d,null))[_0x799e('0x24')](saveUpdates(_0x3c02e8[_0x799e('0x47')],null))[_0x799e('0x24')](respondWithResult(_0x15ce1d,null))['catch'](handleError(_0x15ce1d,null));};exports[_0x799e('0x25')]=function(_0x1e8d53,_0x41d866){return db[_0x799e('0x3f')]['find']({'where':{'id':_0x1e8d53['params']['id']}})['then'](handleEntityNotFound(_0x41d866,null))['then'](removeEntity(_0x41d866,null))[_0x799e('0x42')](handleError(_0x41d866,null));};exports[_0x799e('0x49')]=function(_0x3ed6a2,_0x5ed3fe,_0x2e4178){var _0x335447={};var _0x4e55b2={};var _0x52ade3;var _0x468414;return db['ZohoConfiguration']['findOne']({'where':{'id':_0x3ed6a2[_0x799e('0x48')]['id']}})[_0x799e('0x24')](handleEntityNotFound(_0x5ed3fe,null))[_0x799e('0x24')](function(_0x278602){if(_0x278602){_0x52ade3=_0x278602;_0x4e55b2[_0x799e('0x2f')]=_[_0x799e('0x30')](db[_0x799e('0x4a')][_0x799e('0x2c')]);_0x4e55b2[_0x799e('0x31')]=_['keys'](_0x3ed6a2['query']);_0x4e55b2[_0x799e('0x32')]=_[_0x799e('0x33')](_0x4e55b2['model'],_0x4e55b2[_0x799e('0x31')]);_0x335447[_0x799e('0x34')]=_[_0x799e('0x33')](_0x4e55b2['model'],qs[_0x799e('0x35')](_0x3ed6a2[_0x799e('0x31')][_0x799e('0x35')]));_0x335447['attributes']=_0x335447['attributes'][_0x799e('0x44')]?_0x335447[_0x799e('0x34')]:_0x4e55b2['model'];_0x335447['order']=qs[_0x799e('0x39')](_0x3ed6a2[_0x799e('0x31')]['sort']);_0x335447[_0x799e('0x3c')]=qs['filters'](_[_0x799e('0x4b')](_0x3ed6a2[_0x799e('0x31')],_0x4e55b2['filters']));if(_0x3ed6a2['query'][_0x799e('0x3a')]){_0x335447[_0x799e('0x3c')]=_[_0x799e('0x3b')](_0x335447[_0x799e('0x3c')],{'$or':_[_0x799e('0x2b')](_0x335447[_0x799e('0x34')],function(_0x56512f){var _0x17b412={};_0x17b412[_0x56512f]={'$like':'%'+_0x3ed6a2[_0x799e('0x31')][_0x799e('0x3a')]+'%'};return _0x17b412;})});}_0x335447=_[_0x799e('0x3b')]({},_0x335447,_0x3ed6a2['options']);return _0x52ade3[_0x799e('0x49')](_0x335447);}})['then'](function(_0x773e4f){if(_0x773e4f){_0x468414=_0x773e4f[_0x799e('0x44')];if(!_0x3ed6a2['query'][_0x799e('0x36')](_0x799e('0x37'))){_0x335447[_0x799e('0x1c')]=qs[_0x799e('0x1c')](_0x3ed6a2[_0x799e('0x31')]['limit']);_0x335447['offset']=qs[_0x799e('0x1a')](_0x3ed6a2['query'][_0x799e('0x1a')]);}return _0x52ade3[_0x799e('0x49')](_0x335447);}})['then'](function(_0x320f56){if(_0x320f56){return _0x320f56?{'count':_0x468414,'rows':_0x320f56}:null;}})['then'](respondWithResult(_0x5ed3fe,null))[_0x799e('0x42')](handleError(_0x5ed3fe,null));};exports[_0x799e('0x4c')]=function(_0x5b12f1,_0x24ba20,_0x21dafc){var _0x10b6a4={};var _0x5073c1={};var _0x14e590;var _0x285b22;return db[_0x799e('0x3f')]['findOne']({'where':{'id':_0x5b12f1['params']['id']}})[_0x799e('0x24')](handleEntityNotFound(_0x24ba20,null))[_0x799e('0x24')](function(_0x3590d2){if(_0x3590d2){_0x14e590=_0x3590d2;_0x5073c1[_0x799e('0x2f')]=_['keys'](db[_0x799e('0x4a')]['rawAttributes']);_0x5073c1[_0x799e('0x31')]=_[_0x799e('0x30')](_0x5b12f1['query']);_0x5073c1[_0x799e('0x32')]=_[_0x799e('0x33')](_0x5073c1[_0x799e('0x2f')],_0x5073c1[_0x799e('0x31')]);_0x10b6a4[_0x799e('0x34')]=_['intersection'](_0x5073c1[_0x799e('0x2f')],qs['fields'](_0x5b12f1['query'][_0x799e('0x35')]));_0x10b6a4[_0x799e('0x34')]=_0x10b6a4[_0x799e('0x34')][_0x799e('0x44')]?_0x10b6a4[_0x799e('0x34')]:_0x5073c1['model'];_0x10b6a4[_0x799e('0x38')]=qs[_0x799e('0x39')](_0x5b12f1[_0x799e('0x31')][_0x799e('0x39')]);_0x10b6a4[_0x799e('0x3c')]=qs[_0x799e('0x32')](_[_0x799e('0x4b')](_0x5b12f1['query'],_0x5073c1[_0x799e('0x32')]));if(_0x5b12f1[_0x799e('0x31')][_0x799e('0x3a')]){_0x10b6a4[_0x799e('0x3c')]=_[_0x799e('0x3b')](_0x10b6a4['where'],{'$or':_[_0x799e('0x2b')](_0x10b6a4['attributes'],function(_0x412c36){var _0x4a7d71={};_0x4a7d71[_0x412c36]={'$like':'%'+_0x5b12f1['query']['filter']+'%'};return _0x4a7d71;})});}_0x10b6a4=_[_0x799e('0x3b')]({},_0x10b6a4,_0x5b12f1[_0x799e('0x3e')]);return _0x14e590[_0x799e('0x4c')](_0x10b6a4);}})[_0x799e('0x24')](function(_0x2fa69d){if(_0x2fa69d){_0x285b22=_0x2fa69d['length'];if(!_0x5b12f1['query'][_0x799e('0x36')]('nolimit')){_0x10b6a4['limit']=qs[_0x799e('0x1c')](_0x5b12f1[_0x799e('0x31')][_0x799e('0x1c')]);_0x10b6a4[_0x799e('0x1a')]=qs[_0x799e('0x1a')](_0x5b12f1[_0x799e('0x31')][_0x799e('0x1a')]);}return _0x14e590['getSubjects'](_0x10b6a4);}})[_0x799e('0x24')](function(_0x4da35c){if(_0x4da35c){return _0x4da35c?{'count':_0x285b22,'rows':_0x4da35c}:null;}})['then'](respondWithResult(_0x24ba20,null))[_0x799e('0x42')](handleError(_0x24ba20,null));};exports[_0x799e('0x4d')]=function(_0x4ff538,_0x534b11,_0x1167b3){var _0x50c876={};var _0x4849a4={};var _0x1dc996;var _0xe67940;return db[_0x799e('0x3f')][_0x799e('0x4e')]({'where':{'id':_0x4ff538[_0x799e('0x48')]['id']}})['then'](handleEntityNotFound(_0x534b11,null))[_0x799e('0x24')](function(_0xfc21ca){if(_0xfc21ca){_0x1dc996=_0xfc21ca;_0x4849a4['model']=_[_0x799e('0x30')](db[_0x799e('0x4a')]['rawAttributes']);_0x4849a4['query']=_[_0x799e('0x30')](_0x4ff538[_0x799e('0x31')]);_0x4849a4[_0x799e('0x32')]=_[_0x799e('0x33')](_0x4849a4['model'],_0x4849a4[_0x799e('0x31')]);_0x50c876[_0x799e('0x34')]=_['intersection'](_0x4849a4[_0x799e('0x2f')],qs[_0x799e('0x35')](_0x4ff538['query'][_0x799e('0x35')]));_0x50c876[_0x799e('0x34')]=_0x50c876[_0x799e('0x34')][_0x799e('0x44')]?_0x50c876[_0x799e('0x34')]:_0x4849a4[_0x799e('0x2f')];_0x50c876[_0x799e('0x38')]=qs[_0x799e('0x39')](_0x4ff538[_0x799e('0x31')][_0x799e('0x39')]);_0x50c876[_0x799e('0x3c')]=qs[_0x799e('0x32')](_[_0x799e('0x4b')](_0x4ff538[_0x799e('0x31')],_0x4849a4['filters']));if(_0x4ff538[_0x799e('0x31')][_0x799e('0x3a')]){_0x50c876['where']=_[_0x799e('0x3b')](_0x50c876[_0x799e('0x3c')],{'$or':_[_0x799e('0x2b')](_0x50c876[_0x799e('0x34')],function(_0x5a11d2){var _0x834184={};_0x834184[_0x5a11d2]={'$like':'%'+_0x4ff538[_0x799e('0x31')][_0x799e('0x3a')]+'%'};return _0x834184;})});}_0x50c876=_['merge']({},_0x50c876,_0x4ff538[_0x799e('0x3e')]);return _0x1dc996[_0x799e('0x4d')](_0x50c876);}})[_0x799e('0x24')](function(_0x5c0b70){if(_0x5c0b70){_0xe67940=_0x5c0b70[_0x799e('0x44')];if(!_0x4ff538[_0x799e('0x31')][_0x799e('0x36')](_0x799e('0x37'))){_0x50c876[_0x799e('0x1c')]=qs['limit'](_0x4ff538[_0x799e('0x31')][_0x799e('0x1c')]);_0x50c876[_0x799e('0x1a')]=qs[_0x799e('0x1a')](_0x4ff538[_0x799e('0x31')][_0x799e('0x1a')]);}return _0x1dc996[_0x799e('0x4d')](_0x50c876);}})[_0x799e('0x24')](function(_0x136fb5){if(_0x136fb5){return _0x136fb5?{'count':_0xe67940,'rows':_0x136fb5}:null;}})[_0x799e('0x24')](respondWithResult(_0x534b11,null))[_0x799e('0x42')](handleError(_0x534b11,null));};
\ No newline at end of file
index 757e9fc..dc71f16 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d1d=['request-promise','path','rimraf','../../config/environment','exports','define','ZohoConfiguration','int_zoho_configurations','../../config/logger','api','moment','bluebird'];(function(_0x4c3e64,_0x3989d5){var _0x3aa0e6=function(_0x54991e){while(--_0x54991e){_0x4c3e64['push'](_0x4c3e64['shift']());}};_0x3aa0e6(++_0x3989d5);}(_0x8d1d,0x164));var _0xd8d1=function(_0x29a1e7,_0x5171cc){_0x29a1e7=_0x29a1e7-0x0;var _0x3c6905=_0x8d1d[_0x29a1e7];return _0x3c6905;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xd8d1('0x0'))(_0xd8d1('0x1'));var moment=require(_0xd8d1('0x2'));var BPromise=require(_0xd8d1('0x3'));var rp=require(_0xd8d1('0x4'));var fs=require('fs');var path=require(_0xd8d1('0x5'));var rimraf=require(_0xd8d1('0x6'));var config=require(_0xd8d1('0x7'));var attributes=require('./intZohoConfiguration.attributes');module[_0xd8d1('0x8')]=function(_0x315106,_0x25a615){return _0x315106[_0xd8d1('0x9')](_0xd8d1('0xa'),attributes,{'tableName':_0xd8d1('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x35ae=['path','rimraf','define','ZohoConfiguration','util','../../config/logger','api','moment','request-promise'];(function(_0x408b6b,_0x5cc7a1){var _0x42a1bc=function(_0x499980){while(--_0x499980){_0x408b6b['push'](_0x408b6b['shift']());}};_0x42a1bc(++_0x5cc7a1);}(_0x35ae,0xe5));var _0xe35a=function(_0x4c0a84,_0x20eae8){_0x4c0a84=_0x4c0a84-0x0;var _0x175445=_0x35ae[_0x4c0a84];return _0x175445;};'use strict';var _=require('lodash');var util=require(_0xe35a('0x0'));var logger=require(_0xe35a('0x1'))(_0xe35a('0x2'));var moment=require(_0xe35a('0x3'));var BPromise=require('bluebird');var rp=require(_0xe35a('0x4'));var fs=require('fs');var path=require(_0xe35a('0x5'));var rimraf=require(_0xe35a('0x6'));var config=require('../../config/environment');var attributes=require('./intZohoConfiguration.attributes');module['exports']=function(_0x2c5609,_0x1d5d3d){return _0x2c5609[_0xe35a('0x7')](_0xe35a('0x8'),attributes,{'tableName':'int_zoho_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 724bdb6..d9d9c70 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x849a=['message','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','http','request','then','info','ZohoConfiguration,\x20%s,\x20%s','debug','ZohoConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code'];(function(_0x4ab1c4,_0x33269f){var _0x120eff=function(_0x1c9130){while(--_0x1c9130){_0x4ab1c4['push'](_0x4ab1c4['shift']());}};_0x120eff(++_0x33269f);}(_0x849a,0x8d));var _0xa849=function(_0x216ea4,_0x10708e){_0x216ea4=_0x216ea4-0x0;var _0xc493a7=_0x849a[_0x216ea4];return _0xc493a7;};'use strict';var _=require(_0xa849('0x0'));var util=require(_0xa849('0x1'));var moment=require('moment');var BPromise=require(_0xa849('0x2'));var rs=require(_0xa849('0x3'));var fs=require('fs');var Redis=require(_0xa849('0x4'));var db=require(_0xa849('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xa849('0x6'))('rpc');var config=require(_0xa849('0x7'));var jayson=require(_0xa849('0x8'));var client=jayson['client'][_0xa849('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5956f4,_0x69c9f6,_0xa301e4){return new BPromise(function(_0x5228de,_0x5c279c){return client[_0xa849('0xa')](_0x5956f4,_0xa301e4)[_0xa849('0xb')](function(_0x7a165e){logger[_0xa849('0xc')](_0xa849('0xd'),_0x69c9f6,'request\x20sent');logger[_0xa849('0xe')](_0xa849('0xf'),_0x69c9f6,_0xa849('0x10'),JSON[_0xa849('0x11')](_0x7a165e));if(_0x7a165e[_0xa849('0x12')]){if(_0x7a165e[_0xa849('0x12')][_0xa849('0x13')]===0x1f4){logger[_0xa849('0x12')](_0xa849('0xd'),_0x69c9f6,_0x7a165e['error']['message']);return _0x5c279c(_0x7a165e[_0xa849('0x12')][_0xa849('0x14')]);}logger[_0xa849('0x12')](_0xa849('0xd'),_0x69c9f6,_0x7a165e[_0xa849('0x12')][_0xa849('0x14')]);return _0x5228de(_0x7a165e[_0xa849('0x12')][_0xa849('0x14')]);}else{logger[_0xa849('0xc')](_0xa849('0xd'),_0x69c9f6,'request\x20sent');_0x5228de(_0x7a165e[_0xa849('0x15')][_0xa849('0x14')]);}})[_0xa849('0x16')](function(_0x224799){logger[_0xa849('0x12')](_0xa849('0xd'),_0x69c9f6,_0x224799);_0x5c279c(_0x224799);});});}
\ No newline at end of file
+var _0xbbb9=['result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','info','ZohoConfiguration,\x20%s,\x20%s','request\x20sent','debug','ZohoConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x369b62,_0x109dde){var _0x503ebb=function(_0x303b63){while(--_0x303b63){_0x369b62['push'](_0x369b62['shift']());}};_0x503ebb(++_0x109dde);}(_0xbbb9,0x182));var _0x9bbb=function(_0x597e39,_0x26f975){_0x597e39=_0x597e39-0x0;var _0x2cfc99=_0xbbb9[_0x597e39];return _0x2cfc99;};'use strict';var _=require('lodash');var util=require(_0x9bbb('0x0'));var moment=require(_0x9bbb('0x1'));var BPromise=require(_0x9bbb('0x2'));var rs=require(_0x9bbb('0x3'));var fs=require('fs');var Redis=require(_0x9bbb('0x4'));var db=require(_0x9bbb('0x5'))['db'];var utils=require(_0x9bbb('0x6'));var logger=require(_0x9bbb('0x7'))(_0x9bbb('0x8'));var config=require('../../config/environment');var jayson=require(_0x9bbb('0x9'));var client=jayson[_0x9bbb('0xa')][_0x9bbb('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4fdfb8,_0x1cb707,_0x2285b4){return new BPromise(function(_0x3cb972,_0x1f4c62){return client[_0x9bbb('0xc')](_0x4fdfb8,_0x2285b4)['then'](function(_0x1e9975){logger[_0x9bbb('0xd')](_0x9bbb('0xe'),_0x1cb707,_0x9bbb('0xf'));logger[_0x9bbb('0x10')](_0x9bbb('0x11'),_0x1cb707,_0x9bbb('0xf'),JSON[_0x9bbb('0x12')](_0x1e9975));if(_0x1e9975[_0x9bbb('0x13')]){if(_0x1e9975['error'][_0x9bbb('0x14')]===0x1f4){logger[_0x9bbb('0x13')]('ZohoConfiguration,\x20%s,\x20%s',_0x1cb707,_0x1e9975[_0x9bbb('0x13')][_0x9bbb('0x15')]);return _0x1f4c62(_0x1e9975[_0x9bbb('0x13')]['message']);}logger[_0x9bbb('0x13')](_0x9bbb('0xe'),_0x1cb707,_0x1e9975['error']['message']);return _0x3cb972(_0x1e9975['error'][_0x9bbb('0x15')]);}else{logger[_0x9bbb('0xd')](_0x9bbb('0xe'),_0x1cb707,_0x9bbb('0xf'));_0x3cb972(_0x1e9975[_0x9bbb('0x16')][_0x9bbb('0x15')]);}})[_0x9bbb('0x17')](function(_0x39f70b){logger[_0x9bbb('0x13')](_0x9bbb('0xe'),_0x1cb707,_0x39f70b);_0x1f4c62(_0x39f70b);});});}
\ No newline at end of file
index 0692fe3..0916baa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7dda=['/:id','show','create','put','multer','util','connect-timeout','express','../../components/auth/service','../../config/environment','./intZohoField.controller','get','isAuthenticated','index'];(function(_0x106541,_0x372f73){var _0x175a49=function(_0x1add5c){while(--_0x1add5c){_0x106541['push'](_0x106541['shift']());}};_0x175a49(++_0x372f73);}(_0x7dda,0x66));var _0xa7dd=function(_0x998d64,_0x484196){_0x998d64=_0x998d64-0x0;var _0x58cc3a=_0x7dda[_0x998d64];return _0x58cc3a;};'use strict';var multer=require(_0xa7dd('0x0'));var util=require(_0xa7dd('0x1'));var path=require('path');var timeout=require(_0xa7dd('0x2'));var express=require(_0xa7dd('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xa7dd('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xa7dd('0x5'));var controller=require(_0xa7dd('0x6'));router[_0xa7dd('0x7')]('/',auth[_0xa7dd('0x8')](),controller[_0xa7dd('0x9')]);router[_0xa7dd('0x7')](_0xa7dd('0xa'),auth['isAuthenticated'](),controller[_0xa7dd('0xb')]);router['post']('/',auth[_0xa7dd('0x8')](),controller[_0xa7dd('0xc')]);router[_0xa7dd('0xd')](_0xa7dd('0xa'),auth[_0xa7dd('0x8')](),controller['update']);router['delete'](_0xa7dd('0xa'),auth[_0xa7dd('0x8')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xdf1f=['connect-timeout','express','Router','../../components/auth/service','../../config/environment','./intZohoField.controller','get','isAuthenticated','index','show','post','create','/:id','update','delete','destroy','multer'];(function(_0x25b125,_0x20596f){var _0x5af4fe=function(_0x25ab06){while(--_0x25ab06){_0x25b125['push'](_0x25b125['shift']());}};_0x5af4fe(++_0x20596f);}(_0xdf1f,0x1ec));var _0xfdf1=function(_0x598aaf,_0xb2b2c1){_0x598aaf=_0x598aaf-0x0;var _0x592139=_0xdf1f[_0x598aaf];return _0x592139;};'use strict';var multer=require(_0xfdf1('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xfdf1('0x1'));var express=require(_0xfdf1('0x2'));var router=express[_0xfdf1('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xfdf1('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xfdf1('0x5'));var controller=require(_0xfdf1('0x6'));router[_0xfdf1('0x7')]('/',auth[_0xfdf1('0x8')](),controller[_0xfdf1('0x9')]);router[_0xfdf1('0x7')]('/:id',auth['isAuthenticated'](),controller[_0xfdf1('0xa')]);router[_0xfdf1('0xb')]('/',auth[_0xfdf1('0x8')](),controller[_0xfdf1('0xc')]);router['put'](_0xfdf1('0xd'),auth['isAuthenticated'](),controller[_0xfdf1('0xe')]);router[_0xfdf1('0xf')](_0xfdf1('0xd'),auth[_0xfdf1('0x8')](),controller[_0xfdf1('0x10')]);module['exports']=router;
\ No newline at end of file
index 798dbf1..7dec208 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xecfd=['picklist','STRING','customVariable','BOOLEAN','exports','ENUM','string','variable'];(function(_0x48043a,_0x2b99c1){var _0x7d92d2=function(_0xe18174){while(--_0xe18174){_0x48043a['push'](_0x48043a['shift']());}};_0x7d92d2(++_0x2b99c1);}(_0xecfd,0xe4));var _0xdecf=function(_0x38fbf2,_0x2d12d3){_0x38fbf2=_0x38fbf2-0x0;var _0x1f7321=_0xecfd[_0x38fbf2];return _0x1f7321;};'use strict';var Sequelize=require('sequelize');module[_0xdecf('0x0')]={'type':{'type':Sequelize[_0xdecf('0x1')](_0xdecf('0x2'),_0xdecf('0x3'),'customVariable','keyValue',_0xdecf('0x4')),'defaultValue':_0xdecf('0x2')},'content':{'type':Sequelize[_0xdecf('0x5')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0xdecf('0x1')](_0xdecf('0x2'),_0xdecf('0x3'),_0xdecf('0x6'))},'keyContent':{'type':Sequelize[_0xdecf('0x5')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0xdecf('0x5')]},'customField':{'type':Sequelize[_0xdecf('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xdecf('0x5')]}};
\ No newline at end of file
+var _0x022f=['variable','customVariable','STRING','BOOLEAN','ENUM','string'];(function(_0x3b22e9,_0x354406){var _0x230314=function(_0x29ae96){while(--_0x29ae96){_0x3b22e9['push'](_0x3b22e9['shift']());}};_0x230314(++_0x354406);}(_0x022f,0xdc));var _0xf022=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x022f[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require('sequelize');module['exports']={'type':{'type':Sequelize[_0xf022('0x0')](_0xf022('0x1'),_0xf022('0x2'),_0xf022('0x3'),'keyValue','picklist'),'defaultValue':_0xf022('0x1')},'content':{'type':Sequelize[_0xf022('0x4')]},'key':{'type':Sequelize[_0xf022('0x4')]},'keyType':{'type':Sequelize[_0xf022('0x0')](_0xf022('0x1'),'variable',_0xf022('0x3'))},'keyContent':{'type':Sequelize[_0xf022('0x4')]},'idField':{'type':Sequelize[_0xf022('0x4')]},'nameField':{'type':Sequelize[_0xf022('0x4')]},'customField':{'type':Sequelize[_0xf022('0x5')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xf022('0x4')]}};
\ No newline at end of file
index 4906a6e..fa8b660 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x82db=['../../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','ZohoField','rawAttributes','fieldName','type','key','query','filters','intersection','attributes','model','fields','length','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','keys','create','body','find','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch'];(function(_0x212a37,_0xf35b2e){var _0x5d0bf9=function(_0x51850f){while(--_0x51850f){_0x212a37['push'](_0x212a37['shift']());}};_0x5d0bf9(++_0xf35b2e);}(_0x82db,0x128));var _0xb82d=function(_0x38fd74,_0x553301){_0x38fd74=_0x38fd74-0x0;var _0xd874=_0x82db[_0x38fd74];return _0xd874;};'use strict';var emlformat=require(_0xb82d('0x0'));var rimraf=require(_0xb82d('0x1'));var zipdir=require(_0xb82d('0x2'));var jsonpatch=require(_0xb82d('0x3'));var rp=require(_0xb82d('0x4'));var moment=require(_0xb82d('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xb82d('0x6'));var util=require('util');var path=require('path');var sox=require(_0xb82d('0x7'));var csv=require(_0xb82d('0x8'));var ejs=require(_0xb82d('0x9'));var fs=require('fs');var fs_extra=require(_0xb82d('0xa'));var _=require(_0xb82d('0xb'));var squel=require(_0xb82d('0xc'));var crypto=require(_0xb82d('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xb82d('0xe'));var toCsv=require(_0xb82d('0x8'));var querystring=require(_0xb82d('0xf'));var Papa=require(_0xb82d('0x10'));var Redis=require('ioredis');var authService=require(_0xb82d('0x11'));var qs=require(_0xb82d('0x12'));var as=require(_0xb82d('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xb82d('0x14'))(_0xb82d('0x15'));var utils=require(_0xb82d('0x16'));var config=require(_0xb82d('0x17'));var licenseUtil=require(_0xb82d('0x18'));var db=require(_0xb82d('0x19'))['db'];function respondWithStatusCode(_0x472d7b,_0xbdf888){_0xbdf888=_0xbdf888||0xcc;return function(_0x54a4ab){if(_0x54a4ab){return _0x472d7b[_0xb82d('0x1a')](_0xbdf888);}return _0x472d7b[_0xb82d('0x1b')](_0xbdf888)[_0xb82d('0x1c')]();};}function respondWithResult(_0x552d07,_0x473546){_0x473546=_0x473546||0xc8;return function(_0x5bc25c){if(_0x5bc25c){return _0x552d07['status'](_0x473546)[_0xb82d('0x1d')](_0x5bc25c);}};}function respondWithFilteredResult(_0x19d890,_0x59d175){return function(_0x41fd39){if(_0x41fd39){var _0x41555d=typeof _0x59d175[_0xb82d('0x1e')]===_0xb82d('0x1f')&&typeof _0x59d175[_0xb82d('0x20')]==='undefined';var _0x4788fb=_0x41fd39[_0xb82d('0x21')];var _0xbb3dae=_0x41555d?0x0:_0x59d175['offset'];var _0x3b423e=_0x41555d?_0x41fd39[_0xb82d('0x21')]:_0x59d175[_0xb82d('0x1e')]+_0x59d175['limit'];var _0x19629c;if(_0x3b423e>=_0x4788fb){_0x3b423e=_0x4788fb;_0x19629c=0xc8;}else{_0x19629c=0xce;}_0x19d890[_0xb82d('0x1b')](_0x19629c);return _0x19d890[_0xb82d('0x22')](_0xb82d('0x23'),_0xbb3dae+'-'+_0x3b423e+'/'+_0x4788fb)[_0xb82d('0x1d')](_0x41fd39);}return null;};}function patchUpdates(_0x1578f8){return function(_0x2f642a){try{jsonpatch[_0xb82d('0x24')](_0x2f642a,_0x1578f8,!![]);}catch(_0x29b028){return BPromise[_0xb82d('0x25')](_0x29b028);}return _0x2f642a[_0xb82d('0x26')]();};}function saveUpdates(_0x2bcea8,_0x35b81c){return function(_0x2826a6){if(_0x2826a6){return _0x2826a6[_0xb82d('0x27')](_0x2bcea8)[_0xb82d('0x28')](function(_0x18031b){return _0x18031b;});}return null;};}function removeEntity(_0x55eff7,_0x9fdb3d){return function(_0x2b3130){if(_0x2b3130){return _0x2b3130[_0xb82d('0x29')]()[_0xb82d('0x28')](function(){_0x55eff7[_0xb82d('0x1b')](0xcc)[_0xb82d('0x1c')]();});}};}function handleEntityNotFound(_0x5cc75c,_0xe70e22){return function(_0x2d8705){if(!_0x2d8705){_0x5cc75c[_0xb82d('0x1a')](0x194);}return _0x2d8705;};}function handleError(_0x5da3af,_0x393f99){_0x393f99=_0x393f99||0x1f4;return function(_0x34e131){logger['error'](_0x34e131[_0xb82d('0x2a')]);if(_0x34e131[_0xb82d('0x2b')]){delete _0x34e131[_0xb82d('0x2b')];}_0x5da3af[_0xb82d('0x1b')](_0x393f99)[_0xb82d('0x2c')](_0x34e131);};}exports[_0xb82d('0x2d')]=function(_0x5f742c,_0x43d927){var _0x56b9c0={},_0x99d587={},_0x326af1={'count':0x0,'rows':[]};var _0x510c26=_[_0xb82d('0x2e')](db[_0xb82d('0x2f')][_0xb82d('0x30')],function(_0x22214e){return{'name':_0x22214e[_0xb82d('0x31')],'type':_0x22214e[_0xb82d('0x32')][_0xb82d('0x33')]};});_0x99d587['model']=_[_0xb82d('0x2e')](_0x510c26,_0xb82d('0x2b'));_0x99d587[_0xb82d('0x34')]=_['keys'](_0x5f742c[_0xb82d('0x34')]);_0x99d587[_0xb82d('0x35')]=_[_0xb82d('0x36')](_0x99d587['model'],_0x99d587[_0xb82d('0x34')]);_0x56b9c0[_0xb82d('0x37')]=_['intersection'](_0x99d587[_0xb82d('0x38')],qs[_0xb82d('0x39')](_0x5f742c[_0xb82d('0x34')][_0xb82d('0x39')]));_0x56b9c0[_0xb82d('0x37')]=_0x56b9c0[_0xb82d('0x37')][_0xb82d('0x3a')]?_0x56b9c0[_0xb82d('0x37')]:_0x99d587[_0xb82d('0x38')];if(!_0x5f742c[_0xb82d('0x34')]['hasOwnProperty'](_0xb82d('0x3b'))){_0x56b9c0[_0xb82d('0x20')]=qs['limit'](_0x5f742c[_0xb82d('0x34')][_0xb82d('0x20')]);_0x56b9c0['offset']=qs[_0xb82d('0x1e')](_0x5f742c[_0xb82d('0x34')][_0xb82d('0x1e')]);}_0x56b9c0[_0xb82d('0x3c')]=qs[_0xb82d('0x3d')](_0x5f742c[_0xb82d('0x34')][_0xb82d('0x3d')]);_0x56b9c0['where']=qs['filters'](_[_0xb82d('0x3e')](_0x5f742c[_0xb82d('0x34')],_0x99d587[_0xb82d('0x35')]),_0x510c26);if(_0x5f742c['query'][_0xb82d('0x3f')]){_0x56b9c0[_0xb82d('0x40')]=_[_0xb82d('0x41')](_0x56b9c0[_0xb82d('0x40')],{'$or':_['map'](_0x510c26,function(_0x39fba3){if(_0x39fba3[_0xb82d('0x32')]!==_0xb82d('0x42')){var _0xcfe24={};_0xcfe24[_0x39fba3['name']]={'$like':'%'+_0x5f742c[_0xb82d('0x34')][_0xb82d('0x3f')]+'%'};return _0xcfe24;}})});}_0x56b9c0=_[_0xb82d('0x41')]({},_0x56b9c0,_0x5f742c[_0xb82d('0x43')]);var _0x8efbd0={'where':_0x56b9c0[_0xb82d('0x40')]};return db[_0xb82d('0x2f')][_0xb82d('0x21')](_0x8efbd0)['then'](function(_0x3d4692){_0x326af1[_0xb82d('0x21')]=_0x3d4692;if(_0x5f742c['query'][_0xb82d('0x44')]){_0x56b9c0[_0xb82d('0x45')]=[{'all':!![]}];}return db[_0xb82d('0x2f')][_0xb82d('0x46')](_0x56b9c0);})[_0xb82d('0x28')](function(_0x569611){_0x326af1[_0xb82d('0x47')]=_0x569611;return _0x326af1;})[_0xb82d('0x28')](respondWithFilteredResult(_0x43d927,_0x56b9c0))[_0xb82d('0x48')](handleError(_0x43d927,null));};exports[_0xb82d('0x49')]=function(_0x4d616c,_0x2f59d2){var _0x58727a={'raw':!![],'where':{'id':_0x4d616c[_0xb82d('0x4a')]['id']}},_0x14360d={};_0x14360d[_0xb82d('0x38')]=_['keys'](db[_0xb82d('0x2f')][_0xb82d('0x30')]);_0x14360d[_0xb82d('0x34')]=_[_0xb82d('0x4b')](_0x4d616c[_0xb82d('0x34')]);_0x14360d[_0xb82d('0x35')]=_[_0xb82d('0x36')](_0x14360d[_0xb82d('0x38')],_0x14360d[_0xb82d('0x34')]);_0x58727a['attributes']=_[_0xb82d('0x36')](_0x14360d['model'],qs[_0xb82d('0x39')](_0x4d616c[_0xb82d('0x34')]['fields']));_0x58727a[_0xb82d('0x37')]=_0x58727a['attributes'][_0xb82d('0x3a')]?_0x58727a['attributes']:_0x14360d[_0xb82d('0x38')];if(_0x4d616c['query']['includeAll']){_0x58727a['include']=[{'all':!![]}];}_0x58727a=_[_0xb82d('0x41')]({},_0x58727a,_0x4d616c[_0xb82d('0x43')]);return db[_0xb82d('0x2f')]['find'](_0x58727a)['then'](handleEntityNotFound(_0x2f59d2,null))[_0xb82d('0x28')](respondWithResult(_0x2f59d2,null))[_0xb82d('0x48')](handleError(_0x2f59d2,null));};exports[_0xb82d('0x4c')]=function(_0x510787,_0x3a7380){return db[_0xb82d('0x2f')][_0xb82d('0x4c')](_0x510787[_0xb82d('0x4d')],{})[_0xb82d('0x28')](respondWithResult(_0x3a7380,0xc9))[_0xb82d('0x48')](handleError(_0x3a7380,null));};exports[_0xb82d('0x27')]=function(_0x37bb8e,_0x2d4514){if(_0x37bb8e[_0xb82d('0x4d')]['id']){delete _0x37bb8e[_0xb82d('0x4d')]['id'];}return db['ZohoField'][_0xb82d('0x4e')]({'where':{'id':_0x37bb8e['params']['id']}})[_0xb82d('0x28')](handleEntityNotFound(_0x2d4514,null))[_0xb82d('0x28')](saveUpdates(_0x37bb8e[_0xb82d('0x4d')],null))[_0xb82d('0x28')](respondWithResult(_0x2d4514,null))[_0xb82d('0x48')](handleError(_0x2d4514,null));};exports['destroy']=function(_0x44cb3b,_0x3e5ef8){return db[_0xb82d('0x2f')][_0xb82d('0x4e')]({'where':{'id':_0x44cb3b[_0xb82d('0x4a')]['id']}})['then'](handleEntityNotFound(_0x3e5ef8,null))[_0xb82d('0x28')](removeEntity(_0x3e5ef8,null))[_0xb82d('0x48')](handleError(_0x3e5ef8,null));};
\ No newline at end of file
+var _0x4844=['rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','merge','filter','options','ZohoField','includeAll','include','rows','catch','show','params','find','create','body','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','util','path','sox','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','limit','undefined','count','Content-Range','apply','reject','save','update','destroy','then','stack','name','send','index','map'];(function(_0x3cb8a,_0x55c468){var _0x106b09=function(_0x471a55){while(--_0x471a55){_0x3cb8a['push'](_0x3cb8a['shift']());}};_0x106b09(++_0x55c468);}(_0x4844,0x6c));var _0x4484=function(_0x245ace,_0x11951f){_0x245ace=_0x245ace-0x0;var _0x396156=_0x4844[_0x245ace];return _0x396156;};'use strict';var emlformat=require(_0x4484('0x0'));var rimraf=require(_0x4484('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x4484('0x2'));var rp=require('request-promise');var moment=require(_0x4484('0x3'));var BPromise=require(_0x4484('0x4'));var Mustache=require(_0x4484('0x5'));var util=require(_0x4484('0x6'));var path=require(_0x4484('0x7'));var sox=require(_0x4484('0x8'));var csv=require('to-csv');var ejs=require(_0x4484('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x4484('0xa'));var squel=require(_0x4484('0xb'));var crypto=require(_0x4484('0xc'));var jsforce=require(_0x4484('0xd'));var deskjs=require(_0x4484('0xe'));var toCsv=require(_0x4484('0xf'));var querystring=require(_0x4484('0x10'));var Papa=require(_0x4484('0x11'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x4484('0x12'));var as=require(_0x4484('0x13'));var hardwareService=require(_0x4484('0x14'));var logger=require(_0x4484('0x15'))(_0x4484('0x16'));var utils=require(_0x4484('0x17'));var config=require(_0x4484('0x18'));var licenseUtil=require(_0x4484('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x51d2a9,_0xfe0db1){_0xfe0db1=_0xfe0db1||0xcc;return function(_0x198602){if(_0x198602){return _0x51d2a9[_0x4484('0x1a')](_0xfe0db1);}return _0x51d2a9[_0x4484('0x1b')](_0xfe0db1)[_0x4484('0x1c')]();};}function respondWithResult(_0x3ce727,_0x1db98f){_0x1db98f=_0x1db98f||0xc8;return function(_0x1bea8f){if(_0x1bea8f){return _0x3ce727[_0x4484('0x1b')](_0x1db98f)[_0x4484('0x1d')](_0x1bea8f);}};}function respondWithFilteredResult(_0x457ee4,_0x275a02){return function(_0x36041d){if(_0x36041d){var _0x435958=typeof _0x275a02[_0x4484('0x1e')]==='undefined'&&typeof _0x275a02[_0x4484('0x1f')]===_0x4484('0x20');var _0x36dc08=_0x36041d['count'];var _0x5f5dc0=_0x435958?0x0:_0x275a02[_0x4484('0x1e')];var _0x3516d3=_0x435958?_0x36041d[_0x4484('0x21')]:_0x275a02[_0x4484('0x1e')]+_0x275a02[_0x4484('0x1f')];var _0x5acc3f;if(_0x3516d3>=_0x36dc08){_0x3516d3=_0x36dc08;_0x5acc3f=0xc8;}else{_0x5acc3f=0xce;}_0x457ee4[_0x4484('0x1b')](_0x5acc3f);return _0x457ee4['set'](_0x4484('0x22'),_0x5f5dc0+'-'+_0x3516d3+'/'+_0x36dc08)[_0x4484('0x1d')](_0x36041d);}return null;};}function patchUpdates(_0x2e8199){return function(_0x13ff88){try{jsonpatch[_0x4484('0x23')](_0x13ff88,_0x2e8199,!![]);}catch(_0x1be7b7){return BPromise[_0x4484('0x24')](_0x1be7b7);}return _0x13ff88[_0x4484('0x25')]();};}function saveUpdates(_0x585ee9,_0x21c0c1){return function(_0x51e6eb){if(_0x51e6eb){return _0x51e6eb[_0x4484('0x26')](_0x585ee9)['then'](function(_0x10dd1a){return _0x10dd1a;});}return null;};}function removeEntity(_0x223043,_0x48b9f2){return function(_0x399125){if(_0x399125){return _0x399125[_0x4484('0x27')]()[_0x4484('0x28')](function(){_0x223043[_0x4484('0x1b')](0xcc)[_0x4484('0x1c')]();});}};}function handleEntityNotFound(_0x2add5e,_0x5c35ea){return function(_0x2cf998){if(!_0x2cf998){_0x2add5e['sendStatus'](0x194);}return _0x2cf998;};}function handleError(_0x526f5a,_0x436182){_0x436182=_0x436182||0x1f4;return function(_0x1e204a){logger['error'](_0x1e204a[_0x4484('0x29')]);if(_0x1e204a[_0x4484('0x2a')]){delete _0x1e204a[_0x4484('0x2a')];}_0x526f5a['status'](_0x436182)[_0x4484('0x2b')](_0x1e204a);};}exports[_0x4484('0x2c')]=function(_0x436705,_0x2ec5b4){var _0x18d11a={},_0x38fbf2={},_0x5bc7a9={'count':0x0,'rows':[]};var _0x5bc73f=_[_0x4484('0x2d')](db['ZohoField'][_0x4484('0x2e')],function(_0x44a301){return{'name':_0x44a301[_0x4484('0x2f')],'type':_0x44a301[_0x4484('0x30')][_0x4484('0x31')]};});_0x38fbf2[_0x4484('0x32')]=_[_0x4484('0x2d')](_0x5bc73f,_0x4484('0x2a'));_0x38fbf2[_0x4484('0x33')]=_[_0x4484('0x34')](_0x436705['query']);_0x38fbf2['filters']=_[_0x4484('0x35')](_0x38fbf2[_0x4484('0x32')],_0x38fbf2['query']);_0x18d11a[_0x4484('0x36')]=_['intersection'](_0x38fbf2[_0x4484('0x32')],qs[_0x4484('0x37')](_0x436705[_0x4484('0x33')][_0x4484('0x37')]));_0x18d11a[_0x4484('0x36')]=_0x18d11a[_0x4484('0x36')][_0x4484('0x38')]?_0x18d11a['attributes']:_0x38fbf2[_0x4484('0x32')];if(!_0x436705[_0x4484('0x33')][_0x4484('0x39')](_0x4484('0x3a'))){_0x18d11a[_0x4484('0x1f')]=qs['limit'](_0x436705[_0x4484('0x33')][_0x4484('0x1f')]);_0x18d11a[_0x4484('0x1e')]=qs[_0x4484('0x1e')](_0x436705['query'][_0x4484('0x1e')]);}_0x18d11a[_0x4484('0x3b')]=qs['sort'](_0x436705[_0x4484('0x33')][_0x4484('0x3c')]);_0x18d11a[_0x4484('0x3d')]=qs[_0x4484('0x3e')](_[_0x4484('0x3f')](_0x436705[_0x4484('0x33')],_0x38fbf2[_0x4484('0x3e')]),_0x5bc73f);if(_0x436705[_0x4484('0x33')]['filter']){_0x18d11a[_0x4484('0x3d')]=_[_0x4484('0x40')](_0x18d11a[_0x4484('0x3d')],{'$or':_[_0x4484('0x2d')](_0x5bc73f,function(_0x33dcef){if(_0x33dcef[_0x4484('0x30')]!=='VIRTUAL'){var _0x2f3629={};_0x2f3629[_0x33dcef['name']]={'$like':'%'+_0x436705[_0x4484('0x33')][_0x4484('0x41')]+'%'};return _0x2f3629;}})});}_0x18d11a=_[_0x4484('0x40')]({},_0x18d11a,_0x436705[_0x4484('0x42')]);var _0x21b661={'where':_0x18d11a[_0x4484('0x3d')]};return db[_0x4484('0x43')][_0x4484('0x21')](_0x21b661)[_0x4484('0x28')](function(_0x213f14){_0x5bc7a9[_0x4484('0x21')]=_0x213f14;if(_0x436705['query'][_0x4484('0x44')]){_0x18d11a[_0x4484('0x45')]=[{'all':!![]}];}return db[_0x4484('0x43')]['findAll'](_0x18d11a);})['then'](function(_0x1e7ce5){_0x5bc7a9[_0x4484('0x46')]=_0x1e7ce5;return _0x5bc7a9;})['then'](respondWithFilteredResult(_0x2ec5b4,_0x18d11a))[_0x4484('0x47')](handleError(_0x2ec5b4,null));};exports[_0x4484('0x48')]=function(_0x3bd380,_0xe4016e){var _0x377f67={'raw':!![],'where':{'id':_0x3bd380[_0x4484('0x49')]['id']}},_0x249ea8={};_0x249ea8[_0x4484('0x32')]=_[_0x4484('0x34')](db[_0x4484('0x43')][_0x4484('0x2e')]);_0x249ea8['query']=_['keys'](_0x3bd380[_0x4484('0x33')]);_0x249ea8[_0x4484('0x3e')]=_[_0x4484('0x35')](_0x249ea8[_0x4484('0x32')],_0x249ea8[_0x4484('0x33')]);_0x377f67[_0x4484('0x36')]=_[_0x4484('0x35')](_0x249ea8[_0x4484('0x32')],qs[_0x4484('0x37')](_0x3bd380[_0x4484('0x33')][_0x4484('0x37')]));_0x377f67[_0x4484('0x36')]=_0x377f67['attributes'][_0x4484('0x38')]?_0x377f67[_0x4484('0x36')]:_0x249ea8[_0x4484('0x32')];if(_0x3bd380[_0x4484('0x33')][_0x4484('0x44')]){_0x377f67['include']=[{'all':!![]}];}_0x377f67=_[_0x4484('0x40')]({},_0x377f67,_0x3bd380[_0x4484('0x42')]);return db[_0x4484('0x43')][_0x4484('0x4a')](_0x377f67)[_0x4484('0x28')](handleEntityNotFound(_0xe4016e,null))[_0x4484('0x28')](respondWithResult(_0xe4016e,null))[_0x4484('0x47')](handleError(_0xe4016e,null));};exports[_0x4484('0x4b')]=function(_0x465fc4,_0x1902a5){return db['ZohoField'][_0x4484('0x4b')](_0x465fc4[_0x4484('0x4c')],{})[_0x4484('0x28')](respondWithResult(_0x1902a5,0xc9))['catch'](handleError(_0x1902a5,null));};exports['update']=function(_0x14c1c1,_0x127aca){if(_0x14c1c1['body']['id']){delete _0x14c1c1[_0x4484('0x4c')]['id'];}return db['ZohoField'][_0x4484('0x4a')]({'where':{'id':_0x14c1c1[_0x4484('0x49')]['id']}})[_0x4484('0x28')](handleEntityNotFound(_0x127aca,null))['then'](saveUpdates(_0x14c1c1['body'],null))['then'](respondWithResult(_0x127aca,null))[_0x4484('0x47')](handleError(_0x127aca,null));};exports[_0x4484('0x27')]=function(_0x56fb47,_0x79f358){return db[_0x4484('0x43')]['find']({'where':{'id':_0x56fb47[_0x4484('0x49')]['id']}})[_0x4484('0x28')](handleEntityNotFound(_0x79f358,null))['then'](removeEntity(_0x79f358,null))['catch'](handleError(_0x79f358,null));};
\ No newline at end of file
index dc11f44..277bdaa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x958a=['moment','bluebird','request-promise','path','../../config/environment','exports','define','ZohoField','int_zoho_fields','zoho_unique_index','lodash','util','api'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x958a,0x128));var _0xa958=function(_0x377a07,_0x5bd351){_0x377a07=_0x377a07-0x0;var _0x39aefd=_0x958a[_0x377a07];return _0x39aefd;};'use strict';var _=require(_0xa958('0x0'));var util=require(_0xa958('0x1'));var logger=require('../../config/logger')(_0xa958('0x2'));var moment=require(_0xa958('0x3'));var BPromise=require(_0xa958('0x4'));var rp=require(_0xa958('0x5'));var fs=require('fs');var path=require(_0xa958('0x6'));var rimraf=require('rimraf');var config=require(_0xa958('0x7'));var attributes=require('./intZohoField.attributes');module[_0xa958('0x8')]=function(_0x9b7d9e,_0x2692d6){return _0x9b7d9e[_0xa958('0x9')](_0xa958('0xa'),attributes,{'tableName':_0xa958('0xb'),'paranoid':![],'indexes':[{'name':_0xa958('0xc'),'fields':['idField','FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x5464=['util','../../config/logger','moment','request-promise','rimraf','../../config/environment','./intZohoField.attributes','exports','ZohoField','int_zoho_fields','zoho_unique_index','idField','FieldId','lodash'];(function(_0x63b976,_0x352fff){var _0x4314a5=function(_0x7d4aaf){while(--_0x7d4aaf){_0x63b976['push'](_0x63b976['shift']());}};_0x4314a5(++_0x352fff);}(_0x5464,0x15d));var _0x4546=function(_0x4526d0,_0x4a0a91){_0x4526d0=_0x4526d0-0x0;var _0x1a4067=_0x5464[_0x4526d0];return _0x1a4067;};'use strict';var _=require(_0x4546('0x0'));var util=require(_0x4546('0x1'));var logger=require(_0x4546('0x2'))('api');var moment=require(_0x4546('0x3'));var BPromise=require('bluebird');var rp=require(_0x4546('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x4546('0x5'));var config=require(_0x4546('0x6'));var attributes=require(_0x4546('0x7'));module[_0x4546('0x8')]=function(_0x54228a,_0x57391f){return _0x54228a['define'](_0x4546('0x9'),attributes,{'tableName':_0x4546('0xa'),'paranoid':![],'indexes':[{'name':_0x4546('0xb'),'fields':[_0x4546('0xc'),_0x4546('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index e020a85..28c0c20 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a1b=['catch','util','moment','randomstring','ioredis','../../config/logger','rpc','../../config/environment','http','request','then','info','ZohoField,\x20%s,\x20%s','request\x20sent','debug','ZohoField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result'];(function(_0x4db792,_0xb36ada){var _0x316a31=function(_0x289187){while(--_0x289187){_0x4db792['push'](_0x4db792['shift']());}};_0x316a31(++_0xb36ada);}(_0x5a1b,0x112));var _0xb5a1=function(_0x5195fb,_0x20afce){_0x5195fb=_0x5195fb-0x0;var _0x30aaaa=_0x5a1b[_0x5195fb];return _0x30aaaa;};'use strict';var _=require('lodash');var util=require(_0xb5a1('0x0'));var moment=require(_0xb5a1('0x1'));var BPromise=require('bluebird');var rs=require(_0xb5a1('0x2'));var fs=require('fs');var Redis=require(_0xb5a1('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xb5a1('0x4'))(_0xb5a1('0x5'));var config=require(_0xb5a1('0x6'));var jayson=require('jayson/promise');var client=jayson['client'][_0xb5a1('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x5ea827,_0x6c4a5f,_0x4eb23e){return new BPromise(function(_0x20f973,_0x470f13){return client[_0xb5a1('0x8')](_0x5ea827,_0x4eb23e)[_0xb5a1('0x9')](function(_0x3385b4){logger[_0xb5a1('0xa')](_0xb5a1('0xb'),_0x6c4a5f,_0xb5a1('0xc'));logger[_0xb5a1('0xd')](_0xb5a1('0xe'),_0x6c4a5f,_0xb5a1('0xc'),JSON[_0xb5a1('0xf')](_0x3385b4));if(_0x3385b4[_0xb5a1('0x10')]){if(_0x3385b4[_0xb5a1('0x10')][_0xb5a1('0x11')]===0x1f4){logger['error'](_0xb5a1('0xb'),_0x6c4a5f,_0x3385b4[_0xb5a1('0x10')][_0xb5a1('0x12')]);return _0x470f13(_0x3385b4[_0xb5a1('0x10')][_0xb5a1('0x12')]);}logger[_0xb5a1('0x10')](_0xb5a1('0xb'),_0x6c4a5f,_0x3385b4['error'][_0xb5a1('0x12')]);return _0x20f973(_0x3385b4['error']['message']);}else{logger[_0xb5a1('0xa')]('ZohoField,\x20%s,\x20%s',_0x6c4a5f,_0xb5a1('0xc'));_0x20f973(_0x3385b4[_0xb5a1('0x13')][_0xb5a1('0x12')]);}})[_0xb5a1('0x14')](function(_0x5765ed){logger['error'](_0xb5a1('0xb'),_0x6c4a5f,_0x5765ed);_0x470f13(_0x5765ed);});});}
\ No newline at end of file
+var _0xf020=['../../config/environment','jayson/promise','client','http','then','info','ZohoField,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','util','bluebird','randomstring','ioredis','../../config/utils','rpc'];(function(_0x5f124a,_0x34e5d2){var _0x3717c1=function(_0x16e713){while(--_0x16e713){_0x5f124a['push'](_0x5f124a['shift']());}};_0x3717c1(++_0x34e5d2);}(_0xf020,0x1d5));var _0x0f02=function(_0x542240,_0x5b2a2b){_0x542240=_0x542240-0x0;var _0x51b51c=_0xf020[_0x542240];return _0x51b51c;};'use strict';var _=require('lodash');var util=require(_0x0f02('0x0'));var moment=require('moment');var BPromise=require(_0x0f02('0x1'));var rs=require(_0x0f02('0x2'));var fs=require('fs');var Redis=require(_0x0f02('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0f02('0x4'));var logger=require('../../config/logger')(_0x0f02('0x5'));var config=require(_0x0f02('0x6'));var jayson=require(_0x0f02('0x7'));var client=jayson[_0x0f02('0x8')][_0x0f02('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x439fda,_0x5318be,_0x3fe6b0){return new BPromise(function(_0x14665f,_0xd7fa2a){return client['request'](_0x439fda,_0x3fe6b0)[_0x0f02('0xa')](function(_0x598542){logger[_0x0f02('0xb')](_0x0f02('0xc'),_0x5318be,_0x0f02('0xd'));logger[_0x0f02('0xe')]('ZohoField,\x20%s,\x20%s,\x20%s',_0x5318be,_0x0f02('0xd'),JSON[_0x0f02('0xf')](_0x598542));if(_0x598542[_0x0f02('0x10')]){if(_0x598542[_0x0f02('0x10')][_0x0f02('0x11')]===0x1f4){logger['error']('ZohoField,\x20%s,\x20%s',_0x5318be,_0x598542[_0x0f02('0x10')][_0x0f02('0x12')]);return _0xd7fa2a(_0x598542['error'][_0x0f02('0x12')]);}logger[_0x0f02('0x10')](_0x0f02('0xc'),_0x5318be,_0x598542[_0x0f02('0x10')][_0x0f02('0x12')]);return _0x14665f(_0x598542[_0x0f02('0x10')][_0x0f02('0x12')]);}else{logger[_0x0f02('0xb')](_0x0f02('0xc'),_0x5318be,_0x0f02('0xd'));_0x14665f(_0x598542['result']['message']);}})['catch'](function(_0xe68bb1){logger[_0x0f02('0x10')](_0x0f02('0xc'),_0x5318be,_0xe68bb1);_0xd7fa2a(_0xe68bb1);});});}
\ No newline at end of file
index 0645b25..d7cbabd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','multer','util'];(function(_0x1abbaa,_0x1b7a38){var _0x40ed52=function(_0x44858f){while(--_0x44858f){_0x1abbaa['push'](_0x1abbaa['shift']());}};_0x40ed52(++_0x1b7a38);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));module['exports']=router;
\ No newline at end of file
+var _0xd8b0=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','multer','util'];(function(_0x39cff5,_0x234f0c){var _0x430437=function(_0xb2375){while(--_0xb2375){_0x39cff5['push'](_0x39cff5['shift']());}};_0x430437(++_0x234f0c);}(_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 6707db0..a6ddb4b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x82fa=['app.js','INTEGER','BOOLEAN','state','sequelize','exports','STRING','unique_name_and_version'];(function(_0x4a6a60,_0xa39ceb){var _0x3a5119=function(_0x198804){while(--_0x198804){_0x4a6a60['push'](_0x4a6a60['shift']());}};_0x3a5119(++_0xa39ceb);}(_0x82fa,0x1cc));var _0xa82f=function(_0x1cee3,_0x9f53af){_0x1cee3=_0x1cee3-0x0;var _0x2198ef=_0x82fa[_0x1cee3];return _0x2198ef;};'use strict';var Sequelize=require(_0xa82f('0x0'));module[_0xa82f('0x1')]={'name':{'type':Sequelize[_0xa82f('0x2')],'allowNull':![],'unique':_0xa82f('0x3')},'version':{'type':Sequelize['STRING'],'allowNull':![],'unique':'unique_name_and_version'},'main':{'type':Sequelize['STRING'],'defaultValue':_0xa82f('0x4')},'filename':{'type':Sequelize[_0xa82f('0x2')]},'path':{'type':Sequelize[_0xa82f('0x2')]},'type':{'type':Sequelize[_0xa82f('0x2')]},'size':{'type':Sequelize[_0xa82f('0x5')]},'active':{'type':Sequelize[_0xa82f('0x6')],'defaultValue':![]},'author':{'type':Sequelize[_0xa82f('0x2')]},'logo':{'type':Sequelize[_0xa82f('0x2')]},'state':{'type':Sequelize[_0xa82f('0x2')],'unique':_0xa82f('0x7')},'description':{'type':Sequelize[_0xa82f('0x2')]},'title':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize['STRING']},'link':{'type':Sequelize[_0xa82f('0x2')],'defaultValue':'#'}};
\ No newline at end of file
+var _0x2e14=['sequelize','exports','unique_name_and_version','STRING','app.js','BOOLEAN'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x2e14,0xae));var _0x42e1=function(_0x58ee96,_0x5affd5){_0x58ee96=_0x58ee96-0x0;var _0xb346aa=_0x2e14[_0x58ee96];return _0xb346aa;};'use strict';var Sequelize=require(_0x42e1('0x0'));module[_0x42e1('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x42e1('0x2')},'version':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x42e1('0x2')},'main':{'type':Sequelize[_0x42e1('0x3')],'defaultValue':_0x42e1('0x4')},'filename':{'type':Sequelize[_0x42e1('0x3')]},'path':{'type':Sequelize[_0x42e1('0x3')]},'type':{'type':Sequelize[_0x42e1('0x3')]},'size':{'type':Sequelize['INTEGER']},'active':{'type':Sequelize[_0x42e1('0x5')],'defaultValue':![]},'author':{'type':Sequelize[_0x42e1('0x3')]},'logo':{'type':Sequelize[_0x42e1('0x3')]},'state':{'type':Sequelize[_0x42e1('0x3')],'unique':'state'},'description':{'type':Sequelize[_0x42e1('0x3')]},'title':{'type':Sequelize[_0x42e1('0x3')]},'remoteUri':{'type':Sequelize['STRING']},'link':{'type':Sequelize['STRING'],'defaultValue':'#'}};
\ No newline at end of file
index 0c6eed8..5367ead 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd117=['hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','count','findAll','rows','catch','show','params','rawAttributes','includeAll','find','create','update','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/license/util','sendStatus','status','json','offset','undefined','limit','set','Content-Range','apply','reject','then','destroy','error','stack','name','send','Integration','fieldName','type','map','keys','query','filters','model','intersection','fields','attributes','length'];(function(_0x2b2874,_0x34a817){var _0x586a31=function(_0x46f14b){while(--_0x46f14b){_0x2b2874['push'](_0x2b2874['shift']());}};_0x586a31(++_0x34a817);}(_0xd117,0x182));var _0x7d11=function(_0x64a51,_0x1c61b7){_0x64a51=_0x64a51-0x0;var _0x1eba45=_0xd117[_0x64a51];return _0x1eba45;};'use strict';var emlformat=require(_0x7d11('0x0'));var rimraf=require(_0x7d11('0x1'));var zipdir=require(_0x7d11('0x2'));var jsonpatch=require(_0x7d11('0x3'));var rp=require(_0x7d11('0x4'));var moment=require(_0x7d11('0x5'));var BPromise=require(_0x7d11('0x6'));var Mustache=require(_0x7d11('0x7'));var util=require(_0x7d11('0x8'));var path=require(_0x7d11('0x9'));var sox=require(_0x7d11('0xa'));var csv=require(_0x7d11('0xb'));var ejs=require(_0x7d11('0xc'));var fs=require('fs');var fs_extra=require(_0x7d11('0xd'));var _=require(_0x7d11('0xe'));var squel=require(_0x7d11('0xf'));var crypto=require('crypto');var jsforce=require(_0x7d11('0x10'));var deskjs=require(_0x7d11('0x11'));var toCsv=require(_0x7d11('0xb'));var querystring=require('querystring');var Papa=require(_0x7d11('0x12'));var Redis=require(_0x7d11('0x13'));var authService=require(_0x7d11('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0x7d11('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x7d11('0x16'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x7d11('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4767d5,_0x471f46){_0x471f46=_0x471f46||0xcc;return function(_0x5ee572){if(_0x5ee572){return _0x4767d5[_0x7d11('0x18')](_0x471f46);}return _0x4767d5[_0x7d11('0x19')](_0x471f46)['end']();};}function respondWithResult(_0x324de5,_0x16949d){_0x16949d=_0x16949d||0xc8;return function(_0x20a2df){if(_0x20a2df){return _0x324de5[_0x7d11('0x19')](_0x16949d)[_0x7d11('0x1a')](_0x20a2df);}};}function respondWithFilteredResult(_0xeae744,_0x2a269e){return function(_0xb1669e){if(_0xb1669e){var _0x4aa795=typeof _0x2a269e[_0x7d11('0x1b')]===_0x7d11('0x1c')&&typeof _0x2a269e[_0x7d11('0x1d')]===_0x7d11('0x1c');var _0x45f916=_0xb1669e['count'];var _0x456cb9=_0x4aa795?0x0:_0x2a269e[_0x7d11('0x1b')];var _0x4d1306=_0x4aa795?_0xb1669e['count']:_0x2a269e[_0x7d11('0x1b')]+_0x2a269e['limit'];var _0x1f9990;if(_0x4d1306>=_0x45f916){_0x4d1306=_0x45f916;_0x1f9990=0xc8;}else{_0x1f9990=0xce;}_0xeae744['status'](_0x1f9990);return _0xeae744[_0x7d11('0x1e')](_0x7d11('0x1f'),_0x456cb9+'-'+_0x4d1306+'/'+_0x45f916)[_0x7d11('0x1a')](_0xb1669e);}return null;};}function patchUpdates(_0x46f662){return function(_0x30df70){try{jsonpatch[_0x7d11('0x20')](_0x30df70,_0x46f662,!![]);}catch(_0x4297f8){return BPromise[_0x7d11('0x21')](_0x4297f8);}return _0x30df70['save']();};}function saveUpdates(_0x441917,_0x4a34f4){return function(_0x58455b){if(_0x58455b){return _0x58455b['update'](_0x441917)[_0x7d11('0x22')](function(_0x3545dc){return _0x3545dc;});}return null;};}function removeEntity(_0x44476c,_0x1a7853){return function(_0x355d14){if(_0x355d14){return _0x355d14[_0x7d11('0x23')]()[_0x7d11('0x22')](function(){_0x44476c[_0x7d11('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x36c2b4,_0x577ca9){return function(_0x4bfa76){if(!_0x4bfa76){_0x36c2b4['sendStatus'](0x194);}return _0x4bfa76;};}function handleError(_0x3ba092,_0x59cdba){_0x59cdba=_0x59cdba||0x1f4;return function(_0x180e1e){logger[_0x7d11('0x24')](_0x180e1e[_0x7d11('0x25')]);if(_0x180e1e['name']){delete _0x180e1e[_0x7d11('0x26')];}_0x3ba092[_0x7d11('0x19')](_0x59cdba)[_0x7d11('0x27')](_0x180e1e);};}exports['index']=function(_0x601650,_0x35a789){var _0x18c049={},_0x38f1be={},_0x4c7d6a={'count':0x0,'rows':[]};var _0x1a7745=_['map'](db[_0x7d11('0x28')]['rawAttributes'],function(_0x31866d){return{'name':_0x31866d[_0x7d11('0x29')],'type':_0x31866d[_0x7d11('0x2a')]['key']};});_0x38f1be['model']=_[_0x7d11('0x2b')](_0x1a7745,_0x7d11('0x26'));_0x38f1be['query']=_[_0x7d11('0x2c')](_0x601650[_0x7d11('0x2d')]);_0x38f1be[_0x7d11('0x2e')]=_['intersection'](_0x38f1be[_0x7d11('0x2f')],_0x38f1be['query']);_0x18c049['attributes']=_[_0x7d11('0x30')](_0x38f1be['model'],qs[_0x7d11('0x31')](_0x601650[_0x7d11('0x2d')][_0x7d11('0x31')]));_0x18c049[_0x7d11('0x32')]=_0x18c049['attributes'][_0x7d11('0x33')]?_0x18c049[_0x7d11('0x32')]:_0x38f1be['model'];if(!_0x601650['query'][_0x7d11('0x34')](_0x7d11('0x35'))){_0x18c049['limit']=qs[_0x7d11('0x1d')](_0x601650['query']['limit']);_0x18c049[_0x7d11('0x1b')]=qs['offset'](_0x601650['query'][_0x7d11('0x1b')]);}_0x18c049[_0x7d11('0x36')]=qs[_0x7d11('0x37')](_0x601650[_0x7d11('0x2d')][_0x7d11('0x37')]);_0x18c049[_0x7d11('0x38')]=qs[_0x7d11('0x2e')](_[_0x7d11('0x39')](_0x601650[_0x7d11('0x2d')],_0x38f1be[_0x7d11('0x2e')]),_0x1a7745);if(_0x601650[_0x7d11('0x2d')][_0x7d11('0x3a')]){_0x18c049['where']=_[_0x7d11('0x3b')](_0x18c049['where'],{'$or':_[_0x7d11('0x2b')](_0x1a7745,function(_0x111e26){if(_0x111e26[_0x7d11('0x2a')]!==_0x7d11('0x3c')){var _0x4f8fd2={};_0x4f8fd2[_0x111e26[_0x7d11('0x26')]]={'$like':'%'+_0x601650[_0x7d11('0x2d')][_0x7d11('0x3a')]+'%'};return _0x4f8fd2;}})});}_0x18c049=_[_0x7d11('0x3b')]({},_0x18c049,_0x601650['options']);var _0x22730e={'where':_0x18c049['where']};return db[_0x7d11('0x28')]['count'](_0x22730e)[_0x7d11('0x22')](function(_0x622725){_0x4c7d6a[_0x7d11('0x3d')]=_0x622725;if(_0x601650[_0x7d11('0x2d')]['includeAll']){_0x18c049['include']=[{'all':!![]}];}return db[_0x7d11('0x28')][_0x7d11('0x3e')](_0x18c049);})['then'](function(_0x1caef9){_0x4c7d6a[_0x7d11('0x3f')]=_0x1caef9;return _0x4c7d6a;})[_0x7d11('0x22')](respondWithFilteredResult(_0x35a789,_0x18c049))[_0x7d11('0x40')](handleError(_0x35a789,null));};exports[_0x7d11('0x41')]=function(_0x2e1647,_0x47e968){var _0x25b73b={'raw':![],'where':{'id':_0x2e1647[_0x7d11('0x42')]['id']}},_0x5cf6a6={};_0x5cf6a6[_0x7d11('0x2f')]=_[_0x7d11('0x2c')](db[_0x7d11('0x28')][_0x7d11('0x43')]);_0x5cf6a6[_0x7d11('0x2d')]=_['keys'](_0x2e1647['query']);_0x5cf6a6['filters']=_[_0x7d11('0x30')](_0x5cf6a6[_0x7d11('0x2f')],_0x5cf6a6[_0x7d11('0x2d')]);_0x25b73b[_0x7d11('0x32')]=_[_0x7d11('0x30')](_0x5cf6a6['model'],qs[_0x7d11('0x31')](_0x2e1647[_0x7d11('0x2d')]['fields']));_0x25b73b[_0x7d11('0x32')]=_0x25b73b[_0x7d11('0x32')][_0x7d11('0x33')]?_0x25b73b['attributes']:_0x5cf6a6[_0x7d11('0x2f')];if(_0x2e1647[_0x7d11('0x2d')][_0x7d11('0x44')]){_0x25b73b['include']=[{'all':!![]}];}_0x25b73b=_[_0x7d11('0x3b')]({},_0x25b73b,_0x2e1647['options']);return db[_0x7d11('0x28')][_0x7d11('0x45')](_0x25b73b)[_0x7d11('0x22')](handleEntityNotFound(_0x47e968,null))[_0x7d11('0x22')](respondWithResult(_0x47e968,null))[_0x7d11('0x40')](handleError(_0x47e968,null));};exports[_0x7d11('0x46')]=function(_0x161213,_0x193631){return db[_0x7d11('0x28')]['create'](_0x161213['body'],{})['then'](respondWithResult(_0x193631,0xc9))[_0x7d11('0x40')](handleError(_0x193631,null));};exports[_0x7d11('0x47')]=function(_0x20297a,_0x18ae0e){if(_0x20297a[_0x7d11('0x48')]['id']){delete _0x20297a[_0x7d11('0x48')]['id'];}return db[_0x7d11('0x28')][_0x7d11('0x45')]({'where':{'id':_0x20297a[_0x7d11('0x42')]['id']}})[_0x7d11('0x22')](handleEntityNotFound(_0x18ae0e,null))[_0x7d11('0x22')](saveUpdates(_0x20297a[_0x7d11('0x48')],null))['then'](respondWithResult(_0x18ae0e,null))[_0x7d11('0x40')](handleError(_0x18ae0e,null));};exports[_0x7d11('0x23')]=function(_0x29207f,_0x553a03){return db['Integration'][_0x7d11('0x45')]({'where':{'id':_0x29207f[_0x7d11('0x42')]['id']}})[_0x7d11('0x22')](handleEntityNotFound(_0x553a03,null))['then'](removeEntity(_0x553a03,null))['catch'](handleError(_0x553a03,null));};
\ No newline at end of file
+var _0x4819=['bluebird','mustache','util','path','sox','ejs','squel','crypto','jsforce','desk.js','to-csv','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','undefined','limit','offset','set','Content-Range','apply','reject','update','then','destroy','stack','name','send','map','Integration','rawAttributes','type','key','model','query','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filter','merge','options','count','includeAll','include','catch','show','keys','find','create','body','params','rimraf','zip-dir','fast-json-patch','request-promise','moment'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x4819,0xcd));var _0x9481=function(_0x2f2388,_0x4ea55c){_0x2f2388=_0x2f2388-0x0;var _0x451e17=_0x4819[_0x2f2388];return _0x451e17;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9481('0x0'));var zipdir=require(_0x9481('0x1'));var jsonpatch=require(_0x9481('0x2'));var rp=require(_0x9481('0x3'));var moment=require(_0x9481('0x4'));var BPromise=require(_0x9481('0x5'));var Mustache=require(_0x9481('0x6'));var util=require(_0x9481('0x7'));var path=require(_0x9481('0x8'));var sox=require(_0x9481('0x9'));var csv=require('to-csv');var ejs=require(_0x9481('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x9481('0xb'));var crypto=require(_0x9481('0xc'));var jsforce=require(_0x9481('0xd'));var deskjs=require(_0x9481('0xe'));var toCsv=require(_0x9481('0xf'));var querystring=require('querystring');var Papa=require(_0x9481('0x10'));var Redis=require('ioredis');var authService=require(_0x9481('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x9481('0x12'));var hardwareService=require(_0x9481('0x13'));var logger=require(_0x9481('0x14'))(_0x9481('0x15'));var utils=require(_0x9481('0x16'));var config=require(_0x9481('0x17'));var licenseUtil=require(_0x9481('0x18'));var db=require(_0x9481('0x19'))['db'];function respondWithStatusCode(_0xed8e9,_0x499b87){_0x499b87=_0x499b87||0xcc;return function(_0x5aac02){if(_0x5aac02){return _0xed8e9[_0x9481('0x1a')](_0x499b87);}return _0xed8e9[_0x9481('0x1b')](_0x499b87)[_0x9481('0x1c')]();};}function respondWithResult(_0x28fcb6,_0x3d23c2){_0x3d23c2=_0x3d23c2||0xc8;return function(_0xc7a0b5){if(_0xc7a0b5){return _0x28fcb6[_0x9481('0x1b')](_0x3d23c2)['json'](_0xc7a0b5);}};}function respondWithFilteredResult(_0x4220f1,_0x7a7ee){return function(_0x5b1fe6){if(_0x5b1fe6){var _0x2266d5=typeof _0x7a7ee['offset']===_0x9481('0x1d')&&typeof _0x7a7ee[_0x9481('0x1e')]===_0x9481('0x1d');var _0x2bb2a4=_0x5b1fe6['count'];var _0x5eda66=_0x2266d5?0x0:_0x7a7ee[_0x9481('0x1f')];var _0x50a559=_0x2266d5?_0x5b1fe6['count']:_0x7a7ee[_0x9481('0x1f')]+_0x7a7ee[_0x9481('0x1e')];var _0x18c6f5;if(_0x50a559>=_0x2bb2a4){_0x50a559=_0x2bb2a4;_0x18c6f5=0xc8;}else{_0x18c6f5=0xce;}_0x4220f1[_0x9481('0x1b')](_0x18c6f5);return _0x4220f1[_0x9481('0x20')](_0x9481('0x21'),_0x5eda66+'-'+_0x50a559+'/'+_0x2bb2a4)['json'](_0x5b1fe6);}return null;};}function patchUpdates(_0x2cf1aa){return function(_0x272a84){try{jsonpatch[_0x9481('0x22')](_0x272a84,_0x2cf1aa,!![]);}catch(_0x615e02){return BPromise[_0x9481('0x23')](_0x615e02);}return _0x272a84['save']();};}function saveUpdates(_0x215dd7,_0x294908){return function(_0x572599){if(_0x572599){return _0x572599[_0x9481('0x24')](_0x215dd7)[_0x9481('0x25')](function(_0x352b3a){return _0x352b3a;});}return null;};}function removeEntity(_0x1809d2,_0x2dc02e){return function(_0x49ecfa){if(_0x49ecfa){return _0x49ecfa[_0x9481('0x26')]()[_0x9481('0x25')](function(){_0x1809d2['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x12b0c3,_0x299e28){return function(_0x550fce){if(!_0x550fce){_0x12b0c3[_0x9481('0x1a')](0x194);}return _0x550fce;};}function handleError(_0x20ff9a,_0xeff0a5){_0xeff0a5=_0xeff0a5||0x1f4;return function(_0x28ae1b){logger['error'](_0x28ae1b[_0x9481('0x27')]);if(_0x28ae1b[_0x9481('0x28')]){delete _0x28ae1b[_0x9481('0x28')];}_0x20ff9a['status'](_0xeff0a5)[_0x9481('0x29')](_0x28ae1b);};}exports['index']=function(_0x2e1eff,_0xe153ab){var _0x22ab26={},_0x13ef93={},_0x2e5e63={'count':0x0,'rows':[]};var _0x53560d=_[_0x9481('0x2a')](db[_0x9481('0x2b')][_0x9481('0x2c')],function(_0x4895a0){return{'name':_0x4895a0['fieldName'],'type':_0x4895a0[_0x9481('0x2d')][_0x9481('0x2e')]};});_0x13ef93[_0x9481('0x2f')]=_[_0x9481('0x2a')](_0x53560d,'name');_0x13ef93['query']=_['keys'](_0x2e1eff[_0x9481('0x30')]);_0x13ef93['filters']=_[_0x9481('0x31')](_0x13ef93['model'],_0x13ef93[_0x9481('0x30')]);_0x22ab26[_0x9481('0x32')]=_[_0x9481('0x31')](_0x13ef93[_0x9481('0x2f')],qs[_0x9481('0x33')](_0x2e1eff['query'][_0x9481('0x33')]));_0x22ab26[_0x9481('0x32')]=_0x22ab26[_0x9481('0x32')]['length']?_0x22ab26[_0x9481('0x32')]:_0x13ef93[_0x9481('0x2f')];if(!_0x2e1eff[_0x9481('0x30')][_0x9481('0x34')](_0x9481('0x35'))){_0x22ab26[_0x9481('0x1e')]=qs['limit'](_0x2e1eff[_0x9481('0x30')]['limit']);_0x22ab26[_0x9481('0x1f')]=qs[_0x9481('0x1f')](_0x2e1eff[_0x9481('0x30')][_0x9481('0x1f')]);}_0x22ab26[_0x9481('0x36')]=qs[_0x9481('0x37')](_0x2e1eff['query'][_0x9481('0x37')]);_0x22ab26[_0x9481('0x38')]=qs['filters'](_['pick'](_0x2e1eff[_0x9481('0x30')],_0x13ef93['filters']),_0x53560d);if(_0x2e1eff[_0x9481('0x30')][_0x9481('0x39')]){_0x22ab26[_0x9481('0x38')]=_[_0x9481('0x3a')](_0x22ab26['where'],{'$or':_[_0x9481('0x2a')](_0x53560d,function(_0x590d50){if(_0x590d50[_0x9481('0x2d')]!=='VIRTUAL'){var _0x2ce972={};_0x2ce972[_0x590d50['name']]={'$like':'%'+_0x2e1eff[_0x9481('0x30')][_0x9481('0x39')]+'%'};return _0x2ce972;}})});}_0x22ab26=_[_0x9481('0x3a')]({},_0x22ab26,_0x2e1eff[_0x9481('0x3b')]);var _0x97dc3e={'where':_0x22ab26[_0x9481('0x38')]};return db[_0x9481('0x2b')]['count'](_0x97dc3e)[_0x9481('0x25')](function(_0x3857e8){_0x2e5e63[_0x9481('0x3c')]=_0x3857e8;if(_0x2e1eff[_0x9481('0x30')][_0x9481('0x3d')]){_0x22ab26[_0x9481('0x3e')]=[{'all':!![]}];}return db[_0x9481('0x2b')]['findAll'](_0x22ab26);})[_0x9481('0x25')](function(_0x1872ff){_0x2e5e63['rows']=_0x1872ff;return _0x2e5e63;})[_0x9481('0x25')](respondWithFilteredResult(_0xe153ab,_0x22ab26))[_0x9481('0x3f')](handleError(_0xe153ab,null));};exports[_0x9481('0x40')]=function(_0x3eb9ee,_0x29a8e9){var _0x5a8ffd={'raw':![],'where':{'id':_0x3eb9ee['params']['id']}},_0x304791={};_0x304791[_0x9481('0x2f')]=_[_0x9481('0x41')](db['Integration']['rawAttributes']);_0x304791[_0x9481('0x30')]=_[_0x9481('0x41')](_0x3eb9ee[_0x9481('0x30')]);_0x304791['filters']=_[_0x9481('0x31')](_0x304791[_0x9481('0x2f')],_0x304791['query']);_0x5a8ffd['attributes']=_[_0x9481('0x31')](_0x304791['model'],qs[_0x9481('0x33')](_0x3eb9ee[_0x9481('0x30')][_0x9481('0x33')]));_0x5a8ffd[_0x9481('0x32')]=_0x5a8ffd[_0x9481('0x32')]['length']?_0x5a8ffd[_0x9481('0x32')]:_0x304791[_0x9481('0x2f')];if(_0x3eb9ee['query'][_0x9481('0x3d')]){_0x5a8ffd[_0x9481('0x3e')]=[{'all':!![]}];}_0x5a8ffd=_[_0x9481('0x3a')]({},_0x5a8ffd,_0x3eb9ee[_0x9481('0x3b')]);return db[_0x9481('0x2b')][_0x9481('0x42')](_0x5a8ffd)[_0x9481('0x25')](handleEntityNotFound(_0x29a8e9,null))[_0x9481('0x25')](respondWithResult(_0x29a8e9,null))[_0x9481('0x3f')](handleError(_0x29a8e9,null));};exports['create']=function(_0xd36133,_0x5d3a06){return db['Integration'][_0x9481('0x43')](_0xd36133['body'],{})[_0x9481('0x25')](respondWithResult(_0x5d3a06,0xc9))[_0x9481('0x3f')](handleError(_0x5d3a06,null));};exports['update']=function(_0x277e2a,_0x1044a2){if(_0x277e2a[_0x9481('0x44')]['id']){delete _0x277e2a[_0x9481('0x44')]['id'];}return db[_0x9481('0x2b')][_0x9481('0x42')]({'where':{'id':_0x277e2a['params']['id']}})['then'](handleEntityNotFound(_0x1044a2,null))[_0x9481('0x25')](saveUpdates(_0x277e2a[_0x9481('0x44')],null))[_0x9481('0x25')](respondWithResult(_0x1044a2,null))[_0x9481('0x3f')](handleError(_0x1044a2,null));};exports[_0x9481('0x26')]=function(_0x353aab,_0x1c070c){return db[_0x9481('0x2b')]['find']({'where':{'id':_0x353aab[_0x9481('0x45')]['id']}})[_0x9481('0x25')](handleEntityNotFound(_0x1c070c,null))[_0x9481('0x25')](removeEntity(_0x1c070c,null))[_0x9481('0x3f')](handleError(_0x1c070c,null));};
\ No newline at end of file
index 7042d21..557df38 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdf7d=['path','rimraf','../../config/environment','./integration.attributes','define','Integration','integrations','util','../../config/logger','moment','request-promise'];(function(_0x186b1a,_0x4a5eb9){var _0x5e05a7=function(_0x21ef23){while(--_0x21ef23){_0x186b1a['push'](_0x186b1a['shift']());}};_0x5e05a7(++_0x4a5eb9);}(_0xdf7d,0x193));var _0xddf7=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0xdf7d[_0x2641f9];return _0x585741;};'use strict';var _=require('lodash');var util=require(_0xddf7('0x0'));var logger=require(_0xddf7('0x1'))('api');var moment=require(_0xddf7('0x2'));var BPromise=require('bluebird');var rp=require(_0xddf7('0x3'));var fs=require('fs');var path=require(_0xddf7('0x4'));var rimraf=require(_0xddf7('0x5'));var config=require(_0xddf7('0x6'));var attributes=require(_0xddf7('0x7'));module['exports']=function(_0x1099c3,_0x180736){return _0x1099c3[_0xddf7('0x8')](_0xddf7('0x9'),attributes,{'tableName':_0xddf7('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1cd0=['path','rimraf','./integration.attributes','integrations','lodash','util','../../config/logger','moment'];(function(_0xcf7545,_0x1e1889){var _0x219283=function(_0x7fa961){while(--_0x7fa961){_0xcf7545['push'](_0xcf7545['shift']());}};_0x219283(++_0x1e1889);}(_0x1cd0,0xcc));var _0x01cd=function(_0x45d3f0,_0x4be53f){_0x45d3f0=_0x45d3f0-0x0;var _0x314b79=_0x1cd0[_0x45d3f0];return _0x314b79;};'use strict';var _=require(_0x01cd('0x0'));var util=require(_0x01cd('0x1'));var logger=require(_0x01cd('0x2'))('api');var moment=require(_0x01cd('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x01cd('0x4'));var rimraf=require(_0x01cd('0x5'));var config=require('../../config/environment');var attributes=require(_0x01cd('0x6'));module['exports']=function(_0xd2505c,_0x1651d1){return _0xd2505c['define']('Integration',attributes,{'tableName':_0x01cd('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7f76953..74b6908 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1967=['then','info','Integration,\x20%s,\x20%s','Integration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request'];(function(_0x1da04e,_0x31024b){var _0xdd8c41=function(_0x2036f9){while(--_0x2036f9){_0x1da04e['push'](_0x1da04e['shift']());}};_0xdd8c41(++_0x31024b);}(_0x1967,0x173));var _0x7196=function(_0x9945d9,_0x1cca71){_0x9945d9=_0x9945d9-0x0;var _0x36d81d=_0x1967[_0x9945d9];return _0x36d81d;};'use strict';var _=require('lodash');var util=require(_0x7196('0x0'));var moment=require(_0x7196('0x1'));var BPromise=require(_0x7196('0x2'));var rs=require(_0x7196('0x3'));var fs=require('fs');var Redis=require(_0x7196('0x4'));var db=require(_0x7196('0x5'))['db'];var utils=require(_0x7196('0x6'));var logger=require(_0x7196('0x7'))(_0x7196('0x8'));var config=require(_0x7196('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x7196('0xa')][_0x7196('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x194746,_0x40e0af,_0x266a6e){return new BPromise(function(_0xad78a,_0x510c72){return client[_0x7196('0xc')](_0x194746,_0x266a6e)[_0x7196('0xd')](function(_0x3f846e){logger[_0x7196('0xe')](_0x7196('0xf'),_0x40e0af,'request\x20sent');logger['debug'](_0x7196('0x10'),_0x40e0af,_0x7196('0x11'),JSON[_0x7196('0x12')](_0x3f846e));if(_0x3f846e[_0x7196('0x13')]){if(_0x3f846e[_0x7196('0x13')][_0x7196('0x14')]===0x1f4){logger[_0x7196('0x13')](_0x7196('0xf'),_0x40e0af,_0x3f846e[_0x7196('0x13')][_0x7196('0x15')]);return _0x510c72(_0x3f846e[_0x7196('0x13')]['message']);}logger[_0x7196('0x13')](_0x7196('0xf'),_0x40e0af,_0x3f846e[_0x7196('0x13')][_0x7196('0x15')]);return _0xad78a(_0x3f846e['error'][_0x7196('0x15')]);}else{logger['info'](_0x7196('0xf'),_0x40e0af,_0x7196('0x11'));_0xad78a(_0x3f846e[_0x7196('0x16')][_0x7196('0x15')]);}})[_0x7196('0x17')](function(_0x2e3e0e){logger[_0x7196('0x13')](_0x7196('0xf'),_0x40e0af,_0x2e3e0e);_0x510c72(_0x2e3e0e);});});}
\ No newline at end of file
+var _0xe2fe=['then','info','Integration,\x20%s,\x20%s','stringify','error','message','request\x20sent','result','lodash','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request'];(function(_0x257acd,_0x47d8a7){var _0x519f3c=function(_0x5986e9){while(--_0x5986e9){_0x257acd['push'](_0x257acd['shift']());}};_0x519f3c(++_0x47d8a7);}(_0xe2fe,0x86));var _0xee2f=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xe2fe[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0xee2f('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xee2f('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xee2f('0x2'));var db=require(_0xee2f('0x3'))['db'];var utils=require(_0xee2f('0x4'));var logger=require(_0xee2f('0x5'))(_0xee2f('0x6'));var config=require('../../config/environment');var jayson=require(_0xee2f('0x7'));var client=jayson[_0xee2f('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1533a0,_0x2e1c8c,_0x5a7975){return new BPromise(function(_0x3c4095,_0x5ea796){return client[_0xee2f('0x9')](_0x1533a0,_0x5a7975)[_0xee2f('0xa')](function(_0x53f7dd){logger[_0xee2f('0xb')](_0xee2f('0xc'),_0x2e1c8c,'request\x20sent');logger['debug']('Integration,\x20%s,\x20%s,\x20%s',_0x2e1c8c,'request\x20sent',JSON[_0xee2f('0xd')](_0x53f7dd));if(_0x53f7dd['error']){if(_0x53f7dd['error']['code']===0x1f4){logger[_0xee2f('0xe')](_0xee2f('0xc'),_0x2e1c8c,_0x53f7dd[_0xee2f('0xe')][_0xee2f('0xf')]);return _0x5ea796(_0x53f7dd[_0xee2f('0xe')][_0xee2f('0xf')]);}logger['error'](_0xee2f('0xc'),_0x2e1c8c,_0x53f7dd['error'][_0xee2f('0xf')]);return _0x3c4095(_0x53f7dd[_0xee2f('0xe')]['message']);}else{logger[_0xee2f('0xb')](_0xee2f('0xc'),_0x2e1c8c,_0xee2f('0x10'));_0x3c4095(_0x53f7dd[_0xee2f('0x11')][_0xee2f('0xf')]);}})['catch'](function(_0x3f6372){logger['error'](_0xee2f('0xc'),_0x2e1c8c,_0x3f6372);_0x5ea796(_0x3f6372);});});}
\ No newline at end of file
index 60a70f3..c5a6413 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d38=['path','connect-timeout','fs-extra','../../components/interaction/service','../../config/environment','./integrationReport.controller','isAuthenticated','index','get','/describe','/:id','create','update','destroy','exports','util'];(function(_0xbb5bab,_0x5dc625){var _0x5e05d6=function(_0x39104b){while(--_0x39104b){_0xbb5bab['push'](_0xbb5bab['shift']());}};_0x5e05d6(++_0x5dc625);}(_0x6d38,0x1ef));var _0x86d3=function(_0x122096,_0x60c295){_0x122096=_0x122096-0x0;var _0x3d1966=_0x6d38[_0x122096];return _0x3d1966;};'use strict';var multer=require('multer');var util=require(_0x86d3('0x0'));var path=require(_0x86d3('0x1'));var timeout=require(_0x86d3('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x86d3('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x86d3('0x4'));var config=require(_0x86d3('0x5'));var controller=require(_0x86d3('0x6'));router['get']('/',auth[_0x86d3('0x7')](),controller[_0x86d3('0x8')]);router[_0x86d3('0x9')](_0x86d3('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x86d3('0x9')](_0x86d3('0xb'),auth[_0x86d3('0x7')](),controller['show']);router['post']('/',auth[_0x86d3('0x7')](),controller[_0x86d3('0xc')]);router['put']('/:id',auth[_0x86d3('0x7')](),controller[_0x86d3('0xd')]);router['delete'](_0x86d3('0xb'),auth['isAuthenticated'](),controller[_0x86d3('0xe')]);module[_0x86d3('0xf')]=router;
\ No newline at end of file
+var _0x2542=['put','update','destroy','exports','multer','util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./integrationReport.controller','get','index','/describe','isAuthenticated','describe','/:id','show','post'];(function(_0x13ee43,_0xac7788){var _0x760e55=function(_0x53c418){while(--_0x53c418){_0x13ee43['push'](_0x13ee43['shift']());}};_0x760e55(++_0xac7788);}(_0x2542,0x169));var _0x2254=function(_0x5b4c26,_0x755f31){_0x5b4c26=_0x5b4c26-0x0;var _0x1c4dd1=_0x2542[_0x5b4c26];return _0x1c4dd1;};'use strict';var multer=require(_0x2254('0x0'));var util=require(_0x2254('0x1'));var path=require(_0x2254('0x2'));var timeout=require(_0x2254('0x3'));var express=require('express');var router=express[_0x2254('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x2254('0x5'));var interaction=require(_0x2254('0x6'));var config=require(_0x2254('0x7'));var controller=require(_0x2254('0x8'));router[_0x2254('0x9')]('/',auth['isAuthenticated'](),controller[_0x2254('0xa')]);router[_0x2254('0x9')](_0x2254('0xb'),auth[_0x2254('0xc')](),controller[_0x2254('0xd')]);router[_0x2254('0x9')](_0x2254('0xe'),auth[_0x2254('0xc')](),controller[_0x2254('0xf')]);router[_0x2254('0x10')]('/',auth[_0x2254('0xc')](),controller['create']);router[_0x2254('0x11')](_0x2254('0xe'),auth[_0x2254('0xc')](),controller[_0x2254('0x12')]);router['delete']('/:id',auth[_0x2254('0xc')](),controller[_0x2254('0x13')]);module[_0x2254('0x14')]=router;
\ No newline at end of file
index 74016d5..670c4cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x828f=['TEXT','ENUM','SENDING','sequelize','exports','STRING','INTEGER','DATE','BOOLEAN'];(function(_0x4bd399,_0x2c3e20){var _0x1d1217=function(_0x5a4ebe){while(--_0x5a4ebe){_0x4bd399['push'](_0x4bd399['shift']());}};_0x1d1217(++_0x2c3e20);}(_0x828f,0x16b));var _0xf828=function(_0x52684f,_0xff73fc){_0x52684f=_0x52684f-0x0;var _0x4a55f0=_0x828f[_0x52684f];return _0x4a55f0;};'use strict';var Sequelize=require(_0xf828('0x0'));module[_0xf828('0x1')]={'integration':{'type':Sequelize[_0xf828('0x2')]},'eventChannel':{'type':Sequelize['STRING']},'exitStatus':{'type':Sequelize['STRING']},'ticketId':{'type':Sequelize[_0xf828('0x2')]},'integrationId':{'type':Sequelize[_0xf828('0x3')]},'contacts':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0xf828('0x2')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0xf828('0x2')]},'queue':{'type':Sequelize[_0xf828('0x2')]},'interface':{'type':Sequelize[_0xf828('0x2')]},'membername':{'type':Sequelize[_0xf828('0x2')]},'agentcalledAt':{'type':Sequelize['DATE']},'agentconnectAt':{'type':Sequelize[_0xf828('0x4')]},'holdtime':{'type':Sequelize[_0xf828('0x3')]},'agentcomplete':{'type':Sequelize[_0xf828('0x5')],'defaultValue':![]},'agentcompleteAt':{'type':Sequelize['DATE']},'talktime':{'type':Sequelize[_0xf828('0x3')]},'agentacw':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'acwtime':{'type':Sequelize[_0xf828('0x3')]},'reason':{'type':Sequelize[_0xf828('0x2')]},'agentringnoanswer':{'type':Sequelize[_0xf828('0x5')],'defaultValue':![]},'agentringnoanswerAt':{'type':Sequelize[_0xf828('0x4')]},'agentdump':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentdumpAt':{'type':Sequelize[_0xf828('0x4')]},'lastevent':{'type':Sequelize[_0xf828('0x2')]},'channel':{'type':Sequelize[_0xf828('0x2')]},'channelstate':{'type':Sequelize[_0xf828('0x3')]},'channelstatedesc':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize[_0xf828('0x2')]},'connectedlinename':{'type':Sequelize[_0xf828('0x2')]},'language':{'type':Sequelize[_0xf828('0x2')]},'accountcode':{'type':Sequelize['STRING']},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize[_0xf828('0x2')]},'priority':{'type':Sequelize[_0xf828('0x2')]},'destchannel':{'type':Sequelize[_0xf828('0x2')]},'destchannelstate':{'type':Sequelize[_0xf828('0x3')]},'destchannelstatedesc':{'type':Sequelize[_0xf828('0x2')]},'destcalleridnum':{'type':Sequelize['STRING']},'destcalleridname':{'type':Sequelize[_0xf828('0x2')]},'destconnectedlinenum':{'type':Sequelize[_0xf828('0x2')]},'destconnectedlinename':{'type':Sequelize[_0xf828('0x2')]},'destlanguage':{'type':Sequelize['STRING']},'destaccountcode':{'type':Sequelize[_0xf828('0x2')]},'destcontext':{'type':Sequelize['STRING']},'destexten':{'type':Sequelize[_0xf828('0x2')]},'destpriority':{'type':Sequelize[_0xf828('0x2')]},'destuniqueid':{'type':Sequelize[_0xf828('0x2')]},'messageId':{'type':Sequelize[_0xf828('0x2')]},'inReplyTo':{'type':Sequelize[_0xf828('0x2')]},'subject':{'type':Sequelize[_0xf828('0x2')]},'from':{'type':Sequelize[_0xf828('0x2')]},'to':{'type':Sequelize[_0xf828('0x2')]},'cc':{'type':Sequelize['STRING']},'attachment':{'type':Sequelize[_0xf828('0x6')]},'html':{'type':Sequelize[_0xf828('0x6')]},'text':{'type':Sequelize[_0xf828('0x6')]},'status':{'type':Sequelize[_0xf828('0x7')]('SENT',_0xf828('0x8'),'RECEIVED','FAILED')},'url':{'type':Sequelize[_0xf828('0x2')]},'app':{'type':Sequelize[_0xf828('0x2')]},'appdata':{'type':Sequelize[_0xf828('0x2')]},'projectId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
+var _0xc50e=['DATE','BOOLEAN','TEXT','ENUM','SENT','SENDING','RECEIVED','sequelize','STRING','INTEGER'];(function(_0x14a34a,_0x424129){var _0x4d921e=function(_0x1982be){while(--_0x1982be){_0x14a34a['push'](_0x14a34a['shift']());}};_0x4d921e(++_0x424129);}(_0xc50e,0x11f));var _0xec50=function(_0x553138,_0x394d3c){_0x553138=_0x553138-0x0;var _0x340bbf=_0xc50e[_0x553138];return _0x340bbf;};'use strict';var Sequelize=require(_0xec50('0x0'));module['exports']={'integration':{'type':Sequelize['STRING']},'eventChannel':{'type':Sequelize[_0xec50('0x1')]},'exitStatus':{'type':Sequelize[_0xec50('0x1')]},'ticketId':{'type':Sequelize[_0xec50('0x1')]},'integrationId':{'type':Sequelize[_0xec50('0x2')]},'contacts':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0xec50('0x1')]},'calleridname':{'type':Sequelize[_0xec50('0x1')]},'queue':{'type':Sequelize[_0xec50('0x1')]},'interface':{'type':Sequelize[_0xec50('0x1')]},'membername':{'type':Sequelize['STRING']},'agentcalledAt':{'type':Sequelize[_0xec50('0x3')]},'agentconnectAt':{'type':Sequelize[_0xec50('0x3')]},'holdtime':{'type':Sequelize[_0xec50('0x2')]},'agentcomplete':{'type':Sequelize[_0xec50('0x4')],'defaultValue':![]},'agentcompleteAt':{'type':Sequelize[_0xec50('0x3')]},'talktime':{'type':Sequelize[_0xec50('0x2')]},'agentacw':{'type':Sequelize[_0xec50('0x4')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0xec50('0x2')]},'reason':{'type':Sequelize['STRING']},'agentringnoanswer':{'type':Sequelize[_0xec50('0x4')],'defaultValue':![]},'agentringnoanswerAt':{'type':Sequelize[_0xec50('0x3')]},'agentdump':{'type':Sequelize[_0xec50('0x4')],'defaultValue':![]},'agentdumpAt':{'type':Sequelize[_0xec50('0x3')]},'lastevent':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0xec50('0x1')]},'channelstate':{'type':Sequelize['INTEGER']},'channelstatedesc':{'type':Sequelize[_0xec50('0x1')]},'connectedlinenum':{'type':Sequelize['STRING']},'connectedlinename':{'type':Sequelize[_0xec50('0x1')]},'language':{'type':Sequelize[_0xec50('0x1')]},'accountcode':{'type':Sequelize[_0xec50('0x1')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize[_0xec50('0x1')]},'priority':{'type':Sequelize[_0xec50('0x1')]},'destchannel':{'type':Sequelize[_0xec50('0x1')]},'destchannelstate':{'type':Sequelize[_0xec50('0x2')]},'destchannelstatedesc':{'type':Sequelize['STRING']},'destcalleridnum':{'type':Sequelize[_0xec50('0x1')]},'destcalleridname':{'type':Sequelize[_0xec50('0x1')]},'destconnectedlinenum':{'type':Sequelize[_0xec50('0x1')]},'destconnectedlinename':{'type':Sequelize[_0xec50('0x1')]},'destlanguage':{'type':Sequelize['STRING']},'destaccountcode':{'type':Sequelize[_0xec50('0x1')]},'destcontext':{'type':Sequelize[_0xec50('0x1')]},'destexten':{'type':Sequelize[_0xec50('0x1')]},'destpriority':{'type':Sequelize['STRING']},'destuniqueid':{'type':Sequelize[_0xec50('0x1')]},'messageId':{'type':Sequelize[_0xec50('0x1')]},'inReplyTo':{'type':Sequelize[_0xec50('0x1')]},'subject':{'type':Sequelize[_0xec50('0x1')]},'from':{'type':Sequelize[_0xec50('0x1')]},'to':{'type':Sequelize[_0xec50('0x1')]},'cc':{'type':Sequelize[_0xec50('0x1')]},'attachment':{'type':Sequelize['TEXT']},'html':{'type':Sequelize['TEXT']},'text':{'type':Sequelize[_0xec50('0x5')]},'status':{'type':Sequelize[_0xec50('0x6')](_0xec50('0x7'),_0xec50('0x8'),_0xec50('0x9'),'FAILED')},'url':{'type':Sequelize['STRING']},'app':{'type':Sequelize[_0xec50('0x1')]},'appdata':{'type':Sequelize[_0xec50('0x1')]},'projectId':{'type':Sequelize[_0xec50('0x2')]}};
\ No newline at end of file
index a25bd28..fa25eb2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34ff=['VIRTUAL','filter','options','then','includeAll','findAll','rows','catch','show','params','fields','find','create','update','body','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','path','sox','ejs','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../mysqldb','sendStatus','status','json','limit','undefined','count','offset','set','apply','reject','destroy','end','error','stack','name','send','map','IntegrationReport','rawAttributes','fieldName','key','query','keys','filters','intersection','model','attributes','length','hasOwnProperty','nolimit','order','sort','pick','where','merge','type'];(function(_0x4a3698,_0x316700){var _0x10e014=function(_0x13cee8){while(--_0x13cee8){_0x4a3698['push'](_0x4a3698['shift']());}};_0x10e014(++_0x316700);}(_0x34ff,0x172));var _0xf34f=function(_0x42c80b,_0x8f9d24){_0x42c80b=_0x42c80b-0x0;var _0x20777a=_0x34ff[_0x42c80b];return _0x20777a;};'use strict';var emlformat=require(_0xf34f('0x0'));var rimraf=require(_0xf34f('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xf34f('0x2'));var rp=require(_0xf34f('0x3'));var moment=require('moment');var BPromise=require(_0xf34f('0x4'));var Mustache=require(_0xf34f('0x5'));var util=require('util');var path=require(_0xf34f('0x6'));var sox=require(_0xf34f('0x7'));var csv=require('to-csv');var ejs=require(_0xf34f('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf34f('0x9'));var squel=require(_0xf34f('0xa'));var crypto=require(_0xf34f('0xb'));var jsforce=require(_0xf34f('0xc'));var deskjs=require(_0xf34f('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xf34f('0xe'));var authService=require(_0xf34f('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0xf34f('0x10'));var hardwareService=require(_0xf34f('0x11'));var logger=require('../../config/logger')('api');var utils=require(_0xf34f('0x12'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xf34f('0x13'))['db'];function respondWithStatusCode(_0x4c871d,_0x4ad5e3){_0x4ad5e3=_0x4ad5e3||0xcc;return function(_0x20297c){if(_0x20297c){return _0x4c871d[_0xf34f('0x14')](_0x4ad5e3);}return _0x4c871d[_0xf34f('0x15')](_0x4ad5e3)['end']();};}function respondWithResult(_0xc934b1,_0x11df8d){_0x11df8d=_0x11df8d||0xc8;return function(_0x53c602){if(_0x53c602){return _0xc934b1[_0xf34f('0x15')](_0x11df8d)[_0xf34f('0x16')](_0x53c602);}};}function respondWithFilteredResult(_0x2d0e31,_0x3138cc){return function(_0x16b894){if(_0x16b894){var _0x4e65e3=typeof _0x3138cc['offset']==='undefined'&&typeof _0x3138cc[_0xf34f('0x17')]===_0xf34f('0x18');var _0x51ec42=_0x16b894[_0xf34f('0x19')];var _0x21ab9a=_0x4e65e3?0x0:_0x3138cc[_0xf34f('0x1a')];var _0x2ba346=_0x4e65e3?_0x16b894[_0xf34f('0x19')]:_0x3138cc[_0xf34f('0x1a')]+_0x3138cc['limit'];var _0x5b79a4;if(_0x2ba346>=_0x51ec42){_0x2ba346=_0x51ec42;_0x5b79a4=0xc8;}else{_0x5b79a4=0xce;}_0x2d0e31[_0xf34f('0x15')](_0x5b79a4);return _0x2d0e31[_0xf34f('0x1b')]('Content-Range',_0x21ab9a+'-'+_0x2ba346+'/'+_0x51ec42)[_0xf34f('0x16')](_0x16b894);}return null;};}function patchUpdates(_0x3f74d8){return function(_0x190a0f){try{jsonpatch[_0xf34f('0x1c')](_0x190a0f,_0x3f74d8,!![]);}catch(_0x1331c3){return BPromise[_0xf34f('0x1d')](_0x1331c3);}return _0x190a0f['save']();};}function saveUpdates(_0x582f79,_0x15b1bd){return function(_0x37bbb4){if(_0x37bbb4){return _0x37bbb4['update'](_0x582f79)['then'](function(_0x2f3fc7){return _0x2f3fc7;});}return null;};}function removeEntity(_0x48f561,_0x5edbf6){return function(_0x3efd2c){if(_0x3efd2c){return _0x3efd2c[_0xf34f('0x1e')]()['then'](function(){_0x48f561[_0xf34f('0x15')](0xcc)[_0xf34f('0x1f')]();});}};}function handleEntityNotFound(_0x5cefb3,_0x3b7f14){return function(_0x37bbb3){if(!_0x37bbb3){_0x5cefb3[_0xf34f('0x14')](0x194);}return _0x37bbb3;};}function handleError(_0x34907b,_0x42ff7c){_0x42ff7c=_0x42ff7c||0x1f4;return function(_0x1a38f1){logger[_0xf34f('0x20')](_0x1a38f1[_0xf34f('0x21')]);if(_0x1a38f1['name']){delete _0x1a38f1[_0xf34f('0x22')];}_0x34907b[_0xf34f('0x15')](_0x42ff7c)[_0xf34f('0x23')](_0x1a38f1);};}exports['index']=function(_0x5e3838,_0x462c04){var _0x18e21e={},_0x27bf5e={},_0x22a9e5={'count':0x0,'rows':[]};var _0x37fd81=_[_0xf34f('0x24')](db[_0xf34f('0x25')][_0xf34f('0x26')],function(_0x2cd844){return{'name':_0x2cd844[_0xf34f('0x27')],'type':_0x2cd844['type'][_0xf34f('0x28')]};});_0x27bf5e['model']=_[_0xf34f('0x24')](_0x37fd81,'name');_0x27bf5e[_0xf34f('0x29')]=_[_0xf34f('0x2a')](_0x5e3838['query']);_0x27bf5e[_0xf34f('0x2b')]=_[_0xf34f('0x2c')](_0x27bf5e[_0xf34f('0x2d')],_0x27bf5e[_0xf34f('0x29')]);_0x18e21e[_0xf34f('0x2e')]=_[_0xf34f('0x2c')](_0x27bf5e[_0xf34f('0x2d')],qs['fields'](_0x5e3838[_0xf34f('0x29')]['fields']));_0x18e21e[_0xf34f('0x2e')]=_0x18e21e[_0xf34f('0x2e')][_0xf34f('0x2f')]?_0x18e21e[_0xf34f('0x2e')]:_0x27bf5e[_0xf34f('0x2d')];if(!_0x5e3838[_0xf34f('0x29')][_0xf34f('0x30')](_0xf34f('0x31'))){_0x18e21e[_0xf34f('0x17')]=qs['limit'](_0x5e3838[_0xf34f('0x29')][_0xf34f('0x17')]);_0x18e21e[_0xf34f('0x1a')]=qs[_0xf34f('0x1a')](_0x5e3838['query'][_0xf34f('0x1a')]);}_0x18e21e[_0xf34f('0x32')]=qs['sort'](_0x5e3838['query'][_0xf34f('0x33')]);_0x18e21e['where']=qs['filters'](_[_0xf34f('0x34')](_0x5e3838[_0xf34f('0x29')],_0x27bf5e['filters']),_0x37fd81);if(_0x5e3838[_0xf34f('0x29')]['filter']){_0x18e21e[_0xf34f('0x35')]=_[_0xf34f('0x36')](_0x18e21e[_0xf34f('0x35')],{'$or':_[_0xf34f('0x24')](_0x37fd81,function(_0x52e4ee){if(_0x52e4ee[_0xf34f('0x37')]!==_0xf34f('0x38')){var _0x320cdf={};_0x320cdf[_0x52e4ee[_0xf34f('0x22')]]={'$like':'%'+_0x5e3838[_0xf34f('0x29')][_0xf34f('0x39')]+'%'};return _0x320cdf;}})});}_0x18e21e=_[_0xf34f('0x36')]({},_0x18e21e,_0x5e3838[_0xf34f('0x3a')]);var _0x57bb52={'where':_0x18e21e[_0xf34f('0x35')]};return db[_0xf34f('0x25')][_0xf34f('0x19')](_0x57bb52)[_0xf34f('0x3b')](function(_0x37c169){_0x22a9e5['count']=_0x37c169;if(_0x5e3838['query'][_0xf34f('0x3c')]){_0x18e21e['include']=[{'all':!![]}];}return db[_0xf34f('0x25')][_0xf34f('0x3d')](_0x18e21e);})['then'](function(_0xaa89f5){_0x22a9e5[_0xf34f('0x3e')]=_0xaa89f5;return _0x22a9e5;})[_0xf34f('0x3b')](respondWithFilteredResult(_0x462c04,_0x18e21e))[_0xf34f('0x3f')](handleError(_0x462c04,null));};exports[_0xf34f('0x40')]=function(_0x735b9a,_0x455cfc){var _0x58d83f={'raw':![],'where':{'id':_0x735b9a[_0xf34f('0x41')]['id']}},_0x3890a5={};_0x3890a5[_0xf34f('0x2d')]=_['keys'](db[_0xf34f('0x25')][_0xf34f('0x26')]);_0x3890a5[_0xf34f('0x29')]=_['keys'](_0x735b9a[_0xf34f('0x29')]);_0x3890a5[_0xf34f('0x2b')]=_[_0xf34f('0x2c')](_0x3890a5['model'],_0x3890a5['query']);_0x58d83f[_0xf34f('0x2e')]=_['intersection'](_0x3890a5[_0xf34f('0x2d')],qs[_0xf34f('0x42')](_0x735b9a[_0xf34f('0x29')][_0xf34f('0x42')]));_0x58d83f[_0xf34f('0x2e')]=_0x58d83f[_0xf34f('0x2e')][_0xf34f('0x2f')]?_0x58d83f['attributes']:_0x3890a5[_0xf34f('0x2d')];if(_0x735b9a[_0xf34f('0x29')][_0xf34f('0x3c')]){_0x58d83f['include']=[{'all':!![]}];}_0x58d83f=_[_0xf34f('0x36')]({},_0x58d83f,_0x735b9a[_0xf34f('0x3a')]);return db[_0xf34f('0x25')][_0xf34f('0x43')](_0x58d83f)[_0xf34f('0x3b')](handleEntityNotFound(_0x455cfc,null))[_0xf34f('0x3b')](respondWithResult(_0x455cfc,null))[_0xf34f('0x3f')](handleError(_0x455cfc,null));};exports[_0xf34f('0x44')]=function(_0x3f7b43,_0x1fb140){return db[_0xf34f('0x25')][_0xf34f('0x44')](_0x3f7b43['body'],{})[_0xf34f('0x3b')](respondWithResult(_0x1fb140,0xc9))[_0xf34f('0x3f')](handleError(_0x1fb140,null));};exports[_0xf34f('0x45')]=function(_0x3e3295,_0xd9b746){if(_0x3e3295[_0xf34f('0x46')]['id']){delete _0x3e3295[_0xf34f('0x46')]['id'];}return db[_0xf34f('0x25')]['find']({'where':{'id':_0x3e3295['params']['id']}})['then'](handleEntityNotFound(_0xd9b746,null))[_0xf34f('0x3b')](saveUpdates(_0x3e3295['body'],null))[_0xf34f('0x3b')](respondWithResult(_0xd9b746,null))['catch'](handleError(_0xd9b746,null));};exports[_0xf34f('0x1e')]=function(_0x137c98,_0x20bd22){return db[_0xf34f('0x25')]['find']({'where':{'id':_0x137c98[_0xf34f('0x41')]['id']}})['then'](handleEntityNotFound(_0x20bd22,null))['then'](removeEntity(_0x20bd22,null))[_0xf34f('0x3f')](handleError(_0x20bd22,null));};exports['describe']=function(_0x4430bd,_0x57f7c7){return db[_0xf34f('0x25')]['describe']()[_0xf34f('0x3b')](respondWithResult(_0x57f7c7,null))[_0xf34f('0x3f')](handleError(_0x57f7c7,null));};
\ No newline at end of file
+var _0xec68=['../../config/utils','../../config/environment','sendStatus','status','json','undefined','limit','count','offset','set','apply','reject','update','then','destroy','end','stack','name','send','index','map','IntegrationReport','rawAttributes','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','catch','show','params','create','body','find','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','path','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware'];(function(_0x157233,_0xc5ac9){var _0x646816=function(_0x46c8cd){while(--_0x46c8cd){_0x157233['push'](_0x157233['shift']());}};_0x646816(++_0xc5ac9);}(_0xec68,0x1e3));var _0x8ec6=function(_0x4fe0b3,_0x17e711){_0x4fe0b3=_0x4fe0b3-0x0;var _0x2e4c70=_0xec68[_0x4fe0b3];return _0x2e4c70;};'use strict';var emlformat=require(_0x8ec6('0x0'));var rimraf=require(_0x8ec6('0x1'));var zipdir=require(_0x8ec6('0x2'));var jsonpatch=require(_0x8ec6('0x3'));var rp=require(_0x8ec6('0x4'));var moment=require(_0x8ec6('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x8ec6('0x6'));var path=require(_0x8ec6('0x7'));var sox=require('sox');var csv=require(_0x8ec6('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8ec6('0x9'));var _=require(_0x8ec6('0xa'));var squel=require(_0x8ec6('0xb'));var crypto=require(_0x8ec6('0xc'));var jsforce=require(_0x8ec6('0xd'));var deskjs=require(_0x8ec6('0xe'));var toCsv=require(_0x8ec6('0x8'));var querystring=require('querystring');var Papa=require(_0x8ec6('0xf'));var Redis=require(_0x8ec6('0x10'));var authService=require(_0x8ec6('0x11'));var qs=require(_0x8ec6('0x12'));var as=require(_0x8ec6('0x13'));var hardwareService=require(_0x8ec6('0x14'));var logger=require('../../config/logger')('api');var utils=require(_0x8ec6('0x15'));var config=require(_0x8ec6('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2c8062,_0x4a6d99){_0x4a6d99=_0x4a6d99||0xcc;return function(_0x4d0d3d){if(_0x4d0d3d){return _0x2c8062[_0x8ec6('0x17')](_0x4a6d99);}return _0x2c8062[_0x8ec6('0x18')](_0x4a6d99)['end']();};}function respondWithResult(_0x176ded,_0x547d6c){_0x547d6c=_0x547d6c||0xc8;return function(_0x3c44f8){if(_0x3c44f8){return _0x176ded['status'](_0x547d6c)[_0x8ec6('0x19')](_0x3c44f8);}};}function respondWithFilteredResult(_0x298ac2,_0x51b2c8){return function(_0x439078){if(_0x439078){var _0x800a1=typeof _0x51b2c8['offset']===_0x8ec6('0x1a')&&typeof _0x51b2c8[_0x8ec6('0x1b')]===_0x8ec6('0x1a');var _0xf7d4da=_0x439078[_0x8ec6('0x1c')];var _0x719e1c=_0x800a1?0x0:_0x51b2c8['offset'];var _0x2d2989=_0x800a1?_0x439078[_0x8ec6('0x1c')]:_0x51b2c8[_0x8ec6('0x1d')]+_0x51b2c8[_0x8ec6('0x1b')];var _0x18c117;if(_0x2d2989>=_0xf7d4da){_0x2d2989=_0xf7d4da;_0x18c117=0xc8;}else{_0x18c117=0xce;}_0x298ac2[_0x8ec6('0x18')](_0x18c117);return _0x298ac2[_0x8ec6('0x1e')]('Content-Range',_0x719e1c+'-'+_0x2d2989+'/'+_0xf7d4da)[_0x8ec6('0x19')](_0x439078);}return null;};}function patchUpdates(_0x777008){return function(_0x4db48e){try{jsonpatch[_0x8ec6('0x1f')](_0x4db48e,_0x777008,!![]);}catch(_0x85d31f){return BPromise[_0x8ec6('0x20')](_0x85d31f);}return _0x4db48e['save']();};}function saveUpdates(_0x42df0e,_0x338f8f){return function(_0x577663){if(_0x577663){return _0x577663[_0x8ec6('0x21')](_0x42df0e)[_0x8ec6('0x22')](function(_0x220364){return _0x220364;});}return null;};}function removeEntity(_0x4b9d0c,_0x599ae4){return function(_0x4d2355){if(_0x4d2355){return _0x4d2355[_0x8ec6('0x23')]()[_0x8ec6('0x22')](function(){_0x4b9d0c[_0x8ec6('0x18')](0xcc)[_0x8ec6('0x24')]();});}};}function handleEntityNotFound(_0x524611,_0x4a0a89){return function(_0x5e13f2){if(!_0x5e13f2){_0x524611['sendStatus'](0x194);}return _0x5e13f2;};}function handleError(_0x132b7e,_0x10fbc1){_0x10fbc1=_0x10fbc1||0x1f4;return function(_0x50bd0d){logger['error'](_0x50bd0d[_0x8ec6('0x25')]);if(_0x50bd0d['name']){delete _0x50bd0d[_0x8ec6('0x26')];}_0x132b7e[_0x8ec6('0x18')](_0x10fbc1)[_0x8ec6('0x27')](_0x50bd0d);};}exports[_0x8ec6('0x28')]=function(_0x235d07,_0x3afd8e){var _0x3ca546={},_0x460684={},_0x205606={'count':0x0,'rows':[]};var _0x2c5c19=_[_0x8ec6('0x29')](db[_0x8ec6('0x2a')][_0x8ec6('0x2b')],function(_0xadec1){return{'name':_0xadec1['fieldName'],'type':_0xadec1[_0x8ec6('0x2c')][_0x8ec6('0x2d')]};});_0x460684[_0x8ec6('0x2e')]=_[_0x8ec6('0x29')](_0x2c5c19,_0x8ec6('0x26'));_0x460684[_0x8ec6('0x2f')]=_[_0x8ec6('0x30')](_0x235d07[_0x8ec6('0x2f')]);_0x460684[_0x8ec6('0x31')]=_[_0x8ec6('0x32')](_0x460684['model'],_0x460684[_0x8ec6('0x2f')]);_0x3ca546['attributes']=_[_0x8ec6('0x32')](_0x460684['model'],qs[_0x8ec6('0x33')](_0x235d07['query'][_0x8ec6('0x33')]));_0x3ca546['attributes']=_0x3ca546[_0x8ec6('0x34')][_0x8ec6('0x35')]?_0x3ca546[_0x8ec6('0x34')]:_0x460684[_0x8ec6('0x2e')];if(!_0x235d07[_0x8ec6('0x2f')][_0x8ec6('0x36')]('nolimit')){_0x3ca546[_0x8ec6('0x1b')]=qs['limit'](_0x235d07[_0x8ec6('0x2f')][_0x8ec6('0x1b')]);_0x3ca546['offset']=qs[_0x8ec6('0x1d')](_0x235d07[_0x8ec6('0x2f')][_0x8ec6('0x1d')]);}_0x3ca546['order']=qs[_0x8ec6('0x37')](_0x235d07[_0x8ec6('0x2f')][_0x8ec6('0x37')]);_0x3ca546[_0x8ec6('0x38')]=qs[_0x8ec6('0x31')](_[_0x8ec6('0x39')](_0x235d07['query'],_0x460684[_0x8ec6('0x31')]),_0x2c5c19);if(_0x235d07[_0x8ec6('0x2f')][_0x8ec6('0x3a')]){_0x3ca546[_0x8ec6('0x38')]=_[_0x8ec6('0x3b')](_0x3ca546[_0x8ec6('0x38')],{'$or':_[_0x8ec6('0x29')](_0x2c5c19,function(_0x48cede){if(_0x48cede['type']!=='VIRTUAL'){var _0x536ed6={};_0x536ed6[_0x48cede[_0x8ec6('0x26')]]={'$like':'%'+_0x235d07[_0x8ec6('0x2f')]['filter']+'%'};return _0x536ed6;}})});}_0x3ca546=_[_0x8ec6('0x3b')]({},_0x3ca546,_0x235d07[_0x8ec6('0x3c')]);var _0x967b83={'where':_0x3ca546[_0x8ec6('0x38')]};return db[_0x8ec6('0x2a')][_0x8ec6('0x1c')](_0x967b83)[_0x8ec6('0x22')](function(_0x4766f9){_0x205606[_0x8ec6('0x1c')]=_0x4766f9;if(_0x235d07[_0x8ec6('0x2f')][_0x8ec6('0x3d')]){_0x3ca546[_0x8ec6('0x3e')]=[{'all':!![]}];}return db[_0x8ec6('0x2a')][_0x8ec6('0x3f')](_0x3ca546);})['then'](function(_0x49799e){_0x205606[_0x8ec6('0x40')]=_0x49799e;return _0x205606;})[_0x8ec6('0x22')](respondWithFilteredResult(_0x3afd8e,_0x3ca546))[_0x8ec6('0x41')](handleError(_0x3afd8e,null));};exports[_0x8ec6('0x42')]=function(_0x3f8706,_0x28916a){var _0x211087={'raw':![],'where':{'id':_0x3f8706[_0x8ec6('0x43')]['id']}},_0x22deb6={};_0x22deb6['model']=_[_0x8ec6('0x30')](db[_0x8ec6('0x2a')]['rawAttributes']);_0x22deb6[_0x8ec6('0x2f')]=_[_0x8ec6('0x30')](_0x3f8706[_0x8ec6('0x2f')]);_0x22deb6[_0x8ec6('0x31')]=_[_0x8ec6('0x32')](_0x22deb6[_0x8ec6('0x2e')],_0x22deb6[_0x8ec6('0x2f')]);_0x211087['attributes']=_[_0x8ec6('0x32')](_0x22deb6['model'],qs[_0x8ec6('0x33')](_0x3f8706[_0x8ec6('0x2f')]['fields']));_0x211087[_0x8ec6('0x34')]=_0x211087[_0x8ec6('0x34')][_0x8ec6('0x35')]?_0x211087[_0x8ec6('0x34')]:_0x22deb6['model'];if(_0x3f8706[_0x8ec6('0x2f')][_0x8ec6('0x3d')]){_0x211087[_0x8ec6('0x3e')]=[{'all':!![]}];}_0x211087=_['merge']({},_0x211087,_0x3f8706[_0x8ec6('0x3c')]);return db[_0x8ec6('0x2a')]['find'](_0x211087)['then'](handleEntityNotFound(_0x28916a,null))[_0x8ec6('0x22')](respondWithResult(_0x28916a,null))[_0x8ec6('0x41')](handleError(_0x28916a,null));};exports[_0x8ec6('0x44')]=function(_0x2a4f17,_0x5a248f){return db[_0x8ec6('0x2a')][_0x8ec6('0x44')](_0x2a4f17[_0x8ec6('0x45')],{})['then'](respondWithResult(_0x5a248f,0xc9))[_0x8ec6('0x41')](handleError(_0x5a248f,null));};exports[_0x8ec6('0x21')]=function(_0x656bfe,_0x5b870b){if(_0x656bfe['body']['id']){delete _0x656bfe[_0x8ec6('0x45')]['id'];}return db[_0x8ec6('0x2a')][_0x8ec6('0x46')]({'where':{'id':_0x656bfe[_0x8ec6('0x43')]['id']}})[_0x8ec6('0x22')](handleEntityNotFound(_0x5b870b,null))[_0x8ec6('0x22')](saveUpdates(_0x656bfe[_0x8ec6('0x45')],null))['then'](respondWithResult(_0x5b870b,null))[_0x8ec6('0x41')](handleError(_0x5b870b,null));};exports[_0x8ec6('0x23')]=function(_0x4fef3c,_0xa8bc8f){return db[_0x8ec6('0x2a')][_0x8ec6('0x46')]({'where':{'id':_0x4fef3c[_0x8ec6('0x43')]['id']}})[_0x8ec6('0x22')](handleEntityNotFound(_0xa8bc8f,null))[_0x8ec6('0x22')](removeEntity(_0xa8bc8f,null))['catch'](handleError(_0xa8bc8f,null));};exports[_0x8ec6('0x47')]=function(_0x23e726,_0x22bf8d){return db[_0x8ec6('0x2a')][_0x8ec6('0x47')]()[_0x8ec6('0x22')](respondWithResult(_0x22bf8d,null))[_0x8ec6('0x41')](handleError(_0x22bf8d,null));};
\ No newline at end of file
index 10102c4..c31e695 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1182=['moment','bluebird','request-promise','../../config/environment','./integrationReport.attributes','exports','IntegrationReport','report_integration','lodash','util','../../config/logger'];(function(_0x18ea15,_0x2d4b4c){var _0x7ae35e=function(_0x324a87){while(--_0x324a87){_0x18ea15['push'](_0x18ea15['shift']());}};_0x7ae35e(++_0x2d4b4c);}(_0x1182,0xa2));var _0x2118=function(_0x5970b9,_0x8715e9){_0x5970b9=_0x5970b9-0x0;var _0x102199=_0x1182[_0x5970b9];return _0x102199;};'use strict';var _=require(_0x2118('0x0'));var util=require(_0x2118('0x1'));var logger=require(_0x2118('0x2'))('api');var moment=require(_0x2118('0x3'));var BPromise=require(_0x2118('0x4'));var rp=require(_0x2118('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x2118('0x6'));var attributes=require(_0x2118('0x7'));module[_0x2118('0x8')]=function(_0x35bcb0,_0x2ecc60){return _0x35bcb0['define'](_0x2118('0x9'),attributes,{'tableName':_0x2118('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2973=['IntegrationReport','report_integration','util','api','moment','bluebird','path','rimraf','./integrationReport.attributes','exports'];(function(_0x550d12,_0x5384bd){var _0x12103d=function(_0x2a9834){while(--_0x2a9834){_0x550d12['push'](_0x550d12['shift']());}};_0x12103d(++_0x5384bd);}(_0x2973,0x1d8));var _0x3297=function(_0x39b316,_0x3def1e){_0x39b316=_0x39b316-0x0;var _0x182ab1=_0x2973[_0x39b316];return _0x182ab1;};'use strict';var _=require('lodash');var util=require(_0x3297('0x0'));var logger=require('../../config/logger')(_0x3297('0x1'));var moment=require(_0x3297('0x2'));var BPromise=require(_0x3297('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x3297('0x4'));var rimraf=require(_0x3297('0x5'));var config=require('../../config/environment');var attributes=require(_0x3297('0x6'));module[_0x3297('0x7')]=function(_0x3668d4,_0x1426c2){return _0x3668d4['define'](_0x3297('0x8'),attributes,{'tableName':_0x3297('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 11fd668..1f6667f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x57ca=['client','http','request','info','request\x20sent','IntegrationReport,\x20%s,\x20%s,\x20%s','error','code','IntegrationReport,\x20%s,\x20%s','message','result','catch','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise'];(function(_0x22b3a3,_0x16306f){var _0x391585=function(_0x3faec5){while(--_0x3faec5){_0x22b3a3['push'](_0x22b3a3['shift']());}};_0x391585(++_0x16306f);}(_0x57ca,0x108));var _0xa57c=function(_0x1dd0c7,_0x15da4b){_0x1dd0c7=_0x1dd0c7-0x0;var _0x24bea1=_0x57ca[_0x1dd0c7];return _0x24bea1;};'use strict';var _=require('lodash');var util=require(_0xa57c('0x0'));var moment=require(_0xa57c('0x1'));var BPromise=require('bluebird');var rs=require(_0xa57c('0x2'));var fs=require('fs');var Redis=require(_0xa57c('0x3'));var db=require(_0xa57c('0x4'))['db'];var utils=require(_0xa57c('0x5'));var logger=require(_0xa57c('0x6'))('rpc');var config=require(_0xa57c('0x7'));var jayson=require(_0xa57c('0x8'));var client=jayson[_0xa57c('0x9')][_0xa57c('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xbdfffb,_0x314574,_0x19e28e){return new BPromise(function(_0x271ccc,_0x5e3962){return client[_0xa57c('0xb')](_0xbdfffb,_0x19e28e)['then'](function(_0x46ba92){logger[_0xa57c('0xc')]('IntegrationReport,\x20%s,\x20%s',_0x314574,_0xa57c('0xd'));logger['debug'](_0xa57c('0xe'),_0x314574,_0xa57c('0xd'),JSON['stringify'](_0x46ba92));if(_0x46ba92[_0xa57c('0xf')]){if(_0x46ba92['error'][_0xa57c('0x10')]===0x1f4){logger[_0xa57c('0xf')](_0xa57c('0x11'),_0x314574,_0x46ba92[_0xa57c('0xf')][_0xa57c('0x12')]);return _0x5e3962(_0x46ba92['error'][_0xa57c('0x12')]);}logger['error'](_0xa57c('0x11'),_0x314574,_0x46ba92[_0xa57c('0xf')][_0xa57c('0x12')]);return _0x271ccc(_0x46ba92[_0xa57c('0xf')][_0xa57c('0x12')]);}else{logger[_0xa57c('0xc')](_0xa57c('0x11'),_0x314574,'request\x20sent');_0x271ccc(_0x46ba92[_0xa57c('0x13')][_0xa57c('0x12')]);}})[_0xa57c('0x14')](function(_0x5a6024){logger[_0xa57c('0xf')]('IntegrationReport,\x20%s,\x20%s',_0x314574,_0x5a6024);_0x5e3962(_0x5a6024);});});}
\ No newline at end of file
+var _0x524e=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','IntegrationReport,\x20%s,\x20%s','request\x20sent','debug','IntegrationReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','moment','bluebird'];(function(_0x114d1f,_0x55548e){var _0x5b91d4=function(_0x358415){while(--_0x358415){_0x114d1f['push'](_0x114d1f['shift']());}};_0x5b91d4(++_0x55548e);}(_0x524e,0x15e));var _0xe524=function(_0x579be6,_0x2117ba){_0x579be6=_0x579be6-0x0;var _0x284b7a=_0x524e[_0x579be6];return _0x284b7a;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xe524('0x0'));var BPromise=require(_0xe524('0x1'));var rs=require(_0xe524('0x2'));var fs=require('fs');var Redis=require(_0xe524('0x3'));var db=require(_0xe524('0x4'))['db'];var utils=require(_0xe524('0x5'));var logger=require(_0xe524('0x6'))(_0xe524('0x7'));var config=require(_0xe524('0x8'));var jayson=require(_0xe524('0x9'));var client=jayson['client'][_0xe524('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x41e1a3,_0x347bed,_0x533c14){return new BPromise(function(_0x384935,_0x3e4cda){return client[_0xe524('0xb')](_0x41e1a3,_0x533c14)[_0xe524('0xc')](function(_0x991924){logger[_0xe524('0xd')](_0xe524('0xe'),_0x347bed,_0xe524('0xf'));logger[_0xe524('0x10')](_0xe524('0x11'),_0x347bed,_0xe524('0xf'),JSON[_0xe524('0x12')](_0x991924));if(_0x991924[_0xe524('0x13')]){if(_0x991924[_0xe524('0x13')][_0xe524('0x14')]===0x1f4){logger[_0xe524('0x13')]('IntegrationReport,\x20%s,\x20%s',_0x347bed,_0x991924['error'][_0xe524('0x15')]);return _0x3e4cda(_0x991924[_0xe524('0x13')][_0xe524('0x15')]);}logger[_0xe524('0x13')](_0xe524('0xe'),_0x347bed,_0x991924['error'][_0xe524('0x15')]);return _0x384935(_0x991924['error'][_0xe524('0x15')]);}else{logger[_0xe524('0xd')]('IntegrationReport,\x20%s,\x20%s',_0x347bed,_0xe524('0xf'));_0x384935(_0x991924['result'][_0xe524('0x15')]);}})['catch'](function(_0x29a031){logger['error']('IntegrationReport,\x20%s,\x20%s',_0x347bed,_0x29a031);_0x3e4cda(_0x29a031);});});}
\ No newline at end of file
index fbe4850..08bfcae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8786=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./interval.controller','get','index','isAuthenticated','show','getIntervals','post','addInterval','/:id/sub_intervals/create_many','addIntervals','put','/:id','update','delete','destroy','multer','util','path'];(function(_0x47b58b,_0x41a189){var _0x46bebe=function(_0x22bbfa){while(--_0x22bbfa){_0x47b58b['push'](_0x47b58b['shift']());}};_0x46bebe(++_0x41a189);}(_0x8786,0x7a));var _0x6878=function(_0x4b055c,_0x4b870b){_0x4b055c=_0x4b055c-0x0;var _0x4b62bb=_0x8786[_0x4b055c];return _0x4b62bb;};'use strict';var multer=require(_0x6878('0x0'));var util=require(_0x6878('0x1'));var path=require(_0x6878('0x2'));var timeout=require(_0x6878('0x3'));var express=require(_0x6878('0x4'));var router=express[_0x6878('0x5')]();var fs_extra=require(_0x6878('0x6'));var auth=require(_0x6878('0x7'));var interaction=require(_0x6878('0x8'));var config=require(_0x6878('0x9'));var controller=require(_0x6878('0xa'));router[_0x6878('0xb')]('/',auth['isAuthenticated'](),controller[_0x6878('0xc')]);router[_0x6878('0xb')]('/:id',auth[_0x6878('0xd')](),controller[_0x6878('0xe')]);router[_0x6878('0xb')]('/:id/sub_intervals',auth[_0x6878('0xd')](),controller[_0x6878('0xf')]);router[_0x6878('0x10')]('/',auth[_0x6878('0xd')](),controller['create']);router[_0x6878('0x10')]('/:id/sub_intervals',auth[_0x6878('0xd')](),controller[_0x6878('0x11')]);router[_0x6878('0x10')](_0x6878('0x12'),auth[_0x6878('0xd')](),controller[_0x6878('0x13')]);router[_0x6878('0x14')](_0x6878('0x15'),auth[_0x6878('0xd')](),controller[_0x6878('0x16')]);router[_0x6878('0x17')](_0x6878('0x15'),auth[_0x6878('0xd')](),controller[_0x6878('0x18')]);module['exports']=router;
\ No newline at end of file
+var _0x0dd6=['put','update','/:id','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./interval.controller','isAuthenticated','get','show','/:id/sub_intervals','getIntervals','post','addInterval','/:id/sub_intervals/create_many','addIntervals'];(function(_0xd5d2e4,_0x1d1720){var _0x3b66f3=function(_0x104717){while(--_0x104717){_0xd5d2e4['push'](_0xd5d2e4['shift']());}};_0x3b66f3(++_0x1d1720);}(_0x0dd6,0xca));var _0x60dd=function(_0x5601d5,_0x33c92b){_0x5601d5=_0x5601d5-0x0;var _0x2663f2=_0x0dd6[_0x5601d5];return _0x2663f2;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x60dd('0x0'));var timeout=require(_0x60dd('0x1'));var express=require(_0x60dd('0x2'));var router=express[_0x60dd('0x3')]();var fs_extra=require(_0x60dd('0x4'));var auth=require(_0x60dd('0x5'));var interaction=require(_0x60dd('0x6'));var config=require(_0x60dd('0x7'));var controller=require(_0x60dd('0x8'));router['get']('/',auth[_0x60dd('0x9')](),controller['index']);router[_0x60dd('0xa')]('/:id',auth[_0x60dd('0x9')](),controller[_0x60dd('0xb')]);router[_0x60dd('0xa')](_0x60dd('0xc'),auth[_0x60dd('0x9')](),controller[_0x60dd('0xd')]);router[_0x60dd('0xe')]('/',auth[_0x60dd('0x9')](),controller['create']);router[_0x60dd('0xe')](_0x60dd('0xc'),auth[_0x60dd('0x9')](),controller[_0x60dd('0xf')]);router[_0x60dd('0xe')](_0x60dd('0x10'),auth['isAuthenticated'](),controller[_0x60dd('0x11')]);router[_0x60dd('0x12')]('/:id',auth[_0x60dd('0x9')](),controller[_0x60dd('0x13')]);router['delete'](_0x60dd('0x14'),auth[_0x60dd('0x9')](),controller['destroy']);module[_0x60dd('0x15')]=router;
\ No newline at end of file
index 36deae4..24499dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x36f9=['STRING','exports'];(function(_0x1eaeb0,_0x876064){var _0x3570f2=function(_0x459d8a){while(--_0x459d8a){_0x1eaeb0['push'](_0x1eaeb0['shift']());}};_0x3570f2(++_0x876064);}(_0x36f9,0x12f));var _0x936f=function(_0xfdcf53,_0x359466){_0xfdcf53=_0xfdcf53-0x0;var _0x1957d2=_0x36f9[_0xfdcf53];return _0x1957d2;};'use strict';var Sequelize=require('sequelize');module[_0x936f('0x0')]={'name':{'type':Sequelize[_0x936f('0x1')]},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0x936f('0x1')],'allowNull':!![]}};
\ No newline at end of file
+var _0xce99=['sequelize','exports','STRING'];(function(_0x4bf96c,_0x4d24fd){var _0x281d09=function(_0x56538e){while(--_0x56538e){_0x4bf96c['push'](_0x4bf96c['shift']());}};_0x281d09(++_0x4d24fd);}(_0xce99,0x189));var _0x9ce9=function(_0xca428c,_0x24d345){_0xca428c=_0xca428c-0x0;var _0x1cd7ab=_0xce99[_0xca428c];return _0x1cd7ab;};'use strict';var Sequelize=require(_0x9ce9('0x0'));module[_0x9ce9('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x9ce9('0x2')]},'interval':{'type':Sequelize[_0x9ce9('0x2')],'allowNull':!![]}};
\ No newline at end of file
index fd82f7c..1c01566 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2beb=['catch','show','keys','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','body','params','addInterval','IntervalId','getIntervals','findOne','order','sequelize','transaction','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','path','sox','to-csv','fs-extra','lodash','jsforce','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','../../components/extensions/rewrite','status','end','json','offset','limit','undefined','count','set','Content-Range','update','then','destroy','get','Intervals','sendStatus','error','stack','name','send','map','Interval','rawAttributes','fieldName','key','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','type','VIRTUAL','includeAll','include','findAll','rows'];(function(_0x3b8432,_0x438ad8){var _0x4ba4b9=function(_0x28409f){while(--_0x28409f){_0x3b8432['push'](_0x3b8432['shift']());}};_0x4ba4b9(++_0x438ad8);}(_0x2beb,0x1be));var _0xb2be=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0x2beb[_0x2c91e9];return _0x13f0ff;};'use strict';var emlformat=require(_0xb2be('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xb2be('0x1'));var jsonpatch=require(_0xb2be('0x2'));var rp=require(_0xb2be('0x3'));var moment=require('moment');var BPromise=require(_0xb2be('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0xb2be('0x5'));var sox=require(_0xb2be('0x6'));var csv=require(_0xb2be('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb2be('0x8'));var _=require(_0xb2be('0x9'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xb2be('0xa'));var deskjs=require('desk.js');var toCsv=require(_0xb2be('0x7'));var querystring=require(_0xb2be('0xb'));var Papa=require('papaparse');var Redis=require(_0xb2be('0xc'));var authService=require('../../components/auth/service');var qs=require(_0xb2be('0xd'));var as=require(_0xb2be('0xe'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xb2be('0xf'))('api');var utils=require('../../config/utils');var config=require(_0xb2be('0x10'));var licenseUtil=require(_0xb2be('0x11'));var db=require(_0xb2be('0x12'))['db'];var extensions=require(_0xb2be('0x13'));function respondWithStatusCode(_0x2e43cd,_0x265558){_0x265558=_0x265558||0xcc;return function(_0x10ae38){if(_0x10ae38){return _0x2e43cd['sendStatus'](_0x265558);}return _0x2e43cd[_0xb2be('0x14')](_0x265558)[_0xb2be('0x15')]();};}function respondWithResult(_0x3e2068,_0x58fe2e){_0x58fe2e=_0x58fe2e||0xc8;return function(_0x315ded){if(_0x315ded){return _0x3e2068[_0xb2be('0x14')](_0x58fe2e)[_0xb2be('0x16')](_0x315ded);}};}function respondWithFilteredResult(_0x1eedbe,_0x30e0ba){return function(_0xe9edfd){if(_0xe9edfd){var _0x2b41a1=typeof _0x30e0ba[_0xb2be('0x17')]==='undefined'&&typeof _0x30e0ba[_0xb2be('0x18')]===_0xb2be('0x19');var _0x4abb1c=_0xe9edfd[_0xb2be('0x1a')];var _0x3f7ae6=_0x2b41a1?0x0:_0x30e0ba[_0xb2be('0x17')];var _0x42fd42=_0x2b41a1?_0xe9edfd[_0xb2be('0x1a')]:_0x30e0ba['offset']+_0x30e0ba[_0xb2be('0x18')];var _0x11becf;if(_0x42fd42>=_0x4abb1c){_0x42fd42=_0x4abb1c;_0x11becf=0xc8;}else{_0x11becf=0xce;}_0x1eedbe['status'](_0x11becf);return _0x1eedbe[_0xb2be('0x1b')](_0xb2be('0x1c'),_0x3f7ae6+'-'+_0x42fd42+'/'+_0x4abb1c)[_0xb2be('0x16')](_0xe9edfd);}return null;};}function patchUpdates(_0x573280){return function(_0x5445b9){try{jsonpatch['apply'](_0x5445b9,_0x573280,!![]);}catch(_0x35394a){return BPromise['reject'](_0x35394a);}return _0x5445b9['save']();};}function saveUpdates(_0x52d8c6,_0x240e9e){return function(_0x357bc0){if(_0x357bc0){return _0x357bc0[_0xb2be('0x1d')](_0x52d8c6)[_0xb2be('0x1e')](function(_0x15f80f){return _0x15f80f;});}return null;};}function removeEntity(_0x52745f,_0x1e9153){return function(_0x98691a){if(_0x98691a){return _0x98691a[_0xb2be('0x1f')]()[_0xb2be('0x1e')](function(){var _0xb9a5e5=_0x98691a[_0xb2be('0x20')]({'plain':!![]});var _0x539a83=_0xb2be('0x21');return db['UserProfileResource']['destroy']({'where':{'type':_0x539a83,'resourceId':_0xb9a5e5['id']}})[_0xb2be('0x1e')](function(){return _0x98691a;});})[_0xb2be('0x1e')](function(){_0x52745f[_0xb2be('0x14')](0xcc)[_0xb2be('0x15')]();});}};}function handleEntityNotFound(_0x1fe71a,_0xace372){return function(_0x448a18){if(!_0x448a18){_0x1fe71a[_0xb2be('0x22')](0x194);}return _0x448a18;};}function handleError(_0xf2cc87,_0x56b362){_0x56b362=_0x56b362||0x1f4;return function(_0x156992){logger[_0xb2be('0x23')](_0x156992[_0xb2be('0x24')]);if(_0x156992[_0xb2be('0x25')]){delete _0x156992[_0xb2be('0x25')];}_0xf2cc87[_0xb2be('0x14')](_0x56b362)[_0xb2be('0x26')](_0x156992);};}exports['index']=function(_0x551654,_0x58ee70){var _0x4e186b={},_0x85d91a={},_0x12156d={'count':0x0,'rows':[]};var _0x5a127a=_[_0xb2be('0x27')](db[_0xb2be('0x28')][_0xb2be('0x29')],function(_0xa6ffa3){return{'name':_0xa6ffa3[_0xb2be('0x2a')],'type':_0xa6ffa3['type'][_0xb2be('0x2b')]};});_0x85d91a['model']=_[_0xb2be('0x27')](_0x5a127a,_0xb2be('0x25'));_0x85d91a['query']=_['keys'](_0x551654[_0xb2be('0x2c')]);_0x85d91a[_0xb2be('0x2d')]=_[_0xb2be('0x2e')](_0x85d91a[_0xb2be('0x2f')],_0x85d91a[_0xb2be('0x2c')]);_0x4e186b[_0xb2be('0x30')]=_[_0xb2be('0x2e')](_0x85d91a[_0xb2be('0x2f')],qs[_0xb2be('0x31')](_0x551654['query']['fields']));_0x4e186b['attributes']=_0x4e186b[_0xb2be('0x30')][_0xb2be('0x32')]?_0x4e186b[_0xb2be('0x30')]:_0x85d91a[_0xb2be('0x2f')];if(!_0x551654[_0xb2be('0x2c')][_0xb2be('0x33')](_0xb2be('0x34'))){_0x4e186b[_0xb2be('0x18')]=qs['limit'](_0x551654['query'][_0xb2be('0x18')]);_0x4e186b[_0xb2be('0x17')]=qs[_0xb2be('0x17')](_0x551654['query'][_0xb2be('0x17')]);}_0x4e186b['order']=qs[_0xb2be('0x35')](_0x551654[_0xb2be('0x2c')][_0xb2be('0x35')]);_0x4e186b[_0xb2be('0x36')]=qs['filters'](_[_0xb2be('0x37')](_0x551654['query'],_0x85d91a['filters']),_0x5a127a);if(_0x551654[_0xb2be('0x2c')][_0xb2be('0x38')]){_0x4e186b['where']=_[_0xb2be('0x39')](_0x4e186b[_0xb2be('0x36')],{'$or':_[_0xb2be('0x27')](_0x5a127a,function(_0x4a6ef5){if(_0x4a6ef5[_0xb2be('0x3a')]!==_0xb2be('0x3b')){var _0x4ce928={};_0x4ce928[_0x4a6ef5[_0xb2be('0x25')]]={'$like':'%'+_0x551654['query']['filter']+'%'};return _0x4ce928;}})});}_0x4e186b=_['merge']({},_0x4e186b,_0x551654['options']);var _0x40d43f={'where':_0x4e186b[_0xb2be('0x36')]};return db[_0xb2be('0x28')]['count'](_0x40d43f)[_0xb2be('0x1e')](function(_0x2e2899){_0x12156d[_0xb2be('0x1a')]=_0x2e2899;if(_0x551654['query'][_0xb2be('0x3c')]){_0x4e186b[_0xb2be('0x3d')]=[{'all':!![]}];}return db[_0xb2be('0x28')][_0xb2be('0x3e')](_0x4e186b);})[_0xb2be('0x1e')](function(_0xd7e501){_0x12156d[_0xb2be('0x3f')]=_0xd7e501;return _0x12156d;})[_0xb2be('0x1e')](respondWithFilteredResult(_0x58ee70,_0x4e186b))[_0xb2be('0x40')](handleError(_0x58ee70,null));};exports[_0xb2be('0x41')]=function(_0x197977,_0x5e460f){var _0x29a51c={'raw':!![],'where':{'id':_0x197977['params']['id']}},_0x329d83={};_0x329d83[_0xb2be('0x2f')]=_[_0xb2be('0x42')](db['Interval'][_0xb2be('0x29')]);_0x329d83[_0xb2be('0x2c')]=_[_0xb2be('0x42')](_0x197977[_0xb2be('0x2c')]);_0x329d83[_0xb2be('0x2d')]=_[_0xb2be('0x2e')](_0x329d83['model'],_0x329d83[_0xb2be('0x2c')]);_0x29a51c[_0xb2be('0x30')]=_[_0xb2be('0x2e')](_0x329d83[_0xb2be('0x2f')],qs[_0xb2be('0x31')](_0x197977[_0xb2be('0x2c')]['fields']));_0x29a51c[_0xb2be('0x30')]=_0x29a51c[_0xb2be('0x30')][_0xb2be('0x32')]?_0x29a51c[_0xb2be('0x30')]:_0x329d83[_0xb2be('0x2f')];if(_0x197977[_0xb2be('0x2c')][_0xb2be('0x3c')]){_0x29a51c['include']=[{'all':!![]}];}_0x29a51c=_['merge']({},_0x29a51c,_0x197977['options']);return db[_0xb2be('0x28')][_0xb2be('0x43')](_0x29a51c)[_0xb2be('0x1e')](handleEntityNotFound(_0x5e460f,null))['then'](respondWithResult(_0x5e460f,null))['catch'](handleError(_0x5e460f,null));};exports['create']=function(_0x1443c0,_0x45e43d){return db[_0xb2be('0x28')][_0xb2be('0x44')](_0x1443c0['body'],{})['then'](function(_0x4aef72){var _0x3b1880=_0x1443c0[_0xb2be('0x45')][_0xb2be('0x20')]({'plain':!![]});if(!_0x3b1880)throw new Error(_0xb2be('0x46'));if(_0x3b1880[_0xb2be('0x47')]===_0xb2be('0x45')){var _0xabef33=_0x4aef72['get']({'plain':!![]});var _0x19050c=_0xb2be('0x21');return db[_0xb2be('0x48')][_0xb2be('0x43')]({'where':{'name':_0x19050c,'userProfileId':_0x3b1880[_0xb2be('0x49')]},'raw':!![]})[_0xb2be('0x1e')](function(_0x9795f5){if(_0x9795f5&&_0x9795f5[_0xb2be('0x4a')]===0x0){return db[_0xb2be('0x4b')][_0xb2be('0x44')]({'name':_0xabef33[_0xb2be('0x25')],'resourceId':_0xabef33['id'],'type':_0x9795f5[_0xb2be('0x25')],'sectionId':_0x9795f5['id']},{})[_0xb2be('0x1e')](function(){return _0x4aef72;});}else{return _0x4aef72;}})[_0xb2be('0x40')](function(_0x32b1e2){logger[_0xb2be('0x23')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x32b1e2);throw _0x32b1e2;});}return _0x4aef72;})[_0xb2be('0x1e')](respondWithResult(_0x45e43d,0xc9))[_0xb2be('0x40')](handleError(_0x45e43d,null));};exports[_0xb2be('0x1d')]=function(_0x569545,_0x269208){if(_0x569545['body']['id']){delete _0x569545[_0xb2be('0x4c')]['id'];}return db['Interval'][_0xb2be('0x43')]({'where':{'id':_0x569545[_0xb2be('0x4d')]['id']}})[_0xb2be('0x1e')](handleEntityNotFound(_0x269208,null))[_0xb2be('0x1e')](saveUpdates(_0x569545[_0xb2be('0x4c')],null))[_0xb2be('0x1e')](respondWithResult(_0x269208,null))[_0xb2be('0x40')](handleError(_0x269208,null));};exports['destroy']=function(_0x5a4dde,_0x16862d){return db[_0xb2be('0x28')][_0xb2be('0x43')]({'where':{'id':_0x5a4dde['params']['id']}})[_0xb2be('0x1e')](handleEntityNotFound(_0x16862d,null))[_0xb2be('0x1e')](removeEntity(_0x16862d,null))[_0xb2be('0x40')](handleError(_0x16862d,null));};exports[_0xb2be('0x4e')]=function(_0x51c9ec,_0x578a81,_0x55b2b5){if(_0x51c9ec[_0xb2be('0x4c')]['id']){delete _0x51c9ec['body']['id'];}return db[_0xb2be('0x28')][_0xb2be('0x43')]({'where':{'id':_0x51c9ec['params']['id']}})[_0xb2be('0x1e')](handleEntityNotFound(_0x578a81,null))['then'](function(_0x56276d){if(_0x56276d){_0x51c9ec[_0xb2be('0x4c')][_0xb2be('0x4f')]=_0x56276d['id'];return db[_0xb2be('0x28')][_0xb2be('0x44')](_0x51c9ec[_0xb2be('0x4c')]);}})[_0xb2be('0x1e')](respondWithResult(_0x578a81,null))[_0xb2be('0x40')](handleError(_0x578a81,null));};exports[_0xb2be('0x50')]=function(_0x4abe14,_0x8b32b8,_0x11bd5d){var _0x40a3a2={};var _0x32ee58={};var _0x1edafe;var _0x2d261e;return db[_0xb2be('0x28')][_0xb2be('0x51')]({'where':{'id':_0x4abe14[_0xb2be('0x4d')]['id']}})[_0xb2be('0x1e')](handleEntityNotFound(_0x8b32b8,null))[_0xb2be('0x1e')](function(_0x300025){if(_0x300025){_0x1edafe=_0x300025;_0x32ee58[_0xb2be('0x2f')]=_[_0xb2be('0x42')](db[_0xb2be('0x28')][_0xb2be('0x29')]);_0x32ee58[_0xb2be('0x2c')]=_[_0xb2be('0x42')](_0x4abe14['query']);_0x32ee58[_0xb2be('0x2d')]=_['intersection'](_0x32ee58[_0xb2be('0x2f')],_0x32ee58[_0xb2be('0x2c')]);_0x40a3a2[_0xb2be('0x30')]=_['intersection'](_0x32ee58[_0xb2be('0x2f')],qs[_0xb2be('0x31')](_0x4abe14[_0xb2be('0x2c')][_0xb2be('0x31')]));_0x40a3a2[_0xb2be('0x30')]=_0x40a3a2[_0xb2be('0x30')][_0xb2be('0x32')]?_0x40a3a2[_0xb2be('0x30')]:_0x32ee58[_0xb2be('0x2f')];_0x40a3a2[_0xb2be('0x52')]=qs[_0xb2be('0x35')](_0x4abe14[_0xb2be('0x2c')]['sort']);_0x40a3a2['where']=qs[_0xb2be('0x2d')](_[_0xb2be('0x37')](_0x4abe14[_0xb2be('0x2c')],_0x32ee58[_0xb2be('0x2d')]));if(_0x4abe14['query']['filter']){_0x40a3a2[_0xb2be('0x36')]=_[_0xb2be('0x39')](_0x40a3a2[_0xb2be('0x36')],{'$or':_[_0xb2be('0x27')](_0x40a3a2['attributes'],function(_0x2636b3){var _0x580a0a={};_0x580a0a[_0x2636b3]={'$like':'%'+_0x4abe14[_0xb2be('0x2c')][_0xb2be('0x38')]+'%'};return _0x580a0a;})});}_0x40a3a2=_['merge']({},_0x40a3a2,_0x4abe14['options']);return _0x1edafe[_0xb2be('0x50')](_0x40a3a2);}})[_0xb2be('0x1e')](function(_0x482ca0){if(_0x482ca0){_0x2d261e=_0x482ca0['length'];if(!_0x4abe14['query'][_0xb2be('0x33')]('nolimit')){_0x40a3a2[_0xb2be('0x18')]=qs[_0xb2be('0x18')](_0x4abe14[_0xb2be('0x2c')][_0xb2be('0x18')]);_0x40a3a2[_0xb2be('0x17')]=qs[_0xb2be('0x17')](_0x4abe14['query'][_0xb2be('0x17')]);}return _0x1edafe[_0xb2be('0x50')](_0x40a3a2);}})[_0xb2be('0x1e')](function(_0x469997){if(_0x469997){return _0x469997?{'count':_0x2d261e,'rows':_0x469997}:null;}})[_0xb2be('0x1e')](respondWithResult(_0x8b32b8,null))[_0xb2be('0x40')](handleError(_0x8b32b8,null));};exports['addIntervals']=function(_0x4ef4e2,_0x4ec020,_0x5c4f08){return db[_0xb2be('0x28')][_0xb2be('0x51')]({'where':{'id':_0x4ef4e2[_0xb2be('0x4d')]['id']}})[_0xb2be('0x1e')](handleEntityNotFound(_0x4ec020,null))[_0xb2be('0x1e')](function(_0x2bb6a6){if(_0x2bb6a6){return db[_0xb2be('0x53')][_0xb2be('0x54')](function(_0x58daaf){return db[_0xb2be('0x28')][_0xb2be('0x1f')]({'where':{'IntervalId':_0x4ef4e2['params']['id']},'transaction':_0x58daaf})['then'](function(_0x34f9e0){var _0x13d91b=_[_0xb2be('0x27')](_0x4ef4e2['body'],function(_0x33e90f){delete _0x33e90f['id'];_0x33e90f['IntervalId']=_0x4ef4e2[_0xb2be('0x4d')]['id'];return _0x33e90f;});return db[_0xb2be('0x28')]['bulkCreate'](_0x13d91b,{'transaction':_0x58daaf});});})[_0xb2be('0x1e')](function(){return db['Interval'][_0xb2be('0x3e')]({'where':{'IntervalId':_0x4ef4e2[_0xb2be('0x4d')]['id']}});});}})[_0xb2be('0x1e')](respondWithResult(_0x4ec020,null))[_0xb2be('0x40')](handleError(_0x4ec020,null));};
\ No newline at end of file
+var _0xcc43=['reject','save','update','destroy','then','get','UserProfileResource','error','stack','name','index','Interval','rawAttributes','type','model','map','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filters','pick','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','length','include','merge','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','Intervals','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getIntervals','findOne','filter','transaction','IntervalId','bulkCreate','eml-format','rimraf','zip-dir','fast-json-patch','mustache','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','../../components/extensions/rewrite','sendStatus','status','end','offset','limit','count'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0xcc43,0x12c));var _0x3cc4=function(_0x519151,_0x4f2b94){_0x519151=_0x519151-0x0;var _0x438307=_0xcc43[_0x519151];return _0x438307;};'use strict';var emlformat=require(_0x3cc4('0x0'));var rimraf=require(_0x3cc4('0x1'));var zipdir=require(_0x3cc4('0x2'));var jsonpatch=require(_0x3cc4('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x3cc4('0x4'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x3cc4('0x5'));var ejs=require(_0x3cc4('0x6'));var fs=require('fs');var fs_extra=require(_0x3cc4('0x7'));var _=require(_0x3cc4('0x8'));var squel=require(_0x3cc4('0x9'));var crypto=require(_0x3cc4('0xa'));var jsforce=require(_0x3cc4('0xb'));var deskjs=require(_0x3cc4('0xc'));var toCsv=require(_0x3cc4('0x5'));var querystring=require(_0x3cc4('0xd'));var Papa=require(_0x3cc4('0xe'));var Redis=require(_0x3cc4('0xf'));var authService=require(_0x3cc4('0x10'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x3cc4('0x11'))('api');var utils=require(_0x3cc4('0x12'));var config=require(_0x3cc4('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x3cc4('0x14'))['db'];var extensions=require(_0x3cc4('0x15'));function respondWithStatusCode(_0x530c78,_0x187134){_0x187134=_0x187134||0xcc;return function(_0x134c7b){if(_0x134c7b){return _0x530c78[_0x3cc4('0x16')](_0x187134);}return _0x530c78[_0x3cc4('0x17')](_0x187134)[_0x3cc4('0x18')]();};}function respondWithResult(_0x460c6c,_0x8f49b8){_0x8f49b8=_0x8f49b8||0xc8;return function(_0x4ac834){if(_0x4ac834){return _0x460c6c[_0x3cc4('0x17')](_0x8f49b8)['json'](_0x4ac834);}};}function respondWithFilteredResult(_0x469106,_0x47f2d0){return function(_0x232161){if(_0x232161){var _0x11a1cb=typeof _0x47f2d0[_0x3cc4('0x19')]==='undefined'&&typeof _0x47f2d0[_0x3cc4('0x1a')]==='undefined';var _0x287ad8=_0x232161['count'];var _0x34d760=_0x11a1cb?0x0:_0x47f2d0[_0x3cc4('0x19')];var _0xbb7a86=_0x11a1cb?_0x232161[_0x3cc4('0x1b')]:_0x47f2d0[_0x3cc4('0x19')]+_0x47f2d0[_0x3cc4('0x1a')];var _0x58dec5;if(_0xbb7a86>=_0x287ad8){_0xbb7a86=_0x287ad8;_0x58dec5=0xc8;}else{_0x58dec5=0xce;}_0x469106[_0x3cc4('0x17')](_0x58dec5);return _0x469106['set']('Content-Range',_0x34d760+'-'+_0xbb7a86+'/'+_0x287ad8)['json'](_0x232161);}return null;};}function patchUpdates(_0x31a2c3){return function(_0x1445c9){try{jsonpatch['apply'](_0x1445c9,_0x31a2c3,!![]);}catch(_0xbccb51){return BPromise[_0x3cc4('0x1c')](_0xbccb51);}return _0x1445c9[_0x3cc4('0x1d')]();};}function saveUpdates(_0x383c75,_0x28486b){return function(_0x44cdf0){if(_0x44cdf0){return _0x44cdf0[_0x3cc4('0x1e')](_0x383c75)['then'](function(_0x5db22f){return _0x5db22f;});}return null;};}function removeEntity(_0x78cf5f,_0x30266c){return function(_0x3af162){if(_0x3af162){return _0x3af162[_0x3cc4('0x1f')]()[_0x3cc4('0x20')](function(){var _0x213ff0=_0x3af162[_0x3cc4('0x21')]({'plain':!![]});var _0x4943a4='Intervals';return db[_0x3cc4('0x22')][_0x3cc4('0x1f')]({'where':{'type':_0x4943a4,'resourceId':_0x213ff0['id']}})[_0x3cc4('0x20')](function(){return _0x3af162;});})[_0x3cc4('0x20')](function(){_0x78cf5f[_0x3cc4('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x84dc41,_0x5b392a){return function(_0x2bd51c){if(!_0x2bd51c){_0x84dc41[_0x3cc4('0x16')](0x194);}return _0x2bd51c;};}function handleError(_0x16d061,_0xcf5ced){_0xcf5ced=_0xcf5ced||0x1f4;return function(_0x2667cc){logger[_0x3cc4('0x23')](_0x2667cc[_0x3cc4('0x24')]);if(_0x2667cc[_0x3cc4('0x25')]){delete _0x2667cc[_0x3cc4('0x25')];}_0x16d061[_0x3cc4('0x17')](_0xcf5ced)['send'](_0x2667cc);};}exports[_0x3cc4('0x26')]=function(_0x5a3f94,_0x4fcae0){var _0x2cce69={},_0x241b6e={},_0x4248f0={'count':0x0,'rows':[]};var _0x57b0b6=_['map'](db[_0x3cc4('0x27')][_0x3cc4('0x28')],function(_0x345193){return{'name':_0x345193['fieldName'],'type':_0x345193[_0x3cc4('0x29')]['key']};});_0x241b6e[_0x3cc4('0x2a')]=_[_0x3cc4('0x2b')](_0x57b0b6,_0x3cc4('0x25'));_0x241b6e[_0x3cc4('0x2c')]=_[_0x3cc4('0x2d')](_0x5a3f94[_0x3cc4('0x2c')]);_0x241b6e['filters']=_[_0x3cc4('0x2e')](_0x241b6e['model'],_0x241b6e[_0x3cc4('0x2c')]);_0x2cce69[_0x3cc4('0x2f')]=_[_0x3cc4('0x2e')](_0x241b6e[_0x3cc4('0x2a')],qs[_0x3cc4('0x30')](_0x5a3f94[_0x3cc4('0x2c')][_0x3cc4('0x30')]));_0x2cce69[_0x3cc4('0x2f')]=_0x2cce69['attributes']['length']?_0x2cce69[_0x3cc4('0x2f')]:_0x241b6e['model'];if(!_0x5a3f94['query'][_0x3cc4('0x31')](_0x3cc4('0x32'))){_0x2cce69[_0x3cc4('0x1a')]=qs[_0x3cc4('0x1a')](_0x5a3f94[_0x3cc4('0x2c')][_0x3cc4('0x1a')]);_0x2cce69[_0x3cc4('0x19')]=qs[_0x3cc4('0x19')](_0x5a3f94[_0x3cc4('0x2c')]['offset']);}_0x2cce69[_0x3cc4('0x33')]=qs['sort'](_0x5a3f94[_0x3cc4('0x2c')][_0x3cc4('0x34')]);_0x2cce69[_0x3cc4('0x35')]=qs[_0x3cc4('0x36')](_[_0x3cc4('0x37')](_0x5a3f94[_0x3cc4('0x2c')],_0x241b6e['filters']),_0x57b0b6);if(_0x5a3f94[_0x3cc4('0x2c')]['filter']){_0x2cce69[_0x3cc4('0x35')]=_['merge'](_0x2cce69[_0x3cc4('0x35')],{'$or':_[_0x3cc4('0x2b')](_0x57b0b6,function(_0xee2c2e){if(_0xee2c2e[_0x3cc4('0x29')]!==_0x3cc4('0x38')){var _0x5dc6c1={};_0x5dc6c1[_0xee2c2e[_0x3cc4('0x25')]]={'$like':'%'+_0x5a3f94[_0x3cc4('0x2c')]['filter']+'%'};return _0x5dc6c1;}})});}_0x2cce69=_['merge']({},_0x2cce69,_0x5a3f94[_0x3cc4('0x39')]);var _0x138eef={'where':_0x2cce69[_0x3cc4('0x35')]};return db[_0x3cc4('0x27')]['count'](_0x138eef)[_0x3cc4('0x20')](function(_0x58a088){_0x4248f0[_0x3cc4('0x1b')]=_0x58a088;if(_0x5a3f94[_0x3cc4('0x2c')][_0x3cc4('0x3a')]){_0x2cce69['include']=[{'all':!![]}];}return db['Interval'][_0x3cc4('0x3b')](_0x2cce69);})['then'](function(_0x147015){_0x4248f0[_0x3cc4('0x3c')]=_0x147015;return _0x4248f0;})[_0x3cc4('0x20')](respondWithFilteredResult(_0x4fcae0,_0x2cce69))[_0x3cc4('0x3d')](handleError(_0x4fcae0,null));};exports[_0x3cc4('0x3e')]=function(_0x3e6792,_0x13a6b8){var _0x2d9877={'raw':!![],'where':{'id':_0x3e6792[_0x3cc4('0x3f')]['id']}},_0x28a7d4={};_0x28a7d4[_0x3cc4('0x2a')]=_[_0x3cc4('0x2d')](db['Interval'][_0x3cc4('0x28')]);_0x28a7d4[_0x3cc4('0x2c')]=_[_0x3cc4('0x2d')](_0x3e6792[_0x3cc4('0x2c')]);_0x28a7d4['filters']=_['intersection'](_0x28a7d4[_0x3cc4('0x2a')],_0x28a7d4[_0x3cc4('0x2c')]);_0x2d9877[_0x3cc4('0x2f')]=_['intersection'](_0x28a7d4['model'],qs['fields'](_0x3e6792[_0x3cc4('0x2c')][_0x3cc4('0x30')]));_0x2d9877['attributes']=_0x2d9877[_0x3cc4('0x2f')][_0x3cc4('0x40')]?_0x2d9877['attributes']:_0x28a7d4[_0x3cc4('0x2a')];if(_0x3e6792['query'][_0x3cc4('0x3a')]){_0x2d9877[_0x3cc4('0x41')]=[{'all':!![]}];}_0x2d9877=_[_0x3cc4('0x42')]({},_0x2d9877,_0x3e6792['options']);return db[_0x3cc4('0x27')][_0x3cc4('0x43')](_0x2d9877)[_0x3cc4('0x20')](handleEntityNotFound(_0x13a6b8,null))[_0x3cc4('0x20')](respondWithResult(_0x13a6b8,null))['catch'](handleError(_0x13a6b8,null));};exports[_0x3cc4('0x44')]=function(_0x135eae,_0x283c00){return db[_0x3cc4('0x27')][_0x3cc4('0x44')](_0x135eae[_0x3cc4('0x45')],{})[_0x3cc4('0x20')](function(_0x5c8b55){var _0x1fb71c=_0x135eae['user'][_0x3cc4('0x21')]({'plain':!![]});if(!_0x1fb71c)throw new Error(_0x3cc4('0x46'));if(_0x1fb71c[_0x3cc4('0x47')]===_0x3cc4('0x48')){var _0xc48cf8=_0x5c8b55[_0x3cc4('0x21')]({'plain':!![]});var _0xa9b6fe=_0x3cc4('0x49');return db['UserProfileSection'][_0x3cc4('0x43')]({'where':{'name':_0xa9b6fe,'userProfileId':_0x1fb71c['userProfileId']},'raw':!![]})['then'](function(_0x21110a){if(_0x21110a&&_0x21110a[_0x3cc4('0x4a')]===0x0){return db[_0x3cc4('0x22')][_0x3cc4('0x44')]({'name':_0xc48cf8[_0x3cc4('0x25')],'resourceId':_0xc48cf8['id'],'type':_0x21110a[_0x3cc4('0x25')],'sectionId':_0x21110a['id']},{})['then'](function(){return _0x5c8b55;});}else{return _0x5c8b55;}})[_0x3cc4('0x3d')](function(_0x4f5285){logger['error'](_0x3cc4('0x4b'),_0x4f5285);throw _0x4f5285;});}return _0x5c8b55;})[_0x3cc4('0x20')](respondWithResult(_0x283c00,0xc9))[_0x3cc4('0x3d')](handleError(_0x283c00,null));};exports[_0x3cc4('0x1e')]=function(_0x5de47d,_0x16303c){if(_0x5de47d[_0x3cc4('0x45')]['id']){delete _0x5de47d[_0x3cc4('0x45')]['id'];}return db[_0x3cc4('0x27')][_0x3cc4('0x43')]({'where':{'id':_0x5de47d[_0x3cc4('0x3f')]['id']}})['then'](handleEntityNotFound(_0x16303c,null))['then'](saveUpdates(_0x5de47d[_0x3cc4('0x45')],null))[_0x3cc4('0x20')](respondWithResult(_0x16303c,null))[_0x3cc4('0x3d')](handleError(_0x16303c,null));};exports[_0x3cc4('0x1f')]=function(_0x7a5ab0,_0xeeccea){return db[_0x3cc4('0x27')][_0x3cc4('0x43')]({'where':{'id':_0x7a5ab0['params']['id']}})[_0x3cc4('0x20')](handleEntityNotFound(_0xeeccea,null))[_0x3cc4('0x20')](removeEntity(_0xeeccea,null))[_0x3cc4('0x3d')](handleError(_0xeeccea,null));};exports['addInterval']=function(_0x9bd388,_0x2de5cb,_0x22d31b){if(_0x9bd388['body']['id']){delete _0x9bd388[_0x3cc4('0x45')]['id'];}return db[_0x3cc4('0x27')][_0x3cc4('0x43')]({'where':{'id':_0x9bd388[_0x3cc4('0x3f')]['id']}})[_0x3cc4('0x20')](handleEntityNotFound(_0x2de5cb,null))[_0x3cc4('0x20')](function(_0x84fe5){if(_0x84fe5){_0x9bd388[_0x3cc4('0x45')]['IntervalId']=_0x84fe5['id'];return db[_0x3cc4('0x27')]['create'](_0x9bd388[_0x3cc4('0x45')]);}})[_0x3cc4('0x20')](respondWithResult(_0x2de5cb,null))['catch'](handleError(_0x2de5cb,null));};exports[_0x3cc4('0x4c')]=function(_0x3b82d3,_0x2ac8a2,_0x4d1523){var _0x5079da={};var _0x32c7c8={};var _0x23db3b;var _0x331c99;return db[_0x3cc4('0x27')][_0x3cc4('0x4d')]({'where':{'id':_0x3b82d3[_0x3cc4('0x3f')]['id']}})[_0x3cc4('0x20')](handleEntityNotFound(_0x2ac8a2,null))['then'](function(_0x54b2e6){if(_0x54b2e6){_0x23db3b=_0x54b2e6;_0x32c7c8[_0x3cc4('0x2a')]=_[_0x3cc4('0x2d')](db[_0x3cc4('0x27')][_0x3cc4('0x28')]);_0x32c7c8[_0x3cc4('0x2c')]=_['keys'](_0x3b82d3[_0x3cc4('0x2c')]);_0x32c7c8['filters']=_[_0x3cc4('0x2e')](_0x32c7c8[_0x3cc4('0x2a')],_0x32c7c8['query']);_0x5079da['attributes']=_[_0x3cc4('0x2e')](_0x32c7c8[_0x3cc4('0x2a')],qs[_0x3cc4('0x30')](_0x3b82d3[_0x3cc4('0x2c')]['fields']));_0x5079da[_0x3cc4('0x2f')]=_0x5079da['attributes'][_0x3cc4('0x40')]?_0x5079da['attributes']:_0x32c7c8['model'];_0x5079da['order']=qs[_0x3cc4('0x34')](_0x3b82d3[_0x3cc4('0x2c')][_0x3cc4('0x34')]);_0x5079da[_0x3cc4('0x35')]=qs[_0x3cc4('0x36')](_[_0x3cc4('0x37')](_0x3b82d3[_0x3cc4('0x2c')],_0x32c7c8[_0x3cc4('0x36')]));if(_0x3b82d3[_0x3cc4('0x2c')][_0x3cc4('0x4e')]){_0x5079da['where']=_[_0x3cc4('0x42')](_0x5079da[_0x3cc4('0x35')],{'$or':_[_0x3cc4('0x2b')](_0x5079da[_0x3cc4('0x2f')],function(_0x2c371c){var _0x52f71e={};_0x52f71e[_0x2c371c]={'$like':'%'+_0x3b82d3['query'][_0x3cc4('0x4e')]+'%'};return _0x52f71e;})});}_0x5079da=_[_0x3cc4('0x42')]({},_0x5079da,_0x3b82d3[_0x3cc4('0x39')]);return _0x23db3b['getIntervals'](_0x5079da);}})[_0x3cc4('0x20')](function(_0x20d2ea){if(_0x20d2ea){_0x331c99=_0x20d2ea[_0x3cc4('0x40')];if(!_0x3b82d3[_0x3cc4('0x2c')][_0x3cc4('0x31')](_0x3cc4('0x32'))){_0x5079da[_0x3cc4('0x1a')]=qs[_0x3cc4('0x1a')](_0x3b82d3[_0x3cc4('0x2c')][_0x3cc4('0x1a')]);_0x5079da[_0x3cc4('0x19')]=qs['offset'](_0x3b82d3['query'][_0x3cc4('0x19')]);}return _0x23db3b[_0x3cc4('0x4c')](_0x5079da);}})['then'](function(_0x3ac49b){if(_0x3ac49b){return _0x3ac49b?{'count':_0x331c99,'rows':_0x3ac49b}:null;}})['then'](respondWithResult(_0x2ac8a2,null))[_0x3cc4('0x3d')](handleError(_0x2ac8a2,null));};exports['addIntervals']=function(_0x498172,_0x56da03,_0x41dabf){return db[_0x3cc4('0x27')]['findOne']({'where':{'id':_0x498172[_0x3cc4('0x3f')]['id']}})['then'](handleEntityNotFound(_0x56da03,null))[_0x3cc4('0x20')](function(_0x44c658){if(_0x44c658){return db['sequelize'][_0x3cc4('0x4f')](function(_0x27d433){return db[_0x3cc4('0x27')][_0x3cc4('0x1f')]({'where':{'IntervalId':_0x498172[_0x3cc4('0x3f')]['id']},'transaction':_0x27d433})[_0x3cc4('0x20')](function(_0x2f3012){var _0x228544=_[_0x3cc4('0x2b')](_0x498172[_0x3cc4('0x45')],function(_0x4347e1){delete _0x4347e1['id'];_0x4347e1[_0x3cc4('0x50')]=_0x498172['params']['id'];return _0x4347e1;});return db[_0x3cc4('0x27')][_0x3cc4('0x51')](_0x228544,{'transaction':_0x27d433});});})[_0x3cc4('0x20')](function(){return db[_0x3cc4('0x27')][_0x3cc4('0x3b')]({'where':{'IntervalId':_0x498172['params']['id']}});});}})[_0x3cc4('0x20')](respondWithResult(_0x56da03,null))[_0x3cc4('0x3d')](handleError(_0x56da03,null));};
\ No newline at end of file
index a7338f2..ecc1581 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x09db=['Interval','tools_intervals','rewrite','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../components/extensions/rewrite','exports','define'];(function(_0x2fada7,_0x173284){var _0x5ef8be=function(_0x389d7b){while(--_0x389d7b){_0x2fada7['push'](_0x2fada7['shift']());}};_0x5ef8be(++_0x173284);}(_0x09db,0x6c));var _0xb09d=function(_0xf71120,_0x25b7f9){_0xf71120=_0xf71120-0x0;var _0xbe2fd3=_0x09db[_0xf71120];return _0xbe2fd3;};'use strict';var _=require(_0xb09d('0x0'));var util=require(_0xb09d('0x1'));var logger=require(_0xb09d('0x2'))(_0xb09d('0x3'));var moment=require(_0xb09d('0x4'));var BPromise=require(_0xb09d('0x5'));var rp=require(_0xb09d('0x6'));var fs=require('fs');var path=require(_0xb09d('0x7'));var rimraf=require(_0xb09d('0x8'));var config=require('../../config/environment');var attributes=require('./interval.attributes');var extensions=require(_0xb09d('0x9'));module[_0xb09d('0xa')]=function(_0x3fae8d,_0x4ad766){return _0x3fae8d[_0xb09d('0xb')](_0xb09d('0xc'),attributes,{'tableName':_0xb09d('0xd'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x230a88,_0x370be3){extensions[_0xb09d('0xe')](_0x3fae8d,_0x230a88);},'afterBulkCreate':function(_0x486fbc,_0x5e13f3,_0x43a7ea){_0x43a7ea();extensions[_0xb09d('0xe')](_0x3fae8d,_0x486fbc[0x0]);},'afterUpdate':function(_0x447897,_0x1d54c7){extensions[_0xb09d('0xe')](_0x3fae8d,_0x447897);},'afterDestroy':function(_0x424ec7,_0x398969){extensions[_0xb09d('0xe')](_0x3fae8d,_0x424ec7);}}});};
\ No newline at end of file
+var _0x3402=['define','Interval','tools_intervals','rewrite','lodash','../../config/logger','moment','bluebird','path','../../config/environment','./interval.attributes','../../components/extensions/rewrite','exports'];(function(_0x3b7799,_0x55c296){var _0x13ba4f=function(_0x26d6d5){while(--_0x26d6d5){_0x3b7799['push'](_0x3b7799['shift']());}};_0x13ba4f(++_0x55c296);}(_0x3402,0x163));var _0x2340=function(_0x3a6892,_0x19ba3d){_0x3a6892=_0x3a6892-0x0;var _0x2d9bae=_0x3402[_0x3a6892];return _0x2d9bae;};'use strict';var _=require(_0x2340('0x0'));var util=require('util');var logger=require(_0x2340('0x1'))('api');var moment=require(_0x2340('0x2'));var BPromise=require(_0x2340('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x2340('0x4'));var rimraf=require('rimraf');var config=require(_0x2340('0x5'));var attributes=require(_0x2340('0x6'));var extensions=require(_0x2340('0x7'));module[_0x2340('0x8')]=function(_0xab3d80,_0x3b7915){return _0xab3d80[_0x2340('0x9')](_0x2340('0xa'),attributes,{'tableName':_0x2340('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x1996ac,_0x1fb156){extensions['rewrite'](_0xab3d80,_0x1996ac);},'afterBulkCreate':function(_0x3893b6,_0x45b89c,_0x5e0779){_0x5e0779();extensions[_0x2340('0xc')](_0xab3d80,_0x3893b6[0x0]);},'afterUpdate':function(_0x2e86c6,_0x478ad2){extensions[_0x2340('0xc')](_0xab3d80,_0x2e86c6);},'afterDestroy':function(_0x26b52a,_0x218a78){extensions[_0x2340('0xc')](_0xab3d80,_0x26b52a);}}});};
\ No newline at end of file
index cfddfee..711b8e6 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(_0x4429e0,_0xee6f1f){var _0x51a5b3=function(_0x16eb11){while(--_0x16eb11){_0x4429e0['push'](_0x4429e0['shift']());}};_0x51a5b3(++_0xee6f1f);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3b5250,_0x7a0b2c){_0x3b5250=_0x3b5250-0x0;var _0xc844a1=_0xa9e0[_0x3b5250];return _0xc844a1;};'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(_0x510c60,_0x50247e){var _0x49c4aa=function(_0x3149c7){while(--_0x3149c7){_0x510c60['push'](_0x510c60['shift']());}};_0x49c4aa(++_0x50247e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x24237f,_0x4cf32c){_0x24237f=_0x24237f-0x0;var _0x48298e=_0xa9e0[_0x24237f];return _0x48298e;};'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 1d035dc..d2f7f92 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f2f=['isAuthenticated','send','exports','express','Router','../../components/auth/service','./jira.controller','post'];(function(_0x1f27d7,_0x47eda3){var _0x1574b3=function(_0x34782f){while(--_0x34782f){_0x1f27d7['push'](_0x1f27d7['shift']());}};_0x1574b3(++_0x47eda3);}(_0x5f2f,0x73));var _0xf5f2=function(_0x331ebb,_0x194f50){_0x331ebb=_0x331ebb-0x0;var _0x2b2735=_0x5f2f[_0x331ebb];return _0x2b2735;};'use strict';var express=require(_0xf5f2('0x0'));var router=express[_0xf5f2('0x1')]();var auth=require(_0xf5f2('0x2'));var controller=require(_0xf5f2('0x3'));router[_0xf5f2('0x4')]('/',auth[_0xf5f2('0x5')](),controller[_0xf5f2('0x6')]);module[_0xf5f2('0x7')]=router;
\ No newline at end of file
+var _0x2032=['isAuthenticated','send','Router','../../components/auth/service','./jira.controller'];(function(_0x2b7266,_0xa3d488){var _0xe92cf=function(_0x5177a7){while(--_0x5177a7){_0x2b7266['push'](_0x2b7266['shift']());}};_0xe92cf(++_0xa3d488);}(_0x2032,0xd9));var _0x2203=function(_0x42fffb,_0x40376b){_0x42fffb=_0x42fffb-0x0;var _0x1c1b58=_0x2032[_0x42fffb];return _0x1c1b58;};'use strict';var express=require('express');var router=express[_0x2203('0x0')]();var auth=require(_0x2203('0x1'));var controller=require(_0x2203('0x2'));router['post']('/',auth[_0x2203('0x3')](),controller[_0x2203('0x4')]);module['exports']=router;
\ No newline at end of file
index a916d94..27df7bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c5e=['oldToken','customfield_11502','name','customfield_11504','reason','customfield_10102','track.xcallymotion.com','/rest/api/2/issue','application/json','Basic\x20','toString','base64','request','setEncoding','utf8','end','status','statusCode','json','error','Error\x20during\x20license\x20request.\x20Please\x20contact\x20our\x20license\x20team\x20at\x20license@xcally.com\x20with\x20your\x20request','api.jira','write','openIssue','send','body','socket','remoteAddress','connection','../../config/logger','support','3eAmWpBVP0','key','MOTGUI','summary','Report','\x20from\x20','stringify','issuetype','Bug','customfield_11500','email','fields','customfield_11501'];(function(_0x3babb2,_0x4e832d){var _0x43e8fd=function(_0x58fa4d){while(--_0x58fa4d){_0x3babb2['push'](_0x3babb2['shift']());}};_0x43e8fd(++_0x4e832d);}(_0x6c5e,0xcd));var _0xe6c5=function(_0x1c5f93,_0x35de09){_0x1c5f93=_0x1c5f93-0x0;var _0x464e11=_0x6c5e[_0x1c5f93];return _0x464e11;};'use strict';var BPromise=require('bluebird');var https=require('https');var logger=require(_0xe6c5('0x0'))('api');var USERNAME=_0xe6c5('0x1');var PASSWORD=_0xe6c5('0x2');function openIssue(_0x187bcd,_0x1bcedf){var _0x2edf36={'fields':{'project':{'key':_0x187bcd[_0xe6c5('0x3')]||_0xe6c5('0x4')},'summary':(_0x187bcd[_0xe6c5('0x5')]||_0xe6c5('0x6'))+_0xe6c5('0x7')+_0x187bcd['ip'],'description':_0x187bcd['description']||JSON[_0xe6c5('0x8')](_0x187bcd),'issuetype':{'name':_0x187bcd[_0xe6c5('0x9')]||_0xe6c5('0xa')}}};_0x2edf36['fields'][_0xe6c5('0xb')]=_0x187bcd[_0xe6c5('0xc')];_0x2edf36[_0xe6c5('0xd')][_0xe6c5('0xe')]=_0x187bcd[_0xe6c5('0xf')];_0x2edf36[_0xe6c5('0xd')][_0xe6c5('0x10')]=_0x187bcd['newToken'];_0x2edf36['fields']['customfield_11503']=_0x187bcd[_0xe6c5('0x11')];_0x2edf36[_0xe6c5('0xd')][_0xe6c5('0x12')]=_0x187bcd[_0xe6c5('0x13')];_0x2edf36[_0xe6c5('0xd')][_0xe6c5('0x14')]=_0x187bcd['ip'];var _0x35b0cd={'host':_0xe6c5('0x15'),'port':0x1bb,'path':_0xe6c5('0x16'),'method':'POST','timeout':0x4e20,'headers':{'Content-Type':_0xe6c5('0x17'),'Authorization':_0xe6c5('0x18')+new Buffer(USERNAME+':'+PASSWORD)[_0xe6c5('0x19')](_0xe6c5('0x1a'))}};var _0x52a005=JSON[_0xe6c5('0x8')](_0x2edf36);var _0x4b3fc5=https[_0xe6c5('0x1b')](_0x35b0cd,function(_0x1db9bb){_0x1db9bb[_0xe6c5('0x1c')](_0xe6c5('0x1d'));var _0xdf8a61='';_0x1db9bb['on']('data',function(_0x260ca1){_0xdf8a61+=_0x260ca1;});_0x1db9bb['on'](_0xe6c5('0x1e'),function(){if(_0x1bcedf){return _0x1bcedf[_0xe6c5('0x1f')](_0x1db9bb[_0xe6c5('0x20')])[_0xe6c5('0x21')](JSON['parse'](_0xdf8a61));}});});_0x4b3fc5['on'](_0xe6c5('0x22'),function(_0x179530){if(_0x1bcedf){return _0x1bcedf['status'](0x1f4)[_0xe6c5('0x21')]({'errors':[{'message':_0xe6c5('0x23'),'type':_0xe6c5('0x24')}]});}});_0x4b3fc5[_0xe6c5('0x25')](_0x52a005);_0x4b3fc5[_0xe6c5('0x1e')]();}exports[_0xe6c5('0x26')]=openIssue;exports[_0xe6c5('0x27')]=function(_0x4365ad,_0x1f3ac6){_0x4365ad[_0xe6c5('0x28')]['ip']=_0x4365ad['headers']['x-forwarded-for']||_0x4365ad['connection']['remoteAddress']||_0x4365ad[_0xe6c5('0x29')][_0xe6c5('0x2a')]||_0x4365ad[_0xe6c5('0x2b')][_0xe6c5('0x29')][_0xe6c5('0x2a')];return openIssue(_0x4365ad[_0xe6c5('0x28')],_0x1f3ac6);};
\ No newline at end of file
+var _0x2793=['json','api.jira','write','openIssue','body','x-forwarded-for','connection','remoteAddress','socket','bluebird','https','../../config/logger','support','3eAmWpBVP0','key','MOTGUI','summary','\x20from\x20','description','stringify','issuetype','Bug','fields','customfield_11500','email','customfield_11501','customfield_11502','customfield_11503','name','customfield_11504','reason','customfield_10102','track.xcallymotion.com','/rest/api/2/issue','application/json','Basic\x20','base64','request','setEncoding','data','status','statusCode','parse','error'];(function(_0x4e76bf,_0x18b1d5){var _0x28e303=function(_0xbfa11f){while(--_0xbfa11f){_0x4e76bf['push'](_0x4e76bf['shift']());}};_0x28e303(++_0x18b1d5);}(_0x2793,0xe5));var _0x3279=function(_0x381f33,_0x379ec4){_0x381f33=_0x381f33-0x0;var _0x116d18=_0x2793[_0x381f33];return _0x116d18;};'use strict';var BPromise=require(_0x3279('0x0'));var https=require(_0x3279('0x1'));var logger=require(_0x3279('0x2'))('api');var USERNAME=_0x3279('0x3');var PASSWORD=_0x3279('0x4');function openIssue(_0x2c7c2e,_0x53fe27){var _0x2df995={'fields':{'project':{'key':_0x2c7c2e[_0x3279('0x5')]||_0x3279('0x6')},'summary':(_0x2c7c2e[_0x3279('0x7')]||'Report')+_0x3279('0x8')+_0x2c7c2e['ip'],'description':_0x2c7c2e[_0x3279('0x9')]||JSON[_0x3279('0xa')](_0x2c7c2e),'issuetype':{'name':_0x2c7c2e[_0x3279('0xb')]||_0x3279('0xc')}}};_0x2df995[_0x3279('0xd')][_0x3279('0xe')]=_0x2c7c2e[_0x3279('0xf')];_0x2df995[_0x3279('0xd')][_0x3279('0x10')]=_0x2c7c2e['oldToken'];_0x2df995['fields'][_0x3279('0x11')]=_0x2c7c2e['newToken'];_0x2df995[_0x3279('0xd')][_0x3279('0x12')]=_0x2c7c2e[_0x3279('0x13')];_0x2df995[_0x3279('0xd')][_0x3279('0x14')]=_0x2c7c2e[_0x3279('0x15')];_0x2df995[_0x3279('0xd')][_0x3279('0x16')]=_0x2c7c2e['ip'];var _0x9f7a32={'host':_0x3279('0x17'),'port':0x1bb,'path':_0x3279('0x18'),'method':'POST','timeout':0x4e20,'headers':{'Content-Type':_0x3279('0x19'),'Authorization':_0x3279('0x1a')+new Buffer(USERNAME+':'+PASSWORD)['toString'](_0x3279('0x1b'))}};var _0x1358c2=JSON[_0x3279('0xa')](_0x2df995);var _0x438875=https[_0x3279('0x1c')](_0x9f7a32,function(_0x2b3be2){_0x2b3be2[_0x3279('0x1d')]('utf8');var _0x39bcc7='';_0x2b3be2['on'](_0x3279('0x1e'),function(_0x4145ea){_0x39bcc7+=_0x4145ea;});_0x2b3be2['on']('end',function(){if(_0x53fe27){return _0x53fe27[_0x3279('0x1f')](_0x2b3be2[_0x3279('0x20')])['json'](JSON[_0x3279('0x21')](_0x39bcc7));}});});_0x438875['on'](_0x3279('0x22'),function(_0x2b59a7){if(_0x53fe27){return _0x53fe27['status'](0x1f4)[_0x3279('0x23')]({'errors':[{'message':'Error\x20during\x20license\x20request.\x20Please\x20contact\x20our\x20license\x20team\x20at\x20license@xcally.com\x20with\x20your\x20request','type':_0x3279('0x24')}]});}});_0x438875[_0x3279('0x25')](_0x1358c2);_0x438875['end']();}exports[_0x3279('0x26')]=openIssue;exports['send']=function(_0x53444e,_0xfa93e4){_0x53444e[_0x3279('0x27')]['ip']=_0x53444e['headers'][_0x3279('0x28')]||_0x53444e[_0x3279('0x29')][_0x3279('0x2a')]||_0x53444e['socket'][_0x3279('0x2a')]||_0x53444e['connection'][_0x3279('0x2b')]['remoteAddress'];return openIssue(_0x53444e[_0x3279('0x27')],_0xfa93e4);};
\ No newline at end of file
index a4ba4ff..9a2a499 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb58b=['get','isAuthenticated','/describe','describe','/:id','show','post','create','update','delete','exports','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','./jscriptyAnswerReport.controller'];(function(_0x35c42c,_0x12f68b){var _0x30bf70=function(_0x87ecde){while(--_0x87ecde){_0x35c42c['push'](_0x35c42c['shift']());}};_0x30bf70(++_0x12f68b);}(_0xb58b,0x1f1));var _0xbb58=function(_0x1490e8,_0x3df98d){_0x1490e8=_0x1490e8-0x0;var _0x15b316=_0xb58b[_0x1490e8];return _0x15b316;};'use strict';var multer=require('multer');var util=require(_0xbb58('0x0'));var path=require(_0xbb58('0x1'));var timeout=require(_0xbb58('0x2'));var express=require('express');var router=express[_0xbb58('0x3')]();var fs_extra=require(_0xbb58('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xbb58('0x5'));var config=require('../../config/environment');var controller=require(_0xbb58('0x6'));router[_0xbb58('0x7')]('/',auth[_0xbb58('0x8')](),controller['index']);router[_0xbb58('0x7')](_0xbb58('0x9'),auth[_0xbb58('0x8')](),controller[_0xbb58('0xa')]);router[_0xbb58('0x7')](_0xbb58('0xb'),auth[_0xbb58('0x8')](),controller[_0xbb58('0xc')]);router[_0xbb58('0xd')]('/',auth[_0xbb58('0x8')](),controller[_0xbb58('0xe')]);router['put'](_0xbb58('0xb'),auth['isAuthenticated'](),controller[_0xbb58('0xf')]);router[_0xbb58('0x10')](_0xbb58('0xb'),auth[_0xbb58('0x8')](),controller['destroy']);module[_0xbb58('0x11')]=router;
\ No newline at end of file
+var _0x91a7=['Router','../../components/auth/service','./jscriptyAnswerReport.controller','get','index','/describe','isAuthenticated','/:id','show','post','create','put','update','delete','destroy','util','path','connect-timeout'];(function(_0x22a15e,_0x25fbc4){var _0x3e459f=function(_0x28a114){while(--_0x28a114){_0x22a15e['push'](_0x22a15e['shift']());}};_0x3e459f(++_0x25fbc4);}(_0x91a7,0xe7));var _0x791a=function(_0x26cdbf,_0x13479b){_0x26cdbf=_0x26cdbf-0x0;var _0x1e87c4=_0x91a7[_0x26cdbf];return _0x1e87c4;};'use strict';var multer=require('multer');var util=require(_0x791a('0x0'));var path=require(_0x791a('0x1'));var timeout=require(_0x791a('0x2'));var express=require('express');var router=express[_0x791a('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x791a('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x791a('0x5'));router[_0x791a('0x6')]('/',auth['isAuthenticated'](),controller[_0x791a('0x7')]);router['get'](_0x791a('0x8'),auth[_0x791a('0x9')](),controller['describe']);router[_0x791a('0x6')](_0x791a('0xa'),auth[_0x791a('0x9')](),controller[_0x791a('0xb')]);router[_0x791a('0xc')]('/',auth['isAuthenticated'](),controller[_0x791a('0xd')]);router[_0x791a('0xe')]('/:id',auth[_0x791a('0x9')](),controller[_0x791a('0xf')]);router[_0x791a('0x10')](_0x791a('0xa'),auth[_0x791a('0x9')](),controller[_0x791a('0x11')]);module['exports']=router;
\ No newline at end of file
index 4abac91..5e29a6a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x3511d3,_0x4107ae){var _0x5d6321=function(_0x1a23da){while(--_0x1a23da){_0x3511d3['push'](_0x3511d3['shift']());}};_0x5d6321(++_0x4107ae);}(_0x7a54,0x106));var _0x47a5=function(_0x49e4e2,_0xe7047b){_0x49e4e2=_0x49e4e2-0x0;var _0x340eca=_0x7a54[_0x49e4e2];return _0x340eca;};'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(_0x29d94e,_0xf386d6){var _0x106237=function(_0x327501){while(--_0x327501){_0x29d94e['push'](_0x29d94e['shift']());}};_0x106237(++_0xf386d6);}(_0x7a54,0x106));var _0x47a5=function(_0x58916b,_0x10d062){_0x58916b=_0x58916b-0x0;var _0x1d4da6=_0x7a54[_0x58916b];return _0x1d4da6;};'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 d1f343b..c4bfa08 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x446c=['name','map','JscriptyAnswerReport','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','filter','merge','where','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','keys','length','create','body','find','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','ejs','fs-extra','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack'];(function(_0x1da527,_0x2dc953){var _0x40fc7c=function(_0x9949f5){while(--_0x9949f5){_0x1da527['push'](_0x1da527['shift']());}};_0x40fc7c(++_0x2dc953);}(_0x446c,0x156));var _0xc446=function(_0x329664,_0x130748){_0x329664=_0x329664-0x0;var _0x4e346e=_0x446c[_0x329664];return _0x4e346e;};'use strict';var emlformat=require(_0xc446('0x0'));var rimraf=require(_0xc446('0x1'));var zipdir=require(_0xc446('0x2'));var jsonpatch=require(_0xc446('0x3'));var rp=require('request-promise');var moment=require(_0xc446('0x4'));var BPromise=require(_0xc446('0x5'));var Mustache=require(_0xc446('0x6'));var util=require('util');var path=require(_0xc446('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xc446('0x8'));var fs=require('fs');var fs_extra=require(_0xc446('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xc446('0xa'));var jsforce=require(_0xc446('0xb'));var deskjs=require(_0xc446('0xc'));var toCsv=require(_0xc446('0xd'));var querystring=require(_0xc446('0xe'));var Papa=require('papaparse');var Redis=require(_0xc446('0xf'));var authService=require(_0xc446('0x10'));var qs=require(_0xc446('0x11'));var as=require(_0xc446('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xc446('0x13'))(_0xc446('0x14'));var utils=require(_0xc446('0x15'));var config=require(_0xc446('0x16'));var licenseUtil=require(_0xc446('0x17'));var db=require(_0xc446('0x18'))['db'];function respondWithStatusCode(_0x1a2099,_0x19083f){_0x19083f=_0x19083f||0xcc;return function(_0x22a70e){if(_0x22a70e){return _0x1a2099[_0xc446('0x19')](_0x19083f);}return _0x1a2099[_0xc446('0x1a')](_0x19083f)[_0xc446('0x1b')]();};}function respondWithResult(_0x1cfc0a,_0x72faac){_0x72faac=_0x72faac||0xc8;return function(_0x21d8e4){if(_0x21d8e4){return _0x1cfc0a[_0xc446('0x1a')](_0x72faac)[_0xc446('0x1c')](_0x21d8e4);}};}function respondWithFilteredResult(_0x20e51b,_0x2b09db){return function(_0x5d2701){if(_0x5d2701){var _0x3ba115=typeof _0x2b09db[_0xc446('0x1d')]===_0xc446('0x1e')&&typeof _0x2b09db[_0xc446('0x1f')]===_0xc446('0x1e');var _0x274040=_0x5d2701[_0xc446('0x20')];var _0x30038f=_0x3ba115?0x0:_0x2b09db[_0xc446('0x1d')];var _0x606af1=_0x3ba115?_0x5d2701['count']:_0x2b09db[_0xc446('0x1d')]+_0x2b09db[_0xc446('0x1f')];var _0x5cd0c1;if(_0x606af1>=_0x274040){_0x606af1=_0x274040;_0x5cd0c1=0xc8;}else{_0x5cd0c1=0xce;}_0x20e51b[_0xc446('0x1a')](_0x5cd0c1);return _0x20e51b[_0xc446('0x21')](_0xc446('0x22'),_0x30038f+'-'+_0x606af1+'/'+_0x274040)[_0xc446('0x1c')](_0x5d2701);}return null;};}function patchUpdates(_0x409a8e){return function(_0x37108c){try{jsonpatch[_0xc446('0x23')](_0x37108c,_0x409a8e,!![]);}catch(_0xc18765){return BPromise[_0xc446('0x24')](_0xc18765);}return _0x37108c[_0xc446('0x25')]();};}function saveUpdates(_0x5ce5f7,_0x35aedc){return function(_0x1ea08b){if(_0x1ea08b){return _0x1ea08b[_0xc446('0x26')](_0x5ce5f7)[_0xc446('0x27')](function(_0x3596f4){return _0x3596f4;});}return null;};}function removeEntity(_0xb696e,_0x36a6f5){return function(_0x1b785a){if(_0x1b785a){return _0x1b785a[_0xc446('0x28')]()[_0xc446('0x27')](function(){_0xb696e[_0xc446('0x1a')](0xcc)[_0xc446('0x1b')]();});}};}function handleEntityNotFound(_0x25f58d,_0x438410){return function(_0x16133b){if(!_0x16133b){_0x25f58d[_0xc446('0x19')](0x194);}return _0x16133b;};}function handleError(_0x465e18,_0x51933d){_0x51933d=_0x51933d||0x1f4;return function(_0xb3ab06){logger[_0xc446('0x29')](_0xb3ab06[_0xc446('0x2a')]);if(_0xb3ab06[_0xc446('0x2b')]){delete _0xb3ab06[_0xc446('0x2b')];}_0x465e18[_0xc446('0x1a')](_0x51933d)['send'](_0xb3ab06);};}exports['index']=function(_0x37532c,_0x1b2dc8){var _0x19f57f={},_0x865c07={},_0x4ea05e={'count':0x0,'rows':[]};var _0x420fcb=_[_0xc446('0x2c')](db[_0xc446('0x2d')][_0xc446('0x2e')],function(_0x1bd4e6){return{'name':_0x1bd4e6[_0xc446('0x2f')],'type':_0x1bd4e6[_0xc446('0x30')][_0xc446('0x31')]};});_0x865c07[_0xc446('0x32')]=_[_0xc446('0x2c')](_0x420fcb,'name');_0x865c07['query']=_['keys'](_0x37532c[_0xc446('0x33')]);_0x865c07[_0xc446('0x34')]=_[_0xc446('0x35')](_0x865c07[_0xc446('0x32')],_0x865c07[_0xc446('0x33')]);_0x19f57f[_0xc446('0x36')]=_[_0xc446('0x35')](_0x865c07['model'],qs[_0xc446('0x37')](_0x37532c[_0xc446('0x33')][_0xc446('0x37')]));_0x19f57f[_0xc446('0x36')]=_0x19f57f[_0xc446('0x36')]['length']?_0x19f57f[_0xc446('0x36')]:_0x865c07[_0xc446('0x32')];if(!_0x37532c[_0xc446('0x33')][_0xc446('0x38')](_0xc446('0x39'))){_0x19f57f[_0xc446('0x1f')]=qs[_0xc446('0x1f')](_0x37532c[_0xc446('0x33')]['limit']);_0x19f57f['offset']=qs[_0xc446('0x1d')](_0x37532c[_0xc446('0x33')][_0xc446('0x1d')]);}_0x19f57f['order']=qs[_0xc446('0x3a')](_0x37532c[_0xc446('0x33')][_0xc446('0x3a')]);_0x19f57f['where']=qs['filters'](_['pick'](_0x37532c[_0xc446('0x33')],_0x865c07['filters']),_0x420fcb);if(_0x37532c[_0xc446('0x33')][_0xc446('0x3b')]){_0x19f57f['where']=_[_0xc446('0x3c')](_0x19f57f[_0xc446('0x3d')],{'$or':_[_0xc446('0x2c')](_0x420fcb,function(_0x2beba1){if(_0x2beba1['type']!==_0xc446('0x3e')){var _0xb9c7e6={};_0xb9c7e6[_0x2beba1['name']]={'$like':'%'+_0x37532c[_0xc446('0x33')][_0xc446('0x3b')]+'%'};return _0xb9c7e6;}})});}_0x19f57f=_[_0xc446('0x3c')]({},_0x19f57f,_0x37532c[_0xc446('0x3f')]);var _0xf3400e={'where':_0x19f57f['where']};return db[_0xc446('0x2d')][_0xc446('0x20')](_0xf3400e)[_0xc446('0x27')](function(_0xf8c80c){_0x4ea05e[_0xc446('0x20')]=_0xf8c80c;if(_0x37532c['query'][_0xc446('0x40')]){_0x19f57f[_0xc446('0x41')]=[{'all':!![]}];}return db[_0xc446('0x2d')][_0xc446('0x42')](_0x19f57f);})[_0xc446('0x27')](function(_0x5e65d5){_0x4ea05e[_0xc446('0x43')]=_0x5e65d5;return _0x4ea05e;})['then'](respondWithFilteredResult(_0x1b2dc8,_0x19f57f))[_0xc446('0x44')](handleError(_0x1b2dc8,null));};exports[_0xc446('0x45')]=function(_0x520ffd,_0x3287ce){var _0x5e250b={'raw':!![],'where':{'id':_0x520ffd[_0xc446('0x46')]['id']}},_0x29f36f={};_0x29f36f[_0xc446('0x32')]=_[_0xc446('0x47')](db['JscriptyAnswerReport'][_0xc446('0x2e')]);_0x29f36f[_0xc446('0x33')]=_[_0xc446('0x47')](_0x520ffd['query']);_0x29f36f[_0xc446('0x34')]=_[_0xc446('0x35')](_0x29f36f[_0xc446('0x32')],_0x29f36f[_0xc446('0x33')]);_0x5e250b[_0xc446('0x36')]=_[_0xc446('0x35')](_0x29f36f[_0xc446('0x32')],qs[_0xc446('0x37')](_0x520ffd[_0xc446('0x33')][_0xc446('0x37')]));_0x5e250b[_0xc446('0x36')]=_0x5e250b[_0xc446('0x36')][_0xc446('0x48')]?_0x5e250b[_0xc446('0x36')]:_0x29f36f[_0xc446('0x32')];if(_0x520ffd['query']['includeAll']){_0x5e250b[_0xc446('0x41')]=[{'all':!![]}];}_0x5e250b=_[_0xc446('0x3c')]({},_0x5e250b,_0x520ffd['options']);return db['JscriptyAnswerReport']['find'](_0x5e250b)['then'](handleEntityNotFound(_0x3287ce,null))[_0xc446('0x27')](respondWithResult(_0x3287ce,null))[_0xc446('0x44')](handleError(_0x3287ce,null));};exports[_0xc446('0x49')]=function(_0x2fc1bf,_0x19ca3d){return db[_0xc446('0x2d')][_0xc446('0x49')](_0x2fc1bf[_0xc446('0x4a')],{})[_0xc446('0x27')](respondWithResult(_0x19ca3d,0xc9))[_0xc446('0x44')](handleError(_0x19ca3d,null));};exports['update']=function(_0x40aa4f,_0x317559){if(_0x40aa4f[_0xc446('0x4a')]['id']){delete _0x40aa4f['body']['id'];}return db[_0xc446('0x2d')]['find']({'where':{'id':_0x40aa4f[_0xc446('0x46')]['id']}})[_0xc446('0x27')](handleEntityNotFound(_0x317559,null))[_0xc446('0x27')](saveUpdates(_0x40aa4f[_0xc446('0x4a')],null))[_0xc446('0x27')](respondWithResult(_0x317559,null))['catch'](handleError(_0x317559,null));};exports[_0xc446('0x28')]=function(_0x5415e5,_0x26ec5f){return db['JscriptyAnswerReport'][_0xc446('0x4b')]({'where':{'id':_0x5415e5['params']['id']}})[_0xc446('0x27')](handleEntityNotFound(_0x26ec5f,null))[_0xc446('0x27')](removeEntity(_0x26ec5f,null))['catch'](handleError(_0x26ec5f,null));};exports['describe']=function(_0x1a66fd,_0x5759af){return db[_0xc446('0x2d')][_0xc446('0x4c')]()[_0xc446('0x27')](respondWithResult(_0x5759af,null))[_0xc446('0x44')](handleError(_0x5759af,null));};
\ No newline at end of file
+var _0xcde7=['intersection','fields','attributes','length','hasOwnProperty','order','sort','where','pick','filter','merge','type','VIRTUAL','options','include','findAll','show','params','keys','includeAll','find','catch','create','body','describe','zip-dir','fast-json-patch','request-promise','mustache','path','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','then','error','stack','name','send','index','map','JscriptyAnswerReport','rawAttributes','key','model','query','filters'];(function(_0xef3f00,_0x1cdea3){var _0x21c01f=function(_0x11375c){while(--_0x11375c){_0xef3f00['push'](_0xef3f00['shift']());}};_0x21c01f(++_0x1cdea3);}(_0xcde7,0x65));var _0x7cde=function(_0x46e363,_0x45d7e2){_0x46e363=_0x46e363-0x0;var _0x3fb059=_0xcde7[_0x46e363];return _0x3fb059;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x7cde('0x0'));var jsonpatch=require(_0x7cde('0x1'));var rp=require(_0x7cde('0x2'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x7cde('0x3'));var util=require('util');var path=require(_0x7cde('0x4'));var sox=require(_0x7cde('0x5'));var csv=require(_0x7cde('0x6'));var ejs=require(_0x7cde('0x7'));var fs=require('fs');var fs_extra=require(_0x7cde('0x8'));var _=require(_0x7cde('0x9'));var squel=require('squel');var crypto=require(_0x7cde('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x7cde('0xb'));var toCsv=require(_0x7cde('0x6'));var querystring=require(_0x7cde('0xc'));var Papa=require(_0x7cde('0xd'));var Redis=require('ioredis');var authService=require(_0x7cde('0xe'));var qs=require(_0x7cde('0xf'));var as=require(_0x7cde('0x10'));var hardwareService=require(_0x7cde('0x11'));var logger=require(_0x7cde('0x12'))(_0x7cde('0x13'));var utils=require(_0x7cde('0x14'));var config=require(_0x7cde('0x15'));var licenseUtil=require(_0x7cde('0x16'));var db=require(_0x7cde('0x17'))['db'];function respondWithStatusCode(_0x5f127e,_0x1adc21){_0x1adc21=_0x1adc21||0xcc;return function(_0x7084b7){if(_0x7084b7){return _0x5f127e[_0x7cde('0x18')](_0x1adc21);}return _0x5f127e[_0x7cde('0x19')](_0x1adc21)[_0x7cde('0x1a')]();};}function respondWithResult(_0x27e8dc,_0x1905d0){_0x1905d0=_0x1905d0||0xc8;return function(_0x2e86a0){if(_0x2e86a0){return _0x27e8dc[_0x7cde('0x19')](_0x1905d0)['json'](_0x2e86a0);}};}function respondWithFilteredResult(_0x265821,_0x35b20a){return function(_0x1b3398){if(_0x1b3398){var _0x1bad92=typeof _0x35b20a[_0x7cde('0x1b')]===_0x7cde('0x1c')&&typeof _0x35b20a[_0x7cde('0x1d')]===_0x7cde('0x1c');var _0x2cfe03=_0x1b3398[_0x7cde('0x1e')];var _0x87ebf0=_0x1bad92?0x0:_0x35b20a[_0x7cde('0x1b')];var _0x3b1e08=_0x1bad92?_0x1b3398['count']:_0x35b20a[_0x7cde('0x1b')]+_0x35b20a[_0x7cde('0x1d')];var _0xf257a5;if(_0x3b1e08>=_0x2cfe03){_0x3b1e08=_0x2cfe03;_0xf257a5=0xc8;}else{_0xf257a5=0xce;}_0x265821['status'](_0xf257a5);return _0x265821[_0x7cde('0x1f')](_0x7cde('0x20'),_0x87ebf0+'-'+_0x3b1e08+'/'+_0x2cfe03)['json'](_0x1b3398);}return null;};}function patchUpdates(_0x1f93f8){return function(_0x41e3be){try{jsonpatch[_0x7cde('0x21')](_0x41e3be,_0x1f93f8,!![]);}catch(_0x3bf3be){return BPromise[_0x7cde('0x22')](_0x3bf3be);}return _0x41e3be[_0x7cde('0x23')]();};}function saveUpdates(_0x1200b4,_0x33b4d9){return function(_0x4ee923){if(_0x4ee923){return _0x4ee923[_0x7cde('0x24')](_0x1200b4)['then'](function(_0x5735fe){return _0x5735fe;});}return null;};}function removeEntity(_0x4e1e8f,_0x261833){return function(_0x584ffc){if(_0x584ffc){return _0x584ffc[_0x7cde('0x25')]()[_0x7cde('0x26')](function(){_0x4e1e8f[_0x7cde('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4b25e3,_0x219296){return function(_0x591cfa){if(!_0x591cfa){_0x4b25e3[_0x7cde('0x18')](0x194);}return _0x591cfa;};}function handleError(_0x215055,_0x16be59){_0x16be59=_0x16be59||0x1f4;return function(_0x4b28b2){logger[_0x7cde('0x27')](_0x4b28b2[_0x7cde('0x28')]);if(_0x4b28b2['name']){delete _0x4b28b2[_0x7cde('0x29')];}_0x215055[_0x7cde('0x19')](_0x16be59)[_0x7cde('0x2a')](_0x4b28b2);};}exports[_0x7cde('0x2b')]=function(_0x5ef3a6,_0x23f4c6){var _0x4ec2be={},_0x532c92={},_0x299077={'count':0x0,'rows':[]};var _0x2b788f=_[_0x7cde('0x2c')](db[_0x7cde('0x2d')][_0x7cde('0x2e')],function(_0x435328){return{'name':_0x435328['fieldName'],'type':_0x435328['type'][_0x7cde('0x2f')]};});_0x532c92[_0x7cde('0x30')]=_[_0x7cde('0x2c')](_0x2b788f,_0x7cde('0x29'));_0x532c92['query']=_['keys'](_0x5ef3a6[_0x7cde('0x31')]);_0x532c92[_0x7cde('0x32')]=_[_0x7cde('0x33')](_0x532c92[_0x7cde('0x30')],_0x532c92[_0x7cde('0x31')]);_0x4ec2be['attributes']=_['intersection'](_0x532c92[_0x7cde('0x30')],qs[_0x7cde('0x34')](_0x5ef3a6[_0x7cde('0x31')][_0x7cde('0x34')]));_0x4ec2be[_0x7cde('0x35')]=_0x4ec2be['attributes'][_0x7cde('0x36')]?_0x4ec2be[_0x7cde('0x35')]:_0x532c92[_0x7cde('0x30')];if(!_0x5ef3a6[_0x7cde('0x31')][_0x7cde('0x37')]('nolimit')){_0x4ec2be[_0x7cde('0x1d')]=qs[_0x7cde('0x1d')](_0x5ef3a6[_0x7cde('0x31')][_0x7cde('0x1d')]);_0x4ec2be[_0x7cde('0x1b')]=qs[_0x7cde('0x1b')](_0x5ef3a6[_0x7cde('0x31')][_0x7cde('0x1b')]);}_0x4ec2be[_0x7cde('0x38')]=qs[_0x7cde('0x39')](_0x5ef3a6[_0x7cde('0x31')][_0x7cde('0x39')]);_0x4ec2be[_0x7cde('0x3a')]=qs['filters'](_[_0x7cde('0x3b')](_0x5ef3a6[_0x7cde('0x31')],_0x532c92[_0x7cde('0x32')]),_0x2b788f);if(_0x5ef3a6[_0x7cde('0x31')][_0x7cde('0x3c')]){_0x4ec2be[_0x7cde('0x3a')]=_[_0x7cde('0x3d')](_0x4ec2be[_0x7cde('0x3a')],{'$or':_[_0x7cde('0x2c')](_0x2b788f,function(_0x1ba5bc){if(_0x1ba5bc[_0x7cde('0x3e')]!==_0x7cde('0x3f')){var _0x54800d={};_0x54800d[_0x1ba5bc[_0x7cde('0x29')]]={'$like':'%'+_0x5ef3a6[_0x7cde('0x31')][_0x7cde('0x3c')]+'%'};return _0x54800d;}})});}_0x4ec2be=_[_0x7cde('0x3d')]({},_0x4ec2be,_0x5ef3a6[_0x7cde('0x40')]);var _0x4ece89={'where':_0x4ec2be[_0x7cde('0x3a')]};return db[_0x7cde('0x2d')][_0x7cde('0x1e')](_0x4ece89)['then'](function(_0x4fade6){_0x299077[_0x7cde('0x1e')]=_0x4fade6;if(_0x5ef3a6['query']['includeAll']){_0x4ec2be[_0x7cde('0x41')]=[{'all':!![]}];}return db[_0x7cde('0x2d')][_0x7cde('0x42')](_0x4ec2be);})[_0x7cde('0x26')](function(_0x30a8c1){_0x299077['rows']=_0x30a8c1;return _0x299077;})['then'](respondWithFilteredResult(_0x23f4c6,_0x4ec2be))['catch'](handleError(_0x23f4c6,null));};exports[_0x7cde('0x43')]=function(_0xf82b0e,_0x11751b){var _0x58d4a2={'raw':!![],'where':{'id':_0xf82b0e[_0x7cde('0x44')]['id']}},_0x3f648c={};_0x3f648c[_0x7cde('0x30')]=_[_0x7cde('0x45')](db[_0x7cde('0x2d')][_0x7cde('0x2e')]);_0x3f648c[_0x7cde('0x31')]=_[_0x7cde('0x45')](_0xf82b0e[_0x7cde('0x31')]);_0x3f648c[_0x7cde('0x32')]=_[_0x7cde('0x33')](_0x3f648c[_0x7cde('0x30')],_0x3f648c[_0x7cde('0x31')]);_0x58d4a2[_0x7cde('0x35')]=_['intersection'](_0x3f648c[_0x7cde('0x30')],qs[_0x7cde('0x34')](_0xf82b0e['query'][_0x7cde('0x34')]));_0x58d4a2['attributes']=_0x58d4a2['attributes'][_0x7cde('0x36')]?_0x58d4a2['attributes']:_0x3f648c[_0x7cde('0x30')];if(_0xf82b0e[_0x7cde('0x31')][_0x7cde('0x46')]){_0x58d4a2[_0x7cde('0x41')]=[{'all':!![]}];}_0x58d4a2=_[_0x7cde('0x3d')]({},_0x58d4a2,_0xf82b0e[_0x7cde('0x40')]);return db[_0x7cde('0x2d')][_0x7cde('0x47')](_0x58d4a2)['then'](handleEntityNotFound(_0x11751b,null))['then'](respondWithResult(_0x11751b,null))[_0x7cde('0x48')](handleError(_0x11751b,null));};exports[_0x7cde('0x49')]=function(_0x5da2bf,_0x3cbbf1){return db[_0x7cde('0x2d')][_0x7cde('0x49')](_0x5da2bf[_0x7cde('0x4a')],{})[_0x7cde('0x26')](respondWithResult(_0x3cbbf1,0xc9))[_0x7cde('0x48')](handleError(_0x3cbbf1,null));};exports['update']=function(_0x46a6d4,_0x1789d2){if(_0x46a6d4['body']['id']){delete _0x46a6d4[_0x7cde('0x4a')]['id'];}return db[_0x7cde('0x2d')][_0x7cde('0x47')]({'where':{'id':_0x46a6d4[_0x7cde('0x44')]['id']}})[_0x7cde('0x26')](handleEntityNotFound(_0x1789d2,null))[_0x7cde('0x26')](saveUpdates(_0x46a6d4[_0x7cde('0x4a')],null))[_0x7cde('0x26')](respondWithResult(_0x1789d2,null))['catch'](handleError(_0x1789d2,null));};exports[_0x7cde('0x25')]=function(_0x5b8bfa,_0xaaa7f7){return db[_0x7cde('0x2d')][_0x7cde('0x47')]({'where':{'id':_0x5b8bfa[_0x7cde('0x44')]['id']}})['then'](handleEntityNotFound(_0xaaa7f7,null))['then'](removeEntity(_0xaaa7f7,null))[_0x7cde('0x48')](handleError(_0xaaa7f7,null));};exports[_0x7cde('0x4b')]=function(_0x1a51f8,_0x5a38ea){return db[_0x7cde('0x2d')]['describe']()[_0x7cde('0x26')](respondWithResult(_0x5a38ea,null))[_0x7cde('0x48')](handleError(_0x5a38ea,null));};
\ No newline at end of file
index ac34d42..b2fbe88 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x91e8=['define','JscriptyAnswerReport','report_jscripty_answers','lodash','util','../../config/logger','api','moment','request-promise','path','./jscriptyAnswerReport.attributes'];(function(_0x368fb9,_0x1a9895){var _0x4892fb=function(_0x28d735){while(--_0x28d735){_0x368fb9['push'](_0x368fb9['shift']());}};_0x4892fb(++_0x1a9895);}(_0x91e8,0x92));var _0x891e=function(_0x46b26c,_0x19f6a5){_0x46b26c=_0x46b26c-0x0;var _0x5c15c5=_0x91e8[_0x46b26c];return _0x5c15c5;};'use strict';var _=require(_0x891e('0x0'));var util=require(_0x891e('0x1'));var logger=require(_0x891e('0x2'))(_0x891e('0x3'));var moment=require(_0x891e('0x4'));var BPromise=require('bluebird');var rp=require(_0x891e('0x5'));var fs=require('fs');var path=require(_0x891e('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x891e('0x7'));module['exports']=function(_0x56063a,_0x2add1b){return _0x56063a[_0x891e('0x8')](_0x891e('0x9'),attributes,{'tableName':_0x891e('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb359=['bluebird','request-promise','path','./jscriptyAnswerReport.attributes','exports','define','JscriptyAnswerReport','report_jscripty_answers','lodash','util','../../config/logger','api','moment'];(function(_0x293e2e,_0x57eebe){var _0x178a88=function(_0x2f910c){while(--_0x2f910c){_0x293e2e['push'](_0x293e2e['shift']());}};_0x178a88(++_0x57eebe);}(_0xb359,0x19b));var _0x9b35=function(_0xfe3407,_0x2d93f9){_0xfe3407=_0xfe3407-0x0;var _0x2a86ba=_0xb359[_0xfe3407];return _0x2a86ba;};'use strict';var _=require(_0x9b35('0x0'));var util=require(_0x9b35('0x1'));var logger=require(_0x9b35('0x2'))(_0x9b35('0x3'));var moment=require(_0x9b35('0x4'));var BPromise=require(_0x9b35('0x5'));var rp=require(_0x9b35('0x6'));var fs=require('fs');var path=require(_0x9b35('0x7'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x9b35('0x8'));module[_0x9b35('0x9')]=function(_0x3c7b64,_0x2983a7){return _0x3c7b64[_0x9b35('0xa')](_0x9b35('0xb'),attributes,{'tableName':_0x9b35('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6a650b9..cccf93f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc47d=['request\x20sent','debug','error','message','result','catch','lodash','util','bluebird','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','request','then','info','JscriptyAnswerReport,\x20%s,\x20%s'];(function(_0x42baed,_0x46cef3){var _0x17add3=function(_0x19c5c1){while(--_0x19c5c1){_0x42baed['push'](_0x42baed['shift']());}};_0x17add3(++_0x46cef3);}(_0xc47d,0xd7));var _0xdc47=function(_0x42245d,_0x51758f){_0x42245d=_0x42245d-0x0;var _0x4b211a=_0xc47d[_0x42245d];return _0x4b211a;};'use strict';var _=require(_0xdc47('0x0'));var util=require(_0xdc47('0x1'));var moment=require('moment');var BPromise=require(_0xdc47('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xdc47('0x3'))['db'];var utils=require(_0xdc47('0x4'));var logger=require('../../config/logger')(_0xdc47('0x5'));var config=require('../../config/environment');var jayson=require(_0xdc47('0x6'));var client=jayson[_0xdc47('0x7')][_0xdc47('0x8')]({'port':0x232a});function respondWithRpcPromise(_0xe76915,_0x14e9a4,_0x530f19){return new BPromise(function(_0x4bdaa2,_0x1a36a1){return client[_0xdc47('0x9')](_0xe76915,_0x530f19)[_0xdc47('0xa')](function(_0x5b4363){logger[_0xdc47('0xb')](_0xdc47('0xc'),_0x14e9a4,_0xdc47('0xd'));logger[_0xdc47('0xe')]('JscriptyAnswerReport,\x20%s,\x20%s,\x20%s',_0x14e9a4,_0xdc47('0xd'),JSON['stringify'](_0x5b4363));if(_0x5b4363[_0xdc47('0xf')]){if(_0x5b4363['error']['code']===0x1f4){logger[_0xdc47('0xf')](_0xdc47('0xc'),_0x14e9a4,_0x5b4363[_0xdc47('0xf')][_0xdc47('0x10')]);return _0x1a36a1(_0x5b4363['error']['message']);}logger[_0xdc47('0xf')](_0xdc47('0xc'),_0x14e9a4,_0x5b4363[_0xdc47('0xf')][_0xdc47('0x10')]);return _0x4bdaa2(_0x5b4363[_0xdc47('0xf')][_0xdc47('0x10')]);}else{logger[_0xdc47('0xb')]('JscriptyAnswerReport,\x20%s,\x20%s',_0x14e9a4,_0xdc47('0xd'));_0x4bdaa2(_0x5b4363[_0xdc47('0x11')][_0xdc47('0x10')]);}})[_0xdc47('0x12')](function(_0x226c01){logger[_0xdc47('0xf')](_0xdc47('0xc'),_0x14e9a4,_0x226c01);_0x1a36a1(_0x226c01);});});}
\ No newline at end of file
+var _0x62b9=['JscriptyAnswerReport,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','client','http','then','info'];(function(_0x1928c9,_0x13a6d1){var _0x51b5fb=function(_0x24cf70){while(--_0x24cf70){_0x1928c9['push'](_0x1928c9['shift']());}};_0x51b5fb(++_0x13a6d1);}(_0x62b9,0xbc));var _0x962b=function(_0x2c0dd5,_0x4a7fdf){_0x2c0dd5=_0x2c0dd5-0x0;var _0x20ef03=_0x62b9[_0x2c0dd5];return _0x20ef03;};'use strict';var _=require(_0x962b('0x0'));var util=require(_0x962b('0x1'));var moment=require(_0x962b('0x2'));var BPromise=require(_0x962b('0x3'));var rs=require(_0x962b('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x962b('0x5'))['db'];var utils=require(_0x962b('0x6'));var logger=require(_0x962b('0x7'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x962b('0x8')][_0x962b('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2e13a5,_0x2a0904,_0x3565a6){return new BPromise(function(_0x563346,_0x50b3ba){return client['request'](_0x2e13a5,_0x3565a6)[_0x962b('0xa')](function(_0x1fb6d7){logger[_0x962b('0xb')](_0x962b('0xc'),_0x2a0904,'request\x20sent');logger['debug']('JscriptyAnswerReport,\x20%s,\x20%s,\x20%s',_0x2a0904,'request\x20sent',JSON[_0x962b('0xd')](_0x1fb6d7));if(_0x1fb6d7[_0x962b('0xe')]){if(_0x1fb6d7[_0x962b('0xe')][_0x962b('0xf')]===0x1f4){logger['error'](_0x962b('0xc'),_0x2a0904,_0x1fb6d7[_0x962b('0xe')]['message']);return _0x50b3ba(_0x1fb6d7[_0x962b('0xe')]['message']);}logger[_0x962b('0xe')]('JscriptyAnswerReport,\x20%s,\x20%s',_0x2a0904,_0x1fb6d7[_0x962b('0xe')][_0x962b('0x10')]);return _0x563346(_0x1fb6d7[_0x962b('0xe')]['message']);}else{logger[_0x962b('0xb')](_0x962b('0xc'),_0x2a0904,_0x962b('0x11'));_0x563346(_0x1fb6d7[_0x962b('0x12')][_0x962b('0x10')]);}})[_0x962b('0x13')](function(_0x256ce4){logger['error'](_0x962b('0xc'),_0x2a0904,_0x256ce4);_0x50b3ba(_0x256ce4);});});}
\ No newline at end of file
index 7741ca0..e7f6fc8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa80=['getAnswers','30s','getSummary','post','/:id/clone','clone','put','update','delete','destroy','exports','multer','util','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','./jscriptyProject.controller','get','isAuthenticated','index','/:id','show','getSessions'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xfa80,0x169));var _0x0fa8=function(_0x4fe64b,_0x51547e){_0x4fe64b=_0x4fe64b-0x0;var _0x2d2d0c=_0xfa80[_0x4fe64b];return _0x2d2d0c;};'use strict';var multer=require(_0x0fa8('0x0'));var util=require(_0x0fa8('0x1'));var path=require('path');var timeout=require(_0x0fa8('0x2'));var express=require(_0x0fa8('0x3'));var router=express['Router']();var fs_extra=require(_0x0fa8('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x0fa8('0x5'));var config=require(_0x0fa8('0x6'));var controller=require(_0x0fa8('0x7'));router[_0x0fa8('0x8')]('/',auth[_0x0fa8('0x9')](),controller[_0x0fa8('0xa')]);router[_0x0fa8('0x8')](_0x0fa8('0xb'),auth[_0x0fa8('0x9')](),controller[_0x0fa8('0xc')]);router[_0x0fa8('0x8')]('/:id/sessions',auth[_0x0fa8('0x9')](),controller[_0x0fa8('0xd')]);router[_0x0fa8('0x8')]('/:id/answers',auth['isAuthenticated'](),controller[_0x0fa8('0xe')]);router['get']('/:id/summary',auth[_0x0fa8('0x9')](),timeout(_0x0fa8('0xf')),controller[_0x0fa8('0x10')]);router['post']('/',auth[_0x0fa8('0x9')](),controller['create']);router[_0x0fa8('0x11')](_0x0fa8('0x12'),auth[_0x0fa8('0x9')](),controller[_0x0fa8('0x13')]);router[_0x0fa8('0x14')]('/:id',auth[_0x0fa8('0x9')](),controller[_0x0fa8('0x15')]);router[_0x0fa8('0x16')](_0x0fa8('0xb'),auth[_0x0fa8('0x9')](),controller[_0x0fa8('0x17')]);module[_0x0fa8('0x18')]=router;
\ No newline at end of file
+var _0x8faa=['util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptyProject.controller','get','index','/:id','show','/:id/sessions','isAuthenticated','/:id/answers','getAnswers','30s','getSummary','post','create','/:id/clone','clone','put','destroy','exports'];(function(_0x398437,_0x382e5f){var _0x539597=function(_0x296472){while(--_0x296472){_0x398437['push'](_0x398437['shift']());}};_0x539597(++_0x382e5f);}(_0x8faa,0x64));var _0xa8fa=function(_0x553a87,_0x1d621f){_0x553a87=_0x553a87-0x0;var _0x12d1e6=_0x8faa[_0x553a87];return _0x12d1e6;};'use strict';var multer=require('multer');var util=require(_0xa8fa('0x0'));var path=require(_0xa8fa('0x1'));var timeout=require(_0xa8fa('0x2'));var express=require(_0xa8fa('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xa8fa('0x4'));var interaction=require(_0xa8fa('0x5'));var config=require(_0xa8fa('0x6'));var controller=require(_0xa8fa('0x7'));router[_0xa8fa('0x8')]('/',auth['isAuthenticated'](),controller[_0xa8fa('0x9')]);router[_0xa8fa('0x8')](_0xa8fa('0xa'),auth['isAuthenticated'](),controller[_0xa8fa('0xb')]);router['get'](_0xa8fa('0xc'),auth[_0xa8fa('0xd')](),controller['getSessions']);router[_0xa8fa('0x8')](_0xa8fa('0xe'),auth[_0xa8fa('0xd')](),controller[_0xa8fa('0xf')]);router[_0xa8fa('0x8')]('/:id/summary',auth[_0xa8fa('0xd')](),timeout(_0xa8fa('0x10')),controller[_0xa8fa('0x11')]);router[_0xa8fa('0x12')]('/',auth[_0xa8fa('0xd')](),controller[_0xa8fa('0x13')]);router[_0xa8fa('0x12')](_0xa8fa('0x14'),auth[_0xa8fa('0xd')](),controller[_0xa8fa('0x15')]);router[_0xa8fa('0x16')](_0xa8fa('0xa'),auth[_0xa8fa('0xd')](),controller['update']);router['delete'](_0xa8fa('0xa'),auth[_0xa8fa('0xd')](),controller[_0xa8fa('0x17')]);module[_0xa8fa('0x18')]=router;
\ No newline at end of file
index eb3cfe1..f01187c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc7fd=['long','isObjectLike','formData','stringify','isString','setDataValue','format','{\x22name\x22:\x22%s\x22,\x22description\x22:\x22%s\x22,\x22pages\x22:[]}','getDataValue','name','description','BOOLEAN','sequelize','exports','STRING','TEXT'];(function(_0x1694f5,_0x49b7c3){var _0x5b4321=function(_0x58c183){while(--_0x58c183){_0x1694f5['push'](_0x1694f5['shift']());}};_0x5b4321(++_0x49b7c3);}(_0xc7fd,0x7c));var _0xdc7f=function(_0x1aaa69,_0x412649){_0x1aaa69=_0x1aaa69-0x0;var _0x254ca3=_0xc7fd[_0x1aaa69];return _0x254ca3;};'use strict';var Sequelize=require(_0xdc7f('0x0'));var _=require('lodash');var util=require('util');module[_0xdc7f('0x1')]={'name':{'type':Sequelize[_0xdc7f('0x2')],'unique':'name'},'description':{'type':Sequelize[_0xdc7f('0x2')]},'formData':{'type':Sequelize[_0xdc7f('0x3')](_0xdc7f('0x4')),'set':function(_0x40e90b){if(_[_0xdc7f('0x5')](_0x40e90b)){this['setDataValue'](_0xdc7f('0x6'),JSON[_0xdc7f('0x7')](_0x40e90b));}else if(_[_0xdc7f('0x8')](_0x40e90b)){this[_0xdc7f('0x9')](_0xdc7f('0x6'),_0x40e90b);}else{this['setDataValue'](_0xdc7f('0x6'),util[_0xdc7f('0xa')](_0xdc7f('0xb'),this[_0xdc7f('0xc')](_0xdc7f('0xd'))||'',this[_0xdc7f('0xc')](_0xdc7f('0xe'))||''));}}},'enableUncompleteSave':{'type':Sequelize[_0xdc7f('0xf')],'defaultValue':!![]},'sendUnpauseOnSubmit':{'type':Sequelize[_0xdc7f('0xf')],'defaultValue':![]}};
\ No newline at end of file
+var _0x9666=['long','isObjectLike','setDataValue','stringify','formData','{\x22name\x22:\x22%s\x22,\x22description\x22:\x22%s\x22,\x22pages\x22:[]}','getDataValue','sequelize','lodash','util','exports','STRING','name','TEXT'];(function(_0x541967,_0x3853b9){var _0x537a4d=function(_0x686e3b){while(--_0x686e3b){_0x541967['push'](_0x541967['shift']());}};_0x537a4d(++_0x3853b9);}(_0x9666,0x69));var _0x6966=function(_0x34f0be,_0x14b4db){_0x34f0be=_0x34f0be-0x0;var _0x537a5d=_0x9666[_0x34f0be];return _0x537a5d;};'use strict';var Sequelize=require(_0x6966('0x0'));var _=require(_0x6966('0x1'));var util=require(_0x6966('0x2'));module[_0x6966('0x3')]={'name':{'type':Sequelize[_0x6966('0x4')],'unique':_0x6966('0x5')},'description':{'type':Sequelize[_0x6966('0x4')]},'formData':{'type':Sequelize[_0x6966('0x6')](_0x6966('0x7')),'set':function(_0x311e9f){if(_[_0x6966('0x8')](_0x311e9f)){this[_0x6966('0x9')]('formData',JSON[_0x6966('0xa')](_0x311e9f));}else if(_['isString'](_0x311e9f)){this[_0x6966('0x9')](_0x6966('0xb'),_0x311e9f);}else{this[_0x6966('0x9')](_0x6966('0xb'),util['format'](_0x6966('0xc'),this[_0x6966('0xd')](_0x6966('0x5'))||'',this[_0x6966('0xd')]('description')||''));}}},'enableUncompleteSave':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'sendUnpauseOnSubmit':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index 29801b3..20247b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd3d3=['attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','filters','pick','filter','where','merge','VIRTUAL','options','JscriptyProject','includeAll','include','rows','catch','show','params','find','create','user','role','Projects','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','omit','createdAt','updatedAt','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','userProfileId','findOne','ProjectId','JscriptySessionReport','getAnswers','JscriptyAnswerReport','findAll','fromCharCode','toString','indexOf','startTime','starttime','parse','JscriptyQuestionReport','-createdAt','questionId','question','format','YYYY-MM-DD\x20HH:mm:ss','SessionId','answer','push','now','writeFileSync','/tmp/Jscripty_Project_%d_Summary_%s.csv','setHeader','Content-disposition','attachment;\x20filename=','Jscripty_Project_%d_Summary_%s.csv','download','sendStatus','zip-dir','fast-json-patch','mustache','util','path','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','status','end','json','undefined','limit','count','offset','Content-Range','apply','reject','save','update','then','get','UserProfileResource','destroy','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','query','keys','model'];(function(_0x363b81,_0x81e6ca){var _0x1d92fb=function(_0x129644){while(--_0x129644){_0x363b81['push'](_0x363b81['shift']());}};_0x1d92fb(++_0x81e6ca);}(_0xd3d3,0x19a));var _0x3d3d=function(_0x4ae829,_0x2c842c){_0x4ae829=_0x4ae829-0x0;var _0x256b31=_0xd3d3[_0x4ae829];return _0x256b31;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x3d3d('0x0'));var jsonpatch=require(_0x3d3d('0x1'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x3d3d('0x2'));var util=require(_0x3d3d('0x3'));var path=require(_0x3d3d('0x4'));var sox=require('sox');var csv=require(_0x3d3d('0x5'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x3d3d('0x6'));var _=require(_0x3d3d('0x7'));var squel=require(_0x3d3d('0x8'));var crypto=require(_0x3d3d('0x9'));var jsforce=require(_0x3d3d('0xa'));var deskjs=require(_0x3d3d('0xb'));var toCsv=require(_0x3d3d('0x5'));var querystring=require('querystring');var Papa=require(_0x3d3d('0xc'));var Redis=require(_0x3d3d('0xd'));var authService=require('../../components/auth/service');var qs=require(_0x3d3d('0xe'));var as=require(_0x3d3d('0xf'));var hardwareService=require(_0x3d3d('0x10'));var logger=require(_0x3d3d('0x11'))(_0x3d3d('0x12'));var utils=require(_0x3d3d('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x3d3d('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1cb5f3,_0xe37fe6){_0xe37fe6=_0xe37fe6||0xcc;return function(_0x12cef1){if(_0x12cef1){return _0x1cb5f3['sendStatus'](_0xe37fe6);}return _0x1cb5f3[_0x3d3d('0x15')](_0xe37fe6)[_0x3d3d('0x16')]();};}function respondWithResult(_0x25305d,_0x553f92){_0x553f92=_0x553f92||0xc8;return function(_0x32ca75){if(_0x32ca75){return _0x25305d[_0x3d3d('0x15')](_0x553f92)[_0x3d3d('0x17')](_0x32ca75);}};}function respondWithFilteredResult(_0x16274f,_0xb02393){return function(_0x22bb7d){if(_0x22bb7d){var _0x3840b8=typeof _0xb02393['offset']===_0x3d3d('0x18')&&typeof _0xb02393[_0x3d3d('0x19')]===_0x3d3d('0x18');var _0x5a3bcd=_0x22bb7d[_0x3d3d('0x1a')];var _0x4658b9=_0x3840b8?0x0:_0xb02393[_0x3d3d('0x1b')];var _0x94eba2=_0x3840b8?_0x22bb7d[_0x3d3d('0x1a')]:_0xb02393[_0x3d3d('0x1b')]+_0xb02393[_0x3d3d('0x19')];var _0x4eff34;if(_0x94eba2>=_0x5a3bcd){_0x94eba2=_0x5a3bcd;_0x4eff34=0xc8;}else{_0x4eff34=0xce;}_0x16274f[_0x3d3d('0x15')](_0x4eff34);return _0x16274f['set'](_0x3d3d('0x1c'),_0x4658b9+'-'+_0x94eba2+'/'+_0x5a3bcd)[_0x3d3d('0x17')](_0x22bb7d);}return null;};}function patchUpdates(_0x5691d9){return function(_0x5ede83){try{jsonpatch[_0x3d3d('0x1d')](_0x5ede83,_0x5691d9,!![]);}catch(_0x2cafd4){return BPromise[_0x3d3d('0x1e')](_0x2cafd4);}return _0x5ede83[_0x3d3d('0x1f')]();};}function saveUpdates(_0x49685a,_0x4291cb){return function(_0xf88a7e){if(_0xf88a7e){return _0xf88a7e[_0x3d3d('0x20')](_0x49685a)['then'](function(_0x388900){return _0x388900;});}return null;};}function removeEntity(_0x288002,_0x1dbb69){return function(_0x557bab){if(_0x557bab){return _0x557bab['destroy']()[_0x3d3d('0x21')](function(){var _0x38cd63=_0x557bab[_0x3d3d('0x22')]({'plain':!![]});var _0x25854e='Projects';return db[_0x3d3d('0x23')][_0x3d3d('0x24')]({'where':{'type':_0x25854e,'resourceId':_0x38cd63['id']}})[_0x3d3d('0x21')](function(){return _0x557bab;});})[_0x3d3d('0x21')](function(){_0x288002[_0x3d3d('0x15')](0xcc)[_0x3d3d('0x16')]();});}};}function handleEntityNotFound(_0x158504,_0x50fbad){return function(_0x49a2b7){if(!_0x49a2b7){_0x158504['sendStatus'](0x194);}return _0x49a2b7;};}function handleError(_0x566dd8,_0x5bf25b){_0x5bf25b=_0x5bf25b||0x1f4;return function(_0x51c8fb){logger[_0x3d3d('0x25')](_0x51c8fb[_0x3d3d('0x26')]);if(_0x51c8fb[_0x3d3d('0x27')]){delete _0x51c8fb[_0x3d3d('0x27')];}_0x566dd8[_0x3d3d('0x15')](_0x5bf25b)[_0x3d3d('0x28')](_0x51c8fb);};}exports[_0x3d3d('0x29')]=function(_0x5c1e3c,_0xecbe5b){var _0x20f7b8={},_0x421152={},_0x413e80={'count':0x0,'rows':[]};var _0x237815=_[_0x3d3d('0x2a')](db['JscriptyProject'][_0x3d3d('0x2b')],function(_0x366414){return{'name':_0x366414[_0x3d3d('0x2c')],'type':_0x366414[_0x3d3d('0x2d')][_0x3d3d('0x2e')]};});_0x421152['model']=_['map'](_0x237815,_0x3d3d('0x27'));_0x421152[_0x3d3d('0x2f')]=_[_0x3d3d('0x30')](_0x5c1e3c[_0x3d3d('0x2f')]);_0x421152['filters']=_['intersection'](_0x421152[_0x3d3d('0x31')],_0x421152[_0x3d3d('0x2f')]);_0x20f7b8[_0x3d3d('0x32')]=_[_0x3d3d('0x33')](_0x421152[_0x3d3d('0x31')],qs[_0x3d3d('0x34')](_0x5c1e3c[_0x3d3d('0x2f')][_0x3d3d('0x34')]));_0x20f7b8[_0x3d3d('0x32')]=_0x20f7b8[_0x3d3d('0x32')][_0x3d3d('0x35')]?_0x20f7b8['attributes']:_0x421152[_0x3d3d('0x31')];if(!_0x5c1e3c[_0x3d3d('0x2f')][_0x3d3d('0x36')](_0x3d3d('0x37'))){_0x20f7b8[_0x3d3d('0x19')]=qs[_0x3d3d('0x19')](_0x5c1e3c[_0x3d3d('0x2f')][_0x3d3d('0x19')]);_0x20f7b8[_0x3d3d('0x1b')]=qs['offset'](_0x5c1e3c['query'][_0x3d3d('0x1b')]);}_0x20f7b8[_0x3d3d('0x38')]=qs['sort'](_0x5c1e3c[_0x3d3d('0x2f')][_0x3d3d('0x39')]);_0x20f7b8['where']=qs[_0x3d3d('0x3a')](_[_0x3d3d('0x3b')](_0x5c1e3c[_0x3d3d('0x2f')],_0x421152[_0x3d3d('0x3a')]),_0x237815);if(_0x5c1e3c['query'][_0x3d3d('0x3c')]){_0x20f7b8[_0x3d3d('0x3d')]=_[_0x3d3d('0x3e')](_0x20f7b8[_0x3d3d('0x3d')],{'$or':_[_0x3d3d('0x2a')](_0x237815,function(_0x54647b){if(_0x54647b[_0x3d3d('0x2d')]!==_0x3d3d('0x3f')){var _0x486fc4={};_0x486fc4[_0x54647b[_0x3d3d('0x27')]]={'$like':'%'+_0x5c1e3c[_0x3d3d('0x2f')][_0x3d3d('0x3c')]+'%'};return _0x486fc4;}})});}_0x20f7b8=_['merge']({},_0x20f7b8,_0x5c1e3c[_0x3d3d('0x40')]);var _0x49db65={'where':_0x20f7b8[_0x3d3d('0x3d')]};return db[_0x3d3d('0x41')]['count'](_0x49db65)[_0x3d3d('0x21')](function(_0x130686){_0x413e80[_0x3d3d('0x1a')]=_0x130686;if(_0x5c1e3c[_0x3d3d('0x2f')][_0x3d3d('0x42')]){_0x20f7b8[_0x3d3d('0x43')]=[{'all':!![]}];}return db['JscriptyProject']['findAll'](_0x20f7b8);})['then'](function(_0xe5e1){_0x413e80[_0x3d3d('0x44')]=_0xe5e1;return _0x413e80;})[_0x3d3d('0x21')](respondWithFilteredResult(_0xecbe5b,_0x20f7b8))[_0x3d3d('0x45')](handleError(_0xecbe5b,null));};exports[_0x3d3d('0x46')]=function(_0x214357,_0x4fad9f){var _0x158b1d={'raw':![],'where':{'id':_0x214357[_0x3d3d('0x47')]['id']}},_0xde01a5={};_0xde01a5[_0x3d3d('0x31')]=_['keys'](db[_0x3d3d('0x41')]['rawAttributes']);_0xde01a5[_0x3d3d('0x2f')]=_[_0x3d3d('0x30')](_0x214357[_0x3d3d('0x2f')]);_0xde01a5[_0x3d3d('0x3a')]=_['intersection'](_0xde01a5[_0x3d3d('0x31')],_0xde01a5[_0x3d3d('0x2f')]);_0x158b1d['attributes']=_[_0x3d3d('0x33')](_0xde01a5['model'],qs['fields'](_0x214357['query'][_0x3d3d('0x34')]));_0x158b1d['attributes']=_0x158b1d[_0x3d3d('0x32')]['length']?_0x158b1d['attributes']:_0xde01a5['model'];if(_0x214357[_0x3d3d('0x2f')][_0x3d3d('0x42')]){_0x158b1d['include']=[{'all':!![]}];}_0x158b1d=_[_0x3d3d('0x3e')]({},_0x158b1d,_0x214357['options']);return db[_0x3d3d('0x41')][_0x3d3d('0x48')](_0x158b1d)[_0x3d3d('0x21')](handleEntityNotFound(_0x4fad9f,null))[_0x3d3d('0x21')](respondWithResult(_0x4fad9f,null))[_0x3d3d('0x45')](handleError(_0x4fad9f,null));};exports[_0x3d3d('0x49')]=function(_0x1825e8,_0x437782){return db[_0x3d3d('0x41')][_0x3d3d('0x49')](_0x1825e8['body'],{})[_0x3d3d('0x21')](function(_0x25f7a5){var _0x25d2f6=_0x1825e8[_0x3d3d('0x4a')][_0x3d3d('0x22')]({'plain':!![]});if(!_0x25d2f6)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x25d2f6[_0x3d3d('0x4b')]===_0x3d3d('0x4a')){var _0xbad206=_0x25f7a5[_0x3d3d('0x22')]({'plain':!![]});var _0x1b22a9=_0x3d3d('0x4c');return db['UserProfileSection'][_0x3d3d('0x48')]({'where':{'name':_0x1b22a9,'userProfileId':_0x25d2f6['userProfileId']},'raw':!![]})[_0x3d3d('0x21')](function(_0x181c76){if(_0x181c76&&_0x181c76['autoAssociation']===0x0){return db['UserProfileResource']['create']({'name':_0xbad206[_0x3d3d('0x27')],'resourceId':_0xbad206['id'],'type':_0x181c76[_0x3d3d('0x27')],'sectionId':_0x181c76['id']},{})['then'](function(){return _0x25f7a5;});}else{return _0x25f7a5;}})['catch'](function(_0x1a0c6d){logger[_0x3d3d('0x25')](_0x3d3d('0x4d'),_0x1a0c6d);throw _0x1a0c6d;});}return _0x25f7a5;})[_0x3d3d('0x21')](respondWithResult(_0x437782,0xc9))[_0x3d3d('0x45')](handleError(_0x437782,null));};exports[_0x3d3d('0x4e')]=function(_0x346b0c,_0x1a98a1){var _0x50c0b1={'where':{'id':_0x346b0c[_0x3d3d('0x47')]['id']}},_0x24418d={};_0x24418d['model']=_[_0x3d3d('0x30')](db[_0x3d3d('0x41')][_0x3d3d('0x2b')]);_0x50c0b1[_0x3d3d('0x32')]=_['intersection'](_0x24418d['model'],qs['fields'](_0x346b0c['query'][_0x3d3d('0x34')]));_0x50c0b1['attributes']=_0x50c0b1[_0x3d3d('0x32')]['length']?_0x50c0b1[_0x3d3d('0x32')]:_0x24418d[_0x3d3d('0x31')];if(_0x346b0c[_0x3d3d('0x2f')][_0x3d3d('0x42')]){_0x50c0b1[_0x3d3d('0x43')]=[{'all':!![]}];}_0x50c0b1=_['merge']({},_0x50c0b1,_0x346b0c['options']);return db[_0x3d3d('0x41')][_0x3d3d('0x48')](_0x50c0b1)['then'](handleEntityNotFound(_0x1a98a1,null))[_0x3d3d('0x21')](function(_0x51be10){if(_0x51be10){var _0x419c4e=_0x51be10['get']({'plain':!![]});_0x419c4e=qs[_0x3d3d('0x4f')](_0x419c4e,['id',_0x3d3d('0x50'),_0x3d3d('0x51')]);_0x346b0c[_0x3d3d('0x52')]=_['omit'](_0x346b0c[_0x3d3d('0x52')],['id','createdAt',_0x3d3d('0x51')]);return db[_0x3d3d('0x41')]['create'](_[_0x3d3d('0x3e')](_0x419c4e,_0x346b0c[_0x3d3d('0x52')]),{'include':_0x346b0c[_0x3d3d('0x2f')][_0x3d3d('0x42')]?[{'all':!![]}]:undefined})['then'](function(_0x3c68fb){var _0x4d79ce=_0x346b0c[_0x3d3d('0x4a')][_0x3d3d('0x22')]({'plain':!![]});if(!_0x4d79ce)throw new Error(_0x3d3d('0x53'));if(_0x4d79ce[_0x3d3d('0x4b')]===_0x3d3d('0x4a')){var _0x5f0de4=_0x3c68fb['get']({'plain':!![]});var _0x130ee8=_0x3d3d('0x4c');return db['UserProfileSection'][_0x3d3d('0x48')]({'where':{'name':_0x130ee8,'userProfileId':_0x4d79ce[_0x3d3d('0x54')]},'raw':!![]})['then'](function(_0x46de23){if(_0x46de23&&_0x46de23['autoAssociation']===0x0){return db[_0x3d3d('0x23')][_0x3d3d('0x49')]({'name':_0x5f0de4['name'],'resourceId':_0x5f0de4['id'],'type':_0x46de23[_0x3d3d('0x27')],'sectionId':_0x46de23['id']},{})['then'](function(){return _0x3c68fb;});}else{return _0x3c68fb;}})['catch'](function(_0x4eb7da){logger[_0x3d3d('0x25')](_0x3d3d('0x4d'),_0x4eb7da);throw _0x4eb7da;});}return _0x3c68fb;});}})[_0x3d3d('0x21')](respondWithResult(_0x1a98a1,0xc9))[_0x3d3d('0x45')](handleError(_0x1a98a1,null));};exports[_0x3d3d('0x20')]=function(_0x4e7390,_0x57e663){if(_0x4e7390[_0x3d3d('0x52')]['id']){delete _0x4e7390[_0x3d3d('0x52')]['id'];}return db[_0x3d3d('0x41')][_0x3d3d('0x48')]({'where':{'id':_0x4e7390[_0x3d3d('0x47')]['id']}})['then'](handleEntityNotFound(_0x57e663,null))[_0x3d3d('0x21')](saveUpdates(_0x4e7390[_0x3d3d('0x52')],null))[_0x3d3d('0x21')](respondWithResult(_0x57e663,null))[_0x3d3d('0x45')](handleError(_0x57e663,null));};exports[_0x3d3d('0x24')]=function(_0x391c12,_0xbe69c4){return db[_0x3d3d('0x41')][_0x3d3d('0x48')]({'where':{'id':_0x391c12[_0x3d3d('0x47')]['id']}})[_0x3d3d('0x21')](handleEntityNotFound(_0xbe69c4,null))[_0x3d3d('0x21')](removeEntity(_0xbe69c4,null))['catch'](handleError(_0xbe69c4,null));};exports['getSessions']=function(_0x45d1d4,_0x16e672,_0x5b5554){var _0x19dae8={'raw':!![],'where':{}};var _0x158b51={};var _0x3fdd24={'count':0x0,'rows':[]};return db[_0x3d3d('0x41')][_0x3d3d('0x55')]({'where':{'id':_0x45d1d4[_0x3d3d('0x47')]['id']}})[_0x3d3d('0x21')](handleEntityNotFound(_0x16e672,null))[_0x3d3d('0x21')](function(_0x2421a7){if(_0x2421a7){_0x158b51[_0x3d3d('0x31')]=_[_0x3d3d('0x30')](db['JscriptySessionReport'][_0x3d3d('0x2b')]);_0x158b51['query']=_[_0x3d3d('0x30')](_0x45d1d4[_0x3d3d('0x2f')]);_0x158b51[_0x3d3d('0x3a')]=_['intersection'](_0x158b51['model'],_0x158b51[_0x3d3d('0x2f')]);_0x19dae8['attributes']=_[_0x3d3d('0x33')](_0x158b51[_0x3d3d('0x31')],qs[_0x3d3d('0x34')](_0x45d1d4[_0x3d3d('0x2f')][_0x3d3d('0x34')]));_0x19dae8[_0x3d3d('0x32')]=_0x19dae8[_0x3d3d('0x32')][_0x3d3d('0x35')]?_0x19dae8['attributes']:_0x158b51['model'];if(!_0x45d1d4[_0x3d3d('0x2f')][_0x3d3d('0x36')](_0x3d3d('0x37'))){_0x19dae8[_0x3d3d('0x19')]=qs[_0x3d3d('0x19')](_0x45d1d4[_0x3d3d('0x2f')][_0x3d3d('0x19')]);_0x19dae8[_0x3d3d('0x1b')]=qs['offset'](_0x45d1d4[_0x3d3d('0x2f')]['offset']);}_0x19dae8[_0x3d3d('0x38')]=qs[_0x3d3d('0x39')](_0x45d1d4[_0x3d3d('0x2f')][_0x3d3d('0x39')]);_0x19dae8['where']=qs[_0x3d3d('0x3a')](_[_0x3d3d('0x3b')](_0x45d1d4['query'],_0x158b51[_0x3d3d('0x3a')]));_0x19dae8[_0x3d3d('0x3d')][_0x3d3d('0x56')]=_0x2421a7['id'];if(_0x45d1d4['query']['filter']){_0x19dae8[_0x3d3d('0x3d')]=_[_0x3d3d('0x3e')](_0x19dae8[_0x3d3d('0x3d')],{'$or':_[_0x3d3d('0x2a')](_0x19dae8[_0x3d3d('0x32')],function(_0x1417b5){var _0x30de4e={};_0x30de4e[_0x1417b5]={'$like':'%'+_0x45d1d4[_0x3d3d('0x2f')][_0x3d3d('0x3c')]+'%'};return _0x30de4e;})});}_0x19dae8=_['merge']({},_0x19dae8,_0x45d1d4['options']);return db[_0x3d3d('0x57')]['count']({'where':_0x19dae8['where']})[_0x3d3d('0x21')](function(_0x7d16f8){_0x3fdd24[_0x3d3d('0x1a')]=_0x7d16f8;if(_0x45d1d4[_0x3d3d('0x2f')]['includeAll']){_0x19dae8[_0x3d3d('0x43')]=[{'all':!![]}];}return db['JscriptySessionReport']['findAll'](_0x19dae8);})[_0x3d3d('0x21')](function(_0x85ba84){_0x3fdd24[_0x3d3d('0x44')]=_0x85ba84;return _0x3fdd24;});}})[_0x3d3d('0x21')](respondWithFilteredResult(_0x16e672,_0x19dae8))[_0x3d3d('0x45')](handleError(_0x16e672,null));};exports[_0x3d3d('0x58')]=function(_0x6557b8,_0x1f78d8,_0x31124f){var _0x352b53={'raw':!![],'where':{}};var _0x221832={};var _0x46b342={'count':0x0,'rows':[]};return db[_0x3d3d('0x41')][_0x3d3d('0x55')]({'where':{'id':_0x6557b8[_0x3d3d('0x47')]['id']}})['then'](handleEntityNotFound(_0x1f78d8,null))[_0x3d3d('0x21')](function(_0x413607){if(_0x413607){_0x221832[_0x3d3d('0x31')]=_[_0x3d3d('0x30')](db['JscriptyAnswerReport']['rawAttributes']);_0x221832[_0x3d3d('0x2f')]=_[_0x3d3d('0x30')](_0x6557b8[_0x3d3d('0x2f')]);_0x221832[_0x3d3d('0x3a')]=_[_0x3d3d('0x33')](_0x221832[_0x3d3d('0x31')],_0x221832[_0x3d3d('0x2f')]);_0x352b53[_0x3d3d('0x32')]=_[_0x3d3d('0x33')](_0x221832[_0x3d3d('0x31')],qs[_0x3d3d('0x34')](_0x6557b8[_0x3d3d('0x2f')][_0x3d3d('0x34')]));_0x352b53['attributes']=_0x352b53[_0x3d3d('0x32')]['length']?_0x352b53['attributes']:_0x221832[_0x3d3d('0x31')];if(!_0x6557b8[_0x3d3d('0x2f')][_0x3d3d('0x36')](_0x3d3d('0x37'))){_0x352b53[_0x3d3d('0x19')]=qs['limit'](_0x6557b8[_0x3d3d('0x2f')][_0x3d3d('0x19')]);_0x352b53['offset']=qs[_0x3d3d('0x1b')](_0x6557b8[_0x3d3d('0x2f')][_0x3d3d('0x1b')]);}_0x352b53[_0x3d3d('0x38')]=qs['sort'](_0x6557b8[_0x3d3d('0x2f')][_0x3d3d('0x39')]);_0x352b53['where']=qs['filters'](_[_0x3d3d('0x3b')](_0x6557b8[_0x3d3d('0x2f')],_0x221832[_0x3d3d('0x3a')]));_0x352b53[_0x3d3d('0x3d')][_0x3d3d('0x56')]=_0x413607['id'];if(_0x6557b8[_0x3d3d('0x2f')][_0x3d3d('0x3c')]){_0x352b53[_0x3d3d('0x3d')]=_[_0x3d3d('0x3e')](_0x352b53[_0x3d3d('0x3d')],{'$or':_[_0x3d3d('0x2a')](_0x352b53['attributes'],function(_0x1f7fa8){var _0x34fa27={};_0x34fa27[_0x1f7fa8]={'$like':'%'+_0x6557b8[_0x3d3d('0x2f')][_0x3d3d('0x3c')]+'%'};return _0x34fa27;})});}_0x352b53=_[_0x3d3d('0x3e')]({},_0x352b53,_0x6557b8[_0x3d3d('0x40')]);return db[_0x3d3d('0x59')][_0x3d3d('0x1a')]({'where':_0x352b53[_0x3d3d('0x3d')]})[_0x3d3d('0x21')](function(_0x22f909){_0x46b342[_0x3d3d('0x1a')]=_0x22f909;if(_0x6557b8['query'][_0x3d3d('0x42')]){_0x352b53[_0x3d3d('0x43')]=[{'all':!![]}];}return db['JscriptyAnswerReport'][_0x3d3d('0x5a')](_0x352b53);})[_0x3d3d('0x21')](function(_0x235d77){_0x46b342[_0x3d3d('0x44')]=_0x235d77;return _0x46b342;});}})[_0x3d3d('0x21')](respondWithFilteredResult(_0x1f78d8,_0x352b53))[_0x3d3d('0x45')](handleError(_0x1f78d8,null));};function char(_0x1b6fd4){return'number'===typeof _0x1b6fd4?String[_0x3d3d('0x5b')]['apply'](null,arguments):_0x1b6fd4;}function needsEncapsulation(_0x31aa86){return!!_0x31aa86&&(_0x31aa86[_0x3d3d('0x5c')]()[_0x3d3d('0x5d')](char(0xd))>=0x0||_0x31aa86[_0x3d3d('0x5c')]()[_0x3d3d('0x5d')](char(0xa))>=0x0||_0x31aa86[_0x3d3d('0x5c')]()['indexOf'](char(0x2c))>=0x0||_0x31aa86[_0x3d3d('0x5c')]()[_0x3d3d('0x5d')](char(0x22))>=0x0);}function encapsulate(_0x3d73ad){var _0x652cb1=char(0x22),_0x18fb1b='\x5c'+char(0x22),_0x357e87=_0x3d73ad['toString']()['replace'](new RegExp(_0x652cb1,'g'),_0x18fb1b);return _0x652cb1+_0x357e87+_0x652cb1;}exports['getSummary']=function(_0x13d0ad,_0x5a34d6,_0x234852){var _0x134965,_0x31ead2;var _0x4159c8={'where':{'ProjectId':_0x13d0ad[_0x3d3d('0x47')]['id']}};if(_0x13d0ad['query'][_0x3d3d('0x5e')]){_0x4159c8['where'][_0x3d3d('0x5f')]=JSON[_0x3d3d('0x60')](_0x13d0ad[_0x3d3d('0x2f')]['startTime']);}return db[_0x3d3d('0x57')][_0x3d3d('0x5a')](_0x4159c8)[_0x3d3d('0x21')](handleEntityNotFound(_0x5a34d6,null))[_0x3d3d('0x21')](function(_0x85ff1f){if(_0x85ff1f){_0x134965=_0x85ff1f;return db[_0x3d3d('0x61')][_0x3d3d('0x5a')]({'where':{'SessionId':{'$in':_[_0x3d3d('0x2a')](_0x134965,'id')},'ProjectId':_0x13d0ad[_0x3d3d('0x47')]['id']},'order':_0x3d3d('0x62')});}})[_0x3d3d('0x21')](handleEntityNotFound(_0x5a34d6,null))[_0x3d3d('0x21')](function(_0x324019){if(_0x324019){_0x31ead2=_0x324019;var _0x4624b0={};for(var _0x22c86c=0x0,_0x30931c=_0x31ead2[_0x3d3d('0x35')];_0x22c86c<_0x30931c;_0x22c86c++){if(!_0x4624b0[_0x3d3d('0x36')](_0x31ead2[_0x22c86c]['questionId'])){_0x4624b0[_0x31ead2[_0x22c86c][_0x3d3d('0x63')]]=needsEncapsulation(_0x31ead2[_0x22c86c]['question'])?encapsulate(_0x31ead2[_0x22c86c][_0x3d3d('0x64')]):_0x31ead2[_0x22c86c][_0x3d3d('0x64')];}}var _0x366b92=[],_0x319b33={};for(var _0x241f56=0x0,_0x5df276=_0x134965['length'];_0x241f56<_0x5df276;_0x241f56++){_0x319b33={'ProjectId':_0x13d0ad[_0x3d3d('0x47')]['id'],'SessionId':_0x134965[_0x241f56]['id'],'StartTime':moment(_0x134965[_0x241f56]['starttime'])[_0x3d3d('0x65')](_0x3d3d('0x66'))};for(var _0x256dcf=0x0,_0x1a6892=_0x31ead2[_0x3d3d('0x35')];_0x256dcf<_0x1a6892;_0x256dcf++){if(_0x31ead2[_0x256dcf][_0x3d3d('0x67')]==_0x134965[_0x241f56]['id']&&_0x4624b0[_0x3d3d('0x36')](_0x31ead2[_0x256dcf][_0x3d3d('0x63')])){_0x319b33[_0x4624b0[_0x31ead2[_0x256dcf][_0x3d3d('0x63')]]]=_0x31ead2[_0x256dcf][_0x3d3d('0x68')];}}for(var _0x5ecd08 in _0x4624b0){if(!_0x319b33[_0x3d3d('0x36')](_0x4624b0[_0x5ecd08])){_0x319b33[_0x4624b0[_0x5ecd08]]=null;}}_0x366b92[_0x3d3d('0x69')](_0x319b33);}return _0x366b92;}})[_0x3d3d('0x21')](function(_0x25f799){if(!_['isEmpty'](_0x25f799)){var _0x817ed1=toCsv(_0x25f799);var _0x5da9be=Date[_0x3d3d('0x6a')]();fs[_0x3d3d('0x6b')](util[_0x3d3d('0x65')](_0x3d3d('0x6c'),_0x13d0ad[_0x3d3d('0x47')]['id'],_0x5da9be),_0x817ed1);_0x5a34d6[_0x3d3d('0x6d')](_0x3d3d('0x6e'),_0x3d3d('0x6f')+util[_0x3d3d('0x65')](_0x3d3d('0x70'),_0x13d0ad[_0x3d3d('0x47')]['id'],_0x5da9be));_0x5a34d6[_0x3d3d('0x6d')]('Content-type','text/csv');return _0x5a34d6[_0x3d3d('0x71')](util['format'](_0x3d3d('0x6c'),_0x13d0ad['params']['id'],_0x5da9be));}else{return _0x5a34d6[_0x3d3d('0x72')](0xcc);}})[_0x3d3d('0x45')](handleError(_0x5a34d6,null));};
\ No newline at end of file
+var _0xe495=['question','starttime','format','YYYY-MM-DD\x20HH:mm:ss','SessionId','answer','push','isEmpty','now','/tmp/Jscripty_Project_%d_Summary_%s.csv','Content-disposition','attachment;\x20filename=','setHeader','Content-type','text/csv','download','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','limit','undefined','count','Content-Range','apply','reject','then','get','Projects','UserProfileResource','end','error','name','send','index','map','JscriptyProject','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','merge','where','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','find','create','body','role','user','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','createdAt','omit','Unable\x20to\x20retrieve\x20the\x20current\x20user','autoAssociation','update','destroy','findOne','ProjectId','JscriptyAnswerReport','number','fromCharCode','indexOf','toString','replace','getSummary','params','parse','startTime','JscriptySessionReport','JscriptyQuestionReport','-createdAt','questionId'];(function(_0x46482c,_0x20c42d){var _0x41ca8c=function(_0x4f2d92){while(--_0x4f2d92){_0x46482c['push'](_0x46482c['shift']());}};_0x41ca8c(++_0x20c42d);}(_0xe495,0xfe));var _0x5e49=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0xe495[_0x40a045];return _0x1a687c;};'use strict';var emlformat=require(_0x5e49('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x5e49('0x1'));var jsonpatch=require(_0x5e49('0x2'));var rp=require('request-promise');var moment=require(_0x5e49('0x3'));var BPromise=require(_0x5e49('0x4'));var Mustache=require(_0x5e49('0x5'));var util=require('util');var path=require(_0x5e49('0x6'));var sox=require(_0x5e49('0x7'));var csv=require(_0x5e49('0x8'));var ejs=require(_0x5e49('0x9'));var fs=require('fs');var fs_extra=require(_0x5e49('0xa'));var _=require(_0x5e49('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x5e49('0xc'));var deskjs=require(_0x5e49('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x5e49('0xe'));var Redis=require('ioredis');var authService=require(_0x5e49('0xf'));var qs=require(_0x5e49('0x10'));var as=require(_0x5e49('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x5e49('0x12'))(_0x5e49('0x13'));var utils=require(_0x5e49('0x14'));var config=require(_0x5e49('0x15'));var licenseUtil=require(_0x5e49('0x16'));var db=require(_0x5e49('0x17'))['db'];function respondWithStatusCode(_0x32909f,_0x1c8bac){_0x1c8bac=_0x1c8bac||0xcc;return function(_0x34fefd){if(_0x34fefd){return _0x32909f[_0x5e49('0x18')](_0x1c8bac);}return _0x32909f[_0x5e49('0x19')](_0x1c8bac)['end']();};}function respondWithResult(_0x25149e,_0x50157d){_0x50157d=_0x50157d||0xc8;return function(_0x43f447){if(_0x43f447){return _0x25149e[_0x5e49('0x19')](_0x50157d)[_0x5e49('0x1a')](_0x43f447);}};}function respondWithFilteredResult(_0x44e570,_0x368044){return function(_0x1ed998){if(_0x1ed998){var _0x48d55d=typeof _0x368044[_0x5e49('0x1b')]==='undefined'&&typeof _0x368044[_0x5e49('0x1c')]===_0x5e49('0x1d');var _0x43c424=_0x1ed998[_0x5e49('0x1e')];var _0x3b4b7e=_0x48d55d?0x0:_0x368044[_0x5e49('0x1b')];var _0x59ec99=_0x48d55d?_0x1ed998[_0x5e49('0x1e')]:_0x368044[_0x5e49('0x1b')]+_0x368044[_0x5e49('0x1c')];var _0xd2d53a;if(_0x59ec99>=_0x43c424){_0x59ec99=_0x43c424;_0xd2d53a=0xc8;}else{_0xd2d53a=0xce;}_0x44e570[_0x5e49('0x19')](_0xd2d53a);return _0x44e570['set'](_0x5e49('0x1f'),_0x3b4b7e+'-'+_0x59ec99+'/'+_0x43c424)['json'](_0x1ed998);}return null;};}function patchUpdates(_0x3803ce){return function(_0x574b96){try{jsonpatch[_0x5e49('0x20')](_0x574b96,_0x3803ce,!![]);}catch(_0x1468a3){return BPromise[_0x5e49('0x21')](_0x1468a3);}return _0x574b96['save']();};}function saveUpdates(_0x5330b4,_0x5c3e3b){return function(_0x3ea542){if(_0x3ea542){return _0x3ea542['update'](_0x5330b4)[_0x5e49('0x22')](function(_0x125933){return _0x125933;});}return null;};}function removeEntity(_0x9ba537,_0x45fe11){return function(_0x34966a){if(_0x34966a){return _0x34966a['destroy']()['then'](function(){var _0x22847f=_0x34966a[_0x5e49('0x23')]({'plain':!![]});var _0x1b5b1b=_0x5e49('0x24');return db[_0x5e49('0x25')]['destroy']({'where':{'type':_0x1b5b1b,'resourceId':_0x22847f['id']}})[_0x5e49('0x22')](function(){return _0x34966a;});})[_0x5e49('0x22')](function(){_0x9ba537['status'](0xcc)[_0x5e49('0x26')]();});}};}function handleEntityNotFound(_0x15bd2e,_0x1047bc){return function(_0x2014d7){if(!_0x2014d7){_0x15bd2e[_0x5e49('0x18')](0x194);}return _0x2014d7;};}function handleError(_0x154092,_0x59e78d){_0x59e78d=_0x59e78d||0x1f4;return function(_0x446dee){logger[_0x5e49('0x27')](_0x446dee['stack']);if(_0x446dee[_0x5e49('0x28')]){delete _0x446dee[_0x5e49('0x28')];}_0x154092['status'](_0x59e78d)[_0x5e49('0x29')](_0x446dee);};}exports[_0x5e49('0x2a')]=function(_0x591df5,_0x1c8577){var _0x294a52={},_0x5aa240={},_0x15c7be={'count':0x0,'rows':[]};var _0x1c3b8f=_[_0x5e49('0x2b')](db[_0x5e49('0x2c')][_0x5e49('0x2d')],function(_0x42f526){return{'name':_0x42f526['fieldName'],'type':_0x42f526[_0x5e49('0x2e')][_0x5e49('0x2f')]};});_0x5aa240[_0x5e49('0x30')]=_[_0x5e49('0x2b')](_0x1c3b8f,_0x5e49('0x28'));_0x5aa240[_0x5e49('0x31')]=_[_0x5e49('0x32')](_0x591df5[_0x5e49('0x31')]);_0x5aa240[_0x5e49('0x33')]=_[_0x5e49('0x34')](_0x5aa240['model'],_0x5aa240['query']);_0x294a52[_0x5e49('0x35')]=_[_0x5e49('0x34')](_0x5aa240[_0x5e49('0x30')],qs[_0x5e49('0x36')](_0x591df5[_0x5e49('0x31')][_0x5e49('0x36')]));_0x294a52[_0x5e49('0x35')]=_0x294a52['attributes'][_0x5e49('0x37')]?_0x294a52[_0x5e49('0x35')]:_0x5aa240[_0x5e49('0x30')];if(!_0x591df5['query'][_0x5e49('0x38')](_0x5e49('0x39'))){_0x294a52[_0x5e49('0x1c')]=qs[_0x5e49('0x1c')](_0x591df5['query'][_0x5e49('0x1c')]);_0x294a52[_0x5e49('0x1b')]=qs[_0x5e49('0x1b')](_0x591df5[_0x5e49('0x31')][_0x5e49('0x1b')]);}_0x294a52[_0x5e49('0x3a')]=qs[_0x5e49('0x3b')](_0x591df5[_0x5e49('0x31')][_0x5e49('0x3b')]);_0x294a52['where']=qs['filters'](_[_0x5e49('0x3c')](_0x591df5[_0x5e49('0x31')],_0x5aa240[_0x5e49('0x33')]),_0x1c3b8f);if(_0x591df5[_0x5e49('0x31')][_0x5e49('0x3d')]){_0x294a52['where']=_[_0x5e49('0x3e')](_0x294a52[_0x5e49('0x3f')],{'$or':_[_0x5e49('0x2b')](_0x1c3b8f,function(_0x5953cf){if(_0x5953cf[_0x5e49('0x2e')]!==_0x5e49('0x40')){var _0x238e2d={};_0x238e2d[_0x5953cf[_0x5e49('0x28')]]={'$like':'%'+_0x591df5['query'][_0x5e49('0x3d')]+'%'};return _0x238e2d;}})});}_0x294a52=_['merge']({},_0x294a52,_0x591df5[_0x5e49('0x41')]);var _0x492b6a={'where':_0x294a52[_0x5e49('0x3f')]};return db[_0x5e49('0x2c')][_0x5e49('0x1e')](_0x492b6a)[_0x5e49('0x22')](function(_0xf1cd9e){_0x15c7be['count']=_0xf1cd9e;if(_0x591df5[_0x5e49('0x31')][_0x5e49('0x42')]){_0x294a52[_0x5e49('0x43')]=[{'all':!![]}];}return db[_0x5e49('0x2c')][_0x5e49('0x44')](_0x294a52);})[_0x5e49('0x22')](function(_0xef9fec){_0x15c7be[_0x5e49('0x45')]=_0xef9fec;return _0x15c7be;})[_0x5e49('0x22')](respondWithFilteredResult(_0x1c8577,_0x294a52))[_0x5e49('0x46')](handleError(_0x1c8577,null));};exports[_0x5e49('0x47')]=function(_0x29b3dc,_0x1aa339){var _0x5a4b5d={'raw':![],'where':{'id':_0x29b3dc['params']['id']}},_0xcc52bb={};_0xcc52bb[_0x5e49('0x30')]=_[_0x5e49('0x32')](db[_0x5e49('0x2c')][_0x5e49('0x2d')]);_0xcc52bb[_0x5e49('0x31')]=_['keys'](_0x29b3dc['query']);_0xcc52bb[_0x5e49('0x33')]=_[_0x5e49('0x34')](_0xcc52bb[_0x5e49('0x30')],_0xcc52bb[_0x5e49('0x31')]);_0x5a4b5d[_0x5e49('0x35')]=_['intersection'](_0xcc52bb[_0x5e49('0x30')],qs[_0x5e49('0x36')](_0x29b3dc[_0x5e49('0x31')]['fields']));_0x5a4b5d[_0x5e49('0x35')]=_0x5a4b5d['attributes'][_0x5e49('0x37')]?_0x5a4b5d['attributes']:_0xcc52bb[_0x5e49('0x30')];if(_0x29b3dc['query'][_0x5e49('0x42')]){_0x5a4b5d[_0x5e49('0x43')]=[{'all':!![]}];}_0x5a4b5d=_['merge']({},_0x5a4b5d,_0x29b3dc['options']);return db[_0x5e49('0x2c')][_0x5e49('0x48')](_0x5a4b5d)[_0x5e49('0x22')](handleEntityNotFound(_0x1aa339,null))[_0x5e49('0x22')](respondWithResult(_0x1aa339,null))['catch'](handleError(_0x1aa339,null));};exports[_0x5e49('0x49')]=function(_0x2046e3,_0xad14d9){return db[_0x5e49('0x2c')]['create'](_0x2046e3[_0x5e49('0x4a')],{})[_0x5e49('0x22')](function(_0x15f302){var _0x438fab=_0x2046e3['user'][_0x5e49('0x23')]({'plain':!![]});if(!_0x438fab)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x438fab[_0x5e49('0x4b')]===_0x5e49('0x4c')){var _0x5c047d=_0x15f302[_0x5e49('0x23')]({'plain':!![]});var _0x1e2a96=_0x5e49('0x24');return db[_0x5e49('0x4d')][_0x5e49('0x48')]({'where':{'name':_0x1e2a96,'userProfileId':_0x438fab[_0x5e49('0x4e')]},'raw':!![]})[_0x5e49('0x22')](function(_0x109700){if(_0x109700&&_0x109700['autoAssociation']===0x0){return db[_0x5e49('0x25')][_0x5e49('0x49')]({'name':_0x5c047d['name'],'resourceId':_0x5c047d['id'],'type':_0x109700[_0x5e49('0x28')],'sectionId':_0x109700['id']},{})['then'](function(){return _0x15f302;});}else{return _0x15f302;}})[_0x5e49('0x46')](function(_0x4f731d){logger['error'](_0x5e49('0x4f'),_0x4f731d);throw _0x4f731d;});}return _0x15f302;})[_0x5e49('0x22')](respondWithResult(_0xad14d9,0xc9))[_0x5e49('0x46')](handleError(_0xad14d9,null));};exports[_0x5e49('0x50')]=function(_0x2d636c,_0x33239f){var _0x372eb0={'where':{'id':_0x2d636c['params']['id']}},_0x26be76={};_0x26be76[_0x5e49('0x30')]=_['keys'](db[_0x5e49('0x2c')]['rawAttributes']);_0x372eb0['attributes']=_[_0x5e49('0x34')](_0x26be76[_0x5e49('0x30')],qs[_0x5e49('0x36')](_0x2d636c[_0x5e49('0x31')]['fields']));_0x372eb0[_0x5e49('0x35')]=_0x372eb0[_0x5e49('0x35')][_0x5e49('0x37')]?_0x372eb0[_0x5e49('0x35')]:_0x26be76[_0x5e49('0x30')];if(_0x2d636c[_0x5e49('0x31')][_0x5e49('0x42')]){_0x372eb0[_0x5e49('0x43')]=[{'all':!![]}];}_0x372eb0=_['merge']({},_0x372eb0,_0x2d636c[_0x5e49('0x41')]);return db[_0x5e49('0x2c')][_0x5e49('0x48')](_0x372eb0)[_0x5e49('0x22')](handleEntityNotFound(_0x33239f,null))['then'](function(_0x34b2be){if(_0x34b2be){var _0x2e5e1f=_0x34b2be[_0x5e49('0x23')]({'plain':!![]});_0x2e5e1f=qs['omit'](_0x2e5e1f,['id',_0x5e49('0x51'),'updatedAt']);_0x2d636c[_0x5e49('0x4a')]=_[_0x5e49('0x52')](_0x2d636c[_0x5e49('0x4a')],['id',_0x5e49('0x51'),'updatedAt']);return db['JscriptyProject']['create'](_[_0x5e49('0x3e')](_0x2e5e1f,_0x2d636c['body']),{'include':_0x2d636c[_0x5e49('0x31')][_0x5e49('0x42')]?[{'all':!![]}]:undefined})['then'](function(_0x48ce4e){var _0x174311=_0x2d636c['user'][_0x5e49('0x23')]({'plain':!![]});if(!_0x174311)throw new Error(_0x5e49('0x53'));if(_0x174311[_0x5e49('0x4b')]===_0x5e49('0x4c')){var _0x566804=_0x48ce4e[_0x5e49('0x23')]({'plain':!![]});var _0x2b7e01=_0x5e49('0x24');return db[_0x5e49('0x4d')][_0x5e49('0x48')]({'where':{'name':_0x2b7e01,'userProfileId':_0x174311[_0x5e49('0x4e')]},'raw':!![]})[_0x5e49('0x22')](function(_0x1f1245){if(_0x1f1245&&_0x1f1245[_0x5e49('0x54')]===0x0){return db[_0x5e49('0x25')][_0x5e49('0x49')]({'name':_0x566804['name'],'resourceId':_0x566804['id'],'type':_0x1f1245[_0x5e49('0x28')],'sectionId':_0x1f1245['id']},{})['then'](function(){return _0x48ce4e;});}else{return _0x48ce4e;}})['catch'](function(_0x11c04c){logger[_0x5e49('0x27')](_0x5e49('0x4f'),_0x11c04c);throw _0x11c04c;});}return _0x48ce4e;});}})[_0x5e49('0x22')](respondWithResult(_0x33239f,0xc9))[_0x5e49('0x46')](handleError(_0x33239f,null));};exports[_0x5e49('0x55')]=function(_0x589cb8,_0x4ecaf4){if(_0x589cb8[_0x5e49('0x4a')]['id']){delete _0x589cb8[_0x5e49('0x4a')]['id'];}return db['JscriptyProject'][_0x5e49('0x48')]({'where':{'id':_0x589cb8['params']['id']}})[_0x5e49('0x22')](handleEntityNotFound(_0x4ecaf4,null))[_0x5e49('0x22')](saveUpdates(_0x589cb8[_0x5e49('0x4a')],null))[_0x5e49('0x22')](respondWithResult(_0x4ecaf4,null))[_0x5e49('0x46')](handleError(_0x4ecaf4,null));};exports[_0x5e49('0x56')]=function(_0x228a97,_0x36d5ad){return db[_0x5e49('0x2c')][_0x5e49('0x48')]({'where':{'id':_0x228a97['params']['id']}})[_0x5e49('0x22')](handleEntityNotFound(_0x36d5ad,null))[_0x5e49('0x22')](removeEntity(_0x36d5ad,null))['catch'](handleError(_0x36d5ad,null));};exports['getSessions']=function(_0x5eb75d,_0x303067,_0x383c6b){var _0x2df8a1={'raw':!![],'where':{}};var _0xf4dcd9={};var _0x3b8b3f={'count':0x0,'rows':[]};return db[_0x5e49('0x2c')][_0x5e49('0x57')]({'where':{'id':_0x5eb75d['params']['id']}})['then'](handleEntityNotFound(_0x303067,null))[_0x5e49('0x22')](function(_0x48b3e3){if(_0x48b3e3){_0xf4dcd9['model']=_[_0x5e49('0x32')](db['JscriptySessionReport']['rawAttributes']);_0xf4dcd9['query']=_['keys'](_0x5eb75d[_0x5e49('0x31')]);_0xf4dcd9[_0x5e49('0x33')]=_['intersection'](_0xf4dcd9['model'],_0xf4dcd9[_0x5e49('0x31')]);_0x2df8a1[_0x5e49('0x35')]=_['intersection'](_0xf4dcd9[_0x5e49('0x30')],qs['fields'](_0x5eb75d[_0x5e49('0x31')]['fields']));_0x2df8a1[_0x5e49('0x35')]=_0x2df8a1[_0x5e49('0x35')][_0x5e49('0x37')]?_0x2df8a1[_0x5e49('0x35')]:_0xf4dcd9[_0x5e49('0x30')];if(!_0x5eb75d['query'][_0x5e49('0x38')](_0x5e49('0x39'))){_0x2df8a1[_0x5e49('0x1c')]=qs[_0x5e49('0x1c')](_0x5eb75d[_0x5e49('0x31')][_0x5e49('0x1c')]);_0x2df8a1[_0x5e49('0x1b')]=qs[_0x5e49('0x1b')](_0x5eb75d['query'][_0x5e49('0x1b')]);}_0x2df8a1['order']=qs['sort'](_0x5eb75d[_0x5e49('0x31')][_0x5e49('0x3b')]);_0x2df8a1[_0x5e49('0x3f')]=qs[_0x5e49('0x33')](_[_0x5e49('0x3c')](_0x5eb75d['query'],_0xf4dcd9[_0x5e49('0x33')]));_0x2df8a1[_0x5e49('0x3f')][_0x5e49('0x58')]=_0x48b3e3['id'];if(_0x5eb75d['query']['filter']){_0x2df8a1[_0x5e49('0x3f')]=_[_0x5e49('0x3e')](_0x2df8a1[_0x5e49('0x3f')],{'$or':_[_0x5e49('0x2b')](_0x2df8a1['attributes'],function(_0x247ef2){var _0x3e3748={};_0x3e3748[_0x247ef2]={'$like':'%'+_0x5eb75d[_0x5e49('0x31')][_0x5e49('0x3d')]+'%'};return _0x3e3748;})});}_0x2df8a1=_[_0x5e49('0x3e')]({},_0x2df8a1,_0x5eb75d['options']);return db['JscriptySessionReport'][_0x5e49('0x1e')]({'where':_0x2df8a1[_0x5e49('0x3f')]})['then'](function(_0x3025b5){_0x3b8b3f[_0x5e49('0x1e')]=_0x3025b5;if(_0x5eb75d[_0x5e49('0x31')][_0x5e49('0x42')]){_0x2df8a1[_0x5e49('0x43')]=[{'all':!![]}];}return db['JscriptySessionReport']['findAll'](_0x2df8a1);})[_0x5e49('0x22')](function(_0x3dbaae){_0x3b8b3f[_0x5e49('0x45')]=_0x3dbaae;return _0x3b8b3f;});}})[_0x5e49('0x22')](respondWithFilteredResult(_0x303067,_0x2df8a1))[_0x5e49('0x46')](handleError(_0x303067,null));};exports['getAnswers']=function(_0x47cef3,_0x1c8eb,_0x4b68f9){var _0x2a395b={'raw':!![],'where':{}};var _0xcd3fb1={};var _0x16cce8={'count':0x0,'rows':[]};return db[_0x5e49('0x2c')][_0x5e49('0x57')]({'where':{'id':_0x47cef3['params']['id']}})[_0x5e49('0x22')](handleEntityNotFound(_0x1c8eb,null))[_0x5e49('0x22')](function(_0x5a006a){if(_0x5a006a){_0xcd3fb1[_0x5e49('0x30')]=_[_0x5e49('0x32')](db[_0x5e49('0x59')][_0x5e49('0x2d')]);_0xcd3fb1[_0x5e49('0x31')]=_['keys'](_0x47cef3[_0x5e49('0x31')]);_0xcd3fb1[_0x5e49('0x33')]=_[_0x5e49('0x34')](_0xcd3fb1['model'],_0xcd3fb1[_0x5e49('0x31')]);_0x2a395b[_0x5e49('0x35')]=_['intersection'](_0xcd3fb1['model'],qs[_0x5e49('0x36')](_0x47cef3[_0x5e49('0x31')]['fields']));_0x2a395b[_0x5e49('0x35')]=_0x2a395b[_0x5e49('0x35')][_0x5e49('0x37')]?_0x2a395b[_0x5e49('0x35')]:_0xcd3fb1[_0x5e49('0x30')];if(!_0x47cef3[_0x5e49('0x31')][_0x5e49('0x38')](_0x5e49('0x39'))){_0x2a395b['limit']=qs['limit'](_0x47cef3[_0x5e49('0x31')][_0x5e49('0x1c')]);_0x2a395b[_0x5e49('0x1b')]=qs[_0x5e49('0x1b')](_0x47cef3[_0x5e49('0x31')][_0x5e49('0x1b')]);}_0x2a395b[_0x5e49('0x3a')]=qs['sort'](_0x47cef3[_0x5e49('0x31')][_0x5e49('0x3b')]);_0x2a395b[_0x5e49('0x3f')]=qs[_0x5e49('0x33')](_[_0x5e49('0x3c')](_0x47cef3[_0x5e49('0x31')],_0xcd3fb1[_0x5e49('0x33')]));_0x2a395b['where'][_0x5e49('0x58')]=_0x5a006a['id'];if(_0x47cef3[_0x5e49('0x31')]['filter']){_0x2a395b['where']=_[_0x5e49('0x3e')](_0x2a395b[_0x5e49('0x3f')],{'$or':_[_0x5e49('0x2b')](_0x2a395b['attributes'],function(_0x3e7c57){var _0xf146ba={};_0xf146ba[_0x3e7c57]={'$like':'%'+_0x47cef3['query'][_0x5e49('0x3d')]+'%'};return _0xf146ba;})});}_0x2a395b=_['merge']({},_0x2a395b,_0x47cef3[_0x5e49('0x41')]);return db[_0x5e49('0x59')][_0x5e49('0x1e')]({'where':_0x2a395b['where']})[_0x5e49('0x22')](function(_0x5f56bf){_0x16cce8[_0x5e49('0x1e')]=_0x5f56bf;if(_0x47cef3[_0x5e49('0x31')][_0x5e49('0x42')]){_0x2a395b[_0x5e49('0x43')]=[{'all':!![]}];}return db[_0x5e49('0x59')][_0x5e49('0x44')](_0x2a395b);})[_0x5e49('0x22')](function(_0x5b2c5e){_0x16cce8['rows']=_0x5b2c5e;return _0x16cce8;});}})[_0x5e49('0x22')](respondWithFilteredResult(_0x1c8eb,_0x2a395b))['catch'](handleError(_0x1c8eb,null));};function char(_0x5c666e){return _0x5e49('0x5a')===typeof _0x5c666e?String[_0x5e49('0x5b')][_0x5e49('0x20')](null,arguments):_0x5c666e;}function needsEncapsulation(_0x4a614d){return!!_0x4a614d&&(_0x4a614d['toString']()[_0x5e49('0x5c')](char(0xd))>=0x0||_0x4a614d[_0x5e49('0x5d')]()[_0x5e49('0x5c')](char(0xa))>=0x0||_0x4a614d[_0x5e49('0x5d')]()[_0x5e49('0x5c')](char(0x2c))>=0x0||_0x4a614d['toString']()['indexOf'](char(0x22))>=0x0);}function encapsulate(_0x575180){var _0x16c03e=char(0x22),_0x40ee4b='\x5c'+char(0x22),_0x190217=_0x575180['toString']()[_0x5e49('0x5e')](new RegExp(_0x16c03e,'g'),_0x40ee4b);return _0x16c03e+_0x190217+_0x16c03e;}exports[_0x5e49('0x5f')]=function(_0x47e916,_0xdb5dcb,_0x365ed6){var _0x4ad7c7,_0x1456a7;var _0x6e6569={'where':{'ProjectId':_0x47e916[_0x5e49('0x60')]['id']}};if(_0x47e916[_0x5e49('0x31')]['startTime']){_0x6e6569[_0x5e49('0x3f')]['starttime']=JSON[_0x5e49('0x61')](_0x47e916[_0x5e49('0x31')][_0x5e49('0x62')]);}return db[_0x5e49('0x63')]['findAll'](_0x6e6569)[_0x5e49('0x22')](handleEntityNotFound(_0xdb5dcb,null))[_0x5e49('0x22')](function(_0x19aba6){if(_0x19aba6){_0x4ad7c7=_0x19aba6;return db[_0x5e49('0x64')][_0x5e49('0x44')]({'where':{'SessionId':{'$in':_[_0x5e49('0x2b')](_0x4ad7c7,'id')},'ProjectId':_0x47e916['params']['id']},'order':_0x5e49('0x65')});}})[_0x5e49('0x22')](handleEntityNotFound(_0xdb5dcb,null))[_0x5e49('0x22')](function(_0x30e1dd){if(_0x30e1dd){_0x1456a7=_0x30e1dd;var _0x402649={};for(var _0x354fab=0x0,_0x12705d=_0x1456a7[_0x5e49('0x37')];_0x354fab<_0x12705d;_0x354fab++){if(!_0x402649[_0x5e49('0x38')](_0x1456a7[_0x354fab][_0x5e49('0x66')])){_0x402649[_0x1456a7[_0x354fab][_0x5e49('0x66')]]=needsEncapsulation(_0x1456a7[_0x354fab][_0x5e49('0x67')])?encapsulate(_0x1456a7[_0x354fab]['question']):_0x1456a7[_0x354fab][_0x5e49('0x67')];}}var _0x58880b=[],_0x4f2b59={};for(var _0x2db9e0=0x0,_0x9ed276=_0x4ad7c7[_0x5e49('0x37')];_0x2db9e0<_0x9ed276;_0x2db9e0++){_0x4f2b59={'ProjectId':_0x47e916['params']['id'],'SessionId':_0x4ad7c7[_0x2db9e0]['id'],'StartTime':moment(_0x4ad7c7[_0x2db9e0][_0x5e49('0x68')])[_0x5e49('0x69')](_0x5e49('0x6a'))};for(var _0x27833e=0x0,_0x411b51=_0x1456a7[_0x5e49('0x37')];_0x27833e<_0x411b51;_0x27833e++){if(_0x1456a7[_0x27833e][_0x5e49('0x6b')]==_0x4ad7c7[_0x2db9e0]['id']&&_0x402649['hasOwnProperty'](_0x1456a7[_0x27833e][_0x5e49('0x66')])){_0x4f2b59[_0x402649[_0x1456a7[_0x27833e][_0x5e49('0x66')]]]=_0x1456a7[_0x27833e][_0x5e49('0x6c')];}}for(var _0x3f25c8 in _0x402649){if(!_0x4f2b59['hasOwnProperty'](_0x402649[_0x3f25c8])){_0x4f2b59[_0x402649[_0x3f25c8]]=null;}}_0x58880b[_0x5e49('0x6d')](_0x4f2b59);}return _0x58880b;}})[_0x5e49('0x22')](function(_0x2f4284){if(!_[_0x5e49('0x6e')](_0x2f4284)){var _0x2d259c=toCsv(_0x2f4284);var _0x30d392=Date[_0x5e49('0x6f')]();fs['writeFileSync'](util['format'](_0x5e49('0x70'),_0x47e916[_0x5e49('0x60')]['id'],_0x30d392),_0x2d259c);_0xdb5dcb['setHeader'](_0x5e49('0x71'),_0x5e49('0x72')+util[_0x5e49('0x69')]('Jscripty_Project_%d_Summary_%s.csv',_0x47e916[_0x5e49('0x60')]['id'],_0x30d392));_0xdb5dcb[_0x5e49('0x73')](_0x5e49('0x74'),_0x5e49('0x75'));return _0xdb5dcb[_0x5e49('0x76')](util['format'](_0x5e49('0x70'),_0x47e916[_0x5e49('0x60')]['id'],_0x30d392));}else{return _0xdb5dcb[_0x5e49('0x18')](0xcc);}})[_0x5e49('0x46')](handleError(_0xdb5dcb,null));};
\ No newline at end of file
index c0c977d..f58282d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7dee=['lodash','../../config/logger','moment','bluebird','request-promise','path','../../config/environment','exports','define','JscriptyProject','jscripty_projects'];(function(_0x538dd0,_0x3a61b5){var _0x1cd3c6=function(_0xaa122c){while(--_0xaa122c){_0x538dd0['push'](_0x538dd0['shift']());}};_0x1cd3c6(++_0x3a61b5);}(_0x7dee,0xb0));var _0xe7de=function(_0x6493e5,_0x245fd1){_0x6493e5=_0x6493e5-0x0;var _0x23e6ac=_0x7dee[_0x6493e5];return _0x23e6ac;};'use strict';var _=require(_0xe7de('0x0'));var util=require('util');var logger=require(_0xe7de('0x1'))('api');var moment=require(_0xe7de('0x2'));var BPromise=require(_0xe7de('0x3'));var rp=require(_0xe7de('0x4'));var fs=require('fs');var path=require(_0xe7de('0x5'));var rimraf=require('rimraf');var config=require(_0xe7de('0x6'));var attributes=require('./jscriptyProject.attributes');module[_0xe7de('0x7')]=function(_0x19f79d,_0x26a524){return _0x19f79d[_0xe7de('0x8')](_0xe7de('0x9'),attributes,{'tableName':_0xe7de('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1c9a=['define','JscriptyProject','jscripty_projects','lodash','util','api','moment','bluebird','request-promise','path','../../config/environment','exports'];(function(_0x3731a7,_0x19e8ab){var _0x71cae6=function(_0x377524){while(--_0x377524){_0x3731a7['push'](_0x3731a7['shift']());}};_0x71cae6(++_0x19e8ab);}(_0x1c9a,0x1a7));var _0xa1c9=function(_0x2ba2b8,_0xfd372d){_0x2ba2b8=_0x2ba2b8-0x0;var _0x19c8dd=_0x1c9a[_0x2ba2b8];return _0x19c8dd;};'use strict';var _=require(_0xa1c9('0x0'));var util=require(_0xa1c9('0x1'));var logger=require('../../config/logger')(_0xa1c9('0x2'));var moment=require(_0xa1c9('0x3'));var BPromise=require(_0xa1c9('0x4'));var rp=require(_0xa1c9('0x5'));var fs=require('fs');var path=require(_0xa1c9('0x6'));var rimraf=require('rimraf');var config=require(_0xa1c9('0x7'));var attributes=require('./jscriptyProject.attributes');module[_0xa1c9('0x8')]=function(_0xdd22bf,_0x237862){return _0xdd22bf[_0xa1c9('0x9')](_0xa1c9('0xa'),attributes,{'tableName':_0xa1c9('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0d4e2e1..ce1fa78 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x4c011e,_0x4430ce){var _0x219077=function(_0x3c2ee5){while(--_0x3c2ee5){_0x4c011e['push'](_0x4c011e['shift']());}};_0x219077(++_0x4430ce);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5783f4,_0x4a9e0a){_0x5783f4=_0x5783f4-0x0;var _0x28e380=_0xa9e0[_0x5783f4];return _0x28e380;};'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 _0xda3f=['rpc','jayson/promise','client','request','then','info','JscriptyProject,\x20%s,\x20%s','request\x20sent','debug','JscriptyProject,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','util','moment','../../mysqldb','../../config/logger'];(function(_0x5aa373,_0x54c7f4){var _0x590e8e=function(_0x505e62){while(--_0x505e62){_0x5aa373['push'](_0x5aa373['shift']());}};_0x590e8e(++_0x54c7f4);}(_0xda3f,0xec));var _0xfda3=function(_0x2b50d4,_0x3dd59a){_0x2b50d4=_0x2b50d4-0x0;var _0x366f81=_0xda3f[_0x2b50d4];return _0x366f81;};'use strict';var _=require('lodash');var util=require(_0xfda3('0x0'));var moment=require(_0xfda3('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xfda3('0x2'))['db'];var utils=require('../../config/utils');var logger=require(_0xfda3('0x3'))(_0xfda3('0x4'));var config=require('../../config/environment');var jayson=require(_0xfda3('0x5'));var client=jayson[_0xfda3('0x6')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4e72d1,_0x316792,_0x42476a){return new BPromise(function(_0x125e2a,_0x4018c0){return client[_0xfda3('0x7')](_0x4e72d1,_0x42476a)[_0xfda3('0x8')](function(_0x46655c){logger[_0xfda3('0x9')](_0xfda3('0xa'),_0x316792,_0xfda3('0xb'));logger[_0xfda3('0xc')](_0xfda3('0xd'),_0x316792,'request\x20sent',JSON[_0xfda3('0xe')](_0x46655c));if(_0x46655c[_0xfda3('0xf')]){if(_0x46655c[_0xfda3('0xf')][_0xfda3('0x10')]===0x1f4){logger[_0xfda3('0xf')]('JscriptyProject,\x20%s,\x20%s',_0x316792,_0x46655c[_0xfda3('0xf')]['message']);return _0x4018c0(_0x46655c[_0xfda3('0xf')][_0xfda3('0x11')]);}logger['error']('JscriptyProject,\x20%s,\x20%s',_0x316792,_0x46655c['error'][_0xfda3('0x11')]);return _0x125e2a(_0x46655c[_0xfda3('0xf')]['message']);}else{logger['info']('JscriptyProject,\x20%s,\x20%s',_0x316792,_0xfda3('0xb'));_0x125e2a(_0x46655c[_0xfda3('0x12')][_0xfda3('0x11')]);}})[_0xfda3('0x13')](function(_0x34900d){logger[_0xfda3('0xf')](_0xfda3('0xa'),_0x316792,_0x34900d);_0x4018c0(_0x34900d);});});}
\ No newline at end of file
index 338e5cc..6711a8d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7637=['multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','put','update','delete','destroy'];(function(_0x12c4bb,_0x4d079d){var _0x347f9d=function(_0x58717a){while(--_0x58717a){_0x12c4bb['push'](_0x12c4bb['shift']());}};_0x347f9d(++_0x4d079d);}(_0x7637,0xe6));var _0x7763=function(_0x44a2a7,_0x2cb90a){_0x44a2a7=_0x44a2a7-0x0;var _0x578d5b=_0x7637[_0x44a2a7];return _0x578d5b;};'use strict';var multer=require(_0x7763('0x0'));var util=require(_0x7763('0x1'));var path=require(_0x7763('0x2'));var timeout=require(_0x7763('0x3'));var express=require(_0x7763('0x4'));var router=express[_0x7763('0x5')]();var fs_extra=require(_0x7763('0x6'));var auth=require(_0x7763('0x7'));var interaction=require(_0x7763('0x8'));var config=require(_0x7763('0x9'));var controller=require('./jscriptyQuestionReport.controller');router[_0x7763('0xa')]('/',auth[_0x7763('0xb')](),controller[_0x7763('0xc')]);router['get'](_0x7763('0xd'),auth[_0x7763('0xb')](),controller[_0x7763('0xe')]);router[_0x7763('0xa')](_0x7763('0xf'),auth[_0x7763('0xb')](),controller[_0x7763('0x10')]);router[_0x7763('0x11')]('/',auth['isAuthenticated'](),controller[_0x7763('0x12')]);router[_0x7763('0x13')](_0x7763('0xf'),auth[_0x7763('0xb')](),controller[_0x7763('0x14')]);router[_0x7763('0x15')](_0x7763('0xf'),auth[_0x7763('0xb')](),controller[_0x7763('0x16')]);module['exports']=router;
\ No newline at end of file
+var _0x9276=['express','Router','fs-extra','../../components/auth/service','./jscriptyQuestionReport.controller','isAuthenticated','get','/describe','describe','/:id','show','post','create','put','update','exports','multer','util','path','connect-timeout'];(function(_0x10b6fe,_0x3ec0a9){var _0x26d4b4=function(_0x2e6942){while(--_0x2e6942){_0x10b6fe['push'](_0x10b6fe['shift']());}};_0x26d4b4(++_0x3ec0a9);}(_0x9276,0xc4));var _0x6927=function(_0x2e340c,_0x1ece45){_0x2e340c=_0x2e340c-0x0;var _0x57797c=_0x9276[_0x2e340c];return _0x57797c;};'use strict';var multer=require(_0x6927('0x0'));var util=require(_0x6927('0x1'));var path=require(_0x6927('0x2'));var timeout=require(_0x6927('0x3'));var express=require(_0x6927('0x4'));var router=express[_0x6927('0x5')]();var fs_extra=require(_0x6927('0x6'));var auth=require(_0x6927('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x6927('0x8'));router['get']('/',auth[_0x6927('0x9')](),controller['index']);router[_0x6927('0xa')](_0x6927('0xb'),auth[_0x6927('0x9')](),controller[_0x6927('0xc')]);router['get'](_0x6927('0xd'),auth[_0x6927('0x9')](),controller[_0x6927('0xe')]);router[_0x6927('0xf')]('/',auth[_0x6927('0x9')](),controller[_0x6927('0x10')]);router[_0x6927('0x11')](_0x6927('0xd'),auth[_0x6927('0x9')](),controller[_0x6927('0x12')]);router['delete'](_0x6927('0xd'),auth[_0x6927('0x9')](),controller['destroy']);module[_0x6927('0x13')]=router;
\ No newline at end of file
index dd0e2ab..2c75483 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x2064e5,_0x4f6fa2){var _0x21a233=function(_0x1b2491){while(--_0x1b2491){_0x2064e5['push'](_0x2064e5['shift']());}};_0x21a233(++_0x4f6fa2);}(_0x7a54,0x106));var _0x47a5=function(_0x1a0088,_0x7fe32a){_0x1a0088=_0x1a0088-0x0;var _0x1e4416=_0x7a54[_0x1a0088];return _0x1e4416;};'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(_0x2064e5,_0x4f6fa2){var _0x21a233=function(_0x1b2491){while(--_0x1b2491){_0x2064e5['push'](_0x2064e5['shift']());}};_0x21a233(++_0x4f6fa2);}(_0x7a54,0x106));var _0x47a5=function(_0x12be71,_0x20c7c2){_0x12be71=_0x12be71-0x0;var _0x37475c=_0x7a54[_0x12be71];return _0x37475c;};'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 536ea60..4d3ef65 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x16f0=['params','rawAttributes','fields','options','create','update','body','find','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../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','Content-Range','apply','save','then','destroy','error','stack','name','send','index','JscriptyQuestionReport','type','key','model','map','query','keys','filters','intersection','attributes','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','catch','show'];(function(_0x935ad0,_0x3fb911){var _0x335e10=function(_0x29626a){while(--_0x29626a){_0x935ad0['push'](_0x935ad0['shift']());}};_0x335e10(++_0x3fb911);}(_0x16f0,0xa3));var _0x016f=function(_0x3328f0,_0x56c78d){_0x3328f0=_0x3328f0-0x0;var _0x5925fd=_0x16f0[_0x3328f0];return _0x5925fd;};'use strict';var emlformat=require(_0x016f('0x0'));var rimraf=require(_0x016f('0x1'));var zipdir=require(_0x016f('0x2'));var jsonpatch=require(_0x016f('0x3'));var rp=require(_0x016f('0x4'));var moment=require(_0x016f('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0x016f('0x6'));var sox=require(_0x016f('0x7'));var csv=require(_0x016f('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x016f('0x9'));var _=require(_0x016f('0xa'));var squel=require(_0x016f('0xb'));var crypto=require(_0x016f('0xc'));var jsforce=require(_0x016f('0xd'));var deskjs=require(_0x016f('0xe'));var toCsv=require(_0x016f('0x8'));var querystring=require(_0x016f('0xf'));var Papa=require(_0x016f('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x016f('0x11'));var as=require(_0x016f('0x12'));var hardwareService=require(_0x016f('0x13'));var logger=require(_0x016f('0x14'))(_0x016f('0x15'));var utils=require(_0x016f('0x16'));var config=require(_0x016f('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x016f('0x18'))['db'];function respondWithStatusCode(_0x1833cd,_0xe11ac1){_0xe11ac1=_0xe11ac1||0xcc;return function(_0x5ca254){if(_0x5ca254){return _0x1833cd[_0x016f('0x19')](_0xe11ac1);}return _0x1833cd[_0x016f('0x1a')](_0xe11ac1)[_0x016f('0x1b')]();};}function respondWithResult(_0x42eb54,_0x5ae182){_0x5ae182=_0x5ae182||0xc8;return function(_0x3e08fe){if(_0x3e08fe){return _0x42eb54[_0x016f('0x1a')](_0x5ae182)[_0x016f('0x1c')](_0x3e08fe);}};}function respondWithFilteredResult(_0x153ec2,_0x1ff9eb){return function(_0x5a668d){if(_0x5a668d){var _0x1656b9=typeof _0x1ff9eb[_0x016f('0x1d')]===_0x016f('0x1e')&&typeof _0x1ff9eb[_0x016f('0x1f')]===_0x016f('0x1e');var _0x42ef2b=_0x5a668d[_0x016f('0x20')];var _0x4de5f9=_0x1656b9?0x0:_0x1ff9eb[_0x016f('0x1d')];var _0x16497f=_0x1656b9?_0x5a668d['count']:_0x1ff9eb[_0x016f('0x1d')]+_0x1ff9eb[_0x016f('0x1f')];var _0x84d4f1;if(_0x16497f>=_0x42ef2b){_0x16497f=_0x42ef2b;_0x84d4f1=0xc8;}else{_0x84d4f1=0xce;}_0x153ec2[_0x016f('0x1a')](_0x84d4f1);return _0x153ec2['set'](_0x016f('0x21'),_0x4de5f9+'-'+_0x16497f+'/'+_0x42ef2b)[_0x016f('0x1c')](_0x5a668d);}return null;};}function patchUpdates(_0x2b4707){return function(_0x391ce7){try{jsonpatch[_0x016f('0x22')](_0x391ce7,_0x2b4707,!![]);}catch(_0x113c31){return BPromise['reject'](_0x113c31);}return _0x391ce7[_0x016f('0x23')]();};}function saveUpdates(_0x4196b7,_0x42f5b4){return function(_0x1352dd){if(_0x1352dd){return _0x1352dd['update'](_0x4196b7)[_0x016f('0x24')](function(_0x14b69c){return _0x14b69c;});}return null;};}function removeEntity(_0x4da27b,_0x1ec2a6){return function(_0x167a09){if(_0x167a09){return _0x167a09[_0x016f('0x25')]()[_0x016f('0x24')](function(){_0x4da27b['status'](0xcc)[_0x016f('0x1b')]();});}};}function handleEntityNotFound(_0xf0636,_0x534aa3){return function(_0x19aff2){if(!_0x19aff2){_0xf0636[_0x016f('0x19')](0x194);}return _0x19aff2;};}function handleError(_0x368c62,_0x2b654f){_0x2b654f=_0x2b654f||0x1f4;return function(_0x33a53a){logger[_0x016f('0x26')](_0x33a53a[_0x016f('0x27')]);if(_0x33a53a[_0x016f('0x28')]){delete _0x33a53a[_0x016f('0x28')];}_0x368c62[_0x016f('0x1a')](_0x2b654f)[_0x016f('0x29')](_0x33a53a);};}exports[_0x016f('0x2a')]=function(_0x407125,_0x23109c){var _0x454c85={},_0x24434d={},_0x2f04fd={'count':0x0,'rows':[]};var _0x44f2c3=_['map'](db[_0x016f('0x2b')]['rawAttributes'],function(_0x363dac){return{'name':_0x363dac['fieldName'],'type':_0x363dac[_0x016f('0x2c')][_0x016f('0x2d')]};});_0x24434d[_0x016f('0x2e')]=_[_0x016f('0x2f')](_0x44f2c3,_0x016f('0x28'));_0x24434d[_0x016f('0x30')]=_[_0x016f('0x31')](_0x407125[_0x016f('0x30')]);_0x24434d[_0x016f('0x32')]=_[_0x016f('0x33')](_0x24434d[_0x016f('0x2e')],_0x24434d[_0x016f('0x30')]);_0x454c85['attributes']=_['intersection'](_0x24434d[_0x016f('0x2e')],qs['fields'](_0x407125[_0x016f('0x30')]['fields']));_0x454c85[_0x016f('0x34')]=_0x454c85[_0x016f('0x34')][_0x016f('0x35')]?_0x454c85[_0x016f('0x34')]:_0x24434d[_0x016f('0x2e')];if(!_0x407125[_0x016f('0x30')]['hasOwnProperty'](_0x016f('0x36'))){_0x454c85[_0x016f('0x1f')]=qs[_0x016f('0x1f')](_0x407125[_0x016f('0x30')][_0x016f('0x1f')]);_0x454c85[_0x016f('0x1d')]=qs[_0x016f('0x1d')](_0x407125[_0x016f('0x30')][_0x016f('0x1d')]);}_0x454c85[_0x016f('0x37')]=qs['sort'](_0x407125[_0x016f('0x30')][_0x016f('0x38')]);_0x454c85[_0x016f('0x39')]=qs[_0x016f('0x32')](_[_0x016f('0x3a')](_0x407125['query'],_0x24434d[_0x016f('0x32')]),_0x44f2c3);if(_0x407125[_0x016f('0x30')][_0x016f('0x3b')]){_0x454c85[_0x016f('0x39')]=_[_0x016f('0x3c')](_0x454c85[_0x016f('0x39')],{'$or':_[_0x016f('0x2f')](_0x44f2c3,function(_0x2701ab){if(_0x2701ab[_0x016f('0x2c')]!==_0x016f('0x3d')){var _0x2833e0={};_0x2833e0[_0x2701ab[_0x016f('0x28')]]={'$like':'%'+_0x407125[_0x016f('0x30')][_0x016f('0x3b')]+'%'};return _0x2833e0;}})});}_0x454c85=_['merge']({},_0x454c85,_0x407125['options']);var _0x31b42c={'where':_0x454c85[_0x016f('0x39')]};return db[_0x016f('0x2b')]['count'](_0x31b42c)['then'](function(_0x4bd180){_0x2f04fd[_0x016f('0x20')]=_0x4bd180;if(_0x407125[_0x016f('0x30')][_0x016f('0x3e')]){_0x454c85[_0x016f('0x3f')]=[{'all':!![]}];}return db[_0x016f('0x2b')][_0x016f('0x40')](_0x454c85);})[_0x016f('0x24')](function(_0x41ce27){_0x2f04fd[_0x016f('0x41')]=_0x41ce27;return _0x2f04fd;})[_0x016f('0x24')](respondWithFilteredResult(_0x23109c,_0x454c85))[_0x016f('0x42')](handleError(_0x23109c,null));};exports[_0x016f('0x43')]=function(_0x128fe1,_0x246e00){var _0x5eec75={'raw':!![],'where':{'id':_0x128fe1[_0x016f('0x44')]['id']}},_0x180a48={};_0x180a48['model']=_[_0x016f('0x31')](db[_0x016f('0x2b')][_0x016f('0x45')]);_0x180a48[_0x016f('0x30')]=_['keys'](_0x128fe1['query']);_0x180a48[_0x016f('0x32')]=_['intersection'](_0x180a48[_0x016f('0x2e')],_0x180a48[_0x016f('0x30')]);_0x5eec75['attributes']=_['intersection'](_0x180a48[_0x016f('0x2e')],qs[_0x016f('0x46')](_0x128fe1[_0x016f('0x30')]['fields']));_0x5eec75[_0x016f('0x34')]=_0x5eec75[_0x016f('0x34')][_0x016f('0x35')]?_0x5eec75[_0x016f('0x34')]:_0x180a48[_0x016f('0x2e')];if(_0x128fe1[_0x016f('0x30')][_0x016f('0x3e')]){_0x5eec75[_0x016f('0x3f')]=[{'all':!![]}];}_0x5eec75=_[_0x016f('0x3c')]({},_0x5eec75,_0x128fe1[_0x016f('0x47')]);return db[_0x016f('0x2b')]['find'](_0x5eec75)[_0x016f('0x24')](handleEntityNotFound(_0x246e00,null))['then'](respondWithResult(_0x246e00,null))[_0x016f('0x42')](handleError(_0x246e00,null));};exports[_0x016f('0x48')]=function(_0x4f6f73,_0x33fac3){return db['JscriptyQuestionReport']['create'](_0x4f6f73['body'],{})[_0x016f('0x24')](respondWithResult(_0x33fac3,0xc9))[_0x016f('0x42')](handleError(_0x33fac3,null));};exports[_0x016f('0x49')]=function(_0x41b785,_0x71b31b){if(_0x41b785[_0x016f('0x4a')]['id']){delete _0x41b785[_0x016f('0x4a')]['id'];}return db['JscriptyQuestionReport'][_0x016f('0x4b')]({'where':{'id':_0x41b785[_0x016f('0x44')]['id']}})[_0x016f('0x24')](handleEntityNotFound(_0x71b31b,null))['then'](saveUpdates(_0x41b785[_0x016f('0x4a')],null))['then'](respondWithResult(_0x71b31b,null))[_0x016f('0x42')](handleError(_0x71b31b,null));};exports['destroy']=function(_0x2c99df,_0x40e636){return db[_0x016f('0x2b')]['find']({'where':{'id':_0x2c99df[_0x016f('0x44')]['id']}})[_0x016f('0x24')](handleEntityNotFound(_0x40e636,null))[_0x016f('0x24')](removeEntity(_0x40e636,null))['catch'](handleError(_0x40e636,null));};exports[_0x016f('0x4c')]=function(_0xf6af11,_0x1c0a58){return db[_0x016f('0x2b')][_0x016f('0x4c')]()[_0x016f('0x24')](respondWithResult(_0x1c0a58,null))['catch'](handleError(_0x1c0a58,null));};
\ No newline at end of file
+var _0xdfb7=['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','status','end','json','offset','undefined','limit','count','set','apply','save','update','then','destroy','sendStatus','error','stack','name','send','fieldName','type','key','model','map','keys','query','intersection','fields','length','attributes','hasOwnProperty','nolimit','order','where','pick','filters','filter','VIRTUAL','merge','options','includeAll','include','JscriptyQuestionReport','findAll','show','params','rawAttributes','find','create','body','catch','describe','eml-format','rimraf','request-promise','moment','bluebird','mustache','path','sox','fs-extra','squel','crypto','jsforce','desk.js'];(function(_0x51a0a9,_0x569499){var _0x4bd20c=function(_0x26235a){while(--_0x26235a){_0x51a0a9['push'](_0x51a0a9['shift']());}};_0x4bd20c(++_0x569499);}(_0xdfb7,0xda));var _0x7dfb=function(_0x40692d,_0x57f514){_0x40692d=_0x40692d-0x0;var _0x450bea=_0xdfb7[_0x40692d];return _0x450bea;};'use strict';var emlformat=require(_0x7dfb('0x0'));var rimraf=require(_0x7dfb('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x7dfb('0x2'));var moment=require(_0x7dfb('0x3'));var BPromise=require(_0x7dfb('0x4'));var Mustache=require(_0x7dfb('0x5'));var util=require('util');var path=require(_0x7dfb('0x6'));var sox=require(_0x7dfb('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x7dfb('0x8'));var _=require('lodash');var squel=require(_0x7dfb('0x9'));var crypto=require(_0x7dfb('0xa'));var jsforce=require(_0x7dfb('0xb'));var deskjs=require(_0x7dfb('0xc'));var toCsv=require(_0x7dfb('0xd'));var querystring=require(_0x7dfb('0xe'));var Papa=require(_0x7dfb('0xf'));var Redis=require(_0x7dfb('0x10'));var authService=require(_0x7dfb('0x11'));var qs=require(_0x7dfb('0x12'));var as=require(_0x7dfb('0x13'));var hardwareService=require(_0x7dfb('0x14'));var logger=require('../../config/logger')(_0x7dfb('0x15'));var utils=require(_0x7dfb('0x16'));var config=require(_0x7dfb('0x17'));var licenseUtil=require(_0x7dfb('0x18'));var db=require(_0x7dfb('0x19'))['db'];function respondWithStatusCode(_0x370acd,_0x516177){_0x516177=_0x516177||0xcc;return function(_0x5e516c){if(_0x5e516c){return _0x370acd['sendStatus'](_0x516177);}return _0x370acd[_0x7dfb('0x1a')](_0x516177)[_0x7dfb('0x1b')]();};}function respondWithResult(_0x5039f9,_0x172621){_0x172621=_0x172621||0xc8;return function(_0x3beb2d){if(_0x3beb2d){return _0x5039f9['status'](_0x172621)[_0x7dfb('0x1c')](_0x3beb2d);}};}function respondWithFilteredResult(_0x5790b6,_0xa856bc){return function(_0x416751){if(_0x416751){var _0x5ae9d8=typeof _0xa856bc[_0x7dfb('0x1d')]===_0x7dfb('0x1e')&&typeof _0xa856bc[_0x7dfb('0x1f')]===_0x7dfb('0x1e');var _0x52c51c=_0x416751[_0x7dfb('0x20')];var _0x37f74f=_0x5ae9d8?0x0:_0xa856bc[_0x7dfb('0x1d')];var _0x31f338=_0x5ae9d8?_0x416751[_0x7dfb('0x20')]:_0xa856bc[_0x7dfb('0x1d')]+_0xa856bc[_0x7dfb('0x1f')];var _0x4914b2;if(_0x31f338>=_0x52c51c){_0x31f338=_0x52c51c;_0x4914b2=0xc8;}else{_0x4914b2=0xce;}_0x5790b6['status'](_0x4914b2);return _0x5790b6[_0x7dfb('0x21')]('Content-Range',_0x37f74f+'-'+_0x31f338+'/'+_0x52c51c)[_0x7dfb('0x1c')](_0x416751);}return null;};}function patchUpdates(_0x406082){return function(_0x2ba731){try{jsonpatch[_0x7dfb('0x22')](_0x2ba731,_0x406082,!![]);}catch(_0x2defc7){return BPromise['reject'](_0x2defc7);}return _0x2ba731[_0x7dfb('0x23')]();};}function saveUpdates(_0x1cb1b5,_0x4acf8a){return function(_0x276efd){if(_0x276efd){return _0x276efd[_0x7dfb('0x24')](_0x1cb1b5)[_0x7dfb('0x25')](function(_0x4d8321){return _0x4d8321;});}return null;};}function removeEntity(_0x2e1581,_0x560551){return function(_0x568f06){if(_0x568f06){return _0x568f06[_0x7dfb('0x26')]()[_0x7dfb('0x25')](function(){_0x2e1581[_0x7dfb('0x1a')](0xcc)[_0x7dfb('0x1b')]();});}};}function handleEntityNotFound(_0x5ba29f,_0xd172b7){return function(_0x559915){if(!_0x559915){_0x5ba29f[_0x7dfb('0x27')](0x194);}return _0x559915;};}function handleError(_0x1d563a,_0x237f46){_0x237f46=_0x237f46||0x1f4;return function(_0x152761){logger[_0x7dfb('0x28')](_0x152761[_0x7dfb('0x29')]);if(_0x152761[_0x7dfb('0x2a')]){delete _0x152761[_0x7dfb('0x2a')];}_0x1d563a[_0x7dfb('0x1a')](_0x237f46)[_0x7dfb('0x2b')](_0x152761);};}exports['index']=function(_0xf605fd,_0x481e17){var _0x1d2b97={},_0x37194d={},_0x48beff={'count':0x0,'rows':[]};var _0x1a0dcd=_['map'](db['JscriptyQuestionReport']['rawAttributes'],function(_0x53e532){return{'name':_0x53e532[_0x7dfb('0x2c')],'type':_0x53e532[_0x7dfb('0x2d')][_0x7dfb('0x2e')]};});_0x37194d[_0x7dfb('0x2f')]=_[_0x7dfb('0x30')](_0x1a0dcd,'name');_0x37194d['query']=_[_0x7dfb('0x31')](_0xf605fd[_0x7dfb('0x32')]);_0x37194d['filters']=_[_0x7dfb('0x33')](_0x37194d[_0x7dfb('0x2f')],_0x37194d[_0x7dfb('0x32')]);_0x1d2b97['attributes']=_[_0x7dfb('0x33')](_0x37194d[_0x7dfb('0x2f')],qs[_0x7dfb('0x34')](_0xf605fd[_0x7dfb('0x32')]['fields']));_0x1d2b97['attributes']=_0x1d2b97['attributes'][_0x7dfb('0x35')]?_0x1d2b97[_0x7dfb('0x36')]:_0x37194d[_0x7dfb('0x2f')];if(!_0xf605fd[_0x7dfb('0x32')][_0x7dfb('0x37')](_0x7dfb('0x38'))){_0x1d2b97['limit']=qs[_0x7dfb('0x1f')](_0xf605fd['query'][_0x7dfb('0x1f')]);_0x1d2b97[_0x7dfb('0x1d')]=qs[_0x7dfb('0x1d')](_0xf605fd[_0x7dfb('0x32')][_0x7dfb('0x1d')]);}_0x1d2b97[_0x7dfb('0x39')]=qs['sort'](_0xf605fd['query']['sort']);_0x1d2b97[_0x7dfb('0x3a')]=qs['filters'](_[_0x7dfb('0x3b')](_0xf605fd[_0x7dfb('0x32')],_0x37194d[_0x7dfb('0x3c')]),_0x1a0dcd);if(_0xf605fd[_0x7dfb('0x32')][_0x7dfb('0x3d')]){_0x1d2b97[_0x7dfb('0x3a')]=_['merge'](_0x1d2b97[_0x7dfb('0x3a')],{'$or':_[_0x7dfb('0x30')](_0x1a0dcd,function(_0x2ecd5e){if(_0x2ecd5e['type']!==_0x7dfb('0x3e')){var _0x438125={};_0x438125[_0x2ecd5e['name']]={'$like':'%'+_0xf605fd[_0x7dfb('0x32')][_0x7dfb('0x3d')]+'%'};return _0x438125;}})});}_0x1d2b97=_[_0x7dfb('0x3f')]({},_0x1d2b97,_0xf605fd[_0x7dfb('0x40')]);var _0x49fdd9={'where':_0x1d2b97[_0x7dfb('0x3a')]};return db['JscriptyQuestionReport'][_0x7dfb('0x20')](_0x49fdd9)['then'](function(_0x3183b4){_0x48beff[_0x7dfb('0x20')]=_0x3183b4;if(_0xf605fd[_0x7dfb('0x32')][_0x7dfb('0x41')]){_0x1d2b97[_0x7dfb('0x42')]=[{'all':!![]}];}return db[_0x7dfb('0x43')][_0x7dfb('0x44')](_0x1d2b97);})[_0x7dfb('0x25')](function(_0x40bc06){_0x48beff['rows']=_0x40bc06;return _0x48beff;})[_0x7dfb('0x25')](respondWithFilteredResult(_0x481e17,_0x1d2b97))['catch'](handleError(_0x481e17,null));};exports[_0x7dfb('0x45')]=function(_0x403c81,_0x28010e){var _0x5373e0={'raw':!![],'where':{'id':_0x403c81[_0x7dfb('0x46')]['id']}},_0x5849c9={};_0x5849c9[_0x7dfb('0x2f')]=_['keys'](db['JscriptyQuestionReport'][_0x7dfb('0x47')]);_0x5849c9[_0x7dfb('0x32')]=_['keys'](_0x403c81[_0x7dfb('0x32')]);_0x5849c9[_0x7dfb('0x3c')]=_['intersection'](_0x5849c9[_0x7dfb('0x2f')],_0x5849c9[_0x7dfb('0x32')]);_0x5373e0[_0x7dfb('0x36')]=_['intersection'](_0x5849c9[_0x7dfb('0x2f')],qs['fields'](_0x403c81[_0x7dfb('0x32')]['fields']));_0x5373e0[_0x7dfb('0x36')]=_0x5373e0[_0x7dfb('0x36')][_0x7dfb('0x35')]?_0x5373e0[_0x7dfb('0x36')]:_0x5849c9['model'];if(_0x403c81['query'][_0x7dfb('0x41')]){_0x5373e0[_0x7dfb('0x42')]=[{'all':!![]}];}_0x5373e0=_[_0x7dfb('0x3f')]({},_0x5373e0,_0x403c81[_0x7dfb('0x40')]);return db[_0x7dfb('0x43')][_0x7dfb('0x48')](_0x5373e0)[_0x7dfb('0x25')](handleEntityNotFound(_0x28010e,null))[_0x7dfb('0x25')](respondWithResult(_0x28010e,null))['catch'](handleError(_0x28010e,null));};exports[_0x7dfb('0x49')]=function(_0xb417d9,_0x3de673){return db['JscriptyQuestionReport'][_0x7dfb('0x49')](_0xb417d9[_0x7dfb('0x4a')],{})[_0x7dfb('0x25')](respondWithResult(_0x3de673,0xc9))[_0x7dfb('0x4b')](handleError(_0x3de673,null));};exports[_0x7dfb('0x24')]=function(_0x45da80,_0x4986f){if(_0x45da80[_0x7dfb('0x4a')]['id']){delete _0x45da80['body']['id'];}return db[_0x7dfb('0x43')][_0x7dfb('0x48')]({'where':{'id':_0x45da80[_0x7dfb('0x46')]['id']}})[_0x7dfb('0x25')](handleEntityNotFound(_0x4986f,null))[_0x7dfb('0x25')](saveUpdates(_0x45da80[_0x7dfb('0x4a')],null))['then'](respondWithResult(_0x4986f,null))[_0x7dfb('0x4b')](handleError(_0x4986f,null));};exports['destroy']=function(_0x2c8aa0,_0x19935f){return db['JscriptyQuestionReport'][_0x7dfb('0x48')]({'where':{'id':_0x2c8aa0[_0x7dfb('0x46')]['id']}})['then'](handleEntityNotFound(_0x19935f,null))[_0x7dfb('0x25')](removeEntity(_0x19935f,null))[_0x7dfb('0x4b')](handleError(_0x19935f,null));};exports[_0x7dfb('0x4c')]=function(_0x571fd9,_0x2bc2b3){return db[_0x7dfb('0x43')]['describe']()[_0x7dfb('0x25')](respondWithResult(_0x2bc2b3,null))[_0x7dfb('0x4b')](handleError(_0x2bc2b3,null));};
\ No newline at end of file
index 25dd4e0..664b8d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee10=['moment','bluebird','path','rimraf','../../config/environment','exports','define','JscriptyQuestionReport','report_jscripty_questions','util','../../config/logger'];(function(_0x48257f,_0x98f597){var _0x2cc46d=function(_0x72616){while(--_0x72616){_0x48257f['push'](_0x48257f['shift']());}};_0x2cc46d(++_0x98f597);}(_0xee10,0xa3));var _0x0ee1=function(_0x185b19,_0x15dbc2){_0x185b19=_0x185b19-0x0;var _0xffc90d=_0xee10[_0x185b19];return _0xffc90d;};'use strict';var _=require('lodash');var util=require(_0x0ee1('0x0'));var logger=require(_0x0ee1('0x1'))('api');var moment=require(_0x0ee1('0x2'));var BPromise=require(_0x0ee1('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0ee1('0x4'));var rimraf=require(_0x0ee1('0x5'));var config=require(_0x0ee1('0x6'));var attributes=require('./jscriptyQuestionReport.attributes');module[_0x0ee1('0x7')]=function(_0x223c7b,_0x42aaf1){return _0x223c7b[_0x0ee1('0x8')](_0x0ee1('0x9'),attributes,{'tableName':_0x0ee1('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf3eb=['JscriptyQuestionReport','report_jscripty_questions','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./jscriptyQuestionReport.attributes','define'];(function(_0x485b5a,_0x2b289b){var _0xd2b34d=function(_0x34dcbd){while(--_0x34dcbd){_0x485b5a['push'](_0x485b5a['shift']());}};_0xd2b34d(++_0x2b289b);}(_0xf3eb,0x9e));var _0xbf3e=function(_0x16e935,_0x1246a8){_0x16e935=_0x16e935-0x0;var _0xf9eda9=_0xf3eb[_0x16e935];return _0xf9eda9;};'use strict';var _=require(_0xbf3e('0x0'));var util=require(_0xbf3e('0x1'));var logger=require(_0xbf3e('0x2'))(_0xbf3e('0x3'));var moment=require('moment');var BPromise=require(_0xbf3e('0x4'));var rp=require(_0xbf3e('0x5'));var fs=require('fs');var path=require(_0xbf3e('0x6'));var rimraf=require(_0xbf3e('0x7'));var config=require(_0xbf3e('0x8'));var attributes=require(_0xbf3e('0x9'));module['exports']=function(_0x167819,_0x53c19a){return _0x167819[_0xbf3e('0xa')](_0xbf3e('0xb'),attributes,{'tableName':_0xbf3e('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b0d430d..592ef68 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde13=['../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','JscriptyQuestionReport,\x20%s,\x20%s','request\x20sent','debug','JscriptyQuestionReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','util','moment','randomstring','ioredis','../../mysqldb'];(function(_0x4c9d0a,_0x1e6c53){var _0x35e82c=function(_0x24caa3){while(--_0x24caa3){_0x4c9d0a['push'](_0x4c9d0a['shift']());}};_0x35e82c(++_0x1e6c53);}(_0xde13,0x126));var _0x3de1=function(_0x5c0c51,_0x40e234){_0x5c0c51=_0x5c0c51-0x0;var _0x58564f=_0xde13[_0x5c0c51];return _0x58564f;};'use strict';var _=require('lodash');var util=require(_0x3de1('0x0'));var moment=require(_0x3de1('0x1'));var BPromise=require('bluebird');var rs=require(_0x3de1('0x2'));var fs=require('fs');var Redis=require(_0x3de1('0x3'));var db=require(_0x3de1('0x4'))['db'];var utils=require(_0x3de1('0x5'));var logger=require(_0x3de1('0x6'))('rpc');var config=require(_0x3de1('0x7'));var jayson=require(_0x3de1('0x8'));var client=jayson[_0x3de1('0x9')][_0x3de1('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2c7e0f,_0x2b34c4,_0x4c06e2){return new BPromise(function(_0x431286,_0x1288f0){return client[_0x3de1('0xb')](_0x2c7e0f,_0x4c06e2)[_0x3de1('0xc')](function(_0x11e9e1){logger[_0x3de1('0xd')](_0x3de1('0xe'),_0x2b34c4,_0x3de1('0xf'));logger[_0x3de1('0x10')](_0x3de1('0x11'),_0x2b34c4,'request\x20sent',JSON[_0x3de1('0x12')](_0x11e9e1));if(_0x11e9e1['error']){if(_0x11e9e1[_0x3de1('0x13')][_0x3de1('0x14')]===0x1f4){logger[_0x3de1('0x13')]('JscriptyQuestionReport,\x20%s,\x20%s',_0x2b34c4,_0x11e9e1[_0x3de1('0x13')][_0x3de1('0x15')]);return _0x1288f0(_0x11e9e1[_0x3de1('0x13')]['message']);}logger[_0x3de1('0x13')](_0x3de1('0xe'),_0x2b34c4,_0x11e9e1[_0x3de1('0x13')][_0x3de1('0x15')]);return _0x431286(_0x11e9e1[_0x3de1('0x13')][_0x3de1('0x15')]);}else{logger[_0x3de1('0xd')](_0x3de1('0xe'),_0x2b34c4,_0x3de1('0xf'));_0x431286(_0x11e9e1['result'][_0x3de1('0x15')]);}})[_0x3de1('0x16')](function(_0x56db7d){logger[_0x3de1('0x13')](_0x3de1('0xe'),_0x2b34c4,_0x56db7d);_0x1288f0(_0x56db7d);});});}
\ No newline at end of file
+var _0x3514=['error','code','message','info','result','catch','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','then','JscriptyQuestionReport,\x20%s,\x20%s','request\x20sent','debug','JscriptyQuestionReport,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x5f309e,_0x66e31){var _0x487b5e=function(_0x44f203){while(--_0x44f203){_0x5f309e['push'](_0x5f309e['shift']());}};_0x487b5e(++_0x66e31);}(_0x3514,0x176));var _0x4351=function(_0x5cf7e6,_0x6c44a2){_0x5cf7e6=_0x5cf7e6-0x0;var _0x48de16=_0x3514[_0x5cf7e6];return _0x48de16;};'use strict';var _=require(_0x4351('0x0'));var util=require(_0x4351('0x1'));var moment=require('moment');var BPromise=require(_0x4351('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x4351('0x3'));var db=require(_0x4351('0x4'))['db'];var utils=require(_0x4351('0x5'));var logger=require(_0x4351('0x6'))('rpc');var config=require(_0x4351('0x7'));var jayson=require(_0x4351('0x8'));var client=jayson[_0x4351('0x9')][_0x4351('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4f98ea,_0x151470,_0x4428d2){return new BPromise(function(_0x430806,_0x7511ed){return client['request'](_0x4f98ea,_0x4428d2)[_0x4351('0xb')](function(_0x5e5b25){logger['info'](_0x4351('0xc'),_0x151470,_0x4351('0xd'));logger[_0x4351('0xe')](_0x4351('0xf'),_0x151470,_0x4351('0xd'),JSON[_0x4351('0x10')](_0x5e5b25));if(_0x5e5b25[_0x4351('0x11')]){if(_0x5e5b25[_0x4351('0x11')][_0x4351('0x12')]===0x1f4){logger[_0x4351('0x11')](_0x4351('0xc'),_0x151470,_0x5e5b25['error'][_0x4351('0x13')]);return _0x7511ed(_0x5e5b25['error'][_0x4351('0x13')]);}logger[_0x4351('0x11')]('JscriptyQuestionReport,\x20%s,\x20%s',_0x151470,_0x5e5b25[_0x4351('0x11')][_0x4351('0x13')]);return _0x430806(_0x5e5b25[_0x4351('0x11')]['message']);}else{logger[_0x4351('0x14')](_0x4351('0xc'),_0x151470,_0x4351('0xd'));_0x430806(_0x5e5b25[_0x4351('0x15')][_0x4351('0x13')]);}})[_0x4351('0x16')](function(_0x19510b){logger[_0x4351('0x11')]('JscriptyQuestionReport,\x20%s,\x20%s',_0x151470,_0x19510b);_0x7511ed(_0x19510b);});});}
\ No newline at end of file
index 21d6dc5..0f30694 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3b70=['express','Router','fs-extra','./jscriptySessionReport.controller','get','/describe','isAuthenticated','/:id','show','getQuestions','post','create','put','destroy','exports','path'];(function(_0x52bd97,_0x1a1bfc){var _0x26dadf=function(_0x2a5af5){while(--_0x2a5af5){_0x52bd97['push'](_0x52bd97['shift']());}};_0x26dadf(++_0x1a1bfc);}(_0x3b70,0x6f));var _0x03b7=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x3b70[_0x2dafbe];return _0x58a45a;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x03b7('0x0'));var timeout=require('connect-timeout');var express=require(_0x03b7('0x1'));var router=express[_0x03b7('0x2')]();var fs_extra=require(_0x03b7('0x3'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x03b7('0x4'));router[_0x03b7('0x5')]('/',auth['isAuthenticated'](),controller['index']);router[_0x03b7('0x5')](_0x03b7('0x6'),auth[_0x03b7('0x7')](),controller['describe']);router[_0x03b7('0x5')](_0x03b7('0x8'),auth[_0x03b7('0x7')](),controller[_0x03b7('0x9')]);router[_0x03b7('0x5')]('/:id/questions',auth[_0x03b7('0x7')](),controller[_0x03b7('0xa')]);router[_0x03b7('0xb')]('/',auth['isAuthenticated'](),controller[_0x03b7('0xc')]);router[_0x03b7('0xd')](_0x03b7('0x8'),auth[_0x03b7('0x7')](),controller['update']);router['delete']('/:id',auth['isAuthenticated'](),controller[_0x03b7('0xe')]);module[_0x03b7('0xf')]=router;
\ No newline at end of file
+var _0x5d17=['update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','/:id/questions','create','put'];(function(_0x22a327,_0x3f28b0){var _0x4b71a8=function(_0x570125){while(--_0x570125){_0x22a327['push'](_0x22a327['shift']());}};_0x4b71a8(++_0x3f28b0);}(_0x5d17,0x164));var _0x75d1=function(_0x504dd8,_0x1396f2){_0x504dd8=_0x504dd8-0x0;var _0x54db75=_0x5d17[_0x504dd8];return _0x54db75;};'use strict';var multer=require(_0x75d1('0x0'));var util=require(_0x75d1('0x1'));var path=require(_0x75d1('0x2'));var timeout=require(_0x75d1('0x3'));var express=require(_0x75d1('0x4'));var router=express[_0x75d1('0x5')]();var fs_extra=require(_0x75d1('0x6'));var auth=require(_0x75d1('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x75d1('0x8'));var controller=require('./jscriptySessionReport.controller');router[_0x75d1('0x9')]('/',auth[_0x75d1('0xa')](),controller[_0x75d1('0xb')]);router[_0x75d1('0x9')](_0x75d1('0xc'),auth[_0x75d1('0xa')](),controller[_0x75d1('0xd')]);router[_0x75d1('0x9')](_0x75d1('0xe'),auth[_0x75d1('0xa')](),controller['show']);router[_0x75d1('0x9')](_0x75d1('0xf'),auth[_0x75d1('0xa')](),controller['getQuestions']);router['post']('/',auth[_0x75d1('0xa')](),controller[_0x75d1('0x10')]);router[_0x75d1('0x11')](_0x75d1('0xe'),auth[_0x75d1('0xa')](),controller[_0x75d1('0x12')]);router[_0x75d1('0x13')]('/:id',auth[_0x75d1('0xa')](),controller[_0x75d1('0x14')]);module[_0x75d1('0x15')]=router;
\ No newline at end of file
index c21fe44..bd9a913 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3302=['YYYY-MM-DD\x20HH:mm:ss','STRING','BOOLEAN','moment','sequelize','DATE','setDataValue','endtime','format'];(function(_0x5adfc8,_0x42d84c){var _0x11cbc6=function(_0x9176ca){while(--_0x9176ca){_0x5adfc8['push'](_0x5adfc8['shift']());}};_0x11cbc6(++_0x42d84c);}(_0x3302,0xff));var _0x2330=function(_0x825dd3,_0x2baad8){_0x825dd3=_0x825dd3-0x0;var _0x2e826a=_0x3302[_0x825dd3];return _0x2e826a;};'use strict';var moment=require(_0x2330('0x0'));var Sequelize=require(_0x2330('0x1'));module['exports']={'starttime':{'type':Sequelize[_0x2330('0x2')],'set':function(_0x28ef13){this[_0x2330('0x3')]('starttime',_0x28ef13);this[_0x2330('0x3')](_0x2330('0x4'),moment()[_0x2330('0x5')](_0x2330('0x6')));}},'endtime':{'type':Sequelize[_0x2330('0x2')]},'membername':{'type':Sequelize[_0x2330('0x7')]},'projectname':{'type':Sequelize[_0x2330('0x7')]},'queue':{'type':Sequelize[_0x2330('0x7')]},'uniqueid':{'type':Sequelize[_0x2330('0x7')]},'calleridname':{'type':Sequelize[_0x2330('0x7')]},'calleridnum':{'type':Sequelize['STRING']},'completed':{'type':Sequelize[_0x2330('0x8')],'defaultValue':![]}};
\ No newline at end of file
+var _0xa5c5=['sequelize','exports','setDataValue','starttime','endtime','format','YYYY-MM-DD\x20HH:mm:ss','DATE','STRING','BOOLEAN','moment'];(function(_0x1fd8d2,_0x3d7d3a){var _0x178cad=function(_0x172540){while(--_0x172540){_0x1fd8d2['push'](_0x1fd8d2['shift']());}};_0x178cad(++_0x3d7d3a);}(_0xa5c5,0xba));var _0x5a5c=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xa5c5[_0x14add3];return _0x4a174f;};'use strict';var moment=require(_0x5a5c('0x0'));var Sequelize=require(_0x5a5c('0x1'));module[_0x5a5c('0x2')]={'starttime':{'type':Sequelize['DATE'],'set':function(_0x35c46b){this[_0x5a5c('0x3')](_0x5a5c('0x4'),_0x35c46b);this[_0x5a5c('0x3')](_0x5a5c('0x5'),moment()[_0x5a5c('0x6')](_0x5a5c('0x7')));}},'endtime':{'type':Sequelize[_0x5a5c('0x8')]},'membername':{'type':Sequelize[_0x5a5c('0x9')]},'projectname':{'type':Sequelize[_0x5a5c('0x9')]},'queue':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0x5a5c('0x9')]},'calleridname':{'type':Sequelize[_0x5a5c('0x9')]},'calleridnum':{'type':Sequelize[_0x5a5c('0x9')]},'completed':{'type':Sequelize[_0x5a5c('0xa')],'defaultValue':![]}};
\ No newline at end of file
index fd951b6..858596c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x213d=['papaparse','ioredis','../../components/auth/service','../../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','reject','save','update','then','destroy','stack','name','send','index','JscriptySessionReport','rawAttributes','fieldName','key','model','map','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','merge','type','filter','includeAll','include','findAll','rows','catch','show','params','keys','find','create','body','describe','getQuestions','findOne','pick','options','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring'];(function(_0x4a874c,_0x33eed2){var _0x4eb7db=function(_0x306c53){while(--_0x306c53){_0x4a874c['push'](_0x4a874c['shift']());}};_0x4eb7db(++_0x33eed2);}(_0x213d,0xdd));var _0xd213=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x213d[_0x5b644e];return _0x49c6bf;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xd213('0x0'));var zipdir=require(_0xd213('0x1'));var jsonpatch=require(_0xd213('0x2'));var rp=require(_0xd213('0x3'));var moment=require('moment');var BPromise=require(_0xd213('0x4'));var Mustache=require(_0xd213('0x5'));var util=require(_0xd213('0x6'));var path=require(_0xd213('0x7'));var sox=require(_0xd213('0x8'));var csv=require(_0xd213('0x9'));var ejs=require(_0xd213('0xa'));var fs=require('fs');var fs_extra=require(_0xd213('0xb'));var _=require(_0xd213('0xc'));var squel=require(_0xd213('0xd'));var crypto=require(_0xd213('0xe'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xd213('0xf'));var Papa=require(_0xd213('0x10'));var Redis=require(_0xd213('0x11'));var authService=require(_0xd213('0x12'));var qs=require(_0xd213('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xd213('0x14'));var logger=require(_0xd213('0x15'))(_0xd213('0x16'));var utils=require(_0xd213('0x17'));var config=require(_0xd213('0x18'));var licenseUtil=require(_0xd213('0x19'));var db=require(_0xd213('0x1a'))['db'];function respondWithStatusCode(_0x54073f,_0x4acee9){_0x4acee9=_0x4acee9||0xcc;return function(_0x598e97){if(_0x598e97){return _0x54073f[_0xd213('0x1b')](_0x4acee9);}return _0x54073f['status'](_0x4acee9)[_0xd213('0x1c')]();};}function respondWithResult(_0x364d16,_0x1dbc6d){_0x1dbc6d=_0x1dbc6d||0xc8;return function(_0x55eff5){if(_0x55eff5){return _0x364d16[_0xd213('0x1d')](_0x1dbc6d)[_0xd213('0x1e')](_0x55eff5);}};}function respondWithFilteredResult(_0x42429f,_0x3fb129){return function(_0x2560f9){if(_0x2560f9){var _0x40eaaf=typeof _0x3fb129[_0xd213('0x1f')]===_0xd213('0x20')&&typeof _0x3fb129[_0xd213('0x21')]===_0xd213('0x20');var _0x249ff9=_0x2560f9[_0xd213('0x22')];var _0x1c2f2b=_0x40eaaf?0x0:_0x3fb129[_0xd213('0x1f')];var _0x49c01f=_0x40eaaf?_0x2560f9[_0xd213('0x22')]:_0x3fb129[_0xd213('0x1f')]+_0x3fb129[_0xd213('0x21')];var _0xe1bae4;if(_0x49c01f>=_0x249ff9){_0x49c01f=_0x249ff9;_0xe1bae4=0xc8;}else{_0xe1bae4=0xce;}_0x42429f['status'](_0xe1bae4);return _0x42429f['set']('Content-Range',_0x1c2f2b+'-'+_0x49c01f+'/'+_0x249ff9)[_0xd213('0x1e')](_0x2560f9);}return null;};}function patchUpdates(_0x1a5f26){return function(_0x574254){try{jsonpatch['apply'](_0x574254,_0x1a5f26,!![]);}catch(_0x5c3afe){return BPromise[_0xd213('0x23')](_0x5c3afe);}return _0x574254[_0xd213('0x24')]();};}function saveUpdates(_0x49002c,_0x5c6a73){return function(_0x2575dd){if(_0x2575dd){return _0x2575dd[_0xd213('0x25')](_0x49002c)[_0xd213('0x26')](function(_0x3e05e5){return _0x3e05e5;});}return null;};}function removeEntity(_0x4d8620,_0x1c669a){return function(_0x395347){if(_0x395347){return _0x395347[_0xd213('0x27')]()['then'](function(){_0x4d8620[_0xd213('0x1d')](0xcc)[_0xd213('0x1c')]();});}};}function handleEntityNotFound(_0x566ea0,_0x32e88d){return function(_0x2cd7cf){if(!_0x2cd7cf){_0x566ea0[_0xd213('0x1b')](0x194);}return _0x2cd7cf;};}function handleError(_0xea8fe4,_0x37ad6f){_0x37ad6f=_0x37ad6f||0x1f4;return function(_0x50c6d2){logger['error'](_0x50c6d2[_0xd213('0x28')]);if(_0x50c6d2['name']){delete _0x50c6d2[_0xd213('0x29')];}_0xea8fe4['status'](_0x37ad6f)[_0xd213('0x2a')](_0x50c6d2);};}exports[_0xd213('0x2b')]=function(_0x1b1555,_0x5444e0){var _0x4bcdaf={},_0x179ac9={},_0x4d0649={'count':0x0,'rows':[]};var _0x5ac71e=_['map'](db[_0xd213('0x2c')][_0xd213('0x2d')],function(_0x117b62){return{'name':_0x117b62[_0xd213('0x2e')],'type':_0x117b62['type'][_0xd213('0x2f')]};});_0x179ac9[_0xd213('0x30')]=_[_0xd213('0x31')](_0x5ac71e,_0xd213('0x29'));_0x179ac9[_0xd213('0x32')]=_['keys'](_0x1b1555[_0xd213('0x32')]);_0x179ac9[_0xd213('0x33')]=_[_0xd213('0x34')](_0x179ac9[_0xd213('0x30')],_0x179ac9[_0xd213('0x32')]);_0x4bcdaf[_0xd213('0x35')]=_['intersection'](_0x179ac9[_0xd213('0x30')],qs[_0xd213('0x36')](_0x1b1555[_0xd213('0x32')][_0xd213('0x36')]));_0x4bcdaf[_0xd213('0x35')]=_0x4bcdaf[_0xd213('0x35')][_0xd213('0x37')]?_0x4bcdaf[_0xd213('0x35')]:_0x179ac9[_0xd213('0x30')];if(!_0x1b1555['query'][_0xd213('0x38')]('nolimit')){_0x4bcdaf['limit']=qs[_0xd213('0x21')](_0x1b1555['query'][_0xd213('0x21')]);_0x4bcdaf[_0xd213('0x1f')]=qs['offset'](_0x1b1555[_0xd213('0x32')][_0xd213('0x1f')]);}_0x4bcdaf[_0xd213('0x39')]=qs[_0xd213('0x3a')](_0x1b1555['query']['sort']);_0x4bcdaf[_0xd213('0x3b')]=qs[_0xd213('0x33')](_['pick'](_0x1b1555['query'],_0x179ac9['filters']),_0x5ac71e);if(_0x1b1555['query']['filter']){_0x4bcdaf[_0xd213('0x3b')]=_[_0xd213('0x3c')](_0x4bcdaf['where'],{'$or':_[_0xd213('0x31')](_0x5ac71e,function(_0x426467){if(_0x426467[_0xd213('0x3d')]!=='VIRTUAL'){var _0x28e31b={};_0x28e31b[_0x426467[_0xd213('0x29')]]={'$like':'%'+_0x1b1555[_0xd213('0x32')][_0xd213('0x3e')]+'%'};return _0x28e31b;}})});}_0x4bcdaf=_[_0xd213('0x3c')]({},_0x4bcdaf,_0x1b1555['options']);var _0x577be0={'where':_0x4bcdaf[_0xd213('0x3b')]};return db[_0xd213('0x2c')][_0xd213('0x22')](_0x577be0)[_0xd213('0x26')](function(_0x453636){_0x4d0649[_0xd213('0x22')]=_0x453636;if(_0x1b1555['query'][_0xd213('0x3f')]){_0x4bcdaf[_0xd213('0x40')]=[{'all':!![]}];}return db[_0xd213('0x2c')][_0xd213('0x41')](_0x4bcdaf);})[_0xd213('0x26')](function(_0x1dd62f){_0x4d0649[_0xd213('0x42')]=_0x1dd62f;return _0x4d0649;})[_0xd213('0x26')](respondWithFilteredResult(_0x5444e0,_0x4bcdaf))[_0xd213('0x43')](handleError(_0x5444e0,null));};exports[_0xd213('0x44')]=function(_0x3a71d2,_0x39227b){var _0x360e8b={'raw':!![],'where':{'id':_0x3a71d2[_0xd213('0x45')]['id']}},_0x5e4b4d={};_0x5e4b4d[_0xd213('0x30')]=_[_0xd213('0x46')](db[_0xd213('0x2c')][_0xd213('0x2d')]);_0x5e4b4d[_0xd213('0x32')]=_[_0xd213('0x46')](_0x3a71d2[_0xd213('0x32')]);_0x5e4b4d['filters']=_[_0xd213('0x34')](_0x5e4b4d[_0xd213('0x30')],_0x5e4b4d['query']);_0x360e8b[_0xd213('0x35')]=_[_0xd213('0x34')](_0x5e4b4d[_0xd213('0x30')],qs[_0xd213('0x36')](_0x3a71d2['query'][_0xd213('0x36')]));_0x360e8b[_0xd213('0x35')]=_0x360e8b[_0xd213('0x35')][_0xd213('0x37')]?_0x360e8b['attributes']:_0x5e4b4d[_0xd213('0x30')];if(_0x3a71d2[_0xd213('0x32')][_0xd213('0x3f')]){_0x360e8b[_0xd213('0x40')]=[{'all':!![]}];}_0x360e8b=_[_0xd213('0x3c')]({},_0x360e8b,_0x3a71d2['options']);return db[_0xd213('0x2c')][_0xd213('0x47')](_0x360e8b)['then'](handleEntityNotFound(_0x39227b,null))['then'](respondWithResult(_0x39227b,null))[_0xd213('0x43')](handleError(_0x39227b,null));};exports[_0xd213('0x48')]=function(_0x5415dc,_0x501d96){return db[_0xd213('0x2c')]['create'](_0x5415dc['body'],{})[_0xd213('0x26')](respondWithResult(_0x501d96,0xc9))[_0xd213('0x43')](handleError(_0x501d96,null));};exports[_0xd213('0x25')]=function(_0x425367,_0x1b6e65){if(_0x425367['body']['id']){delete _0x425367[_0xd213('0x49')]['id'];}return db[_0xd213('0x2c')][_0xd213('0x47')]({'where':{'id':_0x425367[_0xd213('0x45')]['id']}})['then'](handleEntityNotFound(_0x1b6e65,null))[_0xd213('0x26')](saveUpdates(_0x425367[_0xd213('0x49')],null))[_0xd213('0x26')](respondWithResult(_0x1b6e65,null))[_0xd213('0x43')](handleError(_0x1b6e65,null));};exports['destroy']=function(_0x42d596,_0x559b5c){return db[_0xd213('0x2c')]['find']({'where':{'id':_0x42d596[_0xd213('0x45')]['id']}})['then'](handleEntityNotFound(_0x559b5c,null))[_0xd213('0x26')](removeEntity(_0x559b5c,null))[_0xd213('0x43')](handleError(_0x559b5c,null));};exports['describe']=function(_0x4077b2,_0x25e492){return db[_0xd213('0x2c')][_0xd213('0x4a')]()['then'](respondWithResult(_0x25e492,null))[_0xd213('0x43')](handleError(_0x25e492,null));};exports[_0xd213('0x4b')]=function(_0xad89dd,_0x812443,_0x3e67c6){var _0x4c9dd6={'raw':!![],'where':{}};var _0x518353={};var _0x94e8e2={'count':0x0,'rows':[]};return db[_0xd213('0x2c')][_0xd213('0x4c')]({'where':{'id':_0xad89dd[_0xd213('0x45')]['id']}})[_0xd213('0x26')](handleEntityNotFound(_0x812443,null))[_0xd213('0x26')](function(_0x406392){if(_0x406392){_0x518353['model']=_[_0xd213('0x46')](db['JscriptyQuestionReport'][_0xd213('0x2d')]);_0x518353[_0xd213('0x32')]=_['keys'](_0xad89dd[_0xd213('0x32')]);_0x518353['filters']=_[_0xd213('0x34')](_0x518353[_0xd213('0x30')],_0x518353[_0xd213('0x32')]);_0x4c9dd6[_0xd213('0x35')]=_[_0xd213('0x34')](_0x518353[_0xd213('0x30')],qs[_0xd213('0x36')](_0xad89dd[_0xd213('0x32')][_0xd213('0x36')]));_0x4c9dd6[_0xd213('0x35')]=_0x4c9dd6[_0xd213('0x35')]['length']?_0x4c9dd6[_0xd213('0x35')]:_0x518353['model'];if(!_0xad89dd[_0xd213('0x32')][_0xd213('0x38')]('nolimit')){_0x4c9dd6[_0xd213('0x21')]=qs[_0xd213('0x21')](_0xad89dd[_0xd213('0x32')][_0xd213('0x21')]);_0x4c9dd6[_0xd213('0x1f')]=qs['offset'](_0xad89dd[_0xd213('0x32')][_0xd213('0x1f')]);}_0x4c9dd6[_0xd213('0x39')]=qs[_0xd213('0x3a')](_0xad89dd[_0xd213('0x32')][_0xd213('0x3a')]);_0x4c9dd6['where']=qs['filters'](_[_0xd213('0x4d')](_0xad89dd[_0xd213('0x32')],_0x518353[_0xd213('0x33')]));_0x4c9dd6[_0xd213('0x3b')]['SessionId']=_0x406392['id'];if(_0xad89dd[_0xd213('0x32')][_0xd213('0x3e')]){_0x4c9dd6['where']=_[_0xd213('0x3c')](_0x4c9dd6[_0xd213('0x3b')],{'$or':_[_0xd213('0x31')](_0x4c9dd6['attributes'],function(_0x34c42f){var _0x445553={};_0x445553[_0x34c42f]={'$like':'%'+_0xad89dd[_0xd213('0x32')]['filter']+'%'};return _0x445553;})});}_0x4c9dd6=_[_0xd213('0x3c')]({},_0x4c9dd6,_0xad89dd[_0xd213('0x4e')]);return db['JscriptyQuestionReport'][_0xd213('0x22')]({'where':_0x4c9dd6['where']})[_0xd213('0x26')](function(_0x5ebfe9){_0x94e8e2['count']=_0x5ebfe9;if(_0xad89dd[_0xd213('0x32')][_0xd213('0x3f')]){_0x4c9dd6[_0xd213('0x40')]=[{'all':!![]}];}return db['JscriptyQuestionReport'][_0xd213('0x41')](_0x4c9dd6);})[_0xd213('0x26')](function(_0x3dbe79){_0x94e8e2[_0xd213('0x42')]=_0x3dbe79;return _0x94e8e2;});}})[_0xd213('0x26')](respondWithFilteredResult(_0x812443,_0x4c9dd6))[_0xd213('0x43')](handleError(_0x812443,null));};
\ No newline at end of file
+var _0x3160=['papaparse','ioredis','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','end','status','json','offset','undefined','count','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','JscriptySessionReport','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','keys','include','create','body','find','describe','getQuestions','findOne','JscriptyQuestionReport','pick','SessionId','filter','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','to-csv','fs-extra','crypto','jsforce','querystring'];(function(_0x278c63,_0x3483cc){var _0x35d395=function(_0x255a86){while(--_0x255a86){_0x278c63['push'](_0x278c63['shift']());}};_0x35d395(++_0x3483cc);}(_0x3160,0x12c));var _0x0316=function(_0x58a20b,_0x143b79){_0x58a20b=_0x58a20b-0x0;var _0x144225=_0x3160[_0x58a20b];return _0x144225;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x0316('0x0'));var zipdir=require(_0x0316('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x0316('0x2'));var moment=require(_0x0316('0x3'));var BPromise=require(_0x0316('0x4'));var Mustache=require(_0x0316('0x5'));var util=require(_0x0316('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0x0316('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0316('0x8'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x0316('0x9'));var jsforce=require(_0x0316('0xa'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x0316('0xb'));var Papa=require(_0x0316('0xc'));var Redis=require(_0x0316('0xd'));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(_0x0316('0xe'))(_0x0316('0xf'));var utils=require(_0x0316('0x10'));var config=require(_0x0316('0x11'));var licenseUtil=require(_0x0316('0x12'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4ca10d,_0x17d786){_0x17d786=_0x17d786||0xcc;return function(_0xd10a64){if(_0xd10a64){return _0x4ca10d[_0x0316('0x13')](_0x17d786);}return _0x4ca10d['status'](_0x17d786)[_0x0316('0x14')]();};}function respondWithResult(_0x48bc36,_0x542dff){_0x542dff=_0x542dff||0xc8;return function(_0xd92137){if(_0xd92137){return _0x48bc36[_0x0316('0x15')](_0x542dff)[_0x0316('0x16')](_0xd92137);}};}function respondWithFilteredResult(_0x4c54cc,_0x2cdebe){return function(_0x1d53d6){if(_0x1d53d6){var _0x56d36c=typeof _0x2cdebe[_0x0316('0x17')]===_0x0316('0x18')&&typeof _0x2cdebe['limit']===_0x0316('0x18');var _0xa085d1=_0x1d53d6[_0x0316('0x19')];var _0x561a8b=_0x56d36c?0x0:_0x2cdebe[_0x0316('0x17')];var _0x4d3b15=_0x56d36c?_0x1d53d6['count']:_0x2cdebe['offset']+_0x2cdebe['limit'];var _0x406ac8;if(_0x4d3b15>=_0xa085d1){_0x4d3b15=_0xa085d1;_0x406ac8=0xc8;}else{_0x406ac8=0xce;}_0x4c54cc[_0x0316('0x15')](_0x406ac8);return _0x4c54cc['set'](_0x0316('0x1a'),_0x561a8b+'-'+_0x4d3b15+'/'+_0xa085d1)[_0x0316('0x16')](_0x1d53d6);}return null;};}function patchUpdates(_0x363a0d){return function(_0x5a2d9b){try{jsonpatch[_0x0316('0x1b')](_0x5a2d9b,_0x363a0d,!![]);}catch(_0x17fd12){return BPromise[_0x0316('0x1c')](_0x17fd12);}return _0x5a2d9b[_0x0316('0x1d')]();};}function saveUpdates(_0x1777a6,_0x159f3b){return function(_0xb8a43b){if(_0xb8a43b){return _0xb8a43b[_0x0316('0x1e')](_0x1777a6)[_0x0316('0x1f')](function(_0x2ab3ac){return _0x2ab3ac;});}return null;};}function removeEntity(_0x3f7479,_0x179c2e){return function(_0x45f3a3){if(_0x45f3a3){return _0x45f3a3[_0x0316('0x20')]()['then'](function(){_0x3f7479[_0x0316('0x15')](0xcc)[_0x0316('0x14')]();});}};}function handleEntityNotFound(_0x206249,_0x4571b5){return function(_0x387230){if(!_0x387230){_0x206249[_0x0316('0x13')](0x194);}return _0x387230;};}function handleError(_0x59b84c,_0x21bbb6){_0x21bbb6=_0x21bbb6||0x1f4;return function(_0x765390){logger[_0x0316('0x21')](_0x765390[_0x0316('0x22')]);if(_0x765390[_0x0316('0x23')]){delete _0x765390[_0x0316('0x23')];}_0x59b84c[_0x0316('0x15')](_0x21bbb6)[_0x0316('0x24')](_0x765390);};}exports[_0x0316('0x25')]=function(_0x392408,_0x58dc5d){var _0xeb2397={},_0x55bc1b={},_0x390fdd={'count':0x0,'rows':[]};var _0x3eb473=_[_0x0316('0x26')](db[_0x0316('0x27')][_0x0316('0x28')],function(_0x50287b){return{'name':_0x50287b[_0x0316('0x29')],'type':_0x50287b[_0x0316('0x2a')][_0x0316('0x2b')]};});_0x55bc1b[_0x0316('0x2c')]=_[_0x0316('0x26')](_0x3eb473,_0x0316('0x23'));_0x55bc1b[_0x0316('0x2d')]=_['keys'](_0x392408[_0x0316('0x2d')]);_0x55bc1b[_0x0316('0x2e')]=_[_0x0316('0x2f')](_0x55bc1b[_0x0316('0x2c')],_0x55bc1b[_0x0316('0x2d')]);_0xeb2397[_0x0316('0x30')]=_[_0x0316('0x2f')](_0x55bc1b[_0x0316('0x2c')],qs[_0x0316('0x31')](_0x392408[_0x0316('0x2d')]['fields']));_0xeb2397[_0x0316('0x30')]=_0xeb2397[_0x0316('0x30')][_0x0316('0x32')]?_0xeb2397[_0x0316('0x30')]:_0x55bc1b[_0x0316('0x2c')];if(!_0x392408[_0x0316('0x2d')][_0x0316('0x33')](_0x0316('0x34'))){_0xeb2397[_0x0316('0x35')]=qs[_0x0316('0x35')](_0x392408[_0x0316('0x2d')][_0x0316('0x35')]);_0xeb2397[_0x0316('0x17')]=qs[_0x0316('0x17')](_0x392408[_0x0316('0x2d')][_0x0316('0x17')]);}_0xeb2397[_0x0316('0x36')]=qs['sort'](_0x392408[_0x0316('0x2d')][_0x0316('0x37')]);_0xeb2397[_0x0316('0x38')]=qs['filters'](_['pick'](_0x392408['query'],_0x55bc1b[_0x0316('0x2e')]),_0x3eb473);if(_0x392408[_0x0316('0x2d')]['filter']){_0xeb2397[_0x0316('0x38')]=_[_0x0316('0x39')](_0xeb2397[_0x0316('0x38')],{'$or':_['map'](_0x3eb473,function(_0x5e5385){if(_0x5e5385['type']!==_0x0316('0x3a')){var _0x36deb3={};_0x36deb3[_0x5e5385[_0x0316('0x23')]]={'$like':'%'+_0x392408[_0x0316('0x2d')]['filter']+'%'};return _0x36deb3;}})});}_0xeb2397=_[_0x0316('0x39')]({},_0xeb2397,_0x392408[_0x0316('0x3b')]);var _0x4576ea={'where':_0xeb2397[_0x0316('0x38')]};return db['JscriptySessionReport'][_0x0316('0x19')](_0x4576ea)[_0x0316('0x1f')](function(_0x5f9267){_0x390fdd[_0x0316('0x19')]=_0x5f9267;if(_0x392408[_0x0316('0x2d')][_0x0316('0x3c')]){_0xeb2397['include']=[{'all':!![]}];}return db[_0x0316('0x27')][_0x0316('0x3d')](_0xeb2397);})[_0x0316('0x1f')](function(_0x192f5e){_0x390fdd[_0x0316('0x3e')]=_0x192f5e;return _0x390fdd;})[_0x0316('0x1f')](respondWithFilteredResult(_0x58dc5d,_0xeb2397))[_0x0316('0x3f')](handleError(_0x58dc5d,null));};exports[_0x0316('0x40')]=function(_0x11f1a4,_0x180878){var _0x497d88={'raw':!![],'where':{'id':_0x11f1a4[_0x0316('0x41')]['id']}},_0x3684ef={};_0x3684ef['model']=_[_0x0316('0x42')](db[_0x0316('0x27')]['rawAttributes']);_0x3684ef['query']=_['keys'](_0x11f1a4[_0x0316('0x2d')]);_0x3684ef[_0x0316('0x2e')]=_[_0x0316('0x2f')](_0x3684ef[_0x0316('0x2c')],_0x3684ef[_0x0316('0x2d')]);_0x497d88[_0x0316('0x30')]=_['intersection'](_0x3684ef[_0x0316('0x2c')],qs[_0x0316('0x31')](_0x11f1a4[_0x0316('0x2d')][_0x0316('0x31')]));_0x497d88[_0x0316('0x30')]=_0x497d88[_0x0316('0x30')]['length']?_0x497d88['attributes']:_0x3684ef['model'];if(_0x11f1a4['query'][_0x0316('0x3c')]){_0x497d88[_0x0316('0x43')]=[{'all':!![]}];}_0x497d88=_[_0x0316('0x39')]({},_0x497d88,_0x11f1a4[_0x0316('0x3b')]);return db[_0x0316('0x27')]['find'](_0x497d88)[_0x0316('0x1f')](handleEntityNotFound(_0x180878,null))[_0x0316('0x1f')](respondWithResult(_0x180878,null))[_0x0316('0x3f')](handleError(_0x180878,null));};exports[_0x0316('0x44')]=function(_0x5d81d9,_0x176e21){return db[_0x0316('0x27')][_0x0316('0x44')](_0x5d81d9[_0x0316('0x45')],{})[_0x0316('0x1f')](respondWithResult(_0x176e21,0xc9))['catch'](handleError(_0x176e21,null));};exports[_0x0316('0x1e')]=function(_0x4aa02b,_0x52eb50){if(_0x4aa02b['body']['id']){delete _0x4aa02b[_0x0316('0x45')]['id'];}return db[_0x0316('0x27')][_0x0316('0x46')]({'where':{'id':_0x4aa02b[_0x0316('0x41')]['id']}})['then'](handleEntityNotFound(_0x52eb50,null))['then'](saveUpdates(_0x4aa02b[_0x0316('0x45')],null))['then'](respondWithResult(_0x52eb50,null))['catch'](handleError(_0x52eb50,null));};exports['destroy']=function(_0x376dd7,_0x543186){return db[_0x0316('0x27')][_0x0316('0x46')]({'where':{'id':_0x376dd7[_0x0316('0x41')]['id']}})[_0x0316('0x1f')](handleEntityNotFound(_0x543186,null))[_0x0316('0x1f')](removeEntity(_0x543186,null))[_0x0316('0x3f')](handleError(_0x543186,null));};exports[_0x0316('0x47')]=function(_0x2dcef6,_0x19167e){return db[_0x0316('0x27')][_0x0316('0x47')]()[_0x0316('0x1f')](respondWithResult(_0x19167e,null))[_0x0316('0x3f')](handleError(_0x19167e,null));};exports[_0x0316('0x48')]=function(_0xc11636,_0x33d030,_0x4ad95e){var _0x1b2bb5={'raw':!![],'where':{}};var _0x565382={};var _0x344f32={'count':0x0,'rows':[]};return db[_0x0316('0x27')][_0x0316('0x49')]({'where':{'id':_0xc11636[_0x0316('0x41')]['id']}})[_0x0316('0x1f')](handleEntityNotFound(_0x33d030,null))[_0x0316('0x1f')](function(_0x467cbc){if(_0x467cbc){_0x565382[_0x0316('0x2c')]=_[_0x0316('0x42')](db[_0x0316('0x4a')]['rawAttributes']);_0x565382[_0x0316('0x2d')]=_['keys'](_0xc11636['query']);_0x565382['filters']=_[_0x0316('0x2f')](_0x565382[_0x0316('0x2c')],_0x565382[_0x0316('0x2d')]);_0x1b2bb5[_0x0316('0x30')]=_[_0x0316('0x2f')](_0x565382['model'],qs[_0x0316('0x31')](_0xc11636[_0x0316('0x2d')][_0x0316('0x31')]));_0x1b2bb5[_0x0316('0x30')]=_0x1b2bb5[_0x0316('0x30')][_0x0316('0x32')]?_0x1b2bb5[_0x0316('0x30')]:_0x565382['model'];if(!_0xc11636[_0x0316('0x2d')][_0x0316('0x33')](_0x0316('0x34'))){_0x1b2bb5[_0x0316('0x35')]=qs[_0x0316('0x35')](_0xc11636[_0x0316('0x2d')][_0x0316('0x35')]);_0x1b2bb5[_0x0316('0x17')]=qs[_0x0316('0x17')](_0xc11636[_0x0316('0x2d')][_0x0316('0x17')]);}_0x1b2bb5[_0x0316('0x36')]=qs[_0x0316('0x37')](_0xc11636[_0x0316('0x2d')]['sort']);_0x1b2bb5['where']=qs['filters'](_[_0x0316('0x4b')](_0xc11636[_0x0316('0x2d')],_0x565382[_0x0316('0x2e')]));_0x1b2bb5[_0x0316('0x38')][_0x0316('0x4c')]=_0x467cbc['id'];if(_0xc11636[_0x0316('0x2d')][_0x0316('0x4d')]){_0x1b2bb5['where']=_['merge'](_0x1b2bb5['where'],{'$or':_['map'](_0x1b2bb5[_0x0316('0x30')],function(_0x11ddd0){var _0x4b155f={};_0x4b155f[_0x11ddd0]={'$like':'%'+_0xc11636[_0x0316('0x2d')][_0x0316('0x4d')]+'%'};return _0x4b155f;})});}_0x1b2bb5=_[_0x0316('0x39')]({},_0x1b2bb5,_0xc11636[_0x0316('0x3b')]);return db['JscriptyQuestionReport']['count']({'where':_0x1b2bb5['where']})['then'](function(_0x40b4ab){_0x344f32[_0x0316('0x19')]=_0x40b4ab;if(_0xc11636['query'][_0x0316('0x3c')]){_0x1b2bb5[_0x0316('0x43')]=[{'all':!![]}];}return db[_0x0316('0x4a')][_0x0316('0x3d')](_0x1b2bb5);})['then'](function(_0x123abe){_0x344f32[_0x0316('0x3e')]=_0x123abe;return _0x344f32;});}})['then'](respondWithFilteredResult(_0x33d030,_0x1b2bb5))[_0x0316('0x3f')](handleError(_0x33d030,null));};
\ No newline at end of file
index b1bcc38..3e57843 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd101=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','JscriptySessionReport','report_jscripty_sessions','lodash','../../config/logger'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xd101,0xc1));var _0x1d10=function(_0x5a4360,_0x11475b){_0x5a4360=_0x5a4360-0x0;var _0x1f7aab=_0xd101[_0x5a4360];return _0x1f7aab;};'use strict';var _=require(_0x1d10('0x0'));var util=require('util');var logger=require(_0x1d10('0x1'))(_0x1d10('0x2'));var moment=require(_0x1d10('0x3'));var BPromise=require(_0x1d10('0x4'));var rp=require(_0x1d10('0x5'));var fs=require('fs');var path=require(_0x1d10('0x6'));var rimraf=require(_0x1d10('0x7'));var config=require(_0x1d10('0x8'));var attributes=require('./jscriptySessionReport.attributes');module[_0x1d10('0x9')]=function(_0x203072,_0x2a4e2d){return _0x203072[_0x1d10('0xa')](_0x1d10('0xb'),attributes,{'tableName':_0x1d10('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x56a4=['./jscriptySessionReport.attributes','exports','report_jscripty_sessions','lodash','util','api','moment','path','rimraf','../../config/environment'];(function(_0x1fea1a,_0x15657a){var _0x3dd16b=function(_0xadb3e1){while(--_0xadb3e1){_0x1fea1a['push'](_0x1fea1a['shift']());}};_0x3dd16b(++_0x15657a);}(_0x56a4,0x11b));var _0x456a=function(_0x5694cd,_0x2fefe4){_0x5694cd=_0x5694cd-0x0;var _0x5235d6=_0x56a4[_0x5694cd];return _0x5235d6;};'use strict';var _=require(_0x456a('0x0'));var util=require(_0x456a('0x1'));var logger=require('../../config/logger')(_0x456a('0x2'));var moment=require(_0x456a('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x456a('0x4'));var rimraf=require(_0x456a('0x5'));var config=require(_0x456a('0x6'));var attributes=require(_0x456a('0x7'));module[_0x456a('0x8')]=function(_0x4b8eec,_0x3b0145){return _0x4b8eec['define']('JscriptySessionReport',attributes,{'tableName':_0x456a('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f66e80c..4e7b73c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x627e=['request','info','JscriptySessionReport,\x20%s,\x20%s','JscriptySessionReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','client','http'];(function(_0x4c692a,_0xd9387a){var _0x36b410=function(_0x5674ab){while(--_0x5674ab){_0x4c692a['push'](_0x4c692a['shift']());}};_0x36b410(++_0xd9387a);}(_0x627e,0x14a));var _0xe627=function(_0x478308,_0x2c028c){_0x478308=_0x478308-0x0;var _0x51d81a=_0x627e[_0x478308];return _0x51d81a;};'use strict';var _=require(_0xe627('0x0'));var util=require(_0xe627('0x1'));var moment=require(_0xe627('0x2'));var BPromise=require(_0xe627('0x3'));var rs=require(_0xe627('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xe627('0x5'))['db'];var utils=require(_0xe627('0x6'));var logger=require(_0xe627('0x7'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xe627('0x8')][_0xe627('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x45e49a,_0x2d4f63,_0xd5016e){return new BPromise(function(_0xe065b,_0x4bae52){return client[_0xe627('0xa')](_0x45e49a,_0xd5016e)['then'](function(_0x56549e){logger[_0xe627('0xb')](_0xe627('0xc'),_0x2d4f63,'request\x20sent');logger['debug'](_0xe627('0xd'),_0x2d4f63,_0xe627('0xe'),JSON[_0xe627('0xf')](_0x56549e));if(_0x56549e[_0xe627('0x10')]){if(_0x56549e[_0xe627('0x10')][_0xe627('0x11')]===0x1f4){logger[_0xe627('0x10')](_0xe627('0xc'),_0x2d4f63,_0x56549e[_0xe627('0x10')]['message']);return _0x4bae52(_0x56549e[_0xe627('0x10')][_0xe627('0x12')]);}logger[_0xe627('0x10')]('JscriptySessionReport,\x20%s,\x20%s',_0x2d4f63,_0x56549e[_0xe627('0x10')][_0xe627('0x12')]);return _0xe065b(_0x56549e[_0xe627('0x10')][_0xe627('0x12')]);}else{logger[_0xe627('0xb')](_0xe627('0xc'),_0x2d4f63,_0xe627('0xe'));_0xe065b(_0x56549e['result'][_0xe627('0x12')]);}})[_0xe627('0x13')](function(_0x16c2d7){logger[_0xe627('0x10')](_0xe627('0xc'),_0x2d4f63,_0x16c2d7);_0x4bae52(_0x16c2d7);});});}
\ No newline at end of file
+var _0x1967=['then','info','JscriptySessionReport,\x20%s,\x20%s','JscriptySessionReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request'];(function(_0x39d544,_0x35c14f){var _0x5a5ff2=function(_0x2271fb){while(--_0x2271fb){_0x39d544['push'](_0x39d544['shift']());}};_0x5a5ff2(++_0x35c14f);}(_0x1967,0x173));var _0x7196=function(_0x5ab862,_0x3ab10a){_0x5ab862=_0x5ab862-0x0;var _0x17f4af=_0x1967[_0x5ab862];return _0x17f4af;};'use strict';var _=require('lodash');var util=require(_0x7196('0x0'));var moment=require(_0x7196('0x1'));var BPromise=require(_0x7196('0x2'));var rs=require(_0x7196('0x3'));var fs=require('fs');var Redis=require(_0x7196('0x4'));var db=require(_0x7196('0x5'))['db'];var utils=require(_0x7196('0x6'));var logger=require(_0x7196('0x7'))(_0x7196('0x8'));var config=require(_0x7196('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x7196('0xa')][_0x7196('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x194746,_0x40e0af,_0x266a6e){return new BPromise(function(_0xad78a,_0x510c72){return client[_0x7196('0xc')](_0x194746,_0x266a6e)[_0x7196('0xd')](function(_0x3f846e){logger[_0x7196('0xe')](_0x7196('0xf'),_0x40e0af,'request\x20sent');logger['debug'](_0x7196('0x10'),_0x40e0af,_0x7196('0x11'),JSON[_0x7196('0x12')](_0x3f846e));if(_0x3f846e[_0x7196('0x13')]){if(_0x3f846e[_0x7196('0x13')][_0x7196('0x14')]===0x1f4){logger[_0x7196('0x13')](_0x7196('0xf'),_0x40e0af,_0x3f846e[_0x7196('0x13')][_0x7196('0x15')]);return _0x510c72(_0x3f846e[_0x7196('0x13')]['message']);}logger[_0x7196('0x13')](_0x7196('0xf'),_0x40e0af,_0x3f846e[_0x7196('0x13')][_0x7196('0x15')]);return _0xad78a(_0x3f846e['error'][_0x7196('0x15')]);}else{logger['info'](_0x7196('0xf'),_0x40e0af,_0x7196('0x11'));_0xad78a(_0x3f846e[_0x7196('0x16')][_0x7196('0x15')]);}})[_0x7196('0x17')](function(_0x2e3e0e){logger[_0x7196('0x13')](_0x7196('0xf'),_0x40e0af,_0x2e3e0e);_0x510c72(_0x2e3e0e);});});}
\ No newline at end of file
index 1b4187e..74a4a94 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x90b5=['exports','multer','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','get','index','put','isAuthenticated','update'];(function(_0x2b99ce,_0x57c0e5){var _0x3d66f9=function(_0x6a1e52){while(--_0x6a1e52){_0x2b99ce['push'](_0x2b99ce['shift']());}};_0x3d66f9(++_0x57c0e5);}(_0x90b5,0x139));var _0x590b=function(_0x59fa87,_0x179d64){_0x59fa87=_0x59fa87-0x0;var _0x277220=_0x90b5[_0x59fa87];return _0x277220;};'use strict';var multer=require(_0x590b('0x0'));var util=require('util');var path=require(_0x590b('0x1'));var timeout=require(_0x590b('0x2'));var express=require(_0x590b('0x3'));var router=express[_0x590b('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x590b('0x5'));var config=require(_0x590b('0x6'));var controller=require('./license.controller');router[_0x590b('0x7')]('/',controller[_0x590b('0x8')]);router[_0x590b('0x9')]('/:id',auth[_0x590b('0xa')](),controller[_0x590b('0xb')]);module[_0x590b('0xc')]=router;
\ No newline at end of file
+var _0x1c88=['put','/:id','isAuthenticated','update','exports','multer','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./license.controller','get','index'];(function(_0x101b58,_0x55f065){var _0x4511bb=function(_0x1579fb){while(--_0x1579fb){_0x101b58['push'](_0x101b58['shift']());}};_0x4511bb(++_0x55f065);}(_0x1c88,0x1a9));var _0x81c8=function(_0x481844,_0x259b1f){_0x481844=_0x481844-0x0;var _0x2afc17=_0x1c88[_0x481844];return _0x2afc17;};'use strict';var multer=require(_0x81c8('0x0'));var util=require('util');var path=require(_0x81c8('0x1'));var timeout=require(_0x81c8('0x2'));var express=require(_0x81c8('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x81c8('0x4'));var interaction=require(_0x81c8('0x5'));var config=require(_0x81c8('0x6'));var controller=require(_0x81c8('0x7'));router[_0x81c8('0x8')]('/',controller[_0x81c8('0x9')]);router[_0x81c8('0xa')](_0x81c8('0xb'),auth[_0x81c8('0xc')](),controller[_0x81c8('0xd')]);module[_0x81c8('0xe')]=router;
\ No newline at end of file
index 83ed1a0..aff29ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xead7=['sequelize','TEXT'];(function(_0x1a2d67,_0x27085c){var _0x5f20dc=function(_0x2196e1){while(--_0x2196e1){_0x1a2d67['push'](_0x1a2d67['shift']());}};_0x5f20dc(++_0x27085c);}(_0xead7,0xd4));var _0x7ead=function(_0x5b2f6e,_0x5c5014){_0x5b2f6e=_0x5b2f6e-0x0;var _0x42ef89=_0xead7[_0x5b2f6e];return _0x42ef89;};'use strict';var Sequelize=require(_0x7ead('0x0'));module['exports']={'license':{'type':Sequelize[_0x7ead('0x1')]},'data1':{'type':Sequelize['STRING']},'data2':{'type':Sequelize['STRING']},'chatLicenseExceeded':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0xd331=['exports','TEXT','STRING','INTEGER','sequelize'];(function(_0x5269e2,_0x57ad94){var _0x47cf18=function(_0x3d8bb0){while(--_0x3d8bb0){_0x5269e2['push'](_0x5269e2['shift']());}};_0x47cf18(++_0x57ad94);}(_0xd331,0x1a3));var _0x1d33=function(_0x2dc80f,_0x2539da){_0x2dc80f=_0x2dc80f-0x0;var _0x321b57=_0xd331[_0x2dc80f];return _0x321b57;};'use strict';var Sequelize=require(_0x1d33('0x0'));module[_0x1d33('0x1')]={'license':{'type':Sequelize[_0x1d33('0x2')]},'data1':{'type':Sequelize[_0x1d33('0x3')]},'data2':{'type':Sequelize['STRING']},'chatLicenseExceeded':{'type':Sequelize[_0x1d33('0x4')],'defaultValue':0x0}};
\ No newline at end of file
index ea10b87..d75ede0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fab=['checkLicense','key','demo','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','squel','crypto','jsforce','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','destroy','end','sendStatus','name','send','index','model','keys','License','rawAttributes','query','filters','intersection','attributes','fields','merge','then','catch','body','find','params'];(function(_0x5743cd,_0x24c274){var _0x5b88bb=function(_0x456e39){while(--_0x456e39){_0x5743cd['push'](_0x5743cd['shift']());}};_0x5b88bb(++_0x24c274);}(_0x5fab,0x177));var _0xb5fa=function(_0x32bf8b,_0x2ac32b){_0x32bf8b=_0x32bf8b-0x0;var _0x1e5ef5=_0x5fab[_0x32bf8b];return _0x1e5ef5;};'use strict';var emlformat=require(_0xb5fa('0x0'));var rimraf=require(_0xb5fa('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xb5fa('0x2'));var rp=require(_0xb5fa('0x3'));var moment=require(_0xb5fa('0x4'));var BPromise=require(_0xb5fa('0x5'));var Mustache=require(_0xb5fa('0x6'));var util=require(_0xb5fa('0x7'));var path=require(_0xb5fa('0x8'));var sox=require(_0xb5fa('0x9'));var csv=require(_0xb5fa('0xa'));var ejs=require(_0xb5fa('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xb5fa('0xc'));var crypto=require(_0xb5fa('0xd'));var jsforce=require(_0xb5fa('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xb5fa('0xa'));var querystring=require(_0xb5fa('0xf'));var Papa=require(_0xb5fa('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xb5fa('0x11'));var as=require(_0xb5fa('0x12'));var hardwareService=require(_0xb5fa('0x13'));var logger=require(_0xb5fa('0x14'))(_0xb5fa('0x15'));var utils=require(_0xb5fa('0x16'));var config=require(_0xb5fa('0x17'));var licenseUtil=require(_0xb5fa('0x18'));var db=require(_0xb5fa('0x19'))['db'];function respondWithStatusCode(_0x4d3576,_0x2ad830){_0x2ad830=_0x2ad830||0xcc;return function(_0x3dad4d){if(_0x3dad4d){return _0x4d3576['sendStatus'](_0x2ad830);}return _0x4d3576[_0xb5fa('0x1a')](_0x2ad830)['end']();};}function respondWithResult(_0x265992,_0x3fc372){_0x3fc372=_0x3fc372||0xc8;return function(_0x40c914){if(_0x40c914){return _0x265992[_0xb5fa('0x1a')](_0x3fc372)[_0xb5fa('0x1b')](_0x40c914);}};}function respondWithFilteredResult(_0x5371cf,_0x567f31){return function(_0x38e964){if(_0x38e964){var _0x587043=typeof _0x567f31[_0xb5fa('0x1c')]===_0xb5fa('0x1d')&&typeof _0x567f31['limit']==='undefined';var _0x451a55=_0x38e964[_0xb5fa('0x1e')];var _0x32e9e5=_0x587043?0x0:_0x567f31[_0xb5fa('0x1c')];var _0x324ba5=_0x587043?_0x38e964[_0xb5fa('0x1e')]:_0x567f31[_0xb5fa('0x1c')]+_0x567f31[_0xb5fa('0x1f')];var _0xc14dc4;if(_0x324ba5>=_0x451a55){_0x324ba5=_0x451a55;_0xc14dc4=0xc8;}else{_0xc14dc4=0xce;}_0x5371cf[_0xb5fa('0x1a')](_0xc14dc4);return _0x5371cf[_0xb5fa('0x20')](_0xb5fa('0x21'),_0x32e9e5+'-'+_0x324ba5+'/'+_0x451a55)['json'](_0x38e964);}return null;};}function patchUpdates(_0x432bfa){return function(_0x519e20){try{jsonpatch[_0xb5fa('0x22')](_0x519e20,_0x432bfa,!![]);}catch(_0x4a6c04){return BPromise[_0xb5fa('0x23')](_0x4a6c04);}return _0x519e20[_0xb5fa('0x24')]();};}function saveUpdates(_0x4e05c0,_0x40dfdf){return function(_0x3a2ab9){if(_0x3a2ab9){return _0x3a2ab9[_0xb5fa('0x25')](_0x4e05c0)['then'](function(_0x32a85c){return _0x32a85c;});}return null;};}function removeEntity(_0xec108f,_0x444237){return function(_0x542348){if(_0x542348){return _0x542348[_0xb5fa('0x26')]()['then'](function(){_0xec108f[_0xb5fa('0x1a')](0xcc)[_0xb5fa('0x27')]();});}};}function handleEntityNotFound(_0x11053a,_0x543edf){return function(_0x2dbd22){if(!_0x2dbd22){_0x11053a[_0xb5fa('0x28')](0x194);}return _0x2dbd22;};}function handleError(_0x6a455c,_0x20d649){_0x20d649=_0x20d649||0x1f4;return function(_0x568870){logger['error'](_0x568870['stack']);if(_0x568870['name']){delete _0x568870[_0xb5fa('0x29')];}_0x6a455c[_0xb5fa('0x1a')](_0x20d649)[_0xb5fa('0x2a')](_0x568870);};}var utilLicense=require(_0xb5fa('0x18'));exports[_0xb5fa('0x2b')]=function(_0x3506a4,_0x358549){var _0x353314={'raw':!![],'where':{'id':0x1}},_0x409af9={};_0x409af9[_0xb5fa('0x2c')]=_[_0xb5fa('0x2d')](db[_0xb5fa('0x2e')][_0xb5fa('0x2f')]);_0x409af9[_0xb5fa('0x30')]=_[_0xb5fa('0x2d')](_0x3506a4[_0xb5fa('0x30')]);_0x409af9[_0xb5fa('0x31')]=_[_0xb5fa('0x32')](_0x409af9[_0xb5fa('0x2c')],_0x409af9[_0xb5fa('0x30')]);_0x353314[_0xb5fa('0x33')]=_[_0xb5fa('0x32')](_0x409af9[_0xb5fa('0x2c')],qs[_0xb5fa('0x34')](_0x3506a4['query'][_0xb5fa('0x34')]));_0x353314['attributes']=_0x353314['attributes']['length']?_0x353314[_0xb5fa('0x33')]:_0x409af9['model'];_0x353314=_[_0xb5fa('0x35')]({},_0x353314,_0x3506a4['options']);return utilLicense['getLicense'](_0x353314)[_0xb5fa('0x36')](respondWithResult(_0x358549,null))[_0xb5fa('0x37')](handleError(_0x358549,null));};exports['update']=function(_0x59f41d,_0x3d73c2){if(_0x59f41d[_0xb5fa('0x38')]['id']){delete _0x59f41d[_0xb5fa('0x38')]['id'];}return db['License'][_0xb5fa('0x39')]({'where':{'id':_0x59f41d[_0xb5fa('0x3a')]['id']}})['then'](handleEntityNotFound(_0x3d73c2,null))[_0xb5fa('0x36')](function(_0x2056de){var _0x204d6b=_0x2056de['get']({'plain':!![]});return utilLicense[_0xb5fa('0x3b')](_0x204d6b,_0x59f41d[_0xb5fa('0x38')][_0xb5fa('0x3c')]);})['then'](function(_0x117694){if(!_0x117694[_0xb5fa('0x3d')]){return saveUpdates(_0x59f41d[_0xb5fa('0x38')],null);}return _0x117694;})[_0xb5fa('0x36')](respondWithResult(_0x3d73c2,null))['catch'](handleError(_0x3d73c2,null));};
\ No newline at end of file
+var _0x2ef3=['length','options','then','catch','body','params','get','checkLicense','demo','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','error','stack','name','send','index','model','keys','rawAttributes','query','filters','intersection','attributes','fields'];(function(_0x4b2377,_0x217b08){var _0x5cd794=function(_0x551ca0){while(--_0x551ca0){_0x4b2377['push'](_0x4b2377['shift']());}};_0x5cd794(++_0x217b08);}(_0x2ef3,0xba));var _0x32ef=function(_0x109494,_0x4d21c8){_0x109494=_0x109494-0x0;var _0x230aa2=_0x2ef3[_0x109494];return _0x230aa2;};'use strict';var emlformat=require(_0x32ef('0x0'));var rimraf=require(_0x32ef('0x1'));var zipdir=require(_0x32ef('0x2'));var jsonpatch=require(_0x32ef('0x3'));var rp=require(_0x32ef('0x4'));var moment=require(_0x32ef('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x32ef('0x6'));var util=require(_0x32ef('0x7'));var path=require('path');var sox=require(_0x32ef('0x8'));var csv=require(_0x32ef('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x32ef('0xa'));var squel=require(_0x32ef('0xb'));var crypto=require(_0x32ef('0xc'));var jsforce=require(_0x32ef('0xd'));var deskjs=require(_0x32ef('0xe'));var toCsv=require(_0x32ef('0x9'));var querystring=require(_0x32ef('0xf'));var Papa=require(_0x32ef('0x10'));var Redis=require(_0x32ef('0x11'));var authService=require(_0x32ef('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x32ef('0x13'));var logger=require(_0x32ef('0x14'))(_0x32ef('0x15'));var utils=require(_0x32ef('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x32ef('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1a5106,_0x49d590){_0x49d590=_0x49d590||0xcc;return function(_0x3e98df){if(_0x3e98df){return _0x1a5106[_0x32ef('0x18')](_0x49d590);}return _0x1a5106['status'](_0x49d590)['end']();};}function respondWithResult(_0x19ce1,_0x4d8009){_0x4d8009=_0x4d8009||0xc8;return function(_0x326fce){if(_0x326fce){return _0x19ce1[_0x32ef('0x19')](_0x4d8009)[_0x32ef('0x1a')](_0x326fce);}};}function respondWithFilteredResult(_0x54c7f5,_0x57aff1){return function(_0x55bf0b){if(_0x55bf0b){var _0x531e30=typeof _0x57aff1[_0x32ef('0x1b')]===_0x32ef('0x1c')&&typeof _0x57aff1[_0x32ef('0x1d')]==='undefined';var _0x5d559b=_0x55bf0b[_0x32ef('0x1e')];var _0x1a9476=_0x531e30?0x0:_0x57aff1[_0x32ef('0x1b')];var _0x57863c=_0x531e30?_0x55bf0b[_0x32ef('0x1e')]:_0x57aff1[_0x32ef('0x1b')]+_0x57aff1['limit'];var _0x304505;if(_0x57863c>=_0x5d559b){_0x57863c=_0x5d559b;_0x304505=0xc8;}else{_0x304505=0xce;}_0x54c7f5[_0x32ef('0x19')](_0x304505);return _0x54c7f5[_0x32ef('0x1f')](_0x32ef('0x20'),_0x1a9476+'-'+_0x57863c+'/'+_0x5d559b)[_0x32ef('0x1a')](_0x55bf0b);}return null;};}function patchUpdates(_0x3aec05){return function(_0x4de441){try{jsonpatch[_0x32ef('0x21')](_0x4de441,_0x3aec05,!![]);}catch(_0x5cc3ef){return BPromise[_0x32ef('0x22')](_0x5cc3ef);}return _0x4de441[_0x32ef('0x23')]();};}function saveUpdates(_0x49f2d8,_0x1af371){return function(_0x97780){if(_0x97780){return _0x97780[_0x32ef('0x24')](_0x49f2d8)['then'](function(_0x57f5e5){return _0x57f5e5;});}return null;};}function removeEntity(_0x22f2d7,_0xb30fab){return function(_0x225feb){if(_0x225feb){return _0x225feb['destroy']()['then'](function(){_0x22f2d7[_0x32ef('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x51a412,_0x278495){return function(_0x14d4b3){if(!_0x14d4b3){_0x51a412[_0x32ef('0x18')](0x194);}return _0x14d4b3;};}function handleError(_0x1dbe98,_0x15ce54){_0x15ce54=_0x15ce54||0x1f4;return function(_0x234175){logger[_0x32ef('0x25')](_0x234175[_0x32ef('0x26')]);if(_0x234175[_0x32ef('0x27')]){delete _0x234175[_0x32ef('0x27')];}_0x1dbe98[_0x32ef('0x19')](_0x15ce54)[_0x32ef('0x28')](_0x234175);};}var utilLicense=require('../../config/license/util');exports[_0x32ef('0x29')]=function(_0x2f5d06,_0x5a04cd){var _0x12de1a={'raw':!![],'where':{'id':0x1}},_0x3c569d={};_0x3c569d[_0x32ef('0x2a')]=_[_0x32ef('0x2b')](db['License'][_0x32ef('0x2c')]);_0x3c569d[_0x32ef('0x2d')]=_[_0x32ef('0x2b')](_0x2f5d06[_0x32ef('0x2d')]);_0x3c569d[_0x32ef('0x2e')]=_[_0x32ef('0x2f')](_0x3c569d[_0x32ef('0x2a')],_0x3c569d['query']);_0x12de1a[_0x32ef('0x30')]=_['intersection'](_0x3c569d[_0x32ef('0x2a')],qs[_0x32ef('0x31')](_0x2f5d06['query'][_0x32ef('0x31')]));_0x12de1a[_0x32ef('0x30')]=_0x12de1a[_0x32ef('0x30')][_0x32ef('0x32')]?_0x12de1a[_0x32ef('0x30')]:_0x3c569d['model'];_0x12de1a=_['merge']({},_0x12de1a,_0x2f5d06[_0x32ef('0x33')]);return utilLicense['getLicense'](_0x12de1a)[_0x32ef('0x34')](respondWithResult(_0x5a04cd,null))[_0x32ef('0x35')](handleError(_0x5a04cd,null));};exports[_0x32ef('0x24')]=function(_0x390670,_0x389583){if(_0x390670[_0x32ef('0x36')]['id']){delete _0x390670['body']['id'];}return db['License']['find']({'where':{'id':_0x390670[_0x32ef('0x37')]['id']}})[_0x32ef('0x34')](handleEntityNotFound(_0x389583,null))[_0x32ef('0x34')](function(_0x5f2443){var _0x4fb402=_0x5f2443[_0x32ef('0x38')]({'plain':!![]});return utilLicense[_0x32ef('0x39')](_0x4fb402,_0x390670[_0x32ef('0x36')]['key']);})['then'](function(_0xcbdec8){if(!_0xcbdec8[_0x32ef('0x3a')]){return saveUpdates(_0x390670[_0x32ef('0x36')],null);}return _0xcbdec8;})[_0x32ef('0x34')](respondWithResult(_0x389583,null))[_0x32ef('0x35')](handleError(_0x389583,null));};
\ No newline at end of file
index c1b9c76..3bbbd5c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa95b=['moment','bluebird','path','rimraf','../../config/environment','./license.attributes','exports','License','license','util','../../config/logger','api'];(function(_0x2b96bf,_0x422809){var _0x42edba=function(_0x1f9a92){while(--_0x1f9a92){_0x2b96bf['push'](_0x2b96bf['shift']());}};_0x42edba(++_0x422809);}(_0xa95b,0x1e9));var _0xba95=function(_0x2dd58b,_0x534510){_0x2dd58b=_0x2dd58b-0x0;var _0x374093=_0xa95b[_0x2dd58b];return _0x374093;};'use strict';var _=require('lodash');var util=require(_0xba95('0x0'));var logger=require(_0xba95('0x1'))(_0xba95('0x2'));var moment=require(_0xba95('0x3'));var BPromise=require(_0xba95('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xba95('0x5'));var rimraf=require(_0xba95('0x6'));var config=require(_0xba95('0x7'));var attributes=require(_0xba95('0x8'));module[_0xba95('0x9')]=function(_0x2b5603,_0x1f2e27){return _0x2b5603['define'](_0xba95('0xa'),attributes,{'tableName':_0xba95('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x572c=['exports','define','License','license','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0x572c,0xc7));var _0xc572=function(_0x438a99,_0x218094){_0x438a99=_0x438a99-0x0;var _0x5ee5ea=_0x572c[_0x438a99];return _0x5ee5ea;};'use strict';var _=require('lodash');var util=require(_0xc572('0x0'));var logger=require(_0xc572('0x1'))(_0xc572('0x2'));var moment=require(_0xc572('0x3'));var BPromise=require(_0xc572('0x4'));var rp=require(_0xc572('0x5'));var fs=require('fs');var path=require(_0xc572('0x6'));var rimraf=require(_0xc572('0x7'));var config=require(_0xc572('0x8'));var attributes=require('./license.attributes');module[_0xc572('0x9')]=function(_0x1b69da,_0x345ca0){return _0x1b69da[_0xc572('0xa')](_0xc572('0xb'),attributes,{'tableName':_0xc572('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7b56bd8..6afd026 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x11f6=['request\x20sent','stringify','error','message','License,\x20%s,\x20%s','info','result','catch','lodash','bluebird','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then'];(function(_0x5ebc04,_0x14a363){var _0x17845c=function(_0x360850){while(--_0x360850){_0x5ebc04['push'](_0x5ebc04['shift']());}};_0x17845c(++_0x14a363);}(_0x11f6,0xa0));var _0x611f=function(_0x186787,_0x4a5de2){_0x186787=_0x186787-0x0;var _0x3f5a8f=_0x11f6[_0x186787];return _0x3f5a8f;};'use strict';var _=require(_0x611f('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x611f('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x611f('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x611f('0x3'));var logger=require(_0x611f('0x4'))('rpc');var config=require(_0x611f('0x5'));var jayson=require(_0x611f('0x6'));var client=jayson[_0x611f('0x7')][_0x611f('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x167664,_0x28a915,_0x380316){return new BPromise(function(_0x274eb8,_0x3e856c){return client[_0x611f('0x9')](_0x167664,_0x380316)[_0x611f('0xa')](function(_0x1e6dcb){logger['info']('License,\x20%s,\x20%s',_0x28a915,_0x611f('0xb'));logger['debug']('License,\x20%s,\x20%s,\x20%s',_0x28a915,_0x611f('0xb'),JSON[_0x611f('0xc')](_0x1e6dcb));if(_0x1e6dcb[_0x611f('0xd')]){if(_0x1e6dcb[_0x611f('0xd')]['code']===0x1f4){logger['error']('License,\x20%s,\x20%s',_0x28a915,_0x1e6dcb[_0x611f('0xd')][_0x611f('0xe')]);return _0x3e856c(_0x1e6dcb[_0x611f('0xd')][_0x611f('0xe')]);}logger[_0x611f('0xd')](_0x611f('0xf'),_0x28a915,_0x1e6dcb[_0x611f('0xd')][_0x611f('0xe')]);return _0x274eb8(_0x1e6dcb['error'][_0x611f('0xe')]);}else{logger[_0x611f('0x10')]('License,\x20%s,\x20%s',_0x28a915,_0x611f('0xb'));_0x274eb8(_0x1e6dcb[_0x611f('0x11')]['message']);}})[_0x611f('0x12')](function(_0x25c1c1){logger[_0x611f('0xd')]('License,\x20%s,\x20%s',_0x28a915,_0x25c1c1);_0x3e856c(_0x25c1c1);});});}
\ No newline at end of file
+var _0x1c7b=['debug','License,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','util','moment','bluebird','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','request','then','info','License,\x20%s,\x20%s'];(function(_0x316ba3,_0x55293c){var _0x2e3598=function(_0xc42e10){while(--_0xc42e10){_0x316ba3['push'](_0x316ba3['shift']());}};_0x2e3598(++_0x55293c);}(_0x1c7b,0x71));var _0xb1c7=function(_0x2f1674,_0x270bf2){_0x2f1674=_0x2f1674-0x0;var _0x252a75=_0x1c7b[_0x2f1674];return _0x252a75;};'use strict';var _=require('lodash');var util=require(_0xb1c7('0x0'));var moment=require(_0xb1c7('0x1'));var BPromise=require(_0xb1c7('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb1c7('0x3'))['db'];var utils=require(_0xb1c7('0x4'));var logger=require('../../config/logger')(_0xb1c7('0x5'));var config=require('../../config/environment');var jayson=require(_0xb1c7('0x6'));var client=jayson[_0xb1c7('0x7')][_0xb1c7('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x2ac7ac,_0x1a1f3e,_0x527e6a){return new BPromise(function(_0x2a9e9c,_0x5e1760){return client[_0xb1c7('0x9')](_0x2ac7ac,_0x527e6a)[_0xb1c7('0xa')](function(_0x8a3e7c){logger[_0xb1c7('0xb')](_0xb1c7('0xc'),_0x1a1f3e,'request\x20sent');logger[_0xb1c7('0xd')](_0xb1c7('0xe'),_0x1a1f3e,_0xb1c7('0xf'),JSON[_0xb1c7('0x10')](_0x8a3e7c));if(_0x8a3e7c[_0xb1c7('0x11')]){if(_0x8a3e7c[_0xb1c7('0x11')]['code']===0x1f4){logger[_0xb1c7('0x11')](_0xb1c7('0xc'),_0x1a1f3e,_0x8a3e7c[_0xb1c7('0x11')]['message']);return _0x5e1760(_0x8a3e7c[_0xb1c7('0x11')][_0xb1c7('0x12')]);}logger[_0xb1c7('0x11')](_0xb1c7('0xc'),_0x1a1f3e,_0x8a3e7c[_0xb1c7('0x11')]['message']);return _0x2a9e9c(_0x8a3e7c[_0xb1c7('0x11')][_0xb1c7('0x12')]);}else{logger[_0xb1c7('0xb')](_0xb1c7('0xc'),_0x1a1f3e,_0xb1c7('0xf'));_0x2a9e9c(_0x8a3e7c[_0xb1c7('0x13')][_0xb1c7('0x12')]);}})[_0xb1c7('0x14')](function(_0x3b1900){logger[_0xb1c7('0x11')](_0xb1c7('0xc'),_0x1a1f3e,_0x3b1900);_0x5e1760(_0x3b1900);});});}
\ No newline at end of file
index 5314e4f..b68eeb8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa4d1=['create','/:id/in_servers','addInteraction','addApplications','/:id/send','send','put','update','delete','removeAnswers','removeImap','/:id/out_servers','removeSmtp','destroy','removeAgents','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailAccount.controller','get','isAuthenticated','index','describe','/:id','show','/:id/dispositions','/:id/canned_answers','getImap','getSmtp','/:id/interactions','getInteractions','/:id/applications','getApplications','/:id/messages','getMessages','/:id/verify','verifySmtp','/:id/users','getAgents','post','addDisposition','addAnswer'];(function(_0x4141ec,_0x45b3b5){var _0x47e1b0=function(_0x1914bd){while(--_0x1914bd){_0x4141ec['push'](_0x4141ec['shift']());}};_0x47e1b0(++_0x45b3b5);}(_0xa4d1,0xd0));var _0x1a4d=function(_0x2d2e23,_0x7a456){_0x2d2e23=_0x2d2e23-0x0;var _0x656ccb=_0xa4d1[_0x2d2e23];return _0x656ccb;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x1a4d('0x0'));var timeout=require(_0x1a4d('0x1'));var express=require(_0x1a4d('0x2'));var router=express[_0x1a4d('0x3')]();var fs_extra=require(_0x1a4d('0x4'));var auth=require(_0x1a4d('0x5'));var interaction=require(_0x1a4d('0x6'));var config=require(_0x1a4d('0x7'));var controller=require(_0x1a4d('0x8'));router[_0x1a4d('0x9')]('/',auth[_0x1a4d('0xa')](),controller[_0x1a4d('0xb')]);router['get']('/describe',auth[_0x1a4d('0xa')](),controller[_0x1a4d('0xc')]);router['get'](_0x1a4d('0xd'),auth['isAuthenticated'](),controller[_0x1a4d('0xe')]);router[_0x1a4d('0x9')](_0x1a4d('0xf'),auth[_0x1a4d('0xa')](),controller['getDispositions']);router[_0x1a4d('0x9')](_0x1a4d('0x10'),auth[_0x1a4d('0xa')](),controller['getAnswers']);router[_0x1a4d('0x9')]('/:id/in_servers',auth[_0x1a4d('0xa')](),controller[_0x1a4d('0x11')]);router[_0x1a4d('0x9')]('/:id/out_servers',auth['isAuthenticated'](),controller[_0x1a4d('0x12')]);router[_0x1a4d('0x9')](_0x1a4d('0x13'),auth[_0x1a4d('0xa')](),controller[_0x1a4d('0x14')]);router[_0x1a4d('0x9')](_0x1a4d('0x15'),auth[_0x1a4d('0xa')](),controller[_0x1a4d('0x16')]);router[_0x1a4d('0x9')](_0x1a4d('0x17'),auth[_0x1a4d('0xa')](),controller[_0x1a4d('0x18')]);router[_0x1a4d('0x9')](_0x1a4d('0x19'),auth[_0x1a4d('0xa')](),controller[_0x1a4d('0x1a')]);router[_0x1a4d('0x9')](_0x1a4d('0x1b'),auth[_0x1a4d('0xa')](),controller[_0x1a4d('0x1c')]);router[_0x1a4d('0x1d')](_0x1a4d('0xf'),auth[_0x1a4d('0xa')](),controller[_0x1a4d('0x1e')]);router[_0x1a4d('0x1d')](_0x1a4d('0x10'),auth[_0x1a4d('0xa')](),controller[_0x1a4d('0x1f')]);router[_0x1a4d('0x1d')]('/',auth['isAuthenticated'](),controller[_0x1a4d('0x20')]);router[_0x1a4d('0x1d')](_0x1a4d('0x21'),auth[_0x1a4d('0xa')](),controller['addImap']);router[_0x1a4d('0x1d')]('/:id/out_servers',auth[_0x1a4d('0xa')](),controller['addSmtp']);router[_0x1a4d('0x1d')](_0x1a4d('0x13'),auth[_0x1a4d('0xa')](),controller[_0x1a4d('0x22')]);router[_0x1a4d('0x1d')](_0x1a4d('0x15'),auth[_0x1a4d('0xa')](),controller[_0x1a4d('0x23')]);router[_0x1a4d('0x1d')](_0x1a4d('0x24'),auth[_0x1a4d('0xa')](),controller[_0x1a4d('0x25')]);router[_0x1a4d('0x1d')]('/:id/users',auth[_0x1a4d('0xa')](),controller['addAgents']);router[_0x1a4d('0x26')](_0x1a4d('0xd'),auth[_0x1a4d('0xa')](),controller[_0x1a4d('0x27')]);router[_0x1a4d('0x28')](_0x1a4d('0xf'),auth[_0x1a4d('0xa')](),controller['removeDispositions']);router[_0x1a4d('0x28')](_0x1a4d('0x10'),auth[_0x1a4d('0xa')](),controller[_0x1a4d('0x29')]);router['delete']('/:id/in_servers',auth['isAuthenticated'](),controller[_0x1a4d('0x2a')]);router['delete'](_0x1a4d('0x2b'),auth[_0x1a4d('0xa')](),controller[_0x1a4d('0x2c')]);router[_0x1a4d('0x28')](_0x1a4d('0xd'),auth[_0x1a4d('0xa')](),controller[_0x1a4d('0x2d')]);router[_0x1a4d('0x28')](_0x1a4d('0x1b'),auth[_0x1a4d('0xa')](),controller[_0x1a4d('0x2e')]);module[_0x1a4d('0x2f')]=router;
\ No newline at end of file
+var _0xf3e3=['isAuthenticated','index','/describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','getImap','getSmtp','/:id/interactions','/:id/applications','getApplications','/:id/messages','getMessages','/:id/verify','verifySmtp','/:id/users','getAgents','post','addDisposition','create','addImap','/:id/out_servers','addInteraction','/:id/send','send','addAgents','put','update','delete','removeDispositions','removeAnswers','/:id/in_servers','removeImap','removeSmtp','destroy','removeAgents','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailAccount.controller','get'];(function(_0x297fd3,_0x115406){var _0x2af381=function(_0x1dd31b){while(--_0x1dd31b){_0x297fd3['push'](_0x297fd3['shift']());}};_0x2af381(++_0x115406);}(_0xf3e3,0x126));var _0x3f3e=function(_0x187f37,_0x40366c){_0x187f37=_0x187f37-0x0;var _0x5a8651=_0xf3e3[_0x187f37];return _0x5a8651;};'use strict';var multer=require(_0x3f3e('0x0'));var util=require(_0x3f3e('0x1'));var path=require(_0x3f3e('0x2'));var timeout=require(_0x3f3e('0x3'));var express=require(_0x3f3e('0x4'));var router=express[_0x3f3e('0x5')]();var fs_extra=require(_0x3f3e('0x6'));var auth=require(_0x3f3e('0x7'));var interaction=require(_0x3f3e('0x8'));var config=require(_0x3f3e('0x9'));var controller=require(_0x3f3e('0xa'));router[_0x3f3e('0xb')]('/',auth[_0x3f3e('0xc')](),controller[_0x3f3e('0xd')]);router[_0x3f3e('0xb')](_0x3f3e('0xe'),auth['isAuthenticated'](),controller['describe']);router[_0x3f3e('0xb')](_0x3f3e('0xf'),auth[_0x3f3e('0xc')](),controller[_0x3f3e('0x10')]);router[_0x3f3e('0xb')](_0x3f3e('0x11'),auth[_0x3f3e('0xc')](),controller[_0x3f3e('0x12')]);router[_0x3f3e('0xb')](_0x3f3e('0x13'),auth[_0x3f3e('0xc')](),controller[_0x3f3e('0x14')]);router[_0x3f3e('0xb')]('/:id/in_servers',auth[_0x3f3e('0xc')](),controller[_0x3f3e('0x15')]);router[_0x3f3e('0xb')]('/:id/out_servers',auth[_0x3f3e('0xc')](),controller[_0x3f3e('0x16')]);router[_0x3f3e('0xb')](_0x3f3e('0x17'),auth['isAuthenticated'](),controller['getInteractions']);router[_0x3f3e('0xb')](_0x3f3e('0x18'),auth[_0x3f3e('0xc')](),controller[_0x3f3e('0x19')]);router['get'](_0x3f3e('0x1a'),auth[_0x3f3e('0xc')](),controller[_0x3f3e('0x1b')]);router[_0x3f3e('0xb')](_0x3f3e('0x1c'),auth[_0x3f3e('0xc')](),controller[_0x3f3e('0x1d')]);router[_0x3f3e('0xb')](_0x3f3e('0x1e'),auth[_0x3f3e('0xc')](),controller[_0x3f3e('0x1f')]);router[_0x3f3e('0x20')](_0x3f3e('0x11'),auth[_0x3f3e('0xc')](),controller[_0x3f3e('0x21')]);router[_0x3f3e('0x20')](_0x3f3e('0x13'),auth[_0x3f3e('0xc')](),controller['addAnswer']);router[_0x3f3e('0x20')]('/',auth[_0x3f3e('0xc')](),controller[_0x3f3e('0x22')]);router[_0x3f3e('0x20')]('/:id/in_servers',auth['isAuthenticated'](),controller[_0x3f3e('0x23')]);router[_0x3f3e('0x20')](_0x3f3e('0x24'),auth[_0x3f3e('0xc')](),controller['addSmtp']);router[_0x3f3e('0x20')]('/:id/interactions',auth[_0x3f3e('0xc')](),controller[_0x3f3e('0x25')]);router[_0x3f3e('0x20')](_0x3f3e('0x18'),auth[_0x3f3e('0xc')](),controller['addApplications']);router[_0x3f3e('0x20')](_0x3f3e('0x26'),auth['isAuthenticated'](),controller[_0x3f3e('0x27')]);router['post']('/:id/users',auth[_0x3f3e('0xc')](),controller[_0x3f3e('0x28')]);router[_0x3f3e('0x29')](_0x3f3e('0xf'),auth['isAuthenticated'](),controller[_0x3f3e('0x2a')]);router[_0x3f3e('0x2b')](_0x3f3e('0x11'),auth[_0x3f3e('0xc')](),controller[_0x3f3e('0x2c')]);router[_0x3f3e('0x2b')](_0x3f3e('0x13'),auth[_0x3f3e('0xc')](),controller[_0x3f3e('0x2d')]);router[_0x3f3e('0x2b')](_0x3f3e('0x2e'),auth[_0x3f3e('0xc')](),controller[_0x3f3e('0x2f')]);router[_0x3f3e('0x2b')](_0x3f3e('0x24'),auth[_0x3f3e('0xc')](),controller[_0x3f3e('0x30')]);router[_0x3f3e('0x2b')]('/:id',auth[_0x3f3e('0xc')](),controller[_0x3f3e('0x31')]);router[_0x3f3e('0x2b')]('/:id/users',auth['isAuthenticated'](),controller[_0x3f3e('0x32')]);module['exports']=router;
\ No newline at end of file
index d9eb35a..c62befc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a08=['sequelize','exports','BOOLEAN','STRING','TEXT','Arial,Helvetica,sans-serif','INTEGER','UNSIGNED','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','setDataValue','mandatoryDisposition'];(function(_0x5712f8,_0x17156b){var _0x14a364=function(_0x1da9de){while(--_0x1da9de){_0x5712f8['push'](_0x5712f8['shift']());}};_0x14a364(++_0x17156b);}(_0x7a08,0x11e));var _0x87a0=function(_0x26299e,_0x394ad1){_0x26299e=_0x26299e-0x0;var _0x6c4f4a=_0x7a08[_0x26299e];return _0x6c4f4a;};'use strict';var Sequelize=require(_0x87a0('0x0'));module[_0x87a0('0x1')]={'description':{'type':Sequelize['STRING']},'name':{'type':Sequelize['STRING'],'allowNull':![]},'service':{'type':Sequelize[_0x87a0('0x2')],'defaultValue':![]},'email':{'type':Sequelize[_0x87a0('0x3')],'validate':{'isEmail':!![]}},'active':{'type':Sequelize[_0x87a0('0x2')],'defaultValue':!![]},'key':{'type':Sequelize[_0x87a0('0x3')],'allowNull':![]},'template':{'type':Sequelize[_0x87a0('0x4')]},'markAsUnread':{'type':Sequelize[_0x87a0('0x2')],'defaultValue':![]},'fontFamily':{'type':Sequelize[_0x87a0('0x3')],'allowNull':![],'defaultValue':_0x87a0('0x5')},'fontSize':{'type':Sequelize[_0x87a0('0x6')](0x2)[_0x87a0('0x7')],'defaultValue':0xd,'validate':{'min':0x8,'max':0x48}},'notificationTemplate':{'type':Sequelize[_0x87a0('0x4')],'defaultValue':function(){return'Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}<br/>Subject\x20:\x20{{message.subject}}';}},'notificationSound':{'type':Sequelize[_0x87a0('0x2')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x87a0('0x2')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x87a0('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x87a0('0x2')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x87a0('0x6')],'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[_0x87a0('0x6')],'allowNull':!![],'defaultValue':null,'comment':_0x87a0('0x8')},'mandatoryDisposition':{'type':Sequelize[_0x87a0('0x2')],'defaultValue':![],'comment':_0x87a0('0x9'),'set':function(_0x34ba3a){if(!_0x34ba3a)this['setDataValue'](_0x87a0('0xa'),null);this[_0x87a0('0xb')](_0x87a0('0xc'),_0x34ba3a);}}};
\ No newline at end of file
+var _0x2caf=['TEXT','Arial,Helvetica,sans-serif','UNSIGNED','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}<br/>Subject\x20:\x20{{message.subject}}','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','STRING','BOOLEAN'];(function(_0xae2add,_0x1c1106){var _0x1a512a=function(_0x1e739e){while(--_0x1e739e){_0xae2add['push'](_0xae2add['shift']());}};_0x1a512a(++_0x1c1106);}(_0x2caf,0x6a));var _0xf2ca=function(_0x37c243,_0x310e97){_0x37c243=_0x37c243-0x0;var _0x3f8cda=_0x2caf[_0x37c243];return _0x3f8cda;};'use strict';var Sequelize=require('sequelize');module['exports']={'description':{'type':Sequelize['STRING']},'name':{'type':Sequelize[_0xf2ca('0x0')],'allowNull':![]},'service':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'email':{'type':Sequelize[_0xf2ca('0x0')],'validate':{'isEmail':!![]}},'active':{'type':Sequelize[_0xf2ca('0x1')],'defaultValue':!![]},'key':{'type':Sequelize[_0xf2ca('0x0')],'allowNull':![]},'template':{'type':Sequelize[_0xf2ca('0x2')]},'markAsUnread':{'type':Sequelize[_0xf2ca('0x1')],'defaultValue':![]},'fontFamily':{'type':Sequelize[_0xf2ca('0x0')],'allowNull':![],'defaultValue':_0xf2ca('0x3')},'fontSize':{'type':Sequelize['INTEGER'](0x2)[_0xf2ca('0x4')],'defaultValue':0xd,'validate':{'min':0x8,'max':0x48}},'notificationTemplate':{'type':Sequelize[_0xf2ca('0x2')],'defaultValue':function(){return _0xf2ca('0x5');}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xf2ca('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0xf2ca('0x1')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xf2ca('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xf2ca('0x1')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xf2ca('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'allowNull':!![],'defaultValue':null,'comment':_0xf2ca('0x7')},'mandatoryDisposition':{'type':Sequelize[_0xf2ca('0x1')],'defaultValue':![],'comment':_0xf2ca('0x8'),'set':function(_0x4063e9){if(!_0x4063e9)this[_0xf2ca('0x9')](_0xf2ca('0xa'),null);this['setDataValue'](_0xf2ca('0xb'),_0x4063e9);}}};
\ No newline at end of file
index b77f432..1006b8c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3dd5=['status','offset','undefined','count','set','Content-Range','json','reject','save','destroy','get','MailAccounts','end','stack','name','send','index','MailServerIn','Imap','Smtp','Pause','mandatoryDispositionPause','MailAccount','rawAttributes','fieldName','type','key','map','query','filters','model','intersection','fields','attributes','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','params','MailServerOut','keys','find','update','body','catch','describe','addDisposition','MailAccountId','create','findOne','Disposition','removeDispositions','ids','CannedAnswer','getAnswers','removeAnswers','email','ListId','isNil','active','cservice','cauthentication','user','cuser','password','pass','cpassword','authentication','host','port','service','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','getImap','addImap','removeImap','getSmtp','removeSmtp','setSmtp','addInteraction','MailInteraction','omit','getInteractions','CmContact','Contact','User','Owner','internal','Tag','Tags','color','tag','addApplications','sequelize','transaction','MailApplication','getApplications','getMessages','MailMessage','$gte','split','format','inlineCss','true','CmList','List','Contacts','updatedAt','DESC','from','%s\x20<%s>','attachments','basename','auth','secure','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','userMailAccount:save','removeAgents','userMailAccount:remove','emit','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','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','redis','./mailAccount.socket','register','jayson/promise','client','http','request','then','info','MailAccount,\x20%s,\x20%s','debug','MailAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','sendStatus'];(function(_0x501650,_0x15b930){var _0x370add=function(_0x2612ee){while(--_0x2612ee){_0x501650['push'](_0x501650['shift']());}};_0x370add(++_0x15b930);}(_0x3dd5,0x99));var _0x53dd=function(_0x18ffa2,_0x1899c5){_0x18ffa2=_0x18ffa2-0x0;var _0x578d7d=_0x3dd5[_0x18ffa2];return _0x578d7d;};'use strict';var emlformat=require(_0x53dd('0x0'));var rimraf=require(_0x53dd('0x1'));var zipdir=require(_0x53dd('0x2'));var jsonpatch=require(_0x53dd('0x3'));var rp=require('request-promise');var moment=require(_0x53dd('0x4'));var BPromise=require(_0x53dd('0x5'));var Mustache=require(_0x53dd('0x6'));var util=require('util');var path=require('path');var sox=require(_0x53dd('0x7'));var csv=require(_0x53dd('0x8'));var ejs=require(_0x53dd('0x9'));var fs=require('fs');var fs_extra=require(_0x53dd('0xa'));var _=require(_0x53dd('0xb'));var squel=require('squel');var crypto=require(_0x53dd('0xc'));var jsforce=require(_0x53dd('0xd'));var deskjs=require(_0x53dd('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var htmlToText=require(_0x53dd('0xf'));var juice=require(_0x53dd('0x10'));var Redis=require(_0x53dd('0x11'));var authService=require(_0x53dd('0x12'));var qs=require(_0x53dd('0x13'));var as=require(_0x53dd('0x14'));var hardwareService=require(_0x53dd('0x15'));var logger=require(_0x53dd('0x16'))(_0x53dd('0x17'));var utils=require(_0x53dd('0x18'));var config=require(_0x53dd('0x19'));var licenseUtil=require(_0x53dd('0x1a'));var db=require(_0x53dd('0x1b'))['db'];config['redis']=_[_0x53dd('0x1c')](config['redis'],{'host':_0x53dd('0x1d'),'port':0x18eb});var socket=require(_0x53dd('0x1e'))(new Redis(config[_0x53dd('0x1f')]));require(_0x53dd('0x20'))[_0x53dd('0x21')](socket);var jayson=require(_0x53dd('0x22'));var client=jayson[_0x53dd('0x23')][_0x53dd('0x24')]({'port':0x232b});function respondWithRpcPromise(_0x37bda5,_0x4a7d3b,_0x149fab,_0x545f6){return new BPromise(function(_0x2bd922,_0x105dc3){var _0x33f1f=_0x545f6||client;return _0x33f1f[_0x53dd('0x25')](_0x37bda5,_0x149fab)[_0x53dd('0x26')](function(_0x535a52){logger[_0x53dd('0x27')](_0x53dd('0x28'),_0x4a7d3b,'request\x20sent');logger[_0x53dd('0x29')](_0x53dd('0x2a'),_0x4a7d3b,_0x53dd('0x2b'),JSON[_0x53dd('0x2c')](_0x535a52));if(_0x535a52[_0x53dd('0x2d')]){if(_0x535a52[_0x53dd('0x2d')][_0x53dd('0x2e')]===0x1f4){logger[_0x53dd('0x2d')](_0x53dd('0x28'),_0x4a7d3b,_0x535a52['error'][_0x53dd('0x2f')]);return _0x105dc3(_0x535a52[_0x53dd('0x2d')][_0x53dd('0x2f')]);}logger[_0x53dd('0x2d')]('MailAccount,\x20%s,\x20%s',_0x4a7d3b,_0x535a52[_0x53dd('0x2d')][_0x53dd('0x2f')]);return _0x2bd922(_0x535a52[_0x53dd('0x2d')][_0x53dd('0x2f')]);}else{logger['info'](_0x53dd('0x28'),_0x4a7d3b,_0x53dd('0x2b'));_0x2bd922(_0x535a52['result'][_0x53dd('0x2f')]);}})['catch'](function(_0xf8afb2){logger[_0x53dd('0x2d')](_0x53dd('0x28'),_0x4a7d3b,_0xf8afb2);_0x105dc3(_0xf8afb2);});});}function respondWithStatusCode(_0x221d79,_0x400922){_0x400922=_0x400922||0xcc;return function(_0x1a481){if(_0x1a481){return _0x221d79[_0x53dd('0x30')](_0x400922);}return _0x221d79[_0x53dd('0x31')](_0x400922)['end']();};}function respondWithResult(_0x138738,_0x31748e){_0x31748e=_0x31748e||0xc8;return function(_0x1882fb){if(_0x1882fb){return _0x138738[_0x53dd('0x31')](_0x31748e)['json'](_0x1882fb);}};}function respondWithFilteredResult(_0x3891d3,_0x3f931f){return function(_0x25c6c5){if(_0x25c6c5){var _0x523094=typeof _0x3f931f[_0x53dd('0x32')]===_0x53dd('0x33')&&typeof _0x3f931f['limit']===_0x53dd('0x33');var _0x56c6d9=_0x25c6c5[_0x53dd('0x34')];var _0xd77cdb=_0x523094?0x0:_0x3f931f[_0x53dd('0x32')];var _0x2084dd=_0x523094?_0x25c6c5[_0x53dd('0x34')]:_0x3f931f[_0x53dd('0x32')]+_0x3f931f['limit'];var _0x1f3df0;if(_0x2084dd>=_0x56c6d9){_0x2084dd=_0x56c6d9;_0x1f3df0=0xc8;}else{_0x1f3df0=0xce;}_0x3891d3[_0x53dd('0x31')](_0x1f3df0);return _0x3891d3[_0x53dd('0x35')](_0x53dd('0x36'),_0xd77cdb+'-'+_0x2084dd+'/'+_0x56c6d9)[_0x53dd('0x37')](_0x25c6c5);}return null;};}function patchUpdates(_0x12d308){return function(_0xa4a064){try{jsonpatch['apply'](_0xa4a064,_0x12d308,!![]);}catch(_0x594eb2){return BPromise[_0x53dd('0x38')](_0x594eb2);}return _0xa4a064[_0x53dd('0x39')]();};}function saveUpdates(_0x14b4a0,_0x195a64){return function(_0x52f374){if(_0x52f374){return _0x52f374['update'](_0x14b4a0)['then'](function(_0x420ecf){return _0x420ecf;});}return null;};}function removeEntity(_0x14208a,_0x5c69d8){return function(_0x5972eb){if(_0x5972eb){return _0x5972eb[_0x53dd('0x3a')]()[_0x53dd('0x26')](function(){var _0x1c99bc=_0x5972eb[_0x53dd('0x3b')]({'plain':!![]});var _0x3e84e6=_0x53dd('0x3c');return db['UserProfileResource'][_0x53dd('0x3a')]({'where':{'type':_0x3e84e6,'resourceId':_0x1c99bc['id']}})[_0x53dd('0x26')](function(){return _0x5972eb;});})['then'](function(){_0x14208a['status'](0xcc)[_0x53dd('0x3d')]();});}};}function handleEntityNotFound(_0x1f5829,_0x30e550){return function(_0x36a601){if(!_0x36a601){_0x1f5829[_0x53dd('0x30')](0x194);}return _0x36a601;};}function handleError(_0x431a44,_0x46a06c){_0x46a06c=_0x46a06c||0x1f4;return function(_0xf8d24d){logger['error'](_0xf8d24d[_0x53dd('0x3e')]);if(_0xf8d24d[_0x53dd('0x3f')]){delete _0xf8d24d[_0x53dd('0x3f')];}_0x431a44[_0x53dd('0x31')](_0x46a06c)[_0x53dd('0x40')](_0xf8d24d);};}exports[_0x53dd('0x41')]=function(_0x2abe0d,_0x56ec18){var _0xfeee8e={'include':[{'model':db[_0x53dd('0x42')],'as':_0x53dd('0x43')},{'model':db['MailServerOut'],'as':_0x53dd('0x44')},{'model':db[_0x53dd('0x45')],'as':_0x53dd('0x46')}]},_0x1e625b={},_0x443d38={'count':0x0,'rows':[]};var _0x351a91=_['map'](db[_0x53dd('0x47')][_0x53dd('0x48')],function(_0x2dab5b){return{'name':_0x2dab5b[_0x53dd('0x49')],'type':_0x2dab5b[_0x53dd('0x4a')][_0x53dd('0x4b')]};});_0x1e625b['model']=_[_0x53dd('0x4c')](_0x351a91,'name');_0x1e625b[_0x53dd('0x4d')]=_['keys'](_0x2abe0d[_0x53dd('0x4d')]);_0x1e625b[_0x53dd('0x4e')]=_['intersection'](_0x1e625b[_0x53dd('0x4f')],_0x1e625b[_0x53dd('0x4d')]);_0xfeee8e['attributes']=_[_0x53dd('0x50')](_0x1e625b[_0x53dd('0x4f')],qs[_0x53dd('0x51')](_0x2abe0d[_0x53dd('0x4d')][_0x53dd('0x51')]));_0xfeee8e[_0x53dd('0x52')]=_0xfeee8e['attributes'][_0x53dd('0x53')]?_0xfeee8e['attributes']:_0x1e625b[_0x53dd('0x4f')];if(!_0x2abe0d[_0x53dd('0x4d')][_0x53dd('0x54')](_0x53dd('0x55'))){_0xfeee8e[_0x53dd('0x56')]=qs[_0x53dd('0x56')](_0x2abe0d[_0x53dd('0x4d')][_0x53dd('0x56')]);_0xfeee8e['offset']=qs[_0x53dd('0x32')](_0x2abe0d['query']['offset']);}_0xfeee8e[_0x53dd('0x57')]=qs[_0x53dd('0x58')](_0x2abe0d['query']['sort']);_0xfeee8e[_0x53dd('0x59')]=qs[_0x53dd('0x4e')](_[_0x53dd('0x5a')](_0x2abe0d[_0x53dd('0x4d')],_0x1e625b[_0x53dd('0x4e')]),_0x351a91);if(_0x2abe0d[_0x53dd('0x4d')][_0x53dd('0x5b')]){_0xfeee8e['where']=_[_0x53dd('0x5c')](_0xfeee8e[_0x53dd('0x59')],{'$or':_[_0x53dd('0x4c')](_0x351a91,function(_0x3124dd){if(_0x3124dd[_0x53dd('0x4a')]!==_0x53dd('0x5d')){var _0xfb41ef={};_0xfb41ef[_0x3124dd['name']]={'$like':'%'+_0x2abe0d[_0x53dd('0x4d')]['filter']+'%'};return _0xfb41ef;}})});}_0xfeee8e=_[_0x53dd('0x5c')]({},_0xfeee8e,_0x2abe0d[_0x53dd('0x5e')]);var _0x48b186={'where':_0xfeee8e['where']};return db['MailAccount'][_0x53dd('0x34')](_0x48b186)['then'](function(_0x4c792b){_0x443d38[_0x53dd('0x34')]=_0x4c792b;if(_0x2abe0d[_0x53dd('0x4d')][_0x53dd('0x5f')]){_0xfeee8e[_0x53dd('0x60')]=[{'all':!![]}];}return db[_0x53dd('0x47')][_0x53dd('0x61')](_0xfeee8e);})[_0x53dd('0x26')](function(_0x3bde64){_0x443d38[_0x53dd('0x62')]=_0x3bde64;return _0x443d38;})[_0x53dd('0x26')](respondWithFilteredResult(_0x56ec18,_0xfeee8e))['catch'](handleError(_0x56ec18,null));};exports[_0x53dd('0x63')]=function(_0x481a8a,_0x3abc5e){var _0x580d9f={'raw':![],'where':{'id':_0x481a8a[_0x53dd('0x64')]['id']},'include':[{'model':db['MailServerIn'],'as':_0x53dd('0x43')},{'model':db[_0x53dd('0x65')],'as':_0x53dd('0x44')},{'model':db[_0x53dd('0x45')],'as':'mandatoryDispositionPause'}]},_0x2dbd26={};_0x2dbd26[_0x53dd('0x4f')]=_[_0x53dd('0x66')](db[_0x53dd('0x47')]['rawAttributes']);_0x2dbd26['query']=_[_0x53dd('0x66')](_0x481a8a[_0x53dd('0x4d')]);_0x2dbd26[_0x53dd('0x4e')]=_[_0x53dd('0x50')](_0x2dbd26[_0x53dd('0x4f')],_0x2dbd26[_0x53dd('0x4d')]);_0x580d9f[_0x53dd('0x52')]=_[_0x53dd('0x50')](_0x2dbd26[_0x53dd('0x4f')],qs[_0x53dd('0x51')](_0x481a8a[_0x53dd('0x4d')][_0x53dd('0x51')]));_0x580d9f[_0x53dd('0x52')]=_0x580d9f[_0x53dd('0x52')]['length']?_0x580d9f['attributes']:_0x2dbd26[_0x53dd('0x4f')];if(_0x481a8a[_0x53dd('0x4d')][_0x53dd('0x5f')]){_0x580d9f[_0x53dd('0x60')]=[{'all':!![]}];}_0x580d9f=_[_0x53dd('0x5c')]({},_0x580d9f,_0x481a8a[_0x53dd('0x5e')]);return db[_0x53dd('0x47')][_0x53dd('0x67')](_0x580d9f)[_0x53dd('0x26')](handleEntityNotFound(_0x3abc5e,null))[_0x53dd('0x26')](respondWithResult(_0x3abc5e,null))['catch'](handleError(_0x3abc5e,null));};exports[_0x53dd('0x68')]=function(_0x22c387,_0x45dda7){if(_0x22c387['body']['id']){delete _0x22c387[_0x53dd('0x69')]['id'];}return db['MailAccount'][_0x53dd('0x67')]({'where':{'id':_0x22c387[_0x53dd('0x64')]['id']},'include':[{'model':db[_0x53dd('0x42')],'as':_0x53dd('0x43')},{'model':db[_0x53dd('0x65')],'as':'Smtp'},{'model':db[_0x53dd('0x45')],'as':_0x53dd('0x46')}]})[_0x53dd('0x26')](handleEntityNotFound(_0x45dda7,null))[_0x53dd('0x26')](saveUpdates(_0x22c387[_0x53dd('0x69')],null))['then'](function(_0x499b41){if(_0x499b41&&_0x22c387[_0x53dd('0x69')][_0x53dd('0x43')]){return db[_0x53dd('0x42')][_0x53dd('0x68')](_0x22c387[_0x53dd('0x69')]['Imap'],{'where':{'MailAccountId':_0x499b41['id']}})['then'](function(){return _0x499b41;});}return _0x499b41;})[_0x53dd('0x26')](function(_0x4fea9e){if(_0x4fea9e&&_0x22c387[_0x53dd('0x69')][_0x53dd('0x44')]){return db[_0x53dd('0x65')]['update'](_0x22c387[_0x53dd('0x69')][_0x53dd('0x44')],{'where':{'MailAccountId':_0x4fea9e['id']}})['then'](function(){return _0x4fea9e;});}return _0x4fea9e;})[_0x53dd('0x26')](respondWithResult(_0x45dda7,null))[_0x53dd('0x6a')](handleError(_0x45dda7,null));};exports[_0x53dd('0x6b')]=function(_0x1fa64c,_0x4ac2b9){return db['MailAccount'][_0x53dd('0x6b')]()['then'](respondWithResult(_0x4ac2b9,null))[_0x53dd('0x6a')](handleError(_0x4ac2b9,null));};exports[_0x53dd('0x6c')]=function(_0x69e196,_0x51f33c,_0x49bde8){if(_0x69e196[_0x53dd('0x69')]['id']){delete _0x69e196[_0x53dd('0x69')]['id'];}return db[_0x53dd('0x47')][_0x53dd('0x67')]({'where':{'id':_0x69e196[_0x53dd('0x64')]['id']}})[_0x53dd('0x26')](handleEntityNotFound(_0x51f33c,null))[_0x53dd('0x26')](function(_0x1c0134){if(_0x1c0134){_0x69e196['body'][_0x53dd('0x6d')]=_0x1c0134['id'];return db['Disposition'][_0x53dd('0x6e')](_0x69e196[_0x53dd('0x69')]);}})['then'](respondWithResult(_0x51f33c,null))[_0x53dd('0x6a')](handleError(_0x51f33c,null));};exports['getDispositions']=function(_0x584cff,_0x3a4703,_0x357f40){var _0x2993db={'raw':![],'where':{}};var _0xf97635={};var _0xb58d78={'count':0x0,'rows':[]};return db['MailAccount'][_0x53dd('0x6f')]({'where':{'id':_0x584cff[_0x53dd('0x64')]['id']}})[_0x53dd('0x26')](handleEntityNotFound(_0x3a4703,null))[_0x53dd('0x26')](function(_0x367f91){if(_0x367f91){_0xf97635[_0x53dd('0x4f')]=_[_0x53dd('0x66')](db[_0x53dd('0x70')][_0x53dd('0x48')]);_0xf97635[_0x53dd('0x4d')]=_[_0x53dd('0x66')](_0x584cff[_0x53dd('0x4d')]);_0xf97635[_0x53dd('0x4e')]=_['intersection'](_0xf97635[_0x53dd('0x4f')],_0xf97635['query']);_0x2993db[_0x53dd('0x52')]=_[_0x53dd('0x50')](_0xf97635[_0x53dd('0x4f')],qs[_0x53dd('0x51')](_0x584cff[_0x53dd('0x4d')][_0x53dd('0x51')]));_0x2993db[_0x53dd('0x52')]=_0x2993db['attributes'][_0x53dd('0x53')]?_0x2993db[_0x53dd('0x52')]:_0xf97635['model'];if(!_0x584cff[_0x53dd('0x4d')][_0x53dd('0x54')](_0x53dd('0x55'))){_0x2993db[_0x53dd('0x56')]=qs[_0x53dd('0x56')](_0x584cff[_0x53dd('0x4d')][_0x53dd('0x56')]);_0x2993db[_0x53dd('0x32')]=qs[_0x53dd('0x32')](_0x584cff[_0x53dd('0x4d')][_0x53dd('0x32')]);}_0x2993db[_0x53dd('0x57')]=qs[_0x53dd('0x58')](_0x584cff[_0x53dd('0x4d')][_0x53dd('0x58')]);_0x2993db['where']=qs[_0x53dd('0x4e')](_['pick'](_0x584cff[_0x53dd('0x4d')],_0xf97635[_0x53dd('0x4e')]));_0x2993db['where']['MailAccountId']=_0x367f91['id'];if(_0x584cff[_0x53dd('0x4d')][_0x53dd('0x5b')]){_0x2993db[_0x53dd('0x59')]=_['merge'](_0x2993db[_0x53dd('0x59')],{'$or':_[_0x53dd('0x4c')](_0x2993db[_0x53dd('0x52')],function(_0x9f76a2){var _0x438918={};_0x438918[_0x9f76a2]={'$like':'%'+_0x584cff['query']['filter']+'%'};return _0x438918;})});}_0x2993db=_[_0x53dd('0x5c')]({},_0x2993db,_0x584cff['options']);return db[_0x53dd('0x70')][_0x53dd('0x34')]({'where':_0x2993db['where']})[_0x53dd('0x26')](function(_0x3dad78){_0xb58d78[_0x53dd('0x34')]=_0x3dad78;if(_0x584cff['query'][_0x53dd('0x5f')]){_0x2993db[_0x53dd('0x60')]=[{'all':!![]}];}return db[_0x53dd('0x70')]['findAll'](_0x2993db);})[_0x53dd('0x26')](function(_0x2c68a9){_0xb58d78[_0x53dd('0x62')]=_0x2c68a9;return _0xb58d78;});}})['then'](respondWithFilteredResult(_0x3a4703,_0x2993db))[_0x53dd('0x6a')](handleError(_0x3a4703,null));};exports[_0x53dd('0x71')]=function(_0x5241cc,_0x3081b6,_0x51351c){return db[_0x53dd('0x47')][_0x53dd('0x67')]({'where':{'id':_0x5241cc['params']['id']}})[_0x53dd('0x26')](handleEntityNotFound(_0x3081b6,null))[_0x53dd('0x26')](function(_0x1d8d56){if(_0x1d8d56){return _0x1d8d56[_0x53dd('0x71')](_0x5241cc[_0x53dd('0x4d')][_0x53dd('0x72')]);}})['then'](respondWithStatusCode(_0x3081b6,null))[_0x53dd('0x6a')](handleError(_0x3081b6,null));};exports['addAnswer']=function(_0x93c280,_0x14d90d,_0x97dcd3){if(_0x93c280[_0x53dd('0x69')]['id']){delete _0x93c280[_0x53dd('0x69')]['id'];}return db[_0x53dd('0x47')][_0x53dd('0x67')]({'where':{'id':_0x93c280[_0x53dd('0x64')]['id']}})[_0x53dd('0x26')](handleEntityNotFound(_0x14d90d,null))[_0x53dd('0x26')](function(_0x2a0b96){if(_0x2a0b96){_0x93c280[_0x53dd('0x69')]['MailAccountId']=_0x2a0b96['id'];return db[_0x53dd('0x73')]['create'](_0x93c280[_0x53dd('0x69')]);}})[_0x53dd('0x26')](respondWithResult(_0x14d90d,null))['catch'](handleError(_0x14d90d,null));};exports[_0x53dd('0x74')]=function(_0x5dec7a,_0x2e0016,_0x2e1a52){var _0x34d176={'raw':![],'where':{}};var _0x164cae={};var _0x28c35b={'count':0x0,'rows':[]};return db[_0x53dd('0x47')][_0x53dd('0x6f')]({'where':{'id':_0x5dec7a[_0x53dd('0x64')]['id']}})['then'](handleEntityNotFound(_0x2e0016,null))[_0x53dd('0x26')](function(_0x46ba84){if(_0x46ba84){_0x164cae[_0x53dd('0x4f')]=_[_0x53dd('0x66')](db[_0x53dd('0x73')]['rawAttributes']);_0x164cae[_0x53dd('0x4d')]=_[_0x53dd('0x66')](_0x5dec7a[_0x53dd('0x4d')]);_0x164cae[_0x53dd('0x4e')]=_[_0x53dd('0x50')](_0x164cae[_0x53dd('0x4f')],_0x164cae[_0x53dd('0x4d')]);_0x34d176[_0x53dd('0x52')]=_[_0x53dd('0x50')](_0x164cae[_0x53dd('0x4f')],qs[_0x53dd('0x51')](_0x5dec7a['query'][_0x53dd('0x51')]));_0x34d176[_0x53dd('0x52')]=_0x34d176['attributes'][_0x53dd('0x53')]?_0x34d176[_0x53dd('0x52')]:_0x164cae[_0x53dd('0x4f')];if(!_0x5dec7a[_0x53dd('0x4d')][_0x53dd('0x54')](_0x53dd('0x55'))){_0x34d176[_0x53dd('0x56')]=qs[_0x53dd('0x56')](_0x5dec7a[_0x53dd('0x4d')]['limit']);_0x34d176['offset']=qs[_0x53dd('0x32')](_0x5dec7a['query'][_0x53dd('0x32')]);}_0x34d176[_0x53dd('0x57')]=qs[_0x53dd('0x58')](_0x5dec7a[_0x53dd('0x4d')]['sort']);_0x34d176[_0x53dd('0x59')]=qs[_0x53dd('0x4e')](_['pick'](_0x5dec7a[_0x53dd('0x4d')],_0x164cae['filters']));_0x34d176['where'][_0x53dd('0x6d')]=_0x46ba84['id'];if(_0x5dec7a[_0x53dd('0x4d')]['filter']){_0x34d176[_0x53dd('0x59')]=_[_0x53dd('0x5c')](_0x34d176[_0x53dd('0x59')],{'$or':_[_0x53dd('0x4c')](_0x34d176[_0x53dd('0x52')],function(_0x5db2b5){var _0xc38b48={};_0xc38b48[_0x5db2b5]={'$like':'%'+_0x5dec7a[_0x53dd('0x4d')]['filter']+'%'};return _0xc38b48;})});}_0x34d176=_[_0x53dd('0x5c')]({},_0x34d176,_0x5dec7a[_0x53dd('0x5e')]);return db['CannedAnswer']['count']({'where':_0x34d176[_0x53dd('0x59')]})['then'](function(_0x3dee57){_0x28c35b[_0x53dd('0x34')]=_0x3dee57;if(_0x5dec7a[_0x53dd('0x4d')][_0x53dd('0x5f')]){_0x34d176[_0x53dd('0x60')]=[{'all':!![]}];}return db[_0x53dd('0x73')][_0x53dd('0x61')](_0x34d176);})[_0x53dd('0x26')](function(_0x40e24d){_0x28c35b[_0x53dd('0x62')]=_0x40e24d;return _0x28c35b;});}})[_0x53dd('0x26')](respondWithFilteredResult(_0x2e0016,_0x34d176))[_0x53dd('0x6a')](handleError(_0x2e0016,null));};exports[_0x53dd('0x75')]=function(_0xd660e1,_0x3b49c0,_0x209aa9){return db[_0x53dd('0x47')][_0x53dd('0x67')]({'where':{'id':_0xd660e1[_0x53dd('0x64')]['id']}})[_0x53dd('0x26')](handleEntityNotFound(_0x3b49c0,null))['then'](function(_0x361178){if(_0x361178){return _0x361178[_0x53dd('0x75')](_0xd660e1[_0x53dd('0x4d')][_0x53dd('0x72')]);}})[_0x53dd('0x26')](respondWithStatusCode(_0x3b49c0,null))[_0x53dd('0x6a')](handleError(_0x3b49c0,null));};exports[_0x53dd('0x6e')]=function(_0x1da8c7,_0x537813){var _0x4d129d={'name':_0x1da8c7['body'][_0x53dd('0x3f')],'key':_0x1da8c7[_0x53dd('0x69')][_0x53dd('0x4b')],'email':_0x1da8c7[_0x53dd('0x69')][_0x53dd('0x76')],'ListId':_0x1da8c7['body'][_0x53dd('0x77')],'active':!_[_0x53dd('0x78')](_0x1da8c7[_0x53dd('0x69')][_0x53dd('0x79')])?_0x1da8c7[_0x53dd('0x69')][_0x53dd('0x79')]:!![],'description':_0x1da8c7[_0x53dd('0x69')]['description']||null,'Imap':{},'Smtp':{}};if(_[_0x53dd('0x78')](_0x1da8c7['body'][_0x53dd('0x7a')])){if(_0x1da8c7['body'][_0x53dd('0x7b')]){_0x4d129d['Imap'][_0x53dd('0x7c')]=_0x4d129d[_0x53dd('0x44')][_0x53dd('0x7c')]=_0x1da8c7['body'][_0x53dd('0x7d')];_0x4d129d[_0x53dd('0x43')][_0x53dd('0x7e')]=_0x4d129d[_0x53dd('0x44')][_0x53dd('0x7f')]=_0x1da8c7[_0x53dd('0x69')][_0x53dd('0x80')];}else{_0x4d129d['Imap'][_0x53dd('0x81')]=_0x4d129d[_0x53dd('0x44')][_0x53dd('0x81')]=![];}_0x4d129d['Imap'][_0x53dd('0x82')]=_0x1da8c7[_0x53dd('0x69')][_0x53dd('0x43')][_0x53dd('0x82')];_0x4d129d[_0x53dd('0x43')][_0x53dd('0x83')]=_0x1da8c7['body'][_0x53dd('0x43')][_0x53dd('0x83')];_0x4d129d[_0x53dd('0x44')][_0x53dd('0x82')]=_0x1da8c7['body'][_0x53dd('0x44')]['host'];_0x4d129d[_0x53dd('0x44')][_0x53dd('0x83')]=_0x1da8c7[_0x53dd('0x69')][_0x53dd('0x44')][_0x53dd('0x83')];}else{_0x4d129d[_0x53dd('0x43')][_0x53dd('0x84')]=_0x4d129d[_0x53dd('0x44')][_0x53dd('0x84')]=_0x1da8c7[_0x53dd('0x69')][_0x53dd('0x7a')];_0x4d129d[_0x53dd('0x43')][_0x53dd('0x7c')]=_0x4d129d[_0x53dd('0x44')]['user']=_0x1da8c7['body'][_0x53dd('0x7d')];_0x4d129d[_0x53dd('0x43')][_0x53dd('0x7e')]=_0x4d129d[_0x53dd('0x44')]['pass']=_0x1da8c7[_0x53dd('0x69')][_0x53dd('0x80')];}return db[_0x53dd('0x47')][_0x53dd('0x6e')](_0x4d129d,{'include':[{'model':db[_0x53dd('0x65')],'as':_0x53dd('0x44')},{'model':db['MailServerIn'],'as':_0x53dd('0x43')}]})[_0x53dd('0x26')](function(_0x3e9f68){var _0x35c041=_0x1da8c7[_0x53dd('0x7c')][_0x53dd('0x3b')]({'plain':!![]});if(!_0x35c041)throw new Error(_0x53dd('0x85'));if(_0x35c041[_0x53dd('0x86')]===_0x53dd('0x7c')){var _0x1814f2=_0x3e9f68['get']({'plain':!![]});return db[_0x53dd('0x87')][_0x53dd('0x67')]({'where':{'name':_0x53dd('0x3c'),'userProfileId':_0x35c041[_0x53dd('0x88')]},'raw':!![]})[_0x53dd('0x26')](function(_0x171ad4){if(_0x171ad4&&_0x171ad4[_0x53dd('0x89')]===0x0){return db[_0x53dd('0x8a')][_0x53dd('0x6e')]({'name':_0x1814f2[_0x53dd('0x3f')],'resourceId':_0x1814f2['id'],'type':_0x171ad4['name'],'sectionId':_0x171ad4['id']},{})[_0x53dd('0x26')](function(){return _0x3e9f68;});}else{return _0x3e9f68;}})[_0x53dd('0x6a')](function(_0x21dc8d){logger[_0x53dd('0x2d')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x21dc8d);throw _0x21dc8d;});}return _0x3e9f68;})[_0x53dd('0x26')](respondWithResult(_0x537813,0xc9))[_0x53dd('0x6a')](handleError(_0x537813,null));};exports[_0x53dd('0x8b')]=function(_0x3f550c,_0x417568,_0x204643){return db[_0x53dd('0x47')]['findOne']({'where':{'id':_0x3f550c[_0x53dd('0x64')]['id']}})[_0x53dd('0x26')](handleEntityNotFound(_0x417568,null))[_0x53dd('0x26')](function(_0x918bfd){if(_0x918bfd){return _0x918bfd[_0x53dd('0x8b')]();}return null;})['then'](respondWithResult(_0x417568,null))['catch'](handleError(_0x417568,null));};exports[_0x53dd('0x8c')]=function(_0x394cac,_0x2c5d82,_0x373169){if(_0x394cac[_0x53dd('0x69')]['id']){delete _0x394cac[_0x53dd('0x69')]['id'];}return db[_0x53dd('0x47')][_0x53dd('0x67')]({'where':{'id':_0x394cac[_0x53dd('0x64')]['id']}})[_0x53dd('0x26')](handleEntityNotFound(_0x2c5d82,null))[_0x53dd('0x26')](function(_0x131fc7){if(_0x131fc7){_0x394cac['body']['MailAccountId']=_0x131fc7['id'];return db[_0x53dd('0x42')][_0x53dd('0x6e')](_0x394cac[_0x53dd('0x69')]);}})['then'](respondWithResult(_0x2c5d82,null))[_0x53dd('0x6a')](handleError(_0x2c5d82,null));};exports[_0x53dd('0x8d')]=function(_0x3b6fa7,_0x374cbe,_0x5891d7){return db[_0x53dd('0x47')][_0x53dd('0x6f')]({'where':{'id':_0x3b6fa7[_0x53dd('0x64')]['id']}})[_0x53dd('0x26')](handleEntityNotFound(_0x374cbe,null))[_0x53dd('0x26')](function(_0x3250ec){if(_0x3250ec){return _0x3250ec['setImap'](null);}return null;})[_0x53dd('0x26')](respondWithStatusCode(_0x374cbe,null))['catch'](handleError(_0x374cbe,null));};exports[_0x53dd('0x8e')]=function(_0x4dbda4,_0x44cc44,_0x16e282){return db[_0x53dd('0x47')][_0x53dd('0x6f')]({'where':{'id':_0x4dbda4[_0x53dd('0x64')]['id']}})[_0x53dd('0x26')](handleEntityNotFound(_0x44cc44,null))[_0x53dd('0x26')](function(_0x455cdb){if(_0x455cdb){return _0x455cdb[_0x53dd('0x8e')]();}return null;})[_0x53dd('0x26')](respondWithResult(_0x44cc44,null))[_0x53dd('0x6a')](handleError(_0x44cc44,null));};exports['addSmtp']=function(_0x59261b,_0x34ec4d,_0x94fb05){if(_0x59261b['body']['id']){delete _0x59261b[_0x53dd('0x69')]['id'];}return db[_0x53dd('0x47')][_0x53dd('0x67')]({'where':{'id':_0x59261b[_0x53dd('0x64')]['id']}})[_0x53dd('0x26')](handleEntityNotFound(_0x34ec4d,null))['then'](function(_0x511931){if(_0x511931){_0x59261b[_0x53dd('0x69')][_0x53dd('0x6d')]=_0x511931['id'];return db['MailServerOut']['create'](_0x59261b[_0x53dd('0x69')]);}})['then'](respondWithResult(_0x34ec4d,null))[_0x53dd('0x6a')](handleError(_0x34ec4d,null));};exports[_0x53dd('0x8f')]=function(_0xf2c81d,_0x4de003,_0x26c875){return db['MailAccount'][_0x53dd('0x6f')]({'where':{'id':_0xf2c81d[_0x53dd('0x64')]['id']}})[_0x53dd('0x26')](handleEntityNotFound(_0x4de003,null))['then'](function(_0x53faba){if(_0x53faba){return _0x53faba[_0x53dd('0x90')](null);}return null;})[_0x53dd('0x26')](respondWithStatusCode(_0x4de003,null))['catch'](handleError(_0x4de003,null));};exports[_0x53dd('0x91')]=function(_0x303f64,_0x31d0b8,_0x2f3af9){return db[_0x53dd('0x92')][_0x53dd('0x67')]({'where':{'id':_0x303f64[_0x53dd('0x64')]['id']}})['then'](handleEntityNotFound(_0x31d0b8,null))[_0x53dd('0x26')](function(_0x529fdb){if(_0x529fdb){return _0x529fdb[_0x53dd('0x91')](_0x303f64[_0x53dd('0x69')][_0x53dd('0x72')],_[_0x53dd('0x93')](_0x303f64[_0x53dd('0x69')],[_0x53dd('0x72'),'id'])||{});}})[_0x53dd('0x26')](respondWithResult(_0x31d0b8,null))[_0x53dd('0x6a')](handleError(_0x31d0b8,null));};exports[_0x53dd('0x94')]=function(_0x59c98c,_0x124eb6,_0xb08f08){var _0x1f46ad={'raw':![],'where':{}};var _0x5b0609={};var _0x22a8db={'count':0x0,'rows':[]};return db[_0x53dd('0x47')][_0x53dd('0x6f')]({'where':{'id':_0x59c98c[_0x53dd('0x64')]['id']}})['then'](handleEntityNotFound(_0x124eb6,null))['then'](function(_0x3ef343){if(_0x3ef343){_0x5b0609[_0x53dd('0x4f')]=_[_0x53dd('0x66')](db[_0x53dd('0x92')]['rawAttributes']);_0x5b0609[_0x53dd('0x4d')]=_[_0x53dd('0x66')](_0x59c98c[_0x53dd('0x4d')]);_0x5b0609[_0x53dd('0x4e')]=_[_0x53dd('0x50')](_0x5b0609[_0x53dd('0x4f')],_0x5b0609['query']);_0x1f46ad[_0x53dd('0x52')]=_[_0x53dd('0x50')](_0x5b0609[_0x53dd('0x4f')],qs[_0x53dd('0x51')](_0x59c98c[_0x53dd('0x4d')][_0x53dd('0x51')]));_0x1f46ad[_0x53dd('0x52')]=_0x1f46ad[_0x53dd('0x52')]['length']?_0x1f46ad['attributes']:_0x5b0609[_0x53dd('0x4f')];if(!_0x59c98c['query']['hasOwnProperty'](_0x53dd('0x55'))){_0x1f46ad[_0x53dd('0x56')]=qs['limit'](_0x59c98c[_0x53dd('0x4d')][_0x53dd('0x56')]);_0x1f46ad[_0x53dd('0x32')]=qs[_0x53dd('0x32')](_0x59c98c[_0x53dd('0x4d')]['offset']);}_0x1f46ad['order']=qs['sort'](_0x59c98c['query'][_0x53dd('0x58')]);_0x1f46ad[_0x53dd('0x59')]=qs['filters'](_[_0x53dd('0x5a')](_0x59c98c['query'],_0x5b0609[_0x53dd('0x4e')]));_0x1f46ad['where'][_0x53dd('0x6d')]=_0x3ef343['id'];if(_0x59c98c['query']['filter']){_0x1f46ad[_0x53dd('0x59')]=_[_0x53dd('0x5c')](_0x1f46ad[_0x53dd('0x59')],{'$or':_['map'](_0x1f46ad[_0x53dd('0x52')],function(_0x40a217){var _0x536f12={};_0x536f12[_0x40a217]={'$like':'%'+_0x59c98c[_0x53dd('0x4d')][_0x53dd('0x5b')]+'%'};return _0x536f12;})});}_0x1f46ad=_[_0x53dd('0x5c')]({},_0x1f46ad,_0x59c98c['options']);return db['MailInteraction'][_0x53dd('0x34')]({'where':_0x1f46ad[_0x53dd('0x59')]})[_0x53dd('0x26')](function(_0x4e4e28){_0x22a8db[_0x53dd('0x34')]=_0x4e4e28;if(_0x59c98c['query'][_0x53dd('0x5f')]){_0x1f46ad[_0x53dd('0x60')]=[{'model':db[_0x53dd('0x95')],'as':_0x53dd('0x96'),'required':![]},{'model':db[_0x53dd('0x97')],'as':_0x53dd('0x98'),'attributes':[_0x53dd('0x3f'),'fullname',_0x53dd('0x99')],'required':![]},{'model':db[_0x53dd('0x9a')],'as':_0x53dd('0x9b'),'attributes':['id',_0x53dd('0x3f'),_0x53dd('0x9c')],'where':_0x59c98c['query'][_0x53dd('0x9d')]?{'id':_0x59c98c['query'][_0x53dd('0x9d')]}:undefined,'required':_0x59c98c[_0x53dd('0x4d')][_0x53dd('0x9d')]?!![]:![]}];}return db[_0x53dd('0x92')][_0x53dd('0x61')](_0x1f46ad);})[_0x53dd('0x26')](function(_0x6fc8e4){_0x22a8db[_0x53dd('0x62')]=_0x6fc8e4;return _0x22a8db;});}})[_0x53dd('0x26')](respondWithFilteredResult(_0x124eb6,_0x1f46ad))[_0x53dd('0x6a')](handleError(_0x124eb6,null));};exports[_0x53dd('0x9e')]=function(_0x177ce5,_0x4401ee,_0x18a3a9){return db[_0x53dd('0x47')][_0x53dd('0x6f')]({'where':{'id':_0x177ce5['params']['id']}})['then'](handleEntityNotFound(_0x4401ee,null))['then'](function(_0x2fc29){if(_0x2fc29){return db[_0x53dd('0x9f')][_0x53dd('0xa0')](function(_0x3b2103){return db[_0x53dd('0xa1')][_0x53dd('0x3a')]({'where':{'MailAccountId':_0x177ce5[_0x53dd('0x64')]['id']},'transaction':_0x3b2103})[_0x53dd('0x26')](function(_0x4d559c){var _0x4ed85c=_[_0x53dd('0x4c')](_0x177ce5['body'],function(_0x335fb6){_0x335fb6[_0x53dd('0x6d')]=_0x177ce5[_0x53dd('0x64')]['id'];return _0x335fb6;});return db[_0x53dd('0xa1')]['bulkCreate'](_0x4ed85c,{'transaction':_0x3b2103});});})['then'](function(){return db[_0x53dd('0xa1')]['findAndCountAll']({'where':{'MailAccountId':_0x177ce5[_0x53dd('0x64')]['id']},'order':'priority'});});}})[_0x53dd('0x26')](respondWithResult(_0x4401ee,null))[_0x53dd('0x6a')](handleError(_0x4401ee,null));};exports[_0x53dd('0xa2')]=function(_0x253d7e,_0x521c43,_0x255d5c){var _0x4da19b={};var _0x4bab61={};var _0x5245f5;var _0x31b826;return db[_0x53dd('0x47')]['findOne']({'where':{'id':_0x253d7e[_0x53dd('0x64')]['id']}})['then'](handleEntityNotFound(_0x521c43,null))[_0x53dd('0x26')](function(_0x2ac6ce){if(_0x2ac6ce){_0x5245f5=_0x2ac6ce;_0x4bab61[_0x53dd('0x4f')]=_['keys'](db['MailApplication'][_0x53dd('0x48')]);_0x4bab61[_0x53dd('0x4d')]=_[_0x53dd('0x66')](_0x253d7e['query']);_0x4bab61[_0x53dd('0x4e')]=_[_0x53dd('0x50')](_0x4bab61[_0x53dd('0x4f')],_0x4bab61[_0x53dd('0x4d')]);_0x4da19b[_0x53dd('0x52')]=_['intersection'](_0x4bab61[_0x53dd('0x4f')],qs['fields'](_0x253d7e[_0x53dd('0x4d')][_0x53dd('0x51')]));_0x4da19b[_0x53dd('0x52')]=_0x4da19b[_0x53dd('0x52')][_0x53dd('0x53')]?_0x4da19b[_0x53dd('0x52')]:_0x4bab61[_0x53dd('0x4f')];_0x4da19b[_0x53dd('0x57')]=qs[_0x53dd('0x58')](_0x253d7e['query'][_0x53dd('0x58')]);_0x4da19b[_0x53dd('0x59')]=qs[_0x53dd('0x4e')](_[_0x53dd('0x5a')](_0x253d7e[_0x53dd('0x4d')],_0x4bab61[_0x53dd('0x4e')]));if(_0x253d7e[_0x53dd('0x4d')]['filter']){_0x4da19b['where']=_[_0x53dd('0x5c')](_0x4da19b[_0x53dd('0x59')],{'$or':_[_0x53dd('0x4c')](_0x4da19b[_0x53dd('0x52')],function(_0xc34ca7){var _0x3126c9={};_0x3126c9[_0xc34ca7]={'$like':'%'+_0x253d7e['query'][_0x53dd('0x5b')]+'%'};return _0x3126c9;})});}_0x4da19b=_['merge']({},_0x4da19b,_0x253d7e[_0x53dd('0x5e')]);return _0x5245f5[_0x53dd('0xa2')](_0x4da19b);}})[_0x53dd('0x26')](function(_0x3beb55){if(_0x3beb55){_0x31b826=_0x3beb55[_0x53dd('0x53')];if(!_0x253d7e[_0x53dd('0x4d')][_0x53dd('0x54')](_0x53dd('0x55'))){_0x4da19b['limit']=qs[_0x53dd('0x56')](_0x253d7e[_0x53dd('0x4d')][_0x53dd('0x56')]);_0x4da19b[_0x53dd('0x32')]=qs[_0x53dd('0x32')](_0x253d7e[_0x53dd('0x4d')][_0x53dd('0x32')]);}return _0x5245f5[_0x53dd('0xa2')](_0x4da19b);}})[_0x53dd('0x26')](function(_0x28738){if(_0x28738){return _0x28738?{'count':_0x31b826,'rows':_0x28738}:null;}})[_0x53dd('0x26')](respondWithResult(_0x521c43,null))[_0x53dd('0x6a')](handleError(_0x521c43,null));};exports[_0x53dd('0xa3')]=function(_0x1a36f1,_0x2ea229,_0x28b54e){var _0x1c408d={'raw':!![],'where':{}};var _0x1200c2={};var _0x47db84={'count':0x0,'rows':[]};return db['MailAccount'][_0x53dd('0x6f')]({'where':{'id':_0x1a36f1[_0x53dd('0x64')]['id']}})[_0x53dd('0x26')](handleEntityNotFound(_0x2ea229,null))[_0x53dd('0x26')](function(_0xe37c16){if(_0xe37c16){_0x1200c2[_0x53dd('0x4f')]=_['keys'](db[_0x53dd('0xa4')]['rawAttributes']);_0x1200c2[_0x53dd('0x4d')]=_[_0x53dd('0x66')](_0x1a36f1[_0x53dd('0x4d')]);_0x1200c2['filters']=_['intersection'](_0x1200c2[_0x53dd('0x4f')],_0x1200c2[_0x53dd('0x4d')]);_0x1c408d[_0x53dd('0x52')]=_[_0x53dd('0x50')](_0x1200c2[_0x53dd('0x4f')],qs[_0x53dd('0x51')](_0x1a36f1[_0x53dd('0x4d')][_0x53dd('0x51')]));_0x1c408d[_0x53dd('0x52')]=_0x1c408d[_0x53dd('0x52')][_0x53dd('0x53')]?_0x1c408d[_0x53dd('0x52')]:_0x1200c2[_0x53dd('0x4f')];if(!_0x1a36f1[_0x53dd('0x4d')]['hasOwnProperty'](_0x53dd('0x55'))){_0x1c408d[_0x53dd('0x56')]=qs['limit'](_0x1a36f1['query'][_0x53dd('0x56')]);_0x1c408d[_0x53dd('0x32')]=qs['offset'](_0x1a36f1[_0x53dd('0x4d')][_0x53dd('0x32')]);}_0x1c408d['order']=qs[_0x53dd('0x58')](_0x1a36f1[_0x53dd('0x4d')][_0x53dd('0x58')]);_0x1c408d['where']=qs[_0x53dd('0x4e')](_['pick'](_0x1a36f1[_0x53dd('0x4d')],_0x1200c2[_0x53dd('0x4e')]));_0x1c408d[_0x53dd('0x59')][_0x53dd('0x6d')]=_0xe37c16['id'];if(_0x1a36f1[_0x53dd('0x4d')][_0x53dd('0x5b')]){_0x1c408d[_0x53dd('0x59')]=_[_0x53dd('0x5c')](_0x1c408d['where'],{'$or':_[_0x53dd('0x4c')](_0x1c408d[_0x53dd('0x52')],function(_0x4990a5){var _0x473d57={};_0x473d57[_0x4990a5]={'$like':'%'+_0x1a36f1['query']['filter']+'%'};return _0x473d57;})});}if(_0x1a36f1[_0x53dd('0x4d')][_0x53dd('0xa5')]){var _0x49365f=_0x1a36f1[_0x53dd('0x4d')][_0x53dd('0xa5')][_0x53dd('0xa6')](',');var _0x86f4dc={};_0x86f4dc[_0x49365f[0x0]]={'$gte':moment(_0x49365f[0x1])[_0x53dd('0xa7')]('YYYY-MM-DD\x20HH:mm:ss')};_0x1c408d['where']=_[_0x53dd('0x5c')](_0x1c408d[_0x53dd('0x59')],_0x86f4dc);}_0x1c408d=_[_0x53dd('0x5c')]({},_0x1c408d,_0x1a36f1[_0x53dd('0x5e')]);return db[_0x53dd('0xa4')][_0x53dd('0x34')]({'where':_0x1c408d[_0x53dd('0x59')]})[_0x53dd('0x26')](function(_0x57fbc1){_0x47db84['count']=_0x57fbc1;if(_0x1a36f1['query'][_0x53dd('0x5f')]){_0x1c408d[_0x53dd('0x60')]=[{'all':!![]}];}return db[_0x53dd('0xa4')][_0x53dd('0x61')](_0x1c408d);})[_0x53dd('0x26')](function(_0x182afe){if(_0x1a36f1[_0x53dd('0x4d')][_0x53dd('0xa8')]===_0x53dd('0xa9')){for(var _0x469b01=0x0;_0x469b01<_0x182afe[_0x53dd('0x53')];_0x469b01++){_0x182afe[_0x469b01][_0x53dd('0x69')]=juice(_0x182afe[_0x469b01][_0x53dd('0x69')]);}}_0x47db84[_0x53dd('0x62')]=_0x182afe;return _0x47db84;});}})[_0x53dd('0x26')](respondWithFilteredResult(_0x2ea229,_0x1c408d))[_0x53dd('0x6a')](handleError(_0x2ea229,null));};exports[_0x53dd('0x40')]=function(_0x3b3b77,_0x406281,_0x529114){var _0x56f2a0,_0x22a587={},_0x530247;if(_0x3b3b77[_0x53dd('0x69')]['to']){_0x530247=_0x3b3b77[_0x53dd('0x69')]['to'][_0x53dd('0xa6')](',')[0x0];}return db[_0x53dd('0x47')][_0x53dd('0x67')]({'where':{'id':_0x3b3b77[_0x53dd('0x64')]['id']},'include':[{'model':db[_0x53dd('0xaa')],'as':_0x53dd('0xab'),'include':[{'model':db['CmContact'],'as':_0x53dd('0xac'),'where':{'email':_0x530247},'limit':0x1,'order':[[_0x53dd('0xad'),_0x53dd('0xae')]]}]},{'model':db['MailServerOut'],'as':'Smtp','raw':!![]}]})[_0x53dd('0x26')](handleEntityNotFound(_0x406281,null))[_0x53dd('0x26')](function(_0x12e15f){if(_0x12e15f){_0x56f2a0=_0x12e15f;if(_0x12e15f[_0x53dd('0x44')]){if(_['isNil'](_0x3b3b77[_0x53dd('0x69')][_0x53dd('0xaf')])){_0x3b3b77[_0x53dd('0x69')]['from']=util[_0x53dd('0xa7')](_0x53dd('0xb0'),_0x12e15f[_0x53dd('0x3f')],_0x12e15f[_0x53dd('0x76')]||_0x12e15f['Smtp'][_0x53dd('0x7c')]);}if(_0x3b3b77[_0x53dd('0x69')][_0x53dd('0xb1')]&&_0x3b3b77[_0x53dd('0x69')][_0x53dd('0xb1')][_0x53dd('0x53')]){for(var _0x2ce64e=0x0;_0x2ce64e<_0x3b3b77[_0x53dd('0x69')]['attachments'][_0x53dd('0x53')];_0x2ce64e+=0x1){_0x3b3b77['body'][_0x53dd('0xb1')][_0x2ce64e]={'filename':_0x3b3b77[_0x53dd('0x69')][_0x53dd('0xb1')][_0x2ce64e][_0x53dd('0x3f')],'path':path['join'](config['root'],'server/files/attachments',_0x3b3b77[_0x53dd('0x69')]['attachments'][_0x2ce64e][_0x53dd('0xb2')])};}}var _0x184a2f={'tls':{'rejectUnauthorized':![]}};if(_[_0x53dd('0x78')](_0x12e15f['Smtp']['service'])){if(_0x12e15f[_0x53dd('0x44')][_0x53dd('0x81')]){_0x184a2f[_0x53dd('0xb3')]={'user':_0x12e15f['Smtp']['user'],'pass':_0x12e15f[_0x53dd('0x44')][_0x53dd('0x7f')]};}_0x184a2f[_0x53dd('0x82')]=_0x12e15f[_0x53dd('0x44')][_0x53dd('0x82')];_0x184a2f[_0x53dd('0x83')]=_0x12e15f[_0x53dd('0x44')][_0x53dd('0x83')];_0x184a2f[_0x53dd('0xb4')]=_0x12e15f[_0x53dd('0x44')][_0x53dd('0xb4')];}else{_0x184a2f[_0x53dd('0x84')]=_0x12e15f['Smtp'][_0x53dd('0x84')];_0x184a2f['auth']={'user':_0x12e15f[_0x53dd('0x44')]['user'],'pass':_0x12e15f[_0x53dd('0x44')][_0x53dd('0x7f')]};}return respondWithRpcPromise(_0x53dd('0xb5'),_0x53dd('0xb6'),{'account':_0x184a2f,'message':_0x3b3b77[_0x53dd('0x69')]});}else{throw new Error(_0x53dd('0xb7'));}}})[_0x53dd('0x26')](function(_0x11d34d){if(_0x11d34d){_0x22a587=_0x11d34d;if(_0x56f2a0[_0x53dd('0xab')]){if(_0x56f2a0[_0x53dd('0xab')]['Contacts']['length']){return _0x56f2a0[_0x53dd('0xab')][_0x53dd('0xac')][0x0];}else{return db[_0x53dd('0x95')][_0x53dd('0x6e')](_[_0x53dd('0x1c')](_0x3b3b77['body'],{'firstName':_0x3b3b77[_0x53dd('0x69')]['to'],'email':_0x3b3b77[_0x53dd('0x69')]['to'],'phone':_0x3b3b77['body']['to'],'ListId':_0x56f2a0[_0x53dd('0x77')]}));}}else{throw new Error('List\x20not\x20found');}}})[_0x53dd('0x26')](function(_0x1fb92f){if(_0x1fb92f){var _0x2f551d={'UserId':_0x3b3b77[_0x53dd('0x7c')]['id'],'ContactId':_0x1fb92f['id'],'MailAccountId':_0x56f2a0['id'],'inReplyTo':_0x22a587[_0x53dd('0xb8')],'to':_0x3b3b77[_0x53dd('0x69')][_0x53dd('0xaf')],'cc':_0x3b3b77[_0x53dd('0x69')]['cc'],'subject':_0x3b3b77[_0x53dd('0x69')][_0x53dd('0xb9')],'attach':_0x3b3b77[_0x53dd('0x69')][_0x53dd('0xba')],'firstMsgDirection':_0x53dd('0xbb'),'lastMsgAt':moment()[_0x53dd('0xa7')]('YYYY-MM-DD\x20HH:mm:ss'),'lastMsgDirection':_0x53dd('0xbb'),'Messages':[_[_0x53dd('0x5c')](_0x3b3b77[_0x53dd('0x69')],{'messageId':_0x22a587[_0x53dd('0xb8')],'sentAt':moment()[_0x53dd('0xa7')](_0x53dd('0xbc')),'read':!![],'MailAccountId':_0x56f2a0['id'],'UserId':_0x3b3b77[_0x53dd('0x7c')]['id'],'ContactId':_0x1fb92f['id']})]};if(_0x3b3b77['body'][_0x53dd('0xbd')]){_0x2f551d=_['merge'](_0x2f551d,_0x3b3b77[_0x53dd('0x69')][_0x53dd('0xbd')]);}return db[_0x53dd('0x92')][_0x53dd('0x6e')](_0x2f551d,{'include':[{'model':db[_0x53dd('0xa4')],'as':_0x53dd('0xbe')}]});}})[_0x53dd('0x26')](respondWithResult(_0x406281,null))[_0x53dd('0x6a')](handleError(_0x406281,null));};exports[_0x53dd('0xbf')]=function(_0x4305a4,_0x3b707b,_0x438c46){return db[_0x53dd('0x47')][_0x53dd('0x67')]({'where':{'id':_0x4305a4[_0x53dd('0x64')]['id']},'include':[{'model':db['MailServerOut'],'as':_0x53dd('0x44'),'raw':!![]}]})[_0x53dd('0x26')](handleEntityNotFound(_0x3b707b,null))[_0x53dd('0x26')](function(_0x364c78){if(_0x364c78&&_0x364c78['Smtp']){var _0x404f6b={'id':_0x364c78['id'],'tls':{'rejectUnauthorized':![]}};if(_0x364c78[_0x53dd('0x44')][_0x53dd('0x84')]){_0x404f6b[_0x53dd('0x84')]=_0x364c78['Smtp']['service'];}else{_0x404f6b[_0x53dd('0x82')]=_0x364c78['Smtp'][_0x53dd('0x82')];_0x404f6b[_0x53dd('0x83')]=_0x364c78[_0x53dd('0x44')][_0x53dd('0x83')];_0x404f6b[_0x53dd('0xb4')]=_0x364c78['Smtp'][_0x53dd('0xb4')];}if(_0x364c78[_0x53dd('0x44')][_0x53dd('0x81')]){_0x404f6b['auth']={'user':_0x364c78[_0x53dd('0x44')]['user'],'pass':_0x364c78[_0x53dd('0x44')]['pass']};}return respondWithRpcPromise(_0x53dd('0xc0'),_0x53dd('0xbf'),{'account':_0x404f6b});}})[_0x53dd('0x26')](respondWithResult(_0x3b707b,null))[_0x53dd('0x6a')](handleError(_0x3b707b,null));};exports[_0x53dd('0x3a')]=function(_0x5ec372,_0x327558){return db[_0x53dd('0x47')][_0x53dd('0x67')]({'where':{'id':_0x5ec372[_0x53dd('0x64')]['id']}})['then'](handleEntityNotFound(_0x327558,null))[_0x53dd('0x26')](function(_0x636bf9){if(_0x636bf9&&_0x636bf9[_0x53dd('0x84')]){throw new db[(_0x53dd('0xc1'))][(_0x53dd('0xc2'))](_0x53dd('0xc3'));}return _0x636bf9;})['then'](removeEntity(_0x327558,null))[_0x53dd('0x6a')](handleError(_0x327558,null));};exports[_0x53dd('0xc4')]=function(_0x3d269b,_0x556822,_0x252569){return db[_0x53dd('0x47')][_0x53dd('0x67')]({'where':{'id':_0x3d269b['params']['id']}})[_0x53dd('0x26')](handleEntityNotFound(_0x556822,null))[_0x53dd('0x26')](function(_0x55fab1){if(_0x55fab1){return _0x55fab1[_0x53dd('0xc4')](_0x3d269b[_0x53dd('0x69')]['ids'],_['omit'](_0x3d269b['body'],['ids','id'])||{})['spread'](function(_0x3a54a2){for(var _0x3e961d=0x0;_0x3e961d<_0x3d269b['body'][_0x53dd('0x72')][_0x53dd('0x53')];_0x3e961d+=0x1){socket['emit'](_0x53dd('0xc5'),{'UserId':Number(_0x3d269b[_0x53dd('0x69')]['ids'][_0x3e961d]),'MailAccountId':Number(_0x3d269b[_0x53dd('0x64')]['id'])});}return _0x3a54a2;});}})[_0x53dd('0x26')](respondWithResult(_0x556822,null))['catch'](handleError(_0x556822,null));};exports['removeAgents']=function(_0x3f5444,_0xe2d1c0,_0x5dae9e){return db[_0x53dd('0x47')]['find']({'where':{'id':_0x3f5444[_0x53dd('0x64')]['id']}})[_0x53dd('0x26')](handleEntityNotFound(_0xe2d1c0,null))[_0x53dd('0x26')](function(_0xf4349b){if(_0xf4349b){return _0xf4349b[_0x53dd('0xc6')](_0x3f5444[_0x53dd('0x4d')][_0x53dd('0x72')])[_0x53dd('0x26')](function(){if(_['isArray'](_0x3f5444[_0x53dd('0x4d')][_0x53dd('0x72')])){for(var _0x4a7081=0x0;_0x4a7081<_0x3f5444[_0x53dd('0x4d')][_0x53dd('0x72')][_0x53dd('0x53')];_0x4a7081+=0x1){socket['emit'](_0x53dd('0xc7'),{'UserId':Number(_0x3f5444[_0x53dd('0x4d')][_0x53dd('0x72')][_0x4a7081]),'MailAccountId':Number(_0x3f5444[_0x53dd('0x64')]['id'])});}}else{socket[_0x53dd('0xc8')](_0x53dd('0xc7'),{'UserId':Number(_0x3f5444['query']['ids']),'MailAccountId':Number(_0x3f5444[_0x53dd('0x64')]['id'])});}});}})[_0x53dd('0x26')](respondWithStatusCode(_0xe2d1c0,null))[_0x53dd('0x6a')](handleError(_0xe2d1c0,null));};exports['getAgents']=function(_0x36de36,_0x56f6bc,_0x2ddabc){var _0x11c7c3={};var _0x20232c={};var _0x3545f3;var _0x396c45;return db[_0x53dd('0x47')][_0x53dd('0x6f')]({'where':{'id':_0x36de36['params']['id']}})[_0x53dd('0x26')](handleEntityNotFound(_0x56f6bc,null))[_0x53dd('0x26')](function(_0x31e151){if(_0x31e151){_0x3545f3=_0x31e151;_0x20232c['model']=_['keys'](db[_0x53dd('0x97')]['rawAttributes']);_0x20232c[_0x53dd('0x4d')]=_[_0x53dd('0x66')](_0x36de36[_0x53dd('0x4d')]);_0x20232c[_0x53dd('0x4e')]=_['intersection'](_0x20232c[_0x53dd('0x4f')],_0x20232c[_0x53dd('0x4d')]);_0x11c7c3[_0x53dd('0x52')]=_['intersection'](_0x20232c[_0x53dd('0x4f')],qs[_0x53dd('0x51')](_0x36de36[_0x53dd('0x4d')][_0x53dd('0x51')]));_0x11c7c3[_0x53dd('0x52')]=_0x11c7c3[_0x53dd('0x52')][_0x53dd('0x53')]?_0x11c7c3[_0x53dd('0x52')]:_0x20232c[_0x53dd('0x4f')];_0x11c7c3['order']=qs[_0x53dd('0x58')](_0x36de36[_0x53dd('0x4d')][_0x53dd('0x58')]);_0x11c7c3[_0x53dd('0x59')]=qs[_0x53dd('0x4e')](_[_0x53dd('0x5a')](_0x36de36[_0x53dd('0x4d')],_0x20232c[_0x53dd('0x4e')]));if(_0x36de36['query']['filter']){_0x11c7c3['where']=_[_0x53dd('0x5c')](_0x11c7c3[_0x53dd('0x59')],{'$or':_['map'](_0x11c7c3[_0x53dd('0x52')],function(_0x3cff12){var _0x1c4098={};_0x1c4098[_0x3cff12]={'$like':'%'+_0x36de36[_0x53dd('0x4d')]['filter']+'%'};return _0x1c4098;})});}_0x11c7c3=_[_0x53dd('0x5c')]({},_0x11c7c3,_0x36de36[_0x53dd('0x5e')]);return _0x3545f3[_0x53dd('0xc9')](_0x11c7c3);}})['then'](function(_0x59caf9){if(_0x59caf9){_0x396c45=_0x59caf9[_0x53dd('0x53')];if(!_0x36de36[_0x53dd('0x4d')][_0x53dd('0x54')]('nolimit')){_0x11c7c3['limit']=qs[_0x53dd('0x56')](_0x36de36[_0x53dd('0x4d')][_0x53dd('0x56')]);_0x11c7c3[_0x53dd('0x32')]=qs[_0x53dd('0x32')](_0x36de36[_0x53dd('0x4d')][_0x53dd('0x32')]);}return _0x3545f3[_0x53dd('0xc9')](_0x11c7c3);}})[_0x53dd('0x26')](function(_0x5b40e9){if(_0x5b40e9){return _0x5b40e9?{'count':_0x396c45,'rows':_0x5b40e9}:null;}})[_0x53dd('0x26')](respondWithResult(_0x56f6bc,null))[_0x53dd('0x6a')](handleError(_0x56f6bc,null));};
\ No newline at end of file
+var _0xc900=['../../mysqldb','redis','defaults','localhost','./mailAccount.socket','jayson/promise','client','http','request','then','info','MailAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','sendStatus','status','end','json','offset','undefined','limit','set','Content-Range','save','update','destroy','get','MailAccounts','stack','name','index','MailServerIn','Imap','MailServerOut','Pause','MailAccount','rawAttributes','type','model','map','keys','query','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','count','includeAll','include','findAll','rows','catch','show','params','Smtp','mandatoryDispositionPause','length','options','find','body','describe','addDisposition','MailAccountId','Disposition','create','removeDispositions','addAnswer','getAnswers','CannedAnswer','removeAnswers','email','ListId','isNil','active','description','cauthentication','user','cuser','password','cpassword','authentication','host','port','service','cservice','pass','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getImap','findOne','addImap','removeImap','getSmtp','addSmtp','removeSmtp','setSmtp','addInteraction','MailInteraction','ids','omit','getInteractions','CmContact','Contact','fullname','internal','Tag','color','tag','addApplications','sequelize','transaction','Transaction','ISOLATION_LEVELS','READ_COMMITTED','MailApplication','bulkCreate','finally','send','getApplications','getMessages','MailMessage','$gte','split','format','inlineCss','true','CmList','List','Contacts','updatedAt','from','%s\x20<%s>','attachments','join','root','server/files/attachments','basename','auth','secure','SendMail','List\x20not\x20found','messageId','subject','attach','out','YYYY-MM-DD\x20HH:mm:ss','Interaction','verifySmtp','VerifySmtp','ValidationError','You\x20can\x27t\x20remove\x20the\x20mail\x20service\x20account','addAgents','spread','emit','userMailAccount:save','removeAgents','isArray','userMailAccount:remove','getAgents','User','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','html-to-text','juice','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment'];(function(_0x2e722c,_0x19d93d){var _0x1891d3=function(_0x38cb53){while(--_0x38cb53){_0x2e722c['push'](_0x2e722c['shift']());}};_0x1891d3(++_0x19d93d);}(_0xc900,0xb3));var _0x0c90=function(_0x303d32,_0x49afcb){_0x303d32=_0x303d32-0x0;var _0x2bcd77=_0xc900[_0x303d32];return _0x2bcd77;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x0c90('0x0'));var jsonpatch=require(_0x0c90('0x1'));var rp=require(_0x0c90('0x2'));var moment=require('moment');var BPromise=require(_0x0c90('0x3'));var Mustache=require(_0x0c90('0x4'));var util=require('util');var path=require(_0x0c90('0x5'));var sox=require(_0x0c90('0x6'));var csv=require(_0x0c90('0x7'));var ejs=require(_0x0c90('0x8'));var fs=require('fs');var fs_extra=require(_0x0c90('0x9'));var _=require(_0x0c90('0xa'));var squel=require('squel');var crypto=require(_0x0c90('0xb'));var jsforce=require(_0x0c90('0xc'));var deskjs=require(_0x0c90('0xd'));var toCsv=require(_0x0c90('0x7'));var querystring=require(_0x0c90('0xe'));var Papa=require(_0x0c90('0xf'));var htmlToText=require(_0x0c90('0x10'));var juice=require(_0x0c90('0x11'));var Redis=require(_0x0c90('0x12'));var authService=require(_0x0c90('0x13'));var qs=require(_0x0c90('0x14'));var as=require(_0x0c90('0x15'));var hardwareService=require(_0x0c90('0x16'));var logger=require('../../config/logger')(_0x0c90('0x17'));var utils=require('../../config/utils');var config=require(_0x0c90('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x0c90('0x19'))['db'];config[_0x0c90('0x1a')]=_[_0x0c90('0x1b')](config[_0x0c90('0x1a')],{'host':_0x0c90('0x1c'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x0c90('0x1a')]));require(_0x0c90('0x1d'))['register'](socket);var jayson=require(_0x0c90('0x1e'));var client=jayson[_0x0c90('0x1f')][_0x0c90('0x20')]({'port':0x232b});function respondWithRpcPromise(_0x5bef7d,_0x5daeb7,_0x412635,_0x15ca42){return new BPromise(function(_0x2b8135,_0x62d429){var _0x276b92=_0x15ca42||client;return _0x276b92[_0x0c90('0x21')](_0x5bef7d,_0x412635)[_0x0c90('0x22')](function(_0x57b9a6){logger[_0x0c90('0x23')](_0x0c90('0x24'),_0x5daeb7,_0x0c90('0x25'));logger[_0x0c90('0x26')]('MailAccount,\x20%s,\x20%s,\x20%s',_0x5daeb7,_0x0c90('0x25'),JSON[_0x0c90('0x27')](_0x57b9a6));if(_0x57b9a6[_0x0c90('0x28')]){if(_0x57b9a6[_0x0c90('0x28')][_0x0c90('0x29')]===0x1f4){logger[_0x0c90('0x28')]('MailAccount,\x20%s,\x20%s',_0x5daeb7,_0x57b9a6[_0x0c90('0x28')]['message']);return _0x62d429(_0x57b9a6[_0x0c90('0x28')][_0x0c90('0x2a')]);}logger['error'](_0x0c90('0x24'),_0x5daeb7,_0x57b9a6[_0x0c90('0x28')][_0x0c90('0x2a')]);return _0x2b8135(_0x57b9a6[_0x0c90('0x28')][_0x0c90('0x2a')]);}else{logger[_0x0c90('0x23')]('MailAccount,\x20%s,\x20%s',_0x5daeb7,_0x0c90('0x25'));_0x2b8135(_0x57b9a6[_0x0c90('0x2b')]['message']);}})['catch'](function(_0x28d005){logger[_0x0c90('0x28')](_0x0c90('0x24'),_0x5daeb7,_0x28d005);_0x62d429(_0x28d005);});});}function respondWithStatusCode(_0x109a5f,_0x4dde67){_0x4dde67=_0x4dde67||0xcc;return function(_0x2dfa14){if(_0x2dfa14){return _0x109a5f[_0x0c90('0x2c')](_0x4dde67);}return _0x109a5f[_0x0c90('0x2d')](_0x4dde67)[_0x0c90('0x2e')]();};}function respondWithResult(_0x427c2b,_0x114589){_0x114589=_0x114589||0xc8;return function(_0x492028){if(_0x492028){return _0x427c2b[_0x0c90('0x2d')](_0x114589)[_0x0c90('0x2f')](_0x492028);}};}function respondWithFilteredResult(_0x39f1b2,_0x13b377){return function(_0x52d28d){if(_0x52d28d){var _0x4c8603=typeof _0x13b377[_0x0c90('0x30')]===_0x0c90('0x31')&&typeof _0x13b377[_0x0c90('0x32')]===_0x0c90('0x31');var _0x119e09=_0x52d28d['count'];var _0x120136=_0x4c8603?0x0:_0x13b377[_0x0c90('0x30')];var _0x478002=_0x4c8603?_0x52d28d['count']:_0x13b377[_0x0c90('0x30')]+_0x13b377['limit'];var _0x54a3f5;if(_0x478002>=_0x119e09){_0x478002=_0x119e09;_0x54a3f5=0xc8;}else{_0x54a3f5=0xce;}_0x39f1b2[_0x0c90('0x2d')](_0x54a3f5);return _0x39f1b2[_0x0c90('0x33')](_0x0c90('0x34'),_0x120136+'-'+_0x478002+'/'+_0x119e09)[_0x0c90('0x2f')](_0x52d28d);}return null;};}function patchUpdates(_0x58c01a){return function(_0xc6d2e3){try{jsonpatch['apply'](_0xc6d2e3,_0x58c01a,!![]);}catch(_0x220803){return BPromise['reject'](_0x220803);}return _0xc6d2e3[_0x0c90('0x35')]();};}function saveUpdates(_0x30ba54,_0x5e991e){return function(_0x23bedd){if(_0x23bedd){return _0x23bedd[_0x0c90('0x36')](_0x30ba54)[_0x0c90('0x22')](function(_0x854ed3){return _0x854ed3;});}return null;};}function removeEntity(_0x255c3f,_0x1517c9){return function(_0x441d05){if(_0x441d05){return _0x441d05[_0x0c90('0x37')]()['then'](function(){var _0x27be8d=_0x441d05[_0x0c90('0x38')]({'plain':!![]});var _0x404f78=_0x0c90('0x39');return db['UserProfileResource'][_0x0c90('0x37')]({'where':{'type':_0x404f78,'resourceId':_0x27be8d['id']}})[_0x0c90('0x22')](function(){return _0x441d05;});})[_0x0c90('0x22')](function(){_0x255c3f[_0x0c90('0x2d')](0xcc)[_0x0c90('0x2e')]();});}};}function handleEntityNotFound(_0x12d3e8,_0x4716f2){return function(_0x435914){if(!_0x435914){_0x12d3e8['sendStatus'](0x194);}return _0x435914;};}function handleError(_0x16963d,_0x1c7a57){_0x1c7a57=_0x1c7a57||0x1f4;return function(_0x538bf3){logger[_0x0c90('0x28')](_0x538bf3[_0x0c90('0x3a')]);if(_0x538bf3[_0x0c90('0x3b')]){delete _0x538bf3[_0x0c90('0x3b')];}_0x16963d[_0x0c90('0x2d')](_0x1c7a57)['send'](_0x538bf3);};}exports[_0x0c90('0x3c')]=function(_0xc315fa,_0x11530f){var _0x2bca69={'include':[{'model':db[_0x0c90('0x3d')],'as':_0x0c90('0x3e')},{'model':db[_0x0c90('0x3f')],'as':'Smtp'},{'model':db[_0x0c90('0x40')],'as':'mandatoryDispositionPause'}]},_0x275cc1={},_0x3ca8fd={'count':0x0,'rows':[]};var _0x1843ad=_['map'](db[_0x0c90('0x41')][_0x0c90('0x42')],function(_0x49f8b4){return{'name':_0x49f8b4['fieldName'],'type':_0x49f8b4[_0x0c90('0x43')]['key']};});_0x275cc1[_0x0c90('0x44')]=_[_0x0c90('0x45')](_0x1843ad,_0x0c90('0x3b'));_0x275cc1['query']=_[_0x0c90('0x46')](_0xc315fa[_0x0c90('0x47')]);_0x275cc1[_0x0c90('0x48')]=_[_0x0c90('0x49')](_0x275cc1[_0x0c90('0x44')],_0x275cc1[_0x0c90('0x47')]);_0x2bca69['attributes']=_[_0x0c90('0x49')](_0x275cc1[_0x0c90('0x44')],qs[_0x0c90('0x4a')](_0xc315fa[_0x0c90('0x47')][_0x0c90('0x4a')]));_0x2bca69[_0x0c90('0x4b')]=_0x2bca69[_0x0c90('0x4b')]['length']?_0x2bca69[_0x0c90('0x4b')]:_0x275cc1['model'];if(!_0xc315fa[_0x0c90('0x47')][_0x0c90('0x4c')](_0x0c90('0x4d'))){_0x2bca69[_0x0c90('0x32')]=qs[_0x0c90('0x32')](_0xc315fa[_0x0c90('0x47')][_0x0c90('0x32')]);_0x2bca69[_0x0c90('0x30')]=qs[_0x0c90('0x30')](_0xc315fa[_0x0c90('0x47')][_0x0c90('0x30')]);}_0x2bca69[_0x0c90('0x4e')]=qs[_0x0c90('0x4f')](_0xc315fa[_0x0c90('0x47')][_0x0c90('0x4f')]);_0x2bca69['where']=qs[_0x0c90('0x48')](_[_0x0c90('0x50')](_0xc315fa[_0x0c90('0x47')],_0x275cc1[_0x0c90('0x48')]),_0x1843ad);if(_0xc315fa[_0x0c90('0x47')][_0x0c90('0x51')]){_0x2bca69[_0x0c90('0x52')]=_[_0x0c90('0x53')](_0x2bca69[_0x0c90('0x52')],{'$or':_[_0x0c90('0x45')](_0x1843ad,function(_0x2f25ad){if(_0x2f25ad[_0x0c90('0x43')]!==_0x0c90('0x54')){var _0x229e2f={};_0x229e2f[_0x2f25ad['name']]={'$like':'%'+_0xc315fa[_0x0c90('0x47')][_0x0c90('0x51')]+'%'};return _0x229e2f;}})});}_0x2bca69=_['merge']({},_0x2bca69,_0xc315fa['options']);var _0x4c81d1={'where':_0x2bca69[_0x0c90('0x52')]};return db[_0x0c90('0x41')][_0x0c90('0x55')](_0x4c81d1)[_0x0c90('0x22')](function(_0x11d2de){_0x3ca8fd['count']=_0x11d2de;if(_0xc315fa[_0x0c90('0x47')][_0x0c90('0x56')]){_0x2bca69[_0x0c90('0x57')]=[{'all':!![]}];}return db['MailAccount'][_0x0c90('0x58')](_0x2bca69);})[_0x0c90('0x22')](function(_0xd639a1){_0x3ca8fd[_0x0c90('0x59')]=_0xd639a1;return _0x3ca8fd;})[_0x0c90('0x22')](respondWithFilteredResult(_0x11530f,_0x2bca69))[_0x0c90('0x5a')](handleError(_0x11530f,null));};exports[_0x0c90('0x5b')]=function(_0x2a339d,_0x1daeed){var _0xeeee3b={'raw':![],'where':{'id':_0x2a339d[_0x0c90('0x5c')]['id']},'include':[{'model':db['MailServerIn'],'as':_0x0c90('0x3e')},{'model':db[_0x0c90('0x3f')],'as':_0x0c90('0x5d')},{'model':db[_0x0c90('0x40')],'as':_0x0c90('0x5e')}]},_0x5e288e={};_0x5e288e[_0x0c90('0x44')]=_['keys'](db['MailAccount']['rawAttributes']);_0x5e288e['query']=_[_0x0c90('0x46')](_0x2a339d[_0x0c90('0x47')]);_0x5e288e[_0x0c90('0x48')]=_['intersection'](_0x5e288e[_0x0c90('0x44')],_0x5e288e[_0x0c90('0x47')]);_0xeeee3b['attributes']=_[_0x0c90('0x49')](_0x5e288e['model'],qs[_0x0c90('0x4a')](_0x2a339d[_0x0c90('0x47')][_0x0c90('0x4a')]));_0xeeee3b[_0x0c90('0x4b')]=_0xeeee3b['attributes'][_0x0c90('0x5f')]?_0xeeee3b['attributes']:_0x5e288e[_0x0c90('0x44')];if(_0x2a339d[_0x0c90('0x47')]['includeAll']){_0xeeee3b['include']=[{'all':!![]}];}_0xeeee3b=_['merge']({},_0xeeee3b,_0x2a339d[_0x0c90('0x60')]);return db[_0x0c90('0x41')][_0x0c90('0x61')](_0xeeee3b)[_0x0c90('0x22')](handleEntityNotFound(_0x1daeed,null))[_0x0c90('0x22')](respondWithResult(_0x1daeed,null))['catch'](handleError(_0x1daeed,null));};exports[_0x0c90('0x36')]=function(_0x25ab13,_0x5ee971){if(_0x25ab13[_0x0c90('0x62')]['id']){delete _0x25ab13['body']['id'];}return db[_0x0c90('0x41')][_0x0c90('0x61')]({'where':{'id':_0x25ab13['params']['id']},'include':[{'model':db[_0x0c90('0x3d')],'as':'Imap'},{'model':db['MailServerOut'],'as':'Smtp'},{'model':db[_0x0c90('0x40')],'as':_0x0c90('0x5e')}]})[_0x0c90('0x22')](handleEntityNotFound(_0x5ee971,null))[_0x0c90('0x22')](saveUpdates(_0x25ab13['body'],null))['then'](function(_0x426f65){if(_0x426f65&&_0x25ab13[_0x0c90('0x62')][_0x0c90('0x3e')]){return db['MailServerIn'][_0x0c90('0x36')](_0x25ab13[_0x0c90('0x62')][_0x0c90('0x3e')],{'where':{'MailAccountId':_0x426f65['id']}})['then'](function(){return _0x426f65;});}return _0x426f65;})[_0x0c90('0x22')](function(_0x37bc0a){if(_0x37bc0a&&_0x25ab13[_0x0c90('0x62')]['Smtp']){return db[_0x0c90('0x3f')][_0x0c90('0x36')](_0x25ab13[_0x0c90('0x62')][_0x0c90('0x5d')],{'where':{'MailAccountId':_0x37bc0a['id']}})[_0x0c90('0x22')](function(){return _0x37bc0a;});}return _0x37bc0a;})[_0x0c90('0x22')](respondWithResult(_0x5ee971,null))[_0x0c90('0x5a')](handleError(_0x5ee971,null));};exports[_0x0c90('0x63')]=function(_0x181fe3,_0x558c83){return db['MailAccount'][_0x0c90('0x63')]()[_0x0c90('0x22')](respondWithResult(_0x558c83,null))[_0x0c90('0x5a')](handleError(_0x558c83,null));};exports[_0x0c90('0x64')]=function(_0x19dae5,_0x2dad30,_0x2f1459){if(_0x19dae5[_0x0c90('0x62')]['id']){delete _0x19dae5[_0x0c90('0x62')]['id'];}return db[_0x0c90('0x41')][_0x0c90('0x61')]({'where':{'id':_0x19dae5[_0x0c90('0x5c')]['id']}})[_0x0c90('0x22')](handleEntityNotFound(_0x2dad30,null))[_0x0c90('0x22')](function(_0x334167){if(_0x334167){_0x19dae5['body'][_0x0c90('0x65')]=_0x334167['id'];return db[_0x0c90('0x66')][_0x0c90('0x67')](_0x19dae5['body']);}})['then'](respondWithResult(_0x2dad30,null))[_0x0c90('0x5a')](handleError(_0x2dad30,null));};exports['getDispositions']=function(_0xfc3787,_0x1f8c42,_0x57fb18){var _0x2c64e0={'raw':![],'where':{}};var _0x3f4819={};var _0x25ef97={'count':0x0,'rows':[]};return db[_0x0c90('0x41')]['findOne']({'where':{'id':_0xfc3787['params']['id']}})['then'](handleEntityNotFound(_0x1f8c42,null))[_0x0c90('0x22')](function(_0x2d3287){if(_0x2d3287){_0x3f4819[_0x0c90('0x44')]=_[_0x0c90('0x46')](db['Disposition'][_0x0c90('0x42')]);_0x3f4819['query']=_[_0x0c90('0x46')](_0xfc3787[_0x0c90('0x47')]);_0x3f4819[_0x0c90('0x48')]=_['intersection'](_0x3f4819[_0x0c90('0x44')],_0x3f4819[_0x0c90('0x47')]);_0x2c64e0[_0x0c90('0x4b')]=_[_0x0c90('0x49')](_0x3f4819['model'],qs['fields'](_0xfc3787[_0x0c90('0x47')]['fields']));_0x2c64e0[_0x0c90('0x4b')]=_0x2c64e0[_0x0c90('0x4b')][_0x0c90('0x5f')]?_0x2c64e0[_0x0c90('0x4b')]:_0x3f4819[_0x0c90('0x44')];if(!_0xfc3787[_0x0c90('0x47')][_0x0c90('0x4c')](_0x0c90('0x4d'))){_0x2c64e0[_0x0c90('0x32')]=qs[_0x0c90('0x32')](_0xfc3787['query'][_0x0c90('0x32')]);_0x2c64e0[_0x0c90('0x30')]=qs[_0x0c90('0x30')](_0xfc3787[_0x0c90('0x47')][_0x0c90('0x30')]);}_0x2c64e0[_0x0c90('0x4e')]=qs[_0x0c90('0x4f')](_0xfc3787[_0x0c90('0x47')][_0x0c90('0x4f')]);_0x2c64e0[_0x0c90('0x52')]=qs['filters'](_[_0x0c90('0x50')](_0xfc3787[_0x0c90('0x47')],_0x3f4819[_0x0c90('0x48')]));_0x2c64e0[_0x0c90('0x52')]['MailAccountId']=_0x2d3287['id'];if(_0xfc3787[_0x0c90('0x47')][_0x0c90('0x51')]){_0x2c64e0[_0x0c90('0x52')]=_['merge'](_0x2c64e0[_0x0c90('0x52')],{'$or':_[_0x0c90('0x45')](_0x2c64e0['attributes'],function(_0xd4c53d){var _0x47bd48={};_0x47bd48[_0xd4c53d]={'$like':'%'+_0xfc3787[_0x0c90('0x47')]['filter']+'%'};return _0x47bd48;})});}_0x2c64e0=_['merge']({},_0x2c64e0,_0xfc3787[_0x0c90('0x60')]);return db[_0x0c90('0x66')]['count']({'where':_0x2c64e0['where']})[_0x0c90('0x22')](function(_0x3b0a82){_0x25ef97['count']=_0x3b0a82;if(_0xfc3787['query'][_0x0c90('0x56')]){_0x2c64e0['include']=[{'all':!![]}];}return db[_0x0c90('0x66')][_0x0c90('0x58')](_0x2c64e0);})[_0x0c90('0x22')](function(_0x3d1bf3){_0x25ef97[_0x0c90('0x59')]=_0x3d1bf3;return _0x25ef97;});}})['then'](respondWithFilteredResult(_0x1f8c42,_0x2c64e0))[_0x0c90('0x5a')](handleError(_0x1f8c42,null));};exports[_0x0c90('0x68')]=function(_0x3aed3c,_0x54b413,_0x5e6a0d){return db[_0x0c90('0x41')][_0x0c90('0x61')]({'where':{'id':_0x3aed3c[_0x0c90('0x5c')]['id']}})['then'](handleEntityNotFound(_0x54b413,null))['then'](function(_0x51ee60){if(_0x51ee60){return _0x51ee60[_0x0c90('0x68')](_0x3aed3c['query']['ids']);}})['then'](respondWithStatusCode(_0x54b413,null))['catch'](handleError(_0x54b413,null));};exports[_0x0c90('0x69')]=function(_0x2ca017,_0x1bf6e0,_0x29ede1){if(_0x2ca017[_0x0c90('0x62')]['id']){delete _0x2ca017['body']['id'];}return db['MailAccount']['find']({'where':{'id':_0x2ca017[_0x0c90('0x5c')]['id']}})[_0x0c90('0x22')](handleEntityNotFound(_0x1bf6e0,null))[_0x0c90('0x22')](function(_0x452ffe){if(_0x452ffe){_0x2ca017[_0x0c90('0x62')][_0x0c90('0x65')]=_0x452ffe['id'];return db['CannedAnswer'][_0x0c90('0x67')](_0x2ca017[_0x0c90('0x62')]);}})[_0x0c90('0x22')](respondWithResult(_0x1bf6e0,null))[_0x0c90('0x5a')](handleError(_0x1bf6e0,null));};exports[_0x0c90('0x6a')]=function(_0x1e7c9d,_0x461a6d,_0xa1a116){var _0x333b94={'raw':![],'where':{}};var _0x248122={};var _0x39dc05={'count':0x0,'rows':[]};return db[_0x0c90('0x41')]['findOne']({'where':{'id':_0x1e7c9d[_0x0c90('0x5c')]['id']}})['then'](handleEntityNotFound(_0x461a6d,null))[_0x0c90('0x22')](function(_0x5aa50b){if(_0x5aa50b){_0x248122[_0x0c90('0x44')]=_[_0x0c90('0x46')](db[_0x0c90('0x6b')][_0x0c90('0x42')]);_0x248122['query']=_['keys'](_0x1e7c9d[_0x0c90('0x47')]);_0x248122[_0x0c90('0x48')]=_['intersection'](_0x248122[_0x0c90('0x44')],_0x248122[_0x0c90('0x47')]);_0x333b94['attributes']=_[_0x0c90('0x49')](_0x248122[_0x0c90('0x44')],qs['fields'](_0x1e7c9d[_0x0c90('0x47')]['fields']));_0x333b94[_0x0c90('0x4b')]=_0x333b94[_0x0c90('0x4b')][_0x0c90('0x5f')]?_0x333b94[_0x0c90('0x4b')]:_0x248122[_0x0c90('0x44')];if(!_0x1e7c9d[_0x0c90('0x47')]['hasOwnProperty'](_0x0c90('0x4d'))){_0x333b94[_0x0c90('0x32')]=qs[_0x0c90('0x32')](_0x1e7c9d[_0x0c90('0x47')][_0x0c90('0x32')]);_0x333b94['offset']=qs[_0x0c90('0x30')](_0x1e7c9d[_0x0c90('0x47')][_0x0c90('0x30')]);}_0x333b94[_0x0c90('0x4e')]=qs[_0x0c90('0x4f')](_0x1e7c9d[_0x0c90('0x47')]['sort']);_0x333b94[_0x0c90('0x52')]=qs[_0x0c90('0x48')](_['pick'](_0x1e7c9d[_0x0c90('0x47')],_0x248122[_0x0c90('0x48')]));_0x333b94['where'][_0x0c90('0x65')]=_0x5aa50b['id'];if(_0x1e7c9d[_0x0c90('0x47')]['filter']){_0x333b94['where']=_[_0x0c90('0x53')](_0x333b94[_0x0c90('0x52')],{'$or':_['map'](_0x333b94[_0x0c90('0x4b')],function(_0x4fee0e){var _0x37d1d5={};_0x37d1d5[_0x4fee0e]={'$like':'%'+_0x1e7c9d['query']['filter']+'%'};return _0x37d1d5;})});}_0x333b94=_[_0x0c90('0x53')]({},_0x333b94,_0x1e7c9d[_0x0c90('0x60')]);return db[_0x0c90('0x6b')]['count']({'where':_0x333b94['where']})[_0x0c90('0x22')](function(_0x420ada){_0x39dc05[_0x0c90('0x55')]=_0x420ada;if(_0x1e7c9d[_0x0c90('0x47')][_0x0c90('0x56')]){_0x333b94['include']=[{'all':!![]}];}return db[_0x0c90('0x6b')]['findAll'](_0x333b94);})[_0x0c90('0x22')](function(_0x243bf1){_0x39dc05[_0x0c90('0x59')]=_0x243bf1;return _0x39dc05;});}})[_0x0c90('0x22')](respondWithFilteredResult(_0x461a6d,_0x333b94))[_0x0c90('0x5a')](handleError(_0x461a6d,null));};exports[_0x0c90('0x6c')]=function(_0x38a375,_0x5c78b7,_0x5f32ed){return db[_0x0c90('0x41')][_0x0c90('0x61')]({'where':{'id':_0x38a375[_0x0c90('0x5c')]['id']}})[_0x0c90('0x22')](handleEntityNotFound(_0x5c78b7,null))[_0x0c90('0x22')](function(_0x2f9335){if(_0x2f9335){return _0x2f9335[_0x0c90('0x6c')](_0x38a375[_0x0c90('0x47')]['ids']);}})[_0x0c90('0x22')](respondWithStatusCode(_0x5c78b7,null))['catch'](handleError(_0x5c78b7,null));};exports[_0x0c90('0x67')]=function(_0x31dfbe,_0x406886){var _0x14f71e={'name':_0x31dfbe[_0x0c90('0x62')][_0x0c90('0x3b')],'key':_0x31dfbe[_0x0c90('0x62')]['key'],'email':_0x31dfbe['body'][_0x0c90('0x6d')],'ListId':_0x31dfbe['body'][_0x0c90('0x6e')],'active':!_[_0x0c90('0x6f')](_0x31dfbe[_0x0c90('0x62')]['active'])?_0x31dfbe[_0x0c90('0x62')][_0x0c90('0x70')]:!![],'description':_0x31dfbe[_0x0c90('0x62')][_0x0c90('0x71')]||null,'Imap':{},'Smtp':{}};if(_[_0x0c90('0x6f')](_0x31dfbe['body']['cservice'])){if(_0x31dfbe[_0x0c90('0x62')][_0x0c90('0x72')]){_0x14f71e[_0x0c90('0x3e')][_0x0c90('0x73')]=_0x14f71e[_0x0c90('0x5d')][_0x0c90('0x73')]=_0x31dfbe['body'][_0x0c90('0x74')];_0x14f71e[_0x0c90('0x3e')][_0x0c90('0x75')]=_0x14f71e[_0x0c90('0x5d')]['pass']=_0x31dfbe['body'][_0x0c90('0x76')];}else{_0x14f71e[_0x0c90('0x3e')]['authentication']=_0x14f71e[_0x0c90('0x5d')][_0x0c90('0x77')]=![];}_0x14f71e[_0x0c90('0x3e')][_0x0c90('0x78')]=_0x31dfbe[_0x0c90('0x62')]['Imap'][_0x0c90('0x78')];_0x14f71e['Imap'][_0x0c90('0x79')]=_0x31dfbe[_0x0c90('0x62')][_0x0c90('0x3e')]['port'];_0x14f71e[_0x0c90('0x5d')][_0x0c90('0x78')]=_0x31dfbe[_0x0c90('0x62')]['Smtp'][_0x0c90('0x78')];_0x14f71e['Smtp']['port']=_0x31dfbe[_0x0c90('0x62')][_0x0c90('0x5d')]['port'];}else{_0x14f71e['Imap'][_0x0c90('0x7a')]=_0x14f71e['Smtp'][_0x0c90('0x7a')]=_0x31dfbe[_0x0c90('0x62')][_0x0c90('0x7b')];_0x14f71e[_0x0c90('0x3e')][_0x0c90('0x73')]=_0x14f71e['Smtp'][_0x0c90('0x73')]=_0x31dfbe[_0x0c90('0x62')][_0x0c90('0x74')];_0x14f71e[_0x0c90('0x3e')][_0x0c90('0x75')]=_0x14f71e[_0x0c90('0x5d')][_0x0c90('0x7c')]=_0x31dfbe[_0x0c90('0x62')][_0x0c90('0x76')];}return db[_0x0c90('0x41')]['create'](_0x14f71e,{'include':[{'model':db[_0x0c90('0x3f')],'as':'Smtp'},{'model':db[_0x0c90('0x3d')],'as':_0x0c90('0x3e')}]})[_0x0c90('0x22')](function(_0x565971){var _0x247146=_0x31dfbe['user'][_0x0c90('0x38')]({'plain':!![]});if(!_0x247146)throw new Error(_0x0c90('0x7d'));if(_0x247146[_0x0c90('0x7e')]===_0x0c90('0x73')){var _0x44a096=_0x565971[_0x0c90('0x38')]({'plain':!![]});return db[_0x0c90('0x7f')][_0x0c90('0x61')]({'where':{'name':_0x0c90('0x39'),'userProfileId':_0x247146[_0x0c90('0x80')]},'raw':!![]})['then'](function(_0x2da00e){if(_0x2da00e&&_0x2da00e[_0x0c90('0x81')]===0x0){return db[_0x0c90('0x82')]['create']({'name':_0x44a096['name'],'resourceId':_0x44a096['id'],'type':_0x2da00e[_0x0c90('0x3b')],'sectionId':_0x2da00e['id']},{})[_0x0c90('0x22')](function(){return _0x565971;});}else{return _0x565971;}})['catch'](function(_0x5c96d0){logger[_0x0c90('0x28')](_0x0c90('0x83'),_0x5c96d0);throw _0x5c96d0;});}return _0x565971;})['then'](respondWithResult(_0x406886,0xc9))[_0x0c90('0x5a')](handleError(_0x406886,null));};exports[_0x0c90('0x84')]=function(_0x5ed162,_0x358562,_0x278514){return db['MailAccount'][_0x0c90('0x85')]({'where':{'id':_0x5ed162['params']['id']}})['then'](handleEntityNotFound(_0x358562,null))[_0x0c90('0x22')](function(_0x324cee){if(_0x324cee){return _0x324cee['getImap']();}return null;})['then'](respondWithResult(_0x358562,null))[_0x0c90('0x5a')](handleError(_0x358562,null));};exports[_0x0c90('0x86')]=function(_0x7df23d,_0x1f0263,_0x2d4145){if(_0x7df23d['body']['id']){delete _0x7df23d[_0x0c90('0x62')]['id'];}return db[_0x0c90('0x41')][_0x0c90('0x61')]({'where':{'id':_0x7df23d[_0x0c90('0x5c')]['id']}})[_0x0c90('0x22')](handleEntityNotFound(_0x1f0263,null))[_0x0c90('0x22')](function(_0x585b5a){if(_0x585b5a){_0x7df23d[_0x0c90('0x62')]['MailAccountId']=_0x585b5a['id'];return db['MailServerIn']['create'](_0x7df23d[_0x0c90('0x62')]);}})[_0x0c90('0x22')](respondWithResult(_0x1f0263,null))['catch'](handleError(_0x1f0263,null));};exports[_0x0c90('0x87')]=function(_0x5b9f03,_0x48769d,_0x22b3df){return db[_0x0c90('0x41')][_0x0c90('0x85')]({'where':{'id':_0x5b9f03[_0x0c90('0x5c')]['id']}})[_0x0c90('0x22')](handleEntityNotFound(_0x48769d,null))[_0x0c90('0x22')](function(_0xf2826b){if(_0xf2826b){return _0xf2826b['setImap'](null);}return null;})[_0x0c90('0x22')](respondWithStatusCode(_0x48769d,null))[_0x0c90('0x5a')](handleError(_0x48769d,null));};exports[_0x0c90('0x88')]=function(_0x3817a4,_0x1b4600,_0x22fa48){return db[_0x0c90('0x41')][_0x0c90('0x85')]({'where':{'id':_0x3817a4[_0x0c90('0x5c')]['id']}})[_0x0c90('0x22')](handleEntityNotFound(_0x1b4600,null))[_0x0c90('0x22')](function(_0x438892){if(_0x438892){return _0x438892[_0x0c90('0x88')]();}return null;})[_0x0c90('0x22')](respondWithResult(_0x1b4600,null))['catch'](handleError(_0x1b4600,null));};exports[_0x0c90('0x89')]=function(_0x35ccc3,_0xbcde73,_0x334ba9){if(_0x35ccc3[_0x0c90('0x62')]['id']){delete _0x35ccc3[_0x0c90('0x62')]['id'];}return db['MailAccount'][_0x0c90('0x61')]({'where':{'id':_0x35ccc3[_0x0c90('0x5c')]['id']}})['then'](handleEntityNotFound(_0xbcde73,null))[_0x0c90('0x22')](function(_0x36a578){if(_0x36a578){_0x35ccc3[_0x0c90('0x62')]['MailAccountId']=_0x36a578['id'];return db[_0x0c90('0x3f')][_0x0c90('0x67')](_0x35ccc3[_0x0c90('0x62')]);}})[_0x0c90('0x22')](respondWithResult(_0xbcde73,null))['catch'](handleError(_0xbcde73,null));};exports[_0x0c90('0x8a')]=function(_0x5dacaa,_0x2168c9,_0x56f86c){return db[_0x0c90('0x41')][_0x0c90('0x85')]({'where':{'id':_0x5dacaa[_0x0c90('0x5c')]['id']}})[_0x0c90('0x22')](handleEntityNotFound(_0x2168c9,null))[_0x0c90('0x22')](function(_0x20f631){if(_0x20f631){return _0x20f631[_0x0c90('0x8b')](null);}return null;})[_0x0c90('0x22')](respondWithStatusCode(_0x2168c9,null))[_0x0c90('0x5a')](handleError(_0x2168c9,null));};exports[_0x0c90('0x8c')]=function(_0x40f3b8,_0x276b98,_0x461206){return db[_0x0c90('0x8d')][_0x0c90('0x61')]({'where':{'id':_0x40f3b8[_0x0c90('0x5c')]['id']}})['then'](handleEntityNotFound(_0x276b98,null))[_0x0c90('0x22')](function(_0x52559f){if(_0x52559f){return _0x52559f[_0x0c90('0x8c')](_0x40f3b8['body'][_0x0c90('0x8e')],_[_0x0c90('0x8f')](_0x40f3b8[_0x0c90('0x62')],[_0x0c90('0x8e'),'id'])||{});}})['then'](respondWithResult(_0x276b98,null))['catch'](handleError(_0x276b98,null));};exports[_0x0c90('0x90')]=function(_0x24b1a2,_0x1efaa3,_0x1a088a){var _0x3c92bd={'raw':![],'where':{}};var _0xc6aa96={};var _0x29c4dc={'count':0x0,'rows':[]};return db[_0x0c90('0x41')][_0x0c90('0x85')]({'where':{'id':_0x24b1a2[_0x0c90('0x5c')]['id']}})['then'](handleEntityNotFound(_0x1efaa3,null))[_0x0c90('0x22')](function(_0x8110ea){if(_0x8110ea){_0xc6aa96[_0x0c90('0x44')]=_[_0x0c90('0x46')](db['MailInteraction'][_0x0c90('0x42')]);_0xc6aa96[_0x0c90('0x47')]=_['keys'](_0x24b1a2['query']);_0xc6aa96['filters']=_[_0x0c90('0x49')](_0xc6aa96[_0x0c90('0x44')],_0xc6aa96[_0x0c90('0x47')]);_0x3c92bd[_0x0c90('0x4b')]=_[_0x0c90('0x49')](_0xc6aa96['model'],qs[_0x0c90('0x4a')](_0x24b1a2[_0x0c90('0x47')][_0x0c90('0x4a')]));_0x3c92bd[_0x0c90('0x4b')]=_0x3c92bd[_0x0c90('0x4b')][_0x0c90('0x5f')]?_0x3c92bd['attributes']:_0xc6aa96[_0x0c90('0x44')];if(!_0x24b1a2[_0x0c90('0x47')]['hasOwnProperty'](_0x0c90('0x4d'))){_0x3c92bd[_0x0c90('0x32')]=qs[_0x0c90('0x32')](_0x24b1a2[_0x0c90('0x47')][_0x0c90('0x32')]);_0x3c92bd[_0x0c90('0x30')]=qs[_0x0c90('0x30')](_0x24b1a2['query'][_0x0c90('0x30')]);}_0x3c92bd['order']=qs['sort'](_0x24b1a2[_0x0c90('0x47')][_0x0c90('0x4f')]);_0x3c92bd['where']=qs[_0x0c90('0x48')](_[_0x0c90('0x50')](_0x24b1a2[_0x0c90('0x47')],_0xc6aa96[_0x0c90('0x48')]));_0x3c92bd[_0x0c90('0x52')][_0x0c90('0x65')]=_0x8110ea['id'];if(_0x24b1a2['query']['filter']){_0x3c92bd[_0x0c90('0x52')]=_[_0x0c90('0x53')](_0x3c92bd['where'],{'$or':_[_0x0c90('0x45')](_0x3c92bd['attributes'],function(_0x257eb5){var _0x3c5eec={};_0x3c5eec[_0x257eb5]={'$like':'%'+_0x24b1a2[_0x0c90('0x47')][_0x0c90('0x51')]+'%'};return _0x3c5eec;})});}_0x3c92bd=_[_0x0c90('0x53')]({},_0x3c92bd,_0x24b1a2[_0x0c90('0x60')]);return db[_0x0c90('0x8d')]['count']({'where':_0x3c92bd[_0x0c90('0x52')]})['then'](function(_0x12fadb){_0x29c4dc[_0x0c90('0x55')]=_0x12fadb;if(_0x24b1a2[_0x0c90('0x47')][_0x0c90('0x56')]){_0x3c92bd[_0x0c90('0x57')]=[{'model':db[_0x0c90('0x91')],'as':_0x0c90('0x92'),'required':![]},{'model':db['User'],'as':'Owner','attributes':[_0x0c90('0x3b'),_0x0c90('0x93'),_0x0c90('0x94')],'required':![]},{'model':db[_0x0c90('0x95')],'as':'Tags','attributes':['id',_0x0c90('0x3b'),_0x0c90('0x96')],'where':_0x24b1a2[_0x0c90('0x47')][_0x0c90('0x97')]?{'id':_0x24b1a2['query'][_0x0c90('0x97')]}:undefined,'required':_0x24b1a2[_0x0c90('0x47')][_0x0c90('0x97')]?!![]:![]}];}return db[_0x0c90('0x8d')]['findAll'](_0x3c92bd);})[_0x0c90('0x22')](function(_0x40ecef){_0x29c4dc[_0x0c90('0x59')]=_0x40ecef;return _0x29c4dc;});}})[_0x0c90('0x22')](respondWithFilteredResult(_0x1efaa3,_0x3c92bd))[_0x0c90('0x5a')](handleError(_0x1efaa3,null));};exports[_0x0c90('0x98')]=function addApplications(_0x58bcde,_0x2ea86f){var _0x331302=_0x58bcde['params']['id'];var _0x4b9c93=_0x58bcde[_0x0c90('0x62')];var _0x486db2=0xc8;var _0x3b74d8=null;return db[_0x0c90('0x99')][_0x0c90('0x9a')]({'isolationLevel':db[_0x0c90('0x99')][_0x0c90('0x9b')][_0x0c90('0x9c')][_0x0c90('0x9d')]},function(_0x306b6e){return db[_0x0c90('0x41')]['findOne']({'where':{'id':_0x331302},'transaction':_0x306b6e})['then'](function(_0x2b227e){if(_0x2b227e){return db[_0x0c90('0x9e')][_0x0c90('0x37')]({'where':{'MailAccountId':_0x331302},'transaction':_0x306b6e})[_0x0c90('0x22')](function(){var _0x2fbcb2=_[_0x0c90('0x45')](_0x4b9c93,function(_0x8c9595){_0x8c9595[_0x0c90('0x65')]=_0x331302;return _0x8c9595;});return db[_0x0c90('0x9e')][_0x0c90('0x9f')](_0x2fbcb2,{'transaction':_0x306b6e});});}else{_0x486db2=0x194;_0x3b74d8=[];}});})[_0x0c90('0x22')](function(){if(_0x486db2!==0x194){return db[_0x0c90('0x9e')]['findAndCountAll']({'where':{'MailAccountId':_0x331302},'order':'priority'})[_0x0c90('0x22')](function(_0x346582){_0x3b74d8=_0x346582;});}})[_0x0c90('0x5a')](function(_0x4ebbfd){_0x486db2=0x1f4;logger['error'](_0x4ebbfd[_0x0c90('0x3a')]);if(_0x4ebbfd[_0x0c90('0x3b')]){delete _0x4ebbfd['name'];}_0x3b74d8=_0x4ebbfd;})[_0x0c90('0xa0')](function(){if(_0x3b74d8===null){_0x2ea86f[_0x0c90('0x2c')](_0x486db2);}else{if(_0x486db2===0x1f4){_0x2ea86f[_0x0c90('0x2d')](_0x486db2)[_0x0c90('0xa1')](_0x3b74d8);}else{_0x2ea86f[_0x0c90('0x2d')](_0x486db2)[_0x0c90('0x2f')](_0x3b74d8);}}});};exports[_0x0c90('0xa2')]=function(_0x1c0754,_0x38f615,_0x376ec0){var _0x2ac2d8={};var _0x14dd28={};var _0x19d78b;var _0x18199b;return db[_0x0c90('0x41')][_0x0c90('0x85')]({'where':{'id':_0x1c0754[_0x0c90('0x5c')]['id']}})[_0x0c90('0x22')](handleEntityNotFound(_0x38f615,null))['then'](function(_0x27a885){if(_0x27a885){_0x19d78b=_0x27a885;_0x14dd28['model']=_[_0x0c90('0x46')](db[_0x0c90('0x9e')]['rawAttributes']);_0x14dd28['query']=_[_0x0c90('0x46')](_0x1c0754[_0x0c90('0x47')]);_0x14dd28[_0x0c90('0x48')]=_[_0x0c90('0x49')](_0x14dd28[_0x0c90('0x44')],_0x14dd28[_0x0c90('0x47')]);_0x2ac2d8[_0x0c90('0x4b')]=_[_0x0c90('0x49')](_0x14dd28[_0x0c90('0x44')],qs['fields'](_0x1c0754[_0x0c90('0x47')][_0x0c90('0x4a')]));_0x2ac2d8[_0x0c90('0x4b')]=_0x2ac2d8[_0x0c90('0x4b')][_0x0c90('0x5f')]?_0x2ac2d8[_0x0c90('0x4b')]:_0x14dd28[_0x0c90('0x44')];_0x2ac2d8['order']=qs[_0x0c90('0x4f')](_0x1c0754[_0x0c90('0x47')][_0x0c90('0x4f')]);_0x2ac2d8[_0x0c90('0x52')]=qs[_0x0c90('0x48')](_['pick'](_0x1c0754[_0x0c90('0x47')],_0x14dd28['filters']));if(_0x1c0754[_0x0c90('0x47')]['filter']){_0x2ac2d8[_0x0c90('0x52')]=_[_0x0c90('0x53')](_0x2ac2d8[_0x0c90('0x52')],{'$or':_[_0x0c90('0x45')](_0x2ac2d8[_0x0c90('0x4b')],function(_0xd926fd){var _0x63813a={};_0x63813a[_0xd926fd]={'$like':'%'+_0x1c0754[_0x0c90('0x47')]['filter']+'%'};return _0x63813a;})});}_0x2ac2d8=_[_0x0c90('0x53')]({},_0x2ac2d8,_0x1c0754[_0x0c90('0x60')]);return _0x19d78b[_0x0c90('0xa2')](_0x2ac2d8);}})[_0x0c90('0x22')](function(_0x32db19){if(_0x32db19){_0x18199b=_0x32db19[_0x0c90('0x5f')];if(!_0x1c0754['query'][_0x0c90('0x4c')](_0x0c90('0x4d'))){_0x2ac2d8['limit']=qs[_0x0c90('0x32')](_0x1c0754[_0x0c90('0x47')][_0x0c90('0x32')]);_0x2ac2d8[_0x0c90('0x30')]=qs[_0x0c90('0x30')](_0x1c0754[_0x0c90('0x47')][_0x0c90('0x30')]);}return _0x19d78b['getApplications'](_0x2ac2d8);}})[_0x0c90('0x22')](function(_0x517a13){if(_0x517a13){return _0x517a13?{'count':_0x18199b,'rows':_0x517a13}:null;}})[_0x0c90('0x22')](respondWithResult(_0x38f615,null))[_0x0c90('0x5a')](handleError(_0x38f615,null));};exports[_0x0c90('0xa3')]=function(_0x59e54f,_0xe517b6,_0x2b10f4){var _0x51d142={'raw':!![],'where':{}};var _0x22036f={};var _0x49d7e2={'count':0x0,'rows':[]};return db['MailAccount'][_0x0c90('0x85')]({'where':{'id':_0x59e54f[_0x0c90('0x5c')]['id']}})[_0x0c90('0x22')](handleEntityNotFound(_0xe517b6,null))[_0x0c90('0x22')](function(_0x59b708){if(_0x59b708){_0x22036f[_0x0c90('0x44')]=_['keys'](db[_0x0c90('0xa4')][_0x0c90('0x42')]);_0x22036f['query']=_['keys'](_0x59e54f[_0x0c90('0x47')]);_0x22036f['filters']=_['intersection'](_0x22036f[_0x0c90('0x44')],_0x22036f[_0x0c90('0x47')]);_0x51d142[_0x0c90('0x4b')]=_[_0x0c90('0x49')](_0x22036f[_0x0c90('0x44')],qs[_0x0c90('0x4a')](_0x59e54f[_0x0c90('0x47')][_0x0c90('0x4a')]));_0x51d142[_0x0c90('0x4b')]=_0x51d142[_0x0c90('0x4b')][_0x0c90('0x5f')]?_0x51d142['attributes']:_0x22036f[_0x0c90('0x44')];if(!_0x59e54f[_0x0c90('0x47')][_0x0c90('0x4c')]('nolimit')){_0x51d142[_0x0c90('0x32')]=qs[_0x0c90('0x32')](_0x59e54f['query'][_0x0c90('0x32')]);_0x51d142['offset']=qs[_0x0c90('0x30')](_0x59e54f[_0x0c90('0x47')][_0x0c90('0x30')]);}_0x51d142[_0x0c90('0x4e')]=qs[_0x0c90('0x4f')](_0x59e54f[_0x0c90('0x47')]['sort']);_0x51d142[_0x0c90('0x52')]=qs[_0x0c90('0x48')](_['pick'](_0x59e54f[_0x0c90('0x47')],_0x22036f[_0x0c90('0x48')]));_0x51d142[_0x0c90('0x52')][_0x0c90('0x65')]=_0x59b708['id'];if(_0x59e54f[_0x0c90('0x47')][_0x0c90('0x51')]){_0x51d142[_0x0c90('0x52')]=_[_0x0c90('0x53')](_0x51d142[_0x0c90('0x52')],{'$or':_[_0x0c90('0x45')](_0x51d142[_0x0c90('0x4b')],function(_0x4848e4){var _0x5196d9={};_0x5196d9[_0x4848e4]={'$like':'%'+_0x59e54f['query']['filter']+'%'};return _0x5196d9;})});}if(_0x59e54f[_0x0c90('0x47')]['$gte']){var _0x146693=_0x59e54f[_0x0c90('0x47')][_0x0c90('0xa5')][_0x0c90('0xa6')](',');var _0x1926ae={};_0x1926ae[_0x146693[0x0]]={'$gte':moment(_0x146693[0x1])[_0x0c90('0xa7')]('YYYY-MM-DD\x20HH:mm:ss')};_0x51d142[_0x0c90('0x52')]=_[_0x0c90('0x53')](_0x51d142[_0x0c90('0x52')],_0x1926ae);}_0x51d142=_['merge']({},_0x51d142,_0x59e54f[_0x0c90('0x60')]);return db[_0x0c90('0xa4')][_0x0c90('0x55')]({'where':_0x51d142[_0x0c90('0x52')]})['then'](function(_0x1977b8){_0x49d7e2['count']=_0x1977b8;if(_0x59e54f['query'][_0x0c90('0x56')]){_0x51d142[_0x0c90('0x57')]=[{'all':!![]}];}return db[_0x0c90('0xa4')][_0x0c90('0x58')](_0x51d142);})[_0x0c90('0x22')](function(_0x568f16){if(_0x59e54f[_0x0c90('0x47')][_0x0c90('0xa8')]===_0x0c90('0xa9')){for(var _0x3289e=0x0;_0x3289e<_0x568f16[_0x0c90('0x5f')];_0x3289e++){_0x568f16[_0x3289e]['body']=juice(_0x568f16[_0x3289e][_0x0c90('0x62')]);}}_0x49d7e2[_0x0c90('0x59')]=_0x568f16;return _0x49d7e2;});}})[_0x0c90('0x22')](respondWithFilteredResult(_0xe517b6,_0x51d142))[_0x0c90('0x5a')](handleError(_0xe517b6,null));};exports[_0x0c90('0xa1')]=function(_0x1a8a68,_0x935305,_0x347ae8){var _0x4abf5b,_0x4e7f1f={},_0x11a8a6;if(_0x1a8a68[_0x0c90('0x62')]['to']){_0x11a8a6=_0x1a8a68[_0x0c90('0x62')]['to'][_0x0c90('0xa6')](',')[0x0];}return db[_0x0c90('0x41')][_0x0c90('0x61')]({'where':{'id':_0x1a8a68['params']['id']},'include':[{'model':db[_0x0c90('0xaa')],'as':_0x0c90('0xab'),'include':[{'model':db['CmContact'],'as':_0x0c90('0xac'),'where':{'email':_0x11a8a6},'limit':0x1,'order':[[_0x0c90('0xad'),'DESC']]}]},{'model':db[_0x0c90('0x3f')],'as':'Smtp','raw':!![]}]})['then'](handleEntityNotFound(_0x935305,null))['then'](function(_0x443baf){if(_0x443baf){_0x4abf5b=_0x443baf;if(_0x443baf[_0x0c90('0x5d')]){if(_[_0x0c90('0x6f')](_0x1a8a68[_0x0c90('0x62')][_0x0c90('0xae')])){_0x1a8a68[_0x0c90('0x62')][_0x0c90('0xae')]=util[_0x0c90('0xa7')](_0x0c90('0xaf'),_0x443baf[_0x0c90('0x3b')],_0x443baf['email']||_0x443baf[_0x0c90('0x5d')][_0x0c90('0x73')]);}if(_0x1a8a68['body'][_0x0c90('0xb0')]&&_0x1a8a68['body'][_0x0c90('0xb0')]['length']){for(var _0x51d901=0x0;_0x51d901<_0x1a8a68[_0x0c90('0x62')]['attachments']['length'];_0x51d901+=0x1){_0x1a8a68[_0x0c90('0x62')][_0x0c90('0xb0')][_0x51d901]={'filename':_0x1a8a68[_0x0c90('0x62')][_0x0c90('0xb0')][_0x51d901][_0x0c90('0x3b')],'path':path[_0x0c90('0xb1')](config[_0x0c90('0xb2')],_0x0c90('0xb3'),_0x1a8a68['body'][_0x0c90('0xb0')][_0x51d901][_0x0c90('0xb4')])};}}var _0x10614d={'tls':{'rejectUnauthorized':![]}};if(_[_0x0c90('0x6f')](_0x443baf[_0x0c90('0x5d')]['service'])){if(_0x443baf[_0x0c90('0x5d')][_0x0c90('0x77')]){_0x10614d[_0x0c90('0xb5')]={'user':_0x443baf['Smtp'][_0x0c90('0x73')],'pass':_0x443baf[_0x0c90('0x5d')][_0x0c90('0x7c')]};}_0x10614d[_0x0c90('0x78')]=_0x443baf['Smtp']['host'];_0x10614d[_0x0c90('0x79')]=_0x443baf[_0x0c90('0x5d')][_0x0c90('0x79')];_0x10614d['secure']=_0x443baf[_0x0c90('0x5d')][_0x0c90('0xb6')];}else{_0x10614d['service']=_0x443baf[_0x0c90('0x5d')][_0x0c90('0x7a')];_0x10614d['auth']={'user':_0x443baf[_0x0c90('0x5d')]['user'],'pass':_0x443baf[_0x0c90('0x5d')][_0x0c90('0x7c')]};}return respondWithRpcPromise(_0x0c90('0xb7'),'sendMail',{'account':_0x10614d,'message':_0x1a8a68[_0x0c90('0x62')]});}else{throw new Error('List\x20not\x20found');}}})['then'](function(_0x5e9070){if(_0x5e9070){_0x4e7f1f=_0x5e9070;if(_0x4abf5b['List']){if(_0x4abf5b[_0x0c90('0xab')]['Contacts']['length']){return _0x4abf5b[_0x0c90('0xab')][_0x0c90('0xac')][0x0];}else{return db['CmContact']['create'](_['defaults'](_0x1a8a68[_0x0c90('0x62')],{'firstName':_0x1a8a68[_0x0c90('0x62')]['to'],'email':_0x1a8a68[_0x0c90('0x62')]['to'],'phone':_0x1a8a68[_0x0c90('0x62')]['to'],'ListId':_0x4abf5b[_0x0c90('0x6e')]}));}}else{throw new Error(_0x0c90('0xb8'));}}})[_0x0c90('0x22')](function(_0x45ae96){if(_0x45ae96){var _0x20f5c4={'UserId':_0x1a8a68[_0x0c90('0x73')]['id'],'ContactId':_0x45ae96['id'],'MailAccountId':_0x4abf5b['id'],'inReplyTo':_0x4e7f1f[_0x0c90('0xb9')],'to':_0x1a8a68['body'][_0x0c90('0xae')],'cc':_0x1a8a68['body']['cc'],'subject':_0x1a8a68[_0x0c90('0x62')][_0x0c90('0xba')],'attach':_0x1a8a68[_0x0c90('0x62')][_0x0c90('0xbb')],'firstMsgDirection':_0x0c90('0xbc'),'lastMsgAt':moment()[_0x0c90('0xa7')](_0x0c90('0xbd')),'lastMsgDirection':'out','Messages':[_[_0x0c90('0x53')](_0x1a8a68[_0x0c90('0x62')],{'messageId':_0x4e7f1f['messageId'],'sentAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'read':!![],'MailAccountId':_0x4abf5b['id'],'UserId':_0x1a8a68[_0x0c90('0x73')]['id'],'ContactId':_0x45ae96['id']})]};if(_0x1a8a68[_0x0c90('0x62')][_0x0c90('0xbe')]){_0x20f5c4=_[_0x0c90('0x53')](_0x20f5c4,_0x1a8a68[_0x0c90('0x62')][_0x0c90('0xbe')]);}return db['MailInteraction']['create'](_0x20f5c4,{'include':[{'model':db['MailMessage'],'as':'Messages'}]});}})[_0x0c90('0x22')](respondWithResult(_0x935305,null))['catch'](handleError(_0x935305,null));};exports[_0x0c90('0xbf')]=function(_0x5649ec,_0x2fb3b7,_0x325732){return db[_0x0c90('0x41')][_0x0c90('0x61')]({'where':{'id':_0x5649ec[_0x0c90('0x5c')]['id']},'include':[{'model':db['MailServerOut'],'as':_0x0c90('0x5d'),'raw':!![]}]})[_0x0c90('0x22')](handleEntityNotFound(_0x2fb3b7,null))['then'](function(_0x29bf43){if(_0x29bf43&&_0x29bf43[_0x0c90('0x5d')]){var _0x3c7671={'id':_0x29bf43['id'],'tls':{'rejectUnauthorized':![]}};if(_0x29bf43[_0x0c90('0x5d')][_0x0c90('0x7a')]){_0x3c7671[_0x0c90('0x7a')]=_0x29bf43['Smtp'][_0x0c90('0x7a')];}else{_0x3c7671[_0x0c90('0x78')]=_0x29bf43[_0x0c90('0x5d')][_0x0c90('0x78')];_0x3c7671[_0x0c90('0x79')]=_0x29bf43[_0x0c90('0x5d')][_0x0c90('0x79')];_0x3c7671['secure']=_0x29bf43[_0x0c90('0x5d')]['secure'];}if(_0x29bf43[_0x0c90('0x5d')]['authentication']){_0x3c7671['auth']={'user':_0x29bf43[_0x0c90('0x5d')]['user'],'pass':_0x29bf43[_0x0c90('0x5d')][_0x0c90('0x7c')]};}return respondWithRpcPromise(_0x0c90('0xc0'),'verifySmtp',{'account':_0x3c7671});}})[_0x0c90('0x22')](respondWithResult(_0x2fb3b7,null))[_0x0c90('0x5a')](handleError(_0x2fb3b7,null));};exports[_0x0c90('0x37')]=function(_0x374104,_0x20093a){return db['MailAccount'][_0x0c90('0x61')]({'where':{'id':_0x374104[_0x0c90('0x5c')]['id']}})[_0x0c90('0x22')](handleEntityNotFound(_0x20093a,null))[_0x0c90('0x22')](function(_0x40647e){if(_0x40647e&&_0x40647e[_0x0c90('0x7a')]){throw new db['Sequelize'][(_0x0c90('0xc1'))](_0x0c90('0xc2'));}return _0x40647e;})[_0x0c90('0x22')](removeEntity(_0x20093a,null))['catch'](handleError(_0x20093a,null));};exports[_0x0c90('0xc3')]=function(_0x5c3564,_0x4ca70e,_0x3d9922){return db[_0x0c90('0x41')][_0x0c90('0x61')]({'where':{'id':_0x5c3564['params']['id']}})['then'](handleEntityNotFound(_0x4ca70e,null))['then'](function(_0x189804){if(_0x189804){return _0x189804[_0x0c90('0xc3')](_0x5c3564[_0x0c90('0x62')][_0x0c90('0x8e')],_[_0x0c90('0x8f')](_0x5c3564['body'],[_0x0c90('0x8e'),'id'])||{})[_0x0c90('0xc4')](function(_0x1cd0c4){for(var _0x52babe=0x0;_0x52babe<_0x5c3564[_0x0c90('0x62')][_0x0c90('0x8e')][_0x0c90('0x5f')];_0x52babe+=0x1){socket[_0x0c90('0xc5')](_0x0c90('0xc6'),{'UserId':Number(_0x5c3564[_0x0c90('0x62')][_0x0c90('0x8e')][_0x52babe]),'MailAccountId':Number(_0x5c3564['params']['id'])});}return _0x1cd0c4;});}})[_0x0c90('0x22')](respondWithResult(_0x4ca70e,null))[_0x0c90('0x5a')](handleError(_0x4ca70e,null));};exports[_0x0c90('0xc7')]=function(_0x229a92,_0x25b13d,_0x140fd4){return db[_0x0c90('0x41')]['find']({'where':{'id':_0x229a92[_0x0c90('0x5c')]['id']}})['then'](handleEntityNotFound(_0x25b13d,null))['then'](function(_0x345ac9){if(_0x345ac9){return _0x345ac9[_0x0c90('0xc7')](_0x229a92['query']['ids'])[_0x0c90('0x22')](function(){if(_[_0x0c90('0xc8')](_0x229a92[_0x0c90('0x47')][_0x0c90('0x8e')])){for(var _0x5ecced=0x0;_0x5ecced<_0x229a92[_0x0c90('0x47')][_0x0c90('0x8e')][_0x0c90('0x5f')];_0x5ecced+=0x1){socket[_0x0c90('0xc5')]('userMailAccount:remove',{'UserId':Number(_0x229a92[_0x0c90('0x47')]['ids'][_0x5ecced]),'MailAccountId':Number(_0x229a92[_0x0c90('0x5c')]['id'])});}}else{socket[_0x0c90('0xc5')](_0x0c90('0xc9'),{'UserId':Number(_0x229a92[_0x0c90('0x47')]['ids']),'MailAccountId':Number(_0x229a92[_0x0c90('0x5c')]['id'])});}});}})[_0x0c90('0x22')](respondWithStatusCode(_0x25b13d,null))['catch'](handleError(_0x25b13d,null));};exports[_0x0c90('0xca')]=function(_0x38d5d0,_0x151fe5,_0x838477){var _0x8274a8={};var _0x3a4c6b={};var _0x4dc644;var _0x3096f5;return db['MailAccount'][_0x0c90('0x85')]({'where':{'id':_0x38d5d0[_0x0c90('0x5c')]['id']}})[_0x0c90('0x22')](handleEntityNotFound(_0x151fe5,null))[_0x0c90('0x22')](function(_0xee38a8){if(_0xee38a8){_0x4dc644=_0xee38a8;_0x3a4c6b[_0x0c90('0x44')]=_[_0x0c90('0x46')](db[_0x0c90('0xcb')][_0x0c90('0x42')]);_0x3a4c6b[_0x0c90('0x47')]=_[_0x0c90('0x46')](_0x38d5d0[_0x0c90('0x47')]);_0x3a4c6b['filters']=_[_0x0c90('0x49')](_0x3a4c6b[_0x0c90('0x44')],_0x3a4c6b[_0x0c90('0x47')]);_0x8274a8[_0x0c90('0x4b')]=_[_0x0c90('0x49')](_0x3a4c6b[_0x0c90('0x44')],qs[_0x0c90('0x4a')](_0x38d5d0[_0x0c90('0x47')][_0x0c90('0x4a')]));_0x8274a8[_0x0c90('0x4b')]=_0x8274a8[_0x0c90('0x4b')][_0x0c90('0x5f')]?_0x8274a8[_0x0c90('0x4b')]:_0x3a4c6b[_0x0c90('0x44')];_0x8274a8['order']=qs[_0x0c90('0x4f')](_0x38d5d0[_0x0c90('0x47')]['sort']);_0x8274a8['where']=qs[_0x0c90('0x48')](_[_0x0c90('0x50')](_0x38d5d0['query'],_0x3a4c6b[_0x0c90('0x48')]));if(_0x38d5d0[_0x0c90('0x47')][_0x0c90('0x51')]){_0x8274a8[_0x0c90('0x52')]=_['merge'](_0x8274a8[_0x0c90('0x52')],{'$or':_[_0x0c90('0x45')](_0x8274a8[_0x0c90('0x4b')],function(_0x4d8022){var _0x41b753={};_0x41b753[_0x4d8022]={'$like':'%'+_0x38d5d0['query']['filter']+'%'};return _0x41b753;})});}_0x8274a8=_[_0x0c90('0x53')]({},_0x8274a8,_0x38d5d0[_0x0c90('0x60')]);return _0x4dc644[_0x0c90('0xca')](_0x8274a8);}})['then'](function(_0x262f43){if(_0x262f43){_0x3096f5=_0x262f43[_0x0c90('0x5f')];if(!_0x38d5d0[_0x0c90('0x47')][_0x0c90('0x4c')](_0x0c90('0x4d'))){_0x8274a8['limit']=qs[_0x0c90('0x32')](_0x38d5d0['query'][_0x0c90('0x32')]);_0x8274a8[_0x0c90('0x30')]=qs[_0x0c90('0x30')](_0x38d5d0[_0x0c90('0x47')][_0x0c90('0x30')]);}return _0x4dc644[_0x0c90('0xca')](_0x8274a8);}})[_0x0c90('0x22')](function(_0x230789){if(_0x230789){return _0x230789?{'count':_0x3096f5,'rows':_0x230789}:null;}})[_0x0c90('0x22')](respondWithResult(_0x151fe5,null))[_0x0c90('0x5a')](handleError(_0x151fe5,null));};
\ No newline at end of file
index 5edd798..3aba7c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a38=['events','../../mysqldb','MailAccount','remove','emit','hasOwnProperty','hook','exports'];(function(_0x3ef984,_0x3f5981){var _0x578b03=function(_0x112d2f){while(--_0x112d2f){_0x3ef984['push'](_0x3ef984['shift']());}};_0x578b03(++_0x3f5981);}(_0x1a38,0xb0));var _0x81a3=function(_0x11ca63,_0xea9f9c){_0x11ca63=_0x11ca63-0x0;var _0x41f1f6=_0x1a38[_0x11ca63];return _0x41f1f6;};'use strict';var EventEmitter=require(_0x81a3('0x0'));var MailAccount=require(_0x81a3('0x1'))['db'][_0x81a3('0x2')];var MailAccountEvents=new EventEmitter();MailAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x81a3('0x3')};function emitEvent(_0x2402ba){return function(_0x2faf46,_0x28fd86,_0x33a486){MailAccountEvents[_0x81a3('0x4')](_0x2402ba+':'+_0x2faf46['id'],_0x2faf46);MailAccountEvents[_0x81a3('0x4')](_0x2402ba,_0x2faf46);_0x33a486(null);};}for(var e in events){if(events[_0x81a3('0x5')](e)){var event=events[e];MailAccount[_0x81a3('0x6')](e,emitEvent(event));}}module[_0x81a3('0x7')]=MailAccountEvents;
\ No newline at end of file
+var _0x65ec=['remove','emit','hasOwnProperty','hook','events','../../mysqldb','MailAccount','save'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x65ec,0x16c));var _0xc65e=function(_0xbb0177,_0xa0f4c4){_0xbb0177=_0xbb0177-0x0;var _0x4a1699=_0x65ec[_0xbb0177];return _0x4a1699;};'use strict';var EventEmitter=require(_0xc65e('0x0'));var MailAccount=require(_0xc65e('0x1'))['db'][_0xc65e('0x2')];var MailAccountEvents=new EventEmitter();MailAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xc65e('0x3'),'afterUpdate':'update','afterDestroy':_0xc65e('0x4')};function emitEvent(_0x345682){return function(_0x2b622c,_0x239f85,_0x134a76){MailAccountEvents[_0xc65e('0x5')](_0x345682+':'+_0x2b622c['id'],_0x2b622c);MailAccountEvents[_0xc65e('0x5')](_0x345682,_0x2b622c);_0x134a76(null);};}for(var e in events){if(events[_0xc65e('0x6')](e)){var event=events[e];MailAccount[_0xc65e('0x7')](e,emitEvent(event));}}module['exports']=MailAccountEvents;
\ No newline at end of file
index 848a273..c0c94fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb77c=['request-promise','path','./mailAccount.attributes','exports','define','mail_accounts','lodash','util','api','moment','bluebird'];(function(_0x12068c,_0x32c65f){var _0x4290cb=function(_0x350739){while(--_0x350739){_0x12068c['push'](_0x12068c['shift']());}};_0x4290cb(++_0x32c65f);}(_0xb77c,0x74));var _0xcb77=function(_0x40220a,_0x22feb1){_0x40220a=_0x40220a-0x0;var _0x3903cc=_0xb77c[_0x40220a];return _0x3903cc;};'use strict';var _=require(_0xcb77('0x0'));var util=require(_0xcb77('0x1'));var logger=require('../../config/logger')(_0xcb77('0x2'));var moment=require(_0xcb77('0x3'));var BPromise=require(_0xcb77('0x4'));var rp=require(_0xcb77('0x5'));var fs=require('fs');var path=require(_0xcb77('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xcb77('0x7'));module[_0xcb77('0x8')]=function(_0x2e3694,_0x334843){return _0x2e3694[_0xcb77('0x9')]('MailAccount',attributes,{'tableName':_0xcb77('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9112=['../../config/environment','exports','define','mail_accounts','lodash','util','moment','request-promise'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0x9112,0x14c));var _0x2911=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x9112[_0x57b54c];return _0x59cc19;};'use strict';var _=require(_0x2911('0x0'));var util=require(_0x2911('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x2911('0x2'));var BPromise=require('bluebird');var rp=require(_0x2911('0x3'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x2911('0x4'));var attributes=require('./mailAccount.attributes');module[_0x2911('0x5')]=function(_0x60f4fe,_0x4466c0){return _0x60f4fe[_0x2911('0x6')]('MailAccount',attributes,{'tableName':_0x2911('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 06e8c1f..4cf779c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa72=['difference','CmContact','rawAttributes','updatedAt','CompanyId','ListId','isNil','from','from\x20is\x20mandatory','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','account','List','Contacts','DESC','MailApplication','MailServerOut','Smtp','omit','Applications','applications','list','priority','asc','autoclose','push','length','close','create','List\x20not\x20found','contact','messageId','generate','subject','attach','format','YYYY-MM-DD\x20HH:mm:ss','MailMessage','Messages','Contact\x20not\x20found','spread','update','interaction','get','created','attachments','originTo','originCc','ChatWebsiteId','originChannel','Email','ChatOfflineMessageId','UserId','User','name','unshift','agent','waitForTheAssignedAgent','Start','startRouting','util','moment','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','redis','defaults','localhost','socket.io-emitter','./mailAccount.socket','request','info','MailAccount,\x20%s,\x20%s','request\x20sent','debug','MailAccount,\x20%s,\x20%s,\x20%s','stringify','code','error','message','catch','GetMailAccount','findAll','options','raw','where','attributes','limit','include','model','map','then','MailAccount','find','ShowMailAccount','body'];(function(_0x231330,_0x331bd9){var _0x223bed=function(_0x104b24){while(--_0x104b24){_0x231330['push'](_0x231330['shift']());}};_0x223bed(++_0x331bd9);}(_0xfa72,0x1ce));var _0x2fa7=function(_0x5a533d,_0x520521){_0x5a533d=_0x5a533d-0x0;var _0x59b6dc=_0xfa72[_0x5a533d];return _0x59b6dc;};'use strict';var _=require('lodash');var util=require(_0x2fa7('0x0'));var moment=require(_0x2fa7('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2fa7('0x2'))['db'];var utils=require(_0x2fa7('0x3'));var logger=require('../../config/logger')(_0x2fa7('0x4'));var config=require(_0x2fa7('0x5'));var jayson=require(_0x2fa7('0x6'));var client=jayson['client']['http']({'port':0x232c});config[_0x2fa7('0x7')]=_[_0x2fa7('0x8')](config[_0x2fa7('0x7')],{'host':_0x2fa7('0x9'),'port':0x18eb});var socket=require(_0x2fa7('0xa'))(new Redis(config[_0x2fa7('0x7')]));require(_0x2fa7('0xb'))['register'](socket);function respondWithRpcPromise(_0x2f5bf2,_0x308d31,_0x51611c){return new BPromise(function(_0x4ff8ea,_0x19590d){return client[_0x2fa7('0xc')](_0x2f5bf2,_0x51611c)['then'](function(_0x21498e){logger[_0x2fa7('0xd')](_0x2fa7('0xe'),_0x308d31,_0x2fa7('0xf'));logger[_0x2fa7('0x10')](_0x2fa7('0x11'),_0x308d31,_0x2fa7('0xf'),JSON[_0x2fa7('0x12')](_0x21498e));if(_0x21498e['error']){if(_0x21498e['error'][_0x2fa7('0x13')]===0x1f4){logger[_0x2fa7('0x14')](_0x2fa7('0xe'),_0x308d31,_0x21498e[_0x2fa7('0x14')][_0x2fa7('0x15')]);return _0x19590d(_0x21498e['error'][_0x2fa7('0x15')]);}logger[_0x2fa7('0x14')](_0x2fa7('0xe'),_0x308d31,_0x21498e[_0x2fa7('0x14')]['message']);return _0x4ff8ea(_0x21498e['error']['message']);}else{logger['info'](_0x2fa7('0xe'),_0x308d31,_0x2fa7('0xf'));_0x4ff8ea(_0x21498e['result'][_0x2fa7('0x15')]);}})[_0x2fa7('0x16')](function(_0x86fa22){logger[_0x2fa7('0x14')](_0x2fa7('0xe'),_0x308d31,_0x86fa22);_0x19590d(_0x86fa22);});});}exports[_0x2fa7('0x17')]=function(_0xa9ca53){var _0x11ebe6=this;return new Promise(function(_0x55253c,_0x30e240){return db['MailAccount'][_0x2fa7('0x18')]({'raw':_0xa9ca53['options']?_0xa9ca53[_0x2fa7('0x19')][_0x2fa7('0x1a')]===undefined?!![]:![]:!![],'where':_0xa9ca53[_0x2fa7('0x19')]?_0xa9ca53[_0x2fa7('0x19')][_0x2fa7('0x1b')]||null:null,'attributes':_0xa9ca53[_0x2fa7('0x19')]?_0xa9ca53['options'][_0x2fa7('0x1c')]||null:null,'limit':_0xa9ca53[_0x2fa7('0x19')]?_0xa9ca53[_0x2fa7('0x19')][_0x2fa7('0x1d')]||null:null,'include':_0xa9ca53['options']?_0xa9ca53['options'][_0x2fa7('0x1e')]?_['map'](_0xa9ca53['options']['include'],function(_0x1c0fae){return{'model':db[_0x1c0fae[_0x2fa7('0x1f')]],'as':_0x1c0fae['as'],'attributes':_0x1c0fae[_0x2fa7('0x1c')],'include':_0x1c0fae[_0x2fa7('0x1e')]?_[_0x2fa7('0x20')](_0x1c0fae[_0x2fa7('0x1e')],function(_0x742392){return{'model':db[_0x742392[_0x2fa7('0x1f')]],'as':_0x742392['as'],'attributes':_0x742392['attributes'],'include':_0x742392[_0x2fa7('0x1e')]?_[_0x2fa7('0x20')](_0x742392['include'],function(_0x1328cb){return{'model':db[_0x1328cb[_0x2fa7('0x1f')]],'as':_0x1328cb['as'],'attributes':_0x1328cb['attributes']};}):[]};}):[]};}):[]:[]})[_0x2fa7('0x21')](function(_0x42ab0d){logger[_0x2fa7('0xd')](_0x2fa7('0x17'),_0xa9ca53);logger[_0x2fa7('0x10')](_0x2fa7('0x17'),_0xa9ca53,JSON[_0x2fa7('0x12')](_0x42ab0d));_0x55253c(_0x42ab0d);})[_0x2fa7('0x16')](function(_0x24fb51){logger[_0x2fa7('0x14')](_0x2fa7('0x17'),_0x24fb51[_0x2fa7('0x15')],_0xa9ca53);_0x30e240(_0x11ebe6[_0x2fa7('0x14')](0x1f4,_0x24fb51[_0x2fa7('0x15')]));});});};exports['ShowMailAccount']=function(_0x3fe469){var _0x87c8d4=this;return new Promise(function(_0x1cc821,_0x72ec0b){return db[_0x2fa7('0x22')][_0x2fa7('0x23')]({'raw':_0x3fe469['options']?_0x3fe469[_0x2fa7('0x19')][_0x2fa7('0x1a')]===undefined?!![]:![]:!![],'where':_0x3fe469[_0x2fa7('0x19')]?_0x3fe469[_0x2fa7('0x19')][_0x2fa7('0x1b')]||null:null,'attributes':_0x3fe469['options']?_0x3fe469[_0x2fa7('0x19')][_0x2fa7('0x1c')]||null:null,'include':_0x3fe469[_0x2fa7('0x19')]?_0x3fe469['options']['include']?_[_0x2fa7('0x20')](_0x3fe469['options'][_0x2fa7('0x1e')],function(_0x28b9d6){return{'model':db[_0x28b9d6['model']],'as':_0x28b9d6['as'],'attributes':_0x28b9d6[_0x2fa7('0x1c')],'include':_0x28b9d6[_0x2fa7('0x1e')]?_[_0x2fa7('0x20')](_0x28b9d6['include'],function(_0x5813d4){return{'model':db[_0x5813d4[_0x2fa7('0x1f')]],'as':_0x5813d4['as'],'attributes':_0x5813d4['attributes'],'include':_0x5813d4['include']?_[_0x2fa7('0x20')](_0x5813d4[_0x2fa7('0x1e')],function(_0x56dacb){return{'model':db[_0x56dacb[_0x2fa7('0x1f')]],'as':_0x56dacb['as'],'attributes':_0x56dacb[_0x2fa7('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x2fa7('0x21')](function(_0x13039c){logger['info']('ShowMailAccount',_0x3fe469);logger[_0x2fa7('0x10')]('ShowMailAccount',_0x3fe469,JSON[_0x2fa7('0x12')](_0x13039c));_0x1cc821(_0x13039c);})['catch'](function(_0x461338){logger[_0x2fa7('0x14')](_0x2fa7('0x24'),_0x461338['message'],_0x3fe469);_0x72ec0b(_0x87c8d4['error'](0x1f4,_0x461338[_0x2fa7('0x15')]));});});};exports['NotifyMailAccount']=function(_0x143211){var _0x3e43c4=this;return new Promise(function(_0x15dae6,_0x3243bd){var _0x2ed059={'body':_0x143211[_0x2fa7('0x25')],'channel':'mail'};var _0x186d48=_[_0x2fa7('0x26')](_['keys'](db[_0x2fa7('0x27')][_0x2fa7('0x28')]),['createdAt',_0x2fa7('0x29'),_0x2fa7('0x2a'),_0x2fa7('0x2b')]);var _0x47e467=![];if(_0x143211[_0x2fa7('0x25')]['id']){delete _0x143211[_0x2fa7('0x25')]['id'];}if(_[_0x2fa7('0x2c')](_0x143211['body'][_0x2fa7('0x2d')])){return _0x3243bd(_0x3e43c4[_0x2fa7('0x14')](0x1f4,_0x2fa7('0x2e')));}if(_[_0x2fa7('0x2c')](_0x143211[_0x2fa7('0x25')][_0x2fa7('0x25')])||_0x143211[_0x2fa7('0x25')][_0x2fa7('0x25')]===''){return _0x3243bd(_0x3e43c4[_0x2fa7('0x14')](0x1f4,'body\x20is\x20mandatory\x20and\x20not\x20empty'));}if(_['isNil'](_0x143211[_0x2fa7('0x25')][_0x2fa7('0x2f')])){return _0x3243bd(_0x3e43c4[_0x2fa7('0x14')](0x1f4,_0x2fa7('0x30')+_0x186d48));}if(!_[_0x2fa7('0x31')](_0x186d48,_0x143211[_0x2fa7('0x25')][_0x2fa7('0x2f')])){return _0x3243bd(_0x3e43c4[_0x2fa7('0x14')](0x1f4,_0x2fa7('0x32')+_0x186d48));}var _0x5715f8={};_0x5715f8[_0x143211[_0x2fa7('0x25')][_0x2fa7('0x2f')]]=_0x143211['body'][_0x2fa7('0x2d')];return db[_0x2fa7('0x22')][_0x2fa7('0x23')]({'where':{'id':_0x143211[_0x2fa7('0x33')]['id']},'include':[{'model':db['CmList'],'as':_0x2fa7('0x34'),'include':[{'model':db[_0x2fa7('0x27')],'as':_0x2fa7('0x35'),'where':_0x5715f8,'limit':0x1,'order':[[_0x2fa7('0x29'),_0x2fa7('0x36')]]}]},{'model':db[_0x2fa7('0x37')],'as':'Applications'},{'model':db[_0x2fa7('0x38')],'as':_0x2fa7('0x39')}]})['then'](function(_0x5cf508){if(_0x5cf508&&_0x5cf508[_0x2fa7('0x34')]){var _0x51cd6a=_0x5cf508['get']({'plain':!![]});_0x2ed059[_0x2fa7('0x33')]=_[_0x2fa7('0x3a')](_0x51cd6a,[_0x2fa7('0x3b'),_0x2fa7('0x34')]);_0x2ed059[_0x2fa7('0x3c')]=_0x51cd6a[_0x2fa7('0x3b')];_0x2ed059[_0x2fa7('0x3d')]=_0x51cd6a[_0x2fa7('0x34')];_0x2ed059['applications']=_['orderBy'](_0x2ed059[_0x2fa7('0x3c')],[_0x2fa7('0x3e')],[_0x2fa7('0x3f')]);if(_0x2ed059[_0x2fa7('0x33')]&&_0x2ed059['account'][_0x2fa7('0x40')]){_0x2ed059[_0x2fa7('0x3c')][_0x2fa7('0x41')]({'id':0x0,'priority':_0x2ed059[_0x2fa7('0x3c')][_0x2fa7('0x42')]+0x1,'app':_0x2fa7('0x43'),'appdata':_0x2fa7('0x40'),'interval':'*,*,*,*'});}if(_0x2ed059[_0x2fa7('0x33')][_0x2fa7('0x3b')]){delete _0x2ed059[_0x2fa7('0x33')]['Applications'];}if(_0x2ed059[_0x2fa7('0x33')][_0x2fa7('0x34')]){delete _0x2ed059[_0x2fa7('0x33')][_0x2fa7('0x34')];}if(_0x51cd6a['List'][_0x2fa7('0x35')]['length']){return _0x51cd6a[_0x2fa7('0x34')][_0x2fa7('0x35')][0x0];}var _0x37b2d6=_[_0x2fa7('0x8')](_0x143211[_0x2fa7('0x25')],{'firstName':_0x143211[_0x2fa7('0x25')][_0x2fa7('0x2d')],'ListId':_0x51cd6a[_0x2fa7('0x2b')]});_0x37b2d6[_0x143211[_0x2fa7('0x25')]['mapKey']]=_0x143211['body']['from'];return db[_0x2fa7('0x27')][_0x2fa7('0x44')](_0x37b2d6);}else{throw new Error(_0x2fa7('0x45'));}})['then'](function(_0x48c264){_0x2ed059[_0x2fa7('0x46')]=_0x48c264;if(_0x48c264){if(!_0x143211[_0x2fa7('0x25')][_0x2fa7('0x15')]['messageId']){_0x143211[_0x2fa7('0x25')][_0x2fa7('0x15')][_0x2fa7('0x47')]=rs[_0x2fa7('0x48')]()+'\x20'+_0x143211['body'][_0x2fa7('0x15')][_0x2fa7('0x2d')];}var _0x3e0700={'ContactId':_0x48c264['id'],'MailAccountId':_0x143211[_0x2fa7('0x33')]['id'],'inReplyTo':_0x143211[_0x2fa7('0x25')][_0x2fa7('0x15')][_0x2fa7('0x47')],'to':_0x143211['body'][_0x2fa7('0x15')][_0x2fa7('0x2d')],'cc':_0x143211['body']['message']['cc'],'subject':_0x143211['body'][_0x2fa7('0x15')][_0x2fa7('0x49')],'attach':_0x143211[_0x2fa7('0x25')]['message'][_0x2fa7('0x4a')],'lastMsgAt':moment()[_0x2fa7('0x4b')](_0x2fa7('0x4c')),'lastMsgDirection':'in'};return db['MailInteraction'][_0x2fa7('0x23')]({'where':{'closed':![],'MailAccountId':_0x143211['account']['id']},'include':[{'model':db[_0x2fa7('0x4d')],'as':_0x2fa7('0x4e'),'attributes':[_0x2fa7('0x47')],'where':{'messageId':_0x143211[_0x2fa7('0x25')][_0x2fa7('0x15')]['inReplyTo']}}]})[_0x2fa7('0x21')](function(_0x2086e3){if(_0x2086e3){return[_0x2086e3,![]];}return db['MailInteraction']['create'](_0x3e0700)[_0x2fa7('0x21')](function(_0x1d2fa9){return[_0x1d2fa9,!![]];});});}else{throw new Error(_0x2fa7('0x4f'));}})[_0x2fa7('0x50')](function(_0x161342,_0x429d74){if(_0x161342){_0x47e467=_0x429d74;if(!_0x429d74){return _0x161342[_0x2fa7('0x51')]({'inReplyTo':_0x143211[_0x2fa7('0x25')]['message'][_0x2fa7('0x47')],'to':_0x143211[_0x2fa7('0x25')][_0x2fa7('0x15')][_0x2fa7('0x2d')],'cc':_0x143211[_0x2fa7('0x25')][_0x2fa7('0x15')]['cc'],'subject':_0x143211[_0x2fa7('0x25')][_0x2fa7('0x15')][_0x2fa7('0x49')],'attach':_0x161342[_0x2fa7('0x4a')]?_0x161342[_0x2fa7('0x4a')]:_0x143211['body']['message'][_0x2fa7('0x4a')],'substatus':null,'substatusAt':moment()[_0x2fa7('0x4b')]('YYYY-MM-DD\x20HH:mm:ss'),'lastMsgAt':moment()[_0x2fa7('0x4b')](_0x2fa7('0x4c')),'lastMsgDirection':'in'});}else{return _0x161342;}}})[_0x2fa7('0x21')](function(_0x31fd36){_0x2ed059[_0x2fa7('0x52')]=_0x31fd36[_0x2fa7('0x53')]({'plain':!![]});_0x2ed059[_0x2fa7('0x52')][_0x2fa7('0x54')]=_0x47e467;return db['MailMessage'][_0x2fa7('0x44')]({'body':_0x143211[_0x2fa7('0x25')][_0x2fa7('0x25')],'MailAccountId':_0x143211[_0x2fa7('0x33')]['id'],'MailInteractionId':_0x31fd36['id'],'direction':'in','ContactId':_0x2ed059[_0x2fa7('0x46')]['id'],'messageId':_0x143211['body'][_0x2fa7('0x15')][_0x2fa7('0x47')],'from':_0x143211[_0x2fa7('0x25')][_0x2fa7('0x15')][_0x2fa7('0x2d')],'to':_0x143211[_0x2fa7('0x25')][_0x2fa7('0x15')]['to'],'cc':_0x143211[_0x2fa7('0x25')]['message']['cc'],'subject':_0x143211[_0x2fa7('0x25')][_0x2fa7('0x15')]['subject'],'attach':_0x143211[_0x2fa7('0x25')][_0x2fa7('0x15')][_0x2fa7('0x4a')],'Attachments':_0x143211['body']['message'][_0x2fa7('0x55')],'originTo':_0x143211[_0x2fa7('0x25')]['message'][_0x2fa7('0x56')],'originCc':_0x143211[_0x2fa7('0x25')][_0x2fa7('0x15')][_0x2fa7('0x57')],'bcc':_0x143211[_0x2fa7('0x25')][_0x2fa7('0x15')]['bcc'],'ChatWebsiteId':_0x143211[_0x2fa7('0x25')]['message'][_0x2fa7('0x58')]||null,'originChannel':_0x143211[_0x2fa7('0x25')][_0x2fa7('0x15')][_0x2fa7('0x59')]||_0x2fa7('0x5a'),'ChatOfflineMessageId':_0x143211[_0x2fa7('0x25')][_0x2fa7('0x15')][_0x2fa7('0x5b')]||null},{'include':[{'model':db['Attachment'],'as':'Attachments'}]});})[_0x2fa7('0x21')](function(_0xa3a9e1){_0x2ed059[_0x2fa7('0x15')]=_0xa3a9e1;if(_0x2ed059[_0x2fa7('0x52')][_0x2fa7('0x5c')]){return db[_0x2fa7('0x5d')][_0x2fa7('0x23')]({'attributes':['id',_0x2fa7('0x5e')],'where':{'id':_0x2ed059[_0x2fa7('0x52')][_0x2fa7('0x5c')]}})[_0x2fa7('0x21')](function(_0x492ba2){if(_0x492ba2){_0x2ed059[_0x2fa7('0x3c')][_0x2fa7('0x5f')]({'id':0x0,'priority':0x0,'app':_0x2fa7('0x60'),'appdata':_0x492ba2[_0x2fa7('0x5e')]+','+(_0x2ed059[_0x2fa7('0x33')][_0x2fa7('0x61')]||0xa),'interval':'*,*,*,*'});}return respondWithRpcPromise(_0x2fa7('0x62'),_0x2fa7('0x63'),_0x2ed059);});}return respondWithRpcPromise(_0x2fa7('0x62'),'startRouting',_0x2ed059);})[_0x2fa7('0x21')](function(_0x451869){_0x15dae6(_0x451869);})[_0x2fa7('0x16')](function(_0x30782a){_0x3243bd(_0x3e43c4[_0x2fa7('0x14')](0x1f4,_0x30782a[_0x2fa7('0x15')]));});});};
\ No newline at end of file
+var _0x2a6f=['length','create','List\x20not\x20found','contact','messageId','generate','subject','YYYY-MM-DD\x20HH:mm:ss','MailInteraction','MailMessage','Messages','inReplyTo','spread','update','attach','format','interaction','created','attachments','originCc','ChatWebsiteId','originChannel','Email','ChatOfflineMessageId','Attachments','User','name','UserId','agent','waitForTheAssignedAgent','Start','startRouting','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./mailAccount.socket','register','then','info','MailAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','GetMailAccount','MailAccount','findAll','options','limit','include','map','model','attributes','ShowMailAccount','find','raw','where','NotifyMailAccount','mail','difference','keys','CmContact','rawAttributes','createdAt','updatedAt','ListId','body','isNil','from','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','account','List','Contacts','DESC','MailApplication','Applications','MailServerOut','get','omit','applications','list','orderBy','autoclose','push','close','*,*,*,*'];(function(_0x504582,_0x5b3965){var _0x43c6ce=function(_0x1199a4){while(--_0x1199a4){_0x504582['push'](_0x504582['shift']());}};_0x43c6ce(++_0x5b3965);}(_0x2a6f,0x1c8));var _0xf2a6=function(_0x52e802,_0x475e73){_0x52e802=_0x52e802-0x0;var _0xb1a521=_0x2a6f[_0x52e802];return _0xb1a521;};'use strict';var _=require(_0xf2a6('0x0'));var util=require(_0xf2a6('0x1'));var moment=require(_0xf2a6('0x2'));var BPromise=require(_0xf2a6('0x3'));var rs=require(_0xf2a6('0x4'));var fs=require('fs');var Redis=require(_0xf2a6('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xf2a6('0x6'));var logger=require(_0xf2a6('0x7'))(_0xf2a6('0x8'));var config=require('../../config/environment');var jayson=require(_0xf2a6('0x9'));var client=jayson[_0xf2a6('0xa')][_0xf2a6('0xb')]({'port':0x232c});config[_0xf2a6('0xc')]=_[_0xf2a6('0xd')](config['redis'],{'host':_0xf2a6('0xe'),'port':0x18eb});var socket=require(_0xf2a6('0xf'))(new Redis(config[_0xf2a6('0xc')]));require(_0xf2a6('0x10'))[_0xf2a6('0x11')](socket);function respondWithRpcPromise(_0x54c049,_0x4f45c3,_0x749bad){return new BPromise(function(_0x19fc07,_0xacfc1c){return client['request'](_0x54c049,_0x749bad)[_0xf2a6('0x12')](function(_0x2f85d3){logger[_0xf2a6('0x13')](_0xf2a6('0x14'),_0x4f45c3,_0xf2a6('0x15'));logger[_0xf2a6('0x16')]('MailAccount,\x20%s,\x20%s,\x20%s',_0x4f45c3,'request\x20sent',JSON[_0xf2a6('0x17')](_0x2f85d3));if(_0x2f85d3[_0xf2a6('0x18')]){if(_0x2f85d3[_0xf2a6('0x18')][_0xf2a6('0x19')]===0x1f4){logger['error'](_0xf2a6('0x14'),_0x4f45c3,_0x2f85d3['error'][_0xf2a6('0x1a')]);return _0xacfc1c(_0x2f85d3['error'][_0xf2a6('0x1a')]);}logger[_0xf2a6('0x18')](_0xf2a6('0x14'),_0x4f45c3,_0x2f85d3[_0xf2a6('0x18')][_0xf2a6('0x1a')]);return _0x19fc07(_0x2f85d3[_0xf2a6('0x18')][_0xf2a6('0x1a')]);}else{logger[_0xf2a6('0x13')](_0xf2a6('0x14'),_0x4f45c3,_0xf2a6('0x15'));_0x19fc07(_0x2f85d3[_0xf2a6('0x1b')][_0xf2a6('0x1a')]);}})[_0xf2a6('0x1c')](function(_0xa4eec7){logger[_0xf2a6('0x18')](_0xf2a6('0x14'),_0x4f45c3,_0xa4eec7);_0xacfc1c(_0xa4eec7);});});}exports[_0xf2a6('0x1d')]=function(_0xfd7d5a){var _0x3ae6c5=this;return new Promise(function(_0x3afceb,_0x2ad7de){return db[_0xf2a6('0x1e')][_0xf2a6('0x1f')]({'raw':_0xfd7d5a[_0xf2a6('0x20')]?_0xfd7d5a['options']['raw']===undefined?!![]:![]:!![],'where':_0xfd7d5a['options']?_0xfd7d5a[_0xf2a6('0x20')]['where']||null:null,'attributes':_0xfd7d5a[_0xf2a6('0x20')]?_0xfd7d5a['options']['attributes']||null:null,'limit':_0xfd7d5a['options']?_0xfd7d5a['options'][_0xf2a6('0x21')]||null:null,'include':_0xfd7d5a[_0xf2a6('0x20')]?_0xfd7d5a[_0xf2a6('0x20')][_0xf2a6('0x22')]?_[_0xf2a6('0x23')](_0xfd7d5a[_0xf2a6('0x20')][_0xf2a6('0x22')],function(_0x2feace){return{'model':db[_0x2feace[_0xf2a6('0x24')]],'as':_0x2feace['as'],'attributes':_0x2feace[_0xf2a6('0x25')],'include':_0x2feace['include']?_[_0xf2a6('0x23')](_0x2feace[_0xf2a6('0x22')],function(_0x412404){return{'model':db[_0x412404[_0xf2a6('0x24')]],'as':_0x412404['as'],'attributes':_0x412404[_0xf2a6('0x25')],'include':_0x412404[_0xf2a6('0x22')]?_[_0xf2a6('0x23')](_0x412404[_0xf2a6('0x22')],function(_0x55b19a){return{'model':db[_0x55b19a[_0xf2a6('0x24')]],'as':_0x55b19a['as'],'attributes':_0x55b19a[_0xf2a6('0x25')]};}):[]};}):[]};}):[]:[]})[_0xf2a6('0x12')](function(_0x1e9e06){logger[_0xf2a6('0x13')](_0xf2a6('0x1d'),_0xfd7d5a);logger[_0xf2a6('0x16')](_0xf2a6('0x1d'),_0xfd7d5a,JSON['stringify'](_0x1e9e06));_0x3afceb(_0x1e9e06);})[_0xf2a6('0x1c')](function(_0x55546e){logger[_0xf2a6('0x18')](_0xf2a6('0x1d'),_0x55546e[_0xf2a6('0x1a')],_0xfd7d5a);_0x2ad7de(_0x3ae6c5[_0xf2a6('0x18')](0x1f4,_0x55546e[_0xf2a6('0x1a')]));});});};exports[_0xf2a6('0x26')]=function(_0x41c7ca){var _0x4d5a72=this;return new Promise(function(_0xa805ec,_0x3eddac){return db['MailAccount'][_0xf2a6('0x27')]({'raw':_0x41c7ca[_0xf2a6('0x20')]?_0x41c7ca[_0xf2a6('0x20')][_0xf2a6('0x28')]===undefined?!![]:![]:!![],'where':_0x41c7ca[_0xf2a6('0x20')]?_0x41c7ca[_0xf2a6('0x20')][_0xf2a6('0x29')]||null:null,'attributes':_0x41c7ca[_0xf2a6('0x20')]?_0x41c7ca[_0xf2a6('0x20')][_0xf2a6('0x25')]||null:null,'include':_0x41c7ca[_0xf2a6('0x20')]?_0x41c7ca[_0xf2a6('0x20')]['include']?_[_0xf2a6('0x23')](_0x41c7ca[_0xf2a6('0x20')][_0xf2a6('0x22')],function(_0x5a430a){return{'model':db[_0x5a430a[_0xf2a6('0x24')]],'as':_0x5a430a['as'],'attributes':_0x5a430a[_0xf2a6('0x25')],'include':_0x5a430a[_0xf2a6('0x22')]?_[_0xf2a6('0x23')](_0x5a430a[_0xf2a6('0x22')],function(_0x11095b){return{'model':db[_0x11095b['model']],'as':_0x11095b['as'],'attributes':_0x11095b['attributes'],'include':_0x11095b['include']?_[_0xf2a6('0x23')](_0x11095b[_0xf2a6('0x22')],function(_0x446b28){return{'model':db[_0x446b28[_0xf2a6('0x24')]],'as':_0x446b28['as'],'attributes':_0x446b28['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x4ca0){logger['info']('ShowMailAccount',_0x41c7ca);logger[_0xf2a6('0x16')](_0xf2a6('0x26'),_0x41c7ca,JSON[_0xf2a6('0x17')](_0x4ca0));_0xa805ec(_0x4ca0);})[_0xf2a6('0x1c')](function(_0x19b13f){logger[_0xf2a6('0x18')](_0xf2a6('0x26'),_0x19b13f[_0xf2a6('0x1a')],_0x41c7ca);_0x3eddac(_0x4d5a72['error'](0x1f4,_0x19b13f[_0xf2a6('0x1a')]));});});};exports[_0xf2a6('0x2a')]=function(_0x544f3e){var _0xadbe5d=this;return new Promise(function(_0x58420e,_0x5325ac){var _0x3ef156={'body':_0x544f3e['body'],'channel':_0xf2a6('0x2b')};var _0x45acc0=_[_0xf2a6('0x2c')](_[_0xf2a6('0x2d')](db[_0xf2a6('0x2e')][_0xf2a6('0x2f')]),[_0xf2a6('0x30'),_0xf2a6('0x31'),'CompanyId',_0xf2a6('0x32')]);var _0x58afaf=![];if(_0x544f3e[_0xf2a6('0x33')]['id']){delete _0x544f3e[_0xf2a6('0x33')]['id'];}if(_[_0xf2a6('0x34')](_0x544f3e['body'][_0xf2a6('0x35')])){return _0x5325ac(_0xadbe5d[_0xf2a6('0x18')](0x1f4,'from\x20is\x20mandatory'));}if(_[_0xf2a6('0x34')](_0x544f3e['body'][_0xf2a6('0x33')])||_0x544f3e[_0xf2a6('0x33')]['body']===''){return _0x5325ac(_0xadbe5d[_0xf2a6('0x18')](0x1f4,_0xf2a6('0x36')));}if(_[_0xf2a6('0x34')](_0x544f3e[_0xf2a6('0x33')][_0xf2a6('0x37')])){return _0x5325ac(_0xadbe5d[_0xf2a6('0x18')](0x1f4,_0xf2a6('0x38')+_0x45acc0));}if(!_[_0xf2a6('0x39')](_0x45acc0,_0x544f3e[_0xf2a6('0x33')][_0xf2a6('0x37')])){return _0x5325ac(_0xadbe5d[_0xf2a6('0x18')](0x1f4,'mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x45acc0));}var _0xdc8d65={};_0xdc8d65[_0x544f3e[_0xf2a6('0x33')][_0xf2a6('0x37')]]=_0x544f3e['body']['from'];return db[_0xf2a6('0x1e')][_0xf2a6('0x27')]({'where':{'id':_0x544f3e[_0xf2a6('0x3a')]['id']},'include':[{'model':db['CmList'],'as':_0xf2a6('0x3b'),'include':[{'model':db[_0xf2a6('0x2e')],'as':_0xf2a6('0x3c'),'where':_0xdc8d65,'limit':0x1,'order':[[_0xf2a6('0x31'),_0xf2a6('0x3d')]]}]},{'model':db[_0xf2a6('0x3e')],'as':_0xf2a6('0x3f')},{'model':db[_0xf2a6('0x40')],'as':'Smtp'}]})[_0xf2a6('0x12')](function(_0x1ddeb0){if(_0x1ddeb0&&_0x1ddeb0[_0xf2a6('0x3b')]){var _0x143748=_0x1ddeb0[_0xf2a6('0x41')]({'plain':!![]});_0x3ef156[_0xf2a6('0x3a')]=_[_0xf2a6('0x42')](_0x143748,['Applications','List']);_0x3ef156[_0xf2a6('0x43')]=_0x143748[_0xf2a6('0x3f')];_0x3ef156[_0xf2a6('0x44')]=_0x143748[_0xf2a6('0x3b')];_0x3ef156[_0xf2a6('0x43')]=_[_0xf2a6('0x45')](_0x3ef156[_0xf2a6('0x43')],['priority'],['asc']);if(_0x3ef156[_0xf2a6('0x3a')]&&_0x3ef156[_0xf2a6('0x3a')][_0xf2a6('0x46')]){_0x3ef156['applications'][_0xf2a6('0x47')]({'id':0x0,'priority':_0x3ef156[_0xf2a6('0x43')]['length']+0x1,'app':_0xf2a6('0x48'),'appdata':'autoclose','interval':_0xf2a6('0x49')});}if(_0x3ef156['account'][_0xf2a6('0x3f')]){delete _0x3ef156[_0xf2a6('0x3a')][_0xf2a6('0x3f')];}if(_0x3ef156['account'][_0xf2a6('0x3b')]){delete _0x3ef156[_0xf2a6('0x3a')][_0xf2a6('0x3b')];}if(_0x143748['List']['Contacts'][_0xf2a6('0x4a')]){return _0x143748['List'][_0xf2a6('0x3c')][0x0];}var _0x405bae=_[_0xf2a6('0xd')](_0x544f3e[_0xf2a6('0x33')],{'firstName':_0x544f3e[_0xf2a6('0x33')][_0xf2a6('0x35')],'ListId':_0x143748[_0xf2a6('0x32')]});_0x405bae[_0x544f3e[_0xf2a6('0x33')][_0xf2a6('0x37')]]=_0x544f3e[_0xf2a6('0x33')][_0xf2a6('0x35')];return db['CmContact'][_0xf2a6('0x4b')](_0x405bae);}else{throw new Error(_0xf2a6('0x4c'));}})[_0xf2a6('0x12')](function(_0x3d3737){_0x3ef156[_0xf2a6('0x4d')]=_0x3d3737;if(_0x3d3737){if(!_0x544f3e[_0xf2a6('0x33')][_0xf2a6('0x1a')][_0xf2a6('0x4e')]){_0x544f3e[_0xf2a6('0x33')][_0xf2a6('0x1a')][_0xf2a6('0x4e')]=rs[_0xf2a6('0x4f')]()+'\x20'+_0x544f3e['body']['message'][_0xf2a6('0x35')];}var _0x484cba={'ContactId':_0x3d3737['id'],'MailAccountId':_0x544f3e[_0xf2a6('0x3a')]['id'],'inReplyTo':_0x544f3e[_0xf2a6('0x33')]['message']['messageId'],'to':_0x544f3e[_0xf2a6('0x33')][_0xf2a6('0x1a')][_0xf2a6('0x35')],'cc':_0x544f3e[_0xf2a6('0x33')][_0xf2a6('0x1a')]['cc'],'subject':_0x544f3e[_0xf2a6('0x33')][_0xf2a6('0x1a')][_0xf2a6('0x50')],'attach':_0x544f3e[_0xf2a6('0x33')]['message']['attach'],'lastMsgAt':moment()['format'](_0xf2a6('0x51')),'lastMsgDirection':'in'};return db[_0xf2a6('0x52')][_0xf2a6('0x27')]({'where':{'closed':![],'MailAccountId':_0x544f3e[_0xf2a6('0x3a')]['id']},'include':[{'model':db[_0xf2a6('0x53')],'as':_0xf2a6('0x54'),'attributes':[_0xf2a6('0x4e')],'where':{'messageId':_0x544f3e[_0xf2a6('0x33')][_0xf2a6('0x1a')][_0xf2a6('0x55')]}}]})['then'](function(_0x705329){if(_0x705329){return[_0x705329,![]];}return db['MailInteraction'][_0xf2a6('0x4b')](_0x484cba)[_0xf2a6('0x12')](function(_0x52a7b8){return[_0x52a7b8,!![]];});});}else{throw new Error('Contact\x20not\x20found');}})[_0xf2a6('0x56')](function(_0x18c066,_0x33f393){if(_0x18c066){_0x58afaf=_0x33f393;if(!_0x33f393){return _0x18c066[_0xf2a6('0x57')]({'inReplyTo':_0x544f3e['body'][_0xf2a6('0x1a')]['messageId'],'to':_0x544f3e[_0xf2a6('0x33')]['message'][_0xf2a6('0x35')],'cc':_0x544f3e['body'][_0xf2a6('0x1a')]['cc'],'subject':_0x544f3e[_0xf2a6('0x33')][_0xf2a6('0x1a')][_0xf2a6('0x50')],'attach':_0x18c066[_0xf2a6('0x58')]?_0x18c066[_0xf2a6('0x58')]:_0x544f3e['body'][_0xf2a6('0x1a')][_0xf2a6('0x58')],'substatus':null,'substatusAt':moment()[_0xf2a6('0x59')](_0xf2a6('0x51')),'lastMsgAt':moment()[_0xf2a6('0x59')](_0xf2a6('0x51')),'lastMsgDirection':'in'});}else{return _0x18c066;}}})[_0xf2a6('0x12')](function(_0x2150d8){_0x3ef156[_0xf2a6('0x5a')]=_0x2150d8['get']({'plain':!![]});_0x3ef156[_0xf2a6('0x5a')][_0xf2a6('0x5b')]=_0x58afaf;return db['MailMessage'][_0xf2a6('0x4b')]({'body':_0x544f3e[_0xf2a6('0x33')]['body'],'MailAccountId':_0x544f3e[_0xf2a6('0x3a')]['id'],'MailInteractionId':_0x2150d8['id'],'direction':'in','ContactId':_0x3ef156['contact']['id'],'messageId':_0x544f3e[_0xf2a6('0x33')][_0xf2a6('0x1a')][_0xf2a6('0x4e')],'from':_0x544f3e[_0xf2a6('0x33')][_0xf2a6('0x1a')][_0xf2a6('0x35')],'to':_0x544f3e[_0xf2a6('0x33')][_0xf2a6('0x1a')]['to'],'cc':_0x544f3e[_0xf2a6('0x33')][_0xf2a6('0x1a')]['cc'],'subject':_0x544f3e['body']['message'][_0xf2a6('0x50')],'attach':_0x544f3e['body']['message']['attach'],'Attachments':_0x544f3e[_0xf2a6('0x33')][_0xf2a6('0x1a')][_0xf2a6('0x5c')],'originTo':_0x544f3e[_0xf2a6('0x33')][_0xf2a6('0x1a')]['originTo'],'originCc':_0x544f3e[_0xf2a6('0x33')][_0xf2a6('0x1a')][_0xf2a6('0x5d')],'bcc':_0x544f3e[_0xf2a6('0x33')]['message']['bcc'],'ChatWebsiteId':_0x544f3e['body']['message'][_0xf2a6('0x5e')]||null,'originChannel':_0x544f3e[_0xf2a6('0x33')][_0xf2a6('0x1a')][_0xf2a6('0x5f')]||_0xf2a6('0x60'),'ChatOfflineMessageId':_0x544f3e[_0xf2a6('0x33')]['message'][_0xf2a6('0x61')]||null},{'include':[{'model':db['Attachment'],'as':_0xf2a6('0x62')}]});})[_0xf2a6('0x12')](function(_0x5c6ccf){_0x3ef156['message']=_0x5c6ccf;if(_0x3ef156[_0xf2a6('0x5a')]['UserId']){return db[_0xf2a6('0x63')][_0xf2a6('0x27')]({'attributes':['id',_0xf2a6('0x64')],'where':{'id':_0x3ef156['interaction'][_0xf2a6('0x65')]}})[_0xf2a6('0x12')](function(_0x1b6612){if(_0x1b6612){_0x3ef156['applications']['unshift']({'id':0x0,'priority':0x0,'app':_0xf2a6('0x66'),'appdata':_0x1b6612[_0xf2a6('0x64')]+','+(_0x3ef156[_0xf2a6('0x3a')][_0xf2a6('0x67')]||0xa),'interval':_0xf2a6('0x49')});}return respondWithRpcPromise(_0xf2a6('0x68'),'startRouting',_0x3ef156);});}return respondWithRpcPromise(_0xf2a6('0x68'),_0xf2a6('0x69'),_0x3ef156);})[_0xf2a6('0x12')](function(_0x5ea05f){_0x58420e(_0x5ea05f);})[_0xf2a6('0x1c')](function(_0x5bda13){_0x5325ac(_0xadbe5d['error'](0x1f4,_0x5bda13[_0xf2a6('0x1a')]));});});};
\ No newline at end of file
index e22ca1d..17ba7db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x56a0=['remove','update','emit','removeListener','register','./mailAccount.events','save'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0x56a0,0x101));var _0x056a=function(_0xfa260b,_0xd2d0d){_0xfa260b=_0xfa260b-0x0;var _0x48fb84=_0x56a0[_0xfa260b];return _0x48fb84;};'use strict';var MailAccountEvents=require(_0x056a('0x0'));var events=[_0x056a('0x1'),_0x056a('0x2'),_0x056a('0x3')];function createListener(_0x451ead,_0x2177c3){return function(_0x2dee91){_0x2177c3[_0x056a('0x4')](_0x451ead,_0x2dee91);};}function removeListener(_0x2991a7,_0x21222e){return function(){MailAccountEvents[_0x056a('0x5')](_0x2991a7,_0x21222e);};}exports[_0x056a('0x6')]=function(_0x1838f5){for(var _0xf3b872=0x0,_0x477b7=events['length'];_0xf3b872<_0x477b7;_0xf3b872++){var _0x275bb3=events[_0xf3b872];var _0x2afa98=createListener('mailAccount:'+_0x275bb3,_0x1838f5);MailAccountEvents['on'](_0x275bb3,_0x2afa98);}};
\ No newline at end of file
+var _0x03be=['emit','removeListener','register','length','./mailAccount.events','save'];(function(_0x4d4e87,_0x3da0bc){var _0x580ca3=function(_0x4a2ca0){while(--_0x4a2ca0){_0x4d4e87['push'](_0x4d4e87['shift']());}};_0x580ca3(++_0x3da0bc);}(_0x03be,0xe8));var _0xe03b=function(_0x43f6a3,_0x261f23){_0x43f6a3=_0x43f6a3-0x0;var _0x1b6409=_0x03be[_0x43f6a3];return _0x1b6409;};'use strict';var MailAccountEvents=require(_0xe03b('0x0'));var events=[_0xe03b('0x1'),'remove','update'];function createListener(_0x45d009,_0x1354dd){return function(_0x254a64){_0x1354dd[_0xe03b('0x2')](_0x45d009,_0x254a64);};}function removeListener(_0x4cfbd2,_0x48768d){return function(){MailAccountEvents[_0xe03b('0x3')](_0x4cfbd2,_0x48768d);};}exports[_0xe03b('0x4')]=function(_0x3a5909){for(var _0x687eca=0x0,_0xd9dc0e=events[_0xe03b('0x5')];_0x687eca<_0xd9dc0e;_0x687eca++){var _0x4422dc=events[_0x687eca];var _0x49c5fa=createListener('mailAccount:'+_0x4422dc,_0x3a5909);MailAccountEvents['on'](_0x4422dc,_0x49c5fa);}};
\ No newline at end of file
index 0a995ac..8a6e663 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa5c1=['show','put','isAuthenticated','delete','destroy','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./mailApplication.controller','get','/:id'];(function(_0x54d408,_0x460a7f){var _0x476c9a=function(_0x1e1f40){while(--_0x1e1f40){_0x54d408['push'](_0x54d408['shift']());}};_0x476c9a(++_0x460a7f);}(_0xa5c1,0x65));var _0x1a5c=function(_0xcf098d,_0x1b9e69){_0xcf098d=_0xcf098d-0x0;var _0x99daff=_0xa5c1[_0xcf098d];return _0x99daff;};'use strict';var multer=require(_0x1a5c('0x0'));var util=require('util');var path=require(_0x1a5c('0x1'));var timeout=require(_0x1a5c('0x2'));var express=require(_0x1a5c('0x3'));var router=express[_0x1a5c('0x4')]();var fs_extra=require(_0x1a5c('0x5'));var auth=require(_0x1a5c('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x1a5c('0x7'));var controller=require(_0x1a5c('0x8'));router[_0x1a5c('0x9')](_0x1a5c('0xa'),auth['isAuthenticated'](),controller[_0x1a5c('0xb')]);router[_0x1a5c('0xc')]('/:id',auth[_0x1a5c('0xd')](),controller['update']);router[_0x1a5c('0xe')]('/:id',auth[_0x1a5c('0xd')](),controller[_0x1a5c('0xf')]);module['exports']=router;
\ No newline at end of file
+var _0xcacf=['put','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./mailApplication.controller','get','/:id','isAuthenticated'];(function(_0x3da832,_0x2133f1){var _0xe602f2=function(_0xb7b2f){while(--_0xb7b2f){_0x3da832['push'](_0x3da832['shift']());}};_0xe602f2(++_0x2133f1);}(_0xcacf,0x1e3));var _0xfcac=function(_0x42245d,_0x51758f){_0x42245d=_0x42245d-0x0;var _0x4b211a=_0xcacf[_0x42245d];return _0x4b211a;};'use strict';var multer=require(_0xfcac('0x0'));var util=require(_0xfcac('0x1'));var path=require(_0xfcac('0x2'));var timeout=require(_0xfcac('0x3'));var express=require(_0xfcac('0x4'));var router=express['Router']();var fs_extra=require(_0xfcac('0x5'));var auth=require(_0xfcac('0x6'));var interaction=require(_0xfcac('0x7'));var config=require('../../config/environment');var controller=require(_0xfcac('0x8'));router[_0xfcac('0x9')](_0xfcac('0xa'),auth[_0xfcac('0xb')](),controller['show']);router[_0xfcac('0xc')]('/:id',auth[_0xfcac('0xb')](),controller['update']);router['delete'](_0xfcac('0xa'),auth['isAuthenticated'](),controller[_0xfcac('0xd')]);module[_0xfcac('0xe')]=router;
\ No newline at end of file
index 561dd3f..8bbba89 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7f66=['*,*,*,*','sequelize','STRING','noop'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7f66,0xe1));var _0x67f6=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0x7f66[_0x502c7d];return _0x30b7ed;};'use strict';var Sequelize=require(_0x67f6('0x0'));module['exports']={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0x67f6('0x1')],'allowNull':![],'defaultValue':_0x67f6('0x2')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize[_0x67f6('0x1')]},'interval':{'type':Sequelize['STRING'],'defaultValue':_0x67f6('0x3')}};
\ No newline at end of file
+var _0x00dc=['STRING','TEXT','*,*,*,*','exports','INTEGER'];(function(_0x1a89a1,_0x56d889){var _0x3d5b46=function(_0x56debf){while(--_0x56debf){_0x1a89a1['push'](_0x1a89a1['shift']());}};_0x3d5b46(++_0x56d889);}(_0x00dc,0xad));var _0xc00d=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x00dc[_0x3b380d];return _0x54502b;};'use strict';var Sequelize=require('sequelize');module[_0xc00d('0x0')]={'priority':{'type':Sequelize[_0xc00d('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0xc00d('0x2')],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize[_0xc00d('0x3')]()},'description':{'type':Sequelize[_0xc00d('0x2')]},'interval':{'type':Sequelize[_0xc00d('0x2')],'defaultValue':_0xc00d('0x4')}};
\ No newline at end of file
index 39e3e0a..bb99ce0 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(_0x4964e1,_0x197ea7){var _0x3b4687=function(_0x126272){while(--_0x126272){_0x4964e1['push'](_0x4964e1['shift']());}};_0x3b4687(++_0x197ea7);}(_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 _0xaa88=['limit','count','set','apply','reject','then','stack','name','send','params','model','keys','MailApplication','query','filters','intersection','attributes','fields','length','include','merge','options','find','update','body','catch','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','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','../../mysqldb','sendStatus','status','end','json','offset','undefined'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xaa88,0x137));var _0x8aa8=function(_0xaa0309,_0x1c8008){_0xaa0309=_0xaa0309-0x0;var _0x5de7ce=_0xaa88[_0xaa0309];return _0x5de7ce;};'use strict';var emlformat=require(_0x8aa8('0x0'));var rimraf=require(_0x8aa8('0x1'));var zipdir=require(_0x8aa8('0x2'));var jsonpatch=require(_0x8aa8('0x3'));var rp=require('request-promise');var moment=require(_0x8aa8('0x4'));var BPromise=require(_0x8aa8('0x5'));var Mustache=require(_0x8aa8('0x6'));var util=require(_0x8aa8('0x7'));var path=require(_0x8aa8('0x8'));var sox=require(_0x8aa8('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8aa8('0xa'));var _=require('lodash');var squel=require(_0x8aa8('0xb'));var crypto=require(_0x8aa8('0xc'));var jsforce=require(_0x8aa8('0xd'));var deskjs=require(_0x8aa8('0xe'));var toCsv=require('to-csv');var querystring=require(_0x8aa8('0xf'));var Papa=require(_0x8aa8('0x10'));var Redis=require(_0x8aa8('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x8aa8('0x12'));var as=require(_0x8aa8('0x13'));var hardwareService=require(_0x8aa8('0x14'));var logger=require(_0x8aa8('0x15'))('api');var utils=require(_0x8aa8('0x16'));var config=require(_0x8aa8('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x8aa8('0x18'))['db'];function respondWithStatusCode(_0xa691d6,_0x28132f){_0x28132f=_0x28132f||0xcc;return function(_0x535aa0){if(_0x535aa0){return _0xa691d6[_0x8aa8('0x19')](_0x28132f);}return _0xa691d6[_0x8aa8('0x1a')](_0x28132f)[_0x8aa8('0x1b')]();};}function respondWithResult(_0x4b686e,_0x391642){_0x391642=_0x391642||0xc8;return function(_0x4af534){if(_0x4af534){return _0x4b686e['status'](_0x391642)[_0x8aa8('0x1c')](_0x4af534);}};}function respondWithFilteredResult(_0x200662,_0xae81a0){return function(_0xa6c2af){if(_0xa6c2af){var _0x42a6a4=typeof _0xae81a0[_0x8aa8('0x1d')]===_0x8aa8('0x1e')&&typeof _0xae81a0[_0x8aa8('0x1f')]===_0x8aa8('0x1e');var _0x4e8ce3=_0xa6c2af['count'];var _0x2c1b9a=_0x42a6a4?0x0:_0xae81a0['offset'];var _0x557adc=_0x42a6a4?_0xa6c2af[_0x8aa8('0x20')]:_0xae81a0['offset']+_0xae81a0[_0x8aa8('0x1f')];var _0x41092b;if(_0x557adc>=_0x4e8ce3){_0x557adc=_0x4e8ce3;_0x41092b=0xc8;}else{_0x41092b=0xce;}_0x200662[_0x8aa8('0x1a')](_0x41092b);return _0x200662[_0x8aa8('0x21')]('Content-Range',_0x2c1b9a+'-'+_0x557adc+'/'+_0x4e8ce3)[_0x8aa8('0x1c')](_0xa6c2af);}return null;};}function patchUpdates(_0x36c445){return function(_0x2825fd){try{jsonpatch[_0x8aa8('0x22')](_0x2825fd,_0x36c445,!![]);}catch(_0x4c754e){return BPromise[_0x8aa8('0x23')](_0x4c754e);}return _0x2825fd['save']();};}function saveUpdates(_0x26cf63,_0x4cc455){return function(_0x1fdadd){if(_0x1fdadd){return _0x1fdadd['update'](_0x26cf63)[_0x8aa8('0x24')](function(_0x557e4e){return _0x557e4e;});}return null;};}function removeEntity(_0x65945b,_0x40adb5){return function(_0x3ca7dc){if(_0x3ca7dc){return _0x3ca7dc['destroy']()[_0x8aa8('0x24')](function(){_0x65945b[_0x8aa8('0x1a')](0xcc)[_0x8aa8('0x1b')]();});}};}function handleEntityNotFound(_0x547a7b,_0x57acd2){return function(_0x2d1508){if(!_0x2d1508){_0x547a7b[_0x8aa8('0x19')](0x194);}return _0x2d1508;};}function handleError(_0x2f91f3,_0x3a3c7a){_0x3a3c7a=_0x3a3c7a||0x1f4;return function(_0x24143e){logger['error'](_0x24143e[_0x8aa8('0x25')]);if(_0x24143e['name']){delete _0x24143e[_0x8aa8('0x26')];}_0x2f91f3[_0x8aa8('0x1a')](_0x3a3c7a)[_0x8aa8('0x27')](_0x24143e);};}exports['show']=function(_0x4c5c5c,_0x10810d){var _0x5e96c9={'raw':!![],'where':{'id':_0x4c5c5c[_0x8aa8('0x28')]['id']}},_0x385208={};_0x385208[_0x8aa8('0x29')]=_[_0x8aa8('0x2a')](db[_0x8aa8('0x2b')]['rawAttributes']);_0x385208[_0x8aa8('0x2c')]=_[_0x8aa8('0x2a')](_0x4c5c5c['query']);_0x385208[_0x8aa8('0x2d')]=_[_0x8aa8('0x2e')](_0x385208[_0x8aa8('0x29')],_0x385208['query']);_0x5e96c9[_0x8aa8('0x2f')]=_[_0x8aa8('0x2e')](_0x385208[_0x8aa8('0x29')],qs[_0x8aa8('0x30')](_0x4c5c5c[_0x8aa8('0x2c')][_0x8aa8('0x30')]));_0x5e96c9[_0x8aa8('0x2f')]=_0x5e96c9[_0x8aa8('0x2f')][_0x8aa8('0x31')]?_0x5e96c9[_0x8aa8('0x2f')]:_0x385208[_0x8aa8('0x29')];if(_0x4c5c5c['query']['includeAll']){_0x5e96c9[_0x8aa8('0x32')]=[{'all':!![]}];}_0x5e96c9=_[_0x8aa8('0x33')]({},_0x5e96c9,_0x4c5c5c[_0x8aa8('0x34')]);return db[_0x8aa8('0x2b')][_0x8aa8('0x35')](_0x5e96c9)[_0x8aa8('0x24')](handleEntityNotFound(_0x10810d,null))['then'](respondWithResult(_0x10810d,null))['catch'](handleError(_0x10810d,null));};exports[_0x8aa8('0x36')]=function(_0x5755b5,_0x24997c){if(_0x5755b5[_0x8aa8('0x37')]['id']){delete _0x5755b5[_0x8aa8('0x37')]['id'];}return db['MailApplication'][_0x8aa8('0x35')]({'where':{'id':_0x5755b5[_0x8aa8('0x28')]['id']}})[_0x8aa8('0x24')](handleEntityNotFound(_0x24997c,null))['then'](saveUpdates(_0x5755b5['body'],null))[_0x8aa8('0x24')](respondWithResult(_0x24997c,null))[_0x8aa8('0x38')](handleError(_0x24997c,null));};exports['destroy']=function(_0x24eb18,_0x2e1f52){return db['MailApplication'][_0x8aa8('0x35')]({'where':{'id':_0x24eb18['params']['id']}})['then'](handleEntityNotFound(_0x2e1f52,null))[_0x8aa8('0x24')](removeEntity(_0x2e1f52,null))['catch'](handleError(_0x2e1f52,null));};
\ No newline at end of file
index b5d01a8..10198ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa73=['bluebird','path','rimraf','exports','MailApplication','mail_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util','api','moment'];(function(_0x2031c2,_0x130bcd){var _0x5ef1e7=function(_0x3d6dab){while(--_0x3d6dab){_0x2031c2['push'](_0x2031c2['shift']());}};_0x5ef1e7(++_0x130bcd);}(_0xaa73,0xc8));var _0x3aa7=function(_0x31b484,_0x7cc1fa){_0x31b484=_0x31b484-0x0;var _0x5058f8=_0xaa73[_0x31b484];return _0x5058f8;};'use strict';var _=require(_0x3aa7('0x0'));var util=require(_0x3aa7('0x1'));var logger=require('../../config/logger')(_0x3aa7('0x2'));var moment=require(_0x3aa7('0x3'));var BPromise=require(_0x3aa7('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x3aa7('0x5'));var rimraf=require(_0x3aa7('0x6'));var config=require('../../config/environment');var attributes=require('./mailApplication.attributes');module[_0x3aa7('0x7')]=function(_0x33464f,_0xcf2c7b){return _0x33464f['define'](_0x3aa7('0x8'),attributes,{'tableName':_0x3aa7('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x3aa7('0xa'),'collate':_0x3aa7('0xb')});};
\ No newline at end of file
+var _0x46a8=['moment','request-promise','path','rimraf','../../config/environment','exports','define','MailApplication','mail_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util','api'];(function(_0x472fd7,_0x76fab){var _0x3ad6b4=function(_0x169d71){while(--_0x169d71){_0x472fd7['push'](_0x472fd7['shift']());}};_0x3ad6b4(++_0x76fab);}(_0x46a8,0xdd));var _0x846a=function(_0x388594,_0x7ed84b){_0x388594=_0x388594-0x0;var _0xc30425=_0x46a8[_0x388594];return _0xc30425;};'use strict';var _=require(_0x846a('0x0'));var util=require(_0x846a('0x1'));var logger=require('../../config/logger')(_0x846a('0x2'));var moment=require(_0x846a('0x3'));var BPromise=require('bluebird');var rp=require(_0x846a('0x4'));var fs=require('fs');var path=require(_0x846a('0x5'));var rimraf=require(_0x846a('0x6'));var config=require(_0x846a('0x7'));var attributes=require('./mailApplication.attributes');module[_0x846a('0x8')]=function(_0x496c81,_0x4efef3){return _0x496c81[_0x846a('0x9')](_0x846a('0xa'),attributes,{'tableName':_0x846a('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x846a('0xc'),'collate':_0x846a('0xd')});};
\ No newline at end of file
index ee220cc..28bca15 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x888e=['update','body','options','raw','where','limit','stringify','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','then','info','MailApplication,\x20%s,\x20%s','debug','MailApplication,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','UpdateMailApplication','MailApplication'];(function(_0x20c880,_0x14bf51){var _0x24809a=function(_0x55bf57){while(--_0x55bf57){_0x20c880['push'](_0x20c880['shift']());}};_0x24809a(++_0x14bf51);}(_0x888e,0x116));var _0xe888=function(_0x23732c,_0x4ec983){_0x23732c=_0x23732c-0x0;var _0x4f2c26=_0x888e[_0x23732c];return _0x4f2c26;};'use strict';var _=require(_0xe888('0x0'));var util=require('util');var moment=require(_0xe888('0x1'));var BPromise=require(_0xe888('0x2'));var rs=require(_0xe888('0x3'));var fs=require('fs');var Redis=require(_0xe888('0x4'));var db=require(_0xe888('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xe888('0x6'))('rpc');var config=require(_0xe888('0x7'));var jayson=require(_0xe888('0x8'));var client=jayson[_0xe888('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x39c97b,_0x24625d,_0x2bd98e){return new BPromise(function(_0x1281c7,_0x4fedad){return client['request'](_0x39c97b,_0x2bd98e)[_0xe888('0xa')](function(_0x216e27){logger[_0xe888('0xb')](_0xe888('0xc'),_0x24625d,'request\x20sent');logger[_0xe888('0xd')](_0xe888('0xe'),_0x24625d,_0xe888('0xf'),JSON['stringify'](_0x216e27));if(_0x216e27[_0xe888('0x10')]){if(_0x216e27['error'][_0xe888('0x11')]===0x1f4){logger[_0xe888('0x10')]('MailApplication,\x20%s,\x20%s',_0x24625d,_0x216e27[_0xe888('0x10')]['message']);return _0x4fedad(_0x216e27['error'][_0xe888('0x12')]);}logger[_0xe888('0x10')](_0xe888('0xc'),_0x24625d,_0x216e27[_0xe888('0x10')][_0xe888('0x12')]);return _0x1281c7(_0x216e27[_0xe888('0x10')][_0xe888('0x12')]);}else{logger[_0xe888('0xb')](_0xe888('0xc'),_0x24625d,_0xe888('0xf'));_0x1281c7(_0x216e27[_0xe888('0x13')]['message']);}})['catch'](function(_0x196287){logger['error'](_0xe888('0xc'),_0x24625d,_0x196287);_0x4fedad(_0x196287);});});}exports[_0xe888('0x14')]=function(_0x48c529){var _0x555f4c=this;return new Promise(function(_0x46128e,_0x4cbcf7){return db[_0xe888('0x15')][_0xe888('0x16')](_0x48c529[_0xe888('0x17')],{'raw':_0x48c529[_0xe888('0x18')]?_0x48c529['options'][_0xe888('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x48c529[_0xe888('0x18')]?_0x48c529[_0xe888('0x18')][_0xe888('0x1a')]||null:null,'attributes':_0x48c529[_0xe888('0x18')]?_0x48c529[_0xe888('0x18')]['attributes']||null:null,'limit':_0x48c529[_0xe888('0x18')]?_0x48c529[_0xe888('0x18')][_0xe888('0x1b')]||null:null})[_0xe888('0xa')](function(_0x35b265){logger[_0xe888('0xb')](_0xe888('0x14'),_0x48c529);logger[_0xe888('0xd')](_0xe888('0x14'),_0x48c529,JSON[_0xe888('0x1c')](_0x35b265));_0x46128e(_0x35b265);})[_0xe888('0x1d')](function(_0xce0919){logger[_0xe888('0x10')](_0xe888('0x14'),_0xce0919['message'],_0x48c529);_0x4cbcf7(_0x555f4c[_0xe888('0x10')](0x1f4,_0xce0919[_0xe888('0x12')]));});});};
\ No newline at end of file
+var _0xd1eb=['error','code','MailApplication,\x20%s,\x20%s','message','info','catch','UpdateMailApplication','MailApplication','update','body','options','where','attributes','limit','stringify','lodash','util','moment','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','request\x20sent','debug','MailApplication,\x20%s,\x20%s,\x20%s'];(function(_0x366e29,_0x3c4f45){var _0x2f5ec4=function(_0x4e68bf){while(--_0x4e68bf){_0x366e29['push'](_0x366e29['shift']());}};_0x2f5ec4(++_0x3c4f45);}(_0xd1eb,0xc3));var _0xbd1e=function(_0x4d6d39,_0x547dac){_0x4d6d39=_0x4d6d39-0x0;var _0x7fb4dd=_0xd1eb[_0x4d6d39];return _0x7fb4dd;};'use strict';var _=require(_0xbd1e('0x0'));var util=require(_0xbd1e('0x1'));var moment=require(_0xbd1e('0x2'));var BPromise=require('bluebird');var rs=require(_0xbd1e('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xbd1e('0x4'));var logger=require(_0xbd1e('0x5'))(_0xbd1e('0x6'));var config=require(_0xbd1e('0x7'));var jayson=require(_0xbd1e('0x8'));var client=jayson[_0xbd1e('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4a5e0b,_0x2c5fd3,_0x3934dc){return new BPromise(function(_0x36776c,_0x5d44e){return client[_0xbd1e('0xa')](_0x4a5e0b,_0x3934dc)[_0xbd1e('0xb')](function(_0x221bf4){logger['info']('MailApplication,\x20%s,\x20%s',_0x2c5fd3,_0xbd1e('0xc'));logger[_0xbd1e('0xd')](_0xbd1e('0xe'),_0x2c5fd3,_0xbd1e('0xc'),JSON['stringify'](_0x221bf4));if(_0x221bf4[_0xbd1e('0xf')]){if(_0x221bf4[_0xbd1e('0xf')][_0xbd1e('0x10')]===0x1f4){logger[_0xbd1e('0xf')](_0xbd1e('0x11'),_0x2c5fd3,_0x221bf4[_0xbd1e('0xf')][_0xbd1e('0x12')]);return _0x5d44e(_0x221bf4[_0xbd1e('0xf')][_0xbd1e('0x12')]);}logger[_0xbd1e('0xf')](_0xbd1e('0x11'),_0x2c5fd3,_0x221bf4[_0xbd1e('0xf')][_0xbd1e('0x12')]);return _0x36776c(_0x221bf4[_0xbd1e('0xf')][_0xbd1e('0x12')]);}else{logger[_0xbd1e('0x13')]('MailApplication,\x20%s,\x20%s',_0x2c5fd3,_0xbd1e('0xc'));_0x36776c(_0x221bf4['result'][_0xbd1e('0x12')]);}})[_0xbd1e('0x14')](function(_0x525980){logger[_0xbd1e('0xf')](_0xbd1e('0x11'),_0x2c5fd3,_0x525980);_0x5d44e(_0x525980);});});}exports[_0xbd1e('0x15')]=function(_0x211978){var _0x55c126=this;return new Promise(function(_0x1fb242,_0x4cb77b){return db[_0xbd1e('0x16')][_0xbd1e('0x17')](_0x211978[_0xbd1e('0x18')],{'raw':_0x211978[_0xbd1e('0x19')]?_0x211978[_0xbd1e('0x19')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x211978[_0xbd1e('0x19')]?_0x211978[_0xbd1e('0x19')][_0xbd1e('0x1a')]||null:null,'attributes':_0x211978[_0xbd1e('0x19')]?_0x211978[_0xbd1e('0x19')][_0xbd1e('0x1b')]||null:null,'limit':_0x211978[_0xbd1e('0x19')]?_0x211978[_0xbd1e('0x19')][_0xbd1e('0x1c')]||null:null})[_0xbd1e('0xb')](function(_0x460a2c){logger[_0xbd1e('0x13')]('UpdateMailApplication',_0x211978);logger['debug'](_0xbd1e('0x15'),_0x211978,JSON[_0xbd1e('0x1d')](_0x460a2c));_0x1fb242(_0x460a2c);})[_0xbd1e('0x14')](function(_0x4ef8d9){logger[_0xbd1e('0xf')](_0xbd1e('0x15'),_0x4ef8d9['message'],_0x211978);_0x4cb77b(_0x55c126[_0xbd1e('0xf')](0x1f4,_0x4ef8d9[_0xbd1e('0x12')]));});});};
\ No newline at end of file
index 8957037..c76730f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6788=['/:id/download','post','create','addMessage','/:id/tags','mail','mailinteraction:addtags','addTags','tracked','update','delete','mailinteraction:destroy','removeTags','exports','express','Router','../../components/interaction/service','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/messages','getMessages'];(function(_0x1e0139,_0x4970a3){var _0xbfc2ba=function(_0x20ee9e){while(--_0x20ee9e){_0x1e0139['push'](_0x1e0139['shift']());}};_0xbfc2ba(++_0x4970a3);}(_0x6788,0xc4));var _0x8678=function(_0x411017,_0x4a8117){_0x411017=_0x411017-0x0;var _0x2adeea=_0x6788[_0x411017];return _0x2adeea;};'use strict';var express=require(_0x8678('0x0'));var router=express[_0x8678('0x1')]();var auth=require('../../components/auth/service');var interaction=require(_0x8678('0x2'));var controller=require('./mailInteraction.controller');router[_0x8678('0x3')]('/',auth[_0x8678('0x4')](),controller[_0x8678('0x5')]);router['get'](_0x8678('0x6'),auth[_0x8678('0x4')](),controller[_0x8678('0x7')]);router[_0x8678('0x3')](_0x8678('0x8'),auth['isAuthenticated'](),controller[_0x8678('0x9')]);router[_0x8678('0x3')](_0x8678('0xa'),auth[_0x8678('0x4')](),controller[_0x8678('0xb')]);router[_0x8678('0x3')](_0x8678('0xc'),auth[_0x8678('0x4')](),controller['download']);router[_0x8678('0xd')]('/',auth[_0x8678('0x4')](),controller[_0x8678('0xe')]);router[_0x8678('0xd')](_0x8678('0xa'),auth[_0x8678('0x4')](),controller[_0x8678('0xf')]);router[_0x8678('0xd')](_0x8678('0x10'),auth[_0x8678('0x4')](),interaction['tracked'](_0x8678('0x11'),_0x8678('0x12')),controller[_0x8678('0x13')]);router['put']('/:id',auth['isAuthenticated'](),interaction[_0x8678('0x14')](_0x8678('0x11'),'mailinteraction:update'),controller[_0x8678('0x15')]);router[_0x8678('0x16')](_0x8678('0x8'),auth[_0x8678('0x4')](),interaction['tracked']('mail',_0x8678('0x17')),controller['destroy']);router[_0x8678('0x16')]('/:id/tags',auth[_0x8678('0x4')](),controller[_0x8678('0x18')]);module[_0x8678('0x19')]=router;
\ No newline at end of file
+var _0x4141=['mail','mailinteraction:update','update','delete','mailinteraction:destroy','destroy','exports','express','../../components/auth/service','../../components/interaction/service','./mailInteraction.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/messages','getMessages','post','/:id/tags','tracked','mailinteraction:addtags','addTags','put'];(function(_0x33032e,_0x31411a){var _0x13316b=function(_0x2fb049){while(--_0x2fb049){_0x33032e['push'](_0x33032e['shift']());}};_0x13316b(++_0x31411a);}(_0x4141,0xbd));var _0x1414=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x4141[_0x57b54c];return _0x59cc19;};'use strict';var express=require(_0x1414('0x0'));var router=express['Router']();var auth=require(_0x1414('0x1'));var interaction=require(_0x1414('0x2'));var controller=require(_0x1414('0x3'));router[_0x1414('0x4')]('/',auth[_0x1414('0x5')](),controller[_0x1414('0x6')]);router[_0x1414('0x4')](_0x1414('0x7'),auth[_0x1414('0x5')](),controller[_0x1414('0x8')]);router['get'](_0x1414('0x9'),auth[_0x1414('0x5')](),controller[_0x1414('0xa')]);router[_0x1414('0x4')](_0x1414('0xb'),auth['isAuthenticated'](),controller[_0x1414('0xc')]);router[_0x1414('0x4')]('/:id/download',auth[_0x1414('0x5')](),controller['download']);router[_0x1414('0xd')]('/',auth[_0x1414('0x5')](),controller['create']);router[_0x1414('0xd')](_0x1414('0xb'),auth[_0x1414('0x5')](),controller['addMessage']);router[_0x1414('0xd')](_0x1414('0xe'),auth[_0x1414('0x5')](),interaction[_0x1414('0xf')]('mail',_0x1414('0x10')),controller[_0x1414('0x11')]);router[_0x1414('0x12')](_0x1414('0x9'),auth[_0x1414('0x5')](),interaction[_0x1414('0xf')](_0x1414('0x13'),_0x1414('0x14')),controller[_0x1414('0x15')]);router[_0x1414('0x16')](_0x1414('0x9'),auth['isAuthenticated'](),interaction[_0x1414('0xf')](_0x1414('0x13'),_0x1414('0x17')),controller[_0x1414('0x18')]);router['delete'](_0x1414('0xe'),auth[_0x1414('0x5')](),controller['removeTags']);module[_0x1414('0x19')]=router;
\ No newline at end of file
index dd743a8..61e352f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x95d9=['BOOLEAN','DATE','STRING','TEXT','long','ENUM','sequelize','iconv','exports'];(function(_0x250071,_0x301941){var _0x34e574=function(_0x567186){while(--_0x567186){_0x250071['push'](_0x250071['shift']());}};_0x34e574(++_0x301941);}(_0x95d9,0x138));var _0x995d=function(_0x4d8ed9,_0x2ae284){_0x4d8ed9=_0x4d8ed9-0x0;var _0x1e2140=_0x95d9[_0x4d8ed9];return _0x1e2140;};'use strict';var Sequelize=require(_0x995d('0x0'));var iconv=require(_0x995d('0x1'));module[_0x995d('0x2')]={'closed':{'type':Sequelize[_0x995d('0x3')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x995d('0x4')]},'disposition':{'type':Sequelize[_0x995d('0x5')]},'secondDisposition':{'type':Sequelize[_0x995d('0x5')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0x995d('0x5')]},'inReplyTo':{'type':Sequelize['STRING'](0x1fe)},'to':{'type':Sequelize[_0x995d('0x5')]},'cc':{'type':Sequelize[_0x995d('0x6')](_0x995d('0x7'))},'subject':{'type':Sequelize['TEXT']()},'attach':{'type':Sequelize[_0x995d('0x3')],'defaultValue':![]},'read1stAt':{'type':Sequelize[_0x995d('0x4')]},'substatus':{'type':Sequelize['STRING'](0x3c)},'substatusAt':{'type':Sequelize['DATE']},'firstMsgDirection':{'type':Sequelize[_0x995d('0x8')]('in','out'),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x995d('0x4')]},'lastMsgDirection':{'type':Sequelize['ENUM']('in','out'),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x995d('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0xb9f7=['TEXT','DATE','out','sequelize','exports','BOOLEAN','STRING'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xb9f7,0x1df));var _0x7b9f=function(_0x4ed4d2,_0x47acf7){_0x4ed4d2=_0x4ed4d2-0x0;var _0x15ae2e=_0xb9f7[_0x4ed4d2];return _0x15ae2e;};'use strict';var Sequelize=require(_0x7b9f('0x0'));var iconv=require('iconv');module[_0x7b9f('0x1')]={'closed':{'type':Sequelize[_0x7b9f('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0x7b9f('0x3')]},'secondDisposition':{'type':Sequelize[_0x7b9f('0x3')]},'thirdDisposition':{'type':Sequelize[_0x7b9f('0x3')]},'note':{'type':Sequelize[_0x7b9f('0x3')]},'inReplyTo':{'type':Sequelize[_0x7b9f('0x3')](0x1fe)},'to':{'type':Sequelize[_0x7b9f('0x3')]},'cc':{'type':Sequelize[_0x7b9f('0x4')]('long')},'subject':{'type':Sequelize[_0x7b9f('0x4')]()},'attach':{'type':Sequelize[_0x7b9f('0x2')],'defaultValue':![]},'read1stAt':{'type':Sequelize[_0x7b9f('0x5')]},'substatus':{'type':Sequelize['STRING'](0x3c)},'substatusAt':{'type':Sequelize[_0x7b9f('0x5')]},'firstMsgDirection':{'type':Sequelize['ENUM']('in',_0x7b9f('0x6')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x7b9f('0x5')]},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0x7b9f('0x6')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x7b9f('0x2')],'defaultValue':![]}};
\ No newline at end of file
index 8b036f5..c967cb4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ffc=['Attachments','Messages','bcc','subject','createdAt','mkdirSync','each','headers','basename','readFileSync','writeFileSync','message%d.eml','download','eml-format','rimraf','zip-dir','moment','util','path','lodash','squel','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../mysqldb','redis','./mailInteraction.socket','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','update','then','destroy','error','name','Users','fullname','TagIds','Tags','forEach','MailMessage','findOne','out','plainBody','-id','lastMsgText','catch','index','map','rawAttributes','type','key','model','keys','query','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','field','color','from','select','u.id','u.fullname','user_has_mail_interactions','left_join','users','u.id\x20=\x20ui.UserId','mail_interactions','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','mail_accounts','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','unreadMessages','value','having','`\x20>\x200','Contact','$substring','split','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','text','start','Tag','union','operator','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','isEmpty','i.MailAccountId\x20IN\x20?','concat','parse','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','isArray','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','filter','isNumeric','i.id\x20LIKE\x20?','isEmail','c.email\x20LIKE\x20?','MATCH\x20(i.to,\x20i.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','MATCH\x20(me.plainBody,\x20me.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','group','Sequelize','QueryTypes','SELECT','i.id','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','t.id\x20IN\x20?','MailAccountId','i.MailAccountId\x20IS\x20NOT\x20NULL','user','role','agent','i.MailAccountId\x20IS\x20NULL','sequelize','toString','keyBy','MailInteraction','a.key','Account.key','Account.mandatoryDisposition','contactName','i.closed','i.lastMsgAt','i.subject','i.disposition','i.secondDisposition','i.thirdDisposition','i.substatus','i.to','i.ContactId','i.MailAccountId','Contact.firstName','c.lastName','Contact.lastName','c.email','Contact.email','c.phone','c.mobile','Contact.mobile','c.fax','o.fullname','Owner.fullname','o.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.MailInteractionId\x20IN\x20?','groupBy','MailInteractionId','Setting','enableEmailPreview','push','all','show','includeAll','include','options','create','body','params','describe','addMessage','omit','ids','getMessages','merge','$gte','format','YYYY-MM-DD\x20HH:mm:ss','findAll','inlineCss','rows','addTags','setTags','emit','mailInteractionTags:save','removeTags','root','files','server','attachments','transcript-%d-%s.zip','join','Attachment'];(function(_0x403de2,_0x53ffb0){var _0x3619cf=function(_0x55a82e){while(--_0x55a82e){_0x403de2['push'](_0x403de2['shift']());}};_0x3619cf(++_0x53ffb0);}(_0x5ffc,0xea));var _0xc5ff=function(_0x16dbab,_0x3ac1e1){_0x16dbab=_0x16dbab-0x0;var _0x59b0b2=_0x5ffc[_0x16dbab];return _0x59b0b2;};'use strict';var emlformat=require(_0xc5ff('0x0'));var rimraf=require(_0xc5ff('0x1'));var zipdir=require(_0xc5ff('0x2'));var moment=require(_0xc5ff('0x3'));var BPromise=require('bluebird');var util=require(_0xc5ff('0x4'));var path=require(_0xc5ff('0x5'));var fs=require('fs');var _=require(_0xc5ff('0x6'));var squel=require(_0xc5ff('0x7'));var juice=require('juice');var Redis=require(_0xc5ff('0x8'));var qs=require(_0xc5ff('0x9'));var as=require(_0xc5ff('0xa'));var logger=require(_0xc5ff('0xb'))(_0xc5ff('0xc'));var config=require(_0xc5ff('0xd'));var db=require(_0xc5ff('0xe'))['db'];config[_0xc5ff('0xf')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xc5ff('0x10'))['register'](socket);function respondWithStatusCode(_0x390305,_0x155546){_0x155546=_0x155546||0xcc;return function(_0xe6fbf1){if(_0xe6fbf1){return _0x390305[_0xc5ff('0x11')](_0x155546);}return _0x390305[_0xc5ff('0x12')](_0x155546)[_0xc5ff('0x13')]();};}function respondWithResult(_0x31641f,_0x45139e){_0x45139e=_0x45139e||0xc8;return function(_0x1742dc){if(_0x1742dc){return _0x31641f['status'](_0x45139e)[_0xc5ff('0x14')](_0x1742dc);}};}function respondWithFilteredResult(_0x3c70a7,_0xa9b27e){return function(_0x15b654){if(_0x15b654){var _0x5765f8=typeof _0xa9b27e[_0xc5ff('0x15')]===_0xc5ff('0x16')&&typeof _0xa9b27e[_0xc5ff('0x17')]===_0xc5ff('0x16');var _0x198eb3=_0x15b654[_0xc5ff('0x18')];var _0x447e3f=_0x5765f8?0x0:_0xa9b27e[_0xc5ff('0x15')];var _0x533b8a=_0x5765f8?_0x15b654['count']:_0xa9b27e[_0xc5ff('0x15')]+_0xa9b27e[_0xc5ff('0x17')];var _0x24dc91;if(_0x533b8a>=_0x198eb3){_0x533b8a=_0x198eb3;_0x24dc91=0xc8;}else{_0x24dc91=0xce;}_0x3c70a7['status'](_0x24dc91);return _0x3c70a7[_0xc5ff('0x19')](_0xc5ff('0x1a'),_0x447e3f+'-'+_0x533b8a+'/'+_0x198eb3)[_0xc5ff('0x14')](_0x15b654);}return null;};}function saveUpdates(_0x259178){return function(_0xc5c578){if(_0xc5c578){return _0xc5c578[_0xc5ff('0x1b')](_0x259178)[_0xc5ff('0x1c')](function(_0xa8cab6){return _0xa8cab6;});}return null;};}function removeEntity(_0x2fd4c1){return function(_0x2a3e29){if(_0x2a3e29){return _0x2a3e29[_0xc5ff('0x1d')]()[_0xc5ff('0x1c')](function(){_0x2fd4c1[_0xc5ff('0x12')](0xcc)[_0xc5ff('0x13')]();});}};}function handleEntityNotFound(_0x4cb497){return function(_0x33aa09){if(!_0x33aa09){_0x4cb497[_0xc5ff('0x11')](0x194);}return _0x33aa09;};}function handleError(_0xbfed65,_0x19cbfd){_0x19cbfd=_0x19cbfd||0x1f4;return function(_0x2b212c){logger[_0xc5ff('0x1e')](_0x2b212c['stack']);if(_0x2b212c[_0xc5ff('0x1f')]){delete _0x2b212c[_0xc5ff('0x1f')];}_0xbfed65[_0xc5ff('0x12')](_0x19cbfd)['send'](_0x2b212c);};}function getInteractionUsers(_0xfba44e,_0x141512){return new BPromise(function(_0x21a3ca,_0x55978f){try{if(_0x141512[_0xfba44e['id']]){_0xfba44e[_0xc5ff('0x20')]=_['map'](_0x141512[_0xfba44e['id']],function(_0x57265b){return{'id':_0x57265b['id'],'fullname':_0x57265b[_0xc5ff('0x21')]};});}}catch(_0x55af1c){_0x55978f(_0x55af1c);}_0x21a3ca(_0xfba44e);});}function getInteractionTags(_0xfdf254,_0x6fcbb4){return new BPromise(function(_0x128924,_0x5a77d5){try{if(_0xfdf254[_0xc5ff('0x22')]){_0xfdf254[_0xc5ff('0x23')]=[];_0xfdf254['TagIds']['split'](',')[_0xc5ff('0x24')](function(_0x2835a2){_0xfdf254['Tags']['push'](_0x6fcbb4[_0x2835a2]);});}delete _0xfdf254['TagIds'];}catch(_0x3f6512){_0x5a77d5(_0x3f6512);}_0x128924(_0xfdf254);});}function getLastMessageText(_0x39760d){return new BPromise(function(_0x7776e9,_0x5d4130){return db[_0xc5ff('0x25')][_0xc5ff('0x26')]({'where':{'$and':[{'MailInteractionId':_0x39760d['id']},{'$or':[{'direction':'in'},{'$and':[{'direction':_0xc5ff('0x27')},{'secret':![]},{'UserId':{'$ne':null}}]}]}]},'attributes':[_0xc5ff('0x28')],'order':_0xc5ff('0x29'),'raw':!![]})['then'](function(_0x357159){if(_0x357159&&_0x357159[_0xc5ff('0x28')]){_0x39760d[_0xc5ff('0x2a')]=_['trimStart'](_0x357159[_0xc5ff('0x28')]);}_0x7776e9(_0x39760d);})[_0xc5ff('0x2b')](function(_0x190f8f){_0x5d4130(_0x190f8f);});});}function updateMailInteraction(_0xb2518c,_0x65f5,_0x4443cc,_0x1122ea){return new BPromise(function(_0xa6596e,_0x5d5632){return getInteractionUsers(_0xb2518c,_0x4443cc)[_0xc5ff('0x1c')](function(_0x4917e7){return getInteractionTags(_0x4917e7,_0x65f5);})[_0xc5ff('0x1c')](function(_0x3ef78b){if(_0x1122ea){_0xa6596e(getLastMessageText(_0x3ef78b));}else{_0xa6596e(_0x3ef78b);}})['catch'](function(_0x55309d){_0x5d5632(_0x55309d);});});}exports[_0xc5ff('0x2c')]=function(_0x199d4e,_0x220ff2){var _0x180609={},_0x3e1940={},_0x3329b4={'count':0x0,'rows':[]};var _0x1c657e=_[_0xc5ff('0x2d')](db['MailInteraction'][_0xc5ff('0x2e')],function(_0x3af06c){return{'name':_0x3af06c['fieldName'],'type':_0x3af06c[_0xc5ff('0x2f')][_0xc5ff('0x30')]};});_0x3e1940[_0xc5ff('0x31')]=_['map'](_0x1c657e,'name');_0x3e1940['query']=_[_0xc5ff('0x32')](_0x199d4e[_0xc5ff('0x33')]);_0x3e1940['filters']=_['intersection'](_0x3e1940[_0xc5ff('0x31')],_0x3e1940[_0xc5ff('0x33')]);_0x180609['attributes']=_[_0xc5ff('0x34')](_0x3e1940['model'],qs['fields'](_0x199d4e[_0xc5ff('0x33')][_0xc5ff('0x35')]));_0x180609['attributes']=_0x180609[_0xc5ff('0x36')][_0xc5ff('0x37')]?_0x180609[_0xc5ff('0x36')]:_0x3e1940[_0xc5ff('0x31')];if(!_0x199d4e[_0xc5ff('0x33')][_0xc5ff('0x38')](_0xc5ff('0x39'))){_0x180609[_0xc5ff('0x17')]=qs['limit'](_0x199d4e[_0xc5ff('0x33')][_0xc5ff('0x17')]);_0x180609[_0xc5ff('0x15')]=qs[_0xc5ff('0x15')](_0x199d4e[_0xc5ff('0x33')][_0xc5ff('0x15')]);}_0x180609[_0xc5ff('0x3a')]=qs[_0xc5ff('0x3b')](_0x199d4e['query']['sort']);_0x180609[_0xc5ff('0x3c')]=qs[_0xc5ff('0x3d')](_[_0xc5ff('0x3e')](_0x199d4e['query'],_0x3e1940['filters']),_0x1c657e);var _0x3d6952=[];var _0x1516bd=squel['select']()[_0xc5ff('0x3f')]('id')[_0xc5ff('0x3f')]('name')[_0xc5ff('0x3f')](_0xc5ff('0x40'))[_0xc5ff('0x41')]('tools_tags');var _0x1062b9=squel[_0xc5ff('0x42')]()[_0xc5ff('0x3f')](_0xc5ff('0x43'))[_0xc5ff('0x3f')](_0xc5ff('0x44'))[_0xc5ff('0x3f')]('ui.MailInteractionId')[_0xc5ff('0x41')](_0xc5ff('0x45'),'ui')[_0xc5ff('0x46')](_0xc5ff('0x47'),'u',_0xc5ff('0x48'));var _0x2ec35c=squel[_0xc5ff('0x42')]()[_0xc5ff('0x41')](_0xc5ff('0x49'),'i')[_0xc5ff('0x46')]('cm_contacts','c',_0xc5ff('0x4a'))[_0xc5ff('0x46')](_0xc5ff('0x47'),'o','o.id\x20=\x20i.UserId')[_0xc5ff('0x46')](_0xc5ff('0x4b'),'a',_0xc5ff('0x4c'))['left_join'](_0xc5ff('0x4d'),'me',_0xc5ff('0x4e'))[_0xc5ff('0x46')](_0xc5ff('0x4f'),'it',_0xc5ff('0x50'))[_0xc5ff('0x46')](_0xc5ff('0x51'),'t',_0xc5ff('0x52'));var _0x4fdcc4=squel[_0xc5ff('0x53')]();var _0x26bcca=[];var _0x20b8fd=squel[_0xc5ff('0x53')]();var _0x220c60;if(_0x199d4e['query'][_0xc5ff('0x54')]){_0x220c60=as[_0xc5ff('0x55')](_0x199d4e['query'][_0xc5ff('0x54')]);var _0x3a5c13=_0x220c60['sqlOperator'];for(var _0x2171c2=0x0;_0x2171c2<_0x220c60['conditions'][_0xc5ff('0x37')];_0x2171c2++){var _0x541fff=_0x220c60[_0xc5ff('0x56')][_0x2171c2];var _0x3c24eb='i';var _0x51be2d=_[_0xc5ff('0x57')](_0x1c657e,[_0xc5ff('0x1f'),_0x541fff[_0xc5ff('0x3f')]]);if(!_0x51be2d){switch(_0x541fff[_0xc5ff('0x3f')]){case _0xc5ff('0x58'):if(_0x541fff[_0xc5ff('0x59')]==0x1){_0x2ec35c[_0xc5ff('0x5a')]('`'+_0x541fff[_0xc5ff('0x3f')]+'`\x20=\x200');}else{_0x2ec35c['having']('`'+_0x541fff['field']+_0xc5ff('0x5b'));}break;case _0xc5ff('0x5c'):if(_0x541fff['operator']===_0xc5ff('0x5d')){if(_0x541fff[_0xc5ff('0x59')][_0xc5ff('0x5e')]('\x20')[_0xc5ff('0x37')]>0x1){_0x4fdcc4[_0x3a5c13]('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0xc5ff('0x5f')](_0x541fff[_0xc5ff('0x59')]),null);}else{var _0x23a7be='%'+_0x541fff[_0xc5ff('0x59')]+'%';_0x4fdcc4[_0x3a5c13](_0xc5ff('0x60'),_0x23a7be,_0x23a7be,_0x23a7be);}}else{_0x51be2d=_['find'](_0x1c657e,[_0xc5ff('0x1f'),_0xc5ff('0x61')]);_0x541fff['field']='ContactId';_0x442c23=as[_0xc5ff('0x62')](_0x3c24eb,_0x51be2d['type'],_0x541fff);_0x4fdcc4[_0x3a5c13](_0x442c23[_0xc5ff('0x63')],_0x442c23[_0xc5ff('0x59')][_0xc5ff('0x64')],_0x442c23[_0xc5ff('0x59')][_0xc5ff('0x13')]);}break;case _0xc5ff('0x65'):var _0xbcb89f=_0x541fff[_0xc5ff('0x59')][_0xc5ff('0x5e')](',')[_0xc5ff('0x2d')](function(_0x4a97eb){return Number(_0x4a97eb);});_0xbcb89f[_0xc5ff('0x24')](function(_0x37683c){_0x20b8fd['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x37683c+',%');});_0x26bcca=_[_0xc5ff('0x66')](_0x26bcca,_0xbcb89f);break;case'User':if(_0x541fff[_0xc5ff('0x67')]===_0xc5ff('0x5d')){_0x4fdcc4[_0x3a5c13](_0xc5ff('0x68'),'%'+_0x541fff[_0xc5ff('0x59')]+'%',null);}else{_0x51be2d=_[_0xc5ff('0x57')](_0x1c657e,['name','UserId']);_0x541fff['field']=_0xc5ff('0x69');_0x442c23=as[_0xc5ff('0x62')](_0x3c24eb,_0x51be2d[_0xc5ff('0x2f')],_0x541fff);_0x4fdcc4[_0x3a5c13](_0x442c23[_0xc5ff('0x63')],_0x442c23['value'][_0xc5ff('0x64')],_0x442c23[_0xc5ff('0x59')][_0xc5ff('0x13')]);}break;case _0xc5ff('0x28'):_0x442c23=as['buildExpression']('me',null,_0x541fff);_0x4fdcc4[_0x3a5c13](_0x442c23['text'],_0x442c23['value'][_0xc5ff('0x64')],_0x442c23[_0xc5ff('0x59')][_0xc5ff('0x13')]);break;}}else{var _0x442c23=as[_0xc5ff('0x62')](_0x3c24eb,_0x51be2d[_0xc5ff('0x2f')],_0x541fff);_0x4fdcc4[_0x3a5c13](_0x442c23['text'],_0x442c23[_0xc5ff('0x59')][_0xc5ff('0x64')],_0x442c23[_0xc5ff('0x59')][_0xc5ff('0x13')]);}}}else{var _0x4878af=_(_0x199d4e['query'])[_0xc5ff('0x32')]()['map'](function(_0x27eaef){return _['some'](_0x1c657e,[_0xc5ff('0x1f'),_0x27eaef])?_0x27eaef:undefined;})['compact']()[_0xc5ff('0x59')]();if(!_[_0xc5ff('0x6a')](_0x4878af)){_0x4878af[_0xc5ff('0x24')](function(_0x51aba4){if(_0x51aba4==='MailAccountId'){_0x2ec35c[_0xc5ff('0x3c')](_0xc5ff('0x6b'),[][_0xc5ff('0x6c')](_0x199d4e[_0xc5ff('0x33')][_0x51aba4]));}else if(_0x51aba4==='createdAt'){var _0xf4c521=JSON['parse'](_0x199d4e[_0xc5ff('0x33')][_0x51aba4])['$gte'];var _0x4c0f08=JSON[_0xc5ff('0x6d')](_0x199d4e['query'][_0x51aba4])[_0xc5ff('0x6e')];_0x2ec35c[_0xc5ff('0x3c')](_0xc5ff('0x6f'),_0xf4c521,_0x4c0f08);}else{if(_0x199d4e['query'][_0x51aba4]===_0xc5ff('0x70')){_0x2ec35c[_0xc5ff('0x3c')]('i.'+_0x51aba4+'\x20IS\x20NULL');}else{_0x2ec35c[_0xc5ff('0x3c')]('i.'+_0x51aba4+'\x20=\x20?',_0x199d4e['query'][_0x51aba4]);}}});}if(_0x199d4e[_0xc5ff('0x33')][_0xc5ff('0x71')]){if(_0x199d4e[_0xc5ff('0x33')]['read']==0x1){_0x2ec35c[_0xc5ff('0x5a')](_0xc5ff('0x72'));}else{_0x2ec35c[_0xc5ff('0x5a')](_0xc5ff('0x73'));}}if(_0x199d4e['query'][_0xc5ff('0x74')]){_0x26bcca=_[_0xc5ff('0x75')](_0x199d4e[_0xc5ff('0x33')]['tag'])?_0x199d4e[_0xc5ff('0x33')]['tag']:new Array(_0x199d4e[_0xc5ff('0x33')][_0xc5ff('0x74')]);_0x26bcca[_0xc5ff('0x24')](function(_0x1bf030){_0x20b8fd['or'](_0xc5ff('0x76'),'%,'+_0x1bf030+',%');});}if(_0x199d4e[_0xc5ff('0x33')][_0xc5ff('0x77')]){var _0x28330a=_0x199d4e['query'][_0xc5ff('0x77')]['replace']('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(qs[_0xc5ff('0x78')](_0x28330a)){_0x4fdcc4['or'](_0xc5ff('0x79'),_0x28330a+'%');}else if(qs[_0xc5ff('0x7a')](_0x28330a)){_0x4fdcc4['or'](_0xc5ff('0x7b'),_0x28330a+'%');}else{_0x4fdcc4['or'](_0xc5ff('0x7c'),qs[_0xc5ff('0x5f')](_0x28330a))['or'](_0xc5ff('0x7d'),qs['getFullTextValue'](_0x28330a));}}}_0x2ec35c[_0xc5ff('0x3c')](_0x4fdcc4);_0x2ec35c[_0xc5ff('0x7e')]('i.id');var _0x58e495={'type':db[_0xc5ff('0x7f')][_0xc5ff('0x80')][_0xc5ff('0x81')],'raw':!![]};var _0x532b1c=_0x2ec35c['clone']();_0x532b1c['field'](_0xc5ff('0x82'));_0x532b1c['field'](_0xc5ff('0x83'),_0xc5ff('0x58'));if(_0x180609[_0xc5ff('0x3a')]){_0x180609['order'][_0xc5ff('0x24')](function(_0x472fee){var _0x117b81=_0x472fee[0x0]==='contactName'?_0x472fee[0x0]:'i.'+_0x472fee[0x0];_0x2ec35c[_0xc5ff('0x3a')](_0x117b81,_0x472fee[0x1]==='DESC'?![]:!![]);});}if(!_['isEmpty'](_0x26bcca)){_0x2ec35c['having'](_0x20b8fd);_0x532b1c['where'](_0xc5ff('0x84'),_0x26bcca);}BPromise['resolve']()[_0xc5ff('0x1c')](function(){if(!_0x220c60){if(_0x199d4e['query'][_0xc5ff('0x85')])return;_0x532b1c[_0xc5ff('0x3c')](_0xc5ff('0x86'));_0x2ec35c[_0xc5ff('0x3c')](_0xc5ff('0x86'));return;}if(_0x199d4e[_0xc5ff('0x87')][_0xc5ff('0x88')]!==_0xc5ff('0x89'))return;return _0x199d4e[_0xc5ff('0x87')]['getMailAccounts']({'attributes':['id'],'raw':!![]})[_0xc5ff('0x1c')](function(_0x1297b2){if(_[_0xc5ff('0x6a')](_0x1297b2)){_0x532b1c[_0xc5ff('0x3c')]('i.MailAccountId\x20IS\x20NULL');_0x2ec35c['where'](_0xc5ff('0x8a'));}else{_0x532b1c['where'](_0xc5ff('0x6b'),_['map'](_0x1297b2,'id'));_0x2ec35c['where']('i.MailAccountId\x20IN\x20?',_[_0xc5ff('0x2d')](_0x1297b2,'id'));}});})[_0xc5ff('0x1c')](function(){if(_0x199d4e['user'][_0xc5ff('0x88')]===_0xc5ff('0x89')&&!_0x220c60&&!_0x199d4e['query'][_0xc5ff('0x85')])return[];return db[_0xc5ff('0x8b')][_0xc5ff('0x33')](_0x532b1c[_0xc5ff('0x8c')](),_0x58e495);})[_0xc5ff('0x1c')](function(_0x24a257){_0x3329b4['count']=_0x24a257[_0xc5ff('0x37')];if(_0x3329b4['count']===0x0)return[];return db[_0xc5ff('0x8b')][_0xc5ff('0x33')](_0x1516bd['toString'](),_0x58e495)[_0xc5ff('0x1c')](function(_0x55dd9c){_0x3d6952=_[_0xc5ff('0x8d')](_0x55dd9c,'id');_0x58e495=_['merge'](_0x58e495,{'model':db[_0xc5ff('0x8e')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x199d4e['query'][_0xc5ff('0x35')]){_0x180609['attributes']['forEach'](function(_0x48f22a){_0x2ec35c['field']('i.'+_0x48f22a);});}else{_0x2ec35c[_0xc5ff('0x3f')](_0xc5ff('0x83'),'unreadMessages');_0x2ec35c[_0xc5ff('0x3f')](_0xc5ff('0x8f'),_0xc5ff('0x90'));_0x2ec35c[_0xc5ff('0x3f')]('a.mandatoryDisposition',_0xc5ff('0x91'));_0x2ec35c['field']('CASE\x20WHEN\x20i.to\x20IS\x20NOT\x20NULL\x20AND\x20i.to\x20<>\x20\x27\x27\x20AND\x20i.to\x20NOT\x20LIKE\x20(\x27%\x27\x20+\x20a.email\x20+\x20\x27%\x27)\x20THEN\x20SUBSTRING_INDEX(i.to,\x20\x27<\x27,\x201)\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END',_0xc5ff('0x92'));_0x2ec35c['field'](_0xc5ff('0x82'));_0x2ec35c['field']('i.createdAt');_0x2ec35c['field']('i.updatedAt');_0x2ec35c[_0xc5ff('0x3f')](_0xc5ff('0x93'));_0x2ec35c['field']('i.closedAt');_0x2ec35c['field']('i.attach');_0x2ec35c[_0xc5ff('0x3f')](_0xc5ff('0x94'));_0x2ec35c['field']('i.lastMsgDirection');_0x2ec35c['field'](_0xc5ff('0x95'));_0x2ec35c[_0xc5ff('0x3f')](_0xc5ff('0x96'));_0x2ec35c[_0xc5ff('0x3f')](_0xc5ff('0x97'));_0x2ec35c[_0xc5ff('0x3f')](_0xc5ff('0x98'));_0x2ec35c['field'](_0xc5ff('0x99'));_0x2ec35c['field'](_0xc5ff('0x9a'));_0x2ec35c[_0xc5ff('0x3f')](_0xc5ff('0x9b'));_0x2ec35c[_0xc5ff('0x3f')](_0xc5ff('0x9c'));_0x2ec35c[_0xc5ff('0x3f')]('i.UserId');_0x2ec35c[_0xc5ff('0x3f')]('c.firstName',_0xc5ff('0x9d'));_0x2ec35c['field'](_0xc5ff('0x9e'),_0xc5ff('0x9f'));_0x2ec35c[_0xc5ff('0x3f')](_0xc5ff('0xa0'),_0xc5ff('0xa1'));_0x2ec35c[_0xc5ff('0x3f')](_0xc5ff('0xa2'),'Contact.phone');_0x2ec35c[_0xc5ff('0x3f')](_0xc5ff('0xa3'),_0xc5ff('0xa4'));_0x2ec35c[_0xc5ff('0x3f')](_0xc5ff('0xa5'),'Contact.fax');_0x2ec35c[_0xc5ff('0x3f')](_0xc5ff('0xa6'),_0xc5ff('0xa7'));_0x2ec35c[_0xc5ff('0x3f')](_0xc5ff('0xa8'),'Owner.internal');_0x2ec35c['field'](_0xc5ff('0xa9'),_0xc5ff('0x22'));}if(_0x180609[_0xc5ff('0x17')])_0x2ec35c[_0xc5ff('0x17')](_0x180609[_0xc5ff('0x17')]);if(_0x180609[_0xc5ff('0x15')])_0x2ec35c['offset'](_0x180609[_0xc5ff('0x15')]);return db[_0xc5ff('0x8b')][_0xc5ff('0x33')](_0x2ec35c['toString'](),_0x58e495);})[_0xc5ff('0x1c')](function(_0x4bf457){if(_0x4bf457['length']>0x0)_0x1062b9[_0xc5ff('0x3c')](_0xc5ff('0xaa'),_['map'](_0x4bf457,'id'));return db[_0xc5ff('0x8b')]['query'](_0x1062b9[_0xc5ff('0x8c')](),_0x58e495)[_0xc5ff('0x1c')](function(_0x124d0d){var _0x3d3f77=_[_0xc5ff('0xab')](_0x124d0d,_0xc5ff('0xac'));var _0x3ffb51=[];return db[_0xc5ff('0xad')][_0xc5ff('0x26')]({'attributes':[_0xc5ff('0xae')],'raw':!![]})[_0xc5ff('0x1c')](function(_0x28de35){var _0x53b7f2=_0x28de35['enableEmailPreview'];_0x4bf457['forEach'](function(_0x5ddd83){_0x3ffb51[_0xc5ff('0xaf')](updateMailInteraction(_0x5ddd83,_0x3d6952,_0x3d3f77,_0x53b7f2));});return BPromise[_0xc5ff('0xb0')](_0x3ffb51);});});});})[_0xc5ff('0x1c')](function(_0x49406b){_0x3329b4['rows']=_0x49406b;return _0x3329b4;})[_0xc5ff('0x1c')](respondWithFilteredResult(_0x220ff2,_0x180609))['catch'](handleError(_0x220ff2,null));};exports[_0xc5ff('0xb1')]=function(_0x533fc2,_0x46329d){var _0x154a58={'raw':![],'where':{'id':_0x533fc2['params']['id']}},_0x1ca53f={};_0x1ca53f[_0xc5ff('0x31')]=_[_0xc5ff('0x32')](db[_0xc5ff('0x8e')][_0xc5ff('0x2e')]);_0x1ca53f[_0xc5ff('0x33')]=_['keys'](_0x533fc2['query']);_0x1ca53f[_0xc5ff('0x3d')]=_[_0xc5ff('0x34')](_0x1ca53f['model'],_0x1ca53f['query']);_0x154a58['attributes']=_[_0xc5ff('0x34')](_0x1ca53f[_0xc5ff('0x31')],qs[_0xc5ff('0x35')](_0x533fc2['query']['fields']));_0x154a58[_0xc5ff('0x36')]=_0x154a58[_0xc5ff('0x36')][_0xc5ff('0x37')]?_0x154a58[_0xc5ff('0x36')]:_0x1ca53f['model'];if(_0x533fc2['query'][_0xc5ff('0xb2')]){_0x154a58[_0xc5ff('0xb3')]=[{'all':!![]}];}_0x154a58=_['merge']({},_0x154a58,_0x533fc2[_0xc5ff('0xb4')]);return db[_0xc5ff('0x8e')][_0xc5ff('0x57')](_0x154a58)[_0xc5ff('0x1c')](handleEntityNotFound(_0x46329d,null))[_0xc5ff('0x1c')](respondWithResult(_0x46329d,null))['catch'](handleError(_0x46329d,null));};exports[_0xc5ff('0xb5')]=function(_0x435931,_0x58060d){return db[_0xc5ff('0x8e')][_0xc5ff('0xb5')](_0x435931[_0xc5ff('0xb6')],{})[_0xc5ff('0x1c')](respondWithResult(_0x58060d,0xc9))[_0xc5ff('0x2b')](handleError(_0x58060d,null));};exports[_0xc5ff('0x1b')]=function(_0x2b76c2,_0x58fcb2){if(_0x2b76c2[_0xc5ff('0xb6')]['id']){delete _0x2b76c2[_0xc5ff('0xb6')]['id'];}return db[_0xc5ff('0x8e')][_0xc5ff('0x57')]({'where':{'id':_0x2b76c2[_0xc5ff('0xb7')]['id']}})[_0xc5ff('0x1c')](handleEntityNotFound(_0x58fcb2,null))['then'](saveUpdates(_0x2b76c2[_0xc5ff('0xb6')],null))[_0xc5ff('0x1c')](respondWithResult(_0x58fcb2,null))[_0xc5ff('0x2b')](handleError(_0x58fcb2,null));};exports[_0xc5ff('0x1d')]=function(_0x3d06bd,_0x455a3e){return db[_0xc5ff('0x8e')][_0xc5ff('0x57')]({'where':{'id':_0x3d06bd['params']['id']}})['then'](handleEntityNotFound(_0x455a3e,null))[_0xc5ff('0x1c')](removeEntity(_0x455a3e,null))[_0xc5ff('0x2b')](handleError(_0x455a3e,null));};exports['describe']=function(_0x13edab,_0x430880){return db[_0xc5ff('0x8e')][_0xc5ff('0xb8')]()['then'](respondWithResult(_0x430880,null))[_0xc5ff('0x2b')](handleError(_0x430880,null));};exports[_0xc5ff('0xb9')]=function(_0x29baad,_0x18663c){return db[_0xc5ff('0x25')][_0xc5ff('0x57')]({'where':{'id':_0x29baad[_0xc5ff('0xb7')]['id']}})[_0xc5ff('0x1c')](handleEntityNotFound(_0x18663c,null))[_0xc5ff('0x1c')](function(_0x2b233c){if(_0x2b233c){return _0x2b233c[_0xc5ff('0xb9')](_0x29baad[_0xc5ff('0xb6')]['ids'],_[_0xc5ff('0xba')](_0x29baad[_0xc5ff('0xb6')],[_0xc5ff('0xbb'),'id'])||{});}})[_0xc5ff('0x1c')](respondWithResult(_0x18663c,null))[_0xc5ff('0x2b')](handleError(_0x18663c,null));};exports[_0xc5ff('0xbc')]=function(_0x4b4a94,_0x589600){var _0x5bdbb1={'raw':![],'where':{}};var _0x9e28c7={};var _0x264a50={'count':0x0,'rows':[]};return db['MailInteraction'][_0xc5ff('0x26')]({'where':{'id':_0x4b4a94[_0xc5ff('0xb7')]['id']}})[_0xc5ff('0x1c')](handleEntityNotFound(_0x589600,null))[_0xc5ff('0x1c')](function(_0x1bc41d){if(_0x1bc41d){_0x9e28c7[_0xc5ff('0x31')]=_[_0xc5ff('0x32')](db[_0xc5ff('0x25')][_0xc5ff('0x2e')]);_0x9e28c7[_0xc5ff('0x33')]=_[_0xc5ff('0x32')](_0x4b4a94['query']);_0x9e28c7['filters']=_[_0xc5ff('0x34')](_0x9e28c7[_0xc5ff('0x31')],_0x9e28c7[_0xc5ff('0x33')]);_0x5bdbb1[_0xc5ff('0x36')]=_[_0xc5ff('0x34')](_0x9e28c7[_0xc5ff('0x31')],qs[_0xc5ff('0x35')](_0x4b4a94[_0xc5ff('0x33')][_0xc5ff('0x35')]));_0x5bdbb1[_0xc5ff('0x36')]=_0x5bdbb1[_0xc5ff('0x36')][_0xc5ff('0x37')]?_0x5bdbb1[_0xc5ff('0x36')]:_0x9e28c7[_0xc5ff('0x31')];if(!_0x4b4a94[_0xc5ff('0x33')][_0xc5ff('0x38')](_0xc5ff('0x39'))){_0x5bdbb1[_0xc5ff('0x17')]=qs[_0xc5ff('0x17')](_0x4b4a94[_0xc5ff('0x33')][_0xc5ff('0x17')]);_0x5bdbb1['offset']=qs['offset'](_0x4b4a94[_0xc5ff('0x33')]['offset']);}_0x5bdbb1[_0xc5ff('0x3a')]=qs[_0xc5ff('0x3b')](_0x4b4a94[_0xc5ff('0x33')][_0xc5ff('0x3b')]);_0x5bdbb1[_0xc5ff('0x3c')]=qs['filters'](_[_0xc5ff('0x3e')](_0x4b4a94['query'],_0x9e28c7[_0xc5ff('0x3d')]));_0x5bdbb1['where'][_0xc5ff('0xac')]=_0x1bc41d['id'];if(_0x4b4a94['query'][_0xc5ff('0x77')]){_0x5bdbb1['where']=_[_0xc5ff('0xbd')](_0x5bdbb1['where'],{'$or':_[_0xc5ff('0x2d')](_0x5bdbb1[_0xc5ff('0x36')],function(_0x58a0c9){var _0x12465e={};_0x12465e[_0x58a0c9]={'$like':'%'+_0x4b4a94['query']['filter']+'%'};return _0x12465e;})});}if(_0x4b4a94['query']['$gte']){var _0x11c14f=_0x4b4a94['query'][_0xc5ff('0xbe')][_0xc5ff('0x5e')](',');var _0x3b1586={};_0x3b1586[_0x11c14f[0x0]]={'$gte':moment(_0x11c14f[0x1])[_0xc5ff('0xbf')](_0xc5ff('0xc0'))};_0x5bdbb1[_0xc5ff('0x3c')]=_[_0xc5ff('0xbd')](_0x5bdbb1['where'],_0x3b1586);}_0x5bdbb1=_[_0xc5ff('0xbd')]({},_0x5bdbb1,_0x4b4a94[_0xc5ff('0xb4')]);return db[_0xc5ff('0x25')][_0xc5ff('0x18')]({'where':_0x5bdbb1[_0xc5ff('0x3c')]})['then'](function(_0x566cef){_0x264a50[_0xc5ff('0x18')]=_0x566cef;if(_0x4b4a94[_0xc5ff('0x33')][_0xc5ff('0xb2')]){_0x5bdbb1[_0xc5ff('0xb3')]=[{'all':!![]}];}return db[_0xc5ff('0x25')][_0xc5ff('0xc1')](_0x5bdbb1);})[_0xc5ff('0x1c')](function(_0xdc1a61){if(_0x4b4a94['query'][_0xc5ff('0xc2')]==='true'){for(var _0x1e23ad=0x0;_0x1e23ad<_0xdc1a61[_0xc5ff('0x37')];_0x1e23ad++){_0xdc1a61[_0x1e23ad][_0xc5ff('0xb6')]=juice(_0xdc1a61[_0x1e23ad]['body']);}}_0x264a50[_0xc5ff('0xc3')]=_0xdc1a61;return _0x264a50;});}})[_0xc5ff('0x1c')](respondWithFilteredResult(_0x589600,_0x5bdbb1))[_0xc5ff('0x2b')](handleError(_0x589600,null));};exports[_0xc5ff('0xc4')]=function(_0x20df01,_0x31fb07){return db[_0xc5ff('0x8e')][_0xc5ff('0x57')]({'where':{'id':_0x20df01[_0xc5ff('0xb7')]['id']}})[_0xc5ff('0x1c')](handleEntityNotFound(_0x31fb07,null))[_0xc5ff('0x1c')](function(_0x37cff1){if(_0x37cff1){return _0x37cff1[_0xc5ff('0xc5')](_0x20df01[_0xc5ff('0xb6')][_0xc5ff('0xbb')],_[_0xc5ff('0xba')](_0x20df01[_0xc5ff('0xb6')],[_0xc5ff('0xbb'),'id'])||{})['spread'](function(){return db[_0xc5ff('0x65')][_0xc5ff('0xc1')]({'attributes':['id','name',_0xc5ff('0x40')],'where':{'id':_0x20df01['body'][_0xc5ff('0xbb')]}});})[_0xc5ff('0x1c')](function(_0x3b9947){socket[_0xc5ff('0xc6')](_0xc5ff('0xc7'),{'id':Number(_0x20df01['params']['id']),'tags':_0x3b9947||[]});return{'id':Number(_0x20df01[_0xc5ff('0xb7')]['id']),'tags':_0x3b9947||[]};});}})[_0xc5ff('0x1c')](respondWithResult(_0x31fb07,null))['catch'](handleError(_0x31fb07,null));};exports['removeTags']=function(_0x2b8823,_0x493df4){return db['MailInteraction'][_0xc5ff('0x57')]({'where':{'id':_0x2b8823[_0xc5ff('0xb7')]['id']}})[_0xc5ff('0x1c')](handleEntityNotFound(_0x493df4,null))[_0xc5ff('0x1c')](function(_0x689df8){if(_0x689df8){return _0x689df8[_0xc5ff('0xc8')](_0x2b8823[_0xc5ff('0x33')][_0xc5ff('0xbb')]);}})[_0xc5ff('0x1c')](respondWithStatusCode(_0x493df4,null))[_0xc5ff('0x2b')](handleError(_0x493df4,null));};exports['download']=function(_0x3c773b,_0x2fc04e){var _0x39148c=moment()['unix']()[_0xc5ff('0x8c')]();var _0x57cfe8=path['join'](config[_0xc5ff('0xc9')],'server',_0xc5ff('0xca'),'tmp');var _0x11719b=path['join'](config['root'],_0xc5ff('0xcb'),'files',_0xc5ff('0xcc'));var _0xbe570a=path['join'](_0x57cfe8,_0x39148c);var _0x28b009=util[_0xc5ff('0xbf')](_0xc5ff('0xcd'),_0x3c773b[_0xc5ff('0xb7')]['id'],_0x39148c);var _0x5734f2=path[_0xc5ff('0xce')](_0x57cfe8,_0x28b009);var _0x1f4764=[];if(_0x3c773b[_0xc5ff('0x33')][_0xc5ff('0xcc')]){_0x1f4764['push']({'model':db[_0xc5ff('0xcf')],'as':_0xc5ff('0xd0'),'raw':!![]});}var _0x2c8200=[{'model':db['MailMessage'],'as':_0xc5ff('0xd1'),'attributes':['id',_0xc5ff('0xb6'),_0xc5ff('0x41'),'to','cc',_0xc5ff('0xd2'),_0xc5ff('0xd3'),_0xc5ff('0xd4')],'where':{'secret':![]},'order':qs[_0xc5ff('0x3b')]('id'),'include':_0x1f4764}];return db[_0xc5ff('0x8e')][_0xc5ff('0x57')]({'where':{'id':_0x3c773b[_0xc5ff('0xb7')]['id']},'include':_0x2c8200})[_0xc5ff('0x1c')](handleEntityNotFound(_0x2fc04e,null))[_0xc5ff('0x1c')](function(_0xb9ff35){if(_0xb9ff35&&_0xb9ff35[_0xc5ff('0xd1')]){var _0x2b9a9d=_0xb9ff35['get']({'plain':!![]});fs[_0xc5ff('0xd5')](_0xbe570a);return BPromise[_0xc5ff('0xd6')](_0x2b9a9d['Messages'],function(_0x2b30d2,_0x220f2f){var _0x3e8354={'from':_0x2b30d2[_0xc5ff('0x41')],'to':_0x2b30d2['to'],'subject':_0x2b30d2[_0xc5ff('0xd3')],'html':_0x2b30d2['body'],'headers':{'Date':moment(_0x2b30d2[_0xc5ff('0xd4')])[_0xc5ff('0xbf')]('ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ')},'attachments':[]};if(_0x2b30d2['cc']){_0x3e8354[_0xc5ff('0xd7')]['Cc']=_0x2b30d2['cc'];}if(_0x2b30d2['bcc']){_0x3e8354[_0xc5ff('0xd7')]['Bcc']=_0x2b30d2[_0xc5ff('0xd2')];}return new BPromise(function(_0x2114aa,_0x3f88dd){if(_0x2b30d2['Attachments']){for(var _0x2a0dbf=0x0;_0x2a0dbf<_0x2b30d2[_0xc5ff('0xd0')][_0xc5ff('0x37')];_0x2a0dbf++){var _0x3a89b5=_0x2b30d2['Attachments'][_0x2a0dbf];var _0x1ff864=path[_0xc5ff('0xce')](_0x11719b,_0x3a89b5[_0xc5ff('0xd8')]);if(fs['existsSync'](_0x1ff864)){_0x3e8354[_0xc5ff('0xcc')][_0xc5ff('0xaf')]({'name':_0x3a89b5[_0xc5ff('0x1f')],'contentType':_0x3a89b5['type'],'data':fs[_0xc5ff('0xd9')](_0x1ff864)});}}}emlformat['build'](_0x3e8354,function(_0x4620a8,_0x16d068){if(_0x4620a8)return _0x3f88dd(_0x4620a8);fs[_0xc5ff('0xda')](path[_0xc5ff('0xce')](_0xbe570a,util[_0xc5ff('0xbf')](_0xc5ff('0xdb'),_0x220f2f)),_0x16d068);return _0x2114aa(_0x16d068);});});})[_0xc5ff('0x1c')](function(){return new BPromise(function(_0x5b4ea0,_0x44bdb0){zipdir(_0xbe570a,{'saveTo':_0x5734f2},function(_0x5c80bc,_0x5adb18){if(_0x5c80bc)return _0x44bdb0(_0x5c80bc);return _0x5b4ea0(_0x5adb18);});})[_0xc5ff('0x1c')](function(){return new BPromise(function(_0x13b138,_0x22212c){rimraf(_0xbe570a,function(_0x579b40){if(_0x579b40)_0x22212c(_0x579b40);return _0x13b138();});});})[_0xc5ff('0x1c')](function(){return _0x2fc04e[_0xc5ff('0xdc')](_0x5734f2,_0x28b009,function(_0x3cb54d){if(!_0x3cb54d)fs['unlinkSync'](_0x5734f2);});});});}else{return _0x2fc04e[_0xc5ff('0x11')](0xc8);}})[_0xc5ff('0x2b')](handleError(_0x2fc04e,null));};
\ No newline at end of file
+var _0x2e55=['filter','replace','i.id\x20LIKE\x20?','MATCH\x20(me.plainBody,\x20me.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','i.id','Sequelize','QueryTypes','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','DESC','t.id\x20IN\x20?','resolve','i.MailAccountId\x20IS\x20NOT\x20NULL','user','role','agent','getMailAccounts','i.MailAccountId\x20IS\x20NULL','i.MailAccountId\x20IN\x20?','sequelize','keyBy','a.key','Account.key','a.mandatoryDisposition','Account.mandatoryDisposition','CASE\x20WHEN\x20i.to\x20IS\x20NOT\x20NULL\x20AND\x20i.to\x20<>\x20\x27\x27\x20AND\x20i.to\x20NOT\x20LIKE\x20(\x27%\x27\x20+\x20a.email\x20+\x20\x27%\x27)\x20THEN\x20SUBSTRING_INDEX(i.to,\x20\x27<\x27,\x201)\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','contactName','i.createdAt','i.updatedAt','i.closedAt','i.attach','i.lastMsgAt','i.disposition','i.secondDisposition','i.thirdDisposition','i.substatus','i.to','i.ContactId','i.MailAccountId','i.UserId','c.firstName','Contact.firstName','c.lastName','Contact.lastName','c.email','Contact.email','c.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.MailInteractionId\x20IN\x20?','toString','groupBy','Setting','enableEmailPreview','all','rows','show','params','keys','merge','options','create','body','describe','MailMessage','addMessage','ids','omit','MailInteractionId','$gte','includeAll','include','findAll','true','addTags','setTags','spread','color','removeTags','download','unix','join','server','files','tmp','root','attachments','format','transcript-%d-%s.zip','Attachment','Attachments','Messages','bcc','subject','createdAt','get','mkdirSync','each','decode','headers','Bcc','basename','existsSync','readFileSync','build','writeFileSync','message%d.eml','unlinkSync','eml-format','rimraf','bluebird','util','path','lodash','squel','juice','ioredis','../../components/parsers/advancedSearch','api','../../config/environment','redis','localhost','socket.io-emitter','./mailInteraction.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','update','then','destroy','error','stack','name','send','Users','map','fullname','TagIds','split','forEach','push','out','plainBody','-id','catch','index','MailInteraction','rawAttributes','type','filters','intersection','model','query','fields','attributes','hasOwnProperty','nolimit','order','sort','pick','select','field','from','tools_tags','u.id','user_has_mail_interactions','left_join','u.id\x20=\x20ui.UserId','mail_interactions','o.id\x20=\x20i.UserId','a.id\x20=\x20i.MailAccountId','me.MailInteractionId\x20=\x20i.id','mail_interaction_has_tags','it.MailInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','parseSearch','search','sqlOperator','conditions','length','find','unreadMessages','having','`\x20=\x200','Contact','$substring','value','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','text','start','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','operator','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','buildExpression','some','compact','isEmpty','MailAccountId','where','concat','parse','$lte','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag'];(function(_0x3048ea,_0x3838c2){var _0x1a13c4=function(_0x2c6a6b){while(--_0x2c6a6b){_0x3048ea['push'](_0x3048ea['shift']());}};_0x1a13c4(++_0x3838c2);}(_0x2e55,0x159));var _0x52e5=function(_0x3b7a0c,_0xf1a4c2){_0x3b7a0c=_0x3b7a0c-0x0;var _0x3bb70f=_0x2e55[_0x3b7a0c];return _0x3bb70f;};'use strict';var emlformat=require(_0x52e5('0x0'));var rimraf=require(_0x52e5('0x1'));var zipdir=require('zip-dir');var moment=require('moment');var BPromise=require(_0x52e5('0x2'));var util=require(_0x52e5('0x3'));var path=require(_0x52e5('0x4'));var fs=require('fs');var _=require(_0x52e5('0x5'));var squel=require(_0x52e5('0x6'));var juice=require(_0x52e5('0x7'));var Redis=require(_0x52e5('0x8'));var qs=require('../../components/parsers/qs');var as=require(_0x52e5('0x9'));var logger=require('../../config/logger')(_0x52e5('0xa'));var config=require(_0x52e5('0xb'));var db=require('../../mysqldb')['db'];var htmlEntities=require('html-entities');config[_0x52e5('0xc')]=_['defaults'](config['redis'],{'host':_0x52e5('0xd'),'port':0x18eb});var socket=require(_0x52e5('0xe'))(new Redis(config[_0x52e5('0xc')]));require(_0x52e5('0xf'))[_0x52e5('0x10')](socket);function respondWithStatusCode(_0x5ee62e,_0x23a2df){_0x23a2df=_0x23a2df||0xcc;return function(_0x50bd4c){if(_0x50bd4c){return _0x5ee62e[_0x52e5('0x11')](_0x23a2df);}return _0x5ee62e[_0x52e5('0x12')](_0x23a2df)[_0x52e5('0x13')]();};}function respondWithResult(_0x5621c1,_0x20b7ac){_0x20b7ac=_0x20b7ac||0xc8;return function(_0x33657e){if(_0x33657e){return _0x5621c1[_0x52e5('0x12')](_0x20b7ac)[_0x52e5('0x14')](_0x33657e);}};}function respondWithFilteredResult(_0xc4f046,_0x3cdf65){return function(_0x4dc7ca){if(_0x4dc7ca){var _0xf88121=typeof _0x3cdf65[_0x52e5('0x15')]===_0x52e5('0x16')&&typeof _0x3cdf65[_0x52e5('0x17')]===_0x52e5('0x16');var _0x173da1=_0x4dc7ca[_0x52e5('0x18')];var _0x49fa18=_0xf88121?0x0:_0x3cdf65[_0x52e5('0x15')];var _0x1ee6ec=_0xf88121?_0x4dc7ca[_0x52e5('0x18')]:_0x3cdf65['offset']+_0x3cdf65[_0x52e5('0x17')];var _0x2f1553;if(_0x1ee6ec>=_0x173da1){_0x1ee6ec=_0x173da1;_0x2f1553=0xc8;}else{_0x2f1553=0xce;}_0xc4f046[_0x52e5('0x12')](_0x2f1553);return _0xc4f046[_0x52e5('0x19')](_0x52e5('0x1a'),_0x49fa18+'-'+_0x1ee6ec+'/'+_0x173da1)[_0x52e5('0x14')](_0x4dc7ca);}return null;};}function saveUpdates(_0x57fff2){return function(_0x15bf0c){if(_0x15bf0c){return _0x15bf0c[_0x52e5('0x1b')](_0x57fff2)[_0x52e5('0x1c')](function(_0x457aae){return _0x457aae;});}return null;};}function removeEntity(_0x53283d){return function(_0x2fb99e){if(_0x2fb99e){return _0x2fb99e[_0x52e5('0x1d')]()[_0x52e5('0x1c')](function(){_0x53283d['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x605a5a){return function(_0x20613a){if(!_0x20613a){_0x605a5a[_0x52e5('0x11')](0x194);}return _0x20613a;};}function handleError(_0x156df,_0x59edaa){_0x59edaa=_0x59edaa||0x1f4;return function(_0x490ac2){logger[_0x52e5('0x1e')](_0x490ac2[_0x52e5('0x1f')]);if(_0x490ac2[_0x52e5('0x20')]){delete _0x490ac2[_0x52e5('0x20')];}_0x156df[_0x52e5('0x12')](_0x59edaa)[_0x52e5('0x21')](_0x490ac2);};}function getInteractionUsers(_0x1bf09a,_0x1b599f){return new BPromise(function(_0x2be29d,_0x328a47){try{if(_0x1b599f[_0x1bf09a['id']]){_0x1bf09a[_0x52e5('0x22')]=_[_0x52e5('0x23')](_0x1b599f[_0x1bf09a['id']],function(_0x252562){return{'id':_0x252562['id'],'fullname':_0x252562[_0x52e5('0x24')]};});}}catch(_0x379982){_0x328a47(_0x379982);}_0x2be29d(_0x1bf09a);});}function getInteractionTags(_0x462719,_0x3e7725){return new BPromise(function(_0x33c7ec,_0x9ae406){try{if(_0x462719[_0x52e5('0x25')]){_0x462719['Tags']=[];_0x462719[_0x52e5('0x25')][_0x52e5('0x26')](',')[_0x52e5('0x27')](function(_0x3eb876){_0x462719['Tags'][_0x52e5('0x28')](_0x3e7725[_0x3eb876]);});}delete _0x462719[_0x52e5('0x25')];}catch(_0x2f7345){_0x9ae406(_0x2f7345);}_0x33c7ec(_0x462719);});}function getLastMessageText(_0x1d6cd7){return new BPromise(function(_0x10578c,_0x3b7082){return db['MailMessage']['findOne']({'where':{'$and':[{'MailInteractionId':_0x1d6cd7['id']},{'$or':[{'direction':'in'},{'$and':[{'direction':_0x52e5('0x29')},{'secret':![]},{'UserId':{'$ne':null}}]}]}]},'attributes':[_0x52e5('0x2a')],'order':_0x52e5('0x2b'),'raw':!![]})[_0x52e5('0x1c')](function(_0x447d99){if(_0x447d99&&_0x447d99[_0x52e5('0x2a')]){_0x1d6cd7['lastMsgText']=_['trimStart'](_0x447d99[_0x52e5('0x2a')]);}_0x10578c(_0x1d6cd7);})[_0x52e5('0x2c')](function(_0x2e5645){_0x3b7082(_0x2e5645);});});}function updateMailInteraction(_0x1406f9,_0x510bac,_0x8b8093,_0x195084){return new BPromise(function(_0x5d600a,_0x2dd280){return getInteractionUsers(_0x1406f9,_0x8b8093)['then'](function(_0x3f4acd){return getInteractionTags(_0x3f4acd,_0x510bac);})[_0x52e5('0x1c')](function(_0x3cdf62){if(_0x195084){_0x5d600a(getLastMessageText(_0x3cdf62));}else{_0x5d600a(_0x3cdf62);}})['catch'](function(_0x5d844b){_0x2dd280(_0x5d844b);});});}exports[_0x52e5('0x2d')]=function(_0x4e5280,_0x33e6da){var _0x33d4c6={},_0x564ee8={},_0x51f710={'count':0x0,'rows':[]};var _0x46dc28=_['map'](db[_0x52e5('0x2e')][_0x52e5('0x2f')],function(_0x1fbc90){return{'name':_0x1fbc90['fieldName'],'type':_0x1fbc90[_0x52e5('0x30')]['key']};});_0x564ee8['model']=_[_0x52e5('0x23')](_0x46dc28,_0x52e5('0x20'));_0x564ee8['query']=_['keys'](_0x4e5280['query']);_0x564ee8[_0x52e5('0x31')]=_[_0x52e5('0x32')](_0x564ee8[_0x52e5('0x33')],_0x564ee8[_0x52e5('0x34')]);_0x33d4c6['attributes']=_[_0x52e5('0x32')](_0x564ee8[_0x52e5('0x33')],qs[_0x52e5('0x35')](_0x4e5280['query'][_0x52e5('0x35')]));_0x33d4c6[_0x52e5('0x36')]=_0x33d4c6[_0x52e5('0x36')]['length']?_0x33d4c6[_0x52e5('0x36')]:_0x564ee8[_0x52e5('0x33')];if(!_0x4e5280['query'][_0x52e5('0x37')](_0x52e5('0x38'))){_0x33d4c6['limit']=qs[_0x52e5('0x17')](_0x4e5280[_0x52e5('0x34')][_0x52e5('0x17')]);_0x33d4c6['offset']=qs[_0x52e5('0x15')](_0x4e5280[_0x52e5('0x34')]['offset']);}_0x33d4c6[_0x52e5('0x39')]=qs[_0x52e5('0x3a')](_0x4e5280[_0x52e5('0x34')]['sort']);_0x33d4c6['where']=qs['filters'](_[_0x52e5('0x3b')](_0x4e5280[_0x52e5('0x34')],_0x564ee8[_0x52e5('0x31')]),_0x46dc28);var _0x65f386=[];var _0x2c516d=squel[_0x52e5('0x3c')]()[_0x52e5('0x3d')]('id')[_0x52e5('0x3d')]('name')[_0x52e5('0x3d')]('color')[_0x52e5('0x3e')](_0x52e5('0x3f'));var _0x54f3dc=squel['select']()[_0x52e5('0x3d')](_0x52e5('0x40'))[_0x52e5('0x3d')]('u.fullname')[_0x52e5('0x3d')]('ui.MailInteractionId')['from'](_0x52e5('0x41'),'ui')[_0x52e5('0x42')]('users','u',_0x52e5('0x43'));var _0x331116=squel[_0x52e5('0x3c')]()[_0x52e5('0x3e')](_0x52e5('0x44'),'i')['left_join']('cm_contacts','c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')[_0x52e5('0x42')]('users','o',_0x52e5('0x45'))['left_join']('mail_accounts','a',_0x52e5('0x46'))[_0x52e5('0x42')]('mail_messages','me',_0x52e5('0x47'))[_0x52e5('0x42')](_0x52e5('0x48'),'it',_0x52e5('0x49'))[_0x52e5('0x42')](_0x52e5('0x3f'),'t',_0x52e5('0x4a'));var _0x3da0c5=squel[_0x52e5('0x4b')]();var _0x265bad=[];var _0x537234=squel[_0x52e5('0x4b')]();var _0x4c06ac;if(_0x4e5280[_0x52e5('0x34')]['search']){_0x4c06ac=as[_0x52e5('0x4c')](_0x4e5280[_0x52e5('0x34')][_0x52e5('0x4d')]);var _0x2aad29=_0x4c06ac[_0x52e5('0x4e')];for(var _0x3a6194=0x0;_0x3a6194<_0x4c06ac[_0x52e5('0x4f')][_0x52e5('0x50')];_0x3a6194++){var _0x379c4b=_0x4c06ac['conditions'][_0x3a6194];var _0x49b4a7='i';var _0x1756cb=_[_0x52e5('0x51')](_0x46dc28,[_0x52e5('0x20'),_0x379c4b[_0x52e5('0x3d')]]);if(!_0x1756cb){switch(_0x379c4b['field']){case _0x52e5('0x52'):if(_0x379c4b['value']==0x1){_0x331116[_0x52e5('0x53')]('`'+_0x379c4b[_0x52e5('0x3d')]+_0x52e5('0x54'));}else{_0x331116['having']('`'+_0x379c4b[_0x52e5('0x3d')]+'`\x20>\x200');}break;case _0x52e5('0x55'):if(_0x379c4b['operator']===_0x52e5('0x56')){if(_0x379c4b[_0x52e5('0x57')]['split']('\x20')[_0x52e5('0x50')]>0x1){_0x3da0c5[_0x2aad29]('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0x52e5('0x58')](_0x379c4b['value']),null);}else{var _0x51e07c='%'+_0x379c4b[_0x52e5('0x57')]+'%';_0x3da0c5[_0x2aad29](_0x52e5('0x59'),_0x51e07c,_0x51e07c,_0x51e07c);}}else{_0x1756cb=_['find'](_0x46dc28,[_0x52e5('0x20'),_0x52e5('0x5a')]);_0x379c4b[_0x52e5('0x3d')]=_0x52e5('0x5a');_0x1eb593=as['buildExpression'](_0x49b4a7,_0x1756cb[_0x52e5('0x30')],_0x379c4b);_0x3da0c5[_0x2aad29](_0x1eb593[_0x52e5('0x5b')],_0x1eb593[_0x52e5('0x57')][_0x52e5('0x5c')],_0x1eb593[_0x52e5('0x57')][_0x52e5('0x13')]);}break;case _0x52e5('0x5d'):var _0xe3d749=_0x379c4b[_0x52e5('0x57')][_0x52e5('0x26')](',')[_0x52e5('0x23')](function(_0x24f61f){return Number(_0x24f61f);});_0xe3d749[_0x52e5('0x27')](function(_0x5ed72d){_0x537234['or'](_0x52e5('0x5e'),'%,'+_0x5ed72d+',%');});_0x265bad=_[_0x52e5('0x5f')](_0x265bad,_0xe3d749);break;case _0x52e5('0x60'):if(_0x379c4b[_0x52e5('0x61')]===_0x52e5('0x56')){_0x3da0c5[_0x2aad29](_0x52e5('0x62'),'%'+_0x379c4b['value']+'%',null);}else{_0x1756cb=_[_0x52e5('0x51')](_0x46dc28,[_0x52e5('0x20'),_0x52e5('0x63')]);_0x379c4b[_0x52e5('0x3d')]=_0x52e5('0x63');_0x1eb593=as[_0x52e5('0x64')](_0x49b4a7,_0x1756cb[_0x52e5('0x30')],_0x379c4b);_0x3da0c5[_0x2aad29](_0x1eb593[_0x52e5('0x5b')],_0x1eb593['value']['start'],_0x1eb593[_0x52e5('0x57')][_0x52e5('0x13')]);}break;case _0x52e5('0x2a'):_0x1eb593=as[_0x52e5('0x64')]('me',null,_0x379c4b);_0x3da0c5[_0x2aad29](_0x1eb593['text'],_0x1eb593[_0x52e5('0x57')][_0x52e5('0x5c')],_0x1eb593[_0x52e5('0x57')]['end']);break;}}else{var _0x1eb593=as[_0x52e5('0x64')](_0x49b4a7,_0x1756cb[_0x52e5('0x30')],_0x379c4b);_0x3da0c5[_0x2aad29](_0x1eb593['text'],_0x1eb593['value'][_0x52e5('0x5c')],_0x1eb593[_0x52e5('0x57')][_0x52e5('0x13')]);}}}else{var _0x350c5a=_(_0x4e5280[_0x52e5('0x34')])['keys']()[_0x52e5('0x23')](function(_0x58a89f){return _[_0x52e5('0x65')](_0x46dc28,[_0x52e5('0x20'),_0x58a89f])?_0x58a89f:undefined;})[_0x52e5('0x66')]()[_0x52e5('0x57')]();if(!_[_0x52e5('0x67')](_0x350c5a)){_0x350c5a['forEach'](function(_0x44922e){if(_0x44922e===_0x52e5('0x68')){_0x331116[_0x52e5('0x69')]('i.MailAccountId\x20IN\x20?',[][_0x52e5('0x6a')](_0x4e5280['query'][_0x44922e]));}else if(_0x44922e==='createdAt'){var _0x43f2c5=JSON[_0x52e5('0x6b')](_0x4e5280[_0x52e5('0x34')][_0x44922e])['$gte'];var _0x1b2ae3=JSON[_0x52e5('0x6b')](_0x4e5280[_0x52e5('0x34')][_0x44922e])[_0x52e5('0x6c')];_0x331116[_0x52e5('0x69')]('i.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x43f2c5,_0x1b2ae3);}else{if(_0x4e5280[_0x52e5('0x34')][_0x44922e]==='null'){_0x331116['where']('i.'+_0x44922e+'\x20IS\x20NULL');}else{_0x331116[_0x52e5('0x69')]('i.'+_0x44922e+'\x20=\x20?',_0x4e5280['query'][_0x44922e]);}}});}if(_0x4e5280['query']['read']){if(_0x4e5280[_0x52e5('0x34')][_0x52e5('0x6d')]==0x1){_0x331116['having'](_0x52e5('0x6e'));}else{_0x331116[_0x52e5('0x53')](_0x52e5('0x6f'));}}if(_0x4e5280['query'][_0x52e5('0x70')]){_0x265bad=_['isArray'](_0x4e5280['query'][_0x52e5('0x70')])?_0x4e5280['query'][_0x52e5('0x70')]:new Array(_0x4e5280[_0x52e5('0x34')][_0x52e5('0x70')]);_0x265bad[_0x52e5('0x27')](function(_0x54bca5){_0x537234['or'](_0x52e5('0x5e'),'%,'+_0x54bca5+',%');});}if(_0x4e5280[_0x52e5('0x34')]['filter']){var _0x2105de=_0x4e5280[_0x52e5('0x34')][_0x52e5('0x71')][_0x52e5('0x72')]('\x5c','\x5c\x5c')[_0x52e5('0x72')](/'/g,'\x27\x27');if(qs['isNumeric'](_0x2105de)){_0x3da0c5['or'](_0x52e5('0x73'),_0x2105de+'%');}else if(qs['isEmail'](_0x2105de)){_0x3da0c5['or']('c.email\x20LIKE\x20?',_0x2105de+'%');}else{_0x3da0c5['or']('MATCH\x20(i.to,\x20i.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0x52e5('0x58')](_0x2105de))['or'](_0x52e5('0x74'),qs[_0x52e5('0x58')](_0x2105de));}}}_0x331116[_0x52e5('0x69')](_0x3da0c5);_0x331116['group'](_0x52e5('0x75'));var _0x1b9065={'type':db[_0x52e5('0x76')][_0x52e5('0x77')][_0x52e5('0x78')],'raw':!![]};var _0x33ea29=_0x331116[_0x52e5('0x79')]();_0x33ea29['field'](_0x52e5('0x75'));_0x33ea29[_0x52e5('0x3d')](_0x52e5('0x7a'),_0x52e5('0x52'));if(_0x33d4c6[_0x52e5('0x39')]){_0x33d4c6[_0x52e5('0x39')][_0x52e5('0x27')](function(_0x4c7d05){var _0x1d80c1=_0x4c7d05[0x0]==='contactName'?_0x4c7d05[0x0]:'i.'+_0x4c7d05[0x0];_0x331116['order'](_0x1d80c1,_0x4c7d05[0x1]===_0x52e5('0x7b')?![]:!![]);});}if(!_[_0x52e5('0x67')](_0x265bad)){_0x331116['having'](_0x537234);_0x33ea29[_0x52e5('0x69')](_0x52e5('0x7c'),_0x265bad);}BPromise[_0x52e5('0x7d')]()[_0x52e5('0x1c')](function(){if(!_0x4c06ac){if(_0x4e5280[_0x52e5('0x34')]['MailAccountId'])return;_0x33ea29['where'](_0x52e5('0x7e'));_0x331116['where']('i.MailAccountId\x20IS\x20NOT\x20NULL');return;}if(_0x4e5280[_0x52e5('0x7f')][_0x52e5('0x80')]!==_0x52e5('0x81'))return;return _0x4e5280[_0x52e5('0x7f')][_0x52e5('0x82')]({'attributes':['id'],'raw':!![]})['then'](function(_0x155ac5){if(_['isEmpty'](_0x155ac5)){_0x33ea29[_0x52e5('0x69')]('i.MailAccountId\x20IS\x20NULL');_0x331116[_0x52e5('0x69')](_0x52e5('0x83'));}else{_0x33ea29['where'](_0x52e5('0x84'),_[_0x52e5('0x23')](_0x155ac5,'id'));_0x331116[_0x52e5('0x69')]('i.MailAccountId\x20IN\x20?',_['map'](_0x155ac5,'id'));}});})[_0x52e5('0x1c')](function(){if(_0x4e5280[_0x52e5('0x7f')][_0x52e5('0x80')]===_0x52e5('0x81')&&!_0x4c06ac&&!_0x4e5280[_0x52e5('0x34')][_0x52e5('0x68')])return[];return db['sequelize'][_0x52e5('0x34')](_0x33ea29['toString'](),_0x1b9065);})[_0x52e5('0x1c')](function(_0x22bf29){_0x51f710['count']=_0x22bf29[_0x52e5('0x50')];if(_0x51f710[_0x52e5('0x18')]===0x0)return[];return db[_0x52e5('0x85')][_0x52e5('0x34')](_0x2c516d['toString'](),_0x1b9065)['then'](function(_0x199f97){_0x65f386=_[_0x52e5('0x86')](_0x199f97,'id');_0x1b9065=_['merge'](_0x1b9065,{'model':db[_0x52e5('0x2e')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x4e5280[_0x52e5('0x34')][_0x52e5('0x35')]){_0x33d4c6[_0x52e5('0x36')][_0x52e5('0x27')](function(_0x3660f9){_0x331116['field']('i.'+_0x3660f9);});}else{_0x331116[_0x52e5('0x3d')](_0x52e5('0x7a'),_0x52e5('0x52'));_0x331116[_0x52e5('0x3d')](_0x52e5('0x87'),_0x52e5('0x88'));_0x331116[_0x52e5('0x3d')](_0x52e5('0x89'),_0x52e5('0x8a'));_0x331116[_0x52e5('0x3d')](_0x52e5('0x8b'),_0x52e5('0x8c'));_0x331116[_0x52e5('0x3d')](_0x52e5('0x75'));_0x331116['field'](_0x52e5('0x8d'));_0x331116['field'](_0x52e5('0x8e'));_0x331116[_0x52e5('0x3d')]('i.closed');_0x331116['field'](_0x52e5('0x8f'));_0x331116['field'](_0x52e5('0x90'));_0x331116[_0x52e5('0x3d')](_0x52e5('0x91'));_0x331116[_0x52e5('0x3d')]('i.lastMsgDirection');_0x331116[_0x52e5('0x3d')]('i.subject');_0x331116[_0x52e5('0x3d')](_0x52e5('0x92'));_0x331116['field'](_0x52e5('0x93'));_0x331116[_0x52e5('0x3d')](_0x52e5('0x94'));_0x331116[_0x52e5('0x3d')](_0x52e5('0x95'));_0x331116[_0x52e5('0x3d')](_0x52e5('0x96'));_0x331116[_0x52e5('0x3d')](_0x52e5('0x97'));_0x331116[_0x52e5('0x3d')](_0x52e5('0x98'));_0x331116[_0x52e5('0x3d')](_0x52e5('0x99'));_0x331116['field'](_0x52e5('0x9a'),_0x52e5('0x9b'));_0x331116['field'](_0x52e5('0x9c'),_0x52e5('0x9d'));_0x331116[_0x52e5('0x3d')](_0x52e5('0x9e'),_0x52e5('0x9f'));_0x331116[_0x52e5('0x3d')](_0x52e5('0xa0'),'Contact.phone');_0x331116[_0x52e5('0x3d')](_0x52e5('0xa1'),_0x52e5('0xa2'));_0x331116[_0x52e5('0x3d')](_0x52e5('0xa3'),_0x52e5('0xa4'));_0x331116[_0x52e5('0x3d')](_0x52e5('0xa5'),_0x52e5('0xa6'));_0x331116[_0x52e5('0x3d')](_0x52e5('0xa7'),_0x52e5('0xa8'));_0x331116[_0x52e5('0x3d')](_0x52e5('0xa9'),'TagIds');}if(_0x33d4c6[_0x52e5('0x17')])_0x331116['limit'](_0x33d4c6[_0x52e5('0x17')]);if(_0x33d4c6[_0x52e5('0x15')])_0x331116[_0x52e5('0x15')](_0x33d4c6[_0x52e5('0x15')]);return db[_0x52e5('0x85')][_0x52e5('0x34')](_0x331116['toString'](),_0x1b9065);})[_0x52e5('0x1c')](function(_0x37354b){if(_0x37354b[_0x52e5('0x50')]>0x0)_0x54f3dc[_0x52e5('0x69')](_0x52e5('0xaa'),_[_0x52e5('0x23')](_0x37354b,'id'));return db[_0x52e5('0x85')][_0x52e5('0x34')](_0x54f3dc[_0x52e5('0xab')](),_0x1b9065)[_0x52e5('0x1c')](function(_0xce404c){var _0x24cdc0=_[_0x52e5('0xac')](_0xce404c,'MailInteractionId');var _0x5ba847=[];return db[_0x52e5('0xad')]['findOne']({'attributes':[_0x52e5('0xae')],'raw':!![]})[_0x52e5('0x1c')](function(_0x10faaa){var _0x46623e=_0x10faaa['enableEmailPreview'];_0x37354b[_0x52e5('0x27')](function(_0x128237){_0x5ba847[_0x52e5('0x28')](updateMailInteraction(_0x128237,_0x65f386,_0x24cdc0,_0x46623e));});return BPromise[_0x52e5('0xaf')](_0x5ba847);});});});})[_0x52e5('0x1c')](function(_0x1ad04f){_0x51f710[_0x52e5('0xb0')]=_0x1ad04f;return _0x51f710;})[_0x52e5('0x1c')](respondWithFilteredResult(_0x33e6da,_0x33d4c6))[_0x52e5('0x2c')](handleError(_0x33e6da,null));};exports[_0x52e5('0xb1')]=function(_0x5f0941,_0x20e68d){var _0x29b0ca={'raw':![],'where':{'id':_0x5f0941[_0x52e5('0xb2')]['id']}},_0xb05ecc={};_0xb05ecc[_0x52e5('0x33')]=_[_0x52e5('0xb3')](db[_0x52e5('0x2e')][_0x52e5('0x2f')]);_0xb05ecc[_0x52e5('0x34')]=_[_0x52e5('0xb3')](_0x5f0941[_0x52e5('0x34')]);_0xb05ecc['filters']=_[_0x52e5('0x32')](_0xb05ecc[_0x52e5('0x33')],_0xb05ecc[_0x52e5('0x34')]);_0x29b0ca[_0x52e5('0x36')]=_[_0x52e5('0x32')](_0xb05ecc[_0x52e5('0x33')],qs[_0x52e5('0x35')](_0x5f0941[_0x52e5('0x34')][_0x52e5('0x35')]));_0x29b0ca[_0x52e5('0x36')]=_0x29b0ca[_0x52e5('0x36')][_0x52e5('0x50')]?_0x29b0ca[_0x52e5('0x36')]:_0xb05ecc['model'];if(_0x5f0941[_0x52e5('0x34')]['includeAll']){_0x29b0ca['include']=[{'all':!![]}];}_0x29b0ca=_[_0x52e5('0xb4')]({},_0x29b0ca,_0x5f0941[_0x52e5('0xb5')]);return db['MailInteraction'][_0x52e5('0x51')](_0x29b0ca)[_0x52e5('0x1c')](handleEntityNotFound(_0x20e68d,null))[_0x52e5('0x1c')](respondWithResult(_0x20e68d,null))['catch'](handleError(_0x20e68d,null));};exports['create']=function(_0xc870b2,_0x307f7a){return db['MailInteraction'][_0x52e5('0xb6')](_0xc870b2[_0x52e5('0xb7')],{})['then'](respondWithResult(_0x307f7a,0xc9))[_0x52e5('0x2c')](handleError(_0x307f7a,null));};exports[_0x52e5('0x1b')]=function(_0xba799a,_0x7aca35){if(_0xba799a['body']['id']){delete _0xba799a['body']['id'];}return db[_0x52e5('0x2e')][_0x52e5('0x51')]({'where':{'id':_0xba799a[_0x52e5('0xb2')]['id']}})[_0x52e5('0x1c')](handleEntityNotFound(_0x7aca35,null))[_0x52e5('0x1c')](saveUpdates(_0xba799a['body'],null))[_0x52e5('0x1c')](respondWithResult(_0x7aca35,null))['catch'](handleError(_0x7aca35,null));};exports[_0x52e5('0x1d')]=function(_0x255034,_0xf4943a){return db[_0x52e5('0x2e')]['find']({'where':{'id':_0x255034['params']['id']}})[_0x52e5('0x1c')](handleEntityNotFound(_0xf4943a,null))['then'](removeEntity(_0xf4943a,null))[_0x52e5('0x2c')](handleError(_0xf4943a,null));};exports[_0x52e5('0xb8')]=function(_0x18ba3d,_0x134eb0){return db[_0x52e5('0x2e')][_0x52e5('0xb8')]()[_0x52e5('0x1c')](respondWithResult(_0x134eb0,null))['catch'](handleError(_0x134eb0,null));};exports['addMessage']=function(_0x555f40,_0x2735e6){return db[_0x52e5('0xb9')][_0x52e5('0x51')]({'where':{'id':_0x555f40[_0x52e5('0xb2')]['id']}})[_0x52e5('0x1c')](handleEntityNotFound(_0x2735e6,null))[_0x52e5('0x1c')](function(_0x5f0d92){if(_0x5f0d92){return _0x5f0d92[_0x52e5('0xba')](_0x555f40[_0x52e5('0xb7')][_0x52e5('0xbb')],_[_0x52e5('0xbc')](_0x555f40[_0x52e5('0xb7')],[_0x52e5('0xbb'),'id'])||{});}})[_0x52e5('0x1c')](respondWithResult(_0x2735e6,null))[_0x52e5('0x2c')](handleError(_0x2735e6,null));};exports['getMessages']=function(_0x1fdec8,_0x4b2b49){var _0x3e92e4={'raw':![],'where':{}};var _0x4cf744={};var _0x30f7d5={'count':0x0,'rows':[]};return db[_0x52e5('0x2e')]['findOne']({'where':{'id':_0x1fdec8[_0x52e5('0xb2')]['id']}})[_0x52e5('0x1c')](handleEntityNotFound(_0x4b2b49,null))[_0x52e5('0x1c')](function(_0x2dfab1){if(_0x2dfab1){_0x4cf744[_0x52e5('0x33')]=_[_0x52e5('0xb3')](db[_0x52e5('0xb9')][_0x52e5('0x2f')]);_0x4cf744['query']=_[_0x52e5('0xb3')](_0x1fdec8['query']);_0x4cf744[_0x52e5('0x31')]=_[_0x52e5('0x32')](_0x4cf744[_0x52e5('0x33')],_0x4cf744[_0x52e5('0x34')]);_0x3e92e4[_0x52e5('0x36')]=_[_0x52e5('0x32')](_0x4cf744[_0x52e5('0x33')],qs['fields'](_0x1fdec8['query']['fields']));_0x3e92e4[_0x52e5('0x36')]=_0x3e92e4[_0x52e5('0x36')][_0x52e5('0x50')]?_0x3e92e4['attributes']:_0x4cf744[_0x52e5('0x33')];if(!_0x1fdec8[_0x52e5('0x34')]['hasOwnProperty'](_0x52e5('0x38'))){_0x3e92e4[_0x52e5('0x17')]=qs[_0x52e5('0x17')](_0x1fdec8[_0x52e5('0x34')][_0x52e5('0x17')]);_0x3e92e4[_0x52e5('0x15')]=qs[_0x52e5('0x15')](_0x1fdec8[_0x52e5('0x34')][_0x52e5('0x15')]);}_0x3e92e4['order']=qs[_0x52e5('0x3a')](_0x1fdec8['query'][_0x52e5('0x3a')]);_0x3e92e4[_0x52e5('0x69')]=qs[_0x52e5('0x31')](_[_0x52e5('0x3b')](_0x1fdec8[_0x52e5('0x34')],_0x4cf744[_0x52e5('0x31')]));_0x3e92e4['where'][_0x52e5('0xbd')]=_0x2dfab1['id'];if(_0x1fdec8['query']['filter']){_0x3e92e4[_0x52e5('0x69')]=_[_0x52e5('0xb4')](_0x3e92e4[_0x52e5('0x69')],{'$or':_[_0x52e5('0x23')](_0x3e92e4[_0x52e5('0x36')],function(_0x3bb867){var _0x2fc44c={};_0x2fc44c[_0x3bb867]={'$like':'%'+_0x1fdec8[_0x52e5('0x34')][_0x52e5('0x71')]+'%'};return _0x2fc44c;})});}if(_0x1fdec8['query'][_0x52e5('0xbe')]){var _0xad8d91=_0x1fdec8[_0x52e5('0x34')][_0x52e5('0xbe')][_0x52e5('0x26')](',');var _0x31b33f={};_0x31b33f[_0xad8d91[0x0]]={'$gte':moment(_0xad8d91[0x1])['format']('YYYY-MM-DD\x20HH:mm:ss')};_0x3e92e4['where']=_['merge'](_0x3e92e4[_0x52e5('0x69')],_0x31b33f);}_0x3e92e4=_[_0x52e5('0xb4')]({},_0x3e92e4,_0x1fdec8[_0x52e5('0xb5')]);return db[_0x52e5('0xb9')][_0x52e5('0x18')]({'where':_0x3e92e4[_0x52e5('0x69')]})[_0x52e5('0x1c')](function(_0x8b470e){_0x30f7d5[_0x52e5('0x18')]=_0x8b470e;if(_0x1fdec8[_0x52e5('0x34')][_0x52e5('0xbf')]){_0x3e92e4[_0x52e5('0xc0')]=[{'all':!![]}];}return db[_0x52e5('0xb9')][_0x52e5('0xc1')](_0x3e92e4);})[_0x52e5('0x1c')](function(_0x26e78c){if(_0x1fdec8['query']['inlineCss']===_0x52e5('0xc2')){for(var _0x334579=0x0;_0x334579<_0x26e78c[_0x52e5('0x50')];_0x334579++){_0x26e78c[_0x334579][_0x52e5('0xb7')]=juice(_0x26e78c[_0x334579][_0x52e5('0xb7')]);}}_0x30f7d5[_0x52e5('0xb0')]=_0x26e78c;return _0x30f7d5;});}})[_0x52e5('0x1c')](respondWithFilteredResult(_0x4b2b49,_0x3e92e4))[_0x52e5('0x2c')](handleError(_0x4b2b49,null));};exports[_0x52e5('0xc3')]=function(_0xf1f6c4,_0x22c6df){return db[_0x52e5('0x2e')][_0x52e5('0x51')]({'where':{'id':_0xf1f6c4[_0x52e5('0xb2')]['id']}})['then'](handleEntityNotFound(_0x22c6df,null))[_0x52e5('0x1c')](function(_0x544987){if(_0x544987){return _0x544987[_0x52e5('0xc4')](_0xf1f6c4[_0x52e5('0xb7')]['ids'],_[_0x52e5('0xbc')](_0xf1f6c4[_0x52e5('0xb7')],[_0x52e5('0xbb'),'id'])||{})[_0x52e5('0xc5')](function(){return db['Tag'][_0x52e5('0xc1')]({'attributes':['id',_0x52e5('0x20'),_0x52e5('0xc6')],'where':{'id':_0xf1f6c4[_0x52e5('0xb7')][_0x52e5('0xbb')]}});})[_0x52e5('0x1c')](function(_0xa86c3){socket['emit']('mailInteractionTags:save',{'id':Number(_0xf1f6c4[_0x52e5('0xb2')]['id']),'tags':_0xa86c3||[]});return{'id':Number(_0xf1f6c4['params']['id']),'tags':_0xa86c3||[]};});}})[_0x52e5('0x1c')](respondWithResult(_0x22c6df,null))[_0x52e5('0x2c')](handleError(_0x22c6df,null));};exports[_0x52e5('0xc7')]=function(_0x3dd8c2,_0x569cf4){return db[_0x52e5('0x2e')][_0x52e5('0x51')]({'where':{'id':_0x3dd8c2[_0x52e5('0xb2')]['id']}})[_0x52e5('0x1c')](handleEntityNotFound(_0x569cf4,null))['then'](function(_0x1d4557){if(_0x1d4557){return _0x1d4557[_0x52e5('0xc7')](_0x3dd8c2[_0x52e5('0x34')]['ids']);}})[_0x52e5('0x1c')](respondWithStatusCode(_0x569cf4,null))[_0x52e5('0x2c')](handleError(_0x569cf4,null));};exports[_0x52e5('0xc8')]=function(_0x193c73,_0x1f45a6){var _0x547949=moment()[_0x52e5('0xc9')]()[_0x52e5('0xab')]();var _0x1afb76=path[_0x52e5('0xca')](config['root'],_0x52e5('0xcb'),_0x52e5('0xcc'),_0x52e5('0xcd'));var _0x28591a=path[_0x52e5('0xca')](config[_0x52e5('0xce')],_0x52e5('0xcb'),_0x52e5('0xcc'),_0x52e5('0xcf'));var _0x1ac950=path[_0x52e5('0xca')](_0x1afb76,_0x547949);var _0x26540c=util[_0x52e5('0xd0')](_0x52e5('0xd1'),_0x193c73['params']['id'],_0x547949);var _0x4297eb=path[_0x52e5('0xca')](_0x1afb76,_0x26540c);var _0x156c94=[];if(_0x193c73[_0x52e5('0x34')][_0x52e5('0xcf')]){_0x156c94[_0x52e5('0x28')]({'model':db[_0x52e5('0xd2')],'as':_0x52e5('0xd3'),'raw':!![]});}var _0x5df138=[{'model':db[_0x52e5('0xb9')],'as':_0x52e5('0xd4'),'attributes':['id','body',_0x52e5('0x3e'),'to','cc',_0x52e5('0xd5'),_0x52e5('0xd6'),_0x52e5('0xd7')],'where':{'secret':![]},'order':qs[_0x52e5('0x3a')]('id'),'include':_0x156c94}];return db[_0x52e5('0x2e')][_0x52e5('0x51')]({'where':{'id':_0x193c73[_0x52e5('0xb2')]['id']},'include':_0x5df138})['then'](handleEntityNotFound(_0x1f45a6,null))[_0x52e5('0x1c')](function(_0x38ed82){if(_0x38ed82&&_0x38ed82[_0x52e5('0xd4')]){var _0x20a329=_0x38ed82[_0x52e5('0xd8')]({'plain':!![]});fs[_0x52e5('0xd9')](_0x1ac950);return BPromise[_0x52e5('0xda')](_0x20a329[_0x52e5('0xd4')],function(_0x26e90e,_0x226753){var _0x18feed={'from':_0x26e90e[_0x52e5('0x3e')],'to':_0x26e90e['to'],'subject':_0x26e90e[_0x52e5('0xd6')],'html':htmlEntities[_0x52e5('0xdb')](_0x26e90e[_0x52e5('0xb7')]),'headers':{'Date':moment(_0x26e90e[_0x52e5('0xd7')])['format']('ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ')},'attachments':[]};if(_0x26e90e['cc']){_0x18feed[_0x52e5('0xdc')]['Cc']=_0x26e90e['cc'];}if(_0x26e90e[_0x52e5('0xd5')]){_0x18feed[_0x52e5('0xdc')][_0x52e5('0xdd')]=_0x26e90e[_0x52e5('0xd5')];}return new BPromise(function(_0x287aad,_0x4ddd1c){if(_0x26e90e['Attachments']){for(var _0x4f16e2=0x0;_0x4f16e2<_0x26e90e[_0x52e5('0xd3')][_0x52e5('0x50')];_0x4f16e2++){var _0x1daa63=_0x26e90e[_0x52e5('0xd3')][_0x4f16e2];var _0x2436fe=path[_0x52e5('0xca')](_0x28591a,_0x1daa63[_0x52e5('0xde')]);if(fs[_0x52e5('0xdf')](_0x2436fe)){_0x18feed['attachments']['push']({'name':_0x1daa63[_0x52e5('0x20')],'contentType':_0x1daa63[_0x52e5('0x30')],'data':fs[_0x52e5('0xe0')](_0x2436fe)});}}}emlformat[_0x52e5('0xe1')](_0x18feed,function(_0x55a1be,_0xe0af7){if(_0x55a1be)return _0x4ddd1c(_0x55a1be);fs[_0x52e5('0xe2')](path[_0x52e5('0xca')](_0x1ac950,util[_0x52e5('0xd0')](_0x52e5('0xe3'),_0x226753)),_0xe0af7);return _0x287aad(_0xe0af7);});});})[_0x52e5('0x1c')](function(){return new BPromise(function(_0x253085,_0x250be3){zipdir(_0x1ac950,{'saveTo':_0x4297eb},function(_0x168252,_0xfcbb73){if(_0x168252)return _0x250be3(_0x168252);return _0x253085(_0xfcbb73);});})[_0x52e5('0x1c')](function(){return new BPromise(function(_0x3a8666,_0x52198e){rimraf(_0x1ac950,function(_0x121f19){if(_0x121f19)_0x52198e(_0x121f19);return _0x3a8666();});});})['then'](function(){return _0x1f45a6[_0x52e5('0xc8')](_0x4297eb,_0x26540c,function(_0x2239d2){if(!_0x2239d2)fs[_0x52e5('0xe4')](_0x4297eb);});});});}else{return _0x1f45a6[_0x52e5('0x11')](0xc8);}})[_0x52e5('0x2c')](handleError(_0x1f45a6,null));};
\ No newline at end of file
index 0017417..175db91 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2d76=['findAll','unreadMessages','length','emit','catch','hasOwnProperty','exports','events','../../mysqldb','MailInteraction','save','remove','getUsers','then','setDataValue','Users','map'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0x2d76,0x117));var _0x62d7=function(_0x4a13af,_0x5db35d){_0x4a13af=_0x4a13af-0x0;var _0xf3b735=_0x2d76[_0x4a13af];return _0xf3b735;};'use strict';var EventEmitter=require(_0x62d7('0x0'));var MailInteraction=require(_0x62d7('0x1'))['db'][_0x62d7('0x2')];var MailMessage=require(_0x62d7('0x1'))['db']['MailMessage'];var MailInteractionEvents=new EventEmitter();MailInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x62d7('0x3'),'afterUpdate':'update','afterDestroy':_0x62d7('0x4')};function emitEvent(_0x1ff644){return function(_0x52b29d,_0x5244c7,_0x1bb335){_0x52b29d[_0x62d7('0x5')]({'attributes':['id'],'raw':!![]})[_0x62d7('0x6')](function(_0x580869){_0x52b29d[_0x62d7('0x7')](_0x62d7('0x8'),_0x580869[_0x62d7('0x9')](function(_0xee9306){return{'id':_0xee9306['id']};}));return MailMessage[_0x62d7('0xa')]({'where':{'MailInteractionId':_0x52b29d['id'],'direction':'in','read':![]},'raw':!![]});})[_0x62d7('0x6')](function(_0x440f77){_0x52b29d[_0x62d7('0x7')](_0x62d7('0xb'),_0x440f77[_0x62d7('0xc')]);MailInteractionEvents[_0x62d7('0xd')](_0x1ff644+':'+_0x52b29d['id'],_0x52b29d);MailInteractionEvents[_0x62d7('0xd')](_0x1ff644,_0x52b29d);_0x1bb335(null);})[_0x62d7('0xe')](_0x1bb335(null));};}for(var e in events){if(events[_0x62d7('0xf')](e)){var event=events[e];MailInteraction['hook'](e,emitEvent(event));}}module[_0x62d7('0x10')]=MailInteractionEvents;
\ No newline at end of file
+var _0xa37f=['remove','getUsers','then','setDataValue','Users','map','findAll','emit','catch','hasOwnProperty','hook','exports','events','../../mysqldb','MailInteraction','MailMessage','setMaxListeners','save'];(function(_0x532a52,_0x1a8930){var _0xf1542c=function(_0xcd302f){while(--_0xcd302f){_0x532a52['push'](_0x532a52['shift']());}};_0xf1542c(++_0x1a8930);}(_0xa37f,0x66));var _0xfa37=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xa37f[_0x321bb2];return _0x9c12ed;};'use strict';var EventEmitter=require(_0xfa37('0x0'));var MailInteraction=require(_0xfa37('0x1'))['db'][_0xfa37('0x2')];var MailMessage=require(_0xfa37('0x1'))['db'][_0xfa37('0x3')];var MailInteractionEvents=new EventEmitter();MailInteractionEvents[_0xfa37('0x4')](0x0);var events={'afterCreate':_0xfa37('0x5'),'afterUpdate':'update','afterDestroy':_0xfa37('0x6')};function emitEvent(_0x22216a){return function(_0x40afbb,_0x30b9fc,_0x10fa1c){_0x40afbb[_0xfa37('0x7')]({'attributes':['id'],'raw':!![]})[_0xfa37('0x8')](function(_0x8f95ab){_0x40afbb[_0xfa37('0x9')](_0xfa37('0xa'),_0x8f95ab[_0xfa37('0xb')](function(_0xfd1074){return{'id':_0xfd1074['id']};}));return MailMessage[_0xfa37('0xc')]({'where':{'MailInteractionId':_0x40afbb['id'],'direction':'in','read':![]},'raw':!![]});})[_0xfa37('0x8')](function(_0x1a08bf){_0x40afbb['setDataValue']('unreadMessages',_0x1a08bf['length']);MailInteractionEvents[_0xfa37('0xd')](_0x22216a+':'+_0x40afbb['id'],_0x40afbb);MailInteractionEvents[_0xfa37('0xd')](_0x22216a,_0x40afbb);_0x10fa1c(null);})[_0xfa37('0xe')](_0x10fa1c(null));};}for(var e in events){if(events[_0xfa37('0xf')](e)){var event=events[e];MailInteraction[_0xfa37('0x10')](e,emitEvent(event));}}module[_0xfa37('0x11')]=MailInteractionEvents;
\ No newline at end of file
index 0155bfd..f16c05b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc63=['request-promise','path','rimraf','../../config/environment','./mailInteraction.attributes','exports','MailInteraction','fti_mail_interactions','subject','FULLTEXT','substatusAt','format','YYYY-MM-DD\x20HH:mm:ss','closed','closedAt','changed','substatus','models','get','catch','utf8mb4','utf8mb4_unicode_ci','lodash','../../config/logger','api','moment','bluebird'];(function(_0xe059ce,_0x2c5153){var _0xebddca=function(_0x2a517d){while(--_0x2a517d){_0xe059ce['push'](_0xe059ce['shift']());}};_0xebddca(++_0x2c5153);}(_0xbc63,0xb8));var _0x3bc6=function(_0x701ced,_0x45d376){_0x701ced=_0x701ced-0x0;var _0x52a20d=_0xbc63[_0x701ced];return _0x52a20d;};'use strict';var _=require(_0x3bc6('0x0'));var util=require('util');var logger=require(_0x3bc6('0x1'))(_0x3bc6('0x2'));var moment=require(_0x3bc6('0x3'));var BPromise=require(_0x3bc6('0x4'));var rp=require(_0x3bc6('0x5'));var fs=require('fs');var path=require(_0x3bc6('0x6'));var rimraf=require(_0x3bc6('0x7'));var config=require(_0x3bc6('0x8'));var attributes=require(_0x3bc6('0x9'));module[_0x3bc6('0xa')]=function(_0x30ee14,_0x570f0a){return _0x30ee14['define'](_0x3bc6('0xb'),attributes,{'tableName':'mail_interactions','paranoid':![],'indexes':[{'name':_0x3bc6('0xc'),'fields':[_0x3bc6('0xd'),'to'],'type':_0x3bc6('0xe')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x25ffcc,_0x2b73fd,_0xb59d83){if(_0x25ffcc['substatus']){_0x25ffcc[_0x3bc6('0xf')]=moment()[_0x3bc6('0x10')](_0x3bc6('0x11'));}if(_0x25ffcc[_0x3bc6('0x12')]){_0x25ffcc[_0x3bc6('0x13')]=moment()['format'](_0x3bc6('0x11'));}_0xb59d83(null,_0x2b73fd);},'beforeUpdate':function(_0x21b5e6,_0x417ee3,_0x16e1a8){if(_0x21b5e6[_0x3bc6('0x14')](_0x3bc6('0x15'))){_0x21b5e6[_0x3bc6('0xf')]=_0x21b5e6['substatus']?moment()['format'](_0x3bc6('0x11')):null;}if(_0x21b5e6['changed'](_0x3bc6('0x12'))){_0x21b5e6[_0x3bc6('0x13')]=moment()[_0x3bc6('0x10')]('YYYY-MM-DD\x20HH:mm:ss');_0x21b5e6[_0x3bc6('0x15')]=null;_0x21b5e6[_0x3bc6('0xf')]=null;}_0x16e1a8(null,_0x21b5e6);},'afterUpdate':function(_0x1f94fb,_0x3fd81a,_0x492f60){var _0xb95a19=_0x30ee14[_0x3bc6('0x16')];var _0x42c3b9=_0x1f94fb[_0x3bc6('0x17')]({'plain':!![]});if(_0x42c3b9[_0x3bc6('0x12')]){return _0xb95a19['MailMessage']['update']({'read':!![]},{'where':{'MailInteractionId':_0x42c3b9['id']}})['then'](function(){_0x492f60();})[_0x3bc6('0x18')](function(_0xe37ace){_0x492f60(_0xe37ace);});}else{_0x492f60();}}},'charset':_0x3bc6('0x19'),'collate':_0x3bc6('0x1a')});};
\ No newline at end of file
+var _0x2b4b=['lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','exports','define','mail_interactions','fti_mail_interactions','subject','FULLTEXT','YYYY-MM-DD\x20HH:mm:ss','closed','closedAt','format','changed','substatus','substatusAt','models','get','update','then','catch','utf8mb4','utf8mb4_unicode_ci'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x2b4b,0x91));var _0xb2b4=function(_0x53e428,_0xedf679){_0x53e428=_0x53e428-0x0;var _0x345950=_0x2b4b[_0x53e428];return _0x345950;};'use strict';var _=require(_0xb2b4('0x0'));var util=require(_0xb2b4('0x1'));var logger=require(_0xb2b4('0x2'))(_0xb2b4('0x3'));var moment=require(_0xb2b4('0x4'));var BPromise=require('bluebird');var rp=require(_0xb2b4('0x5'));var fs=require('fs');var path=require(_0xb2b4('0x6'));var rimraf=require(_0xb2b4('0x7'));var config=require(_0xb2b4('0x8'));var attributes=require('./mailInteraction.attributes');module[_0xb2b4('0x9')]=function(_0x9c3459,_0x179898){return _0x9c3459[_0xb2b4('0xa')]('MailInteraction',attributes,{'tableName':_0xb2b4('0xb'),'paranoid':![],'indexes':[{'name':_0xb2b4('0xc'),'fields':[_0xb2b4('0xd'),'to'],'type':_0xb2b4('0xe')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0xd2e05a,_0x1cfac1,_0x1e55b6){if(_0xd2e05a['substatus']){_0xd2e05a['substatusAt']=moment()['format'](_0xb2b4('0xf'));}if(_0xd2e05a[_0xb2b4('0x10')]){_0xd2e05a[_0xb2b4('0x11')]=moment()[_0xb2b4('0x12')](_0xb2b4('0xf'));}_0x1e55b6(null,_0x1cfac1);},'beforeUpdate':function(_0x5559ba,_0x2f2545,_0x161289){if(_0x5559ba[_0xb2b4('0x13')](_0xb2b4('0x14'))){_0x5559ba[_0xb2b4('0x15')]=_0x5559ba[_0xb2b4('0x14')]?moment()[_0xb2b4('0x12')]('YYYY-MM-DD\x20HH:mm:ss'):null;}if(_0x5559ba[_0xb2b4('0x13')]('closed')){_0x5559ba[_0xb2b4('0x11')]=moment()[_0xb2b4('0x12')](_0xb2b4('0xf'));_0x5559ba[_0xb2b4('0x14')]=null;_0x5559ba['substatusAt']=null;}_0x161289(null,_0x5559ba);},'afterUpdate':function(_0x2705c4,_0x1e750f,_0x4512b7){var _0x3468ef=_0x9c3459[_0xb2b4('0x16')];var _0x3eda29=_0x2705c4[_0xb2b4('0x17')]({'plain':!![]});if(_0x3eda29[_0xb2b4('0x10')]){return _0x3468ef['MailMessage'][_0xb2b4('0x18')]({'read':!![]},{'where':{'MailInteractionId':_0x3eda29['id']}})[_0xb2b4('0x19')](function(){_0x4512b7();})[_0xb2b4('0x1a')](function(_0x28be42){_0x4512b7(_0x28be42);});}else{_0x4512b7();}}},'charset':_0xb2b4('0x1b'),'collate':_0xb2b4('0x1c')});};
\ No newline at end of file
index ab4935a..9c8a5fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedf9=['message','result','catch','UpdateMailInteraction','MailInteraction','update','body','options','raw','where','debug','find','addTags','ids','omit','spread','AddTags','lodash','util','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','register','request','then','info','MailInteraction,\x20%s,\x20%s','request\x20sent','MailInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x1745ff,_0x311933){var _0x19732c=function(_0x272f86){while(--_0x272f86){_0x1745ff['push'](_0x1745ff['shift']());}};_0x19732c(++_0x311933);}(_0xedf9,0x130));var _0x9edf=function(_0x52564b,_0x24c4eb){_0x52564b=_0x52564b-0x0;var _0x31042d=_0xedf9[_0x52564b];return _0x31042d;};'use strict';var _=require(_0x9edf('0x0'));var util=require(_0x9edf('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x9edf('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9edf('0x3'))['db'];var utils=require(_0x9edf('0x4'));var logger=require(_0x9edf('0x5'))(_0x9edf('0x6'));var config=require(_0x9edf('0x7'));var jayson=require(_0x9edf('0x8'));var client=jayson[_0x9edf('0x9')][_0x9edf('0xa')]({'port':0x232a});config[_0x9edf('0xb')]=_[_0x9edf('0xc')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x9edf('0xd'))(new Redis(config[_0x9edf('0xb')]));require('./mailInteraction.socket')[_0x9edf('0xe')](socket);function respondWithRpcPromise(_0x16d7ae,_0x51228c,_0x23afac){return new BPromise(function(_0x410fdd,_0x3573b2){return client[_0x9edf('0xf')](_0x16d7ae,_0x23afac)[_0x9edf('0x10')](function(_0x5625d5){logger[_0x9edf('0x11')](_0x9edf('0x12'),_0x51228c,_0x9edf('0x13'));logger['debug'](_0x9edf('0x14'),_0x51228c,'request\x20sent',JSON[_0x9edf('0x15')](_0x5625d5));if(_0x5625d5[_0x9edf('0x16')]){if(_0x5625d5[_0x9edf('0x16')][_0x9edf('0x17')]===0x1f4){logger['error'](_0x9edf('0x12'),_0x51228c,_0x5625d5[_0x9edf('0x16')][_0x9edf('0x18')]);return _0x3573b2(_0x5625d5['error']['message']);}logger[_0x9edf('0x16')](_0x9edf('0x12'),_0x51228c,_0x5625d5[_0x9edf('0x16')][_0x9edf('0x18')]);return _0x410fdd(_0x5625d5[_0x9edf('0x16')][_0x9edf('0x18')]);}else{logger[_0x9edf('0x11')](_0x9edf('0x12'),_0x51228c,_0x9edf('0x13'));_0x410fdd(_0x5625d5[_0x9edf('0x19')][_0x9edf('0x18')]);}})[_0x9edf('0x1a')](function(_0x4aa104){logger[_0x9edf('0x16')]('MailInteraction,\x20%s,\x20%s',_0x51228c,_0x4aa104);_0x3573b2(_0x4aa104);});});}exports[_0x9edf('0x1b')]=function(_0x515f6e){var _0x4542c4=this;return new Promise(function(_0x127ce2,_0x32e6ed){return db[_0x9edf('0x1c')][_0x9edf('0x1d')](_0x515f6e[_0x9edf('0x1e')],{'raw':_0x515f6e[_0x9edf('0x1f')]?_0x515f6e[_0x9edf('0x1f')][_0x9edf('0x20')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x515f6e[_0x9edf('0x1f')]?_0x515f6e[_0x9edf('0x1f')][_0x9edf('0x21')]||null:null,'attributes':_0x515f6e[_0x9edf('0x1f')]?_0x515f6e[_0x9edf('0x1f')]['attributes']||null:null,'limit':_0x515f6e['options']?_0x515f6e['options']['limit']||null:null})[_0x9edf('0x10')](function(_0x30f107){logger[_0x9edf('0x11')](_0x9edf('0x1b'),_0x515f6e);logger[_0x9edf('0x22')](_0x9edf('0x1b'),_0x515f6e,JSON['stringify'](_0x30f107));_0x127ce2(_0x30f107);})['catch'](function(_0x351f9d){logger['error'](_0x9edf('0x1b'),_0x351f9d[_0x9edf('0x18')],_0x515f6e);_0x32e6ed(_0x4542c4[_0x9edf('0x16')](0x1f4,_0x351f9d[_0x9edf('0x18')]));});});};exports['AddTagsToMailInteraction']=function(_0x1fa34b){return new Promise(function(_0x5a4877,_0x52a1ee){return db[_0x9edf('0x1c')][_0x9edf('0x23')]({'where':_0x1fa34b['options']?_0x1fa34b[_0x9edf('0x1f')][_0x9edf('0x21')]||null:null})[_0x9edf('0x10')](function(_0x2a9fe3){if(_0x2a9fe3){return _0x2a9fe3[_0x9edf('0x24')](_0x1fa34b[_0x9edf('0x1e')][_0x9edf('0x25')],_[_0x9edf('0x26')](_0x1fa34b['body'],['ids','id'])||{});}})[_0x9edf('0x27')](function(_0x559fe6){logger['info']('AddTags',_0x1fa34b);logger[_0x9edf('0x22')](_0x9edf('0x28'),_0x1fa34b,JSON[_0x9edf('0x15')](_0x559fe6));_0x5a4877(_0x559fe6);})[_0x9edf('0x1a')](function(_0x179761){logger['error']('AddTags',_0x179761['message'],_0x1fa34b);_0x52a1ee(_this['error'](0x1f4,_0x179761[_0x9edf('0x18')]));});});};
\ No newline at end of file
+var _0x6b8f=['util','bluebird','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','redis','defaults','register','info','MailInteraction,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','UpdateMailInteraction','MailInteraction','update','options','raw','where','attributes','limit','then','catch','find','addTags','ids','omit','body','spread','AddTags'];(function(_0x464921,_0x4f1aa8){var _0x4db67b=function(_0x3bc159){while(--_0x3bc159){_0x464921['push'](_0x464921['shift']());}};_0x4db67b(++_0x4f1aa8);}(_0x6b8f,0x1bc));var _0xf6b8=function(_0x4fb70b,_0x536a4a){_0x4fb70b=_0x4fb70b-0x0;var _0x2467c0=_0x6b8f[_0x4fb70b];return _0x2467c0;};'use strict';var _=require('lodash');var util=require(_0xf6b8('0x0'));var moment=require('moment');var BPromise=require(_0xf6b8('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf6b8('0x2'))['db'];var utils=require(_0xf6b8('0x3'));var logger=require('../../config/logger')(_0xf6b8('0x4'));var config=require(_0xf6b8('0x5'));var jayson=require(_0xf6b8('0x6'));var client=jayson['client'][_0xf6b8('0x7')]({'port':0x232a});config[_0xf6b8('0x8')]=_[_0xf6b8('0x9')](config[_0xf6b8('0x8')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xf6b8('0x8')]));require('./mailInteraction.socket')[_0xf6b8('0xa')](socket);function respondWithRpcPromise(_0x7ac5fd,_0x16a799,_0x3e6712){return new BPromise(function(_0x21734d,_0x162938){return client['request'](_0x7ac5fd,_0x3e6712)['then'](function(_0x5ae09d){logger[_0xf6b8('0xb')](_0xf6b8('0xc'),_0x16a799,_0xf6b8('0xd'));logger[_0xf6b8('0xe')]('MailInteraction,\x20%s,\x20%s,\x20%s',_0x16a799,'request\x20sent',JSON[_0xf6b8('0xf')](_0x5ae09d));if(_0x5ae09d[_0xf6b8('0x10')]){if(_0x5ae09d['error'][_0xf6b8('0x11')]===0x1f4){logger[_0xf6b8('0x10')](_0xf6b8('0xc'),_0x16a799,_0x5ae09d['error'][_0xf6b8('0x12')]);return _0x162938(_0x5ae09d['error'][_0xf6b8('0x12')]);}logger[_0xf6b8('0x10')](_0xf6b8('0xc'),_0x16a799,_0x5ae09d[_0xf6b8('0x10')][_0xf6b8('0x12')]);return _0x21734d(_0x5ae09d['error']['message']);}else{logger[_0xf6b8('0xb')]('MailInteraction,\x20%s,\x20%s',_0x16a799,_0xf6b8('0xd'));_0x21734d(_0x5ae09d[_0xf6b8('0x13')]['message']);}})['catch'](function(_0x1d0ee9){logger[_0xf6b8('0x10')](_0xf6b8('0xc'),_0x16a799,_0x1d0ee9);_0x162938(_0x1d0ee9);});});}exports[_0xf6b8('0x14')]=function(_0x4df5f4){var _0x59f9df=this;return new Promise(function(_0x5a9553,_0x3298a4){return db[_0xf6b8('0x15')][_0xf6b8('0x16')](_0x4df5f4['body'],{'raw':_0x4df5f4[_0xf6b8('0x17')]?_0x4df5f4[_0xf6b8('0x17')][_0xf6b8('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4df5f4[_0xf6b8('0x17')]?_0x4df5f4['options'][_0xf6b8('0x19')]||null:null,'attributes':_0x4df5f4['options']?_0x4df5f4[_0xf6b8('0x17')][_0xf6b8('0x1a')]||null:null,'limit':_0x4df5f4[_0xf6b8('0x17')]?_0x4df5f4[_0xf6b8('0x17')][_0xf6b8('0x1b')]||null:null})[_0xf6b8('0x1c')](function(_0x4edd29){logger[_0xf6b8('0xb')](_0xf6b8('0x14'),_0x4df5f4);logger['debug'](_0xf6b8('0x14'),_0x4df5f4,JSON[_0xf6b8('0xf')](_0x4edd29));_0x5a9553(_0x4edd29);})[_0xf6b8('0x1d')](function(_0xd5ebb5){logger[_0xf6b8('0x10')]('UpdateMailInteraction',_0xd5ebb5['message'],_0x4df5f4);_0x3298a4(_0x59f9df[_0xf6b8('0x10')](0x1f4,_0xd5ebb5[_0xf6b8('0x12')]));});});};exports['AddTagsToMailInteraction']=function(_0x459ed0){return new Promise(function(_0x27e46d,_0x888319){return db['MailInteraction'][_0xf6b8('0x1e')]({'where':_0x459ed0[_0xf6b8('0x17')]?_0x459ed0['options'][_0xf6b8('0x19')]||null:null})[_0xf6b8('0x1c')](function(_0x324eeb){if(_0x324eeb){return _0x324eeb[_0xf6b8('0x1f')](_0x459ed0['body'][_0xf6b8('0x20')],_[_0xf6b8('0x21')](_0x459ed0[_0xf6b8('0x22')],['ids','id'])||{});}})[_0xf6b8('0x23')](function(_0x981e47){logger[_0xf6b8('0xb')]('AddTags',_0x459ed0);logger[_0xf6b8('0xe')](_0xf6b8('0x24'),_0x459ed0,JSON[_0xf6b8('0xf')](_0x981e47));_0x27e46d(_0x981e47);})[_0xf6b8('0x1d')](function(_0x4be3cb){logger[_0xf6b8('0x10')](_0xf6b8('0x24'),_0x4be3cb[_0xf6b8('0x12')],_0x459ed0);_0x888319(_this['error'](0x1f4,_0x4be3cb['message']));});});};
\ No newline at end of file
index 33c057a..b3c61dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x51df=['save','update','emit','removeListener','length','mailInteraction:','./mailInteraction.events'];(function(_0x260ef4,_0x212ccd){var _0xb9a3e6=function(_0x18edd8){while(--_0x18edd8){_0x260ef4['push'](_0x260ef4['shift']());}};_0xb9a3e6(++_0x212ccd);}(_0x51df,0x141));var _0xf51d=function(_0xa6db22,_0x93d59d){_0xa6db22=_0xa6db22-0x0;var _0x3281b4=_0x51df[_0xa6db22];return _0x3281b4;};'use strict';var MailInteractionEvents=require(_0xf51d('0x0'));var events=[_0xf51d('0x1'),'remove',_0xf51d('0x2')];function createListener(_0x3c55ce,_0x3f0bb9){return function(_0x4dbcf5){_0x3f0bb9[_0xf51d('0x3')](_0x3c55ce,_0x4dbcf5);};}function removeListener(_0x483ced,_0x4c23d2){return function(){MailInteractionEvents[_0xf51d('0x4')](_0x483ced,_0x4c23d2);};}exports['register']=function(_0x25bb3b){for(var _0x1b3715=0x0,_0x5e9376=events[_0xf51d('0x5')];_0x1b3715<_0x5e9376;_0x1b3715++){var _0x19d84a=events[_0x1b3715];var _0x404d4c=createListener(_0xf51d('0x6')+_0x19d84a,_0x25bb3b);MailInteractionEvents['on'](_0x19d84a,_0x404d4c);}};
\ No newline at end of file
+var _0x2c24=['length','mailInteraction:','save','remove','update','removeListener','register'];(function(_0x4f324e,_0x3a2aa8){var _0xe7da0f=function(_0x7ab176){while(--_0x7ab176){_0x4f324e['push'](_0x4f324e['shift']());}};_0xe7da0f(++_0x3a2aa8);}(_0x2c24,0x1de));var _0x42c2=function(_0x5230a6,_0x1e42a5){_0x5230a6=_0x5230a6-0x0;var _0x57d818=_0x2c24[_0x5230a6];return _0x57d818;};'use strict';var MailInteractionEvents=require('./mailInteraction.events');var events=[_0x42c2('0x0'),_0x42c2('0x1'),_0x42c2('0x2')];function createListener(_0x2178a5,_0x1dbf4e){return function(_0x56d4a0){_0x1dbf4e['emit'](_0x2178a5,_0x56d4a0);};}function removeListener(_0x1ff9ff,_0x24378d){return function(){MailInteractionEvents[_0x42c2('0x3')](_0x1ff9ff,_0x24378d);};}exports[_0x42c2('0x4')]=function(_0x253798){for(var _0x39150a=0x0,_0x51fcb7=events[_0x42c2('0x5')];_0x39150a<_0x51fcb7;_0x39150a++){var _0x2e5ca6=events[_0x39150a];var _0x59dcaa=createListener(_0x42c2('0x6')+_0x2e5ca6,_0x253798);MailInteractionEvents['on'](_0x2e5ca6,_0x59dcaa);}};
\ No newline at end of file
index b22f6ec..4fa736d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa6e2=['get','isAuthenticated','index','describe','/:id','show','/:id/download','download','post','tracked','mailmessage:create','put','update','/:id/accept','/:id/reject','reject','delete','exports','multer','util','connect-timeout','express','Router','../../components/interaction/service'];(function(_0x2c6de2,_0x5d253d){var _0x4492f6=function(_0x1c765b){while(--_0x1c765b){_0x2c6de2['push'](_0x2c6de2['shift']());}};_0x4492f6(++_0x5d253d);}(_0xa6e2,0x132));var _0x2a6e=function(_0x1a61ec,_0x165289){_0x1a61ec=_0x1a61ec-0x0;var _0x299b75=_0xa6e2[_0x1a61ec];return _0x299b75;};'use strict';var multer=require(_0x2a6e('0x0'));var util=require(_0x2a6e('0x1'));var path=require('path');var timeout=require(_0x2a6e('0x2'));var express=require(_0x2a6e('0x3'));var router=express[_0x2a6e('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x2a6e('0x5'));var config=require('../../config/environment');var controller=require('./mailMessage.controller');router[_0x2a6e('0x6')]('/',auth[_0x2a6e('0x7')](),controller[_0x2a6e('0x8')]);router[_0x2a6e('0x6')]('/describe',auth[_0x2a6e('0x7')](),controller[_0x2a6e('0x9')]);router['get'](_0x2a6e('0xa'),auth[_0x2a6e('0x7')](),controller[_0x2a6e('0xb')]);router[_0x2a6e('0x6')](_0x2a6e('0xc'),auth[_0x2a6e('0x7')](),controller[_0x2a6e('0xd')]);router[_0x2a6e('0xe')]('/',auth[_0x2a6e('0x7')](),interaction[_0x2a6e('0xf')]('mail',_0x2a6e('0x10')),controller['create']);router[_0x2a6e('0x11')](_0x2a6e('0xa'),auth[_0x2a6e('0x7')](),controller[_0x2a6e('0x12')]);router[_0x2a6e('0x11')](_0x2a6e('0x13'),auth[_0x2a6e('0x7')](),controller['accept']);router[_0x2a6e('0x11')](_0x2a6e('0x14'),auth['isAuthenticated'](),controller[_0x2a6e('0x15')]);router[_0x2a6e('0x16')](_0x2a6e('0xa'),auth[_0x2a6e('0x7')](),controller['destroy']);module[_0x2a6e('0x17')]=router;
\ No newline at end of file
+var _0x4058=['get','/describe','/:id','download','tracked','accept','put','reject','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','isAuthenticated','index'];(function(_0x13d07a,_0x41efc3){var _0x5ee0ee=function(_0x4ca94a){while(--_0x4ca94a){_0x13d07a['push'](_0x13d07a['shift']());}};_0x5ee0ee(++_0x41efc3);}(_0x4058,0x129));var _0x8405=function(_0x264cce,_0x2cd831){_0x264cce=_0x264cce-0x0;var _0x25d0b8=_0x4058[_0x264cce];return _0x25d0b8;};'use strict';var multer=require(_0x8405('0x0'));var util=require(_0x8405('0x1'));var path=require(_0x8405('0x2'));var timeout=require(_0x8405('0x3'));var express=require(_0x8405('0x4'));var router=express[_0x8405('0x5')]();var fs_extra=require(_0x8405('0x6'));var auth=require(_0x8405('0x7'));var interaction=require(_0x8405('0x8'));var config=require('../../config/environment');var controller=require('./mailMessage.controller');router['get']('/',auth[_0x8405('0x9')](),controller[_0x8405('0xa')]);router[_0x8405('0xb')](_0x8405('0xc'),auth[_0x8405('0x9')](),controller['describe']);router[_0x8405('0xb')](_0x8405('0xd'),auth[_0x8405('0x9')](),controller['show']);router[_0x8405('0xb')]('/:id/download',auth[_0x8405('0x9')](),controller[_0x8405('0xe')]);router['post']('/',auth[_0x8405('0x9')](),interaction[_0x8405('0xf')]('mail','mailmessage:create'),controller['create']);router['put'](_0x8405('0xd'),auth['isAuthenticated'](),controller['update']);router['put']('/:id/accept',auth['isAuthenticated'](),controller[_0x8405('0x10')]);router[_0x8405('0x11')]('/:id/reject',auth[_0x8405('0x9')](),controller[_0x8405('0x12')]);router[_0x8405('0x13')](_0x8405('0xd'),auth['isAuthenticated'](),controller[_0x8405('0x14')]);module[_0x8405('0x15')]=router;
\ No newline at end of file
index dfb8ac6..dd76f04 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x33f8=['INTEGER','Chat','Email','sequelize','lodash','exports','TEXT','long','BOOLEAN','ENUM','out','STRING'];(function(_0x102e37,_0x14a181){var _0x35a07c=function(_0x16577f){while(--_0x16577f){_0x102e37['push'](_0x102e37['shift']());}};_0x35a07c(++_0x14a181);}(_0x33f8,0xab));var _0x833f=function(_0x2ccaa8,_0x5f4dcb){_0x2ccaa8=_0x2ccaa8-0x0;var _0x1fe917=_0x33f8[_0x2ccaa8];return _0x1fe917;};'use strict';var Sequelize=require(_0x833f('0x0'));var _=require(_0x833f('0x1'));module[_0x833f('0x2')]={'body':{'type':Sequelize[_0x833f('0x3')](_0x833f('0x4')),'allowNull':![]},'plainBody':{'type':Sequelize['TEXT']('medium')},'read':{'type':Sequelize[_0x833f('0x5')],'defaultValue':![]},'direction':{'type':Sequelize[_0x833f('0x6')]('in',_0x833f('0x7')),'defaultValue':_0x833f('0x7'),'allowNull':![]},'messageId':{'type':Sequelize[_0x833f('0x8')](0x1fe)},'from':{'type':Sequelize[_0x833f('0x8')]},'to':{'type':Sequelize[_0x833f('0x3')](_0x833f('0x4'))},'cc':{'type':Sequelize[_0x833f('0x3')](_0x833f('0x4'))},'bcc':{'type':Sequelize['TEXT'](_0x833f('0x4'))},'subject':{'type':Sequelize['TEXT']},'sentAt':{'type':Sequelize['DATE']},'attach':{'type':Sequelize[_0x833f('0x9')],'defaultValue':0x0},'secret':{'type':Sequelize[_0x833f('0x5')],'defaultValue':![]},'readAt':{'type':Sequelize['DATE']},'originTo':{'type':Sequelize['TEXT'](_0x833f('0x4'))},'originCc':{'type':Sequelize[_0x833f('0x3')](_0x833f('0x4'))},'originChannel':{'type':Sequelize['ENUM']('Email',_0x833f('0xa')),'defaultValue':_0x833f('0xb'),'allowNull':![]}};
\ No newline at end of file
+var _0x0e43=['exports','long','medium','out','STRING','TEXT','DATE','INTEGER','BOOLEAN','Email','Chat','sequelize','lodash'];(function(_0x4152ae,_0x178a3a){var _0x1813ad=function(_0x34796f){while(--_0x34796f){_0x4152ae['push'](_0x4152ae['shift']());}};_0x1813ad(++_0x178a3a);}(_0x0e43,0x16a));var _0x30e4=function(_0x1cbe82,_0x3ff45c){_0x1cbe82=_0x1cbe82-0x0;var _0x30ec12=_0x0e43[_0x1cbe82];return _0x30ec12;};'use strict';var Sequelize=require(_0x30e4('0x0'));var _=require(_0x30e4('0x1'));module[_0x30e4('0x2')]={'body':{'type':Sequelize['TEXT'](_0x30e4('0x3')),'allowNull':![]},'plainBody':{'type':Sequelize['TEXT'](_0x30e4('0x4'))},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0x30e4('0x5')),'defaultValue':_0x30e4('0x5'),'allowNull':![]},'messageId':{'type':Sequelize[_0x30e4('0x6')](0x1fe)},'from':{'type':Sequelize[_0x30e4('0x6')]},'to':{'type':Sequelize[_0x30e4('0x7')]('long')},'cc':{'type':Sequelize[_0x30e4('0x7')](_0x30e4('0x3'))},'bcc':{'type':Sequelize['TEXT'](_0x30e4('0x3'))},'subject':{'type':Sequelize[_0x30e4('0x7')]},'sentAt':{'type':Sequelize[_0x30e4('0x8')]},'attach':{'type':Sequelize[_0x30e4('0x9')],'defaultValue':0x0},'secret':{'type':Sequelize[_0x30e4('0xa')],'defaultValue':![]},'readAt':{'type':Sequelize['DATE']},'originTo':{'type':Sequelize[_0x30e4('0x7')](_0x30e4('0x3'))},'originCc':{'type':Sequelize[_0x30e4('0x7')]('long')},'originChannel':{'type':Sequelize['ENUM'](_0x30e4('0xb'),_0x30e4('0xc')),'defaultValue':'Email','allowNull':![]}};
\ No newline at end of file
index 32922c6..adea4cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7217=['filters','attributes','intersection','fields','hasOwnProperty','nolimit','sort','where','filter','VIRTUAL','merge','options','findAll','rows','show','params','length','include','find','body','describe','create','direction','out','secret','MailAccount','CmContact','Contacts','updatedAt','MailServerOut','Smtp','service','host','port','secure','authentication','auth','user','pass','attachments','join','root','server/files/attachments','List','ListId','format','YYYY-MM-DD\x20HH:mm:ss','stringify','accept','mail','read','readAt','UserId','agent','get','MailInteractionId','isNil','read1stAt','interaction','role','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','Sequelize','QueryTypes','SELECT','contact','User','fullname','internal','interface','SIP/%s','channel','event','fromString','EventManager','acceptmessage','MailInteraction','[MAILMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','ContactId','email','reject','rejectmessage','download','toString','server','tmp','files','message-%s.eml','from','bcc','subject','Attachments','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','basename','existsSync','readFileSync','build','writeFileSync','eml-format','bluebird','util','path','lodash','ioredis','../../config/logger','api','mail-interactions','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./mailMessage.socket','register','jayson/promise','http','client','request','then','info','request\x20sent','debug','error','code','MailMessage,\x20%s,\x20%s','message','result','catch','status','json','offset','limit','undefined','count','Content-Range','update','destroy','stack','name','send','MailMessage','fieldName','type','key','model','map','query','keys'];(function(_0x3c7794,_0x5909ff){var _0x4bc859=function(_0x2ffd9d){while(--_0x2ffd9d){_0x3c7794['push'](_0x3c7794['shift']());}};_0x4bc859(++_0x5909ff);}(_0x7217,0x19e));var _0x7721=function(_0xbb091,_0x3fe7ee){_0xbb091=_0xbb091-0x0;var _0x467a04=_0x7217[_0xbb091];return _0x467a04;};'use strict';var emlformat=require(_0x7721('0x0'));var moment=require('moment');var BPromise=require(_0x7721('0x1'));var util=require(_0x7721('0x2'));var path=require(_0x7721('0x3'));var fs=require('fs');var _=require(_0x7721('0x4'));var Redis=require(_0x7721('0x5'));var htmlToText=require('html-to-text');var qs=require('../../components/parsers/qs');var logger=require(_0x7721('0x6'))(_0x7721('0x7'));var interaction_log=require(_0x7721('0x6'))(_0x7721('0x8'));var config=require(_0x7721('0x9'));var db=require(_0x7721('0xa'))['db'];config[_0x7721('0xb')]=_[_0x7721('0xc')](config[_0x7721('0xb')],{'host':_0x7721('0xd'),'port':0x18eb});var socket=require(_0x7721('0xe'))(new Redis(config[_0x7721('0xb')]));require(_0x7721('0xf'))[_0x7721('0x10')](socket);var jayson=require(_0x7721('0x11'));var client=jayson['client'][_0x7721('0x12')]({'port':0x232c});var client9003=jayson[_0x7721('0x13')][_0x7721('0x12')]({'port':0x232b});var client9002=jayson[_0x7721('0x13')][_0x7721('0x12')]({'port':0x232a});function respondWithRpcPromise(_0x409b37,_0x1e7fd7,_0x27b36b,_0x55b4ca){return new BPromise(function(_0x2911ec,_0x199930){var _0x57ff6d=_0x55b4ca||client;return _0x57ff6d[_0x7721('0x14')](_0x409b37,_0x27b36b)[_0x7721('0x15')](function(_0x3f01c5){logger[_0x7721('0x16')]('MailMessage,\x20%s,\x20%s',_0x1e7fd7,_0x7721('0x17'));logger[_0x7721('0x18')]('MailMessage,\x20%s,\x20%s,\x20%s',_0x1e7fd7,'request\x20sent',JSON['stringify'](_0x3f01c5));if(_0x3f01c5[_0x7721('0x19')]){if(_0x3f01c5[_0x7721('0x19')][_0x7721('0x1a')]===0x1f4){logger[_0x7721('0x19')]('MailMessage,\x20%s,\x20%s',_0x1e7fd7,_0x3f01c5[_0x7721('0x19')]['message']);return _0x199930(_0x3f01c5[_0x7721('0x19')]['message']);}logger[_0x7721('0x19')](_0x7721('0x1b'),_0x1e7fd7,_0x3f01c5[_0x7721('0x19')][_0x7721('0x1c')]);return _0x2911ec(_0x3f01c5[_0x7721('0x19')][_0x7721('0x1c')]);}else{logger[_0x7721('0x16')](_0x7721('0x1b'),_0x1e7fd7,_0x7721('0x17'));_0x2911ec(_0x3f01c5[_0x7721('0x1d')]['message']);}})[_0x7721('0x1e')](function(_0x2c1583){logger[_0x7721('0x19')](_0x7721('0x1b'),_0x1e7fd7,_0x2c1583);_0x199930(_0x2c1583);});});}function respondWithResult(_0x57140c,_0x28f5a6){_0x28f5a6=_0x28f5a6||0xc8;return function(_0x512f31){if(_0x512f31){return _0x57140c[_0x7721('0x1f')](_0x28f5a6)[_0x7721('0x20')](_0x512f31);}};}function respondWithFilteredResult(_0x3e8a4e,_0x1caad8){return function(_0x121cc4){if(_0x121cc4){var _0x395b15=typeof _0x1caad8[_0x7721('0x21')]==='undefined'&&typeof _0x1caad8[_0x7721('0x22')]===_0x7721('0x23');var _0x125564=_0x121cc4[_0x7721('0x24')];var _0x40d550=_0x395b15?0x0:_0x1caad8[_0x7721('0x21')];var _0x424e05=_0x395b15?_0x121cc4[_0x7721('0x24')]:_0x1caad8[_0x7721('0x21')]+_0x1caad8['limit'];var _0x258ddf;if(_0x424e05>=_0x125564){_0x424e05=_0x125564;_0x258ddf=0xc8;}else{_0x258ddf=0xce;}_0x3e8a4e['status'](_0x258ddf);return _0x3e8a4e['set'](_0x7721('0x25'),_0x40d550+'-'+_0x424e05+'/'+_0x125564)[_0x7721('0x20')](_0x121cc4);}return null;};}function saveUpdates(_0x53c904){return function(_0x158d98){if(_0x158d98){return _0x158d98[_0x7721('0x26')](_0x53c904)[_0x7721('0x15')](function(_0xd7d703){return _0xd7d703;});}return null;};}function removeEntity(_0x1da2d8){return function(_0x5c54f0){if(_0x5c54f0){return _0x5c54f0[_0x7721('0x27')]()[_0x7721('0x15')](function(){_0x1da2d8['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0xfde9ec){return function(_0x220bbf){if(!_0x220bbf){_0xfde9ec['sendStatus'](0x194);}return _0x220bbf;};}function handleError(_0x46f772,_0x4651b5){_0x4651b5=_0x4651b5||0x1f4;return function(_0x382821){logger['error'](_0x382821[_0x7721('0x28')]);if(_0x382821[_0x7721('0x29')]){delete _0x382821[_0x7721('0x29')];}_0x46f772[_0x7721('0x1f')](_0x4651b5)[_0x7721('0x2a')](_0x382821);};}exports['index']=function(_0x195ffb,_0x3e4e56){var _0xb2386d={},_0x5c5b33={},_0x35de7a={'count':0x0,'rows':[]};var _0x213a2e=_['map'](db[_0x7721('0x2b')]['rawAttributes'],function(_0x2d6ba0){return{'name':_0x2d6ba0[_0x7721('0x2c')],'type':_0x2d6ba0[_0x7721('0x2d')][_0x7721('0x2e')]};});_0x5c5b33[_0x7721('0x2f')]=_[_0x7721('0x30')](_0x213a2e,_0x7721('0x29'));_0x5c5b33[_0x7721('0x31')]=_[_0x7721('0x32')](_0x195ffb[_0x7721('0x31')]);_0x5c5b33[_0x7721('0x33')]=_['intersection'](_0x5c5b33[_0x7721('0x2f')],_0x5c5b33['query']);_0xb2386d[_0x7721('0x34')]=_[_0x7721('0x35')](_0x5c5b33[_0x7721('0x2f')],qs[_0x7721('0x36')](_0x195ffb[_0x7721('0x31')][_0x7721('0x36')]));_0xb2386d['attributes']=_0xb2386d['attributes']['length']?_0xb2386d['attributes']:_0x5c5b33[_0x7721('0x2f')];if(!_0x195ffb[_0x7721('0x31')][_0x7721('0x37')](_0x7721('0x38'))){_0xb2386d['limit']=qs[_0x7721('0x22')](_0x195ffb['query'][_0x7721('0x22')]);_0xb2386d[_0x7721('0x21')]=qs['offset'](_0x195ffb[_0x7721('0x31')][_0x7721('0x21')]);}_0xb2386d['order']=qs['sort'](_0x195ffb[_0x7721('0x31')][_0x7721('0x39')]);_0xb2386d[_0x7721('0x3a')]=qs[_0x7721('0x33')](_['pick'](_0x195ffb[_0x7721('0x31')],_0x5c5b33[_0x7721('0x33')]),_0x213a2e);if(_0x195ffb[_0x7721('0x31')][_0x7721('0x3b')]){_0xb2386d[_0x7721('0x3a')]=_['merge'](_0xb2386d[_0x7721('0x3a')],{'$or':_['map'](_0x213a2e,function(_0xaa3216){if(_0xaa3216['type']!==_0x7721('0x3c')){var _0x15fa2c={};_0x15fa2c[_0xaa3216[_0x7721('0x29')]]={'$like':'%'+_0x195ffb['query'][_0x7721('0x3b')]+'%'};return _0x15fa2c;}})});}_0xb2386d=_[_0x7721('0x3d')]({},_0xb2386d,_0x195ffb[_0x7721('0x3e')]);var _0x481fa8={'where':_0xb2386d[_0x7721('0x3a')]};return db[_0x7721('0x2b')][_0x7721('0x24')](_0x481fa8)[_0x7721('0x15')](function(_0x135dbc){_0x35de7a[_0x7721('0x24')]=_0x135dbc;if(_0x195ffb[_0x7721('0x31')]['includeAll']){_0xb2386d['include']=[{'all':!![]}];}return db[_0x7721('0x2b')][_0x7721('0x3f')](_0xb2386d);})[_0x7721('0x15')](function(_0x39a3ad){_0x35de7a[_0x7721('0x40')]=_0x39a3ad;return _0x35de7a;})[_0x7721('0x15')](respondWithFilteredResult(_0x3e4e56,_0xb2386d))[_0x7721('0x1e')](handleError(_0x3e4e56,null));};exports[_0x7721('0x41')]=function(_0xa601bc,_0x3af123){var _0x5460cd={'raw':!![],'where':{'id':_0xa601bc[_0x7721('0x42')]['id']}},_0x578867={};_0x578867[_0x7721('0x2f')]=_[_0x7721('0x32')](db[_0x7721('0x2b')]['rawAttributes']);_0x578867[_0x7721('0x31')]=_[_0x7721('0x32')](_0xa601bc['query']);_0x578867[_0x7721('0x33')]=_['intersection'](_0x578867[_0x7721('0x2f')],_0x578867['query']);_0x5460cd[_0x7721('0x34')]=_[_0x7721('0x35')](_0x578867[_0x7721('0x2f')],qs['fields'](_0xa601bc[_0x7721('0x31')][_0x7721('0x36')]));_0x5460cd['attributes']=_0x5460cd[_0x7721('0x34')][_0x7721('0x43')]?_0x5460cd[_0x7721('0x34')]:_0x578867['model'];if(_0xa601bc[_0x7721('0x31')]['includeAll']){_0x5460cd[_0x7721('0x44')]=[{'all':!![]}];}_0x5460cd=_[_0x7721('0x3d')]({},_0x5460cd,_0xa601bc[_0x7721('0x3e')]);return db[_0x7721('0x2b')][_0x7721('0x45')](_0x5460cd)[_0x7721('0x15')](handleEntityNotFound(_0x3af123,null))[_0x7721('0x15')](respondWithResult(_0x3af123,null))[_0x7721('0x1e')](handleError(_0x3af123,null));};exports[_0x7721('0x26')]=function(_0x3386aa,_0x31770e){if(_0x3386aa[_0x7721('0x46')]['id']){delete _0x3386aa[_0x7721('0x46')]['id'];}return db[_0x7721('0x2b')][_0x7721('0x45')]({'where':{'id':_0x3386aa['params']['id']}})[_0x7721('0x15')](handleEntityNotFound(_0x31770e,null))[_0x7721('0x15')](saveUpdates(_0x3386aa[_0x7721('0x46')],null))[_0x7721('0x15')](respondWithResult(_0x31770e,null))[_0x7721('0x1e')](handleError(_0x31770e,null));};exports[_0x7721('0x27')]=function(_0x267f5e,_0x57484c){return db[_0x7721('0x2b')][_0x7721('0x45')]({'where':{'id':_0x267f5e[_0x7721('0x42')]['id']}})[_0x7721('0x15')](handleEntityNotFound(_0x57484c,null))[_0x7721('0x15')](removeEntity(_0x57484c,null))[_0x7721('0x1e')](handleError(_0x57484c,null));};exports[_0x7721('0x47')]=function(_0x33287d,_0x11b300){return db[_0x7721('0x2b')][_0x7721('0x47')]()['then'](respondWithResult(_0x11b300,null))[_0x7721('0x1e')](handleError(_0x11b300,null));};exports[_0x7721('0x48')]=function(_0x1234bc,_0x2ee3c0){return db[_0x7721('0x2b')][_0x7721('0x48')](_0x1234bc[_0x7721('0x46')])[_0x7721('0x15')](function(_0x360882){if(_0x360882){if(_0x360882[_0x7721('0x49')]===_0x7721('0x4a')&&!_0x360882[_0x7721('0x4b')]){var _0x106664,_0x18f7f6,_0x300ea4;if(_0x1234bc['body']['to']){_0x18f7f6=_0x1234bc['body']['to']['split'](',')[0x0];}return db[_0x7721('0x4c')]['findOne']({'where':{'id':_0x360882['MailAccountId']},'include':[{'model':db['CmList'],'as':'List','include':[{'model':db[_0x7721('0x4d')],'as':_0x7721('0x4e'),'where':{'email':_0x18f7f6},'limit':0x1,'order':[[_0x7721('0x4f'),'DESC']]}]},{'model':db[_0x7721('0x50')],'as':'Smtp','raw':!![]}]})['then'](function(_0x484b8e){_0x106664=_0x484b8e;if(_0x106664&&_0x106664[_0x7721('0x51')]){var _0x4f0d38={'tls':{'rejectUnauthorized':![]}};if(_['isNil'](_0x106664['Smtp'][_0x7721('0x52')])){_0x4f0d38[_0x7721('0x53')]=_0x106664[_0x7721('0x51')]['host'];_0x4f0d38[_0x7721('0x54')]=_0x106664[_0x7721('0x51')][_0x7721('0x54')];_0x4f0d38[_0x7721('0x55')]=_0x106664[_0x7721('0x51')][_0x7721('0x55')];if(_0x106664[_0x7721('0x51')][_0x7721('0x56')]){_0x4f0d38[_0x7721('0x57')]={'user':_0x106664[_0x7721('0x51')][_0x7721('0x58')],'pass':_0x106664[_0x7721('0x51')][_0x7721('0x59')]};}}else{_0x4f0d38[_0x7721('0x52')]=_0x106664[_0x7721('0x51')]['service'];_0x4f0d38[_0x7721('0x57')]={'user':_0x106664[_0x7721('0x51')][_0x7721('0x58')],'pass':_0x106664[_0x7721('0x51')]['pass']};_0x4f0d38[_0x7721('0x55')]=_0x106664[_0x7721('0x51')]['secure'];}if(_0x1234bc[_0x7721('0x46')]['attachments']&&_0x1234bc[_0x7721('0x46')][_0x7721('0x5a')][_0x7721('0x43')]){for(var _0x3f9eaa=0x0;_0x3f9eaa<_0x1234bc[_0x7721('0x46')][_0x7721('0x5a')][_0x7721('0x43')];_0x3f9eaa+=0x1){_0x1234bc[_0x7721('0x46')][_0x7721('0x5a')][_0x3f9eaa]={'filename':_0x1234bc['body'][_0x7721('0x5a')][_0x3f9eaa][_0x7721('0x29')],'path':path[_0x7721('0x5b')](config[_0x7721('0x5c')],_0x7721('0x5d'),_0x1234bc[_0x7721('0x46')][_0x7721('0x5a')][_0x3f9eaa]['basename'])};}}_0x300ea4={'account':_0x4f0d38,'message':_0x1234bc[_0x7721('0x46')]};return;}})[_0x7721('0x15')](function(){if(_0x106664['List']){if(_0x106664[_0x7721('0x5e')]['Contacts'][_0x7721('0x43')]){return _0x106664[_0x7721('0x5e')][_0x7721('0x4e')][0x0];}else{return db[_0x7721('0x4d')][_0x7721('0x48')](_[_0x7721('0xc')](_0x1234bc[_0x7721('0x46')],{'firstName':_0x1234bc['body']['to'],'email':_0x1234bc[_0x7721('0x46')]['to'],'phone':_0x1234bc[_0x7721('0x46')]['to'],'ListId':_0x106664[_0x7721('0x5f')]}));}}else{throw new Error('List\x20not\x20found');}})['then'](function(){if(_0x300ea4){return respondWithRpcPromise('SendMail','sendMail',_0x300ea4,client9003)['then'](function(_0x1fc5f7){return _0x360882[_0x7721('0x26')]({'read':!![],'messageId':_0x1fc5f7['messageId'],'sentAt':moment()[_0x7721('0x60')](_0x7721('0x61'))});})[_0x7721('0x1e')](function(_0x4593e1){logger['error']('%s',JSON[_0x7721('0x62')](_0x4593e1));return _0x360882;});}return _0x360882;});}return _0x360882;}})[_0x7721('0x15')](respondWithResult(_0x2ee3c0,0xc9))[_0x7721('0x1e')](handleError(_0x2ee3c0,null));};exports[_0x7721('0x63')]=function(_0x3cf3fd,_0x53adb1){var _0x29ac64={'agent':{},'channel':_0x7721('0x64')};if(_0x3cf3fd[_0x7721('0x46')]['id']){delete _0x3cf3fd['body']['id'];}_0x3cf3fd['body'][_0x7721('0x65')]=!![];_0x3cf3fd[_0x7721('0x46')][_0x7721('0x66')]=moment()[_0x7721('0x60')](_0x7721('0x61'));_0x3cf3fd['body']['UserId']=_0x3cf3fd[_0x7721('0x46')][_0x7721('0x67')]||_0x3cf3fd[_0x7721('0x58')]['id'];_0x29ac64[_0x7721('0x68')]['id']=_0x3cf3fd[_0x7721('0x46')][_0x7721('0x67')];return db[_0x7721('0x2b')]['find']({'where':{'id':_0x3cf3fd[_0x7721('0x42')]['id'],'UserId':null}})[_0x7721('0x15')](handleEntityNotFound(_0x53adb1,null))[_0x7721('0x15')](saveUpdates(_0x3cf3fd['body'],null))[_0x7721('0x15')](function(_0x1a53d6){if(_0x1a53d6){_0x29ac64[_0x7721('0x1c')]=_0x1a53d6[_0x7721('0x69')]({'plain':!![]});return db['MailInteraction']['find']({'where':{'id':_0x1a53d6[_0x7721('0x6a')]}});}return null;})[_0x7721('0x15')](handleEntityNotFound(_0x53adb1,null))[_0x7721('0x15')](function(_0x42c849){if(_0x42c849){return _0x42c849[_0x7721('0x26')]({'UserId':_0x3cf3fd[_0x7721('0x46')]['UserId'],'read1stAt':_[_0x7721('0x6b')](_0x42c849[_0x7721('0x6c')])?moment()[_0x7721('0x60')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0x7721('0x15')](function(_0x3b16f3){if(_0x3b16f3){_0x29ac64[_0x7721('0x6d')]=_0x3b16f3[_0x7721('0x69')]({'plain':!![]});interaction_log[_0x7721('0x16')]('[MAILMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x3cf3fd[_0x7721('0x58')]['id'],_0x3cf3fd['user'][_0x7721('0x29')],_0x3cf3fd[_0x7721('0x58')][_0x7721('0x6e')],_0x29ac64[_0x7721('0x6d')]['id'],_0x3cf3fd[_0x7721('0x46')]?JSON[_0x7721('0x62')](_0x3cf3fd[_0x7721('0x46')]):_0x7721('0x6f'));return respondWithRpcPromise(_0x7721('0x70'),_0x7721('0x71'),_0x29ac64);}return null;})[_0x7721('0x15')](function(_0x55d209){var _0x19fad6=_0x7721('0x72')+_0x55d209[_0x7721('0x1c')]['ContactId'];return db[_0x7721('0x73')][_0x7721('0x31')](_0x19fad6,{'type':db[_0x7721('0x74')][_0x7721('0x75')][_0x7721('0x76')],'raw':!![]})['then'](function(_0x1276ce){return _0x1276ce;});})[_0x7721('0x15')](function(_0x44326d){if(_0x44326d){_0x29ac64[_0x7721('0x1c')][_0x7721('0x77')]=_0x44326d[0x0];if(!_0x3cf3fd[_0x7721('0x46')]['UserId'])return;return db[_0x7721('0x78')][_0x7721('0x45')]({'where':{'id':_0x3cf3fd['body'][_0x7721('0x67')],'role':'agent'},'attributes':['id',_0x7721('0x29'),_0x7721('0x79'),'email',_0x7721('0x7a')],'raw':!![]});}return null;})['then'](function(_0x56069f){if(!_0x56069f)return null;_0x29ac64['message'][_0x7721('0x68')]=_0x56069f;return _0x29ac64;})[_0x7721('0x15')](function(_0x21a686){if(_0x21a686){if(_0x3cf3fd['body']['manual']){_0x29ac64['message'][_0x7721('0x7b')]=util[_0x7721('0x60')](_0x7721('0x7c'),_0x3cf3fd[_0x7721('0x58')][_0x7721('0x29')]);_0x29ac64[_0x7721('0x1c')]['channel']=_0x29ac64[_0x7721('0x7d')];_0x29ac64[_0x7721('0x1c')][_0x7721('0x7e')]=_0x7721('0x63');_0x29ac64[_0x7721('0x1c')][_0x7721('0x46')]=htmlToText[_0x7721('0x7f')](_0x29ac64[_0x7721('0x1c')][_0x7721('0x46')]);return respondWithRpcPromise(_0x7721('0x80'),_0x7721('0x80'),{'event':_0x7721('0x81'),'message':_0x29ac64['message']},client9002)['then'](function(){return _0x29ac64;});}return _0x29ac64;}return null;})[_0x7721('0x15')](respondWithResult(_0x53adb1,null))[_0x7721('0x1e')](handleError(_0x53adb1,null));};exports['reject']=function(_0x167e05,_0x570cf4){var _0x4e3c93={'agent':{},'channel':_0x7721('0x64')};if(_0x167e05['body']['id']){delete _0x167e05['body']['id'];}_0x167e05[_0x7721('0x46')][_0x7721('0x67')]=_0x167e05[_0x7721('0x46')][_0x7721('0x67')]||_0x167e05[_0x7721('0x58')]['id'];_0x4e3c93['agent']['id']=_0x167e05[_0x7721('0x46')][_0x7721('0x67')];return db[_0x7721('0x2b')][_0x7721('0x45')]({'where':{'id':_0x167e05['params']['id'],'UserId':null}})['then'](handleEntityNotFound(_0x570cf4,null))[_0x7721('0x15')](function(_0x1790d3){if(_0x1790d3){_0x4e3c93['message']=_0x1790d3[_0x7721('0x69')]({'plain':!![]});return db[_0x7721('0x82')]['find']({'where':{'id':_0x1790d3['MailInteractionId']}});}return null;})[_0x7721('0x15')](handleEntityNotFound(_0x570cf4,null))[_0x7721('0x15')](function(_0x606b4b){if(_0x606b4b){_0x4e3c93[_0x7721('0x6d')]=_0x606b4b[_0x7721('0x69')]({'plain':!![]});interaction_log[_0x7721('0x16')](_0x7721('0x83'),_0x167e05[_0x7721('0x58')]['id'],_0x167e05['user'][_0x7721('0x29')],_0x167e05[_0x7721('0x58')][_0x7721('0x6e')],_0x4e3c93[_0x7721('0x6d')]['id'],_0x167e05[_0x7721('0x46')]?JSON[_0x7721('0x62')](_0x167e05[_0x7721('0x46')]):'null');return respondWithRpcPromise(_0x7721('0x84'),_0x7721('0x85'),_0x4e3c93);}return null;})['then'](function(_0x9b3e44){var _0x1cc8ee=_0x7721('0x72')+_0x9b3e44[_0x7721('0x1c')][_0x7721('0x86')];return db[_0x7721('0x73')][_0x7721('0x31')](_0x1cc8ee,{'type':db[_0x7721('0x74')][_0x7721('0x75')][_0x7721('0x76')],'raw':!![]})['then'](function(_0x418954){return _0x418954;});})[_0x7721('0x15')](function(_0xc894d4){if(_0xc894d4){_0x4e3c93[_0x7721('0x1c')][_0x7721('0x77')]=_0xc894d4[0x0];if(!_0x167e05[_0x7721('0x46')][_0x7721('0x67')])return;return db[_0x7721('0x78')][_0x7721('0x45')]({'where':{'id':_0x167e05[_0x7721('0x46')][_0x7721('0x67')],'role':_0x7721('0x68')},'attributes':['id',_0x7721('0x29'),_0x7721('0x79'),_0x7721('0x87'),_0x7721('0x7a')],'raw':!![]});}return null;})[_0x7721('0x15')](function(_0x1fb651){if(!_0x1fb651)return null;_0x4e3c93[_0x7721('0x1c')][_0x7721('0x68')]=_0x1fb651;return _0x4e3c93;})['then'](function(_0x3fc25c){if(_0x3fc25c){_0x3fc25c['message'][_0x7721('0x7b')]=util[_0x7721('0x60')](_0x7721('0x7c'),_0x167e05[_0x7721('0x58')][_0x7721('0x29')]);_0x3fc25c['message']['channel']=_0x4e3c93['channel'];_0x3fc25c['message'][_0x7721('0x7e')]=_0x7721('0x88');_0x3fc25c[_0x7721('0x1c')][_0x7721('0x46')]=htmlToText[_0x7721('0x7f')](_0x4e3c93['message'][_0x7721('0x46')]);respondWithRpcPromise('EventManager',_0x7721('0x80'),{'event':_0x7721('0x89'),'message':_0x3fc25c[_0x7721('0x1c')]},client9002);return _0x4e3c93;}return null;})[_0x7721('0x15')](respondWithResult(_0x570cf4,null))[_0x7721('0x1e')](handleError(_0x570cf4,null));};exports[_0x7721('0x8a')]=function(_0x56b916,_0x30ce7c){var _0x56f321=moment()['unix']()[_0x7721('0x8b')]();var _0xf718dd=path[_0x7721('0x5b')](config[_0x7721('0x5c')],_0x7721('0x8c'),'files',_0x7721('0x8d'));var _0x2561b5=path[_0x7721('0x5b')](config[_0x7721('0x5c')],_0x7721('0x8c'),_0x7721('0x8e'),_0x7721('0x5a'));var _0x50ee94=util[_0x7721('0x60')](_0x7721('0x8f'),_0x56f321);return db[_0x7721('0x2b')][_0x7721('0x45')]({'where':{'id':_0x56b916[_0x7721('0x42')]['id']},'attributes':['id','body',_0x7721('0x90'),'to','cc',_0x7721('0x91'),_0x7721('0x92'),'createdAt'],'include':_0x56b916[_0x7721('0x31')][_0x7721('0x5a')]?[{'model':db['Attachment'],'as':_0x7721('0x93')}]:undefined})[_0x7721('0x15')](handleEntityNotFound(_0x30ce7c,null))[_0x7721('0x15')](function(_0x30f548){if(_0x30f548){var _0x5b64de=_0x30f548;var _0x40beb8={'from':_0x5b64de['from'],'to':_0x5b64de['to'],'subject':_0x5b64de[_0x7721('0x92')],'html':_0x5b64de[_0x7721('0x46')],'headers':{'Date':moment(_0x5b64de['createdAt'])[_0x7721('0x60')](_0x7721('0x94'))},'attachments':[]};if(_0x30f548['cc']){_0x40beb8['headers']['Cc']=_0x30f548['cc'];}if(_0x30f548[_0x7721('0x91')]){_0x40beb8[_0x7721('0x95')]['Bcc']=_0x30f548[_0x7721('0x91')];}return new BPromise(function(_0x52e8b1,_0x240b0a){if(_0x30f548[_0x7721('0x93')]){for(var _0x271632=0x0;_0x271632<_0x30f548['Attachments'][_0x7721('0x43')];_0x271632++){var _0x506f9c=_0x30f548['Attachments'][_0x271632];var _0x287d61=path[_0x7721('0x5b')](_0x2561b5,_0x506f9c[_0x7721('0x96')]);if(fs[_0x7721('0x97')](_0x287d61)){_0x40beb8[_0x7721('0x5a')]['push']({'name':_0x506f9c[_0x7721('0x29')],'contentType':_0x506f9c[_0x7721('0x2d')],'data':fs[_0x7721('0x98')](_0x287d61)});}}}emlformat[_0x7721('0x99')](_0x40beb8,function(_0x42cd58,_0x58173d){if(_0x42cd58)return _0x240b0a(_0x42cd58);fs[_0x7721('0x9a')](path['join'](_0xf718dd,_0x50ee94),_0x58173d);return _0x52e8b1(_0x58173d);});});}})[_0x7721('0x15')](function(_0x4ade82){if(_0x4ade82){return _0x30ce7c['download'](path[_0x7721('0x5b')](_0xf718dd,_0x50ee94),_0x50ee94,function(_0x52f3c8){if(!_0x52f3c8)fs['unlinkSync'](path[_0x7721('0x5b')](_0xf718dd,_0x50ee94));});}})[_0x7721('0x1e')](handleError(_0x30ce7c,null));};
\ No newline at end of file
+var _0x4ed4=['result','catch','status','json','undefined','count','offset','limit','update','end','sendStatus','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','keys','query','filters','attributes','intersection','fields','length','hasOwnProperty','sort','filter','merge','where','options','MailMessage','findAll','rows','show','params','includeAll','include','find','body','destroy','describe','create','direction','secret','split','MailAccount','findOne','MailAccountId','CmList','List','CmContact','Contacts','updatedAt','Smtp','host','port','secure','authentication','auth','user','pass','service','attachments','root','server/files/attachments','basename','defaults','SendMail','sendMail','format','YYYY-MM-DD\x20HH:mm:ss','accept','mail','read','readAt','agent','UserId','get','MailInteraction','MailInteractionId','isNil','[MAILMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','interaction','AcceptMessage','acceptMessage','ContactId','sequelize','Sequelize','SELECT','contact','fullname','internal','SIP/%s','channel','event','fromString','EventManager','acceptmessage','reject','[MAILMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','null','RejectMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','QueryTypes','User','motionChannel','rejectmessage','download','unix','toString','join','server','files','tmp','message-%s.eml','from','bcc','subject','createdAt','Attachment','Attachments','decode','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','Bcc','existsSync','push','readFileSync','build','writeFileSync','unlinkSync','bluebird','lodash','ioredis','html-to-text','../../components/parsers/qs','api','../../config/logger','mail-interactions','../../mysqldb','redis','localhost','socket.io-emitter','./mailMessage.socket','register','http','client','request','then','info','MailMessage,\x20%s,\x20%s','request\x20sent','MailMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x414800,_0xead1a0){var _0x5f3f90=function(_0x191921){while(--_0x191921){_0x414800['push'](_0x414800['shift']());}};_0x5f3f90(++_0xead1a0);}(_0x4ed4,0x88));var _0x44ed=function(_0x471f6e,_0x25173c){_0x471f6e=_0x471f6e-0x0;var _0x1e13a0=_0x4ed4[_0x471f6e];return _0x1e13a0;};'use strict';var emlformat=require('eml-format');var moment=require('moment');var BPromise=require(_0x44ed('0x0'));var util=require('util');var path=require('path');var fs=require('fs');var _=require(_0x44ed('0x1'));var Redis=require(_0x44ed('0x2'));var htmlToText=require(_0x44ed('0x3'));var qs=require(_0x44ed('0x4'));var logger=require('../../config/logger')(_0x44ed('0x5'));var interaction_log=require(_0x44ed('0x6'))(_0x44ed('0x7'));var config=require('../../config/environment');var db=require(_0x44ed('0x8'))['db'];config['redis']=_['defaults'](config[_0x44ed('0x9')],{'host':_0x44ed('0xa'),'port':0x18eb});var socket=require(_0x44ed('0xb'))(new Redis(config['redis']));var htmlEntities=require('html-entities');require(_0x44ed('0xc'))[_0x44ed('0xd')](socket);var jayson=require('jayson/promise');var client=jayson['client'][_0x44ed('0xe')]({'port':0x232c});var client9003=jayson[_0x44ed('0xf')][_0x44ed('0xe')]({'port':0x232b});var client9002=jayson['client'][_0x44ed('0xe')]({'port':0x232a});function respondWithRpcPromise(_0x28f23d,_0x136e83,_0x540dc0,_0x16744c){return new BPromise(function(_0x20fc5b,_0xe96f14){var _0xb29da2=_0x16744c||client;return _0xb29da2[_0x44ed('0x10')](_0x28f23d,_0x540dc0)[_0x44ed('0x11')](function(_0xba9126){logger[_0x44ed('0x12')](_0x44ed('0x13'),_0x136e83,_0x44ed('0x14'));logger['debug'](_0x44ed('0x15'),_0x136e83,'request\x20sent',JSON[_0x44ed('0x16')](_0xba9126));if(_0xba9126[_0x44ed('0x17')]){if(_0xba9126[_0x44ed('0x17')][_0x44ed('0x18')]===0x1f4){logger['error'](_0x44ed('0x13'),_0x136e83,_0xba9126[_0x44ed('0x17')][_0x44ed('0x19')]);return _0xe96f14(_0xba9126[_0x44ed('0x17')][_0x44ed('0x19')]);}logger[_0x44ed('0x17')]('MailMessage,\x20%s,\x20%s',_0x136e83,_0xba9126['error'][_0x44ed('0x19')]);return _0x20fc5b(_0xba9126[_0x44ed('0x17')][_0x44ed('0x19')]);}else{logger['info'](_0x44ed('0x13'),_0x136e83,_0x44ed('0x14'));_0x20fc5b(_0xba9126[_0x44ed('0x1a')][_0x44ed('0x19')]);}})[_0x44ed('0x1b')](function(_0x21a25a){logger[_0x44ed('0x17')](_0x44ed('0x13'),_0x136e83,_0x21a25a);_0xe96f14(_0x21a25a);});});}function respondWithResult(_0x2fd7d9,_0xb4f2a0){_0xb4f2a0=_0xb4f2a0||0xc8;return function(_0x2c8152){if(_0x2c8152){return _0x2fd7d9[_0x44ed('0x1c')](_0xb4f2a0)[_0x44ed('0x1d')](_0x2c8152);}};}function respondWithFilteredResult(_0x19f252,_0x40a121){return function(_0x2516b9){if(_0x2516b9){var _0x51d87f=typeof _0x40a121['offset']===_0x44ed('0x1e')&&typeof _0x40a121['limit']===_0x44ed('0x1e');var _0x718a35=_0x2516b9[_0x44ed('0x1f')];var _0x157590=_0x51d87f?0x0:_0x40a121[_0x44ed('0x20')];var _0x9a2659=_0x51d87f?_0x2516b9[_0x44ed('0x1f')]:_0x40a121[_0x44ed('0x20')]+_0x40a121[_0x44ed('0x21')];var _0x3d62cb;if(_0x9a2659>=_0x718a35){_0x9a2659=_0x718a35;_0x3d62cb=0xc8;}else{_0x3d62cb=0xce;}_0x19f252[_0x44ed('0x1c')](_0x3d62cb);return _0x19f252['set']('Content-Range',_0x157590+'-'+_0x9a2659+'/'+_0x718a35)['json'](_0x2516b9);}return null;};}function saveUpdates(_0x52a240){return function(_0xc776d6){if(_0xc776d6){return _0xc776d6[_0x44ed('0x22')](_0x52a240)[_0x44ed('0x11')](function(_0x23e1ba){return _0x23e1ba;});}return null;};}function removeEntity(_0x1bbdbd){return function(_0x5a13be){if(_0x5a13be){return _0x5a13be['destroy']()[_0x44ed('0x11')](function(){_0x1bbdbd[_0x44ed('0x1c')](0xcc)[_0x44ed('0x23')]();});}};}function handleEntityNotFound(_0xba94ac){return function(_0x293e56){if(!_0x293e56){_0xba94ac[_0x44ed('0x24')](0x194);}return _0x293e56;};}function handleError(_0x52ec47,_0xa55fa6){_0xa55fa6=_0xa55fa6||0x1f4;return function(_0x542b90){logger[_0x44ed('0x17')](_0x542b90[_0x44ed('0x25')]);if(_0x542b90['name']){delete _0x542b90[_0x44ed('0x26')];}_0x52ec47[_0x44ed('0x1c')](_0xa55fa6)[_0x44ed('0x27')](_0x542b90);};}exports[_0x44ed('0x28')]=function(_0xfb2471,_0x59c081){var _0x42c044={},_0x1c9fdf={},_0x53434d={'count':0x0,'rows':[]};var _0x31c391=_[_0x44ed('0x29')](db['MailMessage'][_0x44ed('0x2a')],function(_0x499650){return{'name':_0x499650[_0x44ed('0x2b')],'type':_0x499650[_0x44ed('0x2c')][_0x44ed('0x2d')]};});_0x1c9fdf[_0x44ed('0x2e')]=_[_0x44ed('0x29')](_0x31c391,_0x44ed('0x26'));_0x1c9fdf['query']=_[_0x44ed('0x2f')](_0xfb2471[_0x44ed('0x30')]);_0x1c9fdf[_0x44ed('0x31')]=_['intersection'](_0x1c9fdf['model'],_0x1c9fdf[_0x44ed('0x30')]);_0x42c044[_0x44ed('0x32')]=_[_0x44ed('0x33')](_0x1c9fdf[_0x44ed('0x2e')],qs[_0x44ed('0x34')](_0xfb2471['query'][_0x44ed('0x34')]));_0x42c044[_0x44ed('0x32')]=_0x42c044[_0x44ed('0x32')][_0x44ed('0x35')]?_0x42c044[_0x44ed('0x32')]:_0x1c9fdf[_0x44ed('0x2e')];if(!_0xfb2471[_0x44ed('0x30')][_0x44ed('0x36')]('nolimit')){_0x42c044[_0x44ed('0x21')]=qs['limit'](_0xfb2471[_0x44ed('0x30')][_0x44ed('0x21')]);_0x42c044[_0x44ed('0x20')]=qs[_0x44ed('0x20')](_0xfb2471[_0x44ed('0x30')][_0x44ed('0x20')]);}_0x42c044['order']=qs[_0x44ed('0x37')](_0xfb2471[_0x44ed('0x30')][_0x44ed('0x37')]);_0x42c044['where']=qs['filters'](_['pick'](_0xfb2471['query'],_0x1c9fdf[_0x44ed('0x31')]),_0x31c391);if(_0xfb2471[_0x44ed('0x30')][_0x44ed('0x38')]){_0x42c044['where']=_[_0x44ed('0x39')](_0x42c044[_0x44ed('0x3a')],{'$or':_['map'](_0x31c391,function(_0x48bc12){if(_0x48bc12['type']!=='VIRTUAL'){var _0x49454d={};_0x49454d[_0x48bc12[_0x44ed('0x26')]]={'$like':'%'+_0xfb2471['query'][_0x44ed('0x38')]+'%'};return _0x49454d;}})});}_0x42c044=_['merge']({},_0x42c044,_0xfb2471[_0x44ed('0x3b')]);var _0x33c86d={'where':_0x42c044[_0x44ed('0x3a')]};return db[_0x44ed('0x3c')][_0x44ed('0x1f')](_0x33c86d)['then'](function(_0x209df4){_0x53434d[_0x44ed('0x1f')]=_0x209df4;if(_0xfb2471[_0x44ed('0x30')]['includeAll']){_0x42c044['include']=[{'all':!![]}];}return db[_0x44ed('0x3c')][_0x44ed('0x3d')](_0x42c044);})[_0x44ed('0x11')](function(_0x31a7cf){_0x53434d[_0x44ed('0x3e')]=_0x31a7cf;return _0x53434d;})['then'](respondWithFilteredResult(_0x59c081,_0x42c044))['catch'](handleError(_0x59c081,null));};exports[_0x44ed('0x3f')]=function(_0x126fde,_0x56f254){var _0x69b460={'raw':!![],'where':{'id':_0x126fde[_0x44ed('0x40')]['id']}},_0x41ca8b={};_0x41ca8b[_0x44ed('0x2e')]=_[_0x44ed('0x2f')](db['MailMessage']['rawAttributes']);_0x41ca8b[_0x44ed('0x30')]=_[_0x44ed('0x2f')](_0x126fde['query']);_0x41ca8b[_0x44ed('0x31')]=_['intersection'](_0x41ca8b['model'],_0x41ca8b[_0x44ed('0x30')]);_0x69b460[_0x44ed('0x32')]=_[_0x44ed('0x33')](_0x41ca8b[_0x44ed('0x2e')],qs[_0x44ed('0x34')](_0x126fde[_0x44ed('0x30')][_0x44ed('0x34')]));_0x69b460[_0x44ed('0x32')]=_0x69b460[_0x44ed('0x32')][_0x44ed('0x35')]?_0x69b460[_0x44ed('0x32')]:_0x41ca8b[_0x44ed('0x2e')];if(_0x126fde[_0x44ed('0x30')][_0x44ed('0x41')]){_0x69b460[_0x44ed('0x42')]=[{'all':!![]}];}_0x69b460=_[_0x44ed('0x39')]({},_0x69b460,_0x126fde[_0x44ed('0x3b')]);return db[_0x44ed('0x3c')][_0x44ed('0x43')](_0x69b460)['then'](handleEntityNotFound(_0x56f254,null))['then'](respondWithResult(_0x56f254,null))[_0x44ed('0x1b')](handleError(_0x56f254,null));};exports[_0x44ed('0x22')]=function(_0x4965a4,_0x553825){if(_0x4965a4[_0x44ed('0x44')]['id']){delete _0x4965a4[_0x44ed('0x44')]['id'];}return db[_0x44ed('0x3c')][_0x44ed('0x43')]({'where':{'id':_0x4965a4[_0x44ed('0x40')]['id']}})['then'](handleEntityNotFound(_0x553825,null))[_0x44ed('0x11')](saveUpdates(_0x4965a4['body'],null))[_0x44ed('0x11')](respondWithResult(_0x553825,null))[_0x44ed('0x1b')](handleError(_0x553825,null));};exports[_0x44ed('0x45')]=function(_0x4edb97,_0x458eb1){return db['MailMessage'][_0x44ed('0x43')]({'where':{'id':_0x4edb97[_0x44ed('0x40')]['id']}})[_0x44ed('0x11')](handleEntityNotFound(_0x458eb1,null))['then'](removeEntity(_0x458eb1,null))[_0x44ed('0x1b')](handleError(_0x458eb1,null));};exports[_0x44ed('0x46')]=function(_0x46f30b,_0x464d83){return db[_0x44ed('0x3c')][_0x44ed('0x46')]()['then'](respondWithResult(_0x464d83,null))[_0x44ed('0x1b')](handleError(_0x464d83,null));};exports[_0x44ed('0x47')]=function(_0x767e38,_0x52de48){return db[_0x44ed('0x3c')][_0x44ed('0x47')](_0x767e38[_0x44ed('0x44')])[_0x44ed('0x11')](function(_0x9fe941){if(_0x9fe941){if(_0x9fe941[_0x44ed('0x48')]==='out'&&!_0x9fe941[_0x44ed('0x49')]){var _0x4f49d9,_0x41ae64,_0x5bd964;if(_0x767e38[_0x44ed('0x44')]['to']){_0x41ae64=_0x767e38[_0x44ed('0x44')]['to'][_0x44ed('0x4a')](',')[0x0];}return db[_0x44ed('0x4b')][_0x44ed('0x4c')]({'where':{'id':_0x9fe941[_0x44ed('0x4d')]},'include':[{'model':db[_0x44ed('0x4e')],'as':_0x44ed('0x4f'),'include':[{'model':db[_0x44ed('0x50')],'as':_0x44ed('0x51'),'where':{'email':_0x41ae64},'limit':0x1,'order':[[_0x44ed('0x52'),'DESC']]}]},{'model':db['MailServerOut'],'as':_0x44ed('0x53'),'raw':!![]}]})[_0x44ed('0x11')](function(_0x337c3d){_0x4f49d9=_0x337c3d;if(_0x4f49d9&&_0x4f49d9[_0x44ed('0x53')]){var _0x1be145={'tls':{'rejectUnauthorized':![]}};if(_['isNil'](_0x4f49d9[_0x44ed('0x53')]['service'])){_0x1be145[_0x44ed('0x54')]=_0x4f49d9['Smtp'][_0x44ed('0x54')];_0x1be145[_0x44ed('0x55')]=_0x4f49d9[_0x44ed('0x53')][_0x44ed('0x55')];_0x1be145[_0x44ed('0x56')]=_0x4f49d9[_0x44ed('0x53')][_0x44ed('0x56')];if(_0x4f49d9[_0x44ed('0x53')][_0x44ed('0x57')]){_0x1be145[_0x44ed('0x58')]={'user':_0x4f49d9[_0x44ed('0x53')][_0x44ed('0x59')],'pass':_0x4f49d9[_0x44ed('0x53')][_0x44ed('0x5a')]};}}else{_0x1be145[_0x44ed('0x5b')]=_0x4f49d9['Smtp'][_0x44ed('0x5b')];_0x1be145[_0x44ed('0x58')]={'user':_0x4f49d9['Smtp'][_0x44ed('0x59')],'pass':_0x4f49d9[_0x44ed('0x53')][_0x44ed('0x5a')]};_0x1be145['secure']=_0x4f49d9['Smtp']['secure'];}if(_0x767e38[_0x44ed('0x44')]['attachments']&&_0x767e38['body'][_0x44ed('0x5c')][_0x44ed('0x35')]){for(var _0x319d54=0x0;_0x319d54<_0x767e38[_0x44ed('0x44')]['attachments'][_0x44ed('0x35')];_0x319d54+=0x1){_0x767e38[_0x44ed('0x44')][_0x44ed('0x5c')][_0x319d54]={'filename':_0x767e38[_0x44ed('0x44')][_0x44ed('0x5c')][_0x319d54][_0x44ed('0x26')],'path':path['join'](config[_0x44ed('0x5d')],_0x44ed('0x5e'),_0x767e38[_0x44ed('0x44')][_0x44ed('0x5c')][_0x319d54][_0x44ed('0x5f')])};}}_0x5bd964={'account':_0x1be145,'message':_0x767e38['body']};return;}})[_0x44ed('0x11')](function(){if(_0x4f49d9[_0x44ed('0x4f')]){if(_0x4f49d9['List'][_0x44ed('0x51')][_0x44ed('0x35')]){return _0x4f49d9[_0x44ed('0x4f')][_0x44ed('0x51')][0x0];}else{return db[_0x44ed('0x50')][_0x44ed('0x47')](_[_0x44ed('0x60')](_0x767e38[_0x44ed('0x44')],{'firstName':_0x767e38[_0x44ed('0x44')]['to'],'email':_0x767e38[_0x44ed('0x44')]['to'],'phone':_0x767e38[_0x44ed('0x44')]['to'],'ListId':_0x4f49d9['ListId']}));}}else{throw new Error('List\x20not\x20found');}})[_0x44ed('0x11')](function(){if(_0x5bd964){return respondWithRpcPromise(_0x44ed('0x61'),_0x44ed('0x62'),_0x5bd964,client9003)[_0x44ed('0x11')](function(_0x192da2){return _0x9fe941[_0x44ed('0x22')]({'read':!![],'messageId':_0x192da2['messageId'],'sentAt':moment()[_0x44ed('0x63')](_0x44ed('0x64'))});})[_0x44ed('0x1b')](function(_0x3e9bd8){logger[_0x44ed('0x17')]('%s',JSON[_0x44ed('0x16')](_0x3e9bd8));return _0x9fe941;});}return _0x9fe941;});}return _0x9fe941;}})[_0x44ed('0x11')](respondWithResult(_0x52de48,0xc9))[_0x44ed('0x1b')](handleError(_0x52de48,null));};exports[_0x44ed('0x65')]=function(_0x57eac9,_0x21e9db){var _0x55352d={'agent':{},'channel':_0x44ed('0x66')};if(_0x57eac9['body']['id']){delete _0x57eac9[_0x44ed('0x44')]['id'];}_0x57eac9[_0x44ed('0x44')][_0x44ed('0x67')]=!![];_0x57eac9['body'][_0x44ed('0x68')]=moment()[_0x44ed('0x63')]('YYYY-MM-DD\x20HH:mm:ss');_0x57eac9[_0x44ed('0x44')]['UserId']=_0x57eac9[_0x44ed('0x44')]['UserId']||_0x57eac9['user']['id'];_0x55352d[_0x44ed('0x69')]['id']=_0x57eac9[_0x44ed('0x44')][_0x44ed('0x6a')];return db['MailMessage'][_0x44ed('0x43')]({'where':{'id':_0x57eac9['params']['id'],'UserId':null}})[_0x44ed('0x11')](handleEntityNotFound(_0x21e9db,null))['then'](saveUpdates(_0x57eac9[_0x44ed('0x44')],null))['then'](function(_0x40d35a){if(_0x40d35a){_0x55352d['message']=_0x40d35a[_0x44ed('0x6b')]({'plain':!![]});return db[_0x44ed('0x6c')][_0x44ed('0x43')]({'where':{'id':_0x40d35a[_0x44ed('0x6d')]}});}return null;})[_0x44ed('0x11')](handleEntityNotFound(_0x21e9db,null))['then'](function(_0x5c73a5){if(_0x5c73a5){return _0x5c73a5[_0x44ed('0x22')]({'UserId':_0x57eac9['body'][_0x44ed('0x6a')],'read1stAt':_[_0x44ed('0x6e')](_0x5c73a5['read1stAt'])?moment()[_0x44ed('0x63')](_0x44ed('0x64')):undefined});}return null;})[_0x44ed('0x11')](function(_0x839e21){if(_0x839e21){_0x55352d['interaction']=_0x839e21[_0x44ed('0x6b')]({'plain':!![]});interaction_log[_0x44ed('0x12')](_0x44ed('0x6f'),_0x57eac9[_0x44ed('0x59')]['id'],_0x57eac9['user'][_0x44ed('0x26')],_0x57eac9[_0x44ed('0x59')][_0x44ed('0x70')],_0x55352d[_0x44ed('0x71')]['id'],_0x57eac9['body']?JSON['stringify'](_0x57eac9[_0x44ed('0x44')]):'null');return respondWithRpcPromise(_0x44ed('0x72'),_0x44ed('0x73'),_0x55352d);}return null;})[_0x44ed('0x11')](function(_0x5001c7){var _0x5a0426='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x5001c7[_0x44ed('0x19')][_0x44ed('0x74')];return db[_0x44ed('0x75')]['query'](_0x5a0426,{'type':db[_0x44ed('0x76')]['QueryTypes'][_0x44ed('0x77')],'raw':!![]})[_0x44ed('0x11')](function(_0x4f5713){return _0x4f5713;});})[_0x44ed('0x11')](function(_0x3c7d30){if(_0x3c7d30){_0x55352d['message'][_0x44ed('0x78')]=_0x3c7d30[0x0];if(!_0x57eac9[_0x44ed('0x44')][_0x44ed('0x6a')])return;return db['User'][_0x44ed('0x43')]({'where':{'id':_0x57eac9['body']['UserId'],'role':_0x44ed('0x69')},'attributes':['id','name',_0x44ed('0x79'),'email',_0x44ed('0x7a')],'raw':!![]});}return null;})[_0x44ed('0x11')](function(_0x41d699){if(!_0x41d699)return null;_0x55352d[_0x44ed('0x19')][_0x44ed('0x69')]=_0x41d699;return _0x55352d;})[_0x44ed('0x11')](function(_0x38103d){if(_0x38103d){if(_0x57eac9['body']['manual']){_0x55352d['message']['interface']=util[_0x44ed('0x63')](_0x44ed('0x7b'),_0x57eac9[_0x44ed('0x59')][_0x44ed('0x26')]);_0x55352d['message'][_0x44ed('0x7c')]=_0x55352d[_0x44ed('0x7c')];_0x55352d[_0x44ed('0x19')]['motionChannel']=_0x55352d['channel'];_0x55352d[_0x44ed('0x19')][_0x44ed('0x7d')]='accept';_0x55352d[_0x44ed('0x19')][_0x44ed('0x44')]=htmlToText[_0x44ed('0x7e')](_0x55352d['message'][_0x44ed('0x44')]);return respondWithRpcPromise(_0x44ed('0x7f'),_0x44ed('0x7f'),{'event':_0x44ed('0x80'),'message':_0x55352d['message']},client9002)[_0x44ed('0x11')](function(){return _0x55352d;});}return _0x55352d;}return null;})[_0x44ed('0x11')](respondWithResult(_0x21e9db,null))[_0x44ed('0x1b')](handleError(_0x21e9db,null));};exports[_0x44ed('0x81')]=function(_0x562388,_0x2879cd){var _0x3eb47d={'agent':{},'channel':'mail'};if(_0x562388[_0x44ed('0x44')]['id']){delete _0x562388['body']['id'];}_0x562388[_0x44ed('0x44')][_0x44ed('0x6a')]=_0x562388[_0x44ed('0x44')][_0x44ed('0x6a')]||_0x562388['user']['id'];_0x3eb47d[_0x44ed('0x69')]['id']=_0x562388['body'][_0x44ed('0x6a')];return db[_0x44ed('0x3c')][_0x44ed('0x43')]({'where':{'id':_0x562388[_0x44ed('0x40')]['id'],'UserId':null}})[_0x44ed('0x11')](handleEntityNotFound(_0x2879cd,null))[_0x44ed('0x11')](function(_0x5f1c15){if(_0x5f1c15){_0x3eb47d[_0x44ed('0x19')]=_0x5f1c15['get']({'plain':!![]});return db['MailInteraction'][_0x44ed('0x43')]({'where':{'id':_0x5f1c15[_0x44ed('0x6d')]}});}return null;})[_0x44ed('0x11')](handleEntityNotFound(_0x2879cd,null))[_0x44ed('0x11')](function(_0x2e3c47){if(_0x2e3c47){_0x3eb47d[_0x44ed('0x71')]=_0x2e3c47['get']({'plain':!![]});interaction_log[_0x44ed('0x12')](_0x44ed('0x82'),_0x562388[_0x44ed('0x59')]['id'],_0x562388[_0x44ed('0x59')][_0x44ed('0x26')],_0x562388[_0x44ed('0x59')][_0x44ed('0x70')],_0x3eb47d['interaction']['id'],_0x562388['body']?JSON[_0x44ed('0x16')](_0x562388[_0x44ed('0x44')]):_0x44ed('0x83'));return respondWithRpcPromise(_0x44ed('0x84'),'rejectMessage',_0x3eb47d);}return null;})[_0x44ed('0x11')](function(_0x559a9c){var _0x39e4f6=_0x44ed('0x85')+_0x559a9c[_0x44ed('0x19')][_0x44ed('0x74')];return db[_0x44ed('0x75')][_0x44ed('0x30')](_0x39e4f6,{'type':db[_0x44ed('0x76')][_0x44ed('0x86')][_0x44ed('0x77')],'raw':!![]})[_0x44ed('0x11')](function(_0x10e12c){return _0x10e12c;});})[_0x44ed('0x11')](function(_0x100953){if(_0x100953){_0x3eb47d[_0x44ed('0x19')][_0x44ed('0x78')]=_0x100953[0x0];if(!_0x562388[_0x44ed('0x44')][_0x44ed('0x6a')])return;return db[_0x44ed('0x87')][_0x44ed('0x43')]({'where':{'id':_0x562388[_0x44ed('0x44')]['UserId'],'role':_0x44ed('0x69')},'attributes':['id',_0x44ed('0x26'),_0x44ed('0x79'),'email',_0x44ed('0x7a')],'raw':!![]});}return null;})['then'](function(_0x373e69){if(!_0x373e69)return null;_0x3eb47d['message'][_0x44ed('0x69')]=_0x373e69;return _0x3eb47d;})[_0x44ed('0x11')](function(_0x5868d7){if(_0x5868d7){_0x5868d7[_0x44ed('0x19')]['interface']=util[_0x44ed('0x63')]('SIP/%s',_0x562388['user'][_0x44ed('0x26')]);_0x5868d7[_0x44ed('0x19')][_0x44ed('0x7c')]=_0x3eb47d[_0x44ed('0x7c')];_0x5868d7['message'][_0x44ed('0x88')]=_0x3eb47d[_0x44ed('0x7c')];_0x5868d7[_0x44ed('0x19')][_0x44ed('0x7d')]=_0x44ed('0x81');_0x5868d7[_0x44ed('0x19')]['body']=htmlToText[_0x44ed('0x7e')](_0x3eb47d[_0x44ed('0x19')][_0x44ed('0x44')]);respondWithRpcPromise(_0x44ed('0x7f'),_0x44ed('0x7f'),{'event':_0x44ed('0x89'),'message':_0x5868d7[_0x44ed('0x19')]},client9002);return _0x3eb47d;}return null;})[_0x44ed('0x11')](respondWithResult(_0x2879cd,null))[_0x44ed('0x1b')](handleError(_0x2879cd,null));};exports[_0x44ed('0x8a')]=function(_0x2913b8,_0x7bd4e4){var _0x37a35e=moment()[_0x44ed('0x8b')]()[_0x44ed('0x8c')]();var _0xd2e157=path[_0x44ed('0x8d')](config[_0x44ed('0x5d')],_0x44ed('0x8e'),_0x44ed('0x8f'),_0x44ed('0x90'));var _0x238acc=path['join'](config[_0x44ed('0x5d')],_0x44ed('0x8e'),_0x44ed('0x8f'),_0x44ed('0x5c'));var _0x92f605=util[_0x44ed('0x63')](_0x44ed('0x91'),_0x37a35e);return db[_0x44ed('0x3c')][_0x44ed('0x43')]({'where':{'id':_0x2913b8[_0x44ed('0x40')]['id']},'attributes':['id','body',_0x44ed('0x92'),'to','cc',_0x44ed('0x93'),_0x44ed('0x94'),_0x44ed('0x95')],'include':_0x2913b8['query'][_0x44ed('0x5c')]?[{'model':db[_0x44ed('0x96')],'as':_0x44ed('0x97')}]:undefined})[_0x44ed('0x11')](handleEntityNotFound(_0x7bd4e4,null))['then'](function(_0xef5f57){if(_0xef5f57){var _0x2dd5b8=_0xef5f57;var _0x25b1bb={'from':_0x2dd5b8[_0x44ed('0x92')],'to':_0x2dd5b8['to'],'subject':_0x2dd5b8[_0x44ed('0x94')],'html':htmlEntities[_0x44ed('0x98')](_0x2dd5b8[_0x44ed('0x44')]),'headers':{'Date':moment(_0x2dd5b8['createdAt'])[_0x44ed('0x63')](_0x44ed('0x99'))},'attachments':[]};if(_0xef5f57['cc']){_0x25b1bb[_0x44ed('0x9a')]['Cc']=_0xef5f57['cc'];}if(_0xef5f57[_0x44ed('0x93')]){_0x25b1bb['headers'][_0x44ed('0x9b')]=_0xef5f57['bcc'];}return new BPromise(function(_0x2edc6f,_0x287992){if(_0xef5f57[_0x44ed('0x97')]){for(var _0x53e3f1=0x0;_0x53e3f1<_0xef5f57[_0x44ed('0x97')][_0x44ed('0x35')];_0x53e3f1++){var _0x2fd110=_0xef5f57['Attachments'][_0x53e3f1];var _0x414f36=path['join'](_0x238acc,_0x2fd110[_0x44ed('0x5f')]);if(fs[_0x44ed('0x9c')](_0x414f36)){_0x25b1bb[_0x44ed('0x5c')][_0x44ed('0x9d')]({'name':_0x2fd110[_0x44ed('0x26')],'contentType':_0x2fd110[_0x44ed('0x2c')],'data':fs[_0x44ed('0x9e')](_0x414f36)});}}}emlformat[_0x44ed('0x9f')](_0x25b1bb,function(_0x10dc54,_0x5b3a1b){if(_0x10dc54)return _0x287992(_0x10dc54);fs[_0x44ed('0xa0')](path[_0x44ed('0x8d')](_0xd2e157,_0x92f605),_0x5b3a1b);return _0x2edc6f(_0x5b3a1b);});});}})['then'](function(_0xe8200c){if(_0xe8200c){return _0x7bd4e4['download'](path[_0x44ed('0x8d')](_0xd2e157,_0x92f605),_0x92f605,function(_0x4a397f){if(!_0x4a397f)fs[_0x44ed('0xa1')](path[_0x44ed('0x8d')](_0xd2e157,_0x92f605));});}})[_0x44ed('0x1b')](handleError(_0x7bd4e4,null));};
\ No newline at end of file
index 38896ed..87e2faa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d13=['../../mysqldb','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','events'];(function(_0x6d1c65,_0x22df6e){var _0x1e96b4=function(_0xc1aac4){while(--_0xc1aac4){_0x6d1c65['push'](_0x6d1c65['shift']());}};_0x1e96b4(++_0x22df6e);}(_0x1d13,0x194));var _0x31d1=function(_0x424240,_0x5af09b){_0x424240=_0x424240-0x0;var _0x4ec855=_0x1d13[_0x424240];return _0x4ec855;};'use strict';var EventEmitter=require(_0x31d1('0x0'));var MailMessage=require(_0x31d1('0x1'))['db']['MailMessage'];var MailMessageEvents=new EventEmitter();MailMessageEvents[_0x31d1('0x2')](0x0);var events={'afterCreate':_0x31d1('0x3'),'afterUpdate':_0x31d1('0x4'),'afterDestroy':_0x31d1('0x5')};function emitEvent(_0x4be266){return function(_0x2005c2,_0x1c296c,_0x541d42){MailMessageEvents[_0x31d1('0x6')](_0x4be266+':'+_0x2005c2['id'],_0x2005c2);MailMessageEvents[_0x31d1('0x6')](_0x4be266,_0x2005c2);_0x541d42(null);};}for(var e in events){if(events[_0x31d1('0x7')](e)){var event=events[e];MailMessage[_0x31d1('0x8')](e,emitEvent(event));}}module['exports']=MailMessageEvents;
\ No newline at end of file
+var _0x3ad2=['exports','events','../../mysqldb','MailMessage','setMaxListeners','emit','hasOwnProperty','hook'];(function(_0x4c1d9b,_0x36ba5b){var _0x2b5683=function(_0x3dbac0){while(--_0x3dbac0){_0x4c1d9b['push'](_0x4c1d9b['shift']());}};_0x2b5683(++_0x36ba5b);}(_0x3ad2,0x191));var _0x23ad=function(_0x415f42,_0x4cb715){_0x415f42=_0x415f42-0x0;var _0x41e016=_0x3ad2[_0x415f42];return _0x41e016;};'use strict';var EventEmitter=require(_0x23ad('0x0'));var MailMessage=require(_0x23ad('0x1'))['db'][_0x23ad('0x2')];var MailMessageEvents=new EventEmitter();MailMessageEvents[_0x23ad('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x5776ae){return function(_0x3546dc,_0x50d8d5,_0x2b4b58){MailMessageEvents[_0x23ad('0x4')](_0x5776ae+':'+_0x3546dc['id'],_0x3546dc);MailMessageEvents['emit'](_0x5776ae,_0x3546dc);_0x2b4b58(null);};}for(var e in events){if(events[_0x23ad('0x5')](e)){var event=events[e];MailMessage[_0x23ad('0x6')](e,emitEvent(event));}}module[_0x23ad('0x7')]=MailMessageEvents;
\ No newline at end of file
index a7dfbf8..7dcbdb7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x741b=['MailMessage','mail_messages','messageId','subject','plainBody','fromString','body','models','direction','toLowerCase','out','secret','isNil','MailInteraction','findOne','then','update','createdAt','catch','error','utf8mb4','utf8mb4_unicode_ci','lodash','moment','request-promise','html-to-text','path','../../config/environment','./mailMessage.attributes','exports','define'];(function(_0x1a1674,_0x445946){var _0x2f64d7=function(_0x446c4c){while(--_0x446c4c){_0x1a1674['push'](_0x1a1674['shift']());}};_0x2f64d7(++_0x445946);}(_0x741b,0xd0));var _0xb741=function(_0x618414,_0x1a7a60){_0x618414=_0x618414-0x0;var _0x21c19a=_0x741b[_0x618414];return _0x21c19a;};'use strict';var _=require(_0xb741('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0xb741('0x1'));var BPromise=require('bluebird');var rp=require(_0xb741('0x2'));var htmlToText=require(_0xb741('0x3'));var fs=require('fs');var path=require(_0xb741('0x4'));var rimraf=require('rimraf');var config=require(_0xb741('0x5'));var attributes=require(_0xb741('0x6'));module[_0xb741('0x7')]=function(_0x93d77e,_0x4e2cd5){return _0x93d77e[_0xb741('0x8')](_0xb741('0x9'),attributes,{'tableName':_0xb741('0xa'),'paranoid':![],'indexes':[{'name':'messageId','fields':[_0xb741('0xb')]},{'name':'fti_mail_messages','fields':['plainBody',_0xb741('0xc')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x52f5d9,_0x52984b,_0x8a5c42){if(_0x52f5d9['body']){_0x52f5d9[_0xb741('0xd')]=htmlToText[_0xb741('0xe')](_0x52f5d9[_0xb741('0xf')],{'preserveNewlines':!![],'singleNewLineParagraphs':!![],'uppercaseHeadings':![],'noLinkBrackets':!![],'ignoreImage':!![]});}_0x8a5c42(null,_0x52984b);},'afterCreate':function(_0x1d22a0,_0x32003b,_0x3a2e2d){var _0x2648fa=_0x93d77e[_0xb741('0x10')];var _0x329e36=_0x1d22a0['get']({'plain':!![]});if(_0x329e36[_0xb741('0x11')][_0xb741('0x12')]()==='in'||_0x329e36['direction']['toLowerCase']()===_0xb741('0x13')&&!_0x329e36[_0xb741('0x14')]&&!_[_0xb741('0x15')](_0x329e36['UserId'])){_0x2648fa[_0xb741('0x16')][_0xb741('0x17')]({'where':{'id':_0x329e36['MailInteractionId']}})[_0xb741('0x18')](function(_0x1ef82e){if(_0x1ef82e){_0x1ef82e[_0xb741('0x19')]({'lastMsgAt':_0x329e36[_0xb741('0x1a')],'lastMsgDirection':_0x329e36[_0xb741('0x11')]['toLowerCase']()});}})[_0xb741('0x1b')](function(_0x24cbdc){console[_0xb741('0x1c')](_0x24cbdc);});}_0x3a2e2d();}},'charset':_0xb741('0x1d'),'collate':_0xb741('0x1e')});};
\ No newline at end of file
+var _0xc2d7=['out','secret','UserId','findOne','MailInteractionId','then','update','createdAt','error','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','bluebird','request-promise','../../config/environment','./mailMessage.attributes','exports','MailMessage','mail_messages','messageId','fti_mail_messages','plainBody','FULLTEXT','body','fromString','models','toLowerCase','direction'];(function(_0x495f66,_0x3b27fe){var _0x54a2bb=function(_0x162b4c){while(--_0x162b4c){_0x495f66['push'](_0x495f66['shift']());}};_0x54a2bb(++_0x3b27fe);}(_0xc2d7,0x160));var _0x7c2d=function(_0x54bc7d,_0x2c7ef7){_0x54bc7d=_0x54bc7d-0x0;var _0x15cc9c=_0xc2d7[_0x54bc7d];return _0x15cc9c;};'use strict';var _=require(_0x7c2d('0x0'));var util=require(_0x7c2d('0x1'));var logger=require(_0x7c2d('0x2'))(_0x7c2d('0x3'));var moment=require('moment');var BPromise=require(_0x7c2d('0x4'));var rp=require(_0x7c2d('0x5'));var htmlToText=require('html-to-text');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x7c2d('0x6'));var attributes=require(_0x7c2d('0x7'));module[_0x7c2d('0x8')]=function(_0x287898,_0x44646f){return _0x287898['define'](_0x7c2d('0x9'),attributes,{'tableName':_0x7c2d('0xa'),'paranoid':![],'indexes':[{'name':_0x7c2d('0xb'),'fields':[_0x7c2d('0xb')]},{'name':_0x7c2d('0xc'),'fields':[_0x7c2d('0xd'),'subject'],'type':_0x7c2d('0xe')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x4ebdd6,_0x8ff235,_0x9e599f){if(_0x4ebdd6[_0x7c2d('0xf')]){_0x4ebdd6[_0x7c2d('0xd')]=htmlToText[_0x7c2d('0x10')](_0x4ebdd6['body'],{'preserveNewlines':!![],'singleNewLineParagraphs':!![],'uppercaseHeadings':![],'noLinkBrackets':!![],'ignoreImage':!![]});}_0x9e599f(null,_0x8ff235);},'afterCreate':function(_0x2175c9,_0xc78c20,_0x524c93){var _0x7628a4=_0x287898[_0x7c2d('0x11')];var _0x416e28=_0x2175c9['get']({'plain':!![]});if(_0x416e28['direction'][_0x7c2d('0x12')]()==='in'||_0x416e28[_0x7c2d('0x13')][_0x7c2d('0x12')]()===_0x7c2d('0x14')&&!_0x416e28[_0x7c2d('0x15')]&&!_['isNil'](_0x416e28[_0x7c2d('0x16')])){_0x7628a4['MailInteraction'][_0x7c2d('0x17')]({'where':{'id':_0x416e28[_0x7c2d('0x18')]}})[_0x7c2d('0x19')](function(_0x4e405e){if(_0x4e405e){_0x4e405e[_0x7c2d('0x1a')]({'lastMsgAt':_0x416e28[_0x7c2d('0x1b')],'lastMsgDirection':_0x416e28[_0x7c2d('0x13')][_0x7c2d('0x12')]()});}})['catch'](function(_0x18db72){console[_0x7c2d('0x1c')](_0x18db72);});}_0x524c93();}},'charset':_0x7c2d('0x1d'),'collate':_0x7c2d('0x1e')});};
\ No newline at end of file
index 6cfd3fa..7fd6d7e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c7c=['then','info','request\x20sent','debug','MailMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','MailMessage,\x20%s,\x20%s','message','result','CreateMailMessage','MailMessage','options','raw','catch','lodash','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./mailMessage.socket','register'];(function(_0x3aa593,_0x1e94bb){var _0x3d37d0=function(_0x5d5b49){while(--_0x5d5b49){_0x3aa593['push'](_0x3aa593['shift']());}};_0x3d37d0(++_0x1e94bb);}(_0x1c7c,0x164));var _0xc1c7=function(_0x1f4652,_0x29e208){_0x1f4652=_0x1f4652-0x0;var _0x21b163=_0x1c7c[_0x1f4652];return _0x21b163;};'use strict';var _=require(_0xc1c7('0x0'));var util=require(_0xc1c7('0x1'));var moment=require(_0xc1c7('0x2'));var BPromise=require(_0xc1c7('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc1c7('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xc1c7('0x5'));var logger=require(_0xc1c7('0x6'))(_0xc1c7('0x7'));var config=require(_0xc1c7('0x8'));var jayson=require(_0xc1c7('0x9'));var client=jayson[_0xc1c7('0xa')][_0xc1c7('0xb')]({'port':0x232a});config[_0xc1c7('0xc')]=_[_0xc1c7('0xd')](config[_0xc1c7('0xc')],{'host':_0xc1c7('0xe'),'port':0x18eb});var socket=require(_0xc1c7('0xf'))(new Redis(config[_0xc1c7('0xc')]));require(_0xc1c7('0x10'))[_0xc1c7('0x11')](socket);function respondWithRpcPromise(_0x301abf,_0x25a669,_0x4df577){return new BPromise(function(_0x3b0748,_0x246ced){return client['request'](_0x301abf,_0x4df577)[_0xc1c7('0x12')](function(_0x5ac140){logger[_0xc1c7('0x13')]('MailMessage,\x20%s,\x20%s',_0x25a669,_0xc1c7('0x14'));logger[_0xc1c7('0x15')](_0xc1c7('0x16'),_0x25a669,_0xc1c7('0x14'),JSON[_0xc1c7('0x17')](_0x5ac140));if(_0x5ac140[_0xc1c7('0x18')]){if(_0x5ac140[_0xc1c7('0x18')][_0xc1c7('0x19')]===0x1f4){logger[_0xc1c7('0x18')](_0xc1c7('0x1a'),_0x25a669,_0x5ac140[_0xc1c7('0x18')][_0xc1c7('0x1b')]);return _0x246ced(_0x5ac140['error'][_0xc1c7('0x1b')]);}logger[_0xc1c7('0x18')](_0xc1c7('0x1a'),_0x25a669,_0x5ac140['error'][_0xc1c7('0x1b')]);return _0x3b0748(_0x5ac140[_0xc1c7('0x18')][_0xc1c7('0x1b')]);}else{logger[_0xc1c7('0x13')](_0xc1c7('0x1a'),_0x25a669,_0xc1c7('0x14'));_0x3b0748(_0x5ac140[_0xc1c7('0x1c')][_0xc1c7('0x1b')]);}})['catch'](function(_0x37d748){logger[_0xc1c7('0x18')](_0xc1c7('0x1a'),_0x25a669,_0x37d748);_0x246ced(_0x37d748);});});}exports[_0xc1c7('0x1d')]=function(_0x4b706e){var _0x124fd8=this;return new Promise(function(_0x4d6171,_0x5e7e4a){return db[_0xc1c7('0x1e')]['create'](_0x4b706e['body'],{'raw':_0x4b706e[_0xc1c7('0x1f')]?_0x4b706e[_0xc1c7('0x1f')][_0xc1c7('0x20')]===undefined?!![]:![]:!![]})['then'](function(_0x813853){logger[_0xc1c7('0x13')](_0xc1c7('0x1d'),_0x4b706e);logger[_0xc1c7('0x15')](_0xc1c7('0x1d'),_0x4b706e,JSON[_0xc1c7('0x17')](_0x813853));_0x4d6171(_0x813853);})[_0xc1c7('0x21')](function(_0x120168){logger[_0xc1c7('0x18')](_0xc1c7('0x1d'),_0x120168[_0xc1c7('0x1b')],_0x4b706e);_0x5e7e4a(_0x124fd8[_0xc1c7('0x18')](0x1f4,_0x120168[_0xc1c7('0x1b')]));});});};
\ No newline at end of file
+var _0x5eb8=['client','http','defaults','redis','localhost','register','request','info','request\x20sent','debug','MailMessage,\x20%s,\x20%s,\x20%s','error','MailMessage,\x20%s,\x20%s','message','result','catch','options','raw','then','stringify','CreateMailMessage','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x296e1b,_0x8b5b5d){var _0x3a372d=function(_0x2fdebe){while(--_0x2fdebe){_0x296e1b['push'](_0x296e1b['shift']());}};_0x3a372d(++_0x8b5b5d);}(_0x5eb8,0xb0));var _0x85eb=function(_0x4be8ba,_0x5d10ba){_0x4be8ba=_0x4be8ba-0x0;var _0x1af822=_0x5eb8[_0x4be8ba];return _0x1af822;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x85eb('0x0'));var BPromise=require(_0x85eb('0x1'));var rs=require(_0x85eb('0x2'));var fs=require('fs');var Redis=require(_0x85eb('0x3'));var db=require(_0x85eb('0x4'))['db'];var utils=require(_0x85eb('0x5'));var logger=require(_0x85eb('0x6'))(_0x85eb('0x7'));var config=require(_0x85eb('0x8'));var jayson=require(_0x85eb('0x9'));var client=jayson[_0x85eb('0xa')][_0x85eb('0xb')]({'port':0x232a});config['redis']=_[_0x85eb('0xc')](config[_0x85eb('0xd')],{'host':_0x85eb('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x85eb('0xd')]));require('./mailMessage.socket')[_0x85eb('0xf')](socket);function respondWithRpcPromise(_0x40d6b6,_0x673228,_0x29030b){return new BPromise(function(_0x1dacf2,_0x73e6d0){return client[_0x85eb('0x10')](_0x40d6b6,_0x29030b)['then'](function(_0x163f32){logger[_0x85eb('0x11')]('MailMessage,\x20%s,\x20%s',_0x673228,_0x85eb('0x12'));logger[_0x85eb('0x13')](_0x85eb('0x14'),_0x673228,_0x85eb('0x12'),JSON['stringify'](_0x163f32));if(_0x163f32['error']){if(_0x163f32[_0x85eb('0x15')]['code']===0x1f4){logger[_0x85eb('0x15')](_0x85eb('0x16'),_0x673228,_0x163f32[_0x85eb('0x15')][_0x85eb('0x17')]);return _0x73e6d0(_0x163f32[_0x85eb('0x15')]['message']);}logger[_0x85eb('0x15')]('MailMessage,\x20%s,\x20%s',_0x673228,_0x163f32[_0x85eb('0x15')][_0x85eb('0x17')]);return _0x1dacf2(_0x163f32[_0x85eb('0x15')][_0x85eb('0x17')]);}else{logger['info']('MailMessage,\x20%s,\x20%s',_0x673228,'request\x20sent');_0x1dacf2(_0x163f32[_0x85eb('0x18')][_0x85eb('0x17')]);}})[_0x85eb('0x19')](function(_0x2e986c){logger[_0x85eb('0x15')](_0x85eb('0x16'),_0x673228,_0x2e986c);_0x73e6d0(_0x2e986c);});});}exports['CreateMailMessage']=function(_0x24cf28){var _0x7244fc=this;return new Promise(function(_0xd9f06d,_0x4e8041){return db['MailMessage']['create'](_0x24cf28['body'],{'raw':_0x24cf28[_0x85eb('0x1a')]?_0x24cf28[_0x85eb('0x1a')][_0x85eb('0x1b')]===undefined?!![]:![]:!![]})[_0x85eb('0x1c')](function(_0x465c74){logger[_0x85eb('0x11')]('CreateMailMessage',_0x24cf28);logger['debug']('CreateMailMessage',_0x24cf28,JSON[_0x85eb('0x1d')](_0x465c74));_0xd9f06d(_0x465c74);})[_0x85eb('0x19')](function(_0x3f7a4d){logger[_0x85eb('0x15')](_0x85eb('0x1e'),_0x3f7a4d[_0x85eb('0x17')],_0x24cf28);_0x4e8041(_0x7244fc['error'](0x1f4,_0x3f7a4d[_0x85eb('0x17')]));});});};
\ No newline at end of file
index 1b25119..eecfc8e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9d67=['mailMessage:','./mailMessage.events','save','remove','emit','removeListener','length'];(function(_0x51ae84,_0x186308){var _0x494e58=function(_0x1e5328){while(--_0x1e5328){_0x51ae84['push'](_0x51ae84['shift']());}};_0x494e58(++_0x186308);}(_0x9d67,0x78));var _0x79d6=function(_0x2b45e5,_0x43832b){_0x2b45e5=_0x2b45e5-0x0;var _0xbb8e8d=_0x9d67[_0x2b45e5];return _0xbb8e8d;};'use strict';var MailMessageEvents=require(_0x79d6('0x0'));var events=[_0x79d6('0x1'),_0x79d6('0x2'),'update'];function createListener(_0x412f6e,_0x8777ab){return function(_0x35fb5c){_0x8777ab[_0x79d6('0x3')](_0x412f6e,_0x35fb5c);};}function removeListener(_0x5e72c7,_0x235c12){return function(){MailMessageEvents[_0x79d6('0x4')](_0x5e72c7,_0x235c12);};}exports['register']=function(_0x38afa1){for(var _0x11a972=0x0,_0x4b05c9=events[_0x79d6('0x5')];_0x11a972<_0x4b05c9;_0x11a972++){var _0x1bbf14=events[_0x11a972];var _0x398a93=createListener(_0x79d6('0x6')+_0x1bbf14,_0x38afa1);MailMessageEvents['on'](_0x1bbf14,_0x398a93);}};
\ No newline at end of file
+var _0xb311=['length','mailMessage:','./mailMessage.events','save','remove','update','emit','removeListener','register'];(function(_0x15be15,_0x4bc174){var _0x969ca0=function(_0x122ef9){while(--_0x122ef9){_0x15be15['push'](_0x15be15['shift']());}};_0x969ca0(++_0x4bc174);}(_0xb311,0xad));var _0x1b31=function(_0x3cedbd,_0x5ec2f9){_0x3cedbd=_0x3cedbd-0x0;var _0x357d46=_0xb311[_0x3cedbd];return _0x357d46;};'use strict';var MailMessageEvents=require(_0x1b31('0x0'));var events=[_0x1b31('0x1'),_0x1b31('0x2'),_0x1b31('0x3')];function createListener(_0x59ec89,_0x5e4d78){return function(_0x200b3e){_0x5e4d78[_0x1b31('0x4')](_0x59ec89,_0x200b3e);};}function removeListener(_0x4ebf4e,_0x44ae9e){return function(){MailMessageEvents[_0x1b31('0x5')](_0x4ebf4e,_0x44ae9e);};}exports[_0x1b31('0x6')]=function(_0x2a32ac){for(var _0x4b1f45=0x0,_0x417466=events[_0x1b31('0x7')];_0x4b1f45<_0x417466;_0x4b1f45++){var _0x1da9e5=events[_0x4b1f45];var _0x3ab5bc=createListener(_0x1b31('0x8')+_0x1da9e5,_0x2a32ac);MailMessageEvents['on'](_0x1da9e5,_0x3ab5bc);}};
\ No newline at end of file
index b385c94..d6a7b07 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x30d9=['removeAgents','exports','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailQueue.controller','get','index','isAuthenticated','describe','/:id','show','/:id/members','getMembers','getTeams','getAgents','post','/:id/teams','addTeams','addAgents','update','delete','removeTeams','/:id/users'];(function(_0x1e4360,_0x930b9b){var _0x31e6b4=function(_0x49dd8e){while(--_0x49dd8e){_0x1e4360['push'](_0x1e4360['shift']());}};_0x31e6b4(++_0x930b9b);}(_0x30d9,0x17b));var _0x930d=function(_0x503a34,_0x26f737){_0x503a34=_0x503a34-0x0;var _0x57a54d=_0x30d9[_0x503a34];return _0x57a54d;};'use strict';var multer=require('multer');var util=require(_0x930d('0x0'));var path=require(_0x930d('0x1'));var timeout=require(_0x930d('0x2'));var express=require('express');var router=express[_0x930d('0x3')]();var fs_extra=require(_0x930d('0x4'));var auth=require(_0x930d('0x5'));var interaction=require(_0x930d('0x6'));var config=require(_0x930d('0x7'));var controller=require(_0x930d('0x8'));router[_0x930d('0x9')]('/',auth['isAuthenticated'](),controller[_0x930d('0xa')]);router[_0x930d('0x9')]('/describe',auth[_0x930d('0xb')](),controller[_0x930d('0xc')]);router['get'](_0x930d('0xd'),auth[_0x930d('0xb')](),controller[_0x930d('0xe')]);router[_0x930d('0x9')](_0x930d('0xf'),auth['isAuthenticated'](),controller[_0x930d('0x10')]);router[_0x930d('0x9')]('/:id/teams',auth['isAuthenticated'](),controller[_0x930d('0x11')]);router[_0x930d('0x9')]('/:id/users',auth[_0x930d('0xb')](),controller[_0x930d('0x12')]);router[_0x930d('0x13')]('/',auth[_0x930d('0xb')](),controller['create']);router[_0x930d('0x13')](_0x930d('0x14'),auth[_0x930d('0xb')](),controller[_0x930d('0x15')]);router[_0x930d('0x13')]('/:id/users',auth[_0x930d('0xb')](),controller[_0x930d('0x16')]);router['put'](_0x930d('0xd'),auth['isAuthenticated'](),controller[_0x930d('0x17')]);router[_0x930d('0x18')]('/:id',auth[_0x930d('0xb')](),controller['destroy']);router[_0x930d('0x18')](_0x930d('0x14'),auth[_0x930d('0xb')](),controller[_0x930d('0x19')]);router[_0x930d('0x18')](_0x930d('0x1a'),auth[_0x930d('0xb')](),controller[_0x930d('0x1b')]);module[_0x930d('0x1c')]=router;
\ No newline at end of file
+var _0x8239=['post','addTeams','put','update','delete','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailQueue.controller','get','isAuthenticated','index','/describe','describe','/:id','/:id/members','/:id/teams','getTeams','/:id/users','getAgents'];(function(_0x73ac5f,_0x4d4e06){var _0x194ee5=function(_0x4cc3ca){while(--_0x4cc3ca){_0x73ac5f['push'](_0x73ac5f['shift']());}};_0x194ee5(++_0x4d4e06);}(_0x8239,0x165));var _0x9823=function(_0x5c8139,_0xa31ec8){_0x5c8139=_0x5c8139-0x0;var _0x3c35f3=_0x8239[_0x5c8139];return _0x3c35f3;};'use strict';var multer=require(_0x9823('0x0'));var util=require(_0x9823('0x1'));var path=require(_0x9823('0x2'));var timeout=require('connect-timeout');var express=require(_0x9823('0x3'));var router=express[_0x9823('0x4')]();var fs_extra=require(_0x9823('0x5'));var auth=require(_0x9823('0x6'));var interaction=require(_0x9823('0x7'));var config=require(_0x9823('0x8'));var controller=require(_0x9823('0x9'));router[_0x9823('0xa')]('/',auth[_0x9823('0xb')](),controller[_0x9823('0xc')]);router[_0x9823('0xa')](_0x9823('0xd'),auth[_0x9823('0xb')](),controller[_0x9823('0xe')]);router['get'](_0x9823('0xf'),auth[_0x9823('0xb')](),controller['show']);router[_0x9823('0xa')](_0x9823('0x10'),auth['isAuthenticated'](),controller['getMembers']);router[_0x9823('0xa')](_0x9823('0x11'),auth['isAuthenticated'](),controller[_0x9823('0x12')]);router[_0x9823('0xa')](_0x9823('0x13'),auth[_0x9823('0xb')](),controller[_0x9823('0x14')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0x9823('0x15')](_0x9823('0x11'),auth['isAuthenticated'](),controller[_0x9823('0x16')]);router[_0x9823('0x15')]('/:id/users',auth[_0x9823('0xb')](),controller['addAgents']);router[_0x9823('0x17')](_0x9823('0xf'),auth[_0x9823('0xb')](),controller[_0x9823('0x18')]);router['delete'](_0x9823('0xf'),auth[_0x9823('0xb')](),controller['destroy']);router['delete'](_0x9823('0x11'),auth[_0x9823('0xb')](),controller['removeTeams']);router[_0x9823('0x19')](_0x9823('0x13'),auth['isAuthenticated'](),controller['removeAgents']);module[_0x9823('0x1a')]=router;
\ No newline at end of file
index 3bcbcbe..269332b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2966=['STRING','ENUM','beepall','roundrobin','sequelize','exports'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0x2966,0x1ba));var _0x6296=function(_0x29f969,_0x3e39fb){_0x29f969=_0x29f969-0x0;var _0x428546=_0x2966[_0x29f969];return _0x428546;};'use strict';var Sequelize=require(_0x6296('0x0'));module[_0x6296('0x1')]={'name':{'type':Sequelize['STRING'],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x6296('0x2')]},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x6296('0x3')]('rrmemory',_0x6296('0x4'),_0x6296('0x5'))}};
\ No newline at end of file
+var _0xfd55=['beepall','roundrobin','exports','STRING','name','INTEGER','rrmemory'];(function(_0x1fa07e,_0xbf5dc3){var _0x4ff2b9=function(_0x1a8d72){while(--_0x1a8d72){_0x1fa07e['push'](_0x1fa07e['shift']());}};_0x4ff2b9(++_0xbf5dc3);}(_0xfd55,0x11a));var _0x5fd5=function(_0x53e7cb,_0x2d5c30){_0x53e7cb=_0x53e7cb-0x0;var _0x1327b1=_0xfd55[_0x53e7cb];return _0x1327b1;};'use strict';var Sequelize=require('sequelize');module[_0x5fd5('0x0')]={'name':{'type':Sequelize[_0x5fd5('0x1')],'unique':_0x5fd5('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x5fd5('0x1')]},'timeout':{'type':Sequelize[_0x5fd5('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0x5fd5('0x4'),_0x5fd5('0x5'),_0x5fd5('0x6'))}};
\ No newline at end of file
index 035fa57..d6132c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb433=['fast-json-patch','request-promise','mustache','util','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./mailQueue.socket','register','sendStatus','status','end','json','offset','limit','undefined','count','set','reject','save','update','destroy','then','get','UserProfileResource','error','stack','name','send','MailQueue','rawAttributes','type','key','model','map','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','MailQueues','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','findOne','UserMailQueue','User','mailPause','updatedAt','createdAt','%s/%s','SIP','getTeams','Team','ids','Agents','online','voicePause','interface','flatMap','sequelize','addTeams','each','findOrCreate','userMailQueue:save','removeTeams','select','field','team_has_mail_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','MailQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','SELECT','every','TeamId','includes','all','compact','value','transaction','isEmpty','emit','userMailQueue:remove','addAgents','omit','spread','removeAgents','isArray','getAgents','eml-format','rimraf','zip-dir'];(function(_0x37bd26,_0x5ad346){var _0xe83dc4=function(_0x1ac229){while(--_0x1ac229){_0x37bd26['push'](_0x37bd26['shift']());}};_0xe83dc4(++_0x5ad346);}(_0xb433,0x19b));var _0x3b43=function(_0x46cc29,_0x473f8e){_0x46cc29=_0x46cc29-0x0;var _0x5ea06f=_0xb433[_0x46cc29];return _0x5ea06f;};'use strict';var emlformat=require(_0x3b43('0x0'));var rimraf=require(_0x3b43('0x1'));var zipdir=require(_0x3b43('0x2'));var jsonpatch=require(_0x3b43('0x3'));var rp=require(_0x3b43('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x3b43('0x5'));var util=require(_0x3b43('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0x3b43('0x7'));var ejs=require(_0x3b43('0x8'));var fs=require('fs');var fs_extra=require(_0x3b43('0x9'));var _=require(_0x3b43('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x3b43('0xb'));var deskjs=require(_0x3b43('0xc'));var toCsv=require(_0x3b43('0x7'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x3b43('0xd'));var authService=require(_0x3b43('0xe'));var qs=require(_0x3b43('0xf'));var as=require(_0x3b43('0x10'));var hardwareService=require(_0x3b43('0x11'));var logger=require(_0x3b43('0x12'))(_0x3b43('0x13'));var utils=require(_0x3b43('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x3b43('0x15'));var db=require(_0x3b43('0x16'))['db'];config[_0x3b43('0x17')]=_[_0x3b43('0x18')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x3b43('0x19'))(new Redis(config['redis']));require(_0x3b43('0x1a'))[_0x3b43('0x1b')](socket);function respondWithStatusCode(_0x1197f9,_0x23bc20){_0x23bc20=_0x23bc20||0xcc;return function(_0x269e43){if(_0x269e43){return _0x1197f9[_0x3b43('0x1c')](_0x23bc20);}return _0x1197f9[_0x3b43('0x1d')](_0x23bc20)[_0x3b43('0x1e')]();};}function respondWithResult(_0x4018c4,_0x488774){_0x488774=_0x488774||0xc8;return function(_0x1fbf3b){if(_0x1fbf3b){return _0x4018c4[_0x3b43('0x1d')](_0x488774)[_0x3b43('0x1f')](_0x1fbf3b);}};}function respondWithFilteredResult(_0x5532de,_0x4a4bdc){return function(_0x4ccfa7){if(_0x4ccfa7){var _0x2ddce0=typeof _0x4a4bdc[_0x3b43('0x20')]==='undefined'&&typeof _0x4a4bdc[_0x3b43('0x21')]===_0x3b43('0x22');var _0x361898=_0x4ccfa7[_0x3b43('0x23')];var _0xe5fef1=_0x2ddce0?0x0:_0x4a4bdc['offset'];var _0x368809=_0x2ddce0?_0x4ccfa7[_0x3b43('0x23')]:_0x4a4bdc['offset']+_0x4a4bdc[_0x3b43('0x21')];var _0x33122c;if(_0x368809>=_0x361898){_0x368809=_0x361898;_0x33122c=0xc8;}else{_0x33122c=0xce;}_0x5532de[_0x3b43('0x1d')](_0x33122c);return _0x5532de[_0x3b43('0x24')]('Content-Range',_0xe5fef1+'-'+_0x368809+'/'+_0x361898)[_0x3b43('0x1f')](_0x4ccfa7);}return null;};}function patchUpdates(_0x1a70c9){return function(_0x5aa38a){try{jsonpatch['apply'](_0x5aa38a,_0x1a70c9,!![]);}catch(_0x569c5a){return BPromise[_0x3b43('0x25')](_0x569c5a);}return _0x5aa38a[_0x3b43('0x26')]();};}function saveUpdates(_0x454015,_0x421cd8){return function(_0x197d28){if(_0x197d28){return _0x197d28[_0x3b43('0x27')](_0x454015)['then'](function(_0x2f9b1b){return _0x2f9b1b;});}return null;};}function removeEntity(_0xd1fe0c,_0x2290b4){return function(_0xbaf1fd){if(_0xbaf1fd){return _0xbaf1fd[_0x3b43('0x28')]()[_0x3b43('0x29')](function(){var _0x47bdc8=_0xbaf1fd[_0x3b43('0x2a')]({'plain':!![]});var _0x3aca03='MailQueues';return db[_0x3b43('0x2b')][_0x3b43('0x28')]({'where':{'type':_0x3aca03,'resourceId':_0x47bdc8['id']}})[_0x3b43('0x29')](function(){return _0xbaf1fd;});})[_0x3b43('0x29')](function(){_0xd1fe0c[_0x3b43('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2a579f,_0x8178c1){return function(_0x269f34){if(!_0x269f34){_0x2a579f[_0x3b43('0x1c')](0x194);}return _0x269f34;};}function handleError(_0x487eca,_0x56923d){_0x56923d=_0x56923d||0x1f4;return function(_0x4eeb4c){logger[_0x3b43('0x2c')](_0x4eeb4c[_0x3b43('0x2d')]);if(_0x4eeb4c[_0x3b43('0x2e')]){delete _0x4eeb4c['name'];}_0x487eca['status'](_0x56923d)[_0x3b43('0x2f')](_0x4eeb4c);};}exports['index']=function(_0x5f0668,_0x5a1343){var _0x139441={},_0x280b8e={},_0x89f6f5={'count':0x0,'rows':[]};var _0xaf6a5a=_['map'](db[_0x3b43('0x30')][_0x3b43('0x31')],function(_0x368353){return{'name':_0x368353['fieldName'],'type':_0x368353[_0x3b43('0x32')][_0x3b43('0x33')]};});_0x280b8e[_0x3b43('0x34')]=_[_0x3b43('0x35')](_0xaf6a5a,_0x3b43('0x2e'));_0x280b8e['query']=_[_0x3b43('0x36')](_0x5f0668[_0x3b43('0x37')]);_0x280b8e[_0x3b43('0x38')]=_[_0x3b43('0x39')](_0x280b8e[_0x3b43('0x34')],_0x280b8e[_0x3b43('0x37')]);_0x139441['attributes']=_[_0x3b43('0x39')](_0x280b8e[_0x3b43('0x34')],qs[_0x3b43('0x3a')](_0x5f0668[_0x3b43('0x37')][_0x3b43('0x3a')]));_0x139441[_0x3b43('0x3b')]=_0x139441['attributes'][_0x3b43('0x3c')]?_0x139441['attributes']:_0x280b8e[_0x3b43('0x34')];if(!_0x5f0668[_0x3b43('0x37')][_0x3b43('0x3d')](_0x3b43('0x3e'))){_0x139441[_0x3b43('0x21')]=qs[_0x3b43('0x21')](_0x5f0668[_0x3b43('0x37')][_0x3b43('0x21')]);_0x139441[_0x3b43('0x20')]=qs['offset'](_0x5f0668[_0x3b43('0x37')][_0x3b43('0x20')]);}_0x139441[_0x3b43('0x3f')]=qs[_0x3b43('0x40')](_0x5f0668[_0x3b43('0x37')][_0x3b43('0x40')]);_0x139441[_0x3b43('0x41')]=qs[_0x3b43('0x38')](_[_0x3b43('0x42')](_0x5f0668[_0x3b43('0x37')],_0x280b8e[_0x3b43('0x38')]),_0xaf6a5a);if(_0x5f0668[_0x3b43('0x37')][_0x3b43('0x43')]){_0x139441[_0x3b43('0x41')]=_['merge'](_0x139441[_0x3b43('0x41')],{'$or':_[_0x3b43('0x35')](_0xaf6a5a,function(_0x83cfad){if(_0x83cfad[_0x3b43('0x32')]!==_0x3b43('0x44')){var _0x4c9057={};_0x4c9057[_0x83cfad[_0x3b43('0x2e')]]={'$like':'%'+_0x5f0668[_0x3b43('0x37')][_0x3b43('0x43')]+'%'};return _0x4c9057;}})});}_0x139441=_[_0x3b43('0x45')]({},_0x139441,_0x5f0668[_0x3b43('0x46')]);var _0x226386={'where':_0x139441[_0x3b43('0x41')]};return db[_0x3b43('0x30')][_0x3b43('0x23')](_0x226386)[_0x3b43('0x29')](function(_0x588b7a){_0x89f6f5[_0x3b43('0x23')]=_0x588b7a;if(_0x5f0668[_0x3b43('0x37')][_0x3b43('0x47')]){_0x139441[_0x3b43('0x48')]=[{'all':!![]}];}return db[_0x3b43('0x30')][_0x3b43('0x49')](_0x139441);})['then'](function(_0x53715d){_0x89f6f5[_0x3b43('0x4a')]=_0x53715d;return _0x89f6f5;})[_0x3b43('0x29')](respondWithFilteredResult(_0x5a1343,_0x139441))[_0x3b43('0x4b')](handleError(_0x5a1343,null));};exports[_0x3b43('0x4c')]=function(_0xe109fe,_0x4f470b){var _0x317595={'raw':!![],'where':{'id':_0xe109fe[_0x3b43('0x4d')]['id']}},_0x13dd3c={};_0x13dd3c[_0x3b43('0x34')]=_['keys'](db[_0x3b43('0x30')]['rawAttributes']);_0x13dd3c[_0x3b43('0x37')]=_[_0x3b43('0x36')](_0xe109fe[_0x3b43('0x37')]);_0x13dd3c['filters']=_[_0x3b43('0x39')](_0x13dd3c[_0x3b43('0x34')],_0x13dd3c[_0x3b43('0x37')]);_0x317595['attributes']=_[_0x3b43('0x39')](_0x13dd3c[_0x3b43('0x34')],qs[_0x3b43('0x3a')](_0xe109fe[_0x3b43('0x37')][_0x3b43('0x3a')]));_0x317595[_0x3b43('0x3b')]=_0x317595[_0x3b43('0x3b')]['length']?_0x317595['attributes']:_0x13dd3c[_0x3b43('0x34')];if(_0xe109fe[_0x3b43('0x37')][_0x3b43('0x47')]){_0x317595[_0x3b43('0x48')]=[{'all':!![]}];}_0x317595=_[_0x3b43('0x45')]({},_0x317595,_0xe109fe[_0x3b43('0x46')]);return db[_0x3b43('0x30')][_0x3b43('0x4e')](_0x317595)[_0x3b43('0x29')](handleEntityNotFound(_0x4f470b,null))['then'](respondWithResult(_0x4f470b,null))[_0x3b43('0x4b')](handleError(_0x4f470b,null));};exports[_0x3b43('0x4f')]=function(_0x1fe98c,_0xe08e2f){return db[_0x3b43('0x30')][_0x3b43('0x4f')](_0x1fe98c[_0x3b43('0x50')],{})[_0x3b43('0x29')](function(_0x74b9f6){var _0x5a3652=_0x1fe98c[_0x3b43('0x51')][_0x3b43('0x2a')]({'plain':!![]});if(!_0x5a3652)throw new Error(_0x3b43('0x52'));if(_0x5a3652['role']===_0x3b43('0x51')){var _0xe2de9d=_0x74b9f6[_0x3b43('0x2a')]({'plain':!![]});var _0x3ec4ba=_0x3b43('0x53');return db[_0x3b43('0x54')]['find']({'where':{'name':_0x3ec4ba,'userProfileId':_0x5a3652[_0x3b43('0x55')]},'raw':!![]})[_0x3b43('0x29')](function(_0x15a455){if(_0x15a455&&_0x15a455[_0x3b43('0x56')]===0x0){return db['UserProfileResource'][_0x3b43('0x4f')]({'name':_0xe2de9d[_0x3b43('0x2e')],'resourceId':_0xe2de9d['id'],'type':_0x15a455[_0x3b43('0x2e')],'sectionId':_0x15a455['id']},{})['then'](function(){return _0x74b9f6;});}else{return _0x74b9f6;}})[_0x3b43('0x4b')](function(_0x35d082){logger['error'](_0x3b43('0x57'),_0x35d082);throw _0x35d082;});}return _0x74b9f6;})['then'](respondWithResult(_0xe08e2f,0xc9))[_0x3b43('0x4b')](handleError(_0xe08e2f,null));};exports['update']=function(_0x46c625,_0x49c158){if(_0x46c625[_0x3b43('0x50')]['id']){delete _0x46c625[_0x3b43('0x50')]['id'];}return db[_0x3b43('0x30')][_0x3b43('0x4e')]({'where':{'id':_0x46c625[_0x3b43('0x4d')]['id']}})[_0x3b43('0x29')](handleEntityNotFound(_0x49c158,null))[_0x3b43('0x29')](saveUpdates(_0x46c625[_0x3b43('0x50')],null))['then'](respondWithResult(_0x49c158,null))[_0x3b43('0x4b')](handleError(_0x49c158,null));};exports[_0x3b43('0x28')]=function(_0x122fd1,_0x3689a1){return db[_0x3b43('0x30')][_0x3b43('0x4e')]({'where':{'id':_0x122fd1[_0x3b43('0x4d')]['id']}})[_0x3b43('0x29')](handleEntityNotFound(_0x3689a1,null))[_0x3b43('0x29')](removeEntity(_0x3689a1,null))[_0x3b43('0x4b')](handleError(_0x3689a1,null));};exports[_0x3b43('0x58')]=function(_0x394000,_0x510c4e){return db['MailQueue'][_0x3b43('0x58')]()[_0x3b43('0x29')](respondWithResult(_0x510c4e,null))[_0x3b43('0x4b')](handleError(_0x510c4e,null));};exports[_0x3b43('0x59')]=function(_0x20bfa,_0x380b29,_0x101e4f){var _0x158ecf={'raw':!![],'where':{}},_0x27ca11={},_0xba88bf;return db[_0x3b43('0x30')][_0x3b43('0x5a')]({'where':{'id':_0x20bfa[_0x3b43('0x4d')]['id']}})[_0x3b43('0x29')](handleEntityNotFound(_0x380b29,null))[_0x3b43('0x29')](function(_0x4ba41a){if(_0x4ba41a){_0xba88bf=_0x4ba41a[_0x3b43('0x2a')]({'plain':!![]});_0x27ca11[_0x3b43('0x34')]=_[_0x3b43('0x36')](db[_0x3b43('0x5b')][_0x3b43('0x31')]);_0x27ca11[_0x3b43('0x37')]=_[_0x3b43('0x36')](_0x20bfa[_0x3b43('0x37')]);_0x27ca11[_0x3b43('0x38')]=_['intersection'](_0x27ca11['model'],_0x27ca11[_0x3b43('0x37')]);_0x158ecf[_0x3b43('0x3b')]=_['intersection'](_0x27ca11[_0x3b43('0x34')],qs[_0x3b43('0x3a')](_0x20bfa['query'][_0x3b43('0x3a')]));_0x158ecf[_0x3b43('0x3b')]=_0x158ecf['attributes'][_0x3b43('0x3c')]?_0x158ecf[_0x3b43('0x3b')]:_0x27ca11[_0x3b43('0x34')];if(!_0x20bfa[_0x3b43('0x37')]['hasOwnProperty'](_0x3b43('0x3e'))){_0x158ecf[_0x3b43('0x21')]=qs[_0x3b43('0x21')](_0x20bfa['query'][_0x3b43('0x21')]);_0x158ecf[_0x3b43('0x20')]=qs[_0x3b43('0x20')](_0x20bfa[_0x3b43('0x37')][_0x3b43('0x20')]);}_0x158ecf[_0x3b43('0x3f')]=qs[_0x3b43('0x40')](_0x20bfa[_0x3b43('0x37')]['sort']);_0x158ecf[_0x3b43('0x41')]=qs[_0x3b43('0x38')](_[_0x3b43('0x42')](_0x20bfa['query'],_0x27ca11['filters']));_0x158ecf['where']['MailQueueId']=_0x4ba41a['id'];if(_0x20bfa['query'][_0x3b43('0x43')]){_0x158ecf[_0x3b43('0x41')]=_[_0x3b43('0x45')](_0x158ecf[_0x3b43('0x41')],{'$or':_[_0x3b43('0x35')](_0x158ecf['attributes'],function(_0x5f1828){var _0x317c03={};_0x317c03[_0x5f1828]={'$like':'%'+_0x20bfa[_0x3b43('0x37')][_0x3b43('0x43')]+'%'};return _0x317c03;})});}_0x158ecf=_[_0x3b43('0x45')]({},_0x158ecf,_0x20bfa[_0x3b43('0x46')]);return db['UserMailQueue'][_0x3b43('0x49')](_0x158ecf);}})['then'](function(_0x27c238){if(_0x27c238){return db[_0x3b43('0x5c')]['findAndCountAll']({'where':{'id':_[_0x3b43('0x35')](_0x27c238,'UserId'),'role':'agent'},'attributes':['id',_0x3b43('0x2e'),_0x3b43('0x5d'),_0x3b43('0x5e'),_0x3b43('0x5f')]});}})['then'](function(_0x4582bb){if(_0x4582bb){return{'count':_0x4582bb[_0x3b43('0x23')],'rows':_['map'](_0x4582bb[_0x3b43('0x4a')],function(_0xf7075f){return{'membername':_0xf7075f[_0x3b43('0x2e')],'UserId':_0xf7075f['id'],'queue_name':_0xba88bf['name'],'MailQueueId':_0xba88bf['id'],'interface':util['format'](_0x3b43('0x60'),_0x3b43('0x61'),_0xf7075f[_0x3b43('0x2e')]),'penalty':0x0,'paused':_0xf7075f['mailPause'],'createdAt':_0xf7075f[_0x3b43('0x5f')],'updatedAt':_0xf7075f[_0x3b43('0x5e')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x380b29,_0x158ecf))[_0x3b43('0x4b')](handleError(_0x380b29,null));};exports[_0x3b43('0x62')]=function(_0x12519c,_0x333fe0,_0xe99a70){var _0x10eb5a={};var _0x4f6c4f={};var _0x4446b4;var _0x16b6b8;return db[_0x3b43('0x30')][_0x3b43('0x5a')]({'where':{'id':_0x12519c[_0x3b43('0x4d')]['id']}})[_0x3b43('0x29')](handleEntityNotFound(_0x333fe0,null))[_0x3b43('0x29')](function(_0x2100c3){if(_0x2100c3){_0x4446b4=_0x2100c3;_0x4f6c4f[_0x3b43('0x34')]=_['keys'](db[_0x3b43('0x63')][_0x3b43('0x31')]);_0x4f6c4f[_0x3b43('0x37')]=_[_0x3b43('0x36')](_0x12519c[_0x3b43('0x37')]);_0x4f6c4f[_0x3b43('0x38')]=_[_0x3b43('0x39')](_0x4f6c4f[_0x3b43('0x34')],_0x4f6c4f[_0x3b43('0x37')]);_0x10eb5a[_0x3b43('0x3b')]=_[_0x3b43('0x39')](_0x4f6c4f['model'],qs['fields'](_0x12519c[_0x3b43('0x37')]['fields']));_0x10eb5a['attributes']=_0x10eb5a[_0x3b43('0x3b')][_0x3b43('0x3c')]?_0x10eb5a[_0x3b43('0x3b')]:_0x4f6c4f['model'];_0x10eb5a[_0x3b43('0x3f')]=qs['sort'](_0x12519c[_0x3b43('0x37')]['sort']);_0x10eb5a[_0x3b43('0x41')]=qs[_0x3b43('0x38')](_[_0x3b43('0x42')](_0x12519c['query'],_0x4f6c4f[_0x3b43('0x38')]));if(_0x12519c['query']['filter']){_0x10eb5a[_0x3b43('0x41')]=_['merge'](_0x10eb5a['where'],{'$or':_[_0x3b43('0x35')](_0x10eb5a[_0x3b43('0x3b')],function(_0x71face){var _0x689761={};_0x689761[_0x71face]={'$like':'%'+_0x12519c[_0x3b43('0x37')][_0x3b43('0x43')]+'%'};return _0x689761;})});}_0x10eb5a=_['merge']({},_0x10eb5a,_0x12519c[_0x3b43('0x46')]);return _0x4446b4[_0x3b43('0x62')](_0x10eb5a);}})[_0x3b43('0x29')](function(_0x17c145){if(_0x17c145){_0x16b6b8=_0x17c145[_0x3b43('0x3c')];if(!_0x12519c[_0x3b43('0x37')]['hasOwnProperty'](_0x3b43('0x3e'))){_0x10eb5a[_0x3b43('0x21')]=qs[_0x3b43('0x21')](_0x12519c[_0x3b43('0x37')][_0x3b43('0x21')]);_0x10eb5a[_0x3b43('0x20')]=qs['offset'](_0x12519c[_0x3b43('0x37')][_0x3b43('0x20')]);}return _0x4446b4[_0x3b43('0x62')](_0x10eb5a);}})[_0x3b43('0x29')](function(_0x2fe639){if(_0x2fe639){return _0x2fe639?{'count':_0x16b6b8,'rows':_0x2fe639}:null;}})[_0x3b43('0x29')](respondWithResult(_0x333fe0,null))[_0x3b43('0x4b')](handleError(_0x333fe0,null));};exports['addTeams']=function(_0x581846,_0x54fa10,_0x10e734){var _0x1cbc80=_0x581846[_0x3b43('0x50')][_0x3b43('0x64')];return db['Team'][_0x3b43('0x49')]({'where':{'id':_0x1cbc80},'attributes':['id'],'include':[{'model':db['User'],'as':_0x3b43('0x65'),'attributes':['id',_0x3b43('0x2e'),_0x3b43('0x66'),_0x3b43('0x67'),_0x3b43('0x68')],'raw':!![]}]})['then'](function(_0x4af98b){if(_0x4af98b){var _0x4dd8c3=_[_0x3b43('0x69')](_0x4af98b,function(_0xb07325){var _0x449a25=_0xb07325[_0x3b43('0x2a')]({'plain':!![]});return _0x449a25['Agents'];});return db['MailQueue']['find']({'where':{'id':_0x581846['params']['id']}})[_0x3b43('0x29')](function(_0x52b0b3){return db[_0x3b43('0x6a')]['transaction'](function(_0x474c12){return _0x52b0b3[_0x3b43('0x6b')](_0x1cbc80,{'transaction':_0x474c12})[_0x3b43('0x29')](function(){return BPromise[_0x3b43('0x6c')](_0x4dd8c3,function(_0x34f3e0){return db[_0x3b43('0x5b')][_0x3b43('0x6d')]({'where':{'UserId':_0x34f3e0['id'],'MailQueueId':_0x581846[_0x3b43('0x4d')]['id']},'transaction':_0x474c12});});})[_0x3b43('0x29')](function(){_0x4dd8c3['forEach'](function(_0x1528ed){socket['emit'](_0x3b43('0x6e'),{'UserId':_0x1528ed['id'],'MailQueueId':_0x52b0b3['id']});});});});});}})[_0x3b43('0x29')](respondWithStatusCode(_0x54fa10,null))[_0x3b43('0x4b')](handleError(_0x54fa10,null));};exports[_0x3b43('0x6f')]=function(_0x5aaae6,_0x39a19a,_0x22b6b4){return db[_0x3b43('0x63')][_0x3b43('0x49')]({'where':{'id':_0x5aaae6['query'][_0x3b43('0x64')]},'attributes':['id'],'include':[{'model':db['User'],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0x3b43('0x29')](handleEntityNotFound(_0x39a19a,null))[_0x3b43('0x29')](function(_0x7ea51b){var _0x3cff80=_[_0x3b43('0x35')](_0x7ea51b,'id');var _0x58d760=[];var _0x5c4381=[];var _0x49676b=squel[_0x3b43('0x70')]();_0x49676b[_0x3b43('0x71')]('tq.TeamId')['from'](_0x3b43('0x72'),'tq')[_0x3b43('0x73')](_0x3b43('0x74'),'ut',_0x3b43('0x75'))[_0x3b43('0x41')](_0x3b43('0x76'),_0x5aaae6[_0x3b43('0x4d')]['id']);for(var _0x2065d3=0x0;_0x2065d3<_0x7ea51b[_0x3b43('0x3c')];_0x2065d3+=0x1){let _0x535a91=_0x7ea51b[_0x2065d3];for(var _0x8430c8=0x0;_0x8430c8<_0x535a91['Agents']['length'];_0x8430c8+=0x1){let _0x27ee48=_0x535a91[_0x3b43('0x65')][_0x8430c8];var _0x595b19=_0x49676b[_0x3b43('0x77')]();_0x595b19['where'](_0x3b43('0x78'),_0x27ee48['id']);_0x5c4381['push'](db[_0x3b43('0x6a')][_0x3b43('0x37')](_0x595b19['toString'](),{'type':db[_0x3b43('0x6a')]['QueryTypes'][_0x3b43('0x79')]})[_0x3b43('0x29')](function(_0x13a11e){if(_0x13a11e[_0x3b43('0x3c')]===0x1){return _0x27ee48['id'];}else{var _0x451938=_[_0x3b43('0x7a')](_[_0x3b43('0x35')](_0x13a11e,_0x3b43('0x7b')),function(_0x4c082e){return _[_0x3b43('0x7c')](_0x3cff80,_0x4c082e);});if(_0x451938){return _0x27ee48['id'];}}}));}}return BPromise[_0x3b43('0x7d')](_0x5c4381)[_0x3b43('0x29')](function(_0x19fccb){_0x58d760=_(_0x58d760)['union'](_0x19fccb)[_0x3b43('0x7e')]()[_0x3b43('0x7f')]();return db[_0x3b43('0x30')][_0x3b43('0x4e')]({'where':{'id':_0x5aaae6['params']['id']}})[_0x3b43('0x29')](function(_0x471d98){return db[_0x3b43('0x6a')][_0x3b43('0x80')](function(_0x54c3a3){return _0x471d98[_0x3b43('0x6f')](_0x5aaae6['query']['ids'],{'transaction':_0x54c3a3})[_0x3b43('0x29')](function(){if(!_[_0x3b43('0x81')](_0x58d760)){return _0x471d98['removeAgents'](_0x58d760,{'transaction':_0x54c3a3});}})['then'](function(){_0x58d760['forEach'](function(_0x21bf5c){socket[_0x3b43('0x82')](_0x3b43('0x83'),{'UserId':_0x21bf5c,'MailQueueId':_0x471d98['id']});});});});});});})[_0x3b43('0x29')](respondWithStatusCode(_0x39a19a,null))[_0x3b43('0x4b')](handleError(_0x39a19a,null));};exports[_0x3b43('0x84')]=function(_0x3f2f91,_0x31fd79,_0xba9535){return db[_0x3b43('0x30')][_0x3b43('0x4e')]({'where':{'id':_0x3f2f91['params']['id']}})['then'](handleEntityNotFound(_0x31fd79,null))['then'](function(_0x48bf11){if(_0x48bf11){return _0x48bf11[_0x3b43('0x84')](_0x3f2f91[_0x3b43('0x50')][_0x3b43('0x64')],_[_0x3b43('0x85')](_0x3f2f91['body'],[_0x3b43('0x64'),'id'])||{})[_0x3b43('0x86')](function(_0x2900ba){for(var _0x4dc4a7=0x0;_0x4dc4a7<_0x3f2f91['body']['ids']['length'];_0x4dc4a7+=0x1){socket[_0x3b43('0x82')](_0x3b43('0x6e'),{'UserId':Number(_0x3f2f91[_0x3b43('0x50')]['ids'][_0x4dc4a7]),'MailQueueId':Number(_0x3f2f91[_0x3b43('0x4d')]['id'])});}return _0x2900ba;});}})[_0x3b43('0x29')](respondWithResult(_0x31fd79,null))[_0x3b43('0x4b')](handleError(_0x31fd79,null));};exports[_0x3b43('0x87')]=function(_0x1da09f,_0x2941bb,_0xf1c037){return db[_0x3b43('0x30')]['find']({'where':{'id':_0x1da09f[_0x3b43('0x4d')]['id']}})[_0x3b43('0x29')](handleEntityNotFound(_0x2941bb,null))[_0x3b43('0x29')](function(_0x3e875d){if(_0x3e875d){return _0x3e875d['removeAgents'](_0x1da09f[_0x3b43('0x37')][_0x3b43('0x64')])[_0x3b43('0x29')](function(){if(_[_0x3b43('0x88')](_0x1da09f[_0x3b43('0x37')]['ids'])){for(var _0x24d59f=0x0;_0x24d59f<_0x1da09f[_0x3b43('0x37')][_0x3b43('0x64')][_0x3b43('0x3c')];_0x24d59f+=0x1){socket[_0x3b43('0x82')](_0x3b43('0x83'),{'UserId':Number(_0x1da09f['query'][_0x3b43('0x64')][_0x24d59f]),'MailQueueId':Number(_0x1da09f['params']['id'])});}}else{socket['emit']('userMailQueue:remove',{'UserId':Number(_0x1da09f[_0x3b43('0x37')][_0x3b43('0x64')]),'MailQueueId':Number(_0x1da09f[_0x3b43('0x4d')]['id'])});}});}})[_0x3b43('0x29')](respondWithStatusCode(_0x2941bb,null))[_0x3b43('0x4b')](handleError(_0x2941bb,null));};exports[_0x3b43('0x89')]=function(_0x29136d,_0x4d5465,_0x2bae06){var _0x44cad8={};var _0x2fb413={};var _0x3ee558;var _0x217d0b;return db[_0x3b43('0x30')]['findOne']({'where':{'id':_0x29136d[_0x3b43('0x4d')]['id']}})['then'](handleEntityNotFound(_0x4d5465,null))[_0x3b43('0x29')](function(_0x79c5f5){if(_0x79c5f5){_0x3ee558=_0x79c5f5;_0x2fb413['model']=_[_0x3b43('0x36')](db[_0x3b43('0x5c')][_0x3b43('0x31')]);_0x2fb413['query']=_[_0x3b43('0x36')](_0x29136d[_0x3b43('0x37')]);_0x2fb413[_0x3b43('0x38')]=_[_0x3b43('0x39')](_0x2fb413[_0x3b43('0x34')],_0x2fb413[_0x3b43('0x37')]);_0x44cad8[_0x3b43('0x3b')]=_[_0x3b43('0x39')](_0x2fb413[_0x3b43('0x34')],qs[_0x3b43('0x3a')](_0x29136d[_0x3b43('0x37')][_0x3b43('0x3a')]));_0x44cad8[_0x3b43('0x3b')]=_0x44cad8[_0x3b43('0x3b')][_0x3b43('0x3c')]?_0x44cad8[_0x3b43('0x3b')]:_0x2fb413[_0x3b43('0x34')];_0x44cad8[_0x3b43('0x3f')]=qs[_0x3b43('0x40')](_0x29136d[_0x3b43('0x37')][_0x3b43('0x40')]);_0x44cad8[_0x3b43('0x41')]=qs[_0x3b43('0x38')](_[_0x3b43('0x42')](_0x29136d[_0x3b43('0x37')],_0x2fb413[_0x3b43('0x38')]));if(_0x29136d[_0x3b43('0x37')]['filter']){_0x44cad8['where']=_[_0x3b43('0x45')](_0x44cad8['where'],{'$or':_[_0x3b43('0x35')](_0x44cad8[_0x3b43('0x3b')],function(_0x23b116){var _0x4ad2f0={};_0x4ad2f0[_0x23b116]={'$like':'%'+_0x29136d[_0x3b43('0x37')][_0x3b43('0x43')]+'%'};return _0x4ad2f0;})});}_0x44cad8=_['merge']({},_0x44cad8,_0x29136d[_0x3b43('0x46')]);return _0x3ee558['getAgents'](_0x44cad8);}})[_0x3b43('0x29')](function(_0x188ae7){if(_0x188ae7){_0x217d0b=_0x188ae7['length'];if(!_0x29136d[_0x3b43('0x37')][_0x3b43('0x3d')](_0x3b43('0x3e'))){_0x44cad8[_0x3b43('0x21')]=qs[_0x3b43('0x21')](_0x29136d[_0x3b43('0x37')]['limit']);_0x44cad8[_0x3b43('0x20')]=qs[_0x3b43('0x20')](_0x29136d['query'][_0x3b43('0x20')]);}return _0x3ee558[_0x3b43('0x89')](_0x44cad8);}})['then'](function(_0x4f98c3){if(_0x4f98c3){return _0x4f98c3?{'count':_0x217d0b,'rows':_0x4f98c3}:null;}})[_0x3b43('0x29')](respondWithResult(_0x4d5465,null))['catch'](handleError(_0x4d5465,null));};
\ No newline at end of file
+var _0x82ba=['MailQueueId','User','findAndCountAll','UserId','mailPause','createdAt','format','%s/%s','SIP','updatedAt','Team','getTeams','addTeams','ids','Agents','online','voicePause','interface','flatMap','sequelize','transaction','each','UserMailQueue','findOrCreate','emit','userMailQueue:save','removeTeams','field','tq.TeamId','team_has_mail_queues','ut.TeamId\x20=\x20tq.TeamId','MailQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT','includes','all','union','compact','isEmpty','userMailQueue:remove','addAgents','omit','spread','removeAgents','isArray','getAgents','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','squel','crypto','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./mailQueue.socket','register','sendStatus','status','end','undefined','limit','offset','count','set','json','apply','reject','update','then','destroy','get','UserProfileResource','error','name','send','index','map','MailQueue','rawAttributes','type','key','keys','query','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','VIRTUAL','merge','options','include','findAll','rows','catch','show','params','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','findOne'];(function(_0x49b76a,_0x117359){var _0x5a1bf0=function(_0x5c6e5e){while(--_0x5c6e5e){_0x49b76a['push'](_0x49b76a['shift']());}};_0x5a1bf0(++_0x117359);}(_0x82ba,0x1d9));var _0xa82b=function(_0x1b4d8b,_0x371bf5){_0x1b4d8b=_0x1b4d8b-0x0;var _0x5053a8=_0x82ba[_0x1b4d8b];return _0x5053a8;};'use strict';var emlformat=require(_0xa82b('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xa82b('0x1'));var jsonpatch=require(_0xa82b('0x2'));var rp=require(_0xa82b('0x3'));var moment=require(_0xa82b('0x4'));var BPromise=require(_0xa82b('0x5'));var Mustache=require(_0xa82b('0x6'));var util=require('util');var path=require(_0xa82b('0x7'));var sox=require(_0xa82b('0x8'));var csv=require(_0xa82b('0x9'));var ejs=require(_0xa82b('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xa82b('0xb'));var crypto=require(_0xa82b('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xa82b('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xa82b('0xe'));var authService=require(_0xa82b('0xf'));var qs=require(_0xa82b('0x10'));var as=require(_0xa82b('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xa82b('0x12'))(_0xa82b('0x13'));var utils=require(_0xa82b('0x14'));var config=require(_0xa82b('0x15'));var licenseUtil=require(_0xa82b('0x16'));var db=require(_0xa82b('0x17'))['db'];config[_0xa82b('0x18')]=_[_0xa82b('0x19')](config[_0xa82b('0x18')],{'host':_0xa82b('0x1a'),'port':0x18eb});var socket=require(_0xa82b('0x1b'))(new Redis(config[_0xa82b('0x18')]));require(_0xa82b('0x1c'))[_0xa82b('0x1d')](socket);function respondWithStatusCode(_0x13d13a,_0x9d7919){_0x9d7919=_0x9d7919||0xcc;return function(_0x488ffd){if(_0x488ffd){return _0x13d13a[_0xa82b('0x1e')](_0x9d7919);}return _0x13d13a[_0xa82b('0x1f')](_0x9d7919)[_0xa82b('0x20')]();};}function respondWithResult(_0x402112,_0x19428b){_0x19428b=_0x19428b||0xc8;return function(_0x57928b){if(_0x57928b){return _0x402112[_0xa82b('0x1f')](_0x19428b)['json'](_0x57928b);}};}function respondWithFilteredResult(_0x275733,_0x4d00cc){return function(_0x117ef1){if(_0x117ef1){var _0x36ae80=typeof _0x4d00cc['offset']===_0xa82b('0x21')&&typeof _0x4d00cc[_0xa82b('0x22')]==='undefined';var _0x5168b1=_0x117ef1['count'];var _0x353bdc=_0x36ae80?0x0:_0x4d00cc[_0xa82b('0x23')];var _0x465e54=_0x36ae80?_0x117ef1[_0xa82b('0x24')]:_0x4d00cc[_0xa82b('0x23')]+_0x4d00cc['limit'];var _0x5c1a3d;if(_0x465e54>=_0x5168b1){_0x465e54=_0x5168b1;_0x5c1a3d=0xc8;}else{_0x5c1a3d=0xce;}_0x275733[_0xa82b('0x1f')](_0x5c1a3d);return _0x275733[_0xa82b('0x25')]('Content-Range',_0x353bdc+'-'+_0x465e54+'/'+_0x5168b1)[_0xa82b('0x26')](_0x117ef1);}return null;};}function patchUpdates(_0x5edead){return function(_0x28edd7){try{jsonpatch[_0xa82b('0x27')](_0x28edd7,_0x5edead,!![]);}catch(_0x1f4017){return BPromise[_0xa82b('0x28')](_0x1f4017);}return _0x28edd7['save']();};}function saveUpdates(_0x1a56aa,_0x4270ca){return function(_0x237610){if(_0x237610){return _0x237610[_0xa82b('0x29')](_0x1a56aa)[_0xa82b('0x2a')](function(_0x3660cb){return _0x3660cb;});}return null;};}function removeEntity(_0xcde7cd,_0x552eee){return function(_0x497f21){if(_0x497f21){return _0x497f21[_0xa82b('0x2b')]()[_0xa82b('0x2a')](function(){var _0x44e39a=_0x497f21[_0xa82b('0x2c')]({'plain':!![]});var _0x367359='MailQueues';return db[_0xa82b('0x2d')][_0xa82b('0x2b')]({'where':{'type':_0x367359,'resourceId':_0x44e39a['id']}})[_0xa82b('0x2a')](function(){return _0x497f21;});})[_0xa82b('0x2a')](function(){_0xcde7cd[_0xa82b('0x1f')](0xcc)[_0xa82b('0x20')]();});}};}function handleEntityNotFound(_0x26f45c,_0x51ad4c){return function(_0x5000e5){if(!_0x5000e5){_0x26f45c[_0xa82b('0x1e')](0x194);}return _0x5000e5;};}function handleError(_0x1887e6,_0x29d22d){_0x29d22d=_0x29d22d||0x1f4;return function(_0x582f4a){logger[_0xa82b('0x2e')](_0x582f4a['stack']);if(_0x582f4a[_0xa82b('0x2f')]){delete _0x582f4a[_0xa82b('0x2f')];}_0x1887e6[_0xa82b('0x1f')](_0x29d22d)[_0xa82b('0x30')](_0x582f4a);};}exports[_0xa82b('0x31')]=function(_0x5ec1a0,_0x516e77){var _0x1ae935={},_0x5962c3={},_0x38a4fd={'count':0x0,'rows':[]};var _0x15f417=_[_0xa82b('0x32')](db[_0xa82b('0x33')][_0xa82b('0x34')],function(_0x13e5dd){return{'name':_0x13e5dd['fieldName'],'type':_0x13e5dd[_0xa82b('0x35')][_0xa82b('0x36')]};});_0x5962c3['model']=_[_0xa82b('0x32')](_0x15f417,_0xa82b('0x2f'));_0x5962c3['query']=_[_0xa82b('0x37')](_0x5ec1a0[_0xa82b('0x38')]);_0x5962c3[_0xa82b('0x39')]=_[_0xa82b('0x3a')](_0x5962c3['model'],_0x5962c3[_0xa82b('0x38')]);_0x1ae935[_0xa82b('0x3b')]=_[_0xa82b('0x3a')](_0x5962c3[_0xa82b('0x3c')],qs[_0xa82b('0x3d')](_0x5ec1a0[_0xa82b('0x38')]['fields']));_0x1ae935[_0xa82b('0x3b')]=_0x1ae935[_0xa82b('0x3b')][_0xa82b('0x3e')]?_0x1ae935[_0xa82b('0x3b')]:_0x5962c3[_0xa82b('0x3c')];if(!_0x5ec1a0[_0xa82b('0x38')][_0xa82b('0x3f')](_0xa82b('0x40'))){_0x1ae935[_0xa82b('0x22')]=qs[_0xa82b('0x22')](_0x5ec1a0[_0xa82b('0x38')][_0xa82b('0x22')]);_0x1ae935[_0xa82b('0x23')]=qs[_0xa82b('0x23')](_0x5ec1a0['query'][_0xa82b('0x23')]);}_0x1ae935[_0xa82b('0x41')]=qs[_0xa82b('0x42')](_0x5ec1a0['query'][_0xa82b('0x42')]);_0x1ae935['where']=qs[_0xa82b('0x39')](_[_0xa82b('0x43')](_0x5ec1a0['query'],_0x5962c3[_0xa82b('0x39')]),_0x15f417);if(_0x5ec1a0[_0xa82b('0x38')][_0xa82b('0x44')]){_0x1ae935[_0xa82b('0x45')]=_['merge'](_0x1ae935[_0xa82b('0x45')],{'$or':_[_0xa82b('0x32')](_0x15f417,function(_0xf6ed22){if(_0xf6ed22[_0xa82b('0x35')]!==_0xa82b('0x46')){var _0x58aa87={};_0x58aa87[_0xf6ed22[_0xa82b('0x2f')]]={'$like':'%'+_0x5ec1a0['query']['filter']+'%'};return _0x58aa87;}})});}_0x1ae935=_[_0xa82b('0x47')]({},_0x1ae935,_0x5ec1a0[_0xa82b('0x48')]);var _0x2530a7={'where':_0x1ae935['where']};return db[_0xa82b('0x33')][_0xa82b('0x24')](_0x2530a7)[_0xa82b('0x2a')](function(_0xcc0ff1){_0x38a4fd[_0xa82b('0x24')]=_0xcc0ff1;if(_0x5ec1a0['query']['includeAll']){_0x1ae935[_0xa82b('0x49')]=[{'all':!![]}];}return db[_0xa82b('0x33')][_0xa82b('0x4a')](_0x1ae935);})[_0xa82b('0x2a')](function(_0x527be0){_0x38a4fd[_0xa82b('0x4b')]=_0x527be0;return _0x38a4fd;})[_0xa82b('0x2a')](respondWithFilteredResult(_0x516e77,_0x1ae935))[_0xa82b('0x4c')](handleError(_0x516e77,null));};exports[_0xa82b('0x4d')]=function(_0x40f19d,_0xbdc54a){var _0x3d14f1={'raw':!![],'where':{'id':_0x40f19d[_0xa82b('0x4e')]['id']}},_0x291cc={};_0x291cc[_0xa82b('0x3c')]=_[_0xa82b('0x37')](db[_0xa82b('0x33')][_0xa82b('0x34')]);_0x291cc[_0xa82b('0x38')]=_[_0xa82b('0x37')](_0x40f19d[_0xa82b('0x38')]);_0x291cc['filters']=_[_0xa82b('0x3a')](_0x291cc[_0xa82b('0x3c')],_0x291cc['query']);_0x3d14f1[_0xa82b('0x3b')]=_[_0xa82b('0x3a')](_0x291cc[_0xa82b('0x3c')],qs[_0xa82b('0x3d')](_0x40f19d[_0xa82b('0x38')][_0xa82b('0x3d')]));_0x3d14f1['attributes']=_0x3d14f1[_0xa82b('0x3b')]['length']?_0x3d14f1['attributes']:_0x291cc[_0xa82b('0x3c')];if(_0x40f19d['query']['includeAll']){_0x3d14f1[_0xa82b('0x49')]=[{'all':!![]}];}_0x3d14f1=_[_0xa82b('0x47')]({},_0x3d14f1,_0x40f19d['options']);return db[_0xa82b('0x33')][_0xa82b('0x4f')](_0x3d14f1)[_0xa82b('0x2a')](handleEntityNotFound(_0xbdc54a,null))[_0xa82b('0x2a')](respondWithResult(_0xbdc54a,null))[_0xa82b('0x4c')](handleError(_0xbdc54a,null));};exports[_0xa82b('0x50')]=function(_0x1ff348,_0x46f6a4){return db['MailQueue']['create'](_0x1ff348[_0xa82b('0x51')],{})['then'](function(_0x21e997){var _0x1b72d3=_0x1ff348[_0xa82b('0x52')]['get']({'plain':!![]});if(!_0x1b72d3)throw new Error(_0xa82b('0x53'));if(_0x1b72d3[_0xa82b('0x54')]==='user'){var _0x4b7991=_0x21e997[_0xa82b('0x2c')]({'plain':!![]});var _0x1fddc9='MailQueues';return db[_0xa82b('0x55')][_0xa82b('0x4f')]({'where':{'name':_0x1fddc9,'userProfileId':_0x1b72d3[_0xa82b('0x56')]},'raw':!![]})['then'](function(_0x398eb3){if(_0x398eb3&&_0x398eb3['autoAssociation']===0x0){return db[_0xa82b('0x2d')][_0xa82b('0x50')]({'name':_0x4b7991[_0xa82b('0x2f')],'resourceId':_0x4b7991['id'],'type':_0x398eb3['name'],'sectionId':_0x398eb3['id']},{})[_0xa82b('0x2a')](function(){return _0x21e997;});}else{return _0x21e997;}})[_0xa82b('0x4c')](function(_0x5e50cc){logger['error'](_0xa82b('0x57'),_0x5e50cc);throw _0x5e50cc;});}return _0x21e997;})[_0xa82b('0x2a')](respondWithResult(_0x46f6a4,0xc9))[_0xa82b('0x4c')](handleError(_0x46f6a4,null));};exports['update']=function(_0x5e4427,_0xe1042a){if(_0x5e4427['body']['id']){delete _0x5e4427[_0xa82b('0x51')]['id'];}return db['MailQueue'][_0xa82b('0x4f')]({'where':{'id':_0x5e4427['params']['id']}})[_0xa82b('0x2a')](handleEntityNotFound(_0xe1042a,null))[_0xa82b('0x2a')](saveUpdates(_0x5e4427[_0xa82b('0x51')],null))[_0xa82b('0x2a')](respondWithResult(_0xe1042a,null))[_0xa82b('0x4c')](handleError(_0xe1042a,null));};exports[_0xa82b('0x2b')]=function(_0x508f81,_0x397883){return db[_0xa82b('0x33')][_0xa82b('0x4f')]({'where':{'id':_0x508f81['params']['id']}})[_0xa82b('0x2a')](handleEntityNotFound(_0x397883,null))[_0xa82b('0x2a')](removeEntity(_0x397883,null))[_0xa82b('0x4c')](handleError(_0x397883,null));};exports[_0xa82b('0x58')]=function(_0x39fc8e,_0x386f60){return db['MailQueue'][_0xa82b('0x58')]()['then'](respondWithResult(_0x386f60,null))[_0xa82b('0x4c')](handleError(_0x386f60,null));};exports[_0xa82b('0x59')]=function(_0xee24ce,_0x350be9,_0x113681){var _0x4ed177={'raw':!![],'where':{}},_0x2f66dc={},_0x5085a1;return db[_0xa82b('0x33')][_0xa82b('0x5a')]({'where':{'id':_0xee24ce[_0xa82b('0x4e')]['id']}})['then'](handleEntityNotFound(_0x350be9,null))[_0xa82b('0x2a')](function(_0x9a1a61){if(_0x9a1a61){_0x5085a1=_0x9a1a61[_0xa82b('0x2c')]({'plain':!![]});_0x2f66dc['model']=_[_0xa82b('0x37')](db['UserMailQueue'][_0xa82b('0x34')]);_0x2f66dc[_0xa82b('0x38')]=_[_0xa82b('0x37')](_0xee24ce['query']);_0x2f66dc[_0xa82b('0x39')]=_[_0xa82b('0x3a')](_0x2f66dc['model'],_0x2f66dc[_0xa82b('0x38')]);_0x4ed177[_0xa82b('0x3b')]=_[_0xa82b('0x3a')](_0x2f66dc[_0xa82b('0x3c')],qs[_0xa82b('0x3d')](_0xee24ce['query']['fields']));_0x4ed177[_0xa82b('0x3b')]=_0x4ed177[_0xa82b('0x3b')]['length']?_0x4ed177[_0xa82b('0x3b')]:_0x2f66dc[_0xa82b('0x3c')];if(!_0xee24ce[_0xa82b('0x38')]['hasOwnProperty'](_0xa82b('0x40'))){_0x4ed177[_0xa82b('0x22')]=qs[_0xa82b('0x22')](_0xee24ce['query'][_0xa82b('0x22')]);_0x4ed177[_0xa82b('0x23')]=qs[_0xa82b('0x23')](_0xee24ce[_0xa82b('0x38')]['offset']);}_0x4ed177[_0xa82b('0x41')]=qs[_0xa82b('0x42')](_0xee24ce[_0xa82b('0x38')][_0xa82b('0x42')]);_0x4ed177[_0xa82b('0x45')]=qs[_0xa82b('0x39')](_[_0xa82b('0x43')](_0xee24ce[_0xa82b('0x38')],_0x2f66dc[_0xa82b('0x39')]));_0x4ed177['where'][_0xa82b('0x5b')]=_0x9a1a61['id'];if(_0xee24ce[_0xa82b('0x38')][_0xa82b('0x44')]){_0x4ed177[_0xa82b('0x45')]=_[_0xa82b('0x47')](_0x4ed177['where'],{'$or':_[_0xa82b('0x32')](_0x4ed177[_0xa82b('0x3b')],function(_0x2e69e8){var _0x18ed60={};_0x18ed60[_0x2e69e8]={'$like':'%'+_0xee24ce[_0xa82b('0x38')]['filter']+'%'};return _0x18ed60;})});}_0x4ed177=_[_0xa82b('0x47')]({},_0x4ed177,_0xee24ce[_0xa82b('0x48')]);return db['UserMailQueue']['findAll'](_0x4ed177);}})[_0xa82b('0x2a')](function(_0x4012a8){if(_0x4012a8){return db[_0xa82b('0x5c')][_0xa82b('0x5d')]({'where':{'id':_['map'](_0x4012a8,_0xa82b('0x5e')),'role':'agent'},'attributes':['id',_0xa82b('0x2f'),_0xa82b('0x5f'),'updatedAt',_0xa82b('0x60')]});}})['then'](function(_0x5c4ad6){if(_0x5c4ad6){return{'count':_0x5c4ad6['count'],'rows':_['map'](_0x5c4ad6[_0xa82b('0x4b')],function(_0x5559d7){return{'membername':_0x5559d7[_0xa82b('0x2f')],'UserId':_0x5559d7['id'],'queue_name':_0x5085a1['name'],'MailQueueId':_0x5085a1['id'],'interface':util[_0xa82b('0x61')](_0xa82b('0x62'),_0xa82b('0x63'),_0x5559d7[_0xa82b('0x2f')]),'penalty':0x0,'paused':_0x5559d7[_0xa82b('0x5f')],'createdAt':_0x5559d7[_0xa82b('0x60')],'updatedAt':_0x5559d7[_0xa82b('0x64')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x350be9,_0x4ed177))[_0xa82b('0x4c')](handleError(_0x350be9,null));};exports['getTeams']=function(_0x52b0a0,_0x218e93,_0x1cbafd){var _0x3f8235={};var _0x7ca002={};var _0x2eed17;var _0x853212;return db[_0xa82b('0x33')]['findOne']({'where':{'id':_0x52b0a0['params']['id']}})['then'](handleEntityNotFound(_0x218e93,null))[_0xa82b('0x2a')](function(_0x42a160){if(_0x42a160){_0x2eed17=_0x42a160;_0x7ca002['model']=_[_0xa82b('0x37')](db[_0xa82b('0x65')][_0xa82b('0x34')]);_0x7ca002[_0xa82b('0x38')]=_[_0xa82b('0x37')](_0x52b0a0[_0xa82b('0x38')]);_0x7ca002[_0xa82b('0x39')]=_['intersection'](_0x7ca002['model'],_0x7ca002[_0xa82b('0x38')]);_0x3f8235[_0xa82b('0x3b')]=_[_0xa82b('0x3a')](_0x7ca002[_0xa82b('0x3c')],qs['fields'](_0x52b0a0[_0xa82b('0x38')]['fields']));_0x3f8235[_0xa82b('0x3b')]=_0x3f8235[_0xa82b('0x3b')]['length']?_0x3f8235[_0xa82b('0x3b')]:_0x7ca002['model'];_0x3f8235['order']=qs[_0xa82b('0x42')](_0x52b0a0[_0xa82b('0x38')][_0xa82b('0x42')]);_0x3f8235[_0xa82b('0x45')]=qs[_0xa82b('0x39')](_[_0xa82b('0x43')](_0x52b0a0[_0xa82b('0x38')],_0x7ca002[_0xa82b('0x39')]));if(_0x52b0a0[_0xa82b('0x38')][_0xa82b('0x44')]){_0x3f8235[_0xa82b('0x45')]=_[_0xa82b('0x47')](_0x3f8235['where'],{'$or':_[_0xa82b('0x32')](_0x3f8235['attributes'],function(_0x4c0df0){var _0x43fcba={};_0x43fcba[_0x4c0df0]={'$like':'%'+_0x52b0a0[_0xa82b('0x38')][_0xa82b('0x44')]+'%'};return _0x43fcba;})});}_0x3f8235=_[_0xa82b('0x47')]({},_0x3f8235,_0x52b0a0[_0xa82b('0x48')]);return _0x2eed17[_0xa82b('0x66')](_0x3f8235);}})[_0xa82b('0x2a')](function(_0x1f48b6){if(_0x1f48b6){_0x853212=_0x1f48b6[_0xa82b('0x3e')];if(!_0x52b0a0['query'][_0xa82b('0x3f')]('nolimit')){_0x3f8235[_0xa82b('0x22')]=qs[_0xa82b('0x22')](_0x52b0a0[_0xa82b('0x38')][_0xa82b('0x22')]);_0x3f8235[_0xa82b('0x23')]=qs['offset'](_0x52b0a0[_0xa82b('0x38')][_0xa82b('0x23')]);}return _0x2eed17[_0xa82b('0x66')](_0x3f8235);}})[_0xa82b('0x2a')](function(_0x186e47){if(_0x186e47){return _0x186e47?{'count':_0x853212,'rows':_0x186e47}:null;}})['then'](respondWithResult(_0x218e93,null))[_0xa82b('0x4c')](handleError(_0x218e93,null));};exports[_0xa82b('0x67')]=function(_0x1c12d3,_0x487e80,_0xf381af){var _0x1782bb=_0x1c12d3[_0xa82b('0x51')][_0xa82b('0x68')];return db['Team'][_0xa82b('0x4a')]({'where':{'id':_0x1782bb},'attributes':['id'],'include':[{'model':db[_0xa82b('0x5c')],'as':_0xa82b('0x69'),'attributes':['id',_0xa82b('0x2f'),_0xa82b('0x6a'),_0xa82b('0x6b'),_0xa82b('0x6c')],'raw':!![]}]})[_0xa82b('0x2a')](function(_0x4866f5){if(_0x4866f5){var _0x2a66c8=_[_0xa82b('0x6d')](_0x4866f5,function(_0x1e2e1b){var _0x1dac62=_0x1e2e1b[_0xa82b('0x2c')]({'plain':!![]});return _0x1dac62['Agents'];});return db['MailQueue'][_0xa82b('0x4f')]({'where':{'id':_0x1c12d3[_0xa82b('0x4e')]['id']}})[_0xa82b('0x2a')](function(_0xdeaa5f){return db[_0xa82b('0x6e')][_0xa82b('0x6f')](function(_0x4fcb76){return _0xdeaa5f[_0xa82b('0x67')](_0x1782bb,{'transaction':_0x4fcb76})['then'](function(){return BPromise[_0xa82b('0x70')](_0x2a66c8,function(_0x32e21e){return db[_0xa82b('0x71')][_0xa82b('0x72')]({'where':{'UserId':_0x32e21e['id'],'MailQueueId':_0x1c12d3[_0xa82b('0x4e')]['id']},'transaction':_0x4fcb76});});})[_0xa82b('0x2a')](function(){_0x2a66c8['forEach'](function(_0x2c7bdc){socket[_0xa82b('0x73')](_0xa82b('0x74'),{'UserId':_0x2c7bdc['id'],'MailQueueId':_0xdeaa5f['id']});});});});});}})[_0xa82b('0x2a')](respondWithStatusCode(_0x487e80,null))['catch'](handleError(_0x487e80,null));};exports[_0xa82b('0x75')]=function(_0x187f7c,_0x3203d1,_0x21cbb7){return db[_0xa82b('0x65')]['findAll']({'where':{'id':_0x187f7c[_0xa82b('0x38')][_0xa82b('0x68')]},'attributes':['id'],'include':[{'model':db[_0xa82b('0x5c')],'as':_0xa82b('0x69'),'attributes':['id'],'raw':!![]}]})[_0xa82b('0x2a')](handleEntityNotFound(_0x3203d1,null))[_0xa82b('0x2a')](function(_0x18c742){var _0x4a24bf=_['map'](_0x18c742,'id');var _0x292ea2=[];var _0x53bae7=[];var _0x5e2060=squel['select']();_0x5e2060[_0xa82b('0x76')](_0xa82b('0x77'))['from'](_0xa82b('0x78'),'tq')['join']('user_has_teams','ut',_0xa82b('0x79'))[_0xa82b('0x45')](_0xa82b('0x7a'),_0x187f7c[_0xa82b('0x4e')]['id']);for(var _0x49ddb4=0x0;_0x49ddb4<_0x18c742['length'];_0x49ddb4+=0x1){let _0xe2c97c=_0x18c742[_0x49ddb4];for(var _0x5bc157=0x0;_0x5bc157<_0xe2c97c['Agents'][_0xa82b('0x3e')];_0x5bc157+=0x1){let _0x23a3e4=_0xe2c97c[_0xa82b('0x69')][_0x5bc157];var _0x3557a7=_0x5e2060[_0xa82b('0x7b')]();_0x3557a7[_0xa82b('0x45')](_0xa82b('0x7c'),_0x23a3e4['id']);_0x53bae7[_0xa82b('0x7d')](db[_0xa82b('0x6e')]['query'](_0x3557a7[_0xa82b('0x7e')](),{'type':db[_0xa82b('0x6e')][_0xa82b('0x7f')][_0xa82b('0x80')]})[_0xa82b('0x2a')](function(_0x40e11a){if(_0x40e11a[_0xa82b('0x3e')]===0x1){return _0x23a3e4['id'];}else{var _0x1fa45c=_['every'](_[_0xa82b('0x32')](_0x40e11a,'TeamId'),function(_0x4a915b){return _[_0xa82b('0x81')](_0x4a24bf,_0x4a915b);});if(_0x1fa45c){return _0x23a3e4['id'];}}}));}}return BPromise[_0xa82b('0x82')](_0x53bae7)[_0xa82b('0x2a')](function(_0x3a0c1b){_0x292ea2=_(_0x292ea2)[_0xa82b('0x83')](_0x3a0c1b)[_0xa82b('0x84')]()['value']();return db['MailQueue'][_0xa82b('0x4f')]({'where':{'id':_0x187f7c[_0xa82b('0x4e')]['id']}})[_0xa82b('0x2a')](function(_0x1b3513){return db[_0xa82b('0x6e')]['transaction'](function(_0x5c3320){return _0x1b3513[_0xa82b('0x75')](_0x187f7c['query'][_0xa82b('0x68')],{'transaction':_0x5c3320})[_0xa82b('0x2a')](function(){if(!_[_0xa82b('0x85')](_0x292ea2)){return _0x1b3513['removeAgents'](_0x292ea2,{'transaction':_0x5c3320});}})[_0xa82b('0x2a')](function(){_0x292ea2['forEach'](function(_0x36bee3){socket[_0xa82b('0x73')](_0xa82b('0x86'),{'UserId':_0x36bee3,'MailQueueId':_0x1b3513['id']});});});});});});})[_0xa82b('0x2a')](respondWithStatusCode(_0x3203d1,null))[_0xa82b('0x4c')](handleError(_0x3203d1,null));};exports[_0xa82b('0x87')]=function(_0x3b588e,_0xb07ccc,_0xfde2d6){return db['MailQueue'][_0xa82b('0x4f')]({'where':{'id':_0x3b588e[_0xa82b('0x4e')]['id']}})[_0xa82b('0x2a')](handleEntityNotFound(_0xb07ccc,null))[_0xa82b('0x2a')](function(_0x1a5497){if(_0x1a5497){return _0x1a5497['addAgents'](_0x3b588e[_0xa82b('0x51')][_0xa82b('0x68')],_[_0xa82b('0x88')](_0x3b588e[_0xa82b('0x51')],[_0xa82b('0x68'),'id'])||{})[_0xa82b('0x89')](function(_0x20d2f9){for(var _0x298fdd=0x0;_0x298fdd<_0x3b588e[_0xa82b('0x51')][_0xa82b('0x68')][_0xa82b('0x3e')];_0x298fdd+=0x1){socket[_0xa82b('0x73')]('userMailQueue:save',{'UserId':Number(_0x3b588e[_0xa82b('0x51')][_0xa82b('0x68')][_0x298fdd]),'MailQueueId':Number(_0x3b588e['params']['id'])});}return _0x20d2f9;});}})[_0xa82b('0x2a')](respondWithResult(_0xb07ccc,null))[_0xa82b('0x4c')](handleError(_0xb07ccc,null));};exports[_0xa82b('0x8a')]=function(_0x1196d8,_0x4f19d3,_0x307d83){return db[_0xa82b('0x33')]['find']({'where':{'id':_0x1196d8['params']['id']}})[_0xa82b('0x2a')](handleEntityNotFound(_0x4f19d3,null))['then'](function(_0x47c78e){if(_0x47c78e){return _0x47c78e[_0xa82b('0x8a')](_0x1196d8[_0xa82b('0x38')]['ids'])[_0xa82b('0x2a')](function(){if(_[_0xa82b('0x8b')](_0x1196d8['query'][_0xa82b('0x68')])){for(var _0x1486ad=0x0;_0x1486ad<_0x1196d8[_0xa82b('0x38')][_0xa82b('0x68')][_0xa82b('0x3e')];_0x1486ad+=0x1){socket[_0xa82b('0x73')](_0xa82b('0x86'),{'UserId':Number(_0x1196d8['query'][_0xa82b('0x68')][_0x1486ad]),'MailQueueId':Number(_0x1196d8['params']['id'])});}}else{socket['emit'](_0xa82b('0x86'),{'UserId':Number(_0x1196d8[_0xa82b('0x38')][_0xa82b('0x68')]),'MailQueueId':Number(_0x1196d8['params']['id'])});}});}})[_0xa82b('0x2a')](respondWithStatusCode(_0x4f19d3,null))[_0xa82b('0x4c')](handleError(_0x4f19d3,null));};exports[_0xa82b('0x8c')]=function(_0x51fff5,_0x1eddc5,_0x2f7b66){var _0x320d28={};var _0xa7c17a={};var _0x3a8351;var _0x2a7e42;return db['MailQueue'][_0xa82b('0x5a')]({'where':{'id':_0x51fff5[_0xa82b('0x4e')]['id']}})[_0xa82b('0x2a')](handleEntityNotFound(_0x1eddc5,null))[_0xa82b('0x2a')](function(_0x1e8611){if(_0x1e8611){_0x3a8351=_0x1e8611;_0xa7c17a[_0xa82b('0x3c')]=_[_0xa82b('0x37')](db[_0xa82b('0x5c')][_0xa82b('0x34')]);_0xa7c17a['query']=_[_0xa82b('0x37')](_0x51fff5[_0xa82b('0x38')]);_0xa7c17a[_0xa82b('0x39')]=_[_0xa82b('0x3a')](_0xa7c17a[_0xa82b('0x3c')],_0xa7c17a[_0xa82b('0x38')]);_0x320d28[_0xa82b('0x3b')]=_[_0xa82b('0x3a')](_0xa7c17a[_0xa82b('0x3c')],qs[_0xa82b('0x3d')](_0x51fff5[_0xa82b('0x38')][_0xa82b('0x3d')]));_0x320d28[_0xa82b('0x3b')]=_0x320d28['attributes'][_0xa82b('0x3e')]?_0x320d28['attributes']:_0xa7c17a['model'];_0x320d28[_0xa82b('0x41')]=qs[_0xa82b('0x42')](_0x51fff5[_0xa82b('0x38')][_0xa82b('0x42')]);_0x320d28[_0xa82b('0x45')]=qs[_0xa82b('0x39')](_[_0xa82b('0x43')](_0x51fff5[_0xa82b('0x38')],_0xa7c17a[_0xa82b('0x39')]));if(_0x51fff5[_0xa82b('0x38')]['filter']){_0x320d28[_0xa82b('0x45')]=_['merge'](_0x320d28[_0xa82b('0x45')],{'$or':_[_0xa82b('0x32')](_0x320d28[_0xa82b('0x3b')],function(_0x1cb4d0){var _0x159047={};_0x159047[_0x1cb4d0]={'$like':'%'+_0x51fff5[_0xa82b('0x38')][_0xa82b('0x44')]+'%'};return _0x159047;})});}_0x320d28=_[_0xa82b('0x47')]({},_0x320d28,_0x51fff5[_0xa82b('0x48')]);return _0x3a8351[_0xa82b('0x8c')](_0x320d28);}})[_0xa82b('0x2a')](function(_0x5e1140){if(_0x5e1140){_0x2a7e42=_0x5e1140[_0xa82b('0x3e')];if(!_0x51fff5[_0xa82b('0x38')]['hasOwnProperty'](_0xa82b('0x40'))){_0x320d28[_0xa82b('0x22')]=qs['limit'](_0x51fff5['query'][_0xa82b('0x22')]);_0x320d28[_0xa82b('0x23')]=qs[_0xa82b('0x23')](_0x51fff5['query'][_0xa82b('0x23')]);}return _0x3a8351[_0xa82b('0x8c')](_0x320d28);}})[_0xa82b('0x2a')](function(_0x51157b){if(_0x51157b){return _0x51157b?{'count':_0x2a7e42,'rows':_0x51157b}:null;}})[_0xa82b('0x2a')](respondWithResult(_0x1eddc5,null))[_0xa82b('0x4c')](handleError(_0x1eddc5,null));};
\ No newline at end of file
index 681c4c3..f0f1f6c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa6fd=['setMaxListeners','save','emit','hasOwnProperty','hook','exports','events','MailQueue'];(function(_0x1f647d,_0x517668){var _0x3de573=function(_0x1cc9c9){while(--_0x1cc9c9){_0x1f647d['push'](_0x1f647d['shift']());}};_0x3de573(++_0x517668);}(_0xa6fd,0x136));var _0xda6f=function(_0x4d2993,_0x1c9473){_0x4d2993=_0x4d2993-0x0;var _0x427374=_0xa6fd[_0x4d2993];return _0x427374;};'use strict';var EventEmitter=require(_0xda6f('0x0'));var MailQueue=require('../../mysqldb')['db'][_0xda6f('0x1')];var MailQueueEvents=new EventEmitter();MailQueueEvents[_0xda6f('0x2')](0x0);var events={'afterCreate':_0xda6f('0x3'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x19be7e){return function(_0x40dc37,_0x3a34a2,_0xc39dd){MailQueueEvents[_0xda6f('0x4')](_0x19be7e+':'+_0x40dc37['id'],_0x40dc37);MailQueueEvents[_0xda6f('0x4')](_0x19be7e,_0x40dc37);_0xc39dd(null);};}for(var e in events){if(events[_0xda6f('0x5')](e)){var event=events[e];MailQueue[_0xda6f('0x6')](e,emitEvent(event));}}module[_0xda6f('0x7')]=MailQueueEvents;
\ No newline at end of file
+var _0xf4be=['../../mysqldb','MailQueue','setMaxListeners','save','emit','hook','exports','events'];(function(_0x1ed116,_0x23bc80){var _0x574066=function(_0x424f9e){while(--_0x424f9e){_0x1ed116['push'](_0x1ed116['shift']());}};_0x574066(++_0x23bc80);}(_0xf4be,0x187));var _0xef4b=function(_0x12a72b,_0x3c68c6){_0x12a72b=_0x12a72b-0x0;var _0x21dbec=_0xf4be[_0x12a72b];return _0x21dbec;};'use strict';var EventEmitter=require(_0xef4b('0x0'));var MailQueue=require(_0xef4b('0x1'))['db'][_0xef4b('0x2')];var MailQueueEvents=new EventEmitter();MailQueueEvents[_0xef4b('0x3')](0x0);var events={'afterCreate':_0xef4b('0x4'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x3fe1b8){return function(_0xf1c276,_0xa1698,_0x17835f){MailQueueEvents['emit'](_0x3fe1b8+':'+_0xf1c276['id'],_0xf1c276);MailQueueEvents[_0xef4b('0x5')](_0x3fe1b8,_0xf1c276);_0x17835f(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];MailQueue[_0xef4b('0x6')](e,emitEvent(event));}}module[_0xef4b('0x7')]=MailQueueEvents;
\ No newline at end of file
index 79844f1..532e626 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6640=['bluebird','request-promise','path','../../config/environment','./mailQueue.attributes','define','lodash','util','../../config/logger','moment'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0x6640,0x1c8));var _0x0664=function(_0x466e57,_0x21b819){_0x466e57=_0x466e57-0x0;var _0x34df42=_0x6640[_0x466e57];return _0x34df42;};'use strict';var _=require(_0x0664('0x0'));var util=require(_0x0664('0x1'));var logger=require(_0x0664('0x2'))('api');var moment=require(_0x0664('0x3'));var BPromise=require(_0x0664('0x4'));var rp=require(_0x0664('0x5'));var fs=require('fs');var path=require(_0x0664('0x6'));var rimraf=require('rimraf');var config=require(_0x0664('0x7'));var attributes=require(_0x0664('0x8'));module['exports']=function(_0x2e1ba1,_0x13b8ea){return _0x2e1ba1[_0x0664('0x9')]('MailQueue',attributes,{'tableName':'mail_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd3f9=['path','rimraf','../../config/environment','./mailQueue.attributes','exports','define','lodash','util','../../config/logger','api','moment'];(function(_0x3ceb54,_0x5bddfd){var _0x26d8a6=function(_0x32e484){while(--_0x32e484){_0x3ceb54['push'](_0x3ceb54['shift']());}};_0x26d8a6(++_0x5bddfd);}(_0xd3f9,0xb6));var _0x9d3f=function(_0x5206fb,_0x27aaf0){_0x5206fb=_0x5206fb-0x0;var _0x28cf2d=_0xd3f9[_0x5206fb];return _0x28cf2d;};'use strict';var _=require(_0x9d3f('0x0'));var util=require(_0x9d3f('0x1'));var logger=require(_0x9d3f('0x2'))(_0x9d3f('0x3'));var moment=require(_0x9d3f('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x9d3f('0x5'));var rimraf=require(_0x9d3f('0x6'));var config=require(_0x9d3f('0x7'));var attributes=require(_0x9d3f('0x8'));module[_0x9d3f('0x9')]=function(_0x42cba0,_0x56408c){return _0x42cba0[_0x9d3f('0xa')]('MailQueue',attributes,{'tableName':'mail_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 372a358..4764999 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf164=['include','map','model','info','ShowMailQueue','find','then','lodash','util','moment','bluebird','../../config/utils','rpc','../../config/environment','jayson/promise','client','redis','defaults','./mailQueue.socket','request','MailQueue,\x20%s,\x20%s','debug','MailQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','catch','GetMailQueue','MailQueue','options','raw','where','attributes','limit'];(function(_0x4e95e0,_0x43495c){var _0x17952a=function(_0x321c66){while(--_0x321c66){_0x4e95e0['push'](_0x4e95e0['shift']());}};_0x17952a(++_0x43495c);}(_0xf164,0xe5));var _0x4f16=function(_0x1f09fa,_0x3265ca){_0x1f09fa=_0x1f09fa-0x0;var _0x197c8d=_0xf164[_0x1f09fa];return _0x197c8d;};'use strict';var _=require(_0x4f16('0x0'));var util=require(_0x4f16('0x1'));var moment=require(_0x4f16('0x2'));var BPromise=require(_0x4f16('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x4f16('0x4'));var logger=require('../../config/logger')(_0x4f16('0x5'));var config=require(_0x4f16('0x6'));var jayson=require(_0x4f16('0x7'));var client=jayson[_0x4f16('0x8')]['http']({'port':0x232a});config[_0x4f16('0x9')]=_[_0x4f16('0xa')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x4f16('0xb'))['register'](socket);function respondWithRpcPromise(_0x5cced1,_0x1ef7cc,_0x35a410){return new BPromise(function(_0x109a22,_0x4ce871){return client[_0x4f16('0xc')](_0x5cced1,_0x35a410)['then'](function(_0x387398){logger['info'](_0x4f16('0xd'),_0x1ef7cc,'request\x20sent');logger[_0x4f16('0xe')](_0x4f16('0xf'),_0x1ef7cc,'request\x20sent',JSON[_0x4f16('0x10')](_0x387398));if(_0x387398[_0x4f16('0x11')]){if(_0x387398[_0x4f16('0x11')][_0x4f16('0x12')]===0x1f4){logger['error'](_0x4f16('0xd'),_0x1ef7cc,_0x387398[_0x4f16('0x11')]['message']);return _0x4ce871(_0x387398['error']['message']);}logger[_0x4f16('0x11')](_0x4f16('0xd'),_0x1ef7cc,_0x387398[_0x4f16('0x11')][_0x4f16('0x13')]);return _0x109a22(_0x387398[_0x4f16('0x11')][_0x4f16('0x13')]);}else{logger['info'](_0x4f16('0xd'),_0x1ef7cc,_0x4f16('0x14'));_0x109a22(_0x387398[_0x4f16('0x15')][_0x4f16('0x13')]);}})[_0x4f16('0x16')](function(_0xd12ee0){logger[_0x4f16('0x11')](_0x4f16('0xd'),_0x1ef7cc,_0xd12ee0);_0x4ce871(_0xd12ee0);});});}exports[_0x4f16('0x17')]=function(_0x132ed2){var _0x215132=this;return new Promise(function(_0x5b554d,_0x42ec63){return db[_0x4f16('0x18')]['findAll']({'raw':_0x132ed2['options']?_0x132ed2[_0x4f16('0x19')][_0x4f16('0x1a')]===undefined?!![]:![]:!![],'where':_0x132ed2[_0x4f16('0x19')]?_0x132ed2[_0x4f16('0x19')][_0x4f16('0x1b')]||null:null,'attributes':_0x132ed2['options']?_0x132ed2[_0x4f16('0x19')][_0x4f16('0x1c')]||null:null,'limit':_0x132ed2[_0x4f16('0x19')]?_0x132ed2[_0x4f16('0x19')][_0x4f16('0x1d')]||null:null,'include':_0x132ed2[_0x4f16('0x19')]?_0x132ed2[_0x4f16('0x19')][_0x4f16('0x1e')]?_[_0x4f16('0x1f')](_0x132ed2[_0x4f16('0x19')]['include'],function(_0x3ca7e7){return{'model':db[_0x3ca7e7['model']],'as':_0x3ca7e7['as'],'attributes':_0x3ca7e7[_0x4f16('0x1c')],'include':_0x3ca7e7[_0x4f16('0x1e')]?_[_0x4f16('0x1f')](_0x3ca7e7[_0x4f16('0x1e')],function(_0x3fa11f){return{'model':db[_0x3fa11f[_0x4f16('0x20')]],'as':_0x3fa11f['as'],'attributes':_0x3fa11f[_0x4f16('0x1c')],'include':_0x3fa11f[_0x4f16('0x1e')]?_[_0x4f16('0x1f')](_0x3fa11f[_0x4f16('0x1e')],function(_0x2e7405){return{'model':db[_0x2e7405['model']],'as':_0x2e7405['as'],'attributes':_0x2e7405[_0x4f16('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x5eaa8e){logger[_0x4f16('0x21')](_0x4f16('0x17'),_0x132ed2);logger[_0x4f16('0xe')]('GetMailQueue',_0x132ed2,JSON['stringify'](_0x5eaa8e));_0x5b554d(_0x5eaa8e);})['catch'](function(_0x5ad7c5){logger[_0x4f16('0x11')](_0x4f16('0x17'),_0x5ad7c5[_0x4f16('0x13')],_0x132ed2);_0x42ec63(_0x215132[_0x4f16('0x11')](0x1f4,_0x5ad7c5[_0x4f16('0x13')]));});});};exports[_0x4f16('0x22')]=function(_0x1b1485){var _0x4151ca=this;return new Promise(function(_0x52db00,_0x1426ed){return db[_0x4f16('0x18')][_0x4f16('0x23')]({'raw':_0x1b1485['options']?_0x1b1485[_0x4f16('0x19')][_0x4f16('0x1a')]===undefined?!![]:![]:!![],'where':_0x1b1485[_0x4f16('0x19')]?_0x1b1485[_0x4f16('0x19')][_0x4f16('0x1b')]||null:null,'attributes':_0x1b1485['options']?_0x1b1485[_0x4f16('0x19')]['attributes']||null:null,'include':_0x1b1485[_0x4f16('0x19')]?_0x1b1485[_0x4f16('0x19')][_0x4f16('0x1e')]?_[_0x4f16('0x1f')](_0x1b1485['options'][_0x4f16('0x1e')],function(_0x43e817){return{'model':db[_0x43e817[_0x4f16('0x20')]],'as':_0x43e817['as'],'attributes':_0x43e817[_0x4f16('0x1c')],'include':_0x43e817[_0x4f16('0x1e')]?_[_0x4f16('0x1f')](_0x43e817[_0x4f16('0x1e')],function(_0x423451){return{'model':db[_0x423451[_0x4f16('0x20')]],'as':_0x423451['as'],'attributes':_0x423451['attributes'],'include':_0x423451[_0x4f16('0x1e')]?_[_0x4f16('0x1f')](_0x423451[_0x4f16('0x1e')],function(_0x49dc3c){return{'model':db[_0x49dc3c[_0x4f16('0x20')]],'as':_0x49dc3c['as'],'attributes':_0x49dc3c[_0x4f16('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x4f16('0x24')](function(_0xb48d6e){logger[_0x4f16('0x21')]('ShowMailQueue',_0x1b1485);logger[_0x4f16('0xe')](_0x4f16('0x22'),_0x1b1485,JSON[_0x4f16('0x10')](_0xb48d6e));_0x52db00(_0xb48d6e);})['catch'](function(_0x475702){logger['error'](_0x4f16('0x22'),_0x475702[_0x4f16('0x13')],_0x1b1485);_0x1426ed(_0x4151ca[_0x4f16('0x11')](0x1f4,_0x475702[_0x4f16('0x13')]));});});};
\ No newline at end of file
+var _0xc52c=['client','http','defaults','redis','localhost','socket.io-emitter','./mailQueue.socket','register','request','then','info','MailQueue,\x20%s,\x20%s','request\x20sent','MailQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','GetMailQueue','MailQueue','options','raw','attributes','limit','include','map','model','ShowMailQueue','find','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise'];(function(_0x4e8a3e,_0x471fef){var _0x4e1346=function(_0x49601a){while(--_0x49601a){_0x4e8a3e['push'](_0x4e8a3e['shift']());}};_0x4e1346(++_0x471fef);}(_0xc52c,0x1d6));var _0xcc52=function(_0x133277,_0xb1d6b2){_0x133277=_0x133277-0x0;var _0x5b4a22=_0xc52c[_0x133277];return _0x5b4a22;};'use strict';var _=require('lodash');var util=require(_0xcc52('0x0'));var moment=require(_0xcc52('0x1'));var BPromise=require(_0xcc52('0x2'));var rs=require(_0xcc52('0x3'));var fs=require('fs');var Redis=require(_0xcc52('0x4'));var db=require(_0xcc52('0x5'))['db'];var utils=require(_0xcc52('0x6'));var logger=require(_0xcc52('0x7'))(_0xcc52('0x8'));var config=require('../../config/environment');var jayson=require(_0xcc52('0x9'));var client=jayson[_0xcc52('0xa')][_0xcc52('0xb')]({'port':0x232a});config['redis']=_[_0xcc52('0xc')](config[_0xcc52('0xd')],{'host':_0xcc52('0xe'),'port':0x18eb});var socket=require(_0xcc52('0xf'))(new Redis(config[_0xcc52('0xd')]));require(_0xcc52('0x10'))[_0xcc52('0x11')](socket);function respondWithRpcPromise(_0xb5de29,_0x2d0637,_0x24b371){return new BPromise(function(_0x2aa395,_0x35590b){return client[_0xcc52('0x12')](_0xb5de29,_0x24b371)[_0xcc52('0x13')](function(_0x30740e){logger[_0xcc52('0x14')](_0xcc52('0x15'),_0x2d0637,_0xcc52('0x16'));logger['debug'](_0xcc52('0x17'),_0x2d0637,'request\x20sent',JSON[_0xcc52('0x18')](_0x30740e));if(_0x30740e[_0xcc52('0x19')]){if(_0x30740e[_0xcc52('0x19')][_0xcc52('0x1a')]===0x1f4){logger[_0xcc52('0x19')](_0xcc52('0x15'),_0x2d0637,_0x30740e[_0xcc52('0x19')][_0xcc52('0x1b')]);return _0x35590b(_0x30740e[_0xcc52('0x19')]['message']);}logger[_0xcc52('0x19')]('MailQueue,\x20%s,\x20%s',_0x2d0637,_0x30740e[_0xcc52('0x19')]['message']);return _0x2aa395(_0x30740e['error'][_0xcc52('0x1b')]);}else{logger['info']('MailQueue,\x20%s,\x20%s',_0x2d0637,_0xcc52('0x16'));_0x2aa395(_0x30740e['result'][_0xcc52('0x1b')]);}})[_0xcc52('0x1c')](function(_0x57ae60){logger[_0xcc52('0x19')]('MailQueue,\x20%s,\x20%s',_0x2d0637,_0x57ae60);_0x35590b(_0x57ae60);});});}exports[_0xcc52('0x1d')]=function(_0x33ffe9){var _0x1c9762=this;return new Promise(function(_0x3d8160,_0x3f2798){return db[_0xcc52('0x1e')]['findAll']({'raw':_0x33ffe9['options']?_0x33ffe9[_0xcc52('0x1f')][_0xcc52('0x20')]===undefined?!![]:![]:!![],'where':_0x33ffe9[_0xcc52('0x1f')]?_0x33ffe9[_0xcc52('0x1f')]['where']||null:null,'attributes':_0x33ffe9[_0xcc52('0x1f')]?_0x33ffe9[_0xcc52('0x1f')][_0xcc52('0x21')]||null:null,'limit':_0x33ffe9['options']?_0x33ffe9[_0xcc52('0x1f')][_0xcc52('0x22')]||null:null,'include':_0x33ffe9[_0xcc52('0x1f')]?_0x33ffe9[_0xcc52('0x1f')][_0xcc52('0x23')]?_[_0xcc52('0x24')](_0x33ffe9[_0xcc52('0x1f')]['include'],function(_0x131872){return{'model':db[_0x131872[_0xcc52('0x25')]],'as':_0x131872['as'],'attributes':_0x131872[_0xcc52('0x21')],'include':_0x131872[_0xcc52('0x23')]?_['map'](_0x131872['include'],function(_0x386818){return{'model':db[_0x386818[_0xcc52('0x25')]],'as':_0x386818['as'],'attributes':_0x386818[_0xcc52('0x21')],'include':_0x386818[_0xcc52('0x23')]?_[_0xcc52('0x24')](_0x386818[_0xcc52('0x23')],function(_0x37562c){return{'model':db[_0x37562c[_0xcc52('0x25')]],'as':_0x37562c['as'],'attributes':_0x37562c[_0xcc52('0x21')]};}):[]};}):[]};}):[]:[]})[_0xcc52('0x13')](function(_0x1492c3){logger[_0xcc52('0x14')]('GetMailQueue',_0x33ffe9);logger['debug']('GetMailQueue',_0x33ffe9,JSON[_0xcc52('0x18')](_0x1492c3));_0x3d8160(_0x1492c3);})[_0xcc52('0x1c')](function(_0x439cce){logger[_0xcc52('0x19')](_0xcc52('0x1d'),_0x439cce[_0xcc52('0x1b')],_0x33ffe9);_0x3f2798(_0x1c9762['error'](0x1f4,_0x439cce[_0xcc52('0x1b')]));});});};exports[_0xcc52('0x26')]=function(_0x41dcaf){var _0x194442=this;return new Promise(function(_0x3fa31a,_0x4aafb6){return db['MailQueue'][_0xcc52('0x27')]({'raw':_0x41dcaf[_0xcc52('0x1f')]?_0x41dcaf[_0xcc52('0x1f')][_0xcc52('0x20')]===undefined?!![]:![]:!![],'where':_0x41dcaf[_0xcc52('0x1f')]?_0x41dcaf['options']['where']||null:null,'attributes':_0x41dcaf['options']?_0x41dcaf[_0xcc52('0x1f')]['attributes']||null:null,'include':_0x41dcaf[_0xcc52('0x1f')]?_0x41dcaf[_0xcc52('0x1f')][_0xcc52('0x23')]?_[_0xcc52('0x24')](_0x41dcaf[_0xcc52('0x1f')][_0xcc52('0x23')],function(_0x174698){return{'model':db[_0x174698[_0xcc52('0x25')]],'as':_0x174698['as'],'attributes':_0x174698['attributes'],'include':_0x174698[_0xcc52('0x23')]?_[_0xcc52('0x24')](_0x174698['include'],function(_0xc02ab7){return{'model':db[_0xc02ab7[_0xcc52('0x25')]],'as':_0xc02ab7['as'],'attributes':_0xc02ab7[_0xcc52('0x21')],'include':_0xc02ab7['include']?_['map'](_0xc02ab7[_0xcc52('0x23')],function(_0x14dba1){return{'model':db[_0x14dba1[_0xcc52('0x25')]],'as':_0x14dba1['as'],'attributes':_0x14dba1[_0xcc52('0x21')]};}):[]};}):[]};}):[]:[]})[_0xcc52('0x13')](function(_0x566867){logger['info'](_0xcc52('0x26'),_0x41dcaf);logger['debug'](_0xcc52('0x26'),_0x41dcaf,JSON['stringify'](_0x566867));_0x3fa31a(_0x566867);})[_0xcc52('0x1c')](function(_0x20d091){logger[_0xcc52('0x19')]('ShowMailQueue',_0x20d091[_0xcc52('0x1b')],_0x41dcaf);_0x4aafb6(_0x194442[_0xcc52('0x19')](0x1f4,_0x20d091['message']));});});};
\ No newline at end of file
index 3ca55fd..8a7aa7f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf632=['mailQueue:','./mailQueue.events','save','remove','update','removeListener','register','length'];(function(_0x4f9478,_0x134ef3){var _0x3464c9=function(_0x5bcd8b){while(--_0x5bcd8b){_0x4f9478['push'](_0x4f9478['shift']());}};_0x3464c9(++_0x134ef3);}(_0xf632,0xf9));var _0x2f63=function(_0x9acd2e,_0x40ed3f){_0x9acd2e=_0x9acd2e-0x0;var _0x34d312=_0xf632[_0x9acd2e];return _0x34d312;};'use strict';var MailQueueEvents=require(_0x2f63('0x0'));var events=[_0x2f63('0x1'),_0x2f63('0x2'),_0x2f63('0x3')];function createListener(_0x4cbcb5,_0x55ef98){return function(_0x2ecde8){_0x55ef98['emit'](_0x4cbcb5,_0x2ecde8);};}function removeListener(_0x2bac6a,_0x1d7596){return function(){MailQueueEvents[_0x2f63('0x4')](_0x2bac6a,_0x1d7596);};}exports[_0x2f63('0x5')]=function(_0x5df351){for(var _0x2ad5c1=0x0,_0x2cb728=events[_0x2f63('0x6')];_0x2ad5c1<_0x2cb728;_0x2ad5c1++){var _0xd2ddee=events[_0x2ad5c1];var _0x503399=createListener(_0x2f63('0x7')+_0xd2ddee,_0x5df351);MailQueueEvents['on'](_0xd2ddee,_0x503399);}};
\ No newline at end of file
+var _0x70c6=['save','remove','update','emit','removeListener','register','length','mailQueue:','./mailQueue.events'];(function(_0x174545,_0x13bd5a){var _0x1317b5=function(_0x48e592){while(--_0x48e592){_0x174545['push'](_0x174545['shift']());}};_0x1317b5(++_0x13bd5a);}(_0x70c6,0x128));var _0x670c=function(_0x4e676e,_0x2a7c6d){_0x4e676e=_0x4e676e-0x0;var _0x336a3c=_0x70c6[_0x4e676e];return _0x336a3c;};'use strict';var MailQueueEvents=require(_0x670c('0x0'));var events=[_0x670c('0x1'),_0x670c('0x2'),_0x670c('0x3')];function createListener(_0x3dcb54,_0x5a3d16){return function(_0x350b5b){_0x5a3d16[_0x670c('0x4')](_0x3dcb54,_0x350b5b);};}function removeListener(_0x19fa2c,_0x1b29f7){return function(){MailQueueEvents[_0x670c('0x5')](_0x19fa2c,_0x1b29f7);};}exports[_0x670c('0x6')]=function(_0x2b692a){for(var _0x441a94=0x0,_0x54b392=events[_0x670c('0x7')];_0x441a94<_0x54b392;_0x441a94++){var _0x1e4984=events[_0x441a94];var _0x52420c=createListener(_0x670c('0x8')+_0x1e4984,_0x2b692a);MailQueueEvents['on'](_0x1e4984,_0x52420c);}};
\ No newline at end of file
index b531246..4dc1c3b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcdd6=['describe','/:id','show','post','create','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailQueueReport.controller','get','isAuthenticated','index','/describe'];(function(_0x40ac5e,_0x2de228){var _0x2839d6=function(_0x123d47){while(--_0x123d47){_0x40ac5e['push'](_0x40ac5e['shift']());}};_0x2839d6(++_0x2de228);}(_0xcdd6,0x14b));var _0x6cdd=function(_0x297a09,_0x30fa46){_0x297a09=_0x297a09-0x0;var _0x3493cc=_0xcdd6[_0x297a09];return _0x3493cc;};'use strict';var multer=require(_0x6cdd('0x0'));var util=require(_0x6cdd('0x1'));var path=require(_0x6cdd('0x2'));var timeout=require(_0x6cdd('0x3'));var express=require('express');var router=express[_0x6cdd('0x4')]();var fs_extra=require(_0x6cdd('0x5'));var auth=require(_0x6cdd('0x6'));var interaction=require(_0x6cdd('0x7'));var config=require(_0x6cdd('0x8'));var controller=require(_0x6cdd('0x9'));router[_0x6cdd('0xa')]('/',auth[_0x6cdd('0xb')](),controller[_0x6cdd('0xc')]);router['get'](_0x6cdd('0xd'),auth[_0x6cdd('0xb')](),controller[_0x6cdd('0xe')]);router[_0x6cdd('0xa')](_0x6cdd('0xf'),auth[_0x6cdd('0xb')](),controller[_0x6cdd('0x10')]);router[_0x6cdd('0x11')]('/',auth[_0x6cdd('0xb')](),controller[_0x6cdd('0x12')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0x6cdd('0x13')]);router[_0x6cdd('0x14')](_0x6cdd('0xf'),auth[_0x6cdd('0xb')](),controller[_0x6cdd('0x15')]);module[_0x6cdd('0x16')]=router;
\ No newline at end of file
+var _0x4eb8=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailQueueReport.controller','get','isAuthenticated','/describe','post','create','put','/:id','update','delete','exports','util','path','connect-timeout'];(function(_0x1aec28,_0x556b6f){var _0x2398c7=function(_0x27ee37){while(--_0x27ee37){_0x1aec28['push'](_0x1aec28['shift']());}};_0x2398c7(++_0x556b6f);}(_0x4eb8,0x1a1));var _0x84eb=function(_0x56e0e5,_0x2e3937){_0x56e0e5=_0x56e0e5-0x0;var _0x27bb15=_0x4eb8[_0x56e0e5];return _0x27bb15;};'use strict';var multer=require('multer');var util=require(_0x84eb('0x0'));var path=require(_0x84eb('0x1'));var timeout=require(_0x84eb('0x2'));var express=require(_0x84eb('0x3'));var router=express[_0x84eb('0x4')]();var fs_extra=require(_0x84eb('0x5'));var auth=require(_0x84eb('0x6'));var interaction=require(_0x84eb('0x7'));var config=require(_0x84eb('0x8'));var controller=require(_0x84eb('0x9'));router[_0x84eb('0xa')]('/',auth[_0x84eb('0xb')](),controller['index']);router[_0x84eb('0xa')](_0x84eb('0xc'),auth[_0x84eb('0xb')](),controller['describe']);router[_0x84eb('0xa')]('/:id',auth[_0x84eb('0xb')](),controller['show']);router[_0x84eb('0xd')]('/',auth[_0x84eb('0xb')](),controller[_0x84eb('0xe')]);router[_0x84eb('0xf')](_0x84eb('0x10'),auth[_0x84eb('0xb')](),controller[_0x84eb('0x11')]);router[_0x84eb('0x12')](_0x84eb('0x10'),auth['isAuthenticated'](),controller['destroy']);module[_0x84eb('0x13')]=router;
\ No newline at end of file
index 290dd8b..262aeae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdf36=['DATE','moment','sequelize','STRING'];(function(_0x2165b0,_0x49e90d){var _0x4b1505=function(_0xbea1c0){while(--_0xbea1c0){_0x2165b0['push'](_0x2165b0['shift']());}};_0x4b1505(++_0x49e90d);}(_0xdf36,0x1d1));var _0x6df3=function(_0x3b49bd,_0xb29217){_0x3b49bd=_0x3b49bd-0x0;var _0x1174dc=_0xdf36[_0x3b49bd];return _0x1174dc;};'use strict';var moment=require(_0x6df3('0x0'));var Sequelize=require(_0x6df3('0x1'));module['exports']={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize[_0x6df3('0x2')]},'joinAt':{'type':Sequelize[_0x6df3('0x3')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0x6df3('0x3')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0x6df3('0x2')]}};
\ No newline at end of file
+var _0x9b69=['exports','DATE','STRING','moment','sequelize'];(function(_0x511478,_0x3b4cb9){var _0x5305c5=function(_0x17ce7e){while(--_0x17ce7e){_0x511478['push'](_0x511478['shift']());}};_0x5305c5(++_0x3b4cb9);}(_0x9b69,0xa3));var _0x99b6=function(_0x48f770,_0x20b99c){_0x48f770=_0x48f770-0x0;var _0x28421e=_0x9b69[_0x48f770];return _0x28421e;};'use strict';var moment=require(_0x99b6('0x0'));var Sequelize=require(_0x99b6('0x1'));module[_0x99b6('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0x99b6('0x3')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0x99b6('0x3')]},'exitAt':{'type':Sequelize[_0x99b6('0x3')]},'reason':{'type':Sequelize[_0x99b6('0x4')]}};
\ No newline at end of file
index 6631658..d36122a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x627e=['limit','count','set','reject','save','then','destroy','error','stack','name','index','MailQueueReport','fieldName','key','map','query','keys','filters','intersection','model','attributes','hasOwnProperty','nolimit','sort','where','pick','type','VIRTUAL','filter','merge','options','rows','catch','params','fields','length','includeAll','include','find','body','update','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','ejs','fs-extra','lodash','squel','crypto','jsforce','to-csv','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined'];(function(_0xd52d07,_0x240814){var _0x1c15c7=function(_0x1d6dd6){while(--_0x1d6dd6){_0xd52d07['push'](_0xd52d07['shift']());}};_0x1c15c7(++_0x240814);}(_0x627e,0x14a));var _0xe627=function(_0x197bec,_0x40217b){_0x197bec=_0x197bec-0x0;var _0x41e591=_0x627e[_0x197bec];return _0x41e591;};'use strict';var emlformat=require(_0xe627('0x0'));var rimraf=require(_0xe627('0x1'));var zipdir=require(_0xe627('0x2'));var jsonpatch=require(_0xe627('0x3'));var rp=require(_0xe627('0x4'));var moment=require('moment');var BPromise=require(_0xe627('0x5'));var Mustache=require(_0xe627('0x6'));var util=require(_0xe627('0x7'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xe627('0x8'));var fs=require('fs');var fs_extra=require(_0xe627('0x9'));var _=require(_0xe627('0xa'));var squel=require(_0xe627('0xb'));var crypto=require(_0xe627('0xc'));var jsforce=require(_0xe627('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xe627('0xe'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xe627('0xf'));var authService=require(_0xe627('0x10'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xe627('0x11'));var logger=require(_0xe627('0x12'))(_0xe627('0x13'));var utils=require(_0xe627('0x14'));var config=require(_0xe627('0x15'));var licenseUtil=require(_0xe627('0x16'));var db=require(_0xe627('0x17'))['db'];function respondWithStatusCode(_0x3919be,_0x1922f5){_0x1922f5=_0x1922f5||0xcc;return function(_0x582190){if(_0x582190){return _0x3919be[_0xe627('0x18')](_0x1922f5);}return _0x3919be[_0xe627('0x19')](_0x1922f5)[_0xe627('0x1a')]();};}function respondWithResult(_0x4be370,_0x42dd1c){_0x42dd1c=_0x42dd1c||0xc8;return function(_0x1e2e62){if(_0x1e2e62){return _0x4be370[_0xe627('0x19')](_0x42dd1c)[_0xe627('0x1b')](_0x1e2e62);}};}function respondWithFilteredResult(_0x62896f,_0x6a9a15){return function(_0x271325){if(_0x271325){var _0x54720a=typeof _0x6a9a15[_0xe627('0x1c')]===_0xe627('0x1d')&&typeof _0x6a9a15[_0xe627('0x1e')]===_0xe627('0x1d');var _0x403982=_0x271325[_0xe627('0x1f')];var _0x56559b=_0x54720a?0x0:_0x6a9a15[_0xe627('0x1c')];var _0x538b22=_0x54720a?_0x271325[_0xe627('0x1f')]:_0x6a9a15['offset']+_0x6a9a15[_0xe627('0x1e')];var _0x565213;if(_0x538b22>=_0x403982){_0x538b22=_0x403982;_0x565213=0xc8;}else{_0x565213=0xce;}_0x62896f['status'](_0x565213);return _0x62896f[_0xe627('0x20')]('Content-Range',_0x56559b+'-'+_0x538b22+'/'+_0x403982)[_0xe627('0x1b')](_0x271325);}return null;};}function patchUpdates(_0x3391ce){return function(_0x4adde7){try{jsonpatch['apply'](_0x4adde7,_0x3391ce,!![]);}catch(_0x4ecfa6){return BPromise[_0xe627('0x21')](_0x4ecfa6);}return _0x4adde7[_0xe627('0x22')]();};}function saveUpdates(_0x4e3338,_0x708a8a){return function(_0x33cb27){if(_0x33cb27){return _0x33cb27['update'](_0x4e3338)[_0xe627('0x23')](function(_0x29221b){return _0x29221b;});}return null;};}function removeEntity(_0x52d492,_0x42f3d1){return function(_0x19adbc){if(_0x19adbc){return _0x19adbc[_0xe627('0x24')]()['then'](function(){_0x52d492[_0xe627('0x19')](0xcc)[_0xe627('0x1a')]();});}};}function handleEntityNotFound(_0x1a5081,_0x3ddd8d){return function(_0x4b9ff9){if(!_0x4b9ff9){_0x1a5081[_0xe627('0x18')](0x194);}return _0x4b9ff9;};}function handleError(_0x1fe192,_0x1635a0){_0x1635a0=_0x1635a0||0x1f4;return function(_0x29eb8e){logger[_0xe627('0x25')](_0x29eb8e[_0xe627('0x26')]);if(_0x29eb8e[_0xe627('0x27')]){delete _0x29eb8e[_0xe627('0x27')];}_0x1fe192[_0xe627('0x19')](_0x1635a0)['send'](_0x29eb8e);};}exports[_0xe627('0x28')]=function(_0x5aeba1,_0x5cd7c8){var _0x1e0bd7={},_0xdf63c8={},_0x5799a3={'count':0x0,'rows':[]};var _0x39c23f=_['map'](db[_0xe627('0x29')]['rawAttributes'],function(_0x262253){return{'name':_0x262253[_0xe627('0x2a')],'type':_0x262253['type'][_0xe627('0x2b')]};});_0xdf63c8['model']=_[_0xe627('0x2c')](_0x39c23f,_0xe627('0x27'));_0xdf63c8[_0xe627('0x2d')]=_[_0xe627('0x2e')](_0x5aeba1[_0xe627('0x2d')]);_0xdf63c8[_0xe627('0x2f')]=_[_0xe627('0x30')](_0xdf63c8[_0xe627('0x31')],_0xdf63c8[_0xe627('0x2d')]);_0x1e0bd7[_0xe627('0x32')]=_[_0xe627('0x30')](_0xdf63c8['model'],qs['fields'](_0x5aeba1[_0xe627('0x2d')]['fields']));_0x1e0bd7[_0xe627('0x32')]=_0x1e0bd7['attributes']['length']?_0x1e0bd7[_0xe627('0x32')]:_0xdf63c8['model'];if(!_0x5aeba1['query'][_0xe627('0x33')](_0xe627('0x34'))){_0x1e0bd7[_0xe627('0x1e')]=qs['limit'](_0x5aeba1['query']['limit']);_0x1e0bd7[_0xe627('0x1c')]=qs['offset'](_0x5aeba1[_0xe627('0x2d')][_0xe627('0x1c')]);}_0x1e0bd7['order']=qs[_0xe627('0x35')](_0x5aeba1[_0xe627('0x2d')]['sort']);_0x1e0bd7[_0xe627('0x36')]=qs[_0xe627('0x2f')](_[_0xe627('0x37')](_0x5aeba1[_0xe627('0x2d')],_0xdf63c8[_0xe627('0x2f')]),_0x39c23f);if(_0x5aeba1[_0xe627('0x2d')]['filter']){_0x1e0bd7[_0xe627('0x36')]=_['merge'](_0x1e0bd7[_0xe627('0x36')],{'$or':_['map'](_0x39c23f,function(_0xe90eda){if(_0xe90eda[_0xe627('0x38')]!==_0xe627('0x39')){var _0x21a533={};_0x21a533[_0xe90eda[_0xe627('0x27')]]={'$like':'%'+_0x5aeba1[_0xe627('0x2d')][_0xe627('0x3a')]+'%'};return _0x21a533;}})});}_0x1e0bd7=_[_0xe627('0x3b')]({},_0x1e0bd7,_0x5aeba1[_0xe627('0x3c')]);var _0x415a25={'where':_0x1e0bd7[_0xe627('0x36')]};return db[_0xe627('0x29')][_0xe627('0x1f')](_0x415a25)['then'](function(_0x4ddff5){_0x5799a3['count']=_0x4ddff5;if(_0x5aeba1['query']['includeAll']){_0x1e0bd7['include']=[{'all':!![]}];}return db[_0xe627('0x29')]['findAll'](_0x1e0bd7);})[_0xe627('0x23')](function(_0x59cd6a){_0x5799a3[_0xe627('0x3d')]=_0x59cd6a;return _0x5799a3;})[_0xe627('0x23')](respondWithFilteredResult(_0x5cd7c8,_0x1e0bd7))[_0xe627('0x3e')](handleError(_0x5cd7c8,null));};exports['show']=function(_0x58e110,_0x26064c){var _0x5f3374={'raw':!![],'where':{'id':_0x58e110[_0xe627('0x3f')]['id']}},_0x5e352e={};_0x5e352e['model']=_[_0xe627('0x2e')](db['MailQueueReport']['rawAttributes']);_0x5e352e[_0xe627('0x2d')]=_[_0xe627('0x2e')](_0x58e110[_0xe627('0x2d')]);_0x5e352e['filters']=_['intersection'](_0x5e352e[_0xe627('0x31')],_0x5e352e['query']);_0x5f3374['attributes']=_[_0xe627('0x30')](_0x5e352e[_0xe627('0x31')],qs[_0xe627('0x40')](_0x58e110[_0xe627('0x2d')][_0xe627('0x40')]));_0x5f3374[_0xe627('0x32')]=_0x5f3374['attributes'][_0xe627('0x41')]?_0x5f3374[_0xe627('0x32')]:_0x5e352e['model'];if(_0x58e110['query'][_0xe627('0x42')]){_0x5f3374[_0xe627('0x43')]=[{'all':!![]}];}_0x5f3374=_[_0xe627('0x3b')]({},_0x5f3374,_0x58e110[_0xe627('0x3c')]);return db[_0xe627('0x29')][_0xe627('0x44')](_0x5f3374)[_0xe627('0x23')](handleEntityNotFound(_0x26064c,null))['then'](respondWithResult(_0x26064c,null))[_0xe627('0x3e')](handleError(_0x26064c,null));};exports['create']=function(_0x648456,_0xcd19f5){return db[_0xe627('0x29')]['create'](_0x648456[_0xe627('0x45')],{})['then'](respondWithResult(_0xcd19f5,0xc9))[_0xe627('0x3e')](handleError(_0xcd19f5,null));};exports[_0xe627('0x46')]=function(_0x375e05,_0x30e057){if(_0x375e05[_0xe627('0x45')]['id']){delete _0x375e05['body']['id'];}return db[_0xe627('0x29')][_0xe627('0x44')]({'where':{'id':_0x375e05[_0xe627('0x3f')]['id']}})[_0xe627('0x23')](handleEntityNotFound(_0x30e057,null))[_0xe627('0x23')](saveUpdates(_0x375e05[_0xe627('0x45')],null))[_0xe627('0x23')](respondWithResult(_0x30e057,null))[_0xe627('0x3e')](handleError(_0x30e057,null));};exports[_0xe627('0x24')]=function(_0x3824da,_0x550b74){return db[_0xe627('0x29')][_0xe627('0x44')]({'where':{'id':_0x3824da['params']['id']}})[_0xe627('0x23')](handleEntityNotFound(_0x550b74,null))[_0xe627('0x23')](removeEntity(_0x550b74,null))['catch'](handleError(_0x550b74,null));};exports[_0xe627('0x47')]=function(_0x3a827e,_0x542a4c){return db[_0xe627('0x29')][_0xe627('0x47')]()['then'](respondWithResult(_0x542a4c,null))[_0xe627('0x3e')](handleError(_0x542a4c,null));};
\ No newline at end of file
+var _0xa30a=['destroy','describe','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','ejs','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','status','end','json','offset','undefined','count','limit','apply','save','update','then','error','name','send','index','map','MailQueueReport','rawAttributes','fieldName','type','key','query','keys','filters','attributes','intersection','model','fields','length','hasOwnProperty','order','sort','pick','filter','where','merge','options','include','findAll','rows','catch','includeAll','find','body'];(function(_0x381111,_0x15c747){var _0x19ff20=function(_0x54ae42){while(--_0x54ae42){_0x381111['push'](_0x381111['shift']());}};_0x19ff20(++_0x15c747);}(_0xa30a,0xd7));var _0xaa30=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xa30a[_0x14add3];return _0x4a174f;};'use strict';var emlformat=require(_0xaa30('0x0'));var rimraf=require(_0xaa30('0x1'));var zipdir=require(_0xaa30('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xaa30('0x3'));var moment=require(_0xaa30('0x4'));var BPromise=require(_0xaa30('0x5'));var Mustache=require(_0xaa30('0x6'));var util=require(_0xaa30('0x7'));var path=require(_0xaa30('0x8'));var sox=require(_0xaa30('0x9'));var csv=require('to-csv');var ejs=require(_0xaa30('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xaa30('0xb'));var squel=require(_0xaa30('0xc'));var crypto=require(_0xaa30('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xaa30('0xe'));var toCsv=require(_0xaa30('0xf'));var querystring=require(_0xaa30('0x10'));var Papa=require(_0xaa30('0x11'));var Redis=require(_0xaa30('0x12'));var authService=require(_0xaa30('0x13'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xaa30('0x14'));var logger=require('../../config/logger')(_0xaa30('0x15'));var utils=require(_0xaa30('0x16'));var config=require(_0xaa30('0x17'));var licenseUtil=require(_0xaa30('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xec992f,_0x3de2d1){_0x3de2d1=_0x3de2d1||0xcc;return function(_0xcd1d3b){if(_0xcd1d3b){return _0xec992f['sendStatus'](_0x3de2d1);}return _0xec992f[_0xaa30('0x19')](_0x3de2d1)[_0xaa30('0x1a')]();};}function respondWithResult(_0x25c02e,_0x14de74){_0x14de74=_0x14de74||0xc8;return function(_0x41f1d9){if(_0x41f1d9){return _0x25c02e[_0xaa30('0x19')](_0x14de74)[_0xaa30('0x1b')](_0x41f1d9);}};}function respondWithFilteredResult(_0x3b8095,_0x2e37af){return function(_0xfae724){if(_0xfae724){var _0x519518=typeof _0x2e37af[_0xaa30('0x1c')]==='undefined'&&typeof _0x2e37af['limit']===_0xaa30('0x1d');var _0x153939=_0xfae724[_0xaa30('0x1e')];var _0x540e36=_0x519518?0x0:_0x2e37af['offset'];var _0x53f9fd=_0x519518?_0xfae724[_0xaa30('0x1e')]:_0x2e37af['offset']+_0x2e37af[_0xaa30('0x1f')];var _0x332a0a;if(_0x53f9fd>=_0x153939){_0x53f9fd=_0x153939;_0x332a0a=0xc8;}else{_0x332a0a=0xce;}_0x3b8095['status'](_0x332a0a);return _0x3b8095['set']('Content-Range',_0x540e36+'-'+_0x53f9fd+'/'+_0x153939)[_0xaa30('0x1b')](_0xfae724);}return null;};}function patchUpdates(_0x3e4f1d){return function(_0x61b85){try{jsonpatch[_0xaa30('0x20')](_0x61b85,_0x3e4f1d,!![]);}catch(_0x43a526){return BPromise['reject'](_0x43a526);}return _0x61b85[_0xaa30('0x21')]();};}function saveUpdates(_0x24bb25,_0x2e16e7){return function(_0x2d9e35){if(_0x2d9e35){return _0x2d9e35[_0xaa30('0x22')](_0x24bb25)['then'](function(_0x325b42){return _0x325b42;});}return null;};}function removeEntity(_0x13128a,_0x2fecdd){return function(_0x326f84){if(_0x326f84){return _0x326f84['destroy']()[_0xaa30('0x23')](function(){_0x13128a[_0xaa30('0x19')](0xcc)[_0xaa30('0x1a')]();});}};}function handleEntityNotFound(_0x12da2f,_0x97b038){return function(_0x2a59ce){if(!_0x2a59ce){_0x12da2f['sendStatus'](0x194);}return _0x2a59ce;};}function handleError(_0x467850,_0x465701){_0x465701=_0x465701||0x1f4;return function(_0x5d4da8){logger[_0xaa30('0x24')](_0x5d4da8['stack']);if(_0x5d4da8[_0xaa30('0x25')]){delete _0x5d4da8[_0xaa30('0x25')];}_0x467850[_0xaa30('0x19')](_0x465701)[_0xaa30('0x26')](_0x5d4da8);};}exports[_0xaa30('0x27')]=function(_0xc10b8f,_0x6ff09a){var _0x39f708={},_0x1f288c={},_0x43fb30={'count':0x0,'rows':[]};var _0x44aa9b=_[_0xaa30('0x28')](db[_0xaa30('0x29')][_0xaa30('0x2a')],function(_0x40e4ee){return{'name':_0x40e4ee[_0xaa30('0x2b')],'type':_0x40e4ee[_0xaa30('0x2c')][_0xaa30('0x2d')]};});_0x1f288c['model']=_[_0xaa30('0x28')](_0x44aa9b,_0xaa30('0x25'));_0x1f288c[_0xaa30('0x2e')]=_[_0xaa30('0x2f')](_0xc10b8f[_0xaa30('0x2e')]);_0x1f288c[_0xaa30('0x30')]=_['intersection'](_0x1f288c['model'],_0x1f288c['query']);_0x39f708[_0xaa30('0x31')]=_[_0xaa30('0x32')](_0x1f288c[_0xaa30('0x33')],qs[_0xaa30('0x34')](_0xc10b8f[_0xaa30('0x2e')]['fields']));_0x39f708['attributes']=_0x39f708[_0xaa30('0x31')][_0xaa30('0x35')]?_0x39f708['attributes']:_0x1f288c[_0xaa30('0x33')];if(!_0xc10b8f['query'][_0xaa30('0x36')]('nolimit')){_0x39f708[_0xaa30('0x1f')]=qs[_0xaa30('0x1f')](_0xc10b8f['query'][_0xaa30('0x1f')]);_0x39f708[_0xaa30('0x1c')]=qs[_0xaa30('0x1c')](_0xc10b8f[_0xaa30('0x2e')][_0xaa30('0x1c')]);}_0x39f708[_0xaa30('0x37')]=qs['sort'](_0xc10b8f[_0xaa30('0x2e')][_0xaa30('0x38')]);_0x39f708['where']=qs[_0xaa30('0x30')](_[_0xaa30('0x39')](_0xc10b8f[_0xaa30('0x2e')],_0x1f288c['filters']),_0x44aa9b);if(_0xc10b8f['query'][_0xaa30('0x3a')]){_0x39f708[_0xaa30('0x3b')]=_[_0xaa30('0x3c')](_0x39f708[_0xaa30('0x3b')],{'$or':_[_0xaa30('0x28')](_0x44aa9b,function(_0x291854){if(_0x291854['type']!=='VIRTUAL'){var _0x120c43={};_0x120c43[_0x291854[_0xaa30('0x25')]]={'$like':'%'+_0xc10b8f[_0xaa30('0x2e')]['filter']+'%'};return _0x120c43;}})});}_0x39f708=_[_0xaa30('0x3c')]({},_0x39f708,_0xc10b8f[_0xaa30('0x3d')]);var _0x8fb95e={'where':_0x39f708[_0xaa30('0x3b')]};return db['MailQueueReport'][_0xaa30('0x1e')](_0x8fb95e)[_0xaa30('0x23')](function(_0x2c5ddb){_0x43fb30[_0xaa30('0x1e')]=_0x2c5ddb;if(_0xc10b8f[_0xaa30('0x2e')]['includeAll']){_0x39f708[_0xaa30('0x3e')]=[{'all':!![]}];}return db[_0xaa30('0x29')][_0xaa30('0x3f')](_0x39f708);})[_0xaa30('0x23')](function(_0x13f08f){_0x43fb30[_0xaa30('0x40')]=_0x13f08f;return _0x43fb30;})[_0xaa30('0x23')](respondWithFilteredResult(_0x6ff09a,_0x39f708))[_0xaa30('0x41')](handleError(_0x6ff09a,null));};exports['show']=function(_0x59ef25,_0x18771d){var _0x4a170a={'raw':!![],'where':{'id':_0x59ef25['params']['id']}},_0x5208f8={};_0x5208f8[_0xaa30('0x33')]=_['keys'](db[_0xaa30('0x29')]['rawAttributes']);_0x5208f8[_0xaa30('0x2e')]=_[_0xaa30('0x2f')](_0x59ef25[_0xaa30('0x2e')]);_0x5208f8[_0xaa30('0x30')]=_[_0xaa30('0x32')](_0x5208f8[_0xaa30('0x33')],_0x5208f8[_0xaa30('0x2e')]);_0x4a170a[_0xaa30('0x31')]=_[_0xaa30('0x32')](_0x5208f8[_0xaa30('0x33')],qs[_0xaa30('0x34')](_0x59ef25['query'][_0xaa30('0x34')]));_0x4a170a[_0xaa30('0x31')]=_0x4a170a[_0xaa30('0x31')][_0xaa30('0x35')]?_0x4a170a[_0xaa30('0x31')]:_0x5208f8['model'];if(_0x59ef25['query'][_0xaa30('0x42')]){_0x4a170a['include']=[{'all':!![]}];}_0x4a170a=_[_0xaa30('0x3c')]({},_0x4a170a,_0x59ef25[_0xaa30('0x3d')]);return db[_0xaa30('0x29')][_0xaa30('0x43')](_0x4a170a)[_0xaa30('0x23')](handleEntityNotFound(_0x18771d,null))[_0xaa30('0x23')](respondWithResult(_0x18771d,null))[_0xaa30('0x41')](handleError(_0x18771d,null));};exports['create']=function(_0x3cf0bb,_0x6c9da6){return db[_0xaa30('0x29')]['create'](_0x3cf0bb[_0xaa30('0x44')],{})[_0xaa30('0x23')](respondWithResult(_0x6c9da6,0xc9))['catch'](handleError(_0x6c9da6,null));};exports[_0xaa30('0x22')]=function(_0x4a8fcc,_0x25d227){if(_0x4a8fcc['body']['id']){delete _0x4a8fcc['body']['id'];}return db[_0xaa30('0x29')]['find']({'where':{'id':_0x4a8fcc['params']['id']}})[_0xaa30('0x23')](handleEntityNotFound(_0x25d227,null))[_0xaa30('0x23')](saveUpdates(_0x4a8fcc[_0xaa30('0x44')],null))[_0xaa30('0x23')](respondWithResult(_0x25d227,null))[_0xaa30('0x41')](handleError(_0x25d227,null));};exports[_0xaa30('0x45')]=function(_0x5616cd,_0x17d75d){return db[_0xaa30('0x29')][_0xaa30('0x43')]({'where':{'id':_0x5616cd['params']['id']}})['then'](handleEntityNotFound(_0x17d75d,null))['then'](removeEntity(_0x17d75d,null))['catch'](handleError(_0x17d75d,null));};exports[_0xaa30('0x46')]=function(_0x1ba164,_0xdc32bc){return db[_0xaa30('0x29')][_0xaa30('0x46')]()[_0xaa30('0x23')](respondWithResult(_0xdc32bc,null))['catch'](handleError(_0xdc32bc,null));};
\ No newline at end of file
index 1ad1644..7abcd4c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x68aa=['moment','path','rimraf','../../config/environment','./mailQueueReport.attributes','exports','MailQueueReport','report_mail_queue','uniqueid','util'];(function(_0x3e13ac,_0x459047){var _0x2e7718=function(_0x10d96c){while(--_0x10d96c){_0x3e13ac['push'](_0x3e13ac['shift']());}};_0x2e7718(++_0x459047);}(_0x68aa,0x81));var _0xa68a=function(_0x553e2d,_0x271e98){_0x553e2d=_0x553e2d-0x0;var _0x1068ec=_0x68aa[_0x553e2d];return _0x1068ec;};'use strict';var _=require('lodash');var util=require(_0xa68a('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0xa68a('0x1'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xa68a('0x2'));var rimraf=require(_0xa68a('0x3'));var config=require(_0xa68a('0x4'));var attributes=require(_0xa68a('0x5'));module[_0xa68a('0x6')]=function(_0x2d1ede,_0x23a1f2){return _0x2d1ede['define'](_0xa68a('0x7'),attributes,{'tableName':_0xa68a('0x8'),'paranoid':![],'indexes':[{'name':_0xa68a('0x9'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xf5bc=['uniqueid','lodash','util','bluebird','path','rimraf','./mailQueueReport.attributes','exports','define','MailQueueReport','report_mail_queue'];(function(_0x4d40dd,_0x39592b){var _0x1c51f2=function(_0x53e502){while(--_0x53e502){_0x4d40dd['push'](_0x4d40dd['shift']());}};_0x1c51f2(++_0x39592b);}(_0xf5bc,0xb1));var _0xcf5b=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0xf5bc[_0x397e5f];return _0x5302b8;};'use strict';var _=require(_0xcf5b('0x0'));var util=require(_0xcf5b('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0xcf5b('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xcf5b('0x3'));var rimraf=require(_0xcf5b('0x4'));var config=require('../../config/environment');var attributes=require(_0xcf5b('0x5'));module[_0xcf5b('0x6')]=function(_0x4d9701,_0x28a7d1){return _0x4d9701[_0xcf5b('0x7')](_0xcf5b('0x8'),attributes,{'tableName':_0xcf5b('0x9'),'paranoid':![],'indexes':[{'name':_0xcf5b('0xa'),'fields':[_0xcf5b('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index c66db92..5a5e85f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb5=['MailQueueReport,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','CreateMailQueueReport','create','options','raw','debug','MailQueueReport','body','attributes','limit','UpdateMailQueueReport','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info'];(function(_0x4aef25,_0x5bbf0c){var _0x21894b=function(_0x40c58f){while(--_0x40c58f){_0x4aef25['push'](_0x4aef25['shift']());}};_0x21894b(++_0x5bbf0c);}(_0xadb5,0xad));var _0x5adb=function(_0x18c0c2,_0x34f2ee){_0x18c0c2=_0x18c0c2-0x0;var _0x5f37d7=_0xadb5[_0x18c0c2];return _0x5f37d7;};'use strict';var _=require('lodash');var util=require(_0x5adb('0x0'));var moment=require('moment');var BPromise=require(_0x5adb('0x1'));var rs=require(_0x5adb('0x2'));var fs=require('fs');var Redis=require(_0x5adb('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x5adb('0x4'));var logger=require(_0x5adb('0x5'))(_0x5adb('0x6'));var config=require('../../config/environment');var jayson=require(_0x5adb('0x7'));var client=jayson[_0x5adb('0x8')][_0x5adb('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3213e8,_0xdf3776,_0x353885){return new BPromise(function(_0x47228a,_0x6d1b45){return client[_0x5adb('0xa')](_0x3213e8,_0x353885)[_0x5adb('0xb')](function(_0x34f59d){logger[_0x5adb('0xc')](_0x5adb('0xd'),_0xdf3776,_0x5adb('0xe'));logger['debug']('MailQueueReport,\x20%s,\x20%s,\x20%s',_0xdf3776,_0x5adb('0xe'),JSON[_0x5adb('0xf')](_0x34f59d));if(_0x34f59d[_0x5adb('0x10')]){if(_0x34f59d['error'][_0x5adb('0x11')]===0x1f4){logger['error'](_0x5adb('0xd'),_0xdf3776,_0x34f59d['error'][_0x5adb('0x12')]);return _0x6d1b45(_0x34f59d[_0x5adb('0x10')][_0x5adb('0x12')]);}logger['error'](_0x5adb('0xd'),_0xdf3776,_0x34f59d[_0x5adb('0x10')][_0x5adb('0x12')]);return _0x47228a(_0x34f59d['error'][_0x5adb('0x12')]);}else{logger['info'](_0x5adb('0xd'),_0xdf3776,_0x5adb('0xe'));_0x47228a(_0x34f59d[_0x5adb('0x13')][_0x5adb('0x12')]);}})[_0x5adb('0x14')](function(_0x39d24d){logger[_0x5adb('0x10')](_0x5adb('0xd'),_0xdf3776,_0x39d24d);_0x6d1b45(_0x39d24d);});});}exports[_0x5adb('0x15')]=function(_0x529b65){var _0x3fff62=this;return new Promise(function(_0x5de028,_0x1d9e86){return db['MailQueueReport'][_0x5adb('0x16')](_0x529b65['body'],{'raw':_0x529b65['options']?_0x529b65[_0x5adb('0x17')][_0x5adb('0x18')]===undefined?!![]:![]:!![]})[_0x5adb('0xb')](function(_0x1fd4a7){logger[_0x5adb('0xc')]('CreateMailQueueReport',_0x529b65);logger[_0x5adb('0x19')]('CreateMailQueueReport',_0x529b65,JSON['stringify'](_0x1fd4a7));_0x5de028(_0x1fd4a7);})[_0x5adb('0x14')](function(_0x379b33){logger[_0x5adb('0x10')](_0x5adb('0x15'),_0x379b33[_0x5adb('0x12')],_0x529b65);_0x1d9e86(_0x3fff62[_0x5adb('0x10')](0x1f4,_0x379b33[_0x5adb('0x12')]));});});};exports['UpdateMailQueueReport']=function(_0x4b1957){var _0x373cc3=this;return new Promise(function(_0x3220cd,_0x3839fb){return db[_0x5adb('0x1a')]['update'](_0x4b1957[_0x5adb('0x1b')],{'raw':_0x4b1957[_0x5adb('0x17')]?_0x4b1957['options'][_0x5adb('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4b1957[_0x5adb('0x17')]?_0x4b1957[_0x5adb('0x17')]['where']||null:null,'attributes':_0x4b1957[_0x5adb('0x17')]?_0x4b1957[_0x5adb('0x17')][_0x5adb('0x1c')]||null:null,'limit':_0x4b1957[_0x5adb('0x17')]?_0x4b1957[_0x5adb('0x17')][_0x5adb('0x1d')]||null:null})['then'](function(_0x49992e){logger['info'](_0x5adb('0x1e'),_0x4b1957);logger[_0x5adb('0x19')](_0x5adb('0x1e'),_0x4b1957,JSON[_0x5adb('0xf')](_0x49992e));_0x3220cd(_0x49992e);})[_0x5adb('0x14')](function(_0x4de310){logger[_0x5adb('0x10')](_0x5adb('0x1e'),_0x4de310[_0x5adb('0x12')],_0x4b1957);_0x3839fb(_0x373cc3[_0x5adb('0x10')](0x1f4,_0x4de310[_0x5adb('0x12')]));});});};
\ No newline at end of file
+var _0x326f=['error','code','message','result','catch','CreateMailQueueReport','MailQueueReport','options','raw','stringify','UpdateMailQueueReport','body','attributes','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','info','MailQueueReport,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x470ccc,_0x36d58f){var _0x58b4b5=function(_0x559d3c){while(--_0x559d3c){_0x470ccc['push'](_0x470ccc['shift']());}};_0x58b4b5(++_0x36d58f);}(_0x326f,0xd1));var _0xf326=function(_0x3ccb7c,_0xd282ae){_0x3ccb7c=_0x3ccb7c-0x0;var _0x1101b0=_0x326f[_0x3ccb7c];return _0x1101b0;};'use strict';var _=require(_0xf326('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xf326('0x1'));var rs=require(_0xf326('0x2'));var fs=require('fs');var Redis=require(_0xf326('0x3'));var db=require(_0xf326('0x4'))['db'];var utils=require(_0xf326('0x5'));var logger=require(_0xf326('0x6'))(_0xf326('0x7'));var config=require(_0xf326('0x8'));var jayson=require(_0xf326('0x9'));var client=jayson[_0xf326('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3c254d,_0x3851eb,_0x165f95){return new BPromise(function(_0x1e7b8a,_0x515bfa){return client['request'](_0x3c254d,_0x165f95)['then'](function(_0x3bacf2){logger[_0xf326('0xb')](_0xf326('0xc'),_0x3851eb,_0xf326('0xd'));logger[_0xf326('0xe')]('MailQueueReport,\x20%s,\x20%s,\x20%s',_0x3851eb,_0xf326('0xd'),JSON['stringify'](_0x3bacf2));if(_0x3bacf2[_0xf326('0xf')]){if(_0x3bacf2['error'][_0xf326('0x10')]===0x1f4){logger['error'](_0xf326('0xc'),_0x3851eb,_0x3bacf2[_0xf326('0xf')]['message']);return _0x515bfa(_0x3bacf2[_0xf326('0xf')][_0xf326('0x11')]);}logger[_0xf326('0xf')](_0xf326('0xc'),_0x3851eb,_0x3bacf2['error'][_0xf326('0x11')]);return _0x1e7b8a(_0x3bacf2['error']['message']);}else{logger[_0xf326('0xb')](_0xf326('0xc'),_0x3851eb,_0xf326('0xd'));_0x1e7b8a(_0x3bacf2[_0xf326('0x12')][_0xf326('0x11')]);}})[_0xf326('0x13')](function(_0x34128e){logger[_0xf326('0xf')]('MailQueueReport,\x20%s,\x20%s',_0x3851eb,_0x34128e);_0x515bfa(_0x34128e);});});}exports[_0xf326('0x14')]=function(_0x453100){var _0x18bee3=this;return new Promise(function(_0x31ffb9,_0xcef2b5){return db[_0xf326('0x15')]['create'](_0x453100['body'],{'raw':_0x453100['options']?_0x453100[_0xf326('0x16')][_0xf326('0x17')]===undefined?!![]:![]:!![]})['then'](function(_0x4cabce){logger[_0xf326('0xb')]('CreateMailQueueReport',_0x453100);logger['debug'](_0xf326('0x14'),_0x453100,JSON[_0xf326('0x18')](_0x4cabce));_0x31ffb9(_0x4cabce);})['catch'](function(_0x5aa184){logger[_0xf326('0xf')](_0xf326('0x14'),_0x5aa184['message'],_0x453100);_0xcef2b5(_0x18bee3[_0xf326('0xf')](0x1f4,_0x5aa184[_0xf326('0x11')]));});});};exports[_0xf326('0x19')]=function(_0x295752){var _0x17c157=this;return new Promise(function(_0x2049ec,_0x5ce532){return db['MailQueueReport']['update'](_0x295752[_0xf326('0x1a')],{'raw':_0x295752[_0xf326('0x16')]?_0x295752[_0xf326('0x16')][_0xf326('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x295752[_0xf326('0x16')]?_0x295752[_0xf326('0x16')]['where']||null:null,'attributes':_0x295752[_0xf326('0x16')]?_0x295752[_0xf326('0x16')][_0xf326('0x1b')]||null:null,'limit':_0x295752['options']?_0x295752[_0xf326('0x16')]['limit']||null:null})['then'](function(_0x6a8e89){logger[_0xf326('0xb')](_0xf326('0x19'),_0x295752);logger['debug'](_0xf326('0x19'),_0x295752,JSON[_0xf326('0x18')](_0x6a8e89));_0x2049ec(_0x6a8e89);})['catch'](function(_0x225776){logger[_0xf326('0xf')](_0xf326('0x19'),_0x225776[_0xf326('0x11')],_0x295752);_0x5ce532(_0x17c157[_0xf326('0xf')](0x1f4,_0x225776[_0xf326('0x11')]));});});};
\ No newline at end of file
index 5e0dc6d..17099dc 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(_0x20593e,_0x2f8bde){var _0x4f8546=function(_0x41cac5){while(--_0x41cac5){_0x20593e['push'](_0x20593e['shift']());}};_0x4f8546(++_0x2f8bde);}(_0x9c44,0x178));var _0x49c4=function(_0x36c5b0,_0x5001da){_0x36c5b0=_0x36c5b0-0x0;var _0xf19333=_0x9c44[_0x36c5b0];return _0xf19333;};'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(_0x36e963,_0x61d1f9){var _0x5e4971=function(_0x1d1eeb){while(--_0x1d1eeb){_0x36e963['push'](_0x36e963['shift']());}};_0x5e4971(++_0x61d1f9);}(_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 d94a47b..4406fee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a25=['INBOX','sequelize','exports','STRING','BOOLEAN','INTEGER'];(function(_0xad372e,_0x2ffe1e){var _0x5a1c83=function(_0x5449d3){while(--_0x5449d3){_0xad372e['push'](_0xad372e['shift']());}};_0x5a1c83(++_0x2ffe1e);}(_0x3a25,0x15d));var _0x53a2=function(_0x19468b,_0xc3af){_0x19468b=_0x19468b-0x0;var _0x3a1a94=_0x3a25[_0x19468b];return _0x3a1a94;};'use strict';var Sequelize=require(_0x53a2('0x0'));module[_0x53a2('0x1')]={'description':{'type':Sequelize[_0x53a2('0x2')]},'host':{'type':Sequelize[_0x53a2('0x2')]},'authentication':{'type':Sequelize[_0x53a2('0x3')],'defaultValue':!![]},'user':{'type':Sequelize[_0x53a2('0x2')]},'password':{'type':Sequelize[_0x53a2('0x2')]},'port':{'type':Sequelize[_0x53a2('0x4')]},'tls':{'type':Sequelize[_0x53a2('0x3')],'defaultValue':!![]},'mailbox':{'type':Sequelize[_0x53a2('0x2')],'defaultValue':_0x53a2('0x5')},'connTimeout':{'type':Sequelize[_0x53a2('0x4')],'defaultValue':0xa},'authTimeout':{'type':Sequelize[_0x53a2('0x4')],'defaultValue':0x5},'service':{'type':Sequelize[_0x53a2('0x2')]}};
\ No newline at end of file
+var _0x594d=['INBOX','sequelize','STRING','BOOLEAN','INTEGER'];(function(_0x57ab84,_0x10fd0e){var _0x4caa7a=function(_0x1a20d4){while(--_0x1a20d4){_0x57ab84['push'](_0x57ab84['shift']());}};_0x4caa7a(++_0x10fd0e);}(_0x594d,0x92));var _0xd594=function(_0xa0e998,_0x370aa1){_0xa0e998=_0xa0e998-0x0;var _0x46a06a=_0x594d[_0xa0e998];return _0x46a06a;};'use strict';var Sequelize=require(_0xd594('0x0'));module['exports']={'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize[_0xd594('0x1')]},'authentication':{'type':Sequelize[_0xd594('0x2')],'defaultValue':!![]},'user':{'type':Sequelize[_0xd594('0x1')]},'password':{'type':Sequelize['STRING']},'port':{'type':Sequelize[_0xd594('0x3')]},'tls':{'type':Sequelize[_0xd594('0x2')],'defaultValue':!![]},'mailbox':{'type':Sequelize[_0xd594('0x1')],'defaultValue':_0xd594('0x4')},'connTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0xa},'authTimeout':{'type':Sequelize[_0xd594('0x3')],'defaultValue':0x5},'service':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 83fe90a..db7da42 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfec2=['path','rimraf','./mailServerIn.attributes','exports','define','MailServerIn','lodash','util','api','bluebird','request-promise'];(function(_0x16a496,_0x2380e2){var _0x5d2c35=function(_0x26fd43){while(--_0x26fd43){_0x16a496['push'](_0x16a496['shift']());}};_0x5d2c35(++_0x2380e2);}(_0xfec2,0x15b));var _0x2fec=function(_0xb3f2fa,_0x1af46){_0xb3f2fa=_0xb3f2fa-0x0;var _0x4c52b4=_0xfec2[_0xb3f2fa];return _0x4c52b4;};'use strict';var _=require(_0x2fec('0x0'));var util=require(_0x2fec('0x1'));var logger=require('../../config/logger')(_0x2fec('0x2'));var moment=require('moment');var BPromise=require(_0x2fec('0x3'));var rp=require(_0x2fec('0x4'));var fs=require('fs');var path=require(_0x2fec('0x5'));var rimraf=require(_0x2fec('0x6'));var config=require('../../config/environment');var attributes=require(_0x2fec('0x7'));module[_0x2fec('0x8')]=function(_0x4ce3dc,_0x231c4d){return _0x4ce3dc[_0x2fec('0x9')](_0x2fec('0xa'),attributes,{'tableName':'mail_servers_in','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x77a3=['MailServerIn','lodash','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./mailServerIn.attributes','exports','define'];(function(_0x365b01,_0x4d1cb4){var _0x4235f5=function(_0x5927db){while(--_0x5927db){_0x365b01['push'](_0x365b01['shift']());}};_0x4235f5(++_0x4d1cb4);}(_0x77a3,0x169));var _0x377a=function(_0x316b27,_0x4ff24b){_0x316b27=_0x316b27-0x0;var _0xf662a5=_0x77a3[_0x316b27];return _0xf662a5;};'use strict';var _=require(_0x377a('0x0'));var util=require('util');var logger=require(_0x377a('0x1'))(_0x377a('0x2'));var moment=require(_0x377a('0x3'));var BPromise=require('bluebird');var rp=require(_0x377a('0x4'));var fs=require('fs');var path=require(_0x377a('0x5'));var rimraf=require(_0x377a('0x6'));var config=require(_0x377a('0x7'));var attributes=require(_0x377a('0x8'));module[_0x377a('0x9')]=function(_0x4b8c5e,_0x2c9b7d){return _0x4b8c5e[_0x377a('0xa')](_0x377a('0xb'),attributes,{'tableName':'mail_servers_in','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 983475b..80e99f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8891=['result','catch','GetMailServerIn','MailServerIn','findAll','options','attributes','limit','include','map','model','lodash','util','bluebird','randomstring','../../mysqldb','../../config/logger','client','http','request','then','info','MailServerIn,\x20%s,\x20%s','debug','MailServerIn,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message'];(function(_0x2456bc,_0x2f9315){var _0x3492f6=function(_0x48cc48){while(--_0x48cc48){_0x2456bc['push'](_0x2456bc['shift']());}};_0x3492f6(++_0x2f9315);}(_0x8891,0x119));var _0x1889=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0x8891[_0x167cc1];return _0x10bc4b;};'use strict';var _=require(_0x1889('0x0'));var util=require(_0x1889('0x1'));var moment=require('moment');var BPromise=require(_0x1889('0x2'));var rs=require(_0x1889('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x1889('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x1889('0x5'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x1889('0x6')][_0x1889('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x3fc592,_0x4c4892,_0x2c0c3d){return new BPromise(function(_0x2b3a00,_0x2695f1){return client[_0x1889('0x8')](_0x3fc592,_0x2c0c3d)[_0x1889('0x9')](function(_0x35262d){logger[_0x1889('0xa')](_0x1889('0xb'),_0x4c4892,'request\x20sent');logger[_0x1889('0xc')](_0x1889('0xd'),_0x4c4892,_0x1889('0xe'),JSON[_0x1889('0xf')](_0x35262d));if(_0x35262d[_0x1889('0x10')]){if(_0x35262d['error'][_0x1889('0x11')]===0x1f4){logger[_0x1889('0x10')]('MailServerIn,\x20%s,\x20%s',_0x4c4892,_0x35262d[_0x1889('0x10')][_0x1889('0x12')]);return _0x2695f1(_0x35262d['error']['message']);}logger[_0x1889('0x10')]('MailServerIn,\x20%s,\x20%s',_0x4c4892,_0x35262d[_0x1889('0x10')][_0x1889('0x12')]);return _0x2b3a00(_0x35262d[_0x1889('0x10')][_0x1889('0x12')]);}else{logger[_0x1889('0xa')](_0x1889('0xb'),_0x4c4892,_0x1889('0xe'));_0x2b3a00(_0x35262d[_0x1889('0x13')]['message']);}})[_0x1889('0x14')](function(_0xeefd85){logger[_0x1889('0x10')](_0x1889('0xb'),_0x4c4892,_0xeefd85);_0x2695f1(_0xeefd85);});});}exports[_0x1889('0x15')]=function(_0x3f8e14){var _0x270c03=this;return new Promise(function(_0x336b06,_0x4c0abe){return db[_0x1889('0x16')][_0x1889('0x17')]({'raw':_0x3f8e14[_0x1889('0x18')]?_0x3f8e14['options']['raw']===undefined?!![]:![]:!![],'where':_0x3f8e14[_0x1889('0x18')]?_0x3f8e14[_0x1889('0x18')]['where']||null:null,'attributes':_0x3f8e14[_0x1889('0x18')]?_0x3f8e14[_0x1889('0x18')][_0x1889('0x19')]||null:null,'limit':_0x3f8e14[_0x1889('0x18')]?_0x3f8e14[_0x1889('0x18')][_0x1889('0x1a')]||null:null,'include':_0x3f8e14['options']?_0x3f8e14['options'][_0x1889('0x1b')]?_[_0x1889('0x1c')](_0x3f8e14[_0x1889('0x18')][_0x1889('0x1b')],function(_0x5a77c0){return{'model':db[_0x5a77c0[_0x1889('0x1d')]],'as':_0x5a77c0['as'],'attributes':_0x5a77c0[_0x1889('0x19')],'include':_0x5a77c0[_0x1889('0x1b')]?_[_0x1889('0x1c')](_0x5a77c0[_0x1889('0x1b')],function(_0x382b9f){return{'model':db[_0x382b9f['model']],'as':_0x382b9f['as'],'attributes':_0x382b9f[_0x1889('0x19')],'include':_0x382b9f[_0x1889('0x1b')]?_['map'](_0x382b9f[_0x1889('0x1b')],function(_0x12fd3f){return{'model':db[_0x12fd3f['model']],'as':_0x12fd3f['as'],'attributes':_0x12fd3f[_0x1889('0x19')]};}):[]};}):[]};}):[]:[]})[_0x1889('0x9')](function(_0x1c3e1b){logger['info'](_0x1889('0x15'),_0x3f8e14);logger[_0x1889('0xc')](_0x1889('0x15'),_0x3f8e14,JSON[_0x1889('0xf')](_0x1c3e1b));_0x336b06(_0x1c3e1b);})[_0x1889('0x14')](function(_0x1e0237){logger[_0x1889('0x10')](_0x1889('0x15'),_0x1e0237[_0x1889('0x12')],_0x3f8e14);_0x4c0abe(_0x270c03['error'](0x1f4,_0x1e0237[_0x1889('0x12')]));});});};
\ No newline at end of file
+var _0xb11e=['message','result','GetMailServerIn','options','where','attributes','map','model','include','lodash','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','client','request','then','info','MailServerIn,\x20%s,\x20%s','request\x20sent','debug','MailServerIn,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0xf1499b,_0x4e8f51){var _0x2c589c=function(_0x1039fa){while(--_0x1039fa){_0xf1499b['push'](_0xf1499b['shift']());}};_0x2c589c(++_0x4e8f51);}(_0xb11e,0x7d));var _0xeb11=function(_0x1a0f9b,_0x190e27){_0x1a0f9b=_0x1a0f9b-0x0;var _0x1a144e=_0xb11e[_0x1a0f9b];return _0x1a144e;};'use strict';var _=require(_0xeb11('0x0'));var util=require(_0xeb11('0x1'));var moment=require(_0xeb11('0x2'));var BPromise=require(_0xeb11('0x3'));var rs=require(_0xeb11('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xeb11('0x5'));var logger=require(_0xeb11('0x6'))(_0xeb11('0x7'));var config=require(_0xeb11('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xeb11('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x53b7a1,_0x203d78,_0x4994a2){return new BPromise(function(_0x5e5648,_0xfa9ff7){return client[_0xeb11('0xa')](_0x53b7a1,_0x4994a2)[_0xeb11('0xb')](function(_0x4841d3){logger[_0xeb11('0xc')](_0xeb11('0xd'),_0x203d78,_0xeb11('0xe'));logger[_0xeb11('0xf')](_0xeb11('0x10'),_0x203d78,_0xeb11('0xe'),JSON[_0xeb11('0x11')](_0x4841d3));if(_0x4841d3[_0xeb11('0x12')]){if(_0x4841d3['error'][_0xeb11('0x13')]===0x1f4){logger[_0xeb11('0x12')](_0xeb11('0xd'),_0x203d78,_0x4841d3['error'][_0xeb11('0x14')]);return _0xfa9ff7(_0x4841d3['error'][_0xeb11('0x14')]);}logger['error']('MailServerIn,\x20%s,\x20%s',_0x203d78,_0x4841d3[_0xeb11('0x12')][_0xeb11('0x14')]);return _0x5e5648(_0x4841d3[_0xeb11('0x12')][_0xeb11('0x14')]);}else{logger['info']('MailServerIn,\x20%s,\x20%s',_0x203d78,_0xeb11('0xe'));_0x5e5648(_0x4841d3[_0xeb11('0x15')][_0xeb11('0x14')]);}})['catch'](function(_0x23acb4){logger['error'](_0xeb11('0xd'),_0x203d78,_0x23acb4);_0xfa9ff7(_0x23acb4);});});}exports[_0xeb11('0x16')]=function(_0x139ff8){var _0x4b2a4a=this;return new Promise(function(_0xf36770,_0x2ef18b){return db['MailServerIn']['findAll']({'raw':_0x139ff8[_0xeb11('0x17')]?_0x139ff8[_0xeb11('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x139ff8['options']?_0x139ff8[_0xeb11('0x17')][_0xeb11('0x18')]||null:null,'attributes':_0x139ff8['options']?_0x139ff8['options'][_0xeb11('0x19')]||null:null,'limit':_0x139ff8['options']?_0x139ff8['options']['limit']||null:null,'include':_0x139ff8[_0xeb11('0x17')]?_0x139ff8[_0xeb11('0x17')]['include']?_[_0xeb11('0x1a')](_0x139ff8[_0xeb11('0x17')]['include'],function(_0x1c526d){return{'model':db[_0x1c526d[_0xeb11('0x1b')]],'as':_0x1c526d['as'],'attributes':_0x1c526d[_0xeb11('0x19')],'include':_0x1c526d['include']?_[_0xeb11('0x1a')](_0x1c526d['include'],function(_0x5b97b5){return{'model':db[_0x5b97b5[_0xeb11('0x1b')]],'as':_0x5b97b5['as'],'attributes':_0x5b97b5[_0xeb11('0x19')],'include':_0x5b97b5[_0xeb11('0x1c')]?_['map'](_0x5b97b5['include'],function(_0xca08dd){return{'model':db[_0xca08dd['model']],'as':_0xca08dd['as'],'attributes':_0xca08dd[_0xeb11('0x19')]};}):[]};}):[]};}):[]:[]})[_0xeb11('0xb')](function(_0x377abf){logger[_0xeb11('0xc')](_0xeb11('0x16'),_0x139ff8);logger['debug'](_0xeb11('0x16'),_0x139ff8,JSON[_0xeb11('0x11')](_0x377abf));_0xf36770(_0x377abf);})['catch'](function(_0x104561){logger['error'](_0xeb11('0x16'),_0x104561[_0xeb11('0x14')],_0x139ff8);_0x2ef18b(_0x4b2a4a[_0xeb11('0x12')](0x1f4,_0x104561[_0xeb11('0x14')]));});});};
\ No newline at end of file
index 4ba31c4..6117276 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['index','/:id','isAuthenticated','post','delete','destroy','exports','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailServerOut.controller','get'];(function(_0xae7c2f,_0xf31e04){var _0x5d7001=function(_0x4eeadb){while(--_0x4eeadb){_0xae7c2f['push'](_0xae7c2f['shift']());}};_0x5d7001(++_0xf31e04);}(_0x7a54,0x106));var _0x47a5=function(_0x74d50,_0x38c0b1){_0x74d50=_0x74d50-0x0;var _0x217f79=_0x7a54[_0x74d50];return _0x217f79;};'use strict';var multer=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var path=require(_0x47a5('0x2'));var timeout=require('connect-timeout');var express=require(_0x47a5('0x3'));var router=express[_0x47a5('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x47a5('0x5'));var interaction=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var controller=require(_0x47a5('0x8'));router[_0x47a5('0x9')]('/',auth['isAuthenticated'](),controller[_0x47a5('0xa')]);router['get'](_0x47a5('0xb'),auth[_0x47a5('0xc')](),controller['show']);router[_0x47a5('0xd')]('/',auth['isAuthenticated'](),controller['create']);router['put'](_0x47a5('0xb'),auth[_0x47a5('0xc')](),controller['update']);router[_0x47a5('0xe')]('/:id',auth['isAuthenticated'](),controller[_0x47a5('0xf')]);module[_0x47a5('0x10')]=router;
\ No newline at end of file
+var _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(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0x7a54,0x106));var _0x47a5=function(_0x12673c,_0x1fc43f){_0x12673c=_0x12673c-0x0;var _0x2f3343=_0x7a54[_0x12673c];return _0x2f3343;};'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 e68065b..20a979a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x62cf=['sequelize','STRING','BOOLEAN'];(function(_0x1124d7,_0x1091c1){var _0x1b9208=function(_0x171cf7){while(--_0x171cf7){_0x1124d7['push'](_0x1124d7['shift']());}};_0x1b9208(++_0x1091c1);}(_0x62cf,0x81));var _0xf62c=function(_0x53d74d,_0x1bee69){_0x53d74d=_0x53d74d-0x0;var _0x64e840=_0x62cf[_0x53d74d];return _0x64e840;};'use strict';var Sequelize=require(_0xf62c('0x0'));module['exports']={'description':{'type':Sequelize[_0xf62c('0x1')]},'host':{'type':Sequelize['STRING']},'user':{'type':Sequelize[_0xf62c('0x1')]},'pass':{'type':Sequelize[_0xf62c('0x1')]},'port':{'type':Sequelize['INTEGER']},'secure':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'service':{'type':Sequelize[_0xf62c('0x1')]},'authentication':{'type':Sequelize[_0xf62c('0x2')],'defaultValue':!![]}};
\ No newline at end of file
+var _0xf42e=['exports','STRING','BOOLEAN'];(function(_0x4e159a,_0x50f811){var _0x332513=function(_0xa668d0){while(--_0xa668d0){_0x4e159a['push'](_0x4e159a['shift']());}};_0x332513(++_0x50f811);}(_0xf42e,0x1ce));var _0xef42=function(_0xf45db3,_0x327a6a){_0xf45db3=_0xf45db3-0x0;var _0xe3f739=_0xf42e[_0xf45db3];return _0xe3f739;};'use strict';var Sequelize=require('sequelize');module[_0xef42('0x0')]={'description':{'type':Sequelize[_0xef42('0x1')]},'host':{'type':Sequelize['STRING']},'user':{'type':Sequelize[_0xef42('0x1')]},'pass':{'type':Sequelize[_0xef42('0x1')]},'port':{'type':Sequelize['INTEGER']},'secure':{'type':Sequelize[_0xef42('0x2')],'defaultValue':![]},'service':{'type':Sequelize[_0xef42('0x1')]},'authentication':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
index 770e630..d1901aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x51cc=['rawAttributes','fieldName','type','key','model','keys','filters','intersection','query','fields','attributes','length','hasOwnProperty','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','catch','show','params','create','body','find','destroy','zip-dir','fast-json-patch','moment','bluebird','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','error','stack','name','send','map','MailServerOut'];(function(_0x5ec338,_0x1d22d2){var _0x18b5c7=function(_0x596561){while(--_0x596561){_0x5ec338['push'](_0x5ec338['shift']());}};_0x18b5c7(++_0x1d22d2);}(_0x51cc,0x69));var _0xc51c=function(_0x9df060,_0x253d33){_0x9df060=_0x9df060-0x0;var _0x338dfe=_0x51cc[_0x9df060];return _0x338dfe;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xc51c('0x0'));var jsonpatch=require(_0xc51c('0x1'));var rp=require('request-promise');var moment=require(_0xc51c('0x2'));var BPromise=require(_0xc51c('0x3'));var Mustache=require(_0xc51c('0x4'));var util=require('util');var path=require('path');var sox=require(_0xc51c('0x5'));var csv=require(_0xc51c('0x6'));var ejs=require(_0xc51c('0x7'));var fs=require('fs');var fs_extra=require(_0xc51c('0x8'));var _=require(_0xc51c('0x9'));var squel=require(_0xc51c('0xa'));var crypto=require(_0xc51c('0xb'));var jsforce=require(_0xc51c('0xc'));var deskjs=require(_0xc51c('0xd'));var toCsv=require(_0xc51c('0x6'));var querystring=require(_0xc51c('0xe'));var Papa=require(_0xc51c('0xf'));var Redis=require('ioredis');var authService=require(_0xc51c('0x10'));var qs=require(_0xc51c('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc51c('0x12'));var logger=require(_0xc51c('0x13'))('api');var utils=require(_0xc51c('0x14'));var config=require(_0xc51c('0x15'));var licenseUtil=require(_0xc51c('0x16'));var db=require(_0xc51c('0x17'))['db'];function respondWithStatusCode(_0x4363b3,_0x4c5413){_0x4c5413=_0x4c5413||0xcc;return function(_0x365e96){if(_0x365e96){return _0x4363b3[_0xc51c('0x18')](_0x4c5413);}return _0x4363b3[_0xc51c('0x19')](_0x4c5413)[_0xc51c('0x1a')]();};}function respondWithResult(_0x46f8fa,_0xc6486d){_0xc6486d=_0xc6486d||0xc8;return function(_0x547c58){if(_0x547c58){return _0x46f8fa['status'](_0xc6486d)[_0xc51c('0x1b')](_0x547c58);}};}function respondWithFilteredResult(_0x335bb1,_0x51be18){return function(_0x58545a){if(_0x58545a){var _0x199a0c=typeof _0x51be18[_0xc51c('0x1c')]===_0xc51c('0x1d')&&typeof _0x51be18[_0xc51c('0x1e')]===_0xc51c('0x1d');var _0x5f72c5=_0x58545a[_0xc51c('0x1f')];var _0x5cb502=_0x199a0c?0x0:_0x51be18[_0xc51c('0x1c')];var _0x4f2adf=_0x199a0c?_0x58545a[_0xc51c('0x1f')]:_0x51be18[_0xc51c('0x1c')]+_0x51be18[_0xc51c('0x1e')];var _0x21470a;if(_0x4f2adf>=_0x5f72c5){_0x4f2adf=_0x5f72c5;_0x21470a=0xc8;}else{_0x21470a=0xce;}_0x335bb1[_0xc51c('0x19')](_0x21470a);return _0x335bb1[_0xc51c('0x20')](_0xc51c('0x21'),_0x5cb502+'-'+_0x4f2adf+'/'+_0x5f72c5)[_0xc51c('0x1b')](_0x58545a);}return null;};}function patchUpdates(_0x173efb){return function(_0x56c5a1){try{jsonpatch[_0xc51c('0x22')](_0x56c5a1,_0x173efb,!![]);}catch(_0xafeef7){return BPromise[_0xc51c('0x23')](_0xafeef7);}return _0x56c5a1[_0xc51c('0x24')]();};}function saveUpdates(_0x505433,_0x22f662){return function(_0x33630a){if(_0x33630a){return _0x33630a[_0xc51c('0x25')](_0x505433)[_0xc51c('0x26')](function(_0x2e648c){return _0x2e648c;});}return null;};}function removeEntity(_0x12e9b1,_0x2455a3){return function(_0x54247a){if(_0x54247a){return _0x54247a['destroy']()[_0xc51c('0x26')](function(){_0x12e9b1[_0xc51c('0x19')](0xcc)[_0xc51c('0x1a')]();});}};}function handleEntityNotFound(_0x5820e1,_0x298c78){return function(_0x22d3e4){if(!_0x22d3e4){_0x5820e1['sendStatus'](0x194);}return _0x22d3e4;};}function handleError(_0x16eb41,_0x30340d){_0x30340d=_0x30340d||0x1f4;return function(_0x4eefe4){logger[_0xc51c('0x27')](_0x4eefe4[_0xc51c('0x28')]);if(_0x4eefe4[_0xc51c('0x29')]){delete _0x4eefe4['name'];}_0x16eb41[_0xc51c('0x19')](_0x30340d)[_0xc51c('0x2a')](_0x4eefe4);};}exports['index']=function(_0x1eee35,_0x2b2794){var _0x33f487={},_0x4194a2={},_0x410500={'count':0x0,'rows':[]};var _0x17b5ff=_[_0xc51c('0x2b')](db[_0xc51c('0x2c')][_0xc51c('0x2d')],function(_0x1e6209){return{'name':_0x1e6209[_0xc51c('0x2e')],'type':_0x1e6209[_0xc51c('0x2f')][_0xc51c('0x30')]};});_0x4194a2[_0xc51c('0x31')]=_[_0xc51c('0x2b')](_0x17b5ff,'name');_0x4194a2['query']=_[_0xc51c('0x32')](_0x1eee35['query']);_0x4194a2[_0xc51c('0x33')]=_[_0xc51c('0x34')](_0x4194a2[_0xc51c('0x31')],_0x4194a2[_0xc51c('0x35')]);_0x33f487['attributes']=_[_0xc51c('0x34')](_0x4194a2[_0xc51c('0x31')],qs[_0xc51c('0x36')](_0x1eee35[_0xc51c('0x35')]['fields']));_0x33f487[_0xc51c('0x37')]=_0x33f487[_0xc51c('0x37')][_0xc51c('0x38')]?_0x33f487['attributes']:_0x4194a2[_0xc51c('0x31')];if(!_0x1eee35[_0xc51c('0x35')][_0xc51c('0x39')]('nolimit')){_0x33f487['limit']=qs[_0xc51c('0x1e')](_0x1eee35[_0xc51c('0x35')][_0xc51c('0x1e')]);_0x33f487[_0xc51c('0x1c')]=qs[_0xc51c('0x1c')](_0x1eee35[_0xc51c('0x35')]['offset']);}_0x33f487['order']=qs[_0xc51c('0x3a')](_0x1eee35[_0xc51c('0x35')][_0xc51c('0x3a')]);_0x33f487[_0xc51c('0x3b')]=qs['filters'](_[_0xc51c('0x3c')](_0x1eee35[_0xc51c('0x35')],_0x4194a2[_0xc51c('0x33')]),_0x17b5ff);if(_0x1eee35[_0xc51c('0x35')][_0xc51c('0x3d')]){_0x33f487[_0xc51c('0x3b')]=_['merge'](_0x33f487[_0xc51c('0x3b')],{'$or':_[_0xc51c('0x2b')](_0x17b5ff,function(_0x40c396){if(_0x40c396['type']!==_0xc51c('0x3e')){var _0x4c78b3={};_0x4c78b3[_0x40c396['name']]={'$like':'%'+_0x1eee35[_0xc51c('0x35')][_0xc51c('0x3d')]+'%'};return _0x4c78b3;}})});}_0x33f487=_[_0xc51c('0x3f')]({},_0x33f487,_0x1eee35[_0xc51c('0x40')]);var _0x2377bc={'where':_0x33f487[_0xc51c('0x3b')]};return db[_0xc51c('0x2c')]['count'](_0x2377bc)[_0xc51c('0x26')](function(_0x5631d9){_0x410500[_0xc51c('0x1f')]=_0x5631d9;if(_0x1eee35[_0xc51c('0x35')][_0xc51c('0x41')]){_0x33f487[_0xc51c('0x42')]=[{'all':!![]}];}return db['MailServerOut'][_0xc51c('0x43')](_0x33f487);})[_0xc51c('0x26')](function(_0x1a5ed1){_0x410500['rows']=_0x1a5ed1;return _0x410500;})['then'](respondWithFilteredResult(_0x2b2794,_0x33f487))[_0xc51c('0x44')](handleError(_0x2b2794,null));};exports[_0xc51c('0x45')]=function(_0x16a546,_0x13abe6){var _0xb2cb8c={'raw':!![],'where':{'id':_0x16a546[_0xc51c('0x46')]['id']}},_0x17d7b8={};_0x17d7b8[_0xc51c('0x31')]=_[_0xc51c('0x32')](db['MailServerOut'][_0xc51c('0x2d')]);_0x17d7b8[_0xc51c('0x35')]=_[_0xc51c('0x32')](_0x16a546['query']);_0x17d7b8['filters']=_[_0xc51c('0x34')](_0x17d7b8[_0xc51c('0x31')],_0x17d7b8[_0xc51c('0x35')]);_0xb2cb8c[_0xc51c('0x37')]=_['intersection'](_0x17d7b8[_0xc51c('0x31')],qs['fields'](_0x16a546[_0xc51c('0x35')][_0xc51c('0x36')]));_0xb2cb8c[_0xc51c('0x37')]=_0xb2cb8c['attributes'][_0xc51c('0x38')]?_0xb2cb8c[_0xc51c('0x37')]:_0x17d7b8[_0xc51c('0x31')];if(_0x16a546['query']['includeAll']){_0xb2cb8c[_0xc51c('0x42')]=[{'all':!![]}];}_0xb2cb8c=_[_0xc51c('0x3f')]({},_0xb2cb8c,_0x16a546[_0xc51c('0x40')]);return db[_0xc51c('0x2c')]['find'](_0xb2cb8c)[_0xc51c('0x26')](handleEntityNotFound(_0x13abe6,null))[_0xc51c('0x26')](respondWithResult(_0x13abe6,null))[_0xc51c('0x44')](handleError(_0x13abe6,null));};exports[_0xc51c('0x47')]=function(_0x1869ac,_0x5961ac){return db[_0xc51c('0x2c')]['create'](_0x1869ac[_0xc51c('0x48')],{})[_0xc51c('0x26')](respondWithResult(_0x5961ac,0xc9))['catch'](handleError(_0x5961ac,null));};exports[_0xc51c('0x25')]=function(_0x18691a,_0x4e21c3){if(_0x18691a[_0xc51c('0x48')]['id']){delete _0x18691a[_0xc51c('0x48')]['id'];}return db['MailServerOut'][_0xc51c('0x49')]({'where':{'id':_0x18691a[_0xc51c('0x46')]['id']}})[_0xc51c('0x26')](handleEntityNotFound(_0x4e21c3,null))[_0xc51c('0x26')](saveUpdates(_0x18691a[_0xc51c('0x48')],null))[_0xc51c('0x26')](respondWithResult(_0x4e21c3,null))[_0xc51c('0x44')](handleError(_0x4e21c3,null));};exports[_0xc51c('0x4a')]=function(_0x1b6faa,_0x522d3f){return db[_0xc51c('0x2c')][_0xc51c('0x49')]({'where':{'id':_0x1b6faa[_0xc51c('0x46')]['id']}})[_0xc51c('0x26')](handleEntityNotFound(_0x522d3f,null))['then'](removeEntity(_0x522d3f,null))[_0xc51c('0x44')](handleError(_0x522d3f,null));};
\ No newline at end of file
+var _0xf744=['pick','filter','merge','type','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','update','destroy','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','undefined','limit','count','set','Content-Range','apply','save','then','error','stack','name','index','map','MailServerOut','rawAttributes','fieldName','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','sort','where','filters'];(function(_0x49965a,_0x27c09a){var _0x2aa99d=function(_0xd811e4){while(--_0xd811e4){_0x49965a['push'](_0x49965a['shift']());}};_0x2aa99d(++_0x27c09a);}(_0xf744,0x1c7));var _0x4f74=function(_0x42bdad,_0x12836c){_0x42bdad=_0x42bdad-0x0;var _0x122626=_0xf744[_0x42bdad];return _0x122626;};'use strict';var emlformat=require(_0x4f74('0x0'));var rimraf=require(_0x4f74('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x4f74('0x2'));var rp=require(_0x4f74('0x3'));var moment=require(_0x4f74('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x4f74('0x5'));var util=require(_0x4f74('0x6'));var path=require(_0x4f74('0x7'));var sox=require(_0x4f74('0x8'));var csv=require(_0x4f74('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4f74('0xa'));var _=require('lodash');var squel=require(_0x4f74('0xb'));var crypto=require(_0x4f74('0xc'));var jsforce=require(_0x4f74('0xd'));var deskjs=require(_0x4f74('0xe'));var toCsv=require('to-csv');var querystring=require(_0x4f74('0xf'));var Papa=require(_0x4f74('0x10'));var Redis=require('ioredis');var authService=require(_0x4f74('0x11'));var qs=require(_0x4f74('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x4f74('0x13'))(_0x4f74('0x14'));var utils=require(_0x4f74('0x15'));var config=require(_0x4f74('0x16'));var licenseUtil=require(_0x4f74('0x17'));var db=require(_0x4f74('0x18'))['db'];function respondWithStatusCode(_0x5b6891,_0x80744b){_0x80744b=_0x80744b||0xcc;return function(_0x2dbc4b){if(_0x2dbc4b){return _0x5b6891[_0x4f74('0x19')](_0x80744b);}return _0x5b6891['status'](_0x80744b)[_0x4f74('0x1a')]();};}function respondWithResult(_0x579ded,_0x34565a){_0x34565a=_0x34565a||0xc8;return function(_0x4dc948){if(_0x4dc948){return _0x579ded[_0x4f74('0x1b')](_0x34565a)['json'](_0x4dc948);}};}function respondWithFilteredResult(_0x2ca6f8,_0x4142ae){return function(_0x10653c){if(_0x10653c){var _0x4566d9=typeof _0x4142ae[_0x4f74('0x1c')]===_0x4f74('0x1d')&&typeof _0x4142ae[_0x4f74('0x1e')]===_0x4f74('0x1d');var _0x14627e=_0x10653c[_0x4f74('0x1f')];var _0x3109a3=_0x4566d9?0x0:_0x4142ae[_0x4f74('0x1c')];var _0x210d69=_0x4566d9?_0x10653c[_0x4f74('0x1f')]:_0x4142ae['offset']+_0x4142ae['limit'];var _0x402629;if(_0x210d69>=_0x14627e){_0x210d69=_0x14627e;_0x402629=0xc8;}else{_0x402629=0xce;}_0x2ca6f8[_0x4f74('0x1b')](_0x402629);return _0x2ca6f8[_0x4f74('0x20')](_0x4f74('0x21'),_0x3109a3+'-'+_0x210d69+'/'+_0x14627e)['json'](_0x10653c);}return null;};}function patchUpdates(_0x452c78){return function(_0x43e50f){try{jsonpatch[_0x4f74('0x22')](_0x43e50f,_0x452c78,!![]);}catch(_0x1eb4da){return BPromise['reject'](_0x1eb4da);}return _0x43e50f[_0x4f74('0x23')]();};}function saveUpdates(_0x7e9099,_0x2d34c4){return function(_0x454f36){if(_0x454f36){return _0x454f36['update'](_0x7e9099)['then'](function(_0x4257a2){return _0x4257a2;});}return null;};}function removeEntity(_0x3da683,_0x4d6169){return function(_0x1a0b2a){if(_0x1a0b2a){return _0x1a0b2a['destroy']()[_0x4f74('0x24')](function(){_0x3da683['status'](0xcc)[_0x4f74('0x1a')]();});}};}function handleEntityNotFound(_0x4b402f,_0x4fa88b){return function(_0xc621bf){if(!_0xc621bf){_0x4b402f[_0x4f74('0x19')](0x194);}return _0xc621bf;};}function handleError(_0x406102,_0x2badb4){_0x2badb4=_0x2badb4||0x1f4;return function(_0x53f355){logger[_0x4f74('0x25')](_0x53f355[_0x4f74('0x26')]);if(_0x53f355[_0x4f74('0x27')]){delete _0x53f355[_0x4f74('0x27')];}_0x406102[_0x4f74('0x1b')](_0x2badb4)['send'](_0x53f355);};}exports[_0x4f74('0x28')]=function(_0x5e1fa0,_0x16dfe3){var _0x5ced35={},_0x20b7d5={},_0x27e1a4={'count':0x0,'rows':[]};var _0x208405=_[_0x4f74('0x29')](db[_0x4f74('0x2a')][_0x4f74('0x2b')],function(_0x4372ff){return{'name':_0x4372ff[_0x4f74('0x2c')],'type':_0x4372ff['type']['key']};});_0x20b7d5[_0x4f74('0x2d')]=_['map'](_0x208405,_0x4f74('0x27'));_0x20b7d5[_0x4f74('0x2e')]=_[_0x4f74('0x2f')](_0x5e1fa0['query']);_0x20b7d5['filters']=_[_0x4f74('0x30')](_0x20b7d5[_0x4f74('0x2d')],_0x20b7d5[_0x4f74('0x2e')]);_0x5ced35[_0x4f74('0x31')]=_[_0x4f74('0x30')](_0x20b7d5[_0x4f74('0x2d')],qs[_0x4f74('0x32')](_0x5e1fa0[_0x4f74('0x2e')][_0x4f74('0x32')]));_0x5ced35['attributes']=_0x5ced35[_0x4f74('0x31')][_0x4f74('0x33')]?_0x5ced35[_0x4f74('0x31')]:_0x20b7d5[_0x4f74('0x2d')];if(!_0x5e1fa0['query'][_0x4f74('0x34')]('nolimit')){_0x5ced35['limit']=qs[_0x4f74('0x1e')](_0x5e1fa0[_0x4f74('0x2e')][_0x4f74('0x1e')]);_0x5ced35['offset']=qs[_0x4f74('0x1c')](_0x5e1fa0[_0x4f74('0x2e')][_0x4f74('0x1c')]);}_0x5ced35['order']=qs['sort'](_0x5e1fa0[_0x4f74('0x2e')][_0x4f74('0x35')]);_0x5ced35[_0x4f74('0x36')]=qs[_0x4f74('0x37')](_[_0x4f74('0x38')](_0x5e1fa0[_0x4f74('0x2e')],_0x20b7d5[_0x4f74('0x37')]),_0x208405);if(_0x5e1fa0['query'][_0x4f74('0x39')]){_0x5ced35[_0x4f74('0x36')]=_[_0x4f74('0x3a')](_0x5ced35['where'],{'$or':_[_0x4f74('0x29')](_0x208405,function(_0x4d481b){if(_0x4d481b[_0x4f74('0x3b')]!=='VIRTUAL'){var _0x2889e4={};_0x2889e4[_0x4d481b[_0x4f74('0x27')]]={'$like':'%'+_0x5e1fa0['query'][_0x4f74('0x39')]+'%'};return _0x2889e4;}})});}_0x5ced35=_['merge']({},_0x5ced35,_0x5e1fa0[_0x4f74('0x3c')]);var _0x542831={'where':_0x5ced35[_0x4f74('0x36')]};return db[_0x4f74('0x2a')][_0x4f74('0x1f')](_0x542831)[_0x4f74('0x24')](function(_0x1ffa02){_0x27e1a4['count']=_0x1ffa02;if(_0x5e1fa0['query'][_0x4f74('0x3d')]){_0x5ced35[_0x4f74('0x3e')]=[{'all':!![]}];}return db['MailServerOut'][_0x4f74('0x3f')](_0x5ced35);})[_0x4f74('0x24')](function(_0x349cfb){_0x27e1a4[_0x4f74('0x40')]=_0x349cfb;return _0x27e1a4;})[_0x4f74('0x24')](respondWithFilteredResult(_0x16dfe3,_0x5ced35))[_0x4f74('0x41')](handleError(_0x16dfe3,null));};exports[_0x4f74('0x42')]=function(_0x29c106,_0x5234dd){var _0x4da81f={'raw':!![],'where':{'id':_0x29c106[_0x4f74('0x43')]['id']}},_0x4731da={};_0x4731da[_0x4f74('0x2d')]=_[_0x4f74('0x2f')](db[_0x4f74('0x2a')][_0x4f74('0x2b')]);_0x4731da[_0x4f74('0x2e')]=_[_0x4f74('0x2f')](_0x29c106[_0x4f74('0x2e')]);_0x4731da[_0x4f74('0x37')]=_[_0x4f74('0x30')](_0x4731da['model'],_0x4731da[_0x4f74('0x2e')]);_0x4da81f[_0x4f74('0x31')]=_[_0x4f74('0x30')](_0x4731da[_0x4f74('0x2d')],qs[_0x4f74('0x32')](_0x29c106[_0x4f74('0x2e')]['fields']));_0x4da81f[_0x4f74('0x31')]=_0x4da81f[_0x4f74('0x31')][_0x4f74('0x33')]?_0x4da81f[_0x4f74('0x31')]:_0x4731da['model'];if(_0x29c106[_0x4f74('0x2e')][_0x4f74('0x3d')]){_0x4da81f[_0x4f74('0x3e')]=[{'all':!![]}];}_0x4da81f=_['merge']({},_0x4da81f,_0x29c106[_0x4f74('0x3c')]);return db[_0x4f74('0x2a')][_0x4f74('0x44')](_0x4da81f)[_0x4f74('0x24')](handleEntityNotFound(_0x5234dd,null))[_0x4f74('0x24')](respondWithResult(_0x5234dd,null))[_0x4f74('0x41')](handleError(_0x5234dd,null));};exports[_0x4f74('0x45')]=function(_0x573664,_0x45c5c3){return db['MailServerOut'][_0x4f74('0x45')](_0x573664[_0x4f74('0x46')],{})[_0x4f74('0x24')](respondWithResult(_0x45c5c3,0xc9))['catch'](handleError(_0x45c5c3,null));};exports[_0x4f74('0x47')]=function(_0x4e7391,_0x1cc891){if(_0x4e7391['body']['id']){delete _0x4e7391[_0x4f74('0x46')]['id'];}return db['MailServerOut'][_0x4f74('0x44')]({'where':{'id':_0x4e7391['params']['id']}})[_0x4f74('0x24')](handleEntityNotFound(_0x1cc891,null))[_0x4f74('0x24')](saveUpdates(_0x4e7391[_0x4f74('0x46')],null))[_0x4f74('0x24')](respondWithResult(_0x1cc891,null))[_0x4f74('0x41')](handleError(_0x1cc891,null));};exports[_0x4f74('0x48')]=function(_0x39ac28,_0x54f385){return db['MailServerOut']['find']({'where':{'id':_0x39ac28['params']['id']}})['then'](handleEntityNotFound(_0x54f385,null))[_0x4f74('0x24')](removeEntity(_0x54f385,null))['catch'](handleError(_0x54f385,null));};
\ No newline at end of file
index d25dd3c..e0d77bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4f7=['lodash','util','../../config/logger','moment','request-promise','path','rimraf','../../config/environment','./mailServerOut.attributes','exports','define'];(function(_0x1ccfd8,_0x5a3002){var _0xc05115=function(_0x177d4c){while(--_0x177d4c){_0x1ccfd8['push'](_0x1ccfd8['shift']());}};_0xc05115(++_0x5a3002);}(_0xc4f7,0x1c3));var _0x7c4f=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0xc4f7[_0x167cc1];return _0x10bc4b;};'use strict';var _=require(_0x7c4f('0x0'));var util=require(_0x7c4f('0x1'));var logger=require(_0x7c4f('0x2'))('api');var moment=require(_0x7c4f('0x3'));var BPromise=require('bluebird');var rp=require(_0x7c4f('0x4'));var fs=require('fs');var path=require(_0x7c4f('0x5'));var rimraf=require(_0x7c4f('0x6'));var config=require(_0x7c4f('0x7'));var attributes=require(_0x7c4f('0x8'));module[_0x7c4f('0x9')]=function(_0x370aff,_0x495460){return _0x370aff[_0x7c4f('0xa')]('MailServerOut',attributes,{'tableName':'mail_servers_out','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc3dc=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./mailServerOut.attributes','MailServerOut','mail_servers_out','util','api'];(function(_0x526c22,_0x231db0){var _0x18cff8=function(_0x470df0){while(--_0x470df0){_0x526c22['push'](_0x526c22['shift']());}};_0x18cff8(++_0x231db0);}(_0xc3dc,0x82));var _0xcc3d=function(_0x273502,_0x1c173c){_0x273502=_0x273502-0x0;var _0x379e87=_0xc3dc[_0x273502];return _0x379e87;};'use strict';var _=require('lodash');var util=require(_0xcc3d('0x0'));var logger=require('../../config/logger')(_0xcc3d('0x1'));var moment=require(_0xcc3d('0x2'));var BPromise=require(_0xcc3d('0x3'));var rp=require(_0xcc3d('0x4'));var fs=require('fs');var path=require(_0xcc3d('0x5'));var rimraf=require(_0xcc3d('0x6'));var config=require(_0xcc3d('0x7'));var attributes=require(_0xcc3d('0x8'));module['exports']=function(_0x10dab9,_0x3844a2){return _0x10dab9['define'](_0xcc3d('0x9'),attributes,{'tableName':_0xcc3d('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2d7ecf2..2328e3c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4aa=['moment','bluebird','randomstring','ioredis','rpc','../../config/environment','jayson/promise','client','http','request','then','MailServerOut,\x20%s,\x20%s','request\x20sent','debug','error','code','message','info','catch','lodash','util'];(function(_0x521198,_0x530ecc){var _0x378d25=function(_0x37d2a8){while(--_0x37d2a8){_0x521198['push'](_0x521198['shift']());}};_0x378d25(++_0x530ecc);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x45d55e,_0x2fede3){_0x45d55e=_0x45d55e-0x0;var _0x29812a=_0xc4aa[_0x45d55e];return _0x29812a;};'use strict';var _=require(_0xac4a('0x0'));var util=require(_0xac4a('0x1'));var moment=require(_0xac4a('0x2'));var BPromise=require(_0xac4a('0x3'));var rs=require(_0xac4a('0x4'));var fs=require('fs');var Redis=require(_0xac4a('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xac4a('0x6'));var config=require(_0xac4a('0x7'));var jayson=require(_0xac4a('0x8'));var client=jayson[_0xac4a('0x9')][_0xac4a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x15cd34,_0x3ef77c,_0x10525b){return new BPromise(function(_0x5c6179,_0x5b8339){return client[_0xac4a('0xb')](_0x15cd34,_0x10525b)[_0xac4a('0xc')](function(_0x26ec84){logger['info'](_0xac4a('0xd'),_0x3ef77c,_0xac4a('0xe'));logger[_0xac4a('0xf')]('MailServerOut,\x20%s,\x20%s,\x20%s',_0x3ef77c,_0xac4a('0xe'),JSON['stringify'](_0x26ec84));if(_0x26ec84[_0xac4a('0x10')]){if(_0x26ec84['error'][_0xac4a('0x11')]===0x1f4){logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x26ec84['error'][_0xac4a('0x12')]);return _0x5b8339(_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);}logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);return _0x5c6179(_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);}else{logger[_0xac4a('0x13')](_0xac4a('0xd'),_0x3ef77c,_0xac4a('0xe'));_0x5c6179(_0x26ec84['result'][_0xac4a('0x12')]);}})[_0xac4a('0x14')](function(_0x23eb66){logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x23eb66);_0x5b8339(_0x23eb66);});});}
\ No newline at end of file
+var _0xdb28=['moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','then','MailServerOut,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','catch','lodash','util'];(function(_0x1589ea,_0x2ad4be){var _0x5889dd=function(_0x21c116){while(--_0x21c116){_0x1589ea['push'](_0x1589ea['shift']());}};_0x5889dd(++_0x2ad4be);}(_0xdb28,0x106));var _0x8db2=function(_0x593c55,_0xb282ce){_0x593c55=_0x593c55-0x0;var _0x38872d=_0xdb28[_0x593c55];return _0x38872d;};'use strict';var _=require(_0x8db2('0x0'));var util=require(_0x8db2('0x1'));var moment=require(_0x8db2('0x2'));var BPromise=require(_0x8db2('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8db2('0x4'));var db=require(_0x8db2('0x5'))['db'];var utils=require(_0x8db2('0x6'));var logger=require(_0x8db2('0x7'))(_0x8db2('0x8'));var config=require('../../config/environment');var jayson=require(_0x8db2('0x9'));var client=jayson[_0x8db2('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x494b40,_0x477f50,_0x46932f){return new BPromise(function(_0x131537,_0x29f698){return client[_0x8db2('0xb')](_0x494b40,_0x46932f)[_0x8db2('0xc')](function(_0x126c78){logger['info'](_0x8db2('0xd'),_0x477f50,_0x8db2('0xe'));logger[_0x8db2('0xf')]('MailServerOut,\x20%s,\x20%s,\x20%s',_0x477f50,_0x8db2('0xe'),JSON[_0x8db2('0x10')](_0x126c78));if(_0x126c78['error']){if(_0x126c78[_0x8db2('0x11')][_0x8db2('0x12')]===0x1f4){logger[_0x8db2('0x11')](_0x8db2('0xd'),_0x477f50,_0x126c78[_0x8db2('0x11')]['message']);return _0x29f698(_0x126c78['error'][_0x8db2('0x13')]);}logger[_0x8db2('0x11')](_0x8db2('0xd'),_0x477f50,_0x126c78[_0x8db2('0x11')][_0x8db2('0x13')]);return _0x131537(_0x126c78[_0x8db2('0x11')][_0x8db2('0x13')]);}else{logger[_0x8db2('0x14')](_0x8db2('0xd'),_0x477f50,_0x8db2('0xe'));_0x131537(_0x126c78['result'][_0x8db2('0x13')]);}})[_0x8db2('0x15')](function(_0x48101e){logger[_0x8db2('0x11')](_0x8db2('0xd'),_0x477f50,_0x48101e);_0x29f698(_0x48101e);});});}
\ No newline at end of file
index 3f22077..753d44d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc38c=['multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailSubstatus.controller','get','isAuthenticated','index','/describe','/:id','show','post','update','delete','exports'];(function(_0x3dfed5,_0x2d800a){var _0x1266f0=function(_0x18228c){while(--_0x18228c){_0x3dfed5['push'](_0x3dfed5['shift']());}};_0x1266f0(++_0x2d800a);}(_0xc38c,0xd1));var _0xcc38=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xc38c[_0x14add3];return _0x4a174f;};'use strict';var multer=require(_0xcc38('0x0'));var util=require('util');var path=require(_0xcc38('0x1'));var timeout=require(_0xcc38('0x2'));var express=require('express');var router=express[_0xcc38('0x3')]();var fs_extra=require(_0xcc38('0x4'));var auth=require(_0xcc38('0x5'));var interaction=require(_0xcc38('0x6'));var config=require(_0xcc38('0x7'));var controller=require(_0xcc38('0x8'));router[_0xcc38('0x9')]('/',auth[_0xcc38('0xa')](),controller[_0xcc38('0xb')]);router[_0xcc38('0x9')](_0xcc38('0xc'),auth[_0xcc38('0xa')](),controller['describe']);router[_0xcc38('0x9')](_0xcc38('0xd'),auth[_0xcc38('0xa')](),controller[_0xcc38('0xe')]);router[_0xcc38('0xf')]('/',auth[_0xcc38('0xa')](),controller['create']);router['put'](_0xcc38('0xd'),auth[_0xcc38('0xa')](),controller[_0xcc38('0x10')]);router[_0xcc38('0x11')]('/:id',auth[_0xcc38('0xa')](),controller['destroy']);module[_0xcc38('0x12')]=router;
\ No newline at end of file
+var _0x90d8=['post','create','put','update','delete','/:id','destroy','multer','util','connect-timeout','express','Router','fs-extra','../../components/interaction/service','get','isAuthenticated','/describe','describe'];(function(_0x3eb45c,_0x3cd6cf){var _0x4ab028=function(_0x41fafe){while(--_0x41fafe){_0x3eb45c['push'](_0x3eb45c['shift']());}};_0x4ab028(++_0x3cd6cf);}(_0x90d8,0x14b));var _0x890d=function(_0x316af7,_0x72e80c){_0x316af7=_0x316af7-0x0;var _0x286d96=_0x90d8[_0x316af7];return _0x286d96;};'use strict';var multer=require(_0x890d('0x0'));var util=require(_0x890d('0x1'));var path=require('path');var timeout=require(_0x890d('0x2'));var express=require(_0x890d('0x3'));var router=express[_0x890d('0x4')]();var fs_extra=require(_0x890d('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x890d('0x6'));var config=require('../../config/environment');var controller=require('./mailSubstatus.controller');router[_0x890d('0x7')]('/',auth[_0x890d('0x8')](),controller['index']);router[_0x890d('0x7')](_0x890d('0x9'),auth[_0x890d('0x8')](),controller[_0x890d('0xa')]);router[_0x890d('0x7')]('/:id',auth[_0x890d('0x8')](),controller['show']);router[_0x890d('0xb')]('/',auth[_0x890d('0x8')](),controller[_0x890d('0xc')]);router[_0x890d('0xd')]('/:id',auth['isAuthenticated'](),controller[_0x890d('0xe')]);router[_0x890d('0xf')](_0x890d('0x10'),auth[_0x890d('0x8')](),controller[_0x890d('0x11')]);module['exports']=router;
\ No newline at end of file
index 992928f..fa8fa8e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7278=['name','sequelize','exports','STRING'];(function(_0x2a6809,_0x44edde){var _0x11c371=function(_0x1a4888){while(--_0x1a4888){_0x2a6809['push'](_0x2a6809['shift']());}};_0x11c371(++_0x44edde);}(_0x7278,0x161));var _0x8727=function(_0x9ba74b,_0x3c81d2){_0x9ba74b=_0x9ba74b-0x0;var _0x168609=_0x7278[_0x9ba74b];return _0x168609;};'use strict';var Sequelize=require(_0x8727('0x0'));module[_0x8727('0x1')]={'name':{'type':Sequelize[_0x8727('0x2')],'unique':_0x8727('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x8727('0x2')]}};
\ No newline at end of file
+'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize['STRING'],'unique':'name','allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index f959e6b..f4a697b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb720=['set','Content-Range','apply','save','update','then','destroy','name','send','index','map','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','filter','merge','options','MailSubstatus','includeAll','include','rows','catch','show','params','find','create','body','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/utils','sendStatus','status','end','json','offset','limit','undefined','count'];(function(_0x481181,_0xe78cba){var _0x39d1a9=function(_0x5e29f4){while(--_0x5e29f4){_0x481181['push'](_0x481181['shift']());}};_0x39d1a9(++_0xe78cba);}(_0xb720,0x191));var _0x0b72=function(_0x5e8763,_0x558211){_0x5e8763=_0x5e8763-0x0;var _0x286b08=_0xb720[_0x5e8763];return _0x286b08;};'use strict';var emlformat=require(_0x0b72('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x0b72('0x1'));var jsonpatch=require(_0x0b72('0x2'));var rp=require(_0x0b72('0x3'));var moment=require(_0x0b72('0x4'));var BPromise=require(_0x0b72('0x5'));var Mustache=require(_0x0b72('0x6'));var util=require(_0x0b72('0x7'));var path=require(_0x0b72('0x8'));var sox=require(_0x0b72('0x9'));var csv=require('to-csv');var ejs=require(_0x0b72('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x0b72('0xb'));var squel=require(_0x0b72('0xc'));var crypto=require(_0x0b72('0xd'));var jsforce=require(_0x0b72('0xe'));var deskjs=require(_0x0b72('0xf'));var toCsv=require(_0x0b72('0x10'));var querystring=require(_0x0b72('0x11'));var Papa=require(_0x0b72('0x12'));var Redis=require(_0x0b72('0x13'));var authService=require('../../components/auth/service');var qs=require(_0x0b72('0x14'));var as=require(_0x0b72('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0x0b72('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x356034,_0x1fa33c){_0x1fa33c=_0x1fa33c||0xcc;return function(_0x2d4f3f){if(_0x2d4f3f){return _0x356034[_0x0b72('0x17')](_0x1fa33c);}return _0x356034[_0x0b72('0x18')](_0x1fa33c)[_0x0b72('0x19')]();};}function respondWithResult(_0x2083dc,_0x5e31ca){_0x5e31ca=_0x5e31ca||0xc8;return function(_0x3174c5){if(_0x3174c5){return _0x2083dc['status'](_0x5e31ca)[_0x0b72('0x1a')](_0x3174c5);}};}function respondWithFilteredResult(_0x405317,_0x3da564){return function(_0x192bc7){if(_0x192bc7){var _0x181244=typeof _0x3da564[_0x0b72('0x1b')]==='undefined'&&typeof _0x3da564[_0x0b72('0x1c')]===_0x0b72('0x1d');var _0x1a3243=_0x192bc7['count'];var _0x3713aa=_0x181244?0x0:_0x3da564['offset'];var _0xfe7a75=_0x181244?_0x192bc7[_0x0b72('0x1e')]:_0x3da564['offset']+_0x3da564[_0x0b72('0x1c')];var _0x1ff36b;if(_0xfe7a75>=_0x1a3243){_0xfe7a75=_0x1a3243;_0x1ff36b=0xc8;}else{_0x1ff36b=0xce;}_0x405317[_0x0b72('0x18')](_0x1ff36b);return _0x405317[_0x0b72('0x1f')](_0x0b72('0x20'),_0x3713aa+'-'+_0xfe7a75+'/'+_0x1a3243)['json'](_0x192bc7);}return null;};}function patchUpdates(_0x1e793d){return function(_0x202b58){try{jsonpatch[_0x0b72('0x21')](_0x202b58,_0x1e793d,!![]);}catch(_0x538480){return BPromise['reject'](_0x538480);}return _0x202b58[_0x0b72('0x22')]();};}function saveUpdates(_0x1b310c,_0x73bc5f){return function(_0x56e12d){if(_0x56e12d){return _0x56e12d[_0x0b72('0x23')](_0x1b310c)[_0x0b72('0x24')](function(_0x420d53){return _0x420d53;});}return null;};}function removeEntity(_0x274bfe,_0x553b33){return function(_0x2cca65){if(_0x2cca65){return _0x2cca65[_0x0b72('0x25')]()[_0x0b72('0x24')](function(){_0x274bfe[_0x0b72('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x120c8e,_0x407f1c){return function(_0x3f8d55){if(!_0x3f8d55){_0x120c8e['sendStatus'](0x194);}return _0x3f8d55;};}function handleError(_0x4fda85,_0x522857){_0x522857=_0x522857||0x1f4;return function(_0x44dc5c){logger['error'](_0x44dc5c['stack']);if(_0x44dc5c[_0x0b72('0x26')]){delete _0x44dc5c[_0x0b72('0x26')];}_0x4fda85['status'](_0x522857)[_0x0b72('0x27')](_0x44dc5c);};}exports[_0x0b72('0x28')]=function(_0x4a1b0c,_0x21175d){var _0x1ab879={},_0x57fe31={},_0x29841b={'count':0x0,'rows':[]};var _0x5dc221=_[_0x0b72('0x29')](db['MailSubstatus'][_0x0b72('0x2a')],function(_0x5ade4d){return{'name':_0x5ade4d[_0x0b72('0x2b')],'type':_0x5ade4d[_0x0b72('0x2c')][_0x0b72('0x2d')]};});_0x57fe31['model']=_[_0x0b72('0x29')](_0x5dc221,'name');_0x57fe31[_0x0b72('0x2e')]=_[_0x0b72('0x2f')](_0x4a1b0c[_0x0b72('0x2e')]);_0x57fe31[_0x0b72('0x30')]=_[_0x0b72('0x31')](_0x57fe31[_0x0b72('0x32')],_0x57fe31[_0x0b72('0x2e')]);_0x1ab879[_0x0b72('0x33')]=_[_0x0b72('0x31')](_0x57fe31[_0x0b72('0x32')],qs[_0x0b72('0x34')](_0x4a1b0c[_0x0b72('0x2e')]['fields']));_0x1ab879[_0x0b72('0x33')]=_0x1ab879[_0x0b72('0x33')]['length']?_0x1ab879[_0x0b72('0x33')]:_0x57fe31['model'];if(!_0x4a1b0c[_0x0b72('0x2e')][_0x0b72('0x35')](_0x0b72('0x36'))){_0x1ab879[_0x0b72('0x1c')]=qs['limit'](_0x4a1b0c[_0x0b72('0x2e')][_0x0b72('0x1c')]);_0x1ab879['offset']=qs[_0x0b72('0x1b')](_0x4a1b0c['query'][_0x0b72('0x1b')]);}_0x1ab879['order']=qs[_0x0b72('0x37')](_0x4a1b0c[_0x0b72('0x2e')][_0x0b72('0x37')]);_0x1ab879[_0x0b72('0x38')]=qs[_0x0b72('0x30')](_[_0x0b72('0x39')](_0x4a1b0c['query'],_0x57fe31[_0x0b72('0x30')]),_0x5dc221);if(_0x4a1b0c['query'][_0x0b72('0x3a')]){_0x1ab879[_0x0b72('0x38')]=_[_0x0b72('0x3b')](_0x1ab879[_0x0b72('0x38')],{'$or':_['map'](_0x5dc221,function(_0x492530){if(_0x492530[_0x0b72('0x2c')]!=='VIRTUAL'){var _0x3f5723={};_0x3f5723[_0x492530['name']]={'$like':'%'+_0x4a1b0c['query'][_0x0b72('0x3a')]+'%'};return _0x3f5723;}})});}_0x1ab879=_[_0x0b72('0x3b')]({},_0x1ab879,_0x4a1b0c[_0x0b72('0x3c')]);var _0x46e1b0={'where':_0x1ab879['where']};return db[_0x0b72('0x3d')][_0x0b72('0x1e')](_0x46e1b0)[_0x0b72('0x24')](function(_0x36c5d9){_0x29841b[_0x0b72('0x1e')]=_0x36c5d9;if(_0x4a1b0c[_0x0b72('0x2e')][_0x0b72('0x3e')]){_0x1ab879[_0x0b72('0x3f')]=[{'all':!![]}];}return db[_0x0b72('0x3d')]['findAll'](_0x1ab879);})[_0x0b72('0x24')](function(_0xabd7dc){_0x29841b[_0x0b72('0x40')]=_0xabd7dc;return _0x29841b;})['then'](respondWithFilteredResult(_0x21175d,_0x1ab879))[_0x0b72('0x41')](handleError(_0x21175d,null));};exports[_0x0b72('0x42')]=function(_0x46dacf,_0x38f157){var _0x4151ca={'raw':!![],'where':{'id':_0x46dacf[_0x0b72('0x43')]['id']}},_0x386da8={};_0x386da8[_0x0b72('0x32')]=_[_0x0b72('0x2f')](db[_0x0b72('0x3d')][_0x0b72('0x2a')]);_0x386da8[_0x0b72('0x2e')]=_['keys'](_0x46dacf[_0x0b72('0x2e')]);_0x386da8[_0x0b72('0x30')]=_[_0x0b72('0x31')](_0x386da8[_0x0b72('0x32')],_0x386da8[_0x0b72('0x2e')]);_0x4151ca['attributes']=_[_0x0b72('0x31')](_0x386da8[_0x0b72('0x32')],qs['fields'](_0x46dacf[_0x0b72('0x2e')][_0x0b72('0x34')]));_0x4151ca[_0x0b72('0x33')]=_0x4151ca[_0x0b72('0x33')]['length']?_0x4151ca[_0x0b72('0x33')]:_0x386da8['model'];if(_0x46dacf[_0x0b72('0x2e')]['includeAll']){_0x4151ca[_0x0b72('0x3f')]=[{'all':!![]}];}_0x4151ca=_['merge']({},_0x4151ca,_0x46dacf[_0x0b72('0x3c')]);return db['MailSubstatus'][_0x0b72('0x44')](_0x4151ca)[_0x0b72('0x24')](handleEntityNotFound(_0x38f157,null))[_0x0b72('0x24')](respondWithResult(_0x38f157,null))[_0x0b72('0x41')](handleError(_0x38f157,null));};exports[_0x0b72('0x45')]=function(_0x4dd125,_0x5731f3){return db[_0x0b72('0x3d')][_0x0b72('0x45')](_0x4dd125[_0x0b72('0x46')],{})[_0x0b72('0x24')](respondWithResult(_0x5731f3,0xc9))['catch'](handleError(_0x5731f3,null));};exports[_0x0b72('0x23')]=function(_0x41f8b6,_0x1674b3){if(_0x41f8b6[_0x0b72('0x46')]['id']){delete _0x41f8b6['body']['id'];}return db[_0x0b72('0x3d')]['find']({'where':{'id':_0x41f8b6['params']['id']}})[_0x0b72('0x24')](handleEntityNotFound(_0x1674b3,null))[_0x0b72('0x24')](saveUpdates(_0x41f8b6[_0x0b72('0x46')],null))[_0x0b72('0x24')](respondWithResult(_0x1674b3,null))['catch'](handleError(_0x1674b3,null));};exports[_0x0b72('0x25')]=function(_0x4084d6,_0x4a2ff3){return db[_0x0b72('0x3d')][_0x0b72('0x44')]({'where':{'id':_0x4084d6[_0x0b72('0x43')]['id']}})[_0x0b72('0x24')](handleEntityNotFound(_0x4a2ff3,null))[_0x0b72('0x24')](removeEntity(_0x4a2ff3,null))['catch'](handleError(_0x4a2ff3,null));};exports['describe']=function(_0x3088ff,_0x4c69b3){return db['MailSubstatus'][_0x0b72('0x47')]()[_0x0b72('0x24')](respondWithResult(_0x4c69b3,null))[_0x0b72('0x41')](handleError(_0x4c69b3,null));};
\ No newline at end of file
+var _0xf0fa=['name','send','index','map','rawAttributes','fieldName','type','model','keys','query','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filters','merge','VIRTUAL','filter','MailSubstatus','includeAll','include','rows','catch','show','params','length','options','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','status','end','json','undefined','limit','count','offset','reject','save','update','then','destroy','sendStatus','error','stack'];(function(_0x4c6cf0,_0x826f70){var _0x108145=function(_0x299f69){while(--_0x299f69){_0x4c6cf0['push'](_0x4c6cf0['shift']());}};_0x108145(++_0x826f70);}(_0xf0fa,0x70));var _0xaf0f=function(_0x5b7100,_0xd698d5){_0x5b7100=_0x5b7100-0x0;var _0x45dcba=_0xf0fa[_0x5b7100];return _0x45dcba;};'use strict';var emlformat=require(_0xaf0f('0x0'));var rimraf=require(_0xaf0f('0x1'));var zipdir=require(_0xaf0f('0x2'));var jsonpatch=require(_0xaf0f('0x3'));var rp=require(_0xaf0f('0x4'));var moment=require(_0xaf0f('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xaf0f('0x6'));var util=require(_0xaf0f('0x7'));var path=require(_0xaf0f('0x8'));var sox=require(_0xaf0f('0x9'));var csv=require(_0xaf0f('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xaf0f('0xb'));var _=require(_0xaf0f('0xc'));var squel=require(_0xaf0f('0xd'));var crypto=require(_0xaf0f('0xe'));var jsforce=require(_0xaf0f('0xf'));var deskjs=require(_0xaf0f('0x10'));var toCsv=require(_0xaf0f('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xaf0f('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xaf0f('0x12'));var as=require(_0xaf0f('0x13'));var hardwareService=require(_0xaf0f('0x14'));var logger=require(_0xaf0f('0x15'))('api');var utils=require(_0xaf0f('0x16'));var config=require(_0xaf0f('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xaf0f('0x18'))['db'];function respondWithStatusCode(_0x553de9,_0x1a70f8){_0x1a70f8=_0x1a70f8||0xcc;return function(_0x22d043){if(_0x22d043){return _0x553de9['sendStatus'](_0x1a70f8);}return _0x553de9[_0xaf0f('0x19')](_0x1a70f8)[_0xaf0f('0x1a')]();};}function respondWithResult(_0x51ee6f,_0x150dc2){_0x150dc2=_0x150dc2||0xc8;return function(_0x35d26d){if(_0x35d26d){return _0x51ee6f[_0xaf0f('0x19')](_0x150dc2)[_0xaf0f('0x1b')](_0x35d26d);}};}function respondWithFilteredResult(_0x43dff5,_0x44819b){return function(_0x2d738b){if(_0x2d738b){var _0x31536b=typeof _0x44819b['offset']===_0xaf0f('0x1c')&&typeof _0x44819b[_0xaf0f('0x1d')]===_0xaf0f('0x1c');var _0x18fd56=_0x2d738b[_0xaf0f('0x1e')];var _0x1a09bc=_0x31536b?0x0:_0x44819b['offset'];var _0x5c43ea=_0x31536b?_0x2d738b[_0xaf0f('0x1e')]:_0x44819b[_0xaf0f('0x1f')]+_0x44819b[_0xaf0f('0x1d')];var _0x34b885;if(_0x5c43ea>=_0x18fd56){_0x5c43ea=_0x18fd56;_0x34b885=0xc8;}else{_0x34b885=0xce;}_0x43dff5[_0xaf0f('0x19')](_0x34b885);return _0x43dff5['set']('Content-Range',_0x1a09bc+'-'+_0x5c43ea+'/'+_0x18fd56)['json'](_0x2d738b);}return null;};}function patchUpdates(_0x4ec252){return function(_0xe8ac13){try{jsonpatch['apply'](_0xe8ac13,_0x4ec252,!![]);}catch(_0x1c4f2e){return BPromise[_0xaf0f('0x20')](_0x1c4f2e);}return _0xe8ac13[_0xaf0f('0x21')]();};}function saveUpdates(_0x59e9ec,_0x4630b1){return function(_0x23afa0){if(_0x23afa0){return _0x23afa0[_0xaf0f('0x22')](_0x59e9ec)[_0xaf0f('0x23')](function(_0x4782d9){return _0x4782d9;});}return null;};}function removeEntity(_0x54675d,_0x390c6a){return function(_0x3d8998){if(_0x3d8998){return _0x3d8998[_0xaf0f('0x24')]()[_0xaf0f('0x23')](function(){_0x54675d[_0xaf0f('0x19')](0xcc)[_0xaf0f('0x1a')]();});}};}function handleEntityNotFound(_0x1f84be,_0x5a05d0){return function(_0x458cd5){if(!_0x458cd5){_0x1f84be[_0xaf0f('0x25')](0x194);}return _0x458cd5;};}function handleError(_0x22b434,_0x170a6a){_0x170a6a=_0x170a6a||0x1f4;return function(_0x4f68fa){logger[_0xaf0f('0x26')](_0x4f68fa[_0xaf0f('0x27')]);if(_0x4f68fa[_0xaf0f('0x28')]){delete _0x4f68fa['name'];}_0x22b434[_0xaf0f('0x19')](_0x170a6a)[_0xaf0f('0x29')](_0x4f68fa);};}exports[_0xaf0f('0x2a')]=function(_0x12e897,_0x53b688){var _0x5c5caa={},_0xba1c9a={},_0x5bc1e2={'count':0x0,'rows':[]};var _0x22e2e3=_[_0xaf0f('0x2b')](db['MailSubstatus'][_0xaf0f('0x2c')],function(_0x2391ef){return{'name':_0x2391ef[_0xaf0f('0x2d')],'type':_0x2391ef[_0xaf0f('0x2e')]['key']};});_0xba1c9a[_0xaf0f('0x2f')]=_[_0xaf0f('0x2b')](_0x22e2e3,_0xaf0f('0x28'));_0xba1c9a['query']=_[_0xaf0f('0x30')](_0x12e897[_0xaf0f('0x31')]);_0xba1c9a['filters']=_['intersection'](_0xba1c9a[_0xaf0f('0x2f')],_0xba1c9a[_0xaf0f('0x31')]);_0x5c5caa['attributes']=_[_0xaf0f('0x32')](_0xba1c9a[_0xaf0f('0x2f')],qs[_0xaf0f('0x33')](_0x12e897[_0xaf0f('0x31')][_0xaf0f('0x33')]));_0x5c5caa[_0xaf0f('0x34')]=_0x5c5caa[_0xaf0f('0x34')]['length']?_0x5c5caa[_0xaf0f('0x34')]:_0xba1c9a[_0xaf0f('0x2f')];if(!_0x12e897[_0xaf0f('0x31')][_0xaf0f('0x35')](_0xaf0f('0x36'))){_0x5c5caa[_0xaf0f('0x1d')]=qs['limit'](_0x12e897[_0xaf0f('0x31')][_0xaf0f('0x1d')]);_0x5c5caa[_0xaf0f('0x1f')]=qs[_0xaf0f('0x1f')](_0x12e897['query'][_0xaf0f('0x1f')]);}_0x5c5caa[_0xaf0f('0x37')]=qs[_0xaf0f('0x38')](_0x12e897[_0xaf0f('0x31')][_0xaf0f('0x38')]);_0x5c5caa[_0xaf0f('0x39')]=qs['filters'](_[_0xaf0f('0x3a')](_0x12e897['query'],_0xba1c9a[_0xaf0f('0x3b')]),_0x22e2e3);if(_0x12e897['query']['filter']){_0x5c5caa['where']=_[_0xaf0f('0x3c')](_0x5c5caa['where'],{'$or':_['map'](_0x22e2e3,function(_0x22b310){if(_0x22b310[_0xaf0f('0x2e')]!==_0xaf0f('0x3d')){var _0x1c8ed4={};_0x1c8ed4[_0x22b310[_0xaf0f('0x28')]]={'$like':'%'+_0x12e897[_0xaf0f('0x31')][_0xaf0f('0x3e')]+'%'};return _0x1c8ed4;}})});}_0x5c5caa=_[_0xaf0f('0x3c')]({},_0x5c5caa,_0x12e897['options']);var _0x867afc={'where':_0x5c5caa[_0xaf0f('0x39')]};return db[_0xaf0f('0x3f')][_0xaf0f('0x1e')](_0x867afc)[_0xaf0f('0x23')](function(_0x3c833a){_0x5bc1e2[_0xaf0f('0x1e')]=_0x3c833a;if(_0x12e897[_0xaf0f('0x31')][_0xaf0f('0x40')]){_0x5c5caa[_0xaf0f('0x41')]=[{'all':!![]}];}return db[_0xaf0f('0x3f')]['findAll'](_0x5c5caa);})['then'](function(_0x3c6721){_0x5bc1e2[_0xaf0f('0x42')]=_0x3c6721;return _0x5bc1e2;})[_0xaf0f('0x23')](respondWithFilteredResult(_0x53b688,_0x5c5caa))[_0xaf0f('0x43')](handleError(_0x53b688,null));};exports[_0xaf0f('0x44')]=function(_0x2dcfbc,_0x1278ac){var _0x290b03={'raw':!![],'where':{'id':_0x2dcfbc[_0xaf0f('0x45')]['id']}},_0x573bb6={};_0x573bb6['model']=_[_0xaf0f('0x30')](db[_0xaf0f('0x3f')][_0xaf0f('0x2c')]);_0x573bb6[_0xaf0f('0x31')]=_[_0xaf0f('0x30')](_0x2dcfbc[_0xaf0f('0x31')]);_0x573bb6[_0xaf0f('0x3b')]=_[_0xaf0f('0x32')](_0x573bb6[_0xaf0f('0x2f')],_0x573bb6['query']);_0x290b03[_0xaf0f('0x34')]=_[_0xaf0f('0x32')](_0x573bb6[_0xaf0f('0x2f')],qs['fields'](_0x2dcfbc[_0xaf0f('0x31')][_0xaf0f('0x33')]));_0x290b03[_0xaf0f('0x34')]=_0x290b03['attributes'][_0xaf0f('0x46')]?_0x290b03[_0xaf0f('0x34')]:_0x573bb6['model'];if(_0x2dcfbc[_0xaf0f('0x31')][_0xaf0f('0x40')]){_0x290b03[_0xaf0f('0x41')]=[{'all':!![]}];}_0x290b03=_[_0xaf0f('0x3c')]({},_0x290b03,_0x2dcfbc[_0xaf0f('0x47')]);return db['MailSubstatus'][_0xaf0f('0x48')](_0x290b03)[_0xaf0f('0x23')](handleEntityNotFound(_0x1278ac,null))[_0xaf0f('0x23')](respondWithResult(_0x1278ac,null))[_0xaf0f('0x43')](handleError(_0x1278ac,null));};exports[_0xaf0f('0x49')]=function(_0x1e4595,_0x4d1485){return db[_0xaf0f('0x3f')]['create'](_0x1e4595['body'],{})['then'](respondWithResult(_0x4d1485,0xc9))['catch'](handleError(_0x4d1485,null));};exports[_0xaf0f('0x22')]=function(_0x8e1cd6,_0xcb1398){if(_0x8e1cd6[_0xaf0f('0x4a')]['id']){delete _0x8e1cd6[_0xaf0f('0x4a')]['id'];}return db[_0xaf0f('0x3f')][_0xaf0f('0x48')]({'where':{'id':_0x8e1cd6[_0xaf0f('0x45')]['id']}})[_0xaf0f('0x23')](handleEntityNotFound(_0xcb1398,null))['then'](saveUpdates(_0x8e1cd6[_0xaf0f('0x4a')],null))[_0xaf0f('0x23')](respondWithResult(_0xcb1398,null))[_0xaf0f('0x43')](handleError(_0xcb1398,null));};exports['destroy']=function(_0x222db8,_0x2b4ff4){return db[_0xaf0f('0x3f')][_0xaf0f('0x48')]({'where':{'id':_0x222db8[_0xaf0f('0x45')]['id']}})['then'](handleEntityNotFound(_0x2b4ff4,null))[_0xaf0f('0x23')](removeEntity(_0x2b4ff4,null))['catch'](handleError(_0x2b4ff4,null));};exports[_0xaf0f('0x4b')]=function(_0x43218b,_0x1fdce){return db[_0xaf0f('0x3f')][_0xaf0f('0x4b')]()[_0xaf0f('0x23')](respondWithResult(_0x1fdce,null))[_0xaf0f('0x43')](handleError(_0x1fdce,null));};
\ No newline at end of file
index e01a7ae..817a163 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe054=['../../config/environment','define','lodash','../../config/logger','api','moment','request-promise','path','rimraf'];(function(_0x595af5,_0x175a0e){var _0x4967cf=function(_0x1409db){while(--_0x1409db){_0x595af5['push'](_0x595af5['shift']());}};_0x4967cf(++_0x175a0e);}(_0xe054,0xbf));var _0x4e05=function(_0x2f71c1,_0x319017){_0x2f71c1=_0x2f71c1-0x0;var _0x411bb7=_0xe054[_0x2f71c1];return _0x411bb7;};'use strict';var _=require(_0x4e05('0x0'));var util=require('util');var logger=require(_0x4e05('0x1'))(_0x4e05('0x2'));var moment=require(_0x4e05('0x3'));var BPromise=require('bluebird');var rp=require(_0x4e05('0x4'));var fs=require('fs');var path=require(_0x4e05('0x5'));var rimraf=require(_0x4e05('0x6'));var config=require(_0x4e05('0x7'));var attributes=require('./mailSubstatus.attributes');module['exports']=function(_0x3987c0,_0xcf59e8){return _0x3987c0[_0x4e05('0x8')]('MailSubstatus',attributes,{'tableName':'mail_substatuses','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa02c=['util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./mailSubstatus.attributes','exports','define','MailSubstatus','mail_substatuses','lodash'];(function(_0x4041fd,_0x5c0535){var _0x3bb750=function(_0x3d2c86){while(--_0x3d2c86){_0x4041fd['push'](_0x4041fd['shift']());}};_0x3bb750(++_0x5c0535);}(_0xa02c,0xed));var _0xca02=function(_0x30069d,_0x1c72a3){_0x30069d=_0x30069d-0x0;var _0x14779e=_0xa02c[_0x30069d];return _0x14779e;};'use strict';var _=require(_0xca02('0x0'));var util=require(_0xca02('0x1'));var logger=require(_0xca02('0x2'))('api');var moment=require(_0xca02('0x3'));var BPromise=require(_0xca02('0x4'));var rp=require(_0xca02('0x5'));var fs=require('fs');var path=require(_0xca02('0x6'));var rimraf=require(_0xca02('0x7'));var config=require(_0xca02('0x8'));var attributes=require(_0xca02('0x9'));module[_0xca02('0xa')]=function(_0x4b7df3,_0x51c1b0){return _0x4b7df3[_0xca02('0xb')](_0xca02('0xc'),attributes,{'tableName':_0xca02('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1364b47..59ed2ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd8f=['message','info','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','MailSubstatus,\x20%s,\x20%s','request\x20sent','debug','MailSubstatus,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x29f89e,_0x34f7a2){var _0x17c7f3=function(_0x3fdfff){while(--_0x3fdfff){_0x29f89e['push'](_0x29f89e['shift']());}};_0x17c7f3(++_0x34f7a2);}(_0xbd8f,0x130));var _0xfbd8=function(_0x4ab9a7,_0x291df1){_0x4ab9a7=_0x4ab9a7-0x0;var _0xd08799=_0xbd8f[_0x4ab9a7];return _0xd08799;};'use strict';var _=require(_0xfbd8('0x0'));var util=require(_0xfbd8('0x1'));var moment=require(_0xfbd8('0x2'));var BPromise=require(_0xfbd8('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xfbd8('0x4'));var db=require(_0xfbd8('0x5'))['db'];var utils=require(_0xfbd8('0x6'));var logger=require('../../config/logger')(_0xfbd8('0x7'));var config=require(_0xfbd8('0x8'));var jayson=require(_0xfbd8('0x9'));var client=jayson[_0xfbd8('0xa')][_0xfbd8('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x384bb2,_0x1fff77,_0x468c5c){return new BPromise(function(_0x3ad1ab,_0x22cebb){return client[_0xfbd8('0xc')](_0x384bb2,_0x468c5c)[_0xfbd8('0xd')](function(_0x3c6d47){logger['info'](_0xfbd8('0xe'),_0x1fff77,_0xfbd8('0xf'));logger[_0xfbd8('0x10')](_0xfbd8('0x11'),_0x1fff77,_0xfbd8('0xf'),JSON[_0xfbd8('0x12')](_0x3c6d47));if(_0x3c6d47[_0xfbd8('0x13')]){if(_0x3c6d47[_0xfbd8('0x13')][_0xfbd8('0x14')]===0x1f4){logger[_0xfbd8('0x13')](_0xfbd8('0xe'),_0x1fff77,_0x3c6d47[_0xfbd8('0x13')][_0xfbd8('0x15')]);return _0x22cebb(_0x3c6d47['error'][_0xfbd8('0x15')]);}logger['error'](_0xfbd8('0xe'),_0x1fff77,_0x3c6d47[_0xfbd8('0x13')][_0xfbd8('0x15')]);return _0x3ad1ab(_0x3c6d47[_0xfbd8('0x13')][_0xfbd8('0x15')]);}else{logger[_0xfbd8('0x16')](_0xfbd8('0xe'),_0x1fff77,_0xfbd8('0xf'));_0x3ad1ab(_0x3c6d47[_0xfbd8('0x17')][_0xfbd8('0x15')]);}})[_0xfbd8('0x18')](function(_0x1a0715){logger[_0xfbd8('0x13')](_0xfbd8('0xe'),_0x1fff77,_0x1a0715);_0x22cebb(_0x1a0715);});});}
\ No newline at end of file
+var _0x797b=['http','request','info','MailSubstatus,\x20%s,\x20%s','request\x20sent','MailSubstatus,\x20%s,\x20%s,\x20%s','stringify','error','message','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x53dd81,_0x27315a){var _0x138a45=function(_0x4f0403){while(--_0x4f0403){_0x53dd81['push'](_0x53dd81['shift']());}};_0x138a45(++_0x27315a);}(_0x797b,0xe5));var _0xb797=function(_0x221eae,_0x2a3fa6){_0x221eae=_0x221eae-0x0;var _0x86f9f3=_0x797b[_0x221eae];return _0x86f9f3;};'use strict';var _=require('lodash');var util=require(_0xb797('0x0'));var moment=require(_0xb797('0x1'));var BPromise=require(_0xb797('0x2'));var rs=require(_0xb797('0x3'));var fs=require('fs');var Redis=require(_0xb797('0x4'));var db=require(_0xb797('0x5'))['db'];var utils=require(_0xb797('0x6'));var logger=require(_0xb797('0x7'))(_0xb797('0x8'));var config=require(_0xb797('0x9'));var jayson=require(_0xb797('0xa'));var client=jayson['client'][_0xb797('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5e088d,_0x49fdcf,_0x5f0f86){return new BPromise(function(_0x2b0817,_0x3f1462){return client[_0xb797('0xc')](_0x5e088d,_0x5f0f86)['then'](function(_0x477ed1){logger[_0xb797('0xd')](_0xb797('0xe'),_0x49fdcf,_0xb797('0xf'));logger['debug'](_0xb797('0x10'),_0x49fdcf,_0xb797('0xf'),JSON[_0xb797('0x11')](_0x477ed1));if(_0x477ed1[_0xb797('0x12')]){if(_0x477ed1['error']['code']===0x1f4){logger[_0xb797('0x12')](_0xb797('0xe'),_0x49fdcf,_0x477ed1[_0xb797('0x12')][_0xb797('0x13')]);return _0x3f1462(_0x477ed1[_0xb797('0x12')][_0xb797('0x13')]);}logger[_0xb797('0x12')](_0xb797('0xe'),_0x49fdcf,_0x477ed1[_0xb797('0x12')]['message']);return _0x2b0817(_0x477ed1[_0xb797('0x12')][_0xb797('0x13')]);}else{logger[_0xb797('0xd')](_0xb797('0xe'),_0x49fdcf,'request\x20sent');_0x2b0817(_0x477ed1['result'][_0xb797('0x13')]);}})['catch'](function(_0x3518aa){logger[_0xb797('0x12')](_0xb797('0xe'),_0x49fdcf,_0x3518aa);_0x3f1462(_0x3518aa);});});}
\ No newline at end of file
index d1d0e73..350b0b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a7b=['delete','destroy','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','./mailTransferReport.controller','get','isAuthenticated','index','/:id','show','put'];(function(_0x7e2eb0,_0x17cd58){var _0xd92de4=function(_0x5d005b){while(--_0x5d005b){_0x7e2eb0['push'](_0x7e2eb0['shift']());}};_0xd92de4(++_0x17cd58);}(_0x2a7b,0x123));var _0xb2a7=function(_0x305b51,_0x5ebb41){_0x305b51=_0x305b51-0x0;var _0x3ef3b3=_0x2a7b[_0x305b51];return _0x3ef3b3;};'use strict';var multer=require(_0xb2a7('0x0'));var util=require(_0xb2a7('0x1'));var path=require(_0xb2a7('0x2'));var timeout=require(_0xb2a7('0x3'));var express=require(_0xb2a7('0x4'));var router=express['Router']();var fs_extra=require(_0xb2a7('0x5'));var auth=require(_0xb2a7('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xb2a7('0x7'));var controller=require(_0xb2a7('0x8'));router[_0xb2a7('0x9')]('/',auth[_0xb2a7('0xa')](),controller[_0xb2a7('0xb')]);router[_0xb2a7('0x9')]('/describe',auth[_0xb2a7('0xa')](),controller['describe']);router[_0xb2a7('0x9')](_0xb2a7('0xc'),auth['isAuthenticated'](),controller[_0xb2a7('0xd')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0xb2a7('0xe')]('/:id',auth[_0xb2a7('0xa')](),controller['update']);router[_0xb2a7('0xf')]('/:id',auth['isAuthenticated'](),controller[_0xb2a7('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0xdca8=['destroy','util','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./mailTransferReport.controller','isAuthenticated','index','get','/describe','describe','show','post','create','/:id','update','delete'];(function(_0x211087,_0x354fdd){var _0x2a581f=function(_0x2928fe){while(--_0x2928fe){_0x211087['push'](_0x211087['shift']());}};_0x2a581f(++_0x354fdd);}(_0xdca8,0xdd));var _0x8dca=function(_0x2353a0,_0x52d6fb){_0x2353a0=_0x2353a0-0x0;var _0x583bc5=_0xdca8[_0x2353a0];return _0x583bc5;};'use strict';var multer=require('multer');var util=require(_0x8dca('0x0'));var path=require(_0x8dca('0x1'));var timeout=require(_0x8dca('0x2'));var express=require(_0x8dca('0x3'));var router=express[_0x8dca('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x8dca('0x5'));var config=require(_0x8dca('0x6'));var controller=require(_0x8dca('0x7'));router['get']('/',auth[_0x8dca('0x8')](),controller[_0x8dca('0x9')]);router[_0x8dca('0xa')](_0x8dca('0xb'),auth['isAuthenticated'](),controller[_0x8dca('0xc')]);router[_0x8dca('0xa')]('/:id',auth[_0x8dca('0x8')](),controller[_0x8dca('0xd')]);router[_0x8dca('0xe')]('/',auth[_0x8dca('0x8')](),controller[_0x8dca('0xf')]);router['put'](_0x8dca('0x10'),auth[_0x8dca('0x8')](),controller[_0x8dca('0x11')]);router[_0x8dca('0x12')]('/:id',auth['isAuthenticated'](),controller[_0x8dca('0x13')]);module['exports']=router;
\ No newline at end of file
index 4d1872c..abce88c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['NOW','moment','sequelize','exports','ENUM','account','agent','queue','DATE'];(function(_0x42d137,_0x18e56a){var _0x546158=function(_0x3b7896){while(--_0x3b7896){_0x42d137['push'](_0x42d137['shift']());}};_0x546158(++_0x18e56a);}(_0xe706,0xa3));var _0x6e70=function(_0x4ce15c,_0x1bbcbd){_0x4ce15c=_0x4ce15c-0x0;var _0x5ee259=_0xe706[_0x4ce15c];return _0x5ee259;};'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
+var _0xedd9=['account','agent','queue','NOW','sequelize','exports','STRING','ENUM'];(function(_0x1788f9,_0x52a172){var _0x41608d=function(_0x32a02a){while(--_0x32a02a){_0x1788f9['push'](_0x1788f9['shift']());}};_0x41608d(++_0x52a172);}(_0xedd9,0xfc));var _0x9edd=function(_0x494a71,_0xc6596d){_0x494a71=_0x494a71-0x0;var _0x13d831=_0xedd9[_0x494a71];return _0x13d831;};'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 0093fcc..659d981 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c36=['map','MailTransferReport','rawAttributes','fieldName','type','query','keys','filters','intersection','model','attributes','fields','length','nolimit','sort','where','merge','VIRTUAL','filter','options','include','rows','catch','includeAll','find','create','body','params','describe','rimraf','zip-dir','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/utils','../../config/environment','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','update','then','destroy','sendStatus','error','stack','name','index'];(function(_0x28d096,_0x58ffdd){var _0x11916c=function(_0x2e4a98){while(--_0x2e4a98){_0x28d096['push'](_0x28d096['shift']());}};_0x11916c(++_0x58ffdd);}(_0x0c36,0x135));var _0x60c3=function(_0x1f9f5f,_0x509fb7){_0x1f9f5f=_0x1f9f5f-0x0;var _0x51d649=_0x0c36[_0x1f9f5f];return _0x51d649;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x60c3('0x0'));var zipdir=require(_0x60c3('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x60c3('0x2'));var moment=require(_0x60c3('0x3'));var BPromise=require(_0x60c3('0x4'));var Mustache=require('mustache');var util=require(_0x60c3('0x5'));var path=require(_0x60c3('0x6'));var sox=require(_0x60c3('0x7'));var csv=require(_0x60c3('0x8'));var ejs=require(_0x60c3('0x9'));var fs=require('fs');var fs_extra=require(_0x60c3('0xa'));var _=require('lodash');var squel=require(_0x60c3('0xb'));var crypto=require(_0x60c3('0xc'));var jsforce=require(_0x60c3('0xd'));var deskjs=require(_0x60c3('0xe'));var toCsv=require(_0x60c3('0x8'));var querystring=require(_0x60c3('0xf'));var Papa=require(_0x60c3('0x10'));var Redis=require(_0x60c3('0x11'));var authService=require(_0x60c3('0x12'));var qs=require(_0x60c3('0x13'));var as=require(_0x60c3('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0x60c3('0x15'));var config=require(_0x60c3('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x43097f,_0x2266cd){_0x2266cd=_0x2266cd||0xcc;return function(_0x4ffdd4){if(_0x4ffdd4){return _0x43097f['sendStatus'](_0x2266cd);}return _0x43097f[_0x60c3('0x17')](_0x2266cd)[_0x60c3('0x18')]();};}function respondWithResult(_0x4b763b,_0x29ed9f){_0x29ed9f=_0x29ed9f||0xc8;return function(_0x4d09cc){if(_0x4d09cc){return _0x4b763b[_0x60c3('0x17')](_0x29ed9f)[_0x60c3('0x19')](_0x4d09cc);}};}function respondWithFilteredResult(_0x1c4c07,_0x17cf3e){return function(_0x308303){if(_0x308303){var _0x53b8ad=typeof _0x17cf3e[_0x60c3('0x1a')]===_0x60c3('0x1b')&&typeof _0x17cf3e[_0x60c3('0x1c')]===_0x60c3('0x1b');var _0x51b6aa=_0x308303[_0x60c3('0x1d')];var _0x1291be=_0x53b8ad?0x0:_0x17cf3e[_0x60c3('0x1a')];var _0x70d3c3=_0x53b8ad?_0x308303['count']:_0x17cf3e['offset']+_0x17cf3e['limit'];var _0x2e59e1;if(_0x70d3c3>=_0x51b6aa){_0x70d3c3=_0x51b6aa;_0x2e59e1=0xc8;}else{_0x2e59e1=0xce;}_0x1c4c07['status'](_0x2e59e1);return _0x1c4c07[_0x60c3('0x1e')](_0x60c3('0x1f'),_0x1291be+'-'+_0x70d3c3+'/'+_0x51b6aa)[_0x60c3('0x19')](_0x308303);}return null;};}function patchUpdates(_0x180ae8){return function(_0x6b4fed){try{jsonpatch[_0x60c3('0x20')](_0x6b4fed,_0x180ae8,!![]);}catch(_0x58fd9e){return BPromise['reject'](_0x58fd9e);}return _0x6b4fed['save']();};}function saveUpdates(_0x44a955,_0x1ee796){return function(_0x5a384c){if(_0x5a384c){return _0x5a384c[_0x60c3('0x21')](_0x44a955)[_0x60c3('0x22')](function(_0x235e1f){return _0x235e1f;});}return null;};}function removeEntity(_0x28cb3f,_0x3384de){return function(_0xf2d7d0){if(_0xf2d7d0){return _0xf2d7d0[_0x60c3('0x23')]()[_0x60c3('0x22')](function(){_0x28cb3f['status'](0xcc)[_0x60c3('0x18')]();});}};}function handleEntityNotFound(_0x317896,_0x2af591){return function(_0x3abb57){if(!_0x3abb57){_0x317896[_0x60c3('0x24')](0x194);}return _0x3abb57;};}function handleError(_0x48530b,_0x4f462b){_0x4f462b=_0x4f462b||0x1f4;return function(_0x1d00c0){logger[_0x60c3('0x25')](_0x1d00c0[_0x60c3('0x26')]);if(_0x1d00c0[_0x60c3('0x27')]){delete _0x1d00c0[_0x60c3('0x27')];}_0x48530b[_0x60c3('0x17')](_0x4f462b)['send'](_0x1d00c0);};}exports[_0x60c3('0x28')]=function(_0x4ebcd4,_0x4e97f5){var _0x2c9773={},_0x54cac4={},_0x57e74b={'count':0x0,'rows':[]};var _0x394798=_[_0x60c3('0x29')](db[_0x60c3('0x2a')][_0x60c3('0x2b')],function(_0x49e1d6){return{'name':_0x49e1d6[_0x60c3('0x2c')],'type':_0x49e1d6[_0x60c3('0x2d')]['key']};});_0x54cac4['model']=_[_0x60c3('0x29')](_0x394798,_0x60c3('0x27'));_0x54cac4[_0x60c3('0x2e')]=_[_0x60c3('0x2f')](_0x4ebcd4[_0x60c3('0x2e')]);_0x54cac4[_0x60c3('0x30')]=_[_0x60c3('0x31')](_0x54cac4[_0x60c3('0x32')],_0x54cac4['query']);_0x2c9773[_0x60c3('0x33')]=_[_0x60c3('0x31')](_0x54cac4[_0x60c3('0x32')],qs[_0x60c3('0x34')](_0x4ebcd4['query'][_0x60c3('0x34')]));_0x2c9773[_0x60c3('0x33')]=_0x2c9773['attributes'][_0x60c3('0x35')]?_0x2c9773[_0x60c3('0x33')]:_0x54cac4[_0x60c3('0x32')];if(!_0x4ebcd4[_0x60c3('0x2e')]['hasOwnProperty'](_0x60c3('0x36'))){_0x2c9773['limit']=qs[_0x60c3('0x1c')](_0x4ebcd4[_0x60c3('0x2e')][_0x60c3('0x1c')]);_0x2c9773[_0x60c3('0x1a')]=qs[_0x60c3('0x1a')](_0x4ebcd4['query']['offset']);}_0x2c9773['order']=qs['sort'](_0x4ebcd4[_0x60c3('0x2e')][_0x60c3('0x37')]);_0x2c9773[_0x60c3('0x38')]=qs[_0x60c3('0x30')](_['pick'](_0x4ebcd4[_0x60c3('0x2e')],_0x54cac4[_0x60c3('0x30')]),_0x394798);if(_0x4ebcd4[_0x60c3('0x2e')]['filter']){_0x2c9773[_0x60c3('0x38')]=_[_0x60c3('0x39')](_0x2c9773[_0x60c3('0x38')],{'$or':_['map'](_0x394798,function(_0x2e44d4){if(_0x2e44d4[_0x60c3('0x2d')]!==_0x60c3('0x3a')){var _0x195c93={};_0x195c93[_0x2e44d4['name']]={'$like':'%'+_0x4ebcd4[_0x60c3('0x2e')][_0x60c3('0x3b')]+'%'};return _0x195c93;}})});}_0x2c9773=_['merge']({},_0x2c9773,_0x4ebcd4[_0x60c3('0x3c')]);var _0x4d72b6={'where':_0x2c9773[_0x60c3('0x38')]};return db[_0x60c3('0x2a')][_0x60c3('0x1d')](_0x4d72b6)[_0x60c3('0x22')](function(_0x1d00b6){_0x57e74b[_0x60c3('0x1d')]=_0x1d00b6;if(_0x4ebcd4['query']['includeAll']){_0x2c9773[_0x60c3('0x3d')]=[{'all':!![]}];}return db[_0x60c3('0x2a')]['findAll'](_0x2c9773);})['then'](function(_0xe43bdd){_0x57e74b[_0x60c3('0x3e')]=_0xe43bdd;return _0x57e74b;})[_0x60c3('0x22')](respondWithFilteredResult(_0x4e97f5,_0x2c9773))[_0x60c3('0x3f')](handleError(_0x4e97f5,null));};exports['show']=function(_0x11b66d,_0x5cdcd2){var _0x24f193={'raw':!![],'where':{'id':_0x11b66d['params']['id']}},_0x28d962={};_0x28d962[_0x60c3('0x32')]=_['keys'](db[_0x60c3('0x2a')][_0x60c3('0x2b')]);_0x28d962[_0x60c3('0x2e')]=_[_0x60c3('0x2f')](_0x11b66d[_0x60c3('0x2e')]);_0x28d962[_0x60c3('0x30')]=_[_0x60c3('0x31')](_0x28d962[_0x60c3('0x32')],_0x28d962[_0x60c3('0x2e')]);_0x24f193[_0x60c3('0x33')]=_['intersection'](_0x28d962['model'],qs[_0x60c3('0x34')](_0x11b66d['query'][_0x60c3('0x34')]));_0x24f193['attributes']=_0x24f193[_0x60c3('0x33')][_0x60c3('0x35')]?_0x24f193[_0x60c3('0x33')]:_0x28d962[_0x60c3('0x32')];if(_0x11b66d['query'][_0x60c3('0x40')]){_0x24f193[_0x60c3('0x3d')]=[{'all':!![]}];}_0x24f193=_[_0x60c3('0x39')]({},_0x24f193,_0x11b66d[_0x60c3('0x3c')]);return db[_0x60c3('0x2a')][_0x60c3('0x41')](_0x24f193)[_0x60c3('0x22')](handleEntityNotFound(_0x5cdcd2,null))[_0x60c3('0x22')](respondWithResult(_0x5cdcd2,null))[_0x60c3('0x3f')](handleError(_0x5cdcd2,null));};exports[_0x60c3('0x42')]=function(_0x1217b0,_0x58f6b2){return db[_0x60c3('0x2a')][_0x60c3('0x42')](_0x1217b0[_0x60c3('0x43')],{})[_0x60c3('0x22')](respondWithResult(_0x58f6b2,0xc9))[_0x60c3('0x3f')](handleError(_0x58f6b2,null));};exports['update']=function(_0x985f99,_0x3fbb8b){if(_0x985f99[_0x60c3('0x43')]['id']){delete _0x985f99[_0x60c3('0x43')]['id'];}return db[_0x60c3('0x2a')][_0x60c3('0x41')]({'where':{'id':_0x985f99[_0x60c3('0x44')]['id']}})[_0x60c3('0x22')](handleEntityNotFound(_0x3fbb8b,null))[_0x60c3('0x22')](saveUpdates(_0x985f99[_0x60c3('0x43')],null))['then'](respondWithResult(_0x3fbb8b,null))[_0x60c3('0x3f')](handleError(_0x3fbb8b,null));};exports[_0x60c3('0x23')]=function(_0x2d373f,_0x56abe6){return db[_0x60c3('0x2a')][_0x60c3('0x41')]({'where':{'id':_0x2d373f[_0x60c3('0x44')]['id']}})[_0x60c3('0x22')](handleEntityNotFound(_0x56abe6,null))[_0x60c3('0x22')](removeEntity(_0x56abe6,null))[_0x60c3('0x3f')](handleError(_0x56abe6,null));};exports[_0x60c3('0x45')]=function(_0x23e97e,_0x3c420b){return db[_0x60c3('0x2a')]['describe']()[_0x60c3('0x22')](respondWithResult(_0x3c420b,null))['catch'](handleError(_0x3c420b,null));};
\ No newline at end of file
+var _0x8a1d=['jsforce','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','limit','undefined','offset','count','reject','save','destroy','error','stack','send','index','map','fieldName','type','key','model','name','query','keys','intersection','attributes','fields','length','nolimit','sort','where','filters','merge','VIRTUAL','filter','options','then','includeAll','include','MailTransferReport','findAll','rows','catch','show','rawAttributes','create','body','find','params','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','path','ejs','fs-extra','lodash','squel'];(function(_0x22fa02,_0x1ae880){var _0x44fdc8=function(_0x118673){while(--_0x118673){_0x22fa02['push'](_0x22fa02['shift']());}};_0x44fdc8(++_0x1ae880);}(_0x8a1d,0x1f3));var _0xd8a1=function(_0x8e01d7,_0x6653ef){_0x8e01d7=_0x8e01d7-0x0;var _0x17c6be=_0x8a1d[_0x8e01d7];return _0x17c6be;};'use strict';var emlformat=require(_0xd8a1('0x0'));var rimraf=require(_0xd8a1('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xd8a1('0x2'));var rp=require(_0xd8a1('0x3'));var moment=require(_0xd8a1('0x4'));var BPromise=require(_0xd8a1('0x5'));var Mustache=require(_0xd8a1('0x6'));var util=require('util');var path=require(_0xd8a1('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xd8a1('0x8'));var fs=require('fs');var fs_extra=require(_0xd8a1('0x9'));var _=require(_0xd8a1('0xa'));var squel=require(_0xd8a1('0xb'));var crypto=require('crypto');var jsforce=require(_0xd8a1('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xd8a1('0xd'));var querystring=require(_0xd8a1('0xe'));var Papa=require(_0xd8a1('0xf'));var Redis=require('ioredis');var authService=require(_0xd8a1('0x10'));var qs=require(_0xd8a1('0x11'));var as=require(_0xd8a1('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xd8a1('0x13'))(_0xd8a1('0x14'));var utils=require(_0xd8a1('0x15'));var config=require(_0xd8a1('0x16'));var licenseUtil=require(_0xd8a1('0x17'));var db=require(_0xd8a1('0x18'))['db'];function respondWithStatusCode(_0x8af86d,_0x3d4c54){_0x3d4c54=_0x3d4c54||0xcc;return function(_0x1ba0c9){if(_0x1ba0c9){return _0x8af86d[_0xd8a1('0x19')](_0x3d4c54);}return _0x8af86d[_0xd8a1('0x1a')](_0x3d4c54)[_0xd8a1('0x1b')]();};}function respondWithResult(_0x3f759b,_0x13be3f){_0x13be3f=_0x13be3f||0xc8;return function(_0x2e7d77){if(_0x2e7d77){return _0x3f759b[_0xd8a1('0x1a')](_0x13be3f)[_0xd8a1('0x1c')](_0x2e7d77);}};}function respondWithFilteredResult(_0x383f15,_0x27b57d){return function(_0x4b30ce){if(_0x4b30ce){var _0x44c983=typeof _0x27b57d['offset']==='undefined'&&typeof _0x27b57d[_0xd8a1('0x1d')]===_0xd8a1('0x1e');var _0x3389a9=_0x4b30ce['count'];var _0x250eae=_0x44c983?0x0:_0x27b57d[_0xd8a1('0x1f')];var _0x54d59a=_0x44c983?_0x4b30ce[_0xd8a1('0x20')]:_0x27b57d[_0xd8a1('0x1f')]+_0x27b57d[_0xd8a1('0x1d')];var _0x4c313c;if(_0x54d59a>=_0x3389a9){_0x54d59a=_0x3389a9;_0x4c313c=0xc8;}else{_0x4c313c=0xce;}_0x383f15[_0xd8a1('0x1a')](_0x4c313c);return _0x383f15['set']('Content-Range',_0x250eae+'-'+_0x54d59a+'/'+_0x3389a9)[_0xd8a1('0x1c')](_0x4b30ce);}return null;};}function patchUpdates(_0x4466a8){return function(_0x5d52de){try{jsonpatch['apply'](_0x5d52de,_0x4466a8,!![]);}catch(_0x10d19c){return BPromise[_0xd8a1('0x21')](_0x10d19c);}return _0x5d52de[_0xd8a1('0x22')]();};}function saveUpdates(_0x562a10,_0x591dc8){return function(_0x469875){if(_0x469875){return _0x469875['update'](_0x562a10)['then'](function(_0x10d06c){return _0x10d06c;});}return null;};}function removeEntity(_0x94568c,_0x545285){return function(_0x4c0633){if(_0x4c0633){return _0x4c0633[_0xd8a1('0x23')]()['then'](function(){_0x94568c[_0xd8a1('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4cb074,_0x14e583){return function(_0x6c8889){if(!_0x6c8889){_0x4cb074[_0xd8a1('0x19')](0x194);}return _0x6c8889;};}function handleError(_0x26b261,_0x107b16){_0x107b16=_0x107b16||0x1f4;return function(_0x262d52){logger[_0xd8a1('0x24')](_0x262d52[_0xd8a1('0x25')]);if(_0x262d52['name']){delete _0x262d52['name'];}_0x26b261[_0xd8a1('0x1a')](_0x107b16)[_0xd8a1('0x26')](_0x262d52);};}exports[_0xd8a1('0x27')]=function(_0xeabe81,_0x51ecc7){var _0x527300={},_0xcac433={},_0x4b41be={'count':0x0,'rows':[]};var _0x3eb6fd=_[_0xd8a1('0x28')](db['MailTransferReport']['rawAttributes'],function(_0x1444d0){return{'name':_0x1444d0[_0xd8a1('0x29')],'type':_0x1444d0[_0xd8a1('0x2a')][_0xd8a1('0x2b')]};});_0xcac433[_0xd8a1('0x2c')]=_['map'](_0x3eb6fd,_0xd8a1('0x2d'));_0xcac433[_0xd8a1('0x2e')]=_[_0xd8a1('0x2f')](_0xeabe81[_0xd8a1('0x2e')]);_0xcac433['filters']=_[_0xd8a1('0x30')](_0xcac433[_0xd8a1('0x2c')],_0xcac433[_0xd8a1('0x2e')]);_0x527300[_0xd8a1('0x31')]=_[_0xd8a1('0x30')](_0xcac433[_0xd8a1('0x2c')],qs[_0xd8a1('0x32')](_0xeabe81[_0xd8a1('0x2e')]['fields']));_0x527300['attributes']=_0x527300[_0xd8a1('0x31')][_0xd8a1('0x33')]?_0x527300[_0xd8a1('0x31')]:_0xcac433[_0xd8a1('0x2c')];if(!_0xeabe81['query']['hasOwnProperty'](_0xd8a1('0x34'))){_0x527300[_0xd8a1('0x1d')]=qs['limit'](_0xeabe81[_0xd8a1('0x2e')][_0xd8a1('0x1d')]);_0x527300[_0xd8a1('0x1f')]=qs['offset'](_0xeabe81[_0xd8a1('0x2e')]['offset']);}_0x527300['order']=qs[_0xd8a1('0x35')](_0xeabe81[_0xd8a1('0x2e')]['sort']);_0x527300[_0xd8a1('0x36')]=qs[_0xd8a1('0x37')](_['pick'](_0xeabe81['query'],_0xcac433[_0xd8a1('0x37')]),_0x3eb6fd);if(_0xeabe81['query']['filter']){_0x527300[_0xd8a1('0x36')]=_[_0xd8a1('0x38')](_0x527300['where'],{'$or':_['map'](_0x3eb6fd,function(_0x4a2e83){if(_0x4a2e83['type']!==_0xd8a1('0x39')){var _0x4df11e={};_0x4df11e[_0x4a2e83['name']]={'$like':'%'+_0xeabe81['query'][_0xd8a1('0x3a')]+'%'};return _0x4df11e;}})});}_0x527300=_['merge']({},_0x527300,_0xeabe81[_0xd8a1('0x3b')]);var _0x3cba72={'where':_0x527300['where']};return db['MailTransferReport']['count'](_0x3cba72)[_0xd8a1('0x3c')](function(_0x4baa73){_0x4b41be[_0xd8a1('0x20')]=_0x4baa73;if(_0xeabe81[_0xd8a1('0x2e')][_0xd8a1('0x3d')]){_0x527300[_0xd8a1('0x3e')]=[{'all':!![]}];}return db[_0xd8a1('0x3f')][_0xd8a1('0x40')](_0x527300);})[_0xd8a1('0x3c')](function(_0x4688e8){_0x4b41be[_0xd8a1('0x41')]=_0x4688e8;return _0x4b41be;})[_0xd8a1('0x3c')](respondWithFilteredResult(_0x51ecc7,_0x527300))[_0xd8a1('0x42')](handleError(_0x51ecc7,null));};exports[_0xd8a1('0x43')]=function(_0x27698d,_0x50f91e){var _0x4560d5={'raw':!![],'where':{'id':_0x27698d['params']['id']}},_0xacdc81={};_0xacdc81[_0xd8a1('0x2c')]=_[_0xd8a1('0x2f')](db[_0xd8a1('0x3f')][_0xd8a1('0x44')]);_0xacdc81['query']=_[_0xd8a1('0x2f')](_0x27698d['query']);_0xacdc81[_0xd8a1('0x37')]=_[_0xd8a1('0x30')](_0xacdc81['model'],_0xacdc81[_0xd8a1('0x2e')]);_0x4560d5[_0xd8a1('0x31')]=_[_0xd8a1('0x30')](_0xacdc81[_0xd8a1('0x2c')],qs[_0xd8a1('0x32')](_0x27698d[_0xd8a1('0x2e')][_0xd8a1('0x32')]));_0x4560d5[_0xd8a1('0x31')]=_0x4560d5[_0xd8a1('0x31')][_0xd8a1('0x33')]?_0x4560d5['attributes']:_0xacdc81[_0xd8a1('0x2c')];if(_0x27698d['query'][_0xd8a1('0x3d')]){_0x4560d5[_0xd8a1('0x3e')]=[{'all':!![]}];}_0x4560d5=_[_0xd8a1('0x38')]({},_0x4560d5,_0x27698d[_0xd8a1('0x3b')]);return db[_0xd8a1('0x3f')]['find'](_0x4560d5)[_0xd8a1('0x3c')](handleEntityNotFound(_0x50f91e,null))[_0xd8a1('0x3c')](respondWithResult(_0x50f91e,null))[_0xd8a1('0x42')](handleError(_0x50f91e,null));};exports[_0xd8a1('0x45')]=function(_0x4b0054,_0x1d910c){return db['MailTransferReport'][_0xd8a1('0x45')](_0x4b0054['body'],{})[_0xd8a1('0x3c')](respondWithResult(_0x1d910c,0xc9))[_0xd8a1('0x42')](handleError(_0x1d910c,null));};exports['update']=function(_0x118cb8,_0x4d2b72){if(_0x118cb8['body']['id']){delete _0x118cb8[_0xd8a1('0x46')]['id'];}return db[_0xd8a1('0x3f')][_0xd8a1('0x47')]({'where':{'id':_0x118cb8[_0xd8a1('0x48')]['id']}})[_0xd8a1('0x3c')](handleEntityNotFound(_0x4d2b72,null))[_0xd8a1('0x3c')](saveUpdates(_0x118cb8[_0xd8a1('0x46')],null))['then'](respondWithResult(_0x4d2b72,null))[_0xd8a1('0x42')](handleError(_0x4d2b72,null));};exports[_0xd8a1('0x23')]=function(_0x411e78,_0x50f492){return db[_0xd8a1('0x3f')][_0xd8a1('0x47')]({'where':{'id':_0x411e78[_0xd8a1('0x48')]['id']}})['then'](handleEntityNotFound(_0x50f492,null))[_0xd8a1('0x3c')](removeEntity(_0x50f492,null))[_0xd8a1('0x42')](handleError(_0x50f492,null));};exports['describe']=function(_0x546f58,_0x5c2dfb){return db[_0xd8a1('0x3f')]['describe']()[_0xd8a1('0x3c')](respondWithResult(_0x5c2dfb,null))[_0xd8a1('0x42')](handleError(_0x5c2dfb,null));};
\ No newline at end of file
index 39712d1..aaaae09 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x33c5=['request-promise','path','rimraf','./mailTransferReport.attributes','exports','define','MailTransferReport','report_mail_transfer','uniqueid','util','../../config/logger','moment','bluebird'];(function(_0x52d543,_0x4982e1){var _0x572ca0=function(_0x4af633){while(--_0x4af633){_0x52d543['push'](_0x52d543['shift']());}};_0x572ca0(++_0x4982e1);}(_0x33c5,0xe6));var _0x533c=function(_0x366e99,_0x15d82d){_0x366e99=_0x366e99-0x0;var _0x180bbe=_0x33c5[_0x366e99];return _0x180bbe;};'use strict';var _=require('lodash');var util=require(_0x533c('0x0'));var logger=require(_0x533c('0x1'))('api');var moment=require(_0x533c('0x2'));var BPromise=require(_0x533c('0x3'));var rp=require(_0x533c('0x4'));var fs=require('fs');var path=require(_0x533c('0x5'));var rimraf=require(_0x533c('0x6'));var config=require('../../config/environment');var attributes=require(_0x533c('0x7'));module[_0x533c('0x8')]=function(_0x31d912,_0x151732){return _0x31d912[_0x533c('0x9')](_0x533c('0xa'),attributes,{'tableName':_0x533c('0xb'),'paranoid':![],'indexes':[{'name':_0x533c('0xc'),'fields':[_0x533c('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x05f1=['define','report_mail_transfer','uniqueid','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./mailTransferReport.attributes'];(function(_0x54b062,_0x264bb5){var _0x255e41=function(_0x3c7e6f){while(--_0x3c7e6f){_0x54b062['push'](_0x54b062['shift']());}};_0x255e41(++_0x264bb5);}(_0x05f1,0xfa));var _0x105f=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0x05f1[_0x4565bf];return _0x5610ba;};'use strict';var _=require(_0x105f('0x0'));var util=require(_0x105f('0x1'));var logger=require(_0x105f('0x2'))(_0x105f('0x3'));var moment=require(_0x105f('0x4'));var BPromise=require(_0x105f('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x105f('0x6'));var rimraf=require(_0x105f('0x7'));var config=require(_0x105f('0x8'));var attributes=require(_0x105f('0x9'));module['exports']=function(_0x4c7b13,_0x415948){return _0x4c7b13[_0x105f('0xa')]('MailTransferReport',attributes,{'tableName':_0x105f('0xb'),'paranoid':![],'indexes':[{'name':_0x105f('0xc'),'fields':[_0x105f('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 1a7cb14..0aaa384 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x473f=['request','info','MailTransferReport,\x20%s,\x20%s','request\x20sent','MailTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','util','moment','bluebird','ioredis','rpc','../../config/environment','jayson/promise','client'];(function(_0x89a8d0,_0x38a17b){var _0x24fcb6=function(_0x5c459a){while(--_0x5c459a){_0x89a8d0['push'](_0x89a8d0['shift']());}};_0x24fcb6(++_0x38a17b);}(_0x473f,0xc9));var _0xf473=function(_0x4cfc7c,_0x2bd980){_0x4cfc7c=_0x4cfc7c-0x0;var _0x3810ce=_0x473f[_0x4cfc7c];return _0x3810ce;};'use strict';var _=require('lodash');var util=require(_0xf473('0x0'));var moment=require(_0xf473('0x1'));var BPromise=require(_0xf473('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xf473('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xf473('0x4'));var config=require(_0xf473('0x5'));var jayson=require(_0xf473('0x6'));var client=jayson[_0xf473('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4a4189,_0x491308,_0xb47b0d){return new BPromise(function(_0x554a93,_0x1512fc){return client[_0xf473('0x8')](_0x4a4189,_0xb47b0d)['then'](function(_0x3dc7dc){logger[_0xf473('0x9')](_0xf473('0xa'),_0x491308,_0xf473('0xb'));logger['debug'](_0xf473('0xc'),_0x491308,_0xf473('0xb'),JSON[_0xf473('0xd')](_0x3dc7dc));if(_0x3dc7dc[_0xf473('0xe')]){if(_0x3dc7dc[_0xf473('0xe')][_0xf473('0xf')]===0x1f4){logger[_0xf473('0xe')]('MailTransferReport,\x20%s,\x20%s',_0x491308,_0x3dc7dc[_0xf473('0xe')][_0xf473('0x10')]);return _0x1512fc(_0x3dc7dc['error'][_0xf473('0x10')]);}logger['error']('MailTransferReport,\x20%s,\x20%s',_0x491308,_0x3dc7dc[_0xf473('0xe')][_0xf473('0x10')]);return _0x554a93(_0x3dc7dc[_0xf473('0xe')][_0xf473('0x10')]);}else{logger[_0xf473('0x9')](_0xf473('0xa'),_0x491308,'request\x20sent');_0x554a93(_0x3dc7dc[_0xf473('0x11')][_0xf473('0x10')]);}})[_0xf473('0x12')](function(_0x4ea079){logger[_0xf473('0xe')](_0xf473('0xa'),_0x491308,_0x4ea079);_0x1512fc(_0x4ea079);});});}
\ No newline at end of file
+var _0xe23b=['then','info','request\x20sent','debug','error','code','MailTransferReport,\x20%s,\x20%s','message','result','lodash','bluebird','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','request'];(function(_0x5a9c5e,_0x384036){var _0x3775dc=function(_0x1aa9cd){while(--_0x1aa9cd){_0x5a9c5e['push'](_0x5a9c5e['shift']());}};_0x3775dc(++_0x384036);}(_0xe23b,0x100));var _0xbe23=function(_0x242cdd,_0x4b8a6d){_0x242cdd=_0x242cdd-0x0;var _0x1a9935=_0xe23b[_0x242cdd];return _0x1a9935;};'use strict';var _=require(_0xbe23('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xbe23('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xbe23('0x2'));var db=require(_0xbe23('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0xbe23('0x4'))('rpc');var config=require(_0xbe23('0x5'));var jayson=require(_0xbe23('0x6'));var client=jayson[_0xbe23('0x7')][_0xbe23('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x6ef299,_0x26f9ab,_0x1dea5d){return new BPromise(function(_0x39ade3,_0x2c9fc3){return client[_0xbe23('0x9')](_0x6ef299,_0x1dea5d)[_0xbe23('0xa')](function(_0x49b53f){logger[_0xbe23('0xb')]('MailTransferReport,\x20%s,\x20%s',_0x26f9ab,_0xbe23('0xc'));logger[_0xbe23('0xd')]('MailTransferReport,\x20%s,\x20%s,\x20%s',_0x26f9ab,_0xbe23('0xc'),JSON['stringify'](_0x49b53f));if(_0x49b53f['error']){if(_0x49b53f[_0xbe23('0xe')][_0xbe23('0xf')]===0x1f4){logger['error'](_0xbe23('0x10'),_0x26f9ab,_0x49b53f[_0xbe23('0xe')][_0xbe23('0x11')]);return _0x2c9fc3(_0x49b53f[_0xbe23('0xe')]['message']);}logger['error'](_0xbe23('0x10'),_0x26f9ab,_0x49b53f['error'][_0xbe23('0x11')]);return _0x39ade3(_0x49b53f[_0xbe23('0xe')][_0xbe23('0x11')]);}else{logger[_0xbe23('0xb')]('MailTransferReport,\x20%s,\x20%s',_0x26f9ab,_0xbe23('0xc'));_0x39ade3(_0x49b53f[_0xbe23('0x12')][_0xbe23('0x11')]);}})['catch'](function(_0x5db274){logger['error'](_0xbe23('0x10'),_0x26f9ab,_0x5db274);_0x2c9fc3(_0x5db274);});});}
\ No newline at end of file
index 1e5cf80..207ea55 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c92=['multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./memberReport.controller','get','/describe','describe','/:id','isAuthenticated','create','put','delete','destroy'];(function(_0x449428,_0x10d747){var _0xe29c2f=function(_0x4e90e3){while(--_0x4e90e3){_0x449428['push'](_0x449428['shift']());}};_0xe29c2f(++_0x10d747);}(_0x4c92,0x18f));var _0x24c9=function(_0x5b4708,_0x9b1584){_0x5b4708=_0x5b4708-0x0;var _0x4597ff=_0x4c92[_0x5b4708];return _0x4597ff;};'use strict';var multer=require(_0x24c9('0x0'));var util=require(_0x24c9('0x1'));var path=require('path');var timeout=require(_0x24c9('0x2'));var express=require(_0x24c9('0x3'));var router=express[_0x24c9('0x4')]();var fs_extra=require(_0x24c9('0x5'));var auth=require(_0x24c9('0x6'));var interaction=require(_0x24c9('0x7'));var config=require(_0x24c9('0x8'));var controller=require(_0x24c9('0x9'));router[_0x24c9('0xa')]('/',auth['isAuthenticated'](),controller['index']);router[_0x24c9('0xa')](_0x24c9('0xb'),auth['isAuthenticated'](),controller[_0x24c9('0xc')]);router[_0x24c9('0xa')](_0x24c9('0xd'),auth[_0x24c9('0xe')](),controller['show']);router['post']('/',auth[_0x24c9('0xe')](),controller[_0x24c9('0xf')]);router[_0x24c9('0x10')]('/:id',auth['isAuthenticated'](),controller['update']);router[_0x24c9('0x11')]('/:id',auth[_0x24c9('0xe')](),controller[_0x24c9('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0x0b81=['/describe','describe','/:id','show','put','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index'];(function(_0x1381b1,_0x5f4dc4){var _0x475784=function(_0x36ed06){while(--_0x36ed06){_0x1381b1['push'](_0x1381b1['shift']());}};_0x475784(++_0x5f4dc4);}(_0x0b81,0x112));var _0x10b8=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0b81[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require(_0x10b8('0x0'));var path=require(_0x10b8('0x1'));var timeout=require(_0x10b8('0x2'));var express=require(_0x10b8('0x3'));var router=express[_0x10b8('0x4')]();var fs_extra=require(_0x10b8('0x5'));var auth=require(_0x10b8('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x10b8('0x7'));var controller=require('./memberReport.controller');router[_0x10b8('0x8')]('/',auth[_0x10b8('0x9')](),controller[_0x10b8('0xa')]);router[_0x10b8('0x8')](_0x10b8('0xb'),auth[_0x10b8('0x9')](),controller[_0x10b8('0xc')]);router[_0x10b8('0x8')](_0x10b8('0xd'),auth[_0x10b8('0x9')](),controller[_0x10b8('0xe')]);router['post']('/',auth[_0x10b8('0x9')](),controller['create']);router[_0x10b8('0xf')](_0x10b8('0xd'),auth[_0x10b8('0x9')](),controller['update']);router[_0x10b8('0x10')](_0x10b8('0xd'),auth[_0x10b8('0x9')](),controller[_0x10b8('0x11')]);module[_0x10b8('0x12')]=router;
\ No newline at end of file
index 041f53d..ac7f679 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e9b=['talk:[start]','talk:[destination]','talk:[queue]','sequelize','STRING','LOGIN,\x20PAUSE,\x20TALKING','INTEGER','DATE','getDataValue','enterAt','diff','seconds','setDataValue','exitAt','talk:[inbound,\x20outbound],\x20pause:[reason]'];(function(_0x197a03,_0x37e7a1){var _0x4e6959=function(_0x392cfa){while(--_0x392cfa){_0x197a03['push'](_0x197a03['shift']());}};_0x4e6959(++_0x37e7a1);}(_0x9e9b,0x1a7));var _0xb9e9=function(_0x3425f9,_0x2358ca){_0x3425f9=_0x3425f9-0x0;var _0x814f39=_0x9e9b[_0x3425f9];return _0x814f39;};'use strict';var Sequelize=require(_0xb9e9('0x0'));var moment=require('moment');module['exports']={'channel':{'type':Sequelize[_0xb9e9('0x1')]},'membername':{'type':Sequelize[_0xb9e9('0x1')]},'interface':{'type':Sequelize[_0xb9e9('0x1')]},'type':{'type':Sequelize[_0xb9e9('0x1')],'defaultValue':'DEFAULT\x20PAUSE','comment':_0xb9e9('0x2')},'duration':{'type':Sequelize[_0xb9e9('0x3')]},'enterAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize[_0xb9e9('0x4')],'set':function(_0x7b18d5){var _0x3e4023=moment(_0x7b18d5);var _0x119d31=moment(this[_0xb9e9('0x5')](_0xb9e9('0x6')));var _0x2e9b34=_0x3e4023[_0xb9e9('0x7')](_0x119d31,_0xb9e9('0x8'));this[_0xb9e9('0x9')](_0xb9e9('0xa'),_0x7b18d5);this[_0xb9e9('0x9')]('duration',_0x2e9b34||null);}},'data1':{'type':Sequelize[_0xb9e9('0x1')],'comment':_0xb9e9('0xb')},'data2':{'type':Sequelize['STRING'],'comment':_0xb9e9('0xc')},'data3':{'type':Sequelize[_0xb9e9('0x1')],'comment':_0xb9e9('0xd')},'data4':{'type':Sequelize['STRING'],'comment':'talk:[dial\x20string]'},'data5':{'type':Sequelize[_0xb9e9('0x1')],'comment':_0xb9e9('0xe')},'role':{'type':Sequelize[_0xb9e9('0x1')]},'internal':{'type':Sequelize[_0xb9e9('0x3')]},'uniqueid':{'type':Sequelize[_0xb9e9('0x1')]}};
\ No newline at end of file
+var _0x280f=['seconds','setDataValue','exitAt','duration','talk:[inbound,\x20outbound],\x20pause:[reason]','talk:[start]','talk:[destination]','talk:[dial\x20string]','talk:[queue]','INTEGER','sequelize','exports','STRING','DEFAULT\x20PAUSE','LOGIN,\x20PAUSE,\x20TALKING','DATE','enterAt','diff'];(function(_0x2880ab,_0x37fc24){var _0x50792b=function(_0x991a93){while(--_0x991a93){_0x2880ab['push'](_0x2880ab['shift']());}};_0x50792b(++_0x37fc24);}(_0x280f,0xe2));var _0xf280=function(_0x187718,_0x427383){_0x187718=_0x187718-0x0;var _0x29ddf4=_0x280f[_0x187718];return _0x29ddf4;};'use strict';var Sequelize=require(_0xf280('0x0'));var moment=require('moment');module[_0xf280('0x1')]={'channel':{'type':Sequelize[_0xf280('0x2')]},'membername':{'type':Sequelize[_0xf280('0x2')]},'interface':{'type':Sequelize[_0xf280('0x2')]},'type':{'type':Sequelize[_0xf280('0x2')],'defaultValue':_0xf280('0x3'),'comment':_0xf280('0x4')},'duration':{'type':Sequelize['INTEGER']},'enterAt':{'type':Sequelize[_0xf280('0x5')]},'exitAt':{'type':Sequelize[_0xf280('0x5')],'set':function(_0x23925d){var _0x34eef7=moment(_0x23925d);var _0x3454e8=moment(this['getDataValue'](_0xf280('0x6')));var _0x4392c5=_0x34eef7[_0xf280('0x7')](_0x3454e8,_0xf280('0x8'));this[_0xf280('0x9')](_0xf280('0xa'),_0x23925d);this['setDataValue'](_0xf280('0xb'),_0x4392c5||null);}},'data1':{'type':Sequelize[_0xf280('0x2')],'comment':_0xf280('0xc')},'data2':{'type':Sequelize[_0xf280('0x2')],'comment':_0xf280('0xd')},'data3':{'type':Sequelize[_0xf280('0x2')],'comment':_0xf280('0xe')},'data4':{'type':Sequelize[_0xf280('0x2')],'comment':_0xf280('0xf')},'data5':{'type':Sequelize[_0xf280('0x2')],'comment':_0xf280('0x10')},'role':{'type':Sequelize['STRING']},'internal':{'type':Sequelize[_0xf280('0x11')]},'uniqueid':{'type':Sequelize[_0xf280('0x2')]}};
\ No newline at end of file
index 315e0bd..c59833f 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(_0x7aa744,_0x450c0d){var _0x3ef3cb=function(_0x44cc93){while(--_0x44cc93){_0x7aa744['push'](_0x7aa744['shift']());}};_0x3ef3cb(++_0x450c0d);}(_0x008c,0x188));var _0xc008=function(_0x5365ad,_0x41ec9b){_0x5365ad=_0x5365ad-0x0;var _0x365519=_0x008c[_0x5365ad];return _0x365519;};'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(_0x40bffc,_0x3a45d7){var _0x3007e9=function(_0x4c8fda){while(--_0x4c8fda){_0x40bffc['push'](_0x40bffc['shift']());}};_0x3007e9(++_0x3a45d7);}(_0x34e8,0x12c));var _0x834e=function(_0x48ef50,_0x5da22f){_0x48ef50=_0x48ef50-0x0;var _0x25aab0=_0x34e8[_0x48ef50];return _0x25aab0;};'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 1a09181..3f8e734 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb49=['rimraf','./memberReport.attributes','exports','define','MemberReport','membername_interface','membername','lodash','../../config/logger','api','moment','bluebird','path'];(function(_0x48defd,_0x1836d7){var _0x18672e=function(_0x7b75bd){while(--_0x7b75bd){_0x48defd['push'](_0x48defd['shift']());}};_0x18672e(++_0x1836d7);}(_0xbb49,0xbd));var _0x9bb4=function(_0x3c4156,_0x43c52b){_0x3c4156=_0x3c4156-0x0;var _0x1b8e54=_0xbb49[_0x3c4156];return _0x1b8e54;};'use strict';var _=require(_0x9bb4('0x0'));var util=require('util');var logger=require(_0x9bb4('0x1'))(_0x9bb4('0x2'));var moment=require(_0x9bb4('0x3'));var BPromise=require(_0x9bb4('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x9bb4('0x5'));var rimraf=require(_0x9bb4('0x6'));var config=require('../../config/environment');var attributes=require(_0x9bb4('0x7'));module[_0x9bb4('0x8')]=function(_0x18c2ef,_0x1c6db9){return _0x18c2ef[_0x9bb4('0x9')](_0x9bb4('0xa'),attributes,{'tableName':'report_member','paranoid':![],'indexes':[{'name':_0x9bb4('0xb'),'fields':[_0x9bb4('0xc'),'interface']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x7e69=['bluebird','request-promise','rimraf','../../config/environment','./memberReport.attributes','exports','define','membername','lodash','../../config/logger','api','moment'];(function(_0x5b21cd,_0x230928){var _0x22b9ec=function(_0xa2000c){while(--_0xa2000c){_0x5b21cd['push'](_0x5b21cd['shift']());}};_0x22b9ec(++_0x230928);}(_0x7e69,0x1b8));var _0x97e6=function(_0x13ec2b,_0x40b664){_0x13ec2b=_0x13ec2b-0x0;var _0x1fb3f4=_0x7e69[_0x13ec2b];return _0x1fb3f4;};'use strict';var _=require(_0x97e6('0x0'));var util=require('util');var logger=require(_0x97e6('0x1'))(_0x97e6('0x2'));var moment=require(_0x97e6('0x3'));var BPromise=require(_0x97e6('0x4'));var rp=require(_0x97e6('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x97e6('0x6'));var config=require(_0x97e6('0x7'));var attributes=require(_0x97e6('0x8'));module[_0x97e6('0x9')]=function(_0x4c77bc,_0x17f77b){return _0x4c77bc[_0x97e6('0xa')]('MemberReport',attributes,{'tableName':'report_member','paranoid':![],'indexes':[{'name':'membername_interface','fields':[_0x97e6('0xb'),'interface']}],'timestamps':!![]});};
\ No newline at end of file
index 7ee66eb..00c6e1d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbff5=['catch','update','then','UpdateMemberReport','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','jayson/promise','client','http','request','MemberReport,\x20%s,\x20%s','request\x20sent','MemberReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','findAll','options','where','attributes','limit','include','map','model','GetMemberReport','MemberReport','create','body','raw','CreateMemberReport','debug'];(function(_0x8da52a,_0x3f20c1){var _0x30d00c=function(_0x1b9555){while(--_0x1b9555){_0x8da52a['push'](_0x8da52a['shift']());}};_0x30d00c(++_0x3f20c1);}(_0xbff5,0x1bc));var _0x5bff=function(_0x130ea3,_0x31920b){_0x130ea3=_0x130ea3-0x0;var _0x2445bb=_0xbff5[_0x130ea3];return _0x2445bb;};'use strict';var _=require(_0x5bff('0x0'));var util=require(_0x5bff('0x1'));var moment=require(_0x5bff('0x2'));var BPromise=require(_0x5bff('0x3'));var rs=require(_0x5bff('0x4'));var fs=require('fs');var Redis=require(_0x5bff('0x5'));var db=require(_0x5bff('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x5bff('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x5bff('0x8'));var client=jayson[_0x5bff('0x9')][_0x5bff('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xa54c57,_0x43605a,_0xd4b9dc){return new BPromise(function(_0x1acb49,_0x139c99){return client[_0x5bff('0xb')](_0xa54c57,_0xd4b9dc)['then'](function(_0x20e26f){logger['info'](_0x5bff('0xc'),_0x43605a,_0x5bff('0xd'));logger['debug'](_0x5bff('0xe'),_0x43605a,'request\x20sent',JSON[_0x5bff('0xf')](_0x20e26f));if(_0x20e26f['error']){if(_0x20e26f[_0x5bff('0x10')][_0x5bff('0x11')]===0x1f4){logger['error'](_0x5bff('0xc'),_0x43605a,_0x20e26f['error'][_0x5bff('0x12')]);return _0x139c99(_0x20e26f[_0x5bff('0x10')]['message']);}logger[_0x5bff('0x10')](_0x5bff('0xc'),_0x43605a,_0x20e26f['error']['message']);return _0x1acb49(_0x20e26f[_0x5bff('0x10')][_0x5bff('0x12')]);}else{logger[_0x5bff('0x13')]('MemberReport,\x20%s,\x20%s',_0x43605a,_0x5bff('0xd'));_0x1acb49(_0x20e26f[_0x5bff('0x14')][_0x5bff('0x12')]);}})['catch'](function(_0x3ffbbc){logger[_0x5bff('0x10')](_0x5bff('0xc'),_0x43605a,_0x3ffbbc);_0x139c99(_0x3ffbbc);});});}exports['GetMemberReport']=function(_0xc9fbc3){var _0x279c22=this;return new Promise(function(_0x36653b,_0x32cf60){return db['MemberReport'][_0x5bff('0x15')]({'raw':_0xc9fbc3['options']?_0xc9fbc3[_0x5bff('0x16')]['raw']===undefined?!![]:![]:!![],'where':_0xc9fbc3[_0x5bff('0x16')]?_0xc9fbc3[_0x5bff('0x16')][_0x5bff('0x17')]||null:null,'attributes':_0xc9fbc3[_0x5bff('0x16')]?_0xc9fbc3[_0x5bff('0x16')][_0x5bff('0x18')]||null:null,'limit':_0xc9fbc3[_0x5bff('0x16')]?_0xc9fbc3[_0x5bff('0x16')][_0x5bff('0x19')]||null:null,'include':_0xc9fbc3['options']?_0xc9fbc3[_0x5bff('0x16')][_0x5bff('0x1a')]?_[_0x5bff('0x1b')](_0xc9fbc3[_0x5bff('0x16')][_0x5bff('0x1a')],function(_0x31d26b){return{'model':db[_0x31d26b[_0x5bff('0x1c')]],'as':_0x31d26b['as'],'attributes':_0x31d26b[_0x5bff('0x18')],'include':_0x31d26b['include']?_['map'](_0x31d26b[_0x5bff('0x1a')],function(_0x53bd97){return{'model':db[_0x53bd97[_0x5bff('0x1c')]],'as':_0x53bd97['as'],'attributes':_0x53bd97[_0x5bff('0x18')],'include':_0x53bd97[_0x5bff('0x1a')]?_[_0x5bff('0x1b')](_0x53bd97[_0x5bff('0x1a')],function(_0x1140eb){return{'model':db[_0x1140eb[_0x5bff('0x1c')]],'as':_0x1140eb['as'],'attributes':_0x1140eb[_0x5bff('0x18')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4df57a){logger[_0x5bff('0x13')](_0x5bff('0x1d'),_0xc9fbc3);logger['debug'](_0x5bff('0x1d'),_0xc9fbc3,JSON['stringify'](_0x4df57a));_0x36653b(_0x4df57a);})['catch'](function(_0x3eda3a){logger['error'](_0x5bff('0x1d'),_0x3eda3a[_0x5bff('0x12')],_0xc9fbc3);_0x32cf60(_0x279c22[_0x5bff('0x10')](0x1f4,_0x3eda3a[_0x5bff('0x12')]));});});};exports['CreateMemberReport']=function(_0x71783){var _0x4ee6f1=this;return new Promise(function(_0x3c1405,_0x5a7873){return db[_0x5bff('0x1e')][_0x5bff('0x1f')](_0x71783[_0x5bff('0x20')],{'raw':_0x71783[_0x5bff('0x16')]?_0x71783[_0x5bff('0x16')][_0x5bff('0x21')]===undefined?!![]:![]:!![]})['then'](function(_0x31b175){logger[_0x5bff('0x13')](_0x5bff('0x22'),_0x71783);logger[_0x5bff('0x23')](_0x5bff('0x22'),_0x71783,JSON[_0x5bff('0xf')](_0x31b175));_0x3c1405(_0x31b175);})[_0x5bff('0x24')](function(_0x16b3c2){logger['error'](_0x5bff('0x22'),_0x16b3c2[_0x5bff('0x12')],_0x71783);_0x5a7873(_0x4ee6f1[_0x5bff('0x10')](0x1f4,_0x16b3c2[_0x5bff('0x12')]));});});};exports['UpdateMemberReport']=function(_0x19cfc3){var _0x48ed7=this;return new Promise(function(_0x5a24be,_0x383e7d){return db[_0x5bff('0x1e')][_0x5bff('0x25')](_0x19cfc3[_0x5bff('0x20')],{'raw':_0x19cfc3['options']?_0x19cfc3[_0x5bff('0x16')][_0x5bff('0x21')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x19cfc3[_0x5bff('0x16')]?_0x19cfc3['options'][_0x5bff('0x17')]||null:null,'attributes':_0x19cfc3['options']?_0x19cfc3[_0x5bff('0x16')][_0x5bff('0x18')]||null:null,'limit':_0x19cfc3[_0x5bff('0x16')]?_0x19cfc3['options'][_0x5bff('0x19')]||null:null})[_0x5bff('0x26')](function(_0x3a4763){logger['info'](_0x5bff('0x27'),_0x19cfc3);logger[_0x5bff('0x23')]('UpdateMemberReport',_0x19cfc3,JSON[_0x5bff('0xf')](_0x3a4763));_0x5a24be(_0x3a4763);})[_0x5bff('0x24')](function(_0x2ff182){logger[_0x5bff('0x10')](_0x5bff('0x27'),_0x2ff182['message'],_0x19cfc3);_0x383e7d(_0x48ed7[_0x5bff('0x10')](0x1f4,_0x2ff182['message']));});});};
\ No newline at end of file
+var _0xc21c=['MemberReport','findAll','options','raw','where','attributes','include','map','model','then','stringify','CreateMemberReport','body','UpdateMemberReport','update','limit','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','MemberReport,\x20%s,\x20%s','debug','MemberReport,\x20%s,\x20%s,\x20%s','error','message','info','request\x20sent','catch','GetMemberReport'];(function(_0x3234a8,_0x36b4be){var _0x559792=function(_0x44ce9b){while(--_0x44ce9b){_0x3234a8['push'](_0x3234a8['shift']());}};_0x559792(++_0x36b4be);}(_0xc21c,0x166));var _0xcc21=function(_0x1dd254,_0x1a4f6a){_0x1dd254=_0x1dd254-0x0;var _0x43e4c3=_0xc21c[_0x1dd254];return _0x43e4c3;};'use strict';var _=require(_0xcc21('0x0'));var util=require(_0xcc21('0x1'));var moment=require('moment');var BPromise=require(_0xcc21('0x2'));var rs=require(_0xcc21('0x3'));var fs=require('fs');var Redis=require(_0xcc21('0x4'));var db=require(_0xcc21('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xcc21('0x6'))(_0xcc21('0x7'));var config=require(_0xcc21('0x8'));var jayson=require(_0xcc21('0x9'));var client=jayson[_0xcc21('0xa')][_0xcc21('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x33604a,_0x4f3166,_0x2676fe){return new BPromise(function(_0xff4686,_0x4cb3ea){return client[_0xcc21('0xc')](_0x33604a,_0x2676fe)['then'](function(_0x144387){logger['info'](_0xcc21('0xd'),_0x4f3166,'request\x20sent');logger[_0xcc21('0xe')](_0xcc21('0xf'),_0x4f3166,'request\x20sent',JSON['stringify'](_0x144387));if(_0x144387[_0xcc21('0x10')]){if(_0x144387[_0xcc21('0x10')]['code']===0x1f4){logger[_0xcc21('0x10')]('MemberReport,\x20%s,\x20%s',_0x4f3166,_0x144387[_0xcc21('0x10')][_0xcc21('0x11')]);return _0x4cb3ea(_0x144387[_0xcc21('0x10')]['message']);}logger[_0xcc21('0x10')]('MemberReport,\x20%s,\x20%s',_0x4f3166,_0x144387[_0xcc21('0x10')][_0xcc21('0x11')]);return _0xff4686(_0x144387[_0xcc21('0x10')][_0xcc21('0x11')]);}else{logger[_0xcc21('0x12')](_0xcc21('0xd'),_0x4f3166,_0xcc21('0x13'));_0xff4686(_0x144387['result']['message']);}})[_0xcc21('0x14')](function(_0x56d008){logger[_0xcc21('0x10')](_0xcc21('0xd'),_0x4f3166,_0x56d008);_0x4cb3ea(_0x56d008);});});}exports[_0xcc21('0x15')]=function(_0x132145){var _0x79ea56=this;return new Promise(function(_0x5a727c,_0x30f62e){return db[_0xcc21('0x16')][_0xcc21('0x17')]({'raw':_0x132145[_0xcc21('0x18')]?_0x132145['options'][_0xcc21('0x19')]===undefined?!![]:![]:!![],'where':_0x132145[_0xcc21('0x18')]?_0x132145[_0xcc21('0x18')][_0xcc21('0x1a')]||null:null,'attributes':_0x132145[_0xcc21('0x18')]?_0x132145['options'][_0xcc21('0x1b')]||null:null,'limit':_0x132145[_0xcc21('0x18')]?_0x132145['options']['limit']||null:null,'include':_0x132145[_0xcc21('0x18')]?_0x132145['options'][_0xcc21('0x1c')]?_[_0xcc21('0x1d')](_0x132145[_0xcc21('0x18')][_0xcc21('0x1c')],function(_0x438d6c){return{'model':db[_0x438d6c[_0xcc21('0x1e')]],'as':_0x438d6c['as'],'attributes':_0x438d6c['attributes'],'include':_0x438d6c[_0xcc21('0x1c')]?_['map'](_0x438d6c[_0xcc21('0x1c')],function(_0x3a5c4a){return{'model':db[_0x3a5c4a[_0xcc21('0x1e')]],'as':_0x3a5c4a['as'],'attributes':_0x3a5c4a[_0xcc21('0x1b')],'include':_0x3a5c4a['include']?_[_0xcc21('0x1d')](_0x3a5c4a['include'],function(_0x6280ac){return{'model':db[_0x6280ac[_0xcc21('0x1e')]],'as':_0x6280ac['as'],'attributes':_0x6280ac[_0xcc21('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xcc21('0x1f')](function(_0x7ff7d2){logger[_0xcc21('0x12')](_0xcc21('0x15'),_0x132145);logger[_0xcc21('0xe')](_0xcc21('0x15'),_0x132145,JSON[_0xcc21('0x20')](_0x7ff7d2));_0x5a727c(_0x7ff7d2);})['catch'](function(_0x304658){logger['error'](_0xcc21('0x15'),_0x304658[_0xcc21('0x11')],_0x132145);_0x30f62e(_0x79ea56[_0xcc21('0x10')](0x1f4,_0x304658['message']));});});};exports[_0xcc21('0x21')]=function(_0x506901){var _0x29f003=this;return new Promise(function(_0x5d1dc3,_0x5b1f31){return db['MemberReport']['create'](_0x506901[_0xcc21('0x22')],{'raw':_0x506901['options']?_0x506901[_0xcc21('0x18')]['raw']===undefined?!![]:![]:!![]})[_0xcc21('0x1f')](function(_0x311a00){logger[_0xcc21('0x12')]('CreateMemberReport',_0x506901);logger[_0xcc21('0xe')](_0xcc21('0x21'),_0x506901,JSON[_0xcc21('0x20')](_0x311a00));_0x5d1dc3(_0x311a00);})[_0xcc21('0x14')](function(_0x56b983){logger['error'](_0xcc21('0x21'),_0x56b983['message'],_0x506901);_0x5b1f31(_0x29f003[_0xcc21('0x10')](0x1f4,_0x56b983[_0xcc21('0x11')]));});});};exports[_0xcc21('0x23')]=function(_0x590b7f){var _0x46a3b8=this;return new Promise(function(_0x51f67a,_0x4bb1ca){return db[_0xcc21('0x16')][_0xcc21('0x24')](_0x590b7f['body'],{'raw':_0x590b7f[_0xcc21('0x18')]?_0x590b7f[_0xcc21('0x18')][_0xcc21('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x590b7f[_0xcc21('0x18')]?_0x590b7f[_0xcc21('0x18')][_0xcc21('0x1a')]||null:null,'attributes':_0x590b7f['options']?_0x590b7f[_0xcc21('0x18')][_0xcc21('0x1b')]||null:null,'limit':_0x590b7f[_0xcc21('0x18')]?_0x590b7f[_0xcc21('0x18')][_0xcc21('0x25')]||null:null})['then'](function(_0xf03d8e){logger[_0xcc21('0x12')](_0xcc21('0x23'),_0x590b7f);logger['debug'](_0xcc21('0x23'),_0x590b7f,JSON[_0xcc21('0x20')](_0xf03d8e));_0x51f67a(_0xf03d8e);})[_0xcc21('0x14')](function(_0x46cf4f){logger['error']('UpdateMemberReport',_0x46cf4f[_0xcc21('0x11')],_0x590b7f);_0x4bb1ca(_0x46a3b8[_0xcc21('0x10')](0x1f4,_0x46cf4f['message']));});});};
\ No newline at end of file
index bc8b9ed..0b91bc4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5e38=['index','exports','util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./migration.controller','get'];(function(_0x37613e,_0x5a048b){var _0x352116=function(_0x3d77a2){while(--_0x3d77a2){_0x37613e['push'](_0x37613e['shift']());}};_0x352116(++_0x5a048b);}(_0x5e38,0x12e));var _0x85e3=function(_0x6effa7,_0x390cef){_0x6effa7=_0x6effa7-0x0;var _0x4b9093=_0x5e38[_0x6effa7];return _0x4b9093;};'use strict';var multer=require('multer');var util=require(_0x85e3('0x0'));var path=require('path');var timeout=require(_0x85e3('0x1'));var express=require(_0x85e3('0x2'));var router=express['Router']();var fs_extra=require(_0x85e3('0x3'));var auth=require(_0x85e3('0x4'));var interaction=require(_0x85e3('0x5'));var config=require('../../config/environment');var controller=require(_0x85e3('0x6'));router[_0x85e3('0x7')]('/',controller[_0x85e3('0x8')]);module[_0x85e3('0x9')]=router;
\ No newline at end of file
+var _0x8f62=['../../components/auth/service','../../components/interaction/service','../../config/environment','./migration.controller','get','index','exports','multer','util','path','connect-timeout','express','fs-extra'];(function(_0x2b4411,_0x2625ed){var _0x8e41ef=function(_0x2aa8c1){while(--_0x2aa8c1){_0x2b4411['push'](_0x2b4411['shift']());}};_0x8e41ef(++_0x2625ed);}(_0x8f62,0x96));var _0x28f6=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x8f62[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x28f6('0x0'));var util=require(_0x28f6('0x1'));var path=require(_0x28f6('0x2'));var timeout=require(_0x28f6('0x3'));var express=require(_0x28f6('0x4'));var router=express['Router']();var fs_extra=require(_0x28f6('0x5'));var auth=require(_0x28f6('0x6'));var interaction=require(_0x28f6('0x7'));var config=require(_0x28f6('0x8'));var controller=require(_0x28f6('0x9'));router[_0x28f6('0xa')]('/',controller[_0x28f6('0xb')]);module[_0x28f6('0xc')]=router;
\ No newline at end of file
index af11b09..b2b834f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf8d3=['STRING','version','sequelize','exports'];(function(_0x47b58b,_0x41a189){var _0x46bebe=function(_0x22bbfa){while(--_0x22bbfa){_0x47b58b['push'](_0x47b58b['shift']());}};_0x46bebe(++_0x41a189);}(_0xf8d3,0x17a));var _0x3f8d=function(_0x4a9801,_0x548afb){_0x4a9801=_0x4a9801-0x0;var _0x2b089a=_0xf8d3[_0x4a9801];return _0x2b089a;};'use strict';var Sequelize=require(_0x3f8d('0x0'));module[_0x3f8d('0x1')]={'version':{'type':Sequelize[_0x3f8d('0x2')],'unique':_0x3f8d('0x3')}};
\ No newline at end of file
+var _0x1091=['sequelize','exports','STRING','version'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1091,0x190));var _0x1109=function(_0x1f673f,_0x41330a){_0x1f673f=_0x1f673f-0x0;var _0x4a36ea=_0x1091[_0x1f673f];return _0x4a36ea;};'use strict';var Sequelize=require(_0x1109('0x0'));module[_0x1109('0x1')]={'version':{'type':Sequelize[_0x1109('0x2')],'unique':_0x1109('0x3')}};
\ No newline at end of file
index a165895..ab74d9d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc6f=['Migration','fieldName','key','model','name','query','filters','intersection','attributes','fields','hasOwnProperty','order','sort','pick','filter','where','type','merge','include','rows','catch','eml-format','rimraf','request-promise','moment','bluebird','path','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','destroy','then','error','send','index','map'];(function(_0x266330,_0x2d714c){var _0x1b6cf5=function(_0x54dcd5){while(--_0x54dcd5){_0x266330['push'](_0x266330['shift']());}};_0x1b6cf5(++_0x2d714c);}(_0xdc6f,0xf9));var _0xfdc6=function(_0x42322d,_0x5567b8){_0x42322d=_0x42322d-0x0;var _0x409906=_0xdc6f[_0x42322d];return _0x409906;};'use strict';var emlformat=require(_0xfdc6('0x0'));var rimraf=require(_0xfdc6('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xfdc6('0x2'));var moment=require(_0xfdc6('0x3'));var BPromise=require(_0xfdc6('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0xfdc6('0x5'));var sox=require('sox');var csv=require(_0xfdc6('0x6'));var ejs=require(_0xfdc6('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xfdc6('0x8'));var squel=require(_0xfdc6('0x9'));var crypto=require(_0xfdc6('0xa'));var jsforce=require(_0xfdc6('0xb'));var deskjs=require(_0xfdc6('0xc'));var toCsv=require(_0xfdc6('0x6'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xfdc6('0xd'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xfdc6('0xe'));var utils=require(_0xfdc6('0xf'));var config=require(_0xfdc6('0x10'));var licenseUtil=require('../../config/license/util');var db=require(_0xfdc6('0x11'))['db'];function respondWithStatusCode(_0x1294d6,_0x255375){_0x255375=_0x255375||0xcc;return function(_0x3c0dd2){if(_0x3c0dd2){return _0x1294d6[_0xfdc6('0x12')](_0x255375);}return _0x1294d6['status'](_0x255375)[_0xfdc6('0x13')]();};}function respondWithResult(_0x176941,_0x394f50){_0x394f50=_0x394f50||0xc8;return function(_0x26394a){if(_0x26394a){return _0x176941[_0xfdc6('0x14')](_0x394f50)['json'](_0x26394a);}};}function respondWithFilteredResult(_0x24e2d1,_0x434fff){return function(_0x3cb5d1){if(_0x3cb5d1){var _0x5544cf=typeof _0x434fff[_0xfdc6('0x15')]===_0xfdc6('0x16')&&typeof _0x434fff[_0xfdc6('0x17')]==='undefined';var _0x284afe=_0x3cb5d1[_0xfdc6('0x18')];var _0x1f490c=_0x5544cf?0x0:_0x434fff['offset'];var _0x41e541=_0x5544cf?_0x3cb5d1[_0xfdc6('0x18')]:_0x434fff['offset']+_0x434fff[_0xfdc6('0x17')];var _0x43faa2;if(_0x41e541>=_0x284afe){_0x41e541=_0x284afe;_0x43faa2=0xc8;}else{_0x43faa2=0xce;}_0x24e2d1[_0xfdc6('0x14')](_0x43faa2);return _0x24e2d1[_0xfdc6('0x19')](_0xfdc6('0x1a'),_0x1f490c+'-'+_0x41e541+'/'+_0x284afe)[_0xfdc6('0x1b')](_0x3cb5d1);}return null;};}function patchUpdates(_0x416901){return function(_0xb7716){try{jsonpatch[_0xfdc6('0x1c')](_0xb7716,_0x416901,!![]);}catch(_0x501fe0){return BPromise[_0xfdc6('0x1d')](_0x501fe0);}return _0xb7716['save']();};}function saveUpdates(_0x3da847,_0x1fbdd0){return function(_0x1dd5fd){if(_0x1dd5fd){return _0x1dd5fd['update'](_0x3da847)['then'](function(_0x3dd396){return _0x3dd396;});}return null;};}function removeEntity(_0x3f513f,_0x548739){return function(_0x1f1b70){if(_0x1f1b70){return _0x1f1b70[_0xfdc6('0x1e')]()[_0xfdc6('0x1f')](function(){_0x3f513f['status'](0xcc)[_0xfdc6('0x13')]();});}};}function handleEntityNotFound(_0x4a280c,_0x5c8d1b){return function(_0x547db8){if(!_0x547db8){_0x4a280c[_0xfdc6('0x12')](0x194);}return _0x547db8;};}function handleError(_0x40974e,_0x2c74a0){_0x2c74a0=_0x2c74a0||0x1f4;return function(_0x523207){logger[_0xfdc6('0x20')](_0x523207['stack']);if(_0x523207['name']){delete _0x523207['name'];}_0x40974e[_0xfdc6('0x14')](_0x2c74a0)[_0xfdc6('0x21')](_0x523207);};}exports[_0xfdc6('0x22')]=function(_0x13e8e8,_0x53456f){var _0x3992e7={},_0x466623={},_0x11ce7a={'count':0x0,'rows':[]};var _0x2f1971=_[_0xfdc6('0x23')](db[_0xfdc6('0x24')]['rawAttributes'],function(_0x25719f){return{'name':_0x25719f[_0xfdc6('0x25')],'type':_0x25719f['type'][_0xfdc6('0x26')]};});_0x466623[_0xfdc6('0x27')]=_[_0xfdc6('0x23')](_0x2f1971,_0xfdc6('0x28'));_0x466623[_0xfdc6('0x29')]=_['keys'](_0x13e8e8[_0xfdc6('0x29')]);_0x466623[_0xfdc6('0x2a')]=_[_0xfdc6('0x2b')](_0x466623[_0xfdc6('0x27')],_0x466623[_0xfdc6('0x29')]);_0x3992e7[_0xfdc6('0x2c')]=_[_0xfdc6('0x2b')](_0x466623[_0xfdc6('0x27')],qs['fields'](_0x13e8e8['query'][_0xfdc6('0x2d')]));_0x3992e7[_0xfdc6('0x2c')]=_0x3992e7[_0xfdc6('0x2c')]['length']?_0x3992e7['attributes']:_0x466623[_0xfdc6('0x27')];if(!_0x13e8e8['query'][_0xfdc6('0x2e')]('nolimit')){_0x3992e7[_0xfdc6('0x17')]=qs['limit'](_0x13e8e8[_0xfdc6('0x29')][_0xfdc6('0x17')]);_0x3992e7[_0xfdc6('0x15')]=qs[_0xfdc6('0x15')](_0x13e8e8[_0xfdc6('0x29')]['offset']);}_0x3992e7[_0xfdc6('0x2f')]=qs[_0xfdc6('0x30')](_0x13e8e8[_0xfdc6('0x29')][_0xfdc6('0x30')]);_0x3992e7['where']=qs[_0xfdc6('0x2a')](_[_0xfdc6('0x31')](_0x13e8e8['query'],_0x466623['filters']),_0x2f1971);if(_0x13e8e8[_0xfdc6('0x29')][_0xfdc6('0x32')]){_0x3992e7[_0xfdc6('0x33')]=_['merge'](_0x3992e7[_0xfdc6('0x33')],{'$or':_[_0xfdc6('0x23')](_0x2f1971,function(_0x2dabaf){if(_0x2dabaf[_0xfdc6('0x34')]!=='VIRTUAL'){var _0x3783ae={};_0x3783ae[_0x2dabaf['name']]={'$like':'%'+_0x13e8e8[_0xfdc6('0x29')]['filter']+'%'};return _0x3783ae;}})});}_0x3992e7=_[_0xfdc6('0x35')]({},_0x3992e7,_0x13e8e8['options']);var _0x5a5def={'where':_0x3992e7[_0xfdc6('0x33')]};return db[_0xfdc6('0x24')][_0xfdc6('0x18')](_0x5a5def)[_0xfdc6('0x1f')](function(_0x5b77a4){_0x11ce7a[_0xfdc6('0x18')]=_0x5b77a4;if(_0x13e8e8[_0xfdc6('0x29')]['includeAll']){_0x3992e7[_0xfdc6('0x36')]=[{'all':!![]}];}return db[_0xfdc6('0x24')]['findAll'](_0x3992e7);})[_0xfdc6('0x1f')](function(_0x477af0){_0x11ce7a[_0xfdc6('0x37')]=_0x477af0;return _0x11ce7a;})[_0xfdc6('0x1f')](respondWithFilteredResult(_0x53456f,_0x3992e7))[_0xfdc6('0x38')](handleError(_0x53456f,null));};
\ No newline at end of file
+var _0xab49=['Content-Range','reject','save','update','then','destroy','name','send','index','map','Migration','fieldName','type','key','keys','filters','intersection','model','query','attributes','fields','length','nolimit','limit','sort','where','pick','filter','merge','findAll','rows','catch','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/license/util','../../mysqldb','status','end','json','undefined','count','offset','set'];(function(_0x10c3ac,_0x336f87){var _0x1173db=function(_0x72f347){while(--_0x72f347){_0x10c3ac['push'](_0x10c3ac['shift']());}};_0x1173db(++_0x336f87);}(_0xab49,0xdd));var _0x9ab4=function(_0x5f46e7,_0x62f9f8){_0x5f46e7=_0x5f46e7-0x0;var _0x567e95=_0xab49[_0x5f46e7];return _0x567e95;};'use strict';var emlformat=require(_0x9ab4('0x0'));var rimraf=require(_0x9ab4('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x9ab4('0x2'));var rp=require(_0x9ab4('0x3'));var moment=require(_0x9ab4('0x4'));var BPromise=require(_0x9ab4('0x5'));var Mustache=require('mustache');var util=require(_0x9ab4('0x6'));var path=require(_0x9ab4('0x7'));var sox=require('sox');var csv=require(_0x9ab4('0x8'));var ejs=require(_0x9ab4('0x9'));var fs=require('fs');var fs_extra=require(_0x9ab4('0xa'));var _=require(_0x9ab4('0xb'));var squel=require(_0x9ab4('0xc'));var crypto=require(_0x9ab4('0xd'));var jsforce=require(_0x9ab4('0xe'));var deskjs=require(_0x9ab4('0xf'));var toCsv=require(_0x9ab4('0x8'));var querystring=require(_0x9ab4('0x10'));var Papa=require(_0x9ab4('0x11'));var Redis=require(_0x9ab4('0x12'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x9ab4('0x13'));var hardwareService=require(_0x9ab4('0x14'));var logger=require('../../config/logger')('api');var utils=require(_0x9ab4('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x9ab4('0x16'));var db=require(_0x9ab4('0x17'))['db'];function respondWithStatusCode(_0x19a630,_0x169e12){_0x169e12=_0x169e12||0xcc;return function(_0x17ab85){if(_0x17ab85){return _0x19a630['sendStatus'](_0x169e12);}return _0x19a630[_0x9ab4('0x18')](_0x169e12)[_0x9ab4('0x19')]();};}function respondWithResult(_0x428eb5,_0x35c043){_0x35c043=_0x35c043||0xc8;return function(_0x3eaf42){if(_0x3eaf42){return _0x428eb5[_0x9ab4('0x18')](_0x35c043)[_0x9ab4('0x1a')](_0x3eaf42);}};}function respondWithFilteredResult(_0x5f2ea9,_0x28fffa){return function(_0x3c6456){if(_0x3c6456){var _0x23897b=typeof _0x28fffa['offset']===_0x9ab4('0x1b')&&typeof _0x28fffa['limit']===_0x9ab4('0x1b');var _0x43fd36=_0x3c6456[_0x9ab4('0x1c')];var _0xe513c9=_0x23897b?0x0:_0x28fffa[_0x9ab4('0x1d')];var _0x443e13=_0x23897b?_0x3c6456[_0x9ab4('0x1c')]:_0x28fffa[_0x9ab4('0x1d')]+_0x28fffa['limit'];var _0x58800f;if(_0x443e13>=_0x43fd36){_0x443e13=_0x43fd36;_0x58800f=0xc8;}else{_0x58800f=0xce;}_0x5f2ea9[_0x9ab4('0x18')](_0x58800f);return _0x5f2ea9[_0x9ab4('0x1e')](_0x9ab4('0x1f'),_0xe513c9+'-'+_0x443e13+'/'+_0x43fd36)[_0x9ab4('0x1a')](_0x3c6456);}return null;};}function patchUpdates(_0x1270f3){return function(_0x1dacfb){try{jsonpatch['apply'](_0x1dacfb,_0x1270f3,!![]);}catch(_0x395e98){return BPromise[_0x9ab4('0x20')](_0x395e98);}return _0x1dacfb[_0x9ab4('0x21')]();};}function saveUpdates(_0x192d5a,_0x8528b9){return function(_0x19213b){if(_0x19213b){return _0x19213b[_0x9ab4('0x22')](_0x192d5a)[_0x9ab4('0x23')](function(_0x1e35d9){return _0x1e35d9;});}return null;};}function removeEntity(_0x2f01ca,_0xee1d5f){return function(_0x4edb6e){if(_0x4edb6e){return _0x4edb6e[_0x9ab4('0x24')]()[_0x9ab4('0x23')](function(){_0x2f01ca[_0x9ab4('0x18')](0xcc)[_0x9ab4('0x19')]();});}};}function handleEntityNotFound(_0x1cfb74,_0x23d4a4){return function(_0x90ba51){if(!_0x90ba51){_0x1cfb74['sendStatus'](0x194);}return _0x90ba51;};}function handleError(_0x2803b1,_0x1232ac){_0x1232ac=_0x1232ac||0x1f4;return function(_0x1e3b61){logger['error'](_0x1e3b61['stack']);if(_0x1e3b61[_0x9ab4('0x25')]){delete _0x1e3b61[_0x9ab4('0x25')];}_0x2803b1[_0x9ab4('0x18')](_0x1232ac)[_0x9ab4('0x26')](_0x1e3b61);};}exports[_0x9ab4('0x27')]=function(_0x1adcab,_0x25603b){var _0x384516={},_0x2745de={},_0x1f80eb={'count':0x0,'rows':[]};var _0xef0801=_[_0x9ab4('0x28')](db[_0x9ab4('0x29')]['rawAttributes'],function(_0x10101b){return{'name':_0x10101b[_0x9ab4('0x2a')],'type':_0x10101b[_0x9ab4('0x2b')][_0x9ab4('0x2c')]};});_0x2745de['model']=_[_0x9ab4('0x28')](_0xef0801,'name');_0x2745de['query']=_[_0x9ab4('0x2d')](_0x1adcab['query']);_0x2745de[_0x9ab4('0x2e')]=_[_0x9ab4('0x2f')](_0x2745de[_0x9ab4('0x30')],_0x2745de[_0x9ab4('0x31')]);_0x384516[_0x9ab4('0x32')]=_[_0x9ab4('0x2f')](_0x2745de[_0x9ab4('0x30')],qs[_0x9ab4('0x33')](_0x1adcab['query'][_0x9ab4('0x33')]));_0x384516[_0x9ab4('0x32')]=_0x384516[_0x9ab4('0x32')][_0x9ab4('0x34')]?_0x384516[_0x9ab4('0x32')]:_0x2745de[_0x9ab4('0x30')];if(!_0x1adcab[_0x9ab4('0x31')]['hasOwnProperty'](_0x9ab4('0x35'))){_0x384516[_0x9ab4('0x36')]=qs[_0x9ab4('0x36')](_0x1adcab[_0x9ab4('0x31')][_0x9ab4('0x36')]);_0x384516[_0x9ab4('0x1d')]=qs[_0x9ab4('0x1d')](_0x1adcab['query'][_0x9ab4('0x1d')]);}_0x384516['order']=qs[_0x9ab4('0x37')](_0x1adcab[_0x9ab4('0x31')]['sort']);_0x384516[_0x9ab4('0x38')]=qs['filters'](_[_0x9ab4('0x39')](_0x1adcab[_0x9ab4('0x31')],_0x2745de[_0x9ab4('0x2e')]),_0xef0801);if(_0x1adcab[_0x9ab4('0x31')][_0x9ab4('0x3a')]){_0x384516[_0x9ab4('0x38')]=_[_0x9ab4('0x3b')](_0x384516['where'],{'$or':_[_0x9ab4('0x28')](_0xef0801,function(_0x42a6e3){if(_0x42a6e3[_0x9ab4('0x2b')]!=='VIRTUAL'){var _0x1bae94={};_0x1bae94[_0x42a6e3[_0x9ab4('0x25')]]={'$like':'%'+_0x1adcab['query']['filter']+'%'};return _0x1bae94;}})});}_0x384516=_[_0x9ab4('0x3b')]({},_0x384516,_0x1adcab['options']);var _0x1d7c19={'where':_0x384516[_0x9ab4('0x38')]};return db[_0x9ab4('0x29')][_0x9ab4('0x1c')](_0x1d7c19)[_0x9ab4('0x23')](function(_0x3f796d){_0x1f80eb['count']=_0x3f796d;if(_0x1adcab[_0x9ab4('0x31')]['includeAll']){_0x384516['include']=[{'all':!![]}];}return db['Migration'][_0x9ab4('0x3c')](_0x384516);})['then'](function(_0x4304c6){_0x1f80eb[_0x9ab4('0x3d')]=_0x4304c6;return _0x1f80eb;})[_0x9ab4('0x23')](respondWithFilteredResult(_0x25603b,_0x384516))[_0x9ab4('0x3e')](handleError(_0x25603b,null));};
\ No newline at end of file
index 121f2ee..d84867f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x45c1=['lodash','../../config/logger','moment','bluebird','request-promise','path','rimraf','exports','define'];(function(_0x47f3ff,_0x1eb60){var _0x3aa2d5=function(_0x10d39e){while(--_0x10d39e){_0x47f3ff['push'](_0x47f3ff['shift']());}};_0x3aa2d5(++_0x1eb60);}(_0x45c1,0xd8));var _0x145c=function(_0x429337,_0x37fff0){_0x429337=_0x429337-0x0;var _0x26d5b3=_0x45c1[_0x429337];return _0x26d5b3;};'use strict';var _=require(_0x145c('0x0'));var util=require('util');var logger=require(_0x145c('0x1'))('api');var moment=require(_0x145c('0x2'));var BPromise=require(_0x145c('0x3'));var rp=require(_0x145c('0x4'));var fs=require('fs');var path=require(_0x145c('0x5'));var rimraf=require(_0x145c('0x6'));var config=require('../../config/environment');var attributes=require('./migration.attributes');module[_0x145c('0x7')]=function(_0xe89426,_0x4ea6f8){return _0xe89426[_0x145c('0x8')]('Migration',attributes,{'tableName':'migrations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0039=['bluebird','request-promise','path','../../config/environment','./migration.attributes','exports','define','Migration','migrations','lodash','util','../../config/logger','api'];(function(_0x49f32d,_0x12f351){var _0x455567=function(_0x41ac25){while(--_0x41ac25){_0x49f32d['push'](_0x49f32d['shift']());}};_0x455567(++_0x12f351);}(_0x0039,0x1c3));var _0x9003=function(_0x30599b,_0x40c0e8){_0x30599b=_0x30599b-0x0;var _0x330496=_0x0039[_0x30599b];return _0x330496;};'use strict';var _=require(_0x9003('0x0'));var util=require(_0x9003('0x1'));var logger=require(_0x9003('0x2'))(_0x9003('0x3'));var moment=require('moment');var BPromise=require(_0x9003('0x4'));var rp=require(_0x9003('0x5'));var fs=require('fs');var path=require(_0x9003('0x6'));var rimraf=require('rimraf');var config=require(_0x9003('0x7'));var attributes=require(_0x9003('0x8'));module[_0x9003('0x9')]=function(_0x58fd91,_0xe375ac){return _0x58fd91[_0x9003('0xa')](_0x9003('0xb'),attributes,{'tableName':_0x9003('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index bd66b41..e5da5da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x85d3=['result','catch','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','request','then','info','Migration,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent'];(function(_0x120e59,_0x443649){var _0x53ff80=function(_0x5a642e){while(--_0x5a642e){_0x120e59['push'](_0x120e59['shift']());}};_0x53ff80(++_0x443649);}(_0x85d3,0xc8));var _0x385d=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x85d3[_0x5b644e];return _0x49c6bf;};'use strict';var _=require(_0x385d('0x0'));var util=require(_0x385d('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x385d('0x2'));var fs=require('fs');var Redis=require(_0x385d('0x3'));var db=require(_0x385d('0x4'))['db'];var utils=require(_0x385d('0x5'));var logger=require(_0x385d('0x6'))(_0x385d('0x7'));var config=require('../../config/environment');var jayson=require(_0x385d('0x8'));var client=jayson['client'][_0x385d('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x132666,_0x1329cd,_0x2e7f52){return new BPromise(function(_0x4840db,_0x41008c){return client[_0x385d('0xa')](_0x132666,_0x2e7f52)[_0x385d('0xb')](function(_0x1b7329){logger[_0x385d('0xc')](_0x385d('0xd'),_0x1329cd,'request\x20sent');logger[_0x385d('0xe')]('Migration,\x20%s,\x20%s,\x20%s',_0x1329cd,'request\x20sent',JSON[_0x385d('0xf')](_0x1b7329));if(_0x1b7329[_0x385d('0x10')]){if(_0x1b7329[_0x385d('0x10')][_0x385d('0x11')]===0x1f4){logger[_0x385d('0x10')](_0x385d('0xd'),_0x1329cd,_0x1b7329[_0x385d('0x10')]['message']);return _0x41008c(_0x1b7329['error'][_0x385d('0x12')]);}logger[_0x385d('0x10')](_0x385d('0xd'),_0x1329cd,_0x1b7329['error'][_0x385d('0x12')]);return _0x4840db(_0x1b7329[_0x385d('0x10')][_0x385d('0x12')]);}else{logger[_0x385d('0xc')](_0x385d('0xd'),_0x1329cd,_0x385d('0x13'));_0x4840db(_0x1b7329[_0x385d('0x14')]['message']);}})[_0x385d('0x15')](function(_0x5f47e5){logger[_0x385d('0x10')](_0x385d('0xd'),_0x1329cd,_0x5f47e5);_0x41008c(_0x5f47e5);});});}
\ No newline at end of file
+var _0xb010=['client','http','request','info','Migration,\x20%s,\x20%s','request\x20sent','debug','Migration,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','util','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x344a3f,_0x579a22){var _0x264712=function(_0x34c9f0){while(--_0x34c9f0){_0x344a3f['push'](_0x344a3f['shift']());}};_0x264712(++_0x579a22);}(_0xb010,0x8b));var _0x0b01=function(_0x4ff09b,_0x53f67d){_0x4ff09b=_0x4ff09b-0x0;var _0x3f5c2e=_0xb010[_0x4ff09b];return _0x3f5c2e;};'use strict';var _=require('lodash');var util=require(_0x0b01('0x0'));var moment=require('moment');var BPromise=require(_0x0b01('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0b01('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x0b01('0x3'));var logger=require(_0x0b01('0x4'))(_0x0b01('0x5'));var config=require(_0x0b01('0x6'));var jayson=require(_0x0b01('0x7'));var client=jayson[_0x0b01('0x8')][_0x0b01('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3c65ed,_0x824a23,_0x33eb05){return new BPromise(function(_0xcdfdfd,_0x15364b){return client[_0x0b01('0xa')](_0x3c65ed,_0x33eb05)['then'](function(_0x46d839){logger[_0x0b01('0xb')](_0x0b01('0xc'),_0x824a23,_0x0b01('0xd'));logger[_0x0b01('0xe')](_0x0b01('0xf'),_0x824a23,_0x0b01('0xd'),JSON[_0x0b01('0x10')](_0x46d839));if(_0x46d839[_0x0b01('0x11')]){if(_0x46d839[_0x0b01('0x11')]['code']===0x1f4){logger[_0x0b01('0x11')](_0x0b01('0xc'),_0x824a23,_0x46d839[_0x0b01('0x11')][_0x0b01('0x12')]);return _0x15364b(_0x46d839[_0x0b01('0x11')][_0x0b01('0x12')]);}logger[_0x0b01('0x11')]('Migration,\x20%s,\x20%s',_0x824a23,_0x46d839[_0x0b01('0x11')][_0x0b01('0x12')]);return _0xcdfdfd(_0x46d839[_0x0b01('0x11')][_0x0b01('0x12')]);}else{logger[_0x0b01('0xb')](_0x0b01('0xc'),_0x824a23,_0x0b01('0xd'));_0xcdfdfd(_0x46d839[_0x0b01('0x13')][_0x0b01('0x12')]);}})[_0x0b01('0x14')](function(_0x458baf){logger[_0x0b01('0x11')]('Migration,\x20%s,\x20%s',_0x824a23,_0x458baf);_0x15364b(_0x458baf);});});}
\ No newline at end of file
index b58ccda..1e1c334 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d2a=['destroy','multer','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','/:id','show','post','create','put','delete'];(function(_0x21da17,_0xc839e3){var _0x545fc4=function(_0x486c70){while(--_0x486c70){_0x21da17['push'](_0x21da17['shift']());}};_0x545fc4(++_0xc839e3);}(_0x7d2a,0x171));var _0xa7d2=function(_0x4626a7,_0x1aebdd){_0x4626a7=_0x4626a7-0x0;var _0x3c082e=_0x7d2a[_0x4626a7];return _0x3c082e;};'use strict';var multer=require(_0xa7d2('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xa7d2('0x1'));var express=require(_0xa7d2('0x2'));var router=express['Router']();var fs_extra=require(_0xa7d2('0x3'));var auth=require(_0xa7d2('0x4'));var interaction=require(_0xa7d2('0x5'));var config=require('../../config/environment');var controller=require('./network.controller');router[_0xa7d2('0x6')]('/',auth[_0xa7d2('0x7')](),controller[_0xa7d2('0x8')]);router[_0xa7d2('0x6')](_0xa7d2('0x9'),auth['isAuthenticated'](),controller[_0xa7d2('0xa')]);router[_0xa7d2('0xb')]('/',auth[_0xa7d2('0x7')](),controller[_0xa7d2('0xc')]);router[_0xa7d2('0xd')]('/:id',auth['isAuthenticated'](),controller['update']);router[_0xa7d2('0xe')](_0xa7d2('0x9'),auth[_0xa7d2('0x7')](),controller[_0xa7d2('0xf')]);module['exports']=router;
\ No newline at end of file
+var _0xa665=['index','/:id','create','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','get','isAuthenticated'];(function(_0x49ad79,_0x48ee93){var _0xa4e38a=function(_0x4925c7){while(--_0x4925c7){_0x49ad79['push'](_0x49ad79['shift']());}};_0xa4e38a(++_0x48ee93);}(_0xa665,0x7e));var _0x5a66=function(_0x187193,_0x24e49d){_0x187193=_0x187193-0x0;var _0x5002aa=_0xa665[_0x187193];return _0x5002aa;};'use strict';var multer=require(_0x5a66('0x0'));var util=require(_0x5a66('0x1'));var path=require(_0x5a66('0x2'));var timeout=require(_0x5a66('0x3'));var express=require(_0x5a66('0x4'));var router=express[_0x5a66('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x5a66('0x6'));var interaction=require(_0x5a66('0x7'));var config=require('../../config/environment');var controller=require('./network.controller');router[_0x5a66('0x8')]('/',auth[_0x5a66('0x9')](),controller[_0x5a66('0xa')]);router[_0x5a66('0x8')](_0x5a66('0xb'),auth[_0x5a66('0x9')](),controller['show']);router['post']('/',auth[_0x5a66('0x9')](),controller[_0x5a66('0xc')]);router['put'](_0x5a66('0xb'),auth[_0x5a66('0x9')](),controller[_0x5a66('0xd')]);router[_0x5a66('0xe')](_0x5a66('0xb'),auth[_0x5a66('0x9')](),controller[_0x5a66('0xf')]);module[_0x5a66('0x10')]=router;
\ No newline at end of file
index c098e62..b0ac22f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x024f=['externip','turn','STRING','sequelize','exports','localnet'];(function(_0x3a2b5a,_0x1fdb82){var _0x322557=function(_0x58a0ce){while(--_0x58a0ce){_0x3a2b5a['push'](_0x3a2b5a['shift']());}};_0x322557(++_0x1fdb82);}(_0x024f,0x1b9));var _0xf024=function(_0x556b7a,_0x213e34){_0x556b7a=_0x556b7a-0x0;var _0x524970=_0x024f[_0x556b7a];return _0x524970;};'use strict';var Sequelize=require(_0xf024('0x0'));module[_0xf024('0x1')]={'type':{'type':Sequelize['ENUM'](_0xf024('0x2'),_0xf024('0x3'),'stun',_0xf024('0x4'))},'value':{'type':Sequelize[_0xf024('0x5')]},'username':{'type':Sequelize[_0xf024('0x5')]},'password':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x05c8=['STRING','sequelize'];(function(_0x61e635,_0x16f4df){var _0x13e7c4=function(_0x465f33){while(--_0x465f33){_0x61e635['push'](_0x61e635['shift']());}};_0x13e7c4(++_0x16f4df);}(_0x05c8,0xf9));var _0x805c=function(_0x190fe,_0x163538){_0x190fe=_0x190fe-0x0;var _0x512440=_0x05c8[_0x190fe];return _0x512440;};'use strict';var Sequelize=require(_0x805c('0x0'));module['exports']={'type':{'type':Sequelize['ENUM']('localnet','externip','stun','turn')},'value':{'type':Sequelize[_0x805c('0x1')]},'username':{'type':Sequelize[_0x805c('0x1')]},'password':{'type':Sequelize[_0x805c('0x1')]}};
\ No newline at end of file
index 4392b09..eafe6f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d66=['limit','order','sort','where','filters','pick','filter','merge','VIRTUAL','Network','includeAll','findAll','rows','show','keys','rawAttributes','include','options','find','create','transaction','body','toUpperCase','readFileSync','root','server/files/templates/stun_multiple.ejs','utf8','render','writeFileSync','/etc/asterisk/stun_xcally.conf','Reload','res_stun_monitor.so','TURN','join','/etc/asterisk/turn_xcally.conf','format','/etc/asterisk/sip_xcally_%s.conf','chan_sip.so','sequelize','params','STUN','server/files/templates/network.ejs','toLowerCase','server/files/templates/turn_multiple.ejs','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','jayson/promise','client','http','request','then','Network,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','info','result','catch','sendStatus','status','json','offset','undefined','count','Content-Range','apply','reject','save','update','destroy','end','stack','name','index','map','fieldName','type','key','query','intersection','model','attributes','fields','length','hasOwnProperty','nolimit'];(function(_0x3c5357,_0x5df651){var _0x34f92f=function(_0x2f239d){while(--_0x2f239d){_0x3c5357['push'](_0x3c5357['shift']());}};_0x34f92f(++_0x5df651);}(_0x6d66,0x9c));var _0x66d6=function(_0x2045f5,_0x585f42){_0x2045f5=_0x2045f5-0x0;var _0x33e005=_0x6d66[_0x2045f5];return _0x33e005;};'use strict';var emlformat=require(_0x66d6('0x0'));var rimraf=require(_0x66d6('0x1'));var zipdir=require(_0x66d6('0x2'));var jsonpatch=require(_0x66d6('0x3'));var rp=require('request-promise');var moment=require(_0x66d6('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x66d6('0x5'));var util=require('util');var path=require('path');var sox=require(_0x66d6('0x6'));var csv=require(_0x66d6('0x7'));var ejs=require(_0x66d6('0x8'));var fs=require('fs');var fs_extra=require(_0x66d6('0x9'));var _=require(_0x66d6('0xa'));var squel=require(_0x66d6('0xb'));var crypto=require(_0x66d6('0xc'));var jsforce=require(_0x66d6('0xd'));var deskjs=require(_0x66d6('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x66d6('0xf'));var Redis=require(_0x66d6('0x10'));var authService=require(_0x66d6('0x11'));var qs=require(_0x66d6('0x12'));var as=require(_0x66d6('0x13'));var hardwareService=require(_0x66d6('0x14'));var logger=require(_0x66d6('0x15'))(_0x66d6('0x16'));var utils=require(_0x66d6('0x17'));var config=require(_0x66d6('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x66d6('0x19'))['db'];var jayson=require(_0x66d6('0x1a'));var client=jayson[_0x66d6('0x1b')][_0x66d6('0x1c')]({'port':0x232a});function respondWithRpcPromise(_0x278ea1,_0x58421e,_0x1e4503,_0x17d985){return new BPromise(function(_0x12324a,_0x22634a){var _0x5c817d=_0x17d985||client;return _0x5c817d[_0x66d6('0x1d')](_0x278ea1,_0x1e4503)[_0x66d6('0x1e')](function(_0x3da88b){logger['info'](_0x66d6('0x1f'),_0x58421e,_0x66d6('0x20'));logger[_0x66d6('0x21')]('Network,\x20%s,\x20%s,\x20%s',_0x58421e,_0x66d6('0x20'),JSON[_0x66d6('0x22')](_0x3da88b));if(_0x3da88b[_0x66d6('0x23')]){if(_0x3da88b[_0x66d6('0x23')]['code']===0x1f4){logger[_0x66d6('0x23')]('Network,\x20%s,\x20%s',_0x58421e,_0x3da88b[_0x66d6('0x23')]['message']);return _0x22634a(_0x3da88b[_0x66d6('0x23')][_0x66d6('0x24')]);}logger[_0x66d6('0x23')]('Network,\x20%s,\x20%s',_0x58421e,_0x3da88b[_0x66d6('0x23')][_0x66d6('0x24')]);return _0x12324a(_0x3da88b[_0x66d6('0x23')][_0x66d6('0x24')]);}else{logger[_0x66d6('0x25')](_0x66d6('0x1f'),_0x58421e,'request\x20sent');_0x12324a(_0x3da88b[_0x66d6('0x26')]['message']);}})[_0x66d6('0x27')](function(_0x511c10){logger[_0x66d6('0x23')]('Network,\x20%s,\x20%s',_0x58421e,_0x511c10);_0x22634a(_0x511c10);});});}function respondWithStatusCode(_0x64ebad,_0xf1b509){_0xf1b509=_0xf1b509||0xcc;return function(_0x45aa7d){if(_0x45aa7d){return _0x64ebad[_0x66d6('0x28')](_0xf1b509);}return _0x64ebad[_0x66d6('0x29')](_0xf1b509)['end']();};}function respondWithResult(_0x5714e0,_0xe2d330){_0xe2d330=_0xe2d330||0xc8;return function(_0x41b4cd){if(_0x41b4cd){return _0x5714e0[_0x66d6('0x29')](_0xe2d330)[_0x66d6('0x2a')](_0x41b4cd);}};}function respondWithFilteredResult(_0x39cde6,_0x2fc5cf){return function(_0x39dc40){if(_0x39dc40){var _0x487338=typeof _0x2fc5cf[_0x66d6('0x2b')]===_0x66d6('0x2c')&&typeof _0x2fc5cf['limit']===_0x66d6('0x2c');var _0x4ad96c=_0x39dc40[_0x66d6('0x2d')];var _0x15cfa5=_0x487338?0x0:_0x2fc5cf[_0x66d6('0x2b')];var _0x1ffa7c=_0x487338?_0x39dc40[_0x66d6('0x2d')]:_0x2fc5cf['offset']+_0x2fc5cf['limit'];var _0x2e9a7e;if(_0x1ffa7c>=_0x4ad96c){_0x1ffa7c=_0x4ad96c;_0x2e9a7e=0xc8;}else{_0x2e9a7e=0xce;}_0x39cde6[_0x66d6('0x29')](_0x2e9a7e);return _0x39cde6['set'](_0x66d6('0x2e'),_0x15cfa5+'-'+_0x1ffa7c+'/'+_0x4ad96c)[_0x66d6('0x2a')](_0x39dc40);}return null;};}function patchUpdates(_0x523648){return function(_0x3ec0a5){try{jsonpatch[_0x66d6('0x2f')](_0x3ec0a5,_0x523648,!![]);}catch(_0x5483e0){return BPromise[_0x66d6('0x30')](_0x5483e0);}return _0x3ec0a5[_0x66d6('0x31')]();};}function saveUpdates(_0x182984,_0x4a1eae){return function(_0x46d66e){if(_0x46d66e){return _0x46d66e[_0x66d6('0x32')](_0x182984)[_0x66d6('0x1e')](function(_0x4db862){return _0x4db862;});}return null;};}function removeEntity(_0x33d00d,_0x5ac61f){return function(_0x5391e3){if(_0x5391e3){return _0x5391e3[_0x66d6('0x33')]()[_0x66d6('0x1e')](function(){_0x33d00d[_0x66d6('0x29')](0xcc)[_0x66d6('0x34')]();});}};}function handleEntityNotFound(_0x591059,_0x5e63ef){return function(_0x3da765){if(!_0x3da765){_0x591059[_0x66d6('0x28')](0x194);}return _0x3da765;};}function handleError(_0x4ef4c4,_0x14084e){_0x14084e=_0x14084e||0x1f4;return function(_0x9f82c9){logger[_0x66d6('0x23')](_0x9f82c9[_0x66d6('0x35')]);if(_0x9f82c9['name']){delete _0x9f82c9[_0x66d6('0x36')];}_0x4ef4c4[_0x66d6('0x29')](_0x14084e)['send'](_0x9f82c9);};}exports[_0x66d6('0x37')]=function(_0x20c987,_0x470f4b){var _0x15bffd={},_0x5d7f0f={},_0x38d926={'count':0x0,'rows':[]};var _0x18b198=_[_0x66d6('0x38')](db['Network']['rawAttributes'],function(_0x340dc5){return{'name':_0x340dc5[_0x66d6('0x39')],'type':_0x340dc5[_0x66d6('0x3a')][_0x66d6('0x3b')]};});_0x5d7f0f['model']=_[_0x66d6('0x38')](_0x18b198,_0x66d6('0x36'));_0x5d7f0f[_0x66d6('0x3c')]=_['keys'](_0x20c987[_0x66d6('0x3c')]);_0x5d7f0f['filters']=_[_0x66d6('0x3d')](_0x5d7f0f[_0x66d6('0x3e')],_0x5d7f0f[_0x66d6('0x3c')]);_0x15bffd[_0x66d6('0x3f')]=_[_0x66d6('0x3d')](_0x5d7f0f['model'],qs[_0x66d6('0x40')](_0x20c987[_0x66d6('0x3c')][_0x66d6('0x40')]));_0x15bffd[_0x66d6('0x3f')]=_0x15bffd[_0x66d6('0x3f')][_0x66d6('0x41')]?_0x15bffd[_0x66d6('0x3f')]:_0x5d7f0f['model'];if(!_0x20c987[_0x66d6('0x3c')][_0x66d6('0x42')](_0x66d6('0x43'))){_0x15bffd[_0x66d6('0x44')]=qs[_0x66d6('0x44')](_0x20c987[_0x66d6('0x3c')][_0x66d6('0x44')]);_0x15bffd[_0x66d6('0x2b')]=qs[_0x66d6('0x2b')](_0x20c987['query'][_0x66d6('0x2b')]);}_0x15bffd[_0x66d6('0x45')]=qs[_0x66d6('0x46')](_0x20c987['query'][_0x66d6('0x46')]);_0x15bffd[_0x66d6('0x47')]=qs[_0x66d6('0x48')](_[_0x66d6('0x49')](_0x20c987[_0x66d6('0x3c')],_0x5d7f0f[_0x66d6('0x48')]),_0x18b198);if(_0x20c987['query'][_0x66d6('0x4a')]){_0x15bffd[_0x66d6('0x47')]=_[_0x66d6('0x4b')](_0x15bffd[_0x66d6('0x47')],{'$or':_[_0x66d6('0x38')](_0x18b198,function(_0x1b80ac){if(_0x1b80ac['type']!==_0x66d6('0x4c')){var _0x28655e={};_0x28655e[_0x1b80ac['name']]={'$like':'%'+_0x20c987[_0x66d6('0x3c')][_0x66d6('0x4a')]+'%'};return _0x28655e;}})});}_0x15bffd=_['merge']({},_0x15bffd,_0x20c987['options']);var _0x300df3={'where':_0x15bffd['where']};return db[_0x66d6('0x4d')]['count'](_0x300df3)['then'](function(_0x3079e8){_0x38d926['count']=_0x3079e8;if(_0x20c987['query'][_0x66d6('0x4e')]){_0x15bffd['include']=[{'all':!![]}];}return db[_0x66d6('0x4d')][_0x66d6('0x4f')](_0x15bffd);})[_0x66d6('0x1e')](function(_0x4e6f42){_0x38d926[_0x66d6('0x50')]=_0x4e6f42;return _0x38d926;})[_0x66d6('0x1e')](respondWithFilteredResult(_0x470f4b,_0x15bffd))[_0x66d6('0x27')](handleError(_0x470f4b,null));};exports[_0x66d6('0x51')]=function(_0x306c5a,_0x5e171a){var _0x405dc1={'raw':!![],'where':{'id':_0x306c5a['params']['id']}},_0x21565a={};_0x21565a[_0x66d6('0x3e')]=_[_0x66d6('0x52')](db[_0x66d6('0x4d')][_0x66d6('0x53')]);_0x21565a['query']=_['keys'](_0x306c5a[_0x66d6('0x3c')]);_0x21565a['filters']=_[_0x66d6('0x3d')](_0x21565a['model'],_0x21565a[_0x66d6('0x3c')]);_0x405dc1[_0x66d6('0x3f')]=_[_0x66d6('0x3d')](_0x21565a[_0x66d6('0x3e')],qs['fields'](_0x306c5a['query']['fields']));_0x405dc1['attributes']=_0x405dc1[_0x66d6('0x3f')][_0x66d6('0x41')]?_0x405dc1[_0x66d6('0x3f')]:_0x21565a[_0x66d6('0x3e')];if(_0x306c5a[_0x66d6('0x3c')][_0x66d6('0x4e')]){_0x405dc1[_0x66d6('0x54')]=[{'all':!![]}];}_0x405dc1=_[_0x66d6('0x4b')]({},_0x405dc1,_0x306c5a[_0x66d6('0x55')]);return db[_0x66d6('0x4d')][_0x66d6('0x56')](_0x405dc1)[_0x66d6('0x1e')](handleEntityNotFound(_0x5e171a,null))[_0x66d6('0x1e')](respondWithResult(_0x5e171a,null))[_0x66d6('0x27')](handleError(_0x5e171a,null));};exports[_0x66d6('0x57')]=function(_0x4539f2,_0x33a2e3,_0x3bdc7f){var _0x457b9c;return db['sequelize'][_0x66d6('0x58')](function(_0x28b2bb){return db['Network'][_0x66d6('0x57')](_0x4539f2[_0x66d6('0x59')],{'raw':!![]})['then'](function(_0x282220){_0x457b9c=_0x282220;return db[_0x66d6('0x4d')][_0x66d6('0x4f')]({'where':{'type':_0x4539f2[_0x66d6('0x59')][_0x66d6('0x3a')]},'raw':!![]});})['then'](function(_0x451041){if(_0x457b9c[_0x66d6('0x3a')][_0x66d6('0x5a')]()=='STUN'){var _0x94eb60=fs[_0x66d6('0x5b')](path['join'](config[_0x66d6('0x5c')],_0x66d6('0x5d')),_0x66d6('0x5e'));var _0x1b955e=ejs[_0x66d6('0x5f')](_0x94eb60,{'networks':_0x451041||[]});fs[_0x66d6('0x60')](_0x66d6('0x61'),_0x1b955e);return respondWithRpcPromise(_0x66d6('0x62'),_0x66d6('0x57'),{'module':_0x66d6('0x63')});}else if(_0x457b9c[_0x66d6('0x3a')]['toUpperCase']()==_0x66d6('0x64')){var _0x11fb10=fs[_0x66d6('0x5b')](path[_0x66d6('0x65')](config[_0x66d6('0x5c')],'server/files/templates/turn_multiple.ejs'),_0x66d6('0x5e'));var _0x575850=ejs[_0x66d6('0x5f')](_0x11fb10,{'networks':_0x451041||[]});fs['writeFileSync'](_0x66d6('0x66'),_0x575850);return respondWithRpcPromise(_0x66d6('0x62'),_0x66d6('0x57'),{'module':_0x66d6('0x63')});}else{var _0x25a786=fs['readFileSync'](path['join'](config[_0x66d6('0x5c')],'server/files/templates/network.ejs'),_0x66d6('0x5e'));var _0x3b88da=ejs['render'](_0x25a786,{'networks':_0x451041||[]});fs[_0x66d6('0x60')](util[_0x66d6('0x67')](_0x66d6('0x68'),_0x4539f2[_0x66d6('0x59')][_0x66d6('0x3a')]['toLowerCase']()),_0x3b88da);return respondWithRpcPromise(_0x66d6('0x62'),_0x66d6('0x57'),{'module':_0x66d6('0x69')});}return null;})['then'](function(){return _0x457b9c;});})['then'](respondWithResult(_0x33a2e3,0xc9))['catch'](handleError(_0x33a2e3,null));};exports[_0x66d6('0x32')]=function(_0x4c35ca,_0xaee5a7,_0x5b41e4){var _0x3ed899;return db[_0x66d6('0x6a')][_0x66d6('0x58')](function(_0x2027ff){return db['Network'][_0x66d6('0x56')]({'where':{'id':_0x4c35ca[_0x66d6('0x6b')]['id']}})['then'](handleEntityNotFound(_0xaee5a7,null))[_0x66d6('0x1e')](saveUpdates(_0x4c35ca[_0x66d6('0x59')],null))['then'](function(_0x2d3509){if(_0x2d3509){_0x3ed899=_0x2d3509;return db[_0x66d6('0x4d')][_0x66d6('0x4f')]({'where':{'type':_0x3ed899[_0x66d6('0x3a')]},'raw':!![]});}return null;})[_0x66d6('0x1e')](function(_0x2ca793){if(_0x3ed899[_0x66d6('0x3a')][_0x66d6('0x5a')]()==_0x66d6('0x6c')){var _0x525abd=fs['readFileSync'](path[_0x66d6('0x65')](config['root'],_0x66d6('0x5d')),_0x66d6('0x5e'));var _0x5a67aa=ejs[_0x66d6('0x5f')](_0x525abd,{'networks':_0x2ca793||[]});fs[_0x66d6('0x60')](_0x66d6('0x61'),_0x5a67aa);return respondWithRpcPromise(_0x66d6('0x62'),'update',{'module':_0x66d6('0x63')});}else if(_0x3ed899[_0x66d6('0x3a')][_0x66d6('0x5a')]()==_0x66d6('0x64')){var _0x4b6016=fs[_0x66d6('0x5b')](path[_0x66d6('0x65')](config[_0x66d6('0x5c')],'server/files/templates/turn_multiple.ejs'),_0x66d6('0x5e'));var _0x4b7106=ejs[_0x66d6('0x5f')](_0x4b6016,{'networks':_0x2ca793||[]});fs[_0x66d6('0x60')](_0x66d6('0x66'),_0x4b7106);return respondWithRpcPromise(_0x66d6('0x62'),_0x66d6('0x32'),{'module':_0x66d6('0x63')});}else{var _0x15b333=fs[_0x66d6('0x5b')](path['join'](config[_0x66d6('0x5c')],_0x66d6('0x6d')),_0x66d6('0x5e'));var _0x114ea=ejs[_0x66d6('0x5f')](_0x15b333,{'networks':_0x2ca793||[]});fs[_0x66d6('0x60')](util[_0x66d6('0x67')](_0x66d6('0x68'),_0x4c35ca[_0x66d6('0x59')][_0x66d6('0x3a')][_0x66d6('0x6e')]()),_0x114ea);return respondWithRpcPromise(_0x66d6('0x62'),'update',{'module':_0x66d6('0x69')});}return null;})['then'](function(_0x20fe3a){if(_0x20fe3a){return _0x3ed899;}return null;});})[_0x66d6('0x1e')](respondWithResult(_0xaee5a7,null))[_0x66d6('0x27')](handleError(_0xaee5a7,null));};exports[_0x66d6('0x33')]=function(_0x9e9f06,_0x359277,_0x4e8509){var _0x39e165;return db[_0x66d6('0x4d')][_0x66d6('0x56')]({'where':{'id':_0x9e9f06[_0x66d6('0x6b')]['id']}})[_0x66d6('0x1e')](function(_0x20bc9b){_0x39e165=_0x20bc9b;return _0x20bc9b;})[_0x66d6('0x1e')](handleEntityNotFound(_0x359277,null))[_0x66d6('0x1e')](removeEntity(_0x359277,null))[_0x66d6('0x1e')](function(){if(_0x39e165){return db[_0x66d6('0x4d')][_0x66d6('0x4f')]({'where':{'type':_0x39e165[_0x66d6('0x3a')]},'raw':!![]});}})[_0x66d6('0x1e')](function(_0x2eb5d0){if(_0x39e165['type'][_0x66d6('0x5a')]()=='STUN'){var _0x3096c9=fs[_0x66d6('0x5b')](path[_0x66d6('0x65')](config[_0x66d6('0x5c')],_0x66d6('0x5d')),_0x66d6('0x5e'));var _0x4188f5=ejs['render'](_0x3096c9,{'networks':_0x2eb5d0||[]});fs[_0x66d6('0x60')](_0x66d6('0x61'),_0x4188f5);return respondWithRpcPromise('Reload','destroy',{'module':'res_stun_monitor.so'});}else if(_0x39e165[_0x66d6('0x3a')][_0x66d6('0x5a')]()=='TURN'){var _0x30a133=fs[_0x66d6('0x5b')](path[_0x66d6('0x65')](config[_0x66d6('0x5c')],_0x66d6('0x6f')),_0x66d6('0x5e'));var _0x59eb8f=ejs[_0x66d6('0x5f')](_0x30a133,{'networks':_0x2eb5d0||[]});fs[_0x66d6('0x60')](_0x66d6('0x66'),_0x59eb8f);return respondWithRpcPromise(_0x66d6('0x62'),_0x66d6('0x33'),{'module':_0x66d6('0x63')});}else{var _0x2f16f3=fs[_0x66d6('0x5b')](path[_0x66d6('0x65')](config[_0x66d6('0x5c')],_0x66d6('0x6d')),'utf8');var _0x37869a=ejs['render'](_0x2f16f3,{'networks':_0x2eb5d0||[]});fs[_0x66d6('0x60')](util[_0x66d6('0x67')](_0x66d6('0x68'),_0x9e9f06[_0x66d6('0x59')]['type'][_0x66d6('0x6e')]()),_0x37869a);return respondWithRpcPromise(_0x66d6('0x62'),_0x66d6('0x33'),{'module':_0x66d6('0x69')});}return null;})[_0x66d6('0x27')](handleError(_0x359277,null));};
\ No newline at end of file
+var _0xdfe8=['error','code','message','info','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','update','destroy','stack','name','send','index','map','Network','fieldName','key','model','query','keys','filters','intersection','fields','attributes','hasOwnProperty','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','rows','show','params','rawAttributes','find','create','sequelize','transaction','body','type','toUpperCase','STUN','readFileSync','join','root','server/files/templates/stun_multiple.ejs','utf8','render','writeFileSync','/etc/asterisk/stun_xcally.conf','Reload','res_stun_monitor.so','TURN','server/files/templates/turn_multiple.ejs','/etc/asterisk/turn_xcally.conf','server/files/templates/network.ejs','format','/etc/asterisk/sip_xcally_%s.conf','toLowerCase','chan_sip.so','findAll','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','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','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','jayson/promise','http','request','then','Network,\x20%s,\x20%s','debug','Network,\x20%s,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0x326139,_0xe5d58e){var _0x5f3bc1=function(_0x33c4c2){while(--_0x33c4c2){_0x326139['push'](_0x326139['shift']());}};_0x5f3bc1(++_0xe5d58e);}(_0xdfe8,0x12c));var _0x8dfe=function(_0x3a04ab,_0x31b9fd){_0x3a04ab=_0x3a04ab-0x0;var _0x4bff6d=_0xdfe8[_0x3a04ab];return _0x4bff6d;};'use strict';var emlformat=require(_0x8dfe('0x0'));var rimraf=require(_0x8dfe('0x1'));var zipdir=require(_0x8dfe('0x2'));var jsonpatch=require(_0x8dfe('0x3'));var rp=require('request-promise');var moment=require(_0x8dfe('0x4'));var BPromise=require(_0x8dfe('0x5'));var Mustache=require('mustache');var util=require(_0x8dfe('0x6'));var path=require('path');var sox=require(_0x8dfe('0x7'));var csv=require(_0x8dfe('0x8'));var ejs=require(_0x8dfe('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x8dfe('0xa'));var squel=require(_0x8dfe('0xb'));var crypto=require(_0x8dfe('0xc'));var jsforce=require(_0x8dfe('0xd'));var deskjs=require(_0x8dfe('0xe'));var toCsv=require(_0x8dfe('0x8'));var querystring=require(_0x8dfe('0xf'));var Papa=require(_0x8dfe('0x10'));var Redis=require(_0x8dfe('0x11'));var authService=require(_0x8dfe('0x12'));var qs=require(_0x8dfe('0x13'));var as=require(_0x8dfe('0x14'));var hardwareService=require(_0x8dfe('0x15'));var logger=require(_0x8dfe('0x16'))(_0x8dfe('0x17'));var utils=require(_0x8dfe('0x18'));var config=require(_0x8dfe('0x19'));var licenseUtil=require(_0x8dfe('0x1a'));var db=require('../../mysqldb')['db'];var jayson=require(_0x8dfe('0x1b'));var client=jayson['client'][_0x8dfe('0x1c')]({'port':0x232a});function respondWithRpcPromise(_0x38147d,_0x2a581e,_0x76755,_0x295a2c){return new BPromise(function(_0x3227a5,_0x3432ba){var _0x401e2b=_0x295a2c||client;return _0x401e2b[_0x8dfe('0x1d')](_0x38147d,_0x76755)[_0x8dfe('0x1e')](function(_0x222c2c){logger['info'](_0x8dfe('0x1f'),_0x2a581e,'request\x20sent');logger[_0x8dfe('0x20')](_0x8dfe('0x21'),_0x2a581e,_0x8dfe('0x22'),JSON[_0x8dfe('0x23')](_0x222c2c));if(_0x222c2c[_0x8dfe('0x24')]){if(_0x222c2c[_0x8dfe('0x24')][_0x8dfe('0x25')]===0x1f4){logger[_0x8dfe('0x24')]('Network,\x20%s,\x20%s',_0x2a581e,_0x222c2c[_0x8dfe('0x24')]['message']);return _0x3432ba(_0x222c2c[_0x8dfe('0x24')][_0x8dfe('0x26')]);}logger[_0x8dfe('0x24')](_0x8dfe('0x1f'),_0x2a581e,_0x222c2c[_0x8dfe('0x24')][_0x8dfe('0x26')]);return _0x3227a5(_0x222c2c[_0x8dfe('0x24')][_0x8dfe('0x26')]);}else{logger[_0x8dfe('0x27')](_0x8dfe('0x1f'),_0x2a581e,_0x8dfe('0x22'));_0x3227a5(_0x222c2c[_0x8dfe('0x28')][_0x8dfe('0x26')]);}})[_0x8dfe('0x29')](function(_0x115e7b){logger['error'](_0x8dfe('0x1f'),_0x2a581e,_0x115e7b);_0x3432ba(_0x115e7b);});});}function respondWithStatusCode(_0x5664e3,_0x382db3){_0x382db3=_0x382db3||0xcc;return function(_0xa6d4d0){if(_0xa6d4d0){return _0x5664e3[_0x8dfe('0x2a')](_0x382db3);}return _0x5664e3[_0x8dfe('0x2b')](_0x382db3)[_0x8dfe('0x2c')]();};}function respondWithResult(_0x400c2a,_0x1e8888){_0x1e8888=_0x1e8888||0xc8;return function(_0xce79d6){if(_0xce79d6){return _0x400c2a[_0x8dfe('0x2b')](_0x1e8888)[_0x8dfe('0x2d')](_0xce79d6);}};}function respondWithFilteredResult(_0x2d7752,_0x3c93e6){return function(_0x1d26c4){if(_0x1d26c4){var _0xd8f183=typeof _0x3c93e6[_0x8dfe('0x2e')]===_0x8dfe('0x2f')&&typeof _0x3c93e6[_0x8dfe('0x30')]===_0x8dfe('0x2f');var _0x309623=_0x1d26c4['count'];var _0x58c567=_0xd8f183?0x0:_0x3c93e6['offset'];var _0x149da8=_0xd8f183?_0x1d26c4[_0x8dfe('0x31')]:_0x3c93e6[_0x8dfe('0x2e')]+_0x3c93e6['limit'];var _0x566f4d;if(_0x149da8>=_0x309623){_0x149da8=_0x309623;_0x566f4d=0xc8;}else{_0x566f4d=0xce;}_0x2d7752[_0x8dfe('0x2b')](_0x566f4d);return _0x2d7752[_0x8dfe('0x32')]('Content-Range',_0x58c567+'-'+_0x149da8+'/'+_0x309623)['json'](_0x1d26c4);}return null;};}function patchUpdates(_0x3b4e46){return function(_0x3f9027){try{jsonpatch[_0x8dfe('0x33')](_0x3f9027,_0x3b4e46,!![]);}catch(_0x178cb0){return BPromise[_0x8dfe('0x34')](_0x178cb0);}return _0x3f9027[_0x8dfe('0x35')]();};}function saveUpdates(_0x2a2aba,_0x29397a){return function(_0xa5dd89){if(_0xa5dd89){return _0xa5dd89[_0x8dfe('0x36')](_0x2a2aba)[_0x8dfe('0x1e')](function(_0x22edf3){return _0x22edf3;});}return null;};}function removeEntity(_0x45a832,_0x223cc3){return function(_0x25c53b){if(_0x25c53b){return _0x25c53b[_0x8dfe('0x37')]()[_0x8dfe('0x1e')](function(){_0x45a832[_0x8dfe('0x2b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x10a3bf,_0x5ef693){return function(_0x426cf6){if(!_0x426cf6){_0x10a3bf['sendStatus'](0x194);}return _0x426cf6;};}function handleError(_0x26d9ae,_0x4a1a44){_0x4a1a44=_0x4a1a44||0x1f4;return function(_0x14dce4){logger[_0x8dfe('0x24')](_0x14dce4[_0x8dfe('0x38')]);if(_0x14dce4[_0x8dfe('0x39')]){delete _0x14dce4[_0x8dfe('0x39')];}_0x26d9ae['status'](_0x4a1a44)[_0x8dfe('0x3a')](_0x14dce4);};}exports[_0x8dfe('0x3b')]=function(_0x1f88e7,_0x4811f7){var _0x9f0b15={},_0x164e43={},_0x58bca5={'count':0x0,'rows':[]};var _0x3b491a=_[_0x8dfe('0x3c')](db[_0x8dfe('0x3d')]['rawAttributes'],function(_0x19a825){return{'name':_0x19a825[_0x8dfe('0x3e')],'type':_0x19a825['type'][_0x8dfe('0x3f')]};});_0x164e43[_0x8dfe('0x40')]=_[_0x8dfe('0x3c')](_0x3b491a,_0x8dfe('0x39'));_0x164e43[_0x8dfe('0x41')]=_[_0x8dfe('0x42')](_0x1f88e7[_0x8dfe('0x41')]);_0x164e43[_0x8dfe('0x43')]=_[_0x8dfe('0x44')](_0x164e43[_0x8dfe('0x40')],_0x164e43[_0x8dfe('0x41')]);_0x9f0b15['attributes']=_[_0x8dfe('0x44')](_0x164e43[_0x8dfe('0x40')],qs[_0x8dfe('0x45')](_0x1f88e7['query']['fields']));_0x9f0b15[_0x8dfe('0x46')]=_0x9f0b15['attributes']['length']?_0x9f0b15[_0x8dfe('0x46')]:_0x164e43[_0x8dfe('0x40')];if(!_0x1f88e7[_0x8dfe('0x41')][_0x8dfe('0x47')]('nolimit')){_0x9f0b15['limit']=qs['limit'](_0x1f88e7[_0x8dfe('0x41')][_0x8dfe('0x30')]);_0x9f0b15['offset']=qs[_0x8dfe('0x2e')](_0x1f88e7[_0x8dfe('0x41')][_0x8dfe('0x2e')]);}_0x9f0b15[_0x8dfe('0x48')]=qs[_0x8dfe('0x49')](_0x1f88e7[_0x8dfe('0x41')]['sort']);_0x9f0b15[_0x8dfe('0x4a')]=qs[_0x8dfe('0x43')](_[_0x8dfe('0x4b')](_0x1f88e7['query'],_0x164e43[_0x8dfe('0x43')]),_0x3b491a);if(_0x1f88e7[_0x8dfe('0x41')]['filter']){_0x9f0b15[_0x8dfe('0x4a')]=_[_0x8dfe('0x4c')](_0x9f0b15[_0x8dfe('0x4a')],{'$or':_[_0x8dfe('0x3c')](_0x3b491a,function(_0x20e9cf){if(_0x20e9cf['type']!==_0x8dfe('0x4d')){var _0x1e5f3a={};_0x1e5f3a[_0x20e9cf[_0x8dfe('0x39')]]={'$like':'%'+_0x1f88e7['query'][_0x8dfe('0x4e')]+'%'};return _0x1e5f3a;}})});}_0x9f0b15=_['merge']({},_0x9f0b15,_0x1f88e7[_0x8dfe('0x4f')]);var _0x3e866f={'where':_0x9f0b15[_0x8dfe('0x4a')]};return db[_0x8dfe('0x3d')][_0x8dfe('0x31')](_0x3e866f)[_0x8dfe('0x1e')](function(_0x7f8658){_0x58bca5[_0x8dfe('0x31')]=_0x7f8658;if(_0x1f88e7[_0x8dfe('0x41')][_0x8dfe('0x50')]){_0x9f0b15['include']=[{'all':!![]}];}return db['Network']['findAll'](_0x9f0b15);})['then'](function(_0x550a18){_0x58bca5[_0x8dfe('0x51')]=_0x550a18;return _0x58bca5;})['then'](respondWithFilteredResult(_0x4811f7,_0x9f0b15))[_0x8dfe('0x29')](handleError(_0x4811f7,null));};exports[_0x8dfe('0x52')]=function(_0x54c3c0,_0x153be0){var _0x4ceb38={'raw':!![],'where':{'id':_0x54c3c0[_0x8dfe('0x53')]['id']}},_0x49d395={};_0x49d395[_0x8dfe('0x40')]=_['keys'](db[_0x8dfe('0x3d')][_0x8dfe('0x54')]);_0x49d395[_0x8dfe('0x41')]=_['keys'](_0x54c3c0['query']);_0x49d395['filters']=_[_0x8dfe('0x44')](_0x49d395[_0x8dfe('0x40')],_0x49d395[_0x8dfe('0x41')]);_0x4ceb38['attributes']=_[_0x8dfe('0x44')](_0x49d395['model'],qs[_0x8dfe('0x45')](_0x54c3c0['query'][_0x8dfe('0x45')]));_0x4ceb38[_0x8dfe('0x46')]=_0x4ceb38['attributes']['length']?_0x4ceb38[_0x8dfe('0x46')]:_0x49d395[_0x8dfe('0x40')];if(_0x54c3c0['query']['includeAll']){_0x4ceb38['include']=[{'all':!![]}];}_0x4ceb38=_[_0x8dfe('0x4c')]({},_0x4ceb38,_0x54c3c0['options']);return db['Network'][_0x8dfe('0x55')](_0x4ceb38)[_0x8dfe('0x1e')](handleEntityNotFound(_0x153be0,null))[_0x8dfe('0x1e')](respondWithResult(_0x153be0,null))[_0x8dfe('0x29')](handleError(_0x153be0,null));};exports[_0x8dfe('0x56')]=function(_0x2e6a39,_0xa4a7e1,_0x5019cc){var _0x1712c8;return db[_0x8dfe('0x57')][_0x8dfe('0x58')](function(_0x1fbf40){return db[_0x8dfe('0x3d')][_0x8dfe('0x56')](_0x2e6a39[_0x8dfe('0x59')],{'raw':!![]})['then'](function(_0x132130){_0x1712c8=_0x132130;return db[_0x8dfe('0x3d')]['findAll']({'where':{'type':_0x2e6a39[_0x8dfe('0x59')][_0x8dfe('0x5a')]},'raw':!![]});})['then'](function(_0x51c6b3){if(_0x1712c8[_0x8dfe('0x5a')][_0x8dfe('0x5b')]()==_0x8dfe('0x5c')){var _0x27619a=fs[_0x8dfe('0x5d')](path[_0x8dfe('0x5e')](config[_0x8dfe('0x5f')],_0x8dfe('0x60')),_0x8dfe('0x61'));var _0x5860da=ejs[_0x8dfe('0x62')](_0x27619a,{'networks':_0x51c6b3||[]});fs[_0x8dfe('0x63')](_0x8dfe('0x64'),_0x5860da);return respondWithRpcPromise(_0x8dfe('0x65'),_0x8dfe('0x56'),{'module':_0x8dfe('0x66')});}else if(_0x1712c8['type']['toUpperCase']()==_0x8dfe('0x67')){var _0x294b1d=fs[_0x8dfe('0x5d')](path[_0x8dfe('0x5e')](config['root'],_0x8dfe('0x68')),'utf8');var _0x3abb85=ejs[_0x8dfe('0x62')](_0x294b1d,{'networks':_0x51c6b3||[]});fs['writeFileSync'](_0x8dfe('0x69'),_0x3abb85);return respondWithRpcPromise('Reload',_0x8dfe('0x56'),{'module':_0x8dfe('0x66')});}else{var _0x524336=fs[_0x8dfe('0x5d')](path['join'](config[_0x8dfe('0x5f')],_0x8dfe('0x6a')),_0x8dfe('0x61'));var _0x5a1db4=ejs[_0x8dfe('0x62')](_0x524336,{'networks':_0x51c6b3||[]});fs[_0x8dfe('0x63')](util[_0x8dfe('0x6b')](_0x8dfe('0x6c'),_0x2e6a39['body'][_0x8dfe('0x5a')][_0x8dfe('0x6d')]()),_0x5a1db4);return respondWithRpcPromise(_0x8dfe('0x65'),'create',{'module':_0x8dfe('0x6e')});}return null;})[_0x8dfe('0x1e')](function(){return _0x1712c8;});})[_0x8dfe('0x1e')](respondWithResult(_0xa4a7e1,0xc9))[_0x8dfe('0x29')](handleError(_0xa4a7e1,null));};exports[_0x8dfe('0x36')]=function(_0x542330,_0x444a98,_0x4d8128){var _0x20b567;return db[_0x8dfe('0x57')][_0x8dfe('0x58')](function(_0x520e37){return db[_0x8dfe('0x3d')][_0x8dfe('0x55')]({'where':{'id':_0x542330[_0x8dfe('0x53')]['id']}})[_0x8dfe('0x1e')](handleEntityNotFound(_0x444a98,null))[_0x8dfe('0x1e')](saveUpdates(_0x542330[_0x8dfe('0x59')],null))[_0x8dfe('0x1e')](function(_0x561236){if(_0x561236){_0x20b567=_0x561236;return db[_0x8dfe('0x3d')]['findAll']({'where':{'type':_0x20b567[_0x8dfe('0x5a')]},'raw':!![]});}return null;})['then'](function(_0xcef3e6){if(_0x20b567['type'][_0x8dfe('0x5b')]()=='STUN'){var _0x14db5d=fs['readFileSync'](path['join'](config[_0x8dfe('0x5f')],_0x8dfe('0x60')),'utf8');var _0x133be8=ejs[_0x8dfe('0x62')](_0x14db5d,{'networks':_0xcef3e6||[]});fs[_0x8dfe('0x63')]('/etc/asterisk/stun_xcally.conf',_0x133be8);return respondWithRpcPromise('Reload',_0x8dfe('0x36'),{'module':'res_stun_monitor.so'});}else if(_0x20b567[_0x8dfe('0x5a')][_0x8dfe('0x5b')]()==_0x8dfe('0x67')){var _0x4ce7e0=fs['readFileSync'](path[_0x8dfe('0x5e')](config[_0x8dfe('0x5f')],_0x8dfe('0x68')),'utf8');var _0x1db70d=ejs['render'](_0x4ce7e0,{'networks':_0xcef3e6||[]});fs[_0x8dfe('0x63')]('/etc/asterisk/turn_xcally.conf',_0x1db70d);return respondWithRpcPromise(_0x8dfe('0x65'),_0x8dfe('0x36'),{'module':_0x8dfe('0x66')});}else{var _0x339b2e=fs['readFileSync'](path['join'](config['root'],_0x8dfe('0x6a')),'utf8');var _0x20be86=ejs[_0x8dfe('0x62')](_0x339b2e,{'networks':_0xcef3e6||[]});fs[_0x8dfe('0x63')](util[_0x8dfe('0x6b')](_0x8dfe('0x6c'),_0x542330[_0x8dfe('0x59')]['type']['toLowerCase']()),_0x20be86);return respondWithRpcPromise(_0x8dfe('0x65'),_0x8dfe('0x36'),{'module':_0x8dfe('0x6e')});}return null;})[_0x8dfe('0x1e')](function(_0x5494f3){if(_0x5494f3){return _0x20b567;}return null;});})['then'](respondWithResult(_0x444a98,null))[_0x8dfe('0x29')](handleError(_0x444a98,null));};exports['destroy']=function(_0x6683e1,_0x376f75,_0x10c853){var _0x231871;return db[_0x8dfe('0x3d')][_0x8dfe('0x55')]({'where':{'id':_0x6683e1[_0x8dfe('0x53')]['id']}})[_0x8dfe('0x1e')](function(_0x3c508d){_0x231871=_0x3c508d;return _0x3c508d;})[_0x8dfe('0x1e')](handleEntityNotFound(_0x376f75,null))[_0x8dfe('0x1e')](removeEntity(_0x376f75,null))[_0x8dfe('0x1e')](function(){if(_0x231871){return db[_0x8dfe('0x3d')][_0x8dfe('0x6f')]({'where':{'type':_0x231871[_0x8dfe('0x5a')]},'raw':!![]});}})[_0x8dfe('0x1e')](function(_0x57296f){if(_0x231871[_0x8dfe('0x5a')][_0x8dfe('0x5b')]()==_0x8dfe('0x5c')){var _0x27d7ec=fs['readFileSync'](path['join'](config['root'],_0x8dfe('0x60')),_0x8dfe('0x61'));var _0xc881=ejs['render'](_0x27d7ec,{'networks':_0x57296f||[]});fs[_0x8dfe('0x63')](_0x8dfe('0x64'),_0xc881);return respondWithRpcPromise(_0x8dfe('0x65'),_0x8dfe('0x37'),{'module':'res_stun_monitor.so'});}else if(_0x231871[_0x8dfe('0x5a')][_0x8dfe('0x5b')]()==_0x8dfe('0x67')){var _0x5b8034=fs['readFileSync'](path[_0x8dfe('0x5e')](config[_0x8dfe('0x5f')],_0x8dfe('0x68')),_0x8dfe('0x61'));var _0x149b69=ejs[_0x8dfe('0x62')](_0x5b8034,{'networks':_0x57296f||[]});fs[_0x8dfe('0x63')](_0x8dfe('0x69'),_0x149b69);return respondWithRpcPromise(_0x8dfe('0x65'),_0x8dfe('0x37'),{'module':_0x8dfe('0x66')});}else{var _0x37c542=fs['readFileSync'](path['join'](config[_0x8dfe('0x5f')],_0x8dfe('0x6a')),_0x8dfe('0x61'));var _0x11ed21=ejs[_0x8dfe('0x62')](_0x37c542,{'networks':_0x57296f||[]});fs[_0x8dfe('0x63')](util[_0x8dfe('0x6b')](_0x8dfe('0x6c'),_0x6683e1[_0x8dfe('0x59')][_0x8dfe('0x5a')][_0x8dfe('0x6d')]()),_0x11ed21);return respondWithRpcPromise('Reload',_0x8dfe('0x37'),{'module':'chan_sip.so'});}return null;})[_0x8dfe('0x29')](handleError(_0x376f75,null));};
\ No newline at end of file
index 5e53791..1258713 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x44a3=['moment','bluebird','request-promise','path','../../config/environment','./network.attributes','exports','lodash','util','../../config/logger','api'];(function(_0x2193cc,_0x1f9e4b){var _0x143fa4=function(_0x3fe550){while(--_0x3fe550){_0x2193cc['push'](_0x2193cc['shift']());}};_0x143fa4(++_0x1f9e4b);}(_0x44a3,0x1a9));var _0x344a=function(_0x1fc82b,_0x5150a6){_0x1fc82b=_0x1fc82b-0x0;var _0x4c6679=_0x44a3[_0x1fc82b];return _0x4c6679;};'use strict';var _=require(_0x344a('0x0'));var util=require(_0x344a('0x1'));var logger=require(_0x344a('0x2'))(_0x344a('0x3'));var moment=require(_0x344a('0x4'));var BPromise=require(_0x344a('0x5'));var rp=require(_0x344a('0x6'));var fs=require('fs');var path=require(_0x344a('0x7'));var rimraf=require('rimraf');var config=require(_0x344a('0x8'));var attributes=require(_0x344a('0x9'));module[_0x344a('0xa')]=function(_0x28b51e,_0x39984a){return _0x28b51e['define']('Network',attributes,{'tableName':'network','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6282=['api','request-promise','path','../../config/environment','./network.attributes','exports','Network','network','lodash','util','../../config/logger'];(function(_0x23c1db,_0x110887){var _0x5f3b16=function(_0x1a9e77){while(--_0x1a9e77){_0x23c1db['push'](_0x23c1db['shift']());}};_0x5f3b16(++_0x110887);}(_0x6282,0x76));var _0x2628=function(_0x26e088,_0x3ef2fe){_0x26e088=_0x26e088-0x0;var _0x11814d=_0x6282[_0x26e088];return _0x11814d;};'use strict';var _=require(_0x2628('0x0'));var util=require(_0x2628('0x1'));var logger=require(_0x2628('0x2'))(_0x2628('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x2628('0x4'));var fs=require('fs');var path=require(_0x2628('0x5'));var rimraf=require('rimraf');var config=require(_0x2628('0x6'));var attributes=require(_0x2628('0x7'));module[_0x2628('0x8')]=function(_0x47102a,_0x128d3a){return _0x47102a['define'](_0x2628('0x9'),attributes,{'tableName':_0x2628('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f93c59c..ab693ed 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(_0x20f961,_0x83cd55){_0x20f961=_0x20f961-0x0;var _0x4f92c2=_0x7a54[_0x20f961];return _0x4f92c2;};'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(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7a54,0x106));var _0x47a5=function(_0x212241,_0x4b0b53){_0x212241=_0x212241-0x0;var _0x36f029=_0x7a54[_0x212241];return _0x36f029;};'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 13be57f..9ddf2be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb2ab=['show','/:id/dispositions','getDispositions','/:id/canned_answers','/:id/applications','getApplications','/:id/interactions','getInteractions','/:id/users','post','create','addDisposition','addAnswer','addApplications','/:id/send','send','update','delete','destroy','removeAnswers','removeAgents','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelAccount.controller','get','isAuthenticated','index','/describe','describe','/:id'];(function(_0x4d965e,_0x26dc0f){var _0x1f08b9=function(_0xe3f528){while(--_0xe3f528){_0x4d965e['push'](_0x4d965e['shift']());}};_0x1f08b9(++_0x26dc0f);}(_0xb2ab,0x1c3));var _0xbb2a=function(_0x2bcb2,_0x33a321){_0x2bcb2=_0x2bcb2-0x0;var _0x16c55e=_0xb2ab[_0x2bcb2];return _0x16c55e;};'use strict';var multer=require(_0xbb2a('0x0'));var util=require(_0xbb2a('0x1'));var path=require(_0xbb2a('0x2'));var timeout=require(_0xbb2a('0x3'));var express=require(_0xbb2a('0x4'));var router=express[_0xbb2a('0x5')]();var fs_extra=require(_0xbb2a('0x6'));var auth=require(_0xbb2a('0x7'));var interaction=require(_0xbb2a('0x8'));var config=require(_0xbb2a('0x9'));var controller=require(_0xbb2a('0xa'));router[_0xbb2a('0xb')]('/',auth[_0xbb2a('0xc')](),controller[_0xbb2a('0xd')]);router['get'](_0xbb2a('0xe'),auth[_0xbb2a('0xc')](),controller[_0xbb2a('0xf')]);router[_0xbb2a('0xb')](_0xbb2a('0x10'),auth[_0xbb2a('0xc')](),controller[_0xbb2a('0x11')]);router['get'](_0xbb2a('0x12'),auth[_0xbb2a('0xc')](),controller[_0xbb2a('0x13')]);router['get'](_0xbb2a('0x14'),auth[_0xbb2a('0xc')](),controller['getAnswers']);router[_0xbb2a('0xb')](_0xbb2a('0x15'),auth[_0xbb2a('0xc')](),controller[_0xbb2a('0x16')]);router[_0xbb2a('0xb')](_0xbb2a('0x17'),auth['isAuthenticated'](),controller[_0xbb2a('0x18')]);router[_0xbb2a('0xb')](_0xbb2a('0x19'),auth[_0xbb2a('0xc')](),controller['getAgents']);router[_0xbb2a('0x1a')]('/',auth[_0xbb2a('0xc')](),controller[_0xbb2a('0x1b')]);router[_0xbb2a('0x1a')](_0xbb2a('0x12'),auth['isAuthenticated'](),controller[_0xbb2a('0x1c')]);router[_0xbb2a('0x1a')](_0xbb2a('0x14'),auth[_0xbb2a('0xc')](),controller[_0xbb2a('0x1d')]);router[_0xbb2a('0x1a')]('/:id/notify',controller['notify']);router[_0xbb2a('0x1a')](_0xbb2a('0x15'),auth[_0xbb2a('0xc')](),controller[_0xbb2a('0x1e')]);router[_0xbb2a('0x1a')]('/:id/users',auth[_0xbb2a('0xc')](),controller['addAgents']);router[_0xbb2a('0x1a')](_0xbb2a('0x1f'),auth['isAuthenticated'](),controller[_0xbb2a('0x20')]);router['put'](_0xbb2a('0x10'),auth[_0xbb2a('0xc')](),controller[_0xbb2a('0x21')]);router[_0xbb2a('0x22')]('/:id',auth[_0xbb2a('0xc')](),controller[_0xbb2a('0x23')]);router[_0xbb2a('0x22')](_0xbb2a('0x12'),auth[_0xbb2a('0xc')](),controller['removeDispositions']);router[_0xbb2a('0x22')](_0xbb2a('0x14'),auth[_0xbb2a('0xc')](),controller[_0xbb2a('0x24')]);router['delete'](_0xbb2a('0x19'),auth[_0xbb2a('0xc')](),controller[_0xbb2a('0x25')]);module[_0xbb2a('0x26')]=router;
\ No newline at end of file
+var _0xa703=['index','get','/describe','describe','/:id/dispositions','/:id/canned_answers','getAnswers','/:id/applications','getApplications','/:id/users','post','create','addDisposition','addAnswer','/:id/notify','notify','addAgents','/:id/send','/:id','update','delete','destroy','removeAgents','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','./openchannelAccount.controller','isAuthenticated'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xa703,0x183));var _0x3a70=function(_0x2763f2,_0x416af8){_0x2763f2=_0x2763f2-0x0;var _0x3ef471=_0xa703[_0x2763f2];return _0x3ef471;};'use strict';var multer=require('multer');var util=require(_0x3a70('0x0'));var path=require(_0x3a70('0x1'));var timeout=require(_0x3a70('0x2'));var express=require(_0x3a70('0x3'));var router=express[_0x3a70('0x4')]();var fs_extra=require(_0x3a70('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x3a70('0x6'));var config=require('../../config/environment');var controller=require(_0x3a70('0x7'));router['get']('/',auth[_0x3a70('0x8')](),controller[_0x3a70('0x9')]);router[_0x3a70('0xa')](_0x3a70('0xb'),auth['isAuthenticated'](),controller[_0x3a70('0xc')]);router['get']('/:id',auth['isAuthenticated'](),controller['show']);router[_0x3a70('0xa')](_0x3a70('0xd'),auth[_0x3a70('0x8')](),controller['getDispositions']);router[_0x3a70('0xa')](_0x3a70('0xe'),auth['isAuthenticated'](),controller[_0x3a70('0xf')]);router['get'](_0x3a70('0x10'),auth[_0x3a70('0x8')](),controller[_0x3a70('0x11')]);router[_0x3a70('0xa')]('/:id/interactions',auth['isAuthenticated'](),controller['getInteractions']);router[_0x3a70('0xa')](_0x3a70('0x12'),auth['isAuthenticated'](),controller['getAgents']);router[_0x3a70('0x13')]('/',auth[_0x3a70('0x8')](),controller[_0x3a70('0x14')]);router[_0x3a70('0x13')](_0x3a70('0xd'),auth[_0x3a70('0x8')](),controller[_0x3a70('0x15')]);router['post'](_0x3a70('0xe'),auth[_0x3a70('0x8')](),controller[_0x3a70('0x16')]);router[_0x3a70('0x13')](_0x3a70('0x17'),controller[_0x3a70('0x18')]);router[_0x3a70('0x13')](_0x3a70('0x10'),auth[_0x3a70('0x8')](),controller['addApplications']);router['post'](_0x3a70('0x12'),auth[_0x3a70('0x8')](),controller[_0x3a70('0x19')]);router[_0x3a70('0x13')](_0x3a70('0x1a'),auth[_0x3a70('0x8')](),controller['send']);router['put'](_0x3a70('0x1b'),auth[_0x3a70('0x8')](),controller[_0x3a70('0x1c')]);router[_0x3a70('0x1d')](_0x3a70('0x1b'),auth[_0x3a70('0x8')](),controller[_0x3a70('0x1e')]);router[_0x3a70('0x1d')](_0x3a70('0xd'),auth[_0x3a70('0x8')](),controller['removeDispositions']);router[_0x3a70('0x1d')](_0x3a70('0xe'),auth[_0x3a70('0x8')](),controller['removeAnswers']);router[_0x3a70('0x1d')](_0x3a70('0x12'),auth[_0x3a70('0x8')](),controller[_0x3a70('0x1f')]);module[_0x3a70('0x20')]=router;
\ No newline at end of file
index 61d57c2..4076f88 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4735=['Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','exports','STRING','name','generate','TEXT','INTEGER','BOOLEAN'];(function(_0x396e83,_0x2d51e2){var _0x4a42cc=function(_0x415496){while(--_0x415496){_0x396e83['push'](_0x396e83['shift']());}};_0x4a42cc(++_0x2d51e2);}(_0x4735,0x122));var _0x5473=function(_0x509f97,_0x442414){_0x509f97=_0x509f97-0x0;var _0x18bbef=_0x4735[_0x509f97];return _0x18bbef;};'use strict';var Sequelize=require('sequelize');var rs=require('randomstring');module[_0x5473('0x0')]={'name':{'type':Sequelize[_0x5473('0x1')],'unique':_0x5473('0x2'),'allowNull':![]},'description':{'type':Sequelize[_0x5473('0x1')]},'token':{'type':Sequelize[_0x5473('0x1')],'defaultValue':function(){return rs[_0x5473('0x3')]();}},'replyUri':{'type':Sequelize['STRING'],'validate':{'isUrl':!![]}},'key':{'type':Sequelize[_0x5473('0x1')],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0x5473('0x4')],'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[_0x5473('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'mapKey':{'type':Sequelize['STRING']},'queueTransfer':{'type':Sequelize[_0x5473('0x6')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x5473('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x5473('0x6')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x5473('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x5473('0x5')],'allowNull':!![],'defaultValue':null,'comment':_0x5473('0x7')},'mandatoryDisposition':{'type':Sequelize[_0x5473('0x6')],'defaultValue':![],'comment':_0x5473('0x8'),'set':function(_0x2eeff0){if(!_0x2eeff0)this[_0x5473('0x9')](_0x5473('0xa'),null);this[_0x5473('0x9')]('mandatoryDisposition',_0x2eeff0);}}};
\ No newline at end of file
+var _0x7df7=['mandatoryDispositionPauseId','mandatoryDisposition','sequelize','randomstring','STRING','name','generate','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue'];(function(_0x96cefd,_0x25cb5d){var _0x4310c1=function(_0x4e9c5f){while(--_0x4e9c5f){_0x96cefd['push'](_0x96cefd['shift']());}};_0x4310c1(++_0x25cb5d);}(_0x7df7,0xdf));var _0x77df=function(_0x3ea3ee,_0x4d1f0a){_0x3ea3ee=_0x3ea3ee-0x0;var _0x219fa9=_0x7df7[_0x3ea3ee];return _0x219fa9;};'use strict';var Sequelize=require(_0x77df('0x0'));var rs=require(_0x77df('0x1'));module['exports']={'name':{'type':Sequelize[_0x77df('0x2')],'unique':_0x77df('0x3'),'allowNull':![]},'description':{'type':Sequelize[_0x77df('0x2')]},'token':{'type':Sequelize[_0x77df('0x2')],'defaultValue':function(){return rs[_0x77df('0x4')]();}},'replyUri':{'type':Sequelize[_0x77df('0x2')],'validate':{'isUrl':!![]}},'key':{'type':Sequelize['STRING'],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0x77df('0x5')],'defaultValue':function(){return _0x77df('0x6');}},'notificationSound':{'type':Sequelize[_0x77df('0x7')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x77df('0x7')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x77df('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'mapKey':{'type':Sequelize['STRING']},'queueTransfer':{'type':Sequelize[_0x77df('0x7')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x77df('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x77df('0x7')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x77df('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x77df('0x8')],'allowNull':!![],'defaultValue':null,'comment':_0x77df('0x9')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0x77df('0xa'),'set':function(_0x15e9ef){if(!_0x15e9ef)this['setDataValue'](_0x77df('0xb'),null);this['setDataValue'](_0x77df('0xc'),_0x15e9ef);}}};
\ No newline at end of file
index 122af74..cdc4e44 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa1b1=['Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','body','Pause','describe','addDisposition','OpenchannelAccountId','Disposition','getDispositions','findOne','nolimit','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','removeAnswers','openchannel','CmContact','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','ListId','isNil','Sequelize','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','from','CmList','List','DESC','Applications','account','applications','list','priority','asc','Contacts','contact','lastName','threadId','OpenchannelInteraction','externalUrl','ContactId','spread','firstName','messageId','interaction','autoclose','push','unmanaged','*,*,*,*','OpenchannelMessage','UserId','User','unshift','waitForTheAssignedAgent','forcedOwnership','Start','startRouting','EventManager','notify','addApplications','sequelize','transaction','bulkCreate','findAndCountAll','getApplications','OpenchannelApplication','getInteractions','Owner','fullname','Tag','color','tag','addAgents','omit','emit','userOpenchannelAccount:save','removeAgents','userOpenchannelAccount:remove','getAgents','out','Messages','dataValues','zip-dir','request-promise','moment','bluebird','mustache','util','sox','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','./openchannelAccount.socket','register','client','http','request','then','info','OpenchannelAccount,\x20%s,\x20%s','request\x20sent','OpenchannelAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','destroy','OpenchannelAccounts','UserProfileResource','sendStatus','name','send','index','mandatoryDispositionPause','map','rawAttributes','type','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','order','sort','pick','filter','where','merge','options','includeAll','include','OpenchannelAccount','findAll','rows','show','params','find','create','user','get'];(function(_0x3ea67e,_0x2eca3e){var _0x1ab06c=function(_0x2c29e1){while(--_0x2c29e1){_0x3ea67e['push'](_0x3ea67e['shift']());}};_0x1ab06c(++_0x2eca3e);}(_0xa1b1,0x1dd));var _0x1a1b=function(_0x58b5d7,_0x79ca8a){_0x58b5d7=_0x58b5d7-0x0;var _0x817269=_0xa1b1[_0x58b5d7];return _0x817269;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x1a1b('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0x1a1b('0x1'));var moment=require(_0x1a1b('0x2'));var BPromise=require(_0x1a1b('0x3'));var Mustache=require(_0x1a1b('0x4'));var util=require(_0x1a1b('0x5'));var path=require('path');var sox=require(_0x1a1b('0x6'));var csv=require('to-csv');var ejs=require(_0x1a1b('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x1a1b('0x8'));var squel=require(_0x1a1b('0x9'));var crypto=require(_0x1a1b('0xa'));var jsforce=require(_0x1a1b('0xb'));var deskjs=require(_0x1a1b('0xc'));var toCsv=require(_0x1a1b('0xd'));var querystring=require(_0x1a1b('0xe'));var Papa=require(_0x1a1b('0xf'));var Redis=require(_0x1a1b('0x10'));var authService=require(_0x1a1b('0x11'));var qs=require(_0x1a1b('0x12'));var as=require(_0x1a1b('0x13'));var hardwareService=require(_0x1a1b('0x14'));var logger=require('../../config/logger')(_0x1a1b('0x15'));var utils=require(_0x1a1b('0x16'));var config=require(_0x1a1b('0x17'));var licenseUtil=require(_0x1a1b('0x18'));var db=require('../../mysqldb')['db'];config[_0x1a1b('0x19')]=_[_0x1a1b('0x1a')](config[_0x1a1b('0x19')],{'host':_0x1a1b('0x1b'),'port':0x18eb});var socket=require(_0x1a1b('0x1c'))(new Redis(config[_0x1a1b('0x19')]));require(_0x1a1b('0x1d'))[_0x1a1b('0x1e')](socket);var jayson=require('jayson/promise');var client=jayson[_0x1a1b('0x1f')][_0x1a1b('0x20')]({'port':0x232c});var client9002=jayson['client'][_0x1a1b('0x20')]({'port':0x232a});function respondWithRpcPromise(_0x4202a3,_0x36306f,_0x1ace9f,_0x4770dd){return new BPromise(function(_0x2b1161,_0x2a87b4){var _0x213a49=_0x4770dd||client;return _0x213a49[_0x1a1b('0x21')](_0x4202a3,_0x1ace9f)[_0x1a1b('0x22')](function(_0xff6ee4){logger[_0x1a1b('0x23')](_0x1a1b('0x24'),_0x36306f,_0x1a1b('0x25'));logger['debug'](_0x1a1b('0x26'),_0x36306f,_0x1a1b('0x25'),JSON[_0x1a1b('0x27')](_0xff6ee4));if(_0xff6ee4[_0x1a1b('0x28')]){if(_0xff6ee4[_0x1a1b('0x28')][_0x1a1b('0x29')]===0x1f4){logger[_0x1a1b('0x28')](_0x1a1b('0x24'),_0x36306f,_0xff6ee4[_0x1a1b('0x28')]['message']);return _0x2a87b4(_0xff6ee4[_0x1a1b('0x28')][_0x1a1b('0x2a')]);}logger['error'](_0x1a1b('0x24'),_0x36306f,_0xff6ee4[_0x1a1b('0x28')][_0x1a1b('0x2a')]);return _0x2b1161(_0xff6ee4['error']['message']);}else{logger['info'](_0x1a1b('0x24'),_0x36306f,_0x1a1b('0x25'));_0x2b1161(_0xff6ee4[_0x1a1b('0x2b')][_0x1a1b('0x2a')]);}})[_0x1a1b('0x2c')](function(_0x1cbf2c){logger[_0x1a1b('0x28')]('OpenchannelAccount,\x20%s,\x20%s',_0x36306f,_0x1cbf2c);_0x2a87b4(_0x1cbf2c);});});}function respondWithStatusCode(_0x35246c,_0x36a60f){_0x36a60f=_0x36a60f||0xcc;return function(_0x42bb8d){if(_0x42bb8d){return _0x35246c['sendStatus'](_0x36a60f);}return _0x35246c[_0x1a1b('0x2d')](_0x36a60f)[_0x1a1b('0x2e')]();};}function respondWithResult(_0x326182,_0x20a62c){_0x20a62c=_0x20a62c||0xc8;return function(_0x357c88){if(_0x357c88){return _0x326182[_0x1a1b('0x2d')](_0x20a62c)[_0x1a1b('0x2f')](_0x357c88);}};}function respondWithFilteredResult(_0x10743b,_0x4d5c2a){return function(_0x4ff2ff){if(_0x4ff2ff){var _0x340d8b=typeof _0x4d5c2a[_0x1a1b('0x30')]==='undefined'&&typeof _0x4d5c2a[_0x1a1b('0x31')]===_0x1a1b('0x32');var _0x59d7a9=_0x4ff2ff[_0x1a1b('0x33')];var _0x4b9fa2=_0x340d8b?0x0:_0x4d5c2a[_0x1a1b('0x30')];var _0x3c054d=_0x340d8b?_0x4ff2ff[_0x1a1b('0x33')]:_0x4d5c2a[_0x1a1b('0x30')]+_0x4d5c2a[_0x1a1b('0x31')];var _0x3609b2;if(_0x3c054d>=_0x59d7a9){_0x3c054d=_0x59d7a9;_0x3609b2=0xc8;}else{_0x3609b2=0xce;}_0x10743b[_0x1a1b('0x2d')](_0x3609b2);return _0x10743b[_0x1a1b('0x34')](_0x1a1b('0x35'),_0x4b9fa2+'-'+_0x3c054d+'/'+_0x59d7a9)[_0x1a1b('0x2f')](_0x4ff2ff);}return null;};}function patchUpdates(_0x18818){return function(_0x2e36f1){try{jsonpatch[_0x1a1b('0x36')](_0x2e36f1,_0x18818,!![]);}catch(_0x35553a){return BPromise[_0x1a1b('0x37')](_0x35553a);}return _0x2e36f1[_0x1a1b('0x38')]();};}function saveUpdates(_0x3077eb,_0x73d408){return function(_0x206e0a){if(_0x206e0a){return _0x206e0a['update'](_0x3077eb)[_0x1a1b('0x22')](function(_0x45de54){return _0x45de54;});}return null;};}function removeEntity(_0x35b807,_0x5d81ba){return function(_0x57d63c){if(_0x57d63c){return _0x57d63c[_0x1a1b('0x39')]()[_0x1a1b('0x22')](function(){var _0x70dd3b=_0x57d63c['get']({'plain':!![]});var _0xd3ee7c=_0x1a1b('0x3a');return db[_0x1a1b('0x3b')]['destroy']({'where':{'type':_0xd3ee7c,'resourceId':_0x70dd3b['id']}})[_0x1a1b('0x22')](function(){return _0x57d63c;});})[_0x1a1b('0x22')](function(){_0x35b807[_0x1a1b('0x2d')](0xcc)[_0x1a1b('0x2e')]();});}};}function handleEntityNotFound(_0x342fe8,_0x20ec35){return function(_0x560128){if(!_0x560128){_0x342fe8[_0x1a1b('0x3c')](0x194);}return _0x560128;};}function handleError(_0x4dae31,_0x3e9bc9){_0x3e9bc9=_0x3e9bc9||0x1f4;return function(_0x1239dc){logger[_0x1a1b('0x28')](_0x1239dc['stack']);if(_0x1239dc[_0x1a1b('0x3d')]){delete _0x1239dc[_0x1a1b('0x3d')];}_0x4dae31[_0x1a1b('0x2d')](_0x3e9bc9)[_0x1a1b('0x3e')](_0x1239dc);};}exports[_0x1a1b('0x3f')]=function(_0x14d68b,_0x4cdead){var _0x126e72={'include':[{'model':db['Pause'],'as':_0x1a1b('0x40')}]},_0x4be98f={},_0x5df127={'count':0x0,'rows':[]};var _0x981135=_[_0x1a1b('0x41')](db['OpenchannelAccount'][_0x1a1b('0x42')],function(_0x38fc60){return{'name':_0x38fc60['fieldName'],'type':_0x38fc60[_0x1a1b('0x43')][_0x1a1b('0x44')]};});_0x4be98f[_0x1a1b('0x45')]=_[_0x1a1b('0x41')](_0x981135,_0x1a1b('0x3d'));_0x4be98f[_0x1a1b('0x46')]=_[_0x1a1b('0x47')](_0x14d68b[_0x1a1b('0x46')]);_0x4be98f[_0x1a1b('0x48')]=_['intersection'](_0x4be98f['model'],_0x4be98f[_0x1a1b('0x46')]);_0x126e72[_0x1a1b('0x49')]=_[_0x1a1b('0x4a')](_0x4be98f[_0x1a1b('0x45')],qs[_0x1a1b('0x4b')](_0x14d68b[_0x1a1b('0x46')][_0x1a1b('0x4b')]));_0x126e72['attributes']=_0x126e72[_0x1a1b('0x49')][_0x1a1b('0x4c')]?_0x126e72[_0x1a1b('0x49')]:_0x4be98f[_0x1a1b('0x45')];if(!_0x14d68b[_0x1a1b('0x46')][_0x1a1b('0x4d')]('nolimit')){_0x126e72[_0x1a1b('0x31')]=qs[_0x1a1b('0x31')](_0x14d68b[_0x1a1b('0x46')][_0x1a1b('0x31')]);_0x126e72['offset']=qs[_0x1a1b('0x30')](_0x14d68b[_0x1a1b('0x46')][_0x1a1b('0x30')]);}_0x126e72[_0x1a1b('0x4e')]=qs['sort'](_0x14d68b[_0x1a1b('0x46')][_0x1a1b('0x4f')]);_0x126e72['where']=qs[_0x1a1b('0x48')](_[_0x1a1b('0x50')](_0x14d68b[_0x1a1b('0x46')],_0x4be98f[_0x1a1b('0x48')]),_0x981135);if(_0x14d68b['query'][_0x1a1b('0x51')]){_0x126e72[_0x1a1b('0x52')]=_[_0x1a1b('0x53')](_0x126e72[_0x1a1b('0x52')],{'$or':_[_0x1a1b('0x41')](_0x981135,function(_0x15a586){if(_0x15a586['type']!=='VIRTUAL'){var _0x2cf847={};_0x2cf847[_0x15a586[_0x1a1b('0x3d')]]={'$like':'%'+_0x14d68b[_0x1a1b('0x46')][_0x1a1b('0x51')]+'%'};return _0x2cf847;}})});}_0x126e72=_[_0x1a1b('0x53')]({},_0x126e72,_0x14d68b[_0x1a1b('0x54')]);var _0x17858b={'where':_0x126e72['where']};return db['OpenchannelAccount'][_0x1a1b('0x33')](_0x17858b)['then'](function(_0x27b8d1){_0x5df127[_0x1a1b('0x33')]=_0x27b8d1;if(_0x14d68b[_0x1a1b('0x46')][_0x1a1b('0x55')]){_0x126e72[_0x1a1b('0x56')]=[{'all':!![]}];}return db[_0x1a1b('0x57')][_0x1a1b('0x58')](_0x126e72);})[_0x1a1b('0x22')](function(_0x3034aa){_0x5df127[_0x1a1b('0x59')]=_0x3034aa;return _0x5df127;})[_0x1a1b('0x22')](respondWithFilteredResult(_0x4cdead,_0x126e72))[_0x1a1b('0x2c')](handleError(_0x4cdead,null));};exports[_0x1a1b('0x5a')]=function(_0x1f6249,_0x317a13){var _0x3f71f8={'raw':![],'where':{'id':_0x1f6249[_0x1a1b('0x5b')]['id']},'include':[{'model':db['Pause'],'as':_0x1a1b('0x40')}]},_0x2accf2={};_0x2accf2[_0x1a1b('0x45')]=_[_0x1a1b('0x47')](db['OpenchannelAccount'][_0x1a1b('0x42')]);_0x2accf2['query']=_[_0x1a1b('0x47')](_0x1f6249[_0x1a1b('0x46')]);_0x2accf2[_0x1a1b('0x48')]=_[_0x1a1b('0x4a')](_0x2accf2[_0x1a1b('0x45')],_0x2accf2[_0x1a1b('0x46')]);_0x3f71f8['attributes']=_[_0x1a1b('0x4a')](_0x2accf2[_0x1a1b('0x45')],qs['fields'](_0x1f6249['query'][_0x1a1b('0x4b')]));_0x3f71f8[_0x1a1b('0x49')]=_0x3f71f8[_0x1a1b('0x49')]['length']?_0x3f71f8[_0x1a1b('0x49')]:_0x2accf2['model'];if(_0x1f6249[_0x1a1b('0x46')][_0x1a1b('0x55')]){_0x3f71f8[_0x1a1b('0x56')]=[{'all':!![]}];}_0x3f71f8=_[_0x1a1b('0x53')]({},_0x3f71f8,_0x1f6249[_0x1a1b('0x54')]);return db['OpenchannelAccount'][_0x1a1b('0x5c')](_0x3f71f8)['then'](handleEntityNotFound(_0x317a13,null))[_0x1a1b('0x22')](respondWithResult(_0x317a13,null))[_0x1a1b('0x2c')](handleError(_0x317a13,null));};exports[_0x1a1b('0x5d')]=function(_0x5acecf,_0x35a185){return db[_0x1a1b('0x57')][_0x1a1b('0x5d')](_0x5acecf['body'],{})['then'](function(_0x36996b){var _0x4d943a=_0x5acecf[_0x1a1b('0x5e')][_0x1a1b('0x5f')]({'plain':!![]});if(!_0x4d943a)throw new Error(_0x1a1b('0x60'));if(_0x4d943a[_0x1a1b('0x61')]==='user'){var _0x48d7bb=_0x36996b[_0x1a1b('0x5f')]({'plain':!![]});var _0x14313f=_0x1a1b('0x3a');return db[_0x1a1b('0x62')][_0x1a1b('0x5c')]({'where':{'name':_0x14313f,'userProfileId':_0x4d943a[_0x1a1b('0x63')]},'raw':!![]})['then'](function(_0x1cc8e8){if(_0x1cc8e8&&_0x1cc8e8['autoAssociation']===0x0){return db['UserProfileResource'][_0x1a1b('0x5d')]({'name':_0x48d7bb[_0x1a1b('0x3d')],'resourceId':_0x48d7bb['id'],'type':_0x1cc8e8[_0x1a1b('0x3d')],'sectionId':_0x1cc8e8['id']},{})[_0x1a1b('0x22')](function(){return _0x36996b;});}else{return _0x36996b;}})[_0x1a1b('0x2c')](function(_0x578a8b){logger[_0x1a1b('0x28')](_0x1a1b('0x64'),_0x578a8b);throw _0x578a8b;});}return _0x36996b;})[_0x1a1b('0x22')](respondWithResult(_0x35a185,0xc9))[_0x1a1b('0x2c')](handleError(_0x35a185,null));};exports[_0x1a1b('0x65')]=function(_0x38154a,_0x2ac2d9){if(_0x38154a[_0x1a1b('0x66')]['id']){delete _0x38154a[_0x1a1b('0x66')]['id'];}return db[_0x1a1b('0x57')][_0x1a1b('0x5c')]({'where':{'id':_0x38154a[_0x1a1b('0x5b')]['id']},'include':[{'model':db[_0x1a1b('0x67')],'as':_0x1a1b('0x40')}]})['then'](handleEntityNotFound(_0x2ac2d9,null))[_0x1a1b('0x22')](saveUpdates(_0x38154a['body'],null))[_0x1a1b('0x22')](respondWithResult(_0x2ac2d9,null))[_0x1a1b('0x2c')](handleError(_0x2ac2d9,null));};exports['destroy']=function(_0x42e226,_0x146810){return db[_0x1a1b('0x57')]['find']({'where':{'id':_0x42e226[_0x1a1b('0x5b')]['id']}})[_0x1a1b('0x22')](handleEntityNotFound(_0x146810,null))[_0x1a1b('0x22')](removeEntity(_0x146810,null))[_0x1a1b('0x2c')](handleError(_0x146810,null));};exports[_0x1a1b('0x68')]=function(_0x464603,_0xba8027){return db[_0x1a1b('0x57')]['describe']()['then'](respondWithResult(_0xba8027,null))[_0x1a1b('0x2c')](handleError(_0xba8027,null));};exports[_0x1a1b('0x69')]=function(_0x5e3c54,_0x4054da,_0x3809ba){if(_0x5e3c54['body']['id']){delete _0x5e3c54[_0x1a1b('0x66')]['id'];}return db[_0x1a1b('0x57')][_0x1a1b('0x5c')]({'where':{'id':_0x5e3c54[_0x1a1b('0x5b')]['id']}})[_0x1a1b('0x22')](handleEntityNotFound(_0x4054da,null))[_0x1a1b('0x22')](function(_0x30e395){if(_0x30e395){_0x5e3c54[_0x1a1b('0x66')][_0x1a1b('0x6a')]=_0x30e395['id'];return db[_0x1a1b('0x6b')][_0x1a1b('0x5d')](_0x5e3c54[_0x1a1b('0x66')]);}})['then'](respondWithResult(_0x4054da,null))['catch'](handleError(_0x4054da,null));};exports[_0x1a1b('0x6c')]=function(_0x3cf7a6,_0x289345,_0x4e2de6){var _0x347a12={'raw':![],'where':{}};var _0x559b40={};var _0x172533={'count':0x0,'rows':[]};return db[_0x1a1b('0x57')][_0x1a1b('0x6d')]({'where':{'id':_0x3cf7a6[_0x1a1b('0x5b')]['id']}})['then'](handleEntityNotFound(_0x289345,null))[_0x1a1b('0x22')](function(_0x29480b){if(_0x29480b){_0x559b40[_0x1a1b('0x45')]=_['keys'](db[_0x1a1b('0x6b')][_0x1a1b('0x42')]);_0x559b40[_0x1a1b('0x46')]=_[_0x1a1b('0x47')](_0x3cf7a6[_0x1a1b('0x46')]);_0x559b40[_0x1a1b('0x48')]=_[_0x1a1b('0x4a')](_0x559b40[_0x1a1b('0x45')],_0x559b40[_0x1a1b('0x46')]);_0x347a12[_0x1a1b('0x49')]=_[_0x1a1b('0x4a')](_0x559b40['model'],qs[_0x1a1b('0x4b')](_0x3cf7a6[_0x1a1b('0x46')][_0x1a1b('0x4b')]));_0x347a12[_0x1a1b('0x49')]=_0x347a12[_0x1a1b('0x49')]['length']?_0x347a12[_0x1a1b('0x49')]:_0x559b40['model'];if(!_0x3cf7a6[_0x1a1b('0x46')]['hasOwnProperty'](_0x1a1b('0x6e'))){_0x347a12[_0x1a1b('0x31')]=qs[_0x1a1b('0x31')](_0x3cf7a6[_0x1a1b('0x46')]['limit']);_0x347a12[_0x1a1b('0x30')]=qs['offset'](_0x3cf7a6[_0x1a1b('0x46')]['offset']);}_0x347a12['order']=qs[_0x1a1b('0x4f')](_0x3cf7a6[_0x1a1b('0x46')]['sort']);_0x347a12[_0x1a1b('0x52')]=qs[_0x1a1b('0x48')](_[_0x1a1b('0x50')](_0x3cf7a6[_0x1a1b('0x46')],_0x559b40[_0x1a1b('0x48')]));_0x347a12[_0x1a1b('0x52')][_0x1a1b('0x6a')]=_0x29480b['id'];if(_0x3cf7a6[_0x1a1b('0x46')][_0x1a1b('0x51')]){_0x347a12[_0x1a1b('0x52')]=_[_0x1a1b('0x53')](_0x347a12[_0x1a1b('0x52')],{'$or':_['map'](_0x347a12[_0x1a1b('0x49')],function(_0x327506){var _0x1d2c09={};_0x1d2c09[_0x327506]={'$like':'%'+_0x3cf7a6['query'][_0x1a1b('0x51')]+'%'};return _0x1d2c09;})});}_0x347a12=_[_0x1a1b('0x53')]({},_0x347a12,_0x3cf7a6[_0x1a1b('0x54')]);return db[_0x1a1b('0x6b')][_0x1a1b('0x33')]({'where':_0x347a12[_0x1a1b('0x52')]})[_0x1a1b('0x22')](function(_0x5c1b08){_0x172533[_0x1a1b('0x33')]=_0x5c1b08;if(_0x3cf7a6['query'][_0x1a1b('0x55')]){_0x347a12[_0x1a1b('0x56')]=[{'all':!![]}];}return db[_0x1a1b('0x6b')][_0x1a1b('0x58')](_0x347a12);})[_0x1a1b('0x22')](function(_0x5ae3c6){_0x172533[_0x1a1b('0x59')]=_0x5ae3c6;return _0x172533;});}})[_0x1a1b('0x22')](respondWithFilteredResult(_0x289345,_0x347a12))[_0x1a1b('0x2c')](handleError(_0x289345,null));};exports[_0x1a1b('0x6f')]=function(_0x327509,_0x53f370,_0x625214){return db['OpenchannelAccount'][_0x1a1b('0x5c')]({'where':{'id':_0x327509[_0x1a1b('0x5b')]['id']}})[_0x1a1b('0x22')](handleEntityNotFound(_0x53f370,null))[_0x1a1b('0x22')](function(_0xec0674){if(_0xec0674){return _0xec0674[_0x1a1b('0x6f')](_0x327509[_0x1a1b('0x46')][_0x1a1b('0x70')]);}})[_0x1a1b('0x22')](respondWithStatusCode(_0x53f370,null))[_0x1a1b('0x2c')](handleError(_0x53f370,null));};exports[_0x1a1b('0x71')]=function(_0x595852,_0x1b276d,_0xec3ed9){if(_0x595852[_0x1a1b('0x66')]['id']){delete _0x595852[_0x1a1b('0x66')]['id'];}return db[_0x1a1b('0x57')]['find']({'where':{'id':_0x595852[_0x1a1b('0x5b')]['id']}})[_0x1a1b('0x22')](handleEntityNotFound(_0x1b276d,null))[_0x1a1b('0x22')](function(_0x2003ab){if(_0x2003ab){_0x595852[_0x1a1b('0x66')][_0x1a1b('0x6a')]=_0x2003ab['id'];return db[_0x1a1b('0x72')][_0x1a1b('0x5d')](_0x595852[_0x1a1b('0x66')]);}})[_0x1a1b('0x22')](respondWithResult(_0x1b276d,null))[_0x1a1b('0x2c')](handleError(_0x1b276d,null));};exports[_0x1a1b('0x73')]=function(_0x6e2a4c,_0x875bc0,_0x5d89d6){var _0x334c0e={'raw':![],'where':{}};var _0x5171c8={};var _0x329743={'count':0x0,'rows':[]};return db[_0x1a1b('0x57')][_0x1a1b('0x6d')]({'where':{'id':_0x6e2a4c['params']['id']}})['then'](handleEntityNotFound(_0x875bc0,null))['then'](function(_0x28ba02){if(_0x28ba02){_0x5171c8[_0x1a1b('0x45')]=_[_0x1a1b('0x47')](db[_0x1a1b('0x72')]['rawAttributes']);_0x5171c8['query']=_[_0x1a1b('0x47')](_0x6e2a4c[_0x1a1b('0x46')]);_0x5171c8[_0x1a1b('0x48')]=_[_0x1a1b('0x4a')](_0x5171c8[_0x1a1b('0x45')],_0x5171c8[_0x1a1b('0x46')]);_0x334c0e[_0x1a1b('0x49')]=_[_0x1a1b('0x4a')](_0x5171c8['model'],qs['fields'](_0x6e2a4c[_0x1a1b('0x46')][_0x1a1b('0x4b')]));_0x334c0e[_0x1a1b('0x49')]=_0x334c0e[_0x1a1b('0x49')]['length']?_0x334c0e[_0x1a1b('0x49')]:_0x5171c8[_0x1a1b('0x45')];if(!_0x6e2a4c[_0x1a1b('0x46')]['hasOwnProperty'](_0x1a1b('0x6e'))){_0x334c0e[_0x1a1b('0x31')]=qs['limit'](_0x6e2a4c[_0x1a1b('0x46')][_0x1a1b('0x31')]);_0x334c0e['offset']=qs[_0x1a1b('0x30')](_0x6e2a4c[_0x1a1b('0x46')]['offset']);}_0x334c0e[_0x1a1b('0x4e')]=qs[_0x1a1b('0x4f')](_0x6e2a4c[_0x1a1b('0x46')][_0x1a1b('0x4f')]);_0x334c0e[_0x1a1b('0x52')]=qs[_0x1a1b('0x48')](_[_0x1a1b('0x50')](_0x6e2a4c['query'],_0x5171c8[_0x1a1b('0x48')]));_0x334c0e[_0x1a1b('0x52')][_0x1a1b('0x6a')]=_0x28ba02['id'];if(_0x6e2a4c[_0x1a1b('0x46')][_0x1a1b('0x51')]){_0x334c0e[_0x1a1b('0x52')]=_[_0x1a1b('0x53')](_0x334c0e[_0x1a1b('0x52')],{'$or':_[_0x1a1b('0x41')](_0x334c0e['attributes'],function(_0x2d9a46){var _0x28df1d={};_0x28df1d[_0x2d9a46]={'$like':'%'+_0x6e2a4c[_0x1a1b('0x46')][_0x1a1b('0x51')]+'%'};return _0x28df1d;})});}_0x334c0e=_[_0x1a1b('0x53')]({},_0x334c0e,_0x6e2a4c[_0x1a1b('0x54')]);return db[_0x1a1b('0x72')]['count']({'where':_0x334c0e[_0x1a1b('0x52')]})['then'](function(_0x5c305f){_0x329743[_0x1a1b('0x33')]=_0x5c305f;if(_0x6e2a4c['query'][_0x1a1b('0x55')]){_0x334c0e['include']=[{'all':!![]}];}return db[_0x1a1b('0x72')]['findAll'](_0x334c0e);})[_0x1a1b('0x22')](function(_0x3fd0d9){_0x329743[_0x1a1b('0x59')]=_0x3fd0d9;return _0x329743;});}})[_0x1a1b('0x22')](respondWithFilteredResult(_0x875bc0,_0x334c0e))[_0x1a1b('0x2c')](handleError(_0x875bc0,null));};exports['removeAnswers']=function(_0x580272,_0x492209,_0x51f75d){return db[_0x1a1b('0x57')][_0x1a1b('0x5c')]({'where':{'id':_0x580272[_0x1a1b('0x5b')]['id']}})[_0x1a1b('0x22')](handleEntityNotFound(_0x492209,null))[_0x1a1b('0x22')](function(_0x404cff){if(_0x404cff){return _0x404cff[_0x1a1b('0x74')](_0x580272['query']['ids']);}})[_0x1a1b('0x22')](respondWithStatusCode(_0x492209,null))['catch'](handleError(_0x492209,null));};exports['notify']=function(_0x5790a7,_0x2f78b3,_0x36954f){var _0x1ac1fd={'body':_0x5790a7['body'],'channel':_0x1a1b('0x75')};var _0x467be2=[];var _0xcee7ae=[];var _0x167382={};var _0x103251=![];return db[_0x1a1b('0x76')]['describe']()[_0x1a1b('0x22')](function(_0x415e38){if(!_0x415e38){throw new db['Sequelize'][(_0x1a1b('0x77'))](_0x1a1b('0x78'));}_0x467be2=_[_0x1a1b('0x79')](_[_0x1a1b('0x47')](_0x415e38),[_0x1a1b('0x7a'),_0x1a1b('0x7b')]);_0xcee7ae=_[_0x1a1b('0x79')](_['keys'](_0x415e38),[_0x1a1b('0x7a'),_0x1a1b('0x7b'),_0x1a1b('0x7c'),_0x1a1b('0x7d')]);if(_0x5790a7[_0x1a1b('0x66')]['id']){delete _0x5790a7[_0x1a1b('0x66')]['id'];}if(_[_0x1a1b('0x7e')](_0x5790a7['body']['from'])){throw new db[(_0x1a1b('0x7f'))][(_0x1a1b('0x77'))](_0x1a1b('0x80'));}if(_[_0x1a1b('0x7e')](_0x5790a7[_0x1a1b('0x66')][_0x1a1b('0x66')])||_0x5790a7[_0x1a1b('0x66')]['body']===''){throw new db[(_0x1a1b('0x7f'))][(_0x1a1b('0x77'))](_0x1a1b('0x81'));}if(_[_0x1a1b('0x7e')](_0x5790a7[_0x1a1b('0x66')][_0x1a1b('0x82')])){throw new db[(_0x1a1b('0x7f'))]['ValidationError'](_0x1a1b('0x83')+_0xcee7ae);}if(!_['includes'](_0xcee7ae,_0x5790a7[_0x1a1b('0x66')][_0x1a1b('0x82')])){throw new db[(_0x1a1b('0x7f'))]['ValidationError'](_0x1a1b('0x84')+_0xcee7ae);}_0x167382[_0x5790a7[_0x1a1b('0x66')][_0x1a1b('0x82')]]=_0x5790a7[_0x1a1b('0x66')][_0x1a1b('0x85')];})[_0x1a1b('0x22')](function(){return db[_0x1a1b('0x57')][_0x1a1b('0x5c')]({'where':{'id':_0x5790a7['params']['id']},'include':[{'model':db[_0x1a1b('0x86')],'as':_0x1a1b('0x87'),'include':[{'model':db[_0x1a1b('0x76')],'as':'Contacts','where':_0x167382,'limit':0x1,'order':[[_0x1a1b('0x7b'),_0x1a1b('0x88')]]}]},{'model':db['OpenchannelApplication'],'as':_0x1a1b('0x89')}]});})[_0x1a1b('0x22')](handleEntityNotFound(_0x2f78b3,null))[_0x1a1b('0x22')](function(_0x1aab02){if(_0x1aab02&&_0x1aab02[_0x1a1b('0x87')]){_0x1ac1fd[_0x1a1b('0x8a')]=_0x1aab02;_0x1ac1fd[_0x1a1b('0x8b')]=_0x1aab02[_0x1a1b('0x89')];_0x1ac1fd[_0x1a1b('0x8c')]=_0x1aab02[_0x1a1b('0x87')];_0x1ac1fd[_0x1a1b('0x8b')]=_['orderBy'](_0x1ac1fd[_0x1a1b('0x8b')],[_0x1a1b('0x8d')],[_0x1a1b('0x8e')]);if(_0x1ac1fd[_0x1a1b('0x8a')][_0x1a1b('0x89')]){delete _0x1ac1fd[_0x1a1b('0x8a')][_0x1a1b('0x89')];}if(_0x1ac1fd[_0x1a1b('0x8a')]['List']&&_0x1ac1fd[_0x1a1b('0x8a')]['List'][_0x1a1b('0x8f')][_0x1a1b('0x4c')]){return _0x1ac1fd[_0x1a1b('0x8a')][_0x1a1b('0x87')]['Contacts'][0x0];}var _0x37b017=_[_0x1a1b('0x1a')](_0x5790a7[_0x1a1b('0x66')],{'firstName':_0x5790a7[_0x1a1b('0x66')][_0x1a1b('0x85')],'ListId':_0x1aab02['ListId']});_0x37b017[_0x5790a7[_0x1a1b('0x66')]['mapKey']]=_0x5790a7['body'][_0x1a1b('0x85')];return db[_0x1a1b('0x76')][_0x1a1b('0x5d')](_0x37b017,{'fields':_0x467be2,'raw':!![]});}})[_0x1a1b('0x22')](handleEntityNotFound(_0x2f78b3,null))['then'](function(_0x44c919){_0x1ac1fd[_0x1a1b('0x90')]=_0x44c919;if(_0x44c919){var _0x53e2da={'ContactId':_0x44c919['id'],'OpenchannelAccountId':_0x5790a7['params']['id'],'from':(_0x44c919['firstName']||'')+'\x20'+(_0x44c919[_0x1a1b('0x91')]||'')};var _0x4e7ab5={'OpenchannelAccountId':_0x5790a7[_0x1a1b('0x5b')]['id'],'closed':![]};if(_0x5790a7['body'][_0x1a1b('0x92')]){_0x4e7ab5[_0x1a1b('0x92')]=_0x5790a7[_0x1a1b('0x66')]['threadId'];return db[_0x1a1b('0x93')][_0x1a1b('0x5c')]({'where':_0x4e7ab5})[_0x1a1b('0x22')](function(_0x1484a0){if(_0x1484a0){return[_0x1484a0,![]];}_0x53e2da[_0x1a1b('0x92')]=_0x5790a7[_0x1a1b('0x66')][_0x1a1b('0x92')];_0x53e2da[_0x1a1b('0x94')]=_0x5790a7[_0x1a1b('0x66')][_0x1a1b('0x94')];return db[_0x1a1b('0x93')]['create'](_0x53e2da)[_0x1a1b('0x22')](function(_0x5e32cf){return[_0x5e32cf,!![]];});});}else{_0x4e7ab5[_0x1a1b('0x92')]=null;}_0x4e7ab5[_0x1a1b('0x95')]=_0x44c919['id'];return db[_0x1a1b('0x93')][_0x1a1b('0x5c')]({'where':_0x4e7ab5})[_0x1a1b('0x22')](function(_0x5d6fa7){if(_0x5d6fa7){return[_0x5d6fa7,![]];}return db[_0x1a1b('0x93')][_0x1a1b('0x5d')](_0x53e2da)[_0x1a1b('0x22')](function(_0x5ad708){return[_0x5ad708,!![]];});});}})[_0x1a1b('0x96')](function(_0x5ef33c,_0x1620a9){if(_0x5ef33c){_0x103251=_0x1620a9;if(!_0x1620a9){var _0x2b0a42={'from':(_0x1ac1fd['contact'][_0x1a1b('0x97')]||'')+'\x20'+(_0x1ac1fd[_0x1a1b('0x90')][_0x1a1b('0x91')]||'')};if(_0x5790a7[_0x1a1b('0x66')]['threadId']&&_0x5790a7[_0x1a1b('0x66')]['messageId']&&_0x5790a7[_0x1a1b('0x66')][_0x1a1b('0x92')]!=_0x5790a7[_0x1a1b('0x66')][_0x1a1b('0x98')]){_0x2b0a42['threadId']=_0x5790a7[_0x1a1b('0x66')][_0x1a1b('0x98')];}return _0x5ef33c[_0x1a1b('0x65')](_0x2b0a42);}else{return _0x5ef33c;}}})[_0x1a1b('0x22')](function(_0x14e07c){_0x1ac1fd['interaction']=_0x14e07c[_0x1a1b('0x5f')]({'plain':!![]});_0x1ac1fd[_0x1a1b('0x99')]['created']=_0x103251;if(_0x1ac1fd['interaction']['created']){if(_0x1ac1fd[_0x1a1b('0x8a')][_0x1a1b('0x9a')]){_0x1ac1fd[_0x1a1b('0x8b')][_0x1a1b('0x9b')]({'id':0x0,'priority':_0x1ac1fd[_0x1a1b('0x8b')]['length']+0x1,'app':'close','appdata':_0x1a1b('0x9c'),'interval':_0x1a1b('0x9d')});}}return db[_0x1a1b('0x9e')]['create']({'body':_0x5790a7[_0x1a1b('0x66')]['body'],'OpenchannelAccountId':_0x5790a7[_0x1a1b('0x5b')]['id'],'OpenchannelInteractionId':_0x14e07c['id'],'direction':'in','ContactId':_0x1ac1fd[_0x1a1b('0x90')]['id'],'AttachmentId':_0x5790a7['body']['AttachmentId']});})[_0x1a1b('0x22')](function(_0x383691){_0x1ac1fd[_0x1a1b('0x2a')]=_0x383691;if(_0x1ac1fd[_0x1a1b('0x99')][_0x1a1b('0x9f')]){return db[_0x1a1b('0xa0')][_0x1a1b('0x5c')]({'attributes':['id',_0x1a1b('0x3d')],'where':{'id':_0x1ac1fd['interaction'][_0x1a1b('0x9f')]}})[_0x1a1b('0x22')](function(_0x59c4d3){if(_0x59c4d3){_0x1ac1fd[_0x1a1b('0x8b')][_0x1a1b('0xa1')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x59c4d3[_0x1a1b('0x3d')]+','+(_0x1ac1fd[_0x1a1b('0x8a')][_0x1a1b('0xa2')]||0xa),'interval':_0x1a1b('0x9d')});_0x1ac1fd[_0x1a1b('0xa3')]=![];}return respondWithRpcPromise(_0x1a1b('0xa4'),_0x1a1b('0xa5'),_0x1ac1fd);});}return respondWithRpcPromise('Start','startRouting',_0x1ac1fd);})['then'](function(_0x2f7e06){respondWithRpcPromise(_0x1a1b('0xa6'),_0x1a1b('0xa6'),{'event':_0x1a1b('0xa7'),'message':_0x2f7e06},client9002);return _0x2f7e06;})[_0x1a1b('0x22')](respondWithResult(_0x2f78b3,null))[_0x1a1b('0x2c')](handleError(_0x2f78b3,null));};exports[_0x1a1b('0xa8')]=function(_0x1f5b96,_0x56e2f9,_0x5436ca){return db[_0x1a1b('0x57')][_0x1a1b('0x6d')]({'where':{'id':_0x1f5b96[_0x1a1b('0x5b')]['id']}})[_0x1a1b('0x22')](handleEntityNotFound(_0x56e2f9,null))['then'](function(_0x536268){if(_0x536268){return db[_0x1a1b('0xa9')][_0x1a1b('0xaa')](function(_0x2ab13){return db['OpenchannelApplication'][_0x1a1b('0x39')]({'where':{'OpenchannelAccountId':_0x1f5b96['params']['id']},'transaction':_0x2ab13})[_0x1a1b('0x22')](function(_0x8dd435){var _0x48324e=_[_0x1a1b('0x41')](_0x1f5b96[_0x1a1b('0x66')],function(_0x3932b5){_0x3932b5['OpenchannelAccountId']=_0x1f5b96[_0x1a1b('0x5b')]['id'];return _0x3932b5;});return db['OpenchannelApplication'][_0x1a1b('0xab')](_0x48324e,{'transaction':_0x2ab13});});})[_0x1a1b('0x22')](function(){return db['OpenchannelApplication'][_0x1a1b('0xac')]({'where':{'OpenchannelAccountId':_0x1f5b96[_0x1a1b('0x5b')]['id']},'order':_0x1a1b('0x8d')});});}})[_0x1a1b('0x22')](respondWithResult(_0x56e2f9,null))['catch'](handleError(_0x56e2f9,null));};exports[_0x1a1b('0xad')]=function(_0x21d4df,_0x18b587,_0x22559f){var _0x3421e3={};var _0x38d416={};var _0xbc988a;var _0x49456f;return db[_0x1a1b('0x57')][_0x1a1b('0x6d')]({'where':{'id':_0x21d4df['params']['id']}})[_0x1a1b('0x22')](handleEntityNotFound(_0x18b587,null))[_0x1a1b('0x22')](function(_0x488f15){if(_0x488f15){_0xbc988a=_0x488f15;_0x38d416[_0x1a1b('0x45')]=_[_0x1a1b('0x47')](db[_0x1a1b('0xae')][_0x1a1b('0x42')]);_0x38d416[_0x1a1b('0x46')]=_[_0x1a1b('0x47')](_0x21d4df[_0x1a1b('0x46')]);_0x38d416[_0x1a1b('0x48')]=_[_0x1a1b('0x4a')](_0x38d416[_0x1a1b('0x45')],_0x38d416['query']);_0x3421e3[_0x1a1b('0x49')]=_[_0x1a1b('0x4a')](_0x38d416[_0x1a1b('0x45')],qs['fields'](_0x21d4df['query'][_0x1a1b('0x4b')]));_0x3421e3[_0x1a1b('0x49')]=_0x3421e3[_0x1a1b('0x49')][_0x1a1b('0x4c')]?_0x3421e3[_0x1a1b('0x49')]:_0x38d416[_0x1a1b('0x45')];_0x3421e3[_0x1a1b('0x4e')]=qs['sort'](_0x21d4df[_0x1a1b('0x46')][_0x1a1b('0x4f')]);_0x3421e3['where']=qs[_0x1a1b('0x48')](_[_0x1a1b('0x50')](_0x21d4df[_0x1a1b('0x46')],_0x38d416[_0x1a1b('0x48')]));if(_0x21d4df[_0x1a1b('0x46')]['filter']){_0x3421e3[_0x1a1b('0x52')]=_[_0x1a1b('0x53')](_0x3421e3[_0x1a1b('0x52')],{'$or':_['map'](_0x3421e3[_0x1a1b('0x49')],function(_0xcfd713){var _0x379fa2={};_0x379fa2[_0xcfd713]={'$like':'%'+_0x21d4df[_0x1a1b('0x46')][_0x1a1b('0x51')]+'%'};return _0x379fa2;})});}_0x3421e3=_[_0x1a1b('0x53')]({},_0x3421e3,_0x21d4df[_0x1a1b('0x54')]);return _0xbc988a['getApplications'](_0x3421e3);}})[_0x1a1b('0x22')](function(_0x49eaa0){if(_0x49eaa0){_0x49456f=_0x49eaa0[_0x1a1b('0x4c')];if(!_0x21d4df['query'][_0x1a1b('0x4d')](_0x1a1b('0x6e'))){_0x3421e3[_0x1a1b('0x31')]=qs[_0x1a1b('0x31')](_0x21d4df[_0x1a1b('0x46')]['limit']);_0x3421e3[_0x1a1b('0x30')]=qs[_0x1a1b('0x30')](_0x21d4df[_0x1a1b('0x46')][_0x1a1b('0x30')]);}return _0xbc988a['getApplications'](_0x3421e3);}})[_0x1a1b('0x22')](function(_0x112746){if(_0x112746){return _0x112746?{'count':_0x49456f,'rows':_0x112746}:null;}})[_0x1a1b('0x22')](respondWithResult(_0x18b587,null))[_0x1a1b('0x2c')](handleError(_0x18b587,null));};exports[_0x1a1b('0xaf')]=function(_0x436237,_0x1adc19,_0x120f59){var _0x10ec71={'raw':![],'where':{}};var _0x22ebdf={};var _0x2c28d0={'count':0x0,'rows':[]};return db[_0x1a1b('0x57')][_0x1a1b('0x6d')]({'where':{'id':_0x436237[_0x1a1b('0x5b')]['id']}})[_0x1a1b('0x22')](handleEntityNotFound(_0x1adc19,null))[_0x1a1b('0x22')](function(_0x451460){if(_0x451460){_0x22ebdf[_0x1a1b('0x45')]=_[_0x1a1b('0x47')](db[_0x1a1b('0x93')][_0x1a1b('0x42')]);_0x22ebdf['query']=_['keys'](_0x436237[_0x1a1b('0x46')]);_0x22ebdf[_0x1a1b('0x48')]=_[_0x1a1b('0x4a')](_0x22ebdf['model'],_0x22ebdf['query']);_0x10ec71[_0x1a1b('0x49')]=_[_0x1a1b('0x4a')](_0x22ebdf[_0x1a1b('0x45')],qs['fields'](_0x436237['query']['fields']));_0x10ec71[_0x1a1b('0x49')]=_0x10ec71['attributes'][_0x1a1b('0x4c')]?_0x10ec71[_0x1a1b('0x49')]:_0x22ebdf[_0x1a1b('0x45')];if(!_0x436237[_0x1a1b('0x46')][_0x1a1b('0x4d')]('nolimit')){_0x10ec71[_0x1a1b('0x31')]=qs[_0x1a1b('0x31')](_0x436237[_0x1a1b('0x46')][_0x1a1b('0x31')]);_0x10ec71[_0x1a1b('0x30')]=qs['offset'](_0x436237[_0x1a1b('0x46')][_0x1a1b('0x30')]);}_0x10ec71[_0x1a1b('0x4e')]=qs[_0x1a1b('0x4f')](_0x436237[_0x1a1b('0x46')][_0x1a1b('0x4f')]);_0x10ec71[_0x1a1b('0x52')]=qs[_0x1a1b('0x48')](_[_0x1a1b('0x50')](_0x436237[_0x1a1b('0x46')],_0x22ebdf[_0x1a1b('0x48')]));_0x10ec71['where']['OpenchannelAccountId']=_0x451460['id'];if(_0x436237[_0x1a1b('0x46')][_0x1a1b('0x51')]){_0x10ec71['where']=_[_0x1a1b('0x53')](_0x10ec71['where'],{'$or':_[_0x1a1b('0x41')](_0x10ec71[_0x1a1b('0x49')],function(_0x5b0de2){var _0x24f5e5={};_0x24f5e5[_0x5b0de2]={'$like':'%'+_0x436237['query'][_0x1a1b('0x51')]+'%'};return _0x24f5e5;})});}_0x10ec71=_['merge']({},_0x10ec71,_0x436237[_0x1a1b('0x54')]);return db[_0x1a1b('0x93')][_0x1a1b('0x33')]({'where':_0x10ec71['where']})[_0x1a1b('0x22')](function(_0xf4c73d){_0x2c28d0[_0x1a1b('0x33')]=_0xf4c73d;if(_0x436237['query'][_0x1a1b('0x55')]){_0x10ec71['include']=[{'model':db[_0x1a1b('0x76')],'as':'Contact','required':![]},{'model':db[_0x1a1b('0xa0')],'as':_0x1a1b('0xb0'),'attributes':[_0x1a1b('0x3d'),_0x1a1b('0xb1'),'internal'],'required':![]},{'model':db[_0x1a1b('0xb2')],'as':'Tags','attributes':['id',_0x1a1b('0x3d'),_0x1a1b('0xb3')],'where':_0x436237[_0x1a1b('0x46')]['tag']?{'id':_0x436237['query'][_0x1a1b('0xb4')]}:undefined,'required':_0x436237[_0x1a1b('0x46')][_0x1a1b('0xb4')]?!![]:![]}];}return db[_0x1a1b('0x93')][_0x1a1b('0x58')](_0x10ec71);})[_0x1a1b('0x22')](function(_0x31ec9c){_0x2c28d0[_0x1a1b('0x59')]=_0x31ec9c;return _0x2c28d0;});}})[_0x1a1b('0x22')](respondWithFilteredResult(_0x1adc19,_0x10ec71))[_0x1a1b('0x2c')](handleError(_0x1adc19,null));};exports[_0x1a1b('0xb5')]=function(_0x57be4a,_0x2d915d,_0x23b151){return db['OpenchannelAccount'][_0x1a1b('0x5c')]({'where':{'id':_0x57be4a[_0x1a1b('0x5b')]['id']}})[_0x1a1b('0x22')](handleEntityNotFound(_0x2d915d,null))[_0x1a1b('0x22')](function(_0xe618a){if(_0xe618a){return _0xe618a[_0x1a1b('0xb5')](_0x57be4a[_0x1a1b('0x66')][_0x1a1b('0x70')],_[_0x1a1b('0xb6')](_0x57be4a[_0x1a1b('0x66')],['ids','id'])||{})[_0x1a1b('0x96')](function(_0x2f6d7f){for(var _0x49801b=0x0;_0x49801b<_0x57be4a['body'][_0x1a1b('0x70')][_0x1a1b('0x4c')];_0x49801b+=0x1){socket[_0x1a1b('0xb7')](_0x1a1b('0xb8'),{'UserId':Number(_0x57be4a[_0x1a1b('0x66')]['ids'][_0x49801b]),'OpenchannelAccountId':Number(_0x57be4a[_0x1a1b('0x5b')]['id'])});}return _0x2f6d7f;});}})[_0x1a1b('0x22')](respondWithResult(_0x2d915d,null))[_0x1a1b('0x2c')](handleError(_0x2d915d,null));};exports[_0x1a1b('0xb9')]=function(_0x1b9fff,_0x385b13,_0x3825ff){return db[_0x1a1b('0x57')][_0x1a1b('0x5c')]({'where':{'id':_0x1b9fff[_0x1a1b('0x5b')]['id']}})[_0x1a1b('0x22')](handleEntityNotFound(_0x385b13,null))[_0x1a1b('0x22')](function(_0x569182){if(_0x569182){return _0x569182[_0x1a1b('0xb9')](_0x1b9fff[_0x1a1b('0x46')][_0x1a1b('0x70')])['then'](function(){if(_['isArray'](_0x1b9fff['query']['ids'])){for(var _0x4840e0=0x0;_0x4840e0<_0x1b9fff[_0x1a1b('0x46')][_0x1a1b('0x70')]['length'];_0x4840e0+=0x1){socket['emit'](_0x1a1b('0xba'),{'UserId':Number(_0x1b9fff['query'][_0x1a1b('0x70')][_0x4840e0]),'OpenchannelAccountId':Number(_0x1b9fff[_0x1a1b('0x5b')]['id'])});}}else{socket[_0x1a1b('0xb7')]('userOpenchannelAccount:remove',{'UserId':Number(_0x1b9fff['query'][_0x1a1b('0x70')]),'OpenchannelAccountId':Number(_0x1b9fff['params']['id'])});}});}})['then'](respondWithStatusCode(_0x385b13,null))[_0x1a1b('0x2c')](handleError(_0x385b13,null));};exports['getAgents']=function(_0x5d9862,_0x4c73f9,_0x408a04){var _0x27b2cd={};var _0x570e2b={};var _0x4b5b55;var _0x1a1a03;return db[_0x1a1b('0x57')][_0x1a1b('0x6d')]({'where':{'id':_0x5d9862[_0x1a1b('0x5b')]['id']}})[_0x1a1b('0x22')](handleEntityNotFound(_0x4c73f9,null))[_0x1a1b('0x22')](function(_0x4e4017){if(_0x4e4017){_0x4b5b55=_0x4e4017;_0x570e2b[_0x1a1b('0x45')]=_[_0x1a1b('0x47')](db[_0x1a1b('0xa0')][_0x1a1b('0x42')]);_0x570e2b['query']=_[_0x1a1b('0x47')](_0x5d9862[_0x1a1b('0x46')]);_0x570e2b[_0x1a1b('0x48')]=_[_0x1a1b('0x4a')](_0x570e2b[_0x1a1b('0x45')],_0x570e2b[_0x1a1b('0x46')]);_0x27b2cd[_0x1a1b('0x49')]=_[_0x1a1b('0x4a')](_0x570e2b[_0x1a1b('0x45')],qs[_0x1a1b('0x4b')](_0x5d9862[_0x1a1b('0x46')][_0x1a1b('0x4b')]));_0x27b2cd[_0x1a1b('0x49')]=_0x27b2cd[_0x1a1b('0x49')][_0x1a1b('0x4c')]?_0x27b2cd[_0x1a1b('0x49')]:_0x570e2b[_0x1a1b('0x45')];_0x27b2cd[_0x1a1b('0x4e')]=qs[_0x1a1b('0x4f')](_0x5d9862[_0x1a1b('0x46')][_0x1a1b('0x4f')]);_0x27b2cd[_0x1a1b('0x52')]=qs['filters'](_[_0x1a1b('0x50')](_0x5d9862[_0x1a1b('0x46')],_0x570e2b['filters']));if(_0x5d9862[_0x1a1b('0x46')][_0x1a1b('0x51')]){_0x27b2cd[_0x1a1b('0x52')]=_['merge'](_0x27b2cd[_0x1a1b('0x52')],{'$or':_['map'](_0x27b2cd[_0x1a1b('0x49')],function(_0x35376b){var _0x3b3a8a={};_0x3b3a8a[_0x35376b]={'$like':'%'+_0x5d9862[_0x1a1b('0x46')]['filter']+'%'};return _0x3b3a8a;})});}_0x27b2cd=_[_0x1a1b('0x53')]({},_0x27b2cd,_0x5d9862[_0x1a1b('0x54')]);return _0x4b5b55['getAgents'](_0x27b2cd);}})[_0x1a1b('0x22')](function(_0xec180f){if(_0xec180f){_0x1a1a03=_0xec180f['length'];if(!_0x5d9862[_0x1a1b('0x46')][_0x1a1b('0x4d')](_0x1a1b('0x6e'))){_0x27b2cd[_0x1a1b('0x31')]=qs[_0x1a1b('0x31')](_0x5d9862[_0x1a1b('0x46')][_0x1a1b('0x31')]);_0x27b2cd[_0x1a1b('0x30')]=qs[_0x1a1b('0x30')](_0x5d9862['query'][_0x1a1b('0x30')]);}return _0x4b5b55[_0x1a1b('0xbb')](_0x27b2cd);}})[_0x1a1b('0x22')](function(_0x25cd85){if(_0x25cd85){return _0x25cd85?{'count':_0x1a1a03,'rows':_0x25cd85}:null;}})[_0x1a1b('0x22')](respondWithResult(_0x4c73f9,null))[_0x1a1b('0x2c')](handleError(_0x4c73f9,null));};exports[_0x1a1b('0x3e')]=function(_0x4c2009,_0x55eacd,_0x4a5ab9){var _0x9303f4,_0x411618,_0x4a43e2;if(_[_0x1a1b('0x7e')](_0x4c2009[_0x1a1b('0x66')][_0x1a1b('0x66')])||_0x4c2009[_0x1a1b('0x66')]['body']===''){throw new db[(_0x1a1b('0x7f'))][(_0x1a1b('0x77'))](_0x1a1b('0x81'));}if(_[_0x1a1b('0x7e')](_0x4c2009[_0x1a1b('0x66')]['to'])){}_0x9303f4=_0x4c2009[_0x1a1b('0x66')]['to'];return db['OpenchannelAccount']['findOne']({'where':{'id':_0x4c2009['params']['id']}})['then'](handleEntityNotFound(_0x55eacd,null))[_0x1a1b('0x22')](function(_0x1a6204){if(_0x1a6204){return db[_0x1a1b('0x57')]['find']({'where':{'id':_0x1a6204['id']},'include':[{'model':db[_0x1a1b('0x86')],'as':_0x1a1b('0x87'),'include':[{'model':db['CmContact'],'as':_0x1a1b('0x8f'),'where':{[_0x1a6204['mapKey']]:_0x9303f4},'limit':0x1,'order':[[_0x1a1b('0x7b'),'DESC']]}]}]})['then'](handleEntityNotFound(_0x55eacd,null))[_0x1a1b('0x22')](function(_0x5d6b5e){if(_0x5d6b5e&&_0x5d6b5e[_0x1a1b('0x87')]){_0x411618=_0x5d6b5e[_0x1a1b('0x5f')]({'plain':!![]});if(_0x411618['List']&&_0x411618['List'][_0x1a1b('0x8f')][_0x1a1b('0x4c')]){return _0x411618['List'][_0x1a1b('0x8f')][0x0];}return db['CmContact'][_0x1a1b('0x5d')](_[_0x1a1b('0x1a')](_0x4c2009[_0x1a1b('0x66')],{'firstName':_0x9303f4,[_0x5d6b5e[_0x1a1b('0x82')]]:_0x9303f4,'phone':_0x9303f4,'ListId':_0x411618[_0x1a1b('0x7d')]}));}})[_0x1a1b('0x22')](handleEntityNotFound(_0x55eacd,null))[_0x1a1b('0x22')](function(_0x58911a){if(_0x58911a){_0x4a43e2=_0x58911a;return db[_0x1a1b('0x93')][_0x1a1b('0x5c')]({'where':{'ContactId':_0x4a43e2['id'],'closed':![],'OpenchannelAccountId':_0x411618['id']}})[_0x1a1b('0x22')](function(_0x11d97d){if(_0x11d97d){return[_0x11d97d,![]];}return db[_0x1a1b('0x93')][_0x1a1b('0x5d')]({'UserId':_0x4c2009['user']['id'],'ContactId':_0x4a43e2['id'],'OpenchannelAccountId':_0x411618['id'],'lastMsgDirection':_0x1a1b('0xbc'),'Messages':[_['merge'](_0x4c2009['body'],{'read':![],'body':_0x4c2009[_0x1a1b('0x66')][_0x1a1b('0x66')],'OpenchannelAccountId':_0x411618['id'],'UserId':_0x4c2009['user']['id'],'ContactId':_0x4a43e2['id']})]},{'include':[{'model':db[_0x1a1b('0x9e')],'as':_0x1a1b('0xbd')}]})['then'](function(_0x2514ad){return[_0x2514ad,!![]];});});}})[_0x1a1b('0x96')](function(_0x518620,_0x133208){if(_0x133208){return _0x518620;}return db['OpenchannelMessage']['create'](_[_0x1a1b('0x53')](_0x4c2009[_0x1a1b('0x66')],{'read':![],'body':_0x4c2009[_0x1a1b('0x66')][_0x1a1b('0x66')],'OpenchannelAccountId':_0x411618['id'],'OpenchannelInteractionId':_0x518620['id'],'UserId':_0x4c2009['user']['id'],'ContactId':_0x4a43e2['id']}))[_0x1a1b('0x22')](function(_0x4cdcf4){_0x518620[_0x1a1b('0xbe')][_0x1a1b('0xbd')]=[];_0x518620[_0x1a1b('0xbe')][_0x1a1b('0xbd')][_0x1a1b('0x9b')](_0x4cdcf4[_0x1a1b('0xbe')]);return _0x518620;});});}})[_0x1a1b('0x22')](respondWithResult(_0x55eacd,null))[_0x1a1b('0x2c')](handleError(_0x55eacd,null));};
\ No newline at end of file
+var _0x957f=['catch','sendStatus','status','json','offset','limit','count','set','Content-Range','reject','save','update','get','OpenchannelAccounts','UserProfileResource','destroy','end','name','send','index','mandatoryDispositionPause','map','OpenchannelAccount','fieldName','type','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','rows','show','params','Pause','rawAttributes','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','describe','addDisposition','OpenchannelAccountId','findOne','Disposition','findAll','removeDispositions','ids','addAnswer','CannedAnswer','order','removeAnswers','notify','openchannel','CmContact','Sequelize','ValidationError','no\x20available\x20attributes','difference','updatedAt','CompanyId','ListId','isNil','from','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','Contacts','DESC','Applications','account','List','orderBy','asc','firstName','lastName','threadId','externalUrl','ContactId','OpenchannelInteraction','spread','contact','messageId','interaction','created','applications','*,*,*,*','OpenchannelMessage','UserId','User','unshift','waitForTheAssignedAgent','Start','startRouting','EventManager','addApplications','sequelize','OpenchannelApplication','findAndCountAll','priority','getApplications','getInteractions','Contact','Owner','fullname','internal','Tag','color','tag','addAgents','omit','emit','userOpenchannelAccount:save','removeAgents','userOpenchannelAccount:remove','getAgents','out','dataValues','Messages','push','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','redis','defaults','socket.io-emitter','./openchannelAccount.socket','client','http','request','then','info','OpenchannelAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result'];(function(_0x22f85a,_0x195ed5){var _0xaa717=function(_0xe9828e){while(--_0xe9828e){_0x22f85a['push'](_0x22f85a['shift']());}};_0xaa717(++_0x195ed5);}(_0x957f,0x144));var _0xf957=function(_0x55f8b4,_0x43f30d){_0x55f8b4=_0x55f8b4-0x0;var _0x2475f9=_0x957f[_0x55f8b4];return _0x2475f9;};'use strict';var emlformat=require(_0xf957('0x0'));var rimraf=require(_0xf957('0x1'));var zipdir=require(_0xf957('0x2'));var jsonpatch=require(_0xf957('0x3'));var rp=require(_0xf957('0x4'));var moment=require(_0xf957('0x5'));var BPromise=require(_0xf957('0x6'));var Mustache=require('mustache');var util=require(_0xf957('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0xf957('0x8'));var ejs=require(_0xf957('0x9'));var fs=require('fs');var fs_extra=require(_0xf957('0xa'));var _=require(_0xf957('0xb'));var squel=require(_0xf957('0xc'));var crypto=require(_0xf957('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xf957('0xe'));var toCsv=require(_0xf957('0x8'));var querystring=require(_0xf957('0xf'));var Papa=require(_0xf957('0x10'));var Redis=require(_0xf957('0x11'));var authService=require(_0xf957('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xf957('0x13'));var hardwareService=require(_0xf957('0x14'));var logger=require('../../config/logger')(_0xf957('0x15'));var utils=require(_0xf957('0x16'));var config=require(_0xf957('0x17'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0xf957('0x18')]=_[_0xf957('0x19')](config[_0xf957('0x18')],{'host':'localhost','port':0x18eb});var socket=require(_0xf957('0x1a'))(new Redis(config[_0xf957('0x18')]));require(_0xf957('0x1b'))['register'](socket);var jayson=require('jayson/promise');var client=jayson[_0xf957('0x1c')][_0xf957('0x1d')]({'port':0x232c});var client9002=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0xa4de2,_0x12407c,_0x5f57ef,_0x123c9b){return new BPromise(function(_0x97fc3e,_0x28bbd8){var _0x2b2a0f=_0x123c9b||client;return _0x2b2a0f[_0xf957('0x1e')](_0xa4de2,_0x5f57ef)[_0xf957('0x1f')](function(_0x54337b){logger[_0xf957('0x20')](_0xf957('0x21'),_0x12407c,_0xf957('0x22'));logger[_0xf957('0x23')]('OpenchannelAccount,\x20%s,\x20%s,\x20%s',_0x12407c,'request\x20sent',JSON[_0xf957('0x24')](_0x54337b));if(_0x54337b[_0xf957('0x25')]){if(_0x54337b[_0xf957('0x25')]['code']===0x1f4){logger[_0xf957('0x25')](_0xf957('0x21'),_0x12407c,_0x54337b['error'][_0xf957('0x26')]);return _0x28bbd8(_0x54337b[_0xf957('0x25')][_0xf957('0x26')]);}logger[_0xf957('0x25')]('OpenchannelAccount,\x20%s,\x20%s',_0x12407c,_0x54337b[_0xf957('0x25')][_0xf957('0x26')]);return _0x97fc3e(_0x54337b['error'][_0xf957('0x26')]);}else{logger[_0xf957('0x20')]('OpenchannelAccount,\x20%s,\x20%s',_0x12407c,_0xf957('0x22'));_0x97fc3e(_0x54337b[_0xf957('0x27')]['message']);}})[_0xf957('0x28')](function(_0x5b4787){logger['error'](_0xf957('0x21'),_0x12407c,_0x5b4787);_0x28bbd8(_0x5b4787);});});}function respondWithStatusCode(_0x4bcb81,_0x5425bc){_0x5425bc=_0x5425bc||0xcc;return function(_0x170e8d){if(_0x170e8d){return _0x4bcb81[_0xf957('0x29')](_0x5425bc);}return _0x4bcb81[_0xf957('0x2a')](_0x5425bc)['end']();};}function respondWithResult(_0x463262,_0x3e904e){_0x3e904e=_0x3e904e||0xc8;return function(_0x42d1b8){if(_0x42d1b8){return _0x463262[_0xf957('0x2a')](_0x3e904e)[_0xf957('0x2b')](_0x42d1b8);}};}function respondWithFilteredResult(_0x4f46d5,_0x1527ac){return function(_0x1ef86a){if(_0x1ef86a){var _0x9a0813=typeof _0x1527ac[_0xf957('0x2c')]==='undefined'&&typeof _0x1527ac[_0xf957('0x2d')]==='undefined';var _0x2abacd=_0x1ef86a['count'];var _0x1dfc1f=_0x9a0813?0x0:_0x1527ac[_0xf957('0x2c')];var _0x448596=_0x9a0813?_0x1ef86a[_0xf957('0x2e')]:_0x1527ac[_0xf957('0x2c')]+_0x1527ac[_0xf957('0x2d')];var _0x114ae9;if(_0x448596>=_0x2abacd){_0x448596=_0x2abacd;_0x114ae9=0xc8;}else{_0x114ae9=0xce;}_0x4f46d5[_0xf957('0x2a')](_0x114ae9);return _0x4f46d5[_0xf957('0x2f')](_0xf957('0x30'),_0x1dfc1f+'-'+_0x448596+'/'+_0x2abacd)[_0xf957('0x2b')](_0x1ef86a);}return null;};}function patchUpdates(_0x5c1f75){return function(_0x1cf73b){try{jsonpatch['apply'](_0x1cf73b,_0x5c1f75,!![]);}catch(_0x1c89ad){return BPromise[_0xf957('0x31')](_0x1c89ad);}return _0x1cf73b[_0xf957('0x32')]();};}function saveUpdates(_0x5d4b9c,_0x786494){return function(_0x845715){if(_0x845715){return _0x845715[_0xf957('0x33')](_0x5d4b9c)[_0xf957('0x1f')](function(_0x2f7657){return _0x2f7657;});}return null;};}function removeEntity(_0xcc05be,_0xcb4216){return function(_0x5ad2ed){if(_0x5ad2ed){return _0x5ad2ed['destroy']()['then'](function(){var _0x588b5a=_0x5ad2ed[_0xf957('0x34')]({'plain':!![]});var _0x2ea0bf=_0xf957('0x35');return db[_0xf957('0x36')][_0xf957('0x37')]({'where':{'type':_0x2ea0bf,'resourceId':_0x588b5a['id']}})['then'](function(){return _0x5ad2ed;});})[_0xf957('0x1f')](function(){_0xcc05be[_0xf957('0x2a')](0xcc)[_0xf957('0x38')]();});}};}function handleEntityNotFound(_0x33d500,_0x534932){return function(_0x5c2135){if(!_0x5c2135){_0x33d500[_0xf957('0x29')](0x194);}return _0x5c2135;};}function handleError(_0x11c935,_0x4e06a6){_0x4e06a6=_0x4e06a6||0x1f4;return function(_0x544539){logger['error'](_0x544539['stack']);if(_0x544539[_0xf957('0x39')]){delete _0x544539[_0xf957('0x39')];}_0x11c935[_0xf957('0x2a')](_0x4e06a6)[_0xf957('0x3a')](_0x544539);};}exports[_0xf957('0x3b')]=function(_0x4ca332,_0x239635){var _0x2ef6ec={'include':[{'model':db['Pause'],'as':_0xf957('0x3c')}]},_0x5bad0c={},_0x5d8581={'count':0x0,'rows':[]};var _0x55a504=_[_0xf957('0x3d')](db[_0xf957('0x3e')]['rawAttributes'],function(_0x4205fe){return{'name':_0x4205fe[_0xf957('0x3f')],'type':_0x4205fe[_0xf957('0x40')]['key']};});_0x5bad0c[_0xf957('0x41')]=_[_0xf957('0x3d')](_0x55a504,_0xf957('0x39'));_0x5bad0c[_0xf957('0x42')]=_[_0xf957('0x43')](_0x4ca332['query']);_0x5bad0c[_0xf957('0x44')]=_[_0xf957('0x45')](_0x5bad0c[_0xf957('0x41')],_0x5bad0c['query']);_0x2ef6ec['attributes']=_[_0xf957('0x45')](_0x5bad0c['model'],qs[_0xf957('0x46')](_0x4ca332[_0xf957('0x42')][_0xf957('0x46')]));_0x2ef6ec[_0xf957('0x47')]=_0x2ef6ec[_0xf957('0x47')][_0xf957('0x48')]?_0x2ef6ec[_0xf957('0x47')]:_0x5bad0c[_0xf957('0x41')];if(!_0x4ca332[_0xf957('0x42')][_0xf957('0x49')](_0xf957('0x4a'))){_0x2ef6ec[_0xf957('0x2d')]=qs[_0xf957('0x2d')](_0x4ca332[_0xf957('0x42')][_0xf957('0x2d')]);_0x2ef6ec[_0xf957('0x2c')]=qs[_0xf957('0x2c')](_0x4ca332[_0xf957('0x42')][_0xf957('0x2c')]);}_0x2ef6ec['order']=qs[_0xf957('0x4b')](_0x4ca332[_0xf957('0x42')][_0xf957('0x4b')]);_0x2ef6ec[_0xf957('0x4c')]=qs[_0xf957('0x44')](_[_0xf957('0x4d')](_0x4ca332[_0xf957('0x42')],_0x5bad0c[_0xf957('0x44')]),_0x55a504);if(_0x4ca332['query'][_0xf957('0x4e')]){_0x2ef6ec[_0xf957('0x4c')]=_['merge'](_0x2ef6ec['where'],{'$or':_[_0xf957('0x3d')](_0x55a504,function(_0x5c3203){if(_0x5c3203[_0xf957('0x40')]!==_0xf957('0x4f')){var _0x3b537f={};_0x3b537f[_0x5c3203[_0xf957('0x39')]]={'$like':'%'+_0x4ca332[_0xf957('0x42')][_0xf957('0x4e')]+'%'};return _0x3b537f;}})});}_0x2ef6ec=_[_0xf957('0x50')]({},_0x2ef6ec,_0x4ca332[_0xf957('0x51')]);var _0x2f59a6={'where':_0x2ef6ec[_0xf957('0x4c')]};return db[_0xf957('0x3e')][_0xf957('0x2e')](_0x2f59a6)[_0xf957('0x1f')](function(_0x2de4c7){_0x5d8581[_0xf957('0x2e')]=_0x2de4c7;if(_0x4ca332[_0xf957('0x42')][_0xf957('0x52')]){_0x2ef6ec['include']=[{'all':!![]}];}return db['OpenchannelAccount']['findAll'](_0x2ef6ec);})[_0xf957('0x1f')](function(_0xdc6a50){_0x5d8581[_0xf957('0x53')]=_0xdc6a50;return _0x5d8581;})[_0xf957('0x1f')](respondWithFilteredResult(_0x239635,_0x2ef6ec))[_0xf957('0x28')](handleError(_0x239635,null));};exports[_0xf957('0x54')]=function(_0x423c0a,_0x18caaf){var _0xbe4c6={'raw':![],'where':{'id':_0x423c0a[_0xf957('0x55')]['id']},'include':[{'model':db[_0xf957('0x56')],'as':'mandatoryDispositionPause'}]},_0x2e1764={};_0x2e1764[_0xf957('0x41')]=_[_0xf957('0x43')](db['OpenchannelAccount'][_0xf957('0x57')]);_0x2e1764[_0xf957('0x42')]=_[_0xf957('0x43')](_0x423c0a[_0xf957('0x42')]);_0x2e1764[_0xf957('0x44')]=_[_0xf957('0x45')](_0x2e1764[_0xf957('0x41')],_0x2e1764[_0xf957('0x42')]);_0xbe4c6[_0xf957('0x47')]=_['intersection'](_0x2e1764[_0xf957('0x41')],qs[_0xf957('0x46')](_0x423c0a['query'][_0xf957('0x46')]));_0xbe4c6['attributes']=_0xbe4c6[_0xf957('0x47')]['length']?_0xbe4c6[_0xf957('0x47')]:_0x2e1764['model'];if(_0x423c0a[_0xf957('0x42')][_0xf957('0x52')]){_0xbe4c6[_0xf957('0x58')]=[{'all':!![]}];}_0xbe4c6=_[_0xf957('0x50')]({},_0xbe4c6,_0x423c0a[_0xf957('0x51')]);return db[_0xf957('0x3e')][_0xf957('0x59')](_0xbe4c6)['then'](handleEntityNotFound(_0x18caaf,null))[_0xf957('0x1f')](respondWithResult(_0x18caaf,null))[_0xf957('0x28')](handleError(_0x18caaf,null));};exports['create']=function(_0x20a80f,_0x51d466){return db[_0xf957('0x3e')][_0xf957('0x5a')](_0x20a80f['body'],{})['then'](function(_0x2aeccd){var _0x4e9c61=_0x20a80f[_0xf957('0x5b')][_0xf957('0x34')]({'plain':!![]});if(!_0x4e9c61)throw new Error(_0xf957('0x5c'));if(_0x4e9c61[_0xf957('0x5d')]===_0xf957('0x5b')){var _0x146cf2=_0x2aeccd['get']({'plain':!![]});var _0x46b487=_0xf957('0x35');return db[_0xf957('0x5e')][_0xf957('0x59')]({'where':{'name':_0x46b487,'userProfileId':_0x4e9c61[_0xf957('0x5f')]},'raw':!![]})[_0xf957('0x1f')](function(_0x3ca6ff){if(_0x3ca6ff&&_0x3ca6ff[_0xf957('0x60')]===0x0){return db[_0xf957('0x36')][_0xf957('0x5a')]({'name':_0x146cf2[_0xf957('0x39')],'resourceId':_0x146cf2['id'],'type':_0x3ca6ff[_0xf957('0x39')],'sectionId':_0x3ca6ff['id']},{})[_0xf957('0x1f')](function(){return _0x2aeccd;});}else{return _0x2aeccd;}})[_0xf957('0x28')](function(_0x37c720){logger[_0xf957('0x25')](_0xf957('0x61'),_0x37c720);throw _0x37c720;});}return _0x2aeccd;})['then'](respondWithResult(_0x51d466,0xc9))[_0xf957('0x28')](handleError(_0x51d466,null));};exports[_0xf957('0x33')]=function(_0x333707,_0x4001f7){if(_0x333707[_0xf957('0x62')]['id']){delete _0x333707['body']['id'];}return db['OpenchannelAccount'][_0xf957('0x59')]({'where':{'id':_0x333707[_0xf957('0x55')]['id']},'include':[{'model':db['Pause'],'as':_0xf957('0x3c')}]})[_0xf957('0x1f')](handleEntityNotFound(_0x4001f7,null))[_0xf957('0x1f')](saveUpdates(_0x333707['body'],null))[_0xf957('0x1f')](respondWithResult(_0x4001f7,null))[_0xf957('0x28')](handleError(_0x4001f7,null));};exports[_0xf957('0x37')]=function(_0x57548e,_0x1010e2){return db[_0xf957('0x3e')][_0xf957('0x59')]({'where':{'id':_0x57548e[_0xf957('0x55')]['id']}})['then'](handleEntityNotFound(_0x1010e2,null))[_0xf957('0x1f')](removeEntity(_0x1010e2,null))[_0xf957('0x28')](handleError(_0x1010e2,null));};exports[_0xf957('0x63')]=function(_0x299136,_0x15ca66){return db[_0xf957('0x3e')]['describe']()[_0xf957('0x1f')](respondWithResult(_0x15ca66,null))['catch'](handleError(_0x15ca66,null));};exports[_0xf957('0x64')]=function(_0x4caace,_0x1bfc1b,_0x2fb4e7){if(_0x4caace['body']['id']){delete _0x4caace['body']['id'];}return db[_0xf957('0x3e')][_0xf957('0x59')]({'where':{'id':_0x4caace[_0xf957('0x55')]['id']}})[_0xf957('0x1f')](handleEntityNotFound(_0x1bfc1b,null))['then'](function(_0x367c51){if(_0x367c51){_0x4caace[_0xf957('0x62')][_0xf957('0x65')]=_0x367c51['id'];return db['Disposition'][_0xf957('0x5a')](_0x4caace['body']);}})[_0xf957('0x1f')](respondWithResult(_0x1bfc1b,null))['catch'](handleError(_0x1bfc1b,null));};exports['getDispositions']=function(_0x5f1f63,_0x4ac392,_0x5e8927){var _0x57a026={'raw':![],'where':{}};var _0x3a7576={};var _0x1366e7={'count':0x0,'rows':[]};return db['OpenchannelAccount'][_0xf957('0x66')]({'where':{'id':_0x5f1f63[_0xf957('0x55')]['id']}})[_0xf957('0x1f')](handleEntityNotFound(_0x4ac392,null))['then'](function(_0x3ad049){if(_0x3ad049){_0x3a7576['model']=_[_0xf957('0x43')](db[_0xf957('0x67')][_0xf957('0x57')]);_0x3a7576[_0xf957('0x42')]=_[_0xf957('0x43')](_0x5f1f63[_0xf957('0x42')]);_0x3a7576['filters']=_[_0xf957('0x45')](_0x3a7576[_0xf957('0x41')],_0x3a7576[_0xf957('0x42')]);_0x57a026['attributes']=_[_0xf957('0x45')](_0x3a7576['model'],qs[_0xf957('0x46')](_0x5f1f63[_0xf957('0x42')][_0xf957('0x46')]));_0x57a026[_0xf957('0x47')]=_0x57a026['attributes'][_0xf957('0x48')]?_0x57a026['attributes']:_0x3a7576[_0xf957('0x41')];if(!_0x5f1f63[_0xf957('0x42')]['hasOwnProperty']('nolimit')){_0x57a026[_0xf957('0x2d')]=qs['limit'](_0x5f1f63[_0xf957('0x42')][_0xf957('0x2d')]);_0x57a026[_0xf957('0x2c')]=qs['offset'](_0x5f1f63['query']['offset']);}_0x57a026['order']=qs[_0xf957('0x4b')](_0x5f1f63[_0xf957('0x42')]['sort']);_0x57a026[_0xf957('0x4c')]=qs[_0xf957('0x44')](_[_0xf957('0x4d')](_0x5f1f63['query'],_0x3a7576[_0xf957('0x44')]));_0x57a026['where']['OpenchannelAccountId']=_0x3ad049['id'];if(_0x5f1f63['query'][_0xf957('0x4e')]){_0x57a026['where']=_['merge'](_0x57a026['where'],{'$or':_['map'](_0x57a026[_0xf957('0x47')],function(_0x1600e9){var _0x3e7522={};_0x3e7522[_0x1600e9]={'$like':'%'+_0x5f1f63[_0xf957('0x42')]['filter']+'%'};return _0x3e7522;})});}_0x57a026=_[_0xf957('0x50')]({},_0x57a026,_0x5f1f63[_0xf957('0x51')]);return db[_0xf957('0x67')][_0xf957('0x2e')]({'where':_0x57a026[_0xf957('0x4c')]})['then'](function(_0x36dd03){_0x1366e7[_0xf957('0x2e')]=_0x36dd03;if(_0x5f1f63[_0xf957('0x42')][_0xf957('0x52')]){_0x57a026[_0xf957('0x58')]=[{'all':!![]}];}return db[_0xf957('0x67')][_0xf957('0x68')](_0x57a026);})[_0xf957('0x1f')](function(_0x3beace){_0x1366e7['rows']=_0x3beace;return _0x1366e7;});}})[_0xf957('0x1f')](respondWithFilteredResult(_0x4ac392,_0x57a026))[_0xf957('0x28')](handleError(_0x4ac392,null));};exports[_0xf957('0x69')]=function(_0x156053,_0x2c1967,_0x1285a8){return db[_0xf957('0x3e')]['find']({'where':{'id':_0x156053[_0xf957('0x55')]['id']}})[_0xf957('0x1f')](handleEntityNotFound(_0x2c1967,null))['then'](function(_0x1050ea){if(_0x1050ea){return _0x1050ea[_0xf957('0x69')](_0x156053[_0xf957('0x42')][_0xf957('0x6a')]);}})[_0xf957('0x1f')](respondWithStatusCode(_0x2c1967,null))[_0xf957('0x28')](handleError(_0x2c1967,null));};exports[_0xf957('0x6b')]=function(_0x2d77b7,_0xca054b,_0x5b7cfd){if(_0x2d77b7[_0xf957('0x62')]['id']){delete _0x2d77b7['body']['id'];}return db['OpenchannelAccount'][_0xf957('0x59')]({'where':{'id':_0x2d77b7[_0xf957('0x55')]['id']}})[_0xf957('0x1f')](handleEntityNotFound(_0xca054b,null))[_0xf957('0x1f')](function(_0x2d0cd6){if(_0x2d0cd6){_0x2d77b7[_0xf957('0x62')][_0xf957('0x65')]=_0x2d0cd6['id'];return db[_0xf957('0x6c')][_0xf957('0x5a')](_0x2d77b7[_0xf957('0x62')]);}})[_0xf957('0x1f')](respondWithResult(_0xca054b,null))[_0xf957('0x28')](handleError(_0xca054b,null));};exports['getAnswers']=function(_0x11585e,_0x1fe08a,_0x57c9aa){var _0x2e120e={'raw':![],'where':{}};var _0x59729f={};var _0x8b482c={'count':0x0,'rows':[]};return db['OpenchannelAccount']['findOne']({'where':{'id':_0x11585e[_0xf957('0x55')]['id']}})[_0xf957('0x1f')](handleEntityNotFound(_0x1fe08a,null))[_0xf957('0x1f')](function(_0x299120){if(_0x299120){_0x59729f[_0xf957('0x41')]=_[_0xf957('0x43')](db[_0xf957('0x6c')][_0xf957('0x57')]);_0x59729f['query']=_[_0xf957('0x43')](_0x11585e['query']);_0x59729f['filters']=_[_0xf957('0x45')](_0x59729f[_0xf957('0x41')],_0x59729f['query']);_0x2e120e[_0xf957('0x47')]=_[_0xf957('0x45')](_0x59729f[_0xf957('0x41')],qs[_0xf957('0x46')](_0x11585e[_0xf957('0x42')][_0xf957('0x46')]));_0x2e120e['attributes']=_0x2e120e['attributes'][_0xf957('0x48')]?_0x2e120e[_0xf957('0x47')]:_0x59729f['model'];if(!_0x11585e[_0xf957('0x42')]['hasOwnProperty']('nolimit')){_0x2e120e['limit']=qs[_0xf957('0x2d')](_0x11585e[_0xf957('0x42')]['limit']);_0x2e120e[_0xf957('0x2c')]=qs[_0xf957('0x2c')](_0x11585e[_0xf957('0x42')][_0xf957('0x2c')]);}_0x2e120e[_0xf957('0x6d')]=qs[_0xf957('0x4b')](_0x11585e[_0xf957('0x42')][_0xf957('0x4b')]);_0x2e120e[_0xf957('0x4c')]=qs['filters'](_[_0xf957('0x4d')](_0x11585e[_0xf957('0x42')],_0x59729f['filters']));_0x2e120e['where']['OpenchannelAccountId']=_0x299120['id'];if(_0x11585e[_0xf957('0x42')][_0xf957('0x4e')]){_0x2e120e[_0xf957('0x4c')]=_[_0xf957('0x50')](_0x2e120e[_0xf957('0x4c')],{'$or':_['map'](_0x2e120e[_0xf957('0x47')],function(_0x212d86){var _0x509ade={};_0x509ade[_0x212d86]={'$like':'%'+_0x11585e[_0xf957('0x42')][_0xf957('0x4e')]+'%'};return _0x509ade;})});}_0x2e120e=_[_0xf957('0x50')]({},_0x2e120e,_0x11585e[_0xf957('0x51')]);return db[_0xf957('0x6c')]['count']({'where':_0x2e120e[_0xf957('0x4c')]})[_0xf957('0x1f')](function(_0x22a1ac){_0x8b482c[_0xf957('0x2e')]=_0x22a1ac;if(_0x11585e['query'][_0xf957('0x52')]){_0x2e120e[_0xf957('0x58')]=[{'all':!![]}];}return db[_0xf957('0x6c')][_0xf957('0x68')](_0x2e120e);})[_0xf957('0x1f')](function(_0xdd683d){_0x8b482c[_0xf957('0x53')]=_0xdd683d;return _0x8b482c;});}})['then'](respondWithFilteredResult(_0x1fe08a,_0x2e120e))[_0xf957('0x28')](handleError(_0x1fe08a,null));};exports[_0xf957('0x6e')]=function(_0x167884,_0x37fee8,_0x5a94fe){return db[_0xf957('0x3e')]['find']({'where':{'id':_0x167884[_0xf957('0x55')]['id']}})[_0xf957('0x1f')](handleEntityNotFound(_0x37fee8,null))[_0xf957('0x1f')](function(_0x57ff52){if(_0x57ff52){return _0x57ff52[_0xf957('0x6e')](_0x167884[_0xf957('0x42')][_0xf957('0x6a')]);}})[_0xf957('0x1f')](respondWithStatusCode(_0x37fee8,null))[_0xf957('0x28')](handleError(_0x37fee8,null));};exports[_0xf957('0x6f')]=function(_0x2c7e1d,_0x47eb8f,_0x4bd8fc){var _0x3f148a={'body':_0x2c7e1d[_0xf957('0x62')],'channel':_0xf957('0x70')};var _0x4485de=[];var _0x5ce2df=[];var _0x1c7678={};var _0x3175ac=![];return db[_0xf957('0x71')][_0xf957('0x63')]()['then'](function(_0x56041b){if(!_0x56041b){throw new db[(_0xf957('0x72'))][(_0xf957('0x73'))](_0xf957('0x74'));}_0x4485de=_[_0xf957('0x75')](_[_0xf957('0x43')](_0x56041b),['createdAt',_0xf957('0x76')]);_0x5ce2df=_[_0xf957('0x75')](_[_0xf957('0x43')](_0x56041b),['createdAt',_0xf957('0x76'),_0xf957('0x77'),_0xf957('0x78')]);if(_0x2c7e1d[_0xf957('0x62')]['id']){delete _0x2c7e1d['body']['id'];}if(_[_0xf957('0x79')](_0x2c7e1d[_0xf957('0x62')][_0xf957('0x7a')])){throw new db['Sequelize'][(_0xf957('0x73'))]('from\x20is\x20mandatory');}if(_[_0xf957('0x79')](_0x2c7e1d[_0xf957('0x62')][_0xf957('0x62')])||_0x2c7e1d[_0xf957('0x62')]['body']===''){throw new db['Sequelize'][(_0xf957('0x73'))](_0xf957('0x7b'));}if(_[_0xf957('0x79')](_0x2c7e1d['body'][_0xf957('0x7c')])){throw new db[(_0xf957('0x72'))][(_0xf957('0x73'))](_0xf957('0x7d')+_0x5ce2df);}if(!_[_0xf957('0x7e')](_0x5ce2df,_0x2c7e1d[_0xf957('0x62')][_0xf957('0x7c')])){throw new db[(_0xf957('0x72'))][(_0xf957('0x73'))](_0xf957('0x7f')+_0x5ce2df);}_0x1c7678[_0x2c7e1d[_0xf957('0x62')][_0xf957('0x7c')]]=_0x2c7e1d['body']['from'];})[_0xf957('0x1f')](function(){return db[_0xf957('0x3e')]['find']({'where':{'id':_0x2c7e1d[_0xf957('0x55')]['id']},'include':[{'model':db[_0xf957('0x80')],'as':'List','include':[{'model':db[_0xf957('0x71')],'as':_0xf957('0x81'),'where':_0x1c7678,'limit':0x1,'order':[[_0xf957('0x76'),_0xf957('0x82')]]}]},{'model':db['OpenchannelApplication'],'as':_0xf957('0x83')}]});})[_0xf957('0x1f')](handleEntityNotFound(_0x47eb8f,null))[_0xf957('0x1f')](function(_0x4e245e){if(_0x4e245e&&_0x4e245e['List']){_0x3f148a[_0xf957('0x84')]=_0x4e245e;_0x3f148a['applications']=_0x4e245e[_0xf957('0x83')];_0x3f148a['list']=_0x4e245e[_0xf957('0x85')];_0x3f148a['applications']=_[_0xf957('0x86')](_0x3f148a['applications'],['priority'],[_0xf957('0x87')]);if(_0x3f148a[_0xf957('0x84')][_0xf957('0x83')]){delete _0x3f148a[_0xf957('0x84')][_0xf957('0x83')];}if(_0x3f148a[_0xf957('0x84')][_0xf957('0x85')]&&_0x3f148a[_0xf957('0x84')]['List'][_0xf957('0x81')][_0xf957('0x48')]){return _0x3f148a[_0xf957('0x84')][_0xf957('0x85')][_0xf957('0x81')][0x0];}var _0x38ea38=_[_0xf957('0x19')](_0x2c7e1d['body'],{'firstName':_0x2c7e1d[_0xf957('0x62')]['from'],'ListId':_0x4e245e[_0xf957('0x78')]});_0x38ea38[_0x2c7e1d['body']['mapKey']]=_0x2c7e1d[_0xf957('0x62')][_0xf957('0x7a')];return db[_0xf957('0x71')][_0xf957('0x5a')](_0x38ea38,{'fields':_0x4485de,'raw':!![]});}})[_0xf957('0x1f')](handleEntityNotFound(_0x47eb8f,null))[_0xf957('0x1f')](function(_0x218174){_0x3f148a['contact']=_0x218174;if(_0x218174){var _0x5bde0a={'ContactId':_0x218174['id'],'OpenchannelAccountId':_0x2c7e1d['params']['id'],'from':(_0x218174[_0xf957('0x88')]||'')+'\x20'+(_0x218174[_0xf957('0x89')]||'')};var _0x280af5={'OpenchannelAccountId':_0x2c7e1d[_0xf957('0x55')]['id'],'closed':![]};if(_0x2c7e1d['body'][_0xf957('0x8a')]){_0x280af5[_0xf957('0x8a')]=_0x2c7e1d[_0xf957('0x62')][_0xf957('0x8a')];return db['OpenchannelInteraction']['find']({'where':_0x280af5})[_0xf957('0x1f')](function(_0x6b19cc){if(_0x6b19cc){return[_0x6b19cc,![]];}_0x5bde0a[_0xf957('0x8a')]=_0x2c7e1d['body'][_0xf957('0x8a')];_0x5bde0a[_0xf957('0x8b')]=_0x2c7e1d['body'][_0xf957('0x8b')];return db['OpenchannelInteraction'][_0xf957('0x5a')](_0x5bde0a)[_0xf957('0x1f')](function(_0x264dbb){return[_0x264dbb,!![]];});});}else{_0x280af5[_0xf957('0x8a')]=null;}_0x280af5[_0xf957('0x8c')]=_0x218174['id'];return db['OpenchannelInteraction']['find']({'where':_0x280af5})[_0xf957('0x1f')](function(_0x17eca4){if(_0x17eca4){return[_0x17eca4,![]];}return db[_0xf957('0x8d')][_0xf957('0x5a')](_0x5bde0a)[_0xf957('0x1f')](function(_0x38a1eb){return[_0x38a1eb,!![]];});});}})[_0xf957('0x8e')](function(_0x130ebd,_0x17c4a1){if(_0x130ebd){_0x3175ac=_0x17c4a1;if(!_0x17c4a1){var _0x553f68={'from':(_0x3f148a[_0xf957('0x8f')][_0xf957('0x88')]||'')+'\x20'+(_0x3f148a['contact'][_0xf957('0x89')]||'')};if(_0x2c7e1d[_0xf957('0x62')]['threadId']&&_0x2c7e1d[_0xf957('0x62')][_0xf957('0x90')]&&_0x2c7e1d[_0xf957('0x62')][_0xf957('0x8a')]!=_0x2c7e1d[_0xf957('0x62')][_0xf957('0x90')]){_0x553f68['threadId']=_0x2c7e1d[_0xf957('0x62')][_0xf957('0x90')];}return _0x130ebd[_0xf957('0x33')](_0x553f68);}else{return _0x130ebd;}}})[_0xf957('0x1f')](function(_0x12890b){_0x3f148a[_0xf957('0x91')]=_0x12890b[_0xf957('0x34')]({'plain':!![]});_0x3f148a[_0xf957('0x91')]['created']=_0x3175ac;if(_0x3f148a[_0xf957('0x91')][_0xf957('0x92')]){if(_0x3f148a[_0xf957('0x84')]['autoclose']){_0x3f148a[_0xf957('0x93')]['push']({'id':0x0,'priority':_0x3f148a[_0xf957('0x93')][_0xf957('0x48')]+0x1,'app':'close','appdata':'unmanaged','interval':_0xf957('0x94')});}}return db[_0xf957('0x95')][_0xf957('0x5a')]({'body':_0x2c7e1d['body'][_0xf957('0x62')],'OpenchannelAccountId':_0x2c7e1d['params']['id'],'OpenchannelInteractionId':_0x12890b['id'],'direction':'in','ContactId':_0x3f148a[_0xf957('0x8f')]['id'],'AttachmentId':_0x2c7e1d[_0xf957('0x62')]['AttachmentId']});})[_0xf957('0x1f')](function(_0x1fcce4){_0x3f148a[_0xf957('0x26')]=_0x1fcce4;if(_0x3f148a[_0xf957('0x91')][_0xf957('0x96')]){return db[_0xf957('0x97')][_0xf957('0x59')]({'attributes':['id',_0xf957('0x39')],'where':{'id':_0x3f148a[_0xf957('0x91')]['UserId']}})[_0xf957('0x1f')](function(_0x2004e4){if(_0x2004e4){_0x3f148a[_0xf957('0x93')][_0xf957('0x98')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x2004e4[_0xf957('0x39')]+','+(_0x3f148a[_0xf957('0x84')][_0xf957('0x99')]||0xa),'interval':_0xf957('0x94')});_0x3f148a['forcedOwnership']=![];}return respondWithRpcPromise('Start','startRouting',_0x3f148a);});}return respondWithRpcPromise(_0xf957('0x9a'),_0xf957('0x9b'),_0x3f148a);})[_0xf957('0x1f')](function(_0x4bb6df){respondWithRpcPromise(_0xf957('0x9c'),'EventManager',{'event':'notify','message':_0x4bb6df},client9002);return _0x4bb6df;})[_0xf957('0x1f')](respondWithResult(_0x47eb8f,null))[_0xf957('0x28')](handleError(_0x47eb8f,null));};exports[_0xf957('0x9d')]=function(_0x2a7689,_0x25f0ad,_0x1d22a5){return db['OpenchannelAccount']['findOne']({'where':{'id':_0x2a7689[_0xf957('0x55')]['id']}})['then'](handleEntityNotFound(_0x25f0ad,null))[_0xf957('0x1f')](function(_0x20bd10){if(_0x20bd10){return db[_0xf957('0x9e')]['transaction'](function(_0x3e295d){return db['OpenchannelApplication']['destroy']({'where':{'OpenchannelAccountId':_0x2a7689[_0xf957('0x55')]['id']},'transaction':_0x3e295d})[_0xf957('0x1f')](function(_0x2c5805){var _0x3601f4=_[_0xf957('0x3d')](_0x2a7689[_0xf957('0x62')],function(_0x5865a4){_0x5865a4['OpenchannelAccountId']=_0x2a7689[_0xf957('0x55')]['id'];return _0x5865a4;});return db[_0xf957('0x9f')]['bulkCreate'](_0x3601f4,{'transaction':_0x3e295d});});})['then'](function(){return db[_0xf957('0x9f')][_0xf957('0xa0')]({'where':{'OpenchannelAccountId':_0x2a7689['params']['id']},'order':_0xf957('0xa1')});});}})['then'](respondWithResult(_0x25f0ad,null))[_0xf957('0x28')](handleError(_0x25f0ad,null));};exports[_0xf957('0xa2')]=function(_0x3f9df2,_0x38cc97,_0x59d793){var _0x2e76b4={};var _0x412d50={};var _0x427d7c;var _0x163c1c;return db['OpenchannelAccount'][_0xf957('0x66')]({'where':{'id':_0x3f9df2[_0xf957('0x55')]['id']}})[_0xf957('0x1f')](handleEntityNotFound(_0x38cc97,null))['then'](function(_0x528218){if(_0x528218){_0x427d7c=_0x528218;_0x412d50[_0xf957('0x41')]=_[_0xf957('0x43')](db[_0xf957('0x9f')][_0xf957('0x57')]);_0x412d50['query']=_[_0xf957('0x43')](_0x3f9df2[_0xf957('0x42')]);_0x412d50[_0xf957('0x44')]=_[_0xf957('0x45')](_0x412d50[_0xf957('0x41')],_0x412d50['query']);_0x2e76b4[_0xf957('0x47')]=_[_0xf957('0x45')](_0x412d50[_0xf957('0x41')],qs[_0xf957('0x46')](_0x3f9df2[_0xf957('0x42')]['fields']));_0x2e76b4[_0xf957('0x47')]=_0x2e76b4['attributes'][_0xf957('0x48')]?_0x2e76b4[_0xf957('0x47')]:_0x412d50[_0xf957('0x41')];_0x2e76b4[_0xf957('0x6d')]=qs[_0xf957('0x4b')](_0x3f9df2['query']['sort']);_0x2e76b4[_0xf957('0x4c')]=qs[_0xf957('0x44')](_[_0xf957('0x4d')](_0x3f9df2[_0xf957('0x42')],_0x412d50[_0xf957('0x44')]));if(_0x3f9df2[_0xf957('0x42')][_0xf957('0x4e')]){_0x2e76b4['where']=_[_0xf957('0x50')](_0x2e76b4['where'],{'$or':_[_0xf957('0x3d')](_0x2e76b4[_0xf957('0x47')],function(_0x557d86){var _0x354696={};_0x354696[_0x557d86]={'$like':'%'+_0x3f9df2[_0xf957('0x42')][_0xf957('0x4e')]+'%'};return _0x354696;})});}_0x2e76b4=_[_0xf957('0x50')]({},_0x2e76b4,_0x3f9df2['options']);return _0x427d7c['getApplications'](_0x2e76b4);}})[_0xf957('0x1f')](function(_0x51d6ef){if(_0x51d6ef){_0x163c1c=_0x51d6ef[_0xf957('0x48')];if(!_0x3f9df2[_0xf957('0x42')][_0xf957('0x49')](_0xf957('0x4a'))){_0x2e76b4[_0xf957('0x2d')]=qs['limit'](_0x3f9df2[_0xf957('0x42')]['limit']);_0x2e76b4[_0xf957('0x2c')]=qs['offset'](_0x3f9df2[_0xf957('0x42')]['offset']);}return _0x427d7c[_0xf957('0xa2')](_0x2e76b4);}})['then'](function(_0x512422){if(_0x512422){return _0x512422?{'count':_0x163c1c,'rows':_0x512422}:null;}})[_0xf957('0x1f')](respondWithResult(_0x38cc97,null))[_0xf957('0x28')](handleError(_0x38cc97,null));};exports[_0xf957('0xa3')]=function(_0xcbd43,_0x67da94,_0x3648b4){var _0x2b0b41={'raw':![],'where':{}};var _0x3cb331={};var _0x37ca98={'count':0x0,'rows':[]};return db[_0xf957('0x3e')][_0xf957('0x66')]({'where':{'id':_0xcbd43[_0xf957('0x55')]['id']}})['then'](handleEntityNotFound(_0x67da94,null))['then'](function(_0x14a9fe){if(_0x14a9fe){_0x3cb331[_0xf957('0x41')]=_[_0xf957('0x43')](db[_0xf957('0x8d')]['rawAttributes']);_0x3cb331[_0xf957('0x42')]=_[_0xf957('0x43')](_0xcbd43[_0xf957('0x42')]);_0x3cb331[_0xf957('0x44')]=_['intersection'](_0x3cb331[_0xf957('0x41')],_0x3cb331[_0xf957('0x42')]);_0x2b0b41[_0xf957('0x47')]=_[_0xf957('0x45')](_0x3cb331[_0xf957('0x41')],qs['fields'](_0xcbd43[_0xf957('0x42')]['fields']));_0x2b0b41[_0xf957('0x47')]=_0x2b0b41['attributes']['length']?_0x2b0b41[_0xf957('0x47')]:_0x3cb331[_0xf957('0x41')];if(!_0xcbd43[_0xf957('0x42')][_0xf957('0x49')](_0xf957('0x4a'))){_0x2b0b41[_0xf957('0x2d')]=qs[_0xf957('0x2d')](_0xcbd43[_0xf957('0x42')][_0xf957('0x2d')]);_0x2b0b41['offset']=qs[_0xf957('0x2c')](_0xcbd43[_0xf957('0x42')][_0xf957('0x2c')]);}_0x2b0b41['order']=qs[_0xf957('0x4b')](_0xcbd43[_0xf957('0x42')][_0xf957('0x4b')]);_0x2b0b41['where']=qs[_0xf957('0x44')](_['pick'](_0xcbd43['query'],_0x3cb331[_0xf957('0x44')]));_0x2b0b41['where'][_0xf957('0x65')]=_0x14a9fe['id'];if(_0xcbd43[_0xf957('0x42')]['filter']){_0x2b0b41[_0xf957('0x4c')]=_[_0xf957('0x50')](_0x2b0b41['where'],{'$or':_[_0xf957('0x3d')](_0x2b0b41[_0xf957('0x47')],function(_0x266528){var _0x10175b={};_0x10175b[_0x266528]={'$like':'%'+_0xcbd43[_0xf957('0x42')][_0xf957('0x4e')]+'%'};return _0x10175b;})});}_0x2b0b41=_['merge']({},_0x2b0b41,_0xcbd43['options']);return db[_0xf957('0x8d')][_0xf957('0x2e')]({'where':_0x2b0b41[_0xf957('0x4c')]})[_0xf957('0x1f')](function(_0x597acc){_0x37ca98['count']=_0x597acc;if(_0xcbd43[_0xf957('0x42')]['includeAll']){_0x2b0b41['include']=[{'model':db[_0xf957('0x71')],'as':_0xf957('0xa4'),'required':![]},{'model':db[_0xf957('0x97')],'as':_0xf957('0xa5'),'attributes':[_0xf957('0x39'),_0xf957('0xa6'),_0xf957('0xa7')],'required':![]},{'model':db[_0xf957('0xa8')],'as':'Tags','attributes':['id',_0xf957('0x39'),_0xf957('0xa9')],'where':_0xcbd43[_0xf957('0x42')]['tag']?{'id':_0xcbd43[_0xf957('0x42')][_0xf957('0xaa')]}:undefined,'required':_0xcbd43[_0xf957('0x42')][_0xf957('0xaa')]?!![]:![]}];}return db[_0xf957('0x8d')][_0xf957('0x68')](_0x2b0b41);})['then'](function(_0x5da909){_0x37ca98[_0xf957('0x53')]=_0x5da909;return _0x37ca98;});}})['then'](respondWithFilteredResult(_0x67da94,_0x2b0b41))['catch'](handleError(_0x67da94,null));};exports[_0xf957('0xab')]=function(_0x56c519,_0x561f32,_0x1b1ada){return db[_0xf957('0x3e')][_0xf957('0x59')]({'where':{'id':_0x56c519[_0xf957('0x55')]['id']}})[_0xf957('0x1f')](handleEntityNotFound(_0x561f32,null))['then'](function(_0x25aa25){if(_0x25aa25){return _0x25aa25[_0xf957('0xab')](_0x56c519[_0xf957('0x62')]['ids'],_[_0xf957('0xac')](_0x56c519['body'],[_0xf957('0x6a'),'id'])||{})[_0xf957('0x8e')](function(_0x414b10){for(var _0x4b5bcf=0x0;_0x4b5bcf<_0x56c519[_0xf957('0x62')]['ids'][_0xf957('0x48')];_0x4b5bcf+=0x1){socket[_0xf957('0xad')](_0xf957('0xae'),{'UserId':Number(_0x56c519[_0xf957('0x62')][_0xf957('0x6a')][_0x4b5bcf]),'OpenchannelAccountId':Number(_0x56c519[_0xf957('0x55')]['id'])});}return _0x414b10;});}})[_0xf957('0x1f')](respondWithResult(_0x561f32,null))[_0xf957('0x28')](handleError(_0x561f32,null));};exports[_0xf957('0xaf')]=function(_0x1affad,_0xb58e14,_0x1cbaa6){return db[_0xf957('0x3e')][_0xf957('0x59')]({'where':{'id':_0x1affad['params']['id']}})[_0xf957('0x1f')](handleEntityNotFound(_0xb58e14,null))[_0xf957('0x1f')](function(_0x10cf21){if(_0x10cf21){return _0x10cf21[_0xf957('0xaf')](_0x1affad[_0xf957('0x42')][_0xf957('0x6a')])[_0xf957('0x1f')](function(){if(_['isArray'](_0x1affad['query'][_0xf957('0x6a')])){for(var _0x220ff5=0x0;_0x220ff5<_0x1affad[_0xf957('0x42')]['ids'][_0xf957('0x48')];_0x220ff5+=0x1){socket[_0xf957('0xad')](_0xf957('0xb0'),{'UserId':Number(_0x1affad['query'][_0xf957('0x6a')][_0x220ff5]),'OpenchannelAccountId':Number(_0x1affad[_0xf957('0x55')]['id'])});}}else{socket[_0xf957('0xad')]('userOpenchannelAccount:remove',{'UserId':Number(_0x1affad[_0xf957('0x42')][_0xf957('0x6a')]),'OpenchannelAccountId':Number(_0x1affad[_0xf957('0x55')]['id'])});}});}})[_0xf957('0x1f')](respondWithStatusCode(_0xb58e14,null))[_0xf957('0x28')](handleError(_0xb58e14,null));};exports[_0xf957('0xb1')]=function(_0x560988,_0x26a592,_0x584ae3){var _0x8286dd={};var _0x3edff0={};var _0x56489d;var _0x7a6556;return db['OpenchannelAccount'][_0xf957('0x66')]({'where':{'id':_0x560988[_0xf957('0x55')]['id']}})[_0xf957('0x1f')](handleEntityNotFound(_0x26a592,null))[_0xf957('0x1f')](function(_0x303d0b){if(_0x303d0b){_0x56489d=_0x303d0b;_0x3edff0['model']=_[_0xf957('0x43')](db[_0xf957('0x97')][_0xf957('0x57')]);_0x3edff0[_0xf957('0x42')]=_['keys'](_0x560988[_0xf957('0x42')]);_0x3edff0['filters']=_['intersection'](_0x3edff0['model'],_0x3edff0[_0xf957('0x42')]);_0x8286dd['attributes']=_[_0xf957('0x45')](_0x3edff0[_0xf957('0x41')],qs[_0xf957('0x46')](_0x560988['query'][_0xf957('0x46')]));_0x8286dd[_0xf957('0x47')]=_0x8286dd[_0xf957('0x47')][_0xf957('0x48')]?_0x8286dd[_0xf957('0x47')]:_0x3edff0[_0xf957('0x41')];_0x8286dd[_0xf957('0x6d')]=qs[_0xf957('0x4b')](_0x560988[_0xf957('0x42')]['sort']);_0x8286dd['where']=qs[_0xf957('0x44')](_[_0xf957('0x4d')](_0x560988[_0xf957('0x42')],_0x3edff0[_0xf957('0x44')]));if(_0x560988[_0xf957('0x42')]['filter']){_0x8286dd[_0xf957('0x4c')]=_['merge'](_0x8286dd[_0xf957('0x4c')],{'$or':_[_0xf957('0x3d')](_0x8286dd[_0xf957('0x47')],function(_0x23698f){var _0x449743={};_0x449743[_0x23698f]={'$like':'%'+_0x560988[_0xf957('0x42')][_0xf957('0x4e')]+'%'};return _0x449743;})});}_0x8286dd=_[_0xf957('0x50')]({},_0x8286dd,_0x560988['options']);return _0x56489d[_0xf957('0xb1')](_0x8286dd);}})[_0xf957('0x1f')](function(_0x2fd5b1){if(_0x2fd5b1){_0x7a6556=_0x2fd5b1[_0xf957('0x48')];if(!_0x560988[_0xf957('0x42')][_0xf957('0x49')]('nolimit')){_0x8286dd[_0xf957('0x2d')]=qs[_0xf957('0x2d')](_0x560988[_0xf957('0x42')][_0xf957('0x2d')]);_0x8286dd[_0xf957('0x2c')]=qs[_0xf957('0x2c')](_0x560988[_0xf957('0x42')][_0xf957('0x2c')]);}return _0x56489d[_0xf957('0xb1')](_0x8286dd);}})[_0xf957('0x1f')](function(_0xc602ff){if(_0xc602ff){return _0xc602ff?{'count':_0x7a6556,'rows':_0xc602ff}:null;}})[_0xf957('0x1f')](respondWithResult(_0x26a592,null))[_0xf957('0x28')](handleError(_0x26a592,null));};exports[_0xf957('0x3a')]=function(_0x345f73,_0x58e725,_0x1f246d){var _0x415726,_0x197849,_0x58b1e1;if(_[_0xf957('0x79')](_0x345f73['body'][_0xf957('0x62')])||_0x345f73[_0xf957('0x62')]['body']===''){throw new db[(_0xf957('0x72'))]['ValidationError'](_0xf957('0x7b'));}if(_[_0xf957('0x79')](_0x345f73[_0xf957('0x62')]['to'])){}_0x415726=_0x345f73[_0xf957('0x62')]['to'];return db[_0xf957('0x3e')]['findOne']({'where':{'id':_0x345f73[_0xf957('0x55')]['id']}})[_0xf957('0x1f')](handleEntityNotFound(_0x58e725,null))[_0xf957('0x1f')](function(_0x151c16){if(_0x151c16){return db['OpenchannelAccount'][_0xf957('0x59')]({'where':{'id':_0x151c16['id']},'include':[{'model':db[_0xf957('0x80')],'as':_0xf957('0x85'),'include':[{'model':db[_0xf957('0x71')],'as':_0xf957('0x81'),'where':{[_0x151c16[_0xf957('0x7c')]]:_0x415726},'limit':0x1,'order':[[_0xf957('0x76'),_0xf957('0x82')]]}]}]})['then'](handleEntityNotFound(_0x58e725,null))[_0xf957('0x1f')](function(_0x2f2fa8){if(_0x2f2fa8&&_0x2f2fa8[_0xf957('0x85')]){_0x197849=_0x2f2fa8[_0xf957('0x34')]({'plain':!![]});if(_0x197849[_0xf957('0x85')]&&_0x197849[_0xf957('0x85')]['Contacts'][_0xf957('0x48')]){return _0x197849[_0xf957('0x85')][_0xf957('0x81')][0x0];}return db[_0xf957('0x71')][_0xf957('0x5a')](_[_0xf957('0x19')](_0x345f73[_0xf957('0x62')],{'firstName':_0x415726,[_0x2f2fa8['mapKey']]:_0x415726,'phone':_0x415726,'ListId':_0x197849[_0xf957('0x78')]}));}})[_0xf957('0x1f')](handleEntityNotFound(_0x58e725,null))[_0xf957('0x1f')](function(_0x52bc3f){if(_0x52bc3f){_0x58b1e1=_0x52bc3f;return db[_0xf957('0x8d')][_0xf957('0x59')]({'where':{'ContactId':_0x58b1e1['id'],'closed':![],'OpenchannelAccountId':_0x197849['id']}})[_0xf957('0x1f')](function(_0x7223ff){if(_0x7223ff){return[_0x7223ff,![]];}return db[_0xf957('0x8d')]['create']({'UserId':_0x345f73[_0xf957('0x5b')]['id'],'ContactId':_0x58b1e1['id'],'OpenchannelAccountId':_0x197849['id'],'lastMsgDirection':_0xf957('0xb2'),'Messages':[_[_0xf957('0x50')](_0x345f73[_0xf957('0x62')],{'read':![],'body':_0x345f73[_0xf957('0x62')][_0xf957('0x62')],'OpenchannelAccountId':_0x197849['id'],'UserId':_0x345f73[_0xf957('0x5b')]['id'],'ContactId':_0x58b1e1['id']})]},{'include':[{'model':db[_0xf957('0x95')],'as':'Messages'}]})[_0xf957('0x1f')](function(_0x393af7){return[_0x393af7,!![]];});});}})[_0xf957('0x8e')](function(_0xab504a,_0x447e62){if(_0x447e62){return _0xab504a;}return db['OpenchannelMessage']['create'](_[_0xf957('0x50')](_0x345f73[_0xf957('0x62')],{'read':![],'body':_0x345f73['body']['body'],'OpenchannelAccountId':_0x197849['id'],'OpenchannelInteractionId':_0xab504a['id'],'UserId':_0x345f73[_0xf957('0x5b')]['id'],'ContactId':_0x58b1e1['id']}))['then'](function(_0x5e472b){_0xab504a[_0xf957('0xb3')][_0xf957('0xb4')]=[];_0xab504a[_0xf957('0xb3')][_0xf957('0xb4')][_0xf957('0xb5')](_0x5e472b['dataValues']);return _0xab504a;});});}})[_0xf957('0x1f')](respondWithResult(_0x58e725,null))[_0xf957('0x28')](handleError(_0x58e725,null));};
\ No newline at end of file
index 3936fa4..b2cd9c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4483=['../../mysqldb','OpenchannelAccount','save','update','remove','emit','hasOwnProperty','hook','exports','events'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0x4483,0x1a3));var _0x3448=function(_0x3f8c21,_0x2652a8){_0x3f8c21=_0x3f8c21-0x0;var _0xd0d7ae=_0x4483[_0x3f8c21];return _0xd0d7ae;};'use strict';var EventEmitter=require(_0x3448('0x0'));var OpenchannelAccount=require(_0x3448('0x1'))['db'][_0x3448('0x2')];var OpenchannelAccountEvents=new EventEmitter();OpenchannelAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x3448('0x3'),'afterUpdate':_0x3448('0x4'),'afterDestroy':_0x3448('0x5')};function emitEvent(_0x3a7178){return function(_0xef1a93,_0x5f5163,_0xeb5b8){OpenchannelAccountEvents[_0x3448('0x6')](_0x3a7178+':'+_0xef1a93['id'],_0xef1a93);OpenchannelAccountEvents[_0x3448('0x6')](_0x3a7178,_0xef1a93);_0xeb5b8(null);};}for(var e in events){if(events[_0x3448('0x7')](e)){var event=events[e];OpenchannelAccount[_0x3448('0x8')](e,emitEvent(event));}}module[_0x3448('0x9')]=OpenchannelAccountEvents;
\ No newline at end of file
+var _0xe706=['hasOwnProperty','hook','exports','events','../../mysqldb','OpenchannelAccount','save','update','remove','emit'];(function(_0x285d2f,_0x56943c){var _0x58e151=function(_0x725234){while(--_0x725234){_0x285d2f['push'](_0x285d2f['shift']());}};_0x58e151(++_0x56943c);}(_0xe706,0xa3));var _0x6e70=function(_0x28d18d,_0x55896b){_0x28d18d=_0x28d18d-0x0;var _0x470640=_0xe706[_0x28d18d];return _0x470640;};'use strict';var EventEmitter=require(_0x6e70('0x0'));var OpenchannelAccount=require(_0x6e70('0x1'))['db'][_0x6e70('0x2')];var OpenchannelAccountEvents=new EventEmitter();OpenchannelAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x6e70('0x3'),'afterUpdate':_0x6e70('0x4'),'afterDestroy':_0x6e70('0x5')};function emitEvent(_0x7dfbc3){return function(_0x142c27,_0x2164a4,_0x376a8d){OpenchannelAccountEvents[_0x6e70('0x6')](_0x7dfbc3+':'+_0x142c27['id'],_0x142c27);OpenchannelAccountEvents[_0x6e70('0x6')](_0x7dfbc3,_0x142c27);_0x376a8d(null);};}for(var e in events){if(events[_0x6e70('0x7')](e)){var event=events[e];OpenchannelAccount[_0x6e70('0x8')](e,emitEvent(event));}}module[_0x6e70('0x9')]=OpenchannelAccountEvents;
\ No newline at end of file
index 8ab23c1..01e3d68 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(_0x31391f,_0x3c88c5){var _0x5e7b88=function(_0x1122d4){while(--_0x1122d4){_0x31391f['push'](_0x31391f['shift']());}};_0x5e7b88(++_0x3c88c5);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2b10c6,_0x185590){_0x2b10c6=_0x2b10c6-0x0;var _0x3789d2=_0xa9e0[_0x2b10c6];return _0x3789d2;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var 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(_0x2e8c4c,_0x15e674){var _0x2d3611=function(_0x3a9b31){while(--_0x3a9b31){_0x2e8c4c['push'](_0x2e8c4c['shift']());}};_0x2d3611(++_0x15e674);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2bf141,_0x31eac7){_0x2bf141=_0x2bf141-0x0;var _0x48277b=_0xa9e0[_0x2bf141];return _0x48277b;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var logger=require(_0x0a9e('0x2'))('api');var moment=require('moment');var BPromise=require(_0x0a9e('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0a9e('0x4'));var rimraf=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var attributes=require(_0x0a9e('0x7'));module[_0x0a9e('0x8')]=function(_0x57b080,_0x219af0){return _0x57b080[_0x0a9e('0x9')](_0x0a9e('0xa'),attributes,{'tableName':'openchannel_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1a2d0e3..4b3ddfe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x5f122a,_0x7ac493){var _0x1d1a15=function(_0x4c7fc1){while(--_0x4c7fc1){_0x5f122a['push'](_0x5f122a['shift']());}};_0x1d1a15(++_0x7ac493);}(_0x76dc,0x1f2));var _0xc76d=function(_0x38a321,_0xdfce6e){_0x38a321=_0x38a321-0x0;var _0x6fcbdb=_0x76dc[_0x38a321];return _0x6fcbdb;};'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
+var _0x6582=['code','message','info','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','client','http','redis','defaults','localhost','./openchannelAccount.socket','register','request','OpenchannelAccount,\x20%s,\x20%s','request\x20sent','debug','OpenchannelAccount,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x2a18e1,_0x5b433c){var _0x5de821=function(_0x2eb055){while(--_0x2eb055){_0x2a18e1['push'](_0x2a18e1['shift']());}};_0x5de821(++_0x5b433c);}(_0x6582,0x108));var _0x2658=function(_0x5e8c7c,_0x3429c6){_0x5e8c7c=_0x5e8c7c-0x0;var _0x48f7bd=_0x6582[_0x5e8c7c];return _0x48f7bd;};'use strict';var _=require(_0x2658('0x0'));var util=require(_0x2658('0x1'));var moment=require(_0x2658('0x2'));var BPromise=require(_0x2658('0x3'));var rs=require(_0x2658('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2658('0x5'))['db'];var utils=require(_0x2658('0x6'));var logger=require(_0x2658('0x7'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x2658('0x8')][_0x2658('0x9')]({'port':0x232a});config[_0x2658('0xa')]=_[_0x2658('0xb')](config[_0x2658('0xa')],{'host':_0x2658('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x2658('0xa')]));require(_0x2658('0xd'))[_0x2658('0xe')](socket);function respondWithRpcPromise(_0x99b9db,_0x455ff9,_0x2b2561){return new BPromise(function(_0x3f22a5,_0x1aaaac){return client[_0x2658('0xf')](_0x99b9db,_0x2b2561)['then'](function(_0x20fe6d){logger['info'](_0x2658('0x10'),_0x455ff9,_0x2658('0x11'));logger[_0x2658('0x12')](_0x2658('0x13'),_0x455ff9,_0x2658('0x11'),JSON[_0x2658('0x14')](_0x20fe6d));if(_0x20fe6d[_0x2658('0x15')]){if(_0x20fe6d['error'][_0x2658('0x16')]===0x1f4){logger[_0x2658('0x15')](_0x2658('0x10'),_0x455ff9,_0x20fe6d[_0x2658('0x15')][_0x2658('0x17')]);return _0x1aaaac(_0x20fe6d['error'][_0x2658('0x17')]);}logger[_0x2658('0x15')](_0x2658('0x10'),_0x455ff9,_0x20fe6d['error'][_0x2658('0x17')]);return _0x3f22a5(_0x20fe6d[_0x2658('0x15')][_0x2658('0x17')]);}else{logger[_0x2658('0x18')]('OpenchannelAccount,\x20%s,\x20%s',_0x455ff9,_0x2658('0x11'));_0x3f22a5(_0x20fe6d['result'][_0x2658('0x17')]);}})[_0x2658('0x19')](function(_0x307220){logger[_0x2658('0x15')]('OpenchannelAccount,\x20%s,\x20%s',_0x455ff9,_0x307220);_0x1aaaac(_0x307220);});});}
\ No newline at end of file
index 7c60a43..b445a65 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe130=['openchannelAccount:','./openchannelAccount.events','save','update','emit','removeListener','register'];(function(_0xac3aa1,_0x2c961f){var _0x9f98bc=function(_0x182bb0){while(--_0x182bb0){_0xac3aa1['push'](_0xac3aa1['shift']());}};_0x9f98bc(++_0x2c961f);}(_0xe130,0x127));var _0x0e13=function(_0x16d7c8,_0x75be2a){_0x16d7c8=_0x16d7c8-0x0;var _0x52c07f=_0xe130[_0x16d7c8];return _0x52c07f;};'use strict';var OpenchannelAccountEvents=require(_0x0e13('0x0'));var events=[_0x0e13('0x1'),'remove',_0x0e13('0x2')];function createListener(_0x3cbccc,_0x1dd4fa){return function(_0x360489){_0x1dd4fa[_0x0e13('0x3')](_0x3cbccc,_0x360489);};}function removeListener(_0x504f15,_0x1489a9){return function(){OpenchannelAccountEvents[_0x0e13('0x4')](_0x504f15,_0x1489a9);};}exports[_0x0e13('0x5')]=function(_0xcd92e){for(var _0x50a80e=0x0,_0x1774a5=events['length'];_0x50a80e<_0x1774a5;_0x50a80e++){var _0x567031=events[_0x50a80e];var _0x5aaa22=createListener(_0x0e13('0x6')+_0x567031,_0xcd92e);OpenchannelAccountEvents['on'](_0x567031,_0x5aaa22);}};
\ No newline at end of file
+var _0x1491=['openchannelAccount:','./openchannelAccount.events','save','remove','update','emit','removeListener','register','length'];(function(_0xaa0309,_0x1c8008){var _0x5de7ce=function(_0x3aa6ae){while(--_0x3aa6ae){_0xaa0309['push'](_0xaa0309['shift']());}};_0x5de7ce(++_0x1c8008);}(_0x1491,0x1b1));var _0x1149=function(_0x7c50e1,_0x11272b){_0x7c50e1=_0x7c50e1-0x0;var _0x8401a9=_0x1491[_0x7c50e1];return _0x8401a9;};'use strict';var OpenchannelAccountEvents=require(_0x1149('0x0'));var events=[_0x1149('0x1'),_0x1149('0x2'),_0x1149('0x3')];function createListener(_0x49c2f2,_0x4138db){return function(_0x2e6865){_0x4138db[_0x1149('0x4')](_0x49c2f2,_0x2e6865);};}function removeListener(_0x17b2cc,_0x443acb){return function(){OpenchannelAccountEvents[_0x1149('0x5')](_0x17b2cc,_0x443acb);};}exports[_0x1149('0x6')]=function(_0x14b438){for(var _0x1ebf2b=0x0,_0xaa7515=events[_0x1149('0x7')];_0x1ebf2b<_0xaa7515;_0x1ebf2b++){var _0x3bf02f=events[_0x1ebf2b];var _0x285f6c=createListener(_0x1149('0x8')+_0x3bf02f,_0x14b438);OpenchannelAccountEvents['on'](_0x3bf02f,_0x285f6c);}};
\ No newline at end of file
index 5531283..2174ba7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8677=['get','isAuthenticated','index','/:id','post','create','put','update','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./openchannelApplication.controller'];(function(_0x503ac4,_0x16ea34){var _0x1de88b=function(_0x5497c9){while(--_0x5497c9){_0x503ac4['push'](_0x503ac4['shift']());}};_0x1de88b(++_0x16ea34);}(_0x8677,0x114));var _0x7867=function(_0x1a8cce,_0x5c3551){_0x1a8cce=_0x1a8cce-0x0;var _0xffe940=_0x8677[_0x1a8cce];return _0xffe940;};'use strict';var multer=require(_0x7867('0x0'));var util=require(_0x7867('0x1'));var path=require(_0x7867('0x2'));var timeout=require(_0x7867('0x3'));var express=require(_0x7867('0x4'));var router=express[_0x7867('0x5')]();var fs_extra=require(_0x7867('0x6'));var auth=require(_0x7867('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x7867('0x8'));router[_0x7867('0x9')]('/',auth[_0x7867('0xa')](),controller[_0x7867('0xb')]);router[_0x7867('0x9')](_0x7867('0xc'),auth[_0x7867('0xa')](),controller['show']);router[_0x7867('0xd')]('/',auth[_0x7867('0xa')](),controller[_0x7867('0xe')]);router[_0x7867('0xf')](_0x7867('0xc'),auth[_0x7867('0xa')](),controller[_0x7867('0x10')]);router[_0x7867('0x11')](_0x7867('0xc'),auth[_0x7867('0xa')](),controller['destroy']);module[_0x7867('0x12')]=router;
\ No newline at end of file
+var _0x5c9e=['multer','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','show','create','/:id','update','delete','exports'];(function(_0xd70515,_0x50cfb3){var _0x1e9a3a=function(_0xbb7d0c){while(--_0xbb7d0c){_0xd70515['push'](_0xd70515['shift']());}};_0x1e9a3a(++_0x50cfb3);}(_0x5c9e,0x90));var _0xe5c9=function(_0x18fff7,_0x1253a7){_0x18fff7=_0x18fff7-0x0;var _0x4f0d8c=_0x5c9e[_0x18fff7];return _0x4f0d8c;};'use strict';var multer=require(_0xe5c9('0x0'));var util=require(_0xe5c9('0x1'));var path=require('path');var timeout=require(_0xe5c9('0x2'));var express=require(_0xe5c9('0x3'));var router=express[_0xe5c9('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xe5c9('0x5'));var interaction=require(_0xe5c9('0x6'));var config=require(_0xe5c9('0x7'));var controller=require('./openchannelApplication.controller');router['get']('/',auth[_0xe5c9('0x8')](),controller[_0xe5c9('0x9')]);router['get']('/:id',auth[_0xe5c9('0x8')](),controller[_0xe5c9('0xa')]);router['post']('/',auth[_0xe5c9('0x8')](),controller[_0xe5c9('0xb')]);router['put'](_0xe5c9('0xc'),auth[_0xe5c9('0x8')](),controller[_0xe5c9('0xd')]);router[_0xe5c9('0xe')](_0xe5c9('0xc'),auth[_0xe5c9('0x8')](),controller['destroy']);module[_0xe5c9('0xf')]=router;
\ No newline at end of file
index b5caf2b..10b30a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd5c=['sequelize','exports','STRING','noop','TEXT','*,*,*,*'];(function(_0x584ab5,_0x422e0b){var _0x1515a4=function(_0x1a6dc3){while(--_0x1a6dc3){_0x584ab5['push'](_0x584ab5['shift']());}};_0x1515a4(++_0x422e0b);}(_0xcd5c,0x180));var _0xccd5=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0xcd5c[_0x4a9fb1];return _0x348672;};'use strict';var Sequelize=require(_0xccd5('0x0'));module[_0xccd5('0x1')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0xccd5('0x2')],'allowNull':![],'defaultValue':_0xccd5('0x3')},'appdata':{'type':Sequelize[_0xccd5('0x4')]()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0xccd5('0x2')],'defaultValue':_0xccd5('0x5')}};
\ No newline at end of file
+var _0xbb64=['noop','TEXT','sequelize','exports','INTEGER','STRING'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xbb64,0x11c));var _0x4bb6=function(_0x3dd98f,_0x2900ac){_0x3dd98f=_0x3dd98f-0x0;var _0x566696=_0xbb64[_0x3dd98f];return _0x566696;};'use strict';var Sequelize=require(_0x4bb6('0x0'));module[_0x4bb6('0x1')]={'priority':{'type':Sequelize[_0x4bb6('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0x4bb6('0x3')],'allowNull':![],'defaultValue':_0x4bb6('0x4')},'appdata':{'type':Sequelize[_0x4bb6('0x5')]()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0x4bb6('0x3')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
index ce3a42e..3f0c97b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbcdc=['Content-Range','reject','save','then','error','stack','name','index','OpenchannelApplication','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','rows','show','params','length','find','catch','create','body','update','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','to-csv','fs-extra','lodash','squel','crypto','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','end','json','offset','limit','undefined','count','set'];(function(_0x186d8a,_0x1a3ac0){var _0x31c082=function(_0x78644d){while(--_0x78644d){_0x186d8a['push'](_0x186d8a['shift']());}};_0x31c082(++_0x1a3ac0);}(_0xbcdc,0x15d));var _0xcbcd=function(_0x589582,_0x39c663){_0x589582=_0x589582-0x0;var _0x39ab57=_0xbcdc[_0x589582];return _0x39ab57;};'use strict';var emlformat=require(_0xcbcd('0x0'));var rimraf=require(_0xcbcd('0x1'));var zipdir=require(_0xcbcd('0x2'));var jsonpatch=require(_0xcbcd('0x3'));var rp=require(_0xcbcd('0x4'));var moment=require(_0xcbcd('0x5'));var BPromise=require(_0xcbcd('0x6'));var Mustache=require(_0xcbcd('0x7'));var util=require('util');var path=require('path');var sox=require(_0xcbcd('0x8'));var csv=require(_0xcbcd('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xcbcd('0xa'));var _=require(_0xcbcd('0xb'));var squel=require(_0xcbcd('0xc'));var crypto=require(_0xcbcd('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xcbcd('0xe'));var toCsv=require(_0xcbcd('0x9'));var querystring=require(_0xcbcd('0xf'));var Papa=require(_0xcbcd('0x10'));var Redis=require(_0xcbcd('0x11'));var authService=require(_0xcbcd('0x12'));var qs=require(_0xcbcd('0x13'));var as=require(_0xcbcd('0x14'));var hardwareService=require(_0xcbcd('0x15'));var logger=require('../../config/logger')(_0xcbcd('0x16'));var utils=require(_0xcbcd('0x17'));var config=require(_0xcbcd('0x18'));var licenseUtil=require(_0xcbcd('0x19'));var db=require(_0xcbcd('0x1a'))['db'];function respondWithStatusCode(_0x2d3bb3,_0x51a811){_0x51a811=_0x51a811||0xcc;return function(_0x52e5e9){if(_0x52e5e9){return _0x2d3bb3[_0xcbcd('0x1b')](_0x51a811);}return _0x2d3bb3[_0xcbcd('0x1c')](_0x51a811)[_0xcbcd('0x1d')]();};}function respondWithResult(_0x5e0042,_0x512713){_0x512713=_0x512713||0xc8;return function(_0x44f26b){if(_0x44f26b){return _0x5e0042[_0xcbcd('0x1c')](_0x512713)[_0xcbcd('0x1e')](_0x44f26b);}};}function respondWithFilteredResult(_0x4f8ce2,_0x52e2c7){return function(_0x43f677){if(_0x43f677){var _0x32090f=typeof _0x52e2c7[_0xcbcd('0x1f')]==='undefined'&&typeof _0x52e2c7[_0xcbcd('0x20')]===_0xcbcd('0x21');var _0x3576cc=_0x43f677['count'];var _0x33320b=_0x32090f?0x0:_0x52e2c7['offset'];var _0x211958=_0x32090f?_0x43f677[_0xcbcd('0x22')]:_0x52e2c7[_0xcbcd('0x1f')]+_0x52e2c7[_0xcbcd('0x20')];var _0x32c193;if(_0x211958>=_0x3576cc){_0x211958=_0x3576cc;_0x32c193=0xc8;}else{_0x32c193=0xce;}_0x4f8ce2[_0xcbcd('0x1c')](_0x32c193);return _0x4f8ce2[_0xcbcd('0x23')](_0xcbcd('0x24'),_0x33320b+'-'+_0x211958+'/'+_0x3576cc)['json'](_0x43f677);}return null;};}function patchUpdates(_0x47fec8){return function(_0x57f610){try{jsonpatch['apply'](_0x57f610,_0x47fec8,!![]);}catch(_0x13fe04){return BPromise[_0xcbcd('0x25')](_0x13fe04);}return _0x57f610[_0xcbcd('0x26')]();};}function saveUpdates(_0x666779,_0x372454){return function(_0x3e398d){if(_0x3e398d){return _0x3e398d['update'](_0x666779)[_0xcbcd('0x27')](function(_0x2a6519){return _0x2a6519;});}return null;};}function removeEntity(_0x335aff,_0x41bb62){return function(_0x5a60da){if(_0x5a60da){return _0x5a60da['destroy']()[_0xcbcd('0x27')](function(){_0x335aff[_0xcbcd('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4ff41c,_0x124178){return function(_0x39c205){if(!_0x39c205){_0x4ff41c[_0xcbcd('0x1b')](0x194);}return _0x39c205;};}function handleError(_0x563d67,_0x4fae83){_0x4fae83=_0x4fae83||0x1f4;return function(_0x1a19c2){logger[_0xcbcd('0x28')](_0x1a19c2[_0xcbcd('0x29')]);if(_0x1a19c2[_0xcbcd('0x2a')]){delete _0x1a19c2[_0xcbcd('0x2a')];}_0x563d67[_0xcbcd('0x1c')](_0x4fae83)['send'](_0x1a19c2);};}exports[_0xcbcd('0x2b')]=function(_0x166c50,_0x2a8730){var _0x14efa4={},_0x5c2ee7={},_0x3c2673={'count':0x0,'rows':[]};var _0x62e0d1=_['map'](db[_0xcbcd('0x2c')][_0xcbcd('0x2d')],function(_0x5a930e){return{'name':_0x5a930e[_0xcbcd('0x2e')],'type':_0x5a930e[_0xcbcd('0x2f')][_0xcbcd('0x30')]};});_0x5c2ee7[_0xcbcd('0x31')]=_[_0xcbcd('0x32')](_0x62e0d1,_0xcbcd('0x2a'));_0x5c2ee7[_0xcbcd('0x33')]=_[_0xcbcd('0x34')](_0x166c50[_0xcbcd('0x33')]);_0x5c2ee7[_0xcbcd('0x35')]=_[_0xcbcd('0x36')](_0x5c2ee7[_0xcbcd('0x31')],_0x5c2ee7[_0xcbcd('0x33')]);_0x14efa4[_0xcbcd('0x37')]=_[_0xcbcd('0x36')](_0x5c2ee7[_0xcbcd('0x31')],qs[_0xcbcd('0x38')](_0x166c50['query'][_0xcbcd('0x38')]));_0x14efa4[_0xcbcd('0x37')]=_0x14efa4[_0xcbcd('0x37')]['length']?_0x14efa4[_0xcbcd('0x37')]:_0x5c2ee7[_0xcbcd('0x31')];if(!_0x166c50[_0xcbcd('0x33')]['hasOwnProperty']('nolimit')){_0x14efa4[_0xcbcd('0x20')]=qs[_0xcbcd('0x20')](_0x166c50[_0xcbcd('0x33')]['limit']);_0x14efa4[_0xcbcd('0x1f')]=qs[_0xcbcd('0x1f')](_0x166c50[_0xcbcd('0x33')]['offset']);}_0x14efa4[_0xcbcd('0x39')]=qs[_0xcbcd('0x3a')](_0x166c50['query'][_0xcbcd('0x3a')]);_0x14efa4[_0xcbcd('0x3b')]=qs[_0xcbcd('0x35')](_[_0xcbcd('0x3c')](_0x166c50[_0xcbcd('0x33')],_0x5c2ee7[_0xcbcd('0x35')]),_0x62e0d1);if(_0x166c50[_0xcbcd('0x33')]['filter']){_0x14efa4[_0xcbcd('0x3b')]=_[_0xcbcd('0x3d')](_0x14efa4[_0xcbcd('0x3b')],{'$or':_[_0xcbcd('0x32')](_0x62e0d1,function(_0x46e4b1){if(_0x46e4b1[_0xcbcd('0x2f')]!==_0xcbcd('0x3e')){var _0x3e2fe4={};_0x3e2fe4[_0x46e4b1[_0xcbcd('0x2a')]]={'$like':'%'+_0x166c50[_0xcbcd('0x33')][_0xcbcd('0x3f')]+'%'};return _0x3e2fe4;}})});}_0x14efa4=_[_0xcbcd('0x3d')]({},_0x14efa4,_0x166c50[_0xcbcd('0x40')]);var _0x4c4c1e={'where':_0x14efa4[_0xcbcd('0x3b')]};return db[_0xcbcd('0x2c')][_0xcbcd('0x22')](_0x4c4c1e)[_0xcbcd('0x27')](function(_0x1a0fb5){_0x3c2673[_0xcbcd('0x22')]=_0x1a0fb5;if(_0x166c50[_0xcbcd('0x33')][_0xcbcd('0x41')]){_0x14efa4[_0xcbcd('0x42')]=[{'all':!![]}];}return db['OpenchannelApplication']['findAll'](_0x14efa4);})[_0xcbcd('0x27')](function(_0x557d79){_0x3c2673[_0xcbcd('0x43')]=_0x557d79;return _0x3c2673;})[_0xcbcd('0x27')](respondWithFilteredResult(_0x2a8730,_0x14efa4))['catch'](handleError(_0x2a8730,null));};exports[_0xcbcd('0x44')]=function(_0x55f42c,_0x5eb903){var _0x5ea1ad={'raw':!![],'where':{'id':_0x55f42c[_0xcbcd('0x45')]['id']}},_0x1b526d={};_0x1b526d[_0xcbcd('0x31')]=_[_0xcbcd('0x34')](db[_0xcbcd('0x2c')]['rawAttributes']);_0x1b526d[_0xcbcd('0x33')]=_[_0xcbcd('0x34')](_0x55f42c[_0xcbcd('0x33')]);_0x1b526d[_0xcbcd('0x35')]=_['intersection'](_0x1b526d[_0xcbcd('0x31')],_0x1b526d[_0xcbcd('0x33')]);_0x5ea1ad[_0xcbcd('0x37')]=_[_0xcbcd('0x36')](_0x1b526d[_0xcbcd('0x31')],qs[_0xcbcd('0x38')](_0x55f42c[_0xcbcd('0x33')][_0xcbcd('0x38')]));_0x5ea1ad[_0xcbcd('0x37')]=_0x5ea1ad[_0xcbcd('0x37')][_0xcbcd('0x46')]?_0x5ea1ad[_0xcbcd('0x37')]:_0x1b526d[_0xcbcd('0x31')];if(_0x55f42c[_0xcbcd('0x33')][_0xcbcd('0x41')]){_0x5ea1ad['include']=[{'all':!![]}];}_0x5ea1ad=_[_0xcbcd('0x3d')]({},_0x5ea1ad,_0x55f42c[_0xcbcd('0x40')]);return db[_0xcbcd('0x2c')][_0xcbcd('0x47')](_0x5ea1ad)['then'](handleEntityNotFound(_0x5eb903,null))[_0xcbcd('0x27')](respondWithResult(_0x5eb903,null))[_0xcbcd('0x48')](handleError(_0x5eb903,null));};exports[_0xcbcd('0x49')]=function(_0x25aebb,_0x1d9a5a){return db[_0xcbcd('0x2c')]['create'](_0x25aebb[_0xcbcd('0x4a')],{})[_0xcbcd('0x27')](respondWithResult(_0x1d9a5a,0xc9))[_0xcbcd('0x48')](handleError(_0x1d9a5a,null));};exports[_0xcbcd('0x4b')]=function(_0x18dc16,_0x2eb1a5){if(_0x18dc16[_0xcbcd('0x4a')]['id']){delete _0x18dc16[_0xcbcd('0x4a')]['id'];}return db[_0xcbcd('0x2c')][_0xcbcd('0x47')]({'where':{'id':_0x18dc16[_0xcbcd('0x45')]['id']}})[_0xcbcd('0x27')](handleEntityNotFound(_0x2eb1a5,null))[_0xcbcd('0x27')](saveUpdates(_0x18dc16[_0xcbcd('0x4a')],null))[_0xcbcd('0x27')](respondWithResult(_0x2eb1a5,null))[_0xcbcd('0x48')](handleError(_0x2eb1a5,null));};exports[_0xcbcd('0x4c')]=function(_0x32f86c,_0x2e501e){return db[_0xcbcd('0x2c')]['find']({'where':{'id':_0x32f86c[_0xcbcd('0x45')]['id']}})[_0xcbcd('0x27')](handleEntityNotFound(_0x2e501e,null))[_0xcbcd('0x27')](removeEntity(_0x2e501e,null))[_0xcbcd('0x48')](handleError(_0x2e501e,null));};
\ No newline at end of file
+var _0xccaf=['status','end','json','offset','limit','count','set','apply','save','update','destroy','then','error','stack','name','index','OpenchannelApplication','map','keys','query','filters','intersection','attributes','model','fields','length','nolimit','order','sort','where','merge','type','VIRTUAL','filter','options','include','findAll','rows','show','params','rawAttributes','includeAll','find','create','body','catch','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus'];(function(_0x458065,_0x1cf4a0){var _0x4a0075=function(_0x564676){while(--_0x564676){_0x458065['push'](_0x458065['shift']());}};_0x4a0075(++_0x1cf4a0);}(_0xccaf,0x152));var _0xfcca=function(_0x58ae8a,_0x3c619e){_0x58ae8a=_0x58ae8a-0x0;var _0x2f0b6b=_0xccaf[_0x58ae8a];return _0x2f0b6b;};'use strict';var emlformat=require(_0xfcca('0x0'));var rimraf=require(_0xfcca('0x1'));var zipdir=require(_0xfcca('0x2'));var jsonpatch=require(_0xfcca('0x3'));var rp=require(_0xfcca('0x4'));var moment=require(_0xfcca('0x5'));var BPromise=require(_0xfcca('0x6'));var Mustache=require(_0xfcca('0x7'));var util=require(_0xfcca('0x8'));var path=require('path');var sox=require(_0xfcca('0x9'));var csv=require(_0xfcca('0xa'));var ejs=require(_0xfcca('0xb'));var fs=require('fs');var fs_extra=require(_0xfcca('0xc'));var _=require(_0xfcca('0xd'));var squel=require(_0xfcca('0xe'));var crypto=require(_0xfcca('0xf'));var jsforce=require(_0xfcca('0x10'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xfcca('0x11'));var Redis=require(_0xfcca('0x12'));var authService=require(_0xfcca('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0xfcca('0x14'));var hardwareService=require(_0xfcca('0x15'));var logger=require('../../config/logger')(_0xfcca('0x16'));var utils=require(_0xfcca('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0xfcca('0x18'));var db=require(_0xfcca('0x19'))['db'];function respondWithStatusCode(_0x11d235,_0x186625){_0x186625=_0x186625||0xcc;return function(_0x5a790b){if(_0x5a790b){return _0x11d235[_0xfcca('0x1a')](_0x186625);}return _0x11d235[_0xfcca('0x1b')](_0x186625)[_0xfcca('0x1c')]();};}function respondWithResult(_0x55280d,_0x5b1c79){_0x5b1c79=_0x5b1c79||0xc8;return function(_0x268a90){if(_0x268a90){return _0x55280d[_0xfcca('0x1b')](_0x5b1c79)[_0xfcca('0x1d')](_0x268a90);}};}function respondWithFilteredResult(_0x1eda0b,_0x432658){return function(_0x326d3c){if(_0x326d3c){var _0x38b896=typeof _0x432658[_0xfcca('0x1e')]==='undefined'&&typeof _0x432658[_0xfcca('0x1f')]==='undefined';var _0x26ba79=_0x326d3c['count'];var _0x365fd2=_0x38b896?0x0:_0x432658[_0xfcca('0x1e')];var _0x3525ae=_0x38b896?_0x326d3c[_0xfcca('0x20')]:_0x432658[_0xfcca('0x1e')]+_0x432658[_0xfcca('0x1f')];var _0x56109d;if(_0x3525ae>=_0x26ba79){_0x3525ae=_0x26ba79;_0x56109d=0xc8;}else{_0x56109d=0xce;}_0x1eda0b[_0xfcca('0x1b')](_0x56109d);return _0x1eda0b[_0xfcca('0x21')]('Content-Range',_0x365fd2+'-'+_0x3525ae+'/'+_0x26ba79)[_0xfcca('0x1d')](_0x326d3c);}return null;};}function patchUpdates(_0x1298cd){return function(_0xa1f0de){try{jsonpatch[_0xfcca('0x22')](_0xa1f0de,_0x1298cd,!![]);}catch(_0x3435e8){return BPromise['reject'](_0x3435e8);}return _0xa1f0de[_0xfcca('0x23')]();};}function saveUpdates(_0x7097b0,_0x5aff55){return function(_0x2c1eaa){if(_0x2c1eaa){return _0x2c1eaa[_0xfcca('0x24')](_0x7097b0)['then'](function(_0x33b15b){return _0x33b15b;});}return null;};}function removeEntity(_0x2c51af,_0x1636f2){return function(_0x567d84){if(_0x567d84){return _0x567d84[_0xfcca('0x25')]()[_0xfcca('0x26')](function(){_0x2c51af[_0xfcca('0x1b')](0xcc)[_0xfcca('0x1c')]();});}};}function handleEntityNotFound(_0xfeb55e,_0x5e17c9){return function(_0x18a32c){if(!_0x18a32c){_0xfeb55e['sendStatus'](0x194);}return _0x18a32c;};}function handleError(_0x545a65,_0x5abd9e){_0x5abd9e=_0x5abd9e||0x1f4;return function(_0xc9baaa){logger[_0xfcca('0x27')](_0xc9baaa[_0xfcca('0x28')]);if(_0xc9baaa[_0xfcca('0x29')]){delete _0xc9baaa[_0xfcca('0x29')];}_0x545a65[_0xfcca('0x1b')](_0x5abd9e)['send'](_0xc9baaa);};}exports[_0xfcca('0x2a')]=function(_0x2ace66,_0x519ca5){var _0x49de48={},_0x15c9bc={},_0x19930e={'count':0x0,'rows':[]};var _0x53accf=_['map'](db[_0xfcca('0x2b')]['rawAttributes'],function(_0x36f8c5){return{'name':_0x36f8c5['fieldName'],'type':_0x36f8c5['type']['key']};});_0x15c9bc['model']=_[_0xfcca('0x2c')](_0x53accf,'name');_0x15c9bc['query']=_[_0xfcca('0x2d')](_0x2ace66[_0xfcca('0x2e')]);_0x15c9bc[_0xfcca('0x2f')]=_[_0xfcca('0x30')](_0x15c9bc['model'],_0x15c9bc[_0xfcca('0x2e')]);_0x49de48[_0xfcca('0x31')]=_['intersection'](_0x15c9bc[_0xfcca('0x32')],qs[_0xfcca('0x33')](_0x2ace66['query']['fields']));_0x49de48[_0xfcca('0x31')]=_0x49de48[_0xfcca('0x31')][_0xfcca('0x34')]?_0x49de48['attributes']:_0x15c9bc[_0xfcca('0x32')];if(!_0x2ace66[_0xfcca('0x2e')]['hasOwnProperty'](_0xfcca('0x35'))){_0x49de48[_0xfcca('0x1f')]=qs['limit'](_0x2ace66['query'][_0xfcca('0x1f')]);_0x49de48[_0xfcca('0x1e')]=qs[_0xfcca('0x1e')](_0x2ace66[_0xfcca('0x2e')][_0xfcca('0x1e')]);}_0x49de48[_0xfcca('0x36')]=qs[_0xfcca('0x37')](_0x2ace66[_0xfcca('0x2e')][_0xfcca('0x37')]);_0x49de48['where']=qs[_0xfcca('0x2f')](_['pick'](_0x2ace66[_0xfcca('0x2e')],_0x15c9bc[_0xfcca('0x2f')]),_0x53accf);if(_0x2ace66[_0xfcca('0x2e')]['filter']){_0x49de48[_0xfcca('0x38')]=_[_0xfcca('0x39')](_0x49de48['where'],{'$or':_[_0xfcca('0x2c')](_0x53accf,function(_0x5745f5){if(_0x5745f5[_0xfcca('0x3a')]!==_0xfcca('0x3b')){var _0x5d6c75={};_0x5d6c75[_0x5745f5['name']]={'$like':'%'+_0x2ace66['query'][_0xfcca('0x3c')]+'%'};return _0x5d6c75;}})});}_0x49de48=_[_0xfcca('0x39')]({},_0x49de48,_0x2ace66[_0xfcca('0x3d')]);var _0x5a66c6={'where':_0x49de48[_0xfcca('0x38')]};return db[_0xfcca('0x2b')][_0xfcca('0x20')](_0x5a66c6)[_0xfcca('0x26')](function(_0x40b582){_0x19930e[_0xfcca('0x20')]=_0x40b582;if(_0x2ace66['query']['includeAll']){_0x49de48[_0xfcca('0x3e')]=[{'all':!![]}];}return db['OpenchannelApplication'][_0xfcca('0x3f')](_0x49de48);})[_0xfcca('0x26')](function(_0x12fd10){_0x19930e[_0xfcca('0x40')]=_0x12fd10;return _0x19930e;})[_0xfcca('0x26')](respondWithFilteredResult(_0x519ca5,_0x49de48))['catch'](handleError(_0x519ca5,null));};exports[_0xfcca('0x41')]=function(_0x33e1db,_0x8f40ae){var _0x49cea2={'raw':!![],'where':{'id':_0x33e1db[_0xfcca('0x42')]['id']}},_0x5a705d={};_0x5a705d['model']=_[_0xfcca('0x2d')](db[_0xfcca('0x2b')][_0xfcca('0x43')]);_0x5a705d[_0xfcca('0x2e')]=_[_0xfcca('0x2d')](_0x33e1db[_0xfcca('0x2e')]);_0x5a705d[_0xfcca('0x2f')]=_['intersection'](_0x5a705d['model'],_0x5a705d[_0xfcca('0x2e')]);_0x49cea2[_0xfcca('0x31')]=_[_0xfcca('0x30')](_0x5a705d[_0xfcca('0x32')],qs['fields'](_0x33e1db['query']['fields']));_0x49cea2[_0xfcca('0x31')]=_0x49cea2[_0xfcca('0x31')][_0xfcca('0x34')]?_0x49cea2[_0xfcca('0x31')]:_0x5a705d[_0xfcca('0x32')];if(_0x33e1db['query'][_0xfcca('0x44')]){_0x49cea2[_0xfcca('0x3e')]=[{'all':!![]}];}_0x49cea2=_[_0xfcca('0x39')]({},_0x49cea2,_0x33e1db[_0xfcca('0x3d')]);return db[_0xfcca('0x2b')][_0xfcca('0x45')](_0x49cea2)[_0xfcca('0x26')](handleEntityNotFound(_0x8f40ae,null))[_0xfcca('0x26')](respondWithResult(_0x8f40ae,null))['catch'](handleError(_0x8f40ae,null));};exports[_0xfcca('0x46')]=function(_0x2ec8cc,_0xff82b){return db['OpenchannelApplication'][_0xfcca('0x46')](_0x2ec8cc[_0xfcca('0x47')],{})['then'](respondWithResult(_0xff82b,0xc9))[_0xfcca('0x48')](handleError(_0xff82b,null));};exports[_0xfcca('0x24')]=function(_0x36474d,_0x4ab21e){if(_0x36474d[_0xfcca('0x47')]['id']){delete _0x36474d['body']['id'];}return db['OpenchannelApplication'][_0xfcca('0x45')]({'where':{'id':_0x36474d[_0xfcca('0x42')]['id']}})[_0xfcca('0x26')](handleEntityNotFound(_0x4ab21e,null))['then'](saveUpdates(_0x36474d['body'],null))[_0xfcca('0x26')](respondWithResult(_0x4ab21e,null))[_0xfcca('0x48')](handleError(_0x4ab21e,null));};exports[_0xfcca('0x25')]=function(_0x4ca68f,_0x2763e1){return db[_0xfcca('0x2b')][_0xfcca('0x45')]({'where':{'id':_0x4ca68f[_0xfcca('0x42')]['id']}})[_0xfcca('0x26')](handleEntityNotFound(_0x2763e1,null))['then'](removeEntity(_0x2763e1,null))[_0xfcca('0x48')](handleError(_0x2763e1,null));};
\ No newline at end of file
index 50b65ba..1d72a59 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfbec=['api','bluebird','request-promise','path','rimraf','../../config/environment','exports','OpenchannelApplication','utf8mb4','utf8mb4_unicode_ci','lodash','../../config/logger'];(function(_0x49298a,_0x3a9b0f){var _0x31691e=function(_0x2e919e){while(--_0x2e919e){_0x49298a['push'](_0x49298a['shift']());}};_0x31691e(++_0x3a9b0f);}(_0xfbec,0xfa));var _0xcfbe=function(_0x201a3b,_0x396993){_0x201a3b=_0x201a3b-0x0;var _0x44a77a=_0xfbec[_0x201a3b];return _0x44a77a;};'use strict';var _=require(_0xcfbe('0x0'));var util=require('util');var logger=require(_0xcfbe('0x1'))(_0xcfbe('0x2'));var moment=require('moment');var BPromise=require(_0xcfbe('0x3'));var rp=require(_0xcfbe('0x4'));var fs=require('fs');var path=require(_0xcfbe('0x5'));var rimraf=require(_0xcfbe('0x6'));var config=require(_0xcfbe('0x7'));var attributes=require('./openchannelApplication.attributes');module[_0xcfbe('0x8')]=function(_0x755566,_0x3b7392){return _0x755566['define'](_0xcfbe('0x9'),attributes,{'tableName':'openchannel_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xcfbe('0xa'),'collate':_0xcfbe('0xb')});};
\ No newline at end of file
+var _0x147f=['./openchannelApplication.attributes','exports','define','OpenchannelApplication','openchannel_applications','utf8mb4_unicode_ci','lodash','../../config/logger','api','moment','path','rimraf','../../config/environment'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x147f,0xbc));var _0xf147=function(_0x28b204,_0x234d86){_0x28b204=_0x28b204-0x0;var _0x5d6190=_0x147f[_0x28b204];return _0x5d6190;};'use strict';var _=require(_0xf147('0x0'));var util=require('util');var logger=require(_0xf147('0x1'))(_0xf147('0x2'));var moment=require(_0xf147('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xf147('0x4'));var rimraf=require(_0xf147('0x5'));var config=require(_0xf147('0x6'));var attributes=require(_0xf147('0x7'));module[_0xf147('0x8')]=function(_0x3dc151,_0x2bec7c){return _0x3dc151[_0xf147('0x9')](_0xf147('0xa'),attributes,{'tableName':_0xf147('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0xf147('0xc')});};
\ No newline at end of file
index 7775457..7d687b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a1f=['debug','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','request','then','info','OpenchannelApplication,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','OpenchannelApplication,\x20%s,\x20%s','message','result','catch','UpdateOpenchannelApplication','update','body','options','where','attributes','limit'];(function(_0x5c6c64,_0x12d4cb){var _0x172174=function(_0x3f49c3){while(--_0x3f49c3){_0x5c6c64['push'](_0x5c6c64['shift']());}};_0x172174(++_0x12d4cb);}(_0x6a1f,0x79));var _0xf6a1=function(_0x2b8111,_0x4e7a43){_0x2b8111=_0x2b8111-0x0;var _0xfa618a=_0x6a1f[_0x2b8111];return _0xfa618a;};'use strict';var _=require(_0xf6a1('0x0'));var util=require('util');var moment=require(_0xf6a1('0x1'));var BPromise=require(_0xf6a1('0x2'));var rs=require(_0xf6a1('0x3'));var fs=require('fs');var Redis=require(_0xf6a1('0x4'));var db=require(_0xf6a1('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xf6a1('0x6'))(_0xf6a1('0x7'));var config=require(_0xf6a1('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xf6a1('0x9')][_0xf6a1('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x58cf9a,_0x507695,_0x24cb36){return new BPromise(function(_0x3e13ae,_0x2247ba){return client[_0xf6a1('0xb')](_0x58cf9a,_0x24cb36)[_0xf6a1('0xc')](function(_0x3dbb9f){logger[_0xf6a1('0xd')]('OpenchannelApplication,\x20%s,\x20%s',_0x507695,'request\x20sent');logger['debug'](_0xf6a1('0xe'),_0x507695,_0xf6a1('0xf'),JSON[_0xf6a1('0x10')](_0x3dbb9f));if(_0x3dbb9f[_0xf6a1('0x11')]){if(_0x3dbb9f['error']['code']===0x1f4){logger[_0xf6a1('0x11')](_0xf6a1('0x12'),_0x507695,_0x3dbb9f['error']['message']);return _0x2247ba(_0x3dbb9f[_0xf6a1('0x11')]['message']);}logger[_0xf6a1('0x11')](_0xf6a1('0x12'),_0x507695,_0x3dbb9f[_0xf6a1('0x11')][_0xf6a1('0x13')]);return _0x3e13ae(_0x3dbb9f[_0xf6a1('0x11')][_0xf6a1('0x13')]);}else{logger[_0xf6a1('0xd')]('OpenchannelApplication,\x20%s,\x20%s',_0x507695,'request\x20sent');_0x3e13ae(_0x3dbb9f[_0xf6a1('0x14')][_0xf6a1('0x13')]);}})[_0xf6a1('0x15')](function(_0x3dd5c6){logger['error'](_0xf6a1('0x12'),_0x507695,_0x3dd5c6);_0x2247ba(_0x3dd5c6);});});}exports[_0xf6a1('0x16')]=function(_0x52650d){var _0x20270b=this;return new Promise(function(_0x501520,_0x3fb858){return db['OpenchannelApplication'][_0xf6a1('0x17')](_0x52650d[_0xf6a1('0x18')],{'raw':_0x52650d['options']?_0x52650d[_0xf6a1('0x19')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x52650d[_0xf6a1('0x19')]?_0x52650d['options'][_0xf6a1('0x1a')]||null:null,'attributes':_0x52650d[_0xf6a1('0x19')]?_0x52650d[_0xf6a1('0x19')][_0xf6a1('0x1b')]||null:null,'limit':_0x52650d['options']?_0x52650d[_0xf6a1('0x19')][_0xf6a1('0x1c')]||null:null})[_0xf6a1('0xc')](function(_0x230c60){logger[_0xf6a1('0xd')](_0xf6a1('0x16'),_0x52650d);logger[_0xf6a1('0x1d')](_0xf6a1('0x16'),_0x52650d,JSON[_0xf6a1('0x10')](_0x230c60));_0x501520(_0x230c60);})[_0xf6a1('0x15')](function(_0x3d243e){logger[_0xf6a1('0x11')](_0xf6a1('0x16'),_0x3d243e[_0xf6a1('0x13')],_0x52650d);_0x3fb858(_0x20270b[_0xf6a1('0x11')](0x1f4,_0x3d243e[_0xf6a1('0x13')]));});});};
\ No newline at end of file
+var _0x4794=['OpenchannelApplication,\x20%s,\x20%s','request\x20sent','debug','OpenchannelApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','UpdateOpenchannelApplication','update','body','options','raw','where','attributes','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','client','http','request','then'];(function(_0x4ae625,_0xf396d0){var _0x31accf=function(_0x3ded6b){while(--_0x3ded6b){_0x4ae625['push'](_0x4ae625['shift']());}};_0x31accf(++_0xf396d0);}(_0x4794,0xa8));var _0x4479=function(_0x5e2eb1,_0x424652){_0x5e2eb1=_0x5e2eb1-0x0;var _0x5f4bea=_0x4794[_0x5e2eb1];return _0x5f4bea;};'use strict';var _=require('lodash');var util=require(_0x4479('0x0'));var moment=require(_0x4479('0x1'));var BPromise=require(_0x4479('0x2'));var rs=require(_0x4479('0x3'));var fs=require('fs');var Redis=require(_0x4479('0x4'));var db=require(_0x4479('0x5'))['db'];var utils=require(_0x4479('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0x4479('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x4479('0x8')][_0x4479('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x33691c,_0x2ceb18,_0x2e82fa){return new BPromise(function(_0x35f162,_0x214ac6){return client[_0x4479('0xa')](_0x33691c,_0x2e82fa)[_0x4479('0xb')](function(_0x579c28){logger['info'](_0x4479('0xc'),_0x2ceb18,_0x4479('0xd'));logger[_0x4479('0xe')](_0x4479('0xf'),_0x2ceb18,_0x4479('0xd'),JSON[_0x4479('0x10')](_0x579c28));if(_0x579c28[_0x4479('0x11')]){if(_0x579c28[_0x4479('0x11')][_0x4479('0x12')]===0x1f4){logger[_0x4479('0x11')](_0x4479('0xc'),_0x2ceb18,_0x579c28[_0x4479('0x11')]['message']);return _0x214ac6(_0x579c28[_0x4479('0x11')][_0x4479('0x13')]);}logger[_0x4479('0x11')](_0x4479('0xc'),_0x2ceb18,_0x579c28[_0x4479('0x11')][_0x4479('0x13')]);return _0x35f162(_0x579c28['error']['message']);}else{logger[_0x4479('0x14')](_0x4479('0xc'),_0x2ceb18,_0x4479('0xd'));_0x35f162(_0x579c28[_0x4479('0x15')][_0x4479('0x13')]);}})[_0x4479('0x16')](function(_0x3cc542){logger['error']('OpenchannelApplication,\x20%s,\x20%s',_0x2ceb18,_0x3cc542);_0x214ac6(_0x3cc542);});});}exports[_0x4479('0x17')]=function(_0x18f4d0){var _0x5bf36c=this;return new Promise(function(_0x2cde40,_0x4c58e9){return db['OpenchannelApplication'][_0x4479('0x18')](_0x18f4d0[_0x4479('0x19')],{'raw':_0x18f4d0[_0x4479('0x1a')]?_0x18f4d0[_0x4479('0x1a')][_0x4479('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x18f4d0[_0x4479('0x1a')]?_0x18f4d0[_0x4479('0x1a')][_0x4479('0x1c')]||null:null,'attributes':_0x18f4d0[_0x4479('0x1a')]?_0x18f4d0[_0x4479('0x1a')][_0x4479('0x1d')]||null:null,'limit':_0x18f4d0[_0x4479('0x1a')]?_0x18f4d0[_0x4479('0x1a')]['limit']||null:null})[_0x4479('0xb')](function(_0x2f5d1d){logger[_0x4479('0x14')]('UpdateOpenchannelApplication',_0x18f4d0);logger[_0x4479('0xe')](_0x4479('0x17'),_0x18f4d0,JSON[_0x4479('0x10')](_0x2f5d1d));_0x2cde40(_0x2f5d1d);})[_0x4479('0x16')](function(_0x169832){logger['error'](_0x4479('0x17'),_0x169832['message'],_0x18f4d0);_0x4c58e9(_0x5bf36c[_0x4479('0x11')](0x1f4,_0x169832[_0x4479('0x13')]));});});};
\ No newline at end of file
index 1e3c7be..823582d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf62c=['get','isAuthenticated','index','describe','/:id','show','getMessages','/:id/download','download','post','/:id/tags','openchannelinteraction:addtags','addTags','put','tracked','openchannel','openchannelinteraction:update','update','delete','openchannelinteraction:destroy','destroy','removeTags','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x2aac0d,_0x4069ed){var _0x31807b=function(_0x2c997b){while(--_0x2c997b){_0x2aac0d['push'](_0x2aac0d['shift']());}};_0x31807b(++_0x4069ed);}(_0xf62c,0x92));var _0xcf62=function(_0x3be988,_0x5e92d8){_0x3be988=_0x3be988-0x0;var _0x4d194a=_0xf62c[_0x3be988];return _0x4d194a;};'use strict';var multer=require(_0xcf62('0x0'));var util=require('util');var path=require(_0xcf62('0x1'));var timeout=require(_0xcf62('0x2'));var express=require(_0xcf62('0x3'));var router=express[_0xcf62('0x4')]();var fs_extra=require(_0xcf62('0x5'));var auth=require(_0xcf62('0x6'));var interaction=require(_0xcf62('0x7'));var config=require(_0xcf62('0x8'));var controller=require('./openchannelInteraction.controller');router[_0xcf62('0x9')]('/',auth[_0xcf62('0xa')](),controller[_0xcf62('0xb')]);router[_0xcf62('0x9')]('/describe',auth[_0xcf62('0xa')](),controller[_0xcf62('0xc')]);router[_0xcf62('0x9')](_0xcf62('0xd'),auth[_0xcf62('0xa')](),controller[_0xcf62('0xe')]);router[_0xcf62('0x9')]('/:id/messages',auth[_0xcf62('0xa')](),controller[_0xcf62('0xf')]);router['get'](_0xcf62('0x10'),auth[_0xcf62('0xa')](),controller[_0xcf62('0x11')]);router[_0xcf62('0x12')]('/',auth[_0xcf62('0xa')](),controller['create']);router[_0xcf62('0x12')]('/:id/messages',auth[_0xcf62('0xa')](),controller['addMessage']);router[_0xcf62('0x12')](_0xcf62('0x13'),auth[_0xcf62('0xa')](),interaction['tracked']('openchannel',_0xcf62('0x14')),controller[_0xcf62('0x15')]);router[_0xcf62('0x16')]('/:id',auth[_0xcf62('0xa')](),interaction[_0xcf62('0x17')](_0xcf62('0x18'),_0xcf62('0x19')),controller[_0xcf62('0x1a')]);router[_0xcf62('0x1b')]('/:id',auth[_0xcf62('0xa')](),interaction[_0xcf62('0x17')](_0xcf62('0x18'),_0xcf62('0x1c')),controller[_0xcf62('0x1d')]);router[_0xcf62('0x1b')](_0xcf62('0x13'),auth[_0xcf62('0xa')](),controller[_0xcf62('0x1e')]);module['exports']=router;
\ No newline at end of file
+var _0x685a=['/:id','show','/:id/download','download','post','/:id/messages','/:id/tags','tracked','openchannel','openchannelinteraction:addtags','addTags','put','openchannelinteraction:update','update','delete','openchannelinteraction:destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelInteraction.controller','isAuthenticated','index','get','describe'];(function(_0x191734,_0x517d68){var _0x438d6d=function(_0x33cba2){while(--_0x33cba2){_0x191734['push'](_0x191734['shift']());}};_0x438d6d(++_0x517d68);}(_0x685a,0x147));var _0xa685=function(_0xb34bf2,_0xde8a8){_0xb34bf2=_0xb34bf2-0x0;var _0x2c7869=_0x685a[_0xb34bf2];return _0x2c7869;};'use strict';var multer=require(_0xa685('0x0'));var util=require(_0xa685('0x1'));var path=require('path');var timeout=require(_0xa685('0x2'));var express=require(_0xa685('0x3'));var router=express[_0xa685('0x4')]();var fs_extra=require(_0xa685('0x5'));var auth=require(_0xa685('0x6'));var interaction=require(_0xa685('0x7'));var config=require(_0xa685('0x8'));var controller=require(_0xa685('0x9'));router['get']('/',auth[_0xa685('0xa')](),controller[_0xa685('0xb')]);router[_0xa685('0xc')]('/describe',auth[_0xa685('0xa')](),controller[_0xa685('0xd')]);router['get'](_0xa685('0xe'),auth['isAuthenticated'](),controller[_0xa685('0xf')]);router[_0xa685('0xc')]('/:id/messages',auth[_0xa685('0xa')](),controller['getMessages']);router[_0xa685('0xc')](_0xa685('0x10'),auth[_0xa685('0xa')](),controller[_0xa685('0x11')]);router['post']('/',auth[_0xa685('0xa')](),controller['create']);router[_0xa685('0x12')](_0xa685('0x13'),auth[_0xa685('0xa')](),controller['addMessage']);router[_0xa685('0x12')](_0xa685('0x14'),auth[_0xa685('0xa')](),interaction[_0xa685('0x15')](_0xa685('0x16'),_0xa685('0x17')),controller[_0xa685('0x18')]);router[_0xa685('0x19')]('/:id',auth[_0xa685('0xa')](),interaction[_0xa685('0x15')](_0xa685('0x16'),_0xa685('0x1a')),controller[_0xa685('0x1b')]);router[_0xa685('0x1c')](_0xa685('0xe'),auth[_0xa685('0xa')](),interaction[_0xa685('0x15')](_0xa685('0x16'),_0xa685('0x1d')),controller['destroy']);router[_0xa685('0x1c')](_0xa685('0x14'),auth[_0xa685('0xa')](),controller['removeTags']);module[_0xa685('0x1e')]=router;
\ No newline at end of file
index f1b3ccc..63b0f76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e94=['DATE','STRING','ENUM','sequelize','exports'];(function(_0x87239,_0x38c793){var _0x53af1e=function(_0x11eb5f){while(--_0x11eb5f){_0x87239['push'](_0x87239['shift']());}};_0x53af1e(++_0x38c793);}(_0x8e94,0xf8));var _0x48e9=function(_0x9a29ea,_0x5b8b29){_0x9a29ea=_0x9a29ea-0x0;var _0x11f261=_0x8e94[_0x9a29ea];return _0x11f261;};'use strict';var Sequelize=require(_0x48e9('0x0'));module[_0x48e9('0x1')]={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x48e9('0x2')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0x48e9('0x3')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0x48e9('0x3')]},'read1stAt':{'type':Sequelize['DATE']},'threadId':{'type':Sequelize['STRING']},'externalUrl':{'type':Sequelize['STRING']},'lastMsgAt':{'type':Sequelize[_0x48e9('0x2')]},'lastMsgDirection':{'type':Sequelize[_0x48e9('0x4')]('in','out'),'defaultValue':'in','allowNull':![]},'from':{'type':Sequelize[_0x48e9('0x3')]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0xd56f=['BOOLEAN','STRING','ENUM','out','sequelize','exports'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0xd56f,0xe8));var _0xfd56=function(_0x22b6e5,_0x2819c8){_0x22b6e5=_0x22b6e5-0x0;var _0x1c21e5=_0xd56f[_0x22b6e5];return _0x1c21e5;};'use strict';var Sequelize=require(_0xfd56('0x0'));module[_0xfd56('0x1')]={'closed':{'type':Sequelize[_0xfd56('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0xfd56('0x3')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0xfd56('0x3')]},'note':{'type':Sequelize[_0xfd56('0x3')]},'read1stAt':{'type':Sequelize['DATE']},'threadId':{'type':Sequelize[_0xfd56('0x3')]},'externalUrl':{'type':Sequelize['STRING']},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize[_0xfd56('0x4')]('in',_0xfd56('0x5')),'defaultValue':'in','allowNull':![]},'from':{'type':Sequelize[_0xfd56('0x3')]},'autoreplyExecuted':{'type':Sequelize[_0xfd56('0x2')],'defaultValue':![]}};
\ No newline at end of file
index 1956d3c..22cc6bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a16=['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','openchannel_accounts','a.id\x20=\x20i.OpenchannelAccountId','openchannel_messages','me.OpenchannelInteractionId\x20=\x20i.id','openchannel_interaction_has_tags','it.OpenchannelInteractionId\x20=\x20i.id','expr','parseSearch','search','conditions','unreadMessages','having','`\x20>\x200','operator','$substring','value','length','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','find','buildExpression','text','start','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','body','some','compact','forEach','OpenchannelAccountId','i.OpenchannelAccountId\x20IN\x20?','concat','createdAt','parse','$gte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','tag','filter','replace','isNumeric','i.from\x20LIKE\x20?','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','Sequelize','QueryTypes','SELECT','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','DESC','isEmpty','resolve','user','agent','getOpenchannelAccounts','i.OpenchannelAccountId\x20IS\x20NULL','role','sequelize','toString','merge','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','c.lastName','Contact.lastName','c.email','Contact.email','c.phone','Contact.phone','Contact.mobile','o.fullname','Owner.fullname','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.OpenchannelInteractionId\x20IN\x20?','OpenchannelInteractionId','all','show','params','rawAttributes','includeAll','include','options','create','describe','addMessage','OpenchannelMessage','ids','getMessages','hasOwnProperty','nolimit','findAll','rows','addTags','setTags','omit','spread','color','emit','removeTags','unix','join','root','server','files','tmp','attachments','format','User','Contact','firstName','lastName','Attachment','Messages','direction','secret','OpenchannelAccount','Account','Owner','get','mkdirSync','YYYY-MM-DD\x20HH:mm:ss','closed','closedAt','threadId','Public','basename','existsSync','createReadStream','createWriteStream','out','renderFile','downloadInteraction.ejs','transcript-','Openchannel','createPdfFromHTML','log','err','unlinkSync','zip-dir','fast-json-patch','moment','bluebird','mustache','to-csv','ejs','fs-extra','lodash','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','./openchannelInteraction.socket','register','end','status','json','undefined','count','offset','limit','Content-Range','apply','reject','save','update','then','destroy','sendStatus','error','name','send','map','fullname','TagIds','Tags','split','push','catch','index','OpenchannelInteraction','fieldName','type','model','query','keys','filters','intersection','fields','attributes','order','sort','where','pick','select','field','tools_tags','u.id'];(function(_0x33fab6,_0x532a04){var _0x314e60=function(_0x56e5d6){while(--_0x56e5d6){_0x33fab6['push'](_0x33fab6['shift']());}};_0x314e60(++_0x532a04);}(_0x5a16,0xa0));var _0x65a1=function(_0x32b542,_0x4512fa){_0x32b542=_0x32b542-0x0;var _0x554d54=_0x5a16[_0x32b542];return _0x554d54;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x65a1('0x0'));var jsonpatch=require(_0x65a1('0x1'));var rp=require('request-promise');var moment=require(_0x65a1('0x2'));var BPromise=require(_0x65a1('0x3'));var Mustache=require(_0x65a1('0x4'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x65a1('0x5'));var ejs=require(_0x65a1('0x6'));var fs=require('fs');var fs_extra=require(_0x65a1('0x7'));var _=require(_0x65a1('0x8'));var squel=require('squel');var crypto=require(_0x65a1('0x9'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x65a1('0x5'));var querystring=require(_0x65a1('0xa'));var Papa=require(_0x65a1('0xb'));var Redis=require(_0x65a1('0xc'));var authService=require(_0x65a1('0xd'));var qs=require('../../components/parsers/qs');var as=require(_0x65a1('0xe'));var pdf=require(_0x65a1('0xf'));var hardwareService=require(_0x65a1('0x10'));var logger=require(_0x65a1('0x11'))('api');var utils=require(_0x65a1('0x12'));var config=require(_0x65a1('0x13'));var licenseUtil=require(_0x65a1('0x14'));var db=require(_0x65a1('0x15'))['db'];config[_0x65a1('0x16')]=_['defaults'](config[_0x65a1('0x16')],{'host':_0x65a1('0x17'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x65a1('0x16')]));require(_0x65a1('0x18'))[_0x65a1('0x19')](socket);function respondWithStatusCode(_0x1d0c4a,_0x380cc9){_0x380cc9=_0x380cc9||0xcc;return function(_0xc5d07c){if(_0xc5d07c){return _0x1d0c4a['sendStatus'](_0x380cc9);}return _0x1d0c4a['status'](_0x380cc9)[_0x65a1('0x1a')]();};}function respondWithResult(_0x50de6c,_0x447861){_0x447861=_0x447861||0xc8;return function(_0x89f7e2){if(_0x89f7e2){return _0x50de6c[_0x65a1('0x1b')](_0x447861)[_0x65a1('0x1c')](_0x89f7e2);}};}function respondWithFilteredResult(_0x33b86b,_0x1bc648){return function(_0x58d3a6){if(_0x58d3a6){var _0x4c55ad=typeof _0x1bc648['offset']===_0x65a1('0x1d')&&typeof _0x1bc648['limit']===_0x65a1('0x1d');var _0x427f65=_0x58d3a6[_0x65a1('0x1e')];var _0x2579a5=_0x4c55ad?0x0:_0x1bc648[_0x65a1('0x1f')];var _0x5d17c4=_0x4c55ad?_0x58d3a6[_0x65a1('0x1e')]:_0x1bc648[_0x65a1('0x1f')]+_0x1bc648[_0x65a1('0x20')];var _0x1f5681;if(_0x5d17c4>=_0x427f65){_0x5d17c4=_0x427f65;_0x1f5681=0xc8;}else{_0x1f5681=0xce;}_0x33b86b['status'](_0x1f5681);return _0x33b86b['set'](_0x65a1('0x21'),_0x2579a5+'-'+_0x5d17c4+'/'+_0x427f65)[_0x65a1('0x1c')](_0x58d3a6);}return null;};}function patchUpdates(_0x3ca9a5){return function(_0x4dae07){try{jsonpatch[_0x65a1('0x22')](_0x4dae07,_0x3ca9a5,!![]);}catch(_0x1f8684){return BPromise[_0x65a1('0x23')](_0x1f8684);}return _0x4dae07[_0x65a1('0x24')]();};}function saveUpdates(_0x4cc9ca,_0x3c3e36){return function(_0x16e31e){if(_0x16e31e){return _0x16e31e[_0x65a1('0x25')](_0x4cc9ca)[_0x65a1('0x26')](function(_0x33ece7){return _0x33ece7;});}return null;};}function removeEntity(_0x3e7ce3,_0x8ac862){return function(_0x17dd9c){if(_0x17dd9c){return _0x17dd9c[_0x65a1('0x27')]()[_0x65a1('0x26')](function(){_0x3e7ce3['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0xa7a525,_0x1fd48b){return function(_0x2e4a9a){if(!_0x2e4a9a){_0xa7a525[_0x65a1('0x28')](0x194);}return _0x2e4a9a;};}function handleError(_0x45509e,_0x999370){_0x999370=_0x999370||0x1f4;return function(_0x38e6a2){logger[_0x65a1('0x29')](_0x38e6a2['stack']);if(_0x38e6a2[_0x65a1('0x2a')]){delete _0x38e6a2[_0x65a1('0x2a')];}_0x45509e['status'](_0x999370)[_0x65a1('0x2b')](_0x38e6a2);};}function getInteractionUsers(_0x3da7d5,_0x1822a3){return new BPromise(function(_0x35d6a2,_0x5c97f6){try{if(_0x1822a3[_0x3da7d5['id']]){_0x3da7d5['Users']=_[_0x65a1('0x2c')](_0x1822a3[_0x3da7d5['id']],function(_0x4727ab){return{'id':_0x4727ab['id'],'fullname':_0x4727ab[_0x65a1('0x2d')]};});}}catch(_0xe5e63c){_0x5c97f6(_0xe5e63c);}_0x35d6a2(_0x3da7d5);});}function getInteractionTags(_0x512b48,_0x45a336){return new BPromise(function(_0x5cea1a,_0x280ead){try{if(_0x512b48[_0x65a1('0x2e')]){_0x512b48[_0x65a1('0x2f')]=[];_0x512b48[_0x65a1('0x2e')][_0x65a1('0x30')](',')['forEach'](function(_0x430b93){_0x512b48[_0x65a1('0x2f')][_0x65a1('0x31')](_0x45a336[_0x430b93]);});}delete _0x512b48[_0x65a1('0x2e')];}catch(_0x1d2add){_0x280ead(_0x1d2add);}_0x5cea1a(_0x512b48);});}function updateOpenchannelInteraction(_0x2f4378,_0x4a238e,_0x1075f2){return new BPromise(function(_0x1eb490,_0x546b91){return getInteractionUsers(_0x2f4378,_0x1075f2)[_0x65a1('0x26')](function(_0x536adc){return getInteractionTags(_0x536adc,_0x4a238e);})[_0x65a1('0x26')](function(_0x3ba0cb){_0x1eb490(_0x3ba0cb);})[_0x65a1('0x32')](function(_0x4e32e4){_0x546b91(_0x4e32e4);});});}exports[_0x65a1('0x33')]=function(_0x2dfbbc,_0x5705d5){var _0x3db8bd={},_0x5bc0b9={},_0x2e92f6={'count':0x0,'rows':[]};var _0x59e4b1=_[_0x65a1('0x2c')](db[_0x65a1('0x34')]['rawAttributes'],function(_0x2e5a71){return{'name':_0x2e5a71[_0x65a1('0x35')],'type':_0x2e5a71[_0x65a1('0x36')]['key']};});_0x5bc0b9[_0x65a1('0x37')]=_['map'](_0x59e4b1,_0x65a1('0x2a'));_0x5bc0b9[_0x65a1('0x38')]=_[_0x65a1('0x39')](_0x2dfbbc[_0x65a1('0x38')]);_0x5bc0b9[_0x65a1('0x3a')]=_[_0x65a1('0x3b')](_0x5bc0b9[_0x65a1('0x37')],_0x5bc0b9['query']);_0x3db8bd['attributes']=_[_0x65a1('0x3b')](_0x5bc0b9[_0x65a1('0x37')],qs[_0x65a1('0x3c')](_0x2dfbbc['query'][_0x65a1('0x3c')]));_0x3db8bd[_0x65a1('0x3d')]=_0x3db8bd['attributes']['length']?_0x3db8bd['attributes']:_0x5bc0b9[_0x65a1('0x37')];if(!_0x2dfbbc[_0x65a1('0x38')]['hasOwnProperty']('nolimit')){_0x3db8bd['limit']=qs[_0x65a1('0x20')](_0x2dfbbc[_0x65a1('0x38')][_0x65a1('0x20')]);_0x3db8bd['offset']=qs[_0x65a1('0x1f')](_0x2dfbbc[_0x65a1('0x38')][_0x65a1('0x1f')]);}_0x3db8bd[_0x65a1('0x3e')]=qs['sort'](_0x2dfbbc['query'][_0x65a1('0x3f')]);_0x3db8bd[_0x65a1('0x40')]=qs[_0x65a1('0x3a')](_[_0x65a1('0x41')](_0x2dfbbc[_0x65a1('0x38')],_0x5bc0b9[_0x65a1('0x3a')]),_0x59e4b1);var _0x3c914c=[];var _0xc994be=squel[_0x65a1('0x42')]()[_0x65a1('0x43')]('id')[_0x65a1('0x43')]('name')[_0x65a1('0x43')]('color')['from'](_0x65a1('0x44'));var _0x4a6884=squel[_0x65a1('0x42')]()[_0x65a1('0x43')](_0x65a1('0x45'))[_0x65a1('0x43')](_0x65a1('0x46'))[_0x65a1('0x43')](_0x65a1('0x47'))[_0x65a1('0x48')](_0x65a1('0x49'),'ui')[_0x65a1('0x4a')](_0x65a1('0x4b'),'u',_0x65a1('0x4c'));var _0x192c68=squel[_0x65a1('0x42')]()[_0x65a1('0x48')](_0x65a1('0x4d'),'i')[_0x65a1('0x4a')](_0x65a1('0x4e'),'c',_0x65a1('0x4f'))[_0x65a1('0x4a')]('users','o',_0x65a1('0x50'))[_0x65a1('0x4a')](_0x65a1('0x51'),'a',_0x65a1('0x52'))[_0x65a1('0x4a')](_0x65a1('0x53'),'me',_0x65a1('0x54'))[_0x65a1('0x4a')](_0x65a1('0x55'),'it',_0x65a1('0x56'))[_0x65a1('0x4a')](_0x65a1('0x44'),'t','t.id\x20=\x20it.TagId');var _0x5d7528=squel[_0x65a1('0x57')]();var _0x59e5b8=[];var _0x294413=squel['expr']();var _0x52daaa;if(_0x2dfbbc[_0x65a1('0x38')]['search']){_0x52daaa=as[_0x65a1('0x58')](_0x2dfbbc[_0x65a1('0x38')][_0x65a1('0x59')]);var _0x57a2b0=_0x52daaa['sqlOperator'];for(var _0x1ccacb=0x0;_0x1ccacb<_0x52daaa[_0x65a1('0x5a')]['length'];_0x1ccacb++){var _0xa4dd83=_0x52daaa[_0x65a1('0x5a')][_0x1ccacb];var _0xceb13b='i';var _0x15a3ee=_['find'](_0x59e4b1,[_0x65a1('0x2a'),_0xa4dd83[_0x65a1('0x43')]]);if(!_0x15a3ee){switch(_0xa4dd83[_0x65a1('0x43')]){case _0x65a1('0x5b'):if(_0xa4dd83['value']==0x1){_0x192c68['having']('`'+_0xa4dd83[_0x65a1('0x43')]+'`\x20=\x200');}else{_0x192c68[_0x65a1('0x5c')]('`'+_0xa4dd83[_0x65a1('0x43')]+_0x65a1('0x5d'));}break;case'Contact':if(_0xa4dd83[_0x65a1('0x5e')]===_0x65a1('0x5f')){if(_0xa4dd83[_0x65a1('0x60')][_0x65a1('0x30')]('\x20')[_0x65a1('0x61')]>0x1){_0x5d7528[_0x57a2b0](_0x65a1('0x62'),qs[_0x65a1('0x63')](_0xa4dd83[_0x65a1('0x60')]),null);}else{var _0x4b5b88='%'+_0xa4dd83['value']+'%';_0x5d7528[_0x57a2b0](_0x65a1('0x64'),_0x4b5b88,_0x4b5b88,_0x4b5b88);}}else{_0x15a3ee=_[_0x65a1('0x65')](_0x59e4b1,[_0x65a1('0x2a'),'ContactId']);_0xa4dd83['field']='ContactId';_0x19adc1=as[_0x65a1('0x66')](_0xceb13b,_0x15a3ee[_0x65a1('0x36')],_0xa4dd83);_0x5d7528[_0x57a2b0](_0x19adc1[_0x65a1('0x67')],_0x19adc1['value'][_0x65a1('0x68')],_0x19adc1[_0x65a1('0x60')][_0x65a1('0x1a')]);}break;case _0x65a1('0x69'):var _0x6d885e=_0xa4dd83[_0x65a1('0x60')]['split'](',')[_0x65a1('0x2c')](function(_0x3ff22d){return Number(_0x3ff22d);});_0x6d885e['forEach'](function(_0x4eb04f){_0x294413['or'](_0x65a1('0x6a'),'%,'+_0x4eb04f+',%');});_0x59e5b8=_['union'](_0x59e5b8,_0x6d885e);break;case'User':if(_0xa4dd83[_0x65a1('0x5e')]===_0x65a1('0x5f')){_0x5d7528[_0x57a2b0](_0x65a1('0x6b'),'%'+_0xa4dd83[_0x65a1('0x60')]+'%',null);}else{_0x15a3ee=_[_0x65a1('0x65')](_0x59e4b1,['name',_0x65a1('0x6c')]);_0xa4dd83[_0x65a1('0x43')]=_0x65a1('0x6c');_0x19adc1=as[_0x65a1('0x66')](_0xceb13b,_0x15a3ee[_0x65a1('0x36')],_0xa4dd83);_0x5d7528[_0x57a2b0](_0x19adc1['text'],_0x19adc1['value'][_0x65a1('0x68')],_0x19adc1[_0x65a1('0x60')][_0x65a1('0x1a')]);}break;case _0x65a1('0x6d'):_0x19adc1=as[_0x65a1('0x66')]('me',null,_0xa4dd83);_0x5d7528[_0x57a2b0](_0x19adc1['text'],_0x19adc1[_0x65a1('0x60')][_0x65a1('0x68')],_0x19adc1[_0x65a1('0x60')][_0x65a1('0x1a')]);break;}}else{var _0x19adc1=as[_0x65a1('0x66')](_0xceb13b,_0x15a3ee[_0x65a1('0x36')],_0xa4dd83);_0x5d7528[_0x57a2b0](_0x19adc1['text'],_0x19adc1['value']['start'],_0x19adc1[_0x65a1('0x60')][_0x65a1('0x1a')]);}}}else{var _0x23bf4d=_(_0x2dfbbc['query'])['keys']()[_0x65a1('0x2c')](function(_0x3fb11f){return _[_0x65a1('0x6e')](_0x59e4b1,[_0x65a1('0x2a'),_0x3fb11f])?_0x3fb11f:undefined;})[_0x65a1('0x6f')]()[_0x65a1('0x60')]();if(!_['isEmpty'](_0x23bf4d)){_0x23bf4d[_0x65a1('0x70')](function(_0x192935){if(_0x192935===_0x65a1('0x71')){_0x192c68['where'](_0x65a1('0x72'),[][_0x65a1('0x73')](_0x2dfbbc[_0x65a1('0x38')][_0x192935]));}else if(_0x192935===_0x65a1('0x74')){var _0x5bd78=JSON[_0x65a1('0x75')](_0x2dfbbc[_0x65a1('0x38')][_0x192935])[_0x65a1('0x76')];var _0x168f58=JSON[_0x65a1('0x75')](_0x2dfbbc[_0x65a1('0x38')][_0x192935])['$lte'];_0x192c68[_0x65a1('0x40')](_0x65a1('0x77'),_0x5bd78,_0x168f58);}else{if(_0x2dfbbc[_0x65a1('0x38')][_0x192935]===_0x65a1('0x78')){_0x192c68[_0x65a1('0x40')]('i.'+_0x192935+_0x65a1('0x79'));}else{_0x192c68[_0x65a1('0x40')]('i.'+_0x192935+_0x65a1('0x7a'),_0x2dfbbc[_0x65a1('0x38')][_0x192935]);}}});}if(_0x2dfbbc[_0x65a1('0x38')][_0x65a1('0x7b')]){if(_0x2dfbbc[_0x65a1('0x38')]['read']==0x1){_0x192c68[_0x65a1('0x5c')](_0x65a1('0x7c'));}else{_0x192c68['having']('`unreadMessages`\x20>\x200');}}if(_0x2dfbbc[_0x65a1('0x38')][_0x65a1('0x7d')]){_0x59e5b8=_['isArray'](_0x2dfbbc[_0x65a1('0x38')][_0x65a1('0x7d')])?_0x2dfbbc[_0x65a1('0x38')][_0x65a1('0x7d')]:new Array(_0x2dfbbc[_0x65a1('0x38')]['tag']);_0x59e5b8[_0x65a1('0x70')](function(_0x1158cd){_0x294413['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x1158cd+',%');});}if(_0x2dfbbc[_0x65a1('0x38')][_0x65a1('0x7e')]){var _0x40578a=_0x2dfbbc[_0x65a1('0x38')][_0x65a1('0x7e')][_0x65a1('0x7f')]('\x5c','\x5c\x5c')[_0x65a1('0x7f')](/'/g,'\x27\x27');if(qs[_0x65a1('0x80')](_0x40578a)){_0x5d7528['or']('i.id\x20LIKE\x20?',_0x40578a+'%');}else{_0x5d7528['or']('MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0x65a1('0x63')](_0x40578a))['or'](_0x65a1('0x81'),_0x40578a+'%')['or'](_0x65a1('0x82'),_0x40578a+'%');}}}_0x192c68['where'](_0x5d7528);_0x192c68['group']('i.id');var _0x5eed8d={'type':db[_0x65a1('0x83')][_0x65a1('0x84')][_0x65a1('0x85')],'raw':!![]};var _0x151543=_0x192c68['clone']();_0x151543[_0x65a1('0x43')]('i.id');_0x151543['field'](_0x65a1('0x86'),_0x65a1('0x5b'));if(_0x3db8bd[_0x65a1('0x3e')]){_0x3db8bd[_0x65a1('0x3e')][_0x65a1('0x70')](function(_0xd7f16e){var _0x400099=_0xd7f16e[0x0]===_0x65a1('0x87')?_0xd7f16e[0x0]:'i.'+_0xd7f16e[0x0];_0x192c68[_0x65a1('0x3e')](_0x400099,_0xd7f16e[0x1]===_0x65a1('0x88')?![]:!![]);});}if(!_[_0x65a1('0x89')](_0x59e5b8)){_0x192c68[_0x65a1('0x5c')](_0x294413);_0x151543[_0x65a1('0x40')]('t.id\x20IN\x20?',_0x59e5b8);}BPromise[_0x65a1('0x8a')]()[_0x65a1('0x26')](function(){if(!_0x52daaa){if(_0x2dfbbc[_0x65a1('0x38')][_0x65a1('0x71')])return;_0x151543['where']('i.OpenchannelAccountId\x20IS\x20NOT\x20NULL');_0x192c68[_0x65a1('0x40')]('i.OpenchannelAccountId\x20IS\x20NOT\x20NULL');return;}if(_0x2dfbbc[_0x65a1('0x8b')]['role']!==_0x65a1('0x8c'))return;return _0x2dfbbc[_0x65a1('0x8b')][_0x65a1('0x8d')]({'attributes':['id'],'raw':!![]})[_0x65a1('0x26')](function(_0x4e025f){if(_[_0x65a1('0x89')](_0x4e025f)){_0x151543['where'](_0x65a1('0x8e'));_0x192c68[_0x65a1('0x40')](_0x65a1('0x8e'));}else{_0x151543['where'](_0x65a1('0x72'),_[_0x65a1('0x2c')](_0x4e025f,'id'));_0x192c68[_0x65a1('0x40')]('i.OpenchannelAccountId\x20IN\x20?',_[_0x65a1('0x2c')](_0x4e025f,'id'));}});})[_0x65a1('0x26')](function(){if(_0x2dfbbc[_0x65a1('0x8b')][_0x65a1('0x8f')]===_0x65a1('0x8c')&&!_0x52daaa&&!_0x2dfbbc[_0x65a1('0x38')][_0x65a1('0x71')])return[];return db[_0x65a1('0x90')][_0x65a1('0x38')](_0x151543['toString'](),_0x5eed8d);})[_0x65a1('0x26')](function(_0x468ec9){_0x2e92f6['count']=_0x468ec9['length'];if(_0x2e92f6['count']===0x0)return[];return db[_0x65a1('0x90')][_0x65a1('0x38')](_0xc994be[_0x65a1('0x91')](),_0x5eed8d)[_0x65a1('0x26')](function(_0x3cd2b4){_0x3c914c=_['keyBy'](_0x3cd2b4,'id');_0x5eed8d=_[_0x65a1('0x92')](_0x5eed8d,{'model':db[_0x65a1('0x34')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x2dfbbc[_0x65a1('0x38')]['fields']){_0x3db8bd[_0x65a1('0x3d')]['forEach'](function(_0x1afdfa){_0x192c68[_0x65a1('0x43')]('i.'+_0x1afdfa);});}else{_0x192c68['field']('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0x65a1('0x5b'));_0x192c68[_0x65a1('0x43')](_0x65a1('0x93'),'Account.key');_0x192c68[_0x65a1('0x43')](_0x65a1('0x94'),_0x65a1('0x95'));_0x192c68[_0x65a1('0x43')](_0x65a1('0x96'),_0x65a1('0x87'));_0x192c68['field'](_0x65a1('0x97'));_0x192c68[_0x65a1('0x43')](_0x65a1('0x98'),_0x65a1('0x99'));_0x192c68[_0x65a1('0x43')](_0x65a1('0x9a'),_0x65a1('0x9b'));_0x192c68[_0x65a1('0x43')](_0x65a1('0x9c'),_0x65a1('0x9d'));_0x192c68[_0x65a1('0x43')](_0x65a1('0x9e'),_0x65a1('0x9f'));_0x192c68[_0x65a1('0x43')]('c.mobile',_0x65a1('0xa0'));_0x192c68['field']('c.fax','Contact.fax');_0x192c68[_0x65a1('0x43')](_0x65a1('0xa1'),_0x65a1('0xa2'));_0x192c68[_0x65a1('0x43')]('o.internal',_0x65a1('0xa3'));_0x192c68[_0x65a1('0x43')](_0x65a1('0xa4'),'TagIds');}if(_0x3db8bd[_0x65a1('0x20')])_0x192c68[_0x65a1('0x20')](_0x3db8bd[_0x65a1('0x20')]);if(_0x3db8bd['offset'])_0x192c68[_0x65a1('0x1f')](_0x3db8bd[_0x65a1('0x1f')]);return db[_0x65a1('0x90')][_0x65a1('0x38')](_0x192c68[_0x65a1('0x91')](),_0x5eed8d);})[_0x65a1('0x26')](function(_0x221ea6){if(_0x221ea6[_0x65a1('0x61')]>0x0)_0x4a6884[_0x65a1('0x40')](_0x65a1('0xa5'),_['map'](_0x221ea6,'id'));return db['sequelize'][_0x65a1('0x38')](_0x4a6884[_0x65a1('0x91')](),_0x5eed8d)[_0x65a1('0x26')](function(_0x1bf072){var _0xfa3093=_['groupBy'](_0x1bf072,_0x65a1('0xa6'));var _0x3cb478=[];_0x221ea6['forEach'](function(_0x509af8){_0x3cb478[_0x65a1('0x31')](updateOpenchannelInteraction(_0x509af8,_0x3c914c,_0xfa3093));});return BPromise[_0x65a1('0xa7')](_0x3cb478);});});})[_0x65a1('0x26')](function(_0x59c8ae){_0x2e92f6['rows']=_0x59c8ae;return _0x2e92f6;})['then'](respondWithFilteredResult(_0x5705d5,_0x3db8bd))[_0x65a1('0x32')](handleError(_0x5705d5,null));};exports[_0x65a1('0xa8')]=function(_0x59f597,_0x3b4faf){var _0x3bad05={};if(_0x59f597[_0x65a1('0x38')][_0x65a1('0x36')]&&_0x59f597[_0x65a1('0x38')]['type']==='from'){_0x3bad05['from']=_0x59f597[_0x65a1('0xa9')]['id'];}else{_0x3bad05['id']=_0x59f597[_0x65a1('0xa9')]['id'];}var _0x49f225={'raw':![],'where':_0x3bad05},_0x2fa04d={};_0x2fa04d['model']=_[_0x65a1('0x39')](db[_0x65a1('0x34')][_0x65a1('0xaa')]);_0x2fa04d[_0x65a1('0x38')]=_['keys'](_0x59f597['query']);_0x2fa04d['filters']=_[_0x65a1('0x3b')](_0x2fa04d[_0x65a1('0x37')],_0x2fa04d[_0x65a1('0x38')]);_0x49f225['attributes']=_[_0x65a1('0x3b')](_0x2fa04d[_0x65a1('0x37')],qs[_0x65a1('0x3c')](_0x59f597['query'][_0x65a1('0x3c')]));_0x49f225[_0x65a1('0x3d')]=_0x49f225[_0x65a1('0x3d')][_0x65a1('0x61')]?_0x49f225[_0x65a1('0x3d')]:_0x2fa04d[_0x65a1('0x37')];if(_0x59f597[_0x65a1('0x38')][_0x65a1('0xab')]){_0x49f225[_0x65a1('0xac')]=[{'all':!![]}];}_0x49f225=_['merge']({},_0x49f225,_0x59f597[_0x65a1('0xad')]);return db[_0x65a1('0x34')]['find'](_0x49f225)['then'](handleEntityNotFound(_0x3b4faf,null))['then'](respondWithResult(_0x3b4faf,null))[_0x65a1('0x32')](handleError(_0x3b4faf,null));};exports['create']=function(_0x4eace7,_0x1c146a){return db[_0x65a1('0x34')][_0x65a1('0xae')](_0x4eace7[_0x65a1('0x6d')],{})[_0x65a1('0x26')](respondWithResult(_0x1c146a,0xc9))[_0x65a1('0x32')](handleError(_0x1c146a,null));};exports[_0x65a1('0x25')]=function(_0x58c6f8,_0x21e7d5){if(_0x58c6f8[_0x65a1('0x6d')]['id']){delete _0x58c6f8[_0x65a1('0x6d')]['id'];}return db[_0x65a1('0x34')]['find']({'where':{'id':_0x58c6f8[_0x65a1('0xa9')]['id']}})[_0x65a1('0x26')](handleEntityNotFound(_0x21e7d5,null))[_0x65a1('0x26')](saveUpdates(_0x58c6f8[_0x65a1('0x6d')],null))[_0x65a1('0x26')](respondWithResult(_0x21e7d5,null))[_0x65a1('0x32')](handleError(_0x21e7d5,null));};exports[_0x65a1('0x27')]=function(_0x27172e,_0x33d6fd){return db[_0x65a1('0x34')]['find']({'where':{'id':_0x27172e['params']['id']}})[_0x65a1('0x26')](handleEntityNotFound(_0x33d6fd,null))['then'](removeEntity(_0x33d6fd,null))[_0x65a1('0x32')](handleError(_0x33d6fd,null));};exports[_0x65a1('0xaf')]=function(_0x2f70fa,_0x4d3900){return db[_0x65a1('0x34')][_0x65a1('0xaf')]()['then'](respondWithResult(_0x4d3900,null))[_0x65a1('0x32')](handleError(_0x4d3900,null));};exports[_0x65a1('0xb0')]=function(_0xc6255a,_0x4cd90d,_0x5d51a0){return db[_0x65a1('0xb1')][_0x65a1('0x65')]({'where':{'id':_0xc6255a['params']['id']}})[_0x65a1('0x26')](handleEntityNotFound(_0x4cd90d,null))[_0x65a1('0x26')](function(_0x4df57a){if(_0x4df57a){return _0x4df57a['addMessage'](_0xc6255a[_0x65a1('0x6d')][_0x65a1('0xb2')],_['omit'](_0xc6255a[_0x65a1('0x6d')],[_0x65a1('0xb2'),'id'])||{});}})['then'](respondWithResult(_0x4cd90d,null))['catch'](handleError(_0x4cd90d,null));};exports[_0x65a1('0xb3')]=function(_0x561d83,_0x4bb3a1,_0xd4ce72){var _0x20ab22={'raw':![],'where':{}};var _0x540a59={};var _0x1e514e={'count':0x0,'rows':[]};return db['OpenchannelInteraction']['findOne']({'where':{'id':_0x561d83['params']['id']}})[_0x65a1('0x26')](handleEntityNotFound(_0x4bb3a1,null))[_0x65a1('0x26')](function(_0x327976){if(_0x327976){_0x540a59[_0x65a1('0x37')]=_['keys'](db[_0x65a1('0xb1')][_0x65a1('0xaa')]);_0x540a59[_0x65a1('0x38')]=_[_0x65a1('0x39')](_0x561d83[_0x65a1('0x38')]);_0x540a59[_0x65a1('0x3a')]=_['intersection'](_0x540a59[_0x65a1('0x37')],_0x540a59[_0x65a1('0x38')]);_0x20ab22[_0x65a1('0x3d')]=_[_0x65a1('0x3b')](_0x540a59[_0x65a1('0x37')],qs[_0x65a1('0x3c')](_0x561d83[_0x65a1('0x38')][_0x65a1('0x3c')]));_0x20ab22[_0x65a1('0x3d')]=_0x20ab22[_0x65a1('0x3d')]['length']?_0x20ab22[_0x65a1('0x3d')]:_0x540a59[_0x65a1('0x37')];if(!_0x561d83['query'][_0x65a1('0xb4')](_0x65a1('0xb5'))){_0x20ab22[_0x65a1('0x20')]=qs[_0x65a1('0x20')](_0x561d83[_0x65a1('0x38')][_0x65a1('0x20')]);_0x20ab22[_0x65a1('0x1f')]=qs[_0x65a1('0x1f')](_0x561d83[_0x65a1('0x38')][_0x65a1('0x1f')]);}_0x20ab22[_0x65a1('0x3e')]=qs[_0x65a1('0x3f')](_0x561d83[_0x65a1('0x38')][_0x65a1('0x3f')]);_0x20ab22['where']=qs[_0x65a1('0x3a')](_['pick'](_0x561d83[_0x65a1('0x38')],_0x540a59['filters']));_0x20ab22[_0x65a1('0x40')]['OpenchannelInteractionId']=_0x327976['id'];if(_0x561d83[_0x65a1('0x38')][_0x65a1('0x7e')]){_0x20ab22['where']=_['merge'](_0x20ab22[_0x65a1('0x40')],{'$or':_[_0x65a1('0x2c')](_0x20ab22[_0x65a1('0x3d')],function(_0x3755fb){var _0x417bc2={};_0x417bc2[_0x3755fb]={'$like':'%'+_0x561d83[_0x65a1('0x38')][_0x65a1('0x7e')]+'%'};return _0x417bc2;})});}if(_0x561d83[_0x65a1('0x38')][_0x65a1('0x76')]){var _0x25084a=_0x561d83[_0x65a1('0x38')][_0x65a1('0x76')][_0x65a1('0x30')](',');var _0x2ad987={};_0x2ad987[_0x25084a[0x0]]={'$gte':moment(_0x25084a[0x1])['format']('YYYY-MM-DD\x20HH:mm:ss')};_0x20ab22[_0x65a1('0x40')]=_[_0x65a1('0x92')](_0x20ab22[_0x65a1('0x40')],_0x2ad987);}_0x20ab22=_[_0x65a1('0x92')]({},_0x20ab22,_0x561d83[_0x65a1('0xad')]);return db['OpenchannelMessage'][_0x65a1('0x1e')]({'where':_0x20ab22[_0x65a1('0x40')]})[_0x65a1('0x26')](function(_0x347c0a){_0x1e514e[_0x65a1('0x1e')]=_0x347c0a;if(_0x561d83[_0x65a1('0x38')][_0x65a1('0xab')]){_0x20ab22['include']=[{'all':!![]}];}return db[_0x65a1('0xb1')][_0x65a1('0xb6')](_0x20ab22);})[_0x65a1('0x26')](function(_0x942a30){_0x1e514e[_0x65a1('0xb7')]=_0x942a30;return _0x1e514e;});}})['then'](respondWithFilteredResult(_0x4bb3a1,_0x20ab22))[_0x65a1('0x32')](handleError(_0x4bb3a1,null));};exports[_0x65a1('0xb8')]=function(_0x3ccc2b,_0x2184cb,_0x2f98da){return db[_0x65a1('0x34')]['find']({'where':{'id':_0x3ccc2b[_0x65a1('0xa9')]['id']}})[_0x65a1('0x26')](handleEntityNotFound(_0x2184cb,null))[_0x65a1('0x26')](function(_0x3edc6d){if(_0x3edc6d){return _0x3edc6d[_0x65a1('0xb9')](_0x3ccc2b[_0x65a1('0x6d')][_0x65a1('0xb2')],_[_0x65a1('0xba')](_0x3ccc2b[_0x65a1('0x6d')],[_0x65a1('0xb2'),'id'])||{})[_0x65a1('0xbb')](function(){return db[_0x65a1('0x69')]['findAll']({'attributes':['id',_0x65a1('0x2a'),_0x65a1('0xbc')],'where':{'id':_0x3ccc2b[_0x65a1('0x6d')][_0x65a1('0xb2')]}});})['then'](function(_0x16830b){socket[_0x65a1('0xbd')]('openchannelInteractionTags:save',{'id':Number(_0x3ccc2b['params']['id']),'tags':_0x16830b||[]});return{'id':Number(_0x3ccc2b[_0x65a1('0xa9')]['id']),'tags':_0x16830b||[]};});}})[_0x65a1('0x26')](respondWithResult(_0x2184cb,null))['catch'](handleError(_0x2184cb,null));};exports[_0x65a1('0xbe')]=function(_0x7fa723,_0x1d485d,_0x12ed7e){return db[_0x65a1('0x34')][_0x65a1('0x65')]({'where':{'id':_0x7fa723[_0x65a1('0xa9')]['id']}})[_0x65a1('0x26')](handleEntityNotFound(_0x1d485d,null))[_0x65a1('0x26')](function(_0x10b0a0){if(_0x10b0a0){return _0x10b0a0[_0x65a1('0xbe')](_0x7fa723[_0x65a1('0x38')][_0x65a1('0xb2')]);}})[_0x65a1('0x26')](respondWithStatusCode(_0x1d485d,null))[_0x65a1('0x32')](handleError(_0x1d485d,null));};exports['download']=function(_0x25b2b4,_0x2b8eab){var _0x4f4818=moment()[_0x65a1('0xbf')]()[_0x65a1('0x91')]();var _0x1c06fe=path[_0x65a1('0xc0')](config[_0x65a1('0xc1')],_0x65a1('0xc2'),_0x65a1('0xc3'),_0x65a1('0xc4'));var _0xef2eff=path[_0x65a1('0xc0')](config[_0x65a1('0xc1')],_0x65a1('0xc2'),'files',_0x65a1('0xc5'));var _0x367f0e=path[_0x65a1('0xc0')](_0x1c06fe,_0x4f4818);var _0x242821=util[_0x65a1('0xc6')]('transcript-%d-%s.zip',_0x25b2b4[_0x65a1('0xa9')]['id'],_0x4f4818);var _0x4ed945=path[_0x65a1('0xc0')](_0x1c06fe,_0x242821);var _0x4c2942=[];_0x4c2942[_0x65a1('0x31')]({'model':db['User'],'as':_0x65a1('0xc7'),'attributes':['id','fullname'],'raw':!![]});_0x4c2942[_0x65a1('0x31')]({'model':db['CmContact'],'as':_0x65a1('0xc8'),'attributes':['id',_0x65a1('0xc9'),_0x65a1('0xca')],'raw':!![]});if(_0x25b2b4[_0x65a1('0x38')][_0x65a1('0xc5')]){_0x4c2942[_0x65a1('0x31')]({'model':db[_0x65a1('0xcb')],'as':'Attachment','raw':!![]});}var _0x2724d0=[{'model':db['OpenchannelMessage'],'as':_0x65a1('0xcc'),'attributes':['id',_0x65a1('0x6d'),_0x65a1('0x74'),_0x65a1('0xcd'),_0x65a1('0xce'),_0x65a1('0x7b')],'include':_0x4c2942}];_0x2724d0['push']({'model':db[_0x65a1('0xcf')],'as':_0x65a1('0xd0'),'attributes':['id','name']});_0x2724d0[_0x65a1('0x31')]({'model':db['User'],'as':_0x65a1('0xd1'),'attributes':['id',_0x65a1('0x2d')]});return db[_0x65a1('0x34')][_0x65a1('0x65')]({'where':{'id':_0x25b2b4[_0x65a1('0xa9')]['id']},'include':_0x2724d0})['then'](handleEntityNotFound(_0x2b8eab,null))['then'](function(_0x313056){if(_0x313056){var _0x4e3b4e=_0x313056[_0x65a1('0xd2')]({'plain':!![]});fs[_0x65a1('0xd3')](_0x367f0e);var _0x1daa17={'channel':'Openchannel','account':_0x4e3b4e[_0x65a1('0xd0')][_0x65a1('0x2a')],'agent':_0x4e3b4e[_0x65a1('0xd1')]?_0x4e3b4e[_0x65a1('0xd1')][_0x65a1('0x2d')]:'N.A.','createdAt':moment(_0x4e3b4e['createdAt'])[_0x65a1('0xc6')](_0x65a1('0xd4'))[_0x65a1('0x91')](),'closedAt':_0x4e3b4e[_0x65a1('0xd5')]?moment(_0x4e3b4e[_0x65a1('0xd6')])[_0x65a1('0xc6')]('YYYY-MM-DD\x20HH:mm:ss')[_0x65a1('0x91')]():'','disposition':_0x4e3b4e['disposition'],'visibility':_0x4e3b4e[_0x65a1('0xd7')]?_0x65a1('0xd8'):'Private','messages':_(_0x4e3b4e[_0x65a1('0xcc')])[_0x65a1('0x7e')]({'secret':![]})[_0x65a1('0x2c')](function(_0x22eca7){if(_0x22eca7[_0x65a1('0xcb')]){var _0x56bc7d=path[_0x65a1('0xc0')](_0xef2eff,_0x22eca7[_0x65a1('0xcb')][_0x65a1('0xd9')]);if(fs[_0x65a1('0xda')](_0x56bc7d)){fs[_0x65a1('0xdb')](_0x56bc7d)['pipe'](fs[_0x65a1('0xdc')](path[_0x65a1('0xc0')](_0x367f0e,_0x22eca7[_0x65a1('0xcb')]['basename'])));}}return{'date':moment(_0x22eca7[_0x65a1('0x74')])[_0x65a1('0xc6')]('YYYY-MM-DD\x20HH:mm:ss')[_0x65a1('0x91')](),'sender':_0x22eca7[_0x65a1('0xcd')]===_0x65a1('0xdd')?_0x22eca7[_0x65a1('0xc7')]?_0x22eca7['User'][_0x65a1('0x2d')]:'System':_0x22eca7[_0x65a1('0xc8')]['firstName']+(_0x22eca7[_0x65a1('0xc8')][_0x65a1('0xca')]?'\x20'+_0x22eca7[_0x65a1('0xc8')][_0x65a1('0xca')]:''),'body':_0x22eca7[_0x65a1('0xcb')]?_0x22eca7[_0x65a1('0xcb')][_0x65a1('0xd9')]:_0x22eca7[_0x65a1('0x6d')],'direction':_0x22eca7[_0x65a1('0xcd')]===_0x65a1('0xdd')?'A':'C','secret':_0x22eca7[_0x65a1('0xce')],'read':_0x22eca7[_0x65a1('0x7b')],'attachment':_0x22eca7[_0x65a1('0xcb')]};})[_0x65a1('0x60')]()};return ejs[_0x65a1('0xde')](path[_0x65a1('0xc0')](config[_0x65a1('0xc1')],_0x65a1('0xc2'),'views',_0x65a1('0xdf')),{'interaction':_0x1daa17})[_0x65a1('0x26')](function(_0x475a0c){var _0x2868ed=path['join'](_0x367f0e,_0x65a1('0xe0')+_0x4e3b4e['id']+'-'+_0x4f4818+'.pdf');var _0x5ef5d0={'path':_0x2868ed,'channel':_0x65a1('0xe1'),'interactionId':_0x4e3b4e['id']};return pdf[_0x65a1('0xe2')](_0x475a0c,_0x5ef5d0);})[_0x65a1('0x26')](function(){return new BPromise(function(_0x5aa893,_0x2faaf5){zipdir(_0x367f0e,{'saveTo':_0x4ed945},function(_0x53daf0,_0x2efe88){if(_0x53daf0)return _0x2faaf5(_0x53daf0);return _0x5aa893(_0x2efe88);});})['then'](function(){return new BPromise(function(_0x227d81,_0x1d2fb8){rimraf(_0x367f0e,function(_0x2c17a3){if(_0x2c17a3)_0x1d2fb8(_0x2c17a3);return _0x227d81();});});})[_0x65a1('0x26')](function(){return _0x2b8eab['download'](_0x4ed945,_0x242821,function(_0x436f92){if(_0x436f92){console[_0x65a1('0xe3')](_0x65a1('0xe4'),_0x436f92);}else{fs[_0x65a1('0xe5')](_0x4ed945);}});});});}else{return _0x2b8eab['sendStatus'](0xc8);}})[_0x65a1('0x32')](handleError(_0x2b8eab,null));};
\ No newline at end of file
+var _0x9531=['value','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','Tag','forEach','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','UserId','text','start','body','some','OpenchannelAccountId','where','concat','createdAt','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','isArray','filter','replace','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','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.OpenchannelAccountId\x20IS\x20NOT\x20NULL','role','agent','user','isEmpty','i.OpenchannelAccountId\x20IS\x20NULL','i.OpenchannelAccountId\x20IN\x20?','toString','sequelize','keyBy','merge','a.key','Account.key','a.mandatoryDisposition','Account.mandatoryDisposition','CASE\x20WHEN\x20i.from\x20IS\x20NOT\x20NULL\x20AND\x20i.from\x20<>\x20\x27\x27\x20THEN\x20i.from\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','Contact.firstName','c.lastName','Contact.lastName','c.email','Contact.email','c.phone','Contact.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','o.fullname','Owner.internal','ui.OpenchannelInteractionId\x20IN\x20?','groupBy','OpenchannelInteractionId','all','rows','show','params','includeAll','options','create','destroy','describe','addMessage','ids','getMessages','OpenchannelMessage','nolimit','format','include','findAll','addTags','setTags','omit','emit','removeTags','download','unix','files','tmp','root','server','attachments','transcript-%d-%s.zip','join','firstName','lastName','Attachment','Messages','secret','OpenchannelAccount','Account','Owner','get','mkdirSync','N.A.','YYYY-MM-DD\x20HH:mm:ss','closed','disposition','threadId','basename','existsSync','createReadStream','pipe','createWriteStream','direction','out','System','renderFile','views','downloadInteraction.ejs','transcript-','.pdf','Openchannel','createPdfFromHTML','log','unlinkSync','eml-format','rimraf','zip-dir','fast-json-patch','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./openchannelInteraction.socket','register','sendStatus','status','end','json','offset','limit','count','set','Content-Range','apply','save','update','then','name','send','map','fullname','TagIds','split','push','catch','OpenchannelInteraction','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','pick','select','field','color','from','tools_tags','u.id','u.fullname','user_has_openchannel_interactions','users','left_join','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','openchannel_accounts','a.id\x20=\x20i.OpenchannelAccountId','openchannel_messages','openchannel_interaction_has_tags','it.OpenchannelInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','parseSearch','search','sqlOperator','conditions','find','unreadMessages','having','`\x20=\x200','Contact','operator'];(function(_0x436379,_0x2ca222){var _0x31d0aa=function(_0xe85f6c){while(--_0xe85f6c){_0x436379['push'](_0x436379['shift']());}};_0x31d0aa(++_0x2ca222);}(_0x9531,0x17f));var _0x1953=function(_0x1838c4,_0x5a01ba){_0x1838c4=_0x1838c4-0x0;var _0x46d32a=_0x9531[_0x1838c4];return _0x46d32a;};'use strict';var emlformat=require(_0x1953('0x0'));var rimraf=require(_0x1953('0x1'));var zipdir=require(_0x1953('0x2'));var jsonpatch=require(_0x1953('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x1953('0x4'));var util=require(_0x1953('0x5'));var path=require(_0x1953('0x6'));var sox=require(_0x1953('0x7'));var csv=require(_0x1953('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1953('0x9'));var _=require(_0x1953('0xa'));var squel=require(_0x1953('0xb'));var crypto=require(_0x1953('0xc'));var jsforce=require(_0x1953('0xd'));var deskjs=require(_0x1953('0xe'));var toCsv=require(_0x1953('0x8'));var querystring=require(_0x1953('0xf'));var Papa=require(_0x1953('0x10'));var Redis=require(_0x1953('0x11'));var authService=require(_0x1953('0x12'));var qs=require(_0x1953('0x13'));var as=require(_0x1953('0x14'));var pdf=require(_0x1953('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x1953('0x16'))(_0x1953('0x17'));var utils=require(_0x1953('0x18'));var config=require(_0x1953('0x19'));var licenseUtil=require(_0x1953('0x1a'));var db=require(_0x1953('0x1b'))['db'];config[_0x1953('0x1c')]=_[_0x1953('0x1d')](config[_0x1953('0x1c')],{'host':_0x1953('0x1e'),'port':0x18eb});var socket=require(_0x1953('0x1f'))(new Redis(config['redis']));require(_0x1953('0x20'))[_0x1953('0x21')](socket);function respondWithStatusCode(_0x28a062,_0x1fc4f9){_0x1fc4f9=_0x1fc4f9||0xcc;return function(_0x23fc6c){if(_0x23fc6c){return _0x28a062[_0x1953('0x22')](_0x1fc4f9);}return _0x28a062[_0x1953('0x23')](_0x1fc4f9)[_0x1953('0x24')]();};}function respondWithResult(_0x429cd6,_0x5f3d5a){_0x5f3d5a=_0x5f3d5a||0xc8;return function(_0x4b9fa1){if(_0x4b9fa1){return _0x429cd6[_0x1953('0x23')](_0x5f3d5a)[_0x1953('0x25')](_0x4b9fa1);}};}function respondWithFilteredResult(_0x224c22,_0x23ac81){return function(_0x3337d3){if(_0x3337d3){var _0x335847=typeof _0x23ac81[_0x1953('0x26')]==='undefined'&&typeof _0x23ac81[_0x1953('0x27')]==='undefined';var _0x19bb39=_0x3337d3[_0x1953('0x28')];var _0x4fd7a8=_0x335847?0x0:_0x23ac81[_0x1953('0x26')];var _0x2e28f9=_0x335847?_0x3337d3['count']:_0x23ac81[_0x1953('0x26')]+_0x23ac81[_0x1953('0x27')];var _0xc6ce44;if(_0x2e28f9>=_0x19bb39){_0x2e28f9=_0x19bb39;_0xc6ce44=0xc8;}else{_0xc6ce44=0xce;}_0x224c22['status'](_0xc6ce44);return _0x224c22[_0x1953('0x29')](_0x1953('0x2a'),_0x4fd7a8+'-'+_0x2e28f9+'/'+_0x19bb39)[_0x1953('0x25')](_0x3337d3);}return null;};}function patchUpdates(_0x18177d){return function(_0x3da495){try{jsonpatch[_0x1953('0x2b')](_0x3da495,_0x18177d,!![]);}catch(_0x3613dc){return BPromise['reject'](_0x3613dc);}return _0x3da495[_0x1953('0x2c')]();};}function saveUpdates(_0x1a0491,_0x420a67){return function(_0x53b1ac){if(_0x53b1ac){return _0x53b1ac[_0x1953('0x2d')](_0x1a0491)['then'](function(_0x5db435){return _0x5db435;});}return null;};}function removeEntity(_0x2ffdcc,_0x4be756){return function(_0xe39c5f){if(_0xe39c5f){return _0xe39c5f['destroy']()[_0x1953('0x2e')](function(){_0x2ffdcc['status'](0xcc)[_0x1953('0x24')]();});}};}function handleEntityNotFound(_0x1d026b,_0x3243cd){return function(_0x237a34){if(!_0x237a34){_0x1d026b[_0x1953('0x22')](0x194);}return _0x237a34;};}function handleError(_0x14cb6d,_0x588603){_0x588603=_0x588603||0x1f4;return function(_0x2b9ee7){logger['error'](_0x2b9ee7['stack']);if(_0x2b9ee7[_0x1953('0x2f')]){delete _0x2b9ee7[_0x1953('0x2f')];}_0x14cb6d['status'](_0x588603)[_0x1953('0x30')](_0x2b9ee7);};}function getInteractionUsers(_0x468ef6,_0x354a0d){return new BPromise(function(_0x135d0d,_0x4e899c){try{if(_0x354a0d[_0x468ef6['id']]){_0x468ef6['Users']=_[_0x1953('0x31')](_0x354a0d[_0x468ef6['id']],function(_0x2f4032){return{'id':_0x2f4032['id'],'fullname':_0x2f4032[_0x1953('0x32')]};});}}catch(_0x4d97ef){_0x4e899c(_0x4d97ef);}_0x135d0d(_0x468ef6);});}function getInteractionTags(_0x3ac226,_0x499b29){return new BPromise(function(_0x1799c9,_0x58c02d){try{if(_0x3ac226[_0x1953('0x33')]){_0x3ac226['Tags']=[];_0x3ac226['TagIds'][_0x1953('0x34')](',')['forEach'](function(_0x4fde12){_0x3ac226['Tags'][_0x1953('0x35')](_0x499b29[_0x4fde12]);});}delete _0x3ac226[_0x1953('0x33')];}catch(_0x1673da){_0x58c02d(_0x1673da);}_0x1799c9(_0x3ac226);});}function updateOpenchannelInteraction(_0x385c95,_0xfa5e2e,_0x35f3c9){return new BPromise(function(_0x58ac66,_0xa601bc){return getInteractionUsers(_0x385c95,_0x35f3c9)[_0x1953('0x2e')](function(_0x3676ea){return getInteractionTags(_0x3676ea,_0xfa5e2e);})[_0x1953('0x2e')](function(_0x4aea77){_0x58ac66(_0x4aea77);})[_0x1953('0x36')](function(_0x52f44c){_0xa601bc(_0x52f44c);});});}exports['index']=function(_0x15f815,_0x2b9921){var _0x4d522b={},_0x4480f3={},_0x266b76={'count':0x0,'rows':[]};var _0x20ea04=_['map'](db[_0x1953('0x37')][_0x1953('0x38')],function(_0x2eef61){return{'name':_0x2eef61[_0x1953('0x39')],'type':_0x2eef61[_0x1953('0x3a')]['key']};});_0x4480f3[_0x1953('0x3b')]=_[_0x1953('0x31')](_0x20ea04,_0x1953('0x2f'));_0x4480f3[_0x1953('0x3c')]=_[_0x1953('0x3d')](_0x15f815['query']);_0x4480f3[_0x1953('0x3e')]=_[_0x1953('0x3f')](_0x4480f3[_0x1953('0x3b')],_0x4480f3[_0x1953('0x3c')]);_0x4d522b[_0x1953('0x40')]=_[_0x1953('0x3f')](_0x4480f3['model'],qs['fields'](_0x15f815[_0x1953('0x3c')][_0x1953('0x41')]));_0x4d522b['attributes']=_0x4d522b['attributes'][_0x1953('0x42')]?_0x4d522b['attributes']:_0x4480f3[_0x1953('0x3b')];if(!_0x15f815['query'][_0x1953('0x43')]('nolimit')){_0x4d522b[_0x1953('0x27')]=qs[_0x1953('0x27')](_0x15f815['query'][_0x1953('0x27')]);_0x4d522b['offset']=qs[_0x1953('0x26')](_0x15f815[_0x1953('0x3c')][_0x1953('0x26')]);}_0x4d522b[_0x1953('0x44')]=qs[_0x1953('0x45')](_0x15f815[_0x1953('0x3c')][_0x1953('0x45')]);_0x4d522b['where']=qs[_0x1953('0x3e')](_[_0x1953('0x46')](_0x15f815[_0x1953('0x3c')],_0x4480f3[_0x1953('0x3e')]),_0x20ea04);var _0x263749=[];var _0x93cc9c=squel[_0x1953('0x47')]()[_0x1953('0x48')]('id')[_0x1953('0x48')](_0x1953('0x2f'))['field'](_0x1953('0x49'))[_0x1953('0x4a')](_0x1953('0x4b'));var _0x27c59e=squel[_0x1953('0x47')]()[_0x1953('0x48')](_0x1953('0x4c'))[_0x1953('0x48')](_0x1953('0x4d'))[_0x1953('0x48')]('ui.OpenchannelInteractionId')[_0x1953('0x4a')](_0x1953('0x4e'),'ui')['left_join'](_0x1953('0x4f'),'u','u.id\x20=\x20ui.UserId');var _0xe40872=squel['select']()[_0x1953('0x4a')]('openchannel_interactions','i')[_0x1953('0x50')](_0x1953('0x51'),'c',_0x1953('0x52'))[_0x1953('0x50')](_0x1953('0x4f'),'o',_0x1953('0x53'))['left_join'](_0x1953('0x54'),'a',_0x1953('0x55'))[_0x1953('0x50')](_0x1953('0x56'),'me','me.OpenchannelInteractionId\x20=\x20i.id')[_0x1953('0x50')](_0x1953('0x57'),'it',_0x1953('0x58'))['left_join'](_0x1953('0x4b'),'t',_0x1953('0x59'));var _0x2cb7f2=squel[_0x1953('0x5a')]();var _0x4e9322=[];var _0x1b4c38=squel[_0x1953('0x5a')]();var _0x20cfc4;if(_0x15f815[_0x1953('0x3c')]['search']){_0x20cfc4=as[_0x1953('0x5b')](_0x15f815[_0x1953('0x3c')][_0x1953('0x5c')]);var _0x131f01=_0x20cfc4[_0x1953('0x5d')];for(var _0x146028=0x0;_0x146028<_0x20cfc4[_0x1953('0x5e')][_0x1953('0x42')];_0x146028++){var _0x1f27df=_0x20cfc4[_0x1953('0x5e')][_0x146028];var _0x535918='i';var _0x166afd=_[_0x1953('0x5f')](_0x20ea04,[_0x1953('0x2f'),_0x1f27df[_0x1953('0x48')]]);if(!_0x166afd){switch(_0x1f27df[_0x1953('0x48')]){case _0x1953('0x60'):if(_0x1f27df['value']==0x1){_0xe40872[_0x1953('0x61')]('`'+_0x1f27df['field']+_0x1953('0x62'));}else{_0xe40872['having']('`'+_0x1f27df[_0x1953('0x48')]+'`\x20>\x200');}break;case _0x1953('0x63'):if(_0x1f27df[_0x1953('0x64')]==='$substring'){if(_0x1f27df[_0x1953('0x65')][_0x1953('0x34')]('\x20')[_0x1953('0x42')]>0x1){_0x2cb7f2[_0x131f01](_0x1953('0x66'),qs[_0x1953('0x67')](_0x1f27df[_0x1953('0x65')]),null);}else{var _0x3873c9='%'+_0x1f27df['value']+'%';_0x2cb7f2[_0x131f01](_0x1953('0x68'),_0x3873c9,_0x3873c9,_0x3873c9);}}else{_0x166afd=_[_0x1953('0x5f')](_0x20ea04,[_0x1953('0x2f'),_0x1953('0x69')]);_0x1f27df[_0x1953('0x48')]='ContactId';_0x27dc2e=as[_0x1953('0x6a')](_0x535918,_0x166afd['type'],_0x1f27df);_0x2cb7f2[_0x131f01](_0x27dc2e['text'],_0x27dc2e[_0x1953('0x65')]['start'],_0x27dc2e[_0x1953('0x65')]['end']);}break;case _0x1953('0x6b'):var _0x5a31fa=_0x1f27df[_0x1953('0x65')]['split'](',')[_0x1953('0x31')](function(_0x2120a2){return Number(_0x2120a2);});_0x5a31fa[_0x1953('0x6c')](function(_0x315180){_0x1b4c38['or'](_0x1953('0x6d'),'%,'+_0x315180+',%');});_0x4e9322=_[_0x1953('0x6e')](_0x4e9322,_0x5a31fa);break;case _0x1953('0x6f'):if(_0x1f27df[_0x1953('0x64')]==='$substring'){_0x2cb7f2[_0x131f01]('CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','%'+_0x1f27df[_0x1953('0x65')]+'%',null);}else{_0x166afd=_[_0x1953('0x5f')](_0x20ea04,[_0x1953('0x2f'),_0x1953('0x70')]);_0x1f27df['field']=_0x1953('0x70');_0x27dc2e=as[_0x1953('0x6a')](_0x535918,_0x166afd['type'],_0x1f27df);_0x2cb7f2[_0x131f01](_0x27dc2e[_0x1953('0x71')],_0x27dc2e['value'][_0x1953('0x72')],_0x27dc2e[_0x1953('0x65')]['end']);}break;case _0x1953('0x73'):_0x27dc2e=as[_0x1953('0x6a')]('me',null,_0x1f27df);_0x2cb7f2[_0x131f01](_0x27dc2e[_0x1953('0x71')],_0x27dc2e[_0x1953('0x65')][_0x1953('0x72')],_0x27dc2e[_0x1953('0x65')][_0x1953('0x24')]);break;}}else{var _0x27dc2e=as[_0x1953('0x6a')](_0x535918,_0x166afd[_0x1953('0x3a')],_0x1f27df);_0x2cb7f2[_0x131f01](_0x27dc2e['text'],_0x27dc2e[_0x1953('0x65')]['start'],_0x27dc2e[_0x1953('0x65')][_0x1953('0x24')]);}}}else{var _0x35c9ee=_(_0x15f815[_0x1953('0x3c')])['keys']()[_0x1953('0x31')](function(_0x4036da){return _[_0x1953('0x74')](_0x20ea04,['name',_0x4036da])?_0x4036da:undefined;})['compact']()[_0x1953('0x65')]();if(!_['isEmpty'](_0x35c9ee)){_0x35c9ee[_0x1953('0x6c')](function(_0x2eccc3){if(_0x2eccc3===_0x1953('0x75')){_0xe40872[_0x1953('0x76')]('i.OpenchannelAccountId\x20IN\x20?',[][_0x1953('0x77')](_0x15f815[_0x1953('0x3c')][_0x2eccc3]));}else if(_0x2eccc3===_0x1953('0x78')){var _0x2c4464=JSON[_0x1953('0x79')](_0x15f815[_0x1953('0x3c')][_0x2eccc3])[_0x1953('0x7a')];var _0x2bd222=JSON[_0x1953('0x79')](_0x15f815['query'][_0x2eccc3])[_0x1953('0x7b')];_0xe40872['where'](_0x1953('0x7c'),_0x2c4464,_0x2bd222);}else{if(_0x15f815[_0x1953('0x3c')][_0x2eccc3]===_0x1953('0x7d')){_0xe40872[_0x1953('0x76')]('i.'+_0x2eccc3+_0x1953('0x7e'));}else{_0xe40872[_0x1953('0x76')]('i.'+_0x2eccc3+'\x20=\x20?',_0x15f815[_0x1953('0x3c')][_0x2eccc3]);}}});}if(_0x15f815[_0x1953('0x3c')][_0x1953('0x7f')]){if(_0x15f815[_0x1953('0x3c')][_0x1953('0x7f')]==0x1){_0xe40872[_0x1953('0x61')](_0x1953('0x80'));}else{_0xe40872[_0x1953('0x61')](_0x1953('0x81'));}}if(_0x15f815[_0x1953('0x3c')][_0x1953('0x82')]){_0x4e9322=_[_0x1953('0x83')](_0x15f815[_0x1953('0x3c')][_0x1953('0x82')])?_0x15f815[_0x1953('0x3c')][_0x1953('0x82')]:new Array(_0x15f815[_0x1953('0x3c')][_0x1953('0x82')]);_0x4e9322[_0x1953('0x6c')](function(_0x43b366){_0x1b4c38['or'](_0x1953('0x6d'),'%,'+_0x43b366+',%');});}if(_0x15f815[_0x1953('0x3c')][_0x1953('0x84')]){var _0x551f82=_0x15f815[_0x1953('0x3c')][_0x1953('0x84')]['replace']('\x5c','\x5c\x5c')[_0x1953('0x85')](/'/g,'\x27\x27');if(qs['isNumeric'](_0x551f82)){_0x2cb7f2['or'](_0x1953('0x86'),_0x551f82+'%');}else{_0x2cb7f2['or'](_0x1953('0x87'),qs['getFullTextValue'](_0x551f82))['or']('i.from\x20LIKE\x20?',_0x551f82+'%')['or'](_0x1953('0x88'),_0x551f82+'%');}}}_0xe40872['where'](_0x2cb7f2);_0xe40872[_0x1953('0x89')]('i.id');var _0xb2010a={'type':db[_0x1953('0x8a')][_0x1953('0x8b')]['SELECT'],'raw':!![]};var _0x20823f=_0xe40872[_0x1953('0x8c')]();_0x20823f[_0x1953('0x48')](_0x1953('0x8d'));_0x20823f['field'](_0x1953('0x8e'),_0x1953('0x60'));if(_0x4d522b[_0x1953('0x44')]){_0x4d522b[_0x1953('0x44')]['forEach'](function(_0xc9732a){var _0x543da9=_0xc9732a[0x0]===_0x1953('0x8f')?_0xc9732a[0x0]:'i.'+_0xc9732a[0x0];_0xe40872[_0x1953('0x44')](_0x543da9,_0xc9732a[0x1]===_0x1953('0x90')?![]:!![]);});}if(!_['isEmpty'](_0x4e9322)){_0xe40872[_0x1953('0x61')](_0x1b4c38);_0x20823f[_0x1953('0x76')](_0x1953('0x91'),_0x4e9322);}BPromise[_0x1953('0x92')]()['then'](function(){if(!_0x20cfc4){if(_0x15f815[_0x1953('0x3c')][_0x1953('0x75')])return;_0x20823f['where'](_0x1953('0x93'));_0xe40872['where'](_0x1953('0x93'));return;}if(_0x15f815['user'][_0x1953('0x94')]!==_0x1953('0x95'))return;return _0x15f815[_0x1953('0x96')]['getOpenchannelAccounts']({'attributes':['id'],'raw':!![]})[_0x1953('0x2e')](function(_0x4f2c06){if(_[_0x1953('0x97')](_0x4f2c06)){_0x20823f['where']('i.OpenchannelAccountId\x20IS\x20NULL');_0xe40872['where'](_0x1953('0x98'));}else{_0x20823f[_0x1953('0x76')]('i.OpenchannelAccountId\x20IN\x20?',_[_0x1953('0x31')](_0x4f2c06,'id'));_0xe40872[_0x1953('0x76')](_0x1953('0x99'),_[_0x1953('0x31')](_0x4f2c06,'id'));}});})[_0x1953('0x2e')](function(){if(_0x15f815['user']['role']===_0x1953('0x95')&&!_0x20cfc4&&!_0x15f815[_0x1953('0x3c')]['OpenchannelAccountId'])return[];return db['sequelize']['query'](_0x20823f[_0x1953('0x9a')](),_0xb2010a);})['then'](function(_0x4533a2){_0x266b76[_0x1953('0x28')]=_0x4533a2['length'];if(_0x266b76[_0x1953('0x28')]===0x0)return[];return db[_0x1953('0x9b')]['query'](_0x93cc9c['toString'](),_0xb2010a)['then'](function(_0x12269b){_0x263749=_[_0x1953('0x9c')](_0x12269b,'id');_0xb2010a=_[_0x1953('0x9d')](_0xb2010a,{'model':db[_0x1953('0x37')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x15f815[_0x1953('0x3c')][_0x1953('0x41')]){_0x4d522b[_0x1953('0x40')][_0x1953('0x6c')](function(_0x27d705){_0xe40872['field']('i.'+_0x27d705);});}else{_0xe40872[_0x1953('0x48')](_0x1953('0x8e'),_0x1953('0x60'));_0xe40872['field'](_0x1953('0x9e'),_0x1953('0x9f'));_0xe40872['field'](_0x1953('0xa0'),_0x1953('0xa1'));_0xe40872['field'](_0x1953('0xa2'),_0x1953('0x8f'));_0xe40872[_0x1953('0x48')]('i.*');_0xe40872[_0x1953('0x48')]('c.firstName',_0x1953('0xa3'));_0xe40872[_0x1953('0x48')](_0x1953('0xa4'),_0x1953('0xa5'));_0xe40872[_0x1953('0x48')](_0x1953('0xa6'),_0x1953('0xa7'));_0xe40872['field'](_0x1953('0xa8'),_0x1953('0xa9'));_0xe40872[_0x1953('0x48')](_0x1953('0xaa'),_0x1953('0xab'));_0xe40872[_0x1953('0x48')](_0x1953('0xac'),_0x1953('0xad'));_0xe40872[_0x1953('0x48')](_0x1953('0xae'),'Owner.fullname');_0xe40872[_0x1953('0x48')]('o.internal',_0x1953('0xaf'));_0xe40872[_0x1953('0x48')]('GROUP_CONCAT(DISTINCT\x20t.id)',_0x1953('0x33'));}if(_0x4d522b[_0x1953('0x27')])_0xe40872[_0x1953('0x27')](_0x4d522b['limit']);if(_0x4d522b['offset'])_0xe40872[_0x1953('0x26')](_0x4d522b[_0x1953('0x26')]);return db[_0x1953('0x9b')][_0x1953('0x3c')](_0xe40872[_0x1953('0x9a')](),_0xb2010a);})[_0x1953('0x2e')](function(_0x22c696){if(_0x22c696[_0x1953('0x42')]>0x0)_0x27c59e['where'](_0x1953('0xb0'),_[_0x1953('0x31')](_0x22c696,'id'));return db[_0x1953('0x9b')][_0x1953('0x3c')](_0x27c59e[_0x1953('0x9a')](),_0xb2010a)['then'](function(_0x45d977){var _0x1d4bfb=_[_0x1953('0xb1')](_0x45d977,_0x1953('0xb2'));var _0x480d75=[];_0x22c696[_0x1953('0x6c')](function(_0x48f254){_0x480d75[_0x1953('0x35')](updateOpenchannelInteraction(_0x48f254,_0x263749,_0x1d4bfb));});return BPromise[_0x1953('0xb3')](_0x480d75);});});})['then'](function(_0x5f94d8){_0x266b76[_0x1953('0xb4')]=_0x5f94d8;return _0x266b76;})['then'](respondWithFilteredResult(_0x2b9921,_0x4d522b))[_0x1953('0x36')](handleError(_0x2b9921,null));};exports[_0x1953('0xb5')]=function(_0x1739fc,_0x1dc44b){var _0x4778ed={};if(_0x1739fc[_0x1953('0x3c')][_0x1953('0x3a')]&&_0x1739fc[_0x1953('0x3c')]['type']==='from'){_0x4778ed['from']=_0x1739fc[_0x1953('0xb6')]['id'];}else{_0x4778ed['id']=_0x1739fc['params']['id'];}var _0xfba721={'raw':![],'where':_0x4778ed},_0x41f7f9={};_0x41f7f9['model']=_[_0x1953('0x3d')](db[_0x1953('0x37')]['rawAttributes']);_0x41f7f9[_0x1953('0x3c')]=_['keys'](_0x1739fc[_0x1953('0x3c')]);_0x41f7f9[_0x1953('0x3e')]=_[_0x1953('0x3f')](_0x41f7f9[_0x1953('0x3b')],_0x41f7f9[_0x1953('0x3c')]);_0xfba721[_0x1953('0x40')]=_['intersection'](_0x41f7f9[_0x1953('0x3b')],qs[_0x1953('0x41')](_0x1739fc['query'][_0x1953('0x41')]));_0xfba721[_0x1953('0x40')]=_0xfba721[_0x1953('0x40')]['length']?_0xfba721['attributes']:_0x41f7f9[_0x1953('0x3b')];if(_0x1739fc[_0x1953('0x3c')][_0x1953('0xb7')]){_0xfba721['include']=[{'all':!![]}];}_0xfba721=_[_0x1953('0x9d')]({},_0xfba721,_0x1739fc[_0x1953('0xb8')]);return db[_0x1953('0x37')][_0x1953('0x5f')](_0xfba721)[_0x1953('0x2e')](handleEntityNotFound(_0x1dc44b,null))[_0x1953('0x2e')](respondWithResult(_0x1dc44b,null))[_0x1953('0x36')](handleError(_0x1dc44b,null));};exports[_0x1953('0xb9')]=function(_0xd46137,_0x5c7771){return db[_0x1953('0x37')][_0x1953('0xb9')](_0xd46137[_0x1953('0x73')],{})[_0x1953('0x2e')](respondWithResult(_0x5c7771,0xc9))[_0x1953('0x36')](handleError(_0x5c7771,null));};exports['update']=function(_0x407dc0,_0xa3f4e8){if(_0x407dc0[_0x1953('0x73')]['id']){delete _0x407dc0['body']['id'];}return db[_0x1953('0x37')][_0x1953('0x5f')]({'where':{'id':_0x407dc0['params']['id']}})[_0x1953('0x2e')](handleEntityNotFound(_0xa3f4e8,null))[_0x1953('0x2e')](saveUpdates(_0x407dc0[_0x1953('0x73')],null))['then'](respondWithResult(_0xa3f4e8,null))[_0x1953('0x36')](handleError(_0xa3f4e8,null));};exports[_0x1953('0xba')]=function(_0x12df0c,_0x4b1d73){return db[_0x1953('0x37')][_0x1953('0x5f')]({'where':{'id':_0x12df0c['params']['id']}})['then'](handleEntityNotFound(_0x4b1d73,null))[_0x1953('0x2e')](removeEntity(_0x4b1d73,null))[_0x1953('0x36')](handleError(_0x4b1d73,null));};exports[_0x1953('0xbb')]=function(_0x955a39,_0x1112fc){return db[_0x1953('0x37')]['describe']()[_0x1953('0x2e')](respondWithResult(_0x1112fc,null))[_0x1953('0x36')](handleError(_0x1112fc,null));};exports['addMessage']=function(_0x514355,_0x1ac5c1,_0x4c457f){return db['OpenchannelMessage'][_0x1953('0x5f')]({'where':{'id':_0x514355[_0x1953('0xb6')]['id']}})['then'](handleEntityNotFound(_0x1ac5c1,null))[_0x1953('0x2e')](function(_0x25f834){if(_0x25f834){return _0x25f834[_0x1953('0xbc')](_0x514355[_0x1953('0x73')][_0x1953('0xbd')],_['omit'](_0x514355['body'],[_0x1953('0xbd'),'id'])||{});}})['then'](respondWithResult(_0x1ac5c1,null))[_0x1953('0x36')](handleError(_0x1ac5c1,null));};exports[_0x1953('0xbe')]=function(_0x516d70,_0x20132e,_0x1b5df9){var _0x33f722={'raw':![],'where':{}};var _0x31a05c={};var _0x2af9c9={'count':0x0,'rows':[]};return db['OpenchannelInteraction']['findOne']({'where':{'id':_0x516d70[_0x1953('0xb6')]['id']}})[_0x1953('0x2e')](handleEntityNotFound(_0x20132e,null))[_0x1953('0x2e')](function(_0x3ccdf2){if(_0x3ccdf2){_0x31a05c[_0x1953('0x3b')]=_[_0x1953('0x3d')](db[_0x1953('0xbf')][_0x1953('0x38')]);_0x31a05c['query']=_[_0x1953('0x3d')](_0x516d70[_0x1953('0x3c')]);_0x31a05c[_0x1953('0x3e')]=_['intersection'](_0x31a05c[_0x1953('0x3b')],_0x31a05c[_0x1953('0x3c')]);_0x33f722[_0x1953('0x40')]=_[_0x1953('0x3f')](_0x31a05c[_0x1953('0x3b')],qs[_0x1953('0x41')](_0x516d70[_0x1953('0x3c')]['fields']));_0x33f722['attributes']=_0x33f722[_0x1953('0x40')]['length']?_0x33f722[_0x1953('0x40')]:_0x31a05c['model'];if(!_0x516d70[_0x1953('0x3c')]['hasOwnProperty'](_0x1953('0xc0'))){_0x33f722[_0x1953('0x27')]=qs[_0x1953('0x27')](_0x516d70[_0x1953('0x3c')]['limit']);_0x33f722[_0x1953('0x26')]=qs[_0x1953('0x26')](_0x516d70[_0x1953('0x3c')]['offset']);}_0x33f722[_0x1953('0x44')]=qs[_0x1953('0x45')](_0x516d70[_0x1953('0x3c')][_0x1953('0x45')]);_0x33f722[_0x1953('0x76')]=qs[_0x1953('0x3e')](_[_0x1953('0x46')](_0x516d70[_0x1953('0x3c')],_0x31a05c[_0x1953('0x3e')]));_0x33f722['where'][_0x1953('0xb2')]=_0x3ccdf2['id'];if(_0x516d70[_0x1953('0x3c')]['filter']){_0x33f722[_0x1953('0x76')]=_['merge'](_0x33f722['where'],{'$or':_[_0x1953('0x31')](_0x33f722['attributes'],function(_0x232de5){var _0x46272f={};_0x46272f[_0x232de5]={'$like':'%'+_0x516d70[_0x1953('0x3c')]['filter']+'%'};return _0x46272f;})});}if(_0x516d70[_0x1953('0x3c')]['$gte']){var _0x3cb689=_0x516d70[_0x1953('0x3c')][_0x1953('0x7a')][_0x1953('0x34')](',');var _0x2044c2={};_0x2044c2[_0x3cb689[0x0]]={'$gte':moment(_0x3cb689[0x1])[_0x1953('0xc1')]('YYYY-MM-DD\x20HH:mm:ss')};_0x33f722[_0x1953('0x76')]=_['merge'](_0x33f722['where'],_0x2044c2);}_0x33f722=_[_0x1953('0x9d')]({},_0x33f722,_0x516d70[_0x1953('0xb8')]);return db[_0x1953('0xbf')]['count']({'where':_0x33f722['where']})['then'](function(_0x2f67c8){_0x2af9c9[_0x1953('0x28')]=_0x2f67c8;if(_0x516d70['query']['includeAll']){_0x33f722[_0x1953('0xc2')]=[{'all':!![]}];}return db[_0x1953('0xbf')][_0x1953('0xc3')](_0x33f722);})[_0x1953('0x2e')](function(_0x54c5cd){_0x2af9c9[_0x1953('0xb4')]=_0x54c5cd;return _0x2af9c9;});}})[_0x1953('0x2e')](respondWithFilteredResult(_0x20132e,_0x33f722))[_0x1953('0x36')](handleError(_0x20132e,null));};exports[_0x1953('0xc4')]=function(_0x3ba618,_0xe3d2ad,_0x5cf888){return db[_0x1953('0x37')]['find']({'where':{'id':_0x3ba618[_0x1953('0xb6')]['id']}})[_0x1953('0x2e')](handleEntityNotFound(_0xe3d2ad,null))[_0x1953('0x2e')](function(_0x1859c0){if(_0x1859c0){return _0x1859c0[_0x1953('0xc5')](_0x3ba618[_0x1953('0x73')][_0x1953('0xbd')],_[_0x1953('0xc6')](_0x3ba618[_0x1953('0x73')],[_0x1953('0xbd'),'id'])||{})['spread'](function(){return db['Tag']['findAll']({'attributes':['id',_0x1953('0x2f'),_0x1953('0x49')],'where':{'id':_0x3ba618[_0x1953('0x73')][_0x1953('0xbd')]}});})[_0x1953('0x2e')](function(_0x49e99b){socket[_0x1953('0xc7')]('openchannelInteractionTags:save',{'id':Number(_0x3ba618[_0x1953('0xb6')]['id']),'tags':_0x49e99b||[]});return{'id':Number(_0x3ba618['params']['id']),'tags':_0x49e99b||[]};});}})['then'](respondWithResult(_0xe3d2ad,null))[_0x1953('0x36')](handleError(_0xe3d2ad,null));};exports[_0x1953('0xc8')]=function(_0x2e6f4b,_0x261859,_0x49deb6){return db[_0x1953('0x37')]['find']({'where':{'id':_0x2e6f4b[_0x1953('0xb6')]['id']}})[_0x1953('0x2e')](handleEntityNotFound(_0x261859,null))['then'](function(_0x1738d9){if(_0x1738d9){return _0x1738d9[_0x1953('0xc8')](_0x2e6f4b[_0x1953('0x3c')][_0x1953('0xbd')]);}})[_0x1953('0x2e')](respondWithStatusCode(_0x261859,null))['catch'](handleError(_0x261859,null));};exports[_0x1953('0xc9')]=function(_0x38f9f3,_0x51b11d){var _0x465904=moment()[_0x1953('0xca')]()['toString']();var _0x1e1107=path['join'](config['root'],'server',_0x1953('0xcb'),_0x1953('0xcc'));var _0x477151=path['join'](config[_0x1953('0xcd')],_0x1953('0xce'),_0x1953('0xcb'),_0x1953('0xcf'));var _0x2f3bc2=path['join'](_0x1e1107,_0x465904);var _0x5bbe3f=util[_0x1953('0xc1')](_0x1953('0xd0'),_0x38f9f3[_0x1953('0xb6')]['id'],_0x465904);var _0x14c4d2=path[_0x1953('0xd1')](_0x1e1107,_0x5bbe3f);var _0x5413a8=[];_0x5413a8[_0x1953('0x35')]({'model':db[_0x1953('0x6f')],'as':_0x1953('0x6f'),'attributes':['id',_0x1953('0x32')],'raw':!![]});_0x5413a8[_0x1953('0x35')]({'model':db['CmContact'],'as':_0x1953('0x63'),'attributes':['id',_0x1953('0xd2'),_0x1953('0xd3')],'raw':!![]});if(_0x38f9f3[_0x1953('0x3c')]['attachments']){_0x5413a8[_0x1953('0x35')]({'model':db['Attachment'],'as':_0x1953('0xd4'),'raw':!![]});}var _0x4a0278=[{'model':db[_0x1953('0xbf')],'as':_0x1953('0xd5'),'attributes':['id',_0x1953('0x73'),'createdAt','direction',_0x1953('0xd6'),_0x1953('0x7f')],'include':_0x5413a8}];_0x4a0278['push']({'model':db[_0x1953('0xd7')],'as':_0x1953('0xd8'),'attributes':['id',_0x1953('0x2f')]});_0x4a0278[_0x1953('0x35')]({'model':db[_0x1953('0x6f')],'as':_0x1953('0xd9'),'attributes':['id',_0x1953('0x32')]});return db[_0x1953('0x37')][_0x1953('0x5f')]({'where':{'id':_0x38f9f3[_0x1953('0xb6')]['id']},'include':_0x4a0278})[_0x1953('0x2e')](handleEntityNotFound(_0x51b11d,null))[_0x1953('0x2e')](function(_0xfb4c20){if(_0xfb4c20){var _0x46e323=_0xfb4c20[_0x1953('0xda')]({'plain':!![]});fs[_0x1953('0xdb')](_0x2f3bc2);var _0x2b89eb={'channel':'Openchannel','account':_0x46e323[_0x1953('0xd8')][_0x1953('0x2f')],'agent':_0x46e323[_0x1953('0xd9')]?_0x46e323[_0x1953('0xd9')]['fullname']:_0x1953('0xdc'),'createdAt':moment(_0x46e323['createdAt'])[_0x1953('0xc1')](_0x1953('0xdd'))['toString'](),'closedAt':_0x46e323[_0x1953('0xde')]?moment(_0x46e323['closedAt'])[_0x1953('0xc1')](_0x1953('0xdd'))[_0x1953('0x9a')]():'','disposition':_0x46e323[_0x1953('0xdf')],'visibility':_0x46e323[_0x1953('0xe0')]?'Public':'Private','messages':_(_0x46e323['Messages'])[_0x1953('0x84')]({'secret':![]})[_0x1953('0x31')](function(_0x29e40e){if(_0x29e40e[_0x1953('0xd4')]){var _0x171e5b=path[_0x1953('0xd1')](_0x477151,_0x29e40e[_0x1953('0xd4')][_0x1953('0xe1')]);if(fs[_0x1953('0xe2')](_0x171e5b)){fs[_0x1953('0xe3')](_0x171e5b)[_0x1953('0xe4')](fs[_0x1953('0xe5')](path['join'](_0x2f3bc2,_0x29e40e[_0x1953('0xd4')][_0x1953('0xe1')])));}}return{'date':moment(_0x29e40e[_0x1953('0x78')])[_0x1953('0xc1')](_0x1953('0xdd'))['toString'](),'sender':_0x29e40e[_0x1953('0xe6')]===_0x1953('0xe7')?_0x29e40e[_0x1953('0x6f')]?_0x29e40e[_0x1953('0x6f')][_0x1953('0x32')]:_0x1953('0xe8'):_0x29e40e[_0x1953('0x63')]['firstName']+(_0x29e40e[_0x1953('0x63')]['lastName']?'\x20'+_0x29e40e[_0x1953('0x63')]['lastName']:''),'body':_0x29e40e[_0x1953('0xd4')]?_0x29e40e[_0x1953('0xd4')][_0x1953('0xe1')]:_0x29e40e[_0x1953('0x73')],'direction':_0x29e40e[_0x1953('0xe6')]===_0x1953('0xe7')?'A':'C','secret':_0x29e40e[_0x1953('0xd6')],'read':_0x29e40e['read'],'attachment':_0x29e40e[_0x1953('0xd4')]};})[_0x1953('0x65')]()};return ejs[_0x1953('0xe9')](path[_0x1953('0xd1')](config[_0x1953('0xcd')],_0x1953('0xce'),_0x1953('0xea'),_0x1953('0xeb')),{'interaction':_0x2b89eb})[_0x1953('0x2e')](function(_0x2bf5e4){var _0x33ca01=path[_0x1953('0xd1')](_0x2f3bc2,_0x1953('0xec')+_0x46e323['id']+'-'+_0x465904+_0x1953('0xed'));var _0x2ec62d={'path':_0x33ca01,'channel':_0x1953('0xee'),'interactionId':_0x46e323['id']};return pdf[_0x1953('0xef')](_0x2bf5e4,_0x2ec62d);})[_0x1953('0x2e')](function(){return new BPromise(function(_0x2c5017,_0x556892){zipdir(_0x2f3bc2,{'saveTo':_0x14c4d2},function(_0x7de35c,_0x2b9b7e){if(_0x7de35c)return _0x556892(_0x7de35c);return _0x2c5017(_0x2b9b7e);});})[_0x1953('0x2e')](function(){return new BPromise(function(_0x198357,_0xd568aa){rimraf(_0x2f3bc2,function(_0x34429a){if(_0x34429a)_0xd568aa(_0x34429a);return _0x198357();});});})[_0x1953('0x2e')](function(){return _0x51b11d[_0x1953('0xc9')](_0x14c4d2,_0x5bbe3f,function(_0x3bc58a){if(_0x3bc58a){console[_0x1953('0xf0')]('err',_0x3bc58a);}else{fs[_0x1953('0xf1')](_0x14c4d2);}});});});}else{return _0x51b11d[_0x1953('0x22')](0xc8);}})[_0x1953('0x36')](handleError(_0x51b11d,null));};
\ No newline at end of file
index bff8719..d8f72e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x19a2=['hasOwnProperty','hook','exports','events','../../mysqldb','OpenchannelInteraction','OpenchannelMessage','setMaxListeners','save','update','getUsers','then','Users','map','unreadMessages','length','emit'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x19a2,0x102));var _0x219a=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x19a2[_0x20a584];return _0x4b41a8;};'use strict';var EventEmitter=require(_0x219a('0x0'));var OpenchannelInteraction=require(_0x219a('0x1'))['db'][_0x219a('0x2')];var OpenchannelMessage=require('../../mysqldb')['db'][_0x219a('0x3')];var OpenchannelInteractionEvents=new EventEmitter();OpenchannelInteractionEvents[_0x219a('0x4')](0x0);var events={'afterCreate':_0x219a('0x5'),'afterUpdate':_0x219a('0x6'),'afterDestroy':'remove'};function emitEvent(_0xacc865){return function(_0x29020c,_0x3109a4,_0x1b52fd){_0x29020c[_0x219a('0x7')]({'attributes':['id'],'raw':!![]})[_0x219a('0x8')](function(_0x10d9dc){_0x29020c['setDataValue'](_0x219a('0x9'),_0x10d9dc[_0x219a('0xa')](function(_0x570a1a){return{'id':_0x570a1a['id']};}));return OpenchannelMessage['findAll']({'where':{'OpenchannelInteractionId':_0x29020c['id'],'direction':'in','read':![]},'raw':!![]});})[_0x219a('0x8')](function(_0x24c157){_0x29020c['setDataValue'](_0x219a('0xb'),_0x24c157[_0x219a('0xc')]);OpenchannelInteractionEvents[_0x219a('0xd')](_0xacc865+':'+_0x29020c['id'],_0x29020c);OpenchannelInteractionEvents[_0x219a('0xd')](_0xacc865,_0x29020c);_0x1b52fd(null);})['catch'](_0x1b52fd(null));};}for(var e in events){if(events[_0x219a('0xe')](e)){var event=events[e];OpenchannelInteraction[_0x219a('0xf')](e,emitEvent(event));}}module[_0x219a('0x10')]=OpenchannelInteractionEvents;
\ No newline at end of file
+var _0x3ada=['../../mysqldb','OpenchannelInteraction','OpenchannelMessage','save','update','getUsers','then','setDataValue','Users','map','findAll','unreadMessages','length','emit','catch','hasOwnProperty','hook','exports','events'];(function(_0x1c5803,_0x30b74e){var _0x61c1e6=function(_0x57b10a){while(--_0x57b10a){_0x1c5803['push'](_0x1c5803['shift']());}};_0x61c1e6(++_0x30b74e);}(_0x3ada,0x12f));var _0xa3ad=function(_0x1583db,_0x2ecc2c){_0x1583db=_0x1583db-0x0;var _0x4ef6b3=_0x3ada[_0x1583db];return _0x4ef6b3;};'use strict';var EventEmitter=require(_0xa3ad('0x0'));var OpenchannelInteraction=require(_0xa3ad('0x1'))['db'][_0xa3ad('0x2')];var OpenchannelMessage=require(_0xa3ad('0x1'))['db'][_0xa3ad('0x3')];var OpenchannelInteractionEvents=new EventEmitter();OpenchannelInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xa3ad('0x4'),'afterUpdate':_0xa3ad('0x5'),'afterDestroy':'remove'};function emitEvent(_0xd73c72){return function(_0x3084f0,_0x29578d,_0x515743){_0x3084f0[_0xa3ad('0x6')]({'attributes':['id'],'raw':!![]})[_0xa3ad('0x7')](function(_0x33af70){_0x3084f0[_0xa3ad('0x8')](_0xa3ad('0x9'),_0x33af70[_0xa3ad('0xa')](function(_0x52ce35){return{'id':_0x52ce35['id']};}));return OpenchannelMessage[_0xa3ad('0xb')]({'where':{'OpenchannelInteractionId':_0x3084f0['id'],'direction':'in','read':![]},'raw':!![]});})[_0xa3ad('0x7')](function(_0x5138b2){_0x3084f0[_0xa3ad('0x8')](_0xa3ad('0xc'),_0x5138b2[_0xa3ad('0xd')]);OpenchannelInteractionEvents[_0xa3ad('0xe')](_0xd73c72+':'+_0x3084f0['id'],_0x3084f0);OpenchannelInteractionEvents[_0xa3ad('0xe')](_0xd73c72,_0x3084f0);_0x515743(null);})[_0xa3ad('0xf')](_0x515743(null));};}for(var e in events){if(events[_0xa3ad('0x10')](e)){var event=events[e];OpenchannelInteraction[_0xa3ad('0x11')](e,emitEvent(event));}}module[_0xa3ad('0x12')]=OpenchannelInteractionEvents;
\ No newline at end of file
index 91b8643..afc1b74 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x16a8=['util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./openchannelInteraction.attributes','OpenchannelInteraction','openchannel_interactions','utf8mb4','utf8mb4_unicode_ci','changed','closed','format','lodash'];(function(_0x1969a7,_0x5a133a){var _0x3d665f=function(_0x39c64b){while(--_0x39c64b){_0x1969a7['push'](_0x1969a7['shift']());}};_0x3d665f(++_0x5a133a);}(_0x16a8,0x1db));var _0x816a=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x16a8[_0x2641f9];return _0x585741;};'use strict';var _=require(_0x816a('0x0'));var util=require(_0x816a('0x1'));var logger=require(_0x816a('0x2'))(_0x816a('0x3'));var moment=require(_0x816a('0x4'));var BPromise=require(_0x816a('0x5'));var rp=require(_0x816a('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x816a('0x7'));var config=require(_0x816a('0x8'));var attributes=require(_0x816a('0x9'));module['exports']=function(_0x35b21e,_0x575a8b){return _0x35b21e['define'](_0x816a('0xa'),attributes,{'tableName':_0x816a('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x816a('0xc'),'collate':_0x816a('0xd'),'hooks':{'beforeUpdate':function(_0x5233fe,_0x3de5fc,_0x56385d){if(_0x5233fe[_0x816a('0xe')](_0x816a('0xf'))){_0x5233fe['closedAt']=moment()[_0x816a('0x10')]('YYYY-MM-DD\x20HH:mm:ss');}_0x56385d(null,_0x5233fe);}}});};
\ No newline at end of file
+var _0x8835=['changed','closed','closedAt','lodash','../../config/logger','moment','bluebird','request-promise','path','rimraf','./openchannelInteraction.attributes','define','OpenchannelInteraction','openchannel_interactions','utf8mb4','utf8mb4_unicode_ci'];(function(_0x250dbb,_0x500624){var _0x150120=function(_0x34b997){while(--_0x34b997){_0x250dbb['push'](_0x250dbb['shift']());}};_0x150120(++_0x500624);}(_0x8835,0x1f3));var _0x5883=function(_0x4c1af7,_0xf5c76){_0x4c1af7=_0x4c1af7-0x0;var _0x528ac2=_0x8835[_0x4c1af7];return _0x528ac2;};'use strict';var _=require(_0x5883('0x0'));var util=require('util');var logger=require(_0x5883('0x1'))('api');var moment=require(_0x5883('0x2'));var BPromise=require(_0x5883('0x3'));var rp=require(_0x5883('0x4'));var fs=require('fs');var path=require(_0x5883('0x5'));var rimraf=require(_0x5883('0x6'));var config=require('../../config/environment');var attributes=require(_0x5883('0x7'));module['exports']=function(_0x572735,_0x29aa55){return _0x572735[_0x5883('0x8')](_0x5883('0x9'),attributes,{'tableName':_0x5883('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x5883('0xb'),'collate':_0x5883('0xc'),'hooks':{'beforeUpdate':function(_0x55dcc6,_0x2e0829,_0x328ae7){if(_0x55dcc6[_0x5883('0xd')](_0x5883('0xe'))){_0x55dcc6[_0x5883('0xf')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');}_0x328ae7(null,_0x55dcc6);}}});};
\ No newline at end of file
index 43a7fa8..e72a2c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec73=['error','code','message','result','UpdateOpenchannelInteraction','OpenchannelInteraction','update','body','options','raw','where','attributes','AddTagsToOpenchannelInteraction','find','addTags','ids','omit','AddTags','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults','redis','socket.io-emitter','./openchannelInteraction.socket','register','request','then','info','OpenchannelInteraction,\x20%s,\x20%s','request\x20sent','debug','OpenchannelInteraction,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x2e871f,_0x752500){var _0x28adbf=function(_0x7d1141){while(--_0x7d1141){_0x2e871f['push'](_0x2e871f['shift']());}};_0x28adbf(++_0x752500);}(_0xec73,0x1d5));var _0x3ec7=function(_0xaa11aa,_0x32a73b){_0xaa11aa=_0xaa11aa-0x0;var _0x4dd544=_0xec73[_0xaa11aa];return _0x4dd544;};'use strict';var _=require('lodash');var util=require(_0x3ec7('0x0'));var moment=require(_0x3ec7('0x1'));var BPromise=require(_0x3ec7('0x2'));var rs=require(_0x3ec7('0x3'));var fs=require('fs');var Redis=require(_0x3ec7('0x4'));var db=require(_0x3ec7('0x5'))['db'];var utils=require(_0x3ec7('0x6'));var logger=require(_0x3ec7('0x7'))(_0x3ec7('0x8'));var config=require(_0x3ec7('0x9'));var jayson=require(_0x3ec7('0xa'));var client=jayson[_0x3ec7('0xb')][_0x3ec7('0xc')]({'port':0x232a});config['redis']=_[_0x3ec7('0xd')](config[_0x3ec7('0xe')],{'host':'localhost','port':0x18eb});var socket=require(_0x3ec7('0xf'))(new Redis(config[_0x3ec7('0xe')]));require(_0x3ec7('0x10'))[_0x3ec7('0x11')](socket);function respondWithRpcPromise(_0x212242,_0x163797,_0x2ec492){return new BPromise(function(_0x25b0c0,_0x26be4d){return client[_0x3ec7('0x12')](_0x212242,_0x2ec492)[_0x3ec7('0x13')](function(_0x501087){logger[_0x3ec7('0x14')](_0x3ec7('0x15'),_0x163797,_0x3ec7('0x16'));logger[_0x3ec7('0x17')](_0x3ec7('0x18'),_0x163797,_0x3ec7('0x16'),JSON[_0x3ec7('0x19')](_0x501087));if(_0x501087[_0x3ec7('0x1a')]){if(_0x501087[_0x3ec7('0x1a')][_0x3ec7('0x1b')]===0x1f4){logger['error'](_0x3ec7('0x15'),_0x163797,_0x501087['error'][_0x3ec7('0x1c')]);return _0x26be4d(_0x501087[_0x3ec7('0x1a')][_0x3ec7('0x1c')]);}logger[_0x3ec7('0x1a')](_0x3ec7('0x15'),_0x163797,_0x501087[_0x3ec7('0x1a')][_0x3ec7('0x1c')]);return _0x25b0c0(_0x501087[_0x3ec7('0x1a')][_0x3ec7('0x1c')]);}else{logger[_0x3ec7('0x14')]('OpenchannelInteraction,\x20%s,\x20%s',_0x163797,_0x3ec7('0x16'));_0x25b0c0(_0x501087[_0x3ec7('0x1d')][_0x3ec7('0x1c')]);}})['catch'](function(_0x21ffbf){logger['error'](_0x3ec7('0x15'),_0x163797,_0x21ffbf);_0x26be4d(_0x21ffbf);});});}exports[_0x3ec7('0x1e')]=function(_0xbc024b){var _0xb6c1fa=this;return new Promise(function(_0x3e325a,_0x20f8b1){return db[_0x3ec7('0x1f')][_0x3ec7('0x20')](_0xbc024b[_0x3ec7('0x21')],{'raw':_0xbc024b[_0x3ec7('0x22')]?_0xbc024b[_0x3ec7('0x22')][_0x3ec7('0x23')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xbc024b['options']?_0xbc024b[_0x3ec7('0x22')][_0x3ec7('0x24')]||null:null,'attributes':_0xbc024b[_0x3ec7('0x22')]?_0xbc024b[_0x3ec7('0x22')][_0x3ec7('0x25')]||null:null,'limit':_0xbc024b[_0x3ec7('0x22')]?_0xbc024b[_0x3ec7('0x22')]['limit']||null:null})[_0x3ec7('0x13')](function(_0x4b268c){logger['info'](_0x3ec7('0x1e'),_0xbc024b);logger[_0x3ec7('0x17')](_0x3ec7('0x1e'),_0xbc024b,JSON[_0x3ec7('0x19')](_0x4b268c));_0x3e325a(_0x4b268c);})['catch'](function(_0x2b9a4f){logger[_0x3ec7('0x1a')](_0x3ec7('0x1e'),_0x2b9a4f[_0x3ec7('0x1c')],_0xbc024b);_0x20f8b1(_0xb6c1fa[_0x3ec7('0x1a')](0x1f4,_0x2b9a4f[_0x3ec7('0x1c')]));});});};exports[_0x3ec7('0x26')]=function(_0x1192da){return new Promise(function(_0x26c4e5,_0x4cd81c){return db[_0x3ec7('0x1f')][_0x3ec7('0x27')]({'where':_0x1192da[_0x3ec7('0x22')]?_0x1192da['options'][_0x3ec7('0x24')]||null:null})[_0x3ec7('0x13')](function(_0x2f115a){if(_0x2f115a){return _0x2f115a[_0x3ec7('0x28')](_0x1192da[_0x3ec7('0x21')][_0x3ec7('0x29')],_[_0x3ec7('0x2a')](_0x1192da['body'],['ids','id'])||{});}})['spread'](function(_0x46988d){logger[_0x3ec7('0x14')](_0x3ec7('0x2b'),_0x1192da);logger[_0x3ec7('0x17')](_0x3ec7('0x2b'),_0x1192da,JSON[_0x3ec7('0x19')](_0x46988d));_0x26c4e5(_0x46988d);})[_0x3ec7('0x2c')](function(_0x35011f){logger[_0x3ec7('0x1a')](_0x3ec7('0x2b'),_0x35011f['message'],_0x1192da);_0x4cd81c(_this[_0x3ec7('0x1a')](0x1f4,_0x35011f['message']));});});};
\ No newline at end of file
+var _0x3404=['find','addTags','body','ids','omit','spread','AddTags','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','redis','defaults','localhost','register','request','then','info','OpenchannelInteraction,\x20%s,\x20%s','request\x20sent','debug','OpenchannelInteraction,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','UpdateOpenchannelInteraction','OpenchannelInteraction','update','options','raw','limit','AddTagsToOpenchannelInteraction'];(function(_0x4ff09b,_0x53f67d){var _0x3f5c2e=function(_0x124592){while(--_0x124592){_0x4ff09b['push'](_0x4ff09b['shift']());}};_0x3f5c2e(++_0x53f67d);}(_0x3404,0x1a1));var _0x4340=function(_0x1cc9ce,_0x59a1e7){_0x1cc9ce=_0x1cc9ce-0x0;var _0x3baa06=_0x3404[_0x1cc9ce];return _0x3baa06;};'use strict';var _=require(_0x4340('0x0'));var util=require(_0x4340('0x1'));var moment=require(_0x4340('0x2'));var BPromise=require(_0x4340('0x3'));var rs=require(_0x4340('0x4'));var fs=require('fs');var Redis=require(_0x4340('0x5'));var db=require(_0x4340('0x6'))['db'];var utils=require(_0x4340('0x7'));var logger=require(_0x4340('0x8'))('rpc');var config=require('../../config/environment');var jayson=require(_0x4340('0x9'));var client=jayson[_0x4340('0xa')]['http']({'port':0x232a});config[_0x4340('0xb')]=_[_0x4340('0xc')](config[_0x4340('0xb')],{'host':_0x4340('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./openchannelInteraction.socket')[_0x4340('0xe')](socket);function respondWithRpcPromise(_0x3cdd05,_0x1fcdae,_0x23acff){return new BPromise(function(_0x2de97d,_0x1573e1){return client[_0x4340('0xf')](_0x3cdd05,_0x23acff)[_0x4340('0x10')](function(_0x383dd9){logger[_0x4340('0x11')](_0x4340('0x12'),_0x1fcdae,_0x4340('0x13'));logger[_0x4340('0x14')](_0x4340('0x15'),_0x1fcdae,_0x4340('0x13'),JSON[_0x4340('0x16')](_0x383dd9));if(_0x383dd9[_0x4340('0x17')]){if(_0x383dd9[_0x4340('0x17')]['code']===0x1f4){logger[_0x4340('0x17')]('OpenchannelInteraction,\x20%s,\x20%s',_0x1fcdae,_0x383dd9[_0x4340('0x17')][_0x4340('0x18')]);return _0x1573e1(_0x383dd9[_0x4340('0x17')]['message']);}logger[_0x4340('0x17')](_0x4340('0x12'),_0x1fcdae,_0x383dd9[_0x4340('0x17')][_0x4340('0x18')]);return _0x2de97d(_0x383dd9['error'][_0x4340('0x18')]);}else{logger['info']('OpenchannelInteraction,\x20%s,\x20%s',_0x1fcdae,_0x4340('0x13'));_0x2de97d(_0x383dd9[_0x4340('0x19')][_0x4340('0x18')]);}})[_0x4340('0x1a')](function(_0x42bd28){logger[_0x4340('0x17')](_0x4340('0x12'),_0x1fcdae,_0x42bd28);_0x1573e1(_0x42bd28);});});}exports[_0x4340('0x1b')]=function(_0x4b7166){var _0x3ca2ab=this;return new Promise(function(_0x3b0d28,_0x2d56cb){return db[_0x4340('0x1c')][_0x4340('0x1d')](_0x4b7166['body'],{'raw':_0x4b7166['options']?_0x4b7166[_0x4340('0x1e')][_0x4340('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4b7166[_0x4340('0x1e')]?_0x4b7166[_0x4340('0x1e')]['where']||null:null,'attributes':_0x4b7166[_0x4340('0x1e')]?_0x4b7166[_0x4340('0x1e')]['attributes']||null:null,'limit':_0x4b7166[_0x4340('0x1e')]?_0x4b7166['options'][_0x4340('0x20')]||null:null})[_0x4340('0x10')](function(_0x19f915){logger[_0x4340('0x11')](_0x4340('0x1b'),_0x4b7166);logger['debug'](_0x4340('0x1b'),_0x4b7166,JSON['stringify'](_0x19f915));_0x3b0d28(_0x19f915);})['catch'](function(_0x3a31ee){logger[_0x4340('0x17')](_0x4340('0x1b'),_0x3a31ee[_0x4340('0x18')],_0x4b7166);_0x2d56cb(_0x3ca2ab['error'](0x1f4,_0x3a31ee[_0x4340('0x18')]));});});};exports[_0x4340('0x21')]=function(_0x405ead){return new Promise(function(_0xbc7528,_0x51974b){return db[_0x4340('0x1c')][_0x4340('0x22')]({'where':_0x405ead[_0x4340('0x1e')]?_0x405ead[_0x4340('0x1e')]['where']||null:null})['then'](function(_0x3ae3ae){if(_0x3ae3ae){return _0x3ae3ae[_0x4340('0x23')](_0x405ead[_0x4340('0x24')][_0x4340('0x25')],_[_0x4340('0x26')](_0x405ead[_0x4340('0x24')],[_0x4340('0x25'),'id'])||{});}})[_0x4340('0x27')](function(_0x293cc9){logger[_0x4340('0x11')](_0x4340('0x28'),_0x405ead);logger[_0x4340('0x14')](_0x4340('0x28'),_0x405ead,JSON[_0x4340('0x16')](_0x293cc9));_0xbc7528(_0x293cc9);})['catch'](function(_0x175cf3){logger[_0x4340('0x17')](_0x4340('0x28'),_0x175cf3[_0x4340('0x18')],_0x405ead);_0x51974b(_this[_0x4340('0x17')](0x1f4,_0x175cf3[_0x4340('0x18')]));});});};
\ No newline at end of file
index 492fb19..da4d252 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x56ca=['remove','update','emit','length','openchannelInteraction:','./openchannelInteraction.events'];(function(_0x44b346,_0xeb097d){var _0x1c2f2b=function(_0x4e1f23){while(--_0x4e1f23){_0x44b346['push'](_0x44b346['shift']());}};_0x1c2f2b(++_0xeb097d);}(_0x56ca,0x6b));var _0xa56c=function(_0x26f5ae,_0x528985){_0x26f5ae=_0x26f5ae-0x0;var _0x484acb=_0x56ca[_0x26f5ae];return _0x484acb;};'use strict';var OpenchannelInteractionEvents=require(_0xa56c('0x0'));var events=['save',_0xa56c('0x1'),_0xa56c('0x2')];function createListener(_0x543df8,_0x113a23){return function(_0x5d1318){_0x113a23[_0xa56c('0x3')](_0x543df8,_0x5d1318);};}function removeListener(_0x370ae4,_0x2a3c10){return function(){OpenchannelInteractionEvents['removeListener'](_0x370ae4,_0x2a3c10);};}exports['register']=function(_0x3db4bf){for(var _0x157592=0x0,_0x4948d3=events[_0xa56c('0x4')];_0x157592<_0x4948d3;_0x157592++){var _0x1c9ee1=events[_0x157592];var _0x120f59=createListener(_0xa56c('0x5')+_0x1c9ee1,_0x3db4bf);OpenchannelInteractionEvents['on'](_0x1c9ee1,_0x120f59);}};
\ No newline at end of file
+var _0xe146=['removeListener','length','openchannelInteraction:','./openchannelInteraction.events','save','update'];(function(_0x10f06e,_0x5ed7aa){var _0x5500ce=function(_0x4fd8b6){while(--_0x4fd8b6){_0x10f06e['push'](_0x10f06e['shift']());}};_0x5500ce(++_0x5ed7aa);}(_0xe146,0x11d));var _0x6e14=function(_0x1deb03,_0xd05ad8){_0x1deb03=_0x1deb03-0x0;var _0x189fe7=_0xe146[_0x1deb03];return _0x189fe7;};'use strict';var OpenchannelInteractionEvents=require(_0x6e14('0x0'));var events=[_0x6e14('0x1'),'remove',_0x6e14('0x2')];function createListener(_0x5c330f,_0x1536b7){return function(_0x472d47){_0x1536b7['emit'](_0x5c330f,_0x472d47);};}function removeListener(_0x2cb70e,_0x1951f7){return function(){OpenchannelInteractionEvents[_0x6e14('0x3')](_0x2cb70e,_0x1951f7);};}exports['register']=function(_0xf2d1a6){for(var _0x435631=0x0,_0x4f7820=events[_0x6e14('0x4')];_0x435631<_0x4f7820;_0x435631++){var _0x464488=events[_0x435631];var _0x504773=createListener(_0x6e14('0x5')+_0x464488,_0xf2d1a6);OpenchannelInteractionEvents['on'](_0x464488,_0x504773);}};
\ No newline at end of file
index d869a13..42d2660 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','describe','/:id','show','post','tracked','openchannel','openchannelmessage:create','put','update','/:id/accept','accept','/:id/reject','reject','delete','destroy','multer','util'];(function(_0x124298,_0x542004){var _0x35ac24=function(_0x49afe8){while(--_0x49afe8){_0x124298['push'](_0x124298['shift']());}};_0x35ac24(++_0x542004);}(_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('./openchannelMessage.controller');router['get']('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x8')]);router[_0x0d8b('0x9')]('/describe',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xa')]);router['get'](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xc')]);router[_0x0d8b('0xd')]('/',auth[_0x0d8b('0x7')](),interaction[_0x0d8b('0xe')](_0x0d8b('0xf'),_0x0d8b('0x10')),controller['create']);router[_0x0d8b('0x11')]('/:id',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x12')]);router[_0x0d8b('0x11')](_0x0d8b('0x13'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x14')]);router[_0x0d8b('0x11')](_0x0d8b('0x15'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x16')]);router[_0x0d8b('0x17')](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x18')]);module['exports']=router;
\ No newline at end of file
+var _0x9c44=['index','get','/describe','/:id','show','tracked','openchannel','create','put','update','accept','/:id/reject','reject','delete','destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./openchannelMessage.controller','isAuthenticated'];(function(_0x332684,_0x4c5b5b){var _0x42c520=function(_0x443b9b){while(--_0x443b9b){_0x332684['push'](_0x332684['shift']());}};_0x42c520(++_0x4c5b5b);}(_0x9c44,0x178));var _0x49c4=function(_0x160c73,_0x2ee678){_0x160c73=_0x160c73-0x0;var _0xd9302=_0x9c44[_0x160c73];return _0xd9302;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x49c4('0x0'));var timeout=require(_0x49c4('0x1'));var express=require(_0x49c4('0x2'));var router=express[_0x49c4('0x3')]();var fs_extra=require(_0x49c4('0x4'));var auth=require(_0x49c4('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x49c4('0x6'));router['get']('/',auth[_0x49c4('0x7')](),controller[_0x49c4('0x8')]);router[_0x49c4('0x9')](_0x49c4('0xa'),auth[_0x49c4('0x7')](),controller['describe']);router[_0x49c4('0x9')](_0x49c4('0xb'),auth[_0x49c4('0x7')](),controller[_0x49c4('0xc')]);router['post']('/',auth['isAuthenticated'](),interaction[_0x49c4('0xd')](_0x49c4('0xe'),'openchannelmessage:create'),controller[_0x49c4('0xf')]);router[_0x49c4('0x10')]('/:id',auth['isAuthenticated'](),controller[_0x49c4('0x11')]);router[_0x49c4('0x10')]('/:id/accept',auth[_0x49c4('0x7')](),controller[_0x49c4('0x12')]);router['put'](_0x49c4('0x13'),auth[_0x49c4('0x7')](),controller[_0x49c4('0x14')]);router[_0x49c4('0x15')](_0x49c4('0xb'),auth[_0x49c4('0x7')](),controller[_0x49c4('0x16')]);module[_0x49c4('0x17')]=router;
\ No newline at end of file
index 9bd520e..7984656 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe5fb=['medium','BOOLEAN','out','DATE','STRING','TEXT','sequelize','exports'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xe5fb,0xce));var _0xbe5f=function(_0x200aa5,_0x197802){_0x200aa5=_0x200aa5-0x0;var _0x458200=_0xe5fb[_0x200aa5];return _0x458200;};'use strict';var Sequelize=require(_0xbe5f('0x0'));module[_0xbe5f('0x1')]={'body':{'type':Sequelize['TEXT'](_0xbe5f('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0xbe5f('0x3')],'defaultValue':![]},'secret':{'type':Sequelize[_0xbe5f('0x3')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0xbe5f('0x4')),'defaultValue':_0xbe5f('0x4'),'allowNull':![]},'readAt':{'type':Sequelize[_0xbe5f('0x5')]},'providerName':{'type':Sequelize[_0xbe5f('0x6')]},'providerResponse':{'type':Sequelize[_0xbe5f('0x7')]}};
\ No newline at end of file
+var _0x4c71=['STRING','TEXT','sequelize','exports','medium','BOOLEAN','ENUM','out','DATE'];(function(_0x9f5c9f,_0x40edb1){var _0x1e859c=function(_0x4d6b41){while(--_0x4d6b41){_0x9f5c9f['push'](_0x9f5c9f['shift']());}};_0x1e859c(++_0x40edb1);}(_0x4c71,0x12b));var _0x14c7=function(_0x5c2e3e,_0x26ecd3){_0x5c2e3e=_0x5c2e3e-0x0;var _0x53f64a=_0x4c71[_0x5c2e3e];return _0x53f64a;};'use strict';var Sequelize=require(_0x14c7('0x0'));module[_0x14c7('0x1')]={'body':{'type':Sequelize['TEXT'](_0x14c7('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0x14c7('0x3')],'defaultValue':![]},'secret':{'type':Sequelize[_0x14c7('0x3')],'defaultValue':![]},'direction':{'type':Sequelize[_0x14c7('0x4')]('in',_0x14c7('0x5')),'defaultValue':'out','allowNull':![]},'readAt':{'type':Sequelize[_0x14c7('0x6')]},'providerName':{'type':Sequelize[_0x14c7('0x7')]},'providerResponse':{'type':Sequelize[_0x14c7('0x8')]}};
\ No newline at end of file
index a62ddd9..b9721b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34bf=['QueryTypes','SELECT','contact','User','fullname','email','manual','interface','SIP/%s','channel','event','EventManager','acceptmessage','openchannel-interactions','OpenchannelInteraction','role','RejectMessage','sequelize','eml-format','rimraf','fast-json-patch','request-promise','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../config/license/hardware','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./openchannelMessage.socket','jayson/promise','client','http','request','then','info','request\x20sent','debug','stringify','error','code','OpenchannelMessage,\x20%s,\x20%s','message','result','catch','end','status','json','offset','undefined','limit','set','Content-Range','reject','destroy','stack','name','send','index','map','OpenchannelMessage','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','count','includeAll','findAll','rows','show','params','fields','include','find','create','update','body','describe','../../config/logger','accept','openchannel','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','OpenchannelInteractionId','isNil','read1stAt','interaction','get','[OPENCHANNELMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','null','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','Sequelize'];(function(_0xd1d19a,_0x1933f0){var _0x52a79d=function(_0x5199e2){while(--_0x5199e2){_0xd1d19a['push'](_0xd1d19a['shift']());}};_0x52a79d(++_0x1933f0);}(_0x34bf,0x93));var _0xf34b=function(_0x572ee8,_0x24ea07){_0x572ee8=_0x572ee8-0x0;var _0xb87b08=_0x34bf[_0x572ee8];return _0xb87b08;};'use strict';var emlformat=require(_0xf34b('0x0'));var rimraf=require(_0xf34b('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xf34b('0x2'));var rp=require(_0xf34b('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xf34b('0x4'));var util=require(_0xf34b('0x5'));var path=require(_0xf34b('0x6'));var sox=require(_0xf34b('0x7'));var csv=require('to-csv');var ejs=require(_0xf34b('0x8'));var fs=require('fs');var fs_extra=require(_0xf34b('0x9'));var _=require(_0xf34b('0xa'));var squel=require(_0xf34b('0xb'));var crypto=require(_0xf34b('0xc'));var jsforce=require(_0xf34b('0xd'));var deskjs=require(_0xf34b('0xe'));var toCsv=require('to-csv');var querystring=require(_0xf34b('0xf'));var Papa=require('papaparse');var Redis=require(_0xf34b('0x10'));var authService=require(_0xf34b('0x11'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xf34b('0x12'));var logger=require('../../config/logger')('api');var utils=require(_0xf34b('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0xf34b('0x14'));var db=require(_0xf34b('0x15'))['db'];config[_0xf34b('0x16')]=_[_0xf34b('0x17')](config[_0xf34b('0x16')],{'host':'localhost','port':0x18eb});var socket=require(_0xf34b('0x18'))(new Redis(config[_0xf34b('0x16')]));require(_0xf34b('0x19'))['register'](socket);var jayson=require(_0xf34b('0x1a'));var client=jayson[_0xf34b('0x1b')][_0xf34b('0x1c')]({'port':0x232c});var client9002=jayson[_0xf34b('0x1b')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4a1637,_0x56b965,_0x472716,_0x2e9d28){return new BPromise(function(_0x53fe4b,_0x2d6eb5){var _0x4fc895=_0x2e9d28||client;return _0x4fc895[_0xf34b('0x1d')](_0x4a1637,_0x472716)[_0xf34b('0x1e')](function(_0x16e722){logger[_0xf34b('0x1f')]('OpenchannelMessage,\x20%s,\x20%s',_0x56b965,_0xf34b('0x20'));logger[_0xf34b('0x21')]('OpenchannelMessage,\x20%s,\x20%s,\x20%s',_0x56b965,_0xf34b('0x20'),JSON[_0xf34b('0x22')](_0x16e722));if(_0x16e722[_0xf34b('0x23')]){if(_0x16e722[_0xf34b('0x23')][_0xf34b('0x24')]===0x1f4){logger['error'](_0xf34b('0x25'),_0x56b965,_0x16e722['error'][_0xf34b('0x26')]);return _0x2d6eb5(_0x16e722['error'][_0xf34b('0x26')]);}logger[_0xf34b('0x23')]('OpenchannelMessage,\x20%s,\x20%s',_0x56b965,_0x16e722['error'][_0xf34b('0x26')]);return _0x53fe4b(_0x16e722[_0xf34b('0x23')][_0xf34b('0x26')]);}else{logger[_0xf34b('0x1f')](_0xf34b('0x25'),_0x56b965,_0xf34b('0x20'));_0x53fe4b(_0x16e722[_0xf34b('0x27')][_0xf34b('0x26')]);}})[_0xf34b('0x28')](function(_0x12126e){logger[_0xf34b('0x23')](_0xf34b('0x25'),_0x56b965,_0x12126e);_0x2d6eb5(_0x12126e);});});}function respondWithStatusCode(_0x3bfa8c,_0x372cfb){_0x372cfb=_0x372cfb||0xcc;return function(_0x4aadf6){if(_0x4aadf6){return _0x3bfa8c['sendStatus'](_0x372cfb);}return _0x3bfa8c['status'](_0x372cfb)[_0xf34b('0x29')]();};}function respondWithResult(_0x16f107,_0x37d1ae){_0x37d1ae=_0x37d1ae||0xc8;return function(_0x3f6c02){if(_0x3f6c02){return _0x16f107[_0xf34b('0x2a')](_0x37d1ae)[_0xf34b('0x2b')](_0x3f6c02);}};}function respondWithFilteredResult(_0x3f63d9,_0x31be8f){return function(_0x8b5caf){if(_0x8b5caf){var _0x3683a9=typeof _0x31be8f[_0xf34b('0x2c')]===_0xf34b('0x2d')&&typeof _0x31be8f[_0xf34b('0x2e')]===_0xf34b('0x2d');var _0x374d73=_0x8b5caf['count'];var _0xce8c02=_0x3683a9?0x0:_0x31be8f['offset'];var _0x89c528=_0x3683a9?_0x8b5caf['count']:_0x31be8f[_0xf34b('0x2c')]+_0x31be8f['limit'];var _0x53cb1b;if(_0x89c528>=_0x374d73){_0x89c528=_0x374d73;_0x53cb1b=0xc8;}else{_0x53cb1b=0xce;}_0x3f63d9[_0xf34b('0x2a')](_0x53cb1b);return _0x3f63d9[_0xf34b('0x2f')](_0xf34b('0x30'),_0xce8c02+'-'+_0x89c528+'/'+_0x374d73)[_0xf34b('0x2b')](_0x8b5caf);}return null;};}function patchUpdates(_0x31854f){return function(_0x668b63){try{jsonpatch['apply'](_0x668b63,_0x31854f,!![]);}catch(_0x736f0b){return BPromise[_0xf34b('0x31')](_0x736f0b);}return _0x668b63['save']();};}function saveUpdates(_0x396478,_0x1c0fa8){return function(_0x31c26c){if(_0x31c26c){return _0x31c26c['update'](_0x396478)[_0xf34b('0x1e')](function(_0xc09429){return _0xc09429;});}return null;};}function removeEntity(_0x4cc0ea,_0x1e328c){return function(_0x5dcb82){if(_0x5dcb82){return _0x5dcb82[_0xf34b('0x32')]()[_0xf34b('0x1e')](function(){_0x4cc0ea[_0xf34b('0x2a')](0xcc)[_0xf34b('0x29')]();});}};}function handleEntityNotFound(_0x26d65d,_0x5ccf68){return function(_0x29868c){if(!_0x29868c){_0x26d65d['sendStatus'](0x194);}return _0x29868c;};}function handleError(_0x4571c0,_0x53158d){_0x53158d=_0x53158d||0x1f4;return function(_0x49473d){logger[_0xf34b('0x23')](_0x49473d[_0xf34b('0x33')]);if(_0x49473d[_0xf34b('0x34')]){delete _0x49473d[_0xf34b('0x34')];}_0x4571c0[_0xf34b('0x2a')](_0x53158d)[_0xf34b('0x35')](_0x49473d);};}exports[_0xf34b('0x36')]=function(_0x31acd8,_0x2c9e1a){var _0x410b2c={},_0x1a6f57={},_0xd761f9={'count':0x0,'rows':[]};var _0x422d7c=_[_0xf34b('0x37')](db[_0xf34b('0x38')][_0xf34b('0x39')],function(_0x362aa2){return{'name':_0x362aa2[_0xf34b('0x3a')],'type':_0x362aa2[_0xf34b('0x3b')][_0xf34b('0x3c')]};});_0x1a6f57[_0xf34b('0x3d')]=_[_0xf34b('0x37')](_0x422d7c,_0xf34b('0x34'));_0x1a6f57[_0xf34b('0x3e')]=_[_0xf34b('0x3f')](_0x31acd8[_0xf34b('0x3e')]);_0x1a6f57[_0xf34b('0x40')]=_[_0xf34b('0x41')](_0x1a6f57[_0xf34b('0x3d')],_0x1a6f57[_0xf34b('0x3e')]);_0x410b2c[_0xf34b('0x42')]=_[_0xf34b('0x41')](_0x1a6f57[_0xf34b('0x3d')],qs['fields'](_0x31acd8['query']['fields']));_0x410b2c['attributes']=_0x410b2c[_0xf34b('0x42')][_0xf34b('0x43')]?_0x410b2c['attributes']:_0x1a6f57[_0xf34b('0x3d')];if(!_0x31acd8[_0xf34b('0x3e')][_0xf34b('0x44')](_0xf34b('0x45'))){_0x410b2c[_0xf34b('0x2e')]=qs[_0xf34b('0x2e')](_0x31acd8[_0xf34b('0x3e')][_0xf34b('0x2e')]);_0x410b2c[_0xf34b('0x2c')]=qs[_0xf34b('0x2c')](_0x31acd8['query']['offset']);}_0x410b2c['order']=qs[_0xf34b('0x46')](_0x31acd8[_0xf34b('0x3e')][_0xf34b('0x46')]);_0x410b2c[_0xf34b('0x47')]=qs[_0xf34b('0x40')](_[_0xf34b('0x48')](_0x31acd8[_0xf34b('0x3e')],_0x1a6f57[_0xf34b('0x40')]),_0x422d7c);if(_0x31acd8['query'][_0xf34b('0x49')]){_0x410b2c[_0xf34b('0x47')]=_[_0xf34b('0x4a')](_0x410b2c[_0xf34b('0x47')],{'$or':_[_0xf34b('0x37')](_0x422d7c,function(_0x1c8e28){if(_0x1c8e28[_0xf34b('0x3b')]!==_0xf34b('0x4b')){var _0x11b48a={};_0x11b48a[_0x1c8e28[_0xf34b('0x34')]]={'$like':'%'+_0x31acd8['query'][_0xf34b('0x49')]+'%'};return _0x11b48a;}})});}_0x410b2c=_[_0xf34b('0x4a')]({},_0x410b2c,_0x31acd8[_0xf34b('0x4c')]);var _0x2b193a={'where':_0x410b2c[_0xf34b('0x47')]};return db[_0xf34b('0x38')][_0xf34b('0x4d')](_0x2b193a)[_0xf34b('0x1e')](function(_0x532916){_0xd761f9[_0xf34b('0x4d')]=_0x532916;if(_0x31acd8[_0xf34b('0x3e')][_0xf34b('0x4e')]){_0x410b2c['include']=[{'all':!![]}];}return db[_0xf34b('0x38')][_0xf34b('0x4f')](_0x410b2c);})['then'](function(_0x21bfac){_0xd761f9[_0xf34b('0x50')]=_0x21bfac;return _0xd761f9;})[_0xf34b('0x1e')](respondWithFilteredResult(_0x2c9e1a,_0x410b2c))[_0xf34b('0x28')](handleError(_0x2c9e1a,null));};exports[_0xf34b('0x51')]=function(_0x3ac1fa,_0x72c976){var _0x3bf06d={'raw':!![],'where':{'id':_0x3ac1fa[_0xf34b('0x52')]['id']}},_0x48acd6={};_0x48acd6['model']=_['keys'](db[_0xf34b('0x38')][_0xf34b('0x39')]);_0x48acd6[_0xf34b('0x3e')]=_[_0xf34b('0x3f')](_0x3ac1fa[_0xf34b('0x3e')]);_0x48acd6[_0xf34b('0x40')]=_['intersection'](_0x48acd6[_0xf34b('0x3d')],_0x48acd6[_0xf34b('0x3e')]);_0x3bf06d[_0xf34b('0x42')]=_[_0xf34b('0x41')](_0x48acd6[_0xf34b('0x3d')],qs[_0xf34b('0x53')](_0x3ac1fa[_0xf34b('0x3e')][_0xf34b('0x53')]));_0x3bf06d[_0xf34b('0x42')]=_0x3bf06d['attributes']['length']?_0x3bf06d['attributes']:_0x48acd6[_0xf34b('0x3d')];if(_0x3ac1fa['query'][_0xf34b('0x4e')]){_0x3bf06d[_0xf34b('0x54')]=[{'all':!![]}];}_0x3bf06d=_[_0xf34b('0x4a')]({},_0x3bf06d,_0x3ac1fa['options']);return db[_0xf34b('0x38')][_0xf34b('0x55')](_0x3bf06d)['then'](handleEntityNotFound(_0x72c976,null))['then'](respondWithResult(_0x72c976,null))[_0xf34b('0x28')](handleError(_0x72c976,null));};exports[_0xf34b('0x56')]=function(_0x2ca190,_0x4f4bcd){return db[_0xf34b('0x38')][_0xf34b('0x56')](_0x2ca190['body'],{})[_0xf34b('0x1e')](respondWithResult(_0x4f4bcd,0xc9))[_0xf34b('0x28')](handleError(_0x4f4bcd,null));};exports[_0xf34b('0x57')]=function(_0xc4d4fb,_0x4df1e2){if(_0xc4d4fb[_0xf34b('0x58')]['id']){delete _0xc4d4fb[_0xf34b('0x58')]['id'];}return db['OpenchannelMessage'][_0xf34b('0x55')]({'where':{'id':_0xc4d4fb[_0xf34b('0x52')]['id']}})[_0xf34b('0x1e')](handleEntityNotFound(_0x4df1e2,null))[_0xf34b('0x1e')](saveUpdates(_0xc4d4fb[_0xf34b('0x58')],null))[_0xf34b('0x1e')](respondWithResult(_0x4df1e2,null))['catch'](handleError(_0x4df1e2,null));};exports[_0xf34b('0x32')]=function(_0x501fee,_0x55af70){return db[_0xf34b('0x38')]['find']({'where':{'id':_0x501fee[_0xf34b('0x52')]['id']}})['then'](handleEntityNotFound(_0x55af70,null))[_0xf34b('0x1e')](removeEntity(_0x55af70,null))[_0xf34b('0x28')](handleError(_0x55af70,null));};exports['describe']=function(_0x9b0f8,_0xc0826c){return db[_0xf34b('0x38')][_0xf34b('0x59')]()[_0xf34b('0x1e')](respondWithResult(_0xc0826c,null))[_0xf34b('0x28')](handleError(_0xc0826c,null));};var interaction_log=require(_0xf34b('0x5a'))('openchannel-interactions');exports[_0xf34b('0x5b')]=function(_0x10123c,_0x486f8c,_0x1ebce1){var _0x40df77={'agent':{},'channel':_0xf34b('0x5c')};if(_0x10123c[_0xf34b('0x58')]['id']){delete _0x10123c[_0xf34b('0x58')]['id'];}_0x10123c[_0xf34b('0x58')][_0xf34b('0x5d')]=!![];_0x10123c[_0xf34b('0x58')][_0xf34b('0x5e')]=moment()[_0xf34b('0x5f')](_0xf34b('0x60'));_0x10123c[_0xf34b('0x58')][_0xf34b('0x61')]=_0x10123c['body'][_0xf34b('0x61')]||_0x10123c[_0xf34b('0x62')]['id'];_0x40df77[_0xf34b('0x63')]['id']=_0x10123c['body'][_0xf34b('0x61')];return db[_0xf34b('0x38')][_0xf34b('0x55')]({'where':{'id':_0x10123c[_0xf34b('0x52')]['id'],'UserId':null}})[_0xf34b('0x1e')](handleEntityNotFound(_0x486f8c,null))['then'](saveUpdates(_0x10123c[_0xf34b('0x58')],null))[_0xf34b('0x1e')](function(_0x222597){if(_0x222597){_0x40df77[_0xf34b('0x26')]=_0x222597['get']({'plain':!![]});return db['OpenchannelInteraction'][_0xf34b('0x55')]({'where':{'id':_0x222597[_0xf34b('0x64')]}});}return null;})['then'](handleEntityNotFound(_0x486f8c,null))[_0xf34b('0x1e')](function(_0x44073a){if(_0x44073a){return _0x44073a['update']({'UserId':_0x10123c['body']['UserId'],'read1stAt':_[_0xf34b('0x65')](_0x44073a[_0xf34b('0x66')])?moment()['format']('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0xf34b('0x1e')](function(_0x3cc97a){if(_0x3cc97a){_0x40df77[_0xf34b('0x67')]=_0x3cc97a[_0xf34b('0x68')]({'plain':!![]});interaction_log['info'](_0xf34b('0x69'),_0x10123c[_0xf34b('0x62')]['id'],_0x10123c[_0xf34b('0x62')][_0xf34b('0x34')],_0x10123c[_0xf34b('0x62')]['role'],_0x40df77['interaction']['id'],_0x10123c[_0xf34b('0x58')]?JSON[_0xf34b('0x22')](_0x10123c[_0xf34b('0x58')]):_0xf34b('0x6a'));return respondWithRpcPromise(_0xf34b('0x6b'),'acceptMessage',_0x40df77);}return null;})['then'](function(_0x4d6bc7){var _0x55b32f=_0xf34b('0x6c')+_0x4d6bc7[_0xf34b('0x26')][_0xf34b('0x6d')];return db['sequelize'][_0xf34b('0x3e')](_0x55b32f,{'type':db[_0xf34b('0x6e')][_0xf34b('0x6f')][_0xf34b('0x70')],'raw':!![]})[_0xf34b('0x1e')](function(_0x3e8c4c){return _0x3e8c4c;});})[_0xf34b('0x1e')](function(_0x5608ac){if(_0x5608ac){_0x40df77[_0xf34b('0x26')][_0xf34b('0x71')]=_0x5608ac[0x0];if(!_0x10123c[_0xf34b('0x58')]['UserId'])return;return db[_0xf34b('0x72')][_0xf34b('0x55')]({'where':{'id':_0x10123c['body'][_0xf34b('0x61')],'role':_0xf34b('0x63')},'attributes':['id',_0xf34b('0x34'),_0xf34b('0x73'),_0xf34b('0x74'),'internal'],'raw':!![]});}return null;})['then'](function(_0x1be0f9){if(!_0x1be0f9)return null;_0x40df77[_0xf34b('0x26')][_0xf34b('0x63')]=_0x1be0f9;return _0x40df77;})['then'](function(_0x8feec5){if(_0x8feec5){if(_0x10123c['body'][_0xf34b('0x75')]){_0x40df77[_0xf34b('0x26')][_0xf34b('0x76')]=util[_0xf34b('0x5f')](_0xf34b('0x77'),_0x10123c['user'][_0xf34b('0x34')]);_0x40df77[_0xf34b('0x26')][_0xf34b('0x78')]=_0x40df77[_0xf34b('0x78')];_0x40df77[_0xf34b('0x26')][_0xf34b('0x79')]=_0xf34b('0x5b');return respondWithRpcPromise('EventManager',_0xf34b('0x7a'),{'event':_0xf34b('0x7b'),'message':_0x40df77['message']},client9002)['then'](function(){return _0x40df77;});}return _0x40df77;}return null;})[_0xf34b('0x1e')](respondWithResult(_0x486f8c,null))[_0xf34b('0x28')](handleError(_0x486f8c,null));};var interaction_log=require(_0xf34b('0x5a'))(_0xf34b('0x7c'));exports['reject']=function(_0x4001d8,_0x352a86,_0x5f5cd8){var _0x381f78={'agent':{},'channel':'openchannel'};if(_0x4001d8[_0xf34b('0x58')]['id']){delete _0x4001d8[_0xf34b('0x58')]['id'];}_0x4001d8[_0xf34b('0x58')][_0xf34b('0x61')]=_0x4001d8[_0xf34b('0x58')][_0xf34b('0x61')]||_0x4001d8[_0xf34b('0x62')]['id'];_0x381f78[_0xf34b('0x63')]['id']=_0x4001d8[_0xf34b('0x58')][_0xf34b('0x61')];return db[_0xf34b('0x38')][_0xf34b('0x55')]({'where':{'id':_0x4001d8['params']['id'],'UserId':null}})['then'](handleEntityNotFound(_0x352a86,null))[_0xf34b('0x1e')](function(_0x40e784){if(_0x40e784){_0x381f78[_0xf34b('0x26')]=_0x40e784[_0xf34b('0x68')]({'plain':!![]});return db[_0xf34b('0x7d')][_0xf34b('0x55')]({'where':{'id':_0x40e784[_0xf34b('0x64')]}});}return null;})[_0xf34b('0x1e')](handleEntityNotFound(_0x352a86,null))[_0xf34b('0x1e')](function(_0xd0c69){if(_0xd0c69){_0x381f78[_0xf34b('0x67')]=_0xd0c69[_0xf34b('0x68')]({'plain':!![]});interaction_log[_0xf34b('0x1f')]('[OPENCHANNELMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x4001d8[_0xf34b('0x62')]['id'],_0x4001d8[_0xf34b('0x62')][_0xf34b('0x34')],_0x4001d8[_0xf34b('0x62')][_0xf34b('0x7e')],_0x381f78[_0xf34b('0x67')]['id'],_0x4001d8['body']?JSON[_0xf34b('0x22')](_0x4001d8[_0xf34b('0x58')]):_0xf34b('0x6a'));return respondWithRpcPromise(_0xf34b('0x7f'),'rejectMessage',_0x381f78);}return null;})[_0xf34b('0x1e')](function(_0x23c935){var _0x571141=_0xf34b('0x6c')+_0x23c935['message'][_0xf34b('0x6d')];return db[_0xf34b('0x80')][_0xf34b('0x3e')](_0x571141,{'type':db[_0xf34b('0x6e')][_0xf34b('0x6f')][_0xf34b('0x70')],'raw':!![]})[_0xf34b('0x1e')](function(_0x345249){return _0x345249;});})['then'](function(_0x2fa917){if(_0x2fa917){_0x381f78[_0xf34b('0x26')][_0xf34b('0x71')]=_0x2fa917[0x0];if(!_0x4001d8['body'][_0xf34b('0x61')])return;return db[_0xf34b('0x72')][_0xf34b('0x55')]({'where':{'id':_0x4001d8[_0xf34b('0x58')]['UserId'],'role':_0xf34b('0x63')},'attributes':['id','name','fullname',_0xf34b('0x74'),'internal'],'raw':!![]});}return null;})['then'](function(_0x2d62d8){if(!_0x2d62d8)return null;_0x381f78[_0xf34b('0x26')][_0xf34b('0x63')]=_0x2d62d8;return _0x381f78;})['then'](function(_0x30506d){if(_0x30506d){_0x30506d['message'][_0xf34b('0x76')]=util[_0xf34b('0x5f')](_0xf34b('0x77'),_0x4001d8[_0xf34b('0x62')][_0xf34b('0x34')]);_0x30506d['message'][_0xf34b('0x78')]=_0x381f78['channel'];_0x30506d[_0xf34b('0x26')]['event']=_0xf34b('0x31');respondWithRpcPromise(_0xf34b('0x7a'),_0xf34b('0x7a'),{'event':'rejectmessage','message':_0x30506d['message']},client9002);return _0x381f78;}return null;})[_0xf34b('0x1e')](respondWithResult(_0x352a86,null))[_0xf34b('0x28')](handleError(_0x352a86,null));};
\ No newline at end of file
+var _0x3c94=['rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','sort','where','pick','merge','filter','options','OpenchannelMessage','includeAll','include','findAll','rows','show','params','find','create','body','update','describe','openchannel-interactions','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','isNil','read1stAt','[OPENCHANNELMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','interaction','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','contact','User','fullname','email','internal','manual','channel','motionChannel','accept','EventManager','acceptmessage','reject','openchannel','OpenchannelInteractionId','[OPENCHANNELMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','Sequelize','QueryTypes','SELECT','interface','SIP/%s','event','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','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./openchannelMessage.socket','jayson/promise','client','http','request','then','info','OpenchannelMessage,\x20%s,\x20%s','request\x20sent','debug','OpenchannelMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','sendStatus','status','end','json','undefined','limit','offset','count','Content-Range','apply','save','destroy','stack','name','send','index','map'];(function(_0x587fb5,_0x59cb3b){var _0x551105=function(_0x5bbef4){while(--_0x5bbef4){_0x587fb5['push'](_0x587fb5['shift']());}};_0x551105(++_0x59cb3b);}(_0x3c94,0xcd));var _0x43c9=function(_0x3d0247,_0x2e5a09){_0x3d0247=_0x3d0247-0x0;var _0x5d2f3a=_0x3c94[_0x3d0247];return _0x5d2f3a;};'use strict';var emlformat=require(_0x43c9('0x0'));var rimraf=require(_0x43c9('0x1'));var zipdir=require(_0x43c9('0x2'));var jsonpatch=require(_0x43c9('0x3'));var rp=require(_0x43c9('0x4'));var moment=require(_0x43c9('0x5'));var BPromise=require(_0x43c9('0x6'));var Mustache=require(_0x43c9('0x7'));var util=require(_0x43c9('0x8'));var path=require(_0x43c9('0x9'));var sox=require(_0x43c9('0xa'));var csv=require(_0x43c9('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x43c9('0xc'));var _=require(_0x43c9('0xd'));var squel=require(_0x43c9('0xe'));var crypto=require(_0x43c9('0xf'));var jsforce=require(_0x43c9('0x10'));var deskjs=require(_0x43c9('0x11'));var toCsv=require(_0x43c9('0xb'));var querystring=require(_0x43c9('0x12'));var Papa=require(_0x43c9('0x13'));var Redis=require('ioredis');var authService=require(_0x43c9('0x14'));var qs=require(_0x43c9('0x15'));var as=require(_0x43c9('0x16'));var hardwareService=require(_0x43c9('0x17'));var logger=require(_0x43c9('0x18'))(_0x43c9('0x19'));var utils=require(_0x43c9('0x1a'));var config=require(_0x43c9('0x1b'));var licenseUtil=require(_0x43c9('0x1c'));var db=require(_0x43c9('0x1d'))['db'];config[_0x43c9('0x1e')]=_[_0x43c9('0x1f')](config[_0x43c9('0x1e')],{'host':_0x43c9('0x20'),'port':0x18eb});var socket=require(_0x43c9('0x21'))(new Redis(config[_0x43c9('0x1e')]));require(_0x43c9('0x22'))['register'](socket);var jayson=require(_0x43c9('0x23'));var client=jayson[_0x43c9('0x24')][_0x43c9('0x25')]({'port':0x232c});var client9002=jayson[_0x43c9('0x24')][_0x43c9('0x25')]({'port':0x232a});function respondWithRpcPromise(_0x5cc1fa,_0x549d3f,_0x425238,_0x9a0f50){return new BPromise(function(_0x15035a,_0xc89169){var _0x501856=_0x9a0f50||client;return _0x501856[_0x43c9('0x26')](_0x5cc1fa,_0x425238)[_0x43c9('0x27')](function(_0x38fe46){logger[_0x43c9('0x28')](_0x43c9('0x29'),_0x549d3f,_0x43c9('0x2a'));logger[_0x43c9('0x2b')](_0x43c9('0x2c'),_0x549d3f,_0x43c9('0x2a'),JSON[_0x43c9('0x2d')](_0x38fe46));if(_0x38fe46[_0x43c9('0x2e')]){if(_0x38fe46['error'][_0x43c9('0x2f')]===0x1f4){logger[_0x43c9('0x2e')](_0x43c9('0x29'),_0x549d3f,_0x38fe46['error'][_0x43c9('0x30')]);return _0xc89169(_0x38fe46[_0x43c9('0x2e')][_0x43c9('0x30')]);}logger['error'](_0x43c9('0x29'),_0x549d3f,_0x38fe46[_0x43c9('0x2e')][_0x43c9('0x30')]);return _0x15035a(_0x38fe46['error']['message']);}else{logger[_0x43c9('0x28')](_0x43c9('0x29'),_0x549d3f,_0x43c9('0x2a'));_0x15035a(_0x38fe46['result'][_0x43c9('0x30')]);}})[_0x43c9('0x31')](function(_0x1e676a){logger[_0x43c9('0x2e')](_0x43c9('0x29'),_0x549d3f,_0x1e676a);_0xc89169(_0x1e676a);});});}function respondWithStatusCode(_0x53b670,_0x386078){_0x386078=_0x386078||0xcc;return function(_0x3b5c47){if(_0x3b5c47){return _0x53b670[_0x43c9('0x32')](_0x386078);}return _0x53b670[_0x43c9('0x33')](_0x386078)[_0x43c9('0x34')]();};}function respondWithResult(_0xf5b835,_0x40345f){_0x40345f=_0x40345f||0xc8;return function(_0x1e091f){if(_0x1e091f){return _0xf5b835[_0x43c9('0x33')](_0x40345f)[_0x43c9('0x35')](_0x1e091f);}};}function respondWithFilteredResult(_0x4eb970,_0x11e3c3){return function(_0x2cbfd7){if(_0x2cbfd7){var _0x15028c=typeof _0x11e3c3['offset']===_0x43c9('0x36')&&typeof _0x11e3c3[_0x43c9('0x37')]==='undefined';var _0x2cb41c=_0x2cbfd7['count'];var _0x28bf33=_0x15028c?0x0:_0x11e3c3[_0x43c9('0x38')];var _0x496b67=_0x15028c?_0x2cbfd7[_0x43c9('0x39')]:_0x11e3c3['offset']+_0x11e3c3[_0x43c9('0x37')];var _0x25965c;if(_0x496b67>=_0x2cb41c){_0x496b67=_0x2cb41c;_0x25965c=0xc8;}else{_0x25965c=0xce;}_0x4eb970[_0x43c9('0x33')](_0x25965c);return _0x4eb970['set'](_0x43c9('0x3a'),_0x28bf33+'-'+_0x496b67+'/'+_0x2cb41c)['json'](_0x2cbfd7);}return null;};}function patchUpdates(_0x3622c0){return function(_0x1e871){try{jsonpatch[_0x43c9('0x3b')](_0x1e871,_0x3622c0,!![]);}catch(_0x3cd1db){return BPromise['reject'](_0x3cd1db);}return _0x1e871[_0x43c9('0x3c')]();};}function saveUpdates(_0x469769,_0x465116){return function(_0x2026c8){if(_0x2026c8){return _0x2026c8['update'](_0x469769)[_0x43c9('0x27')](function(_0x197aff){return _0x197aff;});}return null;};}function removeEntity(_0x33b497,_0x386221){return function(_0x1511e0){if(_0x1511e0){return _0x1511e0[_0x43c9('0x3d')]()[_0x43c9('0x27')](function(){_0x33b497[_0x43c9('0x33')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1923bf,_0x33a79f){return function(_0x84d661){if(!_0x84d661){_0x1923bf[_0x43c9('0x32')](0x194);}return _0x84d661;};}function handleError(_0x42a6bd,_0x2b8e65){_0x2b8e65=_0x2b8e65||0x1f4;return function(_0x33ff03){logger[_0x43c9('0x2e')](_0x33ff03[_0x43c9('0x3e')]);if(_0x33ff03['name']){delete _0x33ff03[_0x43c9('0x3f')];}_0x42a6bd['status'](_0x2b8e65)[_0x43c9('0x40')](_0x33ff03);};}exports[_0x43c9('0x41')]=function(_0x2d4700,_0x312bd4){var _0x21d9db={},_0x787b76={},_0x42dacb={'count':0x0,'rows':[]};var _0x23c697=_[_0x43c9('0x42')](db['OpenchannelMessage'][_0x43c9('0x43')],function(_0x2d63bd){return{'name':_0x2d63bd['fieldName'],'type':_0x2d63bd[_0x43c9('0x44')][_0x43c9('0x45')]};});_0x787b76[_0x43c9('0x46')]=_['map'](_0x23c697,_0x43c9('0x3f'));_0x787b76[_0x43c9('0x47')]=_[_0x43c9('0x48')](_0x2d4700[_0x43c9('0x47')]);_0x787b76[_0x43c9('0x49')]=_[_0x43c9('0x4a')](_0x787b76[_0x43c9('0x46')],_0x787b76[_0x43c9('0x47')]);_0x21d9db[_0x43c9('0x4b')]=_[_0x43c9('0x4a')](_0x787b76[_0x43c9('0x46')],qs[_0x43c9('0x4c')](_0x2d4700['query'][_0x43c9('0x4c')]));_0x21d9db[_0x43c9('0x4b')]=_0x21d9db[_0x43c9('0x4b')][_0x43c9('0x4d')]?_0x21d9db['attributes']:_0x787b76[_0x43c9('0x46')];if(!_0x2d4700[_0x43c9('0x47')]['hasOwnProperty'](_0x43c9('0x4e'))){_0x21d9db[_0x43c9('0x37')]=qs[_0x43c9('0x37')](_0x2d4700[_0x43c9('0x47')][_0x43c9('0x37')]);_0x21d9db[_0x43c9('0x38')]=qs[_0x43c9('0x38')](_0x2d4700[_0x43c9('0x47')][_0x43c9('0x38')]);}_0x21d9db['order']=qs[_0x43c9('0x4f')](_0x2d4700['query'][_0x43c9('0x4f')]);_0x21d9db[_0x43c9('0x50')]=qs[_0x43c9('0x49')](_[_0x43c9('0x51')](_0x2d4700['query'],_0x787b76[_0x43c9('0x49')]),_0x23c697);if(_0x2d4700[_0x43c9('0x47')]['filter']){_0x21d9db[_0x43c9('0x50')]=_[_0x43c9('0x52')](_0x21d9db['where'],{'$or':_[_0x43c9('0x42')](_0x23c697,function(_0x1ca85f){if(_0x1ca85f[_0x43c9('0x44')]!=='VIRTUAL'){var _0x23a754={};_0x23a754[_0x1ca85f['name']]={'$like':'%'+_0x2d4700['query'][_0x43c9('0x53')]+'%'};return _0x23a754;}})});}_0x21d9db=_[_0x43c9('0x52')]({},_0x21d9db,_0x2d4700[_0x43c9('0x54')]);var _0x16a371={'where':_0x21d9db[_0x43c9('0x50')]};return db[_0x43c9('0x55')][_0x43c9('0x39')](_0x16a371)[_0x43c9('0x27')](function(_0x815df8){_0x42dacb[_0x43c9('0x39')]=_0x815df8;if(_0x2d4700[_0x43c9('0x47')][_0x43c9('0x56')]){_0x21d9db[_0x43c9('0x57')]=[{'all':!![]}];}return db['OpenchannelMessage'][_0x43c9('0x58')](_0x21d9db);})[_0x43c9('0x27')](function(_0x4deed0){_0x42dacb[_0x43c9('0x59')]=_0x4deed0;return _0x42dacb;})[_0x43c9('0x27')](respondWithFilteredResult(_0x312bd4,_0x21d9db))[_0x43c9('0x31')](handleError(_0x312bd4,null));};exports[_0x43c9('0x5a')]=function(_0x246b9c,_0x2e763c){var _0x21adfe={'raw':!![],'where':{'id':_0x246b9c[_0x43c9('0x5b')]['id']}},_0x3affdf={};_0x3affdf['model']=_[_0x43c9('0x48')](db[_0x43c9('0x55')][_0x43c9('0x43')]);_0x3affdf[_0x43c9('0x47')]=_[_0x43c9('0x48')](_0x246b9c[_0x43c9('0x47')]);_0x3affdf['filters']=_[_0x43c9('0x4a')](_0x3affdf[_0x43c9('0x46')],_0x3affdf[_0x43c9('0x47')]);_0x21adfe[_0x43c9('0x4b')]=_[_0x43c9('0x4a')](_0x3affdf[_0x43c9('0x46')],qs[_0x43c9('0x4c')](_0x246b9c[_0x43c9('0x47')]['fields']));_0x21adfe[_0x43c9('0x4b')]=_0x21adfe['attributes'][_0x43c9('0x4d')]?_0x21adfe[_0x43c9('0x4b')]:_0x3affdf[_0x43c9('0x46')];if(_0x246b9c[_0x43c9('0x47')]['includeAll']){_0x21adfe['include']=[{'all':!![]}];}_0x21adfe=_['merge']({},_0x21adfe,_0x246b9c[_0x43c9('0x54')]);return db[_0x43c9('0x55')][_0x43c9('0x5c')](_0x21adfe)[_0x43c9('0x27')](handleEntityNotFound(_0x2e763c,null))[_0x43c9('0x27')](respondWithResult(_0x2e763c,null))[_0x43c9('0x31')](handleError(_0x2e763c,null));};exports[_0x43c9('0x5d')]=function(_0x3fc65e,_0x5221e1){return db['OpenchannelMessage'][_0x43c9('0x5d')](_0x3fc65e[_0x43c9('0x5e')],{})['then'](respondWithResult(_0x5221e1,0xc9))['catch'](handleError(_0x5221e1,null));};exports[_0x43c9('0x5f')]=function(_0xf98590,_0x39b227){if(_0xf98590['body']['id']){delete _0xf98590[_0x43c9('0x5e')]['id'];}return db[_0x43c9('0x55')][_0x43c9('0x5c')]({'where':{'id':_0xf98590[_0x43c9('0x5b')]['id']}})[_0x43c9('0x27')](handleEntityNotFound(_0x39b227,null))[_0x43c9('0x27')](saveUpdates(_0xf98590[_0x43c9('0x5e')],null))[_0x43c9('0x27')](respondWithResult(_0x39b227,null))[_0x43c9('0x31')](handleError(_0x39b227,null));};exports[_0x43c9('0x3d')]=function(_0x50f1dc,_0x2a4e1c){return db[_0x43c9('0x55')][_0x43c9('0x5c')]({'where':{'id':_0x50f1dc[_0x43c9('0x5b')]['id']}})[_0x43c9('0x27')](handleEntityNotFound(_0x2a4e1c,null))[_0x43c9('0x27')](removeEntity(_0x2a4e1c,null))['catch'](handleError(_0x2a4e1c,null));};exports[_0x43c9('0x60')]=function(_0x40c8cc,_0x3184ed){return db[_0x43c9('0x55')][_0x43c9('0x60')]()[_0x43c9('0x27')](respondWithResult(_0x3184ed,null))[_0x43c9('0x31')](handleError(_0x3184ed,null));};var interaction_log=require('../../config/logger')(_0x43c9('0x61'));exports['accept']=function(_0xf38f9f,_0x823cc2,_0x2c188a){var _0x4dc6a1={'agent':{},'channel':'openchannel'};if(_0xf38f9f[_0x43c9('0x5e')]['id']){delete _0xf38f9f[_0x43c9('0x5e')]['id'];}_0xf38f9f[_0x43c9('0x5e')]['read']=!![];_0xf38f9f[_0x43c9('0x5e')]['readAt']=moment()[_0x43c9('0x62')](_0x43c9('0x63'));_0xf38f9f['body'][_0x43c9('0x64')]=_0xf38f9f['body'][_0x43c9('0x64')]||_0xf38f9f[_0x43c9('0x65')]['id'];_0x4dc6a1[_0x43c9('0x66')]['id']=_0xf38f9f['body']['UserId'];return db['OpenchannelMessage'][_0x43c9('0x5c')]({'where':{'id':_0xf38f9f[_0x43c9('0x5b')]['id'],'UserId':null}})[_0x43c9('0x27')](handleEntityNotFound(_0x823cc2,null))[_0x43c9('0x27')](saveUpdates(_0xf38f9f[_0x43c9('0x5e')],null))[_0x43c9('0x27')](function(_0x1a4da5){if(_0x1a4da5){_0x4dc6a1[_0x43c9('0x30')]=_0x1a4da5[_0x43c9('0x67')]({'plain':!![]});return db['OpenchannelInteraction'][_0x43c9('0x5c')]({'where':{'id':_0x1a4da5['OpenchannelInteractionId']}});}return null;})[_0x43c9('0x27')](handleEntityNotFound(_0x823cc2,null))[_0x43c9('0x27')](function(_0x11b73d){if(_0x11b73d){return _0x11b73d[_0x43c9('0x5f')]({'UserId':_0xf38f9f[_0x43c9('0x5e')][_0x43c9('0x64')],'read1stAt':_[_0x43c9('0x68')](_0x11b73d[_0x43c9('0x69')])?moment()[_0x43c9('0x62')](_0x43c9('0x63')):undefined});}return null;})[_0x43c9('0x27')](function(_0xba4658){if(_0xba4658){_0x4dc6a1['interaction']=_0xba4658[_0x43c9('0x67')]({'plain':!![]});interaction_log[_0x43c9('0x28')](_0x43c9('0x6a'),_0xf38f9f[_0x43c9('0x65')]['id'],_0xf38f9f[_0x43c9('0x65')][_0x43c9('0x3f')],_0xf38f9f[_0x43c9('0x65')]['role'],_0x4dc6a1[_0x43c9('0x6b')]['id'],_0xf38f9f[_0x43c9('0x5e')]?JSON['stringify'](_0xf38f9f[_0x43c9('0x5e')]):_0x43c9('0x6c'));return respondWithRpcPromise(_0x43c9('0x6d'),_0x43c9('0x6e'),_0x4dc6a1);}return null;})[_0x43c9('0x27')](function(_0x85d3f6){var _0x6551fd=_0x43c9('0x6f')+_0x85d3f6['message'][_0x43c9('0x70')];return db[_0x43c9('0x71')][_0x43c9('0x47')](_0x6551fd,{'type':db['Sequelize']['QueryTypes']['SELECT'],'raw':!![]})[_0x43c9('0x27')](function(_0x2a91ee){return _0x2a91ee;});})['then'](function(_0x21dce5){if(_0x21dce5){_0x4dc6a1['message'][_0x43c9('0x72')]=_0x21dce5[0x0];if(!_0xf38f9f[_0x43c9('0x5e')][_0x43c9('0x64')])return;return db[_0x43c9('0x73')][_0x43c9('0x5c')]({'where':{'id':_0xf38f9f[_0x43c9('0x5e')][_0x43c9('0x64')],'role':_0x43c9('0x66')},'attributes':['id','name',_0x43c9('0x74'),_0x43c9('0x75'),_0x43c9('0x76')],'raw':!![]});}return null;})['then'](function(_0x329dd2){if(!_0x329dd2)return null;_0x4dc6a1['message']['agent']=_0x329dd2;return _0x4dc6a1;})[_0x43c9('0x27')](function(_0x40151f){if(_0x40151f){if(_0xf38f9f['body'][_0x43c9('0x77')]){_0x4dc6a1['message']['interface']=util[_0x43c9('0x62')]('SIP/%s',_0xf38f9f[_0x43c9('0x65')][_0x43c9('0x3f')]);_0x4dc6a1['message'][_0x43c9('0x78')]=_0x4dc6a1['channel'];_0x4dc6a1[_0x43c9('0x30')][_0x43c9('0x79')]=_0x4dc6a1['channel'];_0x4dc6a1['message']['event']=_0x43c9('0x7a');return respondWithRpcPromise(_0x43c9('0x7b'),_0x43c9('0x7b'),{'event':_0x43c9('0x7c'),'message':_0x4dc6a1[_0x43c9('0x30')]},client9002)['then'](function(){return _0x4dc6a1;});}return _0x4dc6a1;}return null;})[_0x43c9('0x27')](respondWithResult(_0x823cc2,null))['catch'](handleError(_0x823cc2,null));};var interaction_log=require('../../config/logger')('openchannel-interactions');exports[_0x43c9('0x7d')]=function(_0x22b0b3,_0x1ef9a5,_0x449ee8){var _0x24069d={'agent':{},'channel':_0x43c9('0x7e')};if(_0x22b0b3[_0x43c9('0x5e')]['id']){delete _0x22b0b3['body']['id'];}_0x22b0b3['body'][_0x43c9('0x64')]=_0x22b0b3[_0x43c9('0x5e')][_0x43c9('0x64')]||_0x22b0b3[_0x43c9('0x65')]['id'];_0x24069d[_0x43c9('0x66')]['id']=_0x22b0b3[_0x43c9('0x5e')][_0x43c9('0x64')];return db[_0x43c9('0x55')][_0x43c9('0x5c')]({'where':{'id':_0x22b0b3[_0x43c9('0x5b')]['id'],'UserId':null}})[_0x43c9('0x27')](handleEntityNotFound(_0x1ef9a5,null))['then'](function(_0x29a22f){if(_0x29a22f){_0x24069d[_0x43c9('0x30')]=_0x29a22f[_0x43c9('0x67')]({'plain':!![]});return db['OpenchannelInteraction'][_0x43c9('0x5c')]({'where':{'id':_0x29a22f[_0x43c9('0x7f')]}});}return null;})[_0x43c9('0x27')](handleEntityNotFound(_0x1ef9a5,null))['then'](function(_0x1058b6){if(_0x1058b6){_0x24069d[_0x43c9('0x6b')]=_0x1058b6[_0x43c9('0x67')]({'plain':!![]});interaction_log[_0x43c9('0x28')](_0x43c9('0x80'),_0x22b0b3[_0x43c9('0x65')]['id'],_0x22b0b3[_0x43c9('0x65')]['name'],_0x22b0b3[_0x43c9('0x65')]['role'],_0x24069d['interaction']['id'],_0x22b0b3[_0x43c9('0x5e')]?JSON['stringify'](_0x22b0b3[_0x43c9('0x5e')]):_0x43c9('0x6c'));return respondWithRpcPromise(_0x43c9('0x81'),'rejectMessage',_0x24069d);}return null;})[_0x43c9('0x27')](function(_0x4f52c5){var _0x23351b=_0x43c9('0x6f')+_0x4f52c5[_0x43c9('0x30')][_0x43c9('0x70')];return db[_0x43c9('0x71')][_0x43c9('0x47')](_0x23351b,{'type':db[_0x43c9('0x82')][_0x43c9('0x83')][_0x43c9('0x84')],'raw':!![]})[_0x43c9('0x27')](function(_0x5d1ec9){return _0x5d1ec9;});})[_0x43c9('0x27')](function(_0x1bc622){if(_0x1bc622){_0x24069d[_0x43c9('0x30')][_0x43c9('0x72')]=_0x1bc622[0x0];if(!_0x22b0b3[_0x43c9('0x5e')][_0x43c9('0x64')])return;return db[_0x43c9('0x73')][_0x43c9('0x5c')]({'where':{'id':_0x22b0b3[_0x43c9('0x5e')][_0x43c9('0x64')],'role':_0x43c9('0x66')},'attributes':['id',_0x43c9('0x3f'),_0x43c9('0x74'),_0x43c9('0x75'),_0x43c9('0x76')],'raw':!![]});}return null;})[_0x43c9('0x27')](function(_0x1d9f1a){if(!_0x1d9f1a)return null;_0x24069d[_0x43c9('0x30')][_0x43c9('0x66')]=_0x1d9f1a;return _0x24069d;})[_0x43c9('0x27')](function(_0x332503){if(_0x332503){_0x332503[_0x43c9('0x30')][_0x43c9('0x85')]=util[_0x43c9('0x62')](_0x43c9('0x86'),_0x22b0b3[_0x43c9('0x65')][_0x43c9('0x3f')]);_0x332503[_0x43c9('0x30')][_0x43c9('0x78')]=_0x24069d[_0x43c9('0x78')];_0x332503[_0x43c9('0x30')][_0x43c9('0x79')]=_0x24069d[_0x43c9('0x78')];_0x332503[_0x43c9('0x30')][_0x43c9('0x87')]=_0x43c9('0x7d');respondWithRpcPromise(_0x43c9('0x7b'),_0x43c9('0x7b'),{'event':'rejectmessage','message':_0x332503[_0x43c9('0x30')]},client9002);return _0x24069d;}return null;})[_0x43c9('0x27')](respondWithResult(_0x1ef9a5,null))[_0x43c9('0x31')](handleError(_0x1ef9a5,null));};
\ No newline at end of file
index c3848f3..d98a564 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b1a=['hasOwnProperty','hook','exports','events','OpenchannelMessage','update','remove','emit'];(function(_0x5f3f88,_0x562baf){var _0xd08119=function(_0x42dbf7){while(--_0x42dbf7){_0x5f3f88['push'](_0x5f3f88['shift']());}};_0xd08119(++_0x562baf);}(_0x6b1a,0x9b));var _0xa6b1=function(_0x122296,_0x2cac73){_0x122296=_0x122296-0x0;var _0x81effd=_0x6b1a[_0x122296];return _0x81effd;};'use strict';var EventEmitter=require(_0xa6b1('0x0'));var OpenchannelMessage=require('../../mysqldb')['db'][_0xa6b1('0x1')];var OpenchannelMessageEvents=new EventEmitter();OpenchannelMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0xa6b1('0x2'),'afterDestroy':_0xa6b1('0x3')};function emitEvent(_0x710a64){return function(_0x40f9f2,_0x19e6fc,_0x4b77bf){OpenchannelMessageEvents[_0xa6b1('0x4')](_0x710a64+':'+_0x40f9f2['id'],_0x40f9f2);OpenchannelMessageEvents[_0xa6b1('0x4')](_0x710a64,_0x40f9f2);_0x4b77bf(null);};}for(var e in events){if(events[_0xa6b1('0x5')](e)){var event=events[e];OpenchannelMessage[_0xa6b1('0x6')](e,emitEvent(event));}}module[_0xa6b1('0x7')]=OpenchannelMessageEvents;
\ No newline at end of file
+var _0x9bd5=['setMaxListeners','save','update','remove','emit','exports','../../mysqldb','OpenchannelMessage'];(function(_0x200d1c,_0x33c369){var _0x4fbb7=function(_0x11c7ec){while(--_0x11c7ec){_0x200d1c['push'](_0x200d1c['shift']());}};_0x4fbb7(++_0x33c369);}(_0x9bd5,0x176));var _0x59bd=function(_0x454bf8,_0x5d6499){_0x454bf8=_0x454bf8-0x0;var _0xa03dc9=_0x9bd5[_0x454bf8];return _0xa03dc9;};'use strict';var EventEmitter=require('events');var OpenchannelMessage=require(_0x59bd('0x0'))['db'][_0x59bd('0x1')];var OpenchannelMessageEvents=new EventEmitter();OpenchannelMessageEvents[_0x59bd('0x2')](0x0);var events={'afterCreate':_0x59bd('0x3'),'afterUpdate':_0x59bd('0x4'),'afterDestroy':_0x59bd('0x5')};function emitEvent(_0x2db45c){return function(_0x4688ff,_0x2053d4,_0x3493d3){OpenchannelMessageEvents[_0x59bd('0x6')](_0x2db45c+':'+_0x4688ff['id'],_0x4688ff);OpenchannelMessageEvents[_0x59bd('0x6')](_0x2db45c,_0x4688ff);_0x3493d3(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];OpenchannelMessage['hook'](e,emitEvent(event));}}module[_0x59bd('0x7')]=OpenchannelMessageEvents;
\ No newline at end of file
index 959466c..fb868e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x955f=['openchannel_messages','body','FULLTEXT','models','get','toLowerCase','direction','secret','UserId','findOne','OpenchannelInteractionId','then','update','createdAt','catch','CmContact','describe','OpenchannelAccount','find','OpenchannelAccountId','Interactions','Contact','keys','replyUri','OpenchannelMessage,\x20%s,\x20%s','format','Forwarding\x20message\x20%d\x20to\x20%s','Interaction','omit','POST','method','GET','info','afterCreate','Message\x20%d\x20forwarded\x20to\x20%s','threadId','OpenchannelInteraction','error','inspect','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','request-promise','../../config/environment','exports','OpenchannelMessage'];(function(_0x88cd7b,_0x4c884c){var _0x56fcc8=function(_0x513b3d){while(--_0x513b3d){_0x88cd7b['push'](_0x88cd7b['shift']());}};_0x56fcc8(++_0x4c884c);}(_0x955f,0x1eb));var _0xf955=function(_0x25d405,_0xc78f15){_0x25d405=_0x25d405-0x0;var _0x2f0adb=_0x955f[_0x25d405];return _0x2f0adb;};'use strict';var _=require(_0xf955('0x0'));var util=require(_0xf955('0x1'));var logger=require(_0xf955('0x2'))(_0xf955('0x3'));var moment=require(_0xf955('0x4'));var BPromise=require('bluebird');var rp=require(_0xf955('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xf955('0x6'));var attributes=require('./openchannelMessage.attributes');module[_0xf955('0x7')]=function(_0x2caff2,_0x3fdac2){return _0x2caff2['define'](_0xf955('0x8'),attributes,{'tableName':_0xf955('0x9'),'paranoid':![],'indexes':[{'name':'fti_openchannel_messages','fields':[_0xf955('0xa')],'type':_0xf955('0xb')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x168ffb,_0x38b190,_0x134c1b){var _0x421e4a=_0x2caff2[_0xf955('0xc')];var _0x4d213a=_0x168ffb[_0xf955('0xd')]({'plain':!![]});if(_0x4d213a['direction'][_0xf955('0xe')]()==='in'||_0x4d213a[_0xf955('0xf')][_0xf955('0xe')]()==='out'&&!_0x4d213a[_0xf955('0x10')]&&!_['isNil'](_0x4d213a[_0xf955('0x11')])){_0x421e4a['OpenchannelInteraction'][_0xf955('0x12')]({'where':{'id':_0x4d213a[_0xf955('0x13')]}})[_0xf955('0x14')](function(_0x109bc5){if(_0x109bc5){_0x109bc5[_0xf955('0x15')]({'lastMsgAt':_0x4d213a[_0xf955('0x16')],'lastMsgDirection':_0x4d213a[_0xf955('0xf')][_0xf955('0xe')]()});}})[_0xf955('0x17')](function(_0x24e75c){console['error'](_0x24e75c);});}if(_0x4d213a[_0xf955('0xf')]==='out'&&!_0x4d213a[_0xf955('0x10')]){var _0x3a814f;_0x421e4a[_0xf955('0x18')][_0xf955('0x19')]()['then'](function(_0x5ac6cb){return _0x421e4a[_0xf955('0x1a')][_0xf955('0x1b')]({'where':{'id':_0x4d213a[_0xf955('0x1c')]},'include':[{'model':_0x421e4a['OpenchannelInteraction'],'as':_0xf955('0x1d'),'where':{'id':_0x4d213a[_0xf955('0x13')]},'limit':0x1,'include':[{'model':_0x421e4a[_0xf955('0x18')],'as':_0xf955('0x1e'),'attributes':_[_0xf955('0x1f')](_0x5ac6cb)}]}]});})['then'](function(_0x17d86a){_0x3a814f=_0x17d86a[_0xf955('0xd')]({'plain':!![]});if(_0x3a814f&&_0x3a814f[_0xf955('0x20')]){logger['info'](_0xf955('0x21'),'afterCreate',util[_0xf955('0x22')](_0xf955('0x23'),_0x4d213a['id'],_0x3a814f[_0xf955('0x20')]));if(_0x3a814f[_0xf955('0x1d')]&&_0x3a814f[_0xf955('0x1d')]['length']){_0x4d213a[_0xf955('0x24')]=_[_0xf955('0x25')](_0x3a814f[_0xf955('0x1d')][0x0],_0xf955('0x1e'));_0x4d213a[_0xf955('0x1e')]=_0x3a814f[_0xf955('0x1d')][0x0][_0xf955('0x1e')];}var _0x38b190={'method':_0xf955('0x26'),'uri':encodeURI(_0x3a814f[_0xf955('0x20')]),'json':!![],'resolveWithFullResponse':!![]};switch(_0x38b190[_0xf955('0x27')]){case _0xf955('0x28'):_0x38b190['qs']=_0x4d213a;break;case _0xf955('0x26'):_0x38b190[_0xf955('0xa')]=_0x4d213a;break;}return rp(_0x38b190)[_0xf955('0x14')](function(_0x51f3ab){logger[_0xf955('0x29')](_0xf955('0x21'),_0xf955('0x2a'),util[_0xf955('0x22')](_0xf955('0x2b'),_0x4d213a['id'],_0x3a814f[_0xf955('0x20')]));if(_0x51f3ab['body'][_0xf955('0x2c')]&&_0x51f3ab[_0xf955('0xa')]['threadId']!=_0x4d213a[_0xf955('0x24')][_0xf955('0x2c')]){return _0x421e4a[_0xf955('0x2d')][_0xf955('0x15')]({'threadId':_0x51f3ab['body'][_0xf955('0x2c')]},{'logging':!![],'where':{'id':_0x4d213a['Interaction']['id']}});}else{return;}})[_0xf955('0x14')](function(){return _0x168ffb[_0xf955('0x15')]({'read':!![]});})[_0xf955('0x17')](function(_0x4069fe){logger[_0xf955('0x2e')](_0xf955('0x21'),_0xf955('0x2a'),util[_0xf955('0x2f')](_0x4069fe,{'showHidden':![],'depth':null}));_0x134c1b();});}else{_0x134c1b();}})['finally'](function(){_0x134c1b();});}else{_0x134c1b();}}},'charset':_0xf955('0x30'),'collate':_0xf955('0x31')});};
\ No newline at end of file
+var _0x4213=['describe','OpenchannelAccount','find','OpenchannelAccountId','Interactions','CmContact','Contact','info','OpenchannelMessage,\x20%s,\x20%s','afterCreate','format','Forwarding\x20message\x20%d\x20to\x20%s','replyUri','length','Interaction','GET','threadId','inspect','finally','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','./openchannelMessage.attributes','exports','OpenchannelMessage','openchannel_messages','fti_openchannel_messages','body','FULLTEXT','models','get','direction','toLowerCase','out','secret','UserId','OpenchannelInteraction','findOne','OpenchannelInteractionId','then','update','catch'];(function(_0x7bc4a8,_0x19022a){var _0x4a13e9=function(_0x43ac34){while(--_0x43ac34){_0x7bc4a8['push'](_0x7bc4a8['shift']());}};_0x4a13e9(++_0x19022a);}(_0x4213,0x77));var _0x3421=function(_0x2107ef,_0x585a6a){_0x2107ef=_0x2107ef-0x0;var _0x1f0505=_0x4213[_0x2107ef];return _0x1f0505;};'use strict';var _=require(_0x3421('0x0'));var util=require(_0x3421('0x1'));var logger=require(_0x3421('0x2'))(_0x3421('0x3'));var moment=require(_0x3421('0x4'));var BPromise=require(_0x3421('0x5'));var rp=require(_0x3421('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x3421('0x7'));var config=require('../../config/environment');var attributes=require(_0x3421('0x8'));module[_0x3421('0x9')]=function(_0x2155f8,_0x2a04e0){return _0x2155f8['define'](_0x3421('0xa'),attributes,{'tableName':_0x3421('0xb'),'paranoid':![],'indexes':[{'name':_0x3421('0xc'),'fields':[_0x3421('0xd')],'type':_0x3421('0xe')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x4ddfce,_0x1f20cf,_0x58d511){var _0x4ff986=_0x2155f8[_0x3421('0xf')];var _0x4b9d24=_0x4ddfce[_0x3421('0x10')]({'plain':!![]});if(_0x4b9d24[_0x3421('0x11')][_0x3421('0x12')]()==='in'||_0x4b9d24[_0x3421('0x11')][_0x3421('0x12')]()===_0x3421('0x13')&&!_0x4b9d24[_0x3421('0x14')]&&!_['isNil'](_0x4b9d24[_0x3421('0x15')])){_0x4ff986[_0x3421('0x16')][_0x3421('0x17')]({'where':{'id':_0x4b9d24[_0x3421('0x18')]}})[_0x3421('0x19')](function(_0x3f4672){if(_0x3f4672){_0x3f4672[_0x3421('0x1a')]({'lastMsgAt':_0x4b9d24['createdAt'],'lastMsgDirection':_0x4b9d24[_0x3421('0x11')]['toLowerCase']()});}})[_0x3421('0x1b')](function(_0x5257ad){console['error'](_0x5257ad);});}if(_0x4b9d24[_0x3421('0x11')]==='out'&&!_0x4b9d24[_0x3421('0x14')]){var _0x23694b;_0x4ff986['CmContact'][_0x3421('0x1c')]()[_0x3421('0x19')](function(_0x130d3c){return _0x4ff986[_0x3421('0x1d')][_0x3421('0x1e')]({'where':{'id':_0x4b9d24[_0x3421('0x1f')]},'include':[{'model':_0x4ff986[_0x3421('0x16')],'as':_0x3421('0x20'),'where':{'id':_0x4b9d24[_0x3421('0x18')]},'limit':0x1,'include':[{'model':_0x4ff986[_0x3421('0x21')],'as':_0x3421('0x22'),'attributes':_['keys'](_0x130d3c)}]}]});})[_0x3421('0x19')](function(_0x4b59a5){_0x23694b=_0x4b59a5['get']({'plain':!![]});if(_0x23694b&&_0x23694b['replyUri']){logger[_0x3421('0x23')](_0x3421('0x24'),_0x3421('0x25'),util[_0x3421('0x26')](_0x3421('0x27'),_0x4b9d24['id'],_0x23694b[_0x3421('0x28')]));if(_0x23694b[_0x3421('0x20')]&&_0x23694b[_0x3421('0x20')][_0x3421('0x29')]){_0x4b9d24[_0x3421('0x2a')]=_['omit'](_0x23694b['Interactions'][0x0],'Contact');_0x4b9d24[_0x3421('0x22')]=_0x23694b[_0x3421('0x20')][0x0][_0x3421('0x22')];}var _0x1f20cf={'method':'POST','uri':encodeURI(_0x23694b[_0x3421('0x28')]),'json':!![],'resolveWithFullResponse':!![]};switch(_0x1f20cf['method']){case _0x3421('0x2b'):_0x1f20cf['qs']=_0x4b9d24;break;case'POST':_0x1f20cf[_0x3421('0xd')]=_0x4b9d24;break;}return rp(_0x1f20cf)[_0x3421('0x19')](function(_0x36d75f){logger[_0x3421('0x23')](_0x3421('0x24'),'afterCreate',util[_0x3421('0x26')]('Message\x20%d\x20forwarded\x20to\x20%s',_0x4b9d24['id'],_0x23694b['replyUri']));if(_0x36d75f[_0x3421('0xd')]['threadId']&&_0x36d75f['body'][_0x3421('0x2c')]!=_0x4b9d24['Interaction'][_0x3421('0x2c')]){return _0x4ff986['OpenchannelInteraction'][_0x3421('0x1a')]({'threadId':_0x36d75f[_0x3421('0xd')]['threadId']},{'logging':!![],'where':{'id':_0x4b9d24[_0x3421('0x2a')]['id']}});}else{return;}})[_0x3421('0x19')](function(){return _0x4ddfce[_0x3421('0x1a')]({'read':!![]});})['catch'](function(_0x3a89b6){logger['error'](_0x3421('0x24'),_0x3421('0x25'),util[_0x3421('0x2d')](_0x3a89b6,{'showHidden':![],'depth':null}));_0x58d511();});}else{_0x58d511();}})[_0x3421('0x2e')](function(){_0x58d511();});}else{_0x58d511();}}},'charset':_0x3421('0x2f'),'collate':_0x3421('0x30')});};
\ No newline at end of file
index df68413..c404fa1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb5=['debug','request\x20sent','stringify','error','code','message','info','result','catch','OpenchannelMessage','body','raw','CreateOpenchannelMessage','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./openchannelMessage.socket','register','request','then','OpenchannelMessage,\x20%s,\x20%s'];(function(_0x38c001,_0x40bb75){var _0x4d58f0=function(_0x2547a8){while(--_0x2547a8){_0x38c001['push'](_0x38c001['shift']());}};_0x4d58f0(++_0x40bb75);}(_0xadb5,0xad));var _0x5adb=function(_0x2377f4,_0x16b8f6){_0x2377f4=_0x2377f4-0x0;var _0x112311=_0xadb5[_0x2377f4];return _0x112311;};'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});config[_0x5adb('0xa')]=_[_0x5adb('0xb')](config[_0x5adb('0xa')],{'host':_0x5adb('0xc'),'port':0x18eb});var socket=require(_0x5adb('0xd'))(new Redis(config[_0x5adb('0xa')]));require(_0x5adb('0xe'))[_0x5adb('0xf')](socket);function respondWithRpcPromise(_0x336bad,_0x129f5a,_0x275428){return new BPromise(function(_0x563d86,_0x4c268d){return client[_0x5adb('0x10')](_0x336bad,_0x275428)[_0x5adb('0x11')](function(_0x82e67e){logger['info'](_0x5adb('0x12'),_0x129f5a,'request\x20sent');logger[_0x5adb('0x13')]('OpenchannelMessage,\x20%s,\x20%s,\x20%s',_0x129f5a,_0x5adb('0x14'),JSON[_0x5adb('0x15')](_0x82e67e));if(_0x82e67e[_0x5adb('0x16')]){if(_0x82e67e['error'][_0x5adb('0x17')]===0x1f4){logger[_0x5adb('0x16')](_0x5adb('0x12'),_0x129f5a,_0x82e67e['error'][_0x5adb('0x18')]);return _0x4c268d(_0x82e67e['error'][_0x5adb('0x18')]);}logger[_0x5adb('0x16')](_0x5adb('0x12'),_0x129f5a,_0x82e67e[_0x5adb('0x16')][_0x5adb('0x18')]);return _0x563d86(_0x82e67e[_0x5adb('0x16')][_0x5adb('0x18')]);}else{logger[_0x5adb('0x19')](_0x5adb('0x12'),_0x129f5a,'request\x20sent');_0x563d86(_0x82e67e[_0x5adb('0x1a')]['message']);}})[_0x5adb('0x1b')](function(_0x558f76){logger[_0x5adb('0x16')]('OpenchannelMessage,\x20%s,\x20%s',_0x129f5a,_0x558f76);_0x4c268d(_0x558f76);});});}exports['CreateOpenchannelMessage']=function(_0x1fbaa5){var _0x1bed20=this;return new Promise(function(_0x438671,_0x1fd4a7){return db[_0x5adb('0x1c')]['create'](_0x1fbaa5[_0x5adb('0x1d')],{'raw':_0x1fbaa5['options']?_0x1fbaa5['options'][_0x5adb('0x1e')]===undefined?!![]:![]:!![]})[_0x5adb('0x11')](function(_0x1a38d3){logger[_0x5adb('0x19')](_0x5adb('0x1f'),_0x1fbaa5);logger[_0x5adb('0x13')](_0x5adb('0x1f'),_0x1fbaa5,JSON['stringify'](_0x1a38d3));_0x438671(_0x1a38d3);})[_0x5adb('0x1b')](function(_0x373cc3){logger[_0x5adb('0x16')](_0x5adb('0x1f'),_0x373cc3[_0x5adb('0x18')],_0x1fbaa5);_0x1fd4a7(_0x1bed20['error'](0x1f4,_0x373cc3[_0x5adb('0x18')]));});});};
\ No newline at end of file
+var _0xadb5=['debug','request\x20sent','stringify','error','code','message','info','result','catch','OpenchannelMessage','body','raw','CreateOpenchannelMessage','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./openchannelMessage.socket','register','request','then','OpenchannelMessage,\x20%s,\x20%s'];(function(_0xa035a7,_0x95f8c2){var _0x1b71d6=function(_0x1ba76c){while(--_0x1ba76c){_0xa035a7['push'](_0xa035a7['shift']());}};_0x1b71d6(++_0x95f8c2);}(_0xadb5,0xad));var _0x5adb=function(_0x2af187,_0xc2d0f6){_0x2af187=_0x2af187-0x0;var _0x24c414=_0xadb5[_0x2af187];return _0x24c414;};'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});config[_0x5adb('0xa')]=_[_0x5adb('0xb')](config[_0x5adb('0xa')],{'host':_0x5adb('0xc'),'port':0x18eb});var socket=require(_0x5adb('0xd'))(new Redis(config[_0x5adb('0xa')]));require(_0x5adb('0xe'))[_0x5adb('0xf')](socket);function respondWithRpcPromise(_0x336bad,_0x129f5a,_0x275428){return new BPromise(function(_0x563d86,_0x4c268d){return client[_0x5adb('0x10')](_0x336bad,_0x275428)[_0x5adb('0x11')](function(_0x82e67e){logger['info'](_0x5adb('0x12'),_0x129f5a,'request\x20sent');logger[_0x5adb('0x13')]('OpenchannelMessage,\x20%s,\x20%s,\x20%s',_0x129f5a,_0x5adb('0x14'),JSON[_0x5adb('0x15')](_0x82e67e));if(_0x82e67e[_0x5adb('0x16')]){if(_0x82e67e['error'][_0x5adb('0x17')]===0x1f4){logger[_0x5adb('0x16')](_0x5adb('0x12'),_0x129f5a,_0x82e67e['error'][_0x5adb('0x18')]);return _0x4c268d(_0x82e67e['error'][_0x5adb('0x18')]);}logger[_0x5adb('0x16')](_0x5adb('0x12'),_0x129f5a,_0x82e67e[_0x5adb('0x16')][_0x5adb('0x18')]);return _0x563d86(_0x82e67e[_0x5adb('0x16')][_0x5adb('0x18')]);}else{logger[_0x5adb('0x19')](_0x5adb('0x12'),_0x129f5a,'request\x20sent');_0x563d86(_0x82e67e[_0x5adb('0x1a')]['message']);}})[_0x5adb('0x1b')](function(_0x558f76){logger[_0x5adb('0x16')]('OpenchannelMessage,\x20%s,\x20%s',_0x129f5a,_0x558f76);_0x4c268d(_0x558f76);});});}exports['CreateOpenchannelMessage']=function(_0x1fbaa5){var _0x1bed20=this;return new Promise(function(_0x438671,_0x1fd4a7){return db[_0x5adb('0x1c')]['create'](_0x1fbaa5[_0x5adb('0x1d')],{'raw':_0x1fbaa5['options']?_0x1fbaa5['options'][_0x5adb('0x1e')]===undefined?!![]:![]:!![]})[_0x5adb('0x11')](function(_0x1a38d3){logger[_0x5adb('0x19')](_0x5adb('0x1f'),_0x1fbaa5);logger[_0x5adb('0x13')](_0x5adb('0x1f'),_0x1fbaa5,JSON['stringify'](_0x1a38d3));_0x438671(_0x1a38d3);})[_0x5adb('0x1b')](function(_0x373cc3){logger[_0x5adb('0x16')](_0x5adb('0x1f'),_0x373cc3[_0x5adb('0x18')],_0x1fbaa5);_0x1fd4a7(_0x1bed20['error'](0x1f4,_0x373cc3[_0x5adb('0x18')]));});});};
\ No newline at end of file
index f6263b2..d1bc04b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8463=['length','openchannelMessage:','./openchannelMessage.events','save','update','register'];(function(_0x45952d,_0x3a4144){var _0x40fa19=function(_0x5b118b){while(--_0x5b118b){_0x45952d['push'](_0x45952d['shift']());}};_0x40fa19(++_0x3a4144);}(_0x8463,0x140));var _0x3846=function(_0x22f160,_0xc0e1a0){_0x22f160=_0x22f160-0x0;var _0x1097d3=_0x8463[_0x22f160];return _0x1097d3;};'use strict';var OpenchannelMessageEvents=require(_0x3846('0x0'));var events=[_0x3846('0x1'),'remove',_0x3846('0x2')];function createListener(_0x44af57,_0x43fd9d){return function(_0x398db5){_0x43fd9d['emit'](_0x44af57,_0x398db5);};}function removeListener(_0x22dbe7,_0x28939c){return function(){OpenchannelMessageEvents['removeListener'](_0x22dbe7,_0x28939c);};}exports[_0x3846('0x3')]=function(_0xc8ad35){for(var _0x3c176b=0x0,_0x41f063=events[_0x3846('0x4')];_0x3c176b<_0x41f063;_0x3c176b++){var _0x5eb888=events[_0x3c176b];var _0x588732=createListener(_0x3846('0x5')+_0x5eb888,_0xc8ad35);OpenchannelMessageEvents['on'](_0x5eb888,_0x588732);}};
\ No newline at end of file
+var _0x43ce=['length','openchannelMessage:','./openchannelMessage.events','save','remove','update','emit','register'];(function(_0x3ef61a,_0x59ce85){var _0x3e4283=function(_0x5298a0){while(--_0x5298a0){_0x3ef61a['push'](_0x3ef61a['shift']());}};_0x3e4283(++_0x59ce85);}(_0x43ce,0x16a));var _0xe43c=function(_0x17a0b7,_0x43629a){_0x17a0b7=_0x17a0b7-0x0;var _0x831185=_0x43ce[_0x17a0b7];return _0x831185;};'use strict';var OpenchannelMessageEvents=require(_0xe43c('0x0'));var events=[_0xe43c('0x1'),_0xe43c('0x2'),_0xe43c('0x3')];function createListener(_0xcd05b4,_0x5be0ec){return function(_0x4e03f6){_0x5be0ec[_0xe43c('0x4')](_0xcd05b4,_0x4e03f6);};}function removeListener(_0x46ac17,_0x816a6){return function(){OpenchannelMessageEvents['removeListener'](_0x46ac17,_0x816a6);};}exports[_0xe43c('0x5')]=function(_0x3e7fe3){for(var _0x1bf07c=0x0,_0x5e2003=events[_0xe43c('0x6')];_0x1bf07c<_0x5e2003;_0x1bf07c++){var _0x26cd4c=events[_0x1bf07c];var _0x50de32=createListener(_0xe43c('0x7')+_0x26cd4c,_0x3e7fe3);OpenchannelMessageEvents['on'](_0x26cd4c,_0x50de32);}};
\ No newline at end of file
index f194e37..16e9195 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6764=['/:id/members','getMembers','/:id/teams','getTeams','/:id/users','getAgents','post','create','addTeams','addAgents','put','update','delete','destroy','removeTeams','removeAgents','exports','multer','util','path','connect-timeout','fs-extra','../../components/auth/service','../../config/environment','./openchannelQueue.controller','isAuthenticated','index','get','/describe','describe','/:id'];(function(_0x4b4501,_0x105927){var _0x421562=function(_0x33ddd2){while(--_0x33ddd2){_0x4b4501['push'](_0x4b4501['shift']());}};_0x421562(++_0x105927);}(_0x6764,0x109));var _0x4676=function(_0x1035c1,_0x2d8583){_0x1035c1=_0x1035c1-0x0;var _0x308d67=_0x6764[_0x1035c1];return _0x308d67;};'use strict';var multer=require(_0x4676('0x0'));var util=require(_0x4676('0x1'));var path=require(_0x4676('0x2'));var timeout=require(_0x4676('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x4676('0x4'));var auth=require(_0x4676('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x4676('0x6'));var controller=require(_0x4676('0x7'));router['get']('/',auth[_0x4676('0x8')](),controller[_0x4676('0x9')]);router[_0x4676('0xa')](_0x4676('0xb'),auth[_0x4676('0x8')](),controller[_0x4676('0xc')]);router[_0x4676('0xa')](_0x4676('0xd'),auth['isAuthenticated'](),controller['show']);router[_0x4676('0xa')](_0x4676('0xe'),auth[_0x4676('0x8')](),controller[_0x4676('0xf')]);router['get'](_0x4676('0x10'),auth[_0x4676('0x8')](),controller[_0x4676('0x11')]);router[_0x4676('0xa')](_0x4676('0x12'),auth[_0x4676('0x8')](),controller[_0x4676('0x13')]);router[_0x4676('0x14')]('/',auth[_0x4676('0x8')](),controller[_0x4676('0x15')]);router[_0x4676('0x14')]('/:id/teams',auth['isAuthenticated'](),controller[_0x4676('0x16')]);router['post'](_0x4676('0x12'),auth[_0x4676('0x8')](),controller[_0x4676('0x17')]);router[_0x4676('0x18')]('/:id',auth[_0x4676('0x8')](),controller[_0x4676('0x19')]);router[_0x4676('0x1a')]('/:id',auth['isAuthenticated'](),controller[_0x4676('0x1b')]);router[_0x4676('0x1a')](_0x4676('0x10'),auth[_0x4676('0x8')](),controller[_0x4676('0x1c')]);router['delete'](_0x4676('0x12'),auth[_0x4676('0x8')](),controller[_0x4676('0x1d')]);module[_0x4676('0x1e')]=router;
\ No newline at end of file
+var _0xe644=['removeAgents','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/members','/:id/teams','getTeams','/:id/users','getAgents','post','create','addTeams','addAgents','update','delete'];(function(_0x5bafa0,_0x58fc9b){var _0x520783=function(_0x31affe){while(--_0x31affe){_0x5bafa0['push'](_0x5bafa0['shift']());}};_0x520783(++_0x58fc9b);}(_0xe644,0x76));var _0x4e64=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xe644[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x4e64('0x0'));var util=require(_0x4e64('0x1'));var path=require(_0x4e64('0x2'));var timeout=require(_0x4e64('0x3'));var express=require(_0x4e64('0x4'));var router=express[_0x4e64('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x4e64('0x6'));var interaction=require(_0x4e64('0x7'));var config=require(_0x4e64('0x8'));var controller=require('./openchannelQueue.controller');router[_0x4e64('0x9')]('/',auth[_0x4e64('0xa')](),controller[_0x4e64('0xb')]);router['get'](_0x4e64('0xc'),auth['isAuthenticated'](),controller[_0x4e64('0xd')]);router['get'](_0x4e64('0xe'),auth[_0x4e64('0xa')](),controller[_0x4e64('0xf')]);router['get'](_0x4e64('0x10'),auth[_0x4e64('0xa')](),controller['getMembers']);router['get'](_0x4e64('0x11'),auth[_0x4e64('0xa')](),controller[_0x4e64('0x12')]);router[_0x4e64('0x9')](_0x4e64('0x13'),auth[_0x4e64('0xa')](),controller[_0x4e64('0x14')]);router[_0x4e64('0x15')]('/',auth[_0x4e64('0xa')](),controller[_0x4e64('0x16')]);router[_0x4e64('0x15')]('/:id/teams',auth[_0x4e64('0xa')](),controller[_0x4e64('0x17')]);router[_0x4e64('0x15')](_0x4e64('0x13'),auth['isAuthenticated'](),controller[_0x4e64('0x18')]);router['put']('/:id',auth[_0x4e64('0xa')](),controller[_0x4e64('0x19')]);router['delete'](_0x4e64('0xe'),auth['isAuthenticated'](),controller['destroy']);router['delete'](_0x4e64('0x11'),auth[_0x4e64('0xa')](),controller['removeTeams']);router[_0x4e64('0x1a')](_0x4e64('0x13'),auth[_0x4e64('0xa')](),controller[_0x4e64('0x1b')]);module[_0x4e64('0x1c')]=router;
\ No newline at end of file
index a73cdf9..b445be6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7efb=['beepall','roundrobin','exports','STRING','name','INTEGER','rrmemory'];(function(_0xb68009,_0x5e23e3){var _0x326971=function(_0x28e0c9){while(--_0x28e0c9){_0xb68009['push'](_0xb68009['shift']());}};_0x326971(++_0x5e23e3);}(_0x7efb,0x175));var _0xb7ef=function(_0x1284b4,_0x28f825){_0x1284b4=_0x1284b4-0x0;var _0x3934d8=_0x7efb[_0x1284b4];return _0x3934d8;};'use strict';var Sequelize=require('sequelize');module[_0xb7ef('0x0')]={'name':{'type':Sequelize[_0xb7ef('0x1')],'unique':_0xb7ef('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize[_0xb7ef('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0xb7ef('0x4'),_0xb7ef('0x5'),_0xb7ef('0x6'))}};
\ No newline at end of file
+var _0xffe2=['STRING','name','INTEGER','ENUM','rrmemory','beepall','sequelize','exports'];(function(_0x4edaf6,_0x42fed8){var _0x9adde1=function(_0x1d295b){while(--_0x1d295b){_0x4edaf6['push'](_0x4edaf6['shift']());}};_0x9adde1(++_0x42fed8);}(_0xffe2,0x14e));var _0x2ffe=function(_0xf59452,_0xe960df){_0xf59452=_0xf59452-0x0;var _0x3ce854=_0xffe2[_0xf59452];return _0x3ce854;};'use strict';var Sequelize=require(_0x2ffe('0x0'));module[_0x2ffe('0x1')]={'name':{'type':Sequelize[_0x2ffe('0x2')],'unique':_0x2ffe('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x2ffe('0x2')]},'timeout':{'type':Sequelize[_0x2ffe('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x2ffe('0x5')](_0x2ffe('0x6'),_0x2ffe('0x7'),'roundrobin')}};
\ No newline at end of file
index 4178f15..f2dd33a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd536=['count','set','Content-Range','save','then','destroy','get','OpenchannelQueues','sendStatus','error','name','send','index','fieldName','type','model','query','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','map','filter','merge','options','OpenchannelQueue','include','rows','catch','show','params','keys','rawAttributes','includeAll','find','create','body','user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','describe','getMembers','findOne','OpenchannelQueueId','UserOpenchannelQueue','findAll','User','findAndCountAll','UserId','openchannelPause','createdAt','format','%s/%s','SIP','updatedAt','getTeams','Team','addTeams','Agents','online','voicePause','interface','flatMap','sequelize','transaction','forEach','removeTeams','ids','select','tq.TeamId','from','join','ut.TeamId\x20=\x20tq.TeamId','OpenchannelQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT','every','TeamId','includes','all','compact','value','isEmpty','removeAgents','emit','userOpenchannelQueue:remove','addAgents','userOpenchannelQueue:save','isArray','getAgents','zip-dir','fast-json-patch','request-promise','moment','util','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./openchannelQueue.socket','register','end','status','json','offset','undefined','limit'];(function(_0x2b1d88,_0x4ec1f1){var _0x59a930=function(_0x23ad5d){while(--_0x23ad5d){_0x2b1d88['push'](_0x2b1d88['shift']());}};_0x59a930(++_0x4ec1f1);}(_0xd536,0x182));var _0x6d53=function(_0x1856a3,_0x5a84c3){_0x1856a3=_0x1856a3-0x0;var _0x40be29=_0xd536[_0x1856a3];return _0x40be29;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x6d53('0x0'));var jsonpatch=require(_0x6d53('0x1'));var rp=require(_0x6d53('0x2'));var moment=require(_0x6d53('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x6d53('0x4'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6d53('0x5'));var _=require(_0x6d53('0x6'));var squel=require(_0x6d53('0x7'));var crypto=require(_0x6d53('0x8'));var jsforce=require(_0x6d53('0x9'));var deskjs=require(_0x6d53('0xa'));var toCsv=require(_0x6d53('0xb'));var querystring=require(_0x6d53('0xc'));var Papa=require(_0x6d53('0xd'));var Redis=require(_0x6d53('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x6d53('0xf'));var as=require(_0x6d53('0x10'));var hardwareService=require(_0x6d53('0x11'));var logger=require(_0x6d53('0x12'))('api');var utils=require(_0x6d53('0x13'));var config=require(_0x6d53('0x14'));var licenseUtil=require(_0x6d53('0x15'));var db=require(_0x6d53('0x16'))['db'];config[_0x6d53('0x17')]=_[_0x6d53('0x18')](config[_0x6d53('0x17')],{'host':_0x6d53('0x19'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x6d53('0x17')]));require(_0x6d53('0x1a'))[_0x6d53('0x1b')](socket);function respondWithStatusCode(_0x397e71,_0x19dda4){_0x19dda4=_0x19dda4||0xcc;return function(_0x58af89){if(_0x58af89){return _0x397e71['sendStatus'](_0x19dda4);}return _0x397e71['status'](_0x19dda4)[_0x6d53('0x1c')]();};}function respondWithResult(_0x4e12c7,_0xf3fa71){_0xf3fa71=_0xf3fa71||0xc8;return function(_0x43b47a){if(_0x43b47a){return _0x4e12c7[_0x6d53('0x1d')](_0xf3fa71)[_0x6d53('0x1e')](_0x43b47a);}};}function respondWithFilteredResult(_0x13585d,_0x177749){return function(_0x1357e7){if(_0x1357e7){var _0x106cfc=typeof _0x177749[_0x6d53('0x1f')]===_0x6d53('0x20')&&typeof _0x177749[_0x6d53('0x21')]===_0x6d53('0x20');var _0xe8f3e7=_0x1357e7[_0x6d53('0x22')];var _0x4707c5=_0x106cfc?0x0:_0x177749[_0x6d53('0x1f')];var _0x162eea=_0x106cfc?_0x1357e7[_0x6d53('0x22')]:_0x177749['offset']+_0x177749['limit'];var _0xa63f94;if(_0x162eea>=_0xe8f3e7){_0x162eea=_0xe8f3e7;_0xa63f94=0xc8;}else{_0xa63f94=0xce;}_0x13585d[_0x6d53('0x1d')](_0xa63f94);return _0x13585d[_0x6d53('0x23')](_0x6d53('0x24'),_0x4707c5+'-'+_0x162eea+'/'+_0xe8f3e7)[_0x6d53('0x1e')](_0x1357e7);}return null;};}function patchUpdates(_0x10f75e){return function(_0xcb85a5){try{jsonpatch['apply'](_0xcb85a5,_0x10f75e,!![]);}catch(_0x5b24d5){return BPromise['reject'](_0x5b24d5);}return _0xcb85a5[_0x6d53('0x25')]();};}function saveUpdates(_0x8479ad,_0x1ff699){return function(_0x456c85){if(_0x456c85){return _0x456c85['update'](_0x8479ad)[_0x6d53('0x26')](function(_0x442d29){return _0x442d29;});}return null;};}function removeEntity(_0x4f9a29,_0x18eed8){return function(_0x4a31e9){if(_0x4a31e9){return _0x4a31e9[_0x6d53('0x27')]()[_0x6d53('0x26')](function(){var _0x1af5b4=_0x4a31e9[_0x6d53('0x28')]({'plain':!![]});var _0x29f820=_0x6d53('0x29');return db['UserProfileResource'][_0x6d53('0x27')]({'where':{'type':_0x29f820,'resourceId':_0x1af5b4['id']}})['then'](function(){return _0x4a31e9;});})[_0x6d53('0x26')](function(){_0x4f9a29[_0x6d53('0x1d')](0xcc)[_0x6d53('0x1c')]();});}};}function handleEntityNotFound(_0x3d4ed2,_0x534c6f){return function(_0x559a04){if(!_0x559a04){_0x3d4ed2[_0x6d53('0x2a')](0x194);}return _0x559a04;};}function handleError(_0x5e0f11,_0x1795ea){_0x1795ea=_0x1795ea||0x1f4;return function(_0x523fd4){logger[_0x6d53('0x2b')](_0x523fd4['stack']);if(_0x523fd4[_0x6d53('0x2c')]){delete _0x523fd4[_0x6d53('0x2c')];}_0x5e0f11[_0x6d53('0x1d')](_0x1795ea)[_0x6d53('0x2d')](_0x523fd4);};}exports[_0x6d53('0x2e')]=function(_0x3a3080,_0x560370){var _0x374d51={},_0x96107e={},_0x2babc6={'count':0x0,'rows':[]};var _0x33b45f=_['map'](db['OpenchannelQueue']['rawAttributes'],function(_0x5653d1){return{'name':_0x5653d1[_0x6d53('0x2f')],'type':_0x5653d1[_0x6d53('0x30')]['key']};});_0x96107e[_0x6d53('0x31')]=_['map'](_0x33b45f,_0x6d53('0x2c'));_0x96107e[_0x6d53('0x32')]=_['keys'](_0x3a3080[_0x6d53('0x32')]);_0x96107e['filters']=_[_0x6d53('0x33')](_0x96107e['model'],_0x96107e[_0x6d53('0x32')]);_0x374d51['attributes']=_[_0x6d53('0x33')](_0x96107e['model'],qs[_0x6d53('0x34')](_0x3a3080['query'][_0x6d53('0x34')]));_0x374d51['attributes']=_0x374d51[_0x6d53('0x35')][_0x6d53('0x36')]?_0x374d51[_0x6d53('0x35')]:_0x96107e[_0x6d53('0x31')];if(!_0x3a3080[_0x6d53('0x32')][_0x6d53('0x37')](_0x6d53('0x38'))){_0x374d51[_0x6d53('0x21')]=qs['limit'](_0x3a3080[_0x6d53('0x32')][_0x6d53('0x21')]);_0x374d51[_0x6d53('0x1f')]=qs[_0x6d53('0x1f')](_0x3a3080[_0x6d53('0x32')][_0x6d53('0x1f')]);}_0x374d51[_0x6d53('0x39')]=qs[_0x6d53('0x3a')](_0x3a3080[_0x6d53('0x32')]['sort']);_0x374d51[_0x6d53('0x3b')]=qs[_0x6d53('0x3c')](_[_0x6d53('0x3d')](_0x3a3080['query'],_0x96107e[_0x6d53('0x3c')]),_0x33b45f);if(_0x3a3080['query']['filter']){_0x374d51[_0x6d53('0x3b')]=_['merge'](_0x374d51[_0x6d53('0x3b')],{'$or':_[_0x6d53('0x3e')](_0x33b45f,function(_0x497ae4){if(_0x497ae4['type']!=='VIRTUAL'){var _0xdbff4={};_0xdbff4[_0x497ae4[_0x6d53('0x2c')]]={'$like':'%'+_0x3a3080[_0x6d53('0x32')][_0x6d53('0x3f')]+'%'};return _0xdbff4;}})});}_0x374d51=_[_0x6d53('0x40')]({},_0x374d51,_0x3a3080[_0x6d53('0x41')]);var _0x54eda8={'where':_0x374d51[_0x6d53('0x3b')]};return db[_0x6d53('0x42')][_0x6d53('0x22')](_0x54eda8)[_0x6d53('0x26')](function(_0x221022){_0x2babc6[_0x6d53('0x22')]=_0x221022;if(_0x3a3080[_0x6d53('0x32')]['includeAll']){_0x374d51[_0x6d53('0x43')]=[{'all':!![]}];}return db[_0x6d53('0x42')]['findAll'](_0x374d51);})['then'](function(_0x14ccb1){_0x2babc6[_0x6d53('0x44')]=_0x14ccb1;return _0x2babc6;})['then'](respondWithFilteredResult(_0x560370,_0x374d51))[_0x6d53('0x45')](handleError(_0x560370,null));};exports[_0x6d53('0x46')]=function(_0x5cde64,_0x367da9){var _0x57c562={'raw':!![],'where':{'id':_0x5cde64[_0x6d53('0x47')]['id']}},_0x474f32={};_0x474f32[_0x6d53('0x31')]=_[_0x6d53('0x48')](db[_0x6d53('0x42')][_0x6d53('0x49')]);_0x474f32[_0x6d53('0x32')]=_[_0x6d53('0x48')](_0x5cde64[_0x6d53('0x32')]);_0x474f32[_0x6d53('0x3c')]=_['intersection'](_0x474f32[_0x6d53('0x31')],_0x474f32[_0x6d53('0x32')]);_0x57c562[_0x6d53('0x35')]=_[_0x6d53('0x33')](_0x474f32[_0x6d53('0x31')],qs[_0x6d53('0x34')](_0x5cde64[_0x6d53('0x32')][_0x6d53('0x34')]));_0x57c562[_0x6d53('0x35')]=_0x57c562[_0x6d53('0x35')][_0x6d53('0x36')]?_0x57c562[_0x6d53('0x35')]:_0x474f32[_0x6d53('0x31')];if(_0x5cde64['query'][_0x6d53('0x4a')]){_0x57c562[_0x6d53('0x43')]=[{'all':!![]}];}_0x57c562=_['merge']({},_0x57c562,_0x5cde64[_0x6d53('0x41')]);return db[_0x6d53('0x42')][_0x6d53('0x4b')](_0x57c562)[_0x6d53('0x26')](handleEntityNotFound(_0x367da9,null))[_0x6d53('0x26')](respondWithResult(_0x367da9,null))[_0x6d53('0x45')](handleError(_0x367da9,null));};exports['create']=function(_0x296a55,_0x3e3e2a){return db['OpenchannelQueue'][_0x6d53('0x4c')](_0x296a55[_0x6d53('0x4d')],{})[_0x6d53('0x26')](function(_0xe37737){var _0x18eb3a=_0x296a55[_0x6d53('0x4e')]['get']({'plain':!![]});if(!_0x18eb3a)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x18eb3a[_0x6d53('0x4f')]===_0x6d53('0x4e')){var _0x2850a8=_0xe37737[_0x6d53('0x28')]({'plain':!![]});var _0x2cdaca='OpenchannelQueues';return db[_0x6d53('0x50')][_0x6d53('0x4b')]({'where':{'name':_0x2cdaca,'userProfileId':_0x18eb3a[_0x6d53('0x51')]},'raw':!![]})[_0x6d53('0x26')](function(_0x259439){if(_0x259439&&_0x259439[_0x6d53('0x52')]===0x0){return db[_0x6d53('0x53')][_0x6d53('0x4c')]({'name':_0x2850a8[_0x6d53('0x2c')],'resourceId':_0x2850a8['id'],'type':_0x259439[_0x6d53('0x2c')],'sectionId':_0x259439['id']},{})['then'](function(){return _0xe37737;});}else{return _0xe37737;}})[_0x6d53('0x45')](function(_0x4d02cb){logger[_0x6d53('0x2b')](_0x6d53('0x54'),_0x4d02cb);throw _0x4d02cb;});}return _0xe37737;})['then'](respondWithResult(_0x3e3e2a,0xc9))['catch'](handleError(_0x3e3e2a,null));};exports[_0x6d53('0x55')]=function(_0x290f69,_0x4cd273){if(_0x290f69[_0x6d53('0x4d')]['id']){delete _0x290f69['body']['id'];}return db[_0x6d53('0x42')]['find']({'where':{'id':_0x290f69[_0x6d53('0x47')]['id']}})[_0x6d53('0x26')](handleEntityNotFound(_0x4cd273,null))[_0x6d53('0x26')](saveUpdates(_0x290f69[_0x6d53('0x4d')],null))['then'](respondWithResult(_0x4cd273,null))[_0x6d53('0x45')](handleError(_0x4cd273,null));};exports['destroy']=function(_0x58529,_0x178958){return db[_0x6d53('0x42')][_0x6d53('0x4b')]({'where':{'id':_0x58529[_0x6d53('0x47')]['id']}})[_0x6d53('0x26')](handleEntityNotFound(_0x178958,null))['then'](removeEntity(_0x178958,null))[_0x6d53('0x45')](handleError(_0x178958,null));};exports['describe']=function(_0x37b377,_0x3384ed){return db[_0x6d53('0x42')][_0x6d53('0x56')]()[_0x6d53('0x26')](respondWithResult(_0x3384ed,null))[_0x6d53('0x45')](handleError(_0x3384ed,null));};exports[_0x6d53('0x57')]=function(_0x1bf336,_0x104fdc,_0x3550db){var _0x529f36={'raw':!![],'where':{}},_0x536965={},_0x1aaa62;return db[_0x6d53('0x42')][_0x6d53('0x58')]({'where':{'id':_0x1bf336[_0x6d53('0x47')]['id']}})[_0x6d53('0x26')](handleEntityNotFound(_0x104fdc,null))[_0x6d53('0x26')](function(_0x4f09ac){if(_0x4f09ac){_0x1aaa62=_0x4f09ac['get']({'plain':!![]});_0x536965[_0x6d53('0x31')]=_[_0x6d53('0x48')](db['UserOpenchannelQueue'][_0x6d53('0x49')]);_0x536965[_0x6d53('0x32')]=_[_0x6d53('0x48')](_0x1bf336[_0x6d53('0x32')]);_0x536965[_0x6d53('0x3c')]=_['intersection'](_0x536965[_0x6d53('0x31')],_0x536965[_0x6d53('0x32')]);_0x529f36[_0x6d53('0x35')]=_[_0x6d53('0x33')](_0x536965[_0x6d53('0x31')],qs[_0x6d53('0x34')](_0x1bf336[_0x6d53('0x32')]['fields']));_0x529f36[_0x6d53('0x35')]=_0x529f36[_0x6d53('0x35')][_0x6d53('0x36')]?_0x529f36[_0x6d53('0x35')]:_0x536965[_0x6d53('0x31')];if(!_0x1bf336[_0x6d53('0x32')][_0x6d53('0x37')](_0x6d53('0x38'))){_0x529f36[_0x6d53('0x21')]=qs[_0x6d53('0x21')](_0x1bf336['query'][_0x6d53('0x21')]);_0x529f36[_0x6d53('0x1f')]=qs[_0x6d53('0x1f')](_0x1bf336[_0x6d53('0x32')]['offset']);}_0x529f36['order']=qs[_0x6d53('0x3a')](_0x1bf336[_0x6d53('0x32')][_0x6d53('0x3a')]);_0x529f36['where']=qs[_0x6d53('0x3c')](_['pick'](_0x1bf336[_0x6d53('0x32')],_0x536965[_0x6d53('0x3c')]));_0x529f36[_0x6d53('0x3b')][_0x6d53('0x59')]=_0x4f09ac['id'];if(_0x1bf336['query'][_0x6d53('0x3f')]){_0x529f36[_0x6d53('0x3b')]=_[_0x6d53('0x40')](_0x529f36[_0x6d53('0x3b')],{'$or':_['map'](_0x529f36[_0x6d53('0x35')],function(_0x179abc){var _0x58b560={};_0x58b560[_0x179abc]={'$like':'%'+_0x1bf336[_0x6d53('0x32')]['filter']+'%'};return _0x58b560;})});}_0x529f36=_[_0x6d53('0x40')]({},_0x529f36,_0x1bf336[_0x6d53('0x41')]);return db[_0x6d53('0x5a')][_0x6d53('0x5b')](_0x529f36);}})[_0x6d53('0x26')](function(_0x243416){if(_0x243416){return db[_0x6d53('0x5c')][_0x6d53('0x5d')]({'where':{'id':_['map'](_0x243416,_0x6d53('0x5e')),'role':'agent'},'attributes':['id',_0x6d53('0x2c'),_0x6d53('0x5f'),'updatedAt',_0x6d53('0x60')]});}})['then'](function(_0x4733a6){if(_0x4733a6){return{'count':_0x4733a6[_0x6d53('0x22')],'rows':_[_0x6d53('0x3e')](_0x4733a6[_0x6d53('0x44')],function(_0x25007d){return{'membername':_0x25007d[_0x6d53('0x2c')],'UserId':_0x25007d['id'],'queue_name':_0x1aaa62['name'],'OpenchannelQueueId':_0x1aaa62['id'],'interface':util[_0x6d53('0x61')](_0x6d53('0x62'),_0x6d53('0x63'),_0x25007d[_0x6d53('0x2c')]),'penalty':0x0,'paused':_0x25007d[_0x6d53('0x5f')],'createdAt':_0x25007d[_0x6d53('0x60')],'updatedAt':_0x25007d[_0x6d53('0x64')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x6d53('0x26')](respondWithFilteredResult(_0x104fdc,_0x529f36))[_0x6d53('0x45')](handleError(_0x104fdc,null));};exports[_0x6d53('0x65')]=function(_0x311cf0,_0x1c8302,_0x1f9775){var _0x567bbe={};var _0x2fa188={};var _0x4b1c59;var _0x1a8fac;return db[_0x6d53('0x42')][_0x6d53('0x58')]({'where':{'id':_0x311cf0[_0x6d53('0x47')]['id']}})[_0x6d53('0x26')](handleEntityNotFound(_0x1c8302,null))[_0x6d53('0x26')](function(_0x56e422){if(_0x56e422){_0x4b1c59=_0x56e422;_0x2fa188[_0x6d53('0x31')]=_[_0x6d53('0x48')](db[_0x6d53('0x66')]['rawAttributes']);_0x2fa188['query']=_[_0x6d53('0x48')](_0x311cf0[_0x6d53('0x32')]);_0x2fa188[_0x6d53('0x3c')]=_['intersection'](_0x2fa188[_0x6d53('0x31')],_0x2fa188['query']);_0x567bbe['attributes']=_[_0x6d53('0x33')](_0x2fa188[_0x6d53('0x31')],qs['fields'](_0x311cf0[_0x6d53('0x32')][_0x6d53('0x34')]));_0x567bbe[_0x6d53('0x35')]=_0x567bbe[_0x6d53('0x35')][_0x6d53('0x36')]?_0x567bbe[_0x6d53('0x35')]:_0x2fa188[_0x6d53('0x31')];_0x567bbe['order']=qs[_0x6d53('0x3a')](_0x311cf0[_0x6d53('0x32')][_0x6d53('0x3a')]);_0x567bbe['where']=qs[_0x6d53('0x3c')](_['pick'](_0x311cf0[_0x6d53('0x32')],_0x2fa188['filters']));if(_0x311cf0[_0x6d53('0x32')][_0x6d53('0x3f')]){_0x567bbe[_0x6d53('0x3b')]=_['merge'](_0x567bbe[_0x6d53('0x3b')],{'$or':_[_0x6d53('0x3e')](_0x567bbe[_0x6d53('0x35')],function(_0x1d12bb){var _0x4d5099={};_0x4d5099[_0x1d12bb]={'$like':'%'+_0x311cf0['query']['filter']+'%'};return _0x4d5099;})});}_0x567bbe=_['merge']({},_0x567bbe,_0x311cf0[_0x6d53('0x41')]);return _0x4b1c59[_0x6d53('0x65')](_0x567bbe);}})['then'](function(_0x10d2cb){if(_0x10d2cb){_0x1a8fac=_0x10d2cb['length'];if(!_0x311cf0[_0x6d53('0x32')]['hasOwnProperty']('nolimit')){_0x567bbe[_0x6d53('0x21')]=qs['limit'](_0x311cf0[_0x6d53('0x32')][_0x6d53('0x21')]);_0x567bbe[_0x6d53('0x1f')]=qs[_0x6d53('0x1f')](_0x311cf0[_0x6d53('0x32')][_0x6d53('0x1f')]);}return _0x4b1c59[_0x6d53('0x65')](_0x567bbe);}})[_0x6d53('0x26')](function(_0xb3a425){if(_0xb3a425){return _0xb3a425?{'count':_0x1a8fac,'rows':_0xb3a425}:null;}})[_0x6d53('0x26')](respondWithResult(_0x1c8302,null))[_0x6d53('0x45')](handleError(_0x1c8302,null));};exports[_0x6d53('0x67')]=function(_0x12ec9f,_0xcd5f7b,_0x27a2fc){var _0x497d64=_0x12ec9f[_0x6d53('0x4d')]['ids'];return db['Team'][_0x6d53('0x5b')]({'where':{'id':_0x497d64},'attributes':['id'],'include':[{'model':db['User'],'as':_0x6d53('0x68'),'attributes':['id',_0x6d53('0x2c'),_0x6d53('0x69'),_0x6d53('0x6a'),_0x6d53('0x6b')],'raw':!![]}]})[_0x6d53('0x26')](function(_0x510ac5){if(_0x510ac5){var _0x75fd7a=_[_0x6d53('0x6c')](_0x510ac5,function(_0x2659b9){var _0x4abe81=_0x2659b9[_0x6d53('0x28')]({'plain':!![]});return _0x4abe81['Agents'];});return db['OpenchannelQueue'][_0x6d53('0x4b')]({'where':{'id':_0x12ec9f[_0x6d53('0x47')]['id']}})['then'](function(_0x984053){return db[_0x6d53('0x6d')][_0x6d53('0x6e')](function(_0x472c08){return _0x984053[_0x6d53('0x67')](_0x497d64,{'transaction':_0x472c08})[_0x6d53('0x26')](function(){return BPromise['each'](_0x75fd7a,function(_0x43fe26){return db['UserOpenchannelQueue']['findOrCreate']({'where':{'UserId':_0x43fe26['id'],'OpenchannelQueueId':_0x12ec9f[_0x6d53('0x47')]['id']},'transaction':_0x472c08});});})[_0x6d53('0x26')](function(){_0x75fd7a[_0x6d53('0x6f')](function(_0x4160e0){socket['emit']('userOpenchannelQueue:save',{'UserId':_0x4160e0['id'],'OpenchannelQueueId':_0x984053['id']});});});});});}})['then'](respondWithStatusCode(_0xcd5f7b,null))[_0x6d53('0x45')](handleError(_0xcd5f7b,null));};exports[_0x6d53('0x70')]=function(_0x3557f2,_0x362d75,_0x50115c){return db[_0x6d53('0x66')][_0x6d53('0x5b')]({'where':{'id':_0x3557f2['query'][_0x6d53('0x71')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0x6d53('0x68'),'attributes':['id'],'raw':!![]}]})[_0x6d53('0x26')](handleEntityNotFound(_0x362d75,null))[_0x6d53('0x26')](function(_0x27fef7){var _0x2d9fb0=_[_0x6d53('0x3e')](_0x27fef7,'id');var _0x11da76=[];var _0x4607af=[];var _0x2b5403=squel[_0x6d53('0x72')]();_0x2b5403['field'](_0x6d53('0x73'))[_0x6d53('0x74')]('team_has_openchannel_queues','tq')[_0x6d53('0x75')]('user_has_teams','ut',_0x6d53('0x76'))[_0x6d53('0x3b')](_0x6d53('0x77'),_0x3557f2['params']['id']);for(var _0x4c9c35=0x0;_0x4c9c35<_0x27fef7[_0x6d53('0x36')];_0x4c9c35+=0x1){let _0x342c40=_0x27fef7[_0x4c9c35];for(var _0x3af341=0x0;_0x3af341<_0x342c40[_0x6d53('0x68')][_0x6d53('0x36')];_0x3af341+=0x1){let _0x4be8dc=_0x342c40['Agents'][_0x3af341];var _0x4f1291=_0x2b5403[_0x6d53('0x78')]();_0x4f1291[_0x6d53('0x3b')](_0x6d53('0x79'),_0x4be8dc['id']);_0x4607af[_0x6d53('0x7a')](db['sequelize'][_0x6d53('0x32')](_0x4f1291[_0x6d53('0x7b')](),{'type':db[_0x6d53('0x6d')][_0x6d53('0x7c')][_0x6d53('0x7d')]})['then'](function(_0x3db8a2){if(_0x3db8a2[_0x6d53('0x36')]===0x1){return _0x4be8dc['id'];}else{var _0x221f50=_[_0x6d53('0x7e')](_['map'](_0x3db8a2,_0x6d53('0x7f')),function(_0xc4ae2f){return _[_0x6d53('0x80')](_0x2d9fb0,_0xc4ae2f);});if(_0x221f50){return _0x4be8dc['id'];}}}));}}return BPromise[_0x6d53('0x81')](_0x4607af)[_0x6d53('0x26')](function(_0x4c5532){_0x11da76=_(_0x11da76)['union'](_0x4c5532)[_0x6d53('0x82')]()[_0x6d53('0x83')]();return db[_0x6d53('0x42')][_0x6d53('0x4b')]({'where':{'id':_0x3557f2[_0x6d53('0x47')]['id']}})['then'](function(_0x6a0699){return db[_0x6d53('0x6d')][_0x6d53('0x6e')](function(_0x4da1cd){return _0x6a0699[_0x6d53('0x70')](_0x3557f2['query'][_0x6d53('0x71')],{'transaction':_0x4da1cd})[_0x6d53('0x26')](function(){if(!_[_0x6d53('0x84')](_0x11da76)){return _0x6a0699[_0x6d53('0x85')](_0x11da76,{'transaction':_0x4da1cd});}})['then'](function(){_0x11da76[_0x6d53('0x6f')](function(_0x389505){socket[_0x6d53('0x86')](_0x6d53('0x87'),{'UserId':_0x389505,'OpenchannelQueueId':_0x6a0699['id']});});});});});});})[_0x6d53('0x26')](respondWithStatusCode(_0x362d75,null))[_0x6d53('0x45')](handleError(_0x362d75,null));};exports[_0x6d53('0x88')]=function(_0x3a8970,_0x209abe,_0x385124){return db[_0x6d53('0x42')][_0x6d53('0x4b')]({'where':{'id':_0x3a8970[_0x6d53('0x47')]['id']}})[_0x6d53('0x26')](handleEntityNotFound(_0x209abe,null))[_0x6d53('0x26')](function(_0x10a3b1){if(_0x10a3b1){return _0x10a3b1[_0x6d53('0x88')](_0x3a8970['body'][_0x6d53('0x71')],_['omit'](_0x3a8970['body'],['ids','id'])||{})['spread'](function(_0x30e4de){for(var _0x2819fb=0x0;_0x2819fb<_0x3a8970['body']['ids'][_0x6d53('0x36')];_0x2819fb+=0x1){socket['emit'](_0x6d53('0x89'),{'UserId':Number(_0x3a8970[_0x6d53('0x4d')][_0x6d53('0x71')][_0x2819fb]),'OpenchannelQueueId':Number(_0x3a8970[_0x6d53('0x47')]['id'])});}return _0x30e4de;});}})[_0x6d53('0x26')](respondWithResult(_0x209abe,null))[_0x6d53('0x45')](handleError(_0x209abe,null));};exports[_0x6d53('0x85')]=function(_0x269d66,_0x2a361d,_0x5e3616){return db[_0x6d53('0x42')][_0x6d53('0x4b')]({'where':{'id':_0x269d66['params']['id']}})[_0x6d53('0x26')](handleEntityNotFound(_0x2a361d,null))[_0x6d53('0x26')](function(_0x34cee1){if(_0x34cee1){return _0x34cee1[_0x6d53('0x85')](_0x269d66['query'][_0x6d53('0x71')])[_0x6d53('0x26')](function(){if(_[_0x6d53('0x8a')](_0x269d66[_0x6d53('0x32')]['ids'])){for(var _0x1add3f=0x0;_0x1add3f<_0x269d66[_0x6d53('0x32')]['ids']['length'];_0x1add3f+=0x1){socket[_0x6d53('0x86')](_0x6d53('0x87'),{'UserId':Number(_0x269d66[_0x6d53('0x32')][_0x6d53('0x71')][_0x1add3f]),'OpenchannelQueueId':Number(_0x269d66[_0x6d53('0x47')]['id'])});}}else{socket['emit'](_0x6d53('0x87'),{'UserId':Number(_0x269d66[_0x6d53('0x32')][_0x6d53('0x71')]),'OpenchannelQueueId':Number(_0x269d66['params']['id'])});}});}})['then'](respondWithStatusCode(_0x2a361d,null))['catch'](handleError(_0x2a361d,null));};exports[_0x6d53('0x8b')]=function(_0x2fb64f,_0x475167,_0x35af11){var _0x418589={};var _0x14fc58={};var _0x34e594;var _0x5d83f9;return db[_0x6d53('0x42')][_0x6d53('0x58')]({'where':{'id':_0x2fb64f[_0x6d53('0x47')]['id']}})[_0x6d53('0x26')](handleEntityNotFound(_0x475167,null))[_0x6d53('0x26')](function(_0x27555b){if(_0x27555b){_0x34e594=_0x27555b;_0x14fc58[_0x6d53('0x31')]=_[_0x6d53('0x48')](db[_0x6d53('0x5c')][_0x6d53('0x49')]);_0x14fc58[_0x6d53('0x32')]=_[_0x6d53('0x48')](_0x2fb64f[_0x6d53('0x32')]);_0x14fc58[_0x6d53('0x3c')]=_[_0x6d53('0x33')](_0x14fc58['model'],_0x14fc58['query']);_0x418589[_0x6d53('0x35')]=_['intersection'](_0x14fc58[_0x6d53('0x31')],qs[_0x6d53('0x34')](_0x2fb64f[_0x6d53('0x32')][_0x6d53('0x34')]));_0x418589['attributes']=_0x418589[_0x6d53('0x35')]['length']?_0x418589[_0x6d53('0x35')]:_0x14fc58[_0x6d53('0x31')];_0x418589[_0x6d53('0x39')]=qs[_0x6d53('0x3a')](_0x2fb64f['query']['sort']);_0x418589[_0x6d53('0x3b')]=qs[_0x6d53('0x3c')](_[_0x6d53('0x3d')](_0x2fb64f[_0x6d53('0x32')],_0x14fc58[_0x6d53('0x3c')]));if(_0x2fb64f[_0x6d53('0x32')]['filter']){_0x418589[_0x6d53('0x3b')]=_[_0x6d53('0x40')](_0x418589[_0x6d53('0x3b')],{'$or':_[_0x6d53('0x3e')](_0x418589[_0x6d53('0x35')],function(_0x4b5cb9){var _0x366065={};_0x366065[_0x4b5cb9]={'$like':'%'+_0x2fb64f[_0x6d53('0x32')][_0x6d53('0x3f')]+'%'};return _0x366065;})});}_0x418589=_[_0x6d53('0x40')]({},_0x418589,_0x2fb64f[_0x6d53('0x41')]);return _0x34e594[_0x6d53('0x8b')](_0x418589);}})[_0x6d53('0x26')](function(_0x1d6d71){if(_0x1d6d71){_0x5d83f9=_0x1d6d71[_0x6d53('0x36')];if(!_0x2fb64f[_0x6d53('0x32')][_0x6d53('0x37')](_0x6d53('0x38'))){_0x418589[_0x6d53('0x21')]=qs['limit'](_0x2fb64f['query']['limit']);_0x418589[_0x6d53('0x1f')]=qs['offset'](_0x2fb64f[_0x6d53('0x32')][_0x6d53('0x1f')]);}return _0x34e594['getAgents'](_0x418589);}})[_0x6d53('0x26')](function(_0x377035){if(_0x377035){return _0x377035?{'count':_0x5d83f9,'rows':_0x377035}:null;}})[_0x6d53('0x26')](respondWithResult(_0x475167,null))[_0x6d53('0x45')](handleError(_0x475167,null));};
\ No newline at end of file
+var _0x1b87=['filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','params','length','find','create','body','user','get','role','UserProfileSection','userProfileId','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','destroy','describe','getMembers','OpenchannelQueueId','UserOpenchannelQueue','UserId','updatedAt','createdAt','format','%s/%s','openchannelPause','getTeams','Team','addTeams','ids','User','Agents','interface','sequelize','transaction','each','findOrCreate','forEach','emit','removeTeams','select','field','tq.TeamId','from','team_has_openchannel_queues','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','OpenchannelQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT','every','all','compact','value','isEmpty','userOpenchannelQueue:remove','addAgents','spread','userOpenchannelQueue:save','removeAgents','isArray','getAgents','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','socket.io-emitter','./openchannelQueue.socket','register','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','then','OpenchannelQueues','error','name','map','OpenchannelQueue','rawAttributes','fieldName','type','key','model','keys','query'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x1b87,0x166));var _0x71b8=function(_0x8c4fbe,_0x5b4750){_0x8c4fbe=_0x8c4fbe-0x0;var _0xeec020=_0x1b87[_0x8c4fbe];return _0xeec020;};'use strict';var emlformat=require(_0x71b8('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x71b8('0x1'));var jsonpatch=require(_0x71b8('0x2'));var rp=require('request-promise');var moment=require(_0x71b8('0x3'));var BPromise=require(_0x71b8('0x4'));var Mustache=require(_0x71b8('0x5'));var util=require(_0x71b8('0x6'));var path=require(_0x71b8('0x7'));var sox=require(_0x71b8('0x8'));var csv=require(_0x71b8('0x9'));var ejs=require(_0x71b8('0xa'));var fs=require('fs');var fs_extra=require(_0x71b8('0xb'));var _=require('lodash');var squel=require(_0x71b8('0xc'));var crypto=require(_0x71b8('0xd'));var jsforce=require(_0x71b8('0xe'));var deskjs=require(_0x71b8('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x71b8('0x10'));var Redis=require(_0x71b8('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x71b8('0x12'));var as=require(_0x71b8('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x71b8('0x14'))(_0x71b8('0x15'));var utils=require('../../config/utils');var config=require(_0x71b8('0x16'));var licenseUtil=require(_0x71b8('0x17'));var db=require(_0x71b8('0x18'))['db'];config['redis']=_[_0x71b8('0x19')](config[_0x71b8('0x1a')],{'host':'localhost','port':0x18eb});var socket=require(_0x71b8('0x1b'))(new Redis(config[_0x71b8('0x1a')]));require(_0x71b8('0x1c'))[_0x71b8('0x1d')](socket);function respondWithStatusCode(_0x197507,_0x48a550){_0x48a550=_0x48a550||0xcc;return function(_0x2e4319){if(_0x2e4319){return _0x197507[_0x71b8('0x1e')](_0x48a550);}return _0x197507[_0x71b8('0x1f')](_0x48a550)[_0x71b8('0x20')]();};}function respondWithResult(_0x1c1065,_0x275eb4){_0x275eb4=_0x275eb4||0xc8;return function(_0x42d716){if(_0x42d716){return _0x1c1065[_0x71b8('0x1f')](_0x275eb4)['json'](_0x42d716);}};}function respondWithFilteredResult(_0x5e3a41,_0x1ad06e){return function(_0x6f7d51){if(_0x6f7d51){var _0x46b5b3=typeof _0x1ad06e[_0x71b8('0x21')]===_0x71b8('0x22')&&typeof _0x1ad06e[_0x71b8('0x23')]===_0x71b8('0x22');var _0x41e207=_0x6f7d51['count'];var _0x1358c6=_0x46b5b3?0x0:_0x1ad06e[_0x71b8('0x21')];var _0x11ff7c=_0x46b5b3?_0x6f7d51[_0x71b8('0x24')]:_0x1ad06e[_0x71b8('0x21')]+_0x1ad06e[_0x71b8('0x23')];var _0x1b596d;if(_0x11ff7c>=_0x41e207){_0x11ff7c=_0x41e207;_0x1b596d=0xc8;}else{_0x1b596d=0xce;}_0x5e3a41[_0x71b8('0x1f')](_0x1b596d);return _0x5e3a41[_0x71b8('0x25')](_0x71b8('0x26'),_0x1358c6+'-'+_0x11ff7c+'/'+_0x41e207)[_0x71b8('0x27')](_0x6f7d51);}return null;};}function patchUpdates(_0x345818){return function(_0x47df52){try{jsonpatch[_0x71b8('0x28')](_0x47df52,_0x345818,!![]);}catch(_0x6abe90){return BPromise[_0x71b8('0x29')](_0x6abe90);}return _0x47df52[_0x71b8('0x2a')]();};}function saveUpdates(_0x235040,_0x2430d8){return function(_0x44a525){if(_0x44a525){return _0x44a525['update'](_0x235040)[_0x71b8('0x2b')](function(_0x221cce){return _0x221cce;});}return null;};}function removeEntity(_0x42f23d,_0x3ae7ba){return function(_0x26ad97){if(_0x26ad97){return _0x26ad97['destroy']()[_0x71b8('0x2b')](function(){var _0x11fed8=_0x26ad97['get']({'plain':!![]});var _0x4e9b2f=_0x71b8('0x2c');return db['UserProfileResource']['destroy']({'where':{'type':_0x4e9b2f,'resourceId':_0x11fed8['id']}})[_0x71b8('0x2b')](function(){return _0x26ad97;});})['then'](function(){_0x42f23d[_0x71b8('0x1f')](0xcc)['end']();});}};}function handleEntityNotFound(_0xd0d92f,_0x349fc9){return function(_0x56211e){if(!_0x56211e){_0xd0d92f[_0x71b8('0x1e')](0x194);}return _0x56211e;};}function handleError(_0x5df39e,_0x37814b){_0x37814b=_0x37814b||0x1f4;return function(_0x604a79){logger[_0x71b8('0x2d')](_0x604a79['stack']);if(_0x604a79['name']){delete _0x604a79[_0x71b8('0x2e')];}_0x5df39e[_0x71b8('0x1f')](_0x37814b)['send'](_0x604a79);};}exports['index']=function(_0x1cb47f,_0x16b8a9){var _0x19c6f2={},_0x4f4254={},_0x14a550={'count':0x0,'rows':[]};var _0x1f05e3=_[_0x71b8('0x2f')](db[_0x71b8('0x30')][_0x71b8('0x31')],function(_0x14595e){return{'name':_0x14595e[_0x71b8('0x32')],'type':_0x14595e[_0x71b8('0x33')][_0x71b8('0x34')]};});_0x4f4254[_0x71b8('0x35')]=_[_0x71b8('0x2f')](_0x1f05e3,_0x71b8('0x2e'));_0x4f4254['query']=_[_0x71b8('0x36')](_0x1cb47f[_0x71b8('0x37')]);_0x4f4254[_0x71b8('0x38')]=_['intersection'](_0x4f4254['model'],_0x4f4254['query']);_0x19c6f2['attributes']=_[_0x71b8('0x39')](_0x4f4254['model'],qs[_0x71b8('0x3a')](_0x1cb47f[_0x71b8('0x37')][_0x71b8('0x3a')]));_0x19c6f2[_0x71b8('0x3b')]=_0x19c6f2[_0x71b8('0x3b')]['length']?_0x19c6f2[_0x71b8('0x3b')]:_0x4f4254[_0x71b8('0x35')];if(!_0x1cb47f[_0x71b8('0x37')][_0x71b8('0x3c')](_0x71b8('0x3d'))){_0x19c6f2['limit']=qs[_0x71b8('0x23')](_0x1cb47f[_0x71b8('0x37')][_0x71b8('0x23')]);_0x19c6f2[_0x71b8('0x21')]=qs[_0x71b8('0x21')](_0x1cb47f[_0x71b8('0x37')][_0x71b8('0x21')]);}_0x19c6f2[_0x71b8('0x3e')]=qs[_0x71b8('0x3f')](_0x1cb47f[_0x71b8('0x37')]['sort']);_0x19c6f2[_0x71b8('0x40')]=qs['filters'](_[_0x71b8('0x41')](_0x1cb47f[_0x71b8('0x37')],_0x4f4254[_0x71b8('0x38')]),_0x1f05e3);if(_0x1cb47f['query']['filter']){_0x19c6f2[_0x71b8('0x40')]=_[_0x71b8('0x42')](_0x19c6f2[_0x71b8('0x40')],{'$or':_['map'](_0x1f05e3,function(_0x461a99){if(_0x461a99[_0x71b8('0x33')]!==_0x71b8('0x43')){var _0x3bc035={};_0x3bc035[_0x461a99[_0x71b8('0x2e')]]={'$like':'%'+_0x1cb47f['query'][_0x71b8('0x44')]+'%'};return _0x3bc035;}})});}_0x19c6f2=_[_0x71b8('0x42')]({},_0x19c6f2,_0x1cb47f[_0x71b8('0x45')]);var _0x323ea8={'where':_0x19c6f2['where']};return db[_0x71b8('0x30')]['count'](_0x323ea8)['then'](function(_0x30da2f){_0x14a550[_0x71b8('0x24')]=_0x30da2f;if(_0x1cb47f[_0x71b8('0x37')][_0x71b8('0x46')]){_0x19c6f2[_0x71b8('0x47')]=[{'all':!![]}];}return db[_0x71b8('0x30')][_0x71b8('0x48')](_0x19c6f2);})[_0x71b8('0x2b')](function(_0x526ee1){_0x14a550[_0x71b8('0x49')]=_0x526ee1;return _0x14a550;})[_0x71b8('0x2b')](respondWithFilteredResult(_0x16b8a9,_0x19c6f2))[_0x71b8('0x4a')](handleError(_0x16b8a9,null));};exports[_0x71b8('0x4b')]=function(_0x297ef7,_0x859492){var _0x50f4e7={'raw':!![],'where':{'id':_0x297ef7[_0x71b8('0x4c')]['id']}},_0x13eaee={};_0x13eaee['model']=_[_0x71b8('0x36')](db[_0x71b8('0x30')][_0x71b8('0x31')]);_0x13eaee[_0x71b8('0x37')]=_[_0x71b8('0x36')](_0x297ef7[_0x71b8('0x37')]);_0x13eaee['filters']=_[_0x71b8('0x39')](_0x13eaee[_0x71b8('0x35')],_0x13eaee['query']);_0x50f4e7[_0x71b8('0x3b')]=_[_0x71b8('0x39')](_0x13eaee['model'],qs[_0x71b8('0x3a')](_0x297ef7[_0x71b8('0x37')][_0x71b8('0x3a')]));_0x50f4e7[_0x71b8('0x3b')]=_0x50f4e7['attributes'][_0x71b8('0x4d')]?_0x50f4e7['attributes']:_0x13eaee['model'];if(_0x297ef7[_0x71b8('0x37')][_0x71b8('0x46')]){_0x50f4e7[_0x71b8('0x47')]=[{'all':!![]}];}_0x50f4e7=_[_0x71b8('0x42')]({},_0x50f4e7,_0x297ef7['options']);return db[_0x71b8('0x30')][_0x71b8('0x4e')](_0x50f4e7)[_0x71b8('0x2b')](handleEntityNotFound(_0x859492,null))['then'](respondWithResult(_0x859492,null))[_0x71b8('0x4a')](handleError(_0x859492,null));};exports[_0x71b8('0x4f')]=function(_0x4be223,_0x13c06c){return db['OpenchannelQueue'][_0x71b8('0x4f')](_0x4be223[_0x71b8('0x50')],{})[_0x71b8('0x2b')](function(_0x591403){var _0x5c360a=_0x4be223[_0x71b8('0x51')][_0x71b8('0x52')]({'plain':!![]});if(!_0x5c360a)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x5c360a[_0x71b8('0x53')]===_0x71b8('0x51')){var _0x43cc70=_0x591403[_0x71b8('0x52')]({'plain':!![]});var _0x37331e=_0x71b8('0x2c');return db[_0x71b8('0x54')][_0x71b8('0x4e')]({'where':{'name':_0x37331e,'userProfileId':_0x5c360a[_0x71b8('0x55')]},'raw':!![]})['then'](function(_0x141d79){if(_0x141d79&&_0x141d79['autoAssociation']===0x0){return db[_0x71b8('0x56')][_0x71b8('0x4f')]({'name':_0x43cc70['name'],'resourceId':_0x43cc70['id'],'type':_0x141d79[_0x71b8('0x2e')],'sectionId':_0x141d79['id']},{})[_0x71b8('0x2b')](function(){return _0x591403;});}else{return _0x591403;}})[_0x71b8('0x4a')](function(_0x37fe95){logger[_0x71b8('0x2d')](_0x71b8('0x57'),_0x37fe95);throw _0x37fe95;});}return _0x591403;})[_0x71b8('0x2b')](respondWithResult(_0x13c06c,0xc9))[_0x71b8('0x4a')](handleError(_0x13c06c,null));};exports['update']=function(_0x4327bc,_0x1b72e5){if(_0x4327bc[_0x71b8('0x50')]['id']){delete _0x4327bc[_0x71b8('0x50')]['id'];}return db[_0x71b8('0x30')]['find']({'where':{'id':_0x4327bc[_0x71b8('0x4c')]['id']}})['then'](handleEntityNotFound(_0x1b72e5,null))['then'](saveUpdates(_0x4327bc['body'],null))[_0x71b8('0x2b')](respondWithResult(_0x1b72e5,null))[_0x71b8('0x4a')](handleError(_0x1b72e5,null));};exports[_0x71b8('0x58')]=function(_0x242852,_0xbcbdaf){return db[_0x71b8('0x30')][_0x71b8('0x4e')]({'where':{'id':_0x242852[_0x71b8('0x4c')]['id']}})[_0x71b8('0x2b')](handleEntityNotFound(_0xbcbdaf,null))[_0x71b8('0x2b')](removeEntity(_0xbcbdaf,null))[_0x71b8('0x4a')](handleError(_0xbcbdaf,null));};exports['describe']=function(_0x3034c,_0x211f1c){return db['OpenchannelQueue'][_0x71b8('0x59')]()['then'](respondWithResult(_0x211f1c,null))['catch'](handleError(_0x211f1c,null));};exports[_0x71b8('0x5a')]=function(_0x21ec23,_0x2f98bd,_0x5a12a0){var _0x2bb0d5={'raw':!![],'where':{}},_0x3cc923={},_0x5e8f1b;return db['OpenchannelQueue']['findOne']({'where':{'id':_0x21ec23[_0x71b8('0x4c')]['id']}})[_0x71b8('0x2b')](handleEntityNotFound(_0x2f98bd,null))[_0x71b8('0x2b')](function(_0x40da61){if(_0x40da61){_0x5e8f1b=_0x40da61['get']({'plain':!![]});_0x3cc923['model']=_[_0x71b8('0x36')](db['UserOpenchannelQueue'][_0x71b8('0x31')]);_0x3cc923[_0x71b8('0x37')]=_[_0x71b8('0x36')](_0x21ec23[_0x71b8('0x37')]);_0x3cc923['filters']=_['intersection'](_0x3cc923['model'],_0x3cc923['query']);_0x2bb0d5[_0x71b8('0x3b')]=_['intersection'](_0x3cc923[_0x71b8('0x35')],qs['fields'](_0x21ec23[_0x71b8('0x37')]['fields']));_0x2bb0d5['attributes']=_0x2bb0d5[_0x71b8('0x3b')][_0x71b8('0x4d')]?_0x2bb0d5[_0x71b8('0x3b')]:_0x3cc923[_0x71b8('0x35')];if(!_0x21ec23['query'][_0x71b8('0x3c')](_0x71b8('0x3d'))){_0x2bb0d5[_0x71b8('0x23')]=qs[_0x71b8('0x23')](_0x21ec23[_0x71b8('0x37')][_0x71b8('0x23')]);_0x2bb0d5['offset']=qs['offset'](_0x21ec23[_0x71b8('0x37')]['offset']);}_0x2bb0d5['order']=qs['sort'](_0x21ec23[_0x71b8('0x37')]['sort']);_0x2bb0d5[_0x71b8('0x40')]=qs[_0x71b8('0x38')](_[_0x71b8('0x41')](_0x21ec23[_0x71b8('0x37')],_0x3cc923[_0x71b8('0x38')]));_0x2bb0d5[_0x71b8('0x40')][_0x71b8('0x5b')]=_0x40da61['id'];if(_0x21ec23['query']['filter']){_0x2bb0d5['where']=_['merge'](_0x2bb0d5[_0x71b8('0x40')],{'$or':_['map'](_0x2bb0d5['attributes'],function(_0x15b374){var _0xd8cf1b={};_0xd8cf1b[_0x15b374]={'$like':'%'+_0x21ec23[_0x71b8('0x37')][_0x71b8('0x44')]+'%'};return _0xd8cf1b;})});}_0x2bb0d5=_[_0x71b8('0x42')]({},_0x2bb0d5,_0x21ec23[_0x71b8('0x45')]);return db[_0x71b8('0x5c')][_0x71b8('0x48')](_0x2bb0d5);}})[_0x71b8('0x2b')](function(_0x1b3167){if(_0x1b3167){return db['User']['findAndCountAll']({'where':{'id':_[_0x71b8('0x2f')](_0x1b3167,_0x71b8('0x5d')),'role':'agent'},'attributes':['id','name','openchannelPause',_0x71b8('0x5e'),_0x71b8('0x5f')]});}})[_0x71b8('0x2b')](function(_0x32f8fb){if(_0x32f8fb){return{'count':_0x32f8fb[_0x71b8('0x24')],'rows':_[_0x71b8('0x2f')](_0x32f8fb['rows'],function(_0x16f0af){return{'membername':_0x16f0af[_0x71b8('0x2e')],'UserId':_0x16f0af['id'],'queue_name':_0x5e8f1b['name'],'OpenchannelQueueId':_0x5e8f1b['id'],'interface':util[_0x71b8('0x60')](_0x71b8('0x61'),'SIP',_0x16f0af[_0x71b8('0x2e')]),'penalty':0x0,'paused':_0x16f0af[_0x71b8('0x62')],'createdAt':_0x16f0af[_0x71b8('0x5f')],'updatedAt':_0x16f0af[_0x71b8('0x5e')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x71b8('0x2b')](respondWithFilteredResult(_0x2f98bd,_0x2bb0d5))[_0x71b8('0x4a')](handleError(_0x2f98bd,null));};exports[_0x71b8('0x63')]=function(_0x559f1e,_0x442ab1,_0x8c9acd){var _0x4dccb2={};var _0x180820={};var _0x504570;var _0x3c1392;return db[_0x71b8('0x30')]['findOne']({'where':{'id':_0x559f1e['params']['id']}})[_0x71b8('0x2b')](handleEntityNotFound(_0x442ab1,null))[_0x71b8('0x2b')](function(_0x56027a){if(_0x56027a){_0x504570=_0x56027a;_0x180820[_0x71b8('0x35')]=_[_0x71b8('0x36')](db[_0x71b8('0x64')][_0x71b8('0x31')]);_0x180820[_0x71b8('0x37')]=_[_0x71b8('0x36')](_0x559f1e['query']);_0x180820[_0x71b8('0x38')]=_[_0x71b8('0x39')](_0x180820[_0x71b8('0x35')],_0x180820[_0x71b8('0x37')]);_0x4dccb2['attributes']=_[_0x71b8('0x39')](_0x180820[_0x71b8('0x35')],qs[_0x71b8('0x3a')](_0x559f1e['query'][_0x71b8('0x3a')]));_0x4dccb2[_0x71b8('0x3b')]=_0x4dccb2['attributes'][_0x71b8('0x4d')]?_0x4dccb2[_0x71b8('0x3b')]:_0x180820[_0x71b8('0x35')];_0x4dccb2[_0x71b8('0x3e')]=qs[_0x71b8('0x3f')](_0x559f1e[_0x71b8('0x37')][_0x71b8('0x3f')]);_0x4dccb2[_0x71b8('0x40')]=qs['filters'](_[_0x71b8('0x41')](_0x559f1e[_0x71b8('0x37')],_0x180820[_0x71b8('0x38')]));if(_0x559f1e['query'][_0x71b8('0x44')]){_0x4dccb2[_0x71b8('0x40')]=_[_0x71b8('0x42')](_0x4dccb2[_0x71b8('0x40')],{'$or':_[_0x71b8('0x2f')](_0x4dccb2[_0x71b8('0x3b')],function(_0x309748){var _0x1af874={};_0x1af874[_0x309748]={'$like':'%'+_0x559f1e[_0x71b8('0x37')][_0x71b8('0x44')]+'%'};return _0x1af874;})});}_0x4dccb2=_[_0x71b8('0x42')]({},_0x4dccb2,_0x559f1e[_0x71b8('0x45')]);return _0x504570[_0x71b8('0x63')](_0x4dccb2);}})['then'](function(_0x1515f3){if(_0x1515f3){_0x3c1392=_0x1515f3[_0x71b8('0x4d')];if(!_0x559f1e[_0x71b8('0x37')][_0x71b8('0x3c')]('nolimit')){_0x4dccb2[_0x71b8('0x23')]=qs[_0x71b8('0x23')](_0x559f1e['query']['limit']);_0x4dccb2['offset']=qs['offset'](_0x559f1e[_0x71b8('0x37')][_0x71b8('0x21')]);}return _0x504570['getTeams'](_0x4dccb2);}})[_0x71b8('0x2b')](function(_0x4b23b0){if(_0x4b23b0){return _0x4b23b0?{'count':_0x3c1392,'rows':_0x4b23b0}:null;}})['then'](respondWithResult(_0x442ab1,null))['catch'](handleError(_0x442ab1,null));};exports[_0x71b8('0x65')]=function(_0x26ba47,_0x553218,_0x106893){var _0x16f1a2=_0x26ba47['body'][_0x71b8('0x66')];return db[_0x71b8('0x64')][_0x71b8('0x48')]({'where':{'id':_0x16f1a2},'attributes':['id'],'include':[{'model':db[_0x71b8('0x67')],'as':_0x71b8('0x68'),'attributes':['id',_0x71b8('0x2e'),'online','voicePause',_0x71b8('0x69')],'raw':!![]}]})[_0x71b8('0x2b')](function(_0x4250b0){if(_0x4250b0){var _0x5689b5=_['flatMap'](_0x4250b0,function(_0x36924e){var _0xfbd8fa=_0x36924e[_0x71b8('0x52')]({'plain':!![]});return _0xfbd8fa['Agents'];});return db['OpenchannelQueue'][_0x71b8('0x4e')]({'where':{'id':_0x26ba47[_0x71b8('0x4c')]['id']}})['then'](function(_0x7359d4){return db[_0x71b8('0x6a')][_0x71b8('0x6b')](function(_0x1b3e45){return _0x7359d4['addTeams'](_0x16f1a2,{'transaction':_0x1b3e45})[_0x71b8('0x2b')](function(){return BPromise[_0x71b8('0x6c')](_0x5689b5,function(_0x584560){return db[_0x71b8('0x5c')][_0x71b8('0x6d')]({'where':{'UserId':_0x584560['id'],'OpenchannelQueueId':_0x26ba47[_0x71b8('0x4c')]['id']},'transaction':_0x1b3e45});});})[_0x71b8('0x2b')](function(){_0x5689b5[_0x71b8('0x6e')](function(_0x3166bf){socket[_0x71b8('0x6f')]('userOpenchannelQueue:save',{'UserId':_0x3166bf['id'],'OpenchannelQueueId':_0x7359d4['id']});});});});});}})[_0x71b8('0x2b')](respondWithStatusCode(_0x553218,null))['catch'](handleError(_0x553218,null));};exports[_0x71b8('0x70')]=function(_0x401e72,_0x95ce55,_0x175dfe){return db[_0x71b8('0x64')]['findAll']({'where':{'id':_0x401e72[_0x71b8('0x37')]['ids']},'attributes':['id'],'include':[{'model':db[_0x71b8('0x67')],'as':_0x71b8('0x68'),'attributes':['id'],'raw':!![]}]})[_0x71b8('0x2b')](handleEntityNotFound(_0x95ce55,null))[_0x71b8('0x2b')](function(_0x273032){var _0x3f3663=_[_0x71b8('0x2f')](_0x273032,'id');var _0x12a8a4=[];var _0x3ad474=[];var _0x2556e1=squel[_0x71b8('0x71')]();_0x2556e1[_0x71b8('0x72')](_0x71b8('0x73'))[_0x71b8('0x74')](_0x71b8('0x75'),'tq')['join'](_0x71b8('0x76'),'ut',_0x71b8('0x77'))[_0x71b8('0x40')](_0x71b8('0x78'),_0x401e72[_0x71b8('0x4c')]['id']);for(var _0x3f3bcf=0x0;_0x3f3bcf<_0x273032[_0x71b8('0x4d')];_0x3f3bcf+=0x1){let _0x57935c=_0x273032[_0x3f3bcf];for(var _0x2d8d18=0x0;_0x2d8d18<_0x57935c[_0x71b8('0x68')][_0x71b8('0x4d')];_0x2d8d18+=0x1){let _0x3b5f8c=_0x57935c[_0x71b8('0x68')][_0x2d8d18];var _0x1e93b9=_0x2556e1['clone']();_0x1e93b9[_0x71b8('0x40')](_0x71b8('0x79'),_0x3b5f8c['id']);_0x3ad474[_0x71b8('0x7a')](db['sequelize'][_0x71b8('0x37')](_0x1e93b9[_0x71b8('0x7b')](),{'type':db[_0x71b8('0x6a')][_0x71b8('0x7c')][_0x71b8('0x7d')]})[_0x71b8('0x2b')](function(_0x5727a9){if(_0x5727a9['length']===0x1){return _0x3b5f8c['id'];}else{var _0x3dac2c=_[_0x71b8('0x7e')](_[_0x71b8('0x2f')](_0x5727a9,'TeamId'),function(_0x53a49b){return _['includes'](_0x3f3663,_0x53a49b);});if(_0x3dac2c){return _0x3b5f8c['id'];}}}));}}return BPromise[_0x71b8('0x7f')](_0x3ad474)[_0x71b8('0x2b')](function(_0x4c7a85){_0x12a8a4=_(_0x12a8a4)['union'](_0x4c7a85)[_0x71b8('0x80')]()[_0x71b8('0x81')]();return db[_0x71b8('0x30')]['find']({'where':{'id':_0x401e72[_0x71b8('0x4c')]['id']}})[_0x71b8('0x2b')](function(_0x1f3575){return db[_0x71b8('0x6a')][_0x71b8('0x6b')](function(_0x5d24c5){return _0x1f3575[_0x71b8('0x70')](_0x401e72[_0x71b8('0x37')][_0x71b8('0x66')],{'transaction':_0x5d24c5})[_0x71b8('0x2b')](function(){if(!_[_0x71b8('0x82')](_0x12a8a4)){return _0x1f3575['removeAgents'](_0x12a8a4,{'transaction':_0x5d24c5});}})['then'](function(){_0x12a8a4[_0x71b8('0x6e')](function(_0x47beb4){socket[_0x71b8('0x6f')](_0x71b8('0x83'),{'UserId':_0x47beb4,'OpenchannelQueueId':_0x1f3575['id']});});});});});});})[_0x71b8('0x2b')](respondWithStatusCode(_0x95ce55,null))[_0x71b8('0x4a')](handleError(_0x95ce55,null));};exports[_0x71b8('0x84')]=function(_0x2199a7,_0x4f5457,_0x1049b9){return db[_0x71b8('0x30')][_0x71b8('0x4e')]({'where':{'id':_0x2199a7[_0x71b8('0x4c')]['id']}})[_0x71b8('0x2b')](handleEntityNotFound(_0x4f5457,null))[_0x71b8('0x2b')](function(_0x47a457){if(_0x47a457){return _0x47a457[_0x71b8('0x84')](_0x2199a7[_0x71b8('0x50')]['ids'],_['omit'](_0x2199a7[_0x71b8('0x50')],['ids','id'])||{})[_0x71b8('0x85')](function(_0xeeff01){for(var _0x1a7bfd=0x0;_0x1a7bfd<_0x2199a7[_0x71b8('0x50')]['ids'][_0x71b8('0x4d')];_0x1a7bfd+=0x1){socket[_0x71b8('0x6f')](_0x71b8('0x86'),{'UserId':Number(_0x2199a7[_0x71b8('0x50')]['ids'][_0x1a7bfd]),'OpenchannelQueueId':Number(_0x2199a7[_0x71b8('0x4c')]['id'])});}return _0xeeff01;});}})['then'](respondWithResult(_0x4f5457,null))[_0x71b8('0x4a')](handleError(_0x4f5457,null));};exports[_0x71b8('0x87')]=function(_0x2940f9,_0x484cfe,_0x1a1e0e){return db[_0x71b8('0x30')][_0x71b8('0x4e')]({'where':{'id':_0x2940f9[_0x71b8('0x4c')]['id']}})['then'](handleEntityNotFound(_0x484cfe,null))['then'](function(_0x2a295a){if(_0x2a295a){return _0x2a295a['removeAgents'](_0x2940f9[_0x71b8('0x37')][_0x71b8('0x66')])['then'](function(){if(_[_0x71b8('0x88')](_0x2940f9[_0x71b8('0x37')]['ids'])){for(var _0x4cbc07=0x0;_0x4cbc07<_0x2940f9[_0x71b8('0x37')][_0x71b8('0x66')][_0x71b8('0x4d')];_0x4cbc07+=0x1){socket[_0x71b8('0x6f')](_0x71b8('0x83'),{'UserId':Number(_0x2940f9[_0x71b8('0x37')]['ids'][_0x4cbc07]),'OpenchannelQueueId':Number(_0x2940f9['params']['id'])});}}else{socket['emit']('userOpenchannelQueue:remove',{'UserId':Number(_0x2940f9[_0x71b8('0x37')]['ids']),'OpenchannelQueueId':Number(_0x2940f9[_0x71b8('0x4c')]['id'])});}});}})[_0x71b8('0x2b')](respondWithStatusCode(_0x484cfe,null))[_0x71b8('0x4a')](handleError(_0x484cfe,null));};exports['getAgents']=function(_0xe5538a,_0x115a04,_0x24c532){var _0x8930e={};var _0x5bb521={};var _0x54bb93;var _0x201391;return db['OpenchannelQueue']['findOne']({'where':{'id':_0xe5538a[_0x71b8('0x4c')]['id']}})[_0x71b8('0x2b')](handleEntityNotFound(_0x115a04,null))[_0x71b8('0x2b')](function(_0x4d50b3){if(_0x4d50b3){_0x54bb93=_0x4d50b3;_0x5bb521[_0x71b8('0x35')]=_['keys'](db[_0x71b8('0x67')][_0x71b8('0x31')]);_0x5bb521[_0x71b8('0x37')]=_['keys'](_0xe5538a[_0x71b8('0x37')]);_0x5bb521[_0x71b8('0x38')]=_[_0x71b8('0x39')](_0x5bb521[_0x71b8('0x35')],_0x5bb521[_0x71b8('0x37')]);_0x8930e['attributes']=_[_0x71b8('0x39')](_0x5bb521[_0x71b8('0x35')],qs[_0x71b8('0x3a')](_0xe5538a[_0x71b8('0x37')]['fields']));_0x8930e['attributes']=_0x8930e[_0x71b8('0x3b')][_0x71b8('0x4d')]?_0x8930e[_0x71b8('0x3b')]:_0x5bb521['model'];_0x8930e[_0x71b8('0x3e')]=qs['sort'](_0xe5538a['query'][_0x71b8('0x3f')]);_0x8930e[_0x71b8('0x40')]=qs[_0x71b8('0x38')](_[_0x71b8('0x41')](_0xe5538a[_0x71b8('0x37')],_0x5bb521[_0x71b8('0x38')]));if(_0xe5538a[_0x71b8('0x37')][_0x71b8('0x44')]){_0x8930e['where']=_[_0x71b8('0x42')](_0x8930e[_0x71b8('0x40')],{'$or':_[_0x71b8('0x2f')](_0x8930e[_0x71b8('0x3b')],function(_0x20c535){var _0x3be486={};_0x3be486[_0x20c535]={'$like':'%'+_0xe5538a[_0x71b8('0x37')][_0x71b8('0x44')]+'%'};return _0x3be486;})});}_0x8930e=_[_0x71b8('0x42')]({},_0x8930e,_0xe5538a['options']);return _0x54bb93['getAgents'](_0x8930e);}})['then'](function(_0x2a453f){if(_0x2a453f){_0x201391=_0x2a453f['length'];if(!_0xe5538a[_0x71b8('0x37')][_0x71b8('0x3c')]('nolimit')){_0x8930e[_0x71b8('0x23')]=qs[_0x71b8('0x23')](_0xe5538a[_0x71b8('0x37')][_0x71b8('0x23')]);_0x8930e['offset']=qs['offset'](_0xe5538a[_0x71b8('0x37')]['offset']);}return _0x54bb93[_0x71b8('0x89')](_0x8930e);}})[_0x71b8('0x2b')](function(_0x50fb2a){if(_0x50fb2a){return _0x50fb2a?{'count':_0x201391,'rows':_0x50fb2a}:null;}})[_0x71b8('0x2b')](respondWithResult(_0x115a04,null))['catch'](handleError(_0x115a04,null));};
\ No newline at end of file
index 0a1cb60..ec7e5b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4075=['setMaxListeners','update','emit','hasOwnProperty','hook','exports','events'];(function(_0x618414,_0x1a7a60){var _0x21c19a=function(_0x507b17){while(--_0x507b17){_0x618414['push'](_0x618414['shift']());}};_0x21c19a(++_0x1a7a60);}(_0x4075,0x12c));var _0x5407=function(_0x48999d,_0x1e02cb){_0x48999d=_0x48999d-0x0;var _0x1ad0d1=_0x4075[_0x48999d];return _0x1ad0d1;};'use strict';var EventEmitter=require(_0x5407('0x0'));var OpenchannelQueue=require('../../mysqldb')['db']['OpenchannelQueue'];var OpenchannelQueueEvents=new EventEmitter();OpenchannelQueueEvents[_0x5407('0x1')](0x0);var events={'afterCreate':'save','afterUpdate':_0x5407('0x2'),'afterDestroy':'remove'};function emitEvent(_0x10ec12){return function(_0x90ac2e,_0x480ee3,_0x4be0eb){OpenchannelQueueEvents['emit'](_0x10ec12+':'+_0x90ac2e['id'],_0x90ac2e);OpenchannelQueueEvents[_0x5407('0x3')](_0x10ec12,_0x90ac2e);_0x4be0eb(null);};}for(var e in events){if(events[_0x5407('0x4')](e)){var event=events[e];OpenchannelQueue[_0x5407('0x5')](e,emitEvent(event));}}module[_0x5407('0x6')]=OpenchannelQueueEvents;
\ No newline at end of file
+var _0x244e=['OpenchannelQueue','setMaxListeners','update','remove','emit','exports','events','../../mysqldb'];(function(_0x1a1f4b,_0x46c5ef){var _0x351e85=function(_0x372e09){while(--_0x372e09){_0x1a1f4b['push'](_0x1a1f4b['shift']());}};_0x351e85(++_0x46c5ef);}(_0x244e,0x1e6));var _0xe244=function(_0x7f537c,_0x20bf3f){_0x7f537c=_0x7f537c-0x0;var _0x268f99=_0x244e[_0x7f537c];return _0x268f99;};'use strict';var EventEmitter=require(_0xe244('0x0'));var OpenchannelQueue=require(_0xe244('0x1'))['db'][_0xe244('0x2')];var OpenchannelQueueEvents=new EventEmitter();OpenchannelQueueEvents[_0xe244('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0xe244('0x4'),'afterDestroy':_0xe244('0x5')};function emitEvent(_0x35d71f){return function(_0x57e16e,_0x3139a0,_0x5ea11e){OpenchannelQueueEvents[_0xe244('0x6')](_0x35d71f+':'+_0x57e16e['id'],_0x57e16e);OpenchannelQueueEvents['emit'](_0x35d71f,_0x57e16e);_0x5ea11e(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];OpenchannelQueue['hook'](e,emitEvent(event));}}module[_0xe244('0x7')]=OpenchannelQueueEvents;
\ No newline at end of file
index 0673445..25b8496 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbe5a=['util','moment','bluebird','request-promise','rimraf','./openchannelQueue.attributes','define','OpenchannelQueue','openchannel_queues','lodash'];(function(_0x266618,_0x18f637){var _0x54dbf5=function(_0x1f7985){while(--_0x1f7985){_0x266618['push'](_0x266618['shift']());}};_0x54dbf5(++_0x18f637);}(_0xbe5a,0x1f3));var _0xabe5=function(_0x5f1391,_0x19c132){_0x5f1391=_0x5f1391-0x0;var _0x50ebe3=_0xbe5a[_0x5f1391];return _0x50ebe3;};'use strict';var _=require(_0xabe5('0x0'));var util=require(_0xabe5('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xabe5('0x2'));var BPromise=require(_0xabe5('0x3'));var rp=require(_0xabe5('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xabe5('0x5'));var config=require('../../config/environment');var attributes=require(_0xabe5('0x6'));module['exports']=function(_0x1a626c,_0x4f3e25){return _0x1a626c[_0xabe5('0x7')](_0xabe5('0x8'),attributes,{'tableName':_0xabe5('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd3dd=['util','../../config/logger','moment','bluebird','request-promise','../../config/environment','./openchannelQueue.attributes','define','OpenchannelQueue','openchannel_queues','lodash'];(function(_0x199572,_0x33e667){var _0x13cfa3=function(_0x53c075){while(--_0x53c075){_0x199572['push'](_0x199572['shift']());}};_0x13cfa3(++_0x33e667);}(_0xd3dd,0x128));var _0xdd3d=function(_0x3f464b,_0x2bec43){_0x3f464b=_0x3f464b-0x0;var _0x40dea2=_0xd3dd[_0x3f464b];return _0x40dea2;};'use strict';var _=require(_0xdd3d('0x0'));var util=require(_0xdd3d('0x1'));var logger=require(_0xdd3d('0x2'))('api');var moment=require(_0xdd3d('0x3'));var BPromise=require(_0xdd3d('0x4'));var rp=require(_0xdd3d('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xdd3d('0x6'));var attributes=require(_0xdd3d('0x7'));module['exports']=function(_0x4070ba,_0x219684){return _0x4070ba[_0xdd3d('0x8')](_0xdd3d('0x9'),attributes,{'tableName':_0xdd3d('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ceb1030..2b931e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa5b0=['defaults','redis','localhost','socket.io-emitter','register','request','then','info','request\x20sent','OpenchannelQueue,\x20%s,\x20%s,\x20%s','error','code','message','OpenchannelQueue,\x20%s,\x20%s','result','GetOpenchannelQueue','OpenchannelQueue','findAll','options','raw','where','attributes','limit','include','map','model','debug','stringify','catch','ShowOpenchannelQueue','lodash','util','moment','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http'];(function(_0x117f18,_0x43cb2b){var _0x2d04e6=function(_0x15f1f7){while(--_0x15f1f7){_0x117f18['push'](_0x117f18['shift']());}};_0x2d04e6(++_0x43cb2b);}(_0xa5b0,0x12f));var _0x0a5b=function(_0x319cb9,_0x4b8d35){_0x319cb9=_0x319cb9-0x0;var _0x1735fc=_0xa5b0[_0x319cb9];return _0x1735fc;};'use strict';var _=require(_0x0a5b('0x0'));var util=require(_0x0a5b('0x1'));var moment=require(_0x0a5b('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x0a5b('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x0a5b('0x4'))(_0x0a5b('0x5'));var config=require(_0x0a5b('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x0a5b('0x7')][_0x0a5b('0x8')]({'port':0x232a});config['redis']=_[_0x0a5b('0x9')](config[_0x0a5b('0xa')],{'host':_0x0a5b('0xb'),'port':0x18eb});var socket=require(_0x0a5b('0xc'))(new Redis(config['redis']));require('./openchannelQueue.socket')[_0x0a5b('0xd')](socket);function respondWithRpcPromise(_0xe01200,_0x5121c4,_0x299031){return new BPromise(function(_0x1dd931,_0x17e3d9){return client[_0x0a5b('0xe')](_0xe01200,_0x299031)[_0x0a5b('0xf')](function(_0x21ef72){logger[_0x0a5b('0x10')]('OpenchannelQueue,\x20%s,\x20%s',_0x5121c4,_0x0a5b('0x11'));logger['debug'](_0x0a5b('0x12'),_0x5121c4,_0x0a5b('0x11'),JSON['stringify'](_0x21ef72));if(_0x21ef72[_0x0a5b('0x13')]){if(_0x21ef72[_0x0a5b('0x13')][_0x0a5b('0x14')]===0x1f4){logger[_0x0a5b('0x13')]('OpenchannelQueue,\x20%s,\x20%s',_0x5121c4,_0x21ef72[_0x0a5b('0x13')]['message']);return _0x17e3d9(_0x21ef72[_0x0a5b('0x13')][_0x0a5b('0x15')]);}logger[_0x0a5b('0x13')](_0x0a5b('0x16'),_0x5121c4,_0x21ef72[_0x0a5b('0x13')][_0x0a5b('0x15')]);return _0x1dd931(_0x21ef72['error'][_0x0a5b('0x15')]);}else{logger[_0x0a5b('0x10')](_0x0a5b('0x16'),_0x5121c4,_0x0a5b('0x11'));_0x1dd931(_0x21ef72[_0x0a5b('0x17')][_0x0a5b('0x15')]);}})['catch'](function(_0x34aeff){logger['error'](_0x0a5b('0x16'),_0x5121c4,_0x34aeff);_0x17e3d9(_0x34aeff);});});}exports[_0x0a5b('0x18')]=function(_0x3061a8){var _0x248f30=this;return new Promise(function(_0x4306a5,_0x55e8fd){return db[_0x0a5b('0x19')][_0x0a5b('0x1a')]({'raw':_0x3061a8[_0x0a5b('0x1b')]?_0x3061a8['options'][_0x0a5b('0x1c')]===undefined?!![]:![]:!![],'where':_0x3061a8[_0x0a5b('0x1b')]?_0x3061a8['options'][_0x0a5b('0x1d')]||null:null,'attributes':_0x3061a8['options']?_0x3061a8['options'][_0x0a5b('0x1e')]||null:null,'limit':_0x3061a8['options']?_0x3061a8[_0x0a5b('0x1b')][_0x0a5b('0x1f')]||null:null,'include':_0x3061a8[_0x0a5b('0x1b')]?_0x3061a8[_0x0a5b('0x1b')][_0x0a5b('0x20')]?_[_0x0a5b('0x21')](_0x3061a8[_0x0a5b('0x1b')][_0x0a5b('0x20')],function(_0x155a35){return{'model':db[_0x155a35['model']],'as':_0x155a35['as'],'attributes':_0x155a35['attributes'],'include':_0x155a35[_0x0a5b('0x20')]?_[_0x0a5b('0x21')](_0x155a35[_0x0a5b('0x20')],function(_0x229370){return{'model':db[_0x229370[_0x0a5b('0x22')]],'as':_0x229370['as'],'attributes':_0x229370['attributes'],'include':_0x229370[_0x0a5b('0x20')]?_[_0x0a5b('0x21')](_0x229370[_0x0a5b('0x20')],function(_0x3f8ba4){return{'model':db[_0x3f8ba4[_0x0a5b('0x22')]],'as':_0x3f8ba4['as'],'attributes':_0x3f8ba4['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x4a07a9){logger[_0x0a5b('0x10')](_0x0a5b('0x18'),_0x3061a8);logger[_0x0a5b('0x23')](_0x0a5b('0x18'),_0x3061a8,JSON[_0x0a5b('0x24')](_0x4a07a9));_0x4306a5(_0x4a07a9);})[_0x0a5b('0x25')](function(_0x4fe9e1){logger[_0x0a5b('0x13')](_0x0a5b('0x18'),_0x4fe9e1[_0x0a5b('0x15')],_0x3061a8);_0x55e8fd(_0x248f30[_0x0a5b('0x13')](0x1f4,_0x4fe9e1[_0x0a5b('0x15')]));});});};exports[_0x0a5b('0x26')]=function(_0x1b55dc){var _0x466aaa=this;return new Promise(function(_0x283d4b,_0x13e9d1){return db[_0x0a5b('0x19')]['find']({'raw':_0x1b55dc[_0x0a5b('0x1b')]?_0x1b55dc['options']['raw']===undefined?!![]:![]:!![],'where':_0x1b55dc[_0x0a5b('0x1b')]?_0x1b55dc['options'][_0x0a5b('0x1d')]||null:null,'attributes':_0x1b55dc[_0x0a5b('0x1b')]?_0x1b55dc[_0x0a5b('0x1b')][_0x0a5b('0x1e')]||null:null,'include':_0x1b55dc[_0x0a5b('0x1b')]?_0x1b55dc[_0x0a5b('0x1b')][_0x0a5b('0x20')]?_[_0x0a5b('0x21')](_0x1b55dc['options'][_0x0a5b('0x20')],function(_0x50112e){return{'model':db[_0x50112e[_0x0a5b('0x22')]],'as':_0x50112e['as'],'attributes':_0x50112e['attributes'],'include':_0x50112e[_0x0a5b('0x20')]?_['map'](_0x50112e[_0x0a5b('0x20')],function(_0x2c4318){return{'model':db[_0x2c4318[_0x0a5b('0x22')]],'as':_0x2c4318['as'],'attributes':_0x2c4318[_0x0a5b('0x1e')],'include':_0x2c4318[_0x0a5b('0x20')]?_[_0x0a5b('0x21')](_0x2c4318[_0x0a5b('0x20')],function(_0x1ff817){return{'model':db[_0x1ff817['model']],'as':_0x1ff817['as'],'attributes':_0x1ff817[_0x0a5b('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x0a5b('0xf')](function(_0xb30cf5){logger['info']('ShowOpenchannelQueue',_0x1b55dc);logger['debug'](_0x0a5b('0x26'),_0x1b55dc,JSON['stringify'](_0xb30cf5));_0x283d4b(_0xb30cf5);})[_0x0a5b('0x25')](function(_0x560521){logger[_0x0a5b('0x13')](_0x0a5b('0x26'),_0x560521['message'],_0x1b55dc);_0x13e9d1(_0x466aaa[_0x0a5b('0x13')](0x1f4,_0x560521[_0x0a5b('0x15')]));});});};
\ No newline at end of file
+var _0x2724=['../../config/environment','redis','defaults','localhost','socket.io-emitter','./openchannelQueue.socket','request','then','request\x20sent','debug','error','code','OpenchannelQueue,\x20%s,\x20%s','message','info','result','catch','GetOpenchannelQueue','findAll','options','raw','where','attributes','limit','include','model','map','stringify','OpenchannelQueue','find','ShowOpenchannelQueue','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x55bf29,_0x42915f){var _0x3bcec5=function(_0x469cf8){while(--_0x469cf8){_0x55bf29['push'](_0x55bf29['shift']());}};_0x3bcec5(++_0x42915f);}(_0x2724,0xd8));var _0x4272=function(_0x40b3dc,_0x1d7b63){_0x40b3dc=_0x40b3dc-0x0;var _0x458bea=_0x2724[_0x40b3dc];return _0x458bea;};'use strict';var _=require('lodash');var util=require(_0x4272('0x0'));var moment=require(_0x4272('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x4272('0x2'));var db=require(_0x4272('0x3'))['db'];var utils=require(_0x4272('0x4'));var logger=require(_0x4272('0x5'))('rpc');var config=require(_0x4272('0x6'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});config[_0x4272('0x7')]=_[_0x4272('0x8')](config[_0x4272('0x7')],{'host':_0x4272('0x9'),'port':0x18eb});var socket=require(_0x4272('0xa'))(new Redis(config[_0x4272('0x7')]));require(_0x4272('0xb'))['register'](socket);function respondWithRpcPromise(_0x3daef1,_0x4f187a,_0x8a74c3){return new BPromise(function(_0x1b1551,_0xca2400){return client[_0x4272('0xc')](_0x3daef1,_0x8a74c3)[_0x4272('0xd')](function(_0x5c733b){logger['info']('OpenchannelQueue,\x20%s,\x20%s',_0x4f187a,_0x4272('0xe'));logger[_0x4272('0xf')]('OpenchannelQueue,\x20%s,\x20%s,\x20%s',_0x4f187a,_0x4272('0xe'),JSON['stringify'](_0x5c733b));if(_0x5c733b[_0x4272('0x10')]){if(_0x5c733b[_0x4272('0x10')][_0x4272('0x11')]===0x1f4){logger[_0x4272('0x10')](_0x4272('0x12'),_0x4f187a,_0x5c733b['error']['message']);return _0xca2400(_0x5c733b[_0x4272('0x10')][_0x4272('0x13')]);}logger[_0x4272('0x10')](_0x4272('0x12'),_0x4f187a,_0x5c733b[_0x4272('0x10')][_0x4272('0x13')]);return _0x1b1551(_0x5c733b[_0x4272('0x10')][_0x4272('0x13')]);}else{logger[_0x4272('0x14')]('OpenchannelQueue,\x20%s,\x20%s',_0x4f187a,'request\x20sent');_0x1b1551(_0x5c733b[_0x4272('0x15')][_0x4272('0x13')]);}})[_0x4272('0x16')](function(_0x420c53){logger[_0x4272('0x10')](_0x4272('0x12'),_0x4f187a,_0x420c53);_0xca2400(_0x420c53);});});}exports[_0x4272('0x17')]=function(_0x197ad8){var _0x11abb5=this;return new Promise(function(_0x20299c,_0x1cfca0){return db['OpenchannelQueue'][_0x4272('0x18')]({'raw':_0x197ad8['options']?_0x197ad8[_0x4272('0x19')][_0x4272('0x1a')]===undefined?!![]:![]:!![],'where':_0x197ad8['options']?_0x197ad8[_0x4272('0x19')][_0x4272('0x1b')]||null:null,'attributes':_0x197ad8['options']?_0x197ad8['options'][_0x4272('0x1c')]||null:null,'limit':_0x197ad8[_0x4272('0x19')]?_0x197ad8[_0x4272('0x19')][_0x4272('0x1d')]||null:null,'include':_0x197ad8[_0x4272('0x19')]?_0x197ad8[_0x4272('0x19')][_0x4272('0x1e')]?_['map'](_0x197ad8[_0x4272('0x19')]['include'],function(_0x328e77){return{'model':db[_0x328e77[_0x4272('0x1f')]],'as':_0x328e77['as'],'attributes':_0x328e77['attributes'],'include':_0x328e77['include']?_[_0x4272('0x20')](_0x328e77['include'],function(_0x81eb4b){return{'model':db[_0x81eb4b[_0x4272('0x1f')]],'as':_0x81eb4b['as'],'attributes':_0x81eb4b[_0x4272('0x1c')],'include':_0x81eb4b[_0x4272('0x1e')]?_[_0x4272('0x20')](_0x81eb4b[_0x4272('0x1e')],function(_0x4dad1f){return{'model':db[_0x4dad1f['model']],'as':_0x4dad1f['as'],'attributes':_0x4dad1f['attributes']};}):[]};}):[]};}):[]:[]})[_0x4272('0xd')](function(_0xa547c8){logger[_0x4272('0x14')](_0x4272('0x17'),_0x197ad8);logger['debug'](_0x4272('0x17'),_0x197ad8,JSON[_0x4272('0x21')](_0xa547c8));_0x20299c(_0xa547c8);})[_0x4272('0x16')](function(_0x2f44fe){logger['error'](_0x4272('0x17'),_0x2f44fe[_0x4272('0x13')],_0x197ad8);_0x1cfca0(_0x11abb5['error'](0x1f4,_0x2f44fe[_0x4272('0x13')]));});});};exports['ShowOpenchannelQueue']=function(_0x1cdc48){var _0x27e91c=this;return new Promise(function(_0x417356,_0x45ceed){return db[_0x4272('0x22')][_0x4272('0x23')]({'raw':_0x1cdc48[_0x4272('0x19')]?_0x1cdc48[_0x4272('0x19')][_0x4272('0x1a')]===undefined?!![]:![]:!![],'where':_0x1cdc48[_0x4272('0x19')]?_0x1cdc48[_0x4272('0x19')]['where']||null:null,'attributes':_0x1cdc48['options']?_0x1cdc48[_0x4272('0x19')][_0x4272('0x1c')]||null:null,'include':_0x1cdc48[_0x4272('0x19')]?_0x1cdc48[_0x4272('0x19')]['include']?_[_0x4272('0x20')](_0x1cdc48[_0x4272('0x19')]['include'],function(_0x2a8ac1){return{'model':db[_0x2a8ac1[_0x4272('0x1f')]],'as':_0x2a8ac1['as'],'attributes':_0x2a8ac1[_0x4272('0x1c')],'include':_0x2a8ac1[_0x4272('0x1e')]?_['map'](_0x2a8ac1[_0x4272('0x1e')],function(_0xf8663a){return{'model':db[_0xf8663a[_0x4272('0x1f')]],'as':_0xf8663a['as'],'attributes':_0xf8663a[_0x4272('0x1c')],'include':_0xf8663a[_0x4272('0x1e')]?_['map'](_0xf8663a[_0x4272('0x1e')],function(_0x8cd990){return{'model':db[_0x8cd990[_0x4272('0x1f')]],'as':_0x8cd990['as'],'attributes':_0x8cd990['attributes']};}):[]};}):[]};}):[]:[]})[_0x4272('0xd')](function(_0x34be5d){logger[_0x4272('0x14')](_0x4272('0x24'),_0x1cdc48);logger['debug'](_0x4272('0x24'),_0x1cdc48,JSON[_0x4272('0x21')](_0x34be5d));_0x417356(_0x34be5d);})[_0x4272('0x16')](function(_0x345a20){logger[_0x4272('0x10')](_0x4272('0x24'),_0x345a20[_0x4272('0x13')],_0x1cdc48);_0x45ceed(_0x27e91c[_0x4272('0x10')](0x1f4,_0x345a20['message']));});});};
\ No newline at end of file
index 1d5b414..a581a09 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8955=['register','length','openchannelQueue:','./openchannelQueue.events','save','remove','update','emit'];(function(_0x126558,_0x143c9a){var _0x1f6d14=function(_0x2b0eea){while(--_0x2b0eea){_0x126558['push'](_0x126558['shift']());}};_0x1f6d14(++_0x143c9a);}(_0x8955,0xc3));var _0x5895=function(_0x3edf94,_0x332240){_0x3edf94=_0x3edf94-0x0;var _0x5326a7=_0x8955[_0x3edf94];return _0x5326a7;};'use strict';var OpenchannelQueueEvents=require(_0x5895('0x0'));var events=[_0x5895('0x1'),_0x5895('0x2'),_0x5895('0x3')];function createListener(_0x4c7b80,_0x59356b){return function(_0x143a44){_0x59356b[_0x5895('0x4')](_0x4c7b80,_0x143a44);};}function removeListener(_0x1b1c87,_0x38a0b9){return function(){OpenchannelQueueEvents['removeListener'](_0x1b1c87,_0x38a0b9);};}exports[_0x5895('0x5')]=function(_0x1e8174){for(var _0x2b014b=0x0,_0x48fbd9=events[_0x5895('0x6')];_0x2b014b<_0x48fbd9;_0x2b014b++){var _0x498503=events[_0x2b014b];var _0xe7b191=createListener(_0x5895('0x7')+_0x498503,_0x1e8174);OpenchannelQueueEvents['on'](_0x498503,_0xe7b191);}};
\ No newline at end of file
+var _0xba13=['save','remove','update','emit','removeListener','register','length','./openchannelQueue.events'];(function(_0x51ec70,_0x4a5c56){var _0x536a7e=function(_0xfe5bda){while(--_0xfe5bda){_0x51ec70['push'](_0x51ec70['shift']());}};_0x536a7e(++_0x4a5c56);}(_0xba13,0x87));var _0x3ba1=function(_0x53ccf2,_0x13cb67){_0x53ccf2=_0x53ccf2-0x0;var _0x5a2964=_0xba13[_0x53ccf2];return _0x5a2964;};'use strict';var OpenchannelQueueEvents=require(_0x3ba1('0x0'));var events=[_0x3ba1('0x1'),_0x3ba1('0x2'),_0x3ba1('0x3')];function createListener(_0x335784,_0x33da53){return function(_0x41fdb1){_0x33da53[_0x3ba1('0x4')](_0x335784,_0x41fdb1);};}function removeListener(_0x199de9,_0x1ab3da){return function(){OpenchannelQueueEvents[_0x3ba1('0x5')](_0x199de9,_0x1ab3da);};}exports[_0x3ba1('0x6')]=function(_0x57d16a){for(var _0x3ec722=0x0,_0x490537=events[_0x3ba1('0x7')];_0x3ec722<_0x490537;_0x3ec722++){var _0x528cb3=events[_0x3ec722];var _0x20d6c4=createListener('openchannelQueue:'+_0x528cb3,_0x57d16a);OpenchannelQueueEvents['on'](_0x528cb3,_0x20d6c4);}};
\ No newline at end of file
index e5ce346..a0b4fab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda13=['express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelQueueReport.controller','get','/describe','isAuthenticated','/:id','show','post','create','put','delete','exports','multer','path','connect-timeout'];(function(_0x2b0251,_0x221dc6){var _0x4bb330=function(_0x5786da){while(--_0x5786da){_0x2b0251['push'](_0x2b0251['shift']());}};_0x4bb330(++_0x221dc6);}(_0xda13,0x1eb));var _0x3da1=function(_0x14647d,_0x20a244){_0x14647d=_0x14647d-0x0;var _0x3a0cae=_0xda13[_0x14647d];return _0x3a0cae;};'use strict';var multer=require(_0x3da1('0x0'));var util=require('util');var path=require(_0x3da1('0x1'));var timeout=require(_0x3da1('0x2'));var express=require(_0x3da1('0x3'));var router=express['Router']();var fs_extra=require(_0x3da1('0x4'));var auth=require(_0x3da1('0x5'));var interaction=require(_0x3da1('0x6'));var config=require(_0x3da1('0x7'));var controller=require(_0x3da1('0x8'));router[_0x3da1('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x3da1('0x9')](_0x3da1('0xa'),auth[_0x3da1('0xb')](),controller['describe']);router['get'](_0x3da1('0xc'),auth[_0x3da1('0xb')](),controller[_0x3da1('0xd')]);router[_0x3da1('0xe')]('/',auth['isAuthenticated'](),controller[_0x3da1('0xf')]);router[_0x3da1('0x10')](_0x3da1('0xc'),auth[_0x3da1('0xb')](),controller['update']);router[_0x3da1('0x11')](_0x3da1('0xc'),auth[_0x3da1('0xb')](),controller['destroy']);module[_0x3da1('0x12')]=router;
\ No newline at end of file
+var _0x0a88=['multer','util','path','connect-timeout','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','describe','show','post','create','put','/:id','update','delete'];(function(_0x15329c,_0x44a0a2){var _0x566604=function(_0x2c3c88){while(--_0x2c3c88){_0x15329c['push'](_0x15329c['shift']());}};_0x566604(++_0x44a0a2);}(_0x0a88,0x1c2));var _0x80a8=function(_0x1a7846,_0x59723e){_0x1a7846=_0x1a7846-0x0;var _0x48049=_0x0a88[_0x1a7846];return _0x48049;};'use strict';var multer=require(_0x80a8('0x0'));var util=require(_0x80a8('0x1'));var path=require(_0x80a8('0x2'));var timeout=require(_0x80a8('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x80a8('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x80a8('0x5'));var config=require(_0x80a8('0x6'));var controller=require('./openchannelQueueReport.controller');router[_0x80a8('0x7')]('/',auth[_0x80a8('0x8')](),controller[_0x80a8('0x9')]);router[_0x80a8('0x7')]('/describe',auth[_0x80a8('0x8')](),controller[_0x80a8('0xa')]);router['get']('/:id',auth[_0x80a8('0x8')](),controller[_0x80a8('0xb')]);router[_0x80a8('0xc')]('/',auth[_0x80a8('0x8')](),controller[_0x80a8('0xd')]);router[_0x80a8('0xe')](_0x80a8('0xf'),auth[_0x80a8('0x8')](),controller[_0x80a8('0x10')]);router[_0x80a8('0x11')](_0x80a8('0xf'),auth[_0x80a8('0x8')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index b8aaef4..d9cf73a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7166=['STRING','DATE','exports'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0x7166,0x194));var _0x6716=function(_0x4a7e98,_0x250137){_0x4a7e98=_0x4a7e98-0x0;var _0x27d10d=_0x7166[_0x4a7e98];return _0x27d10d;};'use strict';var moment=require('moment');var Sequelize=require('sequelize');module[_0x6716('0x0')]={'uniqueid':{'type':Sequelize[_0x6716('0x1')],'allowNull':![]},'from':{'type':Sequelize[_0x6716('0x1')]},'joinAt':{'type':Sequelize[_0x6716('0x2')]},'leaveAt':{'type':Sequelize[_0x6716('0x2')]},'acceptAt':{'type':Sequelize[_0x6716('0x2')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0x6716('0x1')]}};
\ No newline at end of file
+var _0x3464=['DATE','moment','sequelize','exports','STRING'];(function(_0x54eab6,_0x5e262f){var _0x1e7435=function(_0x468c91){while(--_0x468c91){_0x54eab6['push'](_0x54eab6['shift']());}};_0x1e7435(++_0x5e262f);}(_0x3464,0x16e));var _0x4346=function(_0x2c90a9,_0x4bc044){_0x2c90a9=_0x2c90a9-0x0;var _0x41ffe2=_0x3464[_0x2c90a9];return _0x41ffe2;};'use strict';var moment=require(_0x4346('0x0'));var Sequelize=require(_0x4346('0x1'));module[_0x4346('0x2')]={'uniqueid':{'type':Sequelize[_0x4346('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0x4346('0x3')]},'joinAt':{'type':Sequelize[_0x4346('0x4')]},'leaveAt':{'type':Sequelize[_0x4346('0x4')]},'acceptAt':{'type':Sequelize[_0x4346('0x4')]},'exitAt':{'type':Sequelize[_0x4346('0x4')]},'reason':{'type':Sequelize[_0x4346('0x3')]}};
\ No newline at end of file
index 3d5d965..b4a515c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x56d4=['bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/license/util','end','status','json','undefined','limit','offset','set','Content-Range','apply','save','update','then','destroy','sendStatus','error','stack','name','index','map','OpenchannelQueueReport','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','count','includeAll','include','catch','show','params','rawAttributes','create','body','find','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment'];(function(_0x31e29a,_0x349c9b){var _0x32d892=function(_0x41cc86){while(--_0x41cc86){_0x31e29a['push'](_0x31e29a['shift']());}};_0x32d892(++_0x349c9b);}(_0x56d4,0xdc));var _0x456d=function(_0x4c0ff5,_0x478bca){_0x4c0ff5=_0x4c0ff5-0x0;var _0x4024b6=_0x56d4[_0x4c0ff5];return _0x4024b6;};'use strict';var emlformat=require(_0x456d('0x0'));var rimraf=require(_0x456d('0x1'));var zipdir=require(_0x456d('0x2'));var jsonpatch=require(_0x456d('0x3'));var rp=require('request-promise');var moment=require(_0x456d('0x4'));var BPromise=require(_0x456d('0x5'));var Mustache=require(_0x456d('0x6'));var util=require(_0x456d('0x7'));var path=require(_0x456d('0x8'));var sox=require(_0x456d('0x9'));var csv=require('to-csv');var ejs=require(_0x456d('0xa'));var fs=require('fs');var fs_extra=require(_0x456d('0xb'));var _=require(_0x456d('0xc'));var squel=require(_0x456d('0xd'));var crypto=require(_0x456d('0xe'));var jsforce=require(_0x456d('0xf'));var deskjs=require(_0x456d('0x10'));var toCsv=require(_0x456d('0x11'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x456d('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x456d('0x13'));var as=require(_0x456d('0x14'));var hardwareService=require(_0x456d('0x15'));var logger=require(_0x456d('0x16'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x456d('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2be4f4,_0x4db9c2){_0x4db9c2=_0x4db9c2||0xcc;return function(_0x462c2d){if(_0x462c2d){return _0x2be4f4['sendStatus'](_0x4db9c2);}return _0x2be4f4['status'](_0x4db9c2)[_0x456d('0x18')]();};}function respondWithResult(_0x1ab60a,_0x574cb6){_0x574cb6=_0x574cb6||0xc8;return function(_0x5759c3){if(_0x5759c3){return _0x1ab60a[_0x456d('0x19')](_0x574cb6)[_0x456d('0x1a')](_0x5759c3);}};}function respondWithFilteredResult(_0x546ab3,_0x1f93f6){return function(_0x515d46){if(_0x515d46){var _0x4f60d0=typeof _0x1f93f6['offset']===_0x456d('0x1b')&&typeof _0x1f93f6[_0x456d('0x1c')]===_0x456d('0x1b');var _0x42dc2a=_0x515d46['count'];var _0xd7df0a=_0x4f60d0?0x0:_0x1f93f6[_0x456d('0x1d')];var _0xd1ab91=_0x4f60d0?_0x515d46['count']:_0x1f93f6[_0x456d('0x1d')]+_0x1f93f6['limit'];var _0x3dbd5e;if(_0xd1ab91>=_0x42dc2a){_0xd1ab91=_0x42dc2a;_0x3dbd5e=0xc8;}else{_0x3dbd5e=0xce;}_0x546ab3[_0x456d('0x19')](_0x3dbd5e);return _0x546ab3[_0x456d('0x1e')](_0x456d('0x1f'),_0xd7df0a+'-'+_0xd1ab91+'/'+_0x42dc2a)['json'](_0x515d46);}return null;};}function patchUpdates(_0x154a56){return function(_0x1b6fe7){try{jsonpatch[_0x456d('0x20')](_0x1b6fe7,_0x154a56,!![]);}catch(_0x38085c){return BPromise['reject'](_0x38085c);}return _0x1b6fe7[_0x456d('0x21')]();};}function saveUpdates(_0x9d5a8f,_0x418692){return function(_0x4590c3){if(_0x4590c3){return _0x4590c3[_0x456d('0x22')](_0x9d5a8f)[_0x456d('0x23')](function(_0x5c9156){return _0x5c9156;});}return null;};}function removeEntity(_0x478f40,_0x1b2778){return function(_0x294edd){if(_0x294edd){return _0x294edd[_0x456d('0x24')]()['then'](function(){_0x478f40[_0x456d('0x19')](0xcc)[_0x456d('0x18')]();});}};}function handleEntityNotFound(_0x1da728,_0x48c6a9){return function(_0x11bf0){if(!_0x11bf0){_0x1da728[_0x456d('0x25')](0x194);}return _0x11bf0;};}function handleError(_0x379a5d,_0x3eb36d){_0x3eb36d=_0x3eb36d||0x1f4;return function(_0x46de50){logger[_0x456d('0x26')](_0x46de50[_0x456d('0x27')]);if(_0x46de50[_0x456d('0x28')]){delete _0x46de50['name'];}_0x379a5d['status'](_0x3eb36d)['send'](_0x46de50);};}exports[_0x456d('0x29')]=function(_0x4d1a07,_0x2897be){var _0x269d18={},_0x46877f={},_0x170d9a={'count':0x0,'rows':[]};var _0x418000=_[_0x456d('0x2a')](db[_0x456d('0x2b')]['rawAttributes'],function(_0x424d37){return{'name':_0x424d37[_0x456d('0x2c')],'type':_0x424d37[_0x456d('0x2d')][_0x456d('0x2e')]};});_0x46877f[_0x456d('0x2f')]=_['map'](_0x418000,_0x456d('0x28'));_0x46877f[_0x456d('0x30')]=_[_0x456d('0x31')](_0x4d1a07[_0x456d('0x30')]);_0x46877f[_0x456d('0x32')]=_[_0x456d('0x33')](_0x46877f[_0x456d('0x2f')],_0x46877f[_0x456d('0x30')]);_0x269d18['attributes']=_[_0x456d('0x33')](_0x46877f[_0x456d('0x2f')],qs[_0x456d('0x34')](_0x4d1a07[_0x456d('0x30')][_0x456d('0x34')]));_0x269d18[_0x456d('0x35')]=_0x269d18[_0x456d('0x35')][_0x456d('0x36')]?_0x269d18['attributes']:_0x46877f[_0x456d('0x2f')];if(!_0x4d1a07[_0x456d('0x30')][_0x456d('0x37')](_0x456d('0x38'))){_0x269d18[_0x456d('0x1c')]=qs[_0x456d('0x1c')](_0x4d1a07[_0x456d('0x30')][_0x456d('0x1c')]);_0x269d18[_0x456d('0x1d')]=qs[_0x456d('0x1d')](_0x4d1a07[_0x456d('0x30')]['offset']);}_0x269d18[_0x456d('0x39')]=qs[_0x456d('0x3a')](_0x4d1a07[_0x456d('0x30')][_0x456d('0x3a')]);_0x269d18[_0x456d('0x3b')]=qs['filters'](_[_0x456d('0x3c')](_0x4d1a07[_0x456d('0x30')],_0x46877f[_0x456d('0x32')]),_0x418000);if(_0x4d1a07[_0x456d('0x30')][_0x456d('0x3d')]){_0x269d18[_0x456d('0x3b')]=_[_0x456d('0x3e')](_0x269d18[_0x456d('0x3b')],{'$or':_[_0x456d('0x2a')](_0x418000,function(_0x3de45f){if(_0x3de45f[_0x456d('0x2d')]!=='VIRTUAL'){var _0x3ff372={};_0x3ff372[_0x3de45f[_0x456d('0x28')]]={'$like':'%'+_0x4d1a07['query'][_0x456d('0x3d')]+'%'};return _0x3ff372;}})});}_0x269d18=_[_0x456d('0x3e')]({},_0x269d18,_0x4d1a07[_0x456d('0x3f')]);var _0x11dd3f={'where':_0x269d18[_0x456d('0x3b')]};return db['OpenchannelQueueReport'][_0x456d('0x40')](_0x11dd3f)['then'](function(_0x58692b){_0x170d9a[_0x456d('0x40')]=_0x58692b;if(_0x4d1a07['query'][_0x456d('0x41')]){_0x269d18[_0x456d('0x42')]=[{'all':!![]}];}return db[_0x456d('0x2b')]['findAll'](_0x269d18);})[_0x456d('0x23')](function(_0x2934f7){_0x170d9a['rows']=_0x2934f7;return _0x170d9a;})[_0x456d('0x23')](respondWithFilteredResult(_0x2897be,_0x269d18))[_0x456d('0x43')](handleError(_0x2897be,null));};exports[_0x456d('0x44')]=function(_0x591a7a,_0x23f9f4){var _0xfeb5cc={'raw':!![],'where':{'id':_0x591a7a[_0x456d('0x45')]['id']}},_0x18455a={};_0x18455a[_0x456d('0x2f')]=_[_0x456d('0x31')](db[_0x456d('0x2b')][_0x456d('0x46')]);_0x18455a[_0x456d('0x30')]=_['keys'](_0x591a7a[_0x456d('0x30')]);_0x18455a[_0x456d('0x32')]=_[_0x456d('0x33')](_0x18455a[_0x456d('0x2f')],_0x18455a['query']);_0xfeb5cc['attributes']=_[_0x456d('0x33')](_0x18455a['model'],qs[_0x456d('0x34')](_0x591a7a[_0x456d('0x30')][_0x456d('0x34')]));_0xfeb5cc['attributes']=_0xfeb5cc[_0x456d('0x35')]['length']?_0xfeb5cc[_0x456d('0x35')]:_0x18455a[_0x456d('0x2f')];if(_0x591a7a[_0x456d('0x30')][_0x456d('0x41')]){_0xfeb5cc[_0x456d('0x42')]=[{'all':!![]}];}_0xfeb5cc=_[_0x456d('0x3e')]({},_0xfeb5cc,_0x591a7a[_0x456d('0x3f')]);return db[_0x456d('0x2b')]['find'](_0xfeb5cc)[_0x456d('0x23')](handleEntityNotFound(_0x23f9f4,null))[_0x456d('0x23')](respondWithResult(_0x23f9f4,null))[_0x456d('0x43')](handleError(_0x23f9f4,null));};exports[_0x456d('0x47')]=function(_0x4fc9fc,_0x498c6f){return db[_0x456d('0x2b')][_0x456d('0x47')](_0x4fc9fc['body'],{})[_0x456d('0x23')](respondWithResult(_0x498c6f,0xc9))[_0x456d('0x43')](handleError(_0x498c6f,null));};exports[_0x456d('0x22')]=function(_0x111e49,_0x5ba312){if(_0x111e49[_0x456d('0x48')]['id']){delete _0x111e49[_0x456d('0x48')]['id'];}return db[_0x456d('0x2b')][_0x456d('0x49')]({'where':{'id':_0x111e49[_0x456d('0x45')]['id']}})[_0x456d('0x23')](handleEntityNotFound(_0x5ba312,null))[_0x456d('0x23')](saveUpdates(_0x111e49[_0x456d('0x48')],null))[_0x456d('0x23')](respondWithResult(_0x5ba312,null))['catch'](handleError(_0x5ba312,null));};exports[_0x456d('0x24')]=function(_0xbb8d09,_0x56de0d){return db['OpenchannelQueueReport'][_0x456d('0x49')]({'where':{'id':_0xbb8d09[_0x456d('0x45')]['id']}})[_0x456d('0x23')](handleEntityNotFound(_0x56de0d,null))[_0x456d('0x23')](removeEntity(_0x56de0d,null))[_0x456d('0x43')](handleError(_0x56de0d,null));};exports[_0x456d('0x4a')]=function(_0x4411c2,_0x3c10f6){return db[_0x456d('0x2b')][_0x456d('0x4a')]()[_0x456d('0x23')](respondWithResult(_0x3c10f6,null))[_0x456d('0x43')](handleError(_0x3c10f6,null));};
\ No newline at end of file
+var _0x2b6f=['attributes','length','nolimit','offset','order','sort','where','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','show','rawAttributes','find','catch','create','body','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','json','undefined','limit','count','Content-Range','apply','reject','update','then','destroy','error','stack','name','send','index','map','OpenchannelQueueReport','fieldName','type','key','model','query','keys','filters','intersection','fields'];(function(_0xc4001c,_0x1bf8f0){var _0x49f7bc=function(_0x1059b8){while(--_0x1059b8){_0xc4001c['push'](_0xc4001c['shift']());}};_0x49f7bc(++_0x1bf8f0);}(_0x2b6f,0x14b));var _0xf2b6=function(_0x1ebce2,_0x10e903){_0x1ebce2=_0x1ebce2-0x0;var _0x4a330c=_0x2b6f[_0x1ebce2];return _0x4a330c;};'use strict';var emlformat=require(_0xf2b6('0x0'));var rimraf=require(_0xf2b6('0x1'));var zipdir=require(_0xf2b6('0x2'));var jsonpatch=require(_0xf2b6('0x3'));var rp=require(_0xf2b6('0x4'));var moment=require('moment');var BPromise=require(_0xf2b6('0x5'));var Mustache=require(_0xf2b6('0x6'));var util=require(_0xf2b6('0x7'));var path=require(_0xf2b6('0x8'));var sox=require(_0xf2b6('0x9'));var csv=require('to-csv');var ejs=require(_0xf2b6('0xa'));var fs=require('fs');var fs_extra=require(_0xf2b6('0xb'));var _=require(_0xf2b6('0xc'));var squel=require(_0xf2b6('0xd'));var crypto=require('crypto');var jsforce=require(_0xf2b6('0xe'));var deskjs=require(_0xf2b6('0xf'));var toCsv=require(_0xf2b6('0x10'));var querystring=require(_0xf2b6('0x11'));var Papa=require(_0xf2b6('0x12'));var Redis=require(_0xf2b6('0x13'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xf2b6('0x14'));var logger=require(_0xf2b6('0x15'))('api');var utils=require(_0xf2b6('0x16'));var config=require(_0xf2b6('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xf2b6('0x18'))['db'];function respondWithStatusCode(_0x454a07,_0x8d2f1f){_0x8d2f1f=_0x8d2f1f||0xcc;return function(_0x3bd476){if(_0x3bd476){return _0x454a07[_0xf2b6('0x19')](_0x8d2f1f);}return _0x454a07['status'](_0x8d2f1f)[_0xf2b6('0x1a')]();};}function respondWithResult(_0x37d766,_0x48a11d){_0x48a11d=_0x48a11d||0xc8;return function(_0x43343a){if(_0x43343a){return _0x37d766[_0xf2b6('0x1b')](_0x48a11d)[_0xf2b6('0x1c')](_0x43343a);}};}function respondWithFilteredResult(_0x4278b5,_0x2070a4){return function(_0x4777ae){if(_0x4777ae){var _0x1c40fd=typeof _0x2070a4['offset']===_0xf2b6('0x1d')&&typeof _0x2070a4[_0xf2b6('0x1e')]===_0xf2b6('0x1d');var _0x5c5f1e=_0x4777ae[_0xf2b6('0x1f')];var _0x5067b4=_0x1c40fd?0x0:_0x2070a4['offset'];var _0x461239=_0x1c40fd?_0x4777ae[_0xf2b6('0x1f')]:_0x2070a4['offset']+_0x2070a4[_0xf2b6('0x1e')];var _0x595334;if(_0x461239>=_0x5c5f1e){_0x461239=_0x5c5f1e;_0x595334=0xc8;}else{_0x595334=0xce;}_0x4278b5['status'](_0x595334);return _0x4278b5['set'](_0xf2b6('0x20'),_0x5067b4+'-'+_0x461239+'/'+_0x5c5f1e)[_0xf2b6('0x1c')](_0x4777ae);}return null;};}function patchUpdates(_0x40bd0f){return function(_0x24a4b7){try{jsonpatch[_0xf2b6('0x21')](_0x24a4b7,_0x40bd0f,!![]);}catch(_0x50526d){return BPromise[_0xf2b6('0x22')](_0x50526d);}return _0x24a4b7['save']();};}function saveUpdates(_0x84b287,_0x144f67){return function(_0x969f61){if(_0x969f61){return _0x969f61[_0xf2b6('0x23')](_0x84b287)[_0xf2b6('0x24')](function(_0x6aefa1){return _0x6aefa1;});}return null;};}function removeEntity(_0x567bf8,_0x5edfc4){return function(_0x574ca3){if(_0x574ca3){return _0x574ca3[_0xf2b6('0x25')]()[_0xf2b6('0x24')](function(){_0x567bf8[_0xf2b6('0x1b')](0xcc)[_0xf2b6('0x1a')]();});}};}function handleEntityNotFound(_0x3c0acd,_0x4c48c8){return function(_0x30079e){if(!_0x30079e){_0x3c0acd[_0xf2b6('0x19')](0x194);}return _0x30079e;};}function handleError(_0x150ccf,_0x245d07){_0x245d07=_0x245d07||0x1f4;return function(_0x367950){logger[_0xf2b6('0x26')](_0x367950[_0xf2b6('0x27')]);if(_0x367950[_0xf2b6('0x28')]){delete _0x367950['name'];}_0x150ccf['status'](_0x245d07)[_0xf2b6('0x29')](_0x367950);};}exports[_0xf2b6('0x2a')]=function(_0x4a77da,_0x2bc99b){var _0x579d96={},_0x3f9186={},_0x4c0583={'count':0x0,'rows':[]};var _0x13a54b=_[_0xf2b6('0x2b')](db[_0xf2b6('0x2c')]['rawAttributes'],function(_0x415fe1){return{'name':_0x415fe1[_0xf2b6('0x2d')],'type':_0x415fe1[_0xf2b6('0x2e')][_0xf2b6('0x2f')]};});_0x3f9186[_0xf2b6('0x30')]=_[_0xf2b6('0x2b')](_0x13a54b,_0xf2b6('0x28'));_0x3f9186[_0xf2b6('0x31')]=_[_0xf2b6('0x32')](_0x4a77da[_0xf2b6('0x31')]);_0x3f9186[_0xf2b6('0x33')]=_[_0xf2b6('0x34')](_0x3f9186[_0xf2b6('0x30')],_0x3f9186[_0xf2b6('0x31')]);_0x579d96['attributes']=_['intersection'](_0x3f9186[_0xf2b6('0x30')],qs[_0xf2b6('0x35')](_0x4a77da[_0xf2b6('0x31')]['fields']));_0x579d96[_0xf2b6('0x36')]=_0x579d96[_0xf2b6('0x36')][_0xf2b6('0x37')]?_0x579d96[_0xf2b6('0x36')]:_0x3f9186['model'];if(!_0x4a77da[_0xf2b6('0x31')]['hasOwnProperty'](_0xf2b6('0x38'))){_0x579d96[_0xf2b6('0x1e')]=qs[_0xf2b6('0x1e')](_0x4a77da['query'][_0xf2b6('0x1e')]);_0x579d96['offset']=qs[_0xf2b6('0x39')](_0x4a77da[_0xf2b6('0x31')][_0xf2b6('0x39')]);}_0x579d96[_0xf2b6('0x3a')]=qs[_0xf2b6('0x3b')](_0x4a77da[_0xf2b6('0x31')][_0xf2b6('0x3b')]);_0x579d96[_0xf2b6('0x3c')]=qs['filters'](_['pick'](_0x4a77da['query'],_0x3f9186[_0xf2b6('0x33')]),_0x13a54b);if(_0x4a77da[_0xf2b6('0x31')]['filter']){_0x579d96[_0xf2b6('0x3c')]=_[_0xf2b6('0x3d')](_0x579d96[_0xf2b6('0x3c')],{'$or':_[_0xf2b6('0x2b')](_0x13a54b,function(_0x1540a2){if(_0x1540a2[_0xf2b6('0x2e')]!==_0xf2b6('0x3e')){var _0x4fc48c={};_0x4fc48c[_0x1540a2[_0xf2b6('0x28')]]={'$like':'%'+_0x4a77da[_0xf2b6('0x31')][_0xf2b6('0x3f')]+'%'};return _0x4fc48c;}})});}_0x579d96=_['merge']({},_0x579d96,_0x4a77da[_0xf2b6('0x40')]);var _0x1e9ba7={'where':_0x579d96[_0xf2b6('0x3c')]};return db['OpenchannelQueueReport'][_0xf2b6('0x1f')](_0x1e9ba7)[_0xf2b6('0x24')](function(_0x436b8e){_0x4c0583[_0xf2b6('0x1f')]=_0x436b8e;if(_0x4a77da[_0xf2b6('0x31')][_0xf2b6('0x41')]){_0x579d96[_0xf2b6('0x42')]=[{'all':!![]}];}return db[_0xf2b6('0x2c')][_0xf2b6('0x43')](_0x579d96);})[_0xf2b6('0x24')](function(_0x500791){_0x4c0583[_0xf2b6('0x44')]=_0x500791;return _0x4c0583;})[_0xf2b6('0x24')](respondWithFilteredResult(_0x2bc99b,_0x579d96))['catch'](handleError(_0x2bc99b,null));};exports[_0xf2b6('0x45')]=function(_0x258b80,_0x1e5a59){var _0x5a57f6={'raw':!![],'where':{'id':_0x258b80['params']['id']}},_0x36257c={};_0x36257c[_0xf2b6('0x30')]=_[_0xf2b6('0x32')](db[_0xf2b6('0x2c')][_0xf2b6('0x46')]);_0x36257c[_0xf2b6('0x31')]=_[_0xf2b6('0x32')](_0x258b80[_0xf2b6('0x31')]);_0x36257c['filters']=_[_0xf2b6('0x34')](_0x36257c[_0xf2b6('0x30')],_0x36257c[_0xf2b6('0x31')]);_0x5a57f6[_0xf2b6('0x36')]=_[_0xf2b6('0x34')](_0x36257c[_0xf2b6('0x30')],qs[_0xf2b6('0x35')](_0x258b80[_0xf2b6('0x31')][_0xf2b6('0x35')]));_0x5a57f6[_0xf2b6('0x36')]=_0x5a57f6[_0xf2b6('0x36')]['length']?_0x5a57f6[_0xf2b6('0x36')]:_0x36257c[_0xf2b6('0x30')];if(_0x258b80[_0xf2b6('0x31')][_0xf2b6('0x41')]){_0x5a57f6[_0xf2b6('0x42')]=[{'all':!![]}];}_0x5a57f6=_[_0xf2b6('0x3d')]({},_0x5a57f6,_0x258b80[_0xf2b6('0x40')]);return db[_0xf2b6('0x2c')][_0xf2b6('0x47')](_0x5a57f6)[_0xf2b6('0x24')](handleEntityNotFound(_0x1e5a59,null))['then'](respondWithResult(_0x1e5a59,null))[_0xf2b6('0x48')](handleError(_0x1e5a59,null));};exports[_0xf2b6('0x49')]=function(_0x38570f,_0x109319){return db[_0xf2b6('0x2c')][_0xf2b6('0x49')](_0x38570f[_0xf2b6('0x4a')],{})[_0xf2b6('0x24')](respondWithResult(_0x109319,0xc9))[_0xf2b6('0x48')](handleError(_0x109319,null));};exports['update']=function(_0x18a998,_0x402ee4){if(_0x18a998[_0xf2b6('0x4a')]['id']){delete _0x18a998[_0xf2b6('0x4a')]['id'];}return db['OpenchannelQueueReport'][_0xf2b6('0x47')]({'where':{'id':_0x18a998[_0xf2b6('0x4b')]['id']}})[_0xf2b6('0x24')](handleEntityNotFound(_0x402ee4,null))[_0xf2b6('0x24')](saveUpdates(_0x18a998[_0xf2b6('0x4a')],null))[_0xf2b6('0x24')](respondWithResult(_0x402ee4,null))[_0xf2b6('0x48')](handleError(_0x402ee4,null));};exports[_0xf2b6('0x25')]=function(_0x25e13c,_0x62198f){return db['OpenchannelQueueReport'][_0xf2b6('0x47')]({'where':{'id':_0x25e13c[_0xf2b6('0x4b')]['id']}})['then'](handleEntityNotFound(_0x62198f,null))[_0xf2b6('0x24')](removeEntity(_0x62198f,null))['catch'](handleError(_0x62198f,null));};exports[_0xf2b6('0x4c')]=function(_0x27eae4,_0x3b98c5){return db['OpenchannelQueueReport'][_0xf2b6('0x4c')]()[_0xf2b6('0x24')](respondWithResult(_0x3b98c5,null))['catch'](handleError(_0x3b98c5,null));};
\ No newline at end of file
index bb0129d..982fb3b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['report_openchannel_queue','uniqueid','lodash','util','../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./openchannelQueueReport.attributes','exports','OpenchannelQueueReport'];(function(_0x46f922,_0x3e727e){var _0x48aff4=function(_0x2a5037){while(--_0x2a5037){_0x46f922['push'](_0x46f922['shift']());}};_0x48aff4(++_0x3e727e);}(_0x7a54,0x106));var _0x47a5=function(_0x4defeb,_0xd379d1){_0x4defeb=_0x4defeb-0x0;var _0x3fec39=_0x7a54[_0x4defeb];return _0x3fec39;};'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':'uniqueid','fields':[_0x47a5('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x2ef3=['define','OpenchannelQueueReport','report_openchannel_queue','uniqueid','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','./openchannelQueueReport.attributes','exports'];(function(_0x7bd370,_0x4bb7fa){var _0xdfa30b=function(_0x17d6b4){while(--_0x17d6b4){_0x7bd370['push'](_0x7bd370['shift']());}};_0xdfa30b(++_0x4bb7fa);}(_0x2ef3,0xba));var _0x32ef=function(_0x390279,_0x1c87d4){_0x390279=_0x390279-0x0;var _0x203208=_0x2ef3[_0x390279];return _0x203208;};'use strict';var _=require(_0x32ef('0x0'));var util=require(_0x32ef('0x1'));var logger=require(_0x32ef('0x2'))(_0x32ef('0x3'));var moment=require(_0x32ef('0x4'));var BPromise=require(_0x32ef('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x32ef('0x6'));var rimraf=require(_0x32ef('0x7'));var config=require('../../config/environment');var attributes=require(_0x32ef('0x8'));module[_0x32ef('0x9')]=function(_0x4c8104,_0x5dfa09){return _0x4c8104[_0x32ef('0xa')](_0x32ef('0xb'),attributes,{'tableName':_0x32ef('0xc'),'paranoid':![],'indexes':[{'name':_0x32ef('0xd'),'fields':[_0x32ef('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 4ea9c2f..935d670 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4af8=['catch','CreateOpenchannelQueueReport','OpenchannelQueueReport','create','body','options','raw','stringify','UpdateOpenchannelQueueReport','update','where','attributes','limit','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','request','then','info','request\x20sent','debug','OpenchannelQueueReport,\x20%s,\x20%s,\x20%s','error','code','message','OpenchannelQueueReport,\x20%s,\x20%s','result'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0x4af8,0x1ad));var _0x84af=function(_0x55f8b4,_0x43f30d){_0x55f8b4=_0x55f8b4-0x0;var _0x2475f9=_0x4af8[_0x55f8b4];return _0x2475f9;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x84af('0x0'));var fs=require('fs');var Redis=require(_0x84af('0x1'));var db=require(_0x84af('0x2'))['db'];var utils=require(_0x84af('0x3'));var logger=require('../../config/logger')(_0x84af('0x4'));var config=require(_0x84af('0x5'));var jayson=require('jayson/promise');var client=jayson[_0x84af('0x6')][_0x84af('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x550ee6,_0x422c5b,_0x294bc8){return new BPromise(function(_0x483ecc,_0x5b5e45){return client[_0x84af('0x8')](_0x550ee6,_0x294bc8)[_0x84af('0x9')](function(_0x479e1b){logger[_0x84af('0xa')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x422c5b,_0x84af('0xb'));logger[_0x84af('0xc')](_0x84af('0xd'),_0x422c5b,_0x84af('0xb'),JSON['stringify'](_0x479e1b));if(_0x479e1b[_0x84af('0xe')]){if(_0x479e1b['error'][_0x84af('0xf')]===0x1f4){logger[_0x84af('0xe')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x422c5b,_0x479e1b[_0x84af('0xe')][_0x84af('0x10')]);return _0x5b5e45(_0x479e1b[_0x84af('0xe')][_0x84af('0x10')]);}logger['error'](_0x84af('0x11'),_0x422c5b,_0x479e1b['error'][_0x84af('0x10')]);return _0x483ecc(_0x479e1b[_0x84af('0xe')]['message']);}else{logger[_0x84af('0xa')](_0x84af('0x11'),_0x422c5b,'request\x20sent');_0x483ecc(_0x479e1b[_0x84af('0x12')]['message']);}})[_0x84af('0x13')](function(_0x33baf1){logger['error']('OpenchannelQueueReport,\x20%s,\x20%s',_0x422c5b,_0x33baf1);_0x5b5e45(_0x33baf1);});});}exports[_0x84af('0x14')]=function(_0xd8120b){var _0x38a120=this;return new Promise(function(_0x4cf5b4,_0x4d0cf0){return db[_0x84af('0x15')][_0x84af('0x16')](_0xd8120b[_0x84af('0x17')],{'raw':_0xd8120b[_0x84af('0x18')]?_0xd8120b[_0x84af('0x18')][_0x84af('0x19')]===undefined?!![]:![]:!![]})[_0x84af('0x9')](function(_0x334875){logger[_0x84af('0xa')]('CreateOpenchannelQueueReport',_0xd8120b);logger[_0x84af('0xc')](_0x84af('0x14'),_0xd8120b,JSON[_0x84af('0x1a')](_0x334875));_0x4cf5b4(_0x334875);})['catch'](function(_0x2f40d6){logger[_0x84af('0xe')](_0x84af('0x14'),_0x2f40d6['message'],_0xd8120b);_0x4d0cf0(_0x38a120['error'](0x1f4,_0x2f40d6[_0x84af('0x10')]));});});};exports[_0x84af('0x1b')]=function(_0xf72093){var _0x24aa07=this;return new Promise(function(_0x21823e,_0x1b23fb){return db[_0x84af('0x15')][_0x84af('0x1c')](_0xf72093[_0x84af('0x17')],{'raw':_0xf72093[_0x84af('0x18')]?_0xf72093[_0x84af('0x18')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xf72093[_0x84af('0x18')]?_0xf72093[_0x84af('0x18')][_0x84af('0x1d')]||null:null,'attributes':_0xf72093[_0x84af('0x18')]?_0xf72093[_0x84af('0x18')][_0x84af('0x1e')]||null:null,'limit':_0xf72093[_0x84af('0x18')]?_0xf72093['options'][_0x84af('0x1f')]||null:null})[_0x84af('0x9')](function(_0x59417e){logger[_0x84af('0xa')](_0x84af('0x1b'),_0xf72093);logger[_0x84af('0xc')](_0x84af('0x1b'),_0xf72093,JSON['stringify'](_0x59417e));_0x21823e(_0x59417e);})['catch'](function(_0x3f37a0){logger[_0x84af('0xe')](_0x84af('0x1b'),_0x3f37a0[_0x84af('0x10')],_0xf72093);_0x1b23fb(_0x24aa07[_0x84af('0xe')](0x1f4,_0x3f37a0[_0x84af('0x10')]));});});};
\ No newline at end of file
+var _0x93e9=['UpdateOpenchannelQueueReport','update','where','attributes','debug','stringify','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','request','then','info','OpenchannelQueueReport,\x20%s,\x20%s','request\x20sent','OpenchannelQueueReport,\x20%s,\x20%s,\x20%s','error','message','result','catch','CreateOpenchannelQueueReport','OpenchannelQueueReport','body','options','raw'];(function(_0xe5ffca,_0x1e71b7){var _0x56c817=function(_0x45013b){while(--_0x45013b){_0xe5ffca['push'](_0xe5ffca['shift']());}};_0x56c817(++_0x1e71b7);}(_0x93e9,0xcc));var _0x993e=function(_0x5e1e42,_0x75a2c5){_0x5e1e42=_0x5e1e42-0x0;var _0x402aae=_0x93e9[_0x5e1e42];return _0x402aae;};'use strict';var _=require(_0x993e('0x0'));var util=require(_0x993e('0x1'));var moment=require(_0x993e('0x2'));var BPromise=require(_0x993e('0x3'));var rs=require(_0x993e('0x4'));var fs=require('fs');var Redis=require(_0x993e('0x5'));var db=require(_0x993e('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x993e('0x7'));var config=require(_0x993e('0x8'));var jayson=require(_0x993e('0x9'));var client=jayson[_0x993e('0xa')][_0x993e('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2366d9,_0x12ac94,_0x1aef74){return new BPromise(function(_0x53d0ce,_0x4701d3){return client[_0x993e('0xc')](_0x2366d9,_0x1aef74)[_0x993e('0xd')](function(_0x280291){logger[_0x993e('0xe')](_0x993e('0xf'),_0x12ac94,_0x993e('0x10'));logger['debug'](_0x993e('0x11'),_0x12ac94,_0x993e('0x10'),JSON['stringify'](_0x280291));if(_0x280291['error']){if(_0x280291[_0x993e('0x12')]['code']===0x1f4){logger[_0x993e('0x12')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x12ac94,_0x280291['error'][_0x993e('0x13')]);return _0x4701d3(_0x280291[_0x993e('0x12')][_0x993e('0x13')]);}logger[_0x993e('0x12')](_0x993e('0xf'),_0x12ac94,_0x280291[_0x993e('0x12')][_0x993e('0x13')]);return _0x53d0ce(_0x280291[_0x993e('0x12')][_0x993e('0x13')]);}else{logger[_0x993e('0xe')](_0x993e('0xf'),_0x12ac94,_0x993e('0x10'));_0x53d0ce(_0x280291[_0x993e('0x14')][_0x993e('0x13')]);}})[_0x993e('0x15')](function(_0x454475){logger[_0x993e('0x12')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x12ac94,_0x454475);_0x4701d3(_0x454475);});});}exports[_0x993e('0x16')]=function(_0x1acd21){var _0x3cc2b9=this;return new Promise(function(_0x3d6109,_0xfc2cbb){return db[_0x993e('0x17')]['create'](_0x1acd21[_0x993e('0x18')],{'raw':_0x1acd21[_0x993e('0x19')]?_0x1acd21[_0x993e('0x19')][_0x993e('0x1a')]===undefined?!![]:![]:!![]})[_0x993e('0xd')](function(_0x425ab4){logger[_0x993e('0xe')](_0x993e('0x16'),_0x1acd21);logger['debug'](_0x993e('0x16'),_0x1acd21,JSON['stringify'](_0x425ab4));_0x3d6109(_0x425ab4);})[_0x993e('0x15')](function(_0x37ff57){logger[_0x993e('0x12')]('CreateOpenchannelQueueReport',_0x37ff57[_0x993e('0x13')],_0x1acd21);_0xfc2cbb(_0x3cc2b9[_0x993e('0x12')](0x1f4,_0x37ff57[_0x993e('0x13')]));});});};exports[_0x993e('0x1b')]=function(_0x3b45ef){var _0x328d22=this;return new Promise(function(_0xa1c83e,_0x3ad96f){return db[_0x993e('0x17')][_0x993e('0x1c')](_0x3b45ef[_0x993e('0x18')],{'raw':_0x3b45ef[_0x993e('0x19')]?_0x3b45ef['options'][_0x993e('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3b45ef[_0x993e('0x19')]?_0x3b45ef['options'][_0x993e('0x1d')]||null:null,'attributes':_0x3b45ef['options']?_0x3b45ef[_0x993e('0x19')][_0x993e('0x1e')]||null:null,'limit':_0x3b45ef[_0x993e('0x19')]?_0x3b45ef[_0x993e('0x19')]['limit']||null:null})['then'](function(_0x32e332){logger[_0x993e('0xe')]('UpdateOpenchannelQueueReport',_0x3b45ef);logger[_0x993e('0x1f')](_0x993e('0x1b'),_0x3b45ef,JSON[_0x993e('0x20')](_0x32e332));_0xa1c83e(_0x32e332);})['catch'](function(_0x2495b7){logger[_0x993e('0x12')](_0x993e('0x1b'),_0x2495b7[_0x993e('0x13')],_0x3b45ef);_0x3ad96f(_0x328d22[_0x993e('0x12')](0x1f4,_0x2495b7['message']));});});};
\ No newline at end of file
index 85889ab..4575298 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x436f=['create','put','update','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelTransferReport.controller','get','isAuthenticated','index','/describe','/:id','post'];(function(_0x3c3d35,_0x5d99a5){var _0x1ce7bc=function(_0x518472){while(--_0x518472){_0x3c3d35['push'](_0x3c3d35['shift']());}};_0x1ce7bc(++_0x5d99a5);}(_0x436f,0x1a7));var _0xf436=function(_0x4684b4,_0x39811e){_0x4684b4=_0x4684b4-0x0;var _0x204d08=_0x436f[_0x4684b4];return _0x204d08;};'use strict';var multer=require(_0xf436('0x0'));var util=require(_0xf436('0x1'));var path=require(_0xf436('0x2'));var timeout=require(_0xf436('0x3'));var express=require(_0xf436('0x4'));var router=express[_0xf436('0x5')]();var fs_extra=require(_0xf436('0x6'));var auth=require(_0xf436('0x7'));var interaction=require(_0xf436('0x8'));var config=require(_0xf436('0x9'));var controller=require(_0xf436('0xa'));router[_0xf436('0xb')]('/',auth[_0xf436('0xc')](),controller[_0xf436('0xd')]);router[_0xf436('0xb')](_0xf436('0xe'),auth[_0xf436('0xc')](),controller['describe']);router[_0xf436('0xb')](_0xf436('0xf'),auth[_0xf436('0xc')](),controller['show']);router[_0xf436('0x10')]('/',auth[_0xf436('0xc')](),controller[_0xf436('0x11')]);router[_0xf436('0x12')](_0xf436('0xf'),auth[_0xf436('0xc')](),controller[_0xf436('0x13')]);router[_0xf436('0x14')]('/:id',auth[_0xf436('0xc')](),controller[_0xf436('0x15')]);module['exports']=router;
\ No newline at end of file
+var _0xc6d6=['../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelTransferReport.controller','get','isAuthenticated','/describe','/:id','show','create','update','delete','destroy','exports','util','path','connect-timeout','express','Router'];(function(_0x5ee6c9,_0x1b6779){var _0x23a794=function(_0x1c6273){while(--_0x1c6273){_0x5ee6c9['push'](_0x5ee6c9['shift']());}};_0x23a794(++_0x1b6779);}(_0xc6d6,0x1d6));var _0x6c6d=function(_0x190148,_0xda6bdd){_0x190148=_0x190148-0x0;var _0x5009de=_0xc6d6[_0x190148];return _0x5009de;};'use strict';var multer=require('multer');var util=require(_0x6c6d('0x0'));var path=require(_0x6c6d('0x1'));var timeout=require(_0x6c6d('0x2'));var express=require(_0x6c6d('0x3'));var router=express[_0x6c6d('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x6c6d('0x5'));var interaction=require(_0x6c6d('0x6'));var config=require(_0x6c6d('0x7'));var controller=require(_0x6c6d('0x8'));router[_0x6c6d('0x9')]('/',auth[_0x6c6d('0xa')](),controller['index']);router[_0x6c6d('0x9')](_0x6c6d('0xb'),auth[_0x6c6d('0xa')](),controller['describe']);router[_0x6c6d('0x9')](_0x6c6d('0xc'),auth[_0x6c6d('0xa')](),controller[_0x6c6d('0xd')]);router['post']('/',auth['isAuthenticated'](),controller[_0x6c6d('0xe')]);router['put'](_0x6c6d('0xc'),auth[_0x6c6d('0xa')](),controller[_0x6c6d('0xf')]);router[_0x6c6d('0x10')](_0x6c6d('0xc'),auth[_0x6c6d('0xa')](),controller[_0x6c6d('0x11')]);module[_0x6c6d('0x12')]=router;
\ No newline at end of file
index 2b0077a..de16f0e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e0=['NOW','moment','sequelize','exports','account','agent','queue'];(function(_0x20ee8c,_0x3c0569){var _0x140dc3=function(_0x5beb92){while(--_0x5beb92){_0x20ee8c['push'](_0x20ee8c['shift']());}};_0x140dc3(++_0x3c0569);}(_0x70e0,0x17b));var _0x070e=function(_0x46307a,_0x539c51){_0x46307a=_0x46307a-0x0;var _0xe0a428=_0x70e0[_0x46307a];return _0xe0a428;};'use strict';var moment=require(_0x070e('0x0'));var Sequelize=require(_0x070e('0x1'));module[_0x070e('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x070e('0x3'),_0x070e('0x4'),_0x070e('0x5')),'allowNull':![],'defaultValue':_0x070e('0x5')},'transferredAt':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':Sequelize[_0x070e('0x6')]}};
\ No newline at end of file
+var _0xf3cd=['exports','STRING','ENUM','account','queue','DATE','moment','sequelize'];(function(_0x4f60aa,_0x1c21c1){var _0x1f0c25=function(_0x3a2111){while(--_0x3a2111){_0x4f60aa['push'](_0x4f60aa['shift']());}};_0x1f0c25(++_0x1c21c1);}(_0xf3cd,0xfe));var _0xdf3c=function(_0x14476b,_0xd1a7a4){_0x14476b=_0x14476b-0x0;var _0x24e2e8=_0xf3cd[_0x14476b];return _0x24e2e8;};'use strict';var moment=require(_0xdf3c('0x0'));var Sequelize=require(_0xdf3c('0x1'));module[_0xdf3c('0x2')]={'uniqueid':{'type':Sequelize[_0xdf3c('0x3')],'allowNull':![]},'type':{'type':Sequelize[_0xdf3c('0x4')](_0xdf3c('0x5'),'agent',_0xdf3c('0x6')),'allowNull':![],'defaultValue':_0xdf3c('0x6')},'transferredAt':{'type':Sequelize[_0xdf3c('0x7')],'allowNull':![],'defaultValue':Sequelize['NOW']}};
\ No newline at end of file
index f2bc229..31ada3f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x950a=['type','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','create','body','find','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','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/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy','error','stack','name','index','map','OpenchannelTransferReport','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge'];(function(_0x2ff5fa,_0xa456c4){var _0x79b5f6=function(_0x1fea54){while(--_0x1fea54){_0x2ff5fa['push'](_0x2ff5fa['shift']());}};_0x79b5f6(++_0xa456c4);}(_0x950a,0x1e1));var _0xa950=function(_0x157d78,_0x5825d4){_0x157d78=_0x157d78-0x0;var _0x54bd16=_0x950a[_0x157d78];return _0x54bd16;};'use strict';var emlformat=require(_0xa950('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xa950('0x1'));var jsonpatch=require(_0xa950('0x2'));var rp=require(_0xa950('0x3'));var moment=require(_0xa950('0x4'));var BPromise=require(_0xa950('0x5'));var Mustache=require('mustache');var util=require(_0xa950('0x6'));var path=require('path');var sox=require(_0xa950('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa950('0x8'));var _=require(_0xa950('0x9'));var squel=require(_0xa950('0xa'));var crypto=require(_0xa950('0xb'));var jsforce=require(_0xa950('0xc'));var deskjs=require(_0xa950('0xd'));var toCsv=require(_0xa950('0xe'));var querystring=require(_0xa950('0xf'));var Papa=require(_0xa950('0x10'));var Redis=require(_0xa950('0x11'));var authService=require(_0xa950('0x12'));var qs=require(_0xa950('0x13'));var as=require(_0xa950('0x14'));var hardwareService=require(_0xa950('0x15'));var logger=require(_0xa950('0x16'))(_0xa950('0x17'));var utils=require('../../config/utils');var config=require(_0xa950('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xa950('0x19'))['db'];function respondWithStatusCode(_0x56ee9a,_0x1f106d){_0x1f106d=_0x1f106d||0xcc;return function(_0x163c62){if(_0x163c62){return _0x56ee9a[_0xa950('0x1a')](_0x1f106d);}return _0x56ee9a[_0xa950('0x1b')](_0x1f106d)[_0xa950('0x1c')]();};}function respondWithResult(_0x5bf2ed,_0x470f50){_0x470f50=_0x470f50||0xc8;return function(_0x1ac836){if(_0x1ac836){return _0x5bf2ed[_0xa950('0x1b')](_0x470f50)[_0xa950('0x1d')](_0x1ac836);}};}function respondWithFilteredResult(_0x1cf751,_0x45594d){return function(_0x3ade7e){if(_0x3ade7e){var _0x54fc3e=typeof _0x45594d[_0xa950('0x1e')]===_0xa950('0x1f')&&typeof _0x45594d[_0xa950('0x20')]===_0xa950('0x1f');var _0x7ddc05=_0x3ade7e[_0xa950('0x21')];var _0x54b2c9=_0x54fc3e?0x0:_0x45594d[_0xa950('0x1e')];var _0x4b76f0=_0x54fc3e?_0x3ade7e[_0xa950('0x21')]:_0x45594d['offset']+_0x45594d[_0xa950('0x20')];var _0x500686;if(_0x4b76f0>=_0x7ddc05){_0x4b76f0=_0x7ddc05;_0x500686=0xc8;}else{_0x500686=0xce;}_0x1cf751['status'](_0x500686);return _0x1cf751[_0xa950('0x22')](_0xa950('0x23'),_0x54b2c9+'-'+_0x4b76f0+'/'+_0x7ddc05)[_0xa950('0x1d')](_0x3ade7e);}return null;};}function patchUpdates(_0x430d5d){return function(_0x36b88e){try{jsonpatch[_0xa950('0x24')](_0x36b88e,_0x430d5d,!![]);}catch(_0x20e97d){return BPromise['reject'](_0x20e97d);}return _0x36b88e[_0xa950('0x25')]();};}function saveUpdates(_0x3880df,_0x433adb){return function(_0x8ed9f8){if(_0x8ed9f8){return _0x8ed9f8[_0xa950('0x26')](_0x3880df)[_0xa950('0x27')](function(_0x3ba715){return _0x3ba715;});}return null;};}function removeEntity(_0x66553,_0x37fb36){return function(_0x477988){if(_0x477988){return _0x477988[_0xa950('0x28')]()[_0xa950('0x27')](function(){_0x66553[_0xa950('0x1b')](0xcc)[_0xa950('0x1c')]();});}};}function handleEntityNotFound(_0x169c21,_0x2b0dc3){return function(_0x29b468){if(!_0x29b468){_0x169c21[_0xa950('0x1a')](0x194);}return _0x29b468;};}function handleError(_0x220dcd,_0x1093db){_0x1093db=_0x1093db||0x1f4;return function(_0x2d54c2){logger[_0xa950('0x29')](_0x2d54c2[_0xa950('0x2a')]);if(_0x2d54c2[_0xa950('0x2b')]){delete _0x2d54c2[_0xa950('0x2b')];}_0x220dcd[_0xa950('0x1b')](_0x1093db)['send'](_0x2d54c2);};}exports[_0xa950('0x2c')]=function(_0x211f48,_0x5e1c69){var _0x19741e={},_0x372a9b={},_0x1015ac={'count':0x0,'rows':[]};var _0x33a133=_[_0xa950('0x2d')](db[_0xa950('0x2e')][_0xa950('0x2f')],function(_0x3ecc97){return{'name':_0x3ecc97[_0xa950('0x30')],'type':_0x3ecc97['type'][_0xa950('0x31')]};});_0x372a9b[_0xa950('0x32')]=_[_0xa950('0x2d')](_0x33a133,'name');_0x372a9b[_0xa950('0x33')]=_[_0xa950('0x34')](_0x211f48[_0xa950('0x33')]);_0x372a9b[_0xa950('0x35')]=_[_0xa950('0x36')](_0x372a9b[_0xa950('0x32')],_0x372a9b['query']);_0x19741e[_0xa950('0x37')]=_[_0xa950('0x36')](_0x372a9b[_0xa950('0x32')],qs[_0xa950('0x38')](_0x211f48[_0xa950('0x33')][_0xa950('0x38')]));_0x19741e[_0xa950('0x37')]=_0x19741e[_0xa950('0x37')][_0xa950('0x39')]?_0x19741e[_0xa950('0x37')]:_0x372a9b[_0xa950('0x32')];if(!_0x211f48[_0xa950('0x33')][_0xa950('0x3a')]('nolimit')){_0x19741e[_0xa950('0x20')]=qs[_0xa950('0x20')](_0x211f48[_0xa950('0x33')][_0xa950('0x20')]);_0x19741e[_0xa950('0x1e')]=qs['offset'](_0x211f48[_0xa950('0x33')]['offset']);}_0x19741e[_0xa950('0x3b')]=qs['sort'](_0x211f48[_0xa950('0x33')][_0xa950('0x3c')]);_0x19741e[_0xa950('0x3d')]=qs[_0xa950('0x35')](_[_0xa950('0x3e')](_0x211f48[_0xa950('0x33')],_0x372a9b[_0xa950('0x35')]),_0x33a133);if(_0x211f48['query'][_0xa950('0x3f')]){_0x19741e[_0xa950('0x3d')]=_[_0xa950('0x40')](_0x19741e['where'],{'$or':_['map'](_0x33a133,function(_0x543040){if(_0x543040[_0xa950('0x41')]!==_0xa950('0x42')){var _0x1cac08={};_0x1cac08[_0x543040[_0xa950('0x2b')]]={'$like':'%'+_0x211f48['query']['filter']+'%'};return _0x1cac08;}})});}_0x19741e=_[_0xa950('0x40')]({},_0x19741e,_0x211f48['options']);var _0x5a7e4b={'where':_0x19741e[_0xa950('0x3d')]};return db[_0xa950('0x2e')][_0xa950('0x21')](_0x5a7e4b)[_0xa950('0x27')](function(_0x267f2d){_0x1015ac['count']=_0x267f2d;if(_0x211f48[_0xa950('0x33')][_0xa950('0x43')]){_0x19741e[_0xa950('0x44')]=[{'all':!![]}];}return db[_0xa950('0x2e')][_0xa950('0x45')](_0x19741e);})['then'](function(_0x4330f6){_0x1015ac[_0xa950('0x46')]=_0x4330f6;return _0x1015ac;})[_0xa950('0x27')](respondWithFilteredResult(_0x5e1c69,_0x19741e))[_0xa950('0x47')](handleError(_0x5e1c69,null));};exports[_0xa950('0x48')]=function(_0x9b686,_0x1f5353){var _0x452690={'raw':!![],'where':{'id':_0x9b686[_0xa950('0x49')]['id']}},_0x4a8902={};_0x4a8902[_0xa950('0x32')]=_['keys'](db[_0xa950('0x2e')][_0xa950('0x2f')]);_0x4a8902[_0xa950('0x33')]=_[_0xa950('0x34')](_0x9b686['query']);_0x4a8902[_0xa950('0x35')]=_['intersection'](_0x4a8902[_0xa950('0x32')],_0x4a8902[_0xa950('0x33')]);_0x452690['attributes']=_['intersection'](_0x4a8902[_0xa950('0x32')],qs[_0xa950('0x38')](_0x9b686[_0xa950('0x33')][_0xa950('0x38')]));_0x452690[_0xa950('0x37')]=_0x452690[_0xa950('0x37')]['length']?_0x452690[_0xa950('0x37')]:_0x4a8902[_0xa950('0x32')];if(_0x9b686['query']['includeAll']){_0x452690['include']=[{'all':!![]}];}_0x452690=_[_0xa950('0x40')]({},_0x452690,_0x9b686['options']);return db[_0xa950('0x2e')]['find'](_0x452690)[_0xa950('0x27')](handleEntityNotFound(_0x1f5353,null))['then'](respondWithResult(_0x1f5353,null))[_0xa950('0x47')](handleError(_0x1f5353,null));};exports[_0xa950('0x4a')]=function(_0x523080,_0x59c84a){return db[_0xa950('0x2e')][_0xa950('0x4a')](_0x523080[_0xa950('0x4b')],{})[_0xa950('0x27')](respondWithResult(_0x59c84a,0xc9))[_0xa950('0x47')](handleError(_0x59c84a,null));};exports['update']=function(_0x575057,_0x29b5e1){if(_0x575057[_0xa950('0x4b')]['id']){delete _0x575057[_0xa950('0x4b')]['id'];}return db[_0xa950('0x2e')][_0xa950('0x4c')]({'where':{'id':_0x575057[_0xa950('0x49')]['id']}})[_0xa950('0x27')](handleEntityNotFound(_0x29b5e1,null))[_0xa950('0x27')](saveUpdates(_0x575057['body'],null))[_0xa950('0x27')](respondWithResult(_0x29b5e1,null))['catch'](handleError(_0x29b5e1,null));};exports[_0xa950('0x28')]=function(_0x4b62b2,_0x597347){return db['OpenchannelTransferReport'][_0xa950('0x4c')]({'where':{'id':_0x4b62b2[_0xa950('0x49')]['id']}})[_0xa950('0x27')](handleEntityNotFound(_0x597347,null))[_0xa950('0x27')](removeEntity(_0x597347,null))[_0xa950('0x47')](handleError(_0x597347,null));};exports[_0xa950('0x4d')]=function(_0x5a1d46,_0x2567ca){return db['OpenchannelTransferReport'][_0xa950('0x4d')]()[_0xa950('0x27')](respondWithResult(_0x2567ca,null))['catch'](handleError(_0x2567ca,null));};
\ No newline at end of file
+var _0x4ae3=['util','path','ejs','fs-extra','lodash','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','count','limit','Content-Range','save','update','then','end','error','stack','send','map','OpenchannelTransferReport','rawAttributes','fieldName','type','key','model','name','query','keys','intersection','fields','length','hasOwnProperty','nolimit','sort','where','filters','filter','VIRTUAL','options','rows','catch','show','params','attributes','merge','find','create','body','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache'];(function(_0x6fd8ad,_0x597818){var _0x257d21=function(_0x2aad69){while(--_0x2aad69){_0x6fd8ad['push'](_0x6fd8ad['shift']());}};_0x257d21(++_0x597818);}(_0x4ae3,0x84));var _0x34ae=function(_0x45030e,_0x32b6b8){_0x45030e=_0x45030e-0x0;var _0x4df3be=_0x4ae3[_0x45030e];return _0x4df3be;};'use strict';var emlformat=require(_0x34ae('0x0'));var rimraf=require(_0x34ae('0x1'));var zipdir=require(_0x34ae('0x2'));var jsonpatch=require(_0x34ae('0x3'));var rp=require(_0x34ae('0x4'));var moment=require(_0x34ae('0x5'));var BPromise=require(_0x34ae('0x6'));var Mustache=require(_0x34ae('0x7'));var util=require(_0x34ae('0x8'));var path=require(_0x34ae('0x9'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x34ae('0xa'));var fs=require('fs');var fs_extra=require(_0x34ae('0xb'));var _=require(_0x34ae('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x34ae('0xd'));var querystring=require(_0x34ae('0xe'));var Papa=require(_0x34ae('0xf'));var Redis=require(_0x34ae('0x10'));var authService=require(_0x34ae('0x11'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x34ae('0x12'))(_0x34ae('0x13'));var utils=require('../../config/utils');var config=require(_0x34ae('0x14'));var licenseUtil=require(_0x34ae('0x15'));var db=require(_0x34ae('0x16'))['db'];function respondWithStatusCode(_0x5a22cd,_0x204e5a){_0x204e5a=_0x204e5a||0xcc;return function(_0x2a4cd2){if(_0x2a4cd2){return _0x5a22cd[_0x34ae('0x17')](_0x204e5a);}return _0x5a22cd[_0x34ae('0x18')](_0x204e5a)['end']();};}function respondWithResult(_0x376f6d,_0x7bd0cc){_0x7bd0cc=_0x7bd0cc||0xc8;return function(_0x30a2cb){if(_0x30a2cb){return _0x376f6d[_0x34ae('0x18')](_0x7bd0cc)[_0x34ae('0x19')](_0x30a2cb);}};}function respondWithFilteredResult(_0x2a0019,_0x21ab50){return function(_0x3cc405){if(_0x3cc405){var _0x539ead=typeof _0x21ab50[_0x34ae('0x1a')]===_0x34ae('0x1b')&&typeof _0x21ab50['limit']===_0x34ae('0x1b');var _0x3ff347=_0x3cc405[_0x34ae('0x1c')];var _0x37f33a=_0x539ead?0x0:_0x21ab50['offset'];var _0x581ff6=_0x539ead?_0x3cc405[_0x34ae('0x1c')]:_0x21ab50[_0x34ae('0x1a')]+_0x21ab50[_0x34ae('0x1d')];var _0x30fb39;if(_0x581ff6>=_0x3ff347){_0x581ff6=_0x3ff347;_0x30fb39=0xc8;}else{_0x30fb39=0xce;}_0x2a0019[_0x34ae('0x18')](_0x30fb39);return _0x2a0019['set'](_0x34ae('0x1e'),_0x37f33a+'-'+_0x581ff6+'/'+_0x3ff347)[_0x34ae('0x19')](_0x3cc405);}return null;};}function patchUpdates(_0x5cdfc9){return function(_0x26f870){try{jsonpatch['apply'](_0x26f870,_0x5cdfc9,!![]);}catch(_0x22dfee){return BPromise['reject'](_0x22dfee);}return _0x26f870[_0x34ae('0x1f')]();};}function saveUpdates(_0x4adba8,_0x426daf){return function(_0x31f329){if(_0x31f329){return _0x31f329[_0x34ae('0x20')](_0x4adba8)[_0x34ae('0x21')](function(_0x220d8c){return _0x220d8c;});}return null;};}function removeEntity(_0x5168d1,_0x3ed602){return function(_0x36e59e){if(_0x36e59e){return _0x36e59e['destroy']()[_0x34ae('0x21')](function(){_0x5168d1[_0x34ae('0x18')](0xcc)[_0x34ae('0x22')]();});}};}function handleEntityNotFound(_0x510a80,_0xa25f3f){return function(_0x1e611a){if(!_0x1e611a){_0x510a80['sendStatus'](0x194);}return _0x1e611a;};}function handleError(_0x523056,_0x15c7bb){_0x15c7bb=_0x15c7bb||0x1f4;return function(_0xf2ef90){logger[_0x34ae('0x23')](_0xf2ef90[_0x34ae('0x24')]);if(_0xf2ef90['name']){delete _0xf2ef90['name'];}_0x523056[_0x34ae('0x18')](_0x15c7bb)[_0x34ae('0x25')](_0xf2ef90);};}exports['index']=function(_0x4a8d78,_0x51e2f9){var _0x511f80={},_0xf5eaad={},_0x25220f={'count':0x0,'rows':[]};var _0x2f57fd=_[_0x34ae('0x26')](db[_0x34ae('0x27')][_0x34ae('0x28')],function(_0x22c58c){return{'name':_0x22c58c[_0x34ae('0x29')],'type':_0x22c58c[_0x34ae('0x2a')][_0x34ae('0x2b')]};});_0xf5eaad[_0x34ae('0x2c')]=_[_0x34ae('0x26')](_0x2f57fd,_0x34ae('0x2d'));_0xf5eaad[_0x34ae('0x2e')]=_[_0x34ae('0x2f')](_0x4a8d78[_0x34ae('0x2e')]);_0xf5eaad['filters']=_[_0x34ae('0x30')](_0xf5eaad[_0x34ae('0x2c')],_0xf5eaad[_0x34ae('0x2e')]);_0x511f80['attributes']=_[_0x34ae('0x30')](_0xf5eaad['model'],qs[_0x34ae('0x31')](_0x4a8d78['query'][_0x34ae('0x31')]));_0x511f80['attributes']=_0x511f80['attributes'][_0x34ae('0x32')]?_0x511f80['attributes']:_0xf5eaad['model'];if(!_0x4a8d78[_0x34ae('0x2e')][_0x34ae('0x33')](_0x34ae('0x34'))){_0x511f80[_0x34ae('0x1d')]=qs['limit'](_0x4a8d78[_0x34ae('0x2e')][_0x34ae('0x1d')]);_0x511f80[_0x34ae('0x1a')]=qs['offset'](_0x4a8d78[_0x34ae('0x2e')][_0x34ae('0x1a')]);}_0x511f80['order']=qs[_0x34ae('0x35')](_0x4a8d78[_0x34ae('0x2e')]['sort']);_0x511f80[_0x34ae('0x36')]=qs[_0x34ae('0x37')](_['pick'](_0x4a8d78[_0x34ae('0x2e')],_0xf5eaad[_0x34ae('0x37')]),_0x2f57fd);if(_0x4a8d78['query'][_0x34ae('0x38')]){_0x511f80[_0x34ae('0x36')]=_['merge'](_0x511f80['where'],{'$or':_[_0x34ae('0x26')](_0x2f57fd,function(_0x419cde){if(_0x419cde[_0x34ae('0x2a')]!==_0x34ae('0x39')){var _0x1a8752={};_0x1a8752[_0x419cde[_0x34ae('0x2d')]]={'$like':'%'+_0x4a8d78[_0x34ae('0x2e')][_0x34ae('0x38')]+'%'};return _0x1a8752;}})});}_0x511f80=_['merge']({},_0x511f80,_0x4a8d78[_0x34ae('0x3a')]);var _0x4309f4={'where':_0x511f80['where']};return db[_0x34ae('0x27')][_0x34ae('0x1c')](_0x4309f4)[_0x34ae('0x21')](function(_0xea43bc){_0x25220f[_0x34ae('0x1c')]=_0xea43bc;if(_0x4a8d78['query']['includeAll']){_0x511f80['include']=[{'all':!![]}];}return db['OpenchannelTransferReport']['findAll'](_0x511f80);})[_0x34ae('0x21')](function(_0x4d3194){_0x25220f[_0x34ae('0x3b')]=_0x4d3194;return _0x25220f;})['then'](respondWithFilteredResult(_0x51e2f9,_0x511f80))[_0x34ae('0x3c')](handleError(_0x51e2f9,null));};exports[_0x34ae('0x3d')]=function(_0xb0d91,_0x5d57ea){var _0x2fd6d5={'raw':!![],'where':{'id':_0xb0d91[_0x34ae('0x3e')]['id']}},_0x48040a={};_0x48040a[_0x34ae('0x2c')]=_[_0x34ae('0x2f')](db[_0x34ae('0x27')]['rawAttributes']);_0x48040a[_0x34ae('0x2e')]=_['keys'](_0xb0d91[_0x34ae('0x2e')]);_0x48040a[_0x34ae('0x37')]=_[_0x34ae('0x30')](_0x48040a[_0x34ae('0x2c')],_0x48040a['query']);_0x2fd6d5[_0x34ae('0x3f')]=_[_0x34ae('0x30')](_0x48040a[_0x34ae('0x2c')],qs['fields'](_0xb0d91[_0x34ae('0x2e')][_0x34ae('0x31')]));_0x2fd6d5[_0x34ae('0x3f')]=_0x2fd6d5[_0x34ae('0x3f')]['length']?_0x2fd6d5[_0x34ae('0x3f')]:_0x48040a[_0x34ae('0x2c')];if(_0xb0d91[_0x34ae('0x2e')]['includeAll']){_0x2fd6d5['include']=[{'all':!![]}];}_0x2fd6d5=_[_0x34ae('0x40')]({},_0x2fd6d5,_0xb0d91[_0x34ae('0x3a')]);return db[_0x34ae('0x27')][_0x34ae('0x41')](_0x2fd6d5)['then'](handleEntityNotFound(_0x5d57ea,null))[_0x34ae('0x21')](respondWithResult(_0x5d57ea,null))[_0x34ae('0x3c')](handleError(_0x5d57ea,null));};exports[_0x34ae('0x42')]=function(_0x8849d9,_0x5d2999){return db[_0x34ae('0x27')]['create'](_0x8849d9[_0x34ae('0x43')],{})['then'](respondWithResult(_0x5d2999,0xc9))[_0x34ae('0x3c')](handleError(_0x5d2999,null));};exports['update']=function(_0x254ca6,_0x15e1b1){if(_0x254ca6[_0x34ae('0x43')]['id']){delete _0x254ca6[_0x34ae('0x43')]['id'];}return db['OpenchannelTransferReport']['find']({'where':{'id':_0x254ca6['params']['id']}})[_0x34ae('0x21')](handleEntityNotFound(_0x15e1b1,null))[_0x34ae('0x21')](saveUpdates(_0x254ca6[_0x34ae('0x43')],null))[_0x34ae('0x21')](respondWithResult(_0x15e1b1,null))[_0x34ae('0x3c')](handleError(_0x15e1b1,null));};exports[_0x34ae('0x44')]=function(_0x3d4bc3,_0x467344){return db[_0x34ae('0x27')][_0x34ae('0x41')]({'where':{'id':_0x3d4bc3[_0x34ae('0x3e')]['id']}})[_0x34ae('0x21')](handleEntityNotFound(_0x467344,null))['then'](removeEntity(_0x467344,null))['catch'](handleError(_0x467344,null));};exports[_0x34ae('0x45')]=function(_0x518dd4,_0x476200){return db['OpenchannelTransferReport'][_0x34ae('0x45')]()[_0x34ae('0x21')](respondWithResult(_0x476200,null))[_0x34ae('0x3c')](handleError(_0x476200,null));};
\ No newline at end of file
index e6ff4ef..9582a07 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x14e0=['util','../../config/logger','moment','bluebird','request-promise','rimraf','./openchannelTransferReport.attributes','exports','define','OpenchannelTransferReport','report_openchannel_transfer','uniqueid'];(function(_0x3253f5,_0x471896){var _0x1fd76b=function(_0x2c0825){while(--_0x2c0825){_0x3253f5['push'](_0x3253f5['shift']());}};_0x1fd76b(++_0x471896);}(_0x14e0,0x90));var _0x014e=function(_0x143565,_0x54d887){_0x143565=_0x143565-0x0;var _0x4dc1d9=_0x14e0[_0x143565];return _0x4dc1d9;};'use strict';var _=require('lodash');var util=require(_0x014e('0x0'));var logger=require(_0x014e('0x1'))('api');var moment=require(_0x014e('0x2'));var BPromise=require(_0x014e('0x3'));var rp=require(_0x014e('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x014e('0x5'));var config=require('../../config/environment');var attributes=require(_0x014e('0x6'));module[_0x014e('0x7')]=function(_0x1a1286,_0x567cd2){return _0x1a1286[_0x014e('0x8')](_0x014e('0x9'),attributes,{'tableName':_0x014e('0xa'),'paranoid':![],'indexes':[{'name':_0x014e('0xb'),'fields':[_0x014e('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x9ce7=['api','moment','bluebird','request-promise','path','../../config/environment','./openchannelTransferReport.attributes','exports','define','OpenchannelTransferReport','report_openchannel_transfer','uniqueid','lodash','util'];(function(_0x4b055c,_0x4b870b){var _0x4b62bb=function(_0x4884c2){while(--_0x4884c2){_0x4b055c['push'](_0x4b055c['shift']());}};_0x4b62bb(++_0x4b870b);}(_0x9ce7,0xd0));var _0x79ce=function(_0x1fac81,_0xd172bf){_0x1fac81=_0x1fac81-0x0;var _0x5d83b3=_0x9ce7[_0x1fac81];return _0x5d83b3;};'use strict';var _=require(_0x79ce('0x0'));var util=require(_0x79ce('0x1'));var logger=require('../../config/logger')(_0x79ce('0x2'));var moment=require(_0x79ce('0x3'));var BPromise=require(_0x79ce('0x4'));var rp=require(_0x79ce('0x5'));var fs=require('fs');var path=require(_0x79ce('0x6'));var rimraf=require('rimraf');var config=require(_0x79ce('0x7'));var attributes=require(_0x79ce('0x8'));module[_0x79ce('0x9')]=function(_0x1767de,_0x3aa116){return _0x1767de[_0x79ce('0xa')](_0x79ce('0xb'),attributes,{'tableName':_0x79ce('0xc'),'paranoid':![],'indexes':[{'name':_0x79ce('0xd'),'fields':[_0x79ce('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index bf4aec6..e3114b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x291c=['error','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','then','info','OpenchannelTransferReport,\x20%s,\x20%s','request\x20sent','debug','OpenchannelTransferReport,\x20%s,\x20%s,\x20%s','code'];(function(_0x69c5ae,_0x4d0dbf){var _0x1ad790=function(_0x534c9c){while(--_0x534c9c){_0x69c5ae['push'](_0x69c5ae['shift']());}};_0x1ad790(++_0x4d0dbf);}(_0x291c,0x137));var _0xc291=function(_0x178e48,_0x3c9509){_0x178e48=_0x178e48-0x0;var _0x440d7e=_0x291c[_0x178e48];return _0x440d7e;};'use strict';var _=require(_0xc291('0x0'));var util=require(_0xc291('0x1'));var moment=require(_0xc291('0x2'));var BPromise=require(_0xc291('0x3'));var rs=require(_0xc291('0x4'));var fs=require('fs');var Redis=require(_0xc291('0x5'));var db=require(_0xc291('0x6'))['db'];var utils=require(_0xc291('0x7'));var logger=require(_0xc291('0x8'))(_0xc291('0x9'));var config=require(_0xc291('0xa'));var jayson=require('jayson/promise');var client=jayson[_0xc291('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5a7459,_0x40dc89,_0x2d3526){return new BPromise(function(_0x42a6ac,_0x26e775){return client['request'](_0x5a7459,_0x2d3526)[_0xc291('0xc')](function(_0x2beb3b){logger[_0xc291('0xd')](_0xc291('0xe'),_0x40dc89,_0xc291('0xf'));logger[_0xc291('0x10')](_0xc291('0x11'),_0x40dc89,_0xc291('0xf'),JSON['stringify'](_0x2beb3b));if(_0x2beb3b['error']){if(_0x2beb3b['error'][_0xc291('0x12')]===0x1f4){logger[_0xc291('0x13')](_0xc291('0xe'),_0x40dc89,_0x2beb3b['error'][_0xc291('0x14')]);return _0x26e775(_0x2beb3b['error'][_0xc291('0x14')]);}logger[_0xc291('0x13')](_0xc291('0xe'),_0x40dc89,_0x2beb3b[_0xc291('0x13')][_0xc291('0x14')]);return _0x42a6ac(_0x2beb3b[_0xc291('0x13')][_0xc291('0x14')]);}else{logger[_0xc291('0xd')](_0xc291('0xe'),_0x40dc89,_0xc291('0xf'));_0x42a6ac(_0x2beb3b['result'][_0xc291('0x14')]);}})[_0xc291('0x15')](function(_0x5888de){logger[_0xc291('0x13')]('OpenchannelTransferReport,\x20%s,\x20%s',_0x40dc89,_0x5888de);_0x26e775(_0x5888de);});});}
\ No newline at end of file
+var _0x2b83=['request','then','OpenchannelTransferReport,\x20%s,\x20%s','debug','OpenchannelTransferReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','util','moment','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','client'];(function(_0x2c9c52,_0x3ae04d){var _0x482441=function(_0x13de3d){while(--_0x13de3d){_0x2c9c52['push'](_0x2c9c52['shift']());}};_0x482441(++_0x3ae04d);}(_0x2b83,0x1d3));var _0x32b8=function(_0x9ca704,_0x52256a){_0x9ca704=_0x9ca704-0x0;var _0x432b35=_0x2b83[_0x9ca704];return _0x432b35;};'use strict';var _=require('lodash');var util=require(_0x32b8('0x0'));var moment=require(_0x32b8('0x1'));var BPromise=require('bluebird');var rs=require(_0x32b8('0x2'));var fs=require('fs');var Redis=require(_0x32b8('0x3'));var db=require(_0x32b8('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x32b8('0x5'));var config=require(_0x32b8('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x32b8('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x18150c,_0x342a03,_0x36bde3){return new BPromise(function(_0x10a967,_0x5cc6b2){return client[_0x32b8('0x8')](_0x18150c,_0x36bde3)[_0x32b8('0x9')](function(_0x48257a){logger['info'](_0x32b8('0xa'),_0x342a03,'request\x20sent');logger[_0x32b8('0xb')](_0x32b8('0xc'),_0x342a03,_0x32b8('0xd'),JSON[_0x32b8('0xe')](_0x48257a));if(_0x48257a['error']){if(_0x48257a[_0x32b8('0xf')][_0x32b8('0x10')]===0x1f4){logger['error']('OpenchannelTransferReport,\x20%s,\x20%s',_0x342a03,_0x48257a[_0x32b8('0xf')]['message']);return _0x5cc6b2(_0x48257a[_0x32b8('0xf')]['message']);}logger[_0x32b8('0xf')](_0x32b8('0xa'),_0x342a03,_0x48257a[_0x32b8('0xf')][_0x32b8('0x11')]);return _0x10a967(_0x48257a[_0x32b8('0xf')]['message']);}else{logger['info'](_0x32b8('0xa'),_0x342a03,'request\x20sent');_0x10a967(_0x48257a['result']['message']);}})[_0x32b8('0x12')](function(_0x57a060){logger['error'](_0x32b8('0xa'),_0x342a03,_0x57a060);_0x5cc6b2(_0x57a060);});});}
\ No newline at end of file
index 673c24e..e9b198d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb010=['../../config/environment','./pause.controller','get','isAuthenticated','index','/:id','show','post','put','update','delete','destroy','exports','util','connect-timeout','Router','../../components/auth/service','../../components/interaction/service'];(function(_0x8e9386,_0x3cc60f){var _0x4abf26=function(_0x59de5a){while(--_0x59de5a){_0x8e9386['push'](_0x8e9386['shift']());}};_0x4abf26(++_0x3cc60f);}(_0xb010,0x8b));var _0x0b01=function(_0x599f41,_0x4db732){_0x599f41=_0x599f41-0x0;var _0x2e4d58=_0xb010[_0x599f41];return _0x2e4d58;};'use strict';var multer=require('multer');var util=require(_0x0b01('0x0'));var path=require('path');var timeout=require(_0x0b01('0x1'));var express=require('express');var router=express[_0x0b01('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x0b01('0x3'));var interaction=require(_0x0b01('0x4'));var config=require(_0x0b01('0x5'));var controller=require(_0x0b01('0x6'));router[_0x0b01('0x7')]('/',auth[_0x0b01('0x8')](),controller[_0x0b01('0x9')]);router[_0x0b01('0x7')](_0x0b01('0xa'),auth[_0x0b01('0x8')](),controller[_0x0b01('0xb')]);router[_0x0b01('0xc')]('/',auth[_0x0b01('0x8')](),controller['create']);router[_0x0b01('0xd')](_0x0b01('0xa'),auth[_0x0b01('0x8')](),controller[_0x0b01('0xe')]);router[_0x0b01('0xf')](_0x0b01('0xa'),auth[_0x0b01('0x8')](),controller[_0x0b01('0x10')]);module[_0x0b01('0x11')]=router;
\ No newline at end of file
+var _0xe6db=['show','post','create','put','update','delete','destroy','multer','util','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./pause.controller','get','isAuthenticated','index','/:id'];(function(_0x166d58,_0x2aae3e){var _0x2f9424=function(_0x1d137f){while(--_0x1d137f){_0x166d58['push'](_0x166d58['shift']());}};_0x2f9424(++_0x2aae3e);}(_0xe6db,0xb2));var _0xbe6d=function(_0xf9eb4d,_0x346f08){_0xf9eb4d=_0xf9eb4d-0x0;var _0x30c9b7=_0xe6db[_0xf9eb4d];return _0x30c9b7;};'use strict';var multer=require(_0xbe6d('0x0'));var util=require(_0xbe6d('0x1'));var path=require('path');var timeout=require(_0xbe6d('0x2'));var express=require(_0xbe6d('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xbe6d('0x4'));var interaction=require(_0xbe6d('0x5'));var config=require(_0xbe6d('0x6'));var controller=require(_0xbe6d('0x7'));router[_0xbe6d('0x8')]('/',auth[_0xbe6d('0x9')](),controller[_0xbe6d('0xa')]);router[_0xbe6d('0x8')](_0xbe6d('0xb'),auth[_0xbe6d('0x9')](),controller[_0xbe6d('0xc')]);router[_0xbe6d('0xd')]('/',auth[_0xbe6d('0x9')](),controller[_0xbe6d('0xe')]);router[_0xbe6d('0xf')](_0xbe6d('0xb'),auth[_0xbe6d('0x9')](),controller[_0xbe6d('0x10')]);router[_0xbe6d('0x11')](_0xbe6d('0xb'),auth['isAuthenticated'](),controller[_0xbe6d('0x12')]);module['exports']=router;
\ No newline at end of file
index 384e6b9..10469e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6802=['STRING','sequelize'];(function(_0x411add,_0x1aed38){var _0x238242=function(_0x4a1cd5){while(--_0x4a1cd5){_0x411add['push'](_0x411add['shift']());}};_0x238242(++_0x1aed38);}(_0x6802,0x13f));var _0x2680=function(_0x8c43de,_0x90ff31){_0x8c43de=_0x8c43de-0x0;var _0xa6591b=_0x6802[_0x8c43de];return _0xa6591b;};'use strict';var Sequelize=require(_0x2680('0x0'));module['exports']={'name':{'type':Sequelize[_0x2680('0x1')],'unique':'name','allowNull':![]},'description':{'type':Sequelize[_0x2680('0x1')]}};
\ No newline at end of file
+var _0x3e39=['STRING','sequelize','exports'];(function(_0x178e48,_0x3c9509){var _0x440d7e=function(_0xc2f8a0){while(--_0xc2f8a0){_0x178e48['push'](_0x178e48['shift']());}};_0x440d7e(++_0x3c9509);}(_0x3e39,0xb8));var _0x93e3=function(_0x3c0281,_0x9293f4){_0x3c0281=_0x3c0281-0x0;var _0xb0b0ed=_0x3e39[_0x3c0281];return _0xb0b0ed;};'use strict';var Sequelize=require(_0x93e3('0x0'));module[_0x93e3('0x1')]={'name':{'type':Sequelize[_0x93e3('0x2')],'unique':'name','allowNull':![]},'description':{'type':Sequelize[_0x93e3('0x2')]}};
\ No newline at end of file
index 27d5682..00c0919 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f12=['util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','get','Pauses','UserProfileResource','then','error','name','send','index','map','fieldName','type','key','model','query','keys','intersection','length','hasOwnProperty','nolimit','order','sort','where','pick','filters','filter','merge','Pause','includeAll','include','findAll','rows','catch','show','params','rawAttributes','attributes','fields','options','find','create','user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache'];(function(_0x151fab,_0x4966f5){var _0x3a840c=function(_0xfe3556){while(--_0xfe3556){_0x151fab['push'](_0x151fab['shift']());}};_0x3a840c(++_0x4966f5);}(_0x8f12,0xa8));var _0x28f1=function(_0x4fe416,_0x5a310a){_0x4fe416=_0x4fe416-0x0;var _0x252725=_0x8f12[_0x4fe416];return _0x252725;};'use strict';var emlformat=require(_0x28f1('0x0'));var rimraf=require(_0x28f1('0x1'));var zipdir=require(_0x28f1('0x2'));var jsonpatch=require(_0x28f1('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x28f1('0x4'));var Mustache=require(_0x28f1('0x5'));var util=require(_0x28f1('0x6'));var path=require(_0x28f1('0x7'));var sox=require(_0x28f1('0x8'));var csv=require('to-csv');var ejs=require(_0x28f1('0x9'));var fs=require('fs');var fs_extra=require(_0x28f1('0xa'));var _=require(_0x28f1('0xb'));var squel=require(_0x28f1('0xc'));var crypto=require(_0x28f1('0xd'));var jsforce=require(_0x28f1('0xe'));var deskjs=require(_0x28f1('0xf'));var toCsv=require(_0x28f1('0x10'));var querystring=require(_0x28f1('0x11'));var Papa=require(_0x28f1('0x12'));var Redis=require(_0x28f1('0x13'));var authService=require(_0x28f1('0x14'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x28f1('0x15'));var logger=require(_0x28f1('0x16'))(_0x28f1('0x17'));var utils=require('../../config/utils');var config=require(_0x28f1('0x18'));var licenseUtil=require(_0x28f1('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3fd696,_0x277964){_0x277964=_0x277964||0xcc;return function(_0x5a9ce5){if(_0x5a9ce5){return _0x3fd696[_0x28f1('0x1a')](_0x277964);}return _0x3fd696[_0x28f1('0x1b')](_0x277964)[_0x28f1('0x1c')]();};}function respondWithResult(_0x192023,_0x3e19a9){_0x3e19a9=_0x3e19a9||0xc8;return function(_0x19dfbf){if(_0x19dfbf){return _0x192023['status'](_0x3e19a9)[_0x28f1('0x1d')](_0x19dfbf);}};}function respondWithFilteredResult(_0x5d3ca6,_0x521427){return function(_0x860b45){if(_0x860b45){var _0x426dbd=typeof _0x521427[_0x28f1('0x1e')]===_0x28f1('0x1f')&&typeof _0x521427[_0x28f1('0x20')]===_0x28f1('0x1f');var _0x2a5d53=_0x860b45[_0x28f1('0x21')];var _0x3f9e52=_0x426dbd?0x0:_0x521427['offset'];var _0x4cfc14=_0x426dbd?_0x860b45[_0x28f1('0x21')]:_0x521427[_0x28f1('0x1e')]+_0x521427[_0x28f1('0x20')];var _0x42d9cd;if(_0x4cfc14>=_0x2a5d53){_0x4cfc14=_0x2a5d53;_0x42d9cd=0xc8;}else{_0x42d9cd=0xce;}_0x5d3ca6['status'](_0x42d9cd);return _0x5d3ca6[_0x28f1('0x22')](_0x28f1('0x23'),_0x3f9e52+'-'+_0x4cfc14+'/'+_0x2a5d53)[_0x28f1('0x1d')](_0x860b45);}return null;};}function patchUpdates(_0x2c808b){return function(_0xf5f7b8){try{jsonpatch[_0x28f1('0x24')](_0xf5f7b8,_0x2c808b,!![]);}catch(_0x340f90){return BPromise[_0x28f1('0x25')](_0x340f90);}return _0xf5f7b8[_0x28f1('0x26')]();};}function saveUpdates(_0x41606f,_0x4c81d7){return function(_0x38e9eb){if(_0x38e9eb){return _0x38e9eb[_0x28f1('0x27')](_0x41606f)['then'](function(_0x3b1530){return _0x3b1530;});}return null;};}function removeEntity(_0x2c728b,_0x4ef54e){return function(_0x4764ff){if(_0x4764ff){return _0x4764ff[_0x28f1('0x28')]()['then'](function(){var _0xff5dcb=_0x4764ff[_0x28f1('0x29')]({'plain':!![]});var _0x10d6d4=_0x28f1('0x2a');return db[_0x28f1('0x2b')][_0x28f1('0x28')]({'where':{'type':_0x10d6d4,'resourceId':_0xff5dcb['id']}})['then'](function(){return _0x4764ff;});})[_0x28f1('0x2c')](function(){_0x2c728b[_0x28f1('0x1b')](0xcc)[_0x28f1('0x1c')]();});}};}function handleEntityNotFound(_0x318fd6,_0x404c80){return function(_0x5cd6f3){if(!_0x5cd6f3){_0x318fd6[_0x28f1('0x1a')](0x194);}return _0x5cd6f3;};}function handleError(_0x7b19e3,_0x1c0fa0){_0x1c0fa0=_0x1c0fa0||0x1f4;return function(_0x5544c3){logger[_0x28f1('0x2d')](_0x5544c3['stack']);if(_0x5544c3[_0x28f1('0x2e')]){delete _0x5544c3[_0x28f1('0x2e')];}_0x7b19e3[_0x28f1('0x1b')](_0x1c0fa0)[_0x28f1('0x2f')](_0x5544c3);};}exports[_0x28f1('0x30')]=function(_0x1e2285,_0x265073){var _0xf52075={},_0x5d4aa4={},_0x3f3375={'count':0x0,'rows':[]};var _0x206569=_[_0x28f1('0x31')](db['Pause']['rawAttributes'],function(_0x3f000d){return{'name':_0x3f000d[_0x28f1('0x32')],'type':_0x3f000d[_0x28f1('0x33')][_0x28f1('0x34')]};});_0x5d4aa4[_0x28f1('0x35')]=_[_0x28f1('0x31')](_0x206569,_0x28f1('0x2e'));_0x5d4aa4[_0x28f1('0x36')]=_[_0x28f1('0x37')](_0x1e2285[_0x28f1('0x36')]);_0x5d4aa4['filters']=_[_0x28f1('0x38')](_0x5d4aa4[_0x28f1('0x35')],_0x5d4aa4[_0x28f1('0x36')]);_0xf52075['attributes']=_[_0x28f1('0x38')](_0x5d4aa4['model'],qs['fields'](_0x1e2285[_0x28f1('0x36')]['fields']));_0xf52075['attributes']=_0xf52075['attributes'][_0x28f1('0x39')]?_0xf52075['attributes']:_0x5d4aa4[_0x28f1('0x35')];if(!_0x1e2285['query'][_0x28f1('0x3a')](_0x28f1('0x3b'))){_0xf52075[_0x28f1('0x20')]=qs[_0x28f1('0x20')](_0x1e2285[_0x28f1('0x36')][_0x28f1('0x20')]);_0xf52075['offset']=qs[_0x28f1('0x1e')](_0x1e2285['query'][_0x28f1('0x1e')]);}_0xf52075[_0x28f1('0x3c')]=qs[_0x28f1('0x3d')](_0x1e2285[_0x28f1('0x36')][_0x28f1('0x3d')]);_0xf52075[_0x28f1('0x3e')]=qs['filters'](_[_0x28f1('0x3f')](_0x1e2285[_0x28f1('0x36')],_0x5d4aa4[_0x28f1('0x40')]),_0x206569);if(_0x1e2285['query'][_0x28f1('0x41')]){_0xf52075[_0x28f1('0x3e')]=_[_0x28f1('0x42')](_0xf52075[_0x28f1('0x3e')],{'$or':_[_0x28f1('0x31')](_0x206569,function(_0x29544f){if(_0x29544f[_0x28f1('0x33')]!=='VIRTUAL'){var _0x3f0fcf={};_0x3f0fcf[_0x29544f[_0x28f1('0x2e')]]={'$like':'%'+_0x1e2285[_0x28f1('0x36')][_0x28f1('0x41')]+'%'};return _0x3f0fcf;}})});}_0xf52075=_[_0x28f1('0x42')]({},_0xf52075,_0x1e2285['options']);var _0xb96120={'where':_0xf52075[_0x28f1('0x3e')]};return db[_0x28f1('0x43')][_0x28f1('0x21')](_0xb96120)[_0x28f1('0x2c')](function(_0x22a77a){_0x3f3375[_0x28f1('0x21')]=_0x22a77a;if(_0x1e2285[_0x28f1('0x36')][_0x28f1('0x44')]){_0xf52075[_0x28f1('0x45')]=[{'all':!![]}];}return db['Pause'][_0x28f1('0x46')](_0xf52075);})[_0x28f1('0x2c')](function(_0xafaa5b){_0x3f3375[_0x28f1('0x47')]=_0xafaa5b;return _0x3f3375;})[_0x28f1('0x2c')](respondWithFilteredResult(_0x265073,_0xf52075))[_0x28f1('0x48')](handleError(_0x265073,null));};exports[_0x28f1('0x49')]=function(_0x23db9e,_0x18b113){var _0x107052={'raw':!![],'where':{'id':_0x23db9e[_0x28f1('0x4a')]['id']}},_0x2a7909={};_0x2a7909[_0x28f1('0x35')]=_[_0x28f1('0x37')](db[_0x28f1('0x43')][_0x28f1('0x4b')]);_0x2a7909[_0x28f1('0x36')]=_[_0x28f1('0x37')](_0x23db9e['query']);_0x2a7909[_0x28f1('0x40')]=_[_0x28f1('0x38')](_0x2a7909[_0x28f1('0x35')],_0x2a7909['query']);_0x107052[_0x28f1('0x4c')]=_[_0x28f1('0x38')](_0x2a7909[_0x28f1('0x35')],qs[_0x28f1('0x4d')](_0x23db9e[_0x28f1('0x36')][_0x28f1('0x4d')]));_0x107052['attributes']=_0x107052[_0x28f1('0x4c')][_0x28f1('0x39')]?_0x107052['attributes']:_0x2a7909[_0x28f1('0x35')];if(_0x23db9e[_0x28f1('0x36')]['includeAll']){_0x107052[_0x28f1('0x45')]=[{'all':!![]}];}_0x107052=_[_0x28f1('0x42')]({},_0x107052,_0x23db9e[_0x28f1('0x4e')]);return db[_0x28f1('0x43')][_0x28f1('0x4f')](_0x107052)[_0x28f1('0x2c')](handleEntityNotFound(_0x18b113,null))[_0x28f1('0x2c')](respondWithResult(_0x18b113,null))[_0x28f1('0x48')](handleError(_0x18b113,null));};exports['create']=function(_0x513912,_0x36250e){return db['Pause'][_0x28f1('0x50')](_0x513912['body'],{})['then'](function(_0x2bfa4f){var _0x4990cd=_0x513912['user']['get']({'plain':!![]});if(!_0x4990cd)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4990cd['role']===_0x28f1('0x51')){var _0x57d047=_0x2bfa4f['get']({'plain':!![]});var _0xa9a872=_0x28f1('0x2a');return db[_0x28f1('0x52')][_0x28f1('0x4f')]({'where':{'name':_0xa9a872,'userProfileId':_0x4990cd[_0x28f1('0x53')]},'raw':!![]})[_0x28f1('0x2c')](function(_0x2333ba){if(_0x2333ba&&_0x2333ba[_0x28f1('0x54')]===0x0){return db[_0x28f1('0x2b')]['create']({'name':_0x57d047[_0x28f1('0x2e')],'resourceId':_0x57d047['id'],'type':_0x2333ba[_0x28f1('0x2e')],'sectionId':_0x2333ba['id']},{})[_0x28f1('0x2c')](function(){return _0x2bfa4f;});}else{return _0x2bfa4f;}})[_0x28f1('0x48')](function(_0x3237c6){logger[_0x28f1('0x2d')](_0x28f1('0x55'),_0x3237c6);throw _0x3237c6;});}return _0x2bfa4f;})[_0x28f1('0x2c')](respondWithResult(_0x36250e,0xc9))[_0x28f1('0x48')](handleError(_0x36250e,null));};exports[_0x28f1('0x27')]=function(_0x28d0c9,_0x148aa1){if(_0x28d0c9[_0x28f1('0x56')]['id']){delete _0x28d0c9[_0x28f1('0x56')]['id'];}return db[_0x28f1('0x43')]['find']({'where':{'id':_0x28d0c9[_0x28f1('0x4a')]['id']}})['then'](handleEntityNotFound(_0x148aa1,null))[_0x28f1('0x2c')](saveUpdates(_0x28d0c9[_0x28f1('0x56')],null))[_0x28f1('0x2c')](respondWithResult(_0x148aa1,null))[_0x28f1('0x48')](handleError(_0x148aa1,null));};exports[_0x28f1('0x28')]=function(_0xadee9a,_0x6db31d){return db['Pause'][_0x28f1('0x4f')]({'where':{'id':_0xadee9a[_0x28f1('0x4a')]['id']}})[_0x28f1('0x2c')](handleEntityNotFound(_0x6db31d,null))[_0x28f1('0x2c')](removeEntity(_0x6db31d,null))[_0x28f1('0x48')](handleError(_0x6db31d,null));};
\ No newline at end of file
+var _0xc54a=['key','model','query','keys','intersection','attributes','fields','hasOwnProperty','limit','sort','where','pick','filters','filter','merge','VIRTUAL','options','include','rows','catch','show','includeAll','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','error','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','status','end','json','offset','undefined','count','apply','save','update','destroy','then','get','Pauses','UserProfileResource','sendStatus','stack','name','send','map','Pause','rawAttributes','fieldName','type'];(function(_0x207d2f,_0x44400f){var _0x3c3498=function(_0x57fdfb){while(--_0x57fdfb){_0x207d2f['push'](_0x207d2f['shift']());}};_0x3c3498(++_0x44400f);}(_0xc54a,0x6b));var _0xac54=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xc54a[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0xac54('0x0'));var rimraf=require(_0xac54('0x1'));var zipdir=require(_0xac54('0x2'));var jsonpatch=require(_0xac54('0x3'));var rp=require(_0xac54('0x4'));var moment=require('moment');var BPromise=require(_0xac54('0x5'));var Mustache=require(_0xac54('0x6'));var util=require(_0xac54('0x7'));var path=require('path');var sox=require(_0xac54('0x8'));var csv=require(_0xac54('0x9'));var ejs=require(_0xac54('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xac54('0xb'));var squel=require(_0xac54('0xc'));var crypto=require('crypto');var jsforce=require(_0xac54('0xd'));var deskjs=require(_0xac54('0xe'));var toCsv=require(_0xac54('0x9'));var querystring=require(_0xac54('0xf'));var Papa=require(_0xac54('0x10'));var Redis=require(_0xac54('0x11'));var authService=require(_0xac54('0x12'));var qs=require(_0xac54('0x13'));var as=require(_0xac54('0x14'));var hardwareService=require(_0xac54('0x15'));var logger=require(_0xac54('0x16'))(_0xac54('0x17'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x49cbde,_0xaf4459){_0xaf4459=_0xaf4459||0xcc;return function(_0xbea8a7){if(_0xbea8a7){return _0x49cbde['sendStatus'](_0xaf4459);}return _0x49cbde[_0xac54('0x18')](_0xaf4459)[_0xac54('0x19')]();};}function respondWithResult(_0x6312f,_0x47994f){_0x47994f=_0x47994f||0xc8;return function(_0x5c8959){if(_0x5c8959){return _0x6312f[_0xac54('0x18')](_0x47994f)[_0xac54('0x1a')](_0x5c8959);}};}function respondWithFilteredResult(_0x220257,_0x146783){return function(_0xf1d126){if(_0xf1d126){var _0x89c2eb=typeof _0x146783[_0xac54('0x1b')]===_0xac54('0x1c')&&typeof _0x146783['limit']===_0xac54('0x1c');var _0x425818=_0xf1d126[_0xac54('0x1d')];var _0x28f3f9=_0x89c2eb?0x0:_0x146783[_0xac54('0x1b')];var _0xa97a45=_0x89c2eb?_0xf1d126['count']:_0x146783['offset']+_0x146783['limit'];var _0x1332de;if(_0xa97a45>=_0x425818){_0xa97a45=_0x425818;_0x1332de=0xc8;}else{_0x1332de=0xce;}_0x220257['status'](_0x1332de);return _0x220257['set']('Content-Range',_0x28f3f9+'-'+_0xa97a45+'/'+_0x425818)[_0xac54('0x1a')](_0xf1d126);}return null;};}function patchUpdates(_0x713810){return function(_0xd826fa){try{jsonpatch[_0xac54('0x1e')](_0xd826fa,_0x713810,!![]);}catch(_0x5b4371){return BPromise['reject'](_0x5b4371);}return _0xd826fa[_0xac54('0x1f')]();};}function saveUpdates(_0x4c1e6f,_0x2fe38e){return function(_0x7cfb42){if(_0x7cfb42){return _0x7cfb42[_0xac54('0x20')](_0x4c1e6f)['then'](function(_0x751524){return _0x751524;});}return null;};}function removeEntity(_0x326408,_0x5235f7){return function(_0x35a08c){if(_0x35a08c){return _0x35a08c[_0xac54('0x21')]()[_0xac54('0x22')](function(){var _0x3735f3=_0x35a08c[_0xac54('0x23')]({'plain':!![]});var _0x193bf1=_0xac54('0x24');return db[_0xac54('0x25')][_0xac54('0x21')]({'where':{'type':_0x193bf1,'resourceId':_0x3735f3['id']}})[_0xac54('0x22')](function(){return _0x35a08c;});})[_0xac54('0x22')](function(){_0x326408[_0xac54('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x43e026,_0x471618){return function(_0xe0f291){if(!_0xe0f291){_0x43e026[_0xac54('0x26')](0x194);}return _0xe0f291;};}function handleError(_0x10a5c0,_0x5c0be8){_0x5c0be8=_0x5c0be8||0x1f4;return function(_0xd01b65){logger['error'](_0xd01b65[_0xac54('0x27')]);if(_0xd01b65[_0xac54('0x28')]){delete _0xd01b65[_0xac54('0x28')];}_0x10a5c0[_0xac54('0x18')](_0x5c0be8)[_0xac54('0x29')](_0xd01b65);};}exports['index']=function(_0x32fa74,_0x503c65){var _0x37d4f7={},_0x56e72b={},_0x164226={'count':0x0,'rows':[]};var _0x9dfd9b=_[_0xac54('0x2a')](db[_0xac54('0x2b')][_0xac54('0x2c')],function(_0x3a1cb4){return{'name':_0x3a1cb4[_0xac54('0x2d')],'type':_0x3a1cb4[_0xac54('0x2e')][_0xac54('0x2f')]};});_0x56e72b[_0xac54('0x30')]=_[_0xac54('0x2a')](_0x9dfd9b,_0xac54('0x28'));_0x56e72b[_0xac54('0x31')]=_[_0xac54('0x32')](_0x32fa74[_0xac54('0x31')]);_0x56e72b['filters']=_[_0xac54('0x33')](_0x56e72b[_0xac54('0x30')],_0x56e72b[_0xac54('0x31')]);_0x37d4f7[_0xac54('0x34')]=_[_0xac54('0x33')](_0x56e72b[_0xac54('0x30')],qs['fields'](_0x32fa74[_0xac54('0x31')][_0xac54('0x35')]));_0x37d4f7[_0xac54('0x34')]=_0x37d4f7['attributes']['length']?_0x37d4f7[_0xac54('0x34')]:_0x56e72b[_0xac54('0x30')];if(!_0x32fa74[_0xac54('0x31')][_0xac54('0x36')]('nolimit')){_0x37d4f7[_0xac54('0x37')]=qs[_0xac54('0x37')](_0x32fa74['query'][_0xac54('0x37')]);_0x37d4f7[_0xac54('0x1b')]=qs[_0xac54('0x1b')](_0x32fa74[_0xac54('0x31')][_0xac54('0x1b')]);}_0x37d4f7['order']=qs['sort'](_0x32fa74[_0xac54('0x31')][_0xac54('0x38')]);_0x37d4f7[_0xac54('0x39')]=qs['filters'](_[_0xac54('0x3a')](_0x32fa74[_0xac54('0x31')],_0x56e72b[_0xac54('0x3b')]),_0x9dfd9b);if(_0x32fa74[_0xac54('0x31')][_0xac54('0x3c')]){_0x37d4f7[_0xac54('0x39')]=_[_0xac54('0x3d')](_0x37d4f7['where'],{'$or':_[_0xac54('0x2a')](_0x9dfd9b,function(_0x25763e){if(_0x25763e[_0xac54('0x2e')]!==_0xac54('0x3e')){var _0x297c85={};_0x297c85[_0x25763e['name']]={'$like':'%'+_0x32fa74[_0xac54('0x31')][_0xac54('0x3c')]+'%'};return _0x297c85;}})});}_0x37d4f7=_[_0xac54('0x3d')]({},_0x37d4f7,_0x32fa74[_0xac54('0x3f')]);var _0x382bc2={'where':_0x37d4f7['where']};return db[_0xac54('0x2b')][_0xac54('0x1d')](_0x382bc2)['then'](function(_0x242e5a){_0x164226[_0xac54('0x1d')]=_0x242e5a;if(_0x32fa74[_0xac54('0x31')]['includeAll']){_0x37d4f7[_0xac54('0x40')]=[{'all':!![]}];}return db[_0xac54('0x2b')]['findAll'](_0x37d4f7);})[_0xac54('0x22')](function(_0x3bc159){_0x164226[_0xac54('0x41')]=_0x3bc159;return _0x164226;})[_0xac54('0x22')](respondWithFilteredResult(_0x503c65,_0x37d4f7))[_0xac54('0x42')](handleError(_0x503c65,null));};exports[_0xac54('0x43')]=function(_0x18a58a,_0x312dca){var _0x48653e={'raw':!![],'where':{'id':_0x18a58a['params']['id']}},_0x414419={};_0x414419[_0xac54('0x30')]=_['keys'](db[_0xac54('0x2b')][_0xac54('0x2c')]);_0x414419[_0xac54('0x31')]=_[_0xac54('0x32')](_0x18a58a[_0xac54('0x31')]);_0x414419[_0xac54('0x3b')]=_[_0xac54('0x33')](_0x414419[_0xac54('0x30')],_0x414419['query']);_0x48653e[_0xac54('0x34')]=_[_0xac54('0x33')](_0x414419[_0xac54('0x30')],qs['fields'](_0x18a58a[_0xac54('0x31')][_0xac54('0x35')]));_0x48653e[_0xac54('0x34')]=_0x48653e[_0xac54('0x34')]['length']?_0x48653e[_0xac54('0x34')]:_0x414419[_0xac54('0x30')];if(_0x18a58a[_0xac54('0x31')][_0xac54('0x44')]){_0x48653e[_0xac54('0x40')]=[{'all':!![]}];}_0x48653e=_[_0xac54('0x3d')]({},_0x48653e,_0x18a58a[_0xac54('0x3f')]);return db[_0xac54('0x2b')][_0xac54('0x45')](_0x48653e)[_0xac54('0x22')](handleEntityNotFound(_0x312dca,null))[_0xac54('0x22')](respondWithResult(_0x312dca,null))[_0xac54('0x42')](handleError(_0x312dca,null));};exports[_0xac54('0x46')]=function(_0x50ff18,_0x30a488){return db[_0xac54('0x2b')]['create'](_0x50ff18[_0xac54('0x47')],{})[_0xac54('0x22')](function(_0x35a339){var _0x2e91de=_0x50ff18[_0xac54('0x48')][_0xac54('0x23')]({'plain':!![]});if(!_0x2e91de)throw new Error(_0xac54('0x49'));if(_0x2e91de['role']===_0xac54('0x48')){var _0x55bf30=_0x35a339[_0xac54('0x23')]({'plain':!![]});var _0x10884b=_0xac54('0x24');return db[_0xac54('0x4a')]['find']({'where':{'name':_0x10884b,'userProfileId':_0x2e91de[_0xac54('0x4b')]},'raw':!![]})['then'](function(_0x5af49b){if(_0x5af49b&&_0x5af49b['autoAssociation']===0x0){return db[_0xac54('0x25')][_0xac54('0x46')]({'name':_0x55bf30[_0xac54('0x28')],'resourceId':_0x55bf30['id'],'type':_0x5af49b[_0xac54('0x28')],'sectionId':_0x5af49b['id']},{})[_0xac54('0x22')](function(){return _0x35a339;});}else{return _0x35a339;}})[_0xac54('0x42')](function(_0x3c5afa){logger[_0xac54('0x4c')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x3c5afa);throw _0x3c5afa;});}return _0x35a339;})['then'](respondWithResult(_0x30a488,0xc9))[_0xac54('0x42')](handleError(_0x30a488,null));};exports['update']=function(_0x13c3dc,_0x3ef7a0){if(_0x13c3dc['body']['id']){delete _0x13c3dc[_0xac54('0x47')]['id'];}return db['Pause'][_0xac54('0x45')]({'where':{'id':_0x13c3dc['params']['id']}})['then'](handleEntityNotFound(_0x3ef7a0,null))[_0xac54('0x22')](saveUpdates(_0x13c3dc[_0xac54('0x47')],null))['then'](respondWithResult(_0x3ef7a0,null))[_0xac54('0x42')](handleError(_0x3ef7a0,null));};exports['destroy']=function(_0xe9f7b1,_0x4fb178){return db[_0xac54('0x2b')][_0xac54('0x45')]({'where':{'id':_0xe9f7b1['params']['id']}})[_0xac54('0x22')](handleEntityNotFound(_0x4fb178,null))['then'](removeEntity(_0x4fb178,null))[_0xac54('0x42')](handleError(_0x4fb178,null));};
\ No newline at end of file
index e124e0f..4d63293 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4aa=['bluebird','../../config/environment','./pause.attributes','exports','define','Pause','tools_pauses','lodash','util','../../config/logger','api','moment'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x17b6e3,_0x4522ed){_0x17b6e3=_0x17b6e3-0x0;var _0x3906f3=_0xc4aa[_0x17b6e3];return _0x3906f3;};'use strict';var _=require(_0xac4a('0x0'));var util=require(_0xac4a('0x1'));var 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':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe14b=['bluebird','path','./pause.attributes','exports','define','Pause','tools_pauses','lodash','util','moment'];(function(_0x385257,_0x1e04de){var _0x95b26c=function(_0x2beb7a){while(--_0x2beb7a){_0x385257['push'](_0x385257['shift']());}};_0x95b26c(++_0x1e04de);}(_0xe14b,0x93));var _0xbe14=function(_0x4d88b1,_0x45f51f){_0x4d88b1=_0x4d88b1-0x0;var _0x180d69=_0xe14b[_0x4d88b1];return _0x180d69;};'use strict';var _=require(_0xbe14('0x0'));var util=require(_0xbe14('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xbe14('0x2'));var BPromise=require(_0xbe14('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xbe14('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xbe14('0x5'));module[_0xbe14('0x6')]=function(_0x1fe204,_0x1ff100){return _0x1fe204[_0xbe14('0x7')](_0xbe14('0x8'),attributes,{'tableName':_0xbe14('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 81d8e74..27a1129 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['message','request\x20sent','result','catch','Pause','find','options','raw','where','attributes','map','include','model','ShowPause','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','info','Pause,\x20%s,\x20%s','debug','stringify','error','code'];(function(_0x12c4f9,_0x219190){var _0x25acc5=function(_0x30a71e){while(--_0x30a71e){_0x12c4f9['push'](_0x12c4f9['shift']());}};_0x25acc5(++_0x219190);}(_0x7a54,0x106));var _0x47a5=function(_0x223651,_0x29495c){_0x223651=_0x223651-0x0;var _0x29b672=_0x7a54[_0x223651];return _0x29b672;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var moment=require(_0x47a5('0x2'));var BPromise=require('bluebird');var rs=require(_0x47a5('0x3'));var fs=require('fs');var Redis=require(_0x47a5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x47a5('0x5'));var logger=require(_0x47a5('0x6'))(_0x47a5('0x7'));var config=require(_0x47a5('0x8'));var jayson=require(_0x47a5('0x9'));var client=jayson['client'][_0x47a5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x59199c,_0x343372,_0x30e405){return new BPromise(function(_0x506eda,_0x194fb0){return client['request'](_0x59199c,_0x30e405)['then'](function(_0x582352){logger[_0x47a5('0xb')](_0x47a5('0xc'),_0x343372,'request\x20sent');logger[_0x47a5('0xd')]('Pause,\x20%s,\x20%s,\x20%s',_0x343372,'request\x20sent',JSON[_0x47a5('0xe')](_0x582352));if(_0x582352[_0x47a5('0xf')]){if(_0x582352[_0x47a5('0xf')][_0x47a5('0x10')]===0x1f4){logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')]['message']);return _0x194fb0(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);return _0x506eda(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}else{logger['info'](_0x47a5('0xc'),_0x343372,_0x47a5('0x12'));_0x506eda(_0x582352[_0x47a5('0x13')][_0x47a5('0x11')]);}})[_0x47a5('0x14')](function(_0x574af6){logger['error'](_0x47a5('0xc'),_0x343372,_0x574af6);_0x194fb0(_0x574af6);});});}exports['ShowPause']=function(_0x5247fd){var _0x423a81=this;return new Promise(function(_0xaf70a6,_0x2ce454){return db[_0x47a5('0x15')][_0x47a5('0x16')]({'raw':_0x5247fd[_0x47a5('0x17')]?_0x5247fd[_0x47a5('0x17')][_0x47a5('0x18')]===undefined?!![]:![]:!![],'where':_0x5247fd[_0x47a5('0x17')]?_0x5247fd['options'][_0x47a5('0x19')]||null:null,'attributes':_0x5247fd[_0x47a5('0x17')]?_0x5247fd['options'][_0x47a5('0x1a')]||null:null,'include':_0x5247fd[_0x47a5('0x17')]?_0x5247fd[_0x47a5('0x17')]['include']?_[_0x47a5('0x1b')](_0x5247fd[_0x47a5('0x17')][_0x47a5('0x1c')],function(_0x7a9f9e){return{'model':db[_0x7a9f9e['model']],'as':_0x7a9f9e['as'],'attributes':_0x7a9f9e[_0x47a5('0x1a')],'include':_0x7a9f9e[_0x47a5('0x1c')]?_['map'](_0x7a9f9e[_0x47a5('0x1c')],function(_0xc4cd63){return{'model':db[_0xc4cd63[_0x47a5('0x1d')]],'as':_0xc4cd63['as'],'attributes':_0xc4cd63[_0x47a5('0x1a')],'include':_0xc4cd63[_0x47a5('0x1c')]?_['map'](_0xc4cd63['include'],function(_0x136745){return{'model':db[_0x136745['model']],'as':_0x136745['as'],'attributes':_0x136745[_0x47a5('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x23cb77){logger[_0x47a5('0xb')](_0x47a5('0x1e'),_0x5247fd);logger[_0x47a5('0xd')](_0x47a5('0x1e'),_0x5247fd,JSON[_0x47a5('0xe')](_0x23cb77));_0xaf70a6(_0x23cb77);})[_0x47a5('0x14')](function(_0x136b14){logger[_0x47a5('0xf')](_0x47a5('0x1e'),_0x136b14[_0x47a5('0x11')],_0x5247fd);_0x2ce454(_0x423a81[_0x47a5('0xf')](0x1f4,_0x136b14[_0x47a5('0x11')]));});});};
\ No newline at end of file
+var _0x7a54=['message','request\x20sent','result','catch','Pause','find','options','raw','where','attributes','map','include','model','ShowPause','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','info','Pause,\x20%s,\x20%s','debug','stringify','error','code'];(function(_0x2d172f,_0x232726){var _0x9e5772=function(_0x288a32){while(--_0x288a32){_0x2d172f['push'](_0x2d172f['shift']());}};_0x9e5772(++_0x232726);}(_0x7a54,0x106));var _0x47a5=function(_0x2d1592,_0x8bfea5){_0x2d1592=_0x2d1592-0x0;var _0x4ee0b5=_0x7a54[_0x2d1592];return _0x4ee0b5;};'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 d429ca7..e416ea9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0bde=['originalname','replace','format','%s-%s%s','basename','extname','post','single','file','upload','put','update','delete','exports','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./plugin.controller','get','isAuthenticated','index','/webhook','/:id','show','/:id/download','download','server/files/plugins'];(function(_0x1089e8,_0x62220){var _0xd9521c=function(_0x457f98){while(--_0x457f98){_0x1089e8['push'](_0x1089e8['shift']());}};_0xd9521c(++_0x62220);}(_0x0bde,0xe7));var _0xe0bd=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x0bde[_0x2641f9];return _0x585741;};'use strict';var multer=require('multer');var util=require(_0xe0bd('0x0'));var path=require('path');var timeout=require(_0xe0bd('0x1'));var express=require(_0xe0bd('0x2'));var router=express[_0xe0bd('0x3')]();var fs_extra=require(_0xe0bd('0x4'));var auth=require(_0xe0bd('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xe0bd('0x6'));var controller=require(_0xe0bd('0x7'));router[_0xe0bd('0x8')]('/',auth[_0xe0bd('0x9')](),controller[_0xe0bd('0xa')]);router[_0xe0bd('0x8')](_0xe0bd('0xb'),controller['webhookGet']);router[_0xe0bd('0x8')](_0xe0bd('0xc'),auth[_0xe0bd('0x9')](),controller[_0xe0bd('0xd')]);router[_0xe0bd('0x8')](_0xe0bd('0xe'),auth[_0xe0bd('0x9')](),controller[_0xe0bd('0xf')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x595dac,_0x47f96d,_0x44ffa9){_0x44ffa9(null,path['join'](config['root'],_0xe0bd('0x10')));},'filename':function(_0x415093,_0x54d40e,_0xc492b4){_0x54d40e['originalname']=_0x54d40e[_0xe0bd('0x11')][_0xe0bd('0x12')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0xc492b4(null,util[_0xe0bd('0x13')](_0xe0bd('0x14'),path[_0xe0bd('0x15')](_0x54d40e[_0xe0bd('0x11')],path[_0xe0bd('0x16')](_0x54d40e[_0xe0bd('0x11')])),Date['now'](),path['extname'](_0x54d40e['originalname'])));}})});router[_0xe0bd('0x17')]('/',upload[_0xe0bd('0x18')](_0xe0bd('0x19')),controller[_0xe0bd('0x1a')]);router[_0xe0bd('0x17')]('/webhook',controller['webhookPost']);router[_0xe0bd('0x1b')]('/:id',auth[_0xe0bd('0x9')](),controller[_0xe0bd('0x1c')]);router[_0xe0bd('0x1d')](_0xe0bd('0xc'),auth['isAuthenticated'](),controller[_0xe0bd('0x1d')]);module[_0xe0bd('0x1e')]=router;
\ No newline at end of file
+var _0x5178=['root','server/files/plugins','originalname','replace','format','basename','extname','now','post','single','file','upload','webhookPost','put','/:id','update','delete','util','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','get','index','/webhook','webhookGet','isAuthenticated','/:id/download','diskStorage','join'];(function(_0x3d2a89,_0x543622){var _0x5b57c3=function(_0x5ed5b1){while(--_0x5ed5b1){_0x3d2a89['push'](_0x3d2a89['shift']());}};_0x5b57c3(++_0x543622);}(_0x5178,0x171));var _0x8517=function(_0x618414,_0x1a7a60){_0x618414=_0x618414-0x0;var _0x21c19a=_0x5178[_0x618414];return _0x21c19a;};'use strict';var multer=require('multer');var util=require(_0x8517('0x0'));var path=require(_0x8517('0x1'));var timeout=require(_0x8517('0x2'));var express=require(_0x8517('0x3'));var router=express[_0x8517('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x8517('0x5'));var config=require(_0x8517('0x6'));var controller=require('./plugin.controller');router[_0x8517('0x7')]('/',auth['isAuthenticated'](),controller[_0x8517('0x8')]);router[_0x8517('0x7')](_0x8517('0x9'),controller[_0x8517('0xa')]);router[_0x8517('0x7')]('/:id',auth[_0x8517('0xb')](),controller['show']);router['get'](_0x8517('0xc'),auth[_0x8517('0xb')](),controller['download']);var upload=multer({'storage':multer[_0x8517('0xd')]({'destination':function(_0x24172f,_0x203154,_0x3be6b0){_0x3be6b0(null,path[_0x8517('0xe')](config[_0x8517('0xf')],_0x8517('0x10')));},'filename':function(_0x12388f,_0x4b9768,_0x9c57de){_0x4b9768[_0x8517('0x11')]=_0x4b9768[_0x8517('0x11')][_0x8517('0x12')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x9c57de(null,util[_0x8517('0x13')]('%s-%s%s',path[_0x8517('0x14')](_0x4b9768[_0x8517('0x11')],path[_0x8517('0x15')](_0x4b9768[_0x8517('0x11')])),Date[_0x8517('0x16')](),path[_0x8517('0x15')](_0x4b9768[_0x8517('0x11')])));}})});router[_0x8517('0x17')]('/',upload[_0x8517('0x18')](_0x8517('0x19')),controller[_0x8517('0x1a')]);router[_0x8517('0x17')]('/webhook',controller[_0x8517('0x1b')]);router[_0x8517('0x1c')](_0x8517('0x1d'),auth[_0x8517('0xb')](),controller[_0x8517('0x1e')]);router[_0x8517('0x1f')](_0x8517('0x1d'),auth['isAuthenticated'](),controller[_0x8517('0x1f')]);module['exports']=router;
\ No newline at end of file
index d748c11..b274e02 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf4a=['TEXT','STRING','BOOLEAN','Indicates\x20whether\x20the\x20plugin\x20is\x20installed.\x20Updated\x20when\x20the\x20plugin\x20is\x20installed/uninstalled.','ENUM','agentOnly','always','never','Indicates\x20whether\x20to\x20display\x20the\x20plugin\x20in\x20the\x20sidebar.','exports','script'];(function(_0x224456,_0x2ee1c2){var _0x49837b=function(_0x1f18bd){while(--_0x1f18bd){_0x224456['push'](_0x224456['shift']());}};_0x49837b(++_0x2ee1c2);}(_0xbf4a,0x77));var _0xabf4=function(_0x113108,_0x1445b1){_0x113108=_0x113108-0x0;var _0x19fd86=_0xbf4a[_0x113108];return _0x19fd86;};'use strict';var Sequelize=require('sequelize');module[_0xabf4('0x0')]={'name':{'type':Sequelize['STRING']},'type':{'type':Sequelize['ENUM']('html',_0xabf4('0x1'))},'description':{'type':Sequelize[_0xabf4('0x2')]},'version':{'type':Sequelize[_0xabf4('0x2')]},'path':{'type':Sequelize[_0xabf4('0x3')],'comment':'The\x20physical\x20path\x20where\x20the\x20plugin\x20is\x20stored.'},'active':{'type':Sequelize[_0xabf4('0x4')],'defaultValue':0x0,'comment':_0xabf4('0x5')},'sidebar':{'type':Sequelize[_0xabf4('0x6')]('adminOnly',_0xabf4('0x7'),_0xabf4('0x8'),_0xabf4('0x9')),'defaultValue':_0xabf4('0x8'),'comment':_0xabf4('0xa')},'icon':{'type':Sequelize[_0xabf4('0x3')]},'adminUrl':{'type':Sequelize['STRING']},'agentUrl':{'type':Sequelize['STRING']},'scriptName':{'type':Sequelize[_0xabf4('0x3')]},'scriptPath':{'type':Sequelize[_0xabf4('0x3')]}};
\ No newline at end of file
+var _0x0354=['sequelize','exports','STRING','ENUM','html','script','TEXT','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','never'];(function(_0x18b12c,_0x52a364){var _0x33bdd3=function(_0x442776){while(--_0x442776){_0x18b12c['push'](_0x18b12c['shift']());}};_0x33bdd3(++_0x52a364);}(_0x0354,0x196));var _0x4035=function(_0x2bcc18,_0x2c3e7d){_0x2bcc18=_0x2bcc18-0x0;var _0x3ffe5c=_0x0354[_0x2bcc18];return _0x3ffe5c;};'use strict';var Sequelize=require(_0x4035('0x0'));module[_0x4035('0x1')]={'name':{'type':Sequelize[_0x4035('0x2')]},'type':{'type':Sequelize[_0x4035('0x3')](_0x4035('0x4'),_0x4035('0x5'))},'description':{'type':Sequelize[_0x4035('0x6')]},'version':{'type':Sequelize[_0x4035('0x6')]},'path':{'type':Sequelize[_0x4035('0x2')],'comment':_0x4035('0x7')},'active':{'type':Sequelize[_0x4035('0x8')],'defaultValue':0x0,'comment':_0x4035('0x9')},'sidebar':{'type':Sequelize[_0x4035('0x3')](_0x4035('0xa'),_0x4035('0xb'),_0x4035('0xc'),_0x4035('0xd')),'defaultValue':'always','comment':'Indicates\x20whether\x20to\x20display\x20the\x20plugin\x20in\x20the\x20sidebar.'},'icon':{'type':Sequelize[_0x4035('0x2')]},'adminUrl':{'type':Sequelize['STRING']},'agentUrl':{'type':Sequelize[_0x4035('0x2')]},'scriptName':{'type':Sequelize[_0x4035('0x2')]},'scriptPath':{'type':Sequelize[_0x4035('0x2')]}};
\ No newline at end of file
index 53160e2..07939a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e0f=['../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','./plugin.socket','register','status','end','json','offset','undefined','limit','count','set','apply','save','update','then','destroy','Plugins','UserProfileResource','error','stack','name','send','index','map','Plugin','rawAttributes','fieldName','key','keys','filters','intersection','model','query','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','type','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','options','find','download','root','server/files/plugins','%s.zip','basename','createWriteStream','zip','warning','code','ENOENT','Sequelize','Error','Error\x20while\x20generating\x20the\x20zip\x20archive','pipe','**/*','join','dirname','node_modules/**/*','finalize','close','Plugin\x20not\x20found','format','Error\x20while\x20downloading\x20the\x20plugin','unlinkSync','info','Download\x20completed','Temporary\x20file\x20removed','file','filename','Plugin\x20upload\x20destination:\x20%s','Invalid\x20plugin\x20structure','lstatSync','isFile','isDirectory','readdirSync','manifest.json','Plugin\x20manifest\x20missing','readFileSync','parse','Invalid\x20manifest:\x20name\x20missing','Invalid\x20manifest:\x20type\x20missing','version','Invalid\x20manifest:\x20version\x20not\x20specified','parameters','views','admin','agent','Invalid\x20manifest:\x20no\x20view\x20specified','scriptName','Invalid\x20manifest:\x20script\x20name\x20missing','scriptPath','description','sidebar','icon','icon-apps','html','test','plugins','Warning:\x20agent\x20view\x20not\x20specified','script','create','body','role','userProfileId','user','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','Zip\x20archive\x20removed','Extracted\x20folder\x20removed','\x27PATH\x27\x20parameter\x20not\x20specified','port','\x27PORT\x27\x20parameter\x20not\x20specified','hostname','http://localhost:','encoding','%s%s','headers','content-length','content-type','endsWith','sendStatus','statusCode','webhookPost','resolve','eml-format','zip-dir','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','desk.js','papaparse','extract-zip','rimraf','archiver','../../components/auth/service','../../components/parsers/qs'];(function(_0x520ec9,_0x3d28a8){var _0x3b282a=function(_0x3b1366){while(--_0x3b1366){_0x520ec9['push'](_0x520ec9['shift']());}};_0x3b282a(++_0x3d28a8);}(_0x7e0f,0x1e2));var _0xf7e0=function(_0x34638e,_0xa6e8d4){_0x34638e=_0x34638e-0x0;var _0x200d1c=_0x7e0f[_0x34638e];return _0x200d1c;};'use strict';var emlformat=require(_0xf7e0('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xf7e0('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xf7e0('0x2'));var Mustache=require(_0xf7e0('0x3'));var util=require(_0xf7e0('0x4'));var path=require(_0xf7e0('0x5'));var sox=require(_0xf7e0('0x6'));var csv=require(_0xf7e0('0x7'));var ejs=require(_0xf7e0('0x8'));var fs=require('fs');var fs_extra=require(_0xf7e0('0x9'));var _=require('lodash');var squel=require(_0xf7e0('0xa'));var crypto=require(_0xf7e0('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xf7e0('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xf7e0('0xd'));var extract=require(_0xf7e0('0xe'));var rimraf=require(_0xf7e0('0xf'));var archiver=require(_0xf7e0('0x10'));var Redis=require('ioredis');var authService=require(_0xf7e0('0x11'));var qs=require(_0xf7e0('0x12'));var as=require(_0xf7e0('0x13'));var hardwareService=require(_0xf7e0('0x14'));var logger=require(_0xf7e0('0x15'))(_0xf7e0('0x16'));var utils=require(_0xf7e0('0x17'));var config=require(_0xf7e0('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xf7e0('0x19'))['db'];config[_0xf7e0('0x1a')]=_[_0xf7e0('0x1b')](config[_0xf7e0('0x1a')],{'host':_0xf7e0('0x1c'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xf7e0('0x1a')]));require(_0xf7e0('0x1d'))[_0xf7e0('0x1e')](socket);function respondWithStatusCode(_0x1b690d,_0xfd642b){_0xfd642b=_0xfd642b||0xcc;return function(_0x3eead1){if(_0x3eead1){return _0x1b690d['sendStatus'](_0xfd642b);}return _0x1b690d[_0xf7e0('0x1f')](_0xfd642b)[_0xf7e0('0x20')]();};}function respondWithResult(_0x10ad91,_0x160781){_0x160781=_0x160781||0xc8;return function(_0x24b136){if(_0x24b136){return _0x10ad91[_0xf7e0('0x1f')](_0x160781)[_0xf7e0('0x21')](_0x24b136);}};}function respondWithFilteredResult(_0x338d18,_0x454665){return function(_0x39c712){if(_0x39c712){var _0x5db5b7=typeof _0x454665[_0xf7e0('0x22')]===_0xf7e0('0x23')&&typeof _0x454665[_0xf7e0('0x24')]===_0xf7e0('0x23');var _0x317f34=_0x39c712['count'];var _0x445784=_0x5db5b7?0x0:_0x454665[_0xf7e0('0x22')];var _0x329f3=_0x5db5b7?_0x39c712[_0xf7e0('0x25')]:_0x454665[_0xf7e0('0x22')]+_0x454665[_0xf7e0('0x24')];var _0x59e3da;if(_0x329f3>=_0x317f34){_0x329f3=_0x317f34;_0x59e3da=0xc8;}else{_0x59e3da=0xce;}_0x338d18[_0xf7e0('0x1f')](_0x59e3da);return _0x338d18[_0xf7e0('0x26')]('Content-Range',_0x445784+'-'+_0x329f3+'/'+_0x317f34)[_0xf7e0('0x21')](_0x39c712);}return null;};}function patchUpdates(_0x25ebe8){return function(_0x534825){try{jsonpatch[_0xf7e0('0x27')](_0x534825,_0x25ebe8,!![]);}catch(_0x2264cf){return BPromise['reject'](_0x2264cf);}return _0x534825[_0xf7e0('0x28')]();};}function saveUpdates(_0x2e0123,_0x339573){return function(_0x3f1c15){if(_0x3f1c15){return _0x3f1c15[_0xf7e0('0x29')](_0x2e0123)[_0xf7e0('0x2a')](function(_0x28d302){return _0x28d302;});}return null;};}function removeEntity(_0xacf244,_0x254eb9){return function(_0x3521f3){if(_0x3521f3){return _0x3521f3[_0xf7e0('0x2b')]()[_0xf7e0('0x2a')](function(){var _0x3c3b43=_0x3521f3['get']({'plain':!![]});var _0x3c5345=_0xf7e0('0x2c');return db[_0xf7e0('0x2d')][_0xf7e0('0x2b')]({'where':{'type':_0x3c5345,'resourceId':_0x3c3b43['id']}})[_0xf7e0('0x2a')](function(){return _0x3521f3;});})[_0xf7e0('0x2a')](function(){_0xacf244[_0xf7e0('0x1f')](0xcc)[_0xf7e0('0x20')]();});}};}function handleEntityNotFound(_0x4dfbee,_0x3f3850){return function(_0x58900d){if(!_0x58900d){_0x4dfbee['sendStatus'](0x194);}return _0x58900d;};}function handleError(_0x82bd91,_0x4dea6){_0x4dea6=_0x4dea6||0x1f4;return function(_0x5a6ea5){logger[_0xf7e0('0x2e')](_0x5a6ea5[_0xf7e0('0x2f')]);if(_0x5a6ea5['name']){delete _0x5a6ea5[_0xf7e0('0x30')];}_0x82bd91['status'](_0x4dea6)[_0xf7e0('0x31')](_0x5a6ea5);};}exports[_0xf7e0('0x32')]=function(_0x3a8d0c,_0x3e170e){var _0x5e58b7={},_0x187b7a={},_0x1fe93f={'count':0x0,'rows':[]};var _0x519922=_[_0xf7e0('0x33')](db[_0xf7e0('0x34')][_0xf7e0('0x35')],function(_0x37326a){return{'name':_0x37326a[_0xf7e0('0x36')],'type':_0x37326a['type'][_0xf7e0('0x37')]};});_0x187b7a['model']=_['map'](_0x519922,_0xf7e0('0x30'));_0x187b7a['query']=_[_0xf7e0('0x38')](_0x3a8d0c['query']);_0x187b7a[_0xf7e0('0x39')]=_[_0xf7e0('0x3a')](_0x187b7a[_0xf7e0('0x3b')],_0x187b7a[_0xf7e0('0x3c')]);_0x5e58b7[_0xf7e0('0x3d')]=_['intersection'](_0x187b7a[_0xf7e0('0x3b')],qs[_0xf7e0('0x3e')](_0x3a8d0c['query'][_0xf7e0('0x3e')]));_0x5e58b7['attributes']=_0x5e58b7[_0xf7e0('0x3d')][_0xf7e0('0x3f')]?_0x5e58b7[_0xf7e0('0x3d')]:_0x187b7a[_0xf7e0('0x3b')];if(!_0x3a8d0c[_0xf7e0('0x3c')][_0xf7e0('0x40')](_0xf7e0('0x41'))){_0x5e58b7['limit']=qs[_0xf7e0('0x24')](_0x3a8d0c[_0xf7e0('0x3c')][_0xf7e0('0x24')]);_0x5e58b7[_0xf7e0('0x22')]=qs[_0xf7e0('0x22')](_0x3a8d0c['query'][_0xf7e0('0x22')]);}_0x5e58b7[_0xf7e0('0x42')]=qs['sort'](_0x3a8d0c[_0xf7e0('0x3c')][_0xf7e0('0x43')]);_0x5e58b7[_0xf7e0('0x44')]=qs[_0xf7e0('0x39')](_[_0xf7e0('0x45')](_0x3a8d0c['query'],_0x187b7a['filters']),_0x519922);if(_0x3a8d0c[_0xf7e0('0x3c')][_0xf7e0('0x46')]){_0x5e58b7['where']=_['merge'](_0x5e58b7['where'],{'$or':_['map'](_0x519922,function(_0x4a1aeb){if(_0x4a1aeb[_0xf7e0('0x47')]!==_0xf7e0('0x48')){var _0x337e19={};_0x337e19[_0x4a1aeb['name']]={'$like':'%'+_0x3a8d0c['query'][_0xf7e0('0x46')]+'%'};return _0x337e19;}})});}_0x5e58b7=_['merge']({},_0x5e58b7,_0x3a8d0c['options']);var _0x824dfb={'where':_0x5e58b7['where']};return db[_0xf7e0('0x34')][_0xf7e0('0x25')](_0x824dfb)[_0xf7e0('0x2a')](function(_0x593153){_0x1fe93f[_0xf7e0('0x25')]=_0x593153;if(_0x3a8d0c[_0xf7e0('0x3c')][_0xf7e0('0x49')]){_0x5e58b7[_0xf7e0('0x4a')]=[{'all':!![]}];}return db[_0xf7e0('0x34')][_0xf7e0('0x4b')](_0x5e58b7);})['then'](function(_0x2e9079){_0x1fe93f[_0xf7e0('0x4c')]=_0x2e9079;return _0x1fe93f;})[_0xf7e0('0x2a')](respondWithFilteredResult(_0x3e170e,_0x5e58b7))[_0xf7e0('0x4d')](handleError(_0x3e170e,null));};exports[_0xf7e0('0x4e')]=function(_0x38f86b,_0x18c1e7){var _0x785750={'raw':!![],'where':{'id':_0x38f86b[_0xf7e0('0x4f')]['id']}},_0x243d9c={};_0x243d9c[_0xf7e0('0x3b')]=_[_0xf7e0('0x38')](db['Plugin'][_0xf7e0('0x35')]);_0x243d9c[_0xf7e0('0x3c')]=_[_0xf7e0('0x38')](_0x38f86b[_0xf7e0('0x3c')]);_0x243d9c[_0xf7e0('0x39')]=_[_0xf7e0('0x3a')](_0x243d9c[_0xf7e0('0x3b')],_0x243d9c[_0xf7e0('0x3c')]);_0x785750[_0xf7e0('0x3d')]=_['intersection'](_0x243d9c[_0xf7e0('0x3b')],qs[_0xf7e0('0x3e')](_0x38f86b[_0xf7e0('0x3c')]['fields']));_0x785750[_0xf7e0('0x3d')]=_0x785750[_0xf7e0('0x3d')][_0xf7e0('0x3f')]?_0x785750[_0xf7e0('0x3d')]:_0x243d9c['model'];if(_0x38f86b[_0xf7e0('0x3c')][_0xf7e0('0x49')]){_0x785750[_0xf7e0('0x4a')]=[{'all':!![]}];}_0x785750=_['merge']({},_0x785750,_0x38f86b[_0xf7e0('0x50')]);return db['Plugin'][_0xf7e0('0x51')](_0x785750)[_0xf7e0('0x2a')](handleEntityNotFound(_0x18c1e7,null))[_0xf7e0('0x2a')](respondWithResult(_0x18c1e7,null))[_0xf7e0('0x4d')](handleError(_0x18c1e7,null));};exports[_0xf7e0('0x52')]=function(_0x2c1a85,_0x4941aa,_0x54f66c){return db[_0xf7e0('0x34')][_0xf7e0('0x51')]({'where':{'id':_0x2c1a85[_0xf7e0('0x4f')]['id']},'attributes':[_0xf7e0('0x30'),'path'],'raw':!![]})[_0xf7e0('0x2a')](handleEntityNotFound(_0x4941aa,null))[_0xf7e0('0x2a')](function(_0x519dd3){if(_0x519dd3){var _0xd4fb20=path['join'](config[_0xf7e0('0x53')],_0xf7e0('0x54'),util['format'](_0xf7e0('0x55'),path[_0xf7e0('0x56')](_0x519dd3[_0xf7e0('0x5')])));var _0x3cd0ee=fs[_0xf7e0('0x57')](_0xd4fb20);var _0x580447=archiver(_0xf7e0('0x58'),{'zlib':{'level':0x9}});_0x580447['on'](_0xf7e0('0x59'),function(_0x3caa73){if(_0x3caa73[_0xf7e0('0x5a')]===_0xf7e0('0x5b')){logger['error'](_0x3caa73);}else{throw new db[(_0xf7e0('0x5c'))][(_0xf7e0('0x5d'))](_0xf7e0('0x5e'));}});_0x580447['on']('error',function(_0x58f996){throw new db[(_0xf7e0('0x5c'))][(_0xf7e0('0x5d'))](_0xf7e0('0x5e'));});_0x580447[_0xf7e0('0x5f')](_0x3cd0ee);_0x580447['glob'](_0xf7e0('0x60'),{'cwd':path[_0xf7e0('0x61')](config[_0xf7e0('0x53')],_0xf7e0('0x54'),path[_0xf7e0('0x62')](_0x519dd3[_0xf7e0('0x5')])),'ignore':[path[_0xf7e0('0x61')](path['basename'](_0x519dd3[_0xf7e0('0x5')]),_0xf7e0('0x63')),path[_0xf7e0('0x61')](path[_0xf7e0('0x56')](_0x519dd3[_0xf7e0('0x5')]),'attachments/**/*')],'nodir':!![]})[_0xf7e0('0x64')]();_0x3cd0ee['on'](_0xf7e0('0x65'),function(){if(!fs['existsSync'](_0xd4fb20)){throw new db['Sequelize'][(_0xf7e0('0x5d'))](_0xf7e0('0x66'));}return _0x4941aa['download'](_0xd4fb20,util[_0xf7e0('0x67')](_0xf7e0('0x55'),path[_0xf7e0('0x56')](_0x519dd3['path'])),function(_0x116eea){if(_0x116eea){throw new db[(_0xf7e0('0x5c'))][(_0xf7e0('0x5d'))](_0xf7e0('0x68'));}fs[_0xf7e0('0x69')](_0xd4fb20);logger[_0xf7e0('0x6a')](_0xf7e0('0x6b'));logger['info'](_0xf7e0('0x6c'));});});}return null;})[_0xf7e0('0x4d')](handleError(_0x4941aa,null));};exports['upload']=function(_0x3779ff,_0x2d8f6e,_0x5d5f45){var _0x38b0e9=path[_0xf7e0('0x56')](_0x3779ff[_0xf7e0('0x6d')][_0xf7e0('0x6e')],path['extname'](_0x3779ff[_0xf7e0('0x6d')][_0xf7e0('0x6e')]));var _0x24d138=path[_0xf7e0('0x61')](config[_0xf7e0('0x53')],_0xf7e0('0x54'),_0x3779ff['file'][_0xf7e0('0x6e')]);var _0x4255e4=path[_0xf7e0('0x61')](config[_0xf7e0('0x53')],_0xf7e0('0x54'),_0x38b0e9);logger[_0xf7e0('0x6a')]('Plugin\x20upload\x20filepath:\x20%s',_0x24d138);logger[_0xf7e0('0x6a')](_0xf7e0('0x6f'),_0x4255e4);try{fs['chmodSync'](_0x24d138,parseInt('0777',0x8));extract(_0x24d138,{'dir':_0x4255e4},function(_0x5b9c23){if(_0x5b9c23){logger[_0xf7e0('0x2e')](_0x5b9c23);handleError(_0x5b9c23,!![]);};var _0x500993=fs['readdirSync'](_0x4255e4);if(_0x500993[_0xf7e0('0x3f')]>0x1){removeReferences(_0x24d138,_0x4255e4);logger[_0xf7e0('0x2e')](_0xf7e0('0x70'));return _0x5d5f45(new Error(_0xf7e0('0x70')));}var _0x3a3e40=fs[_0xf7e0('0x71')](path[_0xf7e0('0x61')](_0x4255e4,_0x500993[0x0]));if(_0x3a3e40[_0xf7e0('0x72')]()){removeReferences(_0x24d138,_0x4255e4);logger[_0xf7e0('0x2e')]('Invalid\x20plugin\x20structure');return _0x5d5f45(new Error('Invalid\x20plugin\x20structure'));}if(_0x3a3e40[_0xf7e0('0x73')]()){var _0x3576bd=fs[_0xf7e0('0x74')](path[_0xf7e0('0x61')](_0x4255e4,_0x500993[0x0]));if(_0x3576bd[_0xf7e0('0x3f')]===0x0){removeReferences(_0x24d138,_0x4255e4);logger[_0xf7e0('0x2e')](_0xf7e0('0x70'));return _0x5d5f45(new Error('Invalid\x20plugin\x20structure'));}var _0x3ac2ff=_0x3576bd['some'](function(_0x469d64){return _0x469d64===_0xf7e0('0x75');});if(!_0x3ac2ff){return _0x5d5f45(new Error(_0xf7e0('0x76')));}var _0x29bc13=fs[_0xf7e0('0x77')](path[_0xf7e0('0x61')](_0x4255e4,_0x500993[0x0],_0xf7e0('0x75')));var _0x5ad314=JSON[_0xf7e0('0x78')](_0x29bc13);if(_0xf7e0('0x23')==typeof _0x5ad314['name']){return _0x5d5f45(new Error(_0xf7e0('0x79')));}if(_0xf7e0('0x23')==typeof _0x5ad314[_0xf7e0('0x47')]){return _0x5d5f45(new Error(_0xf7e0('0x7a')));}if('undefined'==typeof _0x5ad314[_0xf7e0('0x7b')]){return _0x5d5f45(new Error(_0xf7e0('0x7c')));}if(_0xf7e0('0x23')==typeof _0x5ad314[_0xf7e0('0x7d')]){return _0x5d5f45(new Error('Invalid\x20manifest:\x20parameters\x20missing'));}if(_0x5ad314[_0xf7e0('0x47')]==='html'){if(_0xf7e0('0x23')==typeof _0x5ad314[_0xf7e0('0x7d')]['views']){return _0x5d5f45(new Error('Invalid\x20manifest:\x20views\x20missing'));}if(_0xf7e0('0x23')==typeof _0x5ad314['parameters'][_0xf7e0('0x7e')][_0xf7e0('0x7f')]&&'undefined'==typeof _0x5ad314[_0xf7e0('0x7d')][_0xf7e0('0x7e')][_0xf7e0('0x80')]){return _0x5d5f45(new Error(_0xf7e0('0x81')));}}else if(_0x5ad314[_0xf7e0('0x47')]==='script'){if(_0xf7e0('0x23')==typeof _0x5ad314[_0xf7e0('0x7d')][_0xf7e0('0x82')]){return _0x5d5f45(new Error(_0xf7e0('0x83')));}if(_0xf7e0('0x23')==typeof _0x5ad314[_0xf7e0('0x7d')][_0xf7e0('0x84')]){return _0x5d5f45(new Error('Invalid\x20manifest:\x20script\x20path\x20missing'));}}else{return _0x5d5f45(new Error('Invalid\x20manifest:\x20invalid\x20type'));}var _0xa79f4e=_0x5ad314['name'];var _0x4d13b4=_0x5ad314[_0xf7e0('0x85')];var _0x3623c9=_0x5ad314[_0xf7e0('0x47')];var _0x5b523d=_0x5ad314[_0xf7e0('0x86')]?_0x5ad314[_0xf7e0('0x86')]:'always';var _0x58ed83=_0x5ad314[_0xf7e0('0x87')]?_0x5ad314[_0xf7e0('0x87')]:_0xf7e0('0x88');var _0x486ea0='';var _0x536bed='';var _0x3985f7='';var _0x3b1369='';var _0x8658b6=_0x5ad314[_0xf7e0('0x7b')];if(_0x3623c9===_0xf7e0('0x89')){if(_0xf7e0('0x23')!=typeof _0x5ad314[_0xf7e0('0x7d')][_0xf7e0('0x7e')][_0xf7e0('0x7f')]){var _0x419446=_0x5ad314['parameters'][_0xf7e0('0x7e')]['admin'];if(!/^(f|ht)tps?:\/\//i[_0xf7e0('0x8a')](_0x419446)){_0x486ea0=path[_0xf7e0('0x61')](_0xf7e0('0x8b'),_0x38b0e9,_0x500993[0x0],_0x419446);}else{_0x486ea0=_0x419446;}}else{logger[_0xf7e0('0x6a')]('Warning:\x20admin\x20view\x20not\x20specified');}if('undefined'!=typeof _0x5ad314[_0xf7e0('0x7d')][_0xf7e0('0x7e')][_0xf7e0('0x80')]){var _0x212a1f=_0x5ad314[_0xf7e0('0x7d')][_0xf7e0('0x7e')][_0xf7e0('0x80')];if(!/^(f|ht)tps?:\/\//i[_0xf7e0('0x8a')](_0x212a1f)){_0x536bed=path[_0xf7e0('0x61')](_0xf7e0('0x8b'),_0x38b0e9,_0x500993[0x0],_0x212a1f);}else{_0x536bed=_0x212a1f;}}else{logger[_0xf7e0('0x6a')](_0xf7e0('0x8c'));}}else if(_0x3623c9===_0xf7e0('0x8d')){_0x3985f7=_0x5ad314[_0xf7e0('0x7d')][_0xf7e0('0x82')];_0x3b1369=_0x5ad314[_0xf7e0('0x7d')][_0xf7e0('0x84')];if(_0xf7e0('0x23')!=typeof _0x5ad314[_0xf7e0('0x7d')]['views']){if(_0xf7e0('0x23')!=typeof _0x5ad314['parameters'][_0xf7e0('0x7e')][_0xf7e0('0x7f')]){var _0x419446=_0x5ad314[_0xf7e0('0x7d')][_0xf7e0('0x7e')][_0xf7e0('0x7f')];if(!/^(f|ht)tps?:\/\//i[_0xf7e0('0x8a')](_0x419446)){_0x486ea0=path['join']('plugins',_0x38b0e9,_0x500993[0x0],_0x419446);}else{_0x486ea0=_0x419446;}}if(_0xf7e0('0x23')!=typeof _0x5ad314[_0xf7e0('0x7d')][_0xf7e0('0x7e')][_0xf7e0('0x80')]){var _0x212a1f=_0x5ad314['parameters'][_0xf7e0('0x7e')][_0xf7e0('0x80')];if(!/^(f|ht)tps?:\/\//i[_0xf7e0('0x8a')](_0x212a1f)){_0x536bed=path['join'](_0xf7e0('0x8b'),_0x38b0e9,_0x500993[0x0],_0x212a1f);}else{_0x536bed=_0x212a1f;}}}}var _0x3a2238={'name':_0xa79f4e,'description':_0x4d13b4,'path':path[_0xf7e0('0x61')](_0x38b0e9,_0x500993[0x0]),'type':_0x3623c9,'sidebar':_0x5b523d,'icon':_0x58ed83,'adminUrl':_0x486ea0,'agentUrl':_0x536bed,'scriptName':_0x3985f7,'scriptPath':_0x3b1369,'version':_0x8658b6};removeReferences(_0x24d138,null);return db[_0xf7e0('0x34')][_0xf7e0('0x8e')](_0x3a2238)['then'](function(_0x8b6f89){var _0x3b7c40={'role':_0x3779ff[_0xf7e0('0x8f')][_0xf7e0('0x90')],'userProfileId':_0x3779ff[_0xf7e0('0x8f')][_0xf7e0('0x91')]};if(!_0x3b7c40)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3b7c40[_0xf7e0('0x90')]===_0xf7e0('0x92')){var _0x1c9929=_0x8b6f89['get']({'plain':!![]});return db[_0xf7e0('0x93')][_0xf7e0('0x51')]({'where':{'name':_0xf7e0('0x2c'),'userProfileId':_0x3b7c40[_0xf7e0('0x91')]},'raw':!![]})[_0xf7e0('0x2a')](function(_0x17ed23){if(_0x17ed23&&_0x17ed23[_0xf7e0('0x94')]===0x0){return db[_0xf7e0('0x2d')]['create']({'name':_0x1c9929[_0xf7e0('0x30')],'resourceId':_0x1c9929['id'],'type':_0x17ed23[_0xf7e0('0x30')],'sectionId':_0x17ed23['id']},{})[_0xf7e0('0x2a')](function(){return _0x8b6f89;});}else{return _0x8b6f89;}})[_0xf7e0('0x4d')](function(_0x4d0545){logger[_0xf7e0('0x2e')](_0xf7e0('0x95'),_0x4d0545);throw _0x4d0545;});}return _0x8b6f89;})[_0xf7e0('0x2a')](respondWithResult(_0x2d8f6e,null))[_0xf7e0('0x4d')](handleError(_0x2d8f6e,null));}});}catch(_0xfdb217){_0x2d8f6e[_0xf7e0('0x1f')](0x1f4)[_0xf7e0('0x31')](_0xfdb217);}};function removeReferences(_0x1f2e2f,_0x51f104){try{if(_0x1f2e2f){fs[_0xf7e0('0x69')](_0x1f2e2f);logger[_0xf7e0('0x6a')](_0xf7e0('0x96'));}if(_0x51f104){rimraf(_0x51f104,function(){});logger[_0xf7e0('0x6a')](_0xf7e0('0x97'));}}catch(_0x4c8891){logger[_0xf7e0('0x2e')](_0x4c8891);}}exports[_0xf7e0('0x29')]=function(_0xddf8d4,_0x109119,_0x3f09e2){return db['Plugin']['find']({'where':{'id':_0xddf8d4[_0xf7e0('0x4f')]['id']}})[_0xf7e0('0x2a')](handleEntityNotFound(_0x109119,null))[_0xf7e0('0x2a')](saveUpdates(_0xddf8d4['body'],null))[_0xf7e0('0x2a')](respondWithResult(_0x109119,null))[_0xf7e0('0x4d')](handleError(_0x109119,null));};exports['delete']=function(_0x25ab03,_0x3f1b6d,_0x2cf1c9){return db[_0xf7e0('0x34')][_0xf7e0('0x51')]({'where':{'id':_0x25ab03[_0xf7e0('0x4f')]['id']}})['then'](function(_0x5baf56){if(_0x5baf56){return _0x5baf56[_0xf7e0('0x2b')]();}})[_0xf7e0('0x2a')](function(_0x1c414c){rimraf(path[_0xf7e0('0x61')](config[_0xf7e0('0x53')],_0xf7e0('0x54'),path['dirname'](_0x1c414c[_0xf7e0('0x5')])),function(){});return _0x1c414c;})[_0xf7e0('0x2a')](handleEntityNotFound(_0x3f1b6d,null))[_0xf7e0('0x2a')](respondWithStatusCode(_0x3f1b6d,null))[_0xf7e0('0x4d')](handleError(_0x3f1b6d,null));};exports['webhookGet']=function(_0x2385be,_0x3b6d16,_0x47d71c){return BPromise['resolve']()[_0xf7e0('0x2a')](function(){if(!_0x2385be[_0xf7e0('0x3c')][_0xf7e0('0x5')]){throw new Error(_0xf7e0('0x98'));}if(!_0x2385be[_0xf7e0('0x3c')][_0xf7e0('0x99')]){throw new Error(_0xf7e0('0x9a'));}var _0x41906e=_0x2385be['query'][_0xf7e0('0x9b')]?_0x2385be['query'][_0xf7e0('0x9b')]+':'+_0x2385be[_0xf7e0('0x3c')][_0xf7e0('0x99')]:_0xf7e0('0x9c')+_0x2385be[_0xf7e0('0x3c')][_0xf7e0('0x99')];var _0x49b571=_0x2385be['query'][_0xf7e0('0x21')]?_0x2385be[_0xf7e0('0x3c')][_0xf7e0('0x21')]:!![];var _0x5d6a8f=_0x2385be[_0xf7e0('0x3c')][_0xf7e0('0x9d')]?_0x2385be['query'][_0xf7e0('0x9d')]:null;var _0x5370d2={'method':_0x2385be['method'],'uri':util['format'](_0xf7e0('0x9e'),_0x41906e,_0x2385be[_0xf7e0('0x3c')]['path']),'json':_0x49b571,'resolveWithFullResponse':!![],'encoding':_0x5d6a8f,'qs':_0x2385be[_0xf7e0('0x3c')]};if(_0x2385be['headers']){_0x5370d2[_0xf7e0('0x9f')]=_0x2385be[_0xf7e0('0x9f')];if(_0x5370d2[_0xf7e0('0x9f')][_0xf7e0('0xa0')]){delete _0x5370d2['headers']['content-length'];}}if(_0x5370d2[_0xf7e0('0x9f')][_0xf7e0('0xa1')]){delete _0x5370d2[_0xf7e0('0x9f')][_0xf7e0('0xa1')];}return rp(_0x5370d2);})[_0xf7e0('0x2a')](function(_0x5aba1c){if(_0x5aba1c){_0x3b6d16[_0xf7e0('0x26')](_0x5aba1c[_0xf7e0('0x9f')]);logger['info'](_0x5aba1c['body']);if(_[_0xf7e0('0xa2')](_0x2385be[_0xf7e0('0x3c')]['path'],'download')&&_0x5aba1c['statusCode']==0x1f4){return _0x3b6d16[_0xf7e0('0xa3')](_0x5aba1c[_0xf7e0('0xa4')]);}else{return _0x3b6d16[_0xf7e0('0x1f')](_0x5aba1c[_0xf7e0('0xa4')])['send'](_0x5aba1c['body']);}}else{return _0x3b6d16[_0xf7e0('0xa3')](0xc8);}})[_0xf7e0('0x4d')](handleError(_0x3b6d16,null));};exports[_0xf7e0('0xa5')]=function(_0xd697c6,_0xaed770,_0x438a9e){return BPromise[_0xf7e0('0xa6')]()[_0xf7e0('0x2a')](function(){if(!_0xd697c6[_0xf7e0('0x3c')]['path']){throw new Error('\x27PATH\x27\x20parameter\x20not\x20specified');}if(!_0xd697c6[_0xf7e0('0x3c')]['port']){throw new Error(_0xf7e0('0x9a'));}var _0x401dc8=_0xd697c6[_0xf7e0('0x3c')][_0xf7e0('0x9b')]?_0xd697c6[_0xf7e0('0x3c')]['hostname']+':'+_0xd697c6[_0xf7e0('0x3c')][_0xf7e0('0x99')]:_0xf7e0('0x9c')+_0xd697c6[_0xf7e0('0x3c')][_0xf7e0('0x99')];var _0x1062c2=_0xd697c6['query'][_0xf7e0('0x21')]?_0xd697c6[_0xf7e0('0x3c')][_0xf7e0('0x21')]:!![];var _0xd2e0a1=_0xd697c6[_0xf7e0('0x3c')]['encoding']?_0xd697c6[_0xf7e0('0x3c')][_0xf7e0('0x9d')]:null;var _0x1cf12a={'method':_0xd697c6['method'],'uri':util['format'](_0xf7e0('0x9e'),_0x401dc8,_0xd697c6[_0xf7e0('0x3c')][_0xf7e0('0x5')]),'json':_0x1062c2,'resolveWithFullResponse':!![],'encoding':_0xd2e0a1,'body':_0xd697c6[_0xf7e0('0x8f')]};if(_0xd697c6[_0xf7e0('0x9f')]){_0x1cf12a[_0xf7e0('0x9f')]=_0xd697c6[_0xf7e0('0x9f')];if(_0x1cf12a[_0xf7e0('0x9f')]['content-length']){delete _0x1cf12a[_0xf7e0('0x9f')]['content-length'];}}if(_0x1cf12a[_0xf7e0('0x9f')][_0xf7e0('0xa1')]){delete _0x1cf12a['headers'][_0xf7e0('0xa1')];}return rp(_0x1cf12a);})[_0xf7e0('0x2a')](function(_0x352fd0){if(_0x352fd0){_0xaed770[_0xf7e0('0x26')](_0x352fd0[_0xf7e0('0x9f')]);logger[_0xf7e0('0x6a')](_0x352fd0[_0xf7e0('0x8f')]);return _0xaed770['status'](_0x352fd0[_0xf7e0('0xa4')])[_0xf7e0('0x31')](_0x352fd0[_0xf7e0('0x8f')]);}else{return _0xaed770[_0xf7e0('0xa3')](0xc8);}})[_0xf7e0('0x4d')](handleError(_0xaed770,null));};
\ No newline at end of file
+var _0x7ccb=['Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','Zip\x20archive\x20removed','Extracted\x20folder\x20removed','delete','\x27PATH\x27\x20parameter\x20not\x20specified','\x27PORT\x27\x20parameter\x20not\x20specified','hostname','http://localhost:','port','encoding','%s%s','headers','content-length','content-type','endsWith','statusCode','resolve','method','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','desk.js','querystring','papaparse','archiver','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','./plugin.socket','register','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy','get','Plugins','UserProfileResource','error','name','send','index','Plugin','rawAttributes','fieldName','type','model','query','keys','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','map','VIRTUAL','includeAll','findAll','rows','catch','show','params','length','include','options','find','download','path','join','server/files/plugins','%s.zip','basename','createWriteStream','zip','warning','ENOENT','Error\x20while\x20generating\x20the\x20zip\x20archive','Sequelize','Error','pipe','glob','root','dirname','node_modules/**/*','attachments/**/*','finalize','close','existsSync','format','unlinkSync','info','Temporary\x20file\x20removed','upload','file','filename','Plugin\x20upload\x20destination:\x20%s','chmodSync','0777','readdirSync','Invalid\x20plugin\x20structure','lstatSync','isFile','isDirectory','some','manifest.json','Plugin\x20manifest\x20missing','readFileSync','parse','Invalid\x20manifest:\x20type\x20missing','version','Invalid\x20manifest:\x20parameters\x20missing','html','parameters','views','Invalid\x20manifest:\x20views\x20missing','agent','Invalid\x20manifest:\x20no\x20view\x20specified','script','scriptPath','Invalid\x20manifest:\x20script\x20path\x20missing','Invalid\x20manifest:\x20invalid\x20type','description','sidebar','always','icon','icon-apps','admin','test','plugins','Warning:\x20admin\x20view\x20not\x20specified','Warning:\x20agent\x20view\x20not\x20specified','create','body','userProfileId'];(function(_0x56945f,_0x482958){var _0x542e29=function(_0x3f2aa5){while(--_0x3f2aa5){_0x56945f['push'](_0x56945f['shift']());}};_0x542e29(++_0x482958);}(_0x7ccb,0xc0));var _0xb7cc=function(_0x1d2922,_0xdcb3e0){_0x1d2922=_0x1d2922-0x0;var _0x1d7211=_0x7ccb[_0x1d2922];return _0x1d7211;};'use strict';var emlformat=require(_0xb7cc('0x0'));var rimraf=require(_0xb7cc('0x1'));var zipdir=require(_0xb7cc('0x2'));var jsonpatch=require(_0xb7cc('0x3'));var rp=require(_0xb7cc('0x4'));var moment=require('moment');var BPromise=require(_0xb7cc('0x5'));var Mustache=require(_0xb7cc('0x6'));var util=require(_0xb7cc('0x7'));var path=require('path');var sox=require(_0xb7cc('0x8'));var csv=require(_0xb7cc('0x9'));var ejs=require(_0xb7cc('0xa'));var fs=require('fs');var fs_extra=require(_0xb7cc('0xb'));var _=require(_0xb7cc('0xc'));var squel=require(_0xb7cc('0xd'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xb7cc('0xe'));var toCsv=require(_0xb7cc('0x9'));var querystring=require(_0xb7cc('0xf'));var Papa=require(_0xb7cc('0x10'));var extract=require('extract-zip');var rimraf=require('rimraf');var archiver=require(_0xb7cc('0x11'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xb7cc('0x12'));var hardwareService=require(_0xb7cc('0x13'));var logger=require('../../config/logger')(_0xb7cc('0x14'));var utils=require('../../config/utils');var config=require(_0xb7cc('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0xb7cc('0x16'))['db'];config[_0xb7cc('0x17')]=_['defaults'](config[_0xb7cc('0x17')],{'host':_0xb7cc('0x18'),'port':0x18eb});var socket=require(_0xb7cc('0x19'))(new Redis(config['redis']));require(_0xb7cc('0x1a'))[_0xb7cc('0x1b')](socket);function respondWithStatusCode(_0x33922e,_0x557bb7){_0x557bb7=_0x557bb7||0xcc;return function(_0x2956ed){if(_0x2956ed){return _0x33922e[_0xb7cc('0x1c')](_0x557bb7);}return _0x33922e[_0xb7cc('0x1d')](_0x557bb7)['end']();};}function respondWithResult(_0x3fd987,_0x219a4b){_0x219a4b=_0x219a4b||0xc8;return function(_0x5f0f66){if(_0x5f0f66){return _0x3fd987[_0xb7cc('0x1d')](_0x219a4b)[_0xb7cc('0x1e')](_0x5f0f66);}};}function respondWithFilteredResult(_0x326856,_0x44c53e){return function(_0x2ec5d4){if(_0x2ec5d4){var _0x2dbaec=typeof _0x44c53e[_0xb7cc('0x1f')]===_0xb7cc('0x20')&&typeof _0x44c53e[_0xb7cc('0x21')]===_0xb7cc('0x20');var _0xe79cf5=_0x2ec5d4[_0xb7cc('0x22')];var _0x1c3950=_0x2dbaec?0x0:_0x44c53e[_0xb7cc('0x1f')];var _0x2f021b=_0x2dbaec?_0x2ec5d4[_0xb7cc('0x22')]:_0x44c53e[_0xb7cc('0x1f')]+_0x44c53e[_0xb7cc('0x21')];var _0x5c97f2;if(_0x2f021b>=_0xe79cf5){_0x2f021b=_0xe79cf5;_0x5c97f2=0xc8;}else{_0x5c97f2=0xce;}_0x326856[_0xb7cc('0x1d')](_0x5c97f2);return _0x326856[_0xb7cc('0x23')](_0xb7cc('0x24'),_0x1c3950+'-'+_0x2f021b+'/'+_0xe79cf5)['json'](_0x2ec5d4);}return null;};}function patchUpdates(_0x55e4e7){return function(_0xfdbe11){try{jsonpatch[_0xb7cc('0x25')](_0xfdbe11,_0x55e4e7,!![]);}catch(_0x126d35){return BPromise['reject'](_0x126d35);}return _0xfdbe11[_0xb7cc('0x26')]();};}function saveUpdates(_0x12a3ee,_0x30b89b){return function(_0x15ca00){if(_0x15ca00){return _0x15ca00[_0xb7cc('0x27')](_0x12a3ee)[_0xb7cc('0x28')](function(_0x535878){return _0x535878;});}return null;};}function removeEntity(_0x4840d8,_0x217525){return function(_0x392397){if(_0x392397){return _0x392397[_0xb7cc('0x29')]()[_0xb7cc('0x28')](function(){var _0x482421=_0x392397[_0xb7cc('0x2a')]({'plain':!![]});var _0x2e0364=_0xb7cc('0x2b');return db[_0xb7cc('0x2c')][_0xb7cc('0x29')]({'where':{'type':_0x2e0364,'resourceId':_0x482421['id']}})[_0xb7cc('0x28')](function(){return _0x392397;});})[_0xb7cc('0x28')](function(){_0x4840d8[_0xb7cc('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0xa65d3c,_0x178d87){return function(_0x345bc3){if(!_0x345bc3){_0xa65d3c['sendStatus'](0x194);}return _0x345bc3;};}function handleError(_0x43ec39,_0x5480d1){_0x5480d1=_0x5480d1||0x1f4;return function(_0x449cef){logger[_0xb7cc('0x2d')](_0x449cef['stack']);if(_0x449cef['name']){delete _0x449cef[_0xb7cc('0x2e')];}_0x43ec39['status'](_0x5480d1)[_0xb7cc('0x2f')](_0x449cef);};}exports[_0xb7cc('0x30')]=function(_0x549cfe,_0x10dd56){var _0x18a749={},_0x4f2602={},_0x1dc59b={'count':0x0,'rows':[]};var _0x36028a=_['map'](db[_0xb7cc('0x31')][_0xb7cc('0x32')],function(_0x367470){return{'name':_0x367470[_0xb7cc('0x33')],'type':_0x367470[_0xb7cc('0x34')]['key']};});_0x4f2602[_0xb7cc('0x35')]=_['map'](_0x36028a,_0xb7cc('0x2e'));_0x4f2602[_0xb7cc('0x36')]=_[_0xb7cc('0x37')](_0x549cfe['query']);_0x4f2602[_0xb7cc('0x38')]=_['intersection'](_0x4f2602[_0xb7cc('0x35')],_0x4f2602[_0xb7cc('0x36')]);_0x18a749['attributes']=_[_0xb7cc('0x39')](_0x4f2602['model'],qs['fields'](_0x549cfe[_0xb7cc('0x36')][_0xb7cc('0x3a')]));_0x18a749[_0xb7cc('0x3b')]=_0x18a749['attributes']['length']?_0x18a749[_0xb7cc('0x3b')]:_0x4f2602[_0xb7cc('0x35')];if(!_0x549cfe['query'][_0xb7cc('0x3c')](_0xb7cc('0x3d'))){_0x18a749[_0xb7cc('0x21')]=qs[_0xb7cc('0x21')](_0x549cfe['query'][_0xb7cc('0x21')]);_0x18a749[_0xb7cc('0x1f')]=qs[_0xb7cc('0x1f')](_0x549cfe[_0xb7cc('0x36')]['offset']);}_0x18a749[_0xb7cc('0x3e')]=qs[_0xb7cc('0x3f')](_0x549cfe['query'][_0xb7cc('0x3f')]);_0x18a749[_0xb7cc('0x40')]=qs[_0xb7cc('0x38')](_[_0xb7cc('0x41')](_0x549cfe[_0xb7cc('0x36')],_0x4f2602[_0xb7cc('0x38')]),_0x36028a);if(_0x549cfe['query'][_0xb7cc('0x42')]){_0x18a749[_0xb7cc('0x40')]=_[_0xb7cc('0x43')](_0x18a749[_0xb7cc('0x40')],{'$or':_[_0xb7cc('0x44')](_0x36028a,function(_0x3ed608){if(_0x3ed608['type']!==_0xb7cc('0x45')){var _0x2e3800={};_0x2e3800[_0x3ed608[_0xb7cc('0x2e')]]={'$like':'%'+_0x549cfe['query'][_0xb7cc('0x42')]+'%'};return _0x2e3800;}})});}_0x18a749=_[_0xb7cc('0x43')]({},_0x18a749,_0x549cfe['options']);var _0x2d2680={'where':_0x18a749[_0xb7cc('0x40')]};return db[_0xb7cc('0x31')][_0xb7cc('0x22')](_0x2d2680)['then'](function(_0xb007d1){_0x1dc59b['count']=_0xb007d1;if(_0x549cfe[_0xb7cc('0x36')][_0xb7cc('0x46')]){_0x18a749['include']=[{'all':!![]}];}return db[_0xb7cc('0x31')][_0xb7cc('0x47')](_0x18a749);})['then'](function(_0x181ab4){_0x1dc59b[_0xb7cc('0x48')]=_0x181ab4;return _0x1dc59b;})[_0xb7cc('0x28')](respondWithFilteredResult(_0x10dd56,_0x18a749))[_0xb7cc('0x49')](handleError(_0x10dd56,null));};exports[_0xb7cc('0x4a')]=function(_0x3c7b12,_0x2a9050){var _0x4f2760={'raw':!![],'where':{'id':_0x3c7b12[_0xb7cc('0x4b')]['id']}},_0x4541f4={};_0x4541f4[_0xb7cc('0x35')]=_['keys'](db['Plugin'][_0xb7cc('0x32')]);_0x4541f4['query']=_[_0xb7cc('0x37')](_0x3c7b12['query']);_0x4541f4[_0xb7cc('0x38')]=_['intersection'](_0x4541f4[_0xb7cc('0x35')],_0x4541f4['query']);_0x4f2760[_0xb7cc('0x3b')]=_[_0xb7cc('0x39')](_0x4541f4[_0xb7cc('0x35')],qs['fields'](_0x3c7b12[_0xb7cc('0x36')][_0xb7cc('0x3a')]));_0x4f2760[_0xb7cc('0x3b')]=_0x4f2760[_0xb7cc('0x3b')][_0xb7cc('0x4c')]?_0x4f2760[_0xb7cc('0x3b')]:_0x4541f4[_0xb7cc('0x35')];if(_0x3c7b12[_0xb7cc('0x36')]['includeAll']){_0x4f2760[_0xb7cc('0x4d')]=[{'all':!![]}];}_0x4f2760=_['merge']({},_0x4f2760,_0x3c7b12[_0xb7cc('0x4e')]);return db[_0xb7cc('0x31')][_0xb7cc('0x4f')](_0x4f2760)['then'](handleEntityNotFound(_0x2a9050,null))[_0xb7cc('0x28')](respondWithResult(_0x2a9050,null))[_0xb7cc('0x49')](handleError(_0x2a9050,null));};exports[_0xb7cc('0x50')]=function(_0x161313,_0x52a02d,_0x3f7fa9){return db[_0xb7cc('0x31')][_0xb7cc('0x4f')]({'where':{'id':_0x161313['params']['id']},'attributes':[_0xb7cc('0x2e'),_0xb7cc('0x51')],'raw':!![]})[_0xb7cc('0x28')](handleEntityNotFound(_0x52a02d,null))[_0xb7cc('0x28')](function(_0x5cf1cb){if(_0x5cf1cb){var _0x160562=path[_0xb7cc('0x52')](config['root'],_0xb7cc('0x53'),util['format'](_0xb7cc('0x54'),path[_0xb7cc('0x55')](_0x5cf1cb[_0xb7cc('0x51')])));var _0x2638dd=fs[_0xb7cc('0x56')](_0x160562);var _0x1971b6=archiver(_0xb7cc('0x57'),{'zlib':{'level':0x9}});_0x1971b6['on'](_0xb7cc('0x58'),function(_0x456056){if(_0x456056['code']===_0xb7cc('0x59')){logger[_0xb7cc('0x2d')](_0x456056);}else{throw new db['Sequelize']['Error'](_0xb7cc('0x5a'));}});_0x1971b6['on'](_0xb7cc('0x2d'),function(_0x593940){throw new db[(_0xb7cc('0x5b'))][(_0xb7cc('0x5c'))](_0xb7cc('0x5a'));});_0x1971b6[_0xb7cc('0x5d')](_0x2638dd);_0x1971b6[_0xb7cc('0x5e')]('**/*',{'cwd':path[_0xb7cc('0x52')](config[_0xb7cc('0x5f')],_0xb7cc('0x53'),path[_0xb7cc('0x60')](_0x5cf1cb[_0xb7cc('0x51')])),'ignore':[path[_0xb7cc('0x52')](path[_0xb7cc('0x55')](_0x5cf1cb[_0xb7cc('0x51')]),_0xb7cc('0x61')),path[_0xb7cc('0x52')](path['basename'](_0x5cf1cb[_0xb7cc('0x51')]),_0xb7cc('0x62'))],'nodir':!![]})[_0xb7cc('0x63')]();_0x2638dd['on'](_0xb7cc('0x64'),function(){if(!fs[_0xb7cc('0x65')](_0x160562)){throw new db['Sequelize']['Error']('Plugin\x20not\x20found');}return _0x52a02d['download'](_0x160562,util[_0xb7cc('0x66')](_0xb7cc('0x54'),path['basename'](_0x5cf1cb[_0xb7cc('0x51')])),function(_0xcba225){if(_0xcba225){throw new db[(_0xb7cc('0x5b'))]['Error']('Error\x20while\x20downloading\x20the\x20plugin');}fs[_0xb7cc('0x67')](_0x160562);logger[_0xb7cc('0x68')]('Download\x20completed');logger['info'](_0xb7cc('0x69'));});});}return null;})['catch'](handleError(_0x52a02d,null));};exports[_0xb7cc('0x6a')]=function(_0x56386f,_0x261bbf,_0x13df49){var _0x150ca2=path[_0xb7cc('0x55')](_0x56386f[_0xb7cc('0x6b')][_0xb7cc('0x6c')],path['extname'](_0x56386f[_0xb7cc('0x6b')][_0xb7cc('0x6c')]));var _0xcd7ec2=path[_0xb7cc('0x52')](config[_0xb7cc('0x5f')],_0xb7cc('0x53'),_0x56386f[_0xb7cc('0x6b')][_0xb7cc('0x6c')]);var _0x575e3c=path[_0xb7cc('0x52')](config[_0xb7cc('0x5f')],_0xb7cc('0x53'),_0x150ca2);logger['info']('Plugin\x20upload\x20filepath:\x20%s',_0xcd7ec2);logger[_0xb7cc('0x68')](_0xb7cc('0x6d'),_0x575e3c);try{fs[_0xb7cc('0x6e')](_0xcd7ec2,parseInt(_0xb7cc('0x6f'),0x8));extract(_0xcd7ec2,{'dir':_0x575e3c},function(_0x33b4c6){if(_0x33b4c6){logger[_0xb7cc('0x2d')](_0x33b4c6);handleError(_0x33b4c6,!![]);};var _0x3609ea=fs[_0xb7cc('0x70')](_0x575e3c);if(_0x3609ea[_0xb7cc('0x4c')]>0x1){removeReferences(_0xcd7ec2,_0x575e3c);logger[_0xb7cc('0x2d')](_0xb7cc('0x71'));return _0x13df49(new Error(_0xb7cc('0x71')));}var _0x3ffa97=fs[_0xb7cc('0x72')](path[_0xb7cc('0x52')](_0x575e3c,_0x3609ea[0x0]));if(_0x3ffa97[_0xb7cc('0x73')]()){removeReferences(_0xcd7ec2,_0x575e3c);logger[_0xb7cc('0x2d')](_0xb7cc('0x71'));return _0x13df49(new Error(_0xb7cc('0x71')));}if(_0x3ffa97[_0xb7cc('0x74')]()){var _0x281254=fs[_0xb7cc('0x70')](path['join'](_0x575e3c,_0x3609ea[0x0]));if(_0x281254[_0xb7cc('0x4c')]===0x0){removeReferences(_0xcd7ec2,_0x575e3c);logger[_0xb7cc('0x2d')](_0xb7cc('0x71'));return _0x13df49(new Error(_0xb7cc('0x71')));}var _0x181865=_0x281254[_0xb7cc('0x75')](function(_0x4f1c55){return _0x4f1c55===_0xb7cc('0x76');});if(!_0x181865){return _0x13df49(new Error(_0xb7cc('0x77')));}var _0x2be1ce=fs[_0xb7cc('0x78')](path[_0xb7cc('0x52')](_0x575e3c,_0x3609ea[0x0],_0xb7cc('0x76')));var _0x522110=JSON[_0xb7cc('0x79')](_0x2be1ce);if('undefined'==typeof _0x522110['name']){return _0x13df49(new Error('Invalid\x20manifest:\x20name\x20missing'));}if(_0xb7cc('0x20')==typeof _0x522110[_0xb7cc('0x34')]){return _0x13df49(new Error(_0xb7cc('0x7a')));}if('undefined'==typeof _0x522110[_0xb7cc('0x7b')]){return _0x13df49(new Error('Invalid\x20manifest:\x20version\x20not\x20specified'));}if(_0xb7cc('0x20')==typeof _0x522110['parameters']){return _0x13df49(new Error(_0xb7cc('0x7c')));}if(_0x522110[_0xb7cc('0x34')]===_0xb7cc('0x7d')){if(_0xb7cc('0x20')==typeof _0x522110[_0xb7cc('0x7e')][_0xb7cc('0x7f')]){return _0x13df49(new Error(_0xb7cc('0x80')));}if(_0xb7cc('0x20')==typeof _0x522110[_0xb7cc('0x7e')][_0xb7cc('0x7f')]['admin']&&_0xb7cc('0x20')==typeof _0x522110['parameters'][_0xb7cc('0x7f')][_0xb7cc('0x81')]){return _0x13df49(new Error(_0xb7cc('0x82')));}}else if(_0x522110['type']===_0xb7cc('0x83')){if('undefined'==typeof _0x522110[_0xb7cc('0x7e')]['scriptName']){return _0x13df49(new Error('Invalid\x20manifest:\x20script\x20name\x20missing'));}if(_0xb7cc('0x20')==typeof _0x522110[_0xb7cc('0x7e')][_0xb7cc('0x84')]){return _0x13df49(new Error(_0xb7cc('0x85')));}}else{return _0x13df49(new Error(_0xb7cc('0x86')));}var _0x50b84e=_0x522110['name'];var _0x63f996=_0x522110[_0xb7cc('0x87')];var _0x4181a4=_0x522110['type'];var _0x2616e3=_0x522110[_0xb7cc('0x88')]?_0x522110[_0xb7cc('0x88')]:_0xb7cc('0x89');var _0x2856f4=_0x522110[_0xb7cc('0x8a')]?_0x522110[_0xb7cc('0x8a')]:_0xb7cc('0x8b');var _0x36488a='';var _0x16067e='';var _0x37e84f='';var _0x55ae74='';var _0x5b4afa=_0x522110[_0xb7cc('0x7b')];if(_0x4181a4==='html'){if(_0xb7cc('0x20')!=typeof _0x522110[_0xb7cc('0x7e')]['views'][_0xb7cc('0x8c')]){var _0x37fb05=_0x522110[_0xb7cc('0x7e')][_0xb7cc('0x7f')][_0xb7cc('0x8c')];if(!/^(f|ht)tps?:\/\//i[_0xb7cc('0x8d')](_0x37fb05)){_0x36488a=path[_0xb7cc('0x52')](_0xb7cc('0x8e'),_0x150ca2,_0x3609ea[0x0],_0x37fb05);}else{_0x36488a=_0x37fb05;}}else{logger['info'](_0xb7cc('0x8f'));}if('undefined'!=typeof _0x522110[_0xb7cc('0x7e')][_0xb7cc('0x7f')][_0xb7cc('0x81')]){var _0xf5072e=_0x522110[_0xb7cc('0x7e')][_0xb7cc('0x7f')][_0xb7cc('0x81')];if(!/^(f|ht)tps?:\/\//i[_0xb7cc('0x8d')](_0xf5072e)){_0x16067e=path[_0xb7cc('0x52')](_0xb7cc('0x8e'),_0x150ca2,_0x3609ea[0x0],_0xf5072e);}else{_0x16067e=_0xf5072e;}}else{logger[_0xb7cc('0x68')](_0xb7cc('0x90'));}}else if(_0x4181a4==='script'){_0x37e84f=_0x522110[_0xb7cc('0x7e')]['scriptName'];_0x55ae74=_0x522110[_0xb7cc('0x7e')]['scriptPath'];if(_0xb7cc('0x20')!=typeof _0x522110[_0xb7cc('0x7e')]['views']){if(_0xb7cc('0x20')!=typeof _0x522110[_0xb7cc('0x7e')]['views']['admin']){var _0x37fb05=_0x522110[_0xb7cc('0x7e')]['views'][_0xb7cc('0x8c')];if(!/^(f|ht)tps?:\/\//i[_0xb7cc('0x8d')](_0x37fb05)){_0x36488a=path[_0xb7cc('0x52')](_0xb7cc('0x8e'),_0x150ca2,_0x3609ea[0x0],_0x37fb05);}else{_0x36488a=_0x37fb05;}}if(_0xb7cc('0x20')!=typeof _0x522110[_0xb7cc('0x7e')][_0xb7cc('0x7f')]['agent']){var _0xf5072e=_0x522110['parameters']['views'][_0xb7cc('0x81')];if(!/^(f|ht)tps?:\/\//i[_0xb7cc('0x8d')](_0xf5072e)){_0x16067e=path[_0xb7cc('0x52')](_0xb7cc('0x8e'),_0x150ca2,_0x3609ea[0x0],_0xf5072e);}else{_0x16067e=_0xf5072e;}}}}var _0xec3220={'name':_0x50b84e,'description':_0x63f996,'path':path[_0xb7cc('0x52')](_0x150ca2,_0x3609ea[0x0]),'type':_0x4181a4,'sidebar':_0x2616e3,'icon':_0x2856f4,'adminUrl':_0x36488a,'agentUrl':_0x16067e,'scriptName':_0x37e84f,'scriptPath':_0x55ae74,'version':_0x5b4afa};removeReferences(_0xcd7ec2,null);return db[_0xb7cc('0x31')][_0xb7cc('0x91')](_0xec3220)[_0xb7cc('0x28')](function(_0x4a5f7e){var _0x3bab4b={'role':_0x56386f[_0xb7cc('0x92')]['role'],'userProfileId':_0x56386f[_0xb7cc('0x92')][_0xb7cc('0x93')]};if(!_0x3bab4b)throw new Error(_0xb7cc('0x94'));if(_0x3bab4b['role']===_0xb7cc('0x95')){var _0xfbbf71=_0x4a5f7e[_0xb7cc('0x2a')]({'plain':!![]});return db[_0xb7cc('0x96')][_0xb7cc('0x4f')]({'where':{'name':'Plugins','userProfileId':_0x3bab4b[_0xb7cc('0x93')]},'raw':!![]})[_0xb7cc('0x28')](function(_0x5e2585){if(_0x5e2585&&_0x5e2585[_0xb7cc('0x97')]===0x0){return db['UserProfileResource'][_0xb7cc('0x91')]({'name':_0xfbbf71['name'],'resourceId':_0xfbbf71['id'],'type':_0x5e2585[_0xb7cc('0x2e')],'sectionId':_0x5e2585['id']},{})[_0xb7cc('0x28')](function(){return _0x4a5f7e;});}else{return _0x4a5f7e;}})[_0xb7cc('0x49')](function(_0xbd7280){logger[_0xb7cc('0x2d')](_0xb7cc('0x98'),_0xbd7280);throw _0xbd7280;});}return _0x4a5f7e;})[_0xb7cc('0x28')](respondWithResult(_0x261bbf,null))[_0xb7cc('0x49')](handleError(_0x261bbf,null));}});}catch(_0x56d15b){_0x261bbf[_0xb7cc('0x1d')](0x1f4)[_0xb7cc('0x2f')](_0x56d15b);}};function removeReferences(_0x23ba34,_0x27fc4b){try{if(_0x23ba34){fs[_0xb7cc('0x67')](_0x23ba34);logger[_0xb7cc('0x68')](_0xb7cc('0x99'));}if(_0x27fc4b){rimraf(_0x27fc4b,function(){});logger[_0xb7cc('0x68')](_0xb7cc('0x9a'));}}catch(_0x41b3a6){logger[_0xb7cc('0x2d')](_0x41b3a6);}}exports['update']=function(_0x1c70e2,_0x502bed,_0x5f5f11){return db[_0xb7cc('0x31')][_0xb7cc('0x4f')]({'where':{'id':_0x1c70e2['params']['id']}})[_0xb7cc('0x28')](handleEntityNotFound(_0x502bed,null))[_0xb7cc('0x28')](saveUpdates(_0x1c70e2[_0xb7cc('0x92')],null))[_0xb7cc('0x28')](respondWithResult(_0x502bed,null))['catch'](handleError(_0x502bed,null));};exports[_0xb7cc('0x9b')]=function(_0xeb9678,_0x5541ad,_0x6e0916){return db[_0xb7cc('0x31')]['find']({'where':{'id':_0xeb9678[_0xb7cc('0x4b')]['id']}})[_0xb7cc('0x28')](function(_0x1a5947){if(_0x1a5947){return _0x1a5947[_0xb7cc('0x29')]();}})[_0xb7cc('0x28')](function(_0x5d738a){rimraf(path[_0xb7cc('0x52')](config[_0xb7cc('0x5f')],'server/files/plugins',path[_0xb7cc('0x60')](_0x5d738a['path'])),function(){});return _0x5d738a;})[_0xb7cc('0x28')](handleEntityNotFound(_0x5541ad,null))[_0xb7cc('0x28')](respondWithStatusCode(_0x5541ad,null))[_0xb7cc('0x49')](handleError(_0x5541ad,null));};exports['webhookGet']=function(_0x6338fa,_0x2bec59,_0xfacf75){return BPromise['resolve']()[_0xb7cc('0x28')](function(){if(!_0x6338fa[_0xb7cc('0x36')]['path']){throw new Error(_0xb7cc('0x9c'));}if(!_0x6338fa[_0xb7cc('0x36')]['port']){throw new Error(_0xb7cc('0x9d'));}var _0x533634=_0x6338fa[_0xb7cc('0x36')][_0xb7cc('0x9e')]?_0x6338fa['query']['hostname']+':'+_0x6338fa[_0xb7cc('0x36')]['port']:_0xb7cc('0x9f')+_0x6338fa['query'][_0xb7cc('0xa0')];var _0x4e601a=_0x6338fa[_0xb7cc('0x36')][_0xb7cc('0x1e')]?_0x6338fa[_0xb7cc('0x36')]['json']:!![];var _0x4c1497=_0x6338fa[_0xb7cc('0x36')][_0xb7cc('0xa1')]?_0x6338fa[_0xb7cc('0x36')]['encoding']:null;var _0x1f3d27={'method':_0x6338fa['method'],'uri':util[_0xb7cc('0x66')](_0xb7cc('0xa2'),_0x533634,_0x6338fa[_0xb7cc('0x36')]['path']),'json':_0x4e601a,'resolveWithFullResponse':!![],'encoding':_0x4c1497,'qs':_0x6338fa[_0xb7cc('0x36')]};if(_0x6338fa['headers']){_0x1f3d27[_0xb7cc('0xa3')]=_0x6338fa[_0xb7cc('0xa3')];if(_0x1f3d27['headers']['content-length']){delete _0x1f3d27[_0xb7cc('0xa3')][_0xb7cc('0xa4')];}}if(_0x1f3d27[_0xb7cc('0xa3')][_0xb7cc('0xa5')]){delete _0x1f3d27[_0xb7cc('0xa3')][_0xb7cc('0xa5')];}return rp(_0x1f3d27);})[_0xb7cc('0x28')](function(_0x4316ce){if(_0x4316ce){_0x2bec59[_0xb7cc('0x23')](_0x4316ce['headers']);logger[_0xb7cc('0x68')](_0x4316ce[_0xb7cc('0x92')]);if(_[_0xb7cc('0xa6')](_0x6338fa[_0xb7cc('0x36')][_0xb7cc('0x51')],_0xb7cc('0x50'))&&_0x4316ce[_0xb7cc('0xa7')]==0x1f4){return _0x2bec59[_0xb7cc('0x1c')](_0x4316ce['statusCode']);}else{return _0x2bec59['status'](_0x4316ce[_0xb7cc('0xa7')])[_0xb7cc('0x2f')](_0x4316ce['body']);}}else{return _0x2bec59['sendStatus'](0xc8);}})[_0xb7cc('0x49')](handleError(_0x2bec59,null));};exports['webhookPost']=function(_0x29d9fa,_0x3f801d,_0x226682){return BPromise[_0xb7cc('0xa8')]()['then'](function(){if(!_0x29d9fa[_0xb7cc('0x36')][_0xb7cc('0x51')]){throw new Error('\x27PATH\x27\x20parameter\x20not\x20specified');}if(!_0x29d9fa[_0xb7cc('0x36')]['port']){throw new Error(_0xb7cc('0x9d'));}var _0xccd408=_0x29d9fa['query'][_0xb7cc('0x9e')]?_0x29d9fa['query'][_0xb7cc('0x9e')]+':'+_0x29d9fa['query'][_0xb7cc('0xa0')]:_0xb7cc('0x9f')+_0x29d9fa['query'][_0xb7cc('0xa0')];var _0x24a8a4=_0x29d9fa['query'][_0xb7cc('0x1e')]?_0x29d9fa[_0xb7cc('0x36')][_0xb7cc('0x1e')]:!![];var _0x23ae27=_0x29d9fa['query'][_0xb7cc('0xa1')]?_0x29d9fa['query'][_0xb7cc('0xa1')]:null;var _0x2cbdc5={'method':_0x29d9fa[_0xb7cc('0xa9')],'uri':util['format'](_0xb7cc('0xa2'),_0xccd408,_0x29d9fa[_0xb7cc('0x36')][_0xb7cc('0x51')]),'json':_0x24a8a4,'resolveWithFullResponse':!![],'encoding':_0x23ae27,'body':_0x29d9fa[_0xb7cc('0x92')]};if(_0x29d9fa[_0xb7cc('0xa3')]){_0x2cbdc5[_0xb7cc('0xa3')]=_0x29d9fa[_0xb7cc('0xa3')];if(_0x2cbdc5[_0xb7cc('0xa3')][_0xb7cc('0xa4')]){delete _0x2cbdc5[_0xb7cc('0xa3')]['content-length'];}}if(_0x2cbdc5[_0xb7cc('0xa3')][_0xb7cc('0xa5')]){delete _0x2cbdc5[_0xb7cc('0xa3')][_0xb7cc('0xa5')];}return rp(_0x2cbdc5);})[_0xb7cc('0x28')](function(_0x245a3f){if(_0x245a3f){_0x3f801d['set'](_0x245a3f[_0xb7cc('0xa3')]);logger[_0xb7cc('0x68')](_0x245a3f[_0xb7cc('0x92')]);return _0x3f801d[_0xb7cc('0x1d')](_0x245a3f[_0xb7cc('0xa7')])['send'](_0x245a3f[_0xb7cc('0x92')]);}else{return _0x3f801d[_0xb7cc('0x1c')](0xc8);}})[_0xb7cc('0x49')](handleError(_0x3f801d,null));};
\ No newline at end of file
index 767c6f3..c79375f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1354=['../../mysqldb','Plugin','setMaxListeners','save','update','remove','emit','hasOwnProperty','exports','events'];(function(_0x2980eb,_0x4ff0d9){var _0x30efab=function(_0x32cc59){while(--_0x32cc59){_0x2980eb['push'](_0x2980eb['shift']());}};_0x30efab(++_0x4ff0d9);}(_0x1354,0x95));var _0x4135=function(_0x4854d6,_0x2f1264){_0x4854d6=_0x4854d6-0x0;var _0x3885c0=_0x1354[_0x4854d6];return _0x3885c0;};'use strict';var EventEmitter=require(_0x4135('0x0'));var Plugin=require(_0x4135('0x1'))['db'][_0x4135('0x2')];var PluginEvents=new EventEmitter();PluginEvents[_0x4135('0x3')](0x0);var events={'afterCreate':_0x4135('0x4'),'afterUpdate':_0x4135('0x5'),'afterDestroy':_0x4135('0x6')};function emitEvent(_0x537b00){return function(_0x2c75a3,_0x4ed434,_0x202042){PluginEvents['emit'](_0x537b00+':'+_0x2c75a3['id'],_0x2c75a3);PluginEvents[_0x4135('0x7')](_0x537b00,_0x2c75a3);_0x202042(null);};}for(var e in events){if(events[_0x4135('0x8')](e)){var event=events[e];Plugin['hook'](e,emitEvent(event));}}module[_0x4135('0x9')]=PluginEvents;
\ No newline at end of file
+var _0x9a96=['../../mysqldb','Plugin','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports','events'];(function(_0x511bd1,_0x223e5b){var _0x4c48ec=function(_0x31814e){while(--_0x31814e){_0x511bd1['push'](_0x511bd1['shift']());}};_0x4c48ec(++_0x223e5b);}(_0x9a96,0xd0));var _0x69a9=function(_0x4be9d2,_0x3fd318){_0x4be9d2=_0x4be9d2-0x0;var _0x5e16bd=_0x9a96[_0x4be9d2];return _0x5e16bd;};'use strict';var EventEmitter=require(_0x69a9('0x0'));var Plugin=require(_0x69a9('0x1'))['db'][_0x69a9('0x2')];var PluginEvents=new EventEmitter();PluginEvents[_0x69a9('0x3')](0x0);var events={'afterCreate':_0x69a9('0x4'),'afterUpdate':_0x69a9('0x5'),'afterDestroy':_0x69a9('0x6')};function emitEvent(_0x6c91e5){return function(_0x303516,_0x2480e1,_0xb7ac87){PluginEvents[_0x69a9('0x7')](_0x6c91e5+':'+_0x303516['id'],_0x303516);PluginEvents['emit'](_0x6c91e5,_0x303516);_0xb7ac87(null);};}for(var e in events){if(events[_0x69a9('0x8')](e)){var event=events[e];Plugin[_0x69a9('0x9')](e,emitEvent(event));}}module[_0x69a9('0xa')]=PluginEvents;
\ No newline at end of file
index a3b3c3a..5a6f929 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb9f=['exports','Plugin','lodash','util','api','bluebird','request-promise','path','rimraf','../../config/environment','./plugin.attributes'];(function(_0x4492af,_0x47e25d){var _0x216729=function(_0x4964c8){while(--_0x4964c8){_0x4492af['push'](_0x4492af['shift']());}};_0x216729(++_0x47e25d);}(_0xcb9f,0x65));var _0xfcb9=function(_0x4b2522,_0x3ea320){_0x4b2522=_0x4b2522-0x0;var _0x535bc2=_0xcb9f[_0x4b2522];return _0x535bc2;};'use strict';var _=require(_0xfcb9('0x0'));var util=require(_0xfcb9('0x1'));var logger=require('../../config/logger')(_0xfcb9('0x2'));var moment=require('moment');var BPromise=require(_0xfcb9('0x3'));var rp=require(_0xfcb9('0x4'));var fs=require('fs');var path=require(_0xfcb9('0x5'));var rimraf=require(_0xfcb9('0x6'));var config=require(_0xfcb9('0x7'));var attributes=require(_0xfcb9('0x8'));module[_0xfcb9('0x9')]=function(_0x50a2b9,_0x4e613e){return _0x50a2b9['define'](_0xfcb9('0xa'),attributes,{'tableName':'plugins','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd694=['./plugin.attributes','define','Plugin','lodash','../../config/logger','api','moment','bluebird','path','../../config/environment'];(function(_0x3550dc,_0x26f0b7){var _0x16f62e=function(_0xb01b96){while(--_0xb01b96){_0x3550dc['push'](_0x3550dc['shift']());}};_0x16f62e(++_0x26f0b7);}(_0xd694,0x11b));var _0x4d69=function(_0x571d85,_0xda439c){_0x571d85=_0x571d85-0x0;var _0x3c2e07=_0xd694[_0x571d85];return _0x3c2e07;};'use strict';var _=require(_0x4d69('0x0'));var util=require('util');var logger=require(_0x4d69('0x1'))(_0x4d69('0x2'));var moment=require(_0x4d69('0x3'));var BPromise=require(_0x4d69('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x4d69('0x5'));var rimraf=require('rimraf');var config=require(_0x4d69('0x6'));var attributes=require(_0x4d69('0x7'));module['exports']=function(_0x2b85a8,_0x3e4906){return _0x2b85a8[_0x4d69('0x8')](_0x4d69('0x9'),attributes,{'tableName':'plugins','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 854923d..4156f71 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe793=['raw','debug','lodash','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','register','request','then','info','Plugin,\x20%s,\x20%s','request\x20sent','Plugin,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','CreatePlugin','Plugin','create','options'];(function(_0x4b7895,_0x3c4f5d){var _0x264180=function(_0xe0e861){while(--_0xe0e861){_0x4b7895['push'](_0x4b7895['shift']());}};_0x264180(++_0x3c4f5d);}(_0xe793,0x176));var _0x3e79=function(_0x431897,_0x57f0f3){_0x431897=_0x431897-0x0;var _0x2a30cd=_0xe793[_0x431897];return _0x2a30cd;};'use strict';var _=require(_0x3e79('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x3e79('0x1'));var rs=require(_0x3e79('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x3e79('0x3'))['db'];var utils=require(_0x3e79('0x4'));var logger=require(_0x3e79('0x5'))('rpc');var config=require(_0x3e79('0x6'));var jayson=require(_0x3e79('0x7'));var client=jayson[_0x3e79('0x8')][_0x3e79('0x9')]({'port':0x232a});config[_0x3e79('0xa')]=_[_0x3e79('0xb')](config[_0x3e79('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0x3e79('0xc'))(new Redis(config['redis']));require('./plugin.socket')[_0x3e79('0xd')](socket);function respondWithRpcPromise(_0x3281c4,_0x5cdd9e,_0xd7c1f){return new BPromise(function(_0x33e9ff,_0x43c6f2){return client[_0x3e79('0xe')](_0x3281c4,_0xd7c1f)[_0x3e79('0xf')](function(_0x390589){logger[_0x3e79('0x10')](_0x3e79('0x11'),_0x5cdd9e,_0x3e79('0x12'));logger['debug'](_0x3e79('0x13'),_0x5cdd9e,'request\x20sent',JSON[_0x3e79('0x14')](_0x390589));if(_0x390589[_0x3e79('0x15')]){if(_0x390589[_0x3e79('0x15')]['code']===0x1f4){logger['error'](_0x3e79('0x11'),_0x5cdd9e,_0x390589['error'][_0x3e79('0x16')]);return _0x43c6f2(_0x390589['error'][_0x3e79('0x16')]);}logger[_0x3e79('0x15')]('Plugin,\x20%s,\x20%s',_0x5cdd9e,_0x390589[_0x3e79('0x15')][_0x3e79('0x16')]);return _0x33e9ff(_0x390589[_0x3e79('0x15')]['message']);}else{logger['info'](_0x3e79('0x11'),_0x5cdd9e,_0x3e79('0x12'));_0x33e9ff(_0x390589[_0x3e79('0x17')]['message']);}})[_0x3e79('0x18')](function(_0x1d50a4){logger[_0x3e79('0x15')](_0x3e79('0x11'),_0x5cdd9e,_0x1d50a4);_0x43c6f2(_0x1d50a4);});});}exports[_0x3e79('0x19')]=function(_0x170795){var _0x57125d=this;return new Promise(function(_0x592410,_0x37ba4c){return db[_0x3e79('0x1a')][_0x3e79('0x1b')](_0x170795['body'],{'raw':_0x170795[_0x3e79('0x1c')]?_0x170795[_0x3e79('0x1c')][_0x3e79('0x1d')]===undefined?!![]:![]:!![]})[_0x3e79('0xf')](function(_0x24ba30){logger[_0x3e79('0x10')]('CreatePlugin',_0x170795);logger[_0x3e79('0x1e')]('CreatePlugin',_0x170795,JSON[_0x3e79('0x14')](_0x24ba30));_0x592410(_0x24ba30);})[_0x3e79('0x18')](function(_0x20ab86){logger[_0x3e79('0x15')]('CreatePlugin',_0x20ab86[_0x3e79('0x16')],_0x170795);_0x37ba4c(_0x57125d['error'](0x1f4,_0x20ab86[_0x3e79('0x16')]));});});};
\ No newline at end of file
+var _0x4ee7=['bluebird','randomstring','ioredis','../../mysqldb','rpc','client','http','redis','defaults','localhost','socket.io-emitter','./plugin.socket','register','request','then','info','Plugin,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','CreatePlugin','Plugin','create','body','options','raw','lodash'];(function(_0x4c59f8,_0x1376f9){var _0x58d5e2=function(_0x5021c7){while(--_0x5021c7){_0x4c59f8['push'](_0x4c59f8['shift']());}};_0x58d5e2(++_0x1376f9);}(_0x4ee7,0x9a));var _0x74ee=function(_0x4aaca6,_0x2b79ba){_0x4aaca6=_0x4aaca6-0x0;var _0x329d37=_0x4ee7[_0x4aaca6];return _0x329d37;};'use strict';var _=require(_0x74ee('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x74ee('0x1'));var rs=require(_0x74ee('0x2'));var fs=require('fs');var Redis=require(_0x74ee('0x3'));var db=require(_0x74ee('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x74ee('0x5'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x74ee('0x6')][_0x74ee('0x7')]({'port':0x232a});config[_0x74ee('0x8')]=_[_0x74ee('0x9')](config[_0x74ee('0x8')],{'host':_0x74ee('0xa'),'port':0x18eb});var socket=require(_0x74ee('0xb'))(new Redis(config[_0x74ee('0x8')]));require(_0x74ee('0xc'))[_0x74ee('0xd')](socket);function respondWithRpcPromise(_0x882b4f,_0x22dd6f,_0x26f0fa){return new BPromise(function(_0x265612,_0x18503a){return client[_0x74ee('0xe')](_0x882b4f,_0x26f0fa)[_0x74ee('0xf')](function(_0x5b60c5){logger[_0x74ee('0x10')](_0x74ee('0x11'),_0x22dd6f,_0x74ee('0x12'));logger[_0x74ee('0x13')]('Plugin,\x20%s,\x20%s,\x20%s',_0x22dd6f,_0x74ee('0x12'),JSON[_0x74ee('0x14')](_0x5b60c5));if(_0x5b60c5[_0x74ee('0x15')]){if(_0x5b60c5[_0x74ee('0x15')][_0x74ee('0x16')]===0x1f4){logger[_0x74ee('0x15')](_0x74ee('0x11'),_0x22dd6f,_0x5b60c5[_0x74ee('0x15')]['message']);return _0x18503a(_0x5b60c5[_0x74ee('0x15')][_0x74ee('0x17')]);}logger['error'](_0x74ee('0x11'),_0x22dd6f,_0x5b60c5[_0x74ee('0x15')][_0x74ee('0x17')]);return _0x265612(_0x5b60c5['error']['message']);}else{logger[_0x74ee('0x10')](_0x74ee('0x11'),_0x22dd6f,_0x74ee('0x12'));_0x265612(_0x5b60c5[_0x74ee('0x18')][_0x74ee('0x17')]);}})['catch'](function(_0x584df0){logger[_0x74ee('0x15')](_0x74ee('0x11'),_0x22dd6f,_0x584df0);_0x18503a(_0x584df0);});});}exports[_0x74ee('0x19')]=function(_0x380574){var _0x34b828=this;return new Promise(function(_0x5e069e,_0x544a05){return db[_0x74ee('0x1a')][_0x74ee('0x1b')](_0x380574[_0x74ee('0x1c')],{'raw':_0x380574['options']?_0x380574[_0x74ee('0x1d')][_0x74ee('0x1e')]===undefined?!![]:![]:!![]})[_0x74ee('0xf')](function(_0x5703c2){logger['info'](_0x74ee('0x19'),_0x380574);logger[_0x74ee('0x13')](_0x74ee('0x19'),_0x380574,JSON[_0x74ee('0x14')](_0x5703c2));_0x5e069e(_0x5703c2);})['catch'](function(_0x6777be){logger['error'](_0x74ee('0x19'),_0x6777be[_0x74ee('0x17')],_0x380574);_0x544a05(_0x34b828[_0x74ee('0x15')](0x1f4,_0x6777be[_0x74ee('0x17')]));});});};
\ No newline at end of file
index 1c8bd9d..f89d446 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x35fa=['remove','emit','removeListener','register','length','save'];(function(_0x359723,_0x39ab0a){var _0x1e7a4e=function(_0x164052){while(--_0x164052){_0x359723['push'](_0x359723['shift']());}};_0x1e7a4e(++_0x39ab0a);}(_0x35fa,0x1c7));var _0xa35f=function(_0x4bc591,_0x30c1d6){_0x4bc591=_0x4bc591-0x0;var _0xc0d2c1=_0x35fa[_0x4bc591];return _0xc0d2c1;};'use strict';var PluginEvents=require('./plugin.events');var events=[_0xa35f('0x0'),_0xa35f('0x1'),'update'];function createListener(_0x44033a,_0xd47d77){return function(_0x511e19){_0xd47d77[_0xa35f('0x2')](_0x44033a,_0x511e19);};}function removeListener(_0x6e8de2,_0x45b772){return function(){PluginEvents[_0xa35f('0x3')](_0x6e8de2,_0x45b772);};}exports[_0xa35f('0x4')]=function(_0x1d3e6b){for(var _0x344f73=0x0,_0x4780af=events[_0xa35f('0x5')];_0x344f73<_0x4780af;_0x344f73++){var _0x2e2dc8=events[_0x344f73];var _0x1b700d=createListener('plugin:'+_0x2e2dc8,_0x1d3e6b);PluginEvents['on'](_0x2e2dc8,_0x1b700d);}};
\ No newline at end of file
+var _0x7a66=['length','plugin:','./plugin.events','save','update','removeListener','register'];(function(_0xc33f32,_0x460ea7){var _0x10ccc3=function(_0x4ec0bf){while(--_0x4ec0bf){_0xc33f32['push'](_0xc33f32['shift']());}};_0x10ccc3(++_0x460ea7);}(_0x7a66,0xfe));var _0x67a6=function(_0x913c1d,_0x2afb77){_0x913c1d=_0x913c1d-0x0;var _0x4c15f9=_0x7a66[_0x913c1d];return _0x4c15f9;};'use strict';var PluginEvents=require(_0x67a6('0x0'));var events=[_0x67a6('0x1'),'remove',_0x67a6('0x2')];function createListener(_0x293718,_0x179f46){return function(_0x2a1d73){_0x179f46['emit'](_0x293718,_0x2a1d73);};}function removeListener(_0x412327,_0x4e77fd){return function(){PluginEvents[_0x67a6('0x3')](_0x412327,_0x4e77fd);};}exports[_0x67a6('0x4')]=function(_0x3b73c4){for(var _0x3d06b0=0x0,_0x5d043e=events[_0x67a6('0x5')];_0x3d06b0<_0x5d043e;_0x3d06b0++){var _0x10eb61=events[_0x3d06b0];var _0x4c3635=createListener(_0x67a6('0x6')+_0x10eb61,_0x3b73c4);PluginEvents['on'](_0x10eb61,_0x4c3635);}};
\ No newline at end of file
index d24c623..2ba219c 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(_0x46e2b2,_0x2e639b){var _0x1e9641=function(_0x4a2f0f){while(--_0x4a2f0f){_0x46e2b2['push'](_0x46e2b2['shift']());}};_0x1e9641(++_0x2e639b);}(_0xa9e0,0x123));var _0x0a9e=function(_0x411add,_0x1aed38){_0x411add=_0x411add-0x0;var _0x238242=_0xa9e0[_0x411add];return _0x238242;};'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(_0x50b1aa,_0x55a657){var _0x2d426d=function(_0xfd8e0e){while(--_0xfd8e0e){_0x50b1aa['push'](_0x50b1aa['shift']());}};_0x2d426d(++_0x55a657);}(_0xa9e0,0x123));var _0x0a9e=function(_0x43d11d,_0xccff91){_0x43d11d=_0x43d11d-0x0;var _0x38cd08=_0xa9e0[_0x43d11d];return _0x38cd08;};'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 2b319ed..4189fb0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc6d8=['Unknown\x20status','destroy','delete','dump','Unknown\x20id','lodash','../../config/logger','path','exec','sendStatus','status','stack','name','send','npm\x20install','info','error','index','list','then','reject','length','show','describe','create','body','join','cwd','chdir','start','Missing\x20name\x20and/or\x20path','update','hasOwnProperty','params','catch'];(function(_0x51bda1,_0x44f80d){var _0x1ce08c=function(_0x5b788e){while(--_0x5b788e){_0x51bda1['push'](_0x51bda1['shift']());}};_0x1ce08c(++_0x44f80d);}(_0xc6d8,0xd7));var _0x8c6d=function(_0x8935ce,_0x3621c3){_0x8935ce=_0x8935ce-0x0;var _0x1a422f=_0xc6d8[_0x8935ce];return _0x1a422f;};'use strict';var _=require(_0x8c6d('0x0'));var pm2=require('../../config/pm2');var logger=require(_0x8c6d('0x1'))('api');var path=require(_0x8c6d('0x2'));var exec=require('child_process')[_0x8c6d('0x3')];var BPromise=require('bluebird');function handleEntityNotFound(_0x5b6b04,_0x352b8c){return function(_0xdff6f){if(!_0xdff6f){_0x5b6b04[_0x8c6d('0x4')](0x194);;}return _0xdff6f;};}function respondWithResult(_0x4f5e8f,_0x3c265c){_0x3c265c=_0x3c265c||0xc8;return function(_0x2dbb52){if(_0x2dbb52){return _0x4f5e8f[_0x8c6d('0x5')](_0x3c265c)['json'](_0x2dbb52);}return null;};}function handleError(_0x1496ba,_0x75c49f){_0x75c49f=_0x75c49f||0x1f4;return function(_0x16d4b2){logger['error'](_0x16d4b2[_0x8c6d('0x6')]);if(_0x16d4b2[_0x8c6d('0x7')]){delete _0x16d4b2[_0x8c6d('0x7')];}_0x1496ba[_0x8c6d('0x5')](_0x75c49f)[_0x8c6d('0x8')](_0x16d4b2);};}function execChildProcess(){return new BPromise(function(_0x43a7ab,_0x60cd5c){exec(_0x8c6d('0x9'),function(_0x50af75,_0x36d6fb,_0x559d17){logger['info'](_0x36d6fb);logger[_0x8c6d('0xa')](_0x559d17);if(_0x50af75){logger[_0x8c6d('0xb')](_0x50af75);return _0x60cd5c(_0x50af75);}return _0x43a7ab(_0x36d6fb);});});}exports[_0x8c6d('0xc')]=function(_0x8ec2d4,_0x30ecfa){return pm2[_0x8c6d('0xd')]()[_0x8c6d('0xe')](function(_0x103699){if(_0x103699){var _0x14c1ee=_[_0x8c6d('0xf')](_0x103699,function(_0x4fb956){return _0x4fb956[_0x8c6d('0x7')]==='express'||_0x4fb956[_0x8c6d('0x7')]==='motion2';});return{'rows':_0x14c1ee,'count':_0x14c1ee[_0x8c6d('0x10')]};}return null;})[_0x8c6d('0xe')](respondWithResult(_0x30ecfa,null))['catch'](handleError(_0x30ecfa,null));};exports[_0x8c6d('0x11')]=function(_0x2b8a26,_0x51a5fa){return pm2[_0x8c6d('0x12')](_0x2b8a26['params']['id'])['then'](respondWithResult(_0x51a5fa,null))[_0x8c6d('0xe')](handleEntityNotFound(_0x51a5fa,null))['catch'](handleError(_0x51a5fa,null));};exports[_0x8c6d('0x13')]=function(_0x174a4f,_0x1d0f0a){if(_0x174a4f[_0x8c6d('0x14')][_0x8c6d('0x7')]&&_0x174a4f['body']['script']){var _0x550079=path[_0x8c6d('0x15')](__dirname,'../../files/plugins',_0x174a4f[_0x8c6d('0x14')]['script']);var _0x4c378b=process[_0x8c6d('0x16')]();process[_0x8c6d('0x17')](path['dirname'](_0x550079));return execChildProcess()['then'](function(_0x51bb08){process['chdir'](_0x4c378b);return pm2[_0x8c6d('0x18')]({'name':_0x174a4f[_0x8c6d('0x14')][_0x8c6d('0x7')],'script':_0x550079});})['then'](function(_0x41c904){pm2['dump']();return _0x41c904[0x0];})[_0x8c6d('0xe')](respondWithResult(_0x1d0f0a,0xc9))['catch'](handleError(_0x1d0f0a,null));}else{return _0x1d0f0a[_0x8c6d('0x5')](0x1f4)[_0x8c6d('0x8')]({'message':_0x8c6d('0x19')});}};exports[_0x8c6d('0x1a')]=function(_0x1e6755,_0x3e3cd3){if(_0x1e6755[_0x8c6d('0x14')]['id']){delete _0x1e6755[_0x8c6d('0x14')]['id'];}var _0x3eab38={'online':'restart','stopped':'stop'};if(_0x3eab38[_0x8c6d('0x1b')](_0x1e6755[_0x8c6d('0x14')][_0x8c6d('0x5')])){return pm2[_0x3eab38[_0x1e6755[_0x8c6d('0x14')][_0x8c6d('0x5')]]](_0x1e6755[_0x8c6d('0x1c')]['id'])[_0x8c6d('0xe')](respondWithResult(_0x3e3cd3,0xc8))[_0x8c6d('0x1d')](handleError(_0x3e3cd3,null));}else{return _0x3e3cd3[_0x8c6d('0x5')](0x1f4)[_0x8c6d('0x8')]({'message':_0x8c6d('0x1e')});}};exports[_0x8c6d('0x1f')]=function(_0x4e5203,_0x3af625){if(_0x4e5203[_0x8c6d('0x14')]['id']){delete _0x4e5203[_0x8c6d('0x14')]['id'];}if(_0x4e5203[_0x8c6d('0x1c')]['id']){return pm2[_0x8c6d('0x20')](_0x4e5203[_0x8c6d('0x1c')]['id'])[_0x8c6d('0xe')](function(_0x1857f9){pm2[_0x8c6d('0x21')]();return _0x1857f9[0x0];})['then'](respondWithResult(_0x3af625,null))[_0x8c6d('0x1d')](handleError(_0x3af625,null));}else{return _0x3af625['status'](0x1f4)[_0x8c6d('0x8')]({'message':_0x8c6d('0x22')});}};
\ No newline at end of file
+var _0xb43b=['stack','name','send','npm\x20install','info','index','list','express','then','describe','catch','create','body','script','join','chdir','dirname','start','Missing\x20name\x20and/or\x20path','update','restart','stop','hasOwnProperty','params','Unknown\x20status','Unknown\x20id','lodash','../../config/pm2','api','path','child_process','bluebird','status','json'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xb43b,0x1b2));var _0xbb43=function(_0x4f9a8d,_0x47a4b2){_0x4f9a8d=_0x4f9a8d-0x0;var _0xf7e1f4=_0xb43b[_0x4f9a8d];return _0xf7e1f4;};'use strict';var _=require(_0xbb43('0x0'));var pm2=require(_0xbb43('0x1'));var logger=require('../../config/logger')(_0xbb43('0x2'));var path=require(_0xbb43('0x3'));var exec=require(_0xbb43('0x4'))['exec'];var BPromise=require(_0xbb43('0x5'));function handleEntityNotFound(_0x41aff6,_0x351254){return function(_0x16432a){if(!_0x16432a){_0x41aff6['sendStatus'](0x194);;}return _0x16432a;};}function respondWithResult(_0x491fb9,_0x378df5){_0x378df5=_0x378df5||0xc8;return function(_0x553520){if(_0x553520){return _0x491fb9[_0xbb43('0x6')](_0x378df5)[_0xbb43('0x7')](_0x553520);}return null;};}function handleError(_0x2a2f11,_0x29ae1a){_0x29ae1a=_0x29ae1a||0x1f4;return function(_0x364718){logger['error'](_0x364718[_0xbb43('0x8')]);if(_0x364718[_0xbb43('0x9')]){delete _0x364718['name'];}_0x2a2f11[_0xbb43('0x6')](_0x29ae1a)[_0xbb43('0xa')](_0x364718);};}function execChildProcess(){return new BPromise(function(_0xd37cdf,_0x5e3611){exec(_0xbb43('0xb'),function(_0x2bef86,_0x480cc2,_0x36a473){logger[_0xbb43('0xc')](_0x480cc2);logger['info'](_0x36a473);if(_0x2bef86){logger['error'](_0x2bef86);return _0x5e3611(_0x2bef86);}return _0xd37cdf(_0x480cc2);});});}exports[_0xbb43('0xd')]=function(_0x4a3714,_0x593d0b){return pm2[_0xbb43('0xe')]()['then'](function(_0x68d45d){if(_0x68d45d){var _0x43021d=_['reject'](_0x68d45d,function(_0x4a6e18){return _0x4a6e18['name']===_0xbb43('0xf')||_0x4a6e18[_0xbb43('0x9')]==='motion2';});return{'rows':_0x43021d,'count':_0x43021d['length']};}return null;})[_0xbb43('0x10')](respondWithResult(_0x593d0b,null))['catch'](handleError(_0x593d0b,null));};exports['show']=function(_0x2b0797,_0x8242ab){return pm2[_0xbb43('0x11')](_0x2b0797['params']['id'])[_0xbb43('0x10')](respondWithResult(_0x8242ab,null))['then'](handleEntityNotFound(_0x8242ab,null))[_0xbb43('0x12')](handleError(_0x8242ab,null));};exports[_0xbb43('0x13')]=function(_0x4dfc54,_0x5d765b){if(_0x4dfc54[_0xbb43('0x14')][_0xbb43('0x9')]&&_0x4dfc54[_0xbb43('0x14')][_0xbb43('0x15')]){var _0x5bcce7=path[_0xbb43('0x16')](__dirname,'../../files/plugins',_0x4dfc54[_0xbb43('0x14')]['script']);var _0x2f5e31=process['cwd']();process[_0xbb43('0x17')](path[_0xbb43('0x18')](_0x5bcce7));return execChildProcess()['then'](function(_0x1d0768){process['chdir'](_0x2f5e31);return pm2[_0xbb43('0x19')]({'name':_0x4dfc54[_0xbb43('0x14')][_0xbb43('0x9')],'script':_0x5bcce7});})['then'](function(_0x53f0d5){pm2['dump']();return _0x53f0d5[0x0];})[_0xbb43('0x10')](respondWithResult(_0x5d765b,0xc9))[_0xbb43('0x12')](handleError(_0x5d765b,null));}else{return _0x5d765b['status'](0x1f4)[_0xbb43('0xa')]({'message':_0xbb43('0x1a')});}};exports[_0xbb43('0x1b')]=function(_0x3874fb,_0x4ed43f){if(_0x3874fb['body']['id']){delete _0x3874fb[_0xbb43('0x14')]['id'];}var _0x42800f={'online':_0xbb43('0x1c'),'stopped':_0xbb43('0x1d')};if(_0x42800f[_0xbb43('0x1e')](_0x3874fb[_0xbb43('0x14')][_0xbb43('0x6')])){return pm2[_0x42800f[_0x3874fb[_0xbb43('0x14')]['status']]](_0x3874fb[_0xbb43('0x1f')]['id'])['then'](respondWithResult(_0x4ed43f,0xc8))[_0xbb43('0x12')](handleError(_0x4ed43f,null));}else{return _0x4ed43f[_0xbb43('0x6')](0x1f4)[_0xbb43('0xa')]({'message':_0xbb43('0x20')});}};exports['destroy']=function(_0x157d62,_0x547a6f){if(_0x157d62['body']['id']){delete _0x157d62['body']['id'];}if(_0x157d62[_0xbb43('0x1f')]['id']){return pm2['delete'](_0x157d62[_0xbb43('0x1f')]['id'])[_0xbb43('0x10')](function(_0xc577ac){pm2['dump']();return _0xc577ac[0x0];})[_0xbb43('0x10')](respondWithResult(_0x547a6f,null))[_0xbb43('0x12')](handleError(_0x547a6f,null));}else{return _0x547a6f[_0xbb43('0x6')](0x1f4)[_0xbb43('0xa')]({'message':_0xbb43('0x21')});}};
\ No newline at end of file
index 42bad9e..2b28f6f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdf55=['./realtime.controller','get','isAuthenticated','getQueues','exports','express','Router'];(function(_0x235dad,_0x3ff419){var _0x5e73ef=function(_0x1afc6c){while(--_0x1afc6c){_0x235dad['push'](_0x235dad['shift']());}};_0x5e73ef(++_0x3ff419);}(_0xdf55,0x83));var _0x5df5=function(_0x32e9e9,_0x3df5aa){_0x32e9e9=_0x32e9e9-0x0;var _0x400b63=_0xdf55[_0x32e9e9];return _0x400b63;};'use strict';var express=require(_0x5df5('0x0'));var router=express[_0x5df5('0x1')]();var auth=require('../../components/auth/service');var controller=require(_0x5df5('0x2'));router[_0x5df5('0x3')]('/queues',auth[_0x5df5('0x4')](),controller[_0x5df5('0x5')]);module[_0x5df5('0x6')]=router;
\ No newline at end of file
+var _0xd949=['get','/agents','isAuthenticated','/queues','getQueues','express','Router','../../components/auth/service','./realtime.controller'];(function(_0x266618,_0x18f637){var _0x54dbf5=function(_0x1f7985){while(--_0x1f7985){_0x266618['push'](_0x266618['shift']());}};_0x54dbf5(++_0x18f637);}(_0xd949,0xa7));var _0x9d94=function(_0x80cf9c,_0x2b2d8d){_0x80cf9c=_0x80cf9c-0x0;var _0x58ece5=_0xd949[_0x80cf9c];return _0x58ece5;};'use strict';var express=require(_0x9d94('0x0'));var router=express[_0x9d94('0x1')]();var auth=require(_0x9d94('0x2'));var controller=require(_0x9d94('0x3'));router[_0x9d94('0x4')](_0x9d94('0x5'),auth[_0x9d94('0x6')](),controller['getAgents']);router[_0x9d94('0x4')](_0x9d94('0x7'),auth['isAuthenticated'](),controller[_0x9d94('0x8')]);module['exports']=router;
\ No newline at end of file
index 66b2030..6acc4a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f8a=['channel','toLowerCase','startCase','Queue','map','rawAttributes','fieldName','key','user','role','userProfileId','type','outbound','Queues','filter','UserProfile','getResources','then','request','format','result','loggedIn','available','talking','paused','push','message','dialActive','Trunk','startProgressive','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','dialPredictiveInterval','dialPredictiveIntervalMinThreshold','predictiveIntervalTotalCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','rows','get','loggedInDb','waiting','pTalking','agents','find','merge','pick','online','length','UserId','User','Pause','findAll','catch','util','lodash','jayson/promise','../../components/parsers/qs','api','../../mysqldb','client','http','offset','undefined','limit','count','status','set','Content-Range','json','error','stack','name','getQueues','chat','sms','openchannel','fax','whatsapp','voice','resolve','query','includes'];(function(_0x296809,_0x1c9665){var _0x18c0d3=function(_0x249156){while(--_0x249156){_0x296809['push'](_0x296809['shift']());}};_0x18c0d3(++_0x1c9665);}(_0x3f8a,0x1d5));var _0xa3f8=function(_0x106178,_0x46938a){_0x106178=_0x106178-0x0;var _0x377709=_0x3f8a[_0x106178];return _0x377709;};'use strict';var util=require(_0xa3f8('0x0'));var _=require(_0xa3f8('0x1'));var jayson=require(_0xa3f8('0x2'));var qs=require(_0xa3f8('0x3'));var logger=require('../../config/logger')(_0xa3f8('0x4'));var db=require(_0xa3f8('0x5'))['db'];var client=jayson[_0xa3f8('0x6')][_0xa3f8('0x7')]({'port':0x232a});var routingClient=jayson[_0xa3f8('0x6')][_0xa3f8('0x7')]({'port':0x232c});function respondWithFilteredResult(_0x39d2e4,_0x471464){return function(_0x1f160a){if(_0x1f160a){var _0xf895d9=typeof _0x471464[_0xa3f8('0x8')]===_0xa3f8('0x9')&&typeof _0x471464[_0xa3f8('0xa')]===_0xa3f8('0x9');var _0x2c89bb=_0x1f160a[_0xa3f8('0xb')];var _0xcdb0d4=_0xf895d9?0x0:_0x471464['offset'];var _0x47496a=_0xf895d9?_0x1f160a[_0xa3f8('0xb')]:_0x471464[_0xa3f8('0x8')]+_0x471464[_0xa3f8('0xa')];var _0x53cf1f;if(_0x47496a>=_0x2c89bb){_0x47496a=_0x2c89bb;_0x53cf1f=0xc8;}else{_0x53cf1f=0xce;}_0x39d2e4[_0xa3f8('0xc')](_0x53cf1f);return _0x39d2e4[_0xa3f8('0xd')](_0xa3f8('0xe'),_0xcdb0d4+'-'+_0x47496a+'/'+_0x2c89bb)[_0xa3f8('0xf')](_0x1f160a);}return null;};}function handleError(_0xd97ac9,_0x2e71a0){_0x2e71a0=_0x2e71a0||0x1f4;return function(_0x1afd01){logger[_0xa3f8('0x10')](_0x1afd01[_0xa3f8('0x11')]);if(_0x1afd01[_0xa3f8('0x12')]){delete _0x1afd01[_0xa3f8('0x12')];}_0xd97ac9[_0xa3f8('0xc')](_0x2e71a0)['send'](_0x1afd01);};}exports[_0xa3f8('0x13')]=function(_0xe55848,_0x45014f){var _0x21a170=['mail',_0xa3f8('0x14'),_0xa3f8('0x15'),_0xa3f8('0x16'),_0xa3f8('0x17'),_0xa3f8('0x18'),_0xa3f8('0x19')];var _0x2f0659={'count':0x0,'rows':[]},_0x3e2e1c={},_0x2cb49f;Promise[_0xa3f8('0x1a')]()['then'](function(){if(_0xe55848[_0xa3f8('0x1b')]['channel']){if(!_[_0xa3f8('0x1c')](_0x21a170,_0xe55848[_0xa3f8('0x1b')][_0xa3f8('0x1d')][_0xa3f8('0x1e')]()))throw new Error('Invalid\x20channel');_0x2cb49f=_0xe55848[_0xa3f8('0x1b')]['channel'][_0xa3f8('0x1e')]();}var _0x58336d=_[_0xa3f8('0x1f')](_0x2cb49f)+_0xa3f8('0x20');var _0x353daa=_[_0xa3f8('0x21')](db[_0x58336d][_0xa3f8('0x22')],function(_0x1e5f30){return{'name':_0x1e5f30[_0xa3f8('0x23')],'type':_0x1e5f30['type'][_0xa3f8('0x24')]};});_0x3e2e1c=qs['getOptions'](_0x353daa,_0xe55848);if(_0xe55848[_0xa3f8('0x25')][_0xa3f8('0x26')]===_0xa3f8('0x25')){var _0x37b290={'params':{'id':_0xe55848[_0xa3f8('0x25')][_0xa3f8('0x27')]},'query':{'section':_0x2cb49f===_0xa3f8('0x19')&&_0xe55848[_0xa3f8('0x1b')][_0xa3f8('0x28')]===_0xa3f8('0x29')?'QueueCampaigns':_[_0xa3f8('0x1f')](_0x2cb49f)+_0xa3f8('0x2a'),'type':_0xe55848[_0xa3f8('0x1b')]['type'],'nolimit':!![],'sort':_0xa3f8('0x12'),'filter':_0xe55848['query'][_0xa3f8('0x2b')]}};return db[_0xa3f8('0x2c')][_0xa3f8('0x2d')](_0x37b290);}return db[_0x58336d]['findAndCountAll'](_0x3e2e1c);})[_0xa3f8('0x2e')](function(_0x5e69e2){_0x2f0659[_0xa3f8('0xb')]=_0x5e69e2[_0xa3f8('0xb')];var _0x226153=_0x2cb49f===_0xa3f8('0x19')?client:routingClient;return _0x226153[_0xa3f8('0x2f')](_[_0xa3f8('0x1f')](_0x2cb49f)+_0xa3f8('0x2a'),_0xe55848)[_0xa3f8('0x2e')](function(_0x25f9f5){if(_0x25f9f5[_0xa3f8('0x10')])throw new Error(util[_0xa3f8('0x30')]('Unable\x20to\x20retrieve\x20RPC\x20%s\x20queues',_0x2cb49f));var _0x4404da=_0x25f9f5[_0xa3f8('0x31')];var _0xebc519=[_0xa3f8('0x32'),_0xa3f8('0x33'),'waiting',_0xa3f8('0x34'),_0xa3f8('0x35')];if(_0x2cb49f==='voice'&&_0xe55848[_0xa3f8('0x1b')][_0xa3f8('0x28')]==='outbound'){_0xebc519[_0xa3f8('0x36')]('pTalking','originated',_0xa3f8('0x37'),_0xa3f8('0x38'),'dialMethod',_0xa3f8('0x39'),'startPredictive',_0xa3f8('0x3a'),_0xa3f8('0x3b'),_0xa3f8('0x3c'),_0xa3f8('0x3d'),'erlangBusyFactor',_0xa3f8('0x3e'),'dialPredictiveIntervalMaxThreshold',_0xa3f8('0x3f'),'predictiveIntervalAvailable',_0xa3f8('0x40'),'predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsTimeout','predictiveIntervalDroppedCallsCallersExit',_0xa3f8('0x41'),_0xa3f8('0x42'));}var _0x1acf4f=_0x5e69e2[_0xa3f8('0x43')]['map'](function(_0x447824){var _0x18b9bc=_0x447824[_0xa3f8('0x44')]({'plain':!![]});_0x18b9bc[_0xa3f8('0x35')]=0x0;_0x18b9bc[_0xa3f8('0x45')]=0x0;_0x18b9bc[_0xa3f8('0x32')]=0x0;_0x18b9bc['available']=0x0;_0x18b9bc[_0xa3f8('0x35')]=0x0;_0x18b9bc[_0xa3f8('0x46')]=0x0;if(_0x2cb49f===_0xa3f8('0x19')){_0x18b9bc['talking']=0x0;if(_0xe55848[_0xa3f8('0x1b')][_0xa3f8('0x28')]==='outbound'){_0x18b9bc[_0xa3f8('0x47')]=0x0;_0x18b9bc['originated']=0x0;}}_0x18b9bc[_0xa3f8('0x48')]=[];var _0x5a077c=_[_0xa3f8('0x49')](_0x4404da[_0xa3f8('0x43')],['id',_0x18b9bc['id']]);if(_0x5a077c)_[_0xa3f8('0x4a')](_0x18b9bc,_[_0xa3f8('0x4b')](_0x5a077c,_0xebc519));if(_0x2cb49f===_0xa3f8('0x19')){return _0x447824['getAgents']({'attributes':['id',_0xa3f8('0x12'),_0xa3f8('0x4c')],'joinTableAttributes':[],'raw':!![]})['then'](function(_0x27c938){return _0x447824['getMembers']({'raw':!![]})[_0xa3f8('0x2e')](function(_0xd3c65a){for(var _0x1542cc=0x0;_0x1542cc<_0x27c938[_0xa3f8('0x4d')];_0x1542cc++){var _0x357712=_['find'](_0xd3c65a,[_0xa3f8('0x4e'),_0x27c938[_0x1542cc]['id']]);var _0x2b17ff={'id':_0x27c938[_0x1542cc]['id'],'name':_0x27c938[_0x1542cc][_0xa3f8('0x12')],'online':Boolean(_0x27c938[_0x1542cc][_0xa3f8('0x4c')]),'paused':_0x357712?Boolean(_0x357712[_0xa3f8('0x35')]):![]};if(_0x2b17ff['online'])_0x18b9bc[_0xa3f8('0x45')]++;if(_0x2b17ff[_0xa3f8('0x35')])_0x18b9bc[_0xa3f8('0x35')]++;_0x18b9bc[_0xa3f8('0x48')][_0xa3f8('0x36')](_0x2b17ff);}return _0x18b9bc;});});}else{var _0x314dba=_0xa3f8('0x4f')+_[_0xa3f8('0x1f')](_0x2cb49f)+_0xa3f8('0x20');var _0x3bf454=_0x2cb49f+_0xa3f8('0x50');return db[_0x314dba][_0xa3f8('0x51')]({'where':{[_[_0xa3f8('0x1f')](_0x2cb49f)+'QueueId']:_0x447824['id']},'raw':!![]})['then'](function(_0x58ab27){return db[_0xa3f8('0x4f')][_0xa3f8('0x51')]({'attributes':['id',_0xa3f8('0x12'),_0xa3f8('0x4c'),_0x3bf454],'where':{'id':_[_0xa3f8('0x21')](_0x58ab27,_0xa3f8('0x4e')),'role':'agent'},'raw':!![]});})[_0xa3f8('0x2e')](function(_0x31dfe0){for(var _0x14f8e0=0x0;_0x14f8e0<_0x31dfe0[_0xa3f8('0x4d')];_0x14f8e0++){var _0x591e34={'id':_0x31dfe0[_0x14f8e0]['id'],'name':_0x31dfe0[_0x14f8e0][_0xa3f8('0x12')],'online':Boolean(_0x31dfe0[_0x14f8e0][_0xa3f8('0x4c')]),'paused':Boolean(_0x31dfe0[_0x14f8e0][_0x3bf454])};if(_0x591e34[_0xa3f8('0x4c')])_0x18b9bc['loggedInDb']++;if(_0x591e34['paused'])_0x18b9bc['paused']++;_0x18b9bc[_0xa3f8('0x48')][_0xa3f8('0x36')](_0x591e34);}return _0x18b9bc;});}});return Promise['all'](_0x1acf4f);});})[_0xa3f8('0x2e')](function(_0x1f7af7){_0x2f0659[_0xa3f8('0x43')]=_0x1f7af7;return _0x2f0659;})[_0xa3f8('0x2e')](respondWithFilteredResult(_0x45014f,_0x3e2e1c))[_0xa3f8('0x52')](handleError(_0x45014f,null));};
\ No newline at end of file
+var _0xb054=['openchannel','fax','whatsapp','resolve','includes','channel','toLowerCase','Invalid\x20channel','fieldName','getOptions','QueueCampaigns','Queues','getResources','all','lodash','../../components/parsers/qs','../../config/logger','api','../../mysqldb','client','http','offset','count','status','Content-Range','json','error','stack','name','send','request','Agents','then','result','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','merge','catch','voice','startCase','Unable\x20to\x20retrieve\x20RPC\x20%s\x20queues','VoiceQueuesChannels','Unable\x20to\x20retrieve\x20voice\x20queues\x20channels','loggedIn','waiting','talking','paused','outbound','push','originated','message','dialMethod','startPredictive','erlangCalls','erlangCallToSecond','erlangBusyFactor','dialPredictiveInterval','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalAvgHoldtime','map','agents','loggedInDb','available','find','pick','filter','queue','length','busy','some','connectedlinenum','internal','UserId','accountcode','online','User','Queue','findAll','QueueId','idle','unknown','unavailable','ringing','isNil','chatPause','faxPause','openchannelPause','smsPause','voicePause','whatsappPause','every','voiceStatus','chatStatus','faxStatus','mailStatus','openchannelStatus','smsStatus','whatsappStatus','pause','*pause','userpic','lastLoginAt','lastPauseAt','pauseType','address','mailPause','chatCapacity','openchannelCapacity','mailCapacity','smsCapacity','whatsappCapacity','faxCapacity','chatCurrentCapacity','openchannelCurrentCapacity','smsCurrentCapacity','whatsappCurrentCapacity','faxCurrentCapacity','chatStatusTime','mailStatusTime','smsStatusTime','whatsappStatusTime','voiceStatusTime','destconnectedlinenum','phoneBarEnableScreenRecordingByAgent','phoneBarEnableAutomaticScreenRecording','rawAttributes','type','key','agent','raw','user','role','userProfileId','sort','query','UserProfile','findAndCountAll','rows','globalStatus','globalStatusFilter','pauseTypeFilter','getQueues','mail','chat','sms'];(function(_0x130d78,_0x105b44){var _0x43d234=function(_0x290ac3){while(--_0x290ac3){_0x130d78['push'](_0x130d78['shift']());}};_0x43d234(++_0x105b44);}(_0xb054,0x1ca));var _0x4b05=function(_0x16c1a5,_0x17dfb0){_0x16c1a5=_0x16c1a5-0x0;var _0x421b5e=_0xb054[_0x16c1a5];return _0x421b5e;};'use strict';var util=require('util');var _=require(_0x4b05('0x0'));var jayson=require('jayson/promise');var qs=require(_0x4b05('0x1'));var logger=require(_0x4b05('0x2'))(_0x4b05('0x3'));var db=require(_0x4b05('0x4'))['db'];var amiClient=jayson[_0x4b05('0x5')][_0x4b05('0x6')]({'port':0x232a});var routingClient=jayson['client']['http']({'port':0x232c});function respondWithFilteredResult(_0x49db36,_0x392663){return function(_0x44f6fc){if(_0x44f6fc){var _0x5385d6=typeof _0x392663[_0x4b05('0x7')]==='undefined'&&typeof _0x392663['limit']==='undefined';var _0x27c6a2=_0x44f6fc[_0x4b05('0x8')];var _0x5e7982=_0x5385d6?0x0:_0x392663[_0x4b05('0x7')];var _0x60442b=_0x5385d6?_0x44f6fc[_0x4b05('0x8')]:_0x392663[_0x4b05('0x7')]+_0x392663['limit'];var _0x36fc5f;if(_0x60442b>=_0x27c6a2){_0x60442b=_0x27c6a2;_0x36fc5f=0xc8;}else{_0x36fc5f=0xce;}_0x49db36[_0x4b05('0x9')](_0x36fc5f);return _0x49db36['set'](_0x4b05('0xa'),_0x5e7982+'-'+_0x60442b+'/'+_0x27c6a2)[_0x4b05('0xb')](_0x44f6fc);}return null;};}function handleError(_0x4eea02,_0x42d9af){_0x42d9af=_0x42d9af||0x1f4;return function(_0x2c16d6){logger[_0x4b05('0xc')](_0x2c16d6[_0x4b05('0xd')]);if(_0x2c16d6[_0x4b05('0xe')]){delete _0x2c16d6[_0x4b05('0xe')];}_0x4eea02[_0x4b05('0x9')](_0x42d9af)[_0x4b05('0xf')](_0x2c16d6);};}function getRealtimeAgents(){return new Promise(function(_0x44750c,_0x310103){return amiClient[_0x4b05('0x10')](_0x4b05('0x11'),{})[_0x4b05('0x12')](function(_0x484609){if(_0x484609[_0x4b05('0xc')])throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)');var _0x3842ce=_0x484609[_0x4b05('0x13')];return routingClient[_0x4b05('0x10')](_0x4b05('0x11'),{})['then'](function(_0x33fb5e){if(_0x33fb5e[_0x4b05('0xc')])throw new Error(_0x4b05('0x14'));var _0x5a0810=_0x33fb5e[_0x4b05('0x13')];return _0x44750c(_[_0x4b05('0x15')]({},_0x3842ce,_0x5a0810));});})[_0x4b05('0x16')](function(_0x1fd5cb){_0x310103(_0x1fd5cb);});});}function getRealtimeQueues(_0x218832,_0x72632){return new Promise(function(_0x3b64e,_0x20636b){var _0x3b7a03=_0x72632===_0x4b05('0x17')?amiClient:routingClient;return _0x3b7a03[_0x4b05('0x10')](_[_0x4b05('0x18')](_0x72632)+'Queues',_0x218832)[_0x4b05('0x12')](function(_0x2785f8){if(_0x2785f8['error'])throw new Error(util['format'](_0x4b05('0x19'),_0x72632));return _0x3b64e(_0x2785f8[_0x4b05('0x13')]);})[_0x4b05('0x16')](function(_0x3031a4){_0x20636b(_0x3031a4);});});}function getRealtimeVoiceQueueChannels(){return new Promise(function(_0x584314,_0x92441e){return amiClient['request'](_0x4b05('0x1a'),{})[_0x4b05('0x12')](function(_0x418077){if(_0x418077[_0x4b05('0xc')])throw new Error(_0x4b05('0x1b'));return _0x584314(_0x418077[_0x4b05('0x13')]);})['catch'](function(_0x373a6f){_0x92441e(_0x373a6f);});});}function initializeQueues(_0x42a927,_0x22bf01,_0x305732,_0xf4294f){var _0x1fb2a5=[_0x4b05('0x1c'),'available',_0x4b05('0x1d'),_0x4b05('0x1e'),_0x4b05('0x1f')];if(_0x305732==='voice'&&_0xf4294f===_0x4b05('0x20')){_0x1fb2a5[_0x4b05('0x21')]('pTalking',_0x4b05('0x22'),_0x4b05('0x23'),'dialActive',_0x4b05('0x24'),'Trunk',_0x4b05('0x25'),'startProgressive',_0x4b05('0x26'),_0x4b05('0x27'),'erlangAbandonmentRate',_0x4b05('0x28'),_0x4b05('0x29'),_0x4b05('0x2a'),_0x4b05('0x2b'),'predictiveIntervalAvailable',_0x4b05('0x2c'),_0x4b05('0x2d'),'predictiveIntervalDroppedCallsTimeout',_0x4b05('0x2e'),_0x4b05('0x2f'),'predictiveIntervalAvgTalktime');}return _0x42a927[_0x4b05('0x30')](function(_0x51a0e9){var _0x1a27eb=_0x51a0e9['get']({'plain':!![]});_0x1a27eb[_0x4b05('0x31')]=[];_0x1a27eb[_0x4b05('0x1f')]=0x0;_0x1a27eb[_0x4b05('0x32')]=0x0;_0x1a27eb[_0x4b05('0x1c')]=0x0;_0x1a27eb[_0x4b05('0x33')]=0x0;_0x1a27eb[_0x4b05('0x1d')]=0x0;if(_0x305732===_0x4b05('0x17')){_0x1a27eb[_0x4b05('0x1e')]=0x0;_0x1a27eb['busy']=0x0;if(_0xf4294f==='outbound'){_0x1a27eb['pTalking']=0x0;_0x1a27eb[_0x4b05('0x22')]=0x0;}}var _0x25e2a9=_[_0x4b05('0x34')](_0x22bf01,['id',_0x1a27eb['id']]);if(_0x25e2a9)_[_0x4b05('0x15')](_0x1a27eb,_[_0x4b05('0x35')](_0x25e2a9,_0x1fb2a5));return _0x1a27eb;});}function updateAgentVoiceStatus(_0x64fe83,_0x1d0777,_0x2a74cd){var _0x4ebbfc=_[_0x4b05('0x36')](_0x2a74cd,[_0x4b05('0x37'),_0x1d0777[_0x4b05('0xe')]]);if(_0x4ebbfc[_0x4b05('0x38')]===0x0)return _0x64fe83[_0x4b05('0x39')]=!![];if(_[_0x4b05('0x3a')](_0x4ebbfc,[_0x4b05('0x3b'),_0x64fe83[_0x4b05('0x3c')]['toString']()]))return _0x64fe83[_0x4b05('0x1e')]=!![];if(!_0x64fe83[_0x4b05('0x1e')])return _0x64fe83[_0x4b05('0x39')]=!![];}function getVoiceQueueAgents(_0x185eb1,_0x3046af,_0x4c43c1,_0x14ecce){var _0x5715d5=_['find'](_0x3046af,['id',_0x185eb1['id']]);if(!_0x5715d5)return _0x185eb1;return _0x5715d5['getMembers']({'raw':!![]})[_0x4b05('0x12')](function(_0x419738){for(var _0x278937=0x0;_0x278937<_0x419738[_0x4b05('0x38')];_0x278937++){var _0x4d2d5b=_[_0x4b05('0x34')](_0x4c43c1,['id',_0x419738[_0x278937][_0x4b05('0x3d')]]);if(!_0x4d2d5b){_0x4d2d5b={'id':_0x419738[_0x278937][_0x4b05('0x3d')],'name':_0x419738[_0x278937][_0x4b05('0x3d')],'accountcode':'','online':![]};}var _0x34cbf3={'id':_0x4d2d5b['id'],'name':_0x4d2d5b[_0x4b05('0xe')],'internal':_0x4d2d5b[_0x4b05('0x3e')],'online':Boolean(_0x4d2d5b['online']),'paused':Boolean(_0x419738[_0x278937][_0x4b05('0x1f')])};if(_0x4d2d5b['voiceStatus']==='talking')updateAgentVoiceStatus(_0x34cbf3,_0x185eb1,_0x14ecce);if(_0x34cbf3[_0x4b05('0x3f')])_0x185eb1['loggedInDb']++;if(_0x34cbf3[_0x4b05('0x39')])_0x185eb1[_0x4b05('0x39')]++;if(_0x34cbf3[_0x4b05('0x1f')]&&!_0x34cbf3[_0x4b05('0x39')]&&!_0x34cbf3[_0x4b05('0x1e')])_0x185eb1[_0x4b05('0x1f')]++;_0x185eb1[_0x4b05('0x31')][_0x4b05('0x21')](_0x34cbf3);}return _0x185eb1;});}function getQueueAgents(_0x107e43,_0x136ddb,_0x6e535e){var _0x135173=_0x4b05('0x40')+_[_0x4b05('0x18')](_0x6e535e)+_0x4b05('0x41');var _0x1848bd=_0x6e535e+'Pause';return db[_0x135173][_0x4b05('0x42')]({'where':{[_['startCase'](_0x6e535e)+_0x4b05('0x43')]:_0x107e43['id']},'raw':!![]})[_0x4b05('0x12')](function(_0x3144fb){for(var _0x393f11=0x0;_0x393f11<_0x3144fb[_0x4b05('0x38')];_0x393f11++){var _0x13446a=_[_0x4b05('0x34')](_0x136ddb,['id',_0x3144fb[_0x393f11][_0x4b05('0x3d')]]);if(!_0x13446a){_0x13446a={'id':_0x3144fb[_0x393f11]['UserId'],'name':_0x3144fb[_0x393f11][_0x4b05('0x3d')],'online':![],['pauseField']:![]};}var _0x8dc3fa={'id':_0x13446a['id'],'name':_0x13446a[_0x4b05('0xe')],'online':Boolean(_0x13446a[_0x4b05('0x3f')]),'paused':Boolean(_0x13446a[_0x1848bd])};if(_0x8dc3fa[_0x4b05('0x3f')])_0x107e43[_0x4b05('0x32')]++;_0x107e43[_0x4b05('0x31')][_0x4b05('0x21')](_0x8dc3fa);}return _0x107e43;});}function isIdle(_0x4cf7c5){return _0x4cf7c5===_0x4b05('0x44')||_0x4cf7c5===_0x4b05('0x45')||_0x4cf7c5===_0x4b05('0x46')||_0x4cf7c5===_0x4b05('0x47')||_[_0x4b05('0x48')](_0x4cf7c5);}function isAgentPaused(_0x3bc272,_0x1b177b){var _0x2dd2a5=[_0x3bc272[_0x4b05('0x49')],_0x3bc272[_0x4b05('0x4a')],_0x3bc272['mailPause'],_0x3bc272[_0x4b05('0x4b')],_0x3bc272[_0x4b05('0x4c')],_0x3bc272[_0x4b05('0x4d')],_0x3bc272[_0x4b05('0x4e')]];if(!_0x1b177b)return _[_0x4b05('0x4f')](_0x2dd2a5);var _0x3a2c2a=_[_0x4b05('0x36')](_0x2dd2a5);return _0x3a2c2a['length']>0x0&&_0x3a2c2a[_0x4b05('0x38')]<_0x2dd2a5[_0x4b05('0x38')]?!![]:![];}function isAgentIdle(_0x3515fc){if(_0x3515fc[_0x4b05('0x50')]!==_0x4b05('0x44')&&_0x3515fc[_0x4b05('0x4d')]){_0x3515fc[_0x4b05('0x50')]='pause';return![];}return _['every']([_0x3515fc[_0x4b05('0x51')],_0x3515fc[_0x4b05('0x52')],_0x3515fc[_0x4b05('0x53')],_0x3515fc[_0x4b05('0x54')],_0x3515fc[_0x4b05('0x55')],_0x3515fc[_0x4b05('0x50')],_0x3515fc[_0x4b05('0x56')]],isIdle);}function getAgentStatus(_0x43fdea){var _0x2f8bee=_0x4b05('0x45');if(isAgentPaused(_0x43fdea))_0x2f8bee=_0x4b05('0x57');else if(isAgentPaused(_0x43fdea,!![]))_0x2f8bee=_0x4b05('0x58');else if(isAgentIdle(_0x43fdea))_0x2f8bee=_0x4b05('0x44');else _0x2f8bee='busy';return _0x2f8bee;}exports['getAgents']=function(_0x3637c9,_0x261fd7){var _0x4a361a={'count':0x0,'rows':[]},_0x26186f={},_0x46d630,_0x55a2e9,_0x47b05e=[_0x4b05('0x59'),_0x4b05('0x3f'),_0x4b05('0x5a'),_0x4b05('0x5b'),_0x4b05('0x5c'),'lastPauseAt',_0x4b05('0x3c'),_0x4b05('0x5d'),_0x4b05('0x49'),_0x4b05('0x4b'),_0x4b05('0x5e'),_0x4b05('0x4c'),_0x4b05('0x4e'),_0x4b05('0x4a'),'voicePause',_0x4b05('0x5f'),_0x4b05('0x60'),_0x4b05('0x61'),_0x4b05('0x62'),_0x4b05('0x63'),_0x4b05('0x64'),_0x4b05('0x65'),_0x4b05('0x66'),'mailCurrentCapacity',_0x4b05('0x67'),_0x4b05('0x68'),_0x4b05('0x69'),_0x4b05('0x51'),_0x4b05('0x54'),_0x4b05('0x53'),_0x4b05('0x55'),_0x4b05('0x56'),'faxStatus',_0x4b05('0x50'),_0x4b05('0x6a'),'openchannelStatusTime',_0x4b05('0x6b'),_0x4b05('0x6c'),_0x4b05('0x6d'),'faxStatusTime',_0x4b05('0x6e'),_0x4b05('0x37'),_0x4b05('0x6f'),'screenrecording',_0x4b05('0x70'),_0x4b05('0x71'),'routealias'],_0x3a5d6c=['chatPause',_0x4b05('0x4b'),'mailPause',_0x4b05('0x4c'),_0x4b05('0x4e'),_0x4b05('0x4a'),_0x4b05('0x4d'),'online'];Promise['resolve']()[_0x4b05('0x12')](function(){var _0x2d15c0=_[_0x4b05('0x30')](db[_0x4b05('0x40')][_0x4b05('0x72')],function(_0x1e9aff){return{'name':_0x1e9aff['fieldName'],'type':_0x1e9aff[_0x4b05('0x73')][_0x4b05('0x74')]};});_0x3637c9['query']['role']=_0x4b05('0x75');_0x3637c9['query'][_0x4b05('0x3f')]=!![];_0x26186f=qs['getOptions'](_0x2d15c0,_0x3637c9);_0x26186f[_0x4b05('0x76')]=!![];if(_0x3637c9[_0x4b05('0x77')][_0x4b05('0x78')]==='user'){var _0x302ac8={'params':{'id':_0x3637c9['user'][_0x4b05('0x79')]},'query':{'section':'Agents','role':_0x4b05('0x75'),'online':!![],'nolimit':_0x3637c9['query']['nolimit'],'sort':_0x3637c9['query'][_0x4b05('0x7a')],'filter':_0x3637c9[_0x4b05('0x7b')][_0x4b05('0x36')]},'raw':!![]};return db[_0x4b05('0x7c')]['getResources'](_0x302ac8);}return db[_0x4b05('0x40')][_0x4b05('0x7d')](_0x26186f);})[_0x4b05('0x12')](function(_0x25e905){_0x4a361a[_0x4b05('0x8')]=_0x25e905[_0x4b05('0x8')];_0x46d630=_0x25e905[_0x4b05('0x7e')];return getRealtimeAgents();})[_0x4b05('0x12')](function(_0x12c5de){_0x55a2e9=_0x12c5de[_0x4b05('0x7e')];return _0x46d630[_0x4b05('0x30')](function(_0x1c64a2){var _0x3c2be7=_[_0x4b05('0x34')](_0x55a2e9,['id',_0x1c64a2['id']]);if(_0x3c2be7)_[_0x4b05('0x15')](_0x1c64a2,_[_0x4b05('0x35')](_['omit'](_0x3c2be7,_0x3a5d6c),_0x47b05e));_0x1c64a2[_0x4b05('0x7f')]=getAgentStatus(_0x1c64a2);return _0x1c64a2;});})[_0x4b05('0x12')](function(_0x3e11e9){if(_0x3637c9[_0x4b05('0x7b')][_0x4b05('0x80')]){var _0x3b6d11=_[_0x4b05('0x36')](_0x3e11e9,[_0x4b05('0x7f'),_0x3637c9[_0x4b05('0x7b')][_0x4b05('0x80')]]);if(_0x3637c9[_0x4b05('0x7b')][_0x4b05('0x81')]){_0x3b6d11=_[_0x4b05('0x36')](_0x3b6d11,['pauseType',_0x3637c9[_0x4b05('0x7b')][_0x4b05('0x81')]]);}}_0x4a361a[_0x4b05('0x7e')]=_0x3b6d11||_0x3e11e9;return _0x4a361a;})[_0x4b05('0x12')](respondWithFilteredResult(_0x261fd7,_0x26186f))[_0x4b05('0x16')](handleError(_0x261fd7,null));};exports[_0x4b05('0x82')]=function(_0x413b18,_0x49d7f3){var _0x220a7d=[_0x4b05('0x83'),_0x4b05('0x84'),_0x4b05('0x85'),_0x4b05('0x86'),_0x4b05('0x87'),_0x4b05('0x88'),_0x4b05('0x17')];var _0x12d61d={'count':0x0,'rows':[]},_0x3da403={},_0xdf4c7,_0x2671d3,_0x1f4c34,_0x3da1d4,_0x1a77f0;Promise[_0x4b05('0x89')]()['then'](function(){if(_0x413b18[_0x4b05('0x7b')]['channel']){if(!_[_0x4b05('0x8a')](_0x220a7d,_0x413b18[_0x4b05('0x7b')][_0x4b05('0x8b')][_0x4b05('0x8c')]()))throw new Error(_0x4b05('0x8d'));_0xdf4c7=_0x413b18['query'][_0x4b05('0x8b')][_0x4b05('0x8c')]();}var _0x9d1a0f=_[_0x4b05('0x18')](_0xdf4c7)+_0x4b05('0x41');var _0x15ca00=_[_0x4b05('0x30')](db[_0x9d1a0f][_0x4b05('0x72')],function(_0x2ceaa8){return{'name':_0x2ceaa8[_0x4b05('0x8e')],'type':_0x2ceaa8[_0x4b05('0x73')][_0x4b05('0x74')]};});_0x3da403=qs[_0x4b05('0x8f')](_0x15ca00,_0x413b18);if(_0x413b18[_0x4b05('0x77')][_0x4b05('0x78')]===_0x4b05('0x77')){var _0x26e6b7={'params':{'id':_0x413b18[_0x4b05('0x77')][_0x4b05('0x79')]},'query':{'section':_0xdf4c7===_0x4b05('0x17')&&_0x413b18[_0x4b05('0x7b')][_0x4b05('0x73')]===_0x4b05('0x20')?_0x4b05('0x90'):_[_0x4b05('0x18')](_0xdf4c7)+_0x4b05('0x91'),'type':_0x413b18[_0x4b05('0x7b')][_0x4b05('0x73')],'nolimit':!![],'sort':'name','filter':_0x413b18[_0x4b05('0x7b')][_0x4b05('0x36')]}};return db['UserProfile'][_0x4b05('0x92')](_0x26e6b7);}return db[_0x9d1a0f][_0x4b05('0x7d')](_0x3da403);})[_0x4b05('0x12')](function(_0x633e05){_0x12d61d['count']=_0x633e05['count'];_0x2671d3=_0x633e05[_0x4b05('0x7e')];return getRealtimeQueues(_0x413b18,_0xdf4c7);})[_0x4b05('0x12')](function(_0x4e23a4){_0x3da1d4=_0x4e23a4[_0x4b05('0x7e')];return getRealtimeAgents();})['then'](function(_0x1cb85f){_0x1f4c34=_0x1cb85f[_0x4b05('0x7e')];if(_0xdf4c7!=_0x4b05('0x17'))return;return getRealtimeVoiceQueueChannels();})[_0x4b05('0x12')](function(_0x36d72b){_0x1a77f0=_0x36d72b?_0x36d72b[_0x4b05('0x7e')]:[];return initializeQueues(_0x2671d3,_0x3da1d4,_0xdf4c7,_0x413b18[_0x4b05('0x7b')][_0x4b05('0x73')]);})[_0x4b05('0x12')](function(_0x1edfa5){var _0x3fd976=_0x1edfa5[_0x4b05('0x30')](function(_0x812423){if(_0xdf4c7==='voice')return getVoiceQueueAgents(_0x812423,_0x2671d3,_0x1f4c34,_0x1a77f0);else return getQueueAgents(_0x812423,_0x1f4c34,_0xdf4c7);});return Promise[_0x4b05('0x93')](_0x3fd976);})[_0x4b05('0x12')](function(_0x54de57){_0x12d61d['rows']=_0x54de57;return _0x12d61d;})[_0x4b05('0x12')](respondWithFilteredResult(_0x49d7f3,_0x3da403))['catch'](handleError(_0x49d7f3,null));};
\ No newline at end of file
index 4ca04c0..d010530 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e0=['../../components/auth/service','../../components/interaction/service','exports','multer','util','path','Router','fs-extra'];(function(_0x95cb71,_0x4fd8ea){var _0x52bca2=function(_0x5c422c){while(--_0x5c422c){_0x95cb71['push'](_0x95cb71['shift']());}};_0x52bca2(++_0x4fd8ea);}(_0x70e0,0x17b));var _0x070e=function(_0x130b05,_0xbaa2ce){_0x130b05=_0x130b05-0x0;var _0x387c55=_0x70e0[_0x130b05];return _0x387c55;};'use strict';var multer=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var path=require(_0x070e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x070e('0x3')]();var fs_extra=require(_0x070e('0x4'));var auth=require(_0x070e('0x5'));var interaction=require(_0x070e('0x6'));var config=require('../../config/environment');module[_0x070e('0x7')]=router;
\ No newline at end of file
+var _0xcb91=['express','Router','../../components/auth/service','../../components/interaction/service','exports','path','connect-timeout'];(function(_0x437af6,_0x4adbfc){var _0x567ff1=function(_0x23f8e2){while(--_0x23f8e2){_0x437af6['push'](_0x437af6['shift']());}};_0x567ff1(++_0x4adbfc);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x20589d,_0x55d5bf){_0x20589d=_0x20589d-0x0;var _0x422de9=_0xcb91[_0x20589d];return _0x422de9;};'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 93408ab..802636b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2d78=['exports','INTEGER','DATE','STRING','sequelize'];(function(_0x2692fd,_0x42a642){var _0x3d01e2=function(_0x522c67){while(--_0x522c67){_0x2692fd['push'](_0x2692fd['shift']());}};_0x3d01e2(++_0x42a642);}(_0x2d78,0x199));var _0x82d7=function(_0x2132a3,_0x4639e9){_0x2132a3=_0x2132a3-0x0;var _0x21890c=_0x2d78[_0x2132a3];return _0x21890c;};'use strict';var Sequelize=require(_0x82d7('0x0'));module[_0x82d7('0x1')]={'state':{'type':Sequelize[_0x82d7('0x2')](0x2)},'statedesc':{'type':Sequelize['STRING']},'scheduledat':{'type':Sequelize[_0x82d7('0x3')]},'uniqueid':{'type':Sequelize[_0x82d7('0x4')]},'starttime':{'type':Sequelize[_0x82d7('0x3')]},'responsetime':{'type':Sequelize[_0x82d7('0x3')]},'ringtime':{'type':Sequelize[_0x82d7('0x2')],'defaultValue':0x0},'campaign':{'type':Sequelize[_0x82d7('0x4')]},'campaigntype':{'type':Sequelize[_0x82d7('0x4')]},'membername':{'type':Sequelize[_0x82d7('0x4')]}};
\ No newline at end of file
+var _0xd9a8=['sequelize','exports','INTEGER','DATE','STRING'];(function(_0x431724,_0x40867c){var _0x4ecfd8=function(_0x18ea63){while(--_0x18ea63){_0x431724['push'](_0x431724['shift']());}};_0x4ecfd8(++_0x40867c);}(_0xd9a8,0xc3));var _0x8d9a=function(_0x540f0d,_0x2a093b){_0x540f0d=_0x540f0d-0x0;var _0x5d2fc3=_0xd9a8[_0x540f0d];return _0x5d2fc3;};'use strict';var Sequelize=require(_0x8d9a('0x0'));module[_0x8d9a('0x1')]={'state':{'type':Sequelize[_0x8d9a('0x2')](0x2)},'statedesc':{'type':Sequelize['STRING']},'scheduledat':{'type':Sequelize[_0x8d9a('0x3')]},'uniqueid':{'type':Sequelize[_0x8d9a('0x4')]},'starttime':{'type':Sequelize['DATE']},'responsetime':{'type':Sequelize['DATE']},'ringtime':{'type':Sequelize[_0x8d9a('0x2')],'defaultValue':0x0},'campaign':{'type':Sequelize[_0x8d9a('0x4')]},'campaigntype':{'type':Sequelize[_0x8d9a('0x4')]},'membername':{'type':Sequelize[_0x8d9a('0x4')]}};
\ No newline at end of file
index 6aa06aa..0dda964 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x94eb=['bluebird','request-promise','rimraf','exports','define','ReportAgentPreview','lodash','util','../../config/logger','moment'];(function(_0x4ca333,_0x1218a3){var _0x13b2e1=function(_0x1eaf45){while(--_0x1eaf45){_0x4ca333['push'](_0x4ca333['shift']());}};_0x13b2e1(++_0x1218a3);}(_0x94eb,0x114));var _0xb94e=function(_0x3fc6a1,_0x582719){_0x3fc6a1=_0x3fc6a1-0x0;var _0x26d08e=_0x94eb[_0x3fc6a1];return _0x26d08e;};'use strict';var _=require(_0xb94e('0x0'));var util=require(_0xb94e('0x1'));var logger=require(_0xb94e('0x2'))('api');var moment=require(_0xb94e('0x3'));var BPromise=require(_0xb94e('0x4'));var rp=require(_0xb94e('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xb94e('0x6'));var config=require('../../config/environment');var attributes=require('./reportAgentPreview.attributes');module[_0xb94e('0x7')]=function(_0x227b53,_0x152a80){return _0x227b53[_0xb94e('0x8')](_0xb94e('0x9'),attributes,{'tableName':'report_agent_preview','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd654=['path','../../config/environment','./reportAgentPreview.attributes','exports','define','ReportAgentPreview','report_agent_preview','lodash','util','../../config/logger','moment','request-promise'];(function(_0x317369,_0x32e5b9){var _0x71b522=function(_0xac930c){while(--_0xac930c){_0x317369['push'](_0x317369['shift']());}};_0x71b522(++_0x32e5b9);}(_0xd654,0x11b));var _0x4d65=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0xd654[_0x4565bf];return _0x5610ba;};'use strict';var _=require(_0x4d65('0x0'));var util=require(_0x4d65('0x1'));var logger=require(_0x4d65('0x2'))('api');var moment=require(_0x4d65('0x3'));var BPromise=require('bluebird');var rp=require(_0x4d65('0x4'));var fs=require('fs');var path=require(_0x4d65('0x5'));var rimraf=require('rimraf');var config=require(_0x4d65('0x6'));var attributes=require(_0x4d65('0x7'));module[_0x4d65('0x8')]=function(_0x1496cb,_0x4d04d4){return _0x1496cb[_0x4d65('0x9')](_0x4d65('0xa'),attributes,{'tableName':_0x4d65('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4336840..a158090 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c80=['request','info','ReportAgentPreview,\x20%s,\x20%s','request\x20sent','debug','ReportAgentPreview,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','CreateReportAgentPreview','body','options','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http'];(function(_0x3df5d9,_0x576799){var _0x1f7c1c=function(_0x4fe64d){while(--_0x4fe64d){_0x3df5d9['push'](_0x3df5d9['shift']());}};_0x1f7c1c(++_0x576799);}(_0x7c80,0xb6));var _0x07c8=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7c80[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x07c8('0x0'));var util=require(_0x07c8('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x07c8('0x2'));var fs=require('fs');var Redis=require(_0x07c8('0x3'));var db=require(_0x07c8('0x4'))['db'];var utils=require(_0x07c8('0x5'));var logger=require(_0x07c8('0x6'))('rpc');var config=require(_0x07c8('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x07c8('0x8')][_0x07c8('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5e1db1,_0x254ebe,_0x141906){return new BPromise(function(_0xb84896,_0x485e7b){return client[_0x07c8('0xa')](_0x5e1db1,_0x141906)['then'](function(_0x550a7e){logger[_0x07c8('0xb')](_0x07c8('0xc'),_0x254ebe,_0x07c8('0xd'));logger[_0x07c8('0xe')](_0x07c8('0xf'),_0x254ebe,'request\x20sent',JSON[_0x07c8('0x10')](_0x550a7e));if(_0x550a7e[_0x07c8('0x11')]){if(_0x550a7e[_0x07c8('0x11')][_0x07c8('0x12')]===0x1f4){logger[_0x07c8('0x11')]('ReportAgentPreview,\x20%s,\x20%s',_0x254ebe,_0x550a7e[_0x07c8('0x11')][_0x07c8('0x13')]);return _0x485e7b(_0x550a7e[_0x07c8('0x11')][_0x07c8('0x13')]);}logger[_0x07c8('0x11')](_0x07c8('0xc'),_0x254ebe,_0x550a7e[_0x07c8('0x11')][_0x07c8('0x13')]);return _0xb84896(_0x550a7e[_0x07c8('0x11')]['message']);}else{logger[_0x07c8('0xb')](_0x07c8('0xc'),_0x254ebe,_0x07c8('0xd'));_0xb84896(_0x550a7e['result'][_0x07c8('0x13')]);}})[_0x07c8('0x14')](function(_0x304966){logger[_0x07c8('0x11')](_0x07c8('0xc'),_0x254ebe,_0x304966);_0x485e7b(_0x304966);});});}exports[_0x07c8('0x15')]=function(_0x44aec6){var _0x3349d4=this;return new Promise(function(_0x285307,_0x4fbfc1){return db['ReportAgentPreview']['create'](_0x44aec6[_0x07c8('0x16')],{'raw':_0x44aec6[_0x07c8('0x17')]?_0x44aec6[_0x07c8('0x17')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x3ffcc2){logger[_0x07c8('0xb')](_0x07c8('0x15'),_0x44aec6);logger[_0x07c8('0xe')]('CreateReportAgentPreview',_0x44aec6,JSON['stringify'](_0x3ffcc2));_0x285307(_0x3ffcc2);})[_0x07c8('0x14')](function(_0x272d0c){logger[_0x07c8('0x11')](_0x07c8('0x15'),_0x272d0c[_0x07c8('0x13')],_0x44aec6);_0x4fbfc1(_0x3349d4[_0x07c8('0x11')](0x1f4,_0x272d0c[_0x07c8('0x13')]));});});};
\ No newline at end of file
+var _0x4a73=['moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','request','then','info','ReportAgentPreview,\x20%s,\x20%s','ReportAgentPreview,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','CreateReportAgentPreview','ReportAgentPreview','create','options','raw','debug','util'];(function(_0x5202a2,_0x2dd23f){var _0x1f77b9=function(_0x4803ab){while(--_0x4803ab){_0x5202a2['push'](_0x5202a2['shift']());}};_0x1f77b9(++_0x2dd23f);}(_0x4a73,0x103));var _0x34a7=function(_0x3c9f70,_0x29d907){_0x3c9f70=_0x3c9f70-0x0;var _0x43cd6f=_0x4a73[_0x3c9f70];return _0x43cd6f;};'use strict';var _=require('lodash');var util=require(_0x34a7('0x0'));var moment=require(_0x34a7('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x34a7('0x2'));var db=require(_0x34a7('0x3'))['db'];var utils=require(_0x34a7('0x4'));var logger=require(_0x34a7('0x5'))('rpc');var config=require(_0x34a7('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x34a7('0x7')][_0x34a7('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x5c0091,_0x50088a,_0x2582ae){return new BPromise(function(_0x32c9bb,_0x428e5f){return client[_0x34a7('0x9')](_0x5c0091,_0x2582ae)[_0x34a7('0xa')](function(_0x7da44d){logger[_0x34a7('0xb')](_0x34a7('0xc'),_0x50088a,'request\x20sent');logger['debug'](_0x34a7('0xd'),_0x50088a,_0x34a7('0xe'),JSON[_0x34a7('0xf')](_0x7da44d));if(_0x7da44d[_0x34a7('0x10')]){if(_0x7da44d['error'][_0x34a7('0x11')]===0x1f4){logger['error'](_0x34a7('0xc'),_0x50088a,_0x7da44d[_0x34a7('0x10')][_0x34a7('0x12')]);return _0x428e5f(_0x7da44d['error'][_0x34a7('0x12')]);}logger['error'](_0x34a7('0xc'),_0x50088a,_0x7da44d[_0x34a7('0x10')][_0x34a7('0x12')]);return _0x32c9bb(_0x7da44d[_0x34a7('0x10')][_0x34a7('0x12')]);}else{logger['info'](_0x34a7('0xc'),_0x50088a,_0x34a7('0xe'));_0x32c9bb(_0x7da44d['result'][_0x34a7('0x12')]);}})[_0x34a7('0x13')](function(_0x261e64){logger[_0x34a7('0x10')](_0x34a7('0xc'),_0x50088a,_0x261e64);_0x428e5f(_0x261e64);});});}exports[_0x34a7('0x14')]=function(_0x1fc433){var _0x57d25a=this;return new Promise(function(_0x1c0532,_0x204ac9){return db[_0x34a7('0x15')][_0x34a7('0x16')](_0x1fc433['body'],{'raw':_0x1fc433['options']?_0x1fc433[_0x34a7('0x17')][_0x34a7('0x18')]===undefined?!![]:![]:!![]})[_0x34a7('0xa')](function(_0xae0cde){logger[_0x34a7('0xb')](_0x34a7('0x14'),_0x1fc433);logger[_0x34a7('0x19')]('CreateReportAgentPreview',_0x1fc433,JSON[_0x34a7('0xf')](_0xae0cde));_0x1c0532(_0xae0cde);})[_0x34a7('0x13')](function(_0x4278e2){logger[_0x34a7('0x10')]('CreateReportAgentPreview',_0x4278e2[_0x34a7('0x12')],_0x1fc433);_0x204ac9(_0x57d25a[_0x34a7('0x10')](0x1f4,_0x4278e2[_0x34a7('0x12')]));});});};
\ No newline at end of file
index 5a3e5bb..9bb1cea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x72f9=['/outbound','outbound','/outbound/channels','outboundChannels','/agents','/agents/:id/capacity','agentCapacity','/telephones','telephones','trunks','/campaigns','campaigns','/fax/accounts','faxAccounts','/chat/queues/waitinginteractions','/mail/queues/waitinginteractions','/openchannel/queues/waitinginteractions','/openchannel/queues/:id/waitinginteractions','openchannelQueuesIdWaitingInteractions','/sms/queues/waitinginteractions','/whatsapp/queues/waitinginteractions','/fax/queues/waitinginteractions','faxQueuesWaitingInteractions','post','queueNotify','mail','/mail/queues/:id','showMailQueues','/chat/queues/:id/notify','chat','/chat/queues/:id','showChatQueues','/fax/queues/:id/notify','fax','/fax/queues/:id','showFaxQueues','/openchannel/queues/:id/notify','/openchannel/queues/:id','/sms/queues/:id/notify','sms','/whatsapp/queues/:id/notify','whatsapp','/sms/queues/:id','/whatsapp/queues/:id','showWhatsappQueues','/agents/:id/notify','agentNotify','exports','multer','path','express','Router','../../components/auth/service','./rpc.controller','get','/voice/channels','isAuthenticated','voiceChannelMixMonitor','/voice/channels/:uniqueid/stopmixmonitor','voiceChannelStopMixMonitor','/voice/queues','/chat/queues','chatQueues','/mail/queues','mailQueues','/mail/accounts','/openchannel/queues','openchannelQueues','smsQueues','whatsappQueues','/fax/queues','faxQueues','/voice/queues/preview/:id','voiceQueuesPreview','/voice/queues/channels','voiceQueuesChannels','/voice/queues/channels/:uniqueid','voiceQueuesChannel','voiceQueuesChannelHangup','voiceQueuesChannelRedirect','/voice/queues/:id','put','updateVoiceQueue'];(function(_0x26945a,_0x239e06){var _0x45b1a9=function(_0x2fbdd4){while(--_0x2fbdd4){_0x26945a['push'](_0x26945a['shift']());}};_0x45b1a9(++_0x239e06);}(_0x72f9,0x17c));var _0x972f=function(_0x4287b6,_0x2d1db7){_0x4287b6=_0x4287b6-0x0;var _0x5a4f7e=_0x72f9[_0x4287b6];return _0x5a4f7e;};'use strict';var multer=require(_0x972f('0x0'));var util=require('util');var path=require(_0x972f('0x1'));var express=require(_0x972f('0x2'));var router=express[_0x972f('0x3')]();var auth=require(_0x972f('0x4'));var controller=require(_0x972f('0x5'));router[_0x972f('0x6')](_0x972f('0x7'),auth[_0x972f('0x8')](),controller['voiceChannels']);router['get']('/voice/channels/:uniqueid/mixmonitor',auth[_0x972f('0x8')](),controller[_0x972f('0x9')]);router['get'](_0x972f('0xa'),auth['isAuthenticated'](),controller[_0x972f('0xb')]);router['get'](_0x972f('0xc'),auth['isAuthenticated'](),controller['voiceQueues']);router[_0x972f('0x6')](_0x972f('0xd'),auth[_0x972f('0x8')](),controller[_0x972f('0xe')]);router[_0x972f('0x6')](_0x972f('0xf'),auth[_0x972f('0x8')](),controller[_0x972f('0x10')]);router['get'](_0x972f('0x11'),auth[_0x972f('0x8')](),controller['mailAccounts']);router['get'](_0x972f('0x12'),auth[_0x972f('0x8')](),controller[_0x972f('0x13')]);router[_0x972f('0x6')]('/sms/queues',auth[_0x972f('0x8')](),controller[_0x972f('0x14')]);router[_0x972f('0x6')]('/whatsapp/queues',auth[_0x972f('0x8')](),controller[_0x972f('0x15')]);router[_0x972f('0x6')](_0x972f('0x16'),auth[_0x972f('0x8')](),controller[_0x972f('0x17')]);router[_0x972f('0x6')](_0x972f('0x18'),auth[_0x972f('0x8')](),controller[_0x972f('0x19')]);router['get'](_0x972f('0x1a'),auth[_0x972f('0x8')](),controller[_0x972f('0x1b')]);router[_0x972f('0x6')](_0x972f('0x1c'),auth[_0x972f('0x8')](),controller[_0x972f('0x1d')]);router[_0x972f('0x6')]('/voice/queues/channels/:uniqueid/hangup',auth[_0x972f('0x8')](),controller[_0x972f('0x1e')]);router[_0x972f('0x6')]('/voice/queues/channels/:uniqueid/redirect/:exten',auth[_0x972f('0x8')](),controller[_0x972f('0x1f')]);router[_0x972f('0x6')](_0x972f('0x20'),auth[_0x972f('0x8')](),controller['showVoiceQueues']);router[_0x972f('0x21')](_0x972f('0x20'),auth[_0x972f('0x8')](),controller[_0x972f('0x22')]);router[_0x972f('0x6')](_0x972f('0x23'),auth[_0x972f('0x8')](),controller[_0x972f('0x24')]);router[_0x972f('0x6')](_0x972f('0x25'),auth['isAuthenticated'](),controller[_0x972f('0x26')]);router[_0x972f('0x6')](_0x972f('0x27'),auth[_0x972f('0x8')](),controller['agents']);router[_0x972f('0x21')](_0x972f('0x28'),auth[_0x972f('0x8')](),controller[_0x972f('0x29')]);router[_0x972f('0x6')](_0x972f('0x2a'),auth[_0x972f('0x8')](),controller[_0x972f('0x2b')]);router[_0x972f('0x6')]('/trunks',auth['isAuthenticated'](),controller[_0x972f('0x2c')]);router[_0x972f('0x6')](_0x972f('0x2d'),auth['isAuthenticated'](),controller[_0x972f('0x2e')]);router['get'](_0x972f('0x2f'),auth['isAuthenticated'](),controller[_0x972f('0x30')]);router[_0x972f('0x6')](_0x972f('0x31'),auth[_0x972f('0x8')](),controller['chatQueuesWaitingInteractions']);router[_0x972f('0x6')](_0x972f('0x32'),auth[_0x972f('0x8')](),controller['mailQueuesWaitingInteractions']);router[_0x972f('0x6')](_0x972f('0x33'),auth[_0x972f('0x8')](),controller['openchannelQueuesWaitingInteractions']);router[_0x972f('0x6')](_0x972f('0x34'),auth[_0x972f('0x8')](),controller[_0x972f('0x35')]);router[_0x972f('0x6')](_0x972f('0x36'),auth[_0x972f('0x8')](),controller['smsQueuesWaitingInteractions']);router['get'](_0x972f('0x37'),auth[_0x972f('0x8')](),controller['whatsappQueuesWaitingInteractions']);router[_0x972f('0x6')](_0x972f('0x38'),auth[_0x972f('0x8')](),controller[_0x972f('0x39')]);router[_0x972f('0x3a')]('/mail/queues/:id/notify',auth[_0x972f('0x8')](),controller[_0x972f('0x3b')](_0x972f('0x3c')));router['get'](_0x972f('0x3d'),auth[_0x972f('0x8')](),controller[_0x972f('0x3e')]);router[_0x972f('0x3a')](_0x972f('0x3f'),auth['isAuthenticated'](),controller[_0x972f('0x3b')](_0x972f('0x40')));router[_0x972f('0x6')](_0x972f('0x41'),auth[_0x972f('0x8')](),controller[_0x972f('0x42')]);router[_0x972f('0x3a')](_0x972f('0x43'),auth[_0x972f('0x8')](),controller[_0x972f('0x3b')](_0x972f('0x44')));router[_0x972f('0x6')](_0x972f('0x45'),auth[_0x972f('0x8')](),controller[_0x972f('0x46')]);router['post'](_0x972f('0x47'),auth[_0x972f('0x8')](),controller[_0x972f('0x3b')]('openchannel'));router[_0x972f('0x6')](_0x972f('0x48'),auth[_0x972f('0x8')](),controller['showOpenchannelQueues']);router['post'](_0x972f('0x49'),auth[_0x972f('0x8')](),controller[_0x972f('0x3b')](_0x972f('0x4a')));router[_0x972f('0x3a')](_0x972f('0x4b'),auth['isAuthenticated'](),controller['queueNotify'](_0x972f('0x4c')));router[_0x972f('0x6')](_0x972f('0x4d'),auth[_0x972f('0x8')](),controller['showSmsQueues']);router[_0x972f('0x6')](_0x972f('0x4e'),auth[_0x972f('0x8')](),controller[_0x972f('0x4f')]);router['post'](_0x972f('0x50'),auth[_0x972f('0x8')](),controller[_0x972f('0x51')]);module[_0x972f('0x52')]=router;
\ No newline at end of file
+var _0x7335=['showVoiceQueues','put','updateVoiceQueue','/outbound','/outbound/channels','outboundChannels','/agents','/agents/:id/capacity','agentCapacity','/telephones','trunks','faxAccounts','/chat/queues/waitinginteractions','/mail/queues/waitinginteractions','/openchannel/queues/:id/waitinginteractions','/sms/queues/waitinginteractions','whatsappQueuesWaitingInteractions','/fax/queues/waitinginteractions','faxQueuesWaitingInteractions','/mail/queues/:id/notify','mail','/mail/queues/:id','showMailQueues','post','queueNotify','chat','/chat/queues/:id','showChatQueues','/fax/queues/:id/notify','fax','/fax/queues/:id','showFaxQueues','/openchannel/queues/:id/notify','openchannel','/openchannel/queues/:id','showOpenchannelQueues','/sms/queues/:id/notify','sms','whatsapp','/sms/queues/:id','/whatsapp/queues/:id','showWhatsappQueues','agentNotify','exports','util','path','express','./rpc.controller','voiceChannels','/voice/channels/:uniqueid/mixmonitor','voiceChannelMixMonitor','get','/voice/channels/:uniqueid/stopmixmonitor','isAuthenticated','voiceChannelStopMixMonitor','voiceQueues','/chat/queues','chatQueues','/mail/queues','/openchannel/queues','/sms/queues','smsQueues','whatsappQueues','/fax/queues','/voice/queues/preview/:id','voiceQueuesPreview','/voice/queues/channels','voiceQueuesChannels','voiceQueuesChannel','/voice/queues/channels/:uniqueid/redirect/:exten','voiceQueuesChannelRedirect','/voice/queues/:id'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0x7335,0x74));var _0x5733=function(_0x25d386,_0x108d0d){_0x25d386=_0x25d386-0x0;var _0x857f4a=_0x7335[_0x25d386];return _0x857f4a;};'use strict';var multer=require('multer');var util=require(_0x5733('0x0'));var path=require(_0x5733('0x1'));var express=require(_0x5733('0x2'));var router=express['Router']();var auth=require('../../components/auth/service');var controller=require(_0x5733('0x3'));router['get']('/voice/channels',auth['isAuthenticated'](),controller[_0x5733('0x4')]);router['get'](_0x5733('0x5'),auth['isAuthenticated'](),controller[_0x5733('0x6')]);router[_0x5733('0x7')](_0x5733('0x8'),auth[_0x5733('0x9')](),controller[_0x5733('0xa')]);router[_0x5733('0x7')]('/voice/queues',auth[_0x5733('0x9')](),controller[_0x5733('0xb')]);router[_0x5733('0x7')](_0x5733('0xc'),auth[_0x5733('0x9')](),controller[_0x5733('0xd')]);router[_0x5733('0x7')](_0x5733('0xe'),auth[_0x5733('0x9')](),controller['mailQueues']);router[_0x5733('0x7')]('/mail/accounts',auth['isAuthenticated'](),controller['mailAccounts']);router[_0x5733('0x7')](_0x5733('0xf'),auth[_0x5733('0x9')](),controller['openchannelQueues']);router['get'](_0x5733('0x10'),auth[_0x5733('0x9')](),controller[_0x5733('0x11')]);router[_0x5733('0x7')]('/whatsapp/queues',auth[_0x5733('0x9')](),controller[_0x5733('0x12')]);router[_0x5733('0x7')](_0x5733('0x13'),auth[_0x5733('0x9')](),controller['faxQueues']);router[_0x5733('0x7')](_0x5733('0x14'),auth[_0x5733('0x9')](),controller[_0x5733('0x15')]);router['get'](_0x5733('0x16'),auth[_0x5733('0x9')](),controller[_0x5733('0x17')]);router[_0x5733('0x7')]('/voice/queues/channels/:uniqueid',auth[_0x5733('0x9')](),controller[_0x5733('0x18')]);router['get']('/voice/queues/channels/:uniqueid/hangup',auth['isAuthenticated'](),controller['voiceQueuesChannelHangup']);router['get'](_0x5733('0x19'),auth[_0x5733('0x9')](),controller[_0x5733('0x1a')]);router[_0x5733('0x7')](_0x5733('0x1b'),auth[_0x5733('0x9')](),controller[_0x5733('0x1c')]);router[_0x5733('0x1d')]('/voice/queues/:id',auth[_0x5733('0x9')](),controller[_0x5733('0x1e')]);router['get'](_0x5733('0x1f'),auth[_0x5733('0x9')](),controller['outbound']);router['get'](_0x5733('0x20'),auth[_0x5733('0x9')](),controller[_0x5733('0x21')]);router['get'](_0x5733('0x22'),auth[_0x5733('0x9')](),controller['agents']);router[_0x5733('0x1d')](_0x5733('0x23'),auth['isAuthenticated'](),controller[_0x5733('0x24')]);router['get'](_0x5733('0x25'),auth[_0x5733('0x9')](),controller['telephones']);router[_0x5733('0x7')]('/trunks',auth[_0x5733('0x9')](),controller[_0x5733('0x26')]);router[_0x5733('0x7')]('/campaigns',auth['isAuthenticated'](),controller['campaigns']);router['get']('/fax/accounts',auth[_0x5733('0x9')](),controller[_0x5733('0x27')]);router['get'](_0x5733('0x28'),auth[_0x5733('0x9')](),controller['chatQueuesWaitingInteractions']);router['get'](_0x5733('0x29'),auth['isAuthenticated'](),controller['mailQueuesWaitingInteractions']);router['get']('/openchannel/queues/waitinginteractions',auth[_0x5733('0x9')](),controller['openchannelQueuesWaitingInteractions']);router[_0x5733('0x7')](_0x5733('0x2a'),auth[_0x5733('0x9')](),controller['openchannelQueuesIdWaitingInteractions']);router[_0x5733('0x7')](_0x5733('0x2b'),auth['isAuthenticated'](),controller['smsQueuesWaitingInteractions']);router[_0x5733('0x7')]('/whatsapp/queues/waitinginteractions',auth[_0x5733('0x9')](),controller[_0x5733('0x2c')]);router['get'](_0x5733('0x2d'),auth[_0x5733('0x9')](),controller[_0x5733('0x2e')]);router['post'](_0x5733('0x2f'),auth['isAuthenticated'](),controller['queueNotify'](_0x5733('0x30')));router[_0x5733('0x7')](_0x5733('0x31'),auth['isAuthenticated'](),controller[_0x5733('0x32')]);router[_0x5733('0x33')]('/chat/queues/:id/notify',auth[_0x5733('0x9')](),controller[_0x5733('0x34')](_0x5733('0x35')));router[_0x5733('0x7')](_0x5733('0x36'),auth['isAuthenticated'](),controller[_0x5733('0x37')]);router[_0x5733('0x33')](_0x5733('0x38'),auth['isAuthenticated'](),controller[_0x5733('0x34')](_0x5733('0x39')));router[_0x5733('0x7')](_0x5733('0x3a'),auth['isAuthenticated'](),controller[_0x5733('0x3b')]);router[_0x5733('0x33')](_0x5733('0x3c'),auth['isAuthenticated'](),controller['queueNotify'](_0x5733('0x3d')));router[_0x5733('0x7')](_0x5733('0x3e'),auth['isAuthenticated'](),controller[_0x5733('0x3f')]);router['post'](_0x5733('0x40'),auth[_0x5733('0x9')](),controller[_0x5733('0x34')](_0x5733('0x41')));router[_0x5733('0x33')]('/whatsapp/queues/:id/notify',auth[_0x5733('0x9')](),controller[_0x5733('0x34')](_0x5733('0x42')));router[_0x5733('0x7')](_0x5733('0x43'),auth[_0x5733('0x9')](),controller['showSmsQueues']);router[_0x5733('0x7')](_0x5733('0x44'),auth['isAuthenticated'](),controller[_0x5733('0x45')]);router[_0x5733('0x33')]('/agents/:id/notify',auth[_0x5733('0x9')](),controller[_0x5733('0x46')]);module[_0x5733('0x47')]=router;
\ No newline at end of file
index 36308ae..c151920 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7217=['mailQueuesWaitingInteractions','MailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','OpenchannelQueuesWaitingInteractions','openchannelQueuesIdWaitingInteractions','type','rows','map','value','filter','indexOf','queue_id','smsQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','WhatsappQueuesWaitingInteractions','faxQueuesWaitingInteractions','capitalize','chat','Website','Account','Queue','Message','findOne','messageId','Interaction','queue','MessageId','InteractionId','From','QueueId','TransferReport','create','Start','channel','Channel\x20field\x20is\x20mandatory','\x20Message\x20not\x20found','update','agentTransferTimeout','*,*,*,*','bluebird','lodash','util','../../mysqldb','../../config/logger','api','http','client','request','then','error','code','message','result','catch','json','sendStatus','stack','send','isNil','find','voiceChannels','VoiceChannels','query','voiceChannelMixMonitor','VoiceChannelMixMonitor','merge','params','VoiceChannelStopMixMonitor','voiceQueues','VoiceQueues','showVoiceQueues','updateVoiceQueue','UpdateVoiceQueue','voiceQueuesChannels','VoiceQueuesChannels','voiceQueuesChannel','VoiceQueuesChannel','voiceQueuesChannelHangup','VoiceQueuesChannelHangup','VoiceQueuesChannelRedirect','outboundChannels','agents','Agents','agentCapacity','body','interaction','user','name','hasOwnProperty','MemberReport','findAll','length','format','updateAttributes','findOrCreate','SIP/%s','INTERACTION','YYYY-MM-DD\x20HH:mm:ss','agent','internal','AgentCapacity','capacity','telephones','Telephones','trunks','Trunks','campaigns','Campaigns','ChatQueues','showChatQueues','MailQueues','mailAccounts','OpenchannelQueues','showOpenchannelQueues','SmsQueues','showSmsQueues','whatsappQueues','WhatsappQueues','showWhatsappQueues','faxQueues','FaxQueues','showFaxQueues','FaxAccounts','chatQueuesWaitingInteractions','ChatQueuesWaitingInteractions'];(function(_0x173441,_0x26b0d9){var _0x2423a8=function(_0x4d96c2){while(--_0x4d96c2){_0x173441['push'](_0x173441['shift']());}};_0x2423a8(++_0x26b0d9);}(_0x7217,0x19e));var _0x7721=function(_0x3635ce,_0x33a6f9){_0x3635ce=_0x3635ce-0x0;var _0x97ecd0=_0x7217[_0x3635ce];return _0x97ecd0;};'use strict';var BPromise=require(_0x7721('0x0'));var moment=require('moment');var _=require(_0x7721('0x1'));var util=require(_0x7721('0x2'));var db=require(_0x7721('0x3'))['db'];var logger=require(_0x7721('0x4'))(_0x7721('0x5'));var jayson=require('jayson/promise');var amiClient=jayson['client'][_0x7721('0x6')]({'port':0x232a});var mailClient=jayson[_0x7721('0x7')][_0x7721('0x6')]({'port':0x232b});var routingClient=jayson[_0x7721('0x7')][_0x7721('0x6')]({'port':0x232c});function respondWithRpcPromise(_0xf7ff37,_0x18ab6b,_0x21f680){return new BPromise(function(_0x225610,_0x2f99ed){var _0x3e6368=_0x21f680?_0x21f680:amiClient;return _0x3e6368[_0x7721('0x8')](_0xf7ff37,_0x18ab6b)[_0x7721('0x9')](function(_0x138740){if(_0x138740[_0x7721('0xa')]){if(_0x138740['error'][_0x7721('0xb')]===0x1f4){return _0x2f99ed(_0x138740[_0x7721('0xa')][_0x7721('0xc')]);}return _0x225610(_0x138740[_0x7721('0xa')][_0x7721('0xc')]);}else{_0x225610(_0x138740[_0x7721('0xd')]);}})[_0x7721('0xe')](function(_0x27b36b){_0x2f99ed(_0x27b36b);});});}function respondWithResult(_0x55b4ca,_0x2911ec){_0x2911ec=_0x2911ec||0xc8;return function(_0x199930){if(_0x199930){return _0x55b4ca['status'](_0x2911ec)[_0x7721('0xf')](_0x199930);}return _0x55b4ca[_0x7721('0x10')](0x194);};}function handleError(_0x3f01c5,_0x2e9752){_0x2e9752=_0x2e9752||0x1f4;return function(_0x5069da){logger[_0x7721('0xa')](_0x5069da[_0x7721('0x11')]);if(_0x5069da['name']){delete _0x5069da['name'];}_0x3f01c5['status'](_0x2e9752)[_0x7721('0x12')](_0x5069da);};}function findById(_0x25a628){return function(_0x3cc909){if(!_[_0x7721('0x13')](_0x25a628)&&!_['isNil'](_0x3cc909)&&!_[_0x7721('0x13')](_0x3cc909['rows'])){return _[_0x7721('0x14')](_0x3cc909['rows'],function(_0xfec626){return _0xfec626['id']==_0x25a628;});}return null;};}exports[_0x7721('0x15')]=function(_0x3ab5a5,_0x3e140d){return respondWithRpcPromise(_0x7721('0x16'),_0x3ab5a5[_0x7721('0x17')])[_0x7721('0x9')](respondWithResult(_0x3e140d,null))[_0x7721('0xe')](handleError(_0x3e140d,null));};exports[_0x7721('0x18')]=function(_0xaeccc4,_0x4ce1db){return respondWithRpcPromise(_0x7721('0x19'),_[_0x7721('0x1a')](_0xaeccc4[_0x7721('0x17')],_0xaeccc4[_0x7721('0x1b')]))['then'](respondWithResult(_0x4ce1db,null))[_0x7721('0xe')](handleError(_0x4ce1db,null));};exports['voiceChannelStopMixMonitor']=function(_0xb9e9dd,_0x288e3a){return respondWithRpcPromise(_0x7721('0x1c'),_[_0x7721('0x1a')](_0xb9e9dd[_0x7721('0x17')],_0xb9e9dd[_0x7721('0x1b')]))[_0x7721('0x9')](respondWithResult(_0x288e3a,null))['catch'](handleError(_0x288e3a,null));};exports[_0x7721('0x1d')]=function(_0x1abedb,_0x125564){return respondWithRpcPromise(_0x7721('0x1e'),_0x1abedb[_0x7721('0x17')])[_0x7721('0x9')](respondWithResult(_0x125564,null))[_0x7721('0xe')](handleError(_0x125564,null));};exports[_0x7721('0x1f')]=function(_0x40f367,_0x52316e){return respondWithRpcPromise(_0x7721('0x1e'),_0x40f367['query'])['then'](findById(_0x40f367[_0x7721('0x1b')]['id']))[_0x7721('0x9')](respondWithResult(_0x52316e,null))[_0x7721('0xe')](handleError(_0x52316e,null));};exports[_0x7721('0x20')]=function(_0x1ea4d,_0x37b9f0){return respondWithRpcPromise(_0x7721('0x21'),_[_0x7721('0x1a')](_0x1ea4d['body'],_0x1ea4d[_0x7721('0x1b')]))[_0x7721('0x9')](respondWithResult(_0x37b9f0,null))['catch'](handleError(_0x37b9f0,null));};exports['voiceQueuesPreview']=function(_0xfde9ec,_0x220bbf){return respondWithRpcPromise('VoiceQueuesPreview',_[_0x7721('0x1a')](_0xfde9ec[_0x7721('0x17')],_0xfde9ec[_0x7721('0x1b')]))['then'](respondWithResult(_0x220bbf,null))[_0x7721('0xe')](handleError(_0x220bbf,null));};exports[_0x7721('0x22')]=function(_0x1492d4,_0x3f15e2){return respondWithRpcPromise(_0x7721('0x23'),_0x1492d4['query'])[_0x7721('0x9')](respondWithResult(_0x3f15e2,null))[_0x7721('0xe')](handleError(_0x3f15e2,null));};exports[_0x7721('0x24')]=function(_0x5c5b33,_0x35de7a){return respondWithRpcPromise(_0x7721('0x25'),_['merge'](_0x5c5b33[_0x7721('0x17')],_0x5c5b33['params']))[_0x7721('0x9')](respondWithResult(_0x35de7a,null))[_0x7721('0xe')](handleError(_0x35de7a,null));};exports[_0x7721('0x26')]=function(_0x1d894b,_0x1c84c0){return respondWithRpcPromise(_0x7721('0x27'),_[_0x7721('0x1a')](_0x1d894b[_0x7721('0x17')],_0x1d894b[_0x7721('0x1b')]))[_0x7721('0x9')](respondWithResult(_0x1c84c0,null))[_0x7721('0xe')](handleError(_0x1c84c0,null));};exports['voiceQueuesChannelRedirect']=function(_0xd1df68,_0x5e6663){return respondWithRpcPromise(_0x7721('0x28'),_[_0x7721('0x1a')](_0xd1df68[_0x7721('0x17')],_0xd1df68[_0x7721('0x1b')]))[_0x7721('0x9')](respondWithResult(_0x5e6663,null))[_0x7721('0xe')](handleError(_0x5e6663,null));};exports['outbound']=function(_0x557c34,_0x4cadef){return respondWithRpcPromise('Outbound',_0x557c34[_0x7721('0x17')])[_0x7721('0x9')](respondWithResult(_0x4cadef,null))[_0x7721('0xe')](handleError(_0x4cadef,null));};exports[_0x7721('0x29')]=function(_0x4a90ce,_0xa389fa){return respondWithRpcPromise('OutboundChannels',_0x4a90ce[_0x7721('0x17')])[_0x7721('0x9')](respondWithResult(_0xa389fa,null))['catch'](handleError(_0xa389fa,null));};exports[_0x7721('0x2a')]=function(_0x3a47c8,_0x4e77ff){var _0x4d0111;return respondWithRpcPromise(_0x7721('0x2b'),_0x3a47c8[_0x7721('0x17')])[_0x7721('0x9')](function(_0x15e34d){_0x4d0111=_0x15e34d;return respondWithRpcPromise('Agents',_0x3a47c8[_0x7721('0x17')],routingClient);})[_0x7721('0x9')](function(_0x40ce8c){return _[_0x7721('0x1a')]({},_0x40ce8c,_0x4d0111);})[_0x7721('0x9')](respondWithResult(_0x4e77ff,null))['catch'](handleError(_0x4e77ff,null));};exports[_0x7721('0x2c')]=function(_0x4a2c28,_0xaa3216){if(_0x4a2c28['body']&&_0x4a2c28[_0x7721('0x2d')][_0x7721('0x2e')]&&_0x4a2c28[_0x7721('0x2f')]&&_0x4a2c28['user'][_0x7721('0x30')]){for(var _0x11d853 in _0x4a2c28[_0x7721('0x2d')]['interaction']){if(_0x4a2c28[_0x7721('0x2d')][_0x7721('0x2e')][_0x7721('0x31')](_0x11d853)){db[_0x7721('0x32')][_0x7721('0x33')]({'where':{'channel':_0x11d853,'membername':_0x4a2c28[_0x7721('0x2f')][_0x7721('0x30')],'type':'INTERACTION','exitAt':null,'uniqueid':_0x4a2c28['body'][_0x7721('0x2e')][_0x11d853]&&_0x4a2c28[_0x7721('0x2d')][_0x7721('0x2e')][_0x11d853][_0x7721('0x34')]?{'$notIn':_0x4a2c28[_0x7721('0x2d')][_0x7721('0x2e')][_0x11d853]}:{'$ne':null}}})[_0x7721('0x9')](function(_0x2966fe){var _0xa601bc=moment()[_0x7721('0x35')]('YYYY-MM-DD\x20HH:mm:ss');for(var _0x578867=0x0,_0x5ed70d=_0x2966fe[_0x7721('0x34')];_0x578867<_0x5ed70d;_0x578867+=0x1){_0x2966fe[_0x578867][_0x7721('0x36')]({'exitAt':_0xa601bc});}});for(var _0x219c9f=0x0;_0x219c9f<_0x4a2c28['body'][_0x7721('0x2e')][_0x11d853][_0x7721('0x34')];_0x219c9f+=0x1){db['MemberReport'][_0x7721('0x37')]({'where':{'channel':_0x11d853,'membername':_0x4a2c28['user'][_0x7721('0x30')],'type':'INTERACTION','uniqueid':_0x4a2c28[_0x7721('0x2d')][_0x7721('0x2e')][_0x11d853][_0x219c9f],'exitAt':null},'defaults':{'channel':_0x11d853,'membername':_0x4a2c28[_0x7721('0x2f')]['name'],'interface':_[_0x7721('0x13')](_0x4a2c28[_0x7721('0x2f')]['interface'])?util[_0x7721('0x35')](_0x7721('0x38'),_0x4a2c28[_0x7721('0x2f')]['name']):_0x4a2c28[_0x7721('0x2f')]['interface'],'type':_0x7721('0x39'),'enterAt':moment()[_0x7721('0x35')](_0x7721('0x3a')),'role':_0x7721('0x3b'),'internal':_0x4a2c28[_0x7721('0x2f')][_0x7721('0x3c')],'uniqueid':_0x4a2c28[_0x7721('0x2d')][_0x7721('0x2e')][_0x11d853][_0x219c9f]}});}}}}return respondWithRpcPromise(_0x7721('0x3d'),{'id':_0x4a2c28[_0x7721('0x1b')]['id'],'capacity':_0x4a2c28[_0x7721('0x2d')][_0x7721('0x3e')]},routingClient)[_0x7721('0x9')](respondWithResult(_0xaa3216,null))[_0x7721('0xe')](handleError(_0xaa3216,null));};exports[_0x7721('0x3f')]=function(_0x5b741d,_0x474f32){return respondWithRpcPromise(_0x7721('0x40'),_0x5b741d[_0x7721('0x17')])[_0x7721('0x9')](respondWithResult(_0x474f32,null))[_0x7721('0xe')](handleError(_0x474f32,null));};exports[_0x7721('0x41')]=function(_0x267f5e,_0x57484c){return respondWithRpcPromise(_0x7721('0x42'),_0x267f5e[_0x7721('0x17')])[_0x7721('0x9')](respondWithResult(_0x57484c,null))[_0x7721('0xe')](handleError(_0x57484c,null));};exports[_0x7721('0x43')]=function(_0x9c0d4,_0x7fbd6c){return respondWithRpcPromise(_0x7721('0x44'),_0x9c0d4[_0x7721('0x17')])[_0x7721('0x9')](respondWithResult(_0x7fbd6c,null))[_0x7721('0xe')](handleError(_0x7fbd6c,null));};exports['chatQueues']=function(_0x421c27,_0xadb365){return respondWithRpcPromise(_0x7721('0x45'),_0x421c27[_0x7721('0x17')],routingClient)[_0x7721('0x9')](respondWithResult(_0xadb365,null))[_0x7721('0xe')](handleError(_0xadb365,null));};exports[_0x7721('0x46')]=function(_0x36fe6f,_0x360882){return respondWithRpcPromise(_0x7721('0x45'),_0x36fe6f[_0x7721('0x17')],routingClient)[_0x7721('0x9')](findById(_0x36fe6f[_0x7721('0x1b')]['id']))[_0x7721('0x9')](respondWithResult(_0x360882,null))[_0x7721('0xe')](handleError(_0x360882,null));};exports['mailQueues']=function(_0x50e9e9,_0x4e112e){return respondWithRpcPromise(_0x7721('0x47'),_0x50e9e9['query'],routingClient)['then'](respondWithResult(_0x4e112e,null))['catch'](handleError(_0x4e112e,null));};exports['showMailQueues']=function(_0x47925a,_0x219181){return respondWithRpcPromise(_0x7721('0x47'),_0x47925a['query'],routingClient)[_0x7721('0x9')](findById(_0x47925a['params']['id']))['then'](respondWithResult(_0x219181,null))['catch'](handleError(_0x219181,null));};exports[_0x7721('0x48')]=function(_0x4f0d38,_0x48e7e3){return respondWithRpcPromise('MailAccounts',_0x4f0d38[_0x7721('0x17')],mailClient)[_0x7721('0x9')](respondWithResult(_0x48e7e3,null))[_0x7721('0xe')](handleError(_0x48e7e3,null));};exports['openchannelQueues']=function(_0x2a025c,_0x1f1890){return respondWithRpcPromise(_0x7721('0x49'),_0x2a025c[_0x7721('0x17')],routingClient)[_0x7721('0x9')](respondWithResult(_0x1f1890,null))[_0x7721('0xe')](handleError(_0x1f1890,null));};exports[_0x7721('0x4a')]=function(_0x3e3301,_0x127f46){return respondWithRpcPromise(_0x7721('0x49'),_0x3e3301[_0x7721('0x17')],routingClient)[_0x7721('0x9')](findById(_0x3e3301[_0x7721('0x1b')]['id']))[_0x7721('0x9')](respondWithResult(_0x127f46,null))[_0x7721('0xe')](handleError(_0x127f46,null));};exports['smsQueues']=function(_0x233e5d,_0x2c93b0){return respondWithRpcPromise(_0x7721('0x4b'),_0x233e5d[_0x7721('0x17')],routingClient)['then'](respondWithResult(_0x2c93b0,null))[_0x7721('0xe')](handleError(_0x2c93b0,null));};exports[_0x7721('0x4c')]=function(_0x4c8284,_0x3e7df3){return respondWithRpcPromise('SmsQueues',_0x4c8284[_0x7721('0x17')],routingClient)[_0x7721('0x9')](findById(_0x4c8284[_0x7721('0x1b')]['id']))[_0x7721('0x9')](respondWithResult(_0x3e7df3,null))[_0x7721('0xe')](handleError(_0x3e7df3,null));};exports[_0x7721('0x4d')]=function(_0x3121e0,_0x167ce7){return respondWithRpcPromise(_0x7721('0x4e'),_0x3121e0['query'],routingClient)[_0x7721('0x9')](respondWithResult(_0x167ce7,null))[_0x7721('0xe')](handleError(_0x167ce7,null));};exports[_0x7721('0x4f')]=function(_0x3a11e2,_0x56a988){return respondWithRpcPromise(_0x7721('0x4e'),_0x3a11e2[_0x7721('0x17')],routingClient)['then'](findById(_0x3a11e2[_0x7721('0x1b')]['id']))[_0x7721('0x9')](respondWithResult(_0x56a988,null))['catch'](handleError(_0x56a988,null));};exports[_0x7721('0x50')]=function(_0x565c49,_0x14b543){return respondWithRpcPromise(_0x7721('0x51'),_0x565c49[_0x7721('0x17')],routingClient)[_0x7721('0x9')](respondWithResult(_0x14b543,null))[_0x7721('0xe')](handleError(_0x14b543,null));};exports[_0x7721('0x52')]=function(_0x258c57,_0x5dca04){return respondWithRpcPromise(_0x7721('0x51'),_0x258c57[_0x7721('0x17')],routingClient)[_0x7721('0x9')](findById(_0x258c57['params']['id']))['then'](respondWithResult(_0x5dca04,null))['catch'](handleError(_0x5dca04,null));};exports['faxAccounts']=function(_0x5e966f,_0x1fc5f7){return respondWithRpcPromise(_0x7721('0x53'),_0x5e966f['query'])[_0x7721('0x9')](respondWithResult(_0x1fc5f7,null))[_0x7721('0xe')](handleError(_0x1fc5f7,null));};exports[_0x7721('0x54')]=function(_0x4593e1,_0x53ebb1){return respondWithRpcPromise(_0x7721('0x55'),_0x4593e1[_0x7721('0x17')],routingClient)[_0x7721('0x9')](respondWithResult(_0x53ebb1,null))[_0x7721('0xe')](handleError(_0x53ebb1,null));};exports[_0x7721('0x56')]=function(_0x53adb1,_0x29ac64){return respondWithRpcPromise(_0x7721('0x57'),_0x53adb1[_0x7721('0x17')],routingClient)['then'](respondWithResult(_0x29ac64,null))['catch'](handleError(_0x29ac64,null));};exports[_0x7721('0x58')]=function(_0x752564,_0x423040){return respondWithRpcPromise(_0x7721('0x59'),_0x752564[_0x7721('0x17')],routingClient)['then'](respondWithResult(_0x423040,null))['catch'](handleError(_0x423040,null));};exports[_0x7721('0x5a')]=function(_0x1bd97e,_0x68de4){return respondWithRpcPromise(_0x7721('0x59'),_0x1bd97e[_0x7721('0x17')],routingClient)[_0x7721('0x9')](function(_0x34187f){if(_0x1bd97e['query'][_0x7721('0x5b')]!==undefined){var _0x413185=_(_0x34187f[_0x7721('0x5c')])['filter']([_0x1bd97e[_0x7721('0x17')][_0x7721('0x5b')],_0x1bd97e[_0x7721('0x1b')]['id']])[_0x7721('0x5d')]('queue_id')['uniq']()[_0x7721('0x5e')]();return _0x34187f[_0x7721('0x5c')][_0x7721('0x5f')](function(_0x42c849){return _0x413185[_0x7721('0x60')](_0x42c849[_0x7721('0x61')])>-0x1;});}else{return _0x34187f['rows'][_0x7721('0x5f')](function(_0x42bb5a){return _0x42bb5a[_0x7721('0x61')]===parseInt(_0x1bd97e['params']['id']);});}})[_0x7721('0x9')](respondWithResult(_0x68de4,null))[_0x7721('0xe')](handleError(_0x68de4,null));};exports[_0x7721('0x62')]=function(_0xc20188,_0x457d7f){return respondWithRpcPromise('SmsQueuesWaitingInteractions',_0xc20188[_0x7721('0x17')],routingClient)['then'](respondWithResult(_0x457d7f,null))[_0x7721('0xe')](handleError(_0x457d7f,null));};exports[_0x7721('0x63')]=function(_0x2d5433,_0x7f0598){return respondWithRpcPromise(_0x7721('0x64'),_0x2d5433[_0x7721('0x17')],routingClient)[_0x7721('0x9')](respondWithResult(_0x7f0598,null))[_0x7721('0xe')](handleError(_0x7f0598,null));};exports[_0x7721('0x65')]=function(_0x3b78f5,_0x2c74d8){return respondWithRpcPromise('FaxQueuesWaitingInteractions',_0x3b78f5[_0x7721('0x17')],routingClient)[_0x7721('0x9')](respondWithResult(_0x2c74d8,null))[_0x7721('0xe')](handleError(_0x2c74d8,null));};exports['queueNotify']=function(_0x94af20){return function(_0x26b2cc,_0x139517){var _0xc9761e,_0xcd9f0d;var _0x594059=_[_0x7721('0x66')](_0x94af20);var _0x22f15a=_0x94af20===_0x7721('0x67')?_0x7721('0x68'):_0x7721('0x69');return db[_0x594059+_0x7721('0x6a')]['findOne']({'raw':!![],'where':{'id':_0x26b2cc[_0x7721('0x1b')]['id']}})[_0x7721('0x9')](function(_0x480a03){if(_[_0x7721('0x13')](_0x480a03)){throw new Error(_0x594059+'\x20Queue\x20not\x20found');}_0xc9761e=_0x480a03;return db[_0x594059+_0x7721('0x6b')][_0x7721('0x6c')]({'where':{'id':_0x26b2cc['body'][_0x7721('0x6d')]},'include':[{'model':db[_0x594059+'Interaction'],'as':'Interaction'},{'model':db[_0x594059+_0x22f15a],'as':'Account'}]});})[_0x7721('0x9')](function(_0x20f12e){if(_[_0x7721('0x13')](_0x20f12e)){throw new Error(_0x594059+'\x20Message\x20not\x20found');}_0xcd9f0d=_0x20f12e;return _0x20f12e['update']({'read':0x0,'readAt':null,'UserId':null});})['then'](function(){var _0x355aa8={'uniqueid':_0x94af20+'.'+_0xcd9f0d['id']+'.'+_0xcd9f0d[_0x7721('0x6e')]['id'],'FromUserId':_0x26b2cc[_0x7721('0x2f')]['id'],'type':_0x7721('0x6f')};_0x355aa8[_0x594059+_0x7721('0x70')]=_0xcd9f0d['id'];_0x355aa8[_0x594059+_0x7721('0x71')]=_0xcd9f0d['Interaction']['id'];_0x355aa8[_0x7721('0x72')+_0x594059+_0x22f15a+'Id']=_0xcd9f0d[_0x7721('0x69')]['id'];_0x355aa8['To'+_0x594059+_0x7721('0x73')]=_0xc9761e['id'];return db[_0x594059+_0x7721('0x74')][_0x7721('0x75')](_0x355aa8);})[_0x7721('0x9')](function(){return respondWithRpcPromise(_0x7721('0x76'),{'channel':_0x94af20,'interaction':_0xcd9f0d[_0x7721('0x6e')],'message':_0xcd9f0d,'account':_0xcd9f0d[_0x7721('0x69')],'applications':[{'id':0x0,'priority':0x1,'app':_0x7721('0x6f'),'appdata':_0xc9761e[_0x7721('0x30')]+','+(_0xcd9f0d[_0x7721('0x69')]['queueTransferTimeout']||0x12c),'interval':'*,*,*,*'}]},routingClient);})[_0x7721('0x9')](respondWithResult(_0x139517,null))[_0x7721('0xe')](handleError(_0x139517,null));};};exports['agentNotify']=function(_0x167e05,_0x570cf4){var _0x4e3c93,_0x154b4b;if(_['isNil'](_0x167e05['body'][_0x7721('0x77')])){throw new Error(_0x7721('0x78'));}var _0x28e123=_0x167e05[_0x7721('0x2d')][_0x7721('0x77')];var _0x494c5e=_[_0x7721('0x66')](_0x28e123);var _0xcf2c06=_0x28e123===_0x7721('0x67')?_0x7721('0x68'):'Account';return db['User'][_0x7721('0x6c')]({'raw':!![],'where':{'id':_0x167e05[_0x7721('0x1b')]['id'],'role':'agent'}})[_0x7721('0x9')](function(_0x13dc8a){if(_['isNil'](_0x13dc8a)){throw new Error('Agent\x20not\x20found');}_0x4e3c93=_0x13dc8a;return db[_0x494c5e+_0x7721('0x6b')][_0x7721('0x6c')]({'where':{'id':_0x167e05[_0x7721('0x2d')][_0x7721('0x6d')]},'include':[{'model':db[_0x494c5e+_0x7721('0x6e')],'as':_0x7721('0x6e')},{'model':db[_0x494c5e+_0xcf2c06],'as':_0x7721('0x69')}]});})[_0x7721('0x9')](function(_0x59de30){if(_[_0x7721('0x13')](_0x59de30)){throw new Error(_0x494c5e+_0x7721('0x79'));}_0x154b4b=_0x59de30;return _0x59de30[_0x7721('0x7a')]({'read':0x0,'readAt':null,'UserId':null});})[_0x7721('0x9')](function(){var _0xe1c795={'uniqueid':_0x28e123+'.'+_0x154b4b['id']+'.'+_0x154b4b[_0x7721('0x6e')]['id'],'FromUserId':_0x167e05[_0x7721('0x2f')]['id'],'type':'queue','ToUserId':_0x4e3c93['id']};_0xe1c795[_0x494c5e+_0x7721('0x70')]=_0x154b4b['id'];_0xe1c795[_0x494c5e+_0x7721('0x71')]=_0x154b4b['Interaction']['id'];_0xe1c795[_0x7721('0x72')+_0x494c5e+_0xcf2c06+'Id']=_0x154b4b[_0x7721('0x69')]['id'];return db[_0x494c5e+_0x7721('0x74')][_0x7721('0x75')](_0xe1c795);})[_0x7721('0x9')](function(){return respondWithRpcPromise(_0x7721('0x76'),{'channel':_0x28e123,'interaction':_0x154b4b[_0x7721('0x6e')],'message':_0x154b4b,'account':_0x154b4b[_0x7721('0x69')],'applications':[{'id':0x0,'priority':0x1,'app':_0x7721('0x3b'),'appdata':_0x4e3c93[_0x7721('0x30')]+','+(_0x154b4b['Account'][_0x7721('0x7b')]||0x12c),'interval':_0x7721('0x7c')}]},routingClient);})[_0x7721('0x9')](respondWithResult(_0x570cf4,null))[_0x7721('0xe')](handleError(_0x570cf4,null));};
\ No newline at end of file
+var _0x326f=['VoiceQueuesChannelHangup','outboundChannels','OutboundChannels','Agents','agentCapacity','interaction','user','hasOwnProperty','MemberReport','findAll','length','format','YYYY-MM-DD\x20HH:mm:ss','updateAttributes','findOrCreate','INTERACTION','interface','agent','AgentCapacity','telephones','Telephones','Trunks','campaigns','Campaigns','chatQueues','ChatQueues','showChatQueues','mailQueues','showMailQueues','MailQueues','MailAccounts','openchannelQueues','OpenchannelQueues','showOpenchannelQueues','smsQueues','SmsQueues','WhatsappQueues','showWhatsappQueues','faxQueues','showFaxQueues','faxAccounts','chatQueuesWaitingInteractions','ChatQueuesWaitingInteractions','mailQueuesWaitingInteractions','MailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','openchannelQueuesIdWaitingInteractions','OpenchannelQueuesWaitingInteractions','type','filter','map','queue_id','uniq','smsQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','WhatsappQueuesWaitingInteractions','faxQueuesWaitingInteractions','queueNotify','capitalize','chat','Website','Queue','\x20Queue\x20not\x20found','Message','findOne','messageId','Interaction','Account','\x20Message\x20not\x20found','update','queue','InteractionId','QueueId','TransferReport','create','Start','queueTransferTimeout','*,*,*,*','agentNotify','channel','Channel\x20field\x20is\x20mandatory','User','Agent\x20not\x20found','MessageId','From','agentTransferTimeout','bluebird','util','../../mysqldb','../../config/logger','api','jayson/promise','client','http','then','error','code','message','catch','status','json','sendStatus','name','send','isNil','rows','find','voiceChannels','query','params','voiceChannelStopMixMonitor','VoiceChannelStopMixMonitor','merge','VoiceQueues','showVoiceQueues','UpdateVoiceQueue','body','voiceQueuesPreview','VoiceQueuesPreview','VoiceQueuesChannels','voiceQueuesChannel','VoiceQueuesChannel','voiceQueuesChannelHangup'];(function(_0x540da5,_0x3cc855){var _0x51ec82=function(_0x40bc12){while(--_0x40bc12){_0x540da5['push'](_0x540da5['shift']());}};_0x51ec82(++_0x3cc855);}(_0x326f,0xd1));var _0xf326=function(_0x20078e,_0x38833c){_0x20078e=_0x20078e-0x0;var _0xfd2ee5=_0x326f[_0x20078e];return _0xfd2ee5;};'use strict';var BPromise=require(_0xf326('0x0'));var moment=require('moment');var _=require('lodash');var util=require(_0xf326('0x1'));var db=require(_0xf326('0x2'))['db'];var logger=require(_0xf326('0x3'))(_0xf326('0x4'));var jayson=require(_0xf326('0x5'));var amiClient=jayson[_0xf326('0x6')][_0xf326('0x7')]({'port':0x232a});var mailClient=jayson[_0xf326('0x6')][_0xf326('0x7')]({'port':0x232b});var routingClient=jayson[_0xf326('0x6')]['http']({'port':0x232c});function respondWithRpcPromise(_0x3c254d,_0x3851eb,_0x165f95){return new BPromise(function(_0x1e7b8a,_0x515bfa){var _0x4c206c=_0x165f95?_0x165f95:amiClient;return _0x4c206c['request'](_0x3c254d,_0x3851eb)[_0xf326('0x8')](function(_0x1fc80e){if(_0x1fc80e[_0xf326('0x9')]){if(_0x1fc80e[_0xf326('0x9')][_0xf326('0xa')]===0x1f4){return _0x515bfa(_0x1fc80e['error'][_0xf326('0xb')]);}return _0x1e7b8a(_0x1fc80e['error'][_0xf326('0xb')]);}else{_0x1e7b8a(_0x1fc80e['result']);}})[_0xf326('0xc')](function(_0x518ab5){_0x515bfa(_0x518ab5);});});}function respondWithResult(_0x3162f9,_0x9ed463){_0x9ed463=_0x9ed463||0xc8;return function(_0x4b3966){if(_0x4b3966){return _0x3162f9[_0xf326('0xd')](_0x9ed463)[_0xf326('0xe')](_0x4b3966);}return _0x3162f9[_0xf326('0xf')](0x194);};}function handleError(_0x17a098,_0x5c8483){_0x5c8483=_0x5c8483||0x1f4;return function(_0x45c1b6){logger['error'](_0x45c1b6['stack']);if(_0x45c1b6[_0xf326('0x10')]){delete _0x45c1b6[_0xf326('0x10')];}_0x17a098[_0xf326('0xd')](_0x5c8483)[_0xf326('0x11')](_0x45c1b6);};}function findById(_0x292f4b){return function(_0x287a2a){if(!_[_0xf326('0x12')](_0x292f4b)&&!_[_0xf326('0x12')](_0x287a2a)&&!_['isNil'](_0x287a2a[_0xf326('0x13')])){return _[_0xf326('0x14')](_0x287a2a[_0xf326('0x13')],function(_0x31ffb9){return _0x31ffb9['id']==_0x292f4b;});}return null;};}exports[_0xf326('0x15')]=function(_0x311af0,_0x4d3d41){return respondWithRpcPromise('VoiceChannels',_0x311af0['query'])[_0xf326('0x8')](respondWithResult(_0x4d3d41,null))[_0xf326('0xc')](handleError(_0x4d3d41,null));};exports['voiceChannelMixMonitor']=function(_0x4cabce,_0x128c68){return respondWithRpcPromise('VoiceChannelMixMonitor',_['merge'](_0x4cabce[_0xf326('0x16')],_0x4cabce[_0xf326('0x17')]))['then'](respondWithResult(_0x128c68,null))['catch'](handleError(_0x128c68,null));};exports[_0xf326('0x18')]=function(_0xb1efcf,_0x5f21a2){return respondWithRpcPromise(_0xf326('0x19'),_[_0xf326('0x1a')](_0xb1efcf[_0xf326('0x16')],_0xb1efcf[_0xf326('0x17')]))[_0xf326('0x8')](respondWithResult(_0x5f21a2,null))[_0xf326('0xc')](handleError(_0x5f21a2,null));};exports['voiceQueues']=function(_0x55b9f4,_0x4f31f6){return respondWithRpcPromise(_0xf326('0x1b'),_0x55b9f4[_0xf326('0x16')])[_0xf326('0x8')](respondWithResult(_0x4f31f6,null))[_0xf326('0xc')](handleError(_0x4f31f6,null));};exports[_0xf326('0x1c')]=function(_0x410237,_0x5217d4){return respondWithRpcPromise(_0xf326('0x1b'),_0x410237[_0xf326('0x16')])[_0xf326('0x8')](findById(_0x410237['params']['id']))[_0xf326('0x8')](respondWithResult(_0x5217d4,null))['catch'](handleError(_0x5217d4,null));};exports['updateVoiceQueue']=function(_0x6a8e89,_0x1ae23a){return respondWithRpcPromise(_0xf326('0x1d'),_['merge'](_0x6a8e89[_0xf326('0x1e')],_0x6a8e89[_0xf326('0x17')]))['then'](respondWithResult(_0x1ae23a,null))[_0xf326('0xc')](handleError(_0x1ae23a,null));};exports[_0xf326('0x1f')]=function(_0xd77aba,_0x18d110){return respondWithRpcPromise(_0xf326('0x20'),_[_0xf326('0x1a')](_0xd77aba[_0xf326('0x16')],_0xd77aba[_0xf326('0x17')]))[_0xf326('0x8')](respondWithResult(_0x18d110,null))[_0xf326('0xc')](handleError(_0x18d110,null));};exports['voiceQueuesChannels']=function(_0x1035ed,_0x424104){return respondWithRpcPromise(_0xf326('0x21'),_0x1035ed['query'])[_0xf326('0x8')](respondWithResult(_0x424104,null))[_0xf326('0xc')](handleError(_0x424104,null));};exports[_0xf326('0x22')]=function(_0x4df451,_0x5b101d){return respondWithRpcPromise(_0xf326('0x23'),_[_0xf326('0x1a')](_0x4df451[_0xf326('0x16')],_0x4df451[_0xf326('0x17')]))[_0xf326('0x8')](respondWithResult(_0x5b101d,null))[_0xf326('0xc')](handleError(_0x5b101d,null));};exports[_0xf326('0x24')]=function(_0x2d5f20,_0x580374){return respondWithRpcPromise(_0xf326('0x25'),_[_0xf326('0x1a')](_0x2d5f20['query'],_0x2d5f20[_0xf326('0x17')]))['then'](respondWithResult(_0x580374,null))[_0xf326('0xc')](handleError(_0x580374,null));};exports['voiceQueuesChannelRedirect']=function(_0x51f147,_0xadb020){return respondWithRpcPromise('VoiceQueuesChannelRedirect',_[_0xf326('0x1a')](_0x51f147['query'],_0x51f147[_0xf326('0x17')]))[_0xf326('0x8')](respondWithResult(_0xadb020,null))[_0xf326('0xc')](handleError(_0xadb020,null));};exports['outbound']=function(_0x3dcc7e,_0x4095e6){return respondWithRpcPromise('Outbound',_0x3dcc7e[_0xf326('0x16')])[_0xf326('0x8')](respondWithResult(_0x4095e6,null))[_0xf326('0xc')](handleError(_0x4095e6,null));};exports[_0xf326('0x26')]=function(_0x51076c,_0x2c4416){return respondWithRpcPromise(_0xf326('0x27'),_0x51076c[_0xf326('0x16')])[_0xf326('0x8')](respondWithResult(_0x2c4416,null))[_0xf326('0xc')](handleError(_0x2c4416,null));};exports['agents']=function(_0x3e830d,_0x1b7bf6){var _0x5cfb97;return respondWithRpcPromise('Agents',_0x3e830d[_0xf326('0x16')])['then'](function(_0x55dfa8){_0x5cfb97=_0x55dfa8;return respondWithRpcPromise(_0xf326('0x28'),_0x3e830d['query'],routingClient);})[_0xf326('0x8')](function(_0x37a95b){return _[_0xf326('0x1a')]({},_0x37a95b,_0x5cfb97);})[_0xf326('0x8')](respondWithResult(_0x1b7bf6,null))['catch'](handleError(_0x1b7bf6,null));};exports[_0xf326('0x29')]=function(_0x45d344,_0x347e7b){if(_0x45d344[_0xf326('0x1e')]&&_0x45d344[_0xf326('0x1e')][_0xf326('0x2a')]&&_0x45d344[_0xf326('0x2b')]&&_0x45d344[_0xf326('0x2b')][_0xf326('0x10')]){for(var _0x1227d3 in _0x45d344[_0xf326('0x1e')][_0xf326('0x2a')]){if(_0x45d344['body'][_0xf326('0x2a')][_0xf326('0x2c')](_0x1227d3)){db[_0xf326('0x2d')][_0xf326('0x2e')]({'where':{'channel':_0x1227d3,'membername':_0x45d344[_0xf326('0x2b')][_0xf326('0x10')],'type':'INTERACTION','exitAt':null,'uniqueid':_0x45d344[_0xf326('0x1e')][_0xf326('0x2a')][_0x1227d3]&&_0x45d344['body'][_0xf326('0x2a')][_0x1227d3][_0xf326('0x2f')]?{'$notIn':_0x45d344[_0xf326('0x1e')][_0xf326('0x2a')][_0x1227d3]}:{'$ne':null}}})[_0xf326('0x8')](function(_0x55361f){var _0x505344=moment()[_0xf326('0x30')](_0xf326('0x31'));for(var _0x5ed62e=0x0,_0x4bd865=_0x55361f[_0xf326('0x2f')];_0x5ed62e<_0x4bd865;_0x5ed62e+=0x1){_0x55361f[_0x5ed62e][_0xf326('0x32')]({'exitAt':_0x505344});}});for(var _0x21c98e=0x0;_0x21c98e<_0x45d344['body'][_0xf326('0x2a')][_0x1227d3][_0xf326('0x2f')];_0x21c98e+=0x1){db[_0xf326('0x2d')][_0xf326('0x33')]({'where':{'channel':_0x1227d3,'membername':_0x45d344[_0xf326('0x2b')][_0xf326('0x10')],'type':_0xf326('0x34'),'uniqueid':_0x45d344[_0xf326('0x1e')][_0xf326('0x2a')][_0x1227d3][_0x21c98e],'exitAt':null},'defaults':{'channel':_0x1227d3,'membername':_0x45d344[_0xf326('0x2b')][_0xf326('0x10')],'interface':_[_0xf326('0x12')](_0x45d344[_0xf326('0x2b')][_0xf326('0x35')])?util[_0xf326('0x30')]('SIP/%s',_0x45d344[_0xf326('0x2b')][_0xf326('0x10')]):_0x45d344[_0xf326('0x2b')][_0xf326('0x35')],'type':'INTERACTION','enterAt':moment()[_0xf326('0x30')](_0xf326('0x31')),'role':_0xf326('0x36'),'internal':_0x45d344[_0xf326('0x2b')]['internal'],'uniqueid':_0x45d344[_0xf326('0x1e')][_0xf326('0x2a')][_0x1227d3][_0x21c98e]}});}}}}return respondWithRpcPromise(_0xf326('0x37'),{'id':_0x45d344[_0xf326('0x17')]['id'],'capacity':_0x45d344[_0xf326('0x1e')]['capacity']},routingClient)['then'](respondWithResult(_0x347e7b,null))[_0xf326('0xc')](handleError(_0x347e7b,null));};exports[_0xf326('0x38')]=function(_0x2ff126,_0x4cb25b){return respondWithRpcPromise(_0xf326('0x39'),_0x2ff126[_0xf326('0x16')])[_0xf326('0x8')](respondWithResult(_0x4cb25b,null))['catch'](handleError(_0x4cb25b,null));};exports['trunks']=function(_0x36ef89,_0x5b4832){return respondWithRpcPromise(_0xf326('0x3a'),_0x36ef89['query'])[_0xf326('0x8')](respondWithResult(_0x5b4832,null))[_0xf326('0xc')](handleError(_0x5b4832,null));};exports[_0xf326('0x3b')]=function(_0x25e091,_0x212594){return respondWithRpcPromise(_0xf326('0x3c'),_0x25e091[_0xf326('0x16')])['then'](respondWithResult(_0x212594,null))[_0xf326('0xc')](handleError(_0x212594,null));};exports[_0xf326('0x3d')]=function(_0x424d24,_0x4b0d8e){return respondWithRpcPromise(_0xf326('0x3e'),_0x424d24[_0xf326('0x16')],routingClient)[_0xf326('0x8')](respondWithResult(_0x4b0d8e,null))[_0xf326('0xc')](handleError(_0x4b0d8e,null));};exports[_0xf326('0x3f')]=function(_0x58fcf0,_0x161fb3){return respondWithRpcPromise(_0xf326('0x3e'),_0x58fcf0[_0xf326('0x16')],routingClient)[_0xf326('0x8')](findById(_0x58fcf0['params']['id']))[_0xf326('0x8')](respondWithResult(_0x161fb3,null))[_0xf326('0xc')](handleError(_0x161fb3,null));};exports[_0xf326('0x40')]=function(_0x29e52e,_0x4d3b9e){return respondWithRpcPromise('MailQueues',_0x29e52e[_0xf326('0x16')],routingClient)[_0xf326('0x8')](respondWithResult(_0x4d3b9e,null))['catch'](handleError(_0x4d3b9e,null));};exports[_0xf326('0x41')]=function(_0x29de71,_0x316609){return respondWithRpcPromise(_0xf326('0x42'),_0x29de71['query'],routingClient)[_0xf326('0x8')](findById(_0x29de71['params']['id']))['then'](respondWithResult(_0x316609,null))[_0xf326('0xc')](handleError(_0x316609,null));};exports['mailAccounts']=function(_0x173760,_0x52fb95){return respondWithRpcPromise(_0xf326('0x43'),_0x173760['query'],mailClient)['then'](respondWithResult(_0x52fb95,null))[_0xf326('0xc')](handleError(_0x52fb95,null));};exports[_0xf326('0x44')]=function(_0x33b259,_0x5d0177){return respondWithRpcPromise(_0xf326('0x45'),_0x33b259['query'],routingClient)[_0xf326('0x8')](respondWithResult(_0x5d0177,null))[_0xf326('0xc')](handleError(_0x5d0177,null));};exports[_0xf326('0x46')]=function(_0x217897,_0xbd3a01){return respondWithRpcPromise(_0xf326('0x45'),_0x217897[_0xf326('0x16')],routingClient)[_0xf326('0x8')](findById(_0x217897[_0xf326('0x17')]['id']))[_0xf326('0x8')](respondWithResult(_0xbd3a01,null))[_0xf326('0xc')](handleError(_0xbd3a01,null));};exports[_0xf326('0x47')]=function(_0x40f7cb,_0x4ca1b8){return respondWithRpcPromise(_0xf326('0x48'),_0x40f7cb['query'],routingClient)[_0xf326('0x8')](respondWithResult(_0x4ca1b8,null))[_0xf326('0xc')](handleError(_0x4ca1b8,null));};exports['showSmsQueues']=function(_0x2b770c,_0x5283da){return respondWithRpcPromise(_0xf326('0x48'),_0x2b770c[_0xf326('0x16')],routingClient)[_0xf326('0x8')](findById(_0x2b770c[_0xf326('0x17')]['id']))[_0xf326('0x8')](respondWithResult(_0x5283da,null))['catch'](handleError(_0x5283da,null));};exports['whatsappQueues']=function(_0x1209ca,_0x32fe3a){return respondWithRpcPromise(_0xf326('0x49'),_0x1209ca[_0xf326('0x16')],routingClient)[_0xf326('0x8')](respondWithResult(_0x32fe3a,null))['catch'](handleError(_0x32fe3a,null));};exports[_0xf326('0x4a')]=function(_0x471da8,_0x4aadc9){return respondWithRpcPromise('WhatsappQueues',_0x471da8['query'],routingClient)[_0xf326('0x8')](findById(_0x471da8[_0xf326('0x17')]['id']))[_0xf326('0x8')](respondWithResult(_0x4aadc9,null))[_0xf326('0xc')](handleError(_0x4aadc9,null));};exports[_0xf326('0x4b')]=function(_0x23a56e,_0x230aea){return respondWithRpcPromise('FaxQueues',_0x23a56e[_0xf326('0x16')],routingClient)[_0xf326('0x8')](respondWithResult(_0x230aea,null))[_0xf326('0xc')](handleError(_0x230aea,null));};exports[_0xf326('0x4c')]=function(_0x58de1e,_0x3717fe){return respondWithRpcPromise('FaxQueues',_0x58de1e['query'],routingClient)[_0xf326('0x8')](findById(_0x58de1e['params']['id']))[_0xf326('0x8')](respondWithResult(_0x3717fe,null))[_0xf326('0xc')](handleError(_0x3717fe,null));};exports[_0xf326('0x4d')]=function(_0x2ea5a2,_0x17cd36){return respondWithRpcPromise('FaxAccounts',_0x2ea5a2['query'])['then'](respondWithResult(_0x17cd36,null))[_0xf326('0xc')](handleError(_0x17cd36,null));};exports[_0xf326('0x4e')]=function(_0x229a34,_0x180616){return respondWithRpcPromise(_0xf326('0x4f'),_0x229a34['query'],routingClient)[_0xf326('0x8')](respondWithResult(_0x180616,null))[_0xf326('0xc')](handleError(_0x180616,null));};exports[_0xf326('0x50')]=function(_0x4f9a6a,_0x567492){return respondWithRpcPromise(_0xf326('0x51'),_0x4f9a6a[_0xf326('0x16')],routingClient)['then'](respondWithResult(_0x567492,null))['catch'](handleError(_0x567492,null));};exports[_0xf326('0x52')]=function(_0x5ba28d,_0xc3a897){return respondWithRpcPromise('OpenchannelQueuesWaitingInteractions',_0x5ba28d['query'],routingClient)['then'](respondWithResult(_0xc3a897,null))[_0xf326('0xc')](handleError(_0xc3a897,null));};exports[_0xf326('0x53')]=function(_0xd44071,_0x4838d5){return respondWithRpcPromise(_0xf326('0x54'),_0xd44071[_0xf326('0x16')],routingClient)[_0xf326('0x8')](function(_0x457f3d){if(_0xd44071[_0xf326('0x16')][_0xf326('0x55')]!==undefined){var _0x7f6d0e=_(_0x457f3d[_0xf326('0x13')])[_0xf326('0x56')]([_0xd44071['query'][_0xf326('0x55')],_0xd44071['params']['id']])[_0xf326('0x57')](_0xf326('0x58'))[_0xf326('0x59')]()['value']();return _0x457f3d[_0xf326('0x13')][_0xf326('0x56')](function(_0x39c90d){return _0x7f6d0e['indexOf'](_0x39c90d[_0xf326('0x58')])>-0x1;});}else{return _0x457f3d[_0xf326('0x13')][_0xf326('0x56')](function(_0x42c7cf){return _0x42c7cf['queue_id']===parseInt(_0xd44071[_0xf326('0x17')]['id']);});}})['then'](respondWithResult(_0x4838d5,null))['catch'](handleError(_0x4838d5,null));};exports[_0xf326('0x5a')]=function(_0x2c36d3,_0x5af6b7){return respondWithRpcPromise('SmsQueuesWaitingInteractions',_0x2c36d3['query'],routingClient)[_0xf326('0x8')](respondWithResult(_0x5af6b7,null))['catch'](handleError(_0x5af6b7,null));};exports[_0xf326('0x5b')]=function(_0x37a564,_0x3434b2){return respondWithRpcPromise(_0xf326('0x5c'),_0x37a564[_0xf326('0x16')],routingClient)[_0xf326('0x8')](respondWithResult(_0x3434b2,null))['catch'](handleError(_0x3434b2,null));};exports[_0xf326('0x5d')]=function(_0x323926,_0x5f1724){return respondWithRpcPromise('FaxQueuesWaitingInteractions',_0x323926[_0xf326('0x16')],routingClient)['then'](respondWithResult(_0x5f1724,null))[_0xf326('0xc')](handleError(_0x5f1724,null));};exports[_0xf326('0x5e')]=function(_0x153027){return function(_0x363e64,_0x19d676){var _0x6e662,_0x293600;var _0x8ca46f=_[_0xf326('0x5f')](_0x153027);var _0x499cbd=_0x153027===_0xf326('0x60')?_0xf326('0x61'):'Account';return db[_0x8ca46f+_0xf326('0x62')]['findOne']({'raw':!![],'where':{'id':_0x363e64[_0xf326('0x17')]['id']}})[_0xf326('0x8')](function(_0x14e8c0){if(_['isNil'](_0x14e8c0)){throw new Error(_0x8ca46f+_0xf326('0x63'));}_0x6e662=_0x14e8c0;return db[_0x8ca46f+_0xf326('0x64')][_0xf326('0x65')]({'where':{'id':_0x363e64[_0xf326('0x1e')][_0xf326('0x66')]},'include':[{'model':db[_0x8ca46f+_0xf326('0x67')],'as':_0xf326('0x67')},{'model':db[_0x8ca46f+_0x499cbd],'as':_0xf326('0x68')}]});})[_0xf326('0x8')](function(_0x38b696){if(_[_0xf326('0x12')](_0x38b696)){throw new Error(_0x8ca46f+_0xf326('0x69'));}_0x293600=_0x38b696;return _0x38b696[_0xf326('0x6a')]({'read':0x0,'readAt':null,'UserId':null});})[_0xf326('0x8')](function(){var _0x1f990d={'uniqueid':_0x153027+'.'+_0x293600['id']+'.'+_0x293600['Interaction']['id'],'FromUserId':_0x363e64[_0xf326('0x2b')]['id'],'type':_0xf326('0x6b')};_0x1f990d[_0x8ca46f+'MessageId']=_0x293600['id'];_0x1f990d[_0x8ca46f+_0xf326('0x6c')]=_0x293600[_0xf326('0x67')]['id'];_0x1f990d['From'+_0x8ca46f+_0x499cbd+'Id']=_0x293600[_0xf326('0x68')]['id'];_0x1f990d['To'+_0x8ca46f+_0xf326('0x6d')]=_0x6e662['id'];return db[_0x8ca46f+_0xf326('0x6e')][_0xf326('0x6f')](_0x1f990d);})[_0xf326('0x8')](function(){return respondWithRpcPromise(_0xf326('0x70'),{'channel':_0x153027,'interaction':_0x293600[_0xf326('0x67')],'message':_0x293600,'account':_0x293600['Account'],'applications':[{'id':0x0,'priority':0x1,'app':_0xf326('0x6b'),'appdata':_0x6e662[_0xf326('0x10')]+','+(_0x293600[_0xf326('0x68')][_0xf326('0x71')]||0x12c),'interval':_0xf326('0x72')}]},routingClient);})[_0xf326('0x8')](respondWithResult(_0x19d676,null))[_0xf326('0xc')](handleError(_0x19d676,null));};};exports[_0xf326('0x73')]=function(_0x486e64,_0xa8e05b){var _0x2e2103,_0x49c3da;if(_[_0xf326('0x12')](_0x486e64['body'][_0xf326('0x74')])){throw new Error(_0xf326('0x75'));}var _0x16bc97=_0x486e64[_0xf326('0x1e')][_0xf326('0x74')];var _0x3097cf=_[_0xf326('0x5f')](_0x16bc97);var _0x1eb29d=_0x16bc97===_0xf326('0x60')?_0xf326('0x61'):_0xf326('0x68');return db[_0xf326('0x76')][_0xf326('0x65')]({'raw':!![],'where':{'id':_0x486e64[_0xf326('0x17')]['id'],'role':'agent'}})[_0xf326('0x8')](function(_0xdb6e40){if(_[_0xf326('0x12')](_0xdb6e40)){throw new Error(_0xf326('0x77'));}_0x2e2103=_0xdb6e40;return db[_0x3097cf+_0xf326('0x64')]['findOne']({'where':{'id':_0x486e64[_0xf326('0x1e')][_0xf326('0x66')]},'include':[{'model':db[_0x3097cf+_0xf326('0x67')],'as':_0xf326('0x67')},{'model':db[_0x3097cf+_0x1eb29d],'as':_0xf326('0x68')}]});})['then'](function(_0x4b6ec0){if(_[_0xf326('0x12')](_0x4b6ec0)){throw new Error(_0x3097cf+'\x20Message\x20not\x20found');}_0x49c3da=_0x4b6ec0;return _0x4b6ec0[_0xf326('0x6a')]({'read':0x0,'readAt':null,'UserId':null});})[_0xf326('0x8')](function(){var _0x29610a={'uniqueid':_0x16bc97+'.'+_0x49c3da['id']+'.'+_0x49c3da['Interaction']['id'],'FromUserId':_0x486e64['user']['id'],'type':_0xf326('0x6b'),'ToUserId':_0x2e2103['id']};_0x29610a[_0x3097cf+_0xf326('0x78')]=_0x49c3da['id'];_0x29610a[_0x3097cf+_0xf326('0x6c')]=_0x49c3da[_0xf326('0x67')]['id'];_0x29610a[_0xf326('0x79')+_0x3097cf+_0x1eb29d+'Id']=_0x49c3da['Account']['id'];return db[_0x3097cf+_0xf326('0x6e')][_0xf326('0x6f')](_0x29610a);})[_0xf326('0x8')](function(){return respondWithRpcPromise('Start',{'channel':_0x16bc97,'interaction':_0x49c3da['Interaction'],'message':_0x49c3da,'account':_0x49c3da['Account'],'applications':[{'id':0x0,'priority':0x1,'app':_0xf326('0x36'),'appdata':_0x2e2103[_0xf326('0x10')]+','+(_0x49c3da[_0xf326('0x68')][_0xf326('0x7a')]||0x12c),'interval':_0xf326('0x72')}]},routingClient);})[_0xf326('0x8')](respondWithResult(_0xa8e05b,null))[_0xf326('0xc')](handleError(_0xa8e05b,null));};
\ No newline at end of file
index dbc5635..20db4c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8044=['index','/:id','run','post','create','put','update','destroy','exports','multer','util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated'];(function(_0x945cdc,_0x465dde){var _0x2d9270=function(_0x57a3a8){while(--_0x57a3a8){_0x945cdc['push'](_0x945cdc['shift']());}};_0x2d9270(++_0x465dde);}(_0x8044,0xed));var _0x4804=function(_0x2125f0,_0x2f23b9){_0x2125f0=_0x2125f0-0x0;var _0x12d6eb=_0x8044[_0x2125f0];return _0x12d6eb;};'use strict';var multer=require(_0x4804('0x0'));var util=require(_0x4804('0x1'));var path=require('path');var timeout=require(_0x4804('0x2'));var express=require(_0x4804('0x3'));var router=express['Router']();var fs_extra=require(_0x4804('0x4'));var auth=require(_0x4804('0x5'));var interaction=require(_0x4804('0x6'));var config=require(_0x4804('0x7'));var controller=require('./schedule.controller');router[_0x4804('0x8')]('/',auth[_0x4804('0x9')](),controller[_0x4804('0xa')]);router[_0x4804('0x8')](_0x4804('0xb'),auth[_0x4804('0x9')](),controller['show']);router['get']('/:id/run',auth[_0x4804('0x9')](),controller[_0x4804('0xc')]);router[_0x4804('0xd')]('/',auth[_0x4804('0x9')](),controller[_0x4804('0xe')]);router[_0x4804('0xf')]('/:id',auth[_0x4804('0x9')](),controller[_0x4804('0x10')]);router['delete'](_0x4804('0xb'),auth[_0x4804('0x9')](),controller[_0x4804('0x11')]);module[_0x4804('0x12')]=router;
\ No newline at end of file
+var _0x3981=['util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./schedule.controller','isAuthenticated','index','get','/:id','show','/:id/run','run','create','put','delete','destroy','exports','multer'];(function(_0x36c5b0,_0x5001da){var _0xf19333=function(_0x1e880a){while(--_0x1e880a){_0x36c5b0['push'](_0x36c5b0['shift']());}};_0xf19333(++_0x5001da);}(_0x3981,0xfb));var _0x1398=function(_0x41e3ae,_0x42a8fe){_0x41e3ae=_0x41e3ae-0x0;var _0x417287=_0x3981[_0x41e3ae];return _0x417287;};'use strict';var multer=require(_0x1398('0x0'));var util=require(_0x1398('0x1'));var path=require('path');var timeout=require(_0x1398('0x2'));var express=require(_0x1398('0x3'));var router=express[_0x1398('0x4')]();var fs_extra=require(_0x1398('0x5'));var auth=require(_0x1398('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x1398('0x7'));var controller=require(_0x1398('0x8'));router['get']('/',auth[_0x1398('0x9')](),controller[_0x1398('0xa')]);router[_0x1398('0xb')](_0x1398('0xc'),auth['isAuthenticated'](),controller[_0x1398('0xd')]);router[_0x1398('0xb')](_0x1398('0xe'),auth[_0x1398('0x9')](),controller[_0x1398('0xf')]);router['post']('/',auth[_0x1398('0x9')](),controller[_0x1398('0x10')]);router[_0x1398('0x11')]('/:id',auth[_0x1398('0x9')](),controller['update']);router[_0x1398('0x12')]('/:id',auth['isAuthenticated'](),controller[_0x1398('0x13')]);module[_0x1398('0x14')]=router;
\ No newline at end of file
index 55fee5a..c9df3a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5800=['BOOLEAN','0\x200\x20*\x20*\x20*','DATE','INTEGER','ENUM','years','quarters','months','weeks','days','hours','minutes','csv','xlsx','custom','default','sequelize','exports','STRING'];(function(_0x346720,_0x347def){var _0x5525ac=function(_0x37d5f1){while(--_0x37d5f1){_0x346720['push'](_0x346720['shift']());}};_0x5525ac(++_0x347def);}(_0x5800,0x1c5));var _0x0580=function(_0x25868d,_0x5d2688){_0x25868d=_0x25868d-0x0;var _0x317949=_0x5800[_0x25868d];return _0x317949;};'use strict';var Sequelize=require(_0x0580('0x0'));module[_0x0580('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize[_0x0580('0x2')]},'active':{'type':Sequelize[_0x0580('0x3')],'allowNull':![],'defaultValue':![]},'cron':{'type':Sequelize[_0x0580('0x2')],'allowNull':![],'defaultValue':_0x0580('0x4')},'startAt':{'type':Sequelize[_0x0580('0x5')],'allowNull':![]},'endAt':{'type':Sequelize[_0x0580('0x5')],'allowNull':![]},'subtractNumber':{'type':Sequelize[_0x0580('0x6')],'allowNull':![],'defaultValue':0x1,'validate':{'min':0x1}},'subtractUnit':{'type':Sequelize[_0x0580('0x7')](_0x0580('0x8'),_0x0580('0x9'),_0x0580('0xa'),_0x0580('0xb'),_0x0580('0xc'),_0x0580('0xd'),_0x0580('0xe')),'allowNull':![],'defaultValue':_0x0580('0xc')},'output':{'type':Sequelize['ENUM'](_0x0580('0xf'),'pdf',_0x0580('0x10')),'allowNull':![],'defaultValue':'csv'},'type':{'type':Sequelize[_0x0580('0x7')](_0x0580('0x11'),_0x0580('0x12')),'allowNull':![],'defaultValue':_0x0580('0x11')},'sendMail':{'type':Sequelize[_0x0580('0x3')],'defaultValue':![]},'email':{'type':Sequelize[_0x0580('0x2')]},'cc':{'type':Sequelize['TEXT']},'bcc':{'type':Sequelize['TEXT']},'sendIfEmpty':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
+var _0x5fcd=['pdf','xlsx','default','TEXT','sequelize','exports','STRING','BOOLEAN','0\x200\x20*\x20*\x20*','DATE','INTEGER','years','quarters','months','weeks','hours','minutes','ENUM','csv'];(function(_0x1ee990,_0x149f0e){var _0x35fd70=function(_0x10967f){while(--_0x10967f){_0x1ee990['push'](_0x1ee990['shift']());}};_0x35fd70(++_0x149f0e);}(_0x5fcd,0x16d));var _0xd5fc=function(_0x3a6f74,_0x5deb96){_0x3a6f74=_0x3a6f74-0x0;var _0x42b772=_0x5fcd[_0x3a6f74];return _0x42b772;};'use strict';var Sequelize=require(_0xd5fc('0x0'));module[_0xd5fc('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize[_0xd5fc('0x2')]},'active':{'type':Sequelize[_0xd5fc('0x3')],'allowNull':![],'defaultValue':![]},'cron':{'type':Sequelize[_0xd5fc('0x2')],'allowNull':![],'defaultValue':_0xd5fc('0x4')},'startAt':{'type':Sequelize[_0xd5fc('0x5')],'allowNull':![]},'endAt':{'type':Sequelize['DATE'],'allowNull':![]},'subtractNumber':{'type':Sequelize[_0xd5fc('0x6')],'allowNull':![],'defaultValue':0x1,'validate':{'min':0x1}},'subtractUnit':{'type':Sequelize['ENUM'](_0xd5fc('0x7'),_0xd5fc('0x8'),_0xd5fc('0x9'),_0xd5fc('0xa'),'days',_0xd5fc('0xb'),_0xd5fc('0xc')),'allowNull':![],'defaultValue':'days'},'output':{'type':Sequelize[_0xd5fc('0xd')](_0xd5fc('0xe'),_0xd5fc('0xf'),_0xd5fc('0x10')),'allowNull':![],'defaultValue':_0xd5fc('0xe')},'type':{'type':Sequelize[_0xd5fc('0xd')]('custom',_0xd5fc('0x11')),'allowNull':![],'defaultValue':'custom'},'sendMail':{'type':Sequelize[_0xd5fc('0x3')],'defaultValue':![]},'email':{'type':Sequelize[_0xd5fc('0x2')]},'cc':{'type':Sequelize['TEXT']},'bcc':{'type':Sequelize[_0xd5fc('0x12')]},'sendIfEmpty':{'type':Sequelize[_0xd5fc('0x3')],'defaultValue':!![]}};
\ No newline at end of file
index 60a0922..ee0613f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x83cc=['rawAttributes','fieldName','type','key','map','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','autoAssociation','UserProfileResource','run','../../config/schedule','eml-format','rimraf','zip-dir','request-promise','moment','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','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','count','set','Content-Range','apply','reject','update','then','destroy','error','name','send','index','Schedule'];(function(_0x29cf90,_0x3e88e6){var _0x3b7735=function(_0x4bae44){while(--_0x4bae44){_0x29cf90['push'](_0x29cf90['shift']());}};_0x3b7735(++_0x3e88e6);}(_0x83cc,0xdd));var _0xc83c=function(_0x37153e,_0x15c383){_0x37153e=_0x37153e-0x0;var _0x3d2981=_0x83cc[_0x37153e];return _0x3d2981;};'use strict';var emlformat=require(_0xc83c('0x0'));var rimraf=require(_0xc83c('0x1'));var zipdir=require(_0xc83c('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xc83c('0x3'));var moment=require(_0xc83c('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xc83c('0x5'));var util=require('util');var path=require(_0xc83c('0x6'));var sox=require(_0xc83c('0x7'));var csv=require(_0xc83c('0x8'));var ejs=require(_0xc83c('0x9'));var fs=require('fs');var fs_extra=require(_0xc83c('0xa'));var _=require(_0xc83c('0xb'));var squel=require(_0xc83c('0xc'));var crypto=require(_0xc83c('0xd'));var jsforce=require(_0xc83c('0xe'));var deskjs=require(_0xc83c('0xf'));var toCsv=require(_0xc83c('0x8'));var querystring=require('querystring');var Papa=require(_0xc83c('0x10'));var Redis=require(_0xc83c('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xc83c('0x12'));var as=require(_0xc83c('0x13'));var hardwareService=require(_0xc83c('0x14'));var logger=require(_0xc83c('0x15'))(_0xc83c('0x16'));var utils=require(_0xc83c('0x17'));var config=require(_0xc83c('0x18'));var licenseUtil=require(_0xc83c('0x19'));var db=require(_0xc83c('0x1a'))['db'];function respondWithStatusCode(_0x1399e1,_0xc52f84){_0xc52f84=_0xc52f84||0xcc;return function(_0x52ef08){if(_0x52ef08){return _0x1399e1[_0xc83c('0x1b')](_0xc52f84);}return _0x1399e1['status'](_0xc52f84)['end']();};}function respondWithResult(_0x2b322d,_0x17e581){_0x17e581=_0x17e581||0xc8;return function(_0x4ab207){if(_0x4ab207){return _0x2b322d[_0xc83c('0x1c')](_0x17e581)[_0xc83c('0x1d')](_0x4ab207);}};}function respondWithFilteredResult(_0x1c78c1,_0x167cdc){return function(_0x216a1c){if(_0x216a1c){var _0xbcf9a0=typeof _0x167cdc[_0xc83c('0x1e')]===_0xc83c('0x1f')&&typeof _0x167cdc[_0xc83c('0x20')]==='undefined';var _0x92913a=_0x216a1c[_0xc83c('0x21')];var _0x4aeb2e=_0xbcf9a0?0x0:_0x167cdc[_0xc83c('0x1e')];var _0x22b012=_0xbcf9a0?_0x216a1c[_0xc83c('0x21')]:_0x167cdc['offset']+_0x167cdc['limit'];var _0xf134e9;if(_0x22b012>=_0x92913a){_0x22b012=_0x92913a;_0xf134e9=0xc8;}else{_0xf134e9=0xce;}_0x1c78c1[_0xc83c('0x1c')](_0xf134e9);return _0x1c78c1[_0xc83c('0x22')](_0xc83c('0x23'),_0x4aeb2e+'-'+_0x22b012+'/'+_0x92913a)[_0xc83c('0x1d')](_0x216a1c);}return null;};}function patchUpdates(_0x1831da){return function(_0x1855d9){try{jsonpatch[_0xc83c('0x24')](_0x1855d9,_0x1831da,!![]);}catch(_0x1b816d){return BPromise[_0xc83c('0x25')](_0x1b816d);}return _0x1855d9['save']();};}function saveUpdates(_0x447a35,_0x585d65){return function(_0x2d9260){if(_0x2d9260){return _0x2d9260[_0xc83c('0x26')](_0x447a35)[_0xc83c('0x27')](function(_0x36810d){return _0x36810d;});}return null;};}function removeEntity(_0x2401fa,_0xa1a129){return function(_0x427f75){if(_0x427f75){return _0x427f75[_0xc83c('0x28')]()[_0xc83c('0x27')](function(){var _0x464e79=_0x427f75['get']({'plain':!![]});var _0x52893b='Scheduler';return db['UserProfileResource'][_0xc83c('0x28')]({'where':{'type':_0x52893b,'resourceId':_0x464e79['id']}})[_0xc83c('0x27')](function(){return _0x427f75;});})[_0xc83c('0x27')](function(){_0x2401fa[_0xc83c('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2dffd3,_0x796724){return function(_0x3ec460){if(!_0x3ec460){_0x2dffd3[_0xc83c('0x1b')](0x194);}return _0x3ec460;};}function handleError(_0x58fbdd,_0x3d02be){_0x3d02be=_0x3d02be||0x1f4;return function(_0x50f9b3){logger[_0xc83c('0x29')](_0x50f9b3['stack']);if(_0x50f9b3[_0xc83c('0x2a')]){delete _0x50f9b3[_0xc83c('0x2a')];}_0x58fbdd[_0xc83c('0x1c')](_0x3d02be)[_0xc83c('0x2b')](_0x50f9b3);};}exports[_0xc83c('0x2c')]=function(_0x159a1,_0x554528){var _0x4cf230={},_0x51d79a={},_0x170930={'count':0x0,'rows':[]};var _0x3d45e3=_['map'](db[_0xc83c('0x2d')][_0xc83c('0x2e')],function(_0x5f5c07){return{'name':_0x5f5c07[_0xc83c('0x2f')],'type':_0x5f5c07[_0xc83c('0x30')][_0xc83c('0x31')]};});_0x51d79a['model']=_[_0xc83c('0x32')](_0x3d45e3,_0xc83c('0x2a'));_0x51d79a[_0xc83c('0x33')]=_[_0xc83c('0x34')](_0x159a1['query']);_0x51d79a[_0xc83c('0x35')]=_[_0xc83c('0x36')](_0x51d79a[_0xc83c('0x37')],_0x51d79a[_0xc83c('0x33')]);_0x4cf230[_0xc83c('0x38')]=_[_0xc83c('0x36')](_0x51d79a[_0xc83c('0x37')],qs[_0xc83c('0x39')](_0x159a1[_0xc83c('0x33')]['fields']));_0x4cf230['attributes']=_0x4cf230[_0xc83c('0x38')][_0xc83c('0x3a')]?_0x4cf230[_0xc83c('0x38')]:_0x51d79a[_0xc83c('0x37')];if(!_0x159a1['query'][_0xc83c('0x3b')](_0xc83c('0x3c'))){_0x4cf230[_0xc83c('0x20')]=qs['limit'](_0x159a1[_0xc83c('0x33')][_0xc83c('0x20')]);_0x4cf230[_0xc83c('0x1e')]=qs[_0xc83c('0x1e')](_0x159a1[_0xc83c('0x33')][_0xc83c('0x1e')]);}_0x4cf230[_0xc83c('0x3d')]=qs['sort'](_0x159a1[_0xc83c('0x33')][_0xc83c('0x3e')]);_0x4cf230['where']=qs[_0xc83c('0x35')](_[_0xc83c('0x3f')](_0x159a1['query'],_0x51d79a[_0xc83c('0x35')]),_0x3d45e3);if(_0x159a1[_0xc83c('0x33')][_0xc83c('0x40')]){_0x4cf230['where']=_['merge'](_0x4cf230[_0xc83c('0x41')],{'$or':_[_0xc83c('0x32')](_0x3d45e3,function(_0x15d4a0){if(_0x15d4a0['type']!==_0xc83c('0x42')){var _0x1453ec={};_0x1453ec[_0x15d4a0[_0xc83c('0x2a')]]={'$like':'%'+_0x159a1[_0xc83c('0x33')][_0xc83c('0x40')]+'%'};return _0x1453ec;}})});}_0x4cf230=_[_0xc83c('0x43')]({},_0x4cf230,_0x159a1[_0xc83c('0x44')]);var _0xf09f44={'where':_0x4cf230[_0xc83c('0x41')]};return db[_0xc83c('0x2d')][_0xc83c('0x21')](_0xf09f44)[_0xc83c('0x27')](function(_0x29d3f7){_0x170930['count']=_0x29d3f7;if(_0x159a1[_0xc83c('0x33')][_0xc83c('0x45')]){_0x4cf230[_0xc83c('0x46')]=[{'all':!![]}];}return db['Schedule'][_0xc83c('0x47')](_0x4cf230);})[_0xc83c('0x27')](function(_0x440c96){_0x170930[_0xc83c('0x48')]=_0x440c96;return _0x170930;})[_0xc83c('0x27')](respondWithFilteredResult(_0x554528,_0x4cf230))[_0xc83c('0x49')](handleError(_0x554528,null));};exports[_0xc83c('0x4a')]=function(_0x3a64bf,_0x26d190){var _0x1e4549={'raw':![],'where':{'id':_0x3a64bf[_0xc83c('0x4b')]['id']}},_0xdb0703={};_0xdb0703[_0xc83c('0x37')]=_[_0xc83c('0x34')](db[_0xc83c('0x2d')][_0xc83c('0x2e')]);_0xdb0703['query']=_[_0xc83c('0x34')](_0x3a64bf[_0xc83c('0x33')]);_0xdb0703[_0xc83c('0x35')]=_['intersection'](_0xdb0703[_0xc83c('0x37')],_0xdb0703[_0xc83c('0x33')]);_0x1e4549[_0xc83c('0x38')]=_[_0xc83c('0x36')](_0xdb0703['model'],qs[_0xc83c('0x39')](_0x3a64bf[_0xc83c('0x33')][_0xc83c('0x39')]));_0x1e4549['attributes']=_0x1e4549[_0xc83c('0x38')][_0xc83c('0x3a')]?_0x1e4549[_0xc83c('0x38')]:_0xdb0703[_0xc83c('0x37')];if(_0x3a64bf['query'][_0xc83c('0x45')]){_0x1e4549[_0xc83c('0x46')]=[{'all':!![]}];}_0x1e4549=_['merge']({},_0x1e4549,_0x3a64bf[_0xc83c('0x44')]);return db['Schedule']['find'](_0x1e4549)[_0xc83c('0x27')](handleEntityNotFound(_0x26d190,null))[_0xc83c('0x27')](respondWithResult(_0x26d190,null))[_0xc83c('0x49')](handleError(_0x26d190,null));};exports[_0xc83c('0x4c')]=function(_0x16a70e,_0x2b3d0a){return db['Schedule']['create'](_0x16a70e[_0xc83c('0x4d')],{})[_0xc83c('0x27')](function(_0x573502){var _0x11cac2=_0x16a70e[_0xc83c('0x4e')][_0xc83c('0x4f')]({'plain':!![]});if(!_0x11cac2)throw new Error(_0xc83c('0x50'));if(_0x11cac2[_0xc83c('0x51')]===_0xc83c('0x4e')){var _0xeaf84b=_0x573502[_0xc83c('0x4f')]({'plain':!![]});var _0x2849a3='Scheduler';return db[_0xc83c('0x52')][_0xc83c('0x53')]({'where':{'name':_0x2849a3,'userProfileId':_0x11cac2[_0xc83c('0x54')]},'raw':!![]})['then'](function(_0x4e7723){if(_0x4e7723&&_0x4e7723[_0xc83c('0x55')]===0x0){return db[_0xc83c('0x56')][_0xc83c('0x4c')]({'name':_0xeaf84b[_0xc83c('0x2a')],'resourceId':_0xeaf84b['id'],'type':_0x4e7723['name'],'sectionId':_0x4e7723['id']},{})['then'](function(){return _0x573502;});}else{return _0x573502;}})[_0xc83c('0x49')](function(_0x2c276c){logger[_0xc83c('0x29')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x2c276c);throw _0x2c276c;});}return _0x573502;})[_0xc83c('0x27')](respondWithResult(_0x2b3d0a,0xc9))[_0xc83c('0x49')](handleError(_0x2b3d0a,null));};exports[_0xc83c('0x26')]=function(_0x52c66f,_0x3806b5){if(_0x52c66f['body']['id']){delete _0x52c66f[_0xc83c('0x4d')]['id'];}return db[_0xc83c('0x2d')]['find']({'where':{'id':_0x52c66f['params']['id']}})[_0xc83c('0x27')](handleEntityNotFound(_0x3806b5,null))['then'](saveUpdates(_0x52c66f[_0xc83c('0x4d')],null))[_0xc83c('0x27')](respondWithResult(_0x3806b5,null))[_0xc83c('0x49')](handleError(_0x3806b5,null));};exports[_0xc83c('0x28')]=function(_0x1ea22e,_0x1b5423){return db['Schedule'][_0xc83c('0x53')]({'where':{'id':_0x1ea22e[_0xc83c('0x4b')]['id']}})[_0xc83c('0x27')](handleEntityNotFound(_0x1b5423,null))[_0xc83c('0x27')](removeEntity(_0x1b5423,null))['catch'](handleError(_0x1b5423,null));};exports[_0xc83c('0x57')]=function(_0x31c827,_0x47b6c,_0x1575e8){var _0x599b34=require(_0xc83c('0x58'));return db[_0xc83c('0x2d')]['find']({'where':{'id':_0x31c827[_0xc83c('0x4b')]['id']},'raw':!![]})[_0xc83c('0x27')](handleEntityNotFound(_0x47b6c,null))[_0xc83c('0x27')](function(){_0x599b34[_0xc83c('0x57')](_0x31c827[_0xc83c('0x4b')]['id']);})[_0xc83c('0x27')](respondWithStatusCode(_0x47b6c,null))[_0xc83c('0x49')](handleError(_0x47b6c,null));};
\ No newline at end of file
+var _0x0a87=['get','Scheduler','UserProfileResource','error','stack','name','index','map','Schedule','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','length','nolimit','offset','order','sort','where','filter','merge','options','include','rows','catch','show','params','keys','fields','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','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','set','Content-Range','apply','reject','update','destroy','then'];(function(_0x5542d3,_0xfc2ae4){var _0x18052f=function(_0x4da67d){while(--_0x4da67d){_0x5542d3['push'](_0x5542d3['shift']());}};_0x18052f(++_0xfc2ae4);}(_0x0a87,0x85));var _0x70a8=function(_0x199572,_0x33e667){_0x199572=_0x199572-0x0;var _0x13cfa3=_0x0a87[_0x199572];return _0x13cfa3;};'use strict';var emlformat=require(_0x70a8('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x70a8('0x1'));var rp=require(_0x70a8('0x2'));var moment=require(_0x70a8('0x3'));var BPromise=require(_0x70a8('0x4'));var Mustache=require(_0x70a8('0x5'));var util=require(_0x70a8('0x6'));var path=require(_0x70a8('0x7'));var sox=require('sox');var csv=require(_0x70a8('0x8'));var ejs=require(_0x70a8('0x9'));var fs=require('fs');var fs_extra=require(_0x70a8('0xa'));var _=require(_0x70a8('0xb'));var squel=require(_0x70a8('0xc'));var crypto=require(_0x70a8('0xd'));var jsforce=require(_0x70a8('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x70a8('0x8'));var querystring=require(_0x70a8('0xf'));var Papa=require(_0x70a8('0x10'));var Redis=require(_0x70a8('0x11'));var authService=require(_0x70a8('0x12'));var qs=require(_0x70a8('0x13'));var as=require(_0x70a8('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x70a8('0x15'))(_0x70a8('0x16'));var utils=require(_0x70a8('0x17'));var config=require(_0x70a8('0x18'));var licenseUtil=require(_0x70a8('0x19'));var db=require(_0x70a8('0x1a'))['db'];function respondWithStatusCode(_0x3a6cab,_0x1bb5af){_0x1bb5af=_0x1bb5af||0xcc;return function(_0x1a753c){if(_0x1a753c){return _0x3a6cab[_0x70a8('0x1b')](_0x1bb5af);}return _0x3a6cab[_0x70a8('0x1c')](_0x1bb5af)[_0x70a8('0x1d')]();};}function respondWithResult(_0xbbe41,_0x1118d8){_0x1118d8=_0x1118d8||0xc8;return function(_0x24c1fa){if(_0x24c1fa){return _0xbbe41['status'](_0x1118d8)[_0x70a8('0x1e')](_0x24c1fa);}};}function respondWithFilteredResult(_0x40cea0,_0x282034){return function(_0x21563e){if(_0x21563e){var _0xa87439=typeof _0x282034['offset']===_0x70a8('0x1f')&&typeof _0x282034[_0x70a8('0x20')]===_0x70a8('0x1f');var _0x39622b=_0x21563e[_0x70a8('0x21')];var _0x4afe32=_0xa87439?0x0:_0x282034['offset'];var _0x1c2f56=_0xa87439?_0x21563e[_0x70a8('0x21')]:_0x282034['offset']+_0x282034[_0x70a8('0x20')];var _0x131781;if(_0x1c2f56>=_0x39622b){_0x1c2f56=_0x39622b;_0x131781=0xc8;}else{_0x131781=0xce;}_0x40cea0[_0x70a8('0x1c')](_0x131781);return _0x40cea0[_0x70a8('0x22')](_0x70a8('0x23'),_0x4afe32+'-'+_0x1c2f56+'/'+_0x39622b)[_0x70a8('0x1e')](_0x21563e);}return null;};}function patchUpdates(_0x18efd4){return function(_0x50aa84){try{jsonpatch[_0x70a8('0x24')](_0x50aa84,_0x18efd4,!![]);}catch(_0x446e3e){return BPromise[_0x70a8('0x25')](_0x446e3e);}return _0x50aa84['save']();};}function saveUpdates(_0x30ffeb,_0x5dc039){return function(_0x31fe6d){if(_0x31fe6d){return _0x31fe6d[_0x70a8('0x26')](_0x30ffeb)['then'](function(_0x1a3b14){return _0x1a3b14;});}return null;};}function removeEntity(_0x3d3d86,_0x5ec658){return function(_0x4c6eb9){if(_0x4c6eb9){return _0x4c6eb9[_0x70a8('0x27')]()[_0x70a8('0x28')](function(){var _0x5388c4=_0x4c6eb9[_0x70a8('0x29')]({'plain':!![]});var _0x485075=_0x70a8('0x2a');return db[_0x70a8('0x2b')][_0x70a8('0x27')]({'where':{'type':_0x485075,'resourceId':_0x5388c4['id']}})[_0x70a8('0x28')](function(){return _0x4c6eb9;});})[_0x70a8('0x28')](function(){_0x3d3d86['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x19e7ea,_0x1ee2d8){return function(_0x27d0c8){if(!_0x27d0c8){_0x19e7ea['sendStatus'](0x194);}return _0x27d0c8;};}function handleError(_0x3a388f,_0x89b41c){_0x89b41c=_0x89b41c||0x1f4;return function(_0x59c42d){logger[_0x70a8('0x2c')](_0x59c42d[_0x70a8('0x2d')]);if(_0x59c42d['name']){delete _0x59c42d[_0x70a8('0x2e')];}_0x3a388f[_0x70a8('0x1c')](_0x89b41c)['send'](_0x59c42d);};}exports[_0x70a8('0x2f')]=function(_0x4e57e1,_0x46774a){var _0x431efc={},_0x3a7030={},_0x5a81f1={'count':0x0,'rows':[]};var _0x20783b=_[_0x70a8('0x30')](db[_0x70a8('0x31')][_0x70a8('0x32')],function(_0x1169a6){return{'name':_0x1169a6[_0x70a8('0x33')],'type':_0x1169a6[_0x70a8('0x34')][_0x70a8('0x35')]};});_0x3a7030[_0x70a8('0x36')]=_[_0x70a8('0x30')](_0x20783b,_0x70a8('0x2e'));_0x3a7030[_0x70a8('0x37')]=_['keys'](_0x4e57e1[_0x70a8('0x37')]);_0x3a7030[_0x70a8('0x38')]=_[_0x70a8('0x39')](_0x3a7030['model'],_0x3a7030[_0x70a8('0x37')]);_0x431efc['attributes']=_[_0x70a8('0x39')](_0x3a7030[_0x70a8('0x36')],qs['fields'](_0x4e57e1[_0x70a8('0x37')]['fields']));_0x431efc[_0x70a8('0x3a')]=_0x431efc[_0x70a8('0x3a')][_0x70a8('0x3b')]?_0x431efc['attributes']:_0x3a7030[_0x70a8('0x36')];if(!_0x4e57e1[_0x70a8('0x37')]['hasOwnProperty'](_0x70a8('0x3c'))){_0x431efc[_0x70a8('0x20')]=qs[_0x70a8('0x20')](_0x4e57e1[_0x70a8('0x37')][_0x70a8('0x20')]);_0x431efc[_0x70a8('0x3d')]=qs['offset'](_0x4e57e1[_0x70a8('0x37')]['offset']);}_0x431efc[_0x70a8('0x3e')]=qs[_0x70a8('0x3f')](_0x4e57e1[_0x70a8('0x37')][_0x70a8('0x3f')]);_0x431efc[_0x70a8('0x40')]=qs[_0x70a8('0x38')](_['pick'](_0x4e57e1[_0x70a8('0x37')],_0x3a7030[_0x70a8('0x38')]),_0x20783b);if(_0x4e57e1[_0x70a8('0x37')][_0x70a8('0x41')]){_0x431efc[_0x70a8('0x40')]=_[_0x70a8('0x42')](_0x431efc[_0x70a8('0x40')],{'$or':_[_0x70a8('0x30')](_0x20783b,function(_0x2456b2){if(_0x2456b2[_0x70a8('0x34')]!=='VIRTUAL'){var _0x24f941={};_0x24f941[_0x2456b2[_0x70a8('0x2e')]]={'$like':'%'+_0x4e57e1[_0x70a8('0x37')][_0x70a8('0x41')]+'%'};return _0x24f941;}})});}_0x431efc=_[_0x70a8('0x42')]({},_0x431efc,_0x4e57e1[_0x70a8('0x43')]);var _0x37123e={'where':_0x431efc[_0x70a8('0x40')]};return db[_0x70a8('0x31')][_0x70a8('0x21')](_0x37123e)[_0x70a8('0x28')](function(_0x201d79){_0x5a81f1[_0x70a8('0x21')]=_0x201d79;if(_0x4e57e1[_0x70a8('0x37')]['includeAll']){_0x431efc[_0x70a8('0x44')]=[{'all':!![]}];}return db[_0x70a8('0x31')]['findAll'](_0x431efc);})[_0x70a8('0x28')](function(_0x363973){_0x5a81f1[_0x70a8('0x45')]=_0x363973;return _0x5a81f1;})[_0x70a8('0x28')](respondWithFilteredResult(_0x46774a,_0x431efc))[_0x70a8('0x46')](handleError(_0x46774a,null));};exports[_0x70a8('0x47')]=function(_0x2f9c18,_0x226a2f){var _0x27931e={'raw':![],'where':{'id':_0x2f9c18[_0x70a8('0x48')]['id']}},_0x4a31de={};_0x4a31de[_0x70a8('0x36')]=_[_0x70a8('0x49')](db[_0x70a8('0x31')]['rawAttributes']);_0x4a31de[_0x70a8('0x37')]=_[_0x70a8('0x49')](_0x2f9c18['query']);_0x4a31de[_0x70a8('0x38')]=_[_0x70a8('0x39')](_0x4a31de[_0x70a8('0x36')],_0x4a31de['query']);_0x27931e[_0x70a8('0x3a')]=_[_0x70a8('0x39')](_0x4a31de[_0x70a8('0x36')],qs[_0x70a8('0x4a')](_0x2f9c18[_0x70a8('0x37')][_0x70a8('0x4a')]));_0x27931e[_0x70a8('0x3a')]=_0x27931e[_0x70a8('0x3a')][_0x70a8('0x3b')]?_0x27931e[_0x70a8('0x3a')]:_0x4a31de['model'];if(_0x2f9c18['query']['includeAll']){_0x27931e[_0x70a8('0x44')]=[{'all':!![]}];}_0x27931e=_['merge']({},_0x27931e,_0x2f9c18['options']);return db['Schedule'][_0x70a8('0x4b')](_0x27931e)[_0x70a8('0x28')](handleEntityNotFound(_0x226a2f,null))['then'](respondWithResult(_0x226a2f,null))[_0x70a8('0x46')](handleError(_0x226a2f,null));};exports[_0x70a8('0x4c')]=function(_0x2620db,_0x35b83b){return db[_0x70a8('0x31')]['create'](_0x2620db['body'],{})[_0x70a8('0x28')](function(_0x20eaa4){var _0x54382c=_0x2620db[_0x70a8('0x4d')][_0x70a8('0x29')]({'plain':!![]});if(!_0x54382c)throw new Error(_0x70a8('0x4e'));if(_0x54382c[_0x70a8('0x4f')]==='user'){var _0x4cd8a8=_0x20eaa4[_0x70a8('0x29')]({'plain':!![]});var _0x32aa76=_0x70a8('0x2a');return db[_0x70a8('0x50')][_0x70a8('0x4b')]({'where':{'name':_0x32aa76,'userProfileId':_0x54382c[_0x70a8('0x51')]},'raw':!![]})['then'](function(_0x34cd5e){if(_0x34cd5e&&_0x34cd5e[_0x70a8('0x52')]===0x0){return db['UserProfileResource'][_0x70a8('0x4c')]({'name':_0x4cd8a8['name'],'resourceId':_0x4cd8a8['id'],'type':_0x34cd5e[_0x70a8('0x2e')],'sectionId':_0x34cd5e['id']},{})[_0x70a8('0x28')](function(){return _0x20eaa4;});}else{return _0x20eaa4;}})[_0x70a8('0x46')](function(_0x8a8b12){logger[_0x70a8('0x2c')](_0x70a8('0x53'),_0x8a8b12);throw _0x8a8b12;});}return _0x20eaa4;})['then'](respondWithResult(_0x35b83b,0xc9))[_0x70a8('0x46')](handleError(_0x35b83b,null));};exports[_0x70a8('0x26')]=function(_0xfd6752,_0x505515){if(_0xfd6752['body']['id']){delete _0xfd6752[_0x70a8('0x54')]['id'];}return db[_0x70a8('0x31')][_0x70a8('0x4b')]({'where':{'id':_0xfd6752[_0x70a8('0x48')]['id']}})[_0x70a8('0x28')](handleEntityNotFound(_0x505515,null))[_0x70a8('0x28')](saveUpdates(_0xfd6752['body'],null))[_0x70a8('0x28')](respondWithResult(_0x505515,null))[_0x70a8('0x46')](handleError(_0x505515,null));};exports[_0x70a8('0x27')]=function(_0x4be210,_0x4917c5){return db[_0x70a8('0x31')][_0x70a8('0x4b')]({'where':{'id':_0x4be210[_0x70a8('0x48')]['id']}})[_0x70a8('0x28')](handleEntityNotFound(_0x4917c5,null))[_0x70a8('0x28')](removeEntity(_0x4917c5,null))[_0x70a8('0x46')](handleError(_0x4917c5,null));};exports[_0x70a8('0x55')]=function(_0x55883d,_0x1d5675,_0x592216){var _0x59fb9c=require(_0x70a8('0x56'));return db['Schedule'][_0x70a8('0x4b')]({'where':{'id':_0x55883d['params']['id']},'raw':!![]})[_0x70a8('0x28')](handleEntityNotFound(_0x1d5675,null))[_0x70a8('0x28')](function(){_0x59fb9c[_0x70a8('0x55')](_0x55883d['params']['id']);})[_0x70a8('0x28')](respondWithStatusCode(_0x1d5675,null))[_0x70a8('0x46')](handleError(_0x1d5675,null));};
\ No newline at end of file
index fe09e51..db91a77 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x546c=['util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define'];(function(_0xe15270,_0x227d06){var _0x1e813b=function(_0x1d590d){while(--_0x1d590d){_0xe15270['push'](_0xe15270['shift']());}};_0x1e813b(++_0x227d06);}(_0x546c,0x1d9));var _0xc546=function(_0x56580e,_0x5c9aff){_0x56580e=_0x56580e-0x0;var _0x311964=_0x546c[_0x56580e];return _0x311964;};'use strict';var _=require('lodash');var util=require(_0xc546('0x0'));var logger=require(_0xc546('0x1'))(_0xc546('0x2'));var moment=require(_0xc546('0x3'));var BPromise=require(_0xc546('0x4'));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('./schedule.attributes');module[_0xc546('0x9')]=function(_0x22e82c,_0x235dad){return _0x22e82c[_0xc546('0xa')]('Schedule',attributes,{'tableName':'tools_schedules','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4429=['rimraf','../../config/environment','./schedule.attributes','exports','Schedule','tools_schedules','lodash','../../config/logger','bluebird','request-promise','path'];(function(_0x36884e,_0x48008f){var _0x1cc367=function(_0x388a78){while(--_0x388a78){_0x36884e['push'](_0x36884e['shift']());}};_0x1cc367(++_0x48008f);}(_0x4429,0xa0));var _0x9442=function(_0x4c27aa,_0x1aeff4){_0x4c27aa=_0x4c27aa-0x0;var _0x5c871c=_0x4429[_0x4c27aa];return _0x5c871c;};'use strict';var _=require(_0x9442('0x0'));var util=require('util');var logger=require(_0x9442('0x1'))('api');var moment=require('moment');var BPromise=require(_0x9442('0x2'));var rp=require(_0x9442('0x3'));var fs=require('fs');var path=require(_0x9442('0x4'));var rimraf=require(_0x9442('0x5'));var config=require(_0x9442('0x6'));var attributes=require(_0x9442('0x7'));module[_0x9442('0x8')]=function(_0x14fcd3,_0x17c7ef){return _0x14fcd3['define'](_0x9442('0x9'),attributes,{'tableName':_0x9442('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6e62870..f615e99 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x08a8=['debug','Schedule,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','request','then','info','Schedule,\x20%s,\x20%s'];(function(_0xb7472,_0x338ebc){var _0x3a2d25=function(_0x945283){while(--_0x945283){_0xb7472['push'](_0xb7472['shift']());}};_0x3a2d25(++_0x338ebc);}(_0x08a8,0x69));var _0x808a=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x08a8[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0x808a('0x0'));var moment=require(_0x808a('0x1'));var BPromise=require(_0x808a('0x2'));var rs=require(_0x808a('0x3'));var fs=require('fs');var Redis=require(_0x808a('0x4'));var db=require(_0x808a('0x5'))['db'];var utils=require(_0x808a('0x6'));var logger=require('../../config/logger')(_0x808a('0x7'));var config=require('../../config/environment');var jayson=require(_0x808a('0x8'));var client=jayson[_0x808a('0x9')][_0x808a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2414ca,_0x357101,_0x4f7603){return new BPromise(function(_0x1f90ef,_0x42583b){return client[_0x808a('0xb')](_0x2414ca,_0x4f7603)[_0x808a('0xc')](function(_0x5ed3c4){logger[_0x808a('0xd')](_0x808a('0xe'),_0x357101,'request\x20sent');logger[_0x808a('0xf')](_0x808a('0x10'),_0x357101,_0x808a('0x11'),JSON[_0x808a('0x12')](_0x5ed3c4));if(_0x5ed3c4[_0x808a('0x13')]){if(_0x5ed3c4['error'][_0x808a('0x14')]===0x1f4){logger[_0x808a('0x13')]('Schedule,\x20%s,\x20%s',_0x357101,_0x5ed3c4[_0x808a('0x13')][_0x808a('0x15')]);return _0x42583b(_0x5ed3c4[_0x808a('0x13')][_0x808a('0x15')]);}logger[_0x808a('0x13')](_0x808a('0xe'),_0x357101,_0x5ed3c4[_0x808a('0x13')][_0x808a('0x15')]);return _0x1f90ef(_0x5ed3c4['error'][_0x808a('0x15')]);}else{logger['info'](_0x808a('0xe'),_0x357101,'request\x20sent');_0x1f90ef(_0x5ed3c4[_0x808a('0x16')][_0x808a('0x15')]);}})[_0x808a('0x17')](function(_0x33382c){logger['error'](_0x808a('0xe'),_0x357101,_0x33382c);_0x42583b(_0x33382c);});});}
\ No newline at end of file
+var _0x2ab9=['message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Schedule,\x20%s,\x20%s','request\x20sent','debug','Schedule,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x3f2d02,_0x2c7deb){var _0x54092b=function(_0x427ff8){while(--_0x427ff8){_0x3f2d02['push'](_0x3f2d02['shift']());}};_0x54092b(++_0x2c7deb);}(_0x2ab9,0x120));var _0x92ab=function(_0x19e3b5,_0x19d641){_0x19e3b5=_0x19e3b5-0x0;var _0x6363b4=_0x2ab9[_0x19e3b5];return _0x6363b4;};'use strict';var _=require(_0x92ab('0x0'));var util=require(_0x92ab('0x1'));var moment=require(_0x92ab('0x2'));var BPromise=require(_0x92ab('0x3'));var rs=require(_0x92ab('0x4'));var fs=require('fs');var Redis=require(_0x92ab('0x5'));var db=require(_0x92ab('0x6'))['db'];var utils=require(_0x92ab('0x7'));var logger=require(_0x92ab('0x8'))(_0x92ab('0x9'));var config=require(_0x92ab('0xa'));var jayson=require(_0x92ab('0xb'));var client=jayson[_0x92ab('0xc')][_0x92ab('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x33b5a1,_0x5904b5,_0xacef3e){return new BPromise(function(_0xd3105d,_0x2627d8){return client[_0x92ab('0xe')](_0x33b5a1,_0xacef3e)[_0x92ab('0xf')](function(_0x1f2726){logger[_0x92ab('0x10')](_0x92ab('0x11'),_0x5904b5,_0x92ab('0x12'));logger[_0x92ab('0x13')](_0x92ab('0x14'),_0x5904b5,'request\x20sent',JSON[_0x92ab('0x15')](_0x1f2726));if(_0x1f2726[_0x92ab('0x16')]){if(_0x1f2726[_0x92ab('0x16')][_0x92ab('0x17')]===0x1f4){logger[_0x92ab('0x16')](_0x92ab('0x11'),_0x5904b5,_0x1f2726[_0x92ab('0x16')][_0x92ab('0x18')]);return _0x2627d8(_0x1f2726[_0x92ab('0x16')]['message']);}logger[_0x92ab('0x16')](_0x92ab('0x11'),_0x5904b5,_0x1f2726[_0x92ab('0x16')][_0x92ab('0x18')]);return _0xd3105d(_0x1f2726[_0x92ab('0x16')][_0x92ab('0x18')]);}else{logger['info'](_0x92ab('0x11'),_0x5904b5,'request\x20sent');_0xd3105d(_0x1f2726['result'][_0x92ab('0x18')]);}})[_0x92ab('0x19')](function(_0x1cbd7c){logger[_0x92ab('0x16')](_0x92ab('0x11'),_0x5904b5,_0x1cbd7c);_0x2627d8(_0x1cbd7c);});});}
\ No newline at end of file
index 09a9bb0..94053bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe189=['describe','/:id','/:id/download','download','post','create','put','update','delete','exports','multer','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./screenRecording.controller','get','isAuthenticated','/describe'];(function(_0x5ce9b2,_0x12dd1a){var _0xe05b07=function(_0x565b6a){while(--_0x565b6a){_0x5ce9b2['push'](_0x5ce9b2['shift']());}};_0xe05b07(++_0x12dd1a);}(_0xe189,0x1c2));var _0x9e18=function(_0x1b6b83,_0x22c6d2){_0x1b6b83=_0x1b6b83-0x0;var _0x24473b=_0xe189[_0x1b6b83];return _0x24473b;};'use strict';var multer=require(_0x9e18('0x0'));var util=require(_0x9e18('0x1'));var path=require(_0x9e18('0x2'));var timeout=require(_0x9e18('0x3'));var express=require(_0x9e18('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x9e18('0x5'));var interaction=require(_0x9e18('0x6'));var config=require(_0x9e18('0x7'));var controller=require(_0x9e18('0x8'));router[_0x9e18('0x9')]('/',auth[_0x9e18('0xa')](),controller['index']);router[_0x9e18('0x9')](_0x9e18('0xb'),auth[_0x9e18('0xa')](),controller[_0x9e18('0xc')]);router[_0x9e18('0x9')](_0x9e18('0xd'),auth[_0x9e18('0xa')](),controller['show']);router[_0x9e18('0x9')](_0x9e18('0xe'),auth[_0x9e18('0xa')](),controller[_0x9e18('0xf')]);router[_0x9e18('0x10')]('/',auth['isAuthenticated'](),controller[_0x9e18('0x11')]);router[_0x9e18('0x12')]('/:id',auth['isAuthenticated'](),controller[_0x9e18('0x13')]);router[_0x9e18('0x14')](_0x9e18('0xd'),auth[_0x9e18('0xa')](),controller['destroy']);module[_0x9e18('0x15')]=router;
\ No newline at end of file
+var _0x2b63=['update','delete','destroy','exports','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','/describe','/:id','show','/:id/download','download','put'];(function(_0x15b306,_0x524afb){var _0x1ac7ea=function(_0x23791d){while(--_0x23791d){_0x15b306['push'](_0x15b306['shift']());}};_0x1ac7ea(++_0x524afb);}(_0x2b63,0x68));var _0x32b6=function(_0x10233d,_0x11aa65){_0x10233d=_0x10233d-0x0;var _0x37ea38=_0x2b63[_0x10233d];return _0x37ea38;};'use strict';var multer=require('multer');var util=require(_0x32b6('0x0'));var path=require(_0x32b6('0x1'));var timeout=require(_0x32b6('0x2'));var express=require(_0x32b6('0x3'));var router=express[_0x32b6('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x32b6('0x5'));var interaction=require(_0x32b6('0x6'));var config=require('../../config/environment');var controller=require('./screenRecording.controller');router[_0x32b6('0x7')]('/',auth[_0x32b6('0x8')](),controller[_0x32b6('0x9')]);router[_0x32b6('0x7')](_0x32b6('0xa'),auth[_0x32b6('0x8')](),controller['describe']);router['get'](_0x32b6('0xb'),auth[_0x32b6('0x8')](),controller[_0x32b6('0xc')]);router['get'](_0x32b6('0xd'),auth[_0x32b6('0x8')](),controller[_0x32b6('0xe')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0x32b6('0xf')]('/:id',auth[_0x32b6('0x8')](),controller[_0x32b6('0x10')]);router[_0x32b6('0x11')](_0x32b6('0xb'),auth[_0x32b6('0x8')](),controller[_0x32b6('0x12')]);module[_0x32b6('0x13')]=router;
\ No newline at end of file
index a5d2536..f68c013 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x94e6=['DATE','closedAt','toString','createdAt','updatedAt','sequelize','path','../../config/environment','exports','VIRTUAL','getDataValue','value','STRING','setDataValue','startedAt','subtract','duration','format','MM-DD-YYYY\x20HH:mm'];(function(_0x1ec208,_0x4461df){var _0x56ced9=function(_0x2b8d9a){while(--_0x2b8d9a){_0x1ec208['push'](_0x1ec208['shift']());}};_0x56ced9(++_0x4461df);}(_0x94e6,0x194));var _0x694e=function(_0x52c852,_0x10efdb){_0x52c852=_0x52c852-0x0;var _0x4c6a9c=_0x94e6[_0x52c852];return _0x4c6a9c;};'use strict';var Sequelize=require(_0x694e('0x0'));var moment=require('moment');var path=require(_0x694e('0x1'));var config=require(_0x694e('0x2'));module[_0x694e('0x3')]={'format':{'type':Sequelize[_0x694e('0x4')],'get':function(){return this[_0x694e('0x5')](_0x694e('0x6'))?path['extname'](this[_0x694e('0x5')](_0x694e('0x6'))):undefined;}},'interactionid':{'type':Sequelize['STRING']},'channel':{'type':Sequelize['STRING']},'value':{'type':Sequelize[_0x694e('0x7')],'set':function(_0x84e66e){var _0x1c0a45=_0x84e66e['replace'](/\\/g,'/');this['setDataValue'](_0x694e('0x6'),_0x1c0a45);}},'rating':{'type':Sequelize['INTEGER'],'validate':{'max':0x5,'min':0x0}},'duration':{'type':Sequelize['INTEGER'],'set':function(_0x4ab419){this[_0x694e('0x8')](_0x694e('0x9'),moment()[_0x694e('0xa')](_0x4ab419,'ms'));this[_0x694e('0x8')]('closedAt',moment());this[_0x694e('0x8')](_0x694e('0xb'),_0x4ab419);}},'startedAt':{'type':Sequelize['DATE'],'get':function(){return moment(this[_0x694e('0x5')](_0x694e('0x9')))[_0x694e('0xc')](_0x694e('0xd'))['toString']();}},'closedAt':{'type':Sequelize[_0x694e('0xe')],'get':function(){return moment(this['getDataValue'](_0x694e('0xf')))[_0x694e('0xc')](_0x694e('0xd'))[_0x694e('0x10')]();}},'createdAt':{'type':Sequelize[_0x694e('0xe')],'get':function(){return moment(this[_0x694e('0x5')](_0x694e('0x11')))[_0x694e('0xc')](_0x694e('0xd'))[_0x694e('0x10')]();}},'updatedAt':{'type':Sequelize[_0x694e('0xe')],'get':function(){return moment(this[_0x694e('0x5')](_0x694e('0x12')))['format'](_0x694e('0xd'))[_0x694e('0x10')]();}}};
\ No newline at end of file
+var _0xee9c=['format','MM-DD-YYYY\x20HH:mm','getDataValue','createdAt','toString','updatedAt','moment','path','../../config/environment','exports','value','extname','STRING','INTEGER','setDataValue','startedAt','subtract','closedAt','duration','DATE'];(function(_0x2811b4,_0x33be97){var _0x486918=function(_0x234d58){while(--_0x234d58){_0x2811b4['push'](_0x2811b4['shift']());}};_0x486918(++_0x33be97);}(_0xee9c,0x1e6));var _0xcee9=function(_0x3cc9d9,_0x69ed38){_0x3cc9d9=_0x3cc9d9-0x0;var _0x1a425d=_0xee9c[_0x3cc9d9];return _0x1a425d;};'use strict';var Sequelize=require('sequelize');var moment=require(_0xcee9('0x0'));var path=require(_0xcee9('0x1'));var config=require(_0xcee9('0x2'));module[_0xcee9('0x3')]={'format':{'type':Sequelize['VIRTUAL'],'get':function(){return this['getDataValue'](_0xcee9('0x4'))?path[_0xcee9('0x5')](this['getDataValue']('value')):undefined;}},'interactionid':{'type':Sequelize[_0xcee9('0x6')]},'channel':{'type':Sequelize['STRING']},'value':{'type':Sequelize[_0xcee9('0x6')],'set':function(_0x2bc2cb){var _0x34819a=_0x2bc2cb['replace'](/\\/g,'/');this['setDataValue'](_0xcee9('0x4'),_0x34819a);}},'rating':{'type':Sequelize[_0xcee9('0x7')],'validate':{'max':0x5,'min':0x0}},'duration':{'type':Sequelize['INTEGER'],'set':function(_0x7c80be){this[_0xcee9('0x8')](_0xcee9('0x9'),moment()[_0xcee9('0xa')](_0x7c80be,'ms'));this[_0xcee9('0x8')](_0xcee9('0xb'),moment());this['setDataValue'](_0xcee9('0xc'),_0x7c80be);}},'startedAt':{'type':Sequelize[_0xcee9('0xd')],'get':function(){return moment(this['getDataValue'](_0xcee9('0x9')))[_0xcee9('0xe')](_0xcee9('0xf'))['toString']();}},'closedAt':{'type':Sequelize[_0xcee9('0xd')],'get':function(){return moment(this[_0xcee9('0x10')](_0xcee9('0xb')))[_0xcee9('0xe')](_0xcee9('0xf'))['toString']();}},'createdAt':{'type':Sequelize['DATE'],'get':function(){return moment(this[_0xcee9('0x10')](_0xcee9('0x11')))[_0xcee9('0xe')](_0xcee9('0xf'))[_0xcee9('0x12')]();}},'updatedAt':{'type':Sequelize[_0xcee9('0xd')],'get':function(){return moment(this[_0xcee9('0x10')](_0xcee9('0x13')))[_0xcee9('0xe')](_0xcee9('0xf'))[_0xcee9('0x12')]();}}};
\ No newline at end of file
index 03a70d8..8630ffe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c4e=['findAll','rows','catch','params','keys','find','create','body','duration','createdAt','closedAt','describe','download','../../components/encryptor','uniqueid','value','join','root','server/files/screen_recordings','%s.cypher','existsSync','secrets','ValidationError','ScreenRecording\x20not\x20found','filename','extname','unlink','message','send','Not\x20found','isNil','info','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','destroy','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','apply','reject','save','update','then','sendStatus','name','index','map','ScreenRecording','rawAttributes','type','key','model','differenceBy','format','query','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','pick','merge','VIRTUAL','options','includeAll','include'];(function(_0x2f9467,_0x40576f){var _0x39894c=function(_0x13e344){while(--_0x13e344){_0x2f9467['push'](_0x2f9467['shift']());}};_0x39894c(++_0x40576f);}(_0x4c4e,0x152));var _0xe4c4=function(_0x4105bd,_0x29fd83){_0x4105bd=_0x4105bd-0x0;var _0x3e5035=_0x4c4e[_0x4105bd];return _0x3e5035;};'use strict';var emlformat=require(_0xe4c4('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xe4c4('0x1'));var jsonpatch=require(_0xe4c4('0x2'));var rp=require(_0xe4c4('0x3'));var moment=require('moment');var BPromise=require(_0xe4c4('0x4'));var Mustache=require(_0xe4c4('0x5'));var util=require(_0xe4c4('0x6'));var path=require('path');var sox=require(_0xe4c4('0x7'));var csv=require('to-csv');var ejs=require(_0xe4c4('0x8'));var fs=require('fs');var fs_extra=require(_0xe4c4('0x9'));var _=require(_0xe4c4('0xa'));var squel=require(_0xe4c4('0xb'));var crypto=require(_0xe4c4('0xc'));var jsforce=require(_0xe4c4('0xd'));var deskjs=require(_0xe4c4('0xe'));var toCsv=require(_0xe4c4('0xf'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xe4c4('0x10'));var authService=require(_0xe4c4('0x11'));var qs=require(_0xe4c4('0x12'));var as=require(_0xe4c4('0x13'));var hardwareService=require(_0xe4c4('0x14'));var logger=require(_0xe4c4('0x15'))('api');var utils=require(_0xe4c4('0x16'));var config=require(_0xe4c4('0x17'));var licenseUtil=require(_0xe4c4('0x18'));var db=require(_0xe4c4('0x19'))['db'];function respondWithStatusCode(_0x50bfab,_0x262083){_0x262083=_0x262083||0xcc;return function(_0x115802){if(_0x115802){return _0x50bfab['sendStatus'](_0x262083);}return _0x50bfab[_0xe4c4('0x1a')](_0x262083)[_0xe4c4('0x1b')]();};}function respondWithResult(_0x5aa89b,_0x42ce9e){_0x42ce9e=_0x42ce9e||0xc8;return function(_0x29766a){if(_0x29766a){return _0x5aa89b['status'](_0x42ce9e)[_0xe4c4('0x1c')](_0x29766a);}};}function respondWithFilteredResult(_0x465c9b,_0x26ea05){return function(_0x40a36e){if(_0x40a36e){var _0x19e59b=typeof _0x26ea05[_0xe4c4('0x1d')]===_0xe4c4('0x1e')&&typeof _0x26ea05[_0xe4c4('0x1f')]===_0xe4c4('0x1e');var _0x36b10c=_0x40a36e[_0xe4c4('0x20')];var _0x42242c=_0x19e59b?0x0:_0x26ea05[_0xe4c4('0x1d')];var _0x43a9ce=_0x19e59b?_0x40a36e[_0xe4c4('0x20')]:_0x26ea05['offset']+_0x26ea05[_0xe4c4('0x1f')];var _0x24f946;if(_0x43a9ce>=_0x36b10c){_0x43a9ce=_0x36b10c;_0x24f946=0xc8;}else{_0x24f946=0xce;}_0x465c9b[_0xe4c4('0x1a')](_0x24f946);return _0x465c9b[_0xe4c4('0x21')]('Content-Range',_0x42242c+'-'+_0x43a9ce+'/'+_0x36b10c)[_0xe4c4('0x1c')](_0x40a36e);}return null;};}function patchUpdates(_0x1cad5d){return function(_0x1727eb){try{jsonpatch[_0xe4c4('0x22')](_0x1727eb,_0x1cad5d,!![]);}catch(_0x2c5aea){return BPromise[_0xe4c4('0x23')](_0x2c5aea);}return _0x1727eb[_0xe4c4('0x24')]();};}function saveUpdates(_0x393c96,_0x21bbb1){return function(_0x1a7690){if(_0x1a7690){return _0x1a7690[_0xe4c4('0x25')](_0x393c96)[_0xe4c4('0x26')](function(_0x138ead){return _0x138ead;});}return null;};}function removeEntity(_0x1db719,_0x15873e){return function(_0x59498e){if(_0x59498e){return _0x59498e['destroy']()[_0xe4c4('0x26')](function(){_0x1db719['status'](0xcc)[_0xe4c4('0x1b')]();});}};}function handleEntityNotFound(_0x5374fd,_0x3adfcb){return function(_0x5efc4c){if(!_0x5efc4c){_0x5374fd[_0xe4c4('0x27')](0x194);}return _0x5efc4c;};}function handleError(_0x583393,_0xba53ef){_0xba53ef=_0xba53ef||0x1f4;return function(_0x4a0199){logger['error'](_0x4a0199['stack']);if(_0x4a0199['name']){delete _0x4a0199[_0xe4c4('0x28')];}_0x583393['status'](_0xba53ef)['send'](_0x4a0199);};}exports[_0xe4c4('0x29')]=function(_0x11deab,_0x4bb911){var _0x57ba43={},_0x7428ad={},_0x33de43={'count':0x0,'rows':[]};var _0x4aa6c1=_[_0xe4c4('0x2a')](db[_0xe4c4('0x2b')][_0xe4c4('0x2c')],function(_0x48060e){return{'name':_0x48060e['fieldName'],'type':_0x48060e[_0xe4c4('0x2d')][_0xe4c4('0x2e')]};});_0x7428ad[_0xe4c4('0x2f')]=_[_0xe4c4('0x30')](_['map'](_0x4aa6c1,'name'),[_0xe4c4('0x31')]);_0x7428ad[_0xe4c4('0x32')]=_['keys'](_0x11deab[_0xe4c4('0x32')]);_0x7428ad[_0xe4c4('0x33')]=_[_0xe4c4('0x34')](_0x7428ad['model'],_0x7428ad[_0xe4c4('0x32')]);_0x57ba43['attributes']=_[_0xe4c4('0x34')](_0x7428ad[_0xe4c4('0x2f')],qs[_0xe4c4('0x35')](_0x11deab[_0xe4c4('0x32')][_0xe4c4('0x35')]));_0x57ba43[_0xe4c4('0x36')]=_0x57ba43[_0xe4c4('0x36')][_0xe4c4('0x37')]?_0x57ba43[_0xe4c4('0x36')]:_0x7428ad[_0xe4c4('0x2f')];if(!_0x11deab[_0xe4c4('0x32')][_0xe4c4('0x38')]('nolimit')){_0x57ba43[_0xe4c4('0x1f')]=qs[_0xe4c4('0x1f')](_0x11deab[_0xe4c4('0x32')]['limit']);_0x57ba43[_0xe4c4('0x1d')]=qs[_0xe4c4('0x1d')](_0x11deab[_0xe4c4('0x32')]['offset']);}_0x57ba43[_0xe4c4('0x39')]=qs[_0xe4c4('0x3a')](_0x11deab[_0xe4c4('0x32')][_0xe4c4('0x3a')]);_0x57ba43[_0xe4c4('0x3b')]=qs[_0xe4c4('0x33')](_[_0xe4c4('0x3c')](_0x11deab[_0xe4c4('0x32')],_0x7428ad[_0xe4c4('0x33')]),_0x4aa6c1);if(_0x11deab[_0xe4c4('0x32')]['filter']){_0x57ba43[_0xe4c4('0x3b')]=_[_0xe4c4('0x3d')](_0x57ba43[_0xe4c4('0x3b')],{'$or':_[_0xe4c4('0x2a')](_0x4aa6c1,function(_0x4c5551){if(_0x4c5551[_0xe4c4('0x2d')]!==_0xe4c4('0x3e')){var _0x4e6bd9={};_0x4e6bd9[_0x4c5551[_0xe4c4('0x28')]]={'$like':'%'+_0x11deab[_0xe4c4('0x32')]['filter']+'%'};return _0x4e6bd9;}})});}_0x57ba43=_[_0xe4c4('0x3d')]({},_0x57ba43,_0x11deab[_0xe4c4('0x3f')]);var _0x127bcd={'where':_0x57ba43[_0xe4c4('0x3b')]};return db[_0xe4c4('0x2b')][_0xe4c4('0x20')](_0x127bcd)[_0xe4c4('0x26')](function(_0x43201e){_0x33de43[_0xe4c4('0x20')]=_0x43201e;if(_0x11deab[_0xe4c4('0x32')][_0xe4c4('0x40')]){_0x57ba43[_0xe4c4('0x41')]=[{'all':!![]}];}return db['ScreenRecording'][_0xe4c4('0x42')](_0x57ba43);})[_0xe4c4('0x26')](function(_0x2b306d){_0x33de43[_0xe4c4('0x43')]=_0x2b306d;return _0x33de43;})[_0xe4c4('0x26')](respondWithFilteredResult(_0x4bb911,_0x57ba43))[_0xe4c4('0x44')](handleError(_0x4bb911,null));};exports['show']=function(_0x312a49,_0x526bef){var _0xca07dc={'raw':![],'where':{'id':_0x312a49[_0xe4c4('0x45')]['id']}},_0x3c067a={};_0x3c067a[_0xe4c4('0x2f')]=_[_0xe4c4('0x46')](db['ScreenRecording']['rawAttributes']);_0x3c067a[_0xe4c4('0x32')]=_[_0xe4c4('0x46')](_0x312a49[_0xe4c4('0x32')]);_0x3c067a['filters']=_[_0xe4c4('0x34')](_0x3c067a[_0xe4c4('0x2f')],_0x3c067a[_0xe4c4('0x32')]);_0xca07dc[_0xe4c4('0x36')]=_['intersection'](_0x3c067a[_0xe4c4('0x2f')],qs[_0xe4c4('0x35')](_0x312a49[_0xe4c4('0x32')][_0xe4c4('0x35')]));_0xca07dc[_0xe4c4('0x36')]=_0xca07dc[_0xe4c4('0x36')][_0xe4c4('0x37')]?_0xca07dc[_0xe4c4('0x36')]:_0x3c067a[_0xe4c4('0x2f')];if(_0x312a49['query'][_0xe4c4('0x40')]){_0xca07dc['include']=[{'all':!![]}];}_0xca07dc=_[_0xe4c4('0x3d')]({},_0xca07dc,_0x312a49[_0xe4c4('0x3f')]);return db[_0xe4c4('0x2b')][_0xe4c4('0x47')](_0xca07dc)[_0xe4c4('0x26')](handleEntityNotFound(_0x526bef,null))[_0xe4c4('0x26')](respondWithResult(_0x526bef,null))[_0xe4c4('0x44')](handleError(_0x526bef,null));};exports[_0xe4c4('0x48')]=function(_0x36f8ad,_0x18fb82){return db[_0xe4c4('0x2b')][_0xe4c4('0x48')](_0x36f8ad[_0xe4c4('0x49')],{})[_0xe4c4('0x26')](respondWithResult(_0x18fb82,0xc9))['catch'](handleError(_0x18fb82,null));};exports['update']=function(_0xe0e351,_0x198961){if(_0xe0e351['body']['id']){delete _0xe0e351[_0xe4c4('0x49')]['id'];}delete _0xe0e351[_0xe4c4('0x49')][_0xe4c4('0x4a')];delete _0xe0e351[_0xe4c4('0x49')][_0xe4c4('0x4b')];delete _0xe0e351['body'][_0xe4c4('0x4c')];delete _0xe0e351[_0xe4c4('0x49')]['value'];return db[_0xe4c4('0x2b')][_0xe4c4('0x47')]({'where':{'id':_0xe0e351['params']['id']}})[_0xe4c4('0x26')](handleEntityNotFound(_0x198961,null))['then'](saveUpdates(_0xe0e351[_0xe4c4('0x49')],null))[_0xe4c4('0x26')](respondWithResult(_0x198961,null))[_0xe4c4('0x44')](handleError(_0x198961,null));};exports[_0xe4c4('0x4d')]=function(_0x12eaed,_0x525534){return db[_0xe4c4('0x2b')][_0xe4c4('0x4d')]()[_0xe4c4('0x26')](respondWithResult(_0x525534,null))[_0xe4c4('0x44')](handleError(_0x525534,null));};exports[_0xe4c4('0x4e')]=function(_0x32a50e,_0x3ddcbe,_0x3aa205){var _0x1a96ba=require(_0xe4c4('0x4f'));var _0x1fe354=![];var _0x1940e3={};if(_0x32a50e[_0xe4c4('0x32')][_0xe4c4('0x2d')]&&_0x32a50e[_0xe4c4('0x32')][_0xe4c4('0x2d')]==='uniqueid'){_0x1940e3[_0xe4c4('0x50')]=_0x32a50e[_0xe4c4('0x45')]['id'];}else{_0x1940e3['id']=_0x32a50e[_0xe4c4('0x45')]['id'];}return db['ScreenRecording'][_0xe4c4('0x47')]({'where':_0x1940e3,'attributes':['id',_0xe4c4('0x51')],'raw':!![]})[_0xe4c4('0x26')](handleEntityNotFound(_0x3ddcbe,null))['then'](function(_0x45f959){if(_0x45f959){var _0x485c50=path[_0xe4c4('0x52')](config[_0xe4c4('0x53')],_0xe4c4('0x54'),_0x45f959['value']);var _0x479361=util[_0xe4c4('0x31')](_0xe4c4('0x55'),_0x485c50);if(fs[_0xe4c4('0x56')](_0x479361)){_0x1fe354=!![];return _0x1a96ba['decryptFile'](_0x479361,_0x485c50,config[_0xe4c4('0x57')]['recording'])['then'](function(){return _0x45f959;});}return _0x45f959;}})['then'](function(_0x4e08ec){if(_0x4e08ec){var _0x1ca931=path[_0xe4c4('0x52')](config[_0xe4c4('0x53')],_0xe4c4('0x54'),_0x4e08ec[_0xe4c4('0x51')]);if(!fs[_0xe4c4('0x56')](_0x1ca931)){throw new db['Sequelize'][(_0xe4c4('0x58'))](_0xe4c4('0x59'));}if(_0x4e08ec[_0xe4c4('0x5a')]){return _0x3ddcbe[_0xe4c4('0x4e')](_0x1ca931,_0x4e08ec[_0xe4c4('0x5a')]+path[_0xe4c4('0x5b')](_0x1ca931),function(){if(_0x1fe354){fs['unlink'](_0x1ca931);}});}else{return _0x3ddcbe['download'](_0x1ca931,function(_0x27599b){if(_0x1fe354){fs[_0xe4c4('0x5c')](_0x1ca931);}});}}})[_0xe4c4('0x44')](function(_0x3c8e44){if(_0x3c8e44[_0xe4c4('0x5d')]===_0xe4c4('0x59')){_0x3ddcbe[_0xe4c4('0x1a')](0x194)[_0xe4c4('0x5e')](_0xe4c4('0x5f'));}else{return handleError(_0x3ddcbe,null);}});};exports['destroy']=function(_0x59f033,_0x5a4138){return db['ScreenRecording'][_0xe4c4('0x47')]({'where':{'id':_0x59f033[_0xe4c4('0x45')]['id']}})[_0xe4c4('0x26')](function(_0x58f2dd){if(_[_0xe4c4('0x60')](_0x58f2dd)){throw new ReferenceError('Entity\x20not\x20found');}return _0x58f2dd;})[_0xe4c4('0x26')](function(_0x56ead3){var _0x5d6c0a=path[_0xe4c4('0x52')](config[_0xe4c4('0x53')],_0xe4c4('0x54'),_0x56ead3['value']);logger['info']('cancellazione\x20fisica\x20documento\x20%s',_0x5d6c0a);if(!_[_0xe4c4('0x60')](_0x56ead3[_0xe4c4('0x51')])&&fs['existsSync'](_0x5d6c0a)){logger[_0xe4c4('0x61')](_0xe4c4('0x62')+_0x5d6c0a+_0xe4c4('0x63'));fs['unlinkSync'](_0x5d6c0a);}_0x5d6c0a=_0x5d6c0a+'.cypher';if(!_[_0xe4c4('0x60')](_0x56ead3[_0xe4c4('0x51')])&&fs[_0xe4c4('0x56')](_0x5d6c0a)){logger[_0xe4c4('0x61')](_0xe4c4('0x62')+_0x5d6c0a+_0xe4c4('0x63'));fs['unlinkSync'](_0x5d6c0a);}return _0x56ead3;})[_0xe4c4('0x26')](function(_0x1bddd5){if(!_0x1bddd5)throw new InternalError();return _0x1bddd5[_0xe4c4('0x64')]();})['then'](function(){_0x5a4138[_0xe4c4('0x1a')](0xcc)[_0xe4c4('0x1b')]();})[_0xe4c4('0x44')](handleError(_0x5a4138,null));};
\ No newline at end of file
+var _0xee14=['path','sox','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','then','error','stack','name','send','map','rawAttributes','fieldName','type','key','model','differenceBy','format','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','ScreenRecording','includeAll','include','findAll','rows','catch','params','find','create','body','duration','describe','../../components/encryptor','uniqueid','value','server/files/screen_recordings','existsSync','decryptFile','secrets','recording','root','Sequelize','ValidationError','filename','download','unlink','ScreenRecording\x20not\x20found','isNil','Entity\x20not\x20found','join','info','cancellazione\x20fisica\x20documento\x20%s','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util'];(function(_0x44f496,_0x248e04){var _0x5b0cbc=function(_0x5b2dd0){while(--_0x5b2dd0){_0x44f496['push'](_0x44f496['shift']());}};_0x5b0cbc(++_0x248e04);}(_0xee14,0x13a));var _0x4ee1=function(_0x10801b,_0x33b017){_0x10801b=_0x10801b-0x0;var _0x3edea2=_0xee14[_0x10801b];return _0x3edea2;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x4ee1('0x0'));var jsonpatch=require(_0x4ee1('0x1'));var rp=require(_0x4ee1('0x2'));var moment=require(_0x4ee1('0x3'));var BPromise=require(_0x4ee1('0x4'));var Mustache=require(_0x4ee1('0x5'));var util=require(_0x4ee1('0x6'));var path=require(_0x4ee1('0x7'));var sox=require(_0x4ee1('0x8'));var csv=require('to-csv');var ejs=require(_0x4ee1('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x4ee1('0xa'));var squel=require(_0x4ee1('0xb'));var crypto=require(_0x4ee1('0xc'));var jsforce=require(_0x4ee1('0xd'));var deskjs=require(_0x4ee1('0xe'));var toCsv=require(_0x4ee1('0xf'));var querystring=require('querystring');var Papa=require(_0x4ee1('0x10'));var Redis=require(_0x4ee1('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x4ee1('0x12'));var as=require(_0x4ee1('0x13'));var hardwareService=require(_0x4ee1('0x14'));var logger=require(_0x4ee1('0x15'))('api');var utils=require(_0x4ee1('0x16'));var config=require(_0x4ee1('0x17'));var licenseUtil=require(_0x4ee1('0x18'));var db=require(_0x4ee1('0x19'))['db'];function respondWithStatusCode(_0x2f864e,_0x174427){_0x174427=_0x174427||0xcc;return function(_0x5616d6){if(_0x5616d6){return _0x2f864e[_0x4ee1('0x1a')](_0x174427);}return _0x2f864e[_0x4ee1('0x1b')](_0x174427)[_0x4ee1('0x1c')]();};}function respondWithResult(_0x24a915,_0x46d2c2){_0x46d2c2=_0x46d2c2||0xc8;return function(_0x1c342a){if(_0x1c342a){return _0x24a915[_0x4ee1('0x1b')](_0x46d2c2)[_0x4ee1('0x1d')](_0x1c342a);}};}function respondWithFilteredResult(_0xb7eafd,_0x4e3490){return function(_0x2f9194){if(_0x2f9194){var _0x38008f=typeof _0x4e3490[_0x4ee1('0x1e')]===_0x4ee1('0x1f')&&typeof _0x4e3490[_0x4ee1('0x20')]===_0x4ee1('0x1f');var _0x2eff91=_0x2f9194[_0x4ee1('0x21')];var _0x360056=_0x38008f?0x0:_0x4e3490[_0x4ee1('0x1e')];var _0x274de5=_0x38008f?_0x2f9194['count']:_0x4e3490[_0x4ee1('0x1e')]+_0x4e3490[_0x4ee1('0x20')];var _0x173388;if(_0x274de5>=_0x2eff91){_0x274de5=_0x2eff91;_0x173388=0xc8;}else{_0x173388=0xce;}_0xb7eafd[_0x4ee1('0x1b')](_0x173388);return _0xb7eafd[_0x4ee1('0x22')](_0x4ee1('0x23'),_0x360056+'-'+_0x274de5+'/'+_0x2eff91)['json'](_0x2f9194);}return null;};}function patchUpdates(_0x8a631f){return function(_0x333e96){try{jsonpatch[_0x4ee1('0x24')](_0x333e96,_0x8a631f,!![]);}catch(_0x3f0d59){return BPromise[_0x4ee1('0x25')](_0x3f0d59);}return _0x333e96[_0x4ee1('0x26')]();};}function saveUpdates(_0x328f21,_0x40fd98){return function(_0x1dc1a8){if(_0x1dc1a8){return _0x1dc1a8[_0x4ee1('0x27')](_0x328f21)['then'](function(_0x53d43f){return _0x53d43f;});}return null;};}function removeEntity(_0x14110c,_0x459e2e){return function(_0xaf87e7){if(_0xaf87e7){return _0xaf87e7[_0x4ee1('0x28')]()[_0x4ee1('0x29')](function(){_0x14110c[_0x4ee1('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5cc0b5,_0x442c71){return function(_0x28b7e1){if(!_0x28b7e1){_0x5cc0b5['sendStatus'](0x194);}return _0x28b7e1;};}function handleError(_0x35900d,_0x213db8){_0x213db8=_0x213db8||0x1f4;return function(_0x36654c){logger[_0x4ee1('0x2a')](_0x36654c[_0x4ee1('0x2b')]);if(_0x36654c[_0x4ee1('0x2c')]){delete _0x36654c[_0x4ee1('0x2c')];}_0x35900d['status'](_0x213db8)[_0x4ee1('0x2d')](_0x36654c);};}exports['index']=function(_0x4746c2,_0x4ec408){var _0x3dc870={},_0x1d91be={},_0x59a34e={'count':0x0,'rows':[]};var _0x13944c=_[_0x4ee1('0x2e')](db['ScreenRecording'][_0x4ee1('0x2f')],function(_0x5b3792){return{'name':_0x5b3792[_0x4ee1('0x30')],'type':_0x5b3792[_0x4ee1('0x31')][_0x4ee1('0x32')]};});_0x1d91be[_0x4ee1('0x33')]=_[_0x4ee1('0x34')](_['map'](_0x13944c,_0x4ee1('0x2c')),[_0x4ee1('0x35')]);_0x1d91be[_0x4ee1('0x36')]=_[_0x4ee1('0x37')](_0x4746c2[_0x4ee1('0x36')]);_0x1d91be[_0x4ee1('0x38')]=_['intersection'](_0x1d91be['model'],_0x1d91be[_0x4ee1('0x36')]);_0x3dc870[_0x4ee1('0x39')]=_[_0x4ee1('0x3a')](_0x1d91be['model'],qs[_0x4ee1('0x3b')](_0x4746c2[_0x4ee1('0x36')][_0x4ee1('0x3b')]));_0x3dc870[_0x4ee1('0x39')]=_0x3dc870[_0x4ee1('0x39')][_0x4ee1('0x3c')]?_0x3dc870[_0x4ee1('0x39')]:_0x1d91be[_0x4ee1('0x33')];if(!_0x4746c2[_0x4ee1('0x36')][_0x4ee1('0x3d')](_0x4ee1('0x3e'))){_0x3dc870[_0x4ee1('0x20')]=qs[_0x4ee1('0x20')](_0x4746c2['query'][_0x4ee1('0x20')]);_0x3dc870[_0x4ee1('0x1e')]=qs[_0x4ee1('0x1e')](_0x4746c2['query']['offset']);}_0x3dc870[_0x4ee1('0x3f')]=qs[_0x4ee1('0x40')](_0x4746c2[_0x4ee1('0x36')][_0x4ee1('0x40')]);_0x3dc870['where']=qs[_0x4ee1('0x38')](_[_0x4ee1('0x41')](_0x4746c2[_0x4ee1('0x36')],_0x1d91be[_0x4ee1('0x38')]),_0x13944c);if(_0x4746c2[_0x4ee1('0x36')][_0x4ee1('0x42')]){_0x3dc870[_0x4ee1('0x43')]=_[_0x4ee1('0x44')](_0x3dc870['where'],{'$or':_[_0x4ee1('0x2e')](_0x13944c,function(_0x1116b4){if(_0x1116b4[_0x4ee1('0x31')]!==_0x4ee1('0x45')){var _0x45bb22={};_0x45bb22[_0x1116b4[_0x4ee1('0x2c')]]={'$like':'%'+_0x4746c2['query'][_0x4ee1('0x42')]+'%'};return _0x45bb22;}})});}_0x3dc870=_[_0x4ee1('0x44')]({},_0x3dc870,_0x4746c2[_0x4ee1('0x46')]);var _0x333690={'where':_0x3dc870[_0x4ee1('0x43')]};return db[_0x4ee1('0x47')][_0x4ee1('0x21')](_0x333690)[_0x4ee1('0x29')](function(_0x23bb5f){_0x59a34e[_0x4ee1('0x21')]=_0x23bb5f;if(_0x4746c2[_0x4ee1('0x36')][_0x4ee1('0x48')]){_0x3dc870[_0x4ee1('0x49')]=[{'all':!![]}];}return db['ScreenRecording'][_0x4ee1('0x4a')](_0x3dc870);})[_0x4ee1('0x29')](function(_0x5ee7b4){_0x59a34e[_0x4ee1('0x4b')]=_0x5ee7b4;return _0x59a34e;})['then'](respondWithFilteredResult(_0x4ec408,_0x3dc870))[_0x4ee1('0x4c')](handleError(_0x4ec408,null));};exports['show']=function(_0x14c333,_0xc7580c){var _0x557126={'raw':![],'where':{'id':_0x14c333[_0x4ee1('0x4d')]['id']}},_0x25d683={};_0x25d683[_0x4ee1('0x33')]=_[_0x4ee1('0x37')](db['ScreenRecording'][_0x4ee1('0x2f')]);_0x25d683[_0x4ee1('0x36')]=_[_0x4ee1('0x37')](_0x14c333['query']);_0x25d683['filters']=_[_0x4ee1('0x3a')](_0x25d683[_0x4ee1('0x33')],_0x25d683[_0x4ee1('0x36')]);_0x557126[_0x4ee1('0x39')]=_[_0x4ee1('0x3a')](_0x25d683['model'],qs['fields'](_0x14c333[_0x4ee1('0x36')][_0x4ee1('0x3b')]));_0x557126[_0x4ee1('0x39')]=_0x557126[_0x4ee1('0x39')]['length']?_0x557126[_0x4ee1('0x39')]:_0x25d683[_0x4ee1('0x33')];if(_0x14c333['query'][_0x4ee1('0x48')]){_0x557126[_0x4ee1('0x49')]=[{'all':!![]}];}_0x557126=_[_0x4ee1('0x44')]({},_0x557126,_0x14c333[_0x4ee1('0x46')]);return db[_0x4ee1('0x47')][_0x4ee1('0x4e')](_0x557126)[_0x4ee1('0x29')](handleEntityNotFound(_0xc7580c,null))[_0x4ee1('0x29')](respondWithResult(_0xc7580c,null))[_0x4ee1('0x4c')](handleError(_0xc7580c,null));};exports['create']=function(_0x49b667,_0x1a972b){return db[_0x4ee1('0x47')][_0x4ee1('0x4f')](_0x49b667[_0x4ee1('0x50')],{})['then'](respondWithResult(_0x1a972b,0xc9))[_0x4ee1('0x4c')](handleError(_0x1a972b,null));};exports[_0x4ee1('0x27')]=function(_0x42dd8d,_0x2bc77f){if(_0x42dd8d[_0x4ee1('0x50')]['id']){delete _0x42dd8d['body']['id'];}delete _0x42dd8d[_0x4ee1('0x50')][_0x4ee1('0x51')];delete _0x42dd8d[_0x4ee1('0x50')]['createdAt'];delete _0x42dd8d[_0x4ee1('0x50')]['closedAt'];delete _0x42dd8d[_0x4ee1('0x50')]['value'];return db[_0x4ee1('0x47')]['find']({'where':{'id':_0x42dd8d[_0x4ee1('0x4d')]['id']}})['then'](handleEntityNotFound(_0x2bc77f,null))[_0x4ee1('0x29')](saveUpdates(_0x42dd8d[_0x4ee1('0x50')],null))[_0x4ee1('0x29')](respondWithResult(_0x2bc77f,null))['catch'](handleError(_0x2bc77f,null));};exports[_0x4ee1('0x52')]=function(_0x4118d7,_0xcdb873){return db[_0x4ee1('0x47')][_0x4ee1('0x52')]()[_0x4ee1('0x29')](respondWithResult(_0xcdb873,null))[_0x4ee1('0x4c')](handleError(_0xcdb873,null));};exports['download']=function(_0x4c4178,_0x1feb78,_0xcddc5d){var _0xf58cd8=require(_0x4ee1('0x53'));var _0x44e65f=![];var _0x31e82d={};if(_0x4c4178[_0x4ee1('0x36')][_0x4ee1('0x31')]&&_0x4c4178[_0x4ee1('0x36')][_0x4ee1('0x31')]===_0x4ee1('0x54')){_0x31e82d[_0x4ee1('0x54')]=_0x4c4178[_0x4ee1('0x4d')]['id'];}else{_0x31e82d['id']=_0x4c4178['params']['id'];}return db[_0x4ee1('0x47')]['find']({'where':_0x31e82d,'attributes':['id',_0x4ee1('0x55')],'raw':!![]})[_0x4ee1('0x29')](handleEntityNotFound(_0x1feb78,null))['then'](function(_0x1e0aac){if(_0x1e0aac){var _0x184e36=path['join'](config['root'],_0x4ee1('0x56'),_0x1e0aac['value']);var _0x1ce99e=util[_0x4ee1('0x35')]('%s.cypher',_0x184e36);if(fs[_0x4ee1('0x57')](_0x1ce99e)){_0x44e65f=!![];return _0xf58cd8[_0x4ee1('0x58')](_0x1ce99e,_0x184e36,config[_0x4ee1('0x59')][_0x4ee1('0x5a')])[_0x4ee1('0x29')](function(){return _0x1e0aac;});}return _0x1e0aac;}})[_0x4ee1('0x29')](function(_0x11f619){if(_0x11f619){var _0x5f5694=path['join'](config[_0x4ee1('0x5b')],_0x4ee1('0x56'),_0x11f619['value']);if(!fs[_0x4ee1('0x57')](_0x5f5694)){throw new db[(_0x4ee1('0x5c'))][(_0x4ee1('0x5d'))]('ScreenRecording\x20not\x20found');}if(_0x11f619[_0x4ee1('0x5e')]){return _0x1feb78['download'](_0x5f5694,_0x11f619[_0x4ee1('0x5e')]+path['extname'](_0x5f5694),function(){if(_0x44e65f){fs['unlink'](_0x5f5694);}});}else{return _0x1feb78[_0x4ee1('0x5f')](_0x5f5694,function(_0x16fcd0){if(_0x44e65f){fs[_0x4ee1('0x60')](_0x5f5694);}});}}})[_0x4ee1('0x4c')](function(_0x38e889){if(_0x38e889['message']===_0x4ee1('0x61')){_0x1feb78[_0x4ee1('0x1b')](0x194)[_0x4ee1('0x2d')]('Not\x20found');}else{return handleError(_0x1feb78,null);}});};exports[_0x4ee1('0x28')]=function(_0x109dc6,_0x3fdd61){return db[_0x4ee1('0x47')][_0x4ee1('0x4e')]({'where':{'id':_0x109dc6[_0x4ee1('0x4d')]['id']}})[_0x4ee1('0x29')](function(_0x20ca0b){if(_[_0x4ee1('0x62')](_0x20ca0b)){throw new ReferenceError(_0x4ee1('0x63'));}return _0x20ca0b;})[_0x4ee1('0x29')](function(_0x38e86f){var _0x5d396c=path[_0x4ee1('0x64')](config['root'],_0x4ee1('0x56'),_0x38e86f['value']);logger[_0x4ee1('0x65')](_0x4ee1('0x66'),_0x5d396c);if(!_[_0x4ee1('0x62')](_0x38e86f[_0x4ee1('0x55')])&&fs[_0x4ee1('0x57')](_0x5d396c)){logger[_0x4ee1('0x65')](_0x4ee1('0x67')+_0x5d396c+_0x4ee1('0x68'));fs[_0x4ee1('0x69')](_0x5d396c);}_0x5d396c=_0x5d396c+_0x4ee1('0x6a');if(!_[_0x4ee1('0x62')](_0x38e86f[_0x4ee1('0x55')])&&fs['existsSync'](_0x5d396c)){logger[_0x4ee1('0x65')](_0x4ee1('0x67')+_0x5d396c+_0x4ee1('0x68'));fs['unlinkSync'](_0x5d396c);}return _0x38e86f;})['then'](function(_0x40dac3){if(!_0x40dac3)throw new InternalError();return _0x40dac3[_0x4ee1('0x28')]();})['then'](function(){_0x3fdd61[_0x4ee1('0x1b')](0xcc)[_0x4ee1('0x1c')]();})[_0x4ee1('0x4c')](handleError(_0x3fdd61,null));};
\ No newline at end of file
index dba84b9..a5ee06c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x22a4=['define','ScreenRecording','screen_recordings','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./screenRecording.attributes','exports'];(function(_0x5c9f5b,_0x4cb637){var _0x5f31cb=function(_0x343a18){while(--_0x343a18){_0x5c9f5b['push'](_0x5c9f5b['shift']());}};_0x5f31cb(++_0x4cb637);}(_0x22a4,0x10d));var _0x422a=function(_0x444779,_0x3fc36a){_0x444779=_0x444779-0x0;var _0xdaa3bc=_0x22a4[_0x444779];return _0xdaa3bc;};'use strict';var _=require(_0x422a('0x0'));var util=require(_0x422a('0x1'));var logger=require(_0x422a('0x2'))(_0x422a('0x3'));var moment=require(_0x422a('0x4'));var BPromise=require(_0x422a('0x5'));var rp=require(_0x422a('0x6'));var fs=require('fs');var path=require(_0x422a('0x7'));var rimraf=require(_0x422a('0x8'));var config=require('../../config/environment');var attributes=require(_0x422a('0x9'));module[_0x422a('0xa')]=function(_0x3f04f8,_0x17053d){return _0x3f04f8[_0x422a('0xb')](_0x422a('0xc'),attributes,{'tableName':_0x422a('0xd'),'paranoid':![],'indexes':[{'name':'interactionid','fields':['interactionid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xa24f=['api','bluebird','path','rimraf','./screenRecording.attributes','define','ScreenRecording','screen_recordings','interactionid','lodash'];(function(_0x58afd5,_0x534a48){var _0x3e503b=function(_0x27ba44){while(--_0x27ba44){_0x58afd5['push'](_0x58afd5['shift']());}};_0x3e503b(++_0x534a48);}(_0xa24f,0x8b));var _0xfa24=function(_0x4ee9cd,_0xd375b0){_0x4ee9cd=_0x4ee9cd-0x0;var _0x328a5b=_0xa24f[_0x4ee9cd];return _0x328a5b;};'use strict';var _=require(_0xfa24('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xfa24('0x1'));var moment=require('moment');var BPromise=require(_0xfa24('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xfa24('0x3'));var rimraf=require(_0xfa24('0x4'));var config=require('../../config/environment');var attributes=require(_0xfa24('0x5'));module['exports']=function(_0x5979cf,_0x5e3a41){return _0x5979cf[_0xfa24('0x6')](_0xfa24('0x7'),attributes,{'tableName':_0xfa24('0x8'),'paranoid':![],'indexes':[{'name':_0xfa24('0x9'),'fields':['interactionid']}],'timestamps':!![]});};
\ No newline at end of file
index e45b578..a2c9331 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcbfb=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','ScreenRecording,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','lodash','util','moment','bluebird','randomstring','ioredis'];(function(_0x12c4dc,_0x3f5464){var _0x1de008=function(_0x17513c){while(--_0x17513c){_0x12c4dc['push'](_0x12c4dc['shift']());}};_0x1de008(++_0x3f5464);}(_0xcbfb,0xb2));var _0xbcbf=function(_0x35cadb,_0x4b9d2a){_0x35cadb=_0x35cadb-0x0;var _0x1b516e=_0xcbfb[_0x35cadb];return _0x1b516e;};'use strict';var _=require(_0xbcbf('0x0'));var util=require(_0xbcbf('0x1'));var moment=require(_0xbcbf('0x2'));var BPromise=require(_0xbcbf('0x3'));var rs=require(_0xbcbf('0x4'));var fs=require('fs');var Redis=require(_0xbcbf('0x5'));var db=require(_0xbcbf('0x6'))['db'];var utils=require(_0xbcbf('0x7'));var logger=require(_0xbcbf('0x8'))(_0xbcbf('0x9'));var config=require(_0xbcbf('0xa'));var jayson=require('jayson/promise');var client=jayson[_0xbcbf('0xb')][_0xbcbf('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x21bb1e,_0x2353f7,_0xf7958e){return new BPromise(function(_0x4ecb03,_0x305271){return client[_0xbcbf('0xd')](_0x21bb1e,_0xf7958e)[_0xbcbf('0xe')](function(_0x381b21){logger['info'](_0xbcbf('0xf'),_0x2353f7,_0xbcbf('0x10'));logger['debug']('ScreenRecording,\x20%s,\x20%s,\x20%s',_0x2353f7,_0xbcbf('0x10'),JSON[_0xbcbf('0x11')](_0x381b21));if(_0x381b21[_0xbcbf('0x12')]){if(_0x381b21[_0xbcbf('0x12')][_0xbcbf('0x13')]===0x1f4){logger[_0xbcbf('0x12')](_0xbcbf('0xf'),_0x2353f7,_0x381b21[_0xbcbf('0x12')]['message']);return _0x305271(_0x381b21[_0xbcbf('0x12')][_0xbcbf('0x14')]);}logger[_0xbcbf('0x12')](_0xbcbf('0xf'),_0x2353f7,_0x381b21['error'][_0xbcbf('0x14')]);return _0x4ecb03(_0x381b21[_0xbcbf('0x12')][_0xbcbf('0x14')]);}else{logger[_0xbcbf('0x15')](_0xbcbf('0xf'),_0x2353f7,'request\x20sent');_0x4ecb03(_0x381b21[_0xbcbf('0x16')][_0xbcbf('0x14')]);}})['catch'](function(_0x2c7a73){logger[_0xbcbf('0x12')]('ScreenRecording,\x20%s,\x20%s',_0x2353f7,_0x2c7a73);_0x305271(_0x2c7a73);});});}
\ No newline at end of file
+var _0x2e5a=['../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','ScreenRecording,\x20%s,\x20%s','request\x20sent','debug','ScreenRecording,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','util','moment','randomstring','ioredis','../../mysqldb'];(function(_0x489842,_0xb32725){var _0x447aa4=function(_0x27d45c){while(--_0x27d45c){_0x489842['push'](_0x489842['shift']());}};_0x447aa4(++_0xb32725);}(_0x2e5a,0x1c7));var _0xa2e5=function(_0x4b05df,_0x5c8a35){_0x4b05df=_0x4b05df-0x0;var _0x3fc2eb=_0x2e5a[_0x4b05df];return _0x3fc2eb;};'use strict';var _=require('lodash');var util=require(_0xa2e5('0x0'));var moment=require(_0xa2e5('0x1'));var BPromise=require('bluebird');var rs=require(_0xa2e5('0x2'));var fs=require('fs');var Redis=require(_0xa2e5('0x3'));var db=require(_0xa2e5('0x4'))['db'];var utils=require(_0xa2e5('0x5'));var logger=require('../../config/logger')(_0xa2e5('0x6'));var config=require(_0xa2e5('0x7'));var jayson=require(_0xa2e5('0x8'));var client=jayson[_0xa2e5('0x9')][_0xa2e5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x431a29,_0x154ee9,_0x394640){return new BPromise(function(_0x5e9817,_0xbfadf0){return client[_0xa2e5('0xb')](_0x431a29,_0x394640)[_0xa2e5('0xc')](function(_0x115e2c){logger[_0xa2e5('0xd')](_0xa2e5('0xe'),_0x154ee9,_0xa2e5('0xf'));logger[_0xa2e5('0x10')](_0xa2e5('0x11'),_0x154ee9,_0xa2e5('0xf'),JSON[_0xa2e5('0x12')](_0x115e2c));if(_0x115e2c[_0xa2e5('0x13')]){if(_0x115e2c[_0xa2e5('0x13')][_0xa2e5('0x14')]===0x1f4){logger[_0xa2e5('0x13')](_0xa2e5('0xe'),_0x154ee9,_0x115e2c[_0xa2e5('0x13')][_0xa2e5('0x15')]);return _0xbfadf0(_0x115e2c[_0xa2e5('0x13')][_0xa2e5('0x15')]);}logger[_0xa2e5('0x13')](_0xa2e5('0xe'),_0x154ee9,_0x115e2c[_0xa2e5('0x13')][_0xa2e5('0x15')]);return _0x5e9817(_0x115e2c[_0xa2e5('0x13')][_0xa2e5('0x15')]);}else{logger['info'](_0xa2e5('0xe'),_0x154ee9,_0xa2e5('0xf'));_0x5e9817(_0x115e2c[_0xa2e5('0x16')][_0xa2e5('0x15')]);}})['catch'](function(_0x39dac0){logger[_0xa2e5('0x13')]('ScreenRecording,\x20%s,\x20%s',_0x154ee9,_0x39dac0);_0xbfadf0(_0x39dac0);});});}
\ No newline at end of file
index d7f5e3f..0a847e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xce36=['getPreferred','/:id/favicon','getFavicon','diskStorage','join','server/files/images/logos/','format','logo','post','single','file','addLogo','root','%s%s','logologin','extname','originalname','addLogoLogin','preferred','favicon','addFavicon','put','exports','multer','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./setting.controller','get','index','/now','getDate','/:id','/:id/logo','getLogo','/:id/logo_login','getLogoLogin','/:id/preferred'];(function(_0x4cf98e,_0xba4b79){var _0x1623ac=function(_0x459bc0){while(--_0x459bc0){_0x4cf98e['push'](_0x4cf98e['shift']());}};_0x1623ac(++_0xba4b79);}(_0xce36,0xe4));var _0x6ce3=function(_0x214a25,_0x15071d){_0x214a25=_0x214a25-0x0;var _0x405988=_0xce36[_0x214a25];return _0x405988;};'use strict';var multer=require(_0x6ce3('0x0'));var util=require(_0x6ce3('0x1'));var path=require('path');var timeout=require(_0x6ce3('0x2'));var express=require('express');var router=express[_0x6ce3('0x3')]();var fs_extra=require(_0x6ce3('0x4'));var auth=require(_0x6ce3('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x6ce3('0x6'));var controller=require(_0x6ce3('0x7'));router[_0x6ce3('0x8')]('/',auth['isAuthenticated'](),controller[_0x6ce3('0x9')]);router['get'](_0x6ce3('0xa'),controller[_0x6ce3('0xb')]);router[_0x6ce3('0x8')](_0x6ce3('0xc'),controller['show']);router[_0x6ce3('0x8')](_0x6ce3('0xd'),controller[_0x6ce3('0xe')]);router[_0x6ce3('0x8')](_0x6ce3('0xf'),controller[_0x6ce3('0x10')]);router[_0x6ce3('0x8')]('/:id/gdpr',controller['gdpr']);router[_0x6ce3('0x8')](_0x6ce3('0x11'),controller[_0x6ce3('0x12')]);router[_0x6ce3('0x8')](_0x6ce3('0x13'),controller[_0x6ce3('0x14')]);var upload=multer({'storage':multer[_0x6ce3('0x15')]({'destination':function(_0xa351ce,_0x205e91,_0x588506){_0x588506(null,path[_0x6ce3('0x16')](config['root'],_0x6ce3('0x17')));},'filename':function(_0xb6805b,_0x1ee37f,_0x12e311){_0x12e311(null,util[_0x6ce3('0x18')]('%s%s',_0x6ce3('0x19'),path['extname'](_0x1ee37f['originalname'])));}})});router[_0x6ce3('0x1a')](_0x6ce3('0xd'),upload[_0x6ce3('0x1b')](_0x6ce3('0x1c')),controller[_0x6ce3('0x1d')]);var upload=multer({'storage':multer[_0x6ce3('0x15')]({'destination':function(_0x4b08e6,_0x26eddd,_0x37e90a){_0x37e90a(null,path[_0x6ce3('0x16')](config[_0x6ce3('0x1e')],_0x6ce3('0x17')));},'filename':function(_0xb7d89c,_0x5eb0a6,_0x3c9508){_0x3c9508(null,util[_0x6ce3('0x18')](_0x6ce3('0x1f'),_0x6ce3('0x20'),path[_0x6ce3('0x21')](_0x5eb0a6[_0x6ce3('0x22')])));}})});router[_0x6ce3('0x1a')]('/:id/logo_login',upload[_0x6ce3('0x1b')](_0x6ce3('0x1c')),controller[_0x6ce3('0x23')]);var upload=multer({'storage':multer[_0x6ce3('0x15')]({'destination':function(_0x442839,_0x4e6c09,_0x12bc91){_0x12bc91(null,path[_0x6ce3('0x16')](config['root'],_0x6ce3('0x17')));},'filename':function(_0xde2e87,_0x5c5de5,_0x15e045){_0x15e045(null,util['format'](_0x6ce3('0x1f'),_0x6ce3('0x24'),path[_0x6ce3('0x21')](_0x5c5de5[_0x6ce3('0x22')])));}})});router[_0x6ce3('0x1a')]('/:id/preferred',upload[_0x6ce3('0x1b')](_0x6ce3('0x1c')),controller['addPreferred']);var upload=multer({'storage':multer[_0x6ce3('0x15')]({'destination':function(_0x43ac9a,_0x30a1e9,_0x457d32){_0x457d32(null,path[_0x6ce3('0x16')](config[_0x6ce3('0x1e')],_0x6ce3('0x17')));},'filename':function(_0x25b68c,_0x515661,_0x59fd78){_0x59fd78(null,util['format'](_0x6ce3('0x1f'),_0x6ce3('0x25'),path['extname'](_0x515661['originalname'])));}})});router[_0x6ce3('0x1a')](_0x6ce3('0x13'),upload[_0x6ce3('0x1b')](_0x6ce3('0x1c')),controller[_0x6ce3('0x26')]);router[_0x6ce3('0x27')](_0x6ce3('0xc'),auth['isAuthenticated'](),controller['update']);module[_0x6ce3('0x28')]=router;
\ No newline at end of file
+var _0xf2ca=['file','logologin','extname','addLogoLogin','preferred','addPreferred','favicon','single','addFavicon','put','exports','util','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','./setting.controller','isAuthenticated','index','get','/now','getDate','/:id','show','/:id/logo','getLogo','/:id/logo_login','gdpr','/:id/preferred','getPreferred','/:id/favicon','getFavicon','diskStorage','join','root','server/files/images/logos/','format','%s%s','logo','originalname','post'];(function(_0xce5890,_0x2789d9){var _0xf1a012=function(_0x111cfc){while(--_0x111cfc){_0xce5890['push'](_0xce5890['shift']());}};_0xf1a012(++_0x2789d9);}(_0xf2ca,0x163));var _0xaf2c=function(_0x322522,_0x4db288){_0x322522=_0x322522-0x0;var _0x293bcf=_0xf2ca[_0x322522];return _0x293bcf;};'use strict';var multer=require('multer');var util=require(_0xaf2c('0x0'));var path=require(_0xaf2c('0x1'));var timeout=require('connect-timeout');var express=require(_0xaf2c('0x2'));var router=express[_0xaf2c('0x3')]();var fs_extra=require(_0xaf2c('0x4'));var auth=require(_0xaf2c('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xaf2c('0x6'));var controller=require(_0xaf2c('0x7'));router['get']('/',auth[_0xaf2c('0x8')](),controller[_0xaf2c('0x9')]);router[_0xaf2c('0xa')](_0xaf2c('0xb'),controller[_0xaf2c('0xc')]);router[_0xaf2c('0xa')](_0xaf2c('0xd'),controller[_0xaf2c('0xe')]);router['get'](_0xaf2c('0xf'),controller[_0xaf2c('0x10')]);router[_0xaf2c('0xa')](_0xaf2c('0x11'),controller['getLogoLogin']);router[_0xaf2c('0xa')]('/:id/gdpr',controller[_0xaf2c('0x12')]);router[_0xaf2c('0xa')](_0xaf2c('0x13'),controller[_0xaf2c('0x14')]);router['get'](_0xaf2c('0x15'),controller[_0xaf2c('0x16')]);var upload=multer({'storage':multer[_0xaf2c('0x17')]({'destination':function(_0xe32680,_0x4fd477,_0xd74ace){_0xd74ace(null,path[_0xaf2c('0x18')](config[_0xaf2c('0x19')],_0xaf2c('0x1a')));},'filename':function(_0x2e97ce,_0x22390a,_0x4cea94){_0x4cea94(null,util[_0xaf2c('0x1b')](_0xaf2c('0x1c'),_0xaf2c('0x1d'),path['extname'](_0x22390a[_0xaf2c('0x1e')])));}})});router[_0xaf2c('0x1f')](_0xaf2c('0xf'),upload['single'](_0xaf2c('0x20')),controller['addLogo']);var upload=multer({'storage':multer[_0xaf2c('0x17')]({'destination':function(_0xc479c4,_0x4b9ee2,_0x4ac3f5){_0x4ac3f5(null,path['join'](config[_0xaf2c('0x19')],_0xaf2c('0x1a')));},'filename':function(_0x4905c2,_0x32828a,_0x1bbf63){_0x1bbf63(null,util[_0xaf2c('0x1b')]('%s%s',_0xaf2c('0x21'),path[_0xaf2c('0x22')](_0x32828a[_0xaf2c('0x1e')])));}})});router[_0xaf2c('0x1f')]('/:id/logo_login',upload['single'](_0xaf2c('0x20')),controller[_0xaf2c('0x23')]);var upload=multer({'storage':multer[_0xaf2c('0x17')]({'destination':function(_0x501b59,_0x160c9d,_0x1ecb32){_0x1ecb32(null,path[_0xaf2c('0x18')](config[_0xaf2c('0x19')],'server/files/images/logos/'));},'filename':function(_0x28bb2e,_0x3fc941,_0x1442c1){_0x1442c1(null,util['format'](_0xaf2c('0x1c'),_0xaf2c('0x24'),path[_0xaf2c('0x22')](_0x3fc941[_0xaf2c('0x1e')])));}})});router[_0xaf2c('0x1f')](_0xaf2c('0x13'),upload['single'](_0xaf2c('0x20')),controller[_0xaf2c('0x25')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x41026f,_0x40aafb,_0x1399e6){_0x1399e6(null,path['join'](config['root'],_0xaf2c('0x1a')));},'filename':function(_0x2654dd,_0x29a683,_0x14d8dd){_0x14d8dd(null,util[_0xaf2c('0x1b')](_0xaf2c('0x1c'),_0xaf2c('0x26'),path[_0xaf2c('0x22')](_0x29a683[_0xaf2c('0x1e')])));}})});router['post'](_0xaf2c('0x15'),upload[_0xaf2c('0x27')](_0xaf2c('0x20')),controller[_0xaf2c('0x28')]);router[_0xaf2c('0x29')](_0xaf2c('0xd'),auth['isAuthenticated'](),controller['update']);module[_0xaf2c('0x2a')]=router;
\ No newline at end of file
index 4a8933b..7696908 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ef3=['min_mailbox','STRING','/var/opt/motion2/server/files/sounds/converted','BOOLEAN','https://www.xcally.com/bar/phonebar/autoupdater.xml','UNSIGNED','sequelize','exports','INTEGER','min_internal'];(function(_0x2ba2b3,_0x3439ee){var _0x1c9fb1=function(_0x1e9ea3){while(--_0x1e9ea3){_0x2ba2b3['push'](_0x2ba2b3['shift']());}};_0x1c9fb1(++_0x3439ee);}(_0x2ef3,0xba));var _0x32ef=function(_0x4b80d3,_0x3207db){_0x4b80d3=_0x4b80d3-0x0;var _0x355110=_0x2ef3[_0x4b80d3];return _0x355110;};'use strict';var Sequelize=require(_0x32ef('0x0'));module[_0x32ef('0x1')]={'min_internal':{'type':Sequelize[_0x32ef('0x2')](0xb),'unique':_0x32ef('0x3'),'defaultValue':0x3e8},'min_mailbox':{'type':Sequelize[_0x32ef('0x2')](0xb),'unique':_0x32ef('0x4'),'defaultValue':0x3e8},'agi_port':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x11dd},'soundPath':{'type':Sequelize[_0x32ef('0x5')],'defaultValue':_0x32ef('0x6')},'logo':{'type':Sequelize['STRING']},'defaultLogo':{'type':Sequelize[_0x32ef('0x7')],'defaultValue':!![]},'loginLogo':{'type':Sequelize[_0x32ef('0x5')]},'defaultLoginLogo':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'headerWhiteLabel':{'type':Sequelize['STRING']},'defaultHeaderWhiteLabel':{'type':Sequelize[_0x32ef('0x7')],'defaultValue':!![]},'securePassword':{'type':Sequelize[_0x32ef('0x7')],'defaultValue':!![]},'firstSetup':{'type':Sequelize[_0x32ef('0x7')],'defaultValue':!![]},'stunaddr':{'type':Sequelize[_0x32ef('0x5')]},'turnaddr':{'type':Sequelize[_0x32ef('0x5')]},'turnusername':{'type':Sequelize[_0x32ef('0x5')]},'turnpassword':{'type':Sequelize[_0x32ef('0x5')]},'pageTitle':{'type':Sequelize[_0x32ef('0x5')]},'defaultPageTitle':{'type':Sequelize[_0x32ef('0x7')],'defaultValue':!![]},'callRecordingEncryption':{'type':Sequelize[_0x32ef('0x7')],'defaultValue':![]},'passwordExpiresDays':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x5a},'phoneBarAutoUpdater':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'phoneBarAutoUpdaterUrl':{'type':Sequelize[_0x32ef('0x5')],'defaultValue':_0x32ef('0x8')},'enableEmailPreview':{'type':Sequelize[_0x32ef('0x7')],'defaultValue':![]},'split':{'type':Sequelize[_0x32ef('0x7')],'defaultValue':!![]},'splitSizeCsv':{'type':Sequelize['INTEGER'],'defaultValue':0x1388},'splitSizePdf':{'type':Sequelize[_0x32ef('0x2')],'defaultValue':0x1388},'splitSizeXlsx':{'type':Sequelize['INTEGER'],'defaultValue':0x1388},'messagesAlignment':{'type':Sequelize[_0x32ef('0x5')],'defaultValue':'alternate'},'chatTimeout':{'type':Sequelize[_0x32ef('0x2')],'defaultValue':0x1e},'phoneBarRememberMeEnabled':{'type':Sequelize[_0x32ef('0x7')],'defaultValue':!![]},'preferred':{'type':Sequelize['STRING']},'defaultPreferred':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'rtlSupport':{'type':Sequelize[_0x32ef('0x7')],'defaultValue':![]},'defaultScreenRecordingPath':{'type':Sequelize['STRING']},'allowedLoginAttempts':{'type':Sequelize[_0x32ef('0x2')],'defaultValue':0x5},'blockDuration':{'type':Sequelize[_0x32ef('0x2')],'defaultValue':0xa},'favicon':{'type':Sequelize[_0x32ef('0x5')]},'defaultFavicon':{'type':Sequelize[_0x32ef('0x7')],'defaultValue':!![]},'loginMailFrequency':{'type':Sequelize['INTEGER'],'defaultValue':0xa,'validate':{'min':0xa}},'transcribe':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'automaticTranscribe':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'transcribeAccountId':{'type':Sequelize[_0x32ef('0x2')]},'transcribeRegion':{'type':Sequelize[_0x32ef('0x5')]},'sentiment':{'type':Sequelize[_0x32ef('0x7')],'defaultValue':![]},'automaticSentiment':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'sentimentAccountId':{'type':Sequelize['INTEGER']},'sentimentRegion':{'type':Sequelize[_0x32ef('0x5')]},'language':{'type':Sequelize[_0x32ef('0x5')]},'bucket':{'type':Sequelize[_0x32ef('0x5')]},'googleSsoEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enforcePasswordHistory':{'type':Sequelize[_0x32ef('0x7')],'defaultValue':!![]},'passwordHistoryLimit':{'type':Sequelize[_0x32ef('0x2')](0x2)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5}},'privacyPolicyEmail':{'type':Sequelize[_0x32ef('0x2')](0x2)[_0x32ef('0x9')],'defaultValue':0x0},'privacyPolicyName':{'type':Sequelize[_0x32ef('0x2')](0x2)[_0x32ef('0x9')],'defaultValue':0x0},'privacyPolicyNumber':{'type':Sequelize[_0x32ef('0x2')](0x2)[_0x32ef('0x9')],'defaultValue':0x0},'searchOnEnterKey':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'chatInteractionsReloadTimeout':{'type':Sequelize[_0x32ef('0x2')],'defaultValue':0x0},'mailInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'openchannelInteractionsReloadTimeout':{'type':Sequelize[_0x32ef('0x2')],'defaultValue':0x0},'smsInteractionsReloadTimeout':{'type':Sequelize[_0x32ef('0x2')],'defaultValue':0x0},'whatsappInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'stopRecordingOnTransfer':{'type':Sequelize[_0x32ef('0x7')],'defaultValue':![]}};
\ No newline at end of file
+var _0x5ea3=['min_internal','min_mailbox','STRING','/var/opt/motion2/server/files/sounds/converted','BOOLEAN','https://www.xcally.com/bar/phonebar/autoupdater.xml','alternate','UNSIGNED','sequelize','exports','INTEGER'];(function(_0x4bf96c,_0x4d24fd){var _0x281d09=function(_0x56538e){while(--_0x56538e){_0x4bf96c['push'](_0x4bf96c['shift']());}};_0x281d09(++_0x4d24fd);}(_0x5ea3,0xe4));var _0x35ea=function(_0x566493,_0x1f2f17){_0x566493=_0x566493-0x0;var _0x2be8c0=_0x5ea3[_0x566493];return _0x2be8c0;};'use strict';var Sequelize=require(_0x35ea('0x0'));module[_0x35ea('0x1')]={'min_internal':{'type':Sequelize[_0x35ea('0x2')](0xb),'unique':_0x35ea('0x3'),'defaultValue':0x3e8},'min_mailbox':{'type':Sequelize[_0x35ea('0x2')](0xb),'unique':_0x35ea('0x4'),'defaultValue':0x3e8},'agi_port':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x11dd},'soundPath':{'type':Sequelize[_0x35ea('0x5')],'defaultValue':_0x35ea('0x6')},'logo':{'type':Sequelize[_0x35ea('0x5')]},'defaultLogo':{'type':Sequelize[_0x35ea('0x7')],'defaultValue':!![]},'loginLogo':{'type':Sequelize[_0x35ea('0x5')]},'defaultLoginLogo':{'type':Sequelize[_0x35ea('0x7')],'defaultValue':!![]},'headerWhiteLabel':{'type':Sequelize[_0x35ea('0x5')]},'defaultHeaderWhiteLabel':{'type':Sequelize[_0x35ea('0x7')],'defaultValue':!![]},'securePassword':{'type':Sequelize[_0x35ea('0x7')],'defaultValue':!![]},'firstSetup':{'type':Sequelize[_0x35ea('0x7')],'defaultValue':!![]},'stunaddr':{'type':Sequelize[_0x35ea('0x5')]},'turnaddr':{'type':Sequelize[_0x35ea('0x5')]},'turnusername':{'type':Sequelize[_0x35ea('0x5')]},'turnpassword':{'type':Sequelize[_0x35ea('0x5')]},'pageTitle':{'type':Sequelize[_0x35ea('0x5')]},'defaultPageTitle':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'callRecordingEncryption':{'type':Sequelize[_0x35ea('0x7')],'defaultValue':![]},'passwordExpiresDays':{'type':Sequelize[_0x35ea('0x2')](0xb),'defaultValue':0x5a},'phoneBarAutoUpdater':{'type':Sequelize[_0x35ea('0x7')],'defaultValue':!![]},'phoneBarAutoUpdaterUrl':{'type':Sequelize['STRING'],'defaultValue':_0x35ea('0x8')},'enableEmailPreview':{'type':Sequelize[_0x35ea('0x7')],'defaultValue':![]},'split':{'type':Sequelize[_0x35ea('0x7')],'defaultValue':!![]},'splitSizeCsv':{'type':Sequelize[_0x35ea('0x2')],'defaultValue':0x1388},'splitSizePdf':{'type':Sequelize[_0x35ea('0x2')],'defaultValue':0x1388},'splitSizeXlsx':{'type':Sequelize['INTEGER'],'defaultValue':0x1388},'messagesAlignment':{'type':Sequelize[_0x35ea('0x5')],'defaultValue':_0x35ea('0x9')},'chatTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x1e},'phoneBarRememberMeEnabled':{'type':Sequelize[_0x35ea('0x7')],'defaultValue':!![]},'preferred':{'type':Sequelize['STRING']},'defaultPreferred':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'rtlSupport':{'type':Sequelize[_0x35ea('0x7')],'defaultValue':![]},'defaultScreenRecordingPath':{'type':Sequelize[_0x35ea('0x5')]},'allowedLoginAttempts':{'type':Sequelize[_0x35ea('0x2')],'defaultValue':0x5},'blockDuration':{'type':Sequelize['INTEGER'],'defaultValue':0xa},'favicon':{'type':Sequelize[_0x35ea('0x5')]},'defaultFavicon':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'loginMailFrequency':{'type':Sequelize[_0x35ea('0x2')],'defaultValue':0xa,'validate':{'min':0xa}},'transcribe':{'type':Sequelize[_0x35ea('0x7')],'defaultValue':![]},'automaticTranscribe':{'type':Sequelize[_0x35ea('0x7')],'defaultValue':![]},'transcribeAccountId':{'type':Sequelize[_0x35ea('0x2')]},'transcribeRegion':{'type':Sequelize[_0x35ea('0x5')]},'sentiment':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'automaticSentiment':{'type':Sequelize[_0x35ea('0x7')],'defaultValue':![]},'sentimentAccountId':{'type':Sequelize['INTEGER']},'sentimentRegion':{'type':Sequelize[_0x35ea('0x5')]},'language':{'type':Sequelize[_0x35ea('0x5')]},'bucket':{'type':Sequelize[_0x35ea('0x5')]},'googleSsoEnabled':{'type':Sequelize[_0x35ea('0x7')],'defaultValue':![]},'enforcePasswordHistory':{'type':Sequelize[_0x35ea('0x7')],'defaultValue':!![]},'passwordHistoryLimit':{'type':Sequelize[_0x35ea('0x2')](0x2)[_0x35ea('0xa')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5}},'privacyPolicyEmail':{'type':Sequelize['INTEGER'](0x2)[_0x35ea('0xa')],'defaultValue':0x0},'privacyPolicyName':{'type':Sequelize[_0x35ea('0x2')](0x2)['UNSIGNED'],'defaultValue':0x0},'privacyPolicyNumber':{'type':Sequelize['INTEGER'](0x2)[_0x35ea('0xa')],'defaultValue':0x0},'searchOnEnterKey':{'type':Sequelize[_0x35ea('0x7')],'defaultValue':!![]},'chatInteractionsReloadTimeout':{'type':Sequelize[_0x35ea('0x2')],'defaultValue':0x0},'mailInteractionsReloadTimeout':{'type':Sequelize[_0x35ea('0x2')],'defaultValue':0x0},'openchannelInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'smsInteractionsReloadTimeout':{'type':Sequelize[_0x35ea('0x2')],'defaultValue':0x0},'whatsappInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'stopRecordingOnTransfer':{'type':Sequelize[_0x35ea('0x7')],'defaultValue':![]},'viewHelpSection':{'type':Sequelize[_0x35ea('0x7')],'defaultValue':!![]}};
\ No newline at end of file
index 0e3645d..e9ee47f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb2b5=['VIRTUAL','filter','options','includeAll','include','findAll','params','body','find','addLogo','file','filename','logo','addLogoLogin','loginLogo','../../config/license/util','getLogo','getLicense','preferred','favicon','defaultLoginLogo','defaultFavicon','existsSync','join','root','toLower','default_logo.svg','default','Sequelize','ValidationError','\x20not\x20found','download','server/files/images/logos','defaultPreferred','default_loginLogo.svg','upperFirst','gdpr','addPreferred','default_preferred.png','addFavicon','getFavicon','defaultLogo','default_favicon.ico','getDate','utcOffset','format','YYYY-MM-DD\x20HH:mm:ss:SSS','request-promise','moment','util','path','sox','to-csv','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','jayson/promise','client','http','request','then','Setting,\x20%s,\x20%s','debug','stringify','error','code','message','info','request\x20sent','result','catch','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','destroy','sendStatus','stack','name','send','map','Setting','rawAttributes','fieldName','type','keys','query','attributes','intersection','model','fields','length','sort','where','filters','merge'];(function(_0x421183,_0x5902c2){var _0x3f305d=function(_0x4a22fa){while(--_0x4a22fa){_0x421183['push'](_0x421183['shift']());}};_0x3f305d(++_0x5902c2);}(_0xb2b5,0xa3));var _0x5b2b=function(_0x199572,_0x33e667){_0x199572=_0x199572-0x0;var _0x13cfa3=_0xb2b5[_0x199572];return _0x13cfa3;};'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(_0x5b2b('0x0'));var moment=require(_0x5b2b('0x1'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x5b2b('0x2'));var path=require(_0x5b2b('0x3'));var sox=require(_0x5b2b('0x4'));var csv=require(_0x5b2b('0x5'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x5b2b('0x6'));var _=require(_0x5b2b('0x7'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x5b2b('0x8'));var deskjs=require(_0x5b2b('0x9'));var toCsv=require(_0x5b2b('0x5'));var querystring=require(_0x5b2b('0xa'));var Papa=require(_0x5b2b('0xb'));var Redis=require(_0x5b2b('0xc'));var authService=require(_0x5b2b('0xd'));var qs=require(_0x5b2b('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x5b2b('0xf'));var logger=require(_0x5b2b('0x10'))('api');var utils=require(_0x5b2b('0x11'));var config=require(_0x5b2b('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0x5b2b('0x13'))['db'];var jayson=require(_0x5b2b('0x14'));var client=jayson[_0x5b2b('0x15')][_0x5b2b('0x16')]({'port':0x232a});function respondWithRpcPromise(_0x2efc16,_0x1b96ac,_0x235bae,_0x4bfe97){return new BPromise(function(_0x30e9a3,_0x4fa243){var _0x39dad7=_0x4bfe97||client;return _0x39dad7[_0x5b2b('0x17')](_0x2efc16,_0x235bae)[_0x5b2b('0x18')](function(_0x2611a3){logger['info'](_0x5b2b('0x19'),_0x1b96ac,'request\x20sent');logger[_0x5b2b('0x1a')]('Setting,\x20%s,\x20%s,\x20%s',_0x1b96ac,'request\x20sent',JSON[_0x5b2b('0x1b')](_0x2611a3));if(_0x2611a3[_0x5b2b('0x1c')]){if(_0x2611a3['error'][_0x5b2b('0x1d')]===0x1f4){logger[_0x5b2b('0x1c')](_0x5b2b('0x19'),_0x1b96ac,_0x2611a3[_0x5b2b('0x1c')][_0x5b2b('0x1e')]);return _0x4fa243(_0x2611a3['error'][_0x5b2b('0x1e')]);}logger[_0x5b2b('0x1c')](_0x5b2b('0x19'),_0x1b96ac,_0x2611a3[_0x5b2b('0x1c')][_0x5b2b('0x1e')]);return _0x30e9a3(_0x2611a3[_0x5b2b('0x1c')][_0x5b2b('0x1e')]);}else{logger[_0x5b2b('0x1f')](_0x5b2b('0x19'),_0x1b96ac,_0x5b2b('0x20'));_0x30e9a3(_0x2611a3[_0x5b2b('0x21')][_0x5b2b('0x1e')]);}})[_0x5b2b('0x22')](function(_0x5fdeb1){logger['error']('Setting,\x20%s,\x20%s',_0x1b96ac,_0x5fdeb1);_0x4fa243(_0x5fdeb1);});});}function respondWithStatusCode(_0xfdaeed,_0x58e346){_0x58e346=_0x58e346||0xcc;return function(_0x3a530f){if(_0x3a530f){return _0xfdaeed['sendStatus'](_0x58e346);}return _0xfdaeed[_0x5b2b('0x23')](_0x58e346)[_0x5b2b('0x24')]();};}function respondWithResult(_0xb6d0b0,_0x37cbd8){_0x37cbd8=_0x37cbd8||0xc8;return function(_0x33a88c){if(_0x33a88c){return _0xb6d0b0['status'](_0x37cbd8)[_0x5b2b('0x25')](_0x33a88c);}};}function respondWithFilteredResult(_0x3e97dc,_0x55b05c){return function(_0x3fd917){if(_0x3fd917){var _0x1fa64b=typeof _0x55b05c['offset']===_0x5b2b('0x26')&&typeof _0x55b05c[_0x5b2b('0x27')]===_0x5b2b('0x26');var _0x1bfd12=_0x3fd917[_0x5b2b('0x28')];var _0x94d866=_0x1fa64b?0x0:_0x55b05c['offset'];var _0x2c80be=_0x1fa64b?_0x3fd917[_0x5b2b('0x28')]:_0x55b05c[_0x5b2b('0x29')]+_0x55b05c[_0x5b2b('0x27')];var _0x45a0cd;if(_0x2c80be>=_0x1bfd12){_0x2c80be=_0x1bfd12;_0x45a0cd=0xc8;}else{_0x45a0cd=0xce;}_0x3e97dc['status'](_0x45a0cd);return _0x3e97dc[_0x5b2b('0x2a')](_0x5b2b('0x2b'),_0x94d866+'-'+_0x2c80be+'/'+_0x1bfd12)[_0x5b2b('0x25')](_0x3fd917);}return null;};}function patchUpdates(_0x250348){return function(_0xbe2fc9){try{jsonpatch[_0x5b2b('0x2c')](_0xbe2fc9,_0x250348,!![]);}catch(_0x528864){return BPromise[_0x5b2b('0x2d')](_0x528864);}return _0xbe2fc9[_0x5b2b('0x2e')]();};}function saveUpdates(_0x101d5c,_0x1127b0){return function(_0x1d3b92){if(_0x1d3b92){return _0x1d3b92[_0x5b2b('0x2f')](_0x101d5c)[_0x5b2b('0x18')](function(_0x1c0511){return _0x1c0511;});}return null;};}function removeEntity(_0x1a5b63,_0x3f7f22){return function(_0x4e13a3){if(_0x4e13a3){return _0x4e13a3[_0x5b2b('0x30')]()[_0x5b2b('0x18')](function(){_0x1a5b63[_0x5b2b('0x23')](0xcc)[_0x5b2b('0x24')]();});}};}function handleEntityNotFound(_0xf89686,_0xe20c81){return function(_0x39821a){if(!_0x39821a){_0xf89686[_0x5b2b('0x31')](0x194);}return _0x39821a;};}function handleError(_0x2ea8f2,_0x508ea5){_0x508ea5=_0x508ea5||0x1f4;return function(_0x124a42){logger[_0x5b2b('0x1c')](_0x124a42[_0x5b2b('0x32')]);if(_0x124a42[_0x5b2b('0x33')]){delete _0x124a42['name'];}_0x2ea8f2['status'](_0x508ea5)[_0x5b2b('0x34')](_0x124a42);};}exports['index']=function(_0x3f5233,_0x42f627){var _0x176eb4={},_0x461515={},_0x5cdf37={'count':0x0,'rows':[]};var _0x3db115=_[_0x5b2b('0x35')](db[_0x5b2b('0x36')][_0x5b2b('0x37')],function(_0x28ddb6){return{'name':_0x28ddb6[_0x5b2b('0x38')],'type':_0x28ddb6[_0x5b2b('0x39')]['key']};});_0x461515['model']=_[_0x5b2b('0x35')](_0x3db115,_0x5b2b('0x33'));_0x461515['query']=_[_0x5b2b('0x3a')](_0x3f5233[_0x5b2b('0x3b')]);_0x461515['filters']=_['intersection'](_0x461515['model'],_0x461515[_0x5b2b('0x3b')]);_0x176eb4[_0x5b2b('0x3c')]=_[_0x5b2b('0x3d')](_0x461515[_0x5b2b('0x3e')],qs['fields'](_0x3f5233['query'][_0x5b2b('0x3f')]));_0x176eb4['attributes']=_0x176eb4[_0x5b2b('0x3c')][_0x5b2b('0x40')]?_0x176eb4[_0x5b2b('0x3c')]:_0x461515['model'];if(!_0x3f5233[_0x5b2b('0x3b')]['hasOwnProperty']('nolimit')){_0x176eb4['limit']=qs[_0x5b2b('0x27')](_0x3f5233[_0x5b2b('0x3b')][_0x5b2b('0x27')]);_0x176eb4[_0x5b2b('0x29')]=qs[_0x5b2b('0x29')](_0x3f5233['query'][_0x5b2b('0x29')]);}_0x176eb4['order']=qs[_0x5b2b('0x41')](_0x3f5233[_0x5b2b('0x3b')]['sort']);_0x176eb4[_0x5b2b('0x42')]=qs[_0x5b2b('0x43')](_['pick'](_0x3f5233[_0x5b2b('0x3b')],_0x461515[_0x5b2b('0x43')]),_0x3db115);if(_0x3f5233[_0x5b2b('0x3b')]['filter']){_0x176eb4[_0x5b2b('0x42')]=_[_0x5b2b('0x44')](_0x176eb4[_0x5b2b('0x42')],{'$or':_[_0x5b2b('0x35')](_0x3db115,function(_0x3d8e2c){if(_0x3d8e2c[_0x5b2b('0x39')]!==_0x5b2b('0x45')){var _0x17ae95={};_0x17ae95[_0x3d8e2c[_0x5b2b('0x33')]]={'$like':'%'+_0x3f5233['query'][_0x5b2b('0x46')]+'%'};return _0x17ae95;}})});}_0x176eb4=_[_0x5b2b('0x44')]({},_0x176eb4,_0x3f5233[_0x5b2b('0x47')]);var _0x33efee={'where':_0x176eb4[_0x5b2b('0x42')]};return db[_0x5b2b('0x36')]['count'](_0x33efee)['then'](function(_0x4f4a57){_0x5cdf37['count']=_0x4f4a57;if(_0x3f5233[_0x5b2b('0x3b')][_0x5b2b('0x48')]){_0x176eb4[_0x5b2b('0x49')]=[{'all':!![]}];}return db[_0x5b2b('0x36')][_0x5b2b('0x4a')](_0x176eb4);})[_0x5b2b('0x18')](function(_0x126a8c){_0x5cdf37['rows']=_0x126a8c;return _0x5cdf37;})[_0x5b2b('0x18')](respondWithFilteredResult(_0x42f627,_0x176eb4))[_0x5b2b('0x22')](handleError(_0x42f627,null));};exports['show']=function(_0x515df8,_0xf5840c){var _0x5c8d32={'raw':![],'where':{'id':_0x515df8[_0x5b2b('0x4b')]['id']}},_0x5a6b8e={};_0x5a6b8e[_0x5b2b('0x3e')]=_[_0x5b2b('0x3a')](db[_0x5b2b('0x36')]['rawAttributes']);_0x5a6b8e[_0x5b2b('0x3b')]=_[_0x5b2b('0x3a')](_0x515df8['query']);_0x5a6b8e['filters']=_[_0x5b2b('0x3d')](_0x5a6b8e[_0x5b2b('0x3e')],_0x5a6b8e[_0x5b2b('0x3b')]);_0x5c8d32['attributes']=_['intersection'](_0x5a6b8e[_0x5b2b('0x3e')],qs[_0x5b2b('0x3f')](_0x515df8['query'][_0x5b2b('0x3f')]));_0x5c8d32[_0x5b2b('0x3c')]=_0x5c8d32['attributes'][_0x5b2b('0x40')]?_0x5c8d32['attributes']:_0x5a6b8e['model'];if(_0x515df8[_0x5b2b('0x3b')][_0x5b2b('0x48')]){_0x5c8d32[_0x5b2b('0x49')]=[{'all':!![]}];}_0x5c8d32=_[_0x5b2b('0x44')]({},_0x5c8d32,_0x515df8['options']);return db[_0x5b2b('0x36')]['find'](_0x5c8d32)[_0x5b2b('0x18')](handleEntityNotFound(_0xf5840c,null))['then'](respondWithResult(_0xf5840c,null))[_0x5b2b('0x22')](handleError(_0xf5840c,null));};exports[_0x5b2b('0x2f')]=function(_0x34c167,_0x4002e0){if(_0x34c167['body']['id']){delete _0x34c167[_0x5b2b('0x4c')]['id'];}return db[_0x5b2b('0x36')][_0x5b2b('0x4d')]({'where':{'id':_0x34c167['params']['id']}})[_0x5b2b('0x18')](handleEntityNotFound(_0x4002e0,null))['then'](saveUpdates(_0x34c167['body'],null))[_0x5b2b('0x18')](respondWithResult(_0x4002e0,null))[_0x5b2b('0x22')](handleError(_0x4002e0,null));};exports[_0x5b2b('0x4e')]=function(_0x35733d,_0x4afd59,_0x44fbe5){if(_0x35733d[_0x5b2b('0x4f')]&&_0x35733d['file'][_0x5b2b('0x50')]){_0x35733d[_0x5b2b('0x4c')][_0x5b2b('0x51')]=_0x35733d['file'][_0x5b2b('0x50')];}return db[_0x5b2b('0x36')]['find']({'where':{'id':_0x35733d['params']['id']}})[_0x5b2b('0x18')](handleEntityNotFound(_0x4afd59,null))['then'](saveUpdates(_0x35733d[_0x5b2b('0x4c')],null))[_0x5b2b('0x18')](respondWithResult(_0x4afd59,null))[_0x5b2b('0x22')](handleError(_0x4afd59,null));};exports[_0x5b2b('0x52')]=function(_0x37f78b,_0x1d914f,_0x3598d6){if(_0x37f78b[_0x5b2b('0x4f')]&&_0x37f78b[_0x5b2b('0x4f')][_0x5b2b('0x50')]){_0x37f78b[_0x5b2b('0x4c')][_0x5b2b('0x53')]=_0x37f78b[_0x5b2b('0x4f')][_0x5b2b('0x50')];}return db['Setting']['find']({'where':{'id':_0x37f78b[_0x5b2b('0x4b')]['id']}})[_0x5b2b('0x18')](handleEntityNotFound(_0x1d914f,null))['then'](saveUpdates(_0x37f78b['body'],null))[_0x5b2b('0x18')](respondWithResult(_0x1d914f,null))[_0x5b2b('0x22')](handleError(_0x1d914f,null));};var utilLicense=require(_0x5b2b('0x54'));exports[_0x5b2b('0x55')]=function(_0x40af7b,_0x135d8c,_0xa9c28c){var _0x529b3b='server/files/images/logos';var _0x52b1b8={'custom':![]};return utilLicense[_0x5b2b('0x56')]()[_0x5b2b('0x18')](function(_0x90f792){if(_0x90f792){_0x52b1b8=_0x90f792;}return db[_0x5b2b('0x36')][_0x5b2b('0x4d')]({'where':{'id':_0x40af7b['params']['id']},'attributes':[_0x5b2b('0x51'),'loginLogo',_0x5b2b('0x57'),_0x5b2b('0x58'),'defaultLogo',_0x5b2b('0x59'),'defaultPreferred',_0x5b2b('0x5a')],'raw':!![]});})[_0x5b2b('0x18')](handleEntityNotFound(_0x135d8c,null))['then'](function(_0x394401){if(_0x394401){var _0x7e1906=_0x394401[_0x5b2b('0x51')]&&fs[_0x5b2b('0x5b')](path[_0x5b2b('0x5c')](config[_0x5b2b('0x5d')],_0x529b3b,_['toLower'](_0x394401[_0x5b2b('0x51')])))?path[_0x5b2b('0x5c')](config['root'],_0x529b3b,_[_0x5b2b('0x5e')](_0x394401[_0x5b2b('0x51')])):path['join'](config['root'],_0x529b3b,_[_0x5b2b('0x5e')](_0x5b2b('0x5f')));var _0x282a6d=_0x5b2b('0x60')+_['upperFirst'](_0x5b2b('0x51'));if(_0x394401[_0x282a6d]||!_0x52b1b8['custom']){_0x7e1906=path['join'](config['root'],_0x529b3b,_[_0x5b2b('0x5e')](_0x5b2b('0x5f')));}if(!fs['existsSync'](_0x7e1906)){throw new db[(_0x5b2b('0x61'))][(_0x5b2b('0x62'))](_['upperFirst']('logo')+_0x5b2b('0x63'));}return _0x135d8c[_0x5b2b('0x64')](_0x7e1906);}})[_0x5b2b('0x22')](handleError(_0x135d8c,null));};var utilLicense=require('../../config/license/util');exports['getLogoLogin']=function(_0x1127ae,_0x4c8053,_0x2e5fcb){var _0x29af50=_0x5b2b('0x65');var _0x4402df={'custom':![]};return utilLicense[_0x5b2b('0x56')]()[_0x5b2b('0x18')](function(_0x3f79e9){if(_0x3f79e9){_0x4402df=_0x3f79e9;}return db['Setting'][_0x5b2b('0x4d')]({'where':{'id':_0x1127ae[_0x5b2b('0x4b')]['id']},'attributes':['logo','loginLogo',_0x5b2b('0x57'),_0x5b2b('0x58'),'defaultLogo',_0x5b2b('0x59'),_0x5b2b('0x66'),'defaultFavicon'],'raw':!![]});})[_0x5b2b('0x18')](handleEntityNotFound(_0x4c8053,null))[_0x5b2b('0x18')](function(_0x45bd9d){if(_0x45bd9d){var _0x2ffdd7=_0x45bd9d[_0x5b2b('0x53')]&&fs[_0x5b2b('0x5b')](path[_0x5b2b('0x5c')](config[_0x5b2b('0x5d')],_0x29af50,_[_0x5b2b('0x5e')](_0x45bd9d['loginLogo'])))?path['join'](config[_0x5b2b('0x5d')],_0x29af50,_[_0x5b2b('0x5e')](_0x45bd9d[_0x5b2b('0x53')])):path[_0x5b2b('0x5c')](config['root'],_0x29af50,_[_0x5b2b('0x5e')](_0x5b2b('0x67')));var _0x507778=_0x5b2b('0x60')+_['upperFirst']('loginLogo');if(_0x45bd9d[_0x507778]||!_0x4402df['custom']){_0x2ffdd7=path[_0x5b2b('0x5c')](config[_0x5b2b('0x5d')],_0x29af50,_[_0x5b2b('0x5e')]('default_loginLogo.svg'));}if(!fs[_0x5b2b('0x5b')](_0x2ffdd7)){throw new db['Sequelize'][(_0x5b2b('0x62'))](_[_0x5b2b('0x68')](_0x5b2b('0x53'))+_0x5b2b('0x63'));}return _0x4c8053['download'](_0x2ffdd7);}})[_0x5b2b('0x22')](handleError(_0x4c8053,null));};exports[_0x5b2b('0x69')]=function(_0x289e6f,_0x43d915){return db[_0x5b2b('0x36')][_0x5b2b('0x4d')]({'where':{'id':_0x289e6f[_0x5b2b('0x4b')]['id']},'attributes':['securePassword']})[_0x5b2b('0x18')](respondWithResult(_0x43d915,null))['catch'](handleError(_0x43d915,null));};exports[_0x5b2b('0x6a')]=function(_0x18d0b8,_0x1604f0,_0x20c6a1){if(_0x18d0b8[_0x5b2b('0x4f')]&&_0x18d0b8[_0x5b2b('0x4f')][_0x5b2b('0x50')]){_0x18d0b8['body'][_0x5b2b('0x57')]=_0x18d0b8['file']['filename'];}return db[_0x5b2b('0x36')]['find']({'where':{'id':_0x18d0b8[_0x5b2b('0x4b')]['id']}})[_0x5b2b('0x18')](handleEntityNotFound(_0x1604f0,null))['then'](saveUpdates(_0x18d0b8[_0x5b2b('0x4c')],null))[_0x5b2b('0x18')](respondWithResult(_0x1604f0,null))[_0x5b2b('0x22')](handleError(_0x1604f0,null));};var utilLicense=require('../../config/license/util');exports['getPreferred']=function(_0x324407,_0x1dce47,_0x36a704){var _0x248310=_0x5b2b('0x65');var _0x39360f={'custom':![]};return utilLicense[_0x5b2b('0x56')]()[_0x5b2b('0x18')](function(_0x386440){if(_0x386440){_0x39360f=_0x386440;}return db[_0x5b2b('0x36')][_0x5b2b('0x4d')]({'where':{'id':_0x324407[_0x5b2b('0x4b')]['id']},'attributes':[_0x5b2b('0x51'),_0x5b2b('0x53'),_0x5b2b('0x57'),_0x5b2b('0x58'),'defaultLogo',_0x5b2b('0x59'),_0x5b2b('0x66'),_0x5b2b('0x5a')],'raw':!![]});})[_0x5b2b('0x18')](handleEntityNotFound(_0x1dce47,null))[_0x5b2b('0x18')](function(_0xe75a58){if(_0xe75a58){var _0x1e93c9=_0xe75a58['preferred']&&fs[_0x5b2b('0x5b')](path[_0x5b2b('0x5c')](config['root'],_0x248310,_[_0x5b2b('0x5e')](_0xe75a58[_0x5b2b('0x57')])))?path[_0x5b2b('0x5c')](config['root'],_0x248310,_['toLower'](_0xe75a58[_0x5b2b('0x57')])):path[_0x5b2b('0x5c')](config[_0x5b2b('0x5d')],_0x248310,_[_0x5b2b('0x5e')](_0x5b2b('0x6b')));var _0xe792d='default'+_[_0x5b2b('0x68')](_0x5b2b('0x57'));if(_0xe75a58[_0xe792d]||!_0x39360f['custom']||!_0x39360f[_0x5b2b('0x57')]){_0x1e93c9=path[_0x5b2b('0x5c')](config['root'],_0x248310,_[_0x5b2b('0x5e')](_0x5b2b('0x6b')));}if(!fs['existsSync'](_0x1e93c9)){throw new db[(_0x5b2b('0x61'))][(_0x5b2b('0x62'))](_[_0x5b2b('0x68')]('preferred')+_0x5b2b('0x63'));}return _0x1dce47['download'](_0x1e93c9);}})[_0x5b2b('0x22')](handleError(_0x1dce47,null));};exports[_0x5b2b('0x6c')]=function(_0x1090de,_0x3c69a3,_0xf05d20){if(_0x1090de[_0x5b2b('0x4f')]&&_0x1090de[_0x5b2b('0x4f')]['filename']){_0x1090de['body'][_0x5b2b('0x58')]=_0x1090de[_0x5b2b('0x4f')]['filename'];}return db[_0x5b2b('0x36')]['find']({'where':{'id':_0x1090de[_0x5b2b('0x4b')]['id']}})[_0x5b2b('0x18')](handleEntityNotFound(_0x3c69a3,null))[_0x5b2b('0x18')](saveUpdates(_0x1090de[_0x5b2b('0x4c')],null))['then'](respondWithResult(_0x3c69a3,null))['catch'](handleError(_0x3c69a3,null));};var utilLicense=require('../../config/license/util');exports[_0x5b2b('0x6d')]=function(_0x39e881,_0x2fe671,_0x85832a){var _0x39a276=_0x5b2b('0x65');var _0x14818f={'custom':![]};return utilLicense['getLicense']()[_0x5b2b('0x18')](function(_0x14a01c){if(_0x14a01c){_0x14818f=_0x14a01c;}return db[_0x5b2b('0x36')]['find']({'where':{'id':_0x39e881[_0x5b2b('0x4b')]['id']},'attributes':['logo',_0x5b2b('0x53'),_0x5b2b('0x57'),'favicon',_0x5b2b('0x6e'),'defaultLoginLogo',_0x5b2b('0x66'),_0x5b2b('0x5a')],'raw':!![]});})[_0x5b2b('0x18')](handleEntityNotFound(_0x2fe671,null))[_0x5b2b('0x18')](function(_0x12e1cf){if(_0x12e1cf){var _0x3aded2=_0x12e1cf[_0x5b2b('0x58')]&&fs[_0x5b2b('0x5b')](path[_0x5b2b('0x5c')](config[_0x5b2b('0x5d')],_0x39a276,_['toLower'](_0x12e1cf[_0x5b2b('0x58')])))?path[_0x5b2b('0x5c')](config[_0x5b2b('0x5d')],_0x39a276,_[_0x5b2b('0x5e')](_0x12e1cf[_0x5b2b('0x58')])):path[_0x5b2b('0x5c')](config[_0x5b2b('0x5d')],_0x39a276,_[_0x5b2b('0x5e')](_0x5b2b('0x6f')));var _0x1a0e47=_0x5b2b('0x60')+_[_0x5b2b('0x68')](_0x5b2b('0x58'));if(_0x12e1cf[_0x1a0e47]||!_0x14818f['custom']){_0x3aded2=path[_0x5b2b('0x5c')](config[_0x5b2b('0x5d')],_0x39a276,_['toLower'](_0x5b2b('0x6f')));}if(!fs['existsSync'](_0x3aded2)){throw new db[(_0x5b2b('0x61'))]['ValidationError'](_['upperFirst'](_0x5b2b('0x58'))+_0x5b2b('0x63'));}return _0x2fe671[_0x5b2b('0x64')](_0x3aded2);}})['catch'](handleError(_0x2fe671,null));};exports[_0x5b2b('0x70')]=function(_0x5eba17,_0x1db5c0){var _0x18b4d0={'offset':moment()['utcOffset']()};_0x18b4d0['now']=moment()[_0x5b2b('0x71')](_0x18b4d0[_0x5b2b('0x29')])[_0x5b2b('0x72')](_0x5b2b('0x73'));return _0x1db5c0['status'](0xc8)[_0x5b2b('0x34')](_0x18b4d0);};
\ No newline at end of file
+var _0x78d8=['ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','jayson/promise','http','request','then','info','Setting,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','sendStatus','end','json','offset','undefined','count','limit','status','set','apply','reject','save','update','name','send','Setting','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','map','VIRTUAL','filter','options','includeAll','include','show','rawAttributes','find','catch','body','addLogo','file','filename','addLogoLogin','loginLogo','getLogo','server/files/images/logos','getLicense','params','preferred','favicon','defaultLogo','defaultLoginLogo','defaultPreferred','defaultFavicon','logo','existsSync','join','root','toLower','default_logo.svg','default','upperFirst','custom','Sequelize','ValidationError','\x20not\x20found','getLogoLogin','default_loginLogo.svg','gdpr','securePassword','getPreferred','default_preferred.png','download','addFavicon','getFavicon','default_favicon.ico','getDate','utcOffset','format','rimraf','zip-dir','fast-json-patch','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse'];(function(_0x2f29f6,_0x42668c){var _0x21a597=function(_0x2d4993){while(--_0x2d4993){_0x2f29f6['push'](_0x2f29f6['shift']());}};_0x21a597(++_0x42668c);}(_0x78d8,0x15c));var _0x878d=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x78d8[_0x14add3];return _0x4a174f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x878d('0x0'));var zipdir=require(_0x878d('0x1'));var jsonpatch=require(_0x878d('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x878d('0x3'));var path=require(_0x878d('0x4'));var sox=require(_0x878d('0x5'));var csv=require(_0x878d('0x6'));var ejs=require(_0x878d('0x7'));var fs=require('fs');var fs_extra=require(_0x878d('0x8'));var _=require(_0x878d('0x9'));var squel=require(_0x878d('0xa'));var crypto=require(_0x878d('0xb'));var jsforce=require(_0x878d('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x878d('0xd'));var Papa=require(_0x878d('0xe'));var Redis=require(_0x878d('0xf'));var authService=require(_0x878d('0x10'));var qs=require(_0x878d('0x11'));var as=require(_0x878d('0x12'));var hardwareService=require(_0x878d('0x13'));var logger=require('../../config/logger')(_0x878d('0x14'));var utils=require(_0x878d('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x878d('0x16'));var db=require(_0x878d('0x17'))['db'];var jayson=require(_0x878d('0x18'));var client=jayson['client'][_0x878d('0x19')]({'port':0x232a});function respondWithRpcPromise(_0x566f5b,_0x91bc39,_0x412c50,_0x29e1d7){return new BPromise(function(_0x5c66a6,_0x4437d7){var _0x11b971=_0x29e1d7||client;return _0x11b971[_0x878d('0x1a')](_0x566f5b,_0x412c50)[_0x878d('0x1b')](function(_0x4bb686){logger[_0x878d('0x1c')](_0x878d('0x1d'),_0x91bc39,_0x878d('0x1e'));logger['debug']('Setting,\x20%s,\x20%s,\x20%s',_0x91bc39,_0x878d('0x1e'),JSON[_0x878d('0x1f')](_0x4bb686));if(_0x4bb686[_0x878d('0x20')]){if(_0x4bb686['error'][_0x878d('0x21')]===0x1f4){logger[_0x878d('0x20')]('Setting,\x20%s,\x20%s',_0x91bc39,_0x4bb686[_0x878d('0x20')][_0x878d('0x22')]);return _0x4437d7(_0x4bb686['error']['message']);}logger[_0x878d('0x20')](_0x878d('0x1d'),_0x91bc39,_0x4bb686[_0x878d('0x20')][_0x878d('0x22')]);return _0x5c66a6(_0x4bb686[_0x878d('0x20')][_0x878d('0x22')]);}else{logger[_0x878d('0x1c')](_0x878d('0x1d'),_0x91bc39,_0x878d('0x1e'));_0x5c66a6(_0x4bb686[_0x878d('0x23')][_0x878d('0x22')]);}})['catch'](function(_0x42cbc4){logger[_0x878d('0x20')](_0x878d('0x1d'),_0x91bc39,_0x42cbc4);_0x4437d7(_0x42cbc4);});});}function respondWithStatusCode(_0x1178d1,_0x54f615){_0x54f615=_0x54f615||0xcc;return function(_0xdc4187){if(_0xdc4187){return _0x1178d1[_0x878d('0x24')](_0x54f615);}return _0x1178d1['status'](_0x54f615)[_0x878d('0x25')]();};}function respondWithResult(_0x30427e,_0x115d22){_0x115d22=_0x115d22||0xc8;return function(_0x11f526){if(_0x11f526){return _0x30427e['status'](_0x115d22)[_0x878d('0x26')](_0x11f526);}};}function respondWithFilteredResult(_0x551693,_0x5996e4){return function(_0x4f1225){if(_0x4f1225){var _0x4938e1=typeof _0x5996e4[_0x878d('0x27')]===_0x878d('0x28')&&typeof _0x5996e4['limit']==='undefined';var _0x1dca61=_0x4f1225[_0x878d('0x29')];var _0xb5925f=_0x4938e1?0x0:_0x5996e4[_0x878d('0x27')];var _0x207649=_0x4938e1?_0x4f1225[_0x878d('0x29')]:_0x5996e4[_0x878d('0x27')]+_0x5996e4[_0x878d('0x2a')];var _0x1a0d49;if(_0x207649>=_0x1dca61){_0x207649=_0x1dca61;_0x1a0d49=0xc8;}else{_0x1a0d49=0xce;}_0x551693[_0x878d('0x2b')](_0x1a0d49);return _0x551693[_0x878d('0x2c')]('Content-Range',_0xb5925f+'-'+_0x207649+'/'+_0x1dca61)[_0x878d('0x26')](_0x4f1225);}return null;};}function patchUpdates(_0x2b692c){return function(_0x4cf35d){try{jsonpatch[_0x878d('0x2d')](_0x4cf35d,_0x2b692c,!![]);}catch(_0x9dacb8){return BPromise[_0x878d('0x2e')](_0x9dacb8);}return _0x4cf35d[_0x878d('0x2f')]();};}function saveUpdates(_0x1c3499,_0x36fb45){return function(_0x54a312){if(_0x54a312){return _0x54a312[_0x878d('0x30')](_0x1c3499)[_0x878d('0x1b')](function(_0x2827d6){return _0x2827d6;});}return null;};}function removeEntity(_0x43934c,_0x32dea4){return function(_0x299eaa){if(_0x299eaa){return _0x299eaa['destroy']()[_0x878d('0x1b')](function(){_0x43934c[_0x878d('0x2b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x435748,_0x5ef3e9){return function(_0x23c30f){if(!_0x23c30f){_0x435748['sendStatus'](0x194);}return _0x23c30f;};}function handleError(_0x45a669,_0x525ea5){_0x525ea5=_0x525ea5||0x1f4;return function(_0x3523f0){logger['error'](_0x3523f0['stack']);if(_0x3523f0[_0x878d('0x31')]){delete _0x3523f0[_0x878d('0x31')];}_0x45a669['status'](_0x525ea5)[_0x878d('0x32')](_0x3523f0);};}exports['index']=function(_0x4e3236,_0x14969b){var _0x13c3bb={},_0x4d622c={},_0x5ad54e={'count':0x0,'rows':[]};var _0x583cf3=_['map'](db[_0x878d('0x33')]['rawAttributes'],function(_0x528289){return{'name':_0x528289[_0x878d('0x34')],'type':_0x528289[_0x878d('0x35')][_0x878d('0x36')]};});_0x4d622c[_0x878d('0x37')]=_['map'](_0x583cf3,_0x878d('0x31'));_0x4d622c[_0x878d('0x38')]=_[_0x878d('0x39')](_0x4e3236['query']);_0x4d622c[_0x878d('0x3a')]=_[_0x878d('0x3b')](_0x4d622c[_0x878d('0x37')],_0x4d622c[_0x878d('0x38')]);_0x13c3bb['attributes']=_['intersection'](_0x4d622c['model'],qs[_0x878d('0x3c')](_0x4e3236['query'][_0x878d('0x3c')]));_0x13c3bb['attributes']=_0x13c3bb[_0x878d('0x3d')][_0x878d('0x3e')]?_0x13c3bb[_0x878d('0x3d')]:_0x4d622c[_0x878d('0x37')];if(!_0x4e3236[_0x878d('0x38')][_0x878d('0x3f')](_0x878d('0x40'))){_0x13c3bb['limit']=qs['limit'](_0x4e3236[_0x878d('0x38')][_0x878d('0x2a')]);_0x13c3bb[_0x878d('0x27')]=qs[_0x878d('0x27')](_0x4e3236[_0x878d('0x38')][_0x878d('0x27')]);}_0x13c3bb[_0x878d('0x41')]=qs[_0x878d('0x42')](_0x4e3236[_0x878d('0x38')][_0x878d('0x42')]);_0x13c3bb[_0x878d('0x43')]=qs['filters'](_[_0x878d('0x44')](_0x4e3236[_0x878d('0x38')],_0x4d622c[_0x878d('0x3a')]),_0x583cf3);if(_0x4e3236['query']['filter']){_0x13c3bb[_0x878d('0x43')]=_[_0x878d('0x45')](_0x13c3bb[_0x878d('0x43')],{'$or':_[_0x878d('0x46')](_0x583cf3,function(_0x365826){if(_0x365826[_0x878d('0x35')]!==_0x878d('0x47')){var _0x1d85af={};_0x1d85af[_0x365826['name']]={'$like':'%'+_0x4e3236[_0x878d('0x38')][_0x878d('0x48')]+'%'};return _0x1d85af;}})});}_0x13c3bb=_[_0x878d('0x45')]({},_0x13c3bb,_0x4e3236[_0x878d('0x49')]);var _0x41c131={'where':_0x13c3bb[_0x878d('0x43')]};return db[_0x878d('0x33')][_0x878d('0x29')](_0x41c131)['then'](function(_0x548980){_0x5ad54e[_0x878d('0x29')]=_0x548980;if(_0x4e3236[_0x878d('0x38')][_0x878d('0x4a')]){_0x13c3bb[_0x878d('0x4b')]=[{'all':!![]}];}return db['Setting']['findAll'](_0x13c3bb);})[_0x878d('0x1b')](function(_0x52360a){_0x5ad54e['rows']=_0x52360a;return _0x5ad54e;})[_0x878d('0x1b')](respondWithFilteredResult(_0x14969b,_0x13c3bb))['catch'](handleError(_0x14969b,null));};exports[_0x878d('0x4c')]=function(_0x1e0c07,_0x283a5c){var _0x37a470={'raw':![],'where':{'id':_0x1e0c07['params']['id']}},_0x3df20d={};_0x3df20d[_0x878d('0x37')]=_[_0x878d('0x39')](db['Setting'][_0x878d('0x4d')]);_0x3df20d[_0x878d('0x38')]=_[_0x878d('0x39')](_0x1e0c07[_0x878d('0x38')]);_0x3df20d[_0x878d('0x3a')]=_['intersection'](_0x3df20d[_0x878d('0x37')],_0x3df20d[_0x878d('0x38')]);_0x37a470[_0x878d('0x3d')]=_[_0x878d('0x3b')](_0x3df20d[_0x878d('0x37')],qs[_0x878d('0x3c')](_0x1e0c07[_0x878d('0x38')]['fields']));_0x37a470[_0x878d('0x3d')]=_0x37a470[_0x878d('0x3d')]['length']?_0x37a470[_0x878d('0x3d')]:_0x3df20d[_0x878d('0x37')];if(_0x1e0c07['query']['includeAll']){_0x37a470[_0x878d('0x4b')]=[{'all':!![]}];}_0x37a470=_['merge']({},_0x37a470,_0x1e0c07['options']);return db[_0x878d('0x33')][_0x878d('0x4e')](_0x37a470)['then'](handleEntityNotFound(_0x283a5c,null))['then'](respondWithResult(_0x283a5c,null))[_0x878d('0x4f')](handleError(_0x283a5c,null));};exports[_0x878d('0x30')]=function(_0x3cafd1,_0x5059ed){if(_0x3cafd1[_0x878d('0x50')]['id']){delete _0x3cafd1[_0x878d('0x50')]['id'];}return db[_0x878d('0x33')][_0x878d('0x4e')]({'where':{'id':_0x3cafd1['params']['id']}})[_0x878d('0x1b')](handleEntityNotFound(_0x5059ed,null))[_0x878d('0x1b')](saveUpdates(_0x3cafd1[_0x878d('0x50')],null))[_0x878d('0x1b')](respondWithResult(_0x5059ed,null))[_0x878d('0x4f')](handleError(_0x5059ed,null));};exports[_0x878d('0x51')]=function(_0x5ad846,_0x12279b,_0x1a7ff5){if(_0x5ad846[_0x878d('0x52')]&&_0x5ad846[_0x878d('0x52')][_0x878d('0x53')]){_0x5ad846[_0x878d('0x50')]['logo']=_0x5ad846[_0x878d('0x52')][_0x878d('0x53')];}return db[_0x878d('0x33')]['find']({'where':{'id':_0x5ad846['params']['id']}})['then'](handleEntityNotFound(_0x12279b,null))[_0x878d('0x1b')](saveUpdates(_0x5ad846[_0x878d('0x50')],null))[_0x878d('0x1b')](respondWithResult(_0x12279b,null))[_0x878d('0x4f')](handleError(_0x12279b,null));};exports[_0x878d('0x54')]=function(_0x231eca,_0x5c242b,_0x5c5e66){if(_0x231eca[_0x878d('0x52')]&&_0x231eca['file']['filename']){_0x231eca[_0x878d('0x50')][_0x878d('0x55')]=_0x231eca['file'][_0x878d('0x53')];}return db[_0x878d('0x33')][_0x878d('0x4e')]({'where':{'id':_0x231eca['params']['id']}})[_0x878d('0x1b')](handleEntityNotFound(_0x5c242b,null))[_0x878d('0x1b')](saveUpdates(_0x231eca[_0x878d('0x50')],null))[_0x878d('0x1b')](respondWithResult(_0x5c242b,null))[_0x878d('0x4f')](handleError(_0x5c242b,null));};var utilLicense=require(_0x878d('0x16'));exports[_0x878d('0x56')]=function(_0x467e17,_0x4f6674,_0x2c0d58){var _0x19bcc5=_0x878d('0x57');var _0xf493ae={'custom':![]};return utilLicense[_0x878d('0x58')]()[_0x878d('0x1b')](function(_0x2f29f6){if(_0x2f29f6){_0xf493ae=_0x2f29f6;}return db[_0x878d('0x33')][_0x878d('0x4e')]({'where':{'id':_0x467e17[_0x878d('0x59')]['id']},'attributes':['logo',_0x878d('0x55'),_0x878d('0x5a'),_0x878d('0x5b'),_0x878d('0x5c'),_0x878d('0x5d'),_0x878d('0x5e'),_0x878d('0x5f')],'raw':!![]});})['then'](handleEntityNotFound(_0x4f6674,null))['then'](function(_0x3a79a3){if(_0x3a79a3){var _0x518f43=_0x3a79a3[_0x878d('0x60')]&&fs[_0x878d('0x61')](path[_0x878d('0x62')](config[_0x878d('0x63')],_0x19bcc5,_[_0x878d('0x64')](_0x3a79a3[_0x878d('0x60')])))?path[_0x878d('0x62')](config[_0x878d('0x63')],_0x19bcc5,_[_0x878d('0x64')](_0x3a79a3[_0x878d('0x60')])):path['join'](config[_0x878d('0x63')],_0x19bcc5,_[_0x878d('0x64')](_0x878d('0x65')));var _0x3efca3=_0x878d('0x66')+_[_0x878d('0x67')](_0x878d('0x60'));if(_0x3a79a3[_0x3efca3]||!_0xf493ae[_0x878d('0x68')]){_0x518f43=path['join'](config['root'],_0x19bcc5,_[_0x878d('0x64')](_0x878d('0x65')));}if(!fs['existsSync'](_0x518f43)){throw new db[(_0x878d('0x69'))][(_0x878d('0x6a'))](_[_0x878d('0x67')]('logo')+_0x878d('0x6b'));}return _0x4f6674['download'](_0x518f43);}})[_0x878d('0x4f')](handleError(_0x4f6674,null));};var utilLicense=require(_0x878d('0x16'));exports[_0x878d('0x6c')]=function(_0x29173a,_0x572967,_0xfa048e){var _0x1f4df0=_0x878d('0x57');var _0x4131a2={'custom':![]};return utilLicense[_0x878d('0x58')]()['then'](function(_0x53cba9){if(_0x53cba9){_0x4131a2=_0x53cba9;}return db[_0x878d('0x33')]['find']({'where':{'id':_0x29173a['params']['id']},'attributes':[_0x878d('0x60'),_0x878d('0x55'),'preferred',_0x878d('0x5b'),_0x878d('0x5c'),_0x878d('0x5d'),_0x878d('0x5e'),_0x878d('0x5f')],'raw':!![]});})['then'](handleEntityNotFound(_0x572967,null))['then'](function(_0x8c347e){if(_0x8c347e){var _0xd30416=_0x8c347e[_0x878d('0x55')]&&fs[_0x878d('0x61')](path[_0x878d('0x62')](config[_0x878d('0x63')],_0x1f4df0,_['toLower'](_0x8c347e[_0x878d('0x55')])))?path[_0x878d('0x62')](config['root'],_0x1f4df0,_[_0x878d('0x64')](_0x8c347e['loginLogo'])):path[_0x878d('0x62')](config[_0x878d('0x63')],_0x1f4df0,_['toLower'](_0x878d('0x6d')));var _0x55643c=_0x878d('0x66')+_[_0x878d('0x67')](_0x878d('0x55'));if(_0x8c347e[_0x55643c]||!_0x4131a2[_0x878d('0x68')]){_0xd30416=path[_0x878d('0x62')](config[_0x878d('0x63')],_0x1f4df0,_['toLower'](_0x878d('0x6d')));}if(!fs[_0x878d('0x61')](_0xd30416)){throw new db['Sequelize'][(_0x878d('0x6a'))](_[_0x878d('0x67')](_0x878d('0x55'))+_0x878d('0x6b'));}return _0x572967['download'](_0xd30416);}})[_0x878d('0x4f')](handleError(_0x572967,null));};exports[_0x878d('0x6e')]=function(_0x19a4b0,_0x3d6b0f){return db[_0x878d('0x33')][_0x878d('0x4e')]({'where':{'id':_0x19a4b0['params']['id']},'attributes':[_0x878d('0x6f')]})['then'](respondWithResult(_0x3d6b0f,null))[_0x878d('0x4f')](handleError(_0x3d6b0f,null));};exports['addPreferred']=function(_0x4681cf,_0x474023,_0x33b0b3){if(_0x4681cf['file']&&_0x4681cf[_0x878d('0x52')][_0x878d('0x53')]){_0x4681cf[_0x878d('0x50')][_0x878d('0x5a')]=_0x4681cf[_0x878d('0x52')][_0x878d('0x53')];}return db[_0x878d('0x33')][_0x878d('0x4e')]({'where':{'id':_0x4681cf[_0x878d('0x59')]['id']}})[_0x878d('0x1b')](handleEntityNotFound(_0x474023,null))[_0x878d('0x1b')](saveUpdates(_0x4681cf['body'],null))[_0x878d('0x1b')](respondWithResult(_0x474023,null))[_0x878d('0x4f')](handleError(_0x474023,null));};var utilLicense=require(_0x878d('0x16'));exports[_0x878d('0x70')]=function(_0x360a47,_0x37dc63,_0x1503d3){var _0x595b19=_0x878d('0x57');var _0xaa066e={'custom':![]};return utilLicense[_0x878d('0x58')]()[_0x878d('0x1b')](function(_0x3b22b3){if(_0x3b22b3){_0xaa066e=_0x3b22b3;}return db['Setting'][_0x878d('0x4e')]({'where':{'id':_0x360a47['params']['id']},'attributes':[_0x878d('0x60'),_0x878d('0x55'),_0x878d('0x5a'),_0x878d('0x5b'),'defaultLogo','defaultLoginLogo',_0x878d('0x5e'),_0x878d('0x5f')],'raw':!![]});})[_0x878d('0x1b')](handleEntityNotFound(_0x37dc63,null))[_0x878d('0x1b')](function(_0x4835d6){if(_0x4835d6){var _0x11e1ab=_0x4835d6['preferred']&&fs[_0x878d('0x61')](path['join'](config[_0x878d('0x63')],_0x595b19,_[_0x878d('0x64')](_0x4835d6['preferred'])))?path[_0x878d('0x62')](config[_0x878d('0x63')],_0x595b19,_[_0x878d('0x64')](_0x4835d6[_0x878d('0x5a')])):path[_0x878d('0x62')](config[_0x878d('0x63')],_0x595b19,_['toLower'](_0x878d('0x71')));var _0x40affb=_0x878d('0x66')+_['upperFirst'](_0x878d('0x5a'));if(_0x4835d6[_0x40affb]||!_0xaa066e[_0x878d('0x68')]||!_0xaa066e[_0x878d('0x5a')]){_0x11e1ab=path[_0x878d('0x62')](config[_0x878d('0x63')],_0x595b19,_[_0x878d('0x64')](_0x878d('0x71')));}if(!fs['existsSync'](_0x11e1ab)){throw new db[(_0x878d('0x69'))]['ValidationError'](_[_0x878d('0x67')](_0x878d('0x5a'))+'\x20not\x20found');}return _0x37dc63[_0x878d('0x72')](_0x11e1ab);}})[_0x878d('0x4f')](handleError(_0x37dc63,null));};exports[_0x878d('0x73')]=function(_0xfb5852,_0x1132b5,_0x4f8d17){if(_0xfb5852[_0x878d('0x52')]&&_0xfb5852[_0x878d('0x52')][_0x878d('0x53')]){_0xfb5852[_0x878d('0x50')][_0x878d('0x5b')]=_0xfb5852['file'][_0x878d('0x53')];}return db[_0x878d('0x33')][_0x878d('0x4e')]({'where':{'id':_0xfb5852[_0x878d('0x59')]['id']}})[_0x878d('0x1b')](handleEntityNotFound(_0x1132b5,null))[_0x878d('0x1b')](saveUpdates(_0xfb5852['body'],null))['then'](respondWithResult(_0x1132b5,null))['catch'](handleError(_0x1132b5,null));};var utilLicense=require('../../config/license/util');exports[_0x878d('0x74')]=function(_0x4e9890,_0x4c407d,_0x120981){var _0x1e2179='server/files/images/logos';var _0x3b04a9={'custom':![]};return utilLicense[_0x878d('0x58')]()[_0x878d('0x1b')](function(_0x2f16ab){if(_0x2f16ab){_0x3b04a9=_0x2f16ab;}return db[_0x878d('0x33')][_0x878d('0x4e')]({'where':{'id':_0x4e9890[_0x878d('0x59')]['id']},'attributes':['logo',_0x878d('0x55'),_0x878d('0x5a'),_0x878d('0x5b'),_0x878d('0x5c'),'defaultLoginLogo',_0x878d('0x5e'),_0x878d('0x5f')],'raw':!![]});})[_0x878d('0x1b')](handleEntityNotFound(_0x4c407d,null))[_0x878d('0x1b')](function(_0x5bd172){if(_0x5bd172){var _0x18e4f4=_0x5bd172[_0x878d('0x5b')]&&fs['existsSync'](path[_0x878d('0x62')](config[_0x878d('0x63')],_0x1e2179,_[_0x878d('0x64')](_0x5bd172[_0x878d('0x5b')])))?path[_0x878d('0x62')](config[_0x878d('0x63')],_0x1e2179,_['toLower'](_0x5bd172[_0x878d('0x5b')])):path[_0x878d('0x62')](config[_0x878d('0x63')],_0x1e2179,_[_0x878d('0x64')](_0x878d('0x75')));var _0x2ffe09='default'+_[_0x878d('0x67')](_0x878d('0x5b'));if(_0x5bd172[_0x2ffe09]||!_0x3b04a9[_0x878d('0x68')]){_0x18e4f4=path[_0x878d('0x62')](config[_0x878d('0x63')],_0x1e2179,_[_0x878d('0x64')](_0x878d('0x75')));}if(!fs[_0x878d('0x61')](_0x18e4f4)){throw new db[(_0x878d('0x69'))][(_0x878d('0x6a'))](_[_0x878d('0x67')](_0x878d('0x5b'))+_0x878d('0x6b'));}return _0x4c407d['download'](_0x18e4f4);}})['catch'](handleError(_0x4c407d,null));};exports[_0x878d('0x76')]=function(_0x5af5f2,_0x4b7232){var _0x124d48={'offset':moment()[_0x878d('0x77')]()};_0x124d48['now']=moment()[_0x878d('0x77')](_0x124d48[_0x878d('0x27')])[_0x878d('0x78')]('YYYY-MM-DD\x20HH:mm:ss:SSS');return _0x4b7232[_0x878d('0x2b')](0xc8)[_0x878d('0x32')](_0x124d48);};
\ No newline at end of file
index 347f6e1..79a8e1b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe14b=['bluebird','path','./setting.attributes','exports','define','Setting','settings','lodash','util','moment'];(function(_0x35114c,_0x5ec8c4){var _0x1cb2a3=function(_0x43ce56){while(--_0x43ce56){_0x35114c['push'](_0x35114c['shift']());}};_0x1cb2a3(++_0x5ec8c4);}(_0xe14b,0x93));var _0xbe14=function(_0x393438,_0x4883a6){_0x393438=_0x393438-0x0;var _0x2a0986=_0xe14b[_0x393438];return _0x2a0986;};'use strict';var _=require(_0xbe14('0x0'));var util=require(_0xbe14('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xbe14('0x2'));var BPromise=require(_0xbe14('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xbe14('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xbe14('0x5'));module[_0xbe14('0x6')]=function(_0x1fe204,_0x1ff100){return _0x1fe204[_0xbe14('0x7')](_0xbe14('0x8'),attributes,{'tableName':_0xbe14('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9957=['exports','define','Setting','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./setting.attributes'];(function(_0x2d34d6,_0x397ff9){var _0x1d3d12=function(_0x558800){while(--_0x558800){_0x2d34d6['push'](_0x2d34d6['shift']());}};_0x1d3d12(++_0x397ff9);}(_0x9957,0x93));var _0x7995=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x9957[_0x3b380d];return _0x54502b;};'use strict';var _=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var logger=require(_0x7995('0x2'))(_0x7995('0x3'));var moment=require('moment');var BPromise=require(_0x7995('0x4'));var rp=require(_0x7995('0x5'));var fs=require('fs');var path=require(_0x7995('0x6'));var rimraf=require(_0x7995('0x7'));var config=require('../../config/environment');var attributes=require(_0x7995('0x8'));module[_0x7995('0x9')]=function(_0x137b6b,_0x219534){return _0x137b6b[_0x7995('0xa')](_0x7995('0xb'),attributes,{'tableName':'settings','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4e1654f..d7652a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x567e=['model','map','ShowSetting','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','then','info','Setting,\x20%s,\x20%s','debug','Setting,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','code','error','message','result','catch','Setting','options','raw','attributes','include'];(function(_0xa59fae,_0x313aa2){var _0x5ba11a=function(_0x5398fd){while(--_0x5398fd){_0xa59fae['push'](_0xa59fae['shift']());}};_0x5ba11a(++_0x313aa2);}(_0x567e,0xa3));var _0xe567=function(_0x1488d5,_0x4fea87){_0x1488d5=_0x1488d5-0x0;var _0x39dd45=_0x567e[_0x1488d5];return _0x39dd45;};'use strict';var _=require(_0xe567('0x0'));var util=require('util');var moment=require(_0xe567('0x1'));var BPromise=require(_0xe567('0x2'));var rs=require(_0xe567('0x3'));var fs=require('fs');var Redis=require(_0xe567('0x4'));var db=require(_0xe567('0x5'))['db'];var utils=require(_0xe567('0x6'));var logger=require(_0xe567('0x7'))(_0xe567('0x8'));var config=require('../../config/environment');var jayson=require(_0xe567('0x9'));var client=jayson[_0xe567('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2b8e64,_0x4f700e,_0x27425c){return new BPromise(function(_0x2d49e6,_0x19c2c9){return client[_0xe567('0xb')](_0x2b8e64,_0x27425c)[_0xe567('0xc')](function(_0x3805b0){logger[_0xe567('0xd')](_0xe567('0xe'),_0x4f700e,'request\x20sent');logger[_0xe567('0xf')](_0xe567('0x10'),_0x4f700e,_0xe567('0x11'),JSON[_0xe567('0x12')](_0x3805b0));if(_0x3805b0['error']){if(_0x3805b0['error'][_0xe567('0x13')]===0x1f4){logger[_0xe567('0x14')](_0xe567('0xe'),_0x4f700e,_0x3805b0[_0xe567('0x14')]['message']);return _0x19c2c9(_0x3805b0['error'][_0xe567('0x15')]);}logger[_0xe567('0x14')](_0xe567('0xe'),_0x4f700e,_0x3805b0[_0xe567('0x14')]['message']);return _0x2d49e6(_0x3805b0[_0xe567('0x14')]['message']);}else{logger['info']('Setting,\x20%s,\x20%s',_0x4f700e,'request\x20sent');_0x2d49e6(_0x3805b0[_0xe567('0x16')][_0xe567('0x15')]);}})[_0xe567('0x17')](function(_0x1b1b73){logger[_0xe567('0x14')]('Setting,\x20%s,\x20%s',_0x4f700e,_0x1b1b73);_0x19c2c9(_0x1b1b73);});});}exports['ShowSetting']=function(_0xe11f7){var _0x2cf6b5=this;return new Promise(function(_0x55d38e,_0x58e413){return db[_0xe567('0x18')]['find']({'raw':_0xe11f7[_0xe567('0x19')]?_0xe11f7[_0xe567('0x19')][_0xe567('0x1a')]===undefined?!![]:![]:!![],'where':_0xe11f7[_0xe567('0x19')]?_0xe11f7[_0xe567('0x19')]['where']||null:null,'attributes':_0xe11f7[_0xe567('0x19')]?_0xe11f7[_0xe567('0x19')][_0xe567('0x1b')]||null:null,'include':_0xe11f7[_0xe567('0x19')]?_0xe11f7[_0xe567('0x19')][_0xe567('0x1c')]?_['map'](_0xe11f7[_0xe567('0x19')][_0xe567('0x1c')],function(_0xab47c8){return{'model':db[_0xab47c8[_0xe567('0x1d')]],'as':_0xab47c8['as'],'attributes':_0xab47c8[_0xe567('0x1b')],'include':_0xab47c8[_0xe567('0x1c')]?_[_0xe567('0x1e')](_0xab47c8['include'],function(_0x2651c6){return{'model':db[_0x2651c6[_0xe567('0x1d')]],'as':_0x2651c6['as'],'attributes':_0x2651c6[_0xe567('0x1b')],'include':_0x2651c6['include']?_['map'](_0x2651c6[_0xe567('0x1c')],function(_0x1c5a71){return{'model':db[_0x1c5a71[_0xe567('0x1d')]],'as':_0x1c5a71['as'],'attributes':_0x1c5a71['attributes']};}):[]};}):[]};}):[]:[]})[_0xe567('0xc')](function(_0x4b7c39){logger[_0xe567('0xd')]('ShowSetting',_0xe11f7);logger[_0xe567('0xf')]('ShowSetting',_0xe11f7,JSON[_0xe567('0x12')](_0x4b7c39));_0x55d38e(_0x4b7c39);})[_0xe567('0x17')](function(_0x369343){logger[_0xe567('0x14')](_0xe567('0x1f'),_0x369343[_0xe567('0x15')],_0xe11f7);_0x58e413(_0x2cf6b5[_0xe567('0x14')](0x1f4,_0x369343[_0xe567('0x15')]));});});};
\ No newline at end of file
+var _0x2c64=['catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','request','then','info','Setting,\x20%s,\x20%s','request\x20sent','Setting,\x20%s,\x20%s,\x20%s','error','code','message','result','ShowSetting','Setting','find','options','where','attributes','include','map','model','debug','stringify'];(function(_0x48e92c,_0x202c32){var _0x4474dd=function(_0x449a23){while(--_0x449a23){_0x48e92c['push'](_0x48e92c['shift']());}};_0x4474dd(++_0x202c32);}(_0x2c64,0x16c));var _0x42c6=function(_0x2a67fe,_0x295c09){_0x2a67fe=_0x2a67fe-0x0;var _0x57e726=_0x2c64[_0x2a67fe];return _0x57e726;};'use strict';var _=require(_0x42c6('0x0'));var util=require(_0x42c6('0x1'));var moment=require(_0x42c6('0x2'));var BPromise=require(_0x42c6('0x3'));var rs=require(_0x42c6('0x4'));var fs=require('fs');var Redis=require(_0x42c6('0x5'));var db=require(_0x42c6('0x6'))['db'];var utils=require(_0x42c6('0x7'));var logger=require(_0x42c6('0x8'))('rpc');var config=require('../../config/environment');var jayson=require(_0x42c6('0x9'));var client=jayson[_0x42c6('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5c682a,_0x21c37c,_0x22829b){return new BPromise(function(_0x295a09,_0x54d1ee){return client[_0x42c6('0xb')](_0x5c682a,_0x22829b)[_0x42c6('0xc')](function(_0x2286b6){logger[_0x42c6('0xd')](_0x42c6('0xe'),_0x21c37c,_0x42c6('0xf'));logger['debug'](_0x42c6('0x10'),_0x21c37c,_0x42c6('0xf'),JSON['stringify'](_0x2286b6));if(_0x2286b6['error']){if(_0x2286b6[_0x42c6('0x11')][_0x42c6('0x12')]===0x1f4){logger[_0x42c6('0x11')](_0x42c6('0xe'),_0x21c37c,_0x2286b6[_0x42c6('0x11')][_0x42c6('0x13')]);return _0x54d1ee(_0x2286b6[_0x42c6('0x11')][_0x42c6('0x13')]);}logger[_0x42c6('0x11')](_0x42c6('0xe'),_0x21c37c,_0x2286b6['error'][_0x42c6('0x13')]);return _0x295a09(_0x2286b6[_0x42c6('0x11')][_0x42c6('0x13')]);}else{logger['info'](_0x42c6('0xe'),_0x21c37c,_0x42c6('0xf'));_0x295a09(_0x2286b6[_0x42c6('0x14')]['message']);}})['catch'](function(_0xe5b4b5){logger[_0x42c6('0x11')](_0x42c6('0xe'),_0x21c37c,_0xe5b4b5);_0x54d1ee(_0xe5b4b5);});});}exports[_0x42c6('0x15')]=function(_0x301770){var _0x36fcef=this;return new Promise(function(_0x516e8e,_0x414ee0){return db[_0x42c6('0x16')][_0x42c6('0x17')]({'raw':_0x301770[_0x42c6('0x18')]?_0x301770['options']['raw']===undefined?!![]:![]:!![],'where':_0x301770[_0x42c6('0x18')]?_0x301770['options'][_0x42c6('0x19')]||null:null,'attributes':_0x301770[_0x42c6('0x18')]?_0x301770[_0x42c6('0x18')][_0x42c6('0x1a')]||null:null,'include':_0x301770[_0x42c6('0x18')]?_0x301770[_0x42c6('0x18')][_0x42c6('0x1b')]?_[_0x42c6('0x1c')](_0x301770[_0x42c6('0x18')][_0x42c6('0x1b')],function(_0x64f20e){return{'model':db[_0x64f20e[_0x42c6('0x1d')]],'as':_0x64f20e['as'],'attributes':_0x64f20e[_0x42c6('0x1a')],'include':_0x64f20e[_0x42c6('0x1b')]?_[_0x42c6('0x1c')](_0x64f20e[_0x42c6('0x1b')],function(_0x2eb05a){return{'model':db[_0x2eb05a[_0x42c6('0x1d')]],'as':_0x2eb05a['as'],'attributes':_0x2eb05a[_0x42c6('0x1a')],'include':_0x2eb05a[_0x42c6('0x1b')]?_[_0x42c6('0x1c')](_0x2eb05a[_0x42c6('0x1b')],function(_0x171dd2){return{'model':db[_0x171dd2[_0x42c6('0x1d')]],'as':_0x171dd2['as'],'attributes':_0x171dd2[_0x42c6('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x42c6('0xc')](function(_0x23cbca){logger[_0x42c6('0xd')](_0x42c6('0x15'),_0x301770);logger[_0x42c6('0x1e')](_0x42c6('0x15'),_0x301770,JSON[_0x42c6('0x1f')](_0x23cbca));_0x516e8e(_0x23cbca);})[_0x42c6('0x20')](function(_0x31cbe5){logger['error'](_0x42c6('0x15'),_0x31cbe5[_0x42c6('0x13')],_0x301770);_0x414ee0(_0x36fcef[_0x42c6('0x11')](0x1f4,_0x31cbe5[_0x42c6('0x13')]));});});};
\ No newline at end of file
index 41a24a0..3aace9b 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(_0x49f288,_0x3b47bd){var _0x29c526=function(_0x1c01ae){while(--_0x1c01ae){_0x49f288['push'](_0x49f288['shift']());}};_0x29c526(++_0x3b47bd);}(_0x7fbe,0x1ec));var _0xe7fb=function(_0x56418c,_0xd90668){_0x56418c=_0x56418c-0x0;var _0x1c838d=_0x7fbe[_0x56418c];return _0x1c838d;};'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 _0x814b=['/describe','describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/applications','getApplications','/:id/interactions','getInteractions','/:id/status','statusGet','/:id/users','getAgents','post','create','addDisposition','addAnswer','/:id/send','status','addAgents','put','update','destroy','delete','removeDispositions','removeAnswers','removeAgents','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsAccount.controller','get','isAuthenticated'];(function(_0x5b7193,_0x304c69){var _0x4016af=function(_0x2e5b00){while(--_0x2e5b00){_0x5b7193['push'](_0x5b7193['shift']());}};_0x4016af(++_0x304c69);}(_0x814b,0x1a2));var _0xb814=function(_0x42d1f8,_0x22e529){_0x42d1f8=_0x42d1f8-0x0;var _0x40d234=_0x814b[_0x42d1f8];return _0x40d234;};'use strict';var multer=require(_0xb814('0x0'));var util=require(_0xb814('0x1'));var path=require(_0xb814('0x2'));var timeout=require(_0xb814('0x3'));var express=require(_0xb814('0x4'));var router=express[_0xb814('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xb814('0x6'));var interaction=require(_0xb814('0x7'));var config=require(_0xb814('0x8'));var controller=require(_0xb814('0x9'));router[_0xb814('0xa')]('/',auth[_0xb814('0xb')](),controller['index']);router[_0xb814('0xa')](_0xb814('0xc'),auth['isAuthenticated'](),controller[_0xb814('0xd')]);router[_0xb814('0xa')](_0xb814('0xe'),auth[_0xb814('0xb')](),controller[_0xb814('0xf')]);router[_0xb814('0xa')](_0xb814('0x10'),auth[_0xb814('0xb')](),controller[_0xb814('0x11')]);router[_0xb814('0xa')](_0xb814('0x12'),auth['isAuthenticated'](),controller[_0xb814('0x13')]);router['get'](_0xb814('0x14'),auth[_0xb814('0xb')](),controller[_0xb814('0x15')]);router[_0xb814('0xa')](_0xb814('0x16'),auth[_0xb814('0xb')](),controller[_0xb814('0x17')]);router[_0xb814('0xa')](_0xb814('0x18'),controller[_0xb814('0x19')]);router[_0xb814('0xa')](_0xb814('0x1a'),auth[_0xb814('0xb')](),controller[_0xb814('0x1b')]);router[_0xb814('0x1c')]('/',auth[_0xb814('0xb')](),controller[_0xb814('0x1d')]);router[_0xb814('0x1c')](_0xb814('0x10'),auth[_0xb814('0xb')](),controller[_0xb814('0x1e')]);router['post'](_0xb814('0x12'),auth['isAuthenticated'](),controller[_0xb814('0x1f')]);router[_0xb814('0x1c')]('/:id/notify',controller['notify']);router['post'](_0xb814('0x14'),auth['isAuthenticated'](),controller['addApplications']);router[_0xb814('0x1c')](_0xb814('0x20'),auth[_0xb814('0xb')](),controller['send']);router[_0xb814('0x1c')]('/:id/status',controller[_0xb814('0x21')]);router[_0xb814('0x1c')](_0xb814('0x1a'),auth[_0xb814('0xb')](),controller[_0xb814('0x22')]);router[_0xb814('0x23')](_0xb814('0xe'),auth['isAuthenticated'](),controller[_0xb814('0x24')]);router['delete'](_0xb814('0xe'),auth[_0xb814('0xb')](),controller[_0xb814('0x25')]);router[_0xb814('0x26')](_0xb814('0x10'),auth[_0xb814('0xb')](),controller[_0xb814('0x27')]);router['delete'](_0xb814('0x12'),auth[_0xb814('0xb')](),controller[_0xb814('0x28')]);router[_0xb814('0x26')](_0xb814('0x1a'),auth[_0xb814('0xb')](),controller[_0xb814('0x29')]);module[_0xb814('0x2a')]=router;
\ No newline at end of file
index fa9e456..43aede5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf378=['BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','randomstring','exports','STRING','name','generate','connectel','clicksend','plivo','clickatell','bandwidth','infobip','TEXT'];(function(_0x1fec86,_0x422ed7){var _0x55e897=function(_0x5750ca){while(--_0x5750ca){_0x1fec86['push'](_0x1fec86['shift']());}};_0x55e897(++_0x422ed7);}(_0xf378,0x11f));var _0x8f37=function(_0x17b6e3,_0x4522ed){_0x17b6e3=_0x17b6e3-0x0;var _0x3906f3=_0xf378[_0x17b6e3];return _0x3906f3;};'use strict';var Sequelize=require(_0x8f37('0x0'));var rs=require(_0x8f37('0x1'));module[_0x8f37('0x2')]={'name':{'type':Sequelize[_0x8f37('0x3')],'unique':_0x8f37('0x4'),'allowNull':![]},'key':{'type':Sequelize[_0x8f37('0x3')],'allowNull':![]},'remote':{'type':Sequelize[_0x8f37('0x3')],'allowNull':![]},'token':{'type':Sequelize[_0x8f37('0x3')],'defaultValue':function(){return rs[_0x8f37('0x5')]();}},'phone':{'type':Sequelize['STRING']},'type':{'type':Sequelize['ENUM']('twilio','skebby',_0x8f37('0x6'),_0x8f37('0x7'),_0x8f37('0x8'),_0x8f37('0x9'),_0x8f37('0xa'),'csc',_0x8f37('0xb'),'intelepeer')},'accountSid':{'type':Sequelize[_0x8f37('0x3')]},'authId':{'type':Sequelize[_0x8f37('0x3')]},'authToken':{'type':Sequelize['STRING']},'smsMethod':{'type':Sequelize['ENUM']('SI','TI','GP')},'username':{'type':Sequelize[_0x8f37('0x3')]},'password':{'type':Sequelize[_0x8f37('0x3')]},'apiKey':{'type':Sequelize['STRING']},'applicationId':{'type':Sequelize[_0x8f37('0x3')]},'accountId':{'type':Sequelize[_0x8f37('0x3')]},'senderString':{'type':Sequelize[_0x8f37('0x3')]},'deliveryReport':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'description':{'type':Sequelize[_0x8f37('0x3')]},'notificationTemplate':{'type':Sequelize[_0x8f37('0xc')],'defaultValue':function(){return'Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}';}},'notificationSound':{'type':Sequelize[_0x8f37('0xd')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x8f37('0xd')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x8f37('0xe')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x8f37('0xd')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x8f37('0xe')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x8f37('0xd')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x8f37('0xe')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'baseUrl':{'type':Sequelize[_0x8f37('0x3')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0x8f37('0xe')],'comment':_0x8f37('0xf')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0x8f37('0x10'),'set':function(_0x5af18c){if(!_0x5af18c)this[_0x8f37('0x11')](_0x8f37('0x12'),null);this['setDataValue'](_0x8f37('0x13'),_0x5af18c);}}};
\ No newline at end of file
+var _0xd244=['name','generate','ENUM','twilio','skebby','connectel','clicksend','plivo','clickatell','bandwidth','infobip','intelepeer','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','exports','STRING'];(function(_0x5a44f1,_0x4f6b0b){var _0x4c2088=function(_0x3e2e0c){while(--_0x3e2e0c){_0x5a44f1['push'](_0x5a44f1['shift']());}};_0x4c2088(++_0x4f6b0b);}(_0xd244,0x1dd));var _0x4d24=function(_0x1eda20,_0x1149f4){_0x1eda20=_0x1eda20-0x0;var _0x31b953=_0xd244[_0x1eda20];return _0x31b953;};'use strict';var Sequelize=require(_0x4d24('0x0'));var rs=require('randomstring');module[_0x4d24('0x1')]={'name':{'type':Sequelize[_0x4d24('0x2')],'unique':_0x4d24('0x3'),'allowNull':![]},'key':{'type':Sequelize['STRING'],'allowNull':![]},'remote':{'type':Sequelize[_0x4d24('0x2')],'allowNull':![]},'token':{'type':Sequelize[_0x4d24('0x2')],'defaultValue':function(){return rs[_0x4d24('0x4')]();}},'phone':{'type':Sequelize[_0x4d24('0x2')]},'type':{'type':Sequelize[_0x4d24('0x5')](_0x4d24('0x6'),_0x4d24('0x7'),_0x4d24('0x8'),_0x4d24('0x9'),_0x4d24('0xa'),_0x4d24('0xb'),_0x4d24('0xc'),'csc',_0x4d24('0xd'),_0x4d24('0xe'))},'accountSid':{'type':Sequelize[_0x4d24('0x2')]},'authId':{'type':Sequelize[_0x4d24('0x2')]},'authToken':{'type':Sequelize[_0x4d24('0x2')]},'smsMethod':{'type':Sequelize[_0x4d24('0x5')]('SI','TI','GP')},'username':{'type':Sequelize[_0x4d24('0x2')]},'password':{'type':Sequelize['STRING']},'apiKey':{'type':Sequelize[_0x4d24('0x2')]},'applicationId':{'type':Sequelize[_0x4d24('0x2')]},'accountId':{'type':Sequelize[_0x4d24('0x2')]},'senderString':{'type':Sequelize[_0x4d24('0x2')]},'deliveryReport':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'description':{'type':Sequelize[_0x4d24('0x2')]},'notificationTemplate':{'type':Sequelize[_0x4d24('0xf')],'defaultValue':function(){return _0x4d24('0x10');}},'notificationSound':{'type':Sequelize[_0x4d24('0x11')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x4d24('0x11')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x4d24('0x11')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x4d24('0x12')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x4d24('0x12')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'baseUrl':{'type':Sequelize[_0x4d24('0x2')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0x4d24('0x12')],'comment':_0x4d24('0x13')},'mandatoryDisposition':{'type':Sequelize[_0x4d24('0x11')],'defaultValue':![],'comment':_0x4d24('0x14'),'set':function(_0x3e6c05){if(!_0x3e6c05)this[_0x4d24('0x15')](_0x4d24('0x16'),null);this[_0x4d24('0x15')](_0x4d24('0x17'),_0x3e6c05);}}};
\ No newline at end of file
index 7708055..10df84c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf7a6=['sox','to-csv','ejs','lodash','squel','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','redis','localhost','socket.io-emitter','./smsAccount.socket','client','http','then','SmsAccount,\x20%s,\x20%s','request\x20sent','debug','error','code','message','info','result','catch','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','get','SmsAccounts','UserProfileResource','end','sendStatus','name','send','index','Pause','mandatoryDispositionPause','map','SmsAccount','rawAttributes','fieldName','type','model','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','filters','pick','filter','where','VIRTUAL','merge','options','includeAll','include','findAll','rows','show','params','keys','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','autoAssociation','describe','addDisposition','SmsAccountId','getDispositions','Disposition','sort','removeDispositions','ids','CannedAnswer','create','removeAnswers','notify','Applications','account','applications','orderBy','priority','asc','CmContact','ValidationError','no\x20available\x20attributes','createdAt','updatedAt','CompanyId','ListId','mobile','twilio','from','From','messageId','MessageSid','skebby','sender','connectel','clicksend','message_id','plivo','Text','MessageUUID','infobip','results','text','originatingAddress','segmentedMessage','clickatell','fromNumber','replyMessageId','bandwidth','intelepeer','Sequelize','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','Contacts','DESC','list','omit','defaults','contact','SmsInteraction','spread','created','autoclose','push','*,*,*,*','interaction','SmsMessage','ContactId','AttachmentId','UserId','unshift','waitForTheAssignedAgent','Start','startRouting','receiveMessage','entity\x20found','SmsAccount,\x20%s,\x20%s,\x20%s,\x20%s','stringify','Content-Type','text/xml','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','addApplications','transaction','SmsApplication','findAndCountAll','getApplications','findOne','getInteractions','Contact','User','Owner','internal','Tag','color','tag','to\x20is\x20mandatory','List','out','Messages','dataValues','inspect','skebby_dispatch_id','statusInt','requestid','status_code','groupName','DELIVERED','redif','SmsAccount,\x20%s,\x20%s,\x20%s','DELIVERED_TO_GATEWAY','RECEIVED_BY_RECIPIENT','statusGet','csc','message-id','state','addAgents','emit','removeAgents','isArray','userSmsAccount:remove','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util'];(function(_0x11fdb4,_0x126ff0){var _0x7a2344=function(_0x415772){while(--_0x415772){_0x11fdb4['push'](_0x11fdb4['shift']());}};_0x7a2344(++_0x126ff0);}(_0xf7a6,0x1b7));var _0x6f7a=function(_0xbd08b4,_0x4790ed){_0xbd08b4=_0xbd08b4-0x0;var _0x314f1e=_0xf7a6[_0xbd08b4];return _0x314f1e;};'use strict';var emlformat=require(_0x6f7a('0x0'));var rimraf=require(_0x6f7a('0x1'));var zipdir=require(_0x6f7a('0x2'));var jsonpatch=require(_0x6f7a('0x3'));var rp=require(_0x6f7a('0x4'));var moment=require(_0x6f7a('0x5'));var BPromise=require(_0x6f7a('0x6'));var Mustache=require(_0x6f7a('0x7'));var util=require(_0x6f7a('0x8'));var path=require('path');var sox=require(_0x6f7a('0x9'));var csv=require(_0x6f7a('0xa'));var ejs=require(_0x6f7a('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x6f7a('0xc'));var squel=require(_0x6f7a('0xd'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x6f7a('0xe'));var toCsv=require('to-csv');var querystring=require(_0x6f7a('0xf'));var Papa=require(_0x6f7a('0x10'));var Redis=require(_0x6f7a('0x11'));var authService=require(_0x6f7a('0x12'));var qs=require(_0x6f7a('0x13'));var as=require(_0x6f7a('0x14'));var hardwareService=require(_0x6f7a('0x15'));var logger=require(_0x6f7a('0x16'))(_0x6f7a('0x17'));var utils=require(_0x6f7a('0x18'));var config=require(_0x6f7a('0x19'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config['redis']=_['defaults'](config[_0x6f7a('0x1a')],{'host':_0x6f7a('0x1b'),'port':0x18eb});var socket=require(_0x6f7a('0x1c'))(new Redis(config['redis']));require(_0x6f7a('0x1d'))['register'](socket);var jayson=require('jayson/promise');var client=jayson[_0x6f7a('0x1e')][_0x6f7a('0x1f')]({'port':0x232c});function respondWithRpcPromise(_0x2f59ee,_0x38ce03,_0x31c490,_0x2f71d2){return new BPromise(function(_0x4ab21d,_0x535063){var _0x29cde1=_0x2f71d2||client;return _0x29cde1['request'](_0x2f59ee,_0x31c490)[_0x6f7a('0x20')](function(_0x3812c4){logger['info'](_0x6f7a('0x21'),_0x38ce03,_0x6f7a('0x22'));logger[_0x6f7a('0x23')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x38ce03,_0x6f7a('0x22'),JSON['stringify'](_0x3812c4));if(_0x3812c4[_0x6f7a('0x24')]){if(_0x3812c4['error'][_0x6f7a('0x25')]===0x1f4){logger[_0x6f7a('0x24')](_0x6f7a('0x21'),_0x38ce03,_0x3812c4[_0x6f7a('0x24')]['message']);return _0x535063(_0x3812c4[_0x6f7a('0x24')][_0x6f7a('0x26')]);}logger[_0x6f7a('0x24')](_0x6f7a('0x21'),_0x38ce03,_0x3812c4[_0x6f7a('0x24')]['message']);return _0x4ab21d(_0x3812c4[_0x6f7a('0x24')][_0x6f7a('0x26')]);}else{logger[_0x6f7a('0x27')]('SmsAccount,\x20%s,\x20%s',_0x38ce03,_0x6f7a('0x22'));_0x4ab21d(_0x3812c4[_0x6f7a('0x28')][_0x6f7a('0x26')]);}})[_0x6f7a('0x29')](function(_0x2d4c68){logger[_0x6f7a('0x24')]('SmsAccount,\x20%s,\x20%s',_0x38ce03,_0x2d4c68);_0x535063(_0x2d4c68);});});}function respondWithStatusCode(_0x5cdfcc,_0x67c26b){_0x67c26b=_0x67c26b||0xcc;return function(_0x5aa02a){if(_0x5aa02a){return _0x5cdfcc['sendStatus'](_0x67c26b);}return _0x5cdfcc[_0x6f7a('0x2a')](_0x67c26b)['end']();};}function respondWithResult(_0x3bbd12,_0x416020){_0x416020=_0x416020||0xc8;return function(_0x2351c2){if(_0x2351c2){return _0x3bbd12[_0x6f7a('0x2a')](_0x416020)[_0x6f7a('0x2b')](_0x2351c2);}};}function respondWithFilteredResult(_0x551943,_0x3c1bea){return function(_0x34c2c1){if(_0x34c2c1){var _0x14621b=typeof _0x3c1bea[_0x6f7a('0x2c')]===_0x6f7a('0x2d')&&typeof _0x3c1bea[_0x6f7a('0x2e')]==='undefined';var _0x44ce4e=_0x34c2c1[_0x6f7a('0x2f')];var _0x590c=_0x14621b?0x0:_0x3c1bea[_0x6f7a('0x2c')];var _0x5aae9f=_0x14621b?_0x34c2c1[_0x6f7a('0x2f')]:_0x3c1bea[_0x6f7a('0x2c')]+_0x3c1bea[_0x6f7a('0x2e')];var _0x4ff7a5;if(_0x5aae9f>=_0x44ce4e){_0x5aae9f=_0x44ce4e;_0x4ff7a5=0xc8;}else{_0x4ff7a5=0xce;}_0x551943[_0x6f7a('0x2a')](_0x4ff7a5);return _0x551943[_0x6f7a('0x30')](_0x6f7a('0x31'),_0x590c+'-'+_0x5aae9f+'/'+_0x44ce4e)[_0x6f7a('0x2b')](_0x34c2c1);}return null;};}function patchUpdates(_0x153a74){return function(_0x3d5931){try{jsonpatch[_0x6f7a('0x32')](_0x3d5931,_0x153a74,!![]);}catch(_0x317592){return BPromise[_0x6f7a('0x33')](_0x317592);}return _0x3d5931[_0x6f7a('0x34')]();};}function saveUpdates(_0x550f85,_0x35756a){return function(_0x584189){if(_0x584189){return _0x584189[_0x6f7a('0x35')](_0x550f85)[_0x6f7a('0x20')](function(_0x1082a3){return _0x1082a3;});}return null;};}function removeEntity(_0x2c95be,_0xc943fb){return function(_0x25db77){if(_0x25db77){return _0x25db77[_0x6f7a('0x36')]()[_0x6f7a('0x20')](function(){var _0x3e3231=_0x25db77[_0x6f7a('0x37')]({'plain':!![]});var _0x8b4614=_0x6f7a('0x38');return db[_0x6f7a('0x39')][_0x6f7a('0x36')]({'where':{'type':_0x8b4614,'resourceId':_0x3e3231['id']}})['then'](function(){return _0x25db77;});})[_0x6f7a('0x20')](function(){_0x2c95be[_0x6f7a('0x2a')](0xcc)[_0x6f7a('0x3a')]();});}};}function handleEntityNotFound(_0x2bbbcd,_0x305d5e){return function(_0xbd9311){if(!_0xbd9311){_0x2bbbcd[_0x6f7a('0x3b')](0x194);}return _0xbd9311;};}function handleError(_0x22287f,_0x195802){_0x195802=_0x195802||0x1f4;return function(_0x3a204b){logger[_0x6f7a('0x24')](_0x3a204b['stack']);if(_0x3a204b['name']){delete _0x3a204b[_0x6f7a('0x3c')];}_0x22287f[_0x6f7a('0x2a')](_0x195802)[_0x6f7a('0x3d')](_0x3a204b);};}exports[_0x6f7a('0x3e')]=function(_0xa2bc5b,_0x12bbb3){var _0x2352da={'include':[{'model':db[_0x6f7a('0x3f')],'as':_0x6f7a('0x40')}]},_0x481552={},_0x3ed8fa={'count':0x0,'rows':[]};var _0x32e835=_[_0x6f7a('0x41')](db[_0x6f7a('0x42')][_0x6f7a('0x43')],function(_0x124867){return{'name':_0x124867[_0x6f7a('0x44')],'type':_0x124867[_0x6f7a('0x45')]['key']};});_0x481552[_0x6f7a('0x46')]=_[_0x6f7a('0x41')](_0x32e835,'name');_0x481552[_0x6f7a('0x47')]=_['keys'](_0xa2bc5b[_0x6f7a('0x47')]);_0x481552['filters']=_[_0x6f7a('0x48')](_0x481552[_0x6f7a('0x46')],_0x481552[_0x6f7a('0x47')]);_0x2352da[_0x6f7a('0x49')]=_[_0x6f7a('0x48')](_0x481552[_0x6f7a('0x46')],qs[_0x6f7a('0x4a')](_0xa2bc5b[_0x6f7a('0x47')]['fields']));_0x2352da[_0x6f7a('0x49')]=_0x2352da[_0x6f7a('0x49')][_0x6f7a('0x4b')]?_0x2352da[_0x6f7a('0x49')]:_0x481552[_0x6f7a('0x46')];if(!_0xa2bc5b['query'][_0x6f7a('0x4c')](_0x6f7a('0x4d'))){_0x2352da[_0x6f7a('0x2e')]=qs[_0x6f7a('0x2e')](_0xa2bc5b['query'][_0x6f7a('0x2e')]);_0x2352da['offset']=qs[_0x6f7a('0x2c')](_0xa2bc5b[_0x6f7a('0x47')][_0x6f7a('0x2c')]);}_0x2352da[_0x6f7a('0x4e')]=qs['sort'](_0xa2bc5b[_0x6f7a('0x47')]['sort']);_0x2352da['where']=qs[_0x6f7a('0x4f')](_[_0x6f7a('0x50')](_0xa2bc5b[_0x6f7a('0x47')],_0x481552[_0x6f7a('0x4f')]),_0x32e835);if(_0xa2bc5b[_0x6f7a('0x47')][_0x6f7a('0x51')]){_0x2352da[_0x6f7a('0x52')]=_['merge'](_0x2352da[_0x6f7a('0x52')],{'$or':_[_0x6f7a('0x41')](_0x32e835,function(_0x53976c){if(_0x53976c[_0x6f7a('0x45')]!==_0x6f7a('0x53')){var _0x2f66a6={};_0x2f66a6[_0x53976c[_0x6f7a('0x3c')]]={'$like':'%'+_0xa2bc5b[_0x6f7a('0x47')][_0x6f7a('0x51')]+'%'};return _0x2f66a6;}})});}_0x2352da=_[_0x6f7a('0x54')]({},_0x2352da,_0xa2bc5b[_0x6f7a('0x55')]);var _0x4d785c={'where':_0x2352da[_0x6f7a('0x52')]};return db[_0x6f7a('0x42')][_0x6f7a('0x2f')](_0x4d785c)[_0x6f7a('0x20')](function(_0x241eec){_0x3ed8fa[_0x6f7a('0x2f')]=_0x241eec;if(_0xa2bc5b[_0x6f7a('0x47')][_0x6f7a('0x56')]){_0x2352da[_0x6f7a('0x57')]=[{'all':!![]}];}return db['SmsAccount'][_0x6f7a('0x58')](_0x2352da);})[_0x6f7a('0x20')](function(_0x2aaf3c){_0x3ed8fa[_0x6f7a('0x59')]=_0x2aaf3c;return _0x3ed8fa;})[_0x6f7a('0x20')](respondWithFilteredResult(_0x12bbb3,_0x2352da))[_0x6f7a('0x29')](handleError(_0x12bbb3,null));};exports[_0x6f7a('0x5a')]=function(_0x585d43,_0x6f1fd9){var _0x58f5ed={'raw':![],'where':{'id':_0x585d43[_0x6f7a('0x5b')]['id']},'include':[{'model':db[_0x6f7a('0x3f')],'as':'mandatoryDispositionPause'}]},_0x2c6025={};_0x2c6025[_0x6f7a('0x46')]=_[_0x6f7a('0x5c')](db[_0x6f7a('0x42')][_0x6f7a('0x43')]);_0x2c6025['query']=_['keys'](_0x585d43['query']);_0x2c6025[_0x6f7a('0x4f')]=_[_0x6f7a('0x48')](_0x2c6025[_0x6f7a('0x46')],_0x2c6025[_0x6f7a('0x47')]);_0x58f5ed['attributes']=_['intersection'](_0x2c6025[_0x6f7a('0x46')],qs[_0x6f7a('0x4a')](_0x585d43['query'][_0x6f7a('0x4a')]));_0x58f5ed[_0x6f7a('0x49')]=_0x58f5ed[_0x6f7a('0x49')]['length']?_0x58f5ed['attributes']:_0x2c6025[_0x6f7a('0x46')];if(_0x585d43[_0x6f7a('0x47')]['includeAll']){_0x58f5ed[_0x6f7a('0x57')]=[{'all':!![]}];}_0x58f5ed=_[_0x6f7a('0x54')]({},_0x58f5ed,_0x585d43[_0x6f7a('0x55')]);return db[_0x6f7a('0x42')]['find'](_0x58f5ed)['then'](handleEntityNotFound(_0x6f1fd9,null))[_0x6f7a('0x20')](respondWithResult(_0x6f1fd9,null))[_0x6f7a('0x29')](handleError(_0x6f1fd9,null));};exports['create']=function(_0x1b97df,_0x3962fc){return db[_0x6f7a('0x42')]['create'](_0x1b97df[_0x6f7a('0x5d')],{})[_0x6f7a('0x20')](function(_0x5d4a80){var _0x450e02=_0x1b97df[_0x6f7a('0x5e')][_0x6f7a('0x37')]({'plain':!![]});if(!_0x450e02)throw new Error(_0x6f7a('0x5f'));if(_0x450e02[_0x6f7a('0x60')]==='user'){var _0x1d9e63=_0x5d4a80['get']({'plain':!![]});var _0x15b0c4=_0x6f7a('0x38');return db[_0x6f7a('0x61')][_0x6f7a('0x62')]({'where':{'name':_0x15b0c4,'userProfileId':_0x450e02['userProfileId']},'raw':!![]})[_0x6f7a('0x20')](function(_0x16aa18){if(_0x16aa18&&_0x16aa18[_0x6f7a('0x63')]===0x0){return db['UserProfileResource']['create']({'name':_0x1d9e63[_0x6f7a('0x3c')],'resourceId':_0x1d9e63['id'],'type':_0x16aa18['name'],'sectionId':_0x16aa18['id']},{})[_0x6f7a('0x20')](function(){return _0x5d4a80;});}else{return _0x5d4a80;}})[_0x6f7a('0x29')](function(_0x3fb644){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x3fb644);throw _0x3fb644;});}return _0x5d4a80;})[_0x6f7a('0x20')](respondWithResult(_0x3962fc,0xc9))['catch'](handleError(_0x3962fc,null));};exports[_0x6f7a('0x35')]=function(_0x1086ee,_0x39edc7){if(_0x1086ee[_0x6f7a('0x5d')]['id']){delete _0x1086ee[_0x6f7a('0x5d')]['id'];}return db[_0x6f7a('0x42')][_0x6f7a('0x62')]({'where':{'id':_0x1086ee['params']['id']},'include':[{'model':db[_0x6f7a('0x3f')],'as':'mandatoryDispositionPause'}]})[_0x6f7a('0x20')](handleEntityNotFound(_0x39edc7,null))[_0x6f7a('0x20')](saveUpdates(_0x1086ee['body'],null))['then'](respondWithResult(_0x39edc7,null))[_0x6f7a('0x29')](handleError(_0x39edc7,null));};exports[_0x6f7a('0x36')]=function(_0x32d168,_0x3e8c0c){return db[_0x6f7a('0x42')][_0x6f7a('0x62')]({'where':{'id':_0x32d168['params']['id']}})['then'](handleEntityNotFound(_0x3e8c0c,null))[_0x6f7a('0x20')](removeEntity(_0x3e8c0c,null))['catch'](handleError(_0x3e8c0c,null));};exports[_0x6f7a('0x64')]=function(_0x31f4c2,_0x2cf17f){return db[_0x6f7a('0x42')][_0x6f7a('0x64')]()[_0x6f7a('0x20')](respondWithResult(_0x2cf17f,null))['catch'](handleError(_0x2cf17f,null));};exports[_0x6f7a('0x65')]=function(_0x1fb82e,_0x350c08,_0x45b20e){if(_0x1fb82e[_0x6f7a('0x5d')]['id']){delete _0x1fb82e[_0x6f7a('0x5d')]['id'];}return db['SmsAccount'][_0x6f7a('0x62')]({'where':{'id':_0x1fb82e[_0x6f7a('0x5b')]['id']}})[_0x6f7a('0x20')](handleEntityNotFound(_0x350c08,null))['then'](function(_0x440b29){if(_0x440b29){_0x1fb82e[_0x6f7a('0x5d')][_0x6f7a('0x66')]=_0x440b29['id'];return db['Disposition']['create'](_0x1fb82e['body']);}})[_0x6f7a('0x20')](respondWithResult(_0x350c08,null))[_0x6f7a('0x29')](handleError(_0x350c08,null));};exports[_0x6f7a('0x67')]=function(_0x3c2681,_0x316f6d,_0x402ec7){var _0x550571={'raw':![],'where':{}};var _0x5a43d0={};var _0x15661c={'count':0x0,'rows':[]};return db['SmsAccount']['findOne']({'where':{'id':_0x3c2681['params']['id']}})[_0x6f7a('0x20')](handleEntityNotFound(_0x316f6d,null))[_0x6f7a('0x20')](function(_0x3778af){if(_0x3778af){_0x5a43d0['model']=_[_0x6f7a('0x5c')](db[_0x6f7a('0x68')][_0x6f7a('0x43')]);_0x5a43d0[_0x6f7a('0x47')]=_[_0x6f7a('0x5c')](_0x3c2681[_0x6f7a('0x47')]);_0x5a43d0[_0x6f7a('0x4f')]=_[_0x6f7a('0x48')](_0x5a43d0[_0x6f7a('0x46')],_0x5a43d0[_0x6f7a('0x47')]);_0x550571[_0x6f7a('0x49')]=_['intersection'](_0x5a43d0[_0x6f7a('0x46')],qs[_0x6f7a('0x4a')](_0x3c2681['query']['fields']));_0x550571[_0x6f7a('0x49')]=_0x550571[_0x6f7a('0x49')][_0x6f7a('0x4b')]?_0x550571[_0x6f7a('0x49')]:_0x5a43d0[_0x6f7a('0x46')];if(!_0x3c2681[_0x6f7a('0x47')][_0x6f7a('0x4c')](_0x6f7a('0x4d'))){_0x550571[_0x6f7a('0x2e')]=qs[_0x6f7a('0x2e')](_0x3c2681[_0x6f7a('0x47')][_0x6f7a('0x2e')]);_0x550571[_0x6f7a('0x2c')]=qs['offset'](_0x3c2681['query'][_0x6f7a('0x2c')]);}_0x550571[_0x6f7a('0x4e')]=qs[_0x6f7a('0x69')](_0x3c2681[_0x6f7a('0x47')][_0x6f7a('0x69')]);_0x550571['where']=qs[_0x6f7a('0x4f')](_['pick'](_0x3c2681[_0x6f7a('0x47')],_0x5a43d0[_0x6f7a('0x4f')]));_0x550571[_0x6f7a('0x52')]['SmsAccountId']=_0x3778af['id'];if(_0x3c2681[_0x6f7a('0x47')][_0x6f7a('0x51')]){_0x550571[_0x6f7a('0x52')]=_[_0x6f7a('0x54')](_0x550571[_0x6f7a('0x52')],{'$or':_[_0x6f7a('0x41')](_0x550571[_0x6f7a('0x49')],function(_0x570c52){var _0x2817db={};_0x2817db[_0x570c52]={'$like':'%'+_0x3c2681[_0x6f7a('0x47')][_0x6f7a('0x51')]+'%'};return _0x2817db;})});}_0x550571=_[_0x6f7a('0x54')]({},_0x550571,_0x3c2681['options']);return db[_0x6f7a('0x68')][_0x6f7a('0x2f')]({'where':_0x550571[_0x6f7a('0x52')]})[_0x6f7a('0x20')](function(_0x5b0fb9){_0x15661c['count']=_0x5b0fb9;if(_0x3c2681[_0x6f7a('0x47')][_0x6f7a('0x56')]){_0x550571['include']=[{'all':!![]}];}return db[_0x6f7a('0x68')]['findAll'](_0x550571);})[_0x6f7a('0x20')](function(_0x143397){_0x15661c[_0x6f7a('0x59')]=_0x143397;return _0x15661c;});}})[_0x6f7a('0x20')](respondWithFilteredResult(_0x316f6d,_0x550571))[_0x6f7a('0x29')](handleError(_0x316f6d,null));};exports[_0x6f7a('0x6a')]=function(_0xcec829,_0x59c98e,_0x92407){return db['SmsAccount'][_0x6f7a('0x62')]({'where':{'id':_0xcec829['params']['id']}})[_0x6f7a('0x20')](handleEntityNotFound(_0x59c98e,null))[_0x6f7a('0x20')](function(_0x2de824){if(_0x2de824){return _0x2de824[_0x6f7a('0x6a')](_0xcec829['query'][_0x6f7a('0x6b')]);}})['then'](respondWithStatusCode(_0x59c98e,null))[_0x6f7a('0x29')](handleError(_0x59c98e,null));};exports['addAnswer']=function(_0x397ab4,_0x5641ea,_0x55c3ca){if(_0x397ab4[_0x6f7a('0x5d')]['id']){delete _0x397ab4[_0x6f7a('0x5d')]['id'];}return db[_0x6f7a('0x42')][_0x6f7a('0x62')]({'where':{'id':_0x397ab4[_0x6f7a('0x5b')]['id']}})[_0x6f7a('0x20')](handleEntityNotFound(_0x5641ea,null))[_0x6f7a('0x20')](function(_0x3fb6be){if(_0x3fb6be){_0x397ab4[_0x6f7a('0x5d')][_0x6f7a('0x66')]=_0x3fb6be['id'];return db[_0x6f7a('0x6c')][_0x6f7a('0x6d')](_0x397ab4['body']);}})[_0x6f7a('0x20')](respondWithResult(_0x5641ea,null))[_0x6f7a('0x29')](handleError(_0x5641ea,null));};exports['getAnswers']=function(_0x545270,_0x2a0595,_0x51cb89){var _0x37f6bb={'raw':![],'where':{}};var _0x2a8cd6={};var _0x17534a={'count':0x0,'rows':[]};return db['SmsAccount']['findOne']({'where':{'id':_0x545270[_0x6f7a('0x5b')]['id']}})['then'](handleEntityNotFound(_0x2a0595,null))[_0x6f7a('0x20')](function(_0x543320){if(_0x543320){_0x2a8cd6[_0x6f7a('0x46')]=_[_0x6f7a('0x5c')](db[_0x6f7a('0x6c')][_0x6f7a('0x43')]);_0x2a8cd6[_0x6f7a('0x47')]=_[_0x6f7a('0x5c')](_0x545270[_0x6f7a('0x47')]);_0x2a8cd6[_0x6f7a('0x4f')]=_[_0x6f7a('0x48')](_0x2a8cd6[_0x6f7a('0x46')],_0x2a8cd6[_0x6f7a('0x47')]);_0x37f6bb['attributes']=_['intersection'](_0x2a8cd6[_0x6f7a('0x46')],qs['fields'](_0x545270[_0x6f7a('0x47')][_0x6f7a('0x4a')]));_0x37f6bb[_0x6f7a('0x49')]=_0x37f6bb[_0x6f7a('0x49')][_0x6f7a('0x4b')]?_0x37f6bb['attributes']:_0x2a8cd6[_0x6f7a('0x46')];if(!_0x545270[_0x6f7a('0x47')][_0x6f7a('0x4c')](_0x6f7a('0x4d'))){_0x37f6bb[_0x6f7a('0x2e')]=qs[_0x6f7a('0x2e')](_0x545270[_0x6f7a('0x47')][_0x6f7a('0x2e')]);_0x37f6bb[_0x6f7a('0x2c')]=qs['offset'](_0x545270[_0x6f7a('0x47')][_0x6f7a('0x2c')]);}_0x37f6bb['order']=qs[_0x6f7a('0x69')](_0x545270['query']['sort']);_0x37f6bb[_0x6f7a('0x52')]=qs[_0x6f7a('0x4f')](_[_0x6f7a('0x50')](_0x545270[_0x6f7a('0x47')],_0x2a8cd6[_0x6f7a('0x4f')]));_0x37f6bb[_0x6f7a('0x52')][_0x6f7a('0x66')]=_0x543320['id'];if(_0x545270[_0x6f7a('0x47')][_0x6f7a('0x51')]){_0x37f6bb[_0x6f7a('0x52')]=_[_0x6f7a('0x54')](_0x37f6bb[_0x6f7a('0x52')],{'$or':_[_0x6f7a('0x41')](_0x37f6bb[_0x6f7a('0x49')],function(_0x24cebf){var _0xfe1fa8={};_0xfe1fa8[_0x24cebf]={'$like':'%'+_0x545270[_0x6f7a('0x47')][_0x6f7a('0x51')]+'%'};return _0xfe1fa8;})});}_0x37f6bb=_['merge']({},_0x37f6bb,_0x545270[_0x6f7a('0x55')]);return db['CannedAnswer'][_0x6f7a('0x2f')]({'where':_0x37f6bb[_0x6f7a('0x52')]})[_0x6f7a('0x20')](function(_0x5874b4){_0x17534a[_0x6f7a('0x2f')]=_0x5874b4;if(_0x545270[_0x6f7a('0x47')][_0x6f7a('0x56')]){_0x37f6bb['include']=[{'all':!![]}];}return db[_0x6f7a('0x6c')]['findAll'](_0x37f6bb);})[_0x6f7a('0x20')](function(_0x541078){_0x17534a[_0x6f7a('0x59')]=_0x541078;return _0x17534a;});}})[_0x6f7a('0x20')](respondWithFilteredResult(_0x2a0595,_0x37f6bb))['catch'](handleError(_0x2a0595,null));};exports[_0x6f7a('0x6e')]=function(_0xc12a35,_0x38ff75,_0x3b3d18){return db[_0x6f7a('0x42')][_0x6f7a('0x62')]({'where':{'id':_0xc12a35['params']['id']}})['then'](handleEntityNotFound(_0x38ff75,null))[_0x6f7a('0x20')](function(_0x86e119){if(_0x86e119){return _0x86e119[_0x6f7a('0x6e')](_0xc12a35[_0x6f7a('0x47')][_0x6f7a('0x6b')]);}})['then'](respondWithStatusCode(_0x38ff75,null))['catch'](handleError(_0x38ff75,null));};exports[_0x6f7a('0x6f')]=function(_0x1ed334,_0x2fed15,_0x1702eb){var _0x388c7f={'channel':'sms'};var _0x29202a=[];var _0xba3450=[];var _0x552cec={};return db[_0x6f7a('0x42')][_0x6f7a('0x62')]({'where':{'id':_0x1ed334[_0x6f7a('0x5b')]['id']},'include':[{'model':db['SmsApplication'],'as':_0x6f7a('0x70')}]})[_0x6f7a('0x20')](handleEntityNotFound(_0x2fed15,null))['then'](function(_0x41882b){_0x388c7f[_0x6f7a('0x71')]=_0x41882b;_0x388c7f[_0x6f7a('0x72')]=_[_0x6f7a('0x73')](_0x41882b[_0x6f7a('0x70')],[_0x6f7a('0x74')],[_0x6f7a('0x75')]);if(_0x388c7f[_0x6f7a('0x71')]['Applications']){delete _0x388c7f['account'][_0x6f7a('0x70')];}return db[_0x6f7a('0x76')][_0x6f7a('0x64')]();})[_0x6f7a('0x20')](function(_0x7625e7){if(!_0x7625e7){throw new db['Sequelize'][(_0x6f7a('0x77'))](_0x6f7a('0x78'));}_0x29202a=_['difference'](_['keys'](_0x7625e7),[_0x6f7a('0x79'),'updatedAt']);_0xba3450=_['difference'](_[_0x6f7a('0x5c')](_0x7625e7),['createdAt',_0x6f7a('0x7a'),_0x6f7a('0x7b'),_0x6f7a('0x7c')]);_0x388c7f[_0x6f7a('0x5d')]={'mapKey':_0x6f7a('0x7d')};if(_0x388c7f['account'][_0x6f7a('0x45')]){switch(_0x388c7f[_0x6f7a('0x71')][_0x6f7a('0x45')]){case _0x6f7a('0x7e'):_0x388c7f[_0x6f7a('0x5d')][_0x6f7a('0x7f')]=_0x1ed334[_0x6f7a('0x5d')][_0x6f7a('0x80')];_0x388c7f[_0x6f7a('0x5d')][_0x6f7a('0x5d')]=_0x1ed334[_0x6f7a('0x5d')]['Body'];_0x388c7f[_0x6f7a('0x5d')][_0x6f7a('0x81')]=_0x1ed334[_0x6f7a('0x5d')][_0x6f7a('0x82')];break;case _0x6f7a('0x83'):_0x388c7f[_0x6f7a('0x5d')][_0x6f7a('0x7f')]='+'+_0x1ed334[_0x6f7a('0x5d')][_0x6f7a('0x84')];_0x388c7f['body'][_0x6f7a('0x5d')]=_0x1ed334[_0x6f7a('0x5d')]['text'];break;case _0x6f7a('0x85'):_0x388c7f[_0x6f7a('0x5d')][_0x6f7a('0x7f')]=_0x1ed334[_0x6f7a('0x5d')][_0x6f7a('0x7f')];_0x388c7f[_0x6f7a('0x5d')][_0x6f7a('0x5d')]=_0x1ed334[_0x6f7a('0x5d')][_0x6f7a('0x26')];break;case _0x6f7a('0x86'):_0x388c7f['body'][_0x6f7a('0x7f')]=_0x1ed334[_0x6f7a('0x5d')][_0x6f7a('0x7f')];_0x388c7f['body'][_0x6f7a('0x5d')]=_0x1ed334[_0x6f7a('0x5d')][_0x6f7a('0x5d')];_0x388c7f[_0x6f7a('0x5d')][_0x6f7a('0x81')]=_0x1ed334[_0x6f7a('0x5d')][_0x6f7a('0x87')];break;case _0x6f7a('0x88'):_0x388c7f[_0x6f7a('0x5d')][_0x6f7a('0x7f')]=_0x1ed334[_0x6f7a('0x5d')]['From'];_0x388c7f['body'][_0x6f7a('0x5d')]=_0x1ed334[_0x6f7a('0x5d')][_0x6f7a('0x89')];_0x388c7f[_0x6f7a('0x5d')][_0x6f7a('0x81')]=_0x1ed334[_0x6f7a('0x5d')][_0x6f7a('0x8a')];break;case _0x6f7a('0x8b'):_0x388c7f[_0x6f7a('0x5d')][_0x6f7a('0x7f')]='+'+_0x1ed334[_0x6f7a('0x5d')]['results'][0x0][_0x6f7a('0x7f')];_0x388c7f[_0x6f7a('0x5d')][_0x6f7a('0x5d')]=_0x1ed334[_0x6f7a('0x5d')][_0x6f7a('0x8c')][0x0][_0x6f7a('0x8d')];_0x388c7f['body'][_0x6f7a('0x81')]=_0x1ed334[_0x6f7a('0x5d')]['results'][0x0][_0x6f7a('0x81')];break;case'csc':_0x388c7f[_0x6f7a('0x5d')][_0x6f7a('0x7f')]=_0x1ed334['body'][_0x6f7a('0x8e')];_0x388c7f[_0x6f7a('0x5d')][_0x6f7a('0x5d')]=_0x1ed334[_0x6f7a('0x5d')][_0x6f7a('0x8f')][_0x6f7a('0x26')];break;case _0x6f7a('0x90'):_0x388c7f[_0x6f7a('0x5d')][_0x6f7a('0x7f')]=_0x1ed334[_0x6f7a('0x5d')][_0x6f7a('0x91')];_0x388c7f['body']['body']=_0x1ed334[_0x6f7a('0x5d')]['text'];_0x388c7f['body'][_0x6f7a('0x81')]=_0x1ed334[_0x6f7a('0x5d')][_0x6f7a('0x92')];break;case _0x6f7a('0x93'):_0x388c7f[_0x6f7a('0x5d')][_0x6f7a('0x81')]=_0x1ed334['body'][0x0][_0x6f7a('0x26')]['id'];_0x388c7f['body'][_0x6f7a('0x7f')]=_0x1ed334[_0x6f7a('0x5d')][0x0]['message'][_0x6f7a('0x7f')];_0x388c7f['body'][_0x6f7a('0x5d')]=_0x1ed334[_0x6f7a('0x5d')][0x0][_0x6f7a('0x26')][_0x6f7a('0x8d')];break;case _0x6f7a('0x94'):_0x388c7f[_0x6f7a('0x5d')]['from']=_0x1ed334[_0x6f7a('0x5d')][_0x6f7a('0x7f')];_0x388c7f[_0x6f7a('0x5d')][_0x6f7a('0x5d')]=_0x1ed334['body'][_0x6f7a('0x26')];_0x388c7f['body'][_0x6f7a('0x81')]=_0x1ed334[_0x6f7a('0x5d')]['refid'];break;}}if(_0x388c7f[_0x6f7a('0x5d')]['id']){delete _0x388c7f['body']['id'];}if(_['isNil'](_0x388c7f[_0x6f7a('0x5d')][_0x6f7a('0x7f')])){throw new db[(_0x6f7a('0x95'))][(_0x6f7a('0x77'))]('from\x20is\x20mandatory');}if(_[_0x6f7a('0x96')](_0x388c7f[_0x6f7a('0x5d')][_0x6f7a('0x5d')])||_0x388c7f[_0x6f7a('0x5d')][_0x6f7a('0x5d')]===''){throw new db[(_0x6f7a('0x95'))][(_0x6f7a('0x77'))](_0x6f7a('0x97'));}if(_[_0x6f7a('0x96')](_0x388c7f[_0x6f7a('0x5d')][_0x6f7a('0x98')])){throw new db[(_0x6f7a('0x95'))]['ValidationError'](_0x6f7a('0x99')+_0xba3450);}if(!_[_0x6f7a('0x9a')](_0xba3450,_0x388c7f[_0x6f7a('0x5d')][_0x6f7a('0x98')])){throw new db['Sequelize'][(_0x6f7a('0x77'))](_0x6f7a('0x9b')+_0xba3450);}_0x552cec[_0x388c7f[_0x6f7a('0x5d')][_0x6f7a('0x98')]]=_0x388c7f[_0x6f7a('0x5d')][_0x6f7a('0x7f')];return db['CmList']['find']({'where':{'id':_0x388c7f[_0x6f7a('0x71')]['ListId']},'include':[{'model':db['CmContact'],'as':_0x6f7a('0x9c'),'where':_0x552cec,'limit':0x1,'order':[[_0x6f7a('0x7a'),_0x6f7a('0x9d')]]}]});})['then'](handleEntityNotFound(_0x2fed15,null))[_0x6f7a('0x20')](function(_0xf70ec3){if(_0xf70ec3){_0x388c7f[_0x6f7a('0x9e')]=_[_0x6f7a('0x9f')](_0xf70ec3,[_0x6f7a('0x9c')]);if(_0xf70ec3['Contacts']['length']){return _0xf70ec3[_0x6f7a('0x9c')][0x0];}var _0x3e7e8d=_[_0x6f7a('0xa0')](_0x388c7f[_0x6f7a('0x5d')],{'firstName':_0x388c7f[_0x6f7a('0x5d')][_0x6f7a('0x7f')],'ListId':_0xf70ec3['id']});_0x3e7e8d[_0x388c7f[_0x6f7a('0x5d')][_0x6f7a('0x98')]]=_0x388c7f[_0x6f7a('0x5d')][_0x6f7a('0x7f')];return db['CmContact'][_0x6f7a('0x6d')](_0x3e7e8d,{'fields':_0x29202a,'raw':!![]});}})[_0x6f7a('0x20')](handleEntityNotFound(_0x2fed15,null))['then'](function(_0x12b36f){if(_0x12b36f){_0x388c7f[_0x6f7a('0xa1')]=_0x12b36f;var _0x2abbbc={'ContactId':_0x12b36f['id'],'phone':_0x388c7f[_0x6f7a('0x5d')]['from'],'SmsAccountId':_0x1ed334[_0x6f7a('0x5b')]['id']};var _0xc51ed7={'ContactId':_0x12b36f['id'],'SmsAccountId':_0x1ed334['params']['id'],'closed':![]};return db[_0x6f7a('0xa2')][_0x6f7a('0x62')]({'where':_0xc51ed7})[_0x6f7a('0x20')](function(_0x5e170f){if(_0x5e170f){return[_0x5e170f,![]];}return db['SmsInteraction'][_0x6f7a('0x6d')](_0x2abbbc)[_0x6f7a('0x20')](function(_0x2a591b){return[_0x2a591b,!![]];});});}})[_0x6f7a('0xa3')](function(_0x27cfbb,_0x38d805){_0x388c7f['interaction']=_0x27cfbb[_0x6f7a('0x37')]({'plain':!![]});_0x388c7f['interaction'][_0x6f7a('0xa4')]=![];if(_0x38d805){if(_0x388c7f[_0x6f7a('0x71')][_0x6f7a('0xa5')]){_0x388c7f[_0x6f7a('0x72')][_0x6f7a('0xa6')]({'id':0x0,'priority':_0x388c7f[_0x6f7a('0x72')][_0x6f7a('0x4b')]+0x1,'app':'close','appdata':'unmanaged','interval':_0x6f7a('0xa7')});}_0x388c7f[_0x6f7a('0xa8')][_0x6f7a('0xa4')]=!![];}return db[_0x6f7a('0xa9')][_0x6f7a('0x6d')]({'phone':_0x388c7f[_0x6f7a('0x5d')][_0x6f7a('0x7f')],'messageId':_0x388c7f[_0x6f7a('0x5d')][_0x6f7a('0x81')],'body':_0x388c7f['body']['body'],'SmsAccountId':_0x1ed334[_0x6f7a('0x5b')]['id'],'SmsInteractionId':_0x27cfbb['id'],'direction':'in','ContactId':_0x27cfbb[_0x6f7a('0xaa')],'AttachmentId':_0x388c7f['body'][_0x6f7a('0xab')]});})[_0x6f7a('0x20')](function(_0x5b17d4){_0x388c7f[_0x6f7a('0x26')]=_0x5b17d4;if(_0x388c7f[_0x6f7a('0xa8')][_0x6f7a('0xac')]){return db['User'][_0x6f7a('0x62')]({'attributes':['id',_0x6f7a('0x3c')],'where':{'id':_0x388c7f[_0x6f7a('0xa8')][_0x6f7a('0xac')]}})['then'](function(_0x34bf65){if(_0x34bf65){_0x388c7f[_0x6f7a('0x72')][_0x6f7a('0xad')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x34bf65['name']+','+(_0x388c7f[_0x6f7a('0x71')][_0x6f7a('0xae')]||0xa),'interval':_0x6f7a('0xa7')});}return respondWithRpcPromise('Start','startRouting',_0x388c7f);});}return respondWithRpcPromise(_0x6f7a('0xaf'),_0x6f7a('0xb0'),_0x388c7f);})['then'](function(_0x527b0c){if(_0x527b0c){var _0x1c8451=0xc8;var _0x9c9573=_0x6f7a('0xb1');logger[_0x6f7a('0x27')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x9c9573,_0x1c8451,_0x6f7a('0xb2'));logger[_0x6f7a('0x23')](_0x6f7a('0xb3'),_0x9c9573,_0x1c8451,_0x6f7a('0xb2'),JSON[_0x6f7a('0xb4')](_0x527b0c));if(_0x388c7f[_0x6f7a('0x71')]['type']===_0x6f7a('0x7e')){return _0x2fed15[_0x6f7a('0x2a')](_0x1c8451)[_0x6f7a('0x30')](_0x6f7a('0xb5'),_0x6f7a('0xb6'))[_0x6f7a('0x3d')](_0x6f7a('0xb7'));}else{return _0x2fed15['status'](_0x1c8451)[_0x6f7a('0x2b')](_0x527b0c);}}})['catch'](handleError(_0x2fed15,null));};exports[_0x6f7a('0xb8')]=function(_0x3dc2ba,_0x31f4aa,_0x1936f2){return db[_0x6f7a('0x42')]['findOne']({'where':{'id':_0x3dc2ba['params']['id']}})[_0x6f7a('0x20')](handleEntityNotFound(_0x31f4aa,null))['then'](function(_0x3b2094){if(_0x3b2094){return db['sequelize'][_0x6f7a('0xb9')](function(_0x4c2950){return db[_0x6f7a('0xba')][_0x6f7a('0x36')]({'where':{'SmsAccountId':_0x3dc2ba[_0x6f7a('0x5b')]['id']},'transaction':_0x4c2950})[_0x6f7a('0x20')](function(_0x45f2c){var _0x165f50=_[_0x6f7a('0x41')](_0x3dc2ba[_0x6f7a('0x5d')],function(_0x326fbb){_0x326fbb[_0x6f7a('0x66')]=_0x3dc2ba['params']['id'];return _0x326fbb;});return db['SmsApplication']['bulkCreate'](_0x165f50,{'transaction':_0x4c2950});});})['then'](function(){return db['SmsApplication'][_0x6f7a('0xbb')]({'where':{'SmsAccountId':_0x3dc2ba[_0x6f7a('0x5b')]['id']},'order':_0x6f7a('0x74')});});}})[_0x6f7a('0x20')](respondWithResult(_0x31f4aa,null))[_0x6f7a('0x29')](handleError(_0x31f4aa,null));};exports[_0x6f7a('0xbc')]=function(_0x4bd478,_0x1492be,_0x3b5bdc){var _0x5a3ab3={};var _0x3f9883={};var _0xfd75cf;var _0x2de558;return db[_0x6f7a('0x42')][_0x6f7a('0xbd')]({'where':{'id':_0x4bd478['params']['id']}})[_0x6f7a('0x20')](handleEntityNotFound(_0x1492be,null))[_0x6f7a('0x20')](function(_0x24747c){if(_0x24747c){_0xfd75cf=_0x24747c;_0x3f9883[_0x6f7a('0x46')]=_[_0x6f7a('0x5c')](db[_0x6f7a('0xba')][_0x6f7a('0x43')]);_0x3f9883[_0x6f7a('0x47')]=_[_0x6f7a('0x5c')](_0x4bd478['query']);_0x3f9883[_0x6f7a('0x4f')]=_['intersection'](_0x3f9883[_0x6f7a('0x46')],_0x3f9883['query']);_0x5a3ab3[_0x6f7a('0x49')]=_[_0x6f7a('0x48')](_0x3f9883[_0x6f7a('0x46')],qs[_0x6f7a('0x4a')](_0x4bd478[_0x6f7a('0x47')][_0x6f7a('0x4a')]));_0x5a3ab3[_0x6f7a('0x49')]=_0x5a3ab3['attributes'][_0x6f7a('0x4b')]?_0x5a3ab3[_0x6f7a('0x49')]:_0x3f9883[_0x6f7a('0x46')];_0x5a3ab3[_0x6f7a('0x4e')]=qs[_0x6f7a('0x69')](_0x4bd478[_0x6f7a('0x47')]['sort']);_0x5a3ab3[_0x6f7a('0x52')]=qs['filters'](_['pick'](_0x4bd478[_0x6f7a('0x47')],_0x3f9883[_0x6f7a('0x4f')]));if(_0x4bd478[_0x6f7a('0x47')][_0x6f7a('0x51')]){_0x5a3ab3['where']=_[_0x6f7a('0x54')](_0x5a3ab3[_0x6f7a('0x52')],{'$or':_[_0x6f7a('0x41')](_0x5a3ab3[_0x6f7a('0x49')],function(_0x72e6b1){var _0x1da155={};_0x1da155[_0x72e6b1]={'$like':'%'+_0x4bd478['query'][_0x6f7a('0x51')]+'%'};return _0x1da155;})});}_0x5a3ab3=_[_0x6f7a('0x54')]({},_0x5a3ab3,_0x4bd478['options']);return _0xfd75cf[_0x6f7a('0xbc')](_0x5a3ab3);}})[_0x6f7a('0x20')](function(_0x200ebc){if(_0x200ebc){_0x2de558=_0x200ebc[_0x6f7a('0x4b')];if(!_0x4bd478[_0x6f7a('0x47')]['hasOwnProperty']('nolimit')){_0x5a3ab3['limit']=qs[_0x6f7a('0x2e')](_0x4bd478[_0x6f7a('0x47')][_0x6f7a('0x2e')]);_0x5a3ab3[_0x6f7a('0x2c')]=qs[_0x6f7a('0x2c')](_0x4bd478[_0x6f7a('0x47')][_0x6f7a('0x2c')]);}return _0xfd75cf[_0x6f7a('0xbc')](_0x5a3ab3);}})['then'](function(_0x5e2873){if(_0x5e2873){return _0x5e2873?{'count':_0x2de558,'rows':_0x5e2873}:null;}})[_0x6f7a('0x20')](respondWithResult(_0x1492be,null))[_0x6f7a('0x29')](handleError(_0x1492be,null));};exports[_0x6f7a('0xbe')]=function(_0x276cfe,_0x306a9f,_0x4171d0){var _0x925d41={'raw':![],'where':{}};var _0x2a022f={};var _0x4bfe34={'count':0x0,'rows':[]};return db[_0x6f7a('0x42')][_0x6f7a('0xbd')]({'where':{'id':_0x276cfe[_0x6f7a('0x5b')]['id']}})[_0x6f7a('0x20')](handleEntityNotFound(_0x306a9f,null))[_0x6f7a('0x20')](function(_0x2fd2d7){if(_0x2fd2d7){_0x2a022f[_0x6f7a('0x46')]=_[_0x6f7a('0x5c')](db[_0x6f7a('0xa2')][_0x6f7a('0x43')]);_0x2a022f[_0x6f7a('0x47')]=_[_0x6f7a('0x5c')](_0x276cfe['query']);_0x2a022f['filters']=_['intersection'](_0x2a022f['model'],_0x2a022f[_0x6f7a('0x47')]);_0x925d41[_0x6f7a('0x49')]=_[_0x6f7a('0x48')](_0x2a022f[_0x6f7a('0x46')],qs[_0x6f7a('0x4a')](_0x276cfe[_0x6f7a('0x47')][_0x6f7a('0x4a')]));_0x925d41['attributes']=_0x925d41[_0x6f7a('0x49')]['length']?_0x925d41[_0x6f7a('0x49')]:_0x2a022f[_0x6f7a('0x46')];if(!_0x276cfe[_0x6f7a('0x47')][_0x6f7a('0x4c')](_0x6f7a('0x4d'))){_0x925d41[_0x6f7a('0x2e')]=qs[_0x6f7a('0x2e')](_0x276cfe[_0x6f7a('0x47')][_0x6f7a('0x2e')]);_0x925d41[_0x6f7a('0x2c')]=qs[_0x6f7a('0x2c')](_0x276cfe[_0x6f7a('0x47')][_0x6f7a('0x2c')]);}_0x925d41[_0x6f7a('0x4e')]=qs[_0x6f7a('0x69')](_0x276cfe[_0x6f7a('0x47')][_0x6f7a('0x69')]);_0x925d41[_0x6f7a('0x52')]=qs[_0x6f7a('0x4f')](_[_0x6f7a('0x50')](_0x276cfe[_0x6f7a('0x47')],_0x2a022f['filters']));_0x925d41[_0x6f7a('0x52')]['SmsAccountId']=_0x2fd2d7['id'];if(_0x276cfe['query']['filter']){_0x925d41[_0x6f7a('0x52')]=_[_0x6f7a('0x54')](_0x925d41[_0x6f7a('0x52')],{'$or':_[_0x6f7a('0x41')](_0x925d41['attributes'],function(_0x1ace18){var _0x3073ec={};_0x3073ec[_0x1ace18]={'$like':'%'+_0x276cfe[_0x6f7a('0x47')][_0x6f7a('0x51')]+'%'};return _0x3073ec;})});}_0x925d41=_['merge']({},_0x925d41,_0x276cfe['options']);return db[_0x6f7a('0xa2')][_0x6f7a('0x2f')]({'where':_0x925d41['where']})[_0x6f7a('0x20')](function(_0x3abcbd){_0x4bfe34[_0x6f7a('0x2f')]=_0x3abcbd;if(_0x276cfe[_0x6f7a('0x47')][_0x6f7a('0x56')]){_0x925d41[_0x6f7a('0x57')]=[{'model':db['CmContact'],'as':_0x6f7a('0xbf'),'required':![]},{'model':db[_0x6f7a('0xc0')],'as':_0x6f7a('0xc1'),'attributes':[_0x6f7a('0x3c'),'fullname',_0x6f7a('0xc2')],'required':![]},{'model':db[_0x6f7a('0xc3')],'as':'Tags','attributes':['id',_0x6f7a('0x3c'),_0x6f7a('0xc4')],'where':_0x276cfe['query'][_0x6f7a('0xc5')]?{'id':_0x276cfe['query'][_0x6f7a('0xc5')]}:undefined,'required':_0x276cfe['query']['tag']?!![]:![]}];}return db[_0x6f7a('0xa2')][_0x6f7a('0x58')](_0x925d41);})[_0x6f7a('0x20')](function(_0x36d05b){_0x4bfe34[_0x6f7a('0x59')]=_0x36d05b;return _0x4bfe34;});}})[_0x6f7a('0x20')](respondWithFilteredResult(_0x306a9f,_0x925d41))[_0x6f7a('0x29')](handleError(_0x306a9f,null));};exports[_0x6f7a('0x3d')]=function(_0x3ae58a,_0x1f9eac,_0x461481){var _0x56108b,_0x4fdc63,_0x2d71fe;if(_[_0x6f7a('0x96')](_0x3ae58a[_0x6f7a('0x5d')][_0x6f7a('0x5d')])||_0x3ae58a[_0x6f7a('0x5d')][_0x6f7a('0x5d')]===''){throw new db[(_0x6f7a('0x95'))]['ValidationError'](_0x6f7a('0x97'));}if(_[_0x6f7a('0x96')](_0x3ae58a[_0x6f7a('0x5d')]['to'])){throw new db[(_0x6f7a('0x95'))][(_0x6f7a('0x77'))](_0x6f7a('0xc6'));}_0x56108b=_0x3ae58a['body']['to'];return db[_0x6f7a('0x42')][_0x6f7a('0x62')]({'where':{'id':_0x3ae58a[_0x6f7a('0x5b')]['id']},'include':[{'model':db['CmList'],'as':_0x6f7a('0xc7'),'include':[{'model':db[_0x6f7a('0x76')],'as':'Contacts','where':{'mobile':_0x56108b},'limit':0x1,'order':[[_0x6f7a('0x7a'),'DESC']]}]}]})[_0x6f7a('0x20')](handleEntityNotFound(_0x1f9eac,null))[_0x6f7a('0x20')](function(_0x56427e){if(_0x56427e&&_0x56427e['List']){_0x4fdc63=_0x56427e[_0x6f7a('0x37')]({'plain':!![]});if(_0x4fdc63[_0x6f7a('0xc7')]&&_0x4fdc63[_0x6f7a('0xc7')]['Contacts'][_0x6f7a('0x4b')]){return _0x4fdc63['List'][_0x6f7a('0x9c')][0x0];}return db[_0x6f7a('0x76')]['create'](_[_0x6f7a('0xa0')](_0x3ae58a['body'],{'firstName':_0x56108b,'mobile':_0x56108b,'phone':_0x56108b,'ListId':_0x4fdc63[_0x6f7a('0x7c')]}));}})[_0x6f7a('0x20')](handleEntityNotFound(_0x1f9eac,null))[_0x6f7a('0x20')](function(_0x36eb23){if(_0x36eb23){_0x2d71fe=_0x36eb23;return db[_0x6f7a('0xa2')]['find']({'where':{'ContactId':_0x2d71fe['id'],'closed':![],'SmsAccountId':_0x4fdc63['id']}})['then'](function(_0xcd7aa5){if(_0xcd7aa5){return[_0xcd7aa5,![]];}return db[_0x6f7a('0xa2')][_0x6f7a('0x6d')]({'UserId':_0x3ae58a[_0x6f7a('0x5e')]['id'],'ContactId':_0x2d71fe['id'],'SmsAccountId':_0x4fdc63['id'],'phone':_0x56108b,'firstMsgDirection':_0x6f7a('0xc8'),'Messages':[_[_0x6f7a('0x54')](_0x3ae58a[_0x6f7a('0x5d')],{'read':![],'body':_0x3ae58a['body'][_0x6f7a('0x5d')],'phone':_0x56108b,'SmsAccountId':_0x4fdc63['id'],'UserId':_0x3ae58a['user']['id'],'ContactId':_0x2d71fe['id']})]},{'include':[{'model':db[_0x6f7a('0xa9')],'as':'Messages'}]})[_0x6f7a('0x20')](function(_0x5aa369){return[_0x5aa369,!![]];});});}})[_0x6f7a('0xa3')](function(_0x385012,_0x44fedd){if(_0x44fedd){return _0x385012;}return db['SmsMessage'][_0x6f7a('0x6d')](_[_0x6f7a('0x54')](_0x3ae58a[_0x6f7a('0x5d')],{'read':![],'body':_0x3ae58a[_0x6f7a('0x5d')][_0x6f7a('0x5d')],'phone':_0x56108b,'SmsAccountId':_0x4fdc63['id'],'SmsInteractionId':_0x385012['id'],'UserId':_0x3ae58a[_0x6f7a('0x5e')]['id'],'ContactId':_0x2d71fe['id']}))[_0x6f7a('0x20')](function(_0x537b5d){_0x385012['dataValues'][_0x6f7a('0xc9')]=[];_0x385012[_0x6f7a('0xca')][_0x6f7a('0xc9')][_0x6f7a('0xa6')](_0x537b5d[_0x6f7a('0xca')]);return _0x385012;});})['then'](respondWithResult(_0x1f9eac,null))[_0x6f7a('0x29')](handleError(_0x1f9eac,null));};exports[_0x6f7a('0x2a')]=function(_0x154195,_0x35ed11,_0x334429){if(_0x154195[_0x6f7a('0x5d')]['id']){delete _0x154195[_0x6f7a('0x5d')]['id'];}var _0x23969d,_0x57e292,_0x3f971a;return db[_0x6f7a('0x42')][_0x6f7a('0x62')]({'where':{'id':_0x154195[_0x6f7a('0x5b')]['id']}})['then'](handleEntityNotFound(_0x35ed11,null))[_0x6f7a('0x20')](function(_0x49c8af){if(_0x49c8af){_0x3f971a=_0x49c8af;logger[_0x6f7a('0x23')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x6f7a('0x2a'),'received\x20delivery\x20report\x20from',_0x49c8af['type'],util[_0x6f7a('0xcb')](_0x154195[_0x6f7a('0x5d')],{'showHidden':![],'depth':null}));switch(_0x49c8af[_0x6f7a('0x45')]){case _0x6f7a('0x83'):if(_0x154195[_0x6f7a('0x5d')][_0x6f7a('0xcc')]&&_0x154195[_0x6f7a('0x5d')][_0x6f7a('0x2a')]){_0x57e292=_0x154195[_0x6f7a('0x5d')][_0x6f7a('0x2a')];return db['SmsMessage'][_0x6f7a('0x62')]({'where':{'messageId':_0x154195[_0x6f7a('0x5d')][_0x6f7a('0xcc')]}});}break;case _0x6f7a('0x85'):if(_0x154195[_0x6f7a('0x5d')]['requestid']&&_0x154195[_0x6f7a('0x5d')][_0x6f7a('0xcd')]){_0x57e292=_0x154195['body']['statusInt'];return db[_0x6f7a('0xa9')][_0x6f7a('0x62')]({'where':{'messageId':_0x154195[_0x6f7a('0x5d')][_0x6f7a('0xce')]}});}break;case _0x6f7a('0x86'):if(_0x154195['body'][_0x6f7a('0x87')]&&_0x154195[_0x6f7a('0x5d')][_0x6f7a('0xcf')]){_0x57e292=_0x154195[_0x6f7a('0x5d')][_0x6f7a('0xcf')];return db[_0x6f7a('0xa9')]['find']({'where':{'messageId':_0x154195[_0x6f7a('0x5d')][_0x6f7a('0x87')]}});}break;case'infobip':var _0x419fa4=_0x154195['body'][_0x6f7a('0x8c')][0x0];if(_0x419fa4['messageId']&&_0x419fa4['status'][_0x6f7a('0xd0')]===_0x6f7a('0xd1')){_0x57e292=_0x419fa4[_0x6f7a('0x2a')][_0x6f7a('0xd0')];return db['SmsMessage'][_0x6f7a('0x62')]({'where':{'messageId':_0x419fa4[_0x6f7a('0x81')]}});}break;case'clickatell':if(_0x154195[_0x6f7a('0x5d')][_0x6f7a('0x81')]&&_0x154195[_0x6f7a('0x5d')][_0x6f7a('0x2a')]){_0x57e292=_0x154195[_0x6f7a('0x5d')]['status'];return db[_0x6f7a('0xa9')][_0x6f7a('0x62')]({'where':{'messageId':_0x154195[_0x6f7a('0x5d')][_0x6f7a('0x81')]}});}break;case _0x6f7a('0x93'):if(_0x154195[_0x6f7a('0x5d')][0x0][_0x6f7a('0x26')]['id']){_0x57e292=_0x154195['body'][0x0]['type'];return db[_0x6f7a('0xa9')]['find']({'where':{'messageId':_0x154195[_0x6f7a('0x5d')][0x0][_0x6f7a('0x26')]['id']}});}break;case _0x6f7a('0x94'):if(_0x154195['body'][_0x6f7a('0xd2')]&&_0x154195['body']['status']){_0x57e292=_0x154195[_0x6f7a('0x5d')]['status'];return db[_0x6f7a('0xa9')][_0x6f7a('0x62')]({'where':{'messageId':_0x154195[_0x6f7a('0x5d')][_0x6f7a('0xd2')]}});}break;}}})[_0x6f7a('0x20')](handleEntityNotFound(_0x35ed11,null))[_0x6f7a('0x20')](function(_0x145d60){if(_0x145d60){_0x23969d=_0x145d60;switch(_0x3f971a[_0x6f7a('0x45')]){case _0x6f7a('0x83'):if(_0x57e292===_0x6f7a('0xd1')){return _0x23969d['update']({'read':!![]});}else{logger[_0x6f7a('0x24')](_0x6f7a('0xd3'),'status',_0x6f7a('0x83'),util['inspect'](_0x154195[_0x6f7a('0x5d')],{'showHidden':![],'depth':null}));}break;case'connectel':if(_0x57e292==='1'){return _0x23969d[_0x6f7a('0x35')]({'read':!![]});}else{logger[_0x6f7a('0x24')](_0x6f7a('0xd3'),'status','skebby',util[_0x6f7a('0xcb')](_0x154195[_0x6f7a('0x5d')],{'showHidden':![],'depth':null}));}break;case'clicksend':if(!_0x154195['body']['error_code']&&_0x57e292>=0xc8&&_0x57e292<=0xce){return _0x23969d['update']({'read':!![]});}else{logger['error'](_0x6f7a('0xd3'),'status','clicksend',util['inspect'](_0x154195[_0x6f7a('0x5d')],{'showHidden':![],'depth':null}));}break;case _0x6f7a('0x8b'):var _0x27e5f=_0x154195[_0x6f7a('0x5d')][_0x6f7a('0x8c')][0x0];if(_0x27e5f[_0x6f7a('0x2a')][_0x6f7a('0xd0')]===_0x6f7a('0xd1')){return _0x23969d[_0x6f7a('0x35')]({'read':!![]});}else{logger['error'](_0x6f7a('0xd3'),_0x6f7a('0x2a'),_0x6f7a('0x8b'),util[_0x6f7a('0xcb')](_0x154195['body'],{'showHidden':![],'depth':null}));}break;case _0x6f7a('0x90'):if(_0x57e292==_0x6f7a('0xd4')||_0x57e292==_0x6f7a('0xd5')){return _0x23969d['update']({'read':!![]});}else{logger[_0x6f7a('0x24')](_0x6f7a('0xd3'),_0x6f7a('0x2a'),'clickatell',util[_0x6f7a('0xcb')](_0x154195['body'],{'showHidden':![],'depth':null}));}break;case'bandwidth':if(_0x57e292=='message-delivered'){return _0x23969d[_0x6f7a('0x35')]({'read':!![]});}else{logger[_0x6f7a('0x24')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x6f7a('0x2a'),_0x6f7a('0x93'),util['inspect'](_0x154195[_0x6f7a('0x5d')],{'showHidden':![],'depth':null}));}break;case'intelepeer':if(_0x57e292==='DELIVRD'||_0x57e292==='ACCEPTD'){return _0x23969d[_0x6f7a('0x35')]({'read':!![]});}else{logger[_0x6f7a('0x24')](_0x6f7a('0xd3'),_0x6f7a('0x2a'),'intelepeer',util[_0x6f7a('0xcb')](_0x154195['body'],{'showHidden':![],'depth':null}));}break;}return _0x23969d;}})[_0x6f7a('0x20')](respondWithResult(_0x35ed11,null))[_0x6f7a('0x29')](handleError(_0x35ed11,null));};exports[_0x6f7a('0xd6')]=function(_0x2d54ac,_0x1214d3,_0x302ba8){var _0x5288be,_0x2e66b2,_0x2dfe8e;return db[_0x6f7a('0x42')][_0x6f7a('0x62')]({'where':{'id':_0x2d54ac['params']['id']}})['then'](handleEntityNotFound(_0x1214d3,null))['then'](function(_0x4617c8){if(_0x4617c8){_0x2dfe8e=_0x4617c8;logger[_0x6f7a('0x23')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x6f7a('0x2a'),'received\x20delivery\x20report\x20from',_0x4617c8[_0x6f7a('0x45')],util[_0x6f7a('0xcb')](_0x2d54ac[_0x6f7a('0x47')],{'showHidden':![],'depth':null}));switch(_0x4617c8[_0x6f7a('0x45')]){case _0x6f7a('0xd7'):if(_0x2d54ac[_0x6f7a('0x47')][_0x6f7a('0xd8')]&&_0x2d54ac[_0x6f7a('0x47')]['state']){_0x2e66b2=_0x2d54ac[_0x6f7a('0x47')][_0x6f7a('0xd9')];return db['SmsMessage'][_0x6f7a('0x62')]({'where':{'messageId':_0x2d54ac['query']['message-id']}});}break;}}})[_0x6f7a('0x20')](handleEntityNotFound(_0x1214d3,null))['then'](function(_0x39d292){if(_0x39d292){_0x5288be=_0x39d292;switch(_0x2dfe8e[_0x6f7a('0x45')]){case _0x6f7a('0xd7'):if(_0x2e66b2==='2'||_0x2e66b2==='6'){return _0x5288be[_0x6f7a('0x35')]({'read':!![]});}else{logger[_0x6f7a('0x24')](_0x6f7a('0xd3'),'status',_0x6f7a('0xd7'),util['inspect'](_0x2d54ac[_0x6f7a('0x47')],{'showHidden':![],'depth':null}));};break;}return _0x5288be;}})['then'](respondWithResult(_0x1214d3,null))[_0x6f7a('0x29')](handleError(_0x1214d3,null));};exports[_0x6f7a('0xda')]=function(_0x55d5f6,_0xa4cce,_0x493eb1){return db[_0x6f7a('0x42')][_0x6f7a('0x62')]({'where':{'id':_0x55d5f6[_0x6f7a('0x5b')]['id']}})[_0x6f7a('0x20')](handleEntityNotFound(_0xa4cce,null))[_0x6f7a('0x20')](function(_0x112d37){if(_0x112d37){return _0x112d37[_0x6f7a('0xda')](_0x55d5f6['body']['ids'],_[_0x6f7a('0x9f')](_0x55d5f6[_0x6f7a('0x5d')],[_0x6f7a('0x6b'),'id'])||{})[_0x6f7a('0xa3')](function(_0x231340){for(var _0x4765e2=0x0;_0x4765e2<_0x55d5f6[_0x6f7a('0x5d')][_0x6f7a('0x6b')][_0x6f7a('0x4b')];_0x4765e2+=0x1){socket[_0x6f7a('0xdb')]('userSmsAccount:save',{'UserId':Number(_0x55d5f6[_0x6f7a('0x5d')][_0x6f7a('0x6b')][_0x4765e2]),'SmsAccountId':Number(_0x55d5f6['params']['id'])});}return _0x231340;});}})[_0x6f7a('0x20')](respondWithResult(_0xa4cce,null))[_0x6f7a('0x29')](handleError(_0xa4cce,null));};exports['removeAgents']=function(_0x54fc75,_0x2af82,_0x1320d4){return db[_0x6f7a('0x42')][_0x6f7a('0x62')]({'where':{'id':_0x54fc75[_0x6f7a('0x5b')]['id']}})[_0x6f7a('0x20')](handleEntityNotFound(_0x2af82,null))[_0x6f7a('0x20')](function(_0x1b9fb9){if(_0x1b9fb9){return _0x1b9fb9[_0x6f7a('0xdc')](_0x54fc75[_0x6f7a('0x47')][_0x6f7a('0x6b')])[_0x6f7a('0x20')](function(){if(_[_0x6f7a('0xdd')](_0x54fc75[_0x6f7a('0x47')][_0x6f7a('0x6b')])){for(var _0x555649=0x0;_0x555649<_0x54fc75[_0x6f7a('0x47')]['ids'][_0x6f7a('0x4b')];_0x555649+=0x1){socket[_0x6f7a('0xdb')](_0x6f7a('0xde'),{'UserId':Number(_0x54fc75[_0x6f7a('0x47')]['ids'][_0x555649]),'SmsAccountId':Number(_0x54fc75['params']['id'])});}}else{socket[_0x6f7a('0xdb')](_0x6f7a('0xde'),{'UserId':Number(_0x54fc75['query'][_0x6f7a('0x6b')]),'SmsAccountId':Number(_0x54fc75[_0x6f7a('0x5b')]['id'])});}});}})[_0x6f7a('0x20')](respondWithStatusCode(_0x2af82,null))[_0x6f7a('0x29')](handleError(_0x2af82,null));};exports[_0x6f7a('0xdf')]=function(_0x2c3e01,_0x3d275b,_0xd3c1ee){var _0x448f9b={};var _0x462429={};var _0x16dc2e;var _0x50b497;return db[_0x6f7a('0x42')]['findOne']({'where':{'id':_0x2c3e01[_0x6f7a('0x5b')]['id']}})[_0x6f7a('0x20')](handleEntityNotFound(_0x3d275b,null))[_0x6f7a('0x20')](function(_0x4ae277){if(_0x4ae277){_0x16dc2e=_0x4ae277;_0x462429[_0x6f7a('0x46')]=_[_0x6f7a('0x5c')](db[_0x6f7a('0xc0')]['rawAttributes']);_0x462429[_0x6f7a('0x47')]=_[_0x6f7a('0x5c')](_0x2c3e01[_0x6f7a('0x47')]);_0x462429[_0x6f7a('0x4f')]=_[_0x6f7a('0x48')](_0x462429[_0x6f7a('0x46')],_0x462429[_0x6f7a('0x47')]);_0x448f9b[_0x6f7a('0x49')]=_['intersection'](_0x462429[_0x6f7a('0x46')],qs[_0x6f7a('0x4a')](_0x2c3e01[_0x6f7a('0x47')]['fields']));_0x448f9b[_0x6f7a('0x49')]=_0x448f9b[_0x6f7a('0x49')][_0x6f7a('0x4b')]?_0x448f9b[_0x6f7a('0x49')]:_0x462429[_0x6f7a('0x46')];_0x448f9b['order']=qs['sort'](_0x2c3e01[_0x6f7a('0x47')][_0x6f7a('0x69')]);_0x448f9b[_0x6f7a('0x52')]=qs[_0x6f7a('0x4f')](_[_0x6f7a('0x50')](_0x2c3e01['query'],_0x462429[_0x6f7a('0x4f')]));if(_0x2c3e01[_0x6f7a('0x47')][_0x6f7a('0x51')]){_0x448f9b['where']=_[_0x6f7a('0x54')](_0x448f9b[_0x6f7a('0x52')],{'$or':_[_0x6f7a('0x41')](_0x448f9b['attributes'],function(_0x19ccc6){var _0x5256c3={};_0x5256c3[_0x19ccc6]={'$like':'%'+_0x2c3e01['query'][_0x6f7a('0x51')]+'%'};return _0x5256c3;})});}_0x448f9b=_[_0x6f7a('0x54')]({},_0x448f9b,_0x2c3e01[_0x6f7a('0x55')]);return _0x16dc2e[_0x6f7a('0xdf')](_0x448f9b);}})[_0x6f7a('0x20')](function(_0x3ad174){if(_0x3ad174){_0x50b497=_0x3ad174[_0x6f7a('0x4b')];if(!_0x2c3e01[_0x6f7a('0x47')]['hasOwnProperty'](_0x6f7a('0x4d'))){_0x448f9b[_0x6f7a('0x2e')]=qs[_0x6f7a('0x2e')](_0x2c3e01['query'][_0x6f7a('0x2e')]);_0x448f9b['offset']=qs[_0x6f7a('0x2c')](_0x2c3e01[_0x6f7a('0x47')][_0x6f7a('0x2c')]);}return _0x16dc2e[_0x6f7a('0xdf')](_0x448f9b);}})[_0x6f7a('0x20')](function(_0x2284c4){if(_0x2284c4){return _0x2284c4?{'count':_0x50b497,'rows':_0x2284c4}:null;}})[_0x6f7a('0x20')](respondWithResult(_0x3d275b,null))[_0x6f7a('0x29')](handleError(_0x3d275b,null));};
\ No newline at end of file
+var _0x3d88=['Text','MessageUUID','infobip','results','originatingAddress','segmentedMessage','clickatell','fromNumber','replyMessageId','bandwidth','refid','isNil','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','Contacts','DESC','omit','defaults','spread','interaction','created','autoclose','push','unmanaged','*,*,*,*','SmsMessage','ContactId','AttachmentId','UserId','User','unshift','Start','startRouting','receiveMessage','entity\x20found','set','Content-Type','text/xml','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','addApplications','sequelize','transaction','bulkCreate','findAndCountAll','getApplications','getInteractions','SmsInteraction','Contact','Owner','fullname','internal','Tag','Tags','color','tag','to\x20is\x20mandatory','List','out','dataValues','Messages','SmsAccount,\x20%s,\x20%s,\x20%s','received\x20delivery\x20report\x20from','inspect','skebby_dispatch_id','requestid','statusInt','message_id','status_code','groupName','DELIVERED','redif','DELIVERED_TO_GATEWAY','RECEIVED_BY_RECIPIENT','intelepeer','DELIVRD','ACCEPTD','statusGet','csc','message-id','state','addAgents','emit','userSmsAccount:save','isArray','userSmsAccount:remove','getAgents','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','./smsAccount.socket','register','jayson/promise','client','http','request','then','info','SmsAccount,\x20%s,\x20%s','debug','request\x20sent','error','code','message','catch','sendStatus','status','end','offset','undefined','limit','count','Content-Range','json','apply','reject','update','destroy','get','SmsAccounts','UserProfileResource','stack','name','send','mandatoryDispositionPause','map','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','order','sort','where','pick','filter','options','SmsAccount','includeAll','findAll','params','Pause','rawAttributes','length','merge','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','describe','SmsAccountId','Disposition','findOne','nolimit','rows','addAnswer','getAnswers','CannedAnswer','hasOwnProperty','include','removeAnswers','ids','notify','sms','SmsApplication','applications','Applications','priority','asc','account','CmContact','Sequelize','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','ListId','twilio','from','From','MessageSid','skebby','text','connectel','clicksend','messageId','plivo'];(function(_0x1b0a89,_0x5f4f8f){var _0x3800f0=function(_0x2765fb){while(--_0x2765fb){_0x1b0a89['push'](_0x1b0a89['shift']());}};_0x3800f0(++_0x5f4f8f);}(_0x3d88,0x13b));var _0x83d8=function(_0x4bc6cd,_0x37ec2a){_0x4bc6cd=_0x4bc6cd-0x0;var _0x34aee4=_0x3d88[_0x4bc6cd];return _0x34aee4;};'use strict';var emlformat=require(_0x83d8('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x83d8('0x1'));var jsonpatch=require(_0x83d8('0x2'));var rp=require(_0x83d8('0x3'));var moment=require('moment');var BPromise=require(_0x83d8('0x4'));var Mustache=require(_0x83d8('0x5'));var util=require(_0x83d8('0x6'));var path=require(_0x83d8('0x7'));var sox=require(_0x83d8('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x83d8('0x9'));var _=require(_0x83d8('0xa'));var squel=require(_0x83d8('0xb'));var crypto=require(_0x83d8('0xc'));var jsforce=require(_0x83d8('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x83d8('0xe'));var Papa=require(_0x83d8('0xf'));var Redis=require(_0x83d8('0x10'));var authService=require(_0x83d8('0x11'));var qs=require(_0x83d8('0x12'));var as=require(_0x83d8('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x83d8('0x14'))('api');var utils=require(_0x83d8('0x15'));var config=require(_0x83d8('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x83d8('0x17'))['db'];config[_0x83d8('0x18')]=_['defaults'](config[_0x83d8('0x18')],{'host':_0x83d8('0x19'),'port':0x18eb});var socket=require(_0x83d8('0x1a'))(new Redis(config[_0x83d8('0x18')]));require(_0x83d8('0x1b'))[_0x83d8('0x1c')](socket);var jayson=require(_0x83d8('0x1d'));var client=jayson[_0x83d8('0x1e')][_0x83d8('0x1f')]({'port':0x232c});function respondWithRpcPromise(_0x526261,_0x53588a,_0x3c4ad1,_0x4dae53){return new BPromise(function(_0x54e651,_0x850d2f){var _0x49e52d=_0x4dae53||client;return _0x49e52d[_0x83d8('0x20')](_0x526261,_0x3c4ad1)[_0x83d8('0x21')](function(_0x2d82df){logger[_0x83d8('0x22')](_0x83d8('0x23'),_0x53588a,'request\x20sent');logger[_0x83d8('0x24')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x53588a,_0x83d8('0x25'),JSON['stringify'](_0x2d82df));if(_0x2d82df[_0x83d8('0x26')]){if(_0x2d82df['error'][_0x83d8('0x27')]===0x1f4){logger[_0x83d8('0x26')](_0x83d8('0x23'),_0x53588a,_0x2d82df['error'][_0x83d8('0x28')]);return _0x850d2f(_0x2d82df['error'][_0x83d8('0x28')]);}logger['error'](_0x83d8('0x23'),_0x53588a,_0x2d82df[_0x83d8('0x26')]['message']);return _0x54e651(_0x2d82df[_0x83d8('0x26')][_0x83d8('0x28')]);}else{logger[_0x83d8('0x22')](_0x83d8('0x23'),_0x53588a,_0x83d8('0x25'));_0x54e651(_0x2d82df['result'][_0x83d8('0x28')]);}})[_0x83d8('0x29')](function(_0x20f3c0){logger[_0x83d8('0x26')](_0x83d8('0x23'),_0x53588a,_0x20f3c0);_0x850d2f(_0x20f3c0);});});}function respondWithStatusCode(_0xa32d3c,_0x1f35f0){_0x1f35f0=_0x1f35f0||0xcc;return function(_0x3cf34b){if(_0x3cf34b){return _0xa32d3c[_0x83d8('0x2a')](_0x1f35f0);}return _0xa32d3c[_0x83d8('0x2b')](_0x1f35f0)[_0x83d8('0x2c')]();};}function respondWithResult(_0x3641e6,_0x25376b){_0x25376b=_0x25376b||0xc8;return function(_0x4e5356){if(_0x4e5356){return _0x3641e6[_0x83d8('0x2b')](_0x25376b)['json'](_0x4e5356);}};}function respondWithFilteredResult(_0x5779a4,_0x4bb65e){return function(_0x5ec67f){if(_0x5ec67f){var _0x288e8e=typeof _0x4bb65e[_0x83d8('0x2d')]===_0x83d8('0x2e')&&typeof _0x4bb65e[_0x83d8('0x2f')]===_0x83d8('0x2e');var _0x50d78b=_0x5ec67f[_0x83d8('0x30')];var _0x46b686=_0x288e8e?0x0:_0x4bb65e['offset'];var _0x33967e=_0x288e8e?_0x5ec67f[_0x83d8('0x30')]:_0x4bb65e['offset']+_0x4bb65e[_0x83d8('0x2f')];var _0x441ebf;if(_0x33967e>=_0x50d78b){_0x33967e=_0x50d78b;_0x441ebf=0xc8;}else{_0x441ebf=0xce;}_0x5779a4['status'](_0x441ebf);return _0x5779a4['set'](_0x83d8('0x31'),_0x46b686+'-'+_0x33967e+'/'+_0x50d78b)[_0x83d8('0x32')](_0x5ec67f);}return null;};}function patchUpdates(_0x3a6972){return function(_0x246d05){try{jsonpatch[_0x83d8('0x33')](_0x246d05,_0x3a6972,!![]);}catch(_0x199ea6){return BPromise[_0x83d8('0x34')](_0x199ea6);}return _0x246d05['save']();};}function saveUpdates(_0xacab95,_0x219c21){return function(_0x26e07a){if(_0x26e07a){return _0x26e07a[_0x83d8('0x35')](_0xacab95)['then'](function(_0x47ec6f){return _0x47ec6f;});}return null;};}function removeEntity(_0x3658ae,_0x50b31e){return function(_0x1ba6c7){if(_0x1ba6c7){return _0x1ba6c7[_0x83d8('0x36')]()[_0x83d8('0x21')](function(){var _0x582e7b=_0x1ba6c7[_0x83d8('0x37')]({'plain':!![]});var _0x550b23=_0x83d8('0x38');return db[_0x83d8('0x39')][_0x83d8('0x36')]({'where':{'type':_0x550b23,'resourceId':_0x582e7b['id']}})[_0x83d8('0x21')](function(){return _0x1ba6c7;});})['then'](function(){_0x3658ae[_0x83d8('0x2b')](0xcc)[_0x83d8('0x2c')]();});}};}function handleEntityNotFound(_0x45166a,_0x1455b1){return function(_0x19d819){if(!_0x19d819){_0x45166a[_0x83d8('0x2a')](0x194);}return _0x19d819;};}function handleError(_0x627c6,_0x4b590b){_0x4b590b=_0x4b590b||0x1f4;return function(_0x4f93d7){logger[_0x83d8('0x26')](_0x4f93d7[_0x83d8('0x3a')]);if(_0x4f93d7[_0x83d8('0x3b')]){delete _0x4f93d7['name'];}_0x627c6[_0x83d8('0x2b')](_0x4b590b)[_0x83d8('0x3c')](_0x4f93d7);};}exports['index']=function(_0x322f1d,_0x596471){var _0xada1db={'include':[{'model':db['Pause'],'as':_0x83d8('0x3d')}]},_0x219a85={},_0x23efd4={'count':0x0,'rows':[]};var _0x5be96a=_[_0x83d8('0x3e')](db['SmsAccount']['rawAttributes'],function(_0x2059ce){return{'name':_0x2059ce[_0x83d8('0x3f')],'type':_0x2059ce[_0x83d8('0x40')][_0x83d8('0x41')]};});_0x219a85[_0x83d8('0x42')]=_['map'](_0x5be96a,'name');_0x219a85[_0x83d8('0x43')]=_[_0x83d8('0x44')](_0x322f1d[_0x83d8('0x43')]);_0x219a85[_0x83d8('0x45')]=_[_0x83d8('0x46')](_0x219a85[_0x83d8('0x42')],_0x219a85[_0x83d8('0x43')]);_0xada1db[_0x83d8('0x47')]=_[_0x83d8('0x46')](_0x219a85[_0x83d8('0x42')],qs['fields'](_0x322f1d[_0x83d8('0x43')][_0x83d8('0x48')]));_0xada1db[_0x83d8('0x47')]=_0xada1db['attributes']['length']?_0xada1db['attributes']:_0x219a85[_0x83d8('0x42')];if(!_0x322f1d['query']['hasOwnProperty']('nolimit')){_0xada1db[_0x83d8('0x2f')]=qs[_0x83d8('0x2f')](_0x322f1d[_0x83d8('0x43')][_0x83d8('0x2f')]);_0xada1db[_0x83d8('0x2d')]=qs[_0x83d8('0x2d')](_0x322f1d[_0x83d8('0x43')][_0x83d8('0x2d')]);}_0xada1db[_0x83d8('0x49')]=qs[_0x83d8('0x4a')](_0x322f1d[_0x83d8('0x43')][_0x83d8('0x4a')]);_0xada1db[_0x83d8('0x4b')]=qs[_0x83d8('0x45')](_[_0x83d8('0x4c')](_0x322f1d['query'],_0x219a85['filters']),_0x5be96a);if(_0x322f1d[_0x83d8('0x43')][_0x83d8('0x4d')]){_0xada1db['where']=_['merge'](_0xada1db[_0x83d8('0x4b')],{'$or':_['map'](_0x5be96a,function(_0x474fcb){if(_0x474fcb['type']!=='VIRTUAL'){var _0x32b36c={};_0x32b36c[_0x474fcb['name']]={'$like':'%'+_0x322f1d['query'][_0x83d8('0x4d')]+'%'};return _0x32b36c;}})});}_0xada1db=_['merge']({},_0xada1db,_0x322f1d[_0x83d8('0x4e')]);var _0x12b28e={'where':_0xada1db['where']};return db[_0x83d8('0x4f')]['count'](_0x12b28e)['then'](function(_0x35c03c){_0x23efd4[_0x83d8('0x30')]=_0x35c03c;if(_0x322f1d[_0x83d8('0x43')][_0x83d8('0x50')]){_0xada1db['include']=[{'all':!![]}];}return db['SmsAccount'][_0x83d8('0x51')](_0xada1db);})[_0x83d8('0x21')](function(_0x437496){_0x23efd4['rows']=_0x437496;return _0x23efd4;})[_0x83d8('0x21')](respondWithFilteredResult(_0x596471,_0xada1db))[_0x83d8('0x29')](handleError(_0x596471,null));};exports['show']=function(_0x1a5ba6,_0x3ce4c0){var _0x53d769={'raw':![],'where':{'id':_0x1a5ba6[_0x83d8('0x52')]['id']},'include':[{'model':db[_0x83d8('0x53')],'as':'mandatoryDispositionPause'}]},_0x4cf04f={};_0x4cf04f[_0x83d8('0x42')]=_['keys'](db[_0x83d8('0x4f')][_0x83d8('0x54')]);_0x4cf04f[_0x83d8('0x43')]=_[_0x83d8('0x44')](_0x1a5ba6['query']);_0x4cf04f[_0x83d8('0x45')]=_['intersection'](_0x4cf04f[_0x83d8('0x42')],_0x4cf04f[_0x83d8('0x43')]);_0x53d769[_0x83d8('0x47')]=_[_0x83d8('0x46')](_0x4cf04f[_0x83d8('0x42')],qs[_0x83d8('0x48')](_0x1a5ba6[_0x83d8('0x43')][_0x83d8('0x48')]));_0x53d769[_0x83d8('0x47')]=_0x53d769[_0x83d8('0x47')][_0x83d8('0x55')]?_0x53d769['attributes']:_0x4cf04f['model'];if(_0x1a5ba6[_0x83d8('0x43')][_0x83d8('0x50')]){_0x53d769['include']=[{'all':!![]}];}_0x53d769=_[_0x83d8('0x56')]({},_0x53d769,_0x1a5ba6[_0x83d8('0x4e')]);return db[_0x83d8('0x4f')][_0x83d8('0x57')](_0x53d769)['then'](handleEntityNotFound(_0x3ce4c0,null))[_0x83d8('0x21')](respondWithResult(_0x3ce4c0,null))[_0x83d8('0x29')](handleError(_0x3ce4c0,null));};exports[_0x83d8('0x58')]=function(_0x3eb575,_0x2de681){return db['SmsAccount'][_0x83d8('0x58')](_0x3eb575['body'],{})[_0x83d8('0x21')](function(_0x59487d){var _0x454b28=_0x3eb575[_0x83d8('0x59')][_0x83d8('0x37')]({'plain':!![]});if(!_0x454b28)throw new Error(_0x83d8('0x5a'));if(_0x454b28[_0x83d8('0x5b')]===_0x83d8('0x59')){var _0x3ba085=_0x59487d[_0x83d8('0x37')]({'plain':!![]});var _0x587b7c='SmsAccounts';return db[_0x83d8('0x5c')]['find']({'where':{'name':_0x587b7c,'userProfileId':_0x454b28[_0x83d8('0x5d')]},'raw':!![]})['then'](function(_0x410447){if(_0x410447&&_0x410447[_0x83d8('0x5e')]===0x0){return db['UserProfileResource'][_0x83d8('0x58')]({'name':_0x3ba085[_0x83d8('0x3b')],'resourceId':_0x3ba085['id'],'type':_0x410447[_0x83d8('0x3b')],'sectionId':_0x410447['id']},{})[_0x83d8('0x21')](function(){return _0x59487d;});}else{return _0x59487d;}})[_0x83d8('0x29')](function(_0x4f3586){logger[_0x83d8('0x26')](_0x83d8('0x5f'),_0x4f3586);throw _0x4f3586;});}return _0x59487d;})[_0x83d8('0x21')](respondWithResult(_0x2de681,0xc9))[_0x83d8('0x29')](handleError(_0x2de681,null));};exports[_0x83d8('0x35')]=function(_0xcc08b0,_0xe27256){if(_0xcc08b0[_0x83d8('0x60')]['id']){delete _0xcc08b0['body']['id'];}return db['SmsAccount'][_0x83d8('0x57')]({'where':{'id':_0xcc08b0[_0x83d8('0x52')]['id']},'include':[{'model':db['Pause'],'as':_0x83d8('0x3d')}]})[_0x83d8('0x21')](handleEntityNotFound(_0xe27256,null))[_0x83d8('0x21')](saveUpdates(_0xcc08b0[_0x83d8('0x60')],null))['then'](respondWithResult(_0xe27256,null))[_0x83d8('0x29')](handleError(_0xe27256,null));};exports['destroy']=function(_0x352f2f,_0x239d1a){return db[_0x83d8('0x4f')][_0x83d8('0x57')]({'where':{'id':_0x352f2f[_0x83d8('0x52')]['id']}})[_0x83d8('0x21')](handleEntityNotFound(_0x239d1a,null))[_0x83d8('0x21')](removeEntity(_0x239d1a,null))[_0x83d8('0x29')](handleError(_0x239d1a,null));};exports[_0x83d8('0x61')]=function(_0x4df959,_0x4d674f){return db[_0x83d8('0x4f')][_0x83d8('0x61')]()['then'](respondWithResult(_0x4d674f,null))[_0x83d8('0x29')](handleError(_0x4d674f,null));};exports['addDisposition']=function(_0xfc341e,_0x21f6c6,_0x78c41e){if(_0xfc341e['body']['id']){delete _0xfc341e[_0x83d8('0x60')]['id'];}return db[_0x83d8('0x4f')]['find']({'where':{'id':_0xfc341e[_0x83d8('0x52')]['id']}})[_0x83d8('0x21')](handleEntityNotFound(_0x21f6c6,null))[_0x83d8('0x21')](function(_0x4650e8){if(_0x4650e8){_0xfc341e[_0x83d8('0x60')][_0x83d8('0x62')]=_0x4650e8['id'];return db[_0x83d8('0x63')]['create'](_0xfc341e[_0x83d8('0x60')]);}})[_0x83d8('0x21')](respondWithResult(_0x21f6c6,null))['catch'](handleError(_0x21f6c6,null));};exports['getDispositions']=function(_0x2a82c1,_0x4cdc28,_0x519770){var _0x3e8b23={'raw':![],'where':{}};var _0x2761a4={};var _0x3dce8b={'count':0x0,'rows':[]};return db[_0x83d8('0x4f')][_0x83d8('0x64')]({'where':{'id':_0x2a82c1[_0x83d8('0x52')]['id']}})[_0x83d8('0x21')](handleEntityNotFound(_0x4cdc28,null))[_0x83d8('0x21')](function(_0x233128){if(_0x233128){_0x2761a4['model']=_[_0x83d8('0x44')](db[_0x83d8('0x63')][_0x83d8('0x54')]);_0x2761a4[_0x83d8('0x43')]=_[_0x83d8('0x44')](_0x2a82c1[_0x83d8('0x43')]);_0x2761a4[_0x83d8('0x45')]=_[_0x83d8('0x46')](_0x2761a4[_0x83d8('0x42')],_0x2761a4[_0x83d8('0x43')]);_0x3e8b23[_0x83d8('0x47')]=_[_0x83d8('0x46')](_0x2761a4[_0x83d8('0x42')],qs[_0x83d8('0x48')](_0x2a82c1[_0x83d8('0x43')][_0x83d8('0x48')]));_0x3e8b23[_0x83d8('0x47')]=_0x3e8b23[_0x83d8('0x47')][_0x83d8('0x55')]?_0x3e8b23['attributes']:_0x2761a4[_0x83d8('0x42')];if(!_0x2a82c1[_0x83d8('0x43')]['hasOwnProperty'](_0x83d8('0x65'))){_0x3e8b23[_0x83d8('0x2f')]=qs[_0x83d8('0x2f')](_0x2a82c1[_0x83d8('0x43')][_0x83d8('0x2f')]);_0x3e8b23['offset']=qs[_0x83d8('0x2d')](_0x2a82c1[_0x83d8('0x43')][_0x83d8('0x2d')]);}_0x3e8b23[_0x83d8('0x49')]=qs[_0x83d8('0x4a')](_0x2a82c1[_0x83d8('0x43')][_0x83d8('0x4a')]);_0x3e8b23[_0x83d8('0x4b')]=qs['filters'](_[_0x83d8('0x4c')](_0x2a82c1[_0x83d8('0x43')],_0x2761a4['filters']));_0x3e8b23[_0x83d8('0x4b')]['SmsAccountId']=_0x233128['id'];if(_0x2a82c1['query'][_0x83d8('0x4d')]){_0x3e8b23[_0x83d8('0x4b')]=_[_0x83d8('0x56')](_0x3e8b23[_0x83d8('0x4b')],{'$or':_[_0x83d8('0x3e')](_0x3e8b23['attributes'],function(_0x26b4e4){var _0x462fa1={};_0x462fa1[_0x26b4e4]={'$like':'%'+_0x2a82c1[_0x83d8('0x43')]['filter']+'%'};return _0x462fa1;})});}_0x3e8b23=_[_0x83d8('0x56')]({},_0x3e8b23,_0x2a82c1[_0x83d8('0x4e')]);return db['Disposition'][_0x83d8('0x30')]({'where':_0x3e8b23[_0x83d8('0x4b')]})[_0x83d8('0x21')](function(_0x4b3094){_0x3dce8b[_0x83d8('0x30')]=_0x4b3094;if(_0x2a82c1[_0x83d8('0x43')][_0x83d8('0x50')]){_0x3e8b23['include']=[{'all':!![]}];}return db[_0x83d8('0x63')]['findAll'](_0x3e8b23);})[_0x83d8('0x21')](function(_0x3289aa){_0x3dce8b[_0x83d8('0x66')]=_0x3289aa;return _0x3dce8b;});}})['then'](respondWithFilteredResult(_0x4cdc28,_0x3e8b23))['catch'](handleError(_0x4cdc28,null));};exports['removeDispositions']=function(_0x33ca1c,_0x4d85e6,_0x293367){return db['SmsAccount'][_0x83d8('0x57')]({'where':{'id':_0x33ca1c[_0x83d8('0x52')]['id']}})['then'](handleEntityNotFound(_0x4d85e6,null))[_0x83d8('0x21')](function(_0x106eb6){if(_0x106eb6){return _0x106eb6['removeDispositions'](_0x33ca1c[_0x83d8('0x43')]['ids']);}})[_0x83d8('0x21')](respondWithStatusCode(_0x4d85e6,null))['catch'](handleError(_0x4d85e6,null));};exports[_0x83d8('0x67')]=function(_0x278c94,_0x462a08,_0x47a3b8){if(_0x278c94[_0x83d8('0x60')]['id']){delete _0x278c94[_0x83d8('0x60')]['id'];}return db['SmsAccount'][_0x83d8('0x57')]({'where':{'id':_0x278c94['params']['id']}})[_0x83d8('0x21')](handleEntityNotFound(_0x462a08,null))[_0x83d8('0x21')](function(_0x13bd9d){if(_0x13bd9d){_0x278c94[_0x83d8('0x60')][_0x83d8('0x62')]=_0x13bd9d['id'];return db['CannedAnswer'][_0x83d8('0x58')](_0x278c94[_0x83d8('0x60')]);}})[_0x83d8('0x21')](respondWithResult(_0x462a08,null))['catch'](handleError(_0x462a08,null));};exports[_0x83d8('0x68')]=function(_0x1bfa88,_0x39cb76,_0x11bbc4){var _0x43c112={'raw':![],'where':{}};var _0x3eb183={};var _0x97b933={'count':0x0,'rows':[]};return db['SmsAccount'][_0x83d8('0x64')]({'where':{'id':_0x1bfa88[_0x83d8('0x52')]['id']}})['then'](handleEntityNotFound(_0x39cb76,null))[_0x83d8('0x21')](function(_0x54f97c){if(_0x54f97c){_0x3eb183['model']=_[_0x83d8('0x44')](db[_0x83d8('0x69')][_0x83d8('0x54')]);_0x3eb183[_0x83d8('0x43')]=_[_0x83d8('0x44')](_0x1bfa88[_0x83d8('0x43')]);_0x3eb183[_0x83d8('0x45')]=_[_0x83d8('0x46')](_0x3eb183[_0x83d8('0x42')],_0x3eb183['query']);_0x43c112['attributes']=_[_0x83d8('0x46')](_0x3eb183[_0x83d8('0x42')],qs[_0x83d8('0x48')](_0x1bfa88['query']['fields']));_0x43c112[_0x83d8('0x47')]=_0x43c112[_0x83d8('0x47')][_0x83d8('0x55')]?_0x43c112[_0x83d8('0x47')]:_0x3eb183[_0x83d8('0x42')];if(!_0x1bfa88[_0x83d8('0x43')][_0x83d8('0x6a')](_0x83d8('0x65'))){_0x43c112[_0x83d8('0x2f')]=qs[_0x83d8('0x2f')](_0x1bfa88[_0x83d8('0x43')][_0x83d8('0x2f')]);_0x43c112[_0x83d8('0x2d')]=qs['offset'](_0x1bfa88['query'][_0x83d8('0x2d')]);}_0x43c112[_0x83d8('0x49')]=qs[_0x83d8('0x4a')](_0x1bfa88[_0x83d8('0x43')][_0x83d8('0x4a')]);_0x43c112[_0x83d8('0x4b')]=qs[_0x83d8('0x45')](_[_0x83d8('0x4c')](_0x1bfa88[_0x83d8('0x43')],_0x3eb183[_0x83d8('0x45')]));_0x43c112['where'][_0x83d8('0x62')]=_0x54f97c['id'];if(_0x1bfa88[_0x83d8('0x43')][_0x83d8('0x4d')]){_0x43c112[_0x83d8('0x4b')]=_[_0x83d8('0x56')](_0x43c112[_0x83d8('0x4b')],{'$or':_[_0x83d8('0x3e')](_0x43c112['attributes'],function(_0x5c454e){var _0x3db3eb={};_0x3db3eb[_0x5c454e]={'$like':'%'+_0x1bfa88[_0x83d8('0x43')][_0x83d8('0x4d')]+'%'};return _0x3db3eb;})});}_0x43c112=_[_0x83d8('0x56')]({},_0x43c112,_0x1bfa88[_0x83d8('0x4e')]);return db[_0x83d8('0x69')][_0x83d8('0x30')]({'where':_0x43c112['where']})[_0x83d8('0x21')](function(_0x180dc6){_0x97b933[_0x83d8('0x30')]=_0x180dc6;if(_0x1bfa88[_0x83d8('0x43')]['includeAll']){_0x43c112[_0x83d8('0x6b')]=[{'all':!![]}];}return db[_0x83d8('0x69')]['findAll'](_0x43c112);})[_0x83d8('0x21')](function(_0x467e78){_0x97b933[_0x83d8('0x66')]=_0x467e78;return _0x97b933;});}})[_0x83d8('0x21')](respondWithFilteredResult(_0x39cb76,_0x43c112))[_0x83d8('0x29')](handleError(_0x39cb76,null));};exports[_0x83d8('0x6c')]=function(_0x53b53d,_0x13af41,_0x154497){return db[_0x83d8('0x4f')]['find']({'where':{'id':_0x53b53d[_0x83d8('0x52')]['id']}})[_0x83d8('0x21')](handleEntityNotFound(_0x13af41,null))[_0x83d8('0x21')](function(_0x43a9fb){if(_0x43a9fb){return _0x43a9fb[_0x83d8('0x6c')](_0x53b53d[_0x83d8('0x43')][_0x83d8('0x6d')]);}})[_0x83d8('0x21')](respondWithStatusCode(_0x13af41,null))[_0x83d8('0x29')](handleError(_0x13af41,null));};exports[_0x83d8('0x6e')]=function(_0x11f5cc,_0x1b2e63,_0x2f7110){var _0x293320={'channel':_0x83d8('0x6f')};var _0x39fa8d=[];var _0x11c674=[];var _0x54bc11={};return db[_0x83d8('0x4f')]['find']({'where':{'id':_0x11f5cc['params']['id']},'include':[{'model':db[_0x83d8('0x70')],'as':'Applications'}]})['then'](handleEntityNotFound(_0x1b2e63,null))[_0x83d8('0x21')](function(_0x2badba){_0x293320['account']=_0x2badba;_0x293320[_0x83d8('0x71')]=_['orderBy'](_0x2badba[_0x83d8('0x72')],[_0x83d8('0x73')],[_0x83d8('0x74')]);if(_0x293320[_0x83d8('0x75')][_0x83d8('0x72')]){delete _0x293320[_0x83d8('0x75')][_0x83d8('0x72')];}return db[_0x83d8('0x76')]['describe']();})[_0x83d8('0x21')](function(_0x5b9fac){if(!_0x5b9fac){throw new db[(_0x83d8('0x77'))][(_0x83d8('0x78'))](_0x83d8('0x79'));}_0x39fa8d=_[_0x83d8('0x7a')](_[_0x83d8('0x44')](_0x5b9fac),[_0x83d8('0x7b'),_0x83d8('0x7c')]);_0x11c674=_[_0x83d8('0x7a')](_[_0x83d8('0x44')](_0x5b9fac),[_0x83d8('0x7b'),_0x83d8('0x7c'),_0x83d8('0x7d'),_0x83d8('0x7e')]);_0x293320[_0x83d8('0x60')]={'mapKey':'mobile'};if(_0x293320['account'][_0x83d8('0x40')]){switch(_0x293320[_0x83d8('0x75')][_0x83d8('0x40')]){case _0x83d8('0x7f'):_0x293320[_0x83d8('0x60')][_0x83d8('0x80')]=_0x11f5cc[_0x83d8('0x60')][_0x83d8('0x81')];_0x293320[_0x83d8('0x60')][_0x83d8('0x60')]=_0x11f5cc[_0x83d8('0x60')]['Body'];_0x293320[_0x83d8('0x60')]['messageId']=_0x11f5cc[_0x83d8('0x60')][_0x83d8('0x82')];break;case _0x83d8('0x83'):_0x293320[_0x83d8('0x60')][_0x83d8('0x80')]='+'+_0x11f5cc[_0x83d8('0x60')]['sender'];_0x293320['body']['body']=_0x11f5cc[_0x83d8('0x60')][_0x83d8('0x84')];break;case _0x83d8('0x85'):_0x293320[_0x83d8('0x60')][_0x83d8('0x80')]=_0x11f5cc[_0x83d8('0x60')][_0x83d8('0x80')];_0x293320[_0x83d8('0x60')]['body']=_0x11f5cc[_0x83d8('0x60')][_0x83d8('0x28')];break;case _0x83d8('0x86'):_0x293320['body'][_0x83d8('0x80')]=_0x11f5cc[_0x83d8('0x60')]['from'];_0x293320[_0x83d8('0x60')][_0x83d8('0x60')]=_0x11f5cc[_0x83d8('0x60')][_0x83d8('0x60')];_0x293320['body'][_0x83d8('0x87')]=_0x11f5cc['body']['message_id'];break;case _0x83d8('0x88'):_0x293320[_0x83d8('0x60')][_0x83d8('0x80')]=_0x11f5cc[_0x83d8('0x60')][_0x83d8('0x81')];_0x293320[_0x83d8('0x60')]['body']=_0x11f5cc[_0x83d8('0x60')][_0x83d8('0x89')];_0x293320['body'][_0x83d8('0x87')]=_0x11f5cc[_0x83d8('0x60')][_0x83d8('0x8a')];break;case _0x83d8('0x8b'):_0x293320[_0x83d8('0x60')][_0x83d8('0x80')]='+'+_0x11f5cc['body'][_0x83d8('0x8c')][0x0][_0x83d8('0x80')];_0x293320[_0x83d8('0x60')][_0x83d8('0x60')]=_0x11f5cc[_0x83d8('0x60')][_0x83d8('0x8c')][0x0]['text'];_0x293320[_0x83d8('0x60')]['messageId']=_0x11f5cc[_0x83d8('0x60')][_0x83d8('0x8c')][0x0][_0x83d8('0x87')];break;case'csc':_0x293320[_0x83d8('0x60')]['from']=_0x11f5cc['body'][_0x83d8('0x8d')];_0x293320[_0x83d8('0x60')]['body']=_0x11f5cc[_0x83d8('0x60')][_0x83d8('0x8e')]['message'];break;case _0x83d8('0x8f'):_0x293320[_0x83d8('0x60')]['from']=_0x11f5cc[_0x83d8('0x60')][_0x83d8('0x90')];_0x293320[_0x83d8('0x60')][_0x83d8('0x60')]=_0x11f5cc[_0x83d8('0x60')][_0x83d8('0x84')];_0x293320[_0x83d8('0x60')][_0x83d8('0x87')]=_0x11f5cc[_0x83d8('0x60')][_0x83d8('0x91')];break;case _0x83d8('0x92'):_0x293320['body'][_0x83d8('0x87')]=_0x11f5cc[_0x83d8('0x60')][0x0][_0x83d8('0x28')]['id'];_0x293320[_0x83d8('0x60')][_0x83d8('0x80')]=_0x11f5cc[_0x83d8('0x60')][0x0][_0x83d8('0x28')][_0x83d8('0x80')];_0x293320[_0x83d8('0x60')][_0x83d8('0x60')]=_0x11f5cc[_0x83d8('0x60')][0x0][_0x83d8('0x28')][_0x83d8('0x84')];break;case'intelepeer':_0x293320[_0x83d8('0x60')][_0x83d8('0x80')]=_0x11f5cc[_0x83d8('0x60')][_0x83d8('0x80')];_0x293320[_0x83d8('0x60')]['body']=_0x11f5cc[_0x83d8('0x60')][_0x83d8('0x28')];_0x293320[_0x83d8('0x60')]['messageId']=_0x11f5cc[_0x83d8('0x60')][_0x83d8('0x93')];break;}}if(_0x293320['body']['id']){delete _0x293320['body']['id'];}if(_[_0x83d8('0x94')](_0x293320[_0x83d8('0x60')][_0x83d8('0x80')])){throw new db[(_0x83d8('0x77'))][(_0x83d8('0x78'))](_0x83d8('0x95'));}if(_['isNil'](_0x293320[_0x83d8('0x60')][_0x83d8('0x60')])||_0x293320[_0x83d8('0x60')]['body']===''){throw new db[(_0x83d8('0x77'))][(_0x83d8('0x78'))](_0x83d8('0x96'));}if(_[_0x83d8('0x94')](_0x293320[_0x83d8('0x60')][_0x83d8('0x97')])){throw new db[(_0x83d8('0x77'))][(_0x83d8('0x78'))]('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x11c674);}if(!_['includes'](_0x11c674,_0x293320['body'][_0x83d8('0x97')])){throw new db[(_0x83d8('0x77'))][(_0x83d8('0x78'))](_0x83d8('0x98')+_0x11c674);}_0x54bc11[_0x293320[_0x83d8('0x60')][_0x83d8('0x97')]]=_0x293320[_0x83d8('0x60')][_0x83d8('0x80')];return db[_0x83d8('0x99')]['find']({'where':{'id':_0x293320[_0x83d8('0x75')][_0x83d8('0x7e')]},'include':[{'model':db[_0x83d8('0x76')],'as':_0x83d8('0x9a'),'where':_0x54bc11,'limit':0x1,'order':[[_0x83d8('0x7c'),_0x83d8('0x9b')]]}]});})[_0x83d8('0x21')](handleEntityNotFound(_0x1b2e63,null))[_0x83d8('0x21')](function(_0xf2a35f){if(_0xf2a35f){_0x293320['list']=_[_0x83d8('0x9c')](_0xf2a35f,[_0x83d8('0x9a')]);if(_0xf2a35f['Contacts'][_0x83d8('0x55')]){return _0xf2a35f[_0x83d8('0x9a')][0x0];}var _0x6620ca=_[_0x83d8('0x9d')](_0x293320['body'],{'firstName':_0x293320[_0x83d8('0x60')][_0x83d8('0x80')],'ListId':_0xf2a35f['id']});_0x6620ca[_0x293320[_0x83d8('0x60')][_0x83d8('0x97')]]=_0x293320[_0x83d8('0x60')][_0x83d8('0x80')];return db['CmContact'][_0x83d8('0x58')](_0x6620ca,{'fields':_0x39fa8d,'raw':!![]});}})['then'](handleEntityNotFound(_0x1b2e63,null))[_0x83d8('0x21')](function(_0x5d2993){if(_0x5d2993){_0x293320['contact']=_0x5d2993;var _0x532b74={'ContactId':_0x5d2993['id'],'phone':_0x293320['body'][_0x83d8('0x80')],'SmsAccountId':_0x11f5cc[_0x83d8('0x52')]['id']};var _0x33c308={'ContactId':_0x5d2993['id'],'SmsAccountId':_0x11f5cc[_0x83d8('0x52')]['id'],'closed':![]};return db['SmsInteraction'][_0x83d8('0x57')]({'where':_0x33c308})['then'](function(_0x3b4a45){if(_0x3b4a45){return[_0x3b4a45,![]];}return db['SmsInteraction']['create'](_0x532b74)[_0x83d8('0x21')](function(_0x2da991){return[_0x2da991,!![]];});});}})[_0x83d8('0x9e')](function(_0x52bf88,_0x32ef0e){_0x293320[_0x83d8('0x9f')]=_0x52bf88[_0x83d8('0x37')]({'plain':!![]});_0x293320[_0x83d8('0x9f')][_0x83d8('0xa0')]=![];if(_0x32ef0e){if(_0x293320[_0x83d8('0x75')][_0x83d8('0xa1')]){_0x293320[_0x83d8('0x71')][_0x83d8('0xa2')]({'id':0x0,'priority':_0x293320[_0x83d8('0x71')]['length']+0x1,'app':'close','appdata':_0x83d8('0xa3'),'interval':_0x83d8('0xa4')});}_0x293320[_0x83d8('0x9f')][_0x83d8('0xa0')]=!![];}return db[_0x83d8('0xa5')]['create']({'phone':_0x293320[_0x83d8('0x60')][_0x83d8('0x80')],'messageId':_0x293320[_0x83d8('0x60')]['messageId'],'body':_0x293320[_0x83d8('0x60')][_0x83d8('0x60')],'SmsAccountId':_0x11f5cc[_0x83d8('0x52')]['id'],'SmsInteractionId':_0x52bf88['id'],'direction':'in','ContactId':_0x52bf88[_0x83d8('0xa6')],'AttachmentId':_0x293320[_0x83d8('0x60')][_0x83d8('0xa7')]});})[_0x83d8('0x21')](function(_0xf7aa4a){_0x293320[_0x83d8('0x28')]=_0xf7aa4a;if(_0x293320['interaction'][_0x83d8('0xa8')]){return db[_0x83d8('0xa9')][_0x83d8('0x57')]({'attributes':['id',_0x83d8('0x3b')],'where':{'id':_0x293320[_0x83d8('0x9f')]['UserId']}})[_0x83d8('0x21')](function(_0x2df2ff){if(_0x2df2ff){_0x293320[_0x83d8('0x71')][_0x83d8('0xaa')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x2df2ff[_0x83d8('0x3b')]+','+(_0x293320['account']['waitForTheAssignedAgent']||0xa),'interval':_0x83d8('0xa4')});}return respondWithRpcPromise(_0x83d8('0xab'),'startRouting',_0x293320);});}return respondWithRpcPromise(_0x83d8('0xab'),_0x83d8('0xac'),_0x293320);})[_0x83d8('0x21')](function(_0x70a8cb){if(_0x70a8cb){var _0x192af4=0xc8;var _0x2a0157=_0x83d8('0xad');logger['info']('SmsAccount,\x20%s,\x20%s,\x20%s',_0x2a0157,_0x192af4,_0x83d8('0xae'));logger[_0x83d8('0x24')]('SmsAccount,\x20%s,\x20%s,\x20%s,\x20%s',_0x2a0157,_0x192af4,_0x83d8('0xae'),JSON['stringify'](_0x70a8cb));if(_0x293320[_0x83d8('0x75')][_0x83d8('0x40')]===_0x83d8('0x7f')){return _0x1b2e63[_0x83d8('0x2b')](_0x192af4)[_0x83d8('0xaf')](_0x83d8('0xb0'),_0x83d8('0xb1'))[_0x83d8('0x3c')](_0x83d8('0xb2'));}else{return _0x1b2e63[_0x83d8('0x2b')](_0x192af4)[_0x83d8('0x32')](_0x70a8cb);}}})['catch'](handleError(_0x1b2e63,null));};exports[_0x83d8('0xb3')]=function(_0x3780dd,_0x3d380e,_0x196fc4){return db[_0x83d8('0x4f')][_0x83d8('0x64')]({'where':{'id':_0x3780dd[_0x83d8('0x52')]['id']}})[_0x83d8('0x21')](handleEntityNotFound(_0x3d380e,null))['then'](function(_0x5bc920){if(_0x5bc920){return db[_0x83d8('0xb4')][_0x83d8('0xb5')](function(_0x586b23){return db[_0x83d8('0x70')][_0x83d8('0x36')]({'where':{'SmsAccountId':_0x3780dd[_0x83d8('0x52')]['id']},'transaction':_0x586b23})['then'](function(_0x386a60){var _0x3c92d5=_[_0x83d8('0x3e')](_0x3780dd['body'],function(_0x39d6d9){_0x39d6d9[_0x83d8('0x62')]=_0x3780dd[_0x83d8('0x52')]['id'];return _0x39d6d9;});return db[_0x83d8('0x70')][_0x83d8('0xb6')](_0x3c92d5,{'transaction':_0x586b23});});})[_0x83d8('0x21')](function(){return db[_0x83d8('0x70')][_0x83d8('0xb7')]({'where':{'SmsAccountId':_0x3780dd['params']['id']},'order':_0x83d8('0x73')});});}})[_0x83d8('0x21')](respondWithResult(_0x3d380e,null))[_0x83d8('0x29')](handleError(_0x3d380e,null));};exports[_0x83d8('0xb8')]=function(_0x593c20,_0x4b11e8,_0x3a3543){var _0x8ecd71={};var _0x2d88a2={};var _0x5b1499;var _0x54c27a;return db[_0x83d8('0x4f')][_0x83d8('0x64')]({'where':{'id':_0x593c20[_0x83d8('0x52')]['id']}})[_0x83d8('0x21')](handleEntityNotFound(_0x4b11e8,null))[_0x83d8('0x21')](function(_0x1be02c){if(_0x1be02c){_0x5b1499=_0x1be02c;_0x2d88a2[_0x83d8('0x42')]=_[_0x83d8('0x44')](db['SmsApplication'][_0x83d8('0x54')]);_0x2d88a2['query']=_['keys'](_0x593c20[_0x83d8('0x43')]);_0x2d88a2['filters']=_[_0x83d8('0x46')](_0x2d88a2['model'],_0x2d88a2[_0x83d8('0x43')]);_0x8ecd71[_0x83d8('0x47')]=_[_0x83d8('0x46')](_0x2d88a2['model'],qs[_0x83d8('0x48')](_0x593c20[_0x83d8('0x43')][_0x83d8('0x48')]));_0x8ecd71[_0x83d8('0x47')]=_0x8ecd71[_0x83d8('0x47')][_0x83d8('0x55')]?_0x8ecd71['attributes']:_0x2d88a2[_0x83d8('0x42')];_0x8ecd71[_0x83d8('0x49')]=qs[_0x83d8('0x4a')](_0x593c20[_0x83d8('0x43')][_0x83d8('0x4a')]);_0x8ecd71[_0x83d8('0x4b')]=qs[_0x83d8('0x45')](_[_0x83d8('0x4c')](_0x593c20[_0x83d8('0x43')],_0x2d88a2[_0x83d8('0x45')]));if(_0x593c20[_0x83d8('0x43')][_0x83d8('0x4d')]){_0x8ecd71[_0x83d8('0x4b')]=_['merge'](_0x8ecd71[_0x83d8('0x4b')],{'$or':_['map'](_0x8ecd71['attributes'],function(_0x28849f){var _0x330ac9={};_0x330ac9[_0x28849f]={'$like':'%'+_0x593c20['query']['filter']+'%'};return _0x330ac9;})});}_0x8ecd71=_[_0x83d8('0x56')]({},_0x8ecd71,_0x593c20[_0x83d8('0x4e')]);return _0x5b1499['getApplications'](_0x8ecd71);}})[_0x83d8('0x21')](function(_0xbce813){if(_0xbce813){_0x54c27a=_0xbce813[_0x83d8('0x55')];if(!_0x593c20[_0x83d8('0x43')]['hasOwnProperty'](_0x83d8('0x65'))){_0x8ecd71[_0x83d8('0x2f')]=qs[_0x83d8('0x2f')](_0x593c20['query']['limit']);_0x8ecd71[_0x83d8('0x2d')]=qs[_0x83d8('0x2d')](_0x593c20[_0x83d8('0x43')][_0x83d8('0x2d')]);}return _0x5b1499[_0x83d8('0xb8')](_0x8ecd71);}})[_0x83d8('0x21')](function(_0x5ae679){if(_0x5ae679){return _0x5ae679?{'count':_0x54c27a,'rows':_0x5ae679}:null;}})[_0x83d8('0x21')](respondWithResult(_0x4b11e8,null))[_0x83d8('0x29')](handleError(_0x4b11e8,null));};exports[_0x83d8('0xb9')]=function(_0x55c5e9,_0x4c4f57,_0x5325db){var _0x50dd85={'raw':![],'where':{}};var _0x45a53b={};var _0x379d7d={'count':0x0,'rows':[]};return db['SmsAccount'][_0x83d8('0x64')]({'where':{'id':_0x55c5e9['params']['id']}})[_0x83d8('0x21')](handleEntityNotFound(_0x4c4f57,null))[_0x83d8('0x21')](function(_0x32f62c){if(_0x32f62c){_0x45a53b['model']=_[_0x83d8('0x44')](db[_0x83d8('0xba')][_0x83d8('0x54')]);_0x45a53b[_0x83d8('0x43')]=_[_0x83d8('0x44')](_0x55c5e9['query']);_0x45a53b[_0x83d8('0x45')]=_['intersection'](_0x45a53b[_0x83d8('0x42')],_0x45a53b[_0x83d8('0x43')]);_0x50dd85[_0x83d8('0x47')]=_['intersection'](_0x45a53b['model'],qs[_0x83d8('0x48')](_0x55c5e9[_0x83d8('0x43')]['fields']));_0x50dd85['attributes']=_0x50dd85[_0x83d8('0x47')][_0x83d8('0x55')]?_0x50dd85[_0x83d8('0x47')]:_0x45a53b[_0x83d8('0x42')];if(!_0x55c5e9['query']['hasOwnProperty'](_0x83d8('0x65'))){_0x50dd85[_0x83d8('0x2f')]=qs[_0x83d8('0x2f')](_0x55c5e9[_0x83d8('0x43')][_0x83d8('0x2f')]);_0x50dd85['offset']=qs[_0x83d8('0x2d')](_0x55c5e9[_0x83d8('0x43')][_0x83d8('0x2d')]);}_0x50dd85[_0x83d8('0x49')]=qs['sort'](_0x55c5e9[_0x83d8('0x43')][_0x83d8('0x4a')]);_0x50dd85[_0x83d8('0x4b')]=qs[_0x83d8('0x45')](_[_0x83d8('0x4c')](_0x55c5e9[_0x83d8('0x43')],_0x45a53b['filters']));_0x50dd85['where'][_0x83d8('0x62')]=_0x32f62c['id'];if(_0x55c5e9[_0x83d8('0x43')][_0x83d8('0x4d')]){_0x50dd85[_0x83d8('0x4b')]=_[_0x83d8('0x56')](_0x50dd85['where'],{'$or':_[_0x83d8('0x3e')](_0x50dd85[_0x83d8('0x47')],function(_0x1bbda5){var _0x30be32={};_0x30be32[_0x1bbda5]={'$like':'%'+_0x55c5e9[_0x83d8('0x43')][_0x83d8('0x4d')]+'%'};return _0x30be32;})});}_0x50dd85=_['merge']({},_0x50dd85,_0x55c5e9[_0x83d8('0x4e')]);return db['SmsInteraction'][_0x83d8('0x30')]({'where':_0x50dd85[_0x83d8('0x4b')]})[_0x83d8('0x21')](function(_0x43fdc1){_0x379d7d[_0x83d8('0x30')]=_0x43fdc1;if(_0x55c5e9['query'][_0x83d8('0x50')]){_0x50dd85['include']=[{'model':db[_0x83d8('0x76')],'as':_0x83d8('0xbb'),'required':![]},{'model':db[_0x83d8('0xa9')],'as':_0x83d8('0xbc'),'attributes':['name',_0x83d8('0xbd'),_0x83d8('0xbe')],'required':![]},{'model':db[_0x83d8('0xbf')],'as':_0x83d8('0xc0'),'attributes':['id',_0x83d8('0x3b'),_0x83d8('0xc1')],'where':_0x55c5e9['query'][_0x83d8('0xc2')]?{'id':_0x55c5e9[_0x83d8('0x43')][_0x83d8('0xc2')]}:undefined,'required':_0x55c5e9[_0x83d8('0x43')][_0x83d8('0xc2')]?!![]:![]}];}return db[_0x83d8('0xba')][_0x83d8('0x51')](_0x50dd85);})[_0x83d8('0x21')](function(_0x78da12){_0x379d7d[_0x83d8('0x66')]=_0x78da12;return _0x379d7d;});}})[_0x83d8('0x21')](respondWithFilteredResult(_0x4c4f57,_0x50dd85))[_0x83d8('0x29')](handleError(_0x4c4f57,null));};exports['send']=function(_0x2897c5,_0x98aa85,_0xe83a69){var _0x3ff2a2,_0x4895a2,_0x3fc44b;if(_[_0x83d8('0x94')](_0x2897c5[_0x83d8('0x60')][_0x83d8('0x60')])||_0x2897c5['body']['body']===''){throw new db[(_0x83d8('0x77'))][(_0x83d8('0x78'))](_0x83d8('0x96'));}if(_[_0x83d8('0x94')](_0x2897c5[_0x83d8('0x60')]['to'])){throw new db[(_0x83d8('0x77'))][(_0x83d8('0x78'))](_0x83d8('0xc3'));}_0x3ff2a2=_0x2897c5[_0x83d8('0x60')]['to'];return db[_0x83d8('0x4f')][_0x83d8('0x57')]({'where':{'id':_0x2897c5[_0x83d8('0x52')]['id']},'include':[{'model':db[_0x83d8('0x99')],'as':'List','include':[{'model':db[_0x83d8('0x76')],'as':'Contacts','where':{'mobile':_0x3ff2a2},'limit':0x1,'order':[['updatedAt',_0x83d8('0x9b')]]}]}]})['then'](handleEntityNotFound(_0x98aa85,null))[_0x83d8('0x21')](function(_0x38bc55){if(_0x38bc55&&_0x38bc55[_0x83d8('0xc4')]){_0x4895a2=_0x38bc55[_0x83d8('0x37')]({'plain':!![]});if(_0x4895a2[_0x83d8('0xc4')]&&_0x4895a2[_0x83d8('0xc4')][_0x83d8('0x9a')][_0x83d8('0x55')]){return _0x4895a2[_0x83d8('0xc4')][_0x83d8('0x9a')][0x0];}return db['CmContact'][_0x83d8('0x58')](_[_0x83d8('0x9d')](_0x2897c5[_0x83d8('0x60')],{'firstName':_0x3ff2a2,'mobile':_0x3ff2a2,'phone':_0x3ff2a2,'ListId':_0x4895a2[_0x83d8('0x7e')]}));}})[_0x83d8('0x21')](handleEntityNotFound(_0x98aa85,null))['then'](function(_0x503d46){if(_0x503d46){_0x3fc44b=_0x503d46;return db['SmsInteraction']['find']({'where':{'ContactId':_0x3fc44b['id'],'closed':![],'SmsAccountId':_0x4895a2['id']}})['then'](function(_0x55ede3){if(_0x55ede3){return[_0x55ede3,![]];}return db[_0x83d8('0xba')]['create']({'UserId':_0x2897c5[_0x83d8('0x59')]['id'],'ContactId':_0x3fc44b['id'],'SmsAccountId':_0x4895a2['id'],'phone':_0x3ff2a2,'firstMsgDirection':_0x83d8('0xc5'),'Messages':[_[_0x83d8('0x56')](_0x2897c5[_0x83d8('0x60')],{'read':![],'body':_0x2897c5[_0x83d8('0x60')][_0x83d8('0x60')],'phone':_0x3ff2a2,'SmsAccountId':_0x4895a2['id'],'UserId':_0x2897c5[_0x83d8('0x59')]['id'],'ContactId':_0x3fc44b['id']})]},{'include':[{'model':db[_0x83d8('0xa5')],'as':'Messages'}]})['then'](function(_0x5951db){return[_0x5951db,!![]];});});}})[_0x83d8('0x9e')](function(_0x5d6035,_0x9076e6){if(_0x9076e6){return _0x5d6035;}return db['SmsMessage'][_0x83d8('0x58')](_[_0x83d8('0x56')](_0x2897c5[_0x83d8('0x60')],{'read':![],'body':_0x2897c5[_0x83d8('0x60')][_0x83d8('0x60')],'phone':_0x3ff2a2,'SmsAccountId':_0x4895a2['id'],'SmsInteractionId':_0x5d6035['id'],'UserId':_0x2897c5['user']['id'],'ContactId':_0x3fc44b['id']}))['then'](function(_0x5a388d){_0x5d6035[_0x83d8('0xc6')][_0x83d8('0xc7')]=[];_0x5d6035['dataValues']['Messages'][_0x83d8('0xa2')](_0x5a388d['dataValues']);return _0x5d6035;});})['then'](respondWithResult(_0x98aa85,null))[_0x83d8('0x29')](handleError(_0x98aa85,null));};exports['status']=function(_0x1d5010,_0x39245b,_0x4528ea){if(_0x1d5010[_0x83d8('0x60')]['id']){delete _0x1d5010[_0x83d8('0x60')]['id'];}var _0x4e79a3,_0x393466,_0x5992fb;return db['SmsAccount'][_0x83d8('0x57')]({'where':{'id':_0x1d5010[_0x83d8('0x52')]['id']}})[_0x83d8('0x21')](handleEntityNotFound(_0x39245b,null))['then'](function(_0xb295ce){if(_0xb295ce){_0x5992fb=_0xb295ce;logger[_0x83d8('0x24')](_0x83d8('0xc8'),_0x83d8('0x2b'),_0x83d8('0xc9'),_0xb295ce[_0x83d8('0x40')],util[_0x83d8('0xca')](_0x1d5010[_0x83d8('0x60')],{'showHidden':![],'depth':null}));switch(_0xb295ce[_0x83d8('0x40')]){case _0x83d8('0x83'):if(_0x1d5010[_0x83d8('0x60')][_0x83d8('0xcb')]&&_0x1d5010[_0x83d8('0x60')]['status']){_0x393466=_0x1d5010['body'][_0x83d8('0x2b')];return db[_0x83d8('0xa5')][_0x83d8('0x57')]({'where':{'messageId':_0x1d5010[_0x83d8('0x60')]['skebby_dispatch_id']}});}break;case _0x83d8('0x85'):if(_0x1d5010[_0x83d8('0x60')][_0x83d8('0xcc')]&&_0x1d5010[_0x83d8('0x60')][_0x83d8('0xcd')]){_0x393466=_0x1d5010[_0x83d8('0x60')][_0x83d8('0xcd')];return db['SmsMessage'][_0x83d8('0x57')]({'where':{'messageId':_0x1d5010[_0x83d8('0x60')]['requestid']}});}break;case _0x83d8('0x86'):if(_0x1d5010[_0x83d8('0x60')][_0x83d8('0xce')]&&_0x1d5010['body'][_0x83d8('0xcf')]){_0x393466=_0x1d5010[_0x83d8('0x60')]['status_code'];return db[_0x83d8('0xa5')]['find']({'where':{'messageId':_0x1d5010['body'][_0x83d8('0xce')]}});}break;case _0x83d8('0x8b'):var _0x3a9068=_0x1d5010[_0x83d8('0x60')][_0x83d8('0x8c')][0x0];if(_0x3a9068[_0x83d8('0x87')]&&_0x3a9068[_0x83d8('0x2b')][_0x83d8('0xd0')]===_0x83d8('0xd1')){_0x393466=_0x3a9068[_0x83d8('0x2b')][_0x83d8('0xd0')];return db[_0x83d8('0xa5')][_0x83d8('0x57')]({'where':{'messageId':_0x3a9068[_0x83d8('0x87')]}});}break;case'clickatell':if(_0x1d5010['body'][_0x83d8('0x87')]&&_0x1d5010[_0x83d8('0x60')][_0x83d8('0x2b')]){_0x393466=_0x1d5010[_0x83d8('0x60')][_0x83d8('0x2b')];return db[_0x83d8('0xa5')][_0x83d8('0x57')]({'where':{'messageId':_0x1d5010[_0x83d8('0x60')][_0x83d8('0x87')]}});}break;case _0x83d8('0x92'):if(_0x1d5010['body'][0x0]['message']['id']){_0x393466=_0x1d5010[_0x83d8('0x60')][0x0][_0x83d8('0x40')];return db[_0x83d8('0xa5')]['find']({'where':{'messageId':_0x1d5010[_0x83d8('0x60')][0x0]['message']['id']}});}break;case'intelepeer':if(_0x1d5010[_0x83d8('0x60')][_0x83d8('0xd2')]&&_0x1d5010['body'][_0x83d8('0x2b')]){_0x393466=_0x1d5010[_0x83d8('0x60')][_0x83d8('0x2b')];return db[_0x83d8('0xa5')]['find']({'where':{'messageId':_0x1d5010[_0x83d8('0x60')][_0x83d8('0xd2')]}});}break;}}})[_0x83d8('0x21')](handleEntityNotFound(_0x39245b,null))[_0x83d8('0x21')](function(_0x5a5efd){if(_0x5a5efd){_0x4e79a3=_0x5a5efd;switch(_0x5992fb['type']){case _0x83d8('0x83'):if(_0x393466===_0x83d8('0xd1')){return _0x4e79a3['update']({'read':!![]});}else{logger['error'](_0x83d8('0xc8'),_0x83d8('0x2b'),_0x83d8('0x83'),util[_0x83d8('0xca')](_0x1d5010[_0x83d8('0x60')],{'showHidden':![],'depth':null}));}break;case _0x83d8('0x85'):if(_0x393466==='1'){return _0x4e79a3[_0x83d8('0x35')]({'read':!![]});}else{logger[_0x83d8('0x26')]('SmsAccount,\x20%s,\x20%s,\x20%s','status',_0x83d8('0x83'),util[_0x83d8('0xca')](_0x1d5010[_0x83d8('0x60')],{'showHidden':![],'depth':null}));}break;case _0x83d8('0x86'):if(!_0x1d5010[_0x83d8('0x60')]['error_code']&&_0x393466>=0xc8&&_0x393466<=0xce){return _0x4e79a3[_0x83d8('0x35')]({'read':!![]});}else{logger[_0x83d8('0x26')]('SmsAccount,\x20%s,\x20%s,\x20%s','status',_0x83d8('0x86'),util[_0x83d8('0xca')](_0x1d5010[_0x83d8('0x60')],{'showHidden':![],'depth':null}));}break;case'infobip':var _0x15d83c=_0x1d5010[_0x83d8('0x60')][_0x83d8('0x8c')][0x0];if(_0x15d83c[_0x83d8('0x2b')][_0x83d8('0xd0')]==='DELIVERED'){return _0x4e79a3['update']({'read':!![]});}else{logger[_0x83d8('0x26')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x83d8('0x2b'),_0x83d8('0x8b'),util[_0x83d8('0xca')](_0x1d5010[_0x83d8('0x60')],{'showHidden':![],'depth':null}));}break;case _0x83d8('0x8f'):if(_0x393466==_0x83d8('0xd3')||_0x393466==_0x83d8('0xd4')){return _0x4e79a3['update']({'read':!![]});}else{logger['error']('SmsAccount,\x20%s,\x20%s,\x20%s',_0x83d8('0x2b'),_0x83d8('0x8f'),util[_0x83d8('0xca')](_0x1d5010[_0x83d8('0x60')],{'showHidden':![],'depth':null}));}break;case _0x83d8('0x92'):if(_0x393466=='message-delivered'){return _0x4e79a3[_0x83d8('0x35')]({'read':!![]});}else{logger[_0x83d8('0x26')](_0x83d8('0xc8'),_0x83d8('0x2b'),'bandwidth',util['inspect'](_0x1d5010[_0x83d8('0x60')],{'showHidden':![],'depth':null}));}break;case _0x83d8('0xd5'):if(_0x393466===_0x83d8('0xd6')||_0x393466===_0x83d8('0xd7')){return _0x4e79a3['update']({'read':!![]});}else{logger[_0x83d8('0x26')](_0x83d8('0xc8'),_0x83d8('0x2b'),_0x83d8('0xd5'),util[_0x83d8('0xca')](_0x1d5010['body'],{'showHidden':![],'depth':null}));}break;}return _0x4e79a3;}})[_0x83d8('0x21')](respondWithResult(_0x39245b,null))['catch'](handleError(_0x39245b,null));};exports[_0x83d8('0xd8')]=function(_0x2a1159,_0x7f35a7,_0x847afb){var _0x3398b6,_0x2dce4b,_0x534ab1;return db[_0x83d8('0x4f')][_0x83d8('0x57')]({'where':{'id':_0x2a1159['params']['id']}})['then'](handleEntityNotFound(_0x7f35a7,null))[_0x83d8('0x21')](function(_0x4bbe1a){if(_0x4bbe1a){_0x534ab1=_0x4bbe1a;logger[_0x83d8('0x24')](_0x83d8('0xc8'),_0x83d8('0x2b'),_0x83d8('0xc9'),_0x4bbe1a[_0x83d8('0x40')],util[_0x83d8('0xca')](_0x2a1159[_0x83d8('0x43')],{'showHidden':![],'depth':null}));switch(_0x4bbe1a[_0x83d8('0x40')]){case _0x83d8('0xd9'):if(_0x2a1159[_0x83d8('0x43')][_0x83d8('0xda')]&&_0x2a1159[_0x83d8('0x43')]['state']){_0x2dce4b=_0x2a1159[_0x83d8('0x43')][_0x83d8('0xdb')];return db['SmsMessage']['find']({'where':{'messageId':_0x2a1159[_0x83d8('0x43')][_0x83d8('0xda')]}});}break;}}})[_0x83d8('0x21')](handleEntityNotFound(_0x7f35a7,null))['then'](function(_0x3c6110){if(_0x3c6110){_0x3398b6=_0x3c6110;switch(_0x534ab1['type']){case _0x83d8('0xd9'):if(_0x2dce4b==='2'||_0x2dce4b==='6'){return _0x3398b6[_0x83d8('0x35')]({'read':!![]});}else{logger[_0x83d8('0x26')]('SmsAccount,\x20%s,\x20%s,\x20%s','status',_0x83d8('0xd9'),util[_0x83d8('0xca')](_0x2a1159[_0x83d8('0x43')],{'showHidden':![],'depth':null}));};break;}return _0x3398b6;}})[_0x83d8('0x21')](respondWithResult(_0x7f35a7,null))[_0x83d8('0x29')](handleError(_0x7f35a7,null));};exports[_0x83d8('0xdc')]=function(_0x5c7949,_0x37bd3f,_0x20aec7){return db['SmsAccount']['find']({'where':{'id':_0x5c7949[_0x83d8('0x52')]['id']}})['then'](handleEntityNotFound(_0x37bd3f,null))['then'](function(_0x54362f){if(_0x54362f){return _0x54362f[_0x83d8('0xdc')](_0x5c7949[_0x83d8('0x60')][_0x83d8('0x6d')],_[_0x83d8('0x9c')](_0x5c7949[_0x83d8('0x60')],['ids','id'])||{})[_0x83d8('0x9e')](function(_0x3b7734){for(var _0x43d48c=0x0;_0x43d48c<_0x5c7949['body'][_0x83d8('0x6d')][_0x83d8('0x55')];_0x43d48c+=0x1){socket[_0x83d8('0xdd')](_0x83d8('0xde'),{'UserId':Number(_0x5c7949[_0x83d8('0x60')]['ids'][_0x43d48c]),'SmsAccountId':Number(_0x5c7949[_0x83d8('0x52')]['id'])});}return _0x3b7734;});}})[_0x83d8('0x21')](respondWithResult(_0x37bd3f,null))[_0x83d8('0x29')](handleError(_0x37bd3f,null));};exports['removeAgents']=function(_0x2f351b,_0x2b6a17,_0x3642a0){return db[_0x83d8('0x4f')]['find']({'where':{'id':_0x2f351b['params']['id']}})[_0x83d8('0x21')](handleEntityNotFound(_0x2b6a17,null))[_0x83d8('0x21')](function(_0x1af686){if(_0x1af686){return _0x1af686['removeAgents'](_0x2f351b['query']['ids'])[_0x83d8('0x21')](function(){if(_[_0x83d8('0xdf')](_0x2f351b[_0x83d8('0x43')][_0x83d8('0x6d')])){for(var _0x1f1475=0x0;_0x1f1475<_0x2f351b[_0x83d8('0x43')]['ids'][_0x83d8('0x55')];_0x1f1475+=0x1){socket['emit'](_0x83d8('0xe0'),{'UserId':Number(_0x2f351b['query'][_0x83d8('0x6d')][_0x1f1475]),'SmsAccountId':Number(_0x2f351b[_0x83d8('0x52')]['id'])});}}else{socket[_0x83d8('0xdd')](_0x83d8('0xe0'),{'UserId':Number(_0x2f351b[_0x83d8('0x43')]['ids']),'SmsAccountId':Number(_0x2f351b[_0x83d8('0x52')]['id'])});}});}})[_0x83d8('0x21')](respondWithStatusCode(_0x2b6a17,null))['catch'](handleError(_0x2b6a17,null));};exports[_0x83d8('0xe1')]=function(_0x401ccd,_0xcd7c7d,_0x217a0e){var _0x449624={};var _0xeb528d={};var _0x10c4d7;var _0x3fff97;return db[_0x83d8('0x4f')][_0x83d8('0x64')]({'where':{'id':_0x401ccd[_0x83d8('0x52')]['id']}})['then'](handleEntityNotFound(_0xcd7c7d,null))[_0x83d8('0x21')](function(_0x356f4b){if(_0x356f4b){_0x10c4d7=_0x356f4b;_0xeb528d[_0x83d8('0x42')]=_['keys'](db[_0x83d8('0xa9')][_0x83d8('0x54')]);_0xeb528d['query']=_[_0x83d8('0x44')](_0x401ccd['query']);_0xeb528d['filters']=_[_0x83d8('0x46')](_0xeb528d[_0x83d8('0x42')],_0xeb528d[_0x83d8('0x43')]);_0x449624['attributes']=_[_0x83d8('0x46')](_0xeb528d[_0x83d8('0x42')],qs[_0x83d8('0x48')](_0x401ccd[_0x83d8('0x43')][_0x83d8('0x48')]));_0x449624[_0x83d8('0x47')]=_0x449624[_0x83d8('0x47')][_0x83d8('0x55')]?_0x449624[_0x83d8('0x47')]:_0xeb528d['model'];_0x449624['order']=qs['sort'](_0x401ccd['query'][_0x83d8('0x4a')]);_0x449624[_0x83d8('0x4b')]=qs[_0x83d8('0x45')](_[_0x83d8('0x4c')](_0x401ccd[_0x83d8('0x43')],_0xeb528d[_0x83d8('0x45')]));if(_0x401ccd[_0x83d8('0x43')][_0x83d8('0x4d')]){_0x449624[_0x83d8('0x4b')]=_[_0x83d8('0x56')](_0x449624[_0x83d8('0x4b')],{'$or':_[_0x83d8('0x3e')](_0x449624[_0x83d8('0x47')],function(_0x4f4dad){var _0x1b5dd7={};_0x1b5dd7[_0x4f4dad]={'$like':'%'+_0x401ccd['query']['filter']+'%'};return _0x1b5dd7;})});}_0x449624=_['merge']({},_0x449624,_0x401ccd['options']);return _0x10c4d7[_0x83d8('0xe1')](_0x449624);}})['then'](function(_0x7da7aa){if(_0x7da7aa){_0x3fff97=_0x7da7aa[_0x83d8('0x55')];if(!_0x401ccd[_0x83d8('0x43')][_0x83d8('0x6a')](_0x83d8('0x65'))){_0x449624[_0x83d8('0x2f')]=qs[_0x83d8('0x2f')](_0x401ccd[_0x83d8('0x43')][_0x83d8('0x2f')]);_0x449624[_0x83d8('0x2d')]=qs[_0x83d8('0x2d')](_0x401ccd[_0x83d8('0x43')]['offset']);}return _0x10c4d7[_0x83d8('0xe1')](_0x449624);}})[_0x83d8('0x21')](function(_0x81c6a2){if(_0x81c6a2){return _0x81c6a2?{'count':_0x3fff97,'rows':_0x81c6a2}:null;}})[_0x83d8('0x21')](respondWithResult(_0xcd7c7d,null))[_0x83d8('0x29')](handleError(_0xcd7c7d,null));};
\ No newline at end of file
index fdd962b..e2cb312 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x274b=['SmsAccount','save','update','remove','emit','hasOwnProperty','hook','../../mysqldb'];(function(_0x3daea5,_0x567a3d){var _0x523bc9=function(_0x49152f){while(--_0x49152f){_0x3daea5['push'](_0x3daea5['shift']());}};_0x523bc9(++_0x567a3d);}(_0x274b,0x1df));var _0xb274=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x274b[_0x3b380d];return _0x54502b;};'use strict';var EventEmitter=require('events');var SmsAccount=require(_0xb274('0x0'))['db'][_0xb274('0x1')];var SmsAccountEvents=new EventEmitter();SmsAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xb274('0x2'),'afterUpdate':_0xb274('0x3'),'afterDestroy':_0xb274('0x4')};function emitEvent(_0x55988c){return function(_0x38c45a,_0x59f87e,_0x5dd888){SmsAccountEvents[_0xb274('0x5')](_0x55988c+':'+_0x38c45a['id'],_0x38c45a);SmsAccountEvents[_0xb274('0x5')](_0x55988c,_0x38c45a);_0x5dd888(null);};}for(var e in events){if(events[_0xb274('0x6')](e)){var event=events[e];SmsAccount[_0xb274('0x7')](e,emitEvent(event));}}module['exports']=SmsAccountEvents;
\ No newline at end of file
+var _0x378c=['remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','SmsAccount','setMaxListeners','save','update'];(function(_0x3740fe,_0x6c543c){var _0x55492b=function(_0x1f851f){while(--_0x1f851f){_0x3740fe['push'](_0x3740fe['shift']());}};_0x55492b(++_0x6c543c);}(_0x378c,0x1f4));var _0xc378=function(_0x36ed48,_0x1ee0d4){_0x36ed48=_0x36ed48-0x0;var _0x51c63a=_0x378c[_0x36ed48];return _0x51c63a;};'use strict';var EventEmitter=require(_0xc378('0x0'));var SmsAccount=require(_0xc378('0x1'))['db'][_0xc378('0x2')];var SmsAccountEvents=new EventEmitter();SmsAccountEvents[_0xc378('0x3')](0x0);var events={'afterCreate':_0xc378('0x4'),'afterUpdate':_0xc378('0x5'),'afterDestroy':_0xc378('0x6')};function emitEvent(_0x360c99){return function(_0x39c544,_0x34e462,_0x94e862){SmsAccountEvents[_0xc378('0x7')](_0x360c99+':'+_0x39c544['id'],_0x39c544);SmsAccountEvents[_0xc378('0x7')](_0x360c99,_0x39c544);_0x94e862(null);};}for(var e in events){if(events[_0xc378('0x8')](e)){var event=events[e];SmsAccount[_0xc378('0x9')](e,emitEvent(event));}}module[_0xc378('0xa')]=SmsAccountEvents;
\ No newline at end of file
index a90f733..1bef91a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcdc1=['lodash','util','moment','bluebird','path','rimraf','./smsAccount.attributes','exports','SmsAccount','sms_accounts'];(function(_0x2394d0,_0x2ee1d9){var _0x343ecd=function(_0x2daa85){while(--_0x2daa85){_0x2394d0['push'](_0x2394d0['shift']());}};_0x343ecd(++_0x2ee1d9);}(_0xcdc1,0xdc));var _0x1cdc=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0xcdc1[_0x19e35c];return _0x3e1fe8;};'use strict';var _=require(_0x1cdc('0x0'));var util=require(_0x1cdc('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x1cdc('0x2'));var BPromise=require(_0x1cdc('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x1cdc('0x4'));var rimraf=require(_0x1cdc('0x5'));var config=require('../../config/environment');var attributes=require(_0x1cdc('0x6'));module[_0x1cdc('0x7')]=function(_0x2d668c,_0x1bca76){return _0x2d668c['define'](_0x1cdc('0x8'),attributes,{'tableName':_0x1cdc('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x983d=['util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','SmsAccount'];(function(_0x3798a9,_0x4a3cf4){var _0xbe81fa=function(_0x242e23){while(--_0x242e23){_0x3798a9['push'](_0x3798a9['shift']());}};_0xbe81fa(++_0x4a3cf4);}(_0x983d,0xe1));var _0xd983=function(_0x53128c,_0x3ae276){_0x53128c=_0x53128c-0x0;var _0x5eb8ff=_0x983d[_0x53128c];return _0x5eb8ff;};'use strict';var _=require('lodash');var util=require(_0xd983('0x0'));var logger=require('../../config/logger')(_0xd983('0x1'));var moment=require(_0xd983('0x2'));var BPromise=require(_0xd983('0x3'));var rp=require(_0xd983('0x4'));var fs=require('fs');var path=require(_0xd983('0x5'));var rimraf=require(_0xd983('0x6'));var config=require(_0xd983('0x7'));var attributes=require('./smsAccount.attributes');module['exports']=function(_0xeb56e1,_0x38c82a){return _0xeb56e1['define'](_0xd983('0x8'),attributes,{'tableName':'sms_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e00233d..3db272f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf2ee=['SmsAccount','find','options','raw','where','attributes','include','map','model','lodash','util','moment','bluebird','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','./smsAccount.socket','register','request','then','info','SmsAccount,\x20%s,\x20%s','request\x20sent','debug','SmsAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','ShowSmsAccount'];(function(_0x160d71,_0x1498ac){var _0x3138e7=function(_0x209bd8){while(--_0x209bd8){_0x160d71['push'](_0x160d71['shift']());}};_0x3138e7(++_0x1498ac);}(_0xf2ee,0x185));var _0xef2e=function(_0x24db35,_0xf4b50d){_0x24db35=_0x24db35-0x0;var _0x39bb5e=_0xf2ee[_0x24db35];return _0x39bb5e;};'use strict';var _=require(_0xef2e('0x0'));var util=require(_0xef2e('0x1'));var moment=require(_0xef2e('0x2'));var BPromise=require(_0xef2e('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xef2e('0x4'));var logger=require(_0xef2e('0x5'))('rpc');var config=require(_0xef2e('0x6'));var jayson=require(_0xef2e('0x7'));var client=jayson[_0xef2e('0x8')][_0xef2e('0x9')]({'port':0x232a});config[_0xef2e('0xa')]=_[_0xef2e('0xb')](config[_0xef2e('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0xef2e('0xc'))(new Redis(config[_0xef2e('0xa')]));require(_0xef2e('0xd'))[_0xef2e('0xe')](socket);function respondWithRpcPromise(_0x2b3093,_0x59e22a,_0x37aec0){return new BPromise(function(_0x461e07,_0x4ff780){return client[_0xef2e('0xf')](_0x2b3093,_0x37aec0)[_0xef2e('0x10')](function(_0x40e64e){logger[_0xef2e('0x11')](_0xef2e('0x12'),_0x59e22a,_0xef2e('0x13'));logger[_0xef2e('0x14')](_0xef2e('0x15'),_0x59e22a,_0xef2e('0x13'),JSON[_0xef2e('0x16')](_0x40e64e));if(_0x40e64e['error']){if(_0x40e64e[_0xef2e('0x17')][_0xef2e('0x18')]===0x1f4){logger[_0xef2e('0x17')](_0xef2e('0x12'),_0x59e22a,_0x40e64e[_0xef2e('0x17')][_0xef2e('0x19')]);return _0x4ff780(_0x40e64e[_0xef2e('0x17')][_0xef2e('0x19')]);}logger[_0xef2e('0x17')]('SmsAccount,\x20%s,\x20%s',_0x59e22a,_0x40e64e[_0xef2e('0x17')][_0xef2e('0x19')]);return _0x461e07(_0x40e64e[_0xef2e('0x17')][_0xef2e('0x19')]);}else{logger[_0xef2e('0x11')](_0xef2e('0x12'),_0x59e22a,_0xef2e('0x13'));_0x461e07(_0x40e64e[_0xef2e('0x1a')][_0xef2e('0x19')]);}})[_0xef2e('0x1b')](function(_0x2cacb6){logger['error']('SmsAccount,\x20%s,\x20%s',_0x59e22a,_0x2cacb6);_0x4ff780(_0x2cacb6);});});}exports[_0xef2e('0x1c')]=function(_0x82933){var _0x3e0d0f=this;return new Promise(function(_0x4c8277,_0xba98a9){return db[_0xef2e('0x1d')][_0xef2e('0x1e')]({'raw':_0x82933[_0xef2e('0x1f')]?_0x82933[_0xef2e('0x1f')][_0xef2e('0x20')]===undefined?!![]:![]:!![],'where':_0x82933[_0xef2e('0x1f')]?_0x82933[_0xef2e('0x1f')][_0xef2e('0x21')]||null:null,'attributes':_0x82933[_0xef2e('0x1f')]?_0x82933[_0xef2e('0x1f')][_0xef2e('0x22')]||null:null,'include':_0x82933[_0xef2e('0x1f')]?_0x82933['options'][_0xef2e('0x23')]?_[_0xef2e('0x24')](_0x82933['options'][_0xef2e('0x23')],function(_0x4d6656){return{'model':db[_0x4d6656[_0xef2e('0x25')]],'as':_0x4d6656['as'],'attributes':_0x4d6656['attributes'],'include':_0x4d6656['include']?_['map'](_0x4d6656['include'],function(_0x250cc3){return{'model':db[_0x250cc3['model']],'as':_0x250cc3['as'],'attributes':_0x250cc3['attributes'],'include':_0x250cc3[_0xef2e('0x23')]?_[_0xef2e('0x24')](_0x250cc3[_0xef2e('0x23')],function(_0x480f6c){return{'model':db[_0x480f6c[_0xef2e('0x25')]],'as':_0x480f6c['as'],'attributes':_0x480f6c[_0xef2e('0x22')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4a5c17){logger[_0xef2e('0x11')](_0xef2e('0x1c'),_0x82933);logger['debug'](_0xef2e('0x1c'),_0x82933,JSON[_0xef2e('0x16')](_0x4a5c17));_0x4c8277(_0x4a5c17);})[_0xef2e('0x1b')](function(_0x1c7b3e){logger[_0xef2e('0x17')](_0xef2e('0x1c'),_0x1c7b3e['message'],_0x82933);_0xba98a9(_0x3e0d0f['error'](0x1f4,_0x1c7b3e['message']));});});};
\ No newline at end of file
+var _0x7e3b=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','localhost','redis','./smsAccount.socket','register','then','info','SmsAccount,\x20%s,\x20%s','request\x20sent','debug','error','message','result','catch','ShowSmsAccount','SmsAccount','find','options','raw','where','attributes','map','include','model','stringify','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x41d543,_0x34d172){var _0x2664c4=function(_0x24a1ff){while(--_0x24a1ff){_0x41d543['push'](_0x41d543['shift']());}};_0x2664c4(++_0x34d172);}(_0x7e3b,0x8d));var _0xb7e3=function(_0x428c3a,_0x1bd4e2){_0x428c3a=_0x428c3a-0x0;var _0x957b10=_0x7e3b[_0x428c3a];return _0x957b10;};'use strict';var _=require('lodash');var util=require(_0xb7e3('0x0'));var moment=require(_0xb7e3('0x1'));var BPromise=require(_0xb7e3('0x2'));var rs=require(_0xb7e3('0x3'));var fs=require('fs');var Redis=require(_0xb7e3('0x4'));var db=require(_0xb7e3('0x5'))['db'];var utils=require(_0xb7e3('0x6'));var logger=require(_0xb7e3('0x7'))(_0xb7e3('0x8'));var config=require(_0xb7e3('0x9'));var jayson=require(_0xb7e3('0xa'));var client=jayson[_0xb7e3('0xb')][_0xb7e3('0xc')]({'port':0x232a});config['redis']=_['defaults'](config['redis'],{'host':_0xb7e3('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xb7e3('0xe')]));require(_0xb7e3('0xf'))[_0xb7e3('0x10')](socket);function respondWithRpcPromise(_0xc6ee90,_0x436449,_0x4a381e){return new BPromise(function(_0x2e8330,_0x62a849){return client['request'](_0xc6ee90,_0x4a381e)[_0xb7e3('0x11')](function(_0x1c6ee1){logger[_0xb7e3('0x12')](_0xb7e3('0x13'),_0x436449,_0xb7e3('0x14'));logger[_0xb7e3('0x15')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x436449,_0xb7e3('0x14'),JSON['stringify'](_0x1c6ee1));if(_0x1c6ee1[_0xb7e3('0x16')]){if(_0x1c6ee1[_0xb7e3('0x16')]['code']===0x1f4){logger[_0xb7e3('0x16')](_0xb7e3('0x13'),_0x436449,_0x1c6ee1['error']['message']);return _0x62a849(_0x1c6ee1[_0xb7e3('0x16')][_0xb7e3('0x17')]);}logger[_0xb7e3('0x16')](_0xb7e3('0x13'),_0x436449,_0x1c6ee1[_0xb7e3('0x16')]['message']);return _0x2e8330(_0x1c6ee1[_0xb7e3('0x16')][_0xb7e3('0x17')]);}else{logger['info'](_0xb7e3('0x13'),_0x436449,_0xb7e3('0x14'));_0x2e8330(_0x1c6ee1[_0xb7e3('0x18')][_0xb7e3('0x17')]);}})[_0xb7e3('0x19')](function(_0x2520ec){logger['error'](_0xb7e3('0x13'),_0x436449,_0x2520ec);_0x62a849(_0x2520ec);});});}exports[_0xb7e3('0x1a')]=function(_0x2985d5){var _0x2a02b4=this;return new Promise(function(_0x197ccc,_0x3afe25){return db[_0xb7e3('0x1b')][_0xb7e3('0x1c')]({'raw':_0x2985d5[_0xb7e3('0x1d')]?_0x2985d5[_0xb7e3('0x1d')][_0xb7e3('0x1e')]===undefined?!![]:![]:!![],'where':_0x2985d5['options']?_0x2985d5[_0xb7e3('0x1d')][_0xb7e3('0x1f')]||null:null,'attributes':_0x2985d5[_0xb7e3('0x1d')]?_0x2985d5[_0xb7e3('0x1d')][_0xb7e3('0x20')]||null:null,'include':_0x2985d5[_0xb7e3('0x1d')]?_0x2985d5['options']['include']?_[_0xb7e3('0x21')](_0x2985d5[_0xb7e3('0x1d')][_0xb7e3('0x22')],function(_0xf58ac){return{'model':db[_0xf58ac[_0xb7e3('0x23')]],'as':_0xf58ac['as'],'attributes':_0xf58ac['attributes'],'include':_0xf58ac[_0xb7e3('0x22')]?_[_0xb7e3('0x21')](_0xf58ac[_0xb7e3('0x22')],function(_0x18eaa8){return{'model':db[_0x18eaa8[_0xb7e3('0x23')]],'as':_0x18eaa8['as'],'attributes':_0x18eaa8['attributes'],'include':_0x18eaa8['include']?_[_0xb7e3('0x21')](_0x18eaa8[_0xb7e3('0x22')],function(_0x118437){return{'model':db[_0x118437[_0xb7e3('0x23')]],'as':_0x118437['as'],'attributes':_0x118437[_0xb7e3('0x20')]};}):[]};}):[]};}):[]:[]})[_0xb7e3('0x11')](function(_0x574529){logger[_0xb7e3('0x12')](_0xb7e3('0x1a'),_0x2985d5);logger[_0xb7e3('0x15')]('ShowSmsAccount',_0x2985d5,JSON[_0xb7e3('0x24')](_0x574529));_0x197ccc(_0x574529);})[_0xb7e3('0x19')](function(_0x473543){logger[_0xb7e3('0x16')]('ShowSmsAccount',_0x473543['message'],_0x2985d5);_0x3afe25(_0x2a02b4[_0xb7e3('0x16')](0x1f4,_0x473543[_0xb7e3('0x17')]));});});};
\ No newline at end of file
index 53b160d..f059409 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(_0x47b58b,_0x41a189){_0x47b58b=_0x47b58b-0x0;var _0x46bebe=_0xa9e0[_0x47b58b];return _0x46bebe;};'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(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1cfa0d,_0x4391f2){_0x1cfa0d=_0x1cfa0d-0x0;var _0xe33279=_0xa9e0[_0x1cfa0d];return _0xe33279;};'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 6154c45..996a973 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7217=['Router','fs-extra','../../config/environment','./smsApplication.controller','get','isAuthenticated','index','/:id','show','post','create','put','delete','destroy','exports','multer','path','connect-timeout','express'];(function(_0x257794,_0x38561d){var _0x2d3c13=function(_0x535307){while(--_0x535307){_0x257794['push'](_0x257794['shift']());}};_0x2d3c13(++_0x38561d);}(_0x7217,0x19e));var _0x7721=function(_0x12d033,_0x25fa2f){_0x12d033=_0x12d033-0x0;var _0x3b4e80=_0x7217[_0x12d033];return _0x3b4e80;};'use strict';var multer=require(_0x7721('0x0'));var util=require('util');var path=require(_0x7721('0x1'));var timeout=require(_0x7721('0x2'));var express=require(_0x7721('0x3'));var router=express[_0x7721('0x4')]();var fs_extra=require(_0x7721('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x7721('0x6'));var controller=require(_0x7721('0x7'));router[_0x7721('0x8')]('/',auth[_0x7721('0x9')](),controller[_0x7721('0xa')]);router[_0x7721('0x8')](_0x7721('0xb'),auth[_0x7721('0x9')](),controller[_0x7721('0xc')]);router[_0x7721('0xd')]('/',auth[_0x7721('0x9')](),controller[_0x7721('0xe')]);router[_0x7721('0xf')](_0x7721('0xb'),auth[_0x7721('0x9')](),controller['update']);router[_0x7721('0x10')](_0x7721('0xb'),auth[_0x7721('0x9')](),controller[_0x7721('0x11')]);module[_0x7721('0x12')]=router;
\ No newline at end of file
+var _0x34e8=['../../config/environment','./smsApplication.controller','get','index','/:id','isAuthenticated','show','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0xafdaf4,_0x5bd4d1){var _0x1e70a8=function(_0x33bd10){while(--_0x33bd10){_0xafdaf4['push'](_0xafdaf4['shift']());}};_0x1e70a8(++_0x5bd4d1);}(_0x34e8,0x12c));var _0x834e=function(_0x4daa64,_0x3e96b8){_0x4daa64=_0x4daa64-0x0;var _0x227377=_0x34e8[_0x4daa64];return _0x227377;};'use strict';var multer=require(_0x834e('0x0'));var util=require(_0x834e('0x1'));var path=require(_0x834e('0x2'));var timeout=require(_0x834e('0x3'));var express=require('express');var router=express[_0x834e('0x4')]();var fs_extra=require(_0x834e('0x5'));var auth=require(_0x834e('0x6'));var interaction=require(_0x834e('0x7'));var config=require(_0x834e('0x8'));var controller=require(_0x834e('0x9'));router[_0x834e('0xa')]('/',auth['isAuthenticated'](),controller[_0x834e('0xb')]);router['get'](_0x834e('0xc'),auth[_0x834e('0xd')](),controller[_0x834e('0xe')]);router[_0x834e('0xf')]('/',auth[_0x834e('0xd')](),controller[_0x834e('0x10')]);router[_0x834e('0x11')](_0x834e('0xc'),auth[_0x834e('0xd')](),controller[_0x834e('0x12')]);router[_0x834e('0x13')](_0x834e('0xc'),auth[_0x834e('0xd')](),controller[_0x834e('0x14')]);module[_0x834e('0x15')]=router;
\ No newline at end of file
index 7e74df4..70e47b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8421=['exports','INTEGER','noop','*,*,*,*','sequelize'];(function(_0x8e8ca7,_0x5a5e07){var _0x561381=function(_0x2f4bda){while(--_0x2f4bda){_0x8e8ca7['push'](_0x8e8ca7['shift']());}};_0x561381(++_0x5a5e07);}(_0x8421,0xdb));var _0x1842=function(_0x26be11,_0x439a0b){_0x26be11=_0x26be11-0x0;var _0xad84e3=_0x8421[_0x26be11];return _0xad84e3;};'use strict';var Sequelize=require(_0x1842('0x0'));module[_0x1842('0x1')]={'priority':{'type':Sequelize[_0x1842('0x2')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x1842('0x3')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize['STRING'],'defaultValue':_0x1842('0x4')}};
\ No newline at end of file
+var _0x08fa=['noop','*,*,*,*','sequelize','exports','INTEGER','STRING'];(function(_0x4a1a28,_0x165617){var _0x4d8d34=function(_0x442a54){while(--_0x442a54){_0x4a1a28['push'](_0x4a1a28['shift']());}};_0x4d8d34(++_0x165617);}(_0x08fa,0x194));var _0xa08f=function(_0x473ac3,_0xf8066a){_0x473ac3=_0x473ac3-0x0;var _0x563cfd=_0x08fa[_0x473ac3];return _0x563cfd;};'use strict';var Sequelize=require(_0xa08f('0x0'));module[_0xa08f('0x1')]={'priority':{'type':Sequelize[_0xa08f('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0xa08f('0x3')],'allowNull':![],'defaultValue':_0xa08f('0x4')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize[_0xa08f('0x3')]},'interval':{'type':Sequelize[_0xa08f('0x3')],'defaultValue':_0xa08f('0x5')}};
\ No newline at end of file
index 766361d..4cb62e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc99a=['../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','reject','save','update','then','destroy','error','stack','name','send','SmsApplication','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','fields','attributes','hasOwnProperty','order','sort','where','pick','map','VIRTUAL','merge','options','includeAll','include','rows','show','params','create','body','catch','find','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils'];(function(_0xc6be3a,_0x540e05){var _0x56a310=function(_0x50a144){while(--_0x50a144){_0xc6be3a['push'](_0xc6be3a['shift']());}};_0x56a310(++_0x540e05);}(_0xc99a,0x110));var _0xac99=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xc99a[_0x321bb2];return _0x9c12ed;};'use strict';var emlformat=require(_0xac99('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xac99('0x1'));var rp=require(_0xac99('0x2'));var moment=require(_0xac99('0x3'));var BPromise=require(_0xac99('0x4'));var Mustache=require(_0xac99('0x5'));var util=require(_0xac99('0x6'));var path=require(_0xac99('0x7'));var sox=require(_0xac99('0x8'));var csv=require(_0xac99('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xac99('0xa'));var _=require('lodash');var squel=require(_0xac99('0xb'));var crypto=require(_0xac99('0xc'));var jsforce=require(_0xac99('0xd'));var deskjs=require(_0xac99('0xe'));var toCsv=require(_0xac99('0x9'));var querystring=require('querystring');var Papa=require(_0xac99('0xf'));var Redis=require(_0xac99('0x10'));var authService=require(_0xac99('0x11'));var qs=require(_0xac99('0x12'));var as=require(_0xac99('0x13'));var hardwareService=require(_0xac99('0x14'));var logger=require(_0xac99('0x15'))(_0xac99('0x16'));var utils=require(_0xac99('0x17'));var config=require(_0xac99('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xac99('0x19'))['db'];function respondWithStatusCode(_0x24d452,_0x34be91){_0x34be91=_0x34be91||0xcc;return function(_0x326f5f){if(_0x326f5f){return _0x24d452[_0xac99('0x1a')](_0x34be91);}return _0x24d452[_0xac99('0x1b')](_0x34be91)[_0xac99('0x1c')]();};}function respondWithResult(_0x1e21db,_0x18307b){_0x18307b=_0x18307b||0xc8;return function(_0x5e92a6){if(_0x5e92a6){return _0x1e21db[_0xac99('0x1b')](_0x18307b)[_0xac99('0x1d')](_0x5e92a6);}};}function respondWithFilteredResult(_0x1bbdc3,_0x5af0fc){return function(_0x56eb4f){if(_0x56eb4f){var _0x5d7546=typeof _0x5af0fc[_0xac99('0x1e')]===_0xac99('0x1f')&&typeof _0x5af0fc[_0xac99('0x20')]===_0xac99('0x1f');var _0x280c4c=_0x56eb4f[_0xac99('0x21')];var _0x3af68b=_0x5d7546?0x0:_0x5af0fc[_0xac99('0x1e')];var _0x3b28eb=_0x5d7546?_0x56eb4f[_0xac99('0x21')]:_0x5af0fc[_0xac99('0x1e')]+_0x5af0fc[_0xac99('0x20')];var _0xf76ccb;if(_0x3b28eb>=_0x280c4c){_0x3b28eb=_0x280c4c;_0xf76ccb=0xc8;}else{_0xf76ccb=0xce;}_0x1bbdc3[_0xac99('0x1b')](_0xf76ccb);return _0x1bbdc3['set'](_0xac99('0x22'),_0x3af68b+'-'+_0x3b28eb+'/'+_0x280c4c)['json'](_0x56eb4f);}return null;};}function patchUpdates(_0x40bfa8){return function(_0x385617){try{jsonpatch['apply'](_0x385617,_0x40bfa8,!![]);}catch(_0xc3e0e7){return BPromise[_0xac99('0x23')](_0xc3e0e7);}return _0x385617[_0xac99('0x24')]();};}function saveUpdates(_0x48ccb7,_0x5f46a0){return function(_0xb96bf3){if(_0xb96bf3){return _0xb96bf3[_0xac99('0x25')](_0x48ccb7)[_0xac99('0x26')](function(_0x3c3ea1){return _0x3c3ea1;});}return null;};}function removeEntity(_0x1439f6,_0x122ed0){return function(_0xe83f73){if(_0xe83f73){return _0xe83f73[_0xac99('0x27')]()[_0xac99('0x26')](function(){_0x1439f6[_0xac99('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x255124,_0x9277c3){return function(_0x25262a){if(!_0x25262a){_0x255124[_0xac99('0x1a')](0x194);}return _0x25262a;};}function handleError(_0x55b0e9,_0x31bad0){_0x31bad0=_0x31bad0||0x1f4;return function(_0x59331c){logger[_0xac99('0x28')](_0x59331c[_0xac99('0x29')]);if(_0x59331c[_0xac99('0x2a')]){delete _0x59331c[_0xac99('0x2a')];}_0x55b0e9[_0xac99('0x1b')](_0x31bad0)[_0xac99('0x2b')](_0x59331c);};}exports['index']=function(_0x388bf6,_0x24d29a){var _0xfbc17={},_0x39af6a={},_0x7b367d={'count':0x0,'rows':[]};var _0x5be3ba=_['map'](db[_0xac99('0x2c')][_0xac99('0x2d')],function(_0x120933){return{'name':_0x120933[_0xac99('0x2e')],'type':_0x120933[_0xac99('0x2f')][_0xac99('0x30')]};});_0x39af6a[_0xac99('0x31')]=_['map'](_0x5be3ba,'name');_0x39af6a['query']=_[_0xac99('0x32')](_0x388bf6[_0xac99('0x33')]);_0x39af6a[_0xac99('0x34')]=_[_0xac99('0x35')](_0x39af6a[_0xac99('0x31')],_0x39af6a['query']);_0xfbc17['attributes']=_[_0xac99('0x35')](_0x39af6a[_0xac99('0x31')],qs[_0xac99('0x36')](_0x388bf6[_0xac99('0x33')][_0xac99('0x36')]));_0xfbc17[_0xac99('0x37')]=_0xfbc17[_0xac99('0x37')]['length']?_0xfbc17['attributes']:_0x39af6a[_0xac99('0x31')];if(!_0x388bf6[_0xac99('0x33')][_0xac99('0x38')]('nolimit')){_0xfbc17['limit']=qs['limit'](_0x388bf6[_0xac99('0x33')][_0xac99('0x20')]);_0xfbc17[_0xac99('0x1e')]=qs[_0xac99('0x1e')](_0x388bf6[_0xac99('0x33')][_0xac99('0x1e')]);}_0xfbc17[_0xac99('0x39')]=qs[_0xac99('0x3a')](_0x388bf6['query'][_0xac99('0x3a')]);_0xfbc17[_0xac99('0x3b')]=qs['filters'](_[_0xac99('0x3c')](_0x388bf6['query'],_0x39af6a[_0xac99('0x34')]),_0x5be3ba);if(_0x388bf6[_0xac99('0x33')]['filter']){_0xfbc17[_0xac99('0x3b')]=_['merge'](_0xfbc17[_0xac99('0x3b')],{'$or':_[_0xac99('0x3d')](_0x5be3ba,function(_0x29f28f){if(_0x29f28f[_0xac99('0x2f')]!==_0xac99('0x3e')){var _0x45f5d1={};_0x45f5d1[_0x29f28f[_0xac99('0x2a')]]={'$like':'%'+_0x388bf6[_0xac99('0x33')]['filter']+'%'};return _0x45f5d1;}})});}_0xfbc17=_[_0xac99('0x3f')]({},_0xfbc17,_0x388bf6[_0xac99('0x40')]);var _0x4041f3={'where':_0xfbc17['where']};return db[_0xac99('0x2c')][_0xac99('0x21')](_0x4041f3)[_0xac99('0x26')](function(_0x2414ce){_0x7b367d[_0xac99('0x21')]=_0x2414ce;if(_0x388bf6[_0xac99('0x33')][_0xac99('0x41')]){_0xfbc17[_0xac99('0x42')]=[{'all':!![]}];}return db[_0xac99('0x2c')]['findAll'](_0xfbc17);})[_0xac99('0x26')](function(_0x2dba94){_0x7b367d[_0xac99('0x43')]=_0x2dba94;return _0x7b367d;})[_0xac99('0x26')](respondWithFilteredResult(_0x24d29a,_0xfbc17))['catch'](handleError(_0x24d29a,null));};exports[_0xac99('0x44')]=function(_0xc88a1,_0xb53c96){var _0x292c97={'raw':!![],'where':{'id':_0xc88a1[_0xac99('0x45')]['id']}},_0x4ba86a={};_0x4ba86a['model']=_[_0xac99('0x32')](db[_0xac99('0x2c')][_0xac99('0x2d')]);_0x4ba86a['query']=_[_0xac99('0x32')](_0xc88a1['query']);_0x4ba86a['filters']=_[_0xac99('0x35')](_0x4ba86a[_0xac99('0x31')],_0x4ba86a[_0xac99('0x33')]);_0x292c97[_0xac99('0x37')]=_[_0xac99('0x35')](_0x4ba86a[_0xac99('0x31')],qs[_0xac99('0x36')](_0xc88a1['query'][_0xac99('0x36')]));_0x292c97[_0xac99('0x37')]=_0x292c97[_0xac99('0x37')]['length']?_0x292c97[_0xac99('0x37')]:_0x4ba86a[_0xac99('0x31')];if(_0xc88a1[_0xac99('0x33')][_0xac99('0x41')]){_0x292c97[_0xac99('0x42')]=[{'all':!![]}];}_0x292c97=_[_0xac99('0x3f')]({},_0x292c97,_0xc88a1[_0xac99('0x40')]);return db['SmsApplication']['find'](_0x292c97)['then'](handleEntityNotFound(_0xb53c96,null))[_0xac99('0x26')](respondWithResult(_0xb53c96,null))['catch'](handleError(_0xb53c96,null));};exports[_0xac99('0x46')]=function(_0x1aa5ca,_0x3108d7){return db[_0xac99('0x2c')]['create'](_0x1aa5ca[_0xac99('0x47')],{})[_0xac99('0x26')](respondWithResult(_0x3108d7,0xc9))[_0xac99('0x48')](handleError(_0x3108d7,null));};exports[_0xac99('0x25')]=function(_0x589670,_0xd555e){if(_0x589670[_0xac99('0x47')]['id']){delete _0x589670['body']['id'];}return db[_0xac99('0x2c')][_0xac99('0x49')]({'where':{'id':_0x589670[_0xac99('0x45')]['id']}})[_0xac99('0x26')](handleEntityNotFound(_0xd555e,null))[_0xac99('0x26')](saveUpdates(_0x589670[_0xac99('0x47')],null))[_0xac99('0x26')](respondWithResult(_0xd555e,null))[_0xac99('0x48')](handleError(_0xd555e,null));};exports[_0xac99('0x27')]=function(_0x25e27c,_0x15e317){return db[_0xac99('0x2c')][_0xac99('0x49')]({'where':{'id':_0x25e27c[_0xac99('0x45')]['id']}})[_0xac99('0x26')](handleEntityNotFound(_0x15e317,null))[_0xac99('0x26')](removeEntity(_0x15e317,null))[_0xac99('0x48')](handleError(_0x15e317,null));};
\ No newline at end of file
+var _0xb0ff=['create','body','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy','error','stack','name','send','index','rawAttributes','type','key','model','map','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','VIRTUAL','filter','merge','options','includeAll','include','SmsApplication','findAll','rows','catch','show','params','keys','find'];(function(_0x137810,_0x4753f9){var _0x265f0a=function(_0x41aea5){while(--_0x41aea5){_0x137810['push'](_0x137810['shift']());}};_0x265f0a(++_0x4753f9);}(_0xb0ff,0x188));var _0xfb0f=function(_0x8393dd,_0x4232a4){_0x8393dd=_0x8393dd-0x0;var _0x5ec0cd=_0xb0ff[_0x8393dd];return _0x5ec0cd;};'use strict';var emlformat=require(_0xfb0f('0x0'));var rimraf=require(_0xfb0f('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xfb0f('0x2'));var rp=require(_0xfb0f('0x3'));var moment=require(_0xfb0f('0x4'));var BPromise=require(_0xfb0f('0x5'));var Mustache=require(_0xfb0f('0x6'));var util=require(_0xfb0f('0x7'));var path=require('path');var sox=require(_0xfb0f('0x8'));var csv=require(_0xfb0f('0x9'));var ejs=require(_0xfb0f('0xa'));var fs=require('fs');var fs_extra=require(_0xfb0f('0xb'));var _=require('lodash');var squel=require(_0xfb0f('0xc'));var crypto=require(_0xfb0f('0xd'));var jsforce=require(_0xfb0f('0xe'));var deskjs=require(_0xfb0f('0xf'));var toCsv=require(_0xfb0f('0x9'));var querystring=require(_0xfb0f('0x10'));var Papa=require('papaparse');var Redis=require(_0xfb0f('0x11'));var authService=require(_0xfb0f('0x12'));var qs=require(_0xfb0f('0x13'));var as=require(_0xfb0f('0x14'));var hardwareService=require(_0xfb0f('0x15'));var logger=require(_0xfb0f('0x16'))(_0xfb0f('0x17'));var utils=require(_0xfb0f('0x18'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1acdd7,_0x296748){_0x296748=_0x296748||0xcc;return function(_0x346728){if(_0x346728){return _0x1acdd7[_0xfb0f('0x19')](_0x296748);}return _0x1acdd7[_0xfb0f('0x1a')](_0x296748)[_0xfb0f('0x1b')]();};}function respondWithResult(_0x42365d,_0x1d8cc4){_0x1d8cc4=_0x1d8cc4||0xc8;return function(_0x32fa4e){if(_0x32fa4e){return _0x42365d[_0xfb0f('0x1a')](_0x1d8cc4)[_0xfb0f('0x1c')](_0x32fa4e);}};}function respondWithFilteredResult(_0x353cc2,_0x2e52f5){return function(_0x1cbc2a){if(_0x1cbc2a){var _0x2a2509=typeof _0x2e52f5[_0xfb0f('0x1d')]===_0xfb0f('0x1e')&&typeof _0x2e52f5[_0xfb0f('0x1f')]==='undefined';var _0x1f76d4=_0x1cbc2a['count'];var _0xffabc=_0x2a2509?0x0:_0x2e52f5[_0xfb0f('0x1d')];var _0x1b3302=_0x2a2509?_0x1cbc2a[_0xfb0f('0x20')]:_0x2e52f5[_0xfb0f('0x1d')]+_0x2e52f5['limit'];var _0x5f1d14;if(_0x1b3302>=_0x1f76d4){_0x1b3302=_0x1f76d4;_0x5f1d14=0xc8;}else{_0x5f1d14=0xce;}_0x353cc2[_0xfb0f('0x1a')](_0x5f1d14);return _0x353cc2[_0xfb0f('0x21')](_0xfb0f('0x22'),_0xffabc+'-'+_0x1b3302+'/'+_0x1f76d4)[_0xfb0f('0x1c')](_0x1cbc2a);}return null;};}function patchUpdates(_0xa44c12){return function(_0x76a9eb){try{jsonpatch[_0xfb0f('0x23')](_0x76a9eb,_0xa44c12,!![]);}catch(_0xb086ad){return BPromise['reject'](_0xb086ad);}return _0x76a9eb[_0xfb0f('0x24')]();};}function saveUpdates(_0x3ecc19,_0x64f129){return function(_0xd890c2){if(_0xd890c2){return _0xd890c2[_0xfb0f('0x25')](_0x3ecc19)[_0xfb0f('0x26')](function(_0x47eceb){return _0x47eceb;});}return null;};}function removeEntity(_0x4a49c7,_0x4e3ba5){return function(_0x3880ee){if(_0x3880ee){return _0x3880ee[_0xfb0f('0x27')]()['then'](function(){_0x4a49c7[_0xfb0f('0x1a')](0xcc)[_0xfb0f('0x1b')]();});}};}function handleEntityNotFound(_0x25992d,_0x7439b0){return function(_0x243928){if(!_0x243928){_0x25992d[_0xfb0f('0x19')](0x194);}return _0x243928;};}function handleError(_0x171fa9,_0x374282){_0x374282=_0x374282||0x1f4;return function(_0x3d8d32){logger[_0xfb0f('0x28')](_0x3d8d32[_0xfb0f('0x29')]);if(_0x3d8d32[_0xfb0f('0x2a')]){delete _0x3d8d32[_0xfb0f('0x2a')];}_0x171fa9['status'](_0x374282)[_0xfb0f('0x2b')](_0x3d8d32);};}exports[_0xfb0f('0x2c')]=function(_0x4d9089,_0x50c16f){var _0xd39a3f={},_0x56ebfd={},_0x27f436={'count':0x0,'rows':[]};var _0x3b4334=_['map'](db['SmsApplication'][_0xfb0f('0x2d')],function(_0x4087c6){return{'name':_0x4087c6['fieldName'],'type':_0x4087c6[_0xfb0f('0x2e')][_0xfb0f('0x2f')]};});_0x56ebfd[_0xfb0f('0x30')]=_[_0xfb0f('0x31')](_0x3b4334,'name');_0x56ebfd[_0xfb0f('0x32')]=_['keys'](_0x4d9089[_0xfb0f('0x32')]);_0x56ebfd[_0xfb0f('0x33')]=_[_0xfb0f('0x34')](_0x56ebfd['model'],_0x56ebfd[_0xfb0f('0x32')]);_0xd39a3f['attributes']=_[_0xfb0f('0x34')](_0x56ebfd[_0xfb0f('0x30')],qs[_0xfb0f('0x35')](_0x4d9089['query'][_0xfb0f('0x35')]));_0xd39a3f['attributes']=_0xd39a3f[_0xfb0f('0x36')][_0xfb0f('0x37')]?_0xd39a3f[_0xfb0f('0x36')]:_0x56ebfd['model'];if(!_0x4d9089[_0xfb0f('0x32')][_0xfb0f('0x38')](_0xfb0f('0x39'))){_0xd39a3f[_0xfb0f('0x1f')]=qs[_0xfb0f('0x1f')](_0x4d9089[_0xfb0f('0x32')][_0xfb0f('0x1f')]);_0xd39a3f[_0xfb0f('0x1d')]=qs[_0xfb0f('0x1d')](_0x4d9089[_0xfb0f('0x32')][_0xfb0f('0x1d')]);}_0xd39a3f[_0xfb0f('0x3a')]=qs['sort'](_0x4d9089['query'][_0xfb0f('0x3b')]);_0xd39a3f[_0xfb0f('0x3c')]=qs[_0xfb0f('0x33')](_[_0xfb0f('0x3d')](_0x4d9089['query'],_0x56ebfd[_0xfb0f('0x33')]),_0x3b4334);if(_0x4d9089[_0xfb0f('0x32')]['filter']){_0xd39a3f[_0xfb0f('0x3c')]=_['merge'](_0xd39a3f[_0xfb0f('0x3c')],{'$or':_['map'](_0x3b4334,function(_0x44c0d9){if(_0x44c0d9[_0xfb0f('0x2e')]!==_0xfb0f('0x3e')){var _0x3839f2={};_0x3839f2[_0x44c0d9[_0xfb0f('0x2a')]]={'$like':'%'+_0x4d9089['query'][_0xfb0f('0x3f')]+'%'};return _0x3839f2;}})});}_0xd39a3f=_[_0xfb0f('0x40')]({},_0xd39a3f,_0x4d9089[_0xfb0f('0x41')]);var _0x54e21b={'where':_0xd39a3f[_0xfb0f('0x3c')]};return db['SmsApplication'][_0xfb0f('0x20')](_0x54e21b)[_0xfb0f('0x26')](function(_0x4d3b34){_0x27f436['count']=_0x4d3b34;if(_0x4d9089[_0xfb0f('0x32')][_0xfb0f('0x42')]){_0xd39a3f[_0xfb0f('0x43')]=[{'all':!![]}];}return db[_0xfb0f('0x44')][_0xfb0f('0x45')](_0xd39a3f);})[_0xfb0f('0x26')](function(_0x1c8373){_0x27f436[_0xfb0f('0x46')]=_0x1c8373;return _0x27f436;})[_0xfb0f('0x26')](respondWithFilteredResult(_0x50c16f,_0xd39a3f))[_0xfb0f('0x47')](handleError(_0x50c16f,null));};exports[_0xfb0f('0x48')]=function(_0x1c61a3,_0x434635){var _0x80da37={'raw':!![],'where':{'id':_0x1c61a3[_0xfb0f('0x49')]['id']}},_0x53ed4d={};_0x53ed4d[_0xfb0f('0x30')]=_['keys'](db[_0xfb0f('0x44')]['rawAttributes']);_0x53ed4d['query']=_[_0xfb0f('0x4a')](_0x1c61a3['query']);_0x53ed4d[_0xfb0f('0x33')]=_[_0xfb0f('0x34')](_0x53ed4d['model'],_0x53ed4d[_0xfb0f('0x32')]);_0x80da37[_0xfb0f('0x36')]=_['intersection'](_0x53ed4d['model'],qs[_0xfb0f('0x35')](_0x1c61a3[_0xfb0f('0x32')][_0xfb0f('0x35')]));_0x80da37[_0xfb0f('0x36')]=_0x80da37[_0xfb0f('0x36')][_0xfb0f('0x37')]?_0x80da37[_0xfb0f('0x36')]:_0x53ed4d[_0xfb0f('0x30')];if(_0x1c61a3[_0xfb0f('0x32')][_0xfb0f('0x42')]){_0x80da37['include']=[{'all':!![]}];}_0x80da37=_[_0xfb0f('0x40')]({},_0x80da37,_0x1c61a3[_0xfb0f('0x41')]);return db[_0xfb0f('0x44')][_0xfb0f('0x4b')](_0x80da37)[_0xfb0f('0x26')](handleEntityNotFound(_0x434635,null))[_0xfb0f('0x26')](respondWithResult(_0x434635,null))['catch'](handleError(_0x434635,null));};exports[_0xfb0f('0x4c')]=function(_0x53d861,_0x4c1986){return db[_0xfb0f('0x44')]['create'](_0x53d861[_0xfb0f('0x4d')],{})[_0xfb0f('0x26')](respondWithResult(_0x4c1986,0xc9))['catch'](handleError(_0x4c1986,null));};exports[_0xfb0f('0x25')]=function(_0x20529d,_0x58b876){if(_0x20529d[_0xfb0f('0x4d')]['id']){delete _0x20529d[_0xfb0f('0x4d')]['id'];}return db[_0xfb0f('0x44')][_0xfb0f('0x4b')]({'where':{'id':_0x20529d[_0xfb0f('0x49')]['id']}})['then'](handleEntityNotFound(_0x58b876,null))['then'](saveUpdates(_0x20529d[_0xfb0f('0x4d')],null))['then'](respondWithResult(_0x58b876,null))[_0xfb0f('0x47')](handleError(_0x58b876,null));};exports['destroy']=function(_0x592b1e,_0x396977){return db[_0xfb0f('0x44')][_0xfb0f('0x4b')]({'where':{'id':_0x592b1e[_0xfb0f('0x49')]['id']}})[_0xfb0f('0x26')](handleEntityNotFound(_0x396977,null))[_0xfb0f('0x26')](removeEntity(_0x396977,null))[_0xfb0f('0x47')](handleError(_0x396977,null));};
\ No newline at end of file
index 69d18d5..90811f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x69b4=['util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./smsApplication.attributes','exports','define','sms_applications','utf8mb4_unicode_ci','lodash'];(function(_0x2aec52,_0x59d962){var _0x3b8835=function(_0x3e2604){while(--_0x3e2604){_0x2aec52['push'](_0x2aec52['shift']());}};_0x3b8835(++_0x59d962);}(_0x69b4,0x133));var _0x469b=function(_0x2b4411,_0x2625ed){_0x2b4411=_0x2b4411-0x0;var _0x8e41ef=_0x69b4[_0x2b4411];return _0x8e41ef;};'use strict';var _=require(_0x469b('0x0'));var util=require(_0x469b('0x1'));var logger=require(_0x469b('0x2'))('api');var moment=require(_0x469b('0x3'));var BPromise=require(_0x469b('0x4'));var rp=require(_0x469b('0x5'));var fs=require('fs');var path=require(_0x469b('0x6'));var rimraf=require(_0x469b('0x7'));var config=require(_0x469b('0x8'));var attributes=require(_0x469b('0x9'));module[_0x469b('0xa')]=function(_0x3efc88,_0x9daec5){return _0x3efc88[_0x469b('0xb')]('SmsApplication',attributes,{'tableName':_0x469b('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x469b('0xd')});};
\ No newline at end of file
+var _0xc281=['lodash','moment','bluebird','../../config/environment','exports','SmsApplication','utf8mb4','utf8mb4_unicode_ci'];(function(_0xd63e3a,_0x1bd6eb){var _0x19c178=function(_0x56be0d){while(--_0x56be0d){_0xd63e3a['push'](_0xd63e3a['shift']());}};_0x19c178(++_0x1bd6eb);}(_0xc281,0x98));var _0x1c28=function(_0x2b948f,_0x398e62){_0x2b948f=_0x2b948f-0x0;var _0x1237bc=_0xc281[_0x2b948f];return _0x1237bc;};'use strict';var _=require(_0x1c28('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0x1c28('0x1'));var BPromise=require(_0x1c28('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x1c28('0x3'));var attributes=require('./smsApplication.attributes');module[_0x1c28('0x4')]=function(_0x2cb09a,_0x5ee5ba){return _0x2cb09a['define'](_0x1c28('0x5'),attributes,{'tableName':'sms_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x1c28('0x6'),'collate':_0x1c28('0x7')});};
\ No newline at end of file
index 48d0d50..fa1a12b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb1ef=['info','SmsApplication,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then'];(function(_0x514d6e,_0x254abe){var _0x11e9df=function(_0x5844cc){while(--_0x5844cc){_0x514d6e['push'](_0x514d6e['shift']());}};_0x11e9df(++_0x254abe);}(_0xb1ef,0x93));var _0xfb1e=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xb1ef[_0x122ef9];return _0x42fba0;};'use strict';var _=require(_0xfb1e('0x0'));var util=require(_0xfb1e('0x1'));var moment=require('moment');var BPromise=require(_0xfb1e('0x2'));var rs=require(_0xfb1e('0x3'));var fs=require('fs');var Redis=require(_0xfb1e('0x4'));var db=require(_0xfb1e('0x5'))['db'];var utils=require(_0xfb1e('0x6'));var logger=require(_0xfb1e('0x7'))(_0xfb1e('0x8'));var config=require(_0xfb1e('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xfb1e('0xa')][_0xfb1e('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1455fa,_0xccf70,_0x502d8e){return new BPromise(function(_0x5eadcc,_0x3c7643){return client[_0xfb1e('0xc')](_0x1455fa,_0x502d8e)[_0xfb1e('0xd')](function(_0x1ac2dd){logger[_0xfb1e('0xe')](_0xfb1e('0xf'),_0xccf70,_0xfb1e('0x10'));logger[_0xfb1e('0x11')]('SmsApplication,\x20%s,\x20%s,\x20%s',_0xccf70,_0xfb1e('0x10'),JSON[_0xfb1e('0x12')](_0x1ac2dd));if(_0x1ac2dd[_0xfb1e('0x13')]){if(_0x1ac2dd[_0xfb1e('0x13')][_0xfb1e('0x14')]===0x1f4){logger[_0xfb1e('0x13')](_0xfb1e('0xf'),_0xccf70,_0x1ac2dd['error'][_0xfb1e('0x15')]);return _0x3c7643(_0x1ac2dd[_0xfb1e('0x13')]['message']);}logger[_0xfb1e('0x13')](_0xfb1e('0xf'),_0xccf70,_0x1ac2dd[_0xfb1e('0x13')][_0xfb1e('0x15')]);return _0x5eadcc(_0x1ac2dd[_0xfb1e('0x13')]['message']);}else{logger[_0xfb1e('0xe')](_0xfb1e('0xf'),_0xccf70,_0xfb1e('0x10'));_0x5eadcc(_0x1ac2dd[_0xfb1e('0x16')][_0xfb1e('0x15')]);}})['catch'](function(_0x2f3d7e){logger[_0xfb1e('0x13')](_0xfb1e('0xf'),_0xccf70,_0x2f3d7e);_0x3c7643(_0x2f3d7e);});});}
\ No newline at end of file
+var _0x8ff9=['../../config/environment','client','http','request','info','SmsApplication,\x20%s,\x20%s','request\x20sent','debug','SmsApplication,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0x8ff9,0x1a6));var _0x98ff=function(_0x343b1e,_0x1ac467){_0x343b1e=_0x343b1e-0x0;var _0x591e29=_0x8ff9[_0x343b1e];return _0x591e29;};'use strict';var _=require(_0x98ff('0x0'));var util=require(_0x98ff('0x1'));var moment=require(_0x98ff('0x2'));var BPromise=require(_0x98ff('0x3'));var rs=require(_0x98ff('0x4'));var fs=require('fs');var Redis=require(_0x98ff('0x5'));var db=require(_0x98ff('0x6'))['db'];var utils=require(_0x98ff('0x7'));var logger=require(_0x98ff('0x8'))(_0x98ff('0x9'));var config=require(_0x98ff('0xa'));var jayson=require('jayson/promise');var client=jayson[_0x98ff('0xb')][_0x98ff('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x13537e,_0x21d840,_0x12d3fe){return new BPromise(function(_0xbe13f3,_0x51fbd8){return client[_0x98ff('0xd')](_0x13537e,_0x12d3fe)['then'](function(_0x4bbf37){logger[_0x98ff('0xe')](_0x98ff('0xf'),_0x21d840,_0x98ff('0x10'));logger[_0x98ff('0x11')](_0x98ff('0x12'),_0x21d840,'request\x20sent',JSON[_0x98ff('0x13')](_0x4bbf37));if(_0x4bbf37['error']){if(_0x4bbf37[_0x98ff('0x14')]['code']===0x1f4){logger['error'](_0x98ff('0xf'),_0x21d840,_0x4bbf37[_0x98ff('0x14')][_0x98ff('0x15')]);return _0x51fbd8(_0x4bbf37['error'][_0x98ff('0x15')]);}logger['error'](_0x98ff('0xf'),_0x21d840,_0x4bbf37[_0x98ff('0x14')][_0x98ff('0x15')]);return _0xbe13f3(_0x4bbf37[_0x98ff('0x14')][_0x98ff('0x15')]);}else{logger[_0x98ff('0xe')]('SmsApplication,\x20%s,\x20%s',_0x21d840,_0x98ff('0x10'));_0xbe13f3(_0x4bbf37[_0x98ff('0x16')][_0x98ff('0x15')]);}})[_0x98ff('0x17')](function(_0x3751b9){logger[_0x98ff('0x14')](_0x98ff('0xf'),_0x21d840,_0x3751b9);_0x51fbd8(_0x3751b9);});});}
\ No newline at end of file
index c3c9671..82f2c6e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4cf8=['/:id','/:id/messages','getMessages','/:id/download','create','post','addMessage','/:id/tags','tracked','sms','smsinteraction:addtags','addTags','put','smsinteraction:update','delete','smsinteraction:destroy','destroy','removeTags','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsInteraction.controller','get','isAuthenticated','describe'];(function(_0xc27196,_0x36c8a2){var _0x32e23e=function(_0x27ef97){while(--_0x27ef97){_0xc27196['push'](_0xc27196['shift']());}};_0x32e23e(++_0x36c8a2);}(_0x4cf8,0x1e1));var _0x84cf=function(_0x5f0089,_0x227e2c){_0x5f0089=_0x5f0089-0x0;var _0x193892=_0x4cf8[_0x5f0089];return _0x193892;};'use strict';var multer=require(_0x84cf('0x0'));var util=require(_0x84cf('0x1'));var path=require(_0x84cf('0x2'));var timeout=require(_0x84cf('0x3'));var express=require(_0x84cf('0x4'));var router=express[_0x84cf('0x5')]();var fs_extra=require(_0x84cf('0x6'));var auth=require(_0x84cf('0x7'));var interaction=require(_0x84cf('0x8'));var config=require(_0x84cf('0x9'));var controller=require(_0x84cf('0xa'));router[_0x84cf('0xb')]('/',auth['isAuthenticated'](),controller['index']);router[_0x84cf('0xb')]('/describe',auth[_0x84cf('0xc')](),controller[_0x84cf('0xd')]);router['get'](_0x84cf('0xe'),auth[_0x84cf('0xc')](),controller['show']);router[_0x84cf('0xb')](_0x84cf('0xf'),auth[_0x84cf('0xc')](),controller[_0x84cf('0x10')]);router['get'](_0x84cf('0x11'),auth[_0x84cf('0xc')](),controller['download']);router['post']('/',auth[_0x84cf('0xc')](),controller[_0x84cf('0x12')]);router[_0x84cf('0x13')](_0x84cf('0xf'),auth[_0x84cf('0xc')](),controller[_0x84cf('0x14')]);router[_0x84cf('0x13')](_0x84cf('0x15'),auth[_0x84cf('0xc')](),interaction[_0x84cf('0x16')](_0x84cf('0x17'),_0x84cf('0x18')),controller[_0x84cf('0x19')]);router[_0x84cf('0x1a')](_0x84cf('0xe'),auth[_0x84cf('0xc')](),interaction[_0x84cf('0x16')](_0x84cf('0x17'),_0x84cf('0x1b')),controller['update']);router[_0x84cf('0x1c')](_0x84cf('0xe'),auth[_0x84cf('0xc')](),interaction[_0x84cf('0x16')](_0x84cf('0x17'),_0x84cf('0x1d')),controller[_0x84cf('0x1e')]);router['delete']('/:id/tags',auth[_0x84cf('0xc')](),controller[_0x84cf('0x1f')]);module[_0x84cf('0x20')]=router;
\ No newline at end of file
+var _0x6cb4=['./smsInteraction.controller','isAuthenticated','get','/describe','describe','/:id','show','getMessages','/:id/download','create','post','/:id/messages','/:id/tags','tracked','sms','smsinteraction:addtags','addTags','put','smsinteraction:update','delete','smsinteraction:destroy','destroy','removeTags','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x5999b2,_0x2ababd){var _0x544311=function(_0x4a6e20){while(--_0x4a6e20){_0x5999b2['push'](_0x5999b2['shift']());}};_0x544311(++_0x2ababd);}(_0x6cb4,0xff));var _0x46cb=function(_0x57b7e7,_0x503a07){_0x57b7e7=_0x57b7e7-0x0;var _0xf3a785=_0x6cb4[_0x57b7e7];return _0xf3a785;};'use strict';var multer=require(_0x46cb('0x0'));var util=require(_0x46cb('0x1'));var path=require(_0x46cb('0x2'));var timeout=require(_0x46cb('0x3'));var express=require(_0x46cb('0x4'));var router=express[_0x46cb('0x5')]();var fs_extra=require(_0x46cb('0x6'));var auth=require(_0x46cb('0x7'));var interaction=require(_0x46cb('0x8'));var config=require('../../config/environment');var controller=require(_0x46cb('0x9'));router['get']('/',auth[_0x46cb('0xa')](),controller['index']);router[_0x46cb('0xb')](_0x46cb('0xc'),auth[_0x46cb('0xa')](),controller[_0x46cb('0xd')]);router[_0x46cb('0xb')](_0x46cb('0xe'),auth['isAuthenticated'](),controller[_0x46cb('0xf')]);router[_0x46cb('0xb')]('/:id/messages',auth[_0x46cb('0xa')](),controller[_0x46cb('0x10')]);router['get'](_0x46cb('0x11'),auth[_0x46cb('0xa')](),controller['download']);router['post']('/',auth['isAuthenticated'](),controller[_0x46cb('0x12')]);router[_0x46cb('0x13')](_0x46cb('0x14'),auth[_0x46cb('0xa')](),controller['addMessage']);router[_0x46cb('0x13')](_0x46cb('0x15'),auth[_0x46cb('0xa')](),interaction[_0x46cb('0x16')](_0x46cb('0x17'),_0x46cb('0x18')),controller[_0x46cb('0x19')]);router[_0x46cb('0x1a')](_0x46cb('0xe'),auth[_0x46cb('0xa')](),interaction[_0x46cb('0x16')]('sms',_0x46cb('0x1b')),controller['update']);router[_0x46cb('0x1c')]('/:id',auth['isAuthenticated'](),interaction['tracked'](_0x46cb('0x17'),_0x46cb('0x1d')),controller[_0x46cb('0x1e')]);router[_0x46cb('0x1c')](_0x46cb('0x15'),auth[_0x46cb('0xa')](),controller[_0x46cb('0x1f')]);module[_0x46cb('0x20')]=router;
\ No newline at end of file
index bb05ea6..653f926 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb0df=['moment','exports','BOOLEAN','DATE','STRING','ENUM','out'];(function(_0x3becce,_0x3d4ce4){var _0xab18fd=function(_0x401fab){while(--_0x401fab){_0x3becce['push'](_0x3becce['shift']());}};_0xab18fd(++_0x3d4ce4);}(_0xb0df,0x85));var _0xfb0d=function(_0x460fd7,_0x2012db){_0x460fd7=_0x460fd7-0x0;var _0x44d1c2=_0xb0df[_0x460fd7];return _0x44d1c2;};'use strict';var Sequelize=require('sequelize');var moment=require(_0xfb0d('0x0'));module[_0xfb0d('0x1')]={'closed':{'type':Sequelize[_0xfb0d('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xfb0d('0x3')]},'disposition':{'type':Sequelize[_0xfb0d('0x4')]},'secondDisposition':{'type':Sequelize[_0xfb0d('0x4')]},'thirdDisposition':{'type':Sequelize[_0xfb0d('0x4')]},'note':{'type':Sequelize[_0xfb0d('0x4')]},'phone':{'type':Sequelize[_0xfb0d('0x4')]},'read1stAt':{'type':Sequelize['DATE']},'firstMsgDirection':{'type':Sequelize[_0xfb0d('0x5')]('in',_0xfb0d('0x6')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0xfb0d('0x6')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0xfb0d('0x2')],'defaultValue':![]}};
\ No newline at end of file
+var _0x2b83=['DATE','STRING','out','ENUM','BOOLEAN','moment','exports'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x2b83,0x1d3));var _0x32b8=function(_0x39db87,_0x4d3e84){_0x39db87=_0x39db87-0x0;var _0x2940b7=_0x2b83[_0x39db87];return _0x2940b7;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x32b8('0x0'));module[_0x32b8('0x1')]={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x32b8('0x2')]},'disposition':{'type':Sequelize[_0x32b8('0x3')]},'secondDisposition':{'type':Sequelize[_0x32b8('0x3')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize['STRING']},'phone':{'type':Sequelize[_0x32b8('0x3')]},'read1stAt':{'type':Sequelize[_0x32b8('0x2')]},'firstMsgDirection':{'type':Sequelize['ENUM']('in',_0x32b8('0x4')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize[_0x32b8('0x5')]('in',_0x32b8('0x4')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x32b8('0x6')],'defaultValue':![]}};
\ No newline at end of file
index 0f2f403..3aac78b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x269b=['redis','defaults','socket.io-emitter','./smsInteraction.socket','sendStatus','status','end','json','offset','undefined','count','limit','apply','reject','save','update','then','destroy','error','stack','name','send','Users','fullname','Tags','forEach','push','TagIds','catch','map','SmsInteraction','fieldName','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','field','from','u.id','u.fullname','ui.SmsInteractionId','user_has_sms_interactions','users','u.id\x20=\x20ui.UserId','sms_interactions','left_join','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','sms_accounts','a.id\x20=\x20i.SmsAccountId','sms_messages','me.SmsInteractionId\x20=\x20i.id','sms_interaction_has_tags','it.SmsInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','parseSearch','sqlOperator','conditions','find','unreadMessages','having','`\x20=\x200','`\x20>\x200','Contact','operator','value','split','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','type','start','Tag','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','buildExpression','text','keys','some','compact','isEmpty','SmsAccountId','i.SmsAccountId\x20IN\x20?','concat','createdAt','$gte','parse','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20>\x200','tag','isArray','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','filter','replace','i.id\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','Sequelize','QueryTypes','SELECT','clone','i.id','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','order','contactName','resolve','i.SmsAccountId\x20IS\x20NOT\x20NULL','user','role','agent','getSmsAccounts','i.SmsAccountId\x20IS\x20NULL','sequelize','toString','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','c.lastName','Contact.lastName','c.email','Contact.email','Contact.phone','c.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.SmsInteractionId\x20IN\x20?','groupBy','SmsInteractionId','all','rows','params','options','create','body','describe','SmsMessage','addMessage','ids','getMessages','findOne','rawAttributes','format','YYYY-MM-DD\x20HH:mm:ss','includeAll','include','addTags','omit','spread','findAll','emit','smsInteractionTags:save','removeTags','download','unix','join','root','files','tmp','server','attachments','transcript-%d-%s.zip','CmContact','firstName','lastName','Messages','direction','SmsAccount','Account','Owner','get','mkdirSync','N.A.','closed','disposition','out','System','renderFile','views','downloadInteraction.ejs','transcript-','Sms','log','err','unlinkSync','eml-format','zip-dir','request-promise','moment','bluebird','mustache','path','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb'];(function(_0x41e922,_0x4c128c){var _0x2c69de=function(_0x148a44){while(--_0x148a44){_0x41e922['push'](_0x41e922['shift']());}};_0x2c69de(++_0x4c128c);}(_0x269b,0x1be));var _0xb269=function(_0x221abd,_0x621d76){_0x221abd=_0x221abd-0x0;var _0x47e399=_0x269b[_0x221abd];return _0x47e399;};'use strict';var emlformat=require(_0xb269('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xb269('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xb269('0x2'));var moment=require(_0xb269('0x3'));var BPromise=require(_0xb269('0x4'));var Mustache=require(_0xb269('0x5'));var util=require('util');var path=require(_0xb269('0x6'));var sox=require('sox');var csv=require(_0xb269('0x7'));var ejs=require(_0xb269('0x8'));var fs=require('fs');var fs_extra=require(_0xb269('0x9'));var _=require(_0xb269('0xa'));var squel=require(_0xb269('0xb'));var crypto=require(_0xb269('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xb269('0xd'));var toCsv=require(_0xb269('0x7'));var querystring=require('querystring');var Papa=require(_0xb269('0xe'));var Redis=require(_0xb269('0xf'));var authService=require(_0xb269('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0xb269('0x11'));var pdf=require(_0xb269('0x12'));var hardwareService=require(_0xb269('0x13'));var logger=require(_0xb269('0x14'))(_0xb269('0x15'));var utils=require(_0xb269('0x16'));var config=require(_0xb269('0x17'));var licenseUtil=require(_0xb269('0x18'));var db=require(_0xb269('0x19'))['db'];config[_0xb269('0x1a')]=_[_0xb269('0x1b')](config[_0xb269('0x1a')],{'host':'localhost','port':0x18eb});var socket=require(_0xb269('0x1c'))(new Redis(config[_0xb269('0x1a')]));require(_0xb269('0x1d'))['register'](socket);function respondWithStatusCode(_0x6805df,_0x598d05){_0x598d05=_0x598d05||0xcc;return function(_0x11e19){if(_0x11e19){return _0x6805df[_0xb269('0x1e')](_0x598d05);}return _0x6805df[_0xb269('0x1f')](_0x598d05)[_0xb269('0x20')]();};}function respondWithResult(_0x4ca81b,_0xafcf54){_0xafcf54=_0xafcf54||0xc8;return function(_0x33a8c6){if(_0x33a8c6){return _0x4ca81b[_0xb269('0x1f')](_0xafcf54)[_0xb269('0x21')](_0x33a8c6);}};}function respondWithFilteredResult(_0x379df4,_0x3486e0){return function(_0x3b64b8){if(_0x3b64b8){var _0x248f2c=typeof _0x3486e0[_0xb269('0x22')]===_0xb269('0x23')&&typeof _0x3486e0['limit']===_0xb269('0x23');var _0x2f6e62=_0x3b64b8[_0xb269('0x24')];var _0x3a66e6=_0x248f2c?0x0:_0x3486e0[_0xb269('0x22')];var _0x377889=_0x248f2c?_0x3b64b8[_0xb269('0x24')]:_0x3486e0[_0xb269('0x22')]+_0x3486e0[_0xb269('0x25')];var _0x5cfc7f;if(_0x377889>=_0x2f6e62){_0x377889=_0x2f6e62;_0x5cfc7f=0xc8;}else{_0x5cfc7f=0xce;}_0x379df4['status'](_0x5cfc7f);return _0x379df4['set']('Content-Range',_0x3a66e6+'-'+_0x377889+'/'+_0x2f6e62)[_0xb269('0x21')](_0x3b64b8);}return null;};}function patchUpdates(_0x45c8a1){return function(_0x8ab8ac){try{jsonpatch[_0xb269('0x26')](_0x8ab8ac,_0x45c8a1,!![]);}catch(_0x1d1d36){return BPromise[_0xb269('0x27')](_0x1d1d36);}return _0x8ab8ac[_0xb269('0x28')]();};}function saveUpdates(_0x435973,_0x47cf9e){return function(_0x17663a){if(_0x17663a){return _0x17663a[_0xb269('0x29')](_0x435973)[_0xb269('0x2a')](function(_0x2e553e){return _0x2e553e;});}return null;};}function removeEntity(_0x227152,_0x4a8a5e){return function(_0x1351d7){if(_0x1351d7){return _0x1351d7[_0xb269('0x2b')]()[_0xb269('0x2a')](function(){_0x227152[_0xb269('0x1f')](0xcc)[_0xb269('0x20')]();});}};}function handleEntityNotFound(_0x2ad98f,_0x1c2956){return function(_0xa1e619){if(!_0xa1e619){_0x2ad98f[_0xb269('0x1e')](0x194);}return _0xa1e619;};}function handleError(_0x1e0cda,_0x541745){_0x541745=_0x541745||0x1f4;return function(_0x57cc5e){logger[_0xb269('0x2c')](_0x57cc5e[_0xb269('0x2d')]);if(_0x57cc5e[_0xb269('0x2e')]){delete _0x57cc5e[_0xb269('0x2e')];}_0x1e0cda[_0xb269('0x1f')](_0x541745)[_0xb269('0x2f')](_0x57cc5e);};}function getInteractionUsers(_0x1493ae,_0x4d8600){return new BPromise(function(_0x45caca,_0x556a5){try{if(_0x4d8600[_0x1493ae['id']]){_0x1493ae[_0xb269('0x30')]=_['map'](_0x4d8600[_0x1493ae['id']],function(_0x15ac9c){return{'id':_0x15ac9c['id'],'fullname':_0x15ac9c[_0xb269('0x31')]};});}}catch(_0x44f799){_0x556a5(_0x44f799);}_0x45caca(_0x1493ae);});}function getInteractionTags(_0x54da59,_0x2cb5a0){return new BPromise(function(_0x2e4a3e,_0x3c9fe6){try{if(_0x54da59['TagIds']){_0x54da59[_0xb269('0x32')]=[];_0x54da59['TagIds']['split'](',')[_0xb269('0x33')](function(_0x207e0f){_0x54da59[_0xb269('0x32')][_0xb269('0x34')](_0x2cb5a0[_0x207e0f]);});}delete _0x54da59[_0xb269('0x35')];}catch(_0x37c513){_0x3c9fe6(_0x37c513);}_0x2e4a3e(_0x54da59);});}function updateSmsInteraction(_0x2c931a,_0x44ec73,_0xf50ea0){return new BPromise(function(_0x31a394,_0x4fdb1b){return getInteractionUsers(_0x2c931a,_0xf50ea0)['then'](function(_0x1ebc1b){return getInteractionTags(_0x1ebc1b,_0x44ec73);})['then'](function(_0x446cb7){_0x31a394(_0x446cb7);})[_0xb269('0x36')](function(_0x10ee53){_0x4fdb1b(_0x10ee53);});});}exports['index']=function(_0x5c3e56,_0x16d55d){var _0x343fc6={},_0x4b3564={},_0x75a797={'count':0x0,'rows':[]};var _0xc902c9=_[_0xb269('0x37')](db[_0xb269('0x38')]['rawAttributes'],function(_0x16ffa8){return{'name':_0x16ffa8[_0xb269('0x39')],'type':_0x16ffa8['type']['key']};});_0x4b3564['model']=_[_0xb269('0x37')](_0xc902c9,'name');_0x4b3564[_0xb269('0x3a')]=_['keys'](_0x5c3e56[_0xb269('0x3a')]);_0x4b3564[_0xb269('0x3b')]=_[_0xb269('0x3c')](_0x4b3564[_0xb269('0x3d')],_0x4b3564[_0xb269('0x3a')]);_0x343fc6[_0xb269('0x3e')]=_[_0xb269('0x3c')](_0x4b3564[_0xb269('0x3d')],qs['fields'](_0x5c3e56['query'][_0xb269('0x3f')]));_0x343fc6[_0xb269('0x3e')]=_0x343fc6[_0xb269('0x3e')][_0xb269('0x40')]?_0x343fc6['attributes']:_0x4b3564['model'];if(!_0x5c3e56[_0xb269('0x3a')][_0xb269('0x41')](_0xb269('0x42'))){_0x343fc6[_0xb269('0x25')]=qs['limit'](_0x5c3e56['query'][_0xb269('0x25')]);_0x343fc6[_0xb269('0x22')]=qs[_0xb269('0x22')](_0x5c3e56[_0xb269('0x3a')]['offset']);}_0x343fc6['order']=qs[_0xb269('0x43')](_0x5c3e56[_0xb269('0x3a')][_0xb269('0x43')]);_0x343fc6[_0xb269('0x44')]=qs[_0xb269('0x3b')](_[_0xb269('0x45')](_0x5c3e56[_0xb269('0x3a')],_0x4b3564['filters']),_0xc902c9);var _0x45b2b6=[];var _0x67d995=squel['select']()[_0xb269('0x46')]('id')[_0xb269('0x46')](_0xb269('0x2e'))[_0xb269('0x46')]('color')[_0xb269('0x47')]('tools_tags');var _0x2c0167=squel['select']()[_0xb269('0x46')](_0xb269('0x48'))[_0xb269('0x46')](_0xb269('0x49'))[_0xb269('0x46')](_0xb269('0x4a'))[_0xb269('0x47')](_0xb269('0x4b'),'ui')['left_join'](_0xb269('0x4c'),'u',_0xb269('0x4d'));var _0x266c2b=squel['select']()[_0xb269('0x47')](_0xb269('0x4e'),'i')[_0xb269('0x4f')](_0xb269('0x50'),'c',_0xb269('0x51'))[_0xb269('0x4f')]('users','o',_0xb269('0x52'))[_0xb269('0x4f')](_0xb269('0x53'),'a',_0xb269('0x54'))[_0xb269('0x4f')](_0xb269('0x55'),'me',_0xb269('0x56'))['left_join'](_0xb269('0x57'),'it',_0xb269('0x58'))[_0xb269('0x4f')]('tools_tags','t',_0xb269('0x59'));var _0x545c48=squel[_0xb269('0x5a')]();var _0x2e41d0=[];var _0x596a49=squel[_0xb269('0x5a')]();var _0x4f0692;if(_0x5c3e56[_0xb269('0x3a')][_0xb269('0x5b')]){_0x4f0692=as[_0xb269('0x5c')](_0x5c3e56[_0xb269('0x3a')][_0xb269('0x5b')]);var _0x52947e=_0x4f0692[_0xb269('0x5d')];for(var _0x5ce19d=0x0;_0x5ce19d<_0x4f0692[_0xb269('0x5e')][_0xb269('0x40')];_0x5ce19d++){var _0x26fb0b=_0x4f0692[_0xb269('0x5e')][_0x5ce19d];var _0x148660='i';var _0x3c5d4a=_[_0xb269('0x5f')](_0xc902c9,[_0xb269('0x2e'),_0x26fb0b[_0xb269('0x46')]]);if(!_0x3c5d4a){switch(_0x26fb0b[_0xb269('0x46')]){case _0xb269('0x60'):if(_0x26fb0b['value']==0x1){_0x266c2b[_0xb269('0x61')]('`'+_0x26fb0b[_0xb269('0x46')]+_0xb269('0x62'));}else{_0x266c2b['having']('`'+_0x26fb0b[_0xb269('0x46')]+_0xb269('0x63'));}break;case _0xb269('0x64'):if(_0x26fb0b[_0xb269('0x65')]==='$substring'){if(_0x26fb0b[_0xb269('0x66')][_0xb269('0x67')]('\x20')[_0xb269('0x40')]>0x1){_0x545c48[_0x52947e](_0xb269('0x68'),qs['getFullTextValue'](_0x26fb0b[_0xb269('0x66')]),null);}else{var _0x2fd676='%'+_0x26fb0b[_0xb269('0x66')]+'%';_0x545c48[_0x52947e](_0xb269('0x69'),_0x2fd676,_0x2fd676,_0x2fd676);}}else{_0x3c5d4a=_['find'](_0xc902c9,[_0xb269('0x2e'),_0xb269('0x6a')]);_0x26fb0b[_0xb269('0x46')]=_0xb269('0x6a');_0x842a82=as['buildExpression'](_0x148660,_0x3c5d4a[_0xb269('0x6b')],_0x26fb0b);_0x545c48[_0x52947e](_0x842a82['text'],_0x842a82[_0xb269('0x66')][_0xb269('0x6c')],_0x842a82['value']['end']);}break;case _0xb269('0x6d'):var _0x513814=_0x26fb0b['value'][_0xb269('0x67')](',')[_0xb269('0x37')](function(_0x4cb57c){return Number(_0x4cb57c);});_0x513814['forEach'](function(_0x130e8f){_0x596a49['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x130e8f+',%');});_0x2e41d0=_['union'](_0x2e41d0,_0x513814);break;case _0xb269('0x6e'):if(_0x26fb0b['operator']==='$substring'){_0x545c48[_0x52947e](_0xb269('0x6f'),'%'+_0x26fb0b['value']+'%',null);}else{_0x3c5d4a=_['find'](_0xc902c9,['name',_0xb269('0x70')]);_0x26fb0b[_0xb269('0x46')]=_0xb269('0x70');_0x842a82=as[_0xb269('0x71')](_0x148660,_0x3c5d4a['type'],_0x26fb0b);_0x545c48[_0x52947e](_0x842a82['text'],_0x842a82[_0xb269('0x66')][_0xb269('0x6c')],_0x842a82[_0xb269('0x66')][_0xb269('0x20')]);}break;case'body':_0x842a82=as[_0xb269('0x71')]('me',null,_0x26fb0b);_0x545c48[_0x52947e](_0x842a82[_0xb269('0x72')],_0x842a82['value'][_0xb269('0x6c')],_0x842a82[_0xb269('0x66')]['end']);break;}}else{var _0x842a82=as['buildExpression'](_0x148660,_0x3c5d4a[_0xb269('0x6b')],_0x26fb0b);_0x545c48[_0x52947e](_0x842a82[_0xb269('0x72')],_0x842a82[_0xb269('0x66')][_0xb269('0x6c')],_0x842a82[_0xb269('0x66')]['end']);}}}else{var _0x1d557e=_(_0x5c3e56[_0xb269('0x3a')])[_0xb269('0x73')]()[_0xb269('0x37')](function(_0x52f490){return _[_0xb269('0x74')](_0xc902c9,[_0xb269('0x2e'),_0x52f490])?_0x52f490:undefined;})[_0xb269('0x75')]()[_0xb269('0x66')]();if(!_[_0xb269('0x76')](_0x1d557e)){_0x1d557e[_0xb269('0x33')](function(_0x3c945e){if(_0x3c945e===_0xb269('0x77')){_0x266c2b[_0xb269('0x44')](_0xb269('0x78'),[][_0xb269('0x79')](_0x5c3e56['query'][_0x3c945e]));}else if(_0x3c945e===_0xb269('0x7a')){var _0x524a13=JSON['parse'](_0x5c3e56[_0xb269('0x3a')][_0x3c945e])[_0xb269('0x7b')];var _0x28f2b9=JSON[_0xb269('0x7c')](_0x5c3e56[_0xb269('0x3a')][_0x3c945e])[_0xb269('0x7d')];_0x266c2b[_0xb269('0x44')](_0xb269('0x7e'),_0x524a13,_0x28f2b9);}else{if(_0x5c3e56[_0xb269('0x3a')][_0x3c945e]===_0xb269('0x7f')){_0x266c2b[_0xb269('0x44')]('i.'+_0x3c945e+_0xb269('0x80'));}else{_0x266c2b[_0xb269('0x44')]('i.'+_0x3c945e+_0xb269('0x81'),_0x5c3e56[_0xb269('0x3a')][_0x3c945e]);}}});}if(_0x5c3e56[_0xb269('0x3a')][_0xb269('0x82')]){if(_0x5c3e56['query']['read']==0x1){_0x266c2b['having']('`unreadMessages`\x20=\x200');}else{_0x266c2b[_0xb269('0x61')](_0xb269('0x83'));}}if(_0x5c3e56['query'][_0xb269('0x84')]){_0x2e41d0=_[_0xb269('0x85')](_0x5c3e56[_0xb269('0x3a')]['tag'])?_0x5c3e56[_0xb269('0x3a')][_0xb269('0x84')]:new Array(_0x5c3e56[_0xb269('0x3a')]['tag']);_0x2e41d0[_0xb269('0x33')](function(_0x1a84b5){_0x596a49['or'](_0xb269('0x86'),'%,'+_0x1a84b5+',%');});}if(_0x5c3e56[_0xb269('0x3a')][_0xb269('0x87')]){var _0x30db37=_0x5c3e56[_0xb269('0x3a')]['filter']['replace']('\x5c','\x5c\x5c')[_0xb269('0x88')](/'/g,'\x27\x27');if(qs['isNumeric'](_0x30db37)){_0x545c48['or'](_0xb269('0x89'),_0x30db37+'%')['or']('i.phone\x20LIKE\x20?',_0x30db37+'%');}else{_0x545c48['or'](_0xb269('0x8a'),qs[_0xb269('0x8b')](_0x30db37))['or']('CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?',_0x30db37+'%');}}}_0x266c2b[_0xb269('0x44')](_0x545c48);_0x266c2b['group']('i.id');var _0x21d92b={'type':db[_0xb269('0x8c')][_0xb269('0x8d')][_0xb269('0x8e')],'raw':!![]};var _0x451567=_0x266c2b[_0xb269('0x8f')]();_0x451567[_0xb269('0x46')](_0xb269('0x90'));_0x451567[_0xb269('0x46')](_0xb269('0x91'),'unreadMessages');if(_0x343fc6[_0xb269('0x92')]){_0x343fc6[_0xb269('0x92')]['forEach'](function(_0x29ce39){var _0x470280=_0x29ce39[0x0]===_0xb269('0x93')?_0x29ce39[0x0]:'i.'+_0x29ce39[0x0];_0x266c2b[_0xb269('0x92')](_0x470280,_0x29ce39[0x1]==='DESC'?![]:!![]);});}if(!_[_0xb269('0x76')](_0x2e41d0)){_0x266c2b[_0xb269('0x61')](_0x596a49);_0x451567[_0xb269('0x44')]('t.id\x20IN\x20?',_0x2e41d0);}BPromise[_0xb269('0x94')]()[_0xb269('0x2a')](function(){if(!_0x4f0692){if(_0x5c3e56[_0xb269('0x3a')][_0xb269('0x77')])return;_0x451567[_0xb269('0x44')](_0xb269('0x95'));_0x266c2b[_0xb269('0x44')](_0xb269('0x95'));return;}if(_0x5c3e56[_0xb269('0x96')][_0xb269('0x97')]!==_0xb269('0x98'))return;return _0x5c3e56[_0xb269('0x96')][_0xb269('0x99')]({'attributes':['id'],'raw':!![]})[_0xb269('0x2a')](function(_0x6f970){if(_[_0xb269('0x76')](_0x6f970)){_0x451567['where'](_0xb269('0x9a'));_0x266c2b[_0xb269('0x44')](_0xb269('0x9a'));}else{_0x451567[_0xb269('0x44')]('i.SmsAccountId\x20IN\x20?',_[_0xb269('0x37')](_0x6f970,'id'));_0x266c2b[_0xb269('0x44')](_0xb269('0x78'),_[_0xb269('0x37')](_0x6f970,'id'));}});})['then'](function(){if(_0x5c3e56[_0xb269('0x96')][_0xb269('0x97')]===_0xb269('0x98')&&!_0x4f0692&&!_0x5c3e56[_0xb269('0x3a')][_0xb269('0x77')])return[];return db[_0xb269('0x9b')]['query'](_0x451567[_0xb269('0x9c')](),_0x21d92b);})[_0xb269('0x2a')](function(_0x5290d6){_0x75a797['count']=_0x5290d6[_0xb269('0x40')];if(_0x75a797[_0xb269('0x24')]===0x0)return[];return db[_0xb269('0x9b')]['query'](_0x67d995[_0xb269('0x9c')](),_0x21d92b)[_0xb269('0x2a')](function(_0x148eb8){_0x45b2b6=_['keyBy'](_0x148eb8,'id');_0x21d92b=_[_0xb269('0x9d')](_0x21d92b,{'model':db[_0xb269('0x38')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x5c3e56['query']['fields']){_0x343fc6[_0xb269('0x3e')][_0xb269('0x33')](function(_0x72f37b){_0x266c2b[_0xb269('0x46')]('i.'+_0x72f37b);});}else{_0x266c2b['field'](_0xb269('0x91'),_0xb269('0x60'));_0x266c2b['field'](_0xb269('0x9e'),_0xb269('0x9f'));_0x266c2b[_0xb269('0x46')](_0xb269('0xa0'),_0xb269('0xa1'));_0x266c2b[_0xb269('0x46')](_0xb269('0xa2'),_0xb269('0x93'));_0x266c2b[_0xb269('0x46')](_0xb269('0xa3'));_0x266c2b[_0xb269('0x46')](_0xb269('0xa4'),'Contact.firstName');_0x266c2b[_0xb269('0x46')](_0xb269('0xa5'),_0xb269('0xa6'));_0x266c2b['field'](_0xb269('0xa7'),_0xb269('0xa8'));_0x266c2b[_0xb269('0x46')]('c.phone',_0xb269('0xa9'));_0x266c2b[_0xb269('0x46')](_0xb269('0xaa'),'Contact.mobile');_0x266c2b[_0xb269('0x46')](_0xb269('0xab'),_0xb269('0xac'));_0x266c2b[_0xb269('0x46')](_0xb269('0xad'),_0xb269('0xae'));_0x266c2b[_0xb269('0x46')]('o.internal',_0xb269('0xaf'));_0x266c2b[_0xb269('0x46')](_0xb269('0xb0'),_0xb269('0x35'));}if(_0x343fc6[_0xb269('0x25')])_0x266c2b[_0xb269('0x25')](_0x343fc6[_0xb269('0x25')]);if(_0x343fc6[_0xb269('0x22')])_0x266c2b[_0xb269('0x22')](_0x343fc6[_0xb269('0x22')]);return db[_0xb269('0x9b')][_0xb269('0x3a')](_0x266c2b[_0xb269('0x9c')](),_0x21d92b);})[_0xb269('0x2a')](function(_0x4bc463){if(_0x4bc463[_0xb269('0x40')]>0x0)_0x2c0167[_0xb269('0x44')](_0xb269('0xb1'),_['map'](_0x4bc463,'id'));return db['sequelize'][_0xb269('0x3a')](_0x2c0167[_0xb269('0x9c')](),_0x21d92b)[_0xb269('0x2a')](function(_0x2741c8){var _0x243640=_[_0xb269('0xb2')](_0x2741c8,_0xb269('0xb3'));var _0x221c13=[];_0x4bc463[_0xb269('0x33')](function(_0x2e13e9){_0x221c13[_0xb269('0x34')](updateSmsInteraction(_0x2e13e9,_0x45b2b6,_0x243640));});return BPromise[_0xb269('0xb4')](_0x221c13);});});})[_0xb269('0x2a')](function(_0x2dfdeb){_0x75a797[_0xb269('0xb5')]=_0x2dfdeb;return _0x75a797;})[_0xb269('0x2a')](respondWithFilteredResult(_0x16d55d,_0x343fc6))['catch'](handleError(_0x16d55d,null));};exports['show']=function(_0x5cca13,_0x40de9b){var _0x190b2e={'raw':![],'where':{'id':_0x5cca13[_0xb269('0xb6')]['id']}},_0x54ac02={};_0x54ac02['model']=_[_0xb269('0x73')](db[_0xb269('0x38')]['rawAttributes']);_0x54ac02['query']=_[_0xb269('0x73')](_0x5cca13[_0xb269('0x3a')]);_0x54ac02[_0xb269('0x3b')]=_[_0xb269('0x3c')](_0x54ac02[_0xb269('0x3d')],_0x54ac02[_0xb269('0x3a')]);_0x190b2e[_0xb269('0x3e')]=_[_0xb269('0x3c')](_0x54ac02[_0xb269('0x3d')],qs[_0xb269('0x3f')](_0x5cca13[_0xb269('0x3a')][_0xb269('0x3f')]));_0x190b2e[_0xb269('0x3e')]=_0x190b2e[_0xb269('0x3e')]['length']?_0x190b2e[_0xb269('0x3e')]:_0x54ac02[_0xb269('0x3d')];if(_0x5cca13[_0xb269('0x3a')]['includeAll']){_0x190b2e['include']=[{'all':!![]}];}_0x190b2e=_['merge']({},_0x190b2e,_0x5cca13[_0xb269('0xb7')]);return db['SmsInteraction']['find'](_0x190b2e)[_0xb269('0x2a')](handleEntityNotFound(_0x40de9b,null))[_0xb269('0x2a')](respondWithResult(_0x40de9b,null))[_0xb269('0x36')](handleError(_0x40de9b,null));};exports[_0xb269('0xb8')]=function(_0x54344d,_0x263f58){return db[_0xb269('0x38')][_0xb269('0xb8')](_0x54344d[_0xb269('0xb9')],{})[_0xb269('0x2a')](respondWithResult(_0x263f58,0xc9))[_0xb269('0x36')](handleError(_0x263f58,null));};exports['update']=function(_0x419bce,_0x8a7a50){if(_0x419bce[_0xb269('0xb9')]['id']){delete _0x419bce[_0xb269('0xb9')]['id'];}return db[_0xb269('0x38')][_0xb269('0x5f')]({'where':{'id':_0x419bce['params']['id']}})['then'](handleEntityNotFound(_0x8a7a50,null))[_0xb269('0x2a')](saveUpdates(_0x419bce['body'],null))['then'](respondWithResult(_0x8a7a50,null))[_0xb269('0x36')](handleError(_0x8a7a50,null));};exports[_0xb269('0x2b')]=function(_0x533306,_0x13e64b){return db['SmsInteraction']['find']({'where':{'id':_0x533306['params']['id']}})[_0xb269('0x2a')](handleEntityNotFound(_0x13e64b,null))[_0xb269('0x2a')](removeEntity(_0x13e64b,null))['catch'](handleError(_0x13e64b,null));};exports[_0xb269('0xba')]=function(_0x8c288b,_0x18452d){return db[_0xb269('0x38')][_0xb269('0xba')]()[_0xb269('0x2a')](respondWithResult(_0x18452d,null))[_0xb269('0x36')](handleError(_0x18452d,null));};exports['addMessage']=function(_0x54c3d3,_0x1fd11c,_0x59ffa3){return db[_0xb269('0xbb')][_0xb269('0x5f')]({'where':{'id':_0x54c3d3[_0xb269('0xb6')]['id']}})[_0xb269('0x2a')](handleEntityNotFound(_0x1fd11c,null))[_0xb269('0x2a')](function(_0x7eba0){if(_0x7eba0){return _0x7eba0[_0xb269('0xbc')](_0x54c3d3[_0xb269('0xb9')]['ids'],_['omit'](_0x54c3d3[_0xb269('0xb9')],[_0xb269('0xbd'),'id'])||{});}})[_0xb269('0x2a')](respondWithResult(_0x1fd11c,null))[_0xb269('0x36')](handleError(_0x1fd11c,null));};exports[_0xb269('0xbe')]=function(_0x179d6e,_0x33c347,_0x18af81){var _0x3e6e30={'raw':![],'where':{}};var _0x24f310={};var _0x4092a0={'count':0x0,'rows':[]};return db[_0xb269('0x38')][_0xb269('0xbf')]({'where':{'id':_0x179d6e[_0xb269('0xb6')]['id']}})[_0xb269('0x2a')](handleEntityNotFound(_0x33c347,null))[_0xb269('0x2a')](function(_0x1315e6){if(_0x1315e6){_0x24f310[_0xb269('0x3d')]=_[_0xb269('0x73')](db['SmsMessage'][_0xb269('0xc0')]);_0x24f310[_0xb269('0x3a')]=_[_0xb269('0x73')](_0x179d6e[_0xb269('0x3a')]);_0x24f310[_0xb269('0x3b')]=_[_0xb269('0x3c')](_0x24f310['model'],_0x24f310[_0xb269('0x3a')]);_0x3e6e30[_0xb269('0x3e')]=_[_0xb269('0x3c')](_0x24f310[_0xb269('0x3d')],qs[_0xb269('0x3f')](_0x179d6e['query']['fields']));_0x3e6e30['attributes']=_0x3e6e30['attributes'][_0xb269('0x40')]?_0x3e6e30[_0xb269('0x3e')]:_0x24f310[_0xb269('0x3d')];if(!_0x179d6e[_0xb269('0x3a')][_0xb269('0x41')](_0xb269('0x42'))){_0x3e6e30[_0xb269('0x25')]=qs['limit'](_0x179d6e[_0xb269('0x3a')][_0xb269('0x25')]);_0x3e6e30[_0xb269('0x22')]=qs[_0xb269('0x22')](_0x179d6e[_0xb269('0x3a')][_0xb269('0x22')]);}_0x3e6e30['order']=qs['sort'](_0x179d6e['query'][_0xb269('0x43')]);_0x3e6e30['where']=qs[_0xb269('0x3b')](_[_0xb269('0x45')](_0x179d6e[_0xb269('0x3a')],_0x24f310['filters']));_0x3e6e30[_0xb269('0x44')][_0xb269('0xb3')]=_0x1315e6['id'];if(_0x179d6e[_0xb269('0x3a')][_0xb269('0x87')]){_0x3e6e30['where']=_[_0xb269('0x9d')](_0x3e6e30['where'],{'$or':_[_0xb269('0x37')](_0x3e6e30[_0xb269('0x3e')],function(_0x58d03e){var _0x2b93d9={};_0x2b93d9[_0x58d03e]={'$like':'%'+_0x179d6e['query'][_0xb269('0x87')]+'%'};return _0x2b93d9;})});}if(_0x179d6e[_0xb269('0x3a')][_0xb269('0x7b')]){var _0xb7c3eb=_0x179d6e[_0xb269('0x3a')][_0xb269('0x7b')][_0xb269('0x67')](',');var _0x1ab43e={};_0x1ab43e[_0xb7c3eb[0x0]]={'$gte':moment(_0xb7c3eb[0x1])[_0xb269('0xc1')](_0xb269('0xc2'))};_0x3e6e30[_0xb269('0x44')]=_[_0xb269('0x9d')](_0x3e6e30['where'],_0x1ab43e);}_0x3e6e30=_[_0xb269('0x9d')]({},_0x3e6e30,_0x179d6e[_0xb269('0xb7')]);return db[_0xb269('0xbb')][_0xb269('0x24')]({'where':_0x3e6e30[_0xb269('0x44')]})[_0xb269('0x2a')](function(_0x228d30){_0x4092a0[_0xb269('0x24')]=_0x228d30;if(_0x179d6e['query'][_0xb269('0xc3')]){_0x3e6e30[_0xb269('0xc4')]=[{'all':!![]}];}return db['SmsMessage']['findAll'](_0x3e6e30);})['then'](function(_0x245c3d){_0x4092a0[_0xb269('0xb5')]=_0x245c3d;return _0x4092a0;});}})[_0xb269('0x2a')](respondWithFilteredResult(_0x33c347,_0x3e6e30))[_0xb269('0x36')](handleError(_0x33c347,null));};exports[_0xb269('0xc5')]=function(_0x2849e7,_0x107ed7,_0x2911d3){return db[_0xb269('0x38')][_0xb269('0x5f')]({'where':{'id':_0x2849e7[_0xb269('0xb6')]['id']}})['then'](handleEntityNotFound(_0x107ed7,null))['then'](function(_0x33df88){if(_0x33df88){return _0x33df88['setTags'](_0x2849e7[_0xb269('0xb9')][_0xb269('0xbd')],_[_0xb269('0xc6')](_0x2849e7[_0xb269('0xb9')],[_0xb269('0xbd'),'id'])||{})[_0xb269('0xc7')](function(){return db[_0xb269('0x6d')][_0xb269('0xc8')]({'attributes':['id','name','color'],'where':{'id':_0x2849e7['body']['ids']}});})[_0xb269('0x2a')](function(_0x426952){socket[_0xb269('0xc9')](_0xb269('0xca'),{'id':Number(_0x2849e7[_0xb269('0xb6')]['id']),'tags':_0x426952||[]});return{'id':Number(_0x2849e7['params']['id']),'tags':_0x426952||[]};});}})['then'](respondWithResult(_0x107ed7,null))[_0xb269('0x36')](handleError(_0x107ed7,null));};exports[_0xb269('0xcb')]=function(_0x224f08,_0x4422da,_0x183b89){return db[_0xb269('0x38')][_0xb269('0x5f')]({'where':{'id':_0x224f08['params']['id']}})[_0xb269('0x2a')](handleEntityNotFound(_0x4422da,null))[_0xb269('0x2a')](function(_0x441d5c){if(_0x441d5c){return _0x441d5c[_0xb269('0xcb')](_0x224f08[_0xb269('0x3a')][_0xb269('0xbd')]);}})[_0xb269('0x2a')](respondWithStatusCode(_0x4422da,null))[_0xb269('0x36')](handleError(_0x4422da,null));};exports[_0xb269('0xcc')]=function(_0x15367e,_0x2ed85d){var _0x5cd8c3=moment()[_0xb269('0xcd')]()[_0xb269('0x9c')]();var _0x95d6eb=path[_0xb269('0xce')](config[_0xb269('0xcf')],'server',_0xb269('0xd0'),_0xb269('0xd1'));var _0x36c482=path['join'](config[_0xb269('0xcf')],_0xb269('0xd2'),_0xb269('0xd0'),_0xb269('0xd3'));var _0x34eee6=path[_0xb269('0xce')](_0x95d6eb,_0x5cd8c3);var _0x1580fb=util['format'](_0xb269('0xd4'),_0x15367e[_0xb269('0xb6')]['id'],_0x5cd8c3);var _0x1d8a22=path[_0xb269('0xce')](_0x95d6eb,_0x1580fb);var _0x216b0a=[];_0x216b0a['push']({'model':db[_0xb269('0x6e')],'as':_0xb269('0x6e'),'attributes':['id',_0xb269('0x31')],'raw':!![]});_0x216b0a['push']({'model':db[_0xb269('0xd5')],'as':_0xb269('0x64'),'attributes':['id',_0xb269('0xd6'),_0xb269('0xd7')],'raw':!![]});var _0x360a24=[{'model':db['SmsMessage'],'as':_0xb269('0xd8'),'attributes':['id',_0xb269('0xb9'),'createdAt',_0xb269('0xd9'),'secret',_0xb269('0x82')],'include':_0x216b0a}];_0x360a24[_0xb269('0x34')]({'model':db[_0xb269('0xda')],'as':_0xb269('0xdb'),'attributes':['id','name']});_0x360a24[_0xb269('0x34')]({'model':db[_0xb269('0x6e')],'as':_0xb269('0xdc'),'attributes':['id',_0xb269('0x31')]});return db[_0xb269('0x38')][_0xb269('0x5f')]({'where':{'id':_0x15367e['params']['id']},'include':_0x360a24})['then'](handleEntityNotFound(_0x2ed85d,null))['then'](function(_0x1e0aeb){if(_0x1e0aeb){var _0x6d752a=_0x1e0aeb[_0xb269('0xdd')]({'plain':!![]});fs[_0xb269('0xde')](_0x34eee6);var _0x2dfd6a={'channel':'Sms','account':_0x6d752a[_0xb269('0xdb')][_0xb269('0x2e')],'agent':_0x6d752a[_0xb269('0xdc')]?_0x6d752a[_0xb269('0xdc')][_0xb269('0x31')]:_0xb269('0xdf'),'createdAt':moment(_0x6d752a[_0xb269('0x7a')])['format']('YYYY-MM-DD\x20HH:mm:ss')[_0xb269('0x9c')](),'closedAt':_0x6d752a[_0xb269('0xe0')]?moment(_0x6d752a['closedAt'])[_0xb269('0xc1')](_0xb269('0xc2'))[_0xb269('0x9c')]():'','disposition':_0x6d752a[_0xb269('0xe1')],'messages':_(_0x6d752a[_0xb269('0xd8')])[_0xb269('0x87')]({'secret':![]})['map'](function(_0x406bac){return{'date':moment(_0x406bac['createdAt'])[_0xb269('0xc1')](_0xb269('0xc2'))['toString'](),'sender':_0x406bac[_0xb269('0xd9')]===_0xb269('0xe2')?_0x406bac[_0xb269('0x6e')]?_0x406bac['User'][_0xb269('0x31')]:_0xb269('0xe3'):_0x406bac['Contact'][_0xb269('0xd6')]+(_0x406bac['Contact']['lastName']?'\x20'+_0x406bac[_0xb269('0x64')]['lastName']:''),'body':_0x406bac[_0xb269('0xb9')],'direction':_0x406bac['direction']===_0xb269('0xe2')?'A':'C','secret':_0x406bac['secret'],'read':_0x406bac[_0xb269('0x82')]};})[_0xb269('0x66')]()};return ejs[_0xb269('0xe4')](path['join'](config['root'],'server',_0xb269('0xe5'),_0xb269('0xe6')),{'interaction':_0x2dfd6a})['then'](function(_0x3f6f42){var _0x4a0d3a=path[_0xb269('0xce')](_0x34eee6,_0xb269('0xe7')+_0x6d752a['id']+'-'+_0x5cd8c3+'.pdf');var _0x3029f0={'path':_0x4a0d3a,'channel':_0xb269('0xe8'),'interactionId':_0x6d752a['id']};return pdf['createPdfFromHTML'](_0x3f6f42,_0x3029f0);})[_0xb269('0x2a')](function(){return new BPromise(function(_0x5a441c,_0x36129a){zipdir(_0x34eee6,{'saveTo':_0x1d8a22},function(_0x328933,_0xf6dab2){if(_0x328933)return _0x36129a(_0x328933);return _0x5a441c(_0xf6dab2);});})['then'](function(){return new BPromise(function(_0x57422b,_0x38da8f){rimraf(_0x34eee6,function(_0x5a535b){if(_0x5a535b)_0x38da8f(_0x5a535b);return _0x57422b();});});})['then'](function(){return _0x2ed85d['download'](_0x1d8a22,_0x1580fb,function(_0x3469ad){if(_0x3469ad){console[_0xb269('0xe9')](_0xb269('0xea'),_0x3469ad);}else{fs[_0xb269('0xeb')](_0x1d8a22);}});});});}else{return _0x2ed85d['sendStatus'](0xc8);}})[_0xb269('0x36')](handleError(_0x2ed85d,null));};
\ No newline at end of file
+var _0xe17e=['socket.io-emitter','./smsInteraction.socket','register','sendStatus','status','end','json','offset','undefined','count','limit','apply','reject','save','destroy','then','stack','name','send','Users','map','TagIds','Tags','split','push','catch','index','SmsInteraction','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','field','from','tools_tags','select','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','a.id\x20=\x20i.SmsAccountId','sms_messages','me.SmsInteractionId\x20=\x20i.id','sms_interaction_has_tags','it.SmsInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','sqlOperator','conditions','find','unreadMessages','value','having','`\x20=\x200','operator','$substring','getFullTextValue','ContactId','buildExpression','text','start','Tag','forEach','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','body','some','compact','isEmpty','i.SmsAccountId\x20IN\x20?','createdAt','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','read','isArray','tag','filter','isNumeric','i.id\x20LIKE\x20?','i.phone\x20LIKE\x20?','group','i.id','Sequelize','QueryTypes','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','t.id\x20IN\x20?','resolve','SmsAccountId','i.SmsAccountId\x20IS\x20NOT\x20NULL','user','role','getSmsAccounts','i.SmsAccountId\x20IS\x20NULL','agent','sequelize','toString','keyBy','merge','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','contactName','i.*','c.lastName','c.email','c.mobile','Contact.mobile','c.fax','Contact.fax','Owner.fullname','Owner.internal','ui.SmsInteractionId\x20IN\x20?','groupBy','SmsInteractionId','rows','show','params','include','options','create','update','describe','SmsMessage','addMessage','ids','getMessages','findOne','pick','format','YYYY-MM-DD\x20HH:mm:ss','includeAll','addTags','setTags','omit','spread','findAll','color','emit','smsInteractionTags:save','removeTags','download','unix','join','root','server','files','tmp','attachments','transcript-%d-%s.zip','CmContact','secret','SmsAccount','Owner','get','mkdirSync','Sms','Account','fullname','N.A.','closedAt','disposition','direction','out','System','Contact','firstName','lastName','renderFile','views','downloadInteraction.ejs','createPdfFromHTML','log','err','unlinkSync','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/export/pdf','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','defaults','redis'];(function(_0x1f73ea,_0x103466){var _0x163830=function(_0x5d5ec0){while(--_0x5d5ec0){_0x1f73ea['push'](_0x1f73ea['shift']());}};_0x163830(++_0x103466);}(_0xe17e,0xc9));var _0xee17=function(_0x3735b2,_0x19a8d4){_0x3735b2=_0x3735b2-0x0;var _0x26fae2=_0xe17e[_0x3735b2];return _0x26fae2;};'use strict';var emlformat=require(_0xee17('0x0'));var rimraf=require(_0xee17('0x1'));var zipdir=require(_0xee17('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xee17('0x3'));var moment=require(_0xee17('0x4'));var BPromise=require(_0xee17('0x5'));var Mustache=require(_0xee17('0x6'));var util=require(_0xee17('0x7'));var path=require('path');var sox=require(_0xee17('0x8'));var csv=require(_0xee17('0x9'));var ejs=require(_0xee17('0xa'));var fs=require('fs');var fs_extra=require(_0xee17('0xb'));var _=require(_0xee17('0xc'));var squel=require(_0xee17('0xd'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xee17('0xe'));var toCsv=require(_0xee17('0x9'));var querystring=require(_0xee17('0xf'));var Papa=require(_0xee17('0x10'));var Redis=require(_0xee17('0x11'));var authService=require(_0xee17('0x12'));var qs=require(_0xee17('0x13'));var as=require('../../components/parsers/advancedSearch');var pdf=require(_0xee17('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xee17('0x15'))(_0xee17('0x16'));var utils=require(_0xee17('0x17'));var config=require(_0xee17('0x18'));var licenseUtil=require(_0xee17('0x19'));var db=require('../../mysqldb')['db'];config['redis']=_[_0xee17('0x1a')](config[_0xee17('0x1b')],{'host':'localhost','port':0x18eb});var socket=require(_0xee17('0x1c'))(new Redis(config['redis']));require(_0xee17('0x1d'))[_0xee17('0x1e')](socket);function respondWithStatusCode(_0x5b8559,_0x1af6f9){_0x1af6f9=_0x1af6f9||0xcc;return function(_0x210602){if(_0x210602){return _0x5b8559[_0xee17('0x1f')](_0x1af6f9);}return _0x5b8559[_0xee17('0x20')](_0x1af6f9)[_0xee17('0x21')]();};}function respondWithResult(_0xff7e1c,_0x548fa2){_0x548fa2=_0x548fa2||0xc8;return function(_0xfb48fa){if(_0xfb48fa){return _0xff7e1c['status'](_0x548fa2)[_0xee17('0x22')](_0xfb48fa);}};}function respondWithFilteredResult(_0x37abb4,_0x2b78ea){return function(_0x1bf1c3){if(_0x1bf1c3){var _0x51f623=typeof _0x2b78ea[_0xee17('0x23')]===_0xee17('0x24')&&typeof _0x2b78ea['limit']===_0xee17('0x24');var _0x2634f1=_0x1bf1c3[_0xee17('0x25')];var _0x3b5593=_0x51f623?0x0:_0x2b78ea['offset'];var _0xee51b7=_0x51f623?_0x1bf1c3[_0xee17('0x25')]:_0x2b78ea[_0xee17('0x23')]+_0x2b78ea[_0xee17('0x26')];var _0x5cfad2;if(_0xee51b7>=_0x2634f1){_0xee51b7=_0x2634f1;_0x5cfad2=0xc8;}else{_0x5cfad2=0xce;}_0x37abb4[_0xee17('0x20')](_0x5cfad2);return _0x37abb4['set']('Content-Range',_0x3b5593+'-'+_0xee51b7+'/'+_0x2634f1)['json'](_0x1bf1c3);}return null;};}function patchUpdates(_0x39f5cb){return function(_0x1381f5){try{jsonpatch[_0xee17('0x27')](_0x1381f5,_0x39f5cb,!![]);}catch(_0x213142){return BPromise[_0xee17('0x28')](_0x213142);}return _0x1381f5[_0xee17('0x29')]();};}function saveUpdates(_0x399514,_0x155745){return function(_0x5c1662){if(_0x5c1662){return _0x5c1662['update'](_0x399514)['then'](function(_0x26686c){return _0x26686c;});}return null;};}function removeEntity(_0x4d1f30,_0x149fad){return function(_0x21297b){if(_0x21297b){return _0x21297b[_0xee17('0x2a')]()[_0xee17('0x2b')](function(){_0x4d1f30['status'](0xcc)[_0xee17('0x21')]();});}};}function handleEntityNotFound(_0x3be67b,_0x2b9892){return function(_0x2d639a){if(!_0x2d639a){_0x3be67b[_0xee17('0x1f')](0x194);}return _0x2d639a;};}function handleError(_0x580c5e,_0x30b8b5){_0x30b8b5=_0x30b8b5||0x1f4;return function(_0x37117a){logger['error'](_0x37117a[_0xee17('0x2c')]);if(_0x37117a[_0xee17('0x2d')]){delete _0x37117a[_0xee17('0x2d')];}_0x580c5e['status'](_0x30b8b5)[_0xee17('0x2e')](_0x37117a);};}function getInteractionUsers(_0x54cfcc,_0x3b626d){return new BPromise(function(_0x4f359a,_0x7bdb22){try{if(_0x3b626d[_0x54cfcc['id']]){_0x54cfcc[_0xee17('0x2f')]=_[_0xee17('0x30')](_0x3b626d[_0x54cfcc['id']],function(_0x15d365){return{'id':_0x15d365['id'],'fullname':_0x15d365['fullname']};});}}catch(_0x22426a){_0x7bdb22(_0x22426a);}_0x4f359a(_0x54cfcc);});}function getInteractionTags(_0x1b240c,_0x5be0a0){return new BPromise(function(_0x10c6ac,_0x79c0a2){try{if(_0x1b240c[_0xee17('0x31')]){_0x1b240c[_0xee17('0x32')]=[];_0x1b240c['TagIds'][_0xee17('0x33')](',')['forEach'](function(_0x3c271d){_0x1b240c[_0xee17('0x32')][_0xee17('0x34')](_0x5be0a0[_0x3c271d]);});}delete _0x1b240c['TagIds'];}catch(_0x1c5e35){_0x79c0a2(_0x1c5e35);}_0x10c6ac(_0x1b240c);});}function updateSmsInteraction(_0x26b49d,_0x22e819,_0x1e208c){return new BPromise(function(_0x1e5813,_0x32f5eb){return getInteractionUsers(_0x26b49d,_0x1e208c)[_0xee17('0x2b')](function(_0x51de8b){return getInteractionTags(_0x51de8b,_0x22e819);})['then'](function(_0x1295fa){_0x1e5813(_0x1295fa);})[_0xee17('0x35')](function(_0x133ca4){_0x32f5eb(_0x133ca4);});});}exports[_0xee17('0x36')]=function(_0x1bc14c,_0x357a7e){var _0x349879={},_0x5c3499={},_0xbea514={'count':0x0,'rows':[]};var _0x1490cb=_[_0xee17('0x30')](db[_0xee17('0x37')][_0xee17('0x38')],function(_0x5d5ae3){return{'name':_0x5d5ae3[_0xee17('0x39')],'type':_0x5d5ae3[_0xee17('0x3a')][_0xee17('0x3b')]};});_0x5c3499[_0xee17('0x3c')]=_['map'](_0x1490cb,'name');_0x5c3499[_0xee17('0x3d')]=_[_0xee17('0x3e')](_0x1bc14c[_0xee17('0x3d')]);_0x5c3499['filters']=_[_0xee17('0x3f')](_0x5c3499[_0xee17('0x3c')],_0x5c3499[_0xee17('0x3d')]);_0x349879[_0xee17('0x40')]=_[_0xee17('0x3f')](_0x5c3499[_0xee17('0x3c')],qs[_0xee17('0x41')](_0x1bc14c[_0xee17('0x3d')]['fields']));_0x349879[_0xee17('0x40')]=_0x349879[_0xee17('0x40')][_0xee17('0x42')]?_0x349879[_0xee17('0x40')]:_0x5c3499['model'];if(!_0x1bc14c[_0xee17('0x3d')][_0xee17('0x43')](_0xee17('0x44'))){_0x349879[_0xee17('0x26')]=qs['limit'](_0x1bc14c[_0xee17('0x3d')][_0xee17('0x26')]);_0x349879[_0xee17('0x23')]=qs[_0xee17('0x23')](_0x1bc14c[_0xee17('0x3d')]['offset']);}_0x349879[_0xee17('0x45')]=qs[_0xee17('0x46')](_0x1bc14c[_0xee17('0x3d')][_0xee17('0x46')]);_0x349879[_0xee17('0x47')]=qs[_0xee17('0x48')](_['pick'](_0x1bc14c[_0xee17('0x3d')],_0x5c3499[_0xee17('0x48')]),_0x1490cb);var _0x3f94dc=[];var _0x39b295=squel['select']()[_0xee17('0x49')]('id')[_0xee17('0x49')](_0xee17('0x2d'))['field']('color')[_0xee17('0x4a')](_0xee17('0x4b'));var _0xf2ab48=squel[_0xee17('0x4c')]()[_0xee17('0x49')]('u.id')['field'](_0xee17('0x4d'))['field']('ui.SmsInteractionId')[_0xee17('0x4a')](_0xee17('0x4e'),'ui')[_0xee17('0x4f')](_0xee17('0x50'),'u',_0xee17('0x51'));var _0x2254c2=squel[_0xee17('0x4c')]()['from'](_0xee17('0x52'),'i')['left_join'](_0xee17('0x53'),'c',_0xee17('0x54'))[_0xee17('0x4f')]('users','o',_0xee17('0x55'))[_0xee17('0x4f')]('sms_accounts','a',_0xee17('0x56'))['left_join'](_0xee17('0x57'),'me',_0xee17('0x58'))[_0xee17('0x4f')](_0xee17('0x59'),'it',_0xee17('0x5a'))[_0xee17('0x4f')]('tools_tags','t',_0xee17('0x5b'));var _0x2572f9=squel['expr']();var _0x5be28d=[];var _0x541fe6=squel[_0xee17('0x5c')]();var _0x2102ec;if(_0x1bc14c[_0xee17('0x3d')][_0xee17('0x5d')]){_0x2102ec=as['parseSearch'](_0x1bc14c[_0xee17('0x3d')][_0xee17('0x5d')]);var _0xbd1861=_0x2102ec[_0xee17('0x5e')];for(var _0x4b37f0=0x0;_0x4b37f0<_0x2102ec[_0xee17('0x5f')][_0xee17('0x42')];_0x4b37f0++){var _0x1acda0=_0x2102ec['conditions'][_0x4b37f0];var _0x34b150='i';var _0x283f81=_[_0xee17('0x60')](_0x1490cb,[_0xee17('0x2d'),_0x1acda0['field']]);if(!_0x283f81){switch(_0x1acda0[_0xee17('0x49')]){case _0xee17('0x61'):if(_0x1acda0[_0xee17('0x62')]==0x1){_0x2254c2[_0xee17('0x63')]('`'+_0x1acda0[_0xee17('0x49')]+_0xee17('0x64'));}else{_0x2254c2[_0xee17('0x63')]('`'+_0x1acda0[_0xee17('0x49')]+'`\x20>\x200');}break;case'Contact':if(_0x1acda0[_0xee17('0x65')]===_0xee17('0x66')){if(_0x1acda0['value'][_0xee17('0x33')]('\x20')[_0xee17('0x42')]>0x1){_0x2572f9[_0xbd1861]('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0xee17('0x67')](_0x1acda0[_0xee17('0x62')]),null);}else{var _0x140b33='%'+_0x1acda0['value']+'%';_0x2572f9[_0xbd1861]('c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?',_0x140b33,_0x140b33,_0x140b33);}}else{_0x283f81=_[_0xee17('0x60')](_0x1490cb,['name',_0xee17('0x68')]);_0x1acda0[_0xee17('0x49')]=_0xee17('0x68');_0x285b20=as[_0xee17('0x69')](_0x34b150,_0x283f81[_0xee17('0x3a')],_0x1acda0);_0x2572f9[_0xbd1861](_0x285b20[_0xee17('0x6a')],_0x285b20[_0xee17('0x62')][_0xee17('0x6b')],_0x285b20['value'][_0xee17('0x21')]);}break;case _0xee17('0x6c'):var _0x557212=_0x1acda0[_0xee17('0x62')][_0xee17('0x33')](',')[_0xee17('0x30')](function(_0x2cefcd){return Number(_0x2cefcd);});_0x557212[_0xee17('0x6d')](function(_0x2c7b5c){_0x541fe6['or'](_0xee17('0x6e'),'%,'+_0x2c7b5c+',%');});_0x5be28d=_[_0xee17('0x6f')](_0x5be28d,_0x557212);break;case _0xee17('0x70'):if(_0x1acda0[_0xee17('0x65')]===_0xee17('0x66')){_0x2572f9[_0xbd1861](_0xee17('0x71'),'%'+_0x1acda0[_0xee17('0x62')]+'%',null);}else{_0x283f81=_[_0xee17('0x60')](_0x1490cb,[_0xee17('0x2d'),_0xee17('0x72')]);_0x1acda0['field']=_0xee17('0x72');_0x285b20=as['buildExpression'](_0x34b150,_0x283f81[_0xee17('0x3a')],_0x1acda0);_0x2572f9[_0xbd1861](_0x285b20[_0xee17('0x6a')],_0x285b20['value'][_0xee17('0x6b')],_0x285b20[_0xee17('0x62')]['end']);}break;case _0xee17('0x73'):_0x285b20=as[_0xee17('0x69')]('me',null,_0x1acda0);_0x2572f9[_0xbd1861](_0x285b20[_0xee17('0x6a')],_0x285b20[_0xee17('0x62')][_0xee17('0x6b')],_0x285b20[_0xee17('0x62')][_0xee17('0x21')]);break;}}else{var _0x285b20=as['buildExpression'](_0x34b150,_0x283f81[_0xee17('0x3a')],_0x1acda0);_0x2572f9[_0xbd1861](_0x285b20[_0xee17('0x6a')],_0x285b20[_0xee17('0x62')][_0xee17('0x6b')],_0x285b20[_0xee17('0x62')]['end']);}}}else{var _0x211910=_(_0x1bc14c[_0xee17('0x3d')])[_0xee17('0x3e')]()['map'](function(_0x3d2e6d){return _[_0xee17('0x74')](_0x1490cb,[_0xee17('0x2d'),_0x3d2e6d])?_0x3d2e6d:undefined;})[_0xee17('0x75')]()[_0xee17('0x62')]();if(!_[_0xee17('0x76')](_0x211910)){_0x211910['forEach'](function(_0x3f3946){if(_0x3f3946==='SmsAccountId'){_0x2254c2[_0xee17('0x47')](_0xee17('0x77'),[]['concat'](_0x1bc14c[_0xee17('0x3d')][_0x3f3946]));}else if(_0x3f3946===_0xee17('0x78')){var _0x3fe211=JSON[_0xee17('0x79')](_0x1bc14c[_0xee17('0x3d')][_0x3f3946])[_0xee17('0x7a')];var _0xedf2d8=JSON[_0xee17('0x79')](_0x1bc14c[_0xee17('0x3d')][_0x3f3946])[_0xee17('0x7b')];_0x2254c2[_0xee17('0x47')](_0xee17('0x7c'),_0x3fe211,_0xedf2d8);}else{if(_0x1bc14c[_0xee17('0x3d')][_0x3f3946]===_0xee17('0x7d')){_0x2254c2['where']('i.'+_0x3f3946+'\x20IS\x20NULL');}else{_0x2254c2[_0xee17('0x47')]('i.'+_0x3f3946+'\x20=\x20?',_0x1bc14c['query'][_0x3f3946]);}}});}if(_0x1bc14c[_0xee17('0x3d')][_0xee17('0x7e')]){if(_0x1bc14c['query'][_0xee17('0x7e')]==0x1){_0x2254c2[_0xee17('0x63')]('`unreadMessages`\x20=\x200');}else{_0x2254c2[_0xee17('0x63')]('`unreadMessages`\x20>\x200');}}if(_0x1bc14c[_0xee17('0x3d')]['tag']){_0x5be28d=_[_0xee17('0x7f')](_0x1bc14c[_0xee17('0x3d')]['tag'])?_0x1bc14c[_0xee17('0x3d')][_0xee17('0x80')]:new Array(_0x1bc14c[_0xee17('0x3d')][_0xee17('0x80')]);_0x5be28d[_0xee17('0x6d')](function(_0x79ae97){_0x541fe6['or'](_0xee17('0x6e'),'%,'+_0x79ae97+',%');});}if(_0x1bc14c['query'][_0xee17('0x81')]){var _0x804b58=_0x1bc14c[_0xee17('0x3d')][_0xee17('0x81')]['replace']('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(qs[_0xee17('0x82')](_0x804b58)){_0x2572f9['or'](_0xee17('0x83'),_0x804b58+'%')['or'](_0xee17('0x84'),_0x804b58+'%');}else{_0x2572f9['or']('MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0xee17('0x67')](_0x804b58))['or']('CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?',_0x804b58+'%');}}}_0x2254c2[_0xee17('0x47')](_0x2572f9);_0x2254c2[_0xee17('0x85')](_0xee17('0x86'));var _0x15e9ed={'type':db[_0xee17('0x87')][_0xee17('0x88')][_0xee17('0x89')],'raw':!![]};var _0x2b6d9d=_0x2254c2[_0xee17('0x8a')]();_0x2b6d9d[_0xee17('0x49')]('i.id');_0x2b6d9d[_0xee17('0x49')](_0xee17('0x8b'),_0xee17('0x61'));if(_0x349879[_0xee17('0x45')]){_0x349879[_0xee17('0x45')]['forEach'](function(_0x2ded96){var _0x5c2214=_0x2ded96[0x0]==='contactName'?_0x2ded96[0x0]:'i.'+_0x2ded96[0x0];_0x2254c2['order'](_0x5c2214,_0x2ded96[0x1]==='DESC'?![]:!![]);});}if(!_[_0xee17('0x76')](_0x5be28d)){_0x2254c2[_0xee17('0x63')](_0x541fe6);_0x2b6d9d[_0xee17('0x47')](_0xee17('0x8c'),_0x5be28d);}BPromise[_0xee17('0x8d')]()[_0xee17('0x2b')](function(){if(!_0x2102ec){if(_0x1bc14c[_0xee17('0x3d')][_0xee17('0x8e')])return;_0x2b6d9d[_0xee17('0x47')](_0xee17('0x8f'));_0x2254c2[_0xee17('0x47')]('i.SmsAccountId\x20IS\x20NOT\x20NULL');return;}if(_0x1bc14c[_0xee17('0x90')][_0xee17('0x91')]!=='agent')return;return _0x1bc14c[_0xee17('0x90')][_0xee17('0x92')]({'attributes':['id'],'raw':!![]})[_0xee17('0x2b')](function(_0x14602f){if(_[_0xee17('0x76')](_0x14602f)){_0x2b6d9d[_0xee17('0x47')](_0xee17('0x93'));_0x2254c2[_0xee17('0x47')]('i.SmsAccountId\x20IS\x20NULL');}else{_0x2b6d9d[_0xee17('0x47')](_0xee17('0x77'),_['map'](_0x14602f,'id'));_0x2254c2[_0xee17('0x47')](_0xee17('0x77'),_[_0xee17('0x30')](_0x14602f,'id'));}});})['then'](function(){if(_0x1bc14c[_0xee17('0x90')][_0xee17('0x91')]===_0xee17('0x94')&&!_0x2102ec&&!_0x1bc14c[_0xee17('0x3d')][_0xee17('0x8e')])return[];return db[_0xee17('0x95')][_0xee17('0x3d')](_0x2b6d9d[_0xee17('0x96')](),_0x15e9ed);})['then'](function(_0x5c5e6a){_0xbea514[_0xee17('0x25')]=_0x5c5e6a['length'];if(_0xbea514[_0xee17('0x25')]===0x0)return[];return db[_0xee17('0x95')][_0xee17('0x3d')](_0x39b295[_0xee17('0x96')](),_0x15e9ed)['then'](function(_0x38e11f){_0x3f94dc=_[_0xee17('0x97')](_0x38e11f,'id');_0x15e9ed=_[_0xee17('0x98')](_0x15e9ed,{'model':db[_0xee17('0x37')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x1bc14c[_0xee17('0x3d')][_0xee17('0x41')]){_0x349879['attributes'][_0xee17('0x6d')](function(_0xc460a){_0x2254c2[_0xee17('0x49')]('i.'+_0xc460a);});}else{_0x2254c2[_0xee17('0x49')](_0xee17('0x8b'),_0xee17('0x61'));_0x2254c2[_0xee17('0x49')]('a.key',_0xee17('0x99'));_0x2254c2['field']('a.mandatoryDisposition',_0xee17('0x9a'));_0x2254c2[_0xee17('0x49')](_0xee17('0x9b'),_0xee17('0x9c'));_0x2254c2[_0xee17('0x49')](_0xee17('0x9d'));_0x2254c2[_0xee17('0x49')]('c.firstName','Contact.firstName');_0x2254c2[_0xee17('0x49')](_0xee17('0x9e'),'Contact.lastName');_0x2254c2[_0xee17('0x49')](_0xee17('0x9f'),'Contact.email');_0x2254c2['field']('c.phone','Contact.phone');_0x2254c2[_0xee17('0x49')](_0xee17('0xa0'),_0xee17('0xa1'));_0x2254c2[_0xee17('0x49')](_0xee17('0xa2'),_0xee17('0xa3'));_0x2254c2[_0xee17('0x49')]('o.fullname',_0xee17('0xa4'));_0x2254c2[_0xee17('0x49')]('o.internal',_0xee17('0xa5'));_0x2254c2[_0xee17('0x49')]('GROUP_CONCAT(DISTINCT\x20t.id)','TagIds');}if(_0x349879[_0xee17('0x26')])_0x2254c2[_0xee17('0x26')](_0x349879['limit']);if(_0x349879[_0xee17('0x23')])_0x2254c2['offset'](_0x349879['offset']);return db[_0xee17('0x95')][_0xee17('0x3d')](_0x2254c2[_0xee17('0x96')](),_0x15e9ed);})[_0xee17('0x2b')](function(_0xb478d5){if(_0xb478d5[_0xee17('0x42')]>0x0)_0xf2ab48['where'](_0xee17('0xa6'),_[_0xee17('0x30')](_0xb478d5,'id'));return db[_0xee17('0x95')][_0xee17('0x3d')](_0xf2ab48[_0xee17('0x96')](),_0x15e9ed)[_0xee17('0x2b')](function(_0x39a31f){var _0x5197a0=_[_0xee17('0xa7')](_0x39a31f,_0xee17('0xa8'));var _0x1cb0c3=[];_0xb478d5[_0xee17('0x6d')](function(_0x33bb7b){_0x1cb0c3[_0xee17('0x34')](updateSmsInteraction(_0x33bb7b,_0x3f94dc,_0x5197a0));});return BPromise['all'](_0x1cb0c3);});});})[_0xee17('0x2b')](function(_0xec4d89){_0xbea514[_0xee17('0xa9')]=_0xec4d89;return _0xbea514;})[_0xee17('0x2b')](respondWithFilteredResult(_0x357a7e,_0x349879))[_0xee17('0x35')](handleError(_0x357a7e,null));};exports[_0xee17('0xaa')]=function(_0x2ddaaf,_0x4c501f){var _0x245001={'raw':![],'where':{'id':_0x2ddaaf[_0xee17('0xab')]['id']}},_0x2d3378={};_0x2d3378[_0xee17('0x3c')]=_[_0xee17('0x3e')](db[_0xee17('0x37')][_0xee17('0x38')]);_0x2d3378[_0xee17('0x3d')]=_[_0xee17('0x3e')](_0x2ddaaf[_0xee17('0x3d')]);_0x2d3378[_0xee17('0x48')]=_[_0xee17('0x3f')](_0x2d3378['model'],_0x2d3378[_0xee17('0x3d')]);_0x245001[_0xee17('0x40')]=_[_0xee17('0x3f')](_0x2d3378['model'],qs['fields'](_0x2ddaaf[_0xee17('0x3d')][_0xee17('0x41')]));_0x245001['attributes']=_0x245001[_0xee17('0x40')]['length']?_0x245001[_0xee17('0x40')]:_0x2d3378[_0xee17('0x3c')];if(_0x2ddaaf[_0xee17('0x3d')]['includeAll']){_0x245001[_0xee17('0xac')]=[{'all':!![]}];}_0x245001=_[_0xee17('0x98')]({},_0x245001,_0x2ddaaf[_0xee17('0xad')]);return db[_0xee17('0x37')][_0xee17('0x60')](_0x245001)[_0xee17('0x2b')](handleEntityNotFound(_0x4c501f,null))[_0xee17('0x2b')](respondWithResult(_0x4c501f,null))[_0xee17('0x35')](handleError(_0x4c501f,null));};exports[_0xee17('0xae')]=function(_0x2f4659,_0x126440){return db[_0xee17('0x37')]['create'](_0x2f4659[_0xee17('0x73')],{})[_0xee17('0x2b')](respondWithResult(_0x126440,0xc9))[_0xee17('0x35')](handleError(_0x126440,null));};exports[_0xee17('0xaf')]=function(_0x2ece15,_0xdbdbd3){if(_0x2ece15['body']['id']){delete _0x2ece15['body']['id'];}return db['SmsInteraction'][_0xee17('0x60')]({'where':{'id':_0x2ece15[_0xee17('0xab')]['id']}})[_0xee17('0x2b')](handleEntityNotFound(_0xdbdbd3,null))[_0xee17('0x2b')](saveUpdates(_0x2ece15[_0xee17('0x73')],null))[_0xee17('0x2b')](respondWithResult(_0xdbdbd3,null))[_0xee17('0x35')](handleError(_0xdbdbd3,null));};exports[_0xee17('0x2a')]=function(_0x2330dd,_0x288cb3){return db[_0xee17('0x37')][_0xee17('0x60')]({'where':{'id':_0x2330dd[_0xee17('0xab')]['id']}})['then'](handleEntityNotFound(_0x288cb3,null))[_0xee17('0x2b')](removeEntity(_0x288cb3,null))[_0xee17('0x35')](handleError(_0x288cb3,null));};exports[_0xee17('0xb0')]=function(_0x47ef52,_0x25faf5){return db['SmsInteraction'][_0xee17('0xb0')]()[_0xee17('0x2b')](respondWithResult(_0x25faf5,null))[_0xee17('0x35')](handleError(_0x25faf5,null));};exports['addMessage']=function(_0x285f37,_0xca7dce,_0x5117f8){return db[_0xee17('0xb1')][_0xee17('0x60')]({'where':{'id':_0x285f37['params']['id']}})[_0xee17('0x2b')](handleEntityNotFound(_0xca7dce,null))['then'](function(_0x520919){if(_0x520919){return _0x520919[_0xee17('0xb2')](_0x285f37[_0xee17('0x73')][_0xee17('0xb3')],_['omit'](_0x285f37[_0xee17('0x73')],[_0xee17('0xb3'),'id'])||{});}})[_0xee17('0x2b')](respondWithResult(_0xca7dce,null))[_0xee17('0x35')](handleError(_0xca7dce,null));};exports[_0xee17('0xb4')]=function(_0x1cd65e,_0x1e118f,_0x131fde){var _0x391d84={'raw':![],'where':{}};var _0x2b5381={};var _0x141db5={'count':0x0,'rows':[]};return db[_0xee17('0x37')][_0xee17('0xb5')]({'where':{'id':_0x1cd65e[_0xee17('0xab')]['id']}})[_0xee17('0x2b')](handleEntityNotFound(_0x1e118f,null))[_0xee17('0x2b')](function(_0x39663c){if(_0x39663c){_0x2b5381[_0xee17('0x3c')]=_[_0xee17('0x3e')](db['SmsMessage'][_0xee17('0x38')]);_0x2b5381[_0xee17('0x3d')]=_[_0xee17('0x3e')](_0x1cd65e['query']);_0x2b5381[_0xee17('0x48')]=_[_0xee17('0x3f')](_0x2b5381[_0xee17('0x3c')],_0x2b5381[_0xee17('0x3d')]);_0x391d84['attributes']=_[_0xee17('0x3f')](_0x2b5381[_0xee17('0x3c')],qs['fields'](_0x1cd65e['query'][_0xee17('0x41')]));_0x391d84['attributes']=_0x391d84[_0xee17('0x40')][_0xee17('0x42')]?_0x391d84[_0xee17('0x40')]:_0x2b5381[_0xee17('0x3c')];if(!_0x1cd65e[_0xee17('0x3d')][_0xee17('0x43')](_0xee17('0x44'))){_0x391d84[_0xee17('0x26')]=qs[_0xee17('0x26')](_0x1cd65e['query'][_0xee17('0x26')]);_0x391d84[_0xee17('0x23')]=qs[_0xee17('0x23')](_0x1cd65e[_0xee17('0x3d')][_0xee17('0x23')]);}_0x391d84[_0xee17('0x45')]=qs[_0xee17('0x46')](_0x1cd65e[_0xee17('0x3d')]['sort']);_0x391d84['where']=qs['filters'](_[_0xee17('0xb6')](_0x1cd65e[_0xee17('0x3d')],_0x2b5381[_0xee17('0x48')]));_0x391d84[_0xee17('0x47')][_0xee17('0xa8')]=_0x39663c['id'];if(_0x1cd65e[_0xee17('0x3d')][_0xee17('0x81')]){_0x391d84['where']=_[_0xee17('0x98')](_0x391d84[_0xee17('0x47')],{'$or':_[_0xee17('0x30')](_0x391d84['attributes'],function(_0xa52287){var _0x3c6353={};_0x3c6353[_0xa52287]={'$like':'%'+_0x1cd65e['query']['filter']+'%'};return _0x3c6353;})});}if(_0x1cd65e['query']['$gte']){var _0x2967a8=_0x1cd65e[_0xee17('0x3d')][_0xee17('0x7a')][_0xee17('0x33')](',');var _0x48107b={};_0x48107b[_0x2967a8[0x0]]={'$gte':moment(_0x2967a8[0x1])[_0xee17('0xb7')](_0xee17('0xb8'))};_0x391d84[_0xee17('0x47')]=_[_0xee17('0x98')](_0x391d84[_0xee17('0x47')],_0x48107b);}_0x391d84=_[_0xee17('0x98')]({},_0x391d84,_0x1cd65e[_0xee17('0xad')]);return db[_0xee17('0xb1')][_0xee17('0x25')]({'where':_0x391d84[_0xee17('0x47')]})[_0xee17('0x2b')](function(_0x4a6cec){_0x141db5[_0xee17('0x25')]=_0x4a6cec;if(_0x1cd65e['query'][_0xee17('0xb9')]){_0x391d84[_0xee17('0xac')]=[{'all':!![]}];}return db[_0xee17('0xb1')]['findAll'](_0x391d84);})[_0xee17('0x2b')](function(_0x3ca10a){_0x141db5[_0xee17('0xa9')]=_0x3ca10a;return _0x141db5;});}})[_0xee17('0x2b')](respondWithFilteredResult(_0x1e118f,_0x391d84))['catch'](handleError(_0x1e118f,null));};exports[_0xee17('0xba')]=function(_0x53aa81,_0x453131,_0x1a1b43){return db[_0xee17('0x37')][_0xee17('0x60')]({'where':{'id':_0x53aa81[_0xee17('0xab')]['id']}})[_0xee17('0x2b')](handleEntityNotFound(_0x453131,null))['then'](function(_0x292258){if(_0x292258){return _0x292258[_0xee17('0xbb')](_0x53aa81[_0xee17('0x73')]['ids'],_[_0xee17('0xbc')](_0x53aa81[_0xee17('0x73')],[_0xee17('0xb3'),'id'])||{})[_0xee17('0xbd')](function(){return db[_0xee17('0x6c')][_0xee17('0xbe')]({'attributes':['id',_0xee17('0x2d'),_0xee17('0xbf')],'where':{'id':_0x53aa81[_0xee17('0x73')][_0xee17('0xb3')]}});})[_0xee17('0x2b')](function(_0x46939d){socket[_0xee17('0xc0')](_0xee17('0xc1'),{'id':Number(_0x53aa81['params']['id']),'tags':_0x46939d||[]});return{'id':Number(_0x53aa81[_0xee17('0xab')]['id']),'tags':_0x46939d||[]};});}})[_0xee17('0x2b')](respondWithResult(_0x453131,null))[_0xee17('0x35')](handleError(_0x453131,null));};exports[_0xee17('0xc2')]=function(_0x51390c,_0x40b2a0,_0x34b21f){return db[_0xee17('0x37')][_0xee17('0x60')]({'where':{'id':_0x51390c[_0xee17('0xab')]['id']}})[_0xee17('0x2b')](handleEntityNotFound(_0x40b2a0,null))[_0xee17('0x2b')](function(_0xede4de){if(_0xede4de){return _0xede4de[_0xee17('0xc2')](_0x51390c['query'][_0xee17('0xb3')]);}})['then'](respondWithStatusCode(_0x40b2a0,null))[_0xee17('0x35')](handleError(_0x40b2a0,null));};exports[_0xee17('0xc3')]=function(_0x5209bf,_0x40644c){var _0xf0cac=moment()[_0xee17('0xc4')]()[_0xee17('0x96')]();var _0x4faf85=path[_0xee17('0xc5')](config[_0xee17('0xc6')],_0xee17('0xc7'),_0xee17('0xc8'),_0xee17('0xc9'));var _0x54b2cb=path[_0xee17('0xc5')](config[_0xee17('0xc6')],_0xee17('0xc7'),_0xee17('0xc8'),_0xee17('0xca'));var _0x5cf2fb=path[_0xee17('0xc5')](_0x4faf85,_0xf0cac);var _0x51abbd=util[_0xee17('0xb7')](_0xee17('0xcb'),_0x5209bf[_0xee17('0xab')]['id'],_0xf0cac);var _0x3db308=path[_0xee17('0xc5')](_0x4faf85,_0x51abbd);var _0x3449e7=[];_0x3449e7['push']({'model':db[_0xee17('0x70')],'as':'User','attributes':['id','fullname'],'raw':!![]});_0x3449e7[_0xee17('0x34')]({'model':db[_0xee17('0xcc')],'as':'Contact','attributes':['id','firstName','lastName'],'raw':!![]});var _0x56e92e=[{'model':db[_0xee17('0xb1')],'as':'Messages','attributes':['id',_0xee17('0x73'),_0xee17('0x78'),'direction',_0xee17('0xcd'),_0xee17('0x7e')],'include':_0x3449e7}];_0x56e92e[_0xee17('0x34')]({'model':db[_0xee17('0xce')],'as':'Account','attributes':['id','name']});_0x56e92e['push']({'model':db['User'],'as':_0xee17('0xcf'),'attributes':['id','fullname']});return db[_0xee17('0x37')][_0xee17('0x60')]({'where':{'id':_0x5209bf[_0xee17('0xab')]['id']},'include':_0x56e92e})['then'](handleEntityNotFound(_0x40644c,null))['then'](function(_0x46bdc9){if(_0x46bdc9){var _0xa6d6ee=_0x46bdc9[_0xee17('0xd0')]({'plain':!![]});fs[_0xee17('0xd1')](_0x5cf2fb);var _0x5aa4e3={'channel':_0xee17('0xd2'),'account':_0xa6d6ee[_0xee17('0xd3')][_0xee17('0x2d')],'agent':_0xa6d6ee[_0xee17('0xcf')]?_0xa6d6ee[_0xee17('0xcf')][_0xee17('0xd4')]:_0xee17('0xd5'),'createdAt':moment(_0xa6d6ee[_0xee17('0x78')])[_0xee17('0xb7')]('YYYY-MM-DD\x20HH:mm:ss')[_0xee17('0x96')](),'closedAt':_0xa6d6ee['closed']?moment(_0xa6d6ee[_0xee17('0xd6')])[_0xee17('0xb7')](_0xee17('0xb8'))['toString']():'','disposition':_0xa6d6ee[_0xee17('0xd7')],'messages':_(_0xa6d6ee['Messages'])[_0xee17('0x81')]({'secret':![]})[_0xee17('0x30')](function(_0x1e6c66){return{'date':moment(_0x1e6c66[_0xee17('0x78')])[_0xee17('0xb7')](_0xee17('0xb8'))[_0xee17('0x96')](),'sender':_0x1e6c66[_0xee17('0xd8')]===_0xee17('0xd9')?_0x1e6c66['User']?_0x1e6c66[_0xee17('0x70')]['fullname']:_0xee17('0xda'):_0x1e6c66[_0xee17('0xdb')][_0xee17('0xdc')]+(_0x1e6c66['Contact'][_0xee17('0xdd')]?'\x20'+_0x1e6c66[_0xee17('0xdb')][_0xee17('0xdd')]:''),'body':_0x1e6c66['body'],'direction':_0x1e6c66[_0xee17('0xd8')]===_0xee17('0xd9')?'A':'C','secret':_0x1e6c66[_0xee17('0xcd')],'read':_0x1e6c66[_0xee17('0x7e')]};})[_0xee17('0x62')]()};return ejs[_0xee17('0xde')](path[_0xee17('0xc5')](config[_0xee17('0xc6')],_0xee17('0xc7'),_0xee17('0xdf'),_0xee17('0xe0')),{'interaction':_0x5aa4e3})['then'](function(_0x3be898){var _0x4cb7cd=path[_0xee17('0xc5')](_0x5cf2fb,'transcript-'+_0xa6d6ee['id']+'-'+_0xf0cac+'.pdf');var _0xe7b008={'path':_0x4cb7cd,'channel':_0xee17('0xd2'),'interactionId':_0xa6d6ee['id']};return pdf[_0xee17('0xe1')](_0x3be898,_0xe7b008);})[_0xee17('0x2b')](function(){return new BPromise(function(_0x3d21e2,_0x5a7706){zipdir(_0x5cf2fb,{'saveTo':_0x3db308},function(_0xedc119,_0x4435e8){if(_0xedc119)return _0x5a7706(_0xedc119);return _0x3d21e2(_0x4435e8);});})[_0xee17('0x2b')](function(){return new BPromise(function(_0x5533d0,_0x343ada){rimraf(_0x5cf2fb,function(_0x525555){if(_0x525555)_0x343ada(_0x525555);return _0x5533d0();});});})['then'](function(){return _0x40644c[_0xee17('0xc3')](_0x3db308,_0x51abbd,function(_0x195eb1){if(_0x195eb1){console[_0xee17('0xe2')](_0xee17('0xe3'),_0x195eb1);}else{fs[_0xee17('0xe4')](_0x3db308);}});});});}else{return _0x40644c[_0xee17('0x1f')](0xc8);}})[_0xee17('0x35')](handleError(_0x40644c,null));};
\ No newline at end of file
index db2b2b0..886593a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8603=['update','remove','getUsers','then','setDataValue','findAll','unreadMessages','emit','hasOwnProperty','hook','../../mysqldb','SmsInteraction','save'];(function(_0x404af0,_0x37e661){var _0x357a9b=function(_0xf7962f){while(--_0xf7962f){_0x404af0['push'](_0x404af0['shift']());}};_0x357a9b(++_0x37e661);}(_0x8603,0x190));var _0x3860=function(_0x161d36,_0x437fee){_0x161d36=_0x161d36-0x0;var _0x84de4=_0x8603[_0x161d36];return _0x84de4;};'use strict';var EventEmitter=require('events');var SmsInteraction=require(_0x3860('0x0'))['db'][_0x3860('0x1')];var SmsMessage=require(_0x3860('0x0'))['db']['SmsMessage'];var SmsInteractionEvents=new EventEmitter();SmsInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x3860('0x2'),'afterUpdate':_0x3860('0x3'),'afterDestroy':_0x3860('0x4')};function emitEvent(_0x490262){return function(_0x2fc97a,_0x56f8c5,_0xb0fc24){_0x2fc97a[_0x3860('0x5')]({'attributes':['id'],'raw':!![]})[_0x3860('0x6')](function(_0xd3ce26){_0x2fc97a[_0x3860('0x7')]('Users',_0xd3ce26['map'](function(_0x5b1ac8){return{'id':_0x5b1ac8['id']};}));return SmsMessage[_0x3860('0x8')]({'where':{'SmsInteractionId':_0x2fc97a['id'],'direction':'in','read':![]},'raw':!![]});})[_0x3860('0x6')](function(_0x52c277){_0x2fc97a[_0x3860('0x7')](_0x3860('0x9'),_0x52c277['length']);SmsInteractionEvents[_0x3860('0xa')](_0x490262+':'+_0x2fc97a['id'],_0x2fc97a);SmsInteractionEvents[_0x3860('0xa')](_0x490262,_0x2fc97a);_0xb0fc24(null);})['catch'](_0xb0fc24(null));};}for(var e in events){if(events[_0x3860('0xb')](e)){var event=events[e];SmsInteraction[_0x3860('0xc')](e,emitEvent(event));}}module['exports']=SmsInteractionEvents;
\ No newline at end of file
+var _0x47c5=['setMaxListeners','update','remove','getUsers','then','setDataValue','Users','map','findAll','unreadMessages','length','emit','catch','hasOwnProperty','exports','events','../../mysqldb','SmsInteraction','SmsMessage'];(function(_0xbc4659,_0x578fba){var _0x5831f9=function(_0x5eb0eb){while(--_0x5eb0eb){_0xbc4659['push'](_0xbc4659['shift']());}};_0x5831f9(++_0x578fba);}(_0x47c5,0x165));var _0x547c=function(_0x48564d,_0x2c1c8c){_0x48564d=_0x48564d-0x0;var _0x2ad779=_0x47c5[_0x48564d];return _0x2ad779;};'use strict';var EventEmitter=require(_0x547c('0x0'));var SmsInteraction=require(_0x547c('0x1'))['db'][_0x547c('0x2')];var SmsMessage=require(_0x547c('0x1'))['db'][_0x547c('0x3')];var SmsInteractionEvents=new EventEmitter();SmsInteractionEvents[_0x547c('0x4')](0x0);var events={'afterCreate':'save','afterUpdate':_0x547c('0x5'),'afterDestroy':_0x547c('0x6')};function emitEvent(_0x5b48c9){return function(_0x3e827e,_0x468220,_0x51ab7f){_0x3e827e[_0x547c('0x7')]({'attributes':['id'],'raw':!![]})[_0x547c('0x8')](function(_0x381f2e){_0x3e827e[_0x547c('0x9')](_0x547c('0xa'),_0x381f2e[_0x547c('0xb')](function(_0x3e2279){return{'id':_0x3e2279['id']};}));return SmsMessage[_0x547c('0xc')]({'where':{'SmsInteractionId':_0x3e827e['id'],'direction':'in','read':![]},'raw':!![]});})[_0x547c('0x8')](function(_0x44a581){_0x3e827e[_0x547c('0x9')](_0x547c('0xd'),_0x44a581[_0x547c('0xe')]);SmsInteractionEvents[_0x547c('0xf')](_0x5b48c9+':'+_0x3e827e['id'],_0x3e827e);SmsInteractionEvents[_0x547c('0xf')](_0x5b48c9,_0x3e827e);_0x51ab7f(null);})[_0x547c('0x10')](_0x51ab7f(null));};}for(var e in events){if(events[_0x547c('0x11')](e)){var event=events[e];SmsInteraction['hook'](e,emitEvent(event));}}module[_0x547c('0x12')]=SmsInteractionEvents;
\ No newline at end of file
index fee155a..630fa2e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad95=['changed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./smsInteraction.attributes','exports','define','SmsInteraction','sms_interactions'];(function(_0x39adb2,_0x540b96){var _0x1df693=function(_0x13fb10){while(--_0x13fb10){_0x39adb2['push'](_0x39adb2['shift']());}};_0x1df693(++_0x540b96);}(_0xad95,0x82));var _0x5ad9=function(_0x35022e,_0x4ce343){_0x35022e=_0x35022e-0x0;var _0x5973d3=_0xad95[_0x35022e];return _0x5973d3;};'use strict';var _=require('lodash');var util=require(_0x5ad9('0x0'));var logger=require(_0x5ad9('0x1'))(_0x5ad9('0x2'));var moment=require(_0x5ad9('0x3'));var BPromise=require(_0x5ad9('0x4'));var rp=require(_0x5ad9('0x5'));var fs=require('fs');var path=require(_0x5ad9('0x6'));var rimraf=require(_0x5ad9('0x7'));var config=require(_0x5ad9('0x8'));var attributes=require(_0x5ad9('0x9'));module[_0x5ad9('0xa')]=function(_0x184050,_0xbf9350){return _0x184050[_0x5ad9('0xb')](_0x5ad9('0xc'),attributes,{'tableName':_0x5ad9('0xd'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x36dc19,_0x54e05c,_0x4a6062){if(_0x36dc19[_0x5ad9('0xe')]('closed')){_0x36dc19[_0x5ad9('0xf')]=moment()[_0x5ad9('0x10')](_0x5ad9('0x11'));}_0x4a6062(null,_0x36dc19);}}});};
\ No newline at end of file
+var _0xa787=['bluebird','request-promise','path','rimraf','../../config/environment','./smsInteraction.attributes','exports','SmsInteraction','sms_interactions','closed','closedAt','format','lodash','util','api'];(function(_0x46401e,_0x2a345b){var _0x447cba=function(_0x54ea97){while(--_0x54ea97){_0x46401e['push'](_0x46401e['shift']());}};_0x447cba(++_0x2a345b);}(_0xa787,0xed));var _0x7a78=function(_0x185305,_0x49bb25){_0x185305=_0x185305-0x0;var _0x302ff0=_0xa787[_0x185305];return _0x302ff0;};'use strict';var _=require(_0x7a78('0x0'));var util=require(_0x7a78('0x1'));var logger=require('../../config/logger')(_0x7a78('0x2'));var moment=require('moment');var BPromise=require(_0x7a78('0x3'));var rp=require(_0x7a78('0x4'));var fs=require('fs');var path=require(_0x7a78('0x5'));var rimraf=require(_0x7a78('0x6'));var config=require(_0x7a78('0x7'));var attributes=require(_0x7a78('0x8'));module[_0x7a78('0x9')]=function(_0x86ebf3,_0x5392e1){return _0x86ebf3['define'](_0x7a78('0xa'),attributes,{'tableName':_0x7a78('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x57fa5c,_0xdc1052,_0x6e9c70){if(_0x57fa5c['changed'](_0x7a78('0xc'))){_0x57fa5c[_0x7a78('0xd')]=moment()[_0x7a78('0xe')]('YYYY-MM-DD\x20HH:mm:ss');}_0x6e9c70(null,_0x57fa5c);}}});};
\ No newline at end of file
index e6e8b76..c25c665 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7260=['options','raw','attributes','limit','AddTagsToSmsInteraction','SmsInteraction','find','where','ids','spread','AddTags','stringify','catch','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','register','then','info','SmsInteraction,\x20%s,\x20%s','request\x20sent','debug','SmsInteraction,\x20%s,\x20%s,\x20%s','error','code','message','result','UpdateSmsInteraction','update','body'];(function(_0x521a70,_0x1b7b25){var _0x59d4f8=function(_0x2fa3ae){while(--_0x2fa3ae){_0x521a70['push'](_0x521a70['shift']());}};_0x59d4f8(++_0x1b7b25);}(_0x7260,0x88));var _0x0726=function(_0x2fddc1,_0x463c9e){_0x2fddc1=_0x2fddc1-0x0;var _0x2d78ea=_0x7260[_0x2fddc1];return _0x2d78ea;};'use strict';var _=require(_0x0726('0x0'));var util=require(_0x0726('0x1'));var moment=require('moment');var BPromise=require(_0x0726('0x2'));var rs=require(_0x0726('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x0726('0x4'))['db'];var utils=require(_0x0726('0x5'));var logger=require('../../config/logger')(_0x0726('0x6'));var config=require(_0x0726('0x7'));var jayson=require(_0x0726('0x8'));var client=jayson[_0x0726('0x9')]['http']({'port':0x232a});config[_0x0726('0xa')]=_[_0x0726('0xb')](config[_0x0726('0xa')],{'host':_0x0726('0xc'),'port':0x18eb});var socket=require(_0x0726('0xd'))(new Redis(config['redis']));require('./smsInteraction.socket')[_0x0726('0xe')](socket);function respondWithRpcPromise(_0x2e50a9,_0x2299b1,_0x262997){return new BPromise(function(_0x5da4ac,_0x4d61b2){return client['request'](_0x2e50a9,_0x262997)[_0x0726('0xf')](function(_0x3318ba){logger[_0x0726('0x10')](_0x0726('0x11'),_0x2299b1,_0x0726('0x12'));logger[_0x0726('0x13')](_0x0726('0x14'),_0x2299b1,_0x0726('0x12'),JSON['stringify'](_0x3318ba));if(_0x3318ba['error']){if(_0x3318ba[_0x0726('0x15')][_0x0726('0x16')]===0x1f4){logger['error'](_0x0726('0x11'),_0x2299b1,_0x3318ba[_0x0726('0x15')][_0x0726('0x17')]);return _0x4d61b2(_0x3318ba[_0x0726('0x15')][_0x0726('0x17')]);}logger[_0x0726('0x15')]('SmsInteraction,\x20%s,\x20%s',_0x2299b1,_0x3318ba[_0x0726('0x15')][_0x0726('0x17')]);return _0x5da4ac(_0x3318ba[_0x0726('0x15')]['message']);}else{logger[_0x0726('0x10')](_0x0726('0x11'),_0x2299b1,'request\x20sent');_0x5da4ac(_0x3318ba[_0x0726('0x18')][_0x0726('0x17')]);}})['catch'](function(_0x47aea4){logger[_0x0726('0x15')]('SmsInteraction,\x20%s,\x20%s',_0x2299b1,_0x47aea4);_0x4d61b2(_0x47aea4);});});}exports[_0x0726('0x19')]=function(_0x464af9){var _0x24b8d0=this;return new Promise(function(_0x277c93,_0x41a0aa){return db['SmsInteraction'][_0x0726('0x1a')](_0x464af9[_0x0726('0x1b')],{'raw':_0x464af9['options']?_0x464af9[_0x0726('0x1c')][_0x0726('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x464af9[_0x0726('0x1c')]?_0x464af9['options']['where']||null:null,'attributes':_0x464af9[_0x0726('0x1c')]?_0x464af9[_0x0726('0x1c')][_0x0726('0x1e')]||null:null,'limit':_0x464af9[_0x0726('0x1c')]?_0x464af9[_0x0726('0x1c')][_0x0726('0x1f')]||null:null})['then'](function(_0x286f40){logger[_0x0726('0x10')]('UpdateSmsInteraction',_0x464af9);logger['debug']('UpdateSmsInteraction',_0x464af9,JSON['stringify'](_0x286f40));_0x277c93(_0x286f40);})['catch'](function(_0x306601){logger[_0x0726('0x15')](_0x0726('0x19'),_0x306601[_0x0726('0x17')],_0x464af9);_0x41a0aa(_0x24b8d0['error'](0x1f4,_0x306601['message']));});});};exports[_0x0726('0x20')]=function(_0x437cd6){return new Promise(function(_0x40aea2,_0x7c3d4d){return db[_0x0726('0x21')][_0x0726('0x22')]({'where':_0x437cd6[_0x0726('0x1c')]?_0x437cd6['options'][_0x0726('0x23')]||null:null})[_0x0726('0xf')](function(_0x51572b){if(_0x51572b){return _0x51572b['addTags'](_0x437cd6['body']['ids'],_['omit'](_0x437cd6[_0x0726('0x1b')],[_0x0726('0x24'),'id'])||{});}})[_0x0726('0x25')](function(_0x2707e3){logger[_0x0726('0x10')](_0x0726('0x26'),_0x437cd6);logger[_0x0726('0x13')](_0x0726('0x26'),_0x437cd6,JSON[_0x0726('0x27')](_0x2707e3));_0x40aea2(_0x2707e3);})[_0x0726('0x28')](function(_0x233270){logger[_0x0726('0x15')](_0x0726('0x26'),_0x233270[_0x0726('0x17')],_0x437cd6);_0x7c3d4d(_this[_0x0726('0x15')](0x1f4,_0x233270[_0x0726('0x17')]));});});};
\ No newline at end of file
+var _0xf39f=['attributes','limit','then','AddTagsToSmsInteraction','addTags','omit','spread','AddTags','debug','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./smsInteraction.socket','SmsInteraction,\x20%s,\x20%s','request\x20sent','SmsInteraction,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','catch','UpdateSmsInteraction','SmsInteraction','update','body','options','raw','where'];(function(_0x231297,_0x52c84c){var _0x1b9e5d=function(_0x2a3093){while(--_0x2a3093){_0x231297['push'](_0x231297['shift']());}};_0x1b9e5d(++_0x52c84c);}(_0xf39f,0xa9));var _0xff39=function(_0x12dbbf,_0x488696){_0x12dbbf=_0x12dbbf-0x0;var _0x4e2dc0=_0xf39f[_0x12dbbf];return _0x4e2dc0;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0xff39('0x0'));var rs=require(_0xff39('0x1'));var fs=require('fs');var Redis=require(_0xff39('0x2'));var db=require(_0xff39('0x3'))['db'];var utils=require(_0xff39('0x4'));var logger=require(_0xff39('0x5'))(_0xff39('0x6'));var config=require('../../config/environment');var jayson=require(_0xff39('0x7'));var client=jayson[_0xff39('0x8')][_0xff39('0x9')]({'port':0x232a});config[_0xff39('0xa')]=_[_0xff39('0xb')](config[_0xff39('0xa')],{'host':_0xff39('0xc'),'port':0x18eb});var socket=require(_0xff39('0xd'))(new Redis(config['redis']));require(_0xff39('0xe'))['register'](socket);function respondWithRpcPromise(_0x57846f,_0x31a560,_0x45acca){return new BPromise(function(_0x35bdf4,_0x3b386f){return client['request'](_0x57846f,_0x45acca)['then'](function(_0x105f0d){logger['info'](_0xff39('0xf'),_0x31a560,_0xff39('0x10'));logger['debug'](_0xff39('0x11'),_0x31a560,'request\x20sent',JSON[_0xff39('0x12')](_0x105f0d));if(_0x105f0d[_0xff39('0x13')]){if(_0x105f0d['error']['code']===0x1f4){logger[_0xff39('0x13')]('SmsInteraction,\x20%s,\x20%s',_0x31a560,_0x105f0d['error'][_0xff39('0x14')]);return _0x3b386f(_0x105f0d[_0xff39('0x13')][_0xff39('0x14')]);}logger[_0xff39('0x13')](_0xff39('0xf'),_0x31a560,_0x105f0d['error'][_0xff39('0x14')]);return _0x35bdf4(_0x105f0d['error'][_0xff39('0x14')]);}else{logger[_0xff39('0x15')]('SmsInteraction,\x20%s,\x20%s',_0x31a560,_0xff39('0x10'));_0x35bdf4(_0x105f0d[_0xff39('0x16')]['message']);}})[_0xff39('0x17')](function(_0x436436){logger[_0xff39('0x13')]('SmsInteraction,\x20%s,\x20%s',_0x31a560,_0x436436);_0x3b386f(_0x436436);});});}exports[_0xff39('0x18')]=function(_0x16c63a){var _0x5d7505=this;return new Promise(function(_0x189032,_0x4eba28){return db[_0xff39('0x19')][_0xff39('0x1a')](_0x16c63a[_0xff39('0x1b')],{'raw':_0x16c63a[_0xff39('0x1c')]?_0x16c63a['options'][_0xff39('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x16c63a[_0xff39('0x1c')]?_0x16c63a['options'][_0xff39('0x1e')]||null:null,'attributes':_0x16c63a[_0xff39('0x1c')]?_0x16c63a[_0xff39('0x1c')][_0xff39('0x1f')]||null:null,'limit':_0x16c63a[_0xff39('0x1c')]?_0x16c63a[_0xff39('0x1c')][_0xff39('0x20')]||null:null})[_0xff39('0x21')](function(_0x5d63ca){logger['info'](_0xff39('0x18'),_0x16c63a);logger['debug'](_0xff39('0x18'),_0x16c63a,JSON['stringify'](_0x5d63ca));_0x189032(_0x5d63ca);})['catch'](function(_0x4f0e96){logger['error']('UpdateSmsInteraction',_0x4f0e96[_0xff39('0x14')],_0x16c63a);_0x4eba28(_0x5d7505[_0xff39('0x13')](0x1f4,_0x4f0e96[_0xff39('0x14')]));});});};exports[_0xff39('0x22')]=function(_0x2f5280){return new Promise(function(_0x3dfdf4,_0x2354bc){return db['SmsInteraction']['find']({'where':_0x2f5280['options']?_0x2f5280['options'][_0xff39('0x1e')]||null:null})[_0xff39('0x21')](function(_0x113a11){if(_0x113a11){return _0x113a11[_0xff39('0x23')](_0x2f5280[_0xff39('0x1b')]['ids'],_[_0xff39('0x24')](_0x2f5280[_0xff39('0x1b')],['ids','id'])||{});}})[_0xff39('0x25')](function(_0xb65605){logger[_0xff39('0x15')](_0xff39('0x26'),_0x2f5280);logger[_0xff39('0x27')](_0xff39('0x26'),_0x2f5280,JSON['stringify'](_0xb65605));_0x3dfdf4(_0xb65605);})[_0xff39('0x17')](function(_0x581792){logger[_0xff39('0x13')](_0xff39('0x26'),_0x581792[_0xff39('0x14')],_0x2f5280);_0x2354bc(_this[_0xff39('0x13')](0x1f4,_0x581792['message']));});});};
\ No newline at end of file
index 44400e2..ebe7f8f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfef6=['emit','removeListener','register','smsInteraction:','./smsInteraction.events','remove','update'];(function(_0x47fee5,_0x2afc0c){var _0x510ee2=function(_0x74b92b){while(--_0x74b92b){_0x47fee5['push'](_0x47fee5['shift']());}};_0x510ee2(++_0x2afc0c);}(_0xfef6,0xba));var _0x6fef=function(_0x45e1e2,_0x7f6008){_0x45e1e2=_0x45e1e2-0x0;var _0x7b82d=_0xfef6[_0x45e1e2];return _0x7b82d;};'use strict';var SmsInteractionEvents=require(_0x6fef('0x0'));var events=['save',_0x6fef('0x1'),_0x6fef('0x2')];function createListener(_0x1f943b,_0x251619){return function(_0xee4887){_0x251619[_0x6fef('0x3')](_0x1f943b,_0xee4887);};}function removeListener(_0x3a8320,_0x30939b){return function(){SmsInteractionEvents[_0x6fef('0x4')](_0x3a8320,_0x30939b);};}exports[_0x6fef('0x5')]=function(_0x577efa){for(var _0x2457af=0x0,_0x149e22=events['length'];_0x2457af<_0x149e22;_0x2457af++){var _0x60e9b5=events[_0x2457af];var _0x453fe8=createListener(_0x6fef('0x6')+_0x60e9b5,_0x577efa);SmsInteractionEvents['on'](_0x60e9b5,_0x453fe8);}};
\ No newline at end of file
+var _0x43e1=['remove','removeListener','register','length','smsInteraction:','./smsInteraction.events','save'];(function(_0x4d2263,_0x3fbf0d){var _0x24aba0=function(_0x389a59){while(--_0x389a59){_0x4d2263['push'](_0x4d2263['shift']());}};_0x24aba0(++_0x3fbf0d);}(_0x43e1,0x140));var _0x143e=function(_0x5c2e5e,_0x2bc00e){_0x5c2e5e=_0x5c2e5e-0x0;var _0x46a5da=_0x43e1[_0x5c2e5e];return _0x46a5da;};'use strict';var SmsInteractionEvents=require(_0x143e('0x0'));var events=[_0x143e('0x1'),_0x143e('0x2'),'update'];function createListener(_0x4ada71,_0x20ee01){return function(_0x2f324d){_0x20ee01['emit'](_0x4ada71,_0x2f324d);};}function removeListener(_0x2252d1,_0x3b5684){return function(){SmsInteractionEvents[_0x143e('0x3')](_0x2252d1,_0x3b5684);};}exports[_0x143e('0x4')]=function(_0x28b99e){for(var _0x1a594e=0x0,_0x3b28bf=events[_0x143e('0x5')];_0x1a594e<_0x3b28bf;_0x1a594e++){var _0x420d4d=events[_0x1a594e];var _0x48a4cc=createListener(_0x143e('0x6')+_0x420d4d,_0x28b99e);SmsInteractionEvents['on'](_0x420d4d,_0x48a4cc);}};
\ No newline at end of file
index 4edb4aa..77805a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9741=['post','status','put','/:id/accept','accept','reject','/:id','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./smsMessage.controller','get','isAuthenticated','index','/describe','describe','show','tracked','sms','smsmessage:create','create'];(function(_0x88cd7b,_0x4c884c){var _0x56fcc8=function(_0x513b3d){while(--_0x513b3d){_0x88cd7b['push'](_0x88cd7b['shift']());}};_0x56fcc8(++_0x4c884c);}(_0x9741,0x1ee));var _0x1974=function(_0x5d85d6,_0x3155cc){_0x5d85d6=_0x5d85d6-0x0;var _0x260726=_0x9741[_0x5d85d6];return _0x260726;};'use strict';var multer=require(_0x1974('0x0'));var util=require(_0x1974('0x1'));var path=require(_0x1974('0x2'));var timeout=require(_0x1974('0x3'));var express=require(_0x1974('0x4'));var router=express[_0x1974('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x1974('0x6'));var interaction=require(_0x1974('0x7'));var config=require('../../config/environment');var controller=require(_0x1974('0x8'));router[_0x1974('0x9')]('/',auth[_0x1974('0xa')](),controller[_0x1974('0xb')]);router[_0x1974('0x9')](_0x1974('0xc'),auth[_0x1974('0xa')](),controller[_0x1974('0xd')]);router[_0x1974('0x9')]('/:id',auth[_0x1974('0xa')](),controller[_0x1974('0xe')]);router['post']('/',auth[_0x1974('0xa')](),interaction[_0x1974('0xf')](_0x1974('0x10'),_0x1974('0x11')),controller[_0x1974('0x12')]);router[_0x1974('0x13')]('/:id/status',controller[_0x1974('0x14')]);router[_0x1974('0x15')]('/:id',auth[_0x1974('0xa')](),controller['update']);router[_0x1974('0x15')](_0x1974('0x16'),auth[_0x1974('0xa')](),controller[_0x1974('0x17')]);router['put']('/:id/reject',auth['isAuthenticated'](),controller[_0x1974('0x18')]);router['delete'](_0x1974('0x19'),auth[_0x1974('0xa')](),controller['destroy']);module[_0x1974('0x1a')]=router;
\ No newline at end of file
+var _0x7887=['reject','destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','/describe','describe','/:id','show','post','sms','smsmessage:create','create','/:id/status','status','update','put','/:id/accept','accept','/:id/reject'];(function(_0x415c4a,_0x112dd2){var _0x73ac8c=function(_0xde55e8){while(--_0xde55e8){_0x415c4a['push'](_0x415c4a['shift']());}};_0x73ac8c(++_0x112dd2);}(_0x7887,0x1b3));var _0x7788=function(_0x55914e,_0x3cb611){_0x55914e=_0x55914e-0x0;var _0x3a507d=_0x7887[_0x55914e];return _0x3a507d;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x7788('0x0'));var timeout=require(_0x7788('0x1'));var express=require(_0x7788('0x2'));var router=express[_0x7788('0x3')]();var fs_extra=require(_0x7788('0x4'));var auth=require(_0x7788('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x7788('0x6'));var controller=require('./smsMessage.controller');router[_0x7788('0x7')]('/',auth[_0x7788('0x8')](),controller['index']);router[_0x7788('0x7')](_0x7788('0x9'),auth[_0x7788('0x8')](),controller[_0x7788('0xa')]);router[_0x7788('0x7')](_0x7788('0xb'),auth[_0x7788('0x8')](),controller[_0x7788('0xc')]);router[_0x7788('0xd')]('/',auth['isAuthenticated'](),interaction['tracked'](_0x7788('0xe'),_0x7788('0xf')),controller[_0x7788('0x10')]);router[_0x7788('0xd')](_0x7788('0x11'),controller[_0x7788('0x12')]);router['put'](_0x7788('0xb'),auth[_0x7788('0x8')](),controller[_0x7788('0x13')]);router[_0x7788('0x14')](_0x7788('0x15'),auth[_0x7788('0x8')](),controller[_0x7788('0x16')]);router['put'](_0x7788('0x17'),auth[_0x7788('0x8')](),controller[_0x7788('0x18')]);router['delete'](_0x7788('0xb'),auth[_0x7788('0x8')](),controller[_0x7788('0x19')]);module[_0x7788('0x1a')]=router;
\ No newline at end of file
index 3bcede6..12eca53 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc9c5=['sequelize','medium','BOOLEAN','ENUM','out','STRING','DATE','TEXT'];(function(_0x1e5137,_0x3726e0){var _0x4d7cff=function(_0x373891){while(--_0x373891){_0x1e5137['push'](_0x1e5137['shift']());}};_0x4d7cff(++_0x3726e0);}(_0xc9c5,0x150));var _0x5c9c=function(_0xa2ac9,_0xf07f28){_0xa2ac9=_0xa2ac9-0x0;var _0x690e9b=_0xc9c5[_0xa2ac9];return _0x690e9b;};'use strict';var Sequelize=require(_0x5c9c('0x0'));module['exports']={'body':{'type':Sequelize['TEXT'](_0x5c9c('0x1')),'allowNull':![]},'read':{'type':Sequelize[_0x5c9c('0x2')],'defaultValue':![]},'direction':{'type':Sequelize[_0x5c9c('0x3')]('in','out'),'defaultValue':_0x5c9c('0x4'),'allowNull':![]},'messageId':{'type':Sequelize['STRING'](0xbe)},'phone':{'type':Sequelize[_0x5c9c('0x5')]},'readAt':{'type':Sequelize[_0x5c9c('0x6')]},'secret':{'type':Sequelize[_0x5c9c('0x2')],'defaultValue':![]},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize[_0x5c9c('0x7')]}};
\ No newline at end of file
+var _0x6c84=['STRING','sequelize','exports','TEXT','medium','BOOLEAN','out'];(function(_0x1c6090,_0x2f0ade){var _0x1a0159=function(_0x2111ff){while(--_0x2111ff){_0x1c6090['push'](_0x1c6090['shift']());}};_0x1a0159(++_0x2f0ade);}(_0x6c84,0x112));var _0x46c8=function(_0x138adb,_0x193fee){_0x138adb=_0x138adb-0x0;var _0x1b27f2=_0x6c84[_0x138adb];return _0x1b27f2;};'use strict';var Sequelize=require(_0x46c8('0x0'));module[_0x46c8('0x1')]={'body':{'type':Sequelize[_0x46c8('0x2')](_0x46c8('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0x46c8('0x4')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0x46c8('0x5')),'defaultValue':'out','allowNull':![]},'messageId':{'type':Sequelize[_0x46c8('0x6')](0xbe)},'phone':{'type':Sequelize['STRING']},'readAt':{'type':Sequelize['DATE']},'secret':{'type':Sequelize[_0x46c8('0x4')],'defaultValue':![]},'providerName':{'type':Sequelize[_0x46c8('0x6')]},'providerResponse':{'type':Sequelize[_0x46c8('0x2')]}};
\ No newline at end of file
index d6e1921..0afba28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa751=['register','jayson/promise','client','http','then','info','SmsMessage,\x20%s,\x20%s','request\x20sent','debug','SmsMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','end','offset','undefined','limit','count','status','set','json','apply','reject','update','destroy','name','send','map','SmsMessage','rawAttributes','key','query','attributes','fields','length','model','hasOwnProperty','nolimit','order','sort','filters','pick','where','merge','VIRTUAL','filter','options','include','findAll','rows','show','params','keys','intersection','find','create','body','describe','accept','readAt','format','UserId','user','agent','read1stAt','get','[SMSMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','interaction','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','Sequelize','QueryTypes','SELECT','contact','User','fullname','email','interface','SIP/%s','channel','event','EventManager','acceptmessage','sms-interactions','sms','SmsInteractionId','[SMSMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','ContactId','rejectmessage','SmsAccountId','received\x20delivery\x20report\x20from','type','inspect','MessageSid','messageId','SmsAccount,\x20%s,\x20%s,\x20%s','twilio','MessageUUID','indexOf','sent','delivered','plivio','groupName','DELIVERED','infobip','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter'];(function(_0x52d52f,_0x51d396){var _0x56b27a=function(_0x289aa2){while(--_0x289aa2){_0x52d52f['push'](_0x52d52f['shift']());}};_0x56b27a(++_0x51d396);}(_0xa751,0x18e));var _0x1a75=function(_0x402674,_0x4822c3){_0x402674=_0x402674-0x0;var _0x2387c3=_0xa751[_0x402674];return _0x2387c3;};'use strict';var emlformat=require(_0x1a75('0x0'));var rimraf=require(_0x1a75('0x1'));var zipdir=require(_0x1a75('0x2'));var jsonpatch=require(_0x1a75('0x3'));var rp=require(_0x1a75('0x4'));var moment=require(_0x1a75('0x5'));var BPromise=require(_0x1a75('0x6'));var Mustache=require(_0x1a75('0x7'));var util=require(_0x1a75('0x8'));var path=require(_0x1a75('0x9'));var sox=require(_0x1a75('0xa'));var csv=require(_0x1a75('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1a75('0xc'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x1a75('0xd'));var deskjs=require(_0x1a75('0xe'));var toCsv=require(_0x1a75('0xb'));var querystring=require(_0x1a75('0xf'));var Papa=require(_0x1a75('0x10'));var Redis=require(_0x1a75('0x11'));var authService=require(_0x1a75('0x12'));var qs=require(_0x1a75('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x1a75('0x14'));var logger=require(_0x1a75('0x15'))('api');var utils=require(_0x1a75('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x1a75('0x17'));var db=require(_0x1a75('0x18'))['db'];config[_0x1a75('0x19')]=_['defaults'](config[_0x1a75('0x19')],{'host':_0x1a75('0x1a'),'port':0x18eb});var socket=require(_0x1a75('0x1b'))(new Redis(config[_0x1a75('0x19')]));require('./smsMessage.socket')[_0x1a75('0x1c')](socket);var jayson=require(_0x1a75('0x1d'));var client=jayson[_0x1a75('0x1e')][_0x1a75('0x1f')]({'port':0x232c});var client9002=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x47244d,_0x2223dc,_0x18661f,_0x466186){return new BPromise(function(_0x3ec5ee,_0x257581){var _0x2756a4=_0x466186||client;return _0x2756a4['request'](_0x47244d,_0x18661f)[_0x1a75('0x20')](function(_0x8bc06b){logger[_0x1a75('0x21')](_0x1a75('0x22'),_0x2223dc,_0x1a75('0x23'));logger[_0x1a75('0x24')](_0x1a75('0x25'),_0x2223dc,_0x1a75('0x23'),JSON[_0x1a75('0x26')](_0x8bc06b));if(_0x8bc06b[_0x1a75('0x27')]){if(_0x8bc06b[_0x1a75('0x27')][_0x1a75('0x28')]===0x1f4){logger[_0x1a75('0x27')](_0x1a75('0x22'),_0x2223dc,_0x8bc06b['error']['message']);return _0x257581(_0x8bc06b['error'][_0x1a75('0x29')]);}logger['error'](_0x1a75('0x22'),_0x2223dc,_0x8bc06b[_0x1a75('0x27')][_0x1a75('0x29')]);return _0x3ec5ee(_0x8bc06b[_0x1a75('0x27')][_0x1a75('0x29')]);}else{logger[_0x1a75('0x21')]('SmsMessage,\x20%s,\x20%s',_0x2223dc,_0x1a75('0x23'));_0x3ec5ee(_0x8bc06b[_0x1a75('0x2a')][_0x1a75('0x29')]);}})[_0x1a75('0x2b')](function(_0x573214){logger['error']('SmsMessage,\x20%s,\x20%s',_0x2223dc,_0x573214);_0x257581(_0x573214);});});}function respondWithStatusCode(_0x2423fb,_0x5130b3){_0x5130b3=_0x5130b3||0xcc;return function(_0x4e8acd){if(_0x4e8acd){return _0x2423fb[_0x1a75('0x2c')](_0x5130b3);}return _0x2423fb['status'](_0x5130b3)[_0x1a75('0x2d')]();};}function respondWithResult(_0x472a09,_0x273ef8){_0x273ef8=_0x273ef8||0xc8;return function(_0x3deb21){if(_0x3deb21){return _0x472a09['status'](_0x273ef8)['json'](_0x3deb21);}};}function respondWithFilteredResult(_0x29c746,_0xbc948c){return function(_0x311258){if(_0x311258){var _0x23323e=typeof _0xbc948c[_0x1a75('0x2e')]===_0x1a75('0x2f')&&typeof _0xbc948c[_0x1a75('0x30')]===_0x1a75('0x2f');var _0x252bca=_0x311258[_0x1a75('0x31')];var _0x57aa4b=_0x23323e?0x0:_0xbc948c[_0x1a75('0x2e')];var _0x5e38e0=_0x23323e?_0x311258[_0x1a75('0x31')]:_0xbc948c[_0x1a75('0x2e')]+_0xbc948c[_0x1a75('0x30')];var _0x39eac8;if(_0x5e38e0>=_0x252bca){_0x5e38e0=_0x252bca;_0x39eac8=0xc8;}else{_0x39eac8=0xce;}_0x29c746[_0x1a75('0x32')](_0x39eac8);return _0x29c746[_0x1a75('0x33')]('Content-Range',_0x57aa4b+'-'+_0x5e38e0+'/'+_0x252bca)[_0x1a75('0x34')](_0x311258);}return null;};}function patchUpdates(_0x271934){return function(_0x5b1eae){try{jsonpatch[_0x1a75('0x35')](_0x5b1eae,_0x271934,!![]);}catch(_0x8f4b87){return BPromise[_0x1a75('0x36')](_0x8f4b87);}return _0x5b1eae['save']();};}function saveUpdates(_0x125aac,_0x45cf86){return function(_0x2b9d2f){if(_0x2b9d2f){return _0x2b9d2f[_0x1a75('0x37')](_0x125aac)[_0x1a75('0x20')](function(_0x28bdef){return _0x28bdef;});}return null;};}function removeEntity(_0x4fb1b0,_0xbf8e3b){return function(_0x19bea9){if(_0x19bea9){return _0x19bea9[_0x1a75('0x38')]()[_0x1a75('0x20')](function(){_0x4fb1b0['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x2a72d9,_0x1945e7){return function(_0x1c8647){if(!_0x1c8647){_0x2a72d9[_0x1a75('0x2c')](0x194);}return _0x1c8647;};}function handleError(_0x5a8da8,_0x408d25){_0x408d25=_0x408d25||0x1f4;return function(_0x253278){logger[_0x1a75('0x27')](_0x253278['stack']);if(_0x253278['name']){delete _0x253278[_0x1a75('0x39')];}_0x5a8da8[_0x1a75('0x32')](_0x408d25)[_0x1a75('0x3a')](_0x253278);};}exports['index']=function(_0xf9999b,_0x4433a8){var _0x53e919={},_0x430123={},_0x23b3bd={'count':0x0,'rows':[]};var _0x5c778f=_[_0x1a75('0x3b')](db[_0x1a75('0x3c')][_0x1a75('0x3d')],function(_0x41f3ce){return{'name':_0x41f3ce['fieldName'],'type':_0x41f3ce['type'][_0x1a75('0x3e')]};});_0x430123['model']=_[_0x1a75('0x3b')](_0x5c778f,'name');_0x430123['query']=_['keys'](_0xf9999b[_0x1a75('0x3f')]);_0x430123['filters']=_['intersection'](_0x430123['model'],_0x430123['query']);_0x53e919[_0x1a75('0x40')]=_['intersection'](_0x430123['model'],qs['fields'](_0xf9999b[_0x1a75('0x3f')][_0x1a75('0x41')]));_0x53e919['attributes']=_0x53e919[_0x1a75('0x40')][_0x1a75('0x42')]?_0x53e919['attributes']:_0x430123[_0x1a75('0x43')];if(!_0xf9999b[_0x1a75('0x3f')][_0x1a75('0x44')](_0x1a75('0x45'))){_0x53e919[_0x1a75('0x30')]=qs[_0x1a75('0x30')](_0xf9999b[_0x1a75('0x3f')][_0x1a75('0x30')]);_0x53e919[_0x1a75('0x2e')]=qs['offset'](_0xf9999b[_0x1a75('0x3f')]['offset']);}_0x53e919[_0x1a75('0x46')]=qs[_0x1a75('0x47')](_0xf9999b[_0x1a75('0x3f')]['sort']);_0x53e919['where']=qs[_0x1a75('0x48')](_[_0x1a75('0x49')](_0xf9999b[_0x1a75('0x3f')],_0x430123[_0x1a75('0x48')]),_0x5c778f);if(_0xf9999b[_0x1a75('0x3f')]['filter']){_0x53e919[_0x1a75('0x4a')]=_[_0x1a75('0x4b')](_0x53e919['where'],{'$or':_[_0x1a75('0x3b')](_0x5c778f,function(_0x5b2ff7){if(_0x5b2ff7['type']!==_0x1a75('0x4c')){var _0x22044c={};_0x22044c[_0x5b2ff7[_0x1a75('0x39')]]={'$like':'%'+_0xf9999b['query'][_0x1a75('0x4d')]+'%'};return _0x22044c;}})});}_0x53e919=_[_0x1a75('0x4b')]({},_0x53e919,_0xf9999b[_0x1a75('0x4e')]);var _0x4dc1ed={'where':_0x53e919[_0x1a75('0x4a')]};return db['SmsMessage'][_0x1a75('0x31')](_0x4dc1ed)[_0x1a75('0x20')](function(_0x1564f0){_0x23b3bd[_0x1a75('0x31')]=_0x1564f0;if(_0xf9999b[_0x1a75('0x3f')]['includeAll']){_0x53e919[_0x1a75('0x4f')]=[{'all':!![]}];}return db[_0x1a75('0x3c')][_0x1a75('0x50')](_0x53e919);})['then'](function(_0x24987e){_0x23b3bd[_0x1a75('0x51')]=_0x24987e;return _0x23b3bd;})[_0x1a75('0x20')](respondWithFilteredResult(_0x4433a8,_0x53e919))['catch'](handleError(_0x4433a8,null));};exports[_0x1a75('0x52')]=function(_0x4d7c56,_0x3edecd){var _0x3e471f={'raw':!![],'where':{'id':_0x4d7c56[_0x1a75('0x53')]['id']}},_0x163ff2={};_0x163ff2[_0x1a75('0x43')]=_[_0x1a75('0x54')](db[_0x1a75('0x3c')][_0x1a75('0x3d')]);_0x163ff2[_0x1a75('0x3f')]=_['keys'](_0x4d7c56['query']);_0x163ff2['filters']=_['intersection'](_0x163ff2[_0x1a75('0x43')],_0x163ff2[_0x1a75('0x3f')]);_0x3e471f[_0x1a75('0x40')]=_[_0x1a75('0x55')](_0x163ff2['model'],qs[_0x1a75('0x41')](_0x4d7c56[_0x1a75('0x3f')][_0x1a75('0x41')]));_0x3e471f[_0x1a75('0x40')]=_0x3e471f[_0x1a75('0x40')][_0x1a75('0x42')]?_0x3e471f[_0x1a75('0x40')]:_0x163ff2[_0x1a75('0x43')];if(_0x4d7c56[_0x1a75('0x3f')]['includeAll']){_0x3e471f[_0x1a75('0x4f')]=[{'all':!![]}];}_0x3e471f=_[_0x1a75('0x4b')]({},_0x3e471f,_0x4d7c56[_0x1a75('0x4e')]);return db[_0x1a75('0x3c')][_0x1a75('0x56')](_0x3e471f)[_0x1a75('0x20')](handleEntityNotFound(_0x3edecd,null))[_0x1a75('0x20')](respondWithResult(_0x3edecd,null))[_0x1a75('0x2b')](handleError(_0x3edecd,null));};exports[_0x1a75('0x57')]=function(_0x5a1dff,_0x5c448b){return db['SmsMessage'][_0x1a75('0x57')](_0x5a1dff['body'],{})['then'](respondWithResult(_0x5c448b,0xc9))[_0x1a75('0x2b')](handleError(_0x5c448b,null));};exports[_0x1a75('0x37')]=function(_0x301528,_0x2fb515){if(_0x301528[_0x1a75('0x58')]['id']){delete _0x301528[_0x1a75('0x58')]['id'];}return db[_0x1a75('0x3c')][_0x1a75('0x56')]({'where':{'id':_0x301528[_0x1a75('0x53')]['id']}})[_0x1a75('0x20')](handleEntityNotFound(_0x2fb515,null))['then'](saveUpdates(_0x301528[_0x1a75('0x58')],null))['then'](respondWithResult(_0x2fb515,null))[_0x1a75('0x2b')](handleError(_0x2fb515,null));};exports['destroy']=function(_0x195fbe,_0x3130d5){return db[_0x1a75('0x3c')][_0x1a75('0x56')]({'where':{'id':_0x195fbe['params']['id']}})[_0x1a75('0x20')](handleEntityNotFound(_0x3130d5,null))['then'](removeEntity(_0x3130d5,null))['catch'](handleError(_0x3130d5,null));};exports[_0x1a75('0x59')]=function(_0x374bfd,_0x597e86){return db[_0x1a75('0x3c')][_0x1a75('0x59')]()['then'](respondWithResult(_0x597e86,null))[_0x1a75('0x2b')](handleError(_0x597e86,null));};var interaction_log=require(_0x1a75('0x15'))('sms-interactions');exports[_0x1a75('0x5a')]=function(_0xb24f2b,_0x14f75f,_0xc6b23d){var _0x33dc65={'agent':{},'channel':'sms'};if(_0xb24f2b['body']['id']){delete _0xb24f2b['body']['id'];}_0xb24f2b[_0x1a75('0x58')]['read']=!![];_0xb24f2b[_0x1a75('0x58')][_0x1a75('0x5b')]=moment()[_0x1a75('0x5c')]('YYYY-MM-DD\x20HH:mm:ss');_0xb24f2b[_0x1a75('0x58')]['UserId']=_0xb24f2b['body'][_0x1a75('0x5d')]||_0xb24f2b[_0x1a75('0x5e')]['id'];_0x33dc65[_0x1a75('0x5f')]['id']=_0xb24f2b[_0x1a75('0x58')]['UserId'];return db[_0x1a75('0x3c')][_0x1a75('0x56')]({'where':{'id':_0xb24f2b[_0x1a75('0x53')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x14f75f,null))[_0x1a75('0x20')](saveUpdates(_0xb24f2b[_0x1a75('0x58')],null))[_0x1a75('0x20')](function(_0x5000b1){if(_0x5000b1){_0x33dc65[_0x1a75('0x29')]=_0x5000b1['get']({'plain':!![]});return db['SmsInteraction']['find']({'where':{'id':_0x5000b1['SmsInteractionId']}});}return null;})[_0x1a75('0x20')](handleEntityNotFound(_0x14f75f,null))['then'](function(_0x83a128){if(_0x83a128){return _0x83a128['update']({'UserId':_0xb24f2b[_0x1a75('0x58')][_0x1a75('0x5d')],'read1stAt':_['isNil'](_0x83a128[_0x1a75('0x60')])?moment()[_0x1a75('0x5c')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})['then'](function(_0x2996da){if(_0x2996da){_0x33dc65['interaction']=_0x2996da[_0x1a75('0x61')]({'plain':!![]});interaction_log[_0x1a75('0x21')](_0x1a75('0x62'),_0xb24f2b[_0x1a75('0x5e')]['id'],_0xb24f2b[_0x1a75('0x5e')][_0x1a75('0x39')],_0xb24f2b[_0x1a75('0x5e')]['role'],_0x33dc65[_0x1a75('0x63')]['id'],_0xb24f2b[_0x1a75('0x58')]?JSON[_0x1a75('0x26')](_0xb24f2b[_0x1a75('0x58')]):_0x1a75('0x64'));return respondWithRpcPromise(_0x1a75('0x65'),_0x1a75('0x66'),_0x33dc65);}return null;})['then'](function(_0x245eab){var _0x54cf3b=_0x1a75('0x67')+_0x245eab[_0x1a75('0x29')]['ContactId'];return db[_0x1a75('0x68')][_0x1a75('0x3f')](_0x54cf3b,{'type':db[_0x1a75('0x69')][_0x1a75('0x6a')][_0x1a75('0x6b')],'raw':!![]})[_0x1a75('0x20')](function(_0x4b6271){return _0x4b6271;});})[_0x1a75('0x20')](function(_0x383065){if(_0x383065){_0x33dc65['message'][_0x1a75('0x6c')]=_0x383065[0x0];if(!_0xb24f2b[_0x1a75('0x58')][_0x1a75('0x5d')])return;return db[_0x1a75('0x6d')][_0x1a75('0x56')]({'where':{'id':_0xb24f2b[_0x1a75('0x58')][_0x1a75('0x5d')],'role':_0x1a75('0x5f')},'attributes':['id',_0x1a75('0x39'),_0x1a75('0x6e'),_0x1a75('0x6f'),'internal'],'raw':!![]});}return null;})[_0x1a75('0x20')](function(_0x1622f7){if(!_0x1622f7)return null;_0x33dc65[_0x1a75('0x29')][_0x1a75('0x5f')]=_0x1622f7;return _0x33dc65;})['then'](function(_0x576d3c){if(_0x576d3c){if(_0xb24f2b[_0x1a75('0x58')]['manual']){_0x33dc65[_0x1a75('0x29')][_0x1a75('0x70')]=util[_0x1a75('0x5c')](_0x1a75('0x71'),_0xb24f2b[_0x1a75('0x5e')]['name']);_0x33dc65[_0x1a75('0x29')][_0x1a75('0x72')]=_0x33dc65['channel'];_0x33dc65[_0x1a75('0x29')][_0x1a75('0x73')]=_0x1a75('0x5a');return respondWithRpcPromise(_0x1a75('0x74'),'EventManager',{'event':_0x1a75('0x75'),'message':_0x33dc65[_0x1a75('0x29')]},client9002)[_0x1a75('0x20')](function(){return _0x33dc65;});}return _0x33dc65;}return null;})[_0x1a75('0x20')](respondWithResult(_0x14f75f,null))[_0x1a75('0x2b')](handleError(_0x14f75f,null));};var interaction_log=require('../../config/logger')(_0x1a75('0x76'));exports['reject']=function(_0x5ca90d,_0x112048,_0x3794c3){var _0x24109a={'agent':{},'channel':_0x1a75('0x77')};if(_0x5ca90d[_0x1a75('0x58')]['id']){delete _0x5ca90d[_0x1a75('0x58')]['id'];}_0x5ca90d[_0x1a75('0x58')][_0x1a75('0x5d')]=_0x5ca90d[_0x1a75('0x58')][_0x1a75('0x5d')]||_0x5ca90d['user']['id'];_0x24109a[_0x1a75('0x5f')]['id']=_0x5ca90d[_0x1a75('0x58')][_0x1a75('0x5d')];return db['SmsMessage'][_0x1a75('0x56')]({'where':{'id':_0x5ca90d[_0x1a75('0x53')]['id'],'UserId':null}})[_0x1a75('0x20')](handleEntityNotFound(_0x112048,null))['then'](function(_0x253344){if(_0x253344){_0x24109a[_0x1a75('0x29')]=_0x253344[_0x1a75('0x61')]({'plain':!![]});return db['SmsInteraction'][_0x1a75('0x56')]({'where':{'id':_0x253344[_0x1a75('0x78')]}});}return null;})[_0x1a75('0x20')](handleEntityNotFound(_0x112048,null))[_0x1a75('0x20')](function(_0x96e41b){if(_0x96e41b){_0x24109a[_0x1a75('0x63')]=_0x96e41b[_0x1a75('0x61')]({'plain':!![]});interaction_log[_0x1a75('0x21')](_0x1a75('0x79'),_0x5ca90d[_0x1a75('0x5e')]['id'],_0x5ca90d['user'][_0x1a75('0x39')],_0x5ca90d[_0x1a75('0x5e')]['role'],_0x24109a[_0x1a75('0x63')]['id'],_0x5ca90d['body']?JSON[_0x1a75('0x26')](_0x5ca90d[_0x1a75('0x58')]):_0x1a75('0x64'));return respondWithRpcPromise(_0x1a75('0x7a'),_0x1a75('0x7b'),_0x24109a);}return null;})[_0x1a75('0x20')](function(_0x58dfae){var _0x417369=_0x1a75('0x67')+_0x58dfae[_0x1a75('0x29')][_0x1a75('0x7c')];return db[_0x1a75('0x68')][_0x1a75('0x3f')](_0x417369,{'type':db[_0x1a75('0x69')][_0x1a75('0x6a')][_0x1a75('0x6b')],'raw':!![]})['then'](function(_0x435ce9){return _0x435ce9;});})['then'](function(_0x2a8e51){if(_0x2a8e51){_0x24109a[_0x1a75('0x29')][_0x1a75('0x6c')]=_0x2a8e51[0x0];if(!_0x5ca90d[_0x1a75('0x58')][_0x1a75('0x5d')])return;return db[_0x1a75('0x6d')][_0x1a75('0x56')]({'where':{'id':_0x5ca90d[_0x1a75('0x58')]['UserId'],'role':'agent'},'attributes':['id',_0x1a75('0x39'),'fullname','email','internal'],'raw':!![]});}return null;})['then'](function(_0x586de7){if(!_0x586de7)return null;_0x24109a[_0x1a75('0x29')][_0x1a75('0x5f')]=_0x586de7;return _0x24109a;})[_0x1a75('0x20')](function(_0x28e8b7){if(_0x28e8b7){_0x28e8b7['message']['interface']=util[_0x1a75('0x5c')](_0x1a75('0x71'),_0x5ca90d[_0x1a75('0x5e')][_0x1a75('0x39')]);_0x28e8b7[_0x1a75('0x29')][_0x1a75('0x72')]=_0x24109a[_0x1a75('0x72')];_0x28e8b7[_0x1a75('0x29')][_0x1a75('0x73')]='reject';respondWithRpcPromise('EventManager',_0x1a75('0x74'),{'event':_0x1a75('0x7d'),'message':_0x28e8b7[_0x1a75('0x29')]},client9002);return _0x24109a;}return null;})[_0x1a75('0x20')](respondWithResult(_0x112048,null))[_0x1a75('0x2b')](handleError(_0x112048,null));};exports[_0x1a75('0x32')]=function(_0x4693db,_0xe763d7,_0x5848b8){if(_0x4693db[_0x1a75('0x58')]['id']){delete _0x4693db[_0x1a75('0x58')]['id'];}var _0x31b9a7;return db[_0x1a75('0x3c')][_0x1a75('0x56')]({'where':{'id':_0x4693db[_0x1a75('0x53')]['id']}})[_0x1a75('0x20')](handleEntityNotFound(_0xe763d7,null))['then'](function(_0x44fe4e){if(_0x44fe4e){_0x31b9a7=_0x44fe4e;return db['SmsAccount'][_0x1a75('0x56')]({'where':{'id':_0x44fe4e[_0x1a75('0x7e')]}});}})[_0x1a75('0x20')](handleEntityNotFound(_0xe763d7,null))['then'](function(_0x43780c){if(_0x43780c){logger[_0x1a75('0x24')](_0x1a75('0x25'),'status',_0x1a75('0x7f'),_0x43780c[_0x1a75('0x80')],util[_0x1a75('0x81')](_0x4693db['body'],{'showHidden':![],'depth':null}));switch(_0x43780c[_0x1a75('0x80')]){case'twilio':if(_0x4693db[_0x1a75('0x58')][_0x1a75('0x82')]&&_0x4693db[_0x1a75('0x58')][_0x1a75('0x82')]===_0x31b9a7[_0x1a75('0x83')]){return _0x31b9a7['update']({'read':!![]});}else{logger[_0x1a75('0x27')](_0x1a75('0x84'),_0x1a75('0x32'),_0x1a75('0x85'),util['inspect'](_0x4693db[_0x1a75('0x58')],{'showHidden':![],'depth':null}));}break;case'plivo':if(_0x4693db[_0x1a75('0x58')][_0x1a75('0x86')]&&_0x4693db[_0x1a75('0x58')][_0x1a75('0x86')]===_0x31b9a7['messageId']&&_[_0x1a75('0x87')]([_0x1a75('0x88'),_0x1a75('0x89')],_0x4693db[_0x1a75('0x58')]['Status'])>=0x0){return _0x31b9a7[_0x1a75('0x37')]({'read':!![]});}else{logger['error'](_0x1a75('0x84'),_0x1a75('0x32'),_0x1a75('0x8a'),util[_0x1a75('0x81')](_0x4693db[_0x1a75('0x58')],{'showHidden':![],'depth':null}));}break;case'infobip':var _0x588f11=_0x4693db[_0x1a75('0x58')]['results'][0x0];if(_0x588f11[_0x1a75('0x32')][_0x1a75('0x8b')]===_0x1a75('0x8c')){return _0x31b9a7[_0x1a75('0x37')]({'read':!![]});}else{logger['error'](_0x1a75('0x84'),'status',_0x1a75('0x8d'),util[_0x1a75('0x81')](_0x4693db['body'],{'showHidden':![],'depth':null}));}break;}return _0x31b9a7;}})[_0x1a75('0x20')](respondWithResult(_0xe763d7,null))['catch'](handleError(_0xe763d7,null));};
\ No newline at end of file
+var _0xed83=['includeAll','findAll','rows','catch','params','include','find','create','body','describe','sms','read','readAt','YYYY-MM-DD\x20HH:mm:ss','UserId','user','get','SmsInteraction','SmsInteractionId','isNil','read1stAt','format','[SMSMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','Sequelize','QueryTypes','contact','User','agent','fullname','email','internal','manual','interface','SIP/%s','channel','motionChannel','event','accept','EventManager','acceptmessage','reject','interaction','[SMSMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','SELECT','SmsAccount','SmsAccountId','SmsMessage,\x20%s,\x20%s,\x20%s','type','inspect','MessageSid','SmsAccount,\x20%s,\x20%s,\x20%s','plivo','MessageUUID','indexOf','sent','delivered','Status','plivio','infobip','results','groupName','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','ejs','fs-extra','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','jayson/promise','client','http','request','then','info','SmsMessage,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','apply','save','update','name','index','map','SmsMessage','rawAttributes','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','filters','pick','merge','where','options'];(function(_0x53ccf2,_0x13cb67){var _0x5a2964=function(_0x3b0514){while(--_0x3b0514){_0x53ccf2['push'](_0x53ccf2['shift']());}};_0x5a2964(++_0x13cb67);}(_0xed83,0x160));var _0x3ed8=function(_0x2dc735,_0x5b3890){_0x2dc735=_0x2dc735-0x0;var _0x1c3693=_0xed83[_0x2dc735];return _0x1c3693;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x3ed8('0x0'));var zipdir=require(_0x3ed8('0x1'));var jsonpatch=require(_0x3ed8('0x2'));var rp=require(_0x3ed8('0x3'));var moment=require(_0x3ed8('0x4'));var BPromise=require(_0x3ed8('0x5'));var Mustache=require(_0x3ed8('0x6'));var util=require(_0x3ed8('0x7'));var path=require(_0x3ed8('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x3ed8('0x9'));var fs=require('fs');var fs_extra=require(_0x3ed8('0xa'));var _=require('lodash');var squel=require(_0x3ed8('0xb'));var crypto=require(_0x3ed8('0xc'));var jsforce=require(_0x3ed8('0xd'));var deskjs=require(_0x3ed8('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x3ed8('0xf'));var Redis=require('ioredis');var authService=require(_0x3ed8('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x3ed8('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x3ed8('0x12'))(_0x3ed8('0x13'));var utils=require(_0x3ed8('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x3ed8('0x15'));var db=require(_0x3ed8('0x16'))['db'];config[_0x3ed8('0x17')]=_[_0x3ed8('0x18')](config['redis'],{'host':_0x3ed8('0x19'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x3ed8('0x17')]));require('./smsMessage.socket')['register'](socket);var jayson=require(_0x3ed8('0x1a'));var client=jayson[_0x3ed8('0x1b')][_0x3ed8('0x1c')]({'port':0x232c});var client9002=jayson[_0x3ed8('0x1b')][_0x3ed8('0x1c')]({'port':0x232a});function respondWithRpcPromise(_0x211045,_0x9861b2,_0x1aad6f,_0xec3388){return new BPromise(function(_0x4c6608,_0x18759e){var _0x1fcc9b=_0xec3388||client;return _0x1fcc9b[_0x3ed8('0x1d')](_0x211045,_0x1aad6f)[_0x3ed8('0x1e')](function(_0x3474ef){logger[_0x3ed8('0x1f')](_0x3ed8('0x20'),_0x9861b2,_0x3ed8('0x21'));logger[_0x3ed8('0x22')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x9861b2,_0x3ed8('0x21'),JSON[_0x3ed8('0x23')](_0x3474ef));if(_0x3474ef[_0x3ed8('0x24')]){if(_0x3474ef['error'][_0x3ed8('0x25')]===0x1f4){logger[_0x3ed8('0x24')]('SmsMessage,\x20%s,\x20%s',_0x9861b2,_0x3474ef[_0x3ed8('0x24')][_0x3ed8('0x26')]);return _0x18759e(_0x3474ef[_0x3ed8('0x24')][_0x3ed8('0x26')]);}logger[_0x3ed8('0x24')]('SmsMessage,\x20%s,\x20%s',_0x9861b2,_0x3474ef[_0x3ed8('0x24')][_0x3ed8('0x26')]);return _0x4c6608(_0x3474ef[_0x3ed8('0x24')]['message']);}else{logger['info'](_0x3ed8('0x20'),_0x9861b2,_0x3ed8('0x21'));_0x4c6608(_0x3474ef['result'][_0x3ed8('0x26')]);}})['catch'](function(_0x8f1aaa){logger[_0x3ed8('0x24')]('SmsMessage,\x20%s,\x20%s',_0x9861b2,_0x8f1aaa);_0x18759e(_0x8f1aaa);});});}function respondWithStatusCode(_0x4ba3ad,_0x2b97e7){_0x2b97e7=_0x2b97e7||0xcc;return function(_0x4a370d){if(_0x4a370d){return _0x4ba3ad[_0x3ed8('0x27')](_0x2b97e7);}return _0x4ba3ad[_0x3ed8('0x28')](_0x2b97e7)[_0x3ed8('0x29')]();};}function respondWithResult(_0x81ee76,_0x2b0a6f){_0x2b0a6f=_0x2b0a6f||0xc8;return function(_0x1fb7da){if(_0x1fb7da){return _0x81ee76['status'](_0x2b0a6f)[_0x3ed8('0x2a')](_0x1fb7da);}};}function respondWithFilteredResult(_0x1342c1,_0x13166e){return function(_0xbe10e6){if(_0xbe10e6){var _0x56bb68=typeof _0x13166e[_0x3ed8('0x2b')]==='undefined'&&typeof _0x13166e['limit']===_0x3ed8('0x2c');var _0x1ea140=_0xbe10e6[_0x3ed8('0x2d')];var _0x1e1a26=_0x56bb68?0x0:_0x13166e[_0x3ed8('0x2b')];var _0x3ce8b5=_0x56bb68?_0xbe10e6[_0x3ed8('0x2d')]:_0x13166e[_0x3ed8('0x2b')]+_0x13166e['limit'];var _0x5a9fc0;if(_0x3ce8b5>=_0x1ea140){_0x3ce8b5=_0x1ea140;_0x5a9fc0=0xc8;}else{_0x5a9fc0=0xce;}_0x1342c1[_0x3ed8('0x28')](_0x5a9fc0);return _0x1342c1[_0x3ed8('0x2e')](_0x3ed8('0x2f'),_0x1e1a26+'-'+_0x3ce8b5+'/'+_0x1ea140)['json'](_0xbe10e6);}return null;};}function patchUpdates(_0x16e98b){return function(_0x56e9a0){try{jsonpatch[_0x3ed8('0x30')](_0x56e9a0,_0x16e98b,!![]);}catch(_0x4157e4){return BPromise['reject'](_0x4157e4);}return _0x56e9a0[_0x3ed8('0x31')]();};}function saveUpdates(_0x4b556d,_0x44e320){return function(_0x40ae4d){if(_0x40ae4d){return _0x40ae4d[_0x3ed8('0x32')](_0x4b556d)[_0x3ed8('0x1e')](function(_0x31ad3d){return _0x31ad3d;});}return null;};}function removeEntity(_0x4a465e,_0x4bdf7a){return function(_0x204ed6){if(_0x204ed6){return _0x204ed6['destroy']()['then'](function(){_0x4a465e['status'](0xcc)[_0x3ed8('0x29')]();});}};}function handleEntityNotFound(_0x4a2059,_0x485d93){return function(_0x58dbe9){if(!_0x58dbe9){_0x4a2059[_0x3ed8('0x27')](0x194);}return _0x58dbe9;};}function handleError(_0x1c77b0,_0xe0f9f6){_0xe0f9f6=_0xe0f9f6||0x1f4;return function(_0xdc25ef){logger['error'](_0xdc25ef['stack']);if(_0xdc25ef[_0x3ed8('0x33')]){delete _0xdc25ef[_0x3ed8('0x33')];}_0x1c77b0['status'](_0xe0f9f6)['send'](_0xdc25ef);};}exports[_0x3ed8('0x34')]=function(_0x1982f9,_0x3a8246){var _0x4477dc={},_0x4251f={},_0x2efdc1={'count':0x0,'rows':[]};var _0xf62583=_[_0x3ed8('0x35')](db[_0x3ed8('0x36')][_0x3ed8('0x37')],function(_0x42be01){return{'name':_0x42be01['fieldName'],'type':_0x42be01['type'][_0x3ed8('0x38')]};});_0x4251f[_0x3ed8('0x39')]=_['map'](_0xf62583,_0x3ed8('0x33'));_0x4251f[_0x3ed8('0x3a')]=_[_0x3ed8('0x3b')](_0x1982f9['query']);_0x4251f['filters']=_[_0x3ed8('0x3c')](_0x4251f[_0x3ed8('0x39')],_0x4251f['query']);_0x4477dc[_0x3ed8('0x3d')]=_[_0x3ed8('0x3c')](_0x4251f[_0x3ed8('0x39')],qs[_0x3ed8('0x3e')](_0x1982f9['query']['fields']));_0x4477dc['attributes']=_0x4477dc[_0x3ed8('0x3d')][_0x3ed8('0x3f')]?_0x4477dc['attributes']:_0x4251f[_0x3ed8('0x39')];if(!_0x1982f9['query'][_0x3ed8('0x40')](_0x3ed8('0x41'))){_0x4477dc['limit']=qs[_0x3ed8('0x42')](_0x1982f9['query']['limit']);_0x4477dc[_0x3ed8('0x2b')]=qs['offset'](_0x1982f9['query'][_0x3ed8('0x2b')]);}_0x4477dc[_0x3ed8('0x43')]=qs[_0x3ed8('0x44')](_0x1982f9[_0x3ed8('0x3a')]['sort']);_0x4477dc['where']=qs[_0x3ed8('0x45')](_[_0x3ed8('0x46')](_0x1982f9[_0x3ed8('0x3a')],_0x4251f[_0x3ed8('0x45')]),_0xf62583);if(_0x1982f9[_0x3ed8('0x3a')]['filter']){_0x4477dc['where']=_[_0x3ed8('0x47')](_0x4477dc[_0x3ed8('0x48')],{'$or':_[_0x3ed8('0x35')](_0xf62583,function(_0x525644){if(_0x525644['type']!=='VIRTUAL'){var _0x1f3a77={};_0x1f3a77[_0x525644[_0x3ed8('0x33')]]={'$like':'%'+_0x1982f9['query']['filter']+'%'};return _0x1f3a77;}})});}_0x4477dc=_[_0x3ed8('0x47')]({},_0x4477dc,_0x1982f9[_0x3ed8('0x49')]);var _0x57c985={'where':_0x4477dc['where']};return db[_0x3ed8('0x36')]['count'](_0x57c985)[_0x3ed8('0x1e')](function(_0x3856d7){_0x2efdc1[_0x3ed8('0x2d')]=_0x3856d7;if(_0x1982f9[_0x3ed8('0x3a')][_0x3ed8('0x4a')]){_0x4477dc['include']=[{'all':!![]}];}return db[_0x3ed8('0x36')][_0x3ed8('0x4b')](_0x4477dc);})['then'](function(_0x31cb05){_0x2efdc1[_0x3ed8('0x4c')]=_0x31cb05;return _0x2efdc1;})[_0x3ed8('0x1e')](respondWithFilteredResult(_0x3a8246,_0x4477dc))[_0x3ed8('0x4d')](handleError(_0x3a8246,null));};exports['show']=function(_0xd9a018,_0x283a4c){var _0xa29ad7={'raw':!![],'where':{'id':_0xd9a018[_0x3ed8('0x4e')]['id']}},_0x2f44ee={};_0x2f44ee[_0x3ed8('0x39')]=_[_0x3ed8('0x3b')](db[_0x3ed8('0x36')]['rawAttributes']);_0x2f44ee[_0x3ed8('0x3a')]=_['keys'](_0xd9a018[_0x3ed8('0x3a')]);_0x2f44ee['filters']=_[_0x3ed8('0x3c')](_0x2f44ee[_0x3ed8('0x39')],_0x2f44ee[_0x3ed8('0x3a')]);_0xa29ad7[_0x3ed8('0x3d')]=_[_0x3ed8('0x3c')](_0x2f44ee[_0x3ed8('0x39')],qs[_0x3ed8('0x3e')](_0xd9a018[_0x3ed8('0x3a')]['fields']));_0xa29ad7['attributes']=_0xa29ad7['attributes'][_0x3ed8('0x3f')]?_0xa29ad7[_0x3ed8('0x3d')]:_0x2f44ee[_0x3ed8('0x39')];if(_0xd9a018[_0x3ed8('0x3a')]['includeAll']){_0xa29ad7[_0x3ed8('0x4f')]=[{'all':!![]}];}_0xa29ad7=_[_0x3ed8('0x47')]({},_0xa29ad7,_0xd9a018[_0x3ed8('0x49')]);return db[_0x3ed8('0x36')][_0x3ed8('0x50')](_0xa29ad7)[_0x3ed8('0x1e')](handleEntityNotFound(_0x283a4c,null))[_0x3ed8('0x1e')](respondWithResult(_0x283a4c,null))['catch'](handleError(_0x283a4c,null));};exports[_0x3ed8('0x51')]=function(_0x545029,_0x42d83d){return db['SmsMessage'][_0x3ed8('0x51')](_0x545029[_0x3ed8('0x52')],{})[_0x3ed8('0x1e')](respondWithResult(_0x42d83d,0xc9))[_0x3ed8('0x4d')](handleError(_0x42d83d,null));};exports['update']=function(_0x144642,_0xceae2){if(_0x144642[_0x3ed8('0x52')]['id']){delete _0x144642['body']['id'];}return db[_0x3ed8('0x36')][_0x3ed8('0x50')]({'where':{'id':_0x144642[_0x3ed8('0x4e')]['id']}})[_0x3ed8('0x1e')](handleEntityNotFound(_0xceae2,null))['then'](saveUpdates(_0x144642[_0x3ed8('0x52')],null))[_0x3ed8('0x1e')](respondWithResult(_0xceae2,null))[_0x3ed8('0x4d')](handleError(_0xceae2,null));};exports['destroy']=function(_0x2e7db5,_0x11ddb6){return db[_0x3ed8('0x36')]['find']({'where':{'id':_0x2e7db5[_0x3ed8('0x4e')]['id']}})['then'](handleEntityNotFound(_0x11ddb6,null))[_0x3ed8('0x1e')](removeEntity(_0x11ddb6,null))[_0x3ed8('0x4d')](handleError(_0x11ddb6,null));};exports[_0x3ed8('0x53')]=function(_0x58ac4f,_0x4c44ad){return db['SmsMessage'][_0x3ed8('0x53')]()['then'](respondWithResult(_0x4c44ad,null))['catch'](handleError(_0x4c44ad,null));};var interaction_log=require('../../config/logger')('sms-interactions');exports['accept']=function(_0x3ca313,_0x44f87,_0x4e6ae7){var _0x4305d4={'agent':{},'channel':_0x3ed8('0x54')};if(_0x3ca313[_0x3ed8('0x52')]['id']){delete _0x3ca313[_0x3ed8('0x52')]['id'];}_0x3ca313[_0x3ed8('0x52')][_0x3ed8('0x55')]=!![];_0x3ca313[_0x3ed8('0x52')][_0x3ed8('0x56')]=moment()['format'](_0x3ed8('0x57'));_0x3ca313['body'][_0x3ed8('0x58')]=_0x3ca313[_0x3ed8('0x52')]['UserId']||_0x3ca313[_0x3ed8('0x59')]['id'];_0x4305d4['agent']['id']=_0x3ca313[_0x3ed8('0x52')][_0x3ed8('0x58')];return db[_0x3ed8('0x36')]['find']({'where':{'id':_0x3ca313['params']['id'],'UserId':null}})[_0x3ed8('0x1e')](handleEntityNotFound(_0x44f87,null))['then'](saveUpdates(_0x3ca313[_0x3ed8('0x52')],null))[_0x3ed8('0x1e')](function(_0x5d08fd){if(_0x5d08fd){_0x4305d4[_0x3ed8('0x26')]=_0x5d08fd[_0x3ed8('0x5a')]({'plain':!![]});return db[_0x3ed8('0x5b')]['find']({'where':{'id':_0x5d08fd[_0x3ed8('0x5c')]}});}return null;})['then'](handleEntityNotFound(_0x44f87,null))[_0x3ed8('0x1e')](function(_0xcd3da9){if(_0xcd3da9){return _0xcd3da9[_0x3ed8('0x32')]({'UserId':_0x3ca313[_0x3ed8('0x52')][_0x3ed8('0x58')],'read1stAt':_[_0x3ed8('0x5d')](_0xcd3da9[_0x3ed8('0x5e')])?moment()[_0x3ed8('0x5f')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})['then'](function(_0x5a5197){if(_0x5a5197){_0x4305d4['interaction']=_0x5a5197[_0x3ed8('0x5a')]({'plain':!![]});interaction_log[_0x3ed8('0x1f')](_0x3ed8('0x60'),_0x3ca313['user']['id'],_0x3ca313[_0x3ed8('0x59')]['name'],_0x3ca313[_0x3ed8('0x59')][_0x3ed8('0x61')],_0x4305d4['interaction']['id'],_0x3ca313[_0x3ed8('0x52')]?JSON[_0x3ed8('0x23')](_0x3ca313[_0x3ed8('0x52')]):'null');return respondWithRpcPromise(_0x3ed8('0x62'),_0x3ed8('0x63'),_0x4305d4);}return null;})[_0x3ed8('0x1e')](function(_0x713502){var _0x22c991=_0x3ed8('0x64')+_0x713502[_0x3ed8('0x26')][_0x3ed8('0x65')];return db['sequelize'][_0x3ed8('0x3a')](_0x22c991,{'type':db[_0x3ed8('0x66')][_0x3ed8('0x67')]['SELECT'],'raw':!![]})[_0x3ed8('0x1e')](function(_0x351cb7){return _0x351cb7;});})[_0x3ed8('0x1e')](function(_0x511d1f){if(_0x511d1f){_0x4305d4[_0x3ed8('0x26')][_0x3ed8('0x68')]=_0x511d1f[0x0];if(!_0x3ca313[_0x3ed8('0x52')]['UserId'])return;return db[_0x3ed8('0x69')]['find']({'where':{'id':_0x3ca313[_0x3ed8('0x52')][_0x3ed8('0x58')],'role':_0x3ed8('0x6a')},'attributes':['id',_0x3ed8('0x33'),_0x3ed8('0x6b'),_0x3ed8('0x6c'),_0x3ed8('0x6d')],'raw':!![]});}return null;})['then'](function(_0x1b23e7){if(!_0x1b23e7)return null;_0x4305d4['message'][_0x3ed8('0x6a')]=_0x1b23e7;return _0x4305d4;})[_0x3ed8('0x1e')](function(_0x29efad){if(_0x29efad){if(_0x3ca313['body'][_0x3ed8('0x6e')]){_0x4305d4[_0x3ed8('0x26')][_0x3ed8('0x6f')]=util[_0x3ed8('0x5f')](_0x3ed8('0x70'),_0x3ca313[_0x3ed8('0x59')][_0x3ed8('0x33')]);_0x4305d4['message'][_0x3ed8('0x71')]=_0x4305d4[_0x3ed8('0x71')];_0x4305d4[_0x3ed8('0x26')][_0x3ed8('0x72')]=_0x4305d4['channel'];_0x4305d4[_0x3ed8('0x26')][_0x3ed8('0x73')]=_0x3ed8('0x74');return respondWithRpcPromise(_0x3ed8('0x75'),_0x3ed8('0x75'),{'event':_0x3ed8('0x76'),'message':_0x4305d4[_0x3ed8('0x26')]},client9002)[_0x3ed8('0x1e')](function(){return _0x4305d4;});}return _0x4305d4;}return null;})[_0x3ed8('0x1e')](respondWithResult(_0x44f87,null))[_0x3ed8('0x4d')](handleError(_0x44f87,null));};var interaction_log=require(_0x3ed8('0x12'))('sms-interactions');exports[_0x3ed8('0x77')]=function(_0x59fe8d,_0x2e04f0,_0x41c924){var _0x37032a={'agent':{},'channel':_0x3ed8('0x54')};if(_0x59fe8d['body']['id']){delete _0x59fe8d[_0x3ed8('0x52')]['id'];}_0x59fe8d[_0x3ed8('0x52')][_0x3ed8('0x58')]=_0x59fe8d[_0x3ed8('0x52')]['UserId']||_0x59fe8d[_0x3ed8('0x59')]['id'];_0x37032a[_0x3ed8('0x6a')]['id']=_0x59fe8d['body'][_0x3ed8('0x58')];return db[_0x3ed8('0x36')][_0x3ed8('0x50')]({'where':{'id':_0x59fe8d[_0x3ed8('0x4e')]['id'],'UserId':null}})[_0x3ed8('0x1e')](handleEntityNotFound(_0x2e04f0,null))[_0x3ed8('0x1e')](function(_0x5630c8){if(_0x5630c8){_0x37032a['message']=_0x5630c8[_0x3ed8('0x5a')]({'plain':!![]});return db['SmsInteraction'][_0x3ed8('0x50')]({'where':{'id':_0x5630c8['SmsInteractionId']}});}return null;})[_0x3ed8('0x1e')](handleEntityNotFound(_0x2e04f0,null))[_0x3ed8('0x1e')](function(_0x282291){if(_0x282291){_0x37032a[_0x3ed8('0x78')]=_0x282291['get']({'plain':!![]});interaction_log[_0x3ed8('0x1f')](_0x3ed8('0x79'),_0x59fe8d[_0x3ed8('0x59')]['id'],_0x59fe8d['user'][_0x3ed8('0x33')],_0x59fe8d[_0x3ed8('0x59')][_0x3ed8('0x61')],_0x37032a[_0x3ed8('0x78')]['id'],_0x59fe8d[_0x3ed8('0x52')]?JSON[_0x3ed8('0x23')](_0x59fe8d['body']):'null');return respondWithRpcPromise(_0x3ed8('0x7a'),_0x3ed8('0x7b'),_0x37032a);}return null;})[_0x3ed8('0x1e')](function(_0x5db393){var _0x8ed93d=_0x3ed8('0x64')+_0x5db393[_0x3ed8('0x26')][_0x3ed8('0x65')];return db['sequelize'][_0x3ed8('0x3a')](_0x8ed93d,{'type':db['Sequelize'][_0x3ed8('0x67')][_0x3ed8('0x7c')],'raw':!![]})[_0x3ed8('0x1e')](function(_0xffe226){return _0xffe226;});})[_0x3ed8('0x1e')](function(_0x3cd425){if(_0x3cd425){_0x37032a[_0x3ed8('0x26')]['contact']=_0x3cd425[0x0];if(!_0x59fe8d[_0x3ed8('0x52')]['UserId'])return;return db[_0x3ed8('0x69')]['find']({'where':{'id':_0x59fe8d['body'][_0x3ed8('0x58')],'role':_0x3ed8('0x6a')},'attributes':['id',_0x3ed8('0x33'),_0x3ed8('0x6b'),_0x3ed8('0x6c'),_0x3ed8('0x6d')],'raw':!![]});}return null;})[_0x3ed8('0x1e')](function(_0x4abacf){if(!_0x4abacf)return null;_0x37032a[_0x3ed8('0x26')][_0x3ed8('0x6a')]=_0x4abacf;return _0x37032a;})[_0x3ed8('0x1e')](function(_0x46313c){if(_0x46313c){_0x46313c[_0x3ed8('0x26')][_0x3ed8('0x6f')]=util[_0x3ed8('0x5f')](_0x3ed8('0x70'),_0x59fe8d[_0x3ed8('0x59')][_0x3ed8('0x33')]);_0x46313c[_0x3ed8('0x26')][_0x3ed8('0x71')]=_0x37032a[_0x3ed8('0x71')];_0x46313c['message'][_0x3ed8('0x72')]=_0x37032a['channel'];_0x46313c['message'][_0x3ed8('0x73')]=_0x3ed8('0x77');respondWithRpcPromise('EventManager',_0x3ed8('0x75'),{'event':'rejectmessage','message':_0x46313c[_0x3ed8('0x26')]},client9002);return _0x37032a;}return null;})[_0x3ed8('0x1e')](respondWithResult(_0x2e04f0,null))['catch'](handleError(_0x2e04f0,null));};exports['status']=function(_0x4239c4,_0x59a40b,_0xae6a9a){if(_0x4239c4['body']['id']){delete _0x4239c4[_0x3ed8('0x52')]['id'];}var _0x180ef1;return db[_0x3ed8('0x36')][_0x3ed8('0x50')]({'where':{'id':_0x4239c4[_0x3ed8('0x4e')]['id']}})[_0x3ed8('0x1e')](handleEntityNotFound(_0x59a40b,null))[_0x3ed8('0x1e')](function(_0x20b1ee){if(_0x20b1ee){_0x180ef1=_0x20b1ee;return db[_0x3ed8('0x7d')][_0x3ed8('0x50')]({'where':{'id':_0x20b1ee[_0x3ed8('0x7e')]}});}})['then'](handleEntityNotFound(_0x59a40b,null))[_0x3ed8('0x1e')](function(_0x519e34){if(_0x519e34){logger[_0x3ed8('0x22')](_0x3ed8('0x7f'),_0x3ed8('0x28'),'received\x20delivery\x20report\x20from',_0x519e34[_0x3ed8('0x80')],util[_0x3ed8('0x81')](_0x4239c4[_0x3ed8('0x52')],{'showHidden':![],'depth':null}));switch(_0x519e34[_0x3ed8('0x80')]){case'twilio':if(_0x4239c4[_0x3ed8('0x52')][_0x3ed8('0x82')]&&_0x4239c4[_0x3ed8('0x52')]['MessageSid']===_0x180ef1['messageId']){return _0x180ef1[_0x3ed8('0x32')]({'read':!![]});}else{logger[_0x3ed8('0x24')](_0x3ed8('0x83'),_0x3ed8('0x28'),'twilio',util[_0x3ed8('0x81')](_0x4239c4[_0x3ed8('0x52')],{'showHidden':![],'depth':null}));}break;case _0x3ed8('0x84'):if(_0x4239c4['body'][_0x3ed8('0x85')]&&_0x4239c4['body'][_0x3ed8('0x85')]===_0x180ef1['messageId']&&_[_0x3ed8('0x86')]([_0x3ed8('0x87'),_0x3ed8('0x88')],_0x4239c4[_0x3ed8('0x52')][_0x3ed8('0x89')])>=0x0){return _0x180ef1[_0x3ed8('0x32')]({'read':!![]});}else{logger['error'](_0x3ed8('0x83'),_0x3ed8('0x28'),_0x3ed8('0x8a'),util[_0x3ed8('0x81')](_0x4239c4['body'],{'showHidden':![],'depth':null}));}break;case _0x3ed8('0x8b'):var _0x207264=_0x4239c4[_0x3ed8('0x52')][_0x3ed8('0x8c')][0x0];if(_0x207264[_0x3ed8('0x28')][_0x3ed8('0x8d')]==='DELIVERED'){return _0x180ef1[_0x3ed8('0x32')]({'read':!![]});}else{logger[_0x3ed8('0x24')](_0x3ed8('0x83'),_0x3ed8('0x28'),_0x3ed8('0x8b'),util[_0x3ed8('0x81')](_0x4239c4[_0x3ed8('0x52')],{'showHidden':![],'depth':null}));}break;}return _0x180ef1;}})[_0x3ed8('0x1e')](respondWithResult(_0x59a40b,null))['catch'](handleError(_0x59a40b,null));};
\ No newline at end of file
index c8fa050..0091d4f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa279=['save','update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','SmsMessage','setMaxListeners'];(function(_0x2aed3,_0x5f9c05){var _0x160e00=function(_0x552b3a){while(--_0x552b3a){_0x2aed3['push'](_0x2aed3['shift']());}};_0x160e00(++_0x5f9c05);}(_0xa279,0xcd));var _0x9a27=function(_0x367dcc,_0x5ed097){_0x367dcc=_0x367dcc-0x0;var _0x2bb535=_0xa279[_0x367dcc];return _0x2bb535;};'use strict';var EventEmitter=require(_0x9a27('0x0'));var SmsMessage=require(_0x9a27('0x1'))['db'][_0x9a27('0x2')];var SmsMessageEvents=new EventEmitter();SmsMessageEvents[_0x9a27('0x3')](0x0);var events={'afterCreate':_0x9a27('0x4'),'afterUpdate':_0x9a27('0x5'),'afterDestroy':_0x9a27('0x6')};function emitEvent(_0x4c87e2){return function(_0x469486,_0xa0e5a0,_0x172b37){SmsMessageEvents[_0x9a27('0x7')](_0x4c87e2+':'+_0x469486['id'],_0x469486);SmsMessageEvents[_0x9a27('0x7')](_0x4c87e2,_0x469486);_0x172b37(null);};}for(var e in events){if(events[_0x9a27('0x8')](e)){var event=events[e];SmsMessage[_0x9a27('0x9')](e,emitEvent(event));}}module[_0x9a27('0xa')]=SmsMessageEvents;
\ No newline at end of file
+var _0x5ecb=['SmsMessage','setMaxListeners','update','hasOwnProperty','exports','events'];(function(_0x4bda1e,_0x32d0a0){var _0x37a59a=function(_0x4df83f){while(--_0x4df83f){_0x4bda1e['push'](_0x4bda1e['shift']());}};_0x37a59a(++_0x32d0a0);}(_0x5ecb,0x1b5));var _0xb5ec=function(_0x102e37,_0x14a181){_0x102e37=_0x102e37-0x0;var _0x35a07c=_0x5ecb[_0x102e37];return _0x35a07c;};'use strict';var EventEmitter=require(_0xb5ec('0x0'));var SmsMessage=require('../../mysqldb')['db'][_0xb5ec('0x1')];var SmsMessageEvents=new EventEmitter();SmsMessageEvents[_0xb5ec('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0xb5ec('0x3'),'afterDestroy':'remove'};function emitEvent(_0x36183b){return function(_0x371171,_0x1b9908,_0x12d26f){SmsMessageEvents['emit'](_0x36183b+':'+_0x371171['id'],_0x371171);SmsMessageEvents['emit'](_0x36183b,_0x371171);_0x12d26f(null);};}for(var e in events){if(events[_0xb5ec('0x4')](e)){var event=events[e];SmsMessage['hook'](e,emitEvent(event));}}module[_0xb5ec('0x5')]=SmsMessageEvents;
\ No newline at end of file
index 9779bd6..8b92365 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb8=['https://api.intelepeer.com/_rest/v4/app/sms/send','https://api.intelepeer.com/_rest/v4/app/sms/mdr','Bearer\x20','message','status','finally','utf8mb4','utf8mb4_unicode_ci','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./smsMessage.attributes','define','SmsMessage','sms_messages','messageId','models','get','direction','toLowerCase','out','secret','isNil','SmsInteractionId','update','createdAt','catch','error','SmsAccount','then','type','twilio','accountSid','authToken','phone','create','body','remote','/api/sms/messages/','/status?token=','token','sid','SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate','inspect','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','skebby','https://api.skebby.it/API/v1.0/REST/','password','smsMethod','sender','login?username=','&password=','GET','split','sms','POST','total_sent','internal_order_id','deliveryReport','read','Missing\x20parameters:\x20username,\x20password','https://smsapi.connectel.se/api/v2/send/','requestid','connectel','Missing\x20parameters:\x20authToken','username','xCALLY\x20Motion','%s:%s','format','Basic\x20%s','toString','base64','http_code','data','head','messages','message_id','clickSend','plivo','authId','senderString','https://api.plivo.com/v1/Account/%s/Message/','message_uuid','baseUrl','/auth/1/session','/sms/2/text/advanced','application/json','IBSSO\x20','infobip','Missing\x20parameters:\x20base_url','csc','crypto','text','keys','sort','apiKey','createHash','md5','digest','hex','signature=','clickatell','https://platform.clickatell.com/messages','uuid','apiMessageId','Missing\x20parameters:\x20apiKey','bandwidth','/messages','intelepeer'];(function(_0x1cd47d,_0x55bc75){var _0x29d52f=function(_0x37737a){while(--_0x37737a){_0x1cd47d['push'](_0x1cd47d['shift']());}};_0x29d52f(++_0x55bc75);}(_0xadb8,0x1d0));var _0x8adb=function(_0x5a7d41,_0x4447e2){_0x5a7d41=_0x5a7d41-0x0;var _0x98d8fa=_0xadb8[_0x5a7d41];return _0x98d8fa;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x8adb('0x0'))('api');var moment=require(_0x8adb('0x1'));var BPromise=require(_0x8adb('0x2'));var rp=require(_0x8adb('0x3'));var fs=require('fs');var path=require(_0x8adb('0x4'));var rimraf=require(_0x8adb('0x5'));var config=require(_0x8adb('0x6'));var attributes=require(_0x8adb('0x7'));module['exports']=function(_0x15bc63,_0x1a5f36){return _0x15bc63[_0x8adb('0x8')](_0x8adb('0x9'),attributes,{'tableName':_0x8adb('0xa'),'paranoid':![],'indexes':[{'name':_0x8adb('0xb'),'fields':[_0x8adb('0xb')]},{'name':'fti_sms_messages','fields':['body'],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x4695c6,_0x5be2f4,_0x4d986d){var _0x52f6c3=_0x15bc63[_0x8adb('0xc')];var _0x628c45=_0x4695c6[_0x8adb('0xd')]({'plain':!![]});if(_0x628c45[_0x8adb('0xe')][_0x8adb('0xf')]()==='in'||_0x628c45[_0x8adb('0xe')][_0x8adb('0xf')]()===_0x8adb('0x10')&&!_0x628c45[_0x8adb('0x11')]&&!_[_0x8adb('0x12')](_0x628c45['UserId'])){_0x52f6c3['SmsInteraction']['findOne']({'where':{'id':_0x628c45[_0x8adb('0x13')]}})['then'](function(_0xe9280c){if(_0xe9280c){_0xe9280c[_0x8adb('0x14')]({'lastMsgAt':_0x628c45[_0x8adb('0x15')],'lastMsgDirection':_0x628c45['direction'][_0x8adb('0xf')]()});}})[_0x8adb('0x16')](function(_0x1096fb){console[_0x8adb('0x17')](_0x1096fb);});}if(_0x628c45[_0x8adb('0xe')]===_0x8adb('0x10')&&!_0x628c45['secret']){var _0xc01052;_0x52f6c3[_0x8adb('0x18')]['find']({'where':{'id':_0x628c45['SmsAccountId']},'raw':!![]})[_0x8adb('0x19')](function(_0x30ef5a){_0xc01052=_0x30ef5a;if(_0xc01052&&_0xc01052[_0x8adb('0x1a')]){switch(_0xc01052[_0x8adb('0x1a')]){case _0x8adb('0x1b'):var _0x3c1720=require(_0x8adb('0x1b'));if(_0xc01052[_0x8adb('0x1c')]&&_0xc01052[_0x8adb('0x1d')]&&_0xc01052[_0x8adb('0x1e')]){var _0x36c62a=new _0x3c1720(_0xc01052[_0x8adb('0x1c')],_0xc01052['authToken']);_0x36c62a['messages'][_0x8adb('0x1f')]({'body':_0x628c45[_0x8adb('0x20')],'to':_0x628c45['phone'],'from':_0xc01052[_0x8adb('0x1e')],'statusCallback':_0xc01052[_0x8adb('0x21')]+_0x8adb('0x22')+_0x628c45['id']+_0x8adb('0x23')+_0xc01052[_0x8adb('0x24')]})[_0x8adb('0x19')](function(_0x542156){if(_0x542156[_0x8adb('0x25')]){return _0x4695c6[_0x8adb('0x14')]({'messageId':_0x542156[_0x8adb('0x25')]});}})['catch'](function(_0x5c8c18){logger[_0x8adb('0x17')](_0x8adb('0x26'),_0x8adb('0x27'),_0x8adb('0x1b'),util[_0x8adb('0x28')](_0x5c8c18,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x8adb('0x26'),_0x8adb('0x27'),_0x8adb('0x1b'),_0x8adb('0x29'));}break;case _0x8adb('0x2a'):var _0x4aca77=_0x8adb('0x2b');if(_0xc01052['username']&&_0xc01052[_0x8adb('0x2c')]){var _0x3b6c55={'recipient':[_0x628c45[_0x8adb('0x1e')]],'message':_0x628c45[_0x8adb('0x20')],'message_type':_0xc01052['smsMethod']};if(_0xc01052[_0x8adb('0x2d')]&&_0xc01052['smsMethod']!=='SI'){_0x3b6c55[_0x8adb('0x2e')]=_0xc01052[_0x8adb('0x1e')];}var _0x47e337={'url':_0x4aca77+_0x8adb('0x2f')+_0xc01052['username']+_0x8adb('0x30')+_0xc01052['password'],'method':_0x8adb('0x31')};rp(_0x47e337)['then'](function(_0x1d4962){var _0x1661a3=_0x1d4962[_0x8adb('0x32')](';');var _0x1cb97c={'user_key':_0x1661a3[0x0],'session_key':_0x1661a3[0x1]};_0x47e337={'url':_0x4aca77+_0x8adb('0x33'),'method':_0x8adb('0x34'),'headers':{'user_key':_0x1cb97c['user_key'],'Session_key':_0x1cb97c['session_key']},'json':!![],'body':_0x3b6c55};return rp(_0x47e337);})[_0x8adb('0x19')](function(_0x46fc72){if(_0x46fc72[_0x8adb('0x35')]>=0x1){var _0x77e99f={'messageId':_0x46fc72[_0x8adb('0x36')]};if(_0xc01052[_0x8adb('0x2d')]!=='GP'||!_0xc01052[_0x8adb('0x37')]){_0x77e99f[_0x8adb('0x38')]=!![];}return _0x4695c6[_0x8adb('0x14')](_0x77e99f);}else{return logger[_0x8adb('0x17')](_0x8adb('0x26'),_0x8adb('0x27'),_0x8adb('0x2a'),util['inspect'](_0x46fc72,{'showHidden':![],'depth':null}));}})[_0x8adb('0x16')](function(_0x420ae0){return logger['error'](_0x8adb('0x26'),'afterCreate',_0x8adb('0x2a'),util[_0x8adb('0x28')](_0x420ae0,{'showHidden':![],'depth':null}));});}else{logger[_0x8adb('0x17')](_0x8adb('0x26'),_0x8adb('0x27'),'skebby',_0x8adb('0x39'));}break;case'connectel':if(_0xc01052[_0x8adb('0x1d')]){var _0x1fcbd4={'recipient':_0x628c45['phone'],'message':_0x628c45[_0x8adb('0x20')],'sender':_0xc01052['senderString']||_0xc01052[_0x8adb('0x1e')],'authorization':_0xc01052['authToken']};var _0x5be2f4={'method':_0x8adb('0x34'),'uri':_0x8adb('0x3a'),'body':_0x1fcbd4,'json':!![]};rp(_0x5be2f4)['then'](function(_0x54aab3){var _0x182c4b={'messageId':_0x54aab3[_0x8adb('0x3b')]};if(!_0xc01052['deliveryReport']){_0x182c4b[_0x8adb('0x38')]=!![];}return _0x4695c6[_0x8adb('0x14')](_0x182c4b);})[_0x8adb('0x16')](function(_0x3872c9){logger[_0x8adb('0x17')](_0x8adb('0x26'),_0x8adb('0x27'),_0x8adb('0x3c'),util['inspect'](_0x3872c9,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x8adb('0x26'),_0x8adb('0x27'),_0x8adb('0x3c'),_0x8adb('0x3d'));}break;case'clicksend':if(_0xc01052[_0x8adb('0x3e')]&&_0xc01052['password']){var _0x1fcbd4={'messages':[{'source':_0x8adb('0x3f'),'to':_0x628c45[_0x8adb('0x1e')],'body':_0x628c45[_0x8adb('0x20')],'from':_0xc01052['senderString']||_0xc01052['phone']}]};var _0x1ae4a2=util['format'](_0x8adb('0x40'),_0xc01052['username'],_0xc01052['password']);var _0x5be2f4={'method':_0x8adb('0x34'),'uri':'https://rest.clicksend.com/v3/sms/send','body':_0x1fcbd4,'headers':{'Authorization':util[_0x8adb('0x41')](_0x8adb('0x42'),new Buffer(_0x1ae4a2)[_0x8adb('0x43')](_0x8adb('0x44')))},'json':!![]};rp(_0x5be2f4)[_0x8adb('0x19')](function(_0x54f741){if(_0x54f741[_0x8adb('0x45')]>=0xc8&&_0x54f741['http_code']<=0xce){if(_0x54f741[_0x8adb('0x46')]&&_0x54f741[_0x8adb('0x46')]['queued_count']>0x0){var _0x53953e=_[_0x8adb('0x47')](_0x54f741['data'][_0x8adb('0x48')]);var _0x1ade43={'messageId':_0x53953e[_0x8adb('0x49')]};if(!_0xc01052[_0x8adb('0x37')]){_0x1ade43['read']=!![];}return _0x4695c6[_0x8adb('0x14')](_0x1ade43);}else{logger[_0x8adb('0x17')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0x8adb('0x4a'),util[_0x8adb('0x28')](_0x54f741,{'showHidden':![],'depth':null}));}}else{logger[_0x8adb('0x17')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x8adb('0x27'),_0x8adb('0x4a'),util[_0x8adb('0x28')](_0x54f741,{'showHidden':![],'depth':null}));}})[_0x8adb('0x16')](function(_0x2f6031){logger[_0x8adb('0x17')](_0x8adb('0x26'),_0x8adb('0x27'),_0x8adb('0x4a'),util[_0x8adb('0x28')](_0x2f6031,{'showHidden':![],'depth':null}));});}else{logger[_0x8adb('0x17')](_0x8adb('0x26'),'afterCreate',_0x8adb('0x4a'),_0x8adb('0x39'));}break;case _0x8adb('0x4b'):if(_0xc01052[_0x8adb('0x4c')]&&_0xc01052[_0x8adb('0x1d')]){var _0x1fcbd4={'dst':_0x628c45[_0x8adb('0x1e')],'text':_0x628c45[_0x8adb('0x20')],'src':_0xc01052[_0x8adb('0x4d')]||_0xc01052[_0x8adb('0x1e')],'url':_0xc01052['remote']+_0x8adb('0x22')+_0x628c45['id']+_0x8adb('0x23')+_0xc01052[_0x8adb('0x24')]};var _0x1ae4a2=util[_0x8adb('0x41')](_0x8adb('0x40'),_0xc01052[_0x8adb('0x4c')],_0xc01052[_0x8adb('0x1d')]);var _0x5be2f4={'method':_0x8adb('0x34'),'uri':util[_0x8adb('0x41')](_0x8adb('0x4e'),_0xc01052[_0x8adb('0x4c')]),'body':_0x1fcbd4,'headers':{'Authorization':util['format'](_0x8adb('0x42'),new Buffer(_0x1ae4a2)[_0x8adb('0x43')](_0x8adb('0x44')))},'json':!![]};rp(_0x5be2f4)[_0x8adb('0x19')](function(_0x549a7a){var _0x415dc0={'messageId':_0x549a7a[_0x8adb('0x4f')][0x0]};return _0x4695c6[_0x8adb('0x14')](_0x415dc0);})[_0x8adb('0x16')](function(_0x3ede2b){logger[_0x8adb('0x17')](_0x8adb('0x26'),_0x8adb('0x27'),_0x8adb('0x4b'),util[_0x8adb('0x28')](_0x3ede2b,{'showHidden':![],'depth':null}));});}else{logger[_0x8adb('0x17')](_0x8adb('0x26'),'afterCreate',_0x8adb('0x4b'),'Missing\x20parameters:\x20authId,\x20authToken');}break;case'infobip':if(_0xc01052[_0x8adb('0x3e')]&&_0xc01052[_0x8adb('0x2c')]){if(_0xc01052['baseUrl']){var _0x272899={'method':_0x8adb('0x34'),'uri':_0xc01052[_0x8adb('0x50')]+_0x8adb('0x51'),'body':{'username':_0xc01052['username'],'password':_0xc01052[_0x8adb('0x2c')]},'json':!![]};return rp(_0x272899)['then'](function(_0x26d693){var _0x43b78a={'method':_0x8adb('0x34'),'uri':_0xc01052['baseUrl']+_0x8adb('0x52'),'body':{'messages':[{'from':_0xc01052['phone'],'destinations':[{'to':_0x628c45[_0x8adb('0x1e')]}],'text':_0x628c45[_0x8adb('0x20')],'notifyUrl':_0xc01052[_0x8adb('0x21')]+'/api/sms/messages/'+_0x628c45['id']+_0x8adb('0x23')+_0xc01052[_0x8adb('0x24')],'notifyContentType':_0x8adb('0x53'),'callbackData':_0xc01052[_0x8adb('0x1e')]+';'+_0x628c45['body']}]},'headers':{'Authorization':_0x8adb('0x54')+_0x26d693[_0x8adb('0x24')]},'json':!![]};return rp(_0x43b78a)['then'](function(_0x1f1961){if(_0x1f1961[_0x8adb('0x48')]){var _0x43730e={'messageId':_0x1f1961['messages'][0x0][_0x8adb('0xb')]};if(!_0xc01052[_0x8adb('0x37')]){_0x43730e[_0x8adb('0x38')]=!![];}return _0x4695c6[_0x8adb('0x14')](_0x43730e);}else{return logger['error'](_0x8adb('0x26'),'afterCreate','infobip',util['inspect'](_0x1f1961,{'showHidden':![],'depth':null}));}});})[_0x8adb('0x16')](function(_0x3ea3b9){return logger[_0x8adb('0x17')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x8adb('0x27'),'infobip',util[_0x8adb('0x28')](_0x3ea3b9,{'showHidden':![],'depth':null}));});}else{logger[_0x8adb('0x17')](_0x8adb('0x26'),_0x8adb('0x27'),_0x8adb('0x55'),_0x8adb('0x56'));}}else{logger[_0x8adb('0x17')](_0x8adb('0x26'),_0x8adb('0x27'),'infobip',_0x8adb('0x39'));}break;case _0x8adb('0x57'):var _0x4659ee=require(_0x8adb('0x58'));if(_0xc01052['apiKey']){var _0x30d2a7={};_0x30d2a7['login']=_0xc01052[_0x8adb('0x3e')];_0x30d2a7[_0x8adb('0x1e')]=_0x628c45[_0x8adb('0x1e')];_0x30d2a7[_0x8adb('0x2e')]=_0xc01052['phone'];_0x30d2a7[_0x8adb('0x59')]=_0x628c45[_0x8adb('0x20')];_0x30d2a7['timestamp']=+new Date();var _0x4f47fb='';var _0x504ab2='';var _0x366b92=Object[_0x8adb('0x5a')](_0x30d2a7);_0x366b92[_0x8adb('0x5b')]();for(var _0x551dd9=0x0;_0x551dd9<_0x366b92['length'];_0x551dd9++){if(_0x4f47fb!=''){_0x4f47fb+='&';}_0x4f47fb+=_0x366b92[_0x551dd9]+'='+encodeURIComponent(_0x30d2a7[_0x366b92[_0x551dd9]]);_0x504ab2+=_0x30d2a7[_0x366b92[_0x551dd9]];}_0x504ab2+=_0xc01052[_0x8adb('0x5c')];_0x504ab2=_0x4659ee[_0x8adb('0x5d')](_0x8adb('0x5e'))['update'](_0x504ab2)[_0x8adb('0x5f')](_0x8adb('0x60'));if(_0x4f47fb!==''){_0x4f47fb+='&';}_0x4f47fb+=_0x8adb('0x61')+_0x504ab2;var _0x47e337={'method':_0x8adb('0x31'),'uri':_0xc01052[_0x8adb('0x50')]+'/external/get/send.php?'+_0x4f47fb,'json':!![]};return rp(_0x47e337)[_0x8adb('0x19')](function(_0x53078f){var _0x5d17d4=Object[_0x8adb('0x5a')](_0x53078f);if(_0x53078f[_0x5d17d4[0x0]][_0x8adb('0x17')]&&parseInt(_0x53078f[_0x5d17d4[0x0]][_0x8adb('0x17')])===0x0){var _0x572cdc={'messageId':_0x53078f[_0x5d17d4[0x0]]['id_sms']};if(!_0xc01052[_0x8adb('0x37')]){_0x572cdc[_0x8adb('0x38')]=!![];}return _0x4695c6[_0x8adb('0x14')](_0x572cdc);}else{return logger[_0x8adb('0x17')](_0x8adb('0x26'),'afterCreate',_0x8adb('0x57'),util['inspect'](_0x53078f['error'],{'showHidden':![],'depth':null}));}})['catch'](function(_0x3e1149){return logger['error'](_0x8adb('0x26'),_0x8adb('0x27'),_0x8adb('0x57'),util['inspect'](_0x3e1149,{'showHidden':![],'depth':null}));});}else{logger[_0x8adb('0x17')](_0x8adb('0x26'),_0x8adb('0x27'),'csc','Missing\x20parameters:\x20apiKey');}break;case _0x8adb('0x62'):if(_0xc01052[_0x8adb('0x5c')]){var _0x1e623e={'method':_0x8adb('0x34'),'uri':_0x8adb('0x63'),'headers':{'Authorization':_0xc01052['apiKey']},'body':{'content':_0x628c45[_0x8adb('0x20')],'to':[_0x628c45[_0x8adb('0x1e')]],'from':_0xc01052[_0x8adb('0x1e')],'binary':![],'clientMessageId':_0x8adb('0x64'),'charset':'UTF-8'},'json':!![]};rp(_0x1e623e)[_0x8adb('0x19')](function(_0x3b897d){if(!_0x3b897d[_0x8adb('0x17')]){var _0x3353ae={'messageId':_0x3b897d[_0x8adb('0x48')][0x0][_0x8adb('0x65')]};if(!_0xc01052['deliveryReport']){_0x3353ae[_0x8adb('0x38')]=!![];}return _0x4695c6[_0x8adb('0x14')](_0x3353ae);}else{return logger['error'](_0x8adb('0x26'),_0x8adb('0x27'),_0x8adb('0x62'),util[_0x8adb('0x28')](_0x3b897d[_0x8adb('0x17')],{'showHidden':![],'depth':null}));}})['catch'](function(_0x15e8b){return logger[_0x8adb('0x17')](_0x8adb('0x26'),_0x8adb('0x27'),_0x8adb('0x62'),util['inspect'](_0x15e8b,{'showHidden':![],'depth':null}));});}else{logger[_0x8adb('0x17')](_0x8adb('0x26'),_0x8adb('0x27'),'clickatell',_0x8adb('0x66'));}break;case _0x8adb('0x67'):if(_0xc01052[_0x8adb('0x3e')]&&_0xc01052['password']){var _0x1ae4a2=util[_0x8adb('0x41')](_0x8adb('0x40'),_0xc01052[_0x8adb('0x3e')],_0xc01052[_0x8adb('0x2c')]);var _0x5be2f4={'method':_0x8adb('0x34'),'uri':'https://messaging.bandwidth.com/api/v2/users/'+_0xc01052['accountId']+_0x8adb('0x68'),'body':{'to':[_0x628c45[_0x8adb('0x1e')]],'text':_0x628c45[_0x8adb('0x20')],'from':_0xc01052[_0x8adb('0x1e')],'applicationId':_0xc01052['applicationId']},'headers':{'Authorization':util[_0x8adb('0x41')](_0x8adb('0x42'),new Buffer(_0x1ae4a2)[_0x8adb('0x43')](_0x8adb('0x44')))},'json':!![]};rp(_0x5be2f4)[_0x8adb('0x19')](function(_0x37bd3c){if(_0x37bd3c['id']){var _0x12089f={'messageId':_0x37bd3c['id']};return _0x4695c6[_0x8adb('0x14')](_0x12089f);}else{logger[_0x8adb('0x17')](_0x8adb('0x26'),_0x8adb('0x27'),'bandwidth',util[_0x8adb('0x28')](_0x37bd3c,{'showHidden':![],'depth':null}));}})[_0x8adb('0x16')](function(_0x323d88){logger[_0x8adb('0x17')](_0x8adb('0x26'),_0x8adb('0x27'),'bandwidth',util['inspect'](_0x323d88,{'showHidden':![],'depth':null}));});}else{logger[_0x8adb('0x17')](_0x8adb('0x26'),_0x8adb('0x27'),_0x8adb('0x67'),_0x8adb('0x39'));}break;case _0x8adb('0x69'):if(_0xc01052[_0x8adb('0x5c')]){var _0x449dc5={};var _0x47e337={'method':'POST','uri':_0x8adb('0x6a'),'headers':{'Authorization':'Bearer\x20'+_0xc01052['apiKey'],'Content-Type':'application/json'},'body':{'from':_0xc01052[_0x8adb('0x1e')],'to':_0x628c45['phone'],'text':_0x628c45[_0x8adb('0x20')]},'json':!![]};return rp(_0x47e337)[_0x8adb('0x19')](function(_0x4bc2b4){if(_0x4bc2b4['code']==0xca){_0x449dc5['message']=_0x4bc2b4;var _0x59d565={'method':_0x8adb('0x34'),'uri':_0x8adb('0x6b'),'headers':{'Authorization':_0x8adb('0x6c')+_0xc01052[_0x8adb('0x5c')],'Content-Type':_0x8adb('0x53')},'body':{'refid':_0x449dc5[_0x8adb('0x6d')]['refid']},'json':!![]};return rp(_0x59d565)[_0x8adb('0x19')](function(_0x266009){_0x449dc5[_0x8adb('0x6e')]=_0x266009;var _0x176cef={'messageId':_0x449dc5[_0x8adb('0x6d')]['refid'],'read':!![]};return _0x4695c6['update'](_0x176cef);});}else{return logger[_0x8adb('0x17')](_0x8adb('0x26'),'afterCreate','intelepeer',util[_0x8adb('0x28')](_0x4bc2b4,{'showHidden':![],'depth':null}));}})[_0x8adb('0x16')](function(_0x3413d7){return logger[_0x8adb('0x17')](_0x8adb('0x26'),_0x8adb('0x27'),'intelepeer',util[_0x8adb('0x28')](_0x3413d7,{'showHidden':![],'depth':null}));});}else{return logger[_0x8adb('0x17')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x8adb('0x27'),_0x8adb('0x69'),'Token\x20not\x20received');}break;}}})[_0x8adb('0x6f')](function(){_0x4d986d();});}else{_0x4d986d();}}},'charset':_0x8adb('0x70'),'collate':_0x8adb('0x71')});};
\ No newline at end of file
+var _0x8003=['path','../../config/environment','./smsMessage.attributes','define','sms_messages','messageId','fti_sms_messages','body','models','get','direction','toLowerCase','out','secret','isNil','UserId','SmsInteraction','SmsInteractionId','then','update','createdAt','catch','error','SmsAccount','find','SmsAccountId','type','twilio','accountSid','authToken','phone','messages','create','remote','/api/sms/messages/','/status?token=','token','sid','afterCreate','inspect','SmsMessage,\x20%s,\x20%s,\x20%s','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','deliveryReport','read','Missing\x20parameters:\x20username,\x20password','connectel','senderString','https://smsapi.connectel.se/api/v2/send/','requestid','clicksend','xCALLY\x20Motion','format','%s:%s','https://rest.clicksend.com/v3/sms/send','Basic\x20%s','toString','http_code','data','queued_count','message_id','clickSend','plivo','authId','https://api.plivo.com/v1/Account/%s/Message/','base64','message_uuid','Missing\x20parameters:\x20authId,\x20authToken','infobip','baseUrl','/auth/1/session','/sms/2/text/advanced','application/json','IBSSO\x20','crypto','apiKey','text','timestamp','keys','sort','length','md5','digest','hex','signature=','id_sms','csc','clickatell','https://platform.clickatell.com/messages','uuid','UTF-8','apiMessageId','bandwidth','https://messaging.bandwidth.com/api/v2/users/','accountId','applicationId','intelepeer','https://api.intelepeer.com/_rest/v4/app/sms/send','code','message','https://api.intelepeer.com/_rest/v4/app/sms/mdr','status','refid','Token\x20not\x20received','finally','utf8mb4','utf8mb4_unicode_ci','lodash','util','api','request-promise'];(function(_0x3e5086,_0x48f4a2){var _0xfeb102=function(_0x5a945f){while(--_0x5a945f){_0x3e5086['push'](_0x3e5086['shift']());}};_0xfeb102(++_0x48f4a2);}(_0x8003,0x78));var _0x3800=function(_0x5783f4,_0x4a9e0a){_0x5783f4=_0x5783f4-0x0;var _0x28e380=_0x8003[_0x5783f4];return _0x28e380;};'use strict';var _=require(_0x3800('0x0'));var util=require(_0x3800('0x1'));var logger=require('../../config/logger')(_0x3800('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x3800('0x3'));var fs=require('fs');var path=require(_0x3800('0x4'));var rimraf=require('rimraf');var config=require(_0x3800('0x5'));var attributes=require(_0x3800('0x6'));module['exports']=function(_0x583dd5,_0x346f03){return _0x583dd5[_0x3800('0x7')]('SmsMessage',attributes,{'tableName':_0x3800('0x8'),'paranoid':![],'indexes':[{'name':_0x3800('0x9'),'fields':['messageId']},{'name':_0x3800('0xa'),'fields':[_0x3800('0xb')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x3d6d9a,_0x4755ca,_0x53bed5){var _0x16e04c=_0x583dd5[_0x3800('0xc')];var _0x198ec9=_0x3d6d9a[_0x3800('0xd')]({'plain':!![]});if(_0x198ec9[_0x3800('0xe')][_0x3800('0xf')]()==='in'||_0x198ec9['direction'][_0x3800('0xf')]()===_0x3800('0x10')&&!_0x198ec9[_0x3800('0x11')]&&!_[_0x3800('0x12')](_0x198ec9[_0x3800('0x13')])&&!_[_0x3800('0x12')](_0x198ec9['SmsInteractionId'])){_0x16e04c[_0x3800('0x14')]['findOne']({'where':{'id':_0x198ec9[_0x3800('0x15')]}})[_0x3800('0x16')](function(_0x335ede){if(_0x335ede){_0x335ede[_0x3800('0x17')]({'lastMsgAt':_0x198ec9[_0x3800('0x18')],'lastMsgDirection':_0x198ec9[_0x3800('0xe')][_0x3800('0xf')]()});}})[_0x3800('0x19')](function(_0x1bef7f){console[_0x3800('0x1a')](_0x1bef7f);});}if(_0x198ec9[_0x3800('0xe')]==='out'&&!_0x198ec9[_0x3800('0x11')]){var _0x536d29;_0x16e04c[_0x3800('0x1b')][_0x3800('0x1c')]({'where':{'id':_0x198ec9[_0x3800('0x1d')]},'raw':!![]})[_0x3800('0x16')](function(_0x344ebf){_0x536d29=_0x344ebf;if(_0x536d29&&_0x536d29['type']){switch(_0x536d29[_0x3800('0x1e')]){case _0x3800('0x1f'):var _0x53d38b=require(_0x3800('0x1f'));if(_0x536d29[_0x3800('0x20')]&&_0x536d29[_0x3800('0x21')]&&_0x536d29[_0x3800('0x22')]){var _0x41e69b=new _0x53d38b(_0x536d29[_0x3800('0x20')],_0x536d29[_0x3800('0x21')]);_0x41e69b[_0x3800('0x23')][_0x3800('0x24')]({'body':_0x198ec9[_0x3800('0xb')],'to':_0x198ec9[_0x3800('0x22')],'from':_0x536d29[_0x3800('0x22')],'statusCallback':_0x536d29[_0x3800('0x25')]+_0x3800('0x26')+_0x198ec9['id']+_0x3800('0x27')+_0x536d29[_0x3800('0x28')]})[_0x3800('0x16')](function(_0x5e4df3){if(_0x5e4df3[_0x3800('0x29')]){return _0x3d6d9a[_0x3800('0x17')]({'messageId':_0x5e4df3[_0x3800('0x29')]});}})[_0x3800('0x19')](function(_0x16c0b0){logger[_0x3800('0x1a')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x3800('0x2a'),_0x3800('0x1f'),util[_0x3800('0x2b')](_0x16c0b0,{'showHidden':![],'depth':null}));});}else{logger[_0x3800('0x1a')](_0x3800('0x2c'),_0x3800('0x2a'),_0x3800('0x1f'),'Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken');}break;case _0x3800('0x2d'):var _0x370a94=_0x3800('0x2e');if(_0x536d29[_0x3800('0x2f')]&&_0x536d29[_0x3800('0x30')]){var _0x40a6a8={'recipient':[_0x198ec9[_0x3800('0x22')]],'message':_0x198ec9[_0x3800('0xb')],'message_type':_0x536d29[_0x3800('0x31')]};if(_0x536d29[_0x3800('0x31')]&&_0x536d29[_0x3800('0x31')]!=='SI'){_0x40a6a8[_0x3800('0x32')]=_0x536d29['phone'];}var _0x1c23be={'url':_0x370a94+_0x3800('0x33')+_0x536d29[_0x3800('0x2f')]+_0x3800('0x34')+_0x536d29[_0x3800('0x30')],'method':_0x3800('0x35')};rp(_0x1c23be)[_0x3800('0x16')](function(_0x1e7d94){var _0x49b634=_0x1e7d94[_0x3800('0x36')](';');var _0x48834b={'user_key':_0x49b634[0x0],'session_key':_0x49b634[0x1]};_0x1c23be={'url':_0x370a94+_0x3800('0x37'),'method':_0x3800('0x38'),'headers':{'user_key':_0x48834b[_0x3800('0x39')],'Session_key':_0x48834b[_0x3800('0x3a')]},'json':!![],'body':_0x40a6a8};return rp(_0x1c23be);})[_0x3800('0x16')](function(_0x384589){if(_0x384589[_0x3800('0x3b')]>=0x1){var _0x2992f4={'messageId':_0x384589['internal_order_id']};if(_0x536d29[_0x3800('0x31')]!=='GP'||!_0x536d29[_0x3800('0x3c')]){_0x2992f4[_0x3800('0x3d')]=!![];}return _0x3d6d9a['update'](_0x2992f4);}else{return logger[_0x3800('0x1a')](_0x3800('0x2c'),'afterCreate',_0x3800('0x2d'),util[_0x3800('0x2b')](_0x384589,{'showHidden':![],'depth':null}));}})['catch'](function(_0x20d77c){return logger[_0x3800('0x1a')](_0x3800('0x2c'),_0x3800('0x2a'),'skebby',util[_0x3800('0x2b')](_0x20d77c,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x3800('0x2c'),'afterCreate','skebby',_0x3800('0x3e'));}break;case _0x3800('0x3f'):if(_0x536d29['authToken']){var _0x4e787c={'recipient':_0x198ec9[_0x3800('0x22')],'message':_0x198ec9[_0x3800('0xb')],'sender':_0x536d29[_0x3800('0x40')]||_0x536d29['phone'],'authorization':_0x536d29[_0x3800('0x21')]};var _0x4755ca={'method':'POST','uri':_0x3800('0x41'),'body':_0x4e787c,'json':!![]};rp(_0x4755ca)[_0x3800('0x16')](function(_0x5d7cd0){var _0x9c9f46={'messageId':_0x5d7cd0[_0x3800('0x42')]};if(!_0x536d29[_0x3800('0x3c')]){_0x9c9f46[_0x3800('0x3d')]=!![];}return _0x3d6d9a[_0x3800('0x17')](_0x9c9f46);})[_0x3800('0x19')](function(_0x4a8bdb){logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0x3800('0x2a'),_0x3800('0x3f'),util['inspect'](_0x4a8bdb,{'showHidden':![],'depth':null}));});}else{logger[_0x3800('0x1a')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x3800('0x2a'),'connectel','Missing\x20parameters:\x20authToken');}break;case _0x3800('0x43'):if(_0x536d29[_0x3800('0x2f')]&&_0x536d29['password']){var _0x4e787c={'messages':[{'source':_0x3800('0x44'),'to':_0x198ec9[_0x3800('0x22')],'body':_0x198ec9['body'],'from':_0x536d29['senderString']||_0x536d29[_0x3800('0x22')]}]};var _0x244905=util[_0x3800('0x45')](_0x3800('0x46'),_0x536d29[_0x3800('0x2f')],_0x536d29[_0x3800('0x30')]);var _0x4755ca={'method':_0x3800('0x38'),'uri':_0x3800('0x47'),'body':_0x4e787c,'headers':{'Authorization':util['format'](_0x3800('0x48'),new Buffer(_0x244905)[_0x3800('0x49')]('base64'))},'json':!![]};rp(_0x4755ca)[_0x3800('0x16')](function(_0xfd0083){if(_0xfd0083[_0x3800('0x4a')]>=0xc8&&_0xfd0083[_0x3800('0x4a')]<=0xce){if(_0xfd0083['data']&&_0xfd0083[_0x3800('0x4b')][_0x3800('0x4c')]>0x0){var _0x219c57=_['head'](_0xfd0083[_0x3800('0x4b')][_0x3800('0x23')]);var _0x5123ee={'messageId':_0x219c57[_0x3800('0x4d')]};if(!_0x536d29['deliveryReport']){_0x5123ee[_0x3800('0x3d')]=!![];}return _0x3d6d9a['update'](_0x5123ee);}else{logger[_0x3800('0x1a')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x3800('0x2a'),_0x3800('0x4e'),util[_0x3800('0x2b')](_0xfd0083,{'showHidden':![],'depth':null}));}}else{logger['error'](_0x3800('0x2c'),'afterCreate',_0x3800('0x4e'),util['inspect'](_0xfd0083,{'showHidden':![],'depth':null}));}})[_0x3800('0x19')](function(_0x22a379){logger[_0x3800('0x1a')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x3800('0x2a'),_0x3800('0x4e'),util[_0x3800('0x2b')](_0x22a379,{'showHidden':![],'depth':null}));});}else{logger[_0x3800('0x1a')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x3800('0x2a'),_0x3800('0x4e'),_0x3800('0x3e'));}break;case _0x3800('0x4f'):if(_0x536d29['authId']&&_0x536d29['authToken']){var _0x4e787c={'dst':_0x198ec9['phone'],'text':_0x198ec9['body'],'src':_0x536d29[_0x3800('0x40')]||_0x536d29[_0x3800('0x22')],'url':_0x536d29['remote']+_0x3800('0x26')+_0x198ec9['id']+_0x3800('0x27')+_0x536d29[_0x3800('0x28')]};var _0x244905=util['format'](_0x3800('0x46'),_0x536d29[_0x3800('0x50')],_0x536d29[_0x3800('0x21')]);var _0x4755ca={'method':_0x3800('0x38'),'uri':util[_0x3800('0x45')](_0x3800('0x51'),_0x536d29[_0x3800('0x50')]),'body':_0x4e787c,'headers':{'Authorization':util[_0x3800('0x45')]('Basic\x20%s',new Buffer(_0x244905)[_0x3800('0x49')](_0x3800('0x52')))},'json':!![]};rp(_0x4755ca)[_0x3800('0x16')](function(_0x5f54de){var _0xa95a9={'messageId':_0x5f54de[_0x3800('0x53')][0x0]};return _0x3d6d9a[_0x3800('0x17')](_0xa95a9);})[_0x3800('0x19')](function(_0x3d56cf){logger[_0x3800('0x1a')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x3800('0x2a'),_0x3800('0x4f'),util['inspect'](_0x3d56cf,{'showHidden':![],'depth':null}));});}else{logger[_0x3800('0x1a')](_0x3800('0x2c'),'afterCreate','plivo',_0x3800('0x54'));}break;case _0x3800('0x55'):if(_0x536d29[_0x3800('0x2f')]&&_0x536d29[_0x3800('0x30')]){if(_0x536d29[_0x3800('0x56')]){var _0x68d1d9={'method':_0x3800('0x38'),'uri':_0x536d29[_0x3800('0x56')]+_0x3800('0x57'),'body':{'username':_0x536d29['username'],'password':_0x536d29[_0x3800('0x30')]},'json':!![]};return rp(_0x68d1d9)[_0x3800('0x16')](function(_0x3c36ea){var _0x1fb137={'method':_0x3800('0x38'),'uri':_0x536d29['baseUrl']+_0x3800('0x58'),'body':{'messages':[{'from':_0x536d29['phone'],'destinations':[{'to':_0x198ec9['phone']}],'text':_0x198ec9['body'],'notifyUrl':_0x536d29[_0x3800('0x25')]+_0x3800('0x26')+_0x198ec9['id']+_0x3800('0x27')+_0x536d29[_0x3800('0x28')],'notifyContentType':_0x3800('0x59'),'callbackData':_0x536d29[_0x3800('0x22')]+';'+_0x198ec9[_0x3800('0xb')]}]},'headers':{'Authorization':_0x3800('0x5a')+_0x3c36ea[_0x3800('0x28')]},'json':!![]};return rp(_0x1fb137)[_0x3800('0x16')](function(_0x304299){if(_0x304299[_0x3800('0x23')]){var _0x5e275a={'messageId':_0x304299[_0x3800('0x23')][0x0][_0x3800('0x9')]};if(!_0x536d29['deliveryReport']){_0x5e275a[_0x3800('0x3d')]=!![];}return _0x3d6d9a[_0x3800('0x17')](_0x5e275a);}else{return logger[_0x3800('0x1a')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x3800('0x2a'),_0x3800('0x55'),util[_0x3800('0x2b')](_0x304299,{'showHidden':![],'depth':null}));}});})['catch'](function(_0x3bb663){return logger[_0x3800('0x1a')](_0x3800('0x2c'),_0x3800('0x2a'),'infobip',util[_0x3800('0x2b')](_0x3bb663,{'showHidden':![],'depth':null}));});}else{logger[_0x3800('0x1a')](_0x3800('0x2c'),'afterCreate',_0x3800('0x55'),'Missing\x20parameters:\x20base_url');}}else{logger[_0x3800('0x1a')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate','infobip',_0x3800('0x3e'));}break;case'csc':var _0x46924d=require(_0x3800('0x5b'));if(_0x536d29[_0x3800('0x5c')]){var _0x4b30b8={};_0x4b30b8['login']=_0x536d29[_0x3800('0x2f')];_0x4b30b8[_0x3800('0x22')]=_0x198ec9[_0x3800('0x22')];_0x4b30b8['sender']=_0x536d29[_0x3800('0x22')];_0x4b30b8[_0x3800('0x5d')]=_0x198ec9['body'];_0x4b30b8[_0x3800('0x5e')]=+new Date();var _0x5a7f35='';var _0x1745a1='';var _0x59a4d8=Object[_0x3800('0x5f')](_0x4b30b8);_0x59a4d8[_0x3800('0x60')]();for(var _0x1b4f6f=0x0;_0x1b4f6f<_0x59a4d8[_0x3800('0x61')];_0x1b4f6f++){if(_0x5a7f35!=''){_0x5a7f35+='&';}_0x5a7f35+=_0x59a4d8[_0x1b4f6f]+'='+encodeURIComponent(_0x4b30b8[_0x59a4d8[_0x1b4f6f]]);_0x1745a1+=_0x4b30b8[_0x59a4d8[_0x1b4f6f]];}_0x1745a1+=_0x536d29['apiKey'];_0x1745a1=_0x46924d['createHash'](_0x3800('0x62'))[_0x3800('0x17')](_0x1745a1)[_0x3800('0x63')](_0x3800('0x64'));if(_0x5a7f35!==''){_0x5a7f35+='&';}_0x5a7f35+=_0x3800('0x65')+_0x1745a1;var _0x1c23be={'method':'GET','uri':_0x536d29[_0x3800('0x56')]+'/external/get/send.php?'+_0x5a7f35,'json':!![]};return rp(_0x1c23be)[_0x3800('0x16')](function(_0x4e2cd6){var _0x42ff48=Object[_0x3800('0x5f')](_0x4e2cd6);if(_0x4e2cd6[_0x42ff48[0x0]][_0x3800('0x1a')]&&parseInt(_0x4e2cd6[_0x42ff48[0x0]]['error'])===0x0){var _0x3e402a={'messageId':_0x4e2cd6[_0x42ff48[0x0]][_0x3800('0x66')]};if(!_0x536d29['deliveryReport']){_0x3e402a[_0x3800('0x3d')]=!![];}return _0x3d6d9a[_0x3800('0x17')](_0x3e402a);}else{return logger['error'](_0x3800('0x2c'),_0x3800('0x2a'),_0x3800('0x67'),util[_0x3800('0x2b')](_0x4e2cd6[_0x3800('0x1a')],{'showHidden':![],'depth':null}));}})[_0x3800('0x19')](function(_0x52e2fb){return logger[_0x3800('0x1a')](_0x3800('0x2c'),_0x3800('0x2a'),'csc',util['inspect'](_0x52e2fb,{'showHidden':![],'depth':null}));});}else{logger[_0x3800('0x1a')](_0x3800('0x2c'),_0x3800('0x2a'),_0x3800('0x67'),'Missing\x20parameters:\x20apiKey');}break;case _0x3800('0x68'):if(_0x536d29[_0x3800('0x5c')]){var _0x31410b={'method':_0x3800('0x38'),'uri':_0x3800('0x69'),'headers':{'Authorization':_0x536d29[_0x3800('0x5c')]},'body':{'content':_0x198ec9[_0x3800('0xb')],'to':[_0x198ec9[_0x3800('0x22')]],'from':_0x536d29[_0x3800('0x22')],'binary':![],'clientMessageId':_0x3800('0x6a'),'charset':_0x3800('0x6b')},'json':!![]};rp(_0x31410b)[_0x3800('0x16')](function(_0x5d909a){if(!_0x5d909a['error']){var _0x5a8424={'messageId':_0x5d909a['messages'][0x0][_0x3800('0x6c')]};if(!_0x536d29[_0x3800('0x3c')]){_0x5a8424[_0x3800('0x3d')]=!![];}return _0x3d6d9a[_0x3800('0x17')](_0x5a8424);}else{return logger[_0x3800('0x1a')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x3800('0x2a'),_0x3800('0x68'),util[_0x3800('0x2b')](_0x5d909a[_0x3800('0x1a')],{'showHidden':![],'depth':null}));}})[_0x3800('0x19')](function(_0x22a6d6){return logger[_0x3800('0x1a')](_0x3800('0x2c'),'afterCreate',_0x3800('0x68'),util['inspect'](_0x22a6d6,{'showHidden':![],'depth':null}));});}else{logger[_0x3800('0x1a')](_0x3800('0x2c'),_0x3800('0x2a'),_0x3800('0x68'),'Missing\x20parameters:\x20apiKey');}break;case _0x3800('0x6d'):if(_0x536d29[_0x3800('0x2f')]&&_0x536d29[_0x3800('0x30')]){var _0x244905=util[_0x3800('0x45')](_0x3800('0x46'),_0x536d29[_0x3800('0x2f')],_0x536d29[_0x3800('0x30')]);var _0x4755ca={'method':'POST','uri':_0x3800('0x6e')+_0x536d29[_0x3800('0x6f')]+'/messages','body':{'to':[_0x198ec9[_0x3800('0x22')]],'text':_0x198ec9[_0x3800('0xb')],'from':_0x536d29[_0x3800('0x22')],'applicationId':_0x536d29[_0x3800('0x70')]},'headers':{'Authorization':util[_0x3800('0x45')](_0x3800('0x48'),new Buffer(_0x244905)[_0x3800('0x49')](_0x3800('0x52')))},'json':!![]};rp(_0x4755ca)[_0x3800('0x16')](function(_0x3df79d){if(_0x3df79d['id']){var _0xe54e5b={'messageId':_0x3df79d['id']};return _0x3d6d9a[_0x3800('0x17')](_0xe54e5b);}else{logger[_0x3800('0x1a')](_0x3800('0x2c'),_0x3800('0x2a'),_0x3800('0x6d'),util[_0x3800('0x2b')](_0x3df79d,{'showHidden':![],'depth':null}));}})[_0x3800('0x19')](function(_0x319035){logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0x3800('0x6d'),util[_0x3800('0x2b')](_0x319035,{'showHidden':![],'depth':null}));});}else{logger[_0x3800('0x1a')](_0x3800('0x2c'),_0x3800('0x2a'),'bandwidth',_0x3800('0x3e'));}break;case _0x3800('0x71'):if(_0x536d29[_0x3800('0x5c')]){var _0x36bb25={};var _0x1c23be={'method':'POST','uri':_0x3800('0x72'),'headers':{'Authorization':'Bearer\x20'+_0x536d29[_0x3800('0x5c')],'Content-Type':'application/json'},'body':{'from':_0x536d29[_0x3800('0x22')],'to':_0x198ec9['phone'],'text':_0x198ec9[_0x3800('0xb')]},'json':!![]};return rp(_0x1c23be)[_0x3800('0x16')](function(_0x23dd32){if(_0x23dd32[_0x3800('0x73')]==0xca){_0x36bb25[_0x3800('0x74')]=_0x23dd32;var _0x236b08={'method':_0x3800('0x38'),'uri':_0x3800('0x75'),'headers':{'Authorization':'Bearer\x20'+_0x536d29[_0x3800('0x5c')],'Content-Type':_0x3800('0x59')},'body':{'refid':_0x36bb25[_0x3800('0x74')]['refid']},'json':!![]};return rp(_0x236b08)[_0x3800('0x16')](function(_0x2fbb45){_0x36bb25[_0x3800('0x76')]=_0x2fbb45;var _0x1b28c8={'messageId':_0x36bb25[_0x3800('0x74')][_0x3800('0x77')],'read':!![]};return _0x3d6d9a[_0x3800('0x17')](_0x1b28c8);});}else{return logger[_0x3800('0x1a')](_0x3800('0x2c'),_0x3800('0x2a'),_0x3800('0x71'),util[_0x3800('0x2b')](_0x23dd32,{'showHidden':![],'depth':null}));}})[_0x3800('0x19')](function(_0x2009b2){return logger[_0x3800('0x1a')](_0x3800('0x2c'),'afterCreate','intelepeer',util[_0x3800('0x2b')](_0x2009b2,{'showHidden':![],'depth':null}));});}else{return logger[_0x3800('0x1a')](_0x3800('0x2c'),_0x3800('0x2a'),_0x3800('0x71'),_0x3800('0x78'));}break;}}})[_0x3800('0x79')](function(){_0x53bed5();});}else{_0x53bed5();}}},'charset':_0x3800('0x7a'),'collate':_0x3800('0x7b')});};
\ No newline at end of file
index 80d9337..eb23f8c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2973=['SmsMessage,\x20%s,\x20%s,\x20%s','error','message','catch','CreateSmsMessage','SmsMessage','body','options','raw','stringify','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults','localhost','redis','./smsMessage.socket','register','request','then','info','SmsMessage,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x595e70,_0x1849ba){var _0xdb99ee=function(_0x56a156){while(--_0x56a156){_0x595e70['push'](_0x595e70['shift']());}};_0xdb99ee(++_0x1849ba);}(_0x2973,0x13c));var _0x3297=function(_0x3aaf78,_0x27aa1f){_0x3aaf78=_0x3aaf78-0x0;var _0x1c97b7=_0x2973[_0x3aaf78];return _0x1c97b7;};'use strict';var _=require(_0x3297('0x0'));var util=require(_0x3297('0x1'));var moment=require('moment');var BPromise=require(_0x3297('0x2'));var rs=require(_0x3297('0x3'));var fs=require('fs');var Redis=require(_0x3297('0x4'));var db=require(_0x3297('0x5'))['db'];var utils=require(_0x3297('0x6'));var logger=require(_0x3297('0x7'))(_0x3297('0x8'));var config=require(_0x3297('0x9'));var jayson=require(_0x3297('0xa'));var client=jayson[_0x3297('0xb')][_0x3297('0xc')]({'port':0x232a});config['redis']=_[_0x3297('0xd')](config['redis'],{'host':_0x3297('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x3297('0xf')]));require(_0x3297('0x10'))[_0x3297('0x11')](socket);function respondWithRpcPromise(_0x3ad49f,_0x4e7949,_0x3ade29){return new BPromise(function(_0x130211,_0x5701dd){return client[_0x3297('0x12')](_0x3ad49f,_0x3ade29)[_0x3297('0x13')](function(_0x27f650){logger[_0x3297('0x14')](_0x3297('0x15'),_0x4e7949,_0x3297('0x16'));logger[_0x3297('0x17')](_0x3297('0x18'),_0x4e7949,'request\x20sent',JSON['stringify'](_0x27f650));if(_0x27f650['error']){if(_0x27f650[_0x3297('0x19')]['code']===0x1f4){logger[_0x3297('0x19')]('SmsMessage,\x20%s,\x20%s',_0x4e7949,_0x27f650[_0x3297('0x19')][_0x3297('0x1a')]);return _0x5701dd(_0x27f650[_0x3297('0x19')][_0x3297('0x1a')]);}logger[_0x3297('0x19')](_0x3297('0x15'),_0x4e7949,_0x27f650[_0x3297('0x19')][_0x3297('0x1a')]);return _0x130211(_0x27f650[_0x3297('0x19')][_0x3297('0x1a')]);}else{logger[_0x3297('0x14')](_0x3297('0x15'),_0x4e7949,'request\x20sent');_0x130211(_0x27f650['result'][_0x3297('0x1a')]);}})[_0x3297('0x1b')](function(_0x56e9e4){logger['error']('SmsMessage,\x20%s,\x20%s',_0x4e7949,_0x56e9e4);_0x5701dd(_0x56e9e4);});});}exports[_0x3297('0x1c')]=function(_0x2a6224){var _0x3f85bb=this;return new Promise(function(_0x3d7323,_0xa2dd4f){return db[_0x3297('0x1d')]['create'](_0x2a6224[_0x3297('0x1e')],{'raw':_0x2a6224[_0x3297('0x1f')]?_0x2a6224[_0x3297('0x1f')][_0x3297('0x20')]===undefined?!![]:![]:!![]})[_0x3297('0x13')](function(_0x3e4b88){logger[_0x3297('0x14')]('CreateSmsMessage',_0x2a6224);logger[_0x3297('0x17')](_0x3297('0x1c'),_0x2a6224,JSON[_0x3297('0x21')](_0x3e4b88));_0x3d7323(_0x3e4b88);})[_0x3297('0x1b')](function(_0x37fbc1){logger[_0x3297('0x19')]('CreateSmsMessage',_0x37fbc1[_0x3297('0x1a')],_0x2a6224);_0xa2dd4f(_0x3f85bb[_0x3297('0x19')](0x1f4,_0x37fbc1[_0x3297('0x1a')]));});});};
\ No newline at end of file
+var _0x20c9=['body','options','raw','then','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','localhost','./smsMessage.socket','register','request','info','SmsMessage,\x20%s,\x20%s','debug','SmsMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','CreateSmsMessage','SmsMessage','create'];(function(_0x52a6e3,_0x4a73b4){var _0x8910d0=function(_0x57e5ef){while(--_0x57e5ef){_0x52a6e3['push'](_0x52a6e3['shift']());}};_0x8910d0(++_0x4a73b4);}(_0x20c9,0xd0));var _0x920c=function(_0x1dbaf7,_0x3d05b3){_0x1dbaf7=_0x1dbaf7-0x0;var _0x593f05=_0x20c9[_0x1dbaf7];return _0x593f05;};'use strict';var _=require('lodash');var util=require(_0x920c('0x0'));var moment=require(_0x920c('0x1'));var BPromise=require(_0x920c('0x2'));var rs=require(_0x920c('0x3'));var fs=require('fs');var Redis=require(_0x920c('0x4'));var db=require(_0x920c('0x5'))['db'];var utils=require(_0x920c('0x6'));var logger=require(_0x920c('0x7'))(_0x920c('0x8'));var config=require('../../config/environment');var jayson=require(_0x920c('0x9'));var client=jayson[_0x920c('0xa')][_0x920c('0xb')]({'port':0x232a});config[_0x920c('0xc')]=_['defaults'](config[_0x920c('0xc')],{'host':_0x920c('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x920c('0xc')]));require(_0x920c('0xe'))[_0x920c('0xf')](socket);function respondWithRpcPromise(_0x2236be,_0xd68fdd,_0xbaa707){return new BPromise(function(_0x1f46d8,_0x25b4e5){return client[_0x920c('0x10')](_0x2236be,_0xbaa707)['then'](function(_0x5e926d){logger[_0x920c('0x11')](_0x920c('0x12'),_0xd68fdd,'request\x20sent');logger[_0x920c('0x13')](_0x920c('0x14'),_0xd68fdd,_0x920c('0x15'),JSON[_0x920c('0x16')](_0x5e926d));if(_0x5e926d['error']){if(_0x5e926d[_0x920c('0x17')][_0x920c('0x18')]===0x1f4){logger[_0x920c('0x17')]('SmsMessage,\x20%s,\x20%s',_0xd68fdd,_0x5e926d['error'][_0x920c('0x19')]);return _0x25b4e5(_0x5e926d[_0x920c('0x17')][_0x920c('0x19')]);}logger['error'](_0x920c('0x12'),_0xd68fdd,_0x5e926d['error']['message']);return _0x1f46d8(_0x5e926d[_0x920c('0x17')][_0x920c('0x19')]);}else{logger['info'](_0x920c('0x12'),_0xd68fdd,_0x920c('0x15'));_0x1f46d8(_0x5e926d['result'][_0x920c('0x19')]);}})[_0x920c('0x1a')](function(_0x31e53e){logger[_0x920c('0x17')](_0x920c('0x12'),_0xd68fdd,_0x31e53e);_0x25b4e5(_0x31e53e);});});}exports[_0x920c('0x1b')]=function(_0x6b1ff){var _0x54c69c=this;return new Promise(function(_0x1f779f,_0x2b6c50){return db[_0x920c('0x1c')][_0x920c('0x1d')](_0x6b1ff[_0x920c('0x1e')],{'raw':_0x6b1ff[_0x920c('0x1f')]?_0x6b1ff[_0x920c('0x1f')][_0x920c('0x20')]===undefined?!![]:![]:!![]})[_0x920c('0x21')](function(_0x3449ef){logger['info']('CreateSmsMessage',_0x6b1ff);logger['debug'](_0x920c('0x1b'),_0x6b1ff,JSON['stringify'](_0x3449ef));_0x1f779f(_0x3449ef);})[_0x920c('0x1a')](function(_0xeec139){logger[_0x920c('0x17')](_0x920c('0x1b'),_0xeec139['message'],_0x6b1ff);_0x2b6c50(_0x54c69c[_0x920c('0x17')](0x1f4,_0xeec139[_0x920c('0x19')]));});});};
\ No newline at end of file
index 474c2e5..bba2fc3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f54=['emit','removeListener','register','smsMessage:','save','update'];(function(_0x2156b1,_0x1d6c41){var _0x22361c=function(_0x5e1473){while(--_0x5e1473){_0x2156b1['push'](_0x2156b1['shift']());}};_0x22361c(++_0x1d6c41);}(_0x5f54,0xb2));var _0x45f5=function(_0xddfb9d,_0x55ac5a){_0xddfb9d=_0xddfb9d-0x0;var _0x5f58be=_0x5f54[_0xddfb9d];return _0x5f58be;};'use strict';var SmsMessageEvents=require('./smsMessage.events');var events=[_0x45f5('0x0'),'remove',_0x45f5('0x1')];function createListener(_0x56e94c,_0x50f60d){return function(_0x50b0d5){_0x50f60d[_0x45f5('0x2')](_0x56e94c,_0x50b0d5);};}function removeListener(_0xdc166b,_0x402e89){return function(){SmsMessageEvents[_0x45f5('0x3')](_0xdc166b,_0x402e89);};}exports[_0x45f5('0x4')]=function(_0x24be56){for(var _0x44d25d=0x0,_0x33a42d=events['length'];_0x44d25d<_0x33a42d;_0x44d25d++){var _0x3954d2=events[_0x44d25d];var _0x36d540=createListener(_0x45f5('0x5')+_0x3954d2,_0x24be56);SmsMessageEvents['on'](_0x3954d2,_0x36d540);}};
\ No newline at end of file
+var _0x6a5c=['./smsMessage.events','save','remove','emit','removeListener','register','smsMessage:'];(function(_0x28495f,_0x3ccd0a){var _0x4b7155=function(_0x1b64fb){while(--_0x1b64fb){_0x28495f['push'](_0x28495f['shift']());}};_0x4b7155(++_0x3ccd0a);}(_0x6a5c,0xe0));var _0xc6a5=function(_0x347498,_0x332242){_0x347498=_0x347498-0x0;var _0x334f2b=_0x6a5c[_0x347498];return _0x334f2b;};'use strict';var SmsMessageEvents=require(_0xc6a5('0x0'));var events=[_0xc6a5('0x1'),_0xc6a5('0x2'),'update'];function createListener(_0x14ccc8,_0x5435bd){return function(_0x52426a){_0x5435bd[_0xc6a5('0x3')](_0x14ccc8,_0x52426a);};}function removeListener(_0x1b0015,_0x45e9b5){return function(){SmsMessageEvents[_0xc6a5('0x4')](_0x1b0015,_0x45e9b5);};}exports[_0xc6a5('0x5')]=function(_0x79f3b0){for(var _0xb6e2c5=0x0,_0x4c1696=events['length'];_0xb6e2c5<_0x4c1696;_0xb6e2c5++){var _0x5619ce=events[_0xb6e2c5];var _0x4099cc=createListener(_0xc6a5('0x6')+_0x5619ce,_0x79f3b0);SmsMessageEvents['on'](_0x5619ce,_0x4099cc);}};
\ No newline at end of file
index d44cdf9..361cebd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfbb2=['/:id/members','/:id/teams','getTeams','/:id/users','getAgents','post','addTeams','addAgents','put','/:id','update','delete','destroy','removeTeams','removeAgents','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./smsQueue.controller','get','isAuthenticated','/describe','describe','show'];(function(_0x3906bc,_0x225557){var _0x340a61=function(_0x39f8a1){while(--_0x39f8a1){_0x3906bc['push'](_0x3906bc['shift']());}};_0x340a61(++_0x225557);}(_0xfbb2,0xe9));var _0x2fbb=function(_0x293440,_0x357eff){_0x293440=_0x293440-0x0;var _0x596af9=_0xfbb2[_0x293440];return _0x596af9;};'use strict';var multer=require(_0x2fbb('0x0'));var util=require(_0x2fbb('0x1'));var path=require(_0x2fbb('0x2'));var timeout=require(_0x2fbb('0x3'));var express=require(_0x2fbb('0x4'));var router=express[_0x2fbb('0x5')]();var fs_extra=require(_0x2fbb('0x6'));var auth=require(_0x2fbb('0x7'));var interaction=require(_0x2fbb('0x8'));var config=require('../../config/environment');var controller=require(_0x2fbb('0x9'));router[_0x2fbb('0xa')]('/',auth[_0x2fbb('0xb')](),controller['index']);router['get'](_0x2fbb('0xc'),auth[_0x2fbb('0xb')](),controller[_0x2fbb('0xd')]);router[_0x2fbb('0xa')]('/:id',auth['isAuthenticated'](),controller[_0x2fbb('0xe')]);router['get'](_0x2fbb('0xf'),auth[_0x2fbb('0xb')](),controller['getMembers']);router[_0x2fbb('0xa')](_0x2fbb('0x10'),auth[_0x2fbb('0xb')](),controller[_0x2fbb('0x11')]);router[_0x2fbb('0xa')](_0x2fbb('0x12'),auth[_0x2fbb('0xb')](),controller[_0x2fbb('0x13')]);router[_0x2fbb('0x14')]('/',auth[_0x2fbb('0xb')](),controller['create']);router[_0x2fbb('0x14')](_0x2fbb('0x10'),auth[_0x2fbb('0xb')](),controller[_0x2fbb('0x15')]);router[_0x2fbb('0x14')](_0x2fbb('0x12'),auth[_0x2fbb('0xb')](),controller[_0x2fbb('0x16')]);router[_0x2fbb('0x17')](_0x2fbb('0x18'),auth[_0x2fbb('0xb')](),controller[_0x2fbb('0x19')]);router[_0x2fbb('0x1a')]('/:id',auth['isAuthenticated'](),controller[_0x2fbb('0x1b')]);router[_0x2fbb('0x1a')]('/:id/teams',auth[_0x2fbb('0xb')](),controller[_0x2fbb('0x1c')]);router[_0x2fbb('0x1a')]('/:id/users',auth[_0x2fbb('0xb')](),controller[_0x2fbb('0x1d')]);module[_0x2fbb('0x1e')]=router;
\ No newline at end of file
+var _0x24f5=['util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','isAuthenticated','get','/describe','describe','/:id','show','/:id/members','getTeams','/:id/users','getAgents','post','create','/:id/teams','addTeams','addAgents','put','update','delete','destroy','removeTeams','removeAgents','multer'];(function(_0x2652ef,_0x234230){var _0x2db578=function(_0x56b137){while(--_0x56b137){_0x2652ef['push'](_0x2652ef['shift']());}};_0x2db578(++_0x234230);}(_0x24f5,0x10d));var _0x524f=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x24f5[_0x17d9e3];return _0x14192d;};'use strict';var multer=require(_0x524f('0x0'));var util=require(_0x524f('0x1'));var path=require(_0x524f('0x2'));var timeout=require(_0x524f('0x3'));var express=require(_0x524f('0x4'));var router=express[_0x524f('0x5')]();var fs_extra=require(_0x524f('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x524f('0x7'));var config=require(_0x524f('0x8'));var controller=require('./smsQueue.controller');router['get']('/',auth[_0x524f('0x9')](),controller['index']);router[_0x524f('0xa')](_0x524f('0xb'),auth[_0x524f('0x9')](),controller[_0x524f('0xc')]);router['get'](_0x524f('0xd'),auth[_0x524f('0x9')](),controller[_0x524f('0xe')]);router[_0x524f('0xa')](_0x524f('0xf'),auth[_0x524f('0x9')](),controller['getMembers']);router[_0x524f('0xa')]('/:id/teams',auth[_0x524f('0x9')](),controller[_0x524f('0x10')]);router[_0x524f('0xa')](_0x524f('0x11'),auth[_0x524f('0x9')](),controller[_0x524f('0x12')]);router[_0x524f('0x13')]('/',auth[_0x524f('0x9')](),controller[_0x524f('0x14')]);router['post'](_0x524f('0x15'),auth[_0x524f('0x9')](),controller[_0x524f('0x16')]);router[_0x524f('0x13')]('/:id/users',auth[_0x524f('0x9')](),controller[_0x524f('0x17')]);router[_0x524f('0x18')]('/:id',auth[_0x524f('0x9')](),controller[_0x524f('0x19')]);router[_0x524f('0x1a')](_0x524f('0xd'),auth[_0x524f('0x9')](),controller[_0x524f('0x1b')]);router[_0x524f('0x1a')](_0x524f('0x15'),auth[_0x524f('0x9')](),controller[_0x524f('0x1c')]);router[_0x524f('0x1a')](_0x524f('0x11'),auth['isAuthenticated'](),controller[_0x524f('0x1d')]);module['exports']=router;
\ No newline at end of file
index 414124e..bae4898 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x98cb=['exports','STRING','name','INTEGER','ENUM','beepall','roundrobin','sequelize'];(function(_0x54c277,_0xd94cfc){var _0x22b9e0=function(_0x4703ab){while(--_0x4703ab){_0x54c277['push'](_0x54c277['shift']());}};_0x22b9e0(++_0xd94cfc);}(_0x98cb,0x87));var _0xb98c=function(_0x137fae,_0x21121f){_0x137fae=_0x137fae-0x0;var _0x1c7452=_0x98cb[_0x137fae];return _0x1c7452;};'use strict';var Sequelize=require(_0xb98c('0x0'));module[_0xb98c('0x1')]={'name':{'type':Sequelize[_0xb98c('0x2')],'unique':_0xb98c('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xb98c('0x2')]},'timeout':{'type':Sequelize[_0xb98c('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xb98c('0x5')]('rrmemory',_0xb98c('0x6'),_0xb98c('0x7'))}};
\ No newline at end of file
+var _0xbf95=['name','ENUM','roundrobin'];(function(_0x1d515f,_0x32e427){var _0x1a0b96=function(_0x28bf6d){while(--_0x28bf6d){_0x1d515f['push'](_0x1d515f['shift']());}};_0x1a0b96(++_0x32e427);}(_0xbf95,0x14d));var _0x5bf9=function(_0xd1f7e8,_0x369a18){_0xd1f7e8=_0xd1f7e8-0x0;var _0x280edd=_0xbf95[_0xd1f7e8];return _0x280edd;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize['STRING'],'unique':_0x5bf9('0x0'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x5bf9('0x1')]('rrmemory','beepall',_0x5bf9('0x2'))}};
\ No newline at end of file
index 3e7f27a..b4e2bd7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf401=['send','index','map','SmsQueue','rawAttributes','fieldName','type','key','model','keys','filters','intersection','fields','query','attributes','length','hasOwnProperty','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','catch','show','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','find','params','describe','getMembers','findOne','UserSmsQueue','nolimit','order','SmsQueueId','findAll','User','findAndCountAll','UserId','agent','updatedAt','rows','format','%s/%s','SIP','smsPause','createdAt','getTeams','Team','addTeams','ids','Agents','online','sequelize','transaction','each','findOrCreate','emit','removeTeams','tq.TeamId','from','join','SmsQueueId\x20=\x20?','push','toString','QueryTypes','SELECT','every','includes','all','union','compact','value','isEmpty','removeAgents','forEach','addAgents','omit','spread','userSmsQueue:save','userSmsQueue:remove','getAgents','rimraf','zip-dir','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/license/util','../../mysqldb','redis','defaults','./smsQueue.socket','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','then','destroy','SmsQueues','UserProfileResource','stack','name'];(function(_0x5b1f02,_0x2ae95d){var _0x51381b=function(_0x3a266b){while(--_0x3a266b){_0x5b1f02['push'](_0x5b1f02['shift']());}};_0x51381b(++_0x2ae95d);}(_0xf401,0xe3));var _0x1f40=function(_0x3c9d62,_0x34edcd){_0x3c9d62=_0x3c9d62-0x0;var _0x5e9629=_0xf401[_0x3c9d62];return _0x5e9629;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x1f40('0x0'));var zipdir=require(_0x1f40('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x1f40('0x2'));var BPromise=require(_0x1f40('0x3'));var Mustache=require('mustache');var util=require(_0x1f40('0x4'));var path=require(_0x1f40('0x5'));var sox=require(_0x1f40('0x6'));var csv=require(_0x1f40('0x7'));var ejs=require(_0x1f40('0x8'));var fs=require('fs');var fs_extra=require(_0x1f40('0x9'));var _=require('lodash');var squel=require(_0x1f40('0xa'));var crypto=require('crypto');var jsforce=require(_0x1f40('0xb'));var deskjs=require(_0x1f40('0xc'));var toCsv=require(_0x1f40('0x7'));var querystring=require(_0x1f40('0xd'));var Papa=require(_0x1f40('0xe'));var Redis=require(_0x1f40('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x1f40('0x10'));var hardwareService=require(_0x1f40('0x11'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x1f40('0x12'));var db=require(_0x1f40('0x13'))['db'];config[_0x1f40('0x14')]=_[_0x1f40('0x15')](config[_0x1f40('0x14')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x1f40('0x16'))['register'](socket);function respondWithStatusCode(_0x23299c,_0x251629){_0x251629=_0x251629||0xcc;return function(_0x1651a8){if(_0x1651a8){return _0x23299c[_0x1f40('0x17')](_0x251629);}return _0x23299c[_0x1f40('0x18')](_0x251629)[_0x1f40('0x19')]();};}function respondWithResult(_0x355e4c,_0x570841){_0x570841=_0x570841||0xc8;return function(_0x4b8d68){if(_0x4b8d68){return _0x355e4c[_0x1f40('0x18')](_0x570841)[_0x1f40('0x1a')](_0x4b8d68);}};}function respondWithFilteredResult(_0x35a17c,_0x2c23d0){return function(_0x47f2cc){if(_0x47f2cc){var _0x457a9e=typeof _0x2c23d0['offset']===_0x1f40('0x1b')&&typeof _0x2c23d0[_0x1f40('0x1c')]==='undefined';var _0x23627c=_0x47f2cc[_0x1f40('0x1d')];var _0x444c02=_0x457a9e?0x0:_0x2c23d0[_0x1f40('0x1e')];var _0x2dc3d3=_0x457a9e?_0x47f2cc[_0x1f40('0x1d')]:_0x2c23d0['offset']+_0x2c23d0[_0x1f40('0x1c')];var _0x824f;if(_0x2dc3d3>=_0x23627c){_0x2dc3d3=_0x23627c;_0x824f=0xc8;}else{_0x824f=0xce;}_0x35a17c[_0x1f40('0x18')](_0x824f);return _0x35a17c[_0x1f40('0x1f')](_0x1f40('0x20'),_0x444c02+'-'+_0x2dc3d3+'/'+_0x23627c)[_0x1f40('0x1a')](_0x47f2cc);}return null;};}function patchUpdates(_0x5ab106){return function(_0x4186b0){try{jsonpatch[_0x1f40('0x21')](_0x4186b0,_0x5ab106,!![]);}catch(_0x433727){return BPromise[_0x1f40('0x22')](_0x433727);}return _0x4186b0[_0x1f40('0x23')]();};}function saveUpdates(_0x26c541,_0x5f2601){return function(_0x4b83c1){if(_0x4b83c1){return _0x4b83c1[_0x1f40('0x24')](_0x26c541)[_0x1f40('0x25')](function(_0x58e8d4){return _0x58e8d4;});}return null;};}function removeEntity(_0x4a56d1,_0x36d8b8){return function(_0x3b5a41){if(_0x3b5a41){return _0x3b5a41[_0x1f40('0x26')]()['then'](function(){var _0xabb84e=_0x3b5a41['get']({'plain':!![]});var _0x31d3a0=_0x1f40('0x27');return db[_0x1f40('0x28')][_0x1f40('0x26')]({'where':{'type':_0x31d3a0,'resourceId':_0xabb84e['id']}})[_0x1f40('0x25')](function(){return _0x3b5a41;});})[_0x1f40('0x25')](function(){_0x4a56d1[_0x1f40('0x18')](0xcc)[_0x1f40('0x19')]();});}};}function handleEntityNotFound(_0x858a25,_0xd45619){return function(_0x2bae8f){if(!_0x2bae8f){_0x858a25[_0x1f40('0x17')](0x194);}return _0x2bae8f;};}function handleError(_0x152f05,_0x2e94b6){_0x2e94b6=_0x2e94b6||0x1f4;return function(_0x5373df){logger['error'](_0x5373df[_0x1f40('0x29')]);if(_0x5373df[_0x1f40('0x2a')]){delete _0x5373df[_0x1f40('0x2a')];}_0x152f05['status'](_0x2e94b6)[_0x1f40('0x2b')](_0x5373df);};}exports[_0x1f40('0x2c')]=function(_0x51d7a7,_0x573dce){var _0x35b5c3={},_0x41e3ae={},_0x6b09da={'count':0x0,'rows':[]};var _0x514777=_[_0x1f40('0x2d')](db[_0x1f40('0x2e')][_0x1f40('0x2f')],function(_0x5e6b44){return{'name':_0x5e6b44[_0x1f40('0x30')],'type':_0x5e6b44[_0x1f40('0x31')][_0x1f40('0x32')]};});_0x41e3ae[_0x1f40('0x33')]=_[_0x1f40('0x2d')](_0x514777,_0x1f40('0x2a'));_0x41e3ae['query']=_[_0x1f40('0x34')](_0x51d7a7['query']);_0x41e3ae[_0x1f40('0x35')]=_[_0x1f40('0x36')](_0x41e3ae[_0x1f40('0x33')],_0x41e3ae['query']);_0x35b5c3['attributes']=_[_0x1f40('0x36')](_0x41e3ae[_0x1f40('0x33')],qs[_0x1f40('0x37')](_0x51d7a7[_0x1f40('0x38')][_0x1f40('0x37')]));_0x35b5c3[_0x1f40('0x39')]=_0x35b5c3[_0x1f40('0x39')][_0x1f40('0x3a')]?_0x35b5c3['attributes']:_0x41e3ae[_0x1f40('0x33')];if(!_0x51d7a7[_0x1f40('0x38')][_0x1f40('0x3b')]('nolimit')){_0x35b5c3[_0x1f40('0x1c')]=qs['limit'](_0x51d7a7[_0x1f40('0x38')]['limit']);_0x35b5c3[_0x1f40('0x1e')]=qs[_0x1f40('0x1e')](_0x51d7a7['query'][_0x1f40('0x1e')]);}_0x35b5c3['order']=qs[_0x1f40('0x3c')](_0x51d7a7[_0x1f40('0x38')][_0x1f40('0x3c')]);_0x35b5c3[_0x1f40('0x3d')]=qs[_0x1f40('0x35')](_[_0x1f40('0x3e')](_0x51d7a7[_0x1f40('0x38')],_0x41e3ae[_0x1f40('0x35')]),_0x514777);if(_0x51d7a7[_0x1f40('0x38')][_0x1f40('0x3f')]){_0x35b5c3[_0x1f40('0x3d')]=_[_0x1f40('0x40')](_0x35b5c3['where'],{'$or':_[_0x1f40('0x2d')](_0x514777,function(_0x20d56a){if(_0x20d56a[_0x1f40('0x31')]!==_0x1f40('0x41')){var _0x312ab7={};_0x312ab7[_0x20d56a[_0x1f40('0x2a')]]={'$like':'%'+_0x51d7a7[_0x1f40('0x38')]['filter']+'%'};return _0x312ab7;}})});}_0x35b5c3=_[_0x1f40('0x40')]({},_0x35b5c3,_0x51d7a7[_0x1f40('0x42')]);var _0x804f2b={'where':_0x35b5c3[_0x1f40('0x3d')]};return db[_0x1f40('0x2e')]['count'](_0x804f2b)[_0x1f40('0x25')](function(_0x424c86){_0x6b09da[_0x1f40('0x1d')]=_0x424c86;if(_0x51d7a7['query'][_0x1f40('0x43')]){_0x35b5c3[_0x1f40('0x44')]=[{'all':!![]}];}return db[_0x1f40('0x2e')]['findAll'](_0x35b5c3);})[_0x1f40('0x25')](function(_0x486573){_0x6b09da['rows']=_0x486573;return _0x6b09da;})[_0x1f40('0x25')](respondWithFilteredResult(_0x573dce,_0x35b5c3))[_0x1f40('0x45')](handleError(_0x573dce,null));};exports[_0x1f40('0x46')]=function(_0x52a490,_0x17e035){var _0x550d13={'raw':!![],'where':{'id':_0x52a490['params']['id']}},_0x64a0e5={};_0x64a0e5[_0x1f40('0x33')]=_[_0x1f40('0x34')](db['SmsQueue'][_0x1f40('0x2f')]);_0x64a0e5['query']=_[_0x1f40('0x34')](_0x52a490[_0x1f40('0x38')]);_0x64a0e5[_0x1f40('0x35')]=_[_0x1f40('0x36')](_0x64a0e5[_0x1f40('0x33')],_0x64a0e5[_0x1f40('0x38')]);_0x550d13[_0x1f40('0x39')]=_[_0x1f40('0x36')](_0x64a0e5[_0x1f40('0x33')],qs['fields'](_0x52a490[_0x1f40('0x38')][_0x1f40('0x37')]));_0x550d13[_0x1f40('0x39')]=_0x550d13[_0x1f40('0x39')]['length']?_0x550d13[_0x1f40('0x39')]:_0x64a0e5[_0x1f40('0x33')];if(_0x52a490[_0x1f40('0x38')][_0x1f40('0x43')]){_0x550d13[_0x1f40('0x44')]=[{'all':!![]}];}_0x550d13=_[_0x1f40('0x40')]({},_0x550d13,_0x52a490[_0x1f40('0x42')]);return db[_0x1f40('0x2e')]['find'](_0x550d13)[_0x1f40('0x25')](handleEntityNotFound(_0x17e035,null))['then'](respondWithResult(_0x17e035,null))[_0x1f40('0x45')](handleError(_0x17e035,null));};exports[_0x1f40('0x47')]=function(_0x43556a,_0x2b3626){return db[_0x1f40('0x2e')][_0x1f40('0x47')](_0x43556a[_0x1f40('0x48')],{})[_0x1f40('0x25')](function(_0x222826){var _0x3171ae=_0x43556a[_0x1f40('0x49')][_0x1f40('0x4a')]({'plain':!![]});if(!_0x3171ae)throw new Error(_0x1f40('0x4b'));if(_0x3171ae[_0x1f40('0x4c')]==='user'){var _0x48892d=_0x222826[_0x1f40('0x4a')]({'plain':!![]});var _0x35832e=_0x1f40('0x27');return db[_0x1f40('0x4d')]['find']({'where':{'name':_0x35832e,'userProfileId':_0x3171ae[_0x1f40('0x4e')]},'raw':!![]})[_0x1f40('0x25')](function(_0xeeda3d){if(_0xeeda3d&&_0xeeda3d['autoAssociation']===0x0){return db['UserProfileResource'][_0x1f40('0x47')]({'name':_0x48892d[_0x1f40('0x2a')],'resourceId':_0x48892d['id'],'type':_0xeeda3d[_0x1f40('0x2a')],'sectionId':_0xeeda3d['id']},{})['then'](function(){return _0x222826;});}else{return _0x222826;}})['catch'](function(_0x215715){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x215715);throw _0x215715;});}return _0x222826;})['then'](respondWithResult(_0x2b3626,0xc9))[_0x1f40('0x45')](handleError(_0x2b3626,null));};exports[_0x1f40('0x24')]=function(_0x25a06f,_0x205a5a){if(_0x25a06f[_0x1f40('0x48')]['id']){delete _0x25a06f['body']['id'];}return db[_0x1f40('0x2e')][_0x1f40('0x4f')]({'where':{'id':_0x25a06f[_0x1f40('0x50')]['id']}})[_0x1f40('0x25')](handleEntityNotFound(_0x205a5a,null))[_0x1f40('0x25')](saveUpdates(_0x25a06f['body'],null))['then'](respondWithResult(_0x205a5a,null))['catch'](handleError(_0x205a5a,null));};exports[_0x1f40('0x26')]=function(_0x50667e,_0x166436){return db['SmsQueue'][_0x1f40('0x4f')]({'where':{'id':_0x50667e['params']['id']}})[_0x1f40('0x25')](handleEntityNotFound(_0x166436,null))['then'](removeEntity(_0x166436,null))[_0x1f40('0x45')](handleError(_0x166436,null));};exports[_0x1f40('0x51')]=function(_0x55cefd,_0x3ffb47){return db['SmsQueue'][_0x1f40('0x51')]()['then'](respondWithResult(_0x3ffb47,null))[_0x1f40('0x45')](handleError(_0x3ffb47,null));};exports[_0x1f40('0x52')]=function(_0x498744,_0x229235,_0x27d763){var _0x11e426={'raw':!![],'where':{}},_0x250bac={},_0x290757;return db['SmsQueue'][_0x1f40('0x53')]({'where':{'id':_0x498744[_0x1f40('0x50')]['id']}})[_0x1f40('0x25')](handleEntityNotFound(_0x229235,null))[_0x1f40('0x25')](function(_0x1dda45){if(_0x1dda45){_0x290757=_0x1dda45['get']({'plain':!![]});_0x250bac[_0x1f40('0x33')]=_[_0x1f40('0x34')](db[_0x1f40('0x54')]['rawAttributes']);_0x250bac[_0x1f40('0x38')]=_[_0x1f40('0x34')](_0x498744[_0x1f40('0x38')]);_0x250bac[_0x1f40('0x35')]=_['intersection'](_0x250bac[_0x1f40('0x33')],_0x250bac['query']);_0x11e426[_0x1f40('0x39')]=_['intersection'](_0x250bac[_0x1f40('0x33')],qs[_0x1f40('0x37')](_0x498744[_0x1f40('0x38')][_0x1f40('0x37')]));_0x11e426[_0x1f40('0x39')]=_0x11e426['attributes'][_0x1f40('0x3a')]?_0x11e426['attributes']:_0x250bac[_0x1f40('0x33')];if(!_0x498744[_0x1f40('0x38')][_0x1f40('0x3b')](_0x1f40('0x55'))){_0x11e426[_0x1f40('0x1c')]=qs[_0x1f40('0x1c')](_0x498744[_0x1f40('0x38')][_0x1f40('0x1c')]);_0x11e426[_0x1f40('0x1e')]=qs['offset'](_0x498744['query'][_0x1f40('0x1e')]);}_0x11e426[_0x1f40('0x56')]=qs[_0x1f40('0x3c')](_0x498744[_0x1f40('0x38')][_0x1f40('0x3c')]);_0x11e426[_0x1f40('0x3d')]=qs[_0x1f40('0x35')](_[_0x1f40('0x3e')](_0x498744['query'],_0x250bac[_0x1f40('0x35')]));_0x11e426[_0x1f40('0x3d')][_0x1f40('0x57')]=_0x1dda45['id'];if(_0x498744[_0x1f40('0x38')][_0x1f40('0x3f')]){_0x11e426[_0x1f40('0x3d')]=_[_0x1f40('0x40')](_0x11e426[_0x1f40('0x3d')],{'$or':_[_0x1f40('0x2d')](_0x11e426['attributes'],function(_0x34940b){var _0x15ebe9={};_0x15ebe9[_0x34940b]={'$like':'%'+_0x498744[_0x1f40('0x38')][_0x1f40('0x3f')]+'%'};return _0x15ebe9;})});}_0x11e426=_[_0x1f40('0x40')]({},_0x11e426,_0x498744[_0x1f40('0x42')]);return db[_0x1f40('0x54')][_0x1f40('0x58')](_0x11e426);}})[_0x1f40('0x25')](function(_0x339992){if(_0x339992){return db[_0x1f40('0x59')][_0x1f40('0x5a')]({'where':{'id':_[_0x1f40('0x2d')](_0x339992,_0x1f40('0x5b')),'role':_0x1f40('0x5c')},'attributes':['id','name','smsPause',_0x1f40('0x5d'),'createdAt']});}})[_0x1f40('0x25')](function(_0x53fde8){if(_0x53fde8){return{'count':_0x53fde8['count'],'rows':_['map'](_0x53fde8[_0x1f40('0x5e')],function(_0x2bb4a0){return{'membername':_0x2bb4a0[_0x1f40('0x2a')],'UserId':_0x2bb4a0['id'],'queue_name':_0x290757[_0x1f40('0x2a')],'SmsQueueId':_0x290757['id'],'interface':util[_0x1f40('0x5f')](_0x1f40('0x60'),_0x1f40('0x61'),_0x2bb4a0[_0x1f40('0x2a')]),'penalty':0x0,'paused':_0x2bb4a0[_0x1f40('0x62')],'createdAt':_0x2bb4a0[_0x1f40('0x63')],'updatedAt':_0x2bb4a0[_0x1f40('0x5d')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x1f40('0x25')](respondWithFilteredResult(_0x229235,_0x11e426))[_0x1f40('0x45')](handleError(_0x229235,null));};exports[_0x1f40('0x64')]=function(_0x549ac7,_0x6bbd57,_0x109b07){var _0x718ee6={};var _0x133d3b={};var _0x1adb32;var _0x5c208a;return db[_0x1f40('0x2e')][_0x1f40('0x53')]({'where':{'id':_0x549ac7[_0x1f40('0x50')]['id']}})['then'](handleEntityNotFound(_0x6bbd57,null))[_0x1f40('0x25')](function(_0xf2a583){if(_0xf2a583){_0x1adb32=_0xf2a583;_0x133d3b[_0x1f40('0x33')]=_[_0x1f40('0x34')](db[_0x1f40('0x65')][_0x1f40('0x2f')]);_0x133d3b['query']=_[_0x1f40('0x34')](_0x549ac7['query']);_0x133d3b[_0x1f40('0x35')]=_[_0x1f40('0x36')](_0x133d3b[_0x1f40('0x33')],_0x133d3b['query']);_0x718ee6[_0x1f40('0x39')]=_[_0x1f40('0x36')](_0x133d3b['model'],qs[_0x1f40('0x37')](_0x549ac7['query'][_0x1f40('0x37')]));_0x718ee6['attributes']=_0x718ee6['attributes']['length']?_0x718ee6['attributes']:_0x133d3b['model'];_0x718ee6['order']=qs[_0x1f40('0x3c')](_0x549ac7[_0x1f40('0x38')][_0x1f40('0x3c')]);_0x718ee6[_0x1f40('0x3d')]=qs['filters'](_[_0x1f40('0x3e')](_0x549ac7[_0x1f40('0x38')],_0x133d3b[_0x1f40('0x35')]));if(_0x549ac7[_0x1f40('0x38')][_0x1f40('0x3f')]){_0x718ee6[_0x1f40('0x3d')]=_['merge'](_0x718ee6['where'],{'$or':_[_0x1f40('0x2d')](_0x718ee6[_0x1f40('0x39')],function(_0x2354f3){var _0x167bb0={};_0x167bb0[_0x2354f3]={'$like':'%'+_0x549ac7[_0x1f40('0x38')]['filter']+'%'};return _0x167bb0;})});}_0x718ee6=_[_0x1f40('0x40')]({},_0x718ee6,_0x549ac7[_0x1f40('0x42')]);return _0x1adb32[_0x1f40('0x64')](_0x718ee6);}})['then'](function(_0x395b1c){if(_0x395b1c){_0x5c208a=_0x395b1c[_0x1f40('0x3a')];if(!_0x549ac7['query']['hasOwnProperty'](_0x1f40('0x55'))){_0x718ee6[_0x1f40('0x1c')]=qs[_0x1f40('0x1c')](_0x549ac7[_0x1f40('0x38')][_0x1f40('0x1c')]);_0x718ee6[_0x1f40('0x1e')]=qs[_0x1f40('0x1e')](_0x549ac7['query'][_0x1f40('0x1e')]);}return _0x1adb32['getTeams'](_0x718ee6);}})[_0x1f40('0x25')](function(_0x56cc57){if(_0x56cc57){return _0x56cc57?{'count':_0x5c208a,'rows':_0x56cc57}:null;}})[_0x1f40('0x25')](respondWithResult(_0x6bbd57,null))[_0x1f40('0x45')](handleError(_0x6bbd57,null));};exports[_0x1f40('0x66')]=function(_0x32ca09,_0x278ee3,_0x3cf3bf){var _0x398503=_0x32ca09[_0x1f40('0x48')][_0x1f40('0x67')];return db[_0x1f40('0x65')][_0x1f40('0x58')]({'where':{'id':_0x398503},'attributes':['id'],'include':[{'model':db[_0x1f40('0x59')],'as':_0x1f40('0x68'),'attributes':['id','name',_0x1f40('0x69'),'voicePause','interface'],'raw':!![]}]})[_0x1f40('0x25')](function(_0xcafce2){if(_0xcafce2){var _0x57c8f1=_['flatMap'](_0xcafce2,function(_0x8a02d2){var _0x109e42=_0x8a02d2[_0x1f40('0x4a')]({'plain':!![]});return _0x109e42[_0x1f40('0x68')];});return db['SmsQueue']['find']({'where':{'id':_0x32ca09[_0x1f40('0x50')]['id']}})[_0x1f40('0x25')](function(_0x31d35e){return db[_0x1f40('0x6a')][_0x1f40('0x6b')](function(_0x54b7f2){return _0x31d35e[_0x1f40('0x66')](_0x398503,{'transaction':_0x54b7f2})[_0x1f40('0x25')](function(){return BPromise[_0x1f40('0x6c')](_0x57c8f1,function(_0x39bd5c){return db['UserSmsQueue'][_0x1f40('0x6d')]({'where':{'UserId':_0x39bd5c['id'],'SmsQueueId':_0x32ca09[_0x1f40('0x50')]['id']},'transaction':_0x54b7f2});});})[_0x1f40('0x25')](function(){_0x57c8f1['forEach'](function(_0x5db5c5){socket[_0x1f40('0x6e')]('userSmsQueue:save',{'UserId':_0x5db5c5['id'],'SmsQueueId':_0x31d35e['id']});});});});});}})['then'](respondWithStatusCode(_0x278ee3,null))[_0x1f40('0x45')](handleError(_0x278ee3,null));};exports[_0x1f40('0x6f')]=function(_0x4c07ae,_0x3ce56d,_0x422479){return db[_0x1f40('0x65')][_0x1f40('0x58')]({'where':{'id':_0x4c07ae[_0x1f40('0x38')][_0x1f40('0x67')]},'attributes':['id'],'include':[{'model':db[_0x1f40('0x59')],'as':_0x1f40('0x68'),'attributes':['id'],'raw':!![]}]})[_0x1f40('0x25')](handleEntityNotFound(_0x3ce56d,null))[_0x1f40('0x25')](function(_0x585237){var _0x300c6a=_[_0x1f40('0x2d')](_0x585237,'id');var _0x194321=[];var _0x4a192c=[];var _0x5dd1cd=squel['select']();_0x5dd1cd['field'](_0x1f40('0x70'))[_0x1f40('0x71')]('team_has_sms_queues','tq')[_0x1f40('0x72')]('user_has_teams','ut','ut.TeamId\x20=\x20tq.TeamId')[_0x1f40('0x3d')](_0x1f40('0x73'),_0x4c07ae[_0x1f40('0x50')]['id']);for(var _0x36cfd4=0x0;_0x36cfd4<_0x585237[_0x1f40('0x3a')];_0x36cfd4+=0x1){let _0x3a10aa=_0x585237[_0x36cfd4];for(var _0xb500a=0x0;_0xb500a<_0x3a10aa[_0x1f40('0x68')][_0x1f40('0x3a')];_0xb500a+=0x1){let _0x14496c=_0x3a10aa['Agents'][_0xb500a];var _0x457e93=_0x5dd1cd['clone']();_0x457e93[_0x1f40('0x3d')]('ut.UserId\x20=\x20?',_0x14496c['id']);_0x4a192c[_0x1f40('0x74')](db[_0x1f40('0x6a')]['query'](_0x457e93[_0x1f40('0x75')](),{'type':db[_0x1f40('0x6a')][_0x1f40('0x76')][_0x1f40('0x77')]})['then'](function(_0x19fab8){if(_0x19fab8['length']===0x1){return _0x14496c['id'];}else{var _0x4acf88=_[_0x1f40('0x78')](_[_0x1f40('0x2d')](_0x19fab8,'TeamId'),function(_0x43697a){return _[_0x1f40('0x79')](_0x300c6a,_0x43697a);});if(_0x4acf88){return _0x14496c['id'];}}}));}}return BPromise[_0x1f40('0x7a')](_0x4a192c)[_0x1f40('0x25')](function(_0x1b4a4b){_0x194321=_(_0x194321)[_0x1f40('0x7b')](_0x1b4a4b)[_0x1f40('0x7c')]()[_0x1f40('0x7d')]();return db[_0x1f40('0x2e')][_0x1f40('0x4f')]({'where':{'id':_0x4c07ae[_0x1f40('0x50')]['id']}})['then'](function(_0x1eb9bb){return db[_0x1f40('0x6a')][_0x1f40('0x6b')](function(_0x3442cf){return _0x1eb9bb[_0x1f40('0x6f')](_0x4c07ae[_0x1f40('0x38')][_0x1f40('0x67')],{'transaction':_0x3442cf})['then'](function(){if(!_[_0x1f40('0x7e')](_0x194321)){return _0x1eb9bb[_0x1f40('0x7f')](_0x194321,{'transaction':_0x3442cf});}})[_0x1f40('0x25')](function(){_0x194321[_0x1f40('0x80')](function(_0x45d66f){socket[_0x1f40('0x6e')]('userSmsQueue:remove',{'UserId':_0x45d66f,'SmsQueueId':_0x1eb9bb['id']});});});});});});})[_0x1f40('0x25')](respondWithStatusCode(_0x3ce56d,null))['catch'](handleError(_0x3ce56d,null));};exports[_0x1f40('0x81')]=function(_0x1e923a,_0x2f9900,_0x4c973d){return db[_0x1f40('0x2e')]['find']({'where':{'id':_0x1e923a['params']['id']}})['then'](handleEntityNotFound(_0x2f9900,null))[_0x1f40('0x25')](function(_0x46b75d){if(_0x46b75d){return _0x46b75d[_0x1f40('0x81')](_0x1e923a[_0x1f40('0x48')][_0x1f40('0x67')],_[_0x1f40('0x82')](_0x1e923a['body'],[_0x1f40('0x67'),'id'])||{})[_0x1f40('0x83')](function(_0x3139e8){for(var _0x5efe51=0x0;_0x5efe51<_0x1e923a[_0x1f40('0x48')][_0x1f40('0x67')][_0x1f40('0x3a')];_0x5efe51+=0x1){socket[_0x1f40('0x6e')](_0x1f40('0x84'),{'UserId':Number(_0x1e923a[_0x1f40('0x48')][_0x1f40('0x67')][_0x5efe51]),'SmsQueueId':Number(_0x1e923a['params']['id'])});}return _0x3139e8;});}})[_0x1f40('0x25')](respondWithResult(_0x2f9900,null))[_0x1f40('0x45')](handleError(_0x2f9900,null));};exports[_0x1f40('0x7f')]=function(_0x1f9c45,_0x5359f6,_0x5af832){return db[_0x1f40('0x2e')][_0x1f40('0x4f')]({'where':{'id':_0x1f9c45['params']['id']}})[_0x1f40('0x25')](handleEntityNotFound(_0x5359f6,null))[_0x1f40('0x25')](function(_0x24270e){if(_0x24270e){return _0x24270e['removeAgents'](_0x1f9c45[_0x1f40('0x38')][_0x1f40('0x67')])[_0x1f40('0x25')](function(){if(_['isArray'](_0x1f9c45[_0x1f40('0x38')]['ids'])){for(var _0x349be4=0x0;_0x349be4<_0x1f9c45[_0x1f40('0x38')][_0x1f40('0x67')][_0x1f40('0x3a')];_0x349be4+=0x1){socket[_0x1f40('0x6e')](_0x1f40('0x85'),{'UserId':Number(_0x1f9c45[_0x1f40('0x38')]['ids'][_0x349be4]),'SmsQueueId':Number(_0x1f9c45['params']['id'])});}}else{socket['emit'](_0x1f40('0x85'),{'UserId':Number(_0x1f9c45['query']['ids']),'SmsQueueId':Number(_0x1f9c45[_0x1f40('0x50')]['id'])});}});}})[_0x1f40('0x25')](respondWithStatusCode(_0x5359f6,null))[_0x1f40('0x45')](handleError(_0x5359f6,null));};exports['getAgents']=function(_0x37a12,_0x423cd8,_0x84aca3){var _0x1e1a5c={};var _0x26ebdb={};var _0x259517;var _0x3a7488;return db[_0x1f40('0x2e')][_0x1f40('0x53')]({'where':{'id':_0x37a12[_0x1f40('0x50')]['id']}})[_0x1f40('0x25')](handleEntityNotFound(_0x423cd8,null))[_0x1f40('0x25')](function(_0x203d37){if(_0x203d37){_0x259517=_0x203d37;_0x26ebdb[_0x1f40('0x33')]=_[_0x1f40('0x34')](db['User'][_0x1f40('0x2f')]);_0x26ebdb['query']=_['keys'](_0x37a12['query']);_0x26ebdb[_0x1f40('0x35')]=_[_0x1f40('0x36')](_0x26ebdb['model'],_0x26ebdb[_0x1f40('0x38')]);_0x1e1a5c[_0x1f40('0x39')]=_[_0x1f40('0x36')](_0x26ebdb[_0x1f40('0x33')],qs[_0x1f40('0x37')](_0x37a12[_0x1f40('0x38')][_0x1f40('0x37')]));_0x1e1a5c[_0x1f40('0x39')]=_0x1e1a5c['attributes'][_0x1f40('0x3a')]?_0x1e1a5c['attributes']:_0x26ebdb[_0x1f40('0x33')];_0x1e1a5c['order']=qs['sort'](_0x37a12[_0x1f40('0x38')][_0x1f40('0x3c')]);_0x1e1a5c[_0x1f40('0x3d')]=qs[_0x1f40('0x35')](_[_0x1f40('0x3e')](_0x37a12[_0x1f40('0x38')],_0x26ebdb[_0x1f40('0x35')]));if(_0x37a12[_0x1f40('0x38')][_0x1f40('0x3f')]){_0x1e1a5c[_0x1f40('0x3d')]=_['merge'](_0x1e1a5c['where'],{'$or':_['map'](_0x1e1a5c[_0x1f40('0x39')],function(_0x94e684){var _0x59b609={};_0x59b609[_0x94e684]={'$like':'%'+_0x37a12[_0x1f40('0x38')]['filter']+'%'};return _0x59b609;})});}_0x1e1a5c=_[_0x1f40('0x40')]({},_0x1e1a5c,_0x37a12['options']);return _0x259517[_0x1f40('0x86')](_0x1e1a5c);}})['then'](function(_0x50d59b){if(_0x50d59b){_0x3a7488=_0x50d59b[_0x1f40('0x3a')];if(!_0x37a12[_0x1f40('0x38')][_0x1f40('0x3b')](_0x1f40('0x55'))){_0x1e1a5c['limit']=qs['limit'](_0x37a12[_0x1f40('0x38')][_0x1f40('0x1c')]);_0x1e1a5c[_0x1f40('0x1e')]=qs[_0x1f40('0x1e')](_0x37a12[_0x1f40('0x38')][_0x1f40('0x1e')]);}return _0x259517[_0x1f40('0x86')](_0x1e1a5c);}})['then'](function(_0x5b2a2e){if(_0x5b2a2e){return _0x5b2a2e?{'count':_0x3a7488,'rows':_0x5b2a2e}:null;}})[_0x1f40('0x25')](respondWithResult(_0x423cd8,null))[_0x1f40('0x45')](handleError(_0x423cd8,null));};
\ No newline at end of file
+var _0x708c=['mustache','util','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','../../config/utils','../../config/environment','../../config/license/util','redis','localhost','./smsQueue.socket','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','SmsQueues','UserProfileResource','destroy','error','stack','name','send','map','SmsQueue','rawAttributes','fieldName','type','key','query','keys','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','get','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','UserSmsQueue','pick','SmsQueueId','User','UserId','agent','smsPause','updatedAt','createdAt','format','%s/%s','findOne','getTeams','addTeams','Agents','online','interface','flatMap','transaction','each','findOrCreate','forEach','emit','userSmsQueue:save','removeTeams','Team','ids','select','field','from','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','SmsQueueId\x20=\x20?','clone','push','sequelize','toString','SELECT','every','TeamId','includes','union','compact','value','isEmpty','removeAgents','userSmsQueue:remove','addAgents','omit','spread','isArray','getAgents','eml-format','rimraf','zip-dir','request-promise','moment','bluebird'];(function(_0x504df1,_0x289598){var _0x1063b5=function(_0x627abd){while(--_0x627abd){_0x504df1['push'](_0x504df1['shift']());}};_0x1063b5(++_0x289598);}(_0x708c,0x8b));var _0xc708=function(_0x13d37c,_0x8baa0a){_0x13d37c=_0x13d37c-0x0;var _0x27cba3=_0x708c[_0x13d37c];return _0x27cba3;};'use strict';var emlformat=require(_0xc708('0x0'));var rimraf=require(_0xc708('0x1'));var zipdir=require(_0xc708('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xc708('0x3'));var moment=require(_0xc708('0x4'));var BPromise=require(_0xc708('0x5'));var Mustache=require(_0xc708('0x6'));var util=require(_0xc708('0x7'));var path=require(_0xc708('0x8'));var sox=require('sox');var csv=require(_0xc708('0x9'));var ejs=require(_0xc708('0xa'));var fs=require('fs');var fs_extra=require(_0xc708('0xb'));var _=require('lodash');var squel=require(_0xc708('0xc'));var crypto=require(_0xc708('0xd'));var jsforce=require(_0xc708('0xe'));var deskjs=require(_0xc708('0xf'));var toCsv=require(_0xc708('0x9'));var querystring=require(_0xc708('0x10'));var Papa=require(_0xc708('0x11'));var Redis=require(_0xc708('0x12'));var authService=require(_0xc708('0x13'));var qs=require(_0xc708('0x14'));var as=require(_0xc708('0x15'));var hardwareService=require(_0xc708('0x16'));var logger=require(_0xc708('0x17'))('api');var utils=require(_0xc708('0x18'));var config=require(_0xc708('0x19'));var licenseUtil=require(_0xc708('0x1a'));var db=require('../../mysqldb')['db'];config[_0xc708('0x1b')]=_['defaults'](config['redis'],{'host':_0xc708('0x1c'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xc708('0x1b')]));require(_0xc708('0x1d'))['register'](socket);function respondWithStatusCode(_0x42a7b4,_0x4b6173){_0x4b6173=_0x4b6173||0xcc;return function(_0x4f89ad){if(_0x4f89ad){return _0x42a7b4[_0xc708('0x1e')](_0x4b6173);}return _0x42a7b4[_0xc708('0x1f')](_0x4b6173)['end']();};}function respondWithResult(_0x3182bc,_0x1dcf96){_0x1dcf96=_0x1dcf96||0xc8;return function(_0xba21eb){if(_0xba21eb){return _0x3182bc[_0xc708('0x1f')](_0x1dcf96)[_0xc708('0x20')](_0xba21eb);}};}function respondWithFilteredResult(_0x1604bf,_0x3341fc){return function(_0x5b11d4){if(_0x5b11d4){var _0xed720b=typeof _0x3341fc[_0xc708('0x21')]===_0xc708('0x22')&&typeof _0x3341fc[_0xc708('0x23')]===_0xc708('0x22');var _0x1aa435=_0x5b11d4['count'];var _0x59733b=_0xed720b?0x0:_0x3341fc[_0xc708('0x21')];var _0x48edc9=_0xed720b?_0x5b11d4[_0xc708('0x24')]:_0x3341fc[_0xc708('0x21')]+_0x3341fc[_0xc708('0x23')];var _0x58910f;if(_0x48edc9>=_0x1aa435){_0x48edc9=_0x1aa435;_0x58910f=0xc8;}else{_0x58910f=0xce;}_0x1604bf[_0xc708('0x1f')](_0x58910f);return _0x1604bf[_0xc708('0x25')](_0xc708('0x26'),_0x59733b+'-'+_0x48edc9+'/'+_0x1aa435)['json'](_0x5b11d4);}return null;};}function patchUpdates(_0x34857e){return function(_0xd32594){try{jsonpatch[_0xc708('0x27')](_0xd32594,_0x34857e,!![]);}catch(_0x9ddc90){return BPromise[_0xc708('0x28')](_0x9ddc90);}return _0xd32594[_0xc708('0x29')]();};}function saveUpdates(_0x5df392,_0x55d70c){return function(_0x2e8674){if(_0x2e8674){return _0x2e8674[_0xc708('0x2a')](_0x5df392)[_0xc708('0x2b')](function(_0x33a611){return _0x33a611;});}return null;};}function removeEntity(_0x1b25ba,_0x5c84e5){return function(_0x360410){if(_0x360410){return _0x360410['destroy']()[_0xc708('0x2b')](function(){var _0x34c048=_0x360410['get']({'plain':!![]});var _0x4333c3=_0xc708('0x2c');return db[_0xc708('0x2d')][_0xc708('0x2e')]({'where':{'type':_0x4333c3,'resourceId':_0x34c048['id']}})[_0xc708('0x2b')](function(){return _0x360410;});})[_0xc708('0x2b')](function(){_0x1b25ba[_0xc708('0x1f')](0xcc)['end']();});}};}function handleEntityNotFound(_0x160543,_0x99126f){return function(_0x629d9b){if(!_0x629d9b){_0x160543['sendStatus'](0x194);}return _0x629d9b;};}function handleError(_0x23cd0c,_0x2e3457){_0x2e3457=_0x2e3457||0x1f4;return function(_0x47ef95){logger[_0xc708('0x2f')](_0x47ef95[_0xc708('0x30')]);if(_0x47ef95[_0xc708('0x31')]){delete _0x47ef95[_0xc708('0x31')];}_0x23cd0c['status'](_0x2e3457)[_0xc708('0x32')](_0x47ef95);};}exports['index']=function(_0xf1bb47,_0x27f952){var _0x51e25c={},_0x527b12={},_0x46939d={'count':0x0,'rows':[]};var _0x17730f=_[_0xc708('0x33')](db[_0xc708('0x34')][_0xc708('0x35')],function(_0x3914c7){return{'name':_0x3914c7[_0xc708('0x36')],'type':_0x3914c7[_0xc708('0x37')][_0xc708('0x38')]};});_0x527b12['model']=_[_0xc708('0x33')](_0x17730f,_0xc708('0x31'));_0x527b12[_0xc708('0x39')]=_[_0xc708('0x3a')](_0xf1bb47[_0xc708('0x39')]);_0x527b12['filters']=_['intersection'](_0x527b12[_0xc708('0x3b')],_0x527b12[_0xc708('0x39')]);_0x51e25c[_0xc708('0x3c')]=_[_0xc708('0x3d')](_0x527b12['model'],qs[_0xc708('0x3e')](_0xf1bb47[_0xc708('0x39')][_0xc708('0x3e')]));_0x51e25c['attributes']=_0x51e25c['attributes'][_0xc708('0x3f')]?_0x51e25c[_0xc708('0x3c')]:_0x527b12[_0xc708('0x3b')];if(!_0xf1bb47[_0xc708('0x39')][_0xc708('0x40')](_0xc708('0x41'))){_0x51e25c[_0xc708('0x23')]=qs['limit'](_0xf1bb47[_0xc708('0x39')][_0xc708('0x23')]);_0x51e25c[_0xc708('0x21')]=qs[_0xc708('0x21')](_0xf1bb47[_0xc708('0x39')][_0xc708('0x21')]);}_0x51e25c[_0xc708('0x42')]=qs[_0xc708('0x43')](_0xf1bb47[_0xc708('0x39')][_0xc708('0x43')]);_0x51e25c[_0xc708('0x44')]=qs[_0xc708('0x45')](_['pick'](_0xf1bb47[_0xc708('0x39')],_0x527b12[_0xc708('0x45')]),_0x17730f);if(_0xf1bb47[_0xc708('0x39')][_0xc708('0x46')]){_0x51e25c[_0xc708('0x44')]=_[_0xc708('0x47')](_0x51e25c['where'],{'$or':_[_0xc708('0x33')](_0x17730f,function(_0x43c160){if(_0x43c160[_0xc708('0x37')]!==_0xc708('0x48')){var _0x1f732c={};_0x1f732c[_0x43c160[_0xc708('0x31')]]={'$like':'%'+_0xf1bb47[_0xc708('0x39')][_0xc708('0x46')]+'%'};return _0x1f732c;}})});}_0x51e25c=_[_0xc708('0x47')]({},_0x51e25c,_0xf1bb47[_0xc708('0x49')]);var _0x84088={'where':_0x51e25c[_0xc708('0x44')]};return db[_0xc708('0x34')][_0xc708('0x24')](_0x84088)[_0xc708('0x2b')](function(_0x3ad758){_0x46939d[_0xc708('0x24')]=_0x3ad758;if(_0xf1bb47[_0xc708('0x39')][_0xc708('0x4a')]){_0x51e25c[_0xc708('0x4b')]=[{'all':!![]}];}return db['SmsQueue'][_0xc708('0x4c')](_0x51e25c);})[_0xc708('0x2b')](function(_0x16528e){_0x46939d[_0xc708('0x4d')]=_0x16528e;return _0x46939d;})[_0xc708('0x2b')](respondWithFilteredResult(_0x27f952,_0x51e25c))[_0xc708('0x4e')](handleError(_0x27f952,null));};exports[_0xc708('0x4f')]=function(_0xc93767,_0x4d386a){var _0x5ce33c={'raw':!![],'where':{'id':_0xc93767[_0xc708('0x50')]['id']}},_0x51b245={};_0x51b245['model']=_[_0xc708('0x3a')](db[_0xc708('0x34')][_0xc708('0x35')]);_0x51b245[_0xc708('0x39')]=_[_0xc708('0x3a')](_0xc93767['query']);_0x51b245[_0xc708('0x45')]=_[_0xc708('0x3d')](_0x51b245['model'],_0x51b245[_0xc708('0x39')]);_0x5ce33c['attributes']=_['intersection'](_0x51b245['model'],qs[_0xc708('0x3e')](_0xc93767['query'][_0xc708('0x3e')]));_0x5ce33c['attributes']=_0x5ce33c['attributes'][_0xc708('0x3f')]?_0x5ce33c[_0xc708('0x3c')]:_0x51b245[_0xc708('0x3b')];if(_0xc93767[_0xc708('0x39')][_0xc708('0x4a')]){_0x5ce33c[_0xc708('0x4b')]=[{'all':!![]}];}_0x5ce33c=_[_0xc708('0x47')]({},_0x5ce33c,_0xc93767[_0xc708('0x49')]);return db['SmsQueue'][_0xc708('0x51')](_0x5ce33c)[_0xc708('0x2b')](handleEntityNotFound(_0x4d386a,null))['then'](respondWithResult(_0x4d386a,null))[_0xc708('0x4e')](handleError(_0x4d386a,null));};exports[_0xc708('0x52')]=function(_0x256197,_0x844b94){return db[_0xc708('0x34')]['create'](_0x256197[_0xc708('0x53')],{})[_0xc708('0x2b')](function(_0x1c1f3e){var _0x33c98e=_0x256197['user']['get']({'plain':!![]});if(!_0x33c98e)throw new Error(_0xc708('0x54'));if(_0x33c98e[_0xc708('0x55')]===_0xc708('0x56')){var _0x9fea=_0x1c1f3e[_0xc708('0x57')]({'plain':!![]});var _0xd88160=_0xc708('0x2c');return db[_0xc708('0x58')]['find']({'where':{'name':_0xd88160,'userProfileId':_0x33c98e['userProfileId']},'raw':!![]})[_0xc708('0x2b')](function(_0x45f890){if(_0x45f890&&_0x45f890[_0xc708('0x59')]===0x0){return db[_0xc708('0x2d')]['create']({'name':_0x9fea[_0xc708('0x31')],'resourceId':_0x9fea['id'],'type':_0x45f890[_0xc708('0x31')],'sectionId':_0x45f890['id']},{})[_0xc708('0x2b')](function(){return _0x1c1f3e;});}else{return _0x1c1f3e;}})[_0xc708('0x4e')](function(_0x554620){logger[_0xc708('0x2f')](_0xc708('0x5a'),_0x554620);throw _0x554620;});}return _0x1c1f3e;})['then'](respondWithResult(_0x844b94,0xc9))[_0xc708('0x4e')](handleError(_0x844b94,null));};exports[_0xc708('0x2a')]=function(_0x444c02,_0x1bda0b){if(_0x444c02['body']['id']){delete _0x444c02['body']['id'];}return db[_0xc708('0x34')][_0xc708('0x51')]({'where':{'id':_0x444c02['params']['id']}})[_0xc708('0x2b')](handleEntityNotFound(_0x1bda0b,null))[_0xc708('0x2b')](saveUpdates(_0x444c02['body'],null))[_0xc708('0x2b')](respondWithResult(_0x1bda0b,null))['catch'](handleError(_0x1bda0b,null));};exports['destroy']=function(_0x3266ab,_0x286696){return db[_0xc708('0x34')][_0xc708('0x51')]({'where':{'id':_0x3266ab[_0xc708('0x50')]['id']}})['then'](handleEntityNotFound(_0x286696,null))['then'](removeEntity(_0x286696,null))[_0xc708('0x4e')](handleError(_0x286696,null));};exports[_0xc708('0x5b')]=function(_0x196d78,_0x13e7f8){return db[_0xc708('0x34')][_0xc708('0x5b')]()[_0xc708('0x2b')](respondWithResult(_0x13e7f8,null))[_0xc708('0x4e')](handleError(_0x13e7f8,null));};exports[_0xc708('0x5c')]=function(_0x122813,_0x213083,_0x587cc3){var _0x4aeb6d={'raw':!![],'where':{}},_0xa92eb8={},_0x3ae5be;return db[_0xc708('0x34')]['findOne']({'where':{'id':_0x122813['params']['id']}})['then'](handleEntityNotFound(_0x213083,null))['then'](function(_0x37b90b){if(_0x37b90b){_0x3ae5be=_0x37b90b[_0xc708('0x57')]({'plain':!![]});_0xa92eb8[_0xc708('0x3b')]=_['keys'](db[_0xc708('0x5d')][_0xc708('0x35')]);_0xa92eb8['query']=_[_0xc708('0x3a')](_0x122813['query']);_0xa92eb8[_0xc708('0x45')]=_[_0xc708('0x3d')](_0xa92eb8[_0xc708('0x3b')],_0xa92eb8[_0xc708('0x39')]);_0x4aeb6d['attributes']=_[_0xc708('0x3d')](_0xa92eb8[_0xc708('0x3b')],qs[_0xc708('0x3e')](_0x122813[_0xc708('0x39')][_0xc708('0x3e')]));_0x4aeb6d[_0xc708('0x3c')]=_0x4aeb6d[_0xc708('0x3c')][_0xc708('0x3f')]?_0x4aeb6d[_0xc708('0x3c')]:_0xa92eb8[_0xc708('0x3b')];if(!_0x122813['query'][_0xc708('0x40')](_0xc708('0x41'))){_0x4aeb6d[_0xc708('0x23')]=qs[_0xc708('0x23')](_0x122813[_0xc708('0x39')][_0xc708('0x23')]);_0x4aeb6d[_0xc708('0x21')]=qs[_0xc708('0x21')](_0x122813['query'][_0xc708('0x21')]);}_0x4aeb6d['order']=qs[_0xc708('0x43')](_0x122813[_0xc708('0x39')][_0xc708('0x43')]);_0x4aeb6d[_0xc708('0x44')]=qs[_0xc708('0x45')](_[_0xc708('0x5e')](_0x122813['query'],_0xa92eb8[_0xc708('0x45')]));_0x4aeb6d[_0xc708('0x44')][_0xc708('0x5f')]=_0x37b90b['id'];if(_0x122813[_0xc708('0x39')][_0xc708('0x46')]){_0x4aeb6d[_0xc708('0x44')]=_['merge'](_0x4aeb6d[_0xc708('0x44')],{'$or':_[_0xc708('0x33')](_0x4aeb6d[_0xc708('0x3c')],function(_0xf1890e){var _0x23e42b={};_0x23e42b[_0xf1890e]={'$like':'%'+_0x122813[_0xc708('0x39')]['filter']+'%'};return _0x23e42b;})});}_0x4aeb6d=_[_0xc708('0x47')]({},_0x4aeb6d,_0x122813[_0xc708('0x49')]);return db[_0xc708('0x5d')][_0xc708('0x4c')](_0x4aeb6d);}})[_0xc708('0x2b')](function(_0x8eac0f){if(_0x8eac0f){return db[_0xc708('0x60')]['findAndCountAll']({'where':{'id':_['map'](_0x8eac0f,_0xc708('0x61')),'role':_0xc708('0x62')},'attributes':['id',_0xc708('0x31'),_0xc708('0x63'),_0xc708('0x64'),_0xc708('0x65')]});}})[_0xc708('0x2b')](function(_0x51abea){if(_0x51abea){return{'count':_0x51abea['count'],'rows':_[_0xc708('0x33')](_0x51abea[_0xc708('0x4d')],function(_0x2bcb04){return{'membername':_0x2bcb04[_0xc708('0x31')],'UserId':_0x2bcb04['id'],'queue_name':_0x3ae5be['name'],'SmsQueueId':_0x3ae5be['id'],'interface':util[_0xc708('0x66')](_0xc708('0x67'),'SIP',_0x2bcb04['name']),'penalty':0x0,'paused':_0x2bcb04[_0xc708('0x63')],'createdAt':_0x2bcb04[_0xc708('0x65')],'updatedAt':_0x2bcb04[_0xc708('0x64')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x213083,_0x4aeb6d))[_0xc708('0x4e')](handleError(_0x213083,null));};exports['getTeams']=function(_0x23ab77,_0x4a0d23,_0x4c2005){var _0x10c33c={};var _0x106206={};var _0x3daba2;var _0x22f610;return db['SmsQueue'][_0xc708('0x68')]({'where':{'id':_0x23ab77['params']['id']}})[_0xc708('0x2b')](handleEntityNotFound(_0x4a0d23,null))['then'](function(_0x3bc662){if(_0x3bc662){_0x3daba2=_0x3bc662;_0x106206[_0xc708('0x3b')]=_[_0xc708('0x3a')](db['Team']['rawAttributes']);_0x106206[_0xc708('0x39')]=_['keys'](_0x23ab77[_0xc708('0x39')]);_0x106206[_0xc708('0x45')]=_['intersection'](_0x106206[_0xc708('0x3b')],_0x106206[_0xc708('0x39')]);_0x10c33c['attributes']=_[_0xc708('0x3d')](_0x106206[_0xc708('0x3b')],qs['fields'](_0x23ab77[_0xc708('0x39')][_0xc708('0x3e')]));_0x10c33c[_0xc708('0x3c')]=_0x10c33c['attributes'][_0xc708('0x3f')]?_0x10c33c[_0xc708('0x3c')]:_0x106206['model'];_0x10c33c[_0xc708('0x42')]=qs[_0xc708('0x43')](_0x23ab77[_0xc708('0x39')]['sort']);_0x10c33c['where']=qs['filters'](_['pick'](_0x23ab77[_0xc708('0x39')],_0x106206['filters']));if(_0x23ab77['query'][_0xc708('0x46')]){_0x10c33c[_0xc708('0x44')]=_['merge'](_0x10c33c[_0xc708('0x44')],{'$or':_[_0xc708('0x33')](_0x10c33c[_0xc708('0x3c')],function(_0x3f904b){var _0x3a13ac={};_0x3a13ac[_0x3f904b]={'$like':'%'+_0x23ab77[_0xc708('0x39')][_0xc708('0x46')]+'%'};return _0x3a13ac;})});}_0x10c33c=_[_0xc708('0x47')]({},_0x10c33c,_0x23ab77[_0xc708('0x49')]);return _0x3daba2[_0xc708('0x69')](_0x10c33c);}})[_0xc708('0x2b')](function(_0x169687){if(_0x169687){_0x22f610=_0x169687[_0xc708('0x3f')];if(!_0x23ab77[_0xc708('0x39')][_0xc708('0x40')](_0xc708('0x41'))){_0x10c33c['limit']=qs[_0xc708('0x23')](_0x23ab77['query']['limit']);_0x10c33c[_0xc708('0x21')]=qs['offset'](_0x23ab77[_0xc708('0x39')][_0xc708('0x21')]);}return _0x3daba2[_0xc708('0x69')](_0x10c33c);}})[_0xc708('0x2b')](function(_0x33d729){if(_0x33d729){return _0x33d729?{'count':_0x22f610,'rows':_0x33d729}:null;}})[_0xc708('0x2b')](respondWithResult(_0x4a0d23,null))[_0xc708('0x4e')](handleError(_0x4a0d23,null));};exports[_0xc708('0x6a')]=function(_0x184460,_0x19c045,_0x192de7){var _0x137c90=_0x184460[_0xc708('0x53')]['ids'];return db['Team'][_0xc708('0x4c')]({'where':{'id':_0x137c90},'attributes':['id'],'include':[{'model':db['User'],'as':_0xc708('0x6b'),'attributes':['id','name',_0xc708('0x6c'),'voicePause',_0xc708('0x6d')],'raw':!![]}]})[_0xc708('0x2b')](function(_0x499456){if(_0x499456){var _0x416165=_[_0xc708('0x6e')](_0x499456,function(_0x1dc4c4){var _0xb8a120=_0x1dc4c4['get']({'plain':!![]});return _0xb8a120[_0xc708('0x6b')];});return db['SmsQueue'][_0xc708('0x51')]({'where':{'id':_0x184460[_0xc708('0x50')]['id']}})[_0xc708('0x2b')](function(_0x269d66){return db['sequelize'][_0xc708('0x6f')](function(_0x5bd30b){return _0x269d66['addTeams'](_0x137c90,{'transaction':_0x5bd30b})[_0xc708('0x2b')](function(){return BPromise[_0xc708('0x70')](_0x416165,function(_0x496d54){return db[_0xc708('0x5d')][_0xc708('0x71')]({'where':{'UserId':_0x496d54['id'],'SmsQueueId':_0x184460['params']['id']},'transaction':_0x5bd30b});});})['then'](function(){_0x416165[_0xc708('0x72')](function(_0x59dfdc){socket[_0xc708('0x73')](_0xc708('0x74'),{'UserId':_0x59dfdc['id'],'SmsQueueId':_0x269d66['id']});});});});});}})[_0xc708('0x2b')](respondWithStatusCode(_0x19c045,null))[_0xc708('0x4e')](handleError(_0x19c045,null));};exports[_0xc708('0x75')]=function(_0x314e97,_0x52f12d,_0x4eb4c8){return db[_0xc708('0x76')][_0xc708('0x4c')]({'where':{'id':_0x314e97[_0xc708('0x39')][_0xc708('0x77')]},'attributes':['id'],'include':[{'model':db['User'],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0xc708('0x2b')](handleEntityNotFound(_0x52f12d,null))[_0xc708('0x2b')](function(_0x179658){var _0x5b5626=_[_0xc708('0x33')](_0x179658,'id');var _0x32a9ce=[];var _0x15f14d=[];var _0x4286c1=squel[_0xc708('0x78')]();_0x4286c1[_0xc708('0x79')]('tq.TeamId')[_0xc708('0x7a')]('team_has_sms_queues','tq')['join'](_0xc708('0x7b'),'ut',_0xc708('0x7c'))[_0xc708('0x44')](_0xc708('0x7d'),_0x314e97[_0xc708('0x50')]['id']);for(var _0x3629a7=0x0;_0x3629a7<_0x179658['length'];_0x3629a7+=0x1){let _0x1be04e=_0x179658[_0x3629a7];for(var _0x35e789=0x0;_0x35e789<_0x1be04e[_0xc708('0x6b')]['length'];_0x35e789+=0x1){let _0x5d29da=_0x1be04e[_0xc708('0x6b')][_0x35e789];var _0x27d9c4=_0x4286c1[_0xc708('0x7e')]();_0x27d9c4[_0xc708('0x44')]('ut.UserId\x20=\x20?',_0x5d29da['id']);_0x15f14d[_0xc708('0x7f')](db[_0xc708('0x80')][_0xc708('0x39')](_0x27d9c4[_0xc708('0x81')](),{'type':db[_0xc708('0x80')]['QueryTypes'][_0xc708('0x82')]})[_0xc708('0x2b')](function(_0x4e74bb){if(_0x4e74bb[_0xc708('0x3f')]===0x1){return _0x5d29da['id'];}else{var _0x5db808=_[_0xc708('0x83')](_['map'](_0x4e74bb,_0xc708('0x84')),function(_0x1ec595){return _[_0xc708('0x85')](_0x5b5626,_0x1ec595);});if(_0x5db808){return _0x5d29da['id'];}}}));}}return BPromise['all'](_0x15f14d)['then'](function(_0x1bab13){_0x32a9ce=_(_0x32a9ce)[_0xc708('0x86')](_0x1bab13)[_0xc708('0x87')]()[_0xc708('0x88')]();return db[_0xc708('0x34')][_0xc708('0x51')]({'where':{'id':_0x314e97[_0xc708('0x50')]['id']}})[_0xc708('0x2b')](function(_0x4f9886){return db['sequelize'][_0xc708('0x6f')](function(_0x3f4d6c){return _0x4f9886[_0xc708('0x75')](_0x314e97[_0xc708('0x39')][_0xc708('0x77')],{'transaction':_0x3f4d6c})[_0xc708('0x2b')](function(){if(!_[_0xc708('0x89')](_0x32a9ce)){return _0x4f9886[_0xc708('0x8a')](_0x32a9ce,{'transaction':_0x3f4d6c});}})[_0xc708('0x2b')](function(){_0x32a9ce[_0xc708('0x72')](function(_0x3172a8){socket[_0xc708('0x73')](_0xc708('0x8b'),{'UserId':_0x3172a8,'SmsQueueId':_0x4f9886['id']});});});});});});})[_0xc708('0x2b')](respondWithStatusCode(_0x52f12d,null))['catch'](handleError(_0x52f12d,null));};exports[_0xc708('0x8c')]=function(_0x3581e8,_0x402088,_0x1785a6){return db['SmsQueue'][_0xc708('0x51')]({'where':{'id':_0x3581e8[_0xc708('0x50')]['id']}})[_0xc708('0x2b')](handleEntityNotFound(_0x402088,null))[_0xc708('0x2b')](function(_0x3008fa){if(_0x3008fa){return _0x3008fa['addAgents'](_0x3581e8[_0xc708('0x53')][_0xc708('0x77')],_[_0xc708('0x8d')](_0x3581e8['body'],['ids','id'])||{})[_0xc708('0x8e')](function(_0x392013){for(var _0x3b53d3=0x0;_0x3b53d3<_0x3581e8[_0xc708('0x53')]['ids']['length'];_0x3b53d3+=0x1){socket['emit'](_0xc708('0x74'),{'UserId':Number(_0x3581e8[_0xc708('0x53')][_0xc708('0x77')][_0x3b53d3]),'SmsQueueId':Number(_0x3581e8['params']['id'])});}return _0x392013;});}})[_0xc708('0x2b')](respondWithResult(_0x402088,null))[_0xc708('0x4e')](handleError(_0x402088,null));};exports[_0xc708('0x8a')]=function(_0x2d10a4,_0x4a463e,_0x10662b){return db[_0xc708('0x34')]['find']({'where':{'id':_0x2d10a4[_0xc708('0x50')]['id']}})[_0xc708('0x2b')](handleEntityNotFound(_0x4a463e,null))['then'](function(_0x1059ab){if(_0x1059ab){return _0x1059ab[_0xc708('0x8a')](_0x2d10a4[_0xc708('0x39')][_0xc708('0x77')])[_0xc708('0x2b')](function(){if(_[_0xc708('0x8f')](_0x2d10a4['query'][_0xc708('0x77')])){for(var _0x313537=0x0;_0x313537<_0x2d10a4['query']['ids'][_0xc708('0x3f')];_0x313537+=0x1){socket[_0xc708('0x73')]('userSmsQueue:remove',{'UserId':Number(_0x2d10a4['query'][_0xc708('0x77')][_0x313537]),'SmsQueueId':Number(_0x2d10a4[_0xc708('0x50')]['id'])});}}else{socket[_0xc708('0x73')](_0xc708('0x8b'),{'UserId':Number(_0x2d10a4[_0xc708('0x39')][_0xc708('0x77')]),'SmsQueueId':Number(_0x2d10a4[_0xc708('0x50')]['id'])});}});}})[_0xc708('0x2b')](respondWithStatusCode(_0x4a463e,null))['catch'](handleError(_0x4a463e,null));};exports[_0xc708('0x90')]=function(_0x71bf18,_0x32ce4f,_0x4ca09f){var _0xc921e7={};var _0x42b048={};var _0x330bae;var _0x2d4394;return db[_0xc708('0x34')][_0xc708('0x68')]({'where':{'id':_0x71bf18[_0xc708('0x50')]['id']}})[_0xc708('0x2b')](handleEntityNotFound(_0x32ce4f,null))['then'](function(_0x12afca){if(_0x12afca){_0x330bae=_0x12afca;_0x42b048[_0xc708('0x3b')]=_['keys'](db['User'][_0xc708('0x35')]);_0x42b048['query']=_['keys'](_0x71bf18['query']);_0x42b048['filters']=_['intersection'](_0x42b048[_0xc708('0x3b')],_0x42b048[_0xc708('0x39')]);_0xc921e7[_0xc708('0x3c')]=_[_0xc708('0x3d')](_0x42b048[_0xc708('0x3b')],qs[_0xc708('0x3e')](_0x71bf18[_0xc708('0x39')][_0xc708('0x3e')]));_0xc921e7[_0xc708('0x3c')]=_0xc921e7[_0xc708('0x3c')][_0xc708('0x3f')]?_0xc921e7[_0xc708('0x3c')]:_0x42b048[_0xc708('0x3b')];_0xc921e7[_0xc708('0x42')]=qs[_0xc708('0x43')](_0x71bf18[_0xc708('0x39')]['sort']);_0xc921e7[_0xc708('0x44')]=qs[_0xc708('0x45')](_[_0xc708('0x5e')](_0x71bf18[_0xc708('0x39')],_0x42b048[_0xc708('0x45')]));if(_0x71bf18[_0xc708('0x39')][_0xc708('0x46')]){_0xc921e7['where']=_['merge'](_0xc921e7[_0xc708('0x44')],{'$or':_['map'](_0xc921e7[_0xc708('0x3c')],function(_0x308545){var _0x548709={};_0x548709[_0x308545]={'$like':'%'+_0x71bf18['query']['filter']+'%'};return _0x548709;})});}_0xc921e7=_['merge']({},_0xc921e7,_0x71bf18[_0xc708('0x49')]);return _0x330bae[_0xc708('0x90')](_0xc921e7);}})[_0xc708('0x2b')](function(_0x39e0e5){if(_0x39e0e5){_0x2d4394=_0x39e0e5[_0xc708('0x3f')];if(!_0x71bf18[_0xc708('0x39')][_0xc708('0x40')](_0xc708('0x41'))){_0xc921e7[_0xc708('0x23')]=qs['limit'](_0x71bf18[_0xc708('0x39')][_0xc708('0x23')]);_0xc921e7[_0xc708('0x21')]=qs['offset'](_0x71bf18[_0xc708('0x39')][_0xc708('0x21')]);}return _0x330bae[_0xc708('0x90')](_0xc921e7);}})[_0xc708('0x2b')](function(_0x36a1cc){if(_0x36a1cc){return _0x36a1cc?{'count':_0x2d4394,'rows':_0x36a1cc}:null;}})[_0xc708('0x2b')](respondWithResult(_0x32ce4f,null))['catch'](handleError(_0x32ce4f,null));};
\ No newline at end of file
index cb97d3a..2123e36 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdfd9=['hasOwnProperty','events','../../mysqldb','SmsQueue','setMaxListeners','save','update','remove','emit'];(function(_0x171fb6,_0x1116d6){var _0x2dda01=function(_0x517505){while(--_0x517505){_0x171fb6['push'](_0x171fb6['shift']());}};_0x2dda01(++_0x1116d6);}(_0xdfd9,0x160));var _0x9dfd=function(_0x41fd5b,_0x25ea38){_0x41fd5b=_0x41fd5b-0x0;var _0x35755e=_0xdfd9[_0x41fd5b];return _0x35755e;};'use strict';var EventEmitter=require(_0x9dfd('0x0'));var SmsQueue=require(_0x9dfd('0x1'))['db'][_0x9dfd('0x2')];var SmsQueueEvents=new EventEmitter();SmsQueueEvents[_0x9dfd('0x3')](0x0);var events={'afterCreate':_0x9dfd('0x4'),'afterUpdate':_0x9dfd('0x5'),'afterDestroy':_0x9dfd('0x6')};function emitEvent(_0x1f9b21){return function(_0x4904bd,_0x49f3bf,_0x4e35f3){SmsQueueEvents[_0x9dfd('0x7')](_0x1f9b21+':'+_0x4904bd['id'],_0x4904bd);SmsQueueEvents[_0x9dfd('0x7')](_0x1f9b21,_0x4904bd);_0x4e35f3(null);};}for(var e in events){if(events[_0x9dfd('0x8')](e)){var event=events[e];SmsQueue['hook'](e,emitEvent(event));}}module['exports']=SmsQueueEvents;
\ No newline at end of file
+var _0x381c=['exports','../../mysqldb','SmsQueue','setMaxListeners','save','update','remove','emit','hasOwnProperty'];(function(_0x168ad0,_0x45e98b){var _0x3596fc=function(_0x388510){while(--_0x388510){_0x168ad0['push'](_0x168ad0['shift']());}};_0x3596fc(++_0x45e98b);}(_0x381c,0x13c));var _0xc381=function(_0x3e79c3,_0x50d82e){_0x3e79c3=_0x3e79c3-0x0;var _0xcce814=_0x381c[_0x3e79c3];return _0xcce814;};'use strict';var EventEmitter=require('events');var SmsQueue=require(_0xc381('0x0'))['db'][_0xc381('0x1')];var SmsQueueEvents=new EventEmitter();SmsQueueEvents[_0xc381('0x2')](0x0);var events={'afterCreate':_0xc381('0x3'),'afterUpdate':_0xc381('0x4'),'afterDestroy':_0xc381('0x5')};function emitEvent(_0xe4cb57){return function(_0x4434c4,_0x39830b,_0x5876b3){SmsQueueEvents[_0xc381('0x6')](_0xe4cb57+':'+_0x4434c4['id'],_0x4434c4);SmsQueueEvents[_0xc381('0x6')](_0xe4cb57,_0x4434c4);_0x5876b3(null);};}for(var e in events){if(events[_0xc381('0x7')](e)){var event=events[e];SmsQueue['hook'](e,emitEvent(event));}}module[_0xc381('0x8')]=SmsQueueEvents;
\ No newline at end of file
index c5747c6..54d3dd9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeab0=['sms_queues','lodash','util','../../config/logger','api','moment','request-promise','rimraf','./smsQueue.attributes','exports','SmsQueue'];(function(_0x474e07,_0xbd0097){var _0x48c689=function(_0x40cc29){while(--_0x40cc29){_0x474e07['push'](_0x474e07['shift']());}};_0x48c689(++_0xbd0097);}(_0xeab0,0x156));var _0x0eab=function(_0x1694f5,_0x49b7c3){_0x1694f5=_0x1694f5-0x0;var _0x5b4321=_0xeab0[_0x1694f5];return _0x5b4321;};'use strict';var _=require(_0x0eab('0x0'));var util=require(_0x0eab('0x1'));var logger=require(_0x0eab('0x2'))(_0x0eab('0x3'));var moment=require(_0x0eab('0x4'));var BPromise=require('bluebird');var rp=require(_0x0eab('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0eab('0x6'));var config=require('../../config/environment');var attributes=require(_0x0eab('0x7'));module[_0x0eab('0x8')]=function(_0x452af7,_0x5e45ec){return _0x452af7['define'](_0x0eab('0x9'),attributes,{'tableName':_0x0eab('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7f44=['lodash','util','api','bluebird','request-promise','path','rimraf','./smsQueue.attributes','define'];(function(_0x56e79c,_0x1e55cd){var _0x11c494=function(_0x41b147){while(--_0x41b147){_0x56e79c['push'](_0x56e79c['shift']());}};_0x11c494(++_0x1e55cd);}(_0x7f44,0x1d4));var _0x47f4=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7f44[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x47f4('0x0'));var util=require(_0x47f4('0x1'));var logger=require('../../config/logger')(_0x47f4('0x2'));var moment=require('moment');var BPromise=require(_0x47f4('0x3'));var rp=require(_0x47f4('0x4'));var fs=require('fs');var path=require(_0x47f4('0x5'));var rimraf=require(_0x47f4('0x6'));var config=require('../../config/environment');var attributes=require(_0x47f4('0x7'));module['exports']=function(_0x1172f0,_0x555976){return _0x1172f0[_0x47f4('0x8')]('SmsQueue',attributes,{'tableName':'sms_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 75b935d..75ddd3f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x809a=['bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','defaults','redis','localhost','socket.io-emitter','register','request','then','info','SmsQueue,\x20%s,\x20%s','request\x20sent','SmsQueue,\x20%s,\x20%s,\x20%s','error','code','message','result','SmsQueue','findAll','options','raw','attributes','map','include','model','GetSmsQueue','debug','catch','ShowSmsQueue','find','stringify','lodash'];(function(_0x208b7a,_0x2e3baa){var _0x37b7ec=function(_0x3a163d){while(--_0x3a163d){_0x208b7a['push'](_0x208b7a['shift']());}};_0x37b7ec(++_0x2e3baa);}(_0x809a,0x9f));var _0xa809=function(_0x297314,_0x1b1ee2){_0x297314=_0x297314-0x0;var _0x354230=_0x809a[_0x297314];return _0x354230;};'use strict';var _=require(_0xa809('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xa809('0x1'));var rs=require(_0xa809('0x2'));var fs=require('fs');var Redis=require(_0xa809('0x3'));var db=require(_0xa809('0x4'))['db'];var utils=require(_0xa809('0x5'));var logger=require(_0xa809('0x6'))(_0xa809('0x7'));var config=require(_0xa809('0x8'));var jayson=require(_0xa809('0x9'));var client=jayson[_0xa809('0xa')]['http']({'port':0x232a});config['redis']=_[_0xa809('0xb')](config[_0xa809('0xc')],{'host':_0xa809('0xd'),'port':0x18eb});var socket=require(_0xa809('0xe'))(new Redis(config[_0xa809('0xc')]));require('./smsQueue.socket')[_0xa809('0xf')](socket);function respondWithRpcPromise(_0x1a7253,_0x25decb,_0x4ead7e){return new BPromise(function(_0x4296a9,_0x1bfd3f){return client[_0xa809('0x10')](_0x1a7253,_0x4ead7e)[_0xa809('0x11')](function(_0x599c1b){logger[_0xa809('0x12')](_0xa809('0x13'),_0x25decb,_0xa809('0x14'));logger['debug'](_0xa809('0x15'),_0x25decb,_0xa809('0x14'),JSON['stringify'](_0x599c1b));if(_0x599c1b[_0xa809('0x16')]){if(_0x599c1b['error'][_0xa809('0x17')]===0x1f4){logger[_0xa809('0x16')](_0xa809('0x13'),_0x25decb,_0x599c1b[_0xa809('0x16')]['message']);return _0x1bfd3f(_0x599c1b[_0xa809('0x16')][_0xa809('0x18')]);}logger[_0xa809('0x16')](_0xa809('0x13'),_0x25decb,_0x599c1b[_0xa809('0x16')][_0xa809('0x18')]);return _0x4296a9(_0x599c1b[_0xa809('0x16')]['message']);}else{logger['info'](_0xa809('0x13'),_0x25decb,'request\x20sent');_0x4296a9(_0x599c1b[_0xa809('0x19')][_0xa809('0x18')]);}})['catch'](function(_0x5d6a0d){logger[_0xa809('0x16')](_0xa809('0x13'),_0x25decb,_0x5d6a0d);_0x1bfd3f(_0x5d6a0d);});});}exports['GetSmsQueue']=function(_0x4c09dc){var _0x5af36f=this;return new Promise(function(_0x173743,_0x427a75){return db[_0xa809('0x1a')][_0xa809('0x1b')]({'raw':_0x4c09dc[_0xa809('0x1c')]?_0x4c09dc[_0xa809('0x1c')][_0xa809('0x1d')]===undefined?!![]:![]:!![],'where':_0x4c09dc[_0xa809('0x1c')]?_0x4c09dc[_0xa809('0x1c')]['where']||null:null,'attributes':_0x4c09dc[_0xa809('0x1c')]?_0x4c09dc['options'][_0xa809('0x1e')]||null:null,'limit':_0x4c09dc[_0xa809('0x1c')]?_0x4c09dc[_0xa809('0x1c')]['limit']||null:null,'include':_0x4c09dc[_0xa809('0x1c')]?_0x4c09dc[_0xa809('0x1c')]['include']?_[_0xa809('0x1f')](_0x4c09dc['options'][_0xa809('0x20')],function(_0x499e43){return{'model':db[_0x499e43[_0xa809('0x21')]],'as':_0x499e43['as'],'attributes':_0x499e43['attributes'],'include':_0x499e43[_0xa809('0x20')]?_['map'](_0x499e43[_0xa809('0x20')],function(_0x1f16fe){return{'model':db[_0x1f16fe['model']],'as':_0x1f16fe['as'],'attributes':_0x1f16fe['attributes'],'include':_0x1f16fe[_0xa809('0x20')]?_[_0xa809('0x1f')](_0x1f16fe[_0xa809('0x20')],function(_0x1b688f){return{'model':db[_0x1b688f['model']],'as':_0x1b688f['as'],'attributes':_0x1b688f['attributes']};}):[]};}):[]};}):[]:[]})[_0xa809('0x11')](function(_0x43a13b){logger[_0xa809('0x12')](_0xa809('0x22'),_0x4c09dc);logger[_0xa809('0x23')]('GetSmsQueue',_0x4c09dc,JSON['stringify'](_0x43a13b));_0x173743(_0x43a13b);})[_0xa809('0x24')](function(_0x5a1201){logger[_0xa809('0x16')](_0xa809('0x22'),_0x5a1201[_0xa809('0x18')],_0x4c09dc);_0x427a75(_0x5af36f['error'](0x1f4,_0x5a1201[_0xa809('0x18')]));});});};exports[_0xa809('0x25')]=function(_0x21c1b5){var _0x416dbf=this;return new Promise(function(_0x5732f0,_0x1a12aa){return db['SmsQueue'][_0xa809('0x26')]({'raw':_0x21c1b5[_0xa809('0x1c')]?_0x21c1b5['options'][_0xa809('0x1d')]===undefined?!![]:![]:!![],'where':_0x21c1b5[_0xa809('0x1c')]?_0x21c1b5[_0xa809('0x1c')]['where']||null:null,'attributes':_0x21c1b5[_0xa809('0x1c')]?_0x21c1b5[_0xa809('0x1c')][_0xa809('0x1e')]||null:null,'include':_0x21c1b5[_0xa809('0x1c')]?_0x21c1b5['options'][_0xa809('0x20')]?_['map'](_0x21c1b5[_0xa809('0x1c')][_0xa809('0x20')],function(_0x49d6ea){return{'model':db[_0x49d6ea[_0xa809('0x21')]],'as':_0x49d6ea['as'],'attributes':_0x49d6ea[_0xa809('0x1e')],'include':_0x49d6ea[_0xa809('0x20')]?_['map'](_0x49d6ea['include'],function(_0x514a6f){return{'model':db[_0x514a6f['model']],'as':_0x514a6f['as'],'attributes':_0x514a6f['attributes'],'include':_0x514a6f[_0xa809('0x20')]?_[_0xa809('0x1f')](_0x514a6f[_0xa809('0x20')],function(_0x3b1066){return{'model':db[_0x3b1066[_0xa809('0x21')]],'as':_0x3b1066['as'],'attributes':_0x3b1066['attributes']};}):[]};}):[]};}):[]:[]})[_0xa809('0x11')](function(_0x2116d3){logger[_0xa809('0x12')](_0xa809('0x25'),_0x21c1b5);logger[_0xa809('0x23')](_0xa809('0x25'),_0x21c1b5,JSON[_0xa809('0x27')](_0x2116d3));_0x5732f0(_0x2116d3);})[_0xa809('0x24')](function(_0x5d8731){logger['error'](_0xa809('0x25'),_0x5d8731[_0xa809('0x18')],_0x21c1b5);_0x1a12aa(_0x416dbf[_0xa809('0x16')](0x1f4,_0x5d8731[_0xa809('0x18')]));});});};
\ No newline at end of file
+var _0x52e4=['SmsQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetSmsQueue','findAll','options','raw','where','attributes','limit','include','map','model','ShowSmsQueue','SmsQueue','find','util','moment','randomstring','ioredis','../../config/logger','jayson/promise','client','http','redis','defaults','socket.io-emitter','./smsQueue.socket','request','then','info','SmsQueue,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x2956ee,_0x37052e){var _0x5851fd=function(_0x5a4eef){while(--_0x5a4eef){_0x2956ee['push'](_0x2956ee['shift']());}};_0x5851fd(++_0x37052e);}(_0x52e4,0xf8));var _0x452e=function(_0x1c43aa,_0xff2696){_0x1c43aa=_0x1c43aa-0x0;var _0x514c3c=_0x52e4[_0x1c43aa];return _0x514c3c;};'use strict';var _=require('lodash');var util=require(_0x452e('0x0'));var moment=require(_0x452e('0x1'));var BPromise=require('bluebird');var rs=require(_0x452e('0x2'));var fs=require('fs');var Redis=require(_0x452e('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x452e('0x4'))('rpc');var config=require('../../config/environment');var jayson=require(_0x452e('0x5'));var client=jayson[_0x452e('0x6')][_0x452e('0x7')]({'port':0x232a});config[_0x452e('0x8')]=_[_0x452e('0x9')](config[_0x452e('0x8')],{'host':'localhost','port':0x18eb});var socket=require(_0x452e('0xa'))(new Redis(config['redis']));require(_0x452e('0xb'))['register'](socket);function respondWithRpcPromise(_0xe9b150,_0x44546f,_0x2b36c1){return new BPromise(function(_0x5db4a5,_0x1d22c1){return client[_0x452e('0xc')](_0xe9b150,_0x2b36c1)[_0x452e('0xd')](function(_0xfbffe6){logger[_0x452e('0xe')](_0x452e('0xf'),_0x44546f,_0x452e('0x10'));logger[_0x452e('0x11')](_0x452e('0x12'),_0x44546f,_0x452e('0x10'),JSON[_0x452e('0x13')](_0xfbffe6));if(_0xfbffe6[_0x452e('0x14')]){if(_0xfbffe6[_0x452e('0x14')][_0x452e('0x15')]===0x1f4){logger[_0x452e('0x14')](_0x452e('0xf'),_0x44546f,_0xfbffe6[_0x452e('0x14')][_0x452e('0x16')]);return _0x1d22c1(_0xfbffe6[_0x452e('0x14')][_0x452e('0x16')]);}logger[_0x452e('0x14')](_0x452e('0xf'),_0x44546f,_0xfbffe6[_0x452e('0x14')][_0x452e('0x16')]);return _0x5db4a5(_0xfbffe6[_0x452e('0x14')][_0x452e('0x16')]);}else{logger[_0x452e('0xe')](_0x452e('0xf'),_0x44546f,'request\x20sent');_0x5db4a5(_0xfbffe6[_0x452e('0x17')][_0x452e('0x16')]);}})[_0x452e('0x18')](function(_0x3f5da8){logger[_0x452e('0x14')](_0x452e('0xf'),_0x44546f,_0x3f5da8);_0x1d22c1(_0x3f5da8);});});}exports[_0x452e('0x19')]=function(_0x727010){var _0x5c16d7=this;return new Promise(function(_0x3adf3a,_0x5eda54){return db['SmsQueue'][_0x452e('0x1a')]({'raw':_0x727010[_0x452e('0x1b')]?_0x727010[_0x452e('0x1b')][_0x452e('0x1c')]===undefined?!![]:![]:!![],'where':_0x727010[_0x452e('0x1b')]?_0x727010[_0x452e('0x1b')][_0x452e('0x1d')]||null:null,'attributes':_0x727010[_0x452e('0x1b')]?_0x727010[_0x452e('0x1b')][_0x452e('0x1e')]||null:null,'limit':_0x727010[_0x452e('0x1b')]?_0x727010[_0x452e('0x1b')][_0x452e('0x1f')]||null:null,'include':_0x727010[_0x452e('0x1b')]?_0x727010['options'][_0x452e('0x20')]?_[_0x452e('0x21')](_0x727010[_0x452e('0x1b')][_0x452e('0x20')],function(_0x180c13){return{'model':db[_0x180c13[_0x452e('0x22')]],'as':_0x180c13['as'],'attributes':_0x180c13[_0x452e('0x1e')],'include':_0x180c13[_0x452e('0x20')]?_[_0x452e('0x21')](_0x180c13['include'],function(_0x5af2dc){return{'model':db[_0x5af2dc[_0x452e('0x22')]],'as':_0x5af2dc['as'],'attributes':_0x5af2dc['attributes'],'include':_0x5af2dc['include']?_[_0x452e('0x21')](_0x5af2dc['include'],function(_0x442dcc){return{'model':db[_0x442dcc[_0x452e('0x22')]],'as':_0x442dcc['as'],'attributes':_0x442dcc[_0x452e('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x452e('0xd')](function(_0x2e19dc){logger[_0x452e('0xe')]('GetSmsQueue',_0x727010);logger[_0x452e('0x11')]('GetSmsQueue',_0x727010,JSON[_0x452e('0x13')](_0x2e19dc));_0x3adf3a(_0x2e19dc);})[_0x452e('0x18')](function(_0x1ac3e8){logger['error'](_0x452e('0x19'),_0x1ac3e8[_0x452e('0x16')],_0x727010);_0x5eda54(_0x5c16d7[_0x452e('0x14')](0x1f4,_0x1ac3e8[_0x452e('0x16')]));});});};exports[_0x452e('0x23')]=function(_0x532946){var _0x46626c=this;return new Promise(function(_0x74960b,_0x297aff){return db[_0x452e('0x24')][_0x452e('0x25')]({'raw':_0x532946[_0x452e('0x1b')]?_0x532946['options'][_0x452e('0x1c')]===undefined?!![]:![]:!![],'where':_0x532946[_0x452e('0x1b')]?_0x532946[_0x452e('0x1b')][_0x452e('0x1d')]||null:null,'attributes':_0x532946['options']?_0x532946[_0x452e('0x1b')]['attributes']||null:null,'include':_0x532946['options']?_0x532946[_0x452e('0x1b')][_0x452e('0x20')]?_[_0x452e('0x21')](_0x532946['options'][_0x452e('0x20')],function(_0x226403){return{'model':db[_0x226403[_0x452e('0x22')]],'as':_0x226403['as'],'attributes':_0x226403[_0x452e('0x1e')],'include':_0x226403[_0x452e('0x20')]?_[_0x452e('0x21')](_0x226403[_0x452e('0x20')],function(_0x524185){return{'model':db[_0x524185[_0x452e('0x22')]],'as':_0x524185['as'],'attributes':_0x524185[_0x452e('0x1e')],'include':_0x524185[_0x452e('0x20')]?_[_0x452e('0x21')](_0x524185[_0x452e('0x20')],function(_0x251e47){return{'model':db[_0x251e47[_0x452e('0x22')]],'as':_0x251e47['as'],'attributes':_0x251e47['attributes']};}):[]};}):[]};}):[]:[]})[_0x452e('0xd')](function(_0x59dd4f){logger[_0x452e('0xe')](_0x452e('0x23'),_0x532946);logger[_0x452e('0x11')]('ShowSmsQueue',_0x532946,JSON['stringify'](_0x59dd4f));_0x74960b(_0x59dd4f);})[_0x452e('0x18')](function(_0x374b5f){logger[_0x452e('0x14')](_0x452e('0x23'),_0x374b5f[_0x452e('0x16')],_0x532946);_0x297aff(_0x46626c[_0x452e('0x14')](0x1f4,_0x374b5f['message']));});});};
\ No newline at end of file
index 56e7e0a..a489473 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0806=['length','smsQueue:','./smsQueue.events','remove','update','emit','removeListener','register'];(function(_0x4bf6f9,_0x32229c){var _0x281380=function(_0x14a91a){while(--_0x14a91a){_0x4bf6f9['push'](_0x4bf6f9['shift']());}};_0x281380(++_0x32229c);}(_0x0806,0x11a));var _0x6080=function(_0x552475,_0xfa1597){_0x552475=_0x552475-0x0;var _0x5171a6=_0x0806[_0x552475];return _0x5171a6;};'use strict';var SmsQueueEvents=require(_0x6080('0x0'));var events=['save',_0x6080('0x1'),_0x6080('0x2')];function createListener(_0x5723b6,_0x361671){return function(_0x2acc73){_0x361671[_0x6080('0x3')](_0x5723b6,_0x2acc73);};}function removeListener(_0x5ba28d,_0x9d182f){return function(){SmsQueueEvents[_0x6080('0x4')](_0x5ba28d,_0x9d182f);};}exports[_0x6080('0x5')]=function(_0x4e6fd1){for(var _0x2c066d=0x0,_0x21003b=events[_0x6080('0x6')];_0x2c066d<_0x21003b;_0x2c066d++){var _0x86e6f8=events[_0x2c066d];var _0x46edc8=createListener(_0x6080('0x7')+_0x86e6f8,_0x4e6fd1);SmsQueueEvents['on'](_0x86e6f8,_0x46edc8);}};
\ No newline at end of file
+var _0xf0b5=['length','smsQueue:','./smsQueue.events','save','remove','update','removeListener','register'];(function(_0x2c6887,_0x32e8ee){var _0xd10509=function(_0x69dc47){while(--_0x69dc47){_0x2c6887['push'](_0x2c6887['shift']());}};_0xd10509(++_0x32e8ee);}(_0xf0b5,0x162));var _0x5f0b=function(_0x21b362,_0x340fc6){_0x21b362=_0x21b362-0x0;var _0x2afe43=_0xf0b5[_0x21b362];return _0x2afe43;};'use strict';var SmsQueueEvents=require(_0x5f0b('0x0'));var events=[_0x5f0b('0x1'),_0x5f0b('0x2'),_0x5f0b('0x3')];function createListener(_0x20d217,_0x2cd121){return function(_0x12a40c){_0x2cd121['emit'](_0x20d217,_0x12a40c);};}function removeListener(_0x47b5b3,_0x4c9b91){return function(){SmsQueueEvents[_0x5f0b('0x4')](_0x47b5b3,_0x4c9b91);};}exports[_0x5f0b('0x5')]=function(_0x305bdd){for(var _0x26aa8a=0x0,_0x21e014=events[_0x5f0b('0x6')];_0x26aa8a<_0x21e014;_0x26aa8a++){var _0x1149ef=events[_0x26aa8a];var _0x23e427=createListener(_0x5f0b('0x7')+_0x1149ef,_0x305bdd);SmsQueueEvents['on'](_0x1149ef,_0x23e427);}};
\ No newline at end of file
index 58e049b..dfef90e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x40e1=['exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','get','isAuthenticated','index','/describe','/:id','show','post','create','put','update'];(function(_0x220708,_0x4441b8){var _0x4547fd=function(_0x5f461e){while(--_0x5f461e){_0x220708['push'](_0x220708['shift']());}};_0x4547fd(++_0x4441b8);}(_0x40e1,0x1e7));var _0x140e=function(_0x38ecda,_0x3b551e){_0x38ecda=_0x38ecda-0x0;var _0x3fa8f3=_0x40e1[_0x38ecda];return _0x3fa8f3;};'use strict';var multer=require(_0x140e('0x0'));var util=require('util');var path=require(_0x140e('0x1'));var timeout=require(_0x140e('0x2'));var express=require(_0x140e('0x3'));var router=express[_0x140e('0x4')]();var fs_extra=require(_0x140e('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x140e('0x6'));var config=require('../../config/environment');var controller=require('./smsQueueReport.controller');router[_0x140e('0x7')]('/',auth[_0x140e('0x8')](),controller[_0x140e('0x9')]);router['get'](_0x140e('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x140e('0x7')](_0x140e('0xb'),auth[_0x140e('0x8')](),controller[_0x140e('0xc')]);router[_0x140e('0xd')]('/',auth[_0x140e('0x8')](),controller[_0x140e('0xe')]);router[_0x140e('0xf')](_0x140e('0xb'),auth['isAuthenticated'](),controller[_0x140e('0x10')]);router['delete'](_0x140e('0xb'),auth[_0x140e('0x8')](),controller['destroy']);module[_0x140e('0x11')]=router;
\ No newline at end of file
+var _0x3fe7=['util','path','connect-timeout','Router','../../components/auth/service','../../config/environment','./smsQueueReport.controller','isAuthenticated','get','/describe','describe','/:id','show','post','put','update','destroy','exports','multer'];(function(_0x9a3739,_0x7fbbaa){var _0x281ba4=function(_0x114f19){while(--_0x114f19){_0x9a3739['push'](_0x9a3739['shift']());}};_0x281ba4(++_0x7fbbaa);}(_0x3fe7,0x97));var _0x73fe=function(_0xd553ab,_0x788918){_0xd553ab=_0xd553ab-0x0;var _0x215442=_0x3fe7[_0xd553ab];return _0x215442;};'use strict';var multer=require(_0x73fe('0x0'));var util=require(_0x73fe('0x1'));var path=require(_0x73fe('0x2'));var timeout=require(_0x73fe('0x3'));var express=require('express');var router=express[_0x73fe('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x73fe('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x73fe('0x6'));var controller=require(_0x73fe('0x7'));router['get']('/',auth[_0x73fe('0x8')](),controller['index']);router[_0x73fe('0x9')](_0x73fe('0xa'),auth[_0x73fe('0x8')](),controller[_0x73fe('0xb')]);router[_0x73fe('0x9')](_0x73fe('0xc'),auth[_0x73fe('0x8')](),controller[_0x73fe('0xd')]);router[_0x73fe('0xe')]('/',auth['isAuthenticated'](),controller['create']);router[_0x73fe('0xf')](_0x73fe('0xc'),auth[_0x73fe('0x8')](),controller[_0x73fe('0x10')]);router['delete'](_0x73fe('0xc'),auth[_0x73fe('0x8')](),controller[_0x73fe('0x11')]);module[_0x73fe('0x12')]=router;
\ No newline at end of file
index 5f49db6..aa88c3c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x62ad=['moment','sequelize','STRING','DATE'];(function(_0x130581,_0x3d6ac6){var _0x2c49e5=function(_0x568e00){while(--_0x568e00){_0x130581['push'](_0x130581['shift']());}};_0x2c49e5(++_0x3d6ac6);}(_0x62ad,0x134));var _0xd62a=function(_0x53608f,_0x1336c8){_0x53608f=_0x53608f-0x0;var _0x44fa5c=_0x62ad[_0x53608f];return _0x44fa5c;};'use strict';var moment=require(_0xd62a('0x0'));var Sequelize=require(_0xd62a('0x1'));module['exports']={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize[_0xd62a('0x2')]},'joinAt':{'type':Sequelize[_0xd62a('0x3')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize[_0xd62a('0x3')]},'reason':{'type':Sequelize[_0xd62a('0x2')]}};
\ No newline at end of file
+var _0x92a7=['moment','sequelize','exports','STRING','DATE'];(function(_0x52f4b8,_0x5eaed9){var _0x52c0f9=function(_0x4a5e95){while(--_0x4a5e95){_0x52f4b8['push'](_0x52f4b8['shift']());}};_0x52c0f9(++_0x5eaed9);}(_0x92a7,0x140));var _0x792a=function(_0x31ccd2,_0x17e986){_0x31ccd2=_0x31ccd2-0x0;var _0x5a67fd=_0x92a7[_0x31ccd2];return _0x5a67fd;};'use strict';var moment=require(_0x792a('0x0'));var Sequelize=require(_0x792a('0x1'));module[_0x792a('0x2')]={'uniqueid':{'type':Sequelize[_0x792a('0x3')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0x792a('0x4')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0x792a('0x4')]},'exitAt':{'type':Sequelize[_0x792a('0x4')]},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 14cfd14..7bece29 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x31bd=['then','destroy','end','send','index','SmsQueueReport','rawAttributes','key','model','map','name','query','keys','filters','intersection','attributes','fields','length','order','sort','where','filter','merge','type','VIRTUAL','options','includeAll','include','catch','show','params','find','create','body','describe','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json','apply','save','update'];(function(_0x2e1b5d,_0x234e32){var _0x21f98f=function(_0x2bbee1){while(--_0x2bbee1){_0x2e1b5d['push'](_0x2e1b5d['shift']());}};_0x21f98f(++_0x234e32);}(_0x31bd,0x6e));var _0xd31b=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x31bd[_0x3b380d];return _0x54502b;};'use strict';var emlformat=require(_0xd31b('0x0'));var rimraf=require(_0xd31b('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xd31b('0x2'));var rp=require(_0xd31b('0x3'));var moment=require(_0xd31b('0x4'));var BPromise=require(_0xd31b('0x5'));var Mustache=require(_0xd31b('0x6'));var util=require(_0xd31b('0x7'));var path=require(_0xd31b('0x8'));var sox=require(_0xd31b('0x9'));var csv=require(_0xd31b('0xa'));var ejs=require(_0xd31b('0xb'));var fs=require('fs');var fs_extra=require(_0xd31b('0xc'));var _=require(_0xd31b('0xd'));var squel=require(_0xd31b('0xe'));var crypto=require(_0xd31b('0xf'));var jsforce=require(_0xd31b('0x10'));var deskjs=require(_0xd31b('0x11'));var toCsv=require('to-csv');var querystring=require(_0xd31b('0x12'));var Papa=require(_0xd31b('0x13'));var Redis=require(_0xd31b('0x14'));var authService=require(_0xd31b('0x15'));var qs=require(_0xd31b('0x16'));var as=require(_0xd31b('0x17'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xd31b('0x18'))(_0xd31b('0x19'));var utils=require(_0xd31b('0x1a'));var config=require('../../config/environment');var licenseUtil=require(_0xd31b('0x1b'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3a96b1,_0x316952){_0x316952=_0x316952||0xcc;return function(_0x4c6202){if(_0x4c6202){return _0x3a96b1[_0xd31b('0x1c')](_0x316952);}return _0x3a96b1[_0xd31b('0x1d')](_0x316952)['end']();};}function respondWithResult(_0x12b5b0,_0x5736de){_0x5736de=_0x5736de||0xc8;return function(_0x4ad4a1){if(_0x4ad4a1){return _0x12b5b0['status'](_0x5736de)['json'](_0x4ad4a1);}};}function respondWithFilteredResult(_0x135fe5,_0x1148d3){return function(_0x2ed5c7){if(_0x2ed5c7){var _0x340b7d=typeof _0x1148d3[_0xd31b('0x1e')]===_0xd31b('0x1f')&&typeof _0x1148d3[_0xd31b('0x20')]===_0xd31b('0x1f');var _0x510822=_0x2ed5c7[_0xd31b('0x21')];var _0x511110=_0x340b7d?0x0:_0x1148d3[_0xd31b('0x1e')];var _0x126f70=_0x340b7d?_0x2ed5c7['count']:_0x1148d3[_0xd31b('0x1e')]+_0x1148d3['limit'];var _0x4f9b22;if(_0x126f70>=_0x510822){_0x126f70=_0x510822;_0x4f9b22=0xc8;}else{_0x4f9b22=0xce;}_0x135fe5[_0xd31b('0x1d')](_0x4f9b22);return _0x135fe5[_0xd31b('0x22')](_0xd31b('0x23'),_0x511110+'-'+_0x126f70+'/'+_0x510822)[_0xd31b('0x24')](_0x2ed5c7);}return null;};}function patchUpdates(_0x1bded5){return function(_0x332854){try{jsonpatch[_0xd31b('0x25')](_0x332854,_0x1bded5,!![]);}catch(_0x522eb0){return BPromise['reject'](_0x522eb0);}return _0x332854[_0xd31b('0x26')]();};}function saveUpdates(_0x57b4fb,_0x39e412){return function(_0x19a089){if(_0x19a089){return _0x19a089[_0xd31b('0x27')](_0x57b4fb)[_0xd31b('0x28')](function(_0x29f093){return _0x29f093;});}return null;};}function removeEntity(_0x5901dd,_0x38dfb7){return function(_0x985cd8){if(_0x985cd8){return _0x985cd8[_0xd31b('0x29')]()[_0xd31b('0x28')](function(){_0x5901dd[_0xd31b('0x1d')](0xcc)[_0xd31b('0x2a')]();});}};}function handleEntityNotFound(_0x35a7c2,_0x56ea15){return function(_0x1a2f45){if(!_0x1a2f45){_0x35a7c2[_0xd31b('0x1c')](0x194);}return _0x1a2f45;};}function handleError(_0x88c454,_0x208aaf){_0x208aaf=_0x208aaf||0x1f4;return function(_0x35d1ae){logger['error'](_0x35d1ae['stack']);if(_0x35d1ae['name']){delete _0x35d1ae['name'];}_0x88c454[_0xd31b('0x1d')](_0x208aaf)[_0xd31b('0x2b')](_0x35d1ae);};}exports[_0xd31b('0x2c')]=function(_0x33c465,_0x44baf3){var _0x277365={},_0x3ee098={},_0x5c8161={'count':0x0,'rows':[]};var _0x233ce8=_['map'](db[_0xd31b('0x2d')][_0xd31b('0x2e')],function(_0x2295dd){return{'name':_0x2295dd['fieldName'],'type':_0x2295dd['type'][_0xd31b('0x2f')]};});_0x3ee098[_0xd31b('0x30')]=_[_0xd31b('0x31')](_0x233ce8,_0xd31b('0x32'));_0x3ee098[_0xd31b('0x33')]=_[_0xd31b('0x34')](_0x33c465['query']);_0x3ee098[_0xd31b('0x35')]=_[_0xd31b('0x36')](_0x3ee098[_0xd31b('0x30')],_0x3ee098['query']);_0x277365[_0xd31b('0x37')]=_[_0xd31b('0x36')](_0x3ee098['model'],qs[_0xd31b('0x38')](_0x33c465[_0xd31b('0x33')]['fields']));_0x277365[_0xd31b('0x37')]=_0x277365[_0xd31b('0x37')][_0xd31b('0x39')]?_0x277365['attributes']:_0x3ee098[_0xd31b('0x30')];if(!_0x33c465[_0xd31b('0x33')]['hasOwnProperty']('nolimit')){_0x277365[_0xd31b('0x20')]=qs[_0xd31b('0x20')](_0x33c465[_0xd31b('0x33')]['limit']);_0x277365[_0xd31b('0x1e')]=qs[_0xd31b('0x1e')](_0x33c465[_0xd31b('0x33')][_0xd31b('0x1e')]);}_0x277365[_0xd31b('0x3a')]=qs[_0xd31b('0x3b')](_0x33c465[_0xd31b('0x33')][_0xd31b('0x3b')]);_0x277365[_0xd31b('0x3c')]=qs['filters'](_['pick'](_0x33c465['query'],_0x3ee098[_0xd31b('0x35')]),_0x233ce8);if(_0x33c465['query'][_0xd31b('0x3d')]){_0x277365[_0xd31b('0x3c')]=_[_0xd31b('0x3e')](_0x277365['where'],{'$or':_[_0xd31b('0x31')](_0x233ce8,function(_0x365f6d){if(_0x365f6d[_0xd31b('0x3f')]!==_0xd31b('0x40')){var _0x32aa12={};_0x32aa12[_0x365f6d[_0xd31b('0x32')]]={'$like':'%'+_0x33c465[_0xd31b('0x33')][_0xd31b('0x3d')]+'%'};return _0x32aa12;}})});}_0x277365=_[_0xd31b('0x3e')]({},_0x277365,_0x33c465[_0xd31b('0x41')]);var _0xb55d63={'where':_0x277365[_0xd31b('0x3c')]};return db[_0xd31b('0x2d')]['count'](_0xb55d63)[_0xd31b('0x28')](function(_0x507c03){_0x5c8161['count']=_0x507c03;if(_0x33c465[_0xd31b('0x33')][_0xd31b('0x42')]){_0x277365[_0xd31b('0x43')]=[{'all':!![]}];}return db['SmsQueueReport']['findAll'](_0x277365);})[_0xd31b('0x28')](function(_0x233700){_0x5c8161['rows']=_0x233700;return _0x5c8161;})[_0xd31b('0x28')](respondWithFilteredResult(_0x44baf3,_0x277365))[_0xd31b('0x44')](handleError(_0x44baf3,null));};exports[_0xd31b('0x45')]=function(_0xd924b1,_0x445d64){var _0x357f17={'raw':!![],'where':{'id':_0xd924b1[_0xd31b('0x46')]['id']}},_0x3076f6={};_0x3076f6['model']=_[_0xd31b('0x34')](db[_0xd31b('0x2d')][_0xd31b('0x2e')]);_0x3076f6['query']=_[_0xd31b('0x34')](_0xd924b1[_0xd31b('0x33')]);_0x3076f6['filters']=_[_0xd31b('0x36')](_0x3076f6[_0xd31b('0x30')],_0x3076f6['query']);_0x357f17[_0xd31b('0x37')]=_[_0xd31b('0x36')](_0x3076f6[_0xd31b('0x30')],qs[_0xd31b('0x38')](_0xd924b1[_0xd31b('0x33')][_0xd31b('0x38')]));_0x357f17[_0xd31b('0x37')]=_0x357f17[_0xd31b('0x37')][_0xd31b('0x39')]?_0x357f17[_0xd31b('0x37')]:_0x3076f6['model'];if(_0xd924b1[_0xd31b('0x33')][_0xd31b('0x42')]){_0x357f17[_0xd31b('0x43')]=[{'all':!![]}];}_0x357f17=_[_0xd31b('0x3e')]({},_0x357f17,_0xd924b1[_0xd31b('0x41')]);return db[_0xd31b('0x2d')][_0xd31b('0x47')](_0x357f17)[_0xd31b('0x28')](handleEntityNotFound(_0x445d64,null))[_0xd31b('0x28')](respondWithResult(_0x445d64,null))[_0xd31b('0x44')](handleError(_0x445d64,null));};exports[_0xd31b('0x48')]=function(_0xc161fc,_0x1ca54c){return db['SmsQueueReport'][_0xd31b('0x48')](_0xc161fc[_0xd31b('0x49')],{})['then'](respondWithResult(_0x1ca54c,0xc9))[_0xd31b('0x44')](handleError(_0x1ca54c,null));};exports[_0xd31b('0x27')]=function(_0x163359,_0x5aeaec){if(_0x163359[_0xd31b('0x49')]['id']){delete _0x163359[_0xd31b('0x49')]['id'];}return db[_0xd31b('0x2d')][_0xd31b('0x47')]({'where':{'id':_0x163359['params']['id']}})[_0xd31b('0x28')](handleEntityNotFound(_0x5aeaec,null))[_0xd31b('0x28')](saveUpdates(_0x163359[_0xd31b('0x49')],null))[_0xd31b('0x28')](respondWithResult(_0x5aeaec,null))[_0xd31b('0x44')](handleError(_0x5aeaec,null));};exports[_0xd31b('0x29')]=function(_0x24b7e4,_0x5aeb1d){return db['SmsQueueReport'][_0xd31b('0x47')]({'where':{'id':_0x24b7e4[_0xd31b('0x46')]['id']}})['then'](handleEntityNotFound(_0x5aeb1d,null))[_0xd31b('0x28')](removeEntity(_0x5aeb1d,null))['catch'](handleError(_0x5aeb1d,null));};exports[_0xd31b('0x4a')]=function(_0x3fd79c,_0x30ece8){return db['SmsQueueReport'][_0xd31b('0x4a')]()[_0xd31b('0x28')](respondWithResult(_0x30ece8,null))[_0xd31b('0x44')](handleError(_0x30ece8,null));};
\ No newline at end of file
+var _0xe774=['name','send','map','SmsQueueReport','fieldName','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','filter','where','merge','VIRTUAL','options','includeAll','include','rows','catch','params','rawAttributes','length','create','body','describe','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','lodash','squel','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','set','apply','save','update','then','destroy','end','error','stack'];(function(_0x1fcb14,_0x380165){var _0x431f52=function(_0x20b003){while(--_0x20b003){_0x1fcb14['push'](_0x1fcb14['shift']());}};_0x431f52(++_0x380165);}(_0xe774,0x64));var _0x4e77=function(_0x454994,_0x1319b0){_0x454994=_0x454994-0x0;var _0x43f065=_0xe774[_0x454994];return _0x43f065;};'use strict';var emlformat=require(_0x4e77('0x0'));var rimraf=require(_0x4e77('0x1'));var zipdir=require(_0x4e77('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x4e77('0x3'));var moment=require(_0x4e77('0x4'));var BPromise=require(_0x4e77('0x5'));var Mustache=require(_0x4e77('0x6'));var util=require(_0x4e77('0x7'));var path=require(_0x4e77('0x8'));var sox=require(_0x4e77('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x4e77('0xa'));var squel=require(_0x4e77('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x4e77('0xc'));var toCsv=require(_0x4e77('0xd'));var querystring=require(_0x4e77('0xe'));var Papa=require(_0x4e77('0xf'));var Redis=require('ioredis');var authService=require(_0x4e77('0x10'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4e77('0x11'));var logger=require(_0x4e77('0x12'))('api');var utils=require(_0x4e77('0x13'));var config=require(_0x4e77('0x14'));var licenseUtil=require(_0x4e77('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x573752,_0x3338f1){_0x3338f1=_0x3338f1||0xcc;return function(_0x30ca54){if(_0x30ca54){return _0x573752[_0x4e77('0x16')](_0x3338f1);}return _0x573752['status'](_0x3338f1)['end']();};}function respondWithResult(_0x5650ec,_0x2414f1){_0x2414f1=_0x2414f1||0xc8;return function(_0x4a4ec5){if(_0x4a4ec5){return _0x5650ec[_0x4e77('0x17')](_0x2414f1)[_0x4e77('0x18')](_0x4a4ec5);}};}function respondWithFilteredResult(_0x3ca59a,_0x43b6a6){return function(_0x585eba){if(_0x585eba){var _0xa0f83c=typeof _0x43b6a6[_0x4e77('0x19')]===_0x4e77('0x1a')&&typeof _0x43b6a6[_0x4e77('0x1b')]===_0x4e77('0x1a');var _0x2d7ba4=_0x585eba[_0x4e77('0x1c')];var _0x144f74=_0xa0f83c?0x0:_0x43b6a6[_0x4e77('0x19')];var _0x1348df=_0xa0f83c?_0x585eba[_0x4e77('0x1c')]:_0x43b6a6['offset']+_0x43b6a6[_0x4e77('0x1b')];var _0x5631ec;if(_0x1348df>=_0x2d7ba4){_0x1348df=_0x2d7ba4;_0x5631ec=0xc8;}else{_0x5631ec=0xce;}_0x3ca59a[_0x4e77('0x17')](_0x5631ec);return _0x3ca59a[_0x4e77('0x1d')]('Content-Range',_0x144f74+'-'+_0x1348df+'/'+_0x2d7ba4)[_0x4e77('0x18')](_0x585eba);}return null;};}function patchUpdates(_0x264b47){return function(_0x202cf1){try{jsonpatch[_0x4e77('0x1e')](_0x202cf1,_0x264b47,!![]);}catch(_0x53fc80){return BPromise['reject'](_0x53fc80);}return _0x202cf1[_0x4e77('0x1f')]();};}function saveUpdates(_0x1b5ab5,_0x1dcdf8){return function(_0x4eab42){if(_0x4eab42){return _0x4eab42[_0x4e77('0x20')](_0x1b5ab5)[_0x4e77('0x21')](function(_0x4c5d32){return _0x4c5d32;});}return null;};}function removeEntity(_0xa6bf3e,_0x18b93c){return function(_0x4315ac){if(_0x4315ac){return _0x4315ac[_0x4e77('0x22')]()[_0x4e77('0x21')](function(){_0xa6bf3e[_0x4e77('0x17')](0xcc)[_0x4e77('0x23')]();});}};}function handleEntityNotFound(_0x14b733,_0x50c05c){return function(_0x1ff1e9){if(!_0x1ff1e9){_0x14b733[_0x4e77('0x16')](0x194);}return _0x1ff1e9;};}function handleError(_0x3849fa,_0x87a752){_0x87a752=_0x87a752||0x1f4;return function(_0x4e0350){logger[_0x4e77('0x24')](_0x4e0350[_0x4e77('0x25')]);if(_0x4e0350[_0x4e77('0x26')]){delete _0x4e0350[_0x4e77('0x26')];}_0x3849fa['status'](_0x87a752)[_0x4e77('0x27')](_0x4e0350);};}exports['index']=function(_0x3752d6,_0x29ef0b){var _0x2ed9ca={},_0x3b0058={},_0x3aed86={'count':0x0,'rows':[]};var _0x5540d9=_[_0x4e77('0x28')](db[_0x4e77('0x29')]['rawAttributes'],function(_0x12a281){return{'name':_0x12a281[_0x4e77('0x2a')],'type':_0x12a281['type'][_0x4e77('0x2b')]};});_0x3b0058[_0x4e77('0x2c')]=_[_0x4e77('0x28')](_0x5540d9,_0x4e77('0x26'));_0x3b0058[_0x4e77('0x2d')]=_[_0x4e77('0x2e')](_0x3752d6[_0x4e77('0x2d')]);_0x3b0058[_0x4e77('0x2f')]=_[_0x4e77('0x30')](_0x3b0058['model'],_0x3b0058[_0x4e77('0x2d')]);_0x2ed9ca[_0x4e77('0x31')]=_[_0x4e77('0x30')](_0x3b0058[_0x4e77('0x2c')],qs[_0x4e77('0x32')](_0x3752d6[_0x4e77('0x2d')][_0x4e77('0x32')]));_0x2ed9ca[_0x4e77('0x31')]=_0x2ed9ca[_0x4e77('0x31')]['length']?_0x2ed9ca['attributes']:_0x3b0058[_0x4e77('0x2c')];if(!_0x3752d6['query'][_0x4e77('0x33')](_0x4e77('0x34'))){_0x2ed9ca[_0x4e77('0x1b')]=qs[_0x4e77('0x1b')](_0x3752d6[_0x4e77('0x2d')]['limit']);_0x2ed9ca[_0x4e77('0x19')]=qs[_0x4e77('0x19')](_0x3752d6['query'][_0x4e77('0x19')]);}_0x2ed9ca['order']=qs[_0x4e77('0x35')](_0x3752d6[_0x4e77('0x2d')][_0x4e77('0x35')]);_0x2ed9ca['where']=qs[_0x4e77('0x2f')](_['pick'](_0x3752d6[_0x4e77('0x2d')],_0x3b0058[_0x4e77('0x2f')]),_0x5540d9);if(_0x3752d6[_0x4e77('0x2d')][_0x4e77('0x36')]){_0x2ed9ca[_0x4e77('0x37')]=_[_0x4e77('0x38')](_0x2ed9ca['where'],{'$or':_[_0x4e77('0x28')](_0x5540d9,function(_0x83e62d){if(_0x83e62d['type']!==_0x4e77('0x39')){var _0x105b95={};_0x105b95[_0x83e62d['name']]={'$like':'%'+_0x3752d6[_0x4e77('0x2d')][_0x4e77('0x36')]+'%'};return _0x105b95;}})});}_0x2ed9ca=_[_0x4e77('0x38')]({},_0x2ed9ca,_0x3752d6[_0x4e77('0x3a')]);var _0x554cb1={'where':_0x2ed9ca[_0x4e77('0x37')]};return db[_0x4e77('0x29')][_0x4e77('0x1c')](_0x554cb1)['then'](function(_0x4e7f47){_0x3aed86[_0x4e77('0x1c')]=_0x4e7f47;if(_0x3752d6['query'][_0x4e77('0x3b')]){_0x2ed9ca[_0x4e77('0x3c')]=[{'all':!![]}];}return db[_0x4e77('0x29')]['findAll'](_0x2ed9ca);})[_0x4e77('0x21')](function(_0x4ec356){_0x3aed86[_0x4e77('0x3d')]=_0x4ec356;return _0x3aed86;})[_0x4e77('0x21')](respondWithFilteredResult(_0x29ef0b,_0x2ed9ca))[_0x4e77('0x3e')](handleError(_0x29ef0b,null));};exports['show']=function(_0x2007ec,_0x2b25a5){var _0x4ffed5={'raw':!![],'where':{'id':_0x2007ec[_0x4e77('0x3f')]['id']}},_0x30d940={};_0x30d940['model']=_[_0x4e77('0x2e')](db['SmsQueueReport'][_0x4e77('0x40')]);_0x30d940['query']=_[_0x4e77('0x2e')](_0x2007ec['query']);_0x30d940[_0x4e77('0x2f')]=_[_0x4e77('0x30')](_0x30d940[_0x4e77('0x2c')],_0x30d940['query']);_0x4ffed5['attributes']=_[_0x4e77('0x30')](_0x30d940[_0x4e77('0x2c')],qs['fields'](_0x2007ec['query'][_0x4e77('0x32')]));_0x4ffed5[_0x4e77('0x31')]=_0x4ffed5['attributes'][_0x4e77('0x41')]?_0x4ffed5[_0x4e77('0x31')]:_0x30d940[_0x4e77('0x2c')];if(_0x2007ec[_0x4e77('0x2d')][_0x4e77('0x3b')]){_0x4ffed5['include']=[{'all':!![]}];}_0x4ffed5=_['merge']({},_0x4ffed5,_0x2007ec[_0x4e77('0x3a')]);return db[_0x4e77('0x29')]['find'](_0x4ffed5)[_0x4e77('0x21')](handleEntityNotFound(_0x2b25a5,null))[_0x4e77('0x21')](respondWithResult(_0x2b25a5,null))[_0x4e77('0x3e')](handleError(_0x2b25a5,null));};exports[_0x4e77('0x42')]=function(_0xde997e,_0x5f1c6c){return db[_0x4e77('0x29')][_0x4e77('0x42')](_0xde997e[_0x4e77('0x43')],{})['then'](respondWithResult(_0x5f1c6c,0xc9))[_0x4e77('0x3e')](handleError(_0x5f1c6c,null));};exports[_0x4e77('0x20')]=function(_0x5a3bcc,_0x42e86e){if(_0x5a3bcc['body']['id']){delete _0x5a3bcc[_0x4e77('0x43')]['id'];}return db[_0x4e77('0x29')]['find']({'where':{'id':_0x5a3bcc[_0x4e77('0x3f')]['id']}})['then'](handleEntityNotFound(_0x42e86e,null))[_0x4e77('0x21')](saveUpdates(_0x5a3bcc[_0x4e77('0x43')],null))[_0x4e77('0x21')](respondWithResult(_0x42e86e,null))[_0x4e77('0x3e')](handleError(_0x42e86e,null));};exports[_0x4e77('0x22')]=function(_0x48ab1f,_0x59b3c1){return db['SmsQueueReport']['find']({'where':{'id':_0x48ab1f[_0x4e77('0x3f')]['id']}})['then'](handleEntityNotFound(_0x59b3c1,null))[_0x4e77('0x21')](removeEntity(_0x59b3c1,null))[_0x4e77('0x3e')](handleError(_0x59b3c1,null));};exports[_0x4e77('0x44')]=function(_0x5d358a,_0x34d7df){return db['SmsQueueReport'][_0x4e77('0x44')]()[_0x4e77('0x21')](respondWithResult(_0x34d7df,null))[_0x4e77('0x3e')](handleError(_0x34d7df,null));};
\ No newline at end of file
index 40ab4e0..30d7899 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['define','report_sms_queue','uniqueid','lodash','util','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x1f3b4d,_0x2c3c32){var _0xfd352a=function(_0x4c1fb2){while(--_0x4c1fb2){_0x1f3b4d['push'](_0x1f3b4d['shift']());}};_0xfd352a(++_0x2c3c32);}(_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 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('./smsQueueReport.attributes');module['exports']=function(_0x3f8b6f,_0x227c63){return _0x3f8b6f[_0x0d8b('0x7')]('SmsQueueReport',attributes,{'tableName':_0x0d8b('0x8'),'paranoid':![],'indexes':[{'name':_0x0d8b('0x9'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xa9e0=['define','SmsQueueReport','uniqueid','lodash','util','../../config/logger','bluebird','path','rimraf','../../config/environment','./smsQueueReport.attributes','exports'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1c546c,_0x5c57cb){_0x1c546c=_0x1c546c-0x0;var _0x2cc384=_0xa9e0[_0x1c546c];return _0x2cc384;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var logger=require(_0x0a9e('0x2'))('api');var moment=require('moment');var BPromise=require(_0x0a9e('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0a9e('0x4'));var rimraf=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var attributes=require(_0x0a9e('0x7'));module[_0x0a9e('0x8')]=function(_0x57b080,_0x219af0){return _0x57b080[_0x0a9e('0x9')](_0x0a9e('0xa'),attributes,{'tableName':'report_sms_queue','paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x0a9e('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index 95eedf2..d85516a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x65fe=['UpdateSmsQueueReport','update','where','attributes','limit','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','then','info','request\x20sent','debug','SmsQueueReport,\x20%s,\x20%s,\x20%s','error','code','SmsQueueReport,\x20%s,\x20%s','message','result','catch','CreateSmsQueueReport','SmsQueueReport','create','options','raw','stringify'];(function(_0x475f88,_0x4029d5){var _0x5201a9=function(_0x314414){while(--_0x314414){_0x475f88['push'](_0x475f88['shift']());}};_0x5201a9(++_0x4029d5);}(_0x65fe,0x165));var _0xe65f=function(_0x53256e,_0xbec028){_0x53256e=_0x53256e-0x0;var _0x52a80b=_0x65fe[_0x53256e];return _0x52a80b;};'use strict';var _=require('lodash');var util=require(_0xe65f('0x0'));var moment=require(_0xe65f('0x1'));var BPromise=require(_0xe65f('0x2'));var rs=require(_0xe65f('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xe65f('0x4'))['db'];var utils=require(_0xe65f('0x5'));var logger=require('../../config/logger')(_0xe65f('0x6'));var config=require(_0xe65f('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xe65f('0x8')][_0xe65f('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1e1e24,_0x3c6d62,_0x1b9a64){return new BPromise(function(_0x3d8658,_0x202f6e){return client['request'](_0x1e1e24,_0x1b9a64)[_0xe65f('0xa')](function(_0x2ab6a4){logger[_0xe65f('0xb')]('SmsQueueReport,\x20%s,\x20%s',_0x3c6d62,_0xe65f('0xc'));logger[_0xe65f('0xd')](_0xe65f('0xe'),_0x3c6d62,_0xe65f('0xc'),JSON['stringify'](_0x2ab6a4));if(_0x2ab6a4[_0xe65f('0xf')]){if(_0x2ab6a4[_0xe65f('0xf')][_0xe65f('0x10')]===0x1f4){logger['error'](_0xe65f('0x11'),_0x3c6d62,_0x2ab6a4[_0xe65f('0xf')][_0xe65f('0x12')]);return _0x202f6e(_0x2ab6a4[_0xe65f('0xf')][_0xe65f('0x12')]);}logger[_0xe65f('0xf')](_0xe65f('0x11'),_0x3c6d62,_0x2ab6a4['error'][_0xe65f('0x12')]);return _0x3d8658(_0x2ab6a4[_0xe65f('0xf')][_0xe65f('0x12')]);}else{logger['info'](_0xe65f('0x11'),_0x3c6d62,_0xe65f('0xc'));_0x3d8658(_0x2ab6a4[_0xe65f('0x13')][_0xe65f('0x12')]);}})[_0xe65f('0x14')](function(_0x2270de){logger['error'](_0xe65f('0x11'),_0x3c6d62,_0x2270de);_0x202f6e(_0x2270de);});});}exports[_0xe65f('0x15')]=function(_0x2ffa4d){var _0x53f6a2=this;return new Promise(function(_0x595f91,_0x2eb18d){return db[_0xe65f('0x16')][_0xe65f('0x17')](_0x2ffa4d['body'],{'raw':_0x2ffa4d[_0xe65f('0x18')]?_0x2ffa4d['options'][_0xe65f('0x19')]===undefined?!![]:![]:!![]})[_0xe65f('0xa')](function(_0x1cc371){logger[_0xe65f('0xb')](_0xe65f('0x15'),_0x2ffa4d);logger['debug'](_0xe65f('0x15'),_0x2ffa4d,JSON[_0xe65f('0x1a')](_0x1cc371));_0x595f91(_0x1cc371);})[_0xe65f('0x14')](function(_0x5d63f4){logger[_0xe65f('0xf')]('CreateSmsQueueReport',_0x5d63f4[_0xe65f('0x12')],_0x2ffa4d);_0x2eb18d(_0x53f6a2['error'](0x1f4,_0x5d63f4[_0xe65f('0x12')]));});});};exports[_0xe65f('0x1b')]=function(_0x4f0bad){var _0x3a1d9a=this;return new Promise(function(_0x23e33b,_0x17be63){return db[_0xe65f('0x16')][_0xe65f('0x1c')](_0x4f0bad['body'],{'raw':_0x4f0bad[_0xe65f('0x18')]?_0x4f0bad[_0xe65f('0x18')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4f0bad[_0xe65f('0x18')]?_0x4f0bad[_0xe65f('0x18')][_0xe65f('0x1d')]||null:null,'attributes':_0x4f0bad[_0xe65f('0x18')]?_0x4f0bad[_0xe65f('0x18')][_0xe65f('0x1e')]||null:null,'limit':_0x4f0bad['options']?_0x4f0bad['options'][_0xe65f('0x1f')]||null:null})[_0xe65f('0xa')](function(_0x8965b0){logger[_0xe65f('0xb')]('UpdateSmsQueueReport',_0x4f0bad);logger[_0xe65f('0xd')]('UpdateSmsQueueReport',_0x4f0bad,JSON[_0xe65f('0x1a')](_0x8965b0));_0x23e33b(_0x8965b0);})[_0xe65f('0x14')](function(_0x4cad48){logger[_0xe65f('0xf')](_0xe65f('0x1b'),_0x4cad48[_0xe65f('0x12')],_0x4f0bad);_0x17be63(_0x3a1d9a['error'](0x1f4,_0x4cad48['message']));});});};
\ No newline at end of file
+var _0x5d84=['request\x20sent','debug','SmsQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','SmsQueueReport,\x20%s,\x20%s','info','result','catch','SmsQueueReport','create','body','options','CreateSmsQueueReport','UpdateSmsQueueReport','raw','where','limit','lodash','util','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','request','then'];(function(_0x3bf6a0,_0x2750ef){var _0x1407fa=function(_0x473864){while(--_0x473864){_0x3bf6a0['push'](_0x3bf6a0['shift']());}};_0x1407fa(++_0x2750ef);}(_0x5d84,0x188));var _0x45d8=function(_0x3931a4,_0x3ca58a){_0x3931a4=_0x3931a4-0x0;var _0x367518=_0x5d84[_0x3931a4];return _0x367518;};'use strict';var _=require(_0x45d8('0x0'));var util=require(_0x45d8('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x45d8('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x45d8('0x3'))['db'];var utils=require(_0x45d8('0x4'));var logger=require(_0x45d8('0x5'))('rpc');var config=require(_0x45d8('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x45d8('0x7')][_0x45d8('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x160aa3,_0x1b7bb4,_0x5f4fe1){return new BPromise(function(_0x32c7b6,_0x3ad53a){return client[_0x45d8('0x9')](_0x160aa3,_0x5f4fe1)[_0x45d8('0xa')](function(_0x451492){logger['info']('SmsQueueReport,\x20%s,\x20%s',_0x1b7bb4,_0x45d8('0xb'));logger[_0x45d8('0xc')](_0x45d8('0xd'),_0x1b7bb4,_0x45d8('0xb'),JSON[_0x45d8('0xe')](_0x451492));if(_0x451492[_0x45d8('0xf')]){if(_0x451492[_0x45d8('0xf')][_0x45d8('0x10')]===0x1f4){logger[_0x45d8('0xf')]('SmsQueueReport,\x20%s,\x20%s',_0x1b7bb4,_0x451492[_0x45d8('0xf')][_0x45d8('0x11')]);return _0x3ad53a(_0x451492['error'][_0x45d8('0x11')]);}logger[_0x45d8('0xf')](_0x45d8('0x12'),_0x1b7bb4,_0x451492[_0x45d8('0xf')]['message']);return _0x32c7b6(_0x451492['error'][_0x45d8('0x11')]);}else{logger[_0x45d8('0x13')](_0x45d8('0x12'),_0x1b7bb4,_0x45d8('0xb'));_0x32c7b6(_0x451492[_0x45d8('0x14')][_0x45d8('0x11')]);}})[_0x45d8('0x15')](function(_0xa02e08){logger[_0x45d8('0xf')](_0x45d8('0x12'),_0x1b7bb4,_0xa02e08);_0x3ad53a(_0xa02e08);});});}exports['CreateSmsQueueReport']=function(_0x211387){var _0xb1e513=this;return new Promise(function(_0x1302eb,_0xfef2e2){return db[_0x45d8('0x16')][_0x45d8('0x17')](_0x211387[_0x45d8('0x18')],{'raw':_0x211387[_0x45d8('0x19')]?_0x211387['options']['raw']===undefined?!![]:![]:!![]})[_0x45d8('0xa')](function(_0x45bdb3){logger[_0x45d8('0x13')](_0x45d8('0x1a'),_0x211387);logger['debug'](_0x45d8('0x1a'),_0x211387,JSON[_0x45d8('0xe')](_0x45bdb3));_0x1302eb(_0x45bdb3);})['catch'](function(_0x1e7815){logger[_0x45d8('0xf')](_0x45d8('0x1a'),_0x1e7815[_0x45d8('0x11')],_0x211387);_0xfef2e2(_0xb1e513[_0x45d8('0xf')](0x1f4,_0x1e7815[_0x45d8('0x11')]));});});};exports[_0x45d8('0x1b')]=function(_0x530ace){var _0x265b42=this;return new Promise(function(_0x550c05,_0x154ea1){return db[_0x45d8('0x16')]['update'](_0x530ace[_0x45d8('0x18')],{'raw':_0x530ace[_0x45d8('0x19')]?_0x530ace[_0x45d8('0x19')][_0x45d8('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x530ace[_0x45d8('0x19')]?_0x530ace[_0x45d8('0x19')][_0x45d8('0x1d')]||null:null,'attributes':_0x530ace[_0x45d8('0x19')]?_0x530ace[_0x45d8('0x19')]['attributes']||null:null,'limit':_0x530ace['options']?_0x530ace['options'][_0x45d8('0x1e')]||null:null})[_0x45d8('0xa')](function(_0x353c50){logger[_0x45d8('0x13')]('UpdateSmsQueueReport',_0x530ace);logger[_0x45d8('0xc')]('UpdateSmsQueueReport',_0x530ace,JSON[_0x45d8('0xe')](_0x353c50));_0x550c05(_0x353c50);})[_0x45d8('0x15')](function(_0x83100d){logger[_0x45d8('0xf')](_0x45d8('0x1b'),_0x83100d[_0x45d8('0x11')],_0x530ace);_0x154ea1(_0x265b42[_0x45d8('0xf')](0x1f4,_0x83100d[_0x45d8('0x11')]));});});};
\ No newline at end of file
index 274ef22..fbda752 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0207=['../../config/environment','./smsTransferReport.controller','index','get','/describe','isAuthenticated','describe','/:id','post','create','delete','exports','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x3f5043,_0xddf662){var _0x5126ae=function(_0x937476){while(--_0x937476){_0x3f5043['push'](_0x3f5043['shift']());}};_0x5126ae(++_0xddf662);}(_0x0207,0x162));var _0x7020=function(_0x4e592c,_0x2ce3c9){_0x4e592c=_0x4e592c-0x0;var _0x5e7b33=_0x0207[_0x4e592c];return _0x5e7b33;};'use strict';var multer=require('multer');var util=require(_0x7020('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x7020('0x1'));var router=express[_0x7020('0x2')]();var fs_extra=require(_0x7020('0x3'));var auth=require(_0x7020('0x4'));var interaction=require(_0x7020('0x5'));var config=require(_0x7020('0x6'));var controller=require(_0x7020('0x7'));router['get']('/',auth['isAuthenticated'](),controller[_0x7020('0x8')]);router[_0x7020('0x9')](_0x7020('0xa'),auth[_0x7020('0xb')](),controller[_0x7020('0xc')]);router[_0x7020('0x9')](_0x7020('0xd'),auth['isAuthenticated'](),controller['show']);router[_0x7020('0xe')]('/',auth[_0x7020('0xb')](),controller[_0x7020('0xf')]);router['put'](_0x7020('0xd'),auth[_0x7020('0xb')](),controller['update']);router[_0x7020('0x10')](_0x7020('0xd'),auth[_0x7020('0xb')](),controller['destroy']);module[_0x7020('0x11')]=router;
\ No newline at end of file
+var _0x46ed=['util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./smsTransferReport.controller','get','isAuthenticated','index','/describe','describe','/:id','post','put','update','delete','destroy','multer'];(function(_0x1cd2ac,_0x718d01){var _0x50164a=function(_0x7218ba){while(--_0x7218ba){_0x1cd2ac['push'](_0x1cd2ac['shift']());}};_0x50164a(++_0x718d01);}(_0x46ed,0x168));var _0xd46e=function(_0x36ed48,_0x1ee0d4){_0x36ed48=_0x36ed48-0x0;var _0x51c63a=_0x46ed[_0x36ed48];return _0x51c63a;};'use strict';var multer=require(_0xd46e('0x0'));var util=require(_0xd46e('0x1'));var path=require('path');var timeout=require(_0xd46e('0x2'));var express=require(_0xd46e('0x3'));var router=express[_0xd46e('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xd46e('0x5'));var interaction=require(_0xd46e('0x6'));var config=require('../../config/environment');var controller=require(_0xd46e('0x7'));router[_0xd46e('0x8')]('/',auth[_0xd46e('0x9')](),controller[_0xd46e('0xa')]);router[_0xd46e('0x8')](_0xd46e('0xb'),auth[_0xd46e('0x9')](),controller[_0xd46e('0xc')]);router[_0xd46e('0x8')](_0xd46e('0xd'),auth[_0xd46e('0x9')](),controller['show']);router[_0xd46e('0xe')]('/',auth[_0xd46e('0x9')](),controller['create']);router[_0xd46e('0xf')](_0xd46e('0xd'),auth[_0xd46e('0x9')](),controller[_0xd46e('0x10')]);router[_0xd46e('0x11')](_0xd46e('0xd'),auth['isAuthenticated'](),controller[_0xd46e('0x12')]);module['exports']=router;
\ No newline at end of file
index 33b81bd..5ee06c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb43b=['DATE','NOW','moment','sequelize','STRING','ENUM','account','queue'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0xb43b,0x1b2));var _0xbb43=function(_0x2f0ff5,_0x48e184){_0x2f0ff5=_0x2f0ff5-0x0;var _0x5d2910=_0xb43b[_0x2f0ff5];return _0x5d2910;};'use strict';var moment=require(_0xbb43('0x0'));var Sequelize=require(_0xbb43('0x1'));module['exports']={'uniqueid':{'type':Sequelize[_0xbb43('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0xbb43('0x3')](_0xbb43('0x4'),'agent',_0xbb43('0x5')),'allowNull':![],'defaultValue':_0xbb43('0x5')},'transferredAt':{'type':Sequelize[_0xbb43('0x6')],'allowNull':![],'defaultValue':Sequelize[_0xbb43('0x7')]}};
\ No newline at end of file
+var _0xf3cd=['exports','STRING','ENUM','account','queue','DATE','moment','sequelize'];(function(_0x162091,_0x5d89e8){var _0x312b76=function(_0x62d75d){while(--_0x62d75d){_0x162091['push'](_0x162091['shift']());}};_0x312b76(++_0x5d89e8);}(_0xf3cd,0xfe));var _0xdf3c=function(_0x5a1cc9,_0x28f54d){_0x5a1cc9=_0x5a1cc9-0x0;var _0x471761=_0xf3cd[_0x5a1cc9];return _0x471761;};'use strict';var moment=require(_0xdf3c('0x0'));var Sequelize=require(_0xdf3c('0x1'));module[_0xdf3c('0x2')]={'uniqueid':{'type':Sequelize[_0xdf3c('0x3')],'allowNull':![]},'type':{'type':Sequelize[_0xdf3c('0x4')](_0xdf3c('0x5'),'agent',_0xdf3c('0x6')),'allowNull':![],'defaultValue':_0xdf3c('0x6')},'transferredAt':{'type':Sequelize[_0xdf3c('0x7')],'allowNull':![],'defaultValue':Sequelize['NOW']}};
\ No newline at end of file
index b3a6244..5fda3db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf8c8=['VIRTUAL','options','include','findAll','catch','show','params','rawAttributes','find','create','body','update','describe','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','undefined','limit','count','offset','set','Content-Range','json','reject','save','then','destroy','stack','name','index','SmsTransferReport','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','order','sort','pick','filter','where','merge'];(function(_0x11c573,_0x9e7c6e){var _0x6b72de=function(_0x2e8a61){while(--_0x2e8a61){_0x11c573['push'](_0x11c573['shift']());}};_0x6b72de(++_0x9e7c6e);}(_0xf8c8,0x139));var _0x8f8c=function(_0x241cd3,_0x4dcef2){_0x241cd3=_0x241cd3-0x0;var _0x5b4cdc=_0xf8c8[_0x241cd3];return _0x5b4cdc;};'use strict';var emlformat=require(_0x8f8c('0x0'));var rimraf=require(_0x8f8c('0x1'));var zipdir=require(_0x8f8c('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x8f8c('0x3'));var moment=require(_0x8f8c('0x4'));var BPromise=require(_0x8f8c('0x5'));var Mustache=require(_0x8f8c('0x6'));var util=require(_0x8f8c('0x7'));var path=require(_0x8f8c('0x8'));var sox=require(_0x8f8c('0x9'));var csv=require(_0x8f8c('0xa'));var ejs=require(_0x8f8c('0xb'));var fs=require('fs');var fs_extra=require(_0x8f8c('0xc'));var _=require(_0x8f8c('0xd'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x8f8c('0xe'));var deskjs=require(_0x8f8c('0xf'));var toCsv=require('to-csv');var querystring=require(_0x8f8c('0x10'));var Papa=require(_0x8f8c('0x11'));var Redis=require(_0x8f8c('0x12'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x8f8c('0x13'));var hardwareService=require(_0x8f8c('0x14'));var logger=require('../../config/logger')(_0x8f8c('0x15'));var utils=require(_0x8f8c('0x16'));var config=require(_0x8f8c('0x17'));var licenseUtil=require(_0x8f8c('0x18'));var db=require(_0x8f8c('0x19'))['db'];function respondWithStatusCode(_0x1aaae5,_0x5dfda5){_0x5dfda5=_0x5dfda5||0xcc;return function(_0x512902){if(_0x512902){return _0x1aaae5[_0x8f8c('0x1a')](_0x5dfda5);}return _0x1aaae5[_0x8f8c('0x1b')](_0x5dfda5)[_0x8f8c('0x1c')]();};}function respondWithResult(_0x3d1f97,_0x318da3){_0x318da3=_0x318da3||0xc8;return function(_0x28463e){if(_0x28463e){return _0x3d1f97[_0x8f8c('0x1b')](_0x318da3)['json'](_0x28463e);}};}function respondWithFilteredResult(_0x3bd8bf,_0x14cc84){return function(_0x338d35){if(_0x338d35){var _0x828cd6=typeof _0x14cc84['offset']===_0x8f8c('0x1d')&&typeof _0x14cc84[_0x8f8c('0x1e')]===_0x8f8c('0x1d');var _0x57ddf6=_0x338d35[_0x8f8c('0x1f')];var _0x2aef5e=_0x828cd6?0x0:_0x14cc84[_0x8f8c('0x20')];var _0x2fe91c=_0x828cd6?_0x338d35[_0x8f8c('0x1f')]:_0x14cc84[_0x8f8c('0x20')]+_0x14cc84[_0x8f8c('0x1e')];var _0x2bdd9f;if(_0x2fe91c>=_0x57ddf6){_0x2fe91c=_0x57ddf6;_0x2bdd9f=0xc8;}else{_0x2bdd9f=0xce;}_0x3bd8bf[_0x8f8c('0x1b')](_0x2bdd9f);return _0x3bd8bf[_0x8f8c('0x21')](_0x8f8c('0x22'),_0x2aef5e+'-'+_0x2fe91c+'/'+_0x57ddf6)[_0x8f8c('0x23')](_0x338d35);}return null;};}function patchUpdates(_0x110aca){return function(_0x315aa0){try{jsonpatch['apply'](_0x315aa0,_0x110aca,!![]);}catch(_0x58c308){return BPromise[_0x8f8c('0x24')](_0x58c308);}return _0x315aa0[_0x8f8c('0x25')]();};}function saveUpdates(_0x2b20d2,_0x24fc59){return function(_0x24c91e){if(_0x24c91e){return _0x24c91e['update'](_0x2b20d2)[_0x8f8c('0x26')](function(_0x13df64){return _0x13df64;});}return null;};}function removeEntity(_0x3cae5e,_0x15489a){return function(_0x1885fa){if(_0x1885fa){return _0x1885fa[_0x8f8c('0x27')]()['then'](function(){_0x3cae5e[_0x8f8c('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2fa06b,_0x55319a){return function(_0xe53f9d){if(!_0xe53f9d){_0x2fa06b[_0x8f8c('0x1a')](0x194);}return _0xe53f9d;};}function handleError(_0x31a068,_0x11ceed){_0x11ceed=_0x11ceed||0x1f4;return function(_0x444466){logger['error'](_0x444466[_0x8f8c('0x28')]);if(_0x444466[_0x8f8c('0x29')]){delete _0x444466[_0x8f8c('0x29')];}_0x31a068[_0x8f8c('0x1b')](_0x11ceed)['send'](_0x444466);};}exports[_0x8f8c('0x2a')]=function(_0x171a3b,_0x3fffde){var _0x19f9a7={},_0x949906={},_0x5351c6={'count':0x0,'rows':[]};var _0x42d8a6=_['map'](db[_0x8f8c('0x2b')]['rawAttributes'],function(_0x31a92e){return{'name':_0x31a92e[_0x8f8c('0x2c')],'type':_0x31a92e[_0x8f8c('0x2d')][_0x8f8c('0x2e')]};});_0x949906[_0x8f8c('0x2f')]=_[_0x8f8c('0x30')](_0x42d8a6,'name');_0x949906[_0x8f8c('0x31')]=_[_0x8f8c('0x32')](_0x171a3b[_0x8f8c('0x31')]);_0x949906[_0x8f8c('0x33')]=_[_0x8f8c('0x34')](_0x949906[_0x8f8c('0x2f')],_0x949906[_0x8f8c('0x31')]);_0x19f9a7[_0x8f8c('0x35')]=_['intersection'](_0x949906[_0x8f8c('0x2f')],qs[_0x8f8c('0x36')](_0x171a3b[_0x8f8c('0x31')][_0x8f8c('0x36')]));_0x19f9a7[_0x8f8c('0x35')]=_0x19f9a7[_0x8f8c('0x35')][_0x8f8c('0x37')]?_0x19f9a7['attributes']:_0x949906[_0x8f8c('0x2f')];if(!_0x171a3b[_0x8f8c('0x31')]['hasOwnProperty']('nolimit')){_0x19f9a7[_0x8f8c('0x1e')]=qs[_0x8f8c('0x1e')](_0x171a3b[_0x8f8c('0x31')][_0x8f8c('0x1e')]);_0x19f9a7[_0x8f8c('0x20')]=qs[_0x8f8c('0x20')](_0x171a3b['query'][_0x8f8c('0x20')]);}_0x19f9a7[_0x8f8c('0x38')]=qs[_0x8f8c('0x39')](_0x171a3b[_0x8f8c('0x31')][_0x8f8c('0x39')]);_0x19f9a7['where']=qs[_0x8f8c('0x33')](_[_0x8f8c('0x3a')](_0x171a3b[_0x8f8c('0x31')],_0x949906[_0x8f8c('0x33')]),_0x42d8a6);if(_0x171a3b['query'][_0x8f8c('0x3b')]){_0x19f9a7[_0x8f8c('0x3c')]=_[_0x8f8c('0x3d')](_0x19f9a7['where'],{'$or':_['map'](_0x42d8a6,function(_0x17fff5){if(_0x17fff5[_0x8f8c('0x2d')]!==_0x8f8c('0x3e')){var _0x22abd0={};_0x22abd0[_0x17fff5[_0x8f8c('0x29')]]={'$like':'%'+_0x171a3b['query'][_0x8f8c('0x3b')]+'%'};return _0x22abd0;}})});}_0x19f9a7=_['merge']({},_0x19f9a7,_0x171a3b[_0x8f8c('0x3f')]);var _0x3b4856={'where':_0x19f9a7['where']};return db[_0x8f8c('0x2b')][_0x8f8c('0x1f')](_0x3b4856)[_0x8f8c('0x26')](function(_0x19fe20){_0x5351c6[_0x8f8c('0x1f')]=_0x19fe20;if(_0x171a3b[_0x8f8c('0x31')]['includeAll']){_0x19f9a7[_0x8f8c('0x40')]=[{'all':!![]}];}return db[_0x8f8c('0x2b')][_0x8f8c('0x41')](_0x19f9a7);})['then'](function(_0x3faeaf){_0x5351c6['rows']=_0x3faeaf;return _0x5351c6;})['then'](respondWithFilteredResult(_0x3fffde,_0x19f9a7))[_0x8f8c('0x42')](handleError(_0x3fffde,null));};exports[_0x8f8c('0x43')]=function(_0x258c75,_0xc399a6){var _0x2c89d1={'raw':!![],'where':{'id':_0x258c75[_0x8f8c('0x44')]['id']}},_0x12b8a3={};_0x12b8a3[_0x8f8c('0x2f')]=_[_0x8f8c('0x32')](db[_0x8f8c('0x2b')][_0x8f8c('0x45')]);_0x12b8a3[_0x8f8c('0x31')]=_[_0x8f8c('0x32')](_0x258c75['query']);_0x12b8a3[_0x8f8c('0x33')]=_['intersection'](_0x12b8a3[_0x8f8c('0x2f')],_0x12b8a3[_0x8f8c('0x31')]);_0x2c89d1[_0x8f8c('0x35')]=_['intersection'](_0x12b8a3[_0x8f8c('0x2f')],qs[_0x8f8c('0x36')](_0x258c75[_0x8f8c('0x31')]['fields']));_0x2c89d1[_0x8f8c('0x35')]=_0x2c89d1[_0x8f8c('0x35')][_0x8f8c('0x37')]?_0x2c89d1[_0x8f8c('0x35')]:_0x12b8a3[_0x8f8c('0x2f')];if(_0x258c75[_0x8f8c('0x31')]['includeAll']){_0x2c89d1[_0x8f8c('0x40')]=[{'all':!![]}];}_0x2c89d1=_[_0x8f8c('0x3d')]({},_0x2c89d1,_0x258c75[_0x8f8c('0x3f')]);return db[_0x8f8c('0x2b')][_0x8f8c('0x46')](_0x2c89d1)['then'](handleEntityNotFound(_0xc399a6,null))[_0x8f8c('0x26')](respondWithResult(_0xc399a6,null))[_0x8f8c('0x42')](handleError(_0xc399a6,null));};exports[_0x8f8c('0x47')]=function(_0x320118,_0x172c6c){return db[_0x8f8c('0x2b')][_0x8f8c('0x47')](_0x320118[_0x8f8c('0x48')],{})[_0x8f8c('0x26')](respondWithResult(_0x172c6c,0xc9))['catch'](handleError(_0x172c6c,null));};exports[_0x8f8c('0x49')]=function(_0x1ef23f,_0x155322){if(_0x1ef23f[_0x8f8c('0x48')]['id']){delete _0x1ef23f[_0x8f8c('0x48')]['id'];}return db[_0x8f8c('0x2b')][_0x8f8c('0x46')]({'where':{'id':_0x1ef23f['params']['id']}})[_0x8f8c('0x26')](handleEntityNotFound(_0x155322,null))['then'](saveUpdates(_0x1ef23f[_0x8f8c('0x48')],null))[_0x8f8c('0x26')](respondWithResult(_0x155322,null))[_0x8f8c('0x42')](handleError(_0x155322,null));};exports[_0x8f8c('0x27')]=function(_0x4396d2,_0x7f8de8){return db[_0x8f8c('0x2b')][_0x8f8c('0x46')]({'where':{'id':_0x4396d2[_0x8f8c('0x44')]['id']}})[_0x8f8c('0x26')](handleEntityNotFound(_0x7f8de8,null))['then'](removeEntity(_0x7f8de8,null))[_0x8f8c('0x42')](handleError(_0x7f8de8,null));};exports[_0x8f8c('0x4a')]=function(_0x15f6a6,_0x177599){return db[_0x8f8c('0x2b')][_0x8f8c('0x4a')]()['then'](respondWithResult(_0x177599,null))[_0x8f8c('0x42')](handleError(_0x177599,null));};
\ No newline at end of file
+var _0x5fc2=['send','map','SmsTransferReport','fieldName','type','key','model','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','catch','params','rawAttributes','include','find','create','body','describe','rimraf','zip-dir','request-promise','moment','mustache','util','path','sox','to-csv','ejs','squel','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','update','then','destroy','stack','name'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x5fc2,0x18f));var _0x25fc=function(_0x3b3210,_0x25e8ed){_0x3b3210=_0x3b3210-0x0;var _0x5b5484=_0x5fc2[_0x3b3210];return _0x5b5484;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x25fc('0x0'));var zipdir=require(_0x25fc('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x25fc('0x2'));var moment=require(_0x25fc('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x25fc('0x4'));var util=require(_0x25fc('0x5'));var path=require(_0x25fc('0x6'));var sox=require(_0x25fc('0x7'));var csv=require(_0x25fc('0x8'));var ejs=require(_0x25fc('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x25fc('0xa'));var crypto=require(_0x25fc('0xb'));var jsforce=require(_0x25fc('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x25fc('0xd'));var Papa=require('papaparse');var Redis=require(_0x25fc('0xe'));var authService=require(_0x25fc('0xf'));var qs=require(_0x25fc('0x10'));var as=require(_0x25fc('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x25fc('0x12'));var utils=require(_0x25fc('0x13'));var config=require(_0x25fc('0x14'));var licenseUtil=require(_0x25fc('0x15'));var db=require(_0x25fc('0x16'))['db'];function respondWithStatusCode(_0xba67af,_0x340b95){_0x340b95=_0x340b95||0xcc;return function(_0x2f107e){if(_0x2f107e){return _0xba67af[_0x25fc('0x17')](_0x340b95);}return _0xba67af[_0x25fc('0x18')](_0x340b95)[_0x25fc('0x19')]();};}function respondWithResult(_0xb8ee39,_0x384e9e){_0x384e9e=_0x384e9e||0xc8;return function(_0x3e0bb8){if(_0x3e0bb8){return _0xb8ee39[_0x25fc('0x18')](_0x384e9e)[_0x25fc('0x1a')](_0x3e0bb8);}};}function respondWithFilteredResult(_0x1baaf2,_0x865f87){return function(_0x4d2dc5){if(_0x4d2dc5){var _0x148046=typeof _0x865f87[_0x25fc('0x1b')]===_0x25fc('0x1c')&&typeof _0x865f87[_0x25fc('0x1d')]===_0x25fc('0x1c');var _0x2f0b4c=_0x4d2dc5['count'];var _0x5c18a3=_0x148046?0x0:_0x865f87['offset'];var _0x5bf435=_0x148046?_0x4d2dc5[_0x25fc('0x1e')]:_0x865f87[_0x25fc('0x1b')]+_0x865f87['limit'];var _0x9029b9;if(_0x5bf435>=_0x2f0b4c){_0x5bf435=_0x2f0b4c;_0x9029b9=0xc8;}else{_0x9029b9=0xce;}_0x1baaf2[_0x25fc('0x18')](_0x9029b9);return _0x1baaf2[_0x25fc('0x1f')](_0x25fc('0x20'),_0x5c18a3+'-'+_0x5bf435+'/'+_0x2f0b4c)[_0x25fc('0x1a')](_0x4d2dc5);}return null;};}function patchUpdates(_0x5a56ac){return function(_0x203927){try{jsonpatch[_0x25fc('0x21')](_0x203927,_0x5a56ac,!![]);}catch(_0x4c70e5){return BPromise['reject'](_0x4c70e5);}return _0x203927['save']();};}function saveUpdates(_0x81758a,_0x459a3a){return function(_0x46ddc1){if(_0x46ddc1){return _0x46ddc1[_0x25fc('0x22')](_0x81758a)[_0x25fc('0x23')](function(_0x2b4c70){return _0x2b4c70;});}return null;};}function removeEntity(_0x27ace2,_0x3aadc8){return function(_0xc8cd6b){if(_0xc8cd6b){return _0xc8cd6b[_0x25fc('0x24')]()[_0x25fc('0x23')](function(){_0x27ace2['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x34c000,_0x21fead){return function(_0x366756){if(!_0x366756){_0x34c000[_0x25fc('0x17')](0x194);}return _0x366756;};}function handleError(_0x169c4e,_0x433299){_0x433299=_0x433299||0x1f4;return function(_0xca2072){logger['error'](_0xca2072[_0x25fc('0x25')]);if(_0xca2072['name']){delete _0xca2072[_0x25fc('0x26')];}_0x169c4e[_0x25fc('0x18')](_0x433299)[_0x25fc('0x27')](_0xca2072);};}exports['index']=function(_0x3547b0,_0x29b6f2){var _0x4949b3={},_0x3691f1={},_0x3f88cc={'count':0x0,'rows':[]};var _0x50a5a6=_[_0x25fc('0x28')](db[_0x25fc('0x29')]['rawAttributes'],function(_0x1fdab1){return{'name':_0x1fdab1[_0x25fc('0x2a')],'type':_0x1fdab1[_0x25fc('0x2b')][_0x25fc('0x2c')]};});_0x3691f1[_0x25fc('0x2d')]=_[_0x25fc('0x28')](_0x50a5a6,'name');_0x3691f1['query']=_[_0x25fc('0x2e')](_0x3547b0[_0x25fc('0x2f')]);_0x3691f1[_0x25fc('0x30')]=_[_0x25fc('0x31')](_0x3691f1[_0x25fc('0x2d')],_0x3691f1['query']);_0x4949b3['attributes']=_[_0x25fc('0x31')](_0x3691f1[_0x25fc('0x2d')],qs[_0x25fc('0x32')](_0x3547b0['query'][_0x25fc('0x32')]));_0x4949b3[_0x25fc('0x33')]=_0x4949b3[_0x25fc('0x33')][_0x25fc('0x34')]?_0x4949b3['attributes']:_0x3691f1[_0x25fc('0x2d')];if(!_0x3547b0[_0x25fc('0x2f')][_0x25fc('0x35')](_0x25fc('0x36'))){_0x4949b3[_0x25fc('0x1d')]=qs[_0x25fc('0x1d')](_0x3547b0[_0x25fc('0x2f')]['limit']);_0x4949b3[_0x25fc('0x1b')]=qs[_0x25fc('0x1b')](_0x3547b0[_0x25fc('0x2f')][_0x25fc('0x1b')]);}_0x4949b3[_0x25fc('0x37')]=qs['sort'](_0x3547b0[_0x25fc('0x2f')][_0x25fc('0x38')]);_0x4949b3[_0x25fc('0x39')]=qs[_0x25fc('0x30')](_[_0x25fc('0x3a')](_0x3547b0[_0x25fc('0x2f')],_0x3691f1['filters']),_0x50a5a6);if(_0x3547b0[_0x25fc('0x2f')][_0x25fc('0x3b')]){_0x4949b3[_0x25fc('0x39')]=_[_0x25fc('0x3c')](_0x4949b3[_0x25fc('0x39')],{'$or':_['map'](_0x50a5a6,function(_0x3f5fbc){if(_0x3f5fbc['type']!==_0x25fc('0x3d')){var _0x2e7a5a={};_0x2e7a5a[_0x3f5fbc[_0x25fc('0x26')]]={'$like':'%'+_0x3547b0[_0x25fc('0x2f')]['filter']+'%'};return _0x2e7a5a;}})});}_0x4949b3=_[_0x25fc('0x3c')]({},_0x4949b3,_0x3547b0[_0x25fc('0x3e')]);var _0x1e1b1d={'where':_0x4949b3['where']};return db[_0x25fc('0x29')]['count'](_0x1e1b1d)['then'](function(_0x3c2e23){_0x3f88cc['count']=_0x3c2e23;if(_0x3547b0['query'][_0x25fc('0x3f')]){_0x4949b3['include']=[{'all':!![]}];}return db[_0x25fc('0x29')][_0x25fc('0x40')](_0x4949b3);})[_0x25fc('0x23')](function(_0x572dc2){_0x3f88cc['rows']=_0x572dc2;return _0x3f88cc;})[_0x25fc('0x23')](respondWithFilteredResult(_0x29b6f2,_0x4949b3))[_0x25fc('0x41')](handleError(_0x29b6f2,null));};exports['show']=function(_0x297c29,_0x2dbc2a){var _0x357f01={'raw':!![],'where':{'id':_0x297c29[_0x25fc('0x42')]['id']}},_0xc303a7={};_0xc303a7['model']=_[_0x25fc('0x2e')](db[_0x25fc('0x29')][_0x25fc('0x43')]);_0xc303a7[_0x25fc('0x2f')]=_['keys'](_0x297c29[_0x25fc('0x2f')]);_0xc303a7[_0x25fc('0x30')]=_[_0x25fc('0x31')](_0xc303a7[_0x25fc('0x2d')],_0xc303a7[_0x25fc('0x2f')]);_0x357f01[_0x25fc('0x33')]=_[_0x25fc('0x31')](_0xc303a7[_0x25fc('0x2d')],qs[_0x25fc('0x32')](_0x297c29[_0x25fc('0x2f')][_0x25fc('0x32')]));_0x357f01[_0x25fc('0x33')]=_0x357f01['attributes'][_0x25fc('0x34')]?_0x357f01[_0x25fc('0x33')]:_0xc303a7['model'];if(_0x297c29[_0x25fc('0x2f')]['includeAll']){_0x357f01[_0x25fc('0x44')]=[{'all':!![]}];}_0x357f01=_['merge']({},_0x357f01,_0x297c29[_0x25fc('0x3e')]);return db['SmsTransferReport'][_0x25fc('0x45')](_0x357f01)[_0x25fc('0x23')](handleEntityNotFound(_0x2dbc2a,null))['then'](respondWithResult(_0x2dbc2a,null))[_0x25fc('0x41')](handleError(_0x2dbc2a,null));};exports['create']=function(_0x6b91fe,_0x29833f){return db[_0x25fc('0x29')][_0x25fc('0x46')](_0x6b91fe[_0x25fc('0x47')],{})['then'](respondWithResult(_0x29833f,0xc9))[_0x25fc('0x41')](handleError(_0x29833f,null));};exports['update']=function(_0x48b5c8,_0x1f36b4){if(_0x48b5c8[_0x25fc('0x47')]['id']){delete _0x48b5c8['body']['id'];}return db[_0x25fc('0x29')]['find']({'where':{'id':_0x48b5c8[_0x25fc('0x42')]['id']}})['then'](handleEntityNotFound(_0x1f36b4,null))[_0x25fc('0x23')](saveUpdates(_0x48b5c8[_0x25fc('0x47')],null))[_0x25fc('0x23')](respondWithResult(_0x1f36b4,null))[_0x25fc('0x41')](handleError(_0x1f36b4,null));};exports['destroy']=function(_0x177405,_0xb153ee){return db[_0x25fc('0x29')][_0x25fc('0x45')]({'where':{'id':_0x177405[_0x25fc('0x42')]['id']}})[_0x25fc('0x23')](handleEntityNotFound(_0xb153ee,null))[_0x25fc('0x23')](removeEntity(_0xb153ee,null))[_0x25fc('0x41')](handleError(_0xb153ee,null));};exports[_0x25fc('0x48')]=function(_0xe73ca7,_0x6c856f){return db[_0x25fc('0x29')][_0x25fc('0x48')]()[_0x25fc('0x23')](respondWithResult(_0x6c856f,null))[_0x25fc('0x41')](handleError(_0x6c856f,null));};
\ No newline at end of file
index 684f4dc..d2f23f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae3d=['SmsTransferReport','report_sms_transfer','uniqueid','lodash','util','api','moment','path','rimraf','./smsTransferReport.attributes','exports','define'];(function(_0x2f92f1,_0x3b28b0){var _0x2bbda2=function(_0xf0f266){while(--_0xf0f266){_0x2f92f1['push'](_0x2f92f1['shift']());}};_0x2bbda2(++_0x3b28b0);}(_0xae3d,0x1e3));var _0xdae3=function(_0x53abe5,_0x33a9e5){_0x53abe5=_0x53abe5-0x0;var _0xc1c37e=_0xae3d[_0x53abe5];return _0xc1c37e;};'use strict';var _=require(_0xdae3('0x0'));var util=require(_0xdae3('0x1'));var logger=require('../../config/logger')(_0xdae3('0x2'));var moment=require(_0xdae3('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xdae3('0x4'));var rimraf=require(_0xdae3('0x5'));var config=require('../../config/environment');var attributes=require(_0xdae3('0x6'));module[_0xdae3('0x7')]=function(_0x46631d,_0x310aed){return _0x46631d[_0xdae3('0x8')](_0xdae3('0x9'),attributes,{'tableName':_0xdae3('0xa'),'paranoid':![],'indexes':[{'name':_0xdae3('0xb'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xb66c=['request-promise','rimraf','../../config/environment','./smsTransferReport.attributes','exports','define','SmsTransferReport','report_sms_transfer','uniqueid','lodash','../../config/logger','moment','bluebird'];(function(_0x47a349,_0x4699d9){var _0x18ab75=function(_0x210796){while(--_0x210796){_0x47a349['push'](_0x47a349['shift']());}};_0x18ab75(++_0x4699d9);}(_0xb66c,0x175));var _0xcb66=function(_0xbbe096,_0x382a1a){_0xbbe096=_0xbbe096-0x0;var _0x2ca9ef=_0xb66c[_0xbbe096];return _0x2ca9ef;};'use strict';var _=require(_0xcb66('0x0'));var util=require('util');var logger=require(_0xcb66('0x1'))('api');var moment=require(_0xcb66('0x2'));var BPromise=require(_0xcb66('0x3'));var rp=require(_0xcb66('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xcb66('0x5'));var config=require(_0xcb66('0x6'));var attributes=require(_0xcb66('0x7'));module[_0xcb66('0x8')]=function(_0x5d766d,_0x518163){return _0x5d766d[_0xcb66('0x9')](_0xcb66('0xa'),attributes,{'tableName':_0xcb66('0xb'),'paranoid':![],'indexes':[{'name':_0xcb66('0xc'),'fields':[_0xcb66('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 99d4229..f55ff6a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc770=['jayson/promise','http','request','then','info','SmsTransferReport,\x20%s,\x20%s','SmsTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x4b8d20,_0x5c69db){var _0x2cd1aa=function(_0x47e151){while(--_0x47e151){_0x4b8d20['push'](_0x4b8d20['shift']());}};_0x2cd1aa(++_0x5c69db);}(_0xc770,0xd3));var _0x0c77=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xc770[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x0c77('0x0'));var util=require(_0x0c77('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x0c77('0x2'));var fs=require('fs');var Redis=require(_0x0c77('0x3'));var db=require(_0x0c77('0x4'))['db'];var utils=require(_0x0c77('0x5'));var logger=require(_0x0c77('0x6'))(_0x0c77('0x7'));var config=require(_0x0c77('0x8'));var jayson=require(_0x0c77('0x9'));var client=jayson['client'][_0x0c77('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1972ef,_0x4b2424,_0x221281){return new BPromise(function(_0x4aec3c,_0x33a295){return client[_0x0c77('0xb')](_0x1972ef,_0x221281)[_0x0c77('0xc')](function(_0x5c2178){logger[_0x0c77('0xd')](_0x0c77('0xe'),_0x4b2424,'request\x20sent');logger['debug'](_0x0c77('0xf'),_0x4b2424,'request\x20sent',JSON[_0x0c77('0x10')](_0x5c2178));if(_0x5c2178[_0x0c77('0x11')]){if(_0x5c2178['error'][_0x0c77('0x12')]===0x1f4){logger[_0x0c77('0x11')](_0x0c77('0xe'),_0x4b2424,_0x5c2178[_0x0c77('0x11')]['message']);return _0x33a295(_0x5c2178['error']['message']);}logger[_0x0c77('0x11')](_0x0c77('0xe'),_0x4b2424,_0x5c2178[_0x0c77('0x11')][_0x0c77('0x13')]);return _0x4aec3c(_0x5c2178['error'][_0x0c77('0x13')]);}else{logger[_0x0c77('0xd')]('SmsTransferReport,\x20%s,\x20%s',_0x4b2424,_0x0c77('0x14'));_0x4aec3c(_0x5c2178[_0x0c77('0x15')]['message']);}})['catch'](function(_0x233042){logger[_0x0c77('0x11')]('SmsTransferReport,\x20%s,\x20%s',_0x4b2424,_0x233042);_0x33a295(_0x233042);});});}
\ No newline at end of file
+var _0x8255=['lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/environment','jayson/promise','client','http','request','then','request\x20sent','debug','stringify','error','code','message','info','SmsTransferReport,\x20%s,\x20%s','catch'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x8255,0x176));var _0x5825=function(_0x4617ce,_0xf5701e){_0x4617ce=_0x4617ce-0x0;var _0x364d9f=_0x8255[_0x4617ce];return _0x364d9f;};'use strict';var _=require(_0x5825('0x0'));var util=require(_0x5825('0x1'));var moment=require(_0x5825('0x2'));var BPromise=require(_0x5825('0x3'));var rs=require(_0x5825('0x4'));var fs=require('fs');var Redis=require(_0x5825('0x5'));var db=require(_0x5825('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x5825('0x7'));var jayson=require(_0x5825('0x8'));var client=jayson[_0x5825('0x9')][_0x5825('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x383a49,_0x3415c5,_0x27d87e){return new BPromise(function(_0x577974,_0x4975de){return client[_0x5825('0xb')](_0x383a49,_0x27d87e)[_0x5825('0xc')](function(_0x754d99){logger['info']('SmsTransferReport,\x20%s,\x20%s',_0x3415c5,_0x5825('0xd'));logger[_0x5825('0xe')]('SmsTransferReport,\x20%s,\x20%s,\x20%s',_0x3415c5,_0x5825('0xd'),JSON[_0x5825('0xf')](_0x754d99));if(_0x754d99['error']){if(_0x754d99[_0x5825('0x10')][_0x5825('0x11')]===0x1f4){logger[_0x5825('0x10')]('SmsTransferReport,\x20%s,\x20%s',_0x3415c5,_0x754d99['error'][_0x5825('0x12')]);return _0x4975de(_0x754d99[_0x5825('0x10')][_0x5825('0x12')]);}logger[_0x5825('0x10')]('SmsTransferReport,\x20%s,\x20%s',_0x3415c5,_0x754d99[_0x5825('0x10')]['message']);return _0x577974(_0x754d99[_0x5825('0x10')][_0x5825('0x12')]);}else{logger[_0x5825('0x13')](_0x5825('0x14'),_0x3415c5,_0x5825('0xd'));_0x577974(_0x754d99['result']['message']);}})[_0x5825('0x15')](function(_0x38cd22){logger[_0x5825('0x10')](_0x5825('0x14'),_0x3415c5,_0x38cd22);_0x4975de(_0x38cd22);});});}
\ No newline at end of file
index 1c1c636..1e5dbca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x10f7=['basename','extname','now','post','single','file','create','put','/:id','update','delete','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./sound.controller','get','isAuthenticated','index','show','/:id/download','download','diskStorage','root','originalname','replace','%s-%s%s'];(function(_0x3e1e91,_0x970a2e){var _0x4db75d=function(_0x49bad8){while(--_0x49bad8){_0x3e1e91['push'](_0x3e1e91['shift']());}};_0x4db75d(++_0x970a2e);}(_0x10f7,0xac));var _0x710f=function(_0x15321a,_0x5398b9){_0x15321a=_0x15321a-0x0;var _0x5b85f2=_0x10f7[_0x15321a];return _0x5b85f2;};'use strict';var multer=require(_0x710f('0x0'));var util=require(_0x710f('0x1'));var path=require(_0x710f('0x2'));var timeout=require(_0x710f('0x3'));var express=require('express');var router=express[_0x710f('0x4')]();var fs_extra=require(_0x710f('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x710f('0x6'));var config=require(_0x710f('0x7'));var controller=require(_0x710f('0x8'));router[_0x710f('0x9')]('/',auth[_0x710f('0xa')](),controller[_0x710f('0xb')]);router['get']('/:id',auth[_0x710f('0xa')](),controller[_0x710f('0xc')]);router[_0x710f('0x9')](_0x710f('0xd'),auth['isAuthenticated'](),controller[_0x710f('0xe')]);var upload=multer({'storage':multer[_0x710f('0xf')]({'destination':function(_0x462bbb,_0x2f03fd,_0x235d38){_0x235d38(null,path['join'](config[_0x710f('0x10')],'server/files/sounds/original/'));},'filename':function(_0x2e88ac,_0x3effec,_0x4b22c4){_0x3effec['originalname']=_0x3effec[_0x710f('0x11')][_0x710f('0x12')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x4b22c4(null,util['format'](_0x710f('0x13'),path[_0x710f('0x14')](_0x3effec[_0x710f('0x11')],path[_0x710f('0x15')](_0x3effec[_0x710f('0x11')])),Date[_0x710f('0x16')](),path['extname'](_0x3effec[_0x710f('0x11')])));}})});router[_0x710f('0x17')]('/',upload[_0x710f('0x18')](_0x710f('0x19')),controller[_0x710f('0x1a')]);router[_0x710f('0x1b')](_0x710f('0x1c'),auth[_0x710f('0xa')](),controller[_0x710f('0x1d')]);router[_0x710f('0x1e')]('/:id',auth['isAuthenticated'](),controller[_0x710f('0x1e')]);module[_0x710f('0x1f')]=router;
\ No newline at end of file
+var _0xc4ab=['multer','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','isAuthenticated','index','/:id','show','/:id/download','diskStorage','server/files/sounds/original/','originalname','replace','format','%s-%s%s','basename','now','extname','post','single','file','create','put','delete','exports'];(function(_0x5cc1f0,_0x4bb60d){var _0x6467ac=function(_0x2fd30a){while(--_0x2fd30a){_0x5cc1f0['push'](_0x5cc1f0['shift']());}};_0x6467ac(++_0x4bb60d);}(_0xc4ab,0xe8));var _0xbc4a=function(_0x3cdb73,_0x5e3e5d){_0x3cdb73=_0x3cdb73-0x0;var _0x351730=_0xc4ab[_0x3cdb73];return _0x351730;};'use strict';var multer=require(_0xbc4a('0x0'));var util=require('util');var path=require(_0xbc4a('0x1'));var timeout=require(_0xbc4a('0x2'));var express=require(_0xbc4a('0x3'));var router=express[_0xbc4a('0x4')]();var fs_extra=require(_0xbc4a('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xbc4a('0x6'));var config=require(_0xbc4a('0x7'));var controller=require('./sound.controller');router['get']('/',auth[_0xbc4a('0x8')](),controller[_0xbc4a('0x9')]);router['get'](_0xbc4a('0xa'),auth['isAuthenticated'](),controller[_0xbc4a('0xb')]);router['get'](_0xbc4a('0xc'),auth[_0xbc4a('0x8')](),controller['download']);var upload=multer({'storage':multer[_0xbc4a('0xd')]({'destination':function(_0x53ddfd,_0x132350,_0xf1285b){_0xf1285b(null,path['join'](config['root'],_0xbc4a('0xe')));},'filename':function(_0x48e61b,_0x3935cd,_0xc3c5ee){_0x3935cd['originalname']=_0x3935cd[_0xbc4a('0xf')][_0xbc4a('0x10')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0xc3c5ee(null,util[_0xbc4a('0x11')](_0xbc4a('0x12'),path[_0xbc4a('0x13')](_0x3935cd[_0xbc4a('0xf')],path['extname'](_0x3935cd[_0xbc4a('0xf')])),Date[_0xbc4a('0x14')](),path[_0xbc4a('0x15')](_0x3935cd['originalname'])));}})});router[_0xbc4a('0x16')]('/',upload[_0xbc4a('0x17')](_0xbc4a('0x18')),controller[_0xbc4a('0x19')]);router[_0xbc4a('0x1a')](_0xbc4a('0xa'),auth[_0xbc4a('0x8')](),controller['update']);router[_0xbc4a('0x1b')](_0xbc4a('0xa'),auth[_0xbc4a('0x8')](),controller[_0xbc4a('0x1b')]);module[_0xbc4a('0x1c')]=router;
\ No newline at end of file
index 705a2a5..f5987bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd3eb=['INTEGER','sequelize','exports','STRING','name','FLOAT','BIGINT'];(function(_0x3f94f5,_0x20659c){var _0x12c0ca=function(_0x2e50de){while(--_0x2e50de){_0x3f94f5['push'](_0x3f94f5['shift']());}};_0x12c0ca(++_0x20659c);}(_0xd3eb,0x120));var _0xbd3e=function(_0x415603,_0x21320c){_0x415603=_0x415603-0x0;var _0x131e72=_0xd3eb[_0x415603];return _0x131e72;};'use strict';var Sequelize=require(_0xbd3e('0x0'));module[_0xbd3e('0x1')]={'name':{'type':Sequelize[_0xbd3e('0x2')],'unique':_0xbd3e('0x3'),'allowNull':![]},'save_name':{'type':Sequelize[_0xbd3e('0x2')]},'display_name':{'type':Sequelize[_0xbd3e('0x2')],'defaultValue':''},'description':{'type':Sequelize[_0xbd3e('0x2')]},'original_format':{'type':Sequelize[_0xbd3e('0x2')]},'original_duration':{'type':Sequelize[_0xbd3e('0x4')]},'original_sampleCount':{'type':Sequelize[_0xbd3e('0x5')]},'original_channelCount':{'type':Sequelize['INTEGER']},'original_bitRate':{'type':Sequelize['BIGINT']},'original_sampleRate':{'type':Sequelize[_0xbd3e('0x6')]},'converted_format':{'type':Sequelize[_0xbd3e('0x2')]},'converted_duration':{'type':Sequelize[_0xbd3e('0x4')]},'converted_sampleCount':{'type':Sequelize['BIGINT']},'converted_channelCount':{'type':Sequelize['INTEGER']},'converted_bitRate':{'type':Sequelize[_0xbd3e('0x5')]},'converted_sampleRate':{'type':Sequelize[_0xbd3e('0x6')]}};
\ No newline at end of file
+var _0xd834=['name','FLOAT','BIGINT','INTEGER','sequelize','exports','STRING'];(function(_0x4c12ec,_0x2e9103){var _0x3ae42c=function(_0x5a728f){while(--_0x5a728f){_0x4c12ec['push'](_0x4c12ec['shift']());}};_0x3ae42c(++_0x2e9103);}(_0xd834,0x169));var _0x4d83=function(_0x53ccf2,_0x13cb67){_0x53ccf2=_0x53ccf2-0x0;var _0x5a2964=_0xd834[_0x53ccf2];return _0x5a2964;};'use strict';var Sequelize=require(_0x4d83('0x0'));module[_0x4d83('0x1')]={'name':{'type':Sequelize[_0x4d83('0x2')],'unique':_0x4d83('0x3'),'allowNull':![]},'save_name':{'type':Sequelize[_0x4d83('0x2')]},'display_name':{'type':Sequelize[_0x4d83('0x2')],'defaultValue':''},'description':{'type':Sequelize[_0x4d83('0x2')]},'original_format':{'type':Sequelize['STRING']},'original_duration':{'type':Sequelize[_0x4d83('0x4')]},'original_sampleCount':{'type':Sequelize[_0x4d83('0x5')]},'original_channelCount':{'type':Sequelize[_0x4d83('0x6')]},'original_bitRate':{'type':Sequelize[_0x4d83('0x5')]},'original_sampleRate':{'type':Sequelize[_0x4d83('0x6')]},'converted_format':{'type':Sequelize[_0x4d83('0x2')]},'converted_duration':{'type':Sequelize[_0x4d83('0x4')]},'converted_sampleCount':{'type':Sequelize['BIGINT']},'converted_channelCount':{'type':Sequelize[_0x4d83('0x6')]},'converted_bitRate':{'type':Sequelize[_0x4d83('0x5')]},'converted_sampleRate':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index e65bfab..490936f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e9b=['../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','save','update','then','get','Sounds','name','send','index','map','Sound','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','find','download','save_name','converted_format','root','server/files/sounds/converted','Sequelize','ValidationError','Sound\x20not\x20found','format','%s.%s','basename','file','originalname','filename','extname','substring','wav','join','info','Sound\x20upload\x20filepath:\x20%s','Sound\x20upload\x20destination:\x20%s','chmodSync','transcode','error','original_duration','sampleCount','channelCount','original_bitRate','bitRate','sampleRate','dest','duration','converted_sampleCount','converted_channelCount','converted_bitRate','converted_sampleRate','end','0777','create','role','body','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','start','description','delete','server/files/sounds/original','original_format','unlinkSync','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api'];(function(_0x2ec3cb,_0xc935c8){var _0x52ced9=function(_0x1841d3){while(--_0x1841d3){_0x2ec3cb['push'](_0x2ec3cb['shift']());}};_0x52ced9(++_0xc935c8);}(_0x3e9b,0x1e2));var _0xb3e9=function(_0x2b062d,_0x5cf49d){_0x2b062d=_0x2b062d-0x0;var _0x5c8de8=_0x3e9b[_0x2b062d];return _0x5c8de8;};'use strict';var emlformat=require(_0xb3e9('0x0'));var rimraf=require(_0xb3e9('0x1'));var zipdir=require(_0xb3e9('0x2'));var jsonpatch=require(_0xb3e9('0x3'));var rp=require(_0xb3e9('0x4'));var moment=require(_0xb3e9('0x5'));var BPromise=require(_0xb3e9('0x6'));var Mustache=require(_0xb3e9('0x7'));var util=require('util');var path=require(_0xb3e9('0x8'));var sox=require(_0xb3e9('0x9'));var csv=require(_0xb3e9('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xb3e9('0xb'));var crypto=require(_0xb3e9('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xb3e9('0xd'));var toCsv=require(_0xb3e9('0xa'));var querystring=require(_0xb3e9('0xe'));var Papa=require(_0xb3e9('0xf'));var Redis=require(_0xb3e9('0x10'));var authService=require(_0xb3e9('0x11'));var qs=require(_0xb3e9('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xb3e9('0x13'));var logger=require(_0xb3e9('0x14'))(_0xb3e9('0x15'));var utils=require(_0xb3e9('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xb3e9('0x17'));var db=require(_0xb3e9('0x18'))['db'];function respondWithStatusCode(_0xe503d8,_0x403934){_0x403934=_0x403934||0xcc;return function(_0x3f4bc2){if(_0x3f4bc2){return _0xe503d8[_0xb3e9('0x19')](_0x403934);}return _0xe503d8[_0xb3e9('0x1a')](_0x403934)['end']();};}function respondWithResult(_0x32eecf,_0xdd59ba){_0xdd59ba=_0xdd59ba||0xc8;return function(_0xf4bb7c){if(_0xf4bb7c){return _0x32eecf['status'](_0xdd59ba)[_0xb3e9('0x1b')](_0xf4bb7c);}};}function respondWithFilteredResult(_0x2e98d4,_0x1aa89e){return function(_0x7b887c){if(_0x7b887c){var _0x2b882d=typeof _0x1aa89e[_0xb3e9('0x1c')]===_0xb3e9('0x1d')&&typeof _0x1aa89e[_0xb3e9('0x1e')]===_0xb3e9('0x1d');var _0x549fcd=_0x7b887c[_0xb3e9('0x1f')];var _0x182abb=_0x2b882d?0x0:_0x1aa89e[_0xb3e9('0x1c')];var _0x3db887=_0x2b882d?_0x7b887c['count']:_0x1aa89e[_0xb3e9('0x1c')]+_0x1aa89e['limit'];var _0x545a9f;if(_0x3db887>=_0x549fcd){_0x3db887=_0x549fcd;_0x545a9f=0xc8;}else{_0x545a9f=0xce;}_0x2e98d4[_0xb3e9('0x1a')](_0x545a9f);return _0x2e98d4[_0xb3e9('0x20')](_0xb3e9('0x21'),_0x182abb+'-'+_0x3db887+'/'+_0x549fcd)[_0xb3e9('0x1b')](_0x7b887c);}return null;};}function patchUpdates(_0x53e8bc){return function(_0x2303cb){try{jsonpatch['apply'](_0x2303cb,_0x53e8bc,!![]);}catch(_0x40b08c){return BPromise['reject'](_0x40b08c);}return _0x2303cb[_0xb3e9('0x22')]();};}function saveUpdates(_0x4b114f,_0x13adcd){return function(_0x106bca){if(_0x106bca){return _0x106bca[_0xb3e9('0x23')](_0x4b114f)['then'](function(_0x41ad5c){return _0x41ad5c;});}return null;};}function removeEntity(_0xd4727b,_0x480678){return function(_0x4da6e3){if(_0x4da6e3){return _0x4da6e3['destroy']()[_0xb3e9('0x24')](function(){var _0xa69c57=_0x4da6e3[_0xb3e9('0x25')]({'plain':!![]});var _0x38e2df=_0xb3e9('0x26');return db['UserProfileResource']['destroy']({'where':{'type':_0x38e2df,'resourceId':_0xa69c57['id']}})[_0xb3e9('0x24')](function(){return _0x4da6e3;});})['then'](function(){_0xd4727b[_0xb3e9('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2de685,_0x23f56c){return function(_0x586932){if(!_0x586932){_0x2de685[_0xb3e9('0x19')](0x194);}return _0x586932;};}function handleError(_0x19af5b,_0x32beeb){_0x32beeb=_0x32beeb||0x1f4;return function(_0x36a283){logger['error'](_0x36a283['stack']);if(_0x36a283[_0xb3e9('0x27')]){delete _0x36a283[_0xb3e9('0x27')];}_0x19af5b[_0xb3e9('0x1a')](_0x32beeb)[_0xb3e9('0x28')](_0x36a283);};}exports[_0xb3e9('0x29')]=function(_0x4556df,_0x119cab){var _0x2be962={},_0xac1b21={},_0x50093a={'count':0x0,'rows':[]};var _0x1f763d=_[_0xb3e9('0x2a')](db[_0xb3e9('0x2b')]['rawAttributes'],function(_0xdf6bbc){return{'name':_0xdf6bbc[_0xb3e9('0x2c')],'type':_0xdf6bbc[_0xb3e9('0x2d')][_0xb3e9('0x2e')]};});_0xac1b21[_0xb3e9('0x2f')]=_[_0xb3e9('0x2a')](_0x1f763d,_0xb3e9('0x27'));_0xac1b21[_0xb3e9('0x30')]=_[_0xb3e9('0x31')](_0x4556df['query']);_0xac1b21[_0xb3e9('0x32')]=_[_0xb3e9('0x33')](_0xac1b21[_0xb3e9('0x2f')],_0xac1b21[_0xb3e9('0x30')]);_0x2be962[_0xb3e9('0x34')]=_[_0xb3e9('0x33')](_0xac1b21[_0xb3e9('0x2f')],qs[_0xb3e9('0x35')](_0x4556df[_0xb3e9('0x30')][_0xb3e9('0x35')]));_0x2be962[_0xb3e9('0x34')]=_0x2be962[_0xb3e9('0x34')][_0xb3e9('0x36')]?_0x2be962['attributes']:_0xac1b21[_0xb3e9('0x2f')];if(!_0x4556df[_0xb3e9('0x30')][_0xb3e9('0x37')](_0xb3e9('0x38'))){_0x2be962['limit']=qs[_0xb3e9('0x1e')](_0x4556df[_0xb3e9('0x30')][_0xb3e9('0x1e')]);_0x2be962[_0xb3e9('0x1c')]=qs[_0xb3e9('0x1c')](_0x4556df[_0xb3e9('0x30')][_0xb3e9('0x1c')]);}_0x2be962[_0xb3e9('0x39')]=qs[_0xb3e9('0x3a')](_0x4556df[_0xb3e9('0x30')][_0xb3e9('0x3a')]);_0x2be962['where']=qs[_0xb3e9('0x32')](_[_0xb3e9('0x3b')](_0x4556df[_0xb3e9('0x30')],_0xac1b21[_0xb3e9('0x32')]),_0x1f763d);if(_0x4556df[_0xb3e9('0x30')][_0xb3e9('0x3c')]){_0x2be962[_0xb3e9('0x3d')]=_['merge'](_0x2be962['where'],{'$or':_[_0xb3e9('0x2a')](_0x1f763d,function(_0x5ac038){if(_0x5ac038[_0xb3e9('0x2d')]!=='VIRTUAL'){var _0x33ad41={};_0x33ad41[_0x5ac038['name']]={'$like':'%'+_0x4556df[_0xb3e9('0x30')][_0xb3e9('0x3c')]+'%'};return _0x33ad41;}})});}_0x2be962=_[_0xb3e9('0x3e')]({},_0x2be962,_0x4556df[_0xb3e9('0x3f')]);var _0x40c73f={'where':_0x2be962[_0xb3e9('0x3d')]};return db['Sound']['count'](_0x40c73f)[_0xb3e9('0x24')](function(_0x1ddcec){_0x50093a['count']=_0x1ddcec;if(_0x4556df[_0xb3e9('0x30')][_0xb3e9('0x40')]){_0x2be962[_0xb3e9('0x41')]=[{'all':!![]}];}return db[_0xb3e9('0x2b')][_0xb3e9('0x42')](_0x2be962);})[_0xb3e9('0x24')](function(_0x30b783){_0x50093a[_0xb3e9('0x43')]=_0x30b783;return _0x50093a;})[_0xb3e9('0x24')](respondWithFilteredResult(_0x119cab,_0x2be962))[_0xb3e9('0x44')](handleError(_0x119cab,null));};exports[_0xb3e9('0x45')]=function(_0x147b19,_0xc26193){var _0xa93c1c={'raw':!![],'where':{'id':_0x147b19[_0xb3e9('0x46')]['id']}},_0xf5c950={};_0xf5c950[_0xb3e9('0x2f')]=_[_0xb3e9('0x31')](db['Sound'][_0xb3e9('0x47')]);_0xf5c950[_0xb3e9('0x30')]=_[_0xb3e9('0x31')](_0x147b19['query']);_0xf5c950[_0xb3e9('0x32')]=_[_0xb3e9('0x33')](_0xf5c950[_0xb3e9('0x2f')],_0xf5c950[_0xb3e9('0x30')]);_0xa93c1c[_0xb3e9('0x34')]=_[_0xb3e9('0x33')](_0xf5c950[_0xb3e9('0x2f')],qs[_0xb3e9('0x35')](_0x147b19['query']['fields']));_0xa93c1c['attributes']=_0xa93c1c[_0xb3e9('0x34')][_0xb3e9('0x36')]?_0xa93c1c[_0xb3e9('0x34')]:_0xf5c950['model'];if(_0x147b19['query'][_0xb3e9('0x40')]){_0xa93c1c[_0xb3e9('0x41')]=[{'all':!![]}];}_0xa93c1c=_[_0xb3e9('0x3e')]({},_0xa93c1c,_0x147b19['options']);return db[_0xb3e9('0x2b')][_0xb3e9('0x48')](_0xa93c1c)['then'](handleEntityNotFound(_0xc26193,null))[_0xb3e9('0x24')](respondWithResult(_0xc26193,null))['catch'](handleError(_0xc26193,null));};exports[_0xb3e9('0x49')]=function(_0x2454a0,_0x303009,_0x1a0adf){return db[_0xb3e9('0x2b')][_0xb3e9('0x48')]({'where':{'id':_0x2454a0[_0xb3e9('0x46')]['id']},'attributes':[_0xb3e9('0x27'),_0xb3e9('0x4a'),_0xb3e9('0x4b')],'raw':!![]})[_0xb3e9('0x24')](handleEntityNotFound(_0x303009,null))[_0xb3e9('0x24')](function(_0x507611){if(_0x507611){if(!fs['existsSync'](path['join'](config[_0xb3e9('0x4c')],_0xb3e9('0x4d'),_0x507611[_0xb3e9('0x4a')]+'.'+_0x507611[_0xb3e9('0x4b')]))){throw new db[(_0xb3e9('0x4e'))][(_0xb3e9('0x4f'))](_0xb3e9('0x50'));}return _0x303009[_0xb3e9('0x49')](path['join'](config[_0xb3e9('0x4c')],_0xb3e9('0x4d'),util[_0xb3e9('0x51')](_0xb3e9('0x52'),_0x507611['save_name'],_0x507611[_0xb3e9('0x4b')])),util[_0xb3e9('0x51')](_0xb3e9('0x52'),_0x507611['name'],_0x507611['converted_format']));}return null;})['catch'](handleError(_0x303009,null));};exports['create']=function(_0x113439,_0x401223,_0x3cb685){var _0x34ef21={'name':path[_0xb3e9('0x53')](_0x113439[_0xb3e9('0x54')]['originalname'],path['extname'](_0x113439['file'][_0xb3e9('0x55')])),'save_name':path[_0xb3e9('0x53')](_0x113439[_0xb3e9('0x54')]['filename'],path['extname'](_0x113439['file'][_0xb3e9('0x56')])),'original_format':path[_0xb3e9('0x57')](_0x113439['file']['originalname'])[_0xb3e9('0x58')](0x1),'converted_format':_0xb3e9('0x59')};var _0x31ac88=path[_0xb3e9('0x5a')](config[_0xb3e9('0x4c')],'server/files/sounds/original',_0x113439[_0xb3e9('0x54')][_0xb3e9('0x56')]);var _0xcb3862=path[_0xb3e9('0x5a')](config[_0xb3e9('0x4c')],'server/files/sounds/converted',util['format']('%s.%s',path[_0xb3e9('0x53')](_0x113439['file']['filename'],path[_0xb3e9('0x57')](_0x113439['file'][_0xb3e9('0x56')])),_0x34ef21[_0xb3e9('0x4b')]));logger[_0xb3e9('0x5b')](_0xb3e9('0x5c'),_0x31ac88);logger['info'](_0xb3e9('0x5d'),_0xcb3862);try{fs[_0xb3e9('0x5e')](_0x31ac88,parseInt('0777',0x8));var _0x4879a1=sox[_0xb3e9('0x5f')](_0x31ac88,_0xcb3862,{'sampleRate':0x1f40,'format':_0xb3e9('0x59'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x4879a1['on'](_0xb3e9('0x60'),function(_0x1dd131){fs['unlinkSync'](_0x31ac88);_0x401223[_0xb3e9('0x1a')](0x1f4)['send'](_0x1dd131);});_0x4879a1['on']('src',function(_0x1bc21e){_0x34ef21[_0xb3e9('0x61')]=isNaN(_0x1bc21e['duration'])?null:_0x1bc21e['duration']*0x3e8;_0x34ef21['original_sampleCount']=isNaN(_0x1bc21e[_0xb3e9('0x62')])?null:_0x1bc21e[_0xb3e9('0x62')];_0x34ef21['original_channelCount']=isNaN(_0x1bc21e[_0xb3e9('0x63')])?null:_0x1bc21e['channelCount'];_0x34ef21[_0xb3e9('0x64')]=isNaN(_0x1bc21e[_0xb3e9('0x65')])?null:_0x1bc21e['bitRate'];_0x34ef21['original_sampleRate']=isNaN(_0x1bc21e[_0xb3e9('0x66')])?null:_0x1bc21e[_0xb3e9('0x66')];});_0x4879a1['on'](_0xb3e9('0x67'),function(_0x2afea9){_0x34ef21['converted_duration']=isNaN(_0x2afea9[_0xb3e9('0x68')])?null:_0x2afea9[_0xb3e9('0x68')]*0x3e8;_0x34ef21[_0xb3e9('0x69')]=isNaN(_0x2afea9['sampleCount'])?null:_0x2afea9[_0xb3e9('0x62')];_0x34ef21[_0xb3e9('0x6a')]=isNaN(_0x2afea9[_0xb3e9('0x63')])?null:_0x2afea9['channelCount'];_0x34ef21[_0xb3e9('0x6b')]=isNaN(_0x2afea9[_0xb3e9('0x65')])?null:_0x2afea9[_0xb3e9('0x65')];_0x34ef21[_0xb3e9('0x6c')]=isNaN(_0x2afea9[_0xb3e9('0x66')])?null:_0x2afea9['sampleRate'];});_0x4879a1['on'](_0xb3e9('0x6d'),function(){fs[_0xb3e9('0x5e')](_0xcb3862,parseInt(_0xb3e9('0x6e'),0x8));return db[_0xb3e9('0x2b')][_0xb3e9('0x6f')](_0x34ef21)['then'](function(_0x1cbf26){var _0x4571a6={'role':_0x113439['body'][_0xb3e9('0x70')],'userProfileId':_0x113439[_0xb3e9('0x71')][_0xb3e9('0x72')]};if(!_0x4571a6)throw new Error(_0xb3e9('0x73'));if(_0x4571a6[_0xb3e9('0x70')]===_0xb3e9('0x74')){var _0x3513eb=_0x1cbf26[_0xb3e9('0x25')]({'plain':!![]});return db['UserProfileSection'][_0xb3e9('0x48')]({'where':{'name':_0xb3e9('0x26'),'userProfileId':_0x4571a6[_0xb3e9('0x72')]},'raw':!![]})['then'](function(_0x1215df){if(_0x1215df&&_0x1215df[_0xb3e9('0x75')]===0x0){return db[_0xb3e9('0x76')]['create']({'name':_0x3513eb[_0xb3e9('0x27')],'resourceId':_0x3513eb['id'],'type':_0x1215df[_0xb3e9('0x27')],'sectionId':_0x1215df['id']},{})[_0xb3e9('0x24')](function(){return _0x1cbf26;});}else{return _0x1cbf26;}})[_0xb3e9('0x44')](function(_0x3894fb){logger[_0xb3e9('0x60')](_0xb3e9('0x77'),_0x3894fb);throw _0x3894fb;});}return _0x1cbf26;})[_0xb3e9('0x24')](respondWithResult(_0x401223,null))[_0xb3e9('0x44')](handleError(_0x401223,null));});_0x4879a1[_0xb3e9('0x78')]();}catch(_0x5ef8f3){_0x401223[_0xb3e9('0x1a')](0x1f4)[_0xb3e9('0x28')](_0x5ef8f3);}};exports[_0xb3e9('0x23')]=function(_0x298a43,_0x3e2c44,_0x33ee3f){return db['Sound']['find']({'where':{'id':_0x298a43[_0xb3e9('0x46')]['id']}})[_0xb3e9('0x24')](handleEntityNotFound(_0x3e2c44,null))['then'](saveUpdates(_[_0xb3e9('0x3b')](_0x298a43['body'],[_0xb3e9('0x27'),_0xb3e9('0x79')]),null))[_0xb3e9('0x24')](respondWithResult(_0x3e2c44,null))[_0xb3e9('0x44')](handleError(_0x3e2c44,null));};exports[_0xb3e9('0x7a')]=function(_0x44d95b,_0x2e4798,_0x151f23){return db['Sound']['find']({'where':{'id':_0x44d95b['params']['id']}})['then'](function(_0x35d7a4){if(_0x35d7a4){return _0x35d7a4['destroy']();}})[_0xb3e9('0x24')](function(_0x348ce8){var _0x19ae58=path[_0xb3e9('0x5a')](config[_0xb3e9('0x4c')],_0xb3e9('0x7b'),util[_0xb3e9('0x51')](_0xb3e9('0x52'),_0x348ce8['save_name'],_0x348ce8[_0xb3e9('0x7c')]));var _0x4f683a=path[_0xb3e9('0x5a')](config['root'],_0xb3e9('0x4d'),util['format'](_0xb3e9('0x52'),_0x348ce8[_0xb3e9('0x4a')],_0x348ce8[_0xb3e9('0x4b')]));fs[_0xb3e9('0x7d')](_0x19ae58);fs[_0xb3e9('0x7d')](_0x4f683a);return _0x348ce8;})[_0xb3e9('0x24')](function(_0x11cf77){if(_0x11cf77){return _0x2e4798[_0xb3e9('0x1a')](0xcc)[_0xb3e9('0x6d')]();}})[_0xb3e9('0x24')](handleEntityNotFound(_0x2e4798,null))[_0xb3e9('0x44')](handleError(_0x2e4798,null));};
\ No newline at end of file
+var _0xefd9=['filter','type','VIRTUAL','merge','options','includeAll','findAll','rows','catch','show','include','find','download','params','converted_format','existsSync','join','server/files/sounds/converted','save_name','Sequelize','ValidationError','root','format','%s.%s','create','basename','file','originalname','filename','extname','substring','wav','info','Sound\x20upload\x20filepath:\x20%s','Sound\x20upload\x20destination:\x20%s','chmodSync','transcode','error','unlinkSync','src','original_duration','duration','original_sampleCount','sampleCount','original_channelCount','channelCount','original_bitRate','bitRate','original_sampleRate','sampleRate','converted_duration','converted_sampleCount','converted_channelCount','converted_bitRate','converted_sampleRate','0777','body','role','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','Sounds','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','start','delete','server/files/sounds/original','original_format','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','destroy','then','get','UserProfileResource','stack','name','send','index','map','Sound','rawAttributes','key','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','sort','where','pick'];(function(_0x5e1e25,_0xdc1421){var _0x548e5f=function(_0x576360){while(--_0x576360){_0x5e1e25['push'](_0x5e1e25['shift']());}};_0x548e5f(++_0xdc1421);}(_0xefd9,0x153));var _0x9efd=function(_0x51b51e,_0x487baf){_0x51b51e=_0x51b51e-0x0;var _0x5c65c7=_0xefd9[_0x51b51e];return _0x5c65c7;};'use strict';var emlformat=require(_0x9efd('0x0'));var rimraf=require(_0x9efd('0x1'));var zipdir=require(_0x9efd('0x2'));var jsonpatch=require(_0x9efd('0x3'));var rp=require(_0x9efd('0x4'));var moment=require('moment');var BPromise=require(_0x9efd('0x5'));var Mustache=require(_0x9efd('0x6'));var util=require(_0x9efd('0x7'));var path=require('path');var sox=require(_0x9efd('0x8'));var csv=require('to-csv');var ejs=require(_0x9efd('0x9'));var fs=require('fs');var fs_extra=require(_0x9efd('0xa'));var _=require(_0x9efd('0xb'));var squel=require(_0x9efd('0xc'));var crypto=require(_0x9efd('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x9efd('0xe'));var toCsv=require(_0x9efd('0xf'));var querystring=require(_0x9efd('0x10'));var Papa=require(_0x9efd('0x11'));var Redis=require(_0x9efd('0x12'));var authService=require(_0x9efd('0x13'));var qs=require(_0x9efd('0x14'));var as=require(_0x9efd('0x15'));var hardwareService=require(_0x9efd('0x16'));var logger=require(_0x9efd('0x17'))(_0x9efd('0x18'));var utils=require(_0x9efd('0x19'));var config=require(_0x9efd('0x1a'));var licenseUtil=require('../../config/license/util');var db=require(_0x9efd('0x1b'))['db'];function respondWithStatusCode(_0xb78630,_0x369c6b){_0x369c6b=_0x369c6b||0xcc;return function(_0x130dfa){if(_0x130dfa){return _0xb78630[_0x9efd('0x1c')](_0x369c6b);}return _0xb78630[_0x9efd('0x1d')](_0x369c6b)[_0x9efd('0x1e')]();};}function respondWithResult(_0x3aea11,_0x469c41){_0x469c41=_0x469c41||0xc8;return function(_0x36ccfe){if(_0x36ccfe){return _0x3aea11['status'](_0x469c41)[_0x9efd('0x1f')](_0x36ccfe);}};}function respondWithFilteredResult(_0x29eb56,_0x5d1955){return function(_0x37fb2f){if(_0x37fb2f){var _0x3a6942=typeof _0x5d1955[_0x9efd('0x20')]===_0x9efd('0x21')&&typeof _0x5d1955[_0x9efd('0x22')]===_0x9efd('0x21');var _0x27f047=_0x37fb2f['count'];var _0x1be019=_0x3a6942?0x0:_0x5d1955[_0x9efd('0x20')];var _0x31db5e=_0x3a6942?_0x37fb2f[_0x9efd('0x23')]:_0x5d1955['offset']+_0x5d1955['limit'];var _0x1239aa;if(_0x31db5e>=_0x27f047){_0x31db5e=_0x27f047;_0x1239aa=0xc8;}else{_0x1239aa=0xce;}_0x29eb56[_0x9efd('0x1d')](_0x1239aa);return _0x29eb56[_0x9efd('0x24')](_0x9efd('0x25'),_0x1be019+'-'+_0x31db5e+'/'+_0x27f047)['json'](_0x37fb2f);}return null;};}function patchUpdates(_0x5f5309){return function(_0x10e877){try{jsonpatch[_0x9efd('0x26')](_0x10e877,_0x5f5309,!![]);}catch(_0x56c658){return BPromise[_0x9efd('0x27')](_0x56c658);}return _0x10e877[_0x9efd('0x28')]();};}function saveUpdates(_0x508bc8,_0x5e25ca){return function(_0x1c16e6){if(_0x1c16e6){return _0x1c16e6['update'](_0x508bc8)['then'](function(_0x44c6c0){return _0x44c6c0;});}return null;};}function removeEntity(_0x5841c9,_0x119da1){return function(_0x59c0bb){if(_0x59c0bb){return _0x59c0bb[_0x9efd('0x29')]()[_0x9efd('0x2a')](function(){var _0x15b50b=_0x59c0bb[_0x9efd('0x2b')]({'plain':!![]});var _0x1de640='Sounds';return db[_0x9efd('0x2c')][_0x9efd('0x29')]({'where':{'type':_0x1de640,'resourceId':_0x15b50b['id']}})['then'](function(){return _0x59c0bb;});})['then'](function(){_0x5841c9[_0x9efd('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0xc316fb,_0x55a2ce){return function(_0x51cef3){if(!_0x51cef3){_0xc316fb[_0x9efd('0x1c')](0x194);}return _0x51cef3;};}function handleError(_0x43a413,_0x2fa024){_0x2fa024=_0x2fa024||0x1f4;return function(_0x2c1d4b){logger['error'](_0x2c1d4b[_0x9efd('0x2d')]);if(_0x2c1d4b['name']){delete _0x2c1d4b[_0x9efd('0x2e')];}_0x43a413['status'](_0x2fa024)[_0x9efd('0x2f')](_0x2c1d4b);};}exports[_0x9efd('0x30')]=function(_0x5d0011,_0x1609ef){var _0x56db19={},_0x49ec45={},_0x38a7d0={'count':0x0,'rows':[]};var _0x4eee58=_[_0x9efd('0x31')](db[_0x9efd('0x32')][_0x9efd('0x33')],function(_0x26f6f0){return{'name':_0x26f6f0['fieldName'],'type':_0x26f6f0['type'][_0x9efd('0x34')]};});_0x49ec45['model']=_['map'](_0x4eee58,_0x9efd('0x2e'));_0x49ec45[_0x9efd('0x35')]=_[_0x9efd('0x36')](_0x5d0011[_0x9efd('0x35')]);_0x49ec45[_0x9efd('0x37')]=_[_0x9efd('0x38')](_0x49ec45[_0x9efd('0x39')],_0x49ec45['query']);_0x56db19['attributes']=_['intersection'](_0x49ec45[_0x9efd('0x39')],qs[_0x9efd('0x3a')](_0x5d0011[_0x9efd('0x35')][_0x9efd('0x3a')]));_0x56db19[_0x9efd('0x3b')]=_0x56db19[_0x9efd('0x3b')][_0x9efd('0x3c')]?_0x56db19[_0x9efd('0x3b')]:_0x49ec45[_0x9efd('0x39')];if(!_0x5d0011['query'][_0x9efd('0x3d')](_0x9efd('0x3e'))){_0x56db19[_0x9efd('0x22')]=qs[_0x9efd('0x22')](_0x5d0011['query'][_0x9efd('0x22')]);_0x56db19[_0x9efd('0x20')]=qs[_0x9efd('0x20')](_0x5d0011[_0x9efd('0x35')]['offset']);}_0x56db19['order']=qs['sort'](_0x5d0011[_0x9efd('0x35')][_0x9efd('0x3f')]);_0x56db19[_0x9efd('0x40')]=qs[_0x9efd('0x37')](_[_0x9efd('0x41')](_0x5d0011['query'],_0x49ec45[_0x9efd('0x37')]),_0x4eee58);if(_0x5d0011['query'][_0x9efd('0x42')]){_0x56db19[_0x9efd('0x40')]=_['merge'](_0x56db19[_0x9efd('0x40')],{'$or':_['map'](_0x4eee58,function(_0x5313d8){if(_0x5313d8[_0x9efd('0x43')]!==_0x9efd('0x44')){var _0x6557ab={};_0x6557ab[_0x5313d8[_0x9efd('0x2e')]]={'$like':'%'+_0x5d0011['query'][_0x9efd('0x42')]+'%'};return _0x6557ab;}})});}_0x56db19=_[_0x9efd('0x45')]({},_0x56db19,_0x5d0011[_0x9efd('0x46')]);var _0x31e6e3={'where':_0x56db19[_0x9efd('0x40')]};return db[_0x9efd('0x32')][_0x9efd('0x23')](_0x31e6e3)[_0x9efd('0x2a')](function(_0x46f4cf){_0x38a7d0['count']=_0x46f4cf;if(_0x5d0011[_0x9efd('0x35')][_0x9efd('0x47')]){_0x56db19['include']=[{'all':!![]}];}return db['Sound'][_0x9efd('0x48')](_0x56db19);})[_0x9efd('0x2a')](function(_0x22b71b){_0x38a7d0[_0x9efd('0x49')]=_0x22b71b;return _0x38a7d0;})[_0x9efd('0x2a')](respondWithFilteredResult(_0x1609ef,_0x56db19))[_0x9efd('0x4a')](handleError(_0x1609ef,null));};exports[_0x9efd('0x4b')]=function(_0x1108e7,_0x1e4711){var _0x37298d={'raw':!![],'where':{'id':_0x1108e7['params']['id']}},_0x52d3ce={};_0x52d3ce[_0x9efd('0x39')]=_[_0x9efd('0x36')](db['Sound'][_0x9efd('0x33')]);_0x52d3ce[_0x9efd('0x35')]=_[_0x9efd('0x36')](_0x1108e7[_0x9efd('0x35')]);_0x52d3ce[_0x9efd('0x37')]=_['intersection'](_0x52d3ce[_0x9efd('0x39')],_0x52d3ce[_0x9efd('0x35')]);_0x37298d[_0x9efd('0x3b')]=_[_0x9efd('0x38')](_0x52d3ce[_0x9efd('0x39')],qs['fields'](_0x1108e7[_0x9efd('0x35')][_0x9efd('0x3a')]));_0x37298d[_0x9efd('0x3b')]=_0x37298d[_0x9efd('0x3b')][_0x9efd('0x3c')]?_0x37298d[_0x9efd('0x3b')]:_0x52d3ce[_0x9efd('0x39')];if(_0x1108e7[_0x9efd('0x35')]['includeAll']){_0x37298d[_0x9efd('0x4c')]=[{'all':!![]}];}_0x37298d=_[_0x9efd('0x45')]({},_0x37298d,_0x1108e7['options']);return db[_0x9efd('0x32')][_0x9efd('0x4d')](_0x37298d)[_0x9efd('0x2a')](handleEntityNotFound(_0x1e4711,null))[_0x9efd('0x2a')](respondWithResult(_0x1e4711,null))[_0x9efd('0x4a')](handleError(_0x1e4711,null));};exports[_0x9efd('0x4e')]=function(_0x5cef39,_0x8327a9,_0x2e82a2){return db[_0x9efd('0x32')][_0x9efd('0x4d')]({'where':{'id':_0x5cef39[_0x9efd('0x4f')]['id']},'attributes':['name','save_name',_0x9efd('0x50')],'raw':!![]})[_0x9efd('0x2a')](handleEntityNotFound(_0x8327a9,null))[_0x9efd('0x2a')](function(_0x22e582){if(_0x22e582){if(!fs[_0x9efd('0x51')](path[_0x9efd('0x52')](config['root'],_0x9efd('0x53'),_0x22e582[_0x9efd('0x54')]+'.'+_0x22e582['converted_format']))){throw new db[(_0x9efd('0x55'))][(_0x9efd('0x56'))]('Sound\x20not\x20found');}return _0x8327a9['download'](path[_0x9efd('0x52')](config[_0x9efd('0x57')],_0x9efd('0x53'),util[_0x9efd('0x58')](_0x9efd('0x59'),_0x22e582[_0x9efd('0x54')],_0x22e582[_0x9efd('0x50')])),util['format'](_0x9efd('0x59'),_0x22e582[_0x9efd('0x2e')],_0x22e582[_0x9efd('0x50')]));}return null;})[_0x9efd('0x4a')](handleError(_0x8327a9,null));};exports[_0x9efd('0x5a')]=function(_0x17c519,_0x26779f,_0x7e4e1d){var _0x560f77={'name':path[_0x9efd('0x5b')](_0x17c519[_0x9efd('0x5c')]['originalname'],path['extname'](_0x17c519[_0x9efd('0x5c')][_0x9efd('0x5d')])),'save_name':path[_0x9efd('0x5b')](_0x17c519[_0x9efd('0x5c')][_0x9efd('0x5e')],path[_0x9efd('0x5f')](_0x17c519[_0x9efd('0x5c')][_0x9efd('0x5e')])),'original_format':path['extname'](_0x17c519['file'][_0x9efd('0x5d')])[_0x9efd('0x60')](0x1),'converted_format':_0x9efd('0x61')};var _0x20f304=path['join'](config['root'],'server/files/sounds/original',_0x17c519[_0x9efd('0x5c')][_0x9efd('0x5e')]);var _0x360dc1=path[_0x9efd('0x52')](config[_0x9efd('0x57')],_0x9efd('0x53'),util[_0x9efd('0x58')](_0x9efd('0x59'),path['basename'](_0x17c519['file'][_0x9efd('0x5e')],path[_0x9efd('0x5f')](_0x17c519[_0x9efd('0x5c')][_0x9efd('0x5e')])),_0x560f77['converted_format']));logger[_0x9efd('0x62')](_0x9efd('0x63'),_0x20f304);logger['info'](_0x9efd('0x64'),_0x360dc1);try{fs[_0x9efd('0x65')](_0x20f304,parseInt('0777',0x8));var _0x11729c=sox[_0x9efd('0x66')](_0x20f304,_0x360dc1,{'sampleRate':0x1f40,'format':_0x9efd('0x61'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x11729c['on'](_0x9efd('0x67'),function(_0x501e1d){fs[_0x9efd('0x68')](_0x20f304);_0x26779f[_0x9efd('0x1d')](0x1f4)[_0x9efd('0x2f')](_0x501e1d);});_0x11729c['on'](_0x9efd('0x69'),function(_0x579114){_0x560f77[_0x9efd('0x6a')]=isNaN(_0x579114[_0x9efd('0x6b')])?null:_0x579114[_0x9efd('0x6b')]*0x3e8;_0x560f77[_0x9efd('0x6c')]=isNaN(_0x579114['sampleCount'])?null:_0x579114[_0x9efd('0x6d')];_0x560f77[_0x9efd('0x6e')]=isNaN(_0x579114['channelCount'])?null:_0x579114[_0x9efd('0x6f')];_0x560f77[_0x9efd('0x70')]=isNaN(_0x579114[_0x9efd('0x71')])?null:_0x579114[_0x9efd('0x71')];_0x560f77[_0x9efd('0x72')]=isNaN(_0x579114[_0x9efd('0x73')])?null:_0x579114[_0x9efd('0x73')];});_0x11729c['on']('dest',function(_0x58bfb6){_0x560f77[_0x9efd('0x74')]=isNaN(_0x58bfb6[_0x9efd('0x6b')])?null:_0x58bfb6[_0x9efd('0x6b')]*0x3e8;_0x560f77[_0x9efd('0x75')]=isNaN(_0x58bfb6['sampleCount'])?null:_0x58bfb6[_0x9efd('0x6d')];_0x560f77[_0x9efd('0x76')]=isNaN(_0x58bfb6['channelCount'])?null:_0x58bfb6['channelCount'];_0x560f77[_0x9efd('0x77')]=isNaN(_0x58bfb6[_0x9efd('0x71')])?null:_0x58bfb6[_0x9efd('0x71')];_0x560f77[_0x9efd('0x78')]=isNaN(_0x58bfb6[_0x9efd('0x73')])?null:_0x58bfb6[_0x9efd('0x73')];});_0x11729c['on'](_0x9efd('0x1e'),function(){fs[_0x9efd('0x65')](_0x360dc1,parseInt(_0x9efd('0x79'),0x8));return db['Sound'][_0x9efd('0x5a')](_0x560f77)['then'](function(_0x2662ac){var _0x5a8bbd={'role':_0x17c519[_0x9efd('0x7a')][_0x9efd('0x7b')],'userProfileId':_0x17c519[_0x9efd('0x7a')][_0x9efd('0x7c')]};if(!_0x5a8bbd)throw new Error(_0x9efd('0x7d'));if(_0x5a8bbd[_0x9efd('0x7b')]===_0x9efd('0x7e')){var _0x2476c5=_0x2662ac['get']({'plain':!![]});return db[_0x9efd('0x7f')]['find']({'where':{'name':_0x9efd('0x80'),'userProfileId':_0x5a8bbd['userProfileId']},'raw':!![]})[_0x9efd('0x2a')](function(_0x52f48f){if(_0x52f48f&&_0x52f48f[_0x9efd('0x81')]===0x0){return db['UserProfileResource'][_0x9efd('0x5a')]({'name':_0x2476c5['name'],'resourceId':_0x2476c5['id'],'type':_0x52f48f['name'],'sectionId':_0x52f48f['id']},{})[_0x9efd('0x2a')](function(){return _0x2662ac;});}else{return _0x2662ac;}})[_0x9efd('0x4a')](function(_0x1a5ca6){logger['error'](_0x9efd('0x82'),_0x1a5ca6);throw _0x1a5ca6;});}return _0x2662ac;})['then'](respondWithResult(_0x26779f,null))[_0x9efd('0x4a')](handleError(_0x26779f,null));});_0x11729c[_0x9efd('0x83')]();}catch(_0xf5906f){_0x26779f[_0x9efd('0x1d')](0x1f4)[_0x9efd('0x2f')](_0xf5906f);}};exports['update']=function(_0x257d3d,_0x5581f7,_0x370ce0){return db[_0x9efd('0x32')][_0x9efd('0x4d')]({'where':{'id':_0x257d3d[_0x9efd('0x4f')]['id']}})[_0x9efd('0x2a')](handleEntityNotFound(_0x5581f7,null))[_0x9efd('0x2a')](saveUpdates(_[_0x9efd('0x41')](_0x257d3d[_0x9efd('0x7a')],[_0x9efd('0x2e'),'description']),null))[_0x9efd('0x2a')](respondWithResult(_0x5581f7,null))[_0x9efd('0x4a')](handleError(_0x5581f7,null));};exports[_0x9efd('0x84')]=function(_0x31a359,_0x27b72b,_0x573439){return db[_0x9efd('0x32')]['find']({'where':{'id':_0x31a359[_0x9efd('0x4f')]['id']}})[_0x9efd('0x2a')](function(_0x4c1638){if(_0x4c1638){return _0x4c1638['destroy']();}})['then'](function(_0x45f5cc){var _0x1cfe8d=path[_0x9efd('0x52')](config[_0x9efd('0x57')],_0x9efd('0x85'),util[_0x9efd('0x58')](_0x9efd('0x59'),_0x45f5cc[_0x9efd('0x54')],_0x45f5cc[_0x9efd('0x86')]));var _0x7cfafe=path[_0x9efd('0x52')](config['root'],_0x9efd('0x53'),util[_0x9efd('0x58')](_0x9efd('0x59'),_0x45f5cc[_0x9efd('0x54')],_0x45f5cc[_0x9efd('0x50')]));fs[_0x9efd('0x68')](_0x1cfe8d);fs[_0x9efd('0x68')](_0x7cfafe);return _0x45f5cc;})[_0x9efd('0x2a')](function(_0x3829db){if(_0x3829db){return _0x27b72b[_0x9efd('0x1d')](0xcc)['end']();}})[_0x9efd('0x2a')](handleEntityNotFound(_0x27b72b,null))['catch'](handleError(_0x27b72b,null));};
\ No newline at end of file
index 259ff77..214b685 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb7d=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','Sound','tools_sounds','lodash','util','../../config/logger'];(function(_0xf8711c,_0x17a96e){var _0x44c082=function(_0x13fac6){while(--_0x13fac6){_0xf8711c['push'](_0xf8711c['shift']());}};_0x44c082(++_0x17a96e);}(_0xfb7d,0xda));var _0xdfb7=function(_0x53a5c1,_0x2c0211){_0x53a5c1=_0x53a5c1-0x0;var _0x5956a1=_0xfb7d[_0x53a5c1];return _0x5956a1;};'use strict';var _=require(_0xdfb7('0x0'));var util=require(_0xdfb7('0x1'));var logger=require(_0xdfb7('0x2'))(_0xdfb7('0x3'));var moment=require(_0xdfb7('0x4'));var BPromise=require(_0xdfb7('0x5'));var rp=require(_0xdfb7('0x6'));var fs=require('fs');var path=require(_0xdfb7('0x7'));var rimraf=require(_0xdfb7('0x8'));var config=require(_0xdfb7('0x9'));var attributes=require('./sound.attributes');module[_0xdfb7('0xa')]=function(_0x23bf58,_0x58addc){return _0x23bf58['define'](_0xdfb7('0xb'),attributes,{'tableName':_0xdfb7('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf560=['exports','define','Sound','tools_sounds','lodash','util','api','moment','bluebird','rimraf','../../config/environment','./sound.attributes'];(function(_0x460a1e,_0x36da16){var _0x5c1344=function(_0x43a790){while(--_0x43a790){_0x460a1e['push'](_0x460a1e['shift']());}};_0x5c1344(++_0x36da16);}(_0xf560,0x13c));var _0x0f56=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xf560[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x0f56('0x0'));var util=require(_0x0f56('0x1'));var logger=require('../../config/logger')(_0x0f56('0x2'));var moment=require(_0x0f56('0x3'));var BPromise=require(_0x0f56('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x0f56('0x5'));var config=require(_0x0f56('0x6'));var attributes=require(_0x0f56('0x7'));module[_0x0f56('0x8')]=function(_0x12fb19,_0x156c56){return _0x12fb19[_0x0f56('0x9')](_0x0f56('0xa'),attributes,{'tableName':_0x0f56('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3cdf506..40d08e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb863=['util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','then','info','Sound,\x20%s,\x20%s','request\x20sent','debug','Sound,\x20%s,\x20%s,\x20%s','code','error','message','result','catch','Sound','find','options','raw','include','map','model','attributes','ShowSound','lodash'];(function(_0x58efa6,_0x2c00bd){var _0x5d643c=function(_0x1d1ef2){while(--_0x1d1ef2){_0x58efa6['push'](_0x58efa6['shift']());}};_0x5d643c(++_0x2c00bd);}(_0xb863,0x173));var _0x3b86=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0xb863[_0x3ab51d];return _0x29a04e;};'use strict';var _=require(_0x3b86('0x0'));var util=require(_0x3b86('0x1'));var moment=require(_0x3b86('0x2'));var BPromise=require('bluebird');var rs=require(_0x3b86('0x3'));var fs=require('fs');var Redis=require(_0x3b86('0x4'));var db=require(_0x3b86('0x5'))['db'];var utils=require(_0x3b86('0x6'));var logger=require(_0x3b86('0x7'))(_0x3b86('0x8'));var config=require('../../config/environment');var jayson=require(_0x3b86('0x9'));var client=jayson['client'][_0x3b86('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x55a46b,_0x43deb8,_0x539771){return new BPromise(function(_0x5f0245,_0x48a323){return client['request'](_0x55a46b,_0x539771)[_0x3b86('0xb')](function(_0x5b68e2){logger[_0x3b86('0xc')](_0x3b86('0xd'),_0x43deb8,_0x3b86('0xe'));logger[_0x3b86('0xf')](_0x3b86('0x10'),_0x43deb8,_0x3b86('0xe'),JSON['stringify'](_0x5b68e2));if(_0x5b68e2['error']){if(_0x5b68e2['error'][_0x3b86('0x11')]===0x1f4){logger[_0x3b86('0x12')]('Sound,\x20%s,\x20%s',_0x43deb8,_0x5b68e2[_0x3b86('0x12')][_0x3b86('0x13')]);return _0x48a323(_0x5b68e2[_0x3b86('0x12')][_0x3b86('0x13')]);}logger[_0x3b86('0x12')](_0x3b86('0xd'),_0x43deb8,_0x5b68e2[_0x3b86('0x12')][_0x3b86('0x13')]);return _0x5f0245(_0x5b68e2[_0x3b86('0x12')][_0x3b86('0x13')]);}else{logger[_0x3b86('0xc')](_0x3b86('0xd'),_0x43deb8,_0x3b86('0xe'));_0x5f0245(_0x5b68e2[_0x3b86('0x14')][_0x3b86('0x13')]);}})[_0x3b86('0x15')](function(_0x42fba2){logger[_0x3b86('0x12')](_0x3b86('0xd'),_0x43deb8,_0x42fba2);_0x48a323(_0x42fba2);});});}exports['ShowSound']=function(_0x461929){var _0x1d0d9e=this;return new Promise(function(_0x26445c,_0x442ec4){return db[_0x3b86('0x16')][_0x3b86('0x17')]({'raw':_0x461929[_0x3b86('0x18')]?_0x461929['options'][_0x3b86('0x19')]===undefined?!![]:![]:!![],'where':_0x461929[_0x3b86('0x18')]?_0x461929[_0x3b86('0x18')]['where']||null:null,'attributes':_0x461929[_0x3b86('0x18')]?_0x461929[_0x3b86('0x18')]['attributes']||null:null,'include':_0x461929[_0x3b86('0x18')]?_0x461929[_0x3b86('0x18')][_0x3b86('0x1a')]?_[_0x3b86('0x1b')](_0x461929[_0x3b86('0x18')][_0x3b86('0x1a')],function(_0x57c800){return{'model':db[_0x57c800[_0x3b86('0x1c')]],'as':_0x57c800['as'],'attributes':_0x57c800['attributes'],'include':_0x57c800[_0x3b86('0x1a')]?_[_0x3b86('0x1b')](_0x57c800['include'],function(_0x24d2d7){return{'model':db[_0x24d2d7['model']],'as':_0x24d2d7['as'],'attributes':_0x24d2d7[_0x3b86('0x1d')],'include':_0x24d2d7[_0x3b86('0x1a')]?_[_0x3b86('0x1b')](_0x24d2d7[_0x3b86('0x1a')],function(_0x210280){return{'model':db[_0x210280[_0x3b86('0x1c')]],'as':_0x210280['as'],'attributes':_0x210280[_0x3b86('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2ca487){logger[_0x3b86('0xc')](_0x3b86('0x1e'),_0x461929);logger[_0x3b86('0xf')](_0x3b86('0x1e'),_0x461929,JSON['stringify'](_0x2ca487));_0x26445c(_0x2ca487);})[_0x3b86('0x15')](function(_0x3a2de0){logger['error']('ShowSound',_0x3a2de0[_0x3b86('0x13')],_0x461929);_0x442ec4(_0x1d0d9e['error'](0x1f4,_0x3a2de0[_0x3b86('0x13')]));});});};
\ No newline at end of file
+var _0xcb21=['stringify','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','Sound,\x20%s,\x20%s','debug','Sound,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','info','catch','ShowSound','Sound','find','options','raw','where','include','map','attributes','model'];(function(_0x3ff085,_0x27c92e){var _0x2b68c3=function(_0x37811e){while(--_0x37811e){_0x3ff085['push'](_0x3ff085['shift']());}};_0x2b68c3(++_0x27c92e);}(_0xcb21,0xab));var _0x1cb2=function(_0x29b35c,_0x2001c5){_0x29b35c=_0x29b35c-0x0;var _0x5ab131=_0xcb21[_0x29b35c];return _0x5ab131;};'use strict';var _=require(_0x1cb2('0x0'));var util=require(_0x1cb2('0x1'));var moment=require(_0x1cb2('0x2'));var BPromise=require('bluebird');var rs=require(_0x1cb2('0x3'));var fs=require('fs');var Redis=require(_0x1cb2('0x4'));var db=require(_0x1cb2('0x5'))['db'];var utils=require(_0x1cb2('0x6'));var logger=require(_0x1cb2('0x7'))(_0x1cb2('0x8'));var config=require(_0x1cb2('0x9'));var jayson=require(_0x1cb2('0xa'));var client=jayson[_0x1cb2('0xb')][_0x1cb2('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x11ba97,_0x281c1d,_0x400f8f){return new BPromise(function(_0x497d27,_0x39da27){return client['request'](_0x11ba97,_0x400f8f)[_0x1cb2('0xd')](function(_0x389234){logger['info'](_0x1cb2('0xe'),_0x281c1d,'request\x20sent');logger[_0x1cb2('0xf')](_0x1cb2('0x10'),_0x281c1d,_0x1cb2('0x11'),JSON['stringify'](_0x389234));if(_0x389234[_0x1cb2('0x12')]){if(_0x389234[_0x1cb2('0x12')][_0x1cb2('0x13')]===0x1f4){logger[_0x1cb2('0x12')]('Sound,\x20%s,\x20%s',_0x281c1d,_0x389234['error'][_0x1cb2('0x14')]);return _0x39da27(_0x389234[_0x1cb2('0x12')][_0x1cb2('0x14')]);}logger[_0x1cb2('0x12')](_0x1cb2('0xe'),_0x281c1d,_0x389234[_0x1cb2('0x12')][_0x1cb2('0x14')]);return _0x497d27(_0x389234['error'][_0x1cb2('0x14')]);}else{logger[_0x1cb2('0x15')](_0x1cb2('0xe'),_0x281c1d,_0x1cb2('0x11'));_0x497d27(_0x389234['result'][_0x1cb2('0x14')]);}})[_0x1cb2('0x16')](function(_0x1f85a0){logger[_0x1cb2('0x12')]('Sound,\x20%s,\x20%s',_0x281c1d,_0x1f85a0);_0x39da27(_0x1f85a0);});});}exports[_0x1cb2('0x17')]=function(_0x195adc){var _0x5750e4=this;return new Promise(function(_0x138d0b,_0x45302c){return db[_0x1cb2('0x18')][_0x1cb2('0x19')]({'raw':_0x195adc['options']?_0x195adc[_0x1cb2('0x1a')][_0x1cb2('0x1b')]===undefined?!![]:![]:!![],'where':_0x195adc['options']?_0x195adc[_0x1cb2('0x1a')][_0x1cb2('0x1c')]||null:null,'attributes':_0x195adc[_0x1cb2('0x1a')]?_0x195adc[_0x1cb2('0x1a')]['attributes']||null:null,'include':_0x195adc['options']?_0x195adc[_0x1cb2('0x1a')][_0x1cb2('0x1d')]?_[_0x1cb2('0x1e')](_0x195adc[_0x1cb2('0x1a')][_0x1cb2('0x1d')],function(_0x2a7a52){return{'model':db[_0x2a7a52['model']],'as':_0x2a7a52['as'],'attributes':_0x2a7a52[_0x1cb2('0x1f')],'include':_0x2a7a52[_0x1cb2('0x1d')]?_[_0x1cb2('0x1e')](_0x2a7a52[_0x1cb2('0x1d')],function(_0x359622){return{'model':db[_0x359622[_0x1cb2('0x20')]],'as':_0x359622['as'],'attributes':_0x359622[_0x1cb2('0x1f')],'include':_0x359622[_0x1cb2('0x1d')]?_[_0x1cb2('0x1e')](_0x359622[_0x1cb2('0x1d')],function(_0x445d65){return{'model':db[_0x445d65[_0x1cb2('0x20')]],'as':_0x445d65['as'],'attributes':_0x445d65[_0x1cb2('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x1cb2('0xd')](function(_0x3b51a8){logger['info'](_0x1cb2('0x17'),_0x195adc);logger[_0x1cb2('0xf')](_0x1cb2('0x17'),_0x195adc,JSON[_0x1cb2('0x21')](_0x3b51a8));_0x138d0b(_0x3b51a8);})[_0x1cb2('0x16')](function(_0x1470ae){logger[_0x1cb2('0x12')]('ShowSound',_0x1470ae[_0x1cb2('0x14')],_0x195adc);_0x45302c(_0x5750e4[_0x1cb2('0x12')](0x1f4,_0x1470ae[_0x1cb2('0x14')]));});});};
\ No newline at end of file
index 9226d94..93ab5b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4fc2=['show','post','create','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./squareMessage.controller','isAuthenticated','index','/:id'];(function(_0x2ce6d5,_0x333e0c){var _0x32d272=function(_0x399f0b){while(--_0x399f0b){_0x2ce6d5['push'](_0x2ce6d5['shift']());}};_0x32d272(++_0x333e0c);}(_0x4fc2,0x111));var _0x24fc=function(_0x177e72,_0x28bf32){_0x177e72=_0x177e72-0x0;var _0x392698=_0x4fc2[_0x177e72];return _0x392698;};'use strict';var multer=require(_0x24fc('0x0'));var util=require(_0x24fc('0x1'));var path=require(_0x24fc('0x2'));var timeout=require(_0x24fc('0x3'));var express=require('express');var router=express[_0x24fc('0x4')]();var fs_extra=require(_0x24fc('0x5'));var auth=require(_0x24fc('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x24fc('0x7'));var controller=require(_0x24fc('0x8'));router['get']('/',auth[_0x24fc('0x9')](),controller[_0x24fc('0xa')]);router['get'](_0x24fc('0xb'),auth[_0x24fc('0x9')](),controller[_0x24fc('0xc')]);router[_0x24fc('0xd')]('/',auth[_0x24fc('0x9')](),controller[_0x24fc('0xe')]);router['put'](_0x24fc('0xb'),auth[_0x24fc('0x9')](),controller[_0x24fc('0xf')]);router[_0x24fc('0x10')](_0x24fc('0xb'),auth[_0x24fc('0x9')](),controller[_0x24fc('0x11')]);module[_0x24fc('0x12')]=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(_0x389733,_0x3f00db){var _0x401e76=function(_0x3294bb){while(--_0x3294bb){_0x389733['push'](_0x389733['shift']());}};_0x401e76(++_0x3f00db);}(_0xb10b,0x12a));var _0xbb10=function(_0x58fcda,_0x1c3d13){_0x58fcda=_0x58fcda-0x0;var _0x8e4b88=_0xb10b[_0x58fcda];return _0x8e4b88;};'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 90af10a..4f34fc3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd7ff=['ENUM','out','STRING','TEXT','sequelize','exports'];(function(_0x4c440b,_0x3ea627){var _0x2d48cf=function(_0x56bac7){while(--_0x56bac7){_0x4c440b['push'](_0x4c440b['shift']());}};_0x2d48cf(++_0x3ea627);}(_0xd7ff,0x1d8));var _0xfd7f=function(_0x51cbc7,_0x70e604){_0x51cbc7=_0x51cbc7-0x0;var _0x1ec150=_0xd7ff[_0x51cbc7];return _0x1ec150;};'use strict';var Sequelize=require(_0xfd7f('0x0'));module[_0xfd7f('0x1')]={'uniqueid':{'type':Sequelize['STRING']},'body':{'type':Sequelize['TEXT']('medium'),'allowNull':![]},'direction':{'type':Sequelize[_0xfd7f('0x2')]('in',_0xfd7f('0x3')),'defaultValue':_0xfd7f('0x3'),'allowNull':![]},'providerName':{'type':Sequelize[_0xfd7f('0x4')]},'providerResponse':{'type':Sequelize[_0xfd7f('0x5')]}};
\ No newline at end of file
+var _0x7e91=['medium','ENUM','out','exports','STRING','TEXT'];(function(_0x6276e2,_0x46051f){var _0x39e1da=function(_0x13ae1a){while(--_0x13ae1a){_0x6276e2['push'](_0x6276e2['shift']());}};_0x39e1da(++_0x46051f);}(_0x7e91,0x183));var _0x17e9=function(_0x5a7802,_0x1aec7a){_0x5a7802=_0x5a7802-0x0;var _0x116854=_0x7e91[_0x5a7802];return _0x116854;};'use strict';var Sequelize=require('sequelize');module[_0x17e9('0x0')]={'uniqueid':{'type':Sequelize[_0x17e9('0x1')]},'body':{'type':Sequelize[_0x17e9('0x2')](_0x17e9('0x3')),'allowNull':![]},'direction':{'type':Sequelize[_0x17e9('0x4')]('in',_0x17e9('0x5')),'defaultValue':_0x17e9('0x5'),'allowNull':![]},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize[_0x17e9('0x2')]}};
\ No newline at end of file
index 855b71a..48cc8a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf65d=['filter','merge','where','VIRTUAL','options','includeAll','rows','show','include','find','catch','create','body','destroy','params','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','to-csv','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','apply','save','update','then','sendStatus','stack','name','send','index','map','SquareMessage','rawAttributes','type','key','model','keys','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filters'];(function(_0x80d69e,_0x42590e){var _0x24de00=function(_0x25dadb){while(--_0x25dadb){_0x80d69e['push'](_0x80d69e['shift']());}};_0x24de00(++_0x42590e);}(_0xf65d,0x9f));var _0xdf65=function(_0x49b076,_0x4fb74e){_0x49b076=_0x49b076-0x0;var _0xa3609=_0xf65d[_0x49b076];return _0xa3609;};'use strict';var emlformat=require(_0xdf65('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xdf65('0x1'));var jsonpatch=require(_0xdf65('0x2'));var rp=require(_0xdf65('0x3'));var moment=require(_0xdf65('0x4'));var BPromise=require(_0xdf65('0x5'));var Mustache=require(_0xdf65('0x6'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0xdf65('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xdf65('0x8'));var _=require(_0xdf65('0x9'));var squel=require('squel');var crypto=require(_0xdf65('0xa'));var jsforce=require(_0xdf65('0xb'));var deskjs=require(_0xdf65('0xc'));var toCsv=require(_0xdf65('0x7'));var querystring=require(_0xdf65('0xd'));var Papa=require(_0xdf65('0xe'));var Redis=require('ioredis');var authService=require(_0xdf65('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0xdf65('0x10'));var hardwareService=require(_0xdf65('0x11'));var logger=require(_0xdf65('0x12'))('api');var utils=require('../../config/utils');var config=require(_0xdf65('0x13'));var licenseUtil=require(_0xdf65('0x14'));var db=require(_0xdf65('0x15'))['db'];function respondWithStatusCode(_0x389a24,_0x20162f){_0x20162f=_0x20162f||0xcc;return function(_0x42cfce){if(_0x42cfce){return _0x389a24['sendStatus'](_0x20162f);}return _0x389a24[_0xdf65('0x16')](_0x20162f)[_0xdf65('0x17')]();};}function respondWithResult(_0x51f281,_0x50de22){_0x50de22=_0x50de22||0xc8;return function(_0x5a0ae1){if(_0x5a0ae1){return _0x51f281[_0xdf65('0x16')](_0x50de22)[_0xdf65('0x18')](_0x5a0ae1);}};}function respondWithFilteredResult(_0x11f0e3,_0x1b6d10){return function(_0x1d6f22){if(_0x1d6f22){var _0x9bcb1c=typeof _0x1b6d10[_0xdf65('0x19')]===_0xdf65('0x1a')&&typeof _0x1b6d10[_0xdf65('0x1b')]===_0xdf65('0x1a');var _0x54e0b2=_0x1d6f22[_0xdf65('0x1c')];var _0x532215=_0x9bcb1c?0x0:_0x1b6d10[_0xdf65('0x19')];var _0x3a175b=_0x9bcb1c?_0x1d6f22[_0xdf65('0x1c')]:_0x1b6d10[_0xdf65('0x19')]+_0x1b6d10[_0xdf65('0x1b')];var _0x30a521;if(_0x3a175b>=_0x54e0b2){_0x3a175b=_0x54e0b2;_0x30a521=0xc8;}else{_0x30a521=0xce;}_0x11f0e3['status'](_0x30a521);return _0x11f0e3[_0xdf65('0x1d')]('Content-Range',_0x532215+'-'+_0x3a175b+'/'+_0x54e0b2)[_0xdf65('0x18')](_0x1d6f22);}return null;};}function patchUpdates(_0x299ed3){return function(_0xd57bc8){try{jsonpatch[_0xdf65('0x1e')](_0xd57bc8,_0x299ed3,!![]);}catch(_0x2042a5){return BPromise['reject'](_0x2042a5);}return _0xd57bc8[_0xdf65('0x1f')]();};}function saveUpdates(_0x326995,_0x5ee78d){return function(_0x45fb5f){if(_0x45fb5f){return _0x45fb5f[_0xdf65('0x20')](_0x326995)[_0xdf65('0x21')](function(_0x12e935){return _0x12e935;});}return null;};}function removeEntity(_0x529bf0,_0x2c6900){return function(_0x2eff40){if(_0x2eff40){return _0x2eff40['destroy']()['then'](function(){_0x529bf0[_0xdf65('0x16')](0xcc)[_0xdf65('0x17')]();});}};}function handleEntityNotFound(_0x3d0aea,_0x59f046){return function(_0x5ea71f){if(!_0x5ea71f){_0x3d0aea[_0xdf65('0x22')](0x194);}return _0x5ea71f;};}function handleError(_0x1c958a,_0x513807){_0x513807=_0x513807||0x1f4;return function(_0x513d12){logger['error'](_0x513d12[_0xdf65('0x23')]);if(_0x513d12['name']){delete _0x513d12[_0xdf65('0x24')];}_0x1c958a['status'](_0x513807)[_0xdf65('0x25')](_0x513d12);};}exports[_0xdf65('0x26')]=function(_0x501b53,_0x2cca76){var _0xe7fbc3={},_0x166060={},_0x220402={'count':0x0,'rows':[]};var _0x41c1d6=_[_0xdf65('0x27')](db[_0xdf65('0x28')][_0xdf65('0x29')],function(_0x5581da){return{'name':_0x5581da['fieldName'],'type':_0x5581da[_0xdf65('0x2a')][_0xdf65('0x2b')]};});_0x166060[_0xdf65('0x2c')]=_['map'](_0x41c1d6,_0xdf65('0x24'));_0x166060['query']=_[_0xdf65('0x2d')](_0x501b53[_0xdf65('0x2e')]);_0x166060['filters']=_[_0xdf65('0x2f')](_0x166060[_0xdf65('0x2c')],_0x166060[_0xdf65('0x2e')]);_0xe7fbc3[_0xdf65('0x30')]=_[_0xdf65('0x2f')](_0x166060[_0xdf65('0x2c')],qs['fields'](_0x501b53['query'][_0xdf65('0x31')]));_0xe7fbc3['attributes']=_0xe7fbc3[_0xdf65('0x30')][_0xdf65('0x32')]?_0xe7fbc3[_0xdf65('0x30')]:_0x166060['model'];if(!_0x501b53[_0xdf65('0x2e')][_0xdf65('0x33')](_0xdf65('0x34'))){_0xe7fbc3[_0xdf65('0x1b')]=qs[_0xdf65('0x1b')](_0x501b53['query'][_0xdf65('0x1b')]);_0xe7fbc3[_0xdf65('0x19')]=qs[_0xdf65('0x19')](_0x501b53['query'][_0xdf65('0x19')]);}_0xe7fbc3[_0xdf65('0x35')]=qs[_0xdf65('0x36')](_0x501b53[_0xdf65('0x2e')][_0xdf65('0x36')]);_0xe7fbc3['where']=qs['filters'](_[_0xdf65('0x37')](_0x501b53[_0xdf65('0x2e')],_0x166060[_0xdf65('0x38')]),_0x41c1d6);if(_0x501b53['query'][_0xdf65('0x39')]){_0xe7fbc3['where']=_[_0xdf65('0x3a')](_0xe7fbc3[_0xdf65('0x3b')],{'$or':_[_0xdf65('0x27')](_0x41c1d6,function(_0x583c87){if(_0x583c87[_0xdf65('0x2a')]!==_0xdf65('0x3c')){var _0x1a1912={};_0x1a1912[_0x583c87[_0xdf65('0x24')]]={'$like':'%'+_0x501b53[_0xdf65('0x2e')][_0xdf65('0x39')]+'%'};return _0x1a1912;}})});}_0xe7fbc3=_[_0xdf65('0x3a')]({},_0xe7fbc3,_0x501b53[_0xdf65('0x3d')]);var _0x596002={'where':_0xe7fbc3[_0xdf65('0x3b')]};return db[_0xdf65('0x28')][_0xdf65('0x1c')](_0x596002)['then'](function(_0x4cc99a){_0x220402[_0xdf65('0x1c')]=_0x4cc99a;if(_0x501b53['query'][_0xdf65('0x3e')]){_0xe7fbc3['include']=[{'all':!![]}];}return db['SquareMessage']['findAll'](_0xe7fbc3);})[_0xdf65('0x21')](function(_0x352e21){_0x220402[_0xdf65('0x3f')]=_0x352e21;return _0x220402;})['then'](respondWithFilteredResult(_0x2cca76,_0xe7fbc3))['catch'](handleError(_0x2cca76,null));};exports[_0xdf65('0x40')]=function(_0x526d32,_0x2bb2fc){var _0x2d3aea={'raw':!![],'where':{'id':_0x526d32['params']['id']}},_0x2e3e35={};_0x2e3e35[_0xdf65('0x2c')]=_['keys'](db[_0xdf65('0x28')][_0xdf65('0x29')]);_0x2e3e35['query']=_[_0xdf65('0x2d')](_0x526d32[_0xdf65('0x2e')]);_0x2e3e35[_0xdf65('0x38')]=_['intersection'](_0x2e3e35[_0xdf65('0x2c')],_0x2e3e35[_0xdf65('0x2e')]);_0x2d3aea[_0xdf65('0x30')]=_[_0xdf65('0x2f')](_0x2e3e35[_0xdf65('0x2c')],qs[_0xdf65('0x31')](_0x526d32[_0xdf65('0x2e')]['fields']));_0x2d3aea[_0xdf65('0x30')]=_0x2d3aea[_0xdf65('0x30')][_0xdf65('0x32')]?_0x2d3aea[_0xdf65('0x30')]:_0x2e3e35[_0xdf65('0x2c')];if(_0x526d32['query']['includeAll']){_0x2d3aea[_0xdf65('0x41')]=[{'all':!![]}];}_0x2d3aea=_[_0xdf65('0x3a')]({},_0x2d3aea,_0x526d32[_0xdf65('0x3d')]);return db[_0xdf65('0x28')][_0xdf65('0x42')](_0x2d3aea)[_0xdf65('0x21')](handleEntityNotFound(_0x2bb2fc,null))[_0xdf65('0x21')](respondWithResult(_0x2bb2fc,null))[_0xdf65('0x43')](handleError(_0x2bb2fc,null));};exports[_0xdf65('0x44')]=function(_0x2f8adf,_0x4ec5d8){return db[_0xdf65('0x28')][_0xdf65('0x44')](_0x2f8adf['body'],{})[_0xdf65('0x21')](respondWithResult(_0x4ec5d8,0xc9))[_0xdf65('0x43')](handleError(_0x4ec5d8,null));};exports[_0xdf65('0x20')]=function(_0x502716,_0x39be69){if(_0x502716[_0xdf65('0x45')]['id']){delete _0x502716[_0xdf65('0x45')]['id'];}return db['SquareMessage'][_0xdf65('0x42')]({'where':{'id':_0x502716['params']['id']}})['then'](handleEntityNotFound(_0x39be69,null))['then'](saveUpdates(_0x502716[_0xdf65('0x45')],null))[_0xdf65('0x21')](respondWithResult(_0x39be69,null))['catch'](handleError(_0x39be69,null));};exports[_0xdf65('0x46')]=function(_0x2f4c75,_0x2ff5fe){return db['SquareMessage'][_0xdf65('0x42')]({'where':{'id':_0x2f4c75[_0xdf65('0x47')]['id']}})[_0xdf65('0x21')](handleEntityNotFound(_0x2ff5fe,null))[_0xdf65('0x21')](removeEntity(_0x2ff5fe,null))['catch'](handleError(_0x2ff5fe,null));};
\ No newline at end of file
+var _0x1d3a=['update','then','destroy','error','stack','name','send','index','SquareMessage','rawAttributes','fieldName','type','model','map','filters','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','merge','filter','options','includeAll','include','findAll','rows','catch','show','params','keys','find','create','body','eml-format','rimraf','request-promise','moment','mustache','util','path','sox','fs-extra','squel','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','end','json','limit','offset','count','set','Content-Range','apply','reject'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0x1d3a,0x18f));var _0xa1d3=function(_0x4e9d3c,_0x1f4b98){_0x4e9d3c=_0x4e9d3c-0x0;var _0x2d0825=_0x1d3a[_0x4e9d3c];return _0x2d0825;};'use strict';var emlformat=require(_0xa1d3('0x0'));var rimraf=require(_0xa1d3('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xa1d3('0x2'));var moment=require(_0xa1d3('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xa1d3('0x4'));var util=require(_0xa1d3('0x5'));var path=require(_0xa1d3('0x6'));var sox=require(_0xa1d3('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa1d3('0x8'));var _=require('lodash');var squel=require(_0xa1d3('0x9'));var crypto=require('crypto');var jsforce=require(_0xa1d3('0xa'));var deskjs=require('desk.js');var toCsv=require(_0xa1d3('0xb'));var querystring=require(_0xa1d3('0xc'));var Papa=require(_0xa1d3('0xd'));var Redis=require(_0xa1d3('0xe'));var authService=require(_0xa1d3('0xf'));var qs=require(_0xa1d3('0x10'));var as=require(_0xa1d3('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xa1d3('0x12'))(_0xa1d3('0x13'));var utils=require(_0xa1d3('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xa1d3('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xdf305f,_0x3cc5a8){_0x3cc5a8=_0x3cc5a8||0xcc;return function(_0x297a20){if(_0x297a20){return _0xdf305f[_0xa1d3('0x16')](_0x3cc5a8);}return _0xdf305f[_0xa1d3('0x17')](_0x3cc5a8)[_0xa1d3('0x18')]();};}function respondWithResult(_0x1de6fa,_0x3c97b8){_0x3c97b8=_0x3c97b8||0xc8;return function(_0x489b54){if(_0x489b54){return _0x1de6fa['status'](_0x3c97b8)[_0xa1d3('0x19')](_0x489b54);}};}function respondWithFilteredResult(_0x4d42ef,_0x1da8f2){return function(_0x3b957d){if(_0x3b957d){var _0x5ce542=typeof _0x1da8f2['offset']==='undefined'&&typeof _0x1da8f2[_0xa1d3('0x1a')]==='undefined';var _0x2e6ed1=_0x3b957d['count'];var _0xf356dc=_0x5ce542?0x0:_0x1da8f2[_0xa1d3('0x1b')];var _0x3eba55=_0x5ce542?_0x3b957d[_0xa1d3('0x1c')]:_0x1da8f2[_0xa1d3('0x1b')]+_0x1da8f2[_0xa1d3('0x1a')];var _0x499a56;if(_0x3eba55>=_0x2e6ed1){_0x3eba55=_0x2e6ed1;_0x499a56=0xc8;}else{_0x499a56=0xce;}_0x4d42ef[_0xa1d3('0x17')](_0x499a56);return _0x4d42ef[_0xa1d3('0x1d')](_0xa1d3('0x1e'),_0xf356dc+'-'+_0x3eba55+'/'+_0x2e6ed1)[_0xa1d3('0x19')](_0x3b957d);}return null;};}function patchUpdates(_0x13a27e){return function(_0x193df3){try{jsonpatch[_0xa1d3('0x1f')](_0x193df3,_0x13a27e,!![]);}catch(_0x543990){return BPromise[_0xa1d3('0x20')](_0x543990);}return _0x193df3['save']();};}function saveUpdates(_0x17629b,_0xd7ca1d){return function(_0x43b604){if(_0x43b604){return _0x43b604[_0xa1d3('0x21')](_0x17629b)[_0xa1d3('0x22')](function(_0x523eee){return _0x523eee;});}return null;};}function removeEntity(_0x169007,_0x2bb813){return function(_0x36f5fe){if(_0x36f5fe){return _0x36f5fe[_0xa1d3('0x23')]()['then'](function(){_0x169007['status'](0xcc)[_0xa1d3('0x18')]();});}};}function handleEntityNotFound(_0x5df6e8,_0x1dd36c){return function(_0xcb9c51){if(!_0xcb9c51){_0x5df6e8[_0xa1d3('0x16')](0x194);}return _0xcb9c51;};}function handleError(_0xb50cc,_0xeaa94e){_0xeaa94e=_0xeaa94e||0x1f4;return function(_0x3ce59e){logger[_0xa1d3('0x24')](_0x3ce59e[_0xa1d3('0x25')]);if(_0x3ce59e[_0xa1d3('0x26')]){delete _0x3ce59e[_0xa1d3('0x26')];}_0xb50cc[_0xa1d3('0x17')](_0xeaa94e)[_0xa1d3('0x27')](_0x3ce59e);};}exports[_0xa1d3('0x28')]=function(_0x98565d,_0xcebb4e){var _0x15d83b={},_0x27abd3={},_0x512eae={'count':0x0,'rows':[]};var _0xc0170c=_['map'](db[_0xa1d3('0x29')][_0xa1d3('0x2a')],function(_0x11acd6){return{'name':_0x11acd6[_0xa1d3('0x2b')],'type':_0x11acd6[_0xa1d3('0x2c')]['key']};});_0x27abd3[_0xa1d3('0x2d')]=_[_0xa1d3('0x2e')](_0xc0170c,_0xa1d3('0x26'));_0x27abd3['query']=_['keys'](_0x98565d['query']);_0x27abd3[_0xa1d3('0x2f')]=_[_0xa1d3('0x30')](_0x27abd3[_0xa1d3('0x2d')],_0x27abd3[_0xa1d3('0x31')]);_0x15d83b[_0xa1d3('0x32')]=_[_0xa1d3('0x30')](_0x27abd3[_0xa1d3('0x2d')],qs[_0xa1d3('0x33')](_0x98565d[_0xa1d3('0x31')][_0xa1d3('0x33')]));_0x15d83b[_0xa1d3('0x32')]=_0x15d83b[_0xa1d3('0x32')][_0xa1d3('0x34')]?_0x15d83b[_0xa1d3('0x32')]:_0x27abd3[_0xa1d3('0x2d')];if(!_0x98565d[_0xa1d3('0x31')][_0xa1d3('0x35')](_0xa1d3('0x36'))){_0x15d83b[_0xa1d3('0x1a')]=qs['limit'](_0x98565d[_0xa1d3('0x31')][_0xa1d3('0x1a')]);_0x15d83b[_0xa1d3('0x1b')]=qs[_0xa1d3('0x1b')](_0x98565d[_0xa1d3('0x31')][_0xa1d3('0x1b')]);}_0x15d83b[_0xa1d3('0x37')]=qs[_0xa1d3('0x38')](_0x98565d[_0xa1d3('0x31')][_0xa1d3('0x38')]);_0x15d83b[_0xa1d3('0x39')]=qs[_0xa1d3('0x2f')](_['pick'](_0x98565d['query'],_0x27abd3['filters']),_0xc0170c);if(_0x98565d['query']['filter']){_0x15d83b[_0xa1d3('0x39')]=_[_0xa1d3('0x3a')](_0x15d83b[_0xa1d3('0x39')],{'$or':_[_0xa1d3('0x2e')](_0xc0170c,function(_0x1c6bad){if(_0x1c6bad[_0xa1d3('0x2c')]!=='VIRTUAL'){var _0xfb3752={};_0xfb3752[_0x1c6bad[_0xa1d3('0x26')]]={'$like':'%'+_0x98565d[_0xa1d3('0x31')][_0xa1d3('0x3b')]+'%'};return _0xfb3752;}})});}_0x15d83b=_['merge']({},_0x15d83b,_0x98565d[_0xa1d3('0x3c')]);var _0x3b843b={'where':_0x15d83b[_0xa1d3('0x39')]};return db[_0xa1d3('0x29')][_0xa1d3('0x1c')](_0x3b843b)[_0xa1d3('0x22')](function(_0x5f5b99){_0x512eae[_0xa1d3('0x1c')]=_0x5f5b99;if(_0x98565d[_0xa1d3('0x31')][_0xa1d3('0x3d')]){_0x15d83b[_0xa1d3('0x3e')]=[{'all':!![]}];}return db[_0xa1d3('0x29')][_0xa1d3('0x3f')](_0x15d83b);})['then'](function(_0x264e86){_0x512eae[_0xa1d3('0x40')]=_0x264e86;return _0x512eae;})['then'](respondWithFilteredResult(_0xcebb4e,_0x15d83b))[_0xa1d3('0x41')](handleError(_0xcebb4e,null));};exports[_0xa1d3('0x42')]=function(_0x409da3,_0x2af007){var _0x38bd41={'raw':!![],'where':{'id':_0x409da3[_0xa1d3('0x43')]['id']}},_0x4e2ed8={};_0x4e2ed8[_0xa1d3('0x2d')]=_[_0xa1d3('0x44')](db['SquareMessage'][_0xa1d3('0x2a')]);_0x4e2ed8[_0xa1d3('0x31')]=_[_0xa1d3('0x44')](_0x409da3[_0xa1d3('0x31')]);_0x4e2ed8[_0xa1d3('0x2f')]=_[_0xa1d3('0x30')](_0x4e2ed8['model'],_0x4e2ed8[_0xa1d3('0x31')]);_0x38bd41[_0xa1d3('0x32')]=_[_0xa1d3('0x30')](_0x4e2ed8[_0xa1d3('0x2d')],qs[_0xa1d3('0x33')](_0x409da3[_0xa1d3('0x31')][_0xa1d3('0x33')]));_0x38bd41[_0xa1d3('0x32')]=_0x38bd41[_0xa1d3('0x32')][_0xa1d3('0x34')]?_0x38bd41[_0xa1d3('0x32')]:_0x4e2ed8['model'];if(_0x409da3['query']['includeAll']){_0x38bd41[_0xa1d3('0x3e')]=[{'all':!![]}];}_0x38bd41=_[_0xa1d3('0x3a')]({},_0x38bd41,_0x409da3[_0xa1d3('0x3c')]);return db[_0xa1d3('0x29')][_0xa1d3('0x45')](_0x38bd41)[_0xa1d3('0x22')](handleEntityNotFound(_0x2af007,null))[_0xa1d3('0x22')](respondWithResult(_0x2af007,null))[_0xa1d3('0x41')](handleError(_0x2af007,null));};exports[_0xa1d3('0x46')]=function(_0xcd69e0,_0xd25a10){return db['SquareMessage'][_0xa1d3('0x46')](_0xcd69e0['body'],{})[_0xa1d3('0x22')](respondWithResult(_0xd25a10,0xc9))[_0xa1d3('0x41')](handleError(_0xd25a10,null));};exports[_0xa1d3('0x21')]=function(_0x5682d4,_0x1100ff){if(_0x5682d4[_0xa1d3('0x47')]['id']){delete _0x5682d4['body']['id'];}return db[_0xa1d3('0x29')][_0xa1d3('0x45')]({'where':{'id':_0x5682d4['params']['id']}})[_0xa1d3('0x22')](handleEntityNotFound(_0x1100ff,null))[_0xa1d3('0x22')](saveUpdates(_0x5682d4[_0xa1d3('0x47')],null))[_0xa1d3('0x22')](respondWithResult(_0x1100ff,null))[_0xa1d3('0x41')](handleError(_0x1100ff,null));};exports[_0xa1d3('0x23')]=function(_0x1ec784,_0x2f1f2f){return db['SquareMessage'][_0xa1d3('0x45')]({'where':{'id':_0x1ec784[_0xa1d3('0x43')]['id']}})[_0xa1d3('0x22')](handleEntityNotFound(_0x2f1f2f,null))[_0xa1d3('0x22')](removeEntity(_0x2f1f2f,null))[_0xa1d3('0x41')](handleError(_0x2f1f2f,null));};
\ No newline at end of file
index 56bd482..ebdbf39 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c2a=['./squareMessage.attributes','SquareMessage','lodash','bluebird','path','../../config/environment'];(function(_0x50b93e,_0xa152a9){var _0x20d71e=function(_0x3fcf4c){while(--_0x3fcf4c){_0x50b93e['push'](_0x50b93e['shift']());}};_0x20d71e(++_0xa152a9);}(_0x4c2a,0x68));var _0xa4c2=function(_0x2aa31e,_0x440880){_0x2aa31e=_0x2aa31e-0x0;var _0x2dc758=_0x4c2a[_0x2aa31e];return _0x2dc758;};'use strict';var _=require(_0xa4c2('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0xa4c2('0x1'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xa4c2('0x2'));var rimraf=require('rimraf');var config=require(_0xa4c2('0x3'));var attributes=require(_0xa4c2('0x4'));module['exports']=function(_0x1b5a3,_0x28f55b){return _0x1b5a3['define'](_0xa4c2('0x5'),attributes,{'tableName':'square_messages','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x02d5=['util','../../config/logger','api','moment','path','rimraf','define','SquareMessage','square_messages','lodash'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x02d5,0x1f3));var _0x502d=function(_0x51057a,_0x2c8c27){_0x51057a=_0x51057a-0x0;var _0x3cbdaa=_0x02d5[_0x51057a];return _0x3cbdaa;};'use strict';var _=require(_0x502d('0x0'));var util=require(_0x502d('0x1'));var logger=require(_0x502d('0x2'))(_0x502d('0x3'));var moment=require(_0x502d('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x502d('0x5'));var rimraf=require(_0x502d('0x6'));var config=require('../../config/environment');var attributes=require('./squareMessage.attributes');module['exports']=function(_0x29580b,_0x59add4){return _0x29580b[_0x502d('0x7')](_0x502d('0x8'),attributes,{'tableName':_0x502d('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b6801b5..51b0600 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x37d5=['request\x20sent','debug','stringify','error','code','message','result','CreateSquareMessage','body','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','then','info','SquareMessage,\x20%s,\x20%s'];(function(_0x598a9b,_0x2daa83){var _0x547372=function(_0x5966bf){while(--_0x5966bf){_0x598a9b['push'](_0x598a9b['shift']());}};_0x547372(++_0x2daa83);}(_0x37d5,0x11d));var _0x537d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x37d5[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x537d('0x0'));var util=require('util');var moment=require(_0x537d('0x1'));var BPromise=require(_0x537d('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x537d('0x3'));var db=require(_0x537d('0x4'))['db'];var utils=require(_0x537d('0x5'));var logger=require(_0x537d('0x6'))(_0x537d('0x7'));var config=require('../../config/environment');var jayson=require(_0x537d('0x8'));var client=jayson[_0x537d('0x9')][_0x537d('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1a34a6,_0x313565,_0x18e8db){return new BPromise(function(_0x574fd3,_0x11fa32){return client['request'](_0x1a34a6,_0x18e8db)[_0x537d('0xb')](function(_0x3d4c15){logger[_0x537d('0xc')](_0x537d('0xd'),_0x313565,_0x537d('0xe'));logger[_0x537d('0xf')]('SquareMessage,\x20%s,\x20%s,\x20%s',_0x313565,_0x537d('0xe'),JSON[_0x537d('0x10')](_0x3d4c15));if(_0x3d4c15[_0x537d('0x11')]){if(_0x3d4c15['error'][_0x537d('0x12')]===0x1f4){logger[_0x537d('0x11')]('SquareMessage,\x20%s,\x20%s',_0x313565,_0x3d4c15['error'][_0x537d('0x13')]);return _0x11fa32(_0x3d4c15[_0x537d('0x11')][_0x537d('0x13')]);}logger['error'](_0x537d('0xd'),_0x313565,_0x3d4c15[_0x537d('0x11')][_0x537d('0x13')]);return _0x574fd3(_0x3d4c15[_0x537d('0x11')][_0x537d('0x13')]);}else{logger[_0x537d('0xc')](_0x537d('0xd'),_0x313565,'request\x20sent');_0x574fd3(_0x3d4c15[_0x537d('0x14')][_0x537d('0x13')]);}})['catch'](function(_0x858638){logger[_0x537d('0x11')](_0x537d('0xd'),_0x313565,_0x858638);_0x11fa32(_0x858638);});});}exports[_0x537d('0x15')]=function(_0x53f26d){var _0x2132a3=this;return new Promise(function(_0x31c315,_0x5f48ea){return db['SquareMessage']['create'](_0x53f26d[_0x537d('0x16')],{'raw':_0x53f26d['options']?_0x53f26d['options']['raw']===undefined?!![]:![]:!![]})[_0x537d('0xb')](function(_0x246eaa){logger[_0x537d('0xc')](_0x537d('0x15'),_0x53f26d);logger['debug'](_0x537d('0x15'),_0x53f26d,JSON[_0x537d('0x10')](_0x246eaa));_0x31c315(_0x246eaa);})['catch'](function(_0x492d64){logger[_0x537d('0x11')](_0x537d('0x15'),_0x492d64[_0x537d('0x13')],_0x53f26d);_0x5f48ea(_0x2132a3[_0x537d('0x11')](0x1f4,_0x492d64[_0x537d('0x13')]));});});};
\ No newline at end of file
+var _0xd018=['jayson/promise','http','request','info','SquareMessage,\x20%s,\x20%s','request\x20sent','debug','SquareMessage,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','CreateSquareMessage','SquareMessage','create','body','options','raw','then','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x5a7e78,_0x400b57){var _0xa8d4a1=function(_0x486659){while(--_0x486659){_0x5a7e78['push'](_0x5a7e78['shift']());}};_0xa8d4a1(++_0x400b57);}(_0xd018,0xbc));var _0x8d01=function(_0x958ce9,_0xd68a0){_0x958ce9=_0x958ce9-0x0;var _0x1d3dc8=_0xd018[_0x958ce9];return _0x1d3dc8;};'use strict';var _=require(_0x8d01('0x0'));var util=require('util');var moment=require(_0x8d01('0x1'));var BPromise=require('bluebird');var rs=require(_0x8d01('0x2'));var fs=require('fs');var Redis=require(_0x8d01('0x3'));var db=require(_0x8d01('0x4'))['db'];var utils=require(_0x8d01('0x5'));var logger=require(_0x8d01('0x6'))(_0x8d01('0x7'));var config=require('../../config/environment');var jayson=require(_0x8d01('0x8'));var client=jayson['client'][_0x8d01('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5c2a11,_0x2843e2,_0x19871e){return new BPromise(function(_0x22d8a1,_0xbb80d0){return client[_0x8d01('0xa')](_0x5c2a11,_0x19871e)['then'](function(_0x15762c){logger[_0x8d01('0xb')](_0x8d01('0xc'),_0x2843e2,_0x8d01('0xd'));logger[_0x8d01('0xe')](_0x8d01('0xf'),_0x2843e2,'request\x20sent',JSON['stringify'](_0x15762c));if(_0x15762c[_0x8d01('0x10')]){if(_0x15762c[_0x8d01('0x10')][_0x8d01('0x11')]===0x1f4){logger['error'](_0x8d01('0xc'),_0x2843e2,_0x15762c[_0x8d01('0x10')]['message']);return _0xbb80d0(_0x15762c[_0x8d01('0x10')][_0x8d01('0x12')]);}logger['error'](_0x8d01('0xc'),_0x2843e2,_0x15762c[_0x8d01('0x10')][_0x8d01('0x12')]);return _0x22d8a1(_0x15762c[_0x8d01('0x10')][_0x8d01('0x12')]);}else{logger['info'](_0x8d01('0xc'),_0x2843e2,_0x8d01('0xd'));_0x22d8a1(_0x15762c[_0x8d01('0x13')][_0x8d01('0x12')]);}})[_0x8d01('0x14')](function(_0x1d4a3d){logger['error']('SquareMessage,\x20%s,\x20%s',_0x2843e2,_0x1d4a3d);_0xbb80d0(_0x1d4a3d);});});}exports[_0x8d01('0x15')]=function(_0x22cf62){var _0x56d94d=this;return new Promise(function(_0x3394f3,_0x3548c5){return db[_0x8d01('0x16')][_0x8d01('0x17')](_0x22cf62[_0x8d01('0x18')],{'raw':_0x22cf62['options']?_0x22cf62[_0x8d01('0x19')][_0x8d01('0x1a')]===undefined?!![]:![]:!![]})[_0x8d01('0x1b')](function(_0x3938be){logger[_0x8d01('0xb')](_0x8d01('0x15'),_0x22cf62);logger['debug']('CreateSquareMessage',_0x22cf62,JSON['stringify'](_0x3938be));_0x3394f3(_0x3938be);})[_0x8d01('0x14')](function(_0x362320){logger[_0x8d01('0x10')]('CreateSquareMessage',_0x362320[_0x8d01('0x12')],_0x22cf62);_0x3548c5(_0x56d94d['error'](0x1f4,_0x362320[_0x8d01('0x12')]));});});};
\ No newline at end of file
index b269663..8c41138 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9413=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareOdbc.controller','get','/:id','isAuthenticated','15s','test','post','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express'];(function(_0x4a4b2c,_0xd56092){var _0x52f2d9=function(_0x540e50){while(--_0x540e50){_0x4a4b2c['push'](_0x4a4b2c['shift']());}};_0x52f2d9(++_0xd56092);}(_0x9413,0x8e));var _0x3941=function(_0x164760,_0x5874b0){_0x164760=_0x164760-0x0;var _0x8b91b2=_0x9413[_0x164760];return _0x8b91b2;};'use strict';var multer=require(_0x3941('0x0'));var util=require(_0x3941('0x1'));var path=require(_0x3941('0x2'));var timeout=require(_0x3941('0x3'));var express=require(_0x3941('0x4'));var router=express[_0x3941('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x3941('0x6'));var interaction=require(_0x3941('0x7'));var config=require(_0x3941('0x8'));var controller=require(_0x3941('0x9'));router[_0x3941('0xa')]('/',auth['isAuthenticated'](),controller['index']);router[_0x3941('0xa')](_0x3941('0xb'),auth[_0x3941('0xc')](),controller['show']);router['get']('/:id/test',auth[_0x3941('0xc')](),timeout(_0x3941('0xd')),controller[_0x3941('0xe')]);router[_0x3941('0xf')]('/',auth[_0x3941('0xc')](),controller['create']);router[_0x3941('0x10')](_0x3941('0xb'),auth['isAuthenticated'](),controller[_0x3941('0x11')]);router[_0x3941('0x12')]('/:id',auth['isAuthenticated'](),controller[_0x3941('0x13')]);module[_0x3941('0x14')]=router;
\ No newline at end of file
+var _0xb9a6=['get','isAuthenticated','index','show','/:id/test','15s','test','post','create','put','/:id','delete','exports','multer','path','connect-timeout','Router','fs-extra'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xb9a6,0x109));var _0x6b9a=function(_0x40b8c4,_0x57681a){_0x40b8c4=_0x40b8c4-0x0;var _0x532c29=_0xb9a6[_0x40b8c4];return _0x532c29;};'use strict';var multer=require(_0x6b9a('0x0'));var util=require('util');var path=require(_0x6b9a('0x1'));var timeout=require(_0x6b9a('0x2'));var express=require('express');var router=express[_0x6b9a('0x3')]();var fs_extra=require(_0x6b9a('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./squareOdbc.controller');router[_0x6b9a('0x5')]('/',auth[_0x6b9a('0x6')](),controller[_0x6b9a('0x7')]);router[_0x6b9a('0x5')]('/:id',auth[_0x6b9a('0x6')](),controller[_0x6b9a('0x8')]);router[_0x6b9a('0x5')](_0x6b9a('0x9'),auth[_0x6b9a('0x6')](),timeout(_0x6b9a('0xa')),controller[_0x6b9a('0xb')]);router[_0x6b9a('0xc')]('/',auth[_0x6b9a('0x6')](),controller[_0x6b9a('0xd')]);router[_0x6b9a('0xe')](_0x6b9a('0xf'),auth[_0x6b9a('0x6')](),controller['update']);router[_0x6b9a('0x10')]('/:id',auth[_0x6b9a('0x6')](),controller['destroy']);module[_0x6b9a('0x11')]=router;
\ No newline at end of file
index 967b001..ff038cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe8f8=['sequelize','STRING'];(function(_0x3f8b16,_0x1fb61f){var _0x76f5a7=function(_0x2204fa){while(--_0x2204fa){_0x3f8b16['push'](_0x3f8b16['shift']());}};_0x76f5a7(++_0x1fb61f);}(_0xe8f8,0x1da));var _0x8e8f=function(_0x39fd3a,_0x3f57b7){_0x39fd3a=_0x39fd3a-0x0;var _0x674f3c=_0xe8f8[_0x39fd3a];return _0x674f3c;};'use strict';var Sequelize=require(_0x8e8f('0x0'));module['exports']={'name':{'type':Sequelize[_0x8e8f('0x1')],'unique':'name','allowNull':![]},'dsn':{'type':Sequelize[_0x8e8f('0x1')]},'description':{'type':Sequelize[_0x8e8f('0x1')]}};
\ No newline at end of file
+var _0x6f32=['STRING','sequelize','exports'];(function(_0x58d922,_0x51f11a){var _0x1b6f7e=function(_0x5e7b3d){while(--_0x5e7b3d){_0x58d922['push'](_0x58d922['shift']());}};_0x1b6f7e(++_0x51f11a);}(_0x6f32,0x1f0));var _0x26f3=function(_0x4e6ae6,_0x49dba6){_0x4e6ae6=_0x4e6ae6-0x0;var _0x23c108=_0x6f32[_0x4e6ae6];return _0x23c108;};'use strict';var Sequelize=require(_0x26f3('0x0'));module[_0x26f3('0x1')]={'name':{'type':Sequelize[_0x26f3('0x2')],'unique':'name','allowNull':![]},'dsn':{'type':Sequelize[_0x26f3('0x2')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 27c769b..eb7cfdd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb01=['options','includeAll','include','findAll','rows','catch','show','params','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','test','dsn','odbc','openSync','closeSync','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','sendStatus','status','end','json','limit','undefined','count','offset','set','Content-Range','apply','reject','save','update','then','destroy','get','ODBC','error','name','send','index','map','SquareOdbc','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','fields','attributes','length','order','sort','where','pick','filter','merge','VIRTUAL'];(function(_0x312ae4,_0x4a50db){var _0x52154d=function(_0x43215b){while(--_0x43215b){_0x312ae4['push'](_0x312ae4['shift']());}};_0x52154d(++_0x4a50db);}(_0xbb01,0x6c));var _0x1bb0=function(_0x5c6244,_0x112ab8){_0x5c6244=_0x5c6244-0x0;var _0x5800ce=_0xbb01[_0x5c6244];return _0x5800ce;};'use strict';var emlformat=require(_0x1bb0('0x0'));var rimraf=require(_0x1bb0('0x1'));var zipdir=require(_0x1bb0('0x2'));var jsonpatch=require(_0x1bb0('0x3'));var rp=require('request-promise');var moment=require(_0x1bb0('0x4'));var BPromise=require(_0x1bb0('0x5'));var Mustache=require(_0x1bb0('0x6'));var util=require(_0x1bb0('0x7'));var path=require(_0x1bb0('0x8'));var sox=require(_0x1bb0('0x9'));var csv=require(_0x1bb0('0xa'));var ejs=require(_0x1bb0('0xb'));var fs=require('fs');var fs_extra=require(_0x1bb0('0xc'));var _=require('lodash');var squel=require(_0x1bb0('0xd'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x1bb0('0xe'));var toCsv=require(_0x1bb0('0xa'));var querystring=require(_0x1bb0('0xf'));var Papa=require(_0x1bb0('0x10'));var Redis=require('ioredis');var authService=require(_0x1bb0('0x11'));var qs=require(_0x1bb0('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x1bb0('0x13'));var logger=require('../../config/logger')(_0x1bb0('0x14'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x491688,_0x2b57db){_0x2b57db=_0x2b57db||0xcc;return function(_0x2bf4f6){if(_0x2bf4f6){return _0x491688[_0x1bb0('0x15')](_0x2b57db);}return _0x491688[_0x1bb0('0x16')](_0x2b57db)[_0x1bb0('0x17')]();};}function respondWithResult(_0x5d84f3,_0x30d91e){_0x30d91e=_0x30d91e||0xc8;return function(_0x3dd3f6){if(_0x3dd3f6){return _0x5d84f3[_0x1bb0('0x16')](_0x30d91e)[_0x1bb0('0x18')](_0x3dd3f6);}};}function respondWithFilteredResult(_0x31a5d3,_0x54240f){return function(_0x48321f){if(_0x48321f){var _0xef436c=typeof _0x54240f['offset']==='undefined'&&typeof _0x54240f[_0x1bb0('0x19')]===_0x1bb0('0x1a');var _0x466c1d=_0x48321f[_0x1bb0('0x1b')];var _0x37fef6=_0xef436c?0x0:_0x54240f[_0x1bb0('0x1c')];var _0x74dc61=_0xef436c?_0x48321f[_0x1bb0('0x1b')]:_0x54240f[_0x1bb0('0x1c')]+_0x54240f[_0x1bb0('0x19')];var _0x4fa210;if(_0x74dc61>=_0x466c1d){_0x74dc61=_0x466c1d;_0x4fa210=0xc8;}else{_0x4fa210=0xce;}_0x31a5d3[_0x1bb0('0x16')](_0x4fa210);return _0x31a5d3[_0x1bb0('0x1d')](_0x1bb0('0x1e'),_0x37fef6+'-'+_0x74dc61+'/'+_0x466c1d)[_0x1bb0('0x18')](_0x48321f);}return null;};}function patchUpdates(_0x56368d){return function(_0x253087){try{jsonpatch[_0x1bb0('0x1f')](_0x253087,_0x56368d,!![]);}catch(_0x2609a3){return BPromise[_0x1bb0('0x20')](_0x2609a3);}return _0x253087[_0x1bb0('0x21')]();};}function saveUpdates(_0x55d227,_0xffa8dc){return function(_0x3531a9){if(_0x3531a9){return _0x3531a9[_0x1bb0('0x22')](_0x55d227)[_0x1bb0('0x23')](function(_0x5c3593){return _0x5c3593;});}return null;};}function removeEntity(_0x26f618,_0x4f260b){return function(_0x54a8fc){if(_0x54a8fc){return _0x54a8fc[_0x1bb0('0x24')]()[_0x1bb0('0x23')](function(){var _0x4e472c=_0x54a8fc[_0x1bb0('0x25')]({'plain':!![]});var _0x51dcf0=_0x1bb0('0x26');return db['UserProfileResource']['destroy']({'where':{'type':_0x51dcf0,'resourceId':_0x4e472c['id']}})['then'](function(){return _0x54a8fc;});})[_0x1bb0('0x23')](function(){_0x26f618[_0x1bb0('0x16')](0xcc)[_0x1bb0('0x17')]();});}};}function handleEntityNotFound(_0x12f1e9,_0x1fa61e){return function(_0x32c9f8){if(!_0x32c9f8){_0x12f1e9[_0x1bb0('0x15')](0x194);}return _0x32c9f8;};}function handleError(_0x231622,_0x253535){_0x253535=_0x253535||0x1f4;return function(_0x10c4df){logger[_0x1bb0('0x27')](_0x10c4df['stack']);if(_0x10c4df[_0x1bb0('0x28')]){delete _0x10c4df[_0x1bb0('0x28')];}_0x231622[_0x1bb0('0x16')](_0x253535)[_0x1bb0('0x29')](_0x10c4df);};}exports[_0x1bb0('0x2a')]=function(_0x44d683,_0x22bb47){var _0x4def19={},_0x4a16bd={},_0x4f2b40={'count':0x0,'rows':[]};var _0x246928=_[_0x1bb0('0x2b')](db[_0x1bb0('0x2c')][_0x1bb0('0x2d')],function(_0x1a9491){return{'name':_0x1a9491[_0x1bb0('0x2e')],'type':_0x1a9491[_0x1bb0('0x2f')][_0x1bb0('0x30')]};});_0x4a16bd[_0x1bb0('0x31')]=_['map'](_0x246928,_0x1bb0('0x28'));_0x4a16bd['query']=_[_0x1bb0('0x32')](_0x44d683[_0x1bb0('0x33')]);_0x4a16bd[_0x1bb0('0x34')]=_[_0x1bb0('0x35')](_0x4a16bd['model'],_0x4a16bd[_0x1bb0('0x33')]);_0x4def19['attributes']=_[_0x1bb0('0x35')](_0x4a16bd[_0x1bb0('0x31')],qs[_0x1bb0('0x36')](_0x44d683[_0x1bb0('0x33')][_0x1bb0('0x36')]));_0x4def19['attributes']=_0x4def19[_0x1bb0('0x37')][_0x1bb0('0x38')]?_0x4def19[_0x1bb0('0x37')]:_0x4a16bd[_0x1bb0('0x31')];if(!_0x44d683['query']['hasOwnProperty']('nolimit')){_0x4def19[_0x1bb0('0x19')]=qs['limit'](_0x44d683[_0x1bb0('0x33')][_0x1bb0('0x19')]);_0x4def19['offset']=qs[_0x1bb0('0x1c')](_0x44d683[_0x1bb0('0x33')]['offset']);}_0x4def19[_0x1bb0('0x39')]=qs['sort'](_0x44d683[_0x1bb0('0x33')][_0x1bb0('0x3a')]);_0x4def19[_0x1bb0('0x3b')]=qs[_0x1bb0('0x34')](_[_0x1bb0('0x3c')](_0x44d683['query'],_0x4a16bd['filters']),_0x246928);if(_0x44d683[_0x1bb0('0x33')][_0x1bb0('0x3d')]){_0x4def19[_0x1bb0('0x3b')]=_[_0x1bb0('0x3e')](_0x4def19['where'],{'$or':_[_0x1bb0('0x2b')](_0x246928,function(_0x52ccef){if(_0x52ccef['type']!==_0x1bb0('0x3f')){var _0x42aee0={};_0x42aee0[_0x52ccef['name']]={'$like':'%'+_0x44d683[_0x1bb0('0x33')][_0x1bb0('0x3d')]+'%'};return _0x42aee0;}})});}_0x4def19=_[_0x1bb0('0x3e')]({},_0x4def19,_0x44d683[_0x1bb0('0x40')]);var _0x1be1c6={'where':_0x4def19[_0x1bb0('0x3b')]};return db['SquareOdbc']['count'](_0x1be1c6)[_0x1bb0('0x23')](function(_0x4b9446){_0x4f2b40[_0x1bb0('0x1b')]=_0x4b9446;if(_0x44d683[_0x1bb0('0x33')][_0x1bb0('0x41')]){_0x4def19[_0x1bb0('0x42')]=[{'all':!![]}];}return db[_0x1bb0('0x2c')][_0x1bb0('0x43')](_0x4def19);})[_0x1bb0('0x23')](function(_0x416124){_0x4f2b40[_0x1bb0('0x44')]=_0x416124;return _0x4f2b40;})['then'](respondWithFilteredResult(_0x22bb47,_0x4def19))[_0x1bb0('0x45')](handleError(_0x22bb47,null));};exports[_0x1bb0('0x46')]=function(_0x5aa677,_0x4baa91){var _0x4a6701={'raw':!![],'where':{'id':_0x5aa677[_0x1bb0('0x47')]['id']}},_0x4a3816={};_0x4a3816[_0x1bb0('0x31')]=_[_0x1bb0('0x32')](db[_0x1bb0('0x2c')][_0x1bb0('0x2d')]);_0x4a3816[_0x1bb0('0x33')]=_['keys'](_0x5aa677[_0x1bb0('0x33')]);_0x4a3816[_0x1bb0('0x34')]=_[_0x1bb0('0x35')](_0x4a3816[_0x1bb0('0x31')],_0x4a3816[_0x1bb0('0x33')]);_0x4a6701[_0x1bb0('0x37')]=_[_0x1bb0('0x35')](_0x4a3816[_0x1bb0('0x31')],qs[_0x1bb0('0x36')](_0x5aa677[_0x1bb0('0x33')][_0x1bb0('0x36')]));_0x4a6701[_0x1bb0('0x37')]=_0x4a6701[_0x1bb0('0x37')][_0x1bb0('0x38')]?_0x4a6701[_0x1bb0('0x37')]:_0x4a3816['model'];if(_0x5aa677[_0x1bb0('0x33')][_0x1bb0('0x41')]){_0x4a6701[_0x1bb0('0x42')]=[{'all':!![]}];}_0x4a6701=_[_0x1bb0('0x3e')]({},_0x4a6701,_0x5aa677[_0x1bb0('0x40')]);return db[_0x1bb0('0x2c')][_0x1bb0('0x48')](_0x4a6701)[_0x1bb0('0x23')](handleEntityNotFound(_0x4baa91,null))[_0x1bb0('0x23')](respondWithResult(_0x4baa91,null))[_0x1bb0('0x45')](handleError(_0x4baa91,null));};exports[_0x1bb0('0x49')]=function(_0x7e0f8d,_0x3cf14b){return db[_0x1bb0('0x2c')][_0x1bb0('0x49')](_0x7e0f8d[_0x1bb0('0x4a')],{})[_0x1bb0('0x23')](function(_0x35b34b){var _0x3d91f1=_0x7e0f8d[_0x1bb0('0x4b')][_0x1bb0('0x25')]({'plain':!![]});if(!_0x3d91f1)throw new Error(_0x1bb0('0x4c'));if(_0x3d91f1['role']==='user'){var _0xfeef68=_0x35b34b[_0x1bb0('0x25')]({'plain':!![]});var _0x2ee227=_0x1bb0('0x26');return db[_0x1bb0('0x4d')][_0x1bb0('0x48')]({'where':{'name':_0x2ee227,'userProfileId':_0x3d91f1[_0x1bb0('0x4e')]},'raw':!![]})[_0x1bb0('0x23')](function(_0x573bfd){if(_0x573bfd&&_0x573bfd['autoAssociation']===0x0){return db[_0x1bb0('0x4f')]['create']({'name':_0xfeef68[_0x1bb0('0x28')],'resourceId':_0xfeef68['id'],'type':_0x573bfd[_0x1bb0('0x28')],'sectionId':_0x573bfd['id']},{})[_0x1bb0('0x23')](function(){return _0x35b34b;});}else{return _0x35b34b;}})[_0x1bb0('0x45')](function(_0x21ed5b){logger[_0x1bb0('0x27')](_0x1bb0('0x50'),_0x21ed5b);throw _0x21ed5b;});}return _0x35b34b;})[_0x1bb0('0x23')](respondWithResult(_0x3cf14b,0xc9))[_0x1bb0('0x45')](handleError(_0x3cf14b,null));};exports['update']=function(_0x139577,_0xce279b){if(_0x139577[_0x1bb0('0x4a')]['id']){delete _0x139577['body']['id'];}return db[_0x1bb0('0x2c')][_0x1bb0('0x48')]({'where':{'id':_0x139577[_0x1bb0('0x47')]['id']}})[_0x1bb0('0x23')](handleEntityNotFound(_0xce279b,null))['then'](saveUpdates(_0x139577['body'],null))[_0x1bb0('0x23')](respondWithResult(_0xce279b,null))['catch'](handleError(_0xce279b,null));};exports[_0x1bb0('0x24')]=function(_0x15a765,_0xedd047){return db['SquareOdbc'][_0x1bb0('0x48')]({'where':{'id':_0x15a765[_0x1bb0('0x47')]['id']}})[_0x1bb0('0x23')](handleEntityNotFound(_0xedd047,null))['then'](removeEntity(_0xedd047,null))['catch'](handleError(_0xedd047,null));};exports[_0x1bb0('0x51')]=function(_0x340d80,_0x142229,_0x3c9015){var _0x38fd41;return db['SquareOdbc'][_0x1bb0('0x48')]({'where':{'id':_0x340d80[_0x1bb0('0x47')]['id']},'attributes':['id',_0x1bb0('0x52')]})[_0x1bb0('0x23')](handleEntityNotFound(_0x142229,null))['then'](function(_0x256677){if(_0x256677){var _0x28cc7c=require(_0x1bb0('0x53'))();_0x28cc7c[_0x1bb0('0x54')](_0x256677[_0x1bb0('0x52')]);_0x28cc7c[_0x1bb0('0x55')]();return _0x256677;}})[_0x1bb0('0x23')](respondWithResult(_0x142229,null))[_0x1bb0('0x45')](handleError(_0x142229,null));};
\ No newline at end of file
+var _0x6769=['hasOwnProperty','order','sort','pick','filter','where','merge','VIRTUAL','SquareOdbc','include','findAll','rows','catch','show','params','rawAttributes','includeAll','options','find','create','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','userProfileId','autoAssociation','body','dsn','closeSync','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','json','offset','limit','undefined','count','status','set','apply','reject','save','update','then','destroy','ODBC','UserProfileResource','error','stack','name','send','index','fieldName','type','key','model','map','query','keys','filters','attributes','intersection','fields','length'];(function(_0x4736ea,_0x14e2b3){var _0x109270=function(_0x28ee98){while(--_0x28ee98){_0x4736ea['push'](_0x4736ea['shift']());}};_0x109270(++_0x14e2b3);}(_0x6769,0xcb));var _0x9676=function(_0x5224f5,_0x1bf38d){_0x5224f5=_0x5224f5-0x0;var _0x24e8ec=_0x6769[_0x5224f5];return _0x24e8ec;};'use strict';var emlformat=require(_0x9676('0x0'));var rimraf=require(_0x9676('0x1'));var zipdir=require(_0x9676('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x9676('0x3'));var moment=require(_0x9676('0x4'));var BPromise=require(_0x9676('0x5'));var Mustache=require(_0x9676('0x6'));var util=require('util');var path=require(_0x9676('0x7'));var sox=require(_0x9676('0x8'));var csv=require(_0x9676('0x9'));var ejs=require(_0x9676('0xa'));var fs=require('fs');var fs_extra=require(_0x9676('0xb'));var _=require(_0x9676('0xc'));var squel=require(_0x9676('0xd'));var crypto=require('crypto');var jsforce=require(_0x9676('0xe'));var deskjs=require(_0x9676('0xf'));var toCsv=require('to-csv');var querystring=require(_0x9676('0x10'));var Papa=require(_0x9676('0x11'));var Redis=require(_0x9676('0x12'));var authService=require(_0x9676('0x13'));var qs=require(_0x9676('0x14'));var as=require(_0x9676('0x15'));var hardwareService=require(_0x9676('0x16'));var logger=require('../../config/logger')(_0x9676('0x17'));var utils=require(_0x9676('0x18'));var config=require(_0x9676('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0x9676('0x1a'))['db'];function respondWithStatusCode(_0x3ddf80,_0x5dcc4c){_0x5dcc4c=_0x5dcc4c||0xcc;return function(_0x1bc309){if(_0x1bc309){return _0x3ddf80[_0x9676('0x1b')](_0x5dcc4c);}return _0x3ddf80['status'](_0x5dcc4c)[_0x9676('0x1c')]();};}function respondWithResult(_0x5da043,_0x3804f9){_0x3804f9=_0x3804f9||0xc8;return function(_0x28ee4a){if(_0x28ee4a){return _0x5da043['status'](_0x3804f9)[_0x9676('0x1d')](_0x28ee4a);}};}function respondWithFilteredResult(_0x1d497c,_0x362fcf){return function(_0x2d95d8){if(_0x2d95d8){var _0x228fd1=typeof _0x362fcf[_0x9676('0x1e')]==='undefined'&&typeof _0x362fcf[_0x9676('0x1f')]===_0x9676('0x20');var _0x5d8330=_0x2d95d8[_0x9676('0x21')];var _0x5212bc=_0x228fd1?0x0:_0x362fcf[_0x9676('0x1e')];var _0x550414=_0x228fd1?_0x2d95d8[_0x9676('0x21')]:_0x362fcf[_0x9676('0x1e')]+_0x362fcf[_0x9676('0x1f')];var _0x51bcc5;if(_0x550414>=_0x5d8330){_0x550414=_0x5d8330;_0x51bcc5=0xc8;}else{_0x51bcc5=0xce;}_0x1d497c[_0x9676('0x22')](_0x51bcc5);return _0x1d497c[_0x9676('0x23')]('Content-Range',_0x5212bc+'-'+_0x550414+'/'+_0x5d8330)[_0x9676('0x1d')](_0x2d95d8);}return null;};}function patchUpdates(_0x10415f){return function(_0x1c022a){try{jsonpatch[_0x9676('0x24')](_0x1c022a,_0x10415f,!![]);}catch(_0x31a140){return BPromise[_0x9676('0x25')](_0x31a140);}return _0x1c022a[_0x9676('0x26')]();};}function saveUpdates(_0xd4e76c,_0x2779f6){return function(_0x3280e9){if(_0x3280e9){return _0x3280e9[_0x9676('0x27')](_0xd4e76c)[_0x9676('0x28')](function(_0x330be6){return _0x330be6;});}return null;};}function removeEntity(_0x50dbf4,_0x1bf345){return function(_0xa77719){if(_0xa77719){return _0xa77719[_0x9676('0x29')]()[_0x9676('0x28')](function(){var _0x453193=_0xa77719['get']({'plain':!![]});var _0x3b297d=_0x9676('0x2a');return db[_0x9676('0x2b')][_0x9676('0x29')]({'where':{'type':_0x3b297d,'resourceId':_0x453193['id']}})[_0x9676('0x28')](function(){return _0xa77719;});})[_0x9676('0x28')](function(){_0x50dbf4[_0x9676('0x22')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3634c0,_0x3500f2){return function(_0x253008){if(!_0x253008){_0x3634c0['sendStatus'](0x194);}return _0x253008;};}function handleError(_0x338e09,_0x255168){_0x255168=_0x255168||0x1f4;return function(_0x148882){logger[_0x9676('0x2c')](_0x148882[_0x9676('0x2d')]);if(_0x148882[_0x9676('0x2e')]){delete _0x148882[_0x9676('0x2e')];}_0x338e09[_0x9676('0x22')](_0x255168)[_0x9676('0x2f')](_0x148882);};}exports[_0x9676('0x30')]=function(_0x226d3b,_0x28172a){var _0x209f08={},_0x31ac90={},_0x34fd20={'count':0x0,'rows':[]};var _0x192c71=_['map'](db['SquareOdbc']['rawAttributes'],function(_0xd69505){return{'name':_0xd69505[_0x9676('0x31')],'type':_0xd69505[_0x9676('0x32')][_0x9676('0x33')]};});_0x31ac90[_0x9676('0x34')]=_[_0x9676('0x35')](_0x192c71,_0x9676('0x2e'));_0x31ac90[_0x9676('0x36')]=_[_0x9676('0x37')](_0x226d3b[_0x9676('0x36')]);_0x31ac90[_0x9676('0x38')]=_['intersection'](_0x31ac90[_0x9676('0x34')],_0x31ac90[_0x9676('0x36')]);_0x209f08[_0x9676('0x39')]=_[_0x9676('0x3a')](_0x31ac90[_0x9676('0x34')],qs['fields'](_0x226d3b[_0x9676('0x36')][_0x9676('0x3b')]));_0x209f08[_0x9676('0x39')]=_0x209f08['attributes'][_0x9676('0x3c')]?_0x209f08[_0x9676('0x39')]:_0x31ac90[_0x9676('0x34')];if(!_0x226d3b[_0x9676('0x36')][_0x9676('0x3d')]('nolimit')){_0x209f08[_0x9676('0x1f')]=qs[_0x9676('0x1f')](_0x226d3b['query'][_0x9676('0x1f')]);_0x209f08[_0x9676('0x1e')]=qs[_0x9676('0x1e')](_0x226d3b[_0x9676('0x36')][_0x9676('0x1e')]);}_0x209f08[_0x9676('0x3e')]=qs[_0x9676('0x3f')](_0x226d3b['query'][_0x9676('0x3f')]);_0x209f08['where']=qs[_0x9676('0x38')](_[_0x9676('0x40')](_0x226d3b[_0x9676('0x36')],_0x31ac90[_0x9676('0x38')]),_0x192c71);if(_0x226d3b[_0x9676('0x36')][_0x9676('0x41')]){_0x209f08[_0x9676('0x42')]=_[_0x9676('0x43')](_0x209f08[_0x9676('0x42')],{'$or':_[_0x9676('0x35')](_0x192c71,function(_0x56646b){if(_0x56646b[_0x9676('0x32')]!==_0x9676('0x44')){var _0x47ef9c={};_0x47ef9c[_0x56646b[_0x9676('0x2e')]]={'$like':'%'+_0x226d3b['query'][_0x9676('0x41')]+'%'};return _0x47ef9c;}})});}_0x209f08=_[_0x9676('0x43')]({},_0x209f08,_0x226d3b['options']);var _0x51009b={'where':_0x209f08[_0x9676('0x42')]};return db[_0x9676('0x45')][_0x9676('0x21')](_0x51009b)['then'](function(_0x3e0cd5){_0x34fd20['count']=_0x3e0cd5;if(_0x226d3b['query']['includeAll']){_0x209f08[_0x9676('0x46')]=[{'all':!![]}];}return db[_0x9676('0x45')][_0x9676('0x47')](_0x209f08);})[_0x9676('0x28')](function(_0x18035d){_0x34fd20[_0x9676('0x48')]=_0x18035d;return _0x34fd20;})[_0x9676('0x28')](respondWithFilteredResult(_0x28172a,_0x209f08))[_0x9676('0x49')](handleError(_0x28172a,null));};exports[_0x9676('0x4a')]=function(_0x316f17,_0x34a9a5){var _0xe11ea3={'raw':!![],'where':{'id':_0x316f17[_0x9676('0x4b')]['id']}},_0x4e6fdc={};_0x4e6fdc[_0x9676('0x34')]=_[_0x9676('0x37')](db[_0x9676('0x45')][_0x9676('0x4c')]);_0x4e6fdc['query']=_[_0x9676('0x37')](_0x316f17[_0x9676('0x36')]);_0x4e6fdc[_0x9676('0x38')]=_[_0x9676('0x3a')](_0x4e6fdc['model'],_0x4e6fdc[_0x9676('0x36')]);_0xe11ea3['attributes']=_[_0x9676('0x3a')](_0x4e6fdc[_0x9676('0x34')],qs[_0x9676('0x3b')](_0x316f17['query'][_0x9676('0x3b')]));_0xe11ea3['attributes']=_0xe11ea3[_0x9676('0x39')]['length']?_0xe11ea3[_0x9676('0x39')]:_0x4e6fdc[_0x9676('0x34')];if(_0x316f17[_0x9676('0x36')][_0x9676('0x4d')]){_0xe11ea3[_0x9676('0x46')]=[{'all':!![]}];}_0xe11ea3=_[_0x9676('0x43')]({},_0xe11ea3,_0x316f17[_0x9676('0x4e')]);return db['SquareOdbc'][_0x9676('0x4f')](_0xe11ea3)[_0x9676('0x28')](handleEntityNotFound(_0x34a9a5,null))[_0x9676('0x28')](respondWithResult(_0x34a9a5,null))[_0x9676('0x49')](handleError(_0x34a9a5,null));};exports[_0x9676('0x50')]=function(_0x2275f2,_0x85f970){return db['SquareOdbc'][_0x9676('0x50')](_0x2275f2['body'],{})[_0x9676('0x28')](function(_0x52ace5){var _0x26d1ec=_0x2275f2['user'][_0x9676('0x51')]({'plain':!![]});if(!_0x26d1ec)throw new Error(_0x9676('0x52'));if(_0x26d1ec['role']==='user'){var _0x1ab5a4=_0x52ace5[_0x9676('0x51')]({'plain':!![]});var _0x11088c=_0x9676('0x2a');return db['UserProfileSection']['find']({'where':{'name':_0x11088c,'userProfileId':_0x26d1ec[_0x9676('0x53')]},'raw':!![]})['then'](function(_0x552fc1){if(_0x552fc1&&_0x552fc1[_0x9676('0x54')]===0x0){return db[_0x9676('0x2b')]['create']({'name':_0x1ab5a4['name'],'resourceId':_0x1ab5a4['id'],'type':_0x552fc1[_0x9676('0x2e')],'sectionId':_0x552fc1['id']},{})['then'](function(){return _0x52ace5;});}else{return _0x52ace5;}})[_0x9676('0x49')](function(_0x2d0f10){logger[_0x9676('0x2c')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x2d0f10);throw _0x2d0f10;});}return _0x52ace5;})[_0x9676('0x28')](respondWithResult(_0x85f970,0xc9))[_0x9676('0x49')](handleError(_0x85f970,null));};exports[_0x9676('0x27')]=function(_0x191473,_0x17f45a){if(_0x191473[_0x9676('0x55')]['id']){delete _0x191473[_0x9676('0x55')]['id'];}return db[_0x9676('0x45')]['find']({'where':{'id':_0x191473[_0x9676('0x4b')]['id']}})['then'](handleEntityNotFound(_0x17f45a,null))[_0x9676('0x28')](saveUpdates(_0x191473['body'],null))[_0x9676('0x28')](respondWithResult(_0x17f45a,null))[_0x9676('0x49')](handleError(_0x17f45a,null));};exports[_0x9676('0x29')]=function(_0x40281,_0x3f661e){return db[_0x9676('0x45')][_0x9676('0x4f')]({'where':{'id':_0x40281['params']['id']}})[_0x9676('0x28')](handleEntityNotFound(_0x3f661e,null))[_0x9676('0x28')](removeEntity(_0x3f661e,null))[_0x9676('0x49')](handleError(_0x3f661e,null));};exports['test']=function(_0x2866e8,_0x32aa52,_0x1bb1fb){var _0x4bd2b5;return db[_0x9676('0x45')]['find']({'where':{'id':_0x2866e8[_0x9676('0x4b')]['id']},'attributes':['id',_0x9676('0x56')]})[_0x9676('0x28')](handleEntityNotFound(_0x32aa52,null))[_0x9676('0x28')](function(_0x1ae13d){if(_0x1ae13d){var _0x1f7532=require('odbc')();_0x1f7532['openSync'](_0x1ae13d[_0x9676('0x56')]);_0x1f7532[_0x9676('0x57')]();return _0x1ae13d;}})[_0x9676('0x28')](respondWithResult(_0x32aa52,null))[_0x9676('0x49')](handleError(_0x32aa52,null));};
\ No newline at end of file
index ea4e477..007e70c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['./squareOdbc.attributes','exports','define','SquareOdbc','square_odbc','util','moment','bluebird','request-promise','path','../../config/environment'];(function(_0x55749d,_0x30b18b){var _0x23edaf=function(_0x29088e){while(--_0x29088e){_0x55749d['push'](_0x55749d['shift']());}};_0x23edaf(++_0x30b18b);}(_0xb10b,0x144));var _0xbb10=function(_0x58b5d7,_0x79ca8a){_0x58b5d7=_0x58b5d7-0x0;var _0x817269=_0xb10b[_0x58b5d7];return _0x817269;};'use strict';var _=require('lodash');var util=require(_0xbb10('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0xbb10('0x1'));var BPromise=require(_0xbb10('0x2'));var rp=require(_0xbb10('0x3'));var fs=require('fs');var path=require(_0xbb10('0x4'));var rimraf=require('rimraf');var config=require(_0xbb10('0x5'));var attributes=require(_0xbb10('0x6'));module[_0xbb10('0x7')]=function(_0x18ddf6,_0x13f44d){return _0x18ddf6[_0xbb10('0x8')](_0xbb10('0x9'),attributes,{'tableName':_0xbb10('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd3d6=['util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','exports','define','SquareOdbc','square_odbc','lodash'];(function(_0x46de3a,_0xd9d5d6){var _0x40ce2e=function(_0x30d223){while(--_0x30d223){_0x46de3a['push'](_0x46de3a['shift']());}};_0x40ce2e(++_0xd9d5d6);}(_0xd3d6,0x1c6));var _0x6d3d=function(_0x2ca515,_0x2f0654){_0x2ca515=_0x2ca515-0x0;var _0x2f7701=_0xd3d6[_0x2ca515];return _0x2f7701;};'use strict';var _=require(_0x6d3d('0x0'));var util=require(_0x6d3d('0x1'));var logger=require(_0x6d3d('0x2'))(_0x6d3d('0x3'));var moment=require(_0x6d3d('0x4'));var BPromise=require(_0x6d3d('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x6d3d('0x6'));var rimraf=require(_0x6d3d('0x7'));var config=require(_0x6d3d('0x8'));var attributes=require('./squareOdbc.attributes');module[_0x6d3d('0x9')]=function(_0x294d5f,_0x9d83fe){return _0x294d5f[_0x6d3d('0xa')](_0x6d3d('0xb'),attributes,{'tableName':_0x6d3d('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 80c4ff4..0660bb5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa20a=['SquareOdbc,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','SquareOdbc,\x20%s,\x20%s','message','result','catch','ShowSquareOdbc','SquareOdbc','find','options','raw','attributes','include','map','model','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','debug'];(function(_0x5c6244,_0x112ab8){var _0x5800ce=function(_0x304e3d){while(--_0x304e3d){_0x5c6244['push'](_0x5c6244['shift']());}};_0x5800ce(++_0x112ab8);}(_0xa20a,0x1cc));var _0xaa20=function(_0x35885a,_0x42fed7){_0x35885a=_0x35885a-0x0;var _0xe86249=_0xa20a[_0x35885a];return _0xe86249;};'use strict';var _=require(_0xaa20('0x0'));var util=require(_0xaa20('0x1'));var moment=require(_0xaa20('0x2'));var BPromise=require('bluebird');var rs=require(_0xaa20('0x3'));var fs=require('fs');var Redis=require(_0xaa20('0x4'));var db=require(_0xaa20('0x5'))['db'];var utils=require(_0xaa20('0x6'));var logger=require(_0xaa20('0x7'))('rpc');var config=require(_0xaa20('0x8'));var jayson=require(_0xaa20('0x9'));var client=jayson[_0xaa20('0xa')][_0xaa20('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xbbc30,_0x1ccec7,_0x112fe0){return new BPromise(function(_0x4a1f4c,_0x263798){return client[_0xaa20('0xc')](_0xbbc30,_0x112fe0)[_0xaa20('0xd')](function(_0x145c09){logger[_0xaa20('0xe')]('SquareOdbc,\x20%s,\x20%s',_0x1ccec7,'request\x20sent');logger[_0xaa20('0xf')](_0xaa20('0x10'),_0x1ccec7,_0xaa20('0x11'),JSON[_0xaa20('0x12')](_0x145c09));if(_0x145c09[_0xaa20('0x13')]){if(_0x145c09[_0xaa20('0x13')][_0xaa20('0x14')]===0x1f4){logger[_0xaa20('0x13')](_0xaa20('0x15'),_0x1ccec7,_0x145c09['error'][_0xaa20('0x16')]);return _0x263798(_0x145c09[_0xaa20('0x13')]['message']);}logger[_0xaa20('0x13')](_0xaa20('0x15'),_0x1ccec7,_0x145c09[_0xaa20('0x13')][_0xaa20('0x16')]);return _0x4a1f4c(_0x145c09[_0xaa20('0x13')][_0xaa20('0x16')]);}else{logger[_0xaa20('0xe')]('SquareOdbc,\x20%s,\x20%s',_0x1ccec7,_0xaa20('0x11'));_0x4a1f4c(_0x145c09[_0xaa20('0x17')][_0xaa20('0x16')]);}})[_0xaa20('0x18')](function(_0x2b68fc){logger['error']('SquareOdbc,\x20%s,\x20%s',_0x1ccec7,_0x2b68fc);_0x263798(_0x2b68fc);});});}exports[_0xaa20('0x19')]=function(_0x4af4a3){var _0xcfa3d0=this;return new Promise(function(_0x39b2d1,_0x500683){return db[_0xaa20('0x1a')][_0xaa20('0x1b')]({'raw':_0x4af4a3[_0xaa20('0x1c')]?_0x4af4a3[_0xaa20('0x1c')][_0xaa20('0x1d')]===undefined?!![]:![]:!![],'where':_0x4af4a3['options']?_0x4af4a3['options']['where']||null:null,'attributes':_0x4af4a3[_0xaa20('0x1c')]?_0x4af4a3[_0xaa20('0x1c')][_0xaa20('0x1e')]||null:null,'include':_0x4af4a3['options']?_0x4af4a3[_0xaa20('0x1c')][_0xaa20('0x1f')]?_[_0xaa20('0x20')](_0x4af4a3[_0xaa20('0x1c')][_0xaa20('0x1f')],function(_0x256724){return{'model':db[_0x256724[_0xaa20('0x21')]],'as':_0x256724['as'],'attributes':_0x256724[_0xaa20('0x1e')],'include':_0x256724['include']?_['map'](_0x256724['include'],function(_0x30f025){return{'model':db[_0x30f025[_0xaa20('0x21')]],'as':_0x30f025['as'],'attributes':_0x30f025[_0xaa20('0x1e')],'include':_0x30f025['include']?_[_0xaa20('0x20')](_0x30f025[_0xaa20('0x1f')],function(_0x483f10){return{'model':db[_0x483f10[_0xaa20('0x21')]],'as':_0x483f10['as'],'attributes':_0x483f10[_0xaa20('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xaa20('0xd')](function(_0x25eb52){logger[_0xaa20('0xe')](_0xaa20('0x19'),_0x4af4a3);logger[_0xaa20('0xf')]('ShowSquareOdbc',_0x4af4a3,JSON[_0xaa20('0x12')](_0x25eb52));_0x39b2d1(_0x25eb52);})['catch'](function(_0x22e690){logger['error'](_0xaa20('0x19'),_0x22e690[_0xaa20('0x16')],_0x4af4a3);_0x500683(_0xcfa3d0[_0xaa20('0x13')](0x1f4,_0x22e690[_0xaa20('0x16')]));});});};
\ No newline at end of file
+var _0x3740=['ShowSquareOdbc','SquareOdbc','find','options','raw','where','attributes','include','map','model','then','debug','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/environment','jayson/promise','client','http','request','SquareOdbc,\x20%s,\x20%s','request\x20sent','stringify','error','message','info','catch'];(function(_0x358d95,_0x23dbb2){var _0x4e4ee6=function(_0x37ca5b){while(--_0x37ca5b){_0x358d95['push'](_0x358d95['shift']());}};_0x4e4ee6(++_0x23dbb2);}(_0x3740,0x123));var _0x0374=function(_0x5c78d9,_0x2736c7){_0x5c78d9=_0x5c78d9-0x0;var _0x69ae1f=_0x3740[_0x5c78d9];return _0x69ae1f;};'use strict';var _=require(_0x0374('0x0'));var util=require(_0x0374('0x1'));var moment=require(_0x0374('0x2'));var BPromise=require(_0x0374('0x3'));var rs=require(_0x0374('0x4'));var fs=require('fs');var Redis=require(_0x0374('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x0374('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0x0374('0x7'));var jayson=require(_0x0374('0x8'));var client=jayson[_0x0374('0x9')][_0x0374('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2bfe56,_0x2cac91,_0x3c813f){return new BPromise(function(_0x42ea33,_0x18144a){return client[_0x0374('0xb')](_0x2bfe56,_0x3c813f)['then'](function(_0x50f611){logger['info'](_0x0374('0xc'),_0x2cac91,_0x0374('0xd'));logger['debug']('SquareOdbc,\x20%s,\x20%s,\x20%s',_0x2cac91,_0x0374('0xd'),JSON[_0x0374('0xe')](_0x50f611));if(_0x50f611['error']){if(_0x50f611[_0x0374('0xf')]['code']===0x1f4){logger[_0x0374('0xf')](_0x0374('0xc'),_0x2cac91,_0x50f611['error']['message']);return _0x18144a(_0x50f611[_0x0374('0xf')]['message']);}logger[_0x0374('0xf')]('SquareOdbc,\x20%s,\x20%s',_0x2cac91,_0x50f611[_0x0374('0xf')][_0x0374('0x10')]);return _0x42ea33(_0x50f611[_0x0374('0xf')]['message']);}else{logger[_0x0374('0x11')](_0x0374('0xc'),_0x2cac91,_0x0374('0xd'));_0x42ea33(_0x50f611['result'][_0x0374('0x10')]);}})[_0x0374('0x12')](function(_0xc5eddc){logger['error'](_0x0374('0xc'),_0x2cac91,_0xc5eddc);_0x18144a(_0xc5eddc);});});}exports[_0x0374('0x13')]=function(_0x14ad4e){var _0x267f86=this;return new Promise(function(_0x477282,_0x64d410){return db[_0x0374('0x14')][_0x0374('0x15')]({'raw':_0x14ad4e['options']?_0x14ad4e[_0x0374('0x16')][_0x0374('0x17')]===undefined?!![]:![]:!![],'where':_0x14ad4e[_0x0374('0x16')]?_0x14ad4e['options'][_0x0374('0x18')]||null:null,'attributes':_0x14ad4e[_0x0374('0x16')]?_0x14ad4e[_0x0374('0x16')][_0x0374('0x19')]||null:null,'include':_0x14ad4e[_0x0374('0x16')]?_0x14ad4e[_0x0374('0x16')][_0x0374('0x1a')]?_[_0x0374('0x1b')](_0x14ad4e['options']['include'],function(_0x256f67){return{'model':db[_0x256f67[_0x0374('0x1c')]],'as':_0x256f67['as'],'attributes':_0x256f67[_0x0374('0x19')],'include':_0x256f67[_0x0374('0x1a')]?_[_0x0374('0x1b')](_0x256f67[_0x0374('0x1a')],function(_0x205a81){return{'model':db[_0x205a81[_0x0374('0x1c')]],'as':_0x205a81['as'],'attributes':_0x205a81[_0x0374('0x19')],'include':_0x205a81[_0x0374('0x1a')]?_[_0x0374('0x1b')](_0x205a81['include'],function(_0x534ec1){return{'model':db[_0x534ec1[_0x0374('0x1c')]],'as':_0x534ec1['as'],'attributes':_0x534ec1[_0x0374('0x19')]};}):[]};}):[]};}):[]:[]})[_0x0374('0x1d')](function(_0x3393b9){logger['info']('ShowSquareOdbc',_0x14ad4e);logger[_0x0374('0x1e')](_0x0374('0x13'),_0x14ad4e,JSON['stringify'](_0x3393b9));_0x477282(_0x3393b9);})[_0x0374('0x12')](function(_0x2a07b8){logger[_0x0374('0xf')](_0x0374('0x13'),_0x2a07b8['message'],_0x14ad4e);_0x64d410(_0x267f86[_0x0374('0xf')](0x1f4,_0x2a07b8['message']));});});};
\ No newline at end of file
index ffe8110..21261c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a84=['/:id','isAuthenticated','/:id/users','getUsers','post','create','put','destroy','delete','removeUsers','exports','multer','util','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./squareProject.controller','get','index'];(function(_0x42e8df,_0x147866){var _0x2fbb8b=function(_0x40f48f){while(--_0x40f48f){_0x42e8df['push'](_0x42e8df['shift']());}};_0x2fbb8b(++_0x147866);}(_0x2a84,0x170));var _0x42a8=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x2a84[_0x14add3];return _0x4a174f;};'use strict';var multer=require(_0x42a8('0x0'));var util=require(_0x42a8('0x1'));var path=require('path');var timeout=require(_0x42a8('0x2'));var express=require(_0x42a8('0x3'));var router=express[_0x42a8('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x42a8('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x42a8('0x6'));var controller=require(_0x42a8('0x7'));router[_0x42a8('0x8')]('/',auth['isAuthenticated'](),controller[_0x42a8('0x9')]);router['get'](_0x42a8('0xa'),auth[_0x42a8('0xb')](),controller['show']);router[_0x42a8('0x8')](_0x42a8('0xc'),auth['isAuthenticated'](),controller[_0x42a8('0xd')]);router[_0x42a8('0xe')]('/',auth['isAuthenticated'](),controller[_0x42a8('0xf')]);router[_0x42a8('0xe')](_0x42a8('0xc'),auth['isAuthenticated'](),controller['addUsers']);router[_0x42a8('0x10')]('/:id',auth[_0x42a8('0xb')](),controller['update']);router['delete'](_0x42a8('0xa'),auth[_0x42a8('0xb')](),controller[_0x42a8('0x11')]);router[_0x42a8('0x12')](_0x42a8('0xc'),auth[_0x42a8('0xb')](),controller[_0x42a8('0x13')]);module[_0x42a8('0x14')]=router;
\ No newline at end of file
+var _0x4b11=['get','isAuthenticated','index','/:id','show','/:id/users','getUsers','post','addUsers','put','update','delete','removeUsers','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./squareProject.controller'];(function(_0x15f8ad,_0x5275c3){var _0xc0238a=function(_0x5550c8){while(--_0x5550c8){_0x15f8ad['push'](_0x15f8ad['shift']());}};_0xc0238a(++_0x5275c3);}(_0x4b11,0xf4));var _0x14b1=function(_0x5c5fb2,_0x12ba68){_0x5c5fb2=_0x5c5fb2-0x0;var _0x3d1422=_0x4b11[_0x5c5fb2];return _0x3d1422;};'use strict';var multer=require(_0x14b1('0x0'));var util=require(_0x14b1('0x1'));var path=require(_0x14b1('0x2'));var timeout=require(_0x14b1('0x3'));var express=require('express');var router=express[_0x14b1('0x4')]();var fs_extra=require(_0x14b1('0x5'));var auth=require(_0x14b1('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x14b1('0x7'));var controller=require(_0x14b1('0x8'));router[_0x14b1('0x9')]('/',auth[_0x14b1('0xa')](),controller[_0x14b1('0xb')]);router[_0x14b1('0x9')](_0x14b1('0xc'),auth[_0x14b1('0xa')](),controller[_0x14b1('0xd')]);router[_0x14b1('0x9')](_0x14b1('0xe'),auth[_0x14b1('0xa')](),controller[_0x14b1('0xf')]);router[_0x14b1('0x10')]('/',auth[_0x14b1('0xa')](),controller['create']);router[_0x14b1('0x10')](_0x14b1('0xe'),auth['isAuthenticated'](),controller[_0x14b1('0x11')]);router[_0x14b1('0x12')](_0x14b1('0xc'),auth[_0x14b1('0xa')](),controller[_0x14b1('0x13')]);router[_0x14b1('0x14')]('/:id',auth[_0x14b1('0xa')](),controller['destroy']);router['delete'](_0x14b1('0xe'),auth[_0x14b1('0xa')](),controller[_0x14b1('0x15')]);module[_0x14b1('0x16')]=router;
\ No newline at end of file
index 9be23b7..a68f1a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8135=['getDataValue','toString','long','utf8','DATE','exports','name','STRING','TEXT','BLOB','preproduction'];(function(_0x377352,_0x4349d8){var _0x426764=function(_0x53dab7){while(--_0x53dab7){_0x377352['push'](_0x377352['shift']());}};_0x426764(++_0x4349d8);}(_0x8135,0x73));var _0x5813=function(_0xa967a5,_0xae4a4c){_0xa967a5=_0xa967a5-0x0;var _0x543f74=_0x8135[_0xa967a5];return _0x543f74;};'use strict';var Sequelize=require('sequelize');module[_0x5813('0x0')]={'name':{'type':Sequelize['STRING'],'unique':_0x5813('0x1'),'allowNull':![]},'description':{'type':Sequelize[_0x5813('0x2')]},'notes':{'type':Sequelize[_0x5813('0x3')]},'preproduction':{'type':Sequelize[_0x5813('0x4')]('long'),'get':function(){if(this['getDataValue'](_0x5813('0x5'))){return this[_0x5813('0x6')](_0x5813('0x5'))[_0x5813('0x7')]('utf8');}}},'production':{'type':Sequelize[_0x5813('0x4')](_0x5813('0x8')),'get':function(){if(this[_0x5813('0x6')]('production')){return this[_0x5813('0x6')]('production')['toString'](_0x5813('0x9'));}}},'savedAt':{'type':Sequelize[_0x5813('0xa')]},'publishedAt':{'type':Sequelize[_0x5813('0xa')]}};
\ No newline at end of file
+var _0xbc37=['TEXT','BLOB','getDataValue','preproduction','utf8','long','production','toString','DATE','sequelize','exports','name','STRING'];(function(_0x4d3940,_0x167a82){var _0x542862=function(_0x462ca2){while(--_0x462ca2){_0x4d3940['push'](_0x4d3940['shift']());}};_0x542862(++_0x167a82);}(_0xbc37,0x11a));var _0x7bc3=function(_0x15e89b,_0x4381ce){_0x15e89b=_0x15e89b-0x0;var _0x401d64=_0xbc37[_0x15e89b];return _0x401d64;};'use strict';var Sequelize=require(_0x7bc3('0x0'));module[_0x7bc3('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x7bc3('0x2'),'allowNull':![]},'description':{'type':Sequelize[_0x7bc3('0x3')]},'notes':{'type':Sequelize[_0x7bc3('0x4')]},'preproduction':{'type':Sequelize[_0x7bc3('0x5')]('long'),'get':function(){if(this[_0x7bc3('0x6')](_0x7bc3('0x7'))){return this[_0x7bc3('0x6')](_0x7bc3('0x7'))['toString'](_0x7bc3('0x8'));}}},'production':{'type':Sequelize['BLOB'](_0x7bc3('0x9')),'get':function(){if(this[_0x7bc3('0x6')](_0x7bc3('0xa'))){return this['getDataValue'](_0x7bc3('0xa'))[_0x7bc3('0xb')](_0x7bc3('0x8'));}}},'savedAt':{'type':Sequelize[_0x7bc3('0xc')]},'publishedAt':{'type':Sequelize['DATE']}};
\ No newline at end of file
index 4690b50..4668efd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c49=['offset','set','apply','reject','then','destroy','get','UserProfileResource','sendStatus','error','name','send','index','map','SquareProject','rawAttributes','key','model','keys','query','intersection','attributes','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','fields','length','include','find','create','user','SquareProjects','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','body','addUsers','omit','ids','removeUsers','emit','userSquareProject:remove','getUsers','findOne','User','filters','hasOwnProperty','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','path','sox','to-csv','ejs','squel','crypto','jsforce','desk.js','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./squareProject.socket','end','status','json','undefined','limit','count'];(function(_0x1e9424,_0x191cba){var _0x1bd96c=function(_0x5e952d){while(--_0x5e952d){_0x1e9424['push'](_0x1e9424['shift']());}};_0x1bd96c(++_0x191cba);}(_0x8c49,0xf8));var _0x98c4=function(_0x483807,_0x11861b){_0x483807=_0x483807-0x0;var _0x1f678a=_0x8c49[_0x483807];return _0x1f678a;};'use strict';var emlformat=require(_0x98c4('0x0'));var rimraf=require(_0x98c4('0x1'));var zipdir=require(_0x98c4('0x2'));var jsonpatch=require(_0x98c4('0x3'));var rp=require('request-promise');var moment=require(_0x98c4('0x4'));var BPromise=require(_0x98c4('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0x98c4('0x6'));var sox=require(_0x98c4('0x7'));var csv=require(_0x98c4('0x8'));var ejs=require(_0x98c4('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x98c4('0xa'));var crypto=require(_0x98c4('0xb'));var jsforce=require(_0x98c4('0xc'));var deskjs=require(_0x98c4('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x98c4('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x98c4('0xf'));var logger=require(_0x98c4('0x10'))(_0x98c4('0x11'));var utils=require(_0x98c4('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0x98c4('0x13'));var db=require(_0x98c4('0x14'))['db'];config[_0x98c4('0x15')]=_[_0x98c4('0x16')](config[_0x98c4('0x15')],{'host':'localhost','port':0x18eb});var socket=require(_0x98c4('0x17'))(new Redis(config['redis']));require(_0x98c4('0x18'))['register'](socket);function respondWithStatusCode(_0x16bca2,_0x2782a7){_0x2782a7=_0x2782a7||0xcc;return function(_0x52da23){if(_0x52da23){return _0x16bca2['sendStatus'](_0x2782a7);}return _0x16bca2['status'](_0x2782a7)[_0x98c4('0x19')]();};}function respondWithResult(_0x556fc0,_0x3d8ee3){_0x3d8ee3=_0x3d8ee3||0xc8;return function(_0x47cd3e){if(_0x47cd3e){return _0x556fc0[_0x98c4('0x1a')](_0x3d8ee3)[_0x98c4('0x1b')](_0x47cd3e);}};}function respondWithFilteredResult(_0x53b65d,_0x294458){return function(_0xa36335){if(_0xa36335){var _0x15cef3=typeof _0x294458['offset']===_0x98c4('0x1c')&&typeof _0x294458[_0x98c4('0x1d')]==='undefined';var _0x49d900=_0xa36335[_0x98c4('0x1e')];var _0x6ff4e2=_0x15cef3?0x0:_0x294458[_0x98c4('0x1f')];var _0x470ac7=_0x15cef3?_0xa36335[_0x98c4('0x1e')]:_0x294458[_0x98c4('0x1f')]+_0x294458[_0x98c4('0x1d')];var _0x409ea6;if(_0x470ac7>=_0x49d900){_0x470ac7=_0x49d900;_0x409ea6=0xc8;}else{_0x409ea6=0xce;}_0x53b65d[_0x98c4('0x1a')](_0x409ea6);return _0x53b65d[_0x98c4('0x20')]('Content-Range',_0x6ff4e2+'-'+_0x470ac7+'/'+_0x49d900)[_0x98c4('0x1b')](_0xa36335);}return null;};}function patchUpdates(_0x326113){return function(_0x36d65c){try{jsonpatch[_0x98c4('0x21')](_0x36d65c,_0x326113,!![]);}catch(_0x9277b0){return BPromise[_0x98c4('0x22')](_0x9277b0);}return _0x36d65c['save']();};}function saveUpdates(_0xaebf19,_0x2b4e84){return function(_0x101206){if(_0x101206){return _0x101206['update'](_0xaebf19)[_0x98c4('0x23')](function(_0x41f7a6){return _0x41f7a6;});}return null;};}function removeEntity(_0x32168a,_0x4232a9){return function(_0x263722){if(_0x263722){return _0x263722[_0x98c4('0x24')]()['then'](function(){var _0x10314f=_0x263722[_0x98c4('0x25')]({'plain':!![]});var _0x5dad61='SquareProjects';return db[_0x98c4('0x26')][_0x98c4('0x24')]({'where':{'type':_0x5dad61,'resourceId':_0x10314f['id']}})[_0x98c4('0x23')](function(){return _0x263722;});})[_0x98c4('0x23')](function(){_0x32168a[_0x98c4('0x1a')](0xcc)[_0x98c4('0x19')]();});}};}function handleEntityNotFound(_0x44ac8c,_0x127bd7){return function(_0x2082cd){if(!_0x2082cd){_0x44ac8c[_0x98c4('0x27')](0x194);}return _0x2082cd;};}function handleError(_0x1eee2e,_0x475828){_0x475828=_0x475828||0x1f4;return function(_0x16b669){logger[_0x98c4('0x28')](_0x16b669['stack']);if(_0x16b669['name']){delete _0x16b669[_0x98c4('0x29')];}_0x1eee2e[_0x98c4('0x1a')](_0x475828)[_0x98c4('0x2a')](_0x16b669);};}exports[_0x98c4('0x2b')]=function(_0x56e18a,_0x16fd20){var _0x2fdefb={},_0x20e135={},_0x32e990={'count':0x0,'rows':[]};var _0x3f306b=_[_0x98c4('0x2c')](db[_0x98c4('0x2d')][_0x98c4('0x2e')],function(_0x3697ec){return{'name':_0x3697ec['fieldName'],'type':_0x3697ec['type'][_0x98c4('0x2f')]};});_0x20e135[_0x98c4('0x30')]=_[_0x98c4('0x2c')](_0x3f306b,_0x98c4('0x29'));_0x20e135['query']=_[_0x98c4('0x31')](_0x56e18a[_0x98c4('0x32')]);_0x20e135['filters']=_[_0x98c4('0x33')](_0x20e135[_0x98c4('0x30')],_0x20e135[_0x98c4('0x32')]);_0x2fdefb[_0x98c4('0x34')]=_[_0x98c4('0x33')](_0x20e135[_0x98c4('0x30')],qs['fields'](_0x56e18a[_0x98c4('0x32')]['fields']));_0x2fdefb[_0x98c4('0x34')]=_0x2fdefb['attributes']['length']?_0x2fdefb[_0x98c4('0x34')]:_0x20e135[_0x98c4('0x30')];if(!_0x56e18a[_0x98c4('0x32')]['hasOwnProperty'](_0x98c4('0x35'))){_0x2fdefb[_0x98c4('0x1d')]=qs[_0x98c4('0x1d')](_0x56e18a[_0x98c4('0x32')][_0x98c4('0x1d')]);_0x2fdefb[_0x98c4('0x1f')]=qs[_0x98c4('0x1f')](_0x56e18a[_0x98c4('0x32')]['offset']);}_0x2fdefb[_0x98c4('0x36')]=qs[_0x98c4('0x37')](_0x56e18a['query'][_0x98c4('0x37')]);_0x2fdefb[_0x98c4('0x38')]=qs['filters'](_[_0x98c4('0x39')](_0x56e18a[_0x98c4('0x32')],_0x20e135['filters']),_0x3f306b);if(_0x56e18a[_0x98c4('0x32')][_0x98c4('0x3a')]){_0x2fdefb[_0x98c4('0x38')]=_[_0x98c4('0x3b')](_0x2fdefb[_0x98c4('0x38')],{'$or':_['map'](_0x3f306b,function(_0x4446f0){if(_0x4446f0[_0x98c4('0x3c')]!==_0x98c4('0x3d')){var _0x4c5776={};_0x4c5776[_0x4446f0[_0x98c4('0x29')]]={'$like':'%'+_0x56e18a[_0x98c4('0x32')][_0x98c4('0x3a')]+'%'};return _0x4c5776;}})});}_0x2fdefb=_['merge']({},_0x2fdefb,_0x56e18a[_0x98c4('0x3e')]);var _0x5cc417={'where':_0x2fdefb['where']};return db[_0x98c4('0x2d')][_0x98c4('0x1e')](_0x5cc417)[_0x98c4('0x23')](function(_0x38c19c){_0x32e990[_0x98c4('0x1e')]=_0x38c19c;if(_0x56e18a[_0x98c4('0x32')][_0x98c4('0x3f')]){_0x2fdefb['include']=[{'all':!![]}];}return db[_0x98c4('0x2d')][_0x98c4('0x40')](_0x2fdefb);})[_0x98c4('0x23')](function(_0x4282d2){_0x32e990[_0x98c4('0x41')]=_0x4282d2;return _0x32e990;})['then'](respondWithFilteredResult(_0x16fd20,_0x2fdefb))[_0x98c4('0x42')](handleError(_0x16fd20,null));};exports[_0x98c4('0x43')]=function(_0x381a1f,_0x13df0e){var _0xebdf62={'raw':![],'where':{'id':_0x381a1f[_0x98c4('0x44')]['id']}},_0x5a04cc={};_0x5a04cc[_0x98c4('0x30')]=_[_0x98c4('0x31')](db[_0x98c4('0x2d')][_0x98c4('0x2e')]);_0x5a04cc['query']=_[_0x98c4('0x31')](_0x381a1f['query']);_0x5a04cc['filters']=_[_0x98c4('0x33')](_0x5a04cc[_0x98c4('0x30')],_0x5a04cc['query']);_0xebdf62[_0x98c4('0x34')]=_['intersection'](_0x5a04cc[_0x98c4('0x30')],qs[_0x98c4('0x45')](_0x381a1f[_0x98c4('0x32')][_0x98c4('0x45')]));_0xebdf62[_0x98c4('0x34')]=_0xebdf62[_0x98c4('0x34')][_0x98c4('0x46')]?_0xebdf62[_0x98c4('0x34')]:_0x5a04cc[_0x98c4('0x30')];if(_0x381a1f[_0x98c4('0x32')][_0x98c4('0x3f')]){_0xebdf62[_0x98c4('0x47')]=[{'all':!![]}];}_0xebdf62=_['merge']({},_0xebdf62,_0x381a1f[_0x98c4('0x3e')]);return db[_0x98c4('0x2d')][_0x98c4('0x48')](_0xebdf62)[_0x98c4('0x23')](handleEntityNotFound(_0x13df0e,null))[_0x98c4('0x23')](respondWithResult(_0x13df0e,null))[_0x98c4('0x42')](handleError(_0x13df0e,null));};exports['create']=function(_0x4dcfe2,_0x13b3c8){return db['SquareProject'][_0x98c4('0x49')](_0x4dcfe2['body'],{})['then'](function(_0x2204ec){var _0x38f3f2=_0x4dcfe2[_0x98c4('0x4a')]['get']({'plain':!![]});if(!_0x38f3f2)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x38f3f2['role']===_0x98c4('0x4a')){var _0x358643=_0x2204ec['get']({'plain':!![]});var _0x4700bc=_0x98c4('0x4b');return db[_0x98c4('0x4c')][_0x98c4('0x48')]({'where':{'name':_0x4700bc,'userProfileId':_0x38f3f2[_0x98c4('0x4d')]},'raw':!![]})[_0x98c4('0x23')](function(_0x58d3b1){if(_0x58d3b1&&_0x58d3b1[_0x98c4('0x4e')]===0x0){return db[_0x98c4('0x26')][_0x98c4('0x49')]({'name':_0x358643['name'],'resourceId':_0x358643['id'],'type':_0x58d3b1[_0x98c4('0x29')],'sectionId':_0x58d3b1['id']},{})['then'](function(){return _0x2204ec;});}else{return _0x2204ec;}})[_0x98c4('0x42')](function(_0x321bb6){logger['error'](_0x98c4('0x4f'),_0x321bb6);throw _0x321bb6;});}return _0x2204ec;})[_0x98c4('0x23')](respondWithResult(_0x13b3c8,0xc9))[_0x98c4('0x42')](handleError(_0x13b3c8,null));};exports[_0x98c4('0x50')]=function(_0xa731f3,_0xf48ead){if(_0xa731f3['body']['id']){delete _0xa731f3[_0x98c4('0x51')]['id'];}return db[_0x98c4('0x2d')]['find']({'where':{'id':_0xa731f3[_0x98c4('0x44')]['id']}})[_0x98c4('0x23')](handleEntityNotFound(_0xf48ead,null))[_0x98c4('0x23')](saveUpdates(_0xa731f3[_0x98c4('0x51')],null))[_0x98c4('0x23')](respondWithResult(_0xf48ead,null))[_0x98c4('0x42')](handleError(_0xf48ead,null));};exports[_0x98c4('0x24')]=function(_0x30fd31,_0x2ae9fd){return db[_0x98c4('0x2d')][_0x98c4('0x48')]({'where':{'id':_0x30fd31[_0x98c4('0x44')]['id']}})[_0x98c4('0x23')](handleEntityNotFound(_0x2ae9fd,null))[_0x98c4('0x23')](removeEntity(_0x2ae9fd,null))[_0x98c4('0x42')](handleError(_0x2ae9fd,null));};exports[_0x98c4('0x52')]=function(_0x233ab2,_0x44a5da,_0x106366){return db[_0x98c4('0x2d')][_0x98c4('0x48')]({'where':{'id':_0x233ab2[_0x98c4('0x44')]['id']}})[_0x98c4('0x23')](handleEntityNotFound(_0x44a5da,null))[_0x98c4('0x23')](function(_0x3fdb6){if(_0x3fdb6){return _0x3fdb6['addUsers'](_0x233ab2['body']['ids'],_[_0x98c4('0x53')](_0x233ab2['body'],[_0x98c4('0x54'),'id'])||{});}})[_0x98c4('0x23')](respondWithResult(_0x44a5da,null))[_0x98c4('0x42')](handleError(_0x44a5da,null));};exports['removeUsers']=function(_0x246b5b,_0x2d3ce0,_0x4e7419){return db[_0x98c4('0x2d')][_0x98c4('0x48')]({'where':{'id':_0x246b5b[_0x98c4('0x44')]['id']}})['then'](handleEntityNotFound(_0x2d3ce0,null))[_0x98c4('0x23')](function(_0x4ede8b){if(_0x4ede8b){return _0x4ede8b[_0x98c4('0x55')](_0x246b5b['query']['ids'])[_0x98c4('0x23')](function(){if(_['isArray'](_0x246b5b[_0x98c4('0x32')][_0x98c4('0x54')])){for(var _0x4a8ec3=0x0;_0x4a8ec3<_0x246b5b[_0x98c4('0x32')]['ids']['length'];_0x4a8ec3+=0x1){socket[_0x98c4('0x56')](_0x98c4('0x57'),{'UserId':Number(_0x246b5b['query'][_0x98c4('0x54')][_0x4a8ec3]),'SquareProjectId':Number(_0x246b5b[_0x98c4('0x44')]['id'])});}}else{socket[_0x98c4('0x56')](_0x98c4('0x57'),{'UserId':Number(_0x246b5b[_0x98c4('0x32')]['ids']),'SquareProjectId':Number(_0x246b5b[_0x98c4('0x44')]['id'])});}});}})[_0x98c4('0x23')](respondWithStatusCode(_0x2d3ce0,null))['catch'](handleError(_0x2d3ce0,null));};exports[_0x98c4('0x58')]=function(_0x499c97,_0x5c0d65,_0x1c2643){var _0x27c7b9={};var _0x663060={};var _0x2d6ed9;var _0xb6f939;return db[_0x98c4('0x2d')][_0x98c4('0x59')]({'where':{'id':_0x499c97[_0x98c4('0x44')]['id']}})['then'](handleEntityNotFound(_0x5c0d65,null))[_0x98c4('0x23')](function(_0x501dd3){if(_0x501dd3){_0x2d6ed9=_0x501dd3;_0x663060[_0x98c4('0x30')]=_[_0x98c4('0x31')](db[_0x98c4('0x5a')][_0x98c4('0x2e')]);_0x663060[_0x98c4('0x32')]=_[_0x98c4('0x31')](_0x499c97['query']);_0x663060[_0x98c4('0x5b')]=_[_0x98c4('0x33')](_0x663060['model'],_0x663060[_0x98c4('0x32')]);_0x27c7b9[_0x98c4('0x34')]=_[_0x98c4('0x33')](_0x663060['model'],qs[_0x98c4('0x45')](_0x499c97['query']['fields']));_0x27c7b9[_0x98c4('0x34')]=_0x27c7b9[_0x98c4('0x34')][_0x98c4('0x46')]?_0x27c7b9['attributes']:_0x663060['model'];_0x27c7b9[_0x98c4('0x36')]=qs[_0x98c4('0x37')](_0x499c97[_0x98c4('0x32')][_0x98c4('0x37')]);_0x27c7b9[_0x98c4('0x38')]=qs[_0x98c4('0x5b')](_[_0x98c4('0x39')](_0x499c97[_0x98c4('0x32')],_0x663060[_0x98c4('0x5b')]));if(_0x499c97['query'][_0x98c4('0x3a')]){_0x27c7b9[_0x98c4('0x38')]=_['merge'](_0x27c7b9[_0x98c4('0x38')],{'$or':_['map'](_0x27c7b9[_0x98c4('0x34')],function(_0x49a752){var _0x19d5e4={};_0x19d5e4[_0x49a752]={'$like':'%'+_0x499c97[_0x98c4('0x32')]['filter']+'%'};return _0x19d5e4;})});}_0x27c7b9=_['merge']({},_0x27c7b9,_0x499c97[_0x98c4('0x3e')]);return _0x2d6ed9['getUsers'](_0x27c7b9);}})['then'](function(_0x11023b){if(_0x11023b){_0xb6f939=_0x11023b['length'];if(!_0x499c97[_0x98c4('0x32')][_0x98c4('0x5c')](_0x98c4('0x35'))){_0x27c7b9[_0x98c4('0x1d')]=qs[_0x98c4('0x1d')](_0x499c97['query']['limit']);_0x27c7b9[_0x98c4('0x1f')]=qs[_0x98c4('0x1f')](_0x499c97[_0x98c4('0x32')][_0x98c4('0x1f')]);}return _0x2d6ed9[_0x98c4('0x58')](_0x27c7b9);}})[_0x98c4('0x23')](function(_0x16f4d8){if(_0x16f4d8){return _0x16f4d8?{'count':_0xb6f939,'rows':_0x16f4d8}:null;}})['then'](respondWithResult(_0x5c0d65,null))[_0x98c4('0x42')](handleError(_0x5c0d65,null));};
\ No newline at end of file
+var _0x10f6=['moment','bluebird','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','./squareProject.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','SquareProjects','UserProfileResource','error','stack','name','send','map','SquareProject','rawAttributes','fieldName','model','keys','filters','intersection','query','fields','attributes','hasOwnProperty','order','sort','where','merge','VIRTUAL','filter','includeAll','include','findAll','rows','catch','length','options','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','params','addUsers','ids','omit','removeUsers','userSquareProject:remove','emit','getUsers','findOne','User','pick','eml-format','zip-dir','fast-json-patch','request-promise'];(function(_0x46b22a,_0x5bf83a){var _0x44c2e8=function(_0x21b6fc){while(--_0x21b6fc){_0x46b22a['push'](_0x46b22a['shift']());}};_0x44c2e8(++_0x5bf83a);}(_0x10f6,0x1e1));var _0x610f=function(_0x196e85,_0x2145d7){_0x196e85=_0x196e85-0x0;var _0x2fdd3b=_0x10f6[_0x196e85];return _0x2fdd3b;};'use strict';var emlformat=require(_0x610f('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x610f('0x1'));var jsonpatch=require(_0x610f('0x2'));var rp=require(_0x610f('0x3'));var moment=require(_0x610f('0x4'));var BPromise=require(_0x610f('0x5'));var Mustache=require(_0x610f('0x6'));var util=require('util');var path=require('path');var sox=require(_0x610f('0x7'));var csv=require(_0x610f('0x8'));var ejs=require(_0x610f('0x9'));var fs=require('fs');var fs_extra=require(_0x610f('0xa'));var _=require(_0x610f('0xb'));var squel=require(_0x610f('0xc'));var crypto=require(_0x610f('0xd'));var jsforce=require(_0x610f('0xe'));var deskjs=require(_0x610f('0xf'));var toCsv=require('to-csv');var querystring=require(_0x610f('0x10'));var Papa=require(_0x610f('0x11'));var Redis=require(_0x610f('0x12'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x610f('0x13'));var logger=require(_0x610f('0x14'))('api');var utils=require(_0x610f('0x15'));var config=require(_0x610f('0x16'));var licenseUtil=require(_0x610f('0x17'));var db=require(_0x610f('0x18'))['db'];config[_0x610f('0x19')]=_['defaults'](config[_0x610f('0x19')],{'host':_0x610f('0x1a'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x610f('0x19')]));require(_0x610f('0x1b'))[_0x610f('0x1c')](socket);function respondWithStatusCode(_0xe959d5,_0xbd44ad){_0xbd44ad=_0xbd44ad||0xcc;return function(_0x13ccf8){if(_0x13ccf8){return _0xe959d5[_0x610f('0x1d')](_0xbd44ad);}return _0xe959d5[_0x610f('0x1e')](_0xbd44ad)[_0x610f('0x1f')]();};}function respondWithResult(_0x4c79e1,_0x46021b){_0x46021b=_0x46021b||0xc8;return function(_0x51e583){if(_0x51e583){return _0x4c79e1['status'](_0x46021b)[_0x610f('0x20')](_0x51e583);}};}function respondWithFilteredResult(_0x1610e5,_0xf93bf7){return function(_0x2a8a32){if(_0x2a8a32){var _0x51bc9c=typeof _0xf93bf7[_0x610f('0x21')]===_0x610f('0x22')&&typeof _0xf93bf7[_0x610f('0x23')]==='undefined';var _0x210a8e=_0x2a8a32[_0x610f('0x24')];var _0x4c7dd3=_0x51bc9c?0x0:_0xf93bf7['offset'];var _0x198036=_0x51bc9c?_0x2a8a32[_0x610f('0x24')]:_0xf93bf7[_0x610f('0x21')]+_0xf93bf7[_0x610f('0x23')];var _0x4f28d2;if(_0x198036>=_0x210a8e){_0x198036=_0x210a8e;_0x4f28d2=0xc8;}else{_0x4f28d2=0xce;}_0x1610e5[_0x610f('0x1e')](_0x4f28d2);return _0x1610e5[_0x610f('0x25')](_0x610f('0x26'),_0x4c7dd3+'-'+_0x198036+'/'+_0x210a8e)[_0x610f('0x20')](_0x2a8a32);}return null;};}function patchUpdates(_0x25f66b){return function(_0x227033){try{jsonpatch[_0x610f('0x27')](_0x227033,_0x25f66b,!![]);}catch(_0x3a688d){return BPromise[_0x610f('0x28')](_0x3a688d);}return _0x227033['save']();};}function saveUpdates(_0x473b76,_0xb77526){return function(_0x2e0f34){if(_0x2e0f34){return _0x2e0f34[_0x610f('0x29')](_0x473b76)[_0x610f('0x2a')](function(_0x399d68){return _0x399d68;});}return null;};}function removeEntity(_0x38b3c9,_0x333871){return function(_0x172eb5){if(_0x172eb5){return _0x172eb5[_0x610f('0x2b')]()[_0x610f('0x2a')](function(){var _0x9013df=_0x172eb5['get']({'plain':!![]});var _0x2ee231=_0x610f('0x2c');return db[_0x610f('0x2d')][_0x610f('0x2b')]({'where':{'type':_0x2ee231,'resourceId':_0x9013df['id']}})[_0x610f('0x2a')](function(){return _0x172eb5;});})[_0x610f('0x2a')](function(){_0x38b3c9[_0x610f('0x1e')](0xcc)[_0x610f('0x1f')]();});}};}function handleEntityNotFound(_0x294830,_0x42e8eb){return function(_0x440869){if(!_0x440869){_0x294830[_0x610f('0x1d')](0x194);}return _0x440869;};}function handleError(_0x340143,_0x2dd35d){_0x2dd35d=_0x2dd35d||0x1f4;return function(_0x2410a7){logger[_0x610f('0x2e')](_0x2410a7[_0x610f('0x2f')]);if(_0x2410a7[_0x610f('0x30')]){delete _0x2410a7[_0x610f('0x30')];}_0x340143[_0x610f('0x1e')](_0x2dd35d)[_0x610f('0x31')](_0x2410a7);};}exports['index']=function(_0x58efba,_0x2aaeee){var _0x3b83e3={},_0x32f95c={},_0x3c00e1={'count':0x0,'rows':[]};var _0x27da9d=_[_0x610f('0x32')](db[_0x610f('0x33')][_0x610f('0x34')],function(_0x26bb66){return{'name':_0x26bb66[_0x610f('0x35')],'type':_0x26bb66['type']['key']};});_0x32f95c[_0x610f('0x36')]=_[_0x610f('0x32')](_0x27da9d,_0x610f('0x30'));_0x32f95c['query']=_[_0x610f('0x37')](_0x58efba['query']);_0x32f95c[_0x610f('0x38')]=_[_0x610f('0x39')](_0x32f95c[_0x610f('0x36')],_0x32f95c[_0x610f('0x3a')]);_0x3b83e3['attributes']=_[_0x610f('0x39')](_0x32f95c[_0x610f('0x36')],qs[_0x610f('0x3b')](_0x58efba['query']['fields']));_0x3b83e3[_0x610f('0x3c')]=_0x3b83e3['attributes']['length']?_0x3b83e3[_0x610f('0x3c')]:_0x32f95c['model'];if(!_0x58efba[_0x610f('0x3a')][_0x610f('0x3d')]('nolimit')){_0x3b83e3['limit']=qs['limit'](_0x58efba[_0x610f('0x3a')][_0x610f('0x23')]);_0x3b83e3[_0x610f('0x21')]=qs[_0x610f('0x21')](_0x58efba[_0x610f('0x3a')][_0x610f('0x21')]);}_0x3b83e3[_0x610f('0x3e')]=qs[_0x610f('0x3f')](_0x58efba[_0x610f('0x3a')]['sort']);_0x3b83e3[_0x610f('0x40')]=qs[_0x610f('0x38')](_['pick'](_0x58efba[_0x610f('0x3a')],_0x32f95c[_0x610f('0x38')]),_0x27da9d);if(_0x58efba[_0x610f('0x3a')]['filter']){_0x3b83e3[_0x610f('0x40')]=_[_0x610f('0x41')](_0x3b83e3[_0x610f('0x40')],{'$or':_['map'](_0x27da9d,function(_0x302d47){if(_0x302d47['type']!==_0x610f('0x42')){var _0x3ba3b3={};_0x3ba3b3[_0x302d47[_0x610f('0x30')]]={'$like':'%'+_0x58efba[_0x610f('0x3a')][_0x610f('0x43')]+'%'};return _0x3ba3b3;}})});}_0x3b83e3=_[_0x610f('0x41')]({},_0x3b83e3,_0x58efba['options']);var _0x3db1cc={'where':_0x3b83e3[_0x610f('0x40')]};return db[_0x610f('0x33')][_0x610f('0x24')](_0x3db1cc)[_0x610f('0x2a')](function(_0x233b63){_0x3c00e1[_0x610f('0x24')]=_0x233b63;if(_0x58efba[_0x610f('0x3a')][_0x610f('0x44')]){_0x3b83e3[_0x610f('0x45')]=[{'all':!![]}];}return db[_0x610f('0x33')][_0x610f('0x46')](_0x3b83e3);})[_0x610f('0x2a')](function(_0x74bb27){_0x3c00e1[_0x610f('0x47')]=_0x74bb27;return _0x3c00e1;})[_0x610f('0x2a')](respondWithFilteredResult(_0x2aaeee,_0x3b83e3))[_0x610f('0x48')](handleError(_0x2aaeee,null));};exports['show']=function(_0x46b2fe,_0x42a003){var _0x3297d0={'raw':![],'where':{'id':_0x46b2fe['params']['id']}},_0x4c5a39={};_0x4c5a39['model']=_[_0x610f('0x37')](db[_0x610f('0x33')][_0x610f('0x34')]);_0x4c5a39['query']=_[_0x610f('0x37')](_0x46b2fe[_0x610f('0x3a')]);_0x4c5a39[_0x610f('0x38')]=_[_0x610f('0x39')](_0x4c5a39['model'],_0x4c5a39[_0x610f('0x3a')]);_0x3297d0[_0x610f('0x3c')]=_[_0x610f('0x39')](_0x4c5a39[_0x610f('0x36')],qs['fields'](_0x46b2fe['query'][_0x610f('0x3b')]));_0x3297d0[_0x610f('0x3c')]=_0x3297d0['attributes'][_0x610f('0x49')]?_0x3297d0[_0x610f('0x3c')]:_0x4c5a39[_0x610f('0x36')];if(_0x46b2fe[_0x610f('0x3a')][_0x610f('0x44')]){_0x3297d0['include']=[{'all':!![]}];}_0x3297d0=_[_0x610f('0x41')]({},_0x3297d0,_0x46b2fe[_0x610f('0x4a')]);return db[_0x610f('0x33')][_0x610f('0x4b')](_0x3297d0)['then'](handleEntityNotFound(_0x42a003,null))[_0x610f('0x2a')](respondWithResult(_0x42a003,null))[_0x610f('0x48')](handleError(_0x42a003,null));};exports['create']=function(_0x25b54c,_0x1059f2){return db['SquareProject'][_0x610f('0x4c')](_0x25b54c[_0x610f('0x4d')],{})[_0x610f('0x2a')](function(_0x510c42){var _0x496b3f=_0x25b54c[_0x610f('0x4e')][_0x610f('0x4f')]({'plain':!![]});if(!_0x496b3f)throw new Error(_0x610f('0x50'));if(_0x496b3f[_0x610f('0x51')]===_0x610f('0x4e')){var _0x5633c4=_0x510c42[_0x610f('0x4f')]({'plain':!![]});var _0x2c4493=_0x610f('0x2c');return db[_0x610f('0x52')]['find']({'where':{'name':_0x2c4493,'userProfileId':_0x496b3f[_0x610f('0x53')]},'raw':!![]})[_0x610f('0x2a')](function(_0x22081f){if(_0x22081f&&_0x22081f[_0x610f('0x54')]===0x0){return db[_0x610f('0x2d')]['create']({'name':_0x5633c4[_0x610f('0x30')],'resourceId':_0x5633c4['id'],'type':_0x22081f['name'],'sectionId':_0x22081f['id']},{})[_0x610f('0x2a')](function(){return _0x510c42;});}else{return _0x510c42;}})[_0x610f('0x48')](function(_0x1fe075){logger[_0x610f('0x2e')](_0x610f('0x55'),_0x1fe075);throw _0x1fe075;});}return _0x510c42;})[_0x610f('0x2a')](respondWithResult(_0x1059f2,0xc9))[_0x610f('0x48')](handleError(_0x1059f2,null));};exports[_0x610f('0x29')]=function(_0x558e8f,_0xd4e2e0){if(_0x558e8f[_0x610f('0x4d')]['id']){delete _0x558e8f['body']['id'];}return db[_0x610f('0x33')]['find']({'where':{'id':_0x558e8f[_0x610f('0x56')]['id']}})[_0x610f('0x2a')](handleEntityNotFound(_0xd4e2e0,null))['then'](saveUpdates(_0x558e8f[_0x610f('0x4d')],null))['then'](respondWithResult(_0xd4e2e0,null))[_0x610f('0x48')](handleError(_0xd4e2e0,null));};exports[_0x610f('0x2b')]=function(_0x4dfc39,_0x99daa9){return db[_0x610f('0x33')]['find']({'where':{'id':_0x4dfc39[_0x610f('0x56')]['id']}})[_0x610f('0x2a')](handleEntityNotFound(_0x99daa9,null))[_0x610f('0x2a')](removeEntity(_0x99daa9,null))[_0x610f('0x48')](handleError(_0x99daa9,null));};exports[_0x610f('0x57')]=function(_0x1fc806,_0x5b702d,_0x11a958){return db[_0x610f('0x33')][_0x610f('0x4b')]({'where':{'id':_0x1fc806[_0x610f('0x56')]['id']}})[_0x610f('0x2a')](handleEntityNotFound(_0x5b702d,null))[_0x610f('0x2a')](function(_0x263409){if(_0x263409){return _0x263409['addUsers'](_0x1fc806[_0x610f('0x4d')][_0x610f('0x58')],_[_0x610f('0x59')](_0x1fc806[_0x610f('0x4d')],[_0x610f('0x58'),'id'])||{});}})[_0x610f('0x2a')](respondWithResult(_0x5b702d,null))[_0x610f('0x48')](handleError(_0x5b702d,null));};exports['removeUsers']=function(_0x51b07b,_0x5909e7,_0x5d891a){return db['SquareProject'][_0x610f('0x4b')]({'where':{'id':_0x51b07b['params']['id']}})[_0x610f('0x2a')](handleEntityNotFound(_0x5909e7,null))['then'](function(_0x505c5c){if(_0x505c5c){return _0x505c5c[_0x610f('0x5a')](_0x51b07b['query'][_0x610f('0x58')])[_0x610f('0x2a')](function(){if(_['isArray'](_0x51b07b[_0x610f('0x3a')][_0x610f('0x58')])){for(var _0x505da8=0x0;_0x505da8<_0x51b07b[_0x610f('0x3a')][_0x610f('0x58')][_0x610f('0x49')];_0x505da8+=0x1){socket['emit'](_0x610f('0x5b'),{'UserId':Number(_0x51b07b['query'][_0x610f('0x58')][_0x505da8]),'SquareProjectId':Number(_0x51b07b[_0x610f('0x56')]['id'])});}}else{socket[_0x610f('0x5c')]('userSquareProject:remove',{'UserId':Number(_0x51b07b[_0x610f('0x3a')]['ids']),'SquareProjectId':Number(_0x51b07b[_0x610f('0x56')]['id'])});}});}})['then'](respondWithStatusCode(_0x5909e7,null))[_0x610f('0x48')](handleError(_0x5909e7,null));};exports[_0x610f('0x5d')]=function(_0x5659e8,_0x16c528,_0x33fdca){var _0x47bc8f={};var _0x37c5a2={};var _0x49cc17;var _0x3ae228;return db['SquareProject'][_0x610f('0x5e')]({'where':{'id':_0x5659e8[_0x610f('0x56')]['id']}})['then'](handleEntityNotFound(_0x16c528,null))[_0x610f('0x2a')](function(_0x1056fe){if(_0x1056fe){_0x49cc17=_0x1056fe;_0x37c5a2[_0x610f('0x36')]=_[_0x610f('0x37')](db[_0x610f('0x5f')]['rawAttributes']);_0x37c5a2[_0x610f('0x3a')]=_[_0x610f('0x37')](_0x5659e8['query']);_0x37c5a2[_0x610f('0x38')]=_[_0x610f('0x39')](_0x37c5a2[_0x610f('0x36')],_0x37c5a2[_0x610f('0x3a')]);_0x47bc8f[_0x610f('0x3c')]=_[_0x610f('0x39')](_0x37c5a2[_0x610f('0x36')],qs['fields'](_0x5659e8[_0x610f('0x3a')][_0x610f('0x3b')]));_0x47bc8f['attributes']=_0x47bc8f[_0x610f('0x3c')][_0x610f('0x49')]?_0x47bc8f[_0x610f('0x3c')]:_0x37c5a2[_0x610f('0x36')];_0x47bc8f[_0x610f('0x3e')]=qs[_0x610f('0x3f')](_0x5659e8[_0x610f('0x3a')]['sort']);_0x47bc8f[_0x610f('0x40')]=qs[_0x610f('0x38')](_[_0x610f('0x60')](_0x5659e8['query'],_0x37c5a2[_0x610f('0x38')]));if(_0x5659e8[_0x610f('0x3a')]['filter']){_0x47bc8f[_0x610f('0x40')]=_['merge'](_0x47bc8f[_0x610f('0x40')],{'$or':_[_0x610f('0x32')](_0x47bc8f[_0x610f('0x3c')],function(_0x4e86e7){var _0x555eeb={};_0x555eeb[_0x4e86e7]={'$like':'%'+_0x5659e8[_0x610f('0x3a')][_0x610f('0x43')]+'%'};return _0x555eeb;})});}_0x47bc8f=_[_0x610f('0x41')]({},_0x47bc8f,_0x5659e8[_0x610f('0x4a')]);return _0x49cc17[_0x610f('0x5d')](_0x47bc8f);}})[_0x610f('0x2a')](function(_0x14fd12){if(_0x14fd12){_0x3ae228=_0x14fd12[_0x610f('0x49')];if(!_0x5659e8[_0x610f('0x3a')]['hasOwnProperty']('nolimit')){_0x47bc8f[_0x610f('0x23')]=qs['limit'](_0x5659e8[_0x610f('0x3a')][_0x610f('0x23')]);_0x47bc8f['offset']=qs[_0x610f('0x21')](_0x5659e8['query'][_0x610f('0x21')]);}return _0x49cc17[_0x610f('0x5d')](_0x47bc8f);}})[_0x610f('0x2a')](function(_0x4ddab7){if(_0x4ddab7){return _0x4ddab7?{'count':_0x3ae228,'rows':_0x4ddab7}:null;}})[_0x610f('0x2a')](respondWithResult(_0x16c528,null))[_0x610f('0x48')](handleError(_0x16c528,null));};
\ No newline at end of file
index 4dc26c4..18c337d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd99d=['hook','events','../../mysqldb','save','update','remove','emit','hasOwnProperty'];(function(_0x33032e,_0x31411a){var _0x13316b=function(_0x2fb049){while(--_0x2fb049){_0x33032e['push'](_0x33032e['shift']());}};_0x13316b(++_0x31411a);}(_0xd99d,0x179));var _0xdd99=function(_0x4a66a0,_0x46a69f){_0x4a66a0=_0x4a66a0-0x0;var _0x1ae60b=_0xd99d[_0x4a66a0];return _0x1ae60b;};'use strict';var EventEmitter=require(_0xdd99('0x0'));var SquareProject=require(_0xdd99('0x1'))['db']['SquareProject'];var SquareProjectEvents=new EventEmitter();SquareProjectEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xdd99('0x2'),'afterUpdate':_0xdd99('0x3'),'afterDestroy':_0xdd99('0x4')};function emitEvent(_0x427fd3){return function(_0x236b54,_0x59f27b,_0x79d1e){SquareProjectEvents['emit'](_0x427fd3+':'+_0x236b54['id'],_0x236b54);SquareProjectEvents[_0xdd99('0x5')](_0x427fd3,_0x236b54);_0x79d1e(null);};}for(var e in events){if(events[_0xdd99('0x6')](e)){var event=events[e];SquareProject[_0xdd99('0x7')](e,emitEvent(event));}}module['exports']=SquareProjectEvents;
\ No newline at end of file
+var _0x8cfb=['save','emit','hasOwnProperty','hook','events','../../mysqldb','setMaxListeners'];(function(_0x1ad8ac,_0x4acb9a){var _0x388020=function(_0x21e0ec){while(--_0x21e0ec){_0x1ad8ac['push'](_0x1ad8ac['shift']());}};_0x388020(++_0x4acb9a);}(_0x8cfb,0x154));var _0xb8cf=function(_0xa3d9a7,_0x1cf219){_0xa3d9a7=_0xa3d9a7-0x0;var _0x48080a=_0x8cfb[_0xa3d9a7];return _0x48080a;};'use strict';var EventEmitter=require(_0xb8cf('0x0'));var SquareProject=require(_0xb8cf('0x1'))['db']['SquareProject'];var SquareProjectEvents=new EventEmitter();SquareProjectEvents[_0xb8cf('0x2')](0x0);var events={'afterCreate':_0xb8cf('0x3'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x4aadb5){return function(_0x298f0e,_0xfa1b66,_0x51bf04){SquareProjectEvents[_0xb8cf('0x4')](_0x4aadb5+':'+_0x298f0e['id'],_0x298f0e);SquareProjectEvents[_0xb8cf('0x4')](_0x4aadb5,_0x298f0e);_0x51bf04(null);};}for(var e in events){if(events[_0xb8cf('0x5')](e)){var event=events[e];SquareProject[_0xb8cf('0x6')](e,emitEvent(event));}}module['exports']=SquareProjectEvents;
\ No newline at end of file
index ec7769b..f4f400c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c62=['publishedAt','format','YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./squareProject.attributes','exports','define','SquareProject','square_projects','changed','preproduction'];(function(_0x310504,_0x26ad95){var _0x5b36d0=function(_0x253f28){while(--_0x253f28){_0x310504['push'](_0x310504['shift']());}};_0x5b36d0(++_0x26ad95);}(_0x5c62,0x120));var _0x25c6=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x5c62[_0x122ef9];return _0x42fba0;};'use strict';var _=require(_0x25c6('0x0'));var util=require(_0x25c6('0x1'));var logger=require(_0x25c6('0x2'))(_0x25c6('0x3'));var moment=require(_0x25c6('0x4'));var BPromise=require(_0x25c6('0x5'));var rp=require(_0x25c6('0x6'));var fs=require('fs');var path=require(_0x25c6('0x7'));var rimraf=require('rimraf');var config=require(_0x25c6('0x8'));var attributes=require(_0x25c6('0x9'));module[_0x25c6('0xa')]=function(_0x5bc01d,_0x3a6b97){return _0x5bc01d[_0x25c6('0xb')](_0x25c6('0xc'),attributes,{'tableName':_0x25c6('0xd'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x40b2ca,_0x56a2d5,_0x5a6a98){if(_0x40b2ca[_0x25c6('0xe')](_0x25c6('0xf'))){_0x40b2ca['savedAt']=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');}if(_0x40b2ca[_0x25c6('0xe')]('production')){_0x40b2ca[_0x25c6('0x10')]=moment()[_0x25c6('0x11')](_0x25c6('0x12'));}_0x5a6a98(null,_0x40b2ca);}}});};
\ No newline at end of file
+var _0x7d16=['production','publishedAt','lodash','util','../../config/logger','api','request-promise','rimraf','../../config/environment','./squareProject.attributes','exports','SquareProject','square_projects','preproduction','savedAt','format','YYYY-MM-DD\x20HH:mm:ss','changed'];(function(_0x3b5082,_0x540a5e){var _0xfd7e77=function(_0x3d9240){while(--_0x3d9240){_0x3b5082['push'](_0x3b5082['shift']());}};_0xfd7e77(++_0x540a5e);}(_0x7d16,0x17c));var _0x67d1=function(_0x1762d2,_0x373394){_0x1762d2=_0x1762d2-0x0;var _0x100ed3=_0x7d16[_0x1762d2];return _0x100ed3;};'use strict';var _=require(_0x67d1('0x0'));var util=require(_0x67d1('0x1'));var logger=require(_0x67d1('0x2'))(_0x67d1('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x67d1('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x67d1('0x5'));var config=require(_0x67d1('0x6'));var attributes=require(_0x67d1('0x7'));module[_0x67d1('0x8')]=function(_0xaa5db7,_0x24bf29){return _0xaa5db7['define'](_0x67d1('0x9'),attributes,{'tableName':_0x67d1('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x14d1db,_0x1bf775,_0x4b24e5){if(_0x14d1db['changed'](_0x67d1('0xb'))){_0x14d1db[_0x67d1('0xc')]=moment()[_0x67d1('0xd')](_0x67d1('0xe'));}if(_0x14d1db[_0x67d1('0xf')](_0x67d1('0x10'))){_0x14d1db[_0x67d1('0x11')]=moment()[_0x67d1('0xd')](_0x67d1('0xe'));}_0x4b24e5(null,_0x14d1db);}}});};
\ No newline at end of file
index 77929c9..f6ee4df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd0cf=['client','http','redis','defaults','localhost','socket.io-emitter','./squareProject.socket','register','request','info','SquareProject,\x20%s,\x20%s','request\x20sent','debug','SquareProject,\x20%s,\x20%s,\x20%s','error','message','result','catch','ShowSquareProject','SquareProject','find','options','where','attributes','include','map','model','then','stringify','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise'];(function(_0x15bce2,_0x54d97b){var _0x17f066=function(_0x535017){while(--_0x535017){_0x15bce2['push'](_0x15bce2['shift']());}};_0x17f066(++_0x54d97b);}(_0xd0cf,0x185));var _0xfd0c=function(_0x5954d2,_0x15db93){_0x5954d2=_0x5954d2-0x0;var _0x316928=_0xd0cf[_0x5954d2];return _0x316928;};'use strict';var _=require(_0xfd0c('0x0'));var util=require(_0xfd0c('0x1'));var moment=require(_0xfd0c('0x2'));var BPromise=require(_0xfd0c('0x3'));var rs=require(_0xfd0c('0x4'));var fs=require('fs');var Redis=require(_0xfd0c('0x5'));var db=require(_0xfd0c('0x6'))['db'];var utils=require(_0xfd0c('0x7'));var logger=require(_0xfd0c('0x8'))(_0xfd0c('0x9'));var config=require('../../config/environment');var jayson=require(_0xfd0c('0xa'));var client=jayson[_0xfd0c('0xb')][_0xfd0c('0xc')]({'port':0x232a});config[_0xfd0c('0xd')]=_[_0xfd0c('0xe')](config[_0xfd0c('0xd')],{'host':_0xfd0c('0xf'),'port':0x18eb});var socket=require(_0xfd0c('0x10'))(new Redis(config[_0xfd0c('0xd')]));require(_0xfd0c('0x11'))[_0xfd0c('0x12')](socket);function respondWithRpcPromise(_0x27fa18,_0x56de40,_0x341f7e){return new BPromise(function(_0x21d71f,_0x1eb938){return client[_0xfd0c('0x13')](_0x27fa18,_0x341f7e)['then'](function(_0x807c0b){logger[_0xfd0c('0x14')](_0xfd0c('0x15'),_0x56de40,_0xfd0c('0x16'));logger[_0xfd0c('0x17')](_0xfd0c('0x18'),_0x56de40,_0xfd0c('0x16'),JSON['stringify'](_0x807c0b));if(_0x807c0b[_0xfd0c('0x19')]){if(_0x807c0b[_0xfd0c('0x19')]['code']===0x1f4){logger[_0xfd0c('0x19')](_0xfd0c('0x15'),_0x56de40,_0x807c0b[_0xfd0c('0x19')]['message']);return _0x1eb938(_0x807c0b[_0xfd0c('0x19')][_0xfd0c('0x1a')]);}logger['error'](_0xfd0c('0x15'),_0x56de40,_0x807c0b[_0xfd0c('0x19')]['message']);return _0x21d71f(_0x807c0b['error']['message']);}else{logger[_0xfd0c('0x14')](_0xfd0c('0x15'),_0x56de40,_0xfd0c('0x16'));_0x21d71f(_0x807c0b[_0xfd0c('0x1b')][_0xfd0c('0x1a')]);}})[_0xfd0c('0x1c')](function(_0x20fa9f){logger['error'](_0xfd0c('0x15'),_0x56de40,_0x20fa9f);_0x1eb938(_0x20fa9f);});});}exports[_0xfd0c('0x1d')]=function(_0x45bcb7){var _0x29bc6d=this;return new Promise(function(_0x5228bc,_0x59d659){return db[_0xfd0c('0x1e')][_0xfd0c('0x1f')]({'raw':_0x45bcb7[_0xfd0c('0x20')]?_0x45bcb7['options']['raw']===undefined?!![]:![]:!![],'where':_0x45bcb7[_0xfd0c('0x20')]?_0x45bcb7[_0xfd0c('0x20')][_0xfd0c('0x21')]||null:null,'attributes':_0x45bcb7[_0xfd0c('0x20')]?_0x45bcb7[_0xfd0c('0x20')][_0xfd0c('0x22')]||null:null,'include':_0x45bcb7[_0xfd0c('0x20')]?_0x45bcb7[_0xfd0c('0x20')][_0xfd0c('0x23')]?_[_0xfd0c('0x24')](_0x45bcb7[_0xfd0c('0x20')][_0xfd0c('0x23')],function(_0x32b948){return{'model':db[_0x32b948[_0xfd0c('0x25')]],'as':_0x32b948['as'],'attributes':_0x32b948[_0xfd0c('0x22')],'include':_0x32b948['include']?_['map'](_0x32b948[_0xfd0c('0x23')],function(_0x3dc90a){return{'model':db[_0x3dc90a[_0xfd0c('0x25')]],'as':_0x3dc90a['as'],'attributes':_0x3dc90a[_0xfd0c('0x22')],'include':_0x3dc90a[_0xfd0c('0x23')]?_[_0xfd0c('0x24')](_0x3dc90a[_0xfd0c('0x23')],function(_0x783d0e){return{'model':db[_0x783d0e[_0xfd0c('0x25')]],'as':_0x783d0e['as'],'attributes':_0x783d0e[_0xfd0c('0x22')]};}):[]};}):[]};}):[]:[]})[_0xfd0c('0x26')](function(_0x2a31e7){logger[_0xfd0c('0x14')]('ShowSquareProject',_0x45bcb7);logger[_0xfd0c('0x17')]('ShowSquareProject',_0x45bcb7,JSON[_0xfd0c('0x27')](_0x2a31e7));_0x5228bc(_0x2a31e7);})[_0xfd0c('0x1c')](function(_0x156d94){logger[_0xfd0c('0x19')](_0xfd0c('0x1d'),_0x156d94[_0xfd0c('0x1a')],_0x45bcb7);_0x59d659(_0x29bc6d[_0xfd0c('0x19')](0x1f4,_0x156d94[_0xfd0c('0x1a')]));});});};
\ No newline at end of file
+var _0x75b4=['attributes','map','model','then','stringify','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','defaults','localhost','./squareProject.socket','request','info','request\x20sent','debug','SquareProject,\x20%s,\x20%s,\x20%s','error','code','SquareProject,\x20%s,\x20%s','message','result','catch','ShowSquareProject','find','options','raw','where','include'];(function(_0x55e695,_0x480034){var _0x4f990e=function(_0x10fb6d){while(--_0x10fb6d){_0x55e695['push'](_0x55e695['shift']());}};_0x4f990e(++_0x480034);}(_0x75b4,0x164));var _0x475b=function(_0x53ab99,_0x3b5102){_0x53ab99=_0x53ab99-0x0;var _0x36b6bc=_0x75b4[_0x53ab99];return _0x36b6bc;};'use strict';var _=require(_0x475b('0x0'));var util=require(_0x475b('0x1'));var moment=require(_0x475b('0x2'));var BPromise=require(_0x475b('0x3'));var rs=require(_0x475b('0x4'));var fs=require('fs');var Redis=require(_0x475b('0x5'));var db=require(_0x475b('0x6'))['db'];var utils=require(_0x475b('0x7'));var logger=require(_0x475b('0x8'))(_0x475b('0x9'));var config=require(_0x475b('0xa'));var jayson=require(_0x475b('0xb'));var client=jayson[_0x475b('0xc')]['http']({'port':0x232a});config[_0x475b('0xd')]=_[_0x475b('0xe')](config[_0x475b('0xd')],{'host':_0x475b('0xf'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x475b('0xd')]));require(_0x475b('0x10'))['register'](socket);function respondWithRpcPromise(_0x445618,_0x52210d,_0x39bc3c){return new BPromise(function(_0x48ec70,_0x57a33e){return client[_0x475b('0x11')](_0x445618,_0x39bc3c)['then'](function(_0x445438){logger[_0x475b('0x12')]('SquareProject,\x20%s,\x20%s',_0x52210d,_0x475b('0x13'));logger[_0x475b('0x14')](_0x475b('0x15'),_0x52210d,_0x475b('0x13'),JSON['stringify'](_0x445438));if(_0x445438['error']){if(_0x445438[_0x475b('0x16')][_0x475b('0x17')]===0x1f4){logger[_0x475b('0x16')](_0x475b('0x18'),_0x52210d,_0x445438[_0x475b('0x16')][_0x475b('0x19')]);return _0x57a33e(_0x445438[_0x475b('0x16')]['message']);}logger['error']('SquareProject,\x20%s,\x20%s',_0x52210d,_0x445438['error'][_0x475b('0x19')]);return _0x48ec70(_0x445438[_0x475b('0x16')][_0x475b('0x19')]);}else{logger['info'](_0x475b('0x18'),_0x52210d,'request\x20sent');_0x48ec70(_0x445438[_0x475b('0x1a')][_0x475b('0x19')]);}})[_0x475b('0x1b')](function(_0x3b04ad){logger[_0x475b('0x16')](_0x475b('0x18'),_0x52210d,_0x3b04ad);_0x57a33e(_0x3b04ad);});});}exports[_0x475b('0x1c')]=function(_0x4c634e){var _0xf09942=this;return new Promise(function(_0x340ec1,_0x21a7ff){return db['SquareProject'][_0x475b('0x1d')]({'raw':_0x4c634e[_0x475b('0x1e')]?_0x4c634e[_0x475b('0x1e')][_0x475b('0x1f')]===undefined?!![]:![]:!![],'where':_0x4c634e[_0x475b('0x1e')]?_0x4c634e[_0x475b('0x1e')][_0x475b('0x20')]||null:null,'attributes':_0x4c634e[_0x475b('0x1e')]?_0x4c634e[_0x475b('0x1e')]['attributes']||null:null,'include':_0x4c634e[_0x475b('0x1e')]?_0x4c634e['options'][_0x475b('0x21')]?_['map'](_0x4c634e['options']['include'],function(_0x46f76f){return{'model':db[_0x46f76f['model']],'as':_0x46f76f['as'],'attributes':_0x46f76f[_0x475b('0x22')],'include':_0x46f76f[_0x475b('0x21')]?_[_0x475b('0x23')](_0x46f76f['include'],function(_0x33fe3a){return{'model':db[_0x33fe3a[_0x475b('0x24')]],'as':_0x33fe3a['as'],'attributes':_0x33fe3a[_0x475b('0x22')],'include':_0x33fe3a[_0x475b('0x21')]?_['map'](_0x33fe3a[_0x475b('0x21')],function(_0x4a9b0c){return{'model':db[_0x4a9b0c[_0x475b('0x24')]],'as':_0x4a9b0c['as'],'attributes':_0x4a9b0c[_0x475b('0x22')]};}):[]};}):[]};}):[]:[]})[_0x475b('0x25')](function(_0x168c4a){logger[_0x475b('0x12')]('ShowSquareProject',_0x4c634e);logger['debug'](_0x475b('0x1c'),_0x4c634e,JSON[_0x475b('0x26')](_0x168c4a));_0x340ec1(_0x168c4a);})['catch'](function(_0x5b20ca){logger['error'](_0x475b('0x1c'),_0x5b20ca[_0x475b('0x19')],_0x4c634e);_0x21a7ff(_0xf09942[_0x475b('0x16')](0x1f4,_0x5b20ca['message']));});});};
\ No newline at end of file
index cc3dfe0..5d0b0dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb3d4=['remove','update','register','squareProject:','save'];(function(_0x224095,_0x5ec204){var _0x239e48=function(_0x4f0a4a){while(--_0x4f0a4a){_0x224095['push'](_0x224095['shift']());}};_0x239e48(++_0x5ec204);}(_0xb3d4,0xfe));var _0x4b3d=function(_0x599806,_0x5f3282){_0x599806=_0x599806-0x0;var _0x4e87fd=_0xb3d4[_0x599806];return _0x4e87fd;};'use strict';var SquareProjectEvents=require('./squareProject.events');var events=[_0x4b3d('0x0'),_0x4b3d('0x1'),_0x4b3d('0x2')];function createListener(_0x21b729,_0x1d4cb6){return function(_0x470918){_0x1d4cb6['emit'](_0x21b729,_0x470918);};}function removeListener(_0x313331,_0x464a4f){return function(){SquareProjectEvents['removeListener'](_0x313331,_0x464a4f);};}exports[_0x4b3d('0x3')]=function(_0x51bf23){for(var _0x37d6a2=0x0,_0x2aae10=events['length'];_0x37d6a2<_0x2aae10;_0x37d6a2++){var _0x30c7f8=events[_0x37d6a2];var _0x46dd8a=createListener(_0x4b3d('0x4')+_0x30c7f8,_0x51bf23);SquareProjectEvents['on'](_0x30c7f8,_0x46dd8a);}};
\ No newline at end of file
+var _0xea5b=['removeListener','register','length','squareProject:','./squareProject.events','remove','update','emit'];(function(_0x8c88a8,_0x1bcb7a){var _0xcb2860=function(_0x725513){while(--_0x725513){_0x8c88a8['push'](_0x8c88a8['shift']());}};_0xcb2860(++_0x1bcb7a);}(_0xea5b,0x10c));var _0xbea5=function(_0x5f309e,_0x66e31){_0x5f309e=_0x5f309e-0x0;var _0x487b5e=_0xea5b[_0x5f309e];return _0x487b5e;};'use strict';var SquareProjectEvents=require(_0xbea5('0x0'));var events=['save',_0xbea5('0x1'),_0xbea5('0x2')];function createListener(_0x2a9a5f,_0x168e2c){return function(_0x221927){_0x168e2c[_0xbea5('0x3')](_0x2a9a5f,_0x221927);};}function removeListener(_0x1973a0,_0x561231){return function(){SquareProjectEvents[_0xbea5('0x4')](_0x1973a0,_0x561231);};}exports[_0xbea5('0x5')]=function(_0x57d03d){for(var _0x44a8ae=0x0,_0x5c5564=events[_0xbea5('0x6')];_0x44a8ae<_0x5c5564;_0x44a8ae++){var _0x2c959d=events[_0x44a8ae];var _0x4b69d7=createListener(_0xbea5('0x7')+_0x2c959d,_0x57d03d);SquareProjectEvents['on'](_0x2c959d,_0x4b69d7);}};
\ No newline at end of file
index 85ab8dd..ee3a512 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe14b=['Router','../../components/auth/service','./squareRecording.controller','get','isAuthenticated','index','/:id','download','post','delete','destroy','exports','multer','util','express'];(function(_0x3f8d4b,_0x189fa5){var _0x4110a9=function(_0x10bf4a){while(--_0x10bf4a){_0x3f8d4b['push'](_0x3f8d4b['shift']());}};_0x4110a9(++_0x189fa5);}(_0xe14b,0x93));var _0xbe14=function(_0x2640bd,_0x25fbb7){_0x2640bd=_0x2640bd-0x0;var _0x1ceece=_0xe14b[_0x2640bd];return _0x1ceece;};'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
+var _0x1cb9=['update','delete','destroy','exports','multer','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./squareRecording.controller','get','isAuthenticated','index','/:id','show','/:id/download','download','post','create','put'];(function(_0x3afc39,_0x2855ea){var _0x1fed7c=function(_0x14a012){while(--_0x14a012){_0x3afc39['push'](_0x3afc39['shift']());}};_0x1fed7c(++_0x2855ea);}(_0x1cb9,0x14e));var _0x91cb=function(_0x3677be,_0x92b7d1){_0x3677be=_0x3677be-0x0;var _0x3d2a8d=_0x1cb9[_0x3677be];return _0x3d2a8d;};'use strict';var multer=require(_0x91cb('0x0'));var util=require('util');var path=require(_0x91cb('0x1'));var timeout=require(_0x91cb('0x2'));var express=require(_0x91cb('0x3'));var router=express[_0x91cb('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x91cb('0x5'));var interaction=require(_0x91cb('0x6'));var config=require('../../config/environment');var controller=require(_0x91cb('0x7'));router[_0x91cb('0x8')]('/',auth[_0x91cb('0x9')](),controller[_0x91cb('0xa')]);router[_0x91cb('0x8')](_0x91cb('0xb'),auth['isAuthenticated'](),controller[_0x91cb('0xc')]);router['get'](_0x91cb('0xd'),auth['isAuthenticated'](),controller[_0x91cb('0xe')]);router[_0x91cb('0xf')]('/',auth[_0x91cb('0x9')](),controller[_0x91cb('0x10')]);router[_0x91cb('0x11')](_0x91cb('0xb'),auth[_0x91cb('0x9')](),controller[_0x91cb('0x12')]);router[_0x91cb('0x13')](_0x91cb('0xb'),auth['isAuthenticated'](),controller[_0x91cb('0x14')]);module[_0x91cb('0x15')]=router;
\ No newline at end of file
index 1c5b6cd..f75d230 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x038b=['lastIndexOf','exports','STRING','VIRTUAL','substring'];(function(_0x102ad1,_0x53c404){var _0x25c010=function(_0x2f061d){while(--_0x2f061d){_0x102ad1['push'](_0x102ad1['shift']());}};_0x25c010(++_0x53c404);}(_0x038b,0x114));var _0xb038=function(_0x190584,_0x453d4e){_0x190584=_0x190584-0x0;var _0x278330=_0x038b[_0x190584];return _0x278330;};'use strict';var Sequelize=require('sequelize');module[_0xb038('0x0')]={'uniqueid':{'type':Sequelize[_0xb038('0x1')]},'callerid':{'type':Sequelize[_0xb038('0x1')]},'calleridname':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0xb038('0x1')]},'extension':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0xb038('0x1')]},'accountcode':{'type':Sequelize[_0xb038('0x1')]},'dnid':{'type':Sequelize['STRING']},'projectName':{'type':Sequelize[_0xb038('0x1')]},'saveName':{'type':Sequelize[_0xb038('0x1')]},'filename':{'type':Sequelize['STRING']},'savePath':{'type':Sequelize['STRING']},'format':{'type':Sequelize[_0xb038('0x2')],'get':function(){var _0x1b077a='';var _0x1534a9=this['getDataValue']('savePath');if(_0x1534a9){_0x1b077a=_0x1534a9[_0xb038('0x3')](_0x1534a9[_0xb038('0x4')]('.'));}return _0x1b077a;}}};
\ No newline at end of file
+var _0x31f0=['getDataValue','savePath','substring','sequelize','STRING','VIRTUAL'];(function(_0x200369,_0x4b015e){var _0x28debb=function(_0x21c48b){while(--_0x21c48b){_0x200369['push'](_0x200369['shift']());}};_0x28debb(++_0x4b015e);}(_0x31f0,0xb7));var _0x031f=function(_0x3a7b15,_0x4851fb){_0x3a7b15=_0x3a7b15-0x0;var _0x10014a=_0x31f0[_0x3a7b15];return _0x10014a;};'use strict';var Sequelize=require(_0x031f('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0x031f('0x1')]},'callerid':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0x031f('0x1')]},'context':{'type':Sequelize[_0x031f('0x1')]},'extension':{'type':Sequelize[_0x031f('0x1')]},'priority':{'type':Sequelize[_0x031f('0x1')]},'accountcode':{'type':Sequelize['STRING']},'dnid':{'type':Sequelize[_0x031f('0x1')]},'projectName':{'type':Sequelize[_0x031f('0x1')]},'saveName':{'type':Sequelize['STRING']},'filename':{'type':Sequelize['STRING']},'savePath':{'type':Sequelize['STRING']},'format':{'type':Sequelize[_0x031f('0x2')],'get':function(){var _0x487e65='';var _0x365f59=this[_0x031f('0x3')](_0x031f('0x4'));if(_0x365f59){_0x487e65=_0x365f59[_0x031f('0x5')](_0x365f59['lastIndexOf']('.'));}return _0x487e65;}}};
\ No newline at end of file
index 10e3f72..d1b1bb4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7524=['params','rawAttributes','fields','body','find','download','../../components/encryptor','type','uniqueid','savePath','filename','format','%s.cypher','existsSync','decryptFile','recording','Sequelize','ValidationError','SquareRecording\x20not\x20found','extname','unlink','Not\x20found','isNil','Entity\x20not\x20found','info','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','rimraf','fast-json-patch','request-promise','moment','bluebird','path','sox','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','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','reject','save','update','then','destroy','error','send','SquareRecording','fieldName','key','model','map','name','query','keys','filters','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch'];(function(_0x47bcee,_0x5c0311){var _0x4b88a8=function(_0x170762){while(--_0x170762){_0x47bcee['push'](_0x47bcee['shift']());}};_0x4b88a8(++_0x5c0311);}(_0x7524,0xdc));var _0x4752=function(_0x57e597,_0x5dada8){_0x57e597=_0x57e597-0x0;var _0x4050c8=_0x7524[_0x57e597];return _0x4050c8;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x4752('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x4752('0x1'));var rp=require(_0x4752('0x2'));var moment=require(_0x4752('0x3'));var BPromise=require(_0x4752('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x4752('0x5'));var sox=require(_0x4752('0x6'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4752('0x7'));var _=require(_0x4752('0x8'));var squel=require(_0x4752('0x9'));var crypto=require(_0x4752('0xa'));var jsforce=require(_0x4752('0xb'));var deskjs=require(_0x4752('0xc'));var toCsv=require(_0x4752('0xd'));var querystring=require('querystring');var Papa=require(_0x4752('0xe'));var Redis=require(_0x4752('0xf'));var authService=require(_0x4752('0x10'));var qs=require(_0x4752('0x11'));var as=require(_0x4752('0x12'));var hardwareService=require(_0x4752('0x13'));var logger=require(_0x4752('0x14'))(_0x4752('0x15'));var utils=require('../../config/utils');var config=require(_0x4752('0x16'));var licenseUtil=require(_0x4752('0x17'));var db=require(_0x4752('0x18'))['db'];function respondWithStatusCode(_0x26039c,_0x53dc25){_0x53dc25=_0x53dc25||0xcc;return function(_0x4c194d){if(_0x4c194d){return _0x26039c[_0x4752('0x19')](_0x53dc25);}return _0x26039c[_0x4752('0x1a')](_0x53dc25)[_0x4752('0x1b')]();};}function respondWithResult(_0x50c39c,_0x328e05){_0x328e05=_0x328e05||0xc8;return function(_0x3d8982){if(_0x3d8982){return _0x50c39c[_0x4752('0x1a')](_0x328e05)[_0x4752('0x1c')](_0x3d8982);}};}function respondWithFilteredResult(_0x262ad1,_0x2cf32d){return function(_0x46b205){if(_0x46b205){var _0x363b80=typeof _0x2cf32d[_0x4752('0x1d')]===_0x4752('0x1e')&&typeof _0x2cf32d[_0x4752('0x1f')]==='undefined';var _0x4bf08b=_0x46b205[_0x4752('0x20')];var _0x58757a=_0x363b80?0x0:_0x2cf32d[_0x4752('0x1d')];var _0x5e591d=_0x363b80?_0x46b205[_0x4752('0x20')]:_0x2cf32d['offset']+_0x2cf32d[_0x4752('0x1f')];var _0x5d20fa;if(_0x5e591d>=_0x4bf08b){_0x5e591d=_0x4bf08b;_0x5d20fa=0xc8;}else{_0x5d20fa=0xce;}_0x262ad1[_0x4752('0x1a')](_0x5d20fa);return _0x262ad1[_0x4752('0x21')]('Content-Range',_0x58757a+'-'+_0x5e591d+'/'+_0x4bf08b)[_0x4752('0x1c')](_0x46b205);}return null;};}function patchUpdates(_0x1d5e71){return function(_0x3cc165){try{jsonpatch['apply'](_0x3cc165,_0x1d5e71,!![]);}catch(_0x86ea40){return BPromise[_0x4752('0x22')](_0x86ea40);}return _0x3cc165[_0x4752('0x23')]();};}function saveUpdates(_0x31aa23,_0x153116){return function(_0x52ea6b){if(_0x52ea6b){return _0x52ea6b[_0x4752('0x24')](_0x31aa23)[_0x4752('0x25')](function(_0x15e15b){return _0x15e15b;});}return null;};}function removeEntity(_0x8e8b4e,_0x380de3){return function(_0x55e9b4){if(_0x55e9b4){return _0x55e9b4[_0x4752('0x26')]()[_0x4752('0x25')](function(){_0x8e8b4e[_0x4752('0x1a')](0xcc)[_0x4752('0x1b')]();});}};}function handleEntityNotFound(_0x3f9354,_0x5a1a04){return function(_0x27f334){if(!_0x27f334){_0x3f9354[_0x4752('0x19')](0x194);}return _0x27f334;};}function handleError(_0x253b2,_0x5dfe96){_0x5dfe96=_0x5dfe96||0x1f4;return function(_0x4f7b02){logger[_0x4752('0x27')](_0x4f7b02['stack']);if(_0x4f7b02['name']){delete _0x4f7b02['name'];}_0x253b2[_0x4752('0x1a')](_0x5dfe96)[_0x4752('0x28')](_0x4f7b02);};}exports['index']=function(_0x143132,_0x3f331f){var _0x117e60={},_0x4d9b92={},_0x3baba0={'count':0x0,'rows':[]};var _0x1706bf=_['map'](db[_0x4752('0x29')]['rawAttributes'],function(_0x1a752b){return{'name':_0x1a752b[_0x4752('0x2a')],'type':_0x1a752b['type'][_0x4752('0x2b')]};});_0x4d9b92[_0x4752('0x2c')]=_[_0x4752('0x2d')](_0x1706bf,_0x4752('0x2e'));_0x4d9b92[_0x4752('0x2f')]=_[_0x4752('0x30')](_0x143132[_0x4752('0x2f')]);_0x4d9b92[_0x4752('0x31')]=_[_0x4752('0x32')](_0x4d9b92[_0x4752('0x2c')],_0x4d9b92[_0x4752('0x2f')]);_0x117e60[_0x4752('0x33')]=_[_0x4752('0x32')](_0x4d9b92['model'],qs['fields'](_0x143132['query']['fields']));_0x117e60[_0x4752('0x33')]=_0x117e60[_0x4752('0x33')][_0x4752('0x34')]?_0x117e60[_0x4752('0x33')]:_0x4d9b92[_0x4752('0x2c')];if(!_0x143132[_0x4752('0x2f')][_0x4752('0x35')](_0x4752('0x36'))){_0x117e60[_0x4752('0x1f')]=qs[_0x4752('0x1f')](_0x143132[_0x4752('0x2f')][_0x4752('0x1f')]);_0x117e60[_0x4752('0x1d')]=qs[_0x4752('0x1d')](_0x143132[_0x4752('0x2f')][_0x4752('0x1d')]);}_0x117e60[_0x4752('0x37')]=qs[_0x4752('0x38')](_0x143132['query'][_0x4752('0x38')]);_0x117e60[_0x4752('0x39')]=qs['filters'](_[_0x4752('0x3a')](_0x143132[_0x4752('0x2f')],_0x4d9b92[_0x4752('0x31')]),_0x1706bf);if(_0x143132[_0x4752('0x2f')][_0x4752('0x3b')]){_0x117e60[_0x4752('0x39')]=_[_0x4752('0x3c')](_0x117e60['where'],{'$or':_['map'](_0x1706bf,function(_0x147f7){if(_0x147f7['type']!==_0x4752('0x3d')){var _0x22a36b={};_0x22a36b[_0x147f7[_0x4752('0x2e')]]={'$like':'%'+_0x143132[_0x4752('0x2f')][_0x4752('0x3b')]+'%'};return _0x22a36b;}})});}_0x117e60=_[_0x4752('0x3c')]({},_0x117e60,_0x143132[_0x4752('0x3e')]);var _0x4ef8ae={'where':_0x117e60['where']};return db['SquareRecording']['count'](_0x4ef8ae)[_0x4752('0x25')](function(_0x3ffedc){_0x3baba0[_0x4752('0x20')]=_0x3ffedc;if(_0x143132['query'][_0x4752('0x3f')]){_0x117e60[_0x4752('0x40')]=[{'all':!![]}];}return db[_0x4752('0x29')][_0x4752('0x41')](_0x117e60);})[_0x4752('0x25')](function(_0x155fd7){_0x3baba0[_0x4752('0x42')]=_0x155fd7;return _0x3baba0;})[_0x4752('0x25')](respondWithFilteredResult(_0x3f331f,_0x117e60))[_0x4752('0x43')](handleError(_0x3f331f,null));};exports['show']=function(_0x548365,_0x1d1250){var _0x53fbcc={'raw':!![],'where':{'id':_0x548365[_0x4752('0x44')]['id']}},_0x5d0330={};_0x5d0330[_0x4752('0x2c')]=_['keys'](db[_0x4752('0x29')][_0x4752('0x45')]);_0x5d0330['query']=_[_0x4752('0x30')](_0x548365['query']);_0x5d0330['filters']=_['intersection'](_0x5d0330[_0x4752('0x2c')],_0x5d0330[_0x4752('0x2f')]);_0x53fbcc[_0x4752('0x33')]=_[_0x4752('0x32')](_0x5d0330[_0x4752('0x2c')],qs[_0x4752('0x46')](_0x548365['query'][_0x4752('0x46')]));_0x53fbcc[_0x4752('0x33')]=_0x53fbcc['attributes'][_0x4752('0x34')]?_0x53fbcc[_0x4752('0x33')]:_0x5d0330[_0x4752('0x2c')];if(_0x548365[_0x4752('0x2f')][_0x4752('0x3f')]){_0x53fbcc['include']=[{'all':!![]}];}_0x53fbcc=_[_0x4752('0x3c')]({},_0x53fbcc,_0x548365[_0x4752('0x3e')]);return db[_0x4752('0x29')]['find'](_0x53fbcc)['then'](handleEntityNotFound(_0x1d1250,null))[_0x4752('0x25')](respondWithResult(_0x1d1250,null))[_0x4752('0x43')](handleError(_0x1d1250,null));};exports['create']=function(_0x416800,_0x3663f6){return db[_0x4752('0x29')]['create'](_0x416800[_0x4752('0x47')],{})[_0x4752('0x25')](respondWithResult(_0x3663f6,0xc9))[_0x4752('0x43')](handleError(_0x3663f6,null));};exports['update']=function(_0x38ac0a,_0x4bc3ed){if(_0x38ac0a[_0x4752('0x47')]['id']){delete _0x38ac0a['body']['id'];}return db[_0x4752('0x29')][_0x4752('0x48')]({'where':{'id':_0x38ac0a['params']['id']}})[_0x4752('0x25')](handleEntityNotFound(_0x4bc3ed,null))[_0x4752('0x25')](saveUpdates(_0x38ac0a[_0x4752('0x47')],null))[_0x4752('0x25')](respondWithResult(_0x4bc3ed,null))[_0x4752('0x43')](handleError(_0x4bc3ed,null));};exports[_0x4752('0x49')]=function(_0xcd416c,_0x31094b,_0x2098c7){var _0x4e0a85=require(_0x4752('0x4a'));var _0x31c248=![];var _0x4bc1ea={};if(_0xcd416c[_0x4752('0x2f')]['type']&&_0xcd416c[_0x4752('0x2f')][_0x4752('0x4b')]===_0x4752('0x4c')){_0x4bc1ea['uniqueid']=_0xcd416c[_0x4752('0x44')]['id'];}else{_0x4bc1ea['id']=_0xcd416c['params']['id'];}return db[_0x4752('0x29')]['find']({'where':_0x4bc1ea,'attributes':['id',_0x4752('0x4d'),_0x4752('0x4e')],'raw':!![]})[_0x4752('0x25')](handleEntityNotFound(_0x31094b,null))[_0x4752('0x25')](function(_0x52af24){if(_0x52af24){var _0x23713a=_0x52af24[_0x4752('0x4d')];var _0x39eeba=util[_0x4752('0x4f')](_0x4752('0x50'),_0x23713a);if(fs[_0x4752('0x51')](_0x39eeba)){_0x31c248=!![];return _0x4e0a85[_0x4752('0x52')](_0x39eeba,_0x23713a,config['secrets'][_0x4752('0x53')])[_0x4752('0x25')](function(){return _0x52af24;});}return _0x52af24;}})[_0x4752('0x25')](function(_0x28554d){if(_0x28554d){var _0x32738a=_0x28554d['savePath'];if(!fs[_0x4752('0x51')](_0x32738a)){throw new db[(_0x4752('0x54'))][(_0x4752('0x55'))](_0x4752('0x56'));}if(_0x28554d[_0x4752('0x4e')]){return _0x31094b['download'](_0x32738a,_0x28554d['filename']+path[_0x4752('0x57')](_0x32738a),function(){if(_0x31c248){fs[_0x4752('0x58')](_0x32738a);}});}else{return _0x31094b['download'](_0x32738a,function(_0x5bee34){if(_0x31c248){fs[_0x4752('0x58')](_0x32738a);}});}}})['catch'](function(_0x4b0147){if(_0x4b0147['message']===_0x4752('0x56')){_0x31094b[_0x4752('0x1a')](0x194)['send'](_0x4752('0x59'));}else{return handleError(_0x31094b,null);}});};exports[_0x4752('0x26')]=function(_0x329f64,_0x3f8016){return db[_0x4752('0x29')]['find']({'where':{'id':_0x329f64[_0x4752('0x44')]['id']}})[_0x4752('0x25')](function(_0x259b15){if(_[_0x4752('0x5a')](_0x259b15)){throw new ReferenceError(_0x4752('0x5b'));}return _0x259b15;})[_0x4752('0x25')](function(_0x2dc118){var _0x32c4b3=_0x2dc118['savePath'];logger[_0x4752('0x5c')]('cancellazione\x20fisica\x20documento\x20%s',_0x32c4b3);if(!_[_0x4752('0x5a')](_0x2dc118[_0x4752('0x4d')])&&fs['existsSync'](_0x32c4b3)){logger['info'](_0x4752('0x5d')+_0x32c4b3+_0x4752('0x5e'));fs[_0x4752('0x5f')](_0x32c4b3);}_0x32c4b3=_0x32c4b3+'.cypher';if(!_[_0x4752('0x5a')](_0x2dc118['savePath'])&&fs[_0x4752('0x51')](_0x32c4b3)){logger[_0x4752('0x5c')](_0x4752('0x5d')+_0x32c4b3+_0x4752('0x5e'));fs['unlinkSync'](_0x32c4b3);}return _0x2dc118;})[_0x4752('0x25')](function(_0x151a7d){if(!_0x151a7d)throw new InternalError();return _0x151a7d[_0x4752('0x26')]();})[_0x4752('0x25')](function(){_0x3f8016[_0x4752('0x1a')](0xcc)[_0x4752('0x1b')]();})[_0x4752('0x43')](handleError(_0x3f8016,null));};
\ No newline at end of file
+var _0x474f=['Not\x20found','isNil','info','cancellazione\x20fisica\x20documento\x20%s','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','offset','undefined','count','set','Content-Range','json','apply','reject','update','destroy','then','error','stack','name','send','index','map','SquareRecording','fieldName','type','model','keys','intersection','query','attributes','fields','length','nolimit','limit','sort','where','filters','filter','merge','VIRTUAL','includeAll','findAll','catch','show','params','include','options','find','create','body','../../components/encryptor','uniqueid','filename','format','existsSync','decryptFile','secrets','recording','savePath','Sequelize','ValidationError','SquareRecording\x20not\x20found','download','unlink','message'];(function(_0x433cbe,_0x1e2ce5){var _0x110b24=function(_0x59444d){while(--_0x59444d){_0x433cbe['push'](_0x433cbe['shift']());}};_0x110b24(++_0x1e2ce5);}(_0x474f,0x184));var _0xf474=function(_0x8fa9b1,_0x303d67){_0x8fa9b1=_0x8fa9b1-0x0;var _0x2c7e97=_0x474f[_0x8fa9b1];return _0x2c7e97;};'use strict';var emlformat=require(_0xf474('0x0'));var rimraf=require(_0xf474('0x1'));var zipdir=require(_0xf474('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xf474('0x3'));var moment=require('moment');var BPromise=require(_0xf474('0x4'));var Mustache=require(_0xf474('0x5'));var util=require(_0xf474('0x6'));var path=require(_0xf474('0x7'));var sox=require(_0xf474('0x8'));var csv=require(_0xf474('0x9'));var ejs=require(_0xf474('0xa'));var fs=require('fs');var fs_extra=require(_0xf474('0xb'));var _=require(_0xf474('0xc'));var squel=require(_0xf474('0xd'));var crypto=require('crypto');var jsforce=require(_0xf474('0xe'));var deskjs=require(_0xf474('0xf'));var toCsv=require('to-csv');var querystring=require(_0xf474('0x10'));var Papa=require('papaparse');var Redis=require(_0xf474('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xf474('0x12'));var hardwareService=require(_0xf474('0x13'));var logger=require(_0xf474('0x14'))(_0xf474('0x15'));var utils=require(_0xf474('0x16'));var config=require(_0xf474('0x17'));var licenseUtil=require(_0xf474('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x177f36,_0x22ed5e){_0x22ed5e=_0x22ed5e||0xcc;return function(_0x24d760){if(_0x24d760){return _0x177f36[_0xf474('0x19')](_0x22ed5e);}return _0x177f36[_0xf474('0x1a')](_0x22ed5e)['end']();};}function respondWithResult(_0x55732d,_0x50d17d){_0x50d17d=_0x50d17d||0xc8;return function(_0x347c8e){if(_0x347c8e){return _0x55732d[_0xf474('0x1a')](_0x50d17d)['json'](_0x347c8e);}};}function respondWithFilteredResult(_0x18d96e,_0x2c5487){return function(_0x184c46){if(_0x184c46){var _0x9121cc=typeof _0x2c5487[_0xf474('0x1b')]==='undefined'&&typeof _0x2c5487['limit']===_0xf474('0x1c');var _0x2e7a89=_0x184c46[_0xf474('0x1d')];var _0x29f5d8=_0x9121cc?0x0:_0x2c5487[_0xf474('0x1b')];var _0x55c8e4=_0x9121cc?_0x184c46[_0xf474('0x1d')]:_0x2c5487['offset']+_0x2c5487['limit'];var _0x516a57;if(_0x55c8e4>=_0x2e7a89){_0x55c8e4=_0x2e7a89;_0x516a57=0xc8;}else{_0x516a57=0xce;}_0x18d96e[_0xf474('0x1a')](_0x516a57);return _0x18d96e[_0xf474('0x1e')](_0xf474('0x1f'),_0x29f5d8+'-'+_0x55c8e4+'/'+_0x2e7a89)[_0xf474('0x20')](_0x184c46);}return null;};}function patchUpdates(_0xec2a35){return function(_0x5acbba){try{jsonpatch[_0xf474('0x21')](_0x5acbba,_0xec2a35,!![]);}catch(_0x4be9dc){return BPromise[_0xf474('0x22')](_0x4be9dc);}return _0x5acbba['save']();};}function saveUpdates(_0x4fefa3,_0x5586cc){return function(_0x4bb5ca){if(_0x4bb5ca){return _0x4bb5ca[_0xf474('0x23')](_0x4fefa3)['then'](function(_0x185824){return _0x185824;});}return null;};}function removeEntity(_0x2dcdec,_0x589069){return function(_0x2e3386){if(_0x2e3386){return _0x2e3386[_0xf474('0x24')]()[_0xf474('0x25')](function(){_0x2dcdec[_0xf474('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x137d46,_0x3f4b6e){return function(_0x1771ae){if(!_0x1771ae){_0x137d46[_0xf474('0x19')](0x194);}return _0x1771ae;};}function handleError(_0x3c547f,_0x5db5a3){_0x5db5a3=_0x5db5a3||0x1f4;return function(_0x4bdb46){logger[_0xf474('0x26')](_0x4bdb46[_0xf474('0x27')]);if(_0x4bdb46['name']){delete _0x4bdb46[_0xf474('0x28')];}_0x3c547f[_0xf474('0x1a')](_0x5db5a3)[_0xf474('0x29')](_0x4bdb46);};}exports[_0xf474('0x2a')]=function(_0x5913f5,_0xf0646b){var _0x503ab2={},_0x932c26={},_0x1b449a={'count':0x0,'rows':[]};var _0x5ceb67=_[_0xf474('0x2b')](db[_0xf474('0x2c')]['rawAttributes'],function(_0x106458){return{'name':_0x106458[_0xf474('0x2d')],'type':_0x106458[_0xf474('0x2e')]['key']};});_0x932c26[_0xf474('0x2f')]=_[_0xf474('0x2b')](_0x5ceb67,_0xf474('0x28'));_0x932c26['query']=_[_0xf474('0x30')](_0x5913f5['query']);_0x932c26['filters']=_[_0xf474('0x31')](_0x932c26['model'],_0x932c26[_0xf474('0x32')]);_0x503ab2[_0xf474('0x33')]=_[_0xf474('0x31')](_0x932c26[_0xf474('0x2f')],qs['fields'](_0x5913f5['query'][_0xf474('0x34')]));_0x503ab2[_0xf474('0x33')]=_0x503ab2[_0xf474('0x33')][_0xf474('0x35')]?_0x503ab2[_0xf474('0x33')]:_0x932c26[_0xf474('0x2f')];if(!_0x5913f5['query']['hasOwnProperty'](_0xf474('0x36'))){_0x503ab2[_0xf474('0x37')]=qs['limit'](_0x5913f5['query'][_0xf474('0x37')]);_0x503ab2['offset']=qs[_0xf474('0x1b')](_0x5913f5[_0xf474('0x32')][_0xf474('0x1b')]);}_0x503ab2['order']=qs[_0xf474('0x38')](_0x5913f5['query'][_0xf474('0x38')]);_0x503ab2[_0xf474('0x39')]=qs[_0xf474('0x3a')](_['pick'](_0x5913f5[_0xf474('0x32')],_0x932c26['filters']),_0x5ceb67);if(_0x5913f5[_0xf474('0x32')][_0xf474('0x3b')]){_0x503ab2[_0xf474('0x39')]=_[_0xf474('0x3c')](_0x503ab2[_0xf474('0x39')],{'$or':_[_0xf474('0x2b')](_0x5ceb67,function(_0x4f25a6){if(_0x4f25a6[_0xf474('0x2e')]!==_0xf474('0x3d')){var _0x46f56f={};_0x46f56f[_0x4f25a6[_0xf474('0x28')]]={'$like':'%'+_0x5913f5[_0xf474('0x32')]['filter']+'%'};return _0x46f56f;}})});}_0x503ab2=_[_0xf474('0x3c')]({},_0x503ab2,_0x5913f5['options']);var _0x2718b6={'where':_0x503ab2[_0xf474('0x39')]};return db[_0xf474('0x2c')][_0xf474('0x1d')](_0x2718b6)[_0xf474('0x25')](function(_0x523a30){_0x1b449a[_0xf474('0x1d')]=_0x523a30;if(_0x5913f5[_0xf474('0x32')][_0xf474('0x3e')]){_0x503ab2['include']=[{'all':!![]}];}return db[_0xf474('0x2c')][_0xf474('0x3f')](_0x503ab2);})[_0xf474('0x25')](function(_0x34957c){_0x1b449a['rows']=_0x34957c;return _0x1b449a;})[_0xf474('0x25')](respondWithFilteredResult(_0xf0646b,_0x503ab2))[_0xf474('0x40')](handleError(_0xf0646b,null));};exports[_0xf474('0x41')]=function(_0x3b4ca5,_0x4b0873){var _0x38d791={'raw':!![],'where':{'id':_0x3b4ca5[_0xf474('0x42')]['id']}},_0x19175e={};_0x19175e['model']=_['keys'](db[_0xf474('0x2c')]['rawAttributes']);_0x19175e['query']=_['keys'](_0x3b4ca5[_0xf474('0x32')]);_0x19175e[_0xf474('0x3a')]=_[_0xf474('0x31')](_0x19175e['model'],_0x19175e[_0xf474('0x32')]);_0x38d791[_0xf474('0x33')]=_[_0xf474('0x31')](_0x19175e[_0xf474('0x2f')],qs[_0xf474('0x34')](_0x3b4ca5['query'][_0xf474('0x34')]));_0x38d791[_0xf474('0x33')]=_0x38d791[_0xf474('0x33')][_0xf474('0x35')]?_0x38d791[_0xf474('0x33')]:_0x19175e[_0xf474('0x2f')];if(_0x3b4ca5[_0xf474('0x32')][_0xf474('0x3e')]){_0x38d791[_0xf474('0x43')]=[{'all':!![]}];}_0x38d791=_[_0xf474('0x3c')]({},_0x38d791,_0x3b4ca5[_0xf474('0x44')]);return db['SquareRecording'][_0xf474('0x45')](_0x38d791)[_0xf474('0x25')](handleEntityNotFound(_0x4b0873,null))['then'](respondWithResult(_0x4b0873,null))[_0xf474('0x40')](handleError(_0x4b0873,null));};exports[_0xf474('0x46')]=function(_0x31857b,_0x374053){return db[_0xf474('0x2c')][_0xf474('0x46')](_0x31857b['body'],{})[_0xf474('0x25')](respondWithResult(_0x374053,0xc9))[_0xf474('0x40')](handleError(_0x374053,null));};exports[_0xf474('0x23')]=function(_0x30c5e1,_0x10593a){if(_0x30c5e1[_0xf474('0x47')]['id']){delete _0x30c5e1['body']['id'];}return db[_0xf474('0x2c')][_0xf474('0x45')]({'where':{'id':_0x30c5e1[_0xf474('0x42')]['id']}})[_0xf474('0x25')](handleEntityNotFound(_0x10593a,null))['then'](saveUpdates(_0x30c5e1[_0xf474('0x47')],null))[_0xf474('0x25')](respondWithResult(_0x10593a,null))['catch'](handleError(_0x10593a,null));};exports['download']=function(_0x5a88b7,_0x5534b8,_0x5951fc){var _0x59ec13=require(_0xf474('0x48'));var _0x3b78a4=![];var _0x1f3500={};if(_0x5a88b7[_0xf474('0x32')][_0xf474('0x2e')]&&_0x5a88b7[_0xf474('0x32')][_0xf474('0x2e')]==='uniqueid'){_0x1f3500[_0xf474('0x49')]=_0x5a88b7[_0xf474('0x42')]['id'];}else{_0x1f3500['id']=_0x5a88b7[_0xf474('0x42')]['id'];}return db[_0xf474('0x2c')]['find']({'where':_0x1f3500,'attributes':['id','savePath',_0xf474('0x4a')],'raw':!![]})['then'](handleEntityNotFound(_0x5534b8,null))['then'](function(_0x1ca97e){if(_0x1ca97e){var _0xf2cd30=_0x1ca97e['savePath'];var _0x436ae4=util[_0xf474('0x4b')]('%s.cypher',_0xf2cd30);if(fs[_0xf474('0x4c')](_0x436ae4)){_0x3b78a4=!![];return _0x59ec13[_0xf474('0x4d')](_0x436ae4,_0xf2cd30,config[_0xf474('0x4e')][_0xf474('0x4f')])['then'](function(){return _0x1ca97e;});}return _0x1ca97e;}})[_0xf474('0x25')](function(_0x40580d){if(_0x40580d){var _0x56e340=_0x40580d[_0xf474('0x50')];if(!fs[_0xf474('0x4c')](_0x56e340)){throw new db[(_0xf474('0x51'))][(_0xf474('0x52'))](_0xf474('0x53'));}if(_0x40580d[_0xf474('0x4a')]){return _0x5534b8[_0xf474('0x54')](_0x56e340,_0x40580d['filename']+path['extname'](_0x56e340),function(){if(_0x3b78a4){fs['unlink'](_0x56e340);}});}else{return _0x5534b8['download'](_0x56e340,function(_0x400761){if(_0x3b78a4){fs[_0xf474('0x55')](_0x56e340);}});}}})['catch'](function(_0x147588){if(_0x147588[_0xf474('0x56')]===_0xf474('0x53')){_0x5534b8[_0xf474('0x1a')](0x194)[_0xf474('0x29')](_0xf474('0x57'));}else{return handleError(_0x5534b8,null);}});};exports[_0xf474('0x24')]=function(_0x29e603,_0x3c87ae){return db[_0xf474('0x2c')][_0xf474('0x45')]({'where':{'id':_0x29e603[_0xf474('0x42')]['id']}})[_0xf474('0x25')](function(_0x2532a6){if(_[_0xf474('0x58')](_0x2532a6)){throw new ReferenceError('Entity\x20not\x20found');}return _0x2532a6;})[_0xf474('0x25')](function(_0x4c5a56){var _0x1f8178=_0x4c5a56[_0xf474('0x50')];logger[_0xf474('0x59')](_0xf474('0x5a'),_0x1f8178);if(!_[_0xf474('0x58')](_0x4c5a56[_0xf474('0x50')])&&fs[_0xf474('0x4c')](_0x1f8178)){logger[_0xf474('0x59')](_0xf474('0x5b')+_0x1f8178+_0xf474('0x5c'));fs[_0xf474('0x5d')](_0x1f8178);}_0x1f8178=_0x1f8178+_0xf474('0x5e');if(!_['isNil'](_0x4c5a56['savePath'])&&fs[_0xf474('0x4c')](_0x1f8178)){logger['info'](_0xf474('0x5b')+_0x1f8178+_0xf474('0x5c'));fs[_0xf474('0x5d')](_0x1f8178);}return _0x4c5a56;})[_0xf474('0x25')](function(_0x80b86f){if(!_0x80b86f)throw new InternalError();return _0x80b86f[_0xf474('0x24')]();})[_0xf474('0x25')](function(){_0x3c87ae[_0xf474('0x1a')](0xcc)['end']();})[_0xf474('0x40')](handleError(_0x3c87ae,null));};
\ No newline at end of file
index e1aa7a8..4d72604 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x33af=['request-promise','path','rimraf','./squareRecording.attributes','exports','define','SquareRecording','square_recordings','util','api','moment','bluebird'];(function(_0x46b22a,_0x5bf83a){var _0x44c2e8=function(_0x21b6fc){while(--_0x21b6fc){_0x46b22a['push'](_0x46b22a['shift']());}};_0x44c2e8(++_0x5bf83a);}(_0x33af,0xec));var _0xf33a=function(_0x505f73,_0x1f95d8){_0x505f73=_0x505f73-0x0;var _0x227e7f=_0x33af[_0x505f73];return _0x227e7f;};'use strict';var _=require('lodash');var util=require(_0xf33a('0x0'));var logger=require('../../config/logger')(_0xf33a('0x1'));var moment=require(_0xf33a('0x2'));var BPromise=require(_0xf33a('0x3'));var rp=require(_0xf33a('0x4'));var fs=require('fs');var path=require(_0xf33a('0x5'));var rimraf=require(_0xf33a('0x6'));var config=require('../../config/environment');var attributes=require(_0xf33a('0x7'));module[_0xf33a('0x8')]=function(_0x583e54,_0xc0dd13){return _0x583e54[_0xf33a('0x9')](_0xf33a('0xa'),attributes,{'tableName':_0xf33a('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8f6b=['bluebird','path','rimraf','./squareRecording.attributes','define','square_recordings','lodash','util','../../config/logger','moment'];(function(_0x2906e6,_0x5ccd59){var _0x12517a=function(_0x36d576){while(--_0x36d576){_0x2906e6['push'](_0x2906e6['shift']());}};_0x12517a(++_0x5ccd59);}(_0x8f6b,0x146));var _0xb8f6=function(_0x2b5eae,_0x55010d){_0x2b5eae=_0x2b5eae-0x0;var _0x5f3ac9=_0x8f6b[_0x2b5eae];return _0x5f3ac9;};'use strict';var _=require(_0xb8f6('0x0'));var util=require(_0xb8f6('0x1'));var logger=require(_0xb8f6('0x2'))('api');var moment=require(_0xb8f6('0x3'));var BPromise=require(_0xb8f6('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xb8f6('0x5'));var rimraf=require(_0xb8f6('0x6'));var config=require('../../config/environment');var attributes=require(_0xb8f6('0x7'));module['exports']=function(_0x332ce0,_0x4c73ad){return _0x332ce0[_0xb8f6('0x8')]('SquareRecording',attributes,{'tableName':_0xb8f6('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9d0c278..b79e40e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb3b3=['catch','CreateSquareRecording','SquareRecording','options','then','debug','lodash','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','info','SquareRecording,\x20%s,\x20%s','request\x20sent','SquareRecording,\x20%s,\x20%s,\x20%s','stringify','error','message','result'];(function(_0x230951,_0x4dad52){var _0xeb26b1=function(_0x25776c){while(--_0x25776c){_0x230951['push'](_0x230951['shift']());}};_0xeb26b1(++_0x4dad52);}(_0xb3b3,0x17d));var _0x3b3b=function(_0x5c34a2,_0x138d25){_0x5c34a2=_0x5c34a2-0x0;var _0x3924a8=_0xb3b3[_0x5c34a2];return _0x3924a8;};'use strict';var _=require(_0x3b3b('0x0'));var util=require('util');var moment=require(_0x3b3b('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x3b3b('0x2'));var db=require(_0x3b3b('0x3'))['db'];var utils=require(_0x3b3b('0x4'));var logger=require(_0x3b3b('0x5'))(_0x3b3b('0x6'));var config=require(_0x3b3b('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x3b3b('0x8')][_0x3b3b('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5c2b1d,_0x55e3c9,_0x2a81e7){return new BPromise(function(_0xa22e6,_0x42ed83){return client[_0x3b3b('0xa')](_0x5c2b1d,_0x2a81e7)['then'](function(_0x35e83d){logger[_0x3b3b('0xb')](_0x3b3b('0xc'),_0x55e3c9,_0x3b3b('0xd'));logger['debug'](_0x3b3b('0xe'),_0x55e3c9,'request\x20sent',JSON[_0x3b3b('0xf')](_0x35e83d));if(_0x35e83d[_0x3b3b('0x10')]){if(_0x35e83d['error']['code']===0x1f4){logger[_0x3b3b('0x10')]('SquareRecording,\x20%s,\x20%s',_0x55e3c9,_0x35e83d[_0x3b3b('0x10')]['message']);return _0x42ed83(_0x35e83d[_0x3b3b('0x10')]['message']);}logger[_0x3b3b('0x10')](_0x3b3b('0xc'),_0x55e3c9,_0x35e83d['error'][_0x3b3b('0x11')]);return _0xa22e6(_0x35e83d[_0x3b3b('0x10')][_0x3b3b('0x11')]);}else{logger[_0x3b3b('0xb')](_0x3b3b('0xc'),_0x55e3c9,_0x3b3b('0xd'));_0xa22e6(_0x35e83d[_0x3b3b('0x12')][_0x3b3b('0x11')]);}})[_0x3b3b('0x13')](function(_0x5a86e6){logger[_0x3b3b('0x10')](_0x3b3b('0xc'),_0x55e3c9,_0x5a86e6);_0x42ed83(_0x5a86e6);});});}exports[_0x3b3b('0x14')]=function(_0x12cd00){var _0xf9903b=this;return new Promise(function(_0x11c402,_0x1e788f){return db[_0x3b3b('0x15')]['create'](_0x12cd00['body'],{'raw':_0x12cd00[_0x3b3b('0x16')]?_0x12cd00[_0x3b3b('0x16')]['raw']===undefined?!![]:![]:!![]})[_0x3b3b('0x17')](function(_0x3d0ef7){logger['info'](_0x3b3b('0x14'),_0x12cd00);logger[_0x3b3b('0x18')](_0x3b3b('0x14'),_0x12cd00,JSON[_0x3b3b('0xf')](_0x3d0ef7));_0x11c402(_0x3d0ef7);})[_0x3b3b('0x13')](function(_0x4bd8c2){logger[_0x3b3b('0x10')](_0x3b3b('0x14'),_0x4bd8c2[_0x3b3b('0x11')],_0x12cd00);_0x1e788f(_0xf9903b[_0x3b3b('0x10')](0x1f4,_0x4bd8c2[_0x3b3b('0x11')]));});});};
\ No newline at end of file
+var _0x8118=['../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','SquareRecording,\x20%s,\x20%s','SquareRecording,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','CreateSquareRecording','SquareRecording','create','options','raw','debug','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x387777,_0x356171){var _0x3f84c0=function(_0x4d4423){while(--_0x4d4423){_0x387777['push'](_0x387777['shift']());}};_0x3f84c0(++_0x356171);}(_0x8118,0x1ba));var _0x8811=function(_0xa990b7,_0x26c527){_0xa990b7=_0xa990b7-0x0;var _0x52c99c=_0x8118[_0xa990b7];return _0x52c99c;};'use strict';var _=require(_0x8811('0x0'));var util=require(_0x8811('0x1'));var moment=require(_0x8811('0x2'));var BPromise=require(_0x8811('0x3'));var rs=require(_0x8811('0x4'));var fs=require('fs');var Redis=require(_0x8811('0x5'));var db=require(_0x8811('0x6'))['db'];var utils=require(_0x8811('0x7'));var logger=require(_0x8811('0x8'))(_0x8811('0x9'));var config=require(_0x8811('0xa'));var jayson=require(_0x8811('0xb'));var client=jayson[_0x8811('0xc')]['http']({'port':0x232a});function respondWithRpcPromise(_0x159ff0,_0x49d7fd,_0x14a707){return new BPromise(function(_0x577510,_0x2a39a2){return client[_0x8811('0xd')](_0x159ff0,_0x14a707)[_0x8811('0xe')](function(_0x4c6482){logger['info'](_0x8811('0xf'),_0x49d7fd,'request\x20sent');logger['debug'](_0x8811('0x10'),_0x49d7fd,_0x8811('0x11'),JSON[_0x8811('0x12')](_0x4c6482));if(_0x4c6482[_0x8811('0x13')]){if(_0x4c6482[_0x8811('0x13')][_0x8811('0x14')]===0x1f4){logger['error']('SquareRecording,\x20%s,\x20%s',_0x49d7fd,_0x4c6482[_0x8811('0x13')][_0x8811('0x15')]);return _0x2a39a2(_0x4c6482['error'][_0x8811('0x15')]);}logger[_0x8811('0x13')](_0x8811('0xf'),_0x49d7fd,_0x4c6482['error'][_0x8811('0x15')]);return _0x577510(_0x4c6482[_0x8811('0x13')][_0x8811('0x15')]);}else{logger[_0x8811('0x16')](_0x8811('0xf'),_0x49d7fd,'request\x20sent');_0x577510(_0x4c6482['result']['message']);}})['catch'](function(_0x5637e8){logger[_0x8811('0x13')](_0x8811('0xf'),_0x49d7fd,_0x5637e8);_0x2a39a2(_0x5637e8);});});}exports[_0x8811('0x17')]=function(_0x8e30a4){var _0x89bc2e=this;return new Promise(function(_0x3046df,_0x29d38d){return db[_0x8811('0x18')][_0x8811('0x19')](_0x8e30a4['body'],{'raw':_0x8e30a4['options']?_0x8e30a4[_0x8811('0x1a')][_0x8811('0x1b')]===undefined?!![]:![]:!![]})[_0x8811('0xe')](function(_0x1a778f){logger[_0x8811('0x16')](_0x8811('0x17'),_0x8e30a4);logger[_0x8811('0x1c')](_0x8811('0x17'),_0x8e30a4,JSON[_0x8811('0x12')](_0x1a778f));_0x3046df(_0x1a778f);})[_0x8811('0x1d')](function(_0x2c2219){logger[_0x8811('0x13')](_0x8811('0x17'),_0x2c2219[_0x8811('0x15')],_0x8e30a4);_0x29d38d(_0x89bc2e[_0x8811('0x13')](0x1f4,_0x2c2219[_0x8811('0x15')]));});});};
\ No newline at end of file
index 8e0ec38..e11ae93 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaf0=['/:id','update','delete','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./squareReport.controller','get','isAuthenticated','index','/describe','show','post','create','put'];(function(_0x328bee,_0x12f30c){var _0x10d4b7=function(_0x302699){while(--_0x302699){_0x328bee['push'](_0x328bee['shift']());}};_0x10d4b7(++_0x12f30c);}(_0xbaf0,0x12a));var _0x0baf=function(_0x465028,_0x4570ac){_0x465028=_0x465028-0x0;var _0xb783d4=_0xbaf0[_0x465028];return _0xb783d4;};'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['describe']);router[_0x0baf('0x9')]('/:id',auth[_0x0baf('0xa')](),controller[_0x0baf('0xd')]);router[_0x0baf('0xe')]('/',auth[_0x0baf('0xa')](),controller[_0x0baf('0xf')]);router[_0x0baf('0x10')](_0x0baf('0x11'),auth[_0x0baf('0xa')](),controller[_0x0baf('0x12')]);router[_0x0baf('0x13')](_0x0baf('0x11'),auth['isAuthenticated'](),controller['destroy']);module[_0x0baf('0x14')]=router;
\ No newline at end of file
+var _0xe706=['/describe','describe','/:id','show','post','create','put','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareReport.controller','get','isAuthenticated','index'];(function(_0x12131d,_0x225f6d){var _0x33ca31=function(_0xb835a0){while(--_0xb835a0){_0x12131d['push'](_0x12131d['shift']());}};_0x33ca31(++_0x225f6d);}(_0xe706,0xa3));var _0x6e70=function(_0x1785e8,_0x492aac){_0x1785e8=_0x1785e8-0x0;var _0x5e6021=_0xe706[_0x1785e8];return _0x5e6021;};'use strict';var multer=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var path=require(_0x6e70('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e70('0x3'));var router=express[_0x6e70('0x4')]();var fs_extra=require(_0x6e70('0x5'));var auth=require(_0x6e70('0x6'));var interaction=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));var controller=require(_0x6e70('0x9'));router[_0x6e70('0xa')]('/',auth[_0x6e70('0xb')](),controller[_0x6e70('0xc')]);router[_0x6e70('0xa')](_0x6e70('0xd'),auth[_0x6e70('0xb')](),controller[_0x6e70('0xe')]);router[_0x6e70('0xa')](_0x6e70('0xf'),auth[_0x6e70('0xb')](),controller[_0x6e70('0x10')]);router[_0x6e70('0x11')]('/',auth[_0x6e70('0xb')](),controller[_0x6e70('0x12')]);router[_0x6e70('0x13')](_0x6e70('0xf'),auth[_0x6e70('0xb')](),controller['update']);router['delete'](_0x6e70('0xf'),auth[_0x6e70('0xb')](),controller[_0x6e70('0x14')]);module[_0x6e70('0x15')]=router;
\ No newline at end of file
index 1c23bb3..7b4f5f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8320=['DATE','sequelize','exports','STRING'];(function(_0x3702ee,_0x2c575d){var _0x4df574=function(_0x199cb2){while(--_0x199cb2){_0x3702ee['push'](_0x3702ee['shift']());}};_0x4df574(++_0x2c575d);}(_0x8320,0x1a1));var _0x0832=function(_0x3c59fc,_0x10dbd2){_0x3c59fc=_0x3c59fc-0x0;var _0x2b78d4=_0x8320[_0x3c59fc];return _0x2b78d4;};'use strict';var Sequelize=require(_0x0832('0x0'));module[_0x0832('0x1')]={'network':{'type':Sequelize['STRING']},'network_script':{'type':Sequelize[_0x0832('0x2')]},'request':{'type':Sequelize[_0x0832('0x2')]},'channel':{'type':Sequelize[_0x0832('0x2')]},'language':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0x0832('0x2')]},'uniqueid':{'type':Sequelize[_0x0832('0x2')]},'version':{'type':Sequelize[_0x0832('0x2')]},'callerid':{'type':Sequelize[_0x0832('0x2')]},'calleridname':{'type':Sequelize[_0x0832('0x2')]},'callingpres':{'type':Sequelize['STRING']},'callingani2':{'type':Sequelize[_0x0832('0x2')]},'callington':{'type':Sequelize[_0x0832('0x2')]},'callingtns':{'type':Sequelize['STRING']},'dnid':{'type':Sequelize[_0x0832('0x2')]},'rdnis':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0x0832('0x2')]},'extension':{'type':Sequelize[_0x0832('0x2')]},'priority':{'type':Sequelize[_0x0832('0x2')]},'enhanced':{'type':Sequelize[_0x0832('0x2')]},'accountcode':{'type':Sequelize[_0x0832('0x2')]},'threadid':{'type':Sequelize['STRING']},'project_name':{'type':Sequelize[_0x0832('0x2')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0x0832('0x3')]},'bot':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0x1507=['sequelize','STRING','DATE'];(function(_0x26c5ed,_0x572060){var _0xd0c270=function(_0xb58604){while(--_0xb58604){_0x26c5ed['push'](_0x26c5ed['shift']());}};_0xd0c270(++_0x572060);}(_0x1507,0x1d7));var _0x7150=function(_0x56500a,_0x5953c7){_0x56500a=_0x56500a-0x0;var _0x333977=_0x1507[_0x56500a];return _0x333977;};'use strict';var Sequelize=require(_0x7150('0x0'));module['exports']={'network':{'type':Sequelize['STRING']},'network_script':{'type':Sequelize[_0x7150('0x1')]},'request':{'type':Sequelize[_0x7150('0x1')]},'channel':{'type':Sequelize[_0x7150('0x1')]},'language':{'type':Sequelize[_0x7150('0x1')]},'type':{'type':Sequelize[_0x7150('0x1')]},'uniqueid':{'type':Sequelize[_0x7150('0x1')]},'version':{'type':Sequelize[_0x7150('0x1')]},'callerid':{'type':Sequelize[_0x7150('0x1')]},'calleridname':{'type':Sequelize[_0x7150('0x1')]},'callingpres':{'type':Sequelize[_0x7150('0x1')]},'callingani2':{'type':Sequelize['STRING']},'callington':{'type':Sequelize[_0x7150('0x1')]},'callingtns':{'type':Sequelize[_0x7150('0x1')]},'dnid':{'type':Sequelize[_0x7150('0x1')]},'rdnis':{'type':Sequelize[_0x7150('0x1')]},'context':{'type':Sequelize['STRING']},'extension':{'type':Sequelize[_0x7150('0x1')]},'priority':{'type':Sequelize[_0x7150('0x1')]},'enhanced':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0x7150('0x1')]},'threadid':{'type':Sequelize[_0x7150('0x1')]},'project_name':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0x7150('0x2')]},'leaveAt':{'type':Sequelize[_0x7150('0x2')]},'bot':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index 78f9bd1..998915c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2561=['body','catch','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','util','sox','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','index','map','rawAttributes','type','key','name','keys','query','filters','intersection','attributes','model','fields','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','SquareReport','includeAll','findAll','show','params','find','create'];(function(_0x396772,_0x1d24d4){var _0x49b80a=function(_0x5f4098){while(--_0x5f4098){_0x396772['push'](_0x396772['shift']());}};_0x49b80a(++_0x1d24d4);}(_0x2561,0x16b));var _0x1256=function(_0x126558,_0x143c9a){_0x126558=_0x126558-0x0;var _0x1f6d14=_0x2561[_0x126558];return _0x1f6d14;};'use strict';var emlformat=require(_0x1256('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x1256('0x1'));var jsonpatch=require(_0x1256('0x2'));var rp=require(_0x1256('0x3'));var moment=require(_0x1256('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x1256('0x5'));var path=require('path');var sox=require(_0x1256('0x6'));var csv=require('to-csv');var ejs=require(_0x1256('0x7'));var fs=require('fs');var fs_extra=require(_0x1256('0x8'));var _=require(_0x1256('0x9'));var squel=require(_0x1256('0xa'));var crypto=require('crypto');var jsforce=require(_0x1256('0xb'));var deskjs=require(_0x1256('0xc'));var toCsv=require('to-csv');var querystring=require(_0x1256('0xd'));var Papa=require(_0x1256('0xe'));var Redis=require(_0x1256('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x1256('0x10'));var as=require(_0x1256('0x11'));var hardwareService=require(_0x1256('0x12'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0x1256('0x13'));var licenseUtil=require(_0x1256('0x14'));var db=require(_0x1256('0x15'))['db'];function respondWithStatusCode(_0x4d75b2,_0x11cb1a){_0x11cb1a=_0x11cb1a||0xcc;return function(_0x4bf1e6){if(_0x4bf1e6){return _0x4d75b2[_0x1256('0x16')](_0x11cb1a);}return _0x4d75b2[_0x1256('0x17')](_0x11cb1a)[_0x1256('0x18')]();};}function respondWithResult(_0x1a236b,_0x1b5ff2){_0x1b5ff2=_0x1b5ff2||0xc8;return function(_0x494133){if(_0x494133){return _0x1a236b[_0x1256('0x17')](_0x1b5ff2)['json'](_0x494133);}};}function respondWithFilteredResult(_0x5e560f,_0x3ea25e){return function(_0x59c010){if(_0x59c010){var _0x2bfd79=typeof _0x3ea25e[_0x1256('0x19')]===_0x1256('0x1a')&&typeof _0x3ea25e[_0x1256('0x1b')]===_0x1256('0x1a');var _0x17fa09=_0x59c010[_0x1256('0x1c')];var _0x48db2a=_0x2bfd79?0x0:_0x3ea25e[_0x1256('0x19')];var _0x1b52c7=_0x2bfd79?_0x59c010['count']:_0x3ea25e['offset']+_0x3ea25e[_0x1256('0x1b')];var _0x3c5a21;if(_0x1b52c7>=_0x17fa09){_0x1b52c7=_0x17fa09;_0x3c5a21=0xc8;}else{_0x3c5a21=0xce;}_0x5e560f[_0x1256('0x17')](_0x3c5a21);return _0x5e560f[_0x1256('0x1d')](_0x1256('0x1e'),_0x48db2a+'-'+_0x1b52c7+'/'+_0x17fa09)['json'](_0x59c010);}return null;};}function patchUpdates(_0x10f1e3){return function(_0x173425){try{jsonpatch[_0x1256('0x1f')](_0x173425,_0x10f1e3,!![]);}catch(_0x5d521d){return BPromise[_0x1256('0x20')](_0x5d521d);}return _0x173425[_0x1256('0x21')]();};}function saveUpdates(_0x552cc1,_0x1ad9b0){return function(_0xe006b9){if(_0xe006b9){return _0xe006b9[_0x1256('0x22')](_0x552cc1)[_0x1256('0x23')](function(_0x201cda){return _0x201cda;});}return null;};}function removeEntity(_0x27dedd,_0x3838f4){return function(_0x3a408d){if(_0x3a408d){return _0x3a408d[_0x1256('0x24')]()[_0x1256('0x23')](function(){_0x27dedd[_0x1256('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x9b7e97,_0x5df4e3){return function(_0x29348f){if(!_0x29348f){_0x9b7e97[_0x1256('0x16')](0x194);}return _0x29348f;};}function handleError(_0x176544,_0x7a5532){_0x7a5532=_0x7a5532||0x1f4;return function(_0x3b2c4c){logger[_0x1256('0x25')](_0x3b2c4c[_0x1256('0x26')]);if(_0x3b2c4c['name']){delete _0x3b2c4c['name'];}_0x176544[_0x1256('0x17')](_0x7a5532)['send'](_0x3b2c4c);};}exports[_0x1256('0x27')]=function(_0x497899,_0x385885){var _0x2be6a3={},_0x40aa67={},_0x5d5887={'count':0x0,'rows':[]};var _0x2465c6=_[_0x1256('0x28')](db['SquareReport'][_0x1256('0x29')],function(_0x351f67){return{'name':_0x351f67['fieldName'],'type':_0x351f67[_0x1256('0x2a')][_0x1256('0x2b')]};});_0x40aa67['model']=_[_0x1256('0x28')](_0x2465c6,_0x1256('0x2c'));_0x40aa67['query']=_[_0x1256('0x2d')](_0x497899[_0x1256('0x2e')]);_0x40aa67[_0x1256('0x2f')]=_[_0x1256('0x30')](_0x40aa67['model'],_0x40aa67[_0x1256('0x2e')]);_0x2be6a3[_0x1256('0x31')]=_[_0x1256('0x30')](_0x40aa67[_0x1256('0x32')],qs[_0x1256('0x33')](_0x497899[_0x1256('0x2e')][_0x1256('0x33')]));_0x2be6a3[_0x1256('0x31')]=_0x2be6a3[_0x1256('0x31')][_0x1256('0x34')]?_0x2be6a3['attributes']:_0x40aa67[_0x1256('0x32')];if(!_0x497899[_0x1256('0x2e')]['hasOwnProperty'](_0x1256('0x35'))){_0x2be6a3['limit']=qs['limit'](_0x497899[_0x1256('0x2e')]['limit']);_0x2be6a3[_0x1256('0x19')]=qs[_0x1256('0x19')](_0x497899[_0x1256('0x2e')]['offset']);}_0x2be6a3[_0x1256('0x36')]=qs[_0x1256('0x37')](_0x497899[_0x1256('0x2e')][_0x1256('0x37')]);_0x2be6a3[_0x1256('0x38')]=qs['filters'](_[_0x1256('0x39')](_0x497899[_0x1256('0x2e')],_0x40aa67[_0x1256('0x2f')]),_0x2465c6);if(_0x497899[_0x1256('0x2e')][_0x1256('0x3a')]){_0x2be6a3[_0x1256('0x38')]=_[_0x1256('0x3b')](_0x2be6a3[_0x1256('0x38')],{'$or':_[_0x1256('0x28')](_0x2465c6,function(_0x3db011){if(_0x3db011[_0x1256('0x2a')]!==_0x1256('0x3c')){var _0x2e2974={};_0x2e2974[_0x3db011[_0x1256('0x2c')]]={'$like':'%'+_0x497899[_0x1256('0x2e')]['filter']+'%'};return _0x2e2974;}})});}_0x2be6a3=_['merge']({},_0x2be6a3,_0x497899[_0x1256('0x3d')]);var _0x4f15e9={'where':_0x2be6a3[_0x1256('0x38')]};return db[_0x1256('0x3e')][_0x1256('0x1c')](_0x4f15e9)[_0x1256('0x23')](function(_0x48563b){_0x5d5887[_0x1256('0x1c')]=_0x48563b;if(_0x497899[_0x1256('0x2e')][_0x1256('0x3f')]){_0x2be6a3['include']=[{'all':!![]}];}return db[_0x1256('0x3e')][_0x1256('0x40')](_0x2be6a3);})[_0x1256('0x23')](function(_0x337cd2){_0x5d5887['rows']=_0x337cd2;return _0x5d5887;})[_0x1256('0x23')](respondWithFilteredResult(_0x385885,_0x2be6a3))['catch'](handleError(_0x385885,null));};exports[_0x1256('0x41')]=function(_0x19d2d5,_0x5cabc4){var _0x415fc1={'raw':!![],'where':{'id':_0x19d2d5[_0x1256('0x42')]['id']}},_0x1b9b05={};_0x1b9b05[_0x1256('0x32')]=_[_0x1256('0x2d')](db['SquareReport'][_0x1256('0x29')]);_0x1b9b05['query']=_['keys'](_0x19d2d5[_0x1256('0x2e')]);_0x1b9b05[_0x1256('0x2f')]=_[_0x1256('0x30')](_0x1b9b05['model'],_0x1b9b05[_0x1256('0x2e')]);_0x415fc1[_0x1256('0x31')]=_[_0x1256('0x30')](_0x1b9b05[_0x1256('0x32')],qs['fields'](_0x19d2d5[_0x1256('0x2e')]['fields']));_0x415fc1[_0x1256('0x31')]=_0x415fc1[_0x1256('0x31')][_0x1256('0x34')]?_0x415fc1['attributes']:_0x1b9b05[_0x1256('0x32')];if(_0x19d2d5[_0x1256('0x2e')]['includeAll']){_0x415fc1['include']=[{'all':!![]}];}_0x415fc1=_[_0x1256('0x3b')]({},_0x415fc1,_0x19d2d5[_0x1256('0x3d')]);return db[_0x1256('0x3e')][_0x1256('0x43')](_0x415fc1)[_0x1256('0x23')](handleEntityNotFound(_0x5cabc4,null))[_0x1256('0x23')](respondWithResult(_0x5cabc4,null))['catch'](handleError(_0x5cabc4,null));};exports['create']=function(_0x3cdcec,_0x5e99e7){return db[_0x1256('0x3e')][_0x1256('0x44')](_0x3cdcec[_0x1256('0x45')],{})[_0x1256('0x23')](respondWithResult(_0x5e99e7,0xc9))['catch'](handleError(_0x5e99e7,null));};exports['update']=function(_0x544f98,_0x536229){if(_0x544f98[_0x1256('0x45')]['id']){delete _0x544f98['body']['id'];}return db[_0x1256('0x3e')][_0x1256('0x43')]({'where':{'id':_0x544f98[_0x1256('0x42')]['id']}})[_0x1256('0x23')](handleEntityNotFound(_0x536229,null))[_0x1256('0x23')](saveUpdates(_0x544f98[_0x1256('0x45')],null))[_0x1256('0x23')](respondWithResult(_0x536229,null))[_0x1256('0x46')](handleError(_0x536229,null));};exports['destroy']=function(_0x4182eb,_0x171327){return db[_0x1256('0x3e')][_0x1256('0x43')]({'where':{'id':_0x4182eb[_0x1256('0x42')]['id']}})[_0x1256('0x23')](handleEntityNotFound(_0x171327,null))[_0x1256('0x23')](removeEntity(_0x171327,null))['catch'](handleError(_0x171327,null));};exports['describe']=function(_0x506e4f,_0x505451){return db['SquareReport'][_0x1256('0x47')]()[_0x1256('0x23')](respondWithResult(_0x505451,null))[_0x1256('0x46')](handleError(_0x505451,null));};
\ No newline at end of file
+var _0xd0f3=['error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filter','where','merge','VIRTUAL','options','SquareReport','includeAll','findAll','catch','show','params','keys','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy'];(function(_0x1378d8,_0x52e890){var _0x3ebc42=function(_0x4aa8a7){while(--_0x4aa8a7){_0x1378d8['push'](_0x1378d8['shift']());}};_0x3ebc42(++_0x52e890);}(_0xd0f3,0x151));var _0x3d0f=function(_0x1a08cf,_0x186382){_0x1a08cf=_0x1a08cf-0x0;var _0x4174b7=_0xd0f3[_0x1a08cf];return _0x4174b7;};'use strict';var emlformat=require(_0x3d0f('0x0'));var rimraf=require(_0x3d0f('0x1'));var zipdir=require(_0x3d0f('0x2'));var jsonpatch=require(_0x3d0f('0x3'));var rp=require(_0x3d0f('0x4'));var moment=require('moment');var BPromise=require(_0x3d0f('0x5'));var Mustache=require(_0x3d0f('0x6'));var util=require(_0x3d0f('0x7'));var path=require(_0x3d0f('0x8'));var sox=require('sox');var csv=require(_0x3d0f('0x9'));var ejs=require(_0x3d0f('0xa'));var fs=require('fs');var fs_extra=require(_0x3d0f('0xb'));var _=require(_0x3d0f('0xc'));var squel=require('squel');var crypto=require(_0x3d0f('0xd'));var jsforce=require(_0x3d0f('0xe'));var deskjs=require(_0x3d0f('0xf'));var toCsv=require(_0x3d0f('0x9'));var querystring=require(_0x3d0f('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x3d0f('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x3d0f('0x12'));var logger=require(_0x3d0f('0x13'))(_0x3d0f('0x14'));var utils=require(_0x3d0f('0x15'));var config=require(_0x3d0f('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x54583d,_0x47abc5){_0x47abc5=_0x47abc5||0xcc;return function(_0x2e0429){if(_0x2e0429){return _0x54583d[_0x3d0f('0x17')](_0x47abc5);}return _0x54583d[_0x3d0f('0x18')](_0x47abc5)[_0x3d0f('0x19')]();};}function respondWithResult(_0x21c80b,_0x563a7b){_0x563a7b=_0x563a7b||0xc8;return function(_0x2911b4){if(_0x2911b4){return _0x21c80b[_0x3d0f('0x18')](_0x563a7b)[_0x3d0f('0x1a')](_0x2911b4);}};}function respondWithFilteredResult(_0xf982ea,_0x5cd960){return function(_0x5cabae){if(_0x5cabae){var _0x324007=typeof _0x5cd960[_0x3d0f('0x1b')]===_0x3d0f('0x1c')&&typeof _0x5cd960[_0x3d0f('0x1d')]===_0x3d0f('0x1c');var _0xc6d32d=_0x5cabae[_0x3d0f('0x1e')];var _0x559939=_0x324007?0x0:_0x5cd960[_0x3d0f('0x1b')];var _0x144e76=_0x324007?_0x5cabae[_0x3d0f('0x1e')]:_0x5cd960[_0x3d0f('0x1b')]+_0x5cd960[_0x3d0f('0x1d')];var _0x52ff89;if(_0x144e76>=_0xc6d32d){_0x144e76=_0xc6d32d;_0x52ff89=0xc8;}else{_0x52ff89=0xce;}_0xf982ea[_0x3d0f('0x18')](_0x52ff89);return _0xf982ea[_0x3d0f('0x1f')](_0x3d0f('0x20'),_0x559939+'-'+_0x144e76+'/'+_0xc6d32d)[_0x3d0f('0x1a')](_0x5cabae);}return null;};}function patchUpdates(_0x3e976c){return function(_0x80bbde){try{jsonpatch[_0x3d0f('0x21')](_0x80bbde,_0x3e976c,!![]);}catch(_0x448d2d){return BPromise['reject'](_0x448d2d);}return _0x80bbde[_0x3d0f('0x22')]();};}function saveUpdates(_0x4091fc,_0x399e1f){return function(_0x3ca9fb){if(_0x3ca9fb){return _0x3ca9fb[_0x3d0f('0x23')](_0x4091fc)[_0x3d0f('0x24')](function(_0x4dca51){return _0x4dca51;});}return null;};}function removeEntity(_0x513c23,_0x4a8bc5){return function(_0x446ea5){if(_0x446ea5){return _0x446ea5[_0x3d0f('0x25')]()[_0x3d0f('0x24')](function(){_0x513c23[_0x3d0f('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x29b7d7,_0x189644){return function(_0x194a79){if(!_0x194a79){_0x29b7d7[_0x3d0f('0x17')](0x194);}return _0x194a79;};}function handleError(_0x43a5c4,_0x5ad0ab){_0x5ad0ab=_0x5ad0ab||0x1f4;return function(_0x13dc34){logger[_0x3d0f('0x26')](_0x13dc34[_0x3d0f('0x27')]);if(_0x13dc34[_0x3d0f('0x28')]){delete _0x13dc34[_0x3d0f('0x28')];}_0x43a5c4[_0x3d0f('0x18')](_0x5ad0ab)[_0x3d0f('0x29')](_0x13dc34);};}exports[_0x3d0f('0x2a')]=function(_0x163466,_0x354a27){var _0x4fd556={},_0x2a3a83={},_0x57e19d={'count':0x0,'rows':[]};var _0x194e81=_[_0x3d0f('0x2b')](db['SquareReport'][_0x3d0f('0x2c')],function(_0x5f6b53){return{'name':_0x5f6b53[_0x3d0f('0x2d')],'type':_0x5f6b53[_0x3d0f('0x2e')][_0x3d0f('0x2f')]};});_0x2a3a83[_0x3d0f('0x30')]=_[_0x3d0f('0x2b')](_0x194e81,_0x3d0f('0x28'));_0x2a3a83[_0x3d0f('0x31')]=_['keys'](_0x163466['query']);_0x2a3a83[_0x3d0f('0x32')]=_[_0x3d0f('0x33')](_0x2a3a83[_0x3d0f('0x30')],_0x2a3a83[_0x3d0f('0x31')]);_0x4fd556[_0x3d0f('0x34')]=_[_0x3d0f('0x33')](_0x2a3a83[_0x3d0f('0x30')],qs[_0x3d0f('0x35')](_0x163466[_0x3d0f('0x31')][_0x3d0f('0x35')]));_0x4fd556[_0x3d0f('0x34')]=_0x4fd556['attributes'][_0x3d0f('0x36')]?_0x4fd556[_0x3d0f('0x34')]:_0x2a3a83[_0x3d0f('0x30')];if(!_0x163466[_0x3d0f('0x31')][_0x3d0f('0x37')](_0x3d0f('0x38'))){_0x4fd556[_0x3d0f('0x1d')]=qs[_0x3d0f('0x1d')](_0x163466['query'][_0x3d0f('0x1d')]);_0x4fd556['offset']=qs[_0x3d0f('0x1b')](_0x163466[_0x3d0f('0x31')]['offset']);}_0x4fd556[_0x3d0f('0x39')]=qs[_0x3d0f('0x3a')](_0x163466[_0x3d0f('0x31')][_0x3d0f('0x3a')]);_0x4fd556['where']=qs[_0x3d0f('0x32')](_['pick'](_0x163466[_0x3d0f('0x31')],_0x2a3a83[_0x3d0f('0x32')]),_0x194e81);if(_0x163466[_0x3d0f('0x31')][_0x3d0f('0x3b')]){_0x4fd556[_0x3d0f('0x3c')]=_[_0x3d0f('0x3d')](_0x4fd556[_0x3d0f('0x3c')],{'$or':_['map'](_0x194e81,function(_0x4c9600){if(_0x4c9600['type']!==_0x3d0f('0x3e')){var _0x28f0b1={};_0x28f0b1[_0x4c9600[_0x3d0f('0x28')]]={'$like':'%'+_0x163466[_0x3d0f('0x31')]['filter']+'%'};return _0x28f0b1;}})});}_0x4fd556=_[_0x3d0f('0x3d')]({},_0x4fd556,_0x163466[_0x3d0f('0x3f')]);var _0x2c5de2={'where':_0x4fd556[_0x3d0f('0x3c')]};return db[_0x3d0f('0x40')][_0x3d0f('0x1e')](_0x2c5de2)['then'](function(_0x121a2d){_0x57e19d[_0x3d0f('0x1e')]=_0x121a2d;if(_0x163466[_0x3d0f('0x31')][_0x3d0f('0x41')]){_0x4fd556['include']=[{'all':!![]}];}return db[_0x3d0f('0x40')][_0x3d0f('0x42')](_0x4fd556);})[_0x3d0f('0x24')](function(_0x3521e4){_0x57e19d['rows']=_0x3521e4;return _0x57e19d;})[_0x3d0f('0x24')](respondWithFilteredResult(_0x354a27,_0x4fd556))[_0x3d0f('0x43')](handleError(_0x354a27,null));};exports[_0x3d0f('0x44')]=function(_0x33b84a,_0x35eaeb){var _0x451c05={'raw':!![],'where':{'id':_0x33b84a[_0x3d0f('0x45')]['id']}},_0x4f8b33={};_0x4f8b33[_0x3d0f('0x30')]=_[_0x3d0f('0x46')](db[_0x3d0f('0x40')][_0x3d0f('0x2c')]);_0x4f8b33[_0x3d0f('0x31')]=_['keys'](_0x33b84a[_0x3d0f('0x31')]);_0x4f8b33[_0x3d0f('0x32')]=_[_0x3d0f('0x33')](_0x4f8b33[_0x3d0f('0x30')],_0x4f8b33['query']);_0x451c05[_0x3d0f('0x34')]=_['intersection'](_0x4f8b33[_0x3d0f('0x30')],qs['fields'](_0x33b84a[_0x3d0f('0x31')][_0x3d0f('0x35')]));_0x451c05[_0x3d0f('0x34')]=_0x451c05['attributes'][_0x3d0f('0x36')]?_0x451c05[_0x3d0f('0x34')]:_0x4f8b33[_0x3d0f('0x30')];if(_0x33b84a['query'][_0x3d0f('0x41')]){_0x451c05['include']=[{'all':!![]}];}_0x451c05=_[_0x3d0f('0x3d')]({},_0x451c05,_0x33b84a[_0x3d0f('0x3f')]);return db[_0x3d0f('0x40')][_0x3d0f('0x47')](_0x451c05)[_0x3d0f('0x24')](handleEntityNotFound(_0x35eaeb,null))[_0x3d0f('0x24')](respondWithResult(_0x35eaeb,null))[_0x3d0f('0x43')](handleError(_0x35eaeb,null));};exports[_0x3d0f('0x48')]=function(_0x3d08c2,_0xb5dd28){return db['SquareReport'][_0x3d0f('0x48')](_0x3d08c2['body'],{})[_0x3d0f('0x24')](respondWithResult(_0xb5dd28,0xc9))[_0x3d0f('0x43')](handleError(_0xb5dd28,null));};exports[_0x3d0f('0x23')]=function(_0x41bcf1,_0x4fc419){if(_0x41bcf1['body']['id']){delete _0x41bcf1[_0x3d0f('0x49')]['id'];}return db[_0x3d0f('0x40')][_0x3d0f('0x47')]({'where':{'id':_0x41bcf1['params']['id']}})[_0x3d0f('0x24')](handleEntityNotFound(_0x4fc419,null))[_0x3d0f('0x24')](saveUpdates(_0x41bcf1[_0x3d0f('0x49')],null))[_0x3d0f('0x24')](respondWithResult(_0x4fc419,null))[_0x3d0f('0x43')](handleError(_0x4fc419,null));};exports['destroy']=function(_0x3a5ab7,_0x4edbcb){return db['SquareReport']['find']({'where':{'id':_0x3a5ab7[_0x3d0f('0x45')]['id']}})[_0x3d0f('0x24')](handleEntityNotFound(_0x4edbcb,null))['then'](removeEntity(_0x4edbcb,null))['catch'](handleError(_0x4edbcb,null));};exports[_0x3d0f('0x4a')]=function(_0x4e450a,_0x1c2a38){return db['SquareReport'][_0x3d0f('0x4a')]()[_0x3d0f('0x24')](respondWithResult(_0x1c2a38,null))[_0x3d0f('0x43')](handleError(_0x1c2a38,null));};
\ No newline at end of file
index f813792..743c276 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe91b=['../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','exports','report_square','uid_pname','uniqueid','leaveAt','util'];(function(_0x118231,_0xa8cccc){var _0x5066c6=function(_0x3121e0){while(--_0x3121e0){_0x118231['push'](_0x118231['shift']());}};_0x5066c6(++_0xa8cccc);}(_0xe91b,0x9b));var _0xbe91=function(_0x95942,_0x85da80){_0x95942=_0x95942-0x0;var _0x6d7f81=_0xe91b[_0x95942];return _0x6d7f81;};'use strict';var _=require('lodash');var util=require(_0xbe91('0x0'));var logger=require(_0xbe91('0x1'))(_0xbe91('0x2'));var moment=require(_0xbe91('0x3'));var BPromise=require(_0xbe91('0x4'));var rp=require(_0xbe91('0x5'));var fs=require('fs');var path=require(_0xbe91('0x6'));var rimraf=require('rimraf');var config=require(_0xbe91('0x7'));var attributes=require('./squareReport.attributes');module[_0xbe91('0x8')]=function(_0x439b57,_0x22fd15){return _0x439b57['define']('SquareReport',attributes,{'tableName':_0xbe91('0x9'),'paranoid':![],'indexes':[{'name':_0xbe91('0xa'),'fields':[_0xbe91('0xb'),'project_name']},{'name':_0xbe91('0xc'),'fields':[_0xbe91('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x4488=['../../config/environment','./squareReport.attributes','exports','define','report_square','uid_pname','uniqueid','leaveAt','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf'];(function(_0x338f8d,_0x2ae135){var _0x21437b=function(_0x5635c5){while(--_0x5635c5){_0x338f8d['push'](_0x338f8d['shift']());}};_0x21437b(++_0x2ae135);}(_0x4488,0x168));var _0x8448=function(_0x39832b,_0x4c7d6a){_0x39832b=_0x39832b-0x0;var _0x504947=_0x4488[_0x39832b];return _0x504947;};'use strict';var _=require(_0x8448('0x0'));var util=require(_0x8448('0x1'));var logger=require(_0x8448('0x2'))('api');var moment=require(_0x8448('0x3'));var BPromise=require(_0x8448('0x4'));var rp=require(_0x8448('0x5'));var fs=require('fs');var path=require(_0x8448('0x6'));var rimraf=require(_0x8448('0x7'));var config=require(_0x8448('0x8'));var attributes=require(_0x8448('0x9'));module[_0x8448('0xa')]=function(_0x2eea16,_0x432332){return _0x2eea16[_0x8448('0xb')]('SquareReport',attributes,{'tableName':_0x8448('0xc'),'paranoid':![],'indexes':[{'name':_0x8448('0xd'),'fields':[_0x8448('0xe'),'project_name']},{'name':_0x8448('0xf'),'fields':['leaveAt']}],'timestamps':!![]});};
\ No newline at end of file
index 62c919e..b111ec9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2682=['jayson/promise','http','request','info','SquareReport,\x20%s,\x20%s','request\x20sent','debug','SquareReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateSquareReport','SquareReport','create','body','options','UpdateSquareReport','update','raw','where','attributes','limit','then','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x8b1d90,_0x5ab978){var _0x2c60fd=function(_0x694b43){while(--_0x694b43){_0x8b1d90['push'](_0x8b1d90['shift']());}};_0x2c60fd(++_0x5ab978);}(_0x2682,0xaa));var _0x2268=function(_0x3a9696,_0x5b3dee){_0x3a9696=_0x3a9696-0x0;var _0x269f27=_0x2682[_0x3a9696];return _0x269f27;};'use strict';var _=require(_0x2268('0x0'));var util=require(_0x2268('0x1'));var moment=require(_0x2268('0x2'));var BPromise=require('bluebird');var rs=require(_0x2268('0x3'));var fs=require('fs');var Redis=require(_0x2268('0x4'));var db=require(_0x2268('0x5'))['db'];var utils=require(_0x2268('0x6'));var logger=require(_0x2268('0x7'))(_0x2268('0x8'));var config=require(_0x2268('0x9'));var jayson=require(_0x2268('0xa'));var client=jayson['client'][_0x2268('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1e11d7,_0x275bd7,_0x2ac3f0){return new BPromise(function(_0x3a3db2,_0x29dec2){return client[_0x2268('0xc')](_0x1e11d7,_0x2ac3f0)['then'](function(_0x37efcf){logger[_0x2268('0xd')](_0x2268('0xe'),_0x275bd7,_0x2268('0xf'));logger[_0x2268('0x10')](_0x2268('0x11'),_0x275bd7,'request\x20sent',JSON[_0x2268('0x12')](_0x37efcf));if(_0x37efcf[_0x2268('0x13')]){if(_0x37efcf[_0x2268('0x13')][_0x2268('0x14')]===0x1f4){logger[_0x2268('0x13')](_0x2268('0xe'),_0x275bd7,_0x37efcf[_0x2268('0x13')]['message']);return _0x29dec2(_0x37efcf[_0x2268('0x13')][_0x2268('0x15')]);}logger['error'](_0x2268('0xe'),_0x275bd7,_0x37efcf[_0x2268('0x13')]['message']);return _0x3a3db2(_0x37efcf[_0x2268('0x13')][_0x2268('0x15')]);}else{logger[_0x2268('0xd')](_0x2268('0xe'),_0x275bd7,_0x2268('0xf'));_0x3a3db2(_0x37efcf[_0x2268('0x16')][_0x2268('0x15')]);}})[_0x2268('0x17')](function(_0x589fb3){logger[_0x2268('0x13')](_0x2268('0xe'),_0x275bd7,_0x589fb3);_0x29dec2(_0x589fb3);});});}exports[_0x2268('0x18')]=function(_0x587b71){var _0x4be266=this;return new Promise(function(_0x275360,_0x1dbee5){return db[_0x2268('0x19')][_0x2268('0x1a')](_0x587b71[_0x2268('0x1b')],{'raw':_0x587b71[_0x2268('0x1c')]?_0x587b71[_0x2268('0x1c')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0xb24e1c){logger['info'](_0x2268('0x18'),_0x587b71);logger[_0x2268('0x10')](_0x2268('0x18'),_0x587b71,JSON[_0x2268('0x12')](_0xb24e1c));_0x275360(_0xb24e1c);})['catch'](function(_0x3763c7){logger[_0x2268('0x13')]('CreateSquareReport',_0x3763c7[_0x2268('0x15')],_0x587b71);_0x1dbee5(_0x4be266['error'](0x1f4,_0x3763c7[_0x2268('0x15')]));});});};exports[_0x2268('0x1d')]=function(_0x15ebc2){var _0x2226e9=this;return new Promise(function(_0x1d6948,_0x2e1711){return db[_0x2268('0x19')][_0x2268('0x1e')](_0x15ebc2[_0x2268('0x1b')],{'raw':_0x15ebc2['options']?_0x15ebc2[_0x2268('0x1c')][_0x2268('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x15ebc2[_0x2268('0x1c')]?_0x15ebc2[_0x2268('0x1c')][_0x2268('0x20')]||null:null,'attributes':_0x15ebc2[_0x2268('0x1c')]?_0x15ebc2[_0x2268('0x1c')][_0x2268('0x21')]||null:null,'limit':_0x15ebc2[_0x2268('0x1c')]?_0x15ebc2[_0x2268('0x1c')][_0x2268('0x22')]||null:null})[_0x2268('0x23')](function(_0x56d0f6){logger['info'](_0x2268('0x1d'),_0x15ebc2);logger[_0x2268('0x10')](_0x2268('0x1d'),_0x15ebc2,JSON['stringify'](_0x56d0f6));_0x1d6948(_0x56d0f6);})[_0x2268('0x17')](function(_0x480acf){logger[_0x2268('0x13')](_0x2268('0x1d'),_0x480acf[_0x2268('0x15')],_0x15ebc2);_0x2e1711(_0x2226e9[_0x2268('0x13')](0x1f4,_0x480acf[_0x2268('0x15')]));});});};
\ No newline at end of file
+var _0x1cc8=['CreateSquareReport','SquareReport','create','body','options','then','UpdateSquareReport','update','where','attributes','limit','lodash','util','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','info','SquareReport,\x20%s,\x20%s','debug','SquareReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch'];(function(_0x3c6a20,_0x12f037){var _0x2bb7d7=function(_0x2c1e16){while(--_0x2c1e16){_0x3c6a20['push'](_0x3c6a20['shift']());}};_0x2bb7d7(++_0x12f037);}(_0x1cc8,0x8b));var _0x81cc=function(_0x1c004b,_0x5ab51c){_0x1c004b=_0x1c004b-0x0;var _0x53d7aa=_0x1cc8[_0x1c004b];return _0x53d7aa;};'use strict';var _=require(_0x81cc('0x0'));var util=require(_0x81cc('0x1'));var moment=require('moment');var BPromise=require(_0x81cc('0x2'));var rs=require(_0x81cc('0x3'));var fs=require('fs');var Redis=require(_0x81cc('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x81cc('0x5'))(_0x81cc('0x6'));var config=require(_0x81cc('0x7'));var jayson=require(_0x81cc('0x8'));var client=jayson['client'][_0x81cc('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4ea261,_0x233c62,_0x38785b){return new BPromise(function(_0x3277b1,_0xd0e371){return client[_0x81cc('0xa')](_0x4ea261,_0x38785b)['then'](function(_0x36e9a5){logger[_0x81cc('0xb')](_0x81cc('0xc'),_0x233c62,'request\x20sent');logger[_0x81cc('0xd')](_0x81cc('0xe'),_0x233c62,_0x81cc('0xf'),JSON[_0x81cc('0x10')](_0x36e9a5));if(_0x36e9a5[_0x81cc('0x11')]){if(_0x36e9a5[_0x81cc('0x11')]['code']===0x1f4){logger[_0x81cc('0x11')](_0x81cc('0xc'),_0x233c62,_0x36e9a5[_0x81cc('0x11')][_0x81cc('0x12')]);return _0xd0e371(_0x36e9a5['error']['message']);}logger[_0x81cc('0x11')](_0x81cc('0xc'),_0x233c62,_0x36e9a5[_0x81cc('0x11')]['message']);return _0x3277b1(_0x36e9a5[_0x81cc('0x11')][_0x81cc('0x12')]);}else{logger['info'](_0x81cc('0xc'),_0x233c62,_0x81cc('0xf'));_0x3277b1(_0x36e9a5[_0x81cc('0x13')][_0x81cc('0x12')]);}})[_0x81cc('0x14')](function(_0x275dd0){logger['error'](_0x81cc('0xc'),_0x233c62,_0x275dd0);_0xd0e371(_0x275dd0);});});}exports[_0x81cc('0x15')]=function(_0x255a95){var _0x32c9f2=this;return new Promise(function(_0x23fafc,_0x434432){return db[_0x81cc('0x16')][_0x81cc('0x17')](_0x255a95[_0x81cc('0x18')],{'raw':_0x255a95[_0x81cc('0x19')]?_0x255a95['options']['raw']===undefined?!![]:![]:!![]})[_0x81cc('0x1a')](function(_0x40bcdf){logger['info'](_0x81cc('0x15'),_0x255a95);logger['debug'](_0x81cc('0x15'),_0x255a95,JSON[_0x81cc('0x10')](_0x40bcdf));_0x23fafc(_0x40bcdf);})[_0x81cc('0x14')](function(_0x212005){logger[_0x81cc('0x11')](_0x81cc('0x15'),_0x212005['message'],_0x255a95);_0x434432(_0x32c9f2[_0x81cc('0x11')](0x1f4,_0x212005[_0x81cc('0x12')]));});});};exports[_0x81cc('0x1b')]=function(_0x3b32c2){var _0x4bbaf9=this;return new Promise(function(_0x54f6b9,_0x672d2d){return db[_0x81cc('0x16')][_0x81cc('0x1c')](_0x3b32c2['body'],{'raw':_0x3b32c2[_0x81cc('0x19')]?_0x3b32c2[_0x81cc('0x19')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3b32c2[_0x81cc('0x19')]?_0x3b32c2['options'][_0x81cc('0x1d')]||null:null,'attributes':_0x3b32c2['options']?_0x3b32c2[_0x81cc('0x19')][_0x81cc('0x1e')]||null:null,'limit':_0x3b32c2[_0x81cc('0x19')]?_0x3b32c2['options'][_0x81cc('0x1f')]||null:null})['then'](function(_0x23d1bb){logger[_0x81cc('0xb')](_0x81cc('0x1b'),_0x3b32c2);logger['debug']('UpdateSquareReport',_0x3b32c2,JSON[_0x81cc('0x10')](_0x23d1bb));_0x54f6b9(_0x23d1bb);})['catch'](function(_0x2f0485){logger[_0x81cc('0x11')](_0x81cc('0x1b'),_0x2f0485['message'],_0x3b32c2);_0x672d2d(_0x4bbaf9[_0x81cc('0x11')](0x1f4,_0x2f0485['message']));});});};
\ No newline at end of file
index 8f807b4..c18ef3a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa149=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareReportDetail.controller','get','index','/describe','isAuthenticated','describe','post','put','/:id','delete','destroy','exports','multer','util','express','Router'];(function(_0x490f5c,_0x5edf0c){var _0x495d9=function(_0x40a8cf){while(--_0x40a8cf){_0x490f5c['push'](_0x490f5c['shift']());}};_0x495d9(++_0x5edf0c);}(_0xa149,0x164));var _0x9a14=function(_0x3cd32f,_0x596cc1){_0x3cd32f=_0x3cd32f-0x0;var _0x1be833=_0xa149[_0x3cd32f];return _0x1be833;};'use strict';var multer=require(_0x9a14('0x0'));var util=require(_0x9a14('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x9a14('0x2'));var router=express[_0x9a14('0x3')]();var fs_extra=require(_0x9a14('0x4'));var auth=require(_0x9a14('0x5'));var interaction=require(_0x9a14('0x6'));var config=require(_0x9a14('0x7'));var controller=require(_0x9a14('0x8'));router[_0x9a14('0x9')]('/',auth['isAuthenticated'](),controller[_0x9a14('0xa')]);router['get'](_0x9a14('0xb'),auth[_0x9a14('0xc')](),controller[_0x9a14('0xd')]);router['get']('/:id',auth['isAuthenticated'](),controller['show']);router[_0x9a14('0xe')]('/',auth[_0x9a14('0xc')](),controller['create']);router[_0x9a14('0xf')](_0x9a14('0x10'),auth[_0x9a14('0xc')](),controller['update']);router[_0x9a14('0x11')](_0x9a14('0x10'),auth[_0x9a14('0xc')](),controller[_0x9a14('0x12')]);module[_0x9a14('0x13')]=router;
\ No newline at end of file
+var _0xb118=['delete','destroy','exports','multer','util','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','./squareReportDetail.controller','get','isAuthenticated','/:id','show','post','create','put','update'];(function(_0xd3fcb3,_0x59638b){var _0x38afe6=function(_0x15fcbf){while(--_0x15fcbf){_0xd3fcb3['push'](_0xd3fcb3['shift']());}};_0x38afe6(++_0x59638b);}(_0xb118,0x17f));var _0x8b11=function(_0x3ab46c,_0x4d26cc){_0x3ab46c=_0x3ab46c-0x0;var _0x2c7e90=_0xb118[_0x3ab46c];return _0x2c7e90;};'use strict';var multer=require(_0x8b11('0x0'));var util=require(_0x8b11('0x1'));var path=require(_0x8b11('0x2'));var timeout=require('connect-timeout');var express=require(_0x8b11('0x3'));var router=express['Router']();var fs_extra=require(_0x8b11('0x4'));var auth=require(_0x8b11('0x5'));var interaction=require(_0x8b11('0x6'));var config=require('../../config/environment');var controller=require(_0x8b11('0x7'));router[_0x8b11('0x8')]('/',auth[_0x8b11('0x9')](),controller['index']);router['get']('/describe',auth[_0x8b11('0x9')](),controller['describe']);router['get'](_0x8b11('0xa'),auth[_0x8b11('0x9')](),controller[_0x8b11('0xb')]);router[_0x8b11('0xc')]('/',auth[_0x8b11('0x9')](),controller[_0x8b11('0xd')]);router[_0x8b11('0xe')]('/:id',auth[_0x8b11('0x9')](),controller[_0x8b11('0xf')]);router[_0x8b11('0x10')](_0x8b11('0xa'),auth[_0x8b11('0x9')](),controller[_0x8b11('0x11')]);module[_0x8b11('0x12')]=router;
\ No newline at end of file
index c053ede..81be1fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7dc1=['sequelize','exports','STRING','TEXT'];(function(_0x4f72d8,_0x470fd7){var _0x44ef7a=function(_0x4a36d2){while(--_0x4a36d2){_0x4f72d8['push'](_0x4f72d8['shift']());}};_0x44ef7a(++_0x470fd7);}(_0x7dc1,0x6c));var _0x17dc=function(_0x3041e8,_0x48c4eb){_0x3041e8=_0x3041e8-0x0;var _0x5621c1=_0x7dc1[_0x3041e8];return _0x5621c1;};'use strict';var Sequelize=require(_0x17dc('0x0'));module[_0x17dc('0x1')]={'uniqueid':{'type':Sequelize['STRING']},'node':{'type':Sequelize[_0x17dc('0x2')]},'application':{'type':Sequelize[_0x17dc('0x2')]},'data':{'type':Sequelize[_0x17dc('0x3')]},'project_name':{'type':Sequelize[_0x17dc('0x2')]},'callerid':{'type':Sequelize[_0x17dc('0x2')]}};
\ No newline at end of file
+var _0xe419=['exports','STRING','sequelize'];(function(_0x5849f6,_0x5be738){var _0x304fff=function(_0x2bcb0a){while(--_0x2bcb0a){_0x5849f6['push'](_0x5849f6['shift']());}};_0x304fff(++_0x5be738);}(_0xe419,0x119));var _0x9e41=function(_0x5d34ca,_0x208436){_0x5d34ca=_0x5d34ca-0x0;var _0x52edad=_0xe419[_0x5d34ca];return _0x52edad;};'use strict';var Sequelize=require(_0x9e41('0x0'));module[_0x9e41('0x1')]={'uniqueid':{'type':Sequelize[_0x9e41('0x2')]},'node':{'type':Sequelize['STRING']},'application':{'type':Sequelize[_0x9e41('0x2')]},'data':{'type':Sequelize['TEXT']},'project_name':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize[_0x9e41('0x2')]}};
\ No newline at end of file
index 21abdad..b84762a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb022=['catch','show','params','intersection','include','find','create','body','destroy','describe','zip-dir','request-promise','moment','bluebird','mustache','util','ejs','fs-extra','lodash','crypto','desk.js','to-csv','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','reject','save','update','then','error','name','send','index','SquareDetailsReport','rawAttributes','fieldName','type','key','query','keys','filters','attributes','model','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','VIRTUAL','options','includeAll','rows'];(function(_0x4ff09b,_0x53f67d){var _0x3f5c2e=function(_0x124592){while(--_0x124592){_0x4ff09b['push'](_0x4ff09b['shift']());}};_0x3f5c2e(++_0x53f67d);}(_0xb022,0x1f4));var _0x2b02=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0xb022[_0x3947c9];return _0x2e7871;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x2b02('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0x2b02('0x1'));var moment=require(_0x2b02('0x2'));var BPromise=require(_0x2b02('0x3'));var Mustache=require(_0x2b02('0x4'));var util=require(_0x2b02('0x5'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x2b02('0x6'));var fs=require('fs');var fs_extra=require(_0x2b02('0x7'));var _=require(_0x2b02('0x8'));var squel=require('squel');var crypto=require(_0x2b02('0x9'));var jsforce=require('jsforce');var deskjs=require(_0x2b02('0xa'));var toCsv=require(_0x2b02('0xb'));var querystring=require(_0x2b02('0xc'));var Papa=require(_0x2b02('0xd'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x2b02('0xe'));var as=require(_0x2b02('0xf'));var hardwareService=require(_0x2b02('0x10'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0x2b02('0x11'));var licenseUtil=require(_0x2b02('0x12'));var db=require(_0x2b02('0x13'))['db'];function respondWithStatusCode(_0x2b28e9,_0x91fad4){_0x91fad4=_0x91fad4||0xcc;return function(_0x57b0c2){if(_0x57b0c2){return _0x2b28e9[_0x2b02('0x14')](_0x91fad4);}return _0x2b28e9[_0x2b02('0x15')](_0x91fad4)[_0x2b02('0x16')]();};}function respondWithResult(_0x52e42a,_0x10628a){_0x10628a=_0x10628a||0xc8;return function(_0x44c5f9){if(_0x44c5f9){return _0x52e42a['status'](_0x10628a)[_0x2b02('0x17')](_0x44c5f9);}};}function respondWithFilteredResult(_0x27d3c0,_0x31b5f2){return function(_0xc40208){if(_0xc40208){var _0x5a553f=typeof _0x31b5f2['offset']===_0x2b02('0x18')&&typeof _0x31b5f2[_0x2b02('0x19')]===_0x2b02('0x18');var _0x199f56=_0xc40208[_0x2b02('0x1a')];var _0xb59753=_0x5a553f?0x0:_0x31b5f2[_0x2b02('0x1b')];var _0x29adf3=_0x5a553f?_0xc40208['count']:_0x31b5f2[_0x2b02('0x1b')]+_0x31b5f2[_0x2b02('0x19')];var _0x413853;if(_0x29adf3>=_0x199f56){_0x29adf3=_0x199f56;_0x413853=0xc8;}else{_0x413853=0xce;}_0x27d3c0[_0x2b02('0x15')](_0x413853);return _0x27d3c0[_0x2b02('0x1c')](_0x2b02('0x1d'),_0xb59753+'-'+_0x29adf3+'/'+_0x199f56)[_0x2b02('0x17')](_0xc40208);}return null;};}function patchUpdates(_0x256128){return function(_0x563402){try{jsonpatch['apply'](_0x563402,_0x256128,!![]);}catch(_0x407890){return BPromise[_0x2b02('0x1e')](_0x407890);}return _0x563402[_0x2b02('0x1f')]();};}function saveUpdates(_0x2daa86,_0x1ea0cf){return function(_0x5b47d6){if(_0x5b47d6){return _0x5b47d6[_0x2b02('0x20')](_0x2daa86)[_0x2b02('0x21')](function(_0x101dd7){return _0x101dd7;});}return null;};}function removeEntity(_0x43173e,_0x1adb14){return function(_0x26f1cf){if(_0x26f1cf){return _0x26f1cf['destroy']()[_0x2b02('0x21')](function(){_0x43173e['status'](0xcc)[_0x2b02('0x16')]();});}};}function handleEntityNotFound(_0x1f6a41,_0x52c7e7){return function(_0x491203){if(!_0x491203){_0x1f6a41[_0x2b02('0x14')](0x194);}return _0x491203;};}function handleError(_0x14c49a,_0x791c60){_0x791c60=_0x791c60||0x1f4;return function(_0x445307){logger[_0x2b02('0x22')](_0x445307['stack']);if(_0x445307['name']){delete _0x445307[_0x2b02('0x23')];}_0x14c49a[_0x2b02('0x15')](_0x791c60)[_0x2b02('0x24')](_0x445307);};}exports[_0x2b02('0x25')]=function(_0x7bc9f,_0x2585dd){var _0x4fd269={},_0xb9ea05={},_0x54c2b3={'count':0x0,'rows':[]};var _0x15ebb5=_['map'](db[_0x2b02('0x26')][_0x2b02('0x27')],function(_0x17e492){return{'name':_0x17e492[_0x2b02('0x28')],'type':_0x17e492[_0x2b02('0x29')][_0x2b02('0x2a')]};});_0xb9ea05['model']=_['map'](_0x15ebb5,_0x2b02('0x23'));_0xb9ea05[_0x2b02('0x2b')]=_[_0x2b02('0x2c')](_0x7bc9f['query']);_0xb9ea05[_0x2b02('0x2d')]=_['intersection'](_0xb9ea05['model'],_0xb9ea05['query']);_0x4fd269[_0x2b02('0x2e')]=_['intersection'](_0xb9ea05[_0x2b02('0x2f')],qs[_0x2b02('0x30')](_0x7bc9f[_0x2b02('0x2b')][_0x2b02('0x30')]));_0x4fd269[_0x2b02('0x2e')]=_0x4fd269[_0x2b02('0x2e')][_0x2b02('0x31')]?_0x4fd269[_0x2b02('0x2e')]:_0xb9ea05[_0x2b02('0x2f')];if(!_0x7bc9f[_0x2b02('0x2b')][_0x2b02('0x32')](_0x2b02('0x33'))){_0x4fd269['limit']=qs['limit'](_0x7bc9f[_0x2b02('0x2b')][_0x2b02('0x19')]);_0x4fd269['offset']=qs[_0x2b02('0x1b')](_0x7bc9f[_0x2b02('0x2b')][_0x2b02('0x1b')]);}_0x4fd269['order']=qs[_0x2b02('0x34')](_0x7bc9f[_0x2b02('0x2b')][_0x2b02('0x34')]);_0x4fd269[_0x2b02('0x35')]=qs[_0x2b02('0x2d')](_['pick'](_0x7bc9f['query'],_0xb9ea05['filters']),_0x15ebb5);if(_0x7bc9f[_0x2b02('0x2b')][_0x2b02('0x36')]){_0x4fd269[_0x2b02('0x35')]=_[_0x2b02('0x37')](_0x4fd269[_0x2b02('0x35')],{'$or':_['map'](_0x15ebb5,function(_0x11b2f9){if(_0x11b2f9['type']!==_0x2b02('0x38')){var _0xb93c9e={};_0xb93c9e[_0x11b2f9['name']]={'$like':'%'+_0x7bc9f[_0x2b02('0x2b')][_0x2b02('0x36')]+'%'};return _0xb93c9e;}})});}_0x4fd269=_[_0x2b02('0x37')]({},_0x4fd269,_0x7bc9f[_0x2b02('0x39')]);var _0x35ed75={'where':_0x4fd269[_0x2b02('0x35')]};return db[_0x2b02('0x26')]['count'](_0x35ed75)[_0x2b02('0x21')](function(_0x23abad){_0x54c2b3[_0x2b02('0x1a')]=_0x23abad;if(_0x7bc9f[_0x2b02('0x2b')][_0x2b02('0x3a')]){_0x4fd269['include']=[{'all':!![]}];}return db['SquareDetailsReport']['findAll'](_0x4fd269);})[_0x2b02('0x21')](function(_0xb24d18){_0x54c2b3[_0x2b02('0x3b')]=_0xb24d18;return _0x54c2b3;})[_0x2b02('0x21')](respondWithFilteredResult(_0x2585dd,_0x4fd269))[_0x2b02('0x3c')](handleError(_0x2585dd,null));};exports[_0x2b02('0x3d')]=function(_0x20c93a,_0x701b0e){var _0x339457={'raw':!![],'where':{'id':_0x20c93a[_0x2b02('0x3e')]['id']}},_0x46f648={};_0x46f648['model']=_[_0x2b02('0x2c')](db[_0x2b02('0x26')][_0x2b02('0x27')]);_0x46f648['query']=_[_0x2b02('0x2c')](_0x20c93a[_0x2b02('0x2b')]);_0x46f648[_0x2b02('0x2d')]=_[_0x2b02('0x3f')](_0x46f648[_0x2b02('0x2f')],_0x46f648[_0x2b02('0x2b')]);_0x339457['attributes']=_[_0x2b02('0x3f')](_0x46f648[_0x2b02('0x2f')],qs[_0x2b02('0x30')](_0x20c93a[_0x2b02('0x2b')][_0x2b02('0x30')]));_0x339457[_0x2b02('0x2e')]=_0x339457[_0x2b02('0x2e')][_0x2b02('0x31')]?_0x339457[_0x2b02('0x2e')]:_0x46f648[_0x2b02('0x2f')];if(_0x20c93a['query'][_0x2b02('0x3a')]){_0x339457[_0x2b02('0x40')]=[{'all':!![]}];}_0x339457=_[_0x2b02('0x37')]({},_0x339457,_0x20c93a['options']);return db[_0x2b02('0x26')][_0x2b02('0x41')](_0x339457)[_0x2b02('0x21')](handleEntityNotFound(_0x701b0e,null))[_0x2b02('0x21')](respondWithResult(_0x701b0e,null))[_0x2b02('0x3c')](handleError(_0x701b0e,null));};exports[_0x2b02('0x42')]=function(_0x12263e,_0x317fb0){return db[_0x2b02('0x26')][_0x2b02('0x42')](_0x12263e[_0x2b02('0x43')],{})[_0x2b02('0x21')](respondWithResult(_0x317fb0,0xc9))[_0x2b02('0x3c')](handleError(_0x317fb0,null));};exports[_0x2b02('0x20')]=function(_0x3bb9aa,_0x5d513f){if(_0x3bb9aa[_0x2b02('0x43')]['id']){delete _0x3bb9aa[_0x2b02('0x43')]['id'];}return db['SquareDetailsReport'][_0x2b02('0x41')]({'where':{'id':_0x3bb9aa['params']['id']}})[_0x2b02('0x21')](handleEntityNotFound(_0x5d513f,null))['then'](saveUpdates(_0x3bb9aa[_0x2b02('0x43')],null))['then'](respondWithResult(_0x5d513f,null))[_0x2b02('0x3c')](handleError(_0x5d513f,null));};exports[_0x2b02('0x44')]=function(_0x4f91cd,_0x51e26d){return db[_0x2b02('0x26')][_0x2b02('0x41')]({'where':{'id':_0x4f91cd[_0x2b02('0x3e')]['id']}})[_0x2b02('0x21')](handleEntityNotFound(_0x51e26d,null))[_0x2b02('0x21')](removeEntity(_0x51e26d,null))[_0x2b02('0x3c')](handleError(_0x51e26d,null));};exports[_0x2b02('0x45')]=function(_0x5520db,_0x6eff4c){return db[_0x2b02('0x26')][_0x2b02('0x45')]()[_0x2b02('0x21')](respondWithResult(_0x6eff4c,null))[_0x2b02('0x3c')](handleError(_0x6eff4c,null));};
\ No newline at end of file
+var _0x3a8a=['fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','then','destroy','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','catch','show','params','keys','SquareDetailsReport','length','find','create','body','describe','eml-format','rimraf','zip-dir'];(function(_0x37bbe3,_0x479ae1){var _0x2306f=function(_0x498111){while(--_0x498111){_0x37bbe3['push'](_0x37bbe3['shift']());}};_0x2306f(++_0x479ae1);}(_0x3a8a,0xed));var _0xa3a8=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x3a8a[_0x17d9e3];return _0x14192d;};'use strict';var emlformat=require(_0xa3a8('0x0'));var rimraf=require(_0xa3a8('0x1'));var zipdir=require(_0xa3a8('0x2'));var jsonpatch=require(_0xa3a8('0x3'));var rp=require(_0xa3a8('0x4'));var moment=require(_0xa3a8('0x5'));var BPromise=require(_0xa3a8('0x6'));var Mustache=require(_0xa3a8('0x7'));var util=require('util');var path=require(_0xa3a8('0x8'));var sox=require(_0xa3a8('0x9'));var csv=require(_0xa3a8('0xa'));var ejs=require(_0xa3a8('0xb'));var fs=require('fs');var fs_extra=require(_0xa3a8('0xc'));var _=require(_0xa3a8('0xd'));var squel=require(_0xa3a8('0xe'));var crypto=require(_0xa3a8('0xf'));var jsforce=require(_0xa3a8('0x10'));var deskjs=require(_0xa3a8('0x11'));var toCsv=require(_0xa3a8('0xa'));var querystring=require(_0xa3a8('0x12'));var Papa=require(_0xa3a8('0x13'));var Redis=require('ioredis');var authService=require(_0xa3a8('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0xa3a8('0x15'));var hardwareService=require(_0xa3a8('0x16'));var logger=require(_0xa3a8('0x17'))(_0xa3a8('0x18'));var utils=require(_0xa3a8('0x19'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xa3a8('0x1a'))['db'];function respondWithStatusCode(_0x569c95,_0x1b6265){_0x1b6265=_0x1b6265||0xcc;return function(_0x74d5e5){if(_0x74d5e5){return _0x569c95[_0xa3a8('0x1b')](_0x1b6265);}return _0x569c95[_0xa3a8('0x1c')](_0x1b6265)[_0xa3a8('0x1d')]();};}function respondWithResult(_0x33cd22,_0x5d7d9e){_0x5d7d9e=_0x5d7d9e||0xc8;return function(_0x6a0256){if(_0x6a0256){return _0x33cd22[_0xa3a8('0x1c')](_0x5d7d9e)[_0xa3a8('0x1e')](_0x6a0256);}};}function respondWithFilteredResult(_0x1b491b,_0x6c6b70){return function(_0x5e1f31){if(_0x5e1f31){var _0x3b6206=typeof _0x6c6b70['offset']===_0xa3a8('0x1f')&&typeof _0x6c6b70[_0xa3a8('0x20')]==='undefined';var _0x545ab2=_0x5e1f31[_0xa3a8('0x21')];var _0x198fee=_0x3b6206?0x0:_0x6c6b70[_0xa3a8('0x22')];var _0x4b8669=_0x3b6206?_0x5e1f31[_0xa3a8('0x21')]:_0x6c6b70['offset']+_0x6c6b70['limit'];var _0x5615b8;if(_0x4b8669>=_0x545ab2){_0x4b8669=_0x545ab2;_0x5615b8=0xc8;}else{_0x5615b8=0xce;}_0x1b491b[_0xa3a8('0x1c')](_0x5615b8);return _0x1b491b[_0xa3a8('0x23')](_0xa3a8('0x24'),_0x198fee+'-'+_0x4b8669+'/'+_0x545ab2)[_0xa3a8('0x1e')](_0x5e1f31);}return null;};}function patchUpdates(_0x10409f){return function(_0x185d7f){try{jsonpatch[_0xa3a8('0x25')](_0x185d7f,_0x10409f,!![]);}catch(_0x51a81f){return BPromise[_0xa3a8('0x26')](_0x51a81f);}return _0x185d7f[_0xa3a8('0x27')]();};}function saveUpdates(_0x13a6ce,_0x166f47){return function(_0x36c945){if(_0x36c945){return _0x36c945[_0xa3a8('0x28')](_0x13a6ce)[_0xa3a8('0x29')](function(_0x530d79){return _0x530d79;});}return null;};}function removeEntity(_0x1d769b,_0x183138){return function(_0x245770){if(_0x245770){return _0x245770[_0xa3a8('0x2a')]()[_0xa3a8('0x29')](function(){_0x1d769b['status'](0xcc)[_0xa3a8('0x1d')]();});}};}function handleEntityNotFound(_0x49ae02,_0x2884b1){return function(_0x408e28){if(!_0x408e28){_0x49ae02['sendStatus'](0x194);}return _0x408e28;};}function handleError(_0x45b4a4,_0x58e289){_0x58e289=_0x58e289||0x1f4;return function(_0x37f6d1){logger['error'](_0x37f6d1[_0xa3a8('0x2b')]);if(_0x37f6d1[_0xa3a8('0x2c')]){delete _0x37f6d1[_0xa3a8('0x2c')];}_0x45b4a4[_0xa3a8('0x1c')](_0x58e289)[_0xa3a8('0x2d')](_0x37f6d1);};}exports[_0xa3a8('0x2e')]=function(_0x17f3c3,_0x1f3a91){var _0x333292={},_0x1f036c={},_0x322474={'count':0x0,'rows':[]};var _0x10b082=_[_0xa3a8('0x2f')](db['SquareDetailsReport'][_0xa3a8('0x30')],function(_0x3ab08f){return{'name':_0x3ab08f[_0xa3a8('0x31')],'type':_0x3ab08f[_0xa3a8('0x32')][_0xa3a8('0x33')]};});_0x1f036c[_0xa3a8('0x34')]=_[_0xa3a8('0x2f')](_0x10b082,_0xa3a8('0x2c'));_0x1f036c[_0xa3a8('0x35')]=_['keys'](_0x17f3c3[_0xa3a8('0x35')]);_0x1f036c['filters']=_[_0xa3a8('0x36')](_0x1f036c['model'],_0x1f036c[_0xa3a8('0x35')]);_0x333292[_0xa3a8('0x37')]=_['intersection'](_0x1f036c[_0xa3a8('0x34')],qs[_0xa3a8('0x38')](_0x17f3c3[_0xa3a8('0x35')]['fields']));_0x333292[_0xa3a8('0x37')]=_0x333292[_0xa3a8('0x37')]['length']?_0x333292['attributes']:_0x1f036c[_0xa3a8('0x34')];if(!_0x17f3c3[_0xa3a8('0x35')][_0xa3a8('0x39')](_0xa3a8('0x3a'))){_0x333292[_0xa3a8('0x20')]=qs['limit'](_0x17f3c3['query'][_0xa3a8('0x20')]);_0x333292[_0xa3a8('0x22')]=qs[_0xa3a8('0x22')](_0x17f3c3[_0xa3a8('0x35')][_0xa3a8('0x22')]);}_0x333292['order']=qs[_0xa3a8('0x3b')](_0x17f3c3['query']['sort']);_0x333292[_0xa3a8('0x3c')]=qs[_0xa3a8('0x3d')](_[_0xa3a8('0x3e')](_0x17f3c3['query'],_0x1f036c[_0xa3a8('0x3d')]),_0x10b082);if(_0x17f3c3[_0xa3a8('0x35')][_0xa3a8('0x3f')]){_0x333292[_0xa3a8('0x3c')]=_[_0xa3a8('0x40')](_0x333292[_0xa3a8('0x3c')],{'$or':_[_0xa3a8('0x2f')](_0x10b082,function(_0x59cbfc){if(_0x59cbfc[_0xa3a8('0x32')]!==_0xa3a8('0x41')){var _0x360940={};_0x360940[_0x59cbfc[_0xa3a8('0x2c')]]={'$like':'%'+_0x17f3c3[_0xa3a8('0x35')][_0xa3a8('0x3f')]+'%'};return _0x360940;}})});}_0x333292=_[_0xa3a8('0x40')]({},_0x333292,_0x17f3c3[_0xa3a8('0x42')]);var _0x23c941={'where':_0x333292['where']};return db['SquareDetailsReport'][_0xa3a8('0x21')](_0x23c941)['then'](function(_0x52790a){_0x322474['count']=_0x52790a;if(_0x17f3c3[_0xa3a8('0x35')][_0xa3a8('0x43')]){_0x333292[_0xa3a8('0x44')]=[{'all':!![]}];}return db['SquareDetailsReport'][_0xa3a8('0x45')](_0x333292);})[_0xa3a8('0x29')](function(_0x1d1727){_0x322474['rows']=_0x1d1727;return _0x322474;})[_0xa3a8('0x29')](respondWithFilteredResult(_0x1f3a91,_0x333292))[_0xa3a8('0x46')](handleError(_0x1f3a91,null));};exports[_0xa3a8('0x47')]=function(_0xe6cfec,_0x24087b){var _0x36487f={'raw':!![],'where':{'id':_0xe6cfec[_0xa3a8('0x48')]['id']}},_0x5ce2f2={};_0x5ce2f2[_0xa3a8('0x34')]=_[_0xa3a8('0x49')](db[_0xa3a8('0x4a')][_0xa3a8('0x30')]);_0x5ce2f2[_0xa3a8('0x35')]=_[_0xa3a8('0x49')](_0xe6cfec['query']);_0x5ce2f2[_0xa3a8('0x3d')]=_[_0xa3a8('0x36')](_0x5ce2f2[_0xa3a8('0x34')],_0x5ce2f2['query']);_0x36487f['attributes']=_[_0xa3a8('0x36')](_0x5ce2f2[_0xa3a8('0x34')],qs[_0xa3a8('0x38')](_0xe6cfec[_0xa3a8('0x35')]['fields']));_0x36487f[_0xa3a8('0x37')]=_0x36487f[_0xa3a8('0x37')][_0xa3a8('0x4b')]?_0x36487f[_0xa3a8('0x37')]:_0x5ce2f2['model'];if(_0xe6cfec['query'][_0xa3a8('0x43')]){_0x36487f[_0xa3a8('0x44')]=[{'all':!![]}];}_0x36487f=_[_0xa3a8('0x40')]({},_0x36487f,_0xe6cfec[_0xa3a8('0x42')]);return db[_0xa3a8('0x4a')][_0xa3a8('0x4c')](_0x36487f)['then'](handleEntityNotFound(_0x24087b,null))[_0xa3a8('0x29')](respondWithResult(_0x24087b,null))[_0xa3a8('0x46')](handleError(_0x24087b,null));};exports[_0xa3a8('0x4d')]=function(_0x2ca4a1,_0x170666){return db[_0xa3a8('0x4a')][_0xa3a8('0x4d')](_0x2ca4a1[_0xa3a8('0x4e')],{})[_0xa3a8('0x29')](respondWithResult(_0x170666,0xc9))[_0xa3a8('0x46')](handleError(_0x170666,null));};exports[_0xa3a8('0x28')]=function(_0x549bf1,_0x1694ad){if(_0x549bf1[_0xa3a8('0x4e')]['id']){delete _0x549bf1[_0xa3a8('0x4e')]['id'];}return db[_0xa3a8('0x4a')][_0xa3a8('0x4c')]({'where':{'id':_0x549bf1['params']['id']}})[_0xa3a8('0x29')](handleEntityNotFound(_0x1694ad,null))[_0xa3a8('0x29')](saveUpdates(_0x549bf1[_0xa3a8('0x4e')],null))[_0xa3a8('0x29')](respondWithResult(_0x1694ad,null))[_0xa3a8('0x46')](handleError(_0x1694ad,null));};exports['destroy']=function(_0x472e6f,_0xe99ab6){return db[_0xa3a8('0x4a')][_0xa3a8('0x4c')]({'where':{'id':_0x472e6f[_0xa3a8('0x48')]['id']}})['then'](handleEntityNotFound(_0xe99ab6,null))[_0xa3a8('0x29')](removeEntity(_0xe99ab6,null))['catch'](handleError(_0xe99ab6,null));};exports['describe']=function(_0xaf7f1c,_0x14d331){return db['SquareDetailsReport'][_0xa3a8('0x4f')]()[_0xa3a8('0x29')](respondWithResult(_0x14d331,null))[_0xa3a8('0x46')](handleError(_0x14d331,null));};
\ No newline at end of file
index 27d4291..4dbc67e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x848f=['moment','bluebird','request-promise','rimraf','exports','define','SquareDetailsReport','report_square_details','util'];(function(_0x20aadb,_0x5a607a){var _0x520018=function(_0x1d258a){while(--_0x1d258a){_0x20aadb['push'](_0x20aadb['shift']());}};_0x520018(++_0x5a607a);}(_0x848f,0xc5));var _0xf848=function(_0x25be56,_0x27f880){_0x25be56=_0x25be56-0x0;var _0x136ffb=_0x848f[_0x25be56];return _0x136ffb;};'use strict';var _=require('lodash');var util=require(_0xf848('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0xf848('0x1'));var BPromise=require(_0xf848('0x2'));var rp=require(_0xf848('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0xf848('0x4'));var config=require('../../config/environment');var attributes=require('./squareReportDetail.attributes');module[_0xf848('0x5')]=function(_0x522886,_0x41ea1d){return _0x522886[_0xf848('0x6')](_0xf848('0x7'),attributes,{'tableName':_0xf848('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x068b=['util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./squareReportDetail.attributes','define','SquareDetailsReport','report_square_details','lodash'];(function(_0x4c9b5c,_0x2295d5){var _0x5ddb8f=function(_0x5e27d4){while(--_0x5e27d4){_0x4c9b5c['push'](_0x4c9b5c['shift']());}};_0x5ddb8f(++_0x2295d5);}(_0x068b,0x1e0));var _0xb068=function(_0x24b258,_0x546e03){_0x24b258=_0x24b258-0x0;var _0x401529=_0x068b[_0x24b258];return _0x401529;};'use strict';var _=require(_0xb068('0x0'));var util=require(_0xb068('0x1'));var logger=require(_0xb068('0x2'))('api');var moment=require(_0xb068('0x3'));var BPromise=require(_0xb068('0x4'));var rp=require(_0xb068('0x5'));var fs=require('fs');var path=require(_0xb068('0x6'));var rimraf=require(_0xb068('0x7'));var config=require(_0xb068('0x8'));var attributes=require(_0xb068('0x9'));module['exports']=function(_0x46775c,_0x405e35){return _0x46775c[_0xb068('0xa')](_0xb068('0xb'),attributes,{'tableName':_0xb068('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index bf4a38e..0ca85bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde9f=['../../config/environment','jayson/promise','client','request','then','info','SquareDetailsReport,\x20%s,\x20%s','request\x20sent','debug','SquareDetailsReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','SquareDetailsReport','options','raw','CreateSquareDetailsReport','catch','lodash','bluebird','randomstring','../../mysqldb','../../config/utils','rpc'];(function(_0x3f8ba3,_0x4fe833){var _0x1c2e73=function(_0x2aeacf){while(--_0x2aeacf){_0x3f8ba3['push'](_0x3f8ba3['shift']());}};_0x1c2e73(++_0x4fe833);}(_0xde9f,0x118));var _0xfde9=function(_0x51b661,_0x566ef8){_0x51b661=_0x51b661-0x0;var _0x5d1971=_0xde9f[_0x51b661];return _0x5d1971;};'use strict';var _=require(_0xfde9('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xfde9('0x1'));var rs=require(_0xfde9('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xfde9('0x3'))['db'];var utils=require(_0xfde9('0x4'));var logger=require('../../config/logger')(_0xfde9('0x5'));var config=require(_0xfde9('0x6'));var jayson=require(_0xfde9('0x7'));var client=jayson[_0xfde9('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4c3e01,_0x179ee0,_0x18a202){return new BPromise(function(_0x5569c2,_0x19a337){return client[_0xfde9('0x9')](_0x4c3e01,_0x18a202)[_0xfde9('0xa')](function(_0x3b775d){logger[_0xfde9('0xb')](_0xfde9('0xc'),_0x179ee0,_0xfde9('0xd'));logger[_0xfde9('0xe')](_0xfde9('0xf'),_0x179ee0,_0xfde9('0xd'),JSON[_0xfde9('0x10')](_0x3b775d));if(_0x3b775d[_0xfde9('0x11')]){if(_0x3b775d[_0xfde9('0x11')][_0xfde9('0x12')]===0x1f4){logger['error']('SquareDetailsReport,\x20%s,\x20%s',_0x179ee0,_0x3b775d[_0xfde9('0x11')][_0xfde9('0x13')]);return _0x19a337(_0x3b775d[_0xfde9('0x11')][_0xfde9('0x13')]);}logger['error']('SquareDetailsReport,\x20%s,\x20%s',_0x179ee0,_0x3b775d[_0xfde9('0x11')][_0xfde9('0x13')]);return _0x5569c2(_0x3b775d[_0xfde9('0x11')][_0xfde9('0x13')]);}else{logger[_0xfde9('0xb')]('SquareDetailsReport,\x20%s,\x20%s',_0x179ee0,_0xfde9('0xd'));_0x5569c2(_0x3b775d[_0xfde9('0x14')][_0xfde9('0x13')]);}})['catch'](function(_0x31b1c7){logger[_0xfde9('0x11')](_0xfde9('0xc'),_0x179ee0,_0x31b1c7);_0x19a337(_0x31b1c7);});});}exports['CreateSquareDetailsReport']=function(_0x4c9f24){var _0x5eb89e=this;return new Promise(function(_0x544f19,_0x166f1c){return db[_0xfde9('0x15')]['create'](_0x4c9f24['body'],{'raw':_0x4c9f24[_0xfde9('0x16')]?_0x4c9f24[_0xfde9('0x16')][_0xfde9('0x17')]===undefined?!![]:![]:!![]})[_0xfde9('0xa')](function(_0x162b07){logger[_0xfde9('0xb')](_0xfde9('0x18'),_0x4c9f24);logger[_0xfde9('0xe')](_0xfde9('0x18'),_0x4c9f24,JSON[_0xfde9('0x10')](_0x162b07));_0x544f19(_0x162b07);})[_0xfde9('0x19')](function(_0x28d189){logger['error'](_0xfde9('0x18'),_0x28d189['message'],_0x4c9f24);_0x166f1c(_0x5eb89e[_0xfde9('0x11')](0x1f4,_0x28d189[_0xfde9('0x13')]));});});};
\ No newline at end of file
+var _0x1c7c=['ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','SquareDetailsReport,\x20%s,\x20%s','debug','SquareDetailsReport,\x20%s,\x20%s,\x20%s','stringify','error','message','request\x20sent','result','catch','CreateSquareDetailsReport','SquareDetailsReport','create','body','options','raw','lodash','util','moment','bluebird'];(function(_0x56482c,_0x16118d){var _0x5aae7a=function(_0x52512f){while(--_0x52512f){_0x56482c['push'](_0x56482c['shift']());}};_0x5aae7a(++_0x16118d);}(_0x1c7c,0x164));var _0xc1c7=function(_0x19ed19,_0x1b122e){_0x19ed19=_0x19ed19-0x0;var _0x4fe51b=_0x1c7c[_0x19ed19];return _0x4fe51b;};'use strict';var _=require(_0xc1c7('0x0'));var util=require(_0xc1c7('0x1'));var moment=require(_0xc1c7('0x2'));var BPromise=require(_0xc1c7('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc1c7('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xc1c7('0x5'));var logger=require(_0xc1c7('0x6'))(_0xc1c7('0x7'));var config=require(_0xc1c7('0x8'));var jayson=require(_0xc1c7('0x9'));var client=jayson[_0xc1c7('0xa')][_0xc1c7('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x419138,_0xce5bcd,_0x3b3e9c){return new BPromise(function(_0x434a35,_0x11c7ef){return client[_0xc1c7('0xc')](_0x419138,_0x3b3e9c)[_0xc1c7('0xd')](function(_0x339649){logger[_0xc1c7('0xe')](_0xc1c7('0xf'),_0xce5bcd,'request\x20sent');logger[_0xc1c7('0x10')](_0xc1c7('0x11'),_0xce5bcd,'request\x20sent',JSON[_0xc1c7('0x12')](_0x339649));if(_0x339649[_0xc1c7('0x13')]){if(_0x339649[_0xc1c7('0x13')]['code']===0x1f4){logger[_0xc1c7('0x13')](_0xc1c7('0xf'),_0xce5bcd,_0x339649[_0xc1c7('0x13')][_0xc1c7('0x14')]);return _0x11c7ef(_0x339649[_0xc1c7('0x13')][_0xc1c7('0x14')]);}logger[_0xc1c7('0x13')](_0xc1c7('0xf'),_0xce5bcd,_0x339649[_0xc1c7('0x13')][_0xc1c7('0x14')]);return _0x434a35(_0x339649[_0xc1c7('0x13')][_0xc1c7('0x14')]);}else{logger['info'](_0xc1c7('0xf'),_0xce5bcd,_0xc1c7('0x15'));_0x434a35(_0x339649[_0xc1c7('0x16')]['message']);}})[_0xc1c7('0x17')](function(_0x3939c1){logger[_0xc1c7('0x13')](_0xc1c7('0xf'),_0xce5bcd,_0x3939c1);_0x11c7ef(_0x3939c1);});});}exports[_0xc1c7('0x18')]=function(_0xb42702){var _0x21758a=this;return new Promise(function(_0x2e93e5,_0x5d44e9){return db[_0xc1c7('0x19')][_0xc1c7('0x1a')](_0xb42702[_0xc1c7('0x1b')],{'raw':_0xb42702[_0xc1c7('0x1c')]?_0xb42702['options'][_0xc1c7('0x1d')]===undefined?!![]:![]:!![]})['then'](function(_0x5e7e4a){logger[_0xc1c7('0xe')]('CreateSquareDetailsReport',_0xb42702);logger['debug'](_0xc1c7('0x18'),_0xb42702,JSON[_0xc1c7('0x12')](_0x5e7e4a));_0x2e93e5(_0x5e7e4a);})[_0xc1c7('0x17')](function(_0x4c6b34){logger[_0xc1c7('0x13')](_0xc1c7('0x18'),_0x4c6b34[_0xc1c7('0x14')],_0xb42702);_0x5d44e9(_0x21758a[_0xc1c7('0x13')](0x1f4,_0x4c6b34[_0xc1c7('0x14')]));});});};
\ No newline at end of file
index 0ae4f95..59613f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7cfe=['/process/:pid/kill','isAuthenticated','exports','express','Router','../../components/auth/service','get','index'];(function(_0x55453b,_0x6ffc60){var _0x3f22a8=function(_0x2118ba){while(--_0x2118ba){_0x55453b['push'](_0x55453b['shift']());}};_0x3f22a8(++_0x6ffc60);}(_0x7cfe,0x123));var _0xe7cf=function(_0x39d8f5,_0x1111d5){_0x39d8f5=_0x39d8f5-0x0;var _0x550410=_0x7cfe[_0x39d8f5];return _0x550410;};'use strict';var express=require(_0xe7cf('0x0'));var router=express[_0xe7cf('0x1')]();var auth=require(_0xe7cf('0x2'));var controller=require('./system.controller');router[_0xe7cf('0x3')]('/',auth['isAuthenticated'](),controller[_0xe7cf('0x4')]);router[_0xe7cf('0x3')](_0xe7cf('0x5'),auth[_0xe7cf('0x6')](),controller['killProcess']);module[_0xe7cf('0x7')]=router;
\ No newline at end of file
+var _0x1172=['index','killProcess','exports','express','Router','../../components/auth/service','isAuthenticated'];(function(_0x1fc01f,_0x142eb3){var _0x4e637f=function(_0x3ddc77){while(--_0x3ddc77){_0x1fc01f['push'](_0x1fc01f['shift']());}};_0x4e637f(++_0x142eb3);}(_0x1172,0xd5));var _0x2117=function(_0x3b7157,_0x1685d2){_0x3b7157=_0x3b7157-0x0;var _0x5c0b90=_0x1172[_0x3b7157];return _0x5c0b90;};'use strict';var express=require(_0x2117('0x0'));var router=express[_0x2117('0x1')]();var auth=require(_0x2117('0x2'));var controller=require('./system.controller');router['get']('/',auth[_0x2117('0x3')](),controller[_0x2117('0x4')]);router['get']('/process/:pid/kill',auth['isAuthenticated'](),controller[_0x2117('0x5')]);module[_0x2117('0x6')]=router;
\ No newline at end of file
index bd1248a..c712673 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd3b=['child_process','exec','../../config/logger','util','bluebird','lodash','error','<%-\x20name\x20%>,\x20%s,\x20%s,\x20%s','inspect','name','status','index','getAllData','then','json','catch','format','params','pid','split','length','kill','SIGINT','Process\x20with\x20pid\x20%s\x20killed\x20correctly','systeminformation'];(function(_0x2c1d17,_0x58fa72){var _0x50107f=function(_0x3a3982){while(--_0x3a3982){_0x2c1d17['push'](_0x2c1d17['shift']());}};_0x50107f(++_0x58fa72);}(_0xcd3b,0x1da));var _0xbcd3=function(_0x1cc206,_0x297eec){_0x1cc206=_0x1cc206-0x0;var _0x333819=_0xcd3b[_0x1cc206];return _0x333819;};'use strict';var info=require(_0xbcd3('0x0'));var exec=require(_0xbcd3('0x1'))[_0xbcd3('0x2')];var logger=require(_0xbcd3('0x3'))('api');var util=require(_0xbcd3('0x4'));var BPromise=require(_0xbcd3('0x5'));var _=require(_0xbcd3('0x6'));function handleError(_0x1c7a97,_0x579cfe,_0x2586fa){_0x579cfe=_0x579cfe||0x1f4;return function(_0x5f4278){logger[_0xbcd3('0x7')](_0xbcd3('0x8'),_0x2586fa,_0x579cfe,util[_0xbcd3('0x9')](_0x5f4278,{'showHidden':![],'depth':null}));delete _0x5f4278[_0xbcd3('0xa')];_0x1c7a97[_0xbcd3('0xb')](_0x579cfe)['send'](_0x5f4278);};}exports[_0xbcd3('0xc')]=function(_0x21d175,_0xd7f106){return info[_0xbcd3('0xd')]()[_0xbcd3('0xe')](function(_0x8f5d9f){return _0xd7f106[_0xbcd3('0xb')](0xc8)[_0xbcd3('0xf')](_0x8f5d9f);})[_0xbcd3('0x10')](function(_0x41bcc8){return _0xd7f106[_0xbcd3('0xb')](0x1f4)[_0xbcd3('0xf')](_0x41bcc8);});};exports['killProcess']=function(_0x38f7b3,_0x2a8efd){var _0x47b146=['components/import/cm'];return new BPromise(function(_0x16d592,_0x3b2906){return exec(util[_0xbcd3('0x11')]('ps\x20-p\x20%s\x20-ww\x20-o\x20args',_0x38f7b3[_0xbcd3('0x12')][_0xbcd3('0x13')]),function(_0xb09780,_0x1d0a25,_0x247d35){if(_0xb09780){return _0x3b2906(_0xb09780);}return _0x16d592(_0x1d0a25);});})[_0xbcd3('0xe')](function(_0x1e0f7c){var _0x3f08e2=![];var _0x5e595b=_0x1e0f7c[_0xbcd3('0x14')](/\n/);for(var _0x3f2477=0x0,_0x61a8ee=_0x47b146[_0xbcd3('0x15')];_0x3f2477<_0x61a8ee,_0x3f08e2===![];_0x3f2477+=0x1){if(_0x1e0f7c['indexOf'](_0x47b146[_0x3f2477])>=0x0){_0x3f08e2=!![];}}if(!_0x3f08e2){throw new Error(util['format']('Process\x20with\x20pid\x20%s\x20not\x20found!',_0x38f7b3[_0xbcd3('0x12')][_0xbcd3('0x13')]));}process[_0xbcd3('0x16')](_0x38f7b3[_0xbcd3('0x12')]['pid'],_0xbcd3('0x17'));return _0x2a8efd[_0xbcd3('0xb')](0xc8)[_0xbcd3('0xf')]({'message':util[_0xbcd3('0x11')](_0xbcd3('0x18'),_0x38f7b3[_0xbcd3('0x12')][_0xbcd3('0x13')])});})[_0xbcd3('0x10')](handleError(_0x2a8efd,null,'killProcess'));};
\ No newline at end of file
+var _0xfa7b=['inspect','name','status','send','index','getAllData','catch','json','killProcess','components/import/cm','format','ps\x20-p\x20%s\x20-ww\x20-o\x20args','params','pid','split','length','Process\x20with\x20pid\x20%s\x20not\x20found!','kill','SIGINT','Process\x20with\x20pid\x20%s\x20killed\x20correctly','exec','../../config/logger','api','util','bluebird','error'];(function(_0x2d3728,_0x4c05b2){var _0x13bac3=function(_0x3db693){while(--_0x3db693){_0x2d3728['push'](_0x2d3728['shift']());}};_0x13bac3(++_0x4c05b2);}(_0xfa7b,0xb0));var _0xbfa7=function(_0x1c60ab,_0x30a8ea){_0x1c60ab=_0x1c60ab-0x0;var _0x12ab53=_0xfa7b[_0x1c60ab];return _0x12ab53;};'use strict';var info=require('systeminformation');var exec=require('child_process')[_0xbfa7('0x0')];var logger=require(_0xbfa7('0x1'))(_0xbfa7('0x2'));var util=require(_0xbfa7('0x3'));var BPromise=require(_0xbfa7('0x4'));var _=require('lodash');function handleError(_0x92c8c1,_0x1ee360,_0x38551c){_0x1ee360=_0x1ee360||0x1f4;return function(_0x3da35f){logger[_0xbfa7('0x5')]('<%-\x20name\x20%>,\x20%s,\x20%s,\x20%s',_0x38551c,_0x1ee360,util[_0xbfa7('0x6')](_0x3da35f,{'showHidden':![],'depth':null}));delete _0x3da35f[_0xbfa7('0x7')];_0x92c8c1[_0xbfa7('0x8')](_0x1ee360)[_0xbfa7('0x9')](_0x3da35f);};}exports[_0xbfa7('0xa')]=function(_0x31d183,_0x5c9bc7){return info[_0xbfa7('0xb')]()['then'](function(_0x5c44fa){return _0x5c9bc7[_0xbfa7('0x8')](0xc8)['json'](_0x5c44fa);})[_0xbfa7('0xc')](function(_0x13bbe9){return _0x5c9bc7['status'](0x1f4)[_0xbfa7('0xd')](_0x13bbe9);});};exports[_0xbfa7('0xe')]=function(_0x439792,_0x59af80){var _0x16ccf0=[_0xbfa7('0xf')];return new BPromise(function(_0x473b45,_0x32bdef){return exec(util[_0xbfa7('0x10')](_0xbfa7('0x11'),_0x439792[_0xbfa7('0x12')][_0xbfa7('0x13')]),function(_0x95d76d,_0x147b62,_0x2293c0){if(_0x95d76d){return _0x32bdef(_0x95d76d);}return _0x473b45(_0x147b62);});})['then'](function(_0x157c19){var _0x4bbee3=![];var _0x5d093b=_0x157c19[_0xbfa7('0x14')](/\n/);for(var _0x5374fc=0x0,_0x4a8ca5=_0x16ccf0[_0xbfa7('0x15')];_0x5374fc<_0x4a8ca5,_0x4bbee3===![];_0x5374fc+=0x1){if(_0x157c19['indexOf'](_0x16ccf0[_0x5374fc])>=0x0){_0x4bbee3=!![];}}if(!_0x4bbee3){throw new Error(util[_0xbfa7('0x10')](_0xbfa7('0x16'),_0x439792['params'][_0xbfa7('0x13')]));}process[_0xbfa7('0x17')](_0x439792[_0xbfa7('0x12')][_0xbfa7('0x13')],_0xbfa7('0x18'));return _0x59af80[_0xbfa7('0x8')](0xc8)[_0xbfa7('0xd')]({'message':util[_0xbfa7('0x10')](_0xbfa7('0x19'),_0x439792[_0xbfa7('0x12')]['pid'])});})['catch'](handleError(_0x59af80,null,_0xbfa7('0xe')));};
\ No newline at end of file
index 1e108b4..6409978 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c76=['isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get'];(function(_0x4f5a83,_0x16b3a9){var _0x39640b=function(_0x30af70){while(--_0x30af70){_0x4f5a83['push'](_0x4f5a83['shift']());}};_0x39640b(++_0x16b3a9);}(_0x1c76,0x107));var _0x61c7=function(_0x201a73,_0x443bf4){_0x201a73=_0x201a73-0x0;var _0x452417=_0x1c76[_0x201a73];return _0x452417;};'use strict';var multer=require(_0x61c7('0x0'));var util=require(_0x61c7('0x1'));var path=require(_0x61c7('0x2'));var timeout=require(_0x61c7('0x3'));var express=require(_0x61c7('0x4'));var router=express[_0x61c7('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x61c7('0x6'));var interaction=require(_0x61c7('0x7'));var config=require(_0x61c7('0x8'));var controller=require('./tag.controller');router[_0x61c7('0x9')]('/',auth[_0x61c7('0xa')](),controller[_0x61c7('0xb')]);router[_0x61c7('0x9')](_0x61c7('0xc'),auth[_0x61c7('0xa')](),controller[_0x61c7('0xd')]);router[_0x61c7('0xe')]('/',auth[_0x61c7('0xa')](),controller[_0x61c7('0xf')]);router[_0x61c7('0x10')](_0x61c7('0xc'),auth['isAuthenticated'](),controller[_0x61c7('0x11')]);router[_0x61c7('0x12')](_0x61c7('0xc'),auth[_0x61c7('0xa')](),controller[_0x61c7('0x13')]);module[_0x61c7('0x14')]=router;
\ No newline at end of file
+var _0x38f2=['exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./tag.controller','get','index','/:id','isAuthenticated','show','post','create','put','update','destroy'];(function(_0x4e0784,_0x3a424b){var _0x2cd4df=function(_0x21b39a){while(--_0x21b39a){_0x4e0784['push'](_0x4e0784['shift']());}};_0x2cd4df(++_0x3a424b);}(_0x38f2,0xbe));var _0x238f=function(_0x509210,_0x1d3af8){_0x509210=_0x509210-0x0;var _0x3c3b06=_0x38f2[_0x509210];return _0x3c3b06;};'use strict';var multer=require(_0x238f('0x0'));var util=require(_0x238f('0x1'));var path=require(_0x238f('0x2'));var timeout=require('connect-timeout');var express=require(_0x238f('0x3'));var router=express[_0x238f('0x4')]();var fs_extra=require(_0x238f('0x5'));var auth=require(_0x238f('0x6'));var interaction=require(_0x238f('0x7'));var config=require(_0x238f('0x8'));var controller=require(_0x238f('0x9'));router[_0x238f('0xa')]('/',auth['isAuthenticated'](),controller[_0x238f('0xb')]);router['get'](_0x238f('0xc'),auth[_0x238f('0xd')](),controller[_0x238f('0xe')]);router[_0x238f('0xf')]('/',auth[_0x238f('0xd')](),controller[_0x238f('0x10')]);router[_0x238f('0x11')](_0x238f('0xc'),auth[_0x238f('0xd')](),controller[_0x238f('0x12')]);router['delete'](_0x238f('0xc'),auth[_0x238f('0xd')](),controller[_0x238f('0x13')]);module[_0x238f('0x14')]=router;
\ No newline at end of file
index 1616dd9..b2822f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe605=['#0091EA','sequelize','exports','name','STRING'];(function(_0xf273f9,_0x486198){var _0xb4abcc=function(_0x2f9418){while(--_0x2f9418){_0xf273f9['push'](_0xf273f9['shift']());}};_0xb4abcc(++_0x486198);}(_0xe605,0x92));var _0x5e60=function(_0x104a5e,_0x44981f){_0x104a5e=_0x104a5e-0x0;var _0x2e3693=_0xe605[_0x104a5e];return _0x2e3693;};'use strict';var Sequelize=require(_0x5e60('0x0'));module[_0x5e60('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x5e60('0x2'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'color':{'type':Sequelize[_0x5e60('0x3')],'defaultValue':_0x5e60('0x4')},'description':{'type':Sequelize[_0x5e60('0x3')]}};
\ No newline at end of file
+var _0x4fad=['exports','STRING','#0091EA','sequelize'];(function(_0x616290,_0x280b7f){var _0x453879=function(_0x27bda7){while(--_0x27bda7){_0x616290['push'](_0x616290['shift']());}};_0x453879(++_0x280b7f);}(_0x4fad,0xcb));var _0xd4fa=function(_0x4f03f9,_0xfe4dbb){_0x4f03f9=_0x4f03f9-0x0;var _0x990719=_0x4fad[_0x4f03f9];return _0x990719;};'use strict';var Sequelize=require(_0xd4fa('0x0'));module[_0xd4fa('0x1')]={'name':{'type':Sequelize[_0xd4fa('0x2')],'unique':'name','allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'color':{'type':Sequelize[_0xd4fa('0x2')],'defaultValue':_0xd4fa('0x3')},'description':{'type':Sequelize[_0xd4fa('0x2')]}};
\ No newline at end of file
index f74b602..68ddf60 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf93=['sort','where','filters','filter','merge','map','options','includeAll','include','findAll','rows','catch','show','params','keys','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','eml-format','rimraf','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','jsforce','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined','limit','count','set','apply','reject','then','get','Tags','UserProfileResource','destroy','end','sendStatus','stack','name','index','Tag','rawAttributes','type','key','model','query','intersection','attributes','fields','length','nolimit'];(function(_0x42fee0,_0x49a55d){var _0x2ebd12=function(_0x44bee6){while(--_0x44bee6){_0x42fee0['push'](_0x42fee0['shift']());}};_0x2ebd12(++_0x49a55d);}(_0xaf93,0x151));var _0x3af9=function(_0x16859e,_0x4c61d0){_0x16859e=_0x16859e-0x0;var _0x49021f=_0xaf93[_0x16859e];return _0x49021f;};'use strict';var emlformat=require(_0x3af9('0x0'));var rimraf=require(_0x3af9('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x3af9('0x2'));var moment=require(_0x3af9('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x3af9('0x4'));var util=require(_0x3af9('0x5'));var path=require(_0x3af9('0x6'));var sox=require(_0x3af9('0x7'));var csv=require(_0x3af9('0x8'));var ejs=require(_0x3af9('0x9'));var fs=require('fs');var fs_extra=require(_0x3af9('0xa'));var _=require('lodash');var squel=require(_0x3af9('0xb'));var crypto=require('crypto');var jsforce=require(_0x3af9('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x3af9('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x3af9('0xe'));var qs=require(_0x3af9('0xf'));var as=require(_0x3af9('0x10'));var hardwareService=require(_0x3af9('0x11'));var logger=require('../../config/logger')(_0x3af9('0x12'));var utils=require(_0x3af9('0x13'));var config=require(_0x3af9('0x14'));var licenseUtil=require(_0x3af9('0x15'));var db=require(_0x3af9('0x16'))['db'];function respondWithStatusCode(_0xfa1410,_0x212f63){_0x212f63=_0x212f63||0xcc;return function(_0xa7b81f){if(_0xa7b81f){return _0xfa1410['sendStatus'](_0x212f63);}return _0xfa1410[_0x3af9('0x17')](_0x212f63)['end']();};}function respondWithResult(_0x152254,_0x222b6f){_0x222b6f=_0x222b6f||0xc8;return function(_0x1e4ebb){if(_0x1e4ebb){return _0x152254['status'](_0x222b6f)[_0x3af9('0x18')](_0x1e4ebb);}};}function respondWithFilteredResult(_0x1088fc,_0x37cb8b){return function(_0x4b2845){if(_0x4b2845){var _0x278e80=typeof _0x37cb8b[_0x3af9('0x19')]===_0x3af9('0x1a')&&typeof _0x37cb8b[_0x3af9('0x1b')]==='undefined';var _0x1d3410=_0x4b2845[_0x3af9('0x1c')];var _0x298135=_0x278e80?0x0:_0x37cb8b[_0x3af9('0x19')];var _0x314df2=_0x278e80?_0x4b2845['count']:_0x37cb8b[_0x3af9('0x19')]+_0x37cb8b[_0x3af9('0x1b')];var _0x1f9214;if(_0x314df2>=_0x1d3410){_0x314df2=_0x1d3410;_0x1f9214=0xc8;}else{_0x1f9214=0xce;}_0x1088fc[_0x3af9('0x17')](_0x1f9214);return _0x1088fc[_0x3af9('0x1d')]('Content-Range',_0x298135+'-'+_0x314df2+'/'+_0x1d3410)[_0x3af9('0x18')](_0x4b2845);}return null;};}function patchUpdates(_0x34eb91){return function(_0x449349){try{jsonpatch[_0x3af9('0x1e')](_0x449349,_0x34eb91,!![]);}catch(_0x3c1793){return BPromise[_0x3af9('0x1f')](_0x3c1793);}return _0x449349['save']();};}function saveUpdates(_0x4a88ea,_0x505e25){return function(_0x5e24e3){if(_0x5e24e3){return _0x5e24e3['update'](_0x4a88ea)[_0x3af9('0x20')](function(_0x5c1c8f){return _0x5c1c8f;});}return null;};}function removeEntity(_0x74c872,_0x307f9d){return function(_0x4b5a5c){if(_0x4b5a5c){return _0x4b5a5c['destroy']()['then'](function(){var _0x119e85=_0x4b5a5c[_0x3af9('0x21')]({'plain':!![]});var _0x22965b=_0x3af9('0x22');return db[_0x3af9('0x23')][_0x3af9('0x24')]({'where':{'type':_0x22965b,'resourceId':_0x119e85['id']}})[_0x3af9('0x20')](function(){return _0x4b5a5c;});})[_0x3af9('0x20')](function(){_0x74c872['status'](0xcc)[_0x3af9('0x25')]();});}};}function handleEntityNotFound(_0x574b71,_0x485754){return function(_0x177650){if(!_0x177650){_0x574b71[_0x3af9('0x26')](0x194);}return _0x177650;};}function handleError(_0x19643f,_0xf8840){_0xf8840=_0xf8840||0x1f4;return function(_0x374382){logger['error'](_0x374382[_0x3af9('0x27')]);if(_0x374382[_0x3af9('0x28')]){delete _0x374382[_0x3af9('0x28')];}_0x19643f['status'](_0xf8840)['send'](_0x374382);};}exports[_0x3af9('0x29')]=function(_0x1d022d,_0x8867c6){var _0x540969={},_0x4186d5={},_0x115673={'count':0x0,'rows':[]};var _0x1c923d=_['map'](db[_0x3af9('0x2a')][_0x3af9('0x2b')],function(_0x407572){return{'name':_0x407572['fieldName'],'type':_0x407572[_0x3af9('0x2c')][_0x3af9('0x2d')]};});_0x4186d5[_0x3af9('0x2e')]=_['map'](_0x1c923d,_0x3af9('0x28'));_0x4186d5[_0x3af9('0x2f')]=_['keys'](_0x1d022d[_0x3af9('0x2f')]);_0x4186d5['filters']=_[_0x3af9('0x30')](_0x4186d5['model'],_0x4186d5['query']);_0x540969[_0x3af9('0x31')]=_['intersection'](_0x4186d5[_0x3af9('0x2e')],qs[_0x3af9('0x32')](_0x1d022d[_0x3af9('0x2f')]['fields']));_0x540969['attributes']=_0x540969[_0x3af9('0x31')][_0x3af9('0x33')]?_0x540969['attributes']:_0x4186d5['model'];if(!_0x1d022d[_0x3af9('0x2f')]['hasOwnProperty'](_0x3af9('0x34'))){_0x540969[_0x3af9('0x1b')]=qs['limit'](_0x1d022d['query'][_0x3af9('0x1b')]);_0x540969[_0x3af9('0x19')]=qs[_0x3af9('0x19')](_0x1d022d[_0x3af9('0x2f')][_0x3af9('0x19')]);}_0x540969['order']=qs['sort'](_0x1d022d[_0x3af9('0x2f')][_0x3af9('0x35')]);_0x540969[_0x3af9('0x36')]=qs[_0x3af9('0x37')](_['pick'](_0x1d022d['query'],_0x4186d5[_0x3af9('0x37')]),_0x1c923d);if(_0x1d022d[_0x3af9('0x2f')][_0x3af9('0x38')]){_0x540969['where']=_[_0x3af9('0x39')](_0x540969[_0x3af9('0x36')],{'$or':_[_0x3af9('0x3a')](_0x1c923d,function(_0x576c86){if(_0x576c86[_0x3af9('0x2c')]!=='VIRTUAL'){var _0x1f3ac9={};_0x1f3ac9[_0x576c86[_0x3af9('0x28')]]={'$like':'%'+_0x1d022d[_0x3af9('0x2f')][_0x3af9('0x38')]+'%'};return _0x1f3ac9;}})});}_0x540969=_[_0x3af9('0x39')]({},_0x540969,_0x1d022d[_0x3af9('0x3b')]);var _0x43fd62={'where':_0x540969[_0x3af9('0x36')]};return db[_0x3af9('0x2a')][_0x3af9('0x1c')](_0x43fd62)[_0x3af9('0x20')](function(_0x4d7bd4){_0x115673[_0x3af9('0x1c')]=_0x4d7bd4;if(_0x1d022d[_0x3af9('0x2f')][_0x3af9('0x3c')]){_0x540969[_0x3af9('0x3d')]=[{'all':!![]}];}return db[_0x3af9('0x2a')][_0x3af9('0x3e')](_0x540969);})[_0x3af9('0x20')](function(_0x384a61){_0x115673[_0x3af9('0x3f')]=_0x384a61;return _0x115673;})[_0x3af9('0x20')](respondWithFilteredResult(_0x8867c6,_0x540969))[_0x3af9('0x40')](handleError(_0x8867c6,null));};exports[_0x3af9('0x41')]=function(_0x549274,_0x542580){var _0x461dd6={'raw':!![],'where':{'id':_0x549274[_0x3af9('0x42')]['id']}},_0x1daea4={};_0x1daea4[_0x3af9('0x2e')]=_[_0x3af9('0x43')](db[_0x3af9('0x2a')][_0x3af9('0x2b')]);_0x1daea4[_0x3af9('0x2f')]=_[_0x3af9('0x43')](_0x549274[_0x3af9('0x2f')]);_0x1daea4[_0x3af9('0x37')]=_[_0x3af9('0x30')](_0x1daea4[_0x3af9('0x2e')],_0x1daea4['query']);_0x461dd6[_0x3af9('0x31')]=_[_0x3af9('0x30')](_0x1daea4[_0x3af9('0x2e')],qs[_0x3af9('0x32')](_0x549274['query']['fields']));_0x461dd6[_0x3af9('0x31')]=_0x461dd6['attributes'][_0x3af9('0x33')]?_0x461dd6[_0x3af9('0x31')]:_0x1daea4[_0x3af9('0x2e')];if(_0x549274[_0x3af9('0x2f')]['includeAll']){_0x461dd6[_0x3af9('0x3d')]=[{'all':!![]}];}_0x461dd6=_[_0x3af9('0x39')]({},_0x461dd6,_0x549274[_0x3af9('0x3b')]);return db['Tag']['find'](_0x461dd6)[_0x3af9('0x20')](handleEntityNotFound(_0x542580,null))['then'](respondWithResult(_0x542580,null))['catch'](handleError(_0x542580,null));};exports['create']=function(_0x19bd47,_0x3bc784){return db[_0x3af9('0x2a')][_0x3af9('0x44')](_0x19bd47[_0x3af9('0x45')],{})[_0x3af9('0x20')](function(_0x442681){var _0x48377b=_0x19bd47[_0x3af9('0x46')][_0x3af9('0x21')]({'plain':!![]});if(!_0x48377b)throw new Error(_0x3af9('0x47'));if(_0x48377b[_0x3af9('0x48')]===_0x3af9('0x46')){var _0x1104d4=_0x442681['get']({'plain':!![]});var _0x1b4509=_0x3af9('0x22');return db[_0x3af9('0x49')][_0x3af9('0x4a')]({'where':{'name':_0x1b4509,'userProfileId':_0x48377b['userProfileId']},'raw':!![]})[_0x3af9('0x20')](function(_0x39d954){if(_0x39d954&&_0x39d954[_0x3af9('0x4b')]===0x0){return db[_0x3af9('0x23')]['create']({'name':_0x1104d4[_0x3af9('0x28')],'resourceId':_0x1104d4['id'],'type':_0x39d954[_0x3af9('0x28')],'sectionId':_0x39d954['id']},{})[_0x3af9('0x20')](function(){return _0x442681;});}else{return _0x442681;}})[_0x3af9('0x40')](function(_0x4c75b6){logger['error'](_0x3af9('0x4c'),_0x4c75b6);throw _0x4c75b6;});}return _0x442681;})[_0x3af9('0x20')](respondWithResult(_0x3bc784,0xc9))[_0x3af9('0x40')](handleError(_0x3bc784,null));};exports[_0x3af9('0x4d')]=function(_0x3f087a,_0x268820){if(_0x3f087a[_0x3af9('0x45')]['id']){delete _0x3f087a[_0x3af9('0x45')]['id'];}return db[_0x3af9('0x2a')][_0x3af9('0x4a')]({'where':{'id':_0x3f087a[_0x3af9('0x42')]['id']}})['then'](handleEntityNotFound(_0x268820,null))[_0x3af9('0x20')](saveUpdates(_0x3f087a[_0x3af9('0x45')],null))['then'](respondWithResult(_0x268820,null))['catch'](handleError(_0x268820,null));};exports[_0x3af9('0x24')]=function(_0x4b205f,_0x27f717){return db[_0x3af9('0x2a')]['find']({'where':{'id':_0x4b205f['params']['id']}})[_0x3af9('0x20')](handleEntityNotFound(_0x27f717,null))[_0x3af9('0x20')](removeEntity(_0x27f717,null))[_0x3af9('0x40')](handleError(_0x27f717,null));};
\ No newline at end of file
+var _0x9099=['includeAll','findAll','rows','catch','show','keys','length','include','options','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','autoAssociation','UserProfileResource','update','params','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','Content-Range','json','apply','reject','then','get','Tags','destroy','error','stack','name','index','map','Tag','rawAttributes','fieldName','type','key','query','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL'];(function(_0x405657,_0x5d2317){var _0x5e3e84=function(_0x55d8f2){while(--_0x55d8f2){_0x405657['push'](_0x405657['shift']());}};_0x5e3e84(++_0x5d2317);}(_0x9099,0x1ac));var _0x9909=function(_0x7729b1,_0x468322){_0x7729b1=_0x7729b1-0x0;var _0x349504=_0x9099[_0x7729b1];return _0x349504;};'use strict';var emlformat=require(_0x9909('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x9909('0x1'));var jsonpatch=require(_0x9909('0x2'));var rp=require(_0x9909('0x3'));var moment=require(_0x9909('0x4'));var BPromise=require(_0x9909('0x5'));var Mustache=require(_0x9909('0x6'));var util=require(_0x9909('0x7'));var path=require(_0x9909('0x8'));var sox=require(_0x9909('0x9'));var csv=require(_0x9909('0xa'));var ejs=require(_0x9909('0xb'));var fs=require('fs');var fs_extra=require(_0x9909('0xc'));var _=require(_0x9909('0xd'));var squel=require(_0x9909('0xe'));var crypto=require('crypto');var jsforce=require(_0x9909('0xf'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x9909('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x9909('0x11'));var as=require(_0x9909('0x12'));var hardwareService=require(_0x9909('0x13'));var logger=require('../../config/logger')(_0x9909('0x14'));var utils=require('../../config/utils');var config=require(_0x9909('0x15'));var licenseUtil=require(_0x9909('0x16'));var db=require(_0x9909('0x17'))['db'];function respondWithStatusCode(_0x3ba080,_0x1c69bb){_0x1c69bb=_0x1c69bb||0xcc;return function(_0x5cc11e){if(_0x5cc11e){return _0x3ba080[_0x9909('0x18')](_0x1c69bb);}return _0x3ba080[_0x9909('0x19')](_0x1c69bb)[_0x9909('0x1a')]();};}function respondWithResult(_0xef3295,_0x1c2668){_0x1c2668=_0x1c2668||0xc8;return function(_0x38c2e3){if(_0x38c2e3){return _0xef3295[_0x9909('0x19')](_0x1c2668)['json'](_0x38c2e3);}};}function respondWithFilteredResult(_0x33a8e3,_0x55e800){return function(_0x1f32cc){if(_0x1f32cc){var _0x5bd7e7=typeof _0x55e800[_0x9909('0x1b')]===_0x9909('0x1c')&&typeof _0x55e800[_0x9909('0x1d')]==='undefined';var _0x9a16a6=_0x1f32cc[_0x9909('0x1e')];var _0x180929=_0x5bd7e7?0x0:_0x55e800[_0x9909('0x1b')];var _0x1106e5=_0x5bd7e7?_0x1f32cc[_0x9909('0x1e')]:_0x55e800[_0x9909('0x1b')]+_0x55e800['limit'];var _0x1b038f;if(_0x1106e5>=_0x9a16a6){_0x1106e5=_0x9a16a6;_0x1b038f=0xc8;}else{_0x1b038f=0xce;}_0x33a8e3[_0x9909('0x19')](_0x1b038f);return _0x33a8e3['set'](_0x9909('0x1f'),_0x180929+'-'+_0x1106e5+'/'+_0x9a16a6)[_0x9909('0x20')](_0x1f32cc);}return null;};}function patchUpdates(_0x20c236){return function(_0x1553ae){try{jsonpatch[_0x9909('0x21')](_0x1553ae,_0x20c236,!![]);}catch(_0x222cd9){return BPromise[_0x9909('0x22')](_0x222cd9);}return _0x1553ae['save']();};}function saveUpdates(_0x112727,_0x319c31){return function(_0x4a626b){if(_0x4a626b){return _0x4a626b['update'](_0x112727)[_0x9909('0x23')](function(_0x176593){return _0x176593;});}return null;};}function removeEntity(_0xdd5088,_0x19e66b){return function(_0x2f15fa){if(_0x2f15fa){return _0x2f15fa['destroy']()['then'](function(){var _0x2d83a5=_0x2f15fa[_0x9909('0x24')]({'plain':!![]});var _0x614308=_0x9909('0x25');return db['UserProfileResource'][_0x9909('0x26')]({'where':{'type':_0x614308,'resourceId':_0x2d83a5['id']}})[_0x9909('0x23')](function(){return _0x2f15fa;});})[_0x9909('0x23')](function(){_0xdd5088[_0x9909('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x405c5e,_0x22ff12){return function(_0x19c7e8){if(!_0x19c7e8){_0x405c5e[_0x9909('0x18')](0x194);}return _0x19c7e8;};}function handleError(_0x5250d8,_0xb0b66f){_0xb0b66f=_0xb0b66f||0x1f4;return function(_0x175d52){logger[_0x9909('0x27')](_0x175d52[_0x9909('0x28')]);if(_0x175d52[_0x9909('0x29')]){delete _0x175d52[_0x9909('0x29')];}_0x5250d8[_0x9909('0x19')](_0xb0b66f)['send'](_0x175d52);};}exports[_0x9909('0x2a')]=function(_0x3a3f4f,_0x87ac8a){var _0x42f1e5={},_0x3e4e07={},_0x519066={'count':0x0,'rows':[]};var _0x4245eb=_[_0x9909('0x2b')](db[_0x9909('0x2c')][_0x9909('0x2d')],function(_0xc1bd06){return{'name':_0xc1bd06[_0x9909('0x2e')],'type':_0xc1bd06[_0x9909('0x2f')][_0x9909('0x30')]};});_0x3e4e07['model']=_['map'](_0x4245eb,_0x9909('0x29'));_0x3e4e07[_0x9909('0x31')]=_['keys'](_0x3a3f4f[_0x9909('0x31')]);_0x3e4e07[_0x9909('0x32')]=_[_0x9909('0x33')](_0x3e4e07[_0x9909('0x34')],_0x3e4e07[_0x9909('0x31')]);_0x42f1e5[_0x9909('0x35')]=_[_0x9909('0x33')](_0x3e4e07['model'],qs[_0x9909('0x36')](_0x3a3f4f[_0x9909('0x31')][_0x9909('0x36')]));_0x42f1e5[_0x9909('0x35')]=_0x42f1e5[_0x9909('0x35')]['length']?_0x42f1e5[_0x9909('0x35')]:_0x3e4e07[_0x9909('0x34')];if(!_0x3a3f4f['query'][_0x9909('0x37')](_0x9909('0x38'))){_0x42f1e5[_0x9909('0x1d')]=qs[_0x9909('0x1d')](_0x3a3f4f[_0x9909('0x31')][_0x9909('0x1d')]);_0x42f1e5['offset']=qs[_0x9909('0x1b')](_0x3a3f4f[_0x9909('0x31')][_0x9909('0x1b')]);}_0x42f1e5[_0x9909('0x39')]=qs[_0x9909('0x3a')](_0x3a3f4f[_0x9909('0x31')][_0x9909('0x3a')]);_0x42f1e5[_0x9909('0x3b')]=qs[_0x9909('0x32')](_[_0x9909('0x3c')](_0x3a3f4f[_0x9909('0x31')],_0x3e4e07[_0x9909('0x32')]),_0x4245eb);if(_0x3a3f4f[_0x9909('0x31')][_0x9909('0x3d')]){_0x42f1e5[_0x9909('0x3b')]=_[_0x9909('0x3e')](_0x42f1e5[_0x9909('0x3b')],{'$or':_[_0x9909('0x2b')](_0x4245eb,function(_0x1b5e2b){if(_0x1b5e2b[_0x9909('0x2f')]!==_0x9909('0x3f')){var _0x1b224d={};_0x1b224d[_0x1b5e2b[_0x9909('0x29')]]={'$like':'%'+_0x3a3f4f['query']['filter']+'%'};return _0x1b224d;}})});}_0x42f1e5=_[_0x9909('0x3e')]({},_0x42f1e5,_0x3a3f4f['options']);var _0x52724f={'where':_0x42f1e5[_0x9909('0x3b')]};return db[_0x9909('0x2c')][_0x9909('0x1e')](_0x52724f)[_0x9909('0x23')](function(_0x556fad){_0x519066[_0x9909('0x1e')]=_0x556fad;if(_0x3a3f4f[_0x9909('0x31')][_0x9909('0x40')]){_0x42f1e5['include']=[{'all':!![]}];}return db[_0x9909('0x2c')][_0x9909('0x41')](_0x42f1e5);})[_0x9909('0x23')](function(_0x4b0a4c){_0x519066[_0x9909('0x42')]=_0x4b0a4c;return _0x519066;})[_0x9909('0x23')](respondWithFilteredResult(_0x87ac8a,_0x42f1e5))[_0x9909('0x43')](handleError(_0x87ac8a,null));};exports[_0x9909('0x44')]=function(_0x1f57bd,_0x856057){var _0xef5aa6={'raw':!![],'where':{'id':_0x1f57bd['params']['id']}},_0x3b1844={};_0x3b1844[_0x9909('0x34')]=_[_0x9909('0x45')](db['Tag'][_0x9909('0x2d')]);_0x3b1844[_0x9909('0x31')]=_['keys'](_0x1f57bd['query']);_0x3b1844[_0x9909('0x32')]=_[_0x9909('0x33')](_0x3b1844[_0x9909('0x34')],_0x3b1844[_0x9909('0x31')]);_0xef5aa6[_0x9909('0x35')]=_[_0x9909('0x33')](_0x3b1844[_0x9909('0x34')],qs[_0x9909('0x36')](_0x1f57bd[_0x9909('0x31')][_0x9909('0x36')]));_0xef5aa6['attributes']=_0xef5aa6[_0x9909('0x35')][_0x9909('0x46')]?_0xef5aa6[_0x9909('0x35')]:_0x3b1844[_0x9909('0x34')];if(_0x1f57bd['query']['includeAll']){_0xef5aa6[_0x9909('0x47')]=[{'all':!![]}];}_0xef5aa6=_['merge']({},_0xef5aa6,_0x1f57bd[_0x9909('0x48')]);return db[_0x9909('0x2c')][_0x9909('0x49')](_0xef5aa6)['then'](handleEntityNotFound(_0x856057,null))[_0x9909('0x23')](respondWithResult(_0x856057,null))[_0x9909('0x43')](handleError(_0x856057,null));};exports[_0x9909('0x4a')]=function(_0x54152c,_0x271984){return db[_0x9909('0x2c')][_0x9909('0x4a')](_0x54152c[_0x9909('0x4b')],{})[_0x9909('0x23')](function(_0x137fb6){var _0x8fbd0c=_0x54152c['user'][_0x9909('0x24')]({'plain':!![]});if(!_0x8fbd0c)throw new Error(_0x9909('0x4c'));if(_0x8fbd0c['role']===_0x9909('0x4d')){var _0x240947=_0x137fb6[_0x9909('0x24')]({'plain':!![]});var _0x37697d=_0x9909('0x25');return db['UserProfileSection'][_0x9909('0x49')]({'where':{'name':_0x37697d,'userProfileId':_0x8fbd0c['userProfileId']},'raw':!![]})[_0x9909('0x23')](function(_0x159e08){if(_0x159e08&&_0x159e08[_0x9909('0x4e')]===0x0){return db[_0x9909('0x4f')][_0x9909('0x4a')]({'name':_0x240947[_0x9909('0x29')],'resourceId':_0x240947['id'],'type':_0x159e08[_0x9909('0x29')],'sectionId':_0x159e08['id']},{})[_0x9909('0x23')](function(){return _0x137fb6;});}else{return _0x137fb6;}})['catch'](function(_0x51b214){logger[_0x9909('0x27')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x51b214);throw _0x51b214;});}return _0x137fb6;})['then'](respondWithResult(_0x271984,0xc9))[_0x9909('0x43')](handleError(_0x271984,null));};exports[_0x9909('0x50')]=function(_0x49659a,_0x1144e0){if(_0x49659a[_0x9909('0x4b')]['id']){delete _0x49659a[_0x9909('0x4b')]['id'];}return db[_0x9909('0x2c')][_0x9909('0x49')]({'where':{'id':_0x49659a[_0x9909('0x51')]['id']}})['then'](handleEntityNotFound(_0x1144e0,null))[_0x9909('0x23')](saveUpdates(_0x49659a[_0x9909('0x4b')],null))['then'](respondWithResult(_0x1144e0,null))['catch'](handleError(_0x1144e0,null));};exports[_0x9909('0x26')]=function(_0x508b6a,_0x180cf5){return db[_0x9909('0x2c')][_0x9909('0x49')]({'where':{'id':_0x508b6a[_0x9909('0x51')]['id']}})['then'](handleEntityNotFound(_0x180cf5,null))['then'](removeEntity(_0x180cf5,null))['catch'](handleError(_0x180cf5,null));};
\ No newline at end of file
index 723336c..2d3e61e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd51=['define','Tag','lodash','util','bluebird','request-promise','path','../../config/environment','./tag.attributes','exports'];(function(_0x5677c0,_0x17ab5b){var _0x5711e3=function(_0x1cdf5f){while(--_0x1cdf5f){_0x5677c0['push'](_0x5677c0['shift']());}};_0x5711e3(++_0x17ab5b);}(_0xdd51,0xca));var _0x1dd5=function(_0x56482c,_0x16118d){_0x56482c=_0x56482c-0x0;var _0x5aae7a=_0xdd51[_0x56482c];return _0x5aae7a;};'use strict';var _=require(_0x1dd5('0x0'));var util=require(_0x1dd5('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x1dd5('0x2'));var rp=require(_0x1dd5('0x3'));var fs=require('fs');var path=require(_0x1dd5('0x4'));var rimraf=require('rimraf');var config=require(_0x1dd5('0x5'));var attributes=require(_0x1dd5('0x6'));module[_0x1dd5('0x7')]=function(_0x4aa37d,_0x35ecd9){return _0x4aa37d[_0x1dd5('0x8')](_0x1dd5('0x9'),attributes,{'tableName':'tools_tags','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf32a=['bluebird','request-promise','path','rimraf','./tag.attributes','exports','define','Tag','lodash','util','../../config/logger','api','moment'];(function(_0xf5e400,_0x472205){var _0x15bb78=function(_0xa510cf){while(--_0xa510cf){_0xf5e400['push'](_0xf5e400['shift']());}};_0x15bb78(++_0x472205);}(_0xf32a,0x19b));var _0xaf32=function(_0x436901,_0x3ac3f7){_0x436901=_0x436901-0x0;var _0x49f2bb=_0xf32a[_0x436901];return _0x49f2bb;};'use strict';var _=require(_0xaf32('0x0'));var util=require(_0xaf32('0x1'));var logger=require(_0xaf32('0x2'))(_0xaf32('0x3'));var moment=require(_0xaf32('0x4'));var BPromise=require(_0xaf32('0x5'));var rp=require(_0xaf32('0x6'));var fs=require('fs');var path=require(_0xaf32('0x7'));var rimraf=require(_0xaf32('0x8'));var config=require('../../config/environment');var attributes=require(_0xaf32('0x9'));module[_0xaf32('0xa')]=function(_0x4bb914,_0x2a86b4){return _0x4bb914[_0xaf32('0xb')](_0xaf32('0xc'),attributes,{'tableName':'tools_tags','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f485b5a..e5c4e2d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb458=['Tag,\x20%s,\x20%s,\x20%s','code','error','message','request\x20sent','result','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','http','request','then','info','Tag,\x20%s,\x20%s','debug'];(function(_0x32f7d7,_0x54231b){var _0x133d09=function(_0x41a7ab){while(--_0x41a7ab){_0x32f7d7['push'](_0x32f7d7['shift']());}};_0x133d09(++_0x54231b);}(_0xb458,0x103));var _0x8b45=function(_0x374305,_0x3bf2b1){_0x374305=_0x374305-0x0;var _0x48f9c6=_0xb458[_0x374305];return _0x48f9c6;};'use strict';var _=require(_0x8b45('0x0'));var util=require(_0x8b45('0x1'));var moment=require(_0x8b45('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8b45('0x3'));var db=require(_0x8b45('0x4'))['db'];var utils=require(_0x8b45('0x5'));var logger=require(_0x8b45('0x6'))('rpc');var config=require(_0x8b45('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0x8b45('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x12bd05,_0x2daa9a,_0x3a8ccb){return new BPromise(function(_0x32342f,_0x4d1718){return client[_0x8b45('0x9')](_0x12bd05,_0x3a8ccb)[_0x8b45('0xa')](function(_0x33f30e){logger[_0x8b45('0xb')](_0x8b45('0xc'),_0x2daa9a,'request\x20sent');logger[_0x8b45('0xd')](_0x8b45('0xe'),_0x2daa9a,'request\x20sent',JSON['stringify'](_0x33f30e));if(_0x33f30e['error']){if(_0x33f30e['error'][_0x8b45('0xf')]===0x1f4){logger[_0x8b45('0x10')](_0x8b45('0xc'),_0x2daa9a,_0x33f30e['error'][_0x8b45('0x11')]);return _0x4d1718(_0x33f30e[_0x8b45('0x10')][_0x8b45('0x11')]);}logger[_0x8b45('0x10')](_0x8b45('0xc'),_0x2daa9a,_0x33f30e[_0x8b45('0x10')]['message']);return _0x32342f(_0x33f30e['error'][_0x8b45('0x11')]);}else{logger[_0x8b45('0xb')](_0x8b45('0xc'),_0x2daa9a,_0x8b45('0x12'));_0x32342f(_0x33f30e[_0x8b45('0x13')][_0x8b45('0x11')]);}})[_0x8b45('0x14')](function(_0x147d6b){logger[_0x8b45('0x10')](_0x8b45('0xc'),_0x2daa9a,_0x147d6b);_0x4d1718(_0x147d6b);});});}
\ No newline at end of file
+var _0x6308=['stringify','error','code','message','catch','lodash','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','request','Tag,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x6308,0x1f2));var _0x8630=function(_0x24061a,_0x1c9f4d){_0x24061a=_0x24061a-0x0;var _0x82054e=_0x6308[_0x24061a];return _0x82054e;};'use strict';var _=require(_0x8630('0x0'));var util=require('util');var moment=require(_0x8630('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8630('0x2'));var db=require(_0x8630('0x3'))['db'];var utils=require(_0x8630('0x4'));var logger=require(_0x8630('0x5'))(_0x8630('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x8630('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x337086,_0x3d5a10,_0x1bcfea){return new BPromise(function(_0x2b87ea,_0x10cc17){return client[_0x8630('0x8')](_0x337086,_0x1bcfea)['then'](function(_0x8b3652){logger['info'](_0x8630('0x9'),_0x3d5a10,_0x8630('0xa'));logger[_0x8630('0xb')]('Tag,\x20%s,\x20%s,\x20%s',_0x3d5a10,_0x8630('0xa'),JSON[_0x8630('0xc')](_0x8b3652));if(_0x8b3652[_0x8630('0xd')]){if(_0x8b3652['error'][_0x8630('0xe')]===0x1f4){logger[_0x8630('0xd')]('Tag,\x20%s,\x20%s',_0x3d5a10,_0x8b3652['error'][_0x8630('0xf')]);return _0x10cc17(_0x8b3652[_0x8630('0xd')]['message']);}logger[_0x8630('0xd')]('Tag,\x20%s,\x20%s',_0x3d5a10,_0x8b3652[_0x8630('0xd')]['message']);return _0x2b87ea(_0x8b3652[_0x8630('0xd')]['message']);}else{logger['info'](_0x8630('0x9'),_0x3d5a10,_0x8630('0xa'));_0x2b87ea(_0x8b3652['result']['message']);}})[_0x8630('0x10')](function(_0x547667){logger[_0x8630('0xd')](_0x8630('0x9'),_0x3d5a10,_0x547667);_0x10cc17(_0x547667);});});}
\ No newline at end of file
index 4ac80cc..f07cb69 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./team.controller','get','index','/:id','getQueues','/:id/users','isAuthenticated','getAgents','post','addQueues','addAgents','update','delete','removeAgents','multer','util','path'];(function(_0x8c43de,_0x90ff31){var _0xa6591b=function(_0x469716){while(--_0x469716){_0x8c43de['push'](_0x8c43de['shift']());}};_0xa6591b(++_0x90ff31);}(_0xa9e0,0x123));var _0x0a9e=function(_0x934425,_0x5af72f){_0x934425=_0x934425-0x0;var _0x31d596=_0xa9e0[_0x934425];return _0x31d596;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('0x8')]('/:id/queues',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xf')]('/',auth['isAuthenticated'](),controller['create']);router['post']('/:id/queues',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0xf')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x11')]);router['put'](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x12')]);router[_0x0a9e('0x13')](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller['destroy']);router[_0x0a9e('0x13')]('/:id/queues',auth[_0x0a9e('0xd')](),controller['removeQueues']);router[_0x0a9e('0x13')](_0x0a9e('0xc'),auth['isAuthenticated'](),controller[_0x0a9e('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0xa9e0=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./team.controller','get','index','/:id','getQueues','/:id/users','isAuthenticated','getAgents','post','addQueues','addAgents','update','delete','removeAgents','multer','util','path'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3a6efd,_0x2a5102){_0x3a6efd=_0x3a6efd-0x0;var _0x487b9a=_0xa9e0[_0x3a6efd];return _0x487b9a;};'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 3e72e07..d2d4dce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['STRING','name'];(function(_0x37af90,_0x3fe010){var _0x51a27d=function(_0x40adaf){while(--_0x40adaf){_0x37af90['push'](_0x37af90['shift']());}};_0x51a27d(++_0x3fe010);}(_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 _0xe706=['STRING','sequelize','exports'];(function(_0xbca1b1,_0x33f0ce){var _0x4e1686=function(_0x58a80c){while(--_0x58a80c){_0xbca1b1['push'](_0xbca1b1['shift']());}};_0x4e1686(++_0x33f0ce);}(_0xe706,0xa3));var _0x6e70=function(_0xf47605,_0x22a2f5){_0xf47605=_0xf47605-0x0;var _0x33bee8=_0xe706[_0xf47605];return _0x33bee8;};'use strict';var Sequelize=require(_0x6e70('0x0'));module[_0x6e70('0x1')]={'name':{'type':Sequelize[_0x6e70('0x2')],'allowNull':![],'unique':'name'},'description':{'type':Sequelize[_0x6e70('0x2')]}};
\ No newline at end of file
index aaa7be7..436ef96 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdabc=['undefined','count','set','Content-Range','json','apply','reject','save','update','then','destroy','get','Teams','UserProfileResource','error','stack','name','send','map','Team','rawAttributes','fieldName','type','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','limit','order','sort','where','filter','merge','VIRTUAL','options','findAll','rows','show','params','keys','includeAll','include','catch','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','autoAssociation','create','getQueues','channel','isValidChannel','Sequelize','ValidationError','Unknown\x20channel','Queue','capitalize','toLowerCase','addQueues','findOne','add','ids','removeQueues','remove','Queues','addAgents','Sms','Fax','Openchannel','Whatsapp','sequelize','Voice','through','penalty','QueueId','User','findOrCreate','Queue:save','online','voicePause','upsert','isNil','interface','format','SIP/%s','all','spread','removeAgents','Chat','Mail','transaction','parse','Queue:remove','getAgents','nolimit','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../mysqldb','redis','defaults','localhost','./team.socket','register','sendStatus','status','end','offset'];(function(_0x140357,_0x6670bd){var _0x4fdf00=function(_0x527977){while(--_0x527977){_0x140357['push'](_0x140357['shift']());}};_0x4fdf00(++_0x6670bd);}(_0xdabc,0x16b));var _0xcdab=function(_0x58b3ca,_0x4183bc){_0x58b3ca=_0x58b3ca-0x0;var _0x1dfab9=_0xdabc[_0x58b3ca];return _0x1dfab9;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xcdab('0x0'));var zipdir=require(_0xcdab('0x1'));var jsonpatch=require(_0xcdab('0x2'));var rp=require('request-promise');var moment=require(_0xcdab('0x3'));var BPromise=require(_0xcdab('0x4'));var Mustache=require(_0xcdab('0x5'));var util=require(_0xcdab('0x6'));var path=require(_0xcdab('0x7'));var sox=require(_0xcdab('0x8'));var csv=require(_0xcdab('0x9'));var ejs=require(_0xcdab('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xcdab('0xb'));var squel=require(_0xcdab('0xc'));var crypto=require(_0xcdab('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xcdab('0xe'));var toCsv=require(_0xcdab('0x9'));var querystring=require(_0xcdab('0xf'));var Papa=require('papaparse');var Redis=require(_0xcdab('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xcdab('0x11'));var as=require(_0xcdab('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xcdab('0x13'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xcdab('0x14'))['db'];config[_0xcdab('0x15')]=_[_0xcdab('0x16')](config[_0xcdab('0x15')],{'host':_0xcdab('0x17'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xcdab('0x18'))[_0xcdab('0x19')](socket);function respondWithStatusCode(_0x516186,_0x54e2a6){_0x54e2a6=_0x54e2a6||0xcc;return function(_0x5956eb){if(_0x5956eb){return _0x516186[_0xcdab('0x1a')](_0x54e2a6);}return _0x516186[_0xcdab('0x1b')](_0x54e2a6)[_0xcdab('0x1c')]();};}function respondWithResult(_0x12ea56,_0x2bc7d8){_0x2bc7d8=_0x2bc7d8||0xc8;return function(_0x29fd58){if(_0x29fd58){return _0x12ea56['status'](_0x2bc7d8)['json'](_0x29fd58);}};}function respondWithFilteredResult(_0x2c099d,_0x332739){return function(_0x5e21e6){if(_0x5e21e6){var _0xef41c6=typeof _0x332739[_0xcdab('0x1d')]==='undefined'&&typeof _0x332739['limit']===_0xcdab('0x1e');var _0x536d2d=_0x5e21e6['count'];var _0x2527b2=_0xef41c6?0x0:_0x332739[_0xcdab('0x1d')];var _0x3a6a16=_0xef41c6?_0x5e21e6[_0xcdab('0x1f')]:_0x332739[_0xcdab('0x1d')]+_0x332739['limit'];var _0x32d72f;if(_0x3a6a16>=_0x536d2d){_0x3a6a16=_0x536d2d;_0x32d72f=0xc8;}else{_0x32d72f=0xce;}_0x2c099d[_0xcdab('0x1b')](_0x32d72f);return _0x2c099d[_0xcdab('0x20')](_0xcdab('0x21'),_0x2527b2+'-'+_0x3a6a16+'/'+_0x536d2d)[_0xcdab('0x22')](_0x5e21e6);}return null;};}function patchUpdates(_0x547832){return function(_0x393255){try{jsonpatch[_0xcdab('0x23')](_0x393255,_0x547832,!![]);}catch(_0x2b9556){return BPromise[_0xcdab('0x24')](_0x2b9556);}return _0x393255[_0xcdab('0x25')]();};}function saveUpdates(_0x3bb70a,_0x392cae){return function(_0x11127b){if(_0x11127b){return _0x11127b[_0xcdab('0x26')](_0x3bb70a)[_0xcdab('0x27')](function(_0x5dc824){return _0x5dc824;});}return null;};}function removeEntity(_0x71a8da,_0x5b5be9){return function(_0xfef032){if(_0xfef032){return _0xfef032[_0xcdab('0x28')]()[_0xcdab('0x27')](function(){var _0xee92eb=_0xfef032[_0xcdab('0x29')]({'plain':!![]});var _0x5ca8c7=_0xcdab('0x2a');return db[_0xcdab('0x2b')][_0xcdab('0x28')]({'where':{'type':_0x5ca8c7,'resourceId':_0xee92eb['id']}})[_0xcdab('0x27')](function(){return _0xfef032;});})['then'](function(){_0x71a8da[_0xcdab('0x1b')](0xcc)[_0xcdab('0x1c')]();});}};}function handleEntityNotFound(_0x4243ef,_0x1ffdd8){return function(_0x2afd6a){if(!_0x2afd6a){_0x4243ef[_0xcdab('0x1a')](0x194);}return _0x2afd6a;};}function handleError(_0x135d6c,_0x5f4c66){_0x5f4c66=_0x5f4c66||0x1f4;return function(_0x47441e){logger[_0xcdab('0x2c')](_0x47441e[_0xcdab('0x2d')]);if(_0x47441e[_0xcdab('0x2e')]){delete _0x47441e[_0xcdab('0x2e')];}_0x135d6c['status'](_0x5f4c66)[_0xcdab('0x2f')](_0x47441e);};}exports['index']=function(_0x16aeb3,_0x46b4b6){var _0x13372b={},_0x48cf9f={},_0x32005f={'count':0x0,'rows':[]};var _0x5ab328=_[_0xcdab('0x30')](db[_0xcdab('0x31')][_0xcdab('0x32')],function(_0x3c15fe){return{'name':_0x3c15fe[_0xcdab('0x33')],'type':_0x3c15fe[_0xcdab('0x34')]['key']};});_0x48cf9f[_0xcdab('0x35')]=_[_0xcdab('0x30')](_0x5ab328,_0xcdab('0x2e'));_0x48cf9f['query']=_['keys'](_0x16aeb3[_0xcdab('0x36')]);_0x48cf9f[_0xcdab('0x37')]=_[_0xcdab('0x38')](_0x48cf9f[_0xcdab('0x35')],_0x48cf9f['query']);_0x13372b[_0xcdab('0x39')]=_[_0xcdab('0x38')](_0x48cf9f[_0xcdab('0x35')],qs[_0xcdab('0x3a')](_0x16aeb3[_0xcdab('0x36')][_0xcdab('0x3a')]));_0x13372b['attributes']=_0x13372b['attributes'][_0xcdab('0x3b')]?_0x13372b['attributes']:_0x48cf9f[_0xcdab('0x35')];if(!_0x16aeb3[_0xcdab('0x36')][_0xcdab('0x3c')]('nolimit')){_0x13372b['limit']=qs[_0xcdab('0x3d')](_0x16aeb3[_0xcdab('0x36')][_0xcdab('0x3d')]);_0x13372b[_0xcdab('0x1d')]=qs[_0xcdab('0x1d')](_0x16aeb3[_0xcdab('0x36')][_0xcdab('0x1d')]);}_0x13372b[_0xcdab('0x3e')]=qs['sort'](_0x16aeb3[_0xcdab('0x36')][_0xcdab('0x3f')]);_0x13372b[_0xcdab('0x40')]=qs[_0xcdab('0x37')](_['pick'](_0x16aeb3[_0xcdab('0x36')],_0x48cf9f['filters']),_0x5ab328);if(_0x16aeb3['query'][_0xcdab('0x41')]){_0x13372b[_0xcdab('0x40')]=_[_0xcdab('0x42')](_0x13372b['where'],{'$or':_[_0xcdab('0x30')](_0x5ab328,function(_0x256576){if(_0x256576[_0xcdab('0x34')]!==_0xcdab('0x43')){var _0x5d9b70={};_0x5d9b70[_0x256576[_0xcdab('0x2e')]]={'$like':'%'+_0x16aeb3['query'][_0xcdab('0x41')]+'%'};return _0x5d9b70;}})});}_0x13372b=_[_0xcdab('0x42')]({},_0x13372b,_0x16aeb3[_0xcdab('0x44')]);var _0x55d5d3={'where':_0x13372b['where']};return db[_0xcdab('0x31')]['count'](_0x55d5d3)[_0xcdab('0x27')](function(_0x21b678){_0x32005f[_0xcdab('0x1f')]=_0x21b678;if(_0x16aeb3[_0xcdab('0x36')]['includeAll']){_0x13372b['include']=[{'all':!![]}];}return db[_0xcdab('0x31')][_0xcdab('0x45')](_0x13372b);})[_0xcdab('0x27')](function(_0x10d0bd){_0x32005f[_0xcdab('0x46')]=_0x10d0bd;return _0x32005f;})[_0xcdab('0x27')](respondWithFilteredResult(_0x46b4b6,_0x13372b))['catch'](handleError(_0x46b4b6,null));};exports[_0xcdab('0x47')]=function(_0x3d2b8a,_0x373eac){var _0x26e653={'raw':![],'where':{'id':_0x3d2b8a[_0xcdab('0x48')]['id']}},_0x37c837={};_0x37c837[_0xcdab('0x35')]=_[_0xcdab('0x49')](db[_0xcdab('0x31')]['rawAttributes']);_0x37c837[_0xcdab('0x36')]=_[_0xcdab('0x49')](_0x3d2b8a['query']);_0x37c837[_0xcdab('0x37')]=_['intersection'](_0x37c837[_0xcdab('0x35')],_0x37c837[_0xcdab('0x36')]);_0x26e653[_0xcdab('0x39')]=_[_0xcdab('0x38')](_0x37c837['model'],qs[_0xcdab('0x3a')](_0x3d2b8a[_0xcdab('0x36')][_0xcdab('0x3a')]));_0x26e653['attributes']=_0x26e653[_0xcdab('0x39')][_0xcdab('0x3b')]?_0x26e653[_0xcdab('0x39')]:_0x37c837[_0xcdab('0x35')];if(_0x3d2b8a['query'][_0xcdab('0x4a')]){_0x26e653[_0xcdab('0x4b')]=[{'all':!![]}];}_0x26e653=_['merge']({},_0x26e653,_0x3d2b8a[_0xcdab('0x44')]);return db[_0xcdab('0x31')]['find'](_0x26e653)[_0xcdab('0x27')](handleEntityNotFound(_0x373eac,null))['then'](respondWithResult(_0x373eac,null))[_0xcdab('0x4c')](handleError(_0x373eac,null));};exports['create']=function(_0x2fcbe0,_0x482d3c){return db[_0xcdab('0x31')]['create'](_0x2fcbe0[_0xcdab('0x4d')],{})['then'](function(_0x5ebc5e){var _0x197bb0=_0x2fcbe0[_0xcdab('0x4e')][_0xcdab('0x29')]({'plain':!![]});if(!_0x197bb0)throw new Error(_0xcdab('0x4f'));if(_0x197bb0[_0xcdab('0x50')]===_0xcdab('0x4e')){var _0x358c65=_0x5ebc5e[_0xcdab('0x29')]({'plain':!![]});var _0xa7301=_0xcdab('0x2a');return db[_0xcdab('0x51')][_0xcdab('0x52')]({'where':{'name':_0xa7301,'userProfileId':_0x197bb0['userProfileId']},'raw':!![]})[_0xcdab('0x27')](function(_0x533574){if(_0x533574&&_0x533574[_0xcdab('0x53')]===0x0){return db[_0xcdab('0x2b')][_0xcdab('0x54')]({'name':_0x358c65[_0xcdab('0x2e')],'resourceId':_0x358c65['id'],'type':_0x533574[_0xcdab('0x2e')],'sectionId':_0x533574['id']},{})[_0xcdab('0x27')](function(){return _0x5ebc5e;});}else{return _0x5ebc5e;}})['catch'](function(_0x41c1a2){logger[_0xcdab('0x2c')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x41c1a2);throw _0x41c1a2;});}return _0x5ebc5e;})['then'](respondWithResult(_0x482d3c,0xc9))[_0xcdab('0x4c')](handleError(_0x482d3c,null));};exports[_0xcdab('0x26')]=function(_0x329249,_0x542b9d){if(_0x329249[_0xcdab('0x4d')]['id']){delete _0x329249[_0xcdab('0x4d')]['id'];}return db['Team'][_0xcdab('0x52')]({'where':{'id':_0x329249[_0xcdab('0x48')]['id']}})[_0xcdab('0x27')](handleEntityNotFound(_0x542b9d,null))[_0xcdab('0x27')](saveUpdates(_0x329249[_0xcdab('0x4d')],null))[_0xcdab('0x27')](respondWithResult(_0x542b9d,null))[_0xcdab('0x4c')](handleError(_0x542b9d,null));};exports[_0xcdab('0x28')]=function(_0x1f8f10,_0x5bc16a){return db[_0xcdab('0x31')][_0xcdab('0x52')]({'where':{'id':_0x1f8f10[_0xcdab('0x48')]['id']}})[_0xcdab('0x27')](handleEntityNotFound(_0x5bc16a,null))[_0xcdab('0x27')](removeEntity(_0x5bc16a,null))[_0xcdab('0x4c')](handleError(_0x5bc16a,null));};exports[_0xcdab('0x55')]=function(_0x4d2dc1,_0x3d8aa1,_0x5b7d4b){return db[_0xcdab('0x31')]['findOne']({'where':{'id':_0x4d2dc1[_0xcdab('0x48')]['id']}})[_0xcdab('0x27')](handleEntityNotFound(_0x3d8aa1,null))['then'](function(_0x4d2a7d){if(!_0x4d2dc1[_0xcdab('0x36')][_0xcdab('0x56')]||!utils[_0xcdab('0x57')](_0x4d2dc1[_0xcdab('0x36')][_0xcdab('0x56')])){throw new db[(_0xcdab('0x58'))][(_0xcdab('0x59'))](_0xcdab('0x5a'));}var _0x23e685={};var _0x31f288={};_0x31f288[_0xcdab('0x35')]=_[_0xcdab('0x49')](db[_['capitalize'](_0x4d2dc1[_0xcdab('0x36')][_0xcdab('0x56')]['toLowerCase']())+_0xcdab('0x5b')][_0xcdab('0x32')]);_0x31f288[_0xcdab('0x36')]=_[_0xcdab('0x49')](_0x4d2dc1[_0xcdab('0x36')]);_0x31f288['filters']=_['intersection'](_0x31f288[_0xcdab('0x35')],_0x31f288[_0xcdab('0x36')]);_0x23e685[_0xcdab('0x39')]=_[_0xcdab('0x38')](_0x31f288[_0xcdab('0x35')],qs[_0xcdab('0x3a')](_0x4d2dc1[_0xcdab('0x36')][_0xcdab('0x3a')]));_0x23e685[_0xcdab('0x39')]=_0x23e685[_0xcdab('0x39')][_0xcdab('0x3b')]?_0x23e685[_0xcdab('0x39')]:_0x31f288['model'];_0x23e685[_0xcdab('0x3d')]=qs[_0xcdab('0x3d')](_0x4d2dc1[_0xcdab('0x36')][_0xcdab('0x3d')]);_0x23e685[_0xcdab('0x1d')]=qs[_0xcdab('0x1d')](_0x4d2dc1['query'][_0xcdab('0x1d')]);_0x23e685[_0xcdab('0x3e')]=qs[_0xcdab('0x3f')](_0x4d2dc1['query'][_0xcdab('0x3f')]);_0x23e685[_0xcdab('0x40')]=qs[_0xcdab('0x37')](_['pick'](_0x4d2dc1['query'],_0x31f288[_0xcdab('0x37')]));_0x23e685=_['merge']({},_0x23e685,_0x4d2dc1[_0xcdab('0x44')]);return _0x4d2a7d[_0xcdab('0x29')+_[_0xcdab('0x5c')](_0x4d2dc1[_0xcdab('0x36')][_0xcdab('0x56')][_0xcdab('0x5d')]())+'Queues'](_0x23e685);})[_0xcdab('0x27')](respondWithResult(_0x3d8aa1,null))['catch'](handleError(_0x3d8aa1,null));};exports[_0xcdab('0x5e')]=function(_0x5d0a1d,_0x35b016,_0x552eaa){return db[_0xcdab('0x31')][_0xcdab('0x5f')]({'where':{'id':_0x5d0a1d[_0xcdab('0x48')]['id']}})[_0xcdab('0x27')](function(_0x4d56ac){if(_0x4d56ac){if(!_0x5d0a1d[_0xcdab('0x4d')][_0xcdab('0x56')]||!utils[_0xcdab('0x57')](_0x5d0a1d[_0xcdab('0x4d')][_0xcdab('0x56')])){throw new db[(_0xcdab('0x58'))][(_0xcdab('0x59'))]('Unknown\x20channel');}return _0x4d56ac[_0xcdab('0x60')+_[_0xcdab('0x5c')](_0x5d0a1d[_0xcdab('0x4d')][_0xcdab('0x56')][_0xcdab('0x5d')]())+'Queues'](_0x5d0a1d[_0xcdab('0x4d')][_0xcdab('0x61')]);}return null;})[_0xcdab('0x27')](handleEntityNotFound(_0x35b016,null))[_0xcdab('0x27')](respondWithStatusCode(_0x35b016,null))['catch'](handleError(_0x35b016,null));};exports[_0xcdab('0x62')]=function(_0x91ae09,_0xe15945,_0x5d8a81){return db[_0xcdab('0x31')][_0xcdab('0x5f')]({'where':{'id':_0x91ae09['params']['id']}})['then'](function(_0x5c5c07){if(_0x5c5c07){if(!_0x91ae09['query'][_0xcdab('0x56')]||!utils[_0xcdab('0x57')](_0x91ae09[_0xcdab('0x36')][_0xcdab('0x56')])){throw new db[(_0xcdab('0x58'))][(_0xcdab('0x59'))](_0xcdab('0x5a'));}return _0x5c5c07[_0xcdab('0x63')+_[_0xcdab('0x5c')](_0x91ae09['query'][_0xcdab('0x56')][_0xcdab('0x5d')]())+_0xcdab('0x64')](_0x91ae09[_0xcdab('0x36')][_0xcdab('0x61')]);}return null;})['then'](handleEntityNotFound(_0xe15945,null))[_0xcdab('0x27')](respondWithStatusCode(_0xe15945,null))['catch'](handleError(_0xe15945,null));};exports[_0xcdab('0x65')]=function(_0x4fb9bd,_0x3c3707){return db['Team'][_0xcdab('0x52')]({'where':{'id':_0x4fb9bd[_0xcdab('0x48')]['id']}})[_0xcdab('0x27')](handleEntityNotFound(_0x3c3707,null))[_0xcdab('0x27')](function(_0x210b62){if(_0x210b62){var _0x570508=['Voice','Chat','Mail',_0xcdab('0x66'),_0xcdab('0x67'),_0xcdab('0x68'),_0xcdab('0x69')];return db[_0xcdab('0x6a')]['transaction'](function(_0x4ee0b7){var _0x3251b4=_[_0xcdab('0x30')](_0x570508,function(_0x209d3f){var _0x4003b8={'attributes':['id',_0xcdab('0x2e')]};if(_0x209d3f===_0xcdab('0x6b')){_0x4003b8[_0xcdab('0x6c')]={'attributes':[_0xcdab('0x6d')]};}return _0x210b62[_0xcdab('0x29')+_0x209d3f+'Queues'](_0x4003b8)['then'](function(_0x2dfb9d){var _0x314438=_[_0xcdab('0x30')](_0x2dfb9d,function(_0x1a08bb){var _0x3b4b0c=_[_0xcdab('0x30')](_0x4fb9bd['body'][_0xcdab('0x61')],function(_0x504a65){var _0x574a39={'where':{'UserId':_0x504a65,[_0x209d3f+_0xcdab('0x6e')]:_0x1a08bb['id']},'transaction':_0x4ee0b7};if(_0x209d3f===_0xcdab('0x6b')){_0x574a39['defaults']={'penalty':_0x1a08bb['TeamVoiceQueue'][_0xcdab('0x6d')]};}return db[_0xcdab('0x6f')+_0x209d3f+_0xcdab('0x5b')][_0xcdab('0x70')](_0x574a39)[_0xcdab('0x27')](function(){socket['emit'](_0xcdab('0x4e')+_0x209d3f+_0xcdab('0x71'),{'UserId':_0x504a65,[_0x209d3f+_0xcdab('0x6e')]:_0x1a08bb['id']});if(_0x209d3f!==_0xcdab('0x6b'))return;return db[_0xcdab('0x6f')][_0xcdab('0x45')]({'where':{'id':_0x4fb9bd[_0xcdab('0x4d')][_0xcdab('0x61')],'online':0x1},'attributes':['id',_0xcdab('0x2e'),_0xcdab('0x72'),_0xcdab('0x73'),'interface'],'raw':!![]})['then'](function(_0x42b85f){var _0x1ccaa0=_[_0xcdab('0x30')](_0x42b85f,function(_0x1ebc54){return db['UserVoiceQueueRt'][_0xcdab('0x74')]({'membername':_0x1ebc54[_0xcdab('0x2e')],'UserId':_0x1ebc54['id'],'queue_name':_0x1a08bb['name'],'VoiceQueueId':_0x1a08bb['id'],'interface':_[_0xcdab('0x75')](_0x1ebc54[_0xcdab('0x76')])?util[_0xcdab('0x77')](_0xcdab('0x78'),_0x1ebc54[_0xcdab('0x2e')]):_0x1ebc54[_0xcdab('0x76')],'paused':_0x1ebc54[_0xcdab('0x73')]||![],'penalty':_0x1a08bb['TeamVoiceQueue'][_0xcdab('0x6d')]},{'transaction':_0x4ee0b7});});return Promise[_0xcdab('0x79')](_0x1ccaa0);});});});return Promise['all'](_0x3b4b0c);});return Promise[_0xcdab('0x79')](_0x314438);});});return Promise[_0xcdab('0x79')](_0x3251b4)['then'](function(){return _0x210b62[_0xcdab('0x65')](_0x4fb9bd[_0xcdab('0x4d')]['ids'],{'transaction':_0x4ee0b7})[_0xcdab('0x7a')](function(_0x4c0d53){return _0x4c0d53;});});});}})['then'](respondWithResult(_0x3c3707,null))[_0xcdab('0x4c')](handleError(_0x3c3707,null));};exports[_0xcdab('0x7b')]=function(_0xe5da63,_0x4e5499){return db[_0xcdab('0x31')][_0xcdab('0x52')]({'where':{'id':_0xe5da63['params']['id']}})['then'](handleEntityNotFound(_0x4e5499,null))[_0xcdab('0x27')](function(_0x334c54){if(_0x334c54){var _0x1fd39b=[_0xcdab('0x6b'),_0xcdab('0x7c'),_0xcdab('0x7d'),_0xcdab('0x66'),'Fax',_0xcdab('0x68'),'Whatsapp'];return db[_0xcdab('0x6a')][_0xcdab('0x7e')](function(_0x1048c2){var _0x1a5faa=_['map'](_0x1fd39b,function(_0x5f5b4d){var _0x57c3e1={'attributes':['id',_0xcdab('0x2e')]};return _0x334c54['get'+_0x5f5b4d+_0xcdab('0x64')](_0x57c3e1)[_0xcdab('0x27')](function(_0x22d8bc){var _0x3b5444=_[_0xcdab('0x30')](_0x22d8bc,function(_0x5c8b30){return _0x5c8b30[_0xcdab('0x7b')](_0xe5da63['query'][_0xcdab('0x61')],{'transaction':_0x1048c2})['then'](function(){var _0x1bd9cd=JSON[_0xcdab('0x7f')]('['+_0xe5da63['query']['ids']+']');var _0x406e43=_['map'](_0x1bd9cd,function(_0x1b5fdd){socket['emit'](_0xcdab('0x4e')+_0x5f5b4d+_0xcdab('0x80'),{'UserId':Number(_0x1b5fdd),[_0x5f5b4d+'QueueId']:_0x5c8b30['id']});if(_0x5f5b4d!==_0xcdab('0x6b'))return;return db['UserVoiceQueueRt'][_0xcdab('0x28')]({'where':{'VoiceQueueId':_0x5c8b30['id'],'UserId':_0x1b5fdd},'transaction':_0x1048c2});});return Promise[_0xcdab('0x79')](_0x406e43);});});return Promise['all'](_0x3b5444);});});return Promise['all'](_0x1a5faa)[_0xcdab('0x27')](function(){return _0x334c54['removeAgents'](_0xe5da63['query'][_0xcdab('0x61')],{'transaction':_0x1048c2});});});}})[_0xcdab('0x27')](respondWithStatusCode(_0x4e5499,null))[_0xcdab('0x4c')](handleError(_0x4e5499,null));};exports[_0xcdab('0x81')]=function(_0x55d57f,_0x1a31f7,_0x544a56){var _0x5e122a={};var _0x3bddf7={};var _0x1b83be;var _0x2aad99;return db[_0xcdab('0x31')][_0xcdab('0x5f')]({'where':{'id':_0x55d57f[_0xcdab('0x48')]['id']}})[_0xcdab('0x27')](handleEntityNotFound(_0x1a31f7,null))[_0xcdab('0x27')](function(_0x466386){if(_0x466386){_0x1b83be=_0x466386;_0x3bddf7[_0xcdab('0x35')]=_[_0xcdab('0x49')](db[_0xcdab('0x6f')][_0xcdab('0x32')]);_0x3bddf7[_0xcdab('0x36')]=_[_0xcdab('0x49')](_0x55d57f[_0xcdab('0x36')]);_0x3bddf7[_0xcdab('0x37')]=_[_0xcdab('0x38')](_0x3bddf7[_0xcdab('0x35')],_0x3bddf7[_0xcdab('0x36')]);_0x5e122a['attributes']=_[_0xcdab('0x38')](_0x3bddf7['model'],qs[_0xcdab('0x3a')](_0x55d57f['query']['fields']));_0x5e122a[_0xcdab('0x39')]=_0x5e122a[_0xcdab('0x39')]['length']?_0x5e122a[_0xcdab('0x39')]:_0x3bddf7[_0xcdab('0x35')];_0x5e122a[_0xcdab('0x3e')]=qs[_0xcdab('0x3f')](_0x55d57f[_0xcdab('0x36')][_0xcdab('0x3f')]);_0x5e122a[_0xcdab('0x40')]=qs['filters'](_['pick'](_0x55d57f[_0xcdab('0x36')],_0x3bddf7[_0xcdab('0x37')]));if(_0x55d57f['query'][_0xcdab('0x41')]){_0x5e122a[_0xcdab('0x40')]=_['merge'](_0x5e122a[_0xcdab('0x40')],{'$or':_[_0xcdab('0x30')](_0x5e122a[_0xcdab('0x39')],function(_0x5a3a07){var _0x392c87={};_0x392c87[_0x5a3a07]={'$like':'%'+_0x55d57f['query']['filter']+'%'};return _0x392c87;})});}_0x5e122a=_[_0xcdab('0x42')]({},_0x5e122a,_0x55d57f[_0xcdab('0x44')]);return _0x1b83be[_0xcdab('0x81')](_0x5e122a);}})[_0xcdab('0x27')](function(_0x3d9943){if(_0x3d9943){_0x2aad99=_0x3d9943['length'];if(!_0x55d57f[_0xcdab('0x36')][_0xcdab('0x3c')](_0xcdab('0x82'))){_0x5e122a[_0xcdab('0x3d')]=qs[_0xcdab('0x3d')](_0x55d57f[_0xcdab('0x36')][_0xcdab('0x3d')]);_0x5e122a[_0xcdab('0x1d')]=qs[_0xcdab('0x1d')](_0x55d57f[_0xcdab('0x36')]['offset']);}return _0x1b83be['getAgents'](_0x5e122a);}})[_0xcdab('0x27')](function(_0xb3d51a){if(_0xb3d51a){return _0xb3d51a?{'count':_0x2aad99,'rows':_0xb3d51a}:null;}})[_0xcdab('0x27')](respondWithResult(_0x1a31f7,null))['catch'](handleError(_0x1a31f7,null));};
\ No newline at end of file
+var _0xf3e0=['getQueues','findOne','channel','isValidChannel','ValidationError','Unknown\x20channel','capitalize','toLowerCase','intersection','fields','sort','Queues','addQueues','add','removeQueues','remove','ids','addAgents','isArray','Voice','Chat','Sms','Openchannel','Whatsapp','transaction','through','QueueId','TeamVoiceQueue','penalty','User','findOrCreate','emit','Queue:save','voicePause','UserVoiceQueueRt','upsert','isNil','interface','format','SIP/%s','all','VoicePrefixId','spread','removeAgents','Mail','Fax','Queue:remove','getAgents','nolimit','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./team.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','error','stack','name','send','index','map','Team','rawAttributes','fieldName','key','query','model','attributes','length','hasOwnProperty','order','where','filters','pick','filter','VIRTUAL','merge','includeAll','include','findAll','show','params','keys','options','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Teams','autoAssociation','UserProfileResource','catch','destroy','sequelize','SELECT\x20UserId\x20FROM\x20user_has_teams\x20WHERE\x20TeamId\x20=\x20','Sequelize','QueryTypes','SELECT','UserVoiceQueue','SELECT\x20MailQueueId\x20FROM\x20team_has_mail_queues\x20WHERE\x20TeamId\x20=\x20','MailQueueId','UserMailQueue','SELECT\x20SmsQueueId\x20FROM\x20team_has_sms_queues\x20WHERE\x20TeamId\x20=\x20','SmsQueueId','UserSmsQueue','ChatQueueId','UserChatQueue','SELECT\x20FaxQueueId\x20FROM\x20team_has_fax_queues\x20WHERE\x20TeamId\x20=\x20','FaxQueueId','UserFaxQueue','SELECT\x20OpenchannelQueueId\x20FROM\x20team_has_openchannel_queues\x20WHERE\x20TeamId\x20=\x20','OpenchannelQueueId','SELECT\x20WhatsappQueueId\x20FROM\x20team_has_whatsapp_queues\x20WHERE\x20TeamId\x20=\x20','WhatsappQueueId','UserWhatsappQueue','TeamVoicePrefix','UserVoicePrefix'];(function(_0x446186,_0x116e31){var _0x63b564=function(_0x590a14){while(--_0x590a14){_0x446186['push'](_0x446186['shift']());}};_0x63b564(++_0x116e31);}(_0xf3e0,0xd1));var _0x0f3e=function(_0x2adbeb,_0x5581be){_0x2adbeb=_0x2adbeb-0x0;var _0x5e18a6=_0xf3e0[_0x2adbeb];return _0x5e18a6;};'use strict';var emlformat=require(_0x0f3e('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x0f3e('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x0f3e('0x2'));var moment=require(_0x0f3e('0x3'));var BPromise=require(_0x0f3e('0x4'));var Mustache=require(_0x0f3e('0x5'));var util=require(_0x0f3e('0x6'));var path=require(_0x0f3e('0x7'));var sox=require(_0x0f3e('0x8'));var csv=require(_0x0f3e('0x9'));var ejs=require(_0x0f3e('0xa'));var fs=require('fs');var fs_extra=require(_0x0f3e('0xb'));var _=require(_0x0f3e('0xc'));var squel=require(_0x0f3e('0xd'));var crypto=require(_0x0f3e('0xe'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x0f3e('0x9'));var querystring=require(_0x0f3e('0xf'));var Papa=require(_0x0f3e('0x10'));var Redis=require(_0x0f3e('0x11'));var authService=require(_0x0f3e('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x0f3e('0x13'));var hardwareService=require(_0x0f3e('0x14'));var logger=require('../../config/logger')(_0x0f3e('0x15'));var utils=require(_0x0f3e('0x16'));var config=require(_0x0f3e('0x17'));var licenseUtil=require(_0x0f3e('0x18'));var db=require(_0x0f3e('0x19'))['db'];config[_0x0f3e('0x1a')]=_[_0x0f3e('0x1b')](config[_0x0f3e('0x1a')],{'host':_0x0f3e('0x1c'),'port':0x18eb});var socket=require(_0x0f3e('0x1d'))(new Redis(config[_0x0f3e('0x1a')]));require(_0x0f3e('0x1e'))[_0x0f3e('0x1f')](socket);function respondWithStatusCode(_0x57d1ee,_0x56f087){_0x56f087=_0x56f087||0xcc;return function(_0x583ebc){if(_0x583ebc){return _0x57d1ee[_0x0f3e('0x20')](_0x56f087);}return _0x57d1ee[_0x0f3e('0x21')](_0x56f087)[_0x0f3e('0x22')]();};}function respondWithResult(_0x23aa86,_0x27db11){_0x27db11=_0x27db11||0xc8;return function(_0x367a77){if(_0x367a77){return _0x23aa86[_0x0f3e('0x21')](_0x27db11)[_0x0f3e('0x23')](_0x367a77);}};}function respondWithFilteredResult(_0x4056bb,_0x16c7eb){return function(_0x7c1bdc){if(_0x7c1bdc){var _0x73ff6c=typeof _0x16c7eb[_0x0f3e('0x24')]===_0x0f3e('0x25')&&typeof _0x16c7eb[_0x0f3e('0x26')]===_0x0f3e('0x25');var _0x5a04bb=_0x7c1bdc[_0x0f3e('0x27')];var _0x4445b2=_0x73ff6c?0x0:_0x16c7eb['offset'];var _0x28c2cd=_0x73ff6c?_0x7c1bdc[_0x0f3e('0x27')]:_0x16c7eb[_0x0f3e('0x24')]+_0x16c7eb[_0x0f3e('0x26')];var _0x2ea478;if(_0x28c2cd>=_0x5a04bb){_0x28c2cd=_0x5a04bb;_0x2ea478=0xc8;}else{_0x2ea478=0xce;}_0x4056bb[_0x0f3e('0x21')](_0x2ea478);return _0x4056bb[_0x0f3e('0x28')](_0x0f3e('0x29'),_0x4445b2+'-'+_0x28c2cd+'/'+_0x5a04bb)[_0x0f3e('0x23')](_0x7c1bdc);}return null;};}function patchUpdates(_0x5137cd){return function(_0x3ad45a){try{jsonpatch[_0x0f3e('0x2a')](_0x3ad45a,_0x5137cd,!![]);}catch(_0x54b0c6){return BPromise['reject'](_0x54b0c6);}return _0x3ad45a[_0x0f3e('0x2b')]();};}function saveUpdates(_0x953795,_0x30e64d){return function(_0x4bacdf){if(_0x4bacdf){return _0x4bacdf[_0x0f3e('0x2c')](_0x953795)[_0x0f3e('0x2d')](function(_0x1b74b7){return _0x1b74b7;});}return null;};}function handleEntityNotFound(_0x2ff440,_0x1508fb){return function(_0x23f3ef){if(!_0x23f3ef){_0x2ff440[_0x0f3e('0x20')](0x194);}return _0x23f3ef;};}function handleError(_0x3487c8,_0x6a260d){_0x6a260d=_0x6a260d||0x1f4;return function(_0x35bf0b){logger[_0x0f3e('0x2e')](_0x35bf0b[_0x0f3e('0x2f')]);if(_0x35bf0b[_0x0f3e('0x30')]){delete _0x35bf0b['name'];}_0x3487c8[_0x0f3e('0x21')](_0x6a260d)[_0x0f3e('0x31')](_0x35bf0b);};}exports[_0x0f3e('0x32')]=function(_0x1df49f,_0x2c8316){var _0x4cae3f={},_0x47fcf8={},_0xc3daad={'count':0x0,'rows':[]};var _0x5da4e4=_[_0x0f3e('0x33')](db[_0x0f3e('0x34')][_0x0f3e('0x35')],function(_0x1c21ba){return{'name':_0x1c21ba[_0x0f3e('0x36')],'type':_0x1c21ba['type'][_0x0f3e('0x37')]};});_0x47fcf8['model']=_['map'](_0x5da4e4,_0x0f3e('0x30'));_0x47fcf8[_0x0f3e('0x38')]=_['keys'](_0x1df49f['query']);_0x47fcf8['filters']=_['intersection'](_0x47fcf8[_0x0f3e('0x39')],_0x47fcf8['query']);_0x4cae3f[_0x0f3e('0x3a')]=_['intersection'](_0x47fcf8[_0x0f3e('0x39')],qs['fields'](_0x1df49f['query']['fields']));_0x4cae3f[_0x0f3e('0x3a')]=_0x4cae3f[_0x0f3e('0x3a')][_0x0f3e('0x3b')]?_0x4cae3f[_0x0f3e('0x3a')]:_0x47fcf8['model'];if(!_0x1df49f['query'][_0x0f3e('0x3c')]('nolimit')){_0x4cae3f[_0x0f3e('0x26')]=qs[_0x0f3e('0x26')](_0x1df49f[_0x0f3e('0x38')][_0x0f3e('0x26')]);_0x4cae3f[_0x0f3e('0x24')]=qs[_0x0f3e('0x24')](_0x1df49f['query'][_0x0f3e('0x24')]);}_0x4cae3f[_0x0f3e('0x3d')]=qs['sort'](_0x1df49f['query']['sort']);_0x4cae3f[_0x0f3e('0x3e')]=qs[_0x0f3e('0x3f')](_[_0x0f3e('0x40')](_0x1df49f[_0x0f3e('0x38')],_0x47fcf8['filters']),_0x5da4e4);if(_0x1df49f[_0x0f3e('0x38')][_0x0f3e('0x41')]){_0x4cae3f[_0x0f3e('0x3e')]=_['merge'](_0x4cae3f[_0x0f3e('0x3e')],{'$or':_[_0x0f3e('0x33')](_0x5da4e4,function(_0x448b9a){if(_0x448b9a['type']!==_0x0f3e('0x42')){var _0x3a6a94={};_0x3a6a94[_0x448b9a['name']]={'$like':'%'+_0x1df49f[_0x0f3e('0x38')][_0x0f3e('0x41')]+'%'};return _0x3a6a94;}})});}_0x4cae3f=_[_0x0f3e('0x43')]({},_0x4cae3f,_0x1df49f['options']);var _0x201983={'where':_0x4cae3f['where']};return db[_0x0f3e('0x34')][_0x0f3e('0x27')](_0x201983)[_0x0f3e('0x2d')](function(_0x5cd9b5){_0xc3daad[_0x0f3e('0x27')]=_0x5cd9b5;if(_0x1df49f[_0x0f3e('0x38')][_0x0f3e('0x44')]){_0x4cae3f[_0x0f3e('0x45')]=[{'all':!![]}];}return db[_0x0f3e('0x34')][_0x0f3e('0x46')](_0x4cae3f);})[_0x0f3e('0x2d')](function(_0x33eb6c){_0xc3daad['rows']=_0x33eb6c;return _0xc3daad;})['then'](respondWithFilteredResult(_0x2c8316,_0x4cae3f))['catch'](handleError(_0x2c8316,null));};exports[_0x0f3e('0x47')]=function(_0xec579,_0x4f9fe3){var _0x37292a={'raw':![],'where':{'id':_0xec579[_0x0f3e('0x48')]['id']}},_0x39239a={};_0x39239a[_0x0f3e('0x39')]=_[_0x0f3e('0x49')](db['Team'][_0x0f3e('0x35')]);_0x39239a[_0x0f3e('0x38')]=_[_0x0f3e('0x49')](_0xec579['query']);_0x39239a['filters']=_['intersection'](_0x39239a[_0x0f3e('0x39')],_0x39239a[_0x0f3e('0x38')]);_0x37292a[_0x0f3e('0x3a')]=_['intersection'](_0x39239a['model'],qs['fields'](_0xec579[_0x0f3e('0x38')]['fields']));_0x37292a['attributes']=_0x37292a[_0x0f3e('0x3a')][_0x0f3e('0x3b')]?_0x37292a['attributes']:_0x39239a[_0x0f3e('0x39')];if(_0xec579[_0x0f3e('0x38')]['includeAll']){_0x37292a[_0x0f3e('0x45')]=[{'all':!![]}];}_0x37292a=_[_0x0f3e('0x43')]({},_0x37292a,_0xec579[_0x0f3e('0x4a')]);return db[_0x0f3e('0x34')][_0x0f3e('0x4b')](_0x37292a)[_0x0f3e('0x2d')](handleEntityNotFound(_0x4f9fe3,null))['then'](respondWithResult(_0x4f9fe3,null))['catch'](handleError(_0x4f9fe3,null));};exports['create']=function(_0x54341e,_0x382cba){return db[_0x0f3e('0x34')][_0x0f3e('0x4c')](_0x54341e[_0x0f3e('0x4d')],{})['then'](function(_0x4c7f4b){var _0x4a7221=_0x54341e[_0x0f3e('0x4e')][_0x0f3e('0x4f')]({'plain':!![]});if(!_0x4a7221)throw new Error(_0x0f3e('0x50'));if(_0x4a7221[_0x0f3e('0x51')]===_0x0f3e('0x4e')){var _0x3376ea=_0x4c7f4b[_0x0f3e('0x4f')]({'plain':!![]});var _0x29d755=_0x0f3e('0x52');return db['UserProfileSection'][_0x0f3e('0x4b')]({'where':{'name':_0x29d755,'userProfileId':_0x4a7221['userProfileId']},'raw':!![]})[_0x0f3e('0x2d')](function(_0x4aefd5){if(_0x4aefd5&&_0x4aefd5[_0x0f3e('0x53')]===0x0){return db[_0x0f3e('0x54')][_0x0f3e('0x4c')]({'name':_0x3376ea[_0x0f3e('0x30')],'resourceId':_0x3376ea['id'],'type':_0x4aefd5['name'],'sectionId':_0x4aefd5['id']},{})['then'](function(){return _0x4c7f4b;});}else{return _0x4c7f4b;}})[_0x0f3e('0x55')](function(_0xfffae5){logger[_0x0f3e('0x2e')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0xfffae5);throw _0xfffae5;});}return _0x4c7f4b;})['then'](respondWithResult(_0x382cba,0xc9))[_0x0f3e('0x55')](handleError(_0x382cba,null));};exports[_0x0f3e('0x2c')]=function(_0x27fb3f,_0x246a91){if(_0x27fb3f['body']['id']){delete _0x27fb3f[_0x0f3e('0x4d')]['id'];}return db[_0x0f3e('0x34')]['find']({'where':{'id':_0x27fb3f[_0x0f3e('0x48')]['id']}})[_0x0f3e('0x2d')](handleEntityNotFound(_0x246a91,null))[_0x0f3e('0x2d')](saveUpdates(_0x27fb3f[_0x0f3e('0x4d')],null))[_0x0f3e('0x2d')](respondWithResult(_0x246a91,null))[_0x0f3e('0x55')](handleError(_0x246a91,null));};exports[_0x0f3e('0x56')]=function(_0x1034ff,_0x5a93ed){var _0x3c156c=_0x1034ff[_0x0f3e('0x48')]['id'];var _0x495377=[];return db[_0x0f3e('0x57')]['transaction'](function(_0x4b2f7b){var _0x3adf55=_0x0f3e('0x58')+_0x3c156c;return db[_0x0f3e('0x57')][_0x0f3e('0x38')](_0x3adf55,{'type':db[_0x0f3e('0x59')][_0x0f3e('0x5a')][_0x0f3e('0x5b')],'raw':!![],'transaction':_0x4b2f7b})[_0x0f3e('0x2d')](function(_0x1e3944){_0x495377=_[_0x0f3e('0x33')](_0x1e3944,function(_0x24fc35){return Number(_0x24fc35['UserId']);});})['then'](function(){var _0x536d46='SELECT\x20VoiceQueueId\x20FROM\x20team_has_voice_queues\x20WHERE\x20TeamId\x20=\x20'+_0x3c156c;return db[_0x0f3e('0x57')][_0x0f3e('0x38')](_0x536d46,{'type':db[_0x0f3e('0x59')][_0x0f3e('0x5a')][_0x0f3e('0x5b')],'raw':!![],'transaction':_0x4b2f7b});})[_0x0f3e('0x2d')](function(_0x1e5e7d){var _0x39b010=_['map'](_0x1e5e7d,function(_0x29b142){return Number(_0x29b142['VoiceQueueId']);});return db[_0x0f3e('0x5c')]['destroy']({'where':{'UserId':{'$in':_0x495377},'VoiceQueueId':{'$in':_0x39b010}},'transaction':_0x4b2f7b});})[_0x0f3e('0x2d')](function(){var _0x5af851=_0x0f3e('0x5d')+_0x3c156c;return db['sequelize'][_0x0f3e('0x38')](_0x5af851,{'type':db[_0x0f3e('0x59')][_0x0f3e('0x5a')][_0x0f3e('0x5b')],'raw':!![],'transaction':_0x4b2f7b});})[_0x0f3e('0x2d')](function(_0x409ab8){var _0x511691=_['map'](_0x409ab8,function(_0x665708){return Number(_0x665708[_0x0f3e('0x5e')]);});return db[_0x0f3e('0x5f')]['destroy']({'where':{'UserId':{'$in':_0x495377},'MailQueueId':{'$in':_0x511691}},'transaction':_0x4b2f7b});})['then'](function(){var _0x3b3d12=_0x0f3e('0x60')+_0x3c156c;return db[_0x0f3e('0x57')][_0x0f3e('0x38')](_0x3b3d12,{'type':db['Sequelize'][_0x0f3e('0x5a')]['SELECT'],'raw':!![],'transaction':_0x4b2f7b});})[_0x0f3e('0x2d')](function(_0x3d02dd){var _0x102838=_[_0x0f3e('0x33')](_0x3d02dd,function(_0xfd9574){return Number(_0xfd9574[_0x0f3e('0x61')]);});return db[_0x0f3e('0x62')][_0x0f3e('0x56')]({'where':{'UserId':{'$in':_0x495377},'SmsQueueId':{'$in':_0x102838}},'transaction':_0x4b2f7b});})[_0x0f3e('0x2d')](function(){var _0x226716='SELECT\x20ChatQueueId\x20FROM\x20team_has_chat_queues\x20WHERE\x20TeamId\x20=\x20'+_0x3c156c;return db[_0x0f3e('0x57')][_0x0f3e('0x38')](_0x226716,{'type':db['Sequelize'][_0x0f3e('0x5a')][_0x0f3e('0x5b')],'raw':!![],'transaction':_0x4b2f7b});})[_0x0f3e('0x2d')](function(_0x3c674e){var _0x225b7c=_['map'](_0x3c674e,function(_0x3db219){return Number(_0x3db219[_0x0f3e('0x63')]);});return db[_0x0f3e('0x64')][_0x0f3e('0x56')]({'where':{'UserId':{'$in':_0x495377},'ChatQueueId':{'$in':_0x225b7c}},'transaction':_0x4b2f7b});})[_0x0f3e('0x2d')](function(){var _0x2878dd=_0x0f3e('0x65')+_0x3c156c;return db[_0x0f3e('0x57')][_0x0f3e('0x38')](_0x2878dd,{'type':db[_0x0f3e('0x59')][_0x0f3e('0x5a')]['SELECT'],'raw':!![],'transaction':_0x4b2f7b});})[_0x0f3e('0x2d')](function(_0x491015){var _0x3dcb6b=_[_0x0f3e('0x33')](_0x491015,function(_0x136564){return Number(_0x136564[_0x0f3e('0x66')]);});return db[_0x0f3e('0x67')]['destroy']({'where':{'UserId':{'$in':_0x495377},'FaxQueueId':{'$in':_0x3dcb6b}},'transaction':_0x4b2f7b});})[_0x0f3e('0x2d')](function(){var _0x1409d2=_0x0f3e('0x68')+_0x3c156c;return db[_0x0f3e('0x57')][_0x0f3e('0x38')](_0x1409d2,{'type':db['Sequelize']['QueryTypes'][_0x0f3e('0x5b')],'raw':!![],'transaction':_0x4b2f7b});})[_0x0f3e('0x2d')](function(_0x5a201d){var _0xc6ac4e=_[_0x0f3e('0x33')](_0x5a201d,function(_0x495f5c){return Number(_0x495f5c[_0x0f3e('0x69')]);});return db['UserOpenchannelQueue'][_0x0f3e('0x56')]({'where':{'UserId':{'$in':_0x495377},'OpenchannelQueueId':{'$in':_0xc6ac4e}},'transaction':_0x4b2f7b});})['then'](function(){var _0x1e0fe1=_0x0f3e('0x6a')+_0x3c156c;return db[_0x0f3e('0x57')][_0x0f3e('0x38')](_0x1e0fe1,{'type':db[_0x0f3e('0x59')]['QueryTypes'][_0x0f3e('0x5b')],'raw':!![],'transaction':_0x4b2f7b});})[_0x0f3e('0x2d')](function(_0x3950c5){var _0x59ca6c=_[_0x0f3e('0x33')](_0x3950c5,function(_0x5ae408){return Number(_0x5ae408[_0x0f3e('0x6b')]);});return db[_0x0f3e('0x6c')][_0x0f3e('0x56')]({'where':{'UserId':{'$in':_0x495377},'WhatsappQueueId':{'$in':_0x59ca6c}},'transaction':_0x4b2f7b});})[_0x0f3e('0x2d')](function(){return db[_0x0f3e('0x6d')][_0x0f3e('0x4b')]({'where':{'TeamId':_0x3c156c}});})['then'](function(_0x2abb0e){if(_0x2abb0e===null){return;}return db[_0x0f3e('0x6e')][_0x0f3e('0x56')]({'where':{'UserId':{'$in':_0x495377},'VoicePrefixId':_0x2abb0e['VoicePrefixId']},'transaction':_0x4b2f7b});})[_0x0f3e('0x2d')](function(){return db['Team'][_0x0f3e('0x56')]({'where':{'id':_0x3c156c},'cascade':!![],'transaction':_0x4b2f7b});})[_0x0f3e('0x2d')](function(_0x463ddf){if(_0x463ddf===0x0){_0x5a93ed[_0x0f3e('0x20')](0x194);}else{return db['UserProfileResource'][_0x0f3e('0x56')]({'where':{'type':_0x0f3e('0x52'),'resourceId':_0x3c156c},'cascade':!![],'transaction':_0x4b2f7b})[_0x0f3e('0x2d')](function(){_0x5a93ed['status'](0xcc)[_0x0f3e('0x22')]();});}})[_0x0f3e('0x55')](function(_0x423b53){_0x5a93ed[_0x0f3e('0x21')](0x1f4)[_0x0f3e('0x31')](_0x423b53);});});};exports[_0x0f3e('0x6f')]=function(_0x2ccfe8,_0x53a1c5,_0x4b0d34){return db[_0x0f3e('0x34')][_0x0f3e('0x70')]({'where':{'id':_0x2ccfe8['params']['id']}})['then'](handleEntityNotFound(_0x53a1c5,null))[_0x0f3e('0x2d')](function(_0xda2277){if(!_0x2ccfe8[_0x0f3e('0x38')][_0x0f3e('0x71')]||!utils[_0x0f3e('0x72')](_0x2ccfe8[_0x0f3e('0x38')][_0x0f3e('0x71')])){throw new db['Sequelize'][(_0x0f3e('0x73'))](_0x0f3e('0x74'));}var _0x4f0d07={};var _0x1ce75a={};_0x1ce75a['model']=_['keys'](db[_[_0x0f3e('0x75')](_0x2ccfe8[_0x0f3e('0x38')][_0x0f3e('0x71')][_0x0f3e('0x76')]())+'Queue'][_0x0f3e('0x35')]);_0x1ce75a[_0x0f3e('0x38')]=_['keys'](_0x2ccfe8[_0x0f3e('0x38')]);_0x1ce75a[_0x0f3e('0x3f')]=_[_0x0f3e('0x77')](_0x1ce75a['model'],_0x1ce75a[_0x0f3e('0x38')]);_0x4f0d07[_0x0f3e('0x3a')]=_[_0x0f3e('0x77')](_0x1ce75a[_0x0f3e('0x39')],qs[_0x0f3e('0x78')](_0x2ccfe8['query'][_0x0f3e('0x78')]));_0x4f0d07[_0x0f3e('0x3a')]=_0x4f0d07[_0x0f3e('0x3a')][_0x0f3e('0x3b')]?_0x4f0d07[_0x0f3e('0x3a')]:_0x1ce75a[_0x0f3e('0x39')];_0x4f0d07['limit']=qs[_0x0f3e('0x26')](_0x2ccfe8[_0x0f3e('0x38')][_0x0f3e('0x26')]);_0x4f0d07[_0x0f3e('0x24')]=qs[_0x0f3e('0x24')](_0x2ccfe8[_0x0f3e('0x38')][_0x0f3e('0x24')]);_0x4f0d07[_0x0f3e('0x3d')]=qs[_0x0f3e('0x79')](_0x2ccfe8['query'][_0x0f3e('0x79')]);_0x4f0d07['where']=qs[_0x0f3e('0x3f')](_[_0x0f3e('0x40')](_0x2ccfe8[_0x0f3e('0x38')],_0x1ce75a[_0x0f3e('0x3f')]));_0x4f0d07=_[_0x0f3e('0x43')]({},_0x4f0d07,_0x2ccfe8['options']);return _0xda2277[_0x0f3e('0x4f')+_['capitalize'](_0x2ccfe8[_0x0f3e('0x38')][_0x0f3e('0x71')][_0x0f3e('0x76')]())+_0x0f3e('0x7a')](_0x4f0d07);})[_0x0f3e('0x2d')](respondWithResult(_0x53a1c5,null))[_0x0f3e('0x55')](handleError(_0x53a1c5,null));};exports[_0x0f3e('0x7b')]=function(_0x4f219a,_0x48478c,_0x117c85){return db[_0x0f3e('0x34')][_0x0f3e('0x70')]({'where':{'id':_0x4f219a[_0x0f3e('0x48')]['id']}})[_0x0f3e('0x2d')](function(_0x45f5c4){if(_0x45f5c4){if(!_0x4f219a[_0x0f3e('0x4d')][_0x0f3e('0x71')]||!utils[_0x0f3e('0x72')](_0x4f219a['body'][_0x0f3e('0x71')])){throw new db[(_0x0f3e('0x59'))][(_0x0f3e('0x73'))](_0x0f3e('0x74'));}return _0x45f5c4[_0x0f3e('0x7c')+_['capitalize'](_0x4f219a['body'][_0x0f3e('0x71')][_0x0f3e('0x76')]())+_0x0f3e('0x7a')](_0x4f219a['body']['ids']);}return null;})['then'](handleEntityNotFound(_0x48478c,null))[_0x0f3e('0x2d')](respondWithStatusCode(_0x48478c,null))['catch'](handleError(_0x48478c,null));};exports[_0x0f3e('0x7d')]=function(_0x2ec8,_0x39fd68,_0x297d4b){return db[_0x0f3e('0x34')][_0x0f3e('0x70')]({'where':{'id':_0x2ec8['params']['id']}})[_0x0f3e('0x2d')](function(_0x4525af){if(_0x4525af){if(!_0x2ec8[_0x0f3e('0x38')][_0x0f3e('0x71')]||!utils[_0x0f3e('0x72')](_0x2ec8['query'][_0x0f3e('0x71')])){throw new db[(_0x0f3e('0x59'))][(_0x0f3e('0x73'))](_0x0f3e('0x74'));}return _0x4525af[_0x0f3e('0x7e')+_[_0x0f3e('0x75')](_0x2ec8[_0x0f3e('0x38')][_0x0f3e('0x71')][_0x0f3e('0x76')]())+'Queues'](_0x2ec8[_0x0f3e('0x38')][_0x0f3e('0x7f')]);}return null;})[_0x0f3e('0x2d')](handleEntityNotFound(_0x39fd68,null))[_0x0f3e('0x2d')](respondWithStatusCode(_0x39fd68,null))[_0x0f3e('0x55')](handleError(_0x39fd68,null));};exports[_0x0f3e('0x80')]=function(_0x2fe3b1,_0x144767){var _0x704f05=_[_0x0f3e('0x81')](_0x2fe3b1[_0x0f3e('0x4d')][_0x0f3e('0x7f')])?_0x2fe3b1[_0x0f3e('0x4d')]['ids']:[_0x2fe3b1[_0x0f3e('0x4d')]['ids']];var _0x3ab193=_0x2fe3b1[_0x0f3e('0x48')]['id'];return db[_0x0f3e('0x34')][_0x0f3e('0x4b')]({'where':{'id':_0x3ab193}})[_0x0f3e('0x2d')](handleEntityNotFound(_0x144767,null))['then'](function(_0x32a412){if(_0x32a412){var _0x23f23b=[_0x0f3e('0x82'),_0x0f3e('0x83'),'Mail',_0x0f3e('0x84'),'Fax',_0x0f3e('0x85'),_0x0f3e('0x86')];return db[_0x0f3e('0x57')][_0x0f3e('0x87')](function(_0x327d0e){var _0x4f0529=_['map'](_0x23f23b,function(_0x4a0794){var _0xf66be0={'attributes':['id','name']};if(_0x4a0794==='Voice'){_0xf66be0[_0x0f3e('0x88')]={'attributes':['penalty']};}return _0x32a412[_0x0f3e('0x4f')+_0x4a0794+'Queues'](_0xf66be0)[_0x0f3e('0x2d')](function(_0x43ea8c){var _0xd092cf=_[_0x0f3e('0x33')](_0x43ea8c,function(_0xcbe249){var _0x2890dc=_['map'](_0x704f05,function(_0x375e71){var _0x35796a={'where':{'UserId':_0x375e71,[_0x4a0794+_0x0f3e('0x89')]:_0xcbe249['id']},'transaction':_0x327d0e};if(_0x4a0794==='Voice'){_0x35796a[_0x0f3e('0x1b')]={'penalty':_0xcbe249[_0x0f3e('0x8a')][_0x0f3e('0x8b')]};}return db[_0x0f3e('0x8c')+_0x4a0794+'Queue'][_0x0f3e('0x8d')](_0x35796a)[_0x0f3e('0x2d')](function(){socket[_0x0f3e('0x8e')](_0x0f3e('0x4e')+_0x4a0794+_0x0f3e('0x8f'),{'UserId':_0x375e71,[_0x4a0794+_0x0f3e('0x89')]:_0xcbe249['id']});if(_0x4a0794!==_0x0f3e('0x82')){return;}return db[_0x0f3e('0x8c')][_0x0f3e('0x46')]({'where':{'id':_0x704f05,'online':0x1},'attributes':['id',_0x0f3e('0x30'),'online',_0x0f3e('0x90'),'interface'],'raw':!![]})['then'](function(_0x6406fa){var _0x5b5b66=_[_0x0f3e('0x33')](_0x6406fa,function(_0x5e7c79){return db[_0x0f3e('0x91')][_0x0f3e('0x92')]({'membername':_0x5e7c79['name'],'UserId':_0x5e7c79['id'],'queue_name':_0xcbe249[_0x0f3e('0x30')],'VoiceQueueId':_0xcbe249['id'],'interface':_[_0x0f3e('0x93')](_0x5e7c79[_0x0f3e('0x94')])?util[_0x0f3e('0x95')](_0x0f3e('0x96'),_0x5e7c79['name']):_0x5e7c79['interface'],'paused':_0x5e7c79['voicePause']||![],'penalty':_0xcbe249['TeamVoiceQueue'][_0x0f3e('0x8b')]},{'transaction':_0x327d0e});});return Promise[_0x0f3e('0x97')](_0x5b5b66);});});});return Promise[_0x0f3e('0x97')](_0x2890dc);});return Promise[_0x0f3e('0x97')](_0xd092cf);})[_0x0f3e('0x2d')](function(){return db[_0x0f3e('0x6d')]['findOne']({'where':{'teamId':_0x3ab193}})[_0x0f3e('0x2d')](function(_0x134aca){if(_0x134aca){var _0x56800e=_[_0x0f3e('0x33')](_0x704f05,function(_0x277b5c){db['UserVoicePrefix'][_0x0f3e('0x92')]({'UserId':_0x277b5c,'VoicePrefixId':_0x134aca[_0x0f3e('0x98')]});});return Promise[_0x0f3e('0x97')](_0x56800e);}});});});return Promise['all'](_0x4f0529)[_0x0f3e('0x2d')](function(){return _0x32a412[_0x0f3e('0x80')](_0x704f05,{'transaction':_0x327d0e})[_0x0f3e('0x99')](function(_0x140cb6){return _0x140cb6;});});});}})[_0x0f3e('0x2d')](respondWithResult(_0x144767,null))[_0x0f3e('0x55')](handleError(_0x144767,null));};exports[_0x0f3e('0x9a')]=function(_0xc29167,_0x308b6a){var _0x459638=_[_0x0f3e('0x81')](_0xc29167[_0x0f3e('0x38')][_0x0f3e('0x7f')])?_0xc29167[_0x0f3e('0x38')][_0x0f3e('0x7f')]:[_0xc29167[_0x0f3e('0x38')][_0x0f3e('0x7f')]];var _0x229ff2=_0xc29167[_0x0f3e('0x48')]['id'];return db[_0x0f3e('0x34')][_0x0f3e('0x4b')]({'where':{'id':_0x229ff2}})[_0x0f3e('0x2d')](handleEntityNotFound(_0x308b6a,null))['then'](function(_0x8ff1c3){if(_0x8ff1c3){var _0x444cfa=[_0x0f3e('0x82'),_0x0f3e('0x83'),_0x0f3e('0x9b'),_0x0f3e('0x84'),_0x0f3e('0x9c'),'Openchannel',_0x0f3e('0x86')];return db[_0x0f3e('0x57')]['transaction'](function(_0xd2745a){var _0x66603a=_[_0x0f3e('0x33')](_0x444cfa,function(_0x2f9341){var _0x2414a3={'attributes':['id',_0x0f3e('0x30')]};return _0x8ff1c3[_0x0f3e('0x4f')+_0x2f9341+_0x0f3e('0x7a')](_0x2414a3)['then'](function(_0x144816){var _0x14c688=_[_0x0f3e('0x33')](_0x144816,function(_0x24345d){return _0x24345d[_0x0f3e('0x9a')](_0x459638,{'transaction':_0xd2745a})[_0x0f3e('0x2d')](function(){var _0x7fcee=_[_0x0f3e('0x33')](_0x459638,function(_0x4d2078){socket['emit'](_0x0f3e('0x4e')+_0x2f9341+_0x0f3e('0x9d'),{'UserId':Number(_0x4d2078),[_0x2f9341+_0x0f3e('0x89')]:_0x24345d['id']});if(_0x2f9341!=='Voice'){return;}return db['UserVoiceQueueRt']['destroy']({'where':{'VoiceQueueId':_0x24345d['id'],'UserId':_0x4d2078},'transaction':_0xd2745a});});return Promise[_0x0f3e('0x97')](_0x7fcee);});});return Promise[_0x0f3e('0x97')](_0x14c688);});});return Promise[_0x0f3e('0x97')](_0x66603a)['then'](function(){return _0x8ff1c3['removeAgents'](_0x459638,{'transaction':_0xd2745a});})[_0x0f3e('0x2d')](function(){return db[_0x0f3e('0x6d')][_0x0f3e('0x70')]({'where':{'teamId':_0x229ff2}})[_0x0f3e('0x2d')](function(_0x7956aa){if(_0x7956aa){var _0x26523c=_[_0x0f3e('0x33')](_0x459638,function(_0x49c192){db[_0x0f3e('0x6e')]['destroy']({'where':{'UserId':_0x49c192,'VoicePrefixId':_0x7956aa['VoicePrefixId']}});});return Promise[_0x0f3e('0x97')](_0x26523c);}});});});}})['then'](respondWithStatusCode(_0x308b6a,null))['catch'](handleError(_0x308b6a,null));};exports[_0x0f3e('0x9e')]=function(_0x499d89,_0x4f33ec,_0x593c69){var _0x415d52={};var _0x22f760={};var _0x4a74fa;var _0x264f12;return db[_0x0f3e('0x34')]['findOne']({'where':{'id':_0x499d89[_0x0f3e('0x48')]['id']}})[_0x0f3e('0x2d')](handleEntityNotFound(_0x4f33ec,null))['then'](function(_0x55f8e1){if(_0x55f8e1){_0x4a74fa=_0x55f8e1;_0x22f760[_0x0f3e('0x39')]=_[_0x0f3e('0x49')](db[_0x0f3e('0x8c')][_0x0f3e('0x35')]);_0x22f760['query']=_[_0x0f3e('0x49')](_0x499d89[_0x0f3e('0x38')]);_0x22f760[_0x0f3e('0x3f')]=_['intersection'](_0x22f760[_0x0f3e('0x39')],_0x22f760[_0x0f3e('0x38')]);_0x415d52['attributes']=_['intersection'](_0x22f760[_0x0f3e('0x39')],qs[_0x0f3e('0x78')](_0x499d89[_0x0f3e('0x38')][_0x0f3e('0x78')]));_0x415d52[_0x0f3e('0x3a')]=_0x415d52['attributes']['length']?_0x415d52[_0x0f3e('0x3a')]:_0x22f760[_0x0f3e('0x39')];_0x415d52['order']=qs['sort'](_0x499d89[_0x0f3e('0x38')][_0x0f3e('0x79')]);_0x415d52[_0x0f3e('0x3e')]=qs[_0x0f3e('0x3f')](_[_0x0f3e('0x40')](_0x499d89[_0x0f3e('0x38')],_0x22f760['filters']));if(_0x499d89[_0x0f3e('0x38')][_0x0f3e('0x41')]){_0x415d52[_0x0f3e('0x3e')]=_[_0x0f3e('0x43')](_0x415d52[_0x0f3e('0x3e')],{'$or':_['map'](_0x415d52[_0x0f3e('0x3a')],function(_0x36991f){var _0x36d32e={};_0x36d32e[_0x36991f]={'$like':'%'+_0x499d89['query'][_0x0f3e('0x41')]+'%'};return _0x36d32e;})});}_0x415d52=_[_0x0f3e('0x43')]({},_0x415d52,_0x499d89['options']);return _0x4a74fa[_0x0f3e('0x9e')](_0x415d52);}})[_0x0f3e('0x2d')](function(_0x431669){if(_0x431669){_0x264f12=_0x431669[_0x0f3e('0x3b')];if(!_0x499d89[_0x0f3e('0x38')][_0x0f3e('0x3c')](_0x0f3e('0x9f'))){_0x415d52[_0x0f3e('0x26')]=qs[_0x0f3e('0x26')](_0x499d89['query'][_0x0f3e('0x26')]);_0x415d52['offset']=qs[_0x0f3e('0x24')](_0x499d89[_0x0f3e('0x38')][_0x0f3e('0x24')]);}return _0x4a74fa[_0x0f3e('0x9e')](_0x415d52);}})[_0x0f3e('0x2d')](function(_0x50bdd6){if(_0x50bdd6){return _0x50bdd6?{'count':_0x264f12,'rows':_0x50bdd6}:null;}})[_0x0f3e('0x2d')](respondWithResult(_0x4f33ec,null))[_0x0f3e('0x55')](handleError(_0x4f33ec,null));};
\ No newline at end of file
index f5c6f2c..0c94ae7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd4b=['hook','exports','events','../../mysqldb','Team','setMaxListeners','save','update','remove','emit','hasOwnProperty'];(function(_0x4e1082,_0x230353){var _0x4b08c5=function(_0x2be6bc){while(--_0x2be6bc){_0x4e1082['push'](_0x4e1082['shift']());}};_0x4b08c5(++_0x230353);}(_0xdd4b,0x65));var _0xbdd4=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0xdd4b[_0x4b369d];return _0x571a98;};'use strict';var EventEmitter=require(_0xbdd4('0x0'));var Team=require(_0xbdd4('0x1'))['db'][_0xbdd4('0x2')];var TeamEvents=new EventEmitter();TeamEvents[_0xbdd4('0x3')](0x0);var events={'afterCreate':_0xbdd4('0x4'),'afterUpdate':_0xbdd4('0x5'),'afterDestroy':_0xbdd4('0x6')};function emitEvent(_0x140a87){return function(_0x220d96,_0x36fc3e,_0x11a3ce){TeamEvents[_0xbdd4('0x7')](_0x140a87+':'+_0x220d96['id'],_0x220d96);TeamEvents[_0xbdd4('0x7')](_0x140a87,_0x220d96);_0x11a3ce(null);};}for(var e in events){if(events[_0xbdd4('0x8')](e)){var event=events[e];Team[_0xbdd4('0x9')](e,emitEvent(event));}}module[_0xbdd4('0xa')]=TeamEvents;
\ No newline at end of file
+var _0xf58e=['hasOwnProperty','hook','events','../../mysqldb','Team','setMaxListeners','save','update','remove','emit'];(function(_0x1beef3,_0x57c4b8){var _0x5af964=function(_0x36f463){while(--_0x36f463){_0x1beef3['push'](_0x1beef3['shift']());}};_0x5af964(++_0x57c4b8);}(_0xf58e,0xca));var _0xef58=function(_0x49cb2b,_0x53e613){_0x49cb2b=_0x49cb2b-0x0;var _0x1f804b=_0xf58e[_0x49cb2b];return _0x1f804b;};'use strict';var EventEmitter=require(_0xef58('0x0'));var Team=require(_0xef58('0x1'))['db'][_0xef58('0x2')];var TeamEvents=new EventEmitter();TeamEvents[_0xef58('0x3')](0x0);var events={'afterCreate':_0xef58('0x4'),'afterUpdate':_0xef58('0x5'),'afterDestroy':_0xef58('0x6')};function emitEvent(_0x1057c4){return function(_0xef4132,_0x5bfd56,_0x518594){TeamEvents[_0xef58('0x7')](_0x1057c4+':'+_0xef4132['id'],_0xef4132);TeamEvents[_0xef58('0x7')](_0x1057c4,_0xef4132);_0x518594(null);};}for(var e in events){if(events[_0xef58('0x8')](e)){var event=events[e];Team[_0xef58('0x9')](e,emitEvent(event));}}module['exports']=TeamEvents;
\ No newline at end of file
index 390ef9b..95d2439 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0ba8=['rimraf','./team.attributes','exports','define','Team','teams','lodash','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x4cbe17,_0x300320){var _0x3070ef=function(_0xce193c){while(--_0xce193c){_0x4cbe17['push'](_0x4cbe17['shift']());}};_0x3070ef(++_0x300320);}(_0x0ba8,0x1f4));var _0x80ba=function(_0x5d46fa,_0x51d20b){_0x5d46fa=_0x5d46fa-0x0;var _0x618cbb=_0x0ba8[_0x5d46fa];return _0x618cbb;};'use strict';var _=require(_0x80ba('0x0'));var util=require('util');var logger=require(_0x80ba('0x1'))(_0x80ba('0x2'));var moment=require(_0x80ba('0x3'));var BPromise=require(_0x80ba('0x4'));var rp=require(_0x80ba('0x5'));var fs=require('fs');var path=require(_0x80ba('0x6'));var rimraf=require(_0x80ba('0x7'));var config=require('../../config/environment');var attributes=require(_0x80ba('0x8'));module[_0x80ba('0x9')]=function(_0x2f781b,_0x2a620b){return _0x2f781b[_0x80ba('0xa')](_0x80ba('0xb'),attributes,{'tableName':_0x80ba('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xacf5=['bluebird','request-promise','path','rimraf','exports','Team','teams','lodash','../../config/logger','moment'];(function(_0x270cb2,_0x225aca){var _0x1ee904=function(_0x15fe52){while(--_0x15fe52){_0x270cb2['push'](_0x270cb2['shift']());}};_0x1ee904(++_0x225aca);}(_0xacf5,0x11f));var _0x5acf=function(_0x1e036f,_0x206c49){_0x1e036f=_0x1e036f-0x0;var _0x59bf22=_0xacf5[_0x1e036f];return _0x59bf22;};'use strict';var _=require(_0x5acf('0x0'));var util=require('util');var logger=require(_0x5acf('0x1'))('api');var moment=require(_0x5acf('0x2'));var BPromise=require(_0x5acf('0x3'));var rp=require(_0x5acf('0x4'));var fs=require('fs');var path=require(_0x5acf('0x5'));var rimraf=require(_0x5acf('0x6'));var config=require('../../config/environment');var attributes=require('./team.attributes');module[_0x5acf('0x7')]=function(_0x599c10,_0x3ed931){return _0x599c10['define'](_0x5acf('0x8'),attributes,{'tableName':_0x5acf('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7d9a033..5adb5c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe59e=['code','message','Team,\x20%s,\x20%s','result','util','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','defaults','redis','localhost','socket.io-emitter','./team.socket','register','request','then','info','request\x20sent','debug','Team,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x43e64c,_0x2f3c57){var _0x3ba422=function(_0x3bfebc){while(--_0x3bfebc){_0x43e64c['push'](_0x43e64c['shift']());}};_0x3ba422(++_0x2f3c57);}(_0xe59e,0xdc));var _0xee59=function(_0x21d881,_0x2bb2b4){_0x21d881=_0x21d881-0x0;var _0x4ff597=_0xe59e[_0x21d881];return _0x4ff597;};'use strict';var _=require('lodash');var util=require(_0xee59('0x0'));var moment=require('moment');var BPromise=require(_0xee59('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xee59('0x2'));var db=require(_0xee59('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0xee59('0x4'))(_0xee59('0x5'));var config=require(_0xee59('0x6'));var jayson=require(_0xee59('0x7'));var client=jayson['client'][_0xee59('0x8')]({'port':0x232a});config['redis']=_[_0xee59('0x9')](config[_0xee59('0xa')],{'host':_0xee59('0xb'),'port':0x18eb});var socket=require(_0xee59('0xc'))(new Redis(config[_0xee59('0xa')]));require(_0xee59('0xd'))[_0xee59('0xe')](socket);function respondWithRpcPromise(_0x3adc83,_0x208327,_0x506290){return new BPromise(function(_0x11da7b,_0x2feeac){return client[_0xee59('0xf')](_0x3adc83,_0x506290)[_0xee59('0x10')](function(_0x5e3fac){logger[_0xee59('0x11')]('Team,\x20%s,\x20%s',_0x208327,_0xee59('0x12'));logger[_0xee59('0x13')](_0xee59('0x14'),_0x208327,_0xee59('0x12'),JSON[_0xee59('0x15')](_0x5e3fac));if(_0x5e3fac[_0xee59('0x16')]){if(_0x5e3fac['error'][_0xee59('0x17')]===0x1f4){logger[_0xee59('0x16')]('Team,\x20%s,\x20%s',_0x208327,_0x5e3fac[_0xee59('0x16')]['message']);return _0x2feeac(_0x5e3fac[_0xee59('0x16')][_0xee59('0x18')]);}logger['error'](_0xee59('0x19'),_0x208327,_0x5e3fac[_0xee59('0x16')][_0xee59('0x18')]);return _0x11da7b(_0x5e3fac[_0xee59('0x16')][_0xee59('0x18')]);}else{logger[_0xee59('0x11')]('Team,\x20%s,\x20%s',_0x208327,_0xee59('0x12'));_0x11da7b(_0x5e3fac[_0xee59('0x1a')][_0xee59('0x18')]);}})['catch'](function(_0x530361){logger['error'](_0xee59('0x19'),_0x208327,_0x530361);_0x2feeac(_0x530361);});});}
\ No newline at end of file
+var _0x9692=['localhost','socket.io-emitter','./team.socket','register','request','then','info','Team,\x20%s,\x20%s','debug','request\x20sent','stringify','error','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','redis','defaults'];(function(_0x225b4e,_0x179ee4){var _0x24237a=function(_0x4ac970){while(--_0x4ac970){_0x225b4e['push'](_0x225b4e['shift']());}};_0x24237a(++_0x179ee4);}(_0x9692,0x152));var _0x2969=function(_0x562d0a,_0x553b2f){_0x562d0a=_0x562d0a-0x0;var _0x271fbc=_0x9692[_0x562d0a];return _0x271fbc;};'use strict';var _=require(_0x2969('0x0'));var util=require(_0x2969('0x1'));var moment=require(_0x2969('0x2'));var BPromise=require(_0x2969('0x3'));var rs=require(_0x2969('0x4'));var fs=require('fs');var Redis=require(_0x2969('0x5'));var db=require(_0x2969('0x6'))['db'];var utils=require(_0x2969('0x7'));var logger=require(_0x2969('0x8'))('rpc');var config=require(_0x2969('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x2969('0xa')]['http']({'port':0x232a});config[_0x2969('0xb')]=_[_0x2969('0xc')](config[_0x2969('0xb')],{'host':_0x2969('0xd'),'port':0x18eb});var socket=require(_0x2969('0xe'))(new Redis(config[_0x2969('0xb')]));require(_0x2969('0xf'))[_0x2969('0x10')](socket);function respondWithRpcPromise(_0x38a4e4,_0x3a2c03,_0x5ca144){return new BPromise(function(_0x14fdcb,_0x34f794){return client[_0x2969('0x11')](_0x38a4e4,_0x5ca144)[_0x2969('0x12')](function(_0x37b8e4){logger[_0x2969('0x13')](_0x2969('0x14'),_0x3a2c03,'request\x20sent');logger[_0x2969('0x15')]('Team,\x20%s,\x20%s,\x20%s',_0x3a2c03,_0x2969('0x16'),JSON[_0x2969('0x17')](_0x37b8e4));if(_0x37b8e4[_0x2969('0x18')]){if(_0x37b8e4['error']['code']===0x1f4){logger[_0x2969('0x18')]('Team,\x20%s,\x20%s',_0x3a2c03,_0x37b8e4[_0x2969('0x18')][_0x2969('0x19')]);return _0x34f794(_0x37b8e4[_0x2969('0x18')][_0x2969('0x19')]);}logger[_0x2969('0x18')](_0x2969('0x14'),_0x3a2c03,_0x37b8e4[_0x2969('0x18')][_0x2969('0x19')]);return _0x14fdcb(_0x37b8e4['error'][_0x2969('0x19')]);}else{logger[_0x2969('0x13')](_0x2969('0x14'),_0x3a2c03,_0x2969('0x16'));_0x14fdcb(_0x37b8e4['result'][_0x2969('0x19')]);}})[_0x2969('0x1a')](function(_0x19a30d){logger[_0x2969('0x18')](_0x2969('0x14'),_0x3a2c03,_0x19a30d);_0x34f794(_0x19a30d);});});}
\ No newline at end of file
index a9d01c6..53b64ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x585b=['team:','./team.events','save','removeListener','register'];(function(_0x140309,_0x59c904){var _0x4d8f26=function(_0x1be854){while(--_0x1be854){_0x140309['push'](_0x140309['shift']());}};_0x4d8f26(++_0x59c904);}(_0x585b,0x1af));var _0xb585=function(_0x122096,_0x60c295){_0x122096=_0x122096-0x0;var _0x3d1966=_0x585b[_0x122096];return _0x3d1966;};'use strict';var TeamEvents=require(_0xb585('0x0'));var events=[_0xb585('0x1'),'remove','update'];function createListener(_0x2da463,_0x527906){return function(_0x124908){_0x527906['emit'](_0x2da463,_0x124908);};}function removeListener(_0x4db6de,_0x5cc948){return function(){TeamEvents[_0xb585('0x2')](_0x4db6de,_0x5cc948);};}exports[_0xb585('0x3')]=function(_0x2ed1c1){for(var _0x474970=0x0,_0x378aff=events['length'];_0x474970<_0x378aff;_0x474970++){var _0x1488a5=events[_0x474970];var _0x4d8dfc=createListener(_0xb585('0x4')+_0x1488a5,_0x2ed1c1);TeamEvents['on'](_0x1488a5,_0x4d8dfc);}};
\ No newline at end of file
+var _0x8aa7=['update','emit','removeListener','register','length','team:','save','remove'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x8aa7,0xb6));var _0x78aa=function(_0x3b0731,_0xcf9925){_0x3b0731=_0x3b0731-0x0;var _0x4204d7=_0x8aa7[_0x3b0731];return _0x4204d7;};'use strict';var TeamEvents=require('./team.events');var events=[_0x78aa('0x0'),_0x78aa('0x1'),_0x78aa('0x2')];function createListener(_0xa5cd25,_0x3d727e){return function(_0x137fc0){_0x3d727e[_0x78aa('0x3')](_0xa5cd25,_0x137fc0);};}function removeListener(_0x5b46d1,_0x2b9bfa){return function(){TeamEvents[_0x78aa('0x4')](_0x5b46d1,_0x2b9bfa);};}exports[_0x78aa('0x5')]=function(_0x229075){for(var _0x2d17c2=0x0,_0x369ee7=events[_0x78aa('0x6')];_0x2d17c2<_0x369ee7;_0x2d17c2++){var _0xa79008=events[_0x2d17c2];var _0x2368ac=createListener(_0x78aa('0x7')+_0xa79008,_0x229075);TeamEvents['on'](_0xa79008,_0x2368ac);}};
\ 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..254a3ca
--- /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 _0x2b85=['INTEGER','exports'];(function(_0x59d89e,_0x55edf5){var _0x554e93=function(_0x3d40bc){while(--_0x3d40bc){_0x59d89e['push'](_0x59d89e['shift']());}};_0x554e93(++_0x55edf5);}(_0x2b85,0x197));var _0x52b8=function(_0x929ef4,_0x3d0e89){_0x929ef4=_0x929ef4-0x0;var _0x34f5a9=_0x2b85[_0x929ef4];return _0x34f5a9;};'use strict';var Sequelize=require('sequelize');module[_0x52b8('0x0')]={'TeamId':{'type':Sequelize['INTEGER']},'VoicePrefixId':{'type':Sequelize[_0x52b8('0x1')]}};
\ 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..2d2e1c4
--- /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 _0xd3a0=['define','TeamVoicePrefix','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','exports'];(function(_0x80d1a,_0x12532d){var _0x462098=function(_0x58d0eb){while(--_0x58d0eb){_0x80d1a['push'](_0x80d1a['shift']());}};_0x462098(++_0x12532d);}(_0xd3a0,0xaa));var _0x0d3a=function(_0x19c3dc,_0x4609b3){_0x19c3dc=_0x19c3dc-0x0;var _0x251265=_0xd3a0[_0x19c3dc];return _0x251265;};'use strict';var _=require(_0x0d3a('0x0'));var util=require(_0x0d3a('0x1'));var logger=require(_0x0d3a('0x2'))(_0x0d3a('0x3'));var moment=require('moment');var BPromise=require(_0x0d3a('0x4'));var rp=require(_0x0d3a('0x5'));var fs=require('fs');var path=require(_0x0d3a('0x6'));var rimraf=require(_0x0d3a('0x7'));var config=require(_0x0d3a('0x8'));var attributes=require('./teamVoicePrefix.attributes');module[_0x0d3a('0x9')]=function(_0x16f051,_0x22cf8f){return _0x16f051[_0x0d3a('0xa')](_0x0d3a('0xb'),attributes,{'tableName':'team_has_voice_prefixes','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a0c88aa..b3d3142 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(_0x64387,_0x40acf0){var _0x32e350=function(_0x4a27fa){while(--_0x4a27fa){_0x64387['push'](_0x64387['shift']());}};_0x32e350(++_0x40acf0);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x4327fe,_0x4f8040){_0x4327fe=_0x4327fe-0x0;var _0x138651=_0xcb91[_0x4327fe];return _0x138651;};'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 _0x70e0=['../../components/auth/service','../../components/interaction/service','exports','multer','util','path','Router','fs-extra'];(function(_0x3ac124,_0x472d71){var _0x2f5a1b=function(_0x3e3ead){while(--_0x3e3ead){_0x3ac124['push'](_0x3ac124['shift']());}};_0x2f5a1b(++_0x472d71);}(_0x70e0,0x17b));var _0x070e=function(_0x1827cc,_0x28e596){_0x1827cc=_0x1827cc-0x0;var _0x4b8c57=_0x70e0[_0x1827cc];return _0x4b8c57;};'use strict';var multer=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var path=require(_0x070e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x070e('0x3')]();var fs_extra=require(_0x070e('0x4'));var auth=require(_0x070e('0x5'));var interaction=require(_0x070e('0x6'));var config=require('../../config/environment');module[_0x070e('0x7')]=router;
\ No newline at end of file
index db0ac8c..d8522d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf5e6=['sequelize','exports'];(function(_0x4fbad6,_0x3eb736){var _0x5a4bc9=function(_0x1753c4){while(--_0x1753c4){_0x4fbad6['push'](_0x4fbad6['shift']());}};_0x5a4bc9(++_0x3eb736);}(_0xf5e6,0x132));var _0x6f5e=function(_0x3443d3,_0xf1bb82){_0x3443d3=_0x3443d3-0x0;var _0x3de675=_0xf5e6[_0x3443d3];return _0x3de675;};'use strict';var Sequelize=require(_0x6f5e('0x0'));module[_0x6f5e('0x1')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x6c8b=['INTEGER','sequelize','exports'];(function(_0x48a8ff,_0x4ac834){var _0x273711=function(_0x591094){while(--_0x591094){_0x48a8ff['push'](_0x48a8ff['shift']());}};_0x273711(++_0x4ac834);}(_0x6c8b,0xa9));var _0xb6c8=function(_0x45d426,_0x81666c){_0x45d426=_0x45d426-0x0;var _0x14b838=_0x6c8b[_0x45d426];return _0x14b838;};'use strict';var Sequelize=require(_0xb6c8('0x0'));module[_0xb6c8('0x1')]={'penalty':{'type':Sequelize[_0xb6c8('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 545179d..f91821e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f29=['team_has_voice_queues','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./teamVoiceQueue.attributes','exports','define','TeamVoiceQueue'];(function(_0xddf6f9,_0xa9bc15){var _0x4877af=function(_0x5f2d81){while(--_0x5f2d81){_0xddf6f9['push'](_0xddf6f9['shift']());}};_0x4877af(++_0xa9bc15);}(_0x4f29,0xfd));var _0x94f2=function(_0x39014b,_0x55875d){_0x39014b=_0x39014b-0x0;var _0xfb6678=_0x4f29[_0x39014b];return _0xfb6678;};'use strict';var _=require('lodash');var util=require(_0x94f2('0x0'));var logger=require(_0x94f2('0x1'))(_0x94f2('0x2'));var moment=require(_0x94f2('0x3'));var BPromise=require(_0x94f2('0x4'));var rp=require(_0x94f2('0x5'));var fs=require('fs');var path=require(_0x94f2('0x6'));var rimraf=require(_0x94f2('0x7'));var config=require(_0x94f2('0x8'));var attributes=require(_0x94f2('0x9'));module[_0x94f2('0xa')]=function(_0x493302,_0x5e9216){return _0x493302[_0x94f2('0xb')](_0x94f2('0xc'),attributes,{'tableName':_0x94f2('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7a2c=['path','rimraf','../../config/environment','exports','team_has_voice_queues','lodash','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x54718a,_0x3a0e53){var _0x4f0903=function(_0xa75034){while(--_0xa75034){_0x54718a['push'](_0x54718a['shift']());}};_0x4f0903(++_0x3a0e53);}(_0x7a2c,0x17b));var _0xc7a2=function(_0x109c32,_0x4f2dd1){_0x109c32=_0x109c32-0x0;var _0x51e11c=_0x7a2c[_0x109c32];return _0x51e11c;};'use strict';var _=require(_0xc7a2('0x0'));var util=require('util');var logger=require(_0xc7a2('0x1'))(_0xc7a2('0x2'));var moment=require(_0xc7a2('0x3'));var BPromise=require(_0xc7a2('0x4'));var rp=require(_0xc7a2('0x5'));var fs=require('fs');var path=require(_0xc7a2('0x6'));var rimraf=require(_0xc7a2('0x7'));var config=require(_0xc7a2('0x8'));var attributes=require('./teamVoiceQueue.attributes');module[_0xc7a2('0x9')]=function(_0x1ddbae,_0x5f334e){return _0x1ddbae['define']('TeamVoiceQueue',attributes,{'tableName':_0xc7a2('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c21b0c9..cc28dcd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e9f=['TeamVoiceQueue,\x20%s,\x20%s','result','util','moment','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','request\x20sent','TeamVoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x53d763,_0x862ce){var _0x9c18f6=function(_0x4a0a06){while(--_0x4a0a06){_0x53d763['push'](_0x53d763['shift']());}};_0x9c18f6(++_0x862ce);}(_0x0e9f,0x7a));var _0xf0e9=function(_0x411d94,_0x5cb74a){_0x411d94=_0x411d94-0x0;var _0x11a065=_0x0e9f[_0x411d94];return _0x11a065;};'use strict';var _=require('lodash');var util=require(_0xf0e9('0x0'));var moment=require(_0xf0e9('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf0e9('0x2'))['db'];var utils=require(_0xf0e9('0x3'));var logger=require(_0xf0e9('0x4'))(_0xf0e9('0x5'));var config=require(_0xf0e9('0x6'));var jayson=require(_0xf0e9('0x7'));var client=jayson[_0xf0e9('0x8')][_0xf0e9('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x29cb56,_0x5000d8,_0x5178ff){return new BPromise(function(_0x1b05b8,_0x171cbf){return client[_0xf0e9('0xa')](_0x29cb56,_0x5178ff)['then'](function(_0x328a6a){logger[_0xf0e9('0xb')]('TeamVoiceQueue,\x20%s,\x20%s',_0x5000d8,_0xf0e9('0xc'));logger['debug'](_0xf0e9('0xd'),_0x5000d8,'request\x20sent',JSON[_0xf0e9('0xe')](_0x328a6a));if(_0x328a6a[_0xf0e9('0xf')]){if(_0x328a6a['error'][_0xf0e9('0x10')]===0x1f4){logger[_0xf0e9('0xf')]('TeamVoiceQueue,\x20%s,\x20%s',_0x5000d8,_0x328a6a['error']['message']);return _0x171cbf(_0x328a6a['error'][_0xf0e9('0x11')]);}logger[_0xf0e9('0xf')](_0xf0e9('0x12'),_0x5000d8,_0x328a6a[_0xf0e9('0xf')]['message']);return _0x1b05b8(_0x328a6a[_0xf0e9('0xf')][_0xf0e9('0x11')]);}else{logger['info'](_0xf0e9('0x12'),_0x5000d8,_0xf0e9('0xc'));_0x1b05b8(_0x328a6a[_0xf0e9('0x13')]['message']);}})['catch'](function(_0xf409e3){logger[_0xf0e9('0xf')](_0xf0e9('0x12'),_0x5000d8,_0xf409e3);_0x171cbf(_0xf409e3);});});}
\ No newline at end of file
+var _0xa4f9=['request\x20sent','stringify','error','code','message','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','TeamVoiceQueue,\x20%s,\x20%s','debug'];(function(_0x3ed0f3,_0x55335c){var _0x3320a7=function(_0x480fde){while(--_0x480fde){_0x3ed0f3['push'](_0x3ed0f3['shift']());}};_0x3320a7(++_0x55335c);}(_0xa4f9,0x1cf));var _0x9a4f=function(_0x440701,_0x5c935d){_0x440701=_0x440701-0x0;var _0x218a7b=_0xa4f9[_0x440701];return _0x218a7b;};'use strict';var _=require(_0x9a4f('0x0'));var util=require(_0x9a4f('0x1'));var moment=require('moment');var BPromise=require(_0x9a4f('0x2'));var rs=require(_0x9a4f('0x3'));var fs=require('fs');var Redis=require(_0x9a4f('0x4'));var db=require(_0x9a4f('0x5'))['db'];var utils=require(_0x9a4f('0x6'));var logger=require(_0x9a4f('0x7'))(_0x9a4f('0x8'));var config=require(_0x9a4f('0x9'));var jayson=require(_0x9a4f('0xa'));var client=jayson[_0x9a4f('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x441550,_0x1dbbcd,_0x3acf82){return new BPromise(function(_0x664e61,_0x4acad2){return client[_0x9a4f('0xc')](_0x441550,_0x3acf82)[_0x9a4f('0xd')](function(_0x49a97b){logger[_0x9a4f('0xe')](_0x9a4f('0xf'),_0x1dbbcd,'request\x20sent');logger[_0x9a4f('0x10')]('TeamVoiceQueue,\x20%s,\x20%s,\x20%s',_0x1dbbcd,_0x9a4f('0x11'),JSON[_0x9a4f('0x12')](_0x49a97b));if(_0x49a97b[_0x9a4f('0x13')]){if(_0x49a97b[_0x9a4f('0x13')][_0x9a4f('0x14')]===0x1f4){logger[_0x9a4f('0x13')](_0x9a4f('0xf'),_0x1dbbcd,_0x49a97b[_0x9a4f('0x13')][_0x9a4f('0x15')]);return _0x4acad2(_0x49a97b[_0x9a4f('0x13')]['message']);}logger[_0x9a4f('0x13')](_0x9a4f('0xf'),_0x1dbbcd,_0x49a97b[_0x9a4f('0x13')]['message']);return _0x664e61(_0x49a97b['error'][_0x9a4f('0x15')]);}else{logger[_0x9a4f('0xe')](_0x9a4f('0xf'),_0x1dbbcd,'request\x20sent');_0x664e61(_0x49a97b[_0x9a4f('0x16')][_0x9a4f('0x15')]);}})[_0x9a4f('0x17')](function(_0x5dbcaf){logger['error'](_0x9a4f('0xf'),_0x1dbbcd,_0x5dbcaf);_0x4acad2(_0x5dbcaf);});});}
\ No newline at end of file
index c005dd5..ef49ed9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6209=['get','/:id','post','create','put','update','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./template.controller','isAuthenticated','index'];(function(_0x2532d2,_0x35f525){var _0x41801e=function(_0x38b0ff){while(--_0x38b0ff){_0x2532d2['push'](_0x2532d2['shift']());}};_0x41801e(++_0x35f525);}(_0x6209,0x1e8));var _0x9620=function(_0x55f8b4,_0x43f30d){_0x55f8b4=_0x55f8b4-0x0;var _0x2475f9=_0x6209[_0x55f8b4];return _0x2475f9;};'use strict';var multer=require(_0x9620('0x0'));var util=require(_0x9620('0x1'));var path=require(_0x9620('0x2'));var timeout=require(_0x9620('0x3'));var express=require(_0x9620('0x4'));var router=express[_0x9620('0x5')]();var fs_extra=require(_0x9620('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x9620('0x7'));var config=require(_0x9620('0x8'));var controller=require(_0x9620('0x9'));router['get']('/',auth[_0x9620('0xa')](),controller[_0x9620('0xb')]);router[_0x9620('0xc')](_0x9620('0xd'),auth['isAuthenticated'](),controller['show']);router[_0x9620('0xe')]('/',auth['isAuthenticated'](),controller[_0x9620('0xf')]);router[_0x9620('0x10')](_0x9620('0xd'),auth[_0x9620('0xa')](),controller[_0x9620('0x11')]);router[_0x9620('0x12')](_0x9620('0xd'),auth['isAuthenticated'](),controller[_0x9620('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0x147b=['/:id','update','destroy','exports','multer','util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./template.controller','isAuthenticated','index','get','show','post','create','put'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0x147b,0x193));var _0xb147=function(_0x54f3e8,_0x3ed493){_0x54f3e8=_0x54f3e8-0x0;var _0x267b37=_0x147b[_0x54f3e8];return _0x267b37;};'use strict';var multer=require(_0xb147('0x0'));var util=require(_0xb147('0x1'));var path=require('path');var timeout=require(_0xb147('0x2'));var express=require(_0xb147('0x3'));var router=express['Router']();var fs_extra=require(_0xb147('0x4'));var auth=require(_0xb147('0x5'));var interaction=require(_0xb147('0x6'));var config=require('../../config/environment');var controller=require(_0xb147('0x7'));router['get']('/',auth[_0xb147('0x8')](),controller[_0xb147('0x9')]);router[_0xb147('0xa')]('/:id',auth['isAuthenticated'](),controller[_0xb147('0xb')]);router[_0xb147('0xc')]('/',auth[_0xb147('0x8')](),controller[_0xb147('0xd')]);router[_0xb147('0xe')](_0xb147('0xf'),auth[_0xb147('0x8')](),controller[_0xb147('0x10')]);router['delete']('/:id',auth[_0xb147('0x8')](),controller[_0xb147('0x11')]);module[_0xb147('0x12')]=router;
\ No newline at end of file
index f706c28..d105a7f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcbfb=['sequelize','exports','STRING'];(function(_0x595c4e,_0x444249){var _0x1e224c=function(_0x3c46d0){while(--_0x3c46d0){_0x595c4e['push'](_0x595c4e['shift']());}};_0x1e224c(++_0x444249);}(_0xcbfb,0xf3));var _0xbcbf=function(_0x4b3b96,_0x5ea6d6){_0x4b3b96=_0x4b3b96-0x0;var _0x504bdb=_0xcbfb[_0x4b3b96];return _0x504bdb;};'use strict';var Sequelize=require(_0xbcbf('0x0'));module[_0xbcbf('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xbcbf('0x2')]},'html':{'type':Sequelize['TEXT']}};
\ No newline at end of file
+var _0x1740=['TEXT','sequelize','exports','STRING'];(function(_0x453e2b,_0x4f1258){var _0x50f306=function(_0x397f14){while(--_0x397f14){_0x453e2b['push'](_0x453e2b['shift']());}};_0x50f306(++_0x4f1258);}(_0x1740,0xb9));var _0x0174=function(_0x2a93a9,_0x304c5a){_0x2a93a9=_0x2a93a9-0x0;var _0x45b3f3=_0x1740[_0x2a93a9];return _0x45b3f3;};'use strict';var Sequelize=require(_0x0174('0x0'));module[_0x0174('0x1')]={'name':{'type':Sequelize[_0x0174('0x2')]},'description':{'type':Sequelize[_0x0174('0x2')]},'html':{'type':Sequelize[_0x0174('0x3')]}};
\ No newline at end of file
index 97055c7..5573222 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7293=['end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','get','Templates','destroy','then','error','stack','name','send','index','map','Template','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','type','merge','options','include','findAll','show','params','includeAll','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','lodash','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status'];(function(_0x3356e1,_0x50b259){var _0x4a2b16=function(_0x4e48d5){while(--_0x4e48d5){_0x3356e1['push'](_0x3356e1['shift']());}};_0x4a2b16(++_0x50b259);}(_0x7293,0x18a));var _0x3729=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0x7293[_0x4565bf];return _0x5610ba;};'use strict';var emlformat=require(_0x3729('0x0'));var rimraf=require(_0x3729('0x1'));var zipdir=require(_0x3729('0x2'));var jsonpatch=require(_0x3729('0x3'));var rp=require(_0x3729('0x4'));var moment=require(_0x3729('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x3729('0x6'));var util=require(_0x3729('0x7'));var path=require(_0x3729('0x8'));var sox=require(_0x3729('0x9'));var csv=require(_0x3729('0xa'));var ejs=require(_0x3729('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x3729('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x3729('0xd'));var deskjs=require(_0x3729('0xe'));var toCsv=require(_0x3729('0xa'));var querystring=require(_0x3729('0xf'));var Papa=require(_0x3729('0x10'));var Redis=require('ioredis');var authService=require(_0x3729('0x11'));var qs=require(_0x3729('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x3729('0x13'));var logger=require(_0x3729('0x14'))('api');var utils=require(_0x3729('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x3729('0x16'));var db=require(_0x3729('0x17'))['db'];function respondWithStatusCode(_0xab379f,_0x3a0d4a){_0x3a0d4a=_0x3a0d4a||0xcc;return function(_0x5c8e2d){if(_0x5c8e2d){return _0xab379f[_0x3729('0x18')](_0x3a0d4a);}return _0xab379f[_0x3729('0x19')](_0x3a0d4a)[_0x3729('0x1a')]();};}function respondWithResult(_0x4f7d12,_0x395025){_0x395025=_0x395025||0xc8;return function(_0x62ca29){if(_0x62ca29){return _0x4f7d12[_0x3729('0x19')](_0x395025)[_0x3729('0x1b')](_0x62ca29);}};}function respondWithFilteredResult(_0x19bad5,_0x216410){return function(_0x236e73){if(_0x236e73){var _0x364b2=typeof _0x216410[_0x3729('0x1c')]===_0x3729('0x1d')&&typeof _0x216410[_0x3729('0x1e')]===_0x3729('0x1d');var _0x5afe09=_0x236e73['count'];var _0x160902=_0x364b2?0x0:_0x216410[_0x3729('0x1c')];var _0x1ea762=_0x364b2?_0x236e73[_0x3729('0x1f')]:_0x216410[_0x3729('0x1c')]+_0x216410['limit'];var _0x478ad7;if(_0x1ea762>=_0x5afe09){_0x1ea762=_0x5afe09;_0x478ad7=0xc8;}else{_0x478ad7=0xce;}_0x19bad5[_0x3729('0x19')](_0x478ad7);return _0x19bad5[_0x3729('0x20')](_0x3729('0x21'),_0x160902+'-'+_0x1ea762+'/'+_0x5afe09)[_0x3729('0x1b')](_0x236e73);}return null;};}function patchUpdates(_0x48ae09){return function(_0xfa8e82){try{jsonpatch[_0x3729('0x22')](_0xfa8e82,_0x48ae09,!![]);}catch(_0x2f3707){return BPromise[_0x3729('0x23')](_0x2f3707);}return _0xfa8e82[_0x3729('0x24')]();};}function saveUpdates(_0x244aab,_0x141f2d){return function(_0x125b7a){if(_0x125b7a){return _0x125b7a[_0x3729('0x25')](_0x244aab)['then'](function(_0x1e259e){return _0x1e259e;});}return null;};}function removeEntity(_0x2b1f86,_0x3101ec){return function(_0x339263){if(_0x339263){return _0x339263['destroy']()['then'](function(){var _0x232867=_0x339263[_0x3729('0x26')]({'plain':!![]});var _0x390d62=_0x3729('0x27');return db['UserProfileResource'][_0x3729('0x28')]({'where':{'type':_0x390d62,'resourceId':_0x232867['id']}})[_0x3729('0x29')](function(){return _0x339263;});})['then'](function(){_0x2b1f86[_0x3729('0x19')](0xcc)[_0x3729('0x1a')]();});}};}function handleEntityNotFound(_0x834aac,_0x23a7d0){return function(_0x29512c){if(!_0x29512c){_0x834aac[_0x3729('0x18')](0x194);}return _0x29512c;};}function handleError(_0x4408d9,_0x364699){_0x364699=_0x364699||0x1f4;return function(_0x3aa62d){logger[_0x3729('0x2a')](_0x3aa62d[_0x3729('0x2b')]);if(_0x3aa62d['name']){delete _0x3aa62d[_0x3729('0x2c')];}_0x4408d9[_0x3729('0x19')](_0x364699)[_0x3729('0x2d')](_0x3aa62d);};}exports[_0x3729('0x2e')]=function(_0x4ed9b7,_0x4e0fae){var _0x51fd79={},_0x74c409={},_0x2b874c={'count':0x0,'rows':[]};var _0x568e02=_[_0x3729('0x2f')](db[_0x3729('0x30')][_0x3729('0x31')],function(_0x4f03e6){return{'name':_0x4f03e6[_0x3729('0x32')],'type':_0x4f03e6['type'][_0x3729('0x33')]};});_0x74c409[_0x3729('0x34')]=_[_0x3729('0x2f')](_0x568e02,_0x3729('0x2c'));_0x74c409[_0x3729('0x35')]=_[_0x3729('0x36')](_0x4ed9b7[_0x3729('0x35')]);_0x74c409[_0x3729('0x37')]=_[_0x3729('0x38')](_0x74c409[_0x3729('0x34')],_0x74c409['query']);_0x51fd79[_0x3729('0x39')]=_[_0x3729('0x38')](_0x74c409[_0x3729('0x34')],qs['fields'](_0x4ed9b7['query'][_0x3729('0x3a')]));_0x51fd79[_0x3729('0x39')]=_0x51fd79[_0x3729('0x39')][_0x3729('0x3b')]?_0x51fd79[_0x3729('0x39')]:_0x74c409['model'];if(!_0x4ed9b7[_0x3729('0x35')][_0x3729('0x3c')](_0x3729('0x3d'))){_0x51fd79[_0x3729('0x1e')]=qs[_0x3729('0x1e')](_0x4ed9b7[_0x3729('0x35')][_0x3729('0x1e')]);_0x51fd79[_0x3729('0x1c')]=qs[_0x3729('0x1c')](_0x4ed9b7[_0x3729('0x35')]['offset']);}_0x51fd79[_0x3729('0x3e')]=qs[_0x3729('0x3f')](_0x4ed9b7[_0x3729('0x35')][_0x3729('0x3f')]);_0x51fd79[_0x3729('0x40')]=qs[_0x3729('0x37')](_[_0x3729('0x41')](_0x4ed9b7[_0x3729('0x35')],_0x74c409[_0x3729('0x37')]),_0x568e02);if(_0x4ed9b7[_0x3729('0x35')][_0x3729('0x42')]){_0x51fd79[_0x3729('0x40')]=_['merge'](_0x51fd79[_0x3729('0x40')],{'$or':_[_0x3729('0x2f')](_0x568e02,function(_0x5e4a41){if(_0x5e4a41[_0x3729('0x43')]!=='VIRTUAL'){var _0x20ffb5={};_0x20ffb5[_0x5e4a41[_0x3729('0x2c')]]={'$like':'%'+_0x4ed9b7['query']['filter']+'%'};return _0x20ffb5;}})});}_0x51fd79=_[_0x3729('0x44')]({},_0x51fd79,_0x4ed9b7[_0x3729('0x45')]);var _0x47953b={'where':_0x51fd79[_0x3729('0x40')]};return db[_0x3729('0x30')][_0x3729('0x1f')](_0x47953b)[_0x3729('0x29')](function(_0x1db5af){_0x2b874c['count']=_0x1db5af;if(_0x4ed9b7[_0x3729('0x35')]['includeAll']){_0x51fd79[_0x3729('0x46')]=[{'all':!![]}];}return db[_0x3729('0x30')][_0x3729('0x47')](_0x51fd79);})['then'](function(_0x318d5c){_0x2b874c['rows']=_0x318d5c;return _0x2b874c;})[_0x3729('0x29')](respondWithFilteredResult(_0x4e0fae,_0x51fd79))['catch'](handleError(_0x4e0fae,null));};exports[_0x3729('0x48')]=function(_0x1b0035,_0x112e79){var _0x44840d={'raw':!![],'where':{'id':_0x1b0035[_0x3729('0x49')]['id']}},_0x138f5d={};_0x138f5d[_0x3729('0x34')]=_[_0x3729('0x36')](db['Template'][_0x3729('0x31')]);_0x138f5d[_0x3729('0x35')]=_[_0x3729('0x36')](_0x1b0035['query']);_0x138f5d[_0x3729('0x37')]=_['intersection'](_0x138f5d['model'],_0x138f5d[_0x3729('0x35')]);_0x44840d[_0x3729('0x39')]=_['intersection'](_0x138f5d[_0x3729('0x34')],qs[_0x3729('0x3a')](_0x1b0035[_0x3729('0x35')]['fields']));_0x44840d[_0x3729('0x39')]=_0x44840d[_0x3729('0x39')][_0x3729('0x3b')]?_0x44840d[_0x3729('0x39')]:_0x138f5d['model'];if(_0x1b0035['query'][_0x3729('0x4a')]){_0x44840d[_0x3729('0x46')]=[{'all':!![]}];}_0x44840d=_[_0x3729('0x44')]({},_0x44840d,_0x1b0035[_0x3729('0x45')]);return db[_0x3729('0x30')][_0x3729('0x4b')](_0x44840d)['then'](handleEntityNotFound(_0x112e79,null))[_0x3729('0x29')](respondWithResult(_0x112e79,null))[_0x3729('0x4c')](handleError(_0x112e79,null));};exports[_0x3729('0x4d')]=function(_0x34c1e2,_0x43972b){return db[_0x3729('0x30')][_0x3729('0x4d')](_0x34c1e2[_0x3729('0x4e')],{})['then'](function(_0x49e85a){var _0x28e814=_0x34c1e2[_0x3729('0x4f')][_0x3729('0x26')]({'plain':!![]});if(!_0x28e814)throw new Error(_0x3729('0x50'));if(_0x28e814[_0x3729('0x51')]===_0x3729('0x4f')){var _0x35c6dd=_0x49e85a[_0x3729('0x26')]({'plain':!![]});var _0x144897='Templates';return db['UserProfileSection'][_0x3729('0x4b')]({'where':{'name':_0x144897,'userProfileId':_0x28e814['userProfileId']},'raw':!![]})[_0x3729('0x29')](function(_0x544cb3){if(_0x544cb3&&_0x544cb3['autoAssociation']===0x0){return db[_0x3729('0x52')]['create']({'name':_0x35c6dd[_0x3729('0x2c')],'resourceId':_0x35c6dd['id'],'type':_0x544cb3['name'],'sectionId':_0x544cb3['id']},{})['then'](function(){return _0x49e85a;});}else{return _0x49e85a;}})[_0x3729('0x4c')](function(_0x13f13d){logger[_0x3729('0x2a')](_0x3729('0x53'),_0x13f13d);throw _0x13f13d;});}return _0x49e85a;})[_0x3729('0x29')](respondWithResult(_0x43972b,0xc9))['catch'](handleError(_0x43972b,null));};exports['update']=function(_0x539dd4,_0x30b65f){if(_0x539dd4['body']['id']){delete _0x539dd4[_0x3729('0x4e')]['id'];}return db[_0x3729('0x30')]['find']({'where':{'id':_0x539dd4[_0x3729('0x49')]['id']}})[_0x3729('0x29')](handleEntityNotFound(_0x30b65f,null))[_0x3729('0x29')](saveUpdates(_0x539dd4[_0x3729('0x4e')],null))[_0x3729('0x29')](respondWithResult(_0x30b65f,null))[_0x3729('0x4c')](handleError(_0x30b65f,null));};exports[_0x3729('0x28')]=function(_0x2e7278,_0x3096aa){return db[_0x3729('0x30')][_0x3729('0x4b')]({'where':{'id':_0x2e7278[_0x3729('0x49')]['id']}})[_0x3729('0x29')](handleEntityNotFound(_0x3096aa,null))[_0x3729('0x29')](removeEntity(_0x3096aa,null))[_0x3729('0x4c')](handleError(_0x3096aa,null));};
\ No newline at end of file
+var _0x1215=['error','name','send','index','map','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','where','filter','merge','type','VIRTUAL','options','include','Template','findAll','rows','catch','show','params','includeAll','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Templates','UserProfileSection','find','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../mysqldb','status','end','json','offset','limit','undefined','count','set','apply','reject','update','then','destroy','get','UserProfileResource','sendStatus'];(function(_0x4caf4f,_0x1f9d37){var _0xf64dd9=function(_0x37507){while(--_0x37507){_0x4caf4f['push'](_0x4caf4f['shift']());}};_0xf64dd9(++_0x1f9d37);}(_0x1215,0x7b));var _0x5121=function(_0x1ddcec,_0x41a08a){_0x1ddcec=_0x1ddcec-0x0;var _0x5e2966=_0x1215[_0x1ddcec];return _0x5e2966;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5121('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x5121('0x1'));var rp=require(_0x5121('0x2'));var moment=require(_0x5121('0x3'));var BPromise=require(_0x5121('0x4'));var Mustache=require(_0x5121('0x5'));var util=require(_0x5121('0x6'));var path=require(_0x5121('0x7'));var sox=require('sox');var csv=require(_0x5121('0x8'));var ejs=require(_0x5121('0x9'));var fs=require('fs');var fs_extra=require(_0x5121('0xa'));var _=require(_0x5121('0xb'));var squel=require(_0x5121('0xc'));var crypto=require(_0x5121('0xd'));var jsforce=require(_0x5121('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x5121('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x5121('0xf'));var authService=require(_0x5121('0x10'));var qs=require(_0x5121('0x11'));var as=require(_0x5121('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x5121('0x13'))(_0x5121('0x14'));var utils=require('../../config/utils');var config=require(_0x5121('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x5121('0x16'))['db'];function respondWithStatusCode(_0x213fbd,_0x25bd0a){_0x25bd0a=_0x25bd0a||0xcc;return function(_0x1a5874){if(_0x1a5874){return _0x213fbd['sendStatus'](_0x25bd0a);}return _0x213fbd[_0x5121('0x17')](_0x25bd0a)[_0x5121('0x18')]();};}function respondWithResult(_0x480430,_0x1837ec){_0x1837ec=_0x1837ec||0xc8;return function(_0x2f5f9f){if(_0x2f5f9f){return _0x480430[_0x5121('0x17')](_0x1837ec)[_0x5121('0x19')](_0x2f5f9f);}};}function respondWithFilteredResult(_0x13fc3d,_0x7c9f05){return function(_0x418846){if(_0x418846){var _0x2c9a4f=typeof _0x7c9f05[_0x5121('0x1a')]==='undefined'&&typeof _0x7c9f05[_0x5121('0x1b')]===_0x5121('0x1c');var _0x57d998=_0x418846[_0x5121('0x1d')];var _0x28e939=_0x2c9a4f?0x0:_0x7c9f05[_0x5121('0x1a')];var _0x568663=_0x2c9a4f?_0x418846[_0x5121('0x1d')]:_0x7c9f05[_0x5121('0x1a')]+_0x7c9f05[_0x5121('0x1b')];var _0x213543;if(_0x568663>=_0x57d998){_0x568663=_0x57d998;_0x213543=0xc8;}else{_0x213543=0xce;}_0x13fc3d[_0x5121('0x17')](_0x213543);return _0x13fc3d[_0x5121('0x1e')]('Content-Range',_0x28e939+'-'+_0x568663+'/'+_0x57d998)[_0x5121('0x19')](_0x418846);}return null;};}function patchUpdates(_0x24819e){return function(_0x212aa5){try{jsonpatch[_0x5121('0x1f')](_0x212aa5,_0x24819e,!![]);}catch(_0x384b4c){return BPromise[_0x5121('0x20')](_0x384b4c);}return _0x212aa5['save']();};}function saveUpdates(_0x508fa0,_0x21a3bc){return function(_0x2d645a){if(_0x2d645a){return _0x2d645a[_0x5121('0x21')](_0x508fa0)[_0x5121('0x22')](function(_0x5d5bab){return _0x5d5bab;});}return null;};}function removeEntity(_0x4bb01d,_0x153226){return function(_0x234e4a){if(_0x234e4a){return _0x234e4a[_0x5121('0x23')]()[_0x5121('0x22')](function(){var _0x5d26fb=_0x234e4a[_0x5121('0x24')]({'plain':!![]});var _0x3d16da='Templates';return db[_0x5121('0x25')][_0x5121('0x23')]({'where':{'type':_0x3d16da,'resourceId':_0x5d26fb['id']}})['then'](function(){return _0x234e4a;});})['then'](function(){_0x4bb01d['status'](0xcc)[_0x5121('0x18')]();});}};}function handleEntityNotFound(_0x3b8cba,_0x4504fb){return function(_0x4312d8){if(!_0x4312d8){_0x3b8cba[_0x5121('0x26')](0x194);}return _0x4312d8;};}function handleError(_0xcd4848,_0x32118b){_0x32118b=_0x32118b||0x1f4;return function(_0x4237fa){logger[_0x5121('0x27')](_0x4237fa['stack']);if(_0x4237fa[_0x5121('0x28')]){delete _0x4237fa[_0x5121('0x28')];}_0xcd4848[_0x5121('0x17')](_0x32118b)[_0x5121('0x29')](_0x4237fa);};}exports[_0x5121('0x2a')]=function(_0x2f26c2,_0x23b43a){var _0x2239bf={},_0x32e357={},_0x2d7655={'count':0x0,'rows':[]};var _0x530eca=_[_0x5121('0x2b')](db['Template'][_0x5121('0x2c')],function(_0x4c747a){return{'name':_0x4c747a[_0x5121('0x2d')],'type':_0x4c747a['type'][_0x5121('0x2e')]};});_0x32e357[_0x5121('0x2f')]=_['map'](_0x530eca,_0x5121('0x28'));_0x32e357[_0x5121('0x30')]=_[_0x5121('0x31')](_0x2f26c2[_0x5121('0x30')]);_0x32e357[_0x5121('0x32')]=_[_0x5121('0x33')](_0x32e357[_0x5121('0x2f')],_0x32e357[_0x5121('0x30')]);_0x2239bf[_0x5121('0x34')]=_[_0x5121('0x33')](_0x32e357['model'],qs[_0x5121('0x35')](_0x2f26c2[_0x5121('0x30')]['fields']));_0x2239bf[_0x5121('0x34')]=_0x2239bf['attributes'][_0x5121('0x36')]?_0x2239bf[_0x5121('0x34')]:_0x32e357[_0x5121('0x2f')];if(!_0x2f26c2['query'][_0x5121('0x37')]('nolimit')){_0x2239bf[_0x5121('0x1b')]=qs[_0x5121('0x1b')](_0x2f26c2['query'][_0x5121('0x1b')]);_0x2239bf['offset']=qs[_0x5121('0x1a')](_0x2f26c2[_0x5121('0x30')][_0x5121('0x1a')]);}_0x2239bf[_0x5121('0x38')]=qs['sort'](_0x2f26c2['query']['sort']);_0x2239bf[_0x5121('0x39')]=qs[_0x5121('0x32')](_['pick'](_0x2f26c2[_0x5121('0x30')],_0x32e357[_0x5121('0x32')]),_0x530eca);if(_0x2f26c2[_0x5121('0x30')][_0x5121('0x3a')]){_0x2239bf['where']=_[_0x5121('0x3b')](_0x2239bf[_0x5121('0x39')],{'$or':_[_0x5121('0x2b')](_0x530eca,function(_0x134224){if(_0x134224[_0x5121('0x3c')]!==_0x5121('0x3d')){var _0x52afa3={};_0x52afa3[_0x134224[_0x5121('0x28')]]={'$like':'%'+_0x2f26c2[_0x5121('0x30')]['filter']+'%'};return _0x52afa3;}})});}_0x2239bf=_[_0x5121('0x3b')]({},_0x2239bf,_0x2f26c2[_0x5121('0x3e')]);var _0x687293={'where':_0x2239bf[_0x5121('0x39')]};return db['Template'][_0x5121('0x1d')](_0x687293)[_0x5121('0x22')](function(_0x1636b5){_0x2d7655['count']=_0x1636b5;if(_0x2f26c2[_0x5121('0x30')]['includeAll']){_0x2239bf[_0x5121('0x3f')]=[{'all':!![]}];}return db[_0x5121('0x40')][_0x5121('0x41')](_0x2239bf);})[_0x5121('0x22')](function(_0x1d0317){_0x2d7655[_0x5121('0x42')]=_0x1d0317;return _0x2d7655;})['then'](respondWithFilteredResult(_0x23b43a,_0x2239bf))[_0x5121('0x43')](handleError(_0x23b43a,null));};exports[_0x5121('0x44')]=function(_0x3ebbe6,_0x21d1a1){var _0x5af421={'raw':!![],'where':{'id':_0x3ebbe6[_0x5121('0x45')]['id']}},_0x220699={};_0x220699['model']=_[_0x5121('0x31')](db['Template'][_0x5121('0x2c')]);_0x220699['query']=_[_0x5121('0x31')](_0x3ebbe6[_0x5121('0x30')]);_0x220699[_0x5121('0x32')]=_['intersection'](_0x220699[_0x5121('0x2f')],_0x220699[_0x5121('0x30')]);_0x5af421['attributes']=_[_0x5121('0x33')](_0x220699[_0x5121('0x2f')],qs[_0x5121('0x35')](_0x3ebbe6['query'][_0x5121('0x35')]));_0x5af421[_0x5121('0x34')]=_0x5af421[_0x5121('0x34')][_0x5121('0x36')]?_0x5af421[_0x5121('0x34')]:_0x220699[_0x5121('0x2f')];if(_0x3ebbe6[_0x5121('0x30')][_0x5121('0x46')]){_0x5af421['include']=[{'all':!![]}];}_0x5af421=_[_0x5121('0x3b')]({},_0x5af421,_0x3ebbe6[_0x5121('0x3e')]);return db['Template']['find'](_0x5af421)[_0x5121('0x22')](handleEntityNotFound(_0x21d1a1,null))[_0x5121('0x22')](respondWithResult(_0x21d1a1,null))[_0x5121('0x43')](handleError(_0x21d1a1,null));};exports['create']=function(_0x3ad8a5,_0x58387f){return db[_0x5121('0x40')][_0x5121('0x47')](_0x3ad8a5[_0x5121('0x48')],{})[_0x5121('0x22')](function(_0x333816){var _0x496a2a=_0x3ad8a5[_0x5121('0x49')][_0x5121('0x24')]({'plain':!![]});if(!_0x496a2a)throw new Error(_0x5121('0x4a'));if(_0x496a2a[_0x5121('0x4b')]===_0x5121('0x49')){var _0x33e094=_0x333816['get']({'plain':!![]});var _0x5bb540=_0x5121('0x4c');return db[_0x5121('0x4d')][_0x5121('0x4e')]({'where':{'name':_0x5bb540,'userProfileId':_0x496a2a['userProfileId']},'raw':!![]})[_0x5121('0x22')](function(_0x433624){if(_0x433624&&_0x433624[_0x5121('0x4f')]===0x0){return db[_0x5121('0x25')][_0x5121('0x47')]({'name':_0x33e094['name'],'resourceId':_0x33e094['id'],'type':_0x433624['name'],'sectionId':_0x433624['id']},{})[_0x5121('0x22')](function(){return _0x333816;});}else{return _0x333816;}})[_0x5121('0x43')](function(_0x13a17e){logger[_0x5121('0x27')](_0x5121('0x50'),_0x13a17e);throw _0x13a17e;});}return _0x333816;})['then'](respondWithResult(_0x58387f,0xc9))[_0x5121('0x43')](handleError(_0x58387f,null));};exports['update']=function(_0x7cc204,_0x496d88){if(_0x7cc204[_0x5121('0x48')]['id']){delete _0x7cc204[_0x5121('0x48')]['id'];}return db[_0x5121('0x40')][_0x5121('0x4e')]({'where':{'id':_0x7cc204[_0x5121('0x45')]['id']}})[_0x5121('0x22')](handleEntityNotFound(_0x496d88,null))[_0x5121('0x22')](saveUpdates(_0x7cc204[_0x5121('0x48')],null))[_0x5121('0x22')](respondWithResult(_0x496d88,null))[_0x5121('0x43')](handleError(_0x496d88,null));};exports['destroy']=function(_0x217fbb,_0xfdac86){return db[_0x5121('0x40')][_0x5121('0x4e')]({'where':{'id':_0x217fbb['params']['id']}})[_0x5121('0x22')](handleEntityNotFound(_0xfdac86,null))['then'](removeEntity(_0xfdac86,null))[_0x5121('0x43')](handleError(_0xfdac86,null));};
\ No newline at end of file
index 7b1bdd5..7ba25d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba75=['moment','bluebird','request-promise','path','../../config/environment','./template.attributes','define','Template','../../config/logger','api'];(function(_0x255815,_0x508998){var _0x5f5c55=function(_0x413944){while(--_0x413944){_0x255815['push'](_0x255815['shift']());}};_0x5f5c55(++_0x508998);}(_0xba75,0x148));var _0x5ba7=function(_0x5bfa42,_0x46ec12){_0x5bfa42=_0x5bfa42-0x0;var _0x5b1a31=_0xba75[_0x5bfa42];return _0x5b1a31;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x5ba7('0x0'))(_0x5ba7('0x1'));var moment=require(_0x5ba7('0x2'));var BPromise=require(_0x5ba7('0x3'));var rp=require(_0x5ba7('0x4'));var fs=require('fs');var path=require(_0x5ba7('0x5'));var rimraf=require('rimraf');var config=require(_0x5ba7('0x6'));var attributes=require(_0x5ba7('0x7'));module['exports']=function(_0x1248da,_0xf0d905){return _0x1248da[_0x5ba7('0x8')](_0x5ba7('0x9'),attributes,{'tableName':'tools_templates','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc627=['tools_templates','lodash','../../config/logger','api','moment','bluebird','request-promise','path','./template.attributes','exports','Template'];(function(_0x2304e5,_0x1697c0){var _0x5ed68d=function(_0x37ac62){while(--_0x37ac62){_0x2304e5['push'](_0x2304e5['shift']());}};_0x5ed68d(++_0x1697c0);}(_0xc627,0x109));var _0x7c62=function(_0x454a61,_0x2296e7){_0x454a61=_0x454a61-0x0;var _0x538568=_0xc627[_0x454a61];return _0x538568;};'use strict';var _=require(_0x7c62('0x0'));var util=require('util');var logger=require(_0x7c62('0x1'))(_0x7c62('0x2'));var moment=require(_0x7c62('0x3'));var BPromise=require(_0x7c62('0x4'));var rp=require(_0x7c62('0x5'));var fs=require('fs');var path=require(_0x7c62('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x7c62('0x7'));module[_0x7c62('0x8')]=function(_0x4f127,_0x5b3bc8){return _0x4f127['define'](_0x7c62('0x9'),attributes,{'tableName':_0x7c62('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index dc3b57d..a355e64 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf38=['ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','then','info','Template,\x20%s,\x20%s','request\x20sent','debug','Template,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','GetTemplate','Template','options','raw','where','limit','include','model','attributes','map','catch','util','bluebird'];(function(_0x436e7f,_0x26e16f){var _0x5d14d1=function(_0xfd1a14){while(--_0xfd1a14){_0x436e7f['push'](_0x436e7f['shift']());}};_0x5d14d1(++_0x26e16f);}(_0xcf38,0x1cf));var _0x8cf3=function(_0x30cfc3,_0x256fe3){_0x30cfc3=_0x30cfc3-0x0;var _0x37518c=_0xcf38[_0x30cfc3];return _0x37518c;};'use strict';var _=require('lodash');var util=require(_0x8cf3('0x0'));var moment=require('moment');var BPromise=require(_0x8cf3('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8cf3('0x2'));var db=require(_0x8cf3('0x3'))['db'];var utils=require(_0x8cf3('0x4'));var logger=require('../../config/logger')(_0x8cf3('0x5'));var config=require(_0x8cf3('0x6'));var jayson=require(_0x8cf3('0x7'));var client=jayson['client'][_0x8cf3('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x35cb5d,_0x14e995,_0x8d42ff){return new BPromise(function(_0xcbbfd2,_0x4f1788){return client['request'](_0x35cb5d,_0x8d42ff)[_0x8cf3('0x9')](function(_0x23bd33){logger[_0x8cf3('0xa')](_0x8cf3('0xb'),_0x14e995,_0x8cf3('0xc'));logger[_0x8cf3('0xd')](_0x8cf3('0xe'),_0x14e995,'request\x20sent',JSON[_0x8cf3('0xf')](_0x23bd33));if(_0x23bd33['error']){if(_0x23bd33[_0x8cf3('0x10')][_0x8cf3('0x11')]===0x1f4){logger[_0x8cf3('0x10')](_0x8cf3('0xb'),_0x14e995,_0x23bd33[_0x8cf3('0x10')][_0x8cf3('0x12')]);return _0x4f1788(_0x23bd33[_0x8cf3('0x10')][_0x8cf3('0x12')]);}logger['error'](_0x8cf3('0xb'),_0x14e995,_0x23bd33[_0x8cf3('0x10')][_0x8cf3('0x12')]);return _0xcbbfd2(_0x23bd33[_0x8cf3('0x10')][_0x8cf3('0x12')]);}else{logger[_0x8cf3('0xa')]('Template,\x20%s,\x20%s',_0x14e995,'request\x20sent');_0xcbbfd2(_0x23bd33[_0x8cf3('0x13')][_0x8cf3('0x12')]);}})['catch'](function(_0x45180b){logger[_0x8cf3('0x10')]('Template,\x20%s,\x20%s',_0x14e995,_0x45180b);_0x4f1788(_0x45180b);});});}exports[_0x8cf3('0x14')]=function(_0x3fe868){var _0x5ef3a9=this;return new Promise(function(_0x320f4e,_0x4cdfaa){return db[_0x8cf3('0x15')]['findAll']({'raw':_0x3fe868[_0x8cf3('0x16')]?_0x3fe868[_0x8cf3('0x16')][_0x8cf3('0x17')]===undefined?!![]:![]:!![],'where':_0x3fe868[_0x8cf3('0x16')]?_0x3fe868[_0x8cf3('0x16')][_0x8cf3('0x18')]||null:null,'attributes':_0x3fe868[_0x8cf3('0x16')]?_0x3fe868[_0x8cf3('0x16')]['attributes']||null:null,'limit':_0x3fe868[_0x8cf3('0x16')]?_0x3fe868[_0x8cf3('0x16')][_0x8cf3('0x19')]||null:null,'include':_0x3fe868['options']?_0x3fe868[_0x8cf3('0x16')][_0x8cf3('0x1a')]?_['map'](_0x3fe868['options'][_0x8cf3('0x1a')],function(_0x25a84f){return{'model':db[_0x25a84f[_0x8cf3('0x1b')]],'as':_0x25a84f['as'],'attributes':_0x25a84f[_0x8cf3('0x1c')],'include':_0x25a84f[_0x8cf3('0x1a')]?_[_0x8cf3('0x1d')](_0x25a84f[_0x8cf3('0x1a')],function(_0x1f9009){return{'model':db[_0x1f9009['model']],'as':_0x1f9009['as'],'attributes':_0x1f9009[_0x8cf3('0x1c')],'include':_0x1f9009[_0x8cf3('0x1a')]?_['map'](_0x1f9009['include'],function(_0x13c625){return{'model':db[_0x13c625[_0x8cf3('0x1b')]],'as':_0x13c625['as'],'attributes':_0x13c625[_0x8cf3('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x8cf3('0x9')](function(_0x507cca){logger[_0x8cf3('0xa')](_0x8cf3('0x14'),_0x3fe868);logger[_0x8cf3('0xd')](_0x8cf3('0x14'),_0x3fe868,JSON[_0x8cf3('0xf')](_0x507cca));_0x320f4e(_0x507cca);})[_0x8cf3('0x1e')](function(_0x52750a){logger[_0x8cf3('0x10')](_0x8cf3('0x14'),_0x52750a[_0x8cf3('0x12')],_0x3fe868);_0x4cdfaa(_0x5ef3a9['error'](0x1f4,_0x52750a[_0x8cf3('0x12')]));});});};
\ No newline at end of file
+var _0x7177=['Template,\x20%s,\x20%s','request\x20sent','Template,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetTemplate','Template','findAll','options','where','attributes','limit','include','model','map','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info'];(function(_0x381589,_0x27a707){var _0x2a075d=function(_0x4ea19d){while(--_0x4ea19d){_0x381589['push'](_0x381589['shift']());}};_0x2a075d(++_0x27a707);}(_0x7177,0x76));var _0x7717=function(_0x4d3d50,_0x50f156){_0x4d3d50=_0x4d3d50-0x0;var _0x175e6d=_0x7177[_0x4d3d50];return _0x175e6d;};'use strict';var _=require(_0x7717('0x0'));var util=require(_0x7717('0x1'));var moment=require(_0x7717('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7717('0x3'));var db=require(_0x7717('0x4'))['db'];var utils=require(_0x7717('0x5'));var logger=require(_0x7717('0x6'))('rpc');var config=require(_0x7717('0x7'));var jayson=require(_0x7717('0x8'));var client=jayson[_0x7717('0x9')][_0x7717('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x272a97,_0x37aebd,_0x1b898c){return new BPromise(function(_0x15419b,_0x4588c6){return client[_0x7717('0xb')](_0x272a97,_0x1b898c)[_0x7717('0xc')](function(_0x4d6e8b){logger[_0x7717('0xd')](_0x7717('0xe'),_0x37aebd,_0x7717('0xf'));logger['debug'](_0x7717('0x10'),_0x37aebd,_0x7717('0xf'),JSON[_0x7717('0x11')](_0x4d6e8b));if(_0x4d6e8b[_0x7717('0x12')]){if(_0x4d6e8b[_0x7717('0x12')][_0x7717('0x13')]===0x1f4){logger[_0x7717('0x12')]('Template,\x20%s,\x20%s',_0x37aebd,_0x4d6e8b[_0x7717('0x12')][_0x7717('0x14')]);return _0x4588c6(_0x4d6e8b[_0x7717('0x12')][_0x7717('0x14')]);}logger[_0x7717('0x12')](_0x7717('0xe'),_0x37aebd,_0x4d6e8b[_0x7717('0x12')][_0x7717('0x14')]);return _0x15419b(_0x4d6e8b['error'][_0x7717('0x14')]);}else{logger[_0x7717('0xd')](_0x7717('0xe'),_0x37aebd,_0x7717('0xf'));_0x15419b(_0x4d6e8b[_0x7717('0x15')][_0x7717('0x14')]);}})[_0x7717('0x16')](function(_0x220df4){logger[_0x7717('0x12')]('Template,\x20%s,\x20%s',_0x37aebd,_0x220df4);_0x4588c6(_0x220df4);});});}exports[_0x7717('0x17')]=function(_0x350b17){var _0x617192=this;return new Promise(function(_0x1d556f,_0x429861){return db[_0x7717('0x18')][_0x7717('0x19')]({'raw':_0x350b17['options']?_0x350b17[_0x7717('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x350b17[_0x7717('0x1a')]?_0x350b17['options'][_0x7717('0x1b')]||null:null,'attributes':_0x350b17[_0x7717('0x1a')]?_0x350b17[_0x7717('0x1a')][_0x7717('0x1c')]||null:null,'limit':_0x350b17['options']?_0x350b17['options'][_0x7717('0x1d')]||null:null,'include':_0x350b17[_0x7717('0x1a')]?_0x350b17[_0x7717('0x1a')][_0x7717('0x1e')]?_['map'](_0x350b17['options'][_0x7717('0x1e')],function(_0x2afc2a){return{'model':db[_0x2afc2a[_0x7717('0x1f')]],'as':_0x2afc2a['as'],'attributes':_0x2afc2a[_0x7717('0x1c')],'include':_0x2afc2a[_0x7717('0x1e')]?_[_0x7717('0x20')](_0x2afc2a[_0x7717('0x1e')],function(_0x3a8c2c){return{'model':db[_0x3a8c2c[_0x7717('0x1f')]],'as':_0x3a8c2c['as'],'attributes':_0x3a8c2c['attributes'],'include':_0x3a8c2c[_0x7717('0x1e')]?_[_0x7717('0x20')](_0x3a8c2c[_0x7717('0x1e')],function(_0x20fa04){return{'model':db[_0x20fa04['model']],'as':_0x20fa04['as'],'attributes':_0x20fa04[_0x7717('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4df176){logger[_0x7717('0xd')](_0x7717('0x17'),_0x350b17);logger['debug'](_0x7717('0x17'),_0x350b17,JSON['stringify'](_0x4df176));_0x1d556f(_0x4df176);})[_0x7717('0x16')](function(_0x4a7255){logger[_0x7717('0x12')](_0x7717('0x17'),_0x4a7255[_0x7717('0x14')],_0x350b17);_0x429861(_0x617192[_0x7717('0x12')](0x1f4,_0x4a7255[_0x7717('0x14')]));});});};
\ No newline at end of file
index 0102336..fba7154 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x686a=['delete','destroy','exports','multer','util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','show','get','getAllConditions','/:id/any_conditions','/:id/actions','getActions','post','create','addAllCondition','addAnyCondition','addAction','put','/:id','update'];(function(_0x3ca1a4,_0x5a4e3d){var _0x7d8111=function(_0x35fa46){while(--_0x35fa46){_0x3ca1a4['push'](_0x3ca1a4['shift']());}};_0x7d8111(++_0x5a4e3d);}(_0x686a,0x162));var _0xa686=function(_0x21f013,_0x3a2050){_0x21f013=_0x21f013-0x0;var _0x1addf8=_0x686a[_0x21f013];return _0x1addf8;};'use strict';var multer=require(_0xa686('0x0'));var util=require(_0xa686('0x1'));var path=require('path');var timeout=require(_0xa686('0x2'));var express=require(_0xa686('0x3'));var router=express['Router']();var fs_extra=require(_0xa686('0x4'));var auth=require(_0xa686('0x5'));var interaction=require(_0xa686('0x6'));var config=require(_0xa686('0x7'));var controller=require('./trigger.controller');router['get']('/',auth[_0xa686('0x8')](),controller[_0xa686('0x9')]);router['get']('/:id',auth[_0xa686('0x8')](),controller[_0xa686('0xa')]);router[_0xa686('0xb')]('/:id/all_conditions',auth[_0xa686('0x8')](),controller[_0xa686('0xc')]);router[_0xa686('0xb')](_0xa686('0xd'),auth[_0xa686('0x8')](),controller['getAnyConditions']);router[_0xa686('0xb')](_0xa686('0xe'),auth[_0xa686('0x8')](),controller[_0xa686('0xf')]);router[_0xa686('0x10')]('/',auth['isAuthenticated'](),controller[_0xa686('0x11')]);router[_0xa686('0x10')]('/:id/all_conditions',auth[_0xa686('0x8')](),controller[_0xa686('0x12')]);router[_0xa686('0x10')](_0xa686('0xd'),auth[_0xa686('0x8')](),controller[_0xa686('0x13')]);router[_0xa686('0x10')](_0xa686('0xe'),auth[_0xa686('0x8')](),controller[_0xa686('0x14')]);router[_0xa686('0x15')](_0xa686('0x16'),auth[_0xa686('0x8')](),controller[_0xa686('0x17')]);router[_0xa686('0x18')](_0xa686('0x16'),auth[_0xa686('0x8')](),controller[_0xa686('0x19')]);module[_0xa686('0x1a')]=router;
\ No newline at end of file
+var _0x0100=['get','index','/:id','isAuthenticated','show','/:id/all_conditions','getAllConditions','/:id/any_conditions','getAnyConditions','/:id/actions','getActions','post','addAnyCondition','addAction','put','update','delete','exports','multer','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./trigger.controller'];(function(_0x51cf50,_0x5b20f8){var _0xf6ec07=function(_0x2138ba){while(--_0x2138ba){_0x51cf50['push'](_0x51cf50['shift']());}};_0xf6ec07(++_0x5b20f8);}(_0x0100,0x7a));var _0x0010=function(_0x2f30f8,_0x39b7ee){_0x2f30f8=_0x2f30f8-0x0;var _0x37b8d4=_0x0100[_0x2f30f8];return _0x37b8d4;};'use strict';var multer=require(_0x0010('0x0'));var util=require('util');var path=require(_0x0010('0x1'));var timeout=require(_0x0010('0x2'));var express=require('express');var router=express[_0x0010('0x3')]();var fs_extra=require(_0x0010('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x0010('0x5'));var config=require(_0x0010('0x6'));var controller=require(_0x0010('0x7'));router[_0x0010('0x8')]('/',auth['isAuthenticated'](),controller[_0x0010('0x9')]);router[_0x0010('0x8')](_0x0010('0xa'),auth[_0x0010('0xb')](),controller[_0x0010('0xc')]);router[_0x0010('0x8')](_0x0010('0xd'),auth['isAuthenticated'](),controller[_0x0010('0xe')]);router[_0x0010('0x8')](_0x0010('0xf'),auth[_0x0010('0xb')](),controller[_0x0010('0x10')]);router[_0x0010('0x8')](_0x0010('0x11'),auth[_0x0010('0xb')](),controller[_0x0010('0x12')]);router[_0x0010('0x13')]('/',auth[_0x0010('0xb')](),controller['create']);router[_0x0010('0x13')](_0x0010('0xd'),auth[_0x0010('0xb')](),controller['addAllCondition']);router[_0x0010('0x13')]('/:id/any_conditions',auth['isAuthenticated'](),controller[_0x0010('0x14')]);router[_0x0010('0x13')](_0x0010('0x11'),auth[_0x0010('0xb')](),controller[_0x0010('0x15')]);router[_0x0010('0x16')](_0x0010('0xa'),auth[_0x0010('0xb')](),controller[_0x0010('0x17')]);router[_0x0010('0x18')](_0x0010('0xa'),auth[_0x0010('0xb')](),controller['destroy']);module[_0x0010('0x19')]=router;
\ No newline at end of file
index b0fe79e..92cc6d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x91fb=['STRING','BOOLEAN','sequelize','exports'];(function(_0x460be7,_0x1ae4f2){var _0x53d249=function(_0x2a1088){while(--_0x2a1088){_0x460be7['push'](_0x460be7['shift']());}};_0x53d249(++_0x1ae4f2);}(_0x91fb,0x132));var _0xb91f=function(_0x556634,_0x520958){_0x556634=_0x556634-0x0;var _0x4429fd=_0x91fb[_0x556634];return _0x4429fd;};'use strict';var Sequelize=require(_0xb91f('0x0'));module[_0xb91f('0x1')]={'name':{'type':Sequelize[_0xb91f('0x2')]},'channel':{'type':Sequelize[_0xb91f('0x2')]},'description':{'type':Sequelize[_0xb91f('0x2')]},'status':{'type':Sequelize[_0xb91f('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0x0e73=['sequelize','exports','STRING','BOOLEAN'];(function(_0x7275e9,_0x321fa5){var _0x17b99d=function(_0x54af41){while(--_0x54af41){_0x7275e9['push'](_0x7275e9['shift']());}};_0x17b99d(++_0x321fa5);}(_0x0e73,0x1f4));var _0x30e7=function(_0x36856f,_0x98b59e){_0x36856f=_0x36856f-0x0;var _0x43ac52=_0x0e73[_0x36856f];return _0x43ac52;};'use strict';var Sequelize=require(_0x30e7('0x0'));module[_0x30e7('0x1')]={'name':{'type':Sequelize[_0x30e7('0x2')]},'channel':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x30e7('0x2')]},'status':{'type':Sequelize[_0x30e7('0x3')],'defaultValue':![]}};
\ No newline at end of file
index d8c8472..bd7c413 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbde5=['Content-Range','apply','reject','save','update','then','Triggers','destroy','error','name','send','map','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','sort','where','pick','filter','merge','VIRTUAL','Trigger','include','rows','params','includeAll','options','catch','create','body','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','find','autoAssociation','addAllCondition','TriggerAllId','addAnyCondition','TriggerAnyId','getAllConditions','hasOwnProperty','Condition','order','getAnyConditions','TriggerId','Action','getActions','findOne','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','ejs','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xbde5,0x95));var _0x5bde=function(_0x144206,_0x35fa8c){_0x144206=_0x144206-0x0;var _0x312340=_0xbde5[_0x144206];return _0x312340;};'use strict';var emlformat=require(_0x5bde('0x0'));var rimraf=require(_0x5bde('0x1'));var zipdir=require(_0x5bde('0x2'));var jsonpatch=require(_0x5bde('0x3'));var rp=require(_0x5bde('0x4'));var moment=require(_0x5bde('0x5'));var BPromise=require(_0x5bde('0x6'));var Mustache=require(_0x5bde('0x7'));var util=require(_0x5bde('0x8'));var path=require(_0x5bde('0x9'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x5bde('0xa'));var fs=require('fs');var fs_extra=require(_0x5bde('0xb'));var _=require(_0x5bde('0xc'));var squel=require('squel');var crypto=require(_0x5bde('0xd'));var jsforce=require(_0x5bde('0xe'));var deskjs=require(_0x5bde('0xf'));var toCsv=require(_0x5bde('0x10'));var querystring=require('querystring');var Papa=require(_0x5bde('0x11'));var Redis=require(_0x5bde('0x12'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x5bde('0x13'))(_0x5bde('0x14'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x5bde('0x15'));var db=require(_0x5bde('0x16'))['db'];function respondWithStatusCode(_0x3669c4,_0x4138f7){_0x4138f7=_0x4138f7||0xcc;return function(_0x464064){if(_0x464064){return _0x3669c4[_0x5bde('0x17')](_0x4138f7);}return _0x3669c4[_0x5bde('0x18')](_0x4138f7)[_0x5bde('0x19')]();};}function respondWithResult(_0x18acc7,_0x3bd1fd){_0x3bd1fd=_0x3bd1fd||0xc8;return function(_0x2db8b8){if(_0x2db8b8){return _0x18acc7[_0x5bde('0x18')](_0x3bd1fd)[_0x5bde('0x1a')](_0x2db8b8);}};}function respondWithFilteredResult(_0x509e75,_0x40f189){return function(_0x1cfacf){if(_0x1cfacf){var _0x957a43=typeof _0x40f189[_0x5bde('0x1b')]===_0x5bde('0x1c')&&typeof _0x40f189[_0x5bde('0x1d')]==='undefined';var _0x2b518d=_0x1cfacf[_0x5bde('0x1e')];var _0x4c32b5=_0x957a43?0x0:_0x40f189['offset'];var _0x7ab7f6=_0x957a43?_0x1cfacf[_0x5bde('0x1e')]:_0x40f189['offset']+_0x40f189[_0x5bde('0x1d')];var _0x50b829;if(_0x7ab7f6>=_0x2b518d){_0x7ab7f6=_0x2b518d;_0x50b829=0xc8;}else{_0x50b829=0xce;}_0x509e75[_0x5bde('0x18')](_0x50b829);return _0x509e75['set'](_0x5bde('0x1f'),_0x4c32b5+'-'+_0x7ab7f6+'/'+_0x2b518d)[_0x5bde('0x1a')](_0x1cfacf);}return null;};}function patchUpdates(_0x35778e){return function(_0x5c71f7){try{jsonpatch[_0x5bde('0x20')](_0x5c71f7,_0x35778e,!![]);}catch(_0x34e742){return BPromise[_0x5bde('0x21')](_0x34e742);}return _0x5c71f7[_0x5bde('0x22')]();};}function saveUpdates(_0x33aa69,_0x514eca){return function(_0x350325){if(_0x350325){return _0x350325[_0x5bde('0x23')](_0x33aa69)[_0x5bde('0x24')](function(_0x1e4a0b){return _0x1e4a0b;});}return null;};}function removeEntity(_0x37fa4d,_0x453dcd){return function(_0x4688f8){if(_0x4688f8){return _0x4688f8['destroy']()[_0x5bde('0x24')](function(){var _0xda9c98=_0x4688f8['get']({'plain':!![]});var _0x4a6264=_0x5bde('0x25');return db['UserProfileResource'][_0x5bde('0x26')]({'where':{'type':_0x4a6264,'resourceId':_0xda9c98['id']}})[_0x5bde('0x24')](function(){return _0x4688f8;});})[_0x5bde('0x24')](function(){_0x37fa4d[_0x5bde('0x18')](0xcc)[_0x5bde('0x19')]();});}};}function handleEntityNotFound(_0x56c7f9,_0x51c23f){return function(_0x390955){if(!_0x390955){_0x56c7f9['sendStatus'](0x194);}return _0x390955;};}function handleError(_0x26d352,_0x17599e){_0x17599e=_0x17599e||0x1f4;return function(_0x15b0e7){logger[_0x5bde('0x27')](_0x15b0e7['stack']);if(_0x15b0e7[_0x5bde('0x28')]){delete _0x15b0e7[_0x5bde('0x28')];}_0x26d352[_0x5bde('0x18')](_0x17599e)[_0x5bde('0x29')](_0x15b0e7);};}exports['index']=function(_0x23061d,_0x2a3854){var _0x11cfcd={},_0x2c1699={},_0x5cc902={'count':0x0,'rows':[]};var _0x3a7c05=_[_0x5bde('0x2a')](db['Trigger'][_0x5bde('0x2b')],function(_0x43d61a){return{'name':_0x43d61a['fieldName'],'type':_0x43d61a[_0x5bde('0x2c')][_0x5bde('0x2d')]};});_0x2c1699[_0x5bde('0x2e')]=_[_0x5bde('0x2a')](_0x3a7c05,'name');_0x2c1699[_0x5bde('0x2f')]=_[_0x5bde('0x30')](_0x23061d[_0x5bde('0x2f')]);_0x2c1699[_0x5bde('0x31')]=_[_0x5bde('0x32')](_0x2c1699[_0x5bde('0x2e')],_0x2c1699[_0x5bde('0x2f')]);_0x11cfcd[_0x5bde('0x33')]=_[_0x5bde('0x32')](_0x2c1699[_0x5bde('0x2e')],qs[_0x5bde('0x34')](_0x23061d[_0x5bde('0x2f')][_0x5bde('0x34')]));_0x11cfcd[_0x5bde('0x33')]=_0x11cfcd[_0x5bde('0x33')][_0x5bde('0x35')]?_0x11cfcd['attributes']:_0x2c1699[_0x5bde('0x2e')];if(!_0x23061d[_0x5bde('0x2f')]['hasOwnProperty'](_0x5bde('0x36'))){_0x11cfcd[_0x5bde('0x1d')]=qs[_0x5bde('0x1d')](_0x23061d[_0x5bde('0x2f')][_0x5bde('0x1d')]);_0x11cfcd[_0x5bde('0x1b')]=qs['offset'](_0x23061d[_0x5bde('0x2f')]['offset']);}_0x11cfcd['order']=qs[_0x5bde('0x37')](_0x23061d[_0x5bde('0x2f')][_0x5bde('0x37')]);_0x11cfcd[_0x5bde('0x38')]=qs['filters'](_[_0x5bde('0x39')](_0x23061d[_0x5bde('0x2f')],_0x2c1699[_0x5bde('0x31')]),_0x3a7c05);if(_0x23061d[_0x5bde('0x2f')][_0x5bde('0x3a')]){_0x11cfcd[_0x5bde('0x38')]=_[_0x5bde('0x3b')](_0x11cfcd[_0x5bde('0x38')],{'$or':_[_0x5bde('0x2a')](_0x3a7c05,function(_0x13fe0f){if(_0x13fe0f[_0x5bde('0x2c')]!==_0x5bde('0x3c')){var _0xe77f5f={};_0xe77f5f[_0x13fe0f[_0x5bde('0x28')]]={'$like':'%'+_0x23061d['query'][_0x5bde('0x3a')]+'%'};return _0xe77f5f;}})});}_0x11cfcd=_[_0x5bde('0x3b')]({},_0x11cfcd,_0x23061d['options']);var _0x1fe62f={'where':_0x11cfcd[_0x5bde('0x38')]};return db[_0x5bde('0x3d')]['count'](_0x1fe62f)[_0x5bde('0x24')](function(_0x2d80c7){_0x5cc902[_0x5bde('0x1e')]=_0x2d80c7;if(_0x23061d[_0x5bde('0x2f')]['includeAll']){_0x11cfcd[_0x5bde('0x3e')]=[{'all':!![]}];}return db[_0x5bde('0x3d')]['findAll'](_0x11cfcd);})[_0x5bde('0x24')](function(_0x5857c7){_0x5cc902[_0x5bde('0x3f')]=_0x5857c7;return _0x5cc902;})[_0x5bde('0x24')](respondWithFilteredResult(_0x2a3854,_0x11cfcd))['catch'](handleError(_0x2a3854,null));};exports['show']=function(_0x20004b,_0x4924b5){var _0x2b349d={'raw':![],'where':{'id':_0x20004b[_0x5bde('0x40')]['id']}},_0x1c1c17={};_0x1c1c17[_0x5bde('0x2e')]=_[_0x5bde('0x30')](db['Trigger'][_0x5bde('0x2b')]);_0x1c1c17[_0x5bde('0x2f')]=_[_0x5bde('0x30')](_0x20004b[_0x5bde('0x2f')]);_0x1c1c17['filters']=_['intersection'](_0x1c1c17[_0x5bde('0x2e')],_0x1c1c17['query']);_0x2b349d[_0x5bde('0x33')]=_[_0x5bde('0x32')](_0x1c1c17[_0x5bde('0x2e')],qs[_0x5bde('0x34')](_0x20004b['query'][_0x5bde('0x34')]));_0x2b349d[_0x5bde('0x33')]=_0x2b349d[_0x5bde('0x33')][_0x5bde('0x35')]?_0x2b349d[_0x5bde('0x33')]:_0x1c1c17[_0x5bde('0x2e')];if(_0x20004b[_0x5bde('0x2f')][_0x5bde('0x41')]){_0x2b349d[_0x5bde('0x3e')]=[{'all':!![]}];}_0x2b349d=_[_0x5bde('0x3b')]({},_0x2b349d,_0x20004b[_0x5bde('0x42')]);return db['Trigger']['find'](_0x2b349d)[_0x5bde('0x24')](handleEntityNotFound(_0x4924b5,null))[_0x5bde('0x24')](respondWithResult(_0x4924b5,null))[_0x5bde('0x43')](handleError(_0x4924b5,null));};exports[_0x5bde('0x44')]=function(_0x5da6e0,_0x2ffc95){return db[_0x5bde('0x3d')][_0x5bde('0x44')](_0x5da6e0[_0x5bde('0x45')],{})[_0x5bde('0x24')](function(_0x1b47cc){var _0x4bcade=_0x5da6e0['user'][_0x5bde('0x46')]({'plain':!![]});if(!_0x4bcade)throw new Error(_0x5bde('0x47'));if(_0x4bcade[_0x5bde('0x48')]===_0x5bde('0x49')){var _0x17b7e2=_0x1b47cc[_0x5bde('0x46')]({'plain':!![]});var _0x5df009='Triggers';return db[_0x5bde('0x4a')][_0x5bde('0x4b')]({'where':{'name':_0x5df009,'userProfileId':_0x4bcade['userProfileId']},'raw':!![]})['then'](function(_0x46a69a){if(_0x46a69a&&_0x46a69a[_0x5bde('0x4c')]===0x0){return db['UserProfileResource'][_0x5bde('0x44')]({'name':_0x17b7e2['name'],'resourceId':_0x17b7e2['id'],'type':_0x46a69a[_0x5bde('0x28')],'sectionId':_0x46a69a['id']},{})['then'](function(){return _0x1b47cc;});}else{return _0x1b47cc;}})[_0x5bde('0x43')](function(_0x44ad9d){logger[_0x5bde('0x27')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x44ad9d);throw _0x44ad9d;});}return _0x1b47cc;})[_0x5bde('0x24')](respondWithResult(_0x2ffc95,0xc9))['catch'](handleError(_0x2ffc95,null));};exports[_0x5bde('0x23')]=function(_0x4d95f6,_0x25af79){if(_0x4d95f6[_0x5bde('0x45')]['id']){delete _0x4d95f6['body']['id'];}return db['Trigger']['find']({'where':{'id':_0x4d95f6['params']['id']}})[_0x5bde('0x24')](handleEntityNotFound(_0x25af79,null))[_0x5bde('0x24')](saveUpdates(_0x4d95f6['body'],null))[_0x5bde('0x24')](respondWithResult(_0x25af79,null))['catch'](handleError(_0x25af79,null));};exports['destroy']=function(_0x4ec88e,_0x25f8e1){return db[_0x5bde('0x3d')][_0x5bde('0x4b')]({'where':{'id':_0x4ec88e[_0x5bde('0x40')]['id']}})[_0x5bde('0x24')](handleEntityNotFound(_0x25f8e1,null))[_0x5bde('0x24')](removeEntity(_0x25f8e1,null))['catch'](handleError(_0x25f8e1,null));};exports[_0x5bde('0x4d')]=function(_0x2fd9,_0x2436d8,_0x5d6853){if(_0x2fd9[_0x5bde('0x45')]['id']){delete _0x2fd9[_0x5bde('0x45')]['id'];}return db[_0x5bde('0x3d')][_0x5bde('0x4b')]({'where':{'id':_0x2fd9[_0x5bde('0x40')]['id']}})['then'](handleEntityNotFound(_0x2436d8,null))[_0x5bde('0x24')](function(_0x38c588){if(_0x38c588){_0x2fd9[_0x5bde('0x45')][_0x5bde('0x4e')]=_0x38c588['id'];return db['Condition']['create'](_0x2fd9['body']);}})[_0x5bde('0x24')](respondWithResult(_0x2436d8,null))[_0x5bde('0x43')](handleError(_0x2436d8,null));};exports[_0x5bde('0x4f')]=function(_0x238030,_0x16f608,_0x236c28){if(_0x238030['body']['id']){delete _0x238030[_0x5bde('0x45')]['id'];}return db[_0x5bde('0x3d')][_0x5bde('0x4b')]({'where':{'id':_0x238030['params']['id']}})['then'](handleEntityNotFound(_0x16f608,null))[_0x5bde('0x24')](function(_0x28640e){if(_0x28640e){_0x238030['body'][_0x5bde('0x50')]=_0x28640e['id'];return db['Condition'][_0x5bde('0x44')](_0x238030[_0x5bde('0x45')]);}})['then'](respondWithResult(_0x16f608,null))[_0x5bde('0x43')](handleError(_0x16f608,null));};exports['getAllConditions']=function(_0x353777,_0x1a2a68,_0x401a53){var _0x3c0220={};var _0x3ac9b1={};var _0x218169;var _0x1149e5;return db[_0x5bde('0x3d')]['findOne']({'where':{'id':_0x353777[_0x5bde('0x40')]['id']}})['then'](handleEntityNotFound(_0x1a2a68,null))['then'](function(_0x5a7cbc){if(_0x5a7cbc){_0x218169=_0x5a7cbc;_0x3ac9b1['model']=_[_0x5bde('0x30')](db['Condition'][_0x5bde('0x2b')]);_0x3ac9b1[_0x5bde('0x2f')]=_[_0x5bde('0x30')](_0x353777[_0x5bde('0x2f')]);_0x3ac9b1[_0x5bde('0x31')]=_[_0x5bde('0x32')](_0x3ac9b1[_0x5bde('0x2e')],_0x3ac9b1['query']);_0x3c0220['attributes']=_['intersection'](_0x3ac9b1['model'],qs[_0x5bde('0x34')](_0x353777[_0x5bde('0x2f')]['fields']));_0x3c0220[_0x5bde('0x33')]=_0x3c0220[_0x5bde('0x33')][_0x5bde('0x35')]?_0x3c0220[_0x5bde('0x33')]:_0x3ac9b1[_0x5bde('0x2e')];_0x3c0220['order']=qs['sort'](_0x353777[_0x5bde('0x2f')][_0x5bde('0x37')]);_0x3c0220[_0x5bde('0x38')]=qs[_0x5bde('0x31')](_[_0x5bde('0x39')](_0x353777[_0x5bde('0x2f')],_0x3ac9b1[_0x5bde('0x31')]));if(_0x353777['query'][_0x5bde('0x3a')]){_0x3c0220[_0x5bde('0x38')]=_[_0x5bde('0x3b')](_0x3c0220[_0x5bde('0x38')],{'$or':_['map'](_0x3c0220[_0x5bde('0x33')],function(_0x30d84e){var _0x176431={};_0x176431[_0x30d84e]={'$like':'%'+_0x353777[_0x5bde('0x2f')]['filter']+'%'};return _0x176431;})});}_0x3c0220=_[_0x5bde('0x3b')]({},_0x3c0220,_0x353777['options']);return _0x218169[_0x5bde('0x51')](_0x3c0220);}})[_0x5bde('0x24')](function(_0x571cdd){if(_0x571cdd){_0x1149e5=_0x571cdd[_0x5bde('0x35')];if(!_0x353777['query'][_0x5bde('0x52')]('nolimit')){_0x3c0220[_0x5bde('0x1d')]=qs['limit'](_0x353777[_0x5bde('0x2f')][_0x5bde('0x1d')]);_0x3c0220[_0x5bde('0x1b')]=qs['offset'](_0x353777['query']['offset']);}return _0x218169[_0x5bde('0x51')](_0x3c0220);}})[_0x5bde('0x24')](function(_0x12c5f7){if(_0x12c5f7){return _0x12c5f7?{'count':_0x1149e5,'rows':_0x12c5f7}:null;}})[_0x5bde('0x24')](respondWithResult(_0x1a2a68,null))[_0x5bde('0x43')](handleError(_0x1a2a68,null));};exports['getAnyConditions']=function(_0x592905,_0x2f93cb,_0x131b02){var _0xcd3a85={};var _0x34044a={};var _0x4d6e9;var _0x230016;return db[_0x5bde('0x3d')]['findOne']({'where':{'id':_0x592905[_0x5bde('0x40')]['id']}})[_0x5bde('0x24')](handleEntityNotFound(_0x2f93cb,null))[_0x5bde('0x24')](function(_0x1d0e5a){if(_0x1d0e5a){_0x4d6e9=_0x1d0e5a;_0x34044a[_0x5bde('0x2e')]=_[_0x5bde('0x30')](db[_0x5bde('0x53')][_0x5bde('0x2b')]);_0x34044a[_0x5bde('0x2f')]=_[_0x5bde('0x30')](_0x592905[_0x5bde('0x2f')]);_0x34044a[_0x5bde('0x31')]=_['intersection'](_0x34044a[_0x5bde('0x2e')],_0x34044a[_0x5bde('0x2f')]);_0xcd3a85[_0x5bde('0x33')]=_[_0x5bde('0x32')](_0x34044a['model'],qs['fields'](_0x592905[_0x5bde('0x2f')][_0x5bde('0x34')]));_0xcd3a85[_0x5bde('0x33')]=_0xcd3a85[_0x5bde('0x33')][_0x5bde('0x35')]?_0xcd3a85['attributes']:_0x34044a[_0x5bde('0x2e')];_0xcd3a85[_0x5bde('0x54')]=qs['sort'](_0x592905[_0x5bde('0x2f')][_0x5bde('0x37')]);_0xcd3a85[_0x5bde('0x38')]=qs[_0x5bde('0x31')](_['pick'](_0x592905[_0x5bde('0x2f')],_0x34044a[_0x5bde('0x31')]));if(_0x592905[_0x5bde('0x2f')][_0x5bde('0x3a')]){_0xcd3a85[_0x5bde('0x38')]=_[_0x5bde('0x3b')](_0xcd3a85[_0x5bde('0x38')],{'$or':_[_0x5bde('0x2a')](_0xcd3a85[_0x5bde('0x33')],function(_0x20047a){var _0x4e2070={};_0x4e2070[_0x20047a]={'$like':'%'+_0x592905[_0x5bde('0x2f')][_0x5bde('0x3a')]+'%'};return _0x4e2070;})});}_0xcd3a85=_[_0x5bde('0x3b')]({},_0xcd3a85,_0x592905[_0x5bde('0x42')]);return _0x4d6e9[_0x5bde('0x55')](_0xcd3a85);}})[_0x5bde('0x24')](function(_0x499ecd){if(_0x499ecd){_0x230016=_0x499ecd[_0x5bde('0x35')];if(!_0x592905[_0x5bde('0x2f')]['hasOwnProperty']('nolimit')){_0xcd3a85[_0x5bde('0x1d')]=qs['limit'](_0x592905[_0x5bde('0x2f')][_0x5bde('0x1d')]);_0xcd3a85[_0x5bde('0x1b')]=qs['offset'](_0x592905[_0x5bde('0x2f')]['offset']);}return _0x4d6e9[_0x5bde('0x55')](_0xcd3a85);}})[_0x5bde('0x24')](function(_0x1ad113){if(_0x1ad113){return _0x1ad113?{'count':_0x230016,'rows':_0x1ad113}:null;}})['then'](respondWithResult(_0x2f93cb,null))[_0x5bde('0x43')](handleError(_0x2f93cb,null));};exports['addAction']=function(_0x77f6ce,_0x57ea48,_0x3cc5e6){if(_0x77f6ce[_0x5bde('0x45')]['id']){delete _0x77f6ce[_0x5bde('0x45')]['id'];}return db[_0x5bde('0x3d')][_0x5bde('0x4b')]({'where':{'id':_0x77f6ce[_0x5bde('0x40')]['id']}})[_0x5bde('0x24')](handleEntityNotFound(_0x57ea48,null))[_0x5bde('0x24')](function(_0x2767c4){if(_0x2767c4){_0x77f6ce[_0x5bde('0x45')][_0x5bde('0x56')]=_0x2767c4['id'];return db[_0x5bde('0x57')]['create'](_0x77f6ce[_0x5bde('0x45')]);}})[_0x5bde('0x24')](respondWithResult(_0x57ea48,null))[_0x5bde('0x43')](handleError(_0x57ea48,null));};exports[_0x5bde('0x58')]=function(_0x260f41,_0x51841f,_0x165c40){var _0x4b885c={};var _0x3b5bf8={};var _0xf613bd;var _0x2c0539;return db[_0x5bde('0x3d')][_0x5bde('0x59')]({'where':{'id':_0x260f41[_0x5bde('0x40')]['id']}})[_0x5bde('0x24')](handleEntityNotFound(_0x51841f,null))[_0x5bde('0x24')](function(_0x139f21){if(_0x139f21){_0xf613bd=_0x139f21;_0x3b5bf8[_0x5bde('0x2e')]=_[_0x5bde('0x30')](db[_0x5bde('0x57')][_0x5bde('0x2b')]);_0x3b5bf8[_0x5bde('0x2f')]=_[_0x5bde('0x30')](_0x260f41[_0x5bde('0x2f')]);_0x3b5bf8[_0x5bde('0x31')]=_[_0x5bde('0x32')](_0x3b5bf8[_0x5bde('0x2e')],_0x3b5bf8[_0x5bde('0x2f')]);_0x4b885c[_0x5bde('0x33')]=_[_0x5bde('0x32')](_0x3b5bf8[_0x5bde('0x2e')],qs[_0x5bde('0x34')](_0x260f41[_0x5bde('0x2f')]['fields']));_0x4b885c[_0x5bde('0x33')]=_0x4b885c[_0x5bde('0x33')][_0x5bde('0x35')]?_0x4b885c[_0x5bde('0x33')]:_0x3b5bf8[_0x5bde('0x2e')];_0x4b885c[_0x5bde('0x54')]=qs[_0x5bde('0x37')](_0x260f41[_0x5bde('0x2f')]['sort']);_0x4b885c[_0x5bde('0x38')]=qs['filters'](_[_0x5bde('0x39')](_0x260f41[_0x5bde('0x2f')],_0x3b5bf8[_0x5bde('0x31')]));if(_0x260f41[_0x5bde('0x2f')]['filter']){_0x4b885c[_0x5bde('0x38')]=_['merge'](_0x4b885c[_0x5bde('0x38')],{'$or':_[_0x5bde('0x2a')](_0x4b885c[_0x5bde('0x33')],function(_0x2656d9){var _0x294f24={};_0x294f24[_0x2656d9]={'$like':'%'+_0x260f41['query']['filter']+'%'};return _0x294f24;})});}_0x4b885c=_['merge']({},_0x4b885c,_0x260f41[_0x5bde('0x42')]);return _0xf613bd[_0x5bde('0x58')](_0x4b885c);}})['then'](function(_0x3888a2){if(_0x3888a2){_0x2c0539=_0x3888a2[_0x5bde('0x35')];if(!_0x260f41[_0x5bde('0x2f')][_0x5bde('0x52')](_0x5bde('0x36'))){_0x4b885c[_0x5bde('0x1d')]=qs[_0x5bde('0x1d')](_0x260f41[_0x5bde('0x2f')][_0x5bde('0x1d')]);_0x4b885c[_0x5bde('0x1b')]=qs[_0x5bde('0x1b')](_0x260f41[_0x5bde('0x2f')][_0x5bde('0x1b')]);}return _0xf613bd[_0x5bde('0x58')](_0x4b885c);}})['then'](function(_0x4cb143){if(_0x4cb143){return _0x4cb143?{'count':_0x2c0539,'rows':_0x4cb143}:null;}})[_0x5bde('0x24')](respondWithResult(_0x51841f,null))[_0x5bde('0x43')](handleError(_0x51841f,null));};
\ No newline at end of file
+var _0x1bc0=['keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','merge','VIRTUAL','filter','options','count','include','rows','show','params','includeAll','create','body','user','get','role','Triggers','UserProfileSection','find','userProfileId','autoAssociation','catch','addAllCondition','TriggerAllId','addAnyCondition','TriggerAnyId','getAllConditions','pick','getAnyConditions','findOne','Condition','addAction','TriggerId','Action','getActions','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','Content-Range','reject','save','update','then','destroy','UserProfileResource','end','error','stack','name','send','index','map','Trigger','rawAttributes','fieldName','type','key','model','query'];(function(_0x55bb2d,_0x83292a){var _0x251c90=function(_0x12e9c1){while(--_0x12e9c1){_0x55bb2d['push'](_0x55bb2d['shift']());}};_0x251c90(++_0x83292a);}(_0x1bc0,0x150));var _0x01bc=function(_0x5b96d5,_0x5eb240){_0x5b96d5=_0x5b96d5-0x0;var _0x333c3f=_0x1bc0[_0x5b96d5];return _0x333c3f;};'use strict';var emlformat=require(_0x01bc('0x0'));var rimraf=require(_0x01bc('0x1'));var zipdir=require(_0x01bc('0x2'));var jsonpatch=require(_0x01bc('0x3'));var rp=require('request-promise');var moment=require(_0x01bc('0x4'));var BPromise=require(_0x01bc('0x5'));var Mustache=require(_0x01bc('0x6'));var util=require(_0x01bc('0x7'));var path=require('path');var sox=require(_0x01bc('0x8'));var csv=require(_0x01bc('0x9'));var ejs=require(_0x01bc('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x01bc('0xb'));var squel=require('squel');var crypto=require(_0x01bc('0xc'));var jsforce=require(_0x01bc('0xd'));var deskjs=require(_0x01bc('0xe'));var toCsv=require(_0x01bc('0x9'));var querystring=require('querystring');var Papa=require(_0x01bc('0xf'));var Redis=require(_0x01bc('0x10'));var authService=require(_0x01bc('0x11'));var qs=require(_0x01bc('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x01bc('0x13'));var logger=require(_0x01bc('0x14'))(_0x01bc('0x15'));var utils=require('../../config/utils');var config=require(_0x01bc('0x16'));var licenseUtil=require(_0x01bc('0x17'));var db=require(_0x01bc('0x18'))['db'];function respondWithStatusCode(_0xc7e861,_0x57d5ce){_0x57d5ce=_0x57d5ce||0xcc;return function(_0x5da9ad){if(_0x5da9ad){return _0xc7e861[_0x01bc('0x19')](_0x57d5ce);}return _0xc7e861['status'](_0x57d5ce)['end']();};}function respondWithResult(_0xe534db,_0x3ad3be){_0x3ad3be=_0x3ad3be||0xc8;return function(_0x2791d8){if(_0x2791d8){return _0xe534db[_0x01bc('0x1a')](_0x3ad3be)[_0x01bc('0x1b')](_0x2791d8);}};}function respondWithFilteredResult(_0x453b2e,_0x55e19a){return function(_0x36a693){if(_0x36a693){var _0x4c9ca4=typeof _0x55e19a[_0x01bc('0x1c')]===_0x01bc('0x1d')&&typeof _0x55e19a[_0x01bc('0x1e')]===_0x01bc('0x1d');var _0x3b29c4=_0x36a693['count'];var _0x17be3c=_0x4c9ca4?0x0:_0x55e19a[_0x01bc('0x1c')];var _0x58a200=_0x4c9ca4?_0x36a693['count']:_0x55e19a[_0x01bc('0x1c')]+_0x55e19a['limit'];var _0x56121b;if(_0x58a200>=_0x3b29c4){_0x58a200=_0x3b29c4;_0x56121b=0xc8;}else{_0x56121b=0xce;}_0x453b2e[_0x01bc('0x1a')](_0x56121b);return _0x453b2e['set'](_0x01bc('0x1f'),_0x17be3c+'-'+_0x58a200+'/'+_0x3b29c4)[_0x01bc('0x1b')](_0x36a693);}return null;};}function patchUpdates(_0x2ab43e){return function(_0x2872f3){try{jsonpatch['apply'](_0x2872f3,_0x2ab43e,!![]);}catch(_0x481894){return BPromise[_0x01bc('0x20')](_0x481894);}return _0x2872f3[_0x01bc('0x21')]();};}function saveUpdates(_0x3a0d95,_0x453d7c){return function(_0x1a8ce0){if(_0x1a8ce0){return _0x1a8ce0[_0x01bc('0x22')](_0x3a0d95)[_0x01bc('0x23')](function(_0x7cec36){return _0x7cec36;});}return null;};}function removeEntity(_0x51d000,_0x11b57c){return function(_0x44eeb2){if(_0x44eeb2){return _0x44eeb2[_0x01bc('0x24')]()[_0x01bc('0x23')](function(){var _0x5c3b53=_0x44eeb2['get']({'plain':!![]});var _0x42c73d='Triggers';return db[_0x01bc('0x25')][_0x01bc('0x24')]({'where':{'type':_0x42c73d,'resourceId':_0x5c3b53['id']}})[_0x01bc('0x23')](function(){return _0x44eeb2;});})[_0x01bc('0x23')](function(){_0x51d000[_0x01bc('0x1a')](0xcc)[_0x01bc('0x26')]();});}};}function handleEntityNotFound(_0x2b0036,_0x385def){return function(_0x1961b3){if(!_0x1961b3){_0x2b0036[_0x01bc('0x19')](0x194);}return _0x1961b3;};}function handleError(_0x3023b7,_0x5349db){_0x5349db=_0x5349db||0x1f4;return function(_0x28242c){logger[_0x01bc('0x27')](_0x28242c[_0x01bc('0x28')]);if(_0x28242c[_0x01bc('0x29')]){delete _0x28242c[_0x01bc('0x29')];}_0x3023b7[_0x01bc('0x1a')](_0x5349db)[_0x01bc('0x2a')](_0x28242c);};}exports[_0x01bc('0x2b')]=function(_0x43546c,_0x342e05){var _0x272081={},_0x4f0c80={},_0x578eb0={'count':0x0,'rows':[]};var _0x53ca74=_[_0x01bc('0x2c')](db[_0x01bc('0x2d')][_0x01bc('0x2e')],function(_0x963e42){return{'name':_0x963e42[_0x01bc('0x2f')],'type':_0x963e42[_0x01bc('0x30')][_0x01bc('0x31')]};});_0x4f0c80[_0x01bc('0x32')]=_[_0x01bc('0x2c')](_0x53ca74,_0x01bc('0x29'));_0x4f0c80[_0x01bc('0x33')]=_[_0x01bc('0x34')](_0x43546c[_0x01bc('0x33')]);_0x4f0c80[_0x01bc('0x35')]=_[_0x01bc('0x36')](_0x4f0c80[_0x01bc('0x32')],_0x4f0c80[_0x01bc('0x33')]);_0x272081[_0x01bc('0x37')]=_[_0x01bc('0x36')](_0x4f0c80[_0x01bc('0x32')],qs['fields'](_0x43546c[_0x01bc('0x33')][_0x01bc('0x38')]));_0x272081['attributes']=_0x272081[_0x01bc('0x37')][_0x01bc('0x39')]?_0x272081[_0x01bc('0x37')]:_0x4f0c80[_0x01bc('0x32')];if(!_0x43546c['query'][_0x01bc('0x3a')](_0x01bc('0x3b'))){_0x272081[_0x01bc('0x1e')]=qs[_0x01bc('0x1e')](_0x43546c[_0x01bc('0x33')][_0x01bc('0x1e')]);_0x272081[_0x01bc('0x1c')]=qs[_0x01bc('0x1c')](_0x43546c[_0x01bc('0x33')][_0x01bc('0x1c')]);}_0x272081[_0x01bc('0x3c')]=qs[_0x01bc('0x3d')](_0x43546c['query'][_0x01bc('0x3d')]);_0x272081[_0x01bc('0x3e')]=qs[_0x01bc('0x35')](_['pick'](_0x43546c['query'],_0x4f0c80['filters']),_0x53ca74);if(_0x43546c['query']['filter']){_0x272081[_0x01bc('0x3e')]=_[_0x01bc('0x3f')](_0x272081['where'],{'$or':_[_0x01bc('0x2c')](_0x53ca74,function(_0x833491){if(_0x833491[_0x01bc('0x30')]!==_0x01bc('0x40')){var _0x530e55={};_0x530e55[_0x833491[_0x01bc('0x29')]]={'$like':'%'+_0x43546c[_0x01bc('0x33')][_0x01bc('0x41')]+'%'};return _0x530e55;}})});}_0x272081=_['merge']({},_0x272081,_0x43546c[_0x01bc('0x42')]);var _0x8e6500={'where':_0x272081[_0x01bc('0x3e')]};return db[_0x01bc('0x2d')]['count'](_0x8e6500)[_0x01bc('0x23')](function(_0x48c15f){_0x578eb0[_0x01bc('0x43')]=_0x48c15f;if(_0x43546c[_0x01bc('0x33')]['includeAll']){_0x272081[_0x01bc('0x44')]=[{'all':!![]}];}return db[_0x01bc('0x2d')]['findAll'](_0x272081);})[_0x01bc('0x23')](function(_0x332fff){_0x578eb0[_0x01bc('0x45')]=_0x332fff;return _0x578eb0;})[_0x01bc('0x23')](respondWithFilteredResult(_0x342e05,_0x272081))['catch'](handleError(_0x342e05,null));};exports[_0x01bc('0x46')]=function(_0x384856,_0x3f8360){var _0x3eb896={'raw':![],'where':{'id':_0x384856[_0x01bc('0x47')]['id']}},_0x1d28bf={};_0x1d28bf[_0x01bc('0x32')]=_['keys'](db[_0x01bc('0x2d')][_0x01bc('0x2e')]);_0x1d28bf[_0x01bc('0x33')]=_[_0x01bc('0x34')](_0x384856['query']);_0x1d28bf[_0x01bc('0x35')]=_['intersection'](_0x1d28bf[_0x01bc('0x32')],_0x1d28bf[_0x01bc('0x33')]);_0x3eb896[_0x01bc('0x37')]=_[_0x01bc('0x36')](_0x1d28bf[_0x01bc('0x32')],qs[_0x01bc('0x38')](_0x384856['query'][_0x01bc('0x38')]));_0x3eb896[_0x01bc('0x37')]=_0x3eb896[_0x01bc('0x37')][_0x01bc('0x39')]?_0x3eb896[_0x01bc('0x37')]:_0x1d28bf[_0x01bc('0x32')];if(_0x384856[_0x01bc('0x33')][_0x01bc('0x48')]){_0x3eb896[_0x01bc('0x44')]=[{'all':!![]}];}_0x3eb896=_['merge']({},_0x3eb896,_0x384856[_0x01bc('0x42')]);return db[_0x01bc('0x2d')]['find'](_0x3eb896)[_0x01bc('0x23')](handleEntityNotFound(_0x3f8360,null))[_0x01bc('0x23')](respondWithResult(_0x3f8360,null))['catch'](handleError(_0x3f8360,null));};exports[_0x01bc('0x49')]=function(_0x21e04b,_0xb92e1d){return db[_0x01bc('0x2d')][_0x01bc('0x49')](_0x21e04b[_0x01bc('0x4a')],{})[_0x01bc('0x23')](function(_0x473dab){var _0x2ebabe=_0x21e04b[_0x01bc('0x4b')][_0x01bc('0x4c')]({'plain':!![]});if(!_0x2ebabe)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x2ebabe[_0x01bc('0x4d')]===_0x01bc('0x4b')){var _0x210022=_0x473dab[_0x01bc('0x4c')]({'plain':!![]});var _0x53f335=_0x01bc('0x4e');return db[_0x01bc('0x4f')][_0x01bc('0x50')]({'where':{'name':_0x53f335,'userProfileId':_0x2ebabe[_0x01bc('0x51')]},'raw':!![]})['then'](function(_0x2a2c9f){if(_0x2a2c9f&&_0x2a2c9f[_0x01bc('0x52')]===0x0){return db['UserProfileResource'][_0x01bc('0x49')]({'name':_0x210022[_0x01bc('0x29')],'resourceId':_0x210022['id'],'type':_0x2a2c9f[_0x01bc('0x29')],'sectionId':_0x2a2c9f['id']},{})[_0x01bc('0x23')](function(){return _0x473dab;});}else{return _0x473dab;}})['catch'](function(_0x3f963b){logger[_0x01bc('0x27')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x3f963b);throw _0x3f963b;});}return _0x473dab;})[_0x01bc('0x23')](respondWithResult(_0xb92e1d,0xc9))[_0x01bc('0x53')](handleError(_0xb92e1d,null));};exports[_0x01bc('0x22')]=function(_0x37ae8e,_0x4e2fac){if(_0x37ae8e[_0x01bc('0x4a')]['id']){delete _0x37ae8e[_0x01bc('0x4a')]['id'];}return db[_0x01bc('0x2d')]['find']({'where':{'id':_0x37ae8e[_0x01bc('0x47')]['id']}})[_0x01bc('0x23')](handleEntityNotFound(_0x4e2fac,null))[_0x01bc('0x23')](saveUpdates(_0x37ae8e[_0x01bc('0x4a')],null))['then'](respondWithResult(_0x4e2fac,null))['catch'](handleError(_0x4e2fac,null));};exports[_0x01bc('0x24')]=function(_0x5c777f,_0x26882c){return db[_0x01bc('0x2d')][_0x01bc('0x50')]({'where':{'id':_0x5c777f[_0x01bc('0x47')]['id']}})['then'](handleEntityNotFound(_0x26882c,null))['then'](removeEntity(_0x26882c,null))[_0x01bc('0x53')](handleError(_0x26882c,null));};exports[_0x01bc('0x54')]=function(_0x37977a,_0x390192,_0x3e64ff){if(_0x37977a[_0x01bc('0x4a')]['id']){delete _0x37977a[_0x01bc('0x4a')]['id'];}return db['Trigger'][_0x01bc('0x50')]({'where':{'id':_0x37977a[_0x01bc('0x47')]['id']}})[_0x01bc('0x23')](handleEntityNotFound(_0x390192,null))[_0x01bc('0x23')](function(_0x257f1e){if(_0x257f1e){_0x37977a[_0x01bc('0x4a')][_0x01bc('0x55')]=_0x257f1e['id'];return db['Condition'][_0x01bc('0x49')](_0x37977a['body']);}})['then'](respondWithResult(_0x390192,null))['catch'](handleError(_0x390192,null));};exports[_0x01bc('0x56')]=function(_0x45594d,_0x2f706d,_0x52b982){if(_0x45594d[_0x01bc('0x4a')]['id']){delete _0x45594d['body']['id'];}return db['Trigger'][_0x01bc('0x50')]({'where':{'id':_0x45594d[_0x01bc('0x47')]['id']}})[_0x01bc('0x23')](handleEntityNotFound(_0x2f706d,null))['then'](function(_0x24e052){if(_0x24e052){_0x45594d['body'][_0x01bc('0x57')]=_0x24e052['id'];return db['Condition'][_0x01bc('0x49')](_0x45594d['body']);}})['then'](respondWithResult(_0x2f706d,null))[_0x01bc('0x53')](handleError(_0x2f706d,null));};exports[_0x01bc('0x58')]=function(_0x4b858b,_0x24b092,_0x5a1d23){var _0x133ecb={};var _0x2342e6={};var _0x3abe51;var _0x200546;return db[_0x01bc('0x2d')]['findOne']({'where':{'id':_0x4b858b[_0x01bc('0x47')]['id']}})[_0x01bc('0x23')](handleEntityNotFound(_0x24b092,null))[_0x01bc('0x23')](function(_0x5b8f7a){if(_0x5b8f7a){_0x3abe51=_0x5b8f7a;_0x2342e6[_0x01bc('0x32')]=_[_0x01bc('0x34')](db['Condition']['rawAttributes']);_0x2342e6[_0x01bc('0x33')]=_['keys'](_0x4b858b[_0x01bc('0x33')]);_0x2342e6[_0x01bc('0x35')]=_['intersection'](_0x2342e6[_0x01bc('0x32')],_0x2342e6[_0x01bc('0x33')]);_0x133ecb['attributes']=_[_0x01bc('0x36')](_0x2342e6[_0x01bc('0x32')],qs['fields'](_0x4b858b[_0x01bc('0x33')][_0x01bc('0x38')]));_0x133ecb[_0x01bc('0x37')]=_0x133ecb[_0x01bc('0x37')][_0x01bc('0x39')]?_0x133ecb['attributes']:_0x2342e6[_0x01bc('0x32')];_0x133ecb[_0x01bc('0x3c')]=qs['sort'](_0x4b858b[_0x01bc('0x33')]['sort']);_0x133ecb[_0x01bc('0x3e')]=qs[_0x01bc('0x35')](_[_0x01bc('0x59')](_0x4b858b[_0x01bc('0x33')],_0x2342e6['filters']));if(_0x4b858b[_0x01bc('0x33')][_0x01bc('0x41')]){_0x133ecb['where']=_[_0x01bc('0x3f')](_0x133ecb[_0x01bc('0x3e')],{'$or':_[_0x01bc('0x2c')](_0x133ecb['attributes'],function(_0x3aa122){var _0xed8383={};_0xed8383[_0x3aa122]={'$like':'%'+_0x4b858b[_0x01bc('0x33')][_0x01bc('0x41')]+'%'};return _0xed8383;})});}_0x133ecb=_[_0x01bc('0x3f')]({},_0x133ecb,_0x4b858b[_0x01bc('0x42')]);return _0x3abe51[_0x01bc('0x58')](_0x133ecb);}})[_0x01bc('0x23')](function(_0x207e76){if(_0x207e76){_0x200546=_0x207e76[_0x01bc('0x39')];if(!_0x4b858b[_0x01bc('0x33')][_0x01bc('0x3a')](_0x01bc('0x3b'))){_0x133ecb[_0x01bc('0x1e')]=qs[_0x01bc('0x1e')](_0x4b858b[_0x01bc('0x33')][_0x01bc('0x1e')]);_0x133ecb[_0x01bc('0x1c')]=qs[_0x01bc('0x1c')](_0x4b858b['query'][_0x01bc('0x1c')]);}return _0x3abe51[_0x01bc('0x58')](_0x133ecb);}})[_0x01bc('0x23')](function(_0x4f9d37){if(_0x4f9d37){return _0x4f9d37?{'count':_0x200546,'rows':_0x4f9d37}:null;}})[_0x01bc('0x23')](respondWithResult(_0x24b092,null))['catch'](handleError(_0x24b092,null));};exports[_0x01bc('0x5a')]=function(_0x490d2c,_0x51048f,_0x1619ba){var _0x5c6bd9={};var _0x541780={};var _0x49d497;var _0x324b95;return db[_0x01bc('0x2d')][_0x01bc('0x5b')]({'where':{'id':_0x490d2c[_0x01bc('0x47')]['id']}})[_0x01bc('0x23')](handleEntityNotFound(_0x51048f,null))[_0x01bc('0x23')](function(_0x414ebd){if(_0x414ebd){_0x49d497=_0x414ebd;_0x541780[_0x01bc('0x32')]=_[_0x01bc('0x34')](db[_0x01bc('0x5c')][_0x01bc('0x2e')]);_0x541780[_0x01bc('0x33')]=_[_0x01bc('0x34')](_0x490d2c[_0x01bc('0x33')]);_0x541780[_0x01bc('0x35')]=_[_0x01bc('0x36')](_0x541780[_0x01bc('0x32')],_0x541780['query']);_0x5c6bd9[_0x01bc('0x37')]=_[_0x01bc('0x36')](_0x541780[_0x01bc('0x32')],qs[_0x01bc('0x38')](_0x490d2c[_0x01bc('0x33')][_0x01bc('0x38')]));_0x5c6bd9[_0x01bc('0x37')]=_0x5c6bd9['attributes'][_0x01bc('0x39')]?_0x5c6bd9[_0x01bc('0x37')]:_0x541780[_0x01bc('0x32')];_0x5c6bd9[_0x01bc('0x3c')]=qs['sort'](_0x490d2c['query'][_0x01bc('0x3d')]);_0x5c6bd9[_0x01bc('0x3e')]=qs[_0x01bc('0x35')](_[_0x01bc('0x59')](_0x490d2c[_0x01bc('0x33')],_0x541780[_0x01bc('0x35')]));if(_0x490d2c['query'][_0x01bc('0x41')]){_0x5c6bd9[_0x01bc('0x3e')]=_['merge'](_0x5c6bd9[_0x01bc('0x3e')],{'$or':_[_0x01bc('0x2c')](_0x5c6bd9[_0x01bc('0x37')],function(_0xe6f296){var _0x3d467a={};_0x3d467a[_0xe6f296]={'$like':'%'+_0x490d2c['query']['filter']+'%'};return _0x3d467a;})});}_0x5c6bd9=_[_0x01bc('0x3f')]({},_0x5c6bd9,_0x490d2c['options']);return _0x49d497[_0x01bc('0x5a')](_0x5c6bd9);}})['then'](function(_0x16c979){if(_0x16c979){_0x324b95=_0x16c979[_0x01bc('0x39')];if(!_0x490d2c[_0x01bc('0x33')][_0x01bc('0x3a')](_0x01bc('0x3b'))){_0x5c6bd9[_0x01bc('0x1e')]=qs[_0x01bc('0x1e')](_0x490d2c[_0x01bc('0x33')][_0x01bc('0x1e')]);_0x5c6bd9[_0x01bc('0x1c')]=qs[_0x01bc('0x1c')](_0x490d2c['query'][_0x01bc('0x1c')]);}return _0x49d497[_0x01bc('0x5a')](_0x5c6bd9);}})['then'](function(_0x577285){if(_0x577285){return _0x577285?{'count':_0x324b95,'rows':_0x577285}:null;}})[_0x01bc('0x23')](respondWithResult(_0x51048f,null))[_0x01bc('0x53')](handleError(_0x51048f,null));};exports[_0x01bc('0x5d')]=function(_0x3afd32,_0x2a1fff,_0x41770d){if(_0x3afd32[_0x01bc('0x4a')]['id']){delete _0x3afd32[_0x01bc('0x4a')]['id'];}return db[_0x01bc('0x2d')]['find']({'where':{'id':_0x3afd32[_0x01bc('0x47')]['id']}})[_0x01bc('0x23')](handleEntityNotFound(_0x2a1fff,null))[_0x01bc('0x23')](function(_0x4f8771){if(_0x4f8771){_0x3afd32['body'][_0x01bc('0x5e')]=_0x4f8771['id'];return db[_0x01bc('0x5f')][_0x01bc('0x49')](_0x3afd32[_0x01bc('0x4a')]);}})[_0x01bc('0x23')](respondWithResult(_0x2a1fff,null))[_0x01bc('0x53')](handleError(_0x2a1fff,null));};exports[_0x01bc('0x60')]=function(_0x17847b,_0x2a24f9,_0x48fb4f){var _0x303d98={};var _0x24c141={};var _0x20f97d;var _0x5683ec;return db[_0x01bc('0x2d')][_0x01bc('0x5b')]({'where':{'id':_0x17847b['params']['id']}})['then'](handleEntityNotFound(_0x2a24f9,null))[_0x01bc('0x23')](function(_0x23c404){if(_0x23c404){_0x20f97d=_0x23c404;_0x24c141[_0x01bc('0x32')]=_[_0x01bc('0x34')](db[_0x01bc('0x5f')][_0x01bc('0x2e')]);_0x24c141['query']=_[_0x01bc('0x34')](_0x17847b[_0x01bc('0x33')]);_0x24c141['filters']=_[_0x01bc('0x36')](_0x24c141[_0x01bc('0x32')],_0x24c141[_0x01bc('0x33')]);_0x303d98[_0x01bc('0x37')]=_[_0x01bc('0x36')](_0x24c141[_0x01bc('0x32')],qs[_0x01bc('0x38')](_0x17847b[_0x01bc('0x33')][_0x01bc('0x38')]));_0x303d98[_0x01bc('0x37')]=_0x303d98[_0x01bc('0x37')][_0x01bc('0x39')]?_0x303d98['attributes']:_0x24c141[_0x01bc('0x32')];_0x303d98[_0x01bc('0x3c')]=qs[_0x01bc('0x3d')](_0x17847b[_0x01bc('0x33')][_0x01bc('0x3d')]);_0x303d98[_0x01bc('0x3e')]=qs['filters'](_[_0x01bc('0x59')](_0x17847b[_0x01bc('0x33')],_0x24c141[_0x01bc('0x35')]));if(_0x17847b[_0x01bc('0x33')][_0x01bc('0x41')]){_0x303d98[_0x01bc('0x3e')]=_[_0x01bc('0x3f')](_0x303d98[_0x01bc('0x3e')],{'$or':_[_0x01bc('0x2c')](_0x303d98[_0x01bc('0x37')],function(_0x293b45){var _0x9269ef={};_0x9269ef[_0x293b45]={'$like':'%'+_0x17847b['query'][_0x01bc('0x41')]+'%'};return _0x9269ef;})});}_0x303d98=_[_0x01bc('0x3f')]({},_0x303d98,_0x17847b[_0x01bc('0x42')]);return _0x20f97d[_0x01bc('0x60')](_0x303d98);}})[_0x01bc('0x23')](function(_0x4975fe){if(_0x4975fe){_0x5683ec=_0x4975fe['length'];if(!_0x17847b[_0x01bc('0x33')]['hasOwnProperty'](_0x01bc('0x3b'))){_0x303d98[_0x01bc('0x1e')]=qs[_0x01bc('0x1e')](_0x17847b[_0x01bc('0x33')]['limit']);_0x303d98[_0x01bc('0x1c')]=qs['offset'](_0x17847b[_0x01bc('0x33')][_0x01bc('0x1c')]);}return _0x20f97d['getActions'](_0x303d98);}})['then'](function(_0x3425ba){if(_0x3425ba){return _0x3425ba?{'count':_0x5683ec,'rows':_0x3425ba}:null;}})[_0x01bc('0x23')](respondWithResult(_0x2a24f9,null))['catch'](handleError(_0x2a24f9,null));};
\ No newline at end of file
index 4c57509..f483d10 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x323b=['lodash','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./trigger.attributes','exports','tools_triggers'];(function(_0x281249,_0x1e1460){var _0xf5399a=function(_0x536982){while(--_0x536982){_0x281249['push'](_0x281249['shift']());}};_0xf5399a(++_0x1e1460);}(_0x323b,0x1ad));var _0xb323=function(_0x44c992,_0x19f125){_0x44c992=_0x44c992-0x0;var _0x4fce68=_0x323b[_0x44c992];return _0x4fce68;};'use strict';var _=require(_0xb323('0x0'));var util=require('util');var logger=require(_0xb323('0x1'))(_0xb323('0x2'));var moment=require(_0xb323('0x3'));var BPromise=require('bluebird');var rp=require(_0xb323('0x4'));var fs=require('fs');var path=require(_0xb323('0x5'));var rimraf=require(_0xb323('0x6'));var config=require(_0xb323('0x7'));var attributes=require(_0xb323('0x8'));module[_0xb323('0x9')]=function(_0x142b9b,_0x4620a0){return _0x142b9b['define']('Trigger',attributes,{'tableName':_0xb323('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x23ea=['util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./trigger.attributes','define','Trigger','tools_triggers','lodash'];(function(_0x1a7e14,_0x100435){var _0x53abf8=function(_0x4767ab){while(--_0x4767ab){_0x1a7e14['push'](_0x1a7e14['shift']());}};_0x53abf8(++_0x100435);}(_0x23ea,0xc3));var _0xa23e=function(_0x5a18ed,_0x9936d2){_0x5a18ed=_0x5a18ed-0x0;var _0x12d357=_0x23ea[_0x5a18ed];return _0x12d357;};'use strict';var _=require(_0xa23e('0x0'));var util=require(_0xa23e('0x1'));var logger=require(_0xa23e('0x2'))(_0xa23e('0x3'));var moment=require(_0xa23e('0x4'));var BPromise=require(_0xa23e('0x5'));var rp=require(_0xa23e('0x6'));var fs=require('fs');var path=require(_0xa23e('0x7'));var rimraf=require(_0xa23e('0x8'));var config=require(_0xa23e('0x9'));var attributes=require(_0xa23e('0xa'));module['exports']=function(_0x3baf3d,_0x423454){return _0x3baf3d[_0xa23e('0xb')](_0xa23e('0xc'),attributes,{'tableName':_0xa23e('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ad0bf22..9615eb5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5674=['util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','http','request','info','debug','request\x20sent','stringify','error','code','Trigger,\x20%s,\x20%s','message','result','catch','GetTrigger','Trigger','findAll','options','raw','where','attributes','include','map','model','then','find','ShowTrigger','lodash'];(function(_0x9a2618,_0x7fd0c6){var _0x44d3a3=function(_0xd63590){while(--_0xd63590){_0x9a2618['push'](_0x9a2618['shift']());}};_0x44d3a3(++_0x7fd0c6);}(_0x5674,0x15d));var _0x4567=function(_0x4f6c6b,_0xb68525){_0x4f6c6b=_0x4f6c6b-0x0;var _0x22deb3=_0x5674[_0x4f6c6b];return _0x22deb3;};'use strict';var _=require(_0x4567('0x0'));var util=require(_0x4567('0x1'));var moment=require(_0x4567('0x2'));var BPromise=require(_0x4567('0x3'));var rs=require(_0x4567('0x4'));var fs=require('fs');var Redis=require(_0x4567('0x5'));var db=require(_0x4567('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x4567('0x7'))(_0x4567('0x8'));var config=require(_0x4567('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x4567('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x389cac,_0x5c06a6,_0x279a13){return new BPromise(function(_0x177d2c,_0x380d96){return client[_0x4567('0xb')](_0x389cac,_0x279a13)['then'](function(_0xdab31){logger[_0x4567('0xc')]('Trigger,\x20%s,\x20%s',_0x5c06a6,'request\x20sent');logger[_0x4567('0xd')]('Trigger,\x20%s,\x20%s,\x20%s',_0x5c06a6,_0x4567('0xe'),JSON[_0x4567('0xf')](_0xdab31));if(_0xdab31[_0x4567('0x10')]){if(_0xdab31['error'][_0x4567('0x11')]===0x1f4){logger[_0x4567('0x10')](_0x4567('0x12'),_0x5c06a6,_0xdab31['error'][_0x4567('0x13')]);return _0x380d96(_0xdab31[_0x4567('0x10')]['message']);}logger[_0x4567('0x10')](_0x4567('0x12'),_0x5c06a6,_0xdab31[_0x4567('0x10')][_0x4567('0x13')]);return _0x177d2c(_0xdab31['error']['message']);}else{logger[_0x4567('0xc')](_0x4567('0x12'),_0x5c06a6,'request\x20sent');_0x177d2c(_0xdab31[_0x4567('0x14')][_0x4567('0x13')]);}})[_0x4567('0x15')](function(_0x4efe4d){logger[_0x4567('0x10')](_0x4567('0x12'),_0x5c06a6,_0x4efe4d);_0x380d96(_0x4efe4d);});});}exports[_0x4567('0x16')]=function(_0x32bf74){var _0x38d575=this;return new Promise(function(_0x1b44a8,_0x420685){return db[_0x4567('0x17')][_0x4567('0x18')]({'raw':_0x32bf74['options']?_0x32bf74[_0x4567('0x19')][_0x4567('0x1a')]===undefined?!![]:![]:!![],'where':_0x32bf74[_0x4567('0x19')]?_0x32bf74[_0x4567('0x19')][_0x4567('0x1b')]||null:null,'attributes':_0x32bf74[_0x4567('0x19')]?_0x32bf74['options'][_0x4567('0x1c')]||null:null,'limit':_0x32bf74[_0x4567('0x19')]?_0x32bf74[_0x4567('0x19')]['limit']||null:null,'include':_0x32bf74[_0x4567('0x19')]?_0x32bf74[_0x4567('0x19')][_0x4567('0x1d')]?_[_0x4567('0x1e')](_0x32bf74[_0x4567('0x19')][_0x4567('0x1d')],function(_0x1418ce){return{'model':db[_0x1418ce[_0x4567('0x1f')]],'as':_0x1418ce['as'],'attributes':_0x1418ce[_0x4567('0x1c')],'include':_0x1418ce['include']?_[_0x4567('0x1e')](_0x1418ce[_0x4567('0x1d')],function(_0x458385){return{'model':db[_0x458385[_0x4567('0x1f')]],'as':_0x458385['as'],'attributes':_0x458385[_0x4567('0x1c')],'include':_0x458385[_0x4567('0x1d')]?_[_0x4567('0x1e')](_0x458385[_0x4567('0x1d')],function(_0xbee407){return{'model':db[_0xbee407[_0x4567('0x1f')]],'as':_0xbee407['as'],'attributes':_0xbee407[_0x4567('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x4567('0x20')](function(_0x1f84e9){logger[_0x4567('0xc')]('GetTrigger',_0x32bf74);logger[_0x4567('0xd')](_0x4567('0x16'),_0x32bf74,JSON['stringify'](_0x1f84e9));_0x1b44a8(_0x1f84e9);})['catch'](function(_0x31dbc7){logger['error'](_0x4567('0x16'),_0x31dbc7[_0x4567('0x13')],_0x32bf74);_0x420685(_0x38d575[_0x4567('0x10')](0x1f4,_0x31dbc7[_0x4567('0x13')]));});});};exports['ShowTrigger']=function(_0x1888ad){var _0x22dbe7=this;return new Promise(function(_0x403423,_0x3c3043){return db[_0x4567('0x17')][_0x4567('0x21')]({'raw':_0x1888ad[_0x4567('0x19')]?_0x1888ad[_0x4567('0x19')][_0x4567('0x1a')]===undefined?!![]:![]:!![],'where':_0x1888ad[_0x4567('0x19')]?_0x1888ad[_0x4567('0x19')][_0x4567('0x1b')]||null:null,'attributes':_0x1888ad[_0x4567('0x19')]?_0x1888ad[_0x4567('0x19')][_0x4567('0x1c')]||null:null,'include':_0x1888ad[_0x4567('0x19')]?_0x1888ad['options'][_0x4567('0x1d')]?_[_0x4567('0x1e')](_0x1888ad['options'][_0x4567('0x1d')],function(_0x212e8b){return{'model':db[_0x212e8b[_0x4567('0x1f')]],'as':_0x212e8b['as'],'attributes':_0x212e8b[_0x4567('0x1c')],'include':_0x212e8b['include']?_[_0x4567('0x1e')](_0x212e8b[_0x4567('0x1d')],function(_0x14c79e){return{'model':db[_0x14c79e['model']],'as':_0x14c79e['as'],'attributes':_0x14c79e[_0x4567('0x1c')],'include':_0x14c79e[_0x4567('0x1d')]?_[_0x4567('0x1e')](_0x14c79e[_0x4567('0x1d')],function(_0x38f367){return{'model':db[_0x38f367[_0x4567('0x1f')]],'as':_0x38f367['as'],'attributes':_0x38f367[_0x4567('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x4567('0x20')](function(_0x39ad0c){logger[_0x4567('0xc')](_0x4567('0x22'),_0x1888ad);logger['debug'](_0x4567('0x22'),_0x1888ad,JSON[_0x4567('0xf')](_0x39ad0c));_0x403423(_0x39ad0c);})[_0x4567('0x15')](function(_0x340bba){logger[_0x4567('0x10')](_0x4567('0x22'),_0x340bba[_0x4567('0x13')],_0x1888ad);_0x3c3043(_0x22dbe7[_0x4567('0x10')](0x1f4,_0x340bba[_0x4567('0x13')]));});});};
\ No newline at end of file
+var _0x4d97=['rpc','../../config/environment','jayson/promise','client','request','Trigger,\x20%s,\x20%s','debug','Trigger,\x20%s,\x20%s,\x20%s','request\x20sent','error','message','info','result','findAll','options','raw','where','attributes','limit','include','map','model','then','GetTrigger','Trigger','find','catch','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x364e2b,_0x30b028){var _0x943fef=function(_0x3454a5){while(--_0x3454a5){_0x364e2b['push'](_0x364e2b['shift']());}};_0x943fef(++_0x30b028);}(_0x4d97,0xc5));var _0x74d9=function(_0x32d008,_0x5664b5){_0x32d008=_0x32d008-0x0;var _0x54d885=_0x4d97[_0x32d008];return _0x54d885;};'use strict';var _=require(_0x74d9('0x0'));var util=require(_0x74d9('0x1'));var moment=require('moment');var BPromise=require(_0x74d9('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x74d9('0x3'));var db=require(_0x74d9('0x4'))['db'];var utils=require(_0x74d9('0x5'));var logger=require(_0x74d9('0x6'))(_0x74d9('0x7'));var config=require(_0x74d9('0x8'));var jayson=require(_0x74d9('0x9'));var client=jayson[_0x74d9('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2ade2c,_0x53c945,_0x3e5465){return new BPromise(function(_0x5416e9,_0x301385){return client[_0x74d9('0xb')](_0x2ade2c,_0x3e5465)['then'](function(_0x487bfb){logger['info'](_0x74d9('0xc'),_0x53c945,'request\x20sent');logger[_0x74d9('0xd')](_0x74d9('0xe'),_0x53c945,_0x74d9('0xf'),JSON['stringify'](_0x487bfb));if(_0x487bfb['error']){if(_0x487bfb[_0x74d9('0x10')]['code']===0x1f4){logger['error'](_0x74d9('0xc'),_0x53c945,_0x487bfb[_0x74d9('0x10')][_0x74d9('0x11')]);return _0x301385(_0x487bfb[_0x74d9('0x10')][_0x74d9('0x11')]);}logger[_0x74d9('0x10')](_0x74d9('0xc'),_0x53c945,_0x487bfb[_0x74d9('0x10')][_0x74d9('0x11')]);return _0x5416e9(_0x487bfb[_0x74d9('0x10')][_0x74d9('0x11')]);}else{logger[_0x74d9('0x12')](_0x74d9('0xc'),_0x53c945,_0x74d9('0xf'));_0x5416e9(_0x487bfb[_0x74d9('0x13')]['message']);}})['catch'](function(_0x5568eb){logger[_0x74d9('0x10')]('Trigger,\x20%s,\x20%s',_0x53c945,_0x5568eb);_0x301385(_0x5568eb);});});}exports['GetTrigger']=function(_0x4138ae){var _0x53b823=this;return new Promise(function(_0x5f279a,_0x500de5){return db['Trigger'][_0x74d9('0x14')]({'raw':_0x4138ae[_0x74d9('0x15')]?_0x4138ae[_0x74d9('0x15')][_0x74d9('0x16')]===undefined?!![]:![]:!![],'where':_0x4138ae[_0x74d9('0x15')]?_0x4138ae[_0x74d9('0x15')][_0x74d9('0x17')]||null:null,'attributes':_0x4138ae[_0x74d9('0x15')]?_0x4138ae['options'][_0x74d9('0x18')]||null:null,'limit':_0x4138ae['options']?_0x4138ae[_0x74d9('0x15')][_0x74d9('0x19')]||null:null,'include':_0x4138ae[_0x74d9('0x15')]?_0x4138ae['options'][_0x74d9('0x1a')]?_[_0x74d9('0x1b')](_0x4138ae[_0x74d9('0x15')][_0x74d9('0x1a')],function(_0x259e6d){return{'model':db[_0x259e6d['model']],'as':_0x259e6d['as'],'attributes':_0x259e6d[_0x74d9('0x18')],'include':_0x259e6d[_0x74d9('0x1a')]?_[_0x74d9('0x1b')](_0x259e6d['include'],function(_0x53251b){return{'model':db[_0x53251b['model']],'as':_0x53251b['as'],'attributes':_0x53251b[_0x74d9('0x18')],'include':_0x53251b[_0x74d9('0x1a')]?_[_0x74d9('0x1b')](_0x53251b[_0x74d9('0x1a')],function(_0x53b1ca){return{'model':db[_0x53b1ca[_0x74d9('0x1c')]],'as':_0x53b1ca['as'],'attributes':_0x53b1ca[_0x74d9('0x18')]};}):[]};}):[]};}):[]:[]})[_0x74d9('0x1d')](function(_0x1659c8){logger[_0x74d9('0x12')]('GetTrigger',_0x4138ae);logger[_0x74d9('0xd')](_0x74d9('0x1e'),_0x4138ae,JSON['stringify'](_0x1659c8));_0x5f279a(_0x1659c8);})['catch'](function(_0x131d47){logger['error'](_0x74d9('0x1e'),_0x131d47[_0x74d9('0x11')],_0x4138ae);_0x500de5(_0x53b823[_0x74d9('0x10')](0x1f4,_0x131d47['message']));});});};exports['ShowTrigger']=function(_0x4f77f2){var _0x329fde=this;return new Promise(function(_0x18e21f,_0x203dcc){return db[_0x74d9('0x1f')][_0x74d9('0x20')]({'raw':_0x4f77f2[_0x74d9('0x15')]?_0x4f77f2[_0x74d9('0x15')][_0x74d9('0x16')]===undefined?!![]:![]:!![],'where':_0x4f77f2[_0x74d9('0x15')]?_0x4f77f2['options'][_0x74d9('0x17')]||null:null,'attributes':_0x4f77f2[_0x74d9('0x15')]?_0x4f77f2['options']['attributes']||null:null,'include':_0x4f77f2[_0x74d9('0x15')]?_0x4f77f2[_0x74d9('0x15')]['include']?_[_0x74d9('0x1b')](_0x4f77f2[_0x74d9('0x15')]['include'],function(_0x3dd53c){return{'model':db[_0x3dd53c['model']],'as':_0x3dd53c['as'],'attributes':_0x3dd53c[_0x74d9('0x18')],'include':_0x3dd53c[_0x74d9('0x1a')]?_[_0x74d9('0x1b')](_0x3dd53c[_0x74d9('0x1a')],function(_0x567982){return{'model':db[_0x567982[_0x74d9('0x1c')]],'as':_0x567982['as'],'attributes':_0x567982[_0x74d9('0x18')],'include':_0x567982['include']?_[_0x74d9('0x1b')](_0x567982[_0x74d9('0x1a')],function(_0x26cf12){return{'model':db[_0x26cf12[_0x74d9('0x1c')]],'as':_0x26cf12['as'],'attributes':_0x26cf12[_0x74d9('0x18')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x111906){logger[_0x74d9('0x12')]('ShowTrigger',_0x4f77f2);logger[_0x74d9('0xd')]('ShowTrigger',_0x4f77f2,JSON['stringify'](_0x111906));_0x18e21f(_0x111906);})[_0x74d9('0x21')](function(_0x40e677){logger[_0x74d9('0x10')]('ShowTrigger',_0x40e677['message'],_0x4f77f2);_0x203dcc(_0x329fde['error'](0x1f4,_0x40e677[_0x74d9('0x11')]));});});};
\ No newline at end of file
index ac9f5da..355e28d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0af4=['put','update','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../config/environment','./trunk.controller','get','isAuthenticated','index','/:id','show','post','clone','create'];(function(_0x9b98a,_0x227457){var _0x5ad951=function(_0xffb667){while(--_0xffb667){_0x9b98a['push'](_0x9b98a['shift']());}};_0x5ad951(++_0x227457);}(_0x0af4,0x1bd));var _0x40af=function(_0x2159bf,_0x46f972){_0x2159bf=_0x2159bf-0x0;var _0x2a988f=_0x0af4[_0x2159bf];return _0x2a988f;};'use strict';var multer=require(_0x40af('0x0'));var util=require(_0x40af('0x1'));var path=require(_0x40af('0x2'));var timeout=require(_0x40af('0x3'));var express=require(_0x40af('0x4'));var router=express[_0x40af('0x5')]();var fs_extra=require(_0x40af('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x40af('0x7'));var controller=require(_0x40af('0x8'));router[_0x40af('0x9')]('/',auth[_0x40af('0xa')](),controller[_0x40af('0xb')]);router[_0x40af('0x9')](_0x40af('0xc'),auth[_0x40af('0xa')](),controller[_0x40af('0xd')]);router[_0x40af('0xe')]('/:id/clone',auth['isAuthenticated'](),controller[_0x40af('0xf')]);router[_0x40af('0xe')]('/',auth['isAuthenticated'](),controller[_0x40af('0x10')]);router[_0x40af('0x11')](_0x40af('0xc'),auth['isAuthenticated'](),controller[_0x40af('0x12')]);router[_0x40af('0x13')](_0x40af('0xc'),auth[_0x40af('0xa')](),controller['destroy']);module[_0x40af('0x14')]=router;
\ No newline at end of file
+var _0xb20d=['../../components/auth/service','../../components/interaction/service','../../config/environment','./trunk.controller','isAuthenticated','index','get','show','post','/:id/clone','clone','create','/:id','update','delete','destroy','util','path','express','Router'];(function(_0x348b06,_0x1c4854){var _0x44079d=function(_0x1dc3a4){while(--_0x1dc3a4){_0x348b06['push'](_0x348b06['shift']());}};_0x44079d(++_0x1c4854);}(_0xb20d,0x74));var _0xdb20=function(_0x4c9278,_0x324a88){_0x4c9278=_0x4c9278-0x0;var _0x7844a9=_0xb20d[_0x4c9278];return _0x7844a9;};'use strict';var multer=require('multer');var util=require(_0xdb20('0x0'));var path=require(_0xdb20('0x1'));var timeout=require('connect-timeout');var express=require(_0xdb20('0x2'));var router=express[_0xdb20('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xdb20('0x4'));var interaction=require(_0xdb20('0x5'));var config=require(_0xdb20('0x6'));var controller=require(_0xdb20('0x7'));router['get']('/',auth[_0xdb20('0x8')](),controller[_0xdb20('0x9')]);router[_0xdb20('0xa')]('/:id',auth['isAuthenticated'](),controller[_0xdb20('0xb')]);router[_0xdb20('0xc')](_0xdb20('0xd'),auth[_0xdb20('0x8')](),controller[_0xdb20('0xe')]);router[_0xdb20('0xc')]('/',auth[_0xdb20('0x8')](),controller[_0xdb20('0xf')]);router['put'](_0xdb20('0x10'),auth[_0xdb20('0x8')](),controller[_0xdb20('0x11')]);router[_0xdb20('0x12')]('/:id',auth[_0xdb20('0x8')](),controller[_0xdb20('0x13')]);module['exports']=router;
\ No newline at end of file
index 2e38215..b07cbca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x83b9=['PROHIB_NOT_SCREENED','PROHIB_FAILED_SCREEN','udp','transport','join','getDataValue','split','info','shortinfo','auto','rfc2833','update','outgoing','yes','force_rport,comedia','setDataValue','nat','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','all','allow','ulaw;alaw;gsm','port,invite','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','never','\x22\x22\x20<>','INTEGER','always','accept','refuse','uac','uas','pai','fingerprint','certificate','passive','actpass','nonat','update,nonat','BOOLEAN','sequelize','name','ENUM','friend','user','peer','STRING','ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','ALLOWED'];(function(_0x4f55de,_0x1b0add){var _0x29e05f=function(_0x5b0536){while(--_0x5b0536){_0x4f55de['push'](_0x4f55de['shift']());}};_0x29e05f(++_0x1b0add);}(_0x83b9,0x8e));var _0x983b=function(_0x22f4e1,_0x18c57c){_0x22f4e1=_0x22f4e1-0x0;var _0x49498f=_0x83b9[_0x22f4e1];return _0x49498f;};'use strict';var Sequelize=require(_0x983b('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x983b('0x1'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0x983b('0x2')](_0x983b('0x3'),_0x983b('0x4'),_0x983b('0x5')),'allowNull':![],'defaultValue':_0x983b('0x3')},'context':{'type':Sequelize[_0x983b('0x6')],'allowNull':![],'defaultValue':'from-voip-provider'},'callingpres':{'type':Sequelize[_0x983b('0x2')](_0x983b('0x7'),_0x983b('0x8'),_0x983b('0x9'),_0x983b('0xa'),_0x983b('0xb'),'PROHIB_PASSED_SCREEN',_0x983b('0xc'),'PROHIB')},'deny':{'type':Sequelize[_0x983b('0x6')]},'permit':{'type':Sequelize[_0x983b('0x6')]},'secret':{'type':Sequelize[_0x983b('0x6')]},'md5secret':{'type':Sequelize[_0x983b('0x6')]},'remotesecret':{'type':Sequelize['STRING']},'transport':{'type':Sequelize[_0x983b('0x6')],'defaultValue':_0x983b('0xd'),'set':function(_0x4d84c7){this['setDataValue'](_0x983b('0xe'),_0x4d84c7?_0x4d84c7[_0x983b('0xf')](','):null);},'get':function(){return this[_0x983b('0x10')]('transport')?this[_0x983b('0x10')](_0x983b('0xe'))[_0x983b('0x11')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]'},'dtmfmode':{'type':Sequelize[_0x983b('0x2')]('rfc2833',_0x983b('0x12'),_0x983b('0x13'),'inband',_0x983b('0x14')),'defaultValue':_0x983b('0x15')},'directmedia':{'type':Sequelize[_0x983b('0x2')]('yes','no','nonat',_0x983b('0x16'),_0x983b('0x17')),'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0x983b('0x2')](_0x983b('0x18'),'no'),'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0x983b('0x6')]},'directmediadeny':{'type':Sequelize[_0x983b('0x6')]},'nat':{'type':Sequelize[_0x983b('0x6')],'defaultValue':_0x983b('0x19'),'set':function(_0x451524){this[_0x983b('0x1a')]('nat',_0x451524?_0x451524[_0x983b('0xf')](','):null);},'get':function(){return this[_0x983b('0x10')](_0x983b('0x1b'))?this['getDataValue'](_0x983b('0x1b'))[_0x983b('0x11')](','):null;},'comment':_0x983b('0x1c')},'callgroup':{'type':Sequelize[_0x983b('0x6')]},'namedcallgroup':{'type':Sequelize['STRING']},'pickupgroup':{'type':Sequelize[_0x983b('0x6')]},'namedpickupgroup':{'type':Sequelize[_0x983b('0x6')]},'language':{'type':Sequelize[_0x983b('0x6')],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0x983b('0x6')],'allowNull':!![]},'disallow':{'type':Sequelize[_0x983b('0x6')],'defaultValue':_0x983b('0x1d')},'allow':{'type':Sequelize[_0x983b('0x6')],'allowNull':![],'defaultValue':'ulaw;alaw;gsm','set':function(_0x1ff6fb){this['setDataValue'](_0x983b('0x1e'),_0x1ff6fb?_0x1ff6fb[_0x983b('0xf')](';'):_0x983b('0x1f'));},'get':function(){return this['getDataValue'](_0x983b('0x1e'))?this[_0x983b('0x10')](_0x983b('0x1e'))[_0x983b('0x11')](';'):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22alaw\x22]'},'autoframing':{'type':Sequelize[_0x983b('0x2')](_0x983b('0x18'),'no')},'insecure':{'type':Sequelize[_0x983b('0x6')],'defaultValue':_0x983b('0x20'),'set':function(_0x9f4a5){this['setDataValue']('insecure',_0x9f4a5?_0x9f4a5[_0x983b('0xf')](','):null);},'get':function(){return this[_0x983b('0x10')](_0x983b('0x21'))?this[_0x983b('0x10')]('insecure')['split'](','):null;},'comment':_0x983b('0x22')},'trustrpid':{'type':Sequelize[_0x983b('0x2')](_0x983b('0x18'),'no'),'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0x983b('0x2')]('yes','no'),'defaultValue':'no'},'progressinband':{'type':Sequelize[_0x983b('0x2')](_0x983b('0x18'),'no',_0x983b('0x23'))},'promiscredir':{'type':Sequelize['ENUM'](_0x983b('0x18'),'no')},'useclientcode':{'type':Sequelize['ENUM'](_0x983b('0x18'),'no')},'accountcode':{'type':Sequelize['INTEGER'](0xb)},'setvar':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize[_0x983b('0x6')],'defaultValue':_0x983b('0x24')},'amaflags':{'type':Sequelize[_0x983b('0x6')]},'callcounter':{'type':Sequelize[_0x983b('0x2')]('yes','no'),'defaultValue':_0x983b('0x18')},'busylevel':{'type':Sequelize[_0x983b('0x25')](0xb)},'allowoverlap':{'type':Sequelize['ENUM']('yes','no')},'allowsubscribe':{'type':Sequelize['ENUM'](_0x983b('0x18'),'no')},'allowtransfer':{'type':Sequelize[_0x983b('0x2')](_0x983b('0x18'),'no')},'ignoresdpversion':{'type':Sequelize[_0x983b('0x2')](_0x983b('0x18'),'no')},'subscribecontext':{'type':Sequelize[_0x983b('0x6')]},'template':{'type':Sequelize[_0x983b('0x6')]},'videosupport':{'type':Sequelize[_0x983b('0x2')]('yes','no',_0x983b('0x26')),'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0x983b('0x25')](0xb)},'rfc2833compensate':{'type':Sequelize['ENUM'](_0x983b('0x18'),'no')},'mailbox':{'type':Sequelize['STRING']},'session_timers':{'type':Sequelize[_0x983b('0x2')](_0x983b('0x27'),_0x983b('0x28'),'originate')},'session_expires':{'type':Sequelize['INTEGER'](0xb)},'session_minse':{'type':Sequelize[_0x983b('0x25')](0xb)},'session_refresher':{'type':Sequelize[_0x983b('0x2')](_0x983b('0x29'),'uas'),'defaultValue':_0x983b('0x2a')},'t38pt_usertpsource':{'type':Sequelize[_0x983b('0x6')]},'regexten':{'type':Sequelize[_0x983b('0x6')]},'fromdomain':{'type':Sequelize[_0x983b('0x6')]},'fromuser':{'type':Sequelize['STRING']},'port':{'type':Sequelize[_0x983b('0x25')](0x5)},'qualify':{'type':Sequelize[_0x983b('0x2')](_0x983b('0x18'),'no'),'defaultValue':_0x983b('0x18')},'keepalive':{'type':Sequelize[_0x983b('0x25')](0xb)},'defaultip':{'type':Sequelize[_0x983b('0x6')]},'defaultuser':{'type':Sequelize[_0x983b('0x6')]},'rtptimeout':{'type':Sequelize[_0x983b('0x25')](0xb)},'rtpholdtimeout':{'type':Sequelize[_0x983b('0x25')](0xb)},'rtpkeepalive':{'type':Sequelize[_0x983b('0x25')](0xb)},'sendrpid':{'type':Sequelize['ENUM']('yes','no',_0x983b('0x2b')),'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0x983b('0x6')]},'callbackextension':{'type':Sequelize['STRING']},'timert1':{'type':Sequelize[_0x983b('0x25')](0xb)},'timerb':{'type':Sequelize[_0x983b('0x25')](0xb)},'qualifyfreq':{'type':Sequelize[_0x983b('0x25')](0xb)},'contactpermit':{'type':Sequelize[_0x983b('0x6')]},'contactdeny':{'type':Sequelize['STRING']},'contactacl':{'type':Sequelize['STRING']},'unsolicited_mailbox':{'type':Sequelize[_0x983b('0x6')]},'use_q850_reason':{'type':Sequelize['STRING']},'maxforwards':{'type':Sequelize[_0x983b('0x25')](0xb)},'encryption':{'type':Sequelize[_0x983b('0x2')]('yes','no'),'defaultValue':'no'},'avpf':{'type':Sequelize['ENUM']('yes','no')},'force_avp':{'type':Sequelize['ENUM'](_0x983b('0x18'),'no')},'icesupport':{'type':Sequelize[_0x983b('0x2')](_0x983b('0x18'),'no')},'dtlsenable':{'type':Sequelize[_0x983b('0x2')](_0x983b('0x18'),'no')},'dtlsverify':{'type':Sequelize[_0x983b('0x2')]('yes','no',_0x983b('0x2c'),_0x983b('0x2d'))},'dtlsrekey':{'type':Sequelize['INTEGER'](0xb)},'dtlscertfile':{'type':Sequelize[_0x983b('0x6')]},'dtlsprivatekey':{'type':Sequelize['STRING']},'dtlscipher':{'type':Sequelize['STRING']},'dtlscafile':{'type':Sequelize[_0x983b('0x6')]},'dtlscapath':{'type':Sequelize[_0x983b('0x6')]},'dtlssetup':{'type':Sequelize[_0x983b('0x2')]('active',_0x983b('0x2e'),_0x983b('0x2f')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0x983b('0x6')]},'usereqphone':{'type':Sequelize[_0x983b('0x2')](_0x983b('0x18'),'no'),'defaultValue':'no'},'recordonfeature':{'type':Sequelize['STRING']},'recordofffeature':{'type':Sequelize[_0x983b('0x6')]},'call_limit':{'type':Sequelize[_0x983b('0x25')](0xb),'defaultValue':0x3e8},'registertrying':{'type':Sequelize[_0x983b('0x2')](_0x983b('0x18'),'no')},'subscribemwi':{'type':Sequelize[_0x983b('0x2')](_0x983b('0x18'),'no')},'vmexten':{'type':Sequelize[_0x983b('0x6')]},'mohinterpret':{'type':Sequelize[_0x983b('0x6')]},'mohsuggest':{'type':Sequelize[_0x983b('0x6')]},'parkinglot':{'type':Sequelize[_0x983b('0x6')]},'description':{'type':Sequelize[_0x983b('0x6')]},'host':{'type':Sequelize[_0x983b('0x6')],'defaultValue':'dynamic'},'canreinvite':{'type':Sequelize[_0x983b('0x2')](_0x983b('0x18'),'no',_0x983b('0x30'),_0x983b('0x16'),_0x983b('0x31')),'defaultValue':'no'},'registry':{'type':Sequelize[_0x983b('0x6')]},'otherFields':{'type':Sequelize[_0x983b('0x6')]},'active':{'type':Sequelize[_0x983b('0x32')],'allowNull':![],'defaultValue':!![]},'t38pt_udptl':{'type':Sequelize[_0x983b('0x6')],'defaultValue':'no'}};
\ No newline at end of file
+var _0xcbc6=['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','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22alaw\x22]','yes','port,invite','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','never','INTEGER','\x22\x22\x20<>','always','accept','refuse','originate','uas','pai','fingerprint','active','actpass','dynamic','BOOLEAN','sequelize','exports','STRING','name','ENUM','user','peer','friend','from-voip-provider','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_FAILED_SCREEN','udp','setDataValue','transport','join','getDataValue','split','rfc2833','shortinfo','inband','auto','nonat'];(function(_0xb51308,_0x53f8af){var _0x1a38e9=function(_0x160736){while(--_0x160736){_0xb51308['push'](_0xb51308['shift']());}};_0x1a38e9(++_0x53f8af);}(_0xcbc6,0x180));var _0x6cbc=function(_0x2908f3,_0x4aff2f){_0x2908f3=_0x2908f3-0x0;var _0x479672=_0xcbc6[_0x2908f3];return _0x479672;};'use strict';var Sequelize=require(_0x6cbc('0x0'));module[_0x6cbc('0x1')]={'name':{'type':Sequelize[_0x6cbc('0x2')],'allowNull':![],'unique':_0x6cbc('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0x6cbc('0x4')]('friend',_0x6cbc('0x5'),_0x6cbc('0x6')),'allowNull':![],'defaultValue':_0x6cbc('0x7')},'context':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x6cbc('0x8')},'callingpres':{'type':Sequelize[_0x6cbc('0x4')]('ALLOWED_NOT_SCREENED',_0x6cbc('0x9'),_0x6cbc('0xa'),_0x6cbc('0xb'),'PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN',_0x6cbc('0xc'),'PROHIB')},'deny':{'type':Sequelize[_0x6cbc('0x2')]},'permit':{'type':Sequelize[_0x6cbc('0x2')]},'secret':{'type':Sequelize[_0x6cbc('0x2')]},'md5secret':{'type':Sequelize['STRING']},'remotesecret':{'type':Sequelize[_0x6cbc('0x2')]},'transport':{'type':Sequelize[_0x6cbc('0x2')],'defaultValue':_0x6cbc('0xd'),'set':function(_0xb4e7f1){this[_0x6cbc('0xe')](_0x6cbc('0xf'),_0xb4e7f1?_0xb4e7f1[_0x6cbc('0x10')](','):null);},'get':function(){return this[_0x6cbc('0x11')](_0x6cbc('0xf'))?this[_0x6cbc('0x11')](_0x6cbc('0xf'))[_0x6cbc('0x12')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]'},'dtmfmode':{'type':Sequelize[_0x6cbc('0x4')](_0x6cbc('0x13'),'info',_0x6cbc('0x14'),_0x6cbc('0x15'),_0x6cbc('0x16')),'defaultValue':_0x6cbc('0x13')},'directmedia':{'type':Sequelize[_0x6cbc('0x4')]('yes','no',_0x6cbc('0x17'),_0x6cbc('0x18'),_0x6cbc('0x19')),'defaultValue':'no'},'directrtpsetup':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no'},'directmediapermit':{'type':Sequelize['STRING']},'directmediadeny':{'type':Sequelize[_0x6cbc('0x2')]},'nat':{'type':Sequelize[_0x6cbc('0x2')],'defaultValue':_0x6cbc('0x1a'),'set':function(_0x3c5da2){this['setDataValue']('nat',_0x3c5da2?_0x3c5da2[_0x6cbc('0x10')](','):null);},'get':function(){return this['getDataValue']('nat')?this[_0x6cbc('0x11')](_0x6cbc('0x1b'))[_0x6cbc('0x12')](','):null;},'comment':_0x6cbc('0x1c')},'callgroup':{'type':Sequelize[_0x6cbc('0x2')]},'namedcallgroup':{'type':Sequelize[_0x6cbc('0x2')]},'pickupgroup':{'type':Sequelize[_0x6cbc('0x2')]},'namedpickupgroup':{'type':Sequelize[_0x6cbc('0x2')]},'language':{'type':Sequelize[_0x6cbc('0x2')],'defaultValue':'en'},'tonezone':{'type':Sequelize['STRING'],'allowNull':!![]},'disallow':{'type':Sequelize['STRING'],'defaultValue':_0x6cbc('0x1d')},'allow':{'type':Sequelize[_0x6cbc('0x2')],'allowNull':![],'defaultValue':_0x6cbc('0x1e'),'set':function(_0x4e308d){this[_0x6cbc('0xe')](_0x6cbc('0x1f'),_0x4e308d?_0x4e308d['join'](';'):_0x6cbc('0x1e'));},'get':function(){return this[_0x6cbc('0x11')](_0x6cbc('0x1f'))?this[_0x6cbc('0x11')]('allow')[_0x6cbc('0x12')](';'):null;},'comment':_0x6cbc('0x20')},'autoframing':{'type':Sequelize[_0x6cbc('0x4')](_0x6cbc('0x21'),'no')},'insecure':{'type':Sequelize[_0x6cbc('0x2')],'defaultValue':_0x6cbc('0x22'),'set':function(_0x10b3ed){this[_0x6cbc('0xe')](_0x6cbc('0x23'),_0x10b3ed?_0x10b3ed['join'](','):null);},'get':function(){return this['getDataValue'](_0x6cbc('0x23'))?this[_0x6cbc('0x11')]('insecure')[_0x6cbc('0x12')](','):null;},'comment':_0x6cbc('0x24')},'trustrpid':{'type':Sequelize[_0x6cbc('0x4')](_0x6cbc('0x21'),'no'),'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0x6cbc('0x4')](_0x6cbc('0x21'),'no'),'defaultValue':'no'},'progressinband':{'type':Sequelize[_0x6cbc('0x4')]('yes','no',_0x6cbc('0x25'))},'promiscredir':{'type':Sequelize[_0x6cbc('0x4')](_0x6cbc('0x21'),'no')},'useclientcode':{'type':Sequelize[_0x6cbc('0x4')](_0x6cbc('0x21'),'no')},'accountcode':{'type':Sequelize[_0x6cbc('0x26')](0xb)},'setvar':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize[_0x6cbc('0x2')],'defaultValue':_0x6cbc('0x27')},'amaflags':{'type':Sequelize[_0x6cbc('0x2')]},'callcounter':{'type':Sequelize[_0x6cbc('0x4')](_0x6cbc('0x21'),'no'),'defaultValue':_0x6cbc('0x21')},'busylevel':{'type':Sequelize[_0x6cbc('0x26')](0xb)},'allowoverlap':{'type':Sequelize[_0x6cbc('0x4')](_0x6cbc('0x21'),'no')},'allowsubscribe':{'type':Sequelize['ENUM'](_0x6cbc('0x21'),'no')},'allowtransfer':{'type':Sequelize[_0x6cbc('0x4')](_0x6cbc('0x21'),'no')},'ignoresdpversion':{'type':Sequelize[_0x6cbc('0x4')](_0x6cbc('0x21'),'no')},'subscribecontext':{'type':Sequelize[_0x6cbc('0x2')]},'template':{'type':Sequelize[_0x6cbc('0x2')]},'videosupport':{'type':Sequelize[_0x6cbc('0x4')]('yes','no',_0x6cbc('0x28')),'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize['INTEGER'](0xb)},'rfc2833compensate':{'type':Sequelize[_0x6cbc('0x4')]('yes','no')},'mailbox':{'type':Sequelize[_0x6cbc('0x2')]},'session_timers':{'type':Sequelize[_0x6cbc('0x4')](_0x6cbc('0x29'),_0x6cbc('0x2a'),_0x6cbc('0x2b'))},'session_expires':{'type':Sequelize[_0x6cbc('0x26')](0xb)},'session_minse':{'type':Sequelize[_0x6cbc('0x26')](0xb)},'session_refresher':{'type':Sequelize['ENUM']('uac',_0x6cbc('0x2c')),'defaultValue':'uas'},'t38pt_usertpsource':{'type':Sequelize[_0x6cbc('0x2')]},'regexten':{'type':Sequelize[_0x6cbc('0x2')]},'fromdomain':{'type':Sequelize['STRING']},'fromuser':{'type':Sequelize[_0x6cbc('0x2')]},'port':{'type':Sequelize[_0x6cbc('0x26')](0x5)},'qualify':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':_0x6cbc('0x21')},'keepalive':{'type':Sequelize['INTEGER'](0xb)},'defaultip':{'type':Sequelize[_0x6cbc('0x2')]},'defaultuser':{'type':Sequelize['STRING']},'rtptimeout':{'type':Sequelize['INTEGER'](0xb)},'rtpholdtimeout':{'type':Sequelize[_0x6cbc('0x26')](0xb)},'rtpkeepalive':{'type':Sequelize[_0x6cbc('0x26')](0xb)},'sendrpid':{'type':Sequelize[_0x6cbc('0x4')](_0x6cbc('0x21'),'no',_0x6cbc('0x2d')),'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0x6cbc('0x2')]},'callbackextension':{'type':Sequelize['STRING']},'timert1':{'type':Sequelize['INTEGER'](0xb)},'timerb':{'type':Sequelize['INTEGER'](0xb)},'qualifyfreq':{'type':Sequelize[_0x6cbc('0x26')](0xb)},'contactpermit':{'type':Sequelize['STRING']},'contactdeny':{'type':Sequelize[_0x6cbc('0x2')]},'contactacl':{'type':Sequelize[_0x6cbc('0x2')]},'unsolicited_mailbox':{'type':Sequelize[_0x6cbc('0x2')]},'use_q850_reason':{'type':Sequelize[_0x6cbc('0x2')]},'maxforwards':{'type':Sequelize[_0x6cbc('0x26')](0xb)},'encryption':{'type':Sequelize[_0x6cbc('0x4')]('yes','no'),'defaultValue':'no'},'avpf':{'type':Sequelize['ENUM'](_0x6cbc('0x21'),'no')},'force_avp':{'type':Sequelize['ENUM'](_0x6cbc('0x21'),'no')},'icesupport':{'type':Sequelize[_0x6cbc('0x4')](_0x6cbc('0x21'),'no')},'dtlsenable':{'type':Sequelize['ENUM'](_0x6cbc('0x21'),'no')},'dtlsverify':{'type':Sequelize[_0x6cbc('0x4')](_0x6cbc('0x21'),'no',_0x6cbc('0x2e'),'certificate')},'dtlsrekey':{'type':Sequelize['INTEGER'](0xb)},'dtlscertfile':{'type':Sequelize['STRING']},'dtlsprivatekey':{'type':Sequelize[_0x6cbc('0x2')]},'dtlscipher':{'type':Sequelize[_0x6cbc('0x2')]},'dtlscafile':{'type':Sequelize[_0x6cbc('0x2')]},'dtlscapath':{'type':Sequelize[_0x6cbc('0x2')]},'dtlssetup':{'type':Sequelize[_0x6cbc('0x4')](_0x6cbc('0x2f'),'passive',_0x6cbc('0x30')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0x6cbc('0x2')]},'usereqphone':{'type':Sequelize[_0x6cbc('0x4')](_0x6cbc('0x21'),'no'),'defaultValue':'no'},'recordonfeature':{'type':Sequelize['STRING']},'recordofffeature':{'type':Sequelize[_0x6cbc('0x2')]},'call_limit':{'type':Sequelize[_0x6cbc('0x26')](0xb),'defaultValue':0x3e8},'registertrying':{'type':Sequelize[_0x6cbc('0x4')](_0x6cbc('0x21'),'no')},'subscribemwi':{'type':Sequelize[_0x6cbc('0x4')]('yes','no')},'vmexten':{'type':Sequelize['STRING']},'mohinterpret':{'type':Sequelize[_0x6cbc('0x2')]},'mohsuggest':{'type':Sequelize[_0x6cbc('0x2')]},'parkinglot':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x6cbc('0x2')]},'host':{'type':Sequelize[_0x6cbc('0x2')],'defaultValue':_0x6cbc('0x31')},'canreinvite':{'type':Sequelize[_0x6cbc('0x4')](_0x6cbc('0x21'),'no',_0x6cbc('0x17'),'update','update,nonat'),'defaultValue':'no'},'registry':{'type':Sequelize[_0x6cbc('0x2')]},'otherFields':{'type':Sequelize[_0x6cbc('0x2')]},'active':{'type':Sequelize[_0x6cbc('0x32')],'allowNull':![],'defaultValue':!![]},'t38pt_udptl':{'type':Sequelize[_0x6cbc('0x2')],'defaultValue':'no'}};
\ No newline at end of file
index 414fc55..7c7e6f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e74=['map','Trunk','rawAttributes','fieldName','key','model','keys','query','filters','intersection','fields','attributes','length','nolimit','order','sort','pick','where','type','filter','merge','options','includeAll','include','findAll','params','clone','find','get','omit','createdAt','body','updatedAt','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','join','root','server/files/templates/trunk.ejs','utf8','readFileSync','server/files/templates/registry.ejs','render','/etc/asterisk/sip_xcally_trunks.conf','registry','/etc/asterisk/sip_xcally_registers.conf','Reload','chan_sip.so','writeFileSync','eml-format','zip-dir','fast-json-patch','request-promise','mustache','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','jayson/promise','client','http','request','then','info','debug','Trunk,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','Trunk,\x20%s,\x20%s','message','result','catch','sendStatus','status','json','undefined','count','offset','limit','set','Content-Range','apply','reject','update','destroy','Trunks','UserProfileResource','stack','name','send','index'];(function(_0x838d06,_0x3196d2){var _0x1ea929=function(_0x4fab3f){while(--_0x4fab3f){_0x838d06['push'](_0x838d06['shift']());}};_0x1ea929(++_0x3196d2);}(_0x3e74,0x175));var _0x43e7=function(_0x36d82e,_0x50fa81){_0x36d82e=_0x36d82e-0x0;var _0xbbceca=_0x3e74[_0x36d82e];return _0xbbceca;};'use strict';var emlformat=require(_0x43e7('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x43e7('0x1'));var jsonpatch=require(_0x43e7('0x2'));var rp=require(_0x43e7('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x43e7('0x4'));var util=require('util');var path=require(_0x43e7('0x5'));var sox=require(_0x43e7('0x6'));var csv=require(_0x43e7('0x7'));var ejs=require(_0x43e7('0x8'));var fs=require('fs');var fs_extra=require(_0x43e7('0x9'));var _=require('lodash');var squel=require(_0x43e7('0xa'));var crypto=require(_0x43e7('0xb'));var jsforce=require(_0x43e7('0xc'));var deskjs=require(_0x43e7('0xd'));var toCsv=require(_0x43e7('0x7'));var querystring=require('querystring');var Papa=require(_0x43e7('0xe'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x43e7('0xf'));var as=require(_0x43e7('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x43e7('0x11'))('api');var utils=require(_0x43e7('0x12'));var config=require(_0x43e7('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x43e7('0x14'))['db'];var jayson=require(_0x43e7('0x15'));var client=jayson[_0x43e7('0x16')][_0x43e7('0x17')]({'port':0x232a});function respondWithRpcPromise(_0x4e008c,_0x583d85,_0x2fcb36,_0x21fdd3){return new BPromise(function(_0x44b0bd,_0x51b974){var _0x5e641c=_0x21fdd3||client;return _0x5e641c[_0x43e7('0x18')](_0x4e008c,_0x2fcb36)[_0x43e7('0x19')](function(_0x203378){logger[_0x43e7('0x1a')]('Trunk,\x20%s,\x20%s',_0x583d85,'request\x20sent');logger[_0x43e7('0x1b')](_0x43e7('0x1c'),_0x583d85,_0x43e7('0x1d'),JSON['stringify'](_0x203378));if(_0x203378['error']){if(_0x203378[_0x43e7('0x1e')][_0x43e7('0x1f')]===0x1f4){logger[_0x43e7('0x1e')](_0x43e7('0x20'),_0x583d85,_0x203378[_0x43e7('0x1e')][_0x43e7('0x21')]);return _0x51b974(_0x203378[_0x43e7('0x1e')][_0x43e7('0x21')]);}logger[_0x43e7('0x1e')](_0x43e7('0x20'),_0x583d85,_0x203378[_0x43e7('0x1e')][_0x43e7('0x21')]);return _0x44b0bd(_0x203378['error'][_0x43e7('0x21')]);}else{logger[_0x43e7('0x1a')]('Trunk,\x20%s,\x20%s',_0x583d85,_0x43e7('0x1d'));_0x44b0bd(_0x203378[_0x43e7('0x22')][_0x43e7('0x21')]);}})[_0x43e7('0x23')](function(_0x4077fb){logger[_0x43e7('0x1e')]('Trunk,\x20%s,\x20%s',_0x583d85,_0x4077fb);_0x51b974(_0x4077fb);});});}function respondWithStatusCode(_0x454359,_0x4eea52){_0x4eea52=_0x4eea52||0xcc;return function(_0x4c9df3){if(_0x4c9df3){return _0x454359[_0x43e7('0x24')](_0x4eea52);}return _0x454359[_0x43e7('0x25')](_0x4eea52)['end']();};}function respondWithResult(_0x1f0673,_0x4ca5cf){_0x4ca5cf=_0x4ca5cf||0xc8;return function(_0x326dab){if(_0x326dab){return _0x1f0673['status'](_0x4ca5cf)[_0x43e7('0x26')](_0x326dab);}};}function respondWithFilteredResult(_0x1b5f50,_0x20888b){return function(_0x405f85){if(_0x405f85){var _0x51f4d7=typeof _0x20888b['offset']===_0x43e7('0x27')&&typeof _0x20888b['limit']===_0x43e7('0x27');var _0x40dc8f=_0x405f85[_0x43e7('0x28')];var _0xb1fc63=_0x51f4d7?0x0:_0x20888b['offset'];var _0x33a1a5=_0x51f4d7?_0x405f85[_0x43e7('0x28')]:_0x20888b[_0x43e7('0x29')]+_0x20888b[_0x43e7('0x2a')];var _0x442c3b;if(_0x33a1a5>=_0x40dc8f){_0x33a1a5=_0x40dc8f;_0x442c3b=0xc8;}else{_0x442c3b=0xce;}_0x1b5f50[_0x43e7('0x25')](_0x442c3b);return _0x1b5f50[_0x43e7('0x2b')](_0x43e7('0x2c'),_0xb1fc63+'-'+_0x33a1a5+'/'+_0x40dc8f)[_0x43e7('0x26')](_0x405f85);}return null;};}function patchUpdates(_0x35dbcd){return function(_0x17df44){try{jsonpatch[_0x43e7('0x2d')](_0x17df44,_0x35dbcd,!![]);}catch(_0x2bde44){return BPromise[_0x43e7('0x2e')](_0x2bde44);}return _0x17df44['save']();};}function saveUpdates(_0x238321,_0x44f6b0){return function(_0x3b8f78){if(_0x3b8f78){return _0x3b8f78[_0x43e7('0x2f')](_0x238321)[_0x43e7('0x19')](function(_0x4c8650){return _0x4c8650;});}return null;};}function removeEntity(_0x1eba65,_0x49b83d){return function(_0x30d47e){if(_0x30d47e){return _0x30d47e[_0x43e7('0x30')]()['then'](function(){var _0x5a7342=_0x30d47e['get']({'plain':!![]});var _0xf8320=_0x43e7('0x31');return db[_0x43e7('0x32')][_0x43e7('0x30')]({'where':{'type':_0xf8320,'resourceId':_0x5a7342['id']}})[_0x43e7('0x19')](function(){return _0x30d47e;});})[_0x43e7('0x19')](function(){_0x1eba65['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x4ac23d,_0x59e5b2){return function(_0x4e8e86){if(!_0x4e8e86){_0x4ac23d['sendStatus'](0x194);}return _0x4e8e86;};}function handleError(_0x5cb753,_0x14d888){_0x14d888=_0x14d888||0x1f4;return function(_0x49cda6){logger[_0x43e7('0x1e')](_0x49cda6[_0x43e7('0x33')]);if(_0x49cda6[_0x43e7('0x34')]){delete _0x49cda6[_0x43e7('0x34')];}_0x5cb753[_0x43e7('0x25')](_0x14d888)[_0x43e7('0x35')](_0x49cda6);};}exports[_0x43e7('0x36')]=function(_0x4f1a5f,_0x5332d9){var _0x5d84f4={},_0xfa0474={},_0xfe70e9={'count':0x0,'rows':[]};var _0x199ff6=_[_0x43e7('0x37')](db[_0x43e7('0x38')][_0x43e7('0x39')],function(_0x1d4589){return{'name':_0x1d4589[_0x43e7('0x3a')],'type':_0x1d4589['type'][_0x43e7('0x3b')]};});_0xfa0474[_0x43e7('0x3c')]=_['map'](_0x199ff6,_0x43e7('0x34'));_0xfa0474['query']=_[_0x43e7('0x3d')](_0x4f1a5f[_0x43e7('0x3e')]);_0xfa0474[_0x43e7('0x3f')]=_[_0x43e7('0x40')](_0xfa0474[_0x43e7('0x3c')],_0xfa0474[_0x43e7('0x3e')]);_0x5d84f4['attributes']=_['intersection'](_0xfa0474[_0x43e7('0x3c')],qs[_0x43e7('0x41')](_0x4f1a5f[_0x43e7('0x3e')][_0x43e7('0x41')]));_0x5d84f4[_0x43e7('0x42')]=_0x5d84f4['attributes'][_0x43e7('0x43')]?_0x5d84f4[_0x43e7('0x42')]:_0xfa0474['model'];if(!_0x4f1a5f[_0x43e7('0x3e')]['hasOwnProperty'](_0x43e7('0x44'))){_0x5d84f4['limit']=qs[_0x43e7('0x2a')](_0x4f1a5f[_0x43e7('0x3e')][_0x43e7('0x2a')]);_0x5d84f4[_0x43e7('0x29')]=qs['offset'](_0x4f1a5f['query'][_0x43e7('0x29')]);}_0x5d84f4[_0x43e7('0x45')]=qs[_0x43e7('0x46')](_0x4f1a5f[_0x43e7('0x3e')]['sort']);_0x5d84f4['where']=qs['filters'](_[_0x43e7('0x47')](_0x4f1a5f['query'],_0xfa0474[_0x43e7('0x3f')]),_0x199ff6);if(_0x4f1a5f['query']['filter']){_0x5d84f4[_0x43e7('0x48')]=_['merge'](_0x5d84f4[_0x43e7('0x48')],{'$or':_[_0x43e7('0x37')](_0x199ff6,function(_0x257bd8){if(_0x257bd8[_0x43e7('0x49')]!=='VIRTUAL'){var _0x91f1e4={};_0x91f1e4[_0x257bd8[_0x43e7('0x34')]]={'$like':'%'+_0x4f1a5f[_0x43e7('0x3e')][_0x43e7('0x4a')]+'%'};return _0x91f1e4;}})});}_0x5d84f4=_[_0x43e7('0x4b')]({},_0x5d84f4,_0x4f1a5f[_0x43e7('0x4c')]);var _0x51eef4={'where':_0x5d84f4['where']};return db[_0x43e7('0x38')][_0x43e7('0x28')](_0x51eef4)[_0x43e7('0x19')](function(_0x4c00a8){_0xfe70e9['count']=_0x4c00a8;if(_0x4f1a5f['query'][_0x43e7('0x4d')]){_0x5d84f4[_0x43e7('0x4e')]=[{'all':!![]}];}return db['Trunk'][_0x43e7('0x4f')](_0x5d84f4);})[_0x43e7('0x19')](function(_0x3c96fe){_0xfe70e9['rows']=_0x3c96fe;return _0xfe70e9;})['then'](respondWithFilteredResult(_0x5332d9,_0x5d84f4))['catch'](handleError(_0x5332d9,null));};exports['show']=function(_0x214e7e,_0xe955fc){var _0x52fea5={'raw':![],'where':{'id':_0x214e7e[_0x43e7('0x50')]['id']}},_0x23e7cb={};_0x23e7cb[_0x43e7('0x3c')]=_[_0x43e7('0x3d')](db['Trunk'][_0x43e7('0x39')]);_0x23e7cb['query']=_['keys'](_0x214e7e[_0x43e7('0x3e')]);_0x23e7cb[_0x43e7('0x3f')]=_[_0x43e7('0x40')](_0x23e7cb[_0x43e7('0x3c')],_0x23e7cb[_0x43e7('0x3e')]);_0x52fea5[_0x43e7('0x42')]=_[_0x43e7('0x40')](_0x23e7cb[_0x43e7('0x3c')],qs[_0x43e7('0x41')](_0x214e7e[_0x43e7('0x3e')]['fields']));_0x52fea5[_0x43e7('0x42')]=_0x52fea5[_0x43e7('0x42')]['length']?_0x52fea5[_0x43e7('0x42')]:_0x23e7cb['model'];if(_0x214e7e[_0x43e7('0x3e')][_0x43e7('0x4d')]){_0x52fea5[_0x43e7('0x4e')]=[{'all':!![]}];}_0x52fea5=_[_0x43e7('0x4b')]({},_0x52fea5,_0x214e7e[_0x43e7('0x4c')]);return db['Trunk']['find'](_0x52fea5)[_0x43e7('0x19')](handleEntityNotFound(_0xe955fc,null))[_0x43e7('0x19')](respondWithResult(_0xe955fc,null))[_0x43e7('0x23')](handleError(_0xe955fc,null));};exports[_0x43e7('0x51')]=function(_0x23d835,_0x25bb44){var _0xa47464={'where':{'id':_0x23d835[_0x43e7('0x50')]['id']}},_0x44f8a0={};_0x44f8a0[_0x43e7('0x3c')]=_[_0x43e7('0x3d')](db['Trunk'][_0x43e7('0x39')]);_0xa47464[_0x43e7('0x42')]=_['intersection'](_0x44f8a0[_0x43e7('0x3c')],qs[_0x43e7('0x41')](_0x23d835[_0x43e7('0x3e')]['fields']));_0xa47464['attributes']=_0xa47464[_0x43e7('0x42')][_0x43e7('0x43')]?_0xa47464['attributes']:_0x44f8a0[_0x43e7('0x3c')];if(_0x23d835['query']['includeAll']){_0xa47464[_0x43e7('0x4e')]=[{'all':!![]}];}_0xa47464=_[_0x43e7('0x4b')]({},_0xa47464,_0x23d835[_0x43e7('0x4c')]);return db[_0x43e7('0x38')][_0x43e7('0x52')](_0xa47464)['then'](handleEntityNotFound(_0x25bb44,null))[_0x43e7('0x19')](function(_0xdb9fbe){if(_0xdb9fbe){var _0x4d89bd=_0xdb9fbe[_0x43e7('0x53')]({'plain':!![]});_0x4d89bd=qs[_0x43e7('0x54')](_0x4d89bd,['id',_0x43e7('0x55'),'updatedAt']);_0x23d835['body']=_['omit'](_0x23d835[_0x43e7('0x56')],['id',_0x43e7('0x55'),_0x43e7('0x57')]);return db[_0x43e7('0x38')]['create'](_['merge'](_0x4d89bd,_0x23d835[_0x43e7('0x56')]),{'include':_0x23d835[_0x43e7('0x3e')][_0x43e7('0x4d')]?[{'all':!![]}]:undefined})[_0x43e7('0x19')](function(_0x5ea0db){var _0x4438c0=_0x23d835[_0x43e7('0x58')][_0x43e7('0x53')]({'plain':!![]});if(!_0x4438c0)throw new Error(_0x43e7('0x59'));if(_0x4438c0[_0x43e7('0x5a')]===_0x43e7('0x58')){var _0x4665db=_0x5ea0db[_0x43e7('0x53')]({'plain':!![]});var _0x406155=_0x43e7('0x31');return db[_0x43e7('0x5b')]['find']({'where':{'name':_0x406155,'userProfileId':_0x4438c0['userProfileId']},'raw':!![]})[_0x43e7('0x19')](function(_0x58a3a8){if(_0x58a3a8&&_0x58a3a8['autoAssociation']===0x0){return db['UserProfileResource'][_0x43e7('0x5c')]({'name':_0x4665db[_0x43e7('0x34')],'resourceId':_0x4665db['id'],'type':_0x58a3a8['name'],'sectionId':_0x58a3a8['id']},{})[_0x43e7('0x19')](function(){return _0x5ea0db;});}else{return _0x5ea0db;}})[_0x43e7('0x23')](function(_0x1d8438){logger['error'](_0x43e7('0x5d'),_0x1d8438);throw _0x1d8438;});}return _0x5ea0db;});}})[_0x43e7('0x19')](respondWithResult(_0x25bb44,0xc9))[_0x43e7('0x23')](handleError(_0x25bb44,null));};exports[_0x43e7('0x5c')]=function(_0x2f43d7,_0x472a19,_0x1e02fa){var _0x515f01;return db[_0x43e7('0x38')][_0x43e7('0x5c')](_0x2f43d7[_0x43e7('0x56')],{'raw':!![]})['then'](function(_0x56b06d){_0x515f01=_0x56b06d;return db[_0x43e7('0x38')]['findAll']({'raw':!![]});})['then'](function(_0x1b793d){var _0x154e47=fs['readFileSync'](path[_0x43e7('0x5e')](config[_0x43e7('0x5f')],_0x43e7('0x60')),_0x43e7('0x61'));var _0x16499c=fs[_0x43e7('0x62')](path[_0x43e7('0x5e')](config['root'],_0x43e7('0x63')),_0x43e7('0x61'));var _0x4e5956=ejs[_0x43e7('0x64')](_0x154e47,{'trunks':_0x1b793d||[]});fs['writeFileSync'](_0x43e7('0x65'),_0x4e5956);if(_0x515f01[_0x43e7('0x66')]){var _0x37301b=ejs[_0x43e7('0x64')](_0x16499c,{'trunks':_0x1b793d||[]});fs['writeFileSync'](_0x43e7('0x67'),_0x37301b);}})[_0x43e7('0x19')](function(){return respondWithRpcPromise(_0x43e7('0x68'),'create',{'module':_0x43e7('0x69')});})[_0x43e7('0x19')](function(){var _0x219dc6=_0x2f43d7[_0x43e7('0x58')][_0x43e7('0x53')]({'plain':!![]});if(!_0x219dc6)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x219dc6[_0x43e7('0x5a')]===_0x43e7('0x58')){var _0x35d133=_0x515f01[_0x43e7('0x53')]({'plain':!![]});return db[_0x43e7('0x5b')][_0x43e7('0x52')]({'where':{'name':_0x43e7('0x31'),'userProfileId':_0x219dc6['userProfileId']},'raw':!![]})['then'](function(_0x405faa){if(_0x405faa&&_0x405faa['autoAssociation']===0x0){return db['UserProfileResource']['create']({'name':_0x35d133[_0x43e7('0x34')],'resourceId':_0x35d133['id'],'type':_0x405faa[_0x43e7('0x34')],'sectionId':_0x405faa['id']},{})[_0x43e7('0x19')](function(){return _0x515f01;});}else{return _0x515f01;}})[_0x43e7('0x23')](function(_0x18713b){logger[_0x43e7('0x1e')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x18713b);throw _0x18713b;});}return _0x515f01;})[_0x43e7('0x19')](respondWithResult(_0x472a19,0xc9))[_0x43e7('0x23')](handleError(_0x472a19,null));};exports[_0x43e7('0x2f')]=function(_0x5b4c76,_0x2abca0,_0xea84ec){var _0x184ae3;return db[_0x43e7('0x38')][_0x43e7('0x52')]({'where':{'id':_0x5b4c76[_0x43e7('0x50')]['id']}})[_0x43e7('0x19')](handleEntityNotFound(_0x2abca0,null))[_0x43e7('0x19')](saveUpdates(_0x5b4c76['body'],null))['then'](function(_0x55990c){if(_0x55990c){_0x184ae3=_0x55990c;return db[_0x43e7('0x38')][_0x43e7('0x4f')]({'raw':!![]});}})['then'](function(_0x3fe23f){if(_0x3fe23f){var _0x39a787=fs[_0x43e7('0x62')](path[_0x43e7('0x5e')](config['root'],'server/files/templates/trunk.ejs'),'utf8');var _0x177a7a=fs[_0x43e7('0x62')](path['join'](config['root'],_0x43e7('0x63')),_0x43e7('0x61'));var _0x3b7e5b=ejs['render'](_0x39a787,{'trunks':_0x3fe23f||[]});fs[_0x43e7('0x6a')](_0x43e7('0x65'),_0x3b7e5b);var _0x401654=ejs[_0x43e7('0x64')](_0x177a7a,{'trunks':_0x3fe23f||[]});fs['writeFileSync'](_0x43e7('0x67'),_0x401654);return respondWithRpcPromise('Reload',_0x43e7('0x2f'),{'module':_0x43e7('0x69')});}return null;})[_0x43e7('0x19')](function(_0x90667c){if(_0x90667c){return _0x184ae3;}})[_0x43e7('0x19')](respondWithResult(_0x2abca0,null))[_0x43e7('0x23')](handleError(_0x2abca0,null));};exports[_0x43e7('0x30')]=function(_0x5e8d4e,_0x109c86,_0x40257e){var _0x1aea4e;return db[_0x43e7('0x38')]['find']({'where':{'id':_0x5e8d4e['params']['id']}})['then'](handleEntityNotFound(_0x109c86,null))[_0x43e7('0x19')](removeEntity(_0x109c86,null))['then'](function(){return db[_0x43e7('0x38')][_0x43e7('0x4f')]({'raw':!![]});})[_0x43e7('0x19')](function(_0x7387f6){var _0xa75254=fs[_0x43e7('0x62')](path[_0x43e7('0x5e')](config[_0x43e7('0x5f')],_0x43e7('0x60')),_0x43e7('0x61'));var _0x3de22e=fs['readFileSync'](path[_0x43e7('0x5e')](config[_0x43e7('0x5f')],_0x43e7('0x63')),_0x43e7('0x61'));var _0x206e54=ejs['render'](_0xa75254,{'trunks':_0x7387f6});var _0x5e04ec=ejs[_0x43e7('0x64')](_0x3de22e,{'trunks':_0x7387f6});fs[_0x43e7('0x6a')]('/etc/asterisk/sip_xcally_trunks.conf',_0x206e54);fs[_0x43e7('0x6a')](_0x43e7('0x67'),_0x5e04ec);return respondWithRpcPromise('Reload','destroy',{'module':_0x43e7('0x69')});})[_0x43e7('0x23')](handleError(_0x109c86,null));};
\ No newline at end of file
+var _0x6aa7=['sort','where','filters','pick','filter','merge','VIRTUAL','options','include','findAll','rows','params','length','includeAll','clone','find','get','createdAt','body','omit','updatedAt','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','readFileSync','join','root','server/files/templates/trunk.ejs','render','/etc/asterisk/sip_xcally_trunks.conf','registry','/etc/asterisk/sip_xcally_registers.conf','Reload','chan_sip.so','autoAssociation','update','utf8','server/files/templates/registry.ejs','writeFileSync','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','ejs','lodash','squel','crypto','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','jayson/promise','http','then','Trunk,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','destroy','Trunks','UserProfileResource','stack','name','index','map','Trunk','rawAttributes','fieldName','type','model','query','keys','attributes','intersection','fields','order'];(function(_0x86b200,_0x584677){var _0x5a9435=function(_0x170cd0){while(--_0x170cd0){_0x86b200['push'](_0x86b200['shift']());}};_0x5a9435(++_0x584677);}(_0x6aa7,0x178));var _0x76aa=function(_0x20ea02,_0x101dc7){_0x20ea02=_0x20ea02-0x0;var _0x4f2d81=_0x6aa7[_0x20ea02];return _0x4f2d81;};'use strict';var emlformat=require(_0x76aa('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x76aa('0x1'));var jsonpatch=require(_0x76aa('0x2'));var rp=require(_0x76aa('0x3'));var moment=require(_0x76aa('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x76aa('0x5'));var util=require(_0x76aa('0x6'));var path=require(_0x76aa('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x76aa('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x76aa('0x9'));var squel=require(_0x76aa('0xa'));var crypto=require(_0x76aa('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x76aa('0xc'));var toCsv=require(_0x76aa('0xd'));var querystring=require(_0x76aa('0xe'));var Papa=require('papaparse');var Redis=require(_0x76aa('0xf'));var authService=require(_0x76aa('0x10'));var qs=require(_0x76aa('0x11'));var as=require(_0x76aa('0x12'));var hardwareService=require(_0x76aa('0x13'));var logger=require(_0x76aa('0x14'))(_0x76aa('0x15'));var utils=require(_0x76aa('0x16'));var config=require(_0x76aa('0x17'));var licenseUtil=require(_0x76aa('0x18'));var db=require('../../mysqldb')['db'];var jayson=require(_0x76aa('0x19'));var client=jayson['client'][_0x76aa('0x1a')]({'port':0x232a});function respondWithRpcPromise(_0x12dde0,_0x3f8f6b,_0x8e44ed,_0x10432c){return new BPromise(function(_0x4e309f,_0x5f5b59){var _0x2b3b4f=_0x10432c||client;return _0x2b3b4f['request'](_0x12dde0,_0x8e44ed)[_0x76aa('0x1b')](function(_0x319bf1){logger['info'](_0x76aa('0x1c'),_0x3f8f6b,'request\x20sent');logger[_0x76aa('0x1d')]('Trunk,\x20%s,\x20%s,\x20%s',_0x3f8f6b,_0x76aa('0x1e'),JSON[_0x76aa('0x1f')](_0x319bf1));if(_0x319bf1[_0x76aa('0x20')]){if(_0x319bf1[_0x76aa('0x20')][_0x76aa('0x21')]===0x1f4){logger[_0x76aa('0x20')]('Trunk,\x20%s,\x20%s',_0x3f8f6b,_0x319bf1['error'][_0x76aa('0x22')]);return _0x5f5b59(_0x319bf1[_0x76aa('0x20')][_0x76aa('0x22')]);}logger[_0x76aa('0x20')](_0x76aa('0x1c'),_0x3f8f6b,_0x319bf1[_0x76aa('0x20')][_0x76aa('0x22')]);return _0x4e309f(_0x319bf1[_0x76aa('0x20')][_0x76aa('0x22')]);}else{logger['info'](_0x76aa('0x1c'),_0x3f8f6b,_0x76aa('0x1e'));_0x4e309f(_0x319bf1[_0x76aa('0x23')]['message']);}})[_0x76aa('0x24')](function(_0x189cb6){logger[_0x76aa('0x20')](_0x76aa('0x1c'),_0x3f8f6b,_0x189cb6);_0x5f5b59(_0x189cb6);});});}function respondWithStatusCode(_0x29c50c,_0xc1044c){_0xc1044c=_0xc1044c||0xcc;return function(_0x3cd039){if(_0x3cd039){return _0x29c50c[_0x76aa('0x25')](_0xc1044c);}return _0x29c50c[_0x76aa('0x26')](_0xc1044c)[_0x76aa('0x27')]();};}function respondWithResult(_0x37f1ab,_0x26b75e){_0x26b75e=_0x26b75e||0xc8;return function(_0x3599a9){if(_0x3599a9){return _0x37f1ab['status'](_0x26b75e)[_0x76aa('0x28')](_0x3599a9);}};}function respondWithFilteredResult(_0x1d6d15,_0x25c614){return function(_0x2e7ab4){if(_0x2e7ab4){var _0xa1e6=typeof _0x25c614[_0x76aa('0x29')]===_0x76aa('0x2a')&&typeof _0x25c614[_0x76aa('0x2b')]===_0x76aa('0x2a');var _0x1bdc3d=_0x2e7ab4['count'];var _0x3fcb7f=_0xa1e6?0x0:_0x25c614['offset'];var _0x994550=_0xa1e6?_0x2e7ab4[_0x76aa('0x2c')]:_0x25c614[_0x76aa('0x29')]+_0x25c614[_0x76aa('0x2b')];var _0x1eecd9;if(_0x994550>=_0x1bdc3d){_0x994550=_0x1bdc3d;_0x1eecd9=0xc8;}else{_0x1eecd9=0xce;}_0x1d6d15[_0x76aa('0x26')](_0x1eecd9);return _0x1d6d15[_0x76aa('0x2d')](_0x76aa('0x2e'),_0x3fcb7f+'-'+_0x994550+'/'+_0x1bdc3d)[_0x76aa('0x28')](_0x2e7ab4);}return null;};}function patchUpdates(_0x3ea05a){return function(_0x5edcd8){try{jsonpatch[_0x76aa('0x2f')](_0x5edcd8,_0x3ea05a,!![]);}catch(_0x5532c7){return BPromise[_0x76aa('0x30')](_0x5532c7);}return _0x5edcd8[_0x76aa('0x31')]();};}function saveUpdates(_0x458ac3,_0x38ecd1){return function(_0x35a705){if(_0x35a705){return _0x35a705['update'](_0x458ac3)[_0x76aa('0x1b')](function(_0x25a11f){return _0x25a11f;});}return null;};}function removeEntity(_0x5a0f72,_0x2ee338){return function(_0x58d860){if(_0x58d860){return _0x58d860[_0x76aa('0x32')]()['then'](function(){var _0x8479a3=_0x58d860['get']({'plain':!![]});var _0x58f135=_0x76aa('0x33');return db[_0x76aa('0x34')][_0x76aa('0x32')]({'where':{'type':_0x58f135,'resourceId':_0x8479a3['id']}})[_0x76aa('0x1b')](function(){return _0x58d860;});})['then'](function(){_0x5a0f72['status'](0xcc)[_0x76aa('0x27')]();});}};}function handleEntityNotFound(_0x1c7b6f,_0x58127c){return function(_0x23e2fd){if(!_0x23e2fd){_0x1c7b6f[_0x76aa('0x25')](0x194);}return _0x23e2fd;};}function handleError(_0x5b57d8,_0x9ce5f4){_0x9ce5f4=_0x9ce5f4||0x1f4;return function(_0x5c77f1){logger['error'](_0x5c77f1[_0x76aa('0x35')]);if(_0x5c77f1[_0x76aa('0x36')]){delete _0x5c77f1[_0x76aa('0x36')];}_0x5b57d8[_0x76aa('0x26')](_0x9ce5f4)['send'](_0x5c77f1);};}exports[_0x76aa('0x37')]=function(_0x1c22f7,_0x2eea79){var _0x4e131a={},_0x113770={},_0x1638db={'count':0x0,'rows':[]};var _0x2f7726=_[_0x76aa('0x38')](db[_0x76aa('0x39')][_0x76aa('0x3a')],function(_0x878903){return{'name':_0x878903[_0x76aa('0x3b')],'type':_0x878903[_0x76aa('0x3c')]['key']};});_0x113770[_0x76aa('0x3d')]=_[_0x76aa('0x38')](_0x2f7726,_0x76aa('0x36'));_0x113770[_0x76aa('0x3e')]=_[_0x76aa('0x3f')](_0x1c22f7[_0x76aa('0x3e')]);_0x113770['filters']=_['intersection'](_0x113770[_0x76aa('0x3d')],_0x113770[_0x76aa('0x3e')]);_0x4e131a[_0x76aa('0x40')]=_[_0x76aa('0x41')](_0x113770['model'],qs[_0x76aa('0x42')](_0x1c22f7[_0x76aa('0x3e')][_0x76aa('0x42')]));_0x4e131a[_0x76aa('0x40')]=_0x4e131a[_0x76aa('0x40')]['length']?_0x4e131a[_0x76aa('0x40')]:_0x113770['model'];if(!_0x1c22f7[_0x76aa('0x3e')]['hasOwnProperty']('nolimit')){_0x4e131a['limit']=qs[_0x76aa('0x2b')](_0x1c22f7['query']['limit']);_0x4e131a['offset']=qs[_0x76aa('0x29')](_0x1c22f7[_0x76aa('0x3e')][_0x76aa('0x29')]);}_0x4e131a[_0x76aa('0x43')]=qs[_0x76aa('0x44')](_0x1c22f7['query'][_0x76aa('0x44')]);_0x4e131a[_0x76aa('0x45')]=qs[_0x76aa('0x46')](_[_0x76aa('0x47')](_0x1c22f7[_0x76aa('0x3e')],_0x113770['filters']),_0x2f7726);if(_0x1c22f7[_0x76aa('0x3e')][_0x76aa('0x48')]){_0x4e131a['where']=_[_0x76aa('0x49')](_0x4e131a['where'],{'$or':_[_0x76aa('0x38')](_0x2f7726,function(_0x24ea05){if(_0x24ea05[_0x76aa('0x3c')]!==_0x76aa('0x4a')){var _0x2d0bc4={};_0x2d0bc4[_0x24ea05[_0x76aa('0x36')]]={'$like':'%'+_0x1c22f7[_0x76aa('0x3e')][_0x76aa('0x48')]+'%'};return _0x2d0bc4;}})});}_0x4e131a=_[_0x76aa('0x49')]({},_0x4e131a,_0x1c22f7[_0x76aa('0x4b')]);var _0x5e4967={'where':_0x4e131a[_0x76aa('0x45')]};return db['Trunk'][_0x76aa('0x2c')](_0x5e4967)[_0x76aa('0x1b')](function(_0x5e95f5){_0x1638db[_0x76aa('0x2c')]=_0x5e95f5;if(_0x1c22f7['query']['includeAll']){_0x4e131a[_0x76aa('0x4c')]=[{'all':!![]}];}return db['Trunk'][_0x76aa('0x4d')](_0x4e131a);})[_0x76aa('0x1b')](function(_0x4315b3){_0x1638db[_0x76aa('0x4e')]=_0x4315b3;return _0x1638db;})[_0x76aa('0x1b')](respondWithFilteredResult(_0x2eea79,_0x4e131a))[_0x76aa('0x24')](handleError(_0x2eea79,null));};exports['show']=function(_0x564546,_0x2fcf8f){var _0x1eafb2={'raw':![],'where':{'id':_0x564546[_0x76aa('0x4f')]['id']}},_0x1708d4={};_0x1708d4[_0x76aa('0x3d')]=_[_0x76aa('0x3f')](db['Trunk'][_0x76aa('0x3a')]);_0x1708d4[_0x76aa('0x3e')]=_[_0x76aa('0x3f')](_0x564546['query']);_0x1708d4[_0x76aa('0x46')]=_['intersection'](_0x1708d4[_0x76aa('0x3d')],_0x1708d4['query']);_0x1eafb2[_0x76aa('0x40')]=_[_0x76aa('0x41')](_0x1708d4[_0x76aa('0x3d')],qs[_0x76aa('0x42')](_0x564546[_0x76aa('0x3e')][_0x76aa('0x42')]));_0x1eafb2[_0x76aa('0x40')]=_0x1eafb2['attributes'][_0x76aa('0x50')]?_0x1eafb2['attributes']:_0x1708d4[_0x76aa('0x3d')];if(_0x564546[_0x76aa('0x3e')][_0x76aa('0x51')]){_0x1eafb2[_0x76aa('0x4c')]=[{'all':!![]}];}_0x1eafb2=_[_0x76aa('0x49')]({},_0x1eafb2,_0x564546[_0x76aa('0x4b')]);return db[_0x76aa('0x39')]['find'](_0x1eafb2)[_0x76aa('0x1b')](handleEntityNotFound(_0x2fcf8f,null))[_0x76aa('0x1b')](respondWithResult(_0x2fcf8f,null))[_0x76aa('0x24')](handleError(_0x2fcf8f,null));};exports[_0x76aa('0x52')]=function(_0x5c742c,_0xb9401b){var _0x163440={'where':{'id':_0x5c742c[_0x76aa('0x4f')]['id']}},_0x8dc601={};_0x8dc601[_0x76aa('0x3d')]=_[_0x76aa('0x3f')](db['Trunk'][_0x76aa('0x3a')]);_0x163440[_0x76aa('0x40')]=_[_0x76aa('0x41')](_0x8dc601[_0x76aa('0x3d')],qs[_0x76aa('0x42')](_0x5c742c[_0x76aa('0x3e')][_0x76aa('0x42')]));_0x163440['attributes']=_0x163440['attributes'][_0x76aa('0x50')]?_0x163440[_0x76aa('0x40')]:_0x8dc601['model'];if(_0x5c742c[_0x76aa('0x3e')][_0x76aa('0x51')]){_0x163440['include']=[{'all':!![]}];}_0x163440=_[_0x76aa('0x49')]({},_0x163440,_0x5c742c[_0x76aa('0x4b')]);return db[_0x76aa('0x39')][_0x76aa('0x53')](_0x163440)[_0x76aa('0x1b')](handleEntityNotFound(_0xb9401b,null))[_0x76aa('0x1b')](function(_0x3376ec){if(_0x3376ec){var _0x30573a=_0x3376ec[_0x76aa('0x54')]({'plain':!![]});_0x30573a=qs['omit'](_0x30573a,['id',_0x76aa('0x55'),'updatedAt']);_0x5c742c[_0x76aa('0x56')]=_[_0x76aa('0x57')](_0x5c742c[_0x76aa('0x56')],['id',_0x76aa('0x55'),_0x76aa('0x58')]);return db[_0x76aa('0x39')][_0x76aa('0x59')](_[_0x76aa('0x49')](_0x30573a,_0x5c742c[_0x76aa('0x56')]),{'include':_0x5c742c['query'][_0x76aa('0x51')]?[{'all':!![]}]:undefined})[_0x76aa('0x1b')](function(_0x5c542b){var _0xe5957d=_0x5c742c[_0x76aa('0x5a')][_0x76aa('0x54')]({'plain':!![]});if(!_0xe5957d)throw new Error(_0x76aa('0x5b'));if(_0xe5957d[_0x76aa('0x5c')]==='user'){var _0x364d05=_0x5c542b['get']({'plain':!![]});var _0x35bd2b=_0x76aa('0x33');return db[_0x76aa('0x5d')][_0x76aa('0x53')]({'where':{'name':_0x35bd2b,'userProfileId':_0xe5957d[_0x76aa('0x5e')]},'raw':!![]})[_0x76aa('0x1b')](function(_0x2bfb46){if(_0x2bfb46&&_0x2bfb46['autoAssociation']===0x0){return db[_0x76aa('0x34')][_0x76aa('0x59')]({'name':_0x364d05['name'],'resourceId':_0x364d05['id'],'type':_0x2bfb46['name'],'sectionId':_0x2bfb46['id']},{})[_0x76aa('0x1b')](function(){return _0x5c542b;});}else{return _0x5c542b;}})[_0x76aa('0x24')](function(_0x5295a7){logger[_0x76aa('0x20')](_0x76aa('0x5f'),_0x5295a7);throw _0x5295a7;});}return _0x5c542b;});}})[_0x76aa('0x1b')](respondWithResult(_0xb9401b,0xc9))['catch'](handleError(_0xb9401b,null));};exports[_0x76aa('0x59')]=function(_0x47f733,_0xf31e1f,_0x1178e5){var _0x2315cf;return db[_0x76aa('0x39')]['create'](_0x47f733['body'],{'raw':!![]})[_0x76aa('0x1b')](function(_0x4dfeb3){_0x2315cf=_0x4dfeb3;return db[_0x76aa('0x39')][_0x76aa('0x4d')]({'raw':!![]});})[_0x76aa('0x1b')](function(_0x43a2af){var _0x2dd320=fs[_0x76aa('0x60')](path[_0x76aa('0x61')](config[_0x76aa('0x62')],_0x76aa('0x63')),'utf8');var _0x7d02e7=fs[_0x76aa('0x60')](path[_0x76aa('0x61')](config[_0x76aa('0x62')],'server/files/templates/registry.ejs'),'utf8');var _0x557c11=ejs[_0x76aa('0x64')](_0x2dd320,{'trunks':_0x43a2af||[]});fs['writeFileSync'](_0x76aa('0x65'),_0x557c11);if(_0x2315cf[_0x76aa('0x66')]){var _0x38faff=ejs[_0x76aa('0x64')](_0x7d02e7,{'trunks':_0x43a2af||[]});fs['writeFileSync'](_0x76aa('0x67'),_0x38faff);}})['then'](function(){return respondWithRpcPromise(_0x76aa('0x68'),_0x76aa('0x59'),{'module':_0x76aa('0x69')});})[_0x76aa('0x1b')](function(){var _0x1037fb=_0x47f733['user'][_0x76aa('0x54')]({'plain':!![]});if(!_0x1037fb)throw new Error(_0x76aa('0x5b'));if(_0x1037fb[_0x76aa('0x5c')]===_0x76aa('0x5a')){var _0x32c1de=_0x2315cf[_0x76aa('0x54')]({'plain':!![]});return db[_0x76aa('0x5d')][_0x76aa('0x53')]({'where':{'name':'Trunks','userProfileId':_0x1037fb[_0x76aa('0x5e')]},'raw':!![]})[_0x76aa('0x1b')](function(_0x48136a){if(_0x48136a&&_0x48136a[_0x76aa('0x6a')]===0x0){return db[_0x76aa('0x34')][_0x76aa('0x59')]({'name':_0x32c1de[_0x76aa('0x36')],'resourceId':_0x32c1de['id'],'type':_0x48136a[_0x76aa('0x36')],'sectionId':_0x48136a['id']},{})[_0x76aa('0x1b')](function(){return _0x2315cf;});}else{return _0x2315cf;}})[_0x76aa('0x24')](function(_0x5dc923){logger[_0x76aa('0x20')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5dc923);throw _0x5dc923;});}return _0x2315cf;})['then'](respondWithResult(_0xf31e1f,0xc9))[_0x76aa('0x24')](handleError(_0xf31e1f,null));};exports[_0x76aa('0x6b')]=function(_0x5d8947,_0x5d1de1,_0x36da4d){var _0x14b5a2;return db[_0x76aa('0x39')]['find']({'where':{'id':_0x5d8947['params']['id']}})[_0x76aa('0x1b')](handleEntityNotFound(_0x5d1de1,null))[_0x76aa('0x1b')](saveUpdates(_0x5d8947[_0x76aa('0x56')],null))['then'](function(_0xb70589){if(_0xb70589){_0x14b5a2=_0xb70589;return db['Trunk'][_0x76aa('0x4d')]({'raw':!![]});}})[_0x76aa('0x1b')](function(_0x383290){if(_0x383290){var _0x325ffa=fs[_0x76aa('0x60')](path['join'](config['root'],_0x76aa('0x63')),_0x76aa('0x6c'));var _0x19ebb7=fs['readFileSync'](path[_0x76aa('0x61')](config[_0x76aa('0x62')],_0x76aa('0x6d')),_0x76aa('0x6c'));var _0x303b78=ejs['render'](_0x325ffa,{'trunks':_0x383290||[]});fs[_0x76aa('0x6e')]('/etc/asterisk/sip_xcally_trunks.conf',_0x303b78);var _0x213f7f=ejs[_0x76aa('0x64')](_0x19ebb7,{'trunks':_0x383290||[]});fs[_0x76aa('0x6e')](_0x76aa('0x67'),_0x213f7f);return respondWithRpcPromise(_0x76aa('0x68'),_0x76aa('0x6b'),{'module':'chan_sip.so'});}return null;})['then'](function(_0x547411){if(_0x547411){return _0x14b5a2;}})['then'](respondWithResult(_0x5d1de1,null))['catch'](handleError(_0x5d1de1,null));};exports[_0x76aa('0x32')]=function(_0x22f44f,_0x52c5be,_0x5c2c91){var _0x4f01e9;return db[_0x76aa('0x39')][_0x76aa('0x53')]({'where':{'id':_0x22f44f[_0x76aa('0x4f')]['id']}})['then'](handleEntityNotFound(_0x52c5be,null))['then'](removeEntity(_0x52c5be,null))[_0x76aa('0x1b')](function(){return db[_0x76aa('0x39')][_0x76aa('0x4d')]({'raw':!![]});})[_0x76aa('0x1b')](function(_0x354c7b){var _0x55e526=fs['readFileSync'](path[_0x76aa('0x61')](config['root'],'server/files/templates/trunk.ejs'),'utf8');var _0x4673e6=fs[_0x76aa('0x60')](path['join'](config[_0x76aa('0x62')],_0x76aa('0x6d')),'utf8');var _0x22063f=ejs[_0x76aa('0x64')](_0x55e526,{'trunks':_0x354c7b});var _0x11d91f=ejs[_0x76aa('0x64')](_0x4673e6,{'trunks':_0x354c7b});fs[_0x76aa('0x6e')](_0x76aa('0x65'),_0x22063f);fs[_0x76aa('0x6e')](_0x76aa('0x67'),_0x11d91f);return respondWithRpcPromise(_0x76aa('0x68'),'destroy',{'module':_0x76aa('0x69')});})[_0x76aa('0x24')](handleError(_0x52c5be,null));};
\ No newline at end of file
index dbd80d7..bcf1313 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b8b=['util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./trunk.attributes','define','Trunk','tools_trunks','lodash'];(function(_0x4d031a,_0x625b5d){var _0x35a74c=function(_0x3184b0){while(--_0x3184b0){_0x4d031a['push'](_0x4d031a['shift']());}};_0x35a74c(++_0x625b5d);}(_0x6b8b,0x9b));var _0xb6b8=function(_0x122af8,_0x111ddd){_0x122af8=_0x122af8-0x0;var _0x1e0a9c=_0x6b8b[_0x122af8];return _0x1e0a9c;};'use strict';var _=require(_0xb6b8('0x0'));var util=require(_0xb6b8('0x1'));var logger=require(_0xb6b8('0x2'))(_0xb6b8('0x3'));var moment=require(_0xb6b8('0x4'));var BPromise=require(_0xb6b8('0x5'));var rp=require(_0xb6b8('0x6'));var fs=require('fs');var path=require(_0xb6b8('0x7'));var rimraf=require('rimraf');var config=require(_0xb6b8('0x8'));var attributes=require(_0xb6b8('0x9'));module['exports']=function(_0xa5a2f,_0x2d789e){return _0xa5a2f[_0xb6b8('0xa')](_0xb6b8('0xb'),attributes,{'tableName':_0xb6b8('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1313=['bluebird','rimraf','../../config/environment','exports','define','Trunk','tools_trunks','util','api','moment'];(function(_0x12d033,_0x25fa2f){var _0x3b4e80=function(_0x46c1f4){while(--_0x46c1f4){_0x12d033['push'](_0x12d033['shift']());}};_0x3b4e80(++_0x25fa2f);}(_0x1313,0x13d));var _0x3131=function(_0x7afb3a,_0x313420){_0x7afb3a=_0x7afb3a-0x0;var _0x41a03f=_0x1313[_0x7afb3a];return _0x41a03f;};'use strict';var _=require('lodash');var util=require(_0x3131('0x0'));var logger=require('../../config/logger')(_0x3131('0x1'));var moment=require(_0x3131('0x2'));var BPromise=require(_0x3131('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x3131('0x4'));var config=require(_0x3131('0x5'));var attributes=require('./trunk.attributes');module[_0x3131('0x6')]=function(_0x556ce5,_0x59e87e){return _0x556ce5[_0x3131('0x7')](_0x3131('0x8'),attributes,{'tableName':_0x3131('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4420263..50bc40e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c5e=['rpc','../../config/environment','jayson/promise','client','request','then','info','Trunk,\x20%s,\x20%s','request\x20sent','debug','Trunk,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','options','raw','where','attributes','limit','include','map','model','GetTrunk','ShowTrunk','Trunk','find','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger'];(function(_0x24cdae,_0x2f1cd9){var _0x2b598c=function(_0x491669){while(--_0x491669){_0x24cdae['push'](_0x24cdae['shift']());}};_0x2b598c(++_0x2f1cd9);}(_0x3c5e,0x145));var _0xe3c5=function(_0x141696,_0x44dd4e){_0x141696=_0x141696-0x0;var _0xd8480c=_0x3c5e[_0x141696];return _0xd8480c;};'use strict';var _=require(_0xe3c5('0x0'));var util=require(_0xe3c5('0x1'));var moment=require(_0xe3c5('0x2'));var BPromise=require(_0xe3c5('0x3'));var rs=require(_0xe3c5('0x4'));var fs=require('fs');var Redis=require(_0xe3c5('0x5'));var db=require(_0xe3c5('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xe3c5('0x7'))(_0xe3c5('0x8'));var config=require(_0xe3c5('0x9'));var jayson=require(_0xe3c5('0xa'));var client=jayson[_0xe3c5('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x249124,_0x1df81d,_0x478c14){return new BPromise(function(_0x1ebad7,_0x277742){return client[_0xe3c5('0xc')](_0x249124,_0x478c14)[_0xe3c5('0xd')](function(_0x2d556f){logger[_0xe3c5('0xe')](_0xe3c5('0xf'),_0x1df81d,_0xe3c5('0x10'));logger[_0xe3c5('0x11')](_0xe3c5('0x12'),_0x1df81d,_0xe3c5('0x10'),JSON[_0xe3c5('0x13')](_0x2d556f));if(_0x2d556f[_0xe3c5('0x14')]){if(_0x2d556f['error'][_0xe3c5('0x15')]===0x1f4){logger[_0xe3c5('0x14')](_0xe3c5('0xf'),_0x1df81d,_0x2d556f[_0xe3c5('0x14')][_0xe3c5('0x16')]);return _0x277742(_0x2d556f[_0xe3c5('0x14')][_0xe3c5('0x16')]);}logger[_0xe3c5('0x14')](_0xe3c5('0xf'),_0x1df81d,_0x2d556f['error'][_0xe3c5('0x16')]);return _0x1ebad7(_0x2d556f[_0xe3c5('0x14')][_0xe3c5('0x16')]);}else{logger[_0xe3c5('0xe')](_0xe3c5('0xf'),_0x1df81d,_0xe3c5('0x10'));_0x1ebad7(_0x2d556f[_0xe3c5('0x17')][_0xe3c5('0x16')]);}})[_0xe3c5('0x18')](function(_0x5ea67c){logger['error']('Trunk,\x20%s,\x20%s',_0x1df81d,_0x5ea67c);_0x277742(_0x5ea67c);});});}exports['GetTrunk']=function(_0x2bd51d){var _0xb61d9c=this;return new Promise(function(_0x2fa81e,_0x150618){return db['Trunk']['findAll']({'raw':_0x2bd51d[_0xe3c5('0x19')]?_0x2bd51d['options'][_0xe3c5('0x1a')]===undefined?!![]:![]:!![],'where':_0x2bd51d[_0xe3c5('0x19')]?_0x2bd51d[_0xe3c5('0x19')][_0xe3c5('0x1b')]||null:null,'attributes':_0x2bd51d['options']?_0x2bd51d['options'][_0xe3c5('0x1c')]||null:null,'limit':_0x2bd51d[_0xe3c5('0x19')]?_0x2bd51d['options'][_0xe3c5('0x1d')]||null:null,'include':_0x2bd51d[_0xe3c5('0x19')]?_0x2bd51d['options'][_0xe3c5('0x1e')]?_[_0xe3c5('0x1f')](_0x2bd51d[_0xe3c5('0x19')]['include'],function(_0x5f8849){return{'model':db[_0x5f8849['model']],'as':_0x5f8849['as'],'attributes':_0x5f8849[_0xe3c5('0x1c')],'include':_0x5f8849[_0xe3c5('0x1e')]?_[_0xe3c5('0x1f')](_0x5f8849[_0xe3c5('0x1e')],function(_0x4af61a){return{'model':db[_0x4af61a[_0xe3c5('0x20')]],'as':_0x4af61a['as'],'attributes':_0x4af61a[_0xe3c5('0x1c')],'include':_0x4af61a[_0xe3c5('0x1e')]?_['map'](_0x4af61a[_0xe3c5('0x1e')],function(_0x16f6e4){return{'model':db[_0x16f6e4[_0xe3c5('0x20')]],'as':_0x16f6e4['as'],'attributes':_0x16f6e4[_0xe3c5('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4285b5){logger[_0xe3c5('0xe')](_0xe3c5('0x21'),_0x2bd51d);logger['debug'](_0xe3c5('0x21'),_0x2bd51d,JSON[_0xe3c5('0x13')](_0x4285b5));_0x2fa81e(_0x4285b5);})['catch'](function(_0x2fae68){logger[_0xe3c5('0x14')](_0xe3c5('0x21'),_0x2fae68[_0xe3c5('0x16')],_0x2bd51d);_0x150618(_0xb61d9c[_0xe3c5('0x14')](0x1f4,_0x2fae68[_0xe3c5('0x16')]));});});};exports[_0xe3c5('0x22')]=function(_0x32b030){var _0x57f0f2=this;return new Promise(function(_0x84ffb7,_0x74656f){return db[_0xe3c5('0x23')][_0xe3c5('0x24')]({'raw':_0x32b030['options']?_0x32b030[_0xe3c5('0x19')][_0xe3c5('0x1a')]===undefined?!![]:![]:!![],'where':_0x32b030['options']?_0x32b030[_0xe3c5('0x19')][_0xe3c5('0x1b')]||null:null,'attributes':_0x32b030[_0xe3c5('0x19')]?_0x32b030[_0xe3c5('0x19')][_0xe3c5('0x1c')]||null:null,'include':_0x32b030[_0xe3c5('0x19')]?_0x32b030[_0xe3c5('0x19')]['include']?_[_0xe3c5('0x1f')](_0x32b030['options'][_0xe3c5('0x1e')],function(_0x1bf8e5){return{'model':db[_0x1bf8e5['model']],'as':_0x1bf8e5['as'],'attributes':_0x1bf8e5[_0xe3c5('0x1c')],'include':_0x1bf8e5[_0xe3c5('0x1e')]?_['map'](_0x1bf8e5['include'],function(_0x565b14){return{'model':db[_0x565b14[_0xe3c5('0x20')]],'as':_0x565b14['as'],'attributes':_0x565b14[_0xe3c5('0x1c')],'include':_0x565b14[_0xe3c5('0x1e')]?_[_0xe3c5('0x1f')](_0x565b14['include'],function(_0xdea697){return{'model':db[_0xdea697['model']],'as':_0xdea697['as'],'attributes':_0xdea697[_0xe3c5('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xe3c5('0xd')](function(_0x46ca09){logger[_0xe3c5('0xe')](_0xe3c5('0x22'),_0x32b030);logger['debug'](_0xe3c5('0x22'),_0x32b030,JSON[_0xe3c5('0x13')](_0x46ca09));_0x84ffb7(_0x46ca09);})[_0xe3c5('0x18')](function(_0x468852){logger['error'](_0xe3c5('0x22'),_0x468852[_0xe3c5('0x16')],_0x32b030);_0x74656f(_0x57f0f2[_0xe3c5('0x14')](0x1f4,_0x468852[_0xe3c5('0x16')]));});});};
\ No newline at end of file
+var _0x7be7=['http','request','info','Trunk,\x20%s,\x20%s','request\x20sent','debug','Trunk,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetTrunk','Trunk','options','raw','where','attributes','include','map','model','ShowTrunk','find','then','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client'];(function(_0x59eaf0,_0x386557){var _0x5c6b46=function(_0x4d031f){while(--_0x4d031f){_0x59eaf0['push'](_0x59eaf0['shift']());}};_0x5c6b46(++_0x386557);}(_0x7be7,0x1c9));var _0x77be=function(_0x513032,_0x115c96){_0x513032=_0x513032-0x0;var _0x34d78e=_0x7be7[_0x513032];return _0x34d78e;};'use strict';var _=require('lodash');var util=require(_0x77be('0x0'));var moment=require(_0x77be('0x1'));var BPromise=require(_0x77be('0x2'));var rs=require(_0x77be('0x3'));var fs=require('fs');var Redis=require(_0x77be('0x4'));var db=require(_0x77be('0x5'))['db'];var utils=require(_0x77be('0x6'));var logger=require(_0x77be('0x7'))('rpc');var config=require(_0x77be('0x8'));var jayson=require(_0x77be('0x9'));var client=jayson[_0x77be('0xa')][_0x77be('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2819b8,_0x10c441,_0xbc5e8d){return new BPromise(function(_0x1d0b84,_0x3e65c0){return client[_0x77be('0xc')](_0x2819b8,_0xbc5e8d)['then'](function(_0x21c3d6){logger[_0x77be('0xd')](_0x77be('0xe'),_0x10c441,_0x77be('0xf'));logger[_0x77be('0x10')](_0x77be('0x11'),_0x10c441,'request\x20sent',JSON[_0x77be('0x12')](_0x21c3d6));if(_0x21c3d6[_0x77be('0x13')]){if(_0x21c3d6[_0x77be('0x13')][_0x77be('0x14')]===0x1f4){logger[_0x77be('0x13')](_0x77be('0xe'),_0x10c441,_0x21c3d6[_0x77be('0x13')]['message']);return _0x3e65c0(_0x21c3d6[_0x77be('0x13')][_0x77be('0x15')]);}logger[_0x77be('0x13')](_0x77be('0xe'),_0x10c441,_0x21c3d6[_0x77be('0x13')]['message']);return _0x1d0b84(_0x21c3d6[_0x77be('0x13')]['message']);}else{logger[_0x77be('0xd')](_0x77be('0xe'),_0x10c441,_0x77be('0xf'));_0x1d0b84(_0x21c3d6[_0x77be('0x16')]['message']);}})[_0x77be('0x17')](function(_0x3d81ce){logger[_0x77be('0x13')](_0x77be('0xe'),_0x10c441,_0x3d81ce);_0x3e65c0(_0x3d81ce);});});}exports[_0x77be('0x18')]=function(_0x42f086){var _0x2493cc=this;return new Promise(function(_0x1ab893,_0x126ed8){return db[_0x77be('0x19')]['findAll']({'raw':_0x42f086[_0x77be('0x1a')]?_0x42f086[_0x77be('0x1a')][_0x77be('0x1b')]===undefined?!![]:![]:!![],'where':_0x42f086[_0x77be('0x1a')]?_0x42f086['options'][_0x77be('0x1c')]||null:null,'attributes':_0x42f086['options']?_0x42f086[_0x77be('0x1a')][_0x77be('0x1d')]||null:null,'limit':_0x42f086[_0x77be('0x1a')]?_0x42f086[_0x77be('0x1a')]['limit']||null:null,'include':_0x42f086[_0x77be('0x1a')]?_0x42f086[_0x77be('0x1a')][_0x77be('0x1e')]?_[_0x77be('0x1f')](_0x42f086[_0x77be('0x1a')][_0x77be('0x1e')],function(_0x4a464a){return{'model':db[_0x4a464a['model']],'as':_0x4a464a['as'],'attributes':_0x4a464a[_0x77be('0x1d')],'include':_0x4a464a[_0x77be('0x1e')]?_[_0x77be('0x1f')](_0x4a464a[_0x77be('0x1e')],function(_0x3290a8){return{'model':db[_0x3290a8['model']],'as':_0x3290a8['as'],'attributes':_0x3290a8[_0x77be('0x1d')],'include':_0x3290a8[_0x77be('0x1e')]?_[_0x77be('0x1f')](_0x3290a8[_0x77be('0x1e')],function(_0x24708c){return{'model':db[_0x24708c[_0x77be('0x20')]],'as':_0x24708c['as'],'attributes':_0x24708c[_0x77be('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x3b523f){logger[_0x77be('0xd')](_0x77be('0x18'),_0x42f086);logger[_0x77be('0x10')](_0x77be('0x18'),_0x42f086,JSON['stringify'](_0x3b523f));_0x1ab893(_0x3b523f);})[_0x77be('0x17')](function(_0x3d694e){logger[_0x77be('0x13')](_0x77be('0x18'),_0x3d694e['message'],_0x42f086);_0x126ed8(_0x2493cc[_0x77be('0x13')](0x1f4,_0x3d694e[_0x77be('0x15')]));});});};exports[_0x77be('0x21')]=function(_0x11f342){var _0x4e1163=this;return new Promise(function(_0x33eb61,_0x535a0c){return db[_0x77be('0x19')][_0x77be('0x22')]({'raw':_0x11f342[_0x77be('0x1a')]?_0x11f342[_0x77be('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x11f342[_0x77be('0x1a')]?_0x11f342[_0x77be('0x1a')][_0x77be('0x1c')]||null:null,'attributes':_0x11f342[_0x77be('0x1a')]?_0x11f342[_0x77be('0x1a')]['attributes']||null:null,'include':_0x11f342[_0x77be('0x1a')]?_0x11f342[_0x77be('0x1a')][_0x77be('0x1e')]?_[_0x77be('0x1f')](_0x11f342[_0x77be('0x1a')][_0x77be('0x1e')],function(_0x4f720d){return{'model':db[_0x4f720d[_0x77be('0x20')]],'as':_0x4f720d['as'],'attributes':_0x4f720d[_0x77be('0x1d')],'include':_0x4f720d[_0x77be('0x1e')]?_['map'](_0x4f720d[_0x77be('0x1e')],function(_0x837057){return{'model':db[_0x837057['model']],'as':_0x837057['as'],'attributes':_0x837057['attributes'],'include':_0x837057[_0x77be('0x1e')]?_[_0x77be('0x1f')](_0x837057['include'],function(_0x2a1594){return{'model':db[_0x2a1594[_0x77be('0x20')]],'as':_0x2a1594['as'],'attributes':_0x2a1594[_0x77be('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x77be('0x23')](function(_0xbb334b){logger['info'](_0x77be('0x21'),_0x11f342);logger[_0x77be('0x10')](_0x77be('0x21'),_0x11f342,JSON['stringify'](_0xbb334b));_0x33eb61(_0xbb334b);})['catch'](function(_0x2e59af){logger[_0x77be('0x13')](_0x77be('0x21'),_0x2e59af[_0x77be('0x15')],_0x11f342);_0x535a0c(_0x4e1163[_0x77be('0x13')](0x1f4,_0x2e59af[_0x77be('0x15')]));});});};
\ No newline at end of file
index a7002a5..117ce36 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcbec=['unpause','addTeams','/:id/chat_interactions','addChatInteractions','/:id/mail_interactions','addMailInteractions','/:id/fax_interactions','addFaxInteractions','/:id/sms_interactions','/:id/openchannel_interactions','addOpenchannelInteractions','/:id/whatsapp_interactions','addWhatsappInteractions','addMailAccounts','addSmsAccounts','addChatWebsites','/:id/whatsapp_accounts','addWhatsappAccounts','addSquareProjects','createApiKey','put','update','/:id/password','changePassword','delete','removeQueues','removeTeams','removeChatInteractions','removeMailInteractions','removeSmsInteractions','removeOpenchannelInteractions','removeWhatsappInteractions','/:id/mail_accounts','removeOpenchannelAccounts','removeSmsAccounts','removeChatWebsites','removeWhatsappAccounts','multer','util','express','fs-extra','../../components/interaction/service','../../config/environment','./user.controller','index','get','/describe','isAuthenticated','describe','whoami','/presence','getPresence','/:id','show','getAvatar','getOpenTabs','getContacts','/:id/queues','getQueues','getVoiceQueuesRt','/:id/groups','getGroups','/:id/recordings','getRecordings','getScreenRecordings','/:id/chat/interactions','getChatInteractions','getOpenchannelInteractions','/:id/mail/interactions','getMailInteractions','/:id/sms/interactions','/:id/fax/interactions','getWhatsappInteractions','/:id/teams','/:id/lists','getLists','getAgents','/:id/fax_accounts','getFaxAccounts','getMailAccounts','/:id/openchannel_accounts','/:id/sms_accounts','getSmsAccounts','/:id/chat_websites','getChatWebsites','/:id/square_projects','getSquareProjects','/:id/scheduled_calls','getScheduledCalls','/:id/api_key','getApiKey','post','/:id/contacts','addContacts','create','diskStorage','root','format','%s-%s','now','originalname','file','addAvatar','login','/:id/logout','logout','pause','/:id/unpause'];(function(_0x26a463,_0x1d10b9){var _0x5d43a3=function(_0x31de58){while(--_0x31de58){_0x26a463['push'](_0x26a463['shift']());}};_0x5d43a3(++_0x1d10b9);}(_0xcbec,0x91));var _0xccbe=function(_0x1efbbe,_0x37e8ee){_0x1efbbe=_0x1efbbe-0x0;var _0x2f97be=_0xcbec[_0x1efbbe];return _0x2f97be;};'use strict';var multer=require(_0xccbe('0x0'));var util=require(_0xccbe('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xccbe('0x2'));var router=express['Router']();var fs_extra=require(_0xccbe('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xccbe('0x4'));var config=require(_0xccbe('0x5'));var controller=require(_0xccbe('0x6'));router['get']('/',auth['isAuthenticated'](),controller[_0xccbe('0x7')]);router[_0xccbe('0x8')](_0xccbe('0x9'),auth[_0xccbe('0xa')](),controller[_0xccbe('0xb')]);router[_0xccbe('0x8')]('/whoami',auth[_0xccbe('0xa')](),controller[_0xccbe('0xc')]);router['get'](_0xccbe('0xd'),auth[_0xccbe('0xa')](),controller[_0xccbe('0xe')]);router[_0xccbe('0x8')](_0xccbe('0xf'),auth['isAuthenticated'](),controller[_0xccbe('0x10')]);router['get']('/:id/avatar',controller[_0xccbe('0x11')]);router[_0xccbe('0x8')]('/:id/open_tabs',auth[_0xccbe('0xa')](),controller[_0xccbe('0x12')]);router['get']('/:id/contacts',auth[_0xccbe('0xa')](),controller[_0xccbe('0x13')]);router[_0xccbe('0x8')](_0xccbe('0x14'),auth['isAuthenticated'](),controller[_0xccbe('0x15')]);router[_0xccbe('0x8')]('/:id/queues_rt',auth[_0xccbe('0xa')](),controller[_0xccbe('0x16')]);router['get'](_0xccbe('0x17'),auth['isAuthenticated'](),controller[_0xccbe('0x18')]);router['get'](_0xccbe('0x19'),auth[_0xccbe('0xa')](),controller[_0xccbe('0x1a')]);router[_0xccbe('0x8')]('/:id/screen_recordings',auth['isAuthenticated'](),controller[_0xccbe('0x1b')]);router[_0xccbe('0x8')](_0xccbe('0x1c'),auth[_0xccbe('0xa')](),controller[_0xccbe('0x1d')]);router[_0xccbe('0x8')]('/:id/openchannel/interactions',auth[_0xccbe('0xa')](),controller[_0xccbe('0x1e')]);router[_0xccbe('0x8')](_0xccbe('0x1f'),auth[_0xccbe('0xa')](),controller[_0xccbe('0x20')]);router['get'](_0xccbe('0x21'),auth['isAuthenticated'](),controller['getSmsInteractions']);router[_0xccbe('0x8')](_0xccbe('0x22'),auth[_0xccbe('0xa')](),controller['getFaxInteractions']);router[_0xccbe('0x8')]('/:id/whatsapp/interactions',auth['isAuthenticated'](),controller[_0xccbe('0x23')]);router[_0xccbe('0x8')](_0xccbe('0x24'),auth['isAuthenticated'](),controller['getTeams']);router[_0xccbe('0x8')](_0xccbe('0x25'),auth[_0xccbe('0xa')](),controller[_0xccbe('0x26')]);router['get']('/:id/agents',auth[_0xccbe('0xa')](),controller[_0xccbe('0x27')]);router[_0xccbe('0x8')]('/:id/prefixes',auth[_0xccbe('0xa')](),controller['getVoicePrefixes']);router[_0xccbe('0x8')](_0xccbe('0x28'),auth[_0xccbe('0xa')](),controller[_0xccbe('0x29')]);router[_0xccbe('0x8')]('/:id/mail_accounts',auth['isAuthenticated'](),controller[_0xccbe('0x2a')]);router[_0xccbe('0x8')](_0xccbe('0x2b'),auth[_0xccbe('0xa')](),controller['getOpenchannelAccounts']);router[_0xccbe('0x8')](_0xccbe('0x2c'),auth[_0xccbe('0xa')](),controller[_0xccbe('0x2d')]);router[_0xccbe('0x8')](_0xccbe('0x2e'),auth[_0xccbe('0xa')](),controller[_0xccbe('0x2f')]);router['get']('/:id/whatsapp_accounts',auth[_0xccbe('0xa')](),controller['getWhatsappAccounts']);router[_0xccbe('0x8')](_0xccbe('0x30'),auth[_0xccbe('0xa')](),controller[_0xccbe('0x31')]);router[_0xccbe('0x8')](_0xccbe('0x32'),auth[_0xccbe('0xa')](),controller[_0xccbe('0x33')]);router[_0xccbe('0x8')](_0xccbe('0x34'),auth[_0xccbe('0xa')](),controller[_0xccbe('0x35')]);router[_0xccbe('0x36')](_0xccbe('0x37'),auth['isAuthenticated'](),controller[_0xccbe('0x38')]);router['post']('/',auth[_0xccbe('0xa')](),controller[_0xccbe('0x39')]);router[_0xccbe('0x36')]('/create_many',auth[_0xccbe('0xa')](),controller['bulkCreate']);router[_0xccbe('0x36')](_0xccbe('0x14'),auth[_0xccbe('0xa')](),controller['addQueues']);var upload=multer({'storage':multer[_0xccbe('0x3a')]({'destination':function(_0x4f165d,_0x4e57d3,_0x10ee2e){_0x10ee2e(null,path['join'](config[_0xccbe('0x3b')],'server/files/images/'));},'filename':function(_0x56268a,_0x38a8d8,_0x23b667){_0x23b667(null,util[_0xccbe('0x3c')](_0xccbe('0x3d'),Date[_0xccbe('0x3e')](),_0x38a8d8[_0xccbe('0x3f')]));}})});router['post']('/:id/avatar',upload['single'](_0xccbe('0x40')),controller[_0xccbe('0x41')]);router[_0xccbe('0x36')]('/:id/login',auth['isAuthenticated'](),controller[_0xccbe('0x42')]);router[_0xccbe('0x36')](_0xccbe('0x43'),auth[_0xccbe('0xa')](),controller[_0xccbe('0x44')]);router[_0xccbe('0x36')]('/:id/pause',auth[_0xccbe('0xa')](),controller[_0xccbe('0x45')]);router['post'](_0xccbe('0x46'),auth[_0xccbe('0xa')](),controller[_0xccbe('0x47')]);router[_0xccbe('0x36')](_0xccbe('0x24'),auth[_0xccbe('0xa')](),controller[_0xccbe('0x48')]);router[_0xccbe('0x36')](_0xccbe('0x49'),auth[_0xccbe('0xa')](),controller[_0xccbe('0x4a')]);router[_0xccbe('0x36')](_0xccbe('0x4b'),auth[_0xccbe('0xa')](),controller[_0xccbe('0x4c')]);router[_0xccbe('0x36')](_0xccbe('0x4d'),auth[_0xccbe('0xa')](),controller[_0xccbe('0x4e')]);router['post'](_0xccbe('0x4f'),auth[_0xccbe('0xa')](),controller['addSmsInteractions']);router[_0xccbe('0x36')](_0xccbe('0x50'),auth[_0xccbe('0xa')](),controller[_0xccbe('0x51')]);router[_0xccbe('0x36')](_0xccbe('0x52'),auth[_0xccbe('0xa')](),controller[_0xccbe('0x53')]);router[_0xccbe('0x36')]('/:id/fax_accounts',auth[_0xccbe('0xa')](),controller['addFaxAccounts']);router[_0xccbe('0x36')]('/:id/mail_accounts',auth[_0xccbe('0xa')](),controller[_0xccbe('0x54')]);router[_0xccbe('0x36')]('/:id/openchannel_accounts',auth[_0xccbe('0xa')](),controller['addOpenchannelAccounts']);router[_0xccbe('0x36')](_0xccbe('0x2c'),auth[_0xccbe('0xa')](),controller[_0xccbe('0x55')]);router[_0xccbe('0x36')](_0xccbe('0x2e'),auth[_0xccbe('0xa')](),controller[_0xccbe('0x56')]);router['post'](_0xccbe('0x57'),auth[_0xccbe('0xa')](),controller[_0xccbe('0x58')]);router[_0xccbe('0x36')](_0xccbe('0x30'),auth[_0xccbe('0xa')](),controller[_0xccbe('0x59')]);router['post'](_0xccbe('0x34'),auth['isAuthenticated'](),controller[_0xccbe('0x5a')]);router[_0xccbe('0x5b')]('/:id',auth[_0xccbe('0xa')](),controller[_0xccbe('0x5c')]);router[_0xccbe('0x5b')](_0xccbe('0x5d'),auth[_0xccbe('0xa')](),controller[_0xccbe('0x5e')]);router[_0xccbe('0x5f')](_0xccbe('0x14'),auth[_0xccbe('0xa')](),controller[_0xccbe('0x60')]);router[_0xccbe('0x5f')](_0xccbe('0x24'),auth[_0xccbe('0xa')](),controller[_0xccbe('0x61')]);router['delete'](_0xccbe('0xf'),auth['isAuthenticated'](),controller['destroy']);router[_0xccbe('0x5f')](_0xccbe('0x49'),auth[_0xccbe('0xa')](),controller[_0xccbe('0x62')]);router[_0xccbe('0x5f')](_0xccbe('0x4b'),auth[_0xccbe('0xa')](),controller[_0xccbe('0x63')]);router[_0xccbe('0x5f')]('/:id/fax_interactions',auth[_0xccbe('0xa')](),controller['removeFaxInteractions']);router[_0xccbe('0x5f')](_0xccbe('0x4f'),auth[_0xccbe('0xa')](),controller[_0xccbe('0x64')]);router[_0xccbe('0x5f')](_0xccbe('0x50'),auth['isAuthenticated'](),controller[_0xccbe('0x65')]);router['delete'](_0xccbe('0x52'),auth['isAuthenticated'](),controller[_0xccbe('0x66')]);router[_0xccbe('0x5f')]('/:id/fax_accounts',auth[_0xccbe('0xa')](),controller['removeFaxAccounts']);router[_0xccbe('0x5f')](_0xccbe('0x67'),auth['isAuthenticated'](),controller['removeMailAccounts']);router[_0xccbe('0x5f')](_0xccbe('0x2b'),auth[_0xccbe('0xa')](),controller[_0xccbe('0x68')]);router['delete'](_0xccbe('0x2c'),auth[_0xccbe('0xa')](),controller[_0xccbe('0x69')]);router[_0xccbe('0x5f')]('/:id/chat_websites',auth[_0xccbe('0xa')](),controller[_0xccbe('0x6a')]);router['delete']('/:id/whatsapp_accounts',auth['isAuthenticated'](),controller[_0xccbe('0x6b')]);router[_0xccbe('0x5f')]('/:id/square_projects',auth[_0xccbe('0xa')](),controller['removeSquareProjects']);router['delete'](_0xccbe('0x34'),auth[_0xccbe('0xa')](),controller['removeApiKey']);module['exports']=router;
\ No newline at end of file
+var _0x5530=['/:id/square_projects','getSquareProjects','/:id/scheduled_calls','getScheduledCalls','/:id/api_key','getApiKey','post','/:id/contacts','create','/create_many','bulkCreate','diskStorage','join','root','server/files/images/','now','originalname','single','file','addAvatar','login','/:id/logout','logout','pause','/:id/unpause','unpause','addTeams','/:id/chat_interactions','/:id/mail_interactions','addMailInteractions','/:id/fax_interactions','addFaxInteractions','/:id/sms_interactions','addSmsInteractions','/:id/openchannel_interactions','addOpenchannelInteractions','/:id/whatsapp_interactions','addFaxAccounts','addMailAccounts','addOpenchannelAccounts','addSmsAccounts','/:id/chat_websites','addChatWebsites','addWhatsappAccounts','addSquareProjects','put','update','changePassword','delete','removeTeams','destroy','removeChatInteractions','removeMailInteractions','removeSmsInteractions','removeOpenchannelInteractions','removeOpenchannelAccounts','removeSmsAccounts','removeChatWebsites','removeWhatsappAccounts','removeSquareProjects','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','/describe','describe','get','/whoami','whoami','/presence','getPresence','/:id','show','/:id/avatar','/:id/open_tabs','getOpenTabs','getContacts','/:id/queues','/:id/queues_rt','getVoiceQueuesRt','/:id/groups','/:id/recordings','getRecordings','/:id/screen_recordings','getScreenRecordings','/:id/chat/interactions','getChatInteractions','getOpenchannelInteractions','/:id/mail/interactions','/:id/sms/interactions','getSmsInteractions','/:id/fax/interactions','/:id/whatsapp/interactions','getWhatsappInteractions','/:id/teams','getTeams','/:id/lists','getLists','/:id/agents','getAgents','/:id/prefixes','getVoicePrefixes','/:id/fax_accounts','getFaxAccounts','/:id/mail_accounts','getMailAccounts','/:id/sms_accounts','getChatWebsites','/:id/whatsapp_accounts','getWhatsappAccounts'];(function(_0x13549a,_0x1ae1aa){var _0x49b032=function(_0x2a6390){while(--_0x2a6390){_0x13549a['push'](_0x13549a['shift']());}};_0x49b032(++_0x1ae1aa);}(_0x5530,0xb4));var _0x0553=function(_0x1f91ba,_0x10b8e7){_0x1f91ba=_0x1f91ba-0x0;var _0x32d93f=_0x5530[_0x1f91ba];return _0x32d93f;};'use strict';var multer=require(_0x0553('0x0'));var util=require(_0x0553('0x1'));var path=require(_0x0553('0x2'));var timeout=require(_0x0553('0x3'));var express=require(_0x0553('0x4'));var router=express[_0x0553('0x5')]();var fs_extra=require(_0x0553('0x6'));var auth=require(_0x0553('0x7'));var interaction=require(_0x0553('0x8'));var config=require(_0x0553('0x9'));var controller=require('./user.controller');router['get']('/',auth[_0x0553('0xa')](),controller[_0x0553('0xb')]);router['get'](_0x0553('0xc'),auth['isAuthenticated'](),controller[_0x0553('0xd')]);router[_0x0553('0xe')](_0x0553('0xf'),auth[_0x0553('0xa')](),controller[_0x0553('0x10')]);router[_0x0553('0xe')](_0x0553('0x11'),auth[_0x0553('0xa')](),controller[_0x0553('0x12')]);router[_0x0553('0xe')](_0x0553('0x13'),auth[_0x0553('0xa')](),controller[_0x0553('0x14')]);router['get'](_0x0553('0x15'),controller['getAvatar']);router[_0x0553('0xe')](_0x0553('0x16'),auth[_0x0553('0xa')](),controller[_0x0553('0x17')]);router[_0x0553('0xe')]('/:id/contacts',auth[_0x0553('0xa')](),controller[_0x0553('0x18')]);router[_0x0553('0xe')](_0x0553('0x19'),auth['isAuthenticated'](),controller['getQueues']);router['get'](_0x0553('0x1a'),auth[_0x0553('0xa')](),controller[_0x0553('0x1b')]);router[_0x0553('0xe')](_0x0553('0x1c'),auth[_0x0553('0xa')](),controller['getGroups']);router[_0x0553('0xe')](_0x0553('0x1d'),auth[_0x0553('0xa')](),controller[_0x0553('0x1e')]);router[_0x0553('0xe')](_0x0553('0x1f'),auth[_0x0553('0xa')](),controller[_0x0553('0x20')]);router[_0x0553('0xe')](_0x0553('0x21'),auth[_0x0553('0xa')](),controller[_0x0553('0x22')]);router[_0x0553('0xe')]('/:id/openchannel/interactions',auth[_0x0553('0xa')](),controller[_0x0553('0x23')]);router[_0x0553('0xe')](_0x0553('0x24'),auth[_0x0553('0xa')](),controller['getMailInteractions']);router['get'](_0x0553('0x25'),auth['isAuthenticated'](),controller[_0x0553('0x26')]);router['get'](_0x0553('0x27'),auth[_0x0553('0xa')](),controller['getFaxInteractions']);router['get'](_0x0553('0x28'),auth[_0x0553('0xa')](),controller[_0x0553('0x29')]);router['get'](_0x0553('0x2a'),auth[_0x0553('0xa')](),controller[_0x0553('0x2b')]);router[_0x0553('0xe')](_0x0553('0x2c'),auth[_0x0553('0xa')](),controller[_0x0553('0x2d')]);router[_0x0553('0xe')](_0x0553('0x2e'),auth[_0x0553('0xa')](),controller[_0x0553('0x2f')]);router[_0x0553('0xe')](_0x0553('0x30'),auth['isAuthenticated'](),controller[_0x0553('0x31')]);router[_0x0553('0xe')](_0x0553('0x32'),auth[_0x0553('0xa')](),controller[_0x0553('0x33')]);router[_0x0553('0xe')](_0x0553('0x34'),auth[_0x0553('0xa')](),controller[_0x0553('0x35')]);router[_0x0553('0xe')]('/:id/openchannel_accounts',auth['isAuthenticated'](),controller['getOpenchannelAccounts']);router[_0x0553('0xe')](_0x0553('0x36'),auth['isAuthenticated'](),controller['getSmsAccounts']);router[_0x0553('0xe')]('/:id/chat_websites',auth[_0x0553('0xa')](),controller[_0x0553('0x37')]);router[_0x0553('0xe')](_0x0553('0x38'),auth['isAuthenticated'](),controller[_0x0553('0x39')]);router[_0x0553('0xe')](_0x0553('0x3a'),auth[_0x0553('0xa')](),controller[_0x0553('0x3b')]);router['get'](_0x0553('0x3c'),auth['isAuthenticated'](),controller[_0x0553('0x3d')]);router[_0x0553('0xe')](_0x0553('0x3e'),auth[_0x0553('0xa')](),controller[_0x0553('0x3f')]);router[_0x0553('0x40')](_0x0553('0x41'),auth[_0x0553('0xa')](),controller['addContacts']);router[_0x0553('0x40')]('/',auth[_0x0553('0xa')](),controller[_0x0553('0x42')]);router[_0x0553('0x40')](_0x0553('0x43'),auth['isAuthenticated'](),controller[_0x0553('0x44')]);router[_0x0553('0x40')](_0x0553('0x19'),auth[_0x0553('0xa')](),controller['addQueues']);var upload=multer({'storage':multer[_0x0553('0x45')]({'destination':function(_0x3bd4ba,_0xa079bb,_0x16dba1){_0x16dba1(null,path[_0x0553('0x46')](config[_0x0553('0x47')],_0x0553('0x48')));},'filename':function(_0x217c48,_0x3ce761,_0x3c09a1){_0x3c09a1(null,util['format']('%s-%s',Date[_0x0553('0x49')](),_0x3ce761[_0x0553('0x4a')]));}})});router['post'](_0x0553('0x15'),upload[_0x0553('0x4b')](_0x0553('0x4c')),controller[_0x0553('0x4d')]);router[_0x0553('0x40')]('/:id/login',auth[_0x0553('0xa')](),controller[_0x0553('0x4e')]);router[_0x0553('0x40')](_0x0553('0x4f'),auth[_0x0553('0xa')](),controller[_0x0553('0x50')]);router[_0x0553('0x40')]('/:id/pause',auth['isAuthenticated'](),controller[_0x0553('0x51')]);router['post'](_0x0553('0x52'),auth[_0x0553('0xa')](),controller[_0x0553('0x53')]);router[_0x0553('0x40')](_0x0553('0x2a'),auth[_0x0553('0xa')](),controller[_0x0553('0x54')]);router['post'](_0x0553('0x55'),auth[_0x0553('0xa')](),controller['addChatInteractions']);router[_0x0553('0x40')](_0x0553('0x56'),auth[_0x0553('0xa')](),controller[_0x0553('0x57')]);router[_0x0553('0x40')](_0x0553('0x58'),auth['isAuthenticated'](),controller[_0x0553('0x59')]);router[_0x0553('0x40')](_0x0553('0x5a'),auth[_0x0553('0xa')](),controller[_0x0553('0x5b')]);router[_0x0553('0x40')](_0x0553('0x5c'),auth[_0x0553('0xa')](),controller[_0x0553('0x5d')]);router[_0x0553('0x40')](_0x0553('0x5e'),auth[_0x0553('0xa')](),controller['addWhatsappInteractions']);router['post']('/:id/fax_accounts',auth[_0x0553('0xa')](),controller[_0x0553('0x5f')]);router[_0x0553('0x40')]('/:id/mail_accounts',auth[_0x0553('0xa')](),controller[_0x0553('0x60')]);router[_0x0553('0x40')]('/:id/openchannel_accounts',auth[_0x0553('0xa')](),controller[_0x0553('0x61')]);router[_0x0553('0x40')]('/:id/sms_accounts',auth[_0x0553('0xa')](),controller[_0x0553('0x62')]);router['post'](_0x0553('0x63'),auth['isAuthenticated'](),controller[_0x0553('0x64')]);router[_0x0553('0x40')](_0x0553('0x38'),auth['isAuthenticated'](),controller[_0x0553('0x65')]);router[_0x0553('0x40')](_0x0553('0x3a'),auth[_0x0553('0xa')](),controller[_0x0553('0x66')]);router[_0x0553('0x40')](_0x0553('0x3e'),auth[_0x0553('0xa')](),controller['createApiKey']);router[_0x0553('0x67')]('/:id',auth[_0x0553('0xa')](),controller[_0x0553('0x68')]);router['put']('/:id/password',auth[_0x0553('0xa')](),controller[_0x0553('0x69')]);router['delete'](_0x0553('0x19'),auth[_0x0553('0xa')](),controller['removeQueues']);router[_0x0553('0x6a')]('/:id/teams',auth['isAuthenticated'](),controller[_0x0553('0x6b')]);router[_0x0553('0x6a')](_0x0553('0x13'),auth['isAuthenticated'](),controller[_0x0553('0x6c')]);router[_0x0553('0x6a')](_0x0553('0x55'),auth[_0x0553('0xa')](),controller[_0x0553('0x6d')]);router['delete']('/:id/mail_interactions',auth[_0x0553('0xa')](),controller[_0x0553('0x6e')]);router[_0x0553('0x6a')](_0x0553('0x58'),auth['isAuthenticated'](),controller['removeFaxInteractions']);router['delete'](_0x0553('0x5a'),auth[_0x0553('0xa')](),controller[_0x0553('0x6f')]);router[_0x0553('0x6a')](_0x0553('0x5c'),auth[_0x0553('0xa')](),controller[_0x0553('0x70')]);router[_0x0553('0x6a')](_0x0553('0x5e'),auth[_0x0553('0xa')](),controller['removeWhatsappInteractions']);router[_0x0553('0x6a')]('/:id/fax_accounts',auth[_0x0553('0xa')](),controller['removeFaxAccounts']);router[_0x0553('0x6a')](_0x0553('0x34'),auth[_0x0553('0xa')](),controller['removeMailAccounts']);router['delete']('/:id/openchannel_accounts',auth[_0x0553('0xa')](),controller[_0x0553('0x71')]);router[_0x0553('0x6a')](_0x0553('0x36'),auth[_0x0553('0xa')](),controller[_0x0553('0x72')]);router[_0x0553('0x6a')](_0x0553('0x63'),auth[_0x0553('0xa')](),controller[_0x0553('0x73')]);router['delete'](_0x0553('0x38'),auth['isAuthenticated'](),controller[_0x0553('0x74')]);router[_0x0553('0x6a')](_0x0553('0x3a'),auth[_0x0553('0xa')](),controller[_0x0553('0x75')]);router['delete'](_0x0553('0x3e'),auth[_0x0553('0xa')](),controller['removeApiKey']);module[_0x0553('0x76')]=router;
\ No newline at end of file
index a5156c0..4f4ae89 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee2c=['setDataValue','name','defaultuser','The\x20name\x20of\x20the\x20user','callerid','format','\x22%s\x22\x20<%s>','getDataValue','internal','email','toLowerCase','ENUM','admin','agent','local','INTEGER','accountcode','fullname','BOOLEAN','DATE','DEFAULT\x20PAUSE','dynamic','friend','user','from-sip','ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN','ALLOWED','PROHIB_NOT_SCREENED','PROHIB','udp','transport','join','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','rfc2833','info','inband','auto','yes','nonat','outgoing','nat','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','ulaw;alaw;gsm','allow','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22gsm\x22]','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','never','\x22\x22\x20<>','always','refuse','originate','uac','uas','fingerprint','certificate','active','passive','actpass','update','update,nonat','TEXT','showWebBar','isArray','wss','avpf','force_avp','dtlsenable','dtlsverify','dtlssetup','dtlscertfile','dtlsprivatekey','rtcp_mux','icesupport','/etc/pki/tls/private/motion.key','permissions','VIRTUAL','phoneBarEnableScreenRecordingByAgent','string','true','false','screenrecording','blocked','blockedAt','UNSIGNED','sequelize','util','lodash','exports','STRING'];(function(_0x559443,_0x4eb8b6){var _0x246c41=function(_0x2e5eb2){while(--_0x2e5eb2){_0x559443['push'](_0x559443['shift']());}};_0x246c41(++_0x4eb8b6);}(_0xee2c,0x1c7));var _0xcee2=function(_0x341e0f,_0x4a09d0){_0x341e0f=_0x341e0f-0x0;var _0x59555a=_0xee2c[_0x341e0f];return _0x59555a;};'use strict';var Sequelize=require(_0xcee2('0x0'));var moment=require('moment');var util=require(_0xcee2('0x1'));var _=require(_0xcee2('0x2'));module[_0xcee2('0x3')]={'name':{'type':Sequelize[_0xcee2('0x4')],'allowNull':![],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i},'set':function(_0x589e9d){this[_0xcee2('0x5')](_0xcee2('0x6'),_0x589e9d);this['setDataValue'](_0xcee2('0x7'),_0x589e9d);},'comment':_0xcee2('0x8')},'fullname':{'type':Sequelize[_0xcee2('0x4')],'allowNull':![],'set':function(_0x3d7611){this[_0xcee2('0x5')]('fullname',_0x3d7611);this['setDataValue'](_0xcee2('0x9'),util[_0xcee2('0xa')](_0xcee2('0xb'),_0x3d7611,this[_0xcee2('0xc')](_0xcee2('0xd'))));}},'alias':{'type':Sequelize[_0xcee2('0x4')]},'email':{'type':Sequelize[_0xcee2('0x4')],'allowNull':![],'unique':_0xcee2('0xe'),'validate':{'isEmail':!![]},'set':function(_0x4ded22){if(_0x4ded22){this[_0xcee2('0x5')](_0xcee2('0xe'),_0x4ded22[_0xcee2('0xf')]());}}},'role':{'type':Sequelize[_0xcee2('0x10')](_0xcee2('0x11'),'user',_0xcee2('0x12'),'telephone'),'allowNull':![]},'password':{'type':Sequelize['STRING'],'allowNull':![],'validate':{'notEmpty':!![]}},'provider':{'type':Sequelize['STRING'],'defaultValue':_0xcee2('0x13')},'internal':{'type':Sequelize[_0xcee2('0x14')](0xb),'allowNull':![],'unique':_0xcee2('0xd'),'set':function(_0x347a97){this['setDataValue'](_0xcee2('0xd'),_0x347a97);this[_0xcee2('0x5')](_0xcee2('0x15'),_0x347a97);this[_0xcee2('0x5')](_0xcee2('0x9'),util[_0xcee2('0xa')](_0xcee2('0xb'),this[_0xcee2('0xc')](_0xcee2('0x16')),_0x347a97));}},'salt':{'type':Sequelize['STRING']},'phone':{'type':Sequelize[_0xcee2('0x4')]},'mobile':{'type':Sequelize['STRING']},'address':{'type':Sequelize[_0xcee2('0x4')]},'zipcode':{'type':Sequelize[_0xcee2('0x4')]},'userpic':{'type':Sequelize[_0xcee2('0x4')]},'city':{'type':Sequelize[_0xcee2('0x4')]},'country':{'type':Sequelize['STRING']},'online':{'type':Sequelize[_0xcee2('0x17')],'defaultValue':![]},'lastLoginAt':{'type':Sequelize[_0xcee2('0x18')]},'voicePause':{'type':Sequelize[_0xcee2('0x17')],'defaultValue':![]},'chatPause':{'type':Sequelize[_0xcee2('0x17')],'defaultValue':![]},'mailPause':{'type':Sequelize[_0xcee2('0x17')],'defaultValue':![]},'faxPause':{'type':Sequelize[_0xcee2('0x17')],'defaultValue':![]},'smsPause':{'type':Sequelize[_0xcee2('0x17')],'defaultValue':![]},'whatsappPause':{'type':Sequelize[_0xcee2('0x17')],'defaultValue':![]},'openchannelPause':{'type':Sequelize[_0xcee2('0x17')],'defaultValue':![]},'pauseType':{'type':Sequelize[_0xcee2('0x4')],'defaultValue':_0xcee2('0x19')},'lastPauseAt':{'type':Sequelize['DATE']},'chatCapacity':{'type':Sequelize[_0xcee2('0x14')],'defaultValue':0x0},'mailCapacity':{'type':Sequelize[_0xcee2('0x14')],'defaultValue':0x0},'faxCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'smsCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'whatsappCapacity':{'type':Sequelize[_0xcee2('0x14')],'defaultValue':0x0},'openchannelCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'phoneBarAutoAnswer':{'type':Sequelize[_0xcee2('0x17')],'defaultValue':![]},'phoneBarEnableSettings':{'type':Sequelize[_0xcee2('0x17')],'defaultValue':!![]},'phoneBarListenPort':{'type':Sequelize[_0xcee2('0x14')](0x5),'defaultValue':0x1428},'phoneBarExpires':{'type':Sequelize['INTEGER'](0x5),'defaultValue':0x78},'phoneBarRemoteControl':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarRemoteControlPort':{'type':Sequelize[_0xcee2('0x14')],'defaultValue':0x26a0},'phoneBarEnableRecording':{'type':Sequelize[_0xcee2('0x17')],'defaultValue':![]},'phoneBarRingInUse':{'type':Sequelize[_0xcee2('0x17')],'defaultValue':![]},'chanspy':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'description':{'type':Sequelize[_0xcee2('0x4')],'allowNull':!![]},'host':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0xcee2('0x1a')},'ipaddr':{'type':Sequelize[_0xcee2('0x4')],'allowNull':!![]},'port':{'type':Sequelize[_0xcee2('0x14')](0x5),'allowNull':!![]},'regseconds':{'type':Sequelize[_0xcee2('0x14')](0xb),'allowNull':!![]},'fullcontact':{'type':Sequelize[_0xcee2('0x4')],'allowNull':!![]},'regserver':{'type':Sequelize[_0xcee2('0x4')],'allowNull':!![]},'useragent':{'type':Sequelize[_0xcee2('0x4')],'allowNull':!![]},'lastms':{'type':Sequelize[_0xcee2('0x14')](0xb),'allowNull':!![]},'type':{'type':Sequelize[_0xcee2('0x10')](_0xcee2('0x1b'),_0xcee2('0x1c'),'peer'),'allowNull':!![],'defaultValue':_0xcee2('0x1b')},'context':{'type':Sequelize[_0xcee2('0x4')],'allowNull':!![],'defaultValue':_0xcee2('0x1d')},'callingpres':{'type':Sequelize['ENUM'](_0xcee2('0x1e'),_0xcee2('0x1f'),'ALLOWED_FAILED_SCREEN',_0xcee2('0x20'),_0xcee2('0x21'),'PROHIB_PASSED_SCREEN','PROHIB_FAILED_SCREEN',_0xcee2('0x22')),'allowNull':!![]},'deny':{'type':Sequelize['STRING'],'allowNull':!![]},'permit':{'type':Sequelize['STRING'],'allowNull':!![]},'secret':{'type':Sequelize[_0xcee2('0x4')],'allowNull':!![]},'md5secret':{'type':Sequelize[_0xcee2('0x4')],'allowNull':!![]},'remotesecret':{'type':Sequelize['STRING'],'allowNull':!![]},'transport':{'type':Sequelize[_0xcee2('0x4')],'allowNull':!![],'defaultValue':_0xcee2('0x23'),'set':function(_0x21635f){this[_0xcee2('0x5')](_0xcee2('0x24'),_0x21635f?_0x21635f[_0xcee2('0x25')](','):null);},'get':function(){return this[_0xcee2('0xc')](_0xcee2('0x24'))?this[_0xcee2('0xc')](_0xcee2('0x24'))[_0xcee2('0x26')](','):null;},'comment':_0xcee2('0x27')},'dtmfmode':{'type':Sequelize['ENUM'](_0xcee2('0x28'),_0xcee2('0x29'),'shortinfo',_0xcee2('0x2a'),_0xcee2('0x2b')),'allowNull':!![],'defaultValue':'rfc2833'},'directmedia':{'type':Sequelize[_0xcee2('0x10')](_0xcee2('0x2c'),'no',_0xcee2('0x2d'),'update',_0xcee2('0x2e')),'allowNull':!![],'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0xcee2('0x10')](_0xcee2('0x2c'),'no'),'allowNull':!![],'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0xcee2('0x4')],'allowNull':!![]},'directmediadeny':{'type':Sequelize[_0xcee2('0x4')],'allowNull':!![]},'nat':{'type':Sequelize[_0xcee2('0x4')],'allowNull':!![],'defaultValue':'force_rport,comedia','set':function(_0x457f39){this[_0xcee2('0x5')](_0xcee2('0x2f'),_0x457f39?_0x457f39['join'](','):null);},'get':function(){return this[_0xcee2('0xc')]('nat')?this['getDataValue'](_0xcee2('0x2f'))[_0xcee2('0x26')](','):null;},'comment':_0xcee2('0x30')},'callgroup':{'type':Sequelize[_0xcee2('0x4')]},'namedcallgroup':{'type':Sequelize[_0xcee2('0x4')]},'pickupgroup':{'type':Sequelize[_0xcee2('0x4')]},'namedpickupgroup':{'type':Sequelize['STRING']},'language':{'type':Sequelize['STRING'],'defaultValue':'en'},'tonezone':{'type':Sequelize['STRING']},'disallow':{'type':Sequelize[_0xcee2('0x4')],'allowNull':![],'defaultValue':'all'},'allow':{'type':Sequelize[_0xcee2('0x4')],'allowNull':![],'defaultValue':_0xcee2('0x31'),'set':function(_0x5ad17c){this[_0xcee2('0x5')]('allow',_0x5ad17c?_0x5ad17c['join'](';'):_0xcee2('0x31'));},'get':function(){return this[_0xcee2('0xc')]('allow')?this['getDataValue'](_0xcee2('0x32'))[_0xcee2('0x26')](';'):null;},'comment':_0xcee2('0x33')},'autoframing':{'type':Sequelize[_0xcee2('0x10')](_0xcee2('0x2c'),'no'),'allowNull':!![]},'insecure':{'type':Sequelize[_0xcee2('0x4')],'allowNull':!![],'set':function(_0x31824a){this[_0xcee2('0x5')](_0xcee2('0x34'),_0x31824a?_0x31824a['join'](','):null);},'get':function(){return this[_0xcee2('0xc')](_0xcee2('0x34'))?this[_0xcee2('0xc')](_0xcee2('0x34'))['split'](','):null;},'comment':_0xcee2('0x35')},'trustrpid':{'type':Sequelize[_0xcee2('0x10')](_0xcee2('0x2c'),'no'),'allowNull':!![],'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0xcee2('0x10')](_0xcee2('0x2c'),'no'),'allowNull':!![],'defaultValue':'no'},'progressinband':{'type':Sequelize[_0xcee2('0x10')](_0xcee2('0x2c'),'no',_0xcee2('0x36')),'allowNull':!![]},'promiscredir':{'type':Sequelize[_0xcee2('0x10')]('yes','no'),'allowNull':!![]},'useclientcode':{'type':Sequelize[_0xcee2('0x10')](_0xcee2('0x2c'),'no'),'allowNull':!![]},'accountcode':{'type':Sequelize[_0xcee2('0x14')](0xb),'allowNull':!![]},'setvar':{'type':Sequelize['STRING'],'allowNull':!![]},'callerid':{'type':Sequelize[_0xcee2('0x4')],'allowNull':!![],'defaultValue':_0xcee2('0x37')},'amaflags':{'type':Sequelize[_0xcee2('0x4')],'allowNull':!![]},'callcounter':{'type':Sequelize[_0xcee2('0x10')](_0xcee2('0x2c'),'no'),'allowNull':!![],'defaultValue':_0xcee2('0x2c')},'busylevel':{'type':Sequelize[_0xcee2('0x14')](0xb),'allowNull':!![]},'allowoverlap':{'type':Sequelize[_0xcee2('0x10')](_0xcee2('0x2c'),'no'),'allowNull':!![]},'allowsubscribe':{'type':Sequelize[_0xcee2('0x10')](_0xcee2('0x2c'),'no'),'allowNull':!![]},'allowtransfer':{'type':Sequelize[_0xcee2('0x10')](_0xcee2('0x2c'),'no'),'allowNull':!![]},'ignoresdpversion':{'type':Sequelize[_0xcee2('0x10')]('yes','no'),'allowNull':!![]},'subscribecontext':{'type':Sequelize[_0xcee2('0x4')],'allowNull':!![]},'template':{'type':Sequelize['STRING'],'allowNull':!![]},'videosupport':{'type':Sequelize['ENUM'](_0xcee2('0x2c'),'no',_0xcee2('0x38')),'allowNull':!![],'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0xcee2('0x14')](0xb),'allowNull':!![]},'rfc2833compensate':{'type':Sequelize[_0xcee2('0x10')](_0xcee2('0x2c'),'no'),'allowNull':!![]},'mailbox':{'type':Sequelize['STRING'],'allowNull':!![]},'session_timers':{'type':Sequelize[_0xcee2('0x10')]('accept',_0xcee2('0x39'),_0xcee2('0x3a')),'allowNull':!![]},'session_expires':{'type':Sequelize[_0xcee2('0x14')](0xb),'allowNull':!![]},'session_minse':{'type':Sequelize[_0xcee2('0x14')](0xb),'allowNull':!![]},'session_refresher':{'type':Sequelize[_0xcee2('0x10')](_0xcee2('0x3b'),_0xcee2('0x3c')),'allowNull':!![],'defaultValue':'uas'},'t38pt_usertpsource':{'type':Sequelize[_0xcee2('0x4')],'allowNull':!![]},'regexten':{'type':Sequelize[_0xcee2('0x4')],'allowNull':!![]},'fromdomain':{'type':Sequelize[_0xcee2('0x4')],'allowNull':!![]},'fromuser':{'type':Sequelize[_0xcee2('0x4')],'allowNull':!![]},'qualify':{'type':Sequelize[_0xcee2('0x10')](_0xcee2('0x2c'),'no'),'allowNull':!![],'defaultValue':_0xcee2('0x2c')},'keepalive':{'type':Sequelize[_0xcee2('0x14')](0xb),'allowNull':!![]},'defaultip':{'type':Sequelize[_0xcee2('0x4')],'allowNull':!![]},'defaultuser':{'type':Sequelize['STRING'],'allowNull':!![]},'rtptimeout':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'rtpholdtimeout':{'type':Sequelize[_0xcee2('0x14')](0xb),'allowNull':!![]},'rtpkeepalive':{'type':Sequelize[_0xcee2('0x14')](0xb),'allowNull':!![]},'sendrpid':{'type':Sequelize['ENUM'](_0xcee2('0x2c'),'no'),'allowNull':!![],'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0xcee2('0x4')],'allowNull':!![]},'callbackextension':{'type':Sequelize[_0xcee2('0x4')],'allowNull':!![]},'timert1':{'type':Sequelize[_0xcee2('0x14')](0xb),'allowNull':!![]},'timerb':{'type':Sequelize[_0xcee2('0x14')](0xb),'allowNull':!![]},'qualifyfreq':{'type':Sequelize[_0xcee2('0x14')](0xb),'allowNull':!![]},'contactpermit':{'type':Sequelize[_0xcee2('0x4')],'allowNull':!![]},'contactdeny':{'type':Sequelize['STRING'],'allowNull':!![]},'contactacl':{'type':Sequelize['STRING'],'allowNull':!![]},'unsolicited_mailbox':{'type':Sequelize['STRING'],'allowNull':!![]},'use_q850_reason':{'type':Sequelize[_0xcee2('0x4')],'allowNull':!![]},'maxforwards':{'type':Sequelize[_0xcee2('0x14')](0xb),'allowNull':!![]},'encryption':{'type':Sequelize[_0xcee2('0x10')]('yes','no'),'allowNull':!![],'defaultValue':'no'},'avpf':{'type':Sequelize[_0xcee2('0x10')](_0xcee2('0x2c'),'no'),'allowNull':!![]},'force_avp':{'type':Sequelize[_0xcee2('0x10')]('yes','no'),'allowNull':!![]},'icesupport':{'type':Sequelize[_0xcee2('0x10')](_0xcee2('0x2c'),'no'),'allowNull':!![]},'dtlsenable':{'type':Sequelize[_0xcee2('0x10')]('yes','no'),'allowNull':!![]},'dtlsverify':{'type':Sequelize[_0xcee2('0x10')](_0xcee2('0x2c'),'no',_0xcee2('0x3d'),_0xcee2('0x3e')),'allowNull':!![]},'dtlsrekey':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'dtlscertfile':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlsprivatekey':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlscipher':{'type':Sequelize[_0xcee2('0x4')],'allowNull':!![]},'dtlscafile':{'type':Sequelize[_0xcee2('0x4')],'allowNull':!![]},'dtlscapath':{'type':Sequelize[_0xcee2('0x4')],'allowNull':!![]},'dtlssetup':{'type':Sequelize[_0xcee2('0x10')](_0xcee2('0x3f'),_0xcee2('0x40'),_0xcee2('0x41')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0xcee2('0x4')],'allowNull':!![]},'usereqphone':{'type':Sequelize[_0xcee2('0x10')](_0xcee2('0x2c'),'no'),'allowNull':!![],'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0xcee2('0x4')],'allowNull':!![]},'recordofffeature':{'type':Sequelize['STRING'],'allowNull':!![]},'call_limit':{'type':Sequelize[_0xcee2('0x14')](0xb),'allowNull':!![],'defaultValue':0xa},'registertrying':{'type':Sequelize[_0xcee2('0x10')](_0xcee2('0x2c'),'no'),'allowNull':!![]},'subscribemwi':{'type':Sequelize[_0xcee2('0x10')](_0xcee2('0x2c'),'no'),'allowNull':!![]},'vmexten':{'type':Sequelize[_0xcee2('0x4')],'allowNull':!![]},'mohinterpret':{'type':Sequelize[_0xcee2('0x4')],'allowNull':!![]},'mohsuggest':{'type':Sequelize[_0xcee2('0x4')],'allowNull':!![]},'parkinglot':{'type':Sequelize['STRING'],'allowNull':!![]},'canreinvite':{'type':Sequelize[_0xcee2('0x10')](_0xcee2('0x2c'),'no',_0xcee2('0x2d'),_0xcee2('0x42'),_0xcee2('0x43')),'allowNull':!![],'defaultValue':'no'},'loginInPause':{'type':Sequelize[_0xcee2('0x17')],'defaultValue':![]},'resetPasswordToken':{'type':Sequelize[_0xcee2('0x4')]},'resetPasswordExpires':{'type':Sequelize[_0xcee2('0x18')]},'passwordResetAt':{'type':Sequelize[_0xcee2('0x18')],'defaultValue':null},'previousPasswords':{'type':Sequelize[_0xcee2('0x44')]},'showWebBar':{'type':Sequelize['INTEGER'],'defaultValue':0x0,'set':function(_0x4eedba){this[_0xcee2('0x5')](_0xcee2('0x45'),_0x4eedba);var _0xde163f=this['get']({'plain':!![]});switch(_0x4eedba){case 0x0:case 0x1:var _0x5089e1=_0xde163f['transport']?_[_0xcee2('0x46')](_0xde163f['transport'])?_0xde163f['transport'][_0xcee2('0x25')]():_0xde163f['transport']:_0xcee2('0x23');if(_0x5089e1===_0xcee2('0x47')){_0x5089e1='udp';}this[_0xcee2('0x5')](_0xcee2('0x24'),_0x5089e1);this['setDataValue']('encryption','no');this[_0xcee2('0x5')](_0xcee2('0x48'),null);this[_0xcee2('0x5')](_0xcee2('0x49'),null);this[_0xcee2('0x5')]('icesupport',null);this[_0xcee2('0x5')](_0xcee2('0x4a'),null);this[_0xcee2('0x5')](_0xcee2('0x4b'),null);this[_0xcee2('0x5')](_0xcee2('0x4c'),null);this[_0xcee2('0x5')](_0xcee2('0x4d'),null);this[_0xcee2('0x5')](_0xcee2('0x4e'),null);this[_0xcee2('0x5')](_0xcee2('0x4f'),'no');break;case 0x2:this['setDataValue'](_0xcee2('0x24'),_0xcee2('0x47'));this[_0xcee2('0x5')]('encryption','yes');this[_0xcee2('0x5')](_0xcee2('0x48'),_0xcee2('0x2c'));this[_0xcee2('0x5')]('force_avp','yes');this[_0xcee2('0x5')](_0xcee2('0x50'),_0xcee2('0x2c'));this[_0xcee2('0x5')](_0xcee2('0x4a'),'yes');this['setDataValue'](_0xcee2('0x4b'),'no');this[_0xcee2('0x5')](_0xcee2('0x4c'),_0xcee2('0x41'));this[_0xcee2('0x5')]('dtlscertfile',_0xde163f[_0xcee2('0x4d')]||'/etc/pki/tls/certs/motion.crt');this[_0xcee2('0x5')](_0xcee2('0x4e'),_0xde163f[_0xcee2('0x4e')]||_0xcee2('0x51'));this['setDataValue'](_0xcee2('0x4f'),'yes');break;default:}}},'permissions':{'type':Sequelize['TEXT'],'set':function(_0x30a033){this[_0xcee2('0x5')](_0xcee2('0x52'),_0x30a033?_0x30a033[_0xcee2('0x25')](','):[]);},'get':function(){return this['getDataValue'](_0xcee2('0x52'))?_['map'](this['getDataValue'](_0xcee2('0x52'))[_0xcee2('0x26')](','),function(_0x14c95d){return parseInt(_0x14c95d,0xa);}):[];}},'phoneBarUnconditionalNumber':{'type':Sequelize['STRING']},'phoneBarNoReplyNumber':{'type':Sequelize[_0xcee2('0x4')]},'phoneBarBusyNumber':{'type':Sequelize['STRING']},'phoneBarUnconditional':{'type':Sequelize[_0xcee2('0x17')],'defaultValue':![]},'phoneBarNoReply':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarBusy':{'type':Sequelize[_0xcee2('0x17')],'defaultValue':![]},'phoneBarDnd':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'phoneBarUnansweredCallBadge':{'type':Sequelize[_0xcee2('0x17')],'defaultValue':!![]},'phoneBarEnableDtmfTone':{'type':Sequelize[_0xcee2('0x17')],'defaultValue':![]},'phoneBarAutoAnswerDelay':{'type':Sequelize[_0xcee2('0x14')],'defaultValue':0x0},'extensionMonitor':{'type':Sequelize[_0xcee2('0x4')],'defaultValue':''},'crudPermissions':{'type':Sequelize[_0xcee2('0x14')],'defaultValue':0x0},'rtcp_mux':{'type':Sequelize[_0xcee2('0x10')](_0xcee2('0x2c'),'no'),'defaultValue':'no'},'allowmessenger':{'type':Sequelize[_0xcee2('0x17')],'defaultValue':!![]},'phoneBarOutboundProxy':{'type':Sequelize[_0xcee2('0x4')]},'phoneBarEnableJaws':{'type':Sequelize[_0xcee2('0x17')],'defaultValue':![]},'phoneBarEnableScreenRecordingByAgent':{'type':Sequelize[_0xcee2('0x17')],'defaultValue':![]},'phoneBarEnableVideoRecording':{'type':Sequelize[_0xcee2('0x53')],'get':function(){return this[_0xcee2('0xc')](_0xcee2('0x54'))?this[_0xcee2('0xc')](_0xcee2('0x54')):![];}},'phoneBarEnableAutomaticScreenRecording':{'type':Sequelize[_0xcee2('0x17')],'defaultValue':![]},'phoneBarPrefixRequired':{'type':Sequelize[_0xcee2('0x17')],'defaultValue':![]},'hotdesk':{'type':Sequelize[_0xcee2('0x17')],'defaultValue':![]},'interface':{'type':Sequelize['STRING'],'defaultValue':null},'privacyEnabled':{'type':Sequelize[_0xcee2('0x17')],'defaultValue':![]},'apiKeyNonce':{'type':Sequelize[_0xcee2('0x4')],'allowNull':!![]},'apiKeyIat':{'type':Sequelize['STRING'],'allowNull':!![]},'screenrecording':{'type':Sequelize[_0xcee2('0x17')],'defaultValue':![],'set':function(_0x40557b){if(typeof _0x40557b===_0xcee2('0x55')){var _0x158580=_0x40557b==='1'?!![]:_0x40557b==='0'?![]:_0x40557b===_0xcee2('0x56')?!![]:_0x40557b===_0xcee2('0x57')?![]:![];this[_0xcee2('0x5')](_0xcee2('0x58'),_0x158580);}else{this[_0xcee2('0x5')](_0xcee2('0x58'),_0x40557b);}}},'blocked':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'set':function(_0x1d40b7){this['setDataValue'](_0xcee2('0x59'),_0x1d40b7);if(_0x1d40b7===!![]){this[_0xcee2('0x5')](_0xcee2('0x5a'),moment());this[_0xcee2('0x5')]('loginAttempts',0x0);}else{this['setDataValue'](_0xcee2('0x5a'),null);}}},'blockedAt':{'type':Sequelize['DATE'],'defaultValue':null},'loginAttempts':{'type':Sequelize[_0xcee2('0x14')],'defaultValue':0x0},'disabled':{'type':Sequelize[_0xcee2('0x17')],'defaultValue':![]},'settingsEnabled':{'type':Sequelize[_0xcee2('0x17')],'defaultValue':!![]},'wssPort':{'type':Sequelize[_0xcee2('0x14')](0x5)[_0xcee2('0x5b')],'defaultValue':0x1f99},'downloadAttachments':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0xcee2('0x17')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x45ea=['update','outgoing','force_rport,comedia','nat','all','ulaw;alaw;gsm','allow','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22gsm\x22]','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','never','\x22\x22\x20<>','accept','refuse','originate','uas','fingerprint','certificate','active','actpass','update,nonat','showWebBar','get','wss','udp','avpf','icesupport','dtlsenable','dtlsverify','dtlssetup','dtlscertfile','dtlsprivatekey','rtcp_mux','encryption','/etc/pki/tls/certs/motion.crt','TEXT','permissions','phoneBarEnableScreenRecordingByAgent','string','true','false','screenrecording','blocked','blockedAt','loginAttempts','UNSIGNED','sequelize','moment','util','lodash','exports','STRING','name','setDataValue','The\x20name\x20of\x20the\x20user','callerid','format','\x22%s\x22\x20<%s>','getDataValue','email','toLowerCase','admin','user','local','accountcode','fullname','BOOLEAN','DATE','DEFAULT\x20PAUSE','INTEGER','ENUM','friend','peer','from-sip','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_NOT_SCREENED','PROHIB_FAILED_SCREEN','PROHIB','join','transport','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','rfc2833','info','shortinfo','inband','auto','yes','nonat'];(function(_0x1336fb,_0x1bdb89){var _0x54acf8=function(_0x41bf54){while(--_0x41bf54){_0x1336fb['push'](_0x1336fb['shift']());}};_0x54acf8(++_0x1bdb89);}(_0x45ea,0x1f0));var _0xa45e=function(_0x136b9c,_0x3dbea1){_0x136b9c=_0x136b9c-0x0;var _0x133fae=_0x45ea[_0x136b9c];return _0x133fae;};'use strict';var Sequelize=require(_0xa45e('0x0'));var moment=require(_0xa45e('0x1'));var util=require(_0xa45e('0x2'));var _=require(_0xa45e('0x3'));module[_0xa45e('0x4')]={'name':{'type':Sequelize[_0xa45e('0x5')],'allowNull':![],'unique':_0xa45e('0x6'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i},'set':function(_0x3dc05b){this[_0xa45e('0x7')](_0xa45e('0x6'),_0x3dc05b);this[_0xa45e('0x7')]('defaultuser',_0x3dc05b);},'comment':_0xa45e('0x8')},'fullname':{'type':Sequelize[_0xa45e('0x5')],'allowNull':![],'set':function(_0x573ff8){this['setDataValue']('fullname',_0x573ff8);this[_0xa45e('0x7')](_0xa45e('0x9'),util[_0xa45e('0xa')](_0xa45e('0xb'),_0x573ff8,this[_0xa45e('0xc')]('internal')));}},'alias':{'type':Sequelize['STRING']},'email':{'type':Sequelize[_0xa45e('0x5')],'allowNull':![],'unique':_0xa45e('0xd'),'validate':{'isEmail':!![]},'set':function(_0x17788b){if(_0x17788b){this[_0xa45e('0x7')]('email',_0x17788b[_0xa45e('0xe')]());}}},'role':{'type':Sequelize['ENUM'](_0xa45e('0xf'),_0xa45e('0x10'),'agent','telephone'),'allowNull':![]},'password':{'type':Sequelize[_0xa45e('0x5')],'allowNull':![],'validate':{'notEmpty':!![]}},'provider':{'type':Sequelize['STRING'],'defaultValue':_0xa45e('0x11')},'internal':{'type':Sequelize['INTEGER'](0xb),'allowNull':![],'unique':'internal','set':function(_0x4f36f8){this[_0xa45e('0x7')]('internal',_0x4f36f8);this[_0xa45e('0x7')](_0xa45e('0x12'),_0x4f36f8);this[_0xa45e('0x7')](_0xa45e('0x9'),util[_0xa45e('0xa')]('\x22%s\x22\x20<%s>',this[_0xa45e('0xc')](_0xa45e('0x13')),_0x4f36f8));}},'salt':{'type':Sequelize[_0xa45e('0x5')]},'phone':{'type':Sequelize[_0xa45e('0x5')]},'mobile':{'type':Sequelize[_0xa45e('0x5')]},'address':{'type':Sequelize['STRING']},'zipcode':{'type':Sequelize[_0xa45e('0x5')]},'userpic':{'type':Sequelize[_0xa45e('0x5')]},'city':{'type':Sequelize[_0xa45e('0x5')]},'country':{'type':Sequelize[_0xa45e('0x5')]},'online':{'type':Sequelize[_0xa45e('0x14')],'defaultValue':![]},'lastLoginAt':{'type':Sequelize[_0xa45e('0x15')]},'voicePause':{'type':Sequelize[_0xa45e('0x14')],'defaultValue':![]},'chatPause':{'type':Sequelize[_0xa45e('0x14')],'defaultValue':![]},'mailPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'faxPause':{'type':Sequelize[_0xa45e('0x14')],'defaultValue':![]},'smsPause':{'type':Sequelize[_0xa45e('0x14')],'defaultValue':![]},'whatsappPause':{'type':Sequelize[_0xa45e('0x14')],'defaultValue':![]},'openchannelPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'pauseType':{'type':Sequelize['STRING'],'defaultValue':_0xa45e('0x16')},'lastPauseAt':{'type':Sequelize['DATE']},'chatCapacity':{'type':Sequelize[_0xa45e('0x17')],'defaultValue':0x0},'mailCapacity':{'type':Sequelize[_0xa45e('0x17')],'defaultValue':0x0},'faxCapacity':{'type':Sequelize[_0xa45e('0x17')],'defaultValue':0x0},'smsCapacity':{'type':Sequelize[_0xa45e('0x17')],'defaultValue':0x0},'whatsappCapacity':{'type':Sequelize[_0xa45e('0x17')],'defaultValue':0x0},'openchannelCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'phoneBarAutoAnswer':{'type':Sequelize[_0xa45e('0x14')],'defaultValue':![]},'phoneBarEnableSettings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'phoneBarListenPort':{'type':Sequelize[_0xa45e('0x17')](0x5),'defaultValue':0x1428},'phoneBarExpires':{'type':Sequelize[_0xa45e('0x17')](0x5),'defaultValue':0x78},'phoneBarRemoteControl':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarRemoteControlPort':{'type':Sequelize['INTEGER'],'defaultValue':0x26a0},'phoneBarEnableRecording':{'type':Sequelize[_0xa45e('0x14')],'defaultValue':![]},'phoneBarRingInUse':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'chanspy':{'type':Sequelize[_0xa45e('0x14')],'defaultValue':![]},'description':{'type':Sequelize[_0xa45e('0x5')],'allowNull':!![]},'host':{'type':Sequelize[_0xa45e('0x5')],'allowNull':!![],'defaultValue':'dynamic'},'ipaddr':{'type':Sequelize['STRING'],'allowNull':!![]},'port':{'type':Sequelize[_0xa45e('0x17')](0x5),'allowNull':!![]},'regseconds':{'type':Sequelize[_0xa45e('0x17')](0xb),'allowNull':!![]},'fullcontact':{'type':Sequelize[_0xa45e('0x5')],'allowNull':!![]},'regserver':{'type':Sequelize[_0xa45e('0x5')],'allowNull':!![]},'useragent':{'type':Sequelize[_0xa45e('0x5')],'allowNull':!![]},'lastms':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'type':{'type':Sequelize[_0xa45e('0x18')](_0xa45e('0x19'),'user',_0xa45e('0x1a')),'allowNull':!![],'defaultValue':'friend'},'context':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0xa45e('0x1b')},'callingpres':{'type':Sequelize[_0xa45e('0x18')]('ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN',_0xa45e('0x1c'),_0xa45e('0x1d'),_0xa45e('0x1e'),'PROHIB_PASSED_SCREEN',_0xa45e('0x1f'),_0xa45e('0x20')),'allowNull':!![]},'deny':{'type':Sequelize[_0xa45e('0x5')],'allowNull':!![]},'permit':{'type':Sequelize[_0xa45e('0x5')],'allowNull':!![]},'secret':{'type':Sequelize['STRING'],'allowNull':!![]},'md5secret':{'type':Sequelize[_0xa45e('0x5')],'allowNull':!![]},'remotesecret':{'type':Sequelize[_0xa45e('0x5')],'allowNull':!![]},'transport':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':'udp','set':function(_0x1d23a){this[_0xa45e('0x7')]('transport',_0x1d23a?_0x1d23a[_0xa45e('0x21')](','):null);},'get':function(){return this[_0xa45e('0xc')](_0xa45e('0x22'))?this['getDataValue'](_0xa45e('0x22'))[_0xa45e('0x23')](','):null;},'comment':_0xa45e('0x24')},'dtmfmode':{'type':Sequelize['ENUM'](_0xa45e('0x25'),_0xa45e('0x26'),_0xa45e('0x27'),_0xa45e('0x28'),_0xa45e('0x29')),'allowNull':!![],'defaultValue':_0xa45e('0x25')},'directmedia':{'type':Sequelize[_0xa45e('0x18')](_0xa45e('0x2a'),'no',_0xa45e('0x2b'),_0xa45e('0x2c'),_0xa45e('0x2d')),'allowNull':!![],'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0xa45e('0x18')](_0xa45e('0x2a'),'no'),'allowNull':!![],'defaultValue':'no'},'directmediapermit':{'type':Sequelize['STRING'],'allowNull':!![]},'directmediadeny':{'type':Sequelize['STRING'],'allowNull':!![]},'nat':{'type':Sequelize[_0xa45e('0x5')],'allowNull':!![],'defaultValue':_0xa45e('0x2e'),'set':function(_0x2ddd8d){this[_0xa45e('0x7')](_0xa45e('0x2f'),_0x2ddd8d?_0x2ddd8d[_0xa45e('0x21')](','):null);},'get':function(){return this['getDataValue'](_0xa45e('0x2f'))?this[_0xa45e('0xc')]('nat')[_0xa45e('0x23')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]'},'callgroup':{'type':Sequelize[_0xa45e('0x5')]},'namedcallgroup':{'type':Sequelize['STRING']},'pickupgroup':{'type':Sequelize[_0xa45e('0x5')]},'namedpickupgroup':{'type':Sequelize[_0xa45e('0x5')]},'language':{'type':Sequelize[_0xa45e('0x5')],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0xa45e('0x5')]},'disallow':{'type':Sequelize[_0xa45e('0x5')],'allowNull':![],'defaultValue':_0xa45e('0x30')},'allow':{'type':Sequelize[_0xa45e('0x5')],'allowNull':![],'defaultValue':_0xa45e('0x31'),'set':function(_0x416da0){this[_0xa45e('0x7')](_0xa45e('0x32'),_0x416da0?_0x416da0[_0xa45e('0x21')](';'):_0xa45e('0x31'));},'get':function(){return this[_0xa45e('0xc')](_0xa45e('0x32'))?this[_0xa45e('0xc')](_0xa45e('0x32'))[_0xa45e('0x23')](';'):null;},'comment':_0xa45e('0x33')},'autoframing':{'type':Sequelize[_0xa45e('0x18')](_0xa45e('0x2a'),'no'),'allowNull':!![]},'insecure':{'type':Sequelize[_0xa45e('0x5')],'allowNull':!![],'set':function(_0x3afc81){this[_0xa45e('0x7')]('insecure',_0x3afc81?_0x3afc81[_0xa45e('0x21')](','):null);},'get':function(){return this[_0xa45e('0xc')](_0xa45e('0x34'))?this['getDataValue'](_0xa45e('0x34'))['split'](','):null;},'comment':_0xa45e('0x35')},'trustrpid':{'type':Sequelize['ENUM'](_0xa45e('0x2a'),'no'),'allowNull':!![],'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0xa45e('0x18')](_0xa45e('0x2a'),'no'),'allowNull':!![],'defaultValue':'no'},'progressinband':{'type':Sequelize['ENUM']('yes','no',_0xa45e('0x36')),'allowNull':!![]},'promiscredir':{'type':Sequelize[_0xa45e('0x18')](_0xa45e('0x2a'),'no'),'allowNull':!![]},'useclientcode':{'type':Sequelize[_0xa45e('0x18')](_0xa45e('0x2a'),'no'),'allowNull':!![]},'accountcode':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'setvar':{'type':Sequelize[_0xa45e('0x5')],'allowNull':!![]},'callerid':{'type':Sequelize[_0xa45e('0x5')],'allowNull':!![],'defaultValue':_0xa45e('0x37')},'amaflags':{'type':Sequelize[_0xa45e('0x5')],'allowNull':!![]},'callcounter':{'type':Sequelize[_0xa45e('0x18')](_0xa45e('0x2a'),'no'),'allowNull':!![],'defaultValue':_0xa45e('0x2a')},'busylevel':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'allowoverlap':{'type':Sequelize[_0xa45e('0x18')](_0xa45e('0x2a'),'no'),'allowNull':!![]},'allowsubscribe':{'type':Sequelize[_0xa45e('0x18')](_0xa45e('0x2a'),'no'),'allowNull':!![]},'allowtransfer':{'type':Sequelize[_0xa45e('0x18')]('yes','no'),'allowNull':!![]},'ignoresdpversion':{'type':Sequelize[_0xa45e('0x18')]('yes','no'),'allowNull':!![]},'subscribecontext':{'type':Sequelize[_0xa45e('0x5')],'allowNull':!![]},'template':{'type':Sequelize[_0xa45e('0x5')],'allowNull':!![]},'videosupport':{'type':Sequelize['ENUM'](_0xa45e('0x2a'),'no','always'),'allowNull':!![],'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'rfc2833compensate':{'type':Sequelize[_0xa45e('0x18')](_0xa45e('0x2a'),'no'),'allowNull':!![]},'mailbox':{'type':Sequelize[_0xa45e('0x5')],'allowNull':!![]},'session_timers':{'type':Sequelize[_0xa45e('0x18')](_0xa45e('0x38'),_0xa45e('0x39'),_0xa45e('0x3a')),'allowNull':!![]},'session_expires':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'session_minse':{'type':Sequelize[_0xa45e('0x17')](0xb),'allowNull':!![]},'session_refresher':{'type':Sequelize[_0xa45e('0x18')]('uac','uas'),'allowNull':!![],'defaultValue':_0xa45e('0x3b')},'t38pt_usertpsource':{'type':Sequelize[_0xa45e('0x5')],'allowNull':!![]},'regexten':{'type':Sequelize[_0xa45e('0x5')],'allowNull':!![]},'fromdomain':{'type':Sequelize[_0xa45e('0x5')],'allowNull':!![]},'fromuser':{'type':Sequelize[_0xa45e('0x5')],'allowNull':!![]},'qualify':{'type':Sequelize[_0xa45e('0x18')](_0xa45e('0x2a'),'no'),'allowNull':!![],'defaultValue':_0xa45e('0x2a')},'keepalive':{'type':Sequelize[_0xa45e('0x17')](0xb),'allowNull':!![]},'defaultip':{'type':Sequelize[_0xa45e('0x5')],'allowNull':!![]},'defaultuser':{'type':Sequelize['STRING'],'allowNull':!![]},'rtptimeout':{'type':Sequelize[_0xa45e('0x17')](0xb),'allowNull':!![]},'rtpholdtimeout':{'type':Sequelize[_0xa45e('0x17')](0xb),'allowNull':!![]},'rtpkeepalive':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'sendrpid':{'type':Sequelize[_0xa45e('0x18')](_0xa45e('0x2a'),'no'),'allowNull':!![],'defaultValue':'no'},'outboundproxy':{'type':Sequelize['STRING'],'allowNull':!![]},'callbackextension':{'type':Sequelize[_0xa45e('0x5')],'allowNull':!![]},'timert1':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'timerb':{'type':Sequelize[_0xa45e('0x17')](0xb),'allowNull':!![]},'qualifyfreq':{'type':Sequelize[_0xa45e('0x17')](0xb),'allowNull':!![]},'contactpermit':{'type':Sequelize[_0xa45e('0x5')],'allowNull':!![]},'contactdeny':{'type':Sequelize[_0xa45e('0x5')],'allowNull':!![]},'contactacl':{'type':Sequelize[_0xa45e('0x5')],'allowNull':!![]},'unsolicited_mailbox':{'type':Sequelize[_0xa45e('0x5')],'allowNull':!![]},'use_q850_reason':{'type':Sequelize[_0xa45e('0x5')],'allowNull':!![]},'maxforwards':{'type':Sequelize[_0xa45e('0x17')](0xb),'allowNull':!![]},'encryption':{'type':Sequelize['ENUM'](_0xa45e('0x2a'),'no'),'allowNull':!![],'defaultValue':'no'},'avpf':{'type':Sequelize[_0xa45e('0x18')](_0xa45e('0x2a'),'no'),'allowNull':!![]},'force_avp':{'type':Sequelize[_0xa45e('0x18')](_0xa45e('0x2a'),'no'),'allowNull':!![]},'icesupport':{'type':Sequelize[_0xa45e('0x18')](_0xa45e('0x2a'),'no'),'allowNull':!![]},'dtlsenable':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![]},'dtlsverify':{'type':Sequelize[_0xa45e('0x18')](_0xa45e('0x2a'),'no',_0xa45e('0x3c'),_0xa45e('0x3d')),'allowNull':!![]},'dtlsrekey':{'type':Sequelize[_0xa45e('0x17')](0xb),'allowNull':!![]},'dtlscertfile':{'type':Sequelize[_0xa45e('0x5')],'allowNull':!![]},'dtlsprivatekey':{'type':Sequelize[_0xa45e('0x5')],'allowNull':!![]},'dtlscipher':{'type':Sequelize[_0xa45e('0x5')],'allowNull':!![]},'dtlscafile':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlscapath':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlssetup':{'type':Sequelize[_0xa45e('0x18')](_0xa45e('0x3e'),'passive',_0xa45e('0x3f')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0xa45e('0x5')],'allowNull':!![]},'usereqphone':{'type':Sequelize['ENUM'](_0xa45e('0x2a'),'no'),'allowNull':!![],'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0xa45e('0x5')],'allowNull':!![]},'recordofffeature':{'type':Sequelize[_0xa45e('0x5')],'allowNull':!![]},'call_limit':{'type':Sequelize[_0xa45e('0x17')](0xb),'allowNull':!![],'defaultValue':0xa},'registertrying':{'type':Sequelize[_0xa45e('0x18')](_0xa45e('0x2a'),'no'),'allowNull':!![]},'subscribemwi':{'type':Sequelize[_0xa45e('0x18')]('yes','no'),'allowNull':!![]},'vmexten':{'type':Sequelize[_0xa45e('0x5')],'allowNull':!![]},'mohinterpret':{'type':Sequelize[_0xa45e('0x5')],'allowNull':!![]},'mohsuggest':{'type':Sequelize[_0xa45e('0x5')],'allowNull':!![]},'parkinglot':{'type':Sequelize[_0xa45e('0x5')],'allowNull':!![]},'canreinvite':{'type':Sequelize['ENUM'](_0xa45e('0x2a'),'no',_0xa45e('0x2b'),'update',_0xa45e('0x40')),'allowNull':!![],'defaultValue':'no'},'loginInPause':{'type':Sequelize[_0xa45e('0x14')],'defaultValue':![]},'resetPasswordToken':{'type':Sequelize[_0xa45e('0x5')]},'resetPasswordExpires':{'type':Sequelize[_0xa45e('0x15')]},'passwordResetAt':{'type':Sequelize['DATE'],'defaultValue':null},'previousPasswords':{'type':Sequelize['TEXT']},'showWebBar':{'type':Sequelize['INTEGER'],'defaultValue':0x0,'set':function(_0x276a39){this[_0xa45e('0x7')](_0xa45e('0x41'),_0x276a39);var _0x3c8677=this[_0xa45e('0x42')]({'plain':!![]});switch(_0x276a39){case 0x0:case 0x1:var _0x102cbd=_0x3c8677[_0xa45e('0x22')]?_['isArray'](_0x3c8677[_0xa45e('0x22')])?_0x3c8677[_0xa45e('0x22')][_0xa45e('0x21')]():_0x3c8677[_0xa45e('0x22')]:'udp';if(_0x102cbd===_0xa45e('0x43')){_0x102cbd=_0xa45e('0x44');}this[_0xa45e('0x7')](_0xa45e('0x22'),_0x102cbd);this[_0xa45e('0x7')]('encryption','no');this[_0xa45e('0x7')](_0xa45e('0x45'),null);this[_0xa45e('0x7')]('force_avp',null);this[_0xa45e('0x7')](_0xa45e('0x46'),null);this[_0xa45e('0x7')](_0xa45e('0x47'),null);this['setDataValue'](_0xa45e('0x48'),null);this[_0xa45e('0x7')](_0xa45e('0x49'),null);this[_0xa45e('0x7')](_0xa45e('0x4a'),null);this[_0xa45e('0x7')](_0xa45e('0x4b'),null);this[_0xa45e('0x7')](_0xa45e('0x4c'),'no');break;case 0x2:this[_0xa45e('0x7')]('transport',_0xa45e('0x43'));this['setDataValue'](_0xa45e('0x4d'),_0xa45e('0x2a'));this['setDataValue'](_0xa45e('0x45'),_0xa45e('0x2a'));this[_0xa45e('0x7')]('force_avp',_0xa45e('0x2a'));this[_0xa45e('0x7')](_0xa45e('0x46'),'yes');this[_0xa45e('0x7')](_0xa45e('0x47'),'yes');this[_0xa45e('0x7')](_0xa45e('0x48'),'no');this[_0xa45e('0x7')](_0xa45e('0x49'),_0xa45e('0x3f'));this[_0xa45e('0x7')]('dtlscertfile',_0x3c8677[_0xa45e('0x4a')]||_0xa45e('0x4e'));this[_0xa45e('0x7')](_0xa45e('0x4b'),_0x3c8677[_0xa45e('0x4b')]||'/etc/pki/tls/private/motion.key');this[_0xa45e('0x7')](_0xa45e('0x4c'),_0xa45e('0x2a'));break;default:}}},'permissions':{'type':Sequelize[_0xa45e('0x4f')],'set':function(_0x56540f){this['setDataValue'](_0xa45e('0x50'),_0x56540f?_0x56540f[_0xa45e('0x21')](','):[]);},'get':function(){return this[_0xa45e('0xc')](_0xa45e('0x50'))?_['map'](this[_0xa45e('0xc')]('permissions')['split'](','),function(_0x5eb0cc){return parseInt(_0x5eb0cc,0xa);}):[];}},'phoneBarUnconditionalNumber':{'type':Sequelize[_0xa45e('0x5')]},'phoneBarNoReplyNumber':{'type':Sequelize['STRING']},'phoneBarBusyNumber':{'type':Sequelize[_0xa45e('0x5')]},'phoneBarUnconditional':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarNoReply':{'type':Sequelize[_0xa45e('0x14')],'defaultValue':![]},'phoneBarBusy':{'type':Sequelize[_0xa45e('0x14')],'defaultValue':![]},'phoneBarDnd':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'phoneBarUnansweredCallBadge':{'type':Sequelize[_0xa45e('0x14')],'defaultValue':!![]},'phoneBarEnableDtmfTone':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarAutoAnswerDelay':{'type':Sequelize[_0xa45e('0x17')],'defaultValue':0x0},'extensionMonitor':{'type':Sequelize[_0xa45e('0x5')],'defaultValue':''},'crudPermissions':{'type':Sequelize[_0xa45e('0x17')],'defaultValue':0x0},'rtcp_mux':{'type':Sequelize['ENUM'](_0xa45e('0x2a'),'no'),'defaultValue':'no'},'allowmessenger':{'type':Sequelize[_0xa45e('0x14')],'defaultValue':!![]},'phoneBarOutboundProxy':{'type':Sequelize[_0xa45e('0x5')]},'phoneBarEnableJaws':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarEnableScreenRecordingByAgent':{'type':Sequelize[_0xa45e('0x14')],'defaultValue':![]},'phoneBarEnableVideoRecording':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0xa45e('0xc')](_0xa45e('0x51'))?this[_0xa45e('0xc')](_0xa45e('0x51')):![];}},'phoneBarEnableAutomaticScreenRecording':{'type':Sequelize[_0xa45e('0x14')],'defaultValue':![]},'phoneBarPrefixRequired':{'type':Sequelize[_0xa45e('0x14')],'defaultValue':![]},'hotdesk':{'type':Sequelize[_0xa45e('0x14')],'defaultValue':![]},'interface':{'type':Sequelize[_0xa45e('0x5')],'defaultValue':null},'privacyEnabled':{'type':Sequelize[_0xa45e('0x14')],'defaultValue':![]},'apiKeyNonce':{'type':Sequelize[_0xa45e('0x5')],'allowNull':!![]},'apiKeyIat':{'type':Sequelize['STRING'],'allowNull':!![]},'screenrecording':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'set':function(_0x3ed106){if(typeof _0x3ed106===_0xa45e('0x52')){var _0x51167f=_0x3ed106==='1'?!![]:_0x3ed106==='0'?![]:_0x3ed106===_0xa45e('0x53')?!![]:_0x3ed106===_0xa45e('0x54')?![]:![];this[_0xa45e('0x7')](_0xa45e('0x55'),_0x51167f);}else{this['setDataValue'](_0xa45e('0x55'),_0x3ed106);}}},'blocked':{'type':Sequelize[_0xa45e('0x14')],'defaultValue':![],'set':function(_0x5a5e3f){this[_0xa45e('0x7')](_0xa45e('0x56'),_0x5a5e3f);if(_0x5a5e3f===!![]){this[_0xa45e('0x7')](_0xa45e('0x57'),moment());this[_0xa45e('0x7')](_0xa45e('0x58'),0x0);}else{this[_0xa45e('0x7')](_0xa45e('0x57'),null);}}},'blockedAt':{'type':Sequelize[_0xa45e('0x15')],'defaultValue':null},'loginAttempts':{'type':Sequelize[_0xa45e('0x17')],'defaultValue':0x0},'disabled':{'type':Sequelize[_0xa45e('0x14')],'defaultValue':![]},'settingsEnabled':{'type':Sequelize[_0xa45e('0x14')],'defaultValue':!![]},'wssPort':{'type':Sequelize['INTEGER'](0x5)[_0xa45e('0x59')],'defaultValue':0x1f99},'downloadAttachments':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'ignorePauseForPreviewCalls':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'selectRecallMeCampaign':{'type':Sequelize[_0xa45e('0x14')],'defaultValue':![]}};
\ No newline at end of file
index e92c7b3..805aa5d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe820=['getContacts','order','sort','pick','hasOwnProperty','List','Tag','color','tag','nolimit','getQueues','Queue','Unknown\x20role','getVoiceQueuesRt','findOne','getGroups','ChatGroup','VoiceRecording','getScreenRecordings','ScreenRecording','UserId','getChatInteractions','ChatInteraction','getOpenchannelInteractions','getMailInteractions','MailInteraction','SmsInteraction','getSmsInteractions','getFaxInteractions','FaxInteraction','WhatsappInteraction','getWhatsappInteractions','login','mobile','LOCAL/%s@from-sip/n','intrf','SIP/%s','user:%s','headers','x-forwarded-for','connection','remoteAddress','socket','getVoiceQueues','UserVoiceQueue.penalty','upsert','MemberReport','forEach','getChannels','YYYY-MM-DD\x20HH:mm:ss','LOGIN','device','PAUSE','concat','LOGININPAUSE','isMiddleware','logout','QueuePause','pause','updateAttributes','type','DEFAULT\x20PAUSE','unpause','mailPause','chatPause','faxPause','openchannelPause','smsPause','whatsapppause','pauseType','lastPauseAt','manual','set','%s%s','Pause','getTeams','Team','getChatQueues','setDataValue','Mail','getSmsQueues','Sms','getWhatsappQueues','Whatsapp','Fax','getOpenchannelQueues','Openchannel','transaction','addAgent','Voice','getDataValue','removeTeams','Chat','getMailQueues','getFaxQueues','flatten','removeAgent','getLists','CmList','getAgents','values','You\x20can\x27t\x20delete\x20yourself','addChatInteractions','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','addSmsInteractions','user_has_sms_interactions:save','removeSmsInteractions','user_has_sms_interactions:remove','addOpenchannelInteractions','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','addWhatsappInteractions','removeWhatsappInteractions','getVoicePrefixes','VoicePrefix','getFaxAccounts','FaxAccount','addFaxAccounts','removeFaxAccounts','getMailAccounts','MailAccount','addMailAccounts','removeMailAccounts','getOpenchannelAccounts','addOpenchannelAccounts','removeOpenchannelAccounts','getSmsAccounts','SmsAccount','removeSmsAccounts','getChatWebsites','ChatWebsite','addChatWebsites','removeChatWebsites','getWhatsappAccounts','addWhatsappAccounts','removeWhatsappAccounts','SquareProject','getSquareProjects','addSquareProjects','removeSquareProjects','getScheduledCalls','CmHopper','$and','$lt','$lte','$eq','$not','$between','$in','$notIn','$like','$notILike','$overlap','$contains','$contained','$any','firstName','lastName','phone','CmContact','Contact','getApiKey','retrieveApiKey','token','No\x20API\x20access\x20key\x20found!','You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.','createApiKey','generateApiKey','iat','nonce','apiKeyNonce','API\x20key\x20not\x20available','whoami','Unable\x20to\x20retrieve\x20the\x20current\x20user','getPresence','resolve','queues','teams','col','asc','substring','uniqBy','orderBy','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','offline','idle','unavailable','ringing','voiceStatus','slice','charAt','toUpperCase','field','ui.','InteractionId','ui.createdAt','user_has_','_interactions','toString','moment','util','squel','jayson/promise','ioredis','../../components/parsers/qs','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','./user.socket','register','defaults','localhost','client','http','request','then','info','request\x20sent','code','error','message','User,\x20%s,\x20%s','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','destroy','role','user','Agents','agent','telephone','filter','ignore','map','value','includes','find','name','UserProfileResource','stack','send','User','rawAttributes','fieldName','password','salt','getOptions','where','query','include','attributes','push','findAll','rows','length','chat','dataValues','fax','mail','openchannel','whatsapp','params','model','differenceBy','keys','filters','intersection','fields','includeAll','merge','options','openTabs','true','sms','all','update','body','describe','addContacts','omit','internal','Setting','findById','max','isNil','min_internal','sequelize','select\x20(select\x20IFNULL(max(internal)+1,1)\x20from\x20users\x20where\x20internal\x20<\x20md.internal)\x20as\x20\x27from\x27,\x20md.internal\x20-\x201\x20as\x20\x27to\x27\x20from\x20users\x20md\x20where\x20md.internal\x20!=\x201\x20and\x20not\x20exists\x20(select\x201\x20from\x20users\x20md2\x20where\x20md2.internal\x20=\x20md.internal\x20-\x201)','QueryTypes','SELECT','from','voicemail','mailbox','VoiceMail','fullname','permissions','101','103','110','104','105','106','107','109','100','114','115','Unauthorized','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','settingsEnabled','create','UserProfileSection','autoAssociation','bulkCreate','some','checkUserLimits','each','userProfileId','isEmpty','compact','Telephones','changePassword','newPassword','Sequelize','Invalid\x20body\x20format.\x20Use\x20oldPassword\x20and\x20newPassword','ValidationError','Wrong\x20credentials','oldPassword','New\x20password\x20must\x20be\x20different\x20from\x20old\x20password','Invalid\x20body\x20format.\x20Use\x20newPassword','securePassword','enforcePasswordHistory','passwordHistoryLimit','validatePasswordHistory','previousPasswords','updatePasswordsHistory','addQueues','channel','online','loginInPause','voicePause','isValidChannel','Unknown\x20channel','add','capitalize','toLowerCase','Queues','ids','penalty','spread','QueueId','emit','Queue:save','voice','VoiceQueue','get','interface','format','removeQueues','Queue:remove','UserVoiceQueueRt','addAvatar','userpic','filename','getAvatar','root','server/files/images/logos/default_profile.png','download','existsSync','join','server/files/images/','ChatOpenTabs','CHAT','createdAt','FaxOpenTabs','OpenchannelOpenTabs','MailOpenTabs','MAIL','SmsOpenTabs','SMS','WhatsappOpenTabs'];(function(_0x3826ad,_0x49a30d){var _0x17b900=function(_0x38474f){while(--_0x38474f){_0x3826ad['push'](_0x3826ad['shift']());}};_0x17b900(++_0x49a30d);}(_0xe820,0xd2));var _0x0e82=function(_0x2cf082,_0x582e38){_0x2cf082=_0x2cf082-0x0;var _0x5331eb=_0xe820[_0x2cf082];return _0x5331eb;};'use strict';var moment=require(_0x0e82('0x0'));var BPromise=require('bluebird');var util=require(_0x0e82('0x1'));var path=require('path');var fs=require('fs');var _=require('lodash');var squel=require(_0x0e82('0x2'));var jayson=require(_0x0e82('0x3'));var Redis=require(_0x0e82('0x4'));var authService=require('../../components/auth/service');var qs=require(_0x0e82('0x5'));var logger=require('../../config/logger')(_0x0e82('0x6'));var utils=require(_0x0e82('0x7'));var config=require(_0x0e82('0x8'));var licenseUtil=require(_0x0e82('0x9'));var db=require(_0x0e82('0xa'))['db'];var socket=require('socket.io-emitter')(new Redis(config[_0x0e82('0xb')]));require(_0x0e82('0xc'))[_0x0e82('0xd')](socket);config[_0x0e82('0xb')]=_[_0x0e82('0xe')](config['redis'],{'host':_0x0e82('0xf'),'port':0x18eb});var client=jayson[_0x0e82('0x10')][_0x0e82('0x11')]({'port':0x232a});var values;function respondWithRpcPromise(_0x10b2e2,_0x1f1800,_0x2a1b32,_0x270173){return new BPromise(function(_0x588640,_0x44c7fd){var _0xb42f45=_0x270173||client;return _0xb42f45[_0x0e82('0x12')](_0x10b2e2,_0x2a1b32)[_0x0e82('0x13')](function(_0x166dc2){logger[_0x0e82('0x14')]('User,\x20%s,\x20%s',_0x1f1800,_0x0e82('0x15'));logger['debug']('User,\x20%s,\x20%s,\x20%s',_0x1f1800,_0x0e82('0x15'),JSON['stringify'](_0x166dc2));if(_0x166dc2['error']){if(_0x166dc2['error'][_0x0e82('0x16')]===0x1f4){logger['error']('User,\x20%s,\x20%s',_0x1f1800,_0x166dc2[_0x0e82('0x17')]['message']);return _0x44c7fd(_0x166dc2[_0x0e82('0x17')][_0x0e82('0x18')]);}logger[_0x0e82('0x17')](_0x0e82('0x19'),_0x1f1800,_0x166dc2['error'][_0x0e82('0x18')]);return _0x588640(_0x166dc2[_0x0e82('0x17')][_0x0e82('0x18')]);}else{logger[_0x0e82('0x14')](_0x0e82('0x19'),_0x1f1800,_0x0e82('0x15'));_0x588640(_0x166dc2[_0x0e82('0x1a')][_0x0e82('0x18')]);}})[_0x0e82('0x1b')](function(_0x224455){logger[_0x0e82('0x17')]('User,\x20%s,\x20%s',_0x1f1800,_0x224455);_0x44c7fd(_0x224455);});});}function respondWithStatusCode(_0x5ba6ee,_0x294696){_0x294696=_0x294696||0xcc;return function(_0x2781de){if(_0x2781de){return _0x5ba6ee[_0x0e82('0x1c')](_0x294696);}return _0x5ba6ee[_0x0e82('0x1d')](_0x294696)[_0x0e82('0x1e')]();};}function respondWithResult(_0x1bdad4,_0x39fcbe){_0x39fcbe=_0x39fcbe||0xc8;return function(_0x2688f9){if(_0x2688f9){return _0x1bdad4['status'](_0x39fcbe)[_0x0e82('0x1f')](_0x2688f9);}};}function respondWithFilteredResult(_0x13f023,_0x3d6c28){return function(_0x24f883){if(_0x24f883){var _0x507f08=typeof _0x3d6c28[_0x0e82('0x20')]===_0x0e82('0x21')&&typeof _0x3d6c28[_0x0e82('0x22')]===_0x0e82('0x21');var _0x4900d3=_0x24f883[_0x0e82('0x23')];var _0x51dbcd=_0x507f08?0x0:_0x3d6c28['offset'];var _0x384f88=_0x507f08?_0x24f883[_0x0e82('0x23')]:_0x3d6c28['offset']+_0x3d6c28[_0x0e82('0x22')];var _0xe3c530;if(_0x384f88>=_0x4900d3){_0x384f88=_0x4900d3;_0xe3c530=0xc8;}else{_0xe3c530=0xce;}_0x13f023[_0x0e82('0x1d')](_0xe3c530);return _0x13f023['set'](_0x0e82('0x24'),_0x51dbcd+'-'+_0x384f88+'/'+_0x4900d3)[_0x0e82('0x1f')](_0x24f883);}return null;};}function saveUpdates(_0x4ee65a){return function(_0xabc536){if(_0xabc536){return _0xabc536['update'](_0x4ee65a)[_0x0e82('0x13')](function(_0x3ec302){return _0x3ec302;});}return null;};}function removeEntity(_0x551f96){return function(_0x38cbbc){if(_0x38cbbc){return _0x38cbbc[_0x0e82('0x25')]()[_0x0e82('0x13')](function(){var _0x4d74d0=_0x38cbbc['get']({'plain':!![]});if(_0x4d74d0[_0x0e82('0x26')]==='admin')return;var _0x11211a=[{'name':'Users','value':_0x0e82('0x27'),'ignore':!![]},{'name':_0x0e82('0x28'),'value':_0x0e82('0x29'),'ignore':![]},{'name':'Telephones','value':_0x0e82('0x2a'),'ignore':![]}];var _0x59d2f8=_(_0x11211a)[_0x0e82('0x2b')](_0x0e82('0x2c'))[_0x0e82('0x2d')](_0x0e82('0x2e'))[_0x0e82('0x2e')]();if(_[_0x0e82('0x2f')](_0x59d2f8,_0x4d74d0['role'])){return;}var _0x433fc4=_[_0x0e82('0x30')](_0x11211a,[_0x0e82('0x2e'),_0x4d74d0[_0x0e82('0x26')]])[_0x0e82('0x31')];return db[_0x0e82('0x32')][_0x0e82('0x25')]({'where':{'type':_0x433fc4,'resourceId':_0x4d74d0['id']}})[_0x0e82('0x13')](function(){return _0x38cbbc;});})[_0x0e82('0x13')](function(){_0x551f96[_0x0e82('0x1d')](0xcc)[_0x0e82('0x1e')]();});}};}function handleEntityNotFound(_0x1a77a3){return function(_0x244f3d){if(!_0x244f3d){_0x1a77a3[_0x0e82('0x1c')](0x194);}return _0x244f3d;};}function handleError(_0x21dd97,_0x5b95c8){_0x5b95c8=_0x5b95c8||0x1f4;return function(_0x18643f){logger[_0x0e82('0x17')](_0x18643f[_0x0e82('0x33')]);if(_0x18643f[_0x0e82('0x31')]){delete _0x18643f['name'];}_0x21dd97[_0x0e82('0x1d')](_0x5b95c8)[_0x0e82('0x34')](_0x18643f);};}exports['index']=function(_0xd7ad2f,_0x57e505){var _0x4a855f={},_0x166707={'count':0x0,'rows':[]};var _0x1a77c3=_(db[_0x0e82('0x35')][_0x0e82('0x36')])[_0x0e82('0x2d')](function(_0x17e278){return{'name':_0x17e278[_0x0e82('0x37')],'type':_0x17e278['type']['key']};})[_0x0e82('0x2b')](function(_0x456d10){return!_[_0x0e82('0x2f')]([_0x0e82('0x38'),_0x0e82('0x39')],_0x456d10[_0x0e82('0x31')]);})[_0x0e82('0x2e')]();_0x4a855f=qs[_0x0e82('0x3a')](_0x1a77c3,_0xd7ad2f);var _0x4e11b7={'where':_0x4a855f[_0x0e82('0x3b')]};return db[_0x0e82('0x35')][_0x0e82('0x23')](_0x4e11b7)[_0x0e82('0x13')](function(_0x29e579){_0x166707[_0x0e82('0x23')]=_0x29e579;if(_0xd7ad2f[_0x0e82('0x3c')]['includeAll']){_0x4a855f[_0x0e82('0x3d')]=[{'all':!![]}];}if(!_[_0x0e82('0x2f')](_0x4a855f[_0x0e82('0x3e')],'id')){_0x4a855f[_0x0e82('0x3e')][_0x0e82('0x3f')]('id');}return db[_0x0e82('0x35')][_0x0e82('0x40')](_0x4a855f);})['then'](function(_0x581764){_0x166707['rows']=_0x581764;if(_0xd7ad2f['query']['openTabs']==='true'){var _0x651c76=[];for(var _0x182333=0x0;_0x182333<_0x166707[_0x0e82('0x41')][_0x0e82('0x42')];_0x182333++){_0x651c76[_0x0e82('0x3f')](get_open_tabs(_0x0e82('0x43'),_0x166707[_0x0e82('0x41')][_0x182333][_0x0e82('0x44')]));_0x651c76['push'](get_open_tabs('sms',_0x166707[_0x0e82('0x41')][_0x182333][_0x0e82('0x44')]));_0x651c76[_0x0e82('0x3f')](get_open_tabs(_0x0e82('0x45'),_0x166707[_0x0e82('0x41')][_0x182333][_0x0e82('0x44')]));_0x651c76[_0x0e82('0x3f')](get_open_tabs(_0x0e82('0x46'),_0x166707['rows'][_0x182333][_0x0e82('0x44')]));_0x651c76['push'](get_open_tabs(_0x0e82('0x47'),_0x166707['rows'][_0x182333][_0x0e82('0x44')]));_0x651c76['push'](get_open_tabs(_0x0e82('0x48'),_0x166707[_0x0e82('0x41')][_0x182333][_0x0e82('0x44')]));}return BPromise['all'](_0x651c76)['then'](function(_0x331668){return _0x166707;});}else{return _0x166707;}})[_0x0e82('0x13')](respondWithFilteredResult(_0x57e505,_0x4a855f))[_0x0e82('0x1b')](handleError(_0x57e505,null));};exports['show']=function(_0x384218,_0x508981){var _0x4038b6={'raw':![],'where':{'id':_0x384218[_0x0e82('0x49')]['id']}},_0x414745={};_0x414745[_0x0e82('0x4a')]=_[_0x0e82('0x4b')](_[_0x0e82('0x4c')](db[_0x0e82('0x35')][_0x0e82('0x36')]),[_0x0e82('0x38'),_0x0e82('0x39')]);_0x414745[_0x0e82('0x3c')]=_[_0x0e82('0x4c')](_0x384218['query']);_0x414745[_0x0e82('0x4d')]=_[_0x0e82('0x4e')](_0x414745['model'],_0x414745[_0x0e82('0x3c')]);_0x4038b6['attributes']=_['intersection'](_0x414745[_0x0e82('0x4a')],qs['fields'](_0x384218[_0x0e82('0x3c')][_0x0e82('0x4f')]));_0x4038b6[_0x0e82('0x3e')]=_0x4038b6[_0x0e82('0x3e')][_0x0e82('0x42')]?_0x4038b6['attributes']:_0x414745[_0x0e82('0x4a')];if(_0x384218['query'][_0x0e82('0x50')]){_0x4038b6[_0x0e82('0x3d')]=[{'all':!![]}];}_0x4038b6=_[_0x0e82('0x51')]({},_0x4038b6,_0x384218[_0x0e82('0x52')]);if(!_[_0x0e82('0x2f')](_0x4038b6['attributes'],'id')){_0x4038b6[_0x0e82('0x3e')][_0x0e82('0x3f')]('id');}return db[_0x0e82('0x35')][_0x0e82('0x30')](_0x4038b6)[_0x0e82('0x13')](handleEntityNotFound(_0x508981,null))['then'](function(_0x2274a0){var _0x348b00=[];values=_0x2274a0;if(_0x384218[_0x0e82('0x3c')][_0x0e82('0x53')]===_0x0e82('0x54')){_0x348b00[_0x0e82('0x3f')](get_open_tabs(_0x0e82('0x43'),_0x2274a0[_0x0e82('0x44')]));_0x348b00[_0x0e82('0x3f')](get_open_tabs(_0x0e82('0x55'),_0x2274a0['dataValues']));_0x348b00['push'](get_open_tabs('openchannel',_0x2274a0[_0x0e82('0x44')]));_0x348b00['push'](get_open_tabs(_0x0e82('0x48'),_0x2274a0[_0x0e82('0x44')]));_0x348b00['push'](get_open_tabs('fax',_0x2274a0[_0x0e82('0x44')]));_0x348b00[_0x0e82('0x3f')](get_open_tabs(_0x0e82('0x46'),_0x2274a0[_0x0e82('0x44')]));return BPromise[_0x0e82('0x56')](_0x348b00);}else{return values;}})[_0x0e82('0x13')](function(_0x34c5b3){return values;})[_0x0e82('0x13')](respondWithResult(_0x508981,null))[_0x0e82('0x1b')](handleError(_0x508981,null));};exports[_0x0e82('0x57')]=function(_0x4ce423,_0x30e9f1){if(_0x4ce423[_0x0e82('0x58')]['id']){delete _0x4ce423[_0x0e82('0x58')]['id'];}delete _0x4ce423[_0x0e82('0x58')][_0x0e82('0x26')];return db[_0x0e82('0x35')][_0x0e82('0x30')]({'where':{'id':_0x4ce423[_0x0e82('0x49')]['id']}})['then'](handleEntityNotFound(_0x30e9f1,null))[_0x0e82('0x13')](saveUpdates(_0x4ce423[_0x0e82('0x58')],null))[_0x0e82('0x13')](respondWithResult(_0x30e9f1,null))[_0x0e82('0x1b')](handleError(_0x30e9f1,null));};exports[_0x0e82('0x59')]=function(_0x28f3b7,_0x2d1e59){return db[_0x0e82('0x35')][_0x0e82('0x59')]()['then'](respondWithResult(_0x2d1e59,null))[_0x0e82('0x1b')](handleError(_0x2d1e59,null));};exports['addContacts']=function(_0x320692,_0x5af72f){return db[_0x0e82('0x35')][_0x0e82('0x30')]({'where':{'id':_0x320692['params']['id']}})[_0x0e82('0x13')](handleEntityNotFound(_0x5af72f,null))[_0x0e82('0x13')](function(_0x244b42){if(_0x244b42){return _0x244b42[_0x0e82('0x5a')](_0x320692[_0x0e82('0x58')]['ids'],_[_0x0e82('0x5b')](_0x320692['body'],['ids','id'])||{});}})[_0x0e82('0x13')](respondWithResult(_0x5af72f,null))[_0x0e82('0x1b')](handleError(_0x5af72f,null));};function validateUser(_0x78762e){return new BPromise(function(_0x2e2aeb,_0x2bdca1){if(_0x78762e[_0x0e82('0x5c')])return _0x2e2aeb(_0x78762e);return db[_0x0e82('0x5d')][_0x0e82('0x5e')](0x1)[_0x0e82('0x13')](function(_0x2b89a2){if(_0x2b89a2['securePassword'])authService['validatePasswordPattern'](_0x78762e[_0x0e82('0x38')]);db['User'][_0x0e82('0x5f')](_0x0e82('0x5c'))['then'](function(_0x2cba0c){if(_[_0x0e82('0x60')](_0x2cba0c)){_0x78762e['internal']=_0x2b89a2[_0x0e82('0x61')]||0x1;return;}if(_[_0x0e82('0x60')](_0x2b89a2['min_internal'])||_0x2b89a2[_0x0e82('0x61')]===_0x2cba0c){_0x78762e['internal']=_0x2cba0c+0x1;return;}if(_0x2b89a2[_0x0e82('0x61')]>_0x2cba0c){_0x78762e[_0x0e82('0x5c')]=_0x2b89a2[_0x0e82('0x61')];return;}return db[_0x0e82('0x62')][_0x0e82('0x3c')](_0x0e82('0x63'),{'type':db[_0x0e82('0x62')][_0x0e82('0x64')][_0x0e82('0x65')]})[_0x0e82('0x13')](function(_0x4b256f){if(_0x4b256f&&_0x4b256f[_0x0e82('0x42')]){for(var _0x4a696b=0x0,_0x131698=_0x4b256f[_0x0e82('0x42')];_0x4a696b<_0x131698&&_[_0x0e82('0x60')](_0x78762e['internal']);_0x4a696b++){if(_0x2b89a2[_0x0e82('0x61')]<=_0x4b256f[_0x4a696b][_0x0e82('0x66')]){_0x78762e[_0x0e82('0x5c')]=_0x4b256f[_0x4a696b][_0x0e82('0x66')];}else if(_0x2b89a2[_0x0e82('0x61')]>_0x4b256f[_0x4a696b]['from']&&_0x2b89a2[_0x0e82('0x61')]<=_0x4b256f[_0x4a696b]['to']){_0x78762e['internal']=_0x2b89a2[_0x0e82('0x61')];}}}if(_[_0x0e82('0x60')](_0x78762e['internal'])){_0x78762e['internal']=_0x2cba0c+0x1;}return _0x2e2aeb(_0x78762e);});});})[_0x0e82('0x1b')](function(_0x2b154e){_0x2bdca1(_0x2b154e);});});}function updateUser(_0x1b2b8c){return new BPromise(function(_0x22791b,_0x1b6fcd){try{if(_0x1b2b8c[_0x0e82('0x67')]){_0x1b2b8c[_0x0e82('0x68')]=_0x1b2b8c[_0x0e82('0x5c')];_0x1b2b8c[_0x0e82('0x69')]={'mailbox':_0x1b2b8c['internal'],'password':_0x1b2b8c[_0x0e82('0x38')],'fullname':_0x1b2b8c[_0x0e82('0x6a')],'email':_0x1b2b8c['email']};}if(_0x1b2b8c['role']==='agent'){if(!_0x1b2b8c[_0x0e82('0x6b')])_0x1b2b8c[_0x0e82('0x6b')]=[_0x0e82('0x6c'),'102',_0x0e82('0x6d'),'113',_0x0e82('0x6e'),_0x0e82('0x6f'),_0x0e82('0x70'),_0x0e82('0x71'),_0x0e82('0x72'),'108',_0x0e82('0x73'),_0x0e82('0x74'),'111',_0x0e82('0x75'),_0x0e82('0x76')];}_0x22791b(_0x1b2b8c);}catch(_0x12f7b2){_0x1b6fcd(_0x12f7b2);}});}exports['create']=function(_0x2c6e71,_0x51d9a7){if(_0x2c6e71[_0x0e82('0x27')][_0x0e82('0x26')]===_0x0e82('0x29'))throw new Error(_0x0e82('0x77'));if(_0x2c6e71[_0x0e82('0x58')][_0x0e82('0x26')]===_0x0e82('0x27')&&_0x2c6e71[_0x0e82('0x27')]['role']!==_0x0e82('0x78')){throw new Error(_0x0e82('0x79'));}if(_0x2c6e71[_0x0e82('0x58')][_0x0e82('0x26')]===_0x0e82('0x78')&&_0x2c6e71['user'][_0x0e82('0x26')]!=='admin'){throw new Error(_0x0e82('0x7a'));}return licenseUtil['checkUserLimits']([_0x2c6e71[_0x0e82('0x58')]])[_0x0e82('0x13')](function(){return validateUser(_0x2c6e71['body']);})[_0x0e82('0x13')](function(_0x1ad736){return updateUser(_0x1ad736)[_0x0e82('0x13')](function(_0x5d07d6){if(_0x5d07d6['role']==='admin'){_0x5d07d6[_0x0e82('0x7b')]=_0x2c6e71[_0x0e82('0x27')][_0x0e82('0x7b')];delete _0x5d07d6['userProfileId'];}return _0x5d07d6;});})[_0x0e82('0x13')](function(_0x9a9927){return db[_0x0e82('0x35')][_0x0e82('0x7c')](_0x9a9927,{'include':[{'model':db[_0x0e82('0x69')],'as':_0x0e82('0x69')}]});})[_0x0e82('0x13')](function(_0x446a39){if(_0x2c6e71['body'][_0x0e82('0x26')]===_0x0e82('0x27'))return _0x446a39;if(_0x2c6e71[_0x0e82('0x27')][_0x0e82('0x26')]!==_0x0e82('0x27'))return _0x446a39;return db[_0x0e82('0x7d')][_0x0e82('0x30')]({'where':{'name':_0x446a39[_0x0e82('0x26')]==='agent'?_0x0e82('0x28'):'Telephones','userProfileId':_0x2c6e71['user']['userProfileId']},'raw':!![]})[_0x0e82('0x13')](function(_0xdd6323){if(!_0xdd6323||_0xdd6323[_0x0e82('0x7e')]!=0x0)return _0x446a39;return db[_0x0e82('0x32')]['create']({'name':_0x446a39[_0x0e82('0x31')],'resourceId':_0x446a39['id'],'type':_0xdd6323['name'],'sectionId':_0xdd6323['id']},{})[_0x0e82('0x13')](function(){return _0x446a39;});})[_0x0e82('0x1b')](function(_0x53598e){logger[_0x0e82('0x17')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x53598e);throw _0x53598e;});})['then'](respondWithResult(_0x51d9a7,0xc9))[_0x0e82('0x1b')](handleError(_0x51d9a7,null));};exports[_0x0e82('0x7f')]=function(_0x48f580,_0x5b358e){var _0xaadfbe=_0x48f580[_0x0e82('0x58')];var _0x154a14=[];if(_0x48f580[_0x0e82('0x27')][_0x0e82('0x26')]===_0x0e82('0x29'))throw new Error(_0x0e82('0x77'));if(_[_0x0e82('0x80')](_0xaadfbe,['role','user'])&&_0x48f580[_0x0e82('0x27')][_0x0e82('0x26')]!==_0x0e82('0x78')){throw new Error(_0x0e82('0x79'));}if(_[_0x0e82('0x80')](_0xaadfbe,[_0x0e82('0x26'),_0x0e82('0x78')])&&_0x48f580['user'][_0x0e82('0x26')]!=='admin'){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20administrator');}return licenseUtil[_0x0e82('0x81')](_0xaadfbe)['then'](function(){return validateUser(_0xaadfbe[0x0]);})[_0x0e82('0x13')](function(){for(var _0x2ca1e2=0x1;_0x2ca1e2<_0xaadfbe['length'];_0x2ca1e2++){var _0x427aee=_0xaadfbe[_0x2ca1e2-0x1][_0x0e82('0x5c')];if(!_0xaadfbe[_0x2ca1e2][_0x0e82('0x5c')])_0xaadfbe[_0x2ca1e2][_0x0e82('0x5c')]=_0x427aee+0x1;_0x154a14[_0x0e82('0x3f')](validateUser(_0xaadfbe[_0x2ca1e2]));}return BPromise[_0x0e82('0x56')](_0x154a14);})[_0x0e82('0x13')](function(){_0x154a14=[];for(var _0x5a3b88=0x0;_0x5a3b88<_0xaadfbe[_0x0e82('0x42')];_0x5a3b88++){_0x154a14['push'](updateUser(_0xaadfbe[_0x5a3b88]));}return BPromise['all'](_0x154a14);})['then'](function(){return BPromise[_0x0e82('0x82')](_0xaadfbe,function(_0x30f947){return db[_0x0e82('0x35')][_0x0e82('0x7c')](_0x30f947,{'include':[{'model':db[_0x0e82('0x69')],'as':_0x0e82('0x69')}]})['then'](function(_0x890f08){_0x30f947['id']=_0x890f08['id'];return _0x30f947;});});})['then'](function(_0x5f59f1){if(_0x48f580['body'][_0x0e82('0x26')]==='user')return _0x5f59f1;if(_0x48f580['user'][_0x0e82('0x26')]!==_0x0e82('0x27'))return _0x5f59f1;var _0x4d8b98=_[_0x0e82('0x80')](_0x5f59f1,function(_0x463093){return _0x463093['role']===_0x0e82('0x29')||_0x463093[_0x0e82('0x26')]===_0x0e82('0x2a');});if(!_0x4d8b98)return _0x5f59f1;return db['UserProfileSection'][_0x0e82('0x40')]({'where':{'name':{'$or':[_0x0e82('0x28'),'Telephones']},'userProfileId':_0x48f580[_0x0e82('0x27')][_0x0e82('0x83')]},'raw':!![]})['then'](function(_0x112305){if(_[_0x0e82('0x84')](_0x112305)||!_['some'](_0x112305,[_0x0e82('0x7e'),0x0]))return _0x5f59f1;_0x154a14=[];var _0x2461fd=_(_0x112305)[_0x0e82('0x2d')](function(_0x283e49){if(_0x283e49['autoAssociation']===0x1)return;return _0x283e49['name']===_0x0e82('0x28')?_0x0e82('0x29'):_0x0e82('0x2a');})[_0x0e82('0x85')]()[_0x0e82('0x2e')]();for(var _0x2b1f99=0x0;_0x2b1f99<_0x5f59f1[_0x0e82('0x42')];_0x2b1f99++){if(!_[_0x0e82('0x2f')](_0x2461fd,_0x5f59f1[_0x2b1f99][_0x0e82('0x26')]))return;var _0x5837d8=_0x5f59f1[_0x2b1f99][_0x0e82('0x26')]===_0x0e82('0x29')?_0x0e82('0x28'):_0x0e82('0x86');_0x154a14['push'](db[_0x0e82('0x32')][_0x0e82('0x7c')]({'name':_0x5f59f1[_0x2b1f99]['name'],'resourceId':_0x5f59f1[_0x2b1f99]['id'],'type':_0x5837d8,'sectionId':_[_0x0e82('0x30')](_0x112305,[_0x0e82('0x31'),_0x5837d8])['id']},{}));}return BPromise[_0x0e82('0x56')](_0x154a14);});})[_0x0e82('0x13')](respondWithResult(_0x5b358e,0xc9))[_0x0e82('0x1b')](handleError(_0x5b358e,null));};exports[_0x0e82('0x87')]=function(_0x50b65f,_0x17a56d){if(_0x50b65f['body']['id']){delete _0x50b65f[_0x0e82('0x58')]['id'];}return db[_0x0e82('0x35')][_0x0e82('0x30')]({'where':{'id':_0x50b65f[_0x0e82('0x49')]['id']}})[_0x0e82('0x13')](function(_0x17b93c){if(!_0x17b93c)return null;if(_0x17b93c['id']===_0x50b65f[_0x0e82('0x27')]['id']){if(!_0x50b65f[_0x0e82('0x58')]['oldPassword']||!_0x50b65f[_0x0e82('0x58')][_0x0e82('0x88')]){throw new db[(_0x0e82('0x89'))]['ValidationError'](_0x0e82('0x8a'));}if(!_0x17b93c['authenticate'](_0x50b65f[_0x0e82('0x58')]['oldPassword'])){throw new db[(_0x0e82('0x89'))][(_0x0e82('0x8b'))](_0x0e82('0x8c'));}if(_0x50b65f['body'][_0x0e82('0x8d')]===_0x50b65f[_0x0e82('0x58')][_0x0e82('0x88')]){throw new db[(_0x0e82('0x89'))]['ValidationError'](_0x0e82('0x8e'));}}else if(_0x50b65f[_0x0e82('0x27')][_0x0e82('0x26')]===_0x0e82('0x78')){if(!_0x50b65f[_0x0e82('0x58')]['newPassword']){throw new db[(_0x0e82('0x89'))][(_0x0e82('0x8b'))](_0x0e82('0x8f'));}}else if(_0x50b65f[_0x0e82('0x27')][_0x0e82('0x26')]==='user'){if(!_0x50b65f['body'][_0x0e82('0x88')]){throw new db[(_0x0e82('0x89'))]['ValidationError']('Invalid\x20body\x20format.\x20Use\x20newPassword');}if(_0x17b93c[_0x0e82('0x26')]!==_0x0e82('0x29')){throw new db[(_0x0e82('0x89'))][(_0x0e82('0x8b'))](_0x0e82('0x77'));}}else{throw new db[(_0x0e82('0x89'))]['ValidationError'](_0x0e82('0x77'));}return _0x17b93c;})[_0x0e82('0x13')](handleEntityNotFound(_0x17a56d,null))[_0x0e82('0x13')](function(_0x29e98d){return db['Setting']['findOne']({'attributes':['id',_0x0e82('0x90'),_0x0e82('0x91'),_0x0e82('0x92')]})[_0x0e82('0x13')](function(_0x2bef61){if(_0x2bef61['securePassword'])authService['validatePasswordPattern'](_0x50b65f[_0x0e82('0x58')]['newPassword']);if(!_0x2bef61[_0x0e82('0x91')]||!_0x29e98d['previousPasswords'])return _0x29e98d;authService[_0x0e82('0x93')](_0x50b65f[_0x0e82('0x58')][_0x0e82('0x88')],_0x29e98d[_0x0e82('0x94')],_0x2bef61[_0x0e82('0x92')]);return _0x29e98d;})[_0x0e82('0x13')](saveUpdates({'password':_0x50b65f['body']['newPassword'],'passwordResetAt':_0x50b65f[_0x0e82('0x27')]['id']==_0x50b65f['params']['id']?moment():null,'previousPasswords':authService[_0x0e82('0x95')](_0x50b65f[_0x0e82('0x58')][_0x0e82('0x88')],_0x29e98d[_0x0e82('0x94')])},null));})[_0x0e82('0x13')](respondWithResult(_0x17a56d,null))[_0x0e82('0x1b')](handleError(_0x17a56d,null));};exports[_0x0e82('0x96')]=function(_0x1e305f,_0x25c63b){var _0x5333bd=_0x1e305f[_0x0e82('0x58')][_0x0e82('0x97')];return db[_0x0e82('0x35')][_0x0e82('0x30')]({'where':{'id':_0x1e305f[_0x0e82('0x49')]['id']},'attributes':['id',_0x0e82('0x31'),'role',_0x0e82('0x98'),_0x0e82('0x99'),_0x0e82('0x9a'),'interface']})[_0x0e82('0x13')](handleEntityNotFound(_0x25c63b,null))[_0x0e82('0x13')](function(_0x5581e6){if(_0x5581e6){if(!utils[_0x0e82('0x9b')](_0x5333bd)){throw new db[(_0x0e82('0x89'))]['ValidationError'](_0x0e82('0x9c'));}return _0x5581e6[_0x0e82('0x9d')+_[_0x0e82('0x9e')](_0x5333bd[_0x0e82('0x9f')]())+_0x0e82('0xa0')](_0x1e305f[_0x0e82('0x58')][_0x0e82('0xa1')],{'penalty':_0x1e305f[_0x0e82('0x58')][_0x0e82('0xa2')]||0x0})[_0x0e82('0xa3')](function(_0x4dff8e){for(var _0x2d6234=0x0;_0x2d6234<_0x1e305f['body']['ids'][_0x0e82('0x42')];_0x2d6234+=0x1){var _0x4b3009={'UserId':Number(_0x1e305f[_0x0e82('0x49')]['id'])};_0x4b3009[_[_0x0e82('0x9e')](_0x5333bd[_0x0e82('0x9f')]())+_0x0e82('0xa4')]=Number(_0x1e305f[_0x0e82('0x58')]['ids'][_0x2d6234]);socket[_0x0e82('0xa5')](_0x0e82('0x27')+_['capitalize'](_0x5333bd['toLowerCase']())+_0x0e82('0xa6'),_0x4b3009);}return _0x4dff8e;})['then'](function(){if(_0x5333bd===_0x0e82('0xa7')){return db[_0x0e82('0xa8')][_0x0e82('0x40')]({'where':{'id':_0x1e305f['body']['ids']||[]},'raw':!![],'attributes':['id',_0x0e82('0x31')]});}})['then'](function(_0x2d6d4c){var _0x5ea7fa=_0x5581e6[_0x0e82('0xa9')]({'plain':!![]});var _0xdb4057=[];if(_0x5333bd==='voice'&&_0x5ea7fa[_0x0e82('0x26')]===_0x0e82('0x29')&&_0x5ea7fa['online']){for(var _0x22da22=0x0;_0x22da22<_0x2d6d4c[_0x0e82('0x42')];_0x22da22+=0x1){_0xdb4057['push']({'membername':_0x5ea7fa['name'],'UserId':_0x5ea7fa['id'],'queue_name':_0x2d6d4c[_0x22da22][_0x0e82('0x31')],'VoiceQueueId':_0x2d6d4c[_0x22da22]['id'],'interface':_['isNil'](_0x5ea7fa[_0x0e82('0xaa')])?util[_0x0e82('0xab')]('SIP/%s',_0x5ea7fa['name']):_0x5ea7fa[_0x0e82('0xaa')],'paused':_0x5ea7fa['voicePause']||![],'penalty':_0x1e305f[_0x0e82('0x58')][_0x0e82('0xa2')]||0x0});}return BPromise[_0x0e82('0x82')](_0xdb4057,function(_0x2f741c){return db['UserVoiceQueueRt']['upsert'](_0x2f741c);});}return _0x5581e6;});}})[_0x0e82('0x13')](respondWithStatusCode(_0x25c63b,null))[_0x0e82('0x1b')](handleError(_0x25c63b,null));};exports[_0x0e82('0xac')]=function(_0x1c54a1,_0x524627){var _0x46e722;return db['User'][_0x0e82('0x30')]({'where':{'id':_0x1c54a1[_0x0e82('0x49')]['id']},'attributes':['id','name',_0x0e82('0x26')]})['then'](handleEntityNotFound(_0x524627,null))['then'](function(_0x116462){if(_0x116462){_0x46e722=_0x116462;if(!_0x1c54a1[_0x0e82('0x3c')][_0x0e82('0x97')]||!utils[_0x0e82('0x9b')](_0x1c54a1[_0x0e82('0x3c')][_0x0e82('0x97')])){throw new db[(_0x0e82('0x89'))]['ValidationError']('Unknown\x20channel');}return _0x116462['remove'+_[_0x0e82('0x9e')](_0x1c54a1[_0x0e82('0x3c')]['channel'][_0x0e82('0x9f')]())+_0x0e82('0xa0')](_0x1c54a1[_0x0e82('0x3c')][_0x0e82('0xa1')]);}})[_0x0e82('0x13')](function(_0x1fc1ee){if(_['isArray'](_0x1c54a1[_0x0e82('0x3c')][_0x0e82('0xa1')])){for(var _0x3e4d27=0x0;_0x3e4d27<_0x1c54a1[_0x0e82('0x3c')][_0x0e82('0xa1')][_0x0e82('0x42')];_0x3e4d27+=0x1){var _0x4e33a4={'UserId':Number(_0x1c54a1[_0x0e82('0x49')]['id'])};_0x4e33a4[_[_0x0e82('0x9e')](_0x1c54a1[_0x0e82('0x3c')][_0x0e82('0x97')]['toLowerCase']())+_0x0e82('0xa4')]=Number(_0x1c54a1[_0x0e82('0x3c')][_0x0e82('0xa1')][_0x3e4d27]);socket[_0x0e82('0xa5')](_0x0e82('0x27')+_[_0x0e82('0x9e')](_0x1c54a1['query'][_0x0e82('0x97')]['toLowerCase']())+_0x0e82('0xad'),_0x4e33a4);}}else{var _0x4e33a4={'UserId':Number(_0x1c54a1[_0x0e82('0x49')]['id'])};_0x4e33a4[_[_0x0e82('0x9e')](_0x1c54a1['query'][_0x0e82('0x97')]['toLowerCase']())+'QueueId']=Number(_0x1c54a1['query']['ids']);socket[_0x0e82('0xa5')](_0x0e82('0x27')+_[_0x0e82('0x9e')](_0x1c54a1['query'][_0x0e82('0x97')][_0x0e82('0x9f')]())+_0x0e82('0xad'),_0x4e33a4);}return _0x1fc1ee;})['then'](function(){if(_0x1c54a1['query'][_0x0e82('0x97')]===_0x0e82('0xa7')){return db[_0x0e82('0xae')][_0x0e82('0x25')]({'where':{'UserId':_0x1c54a1[_0x0e82('0x49')]['id'],'VoiceQueueId':_0x1c54a1[_0x0e82('0x3c')]['ids']},'individualHooks':!![]})[_0x0e82('0x13')](function(){return _0x46e722;});}return _0x46e722;})[_0x0e82('0x13')](respondWithStatusCode(_0x524627,null))[_0x0e82('0x1b')](handleError(_0x524627,null));};exports[_0x0e82('0xaf')]=function(_0x2f59ee,_0x3b8d7e){_0x2f59ee[_0x0e82('0x58')][_0x0e82('0xb0')]=_0x2f59ee['file'][_0x0e82('0xb1')];return db[_0x0e82('0x35')][_0x0e82('0x30')]({'where':{'id':_0x2f59ee[_0x0e82('0x49')]['id']}})[_0x0e82('0x13')](handleEntityNotFound(_0x3b8d7e,null))[_0x0e82('0x13')](saveUpdates(_0x2f59ee[_0x0e82('0x58')],null))['then'](respondWithResult(_0x3b8d7e,null))['catch'](handleError(_0x3b8d7e,null));};exports[_0x0e82('0xb2')]=function(_0xdea2c2,_0x1e4fb8){var _0xfeb7e9=path['join'](config[_0x0e82('0xb3')],_0x0e82('0xb4'));return db[_0x0e82('0x35')]['find']({'where':{'id':_0xdea2c2[_0x0e82('0x49')]['id']},'attributes':['id',_0x0e82('0xb0')],'raw':!![]})[_0x0e82('0x13')](handleEntityNotFound(_0x1e4fb8,null))[_0x0e82('0x13')](function(_0x2fcc6b){if(_0x2fcc6b){if(_[_0x0e82('0x60')](_0x2fcc6b[_0x0e82('0xb0')])){return _0x1e4fb8[_0x0e82('0xb5')](_0xfeb7e9);}else{if(!fs[_0x0e82('0xb6')](path[_0x0e82('0xb7')](config['root'],'server/files/images/',_0x2fcc6b[_0x0e82('0xb0')]))){return _0x1e4fb8[_0x0e82('0xb5')](_0xfeb7e9);}return _0x1e4fb8['download'](path[_0x0e82('0xb7')](config[_0x0e82('0xb3')],_0x0e82('0xb8'),_0x2fcc6b[_0x0e82('0xb0')]));}}})['catch'](handleError(_0x1e4fb8,null));};exports['getOpenTabs']=function(_0x44302b,_0x426f48){return db[_0x0e82('0x35')][_0x0e82('0x30')]({'where':{'id':_0x44302b[_0x0e82('0x49')]['id']},'attributes':['id']})[_0x0e82('0x13')](handleEntityNotFound(_0x426f48,null))[_0x0e82('0x13')](function(_0x359e78){var _0x4b2d8d=[];values=_0x359e78[_0x0e82('0x44')];_0x4b2d8d[_0x0e82('0x3f')](get_open_tabs('chat',_0x359e78[_0x0e82('0x44')]));_0x4b2d8d[_0x0e82('0x3f')](get_open_tabs('sms',_0x359e78['dataValues']));_0x4b2d8d[_0x0e82('0x3f')](get_open_tabs(_0x0e82('0x47'),_0x359e78['dataValues']));_0x4b2d8d[_0x0e82('0x3f')](get_open_tabs('whatsapp',_0x359e78[_0x0e82('0x44')]));_0x4b2d8d[_0x0e82('0x3f')](get_open_tabs('fax',_0x359e78[_0x0e82('0x44')]));_0x4b2d8d['push'](get_open_tabs('mail',_0x359e78['dataValues']));return BPromise[_0x0e82('0x56')](_0x4b2d8d);})[_0x0e82('0x13')](function(_0x200a97){var _0x5b9692=[];if(_0x200a97){for(var _0x1ecd40=0x0;_0x1ecd40<values[_0x0e82('0xb9')]['length'];_0x1ecd40++){var _0x7f3f4e=values[_0x0e82('0xb9')][_0x1ecd40];_0x5b9692[_0x0e82('0x3f')]({'channel':_0x0e82('0xba'),'id':_0x7f3f4e['id'],'createdAt':_0x7f3f4e[_0x0e82('0xbb')]});}for(var _0x1ecd40=0x0;_0x1ecd40<values[_0x0e82('0xbc')][_0x0e82('0x42')];_0x1ecd40++){var _0x7f3f4e=values[_0x0e82('0xbc')][_0x1ecd40];_0x5b9692[_0x0e82('0x3f')]({'channel':'FAX','id':_0x7f3f4e['id'],'createdAt':_0x7f3f4e[_0x0e82('0xbb')]});}for(var _0x1ecd40=0x0;_0x1ecd40<values[_0x0e82('0xbd')][_0x0e82('0x42')];_0x1ecd40++){var _0x7f3f4e=values[_0x0e82('0xbd')][_0x1ecd40];_0x5b9692['push']({'channel':'OPENCHANNEL','id':_0x7f3f4e['id'],'createdAt':_0x7f3f4e[_0x0e82('0xbb')]});}for(var _0x1ecd40=0x0;_0x1ecd40<values[_0x0e82('0xbe')]['length'];_0x1ecd40++){var _0x7f3f4e=values[_0x0e82('0xbe')][_0x1ecd40];_0x5b9692[_0x0e82('0x3f')]({'channel':_0x0e82('0xbf'),'id':_0x7f3f4e['id'],'createdAt':_0x7f3f4e[_0x0e82('0xbb')]});}for(var _0x1ecd40=0x0;_0x1ecd40<values[_0x0e82('0xc0')][_0x0e82('0x42')];_0x1ecd40++){var _0x7f3f4e=values[_0x0e82('0xc0')][_0x1ecd40];_0x5b9692[_0x0e82('0x3f')]({'channel':_0x0e82('0xc1'),'id':_0x7f3f4e['id'],'createdAt':_0x7f3f4e['createdAt']});}for(var _0x1ecd40=0x0;_0x1ecd40<values['WhatsappOpenTabs'][_0x0e82('0x42')];_0x1ecd40++){var _0x7f3f4e=values[_0x0e82('0xc2')][_0x1ecd40];_0x5b9692[_0x0e82('0x3f')]({'channel':'WHATSAPP','id':_0x7f3f4e['id'],'createdAt':_0x7f3f4e[_0x0e82('0xbb')]});}var _0x169aef={'count':_0x5b9692['length'],'rows':_0x5b9692};return _0x169aef;}else return null;})[_0x0e82('0x13')](respondWithResult(_0x426f48,null))[_0x0e82('0x1b')](handleError(_0x426f48,null));};exports[_0x0e82('0xc3')]=function(_0x5b9928,_0x2d4c57){var _0x5dae3c={};var _0x30d560={};var _0x3350ae;var _0x174338;return db[_0x0e82('0x35')]['findOne']({'where':{'id':_0x5b9928[_0x0e82('0x49')]['id']}})['then'](handleEntityNotFound(_0x2d4c57,null))[_0x0e82('0x13')](function(_0x35b946){if(_0x35b946){_0x3350ae=_0x35b946;_0x30d560[_0x0e82('0x4a')]=_[_0x0e82('0x4c')](db['CmContact']['rawAttributes']);_0x30d560[_0x0e82('0x3c')]=_[_0x0e82('0x4c')](_0x5b9928[_0x0e82('0x3c')]);_0x30d560[_0x0e82('0x4d')]=_['intersection'](_0x30d560[_0x0e82('0x4a')],_0x30d560['query']);_0x5dae3c['attributes']=_[_0x0e82('0x4e')](_0x30d560['model'],qs[_0x0e82('0x4f')](_0x5b9928[_0x0e82('0x3c')]['fields']));_0x5dae3c[_0x0e82('0x3e')]=_0x5dae3c[_0x0e82('0x3e')]['length']?_0x5dae3c[_0x0e82('0x3e')]:_0x30d560[_0x0e82('0x4a')];_0x5dae3c[_0x0e82('0xc4')]=qs[_0x0e82('0xc5')](_0x5b9928[_0x0e82('0x3c')]['sort']);_0x5dae3c[_0x0e82('0x3b')]=qs['filters'](_[_0x0e82('0xc6')](_0x5b9928['query'],_0x30d560[_0x0e82('0x4d')]));if(_0x5b9928[_0x0e82('0x3c')]['filter']){_0x5dae3c[_0x0e82('0x3b')]=_['merge'](_0x5dae3c[_0x0e82('0x3b')],{'$or':_[_0x0e82('0x2d')](_0x5dae3c[_0x0e82('0x3e')],function(_0x3fccea){var _0x3f312e={};_0x3f312e[_0x3fccea]={'$like':'%'+_0x5b9928[_0x0e82('0x3c')][_0x0e82('0x2b')]+'%'};return _0x3f312e;})});}_0x5dae3c=_['merge']({},_0x5dae3c,_0x5b9928[_0x0e82('0x52')]);return _0x3350ae[_0x0e82('0xc3')](_0x5dae3c);}})[_0x0e82('0x13')](function(_0xc15be3){if(_0xc15be3){_0x174338=_0xc15be3[_0x0e82('0x42')];if(_0x5b9928[_0x0e82('0x3c')][_0x0e82('0xc7')](_0x0e82('0x50'))){_0x5dae3c[_0x0e82('0x3d')]=[{'model':db['CmList'],'as':_0x0e82('0xc8'),'required':![]},{'model':db[_0x0e82('0xc9')],'as':'Tags','attributes':['id','name',_0x0e82('0xca')],'where':_0x5b9928[_0x0e82('0x3c')]['tag']?{'id':_0x5b9928[_0x0e82('0x3c')][_0x0e82('0xcb')]}:undefined,'required':_0x5b9928[_0x0e82('0x3c')][_0x0e82('0xcb')]?!![]:![]}];}if(!_0x5b9928[_0x0e82('0x3c')][_0x0e82('0xc7')](_0x0e82('0xcc'))){_0x5dae3c[_0x0e82('0x22')]=qs[_0x0e82('0x22')](_0x5b9928[_0x0e82('0x3c')]['limit']);_0x5dae3c[_0x0e82('0x20')]=qs[_0x0e82('0x20')](_0x5b9928[_0x0e82('0x3c')][_0x0e82('0x20')]);}return _0x3350ae['getContacts'](_0x5dae3c);}})[_0x0e82('0x13')](function(_0x2a08e8){if(_0x2a08e8){return _0x2a08e8?{'count':_0x174338,'rows':_0x2a08e8}:null;}})['then'](respondWithResult(_0x2d4c57,null))[_0x0e82('0x1b')](handleError(_0x2d4c57,null));};exports[_0x0e82('0xcd')]=function(_0x276ed7,_0x48713e){var _0x181abf;var _0x55304d;var _0x3baeb3={};var _0x1cc153;return db[_0x0e82('0x35')]['findOne']({'where':{'id':_0x276ed7[_0x0e82('0x49')]['id']},'attributes':['id',_0x0e82('0x31'),_0x0e82('0x26')]})['then'](handleEntityNotFound(_0x48713e,null))['then'](function(_0x45e2ff){if(!utils[_0x0e82('0x9b')](_0x276ed7[_0x0e82('0x3c')][_0x0e82('0x97')])){throw new db[(_0x0e82('0x89'))][(_0x0e82('0x8b'))](_0x0e82('0x9c'));}_0x181abf=_0x45e2ff;var _0x4a74bf={};_0x4a74bf[_0x0e82('0x4a')]=_[_0x0e82('0x4c')](db[_[_0x0e82('0x9e')](_0x276ed7[_0x0e82('0x3c')][_0x0e82('0x97')])+_0x0e82('0xce')][_0x0e82('0x36')]);_0x4a74bf[_0x0e82('0x3c')]=_[_0x0e82('0x4c')](_0x276ed7[_0x0e82('0x3c')]);_0x4a74bf[_0x0e82('0x4d')]=_[_0x0e82('0x4e')](_0x4a74bf[_0x0e82('0x4a')],_0x4a74bf[_0x0e82('0x3c')]);_0x3baeb3[_0x0e82('0x3e')]=_[_0x0e82('0x4e')](_0x4a74bf['model'],qs['fields'](_0x276ed7['query'][_0x0e82('0x4f')]));_0x3baeb3[_0x0e82('0x3e')]=_0x3baeb3[_0x0e82('0x3e')][_0x0e82('0x42')]?_0x3baeb3['attributes']:_0x4a74bf['model'];_0x3baeb3['order']=qs['sort'](_0x276ed7[_0x0e82('0x3c')]['sort']);_0x3baeb3['where']=qs[_0x0e82('0x4d')](_['pick'](_0x276ed7['query'],_0x4a74bf[_0x0e82('0x4d')]));if(_0x276ed7[_0x0e82('0x3c')][_0x0e82('0x2b')]){_0x3baeb3[_0x0e82('0x3b')]=_['merge'](_0x3baeb3[_0x0e82('0x3b')],{'$or':_['map'](_0x3baeb3[_0x0e82('0x3e')],function(_0xc1957a){var _0x3119f9={};_0x3119f9[_0xc1957a]={'$like':'%'+_0x276ed7[_0x0e82('0x3c')][_0x0e82('0x2b')]+'%'};return _0x3119f9;})});}_0x3baeb3=_['merge']({},_0x3baeb3,_0x276ed7[_0x0e82('0x52')]);switch(_0x181abf[_0x0e82('0x26')]){case _0x0e82('0x78'):return db[_['capitalize'](_0x276ed7[_0x0e82('0x3c')][_0x0e82('0x97')])+_0x0e82('0xce')][_0x0e82('0x40')](_0x3baeb3);case _0x0e82('0x27'):case _0x0e82('0x29'):return _0x181abf[_0x0e82('0xa9')+_[_0x0e82('0x9e')](_0x276ed7[_0x0e82('0x3c')][_0x0e82('0x97')])+_0x0e82('0xa0')](_0x3baeb3);default:throw new db[(_0x0e82('0x89'))]['ValidationError'](_0x0e82('0xcf'));}})[_0x0e82('0x13')](function(_0x2e224b){_0x1cc153=_0x2e224b[_0x0e82('0x42')];if(!_0x276ed7['query'][_0x0e82('0xc7')](_0x0e82('0xcc'))){_0x3baeb3[_0x0e82('0x22')]=qs[_0x0e82('0x22')](_0x276ed7[_0x0e82('0x3c')]['limit']);_0x3baeb3[_0x0e82('0x20')]=qs[_0x0e82('0x20')](_0x276ed7[_0x0e82('0x3c')]['offset']);}switch(_0x181abf[_0x0e82('0x26')]){case'admin':return db[_[_0x0e82('0x9e')](_0x276ed7['query'][_0x0e82('0x97')])+_0x0e82('0xce')][_0x0e82('0x40')](_0x3baeb3);case _0x0e82('0x27'):case _0x0e82('0x29'):return _0x181abf[_0x0e82('0xa9')+_[_0x0e82('0x9e')](_0x276ed7[_0x0e82('0x3c')][_0x0e82('0x97')])+_0x0e82('0xa0')](_0x3baeb3);}})['then'](function(_0x24a277){return{'count':_0x1cc153,'rows':_0x24a277};})[_0x0e82('0x13')](respondWithResult(_0x48713e,null))[_0x0e82('0x1b')](handleError(_0x48713e,null));};exports[_0x0e82('0xd0')]=function(_0x5c0f97,_0xbb2b8c){var _0x2e0016={};var _0x50bd57={};var _0x19188a;var _0x5ac3d2;return db[_0x0e82('0x35')][_0x0e82('0xd1')]({'where':{'id':_0x5c0f97[_0x0e82('0x49')]['id']}})[_0x0e82('0x13')](handleEntityNotFound(_0xbb2b8c,null))[_0x0e82('0x13')](function(_0x5be286){if(_0x5be286){_0x19188a=_0x5be286;_0x50bd57[_0x0e82('0x4a')]=_[_0x0e82('0x4c')](db[_0x0e82('0xae')][_0x0e82('0x36')]);_0x50bd57['query']=_[_0x0e82('0x4c')](_0x5c0f97[_0x0e82('0x3c')]);_0x50bd57[_0x0e82('0x4d')]=_['intersection'](_0x50bd57['model'],_0x50bd57[_0x0e82('0x3c')]);_0x2e0016[_0x0e82('0x3e')]=_[_0x0e82('0x4e')](_0x50bd57[_0x0e82('0x4a')],qs[_0x0e82('0x4f')](_0x5c0f97[_0x0e82('0x3c')][_0x0e82('0x4f')]));_0x2e0016[_0x0e82('0x3e')]=_0x2e0016[_0x0e82('0x3e')]['length']?_0x2e0016['attributes']:_0x50bd57['model'];_0x2e0016[_0x0e82('0xc4')]=qs[_0x0e82('0xc5')](_0x5c0f97[_0x0e82('0x3c')][_0x0e82('0xc5')]);_0x2e0016[_0x0e82('0x3b')]=qs['filters'](_[_0x0e82('0xc6')](_0x5c0f97[_0x0e82('0x3c')],_0x50bd57['filters']));if(_0x5c0f97[_0x0e82('0x3c')][_0x0e82('0x2b')]){_0x2e0016[_0x0e82('0x3b')]=_[_0x0e82('0x51')](_0x2e0016[_0x0e82('0x3b')],{'$or':_[_0x0e82('0x2d')](_0x2e0016[_0x0e82('0x3e')],function(_0x2d31ce){var _0x41f803={};_0x41f803[_0x2d31ce]={'$like':'%'+_0x5c0f97[_0x0e82('0x3c')][_0x0e82('0x2b')]+'%'};return _0x41f803;})});}_0x2e0016=_[_0x0e82('0x51')]({},_0x2e0016,_0x5c0f97[_0x0e82('0x52')]);return _0x19188a[_0x0e82('0xd0')](_0x2e0016);}})[_0x0e82('0x13')](function(_0x404eba){if(_0x404eba){_0x5ac3d2=_0x404eba[_0x0e82('0x42')];if(!_0x5c0f97[_0x0e82('0x3c')][_0x0e82('0xc7')]('nolimit')){_0x2e0016[_0x0e82('0x22')]=qs[_0x0e82('0x22')](_0x5c0f97[_0x0e82('0x3c')][_0x0e82('0x22')]);_0x2e0016[_0x0e82('0x20')]=qs['offset'](_0x5c0f97[_0x0e82('0x3c')][_0x0e82('0x20')]);}return _0x19188a[_0x0e82('0xd0')](_0x2e0016);}})[_0x0e82('0x13')](function(_0x2e5642){if(_0x2e5642){return _0x2e5642?{'count':_0x5ac3d2,'rows':_0x2e5642}:null;}})['then'](respondWithResult(_0xbb2b8c,null))[_0x0e82('0x1b')](handleError(_0xbb2b8c,null));};exports[_0x0e82('0xd2')]=function(_0x37debb,_0x370e11){var _0x43ccec={};var _0x2bd07c={};var _0x4b27f2;var _0x104de4;return db[_0x0e82('0x35')]['findOne']({'where':{'id':_0x37debb[_0x0e82('0x49')]['id']}})[_0x0e82('0x13')](handleEntityNotFound(_0x370e11,null))[_0x0e82('0x13')](function(_0x55eb6b){if(_0x55eb6b){_0x4b27f2=_0x55eb6b;_0x2bd07c[_0x0e82('0x4a')]=_[_0x0e82('0x4c')](db[_0x0e82('0xd3')][_0x0e82('0x36')]);_0x2bd07c['query']=_['keys'](_0x37debb[_0x0e82('0x3c')]);_0x2bd07c[_0x0e82('0x4d')]=_[_0x0e82('0x4e')](_0x2bd07c[_0x0e82('0x4a')],_0x2bd07c[_0x0e82('0x3c')]);_0x43ccec['attributes']=_[_0x0e82('0x4e')](_0x2bd07c['model'],qs['fields'](_0x37debb['query']['fields']));_0x43ccec['attributes']=_0x43ccec['attributes'][_0x0e82('0x42')]?_0x43ccec[_0x0e82('0x3e')]:_0x2bd07c[_0x0e82('0x4a')];_0x43ccec[_0x0e82('0xc4')]=qs[_0x0e82('0xc5')](_0x37debb[_0x0e82('0x3c')][_0x0e82('0xc5')]);_0x43ccec[_0x0e82('0x3b')]=qs[_0x0e82('0x4d')](_[_0x0e82('0xc6')](_0x37debb[_0x0e82('0x3c')],_0x2bd07c[_0x0e82('0x4d')]));if(_0x37debb[_0x0e82('0x3c')]['filter']){_0x43ccec[_0x0e82('0x3b')]=_['merge'](_0x43ccec['where'],{'$or':_[_0x0e82('0x2d')](_0x43ccec[_0x0e82('0x3e')],function(_0x425174){var _0x181584={};_0x181584[_0x425174]={'$like':'%'+_0x37debb[_0x0e82('0x3c')][_0x0e82('0x2b')]+'%'};return _0x181584;})});}_0x43ccec=_[_0x0e82('0x51')]({},_0x43ccec,_0x37debb[_0x0e82('0x52')]);return _0x4b27f2['getGroups'](_0x43ccec);}})[_0x0e82('0x13')](function(_0x3228e9){if(_0x3228e9){_0x104de4=_0x3228e9[_0x0e82('0x42')];if(!_0x37debb[_0x0e82('0x3c')][_0x0e82('0xc7')](_0x0e82('0xcc'))){_0x43ccec[_0x0e82('0x22')]=qs[_0x0e82('0x22')](_0x37debb[_0x0e82('0x3c')][_0x0e82('0x22')]);_0x43ccec[_0x0e82('0x20')]=qs[_0x0e82('0x20')](_0x37debb[_0x0e82('0x3c')][_0x0e82('0x20')]);}return _0x4b27f2[_0x0e82('0xd2')](_0x43ccec);}})[_0x0e82('0x13')](function(_0x229752){if(_0x229752){return _0x229752?{'count':_0x104de4,'rows':_0x229752}:null;}})[_0x0e82('0x13')](respondWithResult(_0x370e11,null))[_0x0e82('0x1b')](handleError(_0x370e11,null));};exports['getRecordings']=function(_0x410ac2,_0x3225ab){var _0x4e51ef={'raw':!![],'where':{}};var _0x205662={};var _0x2ca4c4={'count':0x0,'rows':[]};return db['User']['findOne']({'where':{'id':_0x410ac2['params']['id']}})[_0x0e82('0x13')](handleEntityNotFound(_0x3225ab,null))[_0x0e82('0x13')](function(_0x491a71){if(_0x491a71){_0x205662[_0x0e82('0x4a')]=_[_0x0e82('0x4c')](db['VoiceRecording'][_0x0e82('0x36')]);_0x205662[_0x0e82('0x3c')]=_[_0x0e82('0x4c')](_0x410ac2[_0x0e82('0x3c')]);_0x205662[_0x0e82('0x4d')]=_[_0x0e82('0x4e')](_0x205662[_0x0e82('0x4a')],_0x205662[_0x0e82('0x3c')]);_0x4e51ef[_0x0e82('0x3e')]=_[_0x0e82('0x4e')](_0x205662[_0x0e82('0x4a')],qs[_0x0e82('0x4f')](_0x410ac2[_0x0e82('0x3c')][_0x0e82('0x4f')]));_0x4e51ef['attributes']=_0x4e51ef[_0x0e82('0x3e')][_0x0e82('0x42')]?_0x4e51ef[_0x0e82('0x3e')]:_0x205662[_0x0e82('0x4a')];if(!_0x410ac2[_0x0e82('0x3c')][_0x0e82('0xc7')](_0x0e82('0xcc'))){_0x4e51ef[_0x0e82('0x22')]=qs[_0x0e82('0x22')](_0x410ac2[_0x0e82('0x3c')][_0x0e82('0x22')]);_0x4e51ef[_0x0e82('0x20')]=qs[_0x0e82('0x20')](_0x410ac2[_0x0e82('0x3c')]['offset']);}_0x4e51ef[_0x0e82('0xc4')]=qs[_0x0e82('0xc5')](_0x410ac2[_0x0e82('0x3c')]['sort']);_0x4e51ef['where']=qs[_0x0e82('0x4d')](_[_0x0e82('0xc6')](_0x410ac2[_0x0e82('0x3c')],_0x205662[_0x0e82('0x4d')]));_0x4e51ef['where']['UserId']=_0x491a71['id'];if(_0x410ac2[_0x0e82('0x3c')]['filter']){_0x4e51ef[_0x0e82('0x3b')]=_[_0x0e82('0x51')](_0x4e51ef[_0x0e82('0x3b')],{'$or':_[_0x0e82('0x2d')](_0x4e51ef[_0x0e82('0x3e')],function(_0x134cae){var _0x466d6f={};_0x466d6f[_0x134cae]={'$like':'%'+_0x410ac2[_0x0e82('0x3c')][_0x0e82('0x2b')]+'%'};return _0x466d6f;})});}_0x4e51ef=_[_0x0e82('0x51')]({},_0x4e51ef,_0x410ac2[_0x0e82('0x52')]);return db[_0x0e82('0xd4')][_0x0e82('0x23')]({'where':_0x4e51ef[_0x0e82('0x3b')]})[_0x0e82('0x13')](function(_0x2819dd){_0x2ca4c4['count']=_0x2819dd;if(_0x410ac2[_0x0e82('0x3c')][_0x0e82('0x50')]){_0x4e51ef[_0x0e82('0x3d')]=[{'all':!![]}];}return db[_0x0e82('0xd4')][_0x0e82('0x40')](_0x4e51ef);})['then'](function(_0x4238a6){_0x2ca4c4['rows']=_0x4238a6;return _0x2ca4c4;});}})[_0x0e82('0x13')](respondWithFilteredResult(_0x3225ab,_0x4e51ef))[_0x0e82('0x1b')](handleError(_0x3225ab,null));};exports[_0x0e82('0xd5')]=function(_0x279c21,_0x119ae8){var _0x5da556={'raw':!![],'where':{}};var _0xd88657={};var _0x31752d={'count':0x0,'rows':[]};return db['User'][_0x0e82('0xd1')]({'where':{'id':_0x279c21[_0x0e82('0x49')]['id']}})[_0x0e82('0x13')](handleEntityNotFound(_0x119ae8,null))['then'](function(_0x26687a){if(_0x26687a){_0xd88657[_0x0e82('0x4a')]=_[_0x0e82('0x4c')](db[_0x0e82('0xd6')][_0x0e82('0x36')]);_0xd88657[_0x0e82('0x3c')]=_[_0x0e82('0x4c')](_0x279c21[_0x0e82('0x3c')]);_0xd88657['filters']=_[_0x0e82('0x4e')](_0xd88657[_0x0e82('0x4a')],_0xd88657[_0x0e82('0x3c')]);_0x5da556['attributes']=_[_0x0e82('0x4e')](_0xd88657[_0x0e82('0x4a')],qs['fields'](_0x279c21[_0x0e82('0x3c')][_0x0e82('0x4f')]));_0x5da556[_0x0e82('0x3e')]=_0x5da556['attributes']['length']?_0x5da556[_0x0e82('0x3e')]:_0xd88657[_0x0e82('0x4a')];if(!_0x279c21[_0x0e82('0x3c')]['hasOwnProperty']('nolimit')){_0x5da556['limit']=qs[_0x0e82('0x22')](_0x279c21[_0x0e82('0x3c')][_0x0e82('0x22')]);_0x5da556[_0x0e82('0x20')]=qs[_0x0e82('0x20')](_0x279c21[_0x0e82('0x3c')][_0x0e82('0x20')]);}_0x5da556[_0x0e82('0xc4')]=qs[_0x0e82('0xc5')](_0x279c21[_0x0e82('0x3c')][_0x0e82('0xc5')]);_0x5da556[_0x0e82('0x3b')]=qs[_0x0e82('0x4d')](_[_0x0e82('0xc6')](_0x279c21['query'],_0xd88657['filters']));_0x5da556[_0x0e82('0x3b')][_0x0e82('0xd7')]=_0x26687a['id'];if(_0x279c21['query'][_0x0e82('0x2b')]){_0x5da556[_0x0e82('0x3b')]=_[_0x0e82('0x51')](_0x5da556[_0x0e82('0x3b')],{'$or':_[_0x0e82('0x2d')](_0x5da556['attributes'],function(_0xdf7c04){var _0x516840={};_0x516840[_0xdf7c04]={'$like':'%'+_0x279c21['query'][_0x0e82('0x2b')]+'%'};return _0x516840;})});}_0x5da556=_['merge']({},_0x5da556,_0x279c21[_0x0e82('0x52')]);return db['ScreenRecording'][_0x0e82('0x23')]({'where':_0x5da556[_0x0e82('0x3b')]})[_0x0e82('0x13')](function(_0x33aafd){_0x31752d[_0x0e82('0x23')]=_0x33aafd;if(_0x279c21['query']['includeAll']){_0x5da556[_0x0e82('0x3d')]=[{'all':!![]}];}return db['ScreenRecording'][_0x0e82('0x40')](_0x5da556);})[_0x0e82('0x13')](function(_0x453cd6){_0x31752d[_0x0e82('0x41')]=_0x453cd6;return _0x31752d;});}})[_0x0e82('0x13')](respondWithFilteredResult(_0x119ae8,_0x5da556))[_0x0e82('0x1b')](handleError(_0x119ae8,null));};exports[_0x0e82('0xd8')]=function(_0x2d5f04,_0x2b67de){var _0x40d415={};var _0x5e9e71={};var _0x271b87;var _0x2deafc;return db[_0x0e82('0x35')][_0x0e82('0xd1')]({'where':{'id':_0x2d5f04[_0x0e82('0x49')]['id']}})[_0x0e82('0x13')](handleEntityNotFound(_0x2b67de,null))[_0x0e82('0x13')](function(_0xe7b6a){if(_0xe7b6a){_0x271b87=_0xe7b6a;_0x5e9e71[_0x0e82('0x4a')]=_[_0x0e82('0x4c')](db[_0x0e82('0xd9')][_0x0e82('0x36')]);_0x5e9e71[_0x0e82('0x3c')]=_[_0x0e82('0x4c')](_0x2d5f04[_0x0e82('0x3c')]);_0x5e9e71[_0x0e82('0x4d')]=_['intersection'](_0x5e9e71[_0x0e82('0x4a')],_0x5e9e71['query']);_0x40d415[_0x0e82('0x3e')]=_[_0x0e82('0x4e')](_0x5e9e71[_0x0e82('0x4a')],qs['fields'](_0x2d5f04['query'][_0x0e82('0x4f')]));_0x40d415[_0x0e82('0x3e')]=_0x40d415[_0x0e82('0x3e')][_0x0e82('0x42')]?_0x40d415[_0x0e82('0x3e')]:_0x5e9e71[_0x0e82('0x4a')];_0x40d415[_0x0e82('0xc4')]=qs['sort'](_0x2d5f04[_0x0e82('0x3c')][_0x0e82('0xc5')]);_0x40d415[_0x0e82('0x3b')]=qs[_0x0e82('0x4d')](_[_0x0e82('0xc6')](_0x2d5f04[_0x0e82('0x3c')],_0x5e9e71[_0x0e82('0x4d')]));if(_0x2d5f04[_0x0e82('0x3c')]['filter']){_0x40d415['where']=_[_0x0e82('0x51')](_0x40d415[_0x0e82('0x3b')],{'$or':_[_0x0e82('0x2d')](_0x40d415['attributes'],function(_0xb8d472){var _0x466f24={};_0x466f24[_0xb8d472]={'$like':'%'+_0x2d5f04[_0x0e82('0x3c')][_0x0e82('0x2b')]+'%'};return _0x466f24;})});}_0x40d415=_['merge']({},_0x40d415,_0x2d5f04[_0x0e82('0x52')]);return _0x271b87[_0x0e82('0xd8')](_0x40d415);}})[_0x0e82('0x13')](function(_0x18a2ff){if(_0x18a2ff){_0x2deafc=_0x18a2ff[_0x0e82('0x42')];if(!_0x2d5f04[_0x0e82('0x3c')][_0x0e82('0xc7')]('nolimit')){_0x40d415[_0x0e82('0x22')]=qs[_0x0e82('0x22')](_0x2d5f04[_0x0e82('0x3c')][_0x0e82('0x22')]);_0x40d415['offset']=qs[_0x0e82('0x20')](_0x2d5f04[_0x0e82('0x3c')]['offset']);}return _0x271b87[_0x0e82('0xd8')](_0x40d415);}})[_0x0e82('0x13')](function(_0x1c2dc8){if(_0x1c2dc8){return _0x1c2dc8?{'count':_0x2deafc,'rows':_0x1c2dc8}:null;}})[_0x0e82('0x13')](respondWithResult(_0x2b67de,null))[_0x0e82('0x1b')](handleError(_0x2b67de,null));};exports[_0x0e82('0xda')]=function(_0x2fa257,_0x18e386){var _0x4e730a={};var _0x10072f={};var _0x372641;var _0x16eb0e;return db[_0x0e82('0x35')][_0x0e82('0xd1')]({'where':{'id':_0x2fa257[_0x0e82('0x49')]['id']}})[_0x0e82('0x13')](handleEntityNotFound(_0x18e386,null))[_0x0e82('0x13')](function(_0x559f7a){if(_0x559f7a){_0x372641=_0x559f7a;_0x10072f['model']=_[_0x0e82('0x4c')](db['OpenchannelInteraction'][_0x0e82('0x36')]);_0x10072f[_0x0e82('0x3c')]=_['keys'](_0x2fa257[_0x0e82('0x3c')]);_0x10072f[_0x0e82('0x4d')]=_[_0x0e82('0x4e')](_0x10072f[_0x0e82('0x4a')],_0x10072f[_0x0e82('0x3c')]);_0x4e730a[_0x0e82('0x3e')]=_[_0x0e82('0x4e')](_0x10072f[_0x0e82('0x4a')],qs[_0x0e82('0x4f')](_0x2fa257[_0x0e82('0x3c')][_0x0e82('0x4f')]));_0x4e730a[_0x0e82('0x3e')]=_0x4e730a['attributes']['length']?_0x4e730a[_0x0e82('0x3e')]:_0x10072f[_0x0e82('0x4a')];_0x4e730a[_0x0e82('0xc4')]=qs[_0x0e82('0xc5')](_0x2fa257[_0x0e82('0x3c')][_0x0e82('0xc5')]);_0x4e730a['where']=qs['filters'](_[_0x0e82('0xc6')](_0x2fa257[_0x0e82('0x3c')],_0x10072f[_0x0e82('0x4d')]));if(_0x2fa257[_0x0e82('0x3c')]['filter']){_0x4e730a[_0x0e82('0x3b')]=_[_0x0e82('0x51')](_0x4e730a[_0x0e82('0x3b')],{'$or':_[_0x0e82('0x2d')](_0x4e730a[_0x0e82('0x3e')],function(_0x14b364){var _0x1dc618={};_0x1dc618[_0x14b364]={'$like':'%'+_0x2fa257[_0x0e82('0x3c')][_0x0e82('0x2b')]+'%'};return _0x1dc618;})});}_0x4e730a=_[_0x0e82('0x51')]({},_0x4e730a,_0x2fa257['options']);return _0x372641[_0x0e82('0xda')](_0x4e730a);}})[_0x0e82('0x13')](function(_0x4777be){if(_0x4777be){_0x16eb0e=_0x4777be[_0x0e82('0x42')];if(!_0x2fa257[_0x0e82('0x3c')][_0x0e82('0xc7')](_0x0e82('0xcc'))){_0x4e730a[_0x0e82('0x22')]=qs[_0x0e82('0x22')](_0x2fa257['query'][_0x0e82('0x22')]);_0x4e730a[_0x0e82('0x20')]=qs[_0x0e82('0x20')](_0x2fa257[_0x0e82('0x3c')][_0x0e82('0x20')]);}return _0x372641[_0x0e82('0xda')](_0x4e730a);}})[_0x0e82('0x13')](function(_0x374a76){if(_0x374a76){return _0x374a76?{'count':_0x16eb0e,'rows':_0x374a76}:null;}})[_0x0e82('0x13')](respondWithResult(_0x18e386,null))[_0x0e82('0x1b')](handleError(_0x18e386,null));};exports[_0x0e82('0xdb')]=function(_0x2a3846,_0x4aea06){var _0x5d9361={'raw':!![],'where':{}};var _0x139447={};var _0x153339={'count':0x0,'rows':[]};return db[_0x0e82('0x35')][_0x0e82('0xd1')]({'where':{'id':_0x2a3846[_0x0e82('0x49')]['id']}})[_0x0e82('0x13')](handleEntityNotFound(_0x4aea06,null))[_0x0e82('0x13')](function(_0x4583f3){if(_0x4583f3){_0x139447[_0x0e82('0x4a')]=_[_0x0e82('0x4c')](db[_0x0e82('0xdc')][_0x0e82('0x36')]);_0x139447[_0x0e82('0x3c')]=_[_0x0e82('0x4c')](_0x2a3846[_0x0e82('0x3c')]);_0x139447[_0x0e82('0x4d')]=_[_0x0e82('0x4e')](_0x139447[_0x0e82('0x4a')],_0x139447['query']);_0x5d9361['attributes']=_['intersection'](_0x139447[_0x0e82('0x4a')],qs[_0x0e82('0x4f')](_0x2a3846['query'][_0x0e82('0x4f')]));_0x5d9361[_0x0e82('0x3e')]=_0x5d9361[_0x0e82('0x3e')]['length']?_0x5d9361[_0x0e82('0x3e')]:_0x139447['model'];if(!_0x2a3846[_0x0e82('0x3c')][_0x0e82('0xc7')](_0x0e82('0xcc'))){_0x5d9361[_0x0e82('0x22')]=qs[_0x0e82('0x22')](_0x2a3846[_0x0e82('0x3c')][_0x0e82('0x22')]);_0x5d9361[_0x0e82('0x20')]=qs['offset'](_0x2a3846['query'][_0x0e82('0x20')]);}_0x5d9361[_0x0e82('0xc4')]=qs['sort'](_0x2a3846[_0x0e82('0x3c')][_0x0e82('0xc5')]);_0x5d9361[_0x0e82('0x3b')]=qs[_0x0e82('0x4d')](_[_0x0e82('0xc6')](_0x2a3846['query'],_0x139447[_0x0e82('0x4d')]));_0x5d9361[_0x0e82('0x3b')][_0x0e82('0xd7')]=_0x4583f3['id'];if(_0x2a3846[_0x0e82('0x3c')][_0x0e82('0x2b')]){_0x5d9361['where']=_[_0x0e82('0x51')](_0x5d9361['where'],{'$or':_[_0x0e82('0x2d')](_0x5d9361[_0x0e82('0x3e')],function(_0x3d21fb){var _0x45b53e={};_0x45b53e[_0x3d21fb]={'$like':'%'+_0x2a3846[_0x0e82('0x3c')]['filter']+'%'};return _0x45b53e;})});}_0x5d9361=_[_0x0e82('0x51')]({},_0x5d9361,_0x2a3846['options']);return db[_0x0e82('0xdc')][_0x0e82('0x23')]({'where':_0x5d9361[_0x0e82('0x3b')]})[_0x0e82('0x13')](function(_0x3673f8){_0x153339[_0x0e82('0x23')]=_0x3673f8;if(_0x2a3846['query'][_0x0e82('0x50')]){_0x5d9361[_0x0e82('0x3d')]=[{'all':!![]}];}return db[_0x0e82('0xdc')][_0x0e82('0x40')](_0x5d9361);})[_0x0e82('0x13')](function(_0x10d871){_0x153339[_0x0e82('0x41')]=_0x10d871;return _0x153339;});}})['then'](respondWithFilteredResult(_0x4aea06,_0x5d9361))[_0x0e82('0x1b')](handleError(_0x4aea06,null));};exports['getSmsInteractions']=function(_0x3e8ed5,_0x3f084e){var _0xb03324={};var _0x1fbd1c={};var _0x37281e;var _0x1d1719;return db[_0x0e82('0x35')][_0x0e82('0xd1')]({'where':{'id':_0x3e8ed5[_0x0e82('0x49')]['id']}})[_0x0e82('0x13')](handleEntityNotFound(_0x3f084e,null))[_0x0e82('0x13')](function(_0x305962){if(_0x305962){_0x37281e=_0x305962;_0x1fbd1c['model']=_[_0x0e82('0x4c')](db[_0x0e82('0xdd')][_0x0e82('0x36')]);_0x1fbd1c[_0x0e82('0x3c')]=_[_0x0e82('0x4c')](_0x3e8ed5['query']);_0x1fbd1c['filters']=_[_0x0e82('0x4e')](_0x1fbd1c[_0x0e82('0x4a')],_0x1fbd1c['query']);_0xb03324[_0x0e82('0x3e')]=_[_0x0e82('0x4e')](_0x1fbd1c[_0x0e82('0x4a')],qs[_0x0e82('0x4f')](_0x3e8ed5[_0x0e82('0x3c')][_0x0e82('0x4f')]));_0xb03324['attributes']=_0xb03324[_0x0e82('0x3e')][_0x0e82('0x42')]?_0xb03324[_0x0e82('0x3e')]:_0x1fbd1c['model'];_0xb03324[_0x0e82('0xc4')]=qs[_0x0e82('0xc5')](_0x3e8ed5[_0x0e82('0x3c')]['sort']);_0xb03324[_0x0e82('0x3b')]=qs['filters'](_[_0x0e82('0xc6')](_0x3e8ed5['query'],_0x1fbd1c[_0x0e82('0x4d')]));if(_0x3e8ed5[_0x0e82('0x3c')][_0x0e82('0x2b')]){_0xb03324[_0x0e82('0x3b')]=_[_0x0e82('0x51')](_0xb03324[_0x0e82('0x3b')],{'$or':_[_0x0e82('0x2d')](_0xb03324[_0x0e82('0x3e')],function(_0x208980){var _0x1b1464={};_0x1b1464[_0x208980]={'$like':'%'+_0x3e8ed5[_0x0e82('0x3c')][_0x0e82('0x2b')]+'%'};return _0x1b1464;})});}_0xb03324=_[_0x0e82('0x51')]({},_0xb03324,_0x3e8ed5[_0x0e82('0x52')]);return _0x37281e['getSmsInteractions'](_0xb03324);}})[_0x0e82('0x13')](function(_0x31d6fc){if(_0x31d6fc){_0x1d1719=_0x31d6fc[_0x0e82('0x42')];if(!_0x3e8ed5[_0x0e82('0x3c')][_0x0e82('0xc7')](_0x0e82('0xcc'))){_0xb03324['limit']=qs[_0x0e82('0x22')](_0x3e8ed5[_0x0e82('0x3c')][_0x0e82('0x22')]);_0xb03324[_0x0e82('0x20')]=qs[_0x0e82('0x20')](_0x3e8ed5['query'][_0x0e82('0x20')]);}return _0x37281e[_0x0e82('0xde')](_0xb03324);}})[_0x0e82('0x13')](function(_0x37f9c1){if(_0x37f9c1){return _0x37f9c1?{'count':_0x1d1719,'rows':_0x37f9c1}:null;}})['then'](respondWithResult(_0x3f084e,null))['catch'](handleError(_0x3f084e,null));};exports[_0x0e82('0xdf')]=function(_0x4b3535,_0x1ed7da){var _0x33c76d={};var _0x5b57e9={};var _0x43a54b;var _0x707109;return db[_0x0e82('0x35')]['findOne']({'where':{'id':_0x4b3535[_0x0e82('0x49')]['id']}})[_0x0e82('0x13')](handleEntityNotFound(_0x1ed7da,null))[_0x0e82('0x13')](function(_0x74447){if(_0x74447){_0x43a54b=_0x74447;_0x5b57e9['model']=_['keys'](db[_0x0e82('0xe0')][_0x0e82('0x36')]);_0x5b57e9['query']=_[_0x0e82('0x4c')](_0x4b3535['query']);_0x5b57e9[_0x0e82('0x4d')]=_[_0x0e82('0x4e')](_0x5b57e9['model'],_0x5b57e9['query']);_0x33c76d[_0x0e82('0x3e')]=_[_0x0e82('0x4e')](_0x5b57e9[_0x0e82('0x4a')],qs[_0x0e82('0x4f')](_0x4b3535['query'][_0x0e82('0x4f')]));_0x33c76d['attributes']=_0x33c76d['attributes'][_0x0e82('0x42')]?_0x33c76d['attributes']:_0x5b57e9['model'];_0x33c76d[_0x0e82('0xc4')]=qs[_0x0e82('0xc5')](_0x4b3535[_0x0e82('0x3c')][_0x0e82('0xc5')]);_0x33c76d[_0x0e82('0x3b')]=qs['filters'](_['pick'](_0x4b3535[_0x0e82('0x3c')],_0x5b57e9[_0x0e82('0x4d')]));if(_0x4b3535['query'][_0x0e82('0x2b')]){_0x33c76d[_0x0e82('0x3b')]=_['merge'](_0x33c76d[_0x0e82('0x3b')],{'$or':_[_0x0e82('0x2d')](_0x33c76d[_0x0e82('0x3e')],function(_0x1fc8b2){var _0x2864dc={};_0x2864dc[_0x1fc8b2]={'$like':'%'+_0x4b3535[_0x0e82('0x3c')][_0x0e82('0x2b')]+'%'};return _0x2864dc;})});}_0x33c76d=_['merge']({},_0x33c76d,_0x4b3535[_0x0e82('0x52')]);return _0x43a54b[_0x0e82('0xdf')](_0x33c76d);}})[_0x0e82('0x13')](function(_0x21ec8f){if(_0x21ec8f){_0x707109=_0x21ec8f[_0x0e82('0x42')];if(!_0x4b3535[_0x0e82('0x3c')][_0x0e82('0xc7')](_0x0e82('0xcc'))){_0x33c76d['limit']=qs[_0x0e82('0x22')](_0x4b3535[_0x0e82('0x3c')]['limit']);_0x33c76d['offset']=qs['offset'](_0x4b3535[_0x0e82('0x3c')][_0x0e82('0x20')]);}return _0x43a54b[_0x0e82('0xdf')](_0x33c76d);}})[_0x0e82('0x13')](function(_0x536baf){if(_0x536baf){return _0x536baf?{'count':_0x707109,'rows':_0x536baf}:null;}})[_0x0e82('0x13')](respondWithResult(_0x1ed7da,null))[_0x0e82('0x1b')](handleError(_0x1ed7da,null));};exports['getWhatsappInteractions']=function(_0x2dc36b,_0xc75ba4){var _0x464e94={};var _0x601aa0={};var _0xa6df34;var _0x4af58f;return db['User'][_0x0e82('0xd1')]({'where':{'id':_0x2dc36b['params']['id']}})[_0x0e82('0x13')](handleEntityNotFound(_0xc75ba4,null))[_0x0e82('0x13')](function(_0x40f201){if(_0x40f201){_0xa6df34=_0x40f201;_0x601aa0[_0x0e82('0x4a')]=_[_0x0e82('0x4c')](db[_0x0e82('0xe1')][_0x0e82('0x36')]);_0x601aa0['query']=_['keys'](_0x2dc36b['query']);_0x601aa0['filters']=_['intersection'](_0x601aa0[_0x0e82('0x4a')],_0x601aa0['query']);_0x464e94[_0x0e82('0x3e')]=_[_0x0e82('0x4e')](_0x601aa0[_0x0e82('0x4a')],qs['fields'](_0x2dc36b[_0x0e82('0x3c')][_0x0e82('0x4f')]));_0x464e94[_0x0e82('0x3e')]=_0x464e94[_0x0e82('0x3e')][_0x0e82('0x42')]?_0x464e94[_0x0e82('0x3e')]:_0x601aa0['model'];_0x464e94[_0x0e82('0xc4')]=qs[_0x0e82('0xc5')](_0x2dc36b[_0x0e82('0x3c')]['sort']);_0x464e94[_0x0e82('0x3b')]=qs[_0x0e82('0x4d')](_[_0x0e82('0xc6')](_0x2dc36b[_0x0e82('0x3c')],_0x601aa0[_0x0e82('0x4d')]));if(_0x2dc36b[_0x0e82('0x3c')][_0x0e82('0x2b')]){_0x464e94['where']=_['merge'](_0x464e94[_0x0e82('0x3b')],{'$or':_['map'](_0x464e94[_0x0e82('0x3e')],function(_0x5ef920){var _0x5df5f0={};_0x5df5f0[_0x5ef920]={'$like':'%'+_0x2dc36b[_0x0e82('0x3c')][_0x0e82('0x2b')]+'%'};return _0x5df5f0;})});}_0x464e94=_[_0x0e82('0x51')]({},_0x464e94,_0x2dc36b['options']);return _0xa6df34[_0x0e82('0xe2')](_0x464e94);}})[_0x0e82('0x13')](function(_0x2a01fc){if(_0x2a01fc){_0x4af58f=_0x2a01fc[_0x0e82('0x42')];if(!_0x2dc36b['query'][_0x0e82('0xc7')](_0x0e82('0xcc'))){_0x464e94[_0x0e82('0x22')]=qs[_0x0e82('0x22')](_0x2dc36b[_0x0e82('0x3c')][_0x0e82('0x22')]);_0x464e94[_0x0e82('0x20')]=qs[_0x0e82('0x20')](_0x2dc36b[_0x0e82('0x3c')][_0x0e82('0x20')]);}return _0xa6df34[_0x0e82('0xe2')](_0x464e94);}})[_0x0e82('0x13')](function(_0x28c796){if(_0x28c796){return _0x28c796?{'count':_0x4af58f,'rows':_0x28c796}:null;}})[_0x0e82('0x13')](respondWithResult(_0xc75ba4,null))['catch'](handleError(_0xc75ba4,null));};exports[_0x0e82('0xe3')]=function(_0x270392,_0x23dbad,_0x105745){var _0x332719;var _0x3cd97d;var _0x79e0c7;var _0x2c3153=!_['isNil'](_0x270392[_0x0e82('0x49')]['id'])?_0x270392['params']['id']:!_['isNil'](_0x270392[_0x0e82('0x27')]['id'])?_0x270392[_0x0e82('0x27')]['id']:null;return db['User']['find']({'where':{'id':_0x2c3153,'role':{'$or':[_0x0e82('0x78'),_0x0e82('0x27'),_0x0e82('0x29')]}},'attributes':['id',_0x0e82('0x31'),'phone',_0x0e82('0xe4'),_0x0e82('0x26'),_0x0e82('0x5c'),_0x0e82('0x99')]})[_0x0e82('0x13')](function(_0x2fffb2){if(_0x2fffb2){if(_0x2fffb2[_0x0e82('0x26')]===_0x0e82('0x29')){_0x332719=_0x2fffb2;if(_0x270392[_0x0e82('0x58')][_0x0e82('0xaa')]){_0x79e0c7=util[_0x0e82('0xab')](_0x0e82('0xe5'),_0x332719[_0x270392[_0x0e82('0x58')]['interface']]);}else if(_0x270392[_0x0e82('0x58')][_0x0e82('0xe6')]){_0x79e0c7=util[_0x0e82('0xab')](_0x0e82('0xe7'),_0x270392['body'][_0x0e82('0xe6')]);}else{_0x79e0c7=util[_0x0e82('0xab')]('SIP/%s',_0x332719['name']);}socket['to'](util[_0x0e82('0xab')](_0x0e82('0xe8'),_0x332719[_0x0e82('0x31')]))[_0x0e82('0xa5')]('user:forcelogout',{'user':{'id':_0x332719['id'],'name':_0x332719['name']},'ip':_0x270392[_0x0e82('0xe9')][_0x0e82('0xea')]||_0x270392[_0x0e82('0xeb')][_0x0e82('0xec')]||_0x270392['socket'][_0x0e82('0xec')]||_0x270392[_0x0e82('0xeb')][_0x0e82('0xed')][_0x0e82('0xec')]});return db[_0x0e82('0xae')][_0x0e82('0x25')]({'where':{'membername':_0x332719['name']},'individualHooks':!![]});}}else{throw new db[(_0x0e82('0x89'))][(_0x0e82('0x8b'))]('User\x20not\x20found\x20or\x20not\x20allowed\x20to\x20perform\x20login\x20method');}})[_0x0e82('0x13')](function(){if(_0x332719){return _0x332719[_0x0e82('0xee')]({'raw':!![]});}})[_0x0e82('0x13')](function(_0x3bb4b9){if(_0x332719){var _0x2825ea=[];if(_0x3bb4b9){_0x3cd97d=_0x3bb4b9;if(_0x3cd97d['length']){for(var _0x36fefc=0x0;_0x36fefc<_0x3cd97d['length'];_0x36fefc++){_0x2825ea[_0x0e82('0x3f')]({'membername':_0x332719[_0x0e82('0x31')],'UserId':_0x332719['id'],'queue_name':_0x3cd97d[_0x36fefc][_0x0e82('0x31')],'VoiceQueueId':_0x3cd97d[_0x36fefc]['id'],'interface':_0x79e0c7,'paused':_0x332719[_0x0e82('0x99')]||![],'penalty':_0x3cd97d[_0x36fefc][_0x0e82('0xef')]||0x0});}return BPromise['each'](_0x2825ea,function(_0x2f5293){return db[_0x0e82('0xae')][_0x0e82('0xf0')](_0x2f5293);});}}}})[_0x0e82('0x13')](function(){if(_0x332719){return db[_0x0e82('0xf1')]['findAll']({'where':{'membername':_0x332719[_0x0e82('0x31')],'exitAt':null}});}})[_0x0e82('0x13')](function(_0x24fd6c){if(_0x332719){var _0x2644f5=[];_0x24fd6c[_0x0e82('0xf2')](function(_0x10450d){_0x2644f5[_0x0e82('0x3f')](_0x10450d[_0x0e82('0x57')]({'exitAt':moment()[_0x0e82('0xab')]('YYYY-MM-DD\x20HH:mm:ss')}));});return BPromise[_0x0e82('0x56')](_0x2644f5);}})[_0x0e82('0x13')](function(){if(_0x332719){var _0x4954b9=[];var _0x3513ee=[];var _0x23dfb4=utils[_0x0e82('0xf3')]();var _0x4a0528={'membername':_0x332719['name'],'interface':_0x79e0c7,'enterAt':moment()[_0x0e82('0xab')](_0x0e82('0xf4')),'role':_0x332719[_0x0e82('0x26')],'internal':_0x332719[_0x0e82('0x5c')]};_0x23dfb4[_0x0e82('0xf2')](function(_0x39861d){_0x4954b9[_0x0e82('0x3f')](_[_0x0e82('0x51')]({'channel':_0x39861d,'type':_0x0e82('0xf5'),'data1':_0x270392[_0x0e82('0x58')][_0x0e82('0xf6')],'data2':_0x79e0c7},_0x4a0528));if(_0x332719[_0x0e82('0x99')]){_0x3513ee['push'](_['merge']({'channel':_0x39861d,'type':_0x0e82('0xf7'),'data1':'LOGININPAUSE'},_0x4a0528));}});return db['MemberReport'][_0x0e82('0x7f')](_0x4954b9[_0x0e82('0xf8')](_0x3513ee),{'individualHooks':!![]});}})[_0x0e82('0x13')](function(){if(_0x332719){return _0x332719[_0x0e82('0x57')]({'online':!![],'lastLoginAt':moment()['format'](_0x0e82('0xf4')),'voicePause':_0x332719['loginInPause']||![],'mailPause':_0x332719[_0x0e82('0x99')]||![],'chatPause':_0x332719[_0x0e82('0x99')]||![],'faxPause':_0x332719[_0x0e82('0x99')]||![],'smsPause':_0x332719[_0x0e82('0x99')]||![],'openchannelPause':_0x332719['loginInPause']||![],'whatsappPause':_0x332719[_0x0e82('0x99')]||![],'pauseType':_0x332719[_0x0e82('0x99')]?_0x0e82('0xf9'):null,'interface':_0x79e0c7,'lastPauseAt':moment()[_0x0e82('0xab')](_0x0e82('0xf4'))});}})[_0x0e82('0x13')](function(_0x12a926){if(_0x270392[_0x0e82('0xfa')]){return _0x105745();}else{return BPromise['resolve'](_0x12a926)[_0x0e82('0x13')](respondWithResult(_0x23dbad,null));}})[_0x0e82('0x1b')](handleError(_0x23dbad,null));};exports[_0x0e82('0xfb')]=function(_0xf315b5,_0x388dfc){var _0x1d7ff3;return db['User'][_0x0e82('0x30')]({'where':{'id':_0xf315b5[_0x0e82('0x49')]['id'],'role':_0x0e82('0x29')},'attributes':['id',_0x0e82('0x31'),_0x0e82('0x26')]})[_0x0e82('0x13')](handleEntityNotFound(_0x388dfc,null))[_0x0e82('0x13')](function(_0x54092b){if(_0x54092b){_0x1d7ff3=_0x54092b;return db['UserVoiceQueueRt'][_0x0e82('0x25')]({'where':{'membername':_0x1d7ff3[_0x0e82('0x31')]},'individualHooks':!![]});}})[_0x0e82('0x13')](function(){return db['MemberReport']['findAll']({'where':{'membername':_0x1d7ff3['name'],'exitAt':null}});})[_0x0e82('0x13')](function(_0x4f5aa1){var _0x4b7029=[];_0x4f5aa1['forEach'](function(_0x199c49){_0x4b7029['push'](_0x199c49[_0x0e82('0x57')]({'exitAt':moment()[_0x0e82('0xab')](_0x0e82('0xf4'))}));});return BPromise[_0x0e82('0x56')](_0x4b7029);})[_0x0e82('0x13')](function(){return _0x1d7ff3[_0x0e82('0x57')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![],'interface':null});})[_0x0e82('0x13')](respondWithResult(_0x388dfc,null))[_0x0e82('0x1b')](handleError(_0x388dfc,null));};exports['pause']=function(_0x99d572,_0x182c98){var _0x3d3a81;return db['UserVoiceQueueRt'][_0x0e82('0x57')]({'paused':0x1},{'where':{'UserId':_0x99d572[_0x0e82('0x49')]['id']},'individualHooks':!![]})[_0x0e82('0x13')](function(){return db[_0x0e82('0x35')][_0x0e82('0x30')]({'where':{'id':_0x99d572[_0x0e82('0x49')]['id'],'role':_0x0e82('0x29')},'attributes':['id',_0x0e82('0x31'),'role',_0x0e82('0x5c'),'interface']});})[_0x0e82('0x13')](handleEntityNotFound(_0x182c98,null))[_0x0e82('0x13')](function(_0x4e44b8){if(_0x4e44b8){_0x3d3a81=_0x4e44b8;return respondWithRpcPromise(_0x0e82('0xfc'),_0x0e82('0xfd'),{'id':_0x3d3a81['id'],'name':_0x3d3a81['name'],'pause':!![]});}})[_0x0e82('0x13')](function(){if(_0x3d3a81){return db['MemberReport'][_0x0e82('0x40')]({'where':{'membername':_0x3d3a81[_0x0e82('0x31')],'type':'PAUSE','exitAt':null}});}})[_0x0e82('0x13')](function(_0xd2b7e){if(_0xd2b7e[_0x0e82('0x42')]){var _0x20f5b0=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');for(var _0x4d6892=0x0,_0x94cbdc=_0xd2b7e['length'];_0x4d6892<_0x94cbdc;_0x4d6892++){_0xd2b7e[_0x4d6892][_0x0e82('0xfe')]({'exitAt':_0x20f5b0});}}})[_0x0e82('0x13')](function(){var _0x1bcabe=[];var _0xed430d=utils[_0x0e82('0xf3')]();_0xed430d[_0x0e82('0xf2')](function(_0x4ccf60){_0x1bcabe[_0x0e82('0x3f')]({'channel':_0x4ccf60,'membername':_0x3d3a81[_0x0e82('0x31')],'interface':_[_0x0e82('0x60')](_0x3d3a81['interface'])?util['format'](_0x0e82('0xe7'),_0x3d3a81['name']):_0x3d3a81['interface'],'type':_0x0e82('0xf7'),'enterAt':moment()[_0x0e82('0xab')](_0x0e82('0xf4')),'data1':_0x99d572[_0x0e82('0x58')][_0x0e82('0xff')]||'DEFAULT\x20PAUSE','role':_0x3d3a81[_0x0e82('0x26')],'internal':_0x3d3a81[_0x0e82('0x5c')]});});return db['MemberReport'][_0x0e82('0x7f')](_0x1bcabe,{'individualHooks':!![]});})['then'](function(){return _0x3d3a81['update']({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'whatsappPause':!![],'openchannelPause':!![],'pauseType':_0x99d572[_0x0e82('0x58')][_0x0e82('0xff')]||_0x0e82('0x100'),'lastPauseAt':moment()[_0x0e82('0xab')](_0x0e82('0xf4'))});})[_0x0e82('0x13')](respondWithResult(_0x182c98,null))['catch'](handleError(_0x182c98,null));};exports[_0x0e82('0x101')]=function(_0x5d6a3f,_0x3586ed){var _0x5534dc;return db[_0x0e82('0x35')][_0x0e82('0x30')]({'where':{'id':_0x5d6a3f[_0x0e82('0x49')]['id']},'attributes':['id',_0x0e82('0x31'),'role',_0x0e82('0x9a'),_0x0e82('0x102'),_0x0e82('0x103'),_0x0e82('0x104'),_0x0e82('0x105'),_0x0e82('0x106'),_0x0e82('0x107'),_0x0e82('0x108'),_0x0e82('0x109')]})[_0x0e82('0x13')](handleEntityNotFound(_0x3586ed,null))[_0x0e82('0x13')](function(_0x2ffe62){if(_0x2ffe62){_0x5534dc=_0x2ffe62;if(_0x5d6a3f[_0x0e82('0x58')][_0x0e82('0x97')]&&!utils['isValidChannel'](_0x5d6a3f[_0x0e82('0x58')][_0x0e82('0x97')])){throw new db[(_0x0e82('0x89'))]['ValidationError'](_0x0e82('0x9c'));}switch(_0x5d6a3f['body'][_0x0e82('0x97')]){case _0x0e82('0xa7'):return respondWithRpcPromise(_0x0e82('0xfc'),_0x0e82('0x101'),{'id':_0x5534dc['id'],'name':_0x5534dc[_0x0e82('0x31')],'pause':![]})['then'](function(){return db['UserVoiceQueueRt']['update']({'paused':0x0},{'where':{'UserId':_0x5534dc['id']},'individualHooks':!![]});})['then'](function(){return db[_0x0e82('0xf1')][_0x0e82('0x30')]({'where':{'channel':_0x5d6a3f['body'][_0x0e82('0x97')],'membername':_0x5534dc[_0x0e82('0x31')],'type':_0x0e82('0xf7'),'exitAt':null}});})[_0x0e82('0x13')](function(_0x5a1c67){if(_0x5a1c67){return _0x5a1c67['update']({'exitAt':moment()['format'](_0x0e82('0xf4')),'data2':_0x0e82('0x10a')},{'individualHooks':!![]});}return null;})[_0x0e82('0x13')](function(){return _0x5534dc[_0x0e82('0x57')]({'voicePause':![]});});case _0x0e82('0x46'):case _0x0e82('0x43'):case _0x0e82('0x45'):case _0x0e82('0x55'):case'whatsapp':case _0x0e82('0x47'):return db[_0x0e82('0xf1')][_0x0e82('0x30')]({'where':{'channel':_0x5d6a3f['body'][_0x0e82('0x97')],'membername':_0x5534dc[_0x0e82('0x31')],'type':_0x0e82('0xf7'),'exitAt':null}})[_0x0e82('0x13')](function(_0x36bdd1){if(_0x36bdd1){return _0x36bdd1[_0x0e82('0x57')]({'exitAt':moment()[_0x0e82('0xab')](_0x0e82('0xf4')),'data2':_0x0e82('0x10a')},{'individualHooks':!![]});}return null;})[_0x0e82('0x13')](function(){var _0x56160e={};_[_0x0e82('0x10b')](_0x56160e,util[_0x0e82('0xab')](_0x0e82('0x10c'),_0x5d6a3f[_0x0e82('0x58')]['channel'],_0x0e82('0x10d')),![]);return _0x5534dc['update'](_0x56160e);});default:return respondWithRpcPromise(_0x0e82('0xfc'),_0x0e82('0x101'),{'id':_0x5534dc['id'],'name':_0x5534dc[_0x0e82('0x31')],'pause':![]})[_0x0e82('0x13')](function(){return db[_0x0e82('0xae')][_0x0e82('0x57')]({'paused':0x0},{'where':{'UserId':_0x5534dc['id']}});})['then'](function(){return db[_0x0e82('0xf1')][_0x0e82('0x40')]({'where':{'membername':_0x5534dc[_0x0e82('0x31')],'type':'PAUSE','exitAt':null}});})[_0x0e82('0x13')](function(_0x8358be){var _0x419244=[];_0x8358be[_0x0e82('0xf2')](function(_0x58e6a7){_0x419244[_0x0e82('0x3f')](_0x58e6a7[_0x0e82('0x57')]({'exitAt':moment()[_0x0e82('0xab')]('YYYY-MM-DD\x20HH:mm:ss'),'data2':'manual'}));});return BPromise[_0x0e82('0x56')](_0x419244);})[_0x0e82('0x13')](function(){return _0x5534dc['update']({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'whatsappPause':![],'openchannelPause':![]});});}}})[_0x0e82('0x13')](respondWithResult(_0x3586ed,null))[_0x0e82('0x1b')](handleError(_0x3586ed,null));};exports[_0x0e82('0x10e')]=function(_0x13a953,_0x4a3e76){var _0x129cfd={};var _0x51fc1f={};var _0x1a9aec;var _0x3f6820;return db['User'][_0x0e82('0xd1')]({'where':{'id':_0x13a953[_0x0e82('0x49')]['id']}})[_0x0e82('0x13')](handleEntityNotFound(_0x4a3e76,null))[_0x0e82('0x13')](function(_0x47c27d){if(_0x47c27d){_0x1a9aec=_0x47c27d;_0x51fc1f[_0x0e82('0x4a')]=_[_0x0e82('0x4c')](db[_0x0e82('0x10f')][_0x0e82('0x36')]);_0x51fc1f[_0x0e82('0x3c')]=_[_0x0e82('0x4c')](_0x13a953[_0x0e82('0x3c')]);_0x51fc1f['filters']=_[_0x0e82('0x4e')](_0x51fc1f[_0x0e82('0x4a')],_0x51fc1f['query']);_0x129cfd['attributes']=_[_0x0e82('0x4e')](_0x51fc1f[_0x0e82('0x4a')],qs[_0x0e82('0x4f')](_0x13a953[_0x0e82('0x3c')][_0x0e82('0x4f')]));_0x129cfd['attributes']=_0x129cfd[_0x0e82('0x3e')][_0x0e82('0x42')]?_0x129cfd[_0x0e82('0x3e')]:_0x51fc1f[_0x0e82('0x4a')];_0x129cfd[_0x0e82('0xc4')]=qs[_0x0e82('0xc5')](_0x13a953[_0x0e82('0x3c')][_0x0e82('0xc5')]);_0x129cfd[_0x0e82('0x3b')]=qs[_0x0e82('0x4d')](_[_0x0e82('0xc6')](_0x13a953[_0x0e82('0x3c')],_0x51fc1f[_0x0e82('0x4d')]));if(_0x13a953[_0x0e82('0x3c')][_0x0e82('0x2b')]){_0x129cfd[_0x0e82('0x3b')]=_[_0x0e82('0x51')](_0x129cfd[_0x0e82('0x3b')],{'$or':_['map'](_0x129cfd['attributes'],function(_0x49c210){var _0x51edb6={};_0x51edb6[_0x49c210]={'$like':'%'+_0x13a953[_0x0e82('0x3c')][_0x0e82('0x2b')]+'%'};return _0x51edb6;})});}_0x129cfd=_['merge']({},_0x129cfd,_0x13a953['options']);return _0x1a9aec[_0x0e82('0x10e')](_0x129cfd);}})['then'](function(_0x209252){if(_0x209252){_0x3f6820=_0x209252[_0x0e82('0x42')];if(!_0x13a953[_0x0e82('0x3c')][_0x0e82('0xc7')](_0x0e82('0xcc'))){_0x129cfd['limit']=qs[_0x0e82('0x22')](_0x13a953[_0x0e82('0x3c')][_0x0e82('0x22')]);_0x129cfd[_0x0e82('0x20')]=qs[_0x0e82('0x20')](_0x13a953['query'][_0x0e82('0x20')]);}return _0x1a9aec[_0x0e82('0x10e')](_0x129cfd);}})[_0x0e82('0x13')](function(_0x38a2ea){if(_0x38a2ea){return _0x38a2ea?{'count':_0x3f6820,'rows':_0x38a2ea}:null;}})[_0x0e82('0x13')](respondWithResult(_0x4a3e76,null))[_0x0e82('0x1b')](handleError(_0x4a3e76,null));};exports['addTeams']=function(_0xb6c3ba,_0x25071d){return db[_0x0e82('0x35')]['find']({'where':{'id':_0xb6c3ba[_0x0e82('0x49')]['id']}})[_0x0e82('0x13')](handleEntityNotFound(_0x25071d,null))['then'](function(_0x20f834){if(_0x20f834){var _0x92ab83=_0x20f834['get']({'plain':!![]});return _0x20f834['addTeams'](_0xb6c3ba[_0x0e82('0x58')][_0x0e82('0xa1')],_[_0x0e82('0x5b')](_0xb6c3ba['body'],[_0x0e82('0xa1'),'id'])||{})[_0x0e82('0x13')](function(){for(var _0x760915=0x0;_0x760915<_0xb6c3ba[_0x0e82('0x58')][_0x0e82('0xa1')][_0x0e82('0x42')];_0x760915++){var _0x1362d3=[];db[_0x0e82('0x10f')][_0x0e82('0xd1')]({'where':{'id':_0xb6c3ba[_0x0e82('0x58')][_0x0e82('0xa1')][_0x760915]}})[_0x0e82('0x13')](function(_0x84eb1c){_0x1362d3[_0x0e82('0x3f')](_0x84eb1c[_0x0e82('0xee')]()['then'](function(_0x52d431){for(var _0xf8e7b7=0x0;_0xf8e7b7<_0x52d431[_0x0e82('0x42')];_0xf8e7b7++){_0x52d431[_0xf8e7b7]['setDataValue']('channel','Voice');}return _0x52d431;}));_0x1362d3[_0x0e82('0x3f')](_0x84eb1c[_0x0e82('0x110')]()[_0x0e82('0x13')](function(_0x40721b){for(var _0x40ab2f=0x0;_0x40ab2f<_0x40721b[_0x0e82('0x42')];_0x40ab2f++){_0x40721b[_0x40ab2f][_0x0e82('0x111')]('channel','Chat');}return _0x40721b;}));_0x1362d3[_0x0e82('0x3f')](_0x84eb1c['getMailQueues']()[_0x0e82('0x13')](function(_0x22075a){for(var _0xf6cd60=0x0;_0xf6cd60<_0x22075a[_0x0e82('0x42')];_0xf6cd60++){_0x22075a[_0xf6cd60]['setDataValue']('channel',_0x0e82('0x112'));}return _0x22075a;}));_0x1362d3[_0x0e82('0x3f')](_0x84eb1c[_0x0e82('0x113')]()[_0x0e82('0x13')](function(_0x65f199){for(var _0x40fbe0=0x0;_0x40fbe0<_0x65f199[_0x0e82('0x42')];_0x40fbe0++){_0x65f199[_0x40fbe0]['setDataValue'](_0x0e82('0x97'),_0x0e82('0x114'));}return _0x65f199;}));_0x1362d3[_0x0e82('0x3f')](_0x84eb1c[_0x0e82('0x115')]()[_0x0e82('0x13')](function(_0x5c8907){for(var _0x414027=0x0;_0x414027<_0x5c8907[_0x0e82('0x42')];_0x414027++){_0x5c8907[_0x414027]['setDataValue']('channel',_0x0e82('0x116'));}return _0x5c8907;}));_0x1362d3['push'](_0x84eb1c['getFaxQueues']()[_0x0e82('0x13')](function(_0x3a4854){for(var _0x41722c=0x0;_0x41722c<_0x3a4854[_0x0e82('0x42')];_0x41722c++){_0x3a4854[_0x41722c][_0x0e82('0x111')](_0x0e82('0x97'),_0x0e82('0x117'));}return _0x3a4854;}));_0x1362d3[_0x0e82('0x3f')](_0x84eb1c[_0x0e82('0x118')]()[_0x0e82('0x13')](function(_0x5daf82){for(var _0x4d0931=0x0;_0x4d0931<_0x5daf82[_0x0e82('0x42')];_0x4d0931++){_0x5daf82[_0x4d0931][_0x0e82('0x111')](_0x0e82('0x97'),_0x0e82('0x119'));}return _0x5daf82;}));return BPromise[_0x0e82('0x56')](_0x1362d3);})[_0x0e82('0x13')](function(_0xa067f){var _0x311b2f=_['flatten'](_0xa067f);_0x1362d3=[];return db[_0x0e82('0x62')][_0x0e82('0x11a')](function(_0x5593e7){for(var _0x44ed24=0x0;_0x44ed24<_0x311b2f['length'];_0x44ed24++){_0x1362d3[_0x0e82('0x3f')](_0x311b2f[_0x44ed24][_0x0e82('0x11b')](_0x92ab83['id']),{'transaction':_0x5593e7});}return BPromise[_0x0e82('0x56')](_0x1362d3)[_0x0e82('0x13')](function(){if(_0x92ab83[_0x0e82('0x98')]){return BPromise[_0x0e82('0x82')](_['filter'](_0x311b2f,function(_0x2fd49d){return _0x2fd49d['getDataValue'](_0x0e82('0x97'))===_0x0e82('0x11c');}),function(_0x458efe){return db[_0x0e82('0xae')][_0x0e82('0xf0')]({'membername':_0x92ab83[_0x0e82('0x31')],'UserId':_0x92ab83['id'],'queue_name':_0x458efe[_0x0e82('0x31')],'VoiceQueueId':_0x458efe['id'],'interface':_[_0x0e82('0x60')](_0x92ab83['interface'])?util[_0x0e82('0xab')]('SIP/%s',_0x92ab83[_0x0e82('0x31')]):_0x92ab83[_0x0e82('0xaa')],'paused':_0x92ab83[_0x0e82('0x9a')]||![],'penalty':_0x92ab83['penalty']},{'transaction':_0x5593e7});});}else{return;}})[_0x0e82('0x13')](function(){for(var _0x571605=0x0;_0x571605<_0x311b2f['length'];_0x571605++){var _0x5a3b4d=_0x311b2f[_0x571605][_0x0e82('0x11d')](_0x0e82('0x97'));var _0x2a5a59=_0x5a3b4d+_0x0e82('0xa4');socket[_0x0e82('0xa5')](_0x0e82('0x27')+_0x5a3b4d+'Queue:save',{'UserId':_0x92ab83['id'],['queueField']:_0x311b2f[_0x571605]['id']});}});});});}});}})[_0x0e82('0x13')](respondWithStatusCode(_0x25071d,null))[_0x0e82('0x1b')](handleError(_0x25071d,null));};exports[_0x0e82('0x11e')]=function(_0x505ab3,_0x91ac36){return db[_0x0e82('0x35')]['findOne']({'where':{'id':_0x505ab3[_0x0e82('0x49')]['id']}})[_0x0e82('0x13')](handleEntityNotFound(_0x91ac36,null))[_0x0e82('0x13')](function(_0x285b00){if(_0x285b00){var _0x1ef028=_0x285b00[_0x0e82('0xa9')]({'plain':!![]});var _0x249017=_0x505ab3[_0x0e82('0x3c')]['ids'];return _0x285b00[_0x0e82('0x11e')](_0x249017)[_0x0e82('0x13')](function(){for(var _0x57159a=0x0;_0x57159a<_0x249017[_0x0e82('0x42')];_0x57159a++){var _0x1d0f8b=[];db[_0x0e82('0x10f')][_0x0e82('0xd1')]({'where':{'id':_0x249017[_0x57159a]}})[_0x0e82('0x13')](function(_0x400eaa){_0x1d0f8b['push'](_0x400eaa['getVoiceQueues']()[_0x0e82('0x13')](function(_0x4fd7f2){for(var _0x2ef793=0x0;_0x2ef793<_0x4fd7f2['length'];_0x2ef793++){_0x4fd7f2[_0x2ef793]['setDataValue']('channel',_0x0e82('0x11c'));}return _0x4fd7f2;}));_0x1d0f8b[_0x0e82('0x3f')](_0x400eaa[_0x0e82('0x110')]()['then'](function(_0x579ba2){for(var _0x22bc17=0x0;_0x22bc17<_0x579ba2['length'];_0x22bc17++){_0x579ba2[_0x22bc17][_0x0e82('0x111')](_0x0e82('0x97'),_0x0e82('0x11f'));}return _0x579ba2;}));_0x1d0f8b[_0x0e82('0x3f')](_0x400eaa[_0x0e82('0x120')]()[_0x0e82('0x13')](function(_0x570bc4){for(var _0x565988=0x0;_0x565988<_0x570bc4[_0x0e82('0x42')];_0x565988++){_0x570bc4[_0x565988][_0x0e82('0x111')](_0x0e82('0x97'),_0x0e82('0x112'));}return _0x570bc4;}));_0x1d0f8b[_0x0e82('0x3f')](_0x400eaa[_0x0e82('0x113')]()[_0x0e82('0x13')](function(_0x375bfb){for(var _0x162414=0x0;_0x162414<_0x375bfb[_0x0e82('0x42')];_0x162414++){_0x375bfb[_0x162414][_0x0e82('0x111')](_0x0e82('0x97'),_0x0e82('0x114'));}return _0x375bfb;}));_0x1d0f8b[_0x0e82('0x3f')](_0x400eaa[_0x0e82('0x115')]()['then'](function(_0x13641e){for(var _0x1964ae=0x0;_0x1964ae<_0x13641e[_0x0e82('0x42')];_0x1964ae++){_0x13641e[_0x1964ae][_0x0e82('0x111')]('channel','Whatsapp');}return _0x13641e;}));_0x1d0f8b[_0x0e82('0x3f')](_0x400eaa[_0x0e82('0x121')]()[_0x0e82('0x13')](function(_0x3a4644){for(var _0x832ee5=0x0;_0x832ee5<_0x3a4644[_0x0e82('0x42')];_0x832ee5++){_0x3a4644[_0x832ee5][_0x0e82('0x111')]('channel','Fax');}return _0x3a4644;}));_0x1d0f8b[_0x0e82('0x3f')](_0x400eaa[_0x0e82('0x118')]()['then'](function(_0x21f4ac){for(var _0x430227=0x0;_0x430227<_0x21f4ac[_0x0e82('0x42')];_0x430227++){_0x21f4ac[_0x430227][_0x0e82('0x111')]('channel','Openchannel');}return _0x21f4ac;}));return BPromise[_0x0e82('0x56')](_0x1d0f8b);})['then'](function(_0x2a973c){var _0x594c78=_[_0x0e82('0x122')](_0x2a973c);_0x1d0f8b=[];return db['sequelize'][_0x0e82('0x11a')](function(_0x2522b1){for(var _0x3fdb8c=0x0;_0x3fdb8c<_0x594c78['length'];_0x3fdb8c++){_0x1d0f8b[_0x0e82('0x3f')](_0x594c78[_0x3fdb8c][_0x0e82('0x123')](_0x1ef028['id']),{'transaction':_0x2522b1});}return BPromise[_0x0e82('0x56')](_0x1d0f8b)[_0x0e82('0x13')](function(){if(_0x1ef028[_0x0e82('0x98')]){return BPromise['each'](_['filter'](_0x594c78,function(_0x233416){return _0x233416[_0x0e82('0x11d')](_0x0e82('0x97'))==='Voice';}),function(_0x171297){return db[_0x0e82('0xae')][_0x0e82('0x25')]({'where':{'VoiceQueueId':_0x171297['id'],'UserId':_0x1ef028['id']},'transaction':_0x2522b1});});}else{return;}})[_0x0e82('0x13')](function(){for(var _0x1c0e09=0x0;_0x1c0e09<_0x594c78[_0x0e82('0x42')];_0x1c0e09++){var _0xad3b8c=_0x594c78[_0x1c0e09][_0x0e82('0x11d')](_0x0e82('0x97'));var _0x5a62a0=_0xad3b8c+_0x0e82('0xa4');socket[_0x0e82('0xa5')](_0x0e82('0x27')+_0xad3b8c+_0x0e82('0xad'),{'UserId':_0x1ef028['id'],['queueField']:_0x594c78[_0x1c0e09]['id']});}});});});}});}})[_0x0e82('0x13')](respondWithStatusCode(_0x91ac36,null))[_0x0e82('0x1b')](handleError(_0x91ac36,null));};exports[_0x0e82('0x124')]=function(_0x40a46a,_0x4fc201){var _0x453c6a={};var _0x254798={};var _0x485164;var _0x4b5676;return db[_0x0e82('0x35')][_0x0e82('0xd1')]({'where':{'id':_0x40a46a['params']['id']}})[_0x0e82('0x13')](handleEntityNotFound(_0x4fc201,null))[_0x0e82('0x13')](function(_0x248fac){if(_0x248fac){_0x485164=_0x248fac;_0x254798[_0x0e82('0x4a')]=_[_0x0e82('0x4c')](db[_0x0e82('0x125')][_0x0e82('0x36')]);_0x254798['query']=_[_0x0e82('0x4c')](_0x40a46a['query']);_0x254798[_0x0e82('0x4d')]=_[_0x0e82('0x4e')](_0x254798[_0x0e82('0x4a')],_0x254798['query']);_0x453c6a['attributes']=_[_0x0e82('0x4e')](_0x254798['model'],qs['fields'](_0x40a46a['query'][_0x0e82('0x4f')]));_0x453c6a['attributes']=_0x453c6a[_0x0e82('0x3e')][_0x0e82('0x42')]?_0x453c6a[_0x0e82('0x3e')]:_0x254798[_0x0e82('0x4a')];_0x453c6a[_0x0e82('0xc4')]=qs[_0x0e82('0xc5')](_0x40a46a[_0x0e82('0x3c')][_0x0e82('0xc5')]);_0x453c6a[_0x0e82('0x3b')]=qs[_0x0e82('0x4d')](_[_0x0e82('0xc6')](_0x40a46a[_0x0e82('0x3c')],_0x254798['filters']));if(_0x40a46a[_0x0e82('0x3c')]['filter']){_0x453c6a[_0x0e82('0x3b')]=_[_0x0e82('0x51')](_0x453c6a[_0x0e82('0x3b')],{'$or':_[_0x0e82('0x2d')](_0x453c6a[_0x0e82('0x3e')],function(_0x26eb2e){var _0x1fdea2={};_0x1fdea2[_0x26eb2e]={'$like':'%'+_0x40a46a[_0x0e82('0x3c')]['filter']+'%'};return _0x1fdea2;})});}_0x453c6a=_['merge']({},_0x453c6a,_0x40a46a[_0x0e82('0x52')]);return _0x485164['getLists'](_0x453c6a);}})[_0x0e82('0x13')](function(_0x4595ef){if(_0x4595ef){_0x4b5676=_0x4595ef[_0x0e82('0x42')];if(!_0x40a46a[_0x0e82('0x3c')]['hasOwnProperty']('nolimit')){_0x453c6a['limit']=qs[_0x0e82('0x22')](_0x40a46a[_0x0e82('0x3c')][_0x0e82('0x22')]);_0x453c6a['offset']=qs[_0x0e82('0x20')](_0x40a46a['query'][_0x0e82('0x20')]);}return _0x485164[_0x0e82('0x124')](_0x453c6a);}})['then'](function(_0x56ce1a){if(_0x56ce1a){return _0x56ce1a?{'count':_0x4b5676,'rows':_0x56ce1a}:null;}})[_0x0e82('0x13')](respondWithResult(_0x4fc201,null))['catch'](handleError(_0x4fc201,null));};exports[_0x0e82('0x126')]=function(_0x4d875b,_0x371c1c){var _0x25f656={};var _0x42617e={};var _0xe650eb;var _0x16e7eb;return db[_0x0e82('0x35')]['findOne']({'where':{'id':_0x4d875b['params']['id']}})[_0x0e82('0x13')](handleEntityNotFound(_0x371c1c,null))[_0x0e82('0x13')](function(_0x1f89f0){if(_0x1f89f0){_0xe650eb=_0x1f89f0;_0x42617e[_0x0e82('0x4a')]=_[_0x0e82('0x4c')](db[_0x0e82('0x35')][_0x0e82('0x36')]);_0x42617e[_0x0e82('0x3c')]=_[_0x0e82('0x4c')](_0x4d875b[_0x0e82('0x3c')]);_0x42617e[_0x0e82('0x4d')]=_['intersection'](_0x42617e[_0x0e82('0x4a')],_0x42617e['query']);_0x25f656[_0x0e82('0x3e')]=_[_0x0e82('0x4e')](_0x42617e['model'],qs[_0x0e82('0x4f')](_0x4d875b['query']['fields']));_0x25f656[_0x0e82('0x3e')]=_0x25f656[_0x0e82('0x3e')][_0x0e82('0x42')]?_0x25f656['attributes']:_0x42617e['model'];_0x25f656[_0x0e82('0xc4')]=qs[_0x0e82('0xc5')](_0x4d875b[_0x0e82('0x3c')][_0x0e82('0xc5')]);_0x25f656[_0x0e82('0x3b')]=qs[_0x0e82('0x4d')](_['pick'](_0x4d875b[_0x0e82('0x3c')],_0x42617e[_0x0e82('0x4d')]));if(_0x4d875b[_0x0e82('0x3c')][_0x0e82('0x2b')]){_0x25f656[_0x0e82('0x3b')]=_[_0x0e82('0x51')](_0x25f656['where'],{'$or':_[_0x0e82('0x2d')](_0x25f656[_0x0e82('0x3e')],function(_0x51ac54){var _0x466144={};_0x466144[_0x51ac54]={'$like':'%'+_0x4d875b['query'][_0x0e82('0x2b')]+'%'};return _0x466144;})});}_0x25f656['model']=db[_0x0e82('0x35')];_0x25f656['as']=_0x0e82('0x28');_0x25f656=_['merge']({},_0x25f656,_0x4d875b['options']);return _0xe650eb[_0x0e82('0xee')]({'include':[_0x25f656]});}})[_0x0e82('0x13')](function(_0x4db790){if(_0x4db790){var _0x185244={},_0x1a5573=[],_0xcad26d=0x0;for(var _0x4f38bd=0x0;_0x4f38bd<_0x4db790[_0x0e82('0x42')];_0x4f38bd+=0x1){for(var _0x4f29a1=0x0,_0x679276;_0x4f29a1<_0x4db790[_0x4f38bd]['Agents'][_0x0e82('0x42')];_0x4f29a1+=0x1){_0x679276=_0x4db790[_0x4f38bd][_0x0e82('0x28')][_0x4f29a1][_0x0e82('0xa9')]({'plain':!![]});_0x185244[_0x679276['id']]=_0x679276;}}_0x185244=_[_0x0e82('0x127')](_0x185244);for(var _0x2bca5a=qs[_0x0e82('0x20')](_0x4d875b[_0x0e82('0x3c')]['offset']);_0x2bca5a<_0x185244[_0x0e82('0x42')]&&_0x1a5573[_0x0e82('0x42')]<qs[_0x0e82('0x22')](_0x4d875b[_0x0e82('0x3c')][_0x0e82('0x22')]);_0x2bca5a+=0x1){if(_0x185244[_0x2bca5a]){_0x1a5573[_0x0e82('0x3f')](_0x185244[_0x2bca5a]);}}return{'count':_0x185244['length'],'rows':_0x1a5573};}})[_0x0e82('0x13')](respondWithResult(_0x371c1c,null))['catch'](handleError(_0x371c1c,null));};exports[_0x0e82('0x25')]=function(_0x2833ef,_0x356706){if(_0x2833ef[_0x0e82('0x27')]['id']==_0x2833ef[_0x0e82('0x49')]['id']){return _0x356706[_0x0e82('0x1d')](0x1f4)[_0x0e82('0x34')]({'message':_0x0e82('0x128')});}return db[_0x0e82('0x35')][_0x0e82('0x30')]({'where':{'id':_0x2833ef[_0x0e82('0x49')]['id']}})[_0x0e82('0x13')](handleEntityNotFound(_0x356706,null))[_0x0e82('0x13')](removeEntity(_0x356706,null))[_0x0e82('0x1b')](handleError(_0x356706,null));};exports[_0x0e82('0x129')]=function(_0x4ceda3,_0x2179b3){return db['User']['find']({'where':{'id':_0x4ceda3[_0x0e82('0x49')]['id']}})[_0x0e82('0x13')](handleEntityNotFound(_0x2179b3,null))['then'](function(_0x39da62){if(_0x39da62){return _0x39da62['addChatInteractions'](_0x4ceda3[_0x0e82('0x58')][_0x0e82('0xa1')],_['omit'](_0x4ceda3[_0x0e82('0x58')],['ids','id'])||{})[_0x0e82('0xa3')](function(){for(var _0x1f24a2=0x0;_0x1f24a2<_0x4ceda3[_0x0e82('0x58')][_0x0e82('0xa1')][_0x0e82('0x42')];_0x1f24a2+=0x1){socket['emit'](_0x0e82('0x12a'),{'ChatInteractionId':Number(_0x4ceda3['body'][_0x0e82('0xa1')][_0x1f24a2]),'UserId':Number(_0x4ceda3['params']['id'])});}return _0x4ceda3[_0x0e82('0x58')][_0x0e82('0xa1')];});}})[_0x0e82('0x13')](respondWithResult(_0x2179b3,null))[_0x0e82('0x1b')](handleError(_0x2179b3,null));};exports['removeChatInteractions']=function(_0x522900,_0x48ac5e){return db[_0x0e82('0x35')][_0x0e82('0x30')]({'where':{'id':_0x522900['params']['id']}})['then'](handleEntityNotFound(_0x48ac5e,null))[_0x0e82('0x13')](function(_0x1c7e05){if(_0x1c7e05){return _0x1c7e05[_0x0e82('0x12b')](_0x522900['query'][_0x0e82('0xa1')])[_0x0e82('0x13')](function(){if(_[_0x0e82('0x12c')](_0x522900[_0x0e82('0x3c')]['ids'])){for(var _0x2ccdfd=0x0;_0x2ccdfd<_0x522900[_0x0e82('0x3c')]['ids'][_0x0e82('0x42')];_0x2ccdfd+=0x1){socket['emit'](_0x0e82('0x12d'),{'ChatInteractionId':Number(_0x522900[_0x0e82('0x3c')][_0x0e82('0xa1')][_0x2ccdfd]),'UserId':Number(_0x522900[_0x0e82('0x49')]['id'])});}}else{socket['emit']('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0x522900[_0x0e82('0x3c')][_0x0e82('0xa1')]),'UserId':Number(_0x522900[_0x0e82('0x49')]['id'])});}});}})['then'](respondWithStatusCode(_0x48ac5e,null))[_0x0e82('0x1b')](handleError(_0x48ac5e,null));};exports['addMailInteractions']=function(_0x5aaf86,_0x5d55aa){return db['User']['find']({'where':{'id':_0x5aaf86[_0x0e82('0x49')]['id']}})[_0x0e82('0x13')](handleEntityNotFound(_0x5d55aa,null))[_0x0e82('0x13')](function(_0x106b12){if(_0x106b12){return _0x106b12[_0x0e82('0x12e')](_0x5aaf86[_0x0e82('0x58')][_0x0e82('0xa1')],_[_0x0e82('0x5b')](_0x5aaf86[_0x0e82('0x58')],[_0x0e82('0xa1'),'id'])||{})['spread'](function(){for(var _0x4eed53=0x0;_0x4eed53<_0x5aaf86[_0x0e82('0x58')][_0x0e82('0xa1')][_0x0e82('0x42')];_0x4eed53+=0x1){socket[_0x0e82('0xa5')](_0x0e82('0x12f'),{'MailInteractionId':Number(_0x5aaf86[_0x0e82('0x58')]['ids'][_0x4eed53]),'UserId':Number(_0x5aaf86[_0x0e82('0x49')]['id'])});}return _0x5aaf86[_0x0e82('0x58')][_0x0e82('0xa1')];});}})[_0x0e82('0x13')](respondWithResult(_0x5d55aa,null))[_0x0e82('0x1b')](handleError(_0x5d55aa,null));};exports[_0x0e82('0x130')]=function(_0x27aab6,_0x54d6bd){return db[_0x0e82('0x35')][_0x0e82('0x30')]({'where':{'id':_0x27aab6[_0x0e82('0x49')]['id']}})[_0x0e82('0x13')](handleEntityNotFound(_0x54d6bd,null))[_0x0e82('0x13')](function(_0x3f22a6){if(_0x3f22a6){return _0x3f22a6['removeMailInteractions'](_0x27aab6[_0x0e82('0x3c')]['ids'])['then'](function(){if(_[_0x0e82('0x12c')](_0x27aab6[_0x0e82('0x3c')][_0x0e82('0xa1')])){for(var _0xf39a42=0x0;_0xf39a42<_0x27aab6['query'][_0x0e82('0xa1')][_0x0e82('0x42')];_0xf39a42+=0x1){socket[_0x0e82('0xa5')]('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x27aab6[_0x0e82('0x3c')][_0x0e82('0xa1')][_0xf39a42]),'UserId':Number(_0x27aab6[_0x0e82('0x49')]['id'])});}}else{socket[_0x0e82('0xa5')](_0x0e82('0x131'),{'MailInteractionId':Number(_0x27aab6[_0x0e82('0x3c')][_0x0e82('0xa1')]),'UserId':Number(_0x27aab6[_0x0e82('0x49')]['id'])});}});}})['then'](respondWithStatusCode(_0x54d6bd,null))[_0x0e82('0x1b')](handleError(_0x54d6bd,null));};exports['addFaxInteractions']=function(_0x268b6c,_0x549027){return db['User']['find']({'where':{'id':_0x268b6c[_0x0e82('0x49')]['id']}})[_0x0e82('0x13')](handleEntityNotFound(_0x549027,null))[_0x0e82('0x13')](function(_0x16259a){if(_0x16259a){return _0x16259a[_0x0e82('0x132')](_0x268b6c[_0x0e82('0x58')]['ids'],_[_0x0e82('0x5b')](_0x268b6c[_0x0e82('0x58')],['ids','id'])||{})[_0x0e82('0xa3')](function(){for(var _0x1c36c4=0x0;_0x1c36c4<_0x268b6c[_0x0e82('0x58')][_0x0e82('0xa1')][_0x0e82('0x42')];_0x1c36c4+=0x1){socket['emit'](_0x0e82('0x133'),{'FaxInteractionId':Number(_0x268b6c['body'][_0x0e82('0xa1')][_0x1c36c4]),'UserId':Number(_0x268b6c['params']['id'])});}return _0x268b6c[_0x0e82('0x58')][_0x0e82('0xa1')];});}})[_0x0e82('0x13')](respondWithResult(_0x549027,null))[_0x0e82('0x1b')](handleError(_0x549027,null));};exports[_0x0e82('0x134')]=function(_0x200669,_0x36d3e5){return db[_0x0e82('0x35')][_0x0e82('0x30')]({'where':{'id':_0x200669[_0x0e82('0x49')]['id']}})[_0x0e82('0x13')](handleEntityNotFound(_0x36d3e5,null))['then'](function(_0xaabbbc){if(_0xaabbbc){return _0xaabbbc['removeFaxInteractions'](_0x200669['query']['ids'])[_0x0e82('0x13')](function(){if(_[_0x0e82('0x12c')](_0x200669[_0x0e82('0x3c')][_0x0e82('0xa1')])){for(var _0x5e339d=0x0;_0x5e339d<_0x200669['query'][_0x0e82('0xa1')][_0x0e82('0x42')];_0x5e339d+=0x1){socket['emit']('user_has_fax_interactions:remove',{'FaxInteractionId':Number(_0x200669['query']['ids'][_0x5e339d]),'UserId':Number(_0x200669['params']['id'])});}}else{socket[_0x0e82('0xa5')]('user_has_fax_interactions:remove',{'FaxInteractionId':Number(_0x200669[_0x0e82('0x3c')][_0x0e82('0xa1')]),'UserId':Number(_0x200669[_0x0e82('0x49')]['id'])});}});}})[_0x0e82('0x13')](respondWithStatusCode(_0x36d3e5,null))['catch'](handleError(_0x36d3e5,null));};exports[_0x0e82('0x135')]=function(_0x371a84,_0x11bed4){return db['User'][_0x0e82('0x30')]({'where':{'id':_0x371a84[_0x0e82('0x49')]['id']}})['then'](handleEntityNotFound(_0x11bed4,null))['then'](function(_0x21a353){if(_0x21a353){return _0x21a353[_0x0e82('0x135')](_0x371a84['body'][_0x0e82('0xa1')],_['omit'](_0x371a84[_0x0e82('0x58')],[_0x0e82('0xa1'),'id'])||{})[_0x0e82('0xa3')](function(){for(var _0xc3e821=0x0;_0xc3e821<_0x371a84['body'][_0x0e82('0xa1')][_0x0e82('0x42')];_0xc3e821+=0x1){socket[_0x0e82('0xa5')](_0x0e82('0x136'),{'SmsInteractionId':Number(_0x371a84['body'][_0x0e82('0xa1')][_0xc3e821]),'UserId':Number(_0x371a84[_0x0e82('0x49')]['id'])});}return _0x371a84[_0x0e82('0x58')][_0x0e82('0xa1')];});}})[_0x0e82('0x13')](respondWithResult(_0x11bed4,null))[_0x0e82('0x1b')](handleError(_0x11bed4,null));};exports['removeSmsInteractions']=function(_0x30a4d2,_0x4d7842){return db['User'][_0x0e82('0x30')]({'where':{'id':_0x30a4d2[_0x0e82('0x49')]['id']}})[_0x0e82('0x13')](handleEntityNotFound(_0x4d7842,null))['then'](function(_0x269f9b){if(_0x269f9b){return _0x269f9b[_0x0e82('0x137')](_0x30a4d2[_0x0e82('0x3c')][_0x0e82('0xa1')])[_0x0e82('0x13')](function(){if(_[_0x0e82('0x12c')](_0x30a4d2[_0x0e82('0x3c')][_0x0e82('0xa1')])){for(var _0x35c24f=0x0;_0x35c24f<_0x30a4d2[_0x0e82('0x3c')][_0x0e82('0xa1')][_0x0e82('0x42')];_0x35c24f+=0x1){socket[_0x0e82('0xa5')](_0x0e82('0x138'),{'SmsInteractionId':Number(_0x30a4d2[_0x0e82('0x3c')]['ids'][_0x35c24f]),'UserId':Number(_0x30a4d2[_0x0e82('0x49')]['id'])});}}else{socket[_0x0e82('0xa5')](_0x0e82('0x138'),{'SmsInteractionId':Number(_0x30a4d2[_0x0e82('0x3c')][_0x0e82('0xa1')]),'UserId':Number(_0x30a4d2['params']['id'])});}});}})['then'](respondWithStatusCode(_0x4d7842,null))[_0x0e82('0x1b')](handleError(_0x4d7842,null));};exports['addOpenchannelInteractions']=function(_0x49108e,_0x5c2c8c){return db['User'][_0x0e82('0x30')]({'where':{'id':_0x49108e[_0x0e82('0x49')]['id']}})['then'](handleEntityNotFound(_0x5c2c8c,null))[_0x0e82('0x13')](function(_0x3840e3){if(_0x3840e3){return _0x3840e3[_0x0e82('0x139')](_0x49108e['body'][_0x0e82('0xa1')],_['omit'](_0x49108e[_0x0e82('0x58')],[_0x0e82('0xa1'),'id'])||{})[_0x0e82('0xa3')](function(){for(var _0x357bb4=0x0;_0x357bb4<_0x49108e[_0x0e82('0x58')][_0x0e82('0xa1')][_0x0e82('0x42')];_0x357bb4+=0x1){socket[_0x0e82('0xa5')]('user_has_openchannel_interactions:save',{'OpenchannelInteractionId':Number(_0x49108e[_0x0e82('0x58')][_0x0e82('0xa1')][_0x357bb4]),'UserId':Number(_0x49108e[_0x0e82('0x49')]['id'])});}return _0x49108e[_0x0e82('0x58')][_0x0e82('0xa1')];});}})[_0x0e82('0x13')](respondWithResult(_0x5c2c8c,null))[_0x0e82('0x1b')](handleError(_0x5c2c8c,null));};exports[_0x0e82('0x13a')]=function(_0x4c95db,_0x106e39){return db[_0x0e82('0x35')][_0x0e82('0x30')]({'where':{'id':_0x4c95db['params']['id']}})[_0x0e82('0x13')](handleEntityNotFound(_0x106e39,null))[_0x0e82('0x13')](function(_0x48a574){if(_0x48a574){return _0x48a574[_0x0e82('0x13a')](_0x4c95db[_0x0e82('0x3c')]['ids'])[_0x0e82('0x13')](function(){if(_[_0x0e82('0x12c')](_0x4c95db[_0x0e82('0x3c')]['ids'])){for(var _0x4ee332=0x0;_0x4ee332<_0x4c95db[_0x0e82('0x3c')]['ids'][_0x0e82('0x42')];_0x4ee332+=0x1){socket['emit']('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0x4c95db[_0x0e82('0x3c')][_0x0e82('0xa1')][_0x4ee332]),'UserId':Number(_0x4c95db['params']['id'])});}}else{socket[_0x0e82('0xa5')](_0x0e82('0x13b'),{'OpenchannelInteractionId':Number(_0x4c95db[_0x0e82('0x3c')][_0x0e82('0xa1')]),'UserId':Number(_0x4c95db[_0x0e82('0x49')]['id'])});}});}})[_0x0e82('0x13')](respondWithStatusCode(_0x106e39,null))[_0x0e82('0x1b')](handleError(_0x106e39,null));};exports[_0x0e82('0x13c')]=function(_0x460b5e,_0x2e460b){return db['User'][_0x0e82('0x30')]({'where':{'id':_0x460b5e[_0x0e82('0x49')]['id']}})[_0x0e82('0x13')](handleEntityNotFound(_0x2e460b,null))[_0x0e82('0x13')](function(_0x451798){if(_0x451798){return _0x451798[_0x0e82('0x13c')](_0x460b5e[_0x0e82('0x58')][_0x0e82('0xa1')],_[_0x0e82('0x5b')](_0x460b5e[_0x0e82('0x58')],[_0x0e82('0xa1'),'id'])||{})[_0x0e82('0xa3')](function(){for(var _0x14c355=0x0;_0x14c355<_0x460b5e[_0x0e82('0x58')][_0x0e82('0xa1')][_0x0e82('0x42')];_0x14c355+=0x1){socket[_0x0e82('0xa5')]('user_has_whatsapp_interactions:save',{'WhatsappInteractionId':Number(_0x460b5e[_0x0e82('0x58')][_0x0e82('0xa1')][_0x14c355]),'UserId':Number(_0x460b5e['params']['id'])});}return _0x460b5e[_0x0e82('0x58')][_0x0e82('0xa1')];});}})[_0x0e82('0x13')](respondWithResult(_0x2e460b,null))[_0x0e82('0x1b')](handleError(_0x2e460b,null));};exports[_0x0e82('0x13d')]=function(_0x40d303,_0x4e74c8){return db[_0x0e82('0x35')]['find']({'where':{'id':_0x40d303['params']['id']}})[_0x0e82('0x13')](handleEntityNotFound(_0x4e74c8,null))[_0x0e82('0x13')](function(_0x526af5){if(_0x526af5){return _0x526af5[_0x0e82('0x13d')](_0x40d303[_0x0e82('0x3c')][_0x0e82('0xa1')]);}})[_0x0e82('0x13')](respondWithStatusCode(_0x4e74c8,null))[_0x0e82('0x1b')](handleError(_0x4e74c8,null));};exports[_0x0e82('0x13e')]=function(_0xdd9532,_0x12699e){var _0x4196cd={};var _0x70e1ab={};var _0x6de29c;var _0x5b97df;return db[_0x0e82('0x35')]['findOne']({'where':{'id':_0xdd9532[_0x0e82('0x49')]['id']}})[_0x0e82('0x13')](handleEntityNotFound(_0x12699e,null))[_0x0e82('0x13')](function(_0xe6e938){if(_0xe6e938){_0x6de29c=_0xe6e938;_0x70e1ab[_0x0e82('0x4a')]=_['keys'](db[_0x0e82('0x13f')][_0x0e82('0x36')]);_0x70e1ab[_0x0e82('0x3c')]=_[_0x0e82('0x4c')](_0xdd9532[_0x0e82('0x3c')]);_0x70e1ab['filters']=_[_0x0e82('0x4e')](_0x70e1ab[_0x0e82('0x4a')],_0x70e1ab[_0x0e82('0x3c')]);_0x4196cd[_0x0e82('0x3e')]=_['intersection'](_0x70e1ab[_0x0e82('0x4a')],qs[_0x0e82('0x4f')](_0xdd9532['query'][_0x0e82('0x4f')]));_0x4196cd['attributes']=_0x4196cd[_0x0e82('0x3e')][_0x0e82('0x42')]?_0x4196cd['attributes']:_0x70e1ab[_0x0e82('0x4a')];_0x4196cd[_0x0e82('0xc4')]=qs[_0x0e82('0xc5')](_0xdd9532[_0x0e82('0x3c')]['sort']);_0x4196cd[_0x0e82('0x3b')]=qs[_0x0e82('0x4d')](_[_0x0e82('0xc6')](_0xdd9532['query'],_0x70e1ab['filters']));if(_0xdd9532[_0x0e82('0x3c')]['filter']){_0x4196cd[_0x0e82('0x3b')]=_['merge'](_0x4196cd[_0x0e82('0x3b')],{'$or':_[_0x0e82('0x2d')](_0x4196cd[_0x0e82('0x3e')],function(_0x10b20b){var _0x56988e={};_0x56988e[_0x10b20b]={'$like':'%'+_0xdd9532[_0x0e82('0x3c')][_0x0e82('0x2b')]+'%'};return _0x56988e;})});}_0x4196cd=_[_0x0e82('0x51')]({},_0x4196cd,_0xdd9532[_0x0e82('0x52')]);return _0x6de29c[_0x0e82('0x13e')](_0x4196cd);}})[_0x0e82('0x13')](function(_0x2701e1){if(_0x2701e1){_0x5b97df=_0x2701e1['length'];if(!_0xdd9532[_0x0e82('0x3c')]['hasOwnProperty'](_0x0e82('0xcc'))){_0x4196cd[_0x0e82('0x22')]=qs[_0x0e82('0x22')](_0xdd9532[_0x0e82('0x3c')][_0x0e82('0x22')]);_0x4196cd[_0x0e82('0x20')]=qs['offset'](_0xdd9532['query']['offset']);}return _0x6de29c[_0x0e82('0x13e')](_0x4196cd);}})[_0x0e82('0x13')](function(_0x1baddf){if(_0x1baddf){return _0x1baddf?{'count':_0x5b97df,'rows':_0x1baddf}:null;}})[_0x0e82('0x13')](respondWithResult(_0x12699e,null))['catch'](handleError(_0x12699e,null));};exports[_0x0e82('0x140')]=function(_0x244bd4,_0x47d17c){var _0x30aa32={};var _0x1ef1be={};var _0x15473c;var _0xd39756;return db[_0x0e82('0x35')][_0x0e82('0xd1')]({'where':{'id':_0x244bd4['params']['id']}})[_0x0e82('0x13')](handleEntityNotFound(_0x47d17c,null))['then'](function(_0x40d593){if(_0x40d593){_0x15473c=_0x40d593;_0x1ef1be[_0x0e82('0x4a')]=_[_0x0e82('0x4c')](db[_0x0e82('0x141')][_0x0e82('0x36')]);_0x1ef1be[_0x0e82('0x3c')]=_[_0x0e82('0x4c')](_0x244bd4[_0x0e82('0x3c')]);_0x1ef1be[_0x0e82('0x4d')]=_[_0x0e82('0x4e')](_0x1ef1be[_0x0e82('0x4a')],_0x1ef1be[_0x0e82('0x3c')]);_0x30aa32['attributes']=_[_0x0e82('0x4e')](_0x1ef1be['model'],qs['fields'](_0x244bd4[_0x0e82('0x3c')][_0x0e82('0x4f')]));_0x30aa32[_0x0e82('0x3e')]=_0x30aa32[_0x0e82('0x3e')][_0x0e82('0x42')]?_0x30aa32['attributes']:_0x1ef1be['model'];_0x30aa32[_0x0e82('0xc4')]=qs[_0x0e82('0xc5')](_0x244bd4[_0x0e82('0x3c')][_0x0e82('0xc5')]);_0x30aa32[_0x0e82('0x3b')]=qs[_0x0e82('0x4d')](_[_0x0e82('0xc6')](_0x244bd4[_0x0e82('0x3c')],_0x1ef1be['filters']));if(_0x244bd4[_0x0e82('0x3c')][_0x0e82('0x2b')]){_0x30aa32[_0x0e82('0x3b')]=_['merge'](_0x30aa32[_0x0e82('0x3b')],{'$or':_['map'](_0x30aa32[_0x0e82('0x3e')],function(_0x58d9d9){var _0x509c6b={};_0x509c6b[_0x58d9d9]={'$like':'%'+_0x244bd4[_0x0e82('0x3c')][_0x0e82('0x2b')]+'%'};return _0x509c6b;})});}_0x30aa32=_[_0x0e82('0x51')]({},_0x30aa32,_0x244bd4[_0x0e82('0x52')]);return _0x15473c[_0x0e82('0x140')](_0x30aa32);}})[_0x0e82('0x13')](function(_0x1be978){if(_0x1be978){_0xd39756=_0x1be978['length'];if(!_0x244bd4['query'][_0x0e82('0xc7')](_0x0e82('0xcc'))){_0x30aa32[_0x0e82('0x22')]=qs[_0x0e82('0x22')](_0x244bd4[_0x0e82('0x3c')][_0x0e82('0x22')]);_0x30aa32[_0x0e82('0x20')]=qs[_0x0e82('0x20')](_0x244bd4[_0x0e82('0x3c')]['offset']);}return _0x15473c[_0x0e82('0x140')](_0x30aa32);}})['then'](function(_0xc3d59){if(_0xc3d59){return _0xc3d59?{'count':_0xd39756,'rows':_0xc3d59}:null;}})[_0x0e82('0x13')](respondWithResult(_0x47d17c,null))[_0x0e82('0x1b')](handleError(_0x47d17c,null));};exports[_0x0e82('0x142')]=function(_0x10c829,_0x7f2be){return db[_0x0e82('0x35')][_0x0e82('0x30')]({'where':{'id':_0x10c829[_0x0e82('0x49')]['id']}})[_0x0e82('0x13')](handleEntityNotFound(_0x7f2be,null))['then'](function(_0x59d873){if(_0x59d873){return _0x59d873[_0x0e82('0x142')](_0x10c829['body']['ids'],_[_0x0e82('0x5b')](_0x10c829['body'],[_0x0e82('0xa1'),'id'])||{});}})[_0x0e82('0x13')](respondWithResult(_0x7f2be,null))['catch'](handleError(_0x7f2be,null));};exports[_0x0e82('0x143')]=function(_0x1ed644,_0x5ce6ea){return db[_0x0e82('0x35')][_0x0e82('0x30')]({'where':{'id':_0x1ed644['params']['id']}})[_0x0e82('0x13')](handleEntityNotFound(_0x5ce6ea,null))['then'](function(_0x5c49b1){if(_0x5c49b1){return _0x5c49b1['removeFaxAccounts'](_0x1ed644[_0x0e82('0x3c')][_0x0e82('0xa1')]);}})[_0x0e82('0x13')](respondWithStatusCode(_0x5ce6ea,null))[_0x0e82('0x1b')](handleError(_0x5ce6ea,null));};exports[_0x0e82('0x144')]=function(_0x3fea34,_0x635345){var _0x1eb462={};var _0x1c05bb={};var _0x65b640;var _0xba20ac;return db[_0x0e82('0x35')][_0x0e82('0xd1')]({'where':{'id':_0x3fea34[_0x0e82('0x49')]['id']}})['then'](handleEntityNotFound(_0x635345,null))[_0x0e82('0x13')](function(_0x594d5c){if(_0x594d5c){_0x65b640=_0x594d5c;_0x1c05bb[_0x0e82('0x4a')]=_[_0x0e82('0x4c')](db[_0x0e82('0x145')][_0x0e82('0x36')]);_0x1c05bb[_0x0e82('0x3c')]=_['keys'](_0x3fea34[_0x0e82('0x3c')]);_0x1c05bb[_0x0e82('0x4d')]=_[_0x0e82('0x4e')](_0x1c05bb['model'],_0x1c05bb[_0x0e82('0x3c')]);_0x1eb462['attributes']=_['intersection'](_0x1c05bb[_0x0e82('0x4a')],qs['fields'](_0x3fea34[_0x0e82('0x3c')][_0x0e82('0x4f')]));_0x1eb462[_0x0e82('0x3e')]=_0x1eb462[_0x0e82('0x3e')][_0x0e82('0x42')]?_0x1eb462[_0x0e82('0x3e')]:_0x1c05bb[_0x0e82('0x4a')];_0x1eb462[_0x0e82('0xc4')]=qs[_0x0e82('0xc5')](_0x3fea34[_0x0e82('0x3c')][_0x0e82('0xc5')]);_0x1eb462[_0x0e82('0x3b')]=qs[_0x0e82('0x4d')](_['pick'](_0x3fea34['query'],_0x1c05bb['filters']));if(_0x3fea34[_0x0e82('0x3c')][_0x0e82('0x2b')]){_0x1eb462[_0x0e82('0x3b')]=_[_0x0e82('0x51')](_0x1eb462[_0x0e82('0x3b')],{'$or':_[_0x0e82('0x2d')](_0x1eb462['attributes'],function(_0xb67fa3){var _0x384766={};_0x384766[_0xb67fa3]={'$like':'%'+_0x3fea34['query'][_0x0e82('0x2b')]+'%'};return _0x384766;})});}_0x1eb462=_[_0x0e82('0x51')]({},_0x1eb462,_0x3fea34[_0x0e82('0x52')]);return _0x65b640[_0x0e82('0x144')](_0x1eb462);}})[_0x0e82('0x13')](function(_0x48ffe0){if(_0x48ffe0){_0xba20ac=_0x48ffe0[_0x0e82('0x42')];if(!_0x3fea34[_0x0e82('0x3c')][_0x0e82('0xc7')](_0x0e82('0xcc'))){_0x1eb462[_0x0e82('0x22')]=qs['limit'](_0x3fea34[_0x0e82('0x3c')][_0x0e82('0x22')]);_0x1eb462[_0x0e82('0x20')]=qs[_0x0e82('0x20')](_0x3fea34['query'][_0x0e82('0x20')]);}return _0x65b640[_0x0e82('0x144')](_0x1eb462);}})['then'](function(_0x24d27c){if(_0x24d27c){return _0x24d27c?{'count':_0xba20ac,'rows':_0x24d27c}:null;}})[_0x0e82('0x13')](respondWithResult(_0x635345,null))[_0x0e82('0x1b')](handleError(_0x635345,null));};exports[_0x0e82('0x146')]=function(_0x2e9411,_0x1e6811){return db[_0x0e82('0x35')][_0x0e82('0x30')]({'where':{'id':_0x2e9411[_0x0e82('0x49')]['id']}})[_0x0e82('0x13')](handleEntityNotFound(_0x1e6811,null))[_0x0e82('0x13')](function(_0x330bbe){if(_0x330bbe){return _0x330bbe['addMailAccounts'](_0x2e9411[_0x0e82('0x58')][_0x0e82('0xa1')],_[_0x0e82('0x5b')](_0x2e9411['body'],[_0x0e82('0xa1'),'id'])||{});}})[_0x0e82('0x13')](respondWithResult(_0x1e6811,null))['catch'](handleError(_0x1e6811,null));};exports['removeMailAccounts']=function(_0x5ee09c,_0x1278a0){return db['User'][_0x0e82('0x30')]({'where':{'id':_0x5ee09c[_0x0e82('0x49')]['id']}})[_0x0e82('0x13')](handleEntityNotFound(_0x1278a0,null))[_0x0e82('0x13')](function(_0x40fa9e){if(_0x40fa9e){return _0x40fa9e[_0x0e82('0x147')](_0x5ee09c[_0x0e82('0x3c')][_0x0e82('0xa1')]);}})[_0x0e82('0x13')](respondWithStatusCode(_0x1278a0,null))[_0x0e82('0x1b')](handleError(_0x1278a0,null));};exports[_0x0e82('0x148')]=function(_0x7b5d57,_0x599d18){var _0x47e9ab={};var _0x3455a4={};var _0xdba55e;var _0x3e1e6d;return db[_0x0e82('0x35')][_0x0e82('0xd1')]({'where':{'id':_0x7b5d57[_0x0e82('0x49')]['id']}})[_0x0e82('0x13')](handleEntityNotFound(_0x599d18,null))['then'](function(_0x1230d4){if(_0x1230d4){_0xdba55e=_0x1230d4;_0x3455a4[_0x0e82('0x4a')]=_[_0x0e82('0x4c')](db['OpenchannelAccount'][_0x0e82('0x36')]);_0x3455a4['query']=_['keys'](_0x7b5d57['query']);_0x3455a4['filters']=_[_0x0e82('0x4e')](_0x3455a4['model'],_0x3455a4[_0x0e82('0x3c')]);_0x47e9ab['attributes']=_[_0x0e82('0x4e')](_0x3455a4[_0x0e82('0x4a')],qs[_0x0e82('0x4f')](_0x7b5d57[_0x0e82('0x3c')][_0x0e82('0x4f')]));_0x47e9ab[_0x0e82('0x3e')]=_0x47e9ab[_0x0e82('0x3e')][_0x0e82('0x42')]?_0x47e9ab[_0x0e82('0x3e')]:_0x3455a4[_0x0e82('0x4a')];_0x47e9ab['order']=qs['sort'](_0x7b5d57[_0x0e82('0x3c')][_0x0e82('0xc5')]);_0x47e9ab[_0x0e82('0x3b')]=qs[_0x0e82('0x4d')](_['pick'](_0x7b5d57[_0x0e82('0x3c')],_0x3455a4[_0x0e82('0x4d')]));if(_0x7b5d57['query'][_0x0e82('0x2b')]){_0x47e9ab['where']=_[_0x0e82('0x51')](_0x47e9ab[_0x0e82('0x3b')],{'$or':_[_0x0e82('0x2d')](_0x47e9ab['attributes'],function(_0x1139a7){var _0x5e3c6b={};_0x5e3c6b[_0x1139a7]={'$like':'%'+_0x7b5d57[_0x0e82('0x3c')][_0x0e82('0x2b')]+'%'};return _0x5e3c6b;})});}_0x47e9ab=_['merge']({},_0x47e9ab,_0x7b5d57['options']);return _0xdba55e[_0x0e82('0x148')](_0x47e9ab);}})[_0x0e82('0x13')](function(_0x2a604a){if(_0x2a604a){_0x3e1e6d=_0x2a604a[_0x0e82('0x42')];if(!_0x7b5d57[_0x0e82('0x3c')][_0x0e82('0xc7')]('nolimit')){_0x47e9ab[_0x0e82('0x22')]=qs[_0x0e82('0x22')](_0x7b5d57[_0x0e82('0x3c')][_0x0e82('0x22')]);_0x47e9ab[_0x0e82('0x20')]=qs[_0x0e82('0x20')](_0x7b5d57[_0x0e82('0x3c')][_0x0e82('0x20')]);}return _0xdba55e[_0x0e82('0x148')](_0x47e9ab);}})[_0x0e82('0x13')](function(_0x3d98be){if(_0x3d98be){return _0x3d98be?{'count':_0x3e1e6d,'rows':_0x3d98be}:null;}})[_0x0e82('0x13')](respondWithResult(_0x599d18,null))['catch'](handleError(_0x599d18,null));};exports[_0x0e82('0x149')]=function(_0x1b6f41,_0x500d33){return db[_0x0e82('0x35')]['find']({'where':{'id':_0x1b6f41[_0x0e82('0x49')]['id']}})[_0x0e82('0x13')](handleEntityNotFound(_0x500d33,null))[_0x0e82('0x13')](function(_0x545f06){if(_0x545f06){return _0x545f06[_0x0e82('0x149')](_0x1b6f41[_0x0e82('0x58')]['ids'],_[_0x0e82('0x5b')](_0x1b6f41[_0x0e82('0x58')],[_0x0e82('0xa1'),'id'])||{});}})['then'](respondWithResult(_0x500d33,null))['catch'](handleError(_0x500d33,null));};exports[_0x0e82('0x14a')]=function(_0x3c0c77,_0x9cbba3){return db[_0x0e82('0x35')]['find']({'where':{'id':_0x3c0c77[_0x0e82('0x49')]['id']}})['then'](handleEntityNotFound(_0x9cbba3,null))['then'](function(_0x295554){if(_0x295554){return _0x295554[_0x0e82('0x14a')](_0x3c0c77[_0x0e82('0x3c')][_0x0e82('0xa1')]);}})[_0x0e82('0x13')](respondWithStatusCode(_0x9cbba3,null))[_0x0e82('0x1b')](handleError(_0x9cbba3,null));};exports[_0x0e82('0x14b')]=function(_0x4a14cd,_0x4c6aa1){var _0x5a6ab2={};var _0xf6964d={};var _0x46a08a;var _0x4d4db7;return db[_0x0e82('0x35')][_0x0e82('0xd1')]({'where':{'id':_0x4a14cd[_0x0e82('0x49')]['id']}})['then'](handleEntityNotFound(_0x4c6aa1,null))[_0x0e82('0x13')](function(_0x228a1f){if(_0x228a1f){_0x46a08a=_0x228a1f;_0xf6964d[_0x0e82('0x4a')]=_['keys'](db[_0x0e82('0x14c')][_0x0e82('0x36')]);_0xf6964d['query']=_[_0x0e82('0x4c')](_0x4a14cd[_0x0e82('0x3c')]);_0xf6964d[_0x0e82('0x4d')]=_[_0x0e82('0x4e')](_0xf6964d['model'],_0xf6964d[_0x0e82('0x3c')]);_0x5a6ab2[_0x0e82('0x3e')]=_[_0x0e82('0x4e')](_0xf6964d[_0x0e82('0x4a')],qs[_0x0e82('0x4f')](_0x4a14cd['query'][_0x0e82('0x4f')]));_0x5a6ab2[_0x0e82('0x3e')]=_0x5a6ab2['attributes']['length']?_0x5a6ab2[_0x0e82('0x3e')]:_0xf6964d[_0x0e82('0x4a')];_0x5a6ab2['order']=qs[_0x0e82('0xc5')](_0x4a14cd['query'][_0x0e82('0xc5')]);_0x5a6ab2[_0x0e82('0x3b')]=qs[_0x0e82('0x4d')](_[_0x0e82('0xc6')](_0x4a14cd['query'],_0xf6964d[_0x0e82('0x4d')]));if(_0x4a14cd[_0x0e82('0x3c')][_0x0e82('0x2b')]){_0x5a6ab2[_0x0e82('0x3b')]=_[_0x0e82('0x51')](_0x5a6ab2['where'],{'$or':_[_0x0e82('0x2d')](_0x5a6ab2[_0x0e82('0x3e')],function(_0x18e46b){var _0x8fbf32={};_0x8fbf32[_0x18e46b]={'$like':'%'+_0x4a14cd['query']['filter']+'%'};return _0x8fbf32;})});}_0x5a6ab2=_[_0x0e82('0x51')]({},_0x5a6ab2,_0x4a14cd['options']);return _0x46a08a['getSmsAccounts'](_0x5a6ab2);}})[_0x0e82('0x13')](function(_0x4cceaf){if(_0x4cceaf){_0x4d4db7=_0x4cceaf['length'];if(!_0x4a14cd[_0x0e82('0x3c')][_0x0e82('0xc7')]('nolimit')){_0x5a6ab2['limit']=qs['limit'](_0x4a14cd['query'][_0x0e82('0x22')]);_0x5a6ab2[_0x0e82('0x20')]=qs[_0x0e82('0x20')](_0x4a14cd[_0x0e82('0x3c')][_0x0e82('0x20')]);}return _0x46a08a['getSmsAccounts'](_0x5a6ab2);}})[_0x0e82('0x13')](function(_0x544d09){if(_0x544d09){return _0x544d09?{'count':_0x4d4db7,'rows':_0x544d09}:null;}})[_0x0e82('0x13')](respondWithResult(_0x4c6aa1,null))[_0x0e82('0x1b')](handleError(_0x4c6aa1,null));};exports['addSmsAccounts']=function(_0x26636d,_0x55e845){return db['User']['find']({'where':{'id':_0x26636d[_0x0e82('0x49')]['id']}})[_0x0e82('0x13')](handleEntityNotFound(_0x55e845,null))['then'](function(_0x3d6c8e){if(_0x3d6c8e){return _0x3d6c8e['addSmsAccounts'](_0x26636d[_0x0e82('0x58')]['ids'],_[_0x0e82('0x5b')](_0x26636d['body'],[_0x0e82('0xa1'),'id'])||{});}})['then'](respondWithResult(_0x55e845,null))[_0x0e82('0x1b')](handleError(_0x55e845,null));};exports[_0x0e82('0x14d')]=function(_0x20a0f0,_0x36522c){return db[_0x0e82('0x35')][_0x0e82('0x30')]({'where':{'id':_0x20a0f0[_0x0e82('0x49')]['id']}})[_0x0e82('0x13')](handleEntityNotFound(_0x36522c,null))[_0x0e82('0x13')](function(_0x119f99){if(_0x119f99){return _0x119f99[_0x0e82('0x14d')](_0x20a0f0[_0x0e82('0x3c')][_0x0e82('0xa1')]);}})[_0x0e82('0x13')](respondWithStatusCode(_0x36522c,null))[_0x0e82('0x1b')](handleError(_0x36522c,null));};exports[_0x0e82('0x14e')]=function(_0x4031b3,_0x54d9a9){var _0x120f10={};var _0x20a080={};var _0x4fb5e9;var _0x15a610;return db['User']['findOne']({'where':{'id':_0x4031b3[_0x0e82('0x49')]['id']}})[_0x0e82('0x13')](handleEntityNotFound(_0x54d9a9,null))[_0x0e82('0x13')](function(_0x54736d){if(_0x54736d){_0x4fb5e9=_0x54736d;_0x20a080[_0x0e82('0x4a')]=_['keys'](db[_0x0e82('0x14f')][_0x0e82('0x36')]);_0x20a080[_0x0e82('0x3c')]=_['keys'](_0x4031b3['query']);_0x20a080[_0x0e82('0x4d')]=_[_0x0e82('0x4e')](_0x20a080[_0x0e82('0x4a')],_0x20a080[_0x0e82('0x3c')]);_0x120f10[_0x0e82('0x3e')]=_[_0x0e82('0x4e')](_0x20a080[_0x0e82('0x4a')],qs['fields'](_0x4031b3[_0x0e82('0x3c')]['fields']));_0x120f10[_0x0e82('0x3e')]=_0x120f10[_0x0e82('0x3e')][_0x0e82('0x42')]?_0x120f10[_0x0e82('0x3e')]:_0x20a080[_0x0e82('0x4a')];_0x120f10[_0x0e82('0xc4')]=qs[_0x0e82('0xc5')](_0x4031b3[_0x0e82('0x3c')][_0x0e82('0xc5')]);_0x120f10[_0x0e82('0x3b')]=qs[_0x0e82('0x4d')](_[_0x0e82('0xc6')](_0x4031b3[_0x0e82('0x3c')],_0x20a080['filters']));if(_0x4031b3[_0x0e82('0x3c')][_0x0e82('0x2b')]){_0x120f10[_0x0e82('0x3b')]=_[_0x0e82('0x51')](_0x120f10[_0x0e82('0x3b')],{'$or':_['map'](_0x120f10[_0x0e82('0x3e')],function(_0x2a7344){var _0xde7d9d={};_0xde7d9d[_0x2a7344]={'$like':'%'+_0x4031b3[_0x0e82('0x3c')][_0x0e82('0x2b')]+'%'};return _0xde7d9d;})});}_0x120f10=_[_0x0e82('0x51')]({},_0x120f10,_0x4031b3[_0x0e82('0x52')]);return _0x4fb5e9[_0x0e82('0x14e')](_0x120f10);}})[_0x0e82('0x13')](function(_0x3f4ff5){if(_0x3f4ff5){_0x15a610=_0x3f4ff5[_0x0e82('0x42')];if(!_0x4031b3['query'][_0x0e82('0xc7')](_0x0e82('0xcc'))){_0x120f10[_0x0e82('0x22')]=qs[_0x0e82('0x22')](_0x4031b3[_0x0e82('0x3c')]['limit']);_0x120f10[_0x0e82('0x20')]=qs[_0x0e82('0x20')](_0x4031b3['query']['offset']);}return _0x4fb5e9[_0x0e82('0x14e')](_0x120f10);}})[_0x0e82('0x13')](function(_0x231a94){if(_0x231a94){return _0x231a94?{'count':_0x15a610,'rows':_0x231a94}:null;}})[_0x0e82('0x13')](respondWithResult(_0x54d9a9,null))[_0x0e82('0x1b')](handleError(_0x54d9a9,null));};exports[_0x0e82('0x150')]=function(_0x5b3fa7,_0x4030b7){return db[_0x0e82('0x35')]['find']({'where':{'id':_0x5b3fa7[_0x0e82('0x49')]['id']}})[_0x0e82('0x13')](handleEntityNotFound(_0x4030b7,null))[_0x0e82('0x13')](function(_0x3c7216){if(_0x3c7216){return _0x3c7216[_0x0e82('0x150')](_0x5b3fa7[_0x0e82('0x58')]['ids'],_[_0x0e82('0x5b')](_0x5b3fa7[_0x0e82('0x58')],[_0x0e82('0xa1'),'id'])||{});}})[_0x0e82('0x13')](respondWithResult(_0x4030b7,null))['catch'](handleError(_0x4030b7,null));};exports['removeChatWebsites']=function(_0x2249ae,_0x2662ca){return db[_0x0e82('0x35')][_0x0e82('0x30')]({'where':{'id':_0x2249ae[_0x0e82('0x49')]['id']}})[_0x0e82('0x13')](handleEntityNotFound(_0x2662ca,null))['then'](function(_0x2c5e46){if(_0x2c5e46){return _0x2c5e46[_0x0e82('0x151')](_0x2249ae['query']['ids']);}})[_0x0e82('0x13')](respondWithStatusCode(_0x2662ca,null))[_0x0e82('0x1b')](handleError(_0x2662ca,null));};exports['getWhatsappAccounts']=function(_0x4cdbac,_0x3fc44b){var _0x263a46={};var _0x415f75={};var _0x290e74;var _0x21239a;return db[_0x0e82('0x35')][_0x0e82('0xd1')]({'where':{'id':_0x4cdbac[_0x0e82('0x49')]['id']}})[_0x0e82('0x13')](handleEntityNotFound(_0x3fc44b,null))['then'](function(_0x447fe9){if(_0x447fe9){_0x290e74=_0x447fe9;_0x415f75['model']=_['keys'](db['WhatsappAccount'][_0x0e82('0x36')]);_0x415f75[_0x0e82('0x3c')]=_['keys'](_0x4cdbac[_0x0e82('0x3c')]);_0x415f75[_0x0e82('0x4d')]=_['intersection'](_0x415f75[_0x0e82('0x4a')],_0x415f75[_0x0e82('0x3c')]);_0x263a46['attributes']=_[_0x0e82('0x4e')](_0x415f75[_0x0e82('0x4a')],qs['fields'](_0x4cdbac[_0x0e82('0x3c')][_0x0e82('0x4f')]));_0x263a46[_0x0e82('0x3e')]=_0x263a46[_0x0e82('0x3e')][_0x0e82('0x42')]?_0x263a46[_0x0e82('0x3e')]:_0x415f75[_0x0e82('0x4a')];_0x263a46[_0x0e82('0xc4')]=qs[_0x0e82('0xc5')](_0x4cdbac[_0x0e82('0x3c')][_0x0e82('0xc5')]);_0x263a46[_0x0e82('0x3b')]=qs[_0x0e82('0x4d')](_['pick'](_0x4cdbac[_0x0e82('0x3c')],_0x415f75[_0x0e82('0x4d')]));if(_0x4cdbac[_0x0e82('0x3c')][_0x0e82('0x2b')]){_0x263a46[_0x0e82('0x3b')]=_[_0x0e82('0x51')](_0x263a46['where'],{'$or':_['map'](_0x263a46[_0x0e82('0x3e')],function(_0x23a33b){var _0x15b16d={};_0x15b16d[_0x23a33b]={'$like':'%'+_0x4cdbac[_0x0e82('0x3c')]['filter']+'%'};return _0x15b16d;})});}_0x263a46=_[_0x0e82('0x51')]({},_0x263a46,_0x4cdbac[_0x0e82('0x52')]);return _0x290e74[_0x0e82('0x152')](_0x263a46);}})['then'](function(_0xe24bbc){if(_0xe24bbc){_0x21239a=_0xe24bbc[_0x0e82('0x42')];if(!_0x4cdbac[_0x0e82('0x3c')][_0x0e82('0xc7')](_0x0e82('0xcc'))){_0x263a46[_0x0e82('0x22')]=qs['limit'](_0x4cdbac['query'][_0x0e82('0x22')]);_0x263a46[_0x0e82('0x20')]=qs['offset'](_0x4cdbac[_0x0e82('0x3c')][_0x0e82('0x20')]);}return _0x290e74['getWhatsappAccounts'](_0x263a46);}})[_0x0e82('0x13')](function(_0x48a908){if(_0x48a908){return _0x48a908?{'count':_0x21239a,'rows':_0x48a908}:null;}})[_0x0e82('0x13')](respondWithResult(_0x3fc44b,null))[_0x0e82('0x1b')](handleError(_0x3fc44b,null));};exports['addWhatsappAccounts']=function(_0x292fa6,_0x59e433){return db[_0x0e82('0x35')][_0x0e82('0x30')]({'where':{'id':_0x292fa6[_0x0e82('0x49')]['id']}})[_0x0e82('0x13')](handleEntityNotFound(_0x59e433,null))[_0x0e82('0x13')](function(_0x474f02){if(_0x474f02){return _0x474f02[_0x0e82('0x153')](_0x292fa6[_0x0e82('0x58')][_0x0e82('0xa1')],_[_0x0e82('0x5b')](_0x292fa6[_0x0e82('0x58')],['ids','id'])||{});}})[_0x0e82('0x13')](respondWithResult(_0x59e433,null))[_0x0e82('0x1b')](handleError(_0x59e433,null));};exports[_0x0e82('0x154')]=function(_0x226a47,_0x21cc12){return db[_0x0e82('0x35')][_0x0e82('0x30')]({'where':{'id':_0x226a47[_0x0e82('0x49')]['id']}})[_0x0e82('0x13')](handleEntityNotFound(_0x21cc12,null))[_0x0e82('0x13')](function(_0x2ae5cc){if(_0x2ae5cc){return _0x2ae5cc[_0x0e82('0x154')](_0x226a47[_0x0e82('0x3c')][_0x0e82('0xa1')]);}})[_0x0e82('0x13')](respondWithStatusCode(_0x21cc12,null))[_0x0e82('0x1b')](handleError(_0x21cc12,null));};exports['getSquareProjects']=function(_0x160fce,_0x1f9b2a){var _0x3b2f52={};var _0x338197={};var _0x3d567c;var _0x4581e9;return db['User'][_0x0e82('0xd1')]({'where':{'id':_0x160fce[_0x0e82('0x49')]['id']}})[_0x0e82('0x13')](handleEntityNotFound(_0x1f9b2a,null))[_0x0e82('0x13')](function(_0x204573){if(_0x204573){_0x3d567c=_0x204573;_0x338197[_0x0e82('0x4a')]=_[_0x0e82('0x4c')](db[_0x0e82('0x155')][_0x0e82('0x36')]);_0x338197[_0x0e82('0x3c')]=_[_0x0e82('0x4c')](_0x160fce[_0x0e82('0x3c')]);_0x338197[_0x0e82('0x4d')]=_[_0x0e82('0x4e')](_0x338197[_0x0e82('0x4a')],_0x338197[_0x0e82('0x3c')]);_0x3b2f52[_0x0e82('0x3e')]=_['intersection'](_0x338197['model'],qs[_0x0e82('0x4f')](_0x160fce['query'][_0x0e82('0x4f')]));_0x3b2f52['attributes']=_0x3b2f52[_0x0e82('0x3e')][_0x0e82('0x42')]?_0x3b2f52[_0x0e82('0x3e')]:_0x338197[_0x0e82('0x4a')];_0x3b2f52[_0x0e82('0xc4')]=qs['sort'](_0x160fce[_0x0e82('0x3c')]['sort']);_0x3b2f52[_0x0e82('0x3b')]=qs[_0x0e82('0x4d')](_[_0x0e82('0xc6')](_0x160fce[_0x0e82('0x3c')],_0x338197[_0x0e82('0x4d')]));if(_0x160fce[_0x0e82('0x3c')][_0x0e82('0x2b')]){_0x3b2f52['where']=_[_0x0e82('0x51')](_0x3b2f52[_0x0e82('0x3b')],{'$or':_['map'](_0x3b2f52[_0x0e82('0x3e')],function(_0x3ec372){var _0x4342ca={};_0x4342ca[_0x3ec372]={'$like':'%'+_0x160fce[_0x0e82('0x3c')][_0x0e82('0x2b')]+'%'};return _0x4342ca;})});}_0x3b2f52=_['merge']({},_0x3b2f52,_0x160fce[_0x0e82('0x52')]);return _0x3d567c[_0x0e82('0x156')](_0x3b2f52);}})[_0x0e82('0x13')](function(_0x1917a0){if(_0x1917a0){_0x4581e9=_0x1917a0[_0x0e82('0x42')];if(!_0x160fce[_0x0e82('0x3c')][_0x0e82('0xc7')]('nolimit')){_0x3b2f52[_0x0e82('0x22')]=qs[_0x0e82('0x22')](_0x160fce[_0x0e82('0x3c')][_0x0e82('0x22')]);_0x3b2f52[_0x0e82('0x20')]=qs['offset'](_0x160fce[_0x0e82('0x3c')][_0x0e82('0x20')]);}return _0x3d567c[_0x0e82('0x156')](_0x3b2f52);}})[_0x0e82('0x13')](function(_0x22346d){if(_0x22346d){return _0x22346d?{'count':_0x4581e9,'rows':_0x22346d}:null;}})[_0x0e82('0x13')](respondWithResult(_0x1f9b2a,null))[_0x0e82('0x1b')](handleError(_0x1f9b2a,null));};exports[_0x0e82('0x157')]=function(_0x4dc067,_0x536666){return db[_0x0e82('0x35')]['find']({'where':{'id':_0x4dc067['params']['id']}})[_0x0e82('0x13')](handleEntityNotFound(_0x536666,null))[_0x0e82('0x13')](function(_0x339b56){if(_0x339b56){return _0x339b56[_0x0e82('0x157')](_0x4dc067[_0x0e82('0x58')][_0x0e82('0xa1')],_['omit'](_0x4dc067[_0x0e82('0x58')],['ids','id'])||{});}})['then'](respondWithResult(_0x536666,null))[_0x0e82('0x1b')](handleError(_0x536666,null));};exports[_0x0e82('0x158')]=function(_0x30152b,_0x5c6ff3){return db[_0x0e82('0x35')][_0x0e82('0x30')]({'where':{'id':_0x30152b[_0x0e82('0x49')]['id']}})[_0x0e82('0x13')](handleEntityNotFound(_0x5c6ff3,null))[_0x0e82('0x13')](function(_0x489b8a){if(_0x489b8a){return _0x489b8a[_0x0e82('0x158')](_0x30152b[_0x0e82('0x3c')][_0x0e82('0xa1')]);}})[_0x0e82('0x13')](respondWithStatusCode(_0x5c6ff3,null))[_0x0e82('0x1b')](handleError(_0x5c6ff3,null));};exports[_0x0e82('0x159')]=function(_0x1219b1,_0x535780){var _0x1ddccd={},_0x15032c={},_0xd3904={'count':0x0,'rows':[]};var _0x3f59f5=db[_0x0e82('0x15a')][_0x0e82('0x36')];_0x15032c['model']=_[_0x0e82('0x4c')](_0x3f59f5);_0x15032c[_0x0e82('0x3c')]=_[_0x0e82('0x4c')](_0x1219b1[_0x0e82('0x3c')]);_0x15032c[_0x0e82('0x4d')]=_[_0x0e82('0x4e')](_0x15032c[_0x0e82('0x4a')],_0x15032c[_0x0e82('0x3c')]);_0x15032c[_0x0e82('0x4d')]=_[_0x0e82('0xf8')](_0x15032c['filters'],[_0x0e82('0x15b'),'$or','$gt','$gte',_0x0e82('0x15c'),_0x0e82('0x15d'),'$ne',_0x0e82('0x15e'),_0x0e82('0x15f'),_0x0e82('0x160'),'$notBetween',_0x0e82('0x161'),_0x0e82('0x162'),_0x0e82('0x163'),'$notLike','$iLike',_0x0e82('0x164'),'$like',_0x0e82('0x165'),_0x0e82('0x166'),_0x0e82('0x167'),_0x0e82('0x168')]);_0x1ddccd[_0x0e82('0x3e')]=_[_0x0e82('0x4e')](_0x15032c[_0x0e82('0x4a')],qs[_0x0e82('0x4f')](_0x1219b1[_0x0e82('0x3c')]['fields']));_0x1ddccd[_0x0e82('0x3e')]=_0x1ddccd[_0x0e82('0x3e')][_0x0e82('0x42')]?_0x1ddccd[_0x0e82('0x3e')]:_0x15032c[_0x0e82('0x4a')];if(!_0x1219b1[_0x0e82('0x3c')][_0x0e82('0xc7')]('nolimit')){_0x1ddccd['limit']=qs[_0x0e82('0x22')](_0x1219b1[_0x0e82('0x3c')]['limit']);_0x1ddccd['offset']=qs[_0x0e82('0x20')](_0x1219b1['query'][_0x0e82('0x20')]);}_0x1ddccd[_0x0e82('0xc4')]=qs[_0x0e82('0xc5')](_0x1219b1[_0x0e82('0x3c')][_0x0e82('0xc5')]);_0x1ddccd[_0x0e82('0x3b')]=qs[_0x0e82('0x4d')](_[_0x0e82('0xc6')](_0x1219b1[_0x0e82('0x3c')],_0x15032c[_0x0e82('0x4d')]));if(_0x1219b1[_0x0e82('0x3c')][_0x0e82('0x2b')]){_0x1ddccd[_0x0e82('0x3b')]=_['merge'](_0x1ddccd[_0x0e82('0x3b')],{'$or':_[_0x0e82('0x2d')](_0x1ddccd[_0x0e82('0x3e')],function(_0x1f0449){var _0x1feb2a={};_0x1feb2a[_0x1f0449]={'$like':'%'+_0x1219b1[_0x0e82('0x3c')][_0x0e82('0x2b')]+'%'};return _0x1feb2a;})});}_0x1ddccd[_0x0e82('0x3b')]={'$and':[_0x1ddccd[_0x0e82('0x3b')],{'$or':[{'UserId':_0x1219b1[_0x0e82('0x49')]['id']},{'OwnerId':_0x1219b1[_0x0e82('0x49')]['id']}]}]};_0x1ddccd=_[_0x0e82('0x51')]({},_0x1ddccd,_0x1219b1[_0x0e82('0x52')]);var _0x50d91e={'where':_0x1ddccd[_0x0e82('0x3b')]};return db['CmHopper'][_0x0e82('0x23')](_0x50d91e)[_0x0e82('0x13')](function(_0x5df6b2){_0xd3904[_0x0e82('0x23')]=_0x5df6b2;if(_0x1219b1['query'][_0x0e82('0x50')]){_0x1ddccd[_0x0e82('0x3d')]=[{'attributes':['id',_0x0e82('0x169'),_0x0e82('0x16a'),_0x0e82('0x16b')],'model':db[_0x0e82('0x16c')],'as':_0x0e82('0x16d')},{'attributes':['id','name','dialActive'],'model':db[_0x0e82('0xa8')],'as':_0x0e82('0xce')}];}return db[_0x0e82('0x15a')][_0x0e82('0x40')](_0x1ddccd);})[_0x0e82('0x13')](function(_0x48c6df){_0xd3904[_0x0e82('0x41')]=_0x48c6df;return _0xd3904;})[_0x0e82('0x13')](respondWithFilteredResult(_0x535780,_0x1ddccd))[_0x0e82('0x1b')](handleError(_0x535780,null));};exports[_0x0e82('0x16e')]=function(_0x4545e6,_0x316d15){if(!_[_0x0e82('0x60')](_0x4545e6[_0x0e82('0x27')]['id'])&&(_0x4545e6[_0x0e82('0x27')][_0x0e82('0x26')]==_0x0e82('0x78')||_0x4545e6['user'][_0x0e82('0x26')]=='user')){return db[_0x0e82('0x35')][_0x0e82('0xd1')]({'where':{'id':_0x4545e6[_0x0e82('0x49')]['id']},'raw':!![]})[_0x0e82('0x13')](function(_0x497eca){return authService[_0x0e82('0x16f')](_0x497eca);})[_0x0e82('0x13')](function(_0x1004e8){if(_0x1004e8){return _0x316d15['status'](0xc8)['json']({'api_key':_0x1004e8[_0x0e82('0x170')]});}else{return _0x316d15['status'](0xcc)['json']({'message':_0x0e82('0x171')});}})[_0x0e82('0x1b')](handleError(_0x316d15,0x193));}else{return _0x316d15[_0x0e82('0x1d')](0x191)['json']({'message':_0x0e82('0x172')});}};exports[_0x0e82('0x173')]=function(_0x10bb3c,_0x368135){if(!_[_0x0e82('0x60')](_0x10bb3c[_0x0e82('0x27')]['id'])&&(_0x10bb3c[_0x0e82('0x27')][_0x0e82('0x26')]=='admin'||_0x10bb3c[_0x0e82('0x27')][_0x0e82('0x26')]==_0x0e82('0x27'))){return db[_0x0e82('0x35')][_0x0e82('0x30')]({'where':{'id':_0x10bb3c['params']['id']}})[_0x0e82('0x13')](function(_0x2f4b1d){return authService[_0x0e82('0x174')](_0x2f4b1d);})['then'](function(_0x18dcb4){return db[_0x0e82('0x35')][_0x0e82('0x57')]({'apiKeyIat':_0x18dcb4[_0x0e82('0x175')],'apiKeyNonce':_0x18dcb4[_0x0e82('0x176')]},{'where':{'id':_0x10bb3c[_0x0e82('0x49')]['id']}})['then'](function(){return _0x368135['status'](0xc8)[_0x0e82('0x1f')]({'api_key':_0x18dcb4[_0x0e82('0x170')]});});})['catch'](handleError(_0x368135,0x193));}else{return _0x368135['status'](0x191)[_0x0e82('0x1f')]({'message':_0x0e82('0x172')});}};exports['removeApiKey']=function(_0x55ea28,_0x39fca7){if(!_['isNil'](_0x55ea28[_0x0e82('0x27')]['id'])&&(_0x55ea28[_0x0e82('0x27')][_0x0e82('0x26')]==_0x0e82('0x78')||_0x55ea28['user'][_0x0e82('0x26')]==_0x0e82('0x27'))){return db[_0x0e82('0x35')][_0x0e82('0x30')]({'where':{'id':_0x55ea28[_0x0e82('0x49')]['id']}})[_0x0e82('0x13')](handleEntityNotFound(_0x39fca7,null))[_0x0e82('0x13')](function(_0x298f3b){if(_0x298f3b&&_0x298f3b[_0x0e82('0x177')]&&_0x298f3b['apiKeyIat'])return _0x298f3b;else throw{'message':_0x0e82('0x178')};})['then'](function(_0x1a8288){return db[_0x0e82('0x35')]['update']({'apiKeyNonce':null,'apiKeyIat':null},{'where':{'id':_0x55ea28[_0x0e82('0x49')]['id']}});})[_0x0e82('0x13')](respondWithStatusCode(_0x39fca7,0xc8))['catch'](handleError(_0x39fca7,0x193));}else{return _0x39fca7[_0x0e82('0x1d')](0x191)[_0x0e82('0x1f')]({'message':_0x0e82('0x172')});}};exports[_0x0e82('0x179')]=function(_0x2a7d05,_0x49c983){var _0x142d5c=_0x2a7d05[_0x0e82('0x27')][_0x0e82('0xa9')]({'plain':!![]});if(!_0x142d5c){return _0x49c983[_0x0e82('0x1d')](0x191)['send'](_0x0e82('0x17a'));}else{return _0x49c983[_0x0e82('0x1d')](0xc8)['json'](_0x142d5c);}};exports[_0x0e82('0x17b')]=function(_0x3cde21,_0x5a7265){var _0x245120={'offset':0x0},_0x13bdea={'count':0x0,'rows':[]};Promise[_0x0e82('0x17c')]()['then'](function(){if(!_0x3cde21[_0x0e82('0x3c')][_0x0e82('0x2b')]&&!_0x3cde21[_0x0e82('0x3c')]['teams']&&!_0x3cde21['query'][_0x0e82('0x17d')])return[];return Promise[_0x0e82('0x17c')]()['then'](function(){var _0x4a44a2=[];if(!_['isEmpty'](_0x3cde21[_0x0e82('0x3c')][_0x0e82('0x17e')])){_0x4a44a2[_0x0e82('0x3f')](db[_0x0e82('0x10f')][_0x0e82('0x40')]({'attributes':['id','name'],'where':{'id':_0x3cde21[_0x0e82('0x3c')][_0x0e82('0x17e')]}}));}if(!_['isEmpty'](_0x3cde21[_0x0e82('0x3c')][_0x0e82('0x17d')])){_0x4a44a2[_0x0e82('0x3f')](db[_0x0e82('0xa8')][_0x0e82('0x40')]({'attributes':['id',_0x0e82('0x31')],'type':'inbound','where':{'id':_0x3cde21[_0x0e82('0x3c')][_0x0e82('0x17d')]}}));}return Promise[_0x0e82('0x56')](_0x4a44a2);})['then'](function(_0x3b5e71){var _0x45b187=_[_0x0e82('0x122')](_0x3b5e71)[_0x0e82('0x2d')](function(_0x433237){return _0x433237['getAgents']({'attributes':['id',_0x0e82('0x31'),'internal',_0x0e82('0x98')],'raw':!![]});});return Promise[_0x0e82('0x56')](_0x45b187);})[_0x0e82('0x13')](function(_0x736b77){var _0x289712=_[_0x0e82('0x122')](_0x736b77);if(!_0x3cde21['query'][_0x0e82('0x2b')])return _0x289712;if(_[_0x0e82('0x84')](_0x289712)){return db[_0x0e82('0x35')][_0x0e82('0x40')]({'attributes':['id',_0x0e82('0x31'),'internal','online'],'where':{'role':_0x0e82('0x29'),'$or':[db[_0x0e82('0x62')][_0x0e82('0x3b')](db[_0x0e82('0x62')]['fn']('lower',db['sequelize'][_0x0e82('0x17f')]('name')),{'$like':'%'+_0x3cde21[_0x0e82('0x3c')][_0x0e82('0x2b')][_0x0e82('0x9f')]()+'%'}),{'internal':{'$like':'%'+_0x3cde21[_0x0e82('0x3c')]['filter']+'%'}}]},'raw':!![]});}else{return _(_0x289712)[_0x0e82('0x122')]()['filter'](function(_0x4ee2d5){return _0x4ee2d5[_0x0e82('0x31')]['toLowerCase']()[_0x0e82('0x2f')](_0x3cde21[_0x0e82('0x3c')][_0x0e82('0x2b')][_0x0e82('0x9f')]())||_0x4ee2d5[_0x0e82('0x5c')]['toString']()[_0x0e82('0x2f')](_0x3cde21[_0x0e82('0x3c')]['filter']);})[_0x0e82('0x2e')]();}})[_0x0e82('0x13')](function(_0x3e971a){var _0x35f65a=_0x0e82('0x31');var _0x4544ba=_0x0e82('0x180');if(_0x3cde21[_0x0e82('0x3c')][_0x0e82('0xc5')]){var _0x4544ba=_0x3cde21['query'][_0x0e82('0xc5')][0x0]==='-'?'desc':'asc';var _0x35f65a=_0x4544ba===_0x0e82('0x180')?_0x3cde21[_0x0e82('0x3c')]['sort']:_0x3cde21[_0x0e82('0x3c')][_0x0e82('0xc5')][_0x0e82('0x181')](0x1);}return _(_0x3e971a)[_0x0e82('0x182')]('id')[_0x0e82('0x183')]([function(_0x33f44a){return _0x35f65a==='name'?_0x33f44a[_0x35f65a][_0x0e82('0x9f')]():_0x33f44a[_0x35f65a];}],[_0x4544ba])['map'](function(_0x270780){return _[_0x0e82('0xc6')](_0x270780,['id','name',_0x0e82('0x5c'),_0x0e82('0x98')]);})[_0x0e82('0x2e')]();})[_0x0e82('0x13')](function(_0x2ebaca){return client['request'](_0x0e82('0x28'),_0x3cde21)[_0x0e82('0x13')](function(_0x5795f1){if(_0x5795f1[_0x0e82('0x17')])throw new Error(_0x0e82('0x184'));var _0x2cbd2=_0x5795f1[_0x0e82('0x1a')];var _0x43c027=jayson[_0x0e82('0x10')][_0x0e82('0x11')]({'port':0x232c});return _0x43c027[_0x0e82('0x12')](_0x0e82('0x28'),_0x3cde21)[_0x0e82('0x13')](function(_0x3836a8){if(_0x3836a8[_0x0e82('0x17')])throw new Error(_0x0e82('0x185'));var _0x30f082=_0x3836a8[_0x0e82('0x1a')];return _[_0x0e82('0x51')]({},_0x30f082,_0x2cbd2);});})['then'](function(_0x2a9667){return _[_0x0e82('0x2d')](_0x2ebaca,function(_0x48ef7b){var _0x106ca8=_[_0x0e82('0x30')](_0x2a9667[_0x0e82('0x41')],['id',_0x48ef7b['id']]);if(!_0x106ca8||!_0x48ef7b[_0x0e82('0x98')]){_0x48ef7b[_0x0e82('0x1d')]=_0x0e82('0x186');}else if(_0x106ca8[_0x0e82('0x9a')]){_0x48ef7b[_0x0e82('0x1d')]='pause';}else{_0x48ef7b[_0x0e82('0x1d')]=_[_0x0e82('0x2f')]([_0x0e82('0x187'),'unknown',_0x0e82('0x188'),_0x0e82('0x189'),null,undefined],_0x106ca8[_0x0e82('0x18a')])?'online':'busy';}return _0x48ef7b;});});});})[_0x0e82('0x13')](function(_0x484970){if(!_0x3cde21[_0x0e82('0x3c')][_0x0e82('0xc7')](_0x0e82('0xcc'))){_0x245120[_0x0e82('0x22')]=qs[_0x0e82('0x22')](_0x3cde21['query'][_0x0e82('0x22')]||0xa);_0x245120[_0x0e82('0x20')]=qs['offset'](_0x3cde21[_0x0e82('0x3c')][_0x0e82('0x20')]);}_0x13bdea[_0x0e82('0x23')]=_0x484970[_0x0e82('0x42')];_0x13bdea[_0x0e82('0x41')]=_0x245120['limit']?_0x484970[_0x0e82('0x18b')](_0x245120[_0x0e82('0x20')],_0x245120[_0x0e82('0x20')]+_0x245120['limit']):_0x484970;return _0x13bdea;})[_0x0e82('0x13')](respondWithFilteredResult(_0x5a7265,_0x245120))[_0x0e82('0x1b')](handleError(_0x5a7265,null));};function get_open_tabs(_0x22ce22,_0xcea494){var _0x41862f=_0x22ce22[_0x0e82('0x18c')](0x0)[_0x0e82('0x18d')]()+_0x22ce22[_0x0e82('0x18b')](0x1);var _0x2ccd8f={'type':db[_0x0e82('0x89')][_0x0e82('0x64')]['SELECT'],'raw':!![]};return new BPromise(function(_0x4db39c,_0x298579){var _0x4c97bd=squel['select']()[_0x0e82('0x18e')](_0x0e82('0x18f')+_0x41862f+_0x0e82('0x190'),'id')[_0x0e82('0x18e')](_0x0e82('0x191'))[_0x0e82('0x66')](_0x0e82('0x192')+_0x22ce22+_0x0e82('0x193'),'ui')[_0x0e82('0x3b')]('ui.UserId\x20=\x20?',_0xcea494['id']);return db[_0x0e82('0x62')][_0x0e82('0x3c')](_0x4c97bd[_0x0e82('0x194')](),_0x2ccd8f)[_0x0e82('0x13')](function(_0x19a07b){_0xcea494[_0x41862f+'OpenTabs']=_0x19a07b;_0x4db39c(_0x19a07b);})['catch'](function(_0xb55bce){_0x298579(_0xb55bce);});});};
\ No newline at end of file
+var _0x9536=['status','end','json','offset','undefined','count','Content-Range','update','then','admin','Users','user','Agents','Telephones','filter','value','includes','UserProfileResource','destroy','stack','name','send','index','User','rawAttributes','map','fieldName','type','key','where','query','includeAll','include','attributes','findAll','rows','openTabs','true','length','push','sms','dataValues','fax','mail','openchannel','whatsapp','all','params','model','differenceBy','keys','password','salt','intersection','fields','find','body','role','describe','addContacts','ids','omit','Setting','securePassword','validatePasswordPattern','max','internal','isNil','min_internal','select\x20(select\x20IFNULL(max(internal)+1,1)\x20from\x20users\x20where\x20internal\x20<\x20md.internal)\x20as\x20\x27from\x27,\x20md.internal\x20-\x201\x20as\x20\x27to\x27\x20from\x20users\x20md\x20where\x20md.internal\x20!=\x201\x20and\x20not\x20exists\x20(select\x201\x20from\x20users\x20md2\x20where\x20md2.internal\x20=\x20md.internal\x20-\x201)','sequelize','QueryTypes','SELECT','from','mailbox','VoiceMail','fullname','email','permissions','101','102','110','104','107','108','109','100','114','115','create','agent','Unauthorized','checkUserLimits','settingsEnabled','userProfileId','UserProfileSection','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','bulkCreate','some','each','telephone','isEmpty','autoAssociation','compact','changePassword','oldPassword','newPassword','ValidationError','Invalid\x20body\x20format.\x20Use\x20oldPassword\x20and\x20newPassword','authenticate','Sequelize','Wrong\x20credentials','New\x20password\x20must\x20be\x20different\x20from\x20old\x20password','Invalid\x20body\x20format.\x20Use\x20newPassword','findOne','enforcePasswordHistory','passwordHistoryLimit','previousPasswords','validatePasswordHistory','updatePasswordsHistory','addQueues','channel','online','loginInPause','voicePause','interface','Unknown\x20channel','add','toLowerCase','Queues','spread','capitalize','QueueId','emit','Queue:save','voice','VoiceQueue','get','format','SIP/%s','penalty','upsert','removeQueues','isValidChannel','remove','isArray','Queue:remove','UserVoiceQueueRt','addAvatar','file','join','root','server/files/images/logos/default_profile.png','userpic','download','existsSync','server/files/images/','getOpenTabs','chat','ChatOpenTabs','createdAt','FaxOpenTabs','FAX','OpenchannelOpenTabs','MailOpenTabs','SmsOpenTabs','WhatsappOpenTabs','WHATSAPP','order','sort','filters','pick','merge','options','CmList','List','tag','hasOwnProperty','nolimit','limit','getContacts','getQueues','Queue','getVoiceQueuesRt','getGroups','ChatGroup','getRecordings','VoiceRecording','UserId','getScreenRecordings','ScreenRecording','getChatInteractions','ChatInteraction','getOpenchannelInteractions','OpenchannelInteraction','getMailInteractions','MailInteraction','getSmsInteractions','getFaxInteractions','getWhatsappInteractions','login','phone','mobile','intrf','user:forcelogout','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','getChannels','LOGIN','device','PAUSE','LOGININPAUSE','isMiddleware','pause','QueuePause','updateAttributes','DEFAULT\x20PAUSE','unpause','mailPause','chatPause','smsPause','whatsapppause','pauseType','manual','set','%s%s','Pause','getTeams','addTeams','Team','setDataValue','Voice','getChatQueues','Chat','getMailQueues','Mail','getSmsQueues','Sms','getWhatsappQueues','Whatsapp','Fax','getOpenchannelQueues','Openchannel','flatten','getDataValue','TeamVoicePrefix','UserVoicePrefix','VoicePrefixId','removeTeams','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','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','getVoicePrefixes','getFaxAccounts','FaxAccount','addFaxAccounts','removeFaxAccounts','getMailAccounts','addMailAccounts','removeMailAccounts','getOpenchannelAccounts','addOpenchannelAccounts','removeOpenchannelAccounts','getSmsAccounts','addSmsAccounts','removeSmsAccounts','getChatWebsites','addChatWebsites','removeChatWebsites','getWhatsappAccounts','WhatsappAccount','addWhatsappAccounts','removeWhatsappAccounts','getSquareProjects','SquareProject','addSquareProjects','removeSquareProjects','getScheduledCalls','CmHopper','$and','$gt','$lt','$ne','$eq','$not','$between','$notBetween','$in','$notIn','$like','$iLike','$notILike','$overlap','$contained','$any','firstName','CmContact','dialActive','getApiKey','token','No\x20API\x20access\x20key\x20found!','You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.','createApiKey','generateApiKey','nonce','removeApiKey','apiKeyNonce','apiKeyIat','API\x20key\x20not\x20available','whoami','getPresence','teams','queues','resolve','inbound','getAgents','lower','col','toString','asc','desc','substring','uniqBy','orderBy','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','result','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','offline','unknown','unavailable','ringing','voiceStatus','busy','slice','charAt','toUpperCase','select','field','ui.','InteractionId','ui.createdAt','user_has_','_interactions','ui.UserId\x20=\x20?','OpenTabs','moment','bluebird','util','path','squel','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','socket.io-emitter','redis','register','defaults','localhost','client','http','request','info','User,\x20%s,\x20%s','request\x20sent','debug','User,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch'];(function(_0x5d3097,_0x40325e){var _0x141289=function(_0x2038b0){while(--_0x2038b0){_0x5d3097['push'](_0x5d3097['shift']());}};_0x141289(++_0x40325e);}(_0x9536,0x179));var _0x6953=function(_0x329437,_0x1de73a){_0x329437=_0x329437-0x0;var _0x3789d9=_0x9536[_0x329437];return _0x3789d9;};'use strict';var moment=require(_0x6953('0x0'));var BPromise=require(_0x6953('0x1'));var util=require(_0x6953('0x2'));var path=require(_0x6953('0x3'));var fs=require('fs');var _=require('lodash');var squel=require(_0x6953('0x4'));var jayson=require('jayson/promise');var Redis=require(_0x6953('0x5'));var authService=require(_0x6953('0x6'));var qs=require(_0x6953('0x7'));var logger=require(_0x6953('0x8'))(_0x6953('0x9'));var utils=require('../../config/utils');var config=require(_0x6953('0xa'));var licenseUtil=require(_0x6953('0xb'));var db=require(_0x6953('0xc'))['db'];var socket=require(_0x6953('0xd'))(new Redis(config[_0x6953('0xe')]));require('./user.socket')[_0x6953('0xf')](socket);config[_0x6953('0xe')]=_[_0x6953('0x10')](config['redis'],{'host':_0x6953('0x11'),'port':0x18eb});var client=jayson[_0x6953('0x12')][_0x6953('0x13')]({'port':0x232a});var values;function respondWithRpcPromise(_0xb13f2c,_0x448c89,_0x1f3062,_0x246534){return new BPromise(function(_0x2144c5,_0xdd0b40){var _0x57652e=_0x246534||client;return _0x57652e[_0x6953('0x14')](_0xb13f2c,_0x1f3062)['then'](function(_0x8de91e){logger[_0x6953('0x15')](_0x6953('0x16'),_0x448c89,_0x6953('0x17'));logger[_0x6953('0x18')](_0x6953('0x19'),_0x448c89,_0x6953('0x17'),JSON[_0x6953('0x1a')](_0x8de91e));if(_0x8de91e[_0x6953('0x1b')]){if(_0x8de91e[_0x6953('0x1b')][_0x6953('0x1c')]===0x1f4){logger['error']('User,\x20%s,\x20%s',_0x448c89,_0x8de91e[_0x6953('0x1b')][_0x6953('0x1d')]);return _0xdd0b40(_0x8de91e[_0x6953('0x1b')][_0x6953('0x1d')]);}logger['error'](_0x6953('0x16'),_0x448c89,_0x8de91e[_0x6953('0x1b')]['message']);return _0x2144c5(_0x8de91e[_0x6953('0x1b')][_0x6953('0x1d')]);}else{logger[_0x6953('0x15')](_0x6953('0x16'),_0x448c89,_0x6953('0x17'));_0x2144c5(_0x8de91e['result'][_0x6953('0x1d')]);}})[_0x6953('0x1e')](function(_0x31d5fd){logger[_0x6953('0x1b')](_0x6953('0x16'),_0x448c89,_0x31d5fd);_0xdd0b40(_0x31d5fd);});});}function respondWithStatusCode(_0x5e33ec,_0xf96d07){_0xf96d07=_0xf96d07||0xcc;return function(_0x1388b7){if(_0x1388b7){return _0x5e33ec['sendStatus'](_0xf96d07);}return _0x5e33ec[_0x6953('0x1f')](_0xf96d07)[_0x6953('0x20')]();};}function respondWithResult(_0xb92529,_0x171dd8){_0x171dd8=_0x171dd8||0xc8;return function(_0x53640a){if(_0x53640a){return _0xb92529[_0x6953('0x1f')](_0x171dd8)[_0x6953('0x21')](_0x53640a);}};}function respondWithFilteredResult(_0x2a7f6a,_0x508ea7){return function(_0x495ebd){if(_0x495ebd){var _0x5a4cd7=typeof _0x508ea7[_0x6953('0x22')]===_0x6953('0x23')&&typeof _0x508ea7['limit']===_0x6953('0x23');var _0x587df0=_0x495ebd[_0x6953('0x24')];var _0x2bf39b=_0x5a4cd7?0x0:_0x508ea7[_0x6953('0x22')];var _0x2cc01e=_0x5a4cd7?_0x495ebd[_0x6953('0x24')]:_0x508ea7[_0x6953('0x22')]+_0x508ea7['limit'];var _0x3dd890;if(_0x2cc01e>=_0x587df0){_0x2cc01e=_0x587df0;_0x3dd890=0xc8;}else{_0x3dd890=0xce;}_0x2a7f6a[_0x6953('0x1f')](_0x3dd890);return _0x2a7f6a['set'](_0x6953('0x25'),_0x2bf39b+'-'+_0x2cc01e+'/'+_0x587df0)['json'](_0x495ebd);}return null;};}function saveUpdates(_0x173b3c){return function(_0x3b1175){if(_0x3b1175){return _0x3b1175[_0x6953('0x26')](_0x173b3c)['then'](function(_0x131992){return _0x131992;});}return null;};}function removeEntity(_0x3d7b04){return function(_0xf78141){if(_0xf78141){return _0xf78141['destroy']()[_0x6953('0x27')](function(){var _0x132a71=_0xf78141['get']({'plain':!![]});if(_0x132a71['role']===_0x6953('0x28'))return;var _0x44389b=[{'name':_0x6953('0x29'),'value':_0x6953('0x2a'),'ignore':!![]},{'name':_0x6953('0x2b'),'value':'agent','ignore':![]},{'name':_0x6953('0x2c'),'value':'telephone','ignore':![]}];var _0x2d5e76=_(_0x44389b)[_0x6953('0x2d')]('ignore')['map'](_0x6953('0x2e'))[_0x6953('0x2e')]();if(_[_0x6953('0x2f')](_0x2d5e76,_0x132a71['role'])){return;}var _0x28cb92=_['find'](_0x44389b,['value',_0x132a71['role']])['name'];return db[_0x6953('0x30')][_0x6953('0x31')]({'where':{'type':_0x28cb92,'resourceId':_0x132a71['id']}})[_0x6953('0x27')](function(){return _0xf78141;});})[_0x6953('0x27')](function(){_0x3d7b04[_0x6953('0x1f')](0xcc)[_0x6953('0x20')]();});}};}function handleEntityNotFound(_0x4f6e06){return function(_0x2b76a5){if(!_0x2b76a5){_0x4f6e06['sendStatus'](0x194);}return _0x2b76a5;};}function handleError(_0x199c67,_0x5c9a4e){_0x5c9a4e=_0x5c9a4e||0x1f4;return function(_0xc63da7){logger[_0x6953('0x1b')](_0xc63da7[_0x6953('0x32')]);if(_0xc63da7[_0x6953('0x33')]){delete _0xc63da7['name'];}_0x199c67[_0x6953('0x1f')](_0x5c9a4e)[_0x6953('0x34')](_0xc63da7);};}exports[_0x6953('0x35')]=function(_0xba2c1d,_0x40b6ea){var _0x475ea8={},_0x37b2b3={'count':0x0,'rows':[]};var _0x81428b=_(db[_0x6953('0x36')][_0x6953('0x37')])[_0x6953('0x38')](function(_0x483a33){return{'name':_0x483a33[_0x6953('0x39')],'type':_0x483a33[_0x6953('0x3a')][_0x6953('0x3b')]};})['filter'](function(_0x47e7e7){return!_[_0x6953('0x2f')](['password','salt'],_0x47e7e7[_0x6953('0x33')]);})[_0x6953('0x2e')]();_0x475ea8=qs['getOptions'](_0x81428b,_0xba2c1d);var _0x3434d6={'where':_0x475ea8[_0x6953('0x3c')]};return db[_0x6953('0x36')][_0x6953('0x24')](_0x3434d6)[_0x6953('0x27')](function(_0x4d7f59){_0x37b2b3['count']=_0x4d7f59;if(_0xba2c1d[_0x6953('0x3d')][_0x6953('0x3e')]){_0x475ea8[_0x6953('0x3f')]=[{'all':!![]}];}if(!_[_0x6953('0x2f')](_0x475ea8[_0x6953('0x40')],'id')){_0x475ea8[_0x6953('0x40')]['push']('id');}return db['User'][_0x6953('0x41')](_0x475ea8);})['then'](function(_0x588ff8){_0x37b2b3[_0x6953('0x42')]=_0x588ff8;if(_0xba2c1d[_0x6953('0x3d')][_0x6953('0x43')]===_0x6953('0x44')){var _0x139a84=[];for(var _0x5ac8f7=0x0;_0x5ac8f7<_0x37b2b3['rows'][_0x6953('0x45')];_0x5ac8f7++){_0x139a84[_0x6953('0x46')](get_open_tabs('chat',_0x37b2b3[_0x6953('0x42')][_0x5ac8f7]['dataValues']));_0x139a84[_0x6953('0x46')](get_open_tabs(_0x6953('0x47'),_0x37b2b3[_0x6953('0x42')][_0x5ac8f7][_0x6953('0x48')]));_0x139a84['push'](get_open_tabs(_0x6953('0x49'),_0x37b2b3[_0x6953('0x42')][_0x5ac8f7]['dataValues']));_0x139a84[_0x6953('0x46')](get_open_tabs(_0x6953('0x4a'),_0x37b2b3[_0x6953('0x42')][_0x5ac8f7][_0x6953('0x48')]));_0x139a84[_0x6953('0x46')](get_open_tabs(_0x6953('0x4b'),_0x37b2b3[_0x6953('0x42')][_0x5ac8f7][_0x6953('0x48')]));_0x139a84[_0x6953('0x46')](get_open_tabs(_0x6953('0x4c'),_0x37b2b3[_0x6953('0x42')][_0x5ac8f7]['dataValues']));}return BPromise[_0x6953('0x4d')](_0x139a84)['then'](function(_0x15c142){return _0x37b2b3;});}else{return _0x37b2b3;}})[_0x6953('0x27')](respondWithFilteredResult(_0x40b6ea,_0x475ea8))[_0x6953('0x1e')](handleError(_0x40b6ea,null));};exports['show']=function(_0xfb9613,_0x2a4e54){var _0x506561={'raw':![],'where':{'id':_0xfb9613[_0x6953('0x4e')]['id']}},_0x525145={};_0x525145[_0x6953('0x4f')]=_[_0x6953('0x50')](_[_0x6953('0x51')](db[_0x6953('0x36')][_0x6953('0x37')]),[_0x6953('0x52'),_0x6953('0x53')]);_0x525145[_0x6953('0x3d')]=_[_0x6953('0x51')](_0xfb9613[_0x6953('0x3d')]);_0x525145['filters']=_['intersection'](_0x525145[_0x6953('0x4f')],_0x525145[_0x6953('0x3d')]);_0x506561[_0x6953('0x40')]=_[_0x6953('0x54')](_0x525145[_0x6953('0x4f')],qs[_0x6953('0x55')](_0xfb9613[_0x6953('0x3d')][_0x6953('0x55')]));_0x506561[_0x6953('0x40')]=_0x506561['attributes']['length']?_0x506561['attributes']:_0x525145['model'];if(_0xfb9613[_0x6953('0x3d')][_0x6953('0x3e')]){_0x506561[_0x6953('0x3f')]=[{'all':!![]}];}_0x506561=_['merge']({},_0x506561,_0xfb9613['options']);if(!_[_0x6953('0x2f')](_0x506561[_0x6953('0x40')],'id')){_0x506561[_0x6953('0x40')]['push']('id');}return db['User'][_0x6953('0x56')](_0x506561)[_0x6953('0x27')](handleEntityNotFound(_0x2a4e54,null))['then'](function(_0x58fcb3){var _0x29937b=[];values=_0x58fcb3;if(_0xfb9613[_0x6953('0x3d')][_0x6953('0x43')]===_0x6953('0x44')){_0x29937b[_0x6953('0x46')](get_open_tabs('chat',_0x58fcb3[_0x6953('0x48')]));_0x29937b[_0x6953('0x46')](get_open_tabs('sms',_0x58fcb3[_0x6953('0x48')]));_0x29937b['push'](get_open_tabs(_0x6953('0x4b'),_0x58fcb3[_0x6953('0x48')]));_0x29937b[_0x6953('0x46')](get_open_tabs(_0x6953('0x4c'),_0x58fcb3['dataValues']));_0x29937b[_0x6953('0x46')](get_open_tabs(_0x6953('0x49'),_0x58fcb3[_0x6953('0x48')]));_0x29937b['push'](get_open_tabs('mail',_0x58fcb3[_0x6953('0x48')]));return BPromise[_0x6953('0x4d')](_0x29937b);}else{return values;}})[_0x6953('0x27')](function(_0x482f3b){return values;})['then'](respondWithResult(_0x2a4e54,null))[_0x6953('0x1e')](handleError(_0x2a4e54,null));};exports[_0x6953('0x26')]=function(_0x4c0f1c,_0x4f3df2){if(_0x4c0f1c[_0x6953('0x57')]['id']){delete _0x4c0f1c['body']['id'];}delete _0x4c0f1c[_0x6953('0x57')][_0x6953('0x58')];return db[_0x6953('0x36')][_0x6953('0x56')]({'where':{'id':_0x4c0f1c[_0x6953('0x4e')]['id']}})['then'](handleEntityNotFound(_0x4f3df2,null))[_0x6953('0x27')](saveUpdates(_0x4c0f1c[_0x6953('0x57')],null))[_0x6953('0x27')](respondWithResult(_0x4f3df2,null))['catch'](handleError(_0x4f3df2,null));};exports['describe']=function(_0x1c0678,_0x2bf359){return db[_0x6953('0x36')][_0x6953('0x59')]()[_0x6953('0x27')](respondWithResult(_0x2bf359,null))['catch'](handleError(_0x2bf359,null));};exports[_0x6953('0x5a')]=function(_0x2df49c,_0xe93bf2){return db[_0x6953('0x36')][_0x6953('0x56')]({'where':{'id':_0x2df49c[_0x6953('0x4e')]['id']}})[_0x6953('0x27')](handleEntityNotFound(_0xe93bf2,null))[_0x6953('0x27')](function(_0x1cbc70){if(_0x1cbc70){return _0x1cbc70[_0x6953('0x5a')](_0x2df49c[_0x6953('0x57')][_0x6953('0x5b')],_[_0x6953('0x5c')](_0x2df49c['body'],[_0x6953('0x5b'),'id'])||{});}})[_0x6953('0x27')](respondWithResult(_0xe93bf2,null))[_0x6953('0x1e')](handleError(_0xe93bf2,null));};function validateUser(_0x20efa9){return new BPromise(function(_0x38674d,_0x523a4a){if(_0x20efa9['internal'])return _0x38674d(_0x20efa9);return db[_0x6953('0x5d')]['findById'](0x1)[_0x6953('0x27')](function(_0x2b5de2){if(_0x2b5de2[_0x6953('0x5e')])authService[_0x6953('0x5f')](_0x20efa9['password']);db[_0x6953('0x36')][_0x6953('0x60')](_0x6953('0x61'))[_0x6953('0x27')](function(_0x1c3190){if(_[_0x6953('0x62')](_0x1c3190)){_0x20efa9[_0x6953('0x61')]=_0x2b5de2[_0x6953('0x63')]||0x1;return;}if(_[_0x6953('0x62')](_0x2b5de2[_0x6953('0x63')])||_0x2b5de2[_0x6953('0x63')]===_0x1c3190){_0x20efa9[_0x6953('0x61')]=_0x1c3190+0x1;return;}if(_0x2b5de2[_0x6953('0x63')]>_0x1c3190){_0x20efa9[_0x6953('0x61')]=_0x2b5de2[_0x6953('0x63')];return;}return db['sequelize'][_0x6953('0x3d')](_0x6953('0x64'),{'type':db[_0x6953('0x65')][_0x6953('0x66')][_0x6953('0x67')]})[_0x6953('0x27')](function(_0x3e19f1){if(_0x3e19f1&&_0x3e19f1['length']){for(var _0x3bb873=0x0,_0x403d81=_0x3e19f1['length'];_0x3bb873<_0x403d81&&_[_0x6953('0x62')](_0x20efa9[_0x6953('0x61')]);_0x3bb873++){if(_0x2b5de2[_0x6953('0x63')]<=_0x3e19f1[_0x3bb873]['from']){_0x20efa9['internal']=_0x3e19f1[_0x3bb873][_0x6953('0x68')];}else if(_0x2b5de2[_0x6953('0x63')]>_0x3e19f1[_0x3bb873][_0x6953('0x68')]&&_0x2b5de2[_0x6953('0x63')]<=_0x3e19f1[_0x3bb873]['to']){_0x20efa9[_0x6953('0x61')]=_0x2b5de2[_0x6953('0x63')];}}}if(_[_0x6953('0x62')](_0x20efa9[_0x6953('0x61')])){_0x20efa9[_0x6953('0x61')]=_0x1c3190+0x1;}return _0x38674d(_0x20efa9);});});})['catch'](function(_0x78eb85){_0x523a4a(_0x78eb85);});});}function updateUser(_0x729812){return new BPromise(function(_0x1b641e,_0x3bdb47){try{if(_0x729812['voicemail']){_0x729812[_0x6953('0x69')]=_0x729812[_0x6953('0x61')];_0x729812[_0x6953('0x6a')]={'mailbox':_0x729812['internal'],'password':_0x729812[_0x6953('0x52')],'fullname':_0x729812[_0x6953('0x6b')],'email':_0x729812[_0x6953('0x6c')]};}if(_0x729812[_0x6953('0x58')]==='agent'){if(!_0x729812[_0x6953('0x6d')])_0x729812[_0x6953('0x6d')]=[_0x6953('0x6e'),_0x6953('0x6f'),'103','113',_0x6953('0x70'),_0x6953('0x71'),'105','106',_0x6953('0x72'),_0x6953('0x73'),_0x6953('0x74'),_0x6953('0x75'),'111',_0x6953('0x76'),_0x6953('0x77')];}_0x1b641e(_0x729812);}catch(_0x574606){_0x3bdb47(_0x574606);}});}exports[_0x6953('0x78')]=function(_0xd2aae9,_0x491bae){if(_0xd2aae9['user']['role']===_0x6953('0x79'))throw new Error(_0x6953('0x7a'));if(_0xd2aae9[_0x6953('0x57')][_0x6953('0x58')]===_0x6953('0x2a')&&_0xd2aae9[_0x6953('0x2a')][_0x6953('0x58')]!==_0x6953('0x28')){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user');}if(_0xd2aae9[_0x6953('0x57')][_0x6953('0x58')]===_0x6953('0x28')&&_0xd2aae9[_0x6953('0x2a')][_0x6953('0x58')]!==_0x6953('0x28')){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20another\x20administrator');}return licenseUtil[_0x6953('0x7b')]([_0xd2aae9['body']])[_0x6953('0x27')](function(){return validateUser(_0xd2aae9['body']);})[_0x6953('0x27')](function(_0x9de87a){return updateUser(_0x9de87a)[_0x6953('0x27')](function(_0x50d2e0){if(_0x50d2e0[_0x6953('0x58')]===_0x6953('0x28')){_0x50d2e0[_0x6953('0x7c')]=_0xd2aae9[_0x6953('0x2a')][_0x6953('0x7c')];delete _0x50d2e0[_0x6953('0x7d')];}return _0x50d2e0;});})['then'](function(_0x24a666){return db[_0x6953('0x36')][_0x6953('0x78')](_0x24a666,{'include':[{'model':db[_0x6953('0x6a')],'as':_0x6953('0x6a')}]});})[_0x6953('0x27')](function(_0x19716d){if(_0xd2aae9[_0x6953('0x57')][_0x6953('0x58')]===_0x6953('0x2a'))return _0x19716d;if(_0xd2aae9[_0x6953('0x2a')]['role']!==_0x6953('0x2a'))return _0x19716d;return db[_0x6953('0x7e')][_0x6953('0x56')]({'where':{'name':_0x19716d[_0x6953('0x58')]===_0x6953('0x79')?_0x6953('0x2b'):_0x6953('0x2c'),'userProfileId':_0xd2aae9[_0x6953('0x2a')][_0x6953('0x7d')]},'raw':!![]})[_0x6953('0x27')](function(_0x2feda2){if(!_0x2feda2||_0x2feda2['autoAssociation']!=0x0)return _0x19716d;return db[_0x6953('0x30')][_0x6953('0x78')]({'name':_0x19716d[_0x6953('0x33')],'resourceId':_0x19716d['id'],'type':_0x2feda2['name'],'sectionId':_0x2feda2['id']},{})[_0x6953('0x27')](function(){return _0x19716d;});})['catch'](function(_0x5c2078){logger[_0x6953('0x1b')](_0x6953('0x7f'),_0x5c2078);throw _0x5c2078;});})[_0x6953('0x27')](respondWithResult(_0x491bae,0xc9))[_0x6953('0x1e')](handleError(_0x491bae,null));};exports[_0x6953('0x80')]=function(_0x2928c3,_0x228544){var _0x5e34b6=_0x2928c3[_0x6953('0x57')];var _0x3113c0=[];if(_0x2928c3[_0x6953('0x2a')]['role']===_0x6953('0x79'))throw new Error(_0x6953('0x7a'));if(_['some'](_0x5e34b6,[_0x6953('0x58'),'user'])&&_0x2928c3['user'][_0x6953('0x58')]!=='admin'){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user');}if(_[_0x6953('0x81')](_0x5e34b6,[_0x6953('0x58'),_0x6953('0x28')])&&_0x2928c3['user'][_0x6953('0x58')]!==_0x6953('0x28')){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20administrator');}return licenseUtil[_0x6953('0x7b')](_0x5e34b6)[_0x6953('0x27')](function(){return validateUser(_0x5e34b6[0x0]);})[_0x6953('0x27')](function(){for(var _0x200599=0x1;_0x200599<_0x5e34b6[_0x6953('0x45')];_0x200599++){var _0x31d847=_0x5e34b6[_0x200599-0x1][_0x6953('0x61')];if(!_0x5e34b6[_0x200599][_0x6953('0x61')])_0x5e34b6[_0x200599][_0x6953('0x61')]=_0x31d847+0x1;_0x3113c0['push'](validateUser(_0x5e34b6[_0x200599]));}return BPromise[_0x6953('0x4d')](_0x3113c0);})[_0x6953('0x27')](function(){_0x3113c0=[];for(var _0x52ba59=0x0;_0x52ba59<_0x5e34b6[_0x6953('0x45')];_0x52ba59++){_0x3113c0[_0x6953('0x46')](updateUser(_0x5e34b6[_0x52ba59]));}return BPromise[_0x6953('0x4d')](_0x3113c0);})[_0x6953('0x27')](function(){return BPromise[_0x6953('0x82')](_0x5e34b6,function(_0x300be9){return db[_0x6953('0x36')]['create'](_0x300be9,{'include':[{'model':db[_0x6953('0x6a')],'as':_0x6953('0x6a')}]})[_0x6953('0x27')](function(_0x12e2ec){_0x300be9['id']=_0x12e2ec['id'];return _0x300be9;});});})[_0x6953('0x27')](function(_0xa54eb8){if(_0x2928c3[_0x6953('0x57')][_0x6953('0x58')]===_0x6953('0x2a'))return _0xa54eb8;if(_0x2928c3['user'][_0x6953('0x58')]!=='user')return _0xa54eb8;var _0x476893=_['some'](_0xa54eb8,function(_0x2c8907){return _0x2c8907[_0x6953('0x58')]===_0x6953('0x79')||_0x2c8907[_0x6953('0x58')]===_0x6953('0x83');});if(!_0x476893)return _0xa54eb8;return db['UserProfileSection'][_0x6953('0x41')]({'where':{'name':{'$or':['Agents',_0x6953('0x2c')]},'userProfileId':_0x2928c3[_0x6953('0x2a')][_0x6953('0x7d')]},'raw':!![]})[_0x6953('0x27')](function(_0x564a73){if(_[_0x6953('0x84')](_0x564a73)||!_[_0x6953('0x81')](_0x564a73,[_0x6953('0x85'),0x0]))return _0xa54eb8;_0x3113c0=[];var _0x2e5191=_(_0x564a73)[_0x6953('0x38')](function(_0x1b3658){if(_0x1b3658[_0x6953('0x85')]===0x1)return;return _0x1b3658['name']===_0x6953('0x2b')?_0x6953('0x79'):_0x6953('0x83');})[_0x6953('0x86')]()[_0x6953('0x2e')]();for(var _0x575b5f=0x0;_0x575b5f<_0xa54eb8['length'];_0x575b5f++){if(!_['includes'](_0x2e5191,_0xa54eb8[_0x575b5f][_0x6953('0x58')]))return;var _0xe578d4=_0xa54eb8[_0x575b5f][_0x6953('0x58')]==='agent'?_0x6953('0x2b'):'Telephones';_0x3113c0[_0x6953('0x46')](db[_0x6953('0x30')]['create']({'name':_0xa54eb8[_0x575b5f][_0x6953('0x33')],'resourceId':_0xa54eb8[_0x575b5f]['id'],'type':_0xe578d4,'sectionId':_['find'](_0x564a73,[_0x6953('0x33'),_0xe578d4])['id']},{}));}return BPromise['all'](_0x3113c0);});})['then'](respondWithResult(_0x228544,0xc9))[_0x6953('0x1e')](handleError(_0x228544,null));};exports[_0x6953('0x87')]=function(_0xbf0da2,_0x14ad16){if(_0xbf0da2[_0x6953('0x57')]['id']){delete _0xbf0da2[_0x6953('0x57')]['id'];}return db[_0x6953('0x36')][_0x6953('0x56')]({'where':{'id':_0xbf0da2['params']['id']}})['then'](function(_0x49fefc){if(!_0x49fefc)return null;if(_0x49fefc['id']===_0xbf0da2[_0x6953('0x2a')]['id']){if(!_0xbf0da2[_0x6953('0x57')][_0x6953('0x88')]||!_0xbf0da2[_0x6953('0x57')][_0x6953('0x89')]){throw new db['Sequelize'][(_0x6953('0x8a'))](_0x6953('0x8b'));}if(!_0x49fefc[_0x6953('0x8c')](_0xbf0da2[_0x6953('0x57')][_0x6953('0x88')])){throw new db[(_0x6953('0x8d'))][(_0x6953('0x8a'))](_0x6953('0x8e'));}if(_0xbf0da2['body'][_0x6953('0x88')]===_0xbf0da2['body'][_0x6953('0x89')]){throw new db[(_0x6953('0x8d'))][(_0x6953('0x8a'))](_0x6953('0x8f'));}}else if(_0xbf0da2[_0x6953('0x2a')][_0x6953('0x58')]==='admin'){if(!_0xbf0da2[_0x6953('0x57')]['newPassword']){throw new db[(_0x6953('0x8d'))][(_0x6953('0x8a'))](_0x6953('0x90'));}}else if(_0xbf0da2[_0x6953('0x2a')][_0x6953('0x58')]===_0x6953('0x2a')){if(!_0xbf0da2[_0x6953('0x57')][_0x6953('0x89')]){throw new db[(_0x6953('0x8d'))][(_0x6953('0x8a'))](_0x6953('0x90'));}if(_0x49fefc[_0x6953('0x58')]!==_0x6953('0x79')){throw new db[(_0x6953('0x8d'))]['ValidationError'](_0x6953('0x7a'));}}else{throw new db['Sequelize']['ValidationError']('Unauthorized');}return _0x49fefc;})[_0x6953('0x27')](handleEntityNotFound(_0x14ad16,null))[_0x6953('0x27')](function(_0x17cd4b){return db[_0x6953('0x5d')][_0x6953('0x91')]({'attributes':['id',_0x6953('0x5e'),_0x6953('0x92'),_0x6953('0x93')]})[_0x6953('0x27')](function(_0x2a9080){if(_0x2a9080[_0x6953('0x5e')])authService[_0x6953('0x5f')](_0xbf0da2[_0x6953('0x57')]['newPassword']);if(!_0x2a9080[_0x6953('0x92')]||!_0x17cd4b[_0x6953('0x94')])return _0x17cd4b;authService[_0x6953('0x95')](_0xbf0da2[_0x6953('0x57')]['newPassword'],_0x17cd4b[_0x6953('0x94')],_0x2a9080[_0x6953('0x93')]);return _0x17cd4b;})['then'](saveUpdates({'password':_0xbf0da2[_0x6953('0x57')][_0x6953('0x89')],'passwordResetAt':_0xbf0da2[_0x6953('0x2a')]['id']==_0xbf0da2[_0x6953('0x4e')]['id']?moment():null,'previousPasswords':authService[_0x6953('0x96')](_0xbf0da2['body'][_0x6953('0x89')],_0x17cd4b[_0x6953('0x94')])},null));})[_0x6953('0x27')](respondWithResult(_0x14ad16,null))[_0x6953('0x1e')](handleError(_0x14ad16,null));};exports[_0x6953('0x97')]=function(_0x4769f9,_0xedf35d){var _0x37aa51=_0x4769f9[_0x6953('0x57')][_0x6953('0x98')];return db[_0x6953('0x36')]['find']({'where':{'id':_0x4769f9['params']['id']},'attributes':['id',_0x6953('0x33'),_0x6953('0x58'),_0x6953('0x99'),_0x6953('0x9a'),_0x6953('0x9b'),_0x6953('0x9c')]})[_0x6953('0x27')](handleEntityNotFound(_0xedf35d,null))[_0x6953('0x27')](function(_0x56cf6f){if(_0x56cf6f){if(!utils['isValidChannel'](_0x37aa51)){throw new db[(_0x6953('0x8d'))]['ValidationError'](_0x6953('0x9d'));}return _0x56cf6f[_0x6953('0x9e')+_['capitalize'](_0x37aa51[_0x6953('0x9f')]())+_0x6953('0xa0')](_0x4769f9[_0x6953('0x57')][_0x6953('0x5b')],{'penalty':_0x4769f9[_0x6953('0x57')]['penalty']||0x0})[_0x6953('0xa1')](function(_0x5229b8){for(var _0x4eeecf=0x0;_0x4eeecf<_0x4769f9[_0x6953('0x57')]['ids'][_0x6953('0x45')];_0x4eeecf+=0x1){var _0x355497={'UserId':Number(_0x4769f9['params']['id'])};_0x355497[_[_0x6953('0xa2')](_0x37aa51[_0x6953('0x9f')]())+_0x6953('0xa3')]=Number(_0x4769f9[_0x6953('0x57')][_0x6953('0x5b')][_0x4eeecf]);socket[_0x6953('0xa4')](_0x6953('0x2a')+_[_0x6953('0xa2')](_0x37aa51['toLowerCase']())+_0x6953('0xa5'),_0x355497);}return _0x5229b8;})[_0x6953('0x27')](function(){if(_0x37aa51===_0x6953('0xa6')){return db[_0x6953('0xa7')][_0x6953('0x41')]({'where':{'id':_0x4769f9[_0x6953('0x57')][_0x6953('0x5b')]||[]},'raw':!![],'attributes':['id',_0x6953('0x33')]});}})['then'](function(_0x2d0702){var _0xdbd3db=_0x56cf6f[_0x6953('0xa8')]({'plain':!![]});var _0x3661ce=[];if(_0x37aa51===_0x6953('0xa6')&&_0xdbd3db[_0x6953('0x58')]===_0x6953('0x79')&&_0xdbd3db['online']){for(var _0x4c2505=0x0;_0x4c2505<_0x2d0702[_0x6953('0x45')];_0x4c2505+=0x1){_0x3661ce[_0x6953('0x46')]({'membername':_0xdbd3db[_0x6953('0x33')],'UserId':_0xdbd3db['id'],'queue_name':_0x2d0702[_0x4c2505][_0x6953('0x33')],'VoiceQueueId':_0x2d0702[_0x4c2505]['id'],'interface':_[_0x6953('0x62')](_0xdbd3db[_0x6953('0x9c')])?util[_0x6953('0xa9')](_0x6953('0xaa'),_0xdbd3db[_0x6953('0x33')]):_0xdbd3db[_0x6953('0x9c')],'paused':_0xdbd3db[_0x6953('0x9b')]||![],'penalty':_0x4769f9[_0x6953('0x57')][_0x6953('0xab')]||0x0});}return BPromise[_0x6953('0x82')](_0x3661ce,function(_0x1dcbd2){return db['UserVoiceQueueRt'][_0x6953('0xac')](_0x1dcbd2);});}return _0x56cf6f;});}})['then'](respondWithStatusCode(_0xedf35d,null))['catch'](handleError(_0xedf35d,null));};exports[_0x6953('0xad')]=function(_0x4ca574,_0x1cedb8){var _0x128748;return db[_0x6953('0x36')][_0x6953('0x56')]({'where':{'id':_0x4ca574[_0x6953('0x4e')]['id']},'attributes':['id',_0x6953('0x33'),'role']})[_0x6953('0x27')](handleEntityNotFound(_0x1cedb8,null))[_0x6953('0x27')](function(_0x7cd620){if(_0x7cd620){_0x128748=_0x7cd620;if(!_0x4ca574[_0x6953('0x3d')][_0x6953('0x98')]||!utils[_0x6953('0xae')](_0x4ca574['query'][_0x6953('0x98')])){throw new db[(_0x6953('0x8d'))][(_0x6953('0x8a'))](_0x6953('0x9d'));}return _0x7cd620[_0x6953('0xaf')+_['capitalize'](_0x4ca574[_0x6953('0x3d')][_0x6953('0x98')][_0x6953('0x9f')]())+_0x6953('0xa0')](_0x4ca574[_0x6953('0x3d')][_0x6953('0x5b')]);}})[_0x6953('0x27')](function(_0x2e68d0){if(_[_0x6953('0xb0')](_0x4ca574[_0x6953('0x3d')][_0x6953('0x5b')])){for(var _0xb74ca4=0x0;_0xb74ca4<_0x4ca574[_0x6953('0x3d')]['ids'][_0x6953('0x45')];_0xb74ca4+=0x1){var _0xcd7f7c={'UserId':Number(_0x4ca574[_0x6953('0x4e')]['id'])};_0xcd7f7c[_[_0x6953('0xa2')](_0x4ca574[_0x6953('0x3d')][_0x6953('0x98')]['toLowerCase']())+'QueueId']=Number(_0x4ca574[_0x6953('0x3d')]['ids'][_0xb74ca4]);socket[_0x6953('0xa4')](_0x6953('0x2a')+_[_0x6953('0xa2')](_0x4ca574[_0x6953('0x3d')][_0x6953('0x98')][_0x6953('0x9f')]())+'Queue:remove',_0xcd7f7c);}}else{var _0xcd7f7c={'UserId':Number(_0x4ca574[_0x6953('0x4e')]['id'])};_0xcd7f7c[_[_0x6953('0xa2')](_0x4ca574[_0x6953('0x3d')][_0x6953('0x98')][_0x6953('0x9f')]())+_0x6953('0xa3')]=Number(_0x4ca574[_0x6953('0x3d')]['ids']);socket[_0x6953('0xa4')](_0x6953('0x2a')+_['capitalize'](_0x4ca574[_0x6953('0x3d')][_0x6953('0x98')][_0x6953('0x9f')]())+_0x6953('0xb1'),_0xcd7f7c);}return _0x2e68d0;})[_0x6953('0x27')](function(){if(_0x4ca574[_0x6953('0x3d')][_0x6953('0x98')]===_0x6953('0xa6')){return db[_0x6953('0xb2')][_0x6953('0x31')]({'where':{'UserId':_0x4ca574['params']['id'],'VoiceQueueId':_0x4ca574[_0x6953('0x3d')]['ids']},'individualHooks':!![]})['then'](function(){return _0x128748;});}return _0x128748;})[_0x6953('0x27')](respondWithStatusCode(_0x1cedb8,null))[_0x6953('0x1e')](handleError(_0x1cedb8,null));};exports[_0x6953('0xb3')]=function(_0x49b41d,_0x487e1d){_0x49b41d[_0x6953('0x57')]['userpic']=_0x49b41d[_0x6953('0xb4')]['filename'];return db[_0x6953('0x36')][_0x6953('0x56')]({'where':{'id':_0x49b41d['params']['id']}})['then'](handleEntityNotFound(_0x487e1d,null))[_0x6953('0x27')](saveUpdates(_0x49b41d[_0x6953('0x57')],null))[_0x6953('0x27')](respondWithResult(_0x487e1d,null))[_0x6953('0x1e')](handleError(_0x487e1d,null));};exports['getAvatar']=function(_0x5ef901,_0x43fa2f){var _0xbeda4b=path[_0x6953('0xb5')](config[_0x6953('0xb6')],_0x6953('0xb7'));return db[_0x6953('0x36')][_0x6953('0x56')]({'where':{'id':_0x5ef901[_0x6953('0x4e')]['id']},'attributes':['id',_0x6953('0xb8')],'raw':!![]})['then'](handleEntityNotFound(_0x43fa2f,null))[_0x6953('0x27')](function(_0x46e1a0){if(_0x46e1a0){if(_[_0x6953('0x62')](_0x46e1a0[_0x6953('0xb8')])){return _0x43fa2f[_0x6953('0xb9')](_0xbeda4b);}else{if(!fs[_0x6953('0xba')](path[_0x6953('0xb5')](config[_0x6953('0xb6')],_0x6953('0xbb'),_0x46e1a0[_0x6953('0xb8')]))){return _0x43fa2f[_0x6953('0xb9')](_0xbeda4b);}return _0x43fa2f[_0x6953('0xb9')](path[_0x6953('0xb5')](config[_0x6953('0xb6')],_0x6953('0xbb'),_0x46e1a0[_0x6953('0xb8')]));}}})[_0x6953('0x1e')](handleError(_0x43fa2f,null));};exports[_0x6953('0xbc')]=function(_0xb8b49b,_0x2b52ef){return db[_0x6953('0x36')][_0x6953('0x56')]({'where':{'id':_0xb8b49b[_0x6953('0x4e')]['id']},'attributes':['id']})[_0x6953('0x27')](handleEntityNotFound(_0x2b52ef,null))[_0x6953('0x27')](function(_0x51ea38){var _0x11aece=[];values=_0x51ea38['dataValues'];_0x11aece[_0x6953('0x46')](get_open_tabs(_0x6953('0xbd'),_0x51ea38[_0x6953('0x48')]));_0x11aece[_0x6953('0x46')](get_open_tabs(_0x6953('0x47'),_0x51ea38[_0x6953('0x48')]));_0x11aece[_0x6953('0x46')](get_open_tabs('openchannel',_0x51ea38[_0x6953('0x48')]));_0x11aece[_0x6953('0x46')](get_open_tabs(_0x6953('0x4c'),_0x51ea38[_0x6953('0x48')]));_0x11aece[_0x6953('0x46')](get_open_tabs(_0x6953('0x49'),_0x51ea38[_0x6953('0x48')]));_0x11aece[_0x6953('0x46')](get_open_tabs(_0x6953('0x4a'),_0x51ea38[_0x6953('0x48')]));return BPromise[_0x6953('0x4d')](_0x11aece);})[_0x6953('0x27')](function(_0x481206){var _0x392c3d=[];if(_0x481206){for(var _0x36d3ef=0x0;_0x36d3ef<values[_0x6953('0xbe')][_0x6953('0x45')];_0x36d3ef++){var _0x2f865a=values[_0x6953('0xbe')][_0x36d3ef];_0x392c3d[_0x6953('0x46')]({'channel':'CHAT','id':_0x2f865a['id'],'createdAt':_0x2f865a[_0x6953('0xbf')]});}for(var _0x36d3ef=0x0;_0x36d3ef<values[_0x6953('0xc0')][_0x6953('0x45')];_0x36d3ef++){var _0x2f865a=values[_0x6953('0xc0')][_0x36d3ef];_0x392c3d[_0x6953('0x46')]({'channel':_0x6953('0xc1'),'id':_0x2f865a['id'],'createdAt':_0x2f865a[_0x6953('0xbf')]});}for(var _0x36d3ef=0x0;_0x36d3ef<values[_0x6953('0xc2')][_0x6953('0x45')];_0x36d3ef++){var _0x2f865a=values[_0x6953('0xc2')][_0x36d3ef];_0x392c3d[_0x6953('0x46')]({'channel':'OPENCHANNEL','id':_0x2f865a['id'],'createdAt':_0x2f865a[_0x6953('0xbf')]});}for(var _0x36d3ef=0x0;_0x36d3ef<values[_0x6953('0xc3')]['length'];_0x36d3ef++){var _0x2f865a=values[_0x6953('0xc3')][_0x36d3ef];_0x392c3d['push']({'channel':'MAIL','id':_0x2f865a['id'],'createdAt':_0x2f865a[_0x6953('0xbf')]});}for(var _0x36d3ef=0x0;_0x36d3ef<values[_0x6953('0xc4')][_0x6953('0x45')];_0x36d3ef++){var _0x2f865a=values[_0x6953('0xc4')][_0x36d3ef];_0x392c3d['push']({'channel':'SMS','id':_0x2f865a['id'],'createdAt':_0x2f865a[_0x6953('0xbf')]});}for(var _0x36d3ef=0x0;_0x36d3ef<values[_0x6953('0xc5')][_0x6953('0x45')];_0x36d3ef++){var _0x2f865a=values[_0x6953('0xc5')][_0x36d3ef];_0x392c3d[_0x6953('0x46')]({'channel':_0x6953('0xc6'),'id':_0x2f865a['id'],'createdAt':_0x2f865a[_0x6953('0xbf')]});}var _0xbe4027={'count':_0x392c3d['length'],'rows':_0x392c3d};return _0xbe4027;}else return null;})[_0x6953('0x27')](respondWithResult(_0x2b52ef,null))[_0x6953('0x1e')](handleError(_0x2b52ef,null));};exports['getContacts']=function(_0x4bdc48,_0x492b50){var _0x1bc457={};var _0x81cd9={};var _0x2664c3;var _0xd2c81b;return db[_0x6953('0x36')][_0x6953('0x91')]({'where':{'id':_0x4bdc48[_0x6953('0x4e')]['id']}})[_0x6953('0x27')](handleEntityNotFound(_0x492b50,null))['then'](function(_0x1dcbfd){if(_0x1dcbfd){_0x2664c3=_0x1dcbfd;_0x81cd9[_0x6953('0x4f')]=_[_0x6953('0x51')](db['CmContact'][_0x6953('0x37')]);_0x81cd9['query']=_[_0x6953('0x51')](_0x4bdc48[_0x6953('0x3d')]);_0x81cd9['filters']=_[_0x6953('0x54')](_0x81cd9[_0x6953('0x4f')],_0x81cd9[_0x6953('0x3d')]);_0x1bc457[_0x6953('0x40')]=_[_0x6953('0x54')](_0x81cd9[_0x6953('0x4f')],qs[_0x6953('0x55')](_0x4bdc48[_0x6953('0x3d')][_0x6953('0x55')]));_0x1bc457[_0x6953('0x40')]=_0x1bc457[_0x6953('0x40')][_0x6953('0x45')]?_0x1bc457[_0x6953('0x40')]:_0x81cd9['model'];_0x1bc457[_0x6953('0xc7')]=qs[_0x6953('0xc8')](_0x4bdc48[_0x6953('0x3d')][_0x6953('0xc8')]);_0x1bc457['where']=qs[_0x6953('0xc9')](_[_0x6953('0xca')](_0x4bdc48[_0x6953('0x3d')],_0x81cd9[_0x6953('0xc9')]));if(_0x4bdc48['query']['filter']){_0x1bc457[_0x6953('0x3c')]=_[_0x6953('0xcb')](_0x1bc457[_0x6953('0x3c')],{'$or':_['map'](_0x1bc457[_0x6953('0x40')],function(_0x3ff6f4){var _0x55291d={};_0x55291d[_0x3ff6f4]={'$like':'%'+_0x4bdc48['query'][_0x6953('0x2d')]+'%'};return _0x55291d;})});}_0x1bc457=_[_0x6953('0xcb')]({},_0x1bc457,_0x4bdc48[_0x6953('0xcc')]);return _0x2664c3['getContacts'](_0x1bc457);}})['then'](function(_0x1f696b){if(_0x1f696b){_0xd2c81b=_0x1f696b[_0x6953('0x45')];if(_0x4bdc48['query']['hasOwnProperty'](_0x6953('0x3e'))){_0x1bc457[_0x6953('0x3f')]=[{'model':db[_0x6953('0xcd')],'as':_0x6953('0xce'),'required':![]},{'model':db['Tag'],'as':'Tags','attributes':['id',_0x6953('0x33'),'color'],'where':_0x4bdc48[_0x6953('0x3d')][_0x6953('0xcf')]?{'id':_0x4bdc48[_0x6953('0x3d')][_0x6953('0xcf')]}:undefined,'required':_0x4bdc48[_0x6953('0x3d')][_0x6953('0xcf')]?!![]:![]}];}if(!_0x4bdc48[_0x6953('0x3d')][_0x6953('0xd0')](_0x6953('0xd1'))){_0x1bc457[_0x6953('0xd2')]=qs['limit'](_0x4bdc48[_0x6953('0x3d')]['limit']);_0x1bc457[_0x6953('0x22')]=qs[_0x6953('0x22')](_0x4bdc48[_0x6953('0x3d')][_0x6953('0x22')]);}return _0x2664c3[_0x6953('0xd3')](_0x1bc457);}})[_0x6953('0x27')](function(_0x5e447d){if(_0x5e447d){return _0x5e447d?{'count':_0xd2c81b,'rows':_0x5e447d}:null;}})[_0x6953('0x27')](respondWithResult(_0x492b50,null))[_0x6953('0x1e')](handleError(_0x492b50,null));};exports[_0x6953('0xd4')]=function(_0xc86a10,_0x447bb5){var _0x50dc6c;var _0x1ea142;var _0x50e929={};var _0x105d95;return db[_0x6953('0x36')]['findOne']({'where':{'id':_0xc86a10[_0x6953('0x4e')]['id']},'attributes':['id',_0x6953('0x33'),_0x6953('0x58')]})['then'](handleEntityNotFound(_0x447bb5,null))[_0x6953('0x27')](function(_0x490274){if(!utils['isValidChannel'](_0xc86a10[_0x6953('0x3d')][_0x6953('0x98')])){throw new db['Sequelize'][(_0x6953('0x8a'))]('Unknown\x20channel');}_0x50dc6c=_0x490274;var _0x197599={};_0x197599['model']=_['keys'](db[_['capitalize'](_0xc86a10[_0x6953('0x3d')][_0x6953('0x98')])+_0x6953('0xd5')][_0x6953('0x37')]);_0x197599[_0x6953('0x3d')]=_[_0x6953('0x51')](_0xc86a10[_0x6953('0x3d')]);_0x197599[_0x6953('0xc9')]=_[_0x6953('0x54')](_0x197599[_0x6953('0x4f')],_0x197599[_0x6953('0x3d')]);_0x50e929[_0x6953('0x40')]=_[_0x6953('0x54')](_0x197599['model'],qs['fields'](_0xc86a10['query']['fields']));_0x50e929[_0x6953('0x40')]=_0x50e929[_0x6953('0x40')][_0x6953('0x45')]?_0x50e929['attributes']:_0x197599[_0x6953('0x4f')];_0x50e929[_0x6953('0xc7')]=qs[_0x6953('0xc8')](_0xc86a10[_0x6953('0x3d')][_0x6953('0xc8')]);_0x50e929[_0x6953('0x3c')]=qs[_0x6953('0xc9')](_[_0x6953('0xca')](_0xc86a10[_0x6953('0x3d')],_0x197599[_0x6953('0xc9')]));if(_0xc86a10['query'][_0x6953('0x2d')]){_0x50e929[_0x6953('0x3c')]=_[_0x6953('0xcb')](_0x50e929[_0x6953('0x3c')],{'$or':_['map'](_0x50e929['attributes'],function(_0x4d9eaf){var _0x2e54ba={};_0x2e54ba[_0x4d9eaf]={'$like':'%'+_0xc86a10[_0x6953('0x3d')][_0x6953('0x2d')]+'%'};return _0x2e54ba;})});}_0x50e929=_['merge']({},_0x50e929,_0xc86a10[_0x6953('0xcc')]);switch(_0x50dc6c[_0x6953('0x58')]){case'admin':return db[_[_0x6953('0xa2')](_0xc86a10[_0x6953('0x3d')][_0x6953('0x98')])+_0x6953('0xd5')][_0x6953('0x41')](_0x50e929);case _0x6953('0x2a'):case _0x6953('0x79'):return _0x50dc6c[_0x6953('0xa8')+_['capitalize'](_0xc86a10[_0x6953('0x3d')][_0x6953('0x98')])+'Queues'](_0x50e929);default:throw new db[(_0x6953('0x8d'))]['ValidationError']('Unknown\x20role');}})[_0x6953('0x27')](function(_0x353d29){_0x105d95=_0x353d29[_0x6953('0x45')];if(!_0xc86a10[_0x6953('0x3d')][_0x6953('0xd0')]('nolimit')){_0x50e929[_0x6953('0xd2')]=qs['limit'](_0xc86a10['query']['limit']);_0x50e929[_0x6953('0x22')]=qs[_0x6953('0x22')](_0xc86a10[_0x6953('0x3d')]['offset']);}switch(_0x50dc6c['role']){case'admin':return db[_[_0x6953('0xa2')](_0xc86a10[_0x6953('0x3d')][_0x6953('0x98')])+'Queue'][_0x6953('0x41')](_0x50e929);case _0x6953('0x2a'):case _0x6953('0x79'):return _0x50dc6c['get'+_[_0x6953('0xa2')](_0xc86a10['query'][_0x6953('0x98')])+_0x6953('0xa0')](_0x50e929);}})['then'](function(_0x211d31){return{'count':_0x105d95,'rows':_0x211d31};})[_0x6953('0x27')](respondWithResult(_0x447bb5,null))[_0x6953('0x1e')](handleError(_0x447bb5,null));};exports[_0x6953('0xd6')]=function(_0x3090b1,_0x2464d4){var _0x5701d4={};var _0xc2548e={};var _0x4f916b;var _0x5cecc4;return db[_0x6953('0x36')]['findOne']({'where':{'id':_0x3090b1[_0x6953('0x4e')]['id']}})['then'](handleEntityNotFound(_0x2464d4,null))[_0x6953('0x27')](function(_0x4f7cfd){if(_0x4f7cfd){_0x4f916b=_0x4f7cfd;_0xc2548e['model']=_[_0x6953('0x51')](db['UserVoiceQueueRt']['rawAttributes']);_0xc2548e[_0x6953('0x3d')]=_[_0x6953('0x51')](_0x3090b1['query']);_0xc2548e[_0x6953('0xc9')]=_[_0x6953('0x54')](_0xc2548e[_0x6953('0x4f')],_0xc2548e[_0x6953('0x3d')]);_0x5701d4['attributes']=_[_0x6953('0x54')](_0xc2548e[_0x6953('0x4f')],qs[_0x6953('0x55')](_0x3090b1[_0x6953('0x3d')][_0x6953('0x55')]));_0x5701d4['attributes']=_0x5701d4[_0x6953('0x40')]['length']?_0x5701d4['attributes']:_0xc2548e['model'];_0x5701d4[_0x6953('0xc7')]=qs[_0x6953('0xc8')](_0x3090b1[_0x6953('0x3d')][_0x6953('0xc8')]);_0x5701d4[_0x6953('0x3c')]=qs['filters'](_[_0x6953('0xca')](_0x3090b1[_0x6953('0x3d')],_0xc2548e[_0x6953('0xc9')]));if(_0x3090b1['query'][_0x6953('0x2d')]){_0x5701d4[_0x6953('0x3c')]=_['merge'](_0x5701d4[_0x6953('0x3c')],{'$or':_['map'](_0x5701d4['attributes'],function(_0x187a66){var _0x2fb5eb={};_0x2fb5eb[_0x187a66]={'$like':'%'+_0x3090b1[_0x6953('0x3d')][_0x6953('0x2d')]+'%'};return _0x2fb5eb;})});}_0x5701d4=_[_0x6953('0xcb')]({},_0x5701d4,_0x3090b1[_0x6953('0xcc')]);return _0x4f916b[_0x6953('0xd6')](_0x5701d4);}})[_0x6953('0x27')](function(_0x49520d){if(_0x49520d){_0x5cecc4=_0x49520d['length'];if(!_0x3090b1['query']['hasOwnProperty'](_0x6953('0xd1'))){_0x5701d4[_0x6953('0xd2')]=qs['limit'](_0x3090b1[_0x6953('0x3d')][_0x6953('0xd2')]);_0x5701d4['offset']=qs[_0x6953('0x22')](_0x3090b1['query'][_0x6953('0x22')]);}return _0x4f916b[_0x6953('0xd6')](_0x5701d4);}})[_0x6953('0x27')](function(_0x2073aa){if(_0x2073aa){return _0x2073aa?{'count':_0x5cecc4,'rows':_0x2073aa}:null;}})[_0x6953('0x27')](respondWithResult(_0x2464d4,null))[_0x6953('0x1e')](handleError(_0x2464d4,null));};exports[_0x6953('0xd7')]=function(_0x220218,_0x506005){var _0x285a9b={};var _0x38b5f4={};var _0xc11cf0;var _0x27c3e0;return db[_0x6953('0x36')][_0x6953('0x91')]({'where':{'id':_0x220218[_0x6953('0x4e')]['id']}})[_0x6953('0x27')](handleEntityNotFound(_0x506005,null))[_0x6953('0x27')](function(_0x461366){if(_0x461366){_0xc11cf0=_0x461366;_0x38b5f4['model']=_[_0x6953('0x51')](db[_0x6953('0xd8')][_0x6953('0x37')]);_0x38b5f4[_0x6953('0x3d')]=_[_0x6953('0x51')](_0x220218[_0x6953('0x3d')]);_0x38b5f4[_0x6953('0xc9')]=_[_0x6953('0x54')](_0x38b5f4['model'],_0x38b5f4[_0x6953('0x3d')]);_0x285a9b[_0x6953('0x40')]=_['intersection'](_0x38b5f4[_0x6953('0x4f')],qs[_0x6953('0x55')](_0x220218[_0x6953('0x3d')][_0x6953('0x55')]));_0x285a9b['attributes']=_0x285a9b['attributes'][_0x6953('0x45')]?_0x285a9b[_0x6953('0x40')]:_0x38b5f4[_0x6953('0x4f')];_0x285a9b['order']=qs[_0x6953('0xc8')](_0x220218[_0x6953('0x3d')]['sort']);_0x285a9b[_0x6953('0x3c')]=qs['filters'](_[_0x6953('0xca')](_0x220218['query'],_0x38b5f4['filters']));if(_0x220218[_0x6953('0x3d')][_0x6953('0x2d')]){_0x285a9b[_0x6953('0x3c')]=_[_0x6953('0xcb')](_0x285a9b['where'],{'$or':_[_0x6953('0x38')](_0x285a9b[_0x6953('0x40')],function(_0x5b19b5){var _0x1cb18e={};_0x1cb18e[_0x5b19b5]={'$like':'%'+_0x220218['query'][_0x6953('0x2d')]+'%'};return _0x1cb18e;})});}_0x285a9b=_[_0x6953('0xcb')]({},_0x285a9b,_0x220218['options']);return _0xc11cf0[_0x6953('0xd7')](_0x285a9b);}})[_0x6953('0x27')](function(_0x4d45b0){if(_0x4d45b0){_0x27c3e0=_0x4d45b0[_0x6953('0x45')];if(!_0x220218[_0x6953('0x3d')][_0x6953('0xd0')](_0x6953('0xd1'))){_0x285a9b[_0x6953('0xd2')]=qs[_0x6953('0xd2')](_0x220218[_0x6953('0x3d')][_0x6953('0xd2')]);_0x285a9b[_0x6953('0x22')]=qs[_0x6953('0x22')](_0x220218[_0x6953('0x3d')]['offset']);}return _0xc11cf0[_0x6953('0xd7')](_0x285a9b);}})[_0x6953('0x27')](function(_0x44d521){if(_0x44d521){return _0x44d521?{'count':_0x27c3e0,'rows':_0x44d521}:null;}})[_0x6953('0x27')](respondWithResult(_0x506005,null))[_0x6953('0x1e')](handleError(_0x506005,null));};exports[_0x6953('0xd9')]=function(_0x465321,_0x500140){var _0x11a3b1={'raw':!![],'where':{}};var _0xa4b67b={};var _0x160276={'count':0x0,'rows':[]};return db[_0x6953('0x36')][_0x6953('0x91')]({'where':{'id':_0x465321[_0x6953('0x4e')]['id']}})[_0x6953('0x27')](handleEntityNotFound(_0x500140,null))[_0x6953('0x27')](function(_0x2ae539){if(_0x2ae539){_0xa4b67b[_0x6953('0x4f')]=_[_0x6953('0x51')](db[_0x6953('0xda')]['rawAttributes']);_0xa4b67b['query']=_[_0x6953('0x51')](_0x465321[_0x6953('0x3d')]);_0xa4b67b[_0x6953('0xc9')]=_[_0x6953('0x54')](_0xa4b67b[_0x6953('0x4f')],_0xa4b67b[_0x6953('0x3d')]);_0x11a3b1[_0x6953('0x40')]=_[_0x6953('0x54')](_0xa4b67b[_0x6953('0x4f')],qs[_0x6953('0x55')](_0x465321[_0x6953('0x3d')]['fields']));_0x11a3b1[_0x6953('0x40')]=_0x11a3b1['attributes'][_0x6953('0x45')]?_0x11a3b1[_0x6953('0x40')]:_0xa4b67b['model'];if(!_0x465321[_0x6953('0x3d')][_0x6953('0xd0')](_0x6953('0xd1'))){_0x11a3b1[_0x6953('0xd2')]=qs[_0x6953('0xd2')](_0x465321[_0x6953('0x3d')]['limit']);_0x11a3b1[_0x6953('0x22')]=qs[_0x6953('0x22')](_0x465321[_0x6953('0x3d')][_0x6953('0x22')]);}_0x11a3b1['order']=qs[_0x6953('0xc8')](_0x465321[_0x6953('0x3d')][_0x6953('0xc8')]);_0x11a3b1[_0x6953('0x3c')]=qs[_0x6953('0xc9')](_[_0x6953('0xca')](_0x465321['query'],_0xa4b67b[_0x6953('0xc9')]));_0x11a3b1[_0x6953('0x3c')][_0x6953('0xdb')]=_0x2ae539['id'];if(_0x465321[_0x6953('0x3d')][_0x6953('0x2d')]){_0x11a3b1['where']=_[_0x6953('0xcb')](_0x11a3b1[_0x6953('0x3c')],{'$or':_[_0x6953('0x38')](_0x11a3b1[_0x6953('0x40')],function(_0x4db4db){var _0x48965a={};_0x48965a[_0x4db4db]={'$like':'%'+_0x465321[_0x6953('0x3d')][_0x6953('0x2d')]+'%'};return _0x48965a;})});}_0x11a3b1=_['merge']({},_0x11a3b1,_0x465321[_0x6953('0xcc')]);return db['VoiceRecording'][_0x6953('0x24')]({'where':_0x11a3b1[_0x6953('0x3c')]})[_0x6953('0x27')](function(_0x43cccf){_0x160276[_0x6953('0x24')]=_0x43cccf;if(_0x465321[_0x6953('0x3d')]['includeAll']){_0x11a3b1['include']=[{'all':!![]}];}return db[_0x6953('0xda')][_0x6953('0x41')](_0x11a3b1);})['then'](function(_0x17fe39){_0x160276['rows']=_0x17fe39;return _0x160276;});}})['then'](respondWithFilteredResult(_0x500140,_0x11a3b1))['catch'](handleError(_0x500140,null));};exports[_0x6953('0xdc')]=function(_0x8f737b,_0x1e3f91){var _0x4912fa={'raw':!![],'where':{}};var _0x22fac4={};var _0x2567ce={'count':0x0,'rows':[]};return db['User'][_0x6953('0x91')]({'where':{'id':_0x8f737b[_0x6953('0x4e')]['id']}})[_0x6953('0x27')](handleEntityNotFound(_0x1e3f91,null))[_0x6953('0x27')](function(_0x888404){if(_0x888404){_0x22fac4['model']=_['keys'](db[_0x6953('0xdd')][_0x6953('0x37')]);_0x22fac4['query']=_[_0x6953('0x51')](_0x8f737b['query']);_0x22fac4[_0x6953('0xc9')]=_[_0x6953('0x54')](_0x22fac4['model'],_0x22fac4[_0x6953('0x3d')]);_0x4912fa[_0x6953('0x40')]=_['intersection'](_0x22fac4['model'],qs[_0x6953('0x55')](_0x8f737b[_0x6953('0x3d')][_0x6953('0x55')]));_0x4912fa[_0x6953('0x40')]=_0x4912fa[_0x6953('0x40')]['length']?_0x4912fa['attributes']:_0x22fac4[_0x6953('0x4f')];if(!_0x8f737b[_0x6953('0x3d')][_0x6953('0xd0')]('nolimit')){_0x4912fa[_0x6953('0xd2')]=qs[_0x6953('0xd2')](_0x8f737b['query'][_0x6953('0xd2')]);_0x4912fa[_0x6953('0x22')]=qs[_0x6953('0x22')](_0x8f737b[_0x6953('0x3d')][_0x6953('0x22')]);}_0x4912fa[_0x6953('0xc7')]=qs[_0x6953('0xc8')](_0x8f737b['query']['sort']);_0x4912fa[_0x6953('0x3c')]=qs[_0x6953('0xc9')](_['pick'](_0x8f737b[_0x6953('0x3d')],_0x22fac4[_0x6953('0xc9')]));_0x4912fa['where']['UserId']=_0x888404['id'];if(_0x8f737b[_0x6953('0x3d')]['filter']){_0x4912fa['where']=_[_0x6953('0xcb')](_0x4912fa[_0x6953('0x3c')],{'$or':_[_0x6953('0x38')](_0x4912fa['attributes'],function(_0x48bcb9){var _0x12d81d={};_0x12d81d[_0x48bcb9]={'$like':'%'+_0x8f737b['query'][_0x6953('0x2d')]+'%'};return _0x12d81d;})});}_0x4912fa=_[_0x6953('0xcb')]({},_0x4912fa,_0x8f737b[_0x6953('0xcc')]);return db[_0x6953('0xdd')][_0x6953('0x24')]({'where':_0x4912fa[_0x6953('0x3c')]})['then'](function(_0x49a97f){_0x2567ce['count']=_0x49a97f;if(_0x8f737b[_0x6953('0x3d')][_0x6953('0x3e')]){_0x4912fa[_0x6953('0x3f')]=[{'all':!![]}];}return db[_0x6953('0xdd')][_0x6953('0x41')](_0x4912fa);})[_0x6953('0x27')](function(_0x540ea0){_0x2567ce[_0x6953('0x42')]=_0x540ea0;return _0x2567ce;});}})['then'](respondWithFilteredResult(_0x1e3f91,_0x4912fa))[_0x6953('0x1e')](handleError(_0x1e3f91,null));};exports[_0x6953('0xde')]=function(_0x452f34,_0x3e6041){var _0x458df0={};var _0xc8e516={};var _0x5e0533;var _0x15e33f;return db['User']['findOne']({'where':{'id':_0x452f34[_0x6953('0x4e')]['id']}})[_0x6953('0x27')](handleEntityNotFound(_0x3e6041,null))[_0x6953('0x27')](function(_0x1786ac){if(_0x1786ac){_0x5e0533=_0x1786ac;_0xc8e516[_0x6953('0x4f')]=_[_0x6953('0x51')](db[_0x6953('0xdf')][_0x6953('0x37')]);_0xc8e516[_0x6953('0x3d')]=_[_0x6953('0x51')](_0x452f34['query']);_0xc8e516['filters']=_[_0x6953('0x54')](_0xc8e516[_0x6953('0x4f')],_0xc8e516[_0x6953('0x3d')]);_0x458df0[_0x6953('0x40')]=_[_0x6953('0x54')](_0xc8e516[_0x6953('0x4f')],qs['fields'](_0x452f34[_0x6953('0x3d')][_0x6953('0x55')]));_0x458df0[_0x6953('0x40')]=_0x458df0[_0x6953('0x40')][_0x6953('0x45')]?_0x458df0[_0x6953('0x40')]:_0xc8e516[_0x6953('0x4f')];_0x458df0[_0x6953('0xc7')]=qs[_0x6953('0xc8')](_0x452f34[_0x6953('0x3d')]['sort']);_0x458df0[_0x6953('0x3c')]=qs[_0x6953('0xc9')](_['pick'](_0x452f34['query'],_0xc8e516['filters']));if(_0x452f34[_0x6953('0x3d')]['filter']){_0x458df0[_0x6953('0x3c')]=_[_0x6953('0xcb')](_0x458df0[_0x6953('0x3c')],{'$or':_[_0x6953('0x38')](_0x458df0[_0x6953('0x40')],function(_0x156183){var _0x1f0bcb={};_0x1f0bcb[_0x156183]={'$like':'%'+_0x452f34[_0x6953('0x3d')][_0x6953('0x2d')]+'%'};return _0x1f0bcb;})});}_0x458df0=_[_0x6953('0xcb')]({},_0x458df0,_0x452f34['options']);return _0x5e0533[_0x6953('0xde')](_0x458df0);}})[_0x6953('0x27')](function(_0x459384){if(_0x459384){_0x15e33f=_0x459384['length'];if(!_0x452f34[_0x6953('0x3d')][_0x6953('0xd0')](_0x6953('0xd1'))){_0x458df0['limit']=qs[_0x6953('0xd2')](_0x452f34['query'][_0x6953('0xd2')]);_0x458df0['offset']=qs[_0x6953('0x22')](_0x452f34[_0x6953('0x3d')][_0x6953('0x22')]);}return _0x5e0533[_0x6953('0xde')](_0x458df0);}})[_0x6953('0x27')](function(_0x6c8789){if(_0x6c8789){return _0x6c8789?{'count':_0x15e33f,'rows':_0x6c8789}:null;}})[_0x6953('0x27')](respondWithResult(_0x3e6041,null))['catch'](handleError(_0x3e6041,null));};exports[_0x6953('0xe0')]=function(_0x344284,_0x282a1d){var _0x3282aa={};var _0xe7f2ac={};var _0x10e0b4;var _0x398168;return db[_0x6953('0x36')][_0x6953('0x91')]({'where':{'id':_0x344284['params']['id']}})[_0x6953('0x27')](handleEntityNotFound(_0x282a1d,null))[_0x6953('0x27')](function(_0x4db410){if(_0x4db410){_0x10e0b4=_0x4db410;_0xe7f2ac['model']=_['keys'](db[_0x6953('0xe1')][_0x6953('0x37')]);_0xe7f2ac['query']=_['keys'](_0x344284[_0x6953('0x3d')]);_0xe7f2ac[_0x6953('0xc9')]=_[_0x6953('0x54')](_0xe7f2ac['model'],_0xe7f2ac['query']);_0x3282aa[_0x6953('0x40')]=_['intersection'](_0xe7f2ac['model'],qs[_0x6953('0x55')](_0x344284['query']['fields']));_0x3282aa['attributes']=_0x3282aa[_0x6953('0x40')]['length']?_0x3282aa[_0x6953('0x40')]:_0xe7f2ac[_0x6953('0x4f')];_0x3282aa[_0x6953('0xc7')]=qs['sort'](_0x344284[_0x6953('0x3d')][_0x6953('0xc8')]);_0x3282aa['where']=qs[_0x6953('0xc9')](_['pick'](_0x344284[_0x6953('0x3d')],_0xe7f2ac[_0x6953('0xc9')]));if(_0x344284[_0x6953('0x3d')]['filter']){_0x3282aa[_0x6953('0x3c')]=_[_0x6953('0xcb')](_0x3282aa[_0x6953('0x3c')],{'$or':_['map'](_0x3282aa[_0x6953('0x40')],function(_0x47b8a6){var _0xe91790={};_0xe91790[_0x47b8a6]={'$like':'%'+_0x344284[_0x6953('0x3d')][_0x6953('0x2d')]+'%'};return _0xe91790;})});}_0x3282aa=_['merge']({},_0x3282aa,_0x344284['options']);return _0x10e0b4[_0x6953('0xe0')](_0x3282aa);}})[_0x6953('0x27')](function(_0x3436bc){if(_0x3436bc){_0x398168=_0x3436bc['length'];if(!_0x344284['query'][_0x6953('0xd0')](_0x6953('0xd1'))){_0x3282aa['limit']=qs['limit'](_0x344284['query'][_0x6953('0xd2')]);_0x3282aa[_0x6953('0x22')]=qs['offset'](_0x344284[_0x6953('0x3d')][_0x6953('0x22')]);}return _0x10e0b4[_0x6953('0xe0')](_0x3282aa);}})[_0x6953('0x27')](function(_0x3e49b1){if(_0x3e49b1){return _0x3e49b1?{'count':_0x398168,'rows':_0x3e49b1}:null;}})[_0x6953('0x27')](respondWithResult(_0x282a1d,null))['catch'](handleError(_0x282a1d,null));};exports[_0x6953('0xe2')]=function(_0x2c7765,_0x4ca214){var _0x43eb60={'raw':!![],'where':{}};var _0x487440={};var _0x428be5={'count':0x0,'rows':[]};return db[_0x6953('0x36')][_0x6953('0x91')]({'where':{'id':_0x2c7765[_0x6953('0x4e')]['id']}})[_0x6953('0x27')](handleEntityNotFound(_0x4ca214,null))[_0x6953('0x27')](function(_0x51fa39){if(_0x51fa39){_0x487440[_0x6953('0x4f')]=_['keys'](db['MailInteraction'][_0x6953('0x37')]);_0x487440[_0x6953('0x3d')]=_[_0x6953('0x51')](_0x2c7765[_0x6953('0x3d')]);_0x487440[_0x6953('0xc9')]=_[_0x6953('0x54')](_0x487440[_0x6953('0x4f')],_0x487440['query']);_0x43eb60['attributes']=_[_0x6953('0x54')](_0x487440['model'],qs['fields'](_0x2c7765['query'][_0x6953('0x55')]));_0x43eb60[_0x6953('0x40')]=_0x43eb60[_0x6953('0x40')][_0x6953('0x45')]?_0x43eb60[_0x6953('0x40')]:_0x487440[_0x6953('0x4f')];if(!_0x2c7765[_0x6953('0x3d')][_0x6953('0xd0')](_0x6953('0xd1'))){_0x43eb60[_0x6953('0xd2')]=qs['limit'](_0x2c7765[_0x6953('0x3d')]['limit']);_0x43eb60[_0x6953('0x22')]=qs[_0x6953('0x22')](_0x2c7765['query'][_0x6953('0x22')]);}_0x43eb60['order']=qs[_0x6953('0xc8')](_0x2c7765[_0x6953('0x3d')]['sort']);_0x43eb60[_0x6953('0x3c')]=qs[_0x6953('0xc9')](_[_0x6953('0xca')](_0x2c7765[_0x6953('0x3d')],_0x487440[_0x6953('0xc9')]));_0x43eb60[_0x6953('0x3c')]['UserId']=_0x51fa39['id'];if(_0x2c7765[_0x6953('0x3d')][_0x6953('0x2d')]){_0x43eb60[_0x6953('0x3c')]=_[_0x6953('0xcb')](_0x43eb60[_0x6953('0x3c')],{'$or':_[_0x6953('0x38')](_0x43eb60[_0x6953('0x40')],function(_0x210652){var _0x4ff563={};_0x4ff563[_0x210652]={'$like':'%'+_0x2c7765[_0x6953('0x3d')][_0x6953('0x2d')]+'%'};return _0x4ff563;})});}_0x43eb60=_['merge']({},_0x43eb60,_0x2c7765[_0x6953('0xcc')]);return db[_0x6953('0xe3')][_0x6953('0x24')]({'where':_0x43eb60['where']})[_0x6953('0x27')](function(_0x150c9c){_0x428be5['count']=_0x150c9c;if(_0x2c7765[_0x6953('0x3d')][_0x6953('0x3e')]){_0x43eb60[_0x6953('0x3f')]=[{'all':!![]}];}return db[_0x6953('0xe3')][_0x6953('0x41')](_0x43eb60);})[_0x6953('0x27')](function(_0x53b9ac){_0x428be5[_0x6953('0x42')]=_0x53b9ac;return _0x428be5;});}})[_0x6953('0x27')](respondWithFilteredResult(_0x4ca214,_0x43eb60))[_0x6953('0x1e')](handleError(_0x4ca214,null));};exports[_0x6953('0xe4')]=function(_0x4727a1,_0x4b8fa6){var _0x470f34={};var _0x4efc2d={};var _0x59965b;var _0x5d9127;return db[_0x6953('0x36')][_0x6953('0x91')]({'where':{'id':_0x4727a1[_0x6953('0x4e')]['id']}})[_0x6953('0x27')](handleEntityNotFound(_0x4b8fa6,null))['then'](function(_0x406dc0){if(_0x406dc0){_0x59965b=_0x406dc0;_0x4efc2d[_0x6953('0x4f')]=_[_0x6953('0x51')](db['SmsInteraction'][_0x6953('0x37')]);_0x4efc2d[_0x6953('0x3d')]=_[_0x6953('0x51')](_0x4727a1[_0x6953('0x3d')]);_0x4efc2d[_0x6953('0xc9')]=_[_0x6953('0x54')](_0x4efc2d['model'],_0x4efc2d[_0x6953('0x3d')]);_0x470f34[_0x6953('0x40')]=_[_0x6953('0x54')](_0x4efc2d[_0x6953('0x4f')],qs[_0x6953('0x55')](_0x4727a1['query'][_0x6953('0x55')]));_0x470f34[_0x6953('0x40')]=_0x470f34[_0x6953('0x40')][_0x6953('0x45')]?_0x470f34[_0x6953('0x40')]:_0x4efc2d[_0x6953('0x4f')];_0x470f34[_0x6953('0xc7')]=qs['sort'](_0x4727a1['query'][_0x6953('0xc8')]);_0x470f34[_0x6953('0x3c')]=qs[_0x6953('0xc9')](_['pick'](_0x4727a1[_0x6953('0x3d')],_0x4efc2d[_0x6953('0xc9')]));if(_0x4727a1[_0x6953('0x3d')][_0x6953('0x2d')]){_0x470f34[_0x6953('0x3c')]=_[_0x6953('0xcb')](_0x470f34[_0x6953('0x3c')],{'$or':_[_0x6953('0x38')](_0x470f34['attributes'],function(_0x31144e){var _0x2883f4={};_0x2883f4[_0x31144e]={'$like':'%'+_0x4727a1[_0x6953('0x3d')]['filter']+'%'};return _0x2883f4;})});}_0x470f34=_[_0x6953('0xcb')]({},_0x470f34,_0x4727a1[_0x6953('0xcc')]);return _0x59965b[_0x6953('0xe4')](_0x470f34);}})[_0x6953('0x27')](function(_0x54b8e3){if(_0x54b8e3){_0x5d9127=_0x54b8e3[_0x6953('0x45')];if(!_0x4727a1[_0x6953('0x3d')][_0x6953('0xd0')](_0x6953('0xd1'))){_0x470f34[_0x6953('0xd2')]=qs[_0x6953('0xd2')](_0x4727a1[_0x6953('0x3d')]['limit']);_0x470f34['offset']=qs['offset'](_0x4727a1['query'][_0x6953('0x22')]);}return _0x59965b[_0x6953('0xe4')](_0x470f34);}})['then'](function(_0x12327c){if(_0x12327c){return _0x12327c?{'count':_0x5d9127,'rows':_0x12327c}:null;}})['then'](respondWithResult(_0x4b8fa6,null))['catch'](handleError(_0x4b8fa6,null));};exports[_0x6953('0xe5')]=function(_0x23abd2,_0x5d7895){var _0x522a6d={};var _0x34ab50={};var _0x3e8b51;var _0xa2c1da;return db['User'][_0x6953('0x91')]({'where':{'id':_0x23abd2[_0x6953('0x4e')]['id']}})[_0x6953('0x27')](handleEntityNotFound(_0x5d7895,null))[_0x6953('0x27')](function(_0x3f7a67){if(_0x3f7a67){_0x3e8b51=_0x3f7a67;_0x34ab50['model']=_[_0x6953('0x51')](db['FaxInteraction'][_0x6953('0x37')]);_0x34ab50[_0x6953('0x3d')]=_[_0x6953('0x51')](_0x23abd2[_0x6953('0x3d')]);_0x34ab50[_0x6953('0xc9')]=_[_0x6953('0x54')](_0x34ab50[_0x6953('0x4f')],_0x34ab50['query']);_0x522a6d[_0x6953('0x40')]=_[_0x6953('0x54')](_0x34ab50['model'],qs[_0x6953('0x55')](_0x23abd2[_0x6953('0x3d')]['fields']));_0x522a6d[_0x6953('0x40')]=_0x522a6d[_0x6953('0x40')][_0x6953('0x45')]?_0x522a6d[_0x6953('0x40')]:_0x34ab50[_0x6953('0x4f')];_0x522a6d[_0x6953('0xc7')]=qs[_0x6953('0xc8')](_0x23abd2['query']['sort']);_0x522a6d['where']=qs[_0x6953('0xc9')](_[_0x6953('0xca')](_0x23abd2[_0x6953('0x3d')],_0x34ab50[_0x6953('0xc9')]));if(_0x23abd2[_0x6953('0x3d')][_0x6953('0x2d')]){_0x522a6d[_0x6953('0x3c')]=_['merge'](_0x522a6d[_0x6953('0x3c')],{'$or':_[_0x6953('0x38')](_0x522a6d['attributes'],function(_0x348fd3){var _0x5a3d28={};_0x5a3d28[_0x348fd3]={'$like':'%'+_0x23abd2['query'][_0x6953('0x2d')]+'%'};return _0x5a3d28;})});}_0x522a6d=_['merge']({},_0x522a6d,_0x23abd2[_0x6953('0xcc')]);return _0x3e8b51[_0x6953('0xe5')](_0x522a6d);}})[_0x6953('0x27')](function(_0x235f88){if(_0x235f88){_0xa2c1da=_0x235f88[_0x6953('0x45')];if(!_0x23abd2[_0x6953('0x3d')]['hasOwnProperty'](_0x6953('0xd1'))){_0x522a6d[_0x6953('0xd2')]=qs[_0x6953('0xd2')](_0x23abd2[_0x6953('0x3d')][_0x6953('0xd2')]);_0x522a6d[_0x6953('0x22')]=qs['offset'](_0x23abd2[_0x6953('0x3d')]['offset']);}return _0x3e8b51[_0x6953('0xe5')](_0x522a6d);}})['then'](function(_0x385edc){if(_0x385edc){return _0x385edc?{'count':_0xa2c1da,'rows':_0x385edc}:null;}})[_0x6953('0x27')](respondWithResult(_0x5d7895,null))[_0x6953('0x1e')](handleError(_0x5d7895,null));};exports[_0x6953('0xe6')]=function(_0x17174f,_0x4786ee){var _0x14f7a6={};var _0x8f554d={};var _0x3bdc0e;var _0x40055f;return db[_0x6953('0x36')][_0x6953('0x91')]({'where':{'id':_0x17174f[_0x6953('0x4e')]['id']}})[_0x6953('0x27')](handleEntityNotFound(_0x4786ee,null))[_0x6953('0x27')](function(_0x305033){if(_0x305033){_0x3bdc0e=_0x305033;_0x8f554d[_0x6953('0x4f')]=_[_0x6953('0x51')](db['WhatsappInteraction'][_0x6953('0x37')]);_0x8f554d[_0x6953('0x3d')]=_[_0x6953('0x51')](_0x17174f[_0x6953('0x3d')]);_0x8f554d['filters']=_[_0x6953('0x54')](_0x8f554d[_0x6953('0x4f')],_0x8f554d[_0x6953('0x3d')]);_0x14f7a6[_0x6953('0x40')]=_[_0x6953('0x54')](_0x8f554d[_0x6953('0x4f')],qs['fields'](_0x17174f['query'][_0x6953('0x55')]));_0x14f7a6[_0x6953('0x40')]=_0x14f7a6[_0x6953('0x40')]['length']?_0x14f7a6['attributes']:_0x8f554d['model'];_0x14f7a6[_0x6953('0xc7')]=qs[_0x6953('0xc8')](_0x17174f[_0x6953('0x3d')][_0x6953('0xc8')]);_0x14f7a6[_0x6953('0x3c')]=qs['filters'](_['pick'](_0x17174f[_0x6953('0x3d')],_0x8f554d[_0x6953('0xc9')]));if(_0x17174f[_0x6953('0x3d')][_0x6953('0x2d')]){_0x14f7a6[_0x6953('0x3c')]=_[_0x6953('0xcb')](_0x14f7a6['where'],{'$or':_[_0x6953('0x38')](_0x14f7a6[_0x6953('0x40')],function(_0x24348d){var _0x500266={};_0x500266[_0x24348d]={'$like':'%'+_0x17174f[_0x6953('0x3d')]['filter']+'%'};return _0x500266;})});}_0x14f7a6=_['merge']({},_0x14f7a6,_0x17174f[_0x6953('0xcc')]);return _0x3bdc0e['getWhatsappInteractions'](_0x14f7a6);}})['then'](function(_0x48c4ff){if(_0x48c4ff){_0x40055f=_0x48c4ff[_0x6953('0x45')];if(!_0x17174f[_0x6953('0x3d')]['hasOwnProperty'](_0x6953('0xd1'))){_0x14f7a6['limit']=qs[_0x6953('0xd2')](_0x17174f[_0x6953('0x3d')][_0x6953('0xd2')]);_0x14f7a6['offset']=qs['offset'](_0x17174f['query'][_0x6953('0x22')]);}return _0x3bdc0e[_0x6953('0xe6')](_0x14f7a6);}})['then'](function(_0x28e2fc){if(_0x28e2fc){return _0x28e2fc?{'count':_0x40055f,'rows':_0x28e2fc}:null;}})[_0x6953('0x27')](respondWithResult(_0x4786ee,null))[_0x6953('0x1e')](handleError(_0x4786ee,null));};exports[_0x6953('0xe7')]=function(_0xc92262,_0x349b69,_0x599eac){var _0x5275f6;var _0x2cf71d;var _0x69e677;var _0x343977=!_[_0x6953('0x62')](_0xc92262['params']['id'])?_0xc92262[_0x6953('0x4e')]['id']:!_[_0x6953('0x62')](_0xc92262['user']['id'])?_0xc92262[_0x6953('0x2a')]['id']:null;return db[_0x6953('0x36')]['find']({'where':{'id':_0x343977,'role':{'$or':[_0x6953('0x28'),_0x6953('0x2a'),'agent']}},'attributes':['id',_0x6953('0x33'),_0x6953('0xe8'),_0x6953('0xe9'),_0x6953('0x58'),_0x6953('0x61'),'loginInPause']})[_0x6953('0x27')](function(_0x3fc1d2){if(_0x3fc1d2){if(_0x3fc1d2[_0x6953('0x58')]==='agent'){_0x5275f6=_0x3fc1d2;if(_0xc92262[_0x6953('0x57')]['interface']){_0x69e677=util[_0x6953('0xa9')]('LOCAL/%s@from-sip/n',_0x5275f6[_0xc92262[_0x6953('0x57')][_0x6953('0x9c')]]);}else if(_0xc92262[_0x6953('0x57')]['intrf']){_0x69e677=util[_0x6953('0xa9')](_0x6953('0xaa'),_0xc92262['body'][_0x6953('0xea')]);}else{_0x69e677=util[_0x6953('0xa9')]('SIP/%s',_0x5275f6['name']);}socket['to'](util['format']('user:%s',_0x5275f6[_0x6953('0x33')]))[_0x6953('0xa4')](_0x6953('0xeb'),{'user':{'id':_0x5275f6['id'],'name':_0x5275f6[_0x6953('0x33')]},'ip':_0xc92262[_0x6953('0xec')][_0x6953('0xed')]||_0xc92262[_0x6953('0xee')][_0x6953('0xef')]||_0xc92262['socket'][_0x6953('0xef')]||_0xc92262[_0x6953('0xee')][_0x6953('0xf0')][_0x6953('0xef')]});return db[_0x6953('0xb2')][_0x6953('0x31')]({'where':{'membername':_0x5275f6[_0x6953('0x33')]},'individualHooks':!![]});}}else{throw new db[(_0x6953('0x8d'))][(_0x6953('0x8a'))](_0x6953('0xf1'));}})[_0x6953('0x27')](function(){if(_0x5275f6){return _0x5275f6[_0x6953('0xf2')]({'raw':!![]});}})[_0x6953('0x27')](function(_0x534e73){if(_0x5275f6){var _0x4da04a=[];if(_0x534e73){_0x2cf71d=_0x534e73;if(_0x2cf71d[_0x6953('0x45')]){for(var _0x4f5c11=0x0;_0x4f5c11<_0x2cf71d['length'];_0x4f5c11++){_0x4da04a[_0x6953('0x46')]({'membername':_0x5275f6[_0x6953('0x33')],'UserId':_0x5275f6['id'],'queue_name':_0x2cf71d[_0x4f5c11][_0x6953('0x33')],'VoiceQueueId':_0x2cf71d[_0x4f5c11]['id'],'interface':_0x69e677,'paused':_0x5275f6[_0x6953('0x9a')]||![],'penalty':_0x2cf71d[_0x4f5c11][_0x6953('0xf3')]||0x0});}return BPromise[_0x6953('0x82')](_0x4da04a,function(_0x23e31b){return db[_0x6953('0xb2')][_0x6953('0xac')](_0x23e31b);});}}}})[_0x6953('0x27')](function(){if(_0x5275f6){return db[_0x6953('0xf4')][_0x6953('0x41')]({'where':{'membername':_0x5275f6[_0x6953('0x33')],'exitAt':null}});}})[_0x6953('0x27')](function(_0x12d3d5){if(_0x5275f6){var _0x2a0486=[];_0x12d3d5[_0x6953('0xf5')](function(_0x4afba3){_0x2a0486[_0x6953('0x46')](_0x4afba3[_0x6953('0x26')]({'exitAt':moment()['format'](_0x6953('0xf6'))}));});return BPromise[_0x6953('0x4d')](_0x2a0486);}})['then'](function(){if(_0x5275f6){var _0x2b9511=[];var _0x5a0876=[];var _0x287e79=utils[_0x6953('0xf7')]();var _0x15998d={'membername':_0x5275f6[_0x6953('0x33')],'interface':_0x69e677,'enterAt':moment()[_0x6953('0xa9')](_0x6953('0xf6')),'role':_0x5275f6[_0x6953('0x58')],'internal':_0x5275f6[_0x6953('0x61')]};_0x287e79[_0x6953('0xf5')](function(_0x3c652f){_0x2b9511[_0x6953('0x46')](_['merge']({'channel':_0x3c652f,'type':_0x6953('0xf8'),'data1':_0xc92262[_0x6953('0x57')][_0x6953('0xf9')],'data2':_0x69e677},_0x15998d));if(_0x5275f6[_0x6953('0x9a')]){_0x5a0876[_0x6953('0x46')](_[_0x6953('0xcb')]({'channel':_0x3c652f,'type':_0x6953('0xfa'),'data1':_0x6953('0xfb')},_0x15998d));}});return db['MemberReport'][_0x6953('0x80')](_0x2b9511['concat'](_0x5a0876),{'individualHooks':!![]});}})[_0x6953('0x27')](function(){if(_0x5275f6){return _0x5275f6[_0x6953('0x26')]({'online':!![],'lastLoginAt':moment()[_0x6953('0xa9')](_0x6953('0xf6')),'voicePause':_0x5275f6[_0x6953('0x9a')]||![],'mailPause':_0x5275f6[_0x6953('0x9a')]||![],'chatPause':_0x5275f6[_0x6953('0x9a')]||![],'faxPause':_0x5275f6[_0x6953('0x9a')]||![],'smsPause':_0x5275f6['loginInPause']||![],'openchannelPause':_0x5275f6[_0x6953('0x9a')]||![],'whatsappPause':_0x5275f6['loginInPause']||![],'pauseType':_0x5275f6[_0x6953('0x9a')]?_0x6953('0xfb'):null,'interface':_0x69e677,'lastPauseAt':moment()['format'](_0x6953('0xf6'))});}})[_0x6953('0x27')](function(_0x3c9212){if(_0xc92262[_0x6953('0xfc')]){return _0x599eac();}else{return BPromise['resolve'](_0x3c9212)[_0x6953('0x27')](respondWithResult(_0x349b69,null));}})[_0x6953('0x1e')](handleError(_0x349b69,null));};exports['logout']=function(_0x1013d8,_0x52fe1b){var _0x56aac7;return db[_0x6953('0x36')][_0x6953('0x56')]({'where':{'id':_0x1013d8['params']['id'],'role':_0x6953('0x79')},'attributes':['id','name',_0x6953('0x58')]})[_0x6953('0x27')](handleEntityNotFound(_0x52fe1b,null))[_0x6953('0x27')](function(_0x161fb2){if(_0x161fb2){_0x56aac7=_0x161fb2;return db['UserVoiceQueueRt'][_0x6953('0x31')]({'where':{'membername':_0x56aac7[_0x6953('0x33')]},'individualHooks':!![]});}})[_0x6953('0x27')](function(){return db[_0x6953('0xf4')][_0x6953('0x41')]({'where':{'membername':_0x56aac7[_0x6953('0x33')],'exitAt':null}});})[_0x6953('0x27')](function(_0x31a1fd){var _0x52b805=[];_0x31a1fd[_0x6953('0xf5')](function(_0x23600b){_0x52b805[_0x6953('0x46')](_0x23600b['update']({'exitAt':moment()[_0x6953('0xa9')]('YYYY-MM-DD\x20HH:mm:ss')}));});return BPromise[_0x6953('0x4d')](_0x52b805);})['then'](function(){return _0x56aac7[_0x6953('0x26')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![],'interface':null});})[_0x6953('0x27')](respondWithResult(_0x52fe1b,null))[_0x6953('0x1e')](handleError(_0x52fe1b,null));};exports[_0x6953('0xfd')]=function(_0x5ca905,_0x4697b3){var _0x1cdb18;return db[_0x6953('0xb2')][_0x6953('0x26')]({'paused':0x1},{'where':{'UserId':_0x5ca905['params']['id']},'individualHooks':!![]})[_0x6953('0x27')](function(){return db[_0x6953('0x36')][_0x6953('0x56')]({'where':{'id':_0x5ca905[_0x6953('0x4e')]['id'],'role':'agent'},'attributes':['id',_0x6953('0x33'),_0x6953('0x58'),_0x6953('0x61'),_0x6953('0x9c')]});})['then'](handleEntityNotFound(_0x4697b3,null))['then'](function(_0x358662){if(_0x358662){_0x1cdb18=_0x358662;return respondWithRpcPromise(_0x6953('0xfe'),'pause',{'id':_0x1cdb18['id'],'name':_0x1cdb18[_0x6953('0x33')],'pause':!![]});}})['then'](function(){if(_0x1cdb18){return db[_0x6953('0xf4')][_0x6953('0x41')]({'where':{'membername':_0x1cdb18[_0x6953('0x33')],'type':'PAUSE','exitAt':null}});}})[_0x6953('0x27')](function(_0x2c11b4){if(_0x2c11b4['length']){var _0x3ad5d6=moment()[_0x6953('0xa9')](_0x6953('0xf6'));for(var _0x6d8a0=0x0,_0x7e11c9=_0x2c11b4[_0x6953('0x45')];_0x6d8a0<_0x7e11c9;_0x6d8a0++){_0x2c11b4[_0x6d8a0][_0x6953('0xff')]({'exitAt':_0x3ad5d6});}}})[_0x6953('0x27')](function(){var _0x3b6683=[];var _0x2c7b17=utils[_0x6953('0xf7')]();_0x2c7b17[_0x6953('0xf5')](function(_0xfed56d){_0x3b6683[_0x6953('0x46')]({'channel':_0xfed56d,'membername':_0x1cdb18['name'],'interface':_[_0x6953('0x62')](_0x1cdb18[_0x6953('0x9c')])?util[_0x6953('0xa9')](_0x6953('0xaa'),_0x1cdb18['name']):_0x1cdb18[_0x6953('0x9c')],'type':_0x6953('0xfa'),'enterAt':moment()[_0x6953('0xa9')](_0x6953('0xf6')),'data1':_0x5ca905[_0x6953('0x57')][_0x6953('0x3a')]||_0x6953('0x100'),'role':_0x1cdb18[_0x6953('0x58')],'internal':_0x1cdb18[_0x6953('0x61')]});});return db[_0x6953('0xf4')][_0x6953('0x80')](_0x3b6683,{'individualHooks':!![]});})['then'](function(){return _0x1cdb18['update']({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'whatsappPause':!![],'openchannelPause':!![],'pauseType':_0x5ca905[_0x6953('0x57')][_0x6953('0x3a')]||_0x6953('0x100'),'lastPauseAt':moment()[_0x6953('0xa9')]('YYYY-MM-DD\x20HH:mm:ss')});})['then'](respondWithResult(_0x4697b3,null))[_0x6953('0x1e')](handleError(_0x4697b3,null));};exports[_0x6953('0x101')]=function(_0xb9b9d1,_0x4ebfaf){var _0x4f095b;return db['User']['find']({'where':{'id':_0xb9b9d1[_0x6953('0x4e')]['id']},'attributes':['id',_0x6953('0x33'),_0x6953('0x58'),_0x6953('0x9b'),_0x6953('0x102'),_0x6953('0x103'),'faxPause','openchannelPause',_0x6953('0x104'),_0x6953('0x105'),_0x6953('0x106'),'lastPauseAt']})['then'](handleEntityNotFound(_0x4ebfaf,null))[_0x6953('0x27')](function(_0x51cf14){if(_0x51cf14){_0x4f095b=_0x51cf14;if(_0xb9b9d1[_0x6953('0x57')][_0x6953('0x98')]&&!utils[_0x6953('0xae')](_0xb9b9d1[_0x6953('0x57')][_0x6953('0x98')])){throw new db[(_0x6953('0x8d'))][(_0x6953('0x8a'))]('Unknown\x20channel');}switch(_0xb9b9d1[_0x6953('0x57')][_0x6953('0x98')]){case _0x6953('0xa6'):return respondWithRpcPromise(_0x6953('0xfe'),_0x6953('0x101'),{'id':_0x4f095b['id'],'name':_0x4f095b[_0x6953('0x33')],'pause':![]})[_0x6953('0x27')](function(){return db['UserVoiceQueueRt'][_0x6953('0x26')]({'paused':0x0},{'where':{'UserId':_0x4f095b['id']},'individualHooks':!![]});})[_0x6953('0x27')](function(){return db['MemberReport'][_0x6953('0x56')]({'where':{'channel':_0xb9b9d1[_0x6953('0x57')][_0x6953('0x98')],'membername':_0x4f095b[_0x6953('0x33')],'type':_0x6953('0xfa'),'exitAt':null}});})[_0x6953('0x27')](function(_0x24e692){if(_0x24e692){return _0x24e692['update']({'exitAt':moment()[_0x6953('0xa9')]('YYYY-MM-DD\x20HH:mm:ss'),'data2':_0x6953('0x107')},{'individualHooks':!![]});}return null;})['then'](function(){return _0x4f095b[_0x6953('0x26')]({'voicePause':![]});});case'mail':case'chat':case _0x6953('0x49'):case'sms':case _0x6953('0x4c'):case'openchannel':return db['MemberReport'][_0x6953('0x56')]({'where':{'channel':_0xb9b9d1['body'][_0x6953('0x98')],'membername':_0x4f095b[_0x6953('0x33')],'type':_0x6953('0xfa'),'exitAt':null}})[_0x6953('0x27')](function(_0x57db46){if(_0x57db46){return _0x57db46[_0x6953('0x26')]({'exitAt':moment()['format'](_0x6953('0xf6')),'data2':_0x6953('0x107')},{'individualHooks':!![]});}return null;})[_0x6953('0x27')](function(){var _0x102c49={};_[_0x6953('0x108')](_0x102c49,util[_0x6953('0xa9')](_0x6953('0x109'),_0xb9b9d1['body'][_0x6953('0x98')],_0x6953('0x10a')),![]);return _0x4f095b[_0x6953('0x26')](_0x102c49);});default:return respondWithRpcPromise(_0x6953('0xfe'),_0x6953('0x101'),{'id':_0x4f095b['id'],'name':_0x4f095b[_0x6953('0x33')],'pause':![]})[_0x6953('0x27')](function(){return db['UserVoiceQueueRt'][_0x6953('0x26')]({'paused':0x0},{'where':{'UserId':_0x4f095b['id']}});})[_0x6953('0x27')](function(){return db[_0x6953('0xf4')][_0x6953('0x41')]({'where':{'membername':_0x4f095b[_0x6953('0x33')],'type':'PAUSE','exitAt':null}});})[_0x6953('0x27')](function(_0x4399b5){var _0xc46d2f=[];_0x4399b5[_0x6953('0xf5')](function(_0x4c18e4){_0xc46d2f[_0x6953('0x46')](_0x4c18e4[_0x6953('0x26')]({'exitAt':moment()[_0x6953('0xa9')](_0x6953('0xf6')),'data2':_0x6953('0x107')}));});return BPromise[_0x6953('0x4d')](_0xc46d2f);})[_0x6953('0x27')](function(){return _0x4f095b['update']({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'whatsappPause':![],'openchannelPause':![]});});}}})[_0x6953('0x27')](respondWithResult(_0x4ebfaf,null))[_0x6953('0x1e')](handleError(_0x4ebfaf,null));};exports[_0x6953('0x10b')]=function(_0x52f727,_0x378aae){var _0x81cd52={};var _0x32f7af={};var _0x1adffb;var _0x4f2ffa;return db[_0x6953('0x36')][_0x6953('0x91')]({'where':{'id':_0x52f727[_0x6953('0x4e')]['id']}})[_0x6953('0x27')](handleEntityNotFound(_0x378aae,null))[_0x6953('0x27')](function(_0x2cf741){if(_0x2cf741){_0x1adffb=_0x2cf741;_0x32f7af[_0x6953('0x4f')]=_['keys'](db['Team'][_0x6953('0x37')]);_0x32f7af[_0x6953('0x3d')]=_['keys'](_0x52f727[_0x6953('0x3d')]);_0x32f7af[_0x6953('0xc9')]=_[_0x6953('0x54')](_0x32f7af[_0x6953('0x4f')],_0x32f7af[_0x6953('0x3d')]);_0x81cd52[_0x6953('0x40')]=_['intersection'](_0x32f7af[_0x6953('0x4f')],qs['fields'](_0x52f727[_0x6953('0x3d')][_0x6953('0x55')]));_0x81cd52['attributes']=_0x81cd52[_0x6953('0x40')]['length']?_0x81cd52[_0x6953('0x40')]:_0x32f7af[_0x6953('0x4f')];_0x81cd52[_0x6953('0xc7')]=qs['sort'](_0x52f727[_0x6953('0x3d')][_0x6953('0xc8')]);_0x81cd52[_0x6953('0x3c')]=qs[_0x6953('0xc9')](_[_0x6953('0xca')](_0x52f727[_0x6953('0x3d')],_0x32f7af[_0x6953('0xc9')]));if(_0x52f727[_0x6953('0x3d')]['filter']){_0x81cd52[_0x6953('0x3c')]=_[_0x6953('0xcb')](_0x81cd52['where'],{'$or':_[_0x6953('0x38')](_0x81cd52['attributes'],function(_0x34f73b){var _0x2e566f={};_0x2e566f[_0x34f73b]={'$like':'%'+_0x52f727[_0x6953('0x3d')][_0x6953('0x2d')]+'%'};return _0x2e566f;})});}_0x81cd52=_['merge']({},_0x81cd52,_0x52f727['options']);return _0x1adffb[_0x6953('0x10b')](_0x81cd52);}})[_0x6953('0x27')](function(_0x40efa0){if(_0x40efa0){_0x4f2ffa=_0x40efa0[_0x6953('0x45')];if(!_0x52f727[_0x6953('0x3d')][_0x6953('0xd0')](_0x6953('0xd1'))){_0x81cd52['limit']=qs[_0x6953('0xd2')](_0x52f727[_0x6953('0x3d')][_0x6953('0xd2')]);_0x81cd52[_0x6953('0x22')]=qs[_0x6953('0x22')](_0x52f727[_0x6953('0x3d')][_0x6953('0x22')]);}return _0x1adffb[_0x6953('0x10b')](_0x81cd52);}})[_0x6953('0x27')](function(_0x4f2f7a){if(_0x4f2f7a){return _0x4f2f7a?{'count':_0x4f2ffa,'rows':_0x4f2f7a}:null;}})[_0x6953('0x27')](respondWithResult(_0x378aae,null))[_0x6953('0x1e')](handleError(_0x378aae,null));};exports[_0x6953('0x10c')]=function(_0x12b470,_0x4cfd21){return db[_0x6953('0x36')][_0x6953('0x56')]({'where':{'id':_0x12b470['params']['id']}})[_0x6953('0x27')](handleEntityNotFound(_0x4cfd21,null))[_0x6953('0x27')](function(_0x872f4a){if(_0x872f4a){var _0x5e1c38=_0x872f4a['get']({'plain':!![]});return _0x872f4a[_0x6953('0x10c')](_0x12b470['body'][_0x6953('0x5b')],_[_0x6953('0x5c')](_0x12b470[_0x6953('0x57')],['ids','id'])||{})[_0x6953('0x27')](function(){for(var _0x34ba02=0x0;_0x34ba02<_0x12b470[_0x6953('0x57')][_0x6953('0x5b')][_0x6953('0x45')];_0x34ba02++){var _0x2ec5ab=[];var _0x5ab4b8={};db[_0x6953('0x10d')][_0x6953('0x91')]({'where':{'id':_0x12b470[_0x6953('0x57')][_0x6953('0x5b')][_0x34ba02]}})['then'](function(_0x27f31f){_0x5ab4b8=_0x27f31f[_0x6953('0x48')];_0x2ec5ab[_0x6953('0x46')](_0x27f31f[_0x6953('0xf2')]()['then'](function(_0x9ff156){for(var _0x39acfb=0x0;_0x39acfb<_0x9ff156[_0x6953('0x45')];_0x39acfb++){_0x9ff156[_0x39acfb][_0x6953('0x10e')](_0x6953('0x98'),_0x6953('0x10f'));}return _0x9ff156;}));_0x2ec5ab[_0x6953('0x46')](_0x27f31f[_0x6953('0x110')]()[_0x6953('0x27')](function(_0x453f8f){for(var _0x183709=0x0;_0x183709<_0x453f8f[_0x6953('0x45')];_0x183709++){_0x453f8f[_0x183709][_0x6953('0x10e')](_0x6953('0x98'),_0x6953('0x111'));}return _0x453f8f;}));_0x2ec5ab[_0x6953('0x46')](_0x27f31f[_0x6953('0x112')]()['then'](function(_0x2838e0){for(var _0x5cf559=0x0;_0x5cf559<_0x2838e0[_0x6953('0x45')];_0x5cf559++){_0x2838e0[_0x5cf559][_0x6953('0x10e')](_0x6953('0x98'),_0x6953('0x113'));}return _0x2838e0;}));_0x2ec5ab[_0x6953('0x46')](_0x27f31f[_0x6953('0x114')]()[_0x6953('0x27')](function(_0x18e515){for(var _0x361f90=0x0;_0x361f90<_0x18e515['length'];_0x361f90++){_0x18e515[_0x361f90][_0x6953('0x10e')](_0x6953('0x98'),_0x6953('0x115'));}return _0x18e515;}));_0x2ec5ab[_0x6953('0x46')](_0x27f31f[_0x6953('0x116')]()[_0x6953('0x27')](function(_0x269f6b){for(var _0x128e25=0x0;_0x128e25<_0x269f6b['length'];_0x128e25++){_0x269f6b[_0x128e25][_0x6953('0x10e')](_0x6953('0x98'),_0x6953('0x117'));}return _0x269f6b;}));_0x2ec5ab[_0x6953('0x46')](_0x27f31f['getFaxQueues']()[_0x6953('0x27')](function(_0x431a3d){for(var _0x454f74=0x0;_0x454f74<_0x431a3d['length'];_0x454f74++){_0x431a3d[_0x454f74][_0x6953('0x10e')]('channel',_0x6953('0x118'));}return _0x431a3d;}));_0x2ec5ab[_0x6953('0x46')](_0x27f31f[_0x6953('0x119')]()[_0x6953('0x27')](function(_0x3566a6){for(var _0x1606e9=0x0;_0x1606e9<_0x3566a6[_0x6953('0x45')];_0x1606e9++){_0x3566a6[_0x1606e9][_0x6953('0x10e')](_0x6953('0x98'),_0x6953('0x11a'));}return _0x3566a6;}));return BPromise[_0x6953('0x4d')](_0x2ec5ab);})[_0x6953('0x27')](function(_0x1cc624){var _0x53bf3b=_[_0x6953('0x11b')](_0x1cc624);_0x2ec5ab=[];return db['sequelize']['transaction'](function(_0x59dd54){for(var _0x4d288e=0x0;_0x4d288e<_0x53bf3b['length'];_0x4d288e++){_0x2ec5ab[_0x6953('0x46')](_0x53bf3b[_0x4d288e]['addAgent'](_0x5e1c38['id']),{'transaction':_0x59dd54});}return BPromise[_0x6953('0x4d')](_0x2ec5ab)[_0x6953('0x27')](function(){if(_0x5e1c38[_0x6953('0x99')]){return BPromise[_0x6953('0x82')](_['filter'](_0x53bf3b,function(_0xcd01b0){return _0xcd01b0[_0x6953('0x11c')](_0x6953('0x98'))===_0x6953('0x10f');}),function(_0x2c5ca0){return db[_0x6953('0xb2')][_0x6953('0xac')]({'membername':_0x5e1c38[_0x6953('0x33')],'UserId':_0x5e1c38['id'],'queue_name':_0x2c5ca0['name'],'VoiceQueueId':_0x2c5ca0['id'],'interface':_[_0x6953('0x62')](_0x5e1c38[_0x6953('0x9c')])?util[_0x6953('0xa9')]('SIP/%s',_0x5e1c38['name']):_0x5e1c38[_0x6953('0x9c')],'paused':_0x5e1c38[_0x6953('0x9b')]||![],'penalty':_0x5e1c38[_0x6953('0xab')]},{'transaction':_0x59dd54});});}else{return;}})[_0x6953('0x27')](function(){for(var _0x3e4874=0x0;_0x3e4874<_0x53bf3b[_0x6953('0x45')];_0x3e4874++){var _0x165d2e=_0x53bf3b[_0x3e4874]['getDataValue'](_0x6953('0x98'));var _0x2e8d9d=_0x165d2e+_0x6953('0xa3');socket['emit']('user'+_0x165d2e+_0x6953('0xa5'),{'UserId':_0x5e1c38['id'],['queueField']:_0x53bf3b[_0x3e4874]['id']});}});});})[_0x6953('0x27')](function(){db[_0x6953('0x11d')][_0x6953('0x91')]({'where':{'teamId':_0x5ab4b8['id']}})[_0x6953('0x27')](function(_0x387c0a){if(_0x387c0a){db[_0x6953('0x11e')][_0x6953('0x78')]({'UserId':_0x12b470[_0x6953('0x4e')]['id'],'VoicePrefixId':_0x387c0a[_0x6953('0x11f')]});}});});}});}})[_0x6953('0x27')](respondWithStatusCode(_0x4cfd21,null))['catch'](handleError(_0x4cfd21,null));};exports[_0x6953('0x120')]=function(_0x1b8d4b,_0x1105af){return db[_0x6953('0x36')][_0x6953('0x91')]({'where':{'id':_0x1b8d4b[_0x6953('0x4e')]['id']}})['then'](handleEntityNotFound(_0x1105af,null))[_0x6953('0x27')](function(_0x414c2e){if(_0x414c2e){var _0x2e2ce2=_0x414c2e[_0x6953('0xa8')]({'plain':!![]});var _0x5d7cb6=_0x1b8d4b[_0x6953('0x3d')]['ids'];return _0x414c2e[_0x6953('0x120')](_0x5d7cb6)[_0x6953('0x27')](function(){for(var _0x29e89c=0x0;_0x29e89c<_0x5d7cb6[_0x6953('0x45')];_0x29e89c++){var _0x24b3d5=[];var _0x56eb7e={};db[_0x6953('0x10d')][_0x6953('0x91')]({'where':{'id':_0x5d7cb6[_0x29e89c]}})['then'](function(_0x4173ce){_0x56eb7e=_0x4173ce[_0x6953('0x48')];_0x24b3d5[_0x6953('0x46')](_0x4173ce[_0x6953('0xf2')]()[_0x6953('0x27')](function(_0x1f09a6){for(var _0x190a71=0x0;_0x190a71<_0x1f09a6['length'];_0x190a71++){_0x1f09a6[_0x190a71][_0x6953('0x10e')](_0x6953('0x98'),_0x6953('0x10f'));}return _0x1f09a6;}));_0x24b3d5['push'](_0x4173ce[_0x6953('0x110')]()['then'](function(_0x530d67){for(var _0x1560df=0x0;_0x1560df<_0x530d67[_0x6953('0x45')];_0x1560df++){_0x530d67[_0x1560df][_0x6953('0x10e')]('channel',_0x6953('0x111'));}return _0x530d67;}));_0x24b3d5[_0x6953('0x46')](_0x4173ce[_0x6953('0x112')]()[_0x6953('0x27')](function(_0x3a1d8f){for(var _0x2e3d5e=0x0;_0x2e3d5e<_0x3a1d8f[_0x6953('0x45')];_0x2e3d5e++){_0x3a1d8f[_0x2e3d5e][_0x6953('0x10e')]('channel',_0x6953('0x113'));}return _0x3a1d8f;}));_0x24b3d5['push'](_0x4173ce[_0x6953('0x114')]()[_0x6953('0x27')](function(_0xde3f15){for(var _0x1a215a=0x0;_0x1a215a<_0xde3f15[_0x6953('0x45')];_0x1a215a++){_0xde3f15[_0x1a215a]['setDataValue'](_0x6953('0x98'),_0x6953('0x115'));}return _0xde3f15;}));_0x24b3d5[_0x6953('0x46')](_0x4173ce[_0x6953('0x116')]()[_0x6953('0x27')](function(_0x5f3358){for(var _0x1e27f9=0x0;_0x1e27f9<_0x5f3358['length'];_0x1e27f9++){_0x5f3358[_0x1e27f9][_0x6953('0x10e')](_0x6953('0x98'),_0x6953('0x117'));}return _0x5f3358;}));_0x24b3d5[_0x6953('0x46')](_0x4173ce['getFaxQueues']()[_0x6953('0x27')](function(_0x39d0d4){for(var _0x528a50=0x0;_0x528a50<_0x39d0d4[_0x6953('0x45')];_0x528a50++){_0x39d0d4[_0x528a50][_0x6953('0x10e')](_0x6953('0x98'),_0x6953('0x118'));}return _0x39d0d4;}));_0x24b3d5[_0x6953('0x46')](_0x4173ce[_0x6953('0x119')]()['then'](function(_0x209e92){for(var _0x561e56=0x0;_0x561e56<_0x209e92['length'];_0x561e56++){_0x209e92[_0x561e56][_0x6953('0x10e')](_0x6953('0x98'),_0x6953('0x11a'));}return _0x209e92;}));return BPromise[_0x6953('0x4d')](_0x24b3d5);})[_0x6953('0x27')](function(_0x17a52f){var _0x21980e=_[_0x6953('0x11b')](_0x17a52f);_0x24b3d5=[];return db['sequelize'][_0x6953('0x121')](function(_0x5295af){for(var _0x282f36=0x0;_0x282f36<_0x21980e[_0x6953('0x45')];_0x282f36++){_0x24b3d5[_0x6953('0x46')](_0x21980e[_0x282f36][_0x6953('0x122')](_0x2e2ce2['id']),{'transaction':_0x5295af});}return BPromise[_0x6953('0x4d')](_0x24b3d5)[_0x6953('0x27')](function(){if(_0x2e2ce2[_0x6953('0x99')]){return BPromise[_0x6953('0x82')](_[_0x6953('0x2d')](_0x21980e,function(_0x47603e){return _0x47603e[_0x6953('0x11c')](_0x6953('0x98'))==='Voice';}),function(_0x6dafd5){return db[_0x6953('0xb2')][_0x6953('0x31')]({'where':{'VoiceQueueId':_0x6dafd5['id'],'UserId':_0x2e2ce2['id']},'transaction':_0x5295af});});}else{return;}})[_0x6953('0x27')](function(){db['TeamVoicePrefix'][_0x6953('0x91')]({'where':{'teamId':_0x56eb7e['id']}})[_0x6953('0x27')](function(_0x267303){if(_0x267303){return db[_0x6953('0x11e')][_0x6953('0x31')]({'where':{'UserId':_0x2e2ce2['id'],'VoicePrefixId':_0x267303[_0x6953('0x48')][_0x6953('0x11f')]}});}});})['then'](function(){for(var _0x1a22f2=0x0;_0x1a22f2<_0x21980e[_0x6953('0x45')];_0x1a22f2++){var _0x312d54=_0x21980e[_0x1a22f2][_0x6953('0x11c')]('channel');var _0x291c5c=_0x312d54+_0x6953('0xa3');socket['emit'](_0x6953('0x2a')+_0x312d54+'Queue:remove',{'UserId':_0x2e2ce2['id'],['queueField']:_0x21980e[_0x1a22f2]['id']});}});});});}});}})[_0x6953('0x27')](respondWithStatusCode(_0x1105af,null))['catch'](handleError(_0x1105af,null));};exports[_0x6953('0x123')]=function(_0x16012a,_0x1621b3){var _0x34773b={};var _0x266bc5={};var _0x341a0b;var _0x5c8a8e;return db['User'][_0x6953('0x91')]({'where':{'id':_0x16012a[_0x6953('0x4e')]['id']}})[_0x6953('0x27')](handleEntityNotFound(_0x1621b3,null))[_0x6953('0x27')](function(_0x5eea78){if(_0x5eea78){_0x341a0b=_0x5eea78;_0x266bc5[_0x6953('0x4f')]=_[_0x6953('0x51')](db['CmList'][_0x6953('0x37')]);_0x266bc5[_0x6953('0x3d')]=_[_0x6953('0x51')](_0x16012a['query']);_0x266bc5[_0x6953('0xc9')]=_[_0x6953('0x54')](_0x266bc5['model'],_0x266bc5[_0x6953('0x3d')]);_0x34773b[_0x6953('0x40')]=_[_0x6953('0x54')](_0x266bc5[_0x6953('0x4f')],qs[_0x6953('0x55')](_0x16012a[_0x6953('0x3d')][_0x6953('0x55')]));_0x34773b['attributes']=_0x34773b['attributes'][_0x6953('0x45')]?_0x34773b[_0x6953('0x40')]:_0x266bc5['model'];_0x34773b[_0x6953('0xc7')]=qs[_0x6953('0xc8')](_0x16012a[_0x6953('0x3d')][_0x6953('0xc8')]);_0x34773b[_0x6953('0x3c')]=qs[_0x6953('0xc9')](_[_0x6953('0xca')](_0x16012a['query'],_0x266bc5['filters']));if(_0x16012a[_0x6953('0x3d')]['filter']){_0x34773b[_0x6953('0x3c')]=_[_0x6953('0xcb')](_0x34773b[_0x6953('0x3c')],{'$or':_[_0x6953('0x38')](_0x34773b['attributes'],function(_0x5a13f1){var _0x3a08b1={};_0x3a08b1[_0x5a13f1]={'$like':'%'+_0x16012a[_0x6953('0x3d')][_0x6953('0x2d')]+'%'};return _0x3a08b1;})});}_0x34773b=_[_0x6953('0xcb')]({},_0x34773b,_0x16012a['options']);return _0x341a0b[_0x6953('0x123')](_0x34773b);}})[_0x6953('0x27')](function(_0x35717f){if(_0x35717f){_0x5c8a8e=_0x35717f[_0x6953('0x45')];if(!_0x16012a[_0x6953('0x3d')][_0x6953('0xd0')]('nolimit')){_0x34773b[_0x6953('0xd2')]=qs['limit'](_0x16012a[_0x6953('0x3d')][_0x6953('0xd2')]);_0x34773b[_0x6953('0x22')]=qs['offset'](_0x16012a['query'][_0x6953('0x22')]);}return _0x341a0b[_0x6953('0x123')](_0x34773b);}})[_0x6953('0x27')](function(_0x107e11){if(_0x107e11){return _0x107e11?{'count':_0x5c8a8e,'rows':_0x107e11}:null;}})[_0x6953('0x27')](respondWithResult(_0x1621b3,null))[_0x6953('0x1e')](handleError(_0x1621b3,null));};exports['getAgents']=function(_0x2f3744,_0x13be06){var _0x54a1db={};var _0x779aaa={};var _0x287ebb;var _0x4d56a8;return db[_0x6953('0x36')][_0x6953('0x91')]({'where':{'id':_0x2f3744[_0x6953('0x4e')]['id']}})[_0x6953('0x27')](handleEntityNotFound(_0x13be06,null))[_0x6953('0x27')](function(_0xce9988){if(_0xce9988){_0x287ebb=_0xce9988;_0x779aaa[_0x6953('0x4f')]=_['keys'](db['User'][_0x6953('0x37')]);_0x779aaa['query']=_[_0x6953('0x51')](_0x2f3744[_0x6953('0x3d')]);_0x779aaa[_0x6953('0xc9')]=_[_0x6953('0x54')](_0x779aaa[_0x6953('0x4f')],_0x779aaa[_0x6953('0x3d')]);_0x54a1db[_0x6953('0x40')]=_[_0x6953('0x54')](_0x779aaa[_0x6953('0x4f')],qs[_0x6953('0x55')](_0x2f3744[_0x6953('0x3d')][_0x6953('0x55')]));_0x54a1db[_0x6953('0x40')]=_0x54a1db[_0x6953('0x40')][_0x6953('0x45')]?_0x54a1db[_0x6953('0x40')]:_0x779aaa[_0x6953('0x4f')];_0x54a1db[_0x6953('0xc7')]=qs[_0x6953('0xc8')](_0x2f3744[_0x6953('0x3d')][_0x6953('0xc8')]);_0x54a1db[_0x6953('0x3c')]=qs[_0x6953('0xc9')](_[_0x6953('0xca')](_0x2f3744['query'],_0x779aaa[_0x6953('0xc9')]));if(_0x2f3744['query'][_0x6953('0x2d')]){_0x54a1db[_0x6953('0x3c')]=_['merge'](_0x54a1db[_0x6953('0x3c')],{'$or':_[_0x6953('0x38')](_0x54a1db['attributes'],function(_0x3376d9){var _0x2d5120={};_0x2d5120[_0x3376d9]={'$like':'%'+_0x2f3744[_0x6953('0x3d')][_0x6953('0x2d')]+'%'};return _0x2d5120;})});}_0x54a1db[_0x6953('0x4f')]=db[_0x6953('0x36')];_0x54a1db['as']=_0x6953('0x2b');_0x54a1db=_[_0x6953('0xcb')]({},_0x54a1db,_0x2f3744[_0x6953('0xcc')]);return _0x287ebb[_0x6953('0xf2')]({'include':[_0x54a1db]});}})['then'](function(_0x1764a3){if(_0x1764a3){var _0xcb6a43={},_0x901078=[],_0x221db7=0x0;for(var _0x44c718=0x0;_0x44c718<_0x1764a3[_0x6953('0x45')];_0x44c718+=0x1){for(var _0x20f85d=0x0,_0x565c04;_0x20f85d<_0x1764a3[_0x44c718][_0x6953('0x2b')]['length'];_0x20f85d+=0x1){_0x565c04=_0x1764a3[_0x44c718][_0x6953('0x2b')][_0x20f85d][_0x6953('0xa8')]({'plain':!![]});_0xcb6a43[_0x565c04['id']]=_0x565c04;}}_0xcb6a43=_[_0x6953('0x124')](_0xcb6a43);for(var _0x2b56a0=qs[_0x6953('0x22')](_0x2f3744['query'][_0x6953('0x22')]);_0x2b56a0<_0xcb6a43[_0x6953('0x45')]&&_0x901078[_0x6953('0x45')]<qs[_0x6953('0xd2')](_0x2f3744[_0x6953('0x3d')]['limit']);_0x2b56a0+=0x1){if(_0xcb6a43[_0x2b56a0]){_0x901078[_0x6953('0x46')](_0xcb6a43[_0x2b56a0]);}}return{'count':_0xcb6a43[_0x6953('0x45')],'rows':_0x901078};}})[_0x6953('0x27')](respondWithResult(_0x13be06,null))[_0x6953('0x1e')](handleError(_0x13be06,null));};exports[_0x6953('0x31')]=function(_0x36897a,_0x4e7a3d){if(_0x36897a[_0x6953('0x2a')]['id']==_0x36897a[_0x6953('0x4e')]['id']){return _0x4e7a3d[_0x6953('0x1f')](0x1f4)['send']({'message':_0x6953('0x125')});}return db[_0x6953('0x36')][_0x6953('0x56')]({'where':{'id':_0x36897a[_0x6953('0x4e')]['id']}})[_0x6953('0x27')](handleEntityNotFound(_0x4e7a3d,null))[_0x6953('0x27')](removeEntity(_0x4e7a3d,null))[_0x6953('0x1e')](handleError(_0x4e7a3d,null));};exports[_0x6953('0x126')]=function(_0x2a25f9,_0x11370d){return db[_0x6953('0x36')][_0x6953('0x56')]({'where':{'id':_0x2a25f9[_0x6953('0x4e')]['id']}})[_0x6953('0x27')](handleEntityNotFound(_0x11370d,null))[_0x6953('0x27')](function(_0x1aa08b){if(_0x1aa08b){return _0x1aa08b[_0x6953('0x126')](_0x2a25f9[_0x6953('0x57')][_0x6953('0x5b')],_[_0x6953('0x5c')](_0x2a25f9['body'],['ids','id'])||{})[_0x6953('0xa1')](function(){for(var _0x40c50c=0x0;_0x40c50c<_0x2a25f9['body'][_0x6953('0x5b')]['length'];_0x40c50c+=0x1){socket['emit']('user_has_chat_interactions:save',{'ChatInteractionId':Number(_0x2a25f9[_0x6953('0x57')]['ids'][_0x40c50c]),'UserId':Number(_0x2a25f9[_0x6953('0x4e')]['id'])});}return _0x2a25f9[_0x6953('0x57')]['ids'];});}})[_0x6953('0x27')](respondWithResult(_0x11370d,null))[_0x6953('0x1e')](handleError(_0x11370d,null));};exports[_0x6953('0x127')]=function(_0x3112bb,_0x795c4d){return db[_0x6953('0x36')][_0x6953('0x56')]({'where':{'id':_0x3112bb[_0x6953('0x4e')]['id']}})[_0x6953('0x27')](handleEntityNotFound(_0x795c4d,null))['then'](function(_0x12bde4){if(_0x12bde4){return _0x12bde4[_0x6953('0x127')](_0x3112bb[_0x6953('0x3d')][_0x6953('0x5b')])[_0x6953('0x27')](function(){if(_[_0x6953('0xb0')](_0x3112bb[_0x6953('0x3d')][_0x6953('0x5b')])){for(var _0x427047=0x0;_0x427047<_0x3112bb[_0x6953('0x3d')]['ids'][_0x6953('0x45')];_0x427047+=0x1){socket[_0x6953('0xa4')](_0x6953('0x128'),{'ChatInteractionId':Number(_0x3112bb[_0x6953('0x3d')][_0x6953('0x5b')][_0x427047]),'UserId':Number(_0x3112bb[_0x6953('0x4e')]['id'])});}}else{socket[_0x6953('0xa4')](_0x6953('0x128'),{'ChatInteractionId':Number(_0x3112bb['query'][_0x6953('0x5b')]),'UserId':Number(_0x3112bb['params']['id'])});}});}})[_0x6953('0x27')](respondWithStatusCode(_0x795c4d,null))[_0x6953('0x1e')](handleError(_0x795c4d,null));};exports['addMailInteractions']=function(_0x4e9c1b,_0x13cb8a){return db['User'][_0x6953('0x56')]({'where':{'id':_0x4e9c1b['params']['id']}})['then'](handleEntityNotFound(_0x13cb8a,null))[_0x6953('0x27')](function(_0x49260e){if(_0x49260e){return _0x49260e[_0x6953('0x129')](_0x4e9c1b[_0x6953('0x57')][_0x6953('0x5b')],_[_0x6953('0x5c')](_0x4e9c1b[_0x6953('0x57')],[_0x6953('0x5b'),'id'])||{})[_0x6953('0xa1')](function(){for(var _0x517920=0x0;_0x517920<_0x4e9c1b[_0x6953('0x57')]['ids'][_0x6953('0x45')];_0x517920+=0x1){socket[_0x6953('0xa4')](_0x6953('0x12a'),{'MailInteractionId':Number(_0x4e9c1b[_0x6953('0x57')][_0x6953('0x5b')][_0x517920]),'UserId':Number(_0x4e9c1b['params']['id'])});}return _0x4e9c1b[_0x6953('0x57')][_0x6953('0x5b')];});}})[_0x6953('0x27')](respondWithResult(_0x13cb8a,null))[_0x6953('0x1e')](handleError(_0x13cb8a,null));};exports[_0x6953('0x12b')]=function(_0x2090f9,_0x343b01){return db[_0x6953('0x36')][_0x6953('0x56')]({'where':{'id':_0x2090f9[_0x6953('0x4e')]['id']}})[_0x6953('0x27')](handleEntityNotFound(_0x343b01,null))[_0x6953('0x27')](function(_0x320c13){if(_0x320c13){return _0x320c13[_0x6953('0x12b')](_0x2090f9[_0x6953('0x3d')][_0x6953('0x5b')])[_0x6953('0x27')](function(){if(_[_0x6953('0xb0')](_0x2090f9[_0x6953('0x3d')][_0x6953('0x5b')])){for(var _0x3f924f=0x0;_0x3f924f<_0x2090f9[_0x6953('0x3d')][_0x6953('0x5b')][_0x6953('0x45')];_0x3f924f+=0x1){socket[_0x6953('0xa4')](_0x6953('0x12c'),{'MailInteractionId':Number(_0x2090f9[_0x6953('0x3d')][_0x6953('0x5b')][_0x3f924f]),'UserId':Number(_0x2090f9[_0x6953('0x4e')]['id'])});}}else{socket['emit']('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x2090f9[_0x6953('0x3d')][_0x6953('0x5b')]),'UserId':Number(_0x2090f9[_0x6953('0x4e')]['id'])});}});}})[_0x6953('0x27')](respondWithStatusCode(_0x343b01,null))[_0x6953('0x1e')](handleError(_0x343b01,null));};exports[_0x6953('0x12d')]=function(_0x2549b7,_0x1f2ea4){return db[_0x6953('0x36')][_0x6953('0x56')]({'where':{'id':_0x2549b7[_0x6953('0x4e')]['id']}})['then'](handleEntityNotFound(_0x1f2ea4,null))['then'](function(_0xe8b3b0){if(_0xe8b3b0){return _0xe8b3b0[_0x6953('0x12d')](_0x2549b7[_0x6953('0x57')][_0x6953('0x5b')],_[_0x6953('0x5c')](_0x2549b7[_0x6953('0x57')],[_0x6953('0x5b'),'id'])||{})[_0x6953('0xa1')](function(){for(var _0x3f8d42=0x0;_0x3f8d42<_0x2549b7[_0x6953('0x57')]['ids']['length'];_0x3f8d42+=0x1){socket[_0x6953('0xa4')]('user_has_fax_interactions:save',{'FaxInteractionId':Number(_0x2549b7[_0x6953('0x57')][_0x6953('0x5b')][_0x3f8d42]),'UserId':Number(_0x2549b7['params']['id'])});}return _0x2549b7[_0x6953('0x57')][_0x6953('0x5b')];});}})[_0x6953('0x27')](respondWithResult(_0x1f2ea4,null))['catch'](handleError(_0x1f2ea4,null));};exports[_0x6953('0x12e')]=function(_0x5b7337,_0x25d7fa){return db[_0x6953('0x36')][_0x6953('0x56')]({'where':{'id':_0x5b7337[_0x6953('0x4e')]['id']}})['then'](handleEntityNotFound(_0x25d7fa,null))['then'](function(_0x2d7ed6){if(_0x2d7ed6){return _0x2d7ed6['removeFaxInteractions'](_0x5b7337['query'][_0x6953('0x5b')])['then'](function(){if(_[_0x6953('0xb0')](_0x5b7337['query'][_0x6953('0x5b')])){for(var _0x5cc81f=0x0;_0x5cc81f<_0x5b7337[_0x6953('0x3d')][_0x6953('0x5b')]['length'];_0x5cc81f+=0x1){socket[_0x6953('0xa4')](_0x6953('0x12f'),{'FaxInteractionId':Number(_0x5b7337[_0x6953('0x3d')]['ids'][_0x5cc81f]),'UserId':Number(_0x5b7337['params']['id'])});}}else{socket['emit'](_0x6953('0x12f'),{'FaxInteractionId':Number(_0x5b7337[_0x6953('0x3d')][_0x6953('0x5b')]),'UserId':Number(_0x5b7337['params']['id'])});}});}})['then'](respondWithStatusCode(_0x25d7fa,null))[_0x6953('0x1e')](handleError(_0x25d7fa,null));};exports[_0x6953('0x130')]=function(_0x33baff,_0x4e4c2f){return db[_0x6953('0x36')][_0x6953('0x56')]({'where':{'id':_0x33baff[_0x6953('0x4e')]['id']}})[_0x6953('0x27')](handleEntityNotFound(_0x4e4c2f,null))[_0x6953('0x27')](function(_0x4486d0){if(_0x4486d0){return _0x4486d0[_0x6953('0x130')](_0x33baff['body']['ids'],_[_0x6953('0x5c')](_0x33baff[_0x6953('0x57')],['ids','id'])||{})[_0x6953('0xa1')](function(){for(var _0x322da8=0x0;_0x322da8<_0x33baff[_0x6953('0x57')]['ids']['length'];_0x322da8+=0x1){socket[_0x6953('0xa4')](_0x6953('0x131'),{'SmsInteractionId':Number(_0x33baff[_0x6953('0x57')][_0x6953('0x5b')][_0x322da8]),'UserId':Number(_0x33baff[_0x6953('0x4e')]['id'])});}return _0x33baff['body'][_0x6953('0x5b')];});}})[_0x6953('0x27')](respondWithResult(_0x4e4c2f,null))[_0x6953('0x1e')](handleError(_0x4e4c2f,null));};exports[_0x6953('0x132')]=function(_0xedd3f9,_0x45ddcf){return db[_0x6953('0x36')][_0x6953('0x56')]({'where':{'id':_0xedd3f9['params']['id']}})[_0x6953('0x27')](handleEntityNotFound(_0x45ddcf,null))['then'](function(_0x55d956){if(_0x55d956){return _0x55d956['removeSmsInteractions'](_0xedd3f9[_0x6953('0x3d')]['ids'])['then'](function(){if(_['isArray'](_0xedd3f9['query'][_0x6953('0x5b')])){for(var _0x1eb130=0x0;_0x1eb130<_0xedd3f9[_0x6953('0x3d')][_0x6953('0x5b')][_0x6953('0x45')];_0x1eb130+=0x1){socket[_0x6953('0xa4')](_0x6953('0x133'),{'SmsInteractionId':Number(_0xedd3f9['query'][_0x6953('0x5b')][_0x1eb130]),'UserId':Number(_0xedd3f9['params']['id'])});}}else{socket[_0x6953('0xa4')](_0x6953('0x133'),{'SmsInteractionId':Number(_0xedd3f9[_0x6953('0x3d')][_0x6953('0x5b')]),'UserId':Number(_0xedd3f9['params']['id'])});}});}})[_0x6953('0x27')](respondWithStatusCode(_0x45ddcf,null))[_0x6953('0x1e')](handleError(_0x45ddcf,null));};exports['addOpenchannelInteractions']=function(_0x48b1d6,_0xf1bc76){return db[_0x6953('0x36')][_0x6953('0x56')]({'where':{'id':_0x48b1d6[_0x6953('0x4e')]['id']}})[_0x6953('0x27')](handleEntityNotFound(_0xf1bc76,null))[_0x6953('0x27')](function(_0x77381d){if(_0x77381d){return _0x77381d[_0x6953('0x134')](_0x48b1d6[_0x6953('0x57')][_0x6953('0x5b')],_['omit'](_0x48b1d6[_0x6953('0x57')],[_0x6953('0x5b'),'id'])||{})[_0x6953('0xa1')](function(){for(var _0xb0d88=0x0;_0xb0d88<_0x48b1d6[_0x6953('0x57')][_0x6953('0x5b')][_0x6953('0x45')];_0xb0d88+=0x1){socket[_0x6953('0xa4')](_0x6953('0x135'),{'OpenchannelInteractionId':Number(_0x48b1d6[_0x6953('0x57')][_0x6953('0x5b')][_0xb0d88]),'UserId':Number(_0x48b1d6['params']['id'])});}return _0x48b1d6['body'][_0x6953('0x5b')];});}})[_0x6953('0x27')](respondWithResult(_0xf1bc76,null))[_0x6953('0x1e')](handleError(_0xf1bc76,null));};exports['removeOpenchannelInteractions']=function(_0x4e4a0c,_0x3c38ab){return db[_0x6953('0x36')][_0x6953('0x56')]({'where':{'id':_0x4e4a0c[_0x6953('0x4e')]['id']}})[_0x6953('0x27')](handleEntityNotFound(_0x3c38ab,null))[_0x6953('0x27')](function(_0x3e6baa){if(_0x3e6baa){return _0x3e6baa[_0x6953('0x136')](_0x4e4a0c[_0x6953('0x3d')][_0x6953('0x5b')])[_0x6953('0x27')](function(){if(_[_0x6953('0xb0')](_0x4e4a0c[_0x6953('0x3d')][_0x6953('0x5b')])){for(var _0x3af665=0x0;_0x3af665<_0x4e4a0c['query'][_0x6953('0x5b')][_0x6953('0x45')];_0x3af665+=0x1){socket[_0x6953('0xa4')]('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0x4e4a0c['query'][_0x6953('0x5b')][_0x3af665]),'UserId':Number(_0x4e4a0c[_0x6953('0x4e')]['id'])});}}else{socket[_0x6953('0xa4')](_0x6953('0x137'),{'OpenchannelInteractionId':Number(_0x4e4a0c[_0x6953('0x3d')]['ids']),'UserId':Number(_0x4e4a0c[_0x6953('0x4e')]['id'])});}});}})[_0x6953('0x27')](respondWithStatusCode(_0x3c38ab,null))['catch'](handleError(_0x3c38ab,null));};exports[_0x6953('0x138')]=function(_0x1cbedf,_0x2e35b9){return db[_0x6953('0x36')]['find']({'where':{'id':_0x1cbedf[_0x6953('0x4e')]['id']}})[_0x6953('0x27')](handleEntityNotFound(_0x2e35b9,null))[_0x6953('0x27')](function(_0x519fe2){if(_0x519fe2){return _0x519fe2[_0x6953('0x138')](_0x1cbedf['body']['ids'],_[_0x6953('0x5c')](_0x1cbedf[_0x6953('0x57')],[_0x6953('0x5b'),'id'])||{})['spread'](function(){for(var _0x4c5d43=0x0;_0x4c5d43<_0x1cbedf['body'][_0x6953('0x5b')]['length'];_0x4c5d43+=0x1){socket[_0x6953('0xa4')](_0x6953('0x139'),{'WhatsappInteractionId':Number(_0x1cbedf[_0x6953('0x57')][_0x6953('0x5b')][_0x4c5d43]),'UserId':Number(_0x1cbedf[_0x6953('0x4e')]['id'])});}return _0x1cbedf[_0x6953('0x57')][_0x6953('0x5b')];});}})[_0x6953('0x27')](respondWithResult(_0x2e35b9,null))[_0x6953('0x1e')](handleError(_0x2e35b9,null));};exports[_0x6953('0x13a')]=function(_0x20d535,_0x23d614){return db['User'][_0x6953('0x56')]({'where':{'id':_0x20d535[_0x6953('0x4e')]['id']}})[_0x6953('0x27')](handleEntityNotFound(_0x23d614,null))['then'](function(_0x1bc9d4){if(_0x1bc9d4){return _0x1bc9d4[_0x6953('0x13a')](_0x20d535[_0x6953('0x3d')][_0x6953('0x5b')]);}})['then'](respondWithStatusCode(_0x23d614,null))[_0x6953('0x1e')](handleError(_0x23d614,null));};exports[_0x6953('0x13b')]=function(_0x77d1c5,_0x1be09d){var _0x5a170e={};var _0x580ff6={};var _0x30a4da;var _0x397206;return db['User'][_0x6953('0x91')]({'where':{'id':_0x77d1c5[_0x6953('0x4e')]['id']}})['then'](handleEntityNotFound(_0x1be09d,null))['then'](function(_0x46ab50){if(_0x46ab50){_0x30a4da=_0x46ab50;_0x580ff6[_0x6953('0x4f')]=_[_0x6953('0x51')](db['VoicePrefix'][_0x6953('0x37')]);_0x580ff6['query']=_[_0x6953('0x51')](_0x77d1c5[_0x6953('0x3d')]);_0x580ff6['filters']=_[_0x6953('0x54')](_0x580ff6[_0x6953('0x4f')],_0x580ff6[_0x6953('0x3d')]);_0x5a170e[_0x6953('0x40')]=_[_0x6953('0x54')](_0x580ff6[_0x6953('0x4f')],qs[_0x6953('0x55')](_0x77d1c5[_0x6953('0x3d')][_0x6953('0x55')]));_0x5a170e['attributes']=_0x5a170e[_0x6953('0x40')]['length']?_0x5a170e[_0x6953('0x40')]:_0x580ff6[_0x6953('0x4f')];_0x5a170e[_0x6953('0xc7')]=qs[_0x6953('0xc8')](_0x77d1c5[_0x6953('0x3d')][_0x6953('0xc8')]);_0x5a170e[_0x6953('0x3c')]=qs[_0x6953('0xc9')](_[_0x6953('0xca')](_0x77d1c5[_0x6953('0x3d')],_0x580ff6['filters']));if(_0x77d1c5[_0x6953('0x3d')]['filter']){_0x5a170e[_0x6953('0x3c')]=_[_0x6953('0xcb')](_0x5a170e['where'],{'$or':_['map'](_0x5a170e[_0x6953('0x40')],function(_0x27c69b){var _0x60682c={};_0x60682c[_0x27c69b]={'$like':'%'+_0x77d1c5[_0x6953('0x3d')][_0x6953('0x2d')]+'%'};return _0x60682c;})});}_0x5a170e=_[_0x6953('0xcb')]({},_0x5a170e,_0x77d1c5[_0x6953('0xcc')]);return _0x30a4da[_0x6953('0x13b')](_0x5a170e);}})['then'](function(_0x378707){if(_0x378707){_0x397206=_0x378707[_0x6953('0x45')];if(!_0x77d1c5[_0x6953('0x3d')][_0x6953('0xd0')]('nolimit')){_0x5a170e[_0x6953('0xd2')]=qs['limit'](_0x77d1c5[_0x6953('0x3d')][_0x6953('0xd2')]);_0x5a170e[_0x6953('0x22')]=qs[_0x6953('0x22')](_0x77d1c5[_0x6953('0x3d')][_0x6953('0x22')]);}return _0x30a4da['getVoicePrefixes'](_0x5a170e);}})['then'](function(_0x37211a){if(_0x37211a){return _0x37211a?{'count':_0x397206,'rows':_0x37211a}:null;}})[_0x6953('0x27')](respondWithResult(_0x1be09d,null))[_0x6953('0x1e')](handleError(_0x1be09d,null));};exports[_0x6953('0x13c')]=function(_0xc262db,_0x484199){var _0x2c2e15={};var _0x46ebb3={};var _0x404964;var _0x3f3322;return db['User'][_0x6953('0x91')]({'where':{'id':_0xc262db[_0x6953('0x4e')]['id']}})[_0x6953('0x27')](handleEntityNotFound(_0x484199,null))[_0x6953('0x27')](function(_0x541057){if(_0x541057){_0x404964=_0x541057;_0x46ebb3[_0x6953('0x4f')]=_[_0x6953('0x51')](db[_0x6953('0x13d')][_0x6953('0x37')]);_0x46ebb3['query']=_[_0x6953('0x51')](_0xc262db['query']);_0x46ebb3['filters']=_['intersection'](_0x46ebb3['model'],_0x46ebb3[_0x6953('0x3d')]);_0x2c2e15[_0x6953('0x40')]=_['intersection'](_0x46ebb3[_0x6953('0x4f')],qs[_0x6953('0x55')](_0xc262db[_0x6953('0x3d')][_0x6953('0x55')]));_0x2c2e15[_0x6953('0x40')]=_0x2c2e15[_0x6953('0x40')][_0x6953('0x45')]?_0x2c2e15[_0x6953('0x40')]:_0x46ebb3['model'];_0x2c2e15[_0x6953('0xc7')]=qs[_0x6953('0xc8')](_0xc262db[_0x6953('0x3d')][_0x6953('0xc8')]);_0x2c2e15['where']=qs[_0x6953('0xc9')](_[_0x6953('0xca')](_0xc262db['query'],_0x46ebb3[_0x6953('0xc9')]));if(_0xc262db[_0x6953('0x3d')][_0x6953('0x2d')]){_0x2c2e15[_0x6953('0x3c')]=_[_0x6953('0xcb')](_0x2c2e15['where'],{'$or':_[_0x6953('0x38')](_0x2c2e15[_0x6953('0x40')],function(_0x2e6d2f){var _0x4a9502={};_0x4a9502[_0x2e6d2f]={'$like':'%'+_0xc262db['query']['filter']+'%'};return _0x4a9502;})});}_0x2c2e15=_[_0x6953('0xcb')]({},_0x2c2e15,_0xc262db['options']);return _0x404964[_0x6953('0x13c')](_0x2c2e15);}})['then'](function(_0x18eac3){if(_0x18eac3){_0x3f3322=_0x18eac3[_0x6953('0x45')];if(!_0xc262db[_0x6953('0x3d')]['hasOwnProperty'](_0x6953('0xd1'))){_0x2c2e15['limit']=qs[_0x6953('0xd2')](_0xc262db['query'][_0x6953('0xd2')]);_0x2c2e15[_0x6953('0x22')]=qs[_0x6953('0x22')](_0xc262db[_0x6953('0x3d')][_0x6953('0x22')]);}return _0x404964['getFaxAccounts'](_0x2c2e15);}})[_0x6953('0x27')](function(_0x3976bb){if(_0x3976bb){return _0x3976bb?{'count':_0x3f3322,'rows':_0x3976bb}:null;}})[_0x6953('0x27')](respondWithResult(_0x484199,null))[_0x6953('0x1e')](handleError(_0x484199,null));};exports[_0x6953('0x13e')]=function(_0x1b63e0,_0x47fac4){return db[_0x6953('0x36')][_0x6953('0x56')]({'where':{'id':_0x1b63e0[_0x6953('0x4e')]['id']}})['then'](handleEntityNotFound(_0x47fac4,null))[_0x6953('0x27')](function(_0x3f94ef){if(_0x3f94ef){return _0x3f94ef['addFaxAccounts'](_0x1b63e0[_0x6953('0x57')][_0x6953('0x5b')],_[_0x6953('0x5c')](_0x1b63e0['body'],[_0x6953('0x5b'),'id'])||{});}})[_0x6953('0x27')](respondWithResult(_0x47fac4,null))[_0x6953('0x1e')](handleError(_0x47fac4,null));};exports[_0x6953('0x13f')]=function(_0x3f6dac,_0x5d9b59){return db['User'][_0x6953('0x56')]({'where':{'id':_0x3f6dac[_0x6953('0x4e')]['id']}})[_0x6953('0x27')](handleEntityNotFound(_0x5d9b59,null))[_0x6953('0x27')](function(_0x577f3f){if(_0x577f3f){return _0x577f3f[_0x6953('0x13f')](_0x3f6dac[_0x6953('0x3d')][_0x6953('0x5b')]);}})[_0x6953('0x27')](respondWithStatusCode(_0x5d9b59,null))[_0x6953('0x1e')](handleError(_0x5d9b59,null));};exports[_0x6953('0x140')]=function(_0x4b8108,_0x38f18e){var _0x46fb8d={};var _0x5a4720={};var _0x394386;var _0x20cfc6;return db[_0x6953('0x36')][_0x6953('0x91')]({'where':{'id':_0x4b8108[_0x6953('0x4e')]['id']}})['then'](handleEntityNotFound(_0x38f18e,null))[_0x6953('0x27')](function(_0x65016a){if(_0x65016a){_0x394386=_0x65016a;_0x5a4720[_0x6953('0x4f')]=_[_0x6953('0x51')](db['MailAccount'][_0x6953('0x37')]);_0x5a4720[_0x6953('0x3d')]=_['keys'](_0x4b8108[_0x6953('0x3d')]);_0x5a4720[_0x6953('0xc9')]=_['intersection'](_0x5a4720['model'],_0x5a4720[_0x6953('0x3d')]);_0x46fb8d[_0x6953('0x40')]=_[_0x6953('0x54')](_0x5a4720[_0x6953('0x4f')],qs[_0x6953('0x55')](_0x4b8108[_0x6953('0x3d')][_0x6953('0x55')]));_0x46fb8d[_0x6953('0x40')]=_0x46fb8d[_0x6953('0x40')][_0x6953('0x45')]?_0x46fb8d[_0x6953('0x40')]:_0x5a4720['model'];_0x46fb8d[_0x6953('0xc7')]=qs[_0x6953('0xc8')](_0x4b8108[_0x6953('0x3d')][_0x6953('0xc8')]);_0x46fb8d[_0x6953('0x3c')]=qs[_0x6953('0xc9')](_['pick'](_0x4b8108[_0x6953('0x3d')],_0x5a4720[_0x6953('0xc9')]));if(_0x4b8108[_0x6953('0x3d')][_0x6953('0x2d')]){_0x46fb8d[_0x6953('0x3c')]=_[_0x6953('0xcb')](_0x46fb8d[_0x6953('0x3c')],{'$or':_[_0x6953('0x38')](_0x46fb8d[_0x6953('0x40')],function(_0x2163fc){var _0x1ab8d0={};_0x1ab8d0[_0x2163fc]={'$like':'%'+_0x4b8108[_0x6953('0x3d')][_0x6953('0x2d')]+'%'};return _0x1ab8d0;})});}_0x46fb8d=_[_0x6953('0xcb')]({},_0x46fb8d,_0x4b8108[_0x6953('0xcc')]);return _0x394386[_0x6953('0x140')](_0x46fb8d);}})[_0x6953('0x27')](function(_0x52f03c){if(_0x52f03c){_0x20cfc6=_0x52f03c[_0x6953('0x45')];if(!_0x4b8108[_0x6953('0x3d')][_0x6953('0xd0')](_0x6953('0xd1'))){_0x46fb8d['limit']=qs[_0x6953('0xd2')](_0x4b8108['query'][_0x6953('0xd2')]);_0x46fb8d[_0x6953('0x22')]=qs[_0x6953('0x22')](_0x4b8108['query'][_0x6953('0x22')]);}return _0x394386[_0x6953('0x140')](_0x46fb8d);}})['then'](function(_0x5be41b){if(_0x5be41b){return _0x5be41b?{'count':_0x20cfc6,'rows':_0x5be41b}:null;}})[_0x6953('0x27')](respondWithResult(_0x38f18e,null))['catch'](handleError(_0x38f18e,null));};exports['addMailAccounts']=function(_0x4faf6a,_0x3b65ff){return db[_0x6953('0x36')][_0x6953('0x56')]({'where':{'id':_0x4faf6a['params']['id']}})[_0x6953('0x27')](handleEntityNotFound(_0x3b65ff,null))[_0x6953('0x27')](function(_0x34a973){if(_0x34a973){return _0x34a973[_0x6953('0x141')](_0x4faf6a['body'][_0x6953('0x5b')],_[_0x6953('0x5c')](_0x4faf6a['body'],[_0x6953('0x5b'),'id'])||{});}})['then'](respondWithResult(_0x3b65ff,null))[_0x6953('0x1e')](handleError(_0x3b65ff,null));};exports[_0x6953('0x142')]=function(_0x2505e9,_0x3fd57e){return db['User'][_0x6953('0x56')]({'where':{'id':_0x2505e9[_0x6953('0x4e')]['id']}})['then'](handleEntityNotFound(_0x3fd57e,null))['then'](function(_0x218645){if(_0x218645){return _0x218645[_0x6953('0x142')](_0x2505e9[_0x6953('0x3d')][_0x6953('0x5b')]);}})['then'](respondWithStatusCode(_0x3fd57e,null))[_0x6953('0x1e')](handleError(_0x3fd57e,null));};exports[_0x6953('0x143')]=function(_0x2602df,_0x94de8e){var _0x20c2e8={};var _0x353278={};var _0x1328ed;var _0x329107;return db['User'][_0x6953('0x91')]({'where':{'id':_0x2602df[_0x6953('0x4e')]['id']}})[_0x6953('0x27')](handleEntityNotFound(_0x94de8e,null))['then'](function(_0x1704f4){if(_0x1704f4){_0x1328ed=_0x1704f4;_0x353278[_0x6953('0x4f')]=_[_0x6953('0x51')](db['OpenchannelAccount'][_0x6953('0x37')]);_0x353278[_0x6953('0x3d')]=_[_0x6953('0x51')](_0x2602df[_0x6953('0x3d')]);_0x353278[_0x6953('0xc9')]=_['intersection'](_0x353278['model'],_0x353278[_0x6953('0x3d')]);_0x20c2e8['attributes']=_[_0x6953('0x54')](_0x353278[_0x6953('0x4f')],qs[_0x6953('0x55')](_0x2602df[_0x6953('0x3d')]['fields']));_0x20c2e8[_0x6953('0x40')]=_0x20c2e8[_0x6953('0x40')][_0x6953('0x45')]?_0x20c2e8[_0x6953('0x40')]:_0x353278[_0x6953('0x4f')];_0x20c2e8[_0x6953('0xc7')]=qs[_0x6953('0xc8')](_0x2602df['query'][_0x6953('0xc8')]);_0x20c2e8[_0x6953('0x3c')]=qs[_0x6953('0xc9')](_[_0x6953('0xca')](_0x2602df[_0x6953('0x3d')],_0x353278[_0x6953('0xc9')]));if(_0x2602df[_0x6953('0x3d')][_0x6953('0x2d')]){_0x20c2e8['where']=_[_0x6953('0xcb')](_0x20c2e8[_0x6953('0x3c')],{'$or':_[_0x6953('0x38')](_0x20c2e8['attributes'],function(_0x1321c5){var _0x43bcc3={};_0x43bcc3[_0x1321c5]={'$like':'%'+_0x2602df[_0x6953('0x3d')][_0x6953('0x2d')]+'%'};return _0x43bcc3;})});}_0x20c2e8=_[_0x6953('0xcb')]({},_0x20c2e8,_0x2602df[_0x6953('0xcc')]);return _0x1328ed['getOpenchannelAccounts'](_0x20c2e8);}})['then'](function(_0x557879){if(_0x557879){_0x329107=_0x557879[_0x6953('0x45')];if(!_0x2602df[_0x6953('0x3d')][_0x6953('0xd0')](_0x6953('0xd1'))){_0x20c2e8['limit']=qs[_0x6953('0xd2')](_0x2602df[_0x6953('0x3d')][_0x6953('0xd2')]);_0x20c2e8['offset']=qs[_0x6953('0x22')](_0x2602df['query'][_0x6953('0x22')]);}return _0x1328ed[_0x6953('0x143')](_0x20c2e8);}})[_0x6953('0x27')](function(_0x298af5){if(_0x298af5){return _0x298af5?{'count':_0x329107,'rows':_0x298af5}:null;}})[_0x6953('0x27')](respondWithResult(_0x94de8e,null))[_0x6953('0x1e')](handleError(_0x94de8e,null));};exports[_0x6953('0x144')]=function(_0x259384,_0x178265){return db[_0x6953('0x36')]['find']({'where':{'id':_0x259384[_0x6953('0x4e')]['id']}})['then'](handleEntityNotFound(_0x178265,null))[_0x6953('0x27')](function(_0x30a3d2){if(_0x30a3d2){return _0x30a3d2[_0x6953('0x144')](_0x259384[_0x6953('0x57')]['ids'],_[_0x6953('0x5c')](_0x259384[_0x6953('0x57')],[_0x6953('0x5b'),'id'])||{});}})[_0x6953('0x27')](respondWithResult(_0x178265,null))['catch'](handleError(_0x178265,null));};exports[_0x6953('0x145')]=function(_0xc6a577,_0x347959){return db[_0x6953('0x36')][_0x6953('0x56')]({'where':{'id':_0xc6a577[_0x6953('0x4e')]['id']}})['then'](handleEntityNotFound(_0x347959,null))[_0x6953('0x27')](function(_0x52aeca){if(_0x52aeca){return _0x52aeca[_0x6953('0x145')](_0xc6a577[_0x6953('0x3d')][_0x6953('0x5b')]);}})[_0x6953('0x27')](respondWithStatusCode(_0x347959,null))['catch'](handleError(_0x347959,null));};exports['getSmsAccounts']=function(_0x2beff3,_0x1bfc25){var _0x500c37={};var _0x13d717={};var _0x133e24;var _0x2153b;return db[_0x6953('0x36')]['findOne']({'where':{'id':_0x2beff3['params']['id']}})[_0x6953('0x27')](handleEntityNotFound(_0x1bfc25,null))['then'](function(_0x77a553){if(_0x77a553){_0x133e24=_0x77a553;_0x13d717[_0x6953('0x4f')]=_[_0x6953('0x51')](db['SmsAccount'][_0x6953('0x37')]);_0x13d717[_0x6953('0x3d')]=_[_0x6953('0x51')](_0x2beff3[_0x6953('0x3d')]);_0x13d717[_0x6953('0xc9')]=_[_0x6953('0x54')](_0x13d717[_0x6953('0x4f')],_0x13d717[_0x6953('0x3d')]);_0x500c37['attributes']=_[_0x6953('0x54')](_0x13d717['model'],qs[_0x6953('0x55')](_0x2beff3[_0x6953('0x3d')]['fields']));_0x500c37[_0x6953('0x40')]=_0x500c37[_0x6953('0x40')][_0x6953('0x45')]?_0x500c37[_0x6953('0x40')]:_0x13d717['model'];_0x500c37[_0x6953('0xc7')]=qs[_0x6953('0xc8')](_0x2beff3['query'][_0x6953('0xc8')]);_0x500c37[_0x6953('0x3c')]=qs[_0x6953('0xc9')](_[_0x6953('0xca')](_0x2beff3[_0x6953('0x3d')],_0x13d717[_0x6953('0xc9')]));if(_0x2beff3['query']['filter']){_0x500c37[_0x6953('0x3c')]=_[_0x6953('0xcb')](_0x500c37['where'],{'$or':_[_0x6953('0x38')](_0x500c37[_0x6953('0x40')],function(_0x1b400e){var _0x1d9d81={};_0x1d9d81[_0x1b400e]={'$like':'%'+_0x2beff3[_0x6953('0x3d')][_0x6953('0x2d')]+'%'};return _0x1d9d81;})});}_0x500c37=_[_0x6953('0xcb')]({},_0x500c37,_0x2beff3[_0x6953('0xcc')]);return _0x133e24['getSmsAccounts'](_0x500c37);}})[_0x6953('0x27')](function(_0x5e5852){if(_0x5e5852){_0x2153b=_0x5e5852[_0x6953('0x45')];if(!_0x2beff3[_0x6953('0x3d')][_0x6953('0xd0')]('nolimit')){_0x500c37[_0x6953('0xd2')]=qs['limit'](_0x2beff3[_0x6953('0x3d')]['limit']);_0x500c37['offset']=qs[_0x6953('0x22')](_0x2beff3['query']['offset']);}return _0x133e24[_0x6953('0x146')](_0x500c37);}})[_0x6953('0x27')](function(_0x5d3e2b){if(_0x5d3e2b){return _0x5d3e2b?{'count':_0x2153b,'rows':_0x5d3e2b}:null;}})[_0x6953('0x27')](respondWithResult(_0x1bfc25,null))[_0x6953('0x1e')](handleError(_0x1bfc25,null));};exports['addSmsAccounts']=function(_0x1e2ea8,_0x597449){return db[_0x6953('0x36')][_0x6953('0x56')]({'where':{'id':_0x1e2ea8['params']['id']}})['then'](handleEntityNotFound(_0x597449,null))['then'](function(_0x13617f){if(_0x13617f){return _0x13617f[_0x6953('0x147')](_0x1e2ea8[_0x6953('0x57')]['ids'],_['omit'](_0x1e2ea8[_0x6953('0x57')],[_0x6953('0x5b'),'id'])||{});}})['then'](respondWithResult(_0x597449,null))['catch'](handleError(_0x597449,null));};exports[_0x6953('0x148')]=function(_0x530d5f,_0x360733){return db[_0x6953('0x36')][_0x6953('0x56')]({'where':{'id':_0x530d5f[_0x6953('0x4e')]['id']}})[_0x6953('0x27')](handleEntityNotFound(_0x360733,null))['then'](function(_0x494694){if(_0x494694){return _0x494694[_0x6953('0x148')](_0x530d5f[_0x6953('0x3d')][_0x6953('0x5b')]);}})['then'](respondWithStatusCode(_0x360733,null))[_0x6953('0x1e')](handleError(_0x360733,null));};exports[_0x6953('0x149')]=function(_0x4fc7c3,_0x4c9522){var _0x14f9e9={};var _0x562008={};var _0x1b4909;var _0x228360;return db[_0x6953('0x36')]['findOne']({'where':{'id':_0x4fc7c3[_0x6953('0x4e')]['id']}})[_0x6953('0x27')](handleEntityNotFound(_0x4c9522,null))[_0x6953('0x27')](function(_0x19825f){if(_0x19825f){_0x1b4909=_0x19825f;_0x562008['model']=_[_0x6953('0x51')](db['ChatWebsite']['rawAttributes']);_0x562008[_0x6953('0x3d')]=_[_0x6953('0x51')](_0x4fc7c3[_0x6953('0x3d')]);_0x562008[_0x6953('0xc9')]=_[_0x6953('0x54')](_0x562008[_0x6953('0x4f')],_0x562008[_0x6953('0x3d')]);_0x14f9e9[_0x6953('0x40')]=_[_0x6953('0x54')](_0x562008['model'],qs[_0x6953('0x55')](_0x4fc7c3[_0x6953('0x3d')]['fields']));_0x14f9e9[_0x6953('0x40')]=_0x14f9e9[_0x6953('0x40')]['length']?_0x14f9e9[_0x6953('0x40')]:_0x562008[_0x6953('0x4f')];_0x14f9e9[_0x6953('0xc7')]=qs[_0x6953('0xc8')](_0x4fc7c3[_0x6953('0x3d')]['sort']);_0x14f9e9[_0x6953('0x3c')]=qs[_0x6953('0xc9')](_[_0x6953('0xca')](_0x4fc7c3['query'],_0x562008[_0x6953('0xc9')]));if(_0x4fc7c3['query']['filter']){_0x14f9e9[_0x6953('0x3c')]=_[_0x6953('0xcb')](_0x14f9e9[_0x6953('0x3c')],{'$or':_[_0x6953('0x38')](_0x14f9e9[_0x6953('0x40')],function(_0x82054c){var _0x482596={};_0x482596[_0x82054c]={'$like':'%'+_0x4fc7c3[_0x6953('0x3d')]['filter']+'%'};return _0x482596;})});}_0x14f9e9=_[_0x6953('0xcb')]({},_0x14f9e9,_0x4fc7c3['options']);return _0x1b4909[_0x6953('0x149')](_0x14f9e9);}})[_0x6953('0x27')](function(_0x45e58c){if(_0x45e58c){_0x228360=_0x45e58c['length'];if(!_0x4fc7c3[_0x6953('0x3d')][_0x6953('0xd0')]('nolimit')){_0x14f9e9['limit']=qs[_0x6953('0xd2')](_0x4fc7c3['query']['limit']);_0x14f9e9[_0x6953('0x22')]=qs[_0x6953('0x22')](_0x4fc7c3[_0x6953('0x3d')][_0x6953('0x22')]);}return _0x1b4909[_0x6953('0x149')](_0x14f9e9);}})['then'](function(_0x4d204d){if(_0x4d204d){return _0x4d204d?{'count':_0x228360,'rows':_0x4d204d}:null;}})[_0x6953('0x27')](respondWithResult(_0x4c9522,null))[_0x6953('0x1e')](handleError(_0x4c9522,null));};exports[_0x6953('0x14a')]=function(_0x40fa27,_0x27cb62){return db[_0x6953('0x36')][_0x6953('0x56')]({'where':{'id':_0x40fa27[_0x6953('0x4e')]['id']}})[_0x6953('0x27')](handleEntityNotFound(_0x27cb62,null))[_0x6953('0x27')](function(_0x3ba5a6){if(_0x3ba5a6){return _0x3ba5a6[_0x6953('0x14a')](_0x40fa27['body']['ids'],_[_0x6953('0x5c')](_0x40fa27[_0x6953('0x57')],[_0x6953('0x5b'),'id'])||{});}})['then'](respondWithResult(_0x27cb62,null))[_0x6953('0x1e')](handleError(_0x27cb62,null));};exports['removeChatWebsites']=function(_0x51bb91,_0x57ae8f){return db[_0x6953('0x36')][_0x6953('0x56')]({'where':{'id':_0x51bb91[_0x6953('0x4e')]['id']}})[_0x6953('0x27')](handleEntityNotFound(_0x57ae8f,null))[_0x6953('0x27')](function(_0x21d2de){if(_0x21d2de){return _0x21d2de[_0x6953('0x14b')](_0x51bb91[_0x6953('0x3d')][_0x6953('0x5b')]);}})[_0x6953('0x27')](respondWithStatusCode(_0x57ae8f,null))['catch'](handleError(_0x57ae8f,null));};exports[_0x6953('0x14c')]=function(_0x277af3,_0x369bbc){var _0x348869={};var _0xdf6102={};var _0x294c7d;var _0x18bddc;return db['User'][_0x6953('0x91')]({'where':{'id':_0x277af3[_0x6953('0x4e')]['id']}})[_0x6953('0x27')](handleEntityNotFound(_0x369bbc,null))[_0x6953('0x27')](function(_0x281f60){if(_0x281f60){_0x294c7d=_0x281f60;_0xdf6102['model']=_[_0x6953('0x51')](db[_0x6953('0x14d')][_0x6953('0x37')]);_0xdf6102[_0x6953('0x3d')]=_[_0x6953('0x51')](_0x277af3[_0x6953('0x3d')]);_0xdf6102[_0x6953('0xc9')]=_['intersection'](_0xdf6102[_0x6953('0x4f')],_0xdf6102[_0x6953('0x3d')]);_0x348869[_0x6953('0x40')]=_[_0x6953('0x54')](_0xdf6102[_0x6953('0x4f')],qs[_0x6953('0x55')](_0x277af3[_0x6953('0x3d')][_0x6953('0x55')]));_0x348869['attributes']=_0x348869[_0x6953('0x40')][_0x6953('0x45')]?_0x348869[_0x6953('0x40')]:_0xdf6102[_0x6953('0x4f')];_0x348869[_0x6953('0xc7')]=qs['sort'](_0x277af3['query'][_0x6953('0xc8')]);_0x348869[_0x6953('0x3c')]=qs[_0x6953('0xc9')](_['pick'](_0x277af3[_0x6953('0x3d')],_0xdf6102[_0x6953('0xc9')]));if(_0x277af3['query'][_0x6953('0x2d')]){_0x348869[_0x6953('0x3c')]=_[_0x6953('0xcb')](_0x348869[_0x6953('0x3c')],{'$or':_[_0x6953('0x38')](_0x348869[_0x6953('0x40')],function(_0x98b4e3){var _0x51861b={};_0x51861b[_0x98b4e3]={'$like':'%'+_0x277af3[_0x6953('0x3d')][_0x6953('0x2d')]+'%'};return _0x51861b;})});}_0x348869=_['merge']({},_0x348869,_0x277af3[_0x6953('0xcc')]);return _0x294c7d['getWhatsappAccounts'](_0x348869);}})['then'](function(_0x102094){if(_0x102094){_0x18bddc=_0x102094[_0x6953('0x45')];if(!_0x277af3[_0x6953('0x3d')][_0x6953('0xd0')](_0x6953('0xd1'))){_0x348869[_0x6953('0xd2')]=qs[_0x6953('0xd2')](_0x277af3[_0x6953('0x3d')][_0x6953('0xd2')]);_0x348869['offset']=qs['offset'](_0x277af3[_0x6953('0x3d')]['offset']);}return _0x294c7d[_0x6953('0x14c')](_0x348869);}})[_0x6953('0x27')](function(_0x8728f9){if(_0x8728f9){return _0x8728f9?{'count':_0x18bddc,'rows':_0x8728f9}:null;}})['then'](respondWithResult(_0x369bbc,null))[_0x6953('0x1e')](handleError(_0x369bbc,null));};exports['addWhatsappAccounts']=function(_0x5ca61b,_0x1e9af9){return db[_0x6953('0x36')]['find']({'where':{'id':_0x5ca61b[_0x6953('0x4e')]['id']}})[_0x6953('0x27')](handleEntityNotFound(_0x1e9af9,null))[_0x6953('0x27')](function(_0x2e9494){if(_0x2e9494){return _0x2e9494[_0x6953('0x14e')](_0x5ca61b[_0x6953('0x57')][_0x6953('0x5b')],_['omit'](_0x5ca61b['body'],[_0x6953('0x5b'),'id'])||{});}})['then'](respondWithResult(_0x1e9af9,null))['catch'](handleError(_0x1e9af9,null));};exports[_0x6953('0x14f')]=function(_0x11afc3,_0x3f048c){return db[_0x6953('0x36')][_0x6953('0x56')]({'where':{'id':_0x11afc3[_0x6953('0x4e')]['id']}})['then'](handleEntityNotFound(_0x3f048c,null))[_0x6953('0x27')](function(_0x2a7605){if(_0x2a7605){return _0x2a7605[_0x6953('0x14f')](_0x11afc3[_0x6953('0x3d')][_0x6953('0x5b')]);}})[_0x6953('0x27')](respondWithStatusCode(_0x3f048c,null))['catch'](handleError(_0x3f048c,null));};exports[_0x6953('0x150')]=function(_0xebc648,_0x1f5e24){var _0x59350c={};var _0xee5bc6={};var _0x2fc05b;var _0x349161;return db['User'][_0x6953('0x91')]({'where':{'id':_0xebc648[_0x6953('0x4e')]['id']}})[_0x6953('0x27')](handleEntityNotFound(_0x1f5e24,null))[_0x6953('0x27')](function(_0x35cc08){if(_0x35cc08){_0x2fc05b=_0x35cc08;_0xee5bc6[_0x6953('0x4f')]=_[_0x6953('0x51')](db[_0x6953('0x151')][_0x6953('0x37')]);_0xee5bc6[_0x6953('0x3d')]=_[_0x6953('0x51')](_0xebc648[_0x6953('0x3d')]);_0xee5bc6['filters']=_[_0x6953('0x54')](_0xee5bc6[_0x6953('0x4f')],_0xee5bc6[_0x6953('0x3d')]);_0x59350c[_0x6953('0x40')]=_['intersection'](_0xee5bc6['model'],qs[_0x6953('0x55')](_0xebc648[_0x6953('0x3d')][_0x6953('0x55')]));_0x59350c[_0x6953('0x40')]=_0x59350c['attributes'][_0x6953('0x45')]?_0x59350c[_0x6953('0x40')]:_0xee5bc6[_0x6953('0x4f')];_0x59350c[_0x6953('0xc7')]=qs['sort'](_0xebc648['query'][_0x6953('0xc8')]);_0x59350c['where']=qs[_0x6953('0xc9')](_[_0x6953('0xca')](_0xebc648[_0x6953('0x3d')],_0xee5bc6[_0x6953('0xc9')]));if(_0xebc648[_0x6953('0x3d')][_0x6953('0x2d')]){_0x59350c[_0x6953('0x3c')]=_[_0x6953('0xcb')](_0x59350c['where'],{'$or':_[_0x6953('0x38')](_0x59350c['attributes'],function(_0x4d445d){var _0x20889e={};_0x20889e[_0x4d445d]={'$like':'%'+_0xebc648[_0x6953('0x3d')][_0x6953('0x2d')]+'%'};return _0x20889e;})});}_0x59350c=_[_0x6953('0xcb')]({},_0x59350c,_0xebc648[_0x6953('0xcc')]);return _0x2fc05b[_0x6953('0x150')](_0x59350c);}})['then'](function(_0x125045){if(_0x125045){_0x349161=_0x125045[_0x6953('0x45')];if(!_0xebc648['query'][_0x6953('0xd0')](_0x6953('0xd1'))){_0x59350c[_0x6953('0xd2')]=qs[_0x6953('0xd2')](_0xebc648[_0x6953('0x3d')][_0x6953('0xd2')]);_0x59350c[_0x6953('0x22')]=qs[_0x6953('0x22')](_0xebc648[_0x6953('0x3d')][_0x6953('0x22')]);}return _0x2fc05b[_0x6953('0x150')](_0x59350c);}})[_0x6953('0x27')](function(_0x391724){if(_0x391724){return _0x391724?{'count':_0x349161,'rows':_0x391724}:null;}})['then'](respondWithResult(_0x1f5e24,null))[_0x6953('0x1e')](handleError(_0x1f5e24,null));};exports[_0x6953('0x152')]=function(_0x462ed7,_0x233ee4){return db['User'][_0x6953('0x56')]({'where':{'id':_0x462ed7['params']['id']}})[_0x6953('0x27')](handleEntityNotFound(_0x233ee4,null))[_0x6953('0x27')](function(_0x5a68f5){if(_0x5a68f5){return _0x5a68f5['addSquareProjects'](_0x462ed7[_0x6953('0x57')][_0x6953('0x5b')],_[_0x6953('0x5c')](_0x462ed7[_0x6953('0x57')],[_0x6953('0x5b'),'id'])||{});}})[_0x6953('0x27')](respondWithResult(_0x233ee4,null))[_0x6953('0x1e')](handleError(_0x233ee4,null));};exports[_0x6953('0x153')]=function(_0x4628cd,_0x4ad2c7){return db[_0x6953('0x36')][_0x6953('0x56')]({'where':{'id':_0x4628cd['params']['id']}})['then'](handleEntityNotFound(_0x4ad2c7,null))[_0x6953('0x27')](function(_0x4e8358){if(_0x4e8358){return _0x4e8358[_0x6953('0x153')](_0x4628cd['query']['ids']);}})[_0x6953('0x27')](respondWithStatusCode(_0x4ad2c7,null))[_0x6953('0x1e')](handleError(_0x4ad2c7,null));};exports[_0x6953('0x154')]=function(_0x1d7ca5,_0x148023){var _0x1964b4={},_0x5d0212={},_0x3c639a={'count':0x0,'rows':[]};var _0x7b08c2=db[_0x6953('0x155')][_0x6953('0x37')];_0x5d0212['model']=_[_0x6953('0x51')](_0x7b08c2);_0x5d0212['query']=_[_0x6953('0x51')](_0x1d7ca5[_0x6953('0x3d')]);_0x5d0212[_0x6953('0xc9')]=_[_0x6953('0x54')](_0x5d0212[_0x6953('0x4f')],_0x5d0212[_0x6953('0x3d')]);_0x5d0212[_0x6953('0xc9')]=_['concat'](_0x5d0212[_0x6953('0xc9')],[_0x6953('0x156'),'$or',_0x6953('0x157'),'$gte',_0x6953('0x158'),'$lte',_0x6953('0x159'),_0x6953('0x15a'),_0x6953('0x15b'),_0x6953('0x15c'),_0x6953('0x15d'),_0x6953('0x15e'),_0x6953('0x15f'),_0x6953('0x160'),'$notLike',_0x6953('0x161'),_0x6953('0x162'),'$like',_0x6953('0x163'),'$contains',_0x6953('0x164'),_0x6953('0x165')]);_0x1964b4[_0x6953('0x40')]=_[_0x6953('0x54')](_0x5d0212['model'],qs[_0x6953('0x55')](_0x1d7ca5[_0x6953('0x3d')]['fields']));_0x1964b4[_0x6953('0x40')]=_0x1964b4[_0x6953('0x40')][_0x6953('0x45')]?_0x1964b4[_0x6953('0x40')]:_0x5d0212[_0x6953('0x4f')];if(!_0x1d7ca5['query'][_0x6953('0xd0')]('nolimit')){_0x1964b4[_0x6953('0xd2')]=qs[_0x6953('0xd2')](_0x1d7ca5[_0x6953('0x3d')]['limit']);_0x1964b4[_0x6953('0x22')]=qs[_0x6953('0x22')](_0x1d7ca5[_0x6953('0x3d')][_0x6953('0x22')]);}_0x1964b4[_0x6953('0xc7')]=qs[_0x6953('0xc8')](_0x1d7ca5['query'][_0x6953('0xc8')]);_0x1964b4['where']=qs[_0x6953('0xc9')](_[_0x6953('0xca')](_0x1d7ca5['query'],_0x5d0212[_0x6953('0xc9')]));if(_0x1d7ca5[_0x6953('0x3d')][_0x6953('0x2d')]){_0x1964b4[_0x6953('0x3c')]=_[_0x6953('0xcb')](_0x1964b4[_0x6953('0x3c')],{'$or':_[_0x6953('0x38')](_0x1964b4[_0x6953('0x40')],function(_0x21a075){var _0x422e8a={};_0x422e8a[_0x21a075]={'$like':'%'+_0x1d7ca5[_0x6953('0x3d')][_0x6953('0x2d')]+'%'};return _0x422e8a;})});}_0x1964b4[_0x6953('0x3c')]={'$and':[_0x1964b4['where'],{'$or':[{'UserId':_0x1d7ca5['params']['id']},{'OwnerId':_0x1d7ca5[_0x6953('0x4e')]['id']}]}]};_0x1964b4=_[_0x6953('0xcb')]({},_0x1964b4,_0x1d7ca5['options']);var _0x3cff5e={'where':_0x1964b4[_0x6953('0x3c')]};return db[_0x6953('0x155')][_0x6953('0x24')](_0x3cff5e)[_0x6953('0x27')](function(_0x4084fe){_0x3c639a['count']=_0x4084fe;if(_0x1d7ca5['query'][_0x6953('0x3e')]){_0x1964b4[_0x6953('0x3f')]=[{'attributes':['id',_0x6953('0x166'),'lastName',_0x6953('0xe8')],'model':db[_0x6953('0x167')],'as':'Contact'},{'attributes':['id',_0x6953('0x33'),_0x6953('0x168')],'model':db[_0x6953('0xa7')],'as':_0x6953('0xd5')}];}return db[_0x6953('0x155')]['findAll'](_0x1964b4);})['then'](function(_0x30c2b3){_0x3c639a[_0x6953('0x42')]=_0x30c2b3;return _0x3c639a;})[_0x6953('0x27')](respondWithFilteredResult(_0x148023,_0x1964b4))[_0x6953('0x1e')](handleError(_0x148023,null));};exports[_0x6953('0x169')]=function(_0x3a99ba,_0x7e5819){if(!_[_0x6953('0x62')](_0x3a99ba[_0x6953('0x2a')]['id'])&&(_0x3a99ba['user'][_0x6953('0x58')]==_0x6953('0x28')||_0x3a99ba['user'][_0x6953('0x58')]==_0x6953('0x2a'))){return db[_0x6953('0x36')][_0x6953('0x91')]({'where':{'id':_0x3a99ba['params']['id']},'raw':!![]})[_0x6953('0x27')](function(_0x1d47c2){return authService['retrieveApiKey'](_0x1d47c2);})[_0x6953('0x27')](function(_0x5141e5){if(_0x5141e5){return _0x7e5819[_0x6953('0x1f')](0xc8)[_0x6953('0x21')]({'api_key':_0x5141e5[_0x6953('0x16a')]});}else{return _0x7e5819[_0x6953('0x1f')](0xcc)['json']({'message':_0x6953('0x16b')});}})[_0x6953('0x1e')](handleError(_0x7e5819,0x193));}else{return _0x7e5819[_0x6953('0x1f')](0x191)[_0x6953('0x21')]({'message':_0x6953('0x16c')});}};exports[_0x6953('0x16d')]=function(_0x3c79d6,_0x3b8842){if(!_['isNil'](_0x3c79d6[_0x6953('0x2a')]['id'])&&(_0x3c79d6[_0x6953('0x2a')][_0x6953('0x58')]==_0x6953('0x28')||_0x3c79d6['user'][_0x6953('0x58')]==_0x6953('0x2a'))){return db[_0x6953('0x36')][_0x6953('0x56')]({'where':{'id':_0x3c79d6['params']['id']}})[_0x6953('0x27')](function(_0x148eb9){return authService[_0x6953('0x16e')](_0x148eb9);})[_0x6953('0x27')](function(_0x1ff452){return db['User'][_0x6953('0x26')]({'apiKeyIat':_0x1ff452['iat'],'apiKeyNonce':_0x1ff452[_0x6953('0x16f')]},{'where':{'id':_0x3c79d6['params']['id']}})[_0x6953('0x27')](function(){return _0x3b8842[_0x6953('0x1f')](0xc8)[_0x6953('0x21')]({'api_key':_0x1ff452['token']});});})[_0x6953('0x1e')](handleError(_0x3b8842,0x193));}else{return _0x3b8842[_0x6953('0x1f')](0x191)[_0x6953('0x21')]({'message':_0x6953('0x16c')});}};exports[_0x6953('0x170')]=function(_0xbb22f5,_0x23dfe1){if(!_['isNil'](_0xbb22f5['user']['id'])&&(_0xbb22f5[_0x6953('0x2a')][_0x6953('0x58')]==_0x6953('0x28')||_0xbb22f5[_0x6953('0x2a')][_0x6953('0x58')]==_0x6953('0x2a'))){return db[_0x6953('0x36')]['find']({'where':{'id':_0xbb22f5[_0x6953('0x4e')]['id']}})[_0x6953('0x27')](handleEntityNotFound(_0x23dfe1,null))[_0x6953('0x27')](function(_0x2bc493){if(_0x2bc493&&_0x2bc493[_0x6953('0x171')]&&_0x2bc493[_0x6953('0x172')])return _0x2bc493;else throw{'message':_0x6953('0x173')};})[_0x6953('0x27')](function(_0x316cf3){return db['User'][_0x6953('0x26')]({'apiKeyNonce':null,'apiKeyIat':null},{'where':{'id':_0xbb22f5['params']['id']}});})['then'](respondWithStatusCode(_0x23dfe1,0xc8))[_0x6953('0x1e')](handleError(_0x23dfe1,0x193));}else{return _0x23dfe1[_0x6953('0x1f')](0x191)[_0x6953('0x21')]({'message':_0x6953('0x16c')});}};exports[_0x6953('0x174')]=function(_0xbf8455,_0x1e846b){var _0x548f8d=_0xbf8455[_0x6953('0x2a')]['get']({'plain':!![]});if(!_0x548f8d){return _0x1e846b[_0x6953('0x1f')](0x191)[_0x6953('0x34')]('Unable\x20to\x20retrieve\x20the\x20current\x20user');}else{return _0x1e846b[_0x6953('0x1f')](0xc8)[_0x6953('0x21')](_0x548f8d);}};exports[_0x6953('0x175')]=function(_0x11c08c,_0x179875){var _0x4cbe54={'offset':0x0},_0x13d46b={'count':0x0,'rows':[]};Promise['resolve']()[_0x6953('0x27')](function(){if(!_0x11c08c[_0x6953('0x3d')][_0x6953('0x2d')]&&!_0x11c08c[_0x6953('0x3d')][_0x6953('0x176')]&&!_0x11c08c[_0x6953('0x3d')][_0x6953('0x177')])return[];return Promise[_0x6953('0x178')]()[_0x6953('0x27')](function(){var _0x21dec0=[];if(!_[_0x6953('0x84')](_0x11c08c['query'][_0x6953('0x176')])){_0x21dec0[_0x6953('0x46')](db[_0x6953('0x10d')][_0x6953('0x41')]({'attributes':['id',_0x6953('0x33')],'where':{'id':_0x11c08c['query'][_0x6953('0x176')]}}));}if(!_[_0x6953('0x84')](_0x11c08c[_0x6953('0x3d')][_0x6953('0x177')])){_0x21dec0['push'](db[_0x6953('0xa7')][_0x6953('0x41')]({'attributes':['id',_0x6953('0x33')],'type':_0x6953('0x179'),'where':{'id':_0x11c08c[_0x6953('0x3d')][_0x6953('0x177')]}}));}return Promise[_0x6953('0x4d')](_0x21dec0);})['then'](function(_0x7a39a6){var _0x1b0b30=_[_0x6953('0x11b')](_0x7a39a6)['map'](function(_0x32f22a){return _0x32f22a[_0x6953('0x17a')]({'attributes':['id','name','internal','online'],'raw':!![]});});return Promise[_0x6953('0x4d')](_0x1b0b30);})[_0x6953('0x27')](function(_0x500120){var _0x226d86=_[_0x6953('0x11b')](_0x500120);if(!_0x11c08c['query'][_0x6953('0x2d')])return _0x226d86;if(_[_0x6953('0x84')](_0x226d86)){return db[_0x6953('0x36')][_0x6953('0x41')]({'attributes':['id',_0x6953('0x33'),_0x6953('0x61'),_0x6953('0x99')],'where':{'role':_0x6953('0x79'),'$or':[db[_0x6953('0x65')][_0x6953('0x3c')](db[_0x6953('0x65')]['fn'](_0x6953('0x17b'),db[_0x6953('0x65')][_0x6953('0x17c')](_0x6953('0x33'))),{'$like':'%'+_0x11c08c[_0x6953('0x3d')][_0x6953('0x2d')][_0x6953('0x9f')]()+'%'}),{'internal':{'$like':'%'+_0x11c08c[_0x6953('0x3d')][_0x6953('0x2d')]+'%'}}]},'raw':!![]});}else{return _(_0x226d86)[_0x6953('0x11b')]()[_0x6953('0x2d')](function(_0x26b473){return _0x26b473[_0x6953('0x33')]['toLowerCase']()['includes'](_0x11c08c[_0x6953('0x3d')][_0x6953('0x2d')][_0x6953('0x9f')]())||_0x26b473[_0x6953('0x61')][_0x6953('0x17d')]()[_0x6953('0x2f')](_0x11c08c[_0x6953('0x3d')][_0x6953('0x2d')]);})[_0x6953('0x2e')]();}})[_0x6953('0x27')](function(_0x9fb355){var _0x24a824=_0x6953('0x33');var _0x246a9d=_0x6953('0x17e');if(_0x11c08c['query']['sort']){var _0x246a9d=_0x11c08c[_0x6953('0x3d')][_0x6953('0xc8')][0x0]==='-'?_0x6953('0x17f'):_0x6953('0x17e');var _0x24a824=_0x246a9d===_0x6953('0x17e')?_0x11c08c[_0x6953('0x3d')][_0x6953('0xc8')]:_0x11c08c['query'][_0x6953('0xc8')][_0x6953('0x180')](0x1);}return _(_0x9fb355)[_0x6953('0x181')]('id')[_0x6953('0x182')]([function(_0x331fd5){return _0x24a824==='name'?_0x331fd5[_0x24a824]['toLowerCase']():_0x331fd5[_0x24a824];}],[_0x246a9d])[_0x6953('0x38')](function(_0x5d98d9){return _[_0x6953('0xca')](_0x5d98d9,['id',_0x6953('0x33'),_0x6953('0x61'),'online']);})['value']();})[_0x6953('0x27')](function(_0x223926){return client[_0x6953('0x14')](_0x6953('0x2b'),_0x11c08c)['then'](function(_0x374b6e){if(_0x374b6e[_0x6953('0x1b')])throw new Error(_0x6953('0x183'));var _0x2cf0ac=_0x374b6e[_0x6953('0x184')];var _0x4f5aa4=jayson[_0x6953('0x12')][_0x6953('0x13')]({'port':0x232c});return _0x4f5aa4['request'](_0x6953('0x2b'),_0x11c08c)[_0x6953('0x27')](function(_0x4e33b4){if(_0x4e33b4[_0x6953('0x1b')])throw new Error(_0x6953('0x185'));var _0x46a771=_0x4e33b4[_0x6953('0x184')];return _[_0x6953('0xcb')]({},_0x46a771,_0x2cf0ac);});})[_0x6953('0x27')](function(_0x2aac04){return _[_0x6953('0x38')](_0x223926,function(_0xccc5b6){var _0x8df3ac=_[_0x6953('0x56')](_0x2aac04[_0x6953('0x42')],['id',_0xccc5b6['id']]);if(!_0x8df3ac||!_0xccc5b6[_0x6953('0x99')]){_0xccc5b6[_0x6953('0x1f')]=_0x6953('0x186');}else if(_0x8df3ac[_0x6953('0x9b')]){_0xccc5b6[_0x6953('0x1f')]=_0x6953('0xfd');}else{_0xccc5b6[_0x6953('0x1f')]=_[_0x6953('0x2f')](['idle',_0x6953('0x187'),_0x6953('0x188'),_0x6953('0x189'),null,undefined],_0x8df3ac[_0x6953('0x18a')])?'online':_0x6953('0x18b');}return _0xccc5b6;});});});})[_0x6953('0x27')](function(_0xf5552){if(!_0x11c08c[_0x6953('0x3d')][_0x6953('0xd0')](_0x6953('0xd1'))){_0x4cbe54[_0x6953('0xd2')]=qs[_0x6953('0xd2')](_0x11c08c[_0x6953('0x3d')][_0x6953('0xd2')]||0xa);_0x4cbe54[_0x6953('0x22')]=qs[_0x6953('0x22')](_0x11c08c[_0x6953('0x3d')][_0x6953('0x22')]);}_0x13d46b[_0x6953('0x24')]=_0xf5552[_0x6953('0x45')];_0x13d46b[_0x6953('0x42')]=_0x4cbe54[_0x6953('0xd2')]?_0xf5552[_0x6953('0x18c')](_0x4cbe54[_0x6953('0x22')],_0x4cbe54[_0x6953('0x22')]+_0x4cbe54[_0x6953('0xd2')]):_0xf5552;return _0x13d46b;})[_0x6953('0x27')](respondWithFilteredResult(_0x179875,_0x4cbe54))[_0x6953('0x1e')](handleError(_0x179875,null));};function get_open_tabs(_0x506d5d,_0xa5cce9){var _0x1f63d9=_0x506d5d[_0x6953('0x18d')](0x0)[_0x6953('0x18e')]()+_0x506d5d[_0x6953('0x18c')](0x1);var _0x445149={'type':db['Sequelize']['QueryTypes']['SELECT'],'raw':!![]};return new BPromise(function(_0x3e03aa,_0x273532){var _0x581280=squel[_0x6953('0x18f')]()[_0x6953('0x190')](_0x6953('0x191')+_0x1f63d9+_0x6953('0x192'),'id')[_0x6953('0x190')](_0x6953('0x193'))[_0x6953('0x68')](_0x6953('0x194')+_0x506d5d+_0x6953('0x195'),'ui')[_0x6953('0x3c')](_0x6953('0x196'),_0xa5cce9['id']);return db[_0x6953('0x65')]['query'](_0x581280['toString'](),_0x445149)[_0x6953('0x27')](function(_0x56d1a5){_0xa5cce9[_0x1f63d9+_0x6953('0x197')]=_0x56d1a5;_0x3e03aa(_0x56d1a5);})[_0x6953('0x1e')](function(_0x25e7dd){_0x273532(_0x25e7dd);});});};
\ No newline at end of file
index f3b56e2..e687646 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde28=['setMaxListeners','update','emit','hasOwnProperty','hook','events','../../mysqldb','User'];(function(_0x50f957,_0x5e629b){var _0x5ff3dc=function(_0x5c3c40){while(--_0x5c3c40){_0x50f957['push'](_0x50f957['shift']());}};_0x5ff3dc(++_0x5e629b);}(_0xde28,0x1b5));var _0x8de2=function(_0x3af76b,_0x3ff964){_0x3af76b=_0x3af76b-0x0;var _0x441064=_0xde28[_0x3af76b];return _0x441064;};'use strict';var EventEmitter=require(_0x8de2('0x0'));var User=require(_0x8de2('0x1'))['db'][_0x8de2('0x2')];var UserEvents=new EventEmitter();UserEvents[_0x8de2('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x8de2('0x4'),'afterDestroy':'remove'};function emitEvent(_0x163b64){return function(_0xf8d5ae,_0x4d3a98,_0x585dd1){UserEvents[_0x8de2('0x5')](_0x163b64+':'+_0xf8d5ae['id'],_0xf8d5ae);UserEvents[_0x8de2('0x5')](_0x163b64,_0xf8d5ae);_0x585dd1(null);};}for(var e in events){if(events[_0x8de2('0x6')](e)){var event=events[e];User[_0x8de2('0x7')](e,emitEvent(event));}}module['exports']=UserEvents;
\ No newline at end of file
+var _0xfa77=['hasOwnProperty','hook','exports','events','save','update','remove','emit'];(function(_0x540e12,_0x4a993f){var _0x5e4e6b=function(_0xbc100d){while(--_0xbc100d){_0x540e12['push'](_0x540e12['shift']());}};_0x5e4e6b(++_0x4a993f);}(_0xfa77,0x14b));var _0x7fa7=function(_0x14a37c,_0x528268){_0x14a37c=_0x14a37c-0x0;var _0xaf29db=_0xfa77[_0x14a37c];return _0xaf29db;};'use strict';var EventEmitter=require(_0x7fa7('0x0'));var User=require('../../mysqldb')['db']['User'];var UserEvents=new EventEmitter();UserEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x7fa7('0x1'),'afterUpdate':_0x7fa7('0x2'),'afterDestroy':_0x7fa7('0x3')};function emitEvent(_0x3a9212){return function(_0x45f5cc,_0x4f445a,_0x58daae){UserEvents[_0x7fa7('0x4')](_0x3a9212+':'+_0x45f5cc['id'],_0x45f5cc);UserEvents[_0x7fa7('0x4')](_0x3a9212,_0x45f5cc);_0x58daae(null);};}for(var e in events){if(events[_0x7fa7('0x5')](e)){var event=events[e];User[_0x7fa7('0x6')](e,emitEvent(event));}}module[_0x7fa7('0x7')]=UserEvents;
\ No newline at end of file
index 4093947..873b27a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c18=['resolve','UserProfile','privacyEnabled','updateMd5Password','updatePassword','catch','find','changed','VoiceExtension','bulkCreate','destroy','encryptPassword','function','Missing\x20Callback','randomBytes','base64','salt','pbkdf2Sync','sha1','toString','pbkdf2','indexOf','provider','Invalid\x20password','makeSalt','md5secret',':asterisk:','bluebird','crypto','lodash','./user.attributes','google','context','from-sip','system','length','format','%s%s','prefix','push','merge','Set','CDR(type)=%s','chanspy','record','MixMonitor','${UNIQUEID}.%s,a','Authenticate','password','ChanSpy','name','options','join','StopMixMonitor','WAV','gsm','CDR(type)=internal','extensionMonitor','includes','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=%s','SIP/%s,,tTxXU(xcally-mixmonitor-context)','SIP/%s,,tTxX','Hangup','findAll','then','internal','concat','exports','define','User','users','utf8','utf8_bin','userProfileId','undefined'];(function(_0x18ab2a,_0x4debcd){var _0x16dcee=function(_0x10107a){while(--_0x10107a){_0x18ab2a['push'](_0x18ab2a['shift']());}};_0x16dcee(++_0x4debcd);}(_0x4c18,0x14b));var _0x84c1=function(_0x17adf8,_0x398419){_0x17adf8=_0x17adf8-0x0;var _0x248833=_0x4c18[_0x17adf8];return _0x248833;};'use strict';var BPromise=require(_0x84c1('0x0'));var crypto=require(_0x84c1('0x1'));var util=require('util');var md5=require('md5');var _=require(_0x84c1('0x2'));var attributes=require(_0x84c1('0x3'));var authTypes=[_0x84c1('0x4')];var validatePresenceOf=function(_0x348649){return _0x348649&&_0x348649['length'];};var getChanSpyApplications=function(_0x88ed2f,_0x5bbab2,_0x979998){var _0xdbe265={'context':_0x88ed2f[_0x84c1('0x5')]||_0x84c1('0x6'),'type':_0x84c1('0x7'),'isApp':![],'UserId':_0x88ed2f['id']};var _0x94d550=[];for(var _0xc4eb56=0x0,_0x15dc77=0x1;_0xc4eb56<_0x979998[_0x84c1('0x8')];_0xc4eb56++,_0x15dc77=0x1){var _0x582c9b={'exten':util[_0x84c1('0x9')](_0x84c1('0xa'),_0x979998[_0xc4eb56][_0x84c1('0xb')],_0x5bbab2),'ChanSpyId':_0x979998[_0xc4eb56]['id']};_0x94d550[_0x84c1('0xc')](_[_0x84c1('0xd')]({'app':_0x84c1('0xe'),'appdata':util[_0x84c1('0x9')](_0x84c1('0xf'),_0x84c1('0x10')),'priority':_0x15dc77++},_0xdbe265,_0x582c9b));if(_0x979998[_0xc4eb56][_0x84c1('0x11')]){_0x94d550[_0x84c1('0xc')](_[_0x84c1('0xd')]({'app':_0x84c1('0x12'),'appdata':util[_0x84c1('0x9')](_0x84c1('0x13'),_0x979998[_0xc4eb56]['recordingFormat']),'priority':_0x15dc77++},_0xdbe265,_0x582c9b));}if(_0x979998[_0xc4eb56]['auth']){_0x94d550[_0x84c1('0xc')](_[_0x84c1('0xd')]({'app':_0x84c1('0x14'),'appdata':_0x979998[_0xc4eb56][_0x84c1('0x15')],'priority':_0x15dc77++},_0xdbe265,_0x582c9b));}_0x94d550[_0x84c1('0xc')](_[_0x84c1('0xd')]({'app':_0x84c1('0x16'),'appdata':util[_0x84c1('0x9')]('SIP/%s,%s',_0x88ed2f[_0x84c1('0x17')],_0x979998[_0xc4eb56][_0x84c1('0x18')]?_0x979998[_0xc4eb56][_0x84c1('0x18')][_0x84c1('0x19')](''):''),'priority':_0x15dc77++},_0xdbe265,_0x582c9b));if(_0x979998[_0xc4eb56][_0x84c1('0x11')]){_0x94d550['push'](_['merge']({'app':_0x84c1('0x1a'),'priority':_0x15dc77++},_0xdbe265,_0x582c9b));}}return _0x94d550;};var getUserApplications=function(_0x3621a5,_0x5bd120){var _0x4b16d8=['wav',_0x84c1('0x1b'),_0x84c1('0x1c')];var _0x1b79ab={'context':_0x3621a5[_0x84c1('0x5')]||_0x84c1('0x6'),'exten':_0x5bd120,'type':'system','isApp':![],'UserId':_0x3621a5['id']};var _0xc97c83=[{'app':_0x84c1('0xe'),'appdata':_0x84c1('0x1d')}];if(_0x3621a5[_0x84c1('0x1e')]&&_[_0x84c1('0x1f')](_0x4b16d8,_0x3621a5[_0x84c1('0x1e')])){_0xc97c83[_0x84c1('0xc')]({'app':_0x84c1('0xe'),'appdata':_0x84c1('0x20')});_0xc97c83[_0x84c1('0xc')]({'app':_0x84c1('0xe'),'appdata':util['format'](_0x84c1('0x21'),_0x3621a5[_0x84c1('0x1e')])});_0xc97c83[_0x84c1('0xc')]({'app':'Dial','appdata':util['format'](_0x84c1('0x22'),_0x3621a5[_0x84c1('0x17')])});}else{_0xc97c83[_0x84c1('0xc')]({'app':'Dial','appdata':util['format'](_0x84c1('0x23'),_0x3621a5['name'])});}_0xc97c83[_0x84c1('0xc')]({'app':_0x84c1('0x24')});for(var _0xc528aa=0x0;_0xc528aa<_0xc97c83[_0x84c1('0x8')];_0xc528aa++){_0xc97c83[_0xc528aa]['priority']=_0xc528aa+0x1;_0xc97c83[_0xc528aa]=_['defaults'](_0xc97c83[_0xc528aa],_0x1b79ab);}return _0xc97c83;};var getChanSpyPromise=function(_0xdbf130,_0x107304){return new BPromise(function(_0x32e642,_0x570477){return _0xdbf130['VoiceChanSpy'][_0x84c1('0x25')]()[_0x84c1('0x26')](function(_0x34aac1){if(_0x34aac1){var _0x25a83b=getChanSpyApplications(_0x107304,_0x107304['internal'],_0x34aac1);if(_0x107304[_0x84c1('0x27')]!=_0x107304['name']){_0x25a83b=_0x25a83b[_0x84c1('0x28')](getChanSpyApplications(_0x107304,_0x107304[_0x84c1('0x17')],_0x34aac1));}return _0x32e642(_0x25a83b);}return _0x32e642([]);})['catch'](function(_0x17445b){_0x570477(_0x17445b);});});};module[_0x84c1('0x29')]=function(_0x4b1b46,_0x10d3c3){var _0x2bf2b4=_0x4b1b46['models'];return _0x4b1b46[_0x84c1('0x2a')](_0x84c1('0x2b'),attributes,{'tableName':_0x84c1('0x2c'),'charset':_0x84c1('0x2d'),'collate':_0x84c1('0x2e'),'hooks':{'beforeCreate':function(_0x4b5ad,_0x3aaa31,_0x2f4b33){var _0xfacbc6=typeof _0x4b5ad[_0x84c1('0x2f')]===_0x84c1('0x30')?BPromise[_0x84c1('0x31')](null):_0x2bf2b4[_0x84c1('0x32')]['find']({'where':{'id':_0x4b5ad[_0x84c1('0x2f')]}});_0xfacbc6[_0x84c1('0x26')](function(_0x3ebbbe){if(_0x3ebbbe){_0x4b5ad['privacyEnabled']=_0x3ebbbe[_0x84c1('0x33')];}})['then'](function(){_0x4b5ad[_0x84c1('0x34')]();_0x4b5ad[_0x84c1('0x35')](_0x2f4b33);})[_0x84c1('0x36')](function(_0x537775){_0x2f4b33(_0x537775);});},'beforeUpdate':function(_0x4f9c9e,_0x1ee819,_0x40e532){Promise[_0x84c1('0x31')]()['then'](function(){if(_0x4f9c9e['changed'](_0x84c1('0x2f'))===![])return;return _0x2bf2b4[_0x84c1('0x32')][_0x84c1('0x37')]({'where':{'id':_0x4f9c9e[_0x84c1('0x2f')]}})['then'](function(_0x622b83){if(_0x622b83)_0x4f9c9e[_0x84c1('0x33')]=_0x622b83['privacyEnabled'];return;});})['then'](function(){if(_0x4f9c9e[_0x84c1('0x38')](_0x84c1('0x15'))){_0x4f9c9e['updateMd5Password']();return _0x4f9c9e[_0x84c1('0x35')](_0x40e532);}_0x40e532();})[_0x84c1('0x36')](function(_0x352d1d){_0x40e532(_0x352d1d);});},'afterCreate':function(_0x5b71da,_0x421798,_0x5b1469){var _0x1f21cf=getUserApplications(_0x5b71da,_0x5b71da[_0x84c1('0x27')]);if(_0x5b71da[_0x84c1('0x27')]!=_0x5b71da[_0x84c1('0x17')]){_0x1f21cf=_0x1f21cf[_0x84c1('0x28')](getUserApplications(_0x5b71da,_0x5b71da[_0x84c1('0x17')]));}return _0x2bf2b4[_0x84c1('0x39')][_0x84c1('0x3a')](_0x1f21cf)['then'](function(){if(_0x5b71da[_0x84c1('0x10')]){return getChanSpyPromise(_0x2bf2b4,_0x5b71da);}})[_0x84c1('0x26')](function(_0x2f3c74){if(_0x2f3c74&&_0x2f3c74[_0x84c1('0x8')]){return _0x2bf2b4[_0x84c1('0x39')][_0x84c1('0x3a')](_0x2f3c74);}})['then'](function(){_0x5b1469();})['catch'](function(_0x5dabd4){_0x5b1469(_0x5dabd4);});},'afterUpdate':function(_0x806b62,_0x47a302,_0x5ab4e1){return BPromise[_0x84c1('0x31')]()[_0x84c1('0x26')](function(){if(_0x806b62[_0x84c1('0x38')]('chanspy')||_0x806b62[_0x84c1('0x38')](_0x84c1('0x5'))){return _0x2bf2b4['VoiceExtension'][_0x84c1('0x3b')]({'where':{'UserId':_0x806b62['id'],'type':_0x84c1('0x7'),'ChanSpyId':{'$ne':null}}})[_0x84c1('0x26')](function(){if(_0x806b62['chanspy']){return getChanSpyPromise(_0x2bf2b4,_0x806b62)[_0x84c1('0x26')](function(_0x565040){if(_0x565040&&_0x565040[_0x84c1('0x8')]){return _0x2bf2b4['VoiceExtension']['bulkCreate'](_0x565040);}});}});}})[_0x84c1('0x26')](function(){if(_0x806b62['changed']('extensionMonitor')||_0x806b62[_0x84c1('0x38')](_0x84c1('0x5'))){return _0x2bf2b4['VoiceExtension'][_0x84c1('0x3b')]({'where':{'UserId':_0x806b62['id'],'type':_0x84c1('0x7'),'ChanSpyId':null}})[_0x84c1('0x26')](function(){var _0x15b00f=getUserApplications(_0x806b62,_0x806b62[_0x84c1('0x27')]);if(_0x806b62['internal']!=_0x806b62[_0x84c1('0x17')]){_0x15b00f=_0x15b00f[_0x84c1('0x28')](getUserApplications(_0x806b62,_0x806b62[_0x84c1('0x17')]));}return _0x2bf2b4[_0x84c1('0x39')][_0x84c1('0x3a')](_0x15b00f);});}})[_0x84c1('0x26')](function(){_0x5ab4e1();})[_0x84c1('0x36')](function(_0xc2a115){_0x5ab4e1(_0xc2a115);});},'afterDestroy':function(_0x45cbfb,_0x237deb){return _0x2bf2b4[_0x84c1('0x39')][_0x84c1('0x3b')]({'where':{'UserId':_0x45cbfb['id'],'type':'system'}});}},'instanceMethods':{'authenticate':function(_0x467351,_0xdbdb83){if(!_0xdbdb83){return this[_0x84c1('0x15')]===this[_0x84c1('0x3c')](_0x467351);}var _0xbefd3e=this;this[_0x84c1('0x3c')](_0x467351,function(_0x24bd46,_0x3c87e1){if(_0x24bd46){_0xdbdb83(_0x24bd46);}if(_0xbefd3e[_0x84c1('0x15')]===_0x3c87e1){_0xdbdb83(null,!![]);}else{_0xdbdb83(null,![]);}});},'makeSalt':function(_0x103fbb,_0x23eca3){var _0x9a41ef=0x10;if(typeof arguments[0x0]===_0x84c1('0x3d')){_0x23eca3=arguments[0x0];_0x103fbb=_0x9a41ef;}else if(typeof arguments[0x1]===_0x84c1('0x3d')){_0x23eca3=arguments[0x1];}else{throw new Error(_0x84c1('0x3e'));}if(!_0x103fbb){_0x103fbb=_0x9a41ef;}return crypto[_0x84c1('0x3f')](_0x103fbb,function(_0x1b892e,_0x52d040){if(_0x1b892e){_0x23eca3(_0x1b892e);}return _0x23eca3(null,_0x52d040['toString'](_0x84c1('0x40')));});},'encryptPassword':function(_0x3ba5cf,_0x454338){if(!_0x3ba5cf||!this['salt']){return _0x454338?_0x454338(null):null;}var _0x4b4490=0x2710;var _0x3ad83b=0x40;var _0x24f3cf=new Buffer(this[_0x84c1('0x41')],'base64');if(!_0x454338){return crypto[_0x84c1('0x42')](_0x3ba5cf,_0x24f3cf,_0x4b4490,_0x3ad83b,_0x84c1('0x43'))[_0x84c1('0x44')]('base64');}return crypto[_0x84c1('0x45')](_0x3ba5cf,_0x24f3cf,_0x4b4490,_0x3ad83b,_0x84c1('0x43'),function(_0xc0c3ca,_0x315fe5){if(_0xc0c3ca){_0x454338(_0xc0c3ca);}return _0x454338(null,_0x315fe5[_0x84c1('0x44')](_0x84c1('0x40')));});},'updatePassword':function(_0x1b1a07){if(!this[_0x84c1('0x15')]){return _0x1b1a07(null);}if(!validatePresenceOf(this[_0x84c1('0x15')])&&authTypes[_0x84c1('0x46')](this[_0x84c1('0x47')])===-0x1){_0x1b1a07(new Error(_0x84c1('0x48')));}var _0x14351b=this;this[_0x84c1('0x49')](function(_0x562b00,_0x543905){if(_0x562b00){return _0x1b1a07(_0x562b00);}_0x14351b[_0x84c1('0x41')]=_0x543905;_0x14351b[_0x84c1('0x3c')](_0x14351b['password'],function(_0x3db349,_0x191561){if(_0x3db349){_0x1b1a07(_0x3db349);}_0x14351b[_0x84c1('0x15')]=_0x191561;_0x1b1a07(null);});});},'updateMd5Password':function(){this[_0x84c1('0x4a')]=md5(this['name']+_0x84c1('0x4b')+this[_0x84c1('0x15')]);return this[_0x84c1('0x4a')];}}});};
\ No newline at end of file
+var _0xd6b3=['User','users','utf8','utf8_bin','userProfileId','undefined','privacyEnabled','updatePassword','resolve','UserProfile','find','changed','updateMd5Password','VoiceExtension','bulkCreate','destroy','system','concat','encryptPassword','function','Missing\x20Callback','randomBytes','toString','salt','pbkdf2Sync','base64','pbkdf2','sha1','provider','Invalid\x20password','makeSalt','md5secret','bluebird','crypto','util','md5','./user.attributes','google','context','from-sip','length','format','prefix','push','merge','Set','chanspy','record','${UNIQUEID}.%s,a','recordingFormat','auth','Authenticate','password','ChanSpy','SIP/%s,%s','options','join','wav','WAV','gsm','CDR(type)=internal','includes','_XCALLY_MIXMONITOR_FORMAT=%s','extensionMonitor','Dial','name','SIP/%s,,tTxX','Hangup','priority','defaults','VoiceChanSpy','findAll','then','internal','catch','exports','models','define'];(function(_0x202c61,_0x3673e0){var _0x540691=function(_0x409610){while(--_0x409610){_0x202c61['push'](_0x202c61['shift']());}};_0x540691(++_0x3673e0);}(_0xd6b3,0x10a));var _0x3d6b=function(_0x38d62b,_0x41c489){_0x38d62b=_0x38d62b-0x0;var _0x303233=_0xd6b3[_0x38d62b];return _0x303233;};'use strict';var BPromise=require(_0x3d6b('0x0'));var crypto=require(_0x3d6b('0x1'));var util=require(_0x3d6b('0x2'));var md5=require(_0x3d6b('0x3'));var _=require('lodash');var attributes=require(_0x3d6b('0x4'));var authTypes=[_0x3d6b('0x5')];var validatePresenceOf=function(_0x3e3c83){return _0x3e3c83&&_0x3e3c83['length'];};var getChanSpyApplications=function(_0x341f2b,_0x471a24,_0x18e0b1){var _0x1c8d79={'context':_0x341f2b[_0x3d6b('0x6')]||_0x3d6b('0x7'),'type':'system','isApp':![],'UserId':_0x341f2b['id']};var _0xa5d036=[];for(var _0x24659c=0x0,_0x85e2e=0x1;_0x24659c<_0x18e0b1[_0x3d6b('0x8')];_0x24659c++,_0x85e2e=0x1){var _0x47524e={'exten':util[_0x3d6b('0x9')]('%s%s',_0x18e0b1[_0x24659c][_0x3d6b('0xa')],_0x471a24),'ChanSpyId':_0x18e0b1[_0x24659c]['id']};_0xa5d036[_0x3d6b('0xb')](_[_0x3d6b('0xc')]({'app':_0x3d6b('0xd'),'appdata':util[_0x3d6b('0x9')]('CDR(type)=%s',_0x3d6b('0xe')),'priority':_0x85e2e++},_0x1c8d79,_0x47524e));if(_0x18e0b1[_0x24659c][_0x3d6b('0xf')]){_0xa5d036[_0x3d6b('0xb')](_[_0x3d6b('0xc')]({'app':'MixMonitor','appdata':util[_0x3d6b('0x9')](_0x3d6b('0x10'),_0x18e0b1[_0x24659c][_0x3d6b('0x11')]),'priority':_0x85e2e++},_0x1c8d79,_0x47524e));}if(_0x18e0b1[_0x24659c][_0x3d6b('0x12')]){_0xa5d036[_0x3d6b('0xb')](_['merge']({'app':_0x3d6b('0x13'),'appdata':_0x18e0b1[_0x24659c][_0x3d6b('0x14')],'priority':_0x85e2e++},_0x1c8d79,_0x47524e));}_0xa5d036['push'](_[_0x3d6b('0xc')]({'app':_0x3d6b('0x15'),'appdata':util[_0x3d6b('0x9')](_0x3d6b('0x16'),_0x341f2b['name'],_0x18e0b1[_0x24659c]['options']?_0x18e0b1[_0x24659c][_0x3d6b('0x17')][_0x3d6b('0x18')](''):''),'priority':_0x85e2e++},_0x1c8d79,_0x47524e));if(_0x18e0b1[_0x24659c][_0x3d6b('0xf')]){_0xa5d036['push'](_[_0x3d6b('0xc')]({'app':'StopMixMonitor','priority':_0x85e2e++},_0x1c8d79,_0x47524e));}}return _0xa5d036;};var getUserApplications=function(_0x44d807,_0x55d74c){var _0x3e2136=[_0x3d6b('0x19'),_0x3d6b('0x1a'),_0x3d6b('0x1b')];var _0x58ad4e={'context':_0x44d807[_0x3d6b('0x6')]||_0x3d6b('0x7'),'exten':_0x55d74c,'type':'system','isApp':![],'UserId':_0x44d807['id']};var _0x1d7362=[{'app':'Set','appdata':_0x3d6b('0x1c')}];if(_0x44d807['extensionMonitor']&&_[_0x3d6b('0x1d')](_0x3e2136,_0x44d807['extensionMonitor'])){_0x1d7362[_0x3d6b('0xb')]({'app':'Set','appdata':'_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}'});_0x1d7362[_0x3d6b('0xb')]({'app':_0x3d6b('0xd'),'appdata':util[_0x3d6b('0x9')](_0x3d6b('0x1e'),_0x44d807[_0x3d6b('0x1f')])});_0x1d7362[_0x3d6b('0xb')]({'app':_0x3d6b('0x20'),'appdata':util['format']('SIP/%s,,tTxXU(xcally-mixmonitor-context)',_0x44d807[_0x3d6b('0x21')])});}else{_0x1d7362['push']({'app':'Dial','appdata':util[_0x3d6b('0x9')](_0x3d6b('0x22'),_0x44d807[_0x3d6b('0x21')])});}_0x1d7362[_0x3d6b('0xb')]({'app':_0x3d6b('0x23')});for(var _0x28ef6e=0x0;_0x28ef6e<_0x1d7362[_0x3d6b('0x8')];_0x28ef6e++){_0x1d7362[_0x28ef6e][_0x3d6b('0x24')]=_0x28ef6e+0x1;_0x1d7362[_0x28ef6e]=_[_0x3d6b('0x25')](_0x1d7362[_0x28ef6e],_0x58ad4e);}return _0x1d7362;};var getChanSpyPromise=function(_0x3df3c5,_0x248156){return new BPromise(function(_0x66962f,_0x2067b4){return _0x3df3c5[_0x3d6b('0x26')][_0x3d6b('0x27')]()[_0x3d6b('0x28')](function(_0x101bb1){if(_0x101bb1){var _0x3941c5=getChanSpyApplications(_0x248156,_0x248156['internal'],_0x101bb1);if(_0x248156[_0x3d6b('0x29')]!=_0x248156[_0x3d6b('0x21')]){_0x3941c5=_0x3941c5['concat'](getChanSpyApplications(_0x248156,_0x248156[_0x3d6b('0x21')],_0x101bb1));}return _0x66962f(_0x3941c5);}return _0x66962f([]);})[_0x3d6b('0x2a')](function(_0x41dace){_0x2067b4(_0x41dace);});});};module[_0x3d6b('0x2b')]=function(_0x5d53d3,_0x3d900f){var _0x4bdca7=_0x5d53d3[_0x3d6b('0x2c')];return _0x5d53d3[_0x3d6b('0x2d')](_0x3d6b('0x2e'),attributes,{'tableName':_0x3d6b('0x2f'),'charset':_0x3d6b('0x30'),'collate':_0x3d6b('0x31'),'hooks':{'beforeCreate':function(_0x3f3337,_0x1181e0,_0x347d72){var _0x8fe8fc=typeof _0x3f3337[_0x3d6b('0x32')]===_0x3d6b('0x33')?BPromise['resolve'](null):_0x4bdca7['UserProfile']['find']({'where':{'id':_0x3f3337['userProfileId']}});_0x8fe8fc[_0x3d6b('0x28')](function(_0x42b483){if(_0x42b483){_0x3f3337[_0x3d6b('0x34')]=_0x42b483[_0x3d6b('0x34')];}})[_0x3d6b('0x28')](function(){_0x3f3337['updateMd5Password']();_0x3f3337[_0x3d6b('0x35')](_0x347d72);})[_0x3d6b('0x2a')](function(_0x52fb64){_0x347d72(_0x52fb64);});},'beforeUpdate':function(_0x225002,_0x2b1914,_0x614641){Promise[_0x3d6b('0x36')]()['then'](function(){if(_0x225002['changed'](_0x3d6b('0x32'))===![])return;return _0x4bdca7[_0x3d6b('0x37')][_0x3d6b('0x38')]({'where':{'id':_0x225002['userProfileId']}})['then'](function(_0x453589){if(_0x453589)_0x225002['privacyEnabled']=_0x453589[_0x3d6b('0x34')];return;});})['then'](function(){if(_0x225002[_0x3d6b('0x39')](_0x3d6b('0x14'))){_0x225002[_0x3d6b('0x3a')]();return _0x225002[_0x3d6b('0x35')](_0x614641);}_0x614641();})['catch'](function(_0x1e33a8){_0x614641(_0x1e33a8);});},'afterCreate':function(_0x3ebe2e,_0x5cb773,_0x53d23b){var _0xb0ed16=getUserApplications(_0x3ebe2e,_0x3ebe2e[_0x3d6b('0x29')]);if(_0x3ebe2e[_0x3d6b('0x29')]!=_0x3ebe2e[_0x3d6b('0x21')]){_0xb0ed16=_0xb0ed16['concat'](getUserApplications(_0x3ebe2e,_0x3ebe2e[_0x3d6b('0x21')]));}return _0x4bdca7[_0x3d6b('0x3b')][_0x3d6b('0x3c')](_0xb0ed16)[_0x3d6b('0x28')](function(){if(_0x3ebe2e[_0x3d6b('0xe')]){return getChanSpyPromise(_0x4bdca7,_0x3ebe2e);}})[_0x3d6b('0x28')](function(_0x452bf4){if(_0x452bf4&&_0x452bf4[_0x3d6b('0x8')]){return _0x4bdca7[_0x3d6b('0x3b')][_0x3d6b('0x3c')](_0x452bf4);}})[_0x3d6b('0x28')](function(){_0x53d23b();})[_0x3d6b('0x2a')](function(_0x21035a){_0x53d23b(_0x21035a);});},'afterUpdate':function(_0x2c7af1,_0x40776f,_0x1ecbea){return BPromise[_0x3d6b('0x36')]()['then'](function(){if(_0x2c7af1['changed'](_0x3d6b('0xe'))||_0x2c7af1[_0x3d6b('0x39')]('context')){return _0x4bdca7['VoiceExtension'][_0x3d6b('0x3d')]({'where':{'UserId':_0x2c7af1['id'],'type':'system','ChanSpyId':{'$ne':null}}})[_0x3d6b('0x28')](function(){if(_0x2c7af1[_0x3d6b('0xe')]){return getChanSpyPromise(_0x4bdca7,_0x2c7af1)[_0x3d6b('0x28')](function(_0x17196f){if(_0x17196f&&_0x17196f[_0x3d6b('0x8')]){return _0x4bdca7[_0x3d6b('0x3b')]['bulkCreate'](_0x17196f);}});}});}})[_0x3d6b('0x28')](function(){if(_0x2c7af1[_0x3d6b('0x39')](_0x3d6b('0x1f'))||_0x2c7af1['changed'](_0x3d6b('0x6'))){return _0x4bdca7[_0x3d6b('0x3b')][_0x3d6b('0x3d')]({'where':{'UserId':_0x2c7af1['id'],'type':_0x3d6b('0x3e'),'ChanSpyId':null}})['then'](function(){var _0x49d92d=getUserApplications(_0x2c7af1,_0x2c7af1['internal']);if(_0x2c7af1[_0x3d6b('0x29')]!=_0x2c7af1[_0x3d6b('0x21')]){_0x49d92d=_0x49d92d[_0x3d6b('0x3f')](getUserApplications(_0x2c7af1,_0x2c7af1[_0x3d6b('0x21')]));}return _0x4bdca7[_0x3d6b('0x3b')][_0x3d6b('0x3c')](_0x49d92d);});}})[_0x3d6b('0x28')](function(){_0x1ecbea();})[_0x3d6b('0x2a')](function(_0x39b7ef){_0x1ecbea(_0x39b7ef);});},'afterDestroy':function(_0x14e905,_0x541978){return _0x4bdca7['VoiceExtension'][_0x3d6b('0x3d')]({'where':{'UserId':_0x14e905['id'],'type':_0x3d6b('0x3e')}});}},'instanceMethods':{'authenticate':function(_0x44e089,_0x1d6373){if(!_0x1d6373){return this[_0x3d6b('0x14')]===this[_0x3d6b('0x40')](_0x44e089);}var _0x271694=this;this[_0x3d6b('0x40')](_0x44e089,function(_0x337092,_0x253925){if(_0x337092){_0x1d6373(_0x337092);}if(_0x271694['password']===_0x253925){_0x1d6373(null,!![]);}else{_0x1d6373(null,![]);}});},'makeSalt':function(_0x34e403,_0x16a485){var _0x427f1c=0x10;if(typeof arguments[0x0]===_0x3d6b('0x41')){_0x16a485=arguments[0x0];_0x34e403=_0x427f1c;}else if(typeof arguments[0x1]===_0x3d6b('0x41')){_0x16a485=arguments[0x1];}else{throw new Error(_0x3d6b('0x42'));}if(!_0x34e403){_0x34e403=_0x427f1c;}return crypto[_0x3d6b('0x43')](_0x34e403,function(_0x23b37a,_0x55cdff){if(_0x23b37a){_0x16a485(_0x23b37a);}return _0x16a485(null,_0x55cdff[_0x3d6b('0x44')]('base64'));});},'encryptPassword':function(_0x488856,_0x563fea){if(!_0x488856||!this[_0x3d6b('0x45')]){return _0x563fea?_0x563fea(null):null;}var _0x5ca168=0x2710;var _0x3e9766=0x40;var _0x5ed2e6=new Buffer(this[_0x3d6b('0x45')],'base64');if(!_0x563fea){return crypto[_0x3d6b('0x46')](_0x488856,_0x5ed2e6,_0x5ca168,_0x3e9766,'sha1')[_0x3d6b('0x44')](_0x3d6b('0x47'));}return crypto[_0x3d6b('0x48')](_0x488856,_0x5ed2e6,_0x5ca168,_0x3e9766,_0x3d6b('0x49'),function(_0xae8910,_0x2c4641){if(_0xae8910){_0x563fea(_0xae8910);}return _0x563fea(null,_0x2c4641[_0x3d6b('0x44')]('base64'));});},'updatePassword':function(_0x3d3921){if(!this[_0x3d6b('0x14')]){return _0x3d3921(null);}if(!validatePresenceOf(this[_0x3d6b('0x14')])&&authTypes['indexOf'](this[_0x3d6b('0x4a')])===-0x1){_0x3d3921(new Error(_0x3d6b('0x4b')));}var _0x5c11d4=this;this[_0x3d6b('0x4c')](function(_0x16642f,_0x5e624d){if(_0x16642f){return _0x3d3921(_0x16642f);}_0x5c11d4['salt']=_0x5e624d;_0x5c11d4[_0x3d6b('0x40')](_0x5c11d4[_0x3d6b('0x14')],function(_0x99c144,_0x1c0171){if(_0x99c144){_0x3d3921(_0x99c144);}_0x5c11d4[_0x3d6b('0x14')]=_0x1c0171;_0x3d3921(null);});});},'updateMd5Password':function(){this[_0x3d6b('0x4d')]=md5(this[_0x3d6b('0x21')]+':asterisk:'+this[_0x3d6b('0x14')]);return this[_0x3d6b('0x4d')];}}});};
\ No newline at end of file
index e511e9d..e91b5f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c0d=['merge','LOGIN','callysquare','LOGININPAUSE','concat','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','./user.socket','register','request','info','User,\x20%s,\x20%s','request\x20sent','debug','User,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetUser','User','findAll','options','attributes','limit','include','map','model','ShowUser','PauseUser','find','where','name','then','UserVoiceQueueRt','update','PAUSE','length','format','YYYY-MM-DD\x20HH:mm:ss','updateAttributes','getChannels','forEach','isNil','interface','SIP/%s','body','type','DEFAULT\x20PAUSE','internal','uniqueid','MemberReport','bulkCreate','UnpauseUser','findOne','channel','isValidChannel','Unknown\x20channel','voice','mail','fax','sms','openchannel','whatsapp','system','set','%s%s','push','all','LogoutUser','LoginUser','role','mobile','phone','loginInPause','count','agent','../../config/license/util','agents','Maximum\x20login\x20has\x20been\x20reached','destroy','getVoiceQueues','UserVoiceQueue.penalty'];(function(_0x113e32,_0x5339f0){var _0x4ff939=function(_0x2be9ca){while(--_0x2be9ca){_0x113e32['push'](_0x113e32['shift']());}};_0x4ff939(++_0x5339f0);}(_0x9c0d,0x1e0));var _0xd9c0=function(_0x201fc4,_0x2264e8){_0x201fc4=_0x201fc4-0x0;var _0x232e4d=_0x9c0d[_0x201fc4];return _0x232e4d;};'use strict';var _=require('lodash');var util=require(_0xd9c0('0x0'));var moment=require(_0xd9c0('0x1'));var BPromise=require(_0xd9c0('0x2'));var rs=require(_0xd9c0('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xd9c0('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xd9c0('0x5'))(_0xd9c0('0x6'));var config=require('../../config/environment');var jayson=require(_0xd9c0('0x7'));var client=jayson[_0xd9c0('0x8')][_0xd9c0('0x9')]({'port':0x232a});config[_0xd9c0('0xa')]=_[_0xd9c0('0xb')](config[_0xd9c0('0xa')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xd9c0('0xc'))[_0xd9c0('0xd')](socket);function respondWithRpcPromise(_0x5b5d70,_0x1e620c,_0x4e674c){return new BPromise(function(_0x282eb9,_0x1e0b3d){return client[_0xd9c0('0xe')](_0x5b5d70,_0x4e674c)['then'](function(_0x8d2882){logger[_0xd9c0('0xf')](_0xd9c0('0x10'),_0x1e620c,_0xd9c0('0x11'));logger[_0xd9c0('0x12')](_0xd9c0('0x13'),_0x1e620c,_0xd9c0('0x11'),JSON[_0xd9c0('0x14')](_0x8d2882));if(_0x8d2882[_0xd9c0('0x15')]){if(_0x8d2882[_0xd9c0('0x15')][_0xd9c0('0x16')]===0x1f4){logger[_0xd9c0('0x15')](_0xd9c0('0x10'),_0x1e620c,_0x8d2882[_0xd9c0('0x15')]['message']);return _0x1e0b3d(_0x8d2882[_0xd9c0('0x15')][_0xd9c0('0x17')]);}logger[_0xd9c0('0x15')](_0xd9c0('0x10'),_0x1e620c,_0x8d2882[_0xd9c0('0x15')][_0xd9c0('0x17')]);return _0x282eb9(_0x8d2882[_0xd9c0('0x15')][_0xd9c0('0x17')]);}else{logger[_0xd9c0('0xf')](_0xd9c0('0x10'),_0x1e620c,_0xd9c0('0x11'));_0x282eb9(_0x8d2882[_0xd9c0('0x18')]['message']);}})[_0xd9c0('0x19')](function(_0x46dcc9){logger[_0xd9c0('0x15')](_0xd9c0('0x10'),_0x1e620c,_0x46dcc9);_0x1e0b3d(_0x46dcc9);});});}exports[_0xd9c0('0x1a')]=function(_0x13c666){var _0x40a837=this;return new Promise(function(_0x43ac01,_0x2a8744){return db[_0xd9c0('0x1b')][_0xd9c0('0x1c')]({'raw':_0x13c666[_0xd9c0('0x1d')]?_0x13c666[_0xd9c0('0x1d')]['raw']===undefined?!![]:![]:!![],'where':_0x13c666[_0xd9c0('0x1d')]?_0x13c666['options']['where']||null:null,'attributes':_0x13c666['options']?_0x13c666['options'][_0xd9c0('0x1e')]||null:null,'limit':_0x13c666['options']?_0x13c666['options'][_0xd9c0('0x1f')]||null:null,'include':_0x13c666[_0xd9c0('0x1d')]?_0x13c666['options'][_0xd9c0('0x20')]?_[_0xd9c0('0x21')](_0x13c666[_0xd9c0('0x1d')][_0xd9c0('0x20')],function(_0xaa9215){return{'model':db[_0xaa9215[_0xd9c0('0x22')]],'as':_0xaa9215['as'],'attributes':_0xaa9215[_0xd9c0('0x1e')],'include':_0xaa9215[_0xd9c0('0x20')]?_['map'](_0xaa9215[_0xd9c0('0x20')],function(_0x2e3403){return{'model':db[_0x2e3403[_0xd9c0('0x22')]],'as':_0x2e3403['as'],'attributes':_0x2e3403['attributes'],'include':_0x2e3403[_0xd9c0('0x20')]?_[_0xd9c0('0x21')](_0x2e3403[_0xd9c0('0x20')],function(_0x408895){return{'model':db[_0x408895[_0xd9c0('0x22')]],'as':_0x408895['as'],'attributes':_0x408895[_0xd9c0('0x1e')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x454e91){logger[_0xd9c0('0xf')](_0xd9c0('0x1a'),_0x13c666);logger[_0xd9c0('0x12')](_0xd9c0('0x1a'),_0x13c666,JSON[_0xd9c0('0x14')](_0x454e91));_0x43ac01(_0x454e91);})[_0xd9c0('0x19')](function(_0x1ecb18){logger['error'](_0xd9c0('0x1a'),_0x1ecb18[_0xd9c0('0x17')],_0x13c666);_0x2a8744(_0x40a837[_0xd9c0('0x15')](0x1f4,_0x1ecb18[_0xd9c0('0x17')]));});});};exports[_0xd9c0('0x23')]=function(_0x4603bf){var _0x40c41a=this;return new Promise(function(_0x24f143,_0x4858d6){return db['User']['find']({'raw':_0x4603bf[_0xd9c0('0x1d')]?_0x4603bf[_0xd9c0('0x1d')]['raw']===undefined?!![]:![]:!![],'where':_0x4603bf[_0xd9c0('0x1d')]?_0x4603bf[_0xd9c0('0x1d')]['where']||null:null,'attributes':_0x4603bf[_0xd9c0('0x1d')]?_0x4603bf[_0xd9c0('0x1d')]['attributes']||null:null,'include':_0x4603bf[_0xd9c0('0x1d')]?_0x4603bf[_0xd9c0('0x1d')][_0xd9c0('0x20')]?_['map'](_0x4603bf[_0xd9c0('0x1d')][_0xd9c0('0x20')],function(_0x58ab09){return{'model':db[_0x58ab09[_0xd9c0('0x22')]],'as':_0x58ab09['as'],'attributes':_0x58ab09[_0xd9c0('0x1e')],'include':_0x58ab09[_0xd9c0('0x20')]?_['map'](_0x58ab09[_0xd9c0('0x20')],function(_0x58c8bd){return{'model':db[_0x58c8bd[_0xd9c0('0x22')]],'as':_0x58c8bd['as'],'attributes':_0x58c8bd[_0xd9c0('0x1e')],'include':_0x58c8bd['include']?_[_0xd9c0('0x21')](_0x58c8bd['include'],function(_0x269b7b){return{'model':db[_0x269b7b[_0xd9c0('0x22')]],'as':_0x269b7b['as'],'attributes':_0x269b7b[_0xd9c0('0x1e')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4aa9a0){logger[_0xd9c0('0xf')](_0xd9c0('0x23'),_0x4603bf);logger[_0xd9c0('0x12')]('ShowUser',_0x4603bf,JSON[_0xd9c0('0x14')](_0x4aa9a0));_0x24f143(_0x4aa9a0);})[_0xd9c0('0x19')](function(_0xc7c39f){logger[_0xd9c0('0x15')](_0xd9c0('0x23'),_0xc7c39f[_0xd9c0('0x17')],_0x4603bf);_0x4858d6(_0x40c41a[_0xd9c0('0x15')](0x1f4,_0xc7c39f[_0xd9c0('0x17')]));});});};exports[_0xd9c0('0x24')]=function(_0x59fc44){var _0x3481a8=this;return new Promise(function(_0x5c1258,_0x3ac3a1){var _0x5789d2;return db[_0xd9c0('0x1b')][_0xd9c0('0x25')]({'where':_0x59fc44[_0xd9c0('0x1d')][_0xd9c0('0x26')]||{},'attributes':['id',_0xd9c0('0x27'),'role','internal','interface']})[_0xd9c0('0x28')](function(_0x4a9c90){if(_0x4a9c90){_0x5789d2=_0x4a9c90;return db[_0xd9c0('0x29')][_0xd9c0('0x2a')]({'paused':0x1},{'where':{'UserId':_0x5789d2['id']},'individualHooks':!![]});}})['then'](function(){if(_0x5789d2){return db['MemberReport']['findAll']({'where':{'membername':_0x5789d2[_0xd9c0('0x27')],'type':_0xd9c0('0x2b'),'exitAt':null}});}})[_0xd9c0('0x28')](function(_0x504fdd){if(_0x5789d2){if(_0x504fdd&&_0x504fdd[_0xd9c0('0x2c')]){var _0x14e9e0=moment()[_0xd9c0('0x2d')](_0xd9c0('0x2e'));for(var _0x3d6d42=0x0,_0x28cea8=_0x504fdd[_0xd9c0('0x2c')];_0x3d6d42<_0x28cea8;_0x3d6d42++){_0x504fdd[_0x3d6d42][_0xd9c0('0x2f')]({'exitAt':_0x14e9e0});}}}})['then'](function(){if(_0x5789d2){var _0x4fdbe2=[];var _0x1ab059=utils[_0xd9c0('0x30')]();_0x1ab059[_0xd9c0('0x31')](function(_0xbd8c3e){_0x4fdbe2['push']({'channel':_0xbd8c3e,'membername':_0x5789d2['name'],'interface':_[_0xd9c0('0x32')](_0x5789d2[_0xd9c0('0x33')])?util[_0xd9c0('0x2d')](_0xd9c0('0x34'),_0x5789d2['name']):_0x5789d2[_0xd9c0('0x33')],'type':'PAUSE','enterAt':moment()['format'](_0xd9c0('0x2e')),'data1':_0x59fc44[_0xd9c0('0x35')][_0xd9c0('0x36')]||_0xd9c0('0x37'),'role':_0x5789d2['role'],'internal':_0x5789d2[_0xd9c0('0x38')],'uniqueid':_0x59fc44[_0xd9c0('0x35')][_0xd9c0('0x39')]||null});});return db[_0xd9c0('0x3a')][_0xd9c0('0x3b')](_0x4fdbe2,{'individualHooks':!![]});}})[_0xd9c0('0x28')](function(){if(_0x5789d2){return _0x5789d2[_0xd9c0('0x2a')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x59fc44['body'][_0xd9c0('0x36')]||'DEFAULT\x20PAUSE','lastPauseAt':moment()[_0xd9c0('0x2d')](_0xd9c0('0x2e'))});}})[_0xd9c0('0x28')](function(_0x4cb676){_0x5c1258(_0x4cb676);})[_0xd9c0('0x19')](function(_0x4feab2){_0x3ac3a1(_0x3481a8[_0xd9c0('0x15')](0x1f4,_0x4feab2['message']));});});};exports[_0xd9c0('0x3c')]=function(_0x5ae41c){var _0x5be9a2=this;return new Promise(function(_0x44f135,_0x191f09){var _0x410f0d;return db[_0xd9c0('0x1b')][_0xd9c0('0x3d')]({'where':_0x5ae41c[_0xd9c0('0x1d')][_0xd9c0('0x26')]||{},'attributes':['id',_0xd9c0('0x27')]})[_0xd9c0('0x28')](function(_0x1cf9ff){if(_0x1cf9ff){_0x410f0d=_0x1cf9ff;if(_0x5ae41c['body'][_0xd9c0('0x3e')]&&!utils[_0xd9c0('0x3f')](_0x5ae41c[_0xd9c0('0x35')][_0xd9c0('0x3e')])){throw new Error(_0xd9c0('0x40'));}switch(_0x5ae41c[_0xd9c0('0x35')][_0xd9c0('0x3e')]){case _0xd9c0('0x41'):return db[_0xd9c0('0x29')][_0xd9c0('0x2a')]({'paused':0x0},{'where':{'UserId':_0x410f0d['id']}})[_0xd9c0('0x28')](function(){return db['MemberReport']['find']({'where':{'channel':_0x5ae41c[_0xd9c0('0x35')][_0xd9c0('0x3e')],'membername':_0x410f0d[_0xd9c0('0x27')],'type':'PAUSE','exitAt':null}});})[_0xd9c0('0x28')](function(_0x3d7d55){if(_0x3d7d55){return _0x3d7d55[_0xd9c0('0x2a')]({'exitAt':moment()[_0xd9c0('0x2d')](_0xd9c0('0x2e')),'data2':'system'},{'individualHooks':!![]});}return null;})[_0xd9c0('0x28')](function(){return _0x410f0d['update']({'voicePause':![]});});case _0xd9c0('0x42'):case'chat':case _0xd9c0('0x43'):case _0xd9c0('0x44'):case _0xd9c0('0x45'):case _0xd9c0('0x46'):return db['MemberReport'][_0xd9c0('0x25')]({'where':{'channel':_0x5ae41c[_0xd9c0('0x35')][_0xd9c0('0x3e')],'membername':_0x410f0d[_0xd9c0('0x27')],'type':_0xd9c0('0x2b'),'exitAt':null}})[_0xd9c0('0x28')](function(_0x2b72c2){return _0x2b72c2[_0xd9c0('0x2a')]({'exitAt':moment()[_0xd9c0('0x2d')](_0xd9c0('0x2e')),'data2':_0xd9c0('0x47')},{'individualHooks':!![]});})[_0xd9c0('0x28')](function(){var _0x394006={};_[_0xd9c0('0x48')](_0x394006,util[_0xd9c0('0x2d')](_0xd9c0('0x49'),_0x5ae41c[_0xd9c0('0x35')]['channel'],'Pause'),![]);return _0x410f0d[_0xd9c0('0x2a')](_0x394006);});default:return db[_0xd9c0('0x29')][_0xd9c0('0x2a')]({'paused':0x0},{'where':{'UserId':_0x410f0d['id']}})[_0xd9c0('0x28')](function(){return db[_0xd9c0('0x3a')]['findAll']({'where':{'membername':_0x410f0d[_0xd9c0('0x27')],'type':'PAUSE','exitAt':null}});})[_0xd9c0('0x28')](function(_0x1abb40){var _0x5adf68=[];_0x1abb40[_0xd9c0('0x31')](function(_0x7f1cd5){_0x5adf68[_0xd9c0('0x4a')](_0x7f1cd5[_0xd9c0('0x2a')]({'exitAt':moment()[_0xd9c0('0x2d')](_0xd9c0('0x2e')),'data2':_0xd9c0('0x47')}));});return BPromise[_0xd9c0('0x4b')](_0x5adf68);})[_0xd9c0('0x28')](function(){return _0x410f0d[_0xd9c0('0x2a')]({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![]});});}}})[_0xd9c0('0x28')](function(_0x462169){_0x44f135(_0x462169);})[_0xd9c0('0x19')](function(_0x3cdaf2){_0x191f09(_0x5be9a2[_0xd9c0('0x15')](0x1f4,_0x3cdaf2[_0xd9c0('0x17')]));});});};exports[_0xd9c0('0x4c')]=function(_0xa21b8e){var _0x5f161f=this;return new Promise(function(_0x1a8f94,_0x11080a){var _0x1d99a3;return db[_0xd9c0('0x1b')]['findOne']({'where':_0xa21b8e[_0xd9c0('0x1d')][_0xd9c0('0x26')]||{},'attributes':['id',_0xd9c0('0x27')]})[_0xd9c0('0x28')](function(_0x2ebcd4){if(_0x2ebcd4){_0x1d99a3=_0x2ebcd4;return db['UserVoiceQueueRt']['destroy']({'where':{'membername':_0x1d99a3[_0xd9c0('0x27')]},'individualHooks':!![]});}})['then'](function(){if(_0x1d99a3){return db[_0xd9c0('0x3a')][_0xd9c0('0x1c')]({'where':{'membername':_0x1d99a3[_0xd9c0('0x27')],'exitAt':null}});}})[_0xd9c0('0x28')](function(_0x367e82){if(_0x1d99a3){if(_0x367e82&&_0x367e82[_0xd9c0('0x2c')]){var _0x205e1f=[];_0x367e82['forEach'](function(_0x150fd6){_0x205e1f[_0xd9c0('0x4a')](_0x150fd6[_0xd9c0('0x2a')]({'exitAt':moment()[_0xd9c0('0x2d')](_0xd9c0('0x2e'))}));});return BPromise[_0xd9c0('0x4b')](_0x205e1f);}}})['then'](function(){if(_0x1d99a3){return _0x1d99a3[_0xd9c0('0x2a')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0xd9c0('0x28')](function(_0x1c37e1){_0x1a8f94(_0x1c37e1);})['catch'](function(_0x4c45e3){_0x11080a(_0x5f161f[_0xd9c0('0x15')](0x1f4,_0x4c45e3[_0xd9c0('0x17')]));});});};exports[_0xd9c0('0x4d')]=function(_0x4dac1f){var _0x475fa0=this;return new Promise(function(_0x752921,_0xf8a7e2){var _0x1af541;var _0x16b825;var _0x58f0ae;var _0x13f61c;return db[_0xd9c0('0x1b')][_0xd9c0('0x3d')]({'where':_0x4dac1f[_0xd9c0('0x1d')][_0xd9c0('0x26')]||{},'attributes':['id',_0xd9c0('0x27'),_0xd9c0('0x4e'),_0xd9c0('0x4f'),_0xd9c0('0x50'),'internal',_0xd9c0('0x51'),_0xd9c0('0x33')]})[_0xd9c0('0x28')](function(_0x22b99d){if(_0x22b99d){_0x1af541=_0x22b99d;_0x13f61c=_0x4dac1f[_0xd9c0('0x35')]['interface']?_0x4dac1f[_0xd9c0('0x35')][_0xd9c0('0x33')]:util[_0xd9c0('0x2d')](_0xd9c0('0x34'),_0x1af541['name']);return db[_0xd9c0('0x1b')][_0xd9c0('0x52')]({'where':{'role':_0xd9c0('0x53'),'online':!![],'id':{'$ne':_0x1af541['id']}}});}})[_0xd9c0('0x28')](function(_0x334d65){if(_0x334d65){_0x58f0ae=_0x334d65;return require(_0xd9c0('0x54'))['getLicense']();}})[_0xd9c0('0x28')](function(_0x5db3b8){if(_0x5db3b8&&_0x5db3b8[_0xd9c0('0x55')]&&_0x58f0ae>=_0x5db3b8[_0xd9c0('0x55')]){throw new Error(_0xd9c0('0x56'));}})[_0xd9c0('0x28')](function(){if(_0x1af541){return db[_0xd9c0('0x29')][_0xd9c0('0x57')]({'where':{'membername':_0x1af541[_0xd9c0('0x27')]},'individualHooks':!![]});}})[_0xd9c0('0x28')](function(){if(_0x1af541){return _0x1af541[_0xd9c0('0x58')]({'raw':!![]});}})[_0xd9c0('0x28')](function(_0x2fc225){if(_0x1af541){if(_0x2fc225){var _0x77115d=[];_0x16b825=_0x2fc225;if(_0x16b825[_0xd9c0('0x2c')]){for(var _0x114370=0x0;_0x114370<_0x16b825[_0xd9c0('0x2c')];_0x114370++){_0x77115d['push'](db[_0xd9c0('0x29')]['upsert']({'membername':_0x1af541[_0xd9c0('0x27')],'UserId':_0x1af541['id'],'queue_name':_0x16b825[_0x114370][_0xd9c0('0x27')],'VoiceQueueId':_0x16b825[_0x114370]['id'],'interface':_0x13f61c,'paused':_0x1af541[_0xd9c0('0x51')]||![],'penalty':_0x16b825[_0x114370][_0xd9c0('0x59')]||0x0}));}return BPromise[_0xd9c0('0x4b')](_0x77115d);}}}})[_0xd9c0('0x28')](function(){if(_0x1af541){return db['MemberReport'][_0xd9c0('0x1c')]({'where':{'membername':_0x1af541[_0xd9c0('0x27')],'exitAt':null}});}})['then'](function(_0x5f1efd){if(_0x1af541){if(_0x5f1efd&&_0x5f1efd[_0xd9c0('0x2c')]){var _0x407965=[];_0x5f1efd['forEach'](function(_0x17a8ea){_0x407965[_0xd9c0('0x4a')](_0x17a8ea[_0xd9c0('0x2a')]({'exitAt':moment()[_0xd9c0('0x2d')](_0xd9c0('0x2e'))}));});return BPromise[_0xd9c0('0x4b')](_0x407965);}}})[_0xd9c0('0x28')](function(_0x4a0068){if(_0x1af541){var _0x41e699=[];var _0x428462=[];var _0x7a427e=utils[_0xd9c0('0x30')]();var _0x499463={'membername':_0x1af541[_0xd9c0('0x27')],'interface':_0x13f61c,'enterAt':moment()['format'](_0xd9c0('0x2e')),'role':_0x1af541['role'],'internal':_0x1af541['internal']};_0x7a427e[_0xd9c0('0x31')](function(_0x4a9c9a){_0x41e699['push'](_[_0xd9c0('0x5a')]({'channel':_0x4a9c9a,'type':_0xd9c0('0x5b'),'data1':_0xd9c0('0x5c'),'data2':_0x13f61c},_0x499463));if(_0x1af541[_0xd9c0('0x51')]){_0x428462[_0xd9c0('0x4a')](_[_0xd9c0('0x5a')]({'channel':_0x4a9c9a,'type':_0xd9c0('0x2b'),'data1':_0xd9c0('0x5d')},_0x499463));}});return db[_0xd9c0('0x3a')][_0xd9c0('0x3b')](_0x41e699[_0xd9c0('0x5e')](_0x428462),{'individualHooks':!![]});}})[_0xd9c0('0x28')](function(){if(_0x1af541){return _0x1af541[_0xd9c0('0x2a')]({'online':!![],'lastLoginAt':moment()[_0xd9c0('0x2d')](_0xd9c0('0x2e')),'voicePause':_0x1af541[_0xd9c0('0x51')]||![],'mailPause':_0x1af541[_0xd9c0('0x51')]||![],'chatPause':_0x1af541['loginInPause']||![],'faxPause':_0x1af541[_0xd9c0('0x51')]||![],'smsPause':_0x1af541['loginInPause']||![],'openchannelPause':_0x1af541[_0xd9c0('0x51')]||![],'pauseType':_0x1af541[_0xd9c0('0x51')]?_0xd9c0('0x5d'):null,'lastPauseAt':moment()[_0xd9c0('0x2d')]('YYYY-MM-DD\x20HH:mm:ss'),'interface':_0x13f61c});}})[_0xd9c0('0x28')](function(_0x1f49a8){_0x752921(_0x1f49a8);})[_0xd9c0('0x19')](function(_0x40ba49){_0xf8a7e2(_0x475fa0[_0xd9c0('0x15')](0x1f4,_0x40ba49['message']));});});};
\ No newline at end of file
+var _0x1a6b=['%s%s','Pause','all','LogoutUser','mobile','phone','loginInPause','count','agent','../../config/license/util','getLicense','agents','Maximum\x20login\x20has\x20been\x20reached','upsert','merge','LOGIN','LOGININPAUSE','concat','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','defaults','redis','localhost','socket.io-emitter','./user.socket','register','request','info','User,\x20%s,\x20%s','request\x20sent','debug','User,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','GetUser','options','raw','where','attributes','limit','include','map','model','User','find','ShowUser','name','role','internal','UserVoiceQueueRt','update','then','findAll','length','format','YYYY-MM-DD\x20HH:mm:ss','updateAttributes','getChannels','forEach','push','isNil','interface','SIP/%s','PAUSE','body','type','DEFAULT\x20PAUSE','uniqueid','MemberReport','bulkCreate','UnpauseUser','findOne','channel','Unknown\x20channel','voice','system','mail','chat','fax','sms','openchannel','whatsapp'];(function(_0x3b5b56,_0x2f1f4c){var _0x49824e=function(_0x3e5af0){while(--_0x3e5af0){_0x3b5b56['push'](_0x3b5b56['shift']());}};_0x49824e(++_0x2f1f4c);}(_0x1a6b,0x18a));var _0xb1a6=function(_0x438eee,_0x2945a1){_0x438eee=_0x438eee-0x0;var _0x71b3eb=_0x1a6b[_0x438eee];return _0x71b3eb;};'use strict';var _=require('lodash');var util=require(_0xb1a6('0x0'));var moment=require('moment');var BPromise=require(_0xb1a6('0x1'));var rs=require(_0xb1a6('0x2'));var fs=require('fs');var Redis=require(_0xb1a6('0x3'));var db=require(_0xb1a6('0x4'))['db'];var utils=require(_0xb1a6('0x5'));var logger=require('../../config/logger')(_0xb1a6('0x6'));var config=require(_0xb1a6('0x7'));var jayson=require(_0xb1a6('0x8'));var client=jayson[_0xb1a6('0x9')][_0xb1a6('0xa')]({'port':0x232a});config['redis']=_[_0xb1a6('0xb')](config[_0xb1a6('0xc')],{'host':_0xb1a6('0xd'),'port':0x18eb});var socket=require(_0xb1a6('0xe'))(new Redis(config['redis']));require(_0xb1a6('0xf'))[_0xb1a6('0x10')](socket);function respondWithRpcPromise(_0x2cbd8d,_0x3b675f,_0x2d11a5){return new BPromise(function(_0x1e4e56,_0x4bec4d){return client[_0xb1a6('0x11')](_0x2cbd8d,_0x2d11a5)['then'](function(_0x12d7d2){logger[_0xb1a6('0x12')](_0xb1a6('0x13'),_0x3b675f,_0xb1a6('0x14'));logger[_0xb1a6('0x15')](_0xb1a6('0x16'),_0x3b675f,_0xb1a6('0x14'),JSON[_0xb1a6('0x17')](_0x12d7d2));if(_0x12d7d2[_0xb1a6('0x18')]){if(_0x12d7d2[_0xb1a6('0x18')][_0xb1a6('0x19')]===0x1f4){logger[_0xb1a6('0x18')]('User,\x20%s,\x20%s',_0x3b675f,_0x12d7d2[_0xb1a6('0x18')][_0xb1a6('0x1a')]);return _0x4bec4d(_0x12d7d2[_0xb1a6('0x18')][_0xb1a6('0x1a')]);}logger[_0xb1a6('0x18')](_0xb1a6('0x13'),_0x3b675f,_0x12d7d2[_0xb1a6('0x18')][_0xb1a6('0x1a')]);return _0x1e4e56(_0x12d7d2[_0xb1a6('0x18')][_0xb1a6('0x1a')]);}else{logger[_0xb1a6('0x12')]('User,\x20%s,\x20%s',_0x3b675f,_0xb1a6('0x14'));_0x1e4e56(_0x12d7d2['result'][_0xb1a6('0x1a')]);}})[_0xb1a6('0x1b')](function(_0x38ba03){logger[_0xb1a6('0x18')](_0xb1a6('0x13'),_0x3b675f,_0x38ba03);_0x4bec4d(_0x38ba03);});});}exports[_0xb1a6('0x1c')]=function(_0x3dce08){var _0x5443d1=this;return new Promise(function(_0x59285f,_0x523b24){return db['User']['findAll']({'raw':_0x3dce08[_0xb1a6('0x1d')]?_0x3dce08[_0xb1a6('0x1d')][_0xb1a6('0x1e')]===undefined?!![]:![]:!![],'where':_0x3dce08[_0xb1a6('0x1d')]?_0x3dce08[_0xb1a6('0x1d')][_0xb1a6('0x1f')]||null:null,'attributes':_0x3dce08[_0xb1a6('0x1d')]?_0x3dce08[_0xb1a6('0x1d')][_0xb1a6('0x20')]||null:null,'limit':_0x3dce08[_0xb1a6('0x1d')]?_0x3dce08[_0xb1a6('0x1d')][_0xb1a6('0x21')]||null:null,'include':_0x3dce08[_0xb1a6('0x1d')]?_0x3dce08[_0xb1a6('0x1d')][_0xb1a6('0x22')]?_[_0xb1a6('0x23')](_0x3dce08[_0xb1a6('0x1d')][_0xb1a6('0x22')],function(_0x71c38b){return{'model':db[_0x71c38b[_0xb1a6('0x24')]],'as':_0x71c38b['as'],'attributes':_0x71c38b['attributes'],'include':_0x71c38b[_0xb1a6('0x22')]?_[_0xb1a6('0x23')](_0x71c38b['include'],function(_0x5f153e){return{'model':db[_0x5f153e[_0xb1a6('0x24')]],'as':_0x5f153e['as'],'attributes':_0x5f153e['attributes'],'include':_0x5f153e[_0xb1a6('0x22')]?_[_0xb1a6('0x23')](_0x5f153e[_0xb1a6('0x22')],function(_0x33a22d){return{'model':db[_0x33a22d[_0xb1a6('0x24')]],'as':_0x33a22d['as'],'attributes':_0x33a22d[_0xb1a6('0x20')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x26143d){logger[_0xb1a6('0x12')]('GetUser',_0x3dce08);logger[_0xb1a6('0x15')](_0xb1a6('0x1c'),_0x3dce08,JSON[_0xb1a6('0x17')](_0x26143d));_0x59285f(_0x26143d);})[_0xb1a6('0x1b')](function(_0x30b43f){logger[_0xb1a6('0x18')](_0xb1a6('0x1c'),_0x30b43f[_0xb1a6('0x1a')],_0x3dce08);_0x523b24(_0x5443d1[_0xb1a6('0x18')](0x1f4,_0x30b43f['message']));});});};exports['ShowUser']=function(_0x21539f){var _0x29b2e0=this;return new Promise(function(_0x3435b5,_0x19e869){return db[_0xb1a6('0x25')][_0xb1a6('0x26')]({'raw':_0x21539f[_0xb1a6('0x1d')]?_0x21539f[_0xb1a6('0x1d')][_0xb1a6('0x1e')]===undefined?!![]:![]:!![],'where':_0x21539f[_0xb1a6('0x1d')]?_0x21539f[_0xb1a6('0x1d')][_0xb1a6('0x1f')]||null:null,'attributes':_0x21539f[_0xb1a6('0x1d')]?_0x21539f['options']['attributes']||null:null,'include':_0x21539f[_0xb1a6('0x1d')]?_0x21539f[_0xb1a6('0x1d')][_0xb1a6('0x22')]?_[_0xb1a6('0x23')](_0x21539f['options']['include'],function(_0x381380){return{'model':db[_0x381380[_0xb1a6('0x24')]],'as':_0x381380['as'],'attributes':_0x381380[_0xb1a6('0x20')],'include':_0x381380[_0xb1a6('0x22')]?_[_0xb1a6('0x23')](_0x381380[_0xb1a6('0x22')],function(_0xfa12c2){return{'model':db[_0xfa12c2[_0xb1a6('0x24')]],'as':_0xfa12c2['as'],'attributes':_0xfa12c2['attributes'],'include':_0xfa12c2[_0xb1a6('0x22')]?_['map'](_0xfa12c2['include'],function(_0x88181b){return{'model':db[_0x88181b['model']],'as':_0x88181b['as'],'attributes':_0x88181b[_0xb1a6('0x20')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x96bff4){logger['info'](_0xb1a6('0x27'),_0x21539f);logger[_0xb1a6('0x15')](_0xb1a6('0x27'),_0x21539f,JSON[_0xb1a6('0x17')](_0x96bff4));_0x3435b5(_0x96bff4);})[_0xb1a6('0x1b')](function(_0x3ea743){logger[_0xb1a6('0x18')](_0xb1a6('0x27'),_0x3ea743[_0xb1a6('0x1a')],_0x21539f);_0x19e869(_0x29b2e0[_0xb1a6('0x18')](0x1f4,_0x3ea743[_0xb1a6('0x1a')]));});});};exports['PauseUser']=function(_0x152817){var _0x122d36=this;return new Promise(function(_0x403fb3,_0x3532d9){var _0x3cca2b;return db[_0xb1a6('0x25')][_0xb1a6('0x26')]({'where':_0x152817[_0xb1a6('0x1d')]['where']||{},'attributes':['id',_0xb1a6('0x28'),_0xb1a6('0x29'),_0xb1a6('0x2a'),'interface']})['then'](function(_0x2cdbb2){if(_0x2cdbb2){_0x3cca2b=_0x2cdbb2;return db[_0xb1a6('0x2b')][_0xb1a6('0x2c')]({'paused':0x1},{'where':{'UserId':_0x3cca2b['id']},'individualHooks':!![]});}})[_0xb1a6('0x2d')](function(){if(_0x3cca2b){return db['MemberReport'][_0xb1a6('0x2e')]({'where':{'membername':_0x3cca2b['name'],'type':'PAUSE','exitAt':null}});}})[_0xb1a6('0x2d')](function(_0x5c79ee){if(_0x3cca2b){if(_0x5c79ee&&_0x5c79ee[_0xb1a6('0x2f')]){var _0x1a395e=moment()[_0xb1a6('0x30')](_0xb1a6('0x31'));for(var _0x483699=0x0,_0x583cf4=_0x5c79ee[_0xb1a6('0x2f')];_0x483699<_0x583cf4;_0x483699++){_0x5c79ee[_0x483699][_0xb1a6('0x32')]({'exitAt':_0x1a395e});}}}})['then'](function(){if(_0x3cca2b){var _0x548191=[];var _0x35f0c5=utils[_0xb1a6('0x33')]();_0x35f0c5[_0xb1a6('0x34')](function(_0x195e79){_0x548191[_0xb1a6('0x35')]({'channel':_0x195e79,'membername':_0x3cca2b[_0xb1a6('0x28')],'interface':_[_0xb1a6('0x36')](_0x3cca2b[_0xb1a6('0x37')])?util[_0xb1a6('0x30')](_0xb1a6('0x38'),_0x3cca2b[_0xb1a6('0x28')]):_0x3cca2b[_0xb1a6('0x37')],'type':_0xb1a6('0x39'),'enterAt':moment()[_0xb1a6('0x30')](_0xb1a6('0x31')),'data1':_0x152817[_0xb1a6('0x3a')][_0xb1a6('0x3b')]||_0xb1a6('0x3c'),'role':_0x3cca2b[_0xb1a6('0x29')],'internal':_0x3cca2b[_0xb1a6('0x2a')],'uniqueid':_0x152817[_0xb1a6('0x3a')][_0xb1a6('0x3d')]||null});});return db[_0xb1a6('0x3e')][_0xb1a6('0x3f')](_0x548191,{'individualHooks':!![]});}})[_0xb1a6('0x2d')](function(){if(_0x3cca2b){return _0x3cca2b['update']({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x152817[_0xb1a6('0x3a')][_0xb1a6('0x3b')]||_0xb1a6('0x3c'),'lastPauseAt':moment()[_0xb1a6('0x30')](_0xb1a6('0x31'))});}})['then'](function(_0x5ede17){_0x403fb3(_0x5ede17);})[_0xb1a6('0x1b')](function(_0x18e648){_0x3532d9(_0x122d36['error'](0x1f4,_0x18e648['message']));});});};exports[_0xb1a6('0x40')]=function(_0xa74bc7){var _0x3daad4=this;return new Promise(function(_0x4bb979,_0x4d7416){var _0x1fb336;return db[_0xb1a6('0x25')][_0xb1a6('0x41')]({'where':_0xa74bc7[_0xb1a6('0x1d')]['where']||{},'attributes':['id','name']})[_0xb1a6('0x2d')](function(_0x5e9673){if(_0x5e9673){_0x1fb336=_0x5e9673;if(_0xa74bc7[_0xb1a6('0x3a')][_0xb1a6('0x42')]&&!utils['isValidChannel'](_0xa74bc7['body'][_0xb1a6('0x42')])){throw new Error(_0xb1a6('0x43'));}switch(_0xa74bc7[_0xb1a6('0x3a')][_0xb1a6('0x42')]){case _0xb1a6('0x44'):return db[_0xb1a6('0x2b')][_0xb1a6('0x2c')]({'paused':0x0},{'where':{'UserId':_0x1fb336['id']}})[_0xb1a6('0x2d')](function(){return db[_0xb1a6('0x3e')]['find']({'where':{'channel':_0xa74bc7[_0xb1a6('0x3a')]['channel'],'membername':_0x1fb336[_0xb1a6('0x28')],'type':_0xb1a6('0x39'),'exitAt':null}});})['then'](function(_0x10f243){if(_0x10f243){return _0x10f243[_0xb1a6('0x2c')]({'exitAt':moment()['format'](_0xb1a6('0x31')),'data2':_0xb1a6('0x45')},{'individualHooks':!![]});}return null;})[_0xb1a6('0x2d')](function(){return _0x1fb336[_0xb1a6('0x2c')]({'voicePause':![]});});case _0xb1a6('0x46'):case _0xb1a6('0x47'):case _0xb1a6('0x48'):case _0xb1a6('0x49'):case _0xb1a6('0x4a'):case _0xb1a6('0x4b'):return db[_0xb1a6('0x3e')][_0xb1a6('0x26')]({'where':{'channel':_0xa74bc7[_0xb1a6('0x3a')][_0xb1a6('0x42')],'membername':_0x1fb336[_0xb1a6('0x28')],'type':_0xb1a6('0x39'),'exitAt':null}})[_0xb1a6('0x2d')](function(_0x43374d){return _0x43374d[_0xb1a6('0x2c')]({'exitAt':moment()[_0xb1a6('0x30')]('YYYY-MM-DD\x20HH:mm:ss'),'data2':_0xb1a6('0x45')},{'individualHooks':!![]});})[_0xb1a6('0x2d')](function(){var _0x113f0f={};_['set'](_0x113f0f,util[_0xb1a6('0x30')](_0xb1a6('0x4c'),_0xa74bc7[_0xb1a6('0x3a')][_0xb1a6('0x42')],_0xb1a6('0x4d')),![]);return _0x1fb336[_0xb1a6('0x2c')](_0x113f0f);});default:return db[_0xb1a6('0x2b')][_0xb1a6('0x2c')]({'paused':0x0},{'where':{'UserId':_0x1fb336['id']}})[_0xb1a6('0x2d')](function(){return db[_0xb1a6('0x3e')][_0xb1a6('0x2e')]({'where':{'membername':_0x1fb336[_0xb1a6('0x28')],'type':_0xb1a6('0x39'),'exitAt':null}});})[_0xb1a6('0x2d')](function(_0x1b995d){var _0x4e38ed=[];_0x1b995d['forEach'](function(_0x592492){_0x4e38ed['push'](_0x592492[_0xb1a6('0x2c')]({'exitAt':moment()[_0xb1a6('0x30')](_0xb1a6('0x31')),'data2':'system'}));});return BPromise[_0xb1a6('0x4e')](_0x4e38ed);})['then'](function(){return _0x1fb336[_0xb1a6('0x2c')]({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![]});});}}})[_0xb1a6('0x2d')](function(_0x193f9d){_0x4bb979(_0x193f9d);})[_0xb1a6('0x1b')](function(_0x7de957){_0x4d7416(_0x3daad4[_0xb1a6('0x18')](0x1f4,_0x7de957[_0xb1a6('0x1a')]));});});};exports[_0xb1a6('0x4f')]=function(_0x2ee6b0){var _0x2b1bfa=this;return new Promise(function(_0x2389d2,_0x7f2c6a){var _0x4d35f2;return db['User'][_0xb1a6('0x41')]({'where':_0x2ee6b0[_0xb1a6('0x1d')][_0xb1a6('0x1f')]||{},'attributes':['id',_0xb1a6('0x28')]})['then'](function(_0x32de14){if(_0x32de14){_0x4d35f2=_0x32de14;return db[_0xb1a6('0x2b')]['destroy']({'where':{'membername':_0x4d35f2[_0xb1a6('0x28')]},'individualHooks':!![]});}})[_0xb1a6('0x2d')](function(){if(_0x4d35f2){return db['MemberReport'][_0xb1a6('0x2e')]({'where':{'membername':_0x4d35f2['name'],'exitAt':null}});}})['then'](function(_0x5c75a1){if(_0x4d35f2){if(_0x5c75a1&&_0x5c75a1['length']){var _0x4f90af=[];_0x5c75a1['forEach'](function(_0x11e8f9){_0x4f90af['push'](_0x11e8f9[_0xb1a6('0x2c')]({'exitAt':moment()['format'](_0xb1a6('0x31'))}));});return BPromise[_0xb1a6('0x4e')](_0x4f90af);}}})[_0xb1a6('0x2d')](function(){if(_0x4d35f2){return _0x4d35f2['update']({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})['then'](function(_0x561199){_0x2389d2(_0x561199);})[_0xb1a6('0x1b')](function(_0x36ab61){_0x7f2c6a(_0x2b1bfa[_0xb1a6('0x18')](0x1f4,_0x36ab61[_0xb1a6('0x1a')]));});});};exports['LoginUser']=function(_0x3aec06){var _0x1c379f=this;return new Promise(function(_0x4ffd3c,_0x1ac058){var _0x2ea7fa;var _0x19a6f8;var _0x5f341d;var _0x50be5f;return db[_0xb1a6('0x25')][_0xb1a6('0x41')]({'where':_0x3aec06['options']['where']||{},'attributes':['id',_0xb1a6('0x28'),_0xb1a6('0x29'),_0xb1a6('0x50'),_0xb1a6('0x51'),_0xb1a6('0x2a'),_0xb1a6('0x52'),'interface']})['then'](function(_0x40b4ba){if(_0x40b4ba){_0x2ea7fa=_0x40b4ba;_0x50be5f=_0x3aec06[_0xb1a6('0x3a')][_0xb1a6('0x37')]?_0x3aec06[_0xb1a6('0x3a')][_0xb1a6('0x37')]:util['format'](_0xb1a6('0x38'),_0x2ea7fa[_0xb1a6('0x28')]);return db[_0xb1a6('0x25')][_0xb1a6('0x53')]({'where':{'role':_0xb1a6('0x54'),'online':!![],'id':{'$ne':_0x2ea7fa['id']}}});}})[_0xb1a6('0x2d')](function(_0x507d07){if(_0x507d07){_0x5f341d=_0x507d07;return require(_0xb1a6('0x55'))[_0xb1a6('0x56')]();}})[_0xb1a6('0x2d')](function(_0x561b55){if(_0x561b55&&_0x561b55['agents']&&_0x5f341d>=_0x561b55[_0xb1a6('0x57')]){throw new Error(_0xb1a6('0x58'));}})[_0xb1a6('0x2d')](function(){if(_0x2ea7fa){return db['UserVoiceQueueRt']['destroy']({'where':{'membername':_0x2ea7fa[_0xb1a6('0x28')]},'individualHooks':!![]});}})[_0xb1a6('0x2d')](function(){if(_0x2ea7fa){return _0x2ea7fa['getVoiceQueues']({'raw':!![]});}})['then'](function(_0x2ff62c){if(_0x2ea7fa){if(_0x2ff62c){var _0x25e51c=[];_0x19a6f8=_0x2ff62c;if(_0x19a6f8[_0xb1a6('0x2f')]){for(var _0x4932ae=0x0;_0x4932ae<_0x19a6f8[_0xb1a6('0x2f')];_0x4932ae++){_0x25e51c[_0xb1a6('0x35')](db[_0xb1a6('0x2b')][_0xb1a6('0x59')]({'membername':_0x2ea7fa[_0xb1a6('0x28')],'UserId':_0x2ea7fa['id'],'queue_name':_0x19a6f8[_0x4932ae][_0xb1a6('0x28')],'VoiceQueueId':_0x19a6f8[_0x4932ae]['id'],'interface':_0x50be5f,'paused':_0x2ea7fa[_0xb1a6('0x52')]||![],'penalty':_0x19a6f8[_0x4932ae]['UserVoiceQueue.penalty']||0x0}));}return BPromise[_0xb1a6('0x4e')](_0x25e51c);}}}})[_0xb1a6('0x2d')](function(){if(_0x2ea7fa){return db[_0xb1a6('0x3e')]['findAll']({'where':{'membername':_0x2ea7fa[_0xb1a6('0x28')],'exitAt':null}});}})[_0xb1a6('0x2d')](function(_0x45f4a0){if(_0x2ea7fa){if(_0x45f4a0&&_0x45f4a0['length']){var _0x27e0b1=[];_0x45f4a0[_0xb1a6('0x34')](function(_0x28b995){_0x27e0b1['push'](_0x28b995[_0xb1a6('0x2c')]({'exitAt':moment()['format'](_0xb1a6('0x31'))}));});return BPromise[_0xb1a6('0x4e')](_0x27e0b1);}}})[_0xb1a6('0x2d')](function(_0x237be3){if(_0x2ea7fa){var _0x429196=[];var _0x43e6cd=[];var _0x56f17a=utils['getChannels']();var _0x2d34e2={'membername':_0x2ea7fa[_0xb1a6('0x28')],'interface':_0x50be5f,'enterAt':moment()[_0xb1a6('0x30')](_0xb1a6('0x31')),'role':_0x2ea7fa[_0xb1a6('0x29')],'internal':_0x2ea7fa[_0xb1a6('0x2a')]};_0x56f17a[_0xb1a6('0x34')](function(_0x157330){_0x429196['push'](_[_0xb1a6('0x5a')]({'channel':_0x157330,'type':_0xb1a6('0x5b'),'data1':'callysquare','data2':_0x50be5f},_0x2d34e2));if(_0x2ea7fa[_0xb1a6('0x52')]){_0x43e6cd[_0xb1a6('0x35')](_[_0xb1a6('0x5a')]({'channel':_0x157330,'type':_0xb1a6('0x39'),'data1':_0xb1a6('0x5c')},_0x2d34e2));}});return db[_0xb1a6('0x3e')][_0xb1a6('0x3f')](_0x429196[_0xb1a6('0x5d')](_0x43e6cd),{'individualHooks':!![]});}})[_0xb1a6('0x2d')](function(){if(_0x2ea7fa){return _0x2ea7fa[_0xb1a6('0x2c')]({'online':!![],'lastLoginAt':moment()[_0xb1a6('0x30')](_0xb1a6('0x31')),'voicePause':_0x2ea7fa[_0xb1a6('0x52')]||![],'mailPause':_0x2ea7fa['loginInPause']||![],'chatPause':_0x2ea7fa[_0xb1a6('0x52')]||![],'faxPause':_0x2ea7fa[_0xb1a6('0x52')]||![],'smsPause':_0x2ea7fa[_0xb1a6('0x52')]||![],'openchannelPause':_0x2ea7fa[_0xb1a6('0x52')]||![],'pauseType':_0x2ea7fa[_0xb1a6('0x52')]?_0xb1a6('0x5c'):null,'lastPauseAt':moment()[_0xb1a6('0x30')](_0xb1a6('0x31')),'interface':_0x50be5f});}})[_0xb1a6('0x2d')](function(_0x253fe2){_0x4ffd3c(_0x253fe2);})['catch'](function(_0x207e0b){_0x1ac058(_0x1c379f[_0xb1a6('0x18')](0x1f4,_0x207e0b['message']));});});};
\ No newline at end of file
index 1699dca..37dec35 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf2db=['update','register','./user.events','save','remove'];(function(_0x45a53d,_0x4c0850){var _0x5d0e30=function(_0x358cca){while(--_0x358cca){_0x45a53d['push'](_0x45a53d['shift']());}};_0x5d0e30(++_0x4c0850);}(_0xf2db,0xbb));var _0xbf2d=function(_0xf33ecf,_0x3e1140){_0xf33ecf=_0xf33ecf-0x0;var _0x152ada=_0xf2db[_0xf33ecf];return _0x152ada;};'use strict';var UserEvents=require(_0xbf2d('0x0'));var events=[_0xbf2d('0x1'),_0xbf2d('0x2'),_0xbf2d('0x3')];function createListener(_0xb7e0ca,_0x5a0853){return function(_0x3eefb8){_0x5a0853['emit'](_0xb7e0ca,_0x3eefb8);};}function removeListener(_0x1e577f,_0x2fa7b5){return function(){UserEvents['removeListener'](_0x1e577f,_0x2fa7b5);};}exports[_0xbf2d('0x4')]=function(_0x4109e2){for(var _0x219068=0x0,_0x37d8dc=events['length'];_0x219068<_0x37d8dc;_0x219068++){var _0x22e79e=events[_0x219068];var _0x5f1d3c=createListener('user:'+_0x22e79e,_0x4109e2);UserEvents['on'](_0x22e79e,_0x5f1d3c);}};
\ No newline at end of file
+var _0xed13=['./user.events','save','remove','emit','length','user:'];(function(_0x3cd8ea,_0x500ac8){var _0xfb78b3=function(_0x533f1a){while(--_0x533f1a){_0x3cd8ea['push'](_0x3cd8ea['shift']());}};_0xfb78b3(++_0x500ac8);}(_0xed13,0x108));var _0x3ed1=function(_0x1963eb,_0x2fb154){_0x1963eb=_0x1963eb-0x0;var _0xc6afcc=_0xed13[_0x1963eb];return _0xc6afcc;};'use strict';var UserEvents=require(_0x3ed1('0x0'));var events=[_0x3ed1('0x1'),_0x3ed1('0x2'),'update'];function createListener(_0x1dfcf4,_0xd30a05){return function(_0x5a5c3a){_0xd30a05[_0x3ed1('0x3')](_0x1dfcf4,_0x5a5c3a);};}function removeListener(_0x544efa,_0x3d2a70){return function(){UserEvents['removeListener'](_0x544efa,_0x3d2a70);};}exports['register']=function(_0x272cf3){for(var _0x28578f=0x0,_0x54c57a=events[_0x3ed1('0x4')];_0x28578f<_0x54c57a;_0x28578f++){var _0x1462f7=events[_0x28578f];var _0x272b20=createListener(_0x3ed1('0x5')+_0x1462f7,_0x272cf3);UserEvents['on'](_0x1462f7,_0x272b20);}};
\ No newline at end of file
index 1da7469..a858d07 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','multer','util'];(function(_0x4b635a,_0x8d01b2){var _0x3de488=function(_0x2b03a6){while(--_0x2b03a6){_0x4b635a['push'](_0x4b635a['shift']());}};_0x3de488(++_0x8d01b2);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));module['exports']=router;
\ No newline at end of file
+var _0x9c44=['express','Router','fs-extra','../../components/auth/service','exports','path','connect-timeout'];(function(_0x13de53,_0x5cbc31){var _0x13c459=function(_0x2270ca){while(--_0x2270ca){_0x13de53['push'](_0x13de53['shift']());}};_0x13c459(++_0x5cbc31);}(_0x9c44,0x178));var _0x49c4=function(_0x8c43de,_0x90ff31){_0x8c43de=_0x8c43de-0x0;var _0xa6591b=_0x9c44[_0x8c43de];return _0xa6591b;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x49c4('0x0'));var timeout=require(_0x49c4('0x1'));var express=require(_0x49c4('0x2'));var router=express[_0x49c4('0x3')]();var fs_extra=require(_0x49c4('0x4'));var auth=require(_0x49c4('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');module[_0x49c4('0x6')]=router;
\ No newline at end of file
index ab04514..7966934 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x036b=['INTEGER','sequelize','exports'];(function(_0x5d4553,_0x3505cf){var _0x541b42=function(_0x41ce53){while(--_0x41ce53){_0x5d4553['push'](_0x5d4553['shift']());}};_0x541b42(++_0x3505cf);}(_0x036b,0x145));var _0xb036=function(_0x39ddd4,_0x38ce35){_0x39ddd4=_0x39ddd4-0x0;var _0x3d642a=_0x036b[_0x39ddd4];return _0x3d642a;};'use strict';var Sequelize=require(_0xb036('0x0'));module[_0xb036('0x1')]={'penalty':{'type':Sequelize[_0xb036('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xf249=['sequelize','exports'];(function(_0x189d43,_0x371cdb){var _0x178ba0=function(_0x51671b){while(--_0x51671b){_0x189d43['push'](_0x189d43['shift']());}};_0x178ba0(++_0x371cdb);}(_0xf249,0x172));var _0x9f24=function(_0x4876d8,_0x5861b0){_0x4876d8=_0x4876d8-0x0;var _0x1b10e1=_0xf249[_0x4876d8];return _0x1b10e1;};'use strict';var Sequelize=require(_0x9f24('0x0'));module[_0x9f24('0x1')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index 62454a0..04d5872 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b78=['bluebird','request-promise','path','rimraf','exports','user_has_chat_queues','util','../../config/logger','moment'];(function(_0x4bdf64,_0x3022b2){var _0x9a1a19=function(_0x4e551b){while(--_0x4e551b){_0x4bdf64['push'](_0x4bdf64['shift']());}};_0x9a1a19(++_0x3022b2);}(_0x4b78,0x84));var _0x84b7=function(_0x2b7ef8,_0x3b4a13){_0x2b7ef8=_0x2b7ef8-0x0;var _0x156a34=_0x4b78[_0x2b7ef8];return _0x156a34;};'use strict';var _=require('lodash');var util=require(_0x84b7('0x0'));var logger=require(_0x84b7('0x1'))('api');var moment=require(_0x84b7('0x2'));var BPromise=require(_0x84b7('0x3'));var rp=require(_0x84b7('0x4'));var fs=require('fs');var path=require(_0x84b7('0x5'));var rimraf=require(_0x84b7('0x6'));var config=require('../../config/environment');var attributes=require('./userChatQueue.attributes');module[_0x84b7('0x7')]=function(_0x582ca1,_0x2c42de){return _0x582ca1['define']('UserChatQueue',attributes,{'tableName':_0x84b7('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5964=['bluebird','path','rimraf','./userChatQueue.attributes','exports','define','user_has_chat_queues','lodash','../../config/logger','api','moment'];(function(_0x49638a,_0x1e382b){var _0x1b1037=function(_0xfd768a){while(--_0xfd768a){_0x49638a['push'](_0x49638a['shift']());}};_0x1b1037(++_0x1e382b);}(_0x5964,0x1b4));var _0x4596=function(_0x4f027d,_0x3f9587){_0x4f027d=_0x4f027d-0x0;var _0xc46890=_0x5964[_0x4f027d];return _0xc46890;};'use strict';var _=require(_0x4596('0x0'));var util=require('util');var logger=require(_0x4596('0x1'))(_0x4596('0x2'));var moment=require(_0x4596('0x3'));var BPromise=require(_0x4596('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x4596('0x5'));var rimraf=require(_0x4596('0x6'));var config=require('../../config/environment');var attributes=require(_0x4596('0x7'));module[_0x4596('0x8')]=function(_0x242fc3,_0x42890a){return _0x242fc3[_0x4596('0x9')]('UserChatQueue',attributes,{'tableName':_0x4596('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 32fd5e1..e9aef6b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a19=['moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','UserChatQueue,\x20%s,\x20%s','request\x20sent','UserChatQueue,\x20%s,\x20%s,\x20%s','error','message','catch','lodash','util'];(function(_0x1e6300,_0x24289b){var _0x1c7e8a=function(_0x1d47db){while(--_0x1d47db){_0x1e6300['push'](_0x1e6300['shift']());}};_0x1c7e8a(++_0x24289b);}(_0x3a19,0x178));var _0x93a1=function(_0x56479d,_0x5ea806){_0x56479d=_0x56479d-0x0;var _0x5bbe4e=_0x3a19[_0x56479d];return _0x5bbe4e;};'use strict';var _=require(_0x93a1('0x0'));var util=require(_0x93a1('0x1'));var moment=require(_0x93a1('0x2'));var BPromise=require(_0x93a1('0x3'));var rs=require(_0x93a1('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x93a1('0x5'))['db'];var utils=require(_0x93a1('0x6'));var logger=require(_0x93a1('0x7'))(_0x93a1('0x8'));var config=require(_0x93a1('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x93a1('0xa')][_0x93a1('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4ede89,_0x305290,_0x1d73da){return new BPromise(function(_0x31b0c6,_0x3a5864){return client[_0x93a1('0xc')](_0x4ede89,_0x1d73da)[_0x93a1('0xd')](function(_0x2f880d){logger[_0x93a1('0xe')](_0x93a1('0xf'),_0x305290,_0x93a1('0x10'));logger['debug'](_0x93a1('0x11'),_0x305290,_0x93a1('0x10'),JSON['stringify'](_0x2f880d));if(_0x2f880d[_0x93a1('0x12')]){if(_0x2f880d[_0x93a1('0x12')]['code']===0x1f4){logger['error'](_0x93a1('0xf'),_0x305290,_0x2f880d['error'][_0x93a1('0x13')]);return _0x3a5864(_0x2f880d[_0x93a1('0x12')][_0x93a1('0x13')]);}logger['error']('UserChatQueue,\x20%s,\x20%s',_0x305290,_0x2f880d['error'][_0x93a1('0x13')]);return _0x31b0c6(_0x2f880d['error'][_0x93a1('0x13')]);}else{logger[_0x93a1('0xe')](_0x93a1('0xf'),_0x305290,_0x93a1('0x10'));_0x31b0c6(_0x2f880d['result'][_0x93a1('0x13')]);}})[_0x93a1('0x14')](function(_0x6f2214){logger[_0x93a1('0x12')](_0x93a1('0xf'),_0x305290,_0x6f2214);_0x3a5864(_0x6f2214);});});}
\ No newline at end of file
+var _0x9ed1=['catch','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','request\x20sent','debug','UserChatQueue,\x20%s,\x20%s,\x20%s','error','UserChatQueue,\x20%s,\x20%s','message','result'];(function(_0x22baaa,_0x64526b){var _0x4a40bc=function(_0x4f97f1){while(--_0x4f97f1){_0x22baaa['push'](_0x22baaa['shift']());}};_0x4a40bc(++_0x64526b);}(_0x9ed1,0x190));var _0x19ed=function(_0x5e6f21,_0x55bfb2){_0x5e6f21=_0x5e6f21-0x0;var _0x492c9c=_0x9ed1[_0x5e6f21];return _0x492c9c;};'use strict';var _=require('lodash');var util=require(_0x19ed('0x0'));var moment=require(_0x19ed('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x19ed('0x2'));var db=require(_0x19ed('0x3'))['db'];var utils=require(_0x19ed('0x4'));var logger=require(_0x19ed('0x5'))(_0x19ed('0x6'));var config=require('../../config/environment');var jayson=require(_0x19ed('0x7'));var client=jayson[_0x19ed('0x8')][_0x19ed('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x312540,_0x3a0a2e,_0x24f554){return new BPromise(function(_0x50bb27,_0x465208){return client[_0x19ed('0xa')](_0x312540,_0x24f554)[_0x19ed('0xb')](function(_0x3fb880){logger[_0x19ed('0xc')]('UserChatQueue,\x20%s,\x20%s',_0x3a0a2e,_0x19ed('0xd'));logger[_0x19ed('0xe')](_0x19ed('0xf'),_0x3a0a2e,_0x19ed('0xd'),JSON['stringify'](_0x3fb880));if(_0x3fb880[_0x19ed('0x10')]){if(_0x3fb880[_0x19ed('0x10')]['code']===0x1f4){logger[_0x19ed('0x10')](_0x19ed('0x11'),_0x3a0a2e,_0x3fb880[_0x19ed('0x10')][_0x19ed('0x12')]);return _0x465208(_0x3fb880['error']['message']);}logger[_0x19ed('0x10')](_0x19ed('0x11'),_0x3a0a2e,_0x3fb880[_0x19ed('0x10')]['message']);return _0x50bb27(_0x3fb880[_0x19ed('0x10')][_0x19ed('0x12')]);}else{logger[_0x19ed('0xc')](_0x19ed('0x11'),_0x3a0a2e,_0x19ed('0xd'));_0x50bb27(_0x3fb880[_0x19ed('0x13')][_0x19ed('0x12')]);}})[_0x19ed('0x14')](function(_0x4f6f0b){logger['error'](_0x19ed('0x11'),_0x3a0a2e,_0x4f6f0b);_0x465208(_0x4f6f0b);});});}
\ No newline at end of file
index 6a8d024..cf08195 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(_0xc14279,_0x21d03b){var _0x4c0351=function(_0x3ff0fd){while(--_0x3ff0fd){_0xc14279['push'](_0xc14279['shift']());}};_0x4c0351(++_0x21d03b);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x163040,_0x38a58c){_0x163040=_0x163040-0x0;var _0x364667=_0xcb91[_0x163040];return _0x364667;};'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 _0x9c44=['express','Router','fs-extra','../../components/auth/service','exports','path','connect-timeout'];(function(_0x4fdcc0,_0x560a01){var _0xc0ce94=function(_0x36ea12){while(--_0x36ea12){_0x4fdcc0['push'](_0x4fdcc0['shift']());}};_0xc0ce94(++_0x560a01);}(_0x9c44,0x178));var _0x49c4=function(_0x18ab2a,_0x4debcd){_0x18ab2a=_0x18ab2a-0x0;var _0x16dcee=_0x9c44[_0x18ab2a];return _0x16dcee;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x49c4('0x0'));var timeout=require(_0x49c4('0x1'));var express=require(_0x49c4('0x2'));var router=express[_0x49c4('0x3')]();var fs_extra=require(_0x49c4('0x4'));var auth=require(_0x49c4('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');module[_0x49c4('0x6')]=router;
\ No newline at end of file
index 6b65b28..9072cfb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xccac=['sequelize','INTEGER','STRING'];(function(_0x13737d,_0x2f02ab){var _0x212058=function(_0x31f72c){while(--_0x31f72c){_0x13737d['push'](_0x13737d['shift']());}};_0x212058(++_0x2f02ab);}(_0xccac,0x12c));var _0xccca=function(_0x4c8185,_0x3a1b3f){_0x4c8185=_0x4c8185-0x0;var _0x438196=_0xccac[_0x4c8185];return _0x438196;};'use strict';var Sequelize=require(_0xccca('0x0'));module['exports']={'penalty':{'type':Sequelize[_0xccca('0x1')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0xccca('0x1')],'defaultValue':0x0},'queue':{'type':Sequelize[_0xccca('0x2')]}};
\ No newline at end of file
+var _0xc89d=['sequelize','exports','STRING'];(function(_0x19259d,_0x2f963b){var _0x5989d4=function(_0x1eab08){while(--_0x1eab08){_0x19259d['push'](_0x19259d['shift']());}};_0x5989d4(++_0x2f963b);}(_0xc89d,0xe7));var _0xdc89=function(_0x13a330,_0x26b966){_0x13a330=_0x13a330-0x0;var _0x3927ec=_0xc89d[_0x13a330];return _0x3927ec;};'use strict';var Sequelize=require(_0xdc89('0x0'));module[_0xdc89('0x1')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'assigned':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'queue':{'type':Sequelize[_0xdc89('0x2')]}};
\ No newline at end of file
index 5a103ac..ab85784 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb1f9=['user_has_fax_queues','util','moment','bluebird','request-promise','rimraf','../../config/environment','./userFaxQueue.attributes','exports','define','UserFaxQueue'];(function(_0x31b48b,_0x36ce5b){var _0x3843f7=function(_0x446310){while(--_0x446310){_0x31b48b['push'](_0x31b48b['shift']());}};_0x3843f7(++_0x36ce5b);}(_0xb1f9,0xc7));var _0x9b1f=function(_0x9551ae,_0x5176cc){_0x9551ae=_0x9551ae-0x0;var _0x2d2ae2=_0xb1f9[_0x9551ae];return _0x2d2ae2;};'use strict';var _=require('lodash');var util=require(_0x9b1f('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0x9b1f('0x1'));var BPromise=require(_0x9b1f('0x2'));var rp=require(_0x9b1f('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x9b1f('0x4'));var config=require(_0x9b1f('0x5'));var attributes=require(_0x9b1f('0x6'));module[_0x9b1f('0x7')]=function(_0x3ad95d,_0x5d1fb5){return _0x3ad95d[_0x9b1f('0x8')](_0x9b1f('0x9'),attributes,{'tableName':_0x9b1f('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3d6e=['rimraf','../../config/environment','./userFaxQueue.attributes','exports','define','UserFaxQueue','user_has_fax_queues','lodash','api','bluebird','request-promise','path'];(function(_0x507172,_0x52f3ce){var _0x2e3ef5=function(_0x52a31f){while(--_0x52a31f){_0x507172['push'](_0x507172['shift']());}};_0x2e3ef5(++_0x52f3ce);}(_0x3d6e,0x1c3));var _0xe3d6=function(_0x4c12ec,_0x2e9103){_0x4c12ec=_0x4c12ec-0x0;var _0x3ae42c=_0x3d6e[_0x4c12ec];return _0x3ae42c;};'use strict';var _=require(_0xe3d6('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xe3d6('0x1'));var moment=require('moment');var BPromise=require(_0xe3d6('0x2'));var rp=require(_0xe3d6('0x3'));var fs=require('fs');var path=require(_0xe3d6('0x4'));var rimraf=require(_0xe3d6('0x5'));var config=require(_0xe3d6('0x6'));var attributes=require(_0xe3d6('0x7'));module[_0xe3d6('0x8')]=function(_0x5acce3,_0x2155ea){return _0x5acce3[_0xe3d6('0x9')](_0xe3d6('0xa'),attributes,{'tableName':_0xe3d6('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4111991..ea3dd05 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6dbd=['rpc','../../config/environment','jayson/promise','client','request','then','info','UserFaxQueue,\x20%s,\x20%s','UserFaxQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','catch','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x3aac69,_0x81d09f){var _0x38d35b=function(_0x58ef90){while(--_0x58ef90){_0x3aac69['push'](_0x3aac69['shift']());}};_0x38d35b(++_0x81d09f);}(_0x6dbd,0x102));var _0xd6db=function(_0xf667c,_0x55ecd0){_0xf667c=_0xf667c-0x0;var _0x38f8cd=_0x6dbd[_0xf667c];return _0x38f8cd;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xd6db('0x0'));var BPromise=require('bluebird');var rs=require(_0xd6db('0x1'));var fs=require('fs');var Redis=require(_0xd6db('0x2'));var db=require(_0xd6db('0x3'))['db'];var utils=require(_0xd6db('0x4'));var logger=require(_0xd6db('0x5'))(_0xd6db('0x6'));var config=require(_0xd6db('0x7'));var jayson=require(_0xd6db('0x8'));var client=jayson[_0xd6db('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0xcecc63,_0x43654f,_0xa89c74){return new BPromise(function(_0x579c6d,_0x244a1a){return client[_0xd6db('0xa')](_0xcecc63,_0xa89c74)[_0xd6db('0xb')](function(_0x2a626b){logger[_0xd6db('0xc')](_0xd6db('0xd'),_0x43654f,'request\x20sent');logger['debug'](_0xd6db('0xe'),_0x43654f,'request\x20sent',JSON[_0xd6db('0xf')](_0x2a626b));if(_0x2a626b[_0xd6db('0x10')]){if(_0x2a626b[_0xd6db('0x10')][_0xd6db('0x11')]===0x1f4){logger[_0xd6db('0x10')](_0xd6db('0xd'),_0x43654f,_0x2a626b[_0xd6db('0x10')][_0xd6db('0x12')]);return _0x244a1a(_0x2a626b['error']['message']);}logger[_0xd6db('0x10')]('UserFaxQueue,\x20%s,\x20%s',_0x43654f,_0x2a626b['error'][_0xd6db('0x12')]);return _0x579c6d(_0x2a626b[_0xd6db('0x10')][_0xd6db('0x12')]);}else{logger['info'](_0xd6db('0xd'),_0x43654f,_0xd6db('0x13'));_0x579c6d(_0x2a626b[_0xd6db('0x14')][_0xd6db('0x12')]);}})[_0xd6db('0x15')](function(_0x26db2f){logger['error']('UserFaxQueue,\x20%s,\x20%s',_0x43654f,_0x26db2f);_0x244a1a(_0x26db2f);});});}
\ No newline at end of file
+var _0x8410=['error','code','message','result','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','request','then','info','UserFaxQueue,\x20%s,\x20%s','request\x20sent','debug','UserFaxQueue,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x2dbac9,_0x415d2a){var _0x2e75f8=function(_0x465886){while(--_0x465886){_0x2dbac9['push'](_0x2dbac9['shift']());}};_0x2e75f8(++_0x415d2a);}(_0x8410,0x158));var _0x0841=function(_0x44eefa,_0x1b24c1){_0x44eefa=_0x44eefa-0x0;var _0x3f0cab=_0x8410[_0x44eefa];return _0x3f0cab;};'use strict';var _=require('lodash');var util=require(_0x0841('0x0'));var moment=require(_0x0841('0x1'));var BPromise=require('bluebird');var rs=require(_0x0841('0x2'));var fs=require('fs');var Redis=require(_0x0841('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0841('0x4'));var logger=require(_0x0841('0x5'))('rpc');var config=require(_0x0841('0x6'));var jayson=require(_0x0841('0x7'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x554eaa,_0x397a7c,_0x2f143f){return new BPromise(function(_0x13023c,_0x1dbece){return client[_0x0841('0x8')](_0x554eaa,_0x2f143f)[_0x0841('0x9')](function(_0xe25695){logger[_0x0841('0xa')](_0x0841('0xb'),_0x397a7c,_0x0841('0xc'));logger[_0x0841('0xd')](_0x0841('0xe'),_0x397a7c,_0x0841('0xc'),JSON[_0x0841('0xf')](_0xe25695));if(_0xe25695[_0x0841('0x10')]){if(_0xe25695[_0x0841('0x10')][_0x0841('0x11')]===0x1f4){logger[_0x0841('0x10')](_0x0841('0xb'),_0x397a7c,_0xe25695[_0x0841('0x10')]['message']);return _0x1dbece(_0xe25695[_0x0841('0x10')][_0x0841('0x12')]);}logger['error'](_0x0841('0xb'),_0x397a7c,_0xe25695[_0x0841('0x10')][_0x0841('0x12')]);return _0x13023c(_0xe25695['error'][_0x0841('0x12')]);}else{logger[_0x0841('0xa')](_0x0841('0xb'),_0x397a7c,'request\x20sent');_0x13023c(_0xe25695[_0x0841('0x13')]['message']);}})['catch'](function(_0x2655a8){logger['error'](_0x0841('0xb'),_0x397a7c,_0x2655a8);_0x1dbece(_0x2655a8);});});}
\ No newline at end of file
index f61983c..d3a8909 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(_0x2d2f1a,_0x57b966){var _0x55d9db=function(_0x15771f){while(--_0x15771f){_0x2d2f1a['push'](_0x2d2f1a['shift']());}};_0x55d9db(++_0x57b966);}(_0xa9e0,0x123));var _0x0a9e=function(_0x25bea7,_0x49ab45){_0x25bea7=_0x25bea7-0x0;var _0x175952=_0xa9e0[_0x25bea7];return _0x175952;};'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 _0x70e0=['../../components/auth/service','../../components/interaction/service','exports','multer','util','path','Router','fs-extra'];(function(_0x1b4692,_0x102316){var _0x539ed4=function(_0x4d0f6c){while(--_0x4d0f6c){_0x1b4692['push'](_0x1b4692['shift']());}};_0x539ed4(++_0x102316);}(_0x70e0,0x17b));var _0x070e=function(_0x1ee66c,_0x3c8685){_0x1ee66c=_0x1ee66c-0x0;var _0x312c8b=_0x70e0[_0x1ee66c];return _0x312c8b;};'use strict';var multer=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var path=require(_0x070e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x070e('0x3')]();var fs_extra=require(_0x070e('0x4'));var auth=require(_0x070e('0x5'));var interaction=require(_0x070e('0x6'));var config=require('../../config/environment');module[_0x070e('0x7')]=router;
\ No newline at end of file
index 3d79def..81fe114 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3b0d=['INTEGER','sequelize'];(function(_0x1d501e,_0xded069){var _0x23910a=function(_0x413548){while(--_0x413548){_0x1d501e['push'](_0x1d501e['shift']());}};_0x23910a(++_0xded069);}(_0x3b0d,0xf9));var _0xd3b0=function(_0x31d3fa,_0x4c621e){_0x31d3fa=_0x31d3fa-0x0;var _0x512a9c=_0x3b0d[_0x31d3fa];return _0x512a9c;};'use strict';var Sequelize=require(_0xd3b0('0x0'));module['exports']={'penalty':{'type':Sequelize[_0xd3b0('0x1')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x0a16=['sequelize','exports','INTEGER'];(function(_0x181ad4,_0x3b5f78){var _0x553ed1=function(_0x3261f4){while(--_0x3261f4){_0x181ad4['push'](_0x181ad4['shift']());}};_0x553ed1(++_0x3b5f78);}(_0x0a16,0x10e));var _0x60a1=function(_0xa4b885,_0x1e725a){_0xa4b885=_0xa4b885-0x0;var _0x2be448=_0x0a16[_0xa4b885];return _0x2be448;};'use strict';var Sequelize=require(_0x60a1('0x0'));module[_0x60a1('0x1')]={'penalty':{'type':Sequelize[_0x60a1('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 0f9ed86..d69f74d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x58f0=['path','rimraf','../../config/environment','define','UserMailQueue','user_has_mail_queues','lodash','../../config/logger','moment','bluebird','request-promise'];(function(_0x57bd4f,_0x42a4f5){var _0x25c08f=function(_0x5a3585){while(--_0x5a3585){_0x57bd4f['push'](_0x57bd4f['shift']());}};_0x25c08f(++_0x42a4f5);}(_0x58f0,0x1df));var _0x058f=function(_0x20d9df,_0x135273){_0x20d9df=_0x20d9df-0x0;var _0x1980f8=_0x58f0[_0x20d9df];return _0x1980f8;};'use strict';var _=require(_0x058f('0x0'));var util=require('util');var logger=require(_0x058f('0x1'))('api');var moment=require(_0x058f('0x2'));var BPromise=require(_0x058f('0x3'));var rp=require(_0x058f('0x4'));var fs=require('fs');var path=require(_0x058f('0x5'));var rimraf=require(_0x058f('0x6'));var config=require(_0x058f('0x7'));var attributes=require('./userMailQueue.attributes');module['exports']=function(_0x534356,_0x533f8c){return _0x534356[_0x058f('0x8')](_0x058f('0x9'),attributes,{'tableName':_0x058f('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8072=['path','rimraf','exports','define','user_has_mail_queues','lodash','util','api','moment'];(function(_0x3df4b3,_0x3ca764){var _0xa427b6=function(_0x31ded3){while(--_0x31ded3){_0x3df4b3['push'](_0x3df4b3['shift']());}};_0xa427b6(++_0x3ca764);}(_0x8072,0x1b5));var _0x2807=function(_0x31cb5f,_0x2df766){_0x31cb5f=_0x31cb5f-0x0;var _0x586042=_0x8072[_0x31cb5f];return _0x586042;};'use strict';var _=require(_0x2807('0x0'));var util=require(_0x2807('0x1'));var logger=require('../../config/logger')(_0x2807('0x2'));var moment=require(_0x2807('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x2807('0x4'));var rimraf=require(_0x2807('0x5'));var config=require('../../config/environment');var attributes=require('./userMailQueue.attributes');module[_0x2807('0x6')]=function(_0x1c40d4,_0x5e0523){return _0x1c40d4[_0x2807('0x7')]('UserMailQueue',attributes,{'tableName':_0x2807('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5c492e4..24dd39d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ef6=['result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','request','then','info','UserMailQueue,\x20%s,\x20%s','request\x20sent','debug','UserMailQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x4b0291,_0x365156){var _0x24834c=function(_0x5bd17e){while(--_0x5bd17e){_0x4b0291['push'](_0x4b0291['shift']());}};_0x24834c(++_0x365156);}(_0x8ef6,0xf2));var _0x68ef=function(_0x5dcf26,_0x2f9992){_0x5dcf26=_0x5dcf26-0x0;var _0x5f1188=_0x8ef6[_0x5dcf26];return _0x5f1188;};'use strict';var _=require(_0x68ef('0x0'));var util=require(_0x68ef('0x1'));var moment=require(_0x68ef('0x2'));var BPromise=require(_0x68ef('0x3'));var rs=require(_0x68ef('0x4'));var fs=require('fs');var Redis=require(_0x68ef('0x5'));var db=require(_0x68ef('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x68ef('0x7'))(_0x68ef('0x8'));var config=require(_0x68ef('0x9'));var jayson=require(_0x68ef('0xa'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x3c2ff3,_0x4740e8,_0x2de776){return new BPromise(function(_0x4eb5eb,_0x228967){return client[_0x68ef('0xb')](_0x3c2ff3,_0x2de776)[_0x68ef('0xc')](function(_0x22ae26){logger[_0x68ef('0xd')](_0x68ef('0xe'),_0x4740e8,_0x68ef('0xf'));logger[_0x68ef('0x10')](_0x68ef('0x11'),_0x4740e8,_0x68ef('0xf'),JSON[_0x68ef('0x12')](_0x22ae26));if(_0x22ae26[_0x68ef('0x13')]){if(_0x22ae26['error'][_0x68ef('0x14')]===0x1f4){logger[_0x68ef('0x13')](_0x68ef('0xe'),_0x4740e8,_0x22ae26[_0x68ef('0x13')][_0x68ef('0x15')]);return _0x228967(_0x22ae26[_0x68ef('0x13')]['message']);}logger[_0x68ef('0x13')](_0x68ef('0xe'),_0x4740e8,_0x22ae26[_0x68ef('0x13')]['message']);return _0x4eb5eb(_0x22ae26[_0x68ef('0x13')][_0x68ef('0x15')]);}else{logger[_0x68ef('0xd')]('UserMailQueue,\x20%s,\x20%s',_0x4740e8,_0x68ef('0xf'));_0x4eb5eb(_0x22ae26[_0x68ef('0x16')][_0x68ef('0x15')]);}})[_0x68ef('0x17')](function(_0x5c4456){logger[_0x68ef('0x13')]('UserMailQueue,\x20%s,\x20%s',_0x4740e8,_0x5c4456);_0x228967(_0x5c4456);});});}
\ No newline at end of file
+var _0x00bb=['stringify','error','message','catch','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','request','info','UserMailQueue,\x20%s,\x20%s','request\x20sent','debug','UserMailQueue,\x20%s,\x20%s,\x20%s'];(function(_0x2611f4,_0x26f95f){var _0x58f8d7=function(_0x352f60){while(--_0x352f60){_0x2611f4['push'](_0x2611f4['shift']());}};_0x58f8d7(++_0x26f95f);}(_0x00bb,0x1d8));var _0xb00b=function(_0x2bf141,_0x31eac7){_0x2bf141=_0x2bf141-0x0;var _0x48277b=_0x00bb[_0x2bf141];return _0x48277b;};'use strict';var _=require(_0xb00b('0x0'));var util=require(_0xb00b('0x1'));var moment=require(_0xb00b('0x2'));var BPromise=require('bluebird');var rs=require(_0xb00b('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb00b('0x4'))['db'];var utils=require(_0xb00b('0x5'));var logger=require('../../config/logger')(_0xb00b('0x6'));var config=require(_0xb00b('0x7'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x36e363,_0xf737d0,_0x41dfc9){return new BPromise(function(_0x37f07d,_0xfa4181){return client[_0xb00b('0x8')](_0x36e363,_0x41dfc9)['then'](function(_0x51d12b){logger[_0xb00b('0x9')](_0xb00b('0xa'),_0xf737d0,_0xb00b('0xb'));logger[_0xb00b('0xc')](_0xb00b('0xd'),_0xf737d0,'request\x20sent',JSON[_0xb00b('0xe')](_0x51d12b));if(_0x51d12b['error']){if(_0x51d12b['error']['code']===0x1f4){logger[_0xb00b('0xf')](_0xb00b('0xa'),_0xf737d0,_0x51d12b[_0xb00b('0xf')][_0xb00b('0x10')]);return _0xfa4181(_0x51d12b[_0xb00b('0xf')][_0xb00b('0x10')]);}logger['error'](_0xb00b('0xa'),_0xf737d0,_0x51d12b[_0xb00b('0xf')]['message']);return _0x37f07d(_0x51d12b[_0xb00b('0xf')][_0xb00b('0x10')]);}else{logger['info']('UserMailQueue,\x20%s,\x20%s',_0xf737d0,_0xb00b('0xb'));_0x37f07d(_0x51d12b['result']['message']);}})[_0xb00b('0x11')](function(_0x638443){logger[_0xb00b('0xf')](_0xb00b('0xa'),_0xf737d0,_0x638443);_0xfa4181(_0x638443);});});}
\ No newline at end of file
index 5d11161..6a1a1f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb402=['../../config/environment','./userNotification.controller','post','sendUserNotification','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0xbf1132,_0x176b34){var _0xe63ce4=function(_0x52d8ed){while(--_0x52d8ed){_0xbf1132['push'](_0xbf1132['shift']());}};_0xe63ce4(++_0x176b34);}(_0xb402,0x7a));var _0x2b40=function(_0x1b64dd,_0x2cf769){_0x1b64dd=_0x1b64dd-0x0;var _0xeb464c=_0xb402[_0x1b64dd];return _0xeb464c;};'use strict';var multer=require(_0x2b40('0x0'));var util=require(_0x2b40('0x1'));var path=require('path');var timeout=require(_0x2b40('0x2'));var express=require(_0x2b40('0x3'));var router=express[_0x2b40('0x4')]();var fs_extra=require(_0x2b40('0x5'));var auth=require(_0x2b40('0x6'));var interaction=require(_0x2b40('0x7'));var config=require(_0x2b40('0x8'));var controller=require(_0x2b40('0x9'));router[_0x2b40('0xa')]('/',auth['isAuthenticated'](),controller[_0x2b40('0xb')]);module[_0x2b40('0xc')]=router;
\ No newline at end of file
+var _0x1432=['sendUserNotification','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./userNotification.controller','post','isAuthenticated'];(function(_0x584c4f,_0x4067e3){var _0x282ba7=function(_0xdfa649){while(--_0xdfa649){_0x584c4f['push'](_0x584c4f['shift']());}};_0x282ba7(++_0x4067e3);}(_0x1432,0x176));var _0x2143=function(_0x3fba9f,_0x3b7b9b){_0x3fba9f=_0x3fba9f-0x0;var _0x192cf1=_0x1432[_0x3fba9f];return _0x192cf1;};'use strict';var multer=require(_0x2143('0x0'));var util=require('util');var path=require(_0x2143('0x1'));var timeout=require(_0x2143('0x2'));var express=require(_0x2143('0x3'));var router=express[_0x2143('0x4')]();var fs_extra=require(_0x2143('0x5'));var auth=require(_0x2143('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x2143('0x7'));router[_0x2143('0x8')]('/',auth[_0x2143('0x9')](),controller[_0x2143('0xa')]);module[_0x2143('0xb')]=router;
\ No newline at end of file
index c1d22c3..2ee6bfc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a28=['exports','STRING','TEXT','sequelize'];(function(_0x55821d,_0x27a22e){var _0x58ea8a=function(_0x5bdd3d){while(--_0x5bdd3d){_0x55821d['push'](_0x55821d['shift']());}};_0x58ea8a(++_0x27a22e);}(_0x6a28,0x1c7));var _0x86a2=function(_0x156a32,_0xeefb67){_0x156a32=_0x156a32-0x0;var _0x37939b=_0x6a28[_0x156a32];return _0x37939b;};'use strict';var Sequelize=require(_0x86a2('0x0'));module[_0x86a2('0x1')]={'body':{'type':Sequelize['TEXT']},'senderName':{'type':Sequelize[_0x86a2('0x2')]},'recipientsId':{'type':Sequelize[_0x86a2('0x3')]},'recipientsDescription':{'type':Sequelize[_0x86a2('0x2')]},'beep':{'type':Sequelize['BOOLEAN']}};
\ No newline at end of file
+var _0xeb3d=['exports','STRING','TEXT','BOOLEAN','sequelize'];(function(_0x2c7618,_0x26be9c){var _0x5ce3f0=function(_0x1837b3){while(--_0x1837b3){_0x2c7618['push'](_0x2c7618['shift']());}};_0x5ce3f0(++_0x26be9c);}(_0xeb3d,0x77));var _0xdeb3=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xeb3d[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require(_0xdeb3('0x0'));module[_0xdeb3('0x1')]={'body':{'type':Sequelize['TEXT']},'senderName':{'type':Sequelize[_0xdeb3('0x2')]},'recipientsId':{'type':Sequelize[_0xdeb3('0x3')]},'recipientsDescription':{'type':Sequelize[_0xdeb3('0x2')]},'beep':{'type':Sequelize[_0xdeb3('0x4')]}};
\ No newline at end of file
index 05aa95d..467113e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbff8=['destroy','error','stack','name','send','sendUserNotification','body','hasOwnProperty','text','TemplateId','Sequelize','ValidationError','view','Missing\x20\x27view\x27\x20parameter','Missing\x20\x27recipients\x27\x20parameter','parse','recipients','faxqueue','mailqueue','openchannelqueue','team','user','some','includes','model','toLowerCase','Invalid\x20model\x20in\x20\x27recipients\x27\x20object','senderName','fullname','recipientsDescription','isEmpty','beep','sortBy','join','sequelize','transaction','UserNotification','recipient','emit','userNotification:send','catch','findOne','Invalid\x20\x27TemplateId\x27\x20parameter','html','forEach','startCase','User','union','queue','replace','Queue','ids','push','all','flatten','map','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','socket.io-emitter','./userNotification.socket','sendStatus','end','status','json','offset','undefined','count','limit','Content-Range','apply','save','update','then'];(function(_0xd73f73,_0x52e92d){var _0x5516a8=function(_0x5efc2c){while(--_0x5efc2c){_0xd73f73['push'](_0xd73f73['shift']());}};_0x5516a8(++_0x52e92d);}(_0xbff8,0x1c8));var _0x8bff=function(_0x29d44d,_0x28805d){_0x29d44d=_0x29d44d-0x0;var _0x5bd0fd=_0xbff8[_0x29d44d];return _0x5bd0fd;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x8bff('0x0'));var zipdir=require(_0x8bff('0x1'));var jsonpatch=require(_0x8bff('0x2'));var rp=require('request-promise');var moment=require(_0x8bff('0x3'));var BPromise=require(_0x8bff('0x4'));var Mustache=require(_0x8bff('0x5'));var util=require(_0x8bff('0x6'));var path=require(_0x8bff('0x7'));var sox=require(_0x8bff('0x8'));var csv=require(_0x8bff('0x9'));var ejs=require(_0x8bff('0xa'));var fs=require('fs');var fs_extra=require(_0x8bff('0xb'));var _=require(_0x8bff('0xc'));var squel=require(_0x8bff('0xd'));var crypto=require('crypto');var jsforce=require(_0x8bff('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x8bff('0x9'));var querystring=require(_0x8bff('0xf'));var Papa=require(_0x8bff('0x10'));var Redis=require(_0x8bff('0x11'));var authService=require(_0x8bff('0x12'));var qs=require(_0x8bff('0x13'));var as=require(_0x8bff('0x14'));var hardwareService=require(_0x8bff('0x15'));var logger=require(_0x8bff('0x16'))(_0x8bff('0x17'));var utils=require(_0x8bff('0x18'));var config=require(_0x8bff('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0x8bff('0x1a'))['db'];config[_0x8bff('0x1b')]=_[_0x8bff('0x1c')](config[_0x8bff('0x1b')],{'host':'localhost','port':0x18eb});var socket=require(_0x8bff('0x1d'))(new Redis(config['redis']));require(_0x8bff('0x1e'))['register'](socket);function respondWithStatusCode(_0x34c428,_0x53751c){_0x53751c=_0x53751c||0xcc;return function(_0x542b31){if(_0x542b31){return _0x34c428[_0x8bff('0x1f')](_0x53751c);}return _0x34c428['status'](_0x53751c)[_0x8bff('0x20')]();};}function respondWithResult(_0x13e3d4,_0x483a2e){_0x483a2e=_0x483a2e||0xc8;return function(_0x1c92d4){if(_0x1c92d4){return _0x13e3d4[_0x8bff('0x21')](_0x483a2e)[_0x8bff('0x22')](_0x1c92d4);}};}function respondWithFilteredResult(_0x3deea0,_0x531692){return function(_0x479439){if(_0x479439){var _0x2367d9=typeof _0x531692[_0x8bff('0x23')]===_0x8bff('0x24')&&typeof _0x531692['limit']===_0x8bff('0x24');var _0x203120=_0x479439[_0x8bff('0x25')];var _0x5bb2fa=_0x2367d9?0x0:_0x531692['offset'];var _0x1eca92=_0x2367d9?_0x479439[_0x8bff('0x25')]:_0x531692[_0x8bff('0x23')]+_0x531692[_0x8bff('0x26')];var _0x250dc1;if(_0x1eca92>=_0x203120){_0x1eca92=_0x203120;_0x250dc1=0xc8;}else{_0x250dc1=0xce;}_0x3deea0[_0x8bff('0x21')](_0x250dc1);return _0x3deea0['set'](_0x8bff('0x27'),_0x5bb2fa+'-'+_0x1eca92+'/'+_0x203120)['json'](_0x479439);}return null;};}function patchUpdates(_0x3da98d){return function(_0x19030d){try{jsonpatch[_0x8bff('0x28')](_0x19030d,_0x3da98d,!![]);}catch(_0x4b86ca){return BPromise['reject'](_0x4b86ca);}return _0x19030d[_0x8bff('0x29')]();};}function saveUpdates(_0x358139,_0x6a7527){return function(_0x353e58){if(_0x353e58){return _0x353e58[_0x8bff('0x2a')](_0x358139)[_0x8bff('0x2b')](function(_0xcdc11a){return _0xcdc11a;});}return null;};}function removeEntity(_0xd94070,_0xf6a835){return function(_0x446cb6){if(_0x446cb6){return _0x446cb6[_0x8bff('0x2c')]()[_0x8bff('0x2b')](function(){_0xd94070['status'](0xcc)[_0x8bff('0x20')]();});}};}function handleEntityNotFound(_0x567093,_0x258dec){return function(_0x1c366c){if(!_0x1c366c){_0x567093['sendStatus'](0x194);}return _0x1c366c;};}function handleError(_0x1b3126,_0x2fc199){_0x2fc199=_0x2fc199||0x1f4;return function(_0x2343ca){logger[_0x8bff('0x2d')](_0x2343ca[_0x8bff('0x2e')]);if(_0x2343ca[_0x8bff('0x2f')]){delete _0x2343ca[_0x8bff('0x2f')];}_0x1b3126['status'](_0x2fc199)[_0x8bff('0x30')](_0x2343ca);};}exports[_0x8bff('0x31')]=function(_0x2cfe21,_0x312732,_0xf41295){if(!_0x2cfe21[_0x8bff('0x32')][_0x8bff('0x33')](_0x8bff('0x34'))&&!_0x2cfe21['body']['hasOwnProperty'](_0x8bff('0x35'))){throw new db[(_0x8bff('0x36'))][(_0x8bff('0x37'))]('Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27');}else{if(_0x2cfe21[_0x8bff('0x32')][_0x8bff('0x33')]('TemplateId')&&!_0x2cfe21[_0x8bff('0x32')]['hasOwnProperty'](_0x8bff('0x38'))){throw new db[(_0x8bff('0x36'))]['ValidationError'](_0x8bff('0x39'));}if(!_0x2cfe21[_0x8bff('0x32')][_0x8bff('0x33')]('recipients')){throw new db['Sequelize'][(_0x8bff('0x37'))](_0x8bff('0x3a'));}else{try{var _0x490079=JSON[_0x8bff('0x3b')](_0x2cfe21[_0x8bff('0x32')][_0x8bff('0x3c')]);}catch(_0x21e2ee){logger[_0x8bff('0x2d')](_0x21e2ee);throw new db['Sequelize'][(_0x8bff('0x37'))]('Invalid\x20\x27recipients\x27\x20object');}var _0x19c41f=['chatqueue',_0x8bff('0x3d'),_0x8bff('0x3e'),_0x8bff('0x3f'),'smsqueue','voicequeue','whatsappqueue',_0x8bff('0x40'),_0x8bff('0x41')];if(_[_0x8bff('0x42')](_0x490079,function(_0x2447a7){return!_[_0x8bff('0x43')](_0x19c41f,_0x2447a7[_0x8bff('0x44')][_0x8bff('0x45')]());})){throw new db['Sequelize'][(_0x8bff('0x37'))](_0x8bff('0x46'));}}}var _0x221eb7={};_0x221eb7[_0x8bff('0x47')]=_0x2cfe21[_0x8bff('0x32')][_0x8bff('0x33')]('senderName')?_0x2cfe21[_0x8bff('0x32')][_0x8bff('0x47')]:_0x2cfe21['user'][_0x8bff('0x48')];_0x221eb7[_0x8bff('0x49')]=_[_0x8bff('0x4a')](_0x2cfe21[_0x8bff('0x32')][_0x8bff('0x49')])?null:_0x2cfe21['body'][_0x8bff('0x49')];_0x221eb7[_0x8bff('0x4b')]=_0x2cfe21[_0x8bff('0x32')][_0x8bff('0x4b')]||![];_0x221eb7['SenderId']=_0x2cfe21[_0x8bff('0x41')]['id'];return getContent(_0x2cfe21['body'])[_0x8bff('0x2b')](function(_0x8b4bc8){_0x221eb7[_0x8bff('0x32')]=_0x8b4bc8;return getRecipients(_0x490079);})[_0x8bff('0x2b')](function(_0x11456b){_0x221eb7['recipientsId']=_[_0x8bff('0x4c')](_0x11456b)[_0x8bff('0x4d')](',');return db[_0x8bff('0x4e')][_0x8bff('0x4f')](function(_0x599dab){return db[_0x8bff('0x50')]['create'](_0x221eb7,{'raw':!![],'transaction':_0x599dab})[_0x8bff('0x2b')](function(_0x290998){var _0x9bdc08={'sender':_0x221eb7['senderName'],'description':_0x221eb7[_0x8bff('0x49')],'content':_0x221eb7[_0x8bff('0x32')],'beep':_0x221eb7[_0x8bff('0x4b')]};_0x11456b['forEach'](function(_0x339a15){_0x9bdc08[_0x8bff('0x51')]=_0x339a15;socket[_0x8bff('0x52')](_0x8bff('0x53'),_0x9bdc08);});return _0x290998;});});})[_0x8bff('0x2b')](respondWithResult(_0x312732,0xc9))[_0x8bff('0x54')](handleError(_0x312732,null));};function getContent(_0x1afd86){return new BPromise(function(_0x33424f,_0x5e1f6e){if(_0x1afd86[_0x8bff('0x34')]){_0x33424f(_0x1afd86['text']);return;}return db['Template'][_0x8bff('0x55')]({'attributes':['html'],'where':{'id':_0x1afd86[_0x8bff('0x35')]},'raw':!![]})[_0x8bff('0x2b')](function(_0x5aaadd){if(!_0x5aaadd)throw new db[(_0x8bff('0x36'))][(_0x8bff('0x37'))](_0x8bff('0x56'));var _0x39d0dd=Mustache['render'](_0x5aaadd[_0x8bff('0x57')],_0x1afd86[_0x8bff('0x38')]);_0x33424f(_0x39d0dd);})[_0x8bff('0x54')](function(_0x361ae3){_0x5e1f6e(_0x361ae3);});});}function getRecipients(_0x47501c){return new BPromise(function(_0x1a722c,_0x324806){var _0x5e1c55=[];var _0x54dd4f=[];_0x47501c[_0x8bff('0x58')](function(_0x4382d8){var _0x48e4ff=_[_0x8bff('0x59')](_0x4382d8[_0x8bff('0x44')][_0x8bff('0x45')]());if(_0x48e4ff===_0x8bff('0x5a')){_0x5e1c55=_[_0x8bff('0x5b')](_0x5e1c55,_0x4382d8['ids']);}else{if(_['includes'](_0x48e4ff,_0x8bff('0x5c')))_0x48e4ff=_0x48e4ff[_0x8bff('0x5d')](_0x8bff('0x5c'),_0x8bff('0x5e'));_0x4382d8[_0x8bff('0x5f')]['forEach'](function(_0x43b47d){_0x54dd4f[_0x8bff('0x60')](getAgents(_0x48e4ff,_0x43b47d));});}});return BPromise[_0x8bff('0x61')](_0x54dd4f)[_0x8bff('0x2b')](function(_0xb8418){_0x5e1c55=_['union'](_0x5e1c55,_[_0x8bff('0x62')](_0xb8418));_0x1a722c(_0x5e1c55);})['catch'](function(_0x4c1a75){_0x324806(_0x4c1a75);});});}function getAgents(_0x2cf259,_0x25cb19){return new BPromise(function(_0x59d778,_0x194b03){return db[_0x2cf259][_0x8bff('0x55')]({'where':{'id':_0x25cb19}})[_0x8bff('0x2b')](function(_0x5e52c0){return _0x5e52c0['getAgents']({'attributes':['id'],'raw':!![]})[_0x8bff('0x2b')](function(_0x196cfb){var _0x1d5258=_[_0x8bff('0x63')](_0x196cfb,'id');_0x59d778(_0x1d5258);});})['catch'](function(_0x10487c){_0x194b03(_0x10487c);});});}
\ No newline at end of file
+var _0x0911=['html','Invalid\x20\x27TemplateId\x27\x20parameter','render','User','union','ids','queue','replace','Queue','push','all','flatten','catch','getAgents','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','sendStatus','status','end','json','offset','limit','undefined','count','set','apply','reject','save','update','then','destroy','error','stack','name','send','sendUserNotification','body','hasOwnProperty','TemplateId','Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27','view','ValidationError','Missing\x20\x27view\x27\x20parameter','recipients','Missing\x20\x27recipients\x27\x20parameter','parse','Sequelize','Invalid\x20\x27recipients\x27\x20object','chatqueue','openchannelqueue','smsqueue','whatsappqueue','team','includes','toLowerCase','senderName','fullname','recipientsDescription','isEmpty','beep','SenderId','user','recipientsId','sortBy','join','sequelize','transaction','UserNotification','forEach','recipient','emit','userNotification:send','Template','findOne'];(function(_0x12b8ec,_0x1655be){var _0x21af77=function(_0xe59f){while(--_0xe59f){_0x12b8ec['push'](_0x12b8ec['shift']());}};_0x21af77(++_0x1655be);}(_0x0911,0x75));var _0x1091=function(_0x18b5e8,_0x51e875){_0x18b5e8=_0x18b5e8-0x0;var _0x25baed=_0x0911[_0x18b5e8];return _0x25baed;};'use strict';var emlformat=require(_0x1091('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x1091('0x1'));var jsonpatch=require(_0x1091('0x2'));var rp=require(_0x1091('0x3'));var moment=require(_0x1091('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x1091('0x5'));var util=require(_0x1091('0x6'));var path=require(_0x1091('0x7'));var sox=require(_0x1091('0x8'));var csv=require('to-csv');var ejs=require(_0x1091('0x9'));var fs=require('fs');var fs_extra=require(_0x1091('0xa'));var _=require(_0x1091('0xb'));var squel=require(_0x1091('0xc'));var crypto=require(_0x1091('0xd'));var jsforce=require(_0x1091('0xe'));var deskjs=require(_0x1091('0xf'));var toCsv=require(_0x1091('0x10'));var querystring=require(_0x1091('0x11'));var Papa=require(_0x1091('0x12'));var Redis=require('ioredis');var authService=require(_0x1091('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x1091('0x14'));var hardwareService=require(_0x1091('0x15'));var logger=require(_0x1091('0x16'))(_0x1091('0x17'));var utils=require(_0x1091('0x18'));var config=require(_0x1091('0x19'));var licenseUtil=require(_0x1091('0x1a'));var db=require(_0x1091('0x1b'))['db'];config[_0x1091('0x1c')]=_[_0x1091('0x1d')](config[_0x1091('0x1c')],{'host':'localhost','port':0x18eb});var socket=require(_0x1091('0x1e'))(new Redis(config[_0x1091('0x1c')]));require('./userNotification.socket')['register'](socket);function respondWithStatusCode(_0x5c1fcd,_0x588230){_0x588230=_0x588230||0xcc;return function(_0x2c6713){if(_0x2c6713){return _0x5c1fcd[_0x1091('0x1f')](_0x588230);}return _0x5c1fcd[_0x1091('0x20')](_0x588230)[_0x1091('0x21')]();};}function respondWithResult(_0x4ca3f2,_0x3091dc){_0x3091dc=_0x3091dc||0xc8;return function(_0xb46ec0){if(_0xb46ec0){return _0x4ca3f2[_0x1091('0x20')](_0x3091dc)[_0x1091('0x22')](_0xb46ec0);}};}function respondWithFilteredResult(_0x35757c,_0x478b88){return function(_0x15dec5){if(_0x15dec5){var _0x2f4b89=typeof _0x478b88[_0x1091('0x23')]==='undefined'&&typeof _0x478b88[_0x1091('0x24')]===_0x1091('0x25');var _0x93a41f=_0x15dec5[_0x1091('0x26')];var _0x4d3c49=_0x2f4b89?0x0:_0x478b88[_0x1091('0x23')];var _0x1129b4=_0x2f4b89?_0x15dec5[_0x1091('0x26')]:_0x478b88[_0x1091('0x23')]+_0x478b88[_0x1091('0x24')];var _0x53ec0a;if(_0x1129b4>=_0x93a41f){_0x1129b4=_0x93a41f;_0x53ec0a=0xc8;}else{_0x53ec0a=0xce;}_0x35757c['status'](_0x53ec0a);return _0x35757c[_0x1091('0x27')]('Content-Range',_0x4d3c49+'-'+_0x1129b4+'/'+_0x93a41f)[_0x1091('0x22')](_0x15dec5);}return null;};}function patchUpdates(_0xf55a6a){return function(_0x4a4345){try{jsonpatch[_0x1091('0x28')](_0x4a4345,_0xf55a6a,!![]);}catch(_0x2739ee){return BPromise[_0x1091('0x29')](_0x2739ee);}return _0x4a4345[_0x1091('0x2a')]();};}function saveUpdates(_0x399df6,_0x1035c5){return function(_0x29979a){if(_0x29979a){return _0x29979a[_0x1091('0x2b')](_0x399df6)[_0x1091('0x2c')](function(_0x3eb461){return _0x3eb461;});}return null;};}function removeEntity(_0x5182ce,_0x242185){return function(_0x31db48){if(_0x31db48){return _0x31db48[_0x1091('0x2d')]()['then'](function(){_0x5182ce['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x31d131,_0x24aa6b){return function(_0x40a6ab){if(!_0x40a6ab){_0x31d131[_0x1091('0x1f')](0x194);}return _0x40a6ab;};}function handleError(_0x4d4c92,_0x23d6cb){_0x23d6cb=_0x23d6cb||0x1f4;return function(_0x3317f1){logger[_0x1091('0x2e')](_0x3317f1[_0x1091('0x2f')]);if(_0x3317f1[_0x1091('0x30')]){delete _0x3317f1[_0x1091('0x30')];}_0x4d4c92[_0x1091('0x20')](_0x23d6cb)[_0x1091('0x31')](_0x3317f1);};}exports[_0x1091('0x32')]=function(_0x1d4cb3,_0x94e7c4,_0x26c003){if(!_0x1d4cb3[_0x1091('0x33')][_0x1091('0x34')]('text')&&!_0x1d4cb3[_0x1091('0x33')][_0x1091('0x34')](_0x1091('0x35'))){throw new db['Sequelize']['ValidationError'](_0x1091('0x36'));}else{if(_0x1d4cb3[_0x1091('0x33')]['hasOwnProperty'](_0x1091('0x35'))&&!_0x1d4cb3['body'][_0x1091('0x34')](_0x1091('0x37'))){throw new db['Sequelize'][(_0x1091('0x38'))](_0x1091('0x39'));}if(!_0x1d4cb3[_0x1091('0x33')][_0x1091('0x34')](_0x1091('0x3a'))){throw new db['Sequelize'][(_0x1091('0x38'))](_0x1091('0x3b'));}else{try{var _0x4ea6a3=JSON[_0x1091('0x3c')](_0x1d4cb3['body'][_0x1091('0x3a')]);}catch(_0x3cc831){logger['error'](_0x3cc831);throw new db[(_0x1091('0x3d'))][(_0x1091('0x38'))](_0x1091('0x3e'));}var _0x3f283d=[_0x1091('0x3f'),'faxqueue','mailqueue',_0x1091('0x40'),_0x1091('0x41'),'voicequeue',_0x1091('0x42'),_0x1091('0x43'),'user'];if(_['some'](_0x4ea6a3,function(_0xd2eef1){return!_[_0x1091('0x44')](_0x3f283d,_0xd2eef1['model'][_0x1091('0x45')]());})){throw new db[(_0x1091('0x3d'))][(_0x1091('0x38'))]('Invalid\x20model\x20in\x20\x27recipients\x27\x20object');}}}var _0x11b8d2={};_0x11b8d2[_0x1091('0x46')]=_0x1d4cb3[_0x1091('0x33')][_0x1091('0x34')](_0x1091('0x46'))?_0x1d4cb3[_0x1091('0x33')][_0x1091('0x46')]:_0x1d4cb3['user'][_0x1091('0x47')];_0x11b8d2[_0x1091('0x48')]=_[_0x1091('0x49')](_0x1d4cb3[_0x1091('0x33')][_0x1091('0x48')])?null:_0x1d4cb3[_0x1091('0x33')][_0x1091('0x48')];_0x11b8d2[_0x1091('0x4a')]=_0x1d4cb3[_0x1091('0x33')][_0x1091('0x4a')]||![];_0x11b8d2[_0x1091('0x4b')]=_0x1d4cb3[_0x1091('0x4c')]['id'];return getContent(_0x1d4cb3['body'])['then'](function(_0x332c97){_0x11b8d2[_0x1091('0x33')]=_0x332c97;return getRecipients(_0x4ea6a3);})[_0x1091('0x2c')](function(_0x35cb49){_0x11b8d2[_0x1091('0x4d')]=_[_0x1091('0x4e')](_0x35cb49)[_0x1091('0x4f')](',');return db[_0x1091('0x50')][_0x1091('0x51')](function(_0x38635a){return db[_0x1091('0x52')]['create'](_0x11b8d2,{'raw':!![],'transaction':_0x38635a})[_0x1091('0x2c')](function(_0x35a8ff){var _0x503e55={'sender':_0x11b8d2['senderName'],'description':_0x11b8d2['recipientsDescription'],'content':_0x11b8d2[_0x1091('0x33')],'beep':_0x11b8d2[_0x1091('0x4a')]};_0x35cb49[_0x1091('0x53')](function(_0x2c4bd0){_0x503e55[_0x1091('0x54')]=_0x2c4bd0;socket[_0x1091('0x55')](_0x1091('0x56'),_0x503e55);});return _0x35a8ff;});});})[_0x1091('0x2c')](respondWithResult(_0x94e7c4,0xc9))['catch'](handleError(_0x94e7c4,null));};function getContent(_0x59f880){return new BPromise(function(_0x277dfa,_0x3ba2c8){if(_0x59f880['text']){_0x277dfa(_0x59f880['text']);return;}return db[_0x1091('0x57')][_0x1091('0x58')]({'attributes':[_0x1091('0x59')],'where':{'id':_0x59f880[_0x1091('0x35')]},'raw':!![]})[_0x1091('0x2c')](function(_0x1225e5){if(!_0x1225e5)throw new db[(_0x1091('0x3d'))]['ValidationError'](_0x1091('0x5a'));var _0x29f45a=Mustache[_0x1091('0x5b')](_0x1225e5[_0x1091('0x59')],_0x59f880[_0x1091('0x37')]);_0x277dfa(_0x29f45a);})['catch'](function(_0x247612){_0x3ba2c8(_0x247612);});});}function getRecipients(_0x4c7eba){return new BPromise(function(_0x3e29b3,_0xe195e5){var _0x3e9811=[];var _0x8d13e0=[];_0x4c7eba['forEach'](function(_0x416ea5){var _0x192dae=_['startCase'](_0x416ea5['model'][_0x1091('0x45')]());if(_0x192dae===_0x1091('0x5c')){_0x3e9811=_[_0x1091('0x5d')](_0x3e9811,_0x416ea5[_0x1091('0x5e')]);}else{if(_[_0x1091('0x44')](_0x192dae,_0x1091('0x5f')))_0x192dae=_0x192dae[_0x1091('0x60')](_0x1091('0x5f'),_0x1091('0x61'));_0x416ea5[_0x1091('0x5e')][_0x1091('0x53')](function(_0x322480){_0x8d13e0[_0x1091('0x62')](getAgents(_0x192dae,_0x322480));});}});return BPromise[_0x1091('0x63')](_0x8d13e0)[_0x1091('0x2c')](function(_0x447c31){_0x3e9811=_[_0x1091('0x5d')](_0x3e9811,_[_0x1091('0x64')](_0x447c31));_0x3e29b3(_0x3e9811);})[_0x1091('0x65')](function(_0x1018d6){_0xe195e5(_0x1018d6);});});}function getAgents(_0x49bbcf,_0x272522){return new BPromise(function(_0x3fe83d,_0x59985a){return db[_0x49bbcf][_0x1091('0x58')]({'where':{'id':_0x272522}})[_0x1091('0x2c')](function(_0x93cbd){return _0x93cbd[_0x1091('0x66')]({'attributes':['id'],'raw':!![]})[_0x1091('0x2c')](function(_0x2010e4){var _0x41eb8f=_['map'](_0x2010e4,'id');_0x3fe83d(_0x41eb8f);});})['catch'](function(_0x3680b2){_0x59985a(_0x3680b2);});});}
\ No newline at end of file
index c221029..bb8b632 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd879=['update','emit','hasOwnProperty','hook','exports','events','../../mysqldb','UserNotification','setMaxListeners','save'];(function(_0x2c9b76,_0x8dd364){var _0x1389f8=function(_0x3c4159){while(--_0x3c4159){_0x2c9b76['push'](_0x2c9b76['shift']());}};_0x1389f8(++_0x8dd364);}(_0xd879,0xaf));var _0x9d87=function(_0x3b30b0,_0x3af2bf){_0x3b30b0=_0x3b30b0-0x0;var _0x36b8e5=_0xd879[_0x3b30b0];return _0x36b8e5;};'use strict';var EventEmitter=require(_0x9d87('0x0'));var UserNotification=require(_0x9d87('0x1'))['db'][_0x9d87('0x2')];var UserNotificationEvents=new EventEmitter();UserNotificationEvents[_0x9d87('0x3')](0x0);var events={'afterCreate':_0x9d87('0x4'),'afterUpdate':_0x9d87('0x5'),'afterDestroy':'remove'};function emitEvent(_0x3c4894){return function(_0x2edac1,_0x26a82f,_0x1832cf){UserNotificationEvents[_0x9d87('0x6')](_0x3c4894+':'+_0x2edac1['id'],_0x2edac1);UserNotificationEvents['emit'](_0x3c4894,_0x2edac1);_0x1832cf(null);};}for(var e in events){if(events[_0x9d87('0x7')](e)){var event=events[e];UserNotification[_0x9d87('0x8')](e,emitEvent(event));}}module[_0x9d87('0x9')]=UserNotificationEvents;
\ No newline at end of file
+var _0x8642=['exports','events','../../mysqldb','UserNotification','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook'];(function(_0x548b01,_0x2a5820){var _0x5f1806=function(_0x31d99d){while(--_0x31d99d){_0x548b01['push'](_0x548b01['shift']());}};_0x5f1806(++_0x2a5820);}(_0x8642,0x114));var _0x2864=function(_0x149ca0,_0x2ac7f5){_0x149ca0=_0x149ca0-0x0;var _0x56b6b9=_0x8642[_0x149ca0];return _0x56b6b9;};'use strict';var EventEmitter=require(_0x2864('0x0'));var UserNotification=require(_0x2864('0x1'))['db'][_0x2864('0x2')];var UserNotificationEvents=new EventEmitter();UserNotificationEvents[_0x2864('0x3')](0x0);var events={'afterCreate':_0x2864('0x4'),'afterUpdate':_0x2864('0x5'),'afterDestroy':_0x2864('0x6')};function emitEvent(_0x29e8db){return function(_0x351167,_0x2a1742,_0x12c931){UserNotificationEvents['emit'](_0x29e8db+':'+_0x351167['id'],_0x351167);UserNotificationEvents[_0x2864('0x7')](_0x29e8db,_0x351167);_0x12c931(null);};}for(var e in events){if(events[_0x2864('0x8')](e)){var event=events[e];UserNotification[_0x2864('0x9')](e,emitEvent(event));}}module[_0x2864('0xa')]=UserNotificationEvents;
\ No newline at end of file
index edeec8c..3d8653d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x81f3=['../../config/logger','api','moment','request-promise','rimraf','../../config/environment','userNotifications','util'];(function(_0x401cf2,_0x67904f){var _0x1a747f=function(_0x500d73){while(--_0x500d73){_0x401cf2['push'](_0x401cf2['shift']());}};_0x1a747f(++_0x67904f);}(_0x81f3,0xff));var _0x381f=function(_0x5bf6d0,_0x73c105){_0x5bf6d0=_0x5bf6d0-0x0;var _0x3d6fb3=_0x81f3[_0x5bf6d0];return _0x3d6fb3;};'use strict';var _=require('lodash');var util=require(_0x381f('0x0'));var logger=require(_0x381f('0x1'))(_0x381f('0x2'));var moment=require(_0x381f('0x3'));var BPromise=require('bluebird');var rp=require(_0x381f('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x381f('0x5'));var config=require(_0x381f('0x6'));var attributes=require('./userNotification.attributes');module['exports']=function(_0x381fd7,_0x343198){return _0x381fd7['define']('UserNotification',attributes,{'tableName':_0x381f('0x7'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0xdcac=['userNotifications','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./userNotification.attributes','exports','UserNotification'];(function(_0x349148,_0x31eabb){var _0x2f2b0f=function(_0x44726e){while(--_0x44726e){_0x349148['push'](_0x349148['shift']());}};_0x2f2b0f(++_0x31eabb);}(_0xdcac,0x139));var _0xcdca=function(_0x27670d,_0x18e409){_0x27670d=_0x27670d-0x0;var _0x41472e=_0xdcac[_0x27670d];return _0x41472e;};'use strict';var _=require('lodash');var util=require(_0xcdca('0x0'));var logger=require('../../config/logger')(_0xcdca('0x1'));var moment=require(_0xcdca('0x2'));var BPromise=require(_0xcdca('0x3'));var rp=require(_0xcdca('0x4'));var fs=require('fs');var path=require(_0xcdca('0x5'));var rimraf=require(_0xcdca('0x6'));var config=require(_0xcdca('0x7'));var attributes=require(_0xcdca('0x8'));module[_0xcdca('0x9')]=function(_0xc2701,_0x447be3){return _0xc2701['define'](_0xcdca('0xa'),attributes,{'tableName':_0xcdca('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 142d16c..dec3a94 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb508=['http','redis','defaults','localhost','socket.io-emitter','./userNotification.socket','register','then','info','UserNotification,\x20%s,\x20%s','request\x20sent','debug','error','code','message','lodash','util','moment','randomstring','../../mysqldb','../../config/logger','rpc','client'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0xb508,0x151));var _0x8b50=function(_0x2a14ff,_0x3ddecc){_0x2a14ff=_0x2a14ff-0x0;var _0x22b6f7=_0xb508[_0x2a14ff];return _0x22b6f7;};'use strict';var _=require(_0x8b50('0x0'));var util=require(_0x8b50('0x1'));var moment=require(_0x8b50('0x2'));var BPromise=require('bluebird');var rs=require(_0x8b50('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8b50('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x8b50('0x5'))(_0x8b50('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x8b50('0x7')][_0x8b50('0x8')]({'port':0x232a});config[_0x8b50('0x9')]=_[_0x8b50('0xa')](config['redis'],{'host':_0x8b50('0xb'),'port':0x18eb});var socket=require(_0x8b50('0xc'))(new Redis(config['redis']));require(_0x8b50('0xd'))[_0x8b50('0xe')](socket);function respondWithRpcPromise(_0x26ced8,_0x4c7faf,_0x3b4a7f){return new BPromise(function(_0xdd5d0a,_0x2683b1){return client['request'](_0x26ced8,_0x3b4a7f)[_0x8b50('0xf')](function(_0x14f747){logger[_0x8b50('0x10')](_0x8b50('0x11'),_0x4c7faf,_0x8b50('0x12'));logger[_0x8b50('0x13')]('UserNotification,\x20%s,\x20%s,\x20%s',_0x4c7faf,_0x8b50('0x12'),JSON['stringify'](_0x14f747));if(_0x14f747['error']){if(_0x14f747[_0x8b50('0x14')][_0x8b50('0x15')]===0x1f4){logger[_0x8b50('0x14')]('UserNotification,\x20%s,\x20%s',_0x4c7faf,_0x14f747['error'][_0x8b50('0x16')]);return _0x2683b1(_0x14f747[_0x8b50('0x14')][_0x8b50('0x16')]);}logger[_0x8b50('0x14')](_0x8b50('0x11'),_0x4c7faf,_0x14f747[_0x8b50('0x14')]['message']);return _0xdd5d0a(_0x14f747[_0x8b50('0x14')][_0x8b50('0x16')]);}else{logger['info'](_0x8b50('0x11'),_0x4c7faf,_0x8b50('0x12'));_0xdd5d0a(_0x14f747['result'][_0x8b50('0x16')]);}})['catch'](function(_0x1bff5e){logger['error'](_0x8b50('0x11'),_0x4c7faf,_0x1bff5e);_0x2683b1(_0x1bff5e);});});}
\ No newline at end of file
+var _0x8175=['client','http','redis','defaults','localhost','socket.io-emitter','./userNotification.socket','register','request','then','info','UserNotification,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x140053,_0x29b9ce){var _0x440248=function(_0x22a1a5){while(--_0x22a1a5){_0x140053['push'](_0x140053['shift']());}};_0x440248(++_0x29b9ce);}(_0x8175,0x1d4));var _0x5817=function(_0x44e7b9,_0xf7f5cc){_0x44e7b9=_0x44e7b9-0x0;var _0x1de7ac=_0x8175[_0x44e7b9];return _0x1de7ac;};'use strict';var _=require(_0x5817('0x0'));var util=require(_0x5817('0x1'));var moment=require(_0x5817('0x2'));var BPromise=require(_0x5817('0x3'));var rs=require(_0x5817('0x4'));var fs=require('fs');var Redis=require(_0x5817('0x5'));var db=require(_0x5817('0x6'))['db'];var utils=require(_0x5817('0x7'));var logger=require(_0x5817('0x8'))(_0x5817('0x9'));var config=require(_0x5817('0xa'));var jayson=require(_0x5817('0xb'));var client=jayson[_0x5817('0xc')][_0x5817('0xd')]({'port':0x232a});config[_0x5817('0xe')]=_[_0x5817('0xf')](config['redis'],{'host':_0x5817('0x10'),'port':0x18eb});var socket=require(_0x5817('0x11'))(new Redis(config['redis']));require(_0x5817('0x12'))[_0x5817('0x13')](socket);function respondWithRpcPromise(_0x27e0f4,_0x2d5055,_0x1b160b){return new BPromise(function(_0x5aaeea,_0x1ccfca){return client[_0x5817('0x14')](_0x27e0f4,_0x1b160b)[_0x5817('0x15')](function(_0x381955){logger[_0x5817('0x16')](_0x5817('0x17'),_0x2d5055,_0x5817('0x18'));logger[_0x5817('0x19')]('UserNotification,\x20%s,\x20%s,\x20%s',_0x2d5055,'request\x20sent',JSON[_0x5817('0x1a')](_0x381955));if(_0x381955[_0x5817('0x1b')]){if(_0x381955[_0x5817('0x1b')][_0x5817('0x1c')]===0x1f4){logger[_0x5817('0x1b')]('UserNotification,\x20%s,\x20%s',_0x2d5055,_0x381955['error'][_0x5817('0x1d')]);return _0x1ccfca(_0x381955[_0x5817('0x1b')][_0x5817('0x1d')]);}logger[_0x5817('0x1b')](_0x5817('0x17'),_0x2d5055,_0x381955[_0x5817('0x1b')]['message']);return _0x5aaeea(_0x381955[_0x5817('0x1b')]['message']);}else{logger['info']('UserNotification,\x20%s,\x20%s',_0x2d5055,_0x5817('0x18'));_0x5aaeea(_0x381955[_0x5817('0x1e')][_0x5817('0x1d')]);}})[_0x5817('0x1f')](function(_0x26beb4){logger[_0x5817('0x1b')](_0x5817('0x17'),_0x2d5055,_0x26beb4);_0x1ccfca(_0x26beb4);});});}
\ No newline at end of file
index 31bd437..4e527f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ed9=['emit','register','length','./userNotification.events','save','remove','update'];(function(_0x193e19,_0x50f87c){var _0x328220=function(_0x56aa9b){while(--_0x56aa9b){_0x193e19['push'](_0x193e19['shift']());}};_0x328220(++_0x50f87c);}(_0x2ed9,0x6c));var _0x92ed=function(_0x411871,_0x3f6641){_0x411871=_0x411871-0x0;var _0x2ab4fc=_0x2ed9[_0x411871];return _0x2ab4fc;};'use strict';var UserNotificationEvents=require(_0x92ed('0x0'));var events=[_0x92ed('0x1'),_0x92ed('0x2'),_0x92ed('0x3')];function createListener(_0x594c4b,_0x123a3f){return function(_0x406905){_0x123a3f[_0x92ed('0x4')](_0x594c4b,_0x406905);};}function removeListener(_0x2a02d3,_0x399917){return function(){UserNotificationEvents['removeListener'](_0x2a02d3,_0x399917);};}exports[_0x92ed('0x5')]=function(_0xf46a1b){for(var _0x57cecb=0x0,_0x5726d1=events[_0x92ed('0x6')];_0x57cecb<_0x5726d1;_0x57cecb++){var _0xb9132=events[_0x57cecb];var _0x5eda2a=createListener('userNotification:'+_0xb9132,_0xf46a1b);UserNotificationEvents['on'](_0xb9132,_0x5eda2a);}};
\ No newline at end of file
+var _0x8be9=['remove','update','emit','removeListener','length','./userNotification.events'];(function(_0x103117,_0x5eae59){var _0x3e0aa3=function(_0x44c1c2){while(--_0x44c1c2){_0x103117['push'](_0x103117['shift']());}};_0x3e0aa3(++_0x5eae59);}(_0x8be9,0xe9));var _0x98be=function(_0x57c068,_0x533032){_0x57c068=_0x57c068-0x0;var _0x2e7de1=_0x8be9[_0x57c068];return _0x2e7de1;};'use strict';var UserNotificationEvents=require(_0x98be('0x0'));var events=['save',_0x98be('0x1'),_0x98be('0x2')];function createListener(_0x37f96e,_0x2cfa7d){return function(_0x4a4b3b){_0x2cfa7d[_0x98be('0x3')](_0x37f96e,_0x4a4b3b);};}function removeListener(_0xe8070f,_0x129758){return function(){UserNotificationEvents[_0x98be('0x4')](_0xe8070f,_0x129758);};}exports['register']=function(_0x354807){for(var _0x235857=0x0,_0x39db33=events[_0x98be('0x5')];_0x235857<_0x39db33;_0x235857++){var _0x561eef=events[_0x235857];var _0x4dcf5b=createListener('userNotification:'+_0x561eef,_0x354807);UserNotificationEvents['on'](_0x561eef,_0x4dcf5b);}};
\ No newline at end of file
index 24c39a7..c18ef95 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','multer','util'];(function(_0xe155f0,_0x2989c8){var _0x453005=function(_0x3b5fe2){while(--_0x3b5fe2){_0xe155f0['push'](_0xe155f0['shift']());}};_0x453005(++_0x2989c8);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));module['exports']=router;
\ No newline at end of file
+var _0x9c44=['express','Router','fs-extra','../../components/auth/service','exports','path','connect-timeout'];(function(_0x575228,_0x3f9bc1){var _0x4cb11e=function(_0x36820e){while(--_0x36820e){_0x575228['push'](_0x575228['shift']());}};_0x4cb11e(++_0x3f9bc1);}(_0x9c44,0x178));var _0x49c4=function(_0x18ab2a,_0x4debcd){_0x18ab2a=_0x18ab2a-0x0;var _0x16dcee=_0x9c44[_0x18ab2a];return _0x16dcee;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x49c4('0x0'));var timeout=require(_0x49c4('0x1'));var express=require(_0x49c4('0x2'));var router=express[_0x49c4('0x3')]();var fs_extra=require(_0x49c4('0x4'));var auth=require(_0x49c4('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');module[_0x49c4('0x6')]=router;
\ No newline at end of file
index 7d517d5..5b198e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e2a=['exports','INTEGER','sequelize'];(function(_0x5e6b49,_0xb79716){var _0x1e5fdb=function(_0x39d8a6){while(--_0x39d8a6){_0x5e6b49['push'](_0x5e6b49['shift']());}};_0x1e5fdb(++_0xb79716);}(_0x7e2a,0x1b2));var _0xa7e2=function(_0x4f74ac,_0x17d4f1){_0x4f74ac=_0x4f74ac-0x0;var _0x27d8d0=_0x7e2a[_0x4f74ac];return _0x27d8d0;};'use strict';var Sequelize=require(_0xa7e2('0x0'));module[_0xa7e2('0x1')]={'penalty':{'type':Sequelize[_0xa7e2('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x8466=['exports','sequelize'];(function(_0x3f9e00,_0x200d3b){var _0x4dded9=function(_0x2e4cb1){while(--_0x2e4cb1){_0x3f9e00['push'](_0x3f9e00['shift']());}};_0x4dded9(++_0x200d3b);}(_0x8466,0x139));var _0x6846=function(_0x311810,_0x570e53){_0x311810=_0x311810-0x0;var _0x497ebd=_0x8466[_0x311810];return _0x497ebd;};'use strict';var Sequelize=require(_0x6846('0x0'));module[_0x6846('0x1')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index 1623a5f..f97a51c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4f2=['util','../../config/logger','api','bluebird','request-promise','rimraf','./userOpenchannelQueue.attributes','define','UserOpenchannelQueue','user_has_openchannel_queues','lodash'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xf4f2,0x8e));var _0x2f4f=function(_0x5159d3,_0x2bc997){_0x5159d3=_0x5159d3-0x0;var _0x1b356c=_0xf4f2[_0x5159d3];return _0x1b356c;};'use strict';var _=require(_0x2f4f('0x0'));var util=require(_0x2f4f('0x1'));var logger=require(_0x2f4f('0x2'))(_0x2f4f('0x3'));var moment=require('moment');var BPromise=require(_0x2f4f('0x4'));var rp=require(_0x2f4f('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x2f4f('0x6'));var config=require('../../config/environment');var attributes=require(_0x2f4f('0x7'));module['exports']=function(_0x4071ae,_0x3487d0){return _0x4071ae[_0x2f4f('0x8')](_0x2f4f('0x9'),attributes,{'tableName':_0x2f4f('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5993=['rimraf','../../config/environment','exports','user_has_openchannel_queues','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x291a08,_0x95c15b){var _0x2a33e3=function(_0x1eddd3){while(--_0x1eddd3){_0x291a08['push'](_0x291a08['shift']());}};_0x2a33e3(++_0x95c15b);}(_0x5993,0x1d8));var _0x3599=function(_0x385467,_0x298239){_0x385467=_0x385467-0x0;var _0x5ed67e=_0x5993[_0x385467];return _0x5ed67e;};'use strict';var _=require(_0x3599('0x0'));var util=require(_0x3599('0x1'));var logger=require(_0x3599('0x2'))(_0x3599('0x3'));var moment=require(_0x3599('0x4'));var BPromise=require(_0x3599('0x5'));var rp=require(_0x3599('0x6'));var fs=require('fs');var path=require(_0x3599('0x7'));var rimraf=require(_0x3599('0x8'));var config=require(_0x3599('0x9'));var attributes=require('./userOpenchannelQueue.attributes');module[_0x3599('0xa')]=function(_0x4f8af0,_0x2a0228){return _0x4f8af0['define']('UserOpenchannelQueue',attributes,{'tableName':_0x3599('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 71e0403..2d850eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb2d1=['request\x20sent','UserOpenchannelQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','../../config/environment','client','request','UserOpenchannelQueue,\x20%s,\x20%s'];(function(_0x13e741,_0x5d3c24){var _0x3f8bb3=function(_0x4440a0){while(--_0x4440a0){_0x13e741['push'](_0x13e741['shift']());}};_0x3f8bb3(++_0x5d3c24);}(_0xb2d1,0xc2));var _0x1b2d=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0xb2d1[_0x42cae2];return _0x5f256f;};'use strict';var _=require('lodash');var util=require(_0x1b2d('0x0'));var moment=require(_0x1b2d('0x1'));var BPromise=require(_0x1b2d('0x2'));var rs=require(_0x1b2d('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x1b2d('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x1b2d('0x5'))('rpc');var config=require(_0x1b2d('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x1b2d('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x363e45,_0x4ea3f8,_0x287ad4){return new BPromise(function(_0x2fb4bf,_0x597699){return client[_0x1b2d('0x8')](_0x363e45,_0x287ad4)['then'](function(_0x127bd7){logger['info'](_0x1b2d('0x9'),_0x4ea3f8,_0x1b2d('0xa'));logger['debug'](_0x1b2d('0xb'),_0x4ea3f8,'request\x20sent',JSON[_0x1b2d('0xc')](_0x127bd7));if(_0x127bd7[_0x1b2d('0xd')]){if(_0x127bd7[_0x1b2d('0xd')][_0x1b2d('0xe')]===0x1f4){logger['error'](_0x1b2d('0x9'),_0x4ea3f8,_0x127bd7[_0x1b2d('0xd')][_0x1b2d('0xf')]);return _0x597699(_0x127bd7[_0x1b2d('0xd')][_0x1b2d('0xf')]);}logger['error'](_0x1b2d('0x9'),_0x4ea3f8,_0x127bd7[_0x1b2d('0xd')]['message']);return _0x2fb4bf(_0x127bd7[_0x1b2d('0xd')][_0x1b2d('0xf')]);}else{logger[_0x1b2d('0x10')](_0x1b2d('0x9'),_0x4ea3f8,_0x1b2d('0xa'));_0x2fb4bf(_0x127bd7['result'][_0x1b2d('0xf')]);}})['catch'](function(_0x423378){logger[_0x1b2d('0xd')]('UserOpenchannelQueue,\x20%s,\x20%s',_0x4ea3f8,_0x423378);_0x597699(_0x423378);});});}
\ No newline at end of file
+var _0x9c4a=['catch','lodash','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','UserOpenchannelQueue,\x20%s,\x20%s','stringify','error','code','message','info','request\x20sent','result'];(function(_0x2f7614,_0x462ab1){var _0x483555=function(_0x2cb884){while(--_0x2cb884){_0x2f7614['push'](_0x2f7614['shift']());}};_0x483555(++_0x462ab1);}(_0x9c4a,0x1b9));var _0xa9c4=function(_0x3740fe,_0x6c543c){_0x3740fe=_0x3740fe-0x0;var _0x55492b=_0x9c4a[_0x3740fe];return _0x55492b;};'use strict';var _=require(_0xa9c4('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xa9c4('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa9c4('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0xa9c4('0x3'));var logger=require(_0xa9c4('0x4'))(_0xa9c4('0x5'));var config=require(_0xa9c4('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xa9c4('0x7')][_0xa9c4('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x66a387,_0x3f6971,_0x728c36){return new BPromise(function(_0x247c97,_0x2416e0){return client[_0xa9c4('0x9')](_0x66a387,_0x728c36)[_0xa9c4('0xa')](function(_0x1c9161){logger['info'](_0xa9c4('0xb'),_0x3f6971,'request\x20sent');logger['debug']('UserOpenchannelQueue,\x20%s,\x20%s,\x20%s',_0x3f6971,'request\x20sent',JSON[_0xa9c4('0xc')](_0x1c9161));if(_0x1c9161['error']){if(_0x1c9161[_0xa9c4('0xd')][_0xa9c4('0xe')]===0x1f4){logger['error'](_0xa9c4('0xb'),_0x3f6971,_0x1c9161[_0xa9c4('0xd')][_0xa9c4('0xf')]);return _0x2416e0(_0x1c9161['error'][_0xa9c4('0xf')]);}logger[_0xa9c4('0xd')]('UserOpenchannelQueue,\x20%s,\x20%s',_0x3f6971,_0x1c9161[_0xa9c4('0xd')][_0xa9c4('0xf')]);return _0x247c97(_0x1c9161[_0xa9c4('0xd')]['message']);}else{logger[_0xa9c4('0x10')](_0xa9c4('0xb'),_0x3f6971,_0xa9c4('0x11'));_0x247c97(_0x1c9161[_0xa9c4('0x12')][_0xa9c4('0xf')]);}})[_0xa9c4('0x13')](function(_0x263f4d){logger[_0xa9c4('0xd')](_0xa9c4('0xb'),_0x3f6971,_0x263f4d);_0x2416e0(_0x263f4d);});});}
\ No newline at end of file
index 75e50a1..ac41314 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4beb=['show','/:id/sections','getSections','/:id/resources','getResources','post','create','/:id/clone','clone','update','destroy','delete','removeSections','removeResources','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','describe','/:id'];(function(_0x330522,_0x30411b){var _0x1dcc6f=function(_0x2891f9){while(--_0x2891f9){_0x330522['push'](_0x330522['shift']());}};_0x1dcc6f(++_0x30411b);}(_0x4beb,0x17b));var _0xb4be=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x4beb[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0xb4be('0x0'));var util=require('util');var path=require(_0xb4be('0x1'));var timeout=require(_0xb4be('0x2'));var express=require(_0xb4be('0x3'));var router=express[_0xb4be('0x4')]();var fs_extra=require(_0xb4be('0x5'));var auth=require(_0xb4be('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xb4be('0x7'));var controller=require('./userProfile.controller');router[_0xb4be('0x8')]('/',auth[_0xb4be('0x9')](),controller[_0xb4be('0xa')]);router[_0xb4be('0x8')]('/describe',auth[_0xb4be('0x9')](),controller[_0xb4be('0xb')]);router['get'](_0xb4be('0xc'),auth[_0xb4be('0x9')](),controller[_0xb4be('0xd')]);router[_0xb4be('0x8')](_0xb4be('0xe'),auth['isAuthenticated'](),controller[_0xb4be('0xf')]);router[_0xb4be('0x8')](_0xb4be('0x10'),auth['isAuthenticated'](),controller[_0xb4be('0x11')]);router[_0xb4be('0x12')]('/',auth['isAuthenticated'](),controller[_0xb4be('0x13')]);router['post'](_0xb4be('0x14'),auth[_0xb4be('0x9')](),controller[_0xb4be('0x15')]);router[_0xb4be('0x12')]('/:id/sections',auth[_0xb4be('0x9')](),controller['addSections']);router[_0xb4be('0x12')]('/:id/resources',auth['isAuthenticated'](),controller['addResources']);router['put'](_0xb4be('0xc'),auth['isAuthenticated'](),controller[_0xb4be('0x16')]);router['delete'](_0xb4be('0xc'),auth['isAuthenticated'](),controller[_0xb4be('0x17')]);router[_0xb4be('0x18')]('/:id/sections',auth[_0xb4be('0x9')](),controller[_0xb4be('0x19')]);router[_0xb4be('0x18')](_0xb4be('0x10'),auth[_0xb4be('0x9')](),controller[_0xb4be('0x1a')]);module[_0xb4be('0x1b')]=router;
\ No newline at end of file
+var _0xf24e=['./userProfile.controller','get','isAuthenticated','index','/describe','/:id','show','getSections','getResources','post','/:id/clone','/:id/sections','/:id/resources','addResources','put','update','removeSections','delete','removeResources','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../config/environment'];(function(_0x32316c,_0x9aabbc){var _0x10e255=function(_0x524d74){while(--_0x524d74){_0x32316c['push'](_0x32316c['shift']());}};_0x10e255(++_0x9aabbc);}(_0xf24e,0x1b8));var _0xef24=function(_0x176329,_0x568c84){_0x176329=_0x176329-0x0;var _0x31997c=_0xf24e[_0x176329];return _0x31997c;};'use strict';var multer=require(_0xef24('0x0'));var util=require(_0xef24('0x1'));var path=require(_0xef24('0x2'));var timeout=require(_0xef24('0x3'));var express=require(_0xef24('0x4'));var router=express[_0xef24('0x5')]();var fs_extra=require(_0xef24('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xef24('0x7'));var controller=require(_0xef24('0x8'));router[_0xef24('0x9')]('/',auth[_0xef24('0xa')](),controller[_0xef24('0xb')]);router[_0xef24('0x9')](_0xef24('0xc'),auth[_0xef24('0xa')](),controller['describe']);router[_0xef24('0x9')](_0xef24('0xd'),auth[_0xef24('0xa')](),controller[_0xef24('0xe')]);router['get']('/:id/sections',auth[_0xef24('0xa')](),controller[_0xef24('0xf')]);router[_0xef24('0x9')]('/:id/resources',auth[_0xef24('0xa')](),controller[_0xef24('0x10')]);router[_0xef24('0x11')]('/',auth[_0xef24('0xa')](),controller['create']);router[_0xef24('0x11')](_0xef24('0x12'),auth[_0xef24('0xa')](),controller['clone']);router['post'](_0xef24('0x13'),auth[_0xef24('0xa')](),controller['addSections']);router[_0xef24('0x11')](_0xef24('0x14'),auth[_0xef24('0xa')](),controller[_0xef24('0x15')]);router[_0xef24('0x16')](_0xef24('0xd'),auth[_0xef24('0xa')](),controller[_0xef24('0x17')]);router['delete']('/:id',auth['isAuthenticated'](),controller['destroy']);router['delete'](_0xef24('0x13'),auth[_0xef24('0xa')](),controller[_0xef24('0x18')]);router[_0xef24('0x19')](_0xef24('0x14'),auth[_0xef24('0xa')](),controller[_0xef24('0x1a')]);module[_0xef24('0x1b')]=router;
\ No newline at end of file
index add03b8..9fed861 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x10cd=['join','getDataValue','split','BOOLEAN','exports','STRING','name','setDataValue','crudPermissions'];(function(_0x4a94b1,_0x4f2518){var _0x20949f=function(_0x1c4aa6){while(--_0x1c4aa6){_0x4a94b1['push'](_0x4a94b1['shift']());}};_0x20949f(++_0x4f2518);}(_0x10cd,0x1f3));var _0xd10c=function(_0x5da8db,_0x5c2103){_0x5da8db=_0x5da8db-0x0;var _0x1eb753=_0x10cd[_0x5da8db];return _0x1eb753;};'use strict';var Sequelize=require('sequelize');module[_0xd10c('0x0')]={'name':{'type':Sequelize[_0xd10c('0x1')],'allowNull':![],'unique':_0xd10c('0x2')},'crudPermissions':{'type':Sequelize[_0xd10c('0x1')],'set':function(_0x226f8e){this[_0xd10c('0x3')](_0xd10c('0x4'),_0x226f8e?_0x226f8e[_0xd10c('0x5')](''):[]);},'get':function(){return this[_0xd10c('0x6')](_0xd10c('0x4'))?this[_0xd10c('0x6')](_0xd10c('0x4'))[_0xd10c('0x7')](''):[];},'allowNull':![],'defaultValue':'r'},'description':{'type':Sequelize[_0xd10c('0x1')],'allowNull':!![]},'privacyEnabled':{'type':Sequelize[_0xd10c('0x8')],'defaultValue':![]},'downloadAttachments':{'type':Sequelize[_0xd10c('0x8')],'defaultValue':!![]},'downloadCallySquareRecordings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadContactManagerLists':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadJscriptySessions':{'type':Sequelize[_0xd10c('0x8')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0xd10c('0x8')],'defaultValue':!![]},'downloadScreenRecordings':{'type':Sequelize[_0xd10c('0x8')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0xd10c('0x8')],'defaultValue':!![]}};
\ No newline at end of file
+var _0xc41d=['split','BOOLEAN','sequelize','STRING','setDataValue','crudPermissions','join','getDataValue'];(function(_0x56482c,_0x16118d){var _0x5aae7a=function(_0x52512f){while(--_0x52512f){_0x56482c['push'](_0x56482c['shift']());}};_0x5aae7a(++_0x16118d);}(_0xc41d,0x192));var _0xdc41=function(_0x3a0f15,_0x3615f2){_0x3a0f15=_0x3a0f15-0x0;var _0x373b22=_0xc41d[_0x3a0f15];return _0x373b22;};'use strict';var Sequelize=require(_0xdc41('0x0'));module['exports']={'name':{'type':Sequelize[_0xdc41('0x1')],'allowNull':![],'unique':'name'},'crudPermissions':{'type':Sequelize[_0xdc41('0x1')],'set':function(_0x2ed640){this[_0xdc41('0x2')](_0xdc41('0x3'),_0x2ed640?_0x2ed640[_0xdc41('0x4')](''):[]);},'get':function(){return this[_0xdc41('0x5')](_0xdc41('0x3'))?this[_0xdc41('0x5')](_0xdc41('0x3'))[_0xdc41('0x6')](''):[];},'allowNull':![],'defaultValue':'r'},'description':{'type':Sequelize[_0xdc41('0x1')],'allowNull':!![]},'privacyEnabled':{'type':Sequelize[_0xdc41('0x7')],'defaultValue':![]},'downloadAttachments':{'type':Sequelize[_0xdc41('0x7')],'defaultValue':!![]},'downloadCallySquareRecordings':{'type':Sequelize[_0xdc41('0x7')],'defaultValue':!![]},'downloadContactManagerLists':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadJscriptySessions':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0xdc41('0x7')],'defaultValue':!![]},'downloadScreenRecordings':{'type':Sequelize[_0xdc41('0x7')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0xdc41('0x7')],'defaultValue':!![]}};
\ No newline at end of file
index 304bd3d..ab1e5a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x964b=['UserProfile','includeAll','include','findAll','rows','catch','show','merge','find','create','body','keys','get','omit','crudPermissions','updatedAt','sequelize','UserProfileSection','params','autoAssociation','UserProfileResource','createdAt','sectionId','userProfileId','Resources','describe','addSections','transaction','each','removeSections','ids','getSections','enabled','includes','isEmpty','subsections','push','findOne','Dashboard','forEach','resourceId','Plugin','addResources','bulkCreate','removeResources','getResources','section','Missing\x20section\x20parameter','hasOwnProperty','No\x20User\x20Profile\x20found\x20for\x20id\x20','eml-format','rimraf','fast-json-patch','request-promise','moment','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','socket.io-emitter','redis','./userProfile.socket','register','status','json','offset','count','set','reject','update','destroy','then','end','sendStatus','error','stack','name','send','rawAttributes','fieldName','type','model','query','filters','intersection','attributes','fields','length','nolimit','limit','order','sort','filter','where','map','VIRTUAL','options'];(function(_0x1a7581,_0xc6a8eb){var _0x2f4b0d=function(_0x3725e4){while(--_0x3725e4){_0x1a7581['push'](_0x1a7581['shift']());}};_0x2f4b0d(++_0xc6a8eb);}(_0x964b,0x112));var _0xb964=function(_0x46c590,_0x432e4b){_0x46c590=_0x46c590-0x0;var _0x30ea3a=_0x964b[_0x46c590];return _0x30ea3a;};'use strict';var emlformat=require(_0xb964('0x0'));var rimraf=require(_0xb964('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xb964('0x2'));var rp=require(_0xb964('0x3'));var moment=require(_0xb964('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xb964('0x5'));var path=require('path');var sox=require(_0xb964('0x6'));var csv=require(_0xb964('0x7'));var ejs=require(_0xb964('0x8'));var fs=require('fs');var fs_extra=require(_0xb964('0x9'));var _=require(_0xb964('0xa'));var squel=require(_0xb964('0xb'));var crypto=require(_0xb964('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xb964('0x7'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xb964('0xd'));var authService=require(_0xb964('0xe'));var qs=require(_0xb964('0xf'));var as=require(_0xb964('0x10'));var hardwareService=require(_0xb964('0x11'));var logger=require(_0xb964('0x12'))('api');var utils=require(_0xb964('0x13'));var config=require(_0xb964('0x14'));var licenseUtil=require(_0xb964('0x15'));var db=require(_0xb964('0x16'))['db'];config['redis']=_[_0xb964('0x17')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xb964('0x18'))(new Redis(config[_0xb964('0x19')]));require(_0xb964('0x1a'))[_0xb964('0x1b')](socket);function respondWithStatusCode(_0x2eebf3,_0x31c7f4){_0x31c7f4=_0x31c7f4||0xcc;return function(_0x3d5baa){if(_0x3d5baa){return _0x2eebf3['sendStatus'](_0x31c7f4);}return _0x2eebf3[_0xb964('0x1c')](_0x31c7f4)['end']();};}function respondWithResult(_0x538d2e,_0xd775d5){_0xd775d5=_0xd775d5||0xc8;return function(_0x19eb59){if(_0x19eb59){return _0x538d2e[_0xb964('0x1c')](_0xd775d5)[_0xb964('0x1d')](_0x19eb59);}};}function respondWithFilteredResult(_0x96e70a,_0x43309f){return function(_0x263276){if(_0x263276){var _0x44d78a=typeof _0x43309f[_0xb964('0x1e')]==='undefined'&&typeof _0x43309f['limit']==='undefined';var _0x2f5068=_0x263276[_0xb964('0x1f')];var _0x209075=_0x44d78a?0x0:_0x43309f[_0xb964('0x1e')];var _0x12056d=_0x44d78a?_0x263276['count']:_0x43309f['offset']+_0x43309f['limit'];var _0x36df0d;if(_0x12056d>=_0x2f5068){_0x12056d=_0x2f5068;_0x36df0d=0xc8;}else{_0x36df0d=0xce;}_0x96e70a[_0xb964('0x1c')](_0x36df0d);return _0x96e70a[_0xb964('0x20')]('Content-Range',_0x209075+'-'+_0x12056d+'/'+_0x2f5068)[_0xb964('0x1d')](_0x263276);}return null;};}function patchUpdates(_0x39f423){return function(_0x1ba889){try{jsonpatch['apply'](_0x1ba889,_0x39f423,!![]);}catch(_0x486d66){return BPromise[_0xb964('0x21')](_0x486d66);}return _0x1ba889['save']();};}function saveUpdates(_0x14dece,_0x2bace5){return function(_0x2b9b74){if(_0x2b9b74){return _0x2b9b74[_0xb964('0x22')](_0x14dece)['then'](function(_0x1cecce){return _0x1cecce;});}return null;};}function removeEntity(_0x1d9dcd,_0x2801dd){return function(_0x227d11){if(_0x227d11){return _0x227d11[_0xb964('0x23')]()[_0xb964('0x24')](function(){_0x1d9dcd[_0xb964('0x1c')](0xcc)[_0xb964('0x25')]();});}};}function handleEntityNotFound(_0x142f76,_0x4d82e2){return function(_0x2b5b7d){if(!_0x2b5b7d){_0x142f76[_0xb964('0x26')](0x194);}return _0x2b5b7d;};}function handleError(_0x9e2530,_0x271c55){_0x271c55=_0x271c55||0x1f4;return function(_0x4249fa){logger[_0xb964('0x27')](_0x4249fa[_0xb964('0x28')]);if(_0x4249fa['name']){delete _0x4249fa[_0xb964('0x29')];}_0x9e2530[_0xb964('0x1c')](_0x271c55)[_0xb964('0x2a')](_0x4249fa);};}exports['index']=function(_0x3615c0,_0x42fc07){var _0xa0df8b={},_0x2cc8b6={},_0x4321c3={'count':0x0,'rows':[]};var _0x36117c=_['map'](db['UserProfile'][_0xb964('0x2b')],function(_0x3b38c0){return{'name':_0x3b38c0[_0xb964('0x2c')],'type':_0x3b38c0[_0xb964('0x2d')]['key']};});_0x2cc8b6[_0xb964('0x2e')]=_['map'](_0x36117c,_0xb964('0x29'));_0x2cc8b6[_0xb964('0x2f')]=_['keys'](_0x3615c0['query']);_0x2cc8b6[_0xb964('0x30')]=_[_0xb964('0x31')](_0x2cc8b6[_0xb964('0x2e')],_0x2cc8b6[_0xb964('0x2f')]);_0xa0df8b[_0xb964('0x32')]=_[_0xb964('0x31')](_0x2cc8b6['model'],qs['fields'](_0x3615c0['query'][_0xb964('0x33')]));_0xa0df8b[_0xb964('0x32')]=_0xa0df8b[_0xb964('0x32')][_0xb964('0x34')]?_0xa0df8b[_0xb964('0x32')]:_0x2cc8b6[_0xb964('0x2e')];if(!_0x3615c0['query']['hasOwnProperty'](_0xb964('0x35'))){_0xa0df8b[_0xb964('0x36')]=qs[_0xb964('0x36')](_0x3615c0[_0xb964('0x2f')][_0xb964('0x36')]);_0xa0df8b['offset']=qs[_0xb964('0x1e')](_0x3615c0[_0xb964('0x2f')][_0xb964('0x1e')]);}_0xa0df8b[_0xb964('0x37')]=qs[_0xb964('0x38')](_0x3615c0[_0xb964('0x2f')][_0xb964('0x38')]);_0xa0df8b['where']=qs[_0xb964('0x30')](_['pick'](_0x3615c0[_0xb964('0x2f')],_0x2cc8b6['filters']),_0x36117c);if(_0x3615c0[_0xb964('0x2f')][_0xb964('0x39')]){_0xa0df8b['where']=_['merge'](_0xa0df8b[_0xb964('0x3a')],{'$or':_[_0xb964('0x3b')](_0x36117c,function(_0x2f9e6d){if(_0x2f9e6d[_0xb964('0x2d')]!==_0xb964('0x3c')){var _0x47c798={};_0x47c798[_0x2f9e6d[_0xb964('0x29')]]={'$like':'%'+_0x3615c0[_0xb964('0x2f')][_0xb964('0x39')]+'%'};return _0x47c798;}})});}_0xa0df8b=_['merge']({},_0xa0df8b,_0x3615c0[_0xb964('0x3d')]);var _0x16c4bc={'where':_0xa0df8b[_0xb964('0x3a')]};return db[_0xb964('0x3e')][_0xb964('0x1f')](_0x16c4bc)['then'](function(_0xe962f9){_0x4321c3[_0xb964('0x1f')]=_0xe962f9;if(_0x3615c0['query'][_0xb964('0x3f')]){_0xa0df8b[_0xb964('0x40')]=[{'all':!![]}];}return db[_0xb964('0x3e')][_0xb964('0x41')](_0xa0df8b);})['then'](function(_0x4a0d65){_0x4321c3[_0xb964('0x42')]=_0x4a0d65;return _0x4321c3;})[_0xb964('0x24')](respondWithFilteredResult(_0x42fc07,_0xa0df8b))[_0xb964('0x43')](handleError(_0x42fc07,null));};exports[_0xb964('0x44')]=function(_0x141f3d,_0x176c92){var _0x218562={'raw':![],'where':{'id':_0x141f3d['params']['id']}},_0x19687e={};_0x19687e[_0xb964('0x2e')]=_['keys'](db[_0xb964('0x3e')][_0xb964('0x2b')]);_0x19687e[_0xb964('0x2f')]=_['keys'](_0x141f3d[_0xb964('0x2f')]);_0x19687e[_0xb964('0x30')]=_[_0xb964('0x31')](_0x19687e[_0xb964('0x2e')],_0x19687e[_0xb964('0x2f')]);_0x218562[_0xb964('0x32')]=_[_0xb964('0x31')](_0x19687e[_0xb964('0x2e')],qs[_0xb964('0x33')](_0x141f3d['query']['fields']));_0x218562['attributes']=_0x218562[_0xb964('0x32')][_0xb964('0x34')]?_0x218562['attributes']:_0x19687e[_0xb964('0x2e')];if(_0x141f3d[_0xb964('0x2f')]['includeAll']){_0x218562['include']=[{'all':!![]}];}_0x218562=_[_0xb964('0x45')]({},_0x218562,_0x141f3d[_0xb964('0x3d')]);return db[_0xb964('0x3e')][_0xb964('0x46')](_0x218562)['then'](handleEntityNotFound(_0x176c92,null))[_0xb964('0x24')](respondWithResult(_0x176c92,null))['catch'](handleError(_0x176c92,null));};exports[_0xb964('0x47')]=function(_0x29bf54,_0x3cbfd5){return db[_0xb964('0x3e')][_0xb964('0x47')](_0x29bf54[_0xb964('0x48')],{})[_0xb964('0x24')](respondWithResult(_0x3cbfd5,0xc9))[_0xb964('0x43')](handleError(_0x3cbfd5,null));};exports['clone']=function(_0x2d74b7,_0x2f6406){var _0xd97da7={'where':{'id':_0x2d74b7['params']['id']}},_0x28c31a={};_0x28c31a[_0xb964('0x2e')]=_[_0xb964('0x49')](db[_0xb964('0x3e')][_0xb964('0x2b')]);_0xd97da7[_0xb964('0x32')]=_[_0xb964('0x31')](_0x28c31a[_0xb964('0x2e')],qs[_0xb964('0x33')](_0x2d74b7[_0xb964('0x2f')][_0xb964('0x33')]));_0xd97da7[_0xb964('0x32')]=_0xd97da7[_0xb964('0x32')][_0xb964('0x34')]?_0xd97da7[_0xb964('0x32')]:_0x28c31a[_0xb964('0x2e')];if(_0x2d74b7['query'][_0xb964('0x3f')]){_0xd97da7['include']=[{'all':!![]}];}_0xd97da7=_[_0xb964('0x45')]({},_0xd97da7,_0x2d74b7[_0xb964('0x3d')]);return db[_0xb964('0x3e')][_0xb964('0x46')](_0xd97da7)['then'](handleEntityNotFound(_0x2f6406,null))[_0xb964('0x24')](function(_0xc73004){if(_0xc73004){var _0x3947de=_0xc73004[_0xb964('0x4a')]({'plain':!![]});_0x3947de=qs[_0xb964('0x4b')](_0x3947de,['id','createdAt','updatedAt',_0xb964('0x4c')]);_0x2d74b7['body']=_[_0xb964('0x4b')](_0x2d74b7[_0xb964('0x48')],['id','createdAt',_0xb964('0x4d')]);return db[_0xb964('0x4e')]['transaction'](function(_0x44d05d){return db[_0xb964('0x3e')]['create'](_[_0xb964('0x45')](_0x3947de,_0x2d74b7['body']),{'include':_0x2d74b7[_0xb964('0x2f')][_0xb964('0x3f')]?[{'all':!![]}]:undefined,'transaction':_0x44d05d})[_0xb964('0x24')](function(_0xa4874){var _0x2e787a=_0xa4874[_0xb964('0x4a')]({'plain':!![]});return db[_0xb964('0x4f')]['findAll']({'where':{'userProfileId':_0x2d74b7[_0xb964('0x50')]['id']},'raw':!![]})['then'](function(_0x3f3b42){if(_0x3f3b42){return BPromise['each'](_0x3f3b42,function(_0x21c239){return new BPromise(function(_0x2f0fe7,_0x7c61f1){if(_0x21c239[_0xb964('0x51')]===null||_0x21c239[_0xb964('0x51')]===0x1)_0x2f0fe7(null);return db[_0xb964('0x52')]['findAll']({'where':{'sectionId':_0x21c239['id']},'raw':!![]})[_0xb964('0x24')](function(_0xd527bb){var _0x58cfbe=_[_0xb964('0x3b')](_0xd527bb,function(_0x1665b6){return qs['omit'](_0x1665b6,['id',_0xb964('0x53'),_0xb964('0x4d'),_0xb964('0x54')]);});_0x2f0fe7(_0x58cfbe);})['catch'](function(_0x299588){_0x7c61f1(_0x299588);});})[_0xb964('0x24')](function(_0x3840a0){var _0x146f78=qs[_0xb964('0x4b')](_0x21c239,['id',_0xb964('0x53'),_0xb964('0x4d')]);_0x146f78[_0xb964('0x55')]=_0x2e787a['id'];if(_0x3840a0)_0x146f78[_0xb964('0x56')]=_0x3840a0;return _0x146f78;})['then'](function(_0x15e8b2){return db['UserProfileSection']['create'](_0x15e8b2,{'include':[{'model':db[_0xb964('0x52')],'as':'Resources'}],'raw':!![],'transaction':_0x44d05d});});})[_0xb964('0x24')](function(){return _0x2e787a;});}});});});}})[_0xb964('0x24')](respondWithResult(_0x2f6406,0xc9))[_0xb964('0x43')](handleError(_0x2f6406,null));};exports['update']=function(_0x157805,_0x2235ce){if(_0x157805['body']['id']){delete _0x157805[_0xb964('0x48')]['id'];}return db[_0xb964('0x3e')][_0xb964('0x46')]({'where':{'id':_0x157805['params']['id']}})[_0xb964('0x24')](handleEntityNotFound(_0x2235ce,null))['then'](saveUpdates(_0x157805[_0xb964('0x48')],null))['then'](respondWithResult(_0x2235ce,null))[_0xb964('0x43')](handleError(_0x2235ce,null));};exports[_0xb964('0x23')]=function(_0x452cca,_0x1f3f68){return db['UserProfile'][_0xb964('0x46')]({'where':{'id':_0x452cca['params']['id']}})[_0xb964('0x24')](handleEntityNotFound(_0x1f3f68,null))[_0xb964('0x24')](removeEntity(_0x1f3f68,null))[_0xb964('0x43')](handleError(_0x1f3f68,null));};exports[_0xb964('0x57')]=function(_0x541999,_0x18d18c){return db[_0xb964('0x3e')][_0xb964('0x57')]()[_0xb964('0x24')](respondWithResult(_0x18d18c,null))[_0xb964('0x43')](handleError(_0x18d18c,null));};exports[_0xb964('0x58')]=function(_0xcd064b,_0x302351){var _0x1fdcbd=_0xcd064b[_0xb964('0x48')];return db['UserProfile'][_0xb964('0x46')]({'where':{'id':_0xcd064b[_0xb964('0x50')]['id']}})[_0xb964('0x24')](handleEntityNotFound(_0x302351,null))[_0xb964('0x24')](function(_0x289901){if(_0x289901){return db[_0xb964('0x4e')][_0xb964('0x59')](function(_0x39d8e1){return db[_0xb964('0x4f')][_0xb964('0x23')]({'where':{'userProfileId':_0xcd064b[_0xb964('0x50')]['id'],'sectionId':_['map'](_0x1fdcbd,function(_0x5e9151){return _0x5e9151[_0xb964('0x54')];})},'transaction':_0x39d8e1})[_0xb964('0x24')](function(){var _0x3ce6ba=_['map'](_0x1fdcbd,function(_0x351e23){_0x351e23['userProfileId']=_0xcd064b[_0xb964('0x50')]['id'];return _0x351e23;});var _0x4f4892=[];return BPromise[_0xb964('0x5a')](_0x3ce6ba,function(_0x206fc8){return db[_0xb964('0x4f')][_0xb964('0x47')](_0x206fc8,{'include':[{'model':db[_0xb964('0x52')],'as':'Resources'}],'raw':!![],'transaction':_0x39d8e1})[_0xb964('0x24')](function(_0x4a2ebf){_0x4f4892['push'](_0x4a2ebf[_0xb964('0x4a')]({'plain':!![]}));});})['then'](function(){return _0x4f4892;});});});}})[_0xb964('0x24')](function(_0x564ad0){return _0x564ad0;})[_0xb964('0x24')](respondWithResult(_0x302351,null))[_0xb964('0x43')](handleError(_0x302351,null));};exports[_0xb964('0x5b')]=function(_0x169add,_0x4d34f3){var _0x3d95e9;return db[_0xb964('0x3e')][_0xb964('0x46')]({'where':{'id':_0x169add[_0xb964('0x50')]['id']},'attributes':['id','name']})[_0xb964('0x24')](handleEntityNotFound(_0x4d34f3,null))[_0xb964('0x24')](function(_0x51e057){if(_0x51e057){_0x3d95e9=_0x51e057;return db[_0xb964('0x4f')][_0xb964('0x23')]({'where':{'userProfileId':_0x169add['params']['id'],'sectionId':_0x169add['query'][_0xb964('0x5c')]}});}})[_0xb964('0x24')](function(){return _0x3d95e9;})['then'](respondWithStatusCode(_0x4d34f3,null))[_0xb964('0x43')](handleError(_0x4d34f3,null));};exports[_0xb964('0x5d')]=function(_0x26ce8f,_0x293d12){var _0x554a5a=[];var _0x24d922=[];return db[_0xb964('0x4f')][_0xb964('0x41')]({'where':{'userProfileId':_0x26ce8f[_0xb964('0x50')]['id']},'raw':!![]})[_0xb964('0x24')](function(_0x48d2c9){_0x554a5a=_['filter'](_0x48d2c9,function(_0x33b756){return _0x33b756[_0xb964('0x5e')]===0x1||_[_0xb964('0x5f')]([0x3eb,0x709],_0x33b756[_0xb964('0x54')]);});if(!_[_0xb964('0x60')](_0x554a5a)){return _[_0xb964('0x3b')](_0x554a5a,function(_0x55ef89){return _0x55ef89[_0xb964('0x54')];});}else{return;}})[_0xb964('0x24')](function(_0x46b1c7){if(_0x46b1c7)_0x24d922=_0x46b1c7;if(_[_0xb964('0x5f')](_0x24d922,0x64)){var _0x52171b=_['find'](_0x554a5a,{'sectionId':0x64});return hasDefaultDashboard(_0x52171b)[_0xb964('0x24')](function(_0x23e516){return _[_0xb964('0x3b')](_0x554a5a,function(_0x28cba2){if(_0x28cba2[_0xb964('0x54')]===0x64){_0x28cba2['subsections']=_0x23e516;}return _0x28cba2;});});}else{return;}})[_0xb964('0x24')](function(_0x3f6148){if(_0x3f6148)_0x554a5a=_0x3f6148;if(_[_0xb964('0x5f')](_0x24d922,0x3eb)){var _0x4667d6=_[_0xb964('0x46')](_0x554a5a,{'sectionId':0x3eb});return getCustomDashboards(_0x4667d6)[_0xb964('0x24')](function(_0xbe89ff){return _[_0xb964('0x3b')](_0x554a5a,function(_0x30556b){if(_0x4667d6['enabled']){if(_0x30556b[_0xb964('0x54')]===0x3eb){_0x30556b[_0xb964('0x61')]=_0xbe89ff;}}else{if(_0x30556b['sectionId']===0x64){_0x30556b['subsections']=_0xbe89ff;}}return _0x30556b;});});}else{return;}})[_0xb964('0x24')](function(_0x44f4e3){if(_0x44f4e3)_0x554a5a=_0x44f4e3;if(_[_0xb964('0x5f')](_0x24d922,0x709)){var _0x3570a8=_[_0xb964('0x46')](_0x554a5a,{'sectionId':0x709});return getPlugins(_0x3570a8)[_0xb964('0x24')](function(_0x5306f2){if(_0x3570a8['enabled']){return _[_0xb964('0x3b')](_0x554a5a,function(_0x367c17){if(_0x367c17['sectionId']===0x709){_0x367c17[_0xb964('0x61')]=_0x5306f2;}return _0x367c17;});}else{var _0x1ab87d={'sectionId':0x76c,'enabled':0x1,'subsections':_0x5306f2};var _0x4ec7bb=_[_0xb964('0x3b')](_0x554a5a);_0x4ec7bb[_0xb964('0x62')](_0x1ab87d);return _0x4ec7bb;}});}else{return;}})[_0xb964('0x24')](function(_0x3298ad){if(_0x3298ad)_0x554a5a=_0x3298ad;return _[_0xb964('0x39')](_0x554a5a,[_0xb964('0x5e'),0x1]);})[_0xb964('0x24')](respondWithResult(_0x293d12,null))[_0xb964('0x43')](handleError(_0x293d12,null));};function hasDefaultDashboard(_0x3285cb){var _0x367eb8=[0x65];return new BPromise(function(_0x49707f,_0x541323){try{if(_0x3285cb[_0xb964('0x51')]){_0x49707f(_0x367eb8);}else{return db[_0xb964('0x52')][_0xb964('0x63')]({'where':{'sectionId':_0x3285cb['id']},'raw':!![]})['then'](function(_0x4a76f7){_0x4a76f7?_0x49707f(_0x367eb8):_0x49707f();});}}catch(_0x4d1b94){_0x541323(_0x4d1b94);}});}function getCustomDashboards(_0x1e0889){var _0x2ba9e5=[];return new BPromise(function(_0x38e30b,_0x3d4778){try{if(_0x1e0889[_0xb964('0x51')]){return db[_0xb964('0x64')]['findAll']({'raw':!![]})[_0xb964('0x24')](function(_0x4dbe07){_0x4dbe07[_0xb964('0x65')](function(_0x45854d){_0x2ba9e5['push'](_0x45854d['id']+0x1869f);});_0x38e30b(_0x2ba9e5);});}else{return db[_0xb964('0x52')][_0xb964('0x41')]({'where':{'sectionId':_0x1e0889['id']},'raw':!![]})[_0xb964('0x24')](function(_0x2d0e69){_0x2d0e69[_0xb964('0x65')](function(_0x53c7d0){_0x2ba9e5[_0xb964('0x62')](_0x53c7d0[_0xb964('0x66')]+0x1869f);});_0x38e30b(_0x2ba9e5);});}}catch(_0x1447a2){_0x3d4778(_0x1447a2);}});}function getPlugins(_0x476d92){var _0x1341a9=[];return new BPromise(function(_0x1e336a,_0x407ff7){try{if(_0x476d92['autoAssociation']){return db[_0xb964('0x67')][_0xb964('0x41')]({'raw':!![]})[_0xb964('0x24')](function(_0x26a401){_0x26a401[_0xb964('0x65')](function(_0x1df67e){_0x1341a9[_0xb964('0x62')](_0x1df67e['id']+0x15b38);});_0x1e336a(_0x1341a9);});}else{return db[_0xb964('0x52')]['findAll']({'where':{'sectionId':_0x476d92['id']},'raw':!![]})['then'](function(_0xeed18c){_0xeed18c[_0xb964('0x65')](function(_0x5b3c1d){_0x1341a9['push'](_0x5b3c1d[_0xb964('0x66')]+0x15b38);});_0x1e336a(_0x1341a9);});}}catch(_0x2d59b8){_0x407ff7(_0x2d59b8);}});}exports[_0xb964('0x68')]=function(_0x3e080d,_0xbc4508){return db[_0xb964('0x3e')][_0xb964('0x46')]({'where':{'id':_0x3e080d[_0xb964('0x50')]['id']}})[_0xb964('0x24')](handleEntityNotFound(_0xbc4508,null))['then'](function(_0x12ea3d){if(_0x12ea3d){return db[_0xb964('0x4e')][_0xb964('0x59')](function(_0x360036){return db[_0xb964('0x4f')][_0xb964('0x41')]({'where':{'userProfileId':_0x3e080d['params']['id']},'attributes':['id'],'raw':!![]})[_0xb964('0x24')](function(_0x233466){if(_0x233466){return db[_0xb964('0x4f')][_0xb964('0x23')]({'where':{'userProfileId':_0x3e080d['params']['id'],'id':_[_0xb964('0x3b')](_0x233466,function(_0x3b7988){return _0x3b7988['id'];})},'transaction':_0x360036});}})[_0xb964('0x24')](function(_0x534578){var _0xfcfaba=_[_0xb964('0x3b')](_0x3e080d['body'],function(_0x4a7746){_0x4a7746[_0xb964('0x55')]=_0x3e080d[_0xb964('0x50')]['id'];return _0x4a7746;});return db[_0xb964('0x4f')][_0xb964('0x69')](_0xfcfaba,{'raw':!![],'transaction':_0x360036});})[_0xb964('0x24')](function(_0x4f1df1){var _0x5b8844=_[_0xb964('0x39')](_['map'](_0x4f1df1,function(_0xdf8915){return _0xdf8915[_0xb964('0x4a')]({'plain':!![]});}),{'includeAll':![]});if(_0x5b8844){return db[_0xb964('0x4f')]['findAll']({'where':{'userProfileId':_0x3e080d['params']['id'],'sectionId':_[_0xb964('0x3b')](_0x5b8844,function(_0xcf9333){return _0xcf9333[_0xb964('0x54')];})},'attributes':['id',_0xb964('0x54')],'raw':!![]})[_0xb964('0x24')](function(_0x5746b7){var _0x4ce9f2=_[_0xb964('0x3b')](_0x3e080d[_0xb964('0x48')],function(_0x310f9b){_0x310f9b['userProfileId']=_0x3e080d[_0xb964('0x50')]['id'];return _0x310f9b;});return db['UserProfileResource'][_0xb964('0x69')](_0x4ce9f2,{'raw':!![],'transaction':_0x360036});});}})[_0xb964('0x43')](handleError(_0xbc4508,null));});}})[_0xb964('0x24')](function(_0x1b9773){var _0x4b2803=_[_0xb964('0x3b')](_0x1b9773,function(_0x2f21d2){return _0x2f21d2[_0xb964('0x4a')]({'plain':!![]});});})['then'](respondWithResult(_0xbc4508,null))[_0xb964('0x43')](handleError(_0xbc4508,null));};exports[_0xb964('0x6a')]=function(_0xc5c8c6,_0x37c3ba,_0x1a1998){return db[_0xb964('0x3e')][_0xb964('0x46')]({'where':{'id':_0xc5c8c6[_0xb964('0x50')]['id']}})['then'](handleEntityNotFound(_0x37c3ba,null))[_0xb964('0x24')](function(_0x5532e3){if(_0x5532e3){return _0x5532e3[_0xb964('0x6a')](_0xc5c8c6[_0xb964('0x2f')][_0xb964('0x5c')]);}})[_0xb964('0x24')](respondWithStatusCode(_0x37c3ba,null))['catch'](handleError(_0x37c3ba,null));};exports[_0xb964('0x6b')]=function(_0xd13e14,_0x278e24){var _0x304954={};if(!_0xd13e14['query'][_0xb964('0x6c')])throw new Error(_0xb964('0x6d'));if(!_0xd13e14['query'][_0xb964('0x6e')](_0xb964('0x35'))){_0x304954[_0xb964('0x36')]=qs[_0xb964('0x36')](_0xd13e14['query']['limit']);_0x304954[_0xb964('0x1e')]=qs[_0xb964('0x1e')](_0xd13e14[_0xb964('0x2f')][_0xb964('0x1e')]);}return db[_0xb964('0x3e')][_0xb964('0x46')]({'where':{'id':_0xd13e14[_0xb964('0x50')]['id']}})[_0xb964('0x24')](function(_0x5dc11c){if(!_0x5dc11c)throw new Error(_0xb964('0x6f')+_0xd13e14[_0xb964('0x50')]['id']);return db[_0xb964('0x3e')][_0xb964('0x6b')](_0xd13e14);})[_0xb964('0x24')](respondWithFilteredResult(_0x278e24,_0x304954))[_0xb964('0x43')](handleError(_0x278e24,null));};
\ No newline at end of file
+var _0x1aab=['end','error','name','send','index','map','UserProfile','rawAttributes','fieldName','type','model','keys','query','filters','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','catch','show','fields','find','create','body','clone','params','options','get','createdAt','crudPermissions','updatedAt','transaction','UserProfileSection','each','autoAssociation','UserProfileResource','omit','sectionId','userProfileId','Resources','addSections','sequelize','removeSections','ids','getSections','enabled','includes','subsections','forEach','push','resourceId','bulkCreate','removeResources','getResources','section','No\x20User\x20Profile\x20found\x20for\x20id\x20','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','sox','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','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','status','offset','undefined','limit','count','set','json','apply','reject','update','then','destroy'];(function(_0x1fac39,_0x4c76ba){var _0x4cd131=function(_0x5ef036){while(--_0x5ef036){_0x1fac39['push'](_0x1fac39['shift']());}};_0x4cd131(++_0x4c76ba);}(_0x1aab,0x122));var _0xb1aa=function(_0xcdc583,_0x2a7dae){_0xcdc583=_0xcdc583-0x0;var _0x59eee7=_0x1aab[_0xcdc583];return _0x59eee7;};'use strict';var emlformat=require(_0xb1aa('0x0'));var rimraf=require(_0xb1aa('0x1'));var zipdir=require(_0xb1aa('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xb1aa('0x3'));var moment=require('moment');var BPromise=require(_0xb1aa('0x4'));var Mustache=require(_0xb1aa('0x5'));var util=require(_0xb1aa('0x6'));var path=require(_0xb1aa('0x7'));var sox=require(_0xb1aa('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb1aa('0x9'));var _=require(_0xb1aa('0xa'));var squel=require(_0xb1aa('0xb'));var crypto=require(_0xb1aa('0xc'));var jsforce=require(_0xb1aa('0xd'));var deskjs=require(_0xb1aa('0xe'));var toCsv=require(_0xb1aa('0xf'));var querystring=require('querystring');var Papa=require(_0xb1aa('0x10'));var Redis=require(_0xb1aa('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xb1aa('0x12'));var as=require(_0xb1aa('0x13'));var hardwareService=require(_0xb1aa('0x14'));var logger=require(_0xb1aa('0x15'))(_0xb1aa('0x16'));var utils=require(_0xb1aa('0x17'));var config=require(_0xb1aa('0x18'));var licenseUtil=require(_0xb1aa('0x19'));var db=require(_0xb1aa('0x1a'))['db'];config[_0xb1aa('0x1b')]=_[_0xb1aa('0x1c')](config[_0xb1aa('0x1b')],{'host':_0xb1aa('0x1d'),'port':0x18eb});var socket=require(_0xb1aa('0x1e'))(new Redis(config[_0xb1aa('0x1b')]));require('./userProfile.socket')['register'](socket);function respondWithStatusCode(_0xc75972,_0x53ab03){_0x53ab03=_0x53ab03||0xcc;return function(_0x17c9e8){if(_0x17c9e8){return _0xc75972['sendStatus'](_0x53ab03);}return _0xc75972[_0xb1aa('0x1f')](_0x53ab03)['end']();};}function respondWithResult(_0x24b12d,_0x489fb6){_0x489fb6=_0x489fb6||0xc8;return function(_0x235b7b){if(_0x235b7b){return _0x24b12d[_0xb1aa('0x1f')](_0x489fb6)['json'](_0x235b7b);}};}function respondWithFilteredResult(_0x2531f2,_0x3624aa){return function(_0x1d1450){if(_0x1d1450){var _0x471116=typeof _0x3624aa[_0xb1aa('0x20')]===_0xb1aa('0x21')&&typeof _0x3624aa[_0xb1aa('0x22')]===_0xb1aa('0x21');var _0x36dc82=_0x1d1450[_0xb1aa('0x23')];var _0x142c6d=_0x471116?0x0:_0x3624aa[_0xb1aa('0x20')];var _0x452e6b=_0x471116?_0x1d1450[_0xb1aa('0x23')]:_0x3624aa['offset']+_0x3624aa[_0xb1aa('0x22')];var _0x2e6725;if(_0x452e6b>=_0x36dc82){_0x452e6b=_0x36dc82;_0x2e6725=0xc8;}else{_0x2e6725=0xce;}_0x2531f2[_0xb1aa('0x1f')](_0x2e6725);return _0x2531f2[_0xb1aa('0x24')]('Content-Range',_0x142c6d+'-'+_0x452e6b+'/'+_0x36dc82)[_0xb1aa('0x25')](_0x1d1450);}return null;};}function patchUpdates(_0x143e99){return function(_0x58a71e){try{jsonpatch[_0xb1aa('0x26')](_0x58a71e,_0x143e99,!![]);}catch(_0x17298c){return BPromise[_0xb1aa('0x27')](_0x17298c);}return _0x58a71e['save']();};}function saveUpdates(_0x5bb543,_0x2375ab){return function(_0x781572){if(_0x781572){return _0x781572[_0xb1aa('0x28')](_0x5bb543)[_0xb1aa('0x29')](function(_0x3a9c9e){return _0x3a9c9e;});}return null;};}function removeEntity(_0x2f1db9,_0x26ec21){return function(_0x42fc91){if(_0x42fc91){return _0x42fc91[_0xb1aa('0x2a')]()[_0xb1aa('0x29')](function(){_0x2f1db9[_0xb1aa('0x1f')](0xcc)[_0xb1aa('0x2b')]();});}};}function handleEntityNotFound(_0x34b5e8,_0x4315e8){return function(_0x40c7ff){if(!_0x40c7ff){_0x34b5e8['sendStatus'](0x194);}return _0x40c7ff;};}function handleError(_0xd20062,_0x370669){_0x370669=_0x370669||0x1f4;return function(_0x3c1b92){logger[_0xb1aa('0x2c')](_0x3c1b92['stack']);if(_0x3c1b92[_0xb1aa('0x2d')]){delete _0x3c1b92[_0xb1aa('0x2d')];}_0xd20062['status'](_0x370669)[_0xb1aa('0x2e')](_0x3c1b92);};}exports[_0xb1aa('0x2f')]=function(_0x14d46f,_0x505542){var _0x25df88={},_0x120cc3={},_0x4a785e={'count':0x0,'rows':[]};var _0x4b8b7c=_[_0xb1aa('0x30')](db[_0xb1aa('0x31')][_0xb1aa('0x32')],function(_0x718b9a){return{'name':_0x718b9a[_0xb1aa('0x33')],'type':_0x718b9a[_0xb1aa('0x34')]['key']};});_0x120cc3[_0xb1aa('0x35')]=_['map'](_0x4b8b7c,'name');_0x120cc3['query']=_[_0xb1aa('0x36')](_0x14d46f[_0xb1aa('0x37')]);_0x120cc3[_0xb1aa('0x38')]=_[_0xb1aa('0x39')](_0x120cc3[_0xb1aa('0x35')],_0x120cc3['query']);_0x25df88[_0xb1aa('0x3a')]=_[_0xb1aa('0x39')](_0x120cc3[_0xb1aa('0x35')],qs['fields'](_0x14d46f['query']['fields']));_0x25df88[_0xb1aa('0x3a')]=_0x25df88[_0xb1aa('0x3a')][_0xb1aa('0x3b')]?_0x25df88[_0xb1aa('0x3a')]:_0x120cc3['model'];if(!_0x14d46f[_0xb1aa('0x37')][_0xb1aa('0x3c')](_0xb1aa('0x3d'))){_0x25df88[_0xb1aa('0x22')]=qs['limit'](_0x14d46f[_0xb1aa('0x37')][_0xb1aa('0x22')]);_0x25df88[_0xb1aa('0x20')]=qs['offset'](_0x14d46f[_0xb1aa('0x37')][_0xb1aa('0x20')]);}_0x25df88[_0xb1aa('0x3e')]=qs[_0xb1aa('0x3f')](_0x14d46f[_0xb1aa('0x37')][_0xb1aa('0x3f')]);_0x25df88[_0xb1aa('0x40')]=qs[_0xb1aa('0x38')](_[_0xb1aa('0x41')](_0x14d46f['query'],_0x120cc3[_0xb1aa('0x38')]),_0x4b8b7c);if(_0x14d46f['query'][_0xb1aa('0x42')]){_0x25df88[_0xb1aa('0x40')]=_[_0xb1aa('0x43')](_0x25df88[_0xb1aa('0x40')],{'$or':_['map'](_0x4b8b7c,function(_0x347b6a){if(_0x347b6a[_0xb1aa('0x34')]!==_0xb1aa('0x44')){var _0x582bfb={};_0x582bfb[_0x347b6a[_0xb1aa('0x2d')]]={'$like':'%'+_0x14d46f[_0xb1aa('0x37')]['filter']+'%'};return _0x582bfb;}})});}_0x25df88=_['merge']({},_0x25df88,_0x14d46f['options']);var _0xc32fba={'where':_0x25df88[_0xb1aa('0x40')]};return db[_0xb1aa('0x31')][_0xb1aa('0x23')](_0xc32fba)['then'](function(_0xcf3f4f){_0x4a785e[_0xb1aa('0x23')]=_0xcf3f4f;if(_0x14d46f[_0xb1aa('0x37')][_0xb1aa('0x45')]){_0x25df88[_0xb1aa('0x46')]=[{'all':!![]}];}return db['UserProfile'][_0xb1aa('0x47')](_0x25df88);})[_0xb1aa('0x29')](function(_0xe5be48){_0x4a785e[_0xb1aa('0x48')]=_0xe5be48;return _0x4a785e;})[_0xb1aa('0x29')](respondWithFilteredResult(_0x505542,_0x25df88))[_0xb1aa('0x49')](handleError(_0x505542,null));};exports[_0xb1aa('0x4a')]=function(_0x393f01,_0x54a674){var _0x3c56f3={'raw':![],'where':{'id':_0x393f01['params']['id']}},_0x3bc2d7={};_0x3bc2d7[_0xb1aa('0x35')]=_[_0xb1aa('0x36')](db[_0xb1aa('0x31')][_0xb1aa('0x32')]);_0x3bc2d7['query']=_['keys'](_0x393f01[_0xb1aa('0x37')]);_0x3bc2d7[_0xb1aa('0x38')]=_['intersection'](_0x3bc2d7[_0xb1aa('0x35')],_0x3bc2d7[_0xb1aa('0x37')]);_0x3c56f3[_0xb1aa('0x3a')]=_['intersection'](_0x3bc2d7[_0xb1aa('0x35')],qs[_0xb1aa('0x4b')](_0x393f01['query']['fields']));_0x3c56f3[_0xb1aa('0x3a')]=_0x3c56f3[_0xb1aa('0x3a')][_0xb1aa('0x3b')]?_0x3c56f3['attributes']:_0x3bc2d7[_0xb1aa('0x35')];if(_0x393f01[_0xb1aa('0x37')][_0xb1aa('0x45')]){_0x3c56f3[_0xb1aa('0x46')]=[{'all':!![]}];}_0x3c56f3=_[_0xb1aa('0x43')]({},_0x3c56f3,_0x393f01['options']);return db[_0xb1aa('0x31')][_0xb1aa('0x4c')](_0x3c56f3)[_0xb1aa('0x29')](handleEntityNotFound(_0x54a674,null))[_0xb1aa('0x29')](respondWithResult(_0x54a674,null))['catch'](handleError(_0x54a674,null));};exports['create']=function(_0x213ab2,_0xfd9d9e){return db['UserProfile'][_0xb1aa('0x4d')](_0x213ab2[_0xb1aa('0x4e')],{})[_0xb1aa('0x29')](respondWithResult(_0xfd9d9e,0xc9))['catch'](handleError(_0xfd9d9e,null));};exports[_0xb1aa('0x4f')]=function(_0xb6d736,_0x4c6b3c){var _0x1f9db1={'where':{'id':_0xb6d736[_0xb1aa('0x50')]['id']}},_0x30377e={};_0x30377e[_0xb1aa('0x35')]=_[_0xb1aa('0x36')](db[_0xb1aa('0x31')]['rawAttributes']);_0x1f9db1['attributes']=_[_0xb1aa('0x39')](_0x30377e[_0xb1aa('0x35')],qs[_0xb1aa('0x4b')](_0xb6d736['query']['fields']));_0x1f9db1['attributes']=_0x1f9db1['attributes']['length']?_0x1f9db1['attributes']:_0x30377e[_0xb1aa('0x35')];if(_0xb6d736[_0xb1aa('0x37')][_0xb1aa('0x45')]){_0x1f9db1[_0xb1aa('0x46')]=[{'all':!![]}];}_0x1f9db1=_[_0xb1aa('0x43')]({},_0x1f9db1,_0xb6d736[_0xb1aa('0x51')]);return db[_0xb1aa('0x31')][_0xb1aa('0x4c')](_0x1f9db1)[_0xb1aa('0x29')](handleEntityNotFound(_0x4c6b3c,null))[_0xb1aa('0x29')](function(_0x291986){if(_0x291986){var _0x4f6398=_0x291986[_0xb1aa('0x52')]({'plain':!![]});_0x4f6398=qs['omit'](_0x4f6398,['id',_0xb1aa('0x53'),'updatedAt',_0xb1aa('0x54')]);_0xb6d736[_0xb1aa('0x4e')]=_['omit'](_0xb6d736[_0xb1aa('0x4e')],['id','createdAt',_0xb1aa('0x55')]);return db['sequelize'][_0xb1aa('0x56')](function(_0x3a4c3a){return db[_0xb1aa('0x31')]['create'](_[_0xb1aa('0x43')](_0x4f6398,_0xb6d736['body']),{'include':_0xb6d736['query'][_0xb1aa('0x45')]?[{'all':!![]}]:undefined,'transaction':_0x3a4c3a})[_0xb1aa('0x29')](function(_0x5b8f6d){var _0x38d824=_0x5b8f6d[_0xb1aa('0x52')]({'plain':!![]});return db[_0xb1aa('0x57')]['findAll']({'where':{'userProfileId':_0xb6d736[_0xb1aa('0x50')]['id']},'raw':!![]})[_0xb1aa('0x29')](function(_0x3cc7cd){if(_0x3cc7cd){return BPromise[_0xb1aa('0x58')](_0x3cc7cd,function(_0x56d6c3){return new BPromise(function(_0x4e7c05,_0x30a8bb){if(_0x56d6c3[_0xb1aa('0x59')]===null||_0x56d6c3[_0xb1aa('0x59')]===0x1)_0x4e7c05(null);return db[_0xb1aa('0x5a')]['findAll']({'where':{'sectionId':_0x56d6c3['id']},'raw':!![]})['then'](function(_0x3dd2a1){var _0x300354=_[_0xb1aa('0x30')](_0x3dd2a1,function(_0x3ec5e8){return qs[_0xb1aa('0x5b')](_0x3ec5e8,['id','createdAt','updatedAt',_0xb1aa('0x5c')]);});_0x4e7c05(_0x300354);})[_0xb1aa('0x49')](function(_0x2bec8d){_0x30a8bb(_0x2bec8d);});})['then'](function(_0x12144){var _0x1a17c4=qs['omit'](_0x56d6c3,['id','createdAt',_0xb1aa('0x55')]);_0x1a17c4[_0xb1aa('0x5d')]=_0x38d824['id'];if(_0x12144)_0x1a17c4[_0xb1aa('0x5e')]=_0x12144;return _0x1a17c4;})['then'](function(_0x2d7e8a){return db[_0xb1aa('0x57')][_0xb1aa('0x4d')](_0x2d7e8a,{'include':[{'model':db['UserProfileResource'],'as':_0xb1aa('0x5e')}],'raw':!![],'transaction':_0x3a4c3a});});})[_0xb1aa('0x29')](function(){return _0x38d824;});}});});});}})[_0xb1aa('0x29')](respondWithResult(_0x4c6b3c,0xc9))['catch'](handleError(_0x4c6b3c,null));};exports['update']=function(_0x36a1c5,_0x13249c){if(_0x36a1c5[_0xb1aa('0x4e')]['id']){delete _0x36a1c5['body']['id'];}return db[_0xb1aa('0x31')]['find']({'where':{'id':_0x36a1c5[_0xb1aa('0x50')]['id']}})[_0xb1aa('0x29')](handleEntityNotFound(_0x13249c,null))[_0xb1aa('0x29')](saveUpdates(_0x36a1c5[_0xb1aa('0x4e')],null))[_0xb1aa('0x29')](respondWithResult(_0x13249c,null))[_0xb1aa('0x49')](handleError(_0x13249c,null));};exports[_0xb1aa('0x2a')]=function(_0x7fbc8c,_0x3df823){return db[_0xb1aa('0x31')][_0xb1aa('0x4c')]({'where':{'id':_0x7fbc8c[_0xb1aa('0x50')]['id']}})[_0xb1aa('0x29')](handleEntityNotFound(_0x3df823,null))[_0xb1aa('0x29')](removeEntity(_0x3df823,null))[_0xb1aa('0x49')](handleError(_0x3df823,null));};exports['describe']=function(_0x178ee3,_0x140035){return db[_0xb1aa('0x31')]['describe']()[_0xb1aa('0x29')](respondWithResult(_0x140035,null))[_0xb1aa('0x49')](handleError(_0x140035,null));};exports[_0xb1aa('0x5f')]=function(_0x14281a,_0x1fe3d9){var _0x150846=_0x14281a['body'];return db[_0xb1aa('0x31')]['find']({'where':{'id':_0x14281a[_0xb1aa('0x50')]['id']}})[_0xb1aa('0x29')](handleEntityNotFound(_0x1fe3d9,null))[_0xb1aa('0x29')](function(_0x2c4130){if(_0x2c4130){return db[_0xb1aa('0x60')][_0xb1aa('0x56')](function(_0x59f5ef){return db['UserProfileSection'][_0xb1aa('0x2a')]({'where':{'userProfileId':_0x14281a[_0xb1aa('0x50')]['id'],'sectionId':_[_0xb1aa('0x30')](_0x150846,function(_0x13b682){return _0x13b682['sectionId'];})},'transaction':_0x59f5ef})['then'](function(){var _0x1d8fce=_[_0xb1aa('0x30')](_0x150846,function(_0x4d3b41){_0x4d3b41[_0xb1aa('0x5d')]=_0x14281a[_0xb1aa('0x50')]['id'];return _0x4d3b41;});var _0x1c2f67=[];return BPromise['each'](_0x1d8fce,function(_0x556c0b){return db['UserProfileSection'][_0xb1aa('0x4d')](_0x556c0b,{'include':[{'model':db[_0xb1aa('0x5a')],'as':_0xb1aa('0x5e')}],'raw':!![],'transaction':_0x59f5ef})['then'](function(_0x225ddd){_0x1c2f67['push'](_0x225ddd[_0xb1aa('0x52')]({'plain':!![]}));});})['then'](function(){return _0x1c2f67;});});});}})[_0xb1aa('0x29')](function(_0x3509be){return _0x3509be;})['then'](respondWithResult(_0x1fe3d9,null))[_0xb1aa('0x49')](handleError(_0x1fe3d9,null));};exports[_0xb1aa('0x61')]=function(_0x15407c,_0x488484){var _0x3bf8f5;return db[_0xb1aa('0x31')][_0xb1aa('0x4c')]({'where':{'id':_0x15407c['params']['id']},'attributes':['id',_0xb1aa('0x2d')]})[_0xb1aa('0x29')](handleEntityNotFound(_0x488484,null))['then'](function(_0x55168){if(_0x55168){_0x3bf8f5=_0x55168;return db[_0xb1aa('0x57')][_0xb1aa('0x2a')]({'where':{'userProfileId':_0x15407c[_0xb1aa('0x50')]['id'],'sectionId':_0x15407c[_0xb1aa('0x37')][_0xb1aa('0x62')]}});}})[_0xb1aa('0x29')](function(){return _0x3bf8f5;})[_0xb1aa('0x29')](respondWithStatusCode(_0x488484,null))['catch'](handleError(_0x488484,null));};exports[_0xb1aa('0x63')]=function(_0x1725b1,_0x109d48){var _0x1e3f5c=[];var _0x571173=[];return db[_0xb1aa('0x57')][_0xb1aa('0x47')]({'where':{'userProfileId':_0x1725b1[_0xb1aa('0x50')]['id']},'raw':!![]})[_0xb1aa('0x29')](function(_0x5f969b){_0x1e3f5c=_[_0xb1aa('0x42')](_0x5f969b,function(_0x5e02d6){return _0x5e02d6[_0xb1aa('0x64')]===0x1||_[_0xb1aa('0x65')]([0x3eb,0x709],_0x5e02d6[_0xb1aa('0x5c')]);});if(!_['isEmpty'](_0x1e3f5c)){return _[_0xb1aa('0x30')](_0x1e3f5c,function(_0x26e533){return _0x26e533[_0xb1aa('0x5c')];});}else{return;}})[_0xb1aa('0x29')](function(_0x2cc800){if(_0x2cc800)_0x571173=_0x2cc800;if(_['includes'](_0x571173,0x64)){var _0x55ae65=_[_0xb1aa('0x4c')](_0x1e3f5c,{'sectionId':0x64});return hasDefaultDashboard(_0x55ae65)[_0xb1aa('0x29')](function(_0x1e61d4){return _[_0xb1aa('0x30')](_0x1e3f5c,function(_0x34d43e){if(_0x34d43e[_0xb1aa('0x5c')]===0x64){_0x34d43e[_0xb1aa('0x66')]=_0x1e61d4;}return _0x34d43e;});});}else{return;}})[_0xb1aa('0x29')](function(_0x1655c5){if(_0x1655c5)_0x1e3f5c=_0x1655c5;if(_['includes'](_0x571173,0x3eb)){var _0x295fb8=_['find'](_0x1e3f5c,{'sectionId':0x3eb});return getCustomDashboards(_0x295fb8)[_0xb1aa('0x29')](function(_0xb49db3){return _[_0xb1aa('0x30')](_0x1e3f5c,function(_0x49f199){if(_0x295fb8[_0xb1aa('0x64')]){if(_0x49f199[_0xb1aa('0x5c')]===0x3eb){_0x49f199['subsections']=_0xb49db3;}}else{if(_0x49f199[_0xb1aa('0x5c')]===0x64){_0x49f199['subsections']=_0xb49db3;}}return _0x49f199;});});}else{return;}})[_0xb1aa('0x29')](function(_0x3dcabc){if(_0x3dcabc)_0x1e3f5c=_0x3dcabc;if(_[_0xb1aa('0x65')](_0x571173,0x709)){var _0x2f163a=_[_0xb1aa('0x4c')](_0x1e3f5c,{'sectionId':0x709});return getPlugins(_0x2f163a)[_0xb1aa('0x29')](function(_0x3b75d2){if(_0x2f163a[_0xb1aa('0x64')]){return _[_0xb1aa('0x30')](_0x1e3f5c,function(_0x309ec8){if(_0x309ec8[_0xb1aa('0x5c')]===0x709){_0x309ec8[_0xb1aa('0x66')]=_0x3b75d2;}return _0x309ec8;});}else{var _0x19c124={'sectionId':0x76c,'enabled':0x1,'subsections':_0x3b75d2};var _0x52c422=_[_0xb1aa('0x30')](_0x1e3f5c);_0x52c422['push'](_0x19c124);return _0x52c422;}});}else{return;}})[_0xb1aa('0x29')](function(_0x50b345){if(_0x50b345)_0x1e3f5c=_0x50b345;return _[_0xb1aa('0x42')](_0x1e3f5c,[_0xb1aa('0x64'),0x1]);})[_0xb1aa('0x29')](respondWithResult(_0x109d48,null))[_0xb1aa('0x49')](handleError(_0x109d48,null));};function hasDefaultDashboard(_0x2349cf){var _0x33d660=[0x65];return new BPromise(function(_0x1e5ac3,_0x1c9bf6){try{if(_0x2349cf[_0xb1aa('0x59')]){_0x1e5ac3(_0x33d660);}else{return db['UserProfileResource']['findOne']({'where':{'sectionId':_0x2349cf['id']},'raw':!![]})[_0xb1aa('0x29')](function(_0xd75f99){_0xd75f99?_0x1e5ac3(_0x33d660):_0x1e5ac3();});}}catch(_0x56f91c){_0x1c9bf6(_0x56f91c);}});}function getCustomDashboards(_0x2a5bdf){var _0x5a11b=[];return new BPromise(function(_0x16c0d8,_0x1147b1){try{if(_0x2a5bdf[_0xb1aa('0x59')]){return db['Dashboard'][_0xb1aa('0x47')]({'raw':!![]})['then'](function(_0x51e1c2){_0x51e1c2[_0xb1aa('0x67')](function(_0x1b8c81){_0x5a11b[_0xb1aa('0x68')](_0x1b8c81['id']+0x1869f);});_0x16c0d8(_0x5a11b);});}else{return db[_0xb1aa('0x5a')][_0xb1aa('0x47')]({'where':{'sectionId':_0x2a5bdf['id']},'raw':!![]})['then'](function(_0x164489){_0x164489[_0xb1aa('0x67')](function(_0x4a1c7b){_0x5a11b[_0xb1aa('0x68')](_0x4a1c7b['resourceId']+0x1869f);});_0x16c0d8(_0x5a11b);});}}catch(_0x5754a0){_0x1147b1(_0x5754a0);}});}function getPlugins(_0x124885){var _0x59a8ea=[];return new BPromise(function(_0x14476c,_0x4f2c8e){try{if(_0x124885[_0xb1aa('0x59')]){return db['Plugin'][_0xb1aa('0x47')]({'raw':!![]})[_0xb1aa('0x29')](function(_0x31af32){_0x31af32[_0xb1aa('0x67')](function(_0x538888){_0x59a8ea['push'](_0x538888['id']+0x15b38);});_0x14476c(_0x59a8ea);});}else{return db[_0xb1aa('0x5a')][_0xb1aa('0x47')]({'where':{'sectionId':_0x124885['id']},'raw':!![]})[_0xb1aa('0x29')](function(_0x36c4a9){_0x36c4a9[_0xb1aa('0x67')](function(_0x54b7af){_0x59a8ea[_0xb1aa('0x68')](_0x54b7af[_0xb1aa('0x69')]+0x15b38);});_0x14476c(_0x59a8ea);});}}catch(_0x3c5e5c){_0x4f2c8e(_0x3c5e5c);}});}exports['addResources']=function(_0x398a68,_0x1f2246){return db['UserProfile']['find']({'where':{'id':_0x398a68[_0xb1aa('0x50')]['id']}})[_0xb1aa('0x29')](handleEntityNotFound(_0x1f2246,null))[_0xb1aa('0x29')](function(_0x5eb07b){if(_0x5eb07b){return db[_0xb1aa('0x60')][_0xb1aa('0x56')](function(_0x5f42ae){return db['UserProfileSection'][_0xb1aa('0x47')]({'where':{'userProfileId':_0x398a68[_0xb1aa('0x50')]['id']},'attributes':['id'],'raw':!![]})[_0xb1aa('0x29')](function(_0x5cb8f6){if(_0x5cb8f6){return db[_0xb1aa('0x57')][_0xb1aa('0x2a')]({'where':{'userProfileId':_0x398a68[_0xb1aa('0x50')]['id'],'id':_[_0xb1aa('0x30')](_0x5cb8f6,function(_0x12a852){return _0x12a852['id'];})},'transaction':_0x5f42ae});}})[_0xb1aa('0x29')](function(_0x42988c){var _0x109912=_[_0xb1aa('0x30')](_0x398a68['body'],function(_0x5a20f2){_0x5a20f2[_0xb1aa('0x5d')]=_0x398a68['params']['id'];return _0x5a20f2;});return db[_0xb1aa('0x57')][_0xb1aa('0x6a')](_0x109912,{'raw':!![],'transaction':_0x5f42ae});})[_0xb1aa('0x29')](function(_0x34f589){var _0x40d91a=_[_0xb1aa('0x42')](_[_0xb1aa('0x30')](_0x34f589,function(_0x5ed4dd){return _0x5ed4dd[_0xb1aa('0x52')]({'plain':!![]});}),{'includeAll':![]});if(_0x40d91a){return db[_0xb1aa('0x57')][_0xb1aa('0x47')]({'where':{'userProfileId':_0x398a68[_0xb1aa('0x50')]['id'],'sectionId':_[_0xb1aa('0x30')](_0x40d91a,function(_0x7ba125){return _0x7ba125[_0xb1aa('0x5c')];})},'attributes':['id','sectionId'],'raw':!![]})[_0xb1aa('0x29')](function(_0x4a963c){var _0x49d67b=_[_0xb1aa('0x30')](_0x398a68[_0xb1aa('0x4e')],function(_0x1217e2){_0x1217e2[_0xb1aa('0x5d')]=_0x398a68['params']['id'];return _0x1217e2;});return db['UserProfileResource'][_0xb1aa('0x6a')](_0x49d67b,{'raw':!![],'transaction':_0x5f42ae});});}})[_0xb1aa('0x49')](handleError(_0x1f2246,null));});}})['then'](function(_0x2ac27b){var _0x515241=_['map'](_0x2ac27b,function(_0x1ebb6b){return _0x1ebb6b[_0xb1aa('0x52')]({'plain':!![]});});})[_0xb1aa('0x29')](respondWithResult(_0x1f2246,null))['catch'](handleError(_0x1f2246,null));};exports[_0xb1aa('0x6b')]=function(_0x4069cc,_0x3ecbad,_0x273daf){return db[_0xb1aa('0x31')][_0xb1aa('0x4c')]({'where':{'id':_0x4069cc[_0xb1aa('0x50')]['id']}})[_0xb1aa('0x29')](handleEntityNotFound(_0x3ecbad,null))[_0xb1aa('0x29')](function(_0x2d9bf3){if(_0x2d9bf3){return _0x2d9bf3[_0xb1aa('0x6b')](_0x4069cc[_0xb1aa('0x37')]['ids']);}})[_0xb1aa('0x29')](respondWithStatusCode(_0x3ecbad,null))['catch'](handleError(_0x3ecbad,null));};exports[_0xb1aa('0x6c')]=function(_0x179491,_0x14da7f){var _0x444b19={};if(!_0x179491[_0xb1aa('0x37')][_0xb1aa('0x6d')])throw new Error('Missing\x20section\x20parameter');if(!_0x179491['query'][_0xb1aa('0x3c')](_0xb1aa('0x3d'))){_0x444b19[_0xb1aa('0x22')]=qs[_0xb1aa('0x22')](_0x179491[_0xb1aa('0x37')][_0xb1aa('0x22')]);_0x444b19['offset']=qs['offset'](_0x179491[_0xb1aa('0x37')][_0xb1aa('0x20')]);}return db[_0xb1aa('0x31')][_0xb1aa('0x4c')]({'where':{'id':_0x179491[_0xb1aa('0x50')]['id']}})['then'](function(_0x2a092d){if(!_0x2a092d)throw new Error(_0xb1aa('0x6e')+_0x179491['params']['id']);return db[_0xb1aa('0x31')][_0xb1aa('0x6c')](_0x179491);})[_0xb1aa('0x29')](respondWithFilteredResult(_0x14da7f,_0x444b19))[_0xb1aa('0x49')](handleError(_0x14da7f,null));};
\ No newline at end of file
index 56c0660..a9c4b32 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3588=['events','../../mysqldb','UserProfile','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook'];(function(_0x128cac,_0x5bed99){var _0x4bc54a=function(_0x32914f){while(--_0x32914f){_0x128cac['push'](_0x128cac['shift']());}};_0x4bc54a(++_0x5bed99);}(_0x3588,0x82));var _0x8358=function(_0x37f364,_0x56f6ae){_0x37f364=_0x37f364-0x0;var _0x1a97dd=_0x3588[_0x37f364];return _0x1a97dd;};'use strict';var EventEmitter=require(_0x8358('0x0'));var UserProfile=require(_0x8358('0x1'))['db'][_0x8358('0x2')];var UserProfileEvents=new EventEmitter();UserProfileEvents[_0x8358('0x3')](0x0);var events={'afterCreate':_0x8358('0x4'),'afterUpdate':_0x8358('0x5'),'afterDestroy':_0x8358('0x6')};function emitEvent(_0x586dd2){return function(_0x3fd803,_0xa7a3d4,_0x146ed6){UserProfileEvents[_0x8358('0x7')](_0x586dd2+':'+_0x3fd803['id'],_0x3fd803);UserProfileEvents['emit'](_0x586dd2,_0x3fd803);_0x146ed6(null);};}for(var e in events){if(events[_0x8358('0x8')](e)){var event=events[e];UserProfile[_0x8358('0x9')](e,emitEvent(event));}}module['exports']=UserProfileEvents;
\ No newline at end of file
+var _0xee3c=['events','../../mysqldb','UserProfile','setMaxListeners','save','update','emit','hasOwnProperty','hook','exports'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0xee3c,0x14a));var _0xcee3=function(_0xf16c5d,_0x200f20){_0xf16c5d=_0xf16c5d-0x0;var _0x55a0bc=_0xee3c[_0xf16c5d];return _0x55a0bc;};'use strict';var EventEmitter=require(_0xcee3('0x0'));var UserProfile=require(_0xcee3('0x1'))['db'][_0xcee3('0x2')];var UserProfileEvents=new EventEmitter();UserProfileEvents[_0xcee3('0x3')](0x0);var events={'afterCreate':_0xcee3('0x4'),'afterUpdate':_0xcee3('0x5'),'afterDestroy':'remove'};function emitEvent(_0x4a7681){return function(_0x435892,_0x4cd398,_0x39d2a8){UserProfileEvents[_0xcee3('0x6')](_0x4a7681+':'+_0x435892['id'],_0x435892);UserProfileEvents[_0xcee3('0x6')](_0x4a7681,_0x435892);_0x39d2a8(null);};}for(var e in events){if(events[_0xcee3('0x7')](e)){var event=events[e];UserProfile[_0xcee3('0x8')](e,emitEvent(event));}}module[_0xcee3('0x9')]=UserProfileEvents;
\ No newline at end of file
index 030cc9d..cedc8c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf2e3=['projects','JscriptyProject','contacts','Lists','ListId','lists','CmList','companies','globalcustomfields','CmCustomField','ChatQueue','chatwebsites','ChatWebsite','faxqueues','FaxQueue','faxaccounts','FaxAccount','inboundroutes','internalroutes','outboundroutes','VoiceExtension','contexts','VoiceContext','VoiceMail','voicerecordings','VoiceRecording','Agents','membername','User','role','Telephones','telephone','VoiceQueues','queue','VoiceQueue','inbound','QueueCampaigns','outbound','VoiceMusicOnHold','VoiceChanSpy','VoicePrefix','ivrcampaigns','mailqueues','MailAccount','mailsubstatuses','MailSubstatus','openchannelqueues','OpenchannelQueue','openchannelaccounts','OpenchannelAccount','smsqueues','SmsQueue','SmsAccount','whatsappqueues','whatsappaccounts','WhatsappAccount','Team','voicequeues','users','agents','admin','user','zendeskaccounts','salesforceaccounts','SalesforceAccount','freshdeskaccounts','FreshdeskAccount','sugarcrmaccounts','SugarcrmAccount','DeskAccount','ZohoAccount','vtigeraccounts','cannedanswers','CannedAnswer','dispositions','Disposition','Dashboard','intervals','Interval','pauses','Pause','scheduler','Schedule','sounds','Sound','Tag','templates','Template','triggers','Trigger','Trunk','variables','Variable','Plugin','extractedreports','reportId','metrics','AnalyticMetric','toUpperCase','slice','Sequelize','SELECT','ui.','ui.createdAt','from','user_has_','where','ui.UserId\x20=\x20?','sequelize','query','user_profiles','section','Invalid\x20section\x20\x27','isEmpty','length','find','params','all','ignore','union','push','autoAssociation','rawAttributes','keys','intersection','attributes','fields','hasOwnProperty','limit','offset','order','sort','filters','pick','merge','foreignKey','forEach','options','includeAll','include','reportType','DefaultReports','custom','count','rows','CmContact','color','tag','ThroughTags','openTabs','chat','dataValues','sms','fax','whatsapp','lodash','../../components/parsers/qs','squel','exports','models','filter','field','value','findAll','then','associatedResources','map','catch','model','resolve','UserProfileResource','AnalyticExtractedReport','resourceId','type','SquareProject','odbc','SquareOdbc','childModel','parentSections','SquareProjects','name','projectName'];(function(_0x4f11cb,_0x14e174){var _0x491488=function(_0x2904a9){while(--_0x2904a9){_0x4f11cb['push'](_0x4f11cb['shift']());}};_0x491488(++_0x14e174);}(_0xf2e3,0x9b));var _0x3f2e=function(_0x3070dc,_0x40cf11){_0x3070dc=_0x3070dc-0x0;var _0x431489=_0xf2e3[_0x3070dc];return _0x431489;};'use strict';var _=require(_0x3f2e('0x0'));var attributes=require('./userProfile.attributes');var qs=require(_0x3f2e('0x1'));var squel=require(_0x3f2e('0x2'));module[_0x3f2e('0x3')]=function(_0x30f1bb){var _0x27d28c=_0x30f1bb[_0x3f2e('0x4')];function _0x3938e2(_0xabcf5c,_0x216b26){return new Promise(function(_0x5f254a,_0x33a3b7){if(!_0x216b26)return _0x5f254a(null);var _0xdd6b3e=_0x216b26[_0x3f2e('0x5')]?{[_0x216b26[_0x3f2e('0x5')][_0x3f2e('0x6')]]:_0x216b26[_0x3f2e('0x5')][_0x3f2e('0x7')]}:undefined;return _0x27d28c[_0xabcf5c][_0x3f2e('0x8')]({'where':_0xdd6b3e,'raw':!![]})[_0x3f2e('0x9')](function(_0x29a6cc){_0x216b26[_0x3f2e('0xa')]=_[_0x3f2e('0xb')](_0x29a6cc,'id');_0x5f254a(_0x216b26);})[_0x3f2e('0xc')](function(_0x10a392){_0x33a3b7(_0x10a392);});});}function _0x1bb1dd(_0x305861,_0x824ee8){return new Promise(function(_0x475cd2,_0x39b819){var _0x5a4da3=_0x305861[_0x3f2e('0x5')]?{[_0x305861[_0x3f2e('0x5')]['field']]:_0x305861[_0x3f2e('0x5')][_0x3f2e('0x7')]}:undefined;return _0x27d28c[_0x305861[_0x3f2e('0xd')]][_0x3f2e('0x8')]({'where':_0x5a4da3,'raw':!![]})[_0x3f2e('0x9')](function(_0x57cba7){_0x824ee8[_0x3f2e('0xa')]=_[_0x3f2e('0xb')](_0x57cba7,function(_0x2d2fac){return _0x2d2fac['name'];});_0x475cd2(_0x824ee8);})[_0x3f2e('0xc')](function(_0x218b44){_0x39b819(_0x218b44);});});}function _0x17ef58(_0x2c4feb,_0x1dc5d0,_0x2fef73){if(!_0x1dc5d0)return Promise[_0x3f2e('0xe')](null);return new Promise(function(_0x155411,_0x178283){return _0x27d28c[_0x3f2e('0xf')][_0x3f2e('0x8')]({'where':{'sectionId':_0x1dc5d0['id']},'raw':!![]})['then'](function(_0x40e28f){if(_0x2c4feb[_0x3f2e('0x6')]&&_0x2c4feb[_0x3f2e('0x6')]!=='id'){_0x1dc5d0[_0x3f2e('0xa')]=_[_0x3f2e('0xb')](_0x40e28f,function(_0x4eb1e7){return _0x4eb1e7[_0x2c4feb['field']];});}else{if(_0x2fef73===_0x3f2e('0x10')){_0x1dc5d0[_0x3f2e('0xa')]=_[_0x3f2e('0xb')](_0x40e28f,function(_0x2ac500){return{'id':_0x2ac500[_0x3f2e('0x11')],'type':_0x2ac500[_0x3f2e('0x12')]};});}else{_0x1dc5d0['associatedResources']=_['map'](_0x40e28f,function(_0xf81165){return _0xf81165[_0x3f2e('0x11')];});}}_0x155411(_0x1dc5d0);})['catch'](function(_0x541292){_0x178283(_0x541292);});});}function _0x46bb1c(_0x5646f5,_0x1b8c67){var _0x401ed9={'parentSections':[]};switch(_0x5646f5['toLowerCase']()){case'squareprojects':_0x401ed9['childModel']=_0x3f2e('0x13');break;case _0x3f2e('0x14'):_0x401ed9['childModel']=_0x3f2e('0x15');break;case'squarerecordings':_0x401ed9[_0x3f2e('0x16')]='SquareRecording';_0x401ed9[_0x3f2e('0x17')]=[{'name':_0x3f2e('0x18'),'field':_0x3f2e('0x19'),'foreignKey':_0x3f2e('0x1a')}];break;case _0x3f2e('0x1b'):_0x401ed9['childModel']=_0x3f2e('0x1c');break;case _0x3f2e('0x1d'):_0x401ed9['childModel']='CmContact';_0x401ed9[_0x3f2e('0x17')]=[{'name':_0x3f2e('0x1e'),'field':'id','foreignKey':_0x3f2e('0x1f')}];break;case _0x3f2e('0x20'):_0x401ed9['childModel']=_0x3f2e('0x21');break;case _0x3f2e('0x22'):_0x401ed9[_0x3f2e('0x16')]='CmCompany';break;case _0x3f2e('0x23'):_0x401ed9[_0x3f2e('0x16')]=_0x3f2e('0x24');break;case'chatqueues':_0x401ed9[_0x3f2e('0x16')]=_0x3f2e('0x25');break;case _0x3f2e('0x26'):_0x401ed9[_0x3f2e('0x16')]=_0x3f2e('0x27');break;case _0x3f2e('0x28'):_0x401ed9['childModel']=_0x3f2e('0x29');break;case _0x3f2e('0x2a'):_0x401ed9[_0x3f2e('0x16')]=_0x3f2e('0x2b');break;case _0x3f2e('0x2c'):case _0x3f2e('0x2d'):case _0x3f2e('0x2e'):_0x401ed9['childModel']=_0x3f2e('0x2f');break;case _0x3f2e('0x30'):_0x401ed9[_0x3f2e('0x16')]=_0x3f2e('0x31');break;case'voicemails':_0x401ed9['childModel']=_0x3f2e('0x32');break;case _0x3f2e('0x33'):_0x401ed9[_0x3f2e('0x16')]=_0x3f2e('0x34');_0x401ed9[_0x3f2e('0x17')]=[{'name':_0x3f2e('0x35'),'field':_0x3f2e('0x19'),'foreignKey':_0x3f2e('0x36'),'model':_0x3f2e('0x37'),'filter':{'field':_0x3f2e('0x38'),'value':['agent']}},{'name':_0x3f2e('0x39'),'field':_0x3f2e('0x19'),'foreignKey':_0x3f2e('0x36'),'model':_0x3f2e('0x37'),'filter':{'field':'role','value':[_0x3f2e('0x3a')]}},{'name':_0x3f2e('0x3b'),'field':_0x3f2e('0x19'),'foreignKey':_0x3f2e('0x3c'),'model':_0x3f2e('0x3d'),'filter':{'field':_0x3f2e('0x12'),'value':[_0x3f2e('0x3e')]}},{'name':_0x3f2e('0x3f'),'field':'name','foreignKey':_0x3f2e('0x3c'),'model':_0x3f2e('0x3d'),'filter':{'field':_0x3f2e('0x12'),'value':[_0x3f2e('0x40')]}}];break;case'musiconholds':_0x401ed9[_0x3f2e('0x16')]=_0x3f2e('0x41');break;case'chanspies':_0x401ed9[_0x3f2e('0x16')]=_0x3f2e('0x42');break;case'voiceprefixes':_0x401ed9[_0x3f2e('0x16')]=_0x3f2e('0x43');break;case _0x3f2e('0x44'):_0x401ed9[_0x3f2e('0x16')]='Campaign';break;case _0x3f2e('0x45'):_0x401ed9[_0x3f2e('0x16')]='MailQueue';break;case'mailaccounts':_0x401ed9[_0x3f2e('0x16')]=_0x3f2e('0x46');break;case _0x3f2e('0x47'):_0x401ed9['childModel']=_0x3f2e('0x48');break;case _0x3f2e('0x49'):_0x401ed9[_0x3f2e('0x16')]=_0x3f2e('0x4a');break;case _0x3f2e('0x4b'):_0x401ed9[_0x3f2e('0x16')]=_0x3f2e('0x4c');break;case _0x3f2e('0x4d'):_0x401ed9[_0x3f2e('0x16')]=_0x3f2e('0x4e');break;case'smsaccounts':_0x401ed9['childModel']=_0x3f2e('0x4f');break;case _0x3f2e('0x50'):_0x401ed9['childModel']='WhatsappQueue';break;case _0x3f2e('0x51'):_0x401ed9[_0x3f2e('0x16')]=_0x3f2e('0x52');break;case'teams':_0x401ed9[_0x3f2e('0x16')]=_0x3f2e('0x53');break;case _0x3f2e('0x54'):case'queuecampaigns':_0x401ed9[_0x3f2e('0x16')]=_0x3f2e('0x3d');if(_0x1b8c67){_0x401ed9[_0x3f2e('0x17')]=[{'name':'VoiceQueues'},{'name':_0x3f2e('0x3f')}];}break;case _0x3f2e('0x55'):case _0x3f2e('0x56'):case'telephones':_0x401ed9[_0x3f2e('0x16')]='User';if(_0x1b8c67){_0x401ed9[_0x3f2e('0x17')]=[{'name':'Users','filter':{'field':'role','value':[_0x3f2e('0x57'),_0x3f2e('0x58')]},'ignore':!![]},{'name':_0x3f2e('0x35')},{'name':_0x3f2e('0x39')}];}break;case _0x3f2e('0x59'):_0x401ed9['childModel']='ZendeskAccount';break;case _0x3f2e('0x5a'):_0x401ed9[_0x3f2e('0x16')]=_0x3f2e('0x5b');break;case _0x3f2e('0x5c'):_0x401ed9[_0x3f2e('0x16')]=_0x3f2e('0x5d');break;case _0x3f2e('0x5e'):_0x401ed9[_0x3f2e('0x16')]=_0x3f2e('0x5f');break;case'deskaccounts':_0x401ed9['childModel']=_0x3f2e('0x60');break;case'zohoaccounts':_0x401ed9[_0x3f2e('0x16')]=_0x3f2e('0x61');break;case _0x3f2e('0x62'):_0x401ed9[_0x3f2e('0x16')]='User';break;case _0x3f2e('0x63'):_0x401ed9['childModel']=_0x3f2e('0x64');break;case _0x3f2e('0x65'):_0x401ed9['childModel']=_0x3f2e('0x66');break;case'customdashboards':_0x401ed9[_0x3f2e('0x16')]=_0x3f2e('0x67');break;case _0x3f2e('0x68'):_0x401ed9['childModel']=_0x3f2e('0x69');break;case _0x3f2e('0x6a'):_0x401ed9[_0x3f2e('0x16')]=_0x3f2e('0x6b');break;case _0x3f2e('0x6c'):_0x401ed9[_0x3f2e('0x16')]=_0x3f2e('0x6d');break;case _0x3f2e('0x6e'):_0x401ed9[_0x3f2e('0x16')]=_0x3f2e('0x6f');break;case'tags':_0x401ed9[_0x3f2e('0x16')]=_0x3f2e('0x70');break;case _0x3f2e('0x71'):_0x401ed9[_0x3f2e('0x16')]=_0x3f2e('0x72');break;case _0x3f2e('0x73'):_0x401ed9[_0x3f2e('0x16')]=_0x3f2e('0x74');break;case'trunks':_0x401ed9[_0x3f2e('0x16')]=_0x3f2e('0x75');break;case _0x3f2e('0x76'):_0x401ed9[_0x3f2e('0x16')]=_0x3f2e('0x77');break;case'plugins':_0x401ed9['childModel']=_0x3f2e('0x78');break;case _0x3f2e('0x79'):_0x401ed9[_0x3f2e('0x16')]='AnalyticExtractedReport';_0x401ed9['parentSections']=[{'name':'Reports','field':'id','foreignKey':_0x3f2e('0x7a')}];break;case _0x3f2e('0x7b'):_0x401ed9[_0x3f2e('0x16')]=_0x3f2e('0x7c');break;}return _0x401ed9;}function _0x359197(_0x5689d6,_0x18cc5d){var _0xc3c853=_0x5689d6['charAt'](0x0)[_0x3f2e('0x7d')]()+_0x5689d6[_0x3f2e('0x7e')](0x1);var _0x3d05fe={'type':_0x27d28c[_0x3f2e('0x7f')]['QueryTypes'][_0x3f2e('0x80')],'raw':!![]};return new Promise(function(_0x5da1f3,_0x4dc239){var _0x793fbb=squel['select']()['field'](_0x3f2e('0x81')+_0xc3c853+'InteractionId','id')[_0x3f2e('0x6')](_0x3f2e('0x82'))[_0x3f2e('0x83')](_0x3f2e('0x84')+_0x5689d6+'_interactions','ui')[_0x3f2e('0x85')](_0x3f2e('0x86'),_0x18cc5d['id']);return _0x27d28c[_0x3f2e('0x87')][_0x3f2e('0x88')](_0x793fbb['toString'](),_0x3d05fe)[_0x3f2e('0x9')](function(_0x4858ee){_0x18cc5d[_0xc3c853+'OpenTabs']=_0x4858ee;_0x5da1f3(_0x4858ee);})[_0x3f2e('0xc')](function(_0x1d9f99){_0x4dc239(_0x1d9f99);});});}return _0x30f1bb['define']('UserProfile',attributes,{'tableName':_0x3f2e('0x89'),'paranoid':![],'indexes':[],'timestamps':!![],'classMethods':{'getResources':function(_0x27e810){var _0x32cd8e={'raw':![],'where':{}};var _0x487daf={};var _0x22b00a={'count':0x0,'rows':[]};var _0x311c62=_0x27e810[_0x3f2e('0x88')][_0x3f2e('0x8a')];var _0x515895=_0x27e810[_0x3f2e('0x88')]['mergeResources']||![];var _0x457492=_0x46bb1c(_0x311c62,_0x515895);if(!_0x457492[_0x3f2e('0x16')])throw new Error(_0x3f2e('0x8b')+_0x311c62+'\x27');var _0x3c87ce=[{'name':_0x311c62}];if(!_[_0x3f2e('0x8c')](_0x457492[_0x3f2e('0x17')]))_0x3c87ce=_0x457492[_0x3f2e('0x17')];var _0x266f60=[];for(var _0x4f42be=0x0;_0x4f42be<_0x3c87ce[_0x3f2e('0x8d')];_0x4f42be++){_0x266f60['push'](_0x27d28c['UserProfileSection'][_0x3f2e('0x8e')]({'where':{'userProfileId':_0x27e810[_0x3f2e('0x8f')]['id'],'name':_0x3c87ce[_0x4f42be]['name']},'raw':!![]}));}return Promise[_0x3f2e('0x90')](_0x266f60)[_0x3f2e('0x9')](function(_0x58c6f2){var _0x4768f5=_['filter'](_0x58c6f2,function(_0x5577c0){return _0x5577c0?_0x5577c0:undefined;});var _0x2d26c3=_[_0x3f2e('0x5')](_0x3c87ce,[_0x3f2e('0x91'),!![]]);var _0x5d3db7=_['isEmpty'](_0x4768f5)&&_[_0x3f2e('0x8c')](_0x2d26c3)?null:_[_0x3f2e('0x92')](_0x2d26c3,_0x4768f5);if(!_0x5d3db7)return null;var _0x1ac6a3=[];for(var _0x2cf3b9=0x0;_0x2cf3b9<_0x5d3db7[_0x3f2e('0x8d')];_0x2cf3b9++){var _0x3a8983=_[_0x3f2e('0x8e')](_0x3c87ce,function(_0x224e1e){return _0x5d3db7[_0x2cf3b9]?_0x224e1e[_0x3f2e('0x19')]===_0x5d3db7[_0x2cf3b9][_0x3f2e('0x19')]:null;});if(_0x3a8983){if(_0x5d3db7[_0x2cf3b9][_0x3f2e('0x91')]){_0x1ac6a3[_0x3f2e('0x93')](_0x3938e2(_0x457492[_0x3f2e('0x16')],_0x5d3db7[_0x2cf3b9]));}else{if(!_0x5d3db7[_0x2cf3b9][_0x3f2e('0x94')]){_0x1ac6a3[_0x3f2e('0x93')](_0x17ef58(_0x3a8983,_0x5d3db7[_0x2cf3b9],_0x457492[_0x3f2e('0x16')]));}else{if(_0x3a8983[_0x3f2e('0xd')]){_0x1ac6a3[_0x3f2e('0x93')](_0x1bb1dd(_0x3a8983,_0x5d3db7[_0x2cf3b9]));}}}}}return Promise[_0x3f2e('0x90')](_0x1ac6a3);})[_0x3f2e('0x9')](function(_0x50b853){var _0xbef922=_0x50b853;var _0x1850b6=null;if(_0xbef922){_0x1850b6=_0xbef922[_0x3f2e('0x8d')]===0x1?_0xbef922[0x0]:null;}if(!_0x1850b6&&!_0xbef922)return _0x22b00a;var _0xd9ea7b=_0x27d28c[_0x457492[_0x3f2e('0x16')]][_0x3f2e('0x95')];_0x487daf[_0x3f2e('0xd')]=_[_0x3f2e('0x96')](_0xd9ea7b);_0x487daf[_0x3f2e('0x88')]=_['keys'](_0x27e810[_0x3f2e('0x88')]);_0x487daf['filters']=_[_0x3f2e('0x97')](_0x487daf[_0x3f2e('0xd')],_0x487daf['query']);_0x32cd8e[_0x3f2e('0x98')]=_[_0x3f2e('0x97')](_0x487daf['model'],qs[_0x3f2e('0x99')](_0x27e810[_0x3f2e('0x88')][_0x3f2e('0x99')]));_0x32cd8e[_0x3f2e('0x98')]=_0x32cd8e[_0x3f2e('0x98')][_0x3f2e('0x8d')]?_0x32cd8e[_0x3f2e('0x98')]:_0x487daf[_0x3f2e('0xd')];if(!_0x27e810['query'][_0x3f2e('0x9a')]('nolimit')){_0x32cd8e[_0x3f2e('0x9b')]=qs[_0x3f2e('0x9b')](_0x27e810[_0x3f2e('0x88')][_0x3f2e('0x9b')]);_0x32cd8e[_0x3f2e('0x9c')]=qs[_0x3f2e('0x9c')](_0x27e810[_0x3f2e('0x88')][_0x3f2e('0x9c')]);}_0x32cd8e[_0x3f2e('0x9d')]=qs[_0x3f2e('0x9e')](_0x27e810[_0x3f2e('0x88')][_0x3f2e('0x9e')]);_0x32cd8e['where']=qs[_0x3f2e('0x9f')](_[_0x3f2e('0xa0')](_0x27e810[_0x3f2e('0x88')],_0x487daf[_0x3f2e('0x9f')]));if(_0x27e810[_0x3f2e('0x88')]['filter']){_0x32cd8e[_0x3f2e('0x85')]=_[_0x3f2e('0xa1')](_0x32cd8e['where'],{'$or':_[_0x3f2e('0xb')](_0xd9ea7b,function(_0x10ddb6){if(_0x10ddb6['type']['key']!=='VIRTUAL'){var _0x3dc17c={};_0x3dc17c[_0x10ddb6[_0x3f2e('0x6')]]={'$like':'%'+_0x27e810[_0x3f2e('0x88')][_0x3f2e('0x5')]+'%'};return _0x3dc17c;}})});}var _0x236dcf=[];var _0x38d0cb=null;var _0x27c3af={};if(_0x1850b6){_0x38d0cb=_[_0x3f2e('0x8e')](_0x3c87ce,[_0x3f2e('0x19'),_0x1850b6['name']]);if(_0x38d0cb[_0x3f2e('0x6')]){_0x27c3af={};if(_0x457492['childModel']===_0x3f2e('0x10')){_0x27c3af[_0x38d0cb['foreignKey']]=_[_0x3f2e('0xb')](_0x1850b6[_0x3f2e('0xa')],'id');}else{_0x27c3af[_0x38d0cb['foreignKey']]=_0x1850b6[_0x3f2e('0xa')];}_0x236dcf[_0x3f2e('0x93')](_0x27c3af);}else{_0x32cd8e[_0x3f2e('0x85')]['id']=_0x1850b6[_0x3f2e('0xa')];}}else{for(var _0x50d5ca=0x0;_0x50d5ca<_0xbef922[_0x3f2e('0x8d')];_0x50d5ca++){_0x38d0cb=_['find'](_0x3c87ce,[_0x3f2e('0x19'),_0xbef922[_0x50d5ca][_0x3f2e('0x19')]]);if(_0x38d0cb[_0x3f2e('0x6')]){_0x27c3af={};_0x27c3af[_0x38d0cb[_0x3f2e('0xa2')]]=_0xbef922[_0x50d5ca][_0x3f2e('0xa')];_0x236dcf[_0x3f2e('0x93')](_0x27c3af);}else{if(!_0x32cd8e['where']['id'])_0x32cd8e[_0x3f2e('0x85')]['id']=[];_0xbef922[_0x50d5ca][_0x3f2e('0xa')][_0x3f2e('0xa3')](function(_0x13e5c3){_0x32cd8e[_0x3f2e('0x85')]['id'][_0x3f2e('0x93')](_0x13e5c3);});}}}if(!_[_0x3f2e('0x8c')](_0x236dcf)){_0x32cd8e['where']=_['merge'](_0x32cd8e['where'],{'$and':{'$or':_0x236dcf}});}_0x32cd8e=_['merge']({},_0x32cd8e,_0x27e810[_0x3f2e('0xa4')]);if(_0x1850b6&&!_0x1850b6['autoAssociation']&&_0x457492[_0x3f2e('0x16')]==='AnalyticExtractedReport'){if(_0x27e810[_0x3f2e('0x88')][_0x3f2e('0xa5')]){_0x32cd8e[_0x3f2e('0xa6')]=[{'all':!![]}];}return _0x27d28c[_0x457492[_0x3f2e('0x16')]][_0x3f2e('0x8')](_0x32cd8e)[_0x3f2e('0x9')](function(_0x263160){var _0x5bd1cb=[];_0x263160[_0x3f2e('0xa3')](function(_0x850a9c){var _0x604478;switch(_0x850a9c[_0x3f2e('0xa7')]){case'default':_0x604478=_['find'](_0x1850b6[_0x3f2e('0xa')],function(_0x344afb){return _0x344afb['id']===_0x850a9c[_0x3f2e('0x7a')]&&_0x344afb['type']===_0x3f2e('0xa8');});break;case _0x3f2e('0xa9'):_0x604478=_['find'](_0x1850b6[_0x3f2e('0xa')],function(_0x14a919){return _0x14a919['id']===_0x850a9c[_0x3f2e('0x7a')]&&_0x14a919[_0x3f2e('0x12')]==='CustomReports';});break;}if(_0x604478)_0x5bd1cb[_0x3f2e('0x93')](_0x850a9c);});_0x22b00a[_0x3f2e('0xaa')]=_0x5bd1cb[_0x3f2e('0x8d')];_0x22b00a[_0x3f2e('0xab')]=_0x5bd1cb;return _0x22b00a;});}else{return _0x27d28c[_0x457492[_0x3f2e('0x16')]][_0x3f2e('0xaa')]({'where':_0x32cd8e[_0x3f2e('0x85')]})[_0x3f2e('0x9')](function(_0x380407){_0x22b00a['count']=_0x380407;if(_0x27e810[_0x3f2e('0x88')][_0x3f2e('0xa5')]){if(_0x457492[_0x3f2e('0x16')]===_0x3f2e('0xac')){_0x32cd8e[_0x3f2e('0xa6')]=[{'model':_0x27d28c[_0x3f2e('0x70')],'as':'Tags','attributes':['id',_0x3f2e('0x19'),_0x3f2e('0xad')],'required':_0x27e810[_0x3f2e('0x88')][_0x3f2e('0xae')]?!![]:![]},{'model':_0x27d28c['Tag'],'as':_0x3f2e('0xaf'),'attributes':['id',_0x3f2e('0x19'),_0x3f2e('0xad')],'through':_0x27e810[_0x3f2e('0x88')]['tag']?{'attributes':[],'where':{'TagId':_0x27e810[_0x3f2e('0x88')][_0x3f2e('0xae')]||undefined}}:{},'required':_0x27e810[_0x3f2e('0x88')][_0x3f2e('0xae')]?!![]:![]}];}else{_0x32cd8e[_0x3f2e('0xa6')]=[{'all':!![]}];}}return _0x27d28c[_0x457492[_0x3f2e('0x16')]][_0x3f2e('0x8')](_0x32cd8e);})[_0x3f2e('0x9')](function(_0x5cb1f8){_0x22b00a['rows']=_0x5cb1f8;if(_0x311c62===_0x3f2e('0x35')&&_0x27e810[_0x3f2e('0x88')][_0x3f2e('0xb0')]==='true'){var _0x511c6c=[];for(var _0x1d3945=0x0;_0x1d3945<_0x22b00a[_0x3f2e('0xab')][_0x3f2e('0x8d')];_0x1d3945++){_0x511c6c[_0x3f2e('0x93')](_0x359197(_0x3f2e('0xb1'),_0x22b00a[_0x3f2e('0xab')][_0x1d3945][_0x3f2e('0xb2')]));_0x511c6c['push'](_0x359197(_0x3f2e('0xb3'),_0x22b00a['rows'][_0x1d3945][_0x3f2e('0xb2')]));_0x511c6c[_0x3f2e('0x93')](_0x359197(_0x3f2e('0xb4'),_0x22b00a[_0x3f2e('0xab')][_0x1d3945]['dataValues']));_0x511c6c['push'](_0x359197('mail',_0x22b00a[_0x3f2e('0xab')][_0x1d3945]['dataValues']));_0x511c6c[_0x3f2e('0x93')](_0x359197('openchannel',_0x22b00a[_0x3f2e('0xab')][_0x1d3945][_0x3f2e('0xb2')]));_0x511c6c[_0x3f2e('0x93')](_0x359197(_0x3f2e('0xb5'),_0x22b00a[_0x3f2e('0xab')][_0x1d3945]['dataValues']));}return Promise[_0x3f2e('0x90')](_0x511c6c)[_0x3f2e('0x9')](function(){return _0x22b00a;});}return _0x22b00a;});}});}}});};
\ No newline at end of file
+var _0x1261=['FaxQueue','faxaccounts','inboundroutes','internalroutes','outboundroutes','contexts','VoiceContext','voicemails','voicerecordings','VoiceRecording','membername','User','agent','Telephones','role','telephone','VoiceQueues','VoiceQueue','inbound','QueueCampaigns','queue','outbound','musiconholds','VoiceMusicOnHold','chanspies','VoiceChanSpy','VoicePrefix','ivrcampaigns','Campaign','MailQueue','mailaccounts','MailAccount','mailsubstatuses','OpenchannelQueue','OpenchannelAccount','smsqueues','SmsAccount','whatsappqueues','WhatsappQueue','teams','Team','queuecampaigns','users','telephones','Users','admin','Agents','ZendeskAccount','SalesforceAccount','FreshdeskAccount','sugarcrmaccounts','SugarcrmAccount','deskaccounts','DeskAccount','zohoaccounts','ZohoAccount','vtigeraccounts','CannedAnswer','Disposition','customdashboards','intervals','Interval','pauses','Pause','scheduler','Sound','tags','Tag','templates','Template','triggers','Trigger','trunks','Trunk','variables','Variable','plugins','Plugin','reportId','metrics','AnalyticMetric','charAt','toUpperCase','slice','Sequelize','QueryTypes','SELECT','select','ui.','ui.createdAt','user_has_','where','ui.UserId\x20=\x20?','query','toString','OpenTabs','define','UserProfile','user_profiles','section','mergeResources','isEmpty','length','push','UserProfileSection','params','all','ignore','find','autoAssociation','rawAttributes','filters','intersection','attributes','fields','hasOwnProperty','nolimit','limit','offset','order','sort','pick','merge','key','VIRTUAL','foreignKey','options','includeAll','include','forEach','reportType','default','custom','count','Tags','tag','ThroughTags','color','rows','true','chat','dataValues','sms','fax','whatsapp','./userProfile.attributes','../../components/parsers/qs','squel','exports','models','filter','field','value','findAll','then','associatedResources','map','catch','model','name','AnalyticExtractedReport','type','squareprojects','childModel','SquareProject','odbc','SquareOdbc','squarerecordings','parentSections','SquareProjects','JscriptyProject','CmContact','Lists','lists','CmList','CmCustomField','chatqueues','chatwebsites','faxqueues'];(function(_0x242a9e,_0x55fdf0){var _0x1edd38=function(_0x8546f9){while(--_0x8546f9){_0x242a9e['push'](_0x242a9e['shift']());}};_0x1edd38(++_0x55fdf0);}(_0x1261,0x144));var _0x1126=function(_0x4fcb07,_0x4a77a4){_0x4fcb07=_0x4fcb07-0x0;var _0xf2eeb=_0x1261[_0x4fcb07];return _0xf2eeb;};'use strict';var _=require('lodash');var attributes=require(_0x1126('0x0'));var qs=require(_0x1126('0x1'));var squel=require(_0x1126('0x2'));module[_0x1126('0x3')]=function(_0x39b786){var _0x350f3a=_0x39b786[_0x1126('0x4')];function _0x4245ca(_0x21a480,_0x75a851){return new Promise(function(_0x5a2189,_0x5c68c8){if(!_0x75a851)return _0x5a2189(null);var _0x40ba58=_0x75a851[_0x1126('0x5')]?{[_0x75a851['filter'][_0x1126('0x6')]]:_0x75a851[_0x1126('0x5')][_0x1126('0x7')]}:undefined;return _0x350f3a[_0x21a480][_0x1126('0x8')]({'where':_0x40ba58,'raw':!![]})[_0x1126('0x9')](function(_0x59cfa1){_0x75a851[_0x1126('0xa')]=_[_0x1126('0xb')](_0x59cfa1,'id');_0x5a2189(_0x75a851);})[_0x1126('0xc')](function(_0x5e72e2){_0x5c68c8(_0x5e72e2);});});}function _0x34571c(_0x5d581b,_0x52ef15){return new Promise(function(_0x15c071,_0x561b93){var _0x15e89b=_0x5d581b[_0x1126('0x5')]?{[_0x5d581b[_0x1126('0x5')][_0x1126('0x6')]]:_0x5d581b[_0x1126('0x5')][_0x1126('0x7')]}:undefined;return _0x350f3a[_0x5d581b[_0x1126('0xd')]][_0x1126('0x8')]({'where':_0x15e89b,'raw':!![]})[_0x1126('0x9')](function(_0x53a8f0){_0x52ef15['associatedResources']=_[_0x1126('0xb')](_0x53a8f0,function(_0x154e20){return _0x154e20[_0x1126('0xe')];});_0x15c071(_0x52ef15);})['catch'](function(_0x45149c){_0x561b93(_0x45149c);});});}function _0x4794a7(_0x35fe9f,_0x42f379,_0x257b5f){if(!_0x42f379)return Promise['resolve'](null);return new Promise(function(_0x245cd7,_0x1695f6){return _0x350f3a['UserProfileResource']['findAll']({'where':{'sectionId':_0x42f379['id']},'raw':!![]})[_0x1126('0x9')](function(_0x2b2487){if(_0x35fe9f['field']&&_0x35fe9f['field']!=='id'){_0x42f379[_0x1126('0xa')]=_['map'](_0x2b2487,function(_0x22ed37){return _0x22ed37[_0x35fe9f[_0x1126('0x6')]];});}else{if(_0x257b5f===_0x1126('0xf')){_0x42f379['associatedResources']=_[_0x1126('0xb')](_0x2b2487,function(_0x49d209){return{'id':_0x49d209['resourceId'],'type':_0x49d209[_0x1126('0x10')]};});}else{_0x42f379[_0x1126('0xa')]=_[_0x1126('0xb')](_0x2b2487,function(_0x36d254){return _0x36d254['resourceId'];});}}_0x245cd7(_0x42f379);})[_0x1126('0xc')](function(_0x477e6a){_0x1695f6(_0x477e6a);});});}function _0x48a08d(_0x2175fa,_0x59cd8e){var _0x529dd9={'parentSections':[]};switch(_0x2175fa['toLowerCase']()){case _0x1126('0x11'):_0x529dd9[_0x1126('0x12')]=_0x1126('0x13');break;case _0x1126('0x14'):_0x529dd9[_0x1126('0x12')]=_0x1126('0x15');break;case _0x1126('0x16'):_0x529dd9[_0x1126('0x12')]='SquareRecording';_0x529dd9[_0x1126('0x17')]=[{'name':_0x1126('0x18'),'field':_0x1126('0xe'),'foreignKey':'projectName'}];break;case'projects':_0x529dd9[_0x1126('0x12')]=_0x1126('0x19');break;case'contacts':_0x529dd9[_0x1126('0x12')]=_0x1126('0x1a');_0x529dd9['parentSections']=[{'name':_0x1126('0x1b'),'field':'id','foreignKey':'ListId'}];break;case _0x1126('0x1c'):_0x529dd9['childModel']=_0x1126('0x1d');break;case'companies':_0x529dd9[_0x1126('0x12')]='CmCompany';break;case'globalcustomfields':_0x529dd9['childModel']=_0x1126('0x1e');break;case _0x1126('0x1f'):_0x529dd9[_0x1126('0x12')]='ChatQueue';break;case _0x1126('0x20'):_0x529dd9[_0x1126('0x12')]='ChatWebsite';break;case _0x1126('0x21'):_0x529dd9[_0x1126('0x12')]=_0x1126('0x22');break;case _0x1126('0x23'):_0x529dd9['childModel']='FaxAccount';break;case _0x1126('0x24'):case _0x1126('0x25'):case _0x1126('0x26'):_0x529dd9[_0x1126('0x12')]='VoiceExtension';break;case _0x1126('0x27'):_0x529dd9[_0x1126('0x12')]=_0x1126('0x28');break;case _0x1126('0x29'):_0x529dd9[_0x1126('0x12')]='VoiceMail';break;case _0x1126('0x2a'):_0x529dd9[_0x1126('0x12')]=_0x1126('0x2b');_0x529dd9[_0x1126('0x17')]=[{'name':'Agents','field':'name','foreignKey':_0x1126('0x2c'),'model':_0x1126('0x2d'),'filter':{'field':'role','value':[_0x1126('0x2e')]}},{'name':_0x1126('0x2f'),'field':_0x1126('0xe'),'foreignKey':'membername','model':'User','filter':{'field':_0x1126('0x30'),'value':[_0x1126('0x31')]}},{'name':_0x1126('0x32'),'field':_0x1126('0xe'),'foreignKey':'queue','model':_0x1126('0x33'),'filter':{'field':'type','value':[_0x1126('0x34')]}},{'name':_0x1126('0x35'),'field':_0x1126('0xe'),'foreignKey':_0x1126('0x36'),'model':_0x1126('0x33'),'filter':{'field':'type','value':[_0x1126('0x37')]}}];break;case _0x1126('0x38'):_0x529dd9[_0x1126('0x12')]=_0x1126('0x39');break;case _0x1126('0x3a'):_0x529dd9[_0x1126('0x12')]=_0x1126('0x3b');break;case'voiceprefixes':_0x529dd9[_0x1126('0x12')]=_0x1126('0x3c');break;case _0x1126('0x3d'):_0x529dd9[_0x1126('0x12')]=_0x1126('0x3e');break;case'mailqueues':_0x529dd9['childModel']=_0x1126('0x3f');break;case _0x1126('0x40'):_0x529dd9[_0x1126('0x12')]=_0x1126('0x41');break;case _0x1126('0x42'):_0x529dd9[_0x1126('0x12')]='MailSubstatus';break;case'openchannelqueues':_0x529dd9['childModel']=_0x1126('0x43');break;case'openchannelaccounts':_0x529dd9[_0x1126('0x12')]=_0x1126('0x44');break;case _0x1126('0x45'):_0x529dd9[_0x1126('0x12')]='SmsQueue';break;case'smsaccounts':_0x529dd9[_0x1126('0x12')]=_0x1126('0x46');break;case _0x1126('0x47'):_0x529dd9['childModel']=_0x1126('0x48');break;case'whatsappaccounts':_0x529dd9[_0x1126('0x12')]='WhatsappAccount';break;case _0x1126('0x49'):_0x529dd9[_0x1126('0x12')]=_0x1126('0x4a');break;case'voicequeues':case _0x1126('0x4b'):_0x529dd9[_0x1126('0x12')]=_0x1126('0x33');if(_0x59cd8e){_0x529dd9['parentSections']=[{'name':'VoiceQueues'},{'name':'QueueCampaigns'}];}break;case _0x1126('0x4c'):case'agents':case _0x1126('0x4d'):_0x529dd9['childModel']=_0x1126('0x2d');if(_0x59cd8e){_0x529dd9[_0x1126('0x17')]=[{'name':_0x1126('0x4e'),'filter':{'field':_0x1126('0x30'),'value':[_0x1126('0x4f'),'user']},'ignore':!![]},{'name':_0x1126('0x50')},{'name':_0x1126('0x2f')}];}break;case'zendeskaccounts':_0x529dd9[_0x1126('0x12')]=_0x1126('0x51');break;case'salesforceaccounts':_0x529dd9[_0x1126('0x12')]=_0x1126('0x52');break;case'freshdeskaccounts':_0x529dd9[_0x1126('0x12')]=_0x1126('0x53');break;case _0x1126('0x54'):_0x529dd9['childModel']=_0x1126('0x55');break;case _0x1126('0x56'):_0x529dd9[_0x1126('0x12')]=_0x1126('0x57');break;case _0x1126('0x58'):_0x529dd9[_0x1126('0x12')]=_0x1126('0x59');break;case _0x1126('0x5a'):_0x529dd9['childModel']=_0x1126('0x2d');break;case'cannedanswers':_0x529dd9[_0x1126('0x12')]=_0x1126('0x5b');break;case'dispositions':_0x529dd9['childModel']=_0x1126('0x5c');break;case _0x1126('0x5d'):_0x529dd9[_0x1126('0x12')]='Dashboard';break;case _0x1126('0x5e'):_0x529dd9[_0x1126('0x12')]=_0x1126('0x5f');break;case _0x1126('0x60'):_0x529dd9['childModel']=_0x1126('0x61');break;case _0x1126('0x62'):_0x529dd9['childModel']='Schedule';break;case'sounds':_0x529dd9['childModel']=_0x1126('0x63');break;case _0x1126('0x64'):_0x529dd9['childModel']=_0x1126('0x65');break;case _0x1126('0x66'):_0x529dd9[_0x1126('0x12')]=_0x1126('0x67');break;case _0x1126('0x68'):_0x529dd9['childModel']=_0x1126('0x69');break;case _0x1126('0x6a'):_0x529dd9['childModel']=_0x1126('0x6b');break;case _0x1126('0x6c'):_0x529dd9[_0x1126('0x12')]=_0x1126('0x6d');break;case _0x1126('0x6e'):_0x529dd9['childModel']=_0x1126('0x6f');break;case'extractedreports':_0x529dd9[_0x1126('0x12')]=_0x1126('0xf');_0x529dd9[_0x1126('0x17')]=[{'name':'Reports','field':'id','foreignKey':_0x1126('0x70')}];break;case _0x1126('0x71'):_0x529dd9['childModel']=_0x1126('0x72');break;}return _0x529dd9;}function _0x25038f(_0x9bad53,_0x5a5340){var _0x2fe6dc=_0x9bad53[_0x1126('0x73')](0x0)[_0x1126('0x74')]()+_0x9bad53[_0x1126('0x75')](0x1);var _0x128c94={'type':_0x350f3a[_0x1126('0x76')][_0x1126('0x77')][_0x1126('0x78')],'raw':!![]};return new Promise(function(_0x47e53d,_0x2b23e3){var _0x2db45e=squel[_0x1126('0x79')]()[_0x1126('0x6')](_0x1126('0x7a')+_0x2fe6dc+'InteractionId','id')[_0x1126('0x6')](_0x1126('0x7b'))['from'](_0x1126('0x7c')+_0x9bad53+'_interactions','ui')[_0x1126('0x7d')](_0x1126('0x7e'),_0x5a5340['id']);return _0x350f3a['sequelize'][_0x1126('0x7f')](_0x2db45e[_0x1126('0x80')](),_0x128c94)[_0x1126('0x9')](function(_0x592960){_0x5a5340[_0x2fe6dc+_0x1126('0x81')]=_0x592960;_0x47e53d(_0x592960);})['catch'](function(_0x558b6e){_0x2b23e3(_0x558b6e);});});}return _0x39b786[_0x1126('0x82')](_0x1126('0x83'),attributes,{'tableName':_0x1126('0x84'),'paranoid':![],'indexes':[],'timestamps':!![],'classMethods':{'getResources':function(_0x1230e9){var _0x3a76ec={'raw':![],'where':{}};var _0x1b4ebf={};var _0x1a0e26={'count':0x0,'rows':[]};var _0x5036d4=_0x1230e9[_0x1126('0x7f')][_0x1126('0x85')];var _0x116867=_0x1230e9[_0x1126('0x7f')][_0x1126('0x86')]||![];var _0x3cd788=_0x48a08d(_0x5036d4,_0x116867);if(!_0x3cd788['childModel'])throw new Error('Invalid\x20section\x20\x27'+_0x5036d4+'\x27');var _0x16a343=[{'name':_0x5036d4}];if(!_[_0x1126('0x87')](_0x3cd788['parentSections']))_0x16a343=_0x3cd788['parentSections'];var _0x5e9260=[];for(var _0x51a28d=0x0;_0x51a28d<_0x16a343[_0x1126('0x88')];_0x51a28d++){_0x5e9260[_0x1126('0x89')](_0x350f3a[_0x1126('0x8a')]['find']({'where':{'userProfileId':_0x1230e9[_0x1126('0x8b')]['id'],'name':_0x16a343[_0x51a28d][_0x1126('0xe')]},'raw':!![]}));}return Promise[_0x1126('0x8c')](_0x5e9260)[_0x1126('0x9')](function(_0x22d403){var _0x3f007b=_[_0x1126('0x5')](_0x22d403,function(_0x49a0a3){return _0x49a0a3?_0x49a0a3:undefined;});var _0x339aa6=_[_0x1126('0x5')](_0x16a343,[_0x1126('0x8d'),!![]]);var _0xd8171c=_[_0x1126('0x87')](_0x3f007b)&&_['isEmpty'](_0x339aa6)?null:_['union'](_0x339aa6,_0x3f007b);if(!_0xd8171c)return null;var _0x15cf3d=[];for(var _0x2643d7=0x0;_0x2643d7<_0xd8171c['length'];_0x2643d7++){var _0x3bf25d=_[_0x1126('0x8e')](_0x16a343,function(_0x366675){return _0xd8171c[_0x2643d7]?_0x366675[_0x1126('0xe')]===_0xd8171c[_0x2643d7][_0x1126('0xe')]:null;});if(_0x3bf25d){if(_0xd8171c[_0x2643d7][_0x1126('0x8d')]){_0x15cf3d[_0x1126('0x89')](_0x4245ca(_0x3cd788[_0x1126('0x12')],_0xd8171c[_0x2643d7]));}else{if(!_0xd8171c[_0x2643d7][_0x1126('0x8f')]){_0x15cf3d[_0x1126('0x89')](_0x4794a7(_0x3bf25d,_0xd8171c[_0x2643d7],_0x3cd788[_0x1126('0x12')]));}else{if(_0x3bf25d[_0x1126('0xd')]){_0x15cf3d[_0x1126('0x89')](_0x34571c(_0x3bf25d,_0xd8171c[_0x2643d7]));}}}}}return Promise['all'](_0x15cf3d);})[_0x1126('0x9')](function(_0x274343){var _0x2b61ae=_0x274343;var _0x53ea9a=null;if(_0x2b61ae){_0x53ea9a=_0x2b61ae['length']===0x1?_0x2b61ae[0x0]:null;}if(!_0x53ea9a&&!_0x2b61ae)return _0x1a0e26;var _0xe22fd2=_0x350f3a[_0x3cd788[_0x1126('0x12')]][_0x1126('0x90')];_0x1b4ebf[_0x1126('0xd')]=_['keys'](_0xe22fd2);_0x1b4ebf['query']=_['keys'](_0x1230e9[_0x1126('0x7f')]);_0x1b4ebf[_0x1126('0x91')]=_[_0x1126('0x92')](_0x1b4ebf[_0x1126('0xd')],_0x1b4ebf['query']);_0x3a76ec[_0x1126('0x93')]=_['intersection'](_0x1b4ebf[_0x1126('0xd')],qs[_0x1126('0x94')](_0x1230e9[_0x1126('0x7f')][_0x1126('0x94')]));_0x3a76ec[_0x1126('0x93')]=_0x3a76ec[_0x1126('0x93')][_0x1126('0x88')]?_0x3a76ec['attributes']:_0x1b4ebf[_0x1126('0xd')];if(!_0x1230e9['query'][_0x1126('0x95')](_0x1126('0x96'))){_0x3a76ec['limit']=qs[_0x1126('0x97')](_0x1230e9[_0x1126('0x7f')]['limit']);_0x3a76ec[_0x1126('0x98')]=qs[_0x1126('0x98')](_0x1230e9['query']['offset']);}_0x3a76ec[_0x1126('0x99')]=qs[_0x1126('0x9a')](_0x1230e9[_0x1126('0x7f')]['sort']);_0x3a76ec['where']=qs['filters'](_[_0x1126('0x9b')](_0x1230e9['query'],_0x1b4ebf['filters']));if(_0x1230e9[_0x1126('0x7f')]['filter']){_0x3a76ec[_0x1126('0x7d')]=_[_0x1126('0x9c')](_0x3a76ec['where'],{'$or':_[_0x1126('0xb')](_0xe22fd2,function(_0x375728){if(_0x375728[_0x1126('0x10')][_0x1126('0x9d')]!==_0x1126('0x9e')){var _0x5e9872={};_0x5e9872[_0x375728[_0x1126('0x6')]]={'$like':'%'+_0x1230e9[_0x1126('0x7f')]['filter']+'%'};return _0x5e9872;}})});}var _0xd182b1=[];var _0x2d6fcf=null;var _0x2c0908={};if(_0x53ea9a){_0x2d6fcf=_[_0x1126('0x8e')](_0x16a343,[_0x1126('0xe'),_0x53ea9a[_0x1126('0xe')]]);if(_0x2d6fcf[_0x1126('0x6')]){_0x2c0908={};if(_0x3cd788[_0x1126('0x12')]===_0x1126('0xf')){_0x2c0908[_0x2d6fcf[_0x1126('0x9f')]]=_[_0x1126('0xb')](_0x53ea9a[_0x1126('0xa')],'id');}else{_0x2c0908[_0x2d6fcf[_0x1126('0x9f')]]=_0x53ea9a[_0x1126('0xa')];}_0xd182b1[_0x1126('0x89')](_0x2c0908);}else{_0x3a76ec[_0x1126('0x7d')]['id']=_0x53ea9a['associatedResources'];}}else{for(var _0x31cfb5=0x0;_0x31cfb5<_0x2b61ae[_0x1126('0x88')];_0x31cfb5++){_0x2d6fcf=_[_0x1126('0x8e')](_0x16a343,[_0x1126('0xe'),_0x2b61ae[_0x31cfb5][_0x1126('0xe')]]);if(_0x2d6fcf['field']){_0x2c0908={};_0x2c0908[_0x2d6fcf[_0x1126('0x9f')]]=_0x2b61ae[_0x31cfb5]['associatedResources'];_0xd182b1['push'](_0x2c0908);}else{if(!_0x3a76ec[_0x1126('0x7d')]['id'])_0x3a76ec[_0x1126('0x7d')]['id']=[];_0x2b61ae[_0x31cfb5]['associatedResources']['forEach'](function(_0xaada05){_0x3a76ec[_0x1126('0x7d')]['id'][_0x1126('0x89')](_0xaada05);});}}}if(!_[_0x1126('0x87')](_0xd182b1)){_0x3a76ec[_0x1126('0x7d')]=_[_0x1126('0x9c')](_0x3a76ec[_0x1126('0x7d')],{'$and':{'$or':_0xd182b1}});}_0x3a76ec=_[_0x1126('0x9c')]({},_0x3a76ec,_0x1230e9[_0x1126('0xa0')]);if(_0x53ea9a&&!_0x53ea9a['autoAssociation']&&_0x3cd788[_0x1126('0x12')]===_0x1126('0xf')){if(_0x1230e9[_0x1126('0x7f')][_0x1126('0xa1')]){_0x3a76ec[_0x1126('0xa2')]=[{'all':!![]}];}return _0x350f3a[_0x3cd788[_0x1126('0x12')]]['findAll'](_0x3a76ec)[_0x1126('0x9')](function(_0x2cc4c8){var _0x194b3c=[];_0x2cc4c8[_0x1126('0xa3')](function(_0x12cdc6){var _0x1796eb;switch(_0x12cdc6[_0x1126('0xa4')]){case _0x1126('0xa5'):_0x1796eb=_[_0x1126('0x8e')](_0x53ea9a[_0x1126('0xa')],function(_0x5d6edb){return _0x5d6edb['id']===_0x12cdc6['reportId']&&_0x5d6edb[_0x1126('0x10')]==='DefaultReports';});break;case _0x1126('0xa6'):_0x1796eb=_['find'](_0x53ea9a[_0x1126('0xa')],function(_0x5059d3){return _0x5059d3['id']===_0x12cdc6[_0x1126('0x70')]&&_0x5059d3['type']==='CustomReports';});break;}if(_0x1796eb)_0x194b3c['push'](_0x12cdc6);});_0x1a0e26[_0x1126('0xa7')]=_0x194b3c[_0x1126('0x88')];_0x1a0e26['rows']=_0x194b3c;return _0x1a0e26;});}else{return _0x350f3a[_0x3cd788['childModel']][_0x1126('0xa7')]({'where':_0x3a76ec[_0x1126('0x7d')]})[_0x1126('0x9')](function(_0x5dfb8f){_0x1a0e26['count']=_0x5dfb8f;if(_0x1230e9[_0x1126('0x7f')]['includeAll']){if(_0x3cd788[_0x1126('0x12')]===_0x1126('0x1a')){_0x3a76ec[_0x1126('0xa2')]=[{'model':_0x350f3a[_0x1126('0x65')],'as':_0x1126('0xa8'),'attributes':['id','name','color'],'required':_0x1230e9[_0x1126('0x7f')][_0x1126('0xa9')]?!![]:![]},{'model':_0x350f3a[_0x1126('0x65')],'as':_0x1126('0xaa'),'attributes':['id',_0x1126('0xe'),_0x1126('0xab')],'through':_0x1230e9[_0x1126('0x7f')][_0x1126('0xa9')]?{'attributes':[],'where':{'TagId':_0x1230e9[_0x1126('0x7f')][_0x1126('0xa9')]||undefined}}:{},'required':_0x1230e9[_0x1126('0x7f')]['tag']?!![]:![]}];}else{_0x3a76ec[_0x1126('0xa2')]=[{'all':!![]}];}}return _0x350f3a[_0x3cd788['childModel']][_0x1126('0x8')](_0x3a76ec);})['then'](function(_0x4256e6){_0x1a0e26[_0x1126('0xac')]=_0x4256e6;if(_0x5036d4===_0x1126('0x50')&&_0x1230e9[_0x1126('0x7f')]['openTabs']===_0x1126('0xad')){var _0x834360=[];for(var _0x4b5d46=0x0;_0x4b5d46<_0x1a0e26['rows'][_0x1126('0x88')];_0x4b5d46++){_0x834360[_0x1126('0x89')](_0x25038f(_0x1126('0xae'),_0x1a0e26['rows'][_0x4b5d46][_0x1126('0xaf')]));_0x834360['push'](_0x25038f(_0x1126('0xb0'),_0x1a0e26[_0x1126('0xac')][_0x4b5d46]['dataValues']));_0x834360[_0x1126('0x89')](_0x25038f(_0x1126('0xb1'),_0x1a0e26[_0x1126('0xac')][_0x4b5d46][_0x1126('0xaf')]));_0x834360[_0x1126('0x89')](_0x25038f('mail',_0x1a0e26[_0x1126('0xac')][_0x4b5d46][_0x1126('0xaf')]));_0x834360[_0x1126('0x89')](_0x25038f('openchannel',_0x1a0e26['rows'][_0x4b5d46]['dataValues']));_0x834360[_0x1126('0x89')](_0x25038f(_0x1126('0xb2'),_0x1a0e26[_0x1126('0xac')][_0x4b5d46][_0x1126('0xaf')]));}return Promise['all'](_0x834360)[_0x1126('0x9')](function(){return _0x1a0e26;});}return _0x1a0e26;});}});}}});};
\ No newline at end of file
index 3ed38bf..327dee4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4cff=['stringify','error','code','message','info','result','lodash','util','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults','redis','localhost','socket.io-emitter','./userProfile.socket','register','request','then','UserProfile,\x20%s,\x20%s','request\x20sent'];(function(_0x129041,_0x1ea001){var _0x4d2f0c=function(_0x38cd8f){while(--_0x38cd8f){_0x129041['push'](_0x129041['shift']());}};_0x4d2f0c(++_0x1ea001);}(_0x4cff,0x14a));var _0xf4cf=function(_0x496b8a,_0x189a2d){_0x496b8a=_0x496b8a-0x0;var _0x23f627=_0x4cff[_0x496b8a];return _0x23f627;};'use strict';var _=require(_0xf4cf('0x0'));var util=require(_0xf4cf('0x1'));var moment=require('moment');var BPromise=require(_0xf4cf('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xf4cf('0x3'));var db=require(_0xf4cf('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xf4cf('0x5'))(_0xf4cf('0x6'));var config=require(_0xf4cf('0x7'));var jayson=require(_0xf4cf('0x8'));var client=jayson[_0xf4cf('0x9')][_0xf4cf('0xa')]({'port':0x232a});config['redis']=_[_0xf4cf('0xb')](config[_0xf4cf('0xc')],{'host':_0xf4cf('0xd'),'port':0x18eb});var socket=require(_0xf4cf('0xe'))(new Redis(config['redis']));require(_0xf4cf('0xf'))[_0xf4cf('0x10')](socket);function respondWithRpcPromise(_0x10dd9e,_0x16a6f1,_0x520c03){return new BPromise(function(_0x3c40ab,_0xec3042){return client[_0xf4cf('0x11')](_0x10dd9e,_0x520c03)[_0xf4cf('0x12')](function(_0x50f939){logger['info'](_0xf4cf('0x13'),_0x16a6f1,'request\x20sent');logger['debug']('UserProfile,\x20%s,\x20%s,\x20%s',_0x16a6f1,_0xf4cf('0x14'),JSON[_0xf4cf('0x15')](_0x50f939));if(_0x50f939[_0xf4cf('0x16')]){if(_0x50f939[_0xf4cf('0x16')][_0xf4cf('0x17')]===0x1f4){logger[_0xf4cf('0x16')](_0xf4cf('0x13'),_0x16a6f1,_0x50f939[_0xf4cf('0x16')][_0xf4cf('0x18')]);return _0xec3042(_0x50f939[_0xf4cf('0x16')]['message']);}logger[_0xf4cf('0x16')](_0xf4cf('0x13'),_0x16a6f1,_0x50f939[_0xf4cf('0x16')][_0xf4cf('0x18')]);return _0x3c40ab(_0x50f939[_0xf4cf('0x16')][_0xf4cf('0x18')]);}else{logger[_0xf4cf('0x19')]('UserProfile,\x20%s,\x20%s',_0x16a6f1,_0xf4cf('0x14'));_0x3c40ab(_0x50f939[_0xf4cf('0x1a')][_0xf4cf('0x18')]);}})['catch'](function(_0x23f181){logger['error'](_0xf4cf('0x13'),_0x16a6f1,_0x23f181);_0xec3042(_0x23f181);});});}
\ No newline at end of file
+var _0xbd36=['../../config/environment','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','request','then','info','UserProfile,\x20%s,\x20%s','debug','UserProfile,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/logger','rpc'];(function(_0xb776a4,_0x5d615a){var _0x57f668=function(_0x25f94a){while(--_0x25f94a){_0xb776a4['push'](_0xb776a4['shift']());}};_0x57f668(++_0x5d615a);}(_0xbd36,0x65));var _0x6bd3=function(_0x45d55e,_0x2fede3){_0x45d55e=_0x45d55e-0x0;var _0x29812a=_0xbd36[_0x45d55e];return _0x29812a;};'use strict';var _=require(_0x6bd3('0x0'));var util=require(_0x6bd3('0x1'));var moment=require(_0x6bd3('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6bd3('0x3'));var db=require(_0x6bd3('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x6bd3('0x5'))(_0x6bd3('0x6'));var config=require(_0x6bd3('0x7'));var jayson=require(_0x6bd3('0x8'));var client=jayson['client'][_0x6bd3('0x9')]({'port':0x232a});config[_0x6bd3('0xa')]=_[_0x6bd3('0xb')](config[_0x6bd3('0xa')],{'host':_0x6bd3('0xc'),'port':0x18eb});var socket=require(_0x6bd3('0xd'))(new Redis(config[_0x6bd3('0xa')]));require('./userProfile.socket')['register'](socket);function respondWithRpcPromise(_0x310f54,_0x50f7f4,_0x2ce148){return new BPromise(function(_0x18004a,_0x25056a){return client[_0x6bd3('0xe')](_0x310f54,_0x2ce148)[_0x6bd3('0xf')](function(_0x56e88f){logger[_0x6bd3('0x10')](_0x6bd3('0x11'),_0x50f7f4,'request\x20sent');logger[_0x6bd3('0x12')](_0x6bd3('0x13'),_0x50f7f4,_0x6bd3('0x14'),JSON[_0x6bd3('0x15')](_0x56e88f));if(_0x56e88f[_0x6bd3('0x16')]){if(_0x56e88f[_0x6bd3('0x16')][_0x6bd3('0x17')]===0x1f4){logger[_0x6bd3('0x16')]('UserProfile,\x20%s,\x20%s',_0x50f7f4,_0x56e88f[_0x6bd3('0x16')][_0x6bd3('0x18')]);return _0x25056a(_0x56e88f['error']['message']);}logger['error'](_0x6bd3('0x11'),_0x50f7f4,_0x56e88f['error'][_0x6bd3('0x18')]);return _0x18004a(_0x56e88f[_0x6bd3('0x16')][_0x6bd3('0x18')]);}else{logger[_0x6bd3('0x10')]('UserProfile,\x20%s,\x20%s',_0x50f7f4,'request\x20sent');_0x18004a(_0x56e88f[_0x6bd3('0x19')][_0x6bd3('0x18')]);}})[_0x6bd3('0x1a')](function(_0x45ae0e){logger[_0x6bd3('0x16')](_0x6bd3('0x11'),_0x50f7f4,_0x45ae0e);_0x25056a(_0x45ae0e);});});}
\ No newline at end of file
index 2109453..bdada9b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x878a=['userProfile:','./userProfile.events','remove','update','emit','removeListener','length'];(function(_0x291dfa,_0x520d0f){var _0x29f86f=function(_0x4e6379){while(--_0x4e6379){_0x291dfa['push'](_0x291dfa['shift']());}};_0x29f86f(++_0x520d0f);}(_0x878a,0x1ac));var _0xa878=function(_0x475a41,_0x3c30d6){_0x475a41=_0x475a41-0x0;var _0x542b92=_0x878a[_0x475a41];return _0x542b92;};'use strict';var UserProfileEvents=require(_0xa878('0x0'));var events=['save',_0xa878('0x1'),_0xa878('0x2')];function createListener(_0x2df402,_0x1d3065){return function(_0x5366de){_0x1d3065[_0xa878('0x3')](_0x2df402,_0x5366de);};}function removeListener(_0x1fe597,_0x5d2d2c){return function(){UserProfileEvents[_0xa878('0x4')](_0x1fe597,_0x5d2d2c);};}exports['register']=function(_0x101b7c){for(var _0x558fbf=0x0,_0x11a9fe=events[_0xa878('0x5')];_0x558fbf<_0x11a9fe;_0x558fbf++){var _0x25ba07=events[_0x558fbf];var _0x59ae63=createListener(_0xa878('0x6')+_0x25ba07,_0x101b7c);UserProfileEvents['on'](_0x25ba07,_0x59ae63);}};
\ No newline at end of file
+var _0x0a85=['emit','removeListener','register','./userProfile.events','save','remove','update'];(function(_0x5899c9,_0x4a5c4a){var _0x489726=function(_0x4f07c6){while(--_0x4f07c6){_0x5899c9['push'](_0x5899c9['shift']());}};_0x489726(++_0x4a5c4a);}(_0x0a85,0x106));var _0x50a8=function(_0x3d6d91,_0x72b795){_0x3d6d91=_0x3d6d91-0x0;var _0x133042=_0x0a85[_0x3d6d91];return _0x133042;};'use strict';var UserProfileEvents=require(_0x50a8('0x0'));var events=[_0x50a8('0x1'),_0x50a8('0x2'),_0x50a8('0x3')];function createListener(_0x2077cc,_0xe429c4){return function(_0x43911e){_0xe429c4[_0x50a8('0x4')](_0x2077cc,_0x43911e);};}function removeListener(_0x354a86,_0x1c9dce){return function(){UserProfileEvents[_0x50a8('0x5')](_0x354a86,_0x1c9dce);};}exports[_0x50a8('0x6')]=function(_0x5e07a7){for(var _0x347fc4=0x0,_0x495c66=events['length'];_0x347fc4<_0x495c66;_0x347fc4++){var _0x40b79a=events[_0x347fc4];var _0x224f8f=createListener('userProfile:'+_0x40b79a,_0x5e07a7);UserProfileEvents['on'](_0x40b79a,_0x224f8f);}};
\ No newline at end of file
index b8df219..c28794c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8f3=['post','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./userProfileResource.controller','get','index','/describe','isAuthenticated','describe','/:id','show'];(function(_0x48869c,_0x308597){var _0x1b4570=function(_0x19a56a){while(--_0x19a56a){_0x48869c['push'](_0x48869c['shift']());}};_0x1b4570(++_0x308597);}(_0xd8f3,0x16a));var _0x3d8f=function(_0x25ebdf,_0x1e235f){_0x25ebdf=_0x25ebdf-0x0;var _0x926ca4=_0xd8f3[_0x25ebdf];return _0x926ca4;};'use strict';var multer=require(_0x3d8f('0x0'));var util=require(_0x3d8f('0x1'));var path=require(_0x3d8f('0x2'));var timeout=require(_0x3d8f('0x3'));var express=require(_0x3d8f('0x4'));var router=express[_0x3d8f('0x5')]();var fs_extra=require(_0x3d8f('0x6'));var auth=require(_0x3d8f('0x7'));var interaction=require(_0x3d8f('0x8'));var config=require(_0x3d8f('0x9'));var controller=require(_0x3d8f('0xa'));router[_0x3d8f('0xb')]('/',auth['isAuthenticated'](),controller[_0x3d8f('0xc')]);router[_0x3d8f('0xb')](_0x3d8f('0xd'),auth[_0x3d8f('0xe')](),controller[_0x3d8f('0xf')]);router[_0x3d8f('0xb')](_0x3d8f('0x10'),auth[_0x3d8f('0xe')](),controller[_0x3d8f('0x11')]);router[_0x3d8f('0x12')]('/',auth[_0x3d8f('0xe')](),controller['create']);router['put']('/:id',auth[_0x3d8f('0xe')](),controller['update']);router['delete'](_0x3d8f('0x10'),auth[_0x3d8f('0xe')](),controller['destroy']);module[_0x3d8f('0x13')]=router;
\ No newline at end of file
+var _0x03aa=['delete','destroy','exports','multer','util','connect-timeout','express','Router','../../config/environment','get','isAuthenticated','index','describe','/:id','create','update'];(function(_0x46698a,_0x8de1e4){var _0x356db0=function(_0x19e83c){while(--_0x19e83c){_0x46698a['push'](_0x46698a['shift']());}};_0x356db0(++_0x8de1e4);}(_0x03aa,0xe3));var _0xa03a=function(_0xaf1cce,_0x2f58b7){_0xaf1cce=_0xaf1cce-0x0;var _0x3c6d43=_0x03aa[_0xaf1cce];return _0x3c6d43;};'use strict';var multer=require(_0xa03a('0x0'));var util=require(_0xa03a('0x1'));var path=require('path');var timeout=require(_0xa03a('0x2'));var express=require(_0xa03a('0x3'));var router=express[_0xa03a('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xa03a('0x5'));var controller=require('./userProfileResource.controller');router[_0xa03a('0x6')]('/',auth[_0xa03a('0x7')](),controller[_0xa03a('0x8')]);router[_0xa03a('0x6')]('/describe',auth[_0xa03a('0x7')](),controller[_0xa03a('0x9')]);router['get'](_0xa03a('0xa'),auth[_0xa03a('0x7')](),controller['show']);router['post']('/',auth[_0xa03a('0x7')](),controller[_0xa03a('0xb')]);router['put'](_0xa03a('0xa'),auth[_0xa03a('0x7')](),controller[_0xa03a('0xc')]);router[_0xa03a('0xd')](_0xa03a('0xa'),auth[_0xa03a('0x7')](),controller[_0xa03a('0xe')]);module[_0xa03a('0xf')]=router;
\ No newline at end of file
index e00e856..a4711e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x081b=['INTEGER','STRING'];(function(_0x7b6a1e,_0x2facf8){var _0xa6f53e=function(_0x2c1019){while(--_0x2c1019){_0x7b6a1e['push'](_0x7b6a1e['shift']());}};_0xa6f53e(++_0x2facf8);}(_0x081b,0x71));var _0xb081=function(_0x17b3aa,_0x53ff4f){_0x17b3aa=_0x17b3aa-0x0;var _0x41702f=_0x081b[_0x17b3aa];return _0x41702f;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0xb081('0x0')],'allowNull':![]},'resourceId':{'type':Sequelize[_0xb081('0x1')],'allowNull':![]},'type':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
+var _0xb7e9=['sequelize','exports','INTEGER','STRING'];(function(_0x16e5b3,_0x30d91d){var _0x4d6874=function(_0x2fffbe){while(--_0x2fffbe){_0x16e5b3['push'](_0x16e5b3['shift']());}};_0x4d6874(++_0x30d91d);}(_0xb7e9,0x1ec));var _0x9b7e=function(_0x14e2dc,_0x5f3535){_0x14e2dc=_0x14e2dc-0x0;var _0x1843c3=_0xb7e9[_0x14e2dc];return _0x1843c3;};'use strict';var Sequelize=require(_0x9b7e('0x0'));module[_0x9b7e('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'resourceId':{'type':Sequelize[_0x9b7e('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x9b7e('0x3')],'allowNull':![]}};
\ No newline at end of file
index 9b1ea7f..4427c6e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfcf0=['nolimit','order','sort','where','VIRTUAL','filter','includeAll','include','catch','params','merge','options','create','body','find','describe','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','set','apply','reject','update','then','destroy','error','stack','name','send','index','UserProfileResource','rawAttributes','fieldName','type','key','model','map','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty'];(function(_0x279d37,_0x14de3f){var _0x530173=function(_0x37fc79){while(--_0x37fc79){_0x279d37['push'](_0x279d37['shift']());}};_0x530173(++_0x14de3f);}(_0xfcf0,0x138));var _0x0fcf=function(_0x3eb713,_0x437874){_0x3eb713=_0x3eb713-0x0;var _0x1d7128=_0xfcf0[_0x3eb713];return _0x1d7128;};'use strict';var emlformat=require(_0x0fcf('0x0'));var rimraf=require(_0x0fcf('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x0fcf('0x2'));var rp=require(_0x0fcf('0x3'));var moment=require(_0x0fcf('0x4'));var BPromise=require(_0x0fcf('0x5'));var Mustache=require('mustache');var util=require(_0x0fcf('0x6'));var path=require(_0x0fcf('0x7'));var sox=require(_0x0fcf('0x8'));var csv=require(_0x0fcf('0x9'));var ejs=require(_0x0fcf('0xa'));var fs=require('fs');var fs_extra=require(_0x0fcf('0xb'));var _=require(_0x0fcf('0xc'));var squel=require(_0x0fcf('0xd'));var crypto=require('crypto');var jsforce=require(_0x0fcf('0xe'));var deskjs=require(_0x0fcf('0xf'));var toCsv=require(_0x0fcf('0x9'));var querystring=require('querystring');var Papa=require(_0x0fcf('0x10'));var Redis=require(_0x0fcf('0x11'));var authService=require(_0x0fcf('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x0fcf('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x0fcf('0x14'))(_0x0fcf('0x15'));var utils=require(_0x0fcf('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x0fcf('0x17'))['db'];function respondWithStatusCode(_0x3c999e,_0x4b4904){_0x4b4904=_0x4b4904||0xcc;return function(_0x20153d){if(_0x20153d){return _0x3c999e[_0x0fcf('0x18')](_0x4b4904);}return _0x3c999e[_0x0fcf('0x19')](_0x4b4904)[_0x0fcf('0x1a')]();};}function respondWithResult(_0x25fadc,_0x48bba6){_0x48bba6=_0x48bba6||0xc8;return function(_0xa32692){if(_0xa32692){return _0x25fadc[_0x0fcf('0x19')](_0x48bba6)[_0x0fcf('0x1b')](_0xa32692);}};}function respondWithFilteredResult(_0x5e867f,_0x3c09c4){return function(_0x610106){if(_0x610106){var _0x445207=typeof _0x3c09c4[_0x0fcf('0x1c')]==='undefined'&&typeof _0x3c09c4[_0x0fcf('0x1d')]===_0x0fcf('0x1e');var _0x1a8477=_0x610106[_0x0fcf('0x1f')];var _0x19cfbd=_0x445207?0x0:_0x3c09c4['offset'];var _0x18ea32=_0x445207?_0x610106[_0x0fcf('0x1f')]:_0x3c09c4['offset']+_0x3c09c4[_0x0fcf('0x1d')];var _0x1b9a90;if(_0x18ea32>=_0x1a8477){_0x18ea32=_0x1a8477;_0x1b9a90=0xc8;}else{_0x1b9a90=0xce;}_0x5e867f['status'](_0x1b9a90);return _0x5e867f[_0x0fcf('0x20')]('Content-Range',_0x19cfbd+'-'+_0x18ea32+'/'+_0x1a8477)[_0x0fcf('0x1b')](_0x610106);}return null;};}function patchUpdates(_0x13454e){return function(_0x5c8279){try{jsonpatch[_0x0fcf('0x21')](_0x5c8279,_0x13454e,!![]);}catch(_0x3f28d0){return BPromise[_0x0fcf('0x22')](_0x3f28d0);}return _0x5c8279['save']();};}function saveUpdates(_0x2f03ce,_0x1dafc8){return function(_0x196d30){if(_0x196d30){return _0x196d30[_0x0fcf('0x23')](_0x2f03ce)[_0x0fcf('0x24')](function(_0x30e1b0){return _0x30e1b0;});}return null;};}function removeEntity(_0x5841a9,_0x2eef74){return function(_0x253641){if(_0x253641){return _0x253641[_0x0fcf('0x25')]()[_0x0fcf('0x24')](function(){_0x5841a9[_0x0fcf('0x19')](0xcc)[_0x0fcf('0x1a')]();});}};}function handleEntityNotFound(_0x2ce990,_0x18f269){return function(_0x117510){if(!_0x117510){_0x2ce990['sendStatus'](0x194);}return _0x117510;};}function handleError(_0x18965e,_0xc107a){_0xc107a=_0xc107a||0x1f4;return function(_0x41b7a2){logger[_0x0fcf('0x26')](_0x41b7a2[_0x0fcf('0x27')]);if(_0x41b7a2[_0x0fcf('0x28')]){delete _0x41b7a2[_0x0fcf('0x28')];}_0x18965e['status'](_0xc107a)[_0x0fcf('0x29')](_0x41b7a2);};}exports[_0x0fcf('0x2a')]=function(_0x200517,_0x35180d){var _0x49fd0e={},_0x5d9bcd={},_0x4af80d={'count':0x0,'rows':[]};var _0x428194=_['map'](db[_0x0fcf('0x2b')][_0x0fcf('0x2c')],function(_0x56a416){return{'name':_0x56a416[_0x0fcf('0x2d')],'type':_0x56a416[_0x0fcf('0x2e')][_0x0fcf('0x2f')]};});_0x5d9bcd[_0x0fcf('0x30')]=_[_0x0fcf('0x31')](_0x428194,_0x0fcf('0x28'));_0x5d9bcd['query']=_[_0x0fcf('0x32')](_0x200517[_0x0fcf('0x33')]);_0x5d9bcd[_0x0fcf('0x34')]=_[_0x0fcf('0x35')](_0x5d9bcd[_0x0fcf('0x30')],_0x5d9bcd[_0x0fcf('0x33')]);_0x49fd0e['attributes']=_[_0x0fcf('0x35')](_0x5d9bcd[_0x0fcf('0x30')],qs[_0x0fcf('0x36')](_0x200517[_0x0fcf('0x33')][_0x0fcf('0x36')]));_0x49fd0e[_0x0fcf('0x37')]=_0x49fd0e[_0x0fcf('0x37')][_0x0fcf('0x38')]?_0x49fd0e[_0x0fcf('0x37')]:_0x5d9bcd[_0x0fcf('0x30')];if(!_0x200517[_0x0fcf('0x33')][_0x0fcf('0x39')](_0x0fcf('0x3a'))){_0x49fd0e[_0x0fcf('0x1d')]=qs['limit'](_0x200517['query'][_0x0fcf('0x1d')]);_0x49fd0e['offset']=qs['offset'](_0x200517[_0x0fcf('0x33')][_0x0fcf('0x1c')]);}_0x49fd0e[_0x0fcf('0x3b')]=qs['sort'](_0x200517['query'][_0x0fcf('0x3c')]);_0x49fd0e[_0x0fcf('0x3d')]=qs[_0x0fcf('0x34')](_['pick'](_0x200517[_0x0fcf('0x33')],_0x5d9bcd[_0x0fcf('0x34')]),_0x428194);if(_0x200517[_0x0fcf('0x33')]['filter']){_0x49fd0e['where']=_['merge'](_0x49fd0e[_0x0fcf('0x3d')],{'$or':_[_0x0fcf('0x31')](_0x428194,function(_0xdfdd1){if(_0xdfdd1[_0x0fcf('0x2e')]!==_0x0fcf('0x3e')){var _0x4be8eb={};_0x4be8eb[_0xdfdd1[_0x0fcf('0x28')]]={'$like':'%'+_0x200517[_0x0fcf('0x33')][_0x0fcf('0x3f')]+'%'};return _0x4be8eb;}})});}_0x49fd0e=_['merge']({},_0x49fd0e,_0x200517['options']);var _0x13e4b2={'where':_0x49fd0e[_0x0fcf('0x3d')]};return db[_0x0fcf('0x2b')][_0x0fcf('0x1f')](_0x13e4b2)[_0x0fcf('0x24')](function(_0x4c6669){_0x4af80d[_0x0fcf('0x1f')]=_0x4c6669;if(_0x200517[_0x0fcf('0x33')][_0x0fcf('0x40')]){_0x49fd0e[_0x0fcf('0x41')]=[{'all':!![]}];}return db['UserProfileResource']['findAll'](_0x49fd0e);})[_0x0fcf('0x24')](function(_0x2444a6){_0x4af80d['rows']=_0x2444a6;return _0x4af80d;})[_0x0fcf('0x24')](respondWithFilteredResult(_0x35180d,_0x49fd0e))[_0x0fcf('0x42')](handleError(_0x35180d,null));};exports['show']=function(_0x237fa6,_0xfc2f2b){var _0x44eb03={'raw':![],'where':{'id':_0x237fa6[_0x0fcf('0x43')]['id']}},_0x1f322b={};_0x1f322b['model']=_[_0x0fcf('0x32')](db[_0x0fcf('0x2b')]['rawAttributes']);_0x1f322b['query']=_[_0x0fcf('0x32')](_0x237fa6['query']);_0x1f322b['filters']=_[_0x0fcf('0x35')](_0x1f322b[_0x0fcf('0x30')],_0x1f322b[_0x0fcf('0x33')]);_0x44eb03[_0x0fcf('0x37')]=_[_0x0fcf('0x35')](_0x1f322b[_0x0fcf('0x30')],qs[_0x0fcf('0x36')](_0x237fa6[_0x0fcf('0x33')][_0x0fcf('0x36')]));_0x44eb03[_0x0fcf('0x37')]=_0x44eb03['attributes'][_0x0fcf('0x38')]?_0x44eb03[_0x0fcf('0x37')]:_0x1f322b[_0x0fcf('0x30')];if(_0x237fa6['query']['includeAll']){_0x44eb03[_0x0fcf('0x41')]=[{'all':!![]}];}_0x44eb03=_[_0x0fcf('0x44')]({},_0x44eb03,_0x237fa6[_0x0fcf('0x45')]);return db[_0x0fcf('0x2b')]['find'](_0x44eb03)['then'](handleEntityNotFound(_0xfc2f2b,null))[_0x0fcf('0x24')](respondWithResult(_0xfc2f2b,null))[_0x0fcf('0x42')](handleError(_0xfc2f2b,null));};exports[_0x0fcf('0x46')]=function(_0x1fb83d,_0x345188){return db[_0x0fcf('0x2b')][_0x0fcf('0x46')](_0x1fb83d[_0x0fcf('0x47')],{})['then'](respondWithResult(_0x345188,0xc9))['catch'](handleError(_0x345188,null));};exports[_0x0fcf('0x23')]=function(_0x243699,_0x28d2f4){if(_0x243699[_0x0fcf('0x47')]['id']){delete _0x243699[_0x0fcf('0x47')]['id'];}return db[_0x0fcf('0x2b')]['find']({'where':{'id':_0x243699[_0x0fcf('0x43')]['id']}})[_0x0fcf('0x24')](handleEntityNotFound(_0x28d2f4,null))['then'](saveUpdates(_0x243699[_0x0fcf('0x47')],null))[_0x0fcf('0x24')](respondWithResult(_0x28d2f4,null))[_0x0fcf('0x42')](handleError(_0x28d2f4,null));};exports[_0x0fcf('0x25')]=function(_0x5435c0,_0xc514bf){return db[_0x0fcf('0x2b')][_0x0fcf('0x48')]({'where':{'id':_0x5435c0[_0x0fcf('0x43')]['id']}})[_0x0fcf('0x24')](handleEntityNotFound(_0xc514bf,null))[_0x0fcf('0x24')](removeEntity(_0xc514bf,null))[_0x0fcf('0x42')](handleError(_0xc514bf,null));};exports[_0x0fcf('0x49')]=function(_0x389d71,_0x3a473c){return db[_0x0fcf('0x2b')][_0x0fcf('0x49')]()[_0x0fcf('0x24')](respondWithResult(_0x3a473c,null))[_0x0fcf('0x42')](handleError(_0x3a473c,null));};
\ No newline at end of file
+var _0x781d=['sendStatus','status','end','offset','undefined','limit','count','Content-Range','json','apply','reject','update','destroy','then','error','name','send','index','map','UserProfileResource','fieldName','type','key','query','keys','intersection','model','attributes','fields','length','nolimit','order','where','filters','filter','merge','VIRTUAL','includeAll','catch','show','params','rawAttributes','options','body','find','describe','eml-format','rimraf','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb'];(function(_0x2aec52,_0x59d962){var _0x3b8835=function(_0x3e2604){while(--_0x3e2604){_0x2aec52['push'](_0x2aec52['shift']());}};_0x3b8835(++_0x59d962);}(_0x781d,0x14a));var _0xd781=function(_0x618414,_0x1a7a60){_0x618414=_0x618414-0x0;var _0x21c19a=_0x781d[_0x618414];return _0x21c19a;};'use strict';var emlformat=require(_0xd781('0x0'));var rimraf=require(_0xd781('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xd781('0x2'));var moment=require(_0xd781('0x3'));var BPromise=require(_0xd781('0x4'));var Mustache=require(_0xd781('0x5'));var util=require(_0xd781('0x6'));var path=require(_0xd781('0x7'));var sox=require(_0xd781('0x8'));var csv=require(_0xd781('0x9'));var ejs=require(_0xd781('0xa'));var fs=require('fs');var fs_extra=require(_0xd781('0xb'));var _=require('lodash');var squel=require(_0xd781('0xc'));var crypto=require(_0xd781('0xd'));var jsforce=require(_0xd781('0xe'));var deskjs=require(_0xd781('0xf'));var toCsv=require('to-csv');var querystring=require(_0xd781('0x10'));var Papa=require('papaparse');var Redis=require(_0xd781('0x11'));var authService=require(_0xd781('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xd781('0x13'));var hardwareService=require(_0xd781('0x14'));var logger=require('../../config/logger')('api');var utils=require(_0xd781('0x15'));var config=require(_0xd781('0x16'));var licenseUtil=require(_0xd781('0x17'));var db=require(_0xd781('0x18'))['db'];function respondWithStatusCode(_0xbea78b,_0x1f2f1e){_0x1f2f1e=_0x1f2f1e||0xcc;return function(_0xc7758f){if(_0xc7758f){return _0xbea78b[_0xd781('0x19')](_0x1f2f1e);}return _0xbea78b[_0xd781('0x1a')](_0x1f2f1e)[_0xd781('0x1b')]();};}function respondWithResult(_0xd454e7,_0x587953){_0x587953=_0x587953||0xc8;return function(_0x477bdc){if(_0x477bdc){return _0xd454e7[_0xd781('0x1a')](_0x587953)['json'](_0x477bdc);}};}function respondWithFilteredResult(_0x3a1f48,_0x48bffc){return function(_0x294e5a){if(_0x294e5a){var _0x22d787=typeof _0x48bffc[_0xd781('0x1c')]===_0xd781('0x1d')&&typeof _0x48bffc[_0xd781('0x1e')]===_0xd781('0x1d');var _0x501b0d=_0x294e5a['count'];var _0x1407fc=_0x22d787?0x0:_0x48bffc[_0xd781('0x1c')];var _0x395d9c=_0x22d787?_0x294e5a[_0xd781('0x1f')]:_0x48bffc[_0xd781('0x1c')]+_0x48bffc[_0xd781('0x1e')];var _0x260aa8;if(_0x395d9c>=_0x501b0d){_0x395d9c=_0x501b0d;_0x260aa8=0xc8;}else{_0x260aa8=0xce;}_0x3a1f48[_0xd781('0x1a')](_0x260aa8);return _0x3a1f48['set'](_0xd781('0x20'),_0x1407fc+'-'+_0x395d9c+'/'+_0x501b0d)[_0xd781('0x21')](_0x294e5a);}return null;};}function patchUpdates(_0x1036d3){return function(_0x103758){try{jsonpatch[_0xd781('0x22')](_0x103758,_0x1036d3,!![]);}catch(_0x274665){return BPromise[_0xd781('0x23')](_0x274665);}return _0x103758['save']();};}function saveUpdates(_0xe0c65f,_0x4e2c56){return function(_0x567fdf){if(_0x567fdf){return _0x567fdf[_0xd781('0x24')](_0xe0c65f)['then'](function(_0x175ba6){return _0x175ba6;});}return null;};}function removeEntity(_0x101480,_0x395087){return function(_0x31bf57){if(_0x31bf57){return _0x31bf57[_0xd781('0x25')]()[_0xd781('0x26')](function(){_0x101480[_0xd781('0x1a')](0xcc)[_0xd781('0x1b')]();});}};}function handleEntityNotFound(_0x10940b,_0x5662db){return function(_0x529ca1){if(!_0x529ca1){_0x10940b[_0xd781('0x19')](0x194);}return _0x529ca1;};}function handleError(_0x849587,_0xdad0b1){_0xdad0b1=_0xdad0b1||0x1f4;return function(_0x57b41e){logger[_0xd781('0x27')](_0x57b41e['stack']);if(_0x57b41e['name']){delete _0x57b41e[_0xd781('0x28')];}_0x849587['status'](_0xdad0b1)[_0xd781('0x29')](_0x57b41e);};}exports[_0xd781('0x2a')]=function(_0x5c3848,_0x5b6b9d){var _0x43cc74={},_0x5b0464={},_0x296a0b={'count':0x0,'rows':[]};var _0x4a3bd3=_[_0xd781('0x2b')](db[_0xd781('0x2c')]['rawAttributes'],function(_0x54521e){return{'name':_0x54521e[_0xd781('0x2d')],'type':_0x54521e[_0xd781('0x2e')][_0xd781('0x2f')]};});_0x5b0464['model']=_['map'](_0x4a3bd3,_0xd781('0x28'));_0x5b0464[_0xd781('0x30')]=_[_0xd781('0x31')](_0x5c3848['query']);_0x5b0464['filters']=_[_0xd781('0x32')](_0x5b0464[_0xd781('0x33')],_0x5b0464['query']);_0x43cc74[_0xd781('0x34')]=_[_0xd781('0x32')](_0x5b0464['model'],qs[_0xd781('0x35')](_0x5c3848[_0xd781('0x30')][_0xd781('0x35')]));_0x43cc74[_0xd781('0x34')]=_0x43cc74['attributes'][_0xd781('0x36')]?_0x43cc74[_0xd781('0x34')]:_0x5b0464[_0xd781('0x33')];if(!_0x5c3848[_0xd781('0x30')]['hasOwnProperty'](_0xd781('0x37'))){_0x43cc74[_0xd781('0x1e')]=qs['limit'](_0x5c3848[_0xd781('0x30')]['limit']);_0x43cc74[_0xd781('0x1c')]=qs[_0xd781('0x1c')](_0x5c3848['query'][_0xd781('0x1c')]);}_0x43cc74[_0xd781('0x38')]=qs['sort'](_0x5c3848[_0xd781('0x30')]['sort']);_0x43cc74[_0xd781('0x39')]=qs[_0xd781('0x3a')](_['pick'](_0x5c3848[_0xd781('0x30')],_0x5b0464[_0xd781('0x3a')]),_0x4a3bd3);if(_0x5c3848['query'][_0xd781('0x3b')]){_0x43cc74[_0xd781('0x39')]=_[_0xd781('0x3c')](_0x43cc74['where'],{'$or':_[_0xd781('0x2b')](_0x4a3bd3,function(_0x22b94e){if(_0x22b94e[_0xd781('0x2e')]!==_0xd781('0x3d')){var _0x2e8218={};_0x2e8218[_0x22b94e[_0xd781('0x28')]]={'$like':'%'+_0x5c3848[_0xd781('0x30')][_0xd781('0x3b')]+'%'};return _0x2e8218;}})});}_0x43cc74=_[_0xd781('0x3c')]({},_0x43cc74,_0x5c3848['options']);var _0x2a60d6={'where':_0x43cc74['where']};return db[_0xd781('0x2c')][_0xd781('0x1f')](_0x2a60d6)['then'](function(_0x1a5833){_0x296a0b[_0xd781('0x1f')]=_0x1a5833;if(_0x5c3848[_0xd781('0x30')][_0xd781('0x3e')]){_0x43cc74['include']=[{'all':!![]}];}return db[_0xd781('0x2c')]['findAll'](_0x43cc74);})[_0xd781('0x26')](function(_0xcdaacf){_0x296a0b['rows']=_0xcdaacf;return _0x296a0b;})['then'](respondWithFilteredResult(_0x5b6b9d,_0x43cc74))[_0xd781('0x3f')](handleError(_0x5b6b9d,null));};exports[_0xd781('0x40')]=function(_0x15b49d,_0x23bbab){var _0x53aba6={'raw':![],'where':{'id':_0x15b49d[_0xd781('0x41')]['id']}},_0x46e7f6={};_0x46e7f6['model']=_['keys'](db[_0xd781('0x2c')][_0xd781('0x42')]);_0x46e7f6[_0xd781('0x30')]=_['keys'](_0x15b49d['query']);_0x46e7f6[_0xd781('0x3a')]=_[_0xd781('0x32')](_0x46e7f6[_0xd781('0x33')],_0x46e7f6[_0xd781('0x30')]);_0x53aba6[_0xd781('0x34')]=_[_0xd781('0x32')](_0x46e7f6['model'],qs['fields'](_0x15b49d[_0xd781('0x30')][_0xd781('0x35')]));_0x53aba6[_0xd781('0x34')]=_0x53aba6[_0xd781('0x34')][_0xd781('0x36')]?_0x53aba6['attributes']:_0x46e7f6[_0xd781('0x33')];if(_0x15b49d[_0xd781('0x30')][_0xd781('0x3e')]){_0x53aba6['include']=[{'all':!![]}];}_0x53aba6=_[_0xd781('0x3c')]({},_0x53aba6,_0x15b49d[_0xd781('0x43')]);return db[_0xd781('0x2c')]['find'](_0x53aba6)[_0xd781('0x26')](handleEntityNotFound(_0x23bbab,null))[_0xd781('0x26')](respondWithResult(_0x23bbab,null))['catch'](handleError(_0x23bbab,null));};exports['create']=function(_0x13a907,_0x16d16e){return db[_0xd781('0x2c')]['create'](_0x13a907[_0xd781('0x44')],{})[_0xd781('0x26')](respondWithResult(_0x16d16e,0xc9))[_0xd781('0x3f')](handleError(_0x16d16e,null));};exports[_0xd781('0x24')]=function(_0x336d30,_0x3828ad){if(_0x336d30[_0xd781('0x44')]['id']){delete _0x336d30['body']['id'];}return db[_0xd781('0x2c')][_0xd781('0x45')]({'where':{'id':_0x336d30[_0xd781('0x41')]['id']}})['then'](handleEntityNotFound(_0x3828ad,null))[_0xd781('0x26')](saveUpdates(_0x336d30[_0xd781('0x44')],null))['then'](respondWithResult(_0x3828ad,null))[_0xd781('0x3f')](handleError(_0x3828ad,null));};exports[_0xd781('0x25')]=function(_0x41caac,_0x207546){return db[_0xd781('0x2c')]['find']({'where':{'id':_0x41caac[_0xd781('0x41')]['id']}})['then'](handleEntityNotFound(_0x207546,null))[_0xd781('0x26')](removeEntity(_0x207546,null))['catch'](handleError(_0x207546,null));};exports[_0xd781('0x46')]=function(_0x17a46e,_0x4f9e37){return db[_0xd781('0x2c')]['describe']()['then'](respondWithResult(_0x4f9e37,null))['catch'](handleError(_0x4f9e37,null));};
\ No newline at end of file
index 4bf9fea..3ee7af4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9225=['./userProfileResource.attributes','exports','define','UserProfileResource','user_profile_has_resources','compositeIndex','lodash','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment'];(function(_0x24cdd5,_0x4232a0){var _0x52a09e=function(_0x2599f4){while(--_0x2599f4){_0x24cdd5['push'](_0x24cdd5['shift']());}};_0x52a09e(++_0x4232a0);}(_0x9225,0x76));var _0x5922=function(_0x1e4360,_0x930b9b){_0x1e4360=_0x1e4360-0x0;var _0x31e6b4=_0x9225[_0x1e4360];return _0x31e6b4;};'use strict';var _=require(_0x5922('0x0'));var util=require('util');var logger=require(_0x5922('0x1'))(_0x5922('0x2'));var moment=require(_0x5922('0x3'));var BPromise=require(_0x5922('0x4'));var rp=require(_0x5922('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x5922('0x6'));var config=require(_0x5922('0x7'));var attributes=require(_0x5922('0x8'));module[_0x5922('0x9')]=function(_0x26fb36,_0x2b3db6){return _0x26fb36[_0x5922('0xa')](_0x5922('0xb'),attributes,{'tableName':_0x5922('0xc'),'paranoid':![],'indexes':[{'name':_0x5922('0xd'),'fields':['resourceId','sectionId']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x20a4=['./userProfileResource.attributes','exports','define','UserProfileResource','user_profile_has_resources','compositeIndex','sectionId','lodash','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x458b09,_0x4f8056){var _0x4e7335=function(_0x5ca1db){while(--_0x5ca1db){_0x458b09['push'](_0x458b09['shift']());}};_0x4e7335(++_0x4f8056);}(_0x20a4,0x13b));var _0x420a=function(_0x3fdc4c,_0x42ec50){_0x3fdc4c=_0x3fdc4c-0x0;var _0x206e98=_0x20a4[_0x3fdc4c];return _0x206e98;};'use strict';var _=require(_0x420a('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0x420a('0x1'));var BPromise=require(_0x420a('0x2'));var rp=require(_0x420a('0x3'));var fs=require('fs');var path=require(_0x420a('0x4'));var rimraf=require(_0x420a('0x5'));var config=require(_0x420a('0x6'));var attributes=require(_0x420a('0x7'));module[_0x420a('0x8')]=function(_0x2b6e4b,_0x154baf){return _0x2b6e4b[_0x420a('0x9')](_0x420a('0xa'),attributes,{'tableName':_0x420a('0xb'),'paranoid':![],'indexes':[{'name':_0x420a('0xc'),'fields':['resourceId',_0x420a('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index e7fdce0..00d5cd7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcac6=['lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','then','info','request\x20sent','debug','stringify','error','message','UserProfileResource,\x20%s,\x20%s','result','catch'];(function(_0x5acdaa,_0x482c7a){var _0x203e32=function(_0x7ac7f7){while(--_0x7ac7f7){_0x5acdaa['push'](_0x5acdaa['shift']());}};_0x203e32(++_0x482c7a);}(_0xcac6,0xd2));var _0x6cac=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xcac6[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x6cac('0x0'));var util=require('util');var moment=require(_0x6cac('0x1'));var BPromise=require(_0x6cac('0x2'));var rs=require(_0x6cac('0x3'));var fs=require('fs');var Redis=require(_0x6cac('0x4'));var db=require(_0x6cac('0x5'))['db'];var utils=require(_0x6cac('0x6'));var logger=require('../../config/logger')(_0x6cac('0x7'));var config=require('../../config/environment');var jayson=require(_0x6cac('0x8'));var client=jayson[_0x6cac('0x9')][_0x6cac('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3bdacd,_0x4d9e30,_0x8d459b){return new BPromise(function(_0x133052,_0x2970e2){return client['request'](_0x3bdacd,_0x8d459b)[_0x6cac('0xb')](function(_0x17a562){logger[_0x6cac('0xc')]('UserProfileResource,\x20%s,\x20%s',_0x4d9e30,_0x6cac('0xd'));logger[_0x6cac('0xe')]('UserProfileResource,\x20%s,\x20%s,\x20%s',_0x4d9e30,_0x6cac('0xd'),JSON[_0x6cac('0xf')](_0x17a562));if(_0x17a562[_0x6cac('0x10')]){if(_0x17a562[_0x6cac('0x10')]['code']===0x1f4){logger[_0x6cac('0x10')]('UserProfileResource,\x20%s,\x20%s',_0x4d9e30,_0x17a562[_0x6cac('0x10')][_0x6cac('0x11')]);return _0x2970e2(_0x17a562[_0x6cac('0x10')][_0x6cac('0x11')]);}logger[_0x6cac('0x10')](_0x6cac('0x12'),_0x4d9e30,_0x17a562[_0x6cac('0x10')][_0x6cac('0x11')]);return _0x133052(_0x17a562[_0x6cac('0x10')][_0x6cac('0x11')]);}else{logger[_0x6cac('0xc')](_0x6cac('0x12'),_0x4d9e30,_0x6cac('0xd'));_0x133052(_0x17a562[_0x6cac('0x13')][_0x6cac('0x11')]);}})[_0x6cac('0x14')](function(_0xe0913d){logger[_0x6cac('0x10')](_0x6cac('0x12'),_0x4d9e30,_0xe0913d);_0x2970e2(_0xe0913d);});});}
\ No newline at end of file
+var _0xe929=['UserProfileResource,\x20%s,\x20%s','request\x20sent','UserProfileResource,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','catch','lodash','util','moment','bluebird','ioredis','../../config/environment','jayson/promise','http','request','then'];(function(_0x5ea124,_0x4ffb4c){var _0x532421=function(_0x174eba){while(--_0x174eba){_0x5ea124['push'](_0x5ea124['shift']());}};_0x532421(++_0x4ffb4c);}(_0xe929,0x15f));var _0x9e92=function(_0x2cd1fb,_0x291f55){_0x2cd1fb=_0x2cd1fb-0x0;var _0x48fd2b=_0xe929[_0x2cd1fb];return _0x48fd2b;};'use strict';var _=require(_0x9e92('0x0'));var util=require(_0x9e92('0x1'));var moment=require(_0x9e92('0x2'));var BPromise=require(_0x9e92('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9e92('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x9e92('0x5'));var jayson=require(_0x9e92('0x6'));var client=jayson['client'][_0x9e92('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x4838d3,_0x4956c1,_0x34941d){return new BPromise(function(_0x1663b5,_0x1dd784){return client[_0x9e92('0x8')](_0x4838d3,_0x34941d)[_0x9e92('0x9')](function(_0x422f66){logger['info'](_0x9e92('0xa'),_0x4956c1,_0x9e92('0xb'));logger['debug'](_0x9e92('0xc'),_0x4956c1,'request\x20sent',JSON[_0x9e92('0xd')](_0x422f66));if(_0x422f66['error']){if(_0x422f66[_0x9e92('0xe')]['code']===0x1f4){logger[_0x9e92('0xe')](_0x9e92('0xa'),_0x4956c1,_0x422f66[_0x9e92('0xe')][_0x9e92('0xf')]);return _0x1dd784(_0x422f66[_0x9e92('0xe')]['message']);}logger[_0x9e92('0xe')](_0x9e92('0xa'),_0x4956c1,_0x422f66[_0x9e92('0xe')][_0x9e92('0xf')]);return _0x1663b5(_0x422f66[_0x9e92('0xe')][_0x9e92('0xf')]);}else{logger[_0x9e92('0x10')](_0x9e92('0xa'),_0x4956c1,_0x9e92('0xb'));_0x1663b5(_0x422f66[_0x9e92('0x11')][_0x9e92('0xf')]);}})[_0x9e92('0x12')](function(_0x1b25ca){logger['error'](_0x9e92('0xa'),_0x4956c1,_0x1b25ca);_0x1dd784(_0x1b25ca);});});}
\ No newline at end of file
index c65d40b..0d318d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb8ea=['../../components/auth/service','../../components/interaction/service','./userProfileSection.controller','index','get','/describe','isAuthenticated','/:id','show','post','create','put','update','destroy','exports','multer','util','path','connect-timeout','express','Router'];(function(_0x3792f0,_0x5b553a){var _0x17d322=function(_0x18a325){while(--_0x18a325){_0x3792f0['push'](_0x3792f0['shift']());}};_0x17d322(++_0x5b553a);}(_0xb8ea,0x135));var _0xab8e=function(_0x22db9f,_0x8efff4){_0x22db9f=_0x22db9f-0x0;var _0x31a26e=_0xb8ea[_0x22db9f];return _0x31a26e;};'use strict';var multer=require(_0xab8e('0x0'));var util=require(_0xab8e('0x1'));var path=require(_0xab8e('0x2'));var timeout=require(_0xab8e('0x3'));var express=require(_0xab8e('0x4'));var router=express[_0xab8e('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xab8e('0x6'));var interaction=require(_0xab8e('0x7'));var config=require('../../config/environment');var controller=require(_0xab8e('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0xab8e('0x9')]);router[_0xab8e('0xa')](_0xab8e('0xb'),auth[_0xab8e('0xc')](),controller['describe']);router[_0xab8e('0xa')](_0xab8e('0xd'),auth[_0xab8e('0xc')](),controller[_0xab8e('0xe')]);router[_0xab8e('0xf')]('/',auth[_0xab8e('0xc')](),controller[_0xab8e('0x10')]);router[_0xab8e('0x11')]('/:id',auth[_0xab8e('0xc')](),controller[_0xab8e('0x12')]);router['delete'](_0xab8e('0xd'),auth[_0xab8e('0xc')](),controller[_0xab8e('0x13')]);module[_0xab8e('0x14')]=router;
\ No newline at end of file
+var _0x0573=['isAuthenticated','describe','/:id','show','post','put','update','delete','destroy','exports','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','./userProfileSection.controller','get','index','/describe'];(function(_0x1f3131,_0x2f0bee){var _0x2adacf=function(_0x1ee998){while(--_0x1ee998){_0x1f3131['push'](_0x1f3131['shift']());}};_0x2adacf(++_0x2f0bee);}(_0x0573,0xfa));var _0x3057=function(_0x3ef36b,_0x248515){_0x3ef36b=_0x3ef36b-0x0;var _0x1a19e5=_0x0573[_0x3ef36b];return _0x1a19e5;};'use strict';var multer=require('multer');var util=require(_0x3057('0x0'));var path=require(_0x3057('0x1'));var timeout=require(_0x3057('0x2'));var express=require('express');var router=express[_0x3057('0x3')]();var fs_extra=require(_0x3057('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x3057('0x5'));var config=require('../../config/environment');var controller=require(_0x3057('0x6'));router[_0x3057('0x7')]('/',auth['isAuthenticated'](),controller[_0x3057('0x8')]);router[_0x3057('0x7')](_0x3057('0x9'),auth[_0x3057('0xa')](),controller[_0x3057('0xb')]);router[_0x3057('0x7')](_0x3057('0xc'),auth['isAuthenticated'](),controller[_0x3057('0xd')]);router[_0x3057('0xe')]('/',auth['isAuthenticated'](),controller['create']);router[_0x3057('0xf')]('/:id',auth['isAuthenticated'](),controller[_0x3057('0x10')]);router[_0x3057('0x11')](_0x3057('0xc'),auth[_0x3057('0xa')](),controller[_0x3057('0x12')]);module[_0x3057('0x13')]=router;
\ No newline at end of file
index 4ba23b9..c99cb1b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x757a=['BOOLEAN','setDataValue','crudPermissions','join','getDataValue','split','exports','STRING'];(function(_0x250d2a,_0x2983be){var _0x5738fa=function(_0x3cbde0){while(--_0x3cbde0){_0x250d2a['push'](_0x250d2a['shift']());}};_0x5738fa(++_0x2983be);}(_0x757a,0xde));var _0xa757=function(_0x722e59,_0x587a77){_0x722e59=_0x722e59-0x0;var _0x30f294=_0x757a[_0x722e59];return _0x30f294;};'use strict';var Sequelize=require('sequelize');module[_0xa757('0x0')]={'name':{'type':Sequelize[_0xa757('0x1')],'allowNull':![]},'category':{'type':Sequelize['STRING'],'allowNull':![]},'sectionId':{'type':Sequelize['INTEGER'],'allowNull':![]},'enabled':{'type':Sequelize['BOOLEAN'],'defaultValue':null},'autoAssociation':{'type':Sequelize[_0xa757('0x2')],'defaultValue':null},'crudPermissions':{'type':Sequelize[_0xa757('0x1')],'set':function(_0x1c2932){this[_0xa757('0x3')](_0xa757('0x4'),_0x1c2932?_0x1c2932[_0xa757('0x5')](''):[]);},'get':function(){return this['getDataValue'](_0xa757('0x4'))?this[_0xa757('0x6')]('crudPermissions')[_0xa757('0x7')](''):[];}}};
\ No newline at end of file
+var _0xb688=['STRING','INTEGER','BOOLEAN','setDataValue','crudPermissions','join','split','exports'];(function(_0x4cbdb8,_0x1ee5f4){var _0x5ed320=function(_0x54386d){while(--_0x54386d){_0x4cbdb8['push'](_0x4cbdb8['shift']());}};_0x5ed320(++_0x1ee5f4);}(_0xb688,0xcf));var _0x8b68=function(_0x1c5e50,_0x2254e1){_0x1c5e50=_0x1c5e50-0x0;var _0x1a5364=_0xb688[_0x1c5e50];return _0x1a5364;};'use strict';var Sequelize=require('sequelize');module[_0x8b68('0x0')]={'name':{'type':Sequelize[_0x8b68('0x1')],'allowNull':![]},'category':{'type':Sequelize[_0x8b68('0x1')],'allowNull':![]},'sectionId':{'type':Sequelize[_0x8b68('0x2')],'allowNull':![]},'enabled':{'type':Sequelize[_0x8b68('0x3')],'defaultValue':null},'autoAssociation':{'type':Sequelize[_0x8b68('0x3')],'defaultValue':null},'crudPermissions':{'type':Sequelize['STRING'],'set':function(_0x41030e){this[_0x8b68('0x4')](_0x8b68('0x5'),_0x41030e?_0x41030e[_0x8b68('0x6')](''):[]);},'get':function(){return this['getDataValue'](_0x8b68('0x5'))?this['getDataValue'](_0x8b68('0x5'))[_0x8b68('0x7')](''):[];}}};
\ No newline at end of file
index 14ea13f..4c78bab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x047a=['body','destroy','describe','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','to-csv','ejs','fs-extra','squel','crypto','desk.js','querystring','../../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','count','set','Content-Range','json','reject','save','update','then','end','stack','name','map','UserProfileSection','rawAttributes','fieldName','key','model','query','intersection','fields','attributes','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','filters','filter','type','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','keys','find','create'];(function(_0x28aea5,_0x3bb12e){var _0x6a55f9=function(_0xf6ece8){while(--_0xf6ece8){_0x28aea5['push'](_0x28aea5['shift']());}};_0x6a55f9(++_0x3bb12e);}(_0x047a,0x133));var _0xa047=function(_0xe16fcf,_0x2b5918){_0xe16fcf=_0xe16fcf-0x0;var _0x5981e9=_0x047a[_0xe16fcf];return _0x5981e9;};'use strict';var emlformat=require(_0xa047('0x0'));var rimraf=require(_0xa047('0x1'));var zipdir=require(_0xa047('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xa047('0x3'));var moment=require('moment');var BPromise=require(_0xa047('0x4'));var Mustache=require(_0xa047('0x5'));var util=require(_0xa047('0x6'));var path=require(_0xa047('0x7'));var sox=require('sox');var csv=require(_0xa047('0x8'));var ejs=require(_0xa047('0x9'));var fs=require('fs');var fs_extra=require(_0xa047('0xa'));var _=require('lodash');var squel=require(_0xa047('0xb'));var crypto=require(_0xa047('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xa047('0xd'));var toCsv=require(_0xa047('0x8'));var querystring=require(_0xa047('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xa047('0xf'));var qs=require(_0xa047('0x10'));var as=require(_0xa047('0x11'));var hardwareService=require(_0xa047('0x12'));var logger=require(_0xa047('0x13'))(_0xa047('0x14'));var utils=require('../../config/utils');var config=require(_0xa047('0x15'));var licenseUtil=require(_0xa047('0x16'));var db=require(_0xa047('0x17'))['db'];function respondWithStatusCode(_0x21f424,_0x213679){_0x213679=_0x213679||0xcc;return function(_0x477108){if(_0x477108){return _0x21f424[_0xa047('0x18')](_0x213679);}return _0x21f424[_0xa047('0x19')](_0x213679)['end']();};}function respondWithResult(_0x1adc7f,_0x16ba17){_0x16ba17=_0x16ba17||0xc8;return function(_0x189897){if(_0x189897){return _0x1adc7f[_0xa047('0x19')](_0x16ba17)['json'](_0x189897);}};}function respondWithFilteredResult(_0x2e8dd3,_0xde9ab0){return function(_0x5d26e1){if(_0x5d26e1){var _0x5be16c=typeof _0xde9ab0[_0xa047('0x1a')]===_0xa047('0x1b')&&typeof _0xde9ab0['limit']===_0xa047('0x1b');var _0x3bd2df=_0x5d26e1['count'];var _0xb8fe4f=_0x5be16c?0x0:_0xde9ab0['offset'];var _0x34b3fc=_0x5be16c?_0x5d26e1[_0xa047('0x1c')]:_0xde9ab0[_0xa047('0x1a')]+_0xde9ab0['limit'];var _0x304f4b;if(_0x34b3fc>=_0x3bd2df){_0x34b3fc=_0x3bd2df;_0x304f4b=0xc8;}else{_0x304f4b=0xce;}_0x2e8dd3[_0xa047('0x19')](_0x304f4b);return _0x2e8dd3[_0xa047('0x1d')](_0xa047('0x1e'),_0xb8fe4f+'-'+_0x34b3fc+'/'+_0x3bd2df)[_0xa047('0x1f')](_0x5d26e1);}return null;};}function patchUpdates(_0x5d87e6){return function(_0x487b9c){try{jsonpatch['apply'](_0x487b9c,_0x5d87e6,!![]);}catch(_0x53a798){return BPromise[_0xa047('0x20')](_0x53a798);}return _0x487b9c[_0xa047('0x21')]();};}function saveUpdates(_0x625311,_0x181148){return function(_0x412451){if(_0x412451){return _0x412451[_0xa047('0x22')](_0x625311)[_0xa047('0x23')](function(_0x4743ba){return _0x4743ba;});}return null;};}function removeEntity(_0x209407,_0xc969ac){return function(_0xae5cd4){if(_0xae5cd4){return _0xae5cd4['destroy']()[_0xa047('0x23')](function(){_0x209407[_0xa047('0x19')](0xcc)[_0xa047('0x24')]();});}};}function handleEntityNotFound(_0x5dd4a8,_0x2cdab6){return function(_0x52bb54){if(!_0x52bb54){_0x5dd4a8[_0xa047('0x18')](0x194);}return _0x52bb54;};}function handleError(_0x4748c9,_0x5cfe53){_0x5cfe53=_0x5cfe53||0x1f4;return function(_0x340433){logger['error'](_0x340433[_0xa047('0x25')]);if(_0x340433[_0xa047('0x26')]){delete _0x340433['name'];}_0x4748c9[_0xa047('0x19')](_0x5cfe53)['send'](_0x340433);};}exports['index']=function(_0x280821,_0x1f6ddb){var _0x49ae5d={},_0x129549={},_0x1ae675={'count':0x0,'rows':[]};var _0x32ad00=_[_0xa047('0x27')](db[_0xa047('0x28')][_0xa047('0x29')],function(_0x193254){return{'name':_0x193254[_0xa047('0x2a')],'type':_0x193254['type'][_0xa047('0x2b')]};});_0x129549[_0xa047('0x2c')]=_[_0xa047('0x27')](_0x32ad00,'name');_0x129549[_0xa047('0x2d')]=_['keys'](_0x280821[_0xa047('0x2d')]);_0x129549['filters']=_[_0xa047('0x2e')](_0x129549[_0xa047('0x2c')],_0x129549[_0xa047('0x2d')]);_0x49ae5d['attributes']=_['intersection'](_0x129549[_0xa047('0x2c')],qs['fields'](_0x280821[_0xa047('0x2d')][_0xa047('0x2f')]));_0x49ae5d[_0xa047('0x30')]=_0x49ae5d[_0xa047('0x30')][_0xa047('0x31')]?_0x49ae5d[_0xa047('0x30')]:_0x129549[_0xa047('0x2c')];if(!_0x280821['query'][_0xa047('0x32')](_0xa047('0x33'))){_0x49ae5d[_0xa047('0x34')]=qs[_0xa047('0x34')](_0x280821[_0xa047('0x2d')][_0xa047('0x34')]);_0x49ae5d[_0xa047('0x1a')]=qs[_0xa047('0x1a')](_0x280821[_0xa047('0x2d')]['offset']);}_0x49ae5d[_0xa047('0x35')]=qs[_0xa047('0x36')](_0x280821[_0xa047('0x2d')]['sort']);_0x49ae5d[_0xa047('0x37')]=qs['filters'](_[_0xa047('0x38')](_0x280821['query'],_0x129549[_0xa047('0x39')]),_0x32ad00);if(_0x280821[_0xa047('0x2d')][_0xa047('0x3a')]){_0x49ae5d['where']=_['merge'](_0x49ae5d[_0xa047('0x37')],{'$or':_[_0xa047('0x27')](_0x32ad00,function(_0x23cfe6){if(_0x23cfe6[_0xa047('0x3b')]!==_0xa047('0x3c')){var _0x2ef602={};_0x2ef602[_0x23cfe6['name']]={'$like':'%'+_0x280821['query'][_0xa047('0x3a')]+'%'};return _0x2ef602;}})});}_0x49ae5d=_[_0xa047('0x3d')]({},_0x49ae5d,_0x280821[_0xa047('0x3e')]);var _0x4bacdf={'where':_0x49ae5d[_0xa047('0x37')]};return db['UserProfileSection']['count'](_0x4bacdf)[_0xa047('0x23')](function(_0x2229ae){_0x1ae675[_0xa047('0x1c')]=_0x2229ae;if(_0x280821[_0xa047('0x2d')][_0xa047('0x3f')]){_0x49ae5d[_0xa047('0x40')]=[{'all':!![]}];}return db[_0xa047('0x28')][_0xa047('0x41')](_0x49ae5d);})[_0xa047('0x23')](function(_0xbefe9d){_0x1ae675[_0xa047('0x42')]=_0xbefe9d;return _0x1ae675;})[_0xa047('0x23')](respondWithFilteredResult(_0x1f6ddb,_0x49ae5d))[_0xa047('0x43')](handleError(_0x1f6ddb,null));};exports[_0xa047('0x44')]=function(_0x2434b0,_0x40842b){var _0x4f15d0={'raw':![],'where':{'id':_0x2434b0[_0xa047('0x45')]['id']}},_0x4b4e95={};_0x4b4e95[_0xa047('0x2c')]=_[_0xa047('0x46')](db['UserProfileSection'][_0xa047('0x29')]);_0x4b4e95[_0xa047('0x2d')]=_[_0xa047('0x46')](_0x2434b0[_0xa047('0x2d')]);_0x4b4e95[_0xa047('0x39')]=_[_0xa047('0x2e')](_0x4b4e95['model'],_0x4b4e95['query']);_0x4f15d0[_0xa047('0x30')]=_[_0xa047('0x2e')](_0x4b4e95[_0xa047('0x2c')],qs['fields'](_0x2434b0[_0xa047('0x2d')][_0xa047('0x2f')]));_0x4f15d0['attributes']=_0x4f15d0['attributes']['length']?_0x4f15d0[_0xa047('0x30')]:_0x4b4e95[_0xa047('0x2c')];if(_0x2434b0[_0xa047('0x2d')][_0xa047('0x3f')]){_0x4f15d0[_0xa047('0x40')]=[{'all':!![]}];}_0x4f15d0=_[_0xa047('0x3d')]({},_0x4f15d0,_0x2434b0[_0xa047('0x3e')]);return db[_0xa047('0x28')][_0xa047('0x47')](_0x4f15d0)[_0xa047('0x23')](handleEntityNotFound(_0x40842b,null))['then'](respondWithResult(_0x40842b,null))[_0xa047('0x43')](handleError(_0x40842b,null));};exports[_0xa047('0x48')]=function(_0x2859cc,_0x354383){return db[_0xa047('0x28')][_0xa047('0x48')](_0x2859cc['body'],{})[_0xa047('0x23')](respondWithResult(_0x354383,0xc9))[_0xa047('0x43')](handleError(_0x354383,null));};exports['update']=function(_0x3598cb,_0x4a6f1f){if(_0x3598cb[_0xa047('0x49')]['id']){delete _0x3598cb[_0xa047('0x49')]['id'];}return db[_0xa047('0x28')][_0xa047('0x47')]({'where':{'id':_0x3598cb[_0xa047('0x45')]['id']}})[_0xa047('0x23')](handleEntityNotFound(_0x4a6f1f,null))[_0xa047('0x23')](saveUpdates(_0x3598cb[_0xa047('0x49')],null))['then'](respondWithResult(_0x4a6f1f,null))[_0xa047('0x43')](handleError(_0x4a6f1f,null));};exports[_0xa047('0x4a')]=function(_0x30e01a,_0x1b078d){return db['UserProfileSection'][_0xa047('0x47')]({'where':{'id':_0x30e01a['params']['id']}})[_0xa047('0x23')](handleEntityNotFound(_0x1b078d,null))[_0xa047('0x23')](removeEntity(_0x1b078d,null))[_0xa047('0x43')](handleError(_0x1b078d,null));};exports[_0xa047('0x4b')]=function(_0x5c2f33,_0xd814ed){return db[_0xa047('0x28')][_0xa047('0x4b')]()['then'](respondWithResult(_0xd814ed,null))[_0xa047('0x43')](handleError(_0xd814ed,null));};
\ No newline at end of file
+var _0x2b82=['ejs','fs-extra','lodash','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','then','sendStatus','error','stack','name','send','index','rawAttributes','fieldName','key','model','map','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','where','filters','pick','merge','VIRTUAL','filter','options','UserProfileSection','includeAll','include','findAll','rows','catch','show','params','find','create','body','describe','eml-format','rimraf','bluebird','mustache','util','path','sox','to-csv'];(function(_0xaf5b01,_0x28f990){var _0x16bc29=function(_0x553751){while(--_0x553751){_0xaf5b01['push'](_0xaf5b01['shift']());}};_0x16bc29(++_0x28f990);}(_0x2b82,0x92));var _0x22b8=function(_0x479d32,_0x433dc6){_0x479d32=_0x479d32-0x0;var _0x2cc6f7=_0x2b82[_0x479d32];return _0x2cc6f7;};'use strict';var emlformat=require(_0x22b8('0x0'));var rimraf=require(_0x22b8('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x22b8('0x2'));var Mustache=require(_0x22b8('0x3'));var util=require(_0x22b8('0x4'));var path=require(_0x22b8('0x5'));var sox=require(_0x22b8('0x6'));var csv=require(_0x22b8('0x7'));var ejs=require(_0x22b8('0x8'));var fs=require('fs');var fs_extra=require(_0x22b8('0x9'));var _=require(_0x22b8('0xa'));var squel=require('squel');var crypto=require(_0x22b8('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x22b8('0xc'));var toCsv=require(_0x22b8('0x7'));var querystring=require(_0x22b8('0xd'));var Papa=require('papaparse');var Redis=require(_0x22b8('0xe'));var authService=require(_0x22b8('0xf'));var qs=require(_0x22b8('0x10'));var as=require(_0x22b8('0x11'));var hardwareService=require(_0x22b8('0x12'));var logger=require('../../config/logger')(_0x22b8('0x13'));var utils=require(_0x22b8('0x14'));var config=require(_0x22b8('0x15'));var licenseUtil=require(_0x22b8('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1ff8f8,_0x1ceace){_0x1ceace=_0x1ceace||0xcc;return function(_0x352871){if(_0x352871){return _0x1ff8f8['sendStatus'](_0x1ceace);}return _0x1ff8f8[_0x22b8('0x17')](_0x1ceace)[_0x22b8('0x18')]();};}function respondWithResult(_0x3cf36e,_0x36e22f){_0x36e22f=_0x36e22f||0xc8;return function(_0x4e634a){if(_0x4e634a){return _0x3cf36e[_0x22b8('0x17')](_0x36e22f)[_0x22b8('0x19')](_0x4e634a);}};}function respondWithFilteredResult(_0x20d47e,_0xc389cd){return function(_0x499289){if(_0x499289){var _0x4becf9=typeof _0xc389cd[_0x22b8('0x1a')]===_0x22b8('0x1b')&&typeof _0xc389cd[_0x22b8('0x1c')]===_0x22b8('0x1b');var _0x3d3886=_0x499289[_0x22b8('0x1d')];var _0x2280b9=_0x4becf9?0x0:_0xc389cd['offset'];var _0x1696ab=_0x4becf9?_0x499289[_0x22b8('0x1d')]:_0xc389cd[_0x22b8('0x1a')]+_0xc389cd[_0x22b8('0x1c')];var _0x1f44b5;if(_0x1696ab>=_0x3d3886){_0x1696ab=_0x3d3886;_0x1f44b5=0xc8;}else{_0x1f44b5=0xce;}_0x20d47e['status'](_0x1f44b5);return _0x20d47e[_0x22b8('0x1e')](_0x22b8('0x1f'),_0x2280b9+'-'+_0x1696ab+'/'+_0x3d3886)[_0x22b8('0x19')](_0x499289);}return null;};}function patchUpdates(_0x467c9f){return function(_0x209580){try{jsonpatch[_0x22b8('0x20')](_0x209580,_0x467c9f,!![]);}catch(_0x3cf62f){return BPromise[_0x22b8('0x21')](_0x3cf62f);}return _0x209580[_0x22b8('0x22')]();};}function saveUpdates(_0x2447f9,_0x507836){return function(_0x472778){if(_0x472778){return _0x472778[_0x22b8('0x23')](_0x2447f9)['then'](function(_0x5ea919){return _0x5ea919;});}return null;};}function removeEntity(_0x58d139,_0x3c3d17){return function(_0x46a8d2){if(_0x46a8d2){return _0x46a8d2[_0x22b8('0x24')]()[_0x22b8('0x25')](function(){_0x58d139['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x37cee6,_0x41bcfd){return function(_0x11e3f5){if(!_0x11e3f5){_0x37cee6[_0x22b8('0x26')](0x194);}return _0x11e3f5;};}function handleError(_0x191471,_0x252f2c){_0x252f2c=_0x252f2c||0x1f4;return function(_0x51cebf){logger[_0x22b8('0x27')](_0x51cebf[_0x22b8('0x28')]);if(_0x51cebf[_0x22b8('0x29')]){delete _0x51cebf[_0x22b8('0x29')];}_0x191471[_0x22b8('0x17')](_0x252f2c)[_0x22b8('0x2a')](_0x51cebf);};}exports[_0x22b8('0x2b')]=function(_0x415a36,_0x56c64d){var _0x1997a7={},_0x3d7721={},_0x3909a={'count':0x0,'rows':[]};var _0xab0aae=_['map'](db['UserProfileSection'][_0x22b8('0x2c')],function(_0x5d0560){return{'name':_0x5d0560[_0x22b8('0x2d')],'type':_0x5d0560['type'][_0x22b8('0x2e')]};});_0x3d7721[_0x22b8('0x2f')]=_[_0x22b8('0x30')](_0xab0aae,'name');_0x3d7721[_0x22b8('0x31')]=_[_0x22b8('0x32')](_0x415a36['query']);_0x3d7721['filters']=_[_0x22b8('0x33')](_0x3d7721[_0x22b8('0x2f')],_0x3d7721[_0x22b8('0x31')]);_0x1997a7[_0x22b8('0x34')]=_[_0x22b8('0x33')](_0x3d7721[_0x22b8('0x2f')],qs[_0x22b8('0x35')](_0x415a36[_0x22b8('0x31')][_0x22b8('0x35')]));_0x1997a7[_0x22b8('0x34')]=_0x1997a7[_0x22b8('0x34')][_0x22b8('0x36')]?_0x1997a7[_0x22b8('0x34')]:_0x3d7721['model'];if(!_0x415a36[_0x22b8('0x31')][_0x22b8('0x37')](_0x22b8('0x38'))){_0x1997a7[_0x22b8('0x1c')]=qs['limit'](_0x415a36[_0x22b8('0x31')][_0x22b8('0x1c')]);_0x1997a7[_0x22b8('0x1a')]=qs['offset'](_0x415a36[_0x22b8('0x31')][_0x22b8('0x1a')]);}_0x1997a7[_0x22b8('0x39')]=qs['sort'](_0x415a36[_0x22b8('0x31')]['sort']);_0x1997a7[_0x22b8('0x3a')]=qs[_0x22b8('0x3b')](_[_0x22b8('0x3c')](_0x415a36['query'],_0x3d7721[_0x22b8('0x3b')]),_0xab0aae);if(_0x415a36[_0x22b8('0x31')]['filter']){_0x1997a7[_0x22b8('0x3a')]=_[_0x22b8('0x3d')](_0x1997a7[_0x22b8('0x3a')],{'$or':_[_0x22b8('0x30')](_0xab0aae,function(_0xb877b1){if(_0xb877b1['type']!==_0x22b8('0x3e')){var _0x4f7f71={};_0x4f7f71[_0xb877b1[_0x22b8('0x29')]]={'$like':'%'+_0x415a36['query'][_0x22b8('0x3f')]+'%'};return _0x4f7f71;}})});}_0x1997a7=_[_0x22b8('0x3d')]({},_0x1997a7,_0x415a36[_0x22b8('0x40')]);var _0x3d66ca={'where':_0x1997a7[_0x22b8('0x3a')]};return db[_0x22b8('0x41')][_0x22b8('0x1d')](_0x3d66ca)[_0x22b8('0x25')](function(_0xd3aadc){_0x3909a[_0x22b8('0x1d')]=_0xd3aadc;if(_0x415a36[_0x22b8('0x31')][_0x22b8('0x42')]){_0x1997a7[_0x22b8('0x43')]=[{'all':!![]}];}return db[_0x22b8('0x41')][_0x22b8('0x44')](_0x1997a7);})[_0x22b8('0x25')](function(_0x2ebb51){_0x3909a[_0x22b8('0x45')]=_0x2ebb51;return _0x3909a;})[_0x22b8('0x25')](respondWithFilteredResult(_0x56c64d,_0x1997a7))[_0x22b8('0x46')](handleError(_0x56c64d,null));};exports[_0x22b8('0x47')]=function(_0x24be27,_0x319b3d){var _0x1aee69={'raw':![],'where':{'id':_0x24be27[_0x22b8('0x48')]['id']}},_0x57d5a5={};_0x57d5a5['model']=_[_0x22b8('0x32')](db['UserProfileSection']['rawAttributes']);_0x57d5a5[_0x22b8('0x31')]=_['keys'](_0x24be27['query']);_0x57d5a5[_0x22b8('0x3b')]=_[_0x22b8('0x33')](_0x57d5a5[_0x22b8('0x2f')],_0x57d5a5[_0x22b8('0x31')]);_0x1aee69[_0x22b8('0x34')]=_[_0x22b8('0x33')](_0x57d5a5[_0x22b8('0x2f')],qs['fields'](_0x24be27[_0x22b8('0x31')][_0x22b8('0x35')]));_0x1aee69[_0x22b8('0x34')]=_0x1aee69[_0x22b8('0x34')]['length']?_0x1aee69[_0x22b8('0x34')]:_0x57d5a5['model'];if(_0x24be27[_0x22b8('0x31')][_0x22b8('0x42')]){_0x1aee69[_0x22b8('0x43')]=[{'all':!![]}];}_0x1aee69=_[_0x22b8('0x3d')]({},_0x1aee69,_0x24be27['options']);return db['UserProfileSection'][_0x22b8('0x49')](_0x1aee69)[_0x22b8('0x25')](handleEntityNotFound(_0x319b3d,null))[_0x22b8('0x25')](respondWithResult(_0x319b3d,null))[_0x22b8('0x46')](handleError(_0x319b3d,null));};exports[_0x22b8('0x4a')]=function(_0x3db1fb,_0x457363){return db[_0x22b8('0x41')][_0x22b8('0x4a')](_0x3db1fb[_0x22b8('0x4b')],{})[_0x22b8('0x25')](respondWithResult(_0x457363,0xc9))['catch'](handleError(_0x457363,null));};exports[_0x22b8('0x23')]=function(_0x3dd307,_0x507cd3){if(_0x3dd307[_0x22b8('0x4b')]['id']){delete _0x3dd307[_0x22b8('0x4b')]['id'];}return db[_0x22b8('0x41')][_0x22b8('0x49')]({'where':{'id':_0x3dd307[_0x22b8('0x48')]['id']}})['then'](handleEntityNotFound(_0x507cd3,null))[_0x22b8('0x25')](saveUpdates(_0x3dd307[_0x22b8('0x4b')],null))[_0x22b8('0x25')](respondWithResult(_0x507cd3,null))[_0x22b8('0x46')](handleError(_0x507cd3,null));};exports[_0x22b8('0x24')]=function(_0x326b10,_0x104074){return db[_0x22b8('0x41')][_0x22b8('0x49')]({'where':{'id':_0x326b10['params']['id']}})[_0x22b8('0x25')](handleEntityNotFound(_0x104074,null))[_0x22b8('0x25')](removeEntity(_0x104074,null))[_0x22b8('0x46')](handleError(_0x104074,null));};exports[_0x22b8('0x4c')]=function(_0x57da19,_0x32537e){return db[_0x22b8('0x41')][_0x22b8('0x4c')]()[_0x22b8('0x25')](respondWithResult(_0x32537e,null))['catch'](handleError(_0x32537e,null));};
\ No newline at end of file
index 7a38720..7ae1ead 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec08=['rimraf','./userProfileSection.attributes','exports','user_profile_has_sections','compositeIndex','userProfileId','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x3ad27e,_0x4058f9){var _0x49ea6f=function(_0x37df09){while(--_0x37df09){_0x3ad27e['push'](_0x3ad27e['shift']());}};_0x49ea6f(++_0x4058f9);}(_0xec08,0x84));var _0x8ec0=function(_0x17b41e,_0x5e83a1){_0x17b41e=_0x17b41e-0x0;var _0x1c50b2=_0xec08[_0x17b41e];return _0x1c50b2;};'use strict';var _=require(_0x8ec0('0x0'));var util=require(_0x8ec0('0x1'));var logger=require(_0x8ec0('0x2'))(_0x8ec0('0x3'));var moment=require(_0x8ec0('0x4'));var BPromise=require(_0x8ec0('0x5'));var rp=require(_0x8ec0('0x6'));var fs=require('fs');var path=require(_0x8ec0('0x7'));var rimraf=require(_0x8ec0('0x8'));var config=require('../../config/environment');var attributes=require(_0x8ec0('0x9'));module[_0x8ec0('0xa')]=function(_0xdb9dea,_0xee97b5){return _0xdb9dea['define']('UserProfileSection',attributes,{'tableName':_0x8ec0('0xb'),'paranoid':![],'indexes':[{'name':_0x8ec0('0xc'),'fields':['sectionId',_0x8ec0('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xf4b4=['exports','define','UserProfileSection','user_profile_has_sections','sectionId','userProfileId','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment'];(function(_0x4fdc08,_0x41e5ab){var _0x406798=function(_0x58f93c){while(--_0x58f93c){_0x4fdc08['push'](_0x4fdc08['shift']());}};_0x406798(++_0x41e5ab);}(_0xf4b4,0x92));var _0x4f4b=function(_0x280bef,_0x5e1bd3){_0x280bef=_0x280bef-0x0;var _0x56dc85=_0xf4b4[_0x280bef];return _0x56dc85;};'use strict';var _=require('lodash');var util=require(_0x4f4b('0x0'));var logger=require(_0x4f4b('0x1'))(_0x4f4b('0x2'));var moment=require(_0x4f4b('0x3'));var BPromise=require(_0x4f4b('0x4'));var rp=require(_0x4f4b('0x5'));var fs=require('fs');var path=require(_0x4f4b('0x6'));var rimraf=require('rimraf');var config=require(_0x4f4b('0x7'));var attributes=require('./userProfileSection.attributes');module[_0x4f4b('0x8')]=function(_0x1e9951,_0xf1de0c){return _0x1e9951[_0x4f4b('0x9')](_0x4f4b('0xa'),attributes,{'tableName':_0x4f4b('0xb'),'paranoid':![],'indexes':[{'name':'compositeIndex','fields':[_0x4f4b('0xc'),_0x4f4b('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index e952605..cc22e00 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd04e=['../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','debug','request\x20sent','error','UserProfileSection,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x5e6fe1,_0x8f80ad){var _0x5a6018=function(_0x1f1225){while(--_0x1f1225){_0x5e6fe1['push'](_0x5e6fe1['shift']());}};_0x5a6018(++_0x8f80ad);}(_0xd04e,0x10d));var _0xed04=function(_0x32f7d7,_0x54231b){_0x32f7d7=_0x32f7d7-0x0;var _0x133d09=_0xd04e[_0x32f7d7];return _0x133d09;};'use strict';var _=require(_0xed04('0x0'));var util=require(_0xed04('0x1'));var moment=require(_0xed04('0x2'));var BPromise=require(_0xed04('0x3'));var rs=require(_0xed04('0x4'));var fs=require('fs');var Redis=require(_0xed04('0x5'));var db=require(_0xed04('0x6'))['db'];var utils=require(_0xed04('0x7'));var logger=require(_0xed04('0x8'))('rpc');var config=require(_0xed04('0x9'));var jayson=require(_0xed04('0xa'));var client=jayson[_0xed04('0xb')][_0xed04('0xc')]({'port':0x232a});function respondWithRpcPromise(_0xf7aa9e,_0x4cdc39,_0x523527){return new BPromise(function(_0x5df2d2,_0x270f24){return client[_0xed04('0xd')](_0xf7aa9e,_0x523527)[_0xed04('0xe')](function(_0x277eac){logger[_0xed04('0xf')]('UserProfileSection,\x20%s,\x20%s',_0x4cdc39,'request\x20sent');logger[_0xed04('0x10')]('UserProfileSection,\x20%s,\x20%s,\x20%s',_0x4cdc39,_0xed04('0x11'),JSON['stringify'](_0x277eac));if(_0x277eac[_0xed04('0x12')]){if(_0x277eac[_0xed04('0x12')]['code']===0x1f4){logger[_0xed04('0x12')](_0xed04('0x13'),_0x4cdc39,_0x277eac[_0xed04('0x12')]['message']);return _0x270f24(_0x277eac[_0xed04('0x12')][_0xed04('0x14')]);}logger[_0xed04('0x12')](_0xed04('0x13'),_0x4cdc39,_0x277eac[_0xed04('0x12')][_0xed04('0x14')]);return _0x5df2d2(_0x277eac['error']['message']);}else{logger['info'](_0xed04('0x13'),_0x4cdc39,'request\x20sent');_0x5df2d2(_0x277eac[_0xed04('0x15')][_0xed04('0x14')]);}})[_0xed04('0x16')](function(_0x4d8934){logger[_0xed04('0x12')]('UserProfileSection,\x20%s,\x20%s',_0x4cdc39,_0x4d8934);_0x270f24(_0x4d8934);});});}
\ No newline at end of file
+var _0x900a=['http','request','info','UserProfileSection,\x20%s,\x20%s','UserProfileSection,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client'];(function(_0x625492,_0x1cd944){var _0x296b94=function(_0x942555){while(--_0x942555){_0x625492['push'](_0x625492['shift']());}};_0x296b94(++_0x1cd944);}(_0x900a,0xe7));var _0xa900=function(_0x44423b,_0x4c7e2e){_0x44423b=_0x44423b-0x0;var _0x46c147=_0x900a[_0x44423b];return _0x46c147;};'use strict';var _=require(_0xa900('0x0'));var util=require(_0xa900('0x1'));var moment=require(_0xa900('0x2'));var BPromise=require(_0xa900('0x3'));var rs=require(_0xa900('0x4'));var fs=require('fs');var Redis=require(_0xa900('0x5'));var db=require(_0xa900('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xa900('0x7'));var config=require(_0xa900('0x8'));var jayson=require(_0xa900('0x9'));var client=jayson[_0xa900('0xa')][_0xa900('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2a3096,_0x2f5972,_0xc953d){return new BPromise(function(_0x3078f4,_0x5f13b4){return client[_0xa900('0xc')](_0x2a3096,_0xc953d)['then'](function(_0x133f8a){logger[_0xa900('0xd')](_0xa900('0xe'),_0x2f5972,'request\x20sent');logger['debug'](_0xa900('0xf'),_0x2f5972,_0xa900('0x10'),JSON['stringify'](_0x133f8a));if(_0x133f8a[_0xa900('0x11')]){if(_0x133f8a['error'][_0xa900('0x12')]===0x1f4){logger[_0xa900('0x11')](_0xa900('0xe'),_0x2f5972,_0x133f8a[_0xa900('0x11')][_0xa900('0x13')]);return _0x5f13b4(_0x133f8a[_0xa900('0x11')][_0xa900('0x13')]);}logger[_0xa900('0x11')](_0xa900('0xe'),_0x2f5972,_0x133f8a[_0xa900('0x11')][_0xa900('0x13')]);return _0x3078f4(_0x133f8a['error'][_0xa900('0x13')]);}else{logger[_0xa900('0xd')]('UserProfileSection,\x20%s,\x20%s',_0x2f5972,_0xa900('0x10'));_0x3078f4(_0x133f8a[_0xa900('0x14')][_0xa900('0x13')]);}})[_0xa900('0x15')](function(_0x339a0f){logger[_0xa900('0x11')](_0xa900('0xe'),_0x2f5972,_0x339a0f);_0x5f13b4(_0x339a0f);});});}
\ No newline at end of file
index 84562b9..5ff1529 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['../../components/interaction/service','../../config/environment','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x42c2eb,_0x252c89){var _0x2beeba=function(_0x1395e7){while(--_0x1395e7){_0x42c2eb['push'](_0x42c2eb['shift']());}};_0x2beeba(++_0x252c89);}(_0xe706,0xa3));var _0x6e70=function(_0x45e56c,_0x4235d0){_0x45e56c=_0x45e56c-0x0;var _0x4826ef=_0xe706[_0x45e56c];return _0x4826ef;};'use strict';var multer=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var path=require(_0x6e70('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e70('0x3'));var router=express[_0x6e70('0x4')]();var fs_extra=require(_0x6e70('0x5'));var auth=require(_0x6e70('0x6'));var interaction=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));module[_0x6e70('0x9')]=router;
\ No newline at end of file
+var _0x70e0=['../../components/auth/service','../../components/interaction/service','exports','multer','util','path','Router','fs-extra'];(function(_0x2cf5fb,_0x4f905e){var _0x3dcc6e=function(_0x2493e7){while(--_0x2493e7){_0x2cf5fb['push'](_0x2cf5fb['shift']());}};_0x3dcc6e(++_0x4f905e);}(_0x70e0,0x17b));var _0x070e=function(_0x522994,_0xa6f789){_0x522994=_0x522994-0x0;var _0x8e052b=_0x70e0[_0x522994];return _0x8e052b;};'use strict';var multer=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var path=require(_0x070e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x070e('0x3')]();var fs_extra=require(_0x070e('0x4'));var auth=require(_0x070e('0x5'));var interaction=require(_0x070e('0x6'));var config=require('../../config/environment');module[_0x070e('0x7')]=router;
\ No newline at end of file
index d8ace1d..59c5570 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7fc4=['exports'];(function(_0x4f53a6,_0x582ff5){var _0x30e4b7=function(_0x1aaf04){while(--_0x1aaf04){_0x4f53a6['push'](_0x4f53a6['shift']());}};_0x30e4b7(++_0x582ff5);}(_0x7fc4,0x1cf));var _0x47fc=function(_0x1a3825,_0x2f6321){_0x1a3825=_0x1a3825-0x0;var _0x4fc98b=_0x7fc4[_0x1a3825];return _0x4fc98b;};'use strict';var Sequelize=require('sequelize');module[_0x47fc('0x0')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x5ef9=['INTEGER','sequelize','exports'];(function(_0x43f552,_0x42808c){var _0x17911b=function(_0x4407a7){while(--_0x4407a7){_0x43f552['push'](_0x43f552['shift']());}};_0x17911b(++_0x42808c);}(_0x5ef9,0x142));var _0x95ef=function(_0x58c20f,_0x4cdb1b){_0x58c20f=_0x58c20f-0x0;var _0x3b0318=_0x5ef9[_0x58c20f];return _0x3b0318;};'use strict';var Sequelize=require(_0x95ef('0x0'));module[_0x95ef('0x1')]={'penalty':{'type':Sequelize[_0x95ef('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 4384e21..1a3ffdb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2bc=['./userSmsQueue.attributes','exports','define','user_has_sms_queues','lodash','../../config/logger','moment','bluebird','request-promise','path','rimraf'];(function(_0x579b4c,_0x418ec0){var _0x598027=function(_0x58c7ea){while(--_0x58c7ea){_0x579b4c['push'](_0x579b4c['shift']());}};_0x598027(++_0x418ec0);}(_0xe2bc,0x1a6));var _0xce2b=function(_0x4a3898,_0x4c9853){_0x4a3898=_0x4a3898-0x0;var _0x25ceb0=_0xe2bc[_0x4a3898];return _0x25ceb0;};'use strict';var _=require(_0xce2b('0x0'));var util=require('util');var logger=require(_0xce2b('0x1'))('api');var moment=require(_0xce2b('0x2'));var BPromise=require(_0xce2b('0x3'));var rp=require(_0xce2b('0x4'));var fs=require('fs');var path=require(_0xce2b('0x5'));var rimraf=require(_0xce2b('0x6'));var config=require('../../config/environment');var attributes=require(_0xce2b('0x7'));module[_0xce2b('0x8')]=function(_0x3c15d3,_0x343373){return _0x3c15d3[_0xce2b('0x9')]('UserSmsQueue',attributes,{'tableName':_0xce2b('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5d0a=['user_has_sms_queues','lodash','../../config/logger','moment','bluebird','request-promise','path','../../config/environment','./userSmsQueue.attributes','exports','define','UserSmsQueue'];(function(_0x3b73c8,_0x222b86){var _0x1c927c=function(_0x56b440){while(--_0x56b440){_0x3b73c8['push'](_0x3b73c8['shift']());}};_0x1c927c(++_0x222b86);}(_0x5d0a,0x175));var _0xa5d0=function(_0x5be676,_0x3bfba8){_0x5be676=_0x5be676-0x0;var _0x582eba=_0x5d0a[_0x5be676];return _0x582eba;};'use strict';var _=require(_0xa5d0('0x0'));var util=require('util');var logger=require(_0xa5d0('0x1'))('api');var moment=require(_0xa5d0('0x2'));var BPromise=require(_0xa5d0('0x3'));var rp=require(_0xa5d0('0x4'));var fs=require('fs');var path=require(_0xa5d0('0x5'));var rimraf=require('rimraf');var config=require(_0xa5d0('0x6'));var attributes=require(_0xa5d0('0x7'));module[_0xa5d0('0x8')]=function(_0x1e90c4,_0x406289){return _0x1e90c4[_0xa5d0('0x9')](_0xa5d0('0xa'),attributes,{'tableName':_0xa5d0('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index de20410..85b5c78 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3529=['info','UserSmsQueue,\x20%s,\x20%s','debug','UserSmsQueue,\x20%s,\x20%s,\x20%s','error','code','message','request\x20sent','result','catch','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then'];(function(_0x333ac4,_0x5677a4){var _0x193894=function(_0x28012d){while(--_0x28012d){_0x333ac4['push'](_0x333ac4['shift']());}};_0x193894(++_0x5677a4);}(_0x3529,0xb2));var _0x9352=function(_0xa7d678,_0x3dfdff){_0xa7d678=_0xa7d678-0x0;var _0x5cc539=_0x3529[_0xa7d678];return _0x5cc539;};'use strict';var _=require(_0x9352('0x0'));var util=require('util');var moment=require(_0x9352('0x1'));var BPromise=require('bluebird');var rs=require(_0x9352('0x2'));var fs=require('fs');var Redis=require(_0x9352('0x3'));var db=require(_0x9352('0x4'))['db'];var utils=require(_0x9352('0x5'));var logger=require(_0x9352('0x6'))(_0x9352('0x7'));var config=require(_0x9352('0x8'));var jayson=require(_0x9352('0x9'));var client=jayson[_0x9352('0xa')][_0x9352('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2fba14,_0x2d0bb6,_0x19b2f6){return new BPromise(function(_0x410c81,_0x40b7ec){return client[_0x9352('0xc')](_0x2fba14,_0x19b2f6)[_0x9352('0xd')](function(_0x11f8f8){logger[_0x9352('0xe')](_0x9352('0xf'),_0x2d0bb6,'request\x20sent');logger[_0x9352('0x10')](_0x9352('0x11'),_0x2d0bb6,'request\x20sent',JSON['stringify'](_0x11f8f8));if(_0x11f8f8[_0x9352('0x12')]){if(_0x11f8f8[_0x9352('0x12')][_0x9352('0x13')]===0x1f4){logger[_0x9352('0x12')](_0x9352('0xf'),_0x2d0bb6,_0x11f8f8[_0x9352('0x12')][_0x9352('0x14')]);return _0x40b7ec(_0x11f8f8[_0x9352('0x12')][_0x9352('0x14')]);}logger[_0x9352('0x12')](_0x9352('0xf'),_0x2d0bb6,_0x11f8f8[_0x9352('0x12')][_0x9352('0x14')]);return _0x410c81(_0x11f8f8[_0x9352('0x12')][_0x9352('0x14')]);}else{logger[_0x9352('0xe')](_0x9352('0xf'),_0x2d0bb6,_0x9352('0x15'));_0x410c81(_0x11f8f8[_0x9352('0x16')][_0x9352('0x14')]);}})[_0x9352('0x17')](function(_0x35bb7b){logger[_0x9352('0x12')](_0x9352('0xf'),_0x2d0bb6,_0x35bb7b);_0x40b7ec(_0x35bb7b);});});}
\ No newline at end of file
+var _0x6fec=['UserSmsQueue,\x20%s,\x20%s','request\x20sent','UserSmsQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','request','info'];(function(_0x177167,_0x159572){var _0x4088e4=function(_0x5d4be6){while(--_0x5d4be6){_0x177167['push'](_0x177167['shift']());}};_0x4088e4(++_0x159572);}(_0x6fec,0x153));var _0xc6fe=function(_0x18927b,_0x35c709){_0x18927b=_0x18927b-0x0;var _0x4a875b=_0x6fec[_0x18927b];return _0x4a875b;};'use strict';var _=require(_0xc6fe('0x0'));var util=require('util');var moment=require(_0xc6fe('0x1'));var BPromise=require(_0xc6fe('0x2'));var rs=require(_0xc6fe('0x3'));var fs=require('fs');var Redis=require(_0xc6fe('0x4'));var db=require(_0xc6fe('0x5'))['db'];var utils=require(_0xc6fe('0x6'));var logger=require('../../config/logger')(_0xc6fe('0x7'));var config=require(_0xc6fe('0x8'));var jayson=require(_0xc6fe('0x9'));var client=jayson[_0xc6fe('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x32391a,_0x3f0f24,_0x2699d8){return new BPromise(function(_0x5b8431,_0x3ef3ea){return client[_0xc6fe('0xb')](_0x32391a,_0x2699d8)['then'](function(_0x34f8e8){logger[_0xc6fe('0xc')](_0xc6fe('0xd'),_0x3f0f24,_0xc6fe('0xe'));logger['debug'](_0xc6fe('0xf'),_0x3f0f24,_0xc6fe('0xe'),JSON[_0xc6fe('0x10')](_0x34f8e8));if(_0x34f8e8['error']){if(_0x34f8e8[_0xc6fe('0x11')][_0xc6fe('0x12')]===0x1f4){logger[_0xc6fe('0x11')](_0xc6fe('0xd'),_0x3f0f24,_0x34f8e8[_0xc6fe('0x11')][_0xc6fe('0x13')]);return _0x3ef3ea(_0x34f8e8[_0xc6fe('0x11')]['message']);}logger[_0xc6fe('0x11')]('UserSmsQueue,\x20%s,\x20%s',_0x3f0f24,_0x34f8e8['error'][_0xc6fe('0x13')]);return _0x5b8431(_0x34f8e8[_0xc6fe('0x11')][_0xc6fe('0x13')]);}else{logger[_0xc6fe('0xc')](_0xc6fe('0xd'),_0x3f0f24,_0xc6fe('0xe'));_0x5b8431(_0x34f8e8[_0xc6fe('0x14')][_0xc6fe('0x13')]);}})[_0xc6fe('0x15')](function(_0x11f442){logger[_0xc6fe('0x11')](_0xc6fe('0xd'),_0x3f0f24,_0x11f442);_0x3ef3ea(_0x11f442);});});}
\ 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..febcc5c
--- /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 _0x90bc=['sequelize','exports','INTEGER'];(function(_0xf05c23,_0x183da1){var _0x3017a6=function(_0x2fb505){while(--_0x2fb505){_0xf05c23['push'](_0xf05c23['shift']());}};_0x3017a6(++_0x183da1);}(_0x90bc,0x90));var _0xc90b=function(_0x33eff3,_0x4b74bb){_0x33eff3=_0x33eff3-0x0;var _0x5659aa=_0x90bc[_0x33eff3];return _0x5659aa;};'use strict';var Sequelize=require(_0xc90b('0x0'));module[_0xc90b('0x1')]={'UserId':{'type':Sequelize[_0xc90b('0x2')]},'VoicePrefixId':{'type':Sequelize[_0xc90b('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..489b199
--- /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(_0x15e407,_0x24cf49){var _0x583995=function(_0x2d8878){while(--_0x2d8878){_0x15e407['push'](_0x15e407['shift']());}};_0x583995(++_0x24cf49);}(_0xa9e0,0x123));var _0x0a9e=function(_0x29b609,_0x19d388){_0x29b609=_0x29b609-0x0;var _0x54c952=_0xa9e0[_0x29b609];return _0x54c952;};'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 e62cfc5..8296c38 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(_0x3e2c1e,_0x1e8d40){var _0x1c6666=function(_0x190b73){while(--_0x190b73){_0x3e2c1e['push'](_0x3e2c1e['shift']());}};_0x1c6666(++_0x1e8d40);}(_0x9c44,0x178));var _0x49c4=function(_0x68c979,_0x431cff){_0x68c979=_0x68c979-0x0;var _0x4f0001=_0x9c44[_0x68c979];return _0x4f0001;};'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(_0x424268,_0x3ee37a){var _0x31dfcd=function(_0x113e08){while(--_0x113e08){_0x424268['push'](_0x424268['shift']());}};_0x31dfcd(++_0x3ee37a);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x289e64,_0x5adb3c){_0x289e64=_0x289e64-0x0;var _0x30246c=_0xcb91[_0x289e64];return _0x30246c;};'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 ab639c4..a5234e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c74=['INTEGER','exports'];(function(_0x5f1f2c,_0x5a8cc1){var _0x5b07fa=function(_0x2234d8){while(--_0x2234d8){_0x5f1f2c['push'](_0x5f1f2c['shift']());}};_0x5b07fa(++_0x5a8cc1);}(_0x0c74,0x1cd));var _0x40c7=function(_0x20c260,_0x19a98e){_0x20c260=_0x20c260-0x0;var _0x6e0a59=_0x0c74[_0x20c260];return _0x6e0a59;};'use strict';var Sequelize=require('sequelize');module[_0x40c7('0x0')]={'penalty':{'type':Sequelize[_0x40c7('0x1')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x0cee=['exports','INTEGER','sequelize'];(function(_0x4cc393,_0x3fc3d0){var _0x25cd01=function(_0xe154be){while(--_0xe154be){_0x4cc393['push'](_0x4cc393['shift']());}};_0x25cd01(++_0x3fc3d0);}(_0x0cee,0x113));var _0xe0ce=function(_0x4d7ad5,_0x457c80){_0x4d7ad5=_0x4d7ad5-0x0;var _0x4f0f6f=_0x0cee[_0x4d7ad5];return _0x4f0f6f;};'use strict';var Sequelize=require(_0xe0ce('0x0'));module[_0xe0ce('0x1')]={'penalty':{'type':Sequelize[_0xe0ce('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index e7816c3..07b901e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc839=['../../config/environment','define','UserVoiceQueue','lodash','util','api','moment','bluebird','request-promise','path','rimraf'];(function(_0xd8a8af,_0x1e93f0){var _0x5b7278=function(_0x458800){while(--_0x458800){_0xd8a8af['push'](_0xd8a8af['shift']());}};_0x5b7278(++_0x1e93f0);}(_0xc839,0x7c));var _0x9c83=function(_0x50a8ab,_0x2525fa){_0x50a8ab=_0x50a8ab-0x0;var _0x13f124=_0xc839[_0x50a8ab];return _0x13f124;};'use strict';var _=require(_0x9c83('0x0'));var util=require(_0x9c83('0x1'));var logger=require('../../config/logger')(_0x9c83('0x2'));var moment=require(_0x9c83('0x3'));var BPromise=require(_0x9c83('0x4'));var rp=require(_0x9c83('0x5'));var fs=require('fs');var path=require(_0x9c83('0x6'));var rimraf=require(_0x9c83('0x7'));var config=require(_0x9c83('0x8'));var attributes=require('./userVoiceQueue.attributes');module['exports']=function(_0x179b49,_0x490e84){return _0x179b49[_0x9c83('0x9')](_0x9c83('0xa'),attributes,{'tableName':'user_has_voice_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9da9=['exports','define','UserVoiceQueue','user_has_voice_queues','util','../../config/logger','api','moment','bluebird','../../config/environment','./userVoiceQueue.attributes'];(function(_0x433a86,_0x175b5c){var _0x23000c=function(_0x4b1fa0){while(--_0x4b1fa0){_0x433a86['push'](_0x433a86['shift']());}};_0x23000c(++_0x175b5c);}(_0x9da9,0x1c7));var _0x99da=function(_0x37d4dd,_0x297bca){_0x37d4dd=_0x37d4dd-0x0;var _0xf37b53=_0x9da9[_0x37d4dd];return _0xf37b53;};'use strict';var _=require('lodash');var util=require(_0x99da('0x0'));var logger=require(_0x99da('0x1'))(_0x99da('0x2'));var moment=require(_0x99da('0x3'));var BPromise=require(_0x99da('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x99da('0x5'));var attributes=require(_0x99da('0x6'));module[_0x99da('0x7')]=function(_0x3051bb,_0x55c855){return _0x3051bb[_0x99da('0x8')](_0x99da('0x9'),attributes,{'tableName':_0x99da('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6610771..8ef6e18 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec3c=['code','message','result','catch','lodash','util','moment','ioredis','../../config/logger','../../config/environment','jayson/promise','client','http','then','info','UserVoiceQueue,\x20%s,\x20%s','request\x20sent','debug','error'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xec3c,0x1cc));var _0xcec3=function(_0x131b03,_0x372368){_0x131b03=_0x131b03-0x0;var _0x198edf=_0xec3c[_0x131b03];return _0x198edf;};'use strict';var _=require(_0xcec3('0x0'));var util=require(_0xcec3('0x1'));var moment=require(_0xcec3('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xcec3('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xcec3('0x4'))('rpc');var config=require(_0xcec3('0x5'));var jayson=require(_0xcec3('0x6'));var client=jayson[_0xcec3('0x7')][_0xcec3('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x1147d6,_0x41e5df,_0x59d8fd){return new BPromise(function(_0x5114d6,_0x26473a){return client['request'](_0x1147d6,_0x59d8fd)[_0xcec3('0x9')](function(_0x1a2103){logger[_0xcec3('0xa')](_0xcec3('0xb'),_0x41e5df,_0xcec3('0xc'));logger[_0xcec3('0xd')]('UserVoiceQueue,\x20%s,\x20%s,\x20%s',_0x41e5df,_0xcec3('0xc'),JSON['stringify'](_0x1a2103));if(_0x1a2103[_0xcec3('0xe')]){if(_0x1a2103[_0xcec3('0xe')][_0xcec3('0xf')]===0x1f4){logger[_0xcec3('0xe')]('UserVoiceQueue,\x20%s,\x20%s',_0x41e5df,_0x1a2103[_0xcec3('0xe')][_0xcec3('0x10')]);return _0x26473a(_0x1a2103[_0xcec3('0xe')]['message']);}logger[_0xcec3('0xe')](_0xcec3('0xb'),_0x41e5df,_0x1a2103[_0xcec3('0xe')][_0xcec3('0x10')]);return _0x5114d6(_0x1a2103[_0xcec3('0xe')][_0xcec3('0x10')]);}else{logger['info'](_0xcec3('0xb'),_0x41e5df,_0xcec3('0xc'));_0x5114d6(_0x1a2103[_0xcec3('0x11')][_0xcec3('0x10')]);}})[_0xcec3('0x12')](function(_0x1986d3){logger[_0xcec3('0xe')](_0xcec3('0xb'),_0x41e5df,_0x1986d3);_0x26473a(_0x1986d3);});});}
\ No newline at end of file
+var _0x500a=['ioredis','../../config/logger','../../config/environment','jayson/promise','http','then','info','UserVoiceQueue,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','lodash','util','moment','bluebird'];(function(_0x102e37,_0x14a181){var _0x35a07c=function(_0x16577f){while(--_0x16577f){_0x102e37['push'](_0x102e37['shift']());}};_0x35a07c(++_0x14a181);}(_0x500a,0x12e));var _0xa500=function(_0x17d9ab,_0x269bd4){_0x17d9ab=_0x17d9ab-0x0;var _0x1a1167=_0x500a[_0x17d9ab];return _0x1a1167;};'use strict';var _=require(_0xa500('0x0'));var util=require(_0xa500('0x1'));var moment=require(_0xa500('0x2'));var BPromise=require(_0xa500('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa500('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xa500('0x5'))('rpc');var config=require(_0xa500('0x6'));var jayson=require(_0xa500('0x7'));var client=jayson['client'][_0xa500('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x49331f,_0x2032b5,_0x15817f){return new BPromise(function(_0x28c5f8,_0x2c4db6){return client['request'](_0x49331f,_0x15817f)[_0xa500('0x9')](function(_0x477c6c){logger[_0xa500('0xa')](_0xa500('0xb'),_0x2032b5,_0xa500('0xc'));logger['debug']('UserVoiceQueue,\x20%s,\x20%s,\x20%s',_0x2032b5,_0xa500('0xc'),JSON['stringify'](_0x477c6c));if(_0x477c6c[_0xa500('0xd')]){if(_0x477c6c['error'][_0xa500('0xe')]===0x1f4){logger[_0xa500('0xd')]('UserVoiceQueue,\x20%s,\x20%s',_0x2032b5,_0x477c6c['error']['message']);return _0x2c4db6(_0x477c6c[_0xa500('0xd')][_0xa500('0xf')]);}logger[_0xa500('0xd')](_0xa500('0xb'),_0x2032b5,_0x477c6c['error'][_0xa500('0xf')]);return _0x28c5f8(_0x477c6c['error'][_0xa500('0xf')]);}else{logger['info']('UserVoiceQueue,\x20%s,\x20%s',_0x2032b5,_0xa500('0xc'));_0x28c5f8(_0x477c6c[_0xa500('0x10')][_0xa500('0xf')]);}})[_0xa500('0x11')](function(_0x2f29ab){logger[_0xa500('0xd')]('UserVoiceQueue,\x20%s,\x20%s',_0x2032b5,_0x2f29ab);_0x2c4db6(_0x2f29ab);});});}
\ No newline at end of file
index cd2088f..d75005a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','multer','util'];(function(_0x4e623c,_0x110ef0){var _0x43fbbf=function(_0x38eafe){while(--_0x38eafe){_0x4e623c['push'](_0x4e623c['shift']());}};_0x43fbbf(++_0x110ef0);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));module['exports']=router;
\ No newline at end of file
+var _0xedd9=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','exports'];(function(_0x3ab730,_0xb557f1){var _0x3282a7=function(_0x18f49c){while(--_0x18f49c){_0x3ab730['push'](_0x3ab730['shift']());}};_0x3282a7(++_0xb557f1);}(_0xedd9,0xfc));var _0x9edd=function(_0x32495d,_0x5ee6ec){_0x32495d=_0x32495d-0x0;var _0x1c0acf=_0xedd9[_0x32495d];return _0x1c0acf;};'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 82405e7..fa788eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa0f1=['Required\x20by\x20Asterisk','sequelize','exports','INTEGER','STRING','queue_interface'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa0f1,0x199));var _0x1a0f=function(_0x39b981,_0x22395d){_0x39b981=_0x39b981-0x0;var _0xfc8ba=_0xa0f1[_0x39b981];return _0xfc8ba;};'use strict';var Sequelize=require(_0x1a0f('0x0'));module[_0x1a0f('0x1')]={'uniqueid':{'type':Sequelize[_0x1a0f('0x2')],'primaryKey':!![],'autoIncrement':!![],'comment':'Required\x20by\x20Asterisk'},'membername':{'type':Sequelize[_0x1a0f('0x3')],'allowNull':![],'comment':'Required\x20by\x20Asterisk'},'UserId':{'type':Sequelize[_0x1a0f('0x2')],'allowNull':![]},'queue_name':{'type':Sequelize[_0x1a0f('0x3')],'allowNull':![],'unique':_0x1a0f('0x4'),'comment':_0x1a0f('0x5')},'VoiceQueueId':{'type':Sequelize['INTEGER'],'allowNull':![]},'interface':{'type':Sequelize[_0x1a0f('0x3')],'allowNull':![],'unique':_0x1a0f('0x4'),'comment':'Required\x20by\x20Asterisk'},'penalty':{'type':Sequelize[_0x1a0f('0x2')](0xb),'defaultValue':0x0,'comment':'Required\x20by\x20Asterisk'},'paused':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0,'comment':'Required\x20by\x20Asterisk'}};
\ No newline at end of file
+var _0x6eef=['STRING','queue_interface','Required\x20by\x20Asterisk','exports','INTEGER'];(function(_0x38c4be,_0x17c5b5){var _0x1d5ac6=function(_0x2a567c){while(--_0x2a567c){_0x38c4be['push'](_0x38c4be['shift']());}};_0x1d5ac6(++_0x17c5b5);}(_0x6eef,0xda));var _0xf6ee=function(_0x20118a,_0x3dbdf3){_0x20118a=_0x20118a-0x0;var _0x538b5f=_0x6eef[_0x20118a];return _0x538b5f;};'use strict';var Sequelize=require('sequelize');module[_0xf6ee('0x0')]={'uniqueid':{'type':Sequelize[_0xf6ee('0x1')],'primaryKey':!![],'autoIncrement':!![],'comment':'Required\x20by\x20Asterisk'},'membername':{'type':Sequelize[_0xf6ee('0x2')],'allowNull':![],'comment':'Required\x20by\x20Asterisk'},'UserId':{'type':Sequelize[_0xf6ee('0x1')],'allowNull':![]},'queue_name':{'type':Sequelize[_0xf6ee('0x2')],'allowNull':![],'unique':_0xf6ee('0x3'),'comment':_0xf6ee('0x4')},'VoiceQueueId':{'type':Sequelize['INTEGER'],'allowNull':![]},'interface':{'type':Sequelize[_0xf6ee('0x2')],'allowNull':![],'unique':'queue_interface','comment':_0xf6ee('0x4')},'penalty':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0,'comment':_0xf6ee('0x4')},'paused':{'type':Sequelize[_0xf6ee('0x1')](0xb),'defaultValue':0x0,'comment':_0xf6ee('0x4')}};
\ No newline at end of file
index 73e5e3f..d210af2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcc09=['../../mysqldb','UserVoiceQueueRt','setMaxListeners','emit','hasOwnProperty','hook','exports'];(function(_0x37fdbf,_0x446b4e){var _0x4069e7=function(_0x1199e3){while(--_0x1199e3){_0x37fdbf['push'](_0x37fdbf['shift']());}};_0x4069e7(++_0x446b4e);}(_0xcc09,0x7e));var _0x9cc0=function(_0x474bc0,_0x26989c){_0x474bc0=_0x474bc0-0x0;var _0x4b24cf=_0xcc09[_0x474bc0];return _0x4b24cf;};'use strict';var EventEmitter=require('events');var UserVoiceQueueRt=require(_0x9cc0('0x0'))['db'][_0x9cc0('0x1')];var UserVoiceQueueRtEvents=new EventEmitter();UserVoiceQueueRtEvents[_0x9cc0('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x130e87){return function(_0x5c9493,_0x1d0e60,_0x5984c0){UserVoiceQueueRtEvents[_0x9cc0('0x3')](_0x130e87+':'+_0x5c9493['id'],_0x5c9493);UserVoiceQueueRtEvents[_0x9cc0('0x3')](_0x130e87,_0x5c9493);_0x5984c0(null);};}for(var e in events){if(events[_0x9cc0('0x4')](e)){var event=events[e];UserVoiceQueueRt[_0x9cc0('0x5')](e,emitEvent(event));}}module[_0x9cc0('0x6')]=UserVoiceQueueRtEvents;
\ No newline at end of file
+var _0x99d3=['events','setMaxListeners','update','remove','emit','hasOwnProperty','hook','exports'];(function(_0x47e7cb,_0x4c1b8d){var _0x2a8874=function(_0x36498f){while(--_0x36498f){_0x47e7cb['push'](_0x47e7cb['shift']());}};_0x2a8874(++_0x4c1b8d);}(_0x99d3,0x150));var _0x399d=function(_0x2f61c0,_0x164459){_0x2f61c0=_0x2f61c0-0x0;var _0x194424=_0x99d3[_0x2f61c0];return _0x194424;};'use strict';var EventEmitter=require(_0x399d('0x0'));var UserVoiceQueueRt=require('../../mysqldb')['db']['UserVoiceQueueRt'];var UserVoiceQueueRtEvents=new EventEmitter();UserVoiceQueueRtEvents[_0x399d('0x1')](0x0);var events={'afterCreate':'save','afterUpdate':_0x399d('0x2'),'afterDestroy':_0x399d('0x3')};function emitEvent(_0x455c3d){return function(_0x492568,_0x5aa1b3,_0x132ee9){UserVoiceQueueRtEvents['emit'](_0x455c3d+':'+_0x492568['id'],_0x492568);UserVoiceQueueRtEvents[_0x399d('0x4')](_0x455c3d,_0x492568);_0x132ee9(null);};}for(var e in events){if(events[_0x399d('0x5')](e)){var event=events[e];UserVoiceQueueRt[_0x399d('0x6')](e,emitEvent(event));}}module[_0x399d('0x7')]=UserVoiceQueueRtEvents;
\ No newline at end of file
index 401c6bd..8d3e392 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfab9=['./userVoiceQueueRt.attributes','exports','define','UserVoiceQueueRt','user_has_voice_queues_rt','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x423035,_0x51ddeb){var _0x3645fc=function(_0x2205f8){while(--_0x2205f8){_0x423035['push'](_0x423035['shift']());}};_0x3645fc(++_0x51ddeb);}(_0xfab9,0x163));var _0x9fab=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xfab9[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x9fab('0x0'));var util=require(_0x9fab('0x1'));var logger=require(_0x9fab('0x2'))('api');var moment=require(_0x9fab('0x3'));var BPromise=require(_0x9fab('0x4'));var rp=require(_0x9fab('0x5'));var fs=require('fs');var path=require(_0x9fab('0x6'));var rimraf=require(_0x9fab('0x7'));var config=require(_0x9fab('0x8'));var attributes=require(_0x9fab('0x9'));module[_0x9fab('0xa')]=function(_0x203897,_0x41bb33){return _0x203897[_0x9fab('0xb')](_0x9fab('0xc'),attributes,{'tableName':_0x9fab('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4422=['moment','bluebird','request-promise','path','rimraf','../../config/environment','define','UserVoiceQueueRt','util','api'];(function(_0x54c2c0,_0x6f7c18){var _0x1cbf9b=function(_0x3fd590){while(--_0x3fd590){_0x54c2c0['push'](_0x54c2c0['shift']());}};_0x1cbf9b(++_0x6f7c18);}(_0x4422,0xa8));var _0x2442=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0x4422[_0x21a9d9];return _0x46adce;};'use strict';var _=require('lodash');var util=require(_0x2442('0x0'));var logger=require('../../config/logger')(_0x2442('0x1'));var moment=require(_0x2442('0x2'));var BPromise=require(_0x2442('0x3'));var rp=require(_0x2442('0x4'));var fs=require('fs');var path=require(_0x2442('0x5'));var rimraf=require(_0x2442('0x6'));var config=require(_0x2442('0x7'));var attributes=require('./userVoiceQueueRt.attributes');module['exports']=function(_0x413a0f,_0x2bba5c){return _0x413a0f[_0x2442('0x8')](_0x2442('0x9'),attributes,{'tableName':'user_has_voice_queues_rt','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ddc8f19..f8de252 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x976e=['message','catch','GetVoiceQueueRtPauses','UserVoiceQueueRt','findAll','options','raw','where','sequelize','COUNT','outboundQueuePauses','stringify','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','http','defaults','localhost','socket.io-emitter','redis','register','request','then','info','UserVoiceQueueRt,\x20%s,\x20%s','request\x20sent','error','code'];(function(_0x5b93c2,_0x3a4382){var _0x1e731c=function(_0x9964af){while(--_0x9964af){_0x5b93c2['push'](_0x5b93c2['shift']());}};_0x1e731c(++_0x3a4382);}(_0x976e,0x124));var _0xe976=function(_0x546201,_0x49ee3e){_0x546201=_0x546201-0x0;var _0x57e598=_0x976e[_0x546201];return _0x57e598;};'use strict';var _=require(_0xe976('0x0'));var util=require(_0xe976('0x1'));var moment=require(_0xe976('0x2'));var BPromise=require(_0xe976('0x3'));var rs=require(_0xe976('0x4'));var fs=require('fs');var Redis=require(_0xe976('0x5'));var db=require(_0xe976('0x6'))['db'];var utils=require(_0xe976('0x7'));var logger=require('../../config/logger')('rpc');var config=require(_0xe976('0x8'));var jayson=require(_0xe976('0x9'));var client=jayson['client'][_0xe976('0xa')]({'port':0x232a});config['redis']=_[_0xe976('0xb')](config['redis'],{'host':_0xe976('0xc'),'port':0x18eb});var socket=require(_0xe976('0xd'))(new Redis(config[_0xe976('0xe')]));require('./userVoiceQueueRt.socket')[_0xe976('0xf')](socket);function respondWithRpcPromise(_0x3e7d6a,_0x4036c9,_0x316d14){return new BPromise(function(_0x5d1ef9,_0x32b85b){return client[_0xe976('0x10')](_0x3e7d6a,_0x316d14)[_0xe976('0x11')](function(_0xdab392){logger[_0xe976('0x12')](_0xe976('0x13'),_0x4036c9,_0xe976('0x14'));logger['debug']('UserVoiceQueueRt,\x20%s,\x20%s,\x20%s',_0x4036c9,_0xe976('0x14'),JSON['stringify'](_0xdab392));if(_0xdab392[_0xe976('0x15')]){if(_0xdab392[_0xe976('0x15')][_0xe976('0x16')]===0x1f4){logger[_0xe976('0x15')](_0xe976('0x13'),_0x4036c9,_0xdab392[_0xe976('0x15')]['message']);return _0x32b85b(_0xdab392['error']['message']);}logger[_0xe976('0x15')](_0xe976('0x13'),_0x4036c9,_0xdab392[_0xe976('0x15')][_0xe976('0x17')]);return _0x5d1ef9(_0xdab392[_0xe976('0x15')]['message']);}else{logger[_0xe976('0x12')](_0xe976('0x13'),_0x4036c9,_0xe976('0x14'));_0x5d1ef9(_0xdab392['result'][_0xe976('0x17')]);}})[_0xe976('0x18')](function(_0x32fb81){logger['error'](_0xe976('0x13'),_0x4036c9,_0x32fb81);_0x32b85b(_0x32fb81);});});}exports[_0xe976('0x19')]=function(_0x266e6e){var _0x250d98=this;return new Promise(function(_0x5a96d7,_0x240979){return db[_0xe976('0x1a')][_0xe976('0x1b')]({'raw':_0x266e6e[_0xe976('0x1c')]?_0x266e6e[_0xe976('0x1c')][_0xe976('0x1d')]===undefined?!![]:![]:!![],'where':_0x266e6e[_0xe976('0x1c')]?_0x266e6e[_0xe976('0x1c')][_0xe976('0x1e')]||null:null,'attributes':[[db[_0xe976('0x1f')]['fn'](_0xe976('0x20'),db[_0xe976('0x1f')]['fn']('IF',db['sequelize']['literal']('`paused`\x20=\x201,\x201,\x20null'))),_0xe976('0x21')]]})[_0xe976('0x11')](function(_0x4d978a){logger[_0xe976('0x12')](_0xe976('0x19'),_0x266e6e);logger['debug'](_0xe976('0x19'),_0x266e6e,JSON[_0xe976('0x22')](_0x4d978a));_0x5a96d7(_0x4d978a);})[_0xe976('0x18')](function(_0x529967){logger[_0xe976('0x15')]('GetVoiceQueueRtPauses',_0x529967[_0xe976('0x17')],_0x266e6e);_0x240979(_0x250d98[_0xe976('0x15')](0x1f4,_0x529967[_0xe976('0x17')]));});});};
\ No newline at end of file
+var _0xc83a=['`paused`\x20=\x201,\x201,\x20null','outboundQueuePauses','debug','lodash','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','localhost','socket.io-emitter','redis','./userVoiceQueueRt.socket','register','request','then','UserVoiceQueueRt,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','catch','GetVoiceQueueRtPauses','UserVoiceQueueRt','raw','options','where','sequelize','COUNT','literal'];(function(_0x3ff593,_0x36440d){var _0x59e9bf=function(_0x4819cd){while(--_0x4819cd){_0x3ff593['push'](_0x3ff593['shift']());}};_0x59e9bf(++_0x36440d);}(_0xc83a,0xff));var _0xac83=function(_0x2d9807,_0x48774){_0x2d9807=_0x2d9807-0x0;var _0xaa26e4=_0xc83a[_0x2d9807];return _0xaa26e4;};'use strict';var _=require(_0xac83('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xac83('0x1'));var fs=require('fs');var Redis=require(_0xac83('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0xac83('0x3'));var logger=require(_0xac83('0x4'))('rpc');var config=require(_0xac83('0x5'));var jayson=require(_0xac83('0x6'));var client=jayson[_0xac83('0x7')][_0xac83('0x8')]({'port':0x232a});config['redis']=_['defaults'](config['redis'],{'host':_0xac83('0x9'),'port':0x18eb});var socket=require(_0xac83('0xa'))(new Redis(config[_0xac83('0xb')]));require(_0xac83('0xc'))[_0xac83('0xd')](socket);function respondWithRpcPromise(_0x3e2c65,_0x443918,_0x417584){return new BPromise(function(_0x6b8d22,_0x226997){return client[_0xac83('0xe')](_0x3e2c65,_0x417584)[_0xac83('0xf')](function(_0x51bd9c){logger['info'](_0xac83('0x10'),_0x443918,_0xac83('0x11'));logger['debug']('UserVoiceQueueRt,\x20%s,\x20%s,\x20%s',_0x443918,_0xac83('0x11'),JSON[_0xac83('0x12')](_0x51bd9c));if(_0x51bd9c['error']){if(_0x51bd9c[_0xac83('0x13')][_0xac83('0x14')]===0x1f4){logger['error'](_0xac83('0x10'),_0x443918,_0x51bd9c['error'][_0xac83('0x15')]);return _0x226997(_0x51bd9c[_0xac83('0x13')][_0xac83('0x15')]);}logger['error'](_0xac83('0x10'),_0x443918,_0x51bd9c[_0xac83('0x13')][_0xac83('0x15')]);return _0x6b8d22(_0x51bd9c[_0xac83('0x13')][_0xac83('0x15')]);}else{logger[_0xac83('0x16')]('UserVoiceQueueRt,\x20%s,\x20%s',_0x443918,'request\x20sent');_0x6b8d22(_0x51bd9c[_0xac83('0x17')][_0xac83('0x15')]);}})[_0xac83('0x18')](function(_0x48271c){logger['error']('UserVoiceQueueRt,\x20%s,\x20%s',_0x443918,_0x48271c);_0x226997(_0x48271c);});});}exports[_0xac83('0x19')]=function(_0x4c3e9d){var _0x59fe71=this;return new Promise(function(_0x25f814,_0x4e0969){return db[_0xac83('0x1a')]['findAll']({'raw':_0x4c3e9d['options']?_0x4c3e9d['options'][_0xac83('0x1b')]===undefined?!![]:![]:!![],'where':_0x4c3e9d[_0xac83('0x1c')]?_0x4c3e9d[_0xac83('0x1c')][_0xac83('0x1d')]||null:null,'attributes':[[db[_0xac83('0x1e')]['fn'](_0xac83('0x1f'),db[_0xac83('0x1e')]['fn']('IF',db[_0xac83('0x1e')][_0xac83('0x20')](_0xac83('0x21')))),_0xac83('0x22')]]})[_0xac83('0xf')](function(_0x3dd40d){logger[_0xac83('0x16')](_0xac83('0x19'),_0x4c3e9d);logger[_0xac83('0x23')](_0xac83('0x19'),_0x4c3e9d,JSON[_0xac83('0x12')](_0x3dd40d));_0x25f814(_0x3dd40d);})['catch'](function(_0x3b8a66){logger[_0xac83('0x13')](_0xac83('0x19'),_0x3b8a66[_0xac83('0x15')],_0x4c3e9d);_0x4e0969(_0x59fe71['error'](0x1f4,_0x3b8a66[_0xac83('0x15')]));});});};
\ No newline at end of file
index 827d9ec..1c8ac8e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6bdc=['remove','update','emit','register','length','userVoiceQueueRt:','./userVoiceQueueRt.events','save'];(function(_0x1cd674,_0x8d3638){var _0x27928f=function(_0x5e3c70){while(--_0x5e3c70){_0x1cd674['push'](_0x1cd674['shift']());}};_0x27928f(++_0x8d3638);}(_0x6bdc,0x14e));var _0xc6bd=function(_0x207b93,_0x28e22c){_0x207b93=_0x207b93-0x0;var _0x4dda36=_0x6bdc[_0x207b93];return _0x4dda36;};'use strict';var UserVoiceQueueRtEvents=require(_0xc6bd('0x0'));var events=[_0xc6bd('0x1'),_0xc6bd('0x2'),_0xc6bd('0x3')];function createListener(_0x43d0b2,_0x433998){return function(_0x2c9f68){_0x433998[_0xc6bd('0x4')](_0x43d0b2,_0x2c9f68);};}function removeListener(_0x1bb923,_0xd0f13){return function(){UserVoiceQueueRtEvents['removeListener'](_0x1bb923,_0xd0f13);};}exports[_0xc6bd('0x5')]=function(_0x26218a){for(var _0x158271=0x0,_0x3f5327=events[_0xc6bd('0x6')];_0x158271<_0x3f5327;_0x158271++){var _0x8bd379=events[_0x158271];var _0x5ca385=createListener(_0xc6bd('0x7')+_0x8bd379,_0x26218a);UserVoiceQueueRtEvents['on'](_0x8bd379,_0x5ca385);}};
\ No newline at end of file
+var _0xcd59=['remove','update','emit','removeListener','register','length','userVoiceQueueRt:','./userVoiceQueueRt.events','save'];(function(_0x568d3a,_0x46e0f8){var _0x1ebd22=function(_0x29287a){while(--_0x29287a){_0x568d3a['push'](_0x568d3a['shift']());}};_0x1ebd22(++_0x46e0f8);}(_0xcd59,0x14b));var _0x9cd5=function(_0x5c8811,_0x4f77d5){_0x5c8811=_0x5c8811-0x0;var _0x2c0941=_0xcd59[_0x5c8811];return _0x2c0941;};'use strict';var UserVoiceQueueRtEvents=require(_0x9cd5('0x0'));var events=[_0x9cd5('0x1'),_0x9cd5('0x2'),_0x9cd5('0x3')];function createListener(_0x271070,_0x302b21){return function(_0x4b93b9){_0x302b21[_0x9cd5('0x4')](_0x271070,_0x4b93b9);};}function removeListener(_0x191236,_0xf96efa){return function(){UserVoiceQueueRtEvents[_0x9cd5('0x5')](_0x191236,_0xf96efa);};}exports[_0x9cd5('0x6')]=function(_0x2db192){for(var _0x46277c=0x0,_0x2cd19a=events[_0x9cd5('0x7')];_0x46277c<_0x2cd19a;_0x46277c++){var _0x3f888f=events[_0x46277c];var _0x545407=createListener(_0x9cd5('0x8')+_0x3f888f,_0x2db192);UserVoiceQueueRtEvents['on'](_0x3f888f,_0x545407);}};
\ No newline at end of file
index 5997ddd..99ff055 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(_0x49c756,_0x37f990){var _0x15fc63=function(_0x563ca0){while(--_0x563ca0){_0x49c756['push'](_0x49c756['shift']());}};_0x15fc63(++_0x37f990);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2bf141,_0x31eac7){_0x2bf141=_0x2bf141-0x0;var _0x48277b=_0xa9e0[_0x2bf141];return _0x48277b;};'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 _0x70e0=['../../components/auth/service','../../components/interaction/service','exports','multer','util','path','Router','fs-extra'];(function(_0x3cb4c6,_0x4c549c){var _0x5a9034=function(_0xfdca1b){while(--_0xfdca1b){_0x3cb4c6['push'](_0x3cb4c6['shift']());}};_0x5a9034(++_0x4c549c);}(_0x70e0,0x17b));var _0x070e=function(_0x3a642c,_0x17109c){_0x3a642c=_0x3a642c-0x0;var _0x1fcea4=_0x70e0[_0x3a642c];return _0x1fcea4;};'use strict';var multer=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var path=require(_0x070e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x070e('0x3')]();var fs_extra=require(_0x070e('0x4'));var auth=require(_0x070e('0x5'));var interaction=require(_0x070e('0x6'));var config=require('../../config/environment');module[_0x070e('0x7')]=router;
\ No newline at end of file
index a3ee274..6724563 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1af1=['exports','sequelize'];(function(_0x31c6ca,_0x5b37b3){var _0x1b5088=function(_0x3c840b){while(--_0x3c840b){_0x31c6ca['push'](_0x31c6ca['shift']());}};_0x1b5088(++_0x5b37b3);}(_0x1af1,0x1e9));var _0x11af=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1af1[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x11af('0x0'));module[_0x11af('0x1')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x0d0b=['exports'];(function(_0x5b9b45,_0x457eb3){var _0x3bdb18=function(_0x2534f7){while(--_0x2534f7){_0x5b9b45['push'](_0x5b9b45['shift']());}};_0x3bdb18(++_0x457eb3);}(_0x0d0b,0x1ef));var _0xb0d0=function(_0x247d00,_0x1f6fa9){_0x247d00=_0x247d00-0x0;var _0x5c2b70=_0x0d0b[_0x247d00];return _0x5c2b70;};'use strict';var Sequelize=require('sequelize');module[_0xb0d0('0x0')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index a0d322c..b717ed8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f19=['rimraf','../../config/environment','exports','define','UserWhatsappQueue','user_has_whatsapp_queues','lodash','util','../../config/logger','moment','bluebird','path'];(function(_0x15c87d,_0x2863cc){var _0x3d3acf=function(_0x597c07){while(--_0x597c07){_0x15c87d['push'](_0x15c87d['shift']());}};_0x3d3acf(++_0x2863cc);}(_0x1f19,0xa2));var _0x91f1=function(_0x79e8a8,_0xf0ee3c){_0x79e8a8=_0x79e8a8-0x0;var _0x1ec168=_0x1f19[_0x79e8a8];return _0x1ec168;};'use strict';var _=require(_0x91f1('0x0'));var util=require(_0x91f1('0x1'));var logger=require(_0x91f1('0x2'))('api');var moment=require(_0x91f1('0x3'));var BPromise=require(_0x91f1('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x91f1('0x5'));var rimraf=require(_0x91f1('0x6'));var config=require(_0x91f1('0x7'));var attributes=require('./userWhatsappQueue.attributes');module[_0x91f1('0x8')]=function(_0x5830ef,_0x1f0ddc){return _0x5830ef[_0x91f1('0x9')](_0x91f1('0xa'),attributes,{'tableName':_0x91f1('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x02b5=['moment','bluebird','request-promise','path','./userWhatsappQueue.attributes','exports','define','UserWhatsappQueue','lodash','util'];(function(_0x4e6eb2,_0x16a451){var _0x4e0c1c=function(_0x59f144){while(--_0x59f144){_0x4e6eb2['push'](_0x4e6eb2['shift']());}};_0x4e0c1c(++_0x16a451);}(_0x02b5,0x1b6));var _0x502b=function(_0x21d197,_0x5b8725){_0x21d197=_0x21d197-0x0;var _0x412918=_0x02b5[_0x21d197];return _0x412918;};'use strict';var _=require(_0x502b('0x0'));var util=require(_0x502b('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x502b('0x2'));var BPromise=require(_0x502b('0x3'));var rp=require(_0x502b('0x4'));var fs=require('fs');var path=require(_0x502b('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x502b('0x6'));module[_0x502b('0x7')]=function(_0x5347b,_0x3e0858){return _0x5347b[_0x502b('0x8')](_0x502b('0x9'),attributes,{'tableName':'user_has_whatsapp_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 78f53b9..e04a0cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x91c5=['debug','stringify','error','code','message','result','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','request','then','info','UserWhatsappQueue,\x20%s,\x20%s','request\x20sent'];(function(_0xa238a5,_0x4b211f){var _0x75ed48=function(_0x58f0c7){while(--_0x58f0c7){_0xa238a5['push'](_0xa238a5['shift']());}};_0x75ed48(++_0x4b211f);}(_0x91c5,0x1d4));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(_0x591c('0x4'));var db=require(_0x591c('0x5'))['db'];var utils=require(_0x591c('0x6'));var logger=require(_0x591c('0x7'))(_0x591c('0x8'));var config=require('../../config/environment');var jayson=require(_0x591c('0x9'));var client=jayson['client'][_0x591c('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4a5108,_0x58c8f7,_0x31c436){return new BPromise(function(_0x40849f,_0xbf1bc6){return client[_0x591c('0xb')](_0x4a5108,_0x31c436)[_0x591c('0xc')](function(_0x1775d1){logger[_0x591c('0xd')](_0x591c('0xe'),_0x58c8f7,_0x591c('0xf'));logger[_0x591c('0x10')]('UserWhatsappQueue,\x20%s,\x20%s,\x20%s',_0x58c8f7,_0x591c('0xf'),JSON[_0x591c('0x11')](_0x1775d1));if(_0x1775d1[_0x591c('0x12')]){if(_0x1775d1[_0x591c('0x12')][_0x591c('0x13')]===0x1f4){logger[_0x591c('0x12')]('UserWhatsappQueue,\x20%s,\x20%s',_0x58c8f7,_0x1775d1[_0x591c('0x12')][_0x591c('0x14')]);return _0xbf1bc6(_0x1775d1[_0x591c('0x12')][_0x591c('0x14')]);}logger[_0x591c('0x12')](_0x591c('0xe'),_0x58c8f7,_0x1775d1['error'][_0x591c('0x14')]);return _0x40849f(_0x1775d1[_0x591c('0x12')]['message']);}else{logger[_0x591c('0xd')](_0x591c('0xe'),_0x58c8f7,_0x591c('0xf'));_0x40849f(_0x1775d1[_0x591c('0x15')]['message']);}})['catch'](function(_0x25fca0){logger[_0x591c('0x12')](_0x591c('0xe'),_0x58c8f7,_0x25fca0);_0xbf1bc6(_0x25fca0);});});}
\ No newline at end of file
+var _0xacae=['then','UserWhatsappQueue,\x20%s,\x20%s','UserWhatsappQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','info','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/environment','client','http','request'];(function(_0x1945a3,_0x1e2512){var _0x2ab3a2=function(_0x307d23){while(--_0x307d23){_0x1945a3['push'](_0x1945a3['shift']());}};_0x2ab3a2(++_0x1e2512);}(_0xacae,0xb2));var _0xeaca=function(_0x593131,_0x27a064){_0x593131=_0x593131-0x0;var _0x421f43=_0xacae[_0x593131];return _0x421f43;};'use strict';var _=require(_0xeaca('0x0'));var util=require(_0xeaca('0x1'));var moment=require(_0xeaca('0x2'));var BPromise=require(_0xeaca('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xeaca('0x4'));var db=require(_0xeaca('0x5'))['db'];var utils=require(_0xeaca('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0xeaca('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xeaca('0x8')][_0xeaca('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x44d503,_0x33fceb,_0x35869d){return new BPromise(function(_0x10649a,_0x3e5eb0){return client[_0xeaca('0xa')](_0x44d503,_0x35869d)[_0xeaca('0xb')](function(_0x1547ea){logger['info'](_0xeaca('0xc'),_0x33fceb,'request\x20sent');logger['debug'](_0xeaca('0xd'),_0x33fceb,_0xeaca('0xe'),JSON[_0xeaca('0xf')](_0x1547ea));if(_0x1547ea[_0xeaca('0x10')]){if(_0x1547ea[_0xeaca('0x10')]['code']===0x1f4){logger[_0xeaca('0x10')](_0xeaca('0xc'),_0x33fceb,_0x1547ea[_0xeaca('0x10')][_0xeaca('0x11')]);return _0x3e5eb0(_0x1547ea[_0xeaca('0x10')][_0xeaca('0x11')]);}logger[_0xeaca('0x10')](_0xeaca('0xc'),_0x33fceb,_0x1547ea[_0xeaca('0x10')]['message']);return _0x10649a(_0x1547ea['error'][_0xeaca('0x11')]);}else{logger[_0xeaca('0x12')]('UserWhatsappQueue,\x20%s,\x20%s',_0x33fceb,_0xeaca('0xe'));_0x10649a(_0x1547ea[_0xeaca('0x13')][_0xeaca('0x11')]);}})[_0xeaca('0x14')](function(_0x452d30){logger['error']('UserWhatsappQueue,\x20%s,\x20%s',_0x33fceb,_0x452d30);_0x3e5eb0(_0x452d30);});});}
\ No newline at end of file
index 5f586b0..27ade14 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d64=['multer','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./variable.controller','get','isAuthenticated','index','/:id','show','post','update','delete','exports'];(function(_0x4038cc,_0x250d96){var _0x51776b=function(_0xaec93d){while(--_0xaec93d){_0x4038cc['push'](_0x4038cc['shift']());}};_0x51776b(++_0x250d96);}(_0x0d64,0x77));var _0x40d6=function(_0x33448a,_0x184f78){_0x33448a=_0x33448a-0x0;var _0x4ece1d=_0x0d64[_0x33448a];return _0x4ece1d;};'use strict';var multer=require(_0x40d6('0x0'));var util=require('util');var path=require(_0x40d6('0x1'));var timeout=require(_0x40d6('0x2'));var express=require('express');var router=express[_0x40d6('0x3')]();var fs_extra=require(_0x40d6('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x40d6('0x5'));var config=require(_0x40d6('0x6'));var controller=require(_0x40d6('0x7'));router[_0x40d6('0x8')]('/',auth[_0x40d6('0x9')](),controller[_0x40d6('0xa')]);router[_0x40d6('0x8')](_0x40d6('0xb'),auth[_0x40d6('0x9')](),controller[_0x40d6('0xc')]);router[_0x40d6('0xd')]('/',auth[_0x40d6('0x9')](),controller['create']);router['put'](_0x40d6('0xb'),auth['isAuthenticated'](),controller[_0x40d6('0xe')]);router[_0x40d6('0xf')]('/:id',auth[_0x40d6('0x9')](),controller['destroy']);module[_0x40d6('0x10')]=router;
\ No newline at end of file
+var _0x581a=['fs-extra','../../components/auth/service','./variable.controller','isAuthenticated','index','get','/:id','show','post','create','put','update','delete','destroy','exports','multer','util','connect-timeout','express','Router'];(function(_0x469e5b,_0x559328){var _0x20b7f2=function(_0x3efe4f){while(--_0x3efe4f){_0x469e5b['push'](_0x469e5b['shift']());}};_0x20b7f2(++_0x559328);}(_0x581a,0x127));var _0xa581=function(_0x1f0ff6,_0x5da5d0){_0x1f0ff6=_0x1f0ff6-0x0;var _0x12cda9=_0x581a[_0x1f0ff6];return _0x12cda9;};'use strict';var multer=require(_0xa581('0x0'));var util=require(_0xa581('0x1'));var path=require('path');var timeout=require(_0xa581('0x2'));var express=require(_0xa581('0x3'));var router=express[_0xa581('0x4')]();var fs_extra=require(_0xa581('0x5'));var auth=require(_0xa581('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xa581('0x7'));router['get']('/',auth[_0xa581('0x8')](),controller[_0xa581('0x9')]);router[_0xa581('0xa')](_0xa581('0xb'),auth[_0xa581('0x8')](),controller[_0xa581('0xc')]);router[_0xa581('0xd')]('/',auth[_0xa581('0x8')](),controller[_0xa581('0xe')]);router[_0xa581('0xf')](_0xa581('0xb'),auth['isAuthenticated'](),controller[_0xa581('0x10')]);router[_0xa581('0x11')](_0xa581('0xb'),auth[_0xa581('0x8')](),controller[_0xa581('0x12')]);module[_0xa581('0x13')]=router;
\ No newline at end of file
index e8ccc14..3b38e20 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b99=['exports','STRING','sequelize'];(function(_0x3ea44b,_0x2fcd82){var _0x3bafa9=function(_0x5db98f){while(--_0x5db98f){_0x3ea44b['push'](_0x3ea44b['shift']());}};_0x3bafa9(++_0x2fcd82);}(_0x1b99,0x17c));var _0x91b9=function(_0x68ee8b,_0x3cc6c5){_0x68ee8b=_0x68ee8b-0x0;var _0x5148f7=_0x1b99[_0x68ee8b];return _0x5148f7;};'use strict';var Sequelize=require(_0x91b9('0x0'));module[_0x91b9('0x1')]={'name':{'type':Sequelize[_0x91b9('0x2')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x91b9('0x2')]}};
\ No newline at end of file
+var _0xbfb8=['sequelize','exports','STRING','name'];(function(_0x40597a,_0x30410d){var _0x423296=function(_0x116441){while(--_0x116441){_0x40597a['push'](_0x40597a['shift']());}};_0x423296(++_0x30410d);}(_0xbfb8,0x194));var _0x8bfb=function(_0x31061f,_0x7d94bf){_0x31061f=_0x31061f-0x0;var _0x2ceebe=_0xbfb8[_0x31061f];return _0x2ceebe;};'use strict';var Sequelize=require(_0x8bfb('0x0'));module[_0x8bfb('0x1')]={'name':{'type':Sequelize[_0x8bfb('0x2')],'unique':_0x8bfb('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x8bfb('0x2')]}};
\ No newline at end of file
index 45dbd6b..414be06 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x975b=['limit','set','Content-Range','json','apply','reject','save','update','then','Variables','destroy','end','error','stack','name','send','index','Variable','key','model','map','query','filters','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','type','options','includeAll','include','findAll','rows','catch','show','params','keys','rawAttributes','intersection','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','count'];(function(_0x4fbc20,_0x33bbc4){var _0x419740=function(_0x2a692a){while(--_0x2a692a){_0x4fbc20['push'](_0x4fbc20['shift']());}};_0x419740(++_0x33bbc4);}(_0x975b,0x182));var _0xb975=function(_0x52a6c8,_0x244ed1){_0x52a6c8=_0x52a6c8-0x0;var _0x3c4dec=_0x975b[_0x52a6c8];return _0x3c4dec;};'use strict';var emlformat=require(_0xb975('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xb975('0x1'));var moment=require(_0xb975('0x2'));var BPromise=require(_0xb975('0x3'));var Mustache=require('mustache');var util=require(_0xb975('0x4'));var path=require(_0xb975('0x5'));var sox=require(_0xb975('0x6'));var csv=require(_0xb975('0x7'));var ejs=require(_0xb975('0x8'));var fs=require('fs');var fs_extra=require(_0xb975('0x9'));var _=require(_0xb975('0xa'));var squel=require(_0xb975('0xb'));var crypto=require(_0xb975('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xb975('0xd'));var toCsv=require(_0xb975('0x7'));var querystring=require(_0xb975('0xe'));var Papa=require(_0xb975('0xf'));var Redis=require(_0xb975('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xb975('0x11'));var as=require(_0xb975('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xb975('0x13'))(_0xb975('0x14'));var utils=require('../../config/utils');var config=require(_0xb975('0x15'));var licenseUtil=require(_0xb975('0x16'));var db=require(_0xb975('0x17'))['db'];function respondWithStatusCode(_0x2de706,_0x3bdc9c){_0x3bdc9c=_0x3bdc9c||0xcc;return function(_0x39db54){if(_0x39db54){return _0x2de706[_0xb975('0x18')](_0x3bdc9c);}return _0x2de706[_0xb975('0x19')](_0x3bdc9c)['end']();};}function respondWithResult(_0xf9c41,_0x1cac9c){_0x1cac9c=_0x1cac9c||0xc8;return function(_0xdee1e3){if(_0xdee1e3){return _0xf9c41[_0xb975('0x19')](_0x1cac9c)['json'](_0xdee1e3);}};}function respondWithFilteredResult(_0x23eade,_0x39b57e){return function(_0x3580a3){if(_0x3580a3){var _0x2dc703=typeof _0x39b57e[_0xb975('0x1a')]===_0xb975('0x1b')&&typeof _0x39b57e['limit']==='undefined';var _0x7e0fe2=_0x3580a3[_0xb975('0x1c')];var _0x1e3c40=_0x2dc703?0x0:_0x39b57e[_0xb975('0x1a')];var _0x1a0b43=_0x2dc703?_0x3580a3[_0xb975('0x1c')]:_0x39b57e['offset']+_0x39b57e[_0xb975('0x1d')];var _0x2f5c28;if(_0x1a0b43>=_0x7e0fe2){_0x1a0b43=_0x7e0fe2;_0x2f5c28=0xc8;}else{_0x2f5c28=0xce;}_0x23eade[_0xb975('0x19')](_0x2f5c28);return _0x23eade[_0xb975('0x1e')](_0xb975('0x1f'),_0x1e3c40+'-'+_0x1a0b43+'/'+_0x7e0fe2)[_0xb975('0x20')](_0x3580a3);}return null;};}function patchUpdates(_0x55a39c){return function(_0x37a9b2){try{jsonpatch[_0xb975('0x21')](_0x37a9b2,_0x55a39c,!![]);}catch(_0x556868){return BPromise[_0xb975('0x22')](_0x556868);}return _0x37a9b2[_0xb975('0x23')]();};}function saveUpdates(_0x33605e,_0x2460fd){return function(_0xc5c073){if(_0xc5c073){return _0xc5c073[_0xb975('0x24')](_0x33605e)['then'](function(_0x3ce8da){return _0x3ce8da;});}return null;};}function removeEntity(_0x9c339,_0x39aff0){return function(_0x4b674f){if(_0x4b674f){return _0x4b674f['destroy']()[_0xb975('0x25')](function(){var _0x1135e0=_0x4b674f['get']({'plain':!![]});var _0x2c874a=_0xb975('0x26');return db['UserProfileResource'][_0xb975('0x27')]({'where':{'type':_0x2c874a,'resourceId':_0x1135e0['id']}})[_0xb975('0x25')](function(){return _0x4b674f;});})['then'](function(){_0x9c339[_0xb975('0x19')](0xcc)[_0xb975('0x28')]();});}};}function handleEntityNotFound(_0xc51999,_0x220cbd){return function(_0x5d1a9e){if(!_0x5d1a9e){_0xc51999[_0xb975('0x18')](0x194);}return _0x5d1a9e;};}function handleError(_0x14bfaa,_0x2b8ff0){_0x2b8ff0=_0x2b8ff0||0x1f4;return function(_0x1789ce){logger[_0xb975('0x29')](_0x1789ce[_0xb975('0x2a')]);if(_0x1789ce[_0xb975('0x2b')]){delete _0x1789ce[_0xb975('0x2b')];}_0x14bfaa[_0xb975('0x19')](_0x2b8ff0)[_0xb975('0x2c')](_0x1789ce);};}exports[_0xb975('0x2d')]=function(_0x2ed8dd,_0xbbcdf6){var _0x2926ec={},_0xada85a={},_0x1e7f7e={'count':0x0,'rows':[]};var _0xef86e4=_['map'](db[_0xb975('0x2e')]['rawAttributes'],function(_0x491bde){return{'name':_0x491bde['fieldName'],'type':_0x491bde['type'][_0xb975('0x2f')]};});_0xada85a[_0xb975('0x30')]=_[_0xb975('0x31')](_0xef86e4,_0xb975('0x2b'));_0xada85a[_0xb975('0x32')]=_['keys'](_0x2ed8dd[_0xb975('0x32')]);_0xada85a[_0xb975('0x33')]=_['intersection'](_0xada85a[_0xb975('0x30')],_0xada85a[_0xb975('0x32')]);_0x2926ec[_0xb975('0x34')]=_['intersection'](_0xada85a[_0xb975('0x30')],qs[_0xb975('0x35')](_0x2ed8dd[_0xb975('0x32')]['fields']));_0x2926ec[_0xb975('0x34')]=_0x2926ec['attributes'][_0xb975('0x36')]?_0x2926ec['attributes']:_0xada85a[_0xb975('0x30')];if(!_0x2ed8dd[_0xb975('0x32')][_0xb975('0x37')](_0xb975('0x38'))){_0x2926ec['limit']=qs[_0xb975('0x1d')](_0x2ed8dd[_0xb975('0x32')][_0xb975('0x1d')]);_0x2926ec['offset']=qs[_0xb975('0x1a')](_0x2ed8dd[_0xb975('0x32')][_0xb975('0x1a')]);}_0x2926ec[_0xb975('0x39')]=qs[_0xb975('0x3a')](_0x2ed8dd[_0xb975('0x32')][_0xb975('0x3a')]);_0x2926ec[_0xb975('0x3b')]=qs[_0xb975('0x33')](_['pick'](_0x2ed8dd[_0xb975('0x32')],_0xada85a[_0xb975('0x33')]),_0xef86e4);if(_0x2ed8dd[_0xb975('0x32')][_0xb975('0x3c')]){_0x2926ec[_0xb975('0x3b')]=_[_0xb975('0x3d')](_0x2926ec[_0xb975('0x3b')],{'$or':_[_0xb975('0x31')](_0xef86e4,function(_0x48b9d1){if(_0x48b9d1[_0xb975('0x3e')]!=='VIRTUAL'){var _0x147d5e={};_0x147d5e[_0x48b9d1[_0xb975('0x2b')]]={'$like':'%'+_0x2ed8dd[_0xb975('0x32')][_0xb975('0x3c')]+'%'};return _0x147d5e;}})});}_0x2926ec=_[_0xb975('0x3d')]({},_0x2926ec,_0x2ed8dd[_0xb975('0x3f')]);var _0x438296={'where':_0x2926ec[_0xb975('0x3b')]};return db[_0xb975('0x2e')][_0xb975('0x1c')](_0x438296)[_0xb975('0x25')](function(_0x16a1fc){_0x1e7f7e[_0xb975('0x1c')]=_0x16a1fc;if(_0x2ed8dd[_0xb975('0x32')][_0xb975('0x40')]){_0x2926ec[_0xb975('0x41')]=[{'all':!![]}];}return db[_0xb975('0x2e')][_0xb975('0x42')](_0x2926ec);})['then'](function(_0x56a8af){_0x1e7f7e[_0xb975('0x43')]=_0x56a8af;return _0x1e7f7e;})[_0xb975('0x25')](respondWithFilteredResult(_0xbbcdf6,_0x2926ec))[_0xb975('0x44')](handleError(_0xbbcdf6,null));};exports[_0xb975('0x45')]=function(_0x14969b,_0x492955){var _0x31c3c3={'raw':!![],'where':{'id':_0x14969b[_0xb975('0x46')]['id']}},_0x15aacf={};_0x15aacf[_0xb975('0x30')]=_[_0xb975('0x47')](db[_0xb975('0x2e')][_0xb975('0x48')]);_0x15aacf[_0xb975('0x32')]=_[_0xb975('0x47')](_0x14969b[_0xb975('0x32')]);_0x15aacf['filters']=_[_0xb975('0x49')](_0x15aacf['model'],_0x15aacf['query']);_0x31c3c3['attributes']=_[_0xb975('0x49')](_0x15aacf[_0xb975('0x30')],qs[_0xb975('0x35')](_0x14969b[_0xb975('0x32')][_0xb975('0x35')]));_0x31c3c3[_0xb975('0x34')]=_0x31c3c3[_0xb975('0x34')][_0xb975('0x36')]?_0x31c3c3['attributes']:_0x15aacf[_0xb975('0x30')];if(_0x14969b[_0xb975('0x32')][_0xb975('0x40')]){_0x31c3c3[_0xb975('0x41')]=[{'all':!![]}];}_0x31c3c3=_[_0xb975('0x3d')]({},_0x31c3c3,_0x14969b[_0xb975('0x3f')]);return db[_0xb975('0x2e')][_0xb975('0x4a')](_0x31c3c3)[_0xb975('0x25')](handleEntityNotFound(_0x492955,null))[_0xb975('0x25')](respondWithResult(_0x492955,null))[_0xb975('0x44')](handleError(_0x492955,null));};exports[_0xb975('0x4b')]=function(_0x5b47ff,_0xd4186a){return db[_0xb975('0x2e')]['create'](_0x5b47ff[_0xb975('0x4c')],{})[_0xb975('0x25')](function(_0x2f3268){var _0x6027ba=_0x5b47ff['user']['get']({'plain':!![]});if(!_0x6027ba)throw new Error(_0xb975('0x4d'));if(_0x6027ba['role']===_0xb975('0x4e')){var _0x48b3f9=_0x2f3268['get']({'plain':!![]});var _0x345753=_0xb975('0x26');return db[_0xb975('0x4f')][_0xb975('0x4a')]({'where':{'name':_0x345753,'userProfileId':_0x6027ba[_0xb975('0x50')]},'raw':!![]})[_0xb975('0x25')](function(_0x3cd2e1){if(_0x3cd2e1&&_0x3cd2e1[_0xb975('0x51')]===0x0){return db['UserProfileResource'][_0xb975('0x4b')]({'name':_0x48b3f9[_0xb975('0x2b')],'resourceId':_0x48b3f9['id'],'type':_0x3cd2e1[_0xb975('0x2b')],'sectionId':_0x3cd2e1['id']},{})[_0xb975('0x25')](function(){return _0x2f3268;});}else{return _0x2f3268;}})[_0xb975('0x44')](function(_0xfd2587){logger['error'](_0xb975('0x52'),_0xfd2587);throw _0xfd2587;});}return _0x2f3268;})[_0xb975('0x25')](respondWithResult(_0xd4186a,0xc9))[_0xb975('0x44')](handleError(_0xd4186a,null));};exports['update']=function(_0x1f0063,_0x27dd22){if(_0x1f0063[_0xb975('0x4c')]['id']){delete _0x1f0063[_0xb975('0x4c')]['id'];}return db[_0xb975('0x2e')][_0xb975('0x4a')]({'where':{'id':_0x1f0063[_0xb975('0x46')]['id']}})[_0xb975('0x25')](handleEntityNotFound(_0x27dd22,null))[_0xb975('0x25')](saveUpdates(_0x1f0063['body'],null))[_0xb975('0x25')](respondWithResult(_0x27dd22,null))['catch'](handleError(_0x27dd22,null));};exports[_0xb975('0x27')]=function(_0x5eb030,_0x2e7d01){return db['Variable']['find']({'where':{'id':_0x5eb030[_0xb975('0x46')]['id']}})[_0xb975('0x25')](handleEntityNotFound(_0x2e7d01,null))[_0xb975('0x25')](removeEntity(_0x2e7d01,null))['catch'](handleError(_0x2e7d01,null));};
\ No newline at end of file
+var _0x45df=['nolimit','limit','order','sort','where','pick','filter','VIRTUAL','merge','Variable','include','findAll','rows','catch','show','params','rawAttributes','fields','includeAll','options','find','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','ejs','fs-extra','lodash','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','apply','reject','save','update','then','get','Variables','UserProfileResource','error','stack','name','send','index','map','fieldName','type','key','model','query','keys','filters','attributes','intersection','hasOwnProperty'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x45df,0xcc));var _0xf45d=function(_0x38d97a,_0x39b4cf){_0x38d97a=_0x38d97a-0x0;var _0x5454d3=_0x45df[_0x38d97a];return _0x5454d3;};'use strict';var emlformat=require(_0xf45d('0x0'));var rimraf=require(_0xf45d('0x1'));var zipdir=require(_0xf45d('0x2'));var jsonpatch=require(_0xf45d('0x3'));var rp=require(_0xf45d('0x4'));var moment=require(_0xf45d('0x5'));var BPromise=require(_0xf45d('0x6'));var Mustache=require(_0xf45d('0x7'));var util=require(_0xf45d('0x8'));var path=require('path');var sox=require(_0xf45d('0x9'));var csv=require('to-csv');var ejs=require(_0xf45d('0xa'));var fs=require('fs');var fs_extra=require(_0xf45d('0xb'));var _=require(_0xf45d('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xf45d('0xd'));var toCsv=require('to-csv');var querystring=require(_0xf45d('0xe'));var Papa=require(_0xf45d('0xf'));var Redis=require(_0xf45d('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xf45d('0x11'));var hardwareService=require(_0xf45d('0x12'));var logger=require(_0xf45d('0x13'))(_0xf45d('0x14'));var utils=require(_0xf45d('0x15'));var config=require(_0xf45d('0x16'));var licenseUtil=require(_0xf45d('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x52aa11,_0x336dd2){_0x336dd2=_0x336dd2||0xcc;return function(_0x22945c){if(_0x22945c){return _0x52aa11[_0xf45d('0x18')](_0x336dd2);}return _0x52aa11[_0xf45d('0x19')](_0x336dd2)[_0xf45d('0x1a')]();};}function respondWithResult(_0x423cc4,_0x1a4a2d){_0x1a4a2d=_0x1a4a2d||0xc8;return function(_0x3eef2b){if(_0x3eef2b){return _0x423cc4[_0xf45d('0x19')](_0x1a4a2d)[_0xf45d('0x1b')](_0x3eef2b);}};}function respondWithFilteredResult(_0x11ecca,_0x306266){return function(_0x15e9e2){if(_0x15e9e2){var _0x316fe7=typeof _0x306266[_0xf45d('0x1c')]==='undefined'&&typeof _0x306266['limit']===_0xf45d('0x1d');var _0x343202=_0x15e9e2['count'];var _0x4ecd31=_0x316fe7?0x0:_0x306266[_0xf45d('0x1c')];var _0x3b0820=_0x316fe7?_0x15e9e2[_0xf45d('0x1e')]:_0x306266['offset']+_0x306266['limit'];var _0x1e87e8;if(_0x3b0820>=_0x343202){_0x3b0820=_0x343202;_0x1e87e8=0xc8;}else{_0x1e87e8=0xce;}_0x11ecca[_0xf45d('0x19')](_0x1e87e8);return _0x11ecca[_0xf45d('0x1f')](_0xf45d('0x20'),_0x4ecd31+'-'+_0x3b0820+'/'+_0x343202)[_0xf45d('0x1b')](_0x15e9e2);}return null;};}function patchUpdates(_0x2560ae){return function(_0x49a39b){try{jsonpatch[_0xf45d('0x21')](_0x49a39b,_0x2560ae,!![]);}catch(_0x3736eb){return BPromise[_0xf45d('0x22')](_0x3736eb);}return _0x49a39b[_0xf45d('0x23')]();};}function saveUpdates(_0x2ecbe4,_0x26e6c9){return function(_0x7d29e2){if(_0x7d29e2){return _0x7d29e2[_0xf45d('0x24')](_0x2ecbe4)[_0xf45d('0x25')](function(_0x2ef7c1){return _0x2ef7c1;});}return null;};}function removeEntity(_0x26e369,_0x55abb1){return function(_0x4907de){if(_0x4907de){return _0x4907de['destroy']()[_0xf45d('0x25')](function(){var _0x3e9b20=_0x4907de[_0xf45d('0x26')]({'plain':!![]});var _0x520cf9=_0xf45d('0x27');return db[_0xf45d('0x28')]['destroy']({'where':{'type':_0x520cf9,'resourceId':_0x3e9b20['id']}})[_0xf45d('0x25')](function(){return _0x4907de;});})['then'](function(){_0x26e369[_0xf45d('0x19')](0xcc)[_0xf45d('0x1a')]();});}};}function handleEntityNotFound(_0x17da48,_0x1aed0c){return function(_0x55c35d){if(!_0x55c35d){_0x17da48[_0xf45d('0x18')](0x194);}return _0x55c35d;};}function handleError(_0x51e931,_0x563b0d){_0x563b0d=_0x563b0d||0x1f4;return function(_0x54efaf){logger[_0xf45d('0x29')](_0x54efaf[_0xf45d('0x2a')]);if(_0x54efaf[_0xf45d('0x2b')]){delete _0x54efaf[_0xf45d('0x2b')];}_0x51e931[_0xf45d('0x19')](_0x563b0d)[_0xf45d('0x2c')](_0x54efaf);};}exports[_0xf45d('0x2d')]=function(_0x390eb9,_0x2b93dd){var _0x18f79c={},_0x2b3bcb={},_0x595315={'count':0x0,'rows':[]};var _0x2a059e=_[_0xf45d('0x2e')](db['Variable']['rawAttributes'],function(_0x50ef18){return{'name':_0x50ef18[_0xf45d('0x2f')],'type':_0x50ef18[_0xf45d('0x30')][_0xf45d('0x31')]};});_0x2b3bcb[_0xf45d('0x32')]=_[_0xf45d('0x2e')](_0x2a059e,_0xf45d('0x2b'));_0x2b3bcb[_0xf45d('0x33')]=_[_0xf45d('0x34')](_0x390eb9[_0xf45d('0x33')]);_0x2b3bcb[_0xf45d('0x35')]=_['intersection'](_0x2b3bcb[_0xf45d('0x32')],_0x2b3bcb[_0xf45d('0x33')]);_0x18f79c[_0xf45d('0x36')]=_[_0xf45d('0x37')](_0x2b3bcb[_0xf45d('0x32')],qs['fields'](_0x390eb9[_0xf45d('0x33')]['fields']));_0x18f79c[_0xf45d('0x36')]=_0x18f79c['attributes']['length']?_0x18f79c[_0xf45d('0x36')]:_0x2b3bcb[_0xf45d('0x32')];if(!_0x390eb9['query'][_0xf45d('0x38')](_0xf45d('0x39'))){_0x18f79c['limit']=qs[_0xf45d('0x3a')](_0x390eb9[_0xf45d('0x33')][_0xf45d('0x3a')]);_0x18f79c[_0xf45d('0x1c')]=qs['offset'](_0x390eb9[_0xf45d('0x33')][_0xf45d('0x1c')]);}_0x18f79c[_0xf45d('0x3b')]=qs['sort'](_0x390eb9['query'][_0xf45d('0x3c')]);_0x18f79c[_0xf45d('0x3d')]=qs['filters'](_[_0xf45d('0x3e')](_0x390eb9[_0xf45d('0x33')],_0x2b3bcb[_0xf45d('0x35')]),_0x2a059e);if(_0x390eb9['query'][_0xf45d('0x3f')]){_0x18f79c[_0xf45d('0x3d')]=_['merge'](_0x18f79c[_0xf45d('0x3d')],{'$or':_['map'](_0x2a059e,function(_0x2f275b){if(_0x2f275b['type']!==_0xf45d('0x40')){var _0x7eec80={};_0x7eec80[_0x2f275b['name']]={'$like':'%'+_0x390eb9[_0xf45d('0x33')][_0xf45d('0x3f')]+'%'};return _0x7eec80;}})});}_0x18f79c=_[_0xf45d('0x41')]({},_0x18f79c,_0x390eb9['options']);var _0xfed6e2={'where':_0x18f79c[_0xf45d('0x3d')]};return db[_0xf45d('0x42')]['count'](_0xfed6e2)[_0xf45d('0x25')](function(_0x2e7667){_0x595315[_0xf45d('0x1e')]=_0x2e7667;if(_0x390eb9['query']['includeAll']){_0x18f79c[_0xf45d('0x43')]=[{'all':!![]}];}return db[_0xf45d('0x42')][_0xf45d('0x44')](_0x18f79c);})[_0xf45d('0x25')](function(_0x41ba59){_0x595315[_0xf45d('0x45')]=_0x41ba59;return _0x595315;})[_0xf45d('0x25')](respondWithFilteredResult(_0x2b93dd,_0x18f79c))[_0xf45d('0x46')](handleError(_0x2b93dd,null));};exports[_0xf45d('0x47')]=function(_0x14c449,_0x490bef){var _0x216c65={'raw':!![],'where':{'id':_0x14c449[_0xf45d('0x48')]['id']}},_0x2d2672={};_0x2d2672[_0xf45d('0x32')]=_[_0xf45d('0x34')](db[_0xf45d('0x42')][_0xf45d('0x49')]);_0x2d2672[_0xf45d('0x33')]=_[_0xf45d('0x34')](_0x14c449['query']);_0x2d2672[_0xf45d('0x35')]=_[_0xf45d('0x37')](_0x2d2672['model'],_0x2d2672[_0xf45d('0x33')]);_0x216c65[_0xf45d('0x36')]=_['intersection'](_0x2d2672[_0xf45d('0x32')],qs[_0xf45d('0x4a')](_0x14c449['query'][_0xf45d('0x4a')]));_0x216c65[_0xf45d('0x36')]=_0x216c65[_0xf45d('0x36')]['length']?_0x216c65['attributes']:_0x2d2672[_0xf45d('0x32')];if(_0x14c449[_0xf45d('0x33')][_0xf45d('0x4b')]){_0x216c65[_0xf45d('0x43')]=[{'all':!![]}];}_0x216c65=_[_0xf45d('0x41')]({},_0x216c65,_0x14c449[_0xf45d('0x4c')]);return db[_0xf45d('0x42')][_0xf45d('0x4d')](_0x216c65)['then'](handleEntityNotFound(_0x490bef,null))['then'](respondWithResult(_0x490bef,null))[_0xf45d('0x46')](handleError(_0x490bef,null));};exports['create']=function(_0x1acf74,_0x5bd58a){return db[_0xf45d('0x42')][_0xf45d('0x4e')](_0x1acf74['body'],{})[_0xf45d('0x25')](function(_0x51dba7){var _0x1e5608=_0x1acf74['user']['get']({'plain':!![]});if(!_0x1e5608)throw new Error(_0xf45d('0x4f'));if(_0x1e5608[_0xf45d('0x50')]===_0xf45d('0x51')){var _0x246e70=_0x51dba7['get']({'plain':!![]});var _0x5526f1='Variables';return db[_0xf45d('0x52')][_0xf45d('0x4d')]({'where':{'name':_0x5526f1,'userProfileId':_0x1e5608[_0xf45d('0x53')]},'raw':!![]})[_0xf45d('0x25')](function(_0x1e1f38){if(_0x1e1f38&&_0x1e1f38['autoAssociation']===0x0){return db['UserProfileResource']['create']({'name':_0x246e70[_0xf45d('0x2b')],'resourceId':_0x246e70['id'],'type':_0x1e1f38[_0xf45d('0x2b')],'sectionId':_0x1e1f38['id']},{})[_0xf45d('0x25')](function(){return _0x51dba7;});}else{return _0x51dba7;}})[_0xf45d('0x46')](function(_0x156f32){logger[_0xf45d('0x29')](_0xf45d('0x54'),_0x156f32);throw _0x156f32;});}return _0x51dba7;})[_0xf45d('0x25')](respondWithResult(_0x5bd58a,0xc9))[_0xf45d('0x46')](handleError(_0x5bd58a,null));};exports['update']=function(_0x18caf4,_0x1c4778){if(_0x18caf4[_0xf45d('0x55')]['id']){delete _0x18caf4[_0xf45d('0x55')]['id'];}return db['Variable'][_0xf45d('0x4d')]({'where':{'id':_0x18caf4['params']['id']}})[_0xf45d('0x25')](handleEntityNotFound(_0x1c4778,null))[_0xf45d('0x25')](saveUpdates(_0x18caf4['body'],null))[_0xf45d('0x25')](respondWithResult(_0x1c4778,null))['catch'](handleError(_0x1c4778,null));};exports[_0xf45d('0x56')]=function(_0x715983,_0x2c6f5e){return db[_0xf45d('0x42')][_0xf45d('0x4d')]({'where':{'id':_0x715983[_0xf45d('0x48')]['id']}})['then'](handleEntityNotFound(_0x2c6f5e,null))[_0xf45d('0x25')](removeEntity(_0x2c6f5e,null))['catch'](handleError(_0x2c6f5e,null));};
\ No newline at end of file
index a59b17f..1b0f1fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d0b=['request-promise','path','rimraf','./variable.attributes','define','Variable','tools_variables','lodash','../../config/logger','api','moment'];(function(_0x54d4a8,_0x585a59){var _0x3b321b=function(_0x245c6a){while(--_0x245c6a){_0x54d4a8['push'](_0x54d4a8['shift']());}};_0x3b321b(++_0x585a59);}(_0x5d0b,0x1ca));var _0xb5d0=function(_0x330cc5,_0x147150){_0x330cc5=_0x330cc5-0x0;var _0x5b3ad9=_0x5d0b[_0x330cc5];return _0x5b3ad9;};'use strict';var _=require(_0xb5d0('0x0'));var util=require('util');var logger=require(_0xb5d0('0x1'))(_0xb5d0('0x2'));var moment=require(_0xb5d0('0x3'));var BPromise=require('bluebird');var rp=require(_0xb5d0('0x4'));var fs=require('fs');var path=require(_0xb5d0('0x5'));var rimraf=require(_0xb5d0('0x6'));var config=require('../../config/environment');var attributes=require(_0xb5d0('0x7'));module['exports']=function(_0x135af6,_0x2e7641){return _0x135af6[_0xb5d0('0x8')](_0xb5d0('0x9'),attributes,{'tableName':_0xb5d0('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3cd6=['Variable','tools_variables','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./variable.attributes','exports'];(function(_0x44eaee,_0x556dfd){var _0x1356bc=function(_0x255e3f){while(--_0x255e3f){_0x44eaee['push'](_0x44eaee['shift']());}};_0x1356bc(++_0x556dfd);}(_0x3cd6,0x8e));var _0x63cd=function(_0x1ff702,_0xd6eab0){_0x1ff702=_0x1ff702-0x0;var _0x6afbac=_0x3cd6[_0x1ff702];return _0x6afbac;};'use strict';var _=require(_0x63cd('0x0'));var util=require(_0x63cd('0x1'));var logger=require(_0x63cd('0x2'))(_0x63cd('0x3'));var moment=require(_0x63cd('0x4'));var BPromise=require(_0x63cd('0x5'));var rp=require(_0x63cd('0x6'));var fs=require('fs');var path=require(_0x63cd('0x7'));var rimraf=require(_0x63cd('0x8'));var config=require(_0x63cd('0x9'));var attributes=require(_0x63cd('0xa'));module[_0x63cd('0xb')]=function(_0x861466,_0x3bcd76){return _0x861466['define'](_0x63cd('0xc'),attributes,{'tableName':_0x63cd('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4474f91..f670e77 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ef6=['result','catch','Variable','find','options','raw','include','model','attributes','map','ShowVariable','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','request','then','info','Variable,\x20%s,\x20%s','request\x20sent','debug','Variable,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x39f097,_0x17116b){var _0x544f6a=function(_0x457caf){while(--_0x457caf){_0x39f097['push'](_0x39f097['shift']());}};_0x544f6a(++_0x17116b);}(_0x8ef6,0xf2));var _0x68ef=function(_0x4473b4,_0x3a320b){_0x4473b4=_0x4473b4-0x0;var _0x332982=_0x8ef6[_0x4473b4];return _0x332982;};'use strict';var _=require(_0x68ef('0x0'));var util=require(_0x68ef('0x1'));var moment=require(_0x68ef('0x2'));var BPromise=require(_0x68ef('0x3'));var rs=require(_0x68ef('0x4'));var fs=require('fs');var Redis=require(_0x68ef('0x5'));var db=require(_0x68ef('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x68ef('0x7'))(_0x68ef('0x8'));var config=require(_0x68ef('0x9'));var jayson=require(_0x68ef('0xa'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x3c2ff3,_0x4740e8,_0x2de776){return new BPromise(function(_0x4eb5eb,_0x228967){return client[_0x68ef('0xb')](_0x3c2ff3,_0x2de776)[_0x68ef('0xc')](function(_0x22ae26){logger[_0x68ef('0xd')](_0x68ef('0xe'),_0x4740e8,_0x68ef('0xf'));logger[_0x68ef('0x10')](_0x68ef('0x11'),_0x4740e8,_0x68ef('0xf'),JSON[_0x68ef('0x12')](_0x22ae26));if(_0x22ae26[_0x68ef('0x13')]){if(_0x22ae26['error'][_0x68ef('0x14')]===0x1f4){logger[_0x68ef('0x13')](_0x68ef('0xe'),_0x4740e8,_0x22ae26[_0x68ef('0x13')][_0x68ef('0x15')]);return _0x228967(_0x22ae26[_0x68ef('0x13')]['message']);}logger[_0x68ef('0x13')](_0x68ef('0xe'),_0x4740e8,_0x22ae26[_0x68ef('0x13')]['message']);return _0x4eb5eb(_0x22ae26[_0x68ef('0x13')][_0x68ef('0x15')]);}else{logger[_0x68ef('0xd')]('Variable,\x20%s,\x20%s',_0x4740e8,_0x68ef('0xf'));_0x4eb5eb(_0x22ae26[_0x68ef('0x16')][_0x68ef('0x15')]);}})[_0x68ef('0x17')](function(_0x5c4456){logger[_0x68ef('0x13')]('Variable,\x20%s,\x20%s',_0x4740e8,_0x5c4456);_0x228967(_0x5c4456);});});}exports['ShowVariable']=function(_0x2633c1){var _0x404870=this;return new Promise(function(_0x4ade0d,_0x527870){return db[_0x68ef('0x18')][_0x68ef('0x19')]({'raw':_0x2633c1[_0x68ef('0x1a')]?_0x2633c1['options'][_0x68ef('0x1b')]===undefined?!![]:![]:!![],'where':_0x2633c1[_0x68ef('0x1a')]?_0x2633c1[_0x68ef('0x1a')]['where']||null:null,'attributes':_0x2633c1[_0x68ef('0x1a')]?_0x2633c1[_0x68ef('0x1a')]['attributes']||null:null,'include':_0x2633c1[_0x68ef('0x1a')]?_0x2633c1[_0x68ef('0x1a')][_0x68ef('0x1c')]?_['map'](_0x2633c1['options']['include'],function(_0x26018d){return{'model':db[_0x26018d[_0x68ef('0x1d')]],'as':_0x26018d['as'],'attributes':_0x26018d[_0x68ef('0x1e')],'include':_0x26018d[_0x68ef('0x1c')]?_[_0x68ef('0x1f')](_0x26018d[_0x68ef('0x1c')],function(_0x258cd5){return{'model':db[_0x258cd5[_0x68ef('0x1d')]],'as':_0x258cd5['as'],'attributes':_0x258cd5[_0x68ef('0x1e')],'include':_0x258cd5[_0x68ef('0x1c')]?_['map'](_0x258cd5[_0x68ef('0x1c')],function(_0x57f9ee){return{'model':db[_0x57f9ee['model']],'as':_0x57f9ee['as'],'attributes':_0x57f9ee['attributes']};}):[]};}):[]};}):[]:[]})[_0x68ef('0xc')](function(_0x268f32){logger[_0x68ef('0xd')](_0x68ef('0x20'),_0x2633c1);logger['debug']('ShowVariable',_0x2633c1,JSON[_0x68ef('0x12')](_0x268f32));_0x4ade0d(_0x268f32);})[_0x68ef('0x17')](function(_0x7bf96){logger[_0x68ef('0x13')](_0x68ef('0x20'),_0x7bf96[_0x68ef('0x15')],_0x2633c1);_0x527870(_0x404870[_0x68ef('0x13')](0x1f4,_0x7bf96[_0x68ef('0x15')]));});});};
\ No newline at end of file
+var _0xabce=['moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','client','then','info','Variable,\x20%s,\x20%s','request\x20sent','debug','Variable,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','ShowVariable','Variable','find','options','attributes','map','include','model','catch','lodash','util'];(function(_0x403520,_0x287f0f){var _0x18f09d=function(_0x50b6cb){while(--_0x50b6cb){_0x403520['push'](_0x403520['shift']());}};_0x18f09d(++_0x287f0f);}(_0xabce,0x103));var _0xeabc=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0xabce[_0x5ddb1c];return _0x354adc;};'use strict';var _=require(_0xeabc('0x0'));var util=require(_0xeabc('0x1'));var moment=require(_0xeabc('0x2'));var BPromise=require(_0xeabc('0x3'));var rs=require(_0xeabc('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xeabc('0x5'));var logger=require(_0xeabc('0x6'))(_0xeabc('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xeabc('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x229ba4,_0x52ede8,_0x3bdc29){return new BPromise(function(_0x9417af,_0x8434c5){return client['request'](_0x229ba4,_0x3bdc29)[_0xeabc('0x9')](function(_0x341f16){logger[_0xeabc('0xa')](_0xeabc('0xb'),_0x52ede8,_0xeabc('0xc'));logger[_0xeabc('0xd')](_0xeabc('0xe'),_0x52ede8,_0xeabc('0xc'),JSON[_0xeabc('0xf')](_0x341f16));if(_0x341f16[_0xeabc('0x10')]){if(_0x341f16[_0xeabc('0x10')][_0xeabc('0x11')]===0x1f4){logger[_0xeabc('0x10')](_0xeabc('0xb'),_0x52ede8,_0x341f16[_0xeabc('0x10')][_0xeabc('0x12')]);return _0x8434c5(_0x341f16['error'][_0xeabc('0x12')]);}logger[_0xeabc('0x10')](_0xeabc('0xb'),_0x52ede8,_0x341f16['error']['message']);return _0x9417af(_0x341f16[_0xeabc('0x10')][_0xeabc('0x12')]);}else{logger[_0xeabc('0xa')]('Variable,\x20%s,\x20%s',_0x52ede8,_0xeabc('0xc'));_0x9417af(_0x341f16[_0xeabc('0x13')]['message']);}})['catch'](function(_0x10fa8e){logger['error'](_0xeabc('0xb'),_0x52ede8,_0x10fa8e);_0x8434c5(_0x10fa8e);});});}exports[_0xeabc('0x14')]=function(_0x58a3c0){var _0x16f08b=this;return new Promise(function(_0x31dd53,_0x31f52a){return db[_0xeabc('0x15')][_0xeabc('0x16')]({'raw':_0x58a3c0['options']?_0x58a3c0[_0xeabc('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x58a3c0[_0xeabc('0x17')]?_0x58a3c0[_0xeabc('0x17')]['where']||null:null,'attributes':_0x58a3c0[_0xeabc('0x17')]?_0x58a3c0[_0xeabc('0x17')][_0xeabc('0x18')]||null:null,'include':_0x58a3c0[_0xeabc('0x17')]?_0x58a3c0[_0xeabc('0x17')]['include']?_[_0xeabc('0x19')](_0x58a3c0[_0xeabc('0x17')][_0xeabc('0x1a')],function(_0x5bdd57){return{'model':db[_0x5bdd57[_0xeabc('0x1b')]],'as':_0x5bdd57['as'],'attributes':_0x5bdd57[_0xeabc('0x18')],'include':_0x5bdd57[_0xeabc('0x1a')]?_[_0xeabc('0x19')](_0x5bdd57['include'],function(_0x109e1d){return{'model':db[_0x109e1d['model']],'as':_0x109e1d['as'],'attributes':_0x109e1d[_0xeabc('0x18')],'include':_0x109e1d['include']?_[_0xeabc('0x19')](_0x109e1d[_0xeabc('0x1a')],function(_0x269621){return{'model':db[_0x269621[_0xeabc('0x1b')]],'as':_0x269621['as'],'attributes':_0x269621[_0xeabc('0x18')]};}):[]};}):[]};}):[]:[]})[_0xeabc('0x9')](function(_0x131722){logger['info']('ShowVariable',_0x58a3c0);logger[_0xeabc('0xd')]('ShowVariable',_0x58a3c0,JSON[_0xeabc('0xf')](_0x131722));_0x31dd53(_0x131722);})[_0xeabc('0x1c')](function(_0x48fb52){logger[_0xeabc('0x10')](_0xeabc('0x14'),_0x48fb52[_0xeabc('0x12')],_0x58a3c0);_0x31f52a(_0x16f08b[_0xeabc('0x10')](0x1f4,_0x48fb52[_0xeabc('0x12')]));});});};
\ No newline at end of file
index 9b6201b..9e965b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac29=['/fetch','fetch','/reset','isAuthenticated','canUpdate','reset','/pull','/restart','restart','/migrations','Router','./version.controller','get','index'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0xac29,0xea));var _0x9ac2=function(_0x2a0c95,_0x5c0c18){_0x2a0c95=_0x2a0c95-0x0;var _0x2457a0=_0xac29[_0x2a0c95];return _0x2457a0;};'use strict';var express=require('express');var router=express[_0x9ac2('0x0')]();var auth=require('../../components/auth/service');var controller=require(_0x9ac2('0x1'));router[_0x9ac2('0x2')]('/',controller[_0x9ac2('0x3')]);router[_0x9ac2('0x2')](_0x9ac2('0x4'),auth['isAuthenticated'](),auth['canUpdate'](),controller[_0x9ac2('0x5')]);router[_0x9ac2('0x2')](_0x9ac2('0x6'),auth[_0x9ac2('0x7')](),auth[_0x9ac2('0x8')](),controller[_0x9ac2('0x9')]);router[_0x9ac2('0x2')](_0x9ac2('0xa'),auth[_0x9ac2('0x7')](),auth['canUpdate'](),controller['pull']);router['get'](_0x9ac2('0xb'),auth['isAuthenticated'](),controller[_0x9ac2('0xc')]);router[_0x9ac2('0x2')](_0x9ac2('0xd'),controller['migrations']);module['exports']=router;
\ No newline at end of file
+var _0x4466=['reset','pull','/restart','restart','/migrations','migrations','exports','express','../../components/auth/service','./version.controller','get','isAuthenticated','canUpdate'];(function(_0x27af45,_0x1b57aa){var _0x18df21=function(_0x4b7679){while(--_0x4b7679){_0x27af45['push'](_0x27af45['shift']());}};_0x18df21(++_0x1b57aa);}(_0x4466,0x14c));var _0x6446=function(_0x22bae4,_0x22474b){_0x22bae4=_0x22bae4-0x0;var _0x2047b6=_0x4466[_0x22bae4];return _0x2047b6;};'use strict';var express=require(_0x6446('0x0'));var router=express['Router']();var auth=require(_0x6446('0x1'));var controller=require(_0x6446('0x2'));router[_0x6446('0x3')]('/',controller['index']);router['get']('/fetch',auth[_0x6446('0x4')](),auth[_0x6446('0x5')](),controller['fetch']);router[_0x6446('0x3')]('/reset',auth['isAuthenticated'](),auth[_0x6446('0x5')](),controller[_0x6446('0x6')]);router[_0x6446('0x3')]('/pull',auth['isAuthenticated'](),auth[_0x6446('0x5')](),controller[_0x6446('0x7')]);router[_0x6446('0x3')](_0x6446('0x8'),auth[_0x6446('0x4')](),controller[_0x6446('0x9')]);router[_0x6446('0x3')](_0x6446('0xa'),controller[_0x6446('0xb')]);module[_0x6446('0xc')]=router;
\ No newline at end of file
index c621929..e216f6c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6201=['map','Database\x20migrated\x20successfully\x20from\x20version\x20','\x20to\x20','UniqueConstraintError','Database\x20already\x20up-to-date','umzug','path','pkginfo','version','compare-versions','exec','../../mysqldb','../../config/environment','../../config/pm2','../../config/logger','update','simple-git','root','exports','latest','fetch','tags','2.0.0','json','origin','master','status','git\x20fetch','git\x20fetch\x20origin\x20master','reset','FETCH_HEAD','error','git\x20reset\x20--hard\x20FETCH_HEAD','git\x20reset\x20--hard','npm\x20install\x20--production','info','restart','motion2','then','pm2\x20restart\x20motion\x20%s','Your\x20system\x20has\x20been\x20restart\x20successfully','migrations','server','length','replace','.js','push','sort','sequelize','Migration','getQueryInterface','join'];(function(_0x431400,_0x47c64c){var _0x3c5819=function(_0x9ea74d){while(--_0x9ea74d){_0x431400['push'](_0x431400['shift']());}};_0x3c5819(++_0x47c64c);}(_0x6201,0xa1));var _0x1620=function(_0x287adf,_0x12a145){_0x287adf=_0x287adf-0x0;var _0x4348bf=_0x6201[_0x287adf];return _0x4348bf;};'use strict';var Umzug=require(_0x1620('0x0'));var path=require(_0x1620('0x1'));var fs=require('fs');var _=require('lodash');var pkginfo=require(_0x1620('0x2'))(module,_0x1620('0x3'));var compareVersions=require(_0x1620('0x4'));var exec=require('child_process')[_0x1620('0x5')];var db=require(_0x1620('0x6'))['db'];var config=require(_0x1620('0x7'));var pm2=require(_0x1620('0x8'));var logger=require(_0x1620('0x9'))(_0x1620('0xa'));var git=require(_0x1620('0xb'))(config[_0x1620('0xc')]);exports['index']=function(_0x4e6f0a,_0x2cb929){var _0x211529={'current':module[_0x1620('0xd')][_0x1620('0x3')],'phonebar':0x2};if(_0x4e6f0a['query']&&_0x4e6f0a['query'][_0x1620('0xe')]){return git[_0x1620('0xf')]()[_0x1620('0x10')](function(_0x4ca3ef,_0x95d565){_0x211529[_0x1620('0xe')]=(_0x4ca3ef?module[_0x1620('0xd')][_0x1620('0x3')]:_0x95d565[_0x1620('0xe')])||_0x1620('0x11');return _0x2cb929['status'](0xc8)[_0x1620('0x12')](_0x211529);});}else{return _0x2cb929['status'](0xc8)[_0x1620('0x12')](_0x211529);}};exports[_0x1620('0xf')]=function(_0x164e2e,_0x256c15){return git[_0x1620('0xf')]([_0x1620('0x13'),_0x1620('0x14')],function(_0x19faef){if(_0x19faef){logger['error'](_0x19faef);return _0x256c15[_0x1620('0x15')](0x1f4)[_0x1620('0x12')](_0x19faef);}logger['info'](_0x1620('0x16'));return _0x256c15['status'](0xc8)['json']({'output':_0x1620('0x17')});});};exports[_0x1620('0x18')]=function(_0x3c0c1f,_0x4e7c27){return git[_0x1620('0x18')](['--hard',_0x1620('0x19')],function(_0x938329){if(_0x938329){logger[_0x1620('0x1a')](_0x938329);return _0x4e7c27[_0x1620('0x15')](0x1f4)[_0x1620('0x12')](_0x938329);}logger['info'](_0x1620('0x1b'));return _0x4e7c27[_0x1620('0x15')](0xc8)[_0x1620('0x12')]({'output':_0x1620('0x1c')});});};exports['pull']=function(_0x3c93a6,_0x2e6461){exec(_0x1620('0x1d'),function(_0x47bf3b,_0x59d711,_0x4d891d){logger[_0x1620('0x1e')](_0x59d711);logger[_0x1620('0x1e')](_0x4d891d);if(_0x47bf3b){logger[_0x1620('0x1a')](_0x47bf3b);return _0x2e6461['status'](0x1f4)[_0x1620('0x12')](_0x47bf3b);}return _0x2e6461[_0x1620('0x15')](0xc8)[_0x1620('0x12')]({'output':_0x59d711});});};exports[_0x1620('0x1f')]=function(_0x3ffc5e,_0x47eef8){return pm2['restart'](_0x1620('0x20'))[_0x1620('0x21')](function(_0x13c661){logger[_0x1620('0x1e')](_0x1620('0x22'),_0x13c661);return _0x47eef8['status'](0xc8)[_0x1620('0x12')]({'output':_0x1620('0x23')});})['catch'](function(_0x2de110){logger['error'](_0x2de110);return _0x47eef8['status'](0x1f4)[_0x1620('0x12')](_0x2de110);});};exports[_0x1620('0x24')]=function(_0xdd29d2,_0x209672){var _0x3601dc=fs['readdirSync'](path['join'](config[_0x1620('0xc')],_0x1620('0x25'),_0x1620('0x24')));var _0x4570dc=[];for(var _0x120862=0x0;_0x120862<_0x3601dc[_0x1620('0x26')];_0x120862++){var _0x4ad8cf=_0x3601dc[_0x120862][_0x1620('0x27')](_0x1620('0x28'),'');if(compareVersions(module['exports'][_0x1620('0x3')],_0x4ad8cf)===-0x1){_0x4570dc[_0x1620('0x29')](_0x4ad8cf);}}if(_0x4570dc['length']){var _0x2500a1=_0x4570dc[_0x1620('0x2a')](compareVersions);var _0x404472=new Umzug({'storage':_0x1620('0x2b'),'storageOptions':{'model':db['Migration'],'modelName':_0x1620('0x2c'),'columnName':_0x1620('0x3')},'migrations':{'params':[db[_0x1620('0x2b')][_0x1620('0x2d')](),db[_0x1620('0x2b')]['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[_0x1620('0x2e')](config[_0x1620('0xc')],'server',_0x1620('0x24')),'pattern':/\.js$/}});_0x404472['up']({'migrations':_[_0x1620('0x2f')](_0x2500a1,function(_0x174a47){return _0x174a47+_0x1620('0x28');})})[_0x1620('0x21')](function(){return _0x209672[_0x1620('0x15')](0xc8)['json']({'output':_0x1620('0x30')+module[_0x1620('0xd')][_0x1620('0x3')]+_0x1620('0x31')+_['last'](_0x2500a1),'migrations':_['join'](_0x2500a1)});})['catch'](function(_0x4911a2){if(_0x4911a2 instanceof db[_0x1620('0x2b')][_0x1620('0x32')]){return _0x209672['status'](0xc8)[_0x1620('0x12')]({'output':_0x1620('0x33')});}else{return _0x209672[_0x1620('0x15')](0x1f4)['json'](_0x4911a2);}});}else{return _0x209672[_0x1620('0x15')](0xc8)[_0x1620('0x12')]({'output':_0x1620('0x33')});}};
\ No newline at end of file
+var _0x058d=['sequelize','getQueryInterface','constructor','Migration\x20tried\x20to\x20use\x20old\x20style\x20\x22done\x22\x20callback.\x20Please\x20upgrade\x20to\x20\x22umzug\x22\x20and\x20return\x20a\x20promise\x20instead.','server','map','Database\x20migrated\x20successfully\x20from\x20version\x20','\x20to\x20','last','UniqueConstraintError','Database\x20already\x20up-to-date','umzug','path','lodash','pkginfo','version','compare-versions','child_process','exec','../../mysqldb','../../config/environment','../../config/pm2','../../config/logger','update','root','index','exports','fetch','tags','latest','2.0.0','status','json','origin','master','error','info','git\x20fetch\x20origin\x20master','reset','--hard','FETCH_HEAD','git\x20reset\x20--hard\x20FETCH_HEAD','git\x20reset\x20--hard','pull','npm\x20install\x20--production','motion2','then','pm2\x20restart\x20motion\x20%s','Your\x20system\x20has\x20been\x20restart\x20successfully','catch','migrations','readdirSync','join','length','replace','.js','push','Migration'];(function(_0x36e17c,_0x5eda8c){var _0x3c35dd=function(_0xcd85a1){while(--_0xcd85a1){_0x36e17c['push'](_0x36e17c['shift']());}};_0x3c35dd(++_0x5eda8c);}(_0x058d,0x12d));var _0xd058=function(_0x20e8e8,_0x20a263){_0x20e8e8=_0x20e8e8-0x0;var _0x5b22e4=_0x058d[_0x20e8e8];return _0x5b22e4;};'use strict';var Umzug=require(_0xd058('0x0'));var path=require(_0xd058('0x1'));var fs=require('fs');var _=require(_0xd058('0x2'));var pkginfo=require(_0xd058('0x3'))(module,_0xd058('0x4'));var compareVersions=require(_0xd058('0x5'));var exec=require(_0xd058('0x6'))[_0xd058('0x7')];var db=require(_0xd058('0x8'))['db'];var config=require(_0xd058('0x9'));var pm2=require(_0xd058('0xa'));var logger=require(_0xd058('0xb'))(_0xd058('0xc'));var git=require('simple-git')(config[_0xd058('0xd')]);exports[_0xd058('0xe')]=function(_0x56acb2,_0x5771b5){var _0x88034f={'current':module[_0xd058('0xf')][_0xd058('0x4')],'phonebar':0x2};if(_0x56acb2['query']&&_0x56acb2['query']['latest']){return git[_0xd058('0x10')]()[_0xd058('0x11')](function(_0x2dcb3c,_0x1bbb52){_0x88034f[_0xd058('0x12')]=(_0x2dcb3c?module[_0xd058('0xf')][_0xd058('0x4')]:_0x1bbb52[_0xd058('0x12')])||_0xd058('0x13');return _0x5771b5[_0xd058('0x14')](0xc8)[_0xd058('0x15')](_0x88034f);});}else{return _0x5771b5[_0xd058('0x14')](0xc8)[_0xd058('0x15')](_0x88034f);}};exports['fetch']=function(_0x49930c,_0x2d06cf){return git['fetch']([_0xd058('0x16'),_0xd058('0x17')],function(_0x5b8864){if(_0x5b8864){logger[_0xd058('0x18')](_0x5b8864);return _0x2d06cf[_0xd058('0x14')](0x1f4)[_0xd058('0x15')](_0x5b8864);}logger[_0xd058('0x19')]('git\x20fetch');return _0x2d06cf[_0xd058('0x14')](0xc8)['json']({'output':_0xd058('0x1a')});});};exports[_0xd058('0x1b')]=function(_0x58f53c,_0x2351b8){return git[_0xd058('0x1b')]([_0xd058('0x1c'),_0xd058('0x1d')],function(_0x1abfc3){if(_0x1abfc3){logger[_0xd058('0x18')](_0x1abfc3);return _0x2351b8[_0xd058('0x14')](0x1f4)[_0xd058('0x15')](_0x1abfc3);}logger[_0xd058('0x19')](_0xd058('0x1e'));return _0x2351b8[_0xd058('0x14')](0xc8)['json']({'output':_0xd058('0x1f')});});};exports[_0xd058('0x20')]=function(_0x1156e2,_0x1609c6){exec(_0xd058('0x21'),function(_0x3b0c4a,_0x57e88d,_0x2cdeb3){logger[_0xd058('0x19')](_0x57e88d);logger['info'](_0x2cdeb3);if(_0x3b0c4a){logger[_0xd058('0x18')](_0x3b0c4a);return _0x1609c6['status'](0x1f4)[_0xd058('0x15')](_0x3b0c4a);}return _0x1609c6[_0xd058('0x14')](0xc8)['json']({'output':_0x57e88d});});};exports['restart']=function(_0x1322d1,_0x4ba683){return pm2['restart'](_0xd058('0x22'))[_0xd058('0x23')](function(_0x4a8ead){logger[_0xd058('0x19')](_0xd058('0x24'),_0x4a8ead);return _0x4ba683[_0xd058('0x14')](0xc8)[_0xd058('0x15')]({'output':_0xd058('0x25')});})[_0xd058('0x26')](function(_0x2dc390){logger[_0xd058('0x18')](_0x2dc390);return _0x4ba683[_0xd058('0x14')](0x1f4)[_0xd058('0x15')](_0x2dc390);});};exports[_0xd058('0x27')]=function(_0x7e241f,_0x1cc905){var _0x218c12=fs[_0xd058('0x28')](path[_0xd058('0x29')](config['root'],'server',_0xd058('0x27')));var _0x22a176=[];for(var _0x4d0e73=0x0;_0x4d0e73<_0x218c12[_0xd058('0x2a')];_0x4d0e73++){var _0x49df96=_0x218c12[_0x4d0e73][_0xd058('0x2b')](_0xd058('0x2c'),'');if(compareVersions(module[_0xd058('0xf')][_0xd058('0x4')],_0x49df96)===-0x1){_0x22a176[_0xd058('0x2d')](_0x49df96);}}if(_0x22a176[_0xd058('0x2a')]){var _0x49e97f=_0x22a176['sort'](compareVersions);var _0x578ee9=new Umzug({'storage':'sequelize','storageOptions':{'model':db[_0xd058('0x2e')],'modelName':'Migration','columnName':_0xd058('0x4')},'migrations':{'params':[db[_0xd058('0x2f')][_0xd058('0x30')](),db['sequelize'][_0xd058('0x31')],function(){throw new Error(_0xd058('0x32'));}],'path':path[_0xd058('0x29')](config[_0xd058('0xd')],_0xd058('0x33'),_0xd058('0x27')),'pattern':/\.js$/}});_0x578ee9['up']({'migrations':_[_0xd058('0x34')](_0x49e97f,function(_0xf69d40){return _0xf69d40+_0xd058('0x2c');})})[_0xd058('0x23')](function(){return _0x1cc905['status'](0xc8)['json']({'output':_0xd058('0x35')+module['exports'][_0xd058('0x4')]+_0xd058('0x36')+_[_0xd058('0x37')](_0x49e97f),'migrations':_['join'](_0x49e97f)});})['catch'](function(_0xfc30b6){if(_0xfc30b6 instanceof db[_0xd058('0x2f')][_0xd058('0x38')]){return _0x1cc905[_0xd058('0x14')](0xc8)[_0xd058('0x15')]({'output':'Database\x20already\x20up-to-date'});}else{return _0x1cc905[_0xd058('0x14')](0x1f4)['json'](_0xfc30b6);}});}else{return _0x1cc905['status'](0xc8)[_0xd058('0x15')]({'output':_0xd058('0x39')});}};
\ No newline at end of file
index 0f3b0ea..e9c52ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7428=['util','express','fs-extra','../../config/environment','get','isAuthenticated','index','/describe','/:id','show','post','update','delete','destroy','exports','multer'];(function(_0x181d03,_0x207db3){var _0x2f6623=function(_0x269167){while(--_0x269167){_0x181d03['push'](_0x181d03['shift']());}};_0x2f6623(++_0x207db3);}(_0x7428,0x15f));var _0x8742=function(_0x448ca9,_0x1f027a){_0x448ca9=_0x448ca9-0x0;var _0x24c84e=_0x7428[_0x448ca9];return _0x24c84e;};'use strict';var multer=require(_0x8742('0x0'));var util=require(_0x8742('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x8742('0x2'));var router=express['Router']();var fs_extra=require(_0x8742('0x3'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x8742('0x4'));var controller=require('./voiceAgentReport.controller');router[_0x8742('0x5')]('/',auth[_0x8742('0x6')](),controller[_0x8742('0x7')]);router[_0x8742('0x5')](_0x8742('0x8'),auth[_0x8742('0x6')](),controller['describe']);router['get'](_0x8742('0x9'),auth[_0x8742('0x6')](),controller[_0x8742('0xa')]);router[_0x8742('0xb')]('/',auth[_0x8742('0x6')](),controller['create']);router['put'](_0x8742('0x9'),auth[_0x8742('0x6')](),controller[_0x8742('0xc')]);router[_0x8742('0xd')]('/:id',auth[_0x8742('0x6')](),controller[_0x8742('0xe')]);module[_0x8742('0xf')]=router;
\ No newline at end of file
+var _0x4dcb=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','index','/describe','isAuthenticated','describe','show','create','/:id','update','delete','destroy','exports','multer','util','express'];(function(_0x3cb2f1,_0xbebcda){var _0x1f15ca=function(_0x9f9d7a){while(--_0x9f9d7a){_0x3cb2f1['push'](_0x3cb2f1['shift']());}};_0x1f15ca(++_0xbebcda);}(_0x4dcb,0x153));var _0xb4dc=function(_0x2222a6,_0x43a951){_0x2222a6=_0x2222a6-0x0;var _0x2f66c6=_0x4dcb[_0x2222a6];return _0x2f66c6;};'use strict';var multer=require(_0xb4dc('0x0'));var util=require(_0xb4dc('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xb4dc('0x2'));var router=express[_0xb4dc('0x3')]();var fs_extra=require(_0xb4dc('0x4'));var auth=require(_0xb4dc('0x5'));var interaction=require(_0xb4dc('0x6'));var config=require('../../config/environment');var controller=require('./voiceAgentReport.controller');router[_0xb4dc('0x7')]('/',auth['isAuthenticated'](),controller[_0xb4dc('0x8')]);router['get'](_0xb4dc('0x9'),auth[_0xb4dc('0xa')](),controller[_0xb4dc('0xb')]);router[_0xb4dc('0x7')]('/:id',auth[_0xb4dc('0xa')](),controller[_0xb4dc('0xc')]);router['post']('/',auth['isAuthenticated'](),controller[_0xb4dc('0xd')]);router['put'](_0xb4dc('0xe'),auth[_0xb4dc('0xa')](),controller[_0xb4dc('0xf')]);router[_0xb4dc('0x10')](_0xb4dc('0xe'),auth[_0xb4dc('0xa')](),controller[_0xb4dc('0x11')]);module[_0xb4dc('0x12')]=router;
\ No newline at end of file
index e8ef701..d37cc8c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd523=['BOOLEAN','INTEGER','FORWARD,\x20BLIND,\x20ATTENDED','sequelize','exports','STRING','DATE'];(function(_0x4d32bb,_0x430e98){var _0x5d52bc=function(_0x9791ca){while(--_0x9791ca){_0x4d32bb['push'](_0x4d32bb['shift']());}};_0x5d52bc(++_0x430e98);}(_0xd523,0x153));var _0x3d52=function(_0x33a0b1,_0x1702a3){_0x33a0b1=_0x33a0b1-0x0;var _0x16fa87=_0xd523[_0x33a0b1];return _0x16fa87;};'use strict';var Sequelize=require(_0x3d52('0x0'));module[_0x3d52('0x1')]={'type':{'type':Sequelize[_0x3d52('0x2')]},'uniqueid':{'type':Sequelize[_0x3d52('0x2')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0x3d52('0x2')]},'queue':{'type':Sequelize[_0x3d52('0x2')]},'interface':{'type':Sequelize[_0x3d52('0x2')]},'membername':{'type':Sequelize['STRING']},'agentcalledAt':{'type':Sequelize[_0x3d52('0x3')]},'agentconnectAt':{'type':Sequelize[_0x3d52('0x3')]},'agentcompleteAt':{'type':Sequelize[_0x3d52('0x3')]},'agentringnoanswerAt':{'type':Sequelize[_0x3d52('0x3')]},'agentdumpAt':{'type':Sequelize['DATE']},'holdtime':{'type':Sequelize['INTEGER']},'agentcomplete':{'type':Sequelize[_0x3d52('0x4')],'defaultValue':![]},'agentringnoanswer':{'type':Sequelize[_0x3d52('0x4')],'defaultValue':![]},'agentdump':{'type':Sequelize[_0x3d52('0x4')],'defaultValue':![]},'talktime':{'type':Sequelize[_0x3d52('0x5')]},'agentacw':{'type':Sequelize[_0x3d52('0x4')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0x3d52('0x5')]},'reason':{'type':Sequelize[_0x3d52('0x2')]},'lastevent':{'type':Sequelize[_0x3d52('0x2')]},'channel':{'type':Sequelize[_0x3d52('0x2')]},'channelstate':{'type':Sequelize['INTEGER']},'channelstatedesc':{'type':Sequelize[_0x3d52('0x2')]},'connectedlinenum':{'type':Sequelize[_0x3d52('0x2')]},'connectedlinename':{'type':Sequelize[_0x3d52('0x2')]},'language':{'type':Sequelize[_0x3d52('0x2')]},'accountcode':{'type':Sequelize[_0x3d52('0x2')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize[_0x3d52('0x2')]},'priority':{'type':Sequelize['STRING']},'destchannel':{'type':Sequelize['STRING']},'destchannelstate':{'type':Sequelize[_0x3d52('0x5')]},'destchannelstatedesc':{'type':Sequelize[_0x3d52('0x2')]},'destcalleridnum':{'type':Sequelize['STRING']},'destcalleridname':{'type':Sequelize['STRING']},'destconnectedlinenum':{'type':Sequelize['STRING']},'destconnectedlinename':{'type':Sequelize[_0x3d52('0x2')]},'destlanguage':{'type':Sequelize[_0x3d52('0x2')]},'destaccountcode':{'type':Sequelize[_0x3d52('0x2')]},'destcontext':{'type':Sequelize[_0x3d52('0x2')]},'destexten':{'type':Sequelize[_0x3d52('0x2')]},'destpriority':{'type':Sequelize[_0x3d52('0x2')]},'destuniqueid':{'type':Sequelize[_0x3d52('0x2')]},'answeredelsewheredestinationuniqueid':{'type':Sequelize[_0x3d52('0x2')]},'answeredelsewheremembername':{'type':Sequelize[_0x3d52('0x2')]},'transfer':{'type':Sequelize[_0x3d52('0x4')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0x3d52('0x2')],'comment':_0x3d52('0x6')},'transferexten':{'type':Sequelize[_0x3d52('0x2')]},'transferuniqueid':{'type':Sequelize[_0x3d52('0x2')]},'agententerreason':{'type':Sequelize[_0x3d52('0x5')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x5f2f=['INTEGER','BOOLEAN','FORWARD,\x20BLIND,\x20ATTENDED','sequelize','exports','STRING','DATE'];(function(_0x26e1bf,_0xca53c6){var _0x2f0ef3=function(_0x3fe287){while(--_0x3fe287){_0x26e1bf['push'](_0x26e1bf['shift']());}};_0x2f0ef3(++_0xca53c6);}(_0x5f2f,0x73));var _0xf5f2=function(_0x4c9098,_0x15d815){_0x4c9098=_0x4c9098-0x0;var _0x29be7c=_0x5f2f[_0x4c9098];return _0x29be7c;};'use strict';var Sequelize=require(_0xf5f2('0x0'));module[_0xf5f2('0x1')]={'type':{'type':Sequelize[_0xf5f2('0x2')]},'uniqueid':{'type':Sequelize[_0xf5f2('0x2')]},'calleridnum':{'type':Sequelize[_0xf5f2('0x2')]},'calleridname':{'type':Sequelize[_0xf5f2('0x2')]},'queue':{'type':Sequelize[_0xf5f2('0x2')]},'interface':{'type':Sequelize[_0xf5f2('0x2')]},'membername':{'type':Sequelize['STRING']},'agentcalledAt':{'type':Sequelize['DATE']},'agentconnectAt':{'type':Sequelize[_0xf5f2('0x3')]},'agentcompleteAt':{'type':Sequelize[_0xf5f2('0x3')]},'agentringnoanswerAt':{'type':Sequelize[_0xf5f2('0x3')]},'agentdumpAt':{'type':Sequelize[_0xf5f2('0x3')]},'holdtime':{'type':Sequelize[_0xf5f2('0x4')]},'agentcomplete':{'type':Sequelize[_0xf5f2('0x5')],'defaultValue':![]},'agentringnoanswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentdump':{'type':Sequelize[_0xf5f2('0x5')],'defaultValue':![]},'talktime':{'type':Sequelize[_0xf5f2('0x4')]},'agentacw':{'type':Sequelize[_0xf5f2('0x5')],'defaultValue':![]},'acwtime':{'type':Sequelize['INTEGER']},'reason':{'type':Sequelize[_0xf5f2('0x2')]},'lastevent':{'type':Sequelize[_0xf5f2('0x2')]},'channel':{'type':Sequelize[_0xf5f2('0x2')]},'channelstate':{'type':Sequelize['INTEGER']},'channelstatedesc':{'type':Sequelize[_0xf5f2('0x2')]},'connectedlinenum':{'type':Sequelize['STRING']},'connectedlinename':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0xf5f2('0x2')]},'accountcode':{'type':Sequelize[_0xf5f2('0x2')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize[_0xf5f2('0x2')]},'priority':{'type':Sequelize[_0xf5f2('0x2')]},'destchannel':{'type':Sequelize[_0xf5f2('0x2')]},'destchannelstate':{'type':Sequelize[_0xf5f2('0x4')]},'destchannelstatedesc':{'type':Sequelize[_0xf5f2('0x2')]},'destcalleridnum':{'type':Sequelize[_0xf5f2('0x2')]},'destcalleridname':{'type':Sequelize['STRING']},'destconnectedlinenum':{'type':Sequelize[_0xf5f2('0x2')]},'destconnectedlinename':{'type':Sequelize[_0xf5f2('0x2')]},'destlanguage':{'type':Sequelize[_0xf5f2('0x2')]},'destaccountcode':{'type':Sequelize[_0xf5f2('0x2')]},'destcontext':{'type':Sequelize[_0xf5f2('0x2')]},'destexten':{'type':Sequelize['STRING']},'destpriority':{'type':Sequelize[_0xf5f2('0x2')]},'destuniqueid':{'type':Sequelize[_0xf5f2('0x2')]},'answeredelsewheredestinationuniqueid':{'type':Sequelize[_0xf5f2('0x2')]},'answeredelsewheremembername':{'type':Sequelize[_0xf5f2('0x2')]},'transfer':{'type':Sequelize[_0xf5f2('0x5')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0xf5f2('0x2')],'comment':_0xf5f2('0x6')},'transferexten':{'type':Sequelize[_0xf5f2('0x2')]},'transferuniqueid':{'type':Sequelize[_0xf5f2('0x2')]},'agententerreason':{'type':Sequelize[_0xf5f2('0x4')],'defaultValue':0x0}};
\ No newline at end of file
index fc6a130..ccc329c 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(_0x2070da,_0x45e586){var _0x4f9fe1=function(_0x5b6f2a){while(--_0x5b6f2a){_0x2070da['push'](_0x2070da['shift']());}};_0x4f9fe1(++_0x45e586);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5447fd,_0x52a6b5){_0x5447fd=_0x5447fd-0x0;var _0x15b28a=_0xa9e0[_0x5447fd];return _0x15b28a;};'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(_0x49b207,_0x408ade){var _0x2dc8fa=function(_0x150975){while(--_0x150975){_0x49b207['push'](_0x49b207['shift']());}};_0x2dc8fa(++_0x408ade);}(_0xa9e0,0x123));var _0x0a9e=function(_0x37bd26,_0x5ad346){_0x37bd26=_0x37bd26-0x0;var _0xe83dc4=_0xa9e0[_0x37bd26];return _0xe83dc4;};'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 35f8d56..4d43e72 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7412=['report_agent','uniqueid','destuniqueid','lodash','api','bluebird','define'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7412,0x161));var _0x2741=function(_0xbd08b4,_0x4790ed){_0xbd08b4=_0xbd08b4-0x0;var _0x314f1e=_0x7412[_0xbd08b4];return _0x314f1e;};'use strict';var _=require(_0x2741('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x2741('0x1'));var moment=require('moment');var BPromise=require(_0x2741('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./voiceAgentReport.attributes');module['exports']=function(_0x23985b,_0xcc6e28){return _0x23985b[_0x2741('0x3')]('VoiceAgentReport',attributes,{'tableName':_0x2741('0x4'),'paranoid':![],'indexes':[{'fields':[_0x2741('0x5'),_0x2741('0x6')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xe9e8=['util','../../config/logger','api','moment','bluebird','request-promise','rimraf','./voiceAgentReport.attributes','exports','VoiceAgentReport','report_agent','uniqueid','destuniqueid','lodash'];(function(_0x25b468,_0x4d3d0f){var _0x1dd845=function(_0x5b6944){while(--_0x5b6944){_0x25b468['push'](_0x25b468['shift']());}};_0x1dd845(++_0x4d3d0f);}(_0xe9e8,0x179));var _0x8e9e=function(_0x3eb2d0,_0xde6cf7){_0x3eb2d0=_0x3eb2d0-0x0;var _0x20bc48=_0xe9e8[_0x3eb2d0];return _0x20bc48;};'use strict';var _=require(_0x8e9e('0x0'));var util=require(_0x8e9e('0x1'));var logger=require(_0x8e9e('0x2'))(_0x8e9e('0x3'));var moment=require(_0x8e9e('0x4'));var BPromise=require(_0x8e9e('0x5'));var rp=require(_0x8e9e('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x8e9e('0x7'));var config=require('../../config/environment');var attributes=require(_0x8e9e('0x8'));module[_0x8e9e('0x9')]=function(_0x3b5e8d,_0x5de00e){return _0x3b5e8d['define'](_0x8e9e('0xa'),attributes,{'tableName':_0x8e9e('0xb'),'paranoid':![],'indexes':[{'fields':[_0x8e9e('0xc'),_0x8e9e('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index c0e6328..db6eb2c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7340=['VoiceAgentReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateVoiceAgentReport','VoiceAgentReport','create','body','options','update','raw','attributes','limit','UpdateVoiceAgentReport','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','VoiceAgentReport,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x1d7fe0,_0x35c678){var _0x1ea59a=function(_0x59d3c5){while(--_0x59d3c5){_0x1d7fe0['push'](_0x1d7fe0['shift']());}};_0x1ea59a(++_0x35c678);}(_0x7340,0x7d));var _0x0734=function(_0xac770b,_0x3c74ef){_0xac770b=_0xac770b-0x0;var _0x399b1b=_0x7340[_0xac770b];return _0x399b1b;};'use strict';var _=require(_0x0734('0x0'));var util=require(_0x0734('0x1'));var moment=require('moment');var BPromise=require(_0x0734('0x2'));var rs=require(_0x0734('0x3'));var fs=require('fs');var Redis=require(_0x0734('0x4'));var db=require(_0x0734('0x5'))['db'];var utils=require(_0x0734('0x6'));var logger=require(_0x0734('0x7'))(_0x0734('0x8'));var config=require(_0x0734('0x9'));var jayson=require(_0x0734('0xa'));var client=jayson[_0x0734('0xb')][_0x0734('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x922203,_0x349e63,_0x3d78a0){return new BPromise(function(_0x36c593,_0x994938){return client[_0x0734('0xd')](_0x922203,_0x3d78a0)[_0x0734('0xe')](function(_0x34cc9e){logger[_0x0734('0xf')](_0x0734('0x10'),_0x349e63,_0x0734('0x11'));logger[_0x0734('0x12')](_0x0734('0x13'),_0x349e63,_0x0734('0x11'),JSON[_0x0734('0x14')](_0x34cc9e));if(_0x34cc9e['error']){if(_0x34cc9e[_0x0734('0x15')][_0x0734('0x16')]===0x1f4){logger['error']('VoiceAgentReport,\x20%s,\x20%s',_0x349e63,_0x34cc9e['error']['message']);return _0x994938(_0x34cc9e[_0x0734('0x15')][_0x0734('0x17')]);}logger['error']('VoiceAgentReport,\x20%s,\x20%s',_0x349e63,_0x34cc9e[_0x0734('0x15')][_0x0734('0x17')]);return _0x36c593(_0x34cc9e[_0x0734('0x15')][_0x0734('0x17')]);}else{logger['info']('VoiceAgentReport,\x20%s,\x20%s',_0x349e63,_0x0734('0x11'));_0x36c593(_0x34cc9e[_0x0734('0x18')][_0x0734('0x17')]);}})[_0x0734('0x19')](function(_0x561eeb){logger[_0x0734('0x15')]('VoiceAgentReport,\x20%s,\x20%s',_0x349e63,_0x561eeb);_0x994938(_0x561eeb);});});}exports[_0x0734('0x1a')]=function(_0x5185d4){var _0x58dbe8=this;return new Promise(function(_0x16c2b6,_0x1825d9){return db[_0x0734('0x1b')][_0x0734('0x1c')](_0x5185d4[_0x0734('0x1d')],{'raw':_0x5185d4[_0x0734('0x1e')]?_0x5185d4[_0x0734('0x1e')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x18ee0b){logger[_0x0734('0xf')]('CreateVoiceAgentReport',_0x5185d4);logger['debug'](_0x0734('0x1a'),_0x5185d4,JSON[_0x0734('0x14')](_0x18ee0b));_0x16c2b6(_0x18ee0b);})[_0x0734('0x19')](function(_0x4e88a3){logger[_0x0734('0x15')](_0x0734('0x1a'),_0x4e88a3[_0x0734('0x17')],_0x5185d4);_0x1825d9(_0x58dbe8['error'](0x1f4,_0x4e88a3[_0x0734('0x17')]));});});};exports['UpdateVoiceAgentReport']=function(_0x28f7be){var _0x1a10b7=this;return new Promise(function(_0x36bc40,_0x36dc28){return db['VoiceAgentReport'][_0x0734('0x1f')](_0x28f7be[_0x0734('0x1d')],{'raw':_0x28f7be[_0x0734('0x1e')]?_0x28f7be[_0x0734('0x1e')][_0x0734('0x20')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x28f7be[_0x0734('0x1e')]?_0x28f7be[_0x0734('0x1e')]['where']||null:null,'attributes':_0x28f7be[_0x0734('0x1e')]?_0x28f7be[_0x0734('0x1e')][_0x0734('0x21')]||null:null,'limit':_0x28f7be[_0x0734('0x1e')]?_0x28f7be['options'][_0x0734('0x22')]||null:null})[_0x0734('0xe')](function(_0xbd72ac){logger['info'](_0x0734('0x23'),_0x28f7be);logger['debug']('UpdateVoiceAgentReport',_0x28f7be,JSON[_0x0734('0x14')](_0xbd72ac));_0x36bc40(_0xbd72ac);})['catch'](function(_0x10c901){logger[_0x0734('0x15')](_0x0734('0x23'),_0x10c901['message'],_0x28f7be);_0x36dc28(_0x1a10b7['error'](0x1f4,_0x10c901[_0x0734('0x17')]));});});};
\ No newline at end of file
+var _0x2973=['../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','request','request\x20sent','debug','VoiceAgentReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','VoiceAgentReport,\x20%s,\x20%s','info','catch','CreateVoiceAgentReport','VoiceAgentReport','options','raw','then','UpdateVoiceAgentReport','update','where','attributes','limit','lodash','bluebird','randomstring','ioredis'];(function(_0x35a7e7,_0x4e0ef7){var _0x4be2fb=function(_0x179a3c){while(--_0x179a3c){_0x35a7e7['push'](_0x35a7e7['shift']());}};_0x4be2fb(++_0x4e0ef7);}(_0x2973,0x78));var _0x3297=function(_0x565fed,_0xb85768){_0x565fed=_0x565fed-0x0;var _0x3e018f=_0x2973[_0x565fed];return _0x3e018f;};'use strict';var _=require(_0x3297('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x3297('0x1'));var rs=require(_0x3297('0x2'));var fs=require('fs');var Redis=require(_0x3297('0x3'));var db=require(_0x3297('0x4'))['db'];var utils=require(_0x3297('0x5'));var logger=require('../../config/logger')(_0x3297('0x6'));var config=require('../../config/environment');var jayson=require(_0x3297('0x7'));var client=jayson[_0x3297('0x8')][_0x3297('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x233e8c,_0x53acb1,_0x31c724){return new BPromise(function(_0x5dc96e,_0x594e4a){return client[_0x3297('0xa')](_0x233e8c,_0x31c724)['then'](function(_0xa4d78){logger['info']('VoiceAgentReport,\x20%s,\x20%s',_0x53acb1,_0x3297('0xb'));logger[_0x3297('0xc')](_0x3297('0xd'),_0x53acb1,_0x3297('0xb'),JSON[_0x3297('0xe')](_0xa4d78));if(_0xa4d78['error']){if(_0xa4d78[_0x3297('0xf')][_0x3297('0x10')]===0x1f4){logger[_0x3297('0xf')]('VoiceAgentReport,\x20%s,\x20%s',_0x53acb1,_0xa4d78[_0x3297('0xf')][_0x3297('0x11')]);return _0x594e4a(_0xa4d78['error'][_0x3297('0x11')]);}logger[_0x3297('0xf')](_0x3297('0x12'),_0x53acb1,_0xa4d78[_0x3297('0xf')][_0x3297('0x11')]);return _0x5dc96e(_0xa4d78['error'][_0x3297('0x11')]);}else{logger[_0x3297('0x13')](_0x3297('0x12'),_0x53acb1,_0x3297('0xb'));_0x5dc96e(_0xa4d78['result'][_0x3297('0x11')]);}})[_0x3297('0x14')](function(_0x4a8bd3){logger[_0x3297('0xf')](_0x3297('0x12'),_0x53acb1,_0x4a8bd3);_0x594e4a(_0x4a8bd3);});});}exports[_0x3297('0x15')]=function(_0x2c76b3){var _0x599aa8=this;return new Promise(function(_0x11bc77,_0xeff35){return db[_0x3297('0x16')]['create'](_0x2c76b3['body'],{'raw':_0x2c76b3[_0x3297('0x17')]?_0x2c76b3[_0x3297('0x17')][_0x3297('0x18')]===undefined?!![]:![]:!![]})[_0x3297('0x19')](function(_0x58b04f){logger['info'](_0x3297('0x15'),_0x2c76b3);logger[_0x3297('0xc')](_0x3297('0x15'),_0x2c76b3,JSON[_0x3297('0xe')](_0x58b04f));_0x11bc77(_0x58b04f);})[_0x3297('0x14')](function(_0x3f31a9){logger[_0x3297('0xf')](_0x3297('0x15'),_0x3f31a9[_0x3297('0x11')],_0x2c76b3);_0xeff35(_0x599aa8[_0x3297('0xf')](0x1f4,_0x3f31a9['message']));});});};exports[_0x3297('0x1a')]=function(_0x55b1d8){var _0x5a87f8=this;return new Promise(function(_0x5dc7ce,_0x385071){return db[_0x3297('0x16')][_0x3297('0x1b')](_0x55b1d8['body'],{'raw':_0x55b1d8[_0x3297('0x17')]?_0x55b1d8[_0x3297('0x17')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x55b1d8[_0x3297('0x17')]?_0x55b1d8[_0x3297('0x17')][_0x3297('0x1c')]||null:null,'attributes':_0x55b1d8[_0x3297('0x17')]?_0x55b1d8[_0x3297('0x17')][_0x3297('0x1d')]||null:null,'limit':_0x55b1d8[_0x3297('0x17')]?_0x55b1d8[_0x3297('0x17')][_0x3297('0x1e')]||null:null})['then'](function(_0x3ae875){logger[_0x3297('0x13')](_0x3297('0x1a'),_0x55b1d8);logger[_0x3297('0xc')](_0x3297('0x1a'),_0x55b1d8,JSON[_0x3297('0xe')](_0x3ae875));_0x5dc7ce(_0x3ae875);})[_0x3297('0x14')](function(_0x57d08f){logger[_0x3297('0xf')](_0x3297('0x1a'),_0x57d08f[_0x3297('0x11')],_0x55b1d8);_0x385071(_0x5a87f8[_0x3297('0xf')](0x1f4,_0x57d08f[_0x3297('0x11')]));});});};
\ No newline at end of file
index 7771396..2640018 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd13e=['update','destroy','exports','multer','util','path','connect-timeout','Router','../../components/auth/service','../../config/environment','./voiceCallReport.controller','get','/describe','isAuthenticated','describe','/:id','show','post','create','put'];(function(_0x5a123f,_0x14cb93){var _0x40f3e8=function(_0x19fb34){while(--_0x19fb34){_0x5a123f['push'](_0x5a123f['shift']());}};_0x40f3e8(++_0x14cb93);}(_0xd13e,0x193));var _0xed13=function(_0x3902c2,_0x4df8fc){_0x3902c2=_0x3902c2-0x0;var _0x50e986=_0xd13e[_0x3902c2];return _0x50e986;};'use strict';var multer=require(_0xed13('0x0'));var util=require(_0xed13('0x1'));var path=require(_0xed13('0x2'));var timeout=require(_0xed13('0x3'));var express=require('express');var router=express[_0xed13('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xed13('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xed13('0x6'));var controller=require(_0xed13('0x7'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0xed13('0x8')](_0xed13('0x9'),auth[_0xed13('0xa')](),controller[_0xed13('0xb')]);router[_0xed13('0x8')](_0xed13('0xc'),auth[_0xed13('0xa')](),controller[_0xed13('0xd')]);router[_0xed13('0xe')]('/',auth['isAuthenticated'](),controller[_0xed13('0xf')]);router[_0xed13('0x10')](_0xed13('0xc'),auth[_0xed13('0xa')](),controller[_0xed13('0x11')]);router['delete'](_0xed13('0xc'),auth[_0xed13('0xa')](),controller[_0xed13('0x12')]);module[_0xed13('0x13')]=router;
\ No newline at end of file
+var _0x6334=['../../components/interaction/service','../../config/environment','./voiceCallReport.controller','get','isAuthenticated','index','/describe','describe','show','post','create','put','update','delete','/:id','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service'];(function(_0x2215db,_0x56315d){var _0x351968=function(_0x27bf9e){while(--_0x27bf9e){_0x2215db['push'](_0x2215db['shift']());}};_0x351968(++_0x56315d);}(_0x6334,0x119));var _0x4633=function(_0x3c8e9a,_0x384306){_0x3c8e9a=_0x3c8e9a-0x0;var _0x2d4c57=_0x6334[_0x3c8e9a];return _0x2d4c57;};'use strict';var multer=require(_0x4633('0x0'));var util=require(_0x4633('0x1'));var path=require(_0x4633('0x2'));var timeout=require(_0x4633('0x3'));var express=require(_0x4633('0x4'));var router=express[_0x4633('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x4633('0x6'));var interaction=require(_0x4633('0x7'));var config=require(_0x4633('0x8'));var controller=require(_0x4633('0x9'));router[_0x4633('0xa')]('/',auth[_0x4633('0xb')](),controller[_0x4633('0xc')]);router['get'](_0x4633('0xd'),auth['isAuthenticated'](),controller[_0x4633('0xe')]);router[_0x4633('0xa')]('/:id',auth[_0x4633('0xb')](),controller[_0x4633('0xf')]);router[_0x4633('0x10')]('/',auth['isAuthenticated'](),controller[_0x4633('0x11')]);router[_0x4633('0x12')]('/:id',auth[_0x4633('0xb')](),controller[_0x4633('0x13')]);router[_0x4633('0x14')](_0x4633('0x15'),auth['isAuthenticated'](),controller[_0x4633('0x16')]);module[_0x4633('0x17')]=router;
\ No newline at end of file
index 2e1698d..9efd43f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x80e0=['outbound','inbound-fax','outbound-fax','DATE','INTEGER','STRING','ENUM','inbound'];(function(_0x599ae9,_0x4b9c01){var _0x5861e6=function(_0xfed49b){while(--_0xfed49b){_0x599ae9['push'](_0x599ae9['shift']());}};_0x5861e6(++_0x4b9c01);}(_0x80e0,0x9d));var _0x080e=function(_0xa59703,_0x3da613){_0xa59703=_0xa59703-0x0;var _0x3e666f=_0x80e0[_0xa59703];return _0x3e666f;};'use strict';var Sequelize=require('sequelize');module['exports']={'uniqueid':{'type':Sequelize[_0x080e('0x0')]},'type':{'type':Sequelize[_0x080e('0x1')](_0x080e('0x2'),'internal',_0x080e('0x3'),_0x080e('0x4'),_0x080e('0x5'),'dialer')},'tag':{'type':Sequelize[_0x080e('0x0')]},'accountcode':{'type':Sequelize[_0x080e('0x0')]},'source':{'type':Sequelize[_0x080e('0x0')]},'destination':{'type':Sequelize['STRING']},'destinationcontext':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0x080e('0x0')]},'destinationchannel':{'type':Sequelize['STRING']},'lastapplication':{'type':Sequelize[_0x080e('0x0')]},'lastdata':{'type':Sequelize['TEXT']},'starttime':{'type':Sequelize[_0x080e('0x6')]},'systemanswertime':{'type':Sequelize[_0x080e('0x6')]},'answertime':{'type':Sequelize[_0x080e('0x6')]},'endtime':{'type':Sequelize[_0x080e('0x6')]},'duration':{'type':Sequelize[_0x080e('0x7')]},'billableseconds':{'type':Sequelize['INTEGER']},'mohtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'disposition':{'type':Sequelize[_0x080e('0x0')]},'amaflags':{'type':Sequelize[_0x080e('0x0')]},'userfield':{'type':Sequelize[_0x080e('0x0')]},'userDisposition':{'type':Sequelize[_0x080e('0x0')]},'userSecondDisposition':{'type':Sequelize['STRING']},'userThirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0x080e('0x0')]},'prefix':{'type':Sequelize[_0x080e('0x0')]},'routeid':{'type':Sequelize[_0x080e('0x7')]},'sipcallid':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x6df1=['DATE','INTEGER','exports','STRING','ENUM','inbound','internal','outbound','inbound-fax'];(function(_0x3704db,_0x1a55b0){var _0x138c03=function(_0x273249){while(--_0x273249){_0x3704db['push'](_0x3704db['shift']());}};_0x138c03(++_0x1a55b0);}(_0x6df1,0x1e8));var _0x16df=function(_0xb29bef,_0x45aff1){_0xb29bef=_0xb29bef-0x0;var _0x878163=_0x6df1[_0xb29bef];return _0x878163;};'use strict';var Sequelize=require('sequelize');module[_0x16df('0x0')]={'uniqueid':{'type':Sequelize[_0x16df('0x1')]},'type':{'type':Sequelize[_0x16df('0x2')](_0x16df('0x3'),_0x16df('0x4'),_0x16df('0x5'),_0x16df('0x6'),'outbound-fax','dialer')},'tag':{'type':Sequelize[_0x16df('0x1')]},'accountcode':{'type':Sequelize[_0x16df('0x1')]},'source':{'type':Sequelize[_0x16df('0x1')]},'destination':{'type':Sequelize['STRING']},'destinationcontext':{'type':Sequelize[_0x16df('0x1')]},'callerid':{'type':Sequelize[_0x16df('0x1')]},'channel':{'type':Sequelize[_0x16df('0x1')]},'destinationchannel':{'type':Sequelize[_0x16df('0x1')]},'lastapplication':{'type':Sequelize[_0x16df('0x1')]},'lastdata':{'type':Sequelize['TEXT']},'starttime':{'type':Sequelize[_0x16df('0x7')]},'systemanswertime':{'type':Sequelize[_0x16df('0x7')]},'answertime':{'type':Sequelize[_0x16df('0x7')]},'endtime':{'type':Sequelize[_0x16df('0x7')]},'duration':{'type':Sequelize[_0x16df('0x8')]},'billableseconds':{'type':Sequelize[_0x16df('0x8')]},'mohtime':{'type':Sequelize[_0x16df('0x8')],'defaultValue':0x0},'disposition':{'type':Sequelize[_0x16df('0x1')]},'amaflags':{'type':Sequelize[_0x16df('0x1')]},'userfield':{'type':Sequelize['STRING']},'userDisposition':{'type':Sequelize[_0x16df('0x1')]},'userSecondDisposition':{'type':Sequelize['STRING']},'userThirdDisposition':{'type':Sequelize[_0x16df('0x1')]},'note':{'type':Sequelize[_0x16df('0x1')]},'prefix':{'type':Sequelize[_0x16df('0x1')]},'routeid':{'type':Sequelize[_0x16df('0x8')]},'sipcallid':{'type':Sequelize['STRING']}};
\ No newline at end of file
index f96c795..f1d7c3e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb28=['options','includeAll','fullname','User','findAll','rows','catch','show','params','rawAttributes','intersection','include','find','create','destroy','describe','body','uniqueid','user','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','count','limit','set','apply','save','update','then','sendStatus','error','stack','name','send','index','VoiceCallReport','fieldName','type','key','map','query','keys','model','fields','attributes','length','nolimit','order','sort','filters','filter','where','VIRTUAL','merge'];(function(_0x4176f7,_0x5b6b44){var _0x4166d1=function(_0x1678ee){while(--_0x1678ee){_0x4176f7['push'](_0x4176f7['shift']());}};_0x4166d1(++_0x5b6b44);}(_0xdb28,0x106));var _0x8db2=function(_0x33bdde,_0x3a9eb7){_0x33bdde=_0x33bdde-0x0;var _0x597d3a=_0xdb28[_0x33bdde];return _0x597d3a;};'use strict';var emlformat=require(_0x8db2('0x0'));var rimraf=require(_0x8db2('0x1'));var zipdir=require(_0x8db2('0x2'));var jsonpatch=require(_0x8db2('0x3'));var rp=require('request-promise');var moment=require(_0x8db2('0x4'));var BPromise=require(_0x8db2('0x5'));var Mustache=require(_0x8db2('0x6'));var util=require(_0x8db2('0x7'));var path=require(_0x8db2('0x8'));var sox=require('sox');var csv=require(_0x8db2('0x9'));var ejs=require(_0x8db2('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x8db2('0xb'));var crypto=require(_0x8db2('0xc'));var jsforce=require(_0x8db2('0xd'));var deskjs=require(_0x8db2('0xe'));var toCsv=require(_0x8db2('0x9'));var querystring=require(_0x8db2('0xf'));var Papa=require(_0x8db2('0x10'));var Redis=require('ioredis');var authService=require(_0x8db2('0x11'));var qs=require(_0x8db2('0x12'));var as=require(_0x8db2('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x8db2('0x14'))(_0x8db2('0x15'));var utils=require('../../config/utils');var config=require(_0x8db2('0x16'));var licenseUtil=require(_0x8db2('0x17'));var db=require(_0x8db2('0x18'))['db'];function respondWithStatusCode(_0x204f49,_0x37d017){_0x37d017=_0x37d017||0xcc;return function(_0x559fb1){if(_0x559fb1){return _0x204f49['sendStatus'](_0x37d017);}return _0x204f49[_0x8db2('0x19')](_0x37d017)[_0x8db2('0x1a')]();};}function respondWithResult(_0x350d61,_0x1d6a15){_0x1d6a15=_0x1d6a15||0xc8;return function(_0x227355){if(_0x227355){return _0x350d61[_0x8db2('0x19')](_0x1d6a15)[_0x8db2('0x1b')](_0x227355);}};}function respondWithFilteredResult(_0x3c96a7,_0x131252){return function(_0x16c8c2){if(_0x16c8c2){var _0x5489a9=typeof _0x131252[_0x8db2('0x1c')]===_0x8db2('0x1d')&&typeof _0x131252['limit']===_0x8db2('0x1d');var _0x44957d=_0x16c8c2[_0x8db2('0x1e')];var _0x3fddc2=_0x5489a9?0x0:_0x131252[_0x8db2('0x1c')];var _0x46ce14=_0x5489a9?_0x16c8c2['count']:_0x131252['offset']+_0x131252[_0x8db2('0x1f')];var _0x104e33;if(_0x46ce14>=_0x44957d){_0x46ce14=_0x44957d;_0x104e33=0xc8;}else{_0x104e33=0xce;}_0x3c96a7[_0x8db2('0x19')](_0x104e33);return _0x3c96a7[_0x8db2('0x20')]('Content-Range',_0x3fddc2+'-'+_0x46ce14+'/'+_0x44957d)[_0x8db2('0x1b')](_0x16c8c2);}return null;};}function patchUpdates(_0x36a9ff){return function(_0x260940){try{jsonpatch[_0x8db2('0x21')](_0x260940,_0x36a9ff,!![]);}catch(_0x3dbe8e){return BPromise['reject'](_0x3dbe8e);}return _0x260940[_0x8db2('0x22')]();};}function saveUpdates(_0x3e30e6,_0x18f69c){return function(_0x125be2){if(_0x125be2){return _0x125be2[_0x8db2('0x23')](_0x3e30e6)[_0x8db2('0x24')](function(_0x796ec1){return _0x796ec1;});}return null;};}function removeEntity(_0x5c6614,_0x256202){return function(_0x4f6516){if(_0x4f6516){return _0x4f6516['destroy']()['then'](function(){_0x5c6614['status'](0xcc)[_0x8db2('0x1a')]();});}};}function handleEntityNotFound(_0x29b5cd,_0x3be281){return function(_0x2baed0){if(!_0x2baed0){_0x29b5cd[_0x8db2('0x25')](0x194);}return _0x2baed0;};}function handleError(_0x8d4f54,_0x58cd9d){_0x58cd9d=_0x58cd9d||0x1f4;return function(_0x3544ba){logger[_0x8db2('0x26')](_0x3544ba[_0x8db2('0x27')]);if(_0x3544ba[_0x8db2('0x28')]){delete _0x3544ba['name'];}_0x8d4f54[_0x8db2('0x19')](_0x58cd9d)[_0x8db2('0x29')](_0x3544ba);};}exports[_0x8db2('0x2a')]=function(_0x1687ed,_0xbe5ece){var _0x21bae5={},_0xa54ea3={},_0x3124d5={'count':0x0,'rows':[]};var _0xbc5366=_['map'](db[_0x8db2('0x2b')]['rawAttributes'],function(_0x59cb77){return{'name':_0x59cb77[_0x8db2('0x2c')],'type':_0x59cb77[_0x8db2('0x2d')][_0x8db2('0x2e')]};});_0xa54ea3['model']=_[_0x8db2('0x2f')](_0xbc5366,'name');_0xa54ea3[_0x8db2('0x30')]=_[_0x8db2('0x31')](_0x1687ed[_0x8db2('0x30')]);_0xa54ea3['filters']=_['intersection'](_0xa54ea3[_0x8db2('0x32')],_0xa54ea3[_0x8db2('0x30')]);_0x21bae5['attributes']=_['intersection'](_0xa54ea3[_0x8db2('0x32')],qs[_0x8db2('0x33')](_0x1687ed[_0x8db2('0x30')][_0x8db2('0x33')]));_0x21bae5[_0x8db2('0x34')]=_0x21bae5[_0x8db2('0x34')][_0x8db2('0x35')]?_0x21bae5[_0x8db2('0x34')]:_0xa54ea3[_0x8db2('0x32')];if(!_0x1687ed[_0x8db2('0x30')]['hasOwnProperty'](_0x8db2('0x36'))){_0x21bae5[_0x8db2('0x1f')]=qs['limit'](_0x1687ed[_0x8db2('0x30')][_0x8db2('0x1f')]);_0x21bae5['offset']=qs['offset'](_0x1687ed[_0x8db2('0x30')]['offset']);}_0x21bae5[_0x8db2('0x37')]=qs[_0x8db2('0x38')](_0x1687ed[_0x8db2('0x30')][_0x8db2('0x38')]);_0x21bae5['where']=qs[_0x8db2('0x39')](_['pick'](_0x1687ed[_0x8db2('0x30')],_0xa54ea3[_0x8db2('0x39')]),_0xbc5366);if(_0x1687ed[_0x8db2('0x30')][_0x8db2('0x3a')]){_0x21bae5['where']=_['merge'](_0x21bae5[_0x8db2('0x3b')],{'$or':_[_0x8db2('0x2f')](_0xbc5366,function(_0x5dc2b4){if(_0x5dc2b4[_0x8db2('0x2d')]!==_0x8db2('0x3c')){var _0x656dd2={};_0x656dd2[_0x5dc2b4['name']]={'$like':'%'+_0x1687ed[_0x8db2('0x30')][_0x8db2('0x3a')]+'%'};return _0x656dd2;}})});}_0x21bae5=_[_0x8db2('0x3d')]({},_0x21bae5,_0x1687ed[_0x8db2('0x3e')]);var _0x2e6f0c={'where':_0x21bae5[_0x8db2('0x3b')]};return db[_0x8db2('0x2b')][_0x8db2('0x1e')](_0x2e6f0c)[_0x8db2('0x24')](function(_0x63c561){_0x3124d5[_0x8db2('0x1e')]=_0x63c561;if(_0x1687ed[_0x8db2('0x30')][_0x8db2('0x3f')]){_0x21bae5['include']=[{'attributes':['id',_0x8db2('0x28'),_0x8db2('0x40'),'alias'],'model':db['User'],'as':_0x8db2('0x41')}];}return db['VoiceCallReport'][_0x8db2('0x42')](_0x21bae5);})[_0x8db2('0x24')](function(_0x313130){_0x3124d5[_0x8db2('0x43')]=_0x313130;return _0x3124d5;})[_0x8db2('0x24')](respondWithFilteredResult(_0xbe5ece,_0x21bae5))[_0x8db2('0x44')](handleError(_0xbe5ece,null));};exports[_0x8db2('0x45')]=function(_0x5c97ef,_0x2f86b1){var _0x3d44de={'raw':!![],'where':{'id':_0x5c97ef[_0x8db2('0x46')]['id']}},_0x40c69e={};_0x40c69e['model']=_[_0x8db2('0x31')](db[_0x8db2('0x2b')][_0x8db2('0x47')]);_0x40c69e[_0x8db2('0x30')]=_['keys'](_0x5c97ef[_0x8db2('0x30')]);_0x40c69e['filters']=_[_0x8db2('0x48')](_0x40c69e[_0x8db2('0x32')],_0x40c69e[_0x8db2('0x30')]);_0x3d44de['attributes']=_['intersection'](_0x40c69e[_0x8db2('0x32')],qs['fields'](_0x5c97ef[_0x8db2('0x30')][_0x8db2('0x33')]));_0x3d44de[_0x8db2('0x34')]=_0x3d44de[_0x8db2('0x34')][_0x8db2('0x35')]?_0x3d44de[_0x8db2('0x34')]:_0x40c69e[_0x8db2('0x32')];if(_0x5c97ef[_0x8db2('0x30')][_0x8db2('0x3f')]){_0x3d44de[_0x8db2('0x49')]=[{'all':!![]}];}_0x3d44de=_[_0x8db2('0x3d')]({},_0x3d44de,_0x5c97ef[_0x8db2('0x3e')]);return db['VoiceCallReport'][_0x8db2('0x4a')](_0x3d44de)[_0x8db2('0x24')](handleEntityNotFound(_0x2f86b1,null))[_0x8db2('0x24')](respondWithResult(_0x2f86b1,null))[_0x8db2('0x44')](handleError(_0x2f86b1,null));};exports['create']=function(_0x4ffd9d,_0x11c224){return db[_0x8db2('0x2b')][_0x8db2('0x4b')](_0x4ffd9d['body'],{})['then'](respondWithResult(_0x11c224,0xc9))['catch'](handleError(_0x11c224,null));};exports[_0x8db2('0x4c')]=function(_0x368c37,_0x55c7dd){return db[_0x8db2('0x2b')][_0x8db2('0x4a')]({'where':{'id':_0x368c37[_0x8db2('0x46')]['id']}})[_0x8db2('0x24')](handleEntityNotFound(_0x55c7dd,null))['then'](removeEntity(_0x55c7dd,null))['catch'](handleError(_0x55c7dd,null));};exports[_0x8db2('0x4d')]=function(_0x18c6ef,_0x2908e4){return db[_0x8db2('0x2b')][_0x8db2('0x4d')]()[_0x8db2('0x24')](respondWithResult(_0x2908e4,null))[_0x8db2('0x44')](handleError(_0x2908e4,null));};exports[_0x8db2('0x23')]=function(_0x4187d6,_0x426ae0){if(_0x4187d6[_0x8db2('0x4e')][_0x8db2('0x4f')]){delete _0x4187d6[_0x8db2('0x4e')][_0x8db2('0x4f')];}return db[_0x8db2('0x2b')]['find']({'where':{'uniqueid':_0x4187d6[_0x8db2('0x46')]['id'],'UserId':{'$or':[null,_0x4187d6[_0x8db2('0x50')]['id']]}}})['then'](handleEntityNotFound(_0x426ae0,null))[_0x8db2('0x24')](saveUpdates(_0x4187d6[_0x8db2('0x4e')],null))[_0x8db2('0x24')](respondWithResult(_0x426ae0,null))['catch'](handleError(_0x426ae0,null));};
\ No newline at end of file
+var _0x5f2f=['stack','name','send','index','VoiceCallReport','rawAttributes','fieldName','type','map','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','filter','merge','where','options','includeAll','include','fullname','alias','User','findAll','catch','params','keys','find','create','body','destroy','describe','update','uniqueid','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then'];(function(_0x644560,_0x1783aa){var _0x41b76b=function(_0xff8c89){while(--_0xff8c89){_0x644560['push'](_0x644560['shift']());}};_0x41b76b(++_0x1783aa);}(_0x5f2f,0x73));var _0xf5f2=function(_0x20493f,_0x604cf1){_0x20493f=_0x20493f-0x0;var _0x17ba48=_0x5f2f[_0x20493f];return _0x17ba48;};'use strict';var emlformat=require(_0xf5f2('0x0'));var rimraf=require(_0xf5f2('0x1'));var zipdir=require(_0xf5f2('0x2'));var jsonpatch=require(_0xf5f2('0x3'));var rp=require(_0xf5f2('0x4'));var moment=require(_0xf5f2('0x5'));var BPromise=require(_0xf5f2('0x6'));var Mustache=require(_0xf5f2('0x7'));var util=require('util');var path=require('path');var sox=require(_0xf5f2('0x8'));var csv=require(_0xf5f2('0x9'));var ejs=require(_0xf5f2('0xa'));var fs=require('fs');var fs_extra=require(_0xf5f2('0xb'));var _=require(_0xf5f2('0xc'));var squel=require(_0xf5f2('0xd'));var crypto=require('crypto');var jsforce=require(_0xf5f2('0xe'));var deskjs=require(_0xf5f2('0xf'));var toCsv=require(_0xf5f2('0x9'));var querystring=require('querystring');var Papa=require(_0xf5f2('0x10'));var Redis=require(_0xf5f2('0x11'));var authService=require(_0xf5f2('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xf5f2('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xf5f2('0x14'));var utils=require(_0xf5f2('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xf5f2('0x16'));var db=require(_0xf5f2('0x17'))['db'];function respondWithStatusCode(_0x331482,_0x3f2997){_0x3f2997=_0x3f2997||0xcc;return function(_0x59bb6c){if(_0x59bb6c){return _0x331482[_0xf5f2('0x18')](_0x3f2997);}return _0x331482['status'](_0x3f2997)[_0xf5f2('0x19')]();};}function respondWithResult(_0xea612c,_0x269909){_0x269909=_0x269909||0xc8;return function(_0x1c1a5c){if(_0x1c1a5c){return _0xea612c[_0xf5f2('0x1a')](_0x269909)['json'](_0x1c1a5c);}};}function respondWithFilteredResult(_0xafe430,_0x286197){return function(_0x17d656){if(_0x17d656){var _0x1b6dd2=typeof _0x286197[_0xf5f2('0x1b')]===_0xf5f2('0x1c')&&typeof _0x286197[_0xf5f2('0x1d')]===_0xf5f2('0x1c');var _0x11f702=_0x17d656[_0xf5f2('0x1e')];var _0x20fccd=_0x1b6dd2?0x0:_0x286197[_0xf5f2('0x1b')];var _0x4ff59b=_0x1b6dd2?_0x17d656[_0xf5f2('0x1e')]:_0x286197[_0xf5f2('0x1b')]+_0x286197[_0xf5f2('0x1d')];var _0x1bf655;if(_0x4ff59b>=_0x11f702){_0x4ff59b=_0x11f702;_0x1bf655=0xc8;}else{_0x1bf655=0xce;}_0xafe430['status'](_0x1bf655);return _0xafe430[_0xf5f2('0x1f')](_0xf5f2('0x20'),_0x20fccd+'-'+_0x4ff59b+'/'+_0x11f702)['json'](_0x17d656);}return null;};}function patchUpdates(_0x47acfc){return function(_0x2d2805){try{jsonpatch[_0xf5f2('0x21')](_0x2d2805,_0x47acfc,!![]);}catch(_0x4ae323){return BPromise[_0xf5f2('0x22')](_0x4ae323);}return _0x2d2805[_0xf5f2('0x23')]();};}function saveUpdates(_0x39e44a,_0x39c024){return function(_0x36f1cb){if(_0x36f1cb){return _0x36f1cb['update'](_0x39e44a)[_0xf5f2('0x24')](function(_0x4669a6){return _0x4669a6;});}return null;};}function removeEntity(_0x4e8bda,_0x2833fe){return function(_0x287ad5){if(_0x287ad5){return _0x287ad5['destroy']()['then'](function(){_0x4e8bda[_0xf5f2('0x1a')](0xcc)[_0xf5f2('0x19')]();});}};}function handleEntityNotFound(_0x13da6f,_0x1a5bb3){return function(_0xf6c58d){if(!_0xf6c58d){_0x13da6f[_0xf5f2('0x18')](0x194);}return _0xf6c58d;};}function handleError(_0x13a3be,_0x281ec8){_0x281ec8=_0x281ec8||0x1f4;return function(_0x294414){logger['error'](_0x294414[_0xf5f2('0x25')]);if(_0x294414[_0xf5f2('0x26')]){delete _0x294414[_0xf5f2('0x26')];}_0x13a3be[_0xf5f2('0x1a')](_0x281ec8)[_0xf5f2('0x27')](_0x294414);};}exports[_0xf5f2('0x28')]=function(_0x5b6672,_0x53cb96){var _0x22c826={},_0x14c829={},_0x11c771={'count':0x0,'rows':[]};var _0x5027ab=_['map'](db[_0xf5f2('0x29')][_0xf5f2('0x2a')],function(_0x17394a){return{'name':_0x17394a[_0xf5f2('0x2b')],'type':_0x17394a[_0xf5f2('0x2c')]['key']};});_0x14c829['model']=_[_0xf5f2('0x2d')](_0x5027ab,'name');_0x14c829[_0xf5f2('0x2e')]=_['keys'](_0x5b6672[_0xf5f2('0x2e')]);_0x14c829[_0xf5f2('0x2f')]=_[_0xf5f2('0x30')](_0x14c829[_0xf5f2('0x31')],_0x14c829[_0xf5f2('0x2e')]);_0x22c826[_0xf5f2('0x32')]=_[_0xf5f2('0x30')](_0x14c829[_0xf5f2('0x31')],qs['fields'](_0x5b6672[_0xf5f2('0x2e')][_0xf5f2('0x33')]));_0x22c826[_0xf5f2('0x32')]=_0x22c826[_0xf5f2('0x32')][_0xf5f2('0x34')]?_0x22c826[_0xf5f2('0x32')]:_0x14c829[_0xf5f2('0x31')];if(!_0x5b6672['query'][_0xf5f2('0x35')](_0xf5f2('0x36'))){_0x22c826['limit']=qs[_0xf5f2('0x1d')](_0x5b6672['query'][_0xf5f2('0x1d')]);_0x22c826[_0xf5f2('0x1b')]=qs[_0xf5f2('0x1b')](_0x5b6672[_0xf5f2('0x2e')]['offset']);}_0x22c826['order']=qs[_0xf5f2('0x37')](_0x5b6672[_0xf5f2('0x2e')][_0xf5f2('0x37')]);_0x22c826['where']=qs[_0xf5f2('0x2f')](_['pick'](_0x5b6672[_0xf5f2('0x2e')],_0x14c829['filters']),_0x5027ab);if(_0x5b6672[_0xf5f2('0x2e')][_0xf5f2('0x38')]){_0x22c826['where']=_[_0xf5f2('0x39')](_0x22c826[_0xf5f2('0x3a')],{'$or':_[_0xf5f2('0x2d')](_0x5027ab,function(_0x35f738){if(_0x35f738['type']!=='VIRTUAL'){var _0x3d328f={};_0x3d328f[_0x35f738[_0xf5f2('0x26')]]={'$like':'%'+_0x5b6672[_0xf5f2('0x2e')][_0xf5f2('0x38')]+'%'};return _0x3d328f;}})});}_0x22c826=_[_0xf5f2('0x39')]({},_0x22c826,_0x5b6672[_0xf5f2('0x3b')]);var _0x2bc20e={'where':_0x22c826['where']};return db[_0xf5f2('0x29')][_0xf5f2('0x1e')](_0x2bc20e)['then'](function(_0xc6a1ae){_0x11c771[_0xf5f2('0x1e')]=_0xc6a1ae;if(_0x5b6672[_0xf5f2('0x2e')][_0xf5f2('0x3c')]){_0x22c826[_0xf5f2('0x3d')]=[{'attributes':['id',_0xf5f2('0x26'),_0xf5f2('0x3e'),_0xf5f2('0x3f')],'model':db['User'],'as':_0xf5f2('0x40')}];}return db[_0xf5f2('0x29')][_0xf5f2('0x41')](_0x22c826);})['then'](function(_0x509dbc){_0x11c771['rows']=_0x509dbc;return _0x11c771;})[_0xf5f2('0x24')](respondWithFilteredResult(_0x53cb96,_0x22c826))[_0xf5f2('0x42')](handleError(_0x53cb96,null));};exports['show']=function(_0x106272,_0xeed03d){var _0x28e33f={'raw':!![],'where':{'id':_0x106272[_0xf5f2('0x43')]['id']}},_0x31f86c={};_0x31f86c[_0xf5f2('0x31')]=_[_0xf5f2('0x44')](db[_0xf5f2('0x29')][_0xf5f2('0x2a')]);_0x31f86c[_0xf5f2('0x2e')]=_[_0xf5f2('0x44')](_0x106272[_0xf5f2('0x2e')]);_0x31f86c[_0xf5f2('0x2f')]=_[_0xf5f2('0x30')](_0x31f86c['model'],_0x31f86c[_0xf5f2('0x2e')]);_0x28e33f['attributes']=_[_0xf5f2('0x30')](_0x31f86c[_0xf5f2('0x31')],qs[_0xf5f2('0x33')](_0x106272[_0xf5f2('0x2e')][_0xf5f2('0x33')]));_0x28e33f[_0xf5f2('0x32')]=_0x28e33f['attributes'][_0xf5f2('0x34')]?_0x28e33f[_0xf5f2('0x32')]:_0x31f86c[_0xf5f2('0x31')];if(_0x106272[_0xf5f2('0x2e')][_0xf5f2('0x3c')]){_0x28e33f[_0xf5f2('0x3d')]=[{'all':!![]}];}_0x28e33f=_[_0xf5f2('0x39')]({},_0x28e33f,_0x106272[_0xf5f2('0x3b')]);return db['VoiceCallReport'][_0xf5f2('0x45')](_0x28e33f)[_0xf5f2('0x24')](handleEntityNotFound(_0xeed03d,null))[_0xf5f2('0x24')](respondWithResult(_0xeed03d,null))['catch'](handleError(_0xeed03d,null));};exports[_0xf5f2('0x46')]=function(_0xc91b64,_0x3179a9){return db['VoiceCallReport']['create'](_0xc91b64[_0xf5f2('0x47')],{})[_0xf5f2('0x24')](respondWithResult(_0x3179a9,0xc9))['catch'](handleError(_0x3179a9,null));};exports[_0xf5f2('0x48')]=function(_0x533cca,_0x740321){return db['VoiceCallReport'][_0xf5f2('0x45')]({'where':{'id':_0x533cca['params']['id']}})[_0xf5f2('0x24')](handleEntityNotFound(_0x740321,null))[_0xf5f2('0x24')](removeEntity(_0x740321,null))[_0xf5f2('0x42')](handleError(_0x740321,null));};exports[_0xf5f2('0x49')]=function(_0x4fa738,_0x3154c1){return db[_0xf5f2('0x29')]['describe']()['then'](respondWithResult(_0x3154c1,null))[_0xf5f2('0x42')](handleError(_0x3154c1,null));};exports[_0xf5f2('0x4a')]=function(_0x57782c,_0x22b645){if(_0x57782c[_0xf5f2('0x47')][_0xf5f2('0x4b')]){delete _0x57782c[_0xf5f2('0x47')]['uniqueid'];}return db['VoiceCallReport'][_0xf5f2('0x45')]({'where':{'uniqueid':_0x57782c[_0xf5f2('0x43')]['id'],'UserId':{'$or':[null,_0x57782c['user']['id']]}}})[_0xf5f2('0x24')](handleEntityNotFound(_0x22b645,null))[_0xf5f2('0x24')](saveUpdates(_0x57782c[_0xf5f2('0x47')],null))[_0xf5f2('0x24')](respondWithResult(_0x22b645,null))[_0xf5f2('0x42')](handleError(_0x22b645,null));};
\ No newline at end of file
index 4fecacd..c72802a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5cba=['util','../../config/logger','bluebird','request-promise','path','rimraf','../../config/environment','./voiceCallReport.attributes','define','report_call','lodash'];(function(_0x29c675,_0x4a9fb3){var _0x43a359=function(_0x52aa19){while(--_0x52aa19){_0x29c675['push'](_0x29c675['shift']());}};_0x43a359(++_0x4a9fb3);}(_0x5cba,0xd0));var _0xa5cb=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x5cba[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0xa5cb('0x0'));var util=require(_0xa5cb('0x1'));var logger=require(_0xa5cb('0x2'))('api');var moment=require('moment');var BPromise=require(_0xa5cb('0x3'));var rp=require(_0xa5cb('0x4'));var fs=require('fs');var path=require(_0xa5cb('0x5'));var rimraf=require(_0xa5cb('0x6'));var config=require(_0xa5cb('0x7'));var attributes=require(_0xa5cb('0x8'));module['exports']=function(_0x44fe0a,_0x3f076c){return _0x44fe0a[_0xa5cb('0x9')]('VoiceCallReport',attributes,{'tableName':_0xa5cb('0xa'),'paranoid':![],'indexes':[{'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x6ea4=['define','report_call','uniqueid','lodash','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','exports'];(function(_0x3fddcf,_0x22dcdd){var _0xe7ea3a=function(_0x530e02){while(--_0x530e02){_0x3fddcf['push'](_0x3fddcf['shift']());}};_0xe7ea3a(++_0x22dcdd);}(_0x6ea4,0x1b3));var _0x46ea=function(_0x1347e8,_0x4936ec){_0x1347e8=_0x1347e8-0x0;var _0x24fa44=_0x6ea4[_0x1347e8];return _0x24fa44;};'use strict';var _=require(_0x46ea('0x0'));var util=require('util');var logger=require(_0x46ea('0x1'))(_0x46ea('0x2'));var moment=require(_0x46ea('0x3'));var BPromise=require(_0x46ea('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x46ea('0x5'));var rimraf=require(_0x46ea('0x6'));var config=require(_0x46ea('0x7'));var attributes=require('./voiceCallReport.attributes');module[_0x46ea('0x8')]=function(_0x2a00aa,_0x1be844){return _0x2a00aa[_0x46ea('0x9')]('VoiceCallReport',attributes,{'tableName':_0x46ea('0xa'),'paranoid':![],'indexes':[{'fields':[_0x46ea('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index 49c06fe..343e962 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c9b=['lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','request','then','info','request\x20sent','debug','VoiceCallReport,\x20%s,\x20%s,\x20%s','error','code','message','VoiceCallReport,\x20%s,\x20%s','result','GetVoiceCallReport','VoiceCallReport','findAll','options','raw','where','attributes','limit','map','include','model','stringify','catch','create','CreateVoiceCallReport','UpdateVoiceCallReport','update','body'];(function(_0x2e43ab,_0x457bfc){var _0x386b75=function(_0xdf5b63){while(--_0xdf5b63){_0x2e43ab['push'](_0x2e43ab['shift']());}};_0x386b75(++_0x457bfc);}(_0x6c9b,0x111));var _0xb6c9=function(_0x40937d,_0xee78bc){_0x40937d=_0x40937d-0x0;var _0x297f23=_0x6c9b[_0x40937d];return _0x297f23;};'use strict';var _=require(_0xb6c9('0x0'));var util=require(_0xb6c9('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xb6c9('0x2'));var fs=require('fs');var Redis=require(_0xb6c9('0x3'));var db=require(_0xb6c9('0x4'))['db'];var utils=require(_0xb6c9('0x5'));var logger=require(_0xb6c9('0x6'))(_0xb6c9('0x7'));var config=require(_0xb6c9('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0xb6c9('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3259c0,_0x3d004b,_0xefc90a){return new BPromise(function(_0x3d083b,_0x239cbc){return client[_0xb6c9('0xa')](_0x3259c0,_0xefc90a)[_0xb6c9('0xb')](function(_0x1cac0b){logger[_0xb6c9('0xc')]('VoiceCallReport,\x20%s,\x20%s',_0x3d004b,_0xb6c9('0xd'));logger[_0xb6c9('0xe')](_0xb6c9('0xf'),_0x3d004b,_0xb6c9('0xd'),JSON['stringify'](_0x1cac0b));if(_0x1cac0b[_0xb6c9('0x10')]){if(_0x1cac0b['error'][_0xb6c9('0x11')]===0x1f4){logger[_0xb6c9('0x10')]('VoiceCallReport,\x20%s,\x20%s',_0x3d004b,_0x1cac0b[_0xb6c9('0x10')][_0xb6c9('0x12')]);return _0x239cbc(_0x1cac0b[_0xb6c9('0x10')]['message']);}logger['error']('VoiceCallReport,\x20%s,\x20%s',_0x3d004b,_0x1cac0b[_0xb6c9('0x10')][_0xb6c9('0x12')]);return _0x3d083b(_0x1cac0b['error'][_0xb6c9('0x12')]);}else{logger[_0xb6c9('0xc')](_0xb6c9('0x13'),_0x3d004b,_0xb6c9('0xd'));_0x3d083b(_0x1cac0b[_0xb6c9('0x14')][_0xb6c9('0x12')]);}})['catch'](function(_0x310a8e){logger[_0xb6c9('0x10')](_0xb6c9('0x13'),_0x3d004b,_0x310a8e);_0x239cbc(_0x310a8e);});});}exports[_0xb6c9('0x15')]=function(_0x1647d8){var _0x392602=this;return new Promise(function(_0x4cad47,_0x23a5d5){return db[_0xb6c9('0x16')][_0xb6c9('0x17')]({'raw':_0x1647d8['options']?_0x1647d8[_0xb6c9('0x18')][_0xb6c9('0x19')]===undefined?!![]:![]:!![],'where':_0x1647d8[_0xb6c9('0x18')]?_0x1647d8[_0xb6c9('0x18')][_0xb6c9('0x1a')]||null:null,'attributes':_0x1647d8[_0xb6c9('0x18')]?_0x1647d8[_0xb6c9('0x18')][_0xb6c9('0x1b')]||null:null,'limit':_0x1647d8[_0xb6c9('0x18')]?_0x1647d8['options'][_0xb6c9('0x1c')]||null:null,'include':_0x1647d8[_0xb6c9('0x18')]?_0x1647d8['options']['include']?_[_0xb6c9('0x1d')](_0x1647d8['options'][_0xb6c9('0x1e')],function(_0x390a40){return{'model':db[_0x390a40[_0xb6c9('0x1f')]],'as':_0x390a40['as'],'attributes':_0x390a40[_0xb6c9('0x1b')],'include':_0x390a40[_0xb6c9('0x1e')]?_[_0xb6c9('0x1d')](_0x390a40[_0xb6c9('0x1e')],function(_0x3ad917){return{'model':db[_0x3ad917[_0xb6c9('0x1f')]],'as':_0x3ad917['as'],'attributes':_0x3ad917[_0xb6c9('0x1b')],'include':_0x3ad917[_0xb6c9('0x1e')]?_[_0xb6c9('0x1d')](_0x3ad917[_0xb6c9('0x1e')],function(_0x35839f){return{'model':db[_0x35839f['model']],'as':_0x35839f['as'],'attributes':_0x35839f[_0xb6c9('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x31f723){logger[_0xb6c9('0xc')](_0xb6c9('0x15'),_0x1647d8);logger['debug'](_0xb6c9('0x15'),_0x1647d8,JSON[_0xb6c9('0x20')](_0x31f723));_0x4cad47(_0x31f723);})[_0xb6c9('0x21')](function(_0x4c0b53){logger['error']('GetVoiceCallReport',_0x4c0b53[_0xb6c9('0x12')],_0x1647d8);_0x23a5d5(_0x392602[_0xb6c9('0x10')](0x1f4,_0x4c0b53[_0xb6c9('0x12')]));});});};exports['CreateVoiceCallReport']=function(_0x14cc6a){var _0x4bb336=this;return new Promise(function(_0x5281ce,_0x5c09ca){return db[_0xb6c9('0x16')][_0xb6c9('0x22')](_0x14cc6a['body'],{'raw':_0x14cc6a[_0xb6c9('0x18')]?_0x14cc6a[_0xb6c9('0x18')][_0xb6c9('0x19')]===undefined?!![]:![]:!![]})[_0xb6c9('0xb')](function(_0x4f1a87){logger['info'](_0xb6c9('0x23'),_0x14cc6a);logger[_0xb6c9('0xe')](_0xb6c9('0x23'),_0x14cc6a,JSON['stringify'](_0x4f1a87));_0x5281ce(_0x4f1a87);})[_0xb6c9('0x21')](function(_0x58b502){logger[_0xb6c9('0x10')](_0xb6c9('0x23'),_0x58b502[_0xb6c9('0x12')],_0x14cc6a);_0x5c09ca(_0x4bb336['error'](0x1f4,_0x58b502['message']));});});};exports[_0xb6c9('0x24')]=function(_0x3662f0){var _0x3b5156=this;return new Promise(function(_0x40ce81,_0x1b820e){return db[_0xb6c9('0x16')][_0xb6c9('0x25')](_0x3662f0[_0xb6c9('0x26')],{'raw':_0x3662f0[_0xb6c9('0x18')]?_0x3662f0[_0xb6c9('0x18')][_0xb6c9('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3662f0[_0xb6c9('0x18')]?_0x3662f0[_0xb6c9('0x18')][_0xb6c9('0x1a')]||null:null,'attributes':_0x3662f0[_0xb6c9('0x18')]?_0x3662f0[_0xb6c9('0x18')][_0xb6c9('0x1b')]||null:null,'limit':_0x3662f0[_0xb6c9('0x18')]?_0x3662f0['options']['limit']||null:null})[_0xb6c9('0xb')](function(_0x37bf80){logger[_0xb6c9('0xc')]('UpdateVoiceCallReport',_0x3662f0);logger[_0xb6c9('0xe')]('UpdateVoiceCallReport',_0x3662f0,JSON[_0xb6c9('0x20')](_0x37bf80));_0x40ce81(_0x37bf80);})[_0xb6c9('0x21')](function(_0x4f6c8e){logger[_0xb6c9('0x10')](_0xb6c9('0x24'),_0x4f6c8e[_0xb6c9('0x12')],_0x3662f0);_0x1b820e(_0x3b5156[_0xb6c9('0x10')](0x1f4,_0x4f6c8e[_0xb6c9('0x12')]));});});};
\ No newline at end of file
+var _0x3984=['http','request','then','info','VoiceCallReport,\x20%s,\x20%s','request\x20sent','debug','VoiceCallReport,\x20%s,\x20%s,\x20%s','error','code','message','catch','GetVoiceCallReport','findAll','options','where','map','include','model','attributes','VoiceCallReport','create','body','raw','CreateVoiceCallReport','UpdateVoiceCallReport','update','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client'];(function(_0x5b9355,_0x57417c){var _0x4d09f4=function(_0x5171ba){while(--_0x5171ba){_0x5b9355['push'](_0x5b9355['shift']());}};_0x4d09f4(++_0x57417c);}(_0x3984,0x1b2));var _0x4398=function(_0x58fbb0,_0xe497b5){_0x58fbb0=_0x58fbb0-0x0;var _0x1783d2=_0x3984[_0x58fbb0];return _0x1783d2;};'use strict';var _=require('lodash');var util=require(_0x4398('0x0'));var moment=require('moment');var BPromise=require(_0x4398('0x1'));var rs=require(_0x4398('0x2'));var fs=require('fs');var Redis=require(_0x4398('0x3'));var db=require(_0x4398('0x4'))['db'];var utils=require(_0x4398('0x5'));var logger=require('../../config/logger')(_0x4398('0x6'));var config=require(_0x4398('0x7'));var jayson=require(_0x4398('0x8'));var client=jayson[_0x4398('0x9')][_0x4398('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x23cf10,_0x41f493,_0x2f5c4a){return new BPromise(function(_0x1b52d0,_0x3a9b4){return client[_0x4398('0xb')](_0x23cf10,_0x2f5c4a)[_0x4398('0xc')](function(_0x1560b5){logger[_0x4398('0xd')](_0x4398('0xe'),_0x41f493,_0x4398('0xf'));logger[_0x4398('0x10')](_0x4398('0x11'),_0x41f493,_0x4398('0xf'),JSON['stringify'](_0x1560b5));if(_0x1560b5['error']){if(_0x1560b5[_0x4398('0x12')][_0x4398('0x13')]===0x1f4){logger['error'](_0x4398('0xe'),_0x41f493,_0x1560b5[_0x4398('0x12')][_0x4398('0x14')]);return _0x3a9b4(_0x1560b5[_0x4398('0x12')][_0x4398('0x14')]);}logger[_0x4398('0x12')](_0x4398('0xe'),_0x41f493,_0x1560b5[_0x4398('0x12')]['message']);return _0x1b52d0(_0x1560b5[_0x4398('0x12')][_0x4398('0x14')]);}else{logger[_0x4398('0xd')](_0x4398('0xe'),_0x41f493,_0x4398('0xf'));_0x1b52d0(_0x1560b5['result'][_0x4398('0x14')]);}})[_0x4398('0x15')](function(_0x13a0fc){logger[_0x4398('0x12')]('VoiceCallReport,\x20%s,\x20%s',_0x41f493,_0x13a0fc);_0x3a9b4(_0x13a0fc);});});}exports[_0x4398('0x16')]=function(_0x2cf013){var _0x59bf0b=this;return new Promise(function(_0x1f0003,_0x4b41c4){return db['VoiceCallReport'][_0x4398('0x17')]({'raw':_0x2cf013['options']?_0x2cf013[_0x4398('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x2cf013[_0x4398('0x18')]?_0x2cf013['options'][_0x4398('0x19')]||null:null,'attributes':_0x2cf013[_0x4398('0x18')]?_0x2cf013['options']['attributes']||null:null,'limit':_0x2cf013['options']?_0x2cf013[_0x4398('0x18')]['limit']||null:null,'include':_0x2cf013[_0x4398('0x18')]?_0x2cf013[_0x4398('0x18')]['include']?_[_0x4398('0x1a')](_0x2cf013['options'][_0x4398('0x1b')],function(_0x4244b1){return{'model':db[_0x4244b1[_0x4398('0x1c')]],'as':_0x4244b1['as'],'attributes':_0x4244b1[_0x4398('0x1d')],'include':_0x4244b1[_0x4398('0x1b')]?_[_0x4398('0x1a')](_0x4244b1[_0x4398('0x1b')],function(_0xf189df){return{'model':db[_0xf189df[_0x4398('0x1c')]],'as':_0xf189df['as'],'attributes':_0xf189df[_0x4398('0x1d')],'include':_0xf189df[_0x4398('0x1b')]?_['map'](_0xf189df[_0x4398('0x1b')],function(_0x30b8aa){return{'model':db[_0x30b8aa[_0x4398('0x1c')]],'as':_0x30b8aa['as'],'attributes':_0x30b8aa[_0x4398('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x4398('0xc')](function(_0x14ac3a){logger[_0x4398('0xd')]('GetVoiceCallReport',_0x2cf013);logger['debug'](_0x4398('0x16'),_0x2cf013,JSON['stringify'](_0x14ac3a));_0x1f0003(_0x14ac3a);})[_0x4398('0x15')](function(_0x1bc591){logger[_0x4398('0x12')]('GetVoiceCallReport',_0x1bc591[_0x4398('0x14')],_0x2cf013);_0x4b41c4(_0x59bf0b[_0x4398('0x12')](0x1f4,_0x1bc591[_0x4398('0x14')]));});});};exports['CreateVoiceCallReport']=function(_0xf632a){var _0x1061b0=this;return new Promise(function(_0x3f02cb,_0xbb4620){return db[_0x4398('0x1e')][_0x4398('0x1f')](_0xf632a[_0x4398('0x20')],{'raw':_0xf632a[_0x4398('0x18')]?_0xf632a[_0x4398('0x18')][_0x4398('0x21')]===undefined?!![]:![]:!![]})[_0x4398('0xc')](function(_0x3e2f1a){logger[_0x4398('0xd')]('CreateVoiceCallReport',_0xf632a);logger[_0x4398('0x10')]('CreateVoiceCallReport',_0xf632a,JSON['stringify'](_0x3e2f1a));_0x3f02cb(_0x3e2f1a);})[_0x4398('0x15')](function(_0x57776d){logger[_0x4398('0x12')](_0x4398('0x22'),_0x57776d[_0x4398('0x14')],_0xf632a);_0xbb4620(_0x1061b0[_0x4398('0x12')](0x1f4,_0x57776d[_0x4398('0x14')]));});});};exports[_0x4398('0x23')]=function(_0x37073c){var _0x3bfd36=this;return new Promise(function(_0x13f545,_0x359086){return db[_0x4398('0x1e')][_0x4398('0x24')](_0x37073c[_0x4398('0x20')],{'raw':_0x37073c[_0x4398('0x18')]?_0x37073c[_0x4398('0x18')][_0x4398('0x21')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x37073c[_0x4398('0x18')]?_0x37073c[_0x4398('0x18')]['where']||null:null,'attributes':_0x37073c['options']?_0x37073c[_0x4398('0x18')][_0x4398('0x1d')]||null:null,'limit':_0x37073c['options']?_0x37073c[_0x4398('0x18')]['limit']||null:null})['then'](function(_0x47c7bc){logger[_0x4398('0xd')](_0x4398('0x23'),_0x37073c);logger['debug'](_0x4398('0x23'),_0x37073c,JSON['stringify'](_0x47c7bc));_0x13f545(_0x47c7bc);})[_0x4398('0x15')](function(_0x2290aa){logger[_0x4398('0x12')]('UpdateVoiceCallReport',_0x2290aa[_0x4398('0x14')],_0x37073c);_0x359086(_0x3bfd36['error'](0x1f4,_0x2290aa['message']));});});};
\ No newline at end of file
index 560d10a..72da4ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd7c=['post','create','put','delete','destroy','exports','connect-timeout','Router','../../components/auth/service','../../config/environment','./voiceChanSpy.controller','get','isAuthenticated','index','/:id','show'];(function(_0x24bd02,_0x3259ea){var _0x1cb630=function(_0x5cdef4){while(--_0x5cdef4){_0x24bd02['push'](_0x24bd02['shift']());}};_0x1cb630(++_0x3259ea);}(_0xcd7c,0xd6));var _0xccd7=function(_0x57ba2f,_0x242161){_0x57ba2f=_0x57ba2f-0x0;var _0x1d60a4=_0xcd7c[_0x57ba2f];return _0x1d60a4;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0xccd7('0x0'));var express=require('express');var router=express[_0xccd7('0x1')]();var fs_extra=require('fs-extra');var auth=require(_0xccd7('0x2'));var interaction=require('../../components/interaction/service');var config=require(_0xccd7('0x3'));var controller=require(_0xccd7('0x4'));router[_0xccd7('0x5')]('/',auth[_0xccd7('0x6')](),controller[_0xccd7('0x7')]);router[_0xccd7('0x5')](_0xccd7('0x8'),auth[_0xccd7('0x6')](),controller[_0xccd7('0x9')]);router[_0xccd7('0xa')]('/',auth[_0xccd7('0x6')](),controller[_0xccd7('0xb')]);router[_0xccd7('0xc')]('/:id',auth[_0xccd7('0x6')](),controller['update']);router[_0xccd7('0xd')](_0xccd7('0x8'),auth[_0xccd7('0x6')](),controller[_0xccd7('0xe')]);module[_0xccd7('0xf')]=router;
\ No newline at end of file
+var _0x876b=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceChanSpy.controller','isAuthenticated','index','get','show','post','create','put','/:id','update','delete','destroy','util','path','connect-timeout','express','Router'];(function(_0x2ff739,_0x1c8e0f){var _0x12dc13=function(_0x26fc97){while(--_0x26fc97){_0x2ff739['push'](_0x2ff739['shift']());}};_0x12dc13(++_0x1c8e0f);}(_0x876b,0x8e));var _0xb876=function(_0x11c01f,_0x1c387c){_0x11c01f=_0x11c01f-0x0;var _0x6795fe=_0x876b[_0x11c01f];return _0x6795fe;};'use strict';var multer=require('multer');var util=require(_0xb876('0x0'));var path=require(_0xb876('0x1'));var timeout=require(_0xb876('0x2'));var express=require(_0xb876('0x3'));var router=express[_0xb876('0x4')]();var fs_extra=require(_0xb876('0x5'));var auth=require(_0xb876('0x6'));var interaction=require(_0xb876('0x7'));var config=require(_0xb876('0x8'));var controller=require(_0xb876('0x9'));router['get']('/',auth[_0xb876('0xa')](),controller[_0xb876('0xb')]);router[_0xb876('0xc')]('/:id',auth['isAuthenticated'](),controller[_0xb876('0xd')]);router[_0xb876('0xe')]('/',auth[_0xb876('0xa')](),controller[_0xb876('0xf')]);router[_0xb876('0x10')](_0xb876('0x11'),auth[_0xb876('0xa')](),controller[_0xb876('0x12')]);router[_0xb876('0x13')](_0xb876('0x11'),auth[_0xb876('0xa')](),controller[_0xb876('0x14')]);module['exports']=router;
\ No newline at end of file
index 1092339..dfa11ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x45ac=['sequelize','exports','STRING','name','setDataValue','join','getDataValue','options'];(function(_0x276cfd,_0x2e2bb0){var _0x43e876=function(_0xc64982){while(--_0xc64982){_0x276cfd['push'](_0x276cfd['shift']());}};_0x43e876(++_0x2e2bb0);}(_0x45ac,0xc0));var _0xc45a=function(_0x132ea3,_0x40b0a3){_0x132ea3=_0x132ea3-0x0;var _0x4400bf=_0x45ac[_0x132ea3];return _0x4400bf;};'use strict';var Sequelize=require(_0xc45a('0x0'));module[_0xc45a('0x1')]={'name':{'type':Sequelize[_0xc45a('0x2')]},'prefix':{'type':Sequelize[_0xc45a('0x2')],'unique':_0xc45a('0x3'),'allowNull':![]},'options':{'type':Sequelize[_0xc45a('0x2')],'set':function(_0x354fc9){this[_0xc45a('0x4')]('options',_0x354fc9?_0x354fc9[_0xc45a('0x5')](''):[]);},'get':function(){return this[_0xc45a('0x6')](_0xc45a('0x7'))?this[_0xc45a('0x6')]('options')['split'](''):[];}},'auth':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'password':{'type':Sequelize[_0xc45a('0x2')]},'record':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'recordingFormat':{'type':Sequelize[_0xc45a('0x2')]},'description':{'type':Sequelize[_0xc45a('0x2')]}};
\ No newline at end of file
+var _0x4fcf=['exports','STRING','name','options','join','getDataValue','split','BOOLEAN','sequelize'];(function(_0x35ee8d,_0x8ac481){var _0x31039a=function(_0x57019f){while(--_0x57019f){_0x35ee8d['push'](_0x35ee8d['shift']());}};_0x31039a(++_0x8ac481);}(_0x4fcf,0xfb));var _0xf4fc=function(_0x465a64,_0x5989c6){_0x465a64=_0x465a64-0x0;var _0x56e637=_0x4fcf[_0x465a64];return _0x56e637;};'use strict';var Sequelize=require(_0xf4fc('0x0'));module[_0xf4fc('0x1')]={'name':{'type':Sequelize['STRING']},'prefix':{'type':Sequelize[_0xf4fc('0x2')],'unique':_0xf4fc('0x3'),'allowNull':![]},'options':{'type':Sequelize['STRING'],'set':function(_0x42c26d){this['setDataValue'](_0xf4fc('0x4'),_0x42c26d?_0x42c26d[_0xf4fc('0x5')](''):[]);},'get':function(){return this[_0xf4fc('0x6')](_0xf4fc('0x4'))?this[_0xf4fc('0x6')]('options')[_0xf4fc('0x7')](''):[];}},'auth':{'type':Sequelize[_0xf4fc('0x8')],'defaultValue':![]},'password':{'type':Sequelize[_0xf4fc('0x2')]},'record':{'type':Sequelize[_0xf4fc('0x8')],'defaultValue':![]},'recordingFormat':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xf4fc('0x2')]}};
\ No newline at end of file
index 10103fd..e7f90c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd353=['then','get','UserProfileResource','error','stack','name','send','index','map','VoiceChanSpy','rawAttributes','fieldName','type','key','model','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','keys','filters','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','ChanSpies','UserProfileSection','autoAssociation','destroy','eml-format','rimraf','fast-json-patch','request-promise','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','sendStatus','status','end','offset','undefined','limit','count','Content-Range','json','save','update'];(function(_0x5756f8,_0x22b6d5){var _0x3bb749=function(_0x332204){while(--_0x332204){_0x5756f8['push'](_0x5756f8['shift']());}};_0x3bb749(++_0x22b6d5);}(_0xd353,0x7e));var _0x3d35=function(_0x402ba7,_0x34af6c){_0x402ba7=_0x402ba7-0x0;var _0x330c44=_0xd353[_0x402ba7];return _0x330c44;};'use strict';var emlformat=require(_0x3d35('0x0'));var rimraf=require(_0x3d35('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x3d35('0x2'));var rp=require(_0x3d35('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x3d35('0x4'));var util=require('util');var path=require(_0x3d35('0x5'));var sox=require(_0x3d35('0x6'));var csv=require(_0x3d35('0x7'));var ejs=require(_0x3d35('0x8'));var fs=require('fs');var fs_extra=require(_0x3d35('0x9'));var _=require(_0x3d35('0xa'));var squel=require(_0x3d35('0xb'));var crypto=require('crypto');var jsforce=require(_0x3d35('0xc'));var deskjs=require(_0x3d35('0xd'));var toCsv=require(_0x3d35('0x7'));var querystring=require(_0x3d35('0xe'));var Papa=require(_0x3d35('0xf'));var Redis=require(_0x3d35('0x10'));var authService=require(_0x3d35('0x11'));var qs=require(_0x3d35('0x12'));var as=require(_0x3d35('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x3d35('0x14'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5aafa1,_0x289a28){_0x289a28=_0x289a28||0xcc;return function(_0x567e9a){if(_0x567e9a){return _0x5aafa1[_0x3d35('0x15')](_0x289a28);}return _0x5aafa1[_0x3d35('0x16')](_0x289a28)[_0x3d35('0x17')]();};}function respondWithResult(_0x24cce9,_0x548c84){_0x548c84=_0x548c84||0xc8;return function(_0x46b4e8){if(_0x46b4e8){return _0x24cce9[_0x3d35('0x16')](_0x548c84)['json'](_0x46b4e8);}};}function respondWithFilteredResult(_0x3037f1,_0x1ec3db){return function(_0x5c59a0){if(_0x5c59a0){var _0x2c5e9a=typeof _0x1ec3db[_0x3d35('0x18')]===_0x3d35('0x19')&&typeof _0x1ec3db[_0x3d35('0x1a')]===_0x3d35('0x19');var _0x12b4ac=_0x5c59a0['count'];var _0x4685ce=_0x2c5e9a?0x0:_0x1ec3db[_0x3d35('0x18')];var _0x206cd3=_0x2c5e9a?_0x5c59a0[_0x3d35('0x1b')]:_0x1ec3db['offset']+_0x1ec3db['limit'];var _0x3daf7e;if(_0x206cd3>=_0x12b4ac){_0x206cd3=_0x12b4ac;_0x3daf7e=0xc8;}else{_0x3daf7e=0xce;}_0x3037f1['status'](_0x3daf7e);return _0x3037f1['set'](_0x3d35('0x1c'),_0x4685ce+'-'+_0x206cd3+'/'+_0x12b4ac)[_0x3d35('0x1d')](_0x5c59a0);}return null;};}function patchUpdates(_0x3dcdd5){return function(_0x314df6){try{jsonpatch['apply'](_0x314df6,_0x3dcdd5,!![]);}catch(_0x2d7bda){return BPromise['reject'](_0x2d7bda);}return _0x314df6[_0x3d35('0x1e')]();};}function saveUpdates(_0x34f516,_0x446cd8){return function(_0x3f5a61){if(_0x3f5a61){return _0x3f5a61[_0x3d35('0x1f')](_0x34f516)[_0x3d35('0x20')](function(_0x13eb1d){return _0x13eb1d;});}return null;};}function removeEntity(_0x2e62a7,_0xe8fcaa){return function(_0x53945c){if(_0x53945c){return _0x53945c['destroy']()['then'](function(){var _0x34b833=_0x53945c[_0x3d35('0x21')]({'plain':!![]});var _0xa9d142='ChanSpies';return db[_0x3d35('0x22')]['destroy']({'where':{'type':_0xa9d142,'resourceId':_0x34b833['id']}})['then'](function(){return _0x53945c;});})['then'](function(){_0x2e62a7['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x477be9,_0x1fbf77){return function(_0x4fb07f){if(!_0x4fb07f){_0x477be9['sendStatus'](0x194);}return _0x4fb07f;};}function handleError(_0x5720f8,_0x3b4b6d){_0x3b4b6d=_0x3b4b6d||0x1f4;return function(_0x190799){logger[_0x3d35('0x23')](_0x190799[_0x3d35('0x24')]);if(_0x190799[_0x3d35('0x25')]){delete _0x190799['name'];}_0x5720f8[_0x3d35('0x16')](_0x3b4b6d)[_0x3d35('0x26')](_0x190799);};}exports[_0x3d35('0x27')]=function(_0x4f3ded,_0x12d74c){var _0x11c30b={},_0x34e33f={},_0x576ffc={'count':0x0,'rows':[]};var _0x5d952d=_[_0x3d35('0x28')](db[_0x3d35('0x29')][_0x3d35('0x2a')],function(_0xe4685f){return{'name':_0xe4685f[_0x3d35('0x2b')],'type':_0xe4685f[_0x3d35('0x2c')][_0x3d35('0x2d')]};});_0x34e33f[_0x3d35('0x2e')]=_[_0x3d35('0x28')](_0x5d952d,'name');_0x34e33f[_0x3d35('0x2f')]=_['keys'](_0x4f3ded['query']);_0x34e33f['filters']=_[_0x3d35('0x30')](_0x34e33f[_0x3d35('0x2e')],_0x34e33f[_0x3d35('0x2f')]);_0x11c30b[_0x3d35('0x31')]=_[_0x3d35('0x30')](_0x34e33f['model'],qs[_0x3d35('0x32')](_0x4f3ded['query'][_0x3d35('0x32')]));_0x11c30b[_0x3d35('0x31')]=_0x11c30b[_0x3d35('0x31')][_0x3d35('0x33')]?_0x11c30b[_0x3d35('0x31')]:_0x34e33f[_0x3d35('0x2e')];if(!_0x4f3ded[_0x3d35('0x2f')][_0x3d35('0x34')](_0x3d35('0x35'))){_0x11c30b[_0x3d35('0x1a')]=qs[_0x3d35('0x1a')](_0x4f3ded[_0x3d35('0x2f')][_0x3d35('0x1a')]);_0x11c30b['offset']=qs[_0x3d35('0x18')](_0x4f3ded['query'][_0x3d35('0x18')]);}_0x11c30b[_0x3d35('0x36')]=qs['sort'](_0x4f3ded[_0x3d35('0x2f')]['sort']);_0x11c30b[_0x3d35('0x37')]=qs['filters'](_[_0x3d35('0x38')](_0x4f3ded[_0x3d35('0x2f')],_0x34e33f['filters']),_0x5d952d);if(_0x4f3ded['query'][_0x3d35('0x39')]){_0x11c30b[_0x3d35('0x37')]=_[_0x3d35('0x3a')](_0x11c30b['where'],{'$or':_[_0x3d35('0x28')](_0x5d952d,function(_0x439e1f){if(_0x439e1f['type']!==_0x3d35('0x3b')){var _0x269b57={};_0x269b57[_0x439e1f[_0x3d35('0x25')]]={'$like':'%'+_0x4f3ded['query'][_0x3d35('0x39')]+'%'};return _0x269b57;}})});}_0x11c30b=_[_0x3d35('0x3a')]({},_0x11c30b,_0x4f3ded[_0x3d35('0x3c')]);var _0x2995ed={'where':_0x11c30b[_0x3d35('0x37')]};return db[_0x3d35('0x29')]['count'](_0x2995ed)[_0x3d35('0x20')](function(_0x5cd93e){_0x576ffc[_0x3d35('0x1b')]=_0x5cd93e;if(_0x4f3ded[_0x3d35('0x2f')][_0x3d35('0x3d')]){_0x11c30b[_0x3d35('0x3e')]=[{'all':!![]}];}return db[_0x3d35('0x29')][_0x3d35('0x3f')](_0x11c30b);})[_0x3d35('0x20')](function(_0x1d52b4){_0x576ffc[_0x3d35('0x40')]=_0x1d52b4;return _0x576ffc;})[_0x3d35('0x20')](respondWithFilteredResult(_0x12d74c,_0x11c30b))[_0x3d35('0x41')](handleError(_0x12d74c,null));};exports[_0x3d35('0x42')]=function(_0x185157,_0xf6e6b1){var _0x55a67c={'raw':![],'where':{'id':_0x185157[_0x3d35('0x43')]['id']}},_0x1e3146={};_0x1e3146[_0x3d35('0x2e')]=_['keys'](db[_0x3d35('0x29')]['rawAttributes']);_0x1e3146[_0x3d35('0x2f')]=_[_0x3d35('0x44')](_0x185157['query']);_0x1e3146[_0x3d35('0x45')]=_[_0x3d35('0x30')](_0x1e3146['model'],_0x1e3146[_0x3d35('0x2f')]);_0x55a67c[_0x3d35('0x31')]=_[_0x3d35('0x30')](_0x1e3146['model'],qs[_0x3d35('0x32')](_0x185157[_0x3d35('0x2f')][_0x3d35('0x32')]));_0x55a67c[_0x3d35('0x31')]=_0x55a67c[_0x3d35('0x31')][_0x3d35('0x33')]?_0x55a67c[_0x3d35('0x31')]:_0x1e3146['model'];if(_0x185157[_0x3d35('0x2f')]['includeAll']){_0x55a67c[_0x3d35('0x3e')]=[{'all':!![]}];}_0x55a67c=_['merge']({},_0x55a67c,_0x185157[_0x3d35('0x3c')]);return db[_0x3d35('0x29')][_0x3d35('0x46')](_0x55a67c)[_0x3d35('0x20')](handleEntityNotFound(_0xf6e6b1,null))[_0x3d35('0x20')](respondWithResult(_0xf6e6b1,null))[_0x3d35('0x41')](handleError(_0xf6e6b1,null));};exports[_0x3d35('0x47')]=function(_0x25fa20,_0x1da2d9){return db[_0x3d35('0x29')][_0x3d35('0x47')](_0x25fa20[_0x3d35('0x48')],{})[_0x3d35('0x20')](function(_0x4fbf98){var _0x117b00=_0x25fa20['user'][_0x3d35('0x21')]({'plain':!![]});if(!_0x117b00)throw new Error(_0x3d35('0x49'));if(_0x117b00[_0x3d35('0x4a')]==='user'){var _0x41cf94=_0x4fbf98[_0x3d35('0x21')]({'plain':!![]});var _0x5de3b0=_0x3d35('0x4b');return db[_0x3d35('0x4c')]['find']({'where':{'name':_0x5de3b0,'userProfileId':_0x117b00['userProfileId']},'raw':!![]})[_0x3d35('0x20')](function(_0x5f55dc){if(_0x5f55dc&&_0x5f55dc[_0x3d35('0x4d')]===0x0){return db['UserProfileResource'][_0x3d35('0x47')]({'name':_0x41cf94[_0x3d35('0x25')],'resourceId':_0x41cf94['id'],'type':_0x5f55dc[_0x3d35('0x25')],'sectionId':_0x5f55dc['id']},{})['then'](function(){return _0x4fbf98;});}else{return _0x4fbf98;}})[_0x3d35('0x41')](function(_0x1b9739){logger[_0x3d35('0x23')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1b9739);throw _0x1b9739;});}return _0x4fbf98;})[_0x3d35('0x20')](respondWithResult(_0x1da2d9,0xc9))[_0x3d35('0x41')](handleError(_0x1da2d9,null));};exports[_0x3d35('0x1f')]=function(_0x50875f,_0x2bb40c){if(_0x50875f[_0x3d35('0x48')]['id']){delete _0x50875f[_0x3d35('0x48')]['id'];}return db['VoiceChanSpy'][_0x3d35('0x46')]({'where':{'id':_0x50875f['params']['id']}})[_0x3d35('0x20')](handleEntityNotFound(_0x2bb40c,null))[_0x3d35('0x20')](saveUpdates(_0x50875f['body'],null))[_0x3d35('0x20')](respondWithResult(_0x2bb40c,null))[_0x3d35('0x41')](handleError(_0x2bb40c,null));};exports[_0x3d35('0x4e')]=function(_0x1d1264,_0x123017){return db[_0x3d35('0x29')]['find']({'where':{'id':_0x1d1264[_0x3d35('0x43')]['id']}})[_0x3d35('0x20')](handleEntityNotFound(_0x123017,null))[_0x3d35('0x20')](removeEntity(_0x123017,null))[_0x3d35('0x41')](handleError(_0x123017,null));};
\ No newline at end of file
+var _0xf3dc=['eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','apply','save','then','destroy','ChanSpies','UserProfileResource','stack','name','send','index','map','VoiceChanSpy','type','key','model','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','filters','filter','merge','where','options','includeAll','include','findAll','show','rawAttributes','length','catch','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update'];(function(_0xc6aef,_0x548d0a){var _0x43035d=function(_0x52b807){while(--_0x52b807){_0xc6aef['push'](_0xc6aef['shift']());}};_0x43035d(++_0x548d0a);}(_0xf3dc,0x9c));var _0xcf3d=function(_0x33d7e9,_0x500ef5){_0x33d7e9=_0x33d7e9-0x0;var _0x269ff1=_0xf3dc[_0x33d7e9];return _0x269ff1;};'use strict';var emlformat=require(_0xcf3d('0x0'));var rimraf=require(_0xcf3d('0x1'));var zipdir=require(_0xcf3d('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xcf3d('0x3'));var moment=require(_0xcf3d('0x4'));var BPromise=require(_0xcf3d('0x5'));var Mustache=require(_0xcf3d('0x6'));var util=require(_0xcf3d('0x7'));var path=require(_0xcf3d('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('squel');var crypto=require(_0xcf3d('0x9'));var jsforce=require(_0xcf3d('0xa'));var deskjs=require(_0xcf3d('0xb'));var toCsv=require(_0xcf3d('0xc'));var querystring=require(_0xcf3d('0xd'));var Papa=require(_0xcf3d('0xe'));var Redis=require(_0xcf3d('0xf'));var authService=require(_0xcf3d('0x10'));var qs=require(_0xcf3d('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xcf3d('0x12'));var utils=require('../../config/utils');var config=require(_0xcf3d('0x13'));var licenseUtil=require(_0xcf3d('0x14'));var db=require(_0xcf3d('0x15'))['db'];function respondWithStatusCode(_0x16d627,_0x449322){_0x449322=_0x449322||0xcc;return function(_0xe6d631){if(_0xe6d631){return _0x16d627[_0xcf3d('0x16')](_0x449322);}return _0x16d627[_0xcf3d('0x17')](_0x449322)[_0xcf3d('0x18')]();};}function respondWithResult(_0x4f16f2,_0x5432b7){_0x5432b7=_0x5432b7||0xc8;return function(_0x119e66){if(_0x119e66){return _0x4f16f2[_0xcf3d('0x17')](_0x5432b7)[_0xcf3d('0x19')](_0x119e66);}};}function respondWithFilteredResult(_0x238386,_0x253210){return function(_0x2b401e){if(_0x2b401e){var _0x196b1f=typeof _0x253210[_0xcf3d('0x1a')]===_0xcf3d('0x1b')&&typeof _0x253210[_0xcf3d('0x1c')]==='undefined';var _0x5e5f18=_0x2b401e[_0xcf3d('0x1d')];var _0x22fd74=_0x196b1f?0x0:_0x253210['offset'];var _0x3272e3=_0x196b1f?_0x2b401e[_0xcf3d('0x1d')]:_0x253210[_0xcf3d('0x1a')]+_0x253210[_0xcf3d('0x1c')];var _0x369c7a;if(_0x3272e3>=_0x5e5f18){_0x3272e3=_0x5e5f18;_0x369c7a=0xc8;}else{_0x369c7a=0xce;}_0x238386['status'](_0x369c7a);return _0x238386['set']('Content-Range',_0x22fd74+'-'+_0x3272e3+'/'+_0x5e5f18)['json'](_0x2b401e);}return null;};}function patchUpdates(_0x32dfe0){return function(_0x5d828b){try{jsonpatch[_0xcf3d('0x1e')](_0x5d828b,_0x32dfe0,!![]);}catch(_0x5dcaa2){return BPromise['reject'](_0x5dcaa2);}return _0x5d828b[_0xcf3d('0x1f')]();};}function saveUpdates(_0xb19c1a,_0x1e515b){return function(_0x1ef058){if(_0x1ef058){return _0x1ef058['update'](_0xb19c1a)[_0xcf3d('0x20')](function(_0x3b6c8f){return _0x3b6c8f;});}return null;};}function removeEntity(_0x329728,_0x78a3c7){return function(_0x40dce9){if(_0x40dce9){return _0x40dce9[_0xcf3d('0x21')]()['then'](function(){var _0x47bf17=_0x40dce9['get']({'plain':!![]});var _0x2f49f0=_0xcf3d('0x22');return db[_0xcf3d('0x23')][_0xcf3d('0x21')]({'where':{'type':_0x2f49f0,'resourceId':_0x47bf17['id']}})[_0xcf3d('0x20')](function(){return _0x40dce9;});})[_0xcf3d('0x20')](function(){_0x329728[_0xcf3d('0x17')](0xcc)[_0xcf3d('0x18')]();});}};}function handleEntityNotFound(_0xfc14ce,_0xfe2b5a){return function(_0x2a2d66){if(!_0x2a2d66){_0xfc14ce[_0xcf3d('0x16')](0x194);}return _0x2a2d66;};}function handleError(_0xfedd30,_0x17ab51){_0x17ab51=_0x17ab51||0x1f4;return function(_0x33f41f){logger['error'](_0x33f41f[_0xcf3d('0x24')]);if(_0x33f41f[_0xcf3d('0x25')]){delete _0x33f41f['name'];}_0xfedd30[_0xcf3d('0x17')](_0x17ab51)[_0xcf3d('0x26')](_0x33f41f);};}exports[_0xcf3d('0x27')]=function(_0xd410fc,_0x2c2cd9){var _0x2b6dc5={},_0x58cccc={},_0xd0d7de={'count':0x0,'rows':[]};var _0x4ca055=_[_0xcf3d('0x28')](db[_0xcf3d('0x29')]['rawAttributes'],function(_0x1ba250){return{'name':_0x1ba250['fieldName'],'type':_0x1ba250[_0xcf3d('0x2a')][_0xcf3d('0x2b')]};});_0x58cccc[_0xcf3d('0x2c')]=_['map'](_0x4ca055,_0xcf3d('0x25'));_0x58cccc[_0xcf3d('0x2d')]=_[_0xcf3d('0x2e')](_0xd410fc[_0xcf3d('0x2d')]);_0x58cccc['filters']=_[_0xcf3d('0x2f')](_0x58cccc[_0xcf3d('0x2c')],_0x58cccc[_0xcf3d('0x2d')]);_0x2b6dc5[_0xcf3d('0x30')]=_['intersection'](_0x58cccc[_0xcf3d('0x2c')],qs[_0xcf3d('0x31')](_0xd410fc[_0xcf3d('0x2d')][_0xcf3d('0x31')]));_0x2b6dc5[_0xcf3d('0x30')]=_0x2b6dc5[_0xcf3d('0x30')]['length']?_0x2b6dc5[_0xcf3d('0x30')]:_0x58cccc[_0xcf3d('0x2c')];if(!_0xd410fc[_0xcf3d('0x2d')][_0xcf3d('0x32')](_0xcf3d('0x33'))){_0x2b6dc5[_0xcf3d('0x1c')]=qs[_0xcf3d('0x1c')](_0xd410fc[_0xcf3d('0x2d')][_0xcf3d('0x1c')]);_0x2b6dc5['offset']=qs[_0xcf3d('0x1a')](_0xd410fc[_0xcf3d('0x2d')][_0xcf3d('0x1a')]);}_0x2b6dc5[_0xcf3d('0x34')]=qs[_0xcf3d('0x35')](_0xd410fc[_0xcf3d('0x2d')]['sort']);_0x2b6dc5['where']=qs['filters'](_['pick'](_0xd410fc['query'],_0x58cccc[_0xcf3d('0x36')]),_0x4ca055);if(_0xd410fc[_0xcf3d('0x2d')][_0xcf3d('0x37')]){_0x2b6dc5['where']=_[_0xcf3d('0x38')](_0x2b6dc5[_0xcf3d('0x39')],{'$or':_[_0xcf3d('0x28')](_0x4ca055,function(_0x5b1e34){if(_0x5b1e34[_0xcf3d('0x2a')]!=='VIRTUAL'){var _0x44db16={};_0x44db16[_0x5b1e34[_0xcf3d('0x25')]]={'$like':'%'+_0xd410fc[_0xcf3d('0x2d')][_0xcf3d('0x37')]+'%'};return _0x44db16;}})});}_0x2b6dc5=_[_0xcf3d('0x38')]({},_0x2b6dc5,_0xd410fc[_0xcf3d('0x3a')]);var _0x2338db={'where':_0x2b6dc5['where']};return db[_0xcf3d('0x29')]['count'](_0x2338db)[_0xcf3d('0x20')](function(_0x12b9d5){_0xd0d7de[_0xcf3d('0x1d')]=_0x12b9d5;if(_0xd410fc['query'][_0xcf3d('0x3b')]){_0x2b6dc5[_0xcf3d('0x3c')]=[{'all':!![]}];}return db[_0xcf3d('0x29')][_0xcf3d('0x3d')](_0x2b6dc5);})[_0xcf3d('0x20')](function(_0x57a6f0){_0xd0d7de['rows']=_0x57a6f0;return _0xd0d7de;})[_0xcf3d('0x20')](respondWithFilteredResult(_0x2c2cd9,_0x2b6dc5))['catch'](handleError(_0x2c2cd9,null));};exports[_0xcf3d('0x3e')]=function(_0x386f7c,_0x32c6b6){var _0x1e5115={'raw':![],'where':{'id':_0x386f7c['params']['id']}},_0x1f3872={};_0x1f3872[_0xcf3d('0x2c')]=_[_0xcf3d('0x2e')](db[_0xcf3d('0x29')][_0xcf3d('0x3f')]);_0x1f3872[_0xcf3d('0x2d')]=_[_0xcf3d('0x2e')](_0x386f7c[_0xcf3d('0x2d')]);_0x1f3872['filters']=_[_0xcf3d('0x2f')](_0x1f3872['model'],_0x1f3872[_0xcf3d('0x2d')]);_0x1e5115[_0xcf3d('0x30')]=_['intersection'](_0x1f3872['model'],qs[_0xcf3d('0x31')](_0x386f7c[_0xcf3d('0x2d')][_0xcf3d('0x31')]));_0x1e5115[_0xcf3d('0x30')]=_0x1e5115[_0xcf3d('0x30')][_0xcf3d('0x40')]?_0x1e5115[_0xcf3d('0x30')]:_0x1f3872[_0xcf3d('0x2c')];if(_0x386f7c[_0xcf3d('0x2d')]['includeAll']){_0x1e5115[_0xcf3d('0x3c')]=[{'all':!![]}];}_0x1e5115=_[_0xcf3d('0x38')]({},_0x1e5115,_0x386f7c[_0xcf3d('0x3a')]);return db[_0xcf3d('0x29')]['find'](_0x1e5115)[_0xcf3d('0x20')](handleEntityNotFound(_0x32c6b6,null))[_0xcf3d('0x20')](respondWithResult(_0x32c6b6,null))[_0xcf3d('0x41')](handleError(_0x32c6b6,null));};exports[_0xcf3d('0x42')]=function(_0x532c82,_0x1298ce){return db[_0xcf3d('0x29')][_0xcf3d('0x42')](_0x532c82[_0xcf3d('0x43')],{})[_0xcf3d('0x20')](function(_0x5d046e){var _0x43ffc1=_0x532c82[_0xcf3d('0x44')][_0xcf3d('0x45')]({'plain':!![]});if(!_0x43ffc1)throw new Error(_0xcf3d('0x46'));if(_0x43ffc1[_0xcf3d('0x47')]==='user'){var _0x4198e6=_0x5d046e[_0xcf3d('0x45')]({'plain':!![]});var _0x42e0fb='ChanSpies';return db[_0xcf3d('0x48')][_0xcf3d('0x49')]({'where':{'name':_0x42e0fb,'userProfileId':_0x43ffc1['userProfileId']},'raw':!![]})[_0xcf3d('0x20')](function(_0x4ec3b1){if(_0x4ec3b1&&_0x4ec3b1[_0xcf3d('0x4a')]===0x0){return db[_0xcf3d('0x23')][_0xcf3d('0x42')]({'name':_0x4198e6['name'],'resourceId':_0x4198e6['id'],'type':_0x4ec3b1[_0xcf3d('0x25')],'sectionId':_0x4ec3b1['id']},{})[_0xcf3d('0x20')](function(){return _0x5d046e;});}else{return _0x5d046e;}})[_0xcf3d('0x41')](function(_0x19d7da){logger[_0xcf3d('0x4b')](_0xcf3d('0x4c'),_0x19d7da);throw _0x19d7da;});}return _0x5d046e;})['then'](respondWithResult(_0x1298ce,0xc9))['catch'](handleError(_0x1298ce,null));};exports[_0xcf3d('0x4d')]=function(_0x3afcc8,_0x3731ee){if(_0x3afcc8[_0xcf3d('0x43')]['id']){delete _0x3afcc8['body']['id'];}return db['VoiceChanSpy'][_0xcf3d('0x49')]({'where':{'id':_0x3afcc8['params']['id']}})[_0xcf3d('0x20')](handleEntityNotFound(_0x3731ee,null))[_0xcf3d('0x20')](saveUpdates(_0x3afcc8['body'],null))[_0xcf3d('0x20')](respondWithResult(_0x3731ee,null))['catch'](handleError(_0x3731ee,null));};exports[_0xcf3d('0x21')]=function(_0x59b85d,_0x4c3537){return db[_0xcf3d('0x29')][_0xcf3d('0x49')]({'where':{'id':_0x59b85d['params']['id']}})[_0xcf3d('0x20')](handleEntityNotFound(_0x4c3537,null))[_0xcf3d('0x20')](removeEntity(_0x4c3537,null))[_0xcf3d('0x41')](handleError(_0x4c3537,null));};
\ No newline at end of file
index eaf9f92..a8f41a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4740=['User','findAll','agent','then','catch','exports','models','VoiceChanSpy','voice_chanspy','length','VoiceExtension','destroy','bulkCreate','lodash','util','bluebird','./voiceChanSpy.attributes','context','from-sip','format','%s%s','prefix','system','merge','Set','CDR(type)=%s','chanspy','record','push','${UNIQUEID}.%s,a','recordingFormat','Authenticate','password','ChanSpy','SIP/%s,%s','name','options','join','StopMixMonitor','internal','concat'];(function(_0x99c3c7,_0x2098b9){var _0x361a13=function(_0x459d07){while(--_0x459d07){_0x99c3c7['push'](_0x99c3c7['shift']());}};_0x361a13(++_0x2098b9);}(_0x4740,0x1a7));var _0x0474=function(_0x5780f9,_0x75280b){_0x5780f9=_0x5780f9-0x0;var _0x1fb737=_0x4740[_0x5780f9];return _0x1fb737;};'use strict';var _=require(_0x0474('0x0'));var util=require(_0x0474('0x1'));var BPromise=require(_0x0474('0x2'));var attributes=require(_0x0474('0x3'));var getUserApplications=function(_0x3378e0,_0x43e8b5,_0xd89dd5){var _0x1ce4fa=0x1;var _0x1a6894=[];var _0x116f46={'context':_0x43e8b5[_0x0474('0x4')]||_0x0474('0x5'),'exten':util[_0x0474('0x6')](_0x0474('0x7'),_0x3378e0[_0x0474('0x8')],_0xd89dd5),'type':_0x0474('0x9'),'isApp':![],'ChanSpyId':_0x3378e0['id'],'UserId':_0x43e8b5['id']};_0x1a6894['push'](_[_0x0474('0xa')]({'app':_0x0474('0xb'),'appdata':util[_0x0474('0x6')](_0x0474('0xc'),_0x0474('0xd')),'priority':_0x1ce4fa++},_0x116f46));if(_0x3378e0[_0x0474('0xe')]){_0x1a6894[_0x0474('0xf')](_[_0x0474('0xa')]({'app':'MixMonitor','appdata':util[_0x0474('0x6')](_0x0474('0x10'),_0x3378e0[_0x0474('0x11')]),'priority':_0x1ce4fa++},_0x116f46));}if(_0x3378e0['auth']){_0x1a6894[_0x0474('0xf')](_['merge']({'app':_0x0474('0x12'),'appdata':_0x3378e0[_0x0474('0x13')],'priority':_0x1ce4fa++},_0x116f46));}_0x1a6894['push'](_[_0x0474('0xa')]({'app':_0x0474('0x14'),'appdata':util[_0x0474('0x6')](_0x0474('0x15'),_0x43e8b5[_0x0474('0x16')],_0x3378e0['options']?_0x3378e0[_0x0474('0x17')][_0x0474('0x18')](''):''),'priority':_0x1ce4fa++},_0x116f46));if(_0x3378e0[_0x0474('0xe')]){_0x1a6894['push'](_[_0x0474('0xa')]({'app':_0x0474('0x19'),'priority':_0x1ce4fa++},_0x116f46));}return _0x1a6894;};var getChanSpyApplications=function(_0x31970d,_0x7bb87c){var _0x225f66=[];for(var _0x27ca3c=0x0,_0x101caa=0x1;_0x27ca3c<_0x7bb87c['length'];_0x27ca3c++,_0x101caa=0x1){_0x225f66=_0x225f66['concat'](getUserApplications(_0x31970d,_0x7bb87c[_0x27ca3c],_0x7bb87c[_0x27ca3c][_0x0474('0x1a')]));if(_0x7bb87c[_0x27ca3c][_0x0474('0x1a')]!=_0x7bb87c[_0x27ca3c][_0x0474('0x16')]){_0x225f66=_0x225f66[_0x0474('0x1b')](getUserApplications(_0x31970d,_0x7bb87c[_0x27ca3c],_0x7bb87c[_0x27ca3c]['name']));}}return _0x225f66;};var getChanSpyPromise=function(_0x86e2b0,_0x2d3666){return new BPromise(function(_0x7e09af,_0x2e9e60){return _0x86e2b0[_0x0474('0x1c')][_0x0474('0x1d')]({'attributes':['id',_0x0474('0x16'),_0x0474('0x1a')],'where':{'role':_0x0474('0x1e'),'chanspy':!![]},'raw':!![]})[_0x0474('0x1f')](function(_0x2d56f1){if(_0x2d56f1){return _0x7e09af(getChanSpyApplications(_0x2d3666,_0x2d56f1));}return _0x7e09af([]);})[_0x0474('0x20')](function(_0x1343bf){_0x2e9e60(_0x1343bf);});});};module[_0x0474('0x21')]=function(_0x5b9eda,_0x3e7a42){var _0x546b49=_0x5b9eda[_0x0474('0x22')];return _0x5b9eda['define'](_0x0474('0x23'),attributes,{'tableName':_0x0474('0x24'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x5c1de1,_0x29716a,_0x4cb79e){return getChanSpyPromise(_0x546b49,_0x5c1de1)[_0x0474('0x1f')](function(_0x1a2e7b){if(_0x1a2e7b&&_0x1a2e7b[_0x0474('0x25')]){return _0x546b49['VoiceExtension']['bulkCreate'](_0x1a2e7b);}})['then'](function(){_0x4cb79e();})[_0x0474('0x20')](function(_0x1622fb){_0x4cb79e(_0x1622fb);});},'afterUpdate':function(_0x142a35,_0x29454e,_0x3727c4){return _0x546b49[_0x0474('0x26')][_0x0474('0x27')]({'where':{'ChanSpyId':_0x142a35['id']}})[_0x0474('0x1f')](function(){return getChanSpyPromise(_0x546b49,_0x142a35);})[_0x0474('0x1f')](function(_0x596792){if(_0x596792&&_0x596792[_0x0474('0x25')]){return _0x546b49[_0x0474('0x26')][_0x0474('0x28')](_0x596792);}})[_0x0474('0x1f')](function(){_0x3727c4();})[_0x0474('0x20')](function(_0x51fd11){_0x3727c4(_0x51fd11);});},'afterDestroy':function(_0x4c7b44,_0x52215b,_0x2ed3ff){return _0x546b49[_0x0474('0x26')]['destroy']({'where':{'ChanSpyId':_0x4c7b44['id']}})[_0x0474('0x1f')](function(){_0x2ed3ff();})['catch'](function(_0x3c18e5){_0x2ed3ff(_0x3c18e5);});}}});};
\ No newline at end of file
+var _0x0fc8=['system','merge','Set','CDR(type)=%s','chanspy','recordingFormat','auth','push','Authenticate','password','ChanSpy','SIP/%s,%s','name','join','record','StopMixMonitor','concat','internal','User','findAll','agent','then','models','define','VoiceChanSpy','voice_chanspy','length','VoiceExtension','bulkCreate','catch','destroy','util','bluebird','./voiceChanSpy.attributes','from-sip','format','%s%s','prefix'];(function(_0x252efb,_0x218db1){var _0x24fb9c=function(_0x7bb23f){while(--_0x7bb23f){_0x252efb['push'](_0x252efb['shift']());}};_0x24fb9c(++_0x218db1);}(_0x0fc8,0xdd));var _0x80fc=function(_0x27fc4,_0x3bcf6a){_0x27fc4=_0x27fc4-0x0;var _0x16f5c0=_0x0fc8[_0x27fc4];return _0x16f5c0;};'use strict';var _=require('lodash');var util=require(_0x80fc('0x0'));var BPromise=require(_0x80fc('0x1'));var attributes=require(_0x80fc('0x2'));var getUserApplications=function(_0x6f3244,_0xc1908d,_0xb0c066){var _0x15dd32=0x1;var _0x418a9f=[];var _0x4ef684={'context':_0xc1908d['context']||_0x80fc('0x3'),'exten':util[_0x80fc('0x4')](_0x80fc('0x5'),_0x6f3244[_0x80fc('0x6')],_0xb0c066),'type':_0x80fc('0x7'),'isApp':![],'ChanSpyId':_0x6f3244['id'],'UserId':_0xc1908d['id']};_0x418a9f['push'](_[_0x80fc('0x8')]({'app':_0x80fc('0x9'),'appdata':util[_0x80fc('0x4')](_0x80fc('0xa'),_0x80fc('0xb')),'priority':_0x15dd32++},_0x4ef684));if(_0x6f3244['record']){_0x418a9f['push'](_['merge']({'app':'MixMonitor','appdata':util['format']('${UNIQUEID}.%s,a',_0x6f3244[_0x80fc('0xc')]),'priority':_0x15dd32++},_0x4ef684));}if(_0x6f3244[_0x80fc('0xd')]){_0x418a9f[_0x80fc('0xe')](_[_0x80fc('0x8')]({'app':_0x80fc('0xf'),'appdata':_0x6f3244[_0x80fc('0x10')],'priority':_0x15dd32++},_0x4ef684));}_0x418a9f[_0x80fc('0xe')](_[_0x80fc('0x8')]({'app':_0x80fc('0x11'),'appdata':util['format'](_0x80fc('0x12'),_0xc1908d[_0x80fc('0x13')],_0x6f3244['options']?_0x6f3244['options'][_0x80fc('0x14')](''):''),'priority':_0x15dd32++},_0x4ef684));if(_0x6f3244[_0x80fc('0x15')]){_0x418a9f[_0x80fc('0xe')](_[_0x80fc('0x8')]({'app':_0x80fc('0x16'),'priority':_0x15dd32++},_0x4ef684));}return _0x418a9f;};var getChanSpyApplications=function(_0x2ea8f3,_0x41d2e9){var _0x3c8ffa=[];for(var _0x272a37=0x0,_0x7a518a=0x1;_0x272a37<_0x41d2e9['length'];_0x272a37++,_0x7a518a=0x1){_0x3c8ffa=_0x3c8ffa[_0x80fc('0x17')](getUserApplications(_0x2ea8f3,_0x41d2e9[_0x272a37],_0x41d2e9[_0x272a37][_0x80fc('0x18')]));if(_0x41d2e9[_0x272a37]['internal']!=_0x41d2e9[_0x272a37][_0x80fc('0x13')]){_0x3c8ffa=_0x3c8ffa[_0x80fc('0x17')](getUserApplications(_0x2ea8f3,_0x41d2e9[_0x272a37],_0x41d2e9[_0x272a37][_0x80fc('0x13')]));}}return _0x3c8ffa;};var getChanSpyPromise=function(_0xdcf1f3,_0x4b92ce){return new BPromise(function(_0x50fc6e,_0x1e2c67){return _0xdcf1f3[_0x80fc('0x19')][_0x80fc('0x1a')]({'attributes':['id','name',_0x80fc('0x18')],'where':{'role':_0x80fc('0x1b'),'chanspy':!![]},'raw':!![]})[_0x80fc('0x1c')](function(_0x650c3c){if(_0x650c3c){return _0x50fc6e(getChanSpyApplications(_0x4b92ce,_0x650c3c));}return _0x50fc6e([]);})['catch'](function(_0x1d2e43){_0x1e2c67(_0x1d2e43);});});};module['exports']=function(_0x1b2f9c,_0x724c6c){var _0x46b8ca=_0x1b2f9c[_0x80fc('0x1d')];return _0x1b2f9c[_0x80fc('0x1e')](_0x80fc('0x1f'),attributes,{'tableName':_0x80fc('0x20'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x52b9c2,_0x3503b2,_0x2ba209){return getChanSpyPromise(_0x46b8ca,_0x52b9c2)[_0x80fc('0x1c')](function(_0x27cdfc){if(_0x27cdfc&&_0x27cdfc[_0x80fc('0x21')]){return _0x46b8ca[_0x80fc('0x22')][_0x80fc('0x23')](_0x27cdfc);}})[_0x80fc('0x1c')](function(){_0x2ba209();})[_0x80fc('0x24')](function(_0x3634ec){_0x2ba209(_0x3634ec);});},'afterUpdate':function(_0x5871b9,_0x4df3e7,_0x42d3ea){return _0x46b8ca[_0x80fc('0x22')][_0x80fc('0x25')]({'where':{'ChanSpyId':_0x5871b9['id']}})[_0x80fc('0x1c')](function(){return getChanSpyPromise(_0x46b8ca,_0x5871b9);})['then'](function(_0x33abe6){if(_0x33abe6&&_0x33abe6[_0x80fc('0x21')]){return _0x46b8ca[_0x80fc('0x22')]['bulkCreate'](_0x33abe6);}})[_0x80fc('0x1c')](function(){_0x42d3ea();})[_0x80fc('0x24')](function(_0x322e31){_0x42d3ea(_0x322e31);});},'afterDestroy':function(_0x2d0d52,_0xa58179,_0x3ffd9e){return _0x46b8ca[_0x80fc('0x22')]['destroy']({'where':{'ChanSpyId':_0x2d0d52['id']}})[_0x80fc('0x1c')](function(){_0x3ffd9e();})['catch'](function(_0x3c3a2e){_0x3ffd9e(_0x3c3a2e);});}}});};
\ No newline at end of file
index ccd6462..ef0643a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f68=['VoiceChanSpy,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','jayson/promise','client','request','then','info','VoiceChanSpy,\x20%s,\x20%s','debug'];(function(_0x7d4526,_0x1d82fb){var _0x1941cd=function(_0x2a8c22){while(--_0x2a8c22){_0x7d4526['push'](_0x7d4526['shift']());}};_0x1941cd(++_0x1d82fb);}(_0x2f68,0x9a));var _0x82f6=function(_0x49fda8,_0x1439b4){_0x49fda8=_0x49fda8-0x0;var _0x34d121=_0x2f68[_0x49fda8];return _0x34d121;};'use strict';var _=require('lodash');var util=require(_0x82f6('0x0'));var moment=require(_0x82f6('0x1'));var BPromise=require(_0x82f6('0x2'));var rs=require(_0x82f6('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x82f6('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x82f6('0x5'))(_0x82f6('0x6'));var config=require('../../config/environment');var jayson=require(_0x82f6('0x7'));var client=jayson[_0x82f6('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5a8089,_0x1bc0be,_0x5660bf){return new BPromise(function(_0x5daa3c,_0x864400){return client[_0x82f6('0x9')](_0x5a8089,_0x5660bf)[_0x82f6('0xa')](function(_0x5ee0e5){logger[_0x82f6('0xb')](_0x82f6('0xc'),_0x1bc0be,'request\x20sent');logger[_0x82f6('0xd')](_0x82f6('0xe'),_0x1bc0be,_0x82f6('0xf'),JSON[_0x82f6('0x10')](_0x5ee0e5));if(_0x5ee0e5[_0x82f6('0x11')]){if(_0x5ee0e5[_0x82f6('0x11')]['code']===0x1f4){logger[_0x82f6('0x11')](_0x82f6('0xc'),_0x1bc0be,_0x5ee0e5['error'][_0x82f6('0x12')]);return _0x864400(_0x5ee0e5[_0x82f6('0x11')][_0x82f6('0x12')]);}logger[_0x82f6('0x11')](_0x82f6('0xc'),_0x1bc0be,_0x5ee0e5[_0x82f6('0x11')][_0x82f6('0x12')]);return _0x5daa3c(_0x5ee0e5[_0x82f6('0x11')][_0x82f6('0x12')]);}else{logger['info'](_0x82f6('0xc'),_0x1bc0be,'request\x20sent');_0x5daa3c(_0x5ee0e5[_0x82f6('0x13')][_0x82f6('0x12')]);}})[_0x82f6('0x14')](function(_0x1033d3){logger[_0x82f6('0x11')](_0x82f6('0xc'),_0x1bc0be,_0x1033d3);_0x864400(_0x1033d3);});});}
\ No newline at end of file
+var _0xf4eb=['VoiceChanSpy,\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(_0x20afc3,_0x2f189a){var _0x4cbb43=function(_0x647042){while(--_0x647042){_0x20afc3['push'](_0x20afc3['shift']());}};_0x4cbb43(++_0x2f189a);}(_0xf4eb,0xec));var _0xbf4e=function(_0x3103ee,_0x35af2c){_0x3103ee=_0x3103ee-0x0;var _0x3979b2=_0xf4eb[_0x3103ee];return _0x3979b2;};'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')]('VoiceChanSpy,\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')]('VoiceChanSpy,\x20%s,\x20%s',_0x540736,_0x912fc0);_0x5e23d4(_0x912fc0);});});}
\ No newline at end of file
index 8e3c66a..5e4d3f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6db7=['Router','fs-extra','../../config/environment','./voiceContext.controller','get','isAuthenticated','index','/:id','post','create','update','destroy','multer','util','path','connect-timeout','express'];(function(_0x583479,_0x1e27e0){var _0x4ce078=function(_0xc78cae){while(--_0xc78cae){_0x583479['push'](_0x583479['shift']());}};_0x4ce078(++_0x1e27e0);}(_0x6db7,0x14f));var _0x76db=function(_0x1a9b94,_0x4d763e){_0x1a9b94=_0x1a9b94-0x0;var _0x379102=_0x6db7[_0x1a9b94];return _0x379102;};'use strict';var multer=require(_0x76db('0x0'));var util=require(_0x76db('0x1'));var path=require(_0x76db('0x2'));var timeout=require(_0x76db('0x3'));var express=require(_0x76db('0x4'));var router=express[_0x76db('0x5')]();var fs_extra=require(_0x76db('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x76db('0x7'));var controller=require(_0x76db('0x8'));router[_0x76db('0x9')]('/',auth[_0x76db('0xa')](),controller[_0x76db('0xb')]);router[_0x76db('0x9')](_0x76db('0xc'),auth['isAuthenticated'](),controller['show']);router[_0x76db('0xd')]('/',auth[_0x76db('0xa')](),controller[_0x76db('0xe')]);router['put']('/:id',auth[_0x76db('0xa')](),controller[_0x76db('0xf')]);router['delete'](_0x76db('0xc'),auth['isAuthenticated'](),controller[_0x76db('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0x034d=['put','update','delete','destroy','exports','multer','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceContext.controller','get','isAuthenticated','index','/:id'];(function(_0x47c505,_0x53faff){var _0x4c0e62=function(_0x1fc39c){while(--_0x1fc39c){_0x47c505['push'](_0x47c505['shift']());}};_0x4c0e62(++_0x53faff);}(_0x034d,0x9e));var _0xd034=function(_0x37abe8,_0x59e65d){_0x37abe8=_0x37abe8-0x0;var _0x4c2670=_0x034d[_0x37abe8];return _0x4c2670;};'use strict';var multer=require(_0xd034('0x0'));var util=require('util');var path=require(_0xd034('0x1'));var timeout=require(_0xd034('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xd034('0x3'));var auth=require(_0xd034('0x4'));var interaction=require(_0xd034('0x5'));var config=require(_0xd034('0x6'));var controller=require(_0xd034('0x7'));router[_0xd034('0x8')]('/',auth[_0xd034('0x9')](),controller[_0xd034('0xa')]);router['get'](_0xd034('0xb'),auth[_0xd034('0x9')](),controller['show']);router['post']('/',auth[_0xd034('0x9')](),controller['create']);router[_0xd034('0xc')]('/:id',auth['isAuthenticated'](),controller[_0xd034('0xd')]);router[_0xd034('0xe')]('/:id',auth[_0xd034('0x9')](),controller[_0xd034('0xf')]);module[_0xd034('0x10')]=router;
\ No newline at end of file
index b243ff1..6127131 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2d6b=['name','sequelize','exports','STRING'];(function(_0xab6781,_0x13e0c0){var _0x260d0e=function(_0x17e8c5){while(--_0x17e8c5){_0xab6781['push'](_0xab6781['shift']());}};_0x260d0e(++_0x13e0c0);}(_0x2d6b,0xe1));var _0xb2d6=function(_0x4b73a2,_0x40b5fe){_0x4b73a2=_0x4b73a2-0x0;var _0x383c66=_0x2d6b[_0x4b73a2];return _0x383c66;};'use strict';var Sequelize=require(_0xb2d6('0x0'));module[_0xb2d6('0x1')]={'name':{'type':Sequelize[_0xb2d6('0x2')],'unique':_0xb2d6('0x3')},'description':{'type':Sequelize[_0xb2d6('0x2')],'allowNull':!![]},'defaultEntry':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x9ff1=['BOOLEAN','sequelize','STRING','name'];(function(_0x28d4ef,_0x19e8b5){var _0x35136f=function(_0x1c92da){while(--_0x1c92da){_0x28d4ef['push'](_0x28d4ef['shift']());}};_0x35136f(++_0x19e8b5);}(_0x9ff1,0x1b1));var _0x19ff=function(_0x297df7,_0x3e986d){_0x297df7=_0x297df7-0x0;var _0x1e2bf5=_0x9ff1[_0x297df7];return _0x1e2bf5;};'use strict';var Sequelize=require(_0x19ff('0x0'));module['exports']={'name':{'type':Sequelize[_0x19ff('0x1')],'unique':_0x19ff('0x2')},'description':{'type':Sequelize['STRING'],'allowNull':!![]},'defaultEntry':{'type':Sequelize[_0x19ff('0x3')],'defaultValue':0x0}};
\ No newline at end of file
index 1cbd86f..4abb581 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe029=['length','hasOwnProperty','nolimit','order','sort','where','pick','filters','merge','filter','includeAll','include','findAll','rows','show','params','options','find','create','body','readFileSync','root','server/files/templates/context.ejs','utf8','render','writeFileSync','/etc/asterisk/extensions_xcally_contexts.conf','chan_sip.so','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','join','Reload','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','ejs','fs-extra','crypto','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../mysqldb','client','http','request','then','info','VoiceContext,\x20%s,\x20%s','request\x20sent','debug','VoiceContext,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','sendStatus','status','end','undefined','limit','offset','count','set','Content-Range','json','apply','reject','save','destroy','Contexts','UserProfileResource','stack','name','send','index','VoiceContext','rawAttributes','fieldName','type','key','model','map','keys','query','intersection','fields','attributes'];(function(_0x1305e3,_0x43a724){var _0x1068e9=function(_0x1bc555){while(--_0x1bc555){_0x1305e3['push'](_0x1305e3['shift']());}};_0x1068e9(++_0x43a724);}(_0xe029,0xfd));var _0x9e02=function(_0x621bee,_0x58f8c0){_0x621bee=_0x621bee-0x0;var _0x3076c8=_0xe029[_0x621bee];return _0x3076c8;};'use strict';var emlformat=require(_0x9e02('0x0'));var rimraf=require(_0x9e02('0x1'));var zipdir=require(_0x9e02('0x2'));var jsonpatch=require(_0x9e02('0x3'));var rp=require(_0x9e02('0x4'));var moment=require(_0x9e02('0x5'));var BPromise=require(_0x9e02('0x6'));var Mustache=require('mustache');var util=require(_0x9e02('0x7'));var path=require(_0x9e02('0x8'));var sox=require(_0x9e02('0x9'));var csv=require('to-csv');var ejs=require(_0x9e02('0xa'));var fs=require('fs');var fs_extra=require(_0x9e02('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x9e02('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x9e02('0xd'));var toCsv=require(_0x9e02('0xe'));var querystring=require(_0x9e02('0xf'));var Papa=require('papaparse');var Redis=require(_0x9e02('0x10'));var authService=require(_0x9e02('0x11'));var qs=require(_0x9e02('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x9e02('0x13'));var logger=require(_0x9e02('0x14'))(_0x9e02('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x9e02('0x16'))['db'];var jayson=require('jayson/promise');var client=jayson[_0x9e02('0x17')][_0x9e02('0x18')]({'port':0x232a});function respondWithRpcPromise(_0x455053,_0x4c72ba,_0xd60ade,_0x195d1c){return new BPromise(function(_0x142611,_0x3a1e63){var _0x43b1ce=_0x195d1c||client;return _0x43b1ce[_0x9e02('0x19')](_0x455053,_0xd60ade)[_0x9e02('0x1a')](function(_0x25974e){logger[_0x9e02('0x1b')](_0x9e02('0x1c'),_0x4c72ba,_0x9e02('0x1d'));logger[_0x9e02('0x1e')](_0x9e02('0x1f'),_0x4c72ba,'request\x20sent',JSON[_0x9e02('0x20')](_0x25974e));if(_0x25974e[_0x9e02('0x21')]){if(_0x25974e[_0x9e02('0x21')]['code']===0x1f4){logger[_0x9e02('0x21')]('VoiceContext,\x20%s,\x20%s',_0x4c72ba,_0x25974e[_0x9e02('0x21')]['message']);return _0x3a1e63(_0x25974e[_0x9e02('0x21')][_0x9e02('0x22')]);}logger[_0x9e02('0x21')](_0x9e02('0x1c'),_0x4c72ba,_0x25974e['error'][_0x9e02('0x22')]);return _0x142611(_0x25974e[_0x9e02('0x21')][_0x9e02('0x22')]);}else{logger[_0x9e02('0x1b')](_0x9e02('0x1c'),_0x4c72ba,_0x9e02('0x1d'));_0x142611(_0x25974e['result'][_0x9e02('0x22')]);}})[_0x9e02('0x23')](function(_0x421fbc){logger[_0x9e02('0x21')](_0x9e02('0x1c'),_0x4c72ba,_0x421fbc);_0x3a1e63(_0x421fbc);});});}function respondWithStatusCode(_0x54a7f9,_0x584d64){_0x584d64=_0x584d64||0xcc;return function(_0x40d5f1){if(_0x40d5f1){return _0x54a7f9[_0x9e02('0x24')](_0x584d64);}return _0x54a7f9[_0x9e02('0x25')](_0x584d64)[_0x9e02('0x26')]();};}function respondWithResult(_0x41a756,_0x26785e){_0x26785e=_0x26785e||0xc8;return function(_0x566838){if(_0x566838){return _0x41a756[_0x9e02('0x25')](_0x26785e)['json'](_0x566838);}};}function respondWithFilteredResult(_0x173536,_0x19118b){return function(_0x4dcb82){if(_0x4dcb82){var _0x5d486e=typeof _0x19118b['offset']===_0x9e02('0x27')&&typeof _0x19118b[_0x9e02('0x28')]==='undefined';var _0x5e5052=_0x4dcb82['count'];var _0x4f06cb=_0x5d486e?0x0:_0x19118b[_0x9e02('0x29')];var _0xa42d91=_0x5d486e?_0x4dcb82[_0x9e02('0x2a')]:_0x19118b[_0x9e02('0x29')]+_0x19118b['limit'];var _0x5b7f0c;if(_0xa42d91>=_0x5e5052){_0xa42d91=_0x5e5052;_0x5b7f0c=0xc8;}else{_0x5b7f0c=0xce;}_0x173536[_0x9e02('0x25')](_0x5b7f0c);return _0x173536[_0x9e02('0x2b')](_0x9e02('0x2c'),_0x4f06cb+'-'+_0xa42d91+'/'+_0x5e5052)[_0x9e02('0x2d')](_0x4dcb82);}return null;};}function patchUpdates(_0x53d76e){return function(_0x62a1c8){try{jsonpatch[_0x9e02('0x2e')](_0x62a1c8,_0x53d76e,!![]);}catch(_0x37c127){return BPromise[_0x9e02('0x2f')](_0x37c127);}return _0x62a1c8[_0x9e02('0x30')]();};}function saveUpdates(_0x5471a5,_0x19755d){return function(_0x545826){if(_0x545826){return _0x545826['update'](_0x5471a5)[_0x9e02('0x1a')](function(_0x7e6abc){return _0x7e6abc;});}return null;};}function removeEntity(_0x504780,_0xe7ffdf){return function(_0x24828a){if(_0x24828a){return _0x24828a[_0x9e02('0x31')]()[_0x9e02('0x1a')](function(){var _0x4c957d=_0x24828a['get']({'plain':!![]});var _0x54a07f=_0x9e02('0x32');return db[_0x9e02('0x33')]['destroy']({'where':{'type':_0x54a07f,'resourceId':_0x4c957d['id']}})[_0x9e02('0x1a')](function(){return _0x24828a;});})[_0x9e02('0x1a')](function(){_0x504780[_0x9e02('0x25')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5d2901,_0x37903a){return function(_0x33d58f){if(!_0x33d58f){_0x5d2901[_0x9e02('0x24')](0x194);}return _0x33d58f;};}function handleError(_0x2ce56d,_0x2fa08e){_0x2fa08e=_0x2fa08e||0x1f4;return function(_0x24092b){logger[_0x9e02('0x21')](_0x24092b[_0x9e02('0x34')]);if(_0x24092b[_0x9e02('0x35')]){delete _0x24092b[_0x9e02('0x35')];}_0x2ce56d[_0x9e02('0x25')](_0x2fa08e)[_0x9e02('0x36')](_0x24092b);};}exports[_0x9e02('0x37')]=function(_0x595a2b,_0x4546ad){var _0x1d7eba={},_0x207530={},_0x4d32bf={'count':0x0,'rows':[]};var _0x3ff10d=_['map'](db[_0x9e02('0x38')][_0x9e02('0x39')],function(_0x231076){return{'name':_0x231076[_0x9e02('0x3a')],'type':_0x231076[_0x9e02('0x3b')][_0x9e02('0x3c')]};});_0x207530[_0x9e02('0x3d')]=_[_0x9e02('0x3e')](_0x3ff10d,_0x9e02('0x35'));_0x207530['query']=_[_0x9e02('0x3f')](_0x595a2b[_0x9e02('0x40')]);_0x207530['filters']=_['intersection'](_0x207530[_0x9e02('0x3d')],_0x207530['query']);_0x1d7eba['attributes']=_[_0x9e02('0x41')](_0x207530[_0x9e02('0x3d')],qs['fields'](_0x595a2b[_0x9e02('0x40')][_0x9e02('0x42')]));_0x1d7eba[_0x9e02('0x43')]=_0x1d7eba[_0x9e02('0x43')][_0x9e02('0x44')]?_0x1d7eba[_0x9e02('0x43')]:_0x207530[_0x9e02('0x3d')];if(!_0x595a2b[_0x9e02('0x40')][_0x9e02('0x45')](_0x9e02('0x46'))){_0x1d7eba['limit']=qs[_0x9e02('0x28')](_0x595a2b[_0x9e02('0x40')][_0x9e02('0x28')]);_0x1d7eba['offset']=qs[_0x9e02('0x29')](_0x595a2b[_0x9e02('0x40')][_0x9e02('0x29')]);}_0x1d7eba[_0x9e02('0x47')]=qs[_0x9e02('0x48')](_0x595a2b['query'][_0x9e02('0x48')]);_0x1d7eba[_0x9e02('0x49')]=qs['filters'](_[_0x9e02('0x4a')](_0x595a2b['query'],_0x207530[_0x9e02('0x4b')]),_0x3ff10d);if(_0x595a2b[_0x9e02('0x40')]['filter']){_0x1d7eba['where']=_[_0x9e02('0x4c')](_0x1d7eba['where'],{'$or':_[_0x9e02('0x3e')](_0x3ff10d,function(_0x2f4630){if(_0x2f4630[_0x9e02('0x3b')]!=='VIRTUAL'){var _0x19b8d1={};_0x19b8d1[_0x2f4630['name']]={'$like':'%'+_0x595a2b[_0x9e02('0x40')][_0x9e02('0x4d')]+'%'};return _0x19b8d1;}})});}_0x1d7eba=_['merge']({},_0x1d7eba,_0x595a2b['options']);var _0x38dfbb={'where':_0x1d7eba['where']};return db[_0x9e02('0x38')][_0x9e02('0x2a')](_0x38dfbb)['then'](function(_0x3399bb){_0x4d32bf[_0x9e02('0x2a')]=_0x3399bb;if(_0x595a2b['query'][_0x9e02('0x4e')]){_0x1d7eba[_0x9e02('0x4f')]=[{'all':!![]}];}return db['VoiceContext'][_0x9e02('0x50')](_0x1d7eba);})[_0x9e02('0x1a')](function(_0x4dc08d){_0x4d32bf[_0x9e02('0x51')]=_0x4dc08d;return _0x4d32bf;})[_0x9e02('0x1a')](respondWithFilteredResult(_0x4546ad,_0x1d7eba))[_0x9e02('0x23')](handleError(_0x4546ad,null));};exports[_0x9e02('0x52')]=function(_0x156bc3,_0x51665d){var _0x12836e={'raw':![],'where':{'id':_0x156bc3[_0x9e02('0x53')]['id']}},_0x2c1097={};_0x2c1097[_0x9e02('0x3d')]=_[_0x9e02('0x3f')](db[_0x9e02('0x38')]['rawAttributes']);_0x2c1097[_0x9e02('0x40')]=_[_0x9e02('0x3f')](_0x156bc3['query']);_0x2c1097['filters']=_['intersection'](_0x2c1097[_0x9e02('0x3d')],_0x2c1097[_0x9e02('0x40')]);_0x12836e[_0x9e02('0x43')]=_[_0x9e02('0x41')](_0x2c1097[_0x9e02('0x3d')],qs[_0x9e02('0x42')](_0x156bc3['query']['fields']));_0x12836e['attributes']=_0x12836e[_0x9e02('0x43')][_0x9e02('0x44')]?_0x12836e[_0x9e02('0x43')]:_0x2c1097['model'];if(_0x156bc3[_0x9e02('0x40')][_0x9e02('0x4e')]){_0x12836e[_0x9e02('0x4f')]=[{'all':!![]}];}_0x12836e=_['merge']({},_0x12836e,_0x156bc3[_0x9e02('0x54')]);return db['VoiceContext'][_0x9e02('0x55')](_0x12836e)[_0x9e02('0x1a')](handleEntityNotFound(_0x51665d,null))['then'](respondWithResult(_0x51665d,null))[_0x9e02('0x23')](handleError(_0x51665d,null));};exports[_0x9e02('0x56')]=function(_0x37becb,_0x594142,_0x11b829){var _0x2938f5;return db[_0x9e02('0x38')][_0x9e02('0x56')](_0x37becb[_0x9e02('0x57')],{'raw':!![]})[_0x9e02('0x1a')](function(_0x4f4bea){_0x2938f5=_0x4f4bea;return db[_0x9e02('0x38')][_0x9e02('0x50')]({'raw':!![]});})[_0x9e02('0x1a')](function(_0x589cff){var _0x568add=fs[_0x9e02('0x58')](path['join'](config[_0x9e02('0x59')],_0x9e02('0x5a')),_0x9e02('0x5b'));var _0x37811c=ejs[_0x9e02('0x5c')](_0x568add,{'contexts':_0x589cff||[]});fs[_0x9e02('0x5d')](_0x9e02('0x5e'),_0x37811c);})[_0x9e02('0x1a')](function(){return respondWithRpcPromise('Reload',_0x9e02('0x56'),{'module':_0x9e02('0x5f')});})[_0x9e02('0x1a')](function(){var _0x528eaf=_0x37becb['user'][_0x9e02('0x60')]({'plain':!![]});if(!_0x528eaf)throw new Error(_0x9e02('0x61'));if(_0x528eaf[_0x9e02('0x62')]===_0x9e02('0x63')){var _0x3620f6=_0x2938f5[_0x9e02('0x60')]({'plain':!![]});return db[_0x9e02('0x64')][_0x9e02('0x55')]({'where':{'name':_0x9e02('0x32'),'userProfileId':_0x528eaf[_0x9e02('0x65')]},'raw':!![]})[_0x9e02('0x1a')](function(_0x55605e){if(_0x55605e&&_0x55605e[_0x9e02('0x66')]===0x0){return db[_0x9e02('0x33')][_0x9e02('0x56')]({'name':_0x3620f6[_0x9e02('0x35')],'resourceId':_0x3620f6['id'],'type':_0x55605e[_0x9e02('0x35')],'sectionId':_0x55605e['id']},{})[_0x9e02('0x1a')](function(){return _0x2938f5;});}else{return _0x2938f5;}})[_0x9e02('0x23')](function(_0x1dfd21){logger[_0x9e02('0x21')](_0x9e02('0x67'),_0x1dfd21);throw _0x1dfd21;});}return _0x2938f5;})[_0x9e02('0x1a')](respondWithResult(_0x594142,0xc9))['catch'](handleError(_0x594142,null));};exports[_0x9e02('0x68')]=function(_0x19013a,_0x5b50d3,_0x25a140){var _0x4aa7de;return db['VoiceContext'][_0x9e02('0x55')]({'where':{'id':_0x19013a[_0x9e02('0x53')]['id']}})[_0x9e02('0x1a')](handleEntityNotFound(_0x5b50d3,null))[_0x9e02('0x1a')](saveUpdates(_0x19013a['body'],null))[_0x9e02('0x1a')](function(_0x15d5b2){if(_0x15d5b2){_0x4aa7de=_0x15d5b2;return db[_0x9e02('0x38')][_0x9e02('0x50')]({'raw':!![]});}})[_0x9e02('0x1a')](function(_0x3c2d18){var _0x4a1b3e=fs[_0x9e02('0x58')](path[_0x9e02('0x69')](config['root'],_0x9e02('0x5a')),_0x9e02('0x5b'));var _0x2b33e9=ejs['render'](_0x4a1b3e,{'contexts':_0x3c2d18||[]});fs[_0x9e02('0x5d')](_0x9e02('0x5e'),_0x2b33e9);})[_0x9e02('0x1a')](function(){return respondWithRpcPromise(_0x9e02('0x6a'),_0x9e02('0x68'),{'module':'chan_sip.so'});})['then'](function(){return _0x4aa7de;})[_0x9e02('0x1a')](respondWithResult(_0x5b50d3,null))[_0x9e02('0x23')](handleError(_0x5b50d3,null));};exports[_0x9e02('0x31')]=function(_0x433280,_0x4631f4,_0x1937a6){var _0x160b94;return db[_0x9e02('0x38')][_0x9e02('0x55')]({'where':{'id':_0x433280[_0x9e02('0x53')]['id']}})['then'](handleEntityNotFound(_0x4631f4,null))[_0x9e02('0x1a')](removeEntity(_0x4631f4,null))['then'](function(){return db[_0x9e02('0x38')][_0x9e02('0x50')]({'raw':!![]});})[_0x9e02('0x1a')](function(_0x437c7c){var _0x2df966=fs[_0x9e02('0x58')](path[_0x9e02('0x69')](config[_0x9e02('0x59')],_0x9e02('0x5a')),_0x9e02('0x5b'));var _0x2a87b8=ejs[_0x9e02('0x5c')](_0x2df966,{'contexts':_0x437c7c});fs[_0x9e02('0x5d')](_0x9e02('0x5e'),_0x2a87b8);return respondWithRpcPromise('Reload',_0x9e02('0x31'),{'module':_0x9e02('0x5f')});})[_0x9e02('0x23')](handleError(_0x4631f4,null));};
\ No newline at end of file
+var _0x88f6=['merge','VIRTUAL','options','includeAll','include','findAll','rows','params','rawAttributes','find','create','body','readFileSync','join','root','server/files/templates/context.ejs','render','writeFileSync','/etc/asterisk/extensions_xcally_contexts.conf','Reload','chan_sip.so','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','utf8','destroy','eml-format','zip-dir','fast-json-patch','request-promise','mustache','util','path','sox','to-csv','squel','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','http','request','then','VoiceContext,\x20%s,\x20%s','request\x20sent','debug','VoiceContext,\x20%s,\x20%s,\x20%s','stringify','code','error','message','info','result','catch','sendStatus','status','end','json','undefined','limit','offset','count','apply','save','update','get','Contexts','name','send','index','map','VoiceContext','type','key','query','keys','filters','model','attributes','intersection','fields','hasOwnProperty','nolimit','sort','where','pick','filter'];(function(_0x22b6b6,_0x42a1a4){var _0x390206=function(_0x1a5ddb){while(--_0x1a5ddb){_0x22b6b6['push'](_0x22b6b6['shift']());}};_0x390206(++_0x42a1a4);}(_0x88f6,0x13d));var _0x688f=function(_0x534a40,_0x260eec){_0x534a40=_0x534a40-0x0;var _0x428cd7=_0x88f6[_0x534a40];return _0x428cd7;};'use strict';var emlformat=require(_0x688f('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x688f('0x1'));var jsonpatch=require(_0x688f('0x2'));var rp=require(_0x688f('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x688f('0x4'));var util=require(_0x688f('0x5'));var path=require(_0x688f('0x6'));var sox=require(_0x688f('0x7'));var csv=require(_0x688f('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x688f('0x9'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x688f('0xa'));var toCsv=require(_0x688f('0x8'));var querystring=require(_0x688f('0xb'));var Papa=require(_0x688f('0xc'));var Redis=require(_0x688f('0xd'));var authService=require(_0x688f('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0x688f('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x688f('0x10'))('api');var utils=require(_0x688f('0x11'));var config=require(_0x688f('0x12'));var licenseUtil=require(_0x688f('0x13'));var db=require('../../mysqldb')['db'];var jayson=require('jayson/promise');var client=jayson['client'][_0x688f('0x14')]({'port':0x232a});function respondWithRpcPromise(_0x43894a,_0x3246d7,_0x4afa9a,_0x1dd887){return new BPromise(function(_0x1cc358,_0x5863e9){var _0x3ca1be=_0x1dd887||client;return _0x3ca1be[_0x688f('0x15')](_0x43894a,_0x4afa9a)[_0x688f('0x16')](function(_0x161650){logger['info'](_0x688f('0x17'),_0x3246d7,_0x688f('0x18'));logger[_0x688f('0x19')](_0x688f('0x1a'),_0x3246d7,_0x688f('0x18'),JSON[_0x688f('0x1b')](_0x161650));if(_0x161650['error']){if(_0x161650['error'][_0x688f('0x1c')]===0x1f4){logger[_0x688f('0x1d')](_0x688f('0x17'),_0x3246d7,_0x161650[_0x688f('0x1d')][_0x688f('0x1e')]);return _0x5863e9(_0x161650[_0x688f('0x1d')][_0x688f('0x1e')]);}logger['error'](_0x688f('0x17'),_0x3246d7,_0x161650[_0x688f('0x1d')]['message']);return _0x1cc358(_0x161650[_0x688f('0x1d')][_0x688f('0x1e')]);}else{logger[_0x688f('0x1f')]('VoiceContext,\x20%s,\x20%s',_0x3246d7,_0x688f('0x18'));_0x1cc358(_0x161650[_0x688f('0x20')]['message']);}})[_0x688f('0x21')](function(_0x4d10ef){logger['error'](_0x688f('0x17'),_0x3246d7,_0x4d10ef);_0x5863e9(_0x4d10ef);});});}function respondWithStatusCode(_0x14a810,_0x189040){_0x189040=_0x189040||0xcc;return function(_0x3f67ef){if(_0x3f67ef){return _0x14a810[_0x688f('0x22')](_0x189040);}return _0x14a810[_0x688f('0x23')](_0x189040)[_0x688f('0x24')]();};}function respondWithResult(_0x363e11,_0x5a7e98){_0x5a7e98=_0x5a7e98||0xc8;return function(_0x2cac1d){if(_0x2cac1d){return _0x363e11[_0x688f('0x23')](_0x5a7e98)[_0x688f('0x25')](_0x2cac1d);}};}function respondWithFilteredResult(_0x2888c5,_0x4f2915){return function(_0x48b5a4){if(_0x48b5a4){var _0x2cd923=typeof _0x4f2915['offset']===_0x688f('0x26')&&typeof _0x4f2915[_0x688f('0x27')]==='undefined';var _0x14e133=_0x48b5a4['count'];var _0x378b63=_0x2cd923?0x0:_0x4f2915[_0x688f('0x28')];var _0xe404e1=_0x2cd923?_0x48b5a4[_0x688f('0x29')]:_0x4f2915[_0x688f('0x28')]+_0x4f2915[_0x688f('0x27')];var _0x405dde;if(_0xe404e1>=_0x14e133){_0xe404e1=_0x14e133;_0x405dde=0xc8;}else{_0x405dde=0xce;}_0x2888c5['status'](_0x405dde);return _0x2888c5['set']('Content-Range',_0x378b63+'-'+_0xe404e1+'/'+_0x14e133)[_0x688f('0x25')](_0x48b5a4);}return null;};}function patchUpdates(_0x2e6a79){return function(_0x6fcad0){try{jsonpatch[_0x688f('0x2a')](_0x6fcad0,_0x2e6a79,!![]);}catch(_0x5c81de){return BPromise['reject'](_0x5c81de);}return _0x6fcad0[_0x688f('0x2b')]();};}function saveUpdates(_0x77ad84,_0x3baf12){return function(_0x2b7b5c){if(_0x2b7b5c){return _0x2b7b5c[_0x688f('0x2c')](_0x77ad84)[_0x688f('0x16')](function(_0x456899){return _0x456899;});}return null;};}function removeEntity(_0xd87507,_0x211dd3){return function(_0x34717b){if(_0x34717b){return _0x34717b['destroy']()['then'](function(){var _0x372c2d=_0x34717b[_0x688f('0x2d')]({'plain':!![]});var _0x2cc791=_0x688f('0x2e');return db['UserProfileResource']['destroy']({'where':{'type':_0x2cc791,'resourceId':_0x372c2d['id']}})[_0x688f('0x16')](function(){return _0x34717b;});})[_0x688f('0x16')](function(){_0xd87507['status'](0xcc)[_0x688f('0x24')]();});}};}function handleEntityNotFound(_0x45171e,_0xa6142e){return function(_0x4bad06){if(!_0x4bad06){_0x45171e['sendStatus'](0x194);}return _0x4bad06;};}function handleError(_0x57a7dd,_0x12d9a7){_0x12d9a7=_0x12d9a7||0x1f4;return function(_0x9f9aef){logger['error'](_0x9f9aef['stack']);if(_0x9f9aef[_0x688f('0x2f')]){delete _0x9f9aef[_0x688f('0x2f')];}_0x57a7dd[_0x688f('0x23')](_0x12d9a7)[_0x688f('0x30')](_0x9f9aef);};}exports[_0x688f('0x31')]=function(_0x2e9e7f,_0x3f9c3a){var _0x55a9fb={},_0x10f768={},_0x13dfed={'count':0x0,'rows':[]};var _0x21b110=_[_0x688f('0x32')](db[_0x688f('0x33')]['rawAttributes'],function(_0x2327d1){return{'name':_0x2327d1['fieldName'],'type':_0x2327d1[_0x688f('0x34')][_0x688f('0x35')]};});_0x10f768['model']=_[_0x688f('0x32')](_0x21b110,_0x688f('0x2f'));_0x10f768[_0x688f('0x36')]=_[_0x688f('0x37')](_0x2e9e7f[_0x688f('0x36')]);_0x10f768[_0x688f('0x38')]=_['intersection'](_0x10f768[_0x688f('0x39')],_0x10f768[_0x688f('0x36')]);_0x55a9fb[_0x688f('0x3a')]=_[_0x688f('0x3b')](_0x10f768['model'],qs[_0x688f('0x3c')](_0x2e9e7f[_0x688f('0x36')][_0x688f('0x3c')]));_0x55a9fb[_0x688f('0x3a')]=_0x55a9fb[_0x688f('0x3a')]['length']?_0x55a9fb[_0x688f('0x3a')]:_0x10f768[_0x688f('0x39')];if(!_0x2e9e7f[_0x688f('0x36')][_0x688f('0x3d')](_0x688f('0x3e'))){_0x55a9fb[_0x688f('0x27')]=qs[_0x688f('0x27')](_0x2e9e7f[_0x688f('0x36')][_0x688f('0x27')]);_0x55a9fb['offset']=qs[_0x688f('0x28')](_0x2e9e7f[_0x688f('0x36')][_0x688f('0x28')]);}_0x55a9fb['order']=qs[_0x688f('0x3f')](_0x2e9e7f[_0x688f('0x36')][_0x688f('0x3f')]);_0x55a9fb[_0x688f('0x40')]=qs[_0x688f('0x38')](_[_0x688f('0x41')](_0x2e9e7f[_0x688f('0x36')],_0x10f768[_0x688f('0x38')]),_0x21b110);if(_0x2e9e7f[_0x688f('0x36')][_0x688f('0x42')]){_0x55a9fb[_0x688f('0x40')]=_[_0x688f('0x43')](_0x55a9fb[_0x688f('0x40')],{'$or':_['map'](_0x21b110,function(_0x41b249){if(_0x41b249[_0x688f('0x34')]!==_0x688f('0x44')){var _0x5db74e={};_0x5db74e[_0x41b249['name']]={'$like':'%'+_0x2e9e7f[_0x688f('0x36')][_0x688f('0x42')]+'%'};return _0x5db74e;}})});}_0x55a9fb=_[_0x688f('0x43')]({},_0x55a9fb,_0x2e9e7f[_0x688f('0x45')]);var _0x53ed14={'where':_0x55a9fb[_0x688f('0x40')]};return db[_0x688f('0x33')][_0x688f('0x29')](_0x53ed14)[_0x688f('0x16')](function(_0x4ad06a){_0x13dfed[_0x688f('0x29')]=_0x4ad06a;if(_0x2e9e7f[_0x688f('0x36')][_0x688f('0x46')]){_0x55a9fb[_0x688f('0x47')]=[{'all':!![]}];}return db[_0x688f('0x33')][_0x688f('0x48')](_0x55a9fb);})[_0x688f('0x16')](function(_0xeeb91){_0x13dfed[_0x688f('0x49')]=_0xeeb91;return _0x13dfed;})['then'](respondWithFilteredResult(_0x3f9c3a,_0x55a9fb))[_0x688f('0x21')](handleError(_0x3f9c3a,null));};exports['show']=function(_0x3db729,_0x557321){var _0x3345f4={'raw':![],'where':{'id':_0x3db729[_0x688f('0x4a')]['id']}},_0x122dd9={};_0x122dd9['model']=_[_0x688f('0x37')](db[_0x688f('0x33')][_0x688f('0x4b')]);_0x122dd9[_0x688f('0x36')]=_[_0x688f('0x37')](_0x3db729[_0x688f('0x36')]);_0x122dd9[_0x688f('0x38')]=_[_0x688f('0x3b')](_0x122dd9[_0x688f('0x39')],_0x122dd9[_0x688f('0x36')]);_0x3345f4[_0x688f('0x3a')]=_[_0x688f('0x3b')](_0x122dd9[_0x688f('0x39')],qs[_0x688f('0x3c')](_0x3db729['query'][_0x688f('0x3c')]));_0x3345f4[_0x688f('0x3a')]=_0x3345f4['attributes']['length']?_0x3345f4[_0x688f('0x3a')]:_0x122dd9[_0x688f('0x39')];if(_0x3db729['query']['includeAll']){_0x3345f4[_0x688f('0x47')]=[{'all':!![]}];}_0x3345f4=_[_0x688f('0x43')]({},_0x3345f4,_0x3db729[_0x688f('0x45')]);return db[_0x688f('0x33')][_0x688f('0x4c')](_0x3345f4)['then'](handleEntityNotFound(_0x557321,null))[_0x688f('0x16')](respondWithResult(_0x557321,null))['catch'](handleError(_0x557321,null));};exports[_0x688f('0x4d')]=function(_0x4de45d,_0x54d9a3,_0x10901a){var _0x2dca1f;return db['VoiceContext'][_0x688f('0x4d')](_0x4de45d[_0x688f('0x4e')],{'raw':!![]})[_0x688f('0x16')](function(_0x322e1d){_0x2dca1f=_0x322e1d;return db[_0x688f('0x33')]['findAll']({'raw':!![]});})[_0x688f('0x16')](function(_0x543f60){var _0x1f35e5=fs[_0x688f('0x4f')](path[_0x688f('0x50')](config[_0x688f('0x51')],_0x688f('0x52')),'utf8');var _0x245b8d=ejs[_0x688f('0x53')](_0x1f35e5,{'contexts':_0x543f60||[]});fs[_0x688f('0x54')](_0x688f('0x55'),_0x245b8d);})[_0x688f('0x16')](function(){return respondWithRpcPromise(_0x688f('0x56'),_0x688f('0x4d'),{'module':_0x688f('0x57')});})[_0x688f('0x16')](function(){var _0x185098=_0x4de45d[_0x688f('0x58')][_0x688f('0x2d')]({'plain':!![]});if(!_0x185098)throw new Error(_0x688f('0x59'));if(_0x185098[_0x688f('0x5a')]===_0x688f('0x58')){var _0x27c1ca=_0x2dca1f[_0x688f('0x2d')]({'plain':!![]});return db['UserProfileSection'][_0x688f('0x4c')]({'where':{'name':_0x688f('0x2e'),'userProfileId':_0x185098[_0x688f('0x5b')]},'raw':!![]})[_0x688f('0x16')](function(_0x4672da){if(_0x4672da&&_0x4672da[_0x688f('0x5c')]===0x0){return db['UserProfileResource'][_0x688f('0x4d')]({'name':_0x27c1ca[_0x688f('0x2f')],'resourceId':_0x27c1ca['id'],'type':_0x4672da[_0x688f('0x2f')],'sectionId':_0x4672da['id']},{})[_0x688f('0x16')](function(){return _0x2dca1f;});}else{return _0x2dca1f;}})[_0x688f('0x21')](function(_0x3d53d1){logger['error'](_0x688f('0x5d'),_0x3d53d1);throw _0x3d53d1;});}return _0x2dca1f;})[_0x688f('0x16')](respondWithResult(_0x54d9a3,0xc9))[_0x688f('0x21')](handleError(_0x54d9a3,null));};exports['update']=function(_0x3b4418,_0x54a359,_0x5bed86){var _0x4471e7;return db[_0x688f('0x33')][_0x688f('0x4c')]({'where':{'id':_0x3b4418[_0x688f('0x4a')]['id']}})[_0x688f('0x16')](handleEntityNotFound(_0x54a359,null))['then'](saveUpdates(_0x3b4418['body'],null))[_0x688f('0x16')](function(_0x30fcef){if(_0x30fcef){_0x4471e7=_0x30fcef;return db[_0x688f('0x33')][_0x688f('0x48')]({'raw':!![]});}})[_0x688f('0x16')](function(_0x47a75f){var _0x2b996b=fs[_0x688f('0x4f')](path[_0x688f('0x50')](config[_0x688f('0x51')],'server/files/templates/context.ejs'),_0x688f('0x5e'));var _0x5542cb=ejs['render'](_0x2b996b,{'contexts':_0x47a75f||[]});fs[_0x688f('0x54')](_0x688f('0x55'),_0x5542cb);})[_0x688f('0x16')](function(){return respondWithRpcPromise(_0x688f('0x56'),_0x688f('0x2c'),{'module':_0x688f('0x57')});})['then'](function(){return _0x4471e7;})[_0x688f('0x16')](respondWithResult(_0x54a359,null))[_0x688f('0x21')](handleError(_0x54a359,null));};exports[_0x688f('0x5f')]=function(_0x424cbb,_0x2dfa66,_0x82785b){var _0x438ae4;return db[_0x688f('0x33')][_0x688f('0x4c')]({'where':{'id':_0x424cbb[_0x688f('0x4a')]['id']}})[_0x688f('0x16')](handleEntityNotFound(_0x2dfa66,null))[_0x688f('0x16')](removeEntity(_0x2dfa66,null))['then'](function(){return db[_0x688f('0x33')][_0x688f('0x48')]({'raw':!![]});})['then'](function(_0x54e7cc){var _0x44e111=fs[_0x688f('0x4f')](path[_0x688f('0x50')](config[_0x688f('0x51')],_0x688f('0x52')),_0x688f('0x5e'));var _0x3fc376=ejs[_0x688f('0x53')](_0x44e111,{'contexts':_0x54e7cc});fs['writeFileSync'](_0x688f('0x55'),_0x3fc376);return respondWithRpcPromise('Reload','destroy',{'module':'chan_sip.so'});})[_0x688f('0x21')](handleError(_0x2dfa66,null));};
\ No newline at end of file
index 15ade38..b219a15 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f36=['voice_contexts','lodash','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./voiceContext.attributes','exports','define','VoiceContext'];(function(_0x13e47d,_0x1e38bd){var _0x1042e4=function(_0x3e382b){while(--_0x3e382b){_0x13e47d['push'](_0x13e47d['shift']());}};_0x1042e4(++_0x1e38bd);}(_0x5f36,0x12c));var _0x65f3=function(_0x3a650f,_0x36c57e){_0x3a650f=_0x3a650f-0x0;var _0xe0b691=_0x5f36[_0x3a650f];return _0xe0b691;};'use strict';var _=require(_0x65f3('0x0'));var util=require('util');var logger=require(_0x65f3('0x1'))(_0x65f3('0x2'));var moment=require(_0x65f3('0x3'));var BPromise=require(_0x65f3('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x65f3('0x5'));var rimraf=require(_0x65f3('0x6'));var config=require(_0x65f3('0x7'));var attributes=require(_0x65f3('0x8'));module[_0x65f3('0x9')]=function(_0xf331ee,_0x18bd93){return _0xf331ee[_0x65f3('0xa')](_0x65f3('0xb'),attributes,{'tableName':_0x65f3('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9464=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./voiceContext.attributes','exports','define','VoiceContext','util'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0x9464,0xd7));var _0x4946=function(_0xbb091,_0x3fe7ee){_0xbb091=_0xbb091-0x0;var _0x467a04=_0x9464[_0xbb091];return _0x467a04;};'use strict';var _=require('lodash');var util=require(_0x4946('0x0'));var logger=require('../../config/logger')(_0x4946('0x1'));var moment=require(_0x4946('0x2'));var BPromise=require(_0x4946('0x3'));var rp=require(_0x4946('0x4'));var fs=require('fs');var path=require(_0x4946('0x5'));var rimraf=require(_0x4946('0x6'));var config=require(_0x4946('0x7'));var attributes=require(_0x4946('0x8'));module[_0x4946('0x9')]=function(_0x182e5b,_0x39c0f6){return _0x182e5b[_0x4946('0xa')](_0x4946('0xb'),attributes,{'tableName':'voice_contexts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7fccda3..426c010 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ae2=['../../config/utils','../../config/logger','../../config/environment','jayson/promise','request','then','info','VoiceContext,\x20%s,\x20%s','request\x20sent','debug','error','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x6ae2,0x1ed));var _0x26ae=function(_0x13e35a,_0x10906d){_0x13e35a=_0x13e35a-0x0;var _0x265502=_0x6ae2[_0x13e35a];return _0x265502;};'use strict';var _=require(_0x26ae('0x0'));var util=require(_0x26ae('0x1'));var moment=require(_0x26ae('0x2'));var BPromise=require(_0x26ae('0x3'));var rs=require(_0x26ae('0x4'));var fs=require('fs');var Redis=require(_0x26ae('0x5'));var db=require(_0x26ae('0x6'))['db'];var utils=require(_0x26ae('0x7'));var logger=require(_0x26ae('0x8'))('rpc');var config=require(_0x26ae('0x9'));var jayson=require(_0x26ae('0xa'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x13cb27,_0xde4226,_0x473907){return new BPromise(function(_0x151de3,_0x3bc9de){return client[_0x26ae('0xb')](_0x13cb27,_0x473907)[_0x26ae('0xc')](function(_0x4b3eca){logger[_0x26ae('0xd')](_0x26ae('0xe'),_0xde4226,_0x26ae('0xf'));logger[_0x26ae('0x10')]('VoiceContext,\x20%s,\x20%s,\x20%s',_0xde4226,_0x26ae('0xf'),JSON['stringify'](_0x4b3eca));if(_0x4b3eca[_0x26ae('0x11')]){if(_0x4b3eca['error']['code']===0x1f4){logger[_0x26ae('0x11')](_0x26ae('0xe'),_0xde4226,_0x4b3eca[_0x26ae('0x11')][_0x26ae('0x12')]);return _0x3bc9de(_0x4b3eca[_0x26ae('0x11')][_0x26ae('0x12')]);}logger[_0x26ae('0x11')](_0x26ae('0xe'),_0xde4226,_0x4b3eca[_0x26ae('0x11')][_0x26ae('0x12')]);return _0x151de3(_0x4b3eca[_0x26ae('0x11')][_0x26ae('0x12')]);}else{logger['info'](_0x26ae('0xe'),_0xde4226,_0x26ae('0xf'));_0x151de3(_0x4b3eca['result'][_0x26ae('0x12')]);}})[_0x26ae('0x13')](function(_0x4f71d8){logger[_0x26ae('0x11')](_0x26ae('0xe'),_0xde4226,_0x4f71d8);_0x3bc9de(_0x4f71d8);});});}
\ No newline at end of file
+var _0x9879=['request\x20sent','debug','VoiceContext,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','VoiceContext,\x20%s,\x20%s'];(function(_0x146a85,_0x529b52){var _0x1b59bf=function(_0x4af0fd){while(--_0x4af0fd){_0x146a85['push'](_0x146a85['shift']());}};_0x1b59bf(++_0x529b52);}(_0x9879,0x98));var _0x9987=function(_0x3d1422,_0x59e2b7){_0x3d1422=_0x3d1422-0x0;var _0x2f30c4=_0x9879[_0x3d1422];return _0x2f30c4;};'use strict';var _=require('lodash');var util=require(_0x9987('0x0'));var moment=require(_0x9987('0x1'));var BPromise=require(_0x9987('0x2'));var rs=require(_0x9987('0x3'));var fs=require('fs');var Redis=require(_0x9987('0x4'));var db=require(_0x9987('0x5'))['db'];var utils=require(_0x9987('0x6'));var logger=require(_0x9987('0x7'))(_0x9987('0x8'));var config=require(_0x9987('0x9'));var jayson=require(_0x9987('0xa'));var client=jayson[_0x9987('0xb')][_0x9987('0xc')]({'port':0x232a});function respondWithRpcPromise(_0xce52bb,_0x1a3a35,_0x555bb0){return new BPromise(function(_0x1cf155,_0x563978){return client['request'](_0xce52bb,_0x555bb0)[_0x9987('0xd')](function(_0x5704ac){logger[_0x9987('0xe')](_0x9987('0xf'),_0x1a3a35,_0x9987('0x10'));logger[_0x9987('0x11')](_0x9987('0x12'),_0x1a3a35,_0x9987('0x10'),JSON[_0x9987('0x13')](_0x5704ac));if(_0x5704ac[_0x9987('0x14')]){if(_0x5704ac[_0x9987('0x14')][_0x9987('0x15')]===0x1f4){logger[_0x9987('0x14')](_0x9987('0xf'),_0x1a3a35,_0x5704ac['error'][_0x9987('0x16')]);return _0x563978(_0x5704ac[_0x9987('0x14')][_0x9987('0x16')]);}logger[_0x9987('0x14')](_0x9987('0xf'),_0x1a3a35,_0x5704ac[_0x9987('0x14')][_0x9987('0x16')]);return _0x1cf155(_0x5704ac[_0x9987('0x14')][_0x9987('0x16')]);}else{logger[_0x9987('0xe')](_0x9987('0xf'),_0x1a3a35,_0x9987('0x10'));_0x1cf155(_0x5704ac['result']['message']);}})[_0x9987('0x17')](function(_0x3442c3){logger[_0x9987('0x14')](_0x9987('0xf'),_0x1a3a35,_0x3442c3);_0x563978(_0x3442c3);});});}
\ No newline at end of file
index 87b29dd..3717c16 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d1a=['get','index','/describe','describe','/:id','isAuthenticated','create','put','delete','exports','multer','util','path','connect-timeout','Router','../../components/interaction/service'];(function(_0x15d2f8,_0x10edfc){var _0x3fa453=function(_0x28beab){while(--_0x28beab){_0x15d2f8['push'](_0x15d2f8['shift']());}};_0x3fa453(++_0x10edfc);}(_0x1d1a,0x1da));var _0xa1d1=function(_0xea1e20,_0x2cf093){_0xea1e20=_0xea1e20-0x0;var _0x1ff08a=_0x1d1a[_0xea1e20];return _0x1ff08a;};'use strict';var multer=require(_0xa1d1('0x0'));var util=require(_0xa1d1('0x1'));var path=require(_0xa1d1('0x2'));var timeout=require(_0xa1d1('0x3'));var express=require('express');var router=express[_0xa1d1('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xa1d1('0x5'));var config=require('../../config/environment');var controller=require('./voiceDialReport.controller');router[_0xa1d1('0x6')]('/',auth['isAuthenticated'](),controller[_0xa1d1('0x7')]);router[_0xa1d1('0x6')](_0xa1d1('0x8'),auth['isAuthenticated'](),controller[_0xa1d1('0x9')]);router['get'](_0xa1d1('0xa'),auth[_0xa1d1('0xb')](),controller['show']);router['post']('/',auth['isAuthenticated'](),controller[_0xa1d1('0xc')]);router[_0xa1d1('0xd')](_0xa1d1('0xa'),auth[_0xa1d1('0xb')](),controller['update']);router[_0xa1d1('0xe')](_0xa1d1('0xa'),auth[_0xa1d1('0xb')](),controller['destroy']);module[_0xa1d1('0xf')]=router;
\ No newline at end of file
+var _0x63e1=['/describe','show','put','/:id','update','destroy','exports','multer','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./voiceDialReport.controller','get','isAuthenticated'];(function(_0x2e0a48,_0x449f76){var _0x2330d4=function(_0x538ec2){while(--_0x538ec2){_0x2e0a48['push'](_0x2e0a48['shift']());}};_0x2330d4(++_0x449f76);}(_0x63e1,0x6d));var _0x163e=function(_0xa80b5c,_0x5293f8){_0xa80b5c=_0xa80b5c-0x0;var _0x273214=_0x63e1[_0xa80b5c];return _0x273214;};'use strict';var multer=require(_0x163e('0x0'));var util=require(_0x163e('0x1'));var path=require('path');var timeout=require(_0x163e('0x2'));var express=require(_0x163e('0x3'));var router=express[_0x163e('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x163e('0x5'));var interaction=require(_0x163e('0x6'));var config=require('../../config/environment');var controller=require(_0x163e('0x7'));router[_0x163e('0x8')]('/',auth[_0x163e('0x9')](),controller['index']);router[_0x163e('0x8')](_0x163e('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x163e('0x8')]('/:id',auth[_0x163e('0x9')](),controller[_0x163e('0xb')]);router['post']('/',auth[_0x163e('0x9')](),controller['create']);router[_0x163e('0xc')](_0x163e('0xd'),auth[_0x163e('0x9')](),controller[_0x163e('0xe')]);router['delete'](_0x163e('0xd'),auth[_0x163e('0x9')](),controller[_0x163e('0xf')]);module[_0x163e('0x10')]=router;
\ No newline at end of file
index 5a3dd39..ba18b05 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb821=['DATE','called,connect,complete','exports','STRING','INTEGER'];(function(_0x5bdfb2,_0x5eeb10){var _0x5f5240=function(_0x2cb9c6){while(--_0x2cb9c6){_0x5bdfb2['push'](_0x5bdfb2['shift']());}};_0x5f5240(++_0x5eeb10);}(_0xb821,0xa7));var _0x1b82=function(_0x5cf2d5,_0x4a2c08){_0x5cf2d5=_0x5cf2d5-0x0;var _0x1d032c=_0xb821[_0x5cf2d5];return _0x1d032c;};'use strict';var Sequelize=require('sequelize');module[_0x1b82('0x0')]={'privilege':{'type':Sequelize[_0x1b82('0x1')]},'channel':{'type':Sequelize['STRING']},'channelstate':{'type':Sequelize['INTEGER']},'channelstatedesc':{'type':Sequelize[_0x1b82('0x1')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize[_0x1b82('0x1')]},'connectedlinename':{'type':Sequelize[_0x1b82('0x1')]},'language':{'type':Sequelize[_0x1b82('0x1')]},'accountcode':{'type':Sequelize[_0x1b82('0x1')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize[_0x1b82('0x1')]},'priority':{'type':Sequelize[_0x1b82('0x2')]},'uniqueid':{'type':Sequelize[_0x1b82('0x1')]},'linkedid':{'type':Sequelize[_0x1b82('0x1')]},'destchannel':{'type':Sequelize[_0x1b82('0x1')]},'destchannelstate':{'type':Sequelize[_0x1b82('0x2')]},'destchannelstatedesc':{'type':Sequelize[_0x1b82('0x1')]},'destcalleridnum':{'type':Sequelize[_0x1b82('0x1')]},'destcalleridname':{'type':Sequelize[_0x1b82('0x1')]},'destconnectedlinenum':{'type':Sequelize['STRING']},'destconnectedlinename':{'type':Sequelize[_0x1b82('0x1')]},'destlanguage':{'type':Sequelize[_0x1b82('0x1')]},'destaccountcode':{'type':Sequelize[_0x1b82('0x1')]},'destcontext':{'type':Sequelize[_0x1b82('0x1')]},'destexten':{'type':Sequelize[_0x1b82('0x1')]},'destpriority':{'type':Sequelize[_0x1b82('0x2')]},'destuniqueid':{'type':Sequelize[_0x1b82('0x1')]},'destlinkedid':{'type':Sequelize[_0x1b82('0x1')]},'dialstring':{'type':Sequelize['STRING']},'dialstatus':{'type':Sequelize[_0x1b82('0x1')]},'starttime':{'type':Sequelize[_0x1b82('0x3')]},'answertime':{'type':Sequelize[_0x1b82('0x3')]},'endtime':{'type':Sequelize[_0x1b82('0x3')]},'lastevent':{'type':Sequelize['STRING'],'comment':_0x1b82('0x4')},'routeId':{'type':Sequelize['INTEGER']},'duration':{'type':Sequelize['INTEGER']},'holdtime':{'type':Sequelize[_0x1b82('0x2')]},'billableseconds':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
+var _0xa41a=['exports','STRING','INTEGER','DATE','called,connect,complete','sequelize'];(function(_0x2bb46b,_0x5b2e9b){var _0x31e7a9=function(_0x128450){while(--_0x128450){_0x2bb46b['push'](_0x2bb46b['shift']());}};_0x31e7a9(++_0x5b2e9b);}(_0xa41a,0x6b));var _0xaa41=function(_0x268da6,_0x1b7544){_0x268da6=_0x268da6-0x0;var _0x51a921=_0xa41a[_0x268da6];return _0x51a921;};'use strict';var Sequelize=require(_0xaa41('0x0'));module[_0xaa41('0x1')]={'privilege':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0xaa41('0x2')]},'channelstate':{'type':Sequelize[_0xaa41('0x3')]},'channelstatedesc':{'type':Sequelize[_0xaa41('0x2')]},'calleridnum':{'type':Sequelize[_0xaa41('0x2')]},'calleridname':{'type':Sequelize[_0xaa41('0x2')]},'connectedlinenum':{'type':Sequelize[_0xaa41('0x2')]},'connectedlinename':{'type':Sequelize[_0xaa41('0x2')]},'language':{'type':Sequelize[_0xaa41('0x2')]},'accountcode':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0xaa41('0x2')]},'exten':{'type':Sequelize[_0xaa41('0x2')]},'priority':{'type':Sequelize['INTEGER']},'uniqueid':{'type':Sequelize['STRING']},'linkedid':{'type':Sequelize[_0xaa41('0x2')]},'destchannel':{'type':Sequelize[_0xaa41('0x2')]},'destchannelstate':{'type':Sequelize['INTEGER']},'destchannelstatedesc':{'type':Sequelize[_0xaa41('0x2')]},'destcalleridnum':{'type':Sequelize[_0xaa41('0x2')]},'destcalleridname':{'type':Sequelize[_0xaa41('0x2')]},'destconnectedlinenum':{'type':Sequelize[_0xaa41('0x2')]},'destconnectedlinename':{'type':Sequelize[_0xaa41('0x2')]},'destlanguage':{'type':Sequelize[_0xaa41('0x2')]},'destaccountcode':{'type':Sequelize[_0xaa41('0x2')]},'destcontext':{'type':Sequelize[_0xaa41('0x2')]},'destexten':{'type':Sequelize[_0xaa41('0x2')]},'destpriority':{'type':Sequelize['INTEGER']},'destuniqueid':{'type':Sequelize[_0xaa41('0x2')]},'destlinkedid':{'type':Sequelize[_0xaa41('0x2')]},'dialstring':{'type':Sequelize['STRING']},'dialstatus':{'type':Sequelize['STRING']},'starttime':{'type':Sequelize[_0xaa41('0x4')]},'answertime':{'type':Sequelize['DATE']},'endtime':{'type':Sequelize[_0xaa41('0x4')]},'lastevent':{'type':Sequelize[_0xaa41('0x2')],'comment':_0xaa41('0x5')},'routeId':{'type':Sequelize[_0xaa41('0x3')]},'duration':{'type':Sequelize[_0xaa41('0x3')]},'holdtime':{'type':Sequelize['INTEGER']},'billableseconds':{'type':Sequelize[_0xaa41('0x3')]}};
\ No newline at end of file
index 84e315d..c14a6b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8065=['../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','count','offset','limit','set','Content-Range','apply','save','destroy','then','error','stack','send','index','map','VoiceDialReport','fieldName','key','model','name','query','filters','intersection','fields','attributes','length','order','where','pick','merge','filter','include','findAll','rows','catch','show','params','keys','rawAttributes','includeAll','create','update','body','find','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','path','sox','to-csv','fs-extra','lodash','squel','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils'];(function(_0x5d6456,_0x58ecc7){var _0x4d66c1=function(_0x4335e3){while(--_0x4335e3){_0x5d6456['push'](_0x5d6456['shift']());}};_0x4d66c1(++_0x58ecc7);}(_0x8065,0x153));var _0x5806=function(_0xefff93,_0x42aca2){_0xefff93=_0xefff93-0x0;var _0x3f7aac=_0x8065[_0xefff93];return _0x3f7aac;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5806('0x0'));var zipdir=require(_0x5806('0x1'));var jsonpatch=require(_0x5806('0x2'));var rp=require(_0x5806('0x3'));var moment=require(_0x5806('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x5806('0x5'));var util=require('util');var path=require(_0x5806('0x6'));var sox=require(_0x5806('0x7'));var csv=require(_0x5806('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x5806('0x9'));var _=require(_0x5806('0xa'));var squel=require(_0x5806('0xb'));var crypto=require(_0x5806('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x5806('0xd'));var toCsv=require(_0x5806('0x8'));var querystring=require('querystring');var Papa=require(_0x5806('0xe'));var Redis=require(_0x5806('0xf'));var authService=require(_0x5806('0x10'));var qs=require(_0x5806('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x5806('0x12'));var logger=require('../../config/logger')(_0x5806('0x13'));var utils=require(_0x5806('0x14'));var config=require(_0x5806('0x15'));var licenseUtil=require(_0x5806('0x16'));var db=require(_0x5806('0x17'))['db'];function respondWithStatusCode(_0x47218f,_0x4a2dac){_0x4a2dac=_0x4a2dac||0xcc;return function(_0x372d15){if(_0x372d15){return _0x47218f[_0x5806('0x18')](_0x4a2dac);}return _0x47218f[_0x5806('0x19')](_0x4a2dac)[_0x5806('0x1a')]();};}function respondWithResult(_0x2659c5,_0x5aeb25){_0x5aeb25=_0x5aeb25||0xc8;return function(_0x2ecacf){if(_0x2ecacf){return _0x2659c5['status'](_0x5aeb25)[_0x5806('0x1b')](_0x2ecacf);}};}function respondWithFilteredResult(_0x37583e,_0x23a06f){return function(_0x562efb){if(_0x562efb){var _0x476cf3=typeof _0x23a06f['offset']===_0x5806('0x1c')&&typeof _0x23a06f['limit']===_0x5806('0x1c');var _0x33ac04=_0x562efb[_0x5806('0x1d')];var _0x4528dc=_0x476cf3?0x0:_0x23a06f['offset'];var _0x2959e1=_0x476cf3?_0x562efb[_0x5806('0x1d')]:_0x23a06f[_0x5806('0x1e')]+_0x23a06f[_0x5806('0x1f')];var _0x4206fc;if(_0x2959e1>=_0x33ac04){_0x2959e1=_0x33ac04;_0x4206fc=0xc8;}else{_0x4206fc=0xce;}_0x37583e[_0x5806('0x19')](_0x4206fc);return _0x37583e[_0x5806('0x20')](_0x5806('0x21'),_0x4528dc+'-'+_0x2959e1+'/'+_0x33ac04)[_0x5806('0x1b')](_0x562efb);}return null;};}function patchUpdates(_0x204ab1){return function(_0x1b1dba){try{jsonpatch[_0x5806('0x22')](_0x1b1dba,_0x204ab1,!![]);}catch(_0x3e8eb0){return BPromise['reject'](_0x3e8eb0);}return _0x1b1dba[_0x5806('0x23')]();};}function saveUpdates(_0x3a6246,_0x21b548){return function(_0x1c4452){if(_0x1c4452){return _0x1c4452['update'](_0x3a6246)['then'](function(_0x59328d){return _0x59328d;});}return null;};}function removeEntity(_0xcd22e,_0x14f449){return function(_0x43c1a0){if(_0x43c1a0){return _0x43c1a0[_0x5806('0x24')]()[_0x5806('0x25')](function(){_0xcd22e[_0x5806('0x19')](0xcc)[_0x5806('0x1a')]();});}};}function handleEntityNotFound(_0xb6057b,_0x3c0c73){return function(_0x24897e){if(!_0x24897e){_0xb6057b[_0x5806('0x18')](0x194);}return _0x24897e;};}function handleError(_0x490248,_0x6e646f){_0x6e646f=_0x6e646f||0x1f4;return function(_0x19bbae){logger[_0x5806('0x26')](_0x19bbae[_0x5806('0x27')]);if(_0x19bbae['name']){delete _0x19bbae['name'];}_0x490248[_0x5806('0x19')](_0x6e646f)[_0x5806('0x28')](_0x19bbae);};}exports[_0x5806('0x29')]=function(_0x28af20,_0x2bbb0a){var _0x52188f={},_0x329435={},_0x4761eb={'count':0x0,'rows':[]};var _0x893d5a=_[_0x5806('0x2a')](db[_0x5806('0x2b')]['rawAttributes'],function(_0x23a7e8){return{'name':_0x23a7e8[_0x5806('0x2c')],'type':_0x23a7e8['type'][_0x5806('0x2d')]};});_0x329435[_0x5806('0x2e')]=_[_0x5806('0x2a')](_0x893d5a,_0x5806('0x2f'));_0x329435[_0x5806('0x30')]=_['keys'](_0x28af20[_0x5806('0x30')]);_0x329435[_0x5806('0x31')]=_[_0x5806('0x32')](_0x329435[_0x5806('0x2e')],_0x329435[_0x5806('0x30')]);_0x52188f['attributes']=_[_0x5806('0x32')](_0x329435[_0x5806('0x2e')],qs[_0x5806('0x33')](_0x28af20[_0x5806('0x30')][_0x5806('0x33')]));_0x52188f[_0x5806('0x34')]=_0x52188f[_0x5806('0x34')][_0x5806('0x35')]?_0x52188f[_0x5806('0x34')]:_0x329435[_0x5806('0x2e')];if(!_0x28af20[_0x5806('0x30')]['hasOwnProperty']('nolimit')){_0x52188f['limit']=qs[_0x5806('0x1f')](_0x28af20[_0x5806('0x30')][_0x5806('0x1f')]);_0x52188f[_0x5806('0x1e')]=qs['offset'](_0x28af20[_0x5806('0x30')][_0x5806('0x1e')]);}_0x52188f[_0x5806('0x36')]=qs['sort'](_0x28af20['query']['sort']);_0x52188f[_0x5806('0x37')]=qs[_0x5806('0x31')](_[_0x5806('0x38')](_0x28af20['query'],_0x329435[_0x5806('0x31')]),_0x893d5a);if(_0x28af20[_0x5806('0x30')]['filter']){_0x52188f[_0x5806('0x37')]=_[_0x5806('0x39')](_0x52188f[_0x5806('0x37')],{'$or':_[_0x5806('0x2a')](_0x893d5a,function(_0x169c1c){if(_0x169c1c['type']!=='VIRTUAL'){var _0x1586cf={};_0x1586cf[_0x169c1c[_0x5806('0x2f')]]={'$like':'%'+_0x28af20['query'][_0x5806('0x3a')]+'%'};return _0x1586cf;}})});}_0x52188f=_[_0x5806('0x39')]({},_0x52188f,_0x28af20['options']);var _0x1d761a={'where':_0x52188f[_0x5806('0x37')]};return db['VoiceDialReport'][_0x5806('0x1d')](_0x1d761a)[_0x5806('0x25')](function(_0x1d590c){_0x4761eb[_0x5806('0x1d')]=_0x1d590c;if(_0x28af20[_0x5806('0x30')]['includeAll']){_0x52188f[_0x5806('0x3b')]=[{'all':!![]}];}return db['VoiceDialReport'][_0x5806('0x3c')](_0x52188f);})[_0x5806('0x25')](function(_0x2855a6){_0x4761eb[_0x5806('0x3d')]=_0x2855a6;return _0x4761eb;})[_0x5806('0x25')](respondWithFilteredResult(_0x2bbb0a,_0x52188f))[_0x5806('0x3e')](handleError(_0x2bbb0a,null));};exports[_0x5806('0x3f')]=function(_0x27019f,_0xf192a6){var _0x2207bf={'raw':!![],'where':{'id':_0x27019f[_0x5806('0x40')]['id']}},_0x3934a1={};_0x3934a1[_0x5806('0x2e')]=_[_0x5806('0x41')](db[_0x5806('0x2b')][_0x5806('0x42')]);_0x3934a1[_0x5806('0x30')]=_[_0x5806('0x41')](_0x27019f['query']);_0x3934a1['filters']=_[_0x5806('0x32')](_0x3934a1['model'],_0x3934a1[_0x5806('0x30')]);_0x2207bf[_0x5806('0x34')]=_[_0x5806('0x32')](_0x3934a1[_0x5806('0x2e')],qs['fields'](_0x27019f[_0x5806('0x30')][_0x5806('0x33')]));_0x2207bf[_0x5806('0x34')]=_0x2207bf['attributes'][_0x5806('0x35')]?_0x2207bf[_0x5806('0x34')]:_0x3934a1[_0x5806('0x2e')];if(_0x27019f['query'][_0x5806('0x43')]){_0x2207bf['include']=[{'all':!![]}];}_0x2207bf=_[_0x5806('0x39')]({},_0x2207bf,_0x27019f['options']);return db[_0x5806('0x2b')]['find'](_0x2207bf)[_0x5806('0x25')](handleEntityNotFound(_0xf192a6,null))[_0x5806('0x25')](respondWithResult(_0xf192a6,null))[_0x5806('0x3e')](handleError(_0xf192a6,null));};exports[_0x5806('0x44')]=function(_0x16014f,_0x2677e1){return db[_0x5806('0x2b')][_0x5806('0x44')](_0x16014f['body'],{})['then'](respondWithResult(_0x2677e1,0xc9))[_0x5806('0x3e')](handleError(_0x2677e1,null));};exports[_0x5806('0x45')]=function(_0x2ef6cc,_0x218b69){if(_0x2ef6cc[_0x5806('0x46')]['id']){delete _0x2ef6cc[_0x5806('0x46')]['id'];}return db[_0x5806('0x2b')][_0x5806('0x47')]({'where':{'id':_0x2ef6cc[_0x5806('0x40')]['id']}})[_0x5806('0x25')](handleEntityNotFound(_0x218b69,null))[_0x5806('0x25')](saveUpdates(_0x2ef6cc[_0x5806('0x46')],null))[_0x5806('0x25')](respondWithResult(_0x218b69,null))['catch'](handleError(_0x218b69,null));};exports[_0x5806('0x24')]=function(_0xc69196,_0x331a06){return db[_0x5806('0x2b')][_0x5806('0x47')]({'where':{'id':_0xc69196['params']['id']}})[_0x5806('0x25')](handleEntityNotFound(_0x331a06,null))[_0x5806('0x25')](removeEntity(_0x331a06,null))[_0x5806('0x3e')](handleError(_0x331a06,null));};exports['describe']=function(_0x267b4f,_0x464b2e){return db['VoiceDialReport']['describe']()[_0x5806('0x25')](respondWithResult(_0x464b2e,null))[_0x5806('0x3e')](handleError(_0x464b2e,null));};
\ No newline at end of file
+var _0x7d43=['../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','count','set','Content-Range','apply','reject','save','update','then','end','name','send','map','VoiceDialReport','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','filter','merge','VIRTUAL','includeAll','findAll','rows','catch','show','params','keys','options','find','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','fs-extra','lodash','squel','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs'];(function(_0x9d639c,_0x524dbe){var _0x1671de=function(_0x27888e){while(--_0x27888e){_0x9d639c['push'](_0x9d639c['shift']());}};_0x1671de(++_0x524dbe);}(_0x7d43,0xc9));var _0x37d4=function(_0x10916d,_0x3eafa2){_0x10916d=_0x10916d-0x0;var _0x2eaa21=_0x7d43[_0x10916d];return _0x2eaa21;};'use strict';var emlformat=require(_0x37d4('0x0'));var rimraf=require(_0x37d4('0x1'));var zipdir=require(_0x37d4('0x2'));var jsonpatch=require(_0x37d4('0x3'));var rp=require(_0x37d4('0x4'));var moment=require(_0x37d4('0x5'));var BPromise=require(_0x37d4('0x6'));var Mustache=require('mustache');var util=require(_0x37d4('0x7'));var path=require(_0x37d4('0x8'));var sox=require(_0x37d4('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x37d4('0xa'));var _=require(_0x37d4('0xb'));var squel=require(_0x37d4('0xc'));var crypto=require('crypto');var jsforce=require(_0x37d4('0xd'));var deskjs=require(_0x37d4('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x37d4('0xf'));var authService=require(_0x37d4('0x10'));var qs=require(_0x37d4('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x37d4('0x12'));var logger=require(_0x37d4('0x13'))(_0x37d4('0x14'));var utils=require(_0x37d4('0x15'));var config=require(_0x37d4('0x16'));var licenseUtil=require(_0x37d4('0x17'));var db=require(_0x37d4('0x18'))['db'];function respondWithStatusCode(_0x321332,_0x1df708){_0x1df708=_0x1df708||0xcc;return function(_0x4bfec9){if(_0x4bfec9){return _0x321332[_0x37d4('0x19')](_0x1df708);}return _0x321332[_0x37d4('0x1a')](_0x1df708)['end']();};}function respondWithResult(_0x44505e,_0x5beaee){_0x5beaee=_0x5beaee||0xc8;return function(_0x1e2fc3){if(_0x1e2fc3){return _0x44505e[_0x37d4('0x1a')](_0x5beaee)[_0x37d4('0x1b')](_0x1e2fc3);}};}function respondWithFilteredResult(_0x60bde1,_0x1d4d89){return function(_0x5d50fd){if(_0x5d50fd){var _0x129a13=typeof _0x1d4d89[_0x37d4('0x1c')]===_0x37d4('0x1d')&&typeof _0x1d4d89['limit']===_0x37d4('0x1d');var _0x1c02ec=_0x5d50fd['count'];var _0x10e012=_0x129a13?0x0:_0x1d4d89[_0x37d4('0x1c')];var _0x6b4b22=_0x129a13?_0x5d50fd[_0x37d4('0x1e')]:_0x1d4d89[_0x37d4('0x1c')]+_0x1d4d89['limit'];var _0x596124;if(_0x6b4b22>=_0x1c02ec){_0x6b4b22=_0x1c02ec;_0x596124=0xc8;}else{_0x596124=0xce;}_0x60bde1[_0x37d4('0x1a')](_0x596124);return _0x60bde1[_0x37d4('0x1f')](_0x37d4('0x20'),_0x10e012+'-'+_0x6b4b22+'/'+_0x1c02ec)['json'](_0x5d50fd);}return null;};}function patchUpdates(_0x26295a){return function(_0x53bcf7){try{jsonpatch[_0x37d4('0x21')](_0x53bcf7,_0x26295a,!![]);}catch(_0x26b99d){return BPromise[_0x37d4('0x22')](_0x26b99d);}return _0x53bcf7[_0x37d4('0x23')]();};}function saveUpdates(_0x695121,_0x4ad664){return function(_0x2312ed){if(_0x2312ed){return _0x2312ed[_0x37d4('0x24')](_0x695121)['then'](function(_0x5577f9){return _0x5577f9;});}return null;};}function removeEntity(_0xf1924c,_0x206c22){return function(_0x591dd0){if(_0x591dd0){return _0x591dd0['destroy']()[_0x37d4('0x25')](function(){_0xf1924c['status'](0xcc)[_0x37d4('0x26')]();});}};}function handleEntityNotFound(_0x18216f,_0x43e82c){return function(_0x777b39){if(!_0x777b39){_0x18216f[_0x37d4('0x19')](0x194);}return _0x777b39;};}function handleError(_0x2cc2ae,_0x3036f2){_0x3036f2=_0x3036f2||0x1f4;return function(_0x387012){logger['error'](_0x387012['stack']);if(_0x387012['name']){delete _0x387012[_0x37d4('0x27')];}_0x2cc2ae['status'](_0x3036f2)[_0x37d4('0x28')](_0x387012);};}exports['index']=function(_0x2f4a39,_0x3259b4){var _0x59538d={},_0x27c6d2={},_0x295875={'count':0x0,'rows':[]};var _0x3a4820=_[_0x37d4('0x29')](db[_0x37d4('0x2a')]['rawAttributes'],function(_0x52acce){return{'name':_0x52acce[_0x37d4('0x2b')],'type':_0x52acce[_0x37d4('0x2c')][_0x37d4('0x2d')]};});_0x27c6d2[_0x37d4('0x2e')]=_['map'](_0x3a4820,_0x37d4('0x27'));_0x27c6d2['query']=_['keys'](_0x2f4a39[_0x37d4('0x2f')]);_0x27c6d2[_0x37d4('0x30')]=_[_0x37d4('0x31')](_0x27c6d2['model'],_0x27c6d2[_0x37d4('0x2f')]);_0x59538d[_0x37d4('0x32')]=_[_0x37d4('0x31')](_0x27c6d2[_0x37d4('0x2e')],qs['fields'](_0x2f4a39['query'][_0x37d4('0x33')]));_0x59538d[_0x37d4('0x32')]=_0x59538d[_0x37d4('0x32')][_0x37d4('0x34')]?_0x59538d['attributes']:_0x27c6d2['model'];if(!_0x2f4a39[_0x37d4('0x2f')][_0x37d4('0x35')](_0x37d4('0x36'))){_0x59538d[_0x37d4('0x37')]=qs[_0x37d4('0x37')](_0x2f4a39[_0x37d4('0x2f')][_0x37d4('0x37')]);_0x59538d[_0x37d4('0x1c')]=qs[_0x37d4('0x1c')](_0x2f4a39[_0x37d4('0x2f')][_0x37d4('0x1c')]);}_0x59538d[_0x37d4('0x38')]=qs['sort'](_0x2f4a39[_0x37d4('0x2f')][_0x37d4('0x39')]);_0x59538d[_0x37d4('0x3a')]=qs['filters'](_['pick'](_0x2f4a39['query'],_0x27c6d2[_0x37d4('0x30')]),_0x3a4820);if(_0x2f4a39['query'][_0x37d4('0x3b')]){_0x59538d[_0x37d4('0x3a')]=_[_0x37d4('0x3c')](_0x59538d['where'],{'$or':_[_0x37d4('0x29')](_0x3a4820,function(_0xcf9b4d){if(_0xcf9b4d[_0x37d4('0x2c')]!==_0x37d4('0x3d')){var _0xd95ee6={};_0xd95ee6[_0xcf9b4d['name']]={'$like':'%'+_0x2f4a39[_0x37d4('0x2f')][_0x37d4('0x3b')]+'%'};return _0xd95ee6;}})});}_0x59538d=_['merge']({},_0x59538d,_0x2f4a39['options']);var _0x397581={'where':_0x59538d['where']};return db[_0x37d4('0x2a')][_0x37d4('0x1e')](_0x397581)[_0x37d4('0x25')](function(_0x540279){_0x295875[_0x37d4('0x1e')]=_0x540279;if(_0x2f4a39[_0x37d4('0x2f')][_0x37d4('0x3e')]){_0x59538d['include']=[{'all':!![]}];}return db['VoiceDialReport'][_0x37d4('0x3f')](_0x59538d);})[_0x37d4('0x25')](function(_0x1a06b2){_0x295875[_0x37d4('0x40')]=_0x1a06b2;return _0x295875;})[_0x37d4('0x25')](respondWithFilteredResult(_0x3259b4,_0x59538d))[_0x37d4('0x41')](handleError(_0x3259b4,null));};exports[_0x37d4('0x42')]=function(_0x214a5a,_0x3f264f){var _0x46573c={'raw':!![],'where':{'id':_0x214a5a[_0x37d4('0x43')]['id']}},_0x4aef85={};_0x4aef85[_0x37d4('0x2e')]=_[_0x37d4('0x44')](db['VoiceDialReport']['rawAttributes']);_0x4aef85[_0x37d4('0x2f')]=_[_0x37d4('0x44')](_0x214a5a[_0x37d4('0x2f')]);_0x4aef85[_0x37d4('0x30')]=_['intersection'](_0x4aef85[_0x37d4('0x2e')],_0x4aef85[_0x37d4('0x2f')]);_0x46573c[_0x37d4('0x32')]=_[_0x37d4('0x31')](_0x4aef85[_0x37d4('0x2e')],qs[_0x37d4('0x33')](_0x214a5a['query']['fields']));_0x46573c[_0x37d4('0x32')]=_0x46573c[_0x37d4('0x32')][_0x37d4('0x34')]?_0x46573c[_0x37d4('0x32')]:_0x4aef85['model'];if(_0x214a5a[_0x37d4('0x2f')][_0x37d4('0x3e')]){_0x46573c['include']=[{'all':!![]}];}_0x46573c=_['merge']({},_0x46573c,_0x214a5a[_0x37d4('0x45')]);return db['VoiceDialReport'][_0x37d4('0x46')](_0x46573c)['then'](handleEntityNotFound(_0x3f264f,null))[_0x37d4('0x25')](respondWithResult(_0x3f264f,null))[_0x37d4('0x41')](handleError(_0x3f264f,null));};exports['create']=function(_0x2e6f5e,_0x31d6c5){return db[_0x37d4('0x2a')]['create'](_0x2e6f5e['body'],{})[_0x37d4('0x25')](respondWithResult(_0x31d6c5,0xc9))[_0x37d4('0x41')](handleError(_0x31d6c5,null));};exports['update']=function(_0x4164ed,_0x5e0085){if(_0x4164ed[_0x37d4('0x47')]['id']){delete _0x4164ed[_0x37d4('0x47')]['id'];}return db[_0x37d4('0x2a')]['find']({'where':{'id':_0x4164ed[_0x37d4('0x43')]['id']}})[_0x37d4('0x25')](handleEntityNotFound(_0x5e0085,null))['then'](saveUpdates(_0x4164ed[_0x37d4('0x47')],null))[_0x37d4('0x25')](respondWithResult(_0x5e0085,null))[_0x37d4('0x41')](handleError(_0x5e0085,null));};exports['destroy']=function(_0x534fee,_0x1d8499){return db[_0x37d4('0x2a')][_0x37d4('0x46')]({'where':{'id':_0x534fee[_0x37d4('0x43')]['id']}})[_0x37d4('0x25')](handleEntityNotFound(_0x1d8499,null))[_0x37d4('0x25')](removeEntity(_0x1d8499,null))[_0x37d4('0x41')](handleError(_0x1d8499,null));};exports[_0x37d4('0x48')]=function(_0x3434ce,_0x7b4d8d){return db[_0x37d4('0x2a')][_0x37d4('0x48')]()[_0x37d4('0x25')](respondWithResult(_0x7b4d8d,null))[_0x37d4('0x41')](handleError(_0x7b4d8d,null));};
\ No newline at end of file
index 496c746..fdfd5a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f8b=['api','request-promise','path','rimraf','../../config/environment','./voiceDialReport.attributes','exports','define','VoiceDialReport','report_dial','uniqueid','util','../../config/logger'];(function(_0x1fc72a,_0x3e55ef){var _0x443d9a=function(_0x5b8a6b){while(--_0x5b8a6b){_0x1fc72a['push'](_0x1fc72a['shift']());}};_0x443d9a(++_0x3e55ef);}(_0x9f8b,0x9a));var _0xb9f8=function(_0x934754,_0x15bd40){_0x934754=_0x934754-0x0;var _0x5cf1fc=_0x9f8b[_0x934754];return _0x5cf1fc;};'use strict';var _=require('lodash');var util=require(_0xb9f8('0x0'));var logger=require(_0xb9f8('0x1'))(_0xb9f8('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xb9f8('0x3'));var fs=require('fs');var path=require(_0xb9f8('0x4'));var rimraf=require(_0xb9f8('0x5'));var config=require(_0xb9f8('0x6'));var attributes=require(_0xb9f8('0x7'));module[_0xb9f8('0x8')]=function(_0x7a983b,_0x9c53b3){return _0x7a983b[_0xb9f8('0x9')](_0xb9f8('0xa'),attributes,{'tableName':_0xb9f8('0xb'),'paranoid':![],'indexes':[{'fields':[_0xb9f8('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x18e6=['VoiceDialReport','report_dial','lodash','../../config/logger','api','moment','bluebird','request-promise','../../config/environment','./voiceDialReport.attributes','exports'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x18e6,0x14c));var _0x618e=function(_0x5401e5,_0x4e53c2){_0x5401e5=_0x5401e5-0x0;var _0x231e0c=_0x18e6[_0x5401e5];return _0x231e0c;};'use strict';var _=require(_0x618e('0x0'));var util=require('util');var logger=require(_0x618e('0x1'))(_0x618e('0x2'));var moment=require(_0x618e('0x3'));var BPromise=require(_0x618e('0x4'));var rp=require(_0x618e('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x618e('0x6'));var attributes=require(_0x618e('0x7'));module[_0x618e('0x8')]=function(_0x5e2141,_0x4b2152){return _0x5e2141['define'](_0x618e('0x9'),attributes,{'tableName':_0x618e('0xa'),'paranoid':![],'indexes':[{'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 300da39..cb4a5ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf71a=['result','catch','CreateVoiceDialReport','VoiceDialReport','create','body','options','raw','then','UpdateVoiceDialReport','update','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','info','VoiceDialReport,\x20%s,\x20%s','request\x20sent','debug','VoiceDialReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xf71a,0xc5));var _0xaf71=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xf71a[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xaf71('0x0'));var BPromise=require(_0xaf71('0x1'));var rs=require(_0xaf71('0x2'));var fs=require('fs');var Redis=require(_0xaf71('0x3'));var db=require(_0xaf71('0x4'))['db'];var utils=require(_0xaf71('0x5'));var logger=require(_0xaf71('0x6'))('rpc');var config=require(_0xaf71('0x7'));var jayson=require(_0xaf71('0x8'));var client=jayson['client'][_0xaf71('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4703ed,_0x139bdb,_0x2f49ae){return new BPromise(function(_0x42e87c,_0x2ab8d5){return client[_0xaf71('0xa')](_0x4703ed,_0x2f49ae)['then'](function(_0x3b0044){logger[_0xaf71('0xb')](_0xaf71('0xc'),_0x139bdb,_0xaf71('0xd'));logger[_0xaf71('0xe')](_0xaf71('0xf'),_0x139bdb,'request\x20sent',JSON[_0xaf71('0x10')](_0x3b0044));if(_0x3b0044[_0xaf71('0x11')]){if(_0x3b0044[_0xaf71('0x11')][_0xaf71('0x12')]===0x1f4){logger[_0xaf71('0x11')](_0xaf71('0xc'),_0x139bdb,_0x3b0044['error'][_0xaf71('0x13')]);return _0x2ab8d5(_0x3b0044[_0xaf71('0x11')][_0xaf71('0x13')]);}logger[_0xaf71('0x11')]('VoiceDialReport,\x20%s,\x20%s',_0x139bdb,_0x3b0044[_0xaf71('0x11')]['message']);return _0x42e87c(_0x3b0044[_0xaf71('0x11')][_0xaf71('0x13')]);}else{logger[_0xaf71('0xb')]('VoiceDialReport,\x20%s,\x20%s',_0x139bdb,_0xaf71('0xd'));_0x42e87c(_0x3b0044[_0xaf71('0x14')][_0xaf71('0x13')]);}})[_0xaf71('0x15')](function(_0x1629ed){logger[_0xaf71('0x11')](_0xaf71('0xc'),_0x139bdb,_0x1629ed);_0x2ab8d5(_0x1629ed);});});}exports[_0xaf71('0x16')]=function(_0x862257){var _0x448ae7=this;return new Promise(function(_0x456ddf,_0x2e7b6a){return db[_0xaf71('0x17')][_0xaf71('0x18')](_0x862257[_0xaf71('0x19')],{'raw':_0x862257[_0xaf71('0x1a')]?_0x862257[_0xaf71('0x1a')][_0xaf71('0x1b')]===undefined?!![]:![]:!![]})[_0xaf71('0x1c')](function(_0x490405){logger['info']('CreateVoiceDialReport',_0x862257);logger['debug'](_0xaf71('0x16'),_0x862257,JSON[_0xaf71('0x10')](_0x490405));_0x456ddf(_0x490405);})[_0xaf71('0x15')](function(_0x26e3af){logger[_0xaf71('0x11')](_0xaf71('0x16'),_0x26e3af['message'],_0x862257);_0x2e7b6a(_0x448ae7['error'](0x1f4,_0x26e3af[_0xaf71('0x13')]));});});};exports[_0xaf71('0x1d')]=function(_0x3a1f78){var _0x180451=this;return new Promise(function(_0x1db823,_0x18c91f){return db[_0xaf71('0x17')][_0xaf71('0x1e')](_0x3a1f78[_0xaf71('0x19')],{'raw':_0x3a1f78[_0xaf71('0x1a')]?_0x3a1f78[_0xaf71('0x1a')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3a1f78[_0xaf71('0x1a')]?_0x3a1f78[_0xaf71('0x1a')]['where']||null:null,'attributes':_0x3a1f78[_0xaf71('0x1a')]?_0x3a1f78['options']['attributes']||null:null,'limit':_0x3a1f78['options']?_0x3a1f78[_0xaf71('0x1a')]['limit']||null:null})[_0xaf71('0x1c')](function(_0x59f98f){logger['info'](_0xaf71('0x1d'),_0x3a1f78);logger[_0xaf71('0xe')](_0xaf71('0x1d'),_0x3a1f78,JSON[_0xaf71('0x10')](_0x59f98f));_0x1db823(_0x59f98f);})[_0xaf71('0x15')](function(_0x20a59c){logger[_0xaf71('0x11')](_0xaf71('0x1d'),_0x20a59c['message'],_0x3a1f78);_0x18c91f(_0x180451[_0xaf71('0x11')](0x1f4,_0x20a59c[_0xaf71('0x13')]));});});};
\ No newline at end of file
+var _0x52c6=['UpdateVoiceDialReport','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','then','info','VoiceDialReport,\x20%s,\x20%s','request\x20sent','debug','VoiceDialReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','CreateVoiceDialReport','body','options','raw','catch','VoiceDialReport','update','where','limit'];(function(_0x10ea91,_0x2b2e74){var _0x7ff6ea=function(_0x502152){while(--_0x502152){_0x10ea91['push'](_0x10ea91['shift']());}};_0x7ff6ea(++_0x2b2e74);}(_0x52c6,0xc1));var _0x652c=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x52c6[_0x3bf83f];return _0x22c4a9;};'use strict';var _=require(_0x652c('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x652c('0x1'));var rs=require(_0x652c('0x2'));var fs=require('fs');var Redis=require(_0x652c('0x3'));var db=require(_0x652c('0x4'))['db'];var utils=require(_0x652c('0x5'));var logger=require('../../config/logger')(_0x652c('0x6'));var config=require(_0x652c('0x7'));var jayson=require(_0x652c('0x8'));var client=jayson[_0x652c('0x9')][_0x652c('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xd13eb3,_0x320a67,_0x4b6734){return new BPromise(function(_0x5dad5c,_0x3f2690){return client['request'](_0xd13eb3,_0x4b6734)[_0x652c('0xb')](function(_0x407bf4){logger[_0x652c('0xc')](_0x652c('0xd'),_0x320a67,_0x652c('0xe'));logger[_0x652c('0xf')](_0x652c('0x10'),_0x320a67,_0x652c('0xe'),JSON[_0x652c('0x11')](_0x407bf4));if(_0x407bf4[_0x652c('0x12')]){if(_0x407bf4[_0x652c('0x12')][_0x652c('0x13')]===0x1f4){logger[_0x652c('0x12')]('VoiceDialReport,\x20%s,\x20%s',_0x320a67,_0x407bf4[_0x652c('0x12')][_0x652c('0x14')]);return _0x3f2690(_0x407bf4['error']['message']);}logger['error'](_0x652c('0xd'),_0x320a67,_0x407bf4[_0x652c('0x12')][_0x652c('0x14')]);return _0x5dad5c(_0x407bf4[_0x652c('0x12')]['message']);}else{logger[_0x652c('0xc')](_0x652c('0xd'),_0x320a67,_0x652c('0xe'));_0x5dad5c(_0x407bf4[_0x652c('0x15')][_0x652c('0x14')]);}})['catch'](function(_0x56dabd){logger[_0x652c('0x12')](_0x652c('0xd'),_0x320a67,_0x56dabd);_0x3f2690(_0x56dabd);});});}exports[_0x652c('0x16')]=function(_0x43acf6){var _0x1d4d5d=this;return new Promise(function(_0x4e546e,_0x54357a){return db['VoiceDialReport']['create'](_0x43acf6[_0x652c('0x17')],{'raw':_0x43acf6[_0x652c('0x18')]?_0x43acf6[_0x652c('0x18')][_0x652c('0x19')]===undefined?!![]:![]:!![]})[_0x652c('0xb')](function(_0x2c000c){logger[_0x652c('0xc')]('CreateVoiceDialReport',_0x43acf6);logger[_0x652c('0xf')](_0x652c('0x16'),_0x43acf6,JSON[_0x652c('0x11')](_0x2c000c));_0x4e546e(_0x2c000c);})[_0x652c('0x1a')](function(_0x2020e1){logger[_0x652c('0x12')]('CreateVoiceDialReport',_0x2020e1['message'],_0x43acf6);_0x54357a(_0x1d4d5d[_0x652c('0x12')](0x1f4,_0x2020e1['message']));});});};exports['UpdateVoiceDialReport']=function(_0x44dbb1){var _0x2d22fa=this;return new Promise(function(_0x45d36d,_0x3ac2ac){return db[_0x652c('0x1b')][_0x652c('0x1c')](_0x44dbb1[_0x652c('0x17')],{'raw':_0x44dbb1[_0x652c('0x18')]?_0x44dbb1[_0x652c('0x18')][_0x652c('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x44dbb1[_0x652c('0x18')]?_0x44dbb1[_0x652c('0x18')][_0x652c('0x1d')]||null:null,'attributes':_0x44dbb1['options']?_0x44dbb1[_0x652c('0x18')]['attributes']||null:null,'limit':_0x44dbb1[_0x652c('0x18')]?_0x44dbb1[_0x652c('0x18')][_0x652c('0x1e')]||null:null})['then'](function(_0x4f0042){logger[_0x652c('0xc')](_0x652c('0x1f'),_0x44dbb1);logger[_0x652c('0xf')]('UpdateVoiceDialReport',_0x44dbb1,JSON['stringify'](_0x4f0042));_0x45d36d(_0x4f0042);})[_0x652c('0x1a')](function(_0x12f192){logger[_0x652c('0x12')](_0x652c('0x1f'),_0x12f192[_0x652c('0x14')],_0x44dbb1);_0x3ac2ac(_0x2d22fa[_0x652c('0x12')](0x1f4,_0x12f192[_0x652c('0x14')]));});});};
\ No newline at end of file
index d3972b6..ff5db0e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2aca=['express','../../components/interaction/service','../../config/environment','get','/:id','isAuthenticated','show','/:id/applications','addApplications','put','update','delete','destroy','multer','util'];(function(_0x18b9f1,_0x2f858e){var _0x23535c=function(_0x10d7e9){while(--_0x10d7e9){_0x18b9f1['push'](_0x18b9f1['shift']());}};_0x23535c(++_0x2f858e);}(_0x2aca,0x1ed));var _0xa2ac=function(_0x51496e,_0x29e254){_0x51496e=_0x51496e-0x0;var _0x3cf6c5=_0x2aca[_0x51496e];return _0x3cf6c5;};'use strict';var multer=require(_0xa2ac('0x0'));var util=require(_0xa2ac('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xa2ac('0x2'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xa2ac('0x3'));var config=require(_0xa2ac('0x4'));var controller=require('./voiceExtension.controller');router[_0xa2ac('0x5')]('/',auth['isAuthenticated'](),controller['index']);router['get'](_0xa2ac('0x6'),auth[_0xa2ac('0x7')](),controller[_0xa2ac('0x8')]);router['post']('/',auth[_0xa2ac('0x7')](),controller['create']);router['post'](_0xa2ac('0x9'),auth[_0xa2ac('0x7')](),controller[_0xa2ac('0xa')]);router[_0xa2ac('0xb')]('/:id',auth[_0xa2ac('0x7')](),controller[_0xa2ac('0xc')]);router[_0xa2ac('0xd')](_0xa2ac('0x6'),auth[_0xa2ac('0x7')](),controller[_0xa2ac('0xe')]);module['exports']=router;
\ No newline at end of file
+var _0xb73c=['get','isAuthenticated','/:id','show','/:id/applications','addApplications','put','update','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x4fca8e,_0x4c2162){var _0x23f51d=function(_0x4e42ae){while(--_0x4e42ae){_0x4fca8e['push'](_0x4fca8e['shift']());}};_0x23f51d(++_0x4c2162);}(_0xb73c,0x6f));var _0xcb73=function(_0x5a36d2,_0xf10014){_0x5a36d2=_0x5a36d2-0x0;var _0xe0c0e6=_0xb73c[_0x5a36d2];return _0xe0c0e6;};'use strict';var multer=require('multer');var util=require(_0xcb73('0x0'));var path=require(_0xcb73('0x1'));var timeout=require(_0xcb73('0x2'));var express=require(_0xcb73('0x3'));var router=express[_0xcb73('0x4')]();var fs_extra=require(_0xcb73('0x5'));var auth=require(_0xcb73('0x6'));var interaction=require(_0xcb73('0x7'));var config=require(_0xcb73('0x8'));var controller=require('./voiceExtension.controller');router[_0xcb73('0x9')]('/',auth[_0xcb73('0xa')](),controller['index']);router[_0xcb73('0x9')](_0xcb73('0xb'),auth[_0xcb73('0xa')](),controller[_0xcb73('0xc')]);router['post']('/',auth[_0xcb73('0xa')](),controller['create']);router['post'](_0xcb73('0xd'),auth[_0xcb73('0xa')](),controller[_0xcb73('0xe')]);router[_0xcb73('0xf')](_0xcb73('0xb'),auth[_0xcb73('0xa')](),controller[_0xcb73('0x10')]);router[_0xcb73('0x11')]('/:id',auth[_0xcb73('0xa')](),controller[_0xcb73('0x12')]);module[_0xcb73('0x13')]=router;
\ No newline at end of file
index a33d7b6..5af9ecf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x371e=['wav','VIRTUAL','getDataValue','sequelize','exports','STRING','compositeIndex','NoOp','ENUM','outbound','inbound-fax','outbound-fax','system','any','*,*,*,*','INTEGER','BOOLEAN'];(function(_0x4503df,_0xfec122){var _0x3f1b2b=function(_0x32b1de){while(--_0x32b1de){_0x4503df['push'](_0x4503df['shift']());}};_0x3f1b2b(++_0xfec122);}(_0x371e,0x19b));var _0xe371=function(_0x934c00,_0x40d18d){_0x934c00=_0x934c00-0x0;var _0x323115=_0x371e[_0x934c00];return _0x323115;};'use strict';var Sequelize=require(_0xe371('0x0'));module[_0xe371('0x1')]={'context':{'type':Sequelize[_0xe371('0x2')],'allowNull':![],'unique':_0xe371('0x3'),'validate':{'notEmpty':!![],'is':/[A-Za-z0-9._\+*!\-\[\]]+$/i}},'exten':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xe371('0x3')},'priority':{'type':Sequelize[_0xe371('0x2')],'allowNull':![],'defaultValue':'1','unique':_0xe371('0x3')},'tag':{'type':Sequelize[_0xe371('0x2')],'allowNull':![],'defaultValue':'--'},'app':{'type':Sequelize[_0xe371('0x2')],'allowNull':![],'defaultValue':_0xe371('0x4')},'appdata':{'type':Sequelize[_0xe371('0x2')](0x1000),'allowNull':!![],'defaultValue':''},'type':{'type':Sequelize[_0xe371('0x5')]('inbound',_0xe371('0x6'),'internal',_0xe371('0x7'),_0xe371('0x8'),_0xe371('0x9'),_0xe371('0xa')),'allowNull':![]},'description':{'type':Sequelize[_0xe371('0x2')]},'interval':{'type':Sequelize[_0xe371('0x2')],'allowNull':![],'defaultValue':_0xe371('0xb')},'IntervalId':{'type':Sequelize[_0xe371('0xc')]},'isApp':{'type':Sequelize['BOOLEAN'],'allowNull':![],'defaultValue':![]},'appType':{'type':Sequelize[_0xe371('0x2')],'defaultValue':null},'callerID':{'type':Sequelize[_0xe371('0x2')],'allowNull':!![]},'record':{'type':Sequelize[_0xe371('0xd')],'defaultValue':![]},'cutdigits':{'type':Sequelize[_0xe371('0xc')]},'recordingFormat':{'type':Sequelize[_0xe371('0x2')],'defaultValue':_0xe371('0xe')},'answer':{'type':Sequelize[_0xe371('0xd')],'defaultValue':!![]},'name':{'type':Sequelize[_0xe371('0xf')],'get':function(_0x3f42bf){return this[_0xe371('0x10')]('exten');}},'alias':{'type':Sequelize['STRING'],'allowNull':!![]}};
\ No newline at end of file
+var _0x5fc0=['system','*,*,*,*','INTEGER','BOOLEAN','wav','VIRTUAL','getDataValue','sequelize','exports','STRING','compositeIndex','NoOp','ENUM','internal','inbound-fax','outbound-fax'];(function(_0x41eab3,_0x1a2686){var _0x52b098=function(_0x410332){while(--_0x410332){_0x41eab3['push'](_0x41eab3['shift']());}};_0x52b098(++_0x1a2686);}(_0x5fc0,0x1c7));var _0x05fc=function(_0x2b3797,_0x1a9e1d){_0x2b3797=_0x2b3797-0x0;var _0x3ffba2=_0x5fc0[_0x2b3797];return _0x3ffba2;};'use strict';var Sequelize=require(_0x05fc('0x0'));module[_0x05fc('0x1')]={'context':{'type':Sequelize[_0x05fc('0x2')],'allowNull':![],'unique':_0x05fc('0x3'),'validate':{'notEmpty':!![],'is':/[A-Za-z0-9._\+*!\-\[\]]+$/i}},'exten':{'type':Sequelize[_0x05fc('0x2')],'allowNull':![],'unique':'compositeIndex'},'priority':{'type':Sequelize[_0x05fc('0x2')],'allowNull':![],'defaultValue':'1','unique':_0x05fc('0x3')},'tag':{'type':Sequelize[_0x05fc('0x2')],'allowNull':![],'defaultValue':'--'},'app':{'type':Sequelize[_0x05fc('0x2')],'allowNull':![],'defaultValue':_0x05fc('0x4')},'appdata':{'type':Sequelize[_0x05fc('0x2')](0x1000),'allowNull':!![],'defaultValue':''},'type':{'type':Sequelize[_0x05fc('0x5')]('inbound','outbound',_0x05fc('0x6'),_0x05fc('0x7'),_0x05fc('0x8'),_0x05fc('0x9'),'any'),'allowNull':![]},'description':{'type':Sequelize[_0x05fc('0x2')]},'interval':{'type':Sequelize[_0x05fc('0x2')],'allowNull':![],'defaultValue':_0x05fc('0xa')},'IntervalId':{'type':Sequelize[_0x05fc('0xb')]},'isApp':{'type':Sequelize['BOOLEAN'],'allowNull':![],'defaultValue':![]},'appType':{'type':Sequelize[_0x05fc('0x2')],'defaultValue':null},'callerID':{'type':Sequelize['STRING'],'allowNull':!![]},'record':{'type':Sequelize[_0x05fc('0xc')],'defaultValue':![]},'cutdigits':{'type':Sequelize[_0x05fc('0xb')]},'recordingFormat':{'type':Sequelize[_0x05fc('0x2')],'defaultValue':_0x05fc('0xd')},'answer':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'name':{'type':Sequelize[_0x05fc('0xe')],'get':function(_0x21f6b7){return this[_0x05fc('0xf')]('exten');}},'alias':{'type':Sequelize[_0x05fc('0x2')],'allowNull':!![]}};
\ No newline at end of file
index d9b4e7a..8000a0d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x726a=['includeAll','include','findAll','rows','catch','show','params','keys','intersection','fields','length','create','body','startsWith','exten','concat','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','InboundRoutes','UserProfileSection','autoAssociation','error','context','description','mandatoryDisposition','alias','addApplications','findOne','sequelize','isApp','rewriteDial','toLowerCase','true','createRouting','bulkCreate','findAndCountAll','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','to-csv','ejs','lodash','squel','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','./voiceExtension.socket','register','sendStatus','status','end','offset','undefined','count','set','Content-Range','apply','reject','update','then','get','OutboundRoutes','outbound','InternalRoutes','internal','ignore','map','value','includes','type','find','name','UserProfileResource','destroy','stack','send','index','VoiceExtension','rawAttributes','fieldName','key','model','query','filters','attributes','nolimit','limit','sort','where','pick','filter','merge','VIRTUAL','options'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x726a,0x1e5));var _0xa726=function(_0x32f3f5,_0x1a5cd1){_0x32f3f5=_0x32f3f5-0x0;var _0x52fcb1=_0x726a[_0x32f3f5];return _0x52fcb1;};'use strict';var emlformat=require(_0xa726('0x0'));var rimraf=require(_0xa726('0x1'));var zipdir=require(_0xa726('0x2'));var jsonpatch=require(_0xa726('0x3'));var rp=require(_0xa726('0x4'));var moment=require(_0xa726('0x5'));var BPromise=require(_0xa726('0x6'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0xa726('0x7'));var ejs=require(_0xa726('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xa726('0x9'));var squel=require(_0xa726('0xa'));var crypto=require('crypto');var jsforce=require(_0xa726('0xb'));var deskjs=require('desk.js');var toCsv=require(_0xa726('0x7'));var querystring=require('querystring');var Papa=require(_0xa726('0xc'));var Redis=require(_0xa726('0xd'));var authService=require(_0xa726('0xe'));var qs=require(_0xa726('0xf'));var as=require(_0xa726('0x10'));var hardwareService=require(_0xa726('0x11'));var logger=require(_0xa726('0x12'))(_0xa726('0x13'));var utils=require(_0xa726('0x14'));var config=require(_0xa726('0x15'));var licenseUtil=require(_0xa726('0x16'));var db=require('../../mysqldb')['db'];config[_0xa726('0x17')]=_[_0xa726('0x18')](config['redis'],{'host':_0xa726('0x19'),'port':0x18eb});var socket=require(_0xa726('0x1a'))(new Redis(config[_0xa726('0x17')]));require(_0xa726('0x1b'))[_0xa726('0x1c')](socket);function respondWithStatusCode(_0x45f089,_0x144993){_0x144993=_0x144993||0xcc;return function(_0x3c6422){if(_0x3c6422){return _0x45f089[_0xa726('0x1d')](_0x144993);}return _0x45f089[_0xa726('0x1e')](_0x144993)[_0xa726('0x1f')]();};}function respondWithResult(_0x41c77e,_0x18f5b8){_0x18f5b8=_0x18f5b8||0xc8;return function(_0x25079d){if(_0x25079d){return _0x41c77e[_0xa726('0x1e')](_0x18f5b8)['json'](_0x25079d);}};}function respondWithFilteredResult(_0x3b8920,_0x620789){return function(_0x1840e1){if(_0x1840e1){var _0x2c1a67=typeof _0x620789[_0xa726('0x20')]===_0xa726('0x21')&&typeof _0x620789['limit']===_0xa726('0x21');var _0x5c5d4e=_0x1840e1['count'];var _0x213c7a=_0x2c1a67?0x0:_0x620789[_0xa726('0x20')];var _0x1ec5e8=_0x2c1a67?_0x1840e1[_0xa726('0x22')]:_0x620789[_0xa726('0x20')]+_0x620789['limit'];var _0x3d4fcd;if(_0x1ec5e8>=_0x5c5d4e){_0x1ec5e8=_0x5c5d4e;_0x3d4fcd=0xc8;}else{_0x3d4fcd=0xce;}_0x3b8920['status'](_0x3d4fcd);return _0x3b8920[_0xa726('0x23')](_0xa726('0x24'),_0x213c7a+'-'+_0x1ec5e8+'/'+_0x5c5d4e)['json'](_0x1840e1);}return null;};}function patchUpdates(_0x5e022f){return function(_0x1c3110){try{jsonpatch[_0xa726('0x25')](_0x1c3110,_0x5e022f,!![]);}catch(_0x3f79f9){return BPromise[_0xa726('0x26')](_0x3f79f9);}return _0x1c3110['save']();};}function saveUpdates(_0x39174a,_0x4c7f9e){return function(_0x4f672c){if(_0x4f672c){return _0x4f672c[_0xa726('0x27')](_0x39174a)['then'](function(_0x5f3678){return _0x5f3678;});}return null;};}function removeEntity(_0x29291b,_0x7a635e){return function(_0x442026){if(_0x442026){return _0x442026['destroy']()[_0xa726('0x28')](function(){var _0x38757b=_0x442026[_0xa726('0x29')]({'plain':!![]});var _0x159e4b=[{'name':'InboundRoutes','value':'inbound','ignore':![]},{'name':_0xa726('0x2a'),'value':_0xa726('0x2b'),'ignore':![]},{'name':_0xa726('0x2c'),'value':_0xa726('0x2d'),'ignore':![]}];var _0x12d9b5=_(_0x159e4b)['filter'](_0xa726('0x2e'))[_0xa726('0x2f')](_0xa726('0x30'))[_0xa726('0x30')]();if(_[_0xa726('0x31')](_0x12d9b5,_0x38757b[_0xa726('0x32')])){return;}var _0x5a48bf=_[_0xa726('0x33')](_0x159e4b,[_0xa726('0x30'),_0x38757b[_0xa726('0x32')]])[_0xa726('0x34')];return db[_0xa726('0x35')][_0xa726('0x36')]({'where':{'type':_0x5a48bf,'resourceId':_0x38757b['id']}})[_0xa726('0x28')](function(){return _0x442026;});})[_0xa726('0x28')](function(){_0x29291b['status'](0xcc)[_0xa726('0x1f')]();});}};}function handleEntityNotFound(_0x151f0d,_0x1bf9b1){return function(_0x368575){if(!_0x368575){_0x151f0d[_0xa726('0x1d')](0x194);}return _0x368575;};}function handleError(_0x571d81,_0x3c92ff){_0x3c92ff=_0x3c92ff||0x1f4;return function(_0x2325d0){logger['error'](_0x2325d0[_0xa726('0x37')]);if(_0x2325d0[_0xa726('0x34')]){delete _0x2325d0[_0xa726('0x34')];}_0x571d81[_0xa726('0x1e')](_0x3c92ff)[_0xa726('0x38')](_0x2325d0);};}exports[_0xa726('0x39')]=function(_0xd2c1b,_0x46f524){var _0x38ebc2={},_0x1d2eda={},_0x139bdb={'count':0x0,'rows':[]};var _0x67d0d=_[_0xa726('0x2f')](db[_0xa726('0x3a')][_0xa726('0x3b')],function(_0x44e455){return{'name':_0x44e455[_0xa726('0x3c')],'type':_0x44e455['type'][_0xa726('0x3d')]};});_0x1d2eda[_0xa726('0x3e')]=_[_0xa726('0x2f')](_0x67d0d,_0xa726('0x34'));_0x1d2eda[_0xa726('0x3f')]=_['keys'](_0xd2c1b[_0xa726('0x3f')]);_0x1d2eda[_0xa726('0x40')]=_['intersection'](_0x1d2eda[_0xa726('0x3e')],_0x1d2eda[_0xa726('0x3f')]);_0x38ebc2[_0xa726('0x41')]=_['intersection'](_0x1d2eda[_0xa726('0x3e')],qs['fields'](_0xd2c1b[_0xa726('0x3f')]['fields']));_0x38ebc2[_0xa726('0x41')]=_0x38ebc2[_0xa726('0x41')]['length']?_0x38ebc2[_0xa726('0x41')]:_0x1d2eda['model'];if(!_0xd2c1b['query']['hasOwnProperty'](_0xa726('0x42'))){_0x38ebc2[_0xa726('0x43')]=qs[_0xa726('0x43')](_0xd2c1b['query'][_0xa726('0x43')]);_0x38ebc2[_0xa726('0x20')]=qs[_0xa726('0x20')](_0xd2c1b[_0xa726('0x3f')][_0xa726('0x20')]);}_0x38ebc2['order']=qs[_0xa726('0x44')](_0xd2c1b[_0xa726('0x3f')]['sort']);_0x38ebc2[_0xa726('0x45')]=qs[_0xa726('0x40')](_[_0xa726('0x46')](_0xd2c1b[_0xa726('0x3f')],_0x1d2eda[_0xa726('0x40')]),_0x67d0d);if(_0xd2c1b[_0xa726('0x3f')][_0xa726('0x47')]){_0x38ebc2[_0xa726('0x45')]=_[_0xa726('0x48')](_0x38ebc2['where'],{'$or':_['map'](_0x67d0d,function(_0x4d9b03){if(_0x4d9b03[_0xa726('0x32')]!==_0xa726('0x49')){var _0x28b5d8={};_0x28b5d8[_0x4d9b03[_0xa726('0x34')]]={'$like':'%'+_0xd2c1b[_0xa726('0x3f')]['filter']+'%'};return _0x28b5d8;}})});}_0x38ebc2=_['merge']({},_0x38ebc2,_0xd2c1b[_0xa726('0x4a')]);var _0xc700ea={'where':_0x38ebc2[_0xa726('0x45')]};return db[_0xa726('0x3a')][_0xa726('0x22')](_0xc700ea)[_0xa726('0x28')](function(_0x18d747){_0x139bdb['count']=_0x18d747;if(_0xd2c1b['query'][_0xa726('0x4b')]){_0x38ebc2[_0xa726('0x4c')]=[{'all':!![]}];}return db['VoiceExtension'][_0xa726('0x4d')](_0x38ebc2);})[_0xa726('0x28')](function(_0x3c1a22){_0x139bdb[_0xa726('0x4e')]=_0x3c1a22;return _0x139bdb;})[_0xa726('0x28')](respondWithFilteredResult(_0x46f524,_0x38ebc2))[_0xa726('0x4f')](handleError(_0x46f524,null));};exports[_0xa726('0x50')]=function(_0x1dc7c1,_0x2b5d22){var _0x5dd190={'raw':![],'where':{'id':_0x1dc7c1[_0xa726('0x51')]['id']}},_0xa12a17={};_0xa12a17[_0xa726('0x3e')]=_['keys'](db[_0xa726('0x3a')][_0xa726('0x3b')]);_0xa12a17[_0xa726('0x3f')]=_[_0xa726('0x52')](_0x1dc7c1[_0xa726('0x3f')]);_0xa12a17[_0xa726('0x40')]=_['intersection'](_0xa12a17[_0xa726('0x3e')],_0xa12a17[_0xa726('0x3f')]);_0x5dd190[_0xa726('0x41')]=_[_0xa726('0x53')](_0xa12a17[_0xa726('0x3e')],qs['fields'](_0x1dc7c1['query'][_0xa726('0x54')]));_0x5dd190['attributes']=_0x5dd190[_0xa726('0x41')][_0xa726('0x55')]?_0x5dd190[_0xa726('0x41')]:_0xa12a17['model'];if(_0x1dc7c1[_0xa726('0x3f')][_0xa726('0x4b')]){_0x5dd190[_0xa726('0x4c')]=[{'all':!![]}];}_0x5dd190=_[_0xa726('0x48')]({},_0x5dd190,_0x1dc7c1[_0xa726('0x4a')]);return db[_0xa726('0x3a')]['find'](_0x5dd190)[_0xa726('0x28')](handleEntityNotFound(_0x2b5d22,null))[_0xa726('0x28')](respondWithResult(_0x2b5d22,null))['catch'](handleError(_0x2b5d22,null));};exports[_0xa726('0x36')]=function(_0x43b793,_0x5f2dc1){return db[_0xa726('0x3a')][_0xa726('0x33')]({'where':{'id':_0x43b793[_0xa726('0x51')]['id']}})['then'](handleEntityNotFound(_0x5f2dc1,null))[_0xa726('0x28')](removeEntity(_0x5f2dc1,null))[_0xa726('0x4f')](handleError(_0x5f2dc1,null));};exports[_0xa726('0x56')]=function(_0x5a4156,_0x305594){if(_0x5a4156[_0xa726('0x57')][_0xa726('0x32')]==='outbound'&&!_[_0xa726('0x58')](_0x5a4156['body']['exten'],'_')){_0x5a4156[_0xa726('0x57')][_0xa726('0x59')]='_'[_0xa726('0x5a')](_0x5a4156[_0xa726('0x57')][_0xa726('0x59')]);}return db['VoiceExtension']['create'](_0x5a4156[_0xa726('0x57')],{'raw':![]})[_0xa726('0x28')](function(_0x36bd76){var _0x464ba2=_0x5a4156[_0xa726('0x5b')][_0xa726('0x29')]({'plain':!![]});if(!_0x464ba2)throw new Error(_0xa726('0x5c'));if(_0x464ba2[_0xa726('0x5d')]===_0xa726('0x5b')){var _0x55127b=_0x36bd76[_0xa726('0x29')]({'plain':!![]});var _0x14bd32=[{'name':_0xa726('0x5e'),'value':'inbound'},{'name':'OutboundRoutes','value':_0xa726('0x2b')},{'name':_0xa726('0x2c'),'value':_0xa726('0x2d')}];var _0x3a85eb=_[_0xa726('0x33')](_0x14bd32,[_0xa726('0x30'),_0x55127b[_0xa726('0x32')]])[_0xa726('0x34')];return db[_0xa726('0x5f')]['find']({'where':{'name':_0x3a85eb,'userProfileId':_0x464ba2['userProfileId']},'raw':!![]})[_0xa726('0x28')](function(_0xdd68ba){if(_0xdd68ba&&_0xdd68ba[_0xa726('0x60')]===0x0){return db[_0xa726('0x35')][_0xa726('0x56')]({'name':_0x55127b[_0xa726('0x34')],'resourceId':_0x55127b['id'],'type':_0xdd68ba['name'],'sectionId':_0xdd68ba['id']},{})['then'](function(){return _0x36bd76;});}else{return _0x36bd76;}})[_0xa726('0x4f')](function(_0x411f87){logger[_0xa726('0x61')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x411f87);throw _0x411f87;});}return _0x36bd76;})[_0xa726('0x28')](respondWithResult(_0x305594,0xc9))[_0xa726('0x4f')](handleError(_0x305594,null));};exports['update']=function(_0x32f272,_0x2d6f2f){if(_0x32f272[_0xa726('0x57')]['id']){delete _0x32f272[_0xa726('0x57')]['id'];}return db[_0xa726('0x3a')]['find']({'where':{'id':_0x32f272[_0xa726('0x51')]['id']}})[_0xa726('0x28')](handleEntityNotFound(_0x2d6f2f,null))[_0xa726('0x28')](function(_0x471267){if(_0x471267){return db[_0xa726('0x3a')]['update'](_['pick'](_0x32f272[_0xa726('0x57')],[_0xa726('0x59'),_0xa726('0x62'),_0xa726('0x63'),'recordingFormat','cutdigits',_0xa726('0x64'),_0xa726('0x65')]),{'where':{'context':_0x471267['context'],'exten':_0x471267[_0xa726('0x59')]},'individualHooks':!![]})['then'](function(_0x3fa3cb){return _0x3fa3cb;});}return null;})[_0xa726('0x28')](respondWithStatusCode(_0x2d6f2f,null))[_0xa726('0x4f')](handleError(_0x2d6f2f,null));};exports[_0xa726('0x66')]=function(_0x75814d,_0x390d55){return db[_0xa726('0x3a')][_0xa726('0x67')]({'where':{'id':_0x75814d[_0xa726('0x51')]['id']}})[_0xa726('0x28')](function(_0xbb6a02){if(_0xbb6a02){return db[_0xa726('0x68')]['transaction'](function(_0x41160e){return db[_0xa726('0x3a')][_0xa726('0x36')]({'where':{'VoiceExtensionId':_0x75814d[_0xa726('0x51')]['id']},'transaction':_0x41160e})[_0xa726('0x28')](function(){var _0x5b4a82=_[_0xa726('0x2f')](_0x75814d['body'],function(_0x189d41){_0x189d41['VoiceExtensionId']=_0x75814d[_0xa726('0x51')]['id'];_0x189d41[_0xa726('0x69')]=!![];return _0x189d41;});var _0x35fcb6=_0x75814d['query'][_0xa726('0x6a')]&&_0x75814d[_0xa726('0x3f')][_0xa726('0x6a')][_0xa726('0x6b')]()===_0xa726('0x6c')?!![]:![];return _0xbb6a02[_0xa726('0x6d')](_0x5b4a82,_0x35fcb6);})['then'](function(_0x3ae5fb){return db['VoiceExtension'][_0xa726('0x6e')](_0x3ae5fb,{'transaction':_0x41160e});});})[_0xa726('0x28')](function(){return db[_0xa726('0x3a')][_0xa726('0x6f')]({'where':{'isApp':!![],'VoiceExtensionId':_0x75814d[_0xa726('0x51')]['id']},'order':'cast(priority\x20as\x20unsigned)'});});}})['then'](respondWithResult(_0x390d55,null))[_0xa726('0x4f')](handleError(_0x390d55,null));};
\ No newline at end of file
+var _0xe8f9=['show','params','include','options','create','body','exten','concat','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','InternalRoutes','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','context','recordingFormat','cutdigits','mandatoryDisposition','alias','addApplications','findOne','sequelize','VoiceExtensionId','isApp','createRouting','LOG\x20~\x20.then\x20~\x20routing','findAndCountAll','cast(priority\x20as\x20unsigned)','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','redis','localhost','./voiceExtension.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','destroy','InboundRoutes','inbound','OutboundRoutes','outbound','internal','filter','ignore','map','value','type','find','name','UserProfileResource','then','VoiceExtension','rawAttributes','fieldName','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','sort','where','VIRTUAL','merge','includeAll','rows','catch'];(function(_0x3b0731,_0xcf9925){var _0x4204d7=function(_0x635ac5){while(--_0x635ac5){_0x3b0731['push'](_0x3b0731['shift']());}};_0x4204d7(++_0xcf9925);}(_0xe8f9,0x73));var _0x9e8f=function(_0x42bfcc,_0x128f21){_0x42bfcc=_0x42bfcc-0x0;var _0x49a912=_0xe8f9[_0x42bfcc];return _0x49a912;};'use strict';var _=require('lodash');var Redis=require(_0x9e8f('0x0'));var qs=require(_0x9e8f('0x1'));var logger=require(_0x9e8f('0x2'))(_0x9e8f('0x3'));var config=require(_0x9e8f('0x4'));var db=require(_0x9e8f('0x5'))['db'];config[_0x9e8f('0x6')]=_['defaults'](config[_0x9e8f('0x6')],{'host':_0x9e8f('0x7'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x9e8f('0x6')]));require(_0x9e8f('0x8'))[_0x9e8f('0x9')](socket);function respondWithStatusCode(_0x1cc5a0,_0x4c3598){_0x4c3598=_0x4c3598||0xcc;return function(_0x1bda51){if(_0x1bda51){return _0x1cc5a0[_0x9e8f('0xa')](_0x4c3598);}return _0x1cc5a0[_0x9e8f('0xb')](_0x4c3598)[_0x9e8f('0xc')]();};}function respondWithResult(_0x4effc5,_0x396a5d){_0x396a5d=_0x396a5d||0xc8;return function(_0x19d838){if(_0x19d838){return _0x4effc5[_0x9e8f('0xb')](_0x396a5d)[_0x9e8f('0xd')](_0x19d838);}};}function respondWithFilteredResult(_0x227a10,_0x2bca53){return function(_0x516d6e){if(_0x516d6e){var _0x2949d1=typeof _0x2bca53[_0x9e8f('0xe')]===_0x9e8f('0xf')&&typeof _0x2bca53[_0x9e8f('0x10')]===_0x9e8f('0xf');var _0x8cebe3=_0x516d6e[_0x9e8f('0x11')];var _0x4e120b=_0x2949d1?0x0:_0x2bca53[_0x9e8f('0xe')];var _0xb22c76=_0x2949d1?_0x516d6e['count']:_0x2bca53[_0x9e8f('0xe')]+_0x2bca53[_0x9e8f('0x10')];var _0x3edc96;if(_0xb22c76>=_0x8cebe3){_0xb22c76=_0x8cebe3;_0x3edc96=0xc8;}else{_0x3edc96=0xce;}_0x227a10['status'](_0x3edc96);return _0x227a10[_0x9e8f('0x12')](_0x9e8f('0x13'),_0x4e120b+'-'+_0xb22c76+'/'+_0x8cebe3)[_0x9e8f('0xd')](_0x516d6e);}return null;};}function removeEntity(_0x4fb9f0){return function(_0x71d380){if(_0x71d380){return _0x71d380[_0x9e8f('0x14')]()['then'](function(){var _0xe62680=_0x71d380['get']({'plain':!![]});var _0x5db1ed=[{'name':_0x9e8f('0x15'),'value':_0x9e8f('0x16'),'ignore':![]},{'name':_0x9e8f('0x17'),'value':_0x9e8f('0x18'),'ignore':![]},{'name':'InternalRoutes','value':_0x9e8f('0x19'),'ignore':![]}];var _0x36fadd=_(_0x5db1ed)[_0x9e8f('0x1a')](_0x9e8f('0x1b'))[_0x9e8f('0x1c')](_0x9e8f('0x1d'))['value']();if(_['includes'](_0x36fadd,_0xe62680[_0x9e8f('0x1e')])){return;}var _0x22d014=_[_0x9e8f('0x1f')](_0x5db1ed,[_0x9e8f('0x1d'),_0xe62680['type']])[_0x9e8f('0x20')];return db[_0x9e8f('0x21')][_0x9e8f('0x14')]({'where':{'type':_0x22d014,'resourceId':_0xe62680['id']}})['then'](function(){return _0x71d380;});})[_0x9e8f('0x22')](function(){_0x4fb9f0[_0x9e8f('0xb')](0xcc)[_0x9e8f('0xc')]();});}};}function handleEntityNotFound(_0x557f9f){return function(_0x17ad68){if(!_0x17ad68){_0x557f9f[_0x9e8f('0xa')](0x194);}return _0x17ad68;};}function handleError(_0x2129af,_0x371adb){_0x371adb=_0x371adb||0x1f4;return function(_0x539b12){logger['error'](_0x539b12['stack']);if(_0x539b12['name']){delete _0x539b12[_0x9e8f('0x20')];}_0x2129af[_0x9e8f('0xb')](_0x371adb)['send'](_0x539b12);};}exports['index']=function(_0x32a3b4,_0x817e33){var _0x46b3bd={},_0x249421={},_0x2a8892={'count':0x0,'rows':[]};var _0x53b9d2=_[_0x9e8f('0x1c')](db[_0x9e8f('0x23')][_0x9e8f('0x24')],function(_0x2a9679){return{'name':_0x2a9679[_0x9e8f('0x25')],'type':_0x2a9679[_0x9e8f('0x1e')][_0x9e8f('0x26')]};});_0x249421[_0x9e8f('0x27')]=_['map'](_0x53b9d2,_0x9e8f('0x20'));_0x249421[_0x9e8f('0x28')]=_[_0x9e8f('0x29')](_0x32a3b4[_0x9e8f('0x28')]);_0x249421[_0x9e8f('0x2a')]=_[_0x9e8f('0x2b')](_0x249421[_0x9e8f('0x27')],_0x249421[_0x9e8f('0x28')]);_0x46b3bd['attributes']=_[_0x9e8f('0x2b')](_0x249421['model'],qs[_0x9e8f('0x2c')](_0x32a3b4[_0x9e8f('0x28')][_0x9e8f('0x2c')]));_0x46b3bd[_0x9e8f('0x2d')]=_0x46b3bd['attributes'][_0x9e8f('0x2e')]?_0x46b3bd[_0x9e8f('0x2d')]:_0x249421[_0x9e8f('0x27')];if(!_0x32a3b4[_0x9e8f('0x28')][_0x9e8f('0x2f')]('nolimit')){_0x46b3bd[_0x9e8f('0x10')]=qs[_0x9e8f('0x10')](_0x32a3b4[_0x9e8f('0x28')][_0x9e8f('0x10')]);_0x46b3bd['offset']=qs[_0x9e8f('0xe')](_0x32a3b4[_0x9e8f('0x28')]['offset']);}_0x46b3bd['order']=qs[_0x9e8f('0x30')](_0x32a3b4[_0x9e8f('0x28')]['sort']);_0x46b3bd[_0x9e8f('0x31')]=qs[_0x9e8f('0x2a')](_['pick'](_0x32a3b4[_0x9e8f('0x28')],_0x249421[_0x9e8f('0x2a')]),_0x53b9d2);if(_0x32a3b4[_0x9e8f('0x28')]['filter']){_0x46b3bd[_0x9e8f('0x31')]=_['merge'](_0x46b3bd[_0x9e8f('0x31')],{'$or':_['map'](_0x53b9d2,function(_0x4a2957){if(_0x4a2957['type']!==_0x9e8f('0x32')){var _0xd8b6e5={};_0xd8b6e5[_0x4a2957[_0x9e8f('0x20')]]={'$like':'%'+_0x32a3b4[_0x9e8f('0x28')][_0x9e8f('0x1a')]+'%'};return _0xd8b6e5;}})});}_0x46b3bd=_[_0x9e8f('0x33')]({},_0x46b3bd,_0x32a3b4['options']);var _0x31d0b5={'where':_0x46b3bd[_0x9e8f('0x31')]};return db[_0x9e8f('0x23')]['count'](_0x31d0b5)['then'](function(_0x4a3b8d){_0x2a8892[_0x9e8f('0x11')]=_0x4a3b8d;if(_0x32a3b4[_0x9e8f('0x28')][_0x9e8f('0x34')]){_0x46b3bd['include']=[{'all':!![]}];}return db[_0x9e8f('0x23')]['findAll'](_0x46b3bd);})[_0x9e8f('0x22')](function(_0x527696){_0x2a8892[_0x9e8f('0x35')]=_0x527696;return _0x2a8892;})['then'](respondWithFilteredResult(_0x817e33,_0x46b3bd))[_0x9e8f('0x36')](handleError(_0x817e33,null));};exports[_0x9e8f('0x37')]=function(_0x5b6eea,_0x5a43d7){var _0x52a59e={'raw':![],'where':{'id':_0x5b6eea[_0x9e8f('0x38')]['id']}},_0x49a951={};_0x49a951['model']=_[_0x9e8f('0x29')](db[_0x9e8f('0x23')][_0x9e8f('0x24')]);_0x49a951[_0x9e8f('0x28')]=_[_0x9e8f('0x29')](_0x5b6eea['query']);_0x49a951['filters']=_[_0x9e8f('0x2b')](_0x49a951[_0x9e8f('0x27')],_0x49a951[_0x9e8f('0x28')]);_0x52a59e[_0x9e8f('0x2d')]=_[_0x9e8f('0x2b')](_0x49a951[_0x9e8f('0x27')],qs[_0x9e8f('0x2c')](_0x5b6eea['query'][_0x9e8f('0x2c')]));_0x52a59e[_0x9e8f('0x2d')]=_0x52a59e[_0x9e8f('0x2d')][_0x9e8f('0x2e')]?_0x52a59e[_0x9e8f('0x2d')]:_0x49a951[_0x9e8f('0x27')];if(_0x5b6eea[_0x9e8f('0x28')][_0x9e8f('0x34')]){_0x52a59e[_0x9e8f('0x39')]=[{'all':!![]}];}_0x52a59e=_[_0x9e8f('0x33')]({},_0x52a59e,_0x5b6eea[_0x9e8f('0x3a')]);return db[_0x9e8f('0x23')][_0x9e8f('0x1f')](_0x52a59e)['then'](handleEntityNotFound(_0x5a43d7,null))['then'](respondWithResult(_0x5a43d7,null))[_0x9e8f('0x36')](handleError(_0x5a43d7,null));};exports[_0x9e8f('0x14')]=function(_0x3b6ced,_0x55ed75){return db[_0x9e8f('0x23')]['find']({'where':{'id':_0x3b6ced[_0x9e8f('0x38')]['id']}})[_0x9e8f('0x22')](handleEntityNotFound(_0x55ed75,null))[_0x9e8f('0x22')](removeEntity(_0x55ed75,null))[_0x9e8f('0x36')](handleError(_0x55ed75,null));};exports[_0x9e8f('0x3b')]=function(_0x1b6317,_0x191434){if(_0x1b6317[_0x9e8f('0x3c')][_0x9e8f('0x1e')]===_0x9e8f('0x18')&&!_['startsWith'](_0x1b6317['body'][_0x9e8f('0x3d')],'_')){_0x1b6317[_0x9e8f('0x3c')]['exten']='_'[_0x9e8f('0x3e')](_0x1b6317[_0x9e8f('0x3c')][_0x9e8f('0x3d')]);}return db[_0x9e8f('0x23')][_0x9e8f('0x3b')](_0x1b6317[_0x9e8f('0x3c')],{'raw':![]})[_0x9e8f('0x22')](function(_0x15cc92){var _0xa36378=_0x1b6317['user'][_0x9e8f('0x3f')]({'plain':!![]});if(!_0xa36378)throw new Error(_0x9e8f('0x40'));if(_0xa36378['role']===_0x9e8f('0x41')){var _0x2fe9ea=_0x15cc92[_0x9e8f('0x3f')]({'plain':!![]});var _0x1318c7=[{'name':_0x9e8f('0x15'),'value':_0x9e8f('0x16')},{'name':'OutboundRoutes','value':_0x9e8f('0x18')},{'name':_0x9e8f('0x42'),'value':_0x9e8f('0x19')}];var _0x5267e5=_['find'](_0x1318c7,[_0x9e8f('0x1d'),_0x2fe9ea['type']])['name'];return db['UserProfileSection'][_0x9e8f('0x1f')]({'where':{'name':_0x5267e5,'userProfileId':_0xa36378[_0x9e8f('0x43')]},'raw':!![]})[_0x9e8f('0x22')](function(_0x128d1a){if(_0x128d1a&&_0x128d1a[_0x9e8f('0x44')]===0x0){return db[_0x9e8f('0x21')][_0x9e8f('0x3b')]({'name':_0x2fe9ea[_0x9e8f('0x20')],'resourceId':_0x2fe9ea['id'],'type':_0x128d1a[_0x9e8f('0x20')],'sectionId':_0x128d1a['id']},{})[_0x9e8f('0x22')](function(){return _0x15cc92;});}else{return _0x15cc92;}})['catch'](function(_0x3bb86d){logger['error'](_0x9e8f('0x45'),_0x3bb86d);throw _0x3bb86d;});}return _0x15cc92;})[_0x9e8f('0x22')](respondWithResult(_0x191434,0xc9))[_0x9e8f('0x36')](handleError(_0x191434,null));};exports[_0x9e8f('0x46')]=function(_0x45e5a5,_0xf492e0){if(_0x45e5a5[_0x9e8f('0x3c')]['id']){delete _0x45e5a5['body']['id'];}return db[_0x9e8f('0x23')][_0x9e8f('0x1f')]({'where':{'id':_0x45e5a5[_0x9e8f('0x38')]['id']}})['then'](handleEntityNotFound(_0xf492e0,null))[_0x9e8f('0x22')](function(_0x1b04ae){if(_0x1b04ae){return db[_0x9e8f('0x23')][_0x9e8f('0x46')](_['pick'](_0x45e5a5[_0x9e8f('0x3c')],['exten',_0x9e8f('0x47'),'description',_0x9e8f('0x48'),_0x9e8f('0x49'),_0x9e8f('0x4a'),_0x9e8f('0x4b')]),{'where':{'context':_0x1b04ae['context'],'exten':_0x1b04ae[_0x9e8f('0x3d')]},'individualHooks':!![]})[_0x9e8f('0x22')](function(_0x4f742e){return _0x4f742e;});}return null;})['then'](respondWithStatusCode(_0xf492e0,null))[_0x9e8f('0x36')](handleError(_0xf492e0,null));};exports[_0x9e8f('0x4c')]=function(_0x5cb9eb,_0x4c4a95){return db[_0x9e8f('0x23')][_0x9e8f('0x4d')]({'where':{'id':_0x5cb9eb[_0x9e8f('0x38')]['id']}})['then'](function(_0x11766d){if(_0x11766d){return db[_0x9e8f('0x4e')]['transaction'](function(_0x5b2629){return db[_0x9e8f('0x23')][_0x9e8f('0x14')]({'where':{'VoiceExtensionId':_0x5cb9eb[_0x9e8f('0x38')]['id']},'transaction':_0x5b2629})[_0x9e8f('0x22')](function(){var _0x2520fe=_[_0x9e8f('0x1c')](_0x5cb9eb[_0x9e8f('0x3c')],function(_0x3a3900){_0x3a3900[_0x9e8f('0x4f')]=_0x5cb9eb[_0x9e8f('0x38')]['id'];_0x3a3900[_0x9e8f('0x50')]=!![];return _0x3a3900;});return _0x11766d[_0x9e8f('0x51')](_0x2520fe);})[_0x9e8f('0x22')](function(_0x177188){console['log'](_0x9e8f('0x52'),_0x177188);return db['VoiceExtension']['bulkCreate'](_0x177188,{'transaction':_0x5b2629});});})[_0x9e8f('0x22')](function(){return db['VoiceExtension'][_0x9e8f('0x53')]({'where':{'isApp':!![],'VoiceExtensionId':_0x5cb9eb[_0x9e8f('0x38')]['id']},'order':_0x9e8f('0x54')});});}})['then'](respondWithResult(_0x4c4a95,null))['catch'](handleError(_0x4c4a95,null));};
\ No newline at end of file
index ca8494f..d5639a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc596=['emit','hasOwnProperty','hook','events','../../mysqldb','VoiceExtension','save','update','remove'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0xc596,0x159));var _0x6c59=function(_0x4d9205,_0x8e02b2){_0x4d9205=_0x4d9205-0x0;var _0x2d6e01=_0xc596[_0x4d9205];return _0x2d6e01;};'use strict';var EventEmitter=require(_0x6c59('0x0'));var VoiceExtension=require(_0x6c59('0x1'))['db'][_0x6c59('0x2')];var VoiceExtensionEvents=new EventEmitter();VoiceExtensionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x6c59('0x3'),'afterUpdate':_0x6c59('0x4'),'afterDestroy':_0x6c59('0x5')};function emitEvent(_0x30e48e){return function(_0x2f9202,_0x5dbd70,_0x3b6f6a){VoiceExtensionEvents['emit'](_0x30e48e+':'+_0x2f9202['id'],_0x2f9202);VoiceExtensionEvents[_0x6c59('0x6')](_0x30e48e,_0x2f9202);_0x3b6f6a(null);};}for(var e in events){if(events[_0x6c59('0x7')](e)){var event=events[e];VoiceExtension[_0x6c59('0x8')](e,emitEvent(event));}}module['exports']=VoiceExtensionEvents;
\ No newline at end of file
+var _0x02bf=['emit','hasOwnProperty','hook','exports','events','VoiceExtension','save','remove'];(function(_0x3b7abd,_0x2af63b){var _0x1016c1=function(_0x3ce8fd){while(--_0x3ce8fd){_0x3b7abd['push'](_0x3b7abd['shift']());}};_0x1016c1(++_0x2af63b);}(_0x02bf,0xdc));var _0xf02b=function(_0x3b085,_0x250543){_0x3b085=_0x3b085-0x0;var _0x476a57=_0x02bf[_0x3b085];return _0x476a57;};'use strict';var EventEmitter=require(_0xf02b('0x0'));var VoiceExtension=require('../../mysqldb')['db'][_0xf02b('0x1')];var VoiceExtensionEvents=new EventEmitter();VoiceExtensionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xf02b('0x2'),'afterUpdate':'update','afterDestroy':_0xf02b('0x3')};function emitEvent(_0x5c0909){return function(_0x5db71e,_0x5a67bd,_0x3ae58a){VoiceExtensionEvents[_0xf02b('0x4')](_0x5c0909+':'+_0x5db71e['id'],_0x5db71e);VoiceExtensionEvents[_0xf02b('0x4')](_0x5c0909,_0x5db71e);_0x3ae58a(null);};}for(var e in events){if(events[_0xf02b('0x5')](e)){var event=events[e];VoiceExtension[_0xf02b('0x6')](e,emitEvent(event));}}module[_0xf02b('0x7')]=VoiceExtensionEvents;
\ No newline at end of file
index d5cb456..61a6e7a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x577f=['push','CDR(routeid)=','XCALLY-MOTION-ANSWER=0','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','outbound','CDR(type)=outbound','cutdigits','${EXTEN:','${EXTEN}','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','outboundrouteid=','hasOwnProperty','recordingFormat','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','wav','trunk','timeout','options','url','split','length','param','prefix','phone','SIP','join','indexOf','U(xcally-mixmonitor-context)','replace','isEmpty','Interval','findAll','interval','then','intervals','IntervalId','map','filter','tag','toLowerCase','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):','callerID','NoOp(No\x20number\x20available)','playback','app','appType','$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-ANSWER=1','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','XCALLY-MOTION-PROGRESS=1','splice','GotoIfTime',',${EXTEN},','outboundDial','appdata','priority','concat','last','catch','VoiceExtension','voice_extensions','util','lodash','./voiceExtension.attributes','exports','models','type','context','exten','alias','Set','NoOp','CDR(routeAlias)=','No\x20alias\x20set'];(function(_0x2243fa,_0x450f65){var _0xf1dc23=function(_0x429ab9){while(--_0x429ab9){_0x2243fa['push'](_0x2243fa['shift']());}};_0xf1dc23(++_0x450f65);}(_0x577f,0x183));var _0xf577=function(_0x311f6b,_0x3faf01){_0x311f6b=_0x311f6b-0x0;var _0x1e0c51=_0x577f[_0x311f6b];return _0x1e0c51;};'use strict';var util=require(_0xf577('0x0'));var _=require(_0xf577('0x1'));var attributes=require(_0xf577('0x2'));module[_0xf577('0x3')]=function(_0x5e9344){var _0x520923=_0x5e9344[_0xf577('0x4')];function _0x5834a2(_0xad19c4){var _0x29b42a=0x2;var _0x25490e=[{'type':_0xad19c4['type'],'app':'Set','appdata':'CDR(type)='+_0xad19c4[_0xf577('0x5')],'context':_0xad19c4[_0xf577('0x6')],'exten':_0xad19c4[_0xf577('0x7')],'priority':_0x29b42a++,'VoiceExtensionId':_0xad19c4['id']},{'type':_0xad19c4[_0xf577('0x5')],'app':_0xad19c4[_0xf577('0x8')]?_0xf577('0x9'):_0xf577('0xa'),'appdata':_0xad19c4[_0xf577('0x8')]?_0xf577('0xb')+_0xad19c4['alias']:_0xf577('0xc'),'context':_0xad19c4[_0xf577('0x6')],'exten':_0xad19c4[_0xf577('0x7')],'priority':_0x29b42a++,'VoiceExtensionId':_0xad19c4['id']}];if(_0xad19c4['type']==='inbound'){_0x25490e[_0xf577('0xd')]({'type':'inbound','app':'Set','appdata':_0xf577('0xe')+_0xad19c4['id'],'context':_0xad19c4[_0xf577('0x6')],'exten':_0xad19c4[_0xf577('0x7')],'priority':_0x29b42a++,'VoiceExtensionId':_0xad19c4['id']});}_0x25490e['push']({'type':_0xad19c4[_0xf577('0x5')],'app':_0xf577('0x9'),'appdata':_0xf577('0xf'),'context':_0xad19c4['context'],'exten':_0xad19c4['exten'],'priority':_0x29b42a++,'VoiceExtensionId':_0xad19c4['id']},{'type':_0xad19c4[_0xf577('0x5')],'app':_0xf577('0x9'),'appdata':_0xf577('0x10'),'context':_0xad19c4['context'],'exten':_0xad19c4['exten'],'priority':_0x29b42a++,'VoiceExtensionId':_0xad19c4['id']},{'type':_0xad19c4[_0xf577('0x5')],'app':_0xf577('0x9'),'appdata':_0xf577('0x11'),'context':_0xad19c4[_0xf577('0x6')],'exten':_0xad19c4[_0xf577('0x7')],'priority':_0x29b42a++,'VoiceExtensionId':_0xad19c4['id']});return _0x25490e;}function _0x3730bd(_0x40f83b){var _0x1ec654=0x2;var _0x4553de=[{'type':_0xf577('0x12'),'app':_0xf577('0x9'),'appdata':_0xf577('0x13'),'context':_0x40f83b[_0xf577('0x6')],'exten':_0x40f83b[_0xf577('0x7')],'priority':_0x1ec654++,'VoiceExtensionId':_0x40f83b['id']},{'type':_0xf577('0x12'),'app':_0x40f83b[_0xf577('0x8')]?_0xf577('0x9'):_0xf577('0xa'),'appdata':_0x40f83b['alias']?_0xf577('0xb')+_0x40f83b[_0xf577('0x8')]:_0xf577('0xc'),'context':_0x40f83b[_0xf577('0x6')],'exten':_0x40f83b[_0xf577('0x7')],'priority':_0x1ec654++,'VoiceExtensionId':_0x40f83b['id']},{'type':_0xf577('0x12'),'app':'Set','appdata':'CDR(destination)='+(_0x40f83b[_0xf577('0x14')]?_0xf577('0x15')+_0x40f83b[_0xf577('0x14')]+'}':_0xf577('0x16')),'context':_0x40f83b[_0xf577('0x6')],'exten':_0x40f83b[_0xf577('0x7')],'priority':_0x1ec654++,'VoiceExtensionId':_0x40f83b['id']},{'type':'outbound','app':_0xf577('0x9'),'appdata':_0xf577('0xe')+_0x40f83b['id'],'context':_0x40f83b[_0xf577('0x6')],'exten':_0x40f83b[_0xf577('0x7')],'priority':_0x1ec654++,'VoiceExtensionId':_0x40f83b['id']},{'type':_0xf577('0x12'),'app':_0xf577('0x17'),'appdata':_0xf577('0x18')+(_0x1ec654+0x2)+_0xf577('0x19')+(_0x1ec654+0x1)+')','context':_0x40f83b[_0xf577('0x6')],'exten':_0x40f83b[_0xf577('0x7')],'priority':_0x1ec654++,'VoiceExtensionId':_0x40f83b['id']},{'type':_0xf577('0x12'),'app':'Set','appdata':_0x40f83b[_0xf577('0x14')]?_0xf577('0x1a')+_0x40f83b['cutdigits']+'}':_0xf577('0x1b'),'context':_0x40f83b[_0xf577('0x6')],'exten':_0x40f83b[_0xf577('0x7')],'priority':_0x1ec654++,'VoiceExtensionId':_0x40f83b['id']},{'type':_0xf577('0x12'),'app':_0xf577('0x9'),'appdata':_0xf577('0xf'),'context':_0x40f83b[_0xf577('0x6')],'exten':_0x40f83b['exten'],'priority':_0x1ec654++,'VoiceExtensionId':_0x40f83b['id']},{'type':_0xf577('0x12'),'app':_0xf577('0x9'),'appdata':'XCALLY-MOTION-PROGRESS=0','context':_0x40f83b['context'],'exten':_0x40f83b[_0xf577('0x7')],'priority':_0x1ec654++,'VoiceExtensionId':_0x40f83b['id']},{'type':_0xf577('0x12'),'app':_0xf577('0x9'),'appdata':'MONITOR_OPTIONS=ab','context':_0x40f83b[_0xf577('0x6')],'exten':_0x40f83b[_0xf577('0x7')],'priority':_0x1ec654++,'VoiceExtensionId':_0x40f83b['id']},{'type':'outbound','app':'Set','appdata':_0xf577('0x1c')+_0x40f83b['id'],'context':_0x40f83b[_0xf577('0x6')],'exten':_0x40f83b[_0xf577('0x7')],'priority':_0x1ec654++,'VoiceExtensionId':_0x40f83b['id']}];if(_0x40f83b[_0xf577('0x1d')](_0xf577('0x1e'))&&_0x40f83b[_0xf577('0x1e')]!==_0xf577('0x1f')){_0x4553de['push']({'type':_0xf577('0x12'),'app':'Set','appdata':_0xf577('0x20'),'context':_0x40f83b[_0xf577('0x6')],'exten':_0x40f83b[_0xf577('0x7')],'priority':_0x1ec654++,'VoiceExtensionId':_0x40f83b['id']},{'type':_0xf577('0x12'),'app':_0xf577('0x9'),'appdata':'_XCALLY_MIXMONITOR_FORMAT='+_0x40f83b[_0xf577('0x1e')]||_0xf577('0x21'),'context':_0x40f83b['context'],'exten':_0x40f83b[_0xf577('0x7')],'priority':_0x1ec654++,'VoiceExtensionId':_0x40f83b['id']});}return _0x4553de;}function _0x2a8512(_0x44378a){var _0x138483=[{'name':_0xf577('0x22'),'param':0x0},{'name':_0xf577('0x23'),'param':0x1},{'name':_0xf577('0x24'),'param':0x2},{'name':_0xf577('0x25'),'param':0x3}];var _0x283420={};var _0x3148a0=_0x44378a[_0xf577('0x26')](',');var _0xac6954=[];for(var _0x4cfaa8=0x0;_0x4cfaa8<_0x138483[_0xf577('0x27')];_0x4cfaa8++){switch(_0x138483[_0x4cfaa8]['name']){case'trunk':_0x283420[_0xf577('0x22')]=_0x3148a0[_0x138483[_0x4cfaa8][_0xf577('0x28')]][_0xf577('0x26')]('/')[0x1];_0x283420['phone']=_0x3148a0[_0x138483[_0x4cfaa8]['param']][_0xf577('0x26')]('/')[0x2];_0x283420[_0xf577('0x29')]=_0x283420[_0xf577('0x2a')]?_0x283420[_0xf577('0x2a')][_0xf577('0x26')]('$')[0x0]:undefined;_0x283420[_0xf577('0x2a')]=route[_0xf577('0x14')]?(_0x283420[_0xf577('0x29')]||'')+_0xf577('0x15')+route[_0xf577('0x14')]+'}':(_0x283420[_0xf577('0x29')]||'')+_0xf577('0x16');_0xac6954[_0x138483[_0x4cfaa8][_0xf577('0x28')]]=[_0xf577('0x2b'),_0x283420['trunk'],_0x283420[_0xf577('0x2a')]][_0xf577('0x2c')]('/');break;case'options':_0x283420[_0xf577('0x24')]=_0x3148a0[_0x138483[_0x4cfaa8]['param']];if(route[_0xf577('0x1e')]!==_0xf577('0x1f')){if(_0x283420[_0xf577('0x24')][_0xf577('0x2d')](_0xf577('0x2e'))<0x0){_0x283420[_0xf577('0x24')]+=_0xf577('0x2e');}}else{_0x283420[_0xf577('0x24')]=_0x283420['options'][_0xf577('0x2f')](_0xf577('0x2e'),'');}_0xac6954[_0x138483[_0x4cfaa8]['param']]=_0x283420[_0xf577('0x24')];break;default:_0xac6954[_0x138483[_0x4cfaa8][_0xf577('0x28')]]=_0x3148a0[_0x138483[_0x4cfaa8][_0xf577('0x28')]];}}return _0xac6954['join'](',');}function _0x34f8d6(_0x3e4acc,_0x579ecf,_0x4c6243,_0x11ac1f){return new Promise(function(_0x4cf3ca,_0x3be71e){var _0x439ba0=[];if(_[_0xf577('0x30')](_0x579ecf))return _0x4cf3ca(_0x439ba0);_0x520923[_0xf577('0x31')][_0xf577('0x32')]({'attributes':['id',_0xf577('0x33'),'IntervalId'],'raw':!![]})[_0xf577('0x34')](function(_0x16bf98){for(var _0xcfc7e3=0x0,_0x21e5ac=0x0;_0xcfc7e3<_0x579ecf[_0xf577('0x27')];_0xcfc7e3++,_0x21e5ac=0x0){var _0x28bfc1=_0x579ecf[_0xcfc7e3];var _0x38a1fc=[];var _0x22e753=[];if(_0x28bfc1[_0xf577('0x33')]!=='*,*,*,*'){_0x28bfc1[_0xf577('0x35')]=[_0x28bfc1[_0xf577('0x33')]];}else{_0x28bfc1[_0xf577('0x35')]=_0x28bfc1[_0xf577('0x36')]?_[_0xf577('0x37')](_[_0xf577('0x38')](_0x16bf98,{'IntervalId':_0x28bfc1[_0xf577('0x36')]}),'interval'):[];}_0x28bfc1[_0xf577('0x6')]=_0x3e4acc[_0xf577('0x6')];_0x28bfc1[_0xf577('0x7')]=_0x3e4acc[_0xf577('0x7')];if(_0x28bfc1[_0xf577('0x5')])_0x28bfc1[_0xf577('0x5')]=_0x28bfc1[_0xf577('0x5')]['toLowerCase']();if(_0x3e4acc[_0xf577('0x5')]===_0xf577('0x12')){if(_0x28bfc1['hasOwnProperty'](_0xf577('0x39'))&&_0x28bfc1[_0xf577('0x39')]&&_0x28bfc1[_0xf577('0x39')]!=='--'){_0x38a1fc[_0xf577('0xd')]({'type':_0x28bfc1[_0xf577('0x5')][_0xf577('0x3a')](),'app':'Set','appdata':'CDR(tag)='+_0x28bfc1[_0xf577('0x39')],'context':_0x3e4acc[_0xf577('0x6')],'exten':_0x3e4acc[_0xf577('0x7')],'priority':_0x28bfc1[_0xf577('0x35')][_0xf577('0x27')]+_0x4c6243+_0x21e5ac++,'VoiceExtensionId':_0x3e4acc['id']});}_0x38a1fc[_0xf577('0xd')]({'type':_0x28bfc1[_0xf577('0x5')]['toLowerCase'](),'app':_0xf577('0x17'),'appdata':_0xf577('0x3b')+(_0x28bfc1[_0xf577('0x3c')]?'Set(CALLERID(all)='+_0x28bfc1[_0xf577('0x3c')]+')':_0xf577('0x3d')),'context':_0x3e4acc['context'],'exten':_0x3e4acc[_0xf577('0x7')],'priority':_0x28bfc1['intervals'][_0xf577('0x27')]+_0x4c6243+_0x21e5ac++,'VoiceExtensionId':_0x3e4acc['id']});}else{if(_0x28bfc1[_0xf577('0x1d')]('answer')){if(['queue',_0xf577('0x3e')]['includes'](_0x28bfc1[_0xf577('0x3f')][_0xf577('0x3a')]())&&_0x28bfc1[_0xf577('0x40')]!=='custom'){if(_0x28bfc1['answer']){_0x38a1fc['push']({'type':_0x28bfc1[_0xf577('0x5')][_0xf577('0x3a')](),'app':_0xf577('0x17'),'appdata':_0xf577('0x41'),'context':_0x3e4acc['context'],'exten':_0x3e4acc[_0xf577('0x7')],'priority':_0x28bfc1[_0xf577('0x35')][_0xf577('0x27')]+_0x4c6243+_0x21e5ac++,'VoiceExtensionId':_0x3e4acc['id']});_0x38a1fc[_0xf577('0xd')]({'type':_0x28bfc1[_0xf577('0x5')][_0xf577('0x3a')](),'app':_0xf577('0x9'),'appdata':_0xf577('0x42'),'context':_0x3e4acc[_0xf577('0x6')],'exten':_0x3e4acc['exten'],'priority':_0x28bfc1['intervals'][_0xf577('0x27')]+_0x4c6243+_0x21e5ac++,'VoiceExtensionId':_0x3e4acc['id']});}else{_0x38a1fc[_0xf577('0xd')]({'type':_0x28bfc1['type'][_0xf577('0x3a')](),'app':_0xf577('0x17'),'appdata':_0xf577('0x43'),'context':_0x3e4acc[_0xf577('0x6')],'exten':_0x3e4acc[_0xf577('0x7')],'priority':_0x28bfc1['intervals'][_0xf577('0x27')]+_0x4c6243+_0x21e5ac++,'VoiceExtensionId':_0x3e4acc['id']});_0x38a1fc[_0xf577('0xd')]({'type':_0x28bfc1[_0xf577('0x5')][_0xf577('0x3a')](),'app':_0xf577('0x9'),'appdata':_0xf577('0x44'),'context':_0x3e4acc[_0xf577('0x6')],'exten':_0x3e4acc[_0xf577('0x7')],'priority':_0x28bfc1['intervals']['length']+_0x4c6243+_0x21e5ac++,'VoiceExtensionId':_0x3e4acc['id']});}}}}for(var _0x33e9b5=0x0;_0x33e9b5<_0x28bfc1[_0xf577('0x35')][_0xf577('0x27')];_0x33e9b5++){var _0x49138d=_0x4c6243+_0x28bfc1['intervals'][_0xf577('0x27')];var _0x477093=_0x33e9b5===_0x28bfc1['intervals'][_0xf577('0x27')]-0x1?_0x4c6243+_0x38a1fc[_0xf577('0x27')]+_0x22e753['length']+0x2:_0x4c6243+_0x33e9b5+0x1;_0x38a1fc[_0xf577('0x45')](_0x33e9b5,0x0,{'type':_0x3e4acc[_0xf577('0x5')],'app':_0xf577('0x46'),'appdata':_0x28bfc1[_0xf577('0x35')][_0x33e9b5]+'?'+_0x3e4acc['context']+',${EXTEN},'+_0x49138d+':'+_0x3e4acc['context']+_0xf577('0x47')+_0x477093,'exten':_0x3e4acc[_0xf577('0x7')],'context':_0x3e4acc[_0xf577('0x6')],'priority':_0x4c6243+_0x33e9b5,'VoiceExtensionId':_0x3e4acc['id']});}if(_0x11ac1f&&_0x28bfc1['appType']===_0xf577('0x48'))_0x28bfc1['appdata']=_0x2a8512(_0x28bfc1[_0xf577('0x49')]);_0x28bfc1[_0xf577('0x4a')]=_0x38a1fc['length']?_['last'](_0x38a1fc)['priority']+0x1:_0x4c6243;_0x439ba0=_[_0xf577('0x4b')](_0x439ba0,_0x38a1fc,[_0x28bfc1],_0x22e753);_0x4c6243=_[_0xf577('0x4c')](_0x439ba0)['priority']+0x1;}return _0x4cf3ca(_0x439ba0);})[_0xf577('0x4d')](function(_0x21dfa3){_0x3be71e(_0x21dfa3);});});}return _0x5e9344['define'](_0xf577('0x4e'),attributes,{'tableName':_0xf577('0x4f'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'createRouting':function(_0x112a03,_0x3b886b){var _0xd80624=this;var _0x3c7265=_0xd80624[_0xf577('0x5')]===_0xf577('0x12')?_0x3730bd(_0xd80624):_0x5834a2(_0xd80624);return _0x34f8d6(_0xd80624,_0x112a03,_[_0xf577('0x4c')](_0x3c7265)[_0xf577('0x4a')]+0x1,_0x3b886b)[_0xf577('0x34')](function(_0x3101d7){var _0x384099=_['concat'](_0x3c7265,_0x3101d7);_0x384099[_0xf577('0xd')]({'type':_0xd80624[_0xf577('0x5')],'app':'Hangup','exten':_0xd80624['exten'],'context':_0xd80624[_0xf577('0x6')],'priority':_[_0xf577('0x4c')](_0x384099)[_0xf577('0x4a')]+0x1,'VoiceExtensionId':_0xd80624['id']});return _0x384099;});}}});};
\ No newline at end of file
+var _0x2f38=['inbound','push','Set','CDR(routeid)=','XCALLY-MOTION-ANSWER=0','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','outbound','CDR(type)=outbound','CDR(destination)=','cutdigits','${EXTEN}','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','CDR(prefix)=noprefix','outboundrouteid=','hasOwnProperty','recordingFormat','wav','trunk','timeout','options','url','name','param','phone','split','prefix','${EXTEN:','SIP','join','U(xcally-mixmonitor-context)','replace','findAll','IntervalId','length','interval','*,*,*,*','map','filter','toLowerCase','tag','CDR(tag)=','intervals','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):','callerID','Set(CALLERID(all)=','NoOp(No\x20number\x20available)','answer','playback','includes','app','appType','custom','$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-ANSWER=1','XCALLY-MOTION-PROGRESS=1','splice',',${EXTEN},','outboundDial','appdata','priority','last','concat','catch','define','VoiceExtension','voice_extensions','lodash','exports','models','type','CDR(type)=','context','exten','NoOp','alias','CDR(routeAlias)=','No\x20alias\x20set'];(function(_0x30c8e0,_0x215b56){var _0x50e2b5=function(_0x1f4074){while(--_0x1f4074){_0x30c8e0['push'](_0x30c8e0['shift']());}};_0x50e2b5(++_0x215b56);}(_0x2f38,0x95));var _0x82f3=function(_0x67ff5,_0x1f4eb7){_0x67ff5=_0x67ff5-0x0;var _0x485aef=_0x2f38[_0x67ff5];return _0x485aef;};'use strict';var _=require(_0x82f3('0x0'));var attributes=require('./voiceExtension.attributes');module[_0x82f3('0x1')]=function(_0x22e3bd){var _0x1f7c0c=_0x22e3bd[_0x82f3('0x2')];function _0x41d07d(_0x368969){var _0x86e8d7=0x2;var _0x2a3a60=[{'type':_0x368969[_0x82f3('0x3')],'app':'Set','appdata':_0x82f3('0x4')+_0x368969[_0x82f3('0x3')],'context':_0x368969[_0x82f3('0x5')],'exten':_0x368969[_0x82f3('0x6')],'priority':_0x86e8d7++,'VoiceExtensionId':_0x368969['id']},{'type':_0x368969['type'],'app':_0x368969['alias']?'Set':_0x82f3('0x7'),'appdata':_0x368969[_0x82f3('0x8')]?_0x82f3('0x9')+_0x368969['alias']:_0x82f3('0xa'),'context':_0x368969[_0x82f3('0x5')],'exten':_0x368969[_0x82f3('0x6')],'priority':_0x86e8d7++,'VoiceExtensionId':_0x368969['id']}];if(_0x368969[_0x82f3('0x3')]===_0x82f3('0xb')){_0x2a3a60[_0x82f3('0xc')]({'type':_0x82f3('0xb'),'app':_0x82f3('0xd'),'appdata':_0x82f3('0xe')+_0x368969['id'],'context':_0x368969['context'],'exten':_0x368969[_0x82f3('0x6')],'priority':_0x86e8d7++,'VoiceExtensionId':_0x368969['id']});}_0x2a3a60['push']({'type':_0x368969[_0x82f3('0x3')],'app':_0x82f3('0xd'),'appdata':_0x82f3('0xf'),'context':_0x368969[_0x82f3('0x5')],'exten':_0x368969['exten'],'priority':_0x86e8d7++,'VoiceExtensionId':_0x368969['id']},{'type':_0x368969[_0x82f3('0x3')],'app':_0x82f3('0xd'),'appdata':_0x82f3('0x10'),'context':_0x368969[_0x82f3('0x5')],'exten':_0x368969[_0x82f3('0x6')],'priority':_0x86e8d7++,'VoiceExtensionId':_0x368969['id']},{'type':_0x368969[_0x82f3('0x3')],'app':_0x82f3('0xd'),'appdata':_0x82f3('0x11'),'context':_0x368969[_0x82f3('0x5')],'exten':_0x368969[_0x82f3('0x6')],'priority':_0x86e8d7++,'VoiceExtensionId':_0x368969['id']});return _0x2a3a60;}function _0x62af69(_0x2d7bf6){var _0xd2688b=0x2;var _0x1e3011=[{'type':_0x82f3('0x12'),'app':'Set','appdata':_0x82f3('0x13'),'context':_0x2d7bf6[_0x82f3('0x5')],'exten':_0x2d7bf6[_0x82f3('0x6')],'priority':_0xd2688b++,'VoiceExtensionId':_0x2d7bf6['id']},{'type':_0x82f3('0x12'),'app':_0x2d7bf6[_0x82f3('0x8')]?'Set':'NoOp','appdata':_0x2d7bf6[_0x82f3('0x8')]?_0x82f3('0x9')+_0x2d7bf6[_0x82f3('0x8')]:_0x82f3('0xa'),'context':_0x2d7bf6[_0x82f3('0x5')],'exten':_0x2d7bf6[_0x82f3('0x6')],'priority':_0xd2688b++,'VoiceExtensionId':_0x2d7bf6['id']},{'type':_0x82f3('0x12'),'app':'Set','appdata':_0x82f3('0x14')+(_0x2d7bf6[_0x82f3('0x15')]?'${EXTEN:'+_0x2d7bf6['cutdigits']+'}':_0x82f3('0x16')),'context':_0x2d7bf6[_0x82f3('0x5')],'exten':_0x2d7bf6['exten'],'priority':_0xd2688b++,'VoiceExtensionId':_0x2d7bf6['id']},{'type':_0x82f3('0x12'),'app':'Set','appdata':_0x82f3('0xe')+_0x2d7bf6['id'],'context':_0x2d7bf6[_0x82f3('0x5')],'exten':_0x2d7bf6['exten'],'priority':_0xd2688b++,'VoiceExtensionId':_0x2d7bf6['id']},{'type':_0x82f3('0x12'),'app':_0x82f3('0x17'),'appdata':_0x82f3('0x18')+(_0xd2688b+0x2)+_0x82f3('0x19')+(_0xd2688b+0x1)+')','context':_0x2d7bf6[_0x82f3('0x5')],'exten':_0x2d7bf6[_0x82f3('0x6')],'priority':_0xd2688b++,'VoiceExtensionId':_0x2d7bf6['id']},{'type':_0x82f3('0x12'),'app':_0x82f3('0xd'),'appdata':_0x2d7bf6['cutdigits']?'CDR(prefix)=${EXTEN:0:'+_0x2d7bf6['cutdigits']+'}':_0x82f3('0x1a'),'context':_0x2d7bf6[_0x82f3('0x5')],'exten':_0x2d7bf6[_0x82f3('0x6')],'priority':_0xd2688b++,'VoiceExtensionId':_0x2d7bf6['id']},{'type':'outbound','app':_0x82f3('0xd'),'appdata':_0x82f3('0xf'),'context':_0x2d7bf6[_0x82f3('0x5')],'exten':_0x2d7bf6['exten'],'priority':_0xd2688b++,'VoiceExtensionId':_0x2d7bf6['id']},{'type':'outbound','app':_0x82f3('0xd'),'appdata':'XCALLY-MOTION-PROGRESS=0','context':_0x2d7bf6[_0x82f3('0x5')],'exten':_0x2d7bf6[_0x82f3('0x6')],'priority':_0xd2688b++,'VoiceExtensionId':_0x2d7bf6['id']},{'type':_0x82f3('0x12'),'app':_0x82f3('0xd'),'appdata':'MONITOR_OPTIONS=ab','context':_0x2d7bf6[_0x82f3('0x5')],'exten':_0x2d7bf6[_0x82f3('0x6')],'priority':_0xd2688b++,'VoiceExtensionId':_0x2d7bf6['id']},{'type':'outbound','app':_0x82f3('0xd'),'appdata':_0x82f3('0x1b')+_0x2d7bf6['id'],'context':_0x2d7bf6[_0x82f3('0x5')],'exten':_0x2d7bf6[_0x82f3('0x6')],'priority':_0xd2688b++,'VoiceExtensionId':_0x2d7bf6['id']}];if(_0x2d7bf6[_0x82f3('0x1c')](_0x82f3('0x1d'))&&_0x2d7bf6[_0x82f3('0x1d')]!=='none'){_0x1e3011['push']({'type':_0x82f3('0x12'),'app':_0x82f3('0xd'),'appdata':'_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','context':_0x2d7bf6[_0x82f3('0x5')],'exten':_0x2d7bf6[_0x82f3('0x6')],'priority':_0xd2688b++,'VoiceExtensionId':_0x2d7bf6['id']},{'type':_0x82f3('0x12'),'app':_0x82f3('0xd'),'appdata':'_XCALLY_MIXMONITOR_FORMAT='+_0x2d7bf6[_0x82f3('0x1d')]||_0x82f3('0x1e'),'context':_0x2d7bf6[_0x82f3('0x5')],'exten':_0x2d7bf6['exten'],'priority':_0xd2688b++,'VoiceExtensionId':_0x2d7bf6['id']});}return _0x1e3011;}function _0x410c03(_0x178ed1,_0x3ac3a6){var _0x3059cd=[{'name':_0x82f3('0x1f'),'param':0x0},{'name':_0x82f3('0x20'),'param':0x1},{'name':_0x82f3('0x21'),'param':0x2},{'name':_0x82f3('0x22'),'param':0x3}];var _0x8987fb={};var _0x1ed618=_0x3ac3a6['split'](',');var _0x575ab5=[];for(var _0x10d1bc=0x0;_0x10d1bc<_0x3059cd['length'];_0x10d1bc++){switch(_0x3059cd[_0x10d1bc][_0x82f3('0x23')]){case'trunk':_0x8987fb[_0x82f3('0x1f')]=_0x1ed618[_0x3059cd[_0x10d1bc][_0x82f3('0x24')]]['split']('/')[0x1];_0x8987fb[_0x82f3('0x25')]=_0x1ed618[_0x3059cd[_0x10d1bc][_0x82f3('0x24')]][_0x82f3('0x26')]('/')[0x2];_0x8987fb['prefix']=_0x8987fb[_0x82f3('0x25')]?_0x8987fb[_0x82f3('0x25')]['split']('$')[0x0]:undefined;_0x8987fb[_0x82f3('0x25')]=_0x178ed1[_0x82f3('0x15')]?(_0x8987fb[_0x82f3('0x27')]||'')+_0x82f3('0x28')+_0x178ed1[_0x82f3('0x15')]+'}':(_0x8987fb['prefix']||'')+_0x82f3('0x16');_0x575ab5[_0x3059cd[_0x10d1bc][_0x82f3('0x24')]]=[_0x82f3('0x29'),_0x8987fb[_0x82f3('0x1f')],_0x8987fb[_0x82f3('0x25')]][_0x82f3('0x2a')]('/');break;case _0x82f3('0x21'):_0x8987fb[_0x82f3('0x21')]=_0x1ed618[_0x3059cd[_0x10d1bc]['param']];if(_0x178ed1[_0x82f3('0x1d')]!=='none'){if(_0x8987fb[_0x82f3('0x21')]['indexOf']('U(xcally-mixmonitor-context)')<0x0){_0x8987fb['options']+=_0x82f3('0x2b');}}else{_0x8987fb['options']=_0x8987fb[_0x82f3('0x21')][_0x82f3('0x2c')]('U(xcally-mixmonitor-context)','');}_0x575ab5[_0x3059cd[_0x10d1bc][_0x82f3('0x24')]]=_0x8987fb[_0x82f3('0x21')];break;default:_0x575ab5[_0x3059cd[_0x10d1bc][_0x82f3('0x24')]]=_0x1ed618[_0x3059cd[_0x10d1bc][_0x82f3('0x24')]];}}return _0x575ab5['join'](',');}function _0x4314b0(_0x18bd53,_0x4b608e,_0x3de4b0){return new Promise(function(_0x3a712f,_0xba0c42){var _0xe338ec=[];if(_['isEmpty'](_0x4b608e))return _0x3a712f(_0xe338ec);_0x1f7c0c['Interval'][_0x82f3('0x2d')]({'attributes':['id','interval',_0x82f3('0x2e')],'raw':!![]})['then'](function(_0x4140f3){for(var _0x2e19ce=0x0,_0x221e48=0x0;_0x2e19ce<_0x4b608e[_0x82f3('0x2f')];_0x2e19ce++,_0x221e48=0x0){var _0x42e488=_0x4b608e[_0x2e19ce];var _0x3598e7=[];var _0x56b34=[];delete _0x42e488['id'];if(_0x42e488[_0x82f3('0x30')]!==_0x82f3('0x31')){_0x42e488['intervals']=[_0x42e488['interval']];}else{_0x42e488['intervals']=_0x42e488[_0x82f3('0x2e')]?_[_0x82f3('0x32')](_[_0x82f3('0x33')](_0x4140f3,{'IntervalId':_0x42e488[_0x82f3('0x2e')]}),_0x82f3('0x30')):[];}_0x42e488[_0x82f3('0x5')]=_0x18bd53['context'];_0x42e488[_0x82f3('0x6')]=_0x18bd53[_0x82f3('0x6')];if(_0x42e488[_0x82f3('0x3')])_0x42e488['type']=_0x42e488[_0x82f3('0x3')][_0x82f3('0x34')]();if(_0x18bd53['type']===_0x82f3('0x12')){if(_0x42e488[_0x82f3('0x1c')](_0x82f3('0x35'))&&_0x42e488[_0x82f3('0x35')]&&_0x42e488['tag']!=='--'){_0x3598e7[_0x82f3('0xc')]({'type':_0x42e488[_0x82f3('0x3')][_0x82f3('0x34')](),'app':_0x82f3('0xd'),'appdata':_0x82f3('0x36')+_0x42e488[_0x82f3('0x35')],'context':_0x18bd53[_0x82f3('0x5')],'exten':_0x18bd53[_0x82f3('0x6')],'priority':_0x42e488[_0x82f3('0x37')]['length']+_0x3de4b0+_0x221e48++,'VoiceExtensionId':_0x18bd53['id']});}_0x3598e7[_0x82f3('0xc')]({'type':_0x42e488[_0x82f3('0x3')][_0x82f3('0x34')](),'app':'ExecIf','appdata':_0x82f3('0x38')+(_0x42e488[_0x82f3('0x39')]?_0x82f3('0x3a')+_0x42e488[_0x82f3('0x39')]+')':_0x82f3('0x3b')),'context':_0x18bd53[_0x82f3('0x5')],'exten':_0x18bd53[_0x82f3('0x6')],'priority':_0x42e488['intervals'][_0x82f3('0x2f')]+_0x3de4b0+_0x221e48++,'VoiceExtensionId':_0x18bd53['id']});}else{if(_0x42e488['hasOwnProperty'](_0x82f3('0x3c'))){if(['queue',_0x82f3('0x3d')][_0x82f3('0x3e')](_0x42e488[_0x82f3('0x3f')]['toLowerCase']())&&_0x42e488[_0x82f3('0x40')]!==_0x82f3('0x41')){if(_0x42e488[_0x82f3('0x3c')]){_0x3598e7[_0x82f3('0xc')]({'type':_0x42e488[_0x82f3('0x3')][_0x82f3('0x34')](),'app':_0x82f3('0x17'),'appdata':_0x82f3('0x42'),'context':_0x18bd53[_0x82f3('0x5')],'exten':_0x18bd53[_0x82f3('0x6')],'priority':_0x42e488[_0x82f3('0x37')][_0x82f3('0x2f')]+_0x3de4b0+_0x221e48++,'VoiceExtensionId':_0x18bd53['id']});_0x3598e7['push']({'type':_0x42e488['type'][_0x82f3('0x34')](),'app':'Set','appdata':_0x82f3('0x43'),'context':_0x18bd53['context'],'exten':_0x18bd53[_0x82f3('0x6')],'priority':_0x42e488['intervals']['length']+_0x3de4b0+_0x221e48++,'VoiceExtensionId':_0x18bd53['id']});}else{_0x3598e7[_0x82f3('0xc')]({'type':_0x42e488[_0x82f3('0x3')][_0x82f3('0x34')](),'app':_0x82f3('0x17'),'appdata':'$[${XCALLY-MOTION-PROGRESS}=0]?Progress','context':_0x18bd53[_0x82f3('0x5')],'exten':_0x18bd53[_0x82f3('0x6')],'priority':_0x42e488[_0x82f3('0x37')][_0x82f3('0x2f')]+_0x3de4b0+_0x221e48++,'VoiceExtensionId':_0x18bd53['id']});_0x3598e7[_0x82f3('0xc')]({'type':_0x42e488[_0x82f3('0x3')]['toLowerCase'](),'app':_0x82f3('0xd'),'appdata':_0x82f3('0x44'),'context':_0x18bd53[_0x82f3('0x5')],'exten':_0x18bd53[_0x82f3('0x6')],'priority':_0x42e488[_0x82f3('0x37')][_0x82f3('0x2f')]+_0x3de4b0+_0x221e48++,'VoiceExtensionId':_0x18bd53['id']});}}}}for(var _0x4c34a7=0x0;_0x4c34a7<_0x42e488[_0x82f3('0x37')][_0x82f3('0x2f')];_0x4c34a7++){var _0x4017f7=_0x3de4b0+_0x42e488[_0x82f3('0x37')][_0x82f3('0x2f')];var _0x1e6ea0=_0x4c34a7===_0x42e488['intervals'][_0x82f3('0x2f')]-0x1?_0x3de4b0+_0x3598e7[_0x82f3('0x2f')]+_0x56b34[_0x82f3('0x2f')]+0x2:_0x3de4b0+_0x4c34a7+0x1;_0x3598e7[_0x82f3('0x45')](_0x4c34a7,0x0,{'type':_0x18bd53[_0x82f3('0x3')],'app':'GotoIfTime','appdata':_0x42e488[_0x82f3('0x37')][_0x4c34a7]+'?'+_0x18bd53[_0x82f3('0x5')]+_0x82f3('0x46')+_0x4017f7+':'+_0x18bd53[_0x82f3('0x5')]+_0x82f3('0x46')+_0x1e6ea0,'exten':_0x18bd53['exten'],'context':_0x18bd53[_0x82f3('0x5')],'priority':_0x3de4b0+_0x4c34a7,'VoiceExtensionId':_0x18bd53['id']});}if(_0x42e488[_0x82f3('0x40')]===_0x82f3('0x47'))_0x42e488['appdata']=_0x410c03(_0x18bd53,_0x42e488[_0x82f3('0x48')]);_0x42e488[_0x82f3('0x49')]=_0x3598e7[_0x82f3('0x2f')]?_[_0x82f3('0x4a')](_0x3598e7)[_0x82f3('0x49')]+0x1:_0x3de4b0;_0xe338ec=_[_0x82f3('0x4b')](_0xe338ec,_0x3598e7,[_0x42e488],_0x56b34);_0x3de4b0=_[_0x82f3('0x4a')](_0xe338ec)[_0x82f3('0x49')]+0x1;}return _0x3a712f(_0xe338ec);})[_0x82f3('0x4c')](function(_0x26a77e){_0xba0c42(_0x26a77e);});});}return _0x22e3bd[_0x82f3('0x4d')](_0x82f3('0x4e'),attributes,{'tableName':_0x82f3('0x4f'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'createRouting':function(_0x4b7a4b){var _0x502639=this['get']({'plain':!![]});var _0x2087b6=_0x502639[_0x82f3('0x3')]===_0x82f3('0x12')?_0x62af69(_0x502639):_0x41d07d(_0x502639);return _0x4314b0(_0x502639,_0x4b7a4b,_[_0x82f3('0x4a')](_0x2087b6)[_0x82f3('0x49')]+0x1)['then'](function(_0x540a28){var _0x33979d=_[_0x82f3('0x4b')](_0x2087b6,_0x540a28);_0x33979d[_0x82f3('0xc')]({'type':_0x502639[_0x82f3('0x3')],'app':'Hangup','exten':_0x502639[_0x82f3('0x6')],'context':_0x502639[_0x82f3('0x5')],'priority':_['last'](_0x33979d)[_0x82f3('0x49')]+0x1,'VoiceExtensionId':_0x502639['id']});return _0x33979d;});}}});};
\ No newline at end of file
index 785d575..3af2274 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd0a=['request','info','VoiceExtension,\x20%s,\x20%s','request\x20sent','debug','VoiceExtension,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','VoiceExtension','findAll','options','raw','attributes','limit','include','map','model','GetVoiceExtension','lodash','moment','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','./voiceExtension.socket'];(function(_0x292c9a,_0xaa797){var _0x2c859d=function(_0xa46e8b){while(--_0xa46e8b){_0x292c9a['push'](_0x292c9a['shift']());}};_0x2c859d(++_0xaa797);}(_0xbd0a,0x1b9));var _0xabd0=function(_0x129111,_0x37a4d2){_0x129111=_0x129111-0x0;var _0x821bf7=_0xbd0a[_0x129111];return _0x821bf7;};'use strict';var _=require(_0xabd0('0x0'));var util=require('util');var moment=require(_0xabd0('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xabd0('0x2'))['db'];var utils=require(_0xabd0('0x3'));var logger=require(_0xabd0('0x4'))(_0xabd0('0x5'));var config=require(_0xabd0('0x6'));var jayson=require(_0xabd0('0x7'));var client=jayson[_0xabd0('0x8')][_0xabd0('0x9')]({'port':0x232a});config[_0xabd0('0xa')]=_['defaults'](config[_0xabd0('0xa')],{'host':_0xabd0('0xb'),'port':0x18eb});var socket=require(_0xabd0('0xc'))(new Redis(config['redis']));require(_0xabd0('0xd'))['register'](socket);function respondWithRpcPromise(_0x151048,_0x23d4e4,_0x2c31c9){return new BPromise(function(_0x3dc0ab,_0x50fc2d){return client[_0xabd0('0xe')](_0x151048,_0x2c31c9)['then'](function(_0x1b78e2){logger[_0xabd0('0xf')](_0xabd0('0x10'),_0x23d4e4,_0xabd0('0x11'));logger[_0xabd0('0x12')](_0xabd0('0x13'),_0x23d4e4,'request\x20sent',JSON[_0xabd0('0x14')](_0x1b78e2));if(_0x1b78e2['error']){if(_0x1b78e2[_0xabd0('0x15')][_0xabd0('0x16')]===0x1f4){logger['error']('VoiceExtension,\x20%s,\x20%s',_0x23d4e4,_0x1b78e2['error']['message']);return _0x50fc2d(_0x1b78e2[_0xabd0('0x15')][_0xabd0('0x17')]);}logger[_0xabd0('0x15')](_0xabd0('0x10'),_0x23d4e4,_0x1b78e2[_0xabd0('0x15')][_0xabd0('0x17')]);return _0x3dc0ab(_0x1b78e2[_0xabd0('0x15')][_0xabd0('0x17')]);}else{logger[_0xabd0('0xf')]('VoiceExtension,\x20%s,\x20%s',_0x23d4e4,_0xabd0('0x11'));_0x3dc0ab(_0x1b78e2['result']['message']);}})[_0xabd0('0x18')](function(_0x391988){logger[_0xabd0('0x15')](_0xabd0('0x10'),_0x23d4e4,_0x391988);_0x50fc2d(_0x391988);});});}exports['GetVoiceExtension']=function(_0x862492){var _0x1f2ecb=this;return new Promise(function(_0x4eed20,_0x56c2f5){return db[_0xabd0('0x19')][_0xabd0('0x1a')]({'raw':_0x862492['options']?_0x862492[_0xabd0('0x1b')][_0xabd0('0x1c')]===undefined?!![]:![]:!![],'where':_0x862492[_0xabd0('0x1b')]?_0x862492[_0xabd0('0x1b')]['where']||null:null,'attributes':_0x862492[_0xabd0('0x1b')]?_0x862492[_0xabd0('0x1b')][_0xabd0('0x1d')]||null:null,'limit':_0x862492[_0xabd0('0x1b')]?_0x862492[_0xabd0('0x1b')][_0xabd0('0x1e')]||null:null,'include':_0x862492[_0xabd0('0x1b')]?_0x862492[_0xabd0('0x1b')][_0xabd0('0x1f')]?_[_0xabd0('0x20')](_0x862492['options'][_0xabd0('0x1f')],function(_0x2699c4){return{'model':db[_0x2699c4[_0xabd0('0x21')]],'as':_0x2699c4['as'],'attributes':_0x2699c4[_0xabd0('0x1d')],'include':_0x2699c4[_0xabd0('0x1f')]?_[_0xabd0('0x20')](_0x2699c4[_0xabd0('0x1f')],function(_0x3a10d6){return{'model':db[_0x3a10d6[_0xabd0('0x21')]],'as':_0x3a10d6['as'],'attributes':_0x3a10d6[_0xabd0('0x1d')],'include':_0x3a10d6[_0xabd0('0x1f')]?_[_0xabd0('0x20')](_0x3a10d6[_0xabd0('0x1f')],function(_0x3246de){return{'model':db[_0x3246de[_0xabd0('0x21')]],'as':_0x3246de['as'],'attributes':_0x3246de[_0xabd0('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1c0d90){logger[_0xabd0('0xf')](_0xabd0('0x22'),_0x862492);logger[_0xabd0('0x12')]('GetVoiceExtension',_0x862492,JSON[_0xabd0('0x14')](_0x1c0d90));_0x4eed20(_0x1c0d90);})[_0xabd0('0x18')](function(_0x20ff0a){logger['error'](_0xabd0('0x22'),_0x20ff0a[_0xabd0('0x17')],_0x862492);_0x56c2f5(_0x1f2ecb['error'](0x1f4,_0x20ff0a[_0xabd0('0x17')]));});});};
\ No newline at end of file
+var _0xd634=['rpc','../../config/environment','jayson/promise','client','http','redis','defaults','request','info','request\x20sent','debug','VoiceExtension,\x20%s,\x20%s,\x20%s','stringify','error','VoiceExtension,\x20%s,\x20%s','message','GetVoiceExtension','findAll','options','where','attributes','limit','include','map','model','then','catch','util','moment','ioredis','../../mysqldb'];(function(_0x3f6714,_0x55798e){var _0x3099e0=function(_0x137da5){while(--_0x137da5){_0x3f6714['push'](_0x3f6714['shift']());}};_0x3099e0(++_0x55798e);}(_0xd634,0xf4));var _0x4d63=function(_0x373096,_0x4d37aa){_0x373096=_0x373096-0x0;var _0x14a6d0=_0xd634[_0x373096];return _0x14a6d0;};'use strict';var _=require('lodash');var util=require(_0x4d63('0x0'));var moment=require(_0x4d63('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x4d63('0x2'));var db=require(_0x4d63('0x3'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x4d63('0x4'));var config=require(_0x4d63('0x5'));var jayson=require(_0x4d63('0x6'));var client=jayson[_0x4d63('0x7')][_0x4d63('0x8')]({'port':0x232a});config[_0x4d63('0x9')]=_[_0x4d63('0xa')](config[_0x4d63('0x9')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./voiceExtension.socket')['register'](socket);function respondWithRpcPromise(_0x305d5b,_0x46a91a,_0x20aac2){return new BPromise(function(_0x58e78d,_0x21024c){return client[_0x4d63('0xb')](_0x305d5b,_0x20aac2)['then'](function(_0x5f5707){logger[_0x4d63('0xc')]('VoiceExtension,\x20%s,\x20%s',_0x46a91a,_0x4d63('0xd'));logger[_0x4d63('0xe')](_0x4d63('0xf'),_0x46a91a,_0x4d63('0xd'),JSON[_0x4d63('0x10')](_0x5f5707));if(_0x5f5707[_0x4d63('0x11')]){if(_0x5f5707['error']['code']===0x1f4){logger['error'](_0x4d63('0x12'),_0x46a91a,_0x5f5707[_0x4d63('0x11')][_0x4d63('0x13')]);return _0x21024c(_0x5f5707[_0x4d63('0x11')]['message']);}logger[_0x4d63('0x11')](_0x4d63('0x12'),_0x46a91a,_0x5f5707[_0x4d63('0x11')][_0x4d63('0x13')]);return _0x58e78d(_0x5f5707[_0x4d63('0x11')][_0x4d63('0x13')]);}else{logger[_0x4d63('0xc')](_0x4d63('0x12'),_0x46a91a,'request\x20sent');_0x58e78d(_0x5f5707['result'][_0x4d63('0x13')]);}})['catch'](function(_0x19d26f){logger[_0x4d63('0x11')](_0x4d63('0x12'),_0x46a91a,_0x19d26f);_0x21024c(_0x19d26f);});});}exports[_0x4d63('0x14')]=function(_0x1cf455){var _0x4d68bb=this;return new Promise(function(_0x2feb4d,_0x12ef62){return db['VoiceExtension'][_0x4d63('0x15')]({'raw':_0x1cf455[_0x4d63('0x16')]?_0x1cf455[_0x4d63('0x16')]['raw']===undefined?!![]:![]:!![],'where':_0x1cf455[_0x4d63('0x16')]?_0x1cf455[_0x4d63('0x16')][_0x4d63('0x17')]||null:null,'attributes':_0x1cf455[_0x4d63('0x16')]?_0x1cf455['options'][_0x4d63('0x18')]||null:null,'limit':_0x1cf455['options']?_0x1cf455['options'][_0x4d63('0x19')]||null:null,'include':_0x1cf455[_0x4d63('0x16')]?_0x1cf455[_0x4d63('0x16')][_0x4d63('0x1a')]?_[_0x4d63('0x1b')](_0x1cf455[_0x4d63('0x16')][_0x4d63('0x1a')],function(_0x2195a9){return{'model':db[_0x2195a9[_0x4d63('0x1c')]],'as':_0x2195a9['as'],'attributes':_0x2195a9[_0x4d63('0x18')],'include':_0x2195a9['include']?_[_0x4d63('0x1b')](_0x2195a9[_0x4d63('0x1a')],function(_0x475c08){return{'model':db[_0x475c08[_0x4d63('0x1c')]],'as':_0x475c08['as'],'attributes':_0x475c08[_0x4d63('0x18')],'include':_0x475c08[_0x4d63('0x1a')]?_[_0x4d63('0x1b')](_0x475c08[_0x4d63('0x1a')],function(_0xee43e){return{'model':db[_0xee43e[_0x4d63('0x1c')]],'as':_0xee43e['as'],'attributes':_0xee43e[_0x4d63('0x18')]};}):[]};}):[]};}):[]:[]})[_0x4d63('0x1d')](function(_0x1b48bd){logger[_0x4d63('0xc')](_0x4d63('0x14'),_0x1cf455);logger[_0x4d63('0xe')]('GetVoiceExtension',_0x1cf455,JSON[_0x4d63('0x10')](_0x1b48bd));_0x2feb4d(_0x1b48bd);})[_0x4d63('0x1e')](function(_0x27294e){logger[_0x4d63('0x11')](_0x4d63('0x14'),_0x27294e[_0x4d63('0x13')],_0x1cf455);_0x12ef62(_0x4d68bb['error'](0x1f4,_0x27294e[_0x4d63('0x13')]));});});};
\ No newline at end of file
index 6c037b4..7658b52 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fc3=['./voiceExtension.events','save','update','emit','removeListener','register','voiceExtension:'];(function(_0x65d29b,_0x3f2586){var _0x17e672=function(_0x488f33){while(--_0x488f33){_0x65d29b['push'](_0x65d29b['shift']());}};_0x17e672(++_0x3f2586);}(_0x5fc3,0xa8));var _0x35fc=function(_0x3b4b1d,_0x15029e){_0x3b4b1d=_0x3b4b1d-0x0;var _0x488c36=_0x5fc3[_0x3b4b1d];return _0x488c36;};'use strict';var VoiceExtensionEvents=require(_0x35fc('0x0'));var events=[_0x35fc('0x1'),'remove',_0x35fc('0x2')];function createListener(_0x2ac6da,_0x196bc2){return function(_0x91d024){_0x196bc2[_0x35fc('0x3')](_0x2ac6da,_0x91d024);};}function removeListener(_0x5e75e6,_0x2d1404){return function(){VoiceExtensionEvents[_0x35fc('0x4')](_0x5e75e6,_0x2d1404);};}exports[_0x35fc('0x5')]=function(_0x5b85ad){for(var _0x5754be=0x0,_0x19a0d1=events['length'];_0x5754be<_0x19a0d1;_0x5754be++){var _0x16e153=events[_0x5754be];var _0x27524f=createListener(_0x35fc('0x6')+_0x16e153,_0x5b85ad);VoiceExtensionEvents['on'](_0x16e153,_0x27524f);}};
\ No newline at end of file
+var _0x326f=['update','emit','removeListener','register','length','./voiceExtension.events'];(function(_0x5b8f76,_0x1b6d91){var _0x5a420d=function(_0x2049b4){while(--_0x2049b4){_0x5b8f76['push'](_0x5b8f76['shift']());}};_0x5a420d(++_0x1b6d91);}(_0x326f,0xd1));var _0xf326=function(_0x54cd65,_0x4c0511){_0x54cd65=_0x54cd65-0x0;var _0x50eeff=_0x326f[_0x54cd65];return _0x50eeff;};'use strict';var VoiceExtensionEvents=require(_0xf326('0x0'));var events=['save','remove',_0xf326('0x1')];function createListener(_0x330ddb,_0x22aabf){return function(_0x408257){_0x22aabf[_0xf326('0x2')](_0x330ddb,_0x408257);};}function removeListener(_0x120a26,_0x9445c6){return function(){VoiceExtensionEvents[_0xf326('0x3')](_0x120a26,_0x9445c6);};}exports[_0xf326('0x4')]=function(_0x3ace29){for(var _0x4c2249=0x0,_0x3c254d=events[_0xf326('0x5')];_0x4c2249<_0x3c254d;_0x4c2249++){var _0x165f95=events[_0x4c2249];var _0x1e7b8a=createListener('voiceExtension:'+_0x165f95,_0x3ace29);VoiceExtensionEvents['on'](_0x165f95,_0x1e7b8a);}};
\ No newline at end of file
index f4800e6..11f8594 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb11=['index','/:id','show','get','/:id/messages','getMessages','post','create','update','destroy','exports','multer','path','connect-timeout','Router','../../components/auth/service','../../config/environment','./voiceMail.controller','isAuthenticated'];(function(_0x3cefa3,_0x7042d8){var _0x35a9ed=function(_0x400939){while(--_0x400939){_0x3cefa3['push'](_0x3cefa3['shift']());}};_0x35a9ed(++_0x7042d8);}(_0xfb11,0x1ad));var _0x1fb1=function(_0x550d12,_0x5384bd){_0x550d12=_0x550d12-0x0;var _0x12103d=_0xfb11[_0x550d12];return _0x12103d;};'use strict';var multer=require(_0x1fb1('0x0'));var util=require('util');var path=require(_0x1fb1('0x1'));var timeout=require(_0x1fb1('0x2'));var express=require('express');var router=express[_0x1fb1('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x1fb1('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x1fb1('0x5'));var controller=require(_0x1fb1('0x6'));router['get']('/',auth[_0x1fb1('0x7')](),controller[_0x1fb1('0x8')]);router['get'](_0x1fb1('0x9'),auth[_0x1fb1('0x7')](),controller[_0x1fb1('0xa')]);router[_0x1fb1('0xb')](_0x1fb1('0xc'),auth[_0x1fb1('0x7')](),controller[_0x1fb1('0xd')]);router[_0x1fb1('0xe')]('/',auth[_0x1fb1('0x7')](),controller[_0x1fb1('0xf')]);router['put'](_0x1fb1('0x9'),auth['isAuthenticated'](),controller[_0x1fb1('0x10')]);router['delete'](_0x1fb1('0x9'),auth[_0x1fb1('0x7')](),controller[_0x1fb1('0x11')]);module[_0x1fb1('0x12')]=router;
\ No newline at end of file
+var _0x4745=['/:id','update','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceMail.controller','get','index','isAuthenticated','/:id/messages','getMessages','post','create','put'];(function(_0x4802da,_0x7c9efe){var _0x3def1e=function(_0x3ef9db){while(--_0x3ef9db){_0x4802da['push'](_0x4802da['shift']());}};_0x3def1e(++_0x7c9efe);}(_0x4745,0x1e7));var _0x5474=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x4745[_0x5b644e];return _0x49c6bf;};'use strict';var multer=require(_0x5474('0x0'));var util=require(_0x5474('0x1'));var path=require(_0x5474('0x2'));var timeout=require(_0x5474('0x3'));var express=require(_0x5474('0x4'));var router=express[_0x5474('0x5')]();var fs_extra=require(_0x5474('0x6'));var auth=require(_0x5474('0x7'));var interaction=require(_0x5474('0x8'));var config=require(_0x5474('0x9'));var controller=require(_0x5474('0xa'));router[_0x5474('0xb')]('/',auth['isAuthenticated'](),controller[_0x5474('0xc')]);router[_0x5474('0xb')]('/:id',auth[_0x5474('0xd')](),controller['show']);router[_0x5474('0xb')](_0x5474('0xe'),auth['isAuthenticated'](),controller[_0x5474('0xf')]);router[_0x5474('0x10')]('/',auth[_0x5474('0xd')](),controller[_0x5474('0x11')]);router[_0x5474('0x12')](_0x5474('0x13'),auth[_0x5474('0xd')](),controller[_0x5474('0x14')]);router['delete'](_0x5474('0x13'),auth[_0x5474('0xd')](),controller[_0x5474('0x15')]);module[_0x5474('0x16')]=router;
\ No newline at end of file
index 4afde4d..b048b6b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x51e3=['fullname','\x20-\x20','mailbox','sequelize','exports','STRING','from-voicemail','contest_mailbox','setDataValue','string','trim','central','ENUM','yes','TINYINT(4)','TIMESTAMP','INTEGER','VIRTUAL','getDataValue'];(function(_0x29c431,_0x65f0df){var _0x2d9aa4=function(_0x79b4fd){while(--_0x79b4fd){_0x29c431['push'](_0x29c431['shift']());}};_0x2d9aa4(++_0x65f0df);}(_0x51e3,0xd4));var _0x351e=function(_0x43c777,_0xad008f){_0x43c777=_0x43c777-0x0;var _0x5ad6f9=_0x51e3[_0x43c777];return _0x5ad6f9;};'use strict';var Sequelize=require(_0x351e('0x0'));module[_0x351e('0x1')]={'customer_id':{'type':Sequelize[_0x351e('0x2')]},'context':{'type':Sequelize[_0x351e('0x2')],'defaultValue':_0x351e('0x3'),'unique':'contest_mailbox'},'mailbox':{'type':Sequelize['STRING'],'defaultValue':'','allowNull':![],'unique':_0x351e('0x4')},'password':{'type':Sequelize['STRING']},'fullname':{'type':Sequelize[_0x351e('0x2')]},'email':{'type':Sequelize[_0x351e('0x2')],'validate':{'isEmail':!![]},'set':function(_0x1acdd9){this[_0x351e('0x5')]('email',typeof _0x1acdd9===_0x351e('0x6')&&_0x1acdd9[_0x351e('0x7')]()?_0x1acdd9[_0x351e('0x7')]():null);}},'pager':{'type':Sequelize[_0x351e('0x2')]},'tz':{'type':Sequelize[_0x351e('0x2')],'defaultValue':_0x351e('0x8')},'attach':{'type':Sequelize[_0x351e('0x9')](_0x351e('0xa'),'no'),'defaultValue':'yes','allowNull':![]},'saycid':{'type':Sequelize[_0x351e('0x9')](_0x351e('0xa'),'no'),'defaultValue':_0x351e('0xa'),'allowNull':![]},'dialout':{'type':Sequelize['STRING']},'callback':{'type':Sequelize[_0x351e('0x2')]},'review':{'type':Sequelize['ENUM'](_0x351e('0xa'),'no'),'defaultValue':'no','allowNull':![]},'operator':{'type':Sequelize['ENUM'](_0x351e('0xa'),'no'),'defaultValue':'no','allowNull':![]},'envelope':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no','allowNull':![]},'sayduration':{'type':Sequelize[_0x351e('0x9')](_0x351e('0xa'),'no'),'defaultValue':'no','allowNull':![]},'saydurationm':{'type':_0x351e('0xb'),'defaultValue':0x1,'allowNull':![]},'sendvoicemail':{'type':Sequelize[_0x351e('0x9')](_0x351e('0xa'),'no'),'defaultValue':'no','allowNull':![]},'delete':{'type':Sequelize['ENUM'](_0x351e('0xa'),'no'),'defaultValue':'no','allowNull':![]},'nextaftercmd':{'type':Sequelize[_0x351e('0x9')](_0x351e('0xa'),'no'),'defaultValue':_0x351e('0xa'),'allowNull':![]},'forcename':{'type':Sequelize[_0x351e('0x9')](_0x351e('0xa'),'no'),'defaultValue':'no','allowNull':![]},'forcegreetings':{'type':Sequelize[_0x351e('0x9')](_0x351e('0xa'),'no'),'defaultValue':'no','allowNull':![]},'hidefromdir':{'type':Sequelize[_0x351e('0x9')](_0x351e('0xa'),'no'),'defaultValue':_0x351e('0xa'),'allowNull':![]},'stamp':{'type':_0x351e('0xc')},'emailsubject':{'type':Sequelize['STRING']},'emailbody':{'type':Sequelize['STRING']},'maxsecs':{'type':Sequelize['INTEGER'](0xff),'defaultValue':0xb4,'allowNull':![]},'maxmsg':{'type':Sequelize[_0x351e('0xd')](0xff),'defaultValue':0x64,'allowNull':![]},'name':{'type':Sequelize[_0x351e('0xe')],'get':function(){return this[_0x351e('0xf')](_0x351e('0x10'))+_0x351e('0x11')+this[_0x351e('0xf')](_0x351e('0x12'));}}};
\ No newline at end of file
+var _0xe5ff=['ENUM','yes','TINYINT(4)','INTEGER','getDataValue','fullname','\x20-\x20','mailbox','sequelize','exports','STRING','from-voicemail','contest_mailbox','setDataValue','email','trim'];(function(_0x5834ff,_0x53f287){var _0x2ac1fd=function(_0x22053f){while(--_0x22053f){_0x5834ff['push'](_0x5834ff['shift']());}};_0x2ac1fd(++_0x53f287);}(_0xe5ff,0x1a8));var _0xfe5f=function(_0x375108,_0x5df06c){_0x375108=_0x375108-0x0;var _0x3ad37c=_0xe5ff[_0x375108];return _0x3ad37c;};'use strict';var Sequelize=require(_0xfe5f('0x0'));module[_0xfe5f('0x1')]={'customer_id':{'type':Sequelize[_0xfe5f('0x2')]},'context':{'type':Sequelize[_0xfe5f('0x2')],'defaultValue':_0xfe5f('0x3'),'unique':_0xfe5f('0x4')},'mailbox':{'type':Sequelize[_0xfe5f('0x2')],'defaultValue':'','allowNull':![],'unique':'contest_mailbox'},'password':{'type':Sequelize[_0xfe5f('0x2')]},'fullname':{'type':Sequelize['STRING']},'email':{'type':Sequelize[_0xfe5f('0x2')],'validate':{'isEmail':!![]},'set':function(_0x114f4c){this[_0xfe5f('0x5')](_0xfe5f('0x6'),typeof _0x114f4c==='string'&&_0x114f4c[_0xfe5f('0x7')]()?_0x114f4c[_0xfe5f('0x7')]():null);}},'pager':{'type':Sequelize[_0xfe5f('0x2')]},'tz':{'type':Sequelize['STRING'],'defaultValue':'central'},'attach':{'type':Sequelize[_0xfe5f('0x8')](_0xfe5f('0x9'),'no'),'defaultValue':_0xfe5f('0x9'),'allowNull':![]},'saycid':{'type':Sequelize['ENUM'](_0xfe5f('0x9'),'no'),'defaultValue':_0xfe5f('0x9'),'allowNull':![]},'dialout':{'type':Sequelize[_0xfe5f('0x2')]},'callback':{'type':Sequelize[_0xfe5f('0x2')]},'review':{'type':Sequelize[_0xfe5f('0x8')](_0xfe5f('0x9'),'no'),'defaultValue':'no','allowNull':![]},'operator':{'type':Sequelize[_0xfe5f('0x8')](_0xfe5f('0x9'),'no'),'defaultValue':'no','allowNull':![]},'envelope':{'type':Sequelize['ENUM'](_0xfe5f('0x9'),'no'),'defaultValue':'no','allowNull':![]},'sayduration':{'type':Sequelize[_0xfe5f('0x8')]('yes','no'),'defaultValue':'no','allowNull':![]},'saydurationm':{'type':_0xfe5f('0xa'),'defaultValue':0x1,'allowNull':![]},'sendvoicemail':{'type':Sequelize[_0xfe5f('0x8')](_0xfe5f('0x9'),'no'),'defaultValue':'no','allowNull':![]},'delete':{'type':Sequelize['ENUM'](_0xfe5f('0x9'),'no'),'defaultValue':'no','allowNull':![]},'nextaftercmd':{'type':Sequelize[_0xfe5f('0x8')]('yes','no'),'defaultValue':'yes','allowNull':![]},'forcename':{'type':Sequelize[_0xfe5f('0x8')]('yes','no'),'defaultValue':'no','allowNull':![]},'forcegreetings':{'type':Sequelize[_0xfe5f('0x8')]('yes','no'),'defaultValue':'no','allowNull':![]},'hidefromdir':{'type':Sequelize[_0xfe5f('0x8')]('yes','no'),'defaultValue':'yes','allowNull':![]},'stamp':{'type':'TIMESTAMP'},'emailsubject':{'type':Sequelize[_0xfe5f('0x2')]},'emailbody':{'type':Sequelize['STRING']},'maxsecs':{'type':Sequelize[_0xfe5f('0xb')](0xff),'defaultValue':0xb4,'allowNull':![]},'maxmsg':{'type':Sequelize['INTEGER'](0xff),'defaultValue':0x64,'allowNull':![]},'name':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0xfe5f('0xc')](_0xfe5f('0xd'))+_0xfe5f('0xe')+this[_0xfe5f('0xc')](_0xfe5f('0xf'));}}};
\ No newline at end of file
index bffcf04..e878ce5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc900=['body','params','findOne','VoiceMailMessage','findAndCountAll','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','save','update','then','destroy','Voicemails','UserProfileResource','error','name','send','index','map','fieldName','type','key','query','filters','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','VoiceMail','includeAll','include','findAll','catch','show','rawAttributes','keys','find','user','get','role','UserProfileSection','userProfileId','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s'];(function(_0xe73080,_0x24c56d){var _0x12cbc4=function(_0x1377e2){while(--_0x1377e2){_0xe73080['push'](_0xe73080['shift']());}};_0x12cbc4(++_0x24c56d);}(_0xc900,0xb3));var _0x0c90=function(_0x43bedb,_0x2227bd){_0x43bedb=_0x43bedb-0x0;var _0x4879f9=_0xc900[_0x43bedb];return _0x4879f9;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x0c90('0x0'));var jsonpatch=require(_0x0c90('0x1'));var rp=require(_0x0c90('0x2'));var moment=require('moment');var BPromise=require(_0x0c90('0x3'));var Mustache=require(_0x0c90('0x4'));var util=require('util');var path=require(_0x0c90('0x5'));var sox=require(_0x0c90('0x6'));var csv=require(_0x0c90('0x7'));var ejs=require(_0x0c90('0x8'));var fs=require('fs');var fs_extra=require(_0x0c90('0x9'));var _=require(_0x0c90('0xa'));var squel=require('squel');var crypto=require(_0x0c90('0xb'));var jsforce=require(_0x0c90('0xc'));var deskjs=require(_0x0c90('0xd'));var toCsv=require(_0x0c90('0x7'));var querystring=require(_0x0c90('0xe'));var Papa=require(_0x0c90('0xf'));var Redis=require(_0x0c90('0x10'));var authService=require(_0x0c90('0x11'));var qs=require(_0x0c90('0x12'));var as=require(_0x0c90('0x13'));var hardwareService=require(_0x0c90('0x14'));var logger=require(_0x0c90('0x15'))(_0x0c90('0x16'));var utils=require('../../config/utils');var config=require(_0x0c90('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x0c90('0x18'))['db'];function respondWithStatusCode(_0x50e7db,_0x459cdb){_0x459cdb=_0x459cdb||0xcc;return function(_0x26fc46){if(_0x26fc46){return _0x50e7db[_0x0c90('0x19')](_0x459cdb);}return _0x50e7db[_0x0c90('0x1a')](_0x459cdb)[_0x0c90('0x1b')]();};}function respondWithResult(_0x59ea8e,_0x467b32){_0x467b32=_0x467b32||0xc8;return function(_0x4451e0){if(_0x4451e0){return _0x59ea8e['status'](_0x467b32)[_0x0c90('0x1c')](_0x4451e0);}};}function respondWithFilteredResult(_0x3a492d,_0x3bd5e8){return function(_0x5bef7d){if(_0x5bef7d){var _0x5daeb7=typeof _0x3bd5e8[_0x0c90('0x1d')]===_0x0c90('0x1e')&&typeof _0x3bd5e8[_0x0c90('0x1f')]===_0x0c90('0x1e');var _0x276b92=_0x5bef7d[_0x0c90('0x20')];var _0x42321a=_0x5daeb7?0x0:_0x3bd5e8['offset'];var _0xc3bb47=_0x5daeb7?_0x5bef7d[_0x0c90('0x20')]:_0x3bd5e8[_0x0c90('0x1d')]+_0x3bd5e8[_0x0c90('0x1f')];var _0x594267;if(_0xc3bb47>=_0x276b92){_0xc3bb47=_0x276b92;_0x594267=0xc8;}else{_0x594267=0xce;}_0x3a492d[_0x0c90('0x1a')](_0x594267);return _0x3a492d[_0x0c90('0x21')](_0x0c90('0x22'),_0x42321a+'-'+_0xc3bb47+'/'+_0x276b92)[_0x0c90('0x1c')](_0x5bef7d);}return null;};}function patchUpdates(_0x315932){return function(_0xc08f54){try{jsonpatch['apply'](_0xc08f54,_0x315932,!![]);}catch(_0x365a42){return BPromise['reject'](_0x365a42);}return _0xc08f54[_0x0c90('0x23')]();};}function saveUpdates(_0x1a021e,_0x47b13c){return function(_0x2a053a){if(_0x2a053a){return _0x2a053a[_0x0c90('0x24')](_0x1a021e)[_0x0c90('0x25')](function(_0x86dee){return _0x86dee;});}return null;};}function removeEntity(_0x212164,_0x3b287c){return function(_0x4dfbc3){if(_0x4dfbc3){return _0x4dfbc3[_0x0c90('0x26')]()[_0x0c90('0x25')](function(){var _0x5695a2=_0x4dfbc3['get']({'plain':!![]});var _0x28d005=_0x0c90('0x27');return db[_0x0c90('0x28')][_0x0c90('0x26')]({'where':{'type':_0x28d005,'resourceId':_0x5695a2['id']}})['then'](function(){return _0x4dfbc3;});})[_0x0c90('0x25')](function(){_0x212164[_0x0c90('0x1a')](0xcc)[_0x0c90('0x1b')]();});}};}function handleEntityNotFound(_0x277d4a,_0x427c2b){return function(_0x114589){if(!_0x114589){_0x277d4a['sendStatus'](0x194);}return _0x114589;};}function handleError(_0x15de68,_0x22a47d){_0x22a47d=_0x22a47d||0x1f4;return function(_0x39f1b2){logger[_0x0c90('0x29')](_0x39f1b2['stack']);if(_0x39f1b2['name']){delete _0x39f1b2[_0x0c90('0x2a')];}_0x15de68[_0x0c90('0x1a')](_0x22a47d)[_0x0c90('0x2b')](_0x39f1b2);};}exports[_0x0c90('0x2c')]=function(_0x119e09,_0x562664){var _0x120136={},_0x50b156={},_0x478002={'count':0x0,'rows':[]};var _0x47a935=_[_0x0c90('0x2d')](db['VoiceMail']['rawAttributes'],function(_0x886634){return{'name':_0x886634[_0x0c90('0x2e')],'type':_0x886634[_0x0c90('0x2f')][_0x0c90('0x30')]};});_0x50b156['model']=_[_0x0c90('0x2d')](_0x47a935,'name');_0x50b156[_0x0c90('0x31')]=_['keys'](_0x119e09[_0x0c90('0x31')]);_0x50b156[_0x0c90('0x32')]=_['intersection'](_0x50b156[_0x0c90('0x33')],_0x50b156[_0x0c90('0x31')]);_0x120136[_0x0c90('0x34')]=_[_0x0c90('0x35')](_0x50b156[_0x0c90('0x33')],qs[_0x0c90('0x36')](_0x119e09[_0x0c90('0x31')][_0x0c90('0x36')]));_0x120136['attributes']=_0x120136[_0x0c90('0x34')][_0x0c90('0x37')]?_0x120136[_0x0c90('0x34')]:_0x50b156[_0x0c90('0x33')];if(!_0x119e09['query'][_0x0c90('0x38')](_0x0c90('0x39'))){_0x120136[_0x0c90('0x1f')]=qs[_0x0c90('0x1f')](_0x119e09[_0x0c90('0x31')][_0x0c90('0x1f')]);_0x120136[_0x0c90('0x1d')]=qs[_0x0c90('0x1d')](_0x119e09['query'][_0x0c90('0x1d')]);}_0x120136[_0x0c90('0x3a')]=qs['sort'](_0x119e09[_0x0c90('0x31')][_0x0c90('0x3b')]);_0x120136[_0x0c90('0x3c')]=qs[_0x0c90('0x32')](_[_0x0c90('0x3d')](_0x119e09['query'],_0x50b156[_0x0c90('0x32')]),_0x47a935);if(_0x119e09[_0x0c90('0x31')][_0x0c90('0x3e')]){_0x120136[_0x0c90('0x3c')]=_[_0x0c90('0x3f')](_0x120136[_0x0c90('0x3c')],{'$or':_[_0x0c90('0x2d')](_0x47a935,function(_0x1695dd){if(_0x1695dd[_0x0c90('0x2f')]!=='VIRTUAL'){var _0x2cd2c2={};_0x2cd2c2[_0x1695dd['name']]={'$like':'%'+_0x119e09[_0x0c90('0x31')]['filter']+'%'};return _0x2cd2c2;}})});}_0x120136=_[_0x0c90('0x3f')]({},_0x120136,_0x119e09[_0x0c90('0x40')]);var _0x49f8b4={'where':_0x120136['where']};return db[_0x0c90('0x41')]['count'](_0x49f8b4)[_0x0c90('0x25')](function(_0x4545bb){_0x478002[_0x0c90('0x20')]=_0x4545bb;if(_0x119e09['query'][_0x0c90('0x42')]){_0x120136[_0x0c90('0x43')]=[{'all':!![]}];}return db[_0x0c90('0x41')][_0x0c90('0x44')](_0x120136);})[_0x0c90('0x25')](function(_0x1184c4){_0x478002['rows']=_0x1184c4;return _0x478002;})[_0x0c90('0x25')](respondWithFilteredResult(_0x562664,_0x120136))[_0x0c90('0x45')](handleError(_0x562664,null));};exports[_0x0c90('0x46')]=function(_0x399115,_0x3c47c9){var _0x15d040={'raw':!![],'where':{'id':_0x399115['params']['id']}},_0x30b9df={};_0x30b9df[_0x0c90('0x33')]=_['keys'](db[_0x0c90('0x41')][_0x0c90('0x47')]);_0x30b9df[_0x0c90('0x31')]=_[_0x0c90('0x48')](_0x399115[_0x0c90('0x31')]);_0x30b9df[_0x0c90('0x32')]=_[_0x0c90('0x35')](_0x30b9df[_0x0c90('0x33')],_0x30b9df[_0x0c90('0x31')]);_0x15d040[_0x0c90('0x34')]=_[_0x0c90('0x35')](_0x30b9df[_0x0c90('0x33')],qs[_0x0c90('0x36')](_0x399115[_0x0c90('0x31')][_0x0c90('0x36')]));_0x15d040['attributes']=_0x15d040[_0x0c90('0x34')][_0x0c90('0x37')]?_0x15d040[_0x0c90('0x34')]:_0x30b9df[_0x0c90('0x33')];if(_0x399115[_0x0c90('0x31')][_0x0c90('0x42')]){_0x15d040[_0x0c90('0x43')]=[{'all':!![]}];}_0x15d040=_[_0x0c90('0x3f')]({},_0x15d040,_0x399115[_0x0c90('0x40')]);return db[_0x0c90('0x41')][_0x0c90('0x49')](_0x15d040)[_0x0c90('0x25')](handleEntityNotFound(_0x3c47c9,null))[_0x0c90('0x25')](respondWithResult(_0x3c47c9,null))[_0x0c90('0x45')](handleError(_0x3c47c9,null));};exports['create']=function(_0x1b4aac,_0x38f492){return db['VoiceMail']['create'](_0x1b4aac['body'],{})[_0x0c90('0x25')](function(_0x1205d0){var _0x460cf9=_0x1b4aac[_0x0c90('0x4a')][_0x0c90('0x4b')]({'plain':!![]});if(!_0x460cf9)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x460cf9[_0x0c90('0x4c')]===_0x0c90('0x4a')){var _0x2b756d=_0x1205d0['get']({'plain':!![]});var _0x119776=_0x0c90('0x27');return db[_0x0c90('0x4d')][_0x0c90('0x49')]({'where':{'name':_0x119776,'userProfileId':_0x460cf9[_0x0c90('0x4e')]},'raw':!![]})[_0x0c90('0x25')](function(_0x42c121){if(_0x42c121&&_0x42c121[_0x0c90('0x4f')]===0x0){return db[_0x0c90('0x28')][_0x0c90('0x50')]({'name':_0x2b756d['name'],'resourceId':_0x2b756d['id'],'type':_0x42c121[_0x0c90('0x2a')],'sectionId':_0x42c121['id']},{})['then'](function(){return _0x1205d0;});}else{return _0x1205d0;}})[_0x0c90('0x45')](function(_0x67539d){logger[_0x0c90('0x29')](_0x0c90('0x51'),_0x67539d);throw _0x67539d;});}return _0x1205d0;})[_0x0c90('0x25')](respondWithResult(_0x38f492,0xc9))[_0x0c90('0x45')](handleError(_0x38f492,null));};exports['update']=function(_0x4930fc,_0x5382d9){if(_0x4930fc['body']['id']){delete _0x4930fc[_0x0c90('0x52')]['id'];}return db[_0x0c90('0x41')][_0x0c90('0x49')]({'where':{'id':_0x4930fc['params']['id']}})[_0x0c90('0x25')](handleEntityNotFound(_0x5382d9,null))[_0x0c90('0x25')](saveUpdates(_0x4930fc['body'],null))[_0x0c90('0x25')](respondWithResult(_0x5382d9,null))['catch'](handleError(_0x5382d9,null));};exports[_0x0c90('0x26')]=function(_0x8951f2,_0x42398b){return db[_0x0c90('0x41')]['find']({'where':{'id':_0x8951f2[_0x0c90('0x53')]['id']}})['then'](handleEntityNotFound(_0x42398b,null))[_0x0c90('0x25')](removeEntity(_0x42398b,null))[_0x0c90('0x45')](handleError(_0x42398b,null));};exports['getMessages']=function(_0x52b437,_0x51c356,_0x221fba){return db[_0x0c90('0x41')][_0x0c90('0x54')]({'where':{'id':_0x52b437[_0x0c90('0x53')]['id']}})[_0x0c90('0x25')](handleEntityNotFound(_0x51c356,null))['then'](function(_0x3bfd01){var _0x25ab13;var _0x5ee971={},_0x3eb725={};_0x3eb725['model']=_[_0x0c90('0x48')](db[_0x0c90('0x55')]['rawAttributes']);_0x3eb725[_0x0c90('0x31')]=_['keys'](_0x52b437['query']);_0x3eb725['filters']=_[_0x0c90('0x35')](_0x3eb725[_0x0c90('0x33')],_0x3eb725[_0x0c90('0x31')]);_0x5ee971[_0x0c90('0x34')]=_['intersection'](_0x3eb725['model'],qs[_0x0c90('0x36')](_0x52b437[_0x0c90('0x31')][_0x0c90('0x36')]));_0x5ee971['attributes']=_0x5ee971[_0x0c90('0x34')][_0x0c90('0x37')]?_0x5ee971[_0x0c90('0x34')]:_0x3eb725['model'];if(!_0x52b437[_0x0c90('0x31')][_0x0c90('0x38')](_0x0c90('0x39'))){_0x5ee971['limit']=qs[_0x0c90('0x1f')](_0x52b437[_0x0c90('0x31')][_0x0c90('0x1f')]);_0x5ee971[_0x0c90('0x1d')]=qs[_0x0c90('0x1d')](_0x52b437[_0x0c90('0x31')][_0x0c90('0x1d')]);}_0x5ee971[_0x0c90('0x3a')]=qs[_0x0c90('0x3b')](_0x52b437['query']['sort']);_0x5ee971[_0x0c90('0x3c')]=qs[_0x0c90('0x32')](_[_0x0c90('0x3d')](_0x52b437[_0x0c90('0x31')],_0x3eb725[_0x0c90('0x32')]));if(_0x52b437[_0x0c90('0x31')][_0x0c90('0x3e')]){_0x5ee971[_0x0c90('0x3c')]=_[_0x0c90('0x3f')](_0x5ee971[_0x0c90('0x3c')],{'$or':_[_0x0c90('0x2d')](_0x5ee971[_0x0c90('0x34')],function(_0x309152){var _0x164d4d={};_0x164d4d[_0x309152]={'$like':'%'+_0x52b437[_0x0c90('0x31')]['filter']+'%'};return _0x164d4d;})});}_0x5ee971[_0x0c90('0x3c')]=_[_0x0c90('0x3f')](_0x5ee971[_0x0c90('0x3c')],{'mailboxuser':_0x3bfd01['mailbox']});_0x5ee971=_['merge']({},_0x5ee971,_0x52b437[_0x0c90('0x40')]);return db['VoiceMailMessage'][_0x0c90('0x56')](_0x5ee971)[_0x0c90('0x25')](respondWithFilteredResult(_0x51c356,_0x5ee971));})['catch'](handleError(_0x51c356,null));};
\ No newline at end of file
+var _0xbfcc=['stack','name','send','index','map','VoiceMail','rawAttributes','fieldName','type','key','keys','query','filters','attributes','intersection','model','fields','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','params','length','find','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','create','catch','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','getMessages','nolimit','VoiceMailMessage','eml-format','fast-json-patch','request-promise','moment','bluebird','to-csv','ejs','lodash','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','sendStatus','end','status','limit','undefined','offset','count','set','Content-Range','json','reject','then','destroy','get','Voicemails','UserProfileResource','error'];(function(_0x345cde,_0x2f3e36){var _0x2c6af4=function(_0x3ece32){while(--_0x3ece32){_0x345cde['push'](_0x345cde['shift']());}};_0x2c6af4(++_0x2f3e36);}(_0xbfcc,0x1dd));var _0xcbfc=function(_0x1a014b,_0x48acae){_0x1a014b=_0x1a014b-0x0;var _0x462258=_0xbfcc[_0x1a014b];return _0x462258;};'use strict';var emlformat=require(_0xcbfc('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xcbfc('0x1'));var rp=require(_0xcbfc('0x2'));var moment=require(_0xcbfc('0x3'));var BPromise=require(_0xcbfc('0x4'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0xcbfc('0x5'));var ejs=require(_0xcbfc('0x6'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xcbfc('0x7'));var squel=require('squel');var crypto=require(_0xcbfc('0x8'));var jsforce=require(_0xcbfc('0x9'));var deskjs=require(_0xcbfc('0xa'));var toCsv=require(_0xcbfc('0x5'));var querystring=require('querystring');var Papa=require(_0xcbfc('0xb'));var Redis=require(_0xcbfc('0xc'));var authService=require(_0xcbfc('0xd'));var qs=require(_0xcbfc('0xe'));var as=require(_0xcbfc('0xf'));var hardwareService=require(_0xcbfc('0x10'));var logger=require('../../config/logger')(_0xcbfc('0x11'));var utils=require(_0xcbfc('0x12'));var config=require(_0xcbfc('0x13'));var licenseUtil=require(_0xcbfc('0x14'));var db=require(_0xcbfc('0x15'))['db'];function respondWithStatusCode(_0x4e8b34,_0x3bfd05){_0x3bfd05=_0x3bfd05||0xcc;return function(_0x86f67c){if(_0x86f67c){return _0x4e8b34[_0xcbfc('0x16')](_0x3bfd05);}return _0x4e8b34['status'](_0x3bfd05)[_0xcbfc('0x17')]();};}function respondWithResult(_0x3ec338,_0x2f2bdd){_0x2f2bdd=_0x2f2bdd||0xc8;return function(_0x45a5cc){if(_0x45a5cc){return _0x3ec338[_0xcbfc('0x18')](_0x2f2bdd)['json'](_0x45a5cc);}};}function respondWithFilteredResult(_0x3c69ed,_0x1963de){return function(_0x1ec8c4){if(_0x1ec8c4){var _0x4317e4=typeof _0x1963de['offset']==='undefined'&&typeof _0x1963de[_0xcbfc('0x19')]===_0xcbfc('0x1a');var _0xa65368=_0x1ec8c4['count'];var _0x5b078f=_0x4317e4?0x0:_0x1963de[_0xcbfc('0x1b')];var _0x99b59d=_0x4317e4?_0x1ec8c4[_0xcbfc('0x1c')]:_0x1963de['offset']+_0x1963de[_0xcbfc('0x19')];var _0x552777;if(_0x99b59d>=_0xa65368){_0x99b59d=_0xa65368;_0x552777=0xc8;}else{_0x552777=0xce;}_0x3c69ed[_0xcbfc('0x18')](_0x552777);return _0x3c69ed[_0xcbfc('0x1d')](_0xcbfc('0x1e'),_0x5b078f+'-'+_0x99b59d+'/'+_0xa65368)[_0xcbfc('0x1f')](_0x1ec8c4);}return null;};}function patchUpdates(_0x25c167){return function(_0x2653b1){try{jsonpatch['apply'](_0x2653b1,_0x25c167,!![]);}catch(_0x9c79da){return BPromise[_0xcbfc('0x20')](_0x9c79da);}return _0x2653b1['save']();};}function saveUpdates(_0x1da958,_0x5a449b){return function(_0x4cc8b3){if(_0x4cc8b3){return _0x4cc8b3['update'](_0x1da958)[_0xcbfc('0x21')](function(_0x4a0fcb){return _0x4a0fcb;});}return null;};}function removeEntity(_0x4a1915,_0x1b3e42){return function(_0x34cffa){if(_0x34cffa){return _0x34cffa[_0xcbfc('0x22')]()[_0xcbfc('0x21')](function(){var _0x49f5bf=_0x34cffa[_0xcbfc('0x23')]({'plain':!![]});var _0x51284a=_0xcbfc('0x24');return db[_0xcbfc('0x25')]['destroy']({'where':{'type':_0x51284a,'resourceId':_0x49f5bf['id']}})[_0xcbfc('0x21')](function(){return _0x34cffa;});})[_0xcbfc('0x21')](function(){_0x4a1915['status'](0xcc)[_0xcbfc('0x17')]();});}};}function handleEntityNotFound(_0x3c3afd,_0x2f7549){return function(_0x41f3b8){if(!_0x41f3b8){_0x3c3afd['sendStatus'](0x194);}return _0x41f3b8;};}function handleError(_0x29f896,_0x1ec530){_0x1ec530=_0x1ec530||0x1f4;return function(_0x4f632a){logger[_0xcbfc('0x26')](_0x4f632a[_0xcbfc('0x27')]);if(_0x4f632a[_0xcbfc('0x28')]){delete _0x4f632a[_0xcbfc('0x28')];}_0x29f896[_0xcbfc('0x18')](_0x1ec530)[_0xcbfc('0x29')](_0x4f632a);};}exports[_0xcbfc('0x2a')]=function(_0x5366cf,_0x41b68b){var _0x433300={},_0x3f9d20={},_0x20a378={'count':0x0,'rows':[]};var _0x500a0b=_[_0xcbfc('0x2b')](db[_0xcbfc('0x2c')][_0xcbfc('0x2d')],function(_0x245986){return{'name':_0x245986[_0xcbfc('0x2e')],'type':_0x245986[_0xcbfc('0x2f')][_0xcbfc('0x30')]};});_0x3f9d20['model']=_[_0xcbfc('0x2b')](_0x500a0b,_0xcbfc('0x28'));_0x3f9d20['query']=_[_0xcbfc('0x31')](_0x5366cf[_0xcbfc('0x32')]);_0x3f9d20[_0xcbfc('0x33')]=_['intersection'](_0x3f9d20['model'],_0x3f9d20['query']);_0x433300[_0xcbfc('0x34')]=_[_0xcbfc('0x35')](_0x3f9d20[_0xcbfc('0x36')],qs[_0xcbfc('0x37')](_0x5366cf[_0xcbfc('0x32')][_0xcbfc('0x37')]));_0x433300[_0xcbfc('0x34')]=_0x433300[_0xcbfc('0x34')]['length']?_0x433300[_0xcbfc('0x34')]:_0x3f9d20[_0xcbfc('0x36')];if(!_0x5366cf['query'][_0xcbfc('0x38')]('nolimit')){_0x433300[_0xcbfc('0x19')]=qs[_0xcbfc('0x19')](_0x5366cf[_0xcbfc('0x32')]['limit']);_0x433300[_0xcbfc('0x1b')]=qs['offset'](_0x5366cf['query'][_0xcbfc('0x1b')]);}_0x433300[_0xcbfc('0x39')]=qs[_0xcbfc('0x3a')](_0x5366cf[_0xcbfc('0x32')][_0xcbfc('0x3a')]);_0x433300[_0xcbfc('0x3b')]=qs[_0xcbfc('0x33')](_[_0xcbfc('0x3c')](_0x5366cf['query'],_0x3f9d20[_0xcbfc('0x33')]),_0x500a0b);if(_0x5366cf['query'][_0xcbfc('0x3d')]){_0x433300[_0xcbfc('0x3b')]=_[_0xcbfc('0x3e')](_0x433300[_0xcbfc('0x3b')],{'$or':_['map'](_0x500a0b,function(_0x5306e9){if(_0x5306e9[_0xcbfc('0x2f')]!==_0xcbfc('0x3f')){var _0x404f46={};_0x404f46[_0x5306e9[_0xcbfc('0x28')]]={'$like':'%'+_0x5366cf[_0xcbfc('0x32')]['filter']+'%'};return _0x404f46;}})});}_0x433300=_[_0xcbfc('0x3e')]({},_0x433300,_0x5366cf[_0xcbfc('0x40')]);var _0xf2da32={'where':_0x433300['where']};return db[_0xcbfc('0x2c')][_0xcbfc('0x1c')](_0xf2da32)[_0xcbfc('0x21')](function(_0x4ca55c){_0x20a378[_0xcbfc('0x1c')]=_0x4ca55c;if(_0x5366cf[_0xcbfc('0x32')][_0xcbfc('0x41')]){_0x433300[_0xcbfc('0x42')]=[{'all':!![]}];}return db[_0xcbfc('0x2c')][_0xcbfc('0x43')](_0x433300);})[_0xcbfc('0x21')](function(_0x561544){_0x20a378[_0xcbfc('0x44')]=_0x561544;return _0x20a378;})[_0xcbfc('0x21')](respondWithFilteredResult(_0x41b68b,_0x433300))['catch'](handleError(_0x41b68b,null));};exports[_0xcbfc('0x45')]=function(_0x50a01c,_0x17b87b){var _0xdc0521={'raw':!![],'where':{'id':_0x50a01c[_0xcbfc('0x46')]['id']}},_0xd609ec={};_0xd609ec[_0xcbfc('0x36')]=_[_0xcbfc('0x31')](db['VoiceMail'][_0xcbfc('0x2d')]);_0xd609ec[_0xcbfc('0x32')]=_[_0xcbfc('0x31')](_0x50a01c[_0xcbfc('0x32')]);_0xd609ec[_0xcbfc('0x33')]=_[_0xcbfc('0x35')](_0xd609ec[_0xcbfc('0x36')],_0xd609ec['query']);_0xdc0521[_0xcbfc('0x34')]=_[_0xcbfc('0x35')](_0xd609ec['model'],qs[_0xcbfc('0x37')](_0x50a01c[_0xcbfc('0x32')][_0xcbfc('0x37')]));_0xdc0521['attributes']=_0xdc0521[_0xcbfc('0x34')][_0xcbfc('0x47')]?_0xdc0521[_0xcbfc('0x34')]:_0xd609ec[_0xcbfc('0x36')];if(_0x50a01c[_0xcbfc('0x32')][_0xcbfc('0x41')]){_0xdc0521[_0xcbfc('0x42')]=[{'all':!![]}];}_0xdc0521=_['merge']({},_0xdc0521,_0x50a01c['options']);return db[_0xcbfc('0x2c')][_0xcbfc('0x48')](_0xdc0521)[_0xcbfc('0x21')](handleEntityNotFound(_0x17b87b,null))[_0xcbfc('0x21')](respondWithResult(_0x17b87b,null))['catch'](handleError(_0x17b87b,null));};exports['create']=function(_0x2e89bf,_0xe5c5ef){return db[_0xcbfc('0x2c')]['create'](_0x2e89bf[_0xcbfc('0x49')],{})[_0xcbfc('0x21')](function(_0x4446b7){var _0x4b3096=_0x2e89bf[_0xcbfc('0x4a')][_0xcbfc('0x23')]({'plain':!![]});if(!_0x4b3096)throw new Error(_0xcbfc('0x4b'));if(_0x4b3096[_0xcbfc('0x4c')]===_0xcbfc('0x4a')){var _0xd9976d=_0x4446b7[_0xcbfc('0x23')]({'plain':!![]});var _0x374998=_0xcbfc('0x24');return db[_0xcbfc('0x4d')]['find']({'where':{'name':_0x374998,'userProfileId':_0x4b3096[_0xcbfc('0x4e')]},'raw':!![]})[_0xcbfc('0x21')](function(_0x44cc11){if(_0x44cc11&&_0x44cc11['autoAssociation']===0x0){return db[_0xcbfc('0x25')][_0xcbfc('0x4f')]({'name':_0xd9976d['name'],'resourceId':_0xd9976d['id'],'type':_0x44cc11[_0xcbfc('0x28')],'sectionId':_0x44cc11['id']},{})[_0xcbfc('0x21')](function(){return _0x4446b7;});}else{return _0x4446b7;}})[_0xcbfc('0x50')](function(_0x25e48d){logger['error'](_0xcbfc('0x51'),_0x25e48d);throw _0x25e48d;});}return _0x4446b7;})[_0xcbfc('0x21')](respondWithResult(_0xe5c5ef,0xc9))['catch'](handleError(_0xe5c5ef,null));};exports[_0xcbfc('0x52')]=function(_0x34db13,_0x3ed9f0){if(_0x34db13[_0xcbfc('0x49')]['id']){delete _0x34db13[_0xcbfc('0x49')]['id'];}return db[_0xcbfc('0x2c')][_0xcbfc('0x48')]({'where':{'id':_0x34db13[_0xcbfc('0x46')]['id']}})[_0xcbfc('0x21')](handleEntityNotFound(_0x3ed9f0,null))[_0xcbfc('0x21')](saveUpdates(_0x34db13['body'],null))[_0xcbfc('0x21')](respondWithResult(_0x3ed9f0,null))['catch'](handleError(_0x3ed9f0,null));};exports['destroy']=function(_0x4a10e6,_0x4239da){return db[_0xcbfc('0x2c')][_0xcbfc('0x48')]({'where':{'id':_0x4a10e6[_0xcbfc('0x46')]['id']}})[_0xcbfc('0x21')](handleEntityNotFound(_0x4239da,null))[_0xcbfc('0x21')](removeEntity(_0x4239da,null))[_0xcbfc('0x50')](handleError(_0x4239da,null));};exports[_0xcbfc('0x53')]=function(_0x4d2df1,_0x9e0c38,_0xf5f5e1){return db[_0xcbfc('0x2c')]['findOne']({'where':{'id':_0x4d2df1[_0xcbfc('0x46')]['id']}})[_0xcbfc('0x21')](handleEntityNotFound(_0x9e0c38,null))[_0xcbfc('0x21')](function(_0x3b526f){var _0x1ed350;var _0x310b78={},_0x34ec1d={};_0x34ec1d['model']=_[_0xcbfc('0x31')](db['VoiceMailMessage'][_0xcbfc('0x2d')]);_0x34ec1d[_0xcbfc('0x32')]=_['keys'](_0x4d2df1[_0xcbfc('0x32')]);_0x34ec1d['filters']=_[_0xcbfc('0x35')](_0x34ec1d[_0xcbfc('0x36')],_0x34ec1d[_0xcbfc('0x32')]);_0x310b78[_0xcbfc('0x34')]=_[_0xcbfc('0x35')](_0x34ec1d[_0xcbfc('0x36')],qs['fields'](_0x4d2df1[_0xcbfc('0x32')][_0xcbfc('0x37')]));_0x310b78['attributes']=_0x310b78[_0xcbfc('0x34')][_0xcbfc('0x47')]?_0x310b78[_0xcbfc('0x34')]:_0x34ec1d[_0xcbfc('0x36')];if(!_0x4d2df1[_0xcbfc('0x32')][_0xcbfc('0x38')](_0xcbfc('0x54'))){_0x310b78[_0xcbfc('0x19')]=qs['limit'](_0x4d2df1[_0xcbfc('0x32')][_0xcbfc('0x19')]);_0x310b78[_0xcbfc('0x1b')]=qs[_0xcbfc('0x1b')](_0x4d2df1[_0xcbfc('0x32')][_0xcbfc('0x1b')]);}_0x310b78[_0xcbfc('0x39')]=qs[_0xcbfc('0x3a')](_0x4d2df1[_0xcbfc('0x32')][_0xcbfc('0x3a')]);_0x310b78['where']=qs[_0xcbfc('0x33')](_[_0xcbfc('0x3c')](_0x4d2df1['query'],_0x34ec1d[_0xcbfc('0x33')]));if(_0x4d2df1['query']['filter']){_0x310b78[_0xcbfc('0x3b')]=_[_0xcbfc('0x3e')](_0x310b78[_0xcbfc('0x3b')],{'$or':_[_0xcbfc('0x2b')](_0x310b78[_0xcbfc('0x34')],function(_0x4d8d2a){var _0x53babd={};_0x53babd[_0x4d8d2a]={'$like':'%'+_0x4d2df1[_0xcbfc('0x32')][_0xcbfc('0x3d')]+'%'};return _0x53babd;})});}_0x310b78[_0xcbfc('0x3b')]=_[_0xcbfc('0x3e')](_0x310b78[_0xcbfc('0x3b')],{'mailboxuser':_0x3b526f['mailbox']});_0x310b78=_[_0xcbfc('0x3e')]({},_0x310b78,_0x4d2df1[_0xcbfc('0x40')]);return db[_0xcbfc('0x55')]['findAndCountAll'](_0x310b78)['then'](respondWithFilteredResult(_0x9e0c38,_0x310b78));})['catch'](handleError(_0x9e0c38,null));};
\ No newline at end of file
index b078395..922ce96 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeeb8=['util','../../config/logger','moment','bluebird','request-promise','path','define','VoiceMail','voice_voicemail','mailbox_context','context'];(function(_0x5a95fa,_0x4a2fc9){var _0x1a61b8=function(_0x59f119){while(--_0x59f119){_0x5a95fa['push'](_0x5a95fa['shift']());}};_0x1a61b8(++_0x4a2fc9);}(_0xeeb8,0xb0));var _0x8eeb=function(_0x1bbc2c,_0x38450c){_0x1bbc2c=_0x1bbc2c-0x0;var _0x323115=_0xeeb8[_0x1bbc2c];return _0x323115;};'use strict';var _=require('lodash');var util=require(_0x8eeb('0x0'));var logger=require(_0x8eeb('0x1'))('api');var moment=require(_0x8eeb('0x2'));var BPromise=require(_0x8eeb('0x3'));var rp=require(_0x8eeb('0x4'));var fs=require('fs');var path=require(_0x8eeb('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./voiceMail.attributes');module['exports']=function(_0xcca94a,_0x24dbe2){return _0xcca94a[_0x8eeb('0x6')](_0x8eeb('0x7'),attributes,{'tableName':_0x8eeb('0x8'),'paranoid':![],'indexes':[{'name':_0x8eeb('0x9'),'fields':['mailbox',_0x8eeb('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x65fe=['context','api','moment','bluebird','request-promise','path','./voiceMail.attributes','exports','define','VoiceMail','voice_voicemail','mailbox_context'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x65fe,0x15d));var _0xe65f=function(_0x3f2c0a,_0x45bfb3){_0x3f2c0a=_0x3f2c0a-0x0;var _0x42f976=_0x65fe[_0x3f2c0a];return _0x42f976;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0xe65f('0x0'));var moment=require(_0xe65f('0x1'));var BPromise=require(_0xe65f('0x2'));var rp=require(_0xe65f('0x3'));var fs=require('fs');var path=require(_0xe65f('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xe65f('0x5'));module[_0xe65f('0x6')]=function(_0x116e87,_0x43479b){return _0x116e87[_0xe65f('0x7')](_0xe65f('0x8'),attributes,{'tableName':_0xe65f('0x9'),'paranoid':![],'indexes':[{'name':_0xe65f('0xa'),'fields':['mailbox',_0xe65f('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index ca0f747..041abce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe3bc=['info','VoiceMail,\x20%s,\x20%s','request\x20sent','debug','VoiceMail,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','util','moment','bluebird','randomstring','ioredis','../../mysqldb','jayson/promise','client','then'];(function(_0x2eb4f9,_0x47f2d2){var _0x1de35f=function(_0x409055){while(--_0x409055){_0x2eb4f9['push'](_0x2eb4f9['shift']());}};_0x1de35f(++_0x47f2d2);}(_0xe3bc,0xdb));var _0xce3b=function(_0x2a6ebc,_0x44324f){_0x2a6ebc=_0x2a6ebc-0x0;var _0x3a7d56=_0xe3bc[_0x2a6ebc];return _0x3a7d56;};'use strict';var _=require('lodash');var util=require(_0xce3b('0x0'));var moment=require(_0xce3b('0x1'));var BPromise=require(_0xce3b('0x2'));var rs=require(_0xce3b('0x3'));var fs=require('fs');var Redis=require(_0xce3b('0x4'));var db=require(_0xce3b('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0xce3b('0x6'));var client=jayson[_0xce3b('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2acb3e,_0x3556aa,_0x347a86){return new BPromise(function(_0x2adbc2,_0xb8e98b){return client['request'](_0x2acb3e,_0x347a86)[_0xce3b('0x8')](function(_0x1780c8){logger[_0xce3b('0x9')](_0xce3b('0xa'),_0x3556aa,_0xce3b('0xb'));logger[_0xce3b('0xc')](_0xce3b('0xd'),_0x3556aa,_0xce3b('0xb'),JSON[_0xce3b('0xe')](_0x1780c8));if(_0x1780c8['error']){if(_0x1780c8[_0xce3b('0xf')][_0xce3b('0x10')]===0x1f4){logger[_0xce3b('0xf')](_0xce3b('0xa'),_0x3556aa,_0x1780c8[_0xce3b('0xf')][_0xce3b('0x11')]);return _0xb8e98b(_0x1780c8['error']['message']);}logger[_0xce3b('0xf')](_0xce3b('0xa'),_0x3556aa,_0x1780c8[_0xce3b('0xf')]['message']);return _0x2adbc2(_0x1780c8['error']['message']);}else{logger[_0xce3b('0x9')](_0xce3b('0xa'),_0x3556aa,_0xce3b('0xb'));_0x2adbc2(_0x1780c8[_0xce3b('0x12')][_0xce3b('0x11')]);}})['catch'](function(_0x4f0924){logger['error']('VoiceMail,\x20%s,\x20%s',_0x3556aa,_0x4f0924);_0xb8e98b(_0x4f0924);});});}
\ No newline at end of file
+var _0xcb15=['message','info','result','catch','lodash','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','VoiceMail,\x20%s,\x20%s','VoiceMail,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code'];(function(_0x20f17f,_0x47be7f){var _0x4e2953=function(_0x47e835){while(--_0x47e835){_0x20f17f['push'](_0x20f17f['shift']());}};_0x4e2953(++_0x47be7f);}(_0xcb15,0x1d0));var _0x5cb1=function(_0x18bac5,_0x2e54fc){_0x18bac5=_0x18bac5-0x0;var _0xdc6c44=_0xcb15[_0x18bac5];return _0xdc6c44;};'use strict';var _=require(_0x5cb1('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x5cb1('0x1'));var rs=require(_0x5cb1('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x5cb1('0x3'))['db'];var utils=require(_0x5cb1('0x4'));var logger=require(_0x5cb1('0x5'))(_0x5cb1('0x6'));var config=require(_0x5cb1('0x7'));var jayson=require(_0x5cb1('0x8'));var client=jayson[_0x5cb1('0x9')][_0x5cb1('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x34978d,_0x3f5e1b,_0x344777){return new BPromise(function(_0x5664b8,_0x5bbe4f){return client[_0x5cb1('0xb')](_0x34978d,_0x344777)[_0x5cb1('0xc')](function(_0x10b409){logger['info'](_0x5cb1('0xd'),_0x3f5e1b,'request\x20sent');logger['debug'](_0x5cb1('0xe'),_0x3f5e1b,_0x5cb1('0xf'),JSON[_0x5cb1('0x10')](_0x10b409));if(_0x10b409[_0x5cb1('0x11')]){if(_0x10b409[_0x5cb1('0x11')][_0x5cb1('0x12')]===0x1f4){logger[_0x5cb1('0x11')](_0x5cb1('0xd'),_0x3f5e1b,_0x10b409[_0x5cb1('0x11')][_0x5cb1('0x13')]);return _0x5bbe4f(_0x10b409['error'][_0x5cb1('0x13')]);}logger[_0x5cb1('0x11')](_0x5cb1('0xd'),_0x3f5e1b,_0x10b409['error']['message']);return _0x5664b8(_0x10b409[_0x5cb1('0x11')]['message']);}else{logger[_0x5cb1('0x14')](_0x5cb1('0xd'),_0x3f5e1b,_0x5cb1('0xf'));_0x5664b8(_0x10b409[_0x5cb1('0x15')][_0x5cb1('0x13')]);}})[_0x5cb1('0x16')](function(_0x4d12c6){logger[_0x5cb1('0x11')](_0x5cb1('0xd'),_0x3f5e1b,_0x4d12c6);_0x5bbe4f(_0x4d12c6);});});}
\ No newline at end of file
index 3b869c3..5681b27 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2751=['update','delete','destroy','exports','multer','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceMailMessage.controller','get','isAuthenticated','index','/:id','show','/:id/download','download','create','put'];(function(_0x7ac2d,_0x50b7eb){var _0x4d91e2=function(_0x43f662){while(--_0x43f662){_0x7ac2d['push'](_0x7ac2d['shift']());}};_0x4d91e2(++_0x50b7eb);}(_0x2751,0x16c));var _0x1275=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x2751[_0xa464c9];return _0x3d73c4;};'use strict';var multer=require(_0x1275('0x0'));var util=require('util');var path=require(_0x1275('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x1275('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x1275('0x3'));var interaction=require(_0x1275('0x4'));var config=require(_0x1275('0x5'));var controller=require(_0x1275('0x6'));router[_0x1275('0x7')]('/',auth[_0x1275('0x8')](),controller[_0x1275('0x9')]);router[_0x1275('0x7')](_0x1275('0xa'),auth['isAuthenticated'](),controller[_0x1275('0xb')]);router[_0x1275('0x7')](_0x1275('0xc'),auth[_0x1275('0x8')](),controller[_0x1275('0xd')]);router['post']('/',auth['isAuthenticated'](),controller[_0x1275('0xe')]);router[_0x1275('0xf')](_0x1275('0xa'),auth[_0x1275('0x8')](),controller[_0x1275('0x10')]);router[_0x1275('0x11')](_0x1275('0xa'),auth['isAuthenticated'](),controller[_0x1275('0x12')]);module[_0x1275('0x13')]=router;
\ No newline at end of file
+var _0x8b53=['get','index','/:id','isAuthenticated','show','post','put','update','delete','destroy','exports','multer','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceMailMessage.controller'];(function(_0x3b76ae,_0x1f110e){var _0x11ab0f=function(_0x3ebed0){while(--_0x3ebed0){_0x3b76ae['push'](_0x3b76ae['shift']());}};_0x11ab0f(++_0x1f110e);}(_0x8b53,0x83));var _0x38b5=function(_0x55bee0,_0x13121c){_0x55bee0=_0x55bee0-0x0;var _0xff2667=_0x8b53[_0x55bee0];return _0xff2667;};'use strict';var multer=require(_0x38b5('0x0'));var util=require(_0x38b5('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x38b5('0x2'));var router=express[_0x38b5('0x3')]();var fs_extra=require(_0x38b5('0x4'));var auth=require(_0x38b5('0x5'));var interaction=require(_0x38b5('0x6'));var config=require(_0x38b5('0x7'));var controller=require(_0x38b5('0x8'));router[_0x38b5('0x9')]('/',auth['isAuthenticated'](),controller[_0x38b5('0xa')]);router[_0x38b5('0x9')](_0x38b5('0xb'),auth[_0x38b5('0xc')](),controller[_0x38b5('0xd')]);router[_0x38b5('0x9')]('/:id/download',auth[_0x38b5('0xc')](),controller['download']);router[_0x38b5('0xe')]('/',auth[_0x38b5('0xc')](),controller['create']);router[_0x38b5('0xf')]('/:id',auth[_0x38b5('0xc')](),controller[_0x38b5('0x10')]);router[_0x38b5('0x11')](_0x38b5('0xb'),auth[_0x38b5('0xc')](),controller[_0x38b5('0x12')]);module[_0x38b5('0x13')]=router;
\ No newline at end of file
index 2ca8f1d..b801603 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d6a=['exports','getDataValue','STRING','BLOB','long','TIMESTAMP','literal','CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP','sequelize'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0x7d6a,0x128));var _0xa7d6=function(_0x39cc40,_0x391073){_0x39cc40=_0x39cc40-0x0;var _0x5f2225=_0x7d6a[_0x39cc40];return _0x5f2225;};'use strict';var Sequelize=require(_0xa7d6('0x0'));module[_0xa7d6('0x1')]={'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x11ffb1){return this[_0xa7d6('0x2')]('id');}},'msgnum':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0,'allowNull':![]},'dir':{'type':Sequelize[_0xa7d6('0x3')],'defaultValue':''},'context':{'type':Sequelize[_0xa7d6('0x3')],'defaultValue':''},'macrocontext':{'type':Sequelize['STRING'],'defaultValue':''},'callerid':{'type':Sequelize['STRING'],'defaultValue':''},'origtime':{'type':Sequelize['STRING'],'defaultValue':''},'duration':{'type':Sequelize[_0xa7d6('0x3')],'defaultValue':''},'mailboxuser':{'type':Sequelize[_0xa7d6('0x3')],'defaultValue':''},'mailboxcontext':{'type':Sequelize[_0xa7d6('0x3')],'defaultValue':''},'recording':{'type':Sequelize[_0xa7d6('0x4')](_0xa7d6('0x5')),'defaultValue':null},'flag':{'type':Sequelize['STRING'],'defaultValue':''},'msg_id':{'type':Sequelize[_0xa7d6('0x3')],'defaultValue':''},'stamp':{'type':_0xa7d6('0x6'),'defaultValue':Sequelize[_0xa7d6('0x7')](_0xa7d6('0x8'))}};
\ No newline at end of file
+var _0x8122=['BLOB','long','literal','CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP','sequelize','exports','VIRTUAL','getDataValue','INTEGER','STRING'];(function(_0x51c6e7,_0x292e11){var _0x7c8057=function(_0x56886c){while(--_0x56886c){_0x51c6e7['push'](_0x51c6e7['shift']());}};_0x7c8057(++_0x292e11);}(_0x8122,0x1e4));var _0x2812=function(_0x413fcc,_0x82d7c6){_0x413fcc=_0x413fcc-0x0;var _0x554d19=_0x8122[_0x413fcc];return _0x554d19;};'use strict';var Sequelize=require(_0x2812('0x0'));module[_0x2812('0x1')]={'name':{'type':Sequelize[_0x2812('0x2')],'get':function(_0x485b21){return this[_0x2812('0x3')]('id');}},'msgnum':{'type':Sequelize[_0x2812('0x4')](0xb),'defaultValue':0x0,'allowNull':![]},'dir':{'type':Sequelize[_0x2812('0x5')],'defaultValue':''},'context':{'type':Sequelize[_0x2812('0x5')],'defaultValue':''},'macrocontext':{'type':Sequelize[_0x2812('0x5')],'defaultValue':''},'callerid':{'type':Sequelize[_0x2812('0x5')],'defaultValue':''},'origtime':{'type':Sequelize[_0x2812('0x5')],'defaultValue':''},'duration':{'type':Sequelize[_0x2812('0x5')],'defaultValue':''},'mailboxuser':{'type':Sequelize[_0x2812('0x5')],'defaultValue':''},'mailboxcontext':{'type':Sequelize[_0x2812('0x5')],'defaultValue':''},'recording':{'type':Sequelize[_0x2812('0x6')](_0x2812('0x7')),'defaultValue':null},'flag':{'type':Sequelize[_0x2812('0x5')],'defaultValue':''},'msg_id':{'type':Sequelize[_0x2812('0x5')],'defaultValue':''},'stamp':{'type':'TIMESTAMP','defaultValue':Sequelize[_0x2812('0x8')](_0x2812('0x9'))}};
\ No newline at end of file
index 6f6a6f8..dd9f0c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5959=['ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../mysqldb','status','end','json','undefined','limit','count','offset','set','Content-Range','reject','save','update','destroy','error','stack','name','send','index','map','VoiceMailMessage','fieldName','type','key','differenceBy','query','filters','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','then','includeAll','include','findAll','rows','catch','show','params','keys','rawAttributes','create','body','download','recording','msg_id','Sequelize','VoiceMailMessage\x20not\x20found','audio/wav','attachment','Content-Disposition','.wav\x22','eml-format','rimraf','zip-dir','bluebird','mustache','util','sox','fs-extra','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse'];(function(_0x3cb86b,_0x3c75f6){var _0x3c10a0=function(_0x71331f){while(--_0x71331f){_0x3cb86b['push'](_0x3cb86b['shift']());}};_0x3c10a0(++_0x3c75f6);}(_0x5959,0x145));var _0x9595=function(_0x1a61db,_0x3ad3af){_0x1a61db=_0x1a61db-0x0;var _0x5ac3bf=_0x5959[_0x1a61db];return _0x5ac3bf;};'use strict';var emlformat=require(_0x9595('0x0'));var rimraf=require(_0x9595('0x1'));var zipdir=require(_0x9595('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x9595('0x3'));var Mustache=require(_0x9595('0x4'));var util=require(_0x9595('0x5'));var path=require('path');var sox=require(_0x9595('0x6'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x9595('0x7'));var _=require('lodash');var squel=require(_0x9595('0x8'));var crypto=require(_0x9595('0x9'));var jsforce=require(_0x9595('0xa'));var deskjs=require(_0x9595('0xb'));var toCsv=require(_0x9595('0xc'));var querystring=require(_0x9595('0xd'));var Papa=require(_0x9595('0xe'));var Redis=require(_0x9595('0xf'));var authService=require(_0x9595('0x10'));var qs=require(_0x9595('0x11'));var as=require(_0x9595('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x9595('0x13'))(_0x9595('0x14'));var utils=require('../../config/utils');var config=require(_0x9595('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x9595('0x16'))['db'];function respondWithStatusCode(_0x5e84b4,_0x450296){_0x450296=_0x450296||0xcc;return function(_0x57ed8c){if(_0x57ed8c){return _0x5e84b4['sendStatus'](_0x450296);}return _0x5e84b4[_0x9595('0x17')](_0x450296)[_0x9595('0x18')]();};}function respondWithResult(_0x316c80,_0x4134ee){_0x4134ee=_0x4134ee||0xc8;return function(_0x3055e6){if(_0x3055e6){return _0x316c80['status'](_0x4134ee)[_0x9595('0x19')](_0x3055e6);}};}function respondWithFilteredResult(_0x56016e,_0x253183){return function(_0x22801c){if(_0x22801c){var _0xa6e8b4=typeof _0x253183['offset']===_0x9595('0x1a')&&typeof _0x253183[_0x9595('0x1b')]===_0x9595('0x1a');var _0x2539db=_0x22801c[_0x9595('0x1c')];var _0x479480=_0xa6e8b4?0x0:_0x253183[_0x9595('0x1d')];var _0x22b92c=_0xa6e8b4?_0x22801c['count']:_0x253183[_0x9595('0x1d')]+_0x253183['limit'];var _0x5a21ef;if(_0x22b92c>=_0x2539db){_0x22b92c=_0x2539db;_0x5a21ef=0xc8;}else{_0x5a21ef=0xce;}_0x56016e[_0x9595('0x17')](_0x5a21ef);return _0x56016e[_0x9595('0x1e')](_0x9595('0x1f'),_0x479480+'-'+_0x22b92c+'/'+_0x2539db)[_0x9595('0x19')](_0x22801c);}return null;};}function patchUpdates(_0x370417){return function(_0x2c0069){try{jsonpatch['apply'](_0x2c0069,_0x370417,!![]);}catch(_0x180910){return BPromise[_0x9595('0x20')](_0x180910);}return _0x2c0069[_0x9595('0x21')]();};}function saveUpdates(_0x3081fa,_0x2eb325){return function(_0x3a4072){if(_0x3a4072){return _0x3a4072[_0x9595('0x22')](_0x3081fa)['then'](function(_0x302a8c){return _0x302a8c;});}return null;};}function removeEntity(_0x2dc594,_0x7e4824){return function(_0x47f919){if(_0x47f919){return _0x47f919[_0x9595('0x23')]()['then'](function(){_0x2dc594['status'](0xcc)[_0x9595('0x18')]();});}};}function handleEntityNotFound(_0x1752ec,_0x18dc4f){return function(_0x5b1818){if(!_0x5b1818){_0x1752ec['sendStatus'](0x194);}return _0x5b1818;};}function handleError(_0x46f349,_0x251a34){_0x251a34=_0x251a34||0x1f4;return function(_0x2256cd){logger[_0x9595('0x24')](_0x2256cd[_0x9595('0x25')]);if(_0x2256cd[_0x9595('0x26')]){delete _0x2256cd[_0x9595('0x26')];}_0x46f349[_0x9595('0x17')](_0x251a34)[_0x9595('0x27')](_0x2256cd);};}exports[_0x9595('0x28')]=function(_0x231e35,_0x2fd430){var _0x41e2b5={},_0x4c51d4={},_0x5a9c4d={'count':0x0,'rows':[]};var _0x43df94=_[_0x9595('0x29')](db[_0x9595('0x2a')]['rawAttributes'],function(_0x4079a0){return{'name':_0x4079a0[_0x9595('0x2b')],'type':_0x4079a0[_0x9595('0x2c')][_0x9595('0x2d')]};});_0x4c51d4['model']=_[_0x9595('0x2e')](_[_0x9595('0x29')](_0x43df94,'name'),[_0x9595('0x26')]);_0x4c51d4[_0x9595('0x2f')]=_['keys'](_0x231e35[_0x9595('0x2f')]);_0x4c51d4[_0x9595('0x30')]=_['intersection'](_0x4c51d4[_0x9595('0x31')],_0x4c51d4['query']);_0x41e2b5[_0x9595('0x32')]=_[_0x9595('0x33')](_0x4c51d4[_0x9595('0x31')],qs[_0x9595('0x34')](_0x231e35[_0x9595('0x2f')][_0x9595('0x34')]));_0x41e2b5[_0x9595('0x32')]=_0x41e2b5[_0x9595('0x32')][_0x9595('0x35')]?_0x41e2b5[_0x9595('0x32')]:_0x4c51d4[_0x9595('0x31')];if(!_0x231e35[_0x9595('0x2f')][_0x9595('0x36')](_0x9595('0x37'))){_0x41e2b5['limit']=qs[_0x9595('0x1b')](_0x231e35[_0x9595('0x2f')][_0x9595('0x1b')]);_0x41e2b5['offset']=qs[_0x9595('0x1d')](_0x231e35[_0x9595('0x2f')][_0x9595('0x1d')]);}_0x41e2b5[_0x9595('0x38')]=qs[_0x9595('0x39')](_0x231e35[_0x9595('0x2f')]['sort']);_0x41e2b5[_0x9595('0x3a')]=qs[_0x9595('0x30')](_[_0x9595('0x3b')](_0x231e35[_0x9595('0x2f')],_0x4c51d4['filters']),_0x43df94);if(_0x231e35[_0x9595('0x2f')][_0x9595('0x3c')]){_0x41e2b5['where']=_[_0x9595('0x3d')](_0x41e2b5[_0x9595('0x3a')],{'$or':_['map'](_0x43df94,function(_0xcbc53f){if(_0xcbc53f[_0x9595('0x2c')]!==_0x9595('0x3e')){var _0x1855ce={};_0x1855ce[_0xcbc53f[_0x9595('0x26')]]={'$like':'%'+_0x231e35['query']['filter']+'%'};return _0x1855ce;}})});}_0x41e2b5=_[_0x9595('0x3d')]({},_0x41e2b5,_0x231e35[_0x9595('0x3f')]);var _0x906183={'where':_0x41e2b5[_0x9595('0x3a')]};return db[_0x9595('0x2a')][_0x9595('0x1c')](_0x906183)[_0x9595('0x40')](function(_0x37fe53){_0x5a9c4d[_0x9595('0x1c')]=_0x37fe53;if(_0x231e35[_0x9595('0x2f')][_0x9595('0x41')]){_0x41e2b5[_0x9595('0x42')]=[{'all':!![]}];}return db[_0x9595('0x2a')][_0x9595('0x43')](_0x41e2b5);})[_0x9595('0x40')](function(_0x2511ca){_0x5a9c4d[_0x9595('0x44')]=_0x2511ca;return _0x5a9c4d;})[_0x9595('0x40')](respondWithFilteredResult(_0x2fd430,_0x41e2b5))[_0x9595('0x45')](handleError(_0x2fd430,null));};exports[_0x9595('0x46')]=function(_0x19c328,_0x56d9a8){var _0x50fba3={'raw':!![],'where':{'id':_0x19c328[_0x9595('0x47')]['id']}},_0x3346e1={};_0x3346e1[_0x9595('0x31')]=_[_0x9595('0x48')](db['VoiceMailMessage'][_0x9595('0x49')]);_0x3346e1['query']=_['keys'](_0x19c328['query']);_0x3346e1[_0x9595('0x30')]=_[_0x9595('0x33')](_0x3346e1[_0x9595('0x31')],_0x3346e1[_0x9595('0x2f')]);_0x50fba3[_0x9595('0x32')]=_[_0x9595('0x33')](_0x3346e1[_0x9595('0x31')],qs['fields'](_0x19c328[_0x9595('0x2f')][_0x9595('0x34')]));_0x50fba3[_0x9595('0x32')]=_0x50fba3[_0x9595('0x32')][_0x9595('0x35')]?_0x50fba3[_0x9595('0x32')]:_0x3346e1['model'];if(_0x19c328[_0x9595('0x2f')][_0x9595('0x41')]){_0x50fba3[_0x9595('0x42')]=[{'all':!![]}];}_0x50fba3=_['merge']({},_0x50fba3,_0x19c328['options']);return db['VoiceMailMessage']['find'](_0x50fba3)['then'](handleEntityNotFound(_0x56d9a8,null))['then'](respondWithResult(_0x56d9a8,null))[_0x9595('0x45')](handleError(_0x56d9a8,null));};exports[_0x9595('0x4a')]=function(_0x4df0e7,_0x19e6cd){return db[_0x9595('0x2a')]['create'](_0x4df0e7[_0x9595('0x4b')],{})[_0x9595('0x40')](respondWithResult(_0x19e6cd,0xc9))[_0x9595('0x45')](handleError(_0x19e6cd,null));};exports[_0x9595('0x22')]=function(_0x187ece,_0x239119){if(_0x187ece[_0x9595('0x4b')]['id']){delete _0x187ece[_0x9595('0x4b')]['id'];}return db[_0x9595('0x2a')]['find']({'where':{'id':_0x187ece[_0x9595('0x47')]['id']}})[_0x9595('0x40')](handleEntityNotFound(_0x239119,null))[_0x9595('0x40')](saveUpdates(_0x187ece[_0x9595('0x4b')],null))['then'](respondWithResult(_0x239119,null))[_0x9595('0x45')](handleError(_0x239119,null));};exports[_0x9595('0x23')]=function(_0x2d66ed,_0x2d95cb){return db[_0x9595('0x2a')]['find']({'where':{'id':_0x2d66ed[_0x9595('0x47')]['id']}})[_0x9595('0x40')](handleEntityNotFound(_0x2d95cb,null))[_0x9595('0x40')](removeEntity(_0x2d95cb,null))[_0x9595('0x45')](handleError(_0x2d95cb,null));};exports[_0x9595('0x4c')]=function(_0x3ef88a,_0x481d7a,_0x23775f){return db[_0x9595('0x2a')]['find']({'where':{'id':_0x3ef88a[_0x9595('0x47')]['id']},'attributes':['id',_0x9595('0x4d'),_0x9595('0x4e')]})[_0x9595('0x40')](handleEntityNotFound(_0x481d7a,null))[_0x9595('0x40')](function(_0x5088be){if(_0x5088be){if(!_0x5088be[_0x9595('0x4d')]){throw new db[(_0x9595('0x4f'))]['ValidationError'](_0x9595('0x50'));}var _0x1bdc4a={'Content-Type':_0x9595('0x51'),'Content-Disposition':_0x9595('0x52')};if(_0x5088be[_0x9595('0x4e')]){_0x1bdc4a[_0x9595('0x53')]='attachment;\x20filename=\x22'+_0x5088be['msg_id']+_0x9595('0x54');}_0x481d7a[_0x9595('0x1e')](_0x1bdc4a);return _0x481d7a[_0x9595('0x27')](new Buffer(_0x5088be[_0x9595('0x4d')]));}})[_0x9595('0x45')](handleError(_0x481d7a,null));};
\ No newline at end of file
+var _0xeca0=['.wav\x22','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','sox','ejs','fs-extra','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','status','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','then','destroy','end','stack','name','send','map','rawAttributes','fieldName','type','model','differenceBy','query','keys','filters','intersection','fields','attributes','hasOwnProperty','nolimit','sort','merge','where','VIRTUAL','filter','VoiceMailMessage','includeAll','findAll','rows','catch','params','length','include','find','create','body','update','download','recording','msg_id','Sequelize','ValidationError','audio/wav','attachment','Content-Disposition'];(function(_0x7e1021,_0x4555a4){var _0x3f60ea=function(_0x3d5df7){while(--_0x3d5df7){_0x7e1021['push'](_0x7e1021['shift']());}};_0x3f60ea(++_0x4555a4);}(_0xeca0,0xfa));var _0x0eca=function(_0x45e98e,_0x169b60){_0x45e98e=_0x45e98e-0x0;var _0x374dba=_0xeca0[_0x45e98e];return _0x374dba;};'use strict';var emlformat=require(_0x0eca('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x0eca('0x1'));var jsonpatch=require(_0x0eca('0x2'));var rp=require(_0x0eca('0x3'));var moment=require(_0x0eca('0x4'));var BPromise=require(_0x0eca('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0x0eca('0x6'));var sox=require(_0x0eca('0x7'));var csv=require('to-csv');var ejs=require(_0x0eca('0x8'));var fs=require('fs');var fs_extra=require(_0x0eca('0x9'));var _=require('lodash');var squel=require(_0x0eca('0xa'));var crypto=require(_0x0eca('0xb'));var jsforce=require(_0x0eca('0xc'));var deskjs=require(_0x0eca('0xd'));var toCsv=require(_0x0eca('0xe'));var querystring=require(_0x0eca('0xf'));var Papa=require(_0x0eca('0x10'));var Redis=require(_0x0eca('0x11'));var authService=require(_0x0eca('0x12'));var qs=require(_0x0eca('0x13'));var as=require(_0x0eca('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x0eca('0x15'))(_0x0eca('0x16'));var utils=require('../../config/utils');var config=require(_0x0eca('0x17'));var licenseUtil=require(_0x0eca('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1ddbde,_0x4706d1){_0x4706d1=_0x4706d1||0xcc;return function(_0x5c00bf){if(_0x5c00bf){return _0x1ddbde[_0x0eca('0x19')](_0x4706d1);}return _0x1ddbde['status'](_0x4706d1)['end']();};}function respondWithResult(_0x123ecc,_0x54d5e0){_0x54d5e0=_0x54d5e0||0xc8;return function(_0x28be9e){if(_0x28be9e){return _0x123ecc[_0x0eca('0x1a')](_0x54d5e0)[_0x0eca('0x1b')](_0x28be9e);}};}function respondWithFilteredResult(_0x34756c,_0x19b0ba){return function(_0x3bdeb9){if(_0x3bdeb9){var _0x21a8bb=typeof _0x19b0ba['offset']===_0x0eca('0x1c')&&typeof _0x19b0ba[_0x0eca('0x1d')]===_0x0eca('0x1c');var _0x4e3ccc=_0x3bdeb9[_0x0eca('0x1e')];var _0x59247c=_0x21a8bb?0x0:_0x19b0ba[_0x0eca('0x1f')];var _0x38e58c=_0x21a8bb?_0x3bdeb9[_0x0eca('0x1e')]:_0x19b0ba['offset']+_0x19b0ba[_0x0eca('0x1d')];var _0x2d7779;if(_0x38e58c>=_0x4e3ccc){_0x38e58c=_0x4e3ccc;_0x2d7779=0xc8;}else{_0x2d7779=0xce;}_0x34756c[_0x0eca('0x1a')](_0x2d7779);return _0x34756c[_0x0eca('0x20')](_0x0eca('0x21'),_0x59247c+'-'+_0x38e58c+'/'+_0x4e3ccc)[_0x0eca('0x1b')](_0x3bdeb9);}return null;};}function patchUpdates(_0x9c68cc){return function(_0x3c9aba){try{jsonpatch[_0x0eca('0x22')](_0x3c9aba,_0x9c68cc,!![]);}catch(_0x2adde9){return BPromise[_0x0eca('0x23')](_0x2adde9);}return _0x3c9aba[_0x0eca('0x24')]();};}function saveUpdates(_0x3f91d5,_0x303fe6){return function(_0x5b3ac4){if(_0x5b3ac4){return _0x5b3ac4['update'](_0x3f91d5)[_0x0eca('0x25')](function(_0x380d23){return _0x380d23;});}return null;};}function removeEntity(_0x49ada7,_0x15ac0f){return function(_0x3699a1){if(_0x3699a1){return _0x3699a1[_0x0eca('0x26')]()[_0x0eca('0x25')](function(){_0x49ada7[_0x0eca('0x1a')](0xcc)[_0x0eca('0x27')]();});}};}function handleEntityNotFound(_0x16e7b9,_0x30c163){return function(_0x15a494){if(!_0x15a494){_0x16e7b9[_0x0eca('0x19')](0x194);}return _0x15a494;};}function handleError(_0x51b662,_0x2cbb23){_0x2cbb23=_0x2cbb23||0x1f4;return function(_0x4ce24f){logger['error'](_0x4ce24f[_0x0eca('0x28')]);if(_0x4ce24f[_0x0eca('0x29')]){delete _0x4ce24f['name'];}_0x51b662['status'](_0x2cbb23)[_0x0eca('0x2a')](_0x4ce24f);};}exports['index']=function(_0x322964,_0x241110){var _0x580992={},_0x4523f5={},_0x208a33={'count':0x0,'rows':[]};var _0x3b17eb=_[_0x0eca('0x2b')](db['VoiceMailMessage'][_0x0eca('0x2c')],function(_0x1d8cfb){return{'name':_0x1d8cfb[_0x0eca('0x2d')],'type':_0x1d8cfb[_0x0eca('0x2e')]['key']};});_0x4523f5[_0x0eca('0x2f')]=_[_0x0eca('0x30')](_[_0x0eca('0x2b')](_0x3b17eb,'name'),[_0x0eca('0x29')]);_0x4523f5[_0x0eca('0x31')]=_[_0x0eca('0x32')](_0x322964['query']);_0x4523f5[_0x0eca('0x33')]=_[_0x0eca('0x34')](_0x4523f5[_0x0eca('0x2f')],_0x4523f5[_0x0eca('0x31')]);_0x580992['attributes']=_[_0x0eca('0x34')](_0x4523f5[_0x0eca('0x2f')],qs[_0x0eca('0x35')](_0x322964[_0x0eca('0x31')]['fields']));_0x580992['attributes']=_0x580992[_0x0eca('0x36')]['length']?_0x580992[_0x0eca('0x36')]:_0x4523f5[_0x0eca('0x2f')];if(!_0x322964[_0x0eca('0x31')][_0x0eca('0x37')](_0x0eca('0x38'))){_0x580992[_0x0eca('0x1d')]=qs['limit'](_0x322964[_0x0eca('0x31')]['limit']);_0x580992[_0x0eca('0x1f')]=qs[_0x0eca('0x1f')](_0x322964[_0x0eca('0x31')][_0x0eca('0x1f')]);}_0x580992['order']=qs['sort'](_0x322964[_0x0eca('0x31')][_0x0eca('0x39')]);_0x580992['where']=qs[_0x0eca('0x33')](_['pick'](_0x322964[_0x0eca('0x31')],_0x4523f5['filters']),_0x3b17eb);if(_0x322964['query']['filter']){_0x580992['where']=_[_0x0eca('0x3a')](_0x580992[_0x0eca('0x3b')],{'$or':_[_0x0eca('0x2b')](_0x3b17eb,function(_0x3f0a87){if(_0x3f0a87[_0x0eca('0x2e')]!==_0x0eca('0x3c')){var _0x510478={};_0x510478[_0x3f0a87[_0x0eca('0x29')]]={'$like':'%'+_0x322964[_0x0eca('0x31')][_0x0eca('0x3d')]+'%'};return _0x510478;}})});}_0x580992=_['merge']({},_0x580992,_0x322964['options']);var _0x23d1f4={'where':_0x580992['where']};return db[_0x0eca('0x3e')]['count'](_0x23d1f4)[_0x0eca('0x25')](function(_0x1cb77c){_0x208a33[_0x0eca('0x1e')]=_0x1cb77c;if(_0x322964[_0x0eca('0x31')][_0x0eca('0x3f')]){_0x580992['include']=[{'all':!![]}];}return db[_0x0eca('0x3e')][_0x0eca('0x40')](_0x580992);})['then'](function(_0x31c7cf){_0x208a33[_0x0eca('0x41')]=_0x31c7cf;return _0x208a33;})['then'](respondWithFilteredResult(_0x241110,_0x580992))[_0x0eca('0x42')](handleError(_0x241110,null));};exports['show']=function(_0x2f1754,_0x82fc61){var _0x16f002={'raw':!![],'where':{'id':_0x2f1754[_0x0eca('0x43')]['id']}},_0x50b835={};_0x50b835[_0x0eca('0x2f')]=_[_0x0eca('0x32')](db[_0x0eca('0x3e')][_0x0eca('0x2c')]);_0x50b835[_0x0eca('0x31')]=_['keys'](_0x2f1754[_0x0eca('0x31')]);_0x50b835[_0x0eca('0x33')]=_[_0x0eca('0x34')](_0x50b835['model'],_0x50b835[_0x0eca('0x31')]);_0x16f002['attributes']=_[_0x0eca('0x34')](_0x50b835[_0x0eca('0x2f')],qs['fields'](_0x2f1754['query'][_0x0eca('0x35')]));_0x16f002[_0x0eca('0x36')]=_0x16f002[_0x0eca('0x36')][_0x0eca('0x44')]?_0x16f002['attributes']:_0x50b835[_0x0eca('0x2f')];if(_0x2f1754[_0x0eca('0x31')]['includeAll']){_0x16f002[_0x0eca('0x45')]=[{'all':!![]}];}_0x16f002=_[_0x0eca('0x3a')]({},_0x16f002,_0x2f1754['options']);return db[_0x0eca('0x3e')][_0x0eca('0x46')](_0x16f002)[_0x0eca('0x25')](handleEntityNotFound(_0x82fc61,null))[_0x0eca('0x25')](respondWithResult(_0x82fc61,null))[_0x0eca('0x42')](handleError(_0x82fc61,null));};exports[_0x0eca('0x47')]=function(_0x209a4f,_0x3067a9){return db[_0x0eca('0x3e')][_0x0eca('0x47')](_0x209a4f[_0x0eca('0x48')],{})['then'](respondWithResult(_0x3067a9,0xc9))[_0x0eca('0x42')](handleError(_0x3067a9,null));};exports[_0x0eca('0x49')]=function(_0x3019c9,_0x440316){if(_0x3019c9[_0x0eca('0x48')]['id']){delete _0x3019c9[_0x0eca('0x48')]['id'];}return db['VoiceMailMessage'][_0x0eca('0x46')]({'where':{'id':_0x3019c9[_0x0eca('0x43')]['id']}})['then'](handleEntityNotFound(_0x440316,null))[_0x0eca('0x25')](saveUpdates(_0x3019c9[_0x0eca('0x48')],null))[_0x0eca('0x25')](respondWithResult(_0x440316,null))[_0x0eca('0x42')](handleError(_0x440316,null));};exports['destroy']=function(_0x2742aa,_0x14c152){return db[_0x0eca('0x3e')]['find']({'where':{'id':_0x2742aa[_0x0eca('0x43')]['id']}})[_0x0eca('0x25')](handleEntityNotFound(_0x14c152,null))[_0x0eca('0x25')](removeEntity(_0x14c152,null))[_0x0eca('0x42')](handleError(_0x14c152,null));};exports[_0x0eca('0x4a')]=function(_0x23141b,_0xf92c84,_0x435706){return db[_0x0eca('0x3e')][_0x0eca('0x46')]({'where':{'id':_0x23141b['params']['id']},'attributes':['id',_0x0eca('0x4b'),_0x0eca('0x4c')]})['then'](handleEntityNotFound(_0xf92c84,null))['then'](function(_0x593e89){if(_0x593e89){if(!_0x593e89[_0x0eca('0x4b')]){throw new db[(_0x0eca('0x4d'))][(_0x0eca('0x4e'))]('VoiceMailMessage\x20not\x20found');}var _0x5013a0={'Content-Type':_0x0eca('0x4f'),'Content-Disposition':_0x0eca('0x50')};if(_0x593e89[_0x0eca('0x4c')]){_0x5013a0[_0x0eca('0x51')]='attachment;\x20filename=\x22'+_0x593e89[_0x0eca('0x4c')]+_0x0eca('0x52');}_0xf92c84[_0x0eca('0x20')](_0x5013a0);return _0xf92c84[_0x0eca('0x2a')](new Buffer(_0x593e89['recording']));}})[_0x0eca('0x42')](handleError(_0xf92c84,null));};
\ No newline at end of file
index 81e91ae..9f07b76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbab1=['../../config/environment','./voiceMailMessage.attributes','exports','define','VoiceMailMessage','voice_voicemail_messages','dir','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x24a96c,_0x3e5044){var _0x56e45b=function(_0x40eb40){while(--_0x40eb40){_0x24a96c['push'](_0x24a96c['shift']());}};_0x56e45b(++_0x3e5044);}(_0xbab1,0xf7));var _0x1bab=function(_0x1d664a,_0x149a34){_0x1d664a=_0x1d664a-0x0;var _0x335345=_0xbab1[_0x1d664a];return _0x335345;};'use strict';var _=require(_0x1bab('0x0'));var util=require(_0x1bab('0x1'));var logger=require(_0x1bab('0x2'))(_0x1bab('0x3'));var moment=require(_0x1bab('0x4'));var BPromise=require(_0x1bab('0x5'));var rp=require(_0x1bab('0x6'));var fs=require('fs');var path=require(_0x1bab('0x7'));var rimraf=require(_0x1bab('0x8'));var config=require(_0x1bab('0x9'));var attributes=require(_0x1bab('0xa'));module[_0x1bab('0xb')]=function(_0x5be941,_0x401b79){return _0x5be941[_0x1bab('0xc')](_0x1bab('0xd'),attributes,{'tableName':_0x1bab('0xe'),'paranoid':![],'indexes':[{'name':_0x1bab('0xf'),'fields':[_0x1bab('0xf')]}],'timestamps':![]});};
\ No newline at end of file
+var _0xe0d2=['../../config/environment','./voiceMailMessage.attributes','define','VoiceMailMessage','dir','lodash','util','../../config/logger','moment','bluebird','request-promise','path'];(function(_0xc63073,_0x1cea75){var _0x24f818=function(_0x5d1a61){while(--_0x5d1a61){_0xc63073['push'](_0xc63073['shift']());}};_0x24f818(++_0x1cea75);}(_0xe0d2,0x161));var _0x2e0d=function(_0x218c91,_0x3a16b7){_0x218c91=_0x218c91-0x0;var _0x59a4fb=_0xe0d2[_0x218c91];return _0x59a4fb;};'use strict';var _=require(_0x2e0d('0x0'));var util=require(_0x2e0d('0x1'));var logger=require(_0x2e0d('0x2'))('api');var moment=require(_0x2e0d('0x3'));var BPromise=require(_0x2e0d('0x4'));var rp=require(_0x2e0d('0x5'));var fs=require('fs');var path=require(_0x2e0d('0x6'));var rimraf=require('rimraf');var config=require(_0x2e0d('0x7'));var attributes=require(_0x2e0d('0x8'));module['exports']=function(_0x6780e6,_0x875314){return _0x6780e6[_0x2e0d('0x9')](_0x2e0d('0xa'),attributes,{'tableName':'voice_voicemail_messages','paranoid':![],'indexes':[{'name':_0x2e0d('0xb'),'fields':[_0x2e0d('0xb')]}],'timestamps':![]});};
\ No newline at end of file
index 4bd3909..23d0171 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcdee=['debug','VoiceMailMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','then','VoiceMailMessage,\x20%s,\x20%s','request\x20sent'];(function(_0x17a0a0,_0x1befaa){var _0x4da752=function(_0x429829){while(--_0x429829){_0x17a0a0['push'](_0x17a0a0['shift']());}};_0x4da752(++_0x1befaa);}(_0xcdee,0xfb));var _0xecde=function(_0x3f10af,_0x573514){_0x3f10af=_0x3f10af-0x0;var _0x2e73bf=_0xcdee[_0x3f10af];return _0x2e73bf;};'use strict';var _=require('lodash');var util=require(_0xecde('0x0'));var moment=require(_0xecde('0x1'));var BPromise=require(_0xecde('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xecde('0x3'));var db=require(_0xecde('0x4'))['db'];var utils=require(_0xecde('0x5'));var logger=require(_0xecde('0x6'))('rpc');var config=require(_0xecde('0x7'));var jayson=require(_0xecde('0x8'));var client=jayson['client'][_0xecde('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x30dba9,_0x197bde,_0x2db781){return new BPromise(function(_0x2a5219,_0xe65c26){return client['request'](_0x30dba9,_0x2db781)[_0xecde('0xa')](function(_0x5b5975){logger['info'](_0xecde('0xb'),_0x197bde,_0xecde('0xc'));logger[_0xecde('0xd')](_0xecde('0xe'),_0x197bde,_0xecde('0xc'),JSON[_0xecde('0xf')](_0x5b5975));if(_0x5b5975['error']){if(_0x5b5975[_0xecde('0x10')][_0xecde('0x11')]===0x1f4){logger[_0xecde('0x10')](_0xecde('0xb'),_0x197bde,_0x5b5975[_0xecde('0x10')][_0xecde('0x12')]);return _0xe65c26(_0x5b5975[_0xecde('0x10')][_0xecde('0x12')]);}logger[_0xecde('0x10')]('VoiceMailMessage,\x20%s,\x20%s',_0x197bde,_0x5b5975['error']['message']);return _0x2a5219(_0x5b5975['error'][_0xecde('0x12')]);}else{logger[_0xecde('0x13')](_0xecde('0xb'),_0x197bde,_0xecde('0xc'));_0x2a5219(_0x5b5975[_0xecde('0x14')][_0xecde('0x12')]);}})[_0xecde('0x15')](function(_0x69aa23){logger[_0xecde('0x10')](_0xecde('0xb'),_0x197bde,_0x69aa23);_0xe65c26(_0x69aa23);});});}
\ No newline at end of file
+var _0xaac2=['code','message','info','result','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','VoiceMailMessage,\x20%s,\x20%s','request\x20sent','debug','VoiceMailMessage,\x20%s,\x20%s,\x20%s','error'];(function(_0x550d12,_0x5384bd){var _0x12103d=function(_0x2a9834){while(--_0x2a9834){_0x550d12['push'](_0x550d12['shift']());}};_0x12103d(++_0x5384bd);}(_0xaac2,0x10c));var _0x2aac=function(_0x9748f9,_0x2861dd){_0x9748f9=_0x9748f9-0x0;var _0x5ec6c0=_0xaac2[_0x9748f9];return _0x5ec6c0;};'use strict';var _=require(_0x2aac('0x0'));var util=require(_0x2aac('0x1'));var moment=require('moment');var BPromise=require(_0x2aac('0x2'));var rs=require(_0x2aac('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2aac('0x4'))['db'];var utils=require(_0x2aac('0x5'));var logger=require(_0x2aac('0x6'))(_0x2aac('0x7'));var config=require(_0x2aac('0x8'));var jayson=require(_0x2aac('0x9'));var client=jayson[_0x2aac('0xa')][_0x2aac('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x9eb50f,_0x154e21,_0x5f109f){return new BPromise(function(_0x5c7571,_0x5a9e3b){return client[_0x2aac('0xc')](_0x9eb50f,_0x5f109f)['then'](function(_0x6888b3){logger['info'](_0x2aac('0xd'),_0x154e21,_0x2aac('0xe'));logger[_0x2aac('0xf')](_0x2aac('0x10'),_0x154e21,_0x2aac('0xe'),JSON['stringify'](_0x6888b3));if(_0x6888b3['error']){if(_0x6888b3[_0x2aac('0x11')][_0x2aac('0x12')]===0x1f4){logger[_0x2aac('0x11')](_0x2aac('0xd'),_0x154e21,_0x6888b3[_0x2aac('0x11')][_0x2aac('0x13')]);return _0x5a9e3b(_0x6888b3[_0x2aac('0x11')][_0x2aac('0x13')]);}logger['error'](_0x2aac('0xd'),_0x154e21,_0x6888b3['error'][_0x2aac('0x13')]);return _0x5c7571(_0x6888b3['error'][_0x2aac('0x13')]);}else{logger[_0x2aac('0x14')]('VoiceMailMessage,\x20%s,\x20%s',_0x154e21,_0x2aac('0xe'));_0x5c7571(_0x6888b3[_0x2aac('0x15')][_0x2aac('0x13')]);}})['catch'](function(_0x362b75){logger[_0x2aac('0x11')](_0x2aac('0xd'),_0x154e21,_0x362b75);_0x5a9e3b(_0x362b75);});});}
\ No newline at end of file
index 31926ca..b27a79f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x802f=['addSound','put','/:id','update','destroy','delete','removeSound','multer','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceMusicOnHold.controller','get','index','show','/:id/sounds','getSounds','create','isAuthenticated'];(function(_0xe750e1,_0x215aea){var _0x4fce9f=function(_0x4f296b){while(--_0x4f296b){_0xe750e1['push'](_0xe750e1['shift']());}};_0x4fce9f(++_0x215aea);}(_0x802f,0xbf));var _0xf802=function(_0x3103a2,_0x1df848){_0x3103a2=_0x3103a2-0x0;var _0x3b5871=_0x802f[_0x3103a2];return _0x3b5871;};'use strict';var multer=require(_0xf802('0x0'));var util=require('util');var path=require(_0xf802('0x1'));var timeout=require(_0xf802('0x2'));var express=require(_0xf802('0x3'));var router=express[_0xf802('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xf802('0x5'));var interaction=require(_0xf802('0x6'));var config=require(_0xf802('0x7'));var controller=require(_0xf802('0x8'));router[_0xf802('0x9')]('/',auth['isAuthenticated'](),controller[_0xf802('0xa')]);router[_0xf802('0x9')]('/:id',auth['isAuthenticated'](),controller[_0xf802('0xb')]);router[_0xf802('0x9')](_0xf802('0xc'),auth['isAuthenticated'](),controller[_0xf802('0xd')]);router['post']('/',auth['isAuthenticated'](),controller[_0xf802('0xe')]);router['post'](_0xf802('0xc'),auth[_0xf802('0xf')](),controller[_0xf802('0x10')]);router[_0xf802('0x11')](_0xf802('0x12'),auth[_0xf802('0xf')](),controller[_0xf802('0x13')]);router['delete'](_0xf802('0x12'),auth[_0xf802('0xf')](),controller[_0xf802('0x14')]);router[_0xf802('0x15')]('/:id/sounds/:id2',auth[_0xf802('0xf')](),controller[_0xf802('0x16')]);module['exports']=router;
\ No newline at end of file
+var _0x936f=['index','create','addSound','put','/:id','update','destroy','delete','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated'];(function(_0x447bc9,_0xea82f){var _0x40add1=function(_0x50a3fb){while(--_0x50a3fb){_0x447bc9['push'](_0x447bc9['shift']());}};_0x40add1(++_0xea82f);}(_0x936f,0x15f));var _0xf936=function(_0x46d1e2,_0x15de62){_0x46d1e2=_0x46d1e2-0x0;var _0x22311e=_0x936f[_0x46d1e2];return _0x22311e;};'use strict';var multer=require(_0xf936('0x0'));var util=require('util');var path=require(_0xf936('0x1'));var timeout=require(_0xf936('0x2'));var express=require(_0xf936('0x3'));var router=express[_0xf936('0x4')]();var fs_extra=require(_0xf936('0x5'));var auth=require(_0xf936('0x6'));var interaction=require(_0xf936('0x7'));var config=require('../../config/environment');var controller=require('./voiceMusicOnHold.controller');router[_0xf936('0x8')]('/',auth[_0xf936('0x9')](),controller[_0xf936('0xa')]);router[_0xf936('0x8')]('/:id',auth[_0xf936('0x9')](),controller['show']);router[_0xf936('0x8')]('/:id/sounds',auth[_0xf936('0x9')](),controller['getSounds']);router['post']('/',auth[_0xf936('0x9')](),controller[_0xf936('0xb')]);router['post']('/:id/sounds',auth['isAuthenticated'](),controller[_0xf936('0xc')]);router[_0xf936('0xd')](_0xf936('0xe'),auth['isAuthenticated'](),controller[_0xf936('0xf')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0xf936('0x10')]);router[_0xf936('0x11')]('/:id/sounds/:id2',auth[_0xf936('0x9')](),controller['removeSound']);module[_0xf936('0x12')]=router;
\ No newline at end of file
index 6318f75..3942007 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3827=['sequelize','exports','STRING','name','ENUM','files','mp3nb','quietmp3nb','quietmp3','mp3','alpha','BOOLEAN'];(function(_0x5ce3c8,_0x2503bd){var _0xa76867=function(_0x52815e){while(--_0x52815e){_0x5ce3c8['push'](_0x5ce3c8['shift']());}};_0xa76867(++_0x2503bd);}(_0x3827,0x84));var _0x7382=function(_0x29d915,_0x54a040){_0x29d915=_0x29d915-0x0;var _0x160f86=_0x3827[_0x29d915];return _0x160f86;};'use strict';var Sequelize=require(_0x7382('0x0'));module[_0x7382('0x1')]={'name':{'type':Sequelize[_0x7382('0x2')],'allowNull':![],'unique':_0x7382('0x3')},'mode':{'type':Sequelize[_0x7382('0x4')]('custom',_0x7382('0x5'),_0x7382('0x6'),_0x7382('0x7'),_0x7382('0x8'),_0x7382('0x9')),'allowNull':!![],'defaultValue':_0x7382('0x5')},'directory':{'type':Sequelize[_0x7382('0x2')],'allowNull':!![]},'application':{'type':Sequelize[_0x7382('0x2')],'allowNull':!![]},'digit':{'type':Sequelize[_0x7382('0x2')],'allowNull':!![]},'sort':{'type':Sequelize[_0x7382('0x2')],'allowNull':!![],'defaultValue':_0x7382('0xa')},'format':{'type':Sequelize['STRING'],'allowNull':!![]},'stamp':{'type':'TIMESTAMP'},'defaultEntry':{'type':Sequelize[_0x7382('0xb')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xc15e=['quietmp3nb','quietmp3','mp3','alpha','BOOLEAN','STRING','custom','files','mp3nb'];(function(_0x3481c7,_0x2de1df){var _0x2a7ddd=function(_0x44f73d){while(--_0x44f73d){_0x3481c7['push'](_0x3481c7['shift']());}};_0x2a7ddd(++_0x2de1df);}(_0xc15e,0x191));var _0xec15=function(_0x4772d6,_0x2e24ed){_0x4772d6=_0x4772d6-0x0;var _0x175931=_0xc15e[_0x4772d6];return _0x175931;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0xec15('0x0')],'allowNull':![],'unique':'name'},'mode':{'type':Sequelize['ENUM'](_0xec15('0x1'),_0xec15('0x2'),_0xec15('0x3'),_0xec15('0x4'),_0xec15('0x5'),_0xec15('0x6')),'allowNull':!![],'defaultValue':_0xec15('0x2')},'directory':{'type':Sequelize[_0xec15('0x0')],'allowNull':!![]},'application':{'type':Sequelize[_0xec15('0x0')],'allowNull':!![]},'digit':{'type':Sequelize['STRING'],'allowNull':!![]},'sort':{'type':Sequelize[_0xec15('0x0')],'allowNull':!![],'defaultValue':_0xec15('0x7')},'format':{'type':Sequelize[_0xec15('0x0')],'allowNull':!![]},'stamp':{'type':'TIMESTAMP'},'defaultEntry':{'type':Sequelize[_0xec15('0x8')],'defaultValue':0x0}};
\ No newline at end of file
index 70ffd92..6f72c79 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x74c3=['sequelize','transaction','files','directory','root','server/files/moh','0777','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','autoAssociation','UserProfileResource','error','unlinkSync','rmdirSync','ValidationError','message','addSound','Sound','findOne','save_name','converted_format','server/files/sounds/converted','format','%s.%s','join','symlinkSync','Sequelize','removeSound','id2','getSounds','nolimit','rimraf','zip-dir','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','update','then','destroy','get','MusicOnHolds','end','stack','name','send','index','map','VoiceMusicOnHold','rawAttributes','fieldName','type','key','query','keys','intersection','model','fields','attributes','length','hasOwnProperty','order','sort','filters','pick','filter','merge','VIRTUAL','where','include','rows','catch','show','params','includeAll','options','body','find','create'];(function(_0x53a460,_0x52b475){var _0x5dcf76=function(_0x1dfb97){while(--_0x1dfb97){_0x53a460['push'](_0x53a460['shift']());}};_0x5dcf76(++_0x52b475);}(_0x74c3,0xf4));var _0x374c=function(_0xe35d6,_0x1c1484){_0xe35d6=_0xe35d6-0x0;var _0x3ae807=_0x74c3[_0xe35d6];return _0x3ae807;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x374c('0x0'));var zipdir=require(_0x374c('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x374c('0x2'));var Mustache=require(_0x374c('0x3'));var util=require('util');var path=require(_0x374c('0x4'));var sox=require(_0x374c('0x5'));var csv=require(_0x374c('0x6'));var ejs=require(_0x374c('0x7'));var fs=require('fs');var fs_extra=require(_0x374c('0x8'));var _=require('lodash');var squel=require(_0x374c('0x9'));var crypto=require(_0x374c('0xa'));var jsforce=require(_0x374c('0xb'));var deskjs=require(_0x374c('0xc'));var toCsv=require(_0x374c('0x6'));var querystring=require('querystring');var Papa=require(_0x374c('0xd'));var Redis=require(_0x374c('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x374c('0xf'));var as=require(_0x374c('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x374c('0x11'));var utils=require(_0x374c('0x12'));var config=require(_0x374c('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x374c('0x14'))['db'];function respondWithStatusCode(_0x4a96cd,_0x827017){_0x827017=_0x827017||0xcc;return function(_0x1e1dec){if(_0x1e1dec){return _0x4a96cd[_0x374c('0x15')](_0x827017);}return _0x4a96cd[_0x374c('0x16')](_0x827017)['end']();};}function respondWithResult(_0xe25c05,_0x9a41e0){_0x9a41e0=_0x9a41e0||0xc8;return function(_0x3273b9){if(_0x3273b9){return _0xe25c05['status'](_0x9a41e0)[_0x374c('0x17')](_0x3273b9);}};}function respondWithFilteredResult(_0x53cec2,_0x53674c){return function(_0x21692c){if(_0x21692c){var _0x320525=typeof _0x53674c[_0x374c('0x18')]===_0x374c('0x19')&&typeof _0x53674c['limit']==='undefined';var _0x2c6503=_0x21692c[_0x374c('0x1a')];var _0x26a9dd=_0x320525?0x0:_0x53674c[_0x374c('0x18')];var _0x2fb0f5=_0x320525?_0x21692c[_0x374c('0x1a')]:_0x53674c[_0x374c('0x18')]+_0x53674c[_0x374c('0x1b')];var _0x5ef31d;if(_0x2fb0f5>=_0x2c6503){_0x2fb0f5=_0x2c6503;_0x5ef31d=0xc8;}else{_0x5ef31d=0xce;}_0x53cec2[_0x374c('0x16')](_0x5ef31d);return _0x53cec2[_0x374c('0x1c')](_0x374c('0x1d'),_0x26a9dd+'-'+_0x2fb0f5+'/'+_0x2c6503)['json'](_0x21692c);}return null;};}function patchUpdates(_0x2fb335){return function(_0x4e9775){try{jsonpatch[_0x374c('0x1e')](_0x4e9775,_0x2fb335,!![]);}catch(_0x1b13ac){return BPromise[_0x374c('0x1f')](_0x1b13ac);}return _0x4e9775['save']();};}function saveUpdates(_0x11a892,_0x1aa84e){return function(_0x534f11){if(_0x534f11){return _0x534f11[_0x374c('0x20')](_0x11a892)[_0x374c('0x21')](function(_0x288663){return _0x288663;});}return null;};}function removeEntity(_0x203427,_0xcebb65){return function(_0x5e9932){if(_0x5e9932){return _0x5e9932[_0x374c('0x22')]()[_0x374c('0x21')](function(){var _0x559b49=_0x5e9932[_0x374c('0x23')]({'plain':!![]});var _0x4efda8=_0x374c('0x24');return db['UserProfileResource']['destroy']({'where':{'type':_0x4efda8,'resourceId':_0x559b49['id']}})['then'](function(){return _0x5e9932;});})[_0x374c('0x21')](function(){_0x203427[_0x374c('0x16')](0xcc)[_0x374c('0x25')]();});}};}function handleEntityNotFound(_0x51ea91,_0x959635){return function(_0x4b442a){if(!_0x4b442a){_0x51ea91['sendStatus'](0x194);}return _0x4b442a;};}function handleError(_0x1ed3f8,_0xe4fbe4){_0xe4fbe4=_0xe4fbe4||0x1f4;return function(_0x572702){logger['error'](_0x572702[_0x374c('0x26')]);if(_0x572702[_0x374c('0x27')]){delete _0x572702[_0x374c('0x27')];}_0x1ed3f8[_0x374c('0x16')](_0xe4fbe4)[_0x374c('0x28')](_0x572702);};}exports[_0x374c('0x29')]=function(_0x54c26d,_0x29a071){var _0x2bc846={},_0x436ef6={},_0x564ad0={'count':0x0,'rows':[]};var _0x129c2f=_[_0x374c('0x2a')](db[_0x374c('0x2b')][_0x374c('0x2c')],function(_0x12f0d0){return{'name':_0x12f0d0[_0x374c('0x2d')],'type':_0x12f0d0[_0x374c('0x2e')][_0x374c('0x2f')]};});_0x436ef6['model']=_[_0x374c('0x2a')](_0x129c2f,_0x374c('0x27'));_0x436ef6[_0x374c('0x30')]=_[_0x374c('0x31')](_0x54c26d[_0x374c('0x30')]);_0x436ef6['filters']=_[_0x374c('0x32')](_0x436ef6[_0x374c('0x33')],_0x436ef6[_0x374c('0x30')]);_0x2bc846['attributes']=_[_0x374c('0x32')](_0x436ef6[_0x374c('0x33')],qs[_0x374c('0x34')](_0x54c26d[_0x374c('0x30')][_0x374c('0x34')]));_0x2bc846['attributes']=_0x2bc846[_0x374c('0x35')][_0x374c('0x36')]?_0x2bc846[_0x374c('0x35')]:_0x436ef6[_0x374c('0x33')];if(!_0x54c26d[_0x374c('0x30')][_0x374c('0x37')]('nolimit')){_0x2bc846['limit']=qs[_0x374c('0x1b')](_0x54c26d[_0x374c('0x30')]['limit']);_0x2bc846[_0x374c('0x18')]=qs[_0x374c('0x18')](_0x54c26d[_0x374c('0x30')]['offset']);}_0x2bc846[_0x374c('0x38')]=qs[_0x374c('0x39')](_0x54c26d[_0x374c('0x30')]['sort']);delete _0x54c26d[_0x374c('0x30')][_0x374c('0x39')];_0x2bc846['where']=qs[_0x374c('0x3a')](_[_0x374c('0x3b')](_0x54c26d['query'],_0x436ef6[_0x374c('0x3a')]),_0x129c2f);if(_0x54c26d[_0x374c('0x30')][_0x374c('0x3c')]){_0x2bc846['where']=_[_0x374c('0x3d')](_0x2bc846['where'],{'$or':_[_0x374c('0x2a')](_0x129c2f,function(_0x1639e3){if(_0x1639e3[_0x374c('0x2e')]!==_0x374c('0x3e')){var _0x290d67={};_0x290d67[_0x1639e3[_0x374c('0x27')]]={'$like':'%'+_0x54c26d[_0x374c('0x30')][_0x374c('0x3c')]+'%'};return _0x290d67;}})});}_0x2bc846=_['merge']({},_0x2bc846,_0x54c26d['options']);var _0x4dd84a={'where':_0x2bc846[_0x374c('0x3f')]};return db[_0x374c('0x2b')][_0x374c('0x1a')](_0x4dd84a)[_0x374c('0x21')](function(_0x7acdb){_0x564ad0[_0x374c('0x1a')]=_0x7acdb;if(_0x54c26d[_0x374c('0x30')]['includeAll']){_0x2bc846[_0x374c('0x40')]=[{'all':!![]}];}return db[_0x374c('0x2b')]['findAll'](_0x2bc846);})[_0x374c('0x21')](function(_0xe7a53){_0x564ad0[_0x374c('0x41')]=_0xe7a53;return _0x564ad0;})[_0x374c('0x21')](respondWithFilteredResult(_0x29a071,_0x2bc846))[_0x374c('0x42')](handleError(_0x29a071,null));};exports[_0x374c('0x43')]=function(_0x14f6ac,_0x196963){var _0x53dc53={'raw':![],'where':{'id':_0x14f6ac[_0x374c('0x44')]['id']}},_0x56e5db={};_0x56e5db[_0x374c('0x33')]=_['keys'](db['VoiceMusicOnHold'][_0x374c('0x2c')]);_0x56e5db[_0x374c('0x30')]=_[_0x374c('0x31')](_0x14f6ac[_0x374c('0x30')]);_0x56e5db[_0x374c('0x3a')]=_['intersection'](_0x56e5db[_0x374c('0x33')],_0x56e5db['query']);_0x53dc53['attributes']=_[_0x374c('0x32')](_0x56e5db[_0x374c('0x33')],qs[_0x374c('0x34')](_0x14f6ac[_0x374c('0x30')][_0x374c('0x34')]));_0x53dc53[_0x374c('0x35')]=_0x53dc53[_0x374c('0x35')][_0x374c('0x36')]?_0x53dc53[_0x374c('0x35')]:_0x56e5db[_0x374c('0x33')];if(_0x14f6ac['query'][_0x374c('0x45')]){_0x53dc53[_0x374c('0x40')]=[{'all':!![]}];}_0x53dc53=_[_0x374c('0x3d')]({},_0x53dc53,_0x14f6ac[_0x374c('0x46')]);return db[_0x374c('0x2b')]['find'](_0x53dc53)['then'](handleEntityNotFound(_0x196963,null))['then'](respondWithResult(_0x196963,null))[_0x374c('0x42')](handleError(_0x196963,null));};exports[_0x374c('0x20')]=function(_0x42aad7,_0x4024a0){if(_0x42aad7['body']['id']){delete _0x42aad7[_0x374c('0x47')]['id'];}return db['VoiceMusicOnHold'][_0x374c('0x48')]({'where':{'id':_0x42aad7['params']['id']}})[_0x374c('0x21')](handleEntityNotFound(_0x4024a0,null))[_0x374c('0x21')](saveUpdates(_0x42aad7[_0x374c('0x47')],null))['then'](respondWithResult(_0x4024a0,null))[_0x374c('0x42')](handleError(_0x4024a0,null));};exports[_0x374c('0x49')]=function(_0x18b33e,_0x20ceaf,_0x3285e1){return db[_0x374c('0x4a')][_0x374c('0x4b')](function(_0x20e30f){if(_0x18b33e['body']['mode']===_0x374c('0x4c')){_0x18b33e[_0x374c('0x47')][_0x374c('0x4d')]=path['join'](config[_0x374c('0x4e')],_0x374c('0x4f'),_0x18b33e['body']['name']);}return db['VoiceMusicOnHold'][_0x374c('0x49')](_0x18b33e['body'],{'transaction':_0x20e30f})['then'](function(_0x491b11){if(_0x18b33e['body']['mode']===_0x374c('0x4c')){fs['mkdirSync'](_0x491b11['directory'],parseInt(_0x374c('0x50'),0x8));}var _0x29087b=_0x18b33e[_0x374c('0x51')][_0x374c('0x23')]({'plain':!![]});if(!_0x29087b)throw new Error(_0x374c('0x52'));if(_0x29087b[_0x374c('0x53')]===_0x374c('0x51')){var _0x33e8df=_0x491b11[_0x374c('0x23')]({'plain':!![]});return db['UserProfileSection'][_0x374c('0x48')]({'where':{'name':_0x374c('0x24'),'userProfileId':_0x29087b['userProfileId']},'raw':!![]})['then'](function(_0x51f6a9){if(_0x51f6a9&&_0x51f6a9[_0x374c('0x54')]===0x0){return db[_0x374c('0x55')][_0x374c('0x49')]({'name':_0x33e8df[_0x374c('0x27')],'resourceId':_0x33e8df['id'],'type':_0x51f6a9[_0x374c('0x27')],'sectionId':_0x51f6a9['id']},{})[_0x374c('0x21')](function(){return _0x491b11;});}else{return _0x491b11;}})['catch'](function(_0x288b64){logger[_0x374c('0x56')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x288b64);});}return _0x491b11;});})[_0x374c('0x21')](respondWithResult(_0x20ceaf,0xc9))[_0x374c('0x42')](handleError(_0x20ceaf,null));};exports['destroy']=function(_0x2bd709,_0x22659b,_0x3b621e){var _0x3d0ec6;return db[_0x374c('0x2b')]['find']({'where':{'id':_0x2bd709[_0x374c('0x44')]['id']}})['then'](function(_0x2938be){if(_0x2938be){return db['sequelize'][_0x374c('0x4b')](function(_0x37cdb0){return _0x2938be[_0x374c('0x22')]({'transaction':_0x37cdb0,'raw':!![]})[_0x374c('0x21')](function(_0x17a289){if(_0x17a289[_0x374c('0x4d')]){fs['readdirSync'](_0x17a289[_0x374c('0x4d')])['forEach'](function(_0x2aadc7){fs[_0x374c('0x57')](path['join'](_0x17a289['directory'],_0x2aadc7));});fs[_0x374c('0x58')](_0x17a289[_0x374c('0x4d')]);}return _0x17a289;});})[_0x374c('0x42')](function(_0x459a6b){throw new db['Sequelize'][(_0x374c('0x59'))](_0x459a6b[_0x374c('0x5a')]);});}})[_0x374c('0x21')](handleEntityNotFound(_0x22659b,null))['then'](removeEntity(_0x22659b,null))['catch'](handleError(_0x22659b,null));};exports[_0x374c('0x5b')]=function(_0x4cb13c,_0x2ae864,_0x2833a4){return db[_0x374c('0x4a')][_0x374c('0x4b')](function(_0x49c67c){var _0x5e6b7c;return db[_0x374c('0x2b')]['find']({'where':{'id':_0x4cb13c[_0x374c('0x44')]['id']}})[_0x374c('0x21')](function(_0x322588){if(_0x322588){_0x5e6b7c=_0x322588;return _0x322588[_0x374c('0x5b')](_0x4cb13c[_0x374c('0x47')]['id'],{'transaction':_0x49c67c});}})[_0x374c('0x21')](function(_0x2f35ba){if(_0x2f35ba){return db[_0x374c('0x5c')][_0x374c('0x5d')]({'where':{'id':_0x4cb13c[_0x374c('0x47')]['id']},'attributes':['id',_0x374c('0x27'),_0x374c('0x5e'),_0x374c('0x5f'),'createdAt'],'raw':!![]});}})[_0x374c('0x21')](function(_0x24b10a){if(_0x24b10a){var _0x3626d0=path['join'](config[_0x374c('0x4e')],_0x374c('0x60'),util[_0x374c('0x61')](_0x374c('0x62'),path['basename'](_0x24b10a['save_name'],path['extname'](_0x24b10a[_0x374c('0x5e')])),_0x24b10a[_0x374c('0x5f')]));var _0x2737e3=path[_0x374c('0x63')](config[_0x374c('0x4e')],_0x374c('0x4f'),_0x5e6b7c[_0x374c('0x27')],util['format'](_0x374c('0x62'),_0x24b10a[_0x374c('0x27')],_0x24b10a[_0x374c('0x5f')]));fs[_0x374c('0x64')](_0x3626d0,_0x2737e3);return _0x24b10a;}})[_0x374c('0x42')](function(_0x186f0f){throw new db[(_0x374c('0x65'))][(_0x374c('0x59'))](_0x186f0f[_0x374c('0x5a')]);});})[_0x374c('0x21')](handleEntityNotFound(_0x2ae864,null))[_0x374c('0x21')](respondWithResult(_0x2ae864,0xc9))[_0x374c('0x42')](handleError(_0x2ae864,null));};exports[_0x374c('0x66')]=function(_0x1847a9,_0x52e57c,_0x33ba38){return db[_0x374c('0x4a')]['transaction'](function(_0x477923){var _0x39597b;return db[_0x374c('0x2b')][_0x374c('0x5d')]({'where':{'id':_0x1847a9['params']['id']}})[_0x374c('0x21')](handleEntityNotFound(_0x52e57c,null))[_0x374c('0x21')](function(_0x54a9c8){if(_0x54a9c8){_0x39597b=_0x54a9c8;return _0x54a9c8['removeSound'](_0x1847a9[_0x374c('0x44')][_0x374c('0x67')]);}})['then'](function(_0x6ac1f9){if(_0x6ac1f9){return db[_0x374c('0x5c')]['findOne']({'where':{'id':_0x1847a9[_0x374c('0x44')][_0x374c('0x67')]},'attributes':['id',_0x374c('0x27'),_0x374c('0x5e'),_0x374c('0x5f'),'createdAt'],'raw':!![]});}})[_0x374c('0x21')](function(_0x5edf63){if(_0x5edf63){fs[_0x374c('0x57')](path[_0x374c('0x63')](_0x39597b['directory'],util[_0x374c('0x61')](_0x374c('0x62'),_0x5edf63[_0x374c('0x27')],_0x5edf63[_0x374c('0x5f')])));return _0x5edf63;}})[_0x374c('0x42')](function(_0x546919){throw new db['Sequelize'][(_0x374c('0x59'))](_0x546919[_0x374c('0x5a')]);});})[_0x374c('0x21')](handleEntityNotFound(_0x52e57c,null))[_0x374c('0x21')](respondWithStatusCode(_0x52e57c,0xcc))['catch'](handleError(_0x52e57c,null));};exports[_0x374c('0x68')]=function(_0x5cb20a,_0x218e5e,_0x384f3e){var _0x5d751f={};var _0x3f8382={};var _0x482532;var _0x2408e2;return db[_0x374c('0x2b')]['findOne']({'where':{'id':_0x5cb20a['params']['id']}})[_0x374c('0x21')](handleEntityNotFound(_0x218e5e,null))[_0x374c('0x21')](function(_0x482a5e){if(_0x482a5e){_0x482532=_0x482a5e;_0x3f8382[_0x374c('0x33')]=_[_0x374c('0x31')](db[_0x374c('0x5c')][_0x374c('0x2c')]);_0x3f8382[_0x374c('0x30')]=_[_0x374c('0x31')](_0x5cb20a[_0x374c('0x30')]);_0x3f8382[_0x374c('0x3a')]=_[_0x374c('0x32')](_0x3f8382['model'],_0x3f8382[_0x374c('0x30')]);_0x5d751f[_0x374c('0x35')]=_[_0x374c('0x32')](_0x3f8382[_0x374c('0x33')],qs[_0x374c('0x34')](_0x5cb20a['query']['fields']));_0x5d751f[_0x374c('0x35')]=_0x5d751f[_0x374c('0x35')][_0x374c('0x36')]?_0x5d751f[_0x374c('0x35')]:_0x3f8382[_0x374c('0x33')];_0x5d751f[_0x374c('0x38')]=qs[_0x374c('0x39')](_0x5cb20a['query']['sort']);_0x5d751f[_0x374c('0x3f')]=qs[_0x374c('0x3a')](_[_0x374c('0x3b')](_0x5cb20a[_0x374c('0x30')],_0x3f8382['filters']));if(_0x5cb20a[_0x374c('0x30')][_0x374c('0x3c')]){_0x5d751f['where']=_[_0x374c('0x3d')](_0x5d751f['where'],{'$or':_[_0x374c('0x2a')](_0x5d751f['attributes'],function(_0x5a34e1){var _0x3608f4={};_0x3608f4[_0x5a34e1]={'$like':'%'+_0x5cb20a['query']['filter']+'%'};return _0x3608f4;})});}_0x5d751f=_['merge']({},_0x5d751f,_0x5cb20a[_0x374c('0x46')]);return _0x482532['getSounds'](_0x5d751f);}})[_0x374c('0x21')](function(_0x5d6325){if(_0x5d6325){_0x2408e2=_0x5d6325[_0x374c('0x36')];if(!_0x5cb20a['query'][_0x374c('0x37')](_0x374c('0x69'))){_0x5d751f['limit']=qs[_0x374c('0x1b')](_0x5cb20a['query'][_0x374c('0x1b')]);_0x5d751f[_0x374c('0x18')]=qs[_0x374c('0x18')](_0x5cb20a[_0x374c('0x30')][_0x374c('0x18')]);}return _0x482532[_0x374c('0x68')](_0x5d751f);}})['then'](function(_0x2a39bf){if(_0x2a39bf){return _0x2a39bf?{'count':_0x2408e2,'rows':_0x2a39bf}:null;}})[_0x374c('0x21')](respondWithResult(_0x218e5e,null))['catch'](handleError(_0x218e5e,null));};
\ No newline at end of file
+var _0x21ce=['fast-json-patch','request-promise','mustache','sox','to-csv','fs-extra','lodash','squel','crypto','desk.js','querystring','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','then','get','UserProfileResource','error','name','send','index','map','VoiceMusicOnHold','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filters','pick','filter','where','VIRTUAL','options','includeAll','findAll','catch','show','params','include','merge','find','body','create','sequelize','transaction','mode','files','directory','join','root','server/files/moh','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','MusicOnHolds','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','forEach','unlinkSync','rmdirSync','Sequelize','ValidationError','message','addSound','Sound','converted_format','server/files/sounds/converted','format','save_name','extname','symlinkSync','removeSound','id2','findOne','getSounds','eml-format','rimraf','zip-dir'];(function(_0x596886,_0x2005a4){var _0x370d1d=function(_0xeddf84){while(--_0xeddf84){_0x596886['push'](_0x596886['shift']());}};_0x370d1d(++_0x2005a4);}(_0x21ce,0x68));var _0xe21c=function(_0x2e4aa2,_0x11956a){_0x2e4aa2=_0x2e4aa2-0x0;var _0x5e6092=_0x21ce[_0x2e4aa2];return _0x5e6092;};'use strict';var emlformat=require(_0xe21c('0x0'));var rimraf=require(_0xe21c('0x1'));var zipdir=require(_0xe21c('0x2'));var jsonpatch=require(_0xe21c('0x3'));var rp=require(_0xe21c('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xe21c('0x5'));var util=require('util');var path=require('path');var sox=require(_0xe21c('0x6'));var csv=require(_0xe21c('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe21c('0x8'));var _=require(_0xe21c('0x9'));var squel=require(_0xe21c('0xa'));var crypto=require(_0xe21c('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xe21c('0xc'));var toCsv=require(_0xe21c('0x7'));var querystring=require(_0xe21c('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xe21c('0xe'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xe21c('0xf'));var logger=require(_0xe21c('0x10'))(_0xe21c('0x11'));var utils=require(_0xe21c('0x12'));var config=require(_0xe21c('0x13'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x137b16,_0x505ec7){_0x505ec7=_0x505ec7||0xcc;return function(_0x159d40){if(_0x159d40){return _0x137b16[_0xe21c('0x14')](_0x505ec7);}return _0x137b16[_0xe21c('0x15')](_0x505ec7)[_0xe21c('0x16')]();};}function respondWithResult(_0x285cce,_0x5d5a9d){_0x5d5a9d=_0x5d5a9d||0xc8;return function(_0x480fd9){if(_0x480fd9){return _0x285cce[_0xe21c('0x15')](_0x5d5a9d)['json'](_0x480fd9);}};}function respondWithFilteredResult(_0x1e4b6f,_0x2aa61b){return function(_0x31cbb3){if(_0x31cbb3){var _0x27028e=typeof _0x2aa61b[_0xe21c('0x17')]===_0xe21c('0x18')&&typeof _0x2aa61b[_0xe21c('0x19')]===_0xe21c('0x18');var _0x317be5=_0x31cbb3['count'];var _0x36f513=_0x27028e?0x0:_0x2aa61b[_0xe21c('0x17')];var _0x35623f=_0x27028e?_0x31cbb3[_0xe21c('0x1a')]:_0x2aa61b[_0xe21c('0x17')]+_0x2aa61b[_0xe21c('0x19')];var _0x2db0af;if(_0x35623f>=_0x317be5){_0x35623f=_0x317be5;_0x2db0af=0xc8;}else{_0x2db0af=0xce;}_0x1e4b6f[_0xe21c('0x15')](_0x2db0af);return _0x1e4b6f[_0xe21c('0x1b')](_0xe21c('0x1c'),_0x36f513+'-'+_0x35623f+'/'+_0x317be5)['json'](_0x31cbb3);}return null;};}function patchUpdates(_0x35b23e){return function(_0x5d8fc7){try{jsonpatch[_0xe21c('0x1d')](_0x5d8fc7,_0x35b23e,!![]);}catch(_0x34d607){return BPromise[_0xe21c('0x1e')](_0x34d607);}return _0x5d8fc7[_0xe21c('0x1f')]();};}function saveUpdates(_0x50c544,_0xf735ba){return function(_0x4ff9c1){if(_0x4ff9c1){return _0x4ff9c1[_0xe21c('0x20')](_0x50c544)['then'](function(_0x4c1f3d){return _0x4c1f3d;});}return null;};}function removeEntity(_0x212504,_0x2e88a8){return function(_0x2f297c){if(_0x2f297c){return _0x2f297c[_0xe21c('0x21')]()[_0xe21c('0x22')](function(){var _0x441d2e=_0x2f297c[_0xe21c('0x23')]({'plain':!![]});var _0x807206='MusicOnHolds';return db[_0xe21c('0x24')][_0xe21c('0x21')]({'where':{'type':_0x807206,'resourceId':_0x441d2e['id']}})[_0xe21c('0x22')](function(){return _0x2f297c;});})['then'](function(){_0x212504[_0xe21c('0x15')](0xcc)[_0xe21c('0x16')]();});}};}function handleEntityNotFound(_0x1156c2,_0x27d200){return function(_0x32645e){if(!_0x32645e){_0x1156c2[_0xe21c('0x14')](0x194);}return _0x32645e;};}function handleError(_0x1fce01,_0x32ea27){_0x32ea27=_0x32ea27||0x1f4;return function(_0x22f0f8){logger[_0xe21c('0x25')](_0x22f0f8['stack']);if(_0x22f0f8[_0xe21c('0x26')]){delete _0x22f0f8[_0xe21c('0x26')];}_0x1fce01[_0xe21c('0x15')](_0x32ea27)[_0xe21c('0x27')](_0x22f0f8);};}exports[_0xe21c('0x28')]=function(_0xdef774,_0xac311d){var _0x3f7233={},_0x5d4618={},_0x361e3a={'count':0x0,'rows':[]};var _0x2ea1a0=_[_0xe21c('0x29')](db[_0xe21c('0x2a')][_0xe21c('0x2b')],function(_0x1cdc4e){return{'name':_0x1cdc4e[_0xe21c('0x2c')],'type':_0x1cdc4e[_0xe21c('0x2d')][_0xe21c('0x2e')]};});_0x5d4618[_0xe21c('0x2f')]=_['map'](_0x2ea1a0,_0xe21c('0x26'));_0x5d4618[_0xe21c('0x30')]=_[_0xe21c('0x31')](_0xdef774[_0xe21c('0x30')]);_0x5d4618['filters']=_[_0xe21c('0x32')](_0x5d4618[_0xe21c('0x2f')],_0x5d4618[_0xe21c('0x30')]);_0x3f7233[_0xe21c('0x33')]=_[_0xe21c('0x32')](_0x5d4618['model'],qs[_0xe21c('0x34')](_0xdef774[_0xe21c('0x30')][_0xe21c('0x34')]));_0x3f7233[_0xe21c('0x33')]=_0x3f7233['attributes'][_0xe21c('0x35')]?_0x3f7233[_0xe21c('0x33')]:_0x5d4618[_0xe21c('0x2f')];if(!_0xdef774[_0xe21c('0x30')][_0xe21c('0x36')](_0xe21c('0x37'))){_0x3f7233['limit']=qs['limit'](_0xdef774['query'][_0xe21c('0x19')]);_0x3f7233[_0xe21c('0x17')]=qs[_0xe21c('0x17')](_0xdef774['query'][_0xe21c('0x17')]);}_0x3f7233[_0xe21c('0x38')]=qs[_0xe21c('0x39')](_0xdef774[_0xe21c('0x30')][_0xe21c('0x39')]);delete _0xdef774[_0xe21c('0x30')][_0xe21c('0x39')];_0x3f7233['where']=qs[_0xe21c('0x3a')](_[_0xe21c('0x3b')](_0xdef774[_0xe21c('0x30')],_0x5d4618['filters']),_0x2ea1a0);if(_0xdef774[_0xe21c('0x30')][_0xe21c('0x3c')]){_0x3f7233['where']=_['merge'](_0x3f7233[_0xe21c('0x3d')],{'$or':_['map'](_0x2ea1a0,function(_0x4f61de){if(_0x4f61de['type']!==_0xe21c('0x3e')){var _0xd5a130={};_0xd5a130[_0x4f61de[_0xe21c('0x26')]]={'$like':'%'+_0xdef774[_0xe21c('0x30')][_0xe21c('0x3c')]+'%'};return _0xd5a130;}})});}_0x3f7233=_['merge']({},_0x3f7233,_0xdef774[_0xe21c('0x3f')]);var _0x3122da={'where':_0x3f7233[_0xe21c('0x3d')]};return db[_0xe21c('0x2a')]['count'](_0x3122da)[_0xe21c('0x22')](function(_0x49aab7){_0x361e3a['count']=_0x49aab7;if(_0xdef774[_0xe21c('0x30')][_0xe21c('0x40')]){_0x3f7233['include']=[{'all':!![]}];}return db['VoiceMusicOnHold'][_0xe21c('0x41')](_0x3f7233);})[_0xe21c('0x22')](function(_0x5c7625){_0x361e3a['rows']=_0x5c7625;return _0x361e3a;})[_0xe21c('0x22')](respondWithFilteredResult(_0xac311d,_0x3f7233))[_0xe21c('0x42')](handleError(_0xac311d,null));};exports[_0xe21c('0x43')]=function(_0x4527ad,_0x9ff242){var _0x4230dd={'raw':![],'where':{'id':_0x4527ad[_0xe21c('0x44')]['id']}},_0x4a1234={};_0x4a1234[_0xe21c('0x2f')]=_[_0xe21c('0x31')](db[_0xe21c('0x2a')]['rawAttributes']);_0x4a1234[_0xe21c('0x30')]=_[_0xe21c('0x31')](_0x4527ad[_0xe21c('0x30')]);_0x4a1234['filters']=_[_0xe21c('0x32')](_0x4a1234[_0xe21c('0x2f')],_0x4a1234[_0xe21c('0x30')]);_0x4230dd[_0xe21c('0x33')]=_[_0xe21c('0x32')](_0x4a1234[_0xe21c('0x2f')],qs['fields'](_0x4527ad[_0xe21c('0x30')][_0xe21c('0x34')]));_0x4230dd[_0xe21c('0x33')]=_0x4230dd[_0xe21c('0x33')]['length']?_0x4230dd['attributes']:_0x4a1234[_0xe21c('0x2f')];if(_0x4527ad[_0xe21c('0x30')][_0xe21c('0x40')]){_0x4230dd[_0xe21c('0x45')]=[{'all':!![]}];}_0x4230dd=_[_0xe21c('0x46')]({},_0x4230dd,_0x4527ad[_0xe21c('0x3f')]);return db[_0xe21c('0x2a')][_0xe21c('0x47')](_0x4230dd)[_0xe21c('0x22')](handleEntityNotFound(_0x9ff242,null))[_0xe21c('0x22')](respondWithResult(_0x9ff242,null))[_0xe21c('0x42')](handleError(_0x9ff242,null));};exports['update']=function(_0x533005,_0x30f969){if(_0x533005[_0xe21c('0x48')]['id']){delete _0x533005[_0xe21c('0x48')]['id'];}return db['VoiceMusicOnHold'][_0xe21c('0x47')]({'where':{'id':_0x533005[_0xe21c('0x44')]['id']}})[_0xe21c('0x22')](handleEntityNotFound(_0x30f969,null))['then'](saveUpdates(_0x533005[_0xe21c('0x48')],null))['then'](respondWithResult(_0x30f969,null))[_0xe21c('0x42')](handleError(_0x30f969,null));};exports[_0xe21c('0x49')]=function(_0x8ae536,_0x2b31c2,_0x49842a){return db[_0xe21c('0x4a')][_0xe21c('0x4b')](function(_0x1d3144){if(_0x8ae536[_0xe21c('0x48')][_0xe21c('0x4c')]===_0xe21c('0x4d')){_0x8ae536['body'][_0xe21c('0x4e')]=path[_0xe21c('0x4f')](config[_0xe21c('0x50')],_0xe21c('0x51'),_0x8ae536[_0xe21c('0x48')][_0xe21c('0x26')]);}return db[_0xe21c('0x2a')][_0xe21c('0x49')](_0x8ae536[_0xe21c('0x48')],{'transaction':_0x1d3144})[_0xe21c('0x22')](function(_0x298127){if(_0x8ae536[_0xe21c('0x48')]['mode']===_0xe21c('0x4d')){fs['mkdirSync'](_0x298127[_0xe21c('0x4e')],parseInt('0777',0x8));}var _0x4880a8=_0x8ae536[_0xe21c('0x52')][_0xe21c('0x23')]({'plain':!![]});if(!_0x4880a8)throw new Error(_0xe21c('0x53'));if(_0x4880a8[_0xe21c('0x54')]===_0xe21c('0x52')){var _0x15e7cc=_0x298127[_0xe21c('0x23')]({'plain':!![]});return db[_0xe21c('0x55')][_0xe21c('0x47')]({'where':{'name':_0xe21c('0x56'),'userProfileId':_0x4880a8['userProfileId']},'raw':!![]})['then'](function(_0x152bc7){if(_0x152bc7&&_0x152bc7[_0xe21c('0x57')]===0x0){return db[_0xe21c('0x24')][_0xe21c('0x49')]({'name':_0x15e7cc[_0xe21c('0x26')],'resourceId':_0x15e7cc['id'],'type':_0x152bc7[_0xe21c('0x26')],'sectionId':_0x152bc7['id']},{})[_0xe21c('0x22')](function(){return _0x298127;});}else{return _0x298127;}})[_0xe21c('0x42')](function(_0x58ed5e){logger[_0xe21c('0x25')](_0xe21c('0x58'),_0x58ed5e);});}return _0x298127;});})[_0xe21c('0x22')](respondWithResult(_0x2b31c2,0xc9))[_0xe21c('0x42')](handleError(_0x2b31c2,null));};exports['destroy']=function(_0x5bbce9,_0x5bd6e1,_0x514fbf){var _0x16527b;return db[_0xe21c('0x2a')][_0xe21c('0x47')]({'where':{'id':_0x5bbce9[_0xe21c('0x44')]['id']}})['then'](function(_0x18b8d4){if(_0x18b8d4){return db[_0xe21c('0x4a')]['transaction'](function(_0x1f52dc){return _0x18b8d4[_0xe21c('0x21')]({'transaction':_0x1f52dc,'raw':!![]})[_0xe21c('0x22')](function(_0x54cac2){if(_0x54cac2[_0xe21c('0x4e')]){fs['readdirSync'](_0x54cac2[_0xe21c('0x4e')])[_0xe21c('0x59')](function(_0x5a4c27){fs[_0xe21c('0x5a')](path[_0xe21c('0x4f')](_0x54cac2[_0xe21c('0x4e')],_0x5a4c27));});fs[_0xe21c('0x5b')](_0x54cac2['directory']);}return _0x54cac2;});})[_0xe21c('0x42')](function(_0x60fe6){throw new db[(_0xe21c('0x5c'))][(_0xe21c('0x5d'))](_0x60fe6[_0xe21c('0x5e')]);});}})[_0xe21c('0x22')](handleEntityNotFound(_0x5bd6e1,null))[_0xe21c('0x22')](removeEntity(_0x5bd6e1,null))[_0xe21c('0x42')](handleError(_0x5bd6e1,null));};exports['addSound']=function(_0x5b7aa7,_0x41b26a,_0x4d810e){return db[_0xe21c('0x4a')][_0xe21c('0x4b')](function(_0x1f765e){var _0x2b2805;return db['VoiceMusicOnHold']['find']({'where':{'id':_0x5b7aa7[_0xe21c('0x44')]['id']}})[_0xe21c('0x22')](function(_0x4336e7){if(_0x4336e7){_0x2b2805=_0x4336e7;return _0x4336e7[_0xe21c('0x5f')](_0x5b7aa7['body']['id'],{'transaction':_0x1f765e});}})[_0xe21c('0x22')](function(_0xb338a5){if(_0xb338a5){return db[_0xe21c('0x60')]['findOne']({'where':{'id':_0x5b7aa7[_0xe21c('0x48')]['id']},'attributes':['id',_0xe21c('0x26'),'save_name',_0xe21c('0x61'),'createdAt'],'raw':!![]});}})['then'](function(_0x27a50a){if(_0x27a50a){var _0x5aa121=path[_0xe21c('0x4f')](config[_0xe21c('0x50')],_0xe21c('0x62'),util[_0xe21c('0x63')]('%s.%s',path['basename'](_0x27a50a[_0xe21c('0x64')],path[_0xe21c('0x65')](_0x27a50a[_0xe21c('0x64')])),_0x27a50a[_0xe21c('0x61')]));var _0x2135dd=path['join'](config[_0xe21c('0x50')],'server/files/moh',_0x2b2805[_0xe21c('0x26')],util[_0xe21c('0x63')]('%s.%s',_0x27a50a[_0xe21c('0x26')],_0x27a50a[_0xe21c('0x61')]));fs[_0xe21c('0x66')](_0x5aa121,_0x2135dd);return _0x27a50a;}})['catch'](function(_0x13c34a){throw new db['Sequelize'][(_0xe21c('0x5d'))](_0x13c34a[_0xe21c('0x5e')]);});})[_0xe21c('0x22')](handleEntityNotFound(_0x41b26a,null))['then'](respondWithResult(_0x41b26a,0xc9))[_0xe21c('0x42')](handleError(_0x41b26a,null));};exports[_0xe21c('0x67')]=function(_0x385e0d,_0xd6e7b,_0x1abcd9){return db[_0xe21c('0x4a')][_0xe21c('0x4b')](function(_0x302b02){var _0x19b6f6;return db['VoiceMusicOnHold']['findOne']({'where':{'id':_0x385e0d[_0xe21c('0x44')]['id']}})[_0xe21c('0x22')](handleEntityNotFound(_0xd6e7b,null))[_0xe21c('0x22')](function(_0x2e0125){if(_0x2e0125){_0x19b6f6=_0x2e0125;return _0x2e0125[_0xe21c('0x67')](_0x385e0d[_0xe21c('0x44')][_0xe21c('0x68')]);}})[_0xe21c('0x22')](function(_0x2fee09){if(_0x2fee09){return db[_0xe21c('0x60')][_0xe21c('0x69')]({'where':{'id':_0x385e0d[_0xe21c('0x44')][_0xe21c('0x68')]},'attributes':['id',_0xe21c('0x26'),_0xe21c('0x64'),_0xe21c('0x61'),'createdAt'],'raw':!![]});}})[_0xe21c('0x22')](function(_0xb66997){if(_0xb66997){fs[_0xe21c('0x5a')](path[_0xe21c('0x4f')](_0x19b6f6[_0xe21c('0x4e')],util['format']('%s.%s',_0xb66997['name'],_0xb66997[_0xe21c('0x61')])));return _0xb66997;}})['catch'](function(_0x495ad7){throw new db[(_0xe21c('0x5c'))][(_0xe21c('0x5d'))](_0x495ad7[_0xe21c('0x5e')]);});})[_0xe21c('0x22')](handleEntityNotFound(_0xd6e7b,null))[_0xe21c('0x22')](respondWithStatusCode(_0xd6e7b,0xcc))[_0xe21c('0x42')](handleError(_0xd6e7b,null));};exports[_0xe21c('0x6a')]=function(_0x577596,_0x313a71,_0x2f0e85){var _0x47b002={};var _0x3ead74={};var _0x15d728;var _0x65d621;return db[_0xe21c('0x2a')]['findOne']({'where':{'id':_0x577596[_0xe21c('0x44')]['id']}})['then'](handleEntityNotFound(_0x313a71,null))[_0xe21c('0x22')](function(_0x3300d6){if(_0x3300d6){_0x15d728=_0x3300d6;_0x3ead74[_0xe21c('0x2f')]=_[_0xe21c('0x31')](db[_0xe21c('0x60')][_0xe21c('0x2b')]);_0x3ead74[_0xe21c('0x30')]=_[_0xe21c('0x31')](_0x577596[_0xe21c('0x30')]);_0x3ead74[_0xe21c('0x3a')]=_[_0xe21c('0x32')](_0x3ead74['model'],_0x3ead74['query']);_0x47b002['attributes']=_['intersection'](_0x3ead74['model'],qs[_0xe21c('0x34')](_0x577596[_0xe21c('0x30')][_0xe21c('0x34')]));_0x47b002[_0xe21c('0x33')]=_0x47b002[_0xe21c('0x33')][_0xe21c('0x35')]?_0x47b002[_0xe21c('0x33')]:_0x3ead74[_0xe21c('0x2f')];_0x47b002[_0xe21c('0x38')]=qs[_0xe21c('0x39')](_0x577596[_0xe21c('0x30')]['sort']);_0x47b002[_0xe21c('0x3d')]=qs[_0xe21c('0x3a')](_[_0xe21c('0x3b')](_0x577596[_0xe21c('0x30')],_0x3ead74['filters']));if(_0x577596['query'][_0xe21c('0x3c')]){_0x47b002['where']=_[_0xe21c('0x46')](_0x47b002['where'],{'$or':_[_0xe21c('0x29')](_0x47b002['attributes'],function(_0x18e132){var _0x268a84={};_0x268a84[_0x18e132]={'$like':'%'+_0x577596[_0xe21c('0x30')][_0xe21c('0x3c')]+'%'};return _0x268a84;})});}_0x47b002=_[_0xe21c('0x46')]({},_0x47b002,_0x577596[_0xe21c('0x3f')]);return _0x15d728[_0xe21c('0x6a')](_0x47b002);}})['then'](function(_0x2083ef){if(_0x2083ef){_0x65d621=_0x2083ef['length'];if(!_0x577596[_0xe21c('0x30')][_0xe21c('0x36')](_0xe21c('0x37'))){_0x47b002[_0xe21c('0x19')]=qs[_0xe21c('0x19')](_0x577596['query'][_0xe21c('0x19')]);_0x47b002[_0xe21c('0x17')]=qs[_0xe21c('0x17')](_0x577596['query'][_0xe21c('0x17')]);}return _0x15d728['getSounds'](_0x47b002);}})[_0xe21c('0x22')](function(_0x4fc785){if(_0x4fc785){return _0x4fc785?{'count':_0x65d621,'rows':_0x4fc785}:null;}})[_0xe21c('0x22')](respondWithResult(_0x313a71,null))[_0xe21c('0x42')](handleError(_0x313a71,null));};
\ No newline at end of file
index 5b364ed..96450c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c5d=['VoiceMusicOnHold','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./voiceMusicOnHold.attributes','exports','define'];(function(_0x35af23,_0x9190f6){var _0x340506=function(_0xd4c26b){while(--_0xd4c26b){_0x35af23['push'](_0x35af23['shift']());}};_0x340506(++_0x9190f6);}(_0x3c5d,0xd9));var _0xd3c5=function(_0x4a33e9,_0x3924a4){_0x4a33e9=_0x4a33e9-0x0;var _0x295f69=_0x3c5d[_0x4a33e9];return _0x295f69;};'use strict';var _=require('lodash');var util=require(_0xd3c5('0x0'));var logger=require(_0xd3c5('0x1'))(_0xd3c5('0x2'));var moment=require(_0xd3c5('0x3'));var BPromise=require('bluebird');var rp=require(_0xd3c5('0x4'));var fs=require('fs');var path=require(_0xd3c5('0x5'));var rimraf=require(_0xd3c5('0x6'));var config=require(_0xd3c5('0x7'));var attributes=require(_0xd3c5('0x8'));module[_0xd3c5('0x9')]=function(_0x40219d,_0x25cb04){return _0x40219d[_0xd3c5('0xa')](_0xd3c5('0xb'),attributes,{'tableName':'voice_musiconhold','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x06a8=['api','moment','bluebird','request-promise','rimraf','../../config/environment','./voiceMusicOnHold.attributes','exports','define','VoiceMusicOnHold','voice_musiconhold','lodash','util','../../config/logger'];(function(_0x596895,_0xf3ef9a){var _0x4843b6=function(_0x2c452c){while(--_0x2c452c){_0x596895['push'](_0x596895['shift']());}};_0x4843b6(++_0xf3ef9a);}(_0x06a8,0x97));var _0x806a=function(_0x5a9c0c,_0x4ec485){_0x5a9c0c=_0x5a9c0c-0x0;var _0x53c77d=_0x06a8[_0x5a9c0c];return _0x53c77d;};'use strict';var _=require(_0x806a('0x0'));var util=require(_0x806a('0x1'));var logger=require(_0x806a('0x2'))(_0x806a('0x3'));var moment=require(_0x806a('0x4'));var BPromise=require(_0x806a('0x5'));var rp=require(_0x806a('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x806a('0x7'));var config=require(_0x806a('0x8'));var attributes=require(_0x806a('0x9'));module[_0x806a('0xa')]=function(_0x3a2ffb,_0x191a35){return _0x3a2ffb[_0x806a('0xb')](_0x806a('0xc'),attributes,{'tableName':_0x806a('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 09a1b2a..debbb4c 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(_0x3157f9,_0x3af8dd){var _0x395439=function(_0x2ee0b9){while(--_0x2ee0b9){_0x3157f9['push'](_0x3157f9['shift']());}};_0x395439(++_0x3af8dd);}(_0x70e0,0x17b));var _0x070e=function(_0x17f5a8,_0x147670){_0x17f5a8=_0x17f5a8-0x0;var _0x4450f3=_0x70e0[_0x17f5a8];return _0x4450f3;};'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 _0x0713=['VoiceMusicOnHold,\x20%s,\x20%s','request\x20sent','debug','VoiceMusicOnHold,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info'];(function(_0x396144,_0x49bfc7){var _0x8d20a4=function(_0x1771ab){while(--_0x1771ab){_0x396144['push'](_0x396144['shift']());}};_0x8d20a4(++_0x49bfc7);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x3071('0x0'));var BPromise=require(_0x3071('0x1'));var rs=require(_0x3071('0x2'));var fs=require('fs');var Redis=require(_0x3071('0x3'));var db=require(_0x3071('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x3071('0x5'))(_0x3071('0x6'));var config=require(_0x3071('0x7'));var jayson=require(_0x3071('0x8'));var client=jayson[_0x3071('0x9')][_0x3071('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1d3dd6,_0x2f1e87,_0xbd737f){return new BPromise(function(_0x22274c,_0x3e9a5e){return client[_0x3071('0xb')](_0x1d3dd6,_0xbd737f)[_0x3071('0xc')](function(_0x4a36ec){logger[_0x3071('0xd')](_0x3071('0xe'),_0x2f1e87,_0x3071('0xf'));logger[_0x3071('0x10')](_0x3071('0x11'),_0x2f1e87,'request\x20sent',JSON[_0x3071('0x12')](_0x4a36ec));if(_0x4a36ec[_0x3071('0x13')]){if(_0x4a36ec[_0x3071('0x13')][_0x3071('0x14')]===0x1f4){logger[_0x3071('0x13')]('VoiceMusicOnHold,\x20%s,\x20%s',_0x2f1e87,_0x4a36ec['error'][_0x3071('0x15')]);return _0x3e9a5e(_0x4a36ec['error'][_0x3071('0x15')]);}logger[_0x3071('0x13')]('VoiceMusicOnHold,\x20%s,\x20%s',_0x2f1e87,_0x4a36ec[_0x3071('0x13')]['message']);return _0x22274c(_0x4a36ec[_0x3071('0x13')][_0x3071('0x15')]);}else{logger[_0x3071('0xd')](_0x3071('0xe'),_0x2f1e87,_0x3071('0xf'));_0x22274c(_0x4a36ec[_0x3071('0x16')][_0x3071('0x15')]);}})[_0x3071('0x17')](function(_0x21aad3){logger[_0x3071('0x13')]('VoiceMusicOnHold,\x20%s,\x20%s',_0x2f1e87,_0x21aad3);_0x3e9a5e(_0x21aad3);});});}
\ No newline at end of file
index c7745af..3bbcd74 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7fa3=['../../components/auth/service','../../components/interaction/service','../../config/environment','./voicePrefix.controller','get','isAuthenticated','/describe','describe','/:id','show','getAgents','post','create','/:id/users','addAgents','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router'];(function(_0x3c8726,_0x3be213){var _0x58a4=function(_0x48c869){while(--_0x48c869){_0x3c8726['push'](_0x3c8726['shift']());}};_0x58a4(++_0x3be213);}(_0x7fa3,0x19a));var _0x37fa=function(_0x18f137,_0x5e06b4){_0x18f137=_0x18f137-0x0;var _0x147221=_0x7fa3[_0x18f137];return _0x147221;};'use strict';var multer=require(_0x37fa('0x0'));var util=require(_0x37fa('0x1'));var path=require(_0x37fa('0x2'));var timeout=require(_0x37fa('0x3'));var express=require(_0x37fa('0x4'));var router=express[_0x37fa('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x37fa('0x6'));var interaction=require(_0x37fa('0x7'));var config=require(_0x37fa('0x8'));var controller=require(_0x37fa('0x9'));router[_0x37fa('0xa')]('/',auth[_0x37fa('0xb')](),controller['index']);router[_0x37fa('0xa')](_0x37fa('0xc'),auth[_0x37fa('0xb')](),controller[_0x37fa('0xd')]);router[_0x37fa('0xa')](_0x37fa('0xe'),auth['isAuthenticated'](),controller[_0x37fa('0xf')]);router['get']('/:id/users',auth[_0x37fa('0xb')](),controller[_0x37fa('0x10')]);router[_0x37fa('0x11')]('/',auth[_0x37fa('0xb')](),controller[_0x37fa('0x12')]);router[_0x37fa('0x11')](_0x37fa('0x13'),auth[_0x37fa('0xb')](),controller[_0x37fa('0x14')]);router[_0x37fa('0x15')](_0x37fa('0xe'),auth[_0x37fa('0xb')](),controller[_0x37fa('0x16')]);router[_0x37fa('0x17')]('/:id',auth[_0x37fa('0xb')](),controller[_0x37fa('0x18')]);router[_0x37fa('0x17')](_0x37fa('0x13'),auth[_0x37fa('0xb')](),controller['removeAgents']);module[_0x37fa('0x19')]=router;
\ No newline at end of file
+var _0xf50b=['getTeams','post','create','addAgents','delete','removeAgents','removeTeams','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/interaction/service','./voicePrefix.controller','get','isAuthenticated','index','/describe','/:id','/:id/users','getAgents','/:id/teams'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0xf50b,0xc8));var _0xbf50=function(_0x3ed1a5,_0x497bc5){_0x3ed1a5=_0x3ed1a5-0x0;var _0x41d731=_0xf50b[_0x3ed1a5];return _0x41d731;};'use strict';var multer=require(_0xbf50('0x0'));var util=require(_0xbf50('0x1'));var path=require('path');var timeout=require(_0xbf50('0x2'));var express=require(_0xbf50('0x3'));var router=express[_0xbf50('0x4')]();var fs_extra=require(_0xbf50('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xbf50('0x6'));var config=require('../../config/environment');var controller=require(_0xbf50('0x7'));router[_0xbf50('0x8')]('/',auth[_0xbf50('0x9')](),controller[_0xbf50('0xa')]);router[_0xbf50('0x8')](_0xbf50('0xb'),auth[_0xbf50('0x9')](),controller['describe']);router[_0xbf50('0x8')](_0xbf50('0xc'),auth[_0xbf50('0x9')](),controller['show']);router['get'](_0xbf50('0xd'),auth[_0xbf50('0x9')](),controller[_0xbf50('0xe')]);router['get'](_0xbf50('0xf'),auth[_0xbf50('0x9')](),controller[_0xbf50('0x10')]);router[_0xbf50('0x11')]('/',auth[_0xbf50('0x9')](),controller[_0xbf50('0x12')]);router[_0xbf50('0x11')]('/:id/users',auth[_0xbf50('0x9')](),controller[_0xbf50('0x13')]);router[_0xbf50('0x11')](_0xbf50('0xf'),auth[_0xbf50('0x9')](),controller['addTeams']);router['put']('/:id',auth[_0xbf50('0x9')](),controller['update']);router[_0xbf50('0x14')](_0xbf50('0xc'),auth[_0xbf50('0x9')](),controller['destroy']);router[_0xbf50('0x14')]('/:id/users',auth[_0xbf50('0x9')](),controller[_0xbf50('0x15')]);router[_0xbf50('0x14')]('/:id/teams',auth[_0xbf50('0x9')](),controller[_0xbf50('0x16')]);module[_0xbf50('0x17')]=router;
\ No newline at end of file
index 3178732..ac5863d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb532=['name','VIRTUAL','system-','exports','STRING'];(function(_0x479cd8,_0x18aafe){var _0x5f0660=function(_0x7e4e03){while(--_0x7e4e03){_0x479cd8['push'](_0x479cd8['shift']());}};_0x5f0660(++_0x18aafe);}(_0xb532,0x170));var _0x2b53=function(_0x150654,_0x22e377){_0x150654=_0x150654-0x0;var _0x28dbee=_0xb532[_0x150654];return _0x28dbee;};'use strict';var Sequelize=require('sequelize');module[_0x2b53('0x0')]={'name':{'type':Sequelize[_0x2b53('0x1')],'allowNull':![],'unique':_0x2b53('0x2')},'prefix':{'type':Sequelize[_0x2b53('0x3')],'get':function(_0x309a4a){return _0x2b53('0x4')+this['getDataValue'](_0x2b53('0x2'))+'-';}},'description':{'type':Sequelize[_0x2b53('0x1')]},'callerIdAll':{'type':Sequelize[_0x2b53('0x1')]},'VoiceExtensionId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
+var _0x8d71=['getDataValue','exports','STRING','name','VIRTUAL','system-'];(function(_0x1b6186,_0x1ec7f2){var _0x186121=function(_0x1748a8){while(--_0x1748a8){_0x1b6186['push'](_0x1b6186['shift']());}};_0x186121(++_0x1ec7f2);}(_0x8d71,0x139));var _0x18d7=function(_0x525c68,_0x2846a2){_0x525c68=_0x525c68-0x0;var _0x47527b=_0x8d71[_0x525c68];return _0x47527b;};'use strict';var Sequelize=require('sequelize');module[_0x18d7('0x0')]={'name':{'type':Sequelize[_0x18d7('0x1')],'allowNull':![],'unique':_0x18d7('0x2')},'prefix':{'type':Sequelize[_0x18d7('0x3')],'get':function(_0x205806){return _0x18d7('0x4')+this[_0x18d7('0x5')](_0x18d7('0x2'))+'-';}},'description':{'type':Sequelize[_0x18d7('0x1')]},'callerIdAll':{'type':Sequelize['STRING']},'VoiceExtensionId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index 18f1ac7..a4faf2b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9cd=['Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','from-sip','app','system','description','Voice\x20Prefix\x20Extension','priority','appdata','prefix','NoOp','VoicePrefixId','bulkCreate','Set','CDR(prefix)=','callerIdAll','push','PREFIX-CALLERIDALL=','goto','context','update','system-','findById','addAgents','omit','spread','ids','userVoicePrefix:save','removeAgents','isArray','userVoicePrefix:remove','findOne','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','redis','defaults','localhost','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','save','then','get','VoicePrefixes','UserProfileResource','error','send','index','map','VoicePrefix','rawAttributes','fieldName','key','name','keys','query','filters','model','attributes','intersection','fields','length','nolimit','order','sort','where','pick','filter','type','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','destroy','find','params','describe','create','sequelize','transaction','body','VoiceExtension','VoiceExtensionId','user'];(function(_0x528372,_0x1bc4c8){var _0x2e2c58=function(_0x188584){while(--_0x188584){_0x528372['push'](_0x528372['shift']());}};_0x2e2c58(++_0x1bc4c8);}(_0xa9cd,0x187));var _0xda9c=function(_0x8eac40,_0x4f4549){_0x8eac40=_0x8eac40-0x0;var _0x23f256=_0xa9cd[_0x8eac40];return _0x23f256;};'use strict';var emlformat=require(_0xda9c('0x0'));var rimraf=require(_0xda9c('0x1'));var zipdir=require(_0xda9c('0x2'));var jsonpatch=require(_0xda9c('0x3'));var rp=require(_0xda9c('0x4'));var moment=require(_0xda9c('0x5'));var BPromise=require(_0xda9c('0x6'));var Mustache=require(_0xda9c('0x7'));var util=require('util');var path=require(_0xda9c('0x8'));var sox=require(_0xda9c('0x9'));var csv=require(_0xda9c('0xa'));var ejs=require(_0xda9c('0xb'));var fs=require('fs');var fs_extra=require(_0xda9c('0xc'));var _=require(_0xda9c('0xd'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xda9c('0xe'));var toCsv=require(_0xda9c('0xa'));var querystring=require(_0xda9c('0xf'));var Papa=require(_0xda9c('0x10'));var Redis=require('ioredis');var authService=require(_0xda9c('0x11'));var qs=require(_0xda9c('0x12'));var as=require(_0xda9c('0x13'));var hardwareService=require(_0xda9c('0x14'));var logger=require(_0xda9c('0x15'))('api');var utils=require(_0xda9c('0x16'));var config=require(_0xda9c('0x17'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0xda9c('0x18')]=_[_0xda9c('0x19')](config[_0xda9c('0x18')],{'host':_0xda9c('0x1a'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xda9c('0x18')]));require('./voicePrefix.socket')['register'](socket);function respondWithStatusCode(_0x463c3f,_0x7bc0e8){_0x7bc0e8=_0x7bc0e8||0xcc;return function(_0x1c1e70){if(_0x1c1e70){return _0x463c3f[_0xda9c('0x1b')](_0x7bc0e8);}return _0x463c3f[_0xda9c('0x1c')](_0x7bc0e8)['end']();};}function respondWithResult(_0x3b2eb3,_0x2a2b11){_0x2a2b11=_0x2a2b11||0xc8;return function(_0x15c257){if(_0x15c257){return _0x3b2eb3[_0xda9c('0x1c')](_0x2a2b11)[_0xda9c('0x1d')](_0x15c257);}};}function respondWithFilteredResult(_0x120be1,_0x1e2bae){return function(_0x470c5a){if(_0x470c5a){var _0x502ac0=typeof _0x1e2bae[_0xda9c('0x1e')]===_0xda9c('0x1f')&&typeof _0x1e2bae['limit']===_0xda9c('0x1f');var _0x5bc4e1=_0x470c5a[_0xda9c('0x20')];var _0x5fd257=_0x502ac0?0x0:_0x1e2bae[_0xda9c('0x1e')];var _0x12e058=_0x502ac0?_0x470c5a[_0xda9c('0x20')]:_0x1e2bae['offset']+_0x1e2bae[_0xda9c('0x21')];var _0x4e220c;if(_0x12e058>=_0x5bc4e1){_0x12e058=_0x5bc4e1;_0x4e220c=0xc8;}else{_0x4e220c=0xce;}_0x120be1[_0xda9c('0x1c')](_0x4e220c);return _0x120be1[_0xda9c('0x22')](_0xda9c('0x23'),_0x5fd257+'-'+_0x12e058+'/'+_0x5bc4e1)[_0xda9c('0x1d')](_0x470c5a);}return null;};}function patchUpdates(_0x17ade1){return function(_0xb09c09){try{jsonpatch['apply'](_0xb09c09,_0x17ade1,!![]);}catch(_0x2e409e){return BPromise['reject'](_0x2e409e);}return _0xb09c09[_0xda9c('0x24')]();};}function saveUpdates(_0x4361e2,_0x2abfcd){return function(_0x2f3b5b){if(_0x2f3b5b){return _0x2f3b5b['update'](_0x4361e2)['then'](function(_0x3be0c8){return _0x3be0c8;});}return null;};}function removeEntity(_0x188907,_0x19d6b4){return function(_0x30c4b5){if(_0x30c4b5){return _0x30c4b5['destroy']()[_0xda9c('0x25')](function(){var _0x115211=_0x30c4b5[_0xda9c('0x26')]({'plain':!![]});var _0x17d6d5=_0xda9c('0x27');return db[_0xda9c('0x28')]['destroy']({'where':{'type':_0x17d6d5,'resourceId':_0x115211['id']}})[_0xda9c('0x25')](function(){return _0x30c4b5;});})['then'](function(){_0x188907[_0xda9c('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x149018,_0x230952){return function(_0x2e2a71){if(!_0x2e2a71){_0x149018[_0xda9c('0x1b')](0x194);}return _0x2e2a71;};}function handleError(_0x5a3a11,_0xd21b6a){_0xd21b6a=_0xd21b6a||0x1f4;return function(_0x27abae){logger[_0xda9c('0x29')](_0x27abae['stack']);if(_0x27abae['name']){delete _0x27abae['name'];}_0x5a3a11[_0xda9c('0x1c')](_0xd21b6a)[_0xda9c('0x2a')](_0x27abae);};}exports[_0xda9c('0x2b')]=function(_0x272ae2,_0x20082d){var _0x192ecd={},_0x1b1515={},_0x39c998={'count':0x0,'rows':[]};var _0x24fee1=_[_0xda9c('0x2c')](db[_0xda9c('0x2d')][_0xda9c('0x2e')],function(_0x5a0dc8){return{'name':_0x5a0dc8[_0xda9c('0x2f')],'type':_0x5a0dc8['type'][_0xda9c('0x30')]};});_0x1b1515['model']=_['map'](_0x24fee1,_0xda9c('0x31'));_0x1b1515['query']=_[_0xda9c('0x32')](_0x272ae2[_0xda9c('0x33')]);_0x1b1515[_0xda9c('0x34')]=_['intersection'](_0x1b1515[_0xda9c('0x35')],_0x1b1515[_0xda9c('0x33')]);_0x192ecd[_0xda9c('0x36')]=_[_0xda9c('0x37')](_0x1b1515[_0xda9c('0x35')],qs[_0xda9c('0x38')](_0x272ae2[_0xda9c('0x33')][_0xda9c('0x38')]));_0x192ecd[_0xda9c('0x36')]=_0x192ecd[_0xda9c('0x36')][_0xda9c('0x39')]?_0x192ecd[_0xda9c('0x36')]:_0x1b1515['model'];if(!_0x272ae2['query']['hasOwnProperty'](_0xda9c('0x3a'))){_0x192ecd[_0xda9c('0x21')]=qs['limit'](_0x272ae2[_0xda9c('0x33')][_0xda9c('0x21')]);_0x192ecd[_0xda9c('0x1e')]=qs[_0xda9c('0x1e')](_0x272ae2[_0xda9c('0x33')][_0xda9c('0x1e')]);}_0x192ecd[_0xda9c('0x3b')]=qs[_0xda9c('0x3c')](_0x272ae2[_0xda9c('0x33')][_0xda9c('0x3c')]);_0x192ecd[_0xda9c('0x3d')]=qs[_0xda9c('0x34')](_[_0xda9c('0x3e')](_0x272ae2[_0xda9c('0x33')],_0x1b1515[_0xda9c('0x34')]),_0x24fee1);if(_0x272ae2[_0xda9c('0x33')][_0xda9c('0x3f')]){_0x192ecd[_0xda9c('0x3d')]=_['merge'](_0x192ecd[_0xda9c('0x3d')],{'$or':_['map'](_0x24fee1,function(_0x38df31){if(_0x38df31[_0xda9c('0x40')]!==_0xda9c('0x41')){var _0x516eaa={};_0x516eaa[_0x38df31['name']]={'$like':'%'+_0x272ae2['query']['filter']+'%'};return _0x516eaa;}})});}_0x192ecd=_[_0xda9c('0x42')]({},_0x192ecd,_0x272ae2[_0xda9c('0x43')]);var _0x1e0d75={'where':_0x192ecd[_0xda9c('0x3d')]};return db[_0xda9c('0x2d')][_0xda9c('0x20')](_0x1e0d75)['then'](function(_0x1f4468){_0x39c998[_0xda9c('0x20')]=_0x1f4468;if(_0x272ae2['query'][_0xda9c('0x44')]){_0x192ecd[_0xda9c('0x45')]=[{'all':!![]}];}return db[_0xda9c('0x2d')][_0xda9c('0x46')](_0x192ecd);})['then'](function(_0x24e284){_0x39c998[_0xda9c('0x47')]=_0x24e284;return _0x39c998;})[_0xda9c('0x25')](respondWithFilteredResult(_0x20082d,_0x192ecd))[_0xda9c('0x48')](handleError(_0x20082d,null));};exports[_0xda9c('0x49')]=function(_0x3b718f,_0x43f293){var _0x1eb20a={'raw':![],'where':{'id':_0x3b718f['params']['id']}},_0x40a2dc={};_0x40a2dc[_0xda9c('0x35')]=_[_0xda9c('0x32')](db[_0xda9c('0x2d')][_0xda9c('0x2e')]);_0x40a2dc['query']=_[_0xda9c('0x32')](_0x3b718f[_0xda9c('0x33')]);_0x40a2dc[_0xda9c('0x34')]=_[_0xda9c('0x37')](_0x40a2dc[_0xda9c('0x35')],_0x40a2dc['query']);_0x1eb20a['attributes']=_['intersection'](_0x40a2dc[_0xda9c('0x35')],qs[_0xda9c('0x38')](_0x3b718f[_0xda9c('0x33')][_0xda9c('0x38')]));_0x1eb20a[_0xda9c('0x36')]=_0x1eb20a[_0xda9c('0x36')][_0xda9c('0x39')]?_0x1eb20a[_0xda9c('0x36')]:_0x40a2dc[_0xda9c('0x35')];if(_0x3b718f[_0xda9c('0x33')][_0xda9c('0x44')]){_0x1eb20a[_0xda9c('0x45')]=[{'all':!![]}];}_0x1eb20a=_[_0xda9c('0x42')]({},_0x1eb20a,_0x3b718f['options']);return db['VoicePrefix']['find'](_0x1eb20a)[_0xda9c('0x25')](handleEntityNotFound(_0x43f293,null))['then'](respondWithResult(_0x43f293,null))[_0xda9c('0x48')](handleError(_0x43f293,null));};exports[_0xda9c('0x4a')]=function(_0x317352,_0x3ba598){return db[_0xda9c('0x2d')][_0xda9c('0x4b')]({'where':{'id':_0x317352[_0xda9c('0x4c')]['id']}})[_0xda9c('0x25')](handleEntityNotFound(_0x3ba598,null))[_0xda9c('0x25')](removeEntity(_0x3ba598,null))[_0xda9c('0x48')](handleError(_0x3ba598,null));};exports[_0xda9c('0x4d')]=function(_0xec66a0,_0x2902d4){return db[_0xda9c('0x2d')][_0xda9c('0x4d')]()['then'](respondWithResult(_0x2902d4,null))[_0xda9c('0x48')](handleError(_0x2902d4,null));};exports[_0xda9c('0x4e')]=function(_0x4ec816,_0x475d3f){var _0x589674;return db[_0xda9c('0x4f')][_0xda9c('0x50')](function(_0x254a34){return db[_0xda9c('0x2d')]['create'](_0x4ec816[_0xda9c('0x51')],{'transaction':_0x254a34})[_0xda9c('0x25')](function(_0x1fe927){_0x589674=_0x1fe927[_0xda9c('0x26')]({'plain':!![]});return db[_0xda9c('0x52')]['find']({'where':{'id':_0x589674[_0xda9c('0x53')]},'raw':!![]})[_0xda9c('0x25')](function(_0x2ea8d7){return createVoicePrefixExtensions(_0x589674,_0x2ea8d7,_0x254a34);});});})[_0xda9c('0x25')](function(){var _0x4e2ca4=_0x4ec816[_0xda9c('0x54')][_0xda9c('0x26')]({'plain':!![]});if(!_0x4e2ca4)throw new Error(_0xda9c('0x55'));if(_0x4e2ca4[_0xda9c('0x56')]===_0xda9c('0x54')){var _0x2816f8=_0x589674;return db['UserProfileSection']['find']({'where':{'name':_0xda9c('0x27'),'userProfileId':_0x4e2ca4[_0xda9c('0x57')]},'raw':!![]})[_0xda9c('0x25')](function(_0x35a0d1){if(_0x35a0d1&&_0x35a0d1['autoAssociation']===0x0){return db[_0xda9c('0x28')][_0xda9c('0x4e')]({'name':_0x2816f8[_0xda9c('0x31')],'resourceId':_0x2816f8['id'],'type':_0x35a0d1[_0xda9c('0x31')],'sectionId':_0x35a0d1['id']},{})['then'](function(){return _0x589674;});}else{return _0x589674;}})[_0xda9c('0x48')](function(_0x4d8f87){logger[_0xda9c('0x29')](_0xda9c('0x58'),_0x4d8f87);throw _0x4d8f87;});}return _0x589674;})[_0xda9c('0x25')](respondWithResult(_0x475d3f,null))['catch'](handleError(_0x475d3f,null));};function Extension(_0x16c299,_0x2f898c,_0x4122cd,_0x2e3ee3){this['context']=_0xda9c('0x59');this['exten']=_0x16c299;this[_0xda9c('0x5a')]=_0x4122cd;this['type']=_0xda9c('0x5b');this[_0xda9c('0x5c')]=_0xda9c('0x5d');this[_0xda9c('0x5e')]=_0x2f898c;this[_0xda9c('0x5f')]=_0x2e3ee3;}function createVoicePrefixExtensions(_0x4d2a0c,_0x43b880,_0xb2651e){return new BPromise(function(_0x5285ef,_0x5f488e){var _0x4283db=new Extension(formatPrefixName(_0x4d2a0c[_0xda9c('0x60')]),0x1,_0xda9c('0x61'),'Voice\x20Prefix');_0x4283db['VoicePrefixId']=_0x4d2a0c['id'];return db[_0xda9c('0x52')][_0xda9c('0x4e')](_0x4283db,{'transaction':_0xb2651e})[_0xda9c('0x25')](function(_0x41cc80){var _0x5542ff=_0x41cc80['get']({'plain':!![]});var _0x32ebd8=_[_0xda9c('0x2c')](addVoicePrefixExtensions(_0x4d2a0c,_0x43b880),function(_0x192f4f){_0x192f4f[_0xda9c('0x53')]=_0x5542ff['id'];_0x192f4f[_0xda9c('0x62')]=_0x4d2a0c['id'];return _0x192f4f;});return db[_0xda9c('0x52')][_0xda9c('0x63')](_0x32ebd8,{'transaction':_0xb2651e})[_0xda9c('0x25')](function(_0x1a76f9){if(!_0x1a76f9){return _0x5f488e('Extensions\x20creation\x20failed');}else{return _0x5285ef(_0x1a76f9);}})[_0xda9c('0x48')](function(_0x29d1f2){return _0x5f488e(_0x29d1f2);});});;});};function addVoicePrefixExtensions(_0x5bf841,_0x5f7bd8){var _0x30853e=[];var _0xb11155=formatPrefixName(_0x5bf841[_0xda9c('0x60')]);_0x30853e['push'](new Extension(_0xb11155,0x2,_0xda9c('0x64'),_0xda9c('0x65')+_0x5bf841['name']));if(_0x5bf841[_0xda9c('0x66')]){_0x30853e[_0xda9c('0x67')](new Extension(_0xb11155,0x3,_0xda9c('0x64'),_0xda9c('0x68')+_0x5bf841['callerIdAll']));}else{_0x30853e[_0xda9c('0x67')](new Extension(_0xb11155,0x3,_0xda9c('0x61'),'No\x20callerid\x20available'));}_0x30853e['push'](new Extension(_0xb11155,0x4,_0xda9c('0x69'),_0x5f7bd8[_0xda9c('0x6a')]+','+'${EXTEN:'+(0x8+_0x5bf841[_0xda9c('0x31')][_0xda9c('0x39')])+'}'+','+0x1));return _0x30853e;}function formatPrefixName(_0xe82a58){var _0x5b1232='_';for(var _0xfbbe82=0x0;_0xfbbe82<_0xe82a58[_0xda9c('0x39')];_0xfbbe82++){if(_0xe82a58['charAt'](_0xfbbe82)=='-'){_0x5b1232+=_0xe82a58['charAt'](_0xfbbe82);}else{_0x5b1232+='['+_0xe82a58['charAt'](_0xfbbe82)+']';}}_0x5b1232+='.';return _0x5b1232;}exports[_0xda9c('0x6b')]=function(_0x3a1cbb,_0x5b74af,_0x3639dc){var _0x3374d1=_0x3a1cbb['body'];_0x3374d1[_0xda9c('0x60')]=_0xda9c('0x6c')+_0x3374d1[_0xda9c('0x31')]+'-';return db[_0xda9c('0x4f')][_0xda9c('0x50')](function(_0x21a29a){return db[_0xda9c('0x2d')]['update'](_0x3374d1,{'where':{'id':_0x3374d1['id']},'transaction':_0x21a29a})[_0xda9c('0x25')](function(){return db['VoiceExtension'][_0xda9c('0x4a')]({'where':{'VoicePrefixId':_0x3374d1['id']},'transaction':_0x21a29a})[_0xda9c('0x25')](function(){return db[_0xda9c('0x52')]['find']({'where':{'id':_0x3374d1[_0xda9c('0x53')]},'raw':!![]})[_0xda9c('0x25')](function(_0x597b43){return createVoicePrefixExtensions(_0x3374d1,_0x597b43,_0x21a29a);});});});})['then'](function(){return db[_0xda9c('0x2d')][_0xda9c('0x6d')](_0x3374d1['id']);})[_0xda9c('0x25')](respondWithResult(_0x5b74af,null))[_0xda9c('0x48')](handleError(_0x5b74af,null));};exports[_0xda9c('0x6e')]=function(_0x5703f8,_0x2f3c1e,_0x3e82be){return db[_0xda9c('0x2d')][_0xda9c('0x4b')]({'where':{'id':_0x5703f8['params']['id']}})[_0xda9c('0x25')](handleEntityNotFound(_0x2f3c1e,null))['then'](function(_0x12d9b3){if(_0x12d9b3){return _0x12d9b3[_0xda9c('0x6e')](_0x5703f8[_0xda9c('0x51')]['ids'],_[_0xda9c('0x6f')](_0x5703f8[_0xda9c('0x51')],['ids','id'])||{})[_0xda9c('0x70')](function(_0x16e88b){for(var _0x101d10=0x0;_0x101d10<_0x5703f8[_0xda9c('0x51')][_0xda9c('0x71')][_0xda9c('0x39')];_0x101d10+=0x1){socket['emit'](_0xda9c('0x72'),{'UserId':Number(_0x5703f8[_0xda9c('0x51')][_0xda9c('0x71')][_0x101d10]),'VoicePrefixId':Number(_0x5703f8['params']['id'])});}return _0x16e88b;});}})[_0xda9c('0x25')](respondWithResult(_0x2f3c1e,null))[_0xda9c('0x48')](handleError(_0x2f3c1e,null));};exports['removeAgents']=function(_0x43eb96,_0x1a9529,_0x433f04){return db[_0xda9c('0x2d')]['find']({'where':{'id':_0x43eb96[_0xda9c('0x4c')]['id']}})[_0xda9c('0x25')](handleEntityNotFound(_0x1a9529,null))[_0xda9c('0x25')](function(_0x4bbe2b){if(_0x4bbe2b){return _0x4bbe2b[_0xda9c('0x73')](_0x43eb96[_0xda9c('0x33')]['ids'])[_0xda9c('0x25')](function(){if(_[_0xda9c('0x74')](_0x43eb96[_0xda9c('0x33')][_0xda9c('0x71')])){for(var _0x90bad5=0x0;_0x90bad5<_0x43eb96[_0xda9c('0x33')][_0xda9c('0x71')][_0xda9c('0x39')];_0x90bad5+=0x1){socket['emit'](_0xda9c('0x75'),{'UserId':Number(_0x43eb96[_0xda9c('0x33')][_0xda9c('0x71')][_0x90bad5]),'VoicePrefixId':Number(_0x43eb96['params']['id'])});}}else{socket['emit']('userVoicePrefix:remove',{'UserId':Number(_0x43eb96[_0xda9c('0x33')][_0xda9c('0x71')]),'VoicePrefixId':Number(_0x43eb96[_0xda9c('0x4c')]['id'])});}});}})[_0xda9c('0x25')](respondWithStatusCode(_0x1a9529,null))['catch'](handleError(_0x1a9529,null));};exports['getAgents']=function(_0x271743,_0x50478d,_0x2dd6b9){var _0xe82adf={};var _0x1af598={};var _0x1a42a1;var _0x5de303;return db[_0xda9c('0x2d')][_0xda9c('0x76')]({'where':{'id':_0x271743[_0xda9c('0x4c')]['id']}})['then'](handleEntityNotFound(_0x50478d,null))[_0xda9c('0x25')](function(_0x2b3db8){if(_0x2b3db8){_0x1a42a1=_0x2b3db8;_0x1af598[_0xda9c('0x35')]=_[_0xda9c('0x32')](db['User'][_0xda9c('0x2e')]);_0x1af598[_0xda9c('0x33')]=_['keys'](_0x271743[_0xda9c('0x33')]);_0x1af598[_0xda9c('0x34')]=_[_0xda9c('0x37')](_0x1af598['model'],_0x1af598['query']);_0xe82adf[_0xda9c('0x36')]=_[_0xda9c('0x37')](_0x1af598[_0xda9c('0x35')],qs[_0xda9c('0x38')](_0x271743[_0xda9c('0x33')]['fields']));_0xe82adf[_0xda9c('0x36')]=_0xe82adf['attributes']['length']?_0xe82adf[_0xda9c('0x36')]:_0x1af598[_0xda9c('0x35')];_0xe82adf[_0xda9c('0x3b')]=qs[_0xda9c('0x3c')](_0x271743[_0xda9c('0x33')][_0xda9c('0x3c')]);_0xe82adf[_0xda9c('0x3d')]=qs['filters'](_[_0xda9c('0x3e')](_0x271743[_0xda9c('0x33')],_0x1af598[_0xda9c('0x34')]));if(_0x271743[_0xda9c('0x33')][_0xda9c('0x3f')]){_0xe82adf[_0xda9c('0x3d')]=_[_0xda9c('0x42')](_0xe82adf[_0xda9c('0x3d')],{'$or':_['map'](_0xe82adf['attributes'],function(_0x3971e8){var _0x4a96ab={};_0x4a96ab[_0x3971e8]={'$like':'%'+_0x271743[_0xda9c('0x33')][_0xda9c('0x3f')]+'%'};return _0x4a96ab;})});}_0xe82adf=_[_0xda9c('0x42')]({},_0xe82adf,_0x271743[_0xda9c('0x43')]);return _0x1a42a1['getAgents'](_0xe82adf);}})[_0xda9c('0x25')](function(_0x2341de){if(_0x2341de){_0x5de303=_0x2341de['length'];if(!_0x271743[_0xda9c('0x33')]['hasOwnProperty']('nolimit')){_0xe82adf['limit']=qs[_0xda9c('0x21')](_0x271743['query'][_0xda9c('0x21')]);_0xe82adf['offset']=qs[_0xda9c('0x1e')](_0x271743[_0xda9c('0x33')][_0xda9c('0x1e')]);}return _0x1a42a1['getAgents'](_0xe82adf);}})[_0xda9c('0x25')](function(_0x16ff81){if(_0x16ff81){return _0x16ff81?{'count':_0x5de303,'rows':_0x16ff81}:null;}})[_0xda9c('0x25')](respondWithResult(_0x50478d,null))[_0xda9c('0x48')](handleError(_0x50478d,null));};
\ No newline at end of file
+var _0x351d=['isEmpty','forEach','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','util','path','to-csv','ejs','fs-extra','squel','crypto','desk.js','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','redis','defaults','localhost','./voicePrefix.socket','sendStatus','status','offset','undefined','limit','count','set','json','reject','save','update','then','destroy','VoicePrefixes','end','error','stack','name','send','index','map','rawAttributes','fieldName','type','model','query','keys','filters','intersection','fields','attributes','hasOwnProperty','nolimit','sort','where','pick','filter','VIRTUAL','includeAll','include','VoicePrefix','findAll','catch','show','params','length','merge','options','describe','create','transaction','body','VoiceExtension','VoiceExtensionId','user','get','find','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','context','from-sip','exten','description','Voice\x20Prefix\x20Extension','priority','appdata','prefix','NoOp','Voice\x20Prefix','VoicePrefixId','Extensions\x20creation\x20failed','CDR(prefix)=','push','No\x20callerid\x20available','goto','${EXTEN:','charAt','system-','addAgents','ids','spread','emit','userVoicePrefix:save','removeAgents','isArray','userVoicePrefix:remove','getAgents','findOne','User','order','Team','getTeams','addTeams','online','voicePause','interface','flatMap','sequelize','each','TeamVoicePrefix','UserVoicePrefix','findOrCreate','removeTeams','Agents','select','tq.TeamId','from','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','VoicePrefixId\x20=\x20?','toString','QueryTypes','TeamId','all','union','compact','value'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x351d,0x90));var _0xd351=function(_0x2dad6c,_0x412442){_0x2dad6c=_0x2dad6c-0x0;var _0x1c61d4=_0x351d[_0x2dad6c];return _0x1c61d4;};'use strict';var emlformat=require(_0xd351('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xd351('0x1'));var jsonpatch=require(_0xd351('0x2'));var rp=require(_0xd351('0x3'));var moment=require('moment');var BPromise=require(_0xd351('0x4'));var Mustache=require('mustache');var util=require(_0xd351('0x5'));var path=require(_0xd351('0x6'));var sox=require('sox');var csv=require(_0xd351('0x7'));var ejs=require(_0xd351('0x8'));var fs=require('fs');var fs_extra=require(_0xd351('0x9'));var _=require('lodash');var squel=require(_0xd351('0xa'));var crypto=require(_0xd351('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xd351('0xc'));var toCsv=require(_0xd351('0x7'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xd351('0xd'));var authService=require('../../components/auth/service');var qs=require(_0xd351('0xe'));var as=require(_0xd351('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xd351('0x10'))(_0xd351('0x11'));var utils=require('../../config/utils');var config=require(_0xd351('0x12'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0xd351('0x13')]=_[_0xd351('0x14')](config[_0xd351('0x13')],{'host':_0xd351('0x15'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xd351('0x13')]));require(_0xd351('0x16'))['register'](socket);function respondWithStatusCode(_0xc5a145,_0xb106ef){_0xb106ef=_0xb106ef||0xcc;return function(_0x3c2299){if(_0x3c2299){return _0xc5a145[_0xd351('0x17')](_0xb106ef);}return _0xc5a145[_0xd351('0x18')](_0xb106ef)['end']();};}function respondWithResult(_0x9f790f,_0x49d8bb){_0x49d8bb=_0x49d8bb||0xc8;return function(_0x5bdc03){if(_0x5bdc03){return _0x9f790f[_0xd351('0x18')](_0x49d8bb)['json'](_0x5bdc03);}};}function respondWithFilteredResult(_0x21e591,_0x1de35f){return function(_0x4e0164){if(_0x4e0164){var _0x4c6693=typeof _0x1de35f[_0xd351('0x19')]===_0xd351('0x1a')&&typeof _0x1de35f[_0xd351('0x1b')]===_0xd351('0x1a');var _0x51f265=_0x4e0164[_0xd351('0x1c')];var _0x4abbed=_0x4c6693?0x0:_0x1de35f['offset'];var _0x37d3ac=_0x4c6693?_0x4e0164['count']:_0x1de35f[_0xd351('0x19')]+_0x1de35f[_0xd351('0x1b')];var _0x3634c9;if(_0x37d3ac>=_0x51f265){_0x37d3ac=_0x51f265;_0x3634c9=0xc8;}else{_0x3634c9=0xce;}_0x21e591[_0xd351('0x18')](_0x3634c9);return _0x21e591[_0xd351('0x1d')]('Content-Range',_0x4abbed+'-'+_0x37d3ac+'/'+_0x51f265)[_0xd351('0x1e')](_0x4e0164);}return null;};}function patchUpdates(_0xbbc58){return function(_0x241265){try{jsonpatch['apply'](_0x241265,_0xbbc58,!![]);}catch(_0x1ce7f7){return BPromise[_0xd351('0x1f')](_0x1ce7f7);}return _0x241265[_0xd351('0x20')]();};}function saveUpdates(_0x59fb6d,_0x1ce279){return function(_0x34a5cb){if(_0x34a5cb){return _0x34a5cb[_0xd351('0x21')](_0x59fb6d)[_0xd351('0x22')](function(_0x489c9a){return _0x489c9a;});}return null;};}function removeEntity(_0x40f7f3,_0x483c92){return function(_0x358bff){if(_0x358bff){return _0x358bff[_0xd351('0x23')]()['then'](function(){var _0x2648d0=_0x358bff['get']({'plain':!![]});var _0x50d67e=_0xd351('0x24');return db['UserProfileResource']['destroy']({'where':{'type':_0x50d67e,'resourceId':_0x2648d0['id']}})[_0xd351('0x22')](function(){return _0x358bff;});})['then'](function(){_0x40f7f3[_0xd351('0x18')](0xcc)[_0xd351('0x25')]();});}};}function handleEntityNotFound(_0x407b50,_0x4d3f48){return function(_0x71ce9c){if(!_0x71ce9c){_0x407b50['sendStatus'](0x194);}return _0x71ce9c;};}function handleError(_0x1c826b,_0x50039b){_0x50039b=_0x50039b||0x1f4;return function(_0x5f07b1){logger[_0xd351('0x26')](_0x5f07b1[_0xd351('0x27')]);if(_0x5f07b1[_0xd351('0x28')]){delete _0x5f07b1[_0xd351('0x28')];}_0x1c826b['status'](_0x50039b)[_0xd351('0x29')](_0x5f07b1);};}exports[_0xd351('0x2a')]=function(_0x38023c,_0x41da60){var _0x140591={},_0x205c79={},_0x103a7b={'count':0x0,'rows':[]};var _0x898949=_[_0xd351('0x2b')](db['VoicePrefix'][_0xd351('0x2c')],function(_0x453270){return{'name':_0x453270[_0xd351('0x2d')],'type':_0x453270[_0xd351('0x2e')]['key']};});_0x205c79[_0xd351('0x2f')]=_[_0xd351('0x2b')](_0x898949,_0xd351('0x28'));_0x205c79[_0xd351('0x30')]=_[_0xd351('0x31')](_0x38023c[_0xd351('0x30')]);_0x205c79[_0xd351('0x32')]=_[_0xd351('0x33')](_0x205c79[_0xd351('0x2f')],_0x205c79['query']);_0x140591['attributes']=_[_0xd351('0x33')](_0x205c79[_0xd351('0x2f')],qs[_0xd351('0x34')](_0x38023c[_0xd351('0x30')][_0xd351('0x34')]));_0x140591[_0xd351('0x35')]=_0x140591['attributes']['length']?_0x140591[_0xd351('0x35')]:_0x205c79['model'];if(!_0x38023c[_0xd351('0x30')][_0xd351('0x36')](_0xd351('0x37'))){_0x140591[_0xd351('0x1b')]=qs[_0xd351('0x1b')](_0x38023c[_0xd351('0x30')][_0xd351('0x1b')]);_0x140591[_0xd351('0x19')]=qs[_0xd351('0x19')](_0x38023c[_0xd351('0x30')][_0xd351('0x19')]);}_0x140591['order']=qs[_0xd351('0x38')](_0x38023c['query'][_0xd351('0x38')]);_0x140591[_0xd351('0x39')]=qs[_0xd351('0x32')](_[_0xd351('0x3a')](_0x38023c[_0xd351('0x30')],_0x205c79[_0xd351('0x32')]),_0x898949);if(_0x38023c['query'][_0xd351('0x3b')]){_0x140591[_0xd351('0x39')]=_['merge'](_0x140591[_0xd351('0x39')],{'$or':_[_0xd351('0x2b')](_0x898949,function(_0x382f5b){if(_0x382f5b[_0xd351('0x2e')]!==_0xd351('0x3c')){var _0x5cc105={};_0x5cc105[_0x382f5b['name']]={'$like':'%'+_0x38023c[_0xd351('0x30')][_0xd351('0x3b')]+'%'};return _0x5cc105;}})});}_0x140591=_['merge']({},_0x140591,_0x38023c['options']);var _0x16677f={'where':_0x140591[_0xd351('0x39')]};return db['VoicePrefix']['count'](_0x16677f)[_0xd351('0x22')](function(_0x18f9d1){_0x103a7b[_0xd351('0x1c')]=_0x18f9d1;if(_0x38023c[_0xd351('0x30')][_0xd351('0x3d')]){_0x140591[_0xd351('0x3e')]=[{'all':!![]}];}return db[_0xd351('0x3f')][_0xd351('0x40')](_0x140591);})[_0xd351('0x22')](function(_0x553360){_0x103a7b['rows']=_0x553360;return _0x103a7b;})[_0xd351('0x22')](respondWithFilteredResult(_0x41da60,_0x140591))[_0xd351('0x41')](handleError(_0x41da60,null));};exports[_0xd351('0x42')]=function(_0x35f38f,_0x2bdd8f){var _0x4332e7={'raw':![],'where':{'id':_0x35f38f[_0xd351('0x43')]['id']}},_0xeaf4dc={};_0xeaf4dc[_0xd351('0x2f')]=_[_0xd351('0x31')](db[_0xd351('0x3f')][_0xd351('0x2c')]);_0xeaf4dc[_0xd351('0x30')]=_[_0xd351('0x31')](_0x35f38f[_0xd351('0x30')]);_0xeaf4dc[_0xd351('0x32')]=_['intersection'](_0xeaf4dc[_0xd351('0x2f')],_0xeaf4dc[_0xd351('0x30')]);_0x4332e7[_0xd351('0x35')]=_['intersection'](_0xeaf4dc[_0xd351('0x2f')],qs[_0xd351('0x34')](_0x35f38f[_0xd351('0x30')][_0xd351('0x34')]));_0x4332e7[_0xd351('0x35')]=_0x4332e7['attributes'][_0xd351('0x44')]?_0x4332e7['attributes']:_0xeaf4dc[_0xd351('0x2f')];if(_0x35f38f[_0xd351('0x30')]['includeAll']){_0x4332e7['include']=[{'all':!![]}];}_0x4332e7=_[_0xd351('0x45')]({},_0x4332e7,_0x35f38f[_0xd351('0x46')]);return db[_0xd351('0x3f')]['find'](_0x4332e7)[_0xd351('0x22')](handleEntityNotFound(_0x2bdd8f,null))[_0xd351('0x22')](respondWithResult(_0x2bdd8f,null))['catch'](handleError(_0x2bdd8f,null));};exports[_0xd351('0x23')]=function(_0x53a2e8,_0x1eb5f3){return db[_0xd351('0x3f')]['find']({'where':{'id':_0x53a2e8['params']['id']}})[_0xd351('0x22')](handleEntityNotFound(_0x1eb5f3,null))['then'](removeEntity(_0x1eb5f3,null))[_0xd351('0x41')](handleError(_0x1eb5f3,null));};exports[_0xd351('0x47')]=function(_0x9f1cd0,_0x4a27e3){return db[_0xd351('0x3f')]['describe']()['then'](respondWithResult(_0x4a27e3,null))['catch'](handleError(_0x4a27e3,null));};exports[_0xd351('0x48')]=function(_0x292af3,_0x334029){var _0x5a2e9b;return db['sequelize'][_0xd351('0x49')](function(_0x42f248){return db['VoicePrefix'][_0xd351('0x48')](_0x292af3[_0xd351('0x4a')],{'transaction':_0x42f248})['then'](function(_0x24ee0f){_0x5a2e9b=_0x24ee0f['get']({'plain':!![]});return db[_0xd351('0x4b')]['find']({'where':{'id':_0x5a2e9b[_0xd351('0x4c')]},'raw':!![]})[_0xd351('0x22')](function(_0x169ab1){return createVoicePrefixExtensions(_0x5a2e9b,_0x169ab1,_0x42f248);});});})[_0xd351('0x22')](function(){var _0xb5f3ee=_0x292af3[_0xd351('0x4d')][_0xd351('0x4e')]({'plain':!![]});if(!_0xb5f3ee)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0xb5f3ee['role']===_0xd351('0x4d')){var _0x624224=_0x5a2e9b;return db['UserProfileSection'][_0xd351('0x4f')]({'where':{'name':_0xd351('0x24'),'userProfileId':_0xb5f3ee[_0xd351('0x50')]},'raw':!![]})['then'](function(_0x169122){if(_0x169122&&_0x169122['autoAssociation']===0x0){return db['UserProfileResource'][_0xd351('0x48')]({'name':_0x624224[_0xd351('0x28')],'resourceId':_0x624224['id'],'type':_0x169122['name'],'sectionId':_0x169122['id']},{})[_0xd351('0x22')](function(){return _0x5a2e9b;});}else{return _0x5a2e9b;}})[_0xd351('0x41')](function(_0x2d9747){logger[_0xd351('0x26')](_0xd351('0x51'),_0x2d9747);throw _0x2d9747;});}return _0x5a2e9b;})[_0xd351('0x22')](respondWithResult(_0x334029,null))['catch'](handleError(_0x334029,null));};function Extension(_0x1e1173,_0x2a7390,_0x36fb5b,_0x8461b){this[_0xd351('0x52')]=_0xd351('0x53');this[_0xd351('0x54')]=_0x1e1173;this['app']=_0x36fb5b;this[_0xd351('0x2e')]='system';this[_0xd351('0x55')]=_0xd351('0x56');this[_0xd351('0x57')]=_0x2a7390;this[_0xd351('0x58')]=_0x8461b;}function createVoicePrefixExtensions(_0x70cdb,_0x4eaf18,_0x413931){return new BPromise(function(_0x4c8038,_0x4685fa){var _0x45bcc7=new Extension(formatPrefixName(_0x70cdb[_0xd351('0x59')]),0x1,_0xd351('0x5a'),_0xd351('0x5b'));_0x45bcc7['VoicePrefixId']=_0x70cdb['id'];return db['VoiceExtension'][_0xd351('0x48')](_0x45bcc7,{'transaction':_0x413931})[_0xd351('0x22')](function(_0x4b9367){var _0x2d2655=_0x4b9367[_0xd351('0x4e')]({'plain':!![]});var _0x2718e9=_['map'](addVoicePrefixExtensions(_0x70cdb,_0x4eaf18),function(_0x2b47ab){_0x2b47ab[_0xd351('0x4c')]=_0x2d2655['id'];_0x2b47ab[_0xd351('0x5c')]=_0x70cdb['id'];return _0x2b47ab;});return db[_0xd351('0x4b')]['bulkCreate'](_0x2718e9,{'transaction':_0x413931})['then'](function(_0x40c78b){if(!_0x40c78b){return _0x4685fa(_0xd351('0x5d'));}else{return _0x4c8038(_0x40c78b);}})[_0xd351('0x41')](function(_0xa000b4){return _0x4685fa(_0xa000b4);});});;});};function addVoicePrefixExtensions(_0x36b38f,_0x3b0993){var _0x2c83fe=[];var _0x5e2e06=formatPrefixName(_0x36b38f[_0xd351('0x59')]);_0x2c83fe['push'](new Extension(_0x5e2e06,0x2,'Set',_0xd351('0x5e')+_0x36b38f[_0xd351('0x28')]));if(_0x36b38f['callerIdAll']){_0x2c83fe[_0xd351('0x5f')](new Extension(_0x5e2e06,0x3,'Set','PREFIX-CALLERIDALL='+_0x36b38f['callerIdAll']));}else{_0x2c83fe[_0xd351('0x5f')](new Extension(_0x5e2e06,0x3,_0xd351('0x5a'),_0xd351('0x60')));}_0x2c83fe['push'](new Extension(_0x5e2e06,0x4,_0xd351('0x61'),_0x3b0993[_0xd351('0x52')]+','+_0xd351('0x62')+(0x8+_0x36b38f[_0xd351('0x28')][_0xd351('0x44')])+'}'+','+0x1));return _0x2c83fe;}function formatPrefixName(_0x475534){var _0x15fcab='_';for(var _0x6bf19c=0x0;_0x6bf19c<_0x475534[_0xd351('0x44')];_0x6bf19c++){if(_0x475534[_0xd351('0x63')](_0x6bf19c)=='-'){_0x15fcab+=_0x475534[_0xd351('0x63')](_0x6bf19c);}else{_0x15fcab+='['+_0x475534['charAt'](_0x6bf19c)+']';}}_0x15fcab+='.';return _0x15fcab;}exports[_0xd351('0x21')]=function(_0x2d59a5,_0x431e91,_0xcc7a10){var _0xf24a29=_0x2d59a5[_0xd351('0x4a')];_0xf24a29['prefix']=_0xd351('0x64')+_0xf24a29[_0xd351('0x28')]+'-';return db['sequelize']['transaction'](function(_0x436e1d){return db[_0xd351('0x3f')][_0xd351('0x21')](_0xf24a29,{'where':{'id':_0xf24a29['id']},'transaction':_0x436e1d})[_0xd351('0x22')](function(){return db[_0xd351('0x4b')][_0xd351('0x23')]({'where':{'VoicePrefixId':_0xf24a29['id']},'transaction':_0x436e1d})[_0xd351('0x22')](function(){return db[_0xd351('0x4b')][_0xd351('0x4f')]({'where':{'id':_0xf24a29['VoiceExtensionId']},'raw':!![]})[_0xd351('0x22')](function(_0x129623){return createVoicePrefixExtensions(_0xf24a29,_0x129623,_0x436e1d);});});});})['then'](function(){return db[_0xd351('0x3f')]['findById'](_0xf24a29['id']);})[_0xd351('0x22')](respondWithResult(_0x431e91,null))['catch'](handleError(_0x431e91,null));};exports[_0xd351('0x65')]=function(_0x406d8a,_0xbd31ca,_0x451445){return db[_0xd351('0x3f')][_0xd351('0x4f')]({'where':{'id':_0x406d8a[_0xd351('0x43')]['id']}})['then'](handleEntityNotFound(_0xbd31ca,null))[_0xd351('0x22')](function(_0x2558b4){if(_0x2558b4){return _0x2558b4[_0xd351('0x65')](_0x406d8a[_0xd351('0x4a')][_0xd351('0x66')],_['omit'](_0x406d8a[_0xd351('0x4a')],[_0xd351('0x66'),'id'])||{})[_0xd351('0x67')](function(_0x54b38c){for(var _0x38a3ec=0x0;_0x38a3ec<_0x406d8a[_0xd351('0x4a')][_0xd351('0x66')][_0xd351('0x44')];_0x38a3ec+=0x1){socket[_0xd351('0x68')](_0xd351('0x69'),{'UserId':Number(_0x406d8a[_0xd351('0x4a')][_0xd351('0x66')][_0x38a3ec]),'VoicePrefixId':Number(_0x406d8a[_0xd351('0x43')]['id'])});}return _0x54b38c;});}})['then'](respondWithResult(_0xbd31ca,null))[_0xd351('0x41')](handleError(_0xbd31ca,null));};exports[_0xd351('0x6a')]=function(_0x5036e6,_0x44df63,_0x4c1468){return db['VoicePrefix']['find']({'where':{'id':_0x5036e6[_0xd351('0x43')]['id']}})[_0xd351('0x22')](handleEntityNotFound(_0x44df63,null))[_0xd351('0x22')](function(_0x5b2bf9){if(_0x5b2bf9){return _0x5b2bf9[_0xd351('0x6a')](_0x5036e6['query'][_0xd351('0x66')])['then'](function(){if(_[_0xd351('0x6b')](_0x5036e6[_0xd351('0x30')][_0xd351('0x66')])){for(var _0x16dd16=0x0;_0x16dd16<_0x5036e6[_0xd351('0x30')][_0xd351('0x66')][_0xd351('0x44')];_0x16dd16+=0x1){socket[_0xd351('0x68')](_0xd351('0x6c'),{'UserId':Number(_0x5036e6[_0xd351('0x30')][_0xd351('0x66')][_0x16dd16]),'VoicePrefixId':Number(_0x5036e6[_0xd351('0x43')]['id'])});}}else{socket['emit'](_0xd351('0x6c'),{'UserId':Number(_0x5036e6[_0xd351('0x30')][_0xd351('0x66')]),'VoicePrefixId':Number(_0x5036e6[_0xd351('0x43')]['id'])});}});}})[_0xd351('0x22')](respondWithStatusCode(_0x44df63,null))['catch'](handleError(_0x44df63,null));};exports[_0xd351('0x6d')]=function(_0x1e6c85,_0x2adab4,_0x2a1ea4){var _0x4a4b25={};var _0x1fda25={};var _0x36bbee;var _0x48b5ee;return db[_0xd351('0x3f')][_0xd351('0x6e')]({'where':{'id':_0x1e6c85[_0xd351('0x43')]['id']}})[_0xd351('0x22')](handleEntityNotFound(_0x2adab4,null))['then'](function(_0x523895){if(_0x523895){_0x36bbee=_0x523895;_0x1fda25[_0xd351('0x2f')]=_[_0xd351('0x31')](db[_0xd351('0x6f')][_0xd351('0x2c')]);_0x1fda25['query']=_[_0xd351('0x31')](_0x1e6c85[_0xd351('0x30')]);_0x1fda25[_0xd351('0x32')]=_[_0xd351('0x33')](_0x1fda25[_0xd351('0x2f')],_0x1fda25['query']);_0x4a4b25[_0xd351('0x35')]=_[_0xd351('0x33')](_0x1fda25['model'],qs[_0xd351('0x34')](_0x1e6c85[_0xd351('0x30')]['fields']));_0x4a4b25[_0xd351('0x35')]=_0x4a4b25['attributes'][_0xd351('0x44')]?_0x4a4b25['attributes']:_0x1fda25[_0xd351('0x2f')];_0x4a4b25[_0xd351('0x70')]=qs[_0xd351('0x38')](_0x1e6c85[_0xd351('0x30')][_0xd351('0x38')]);_0x4a4b25[_0xd351('0x39')]=qs[_0xd351('0x32')](_[_0xd351('0x3a')](_0x1e6c85[_0xd351('0x30')],_0x1fda25['filters']));if(_0x1e6c85[_0xd351('0x30')][_0xd351('0x3b')]){_0x4a4b25[_0xd351('0x39')]=_[_0xd351('0x45')](_0x4a4b25[_0xd351('0x39')],{'$or':_[_0xd351('0x2b')](_0x4a4b25[_0xd351('0x35')],function(_0x54041b){var _0x56458b={};_0x56458b[_0x54041b]={'$like':'%'+_0x1e6c85[_0xd351('0x30')]['filter']+'%'};return _0x56458b;})});}_0x4a4b25=_[_0xd351('0x45')]({},_0x4a4b25,_0x1e6c85[_0xd351('0x46')]);return _0x36bbee[_0xd351('0x6d')](_0x4a4b25);}})[_0xd351('0x22')](function(_0x2d5e2b){if(_0x2d5e2b){_0x48b5ee=_0x2d5e2b['length'];if(!_0x1e6c85[_0xd351('0x30')][_0xd351('0x36')](_0xd351('0x37'))){_0x4a4b25[_0xd351('0x1b')]=qs[_0xd351('0x1b')](_0x1e6c85[_0xd351('0x30')][_0xd351('0x1b')]);_0x4a4b25[_0xd351('0x19')]=qs[_0xd351('0x19')](_0x1e6c85[_0xd351('0x30')][_0xd351('0x19')]);}return _0x36bbee[_0xd351('0x6d')](_0x4a4b25);}})[_0xd351('0x22')](function(_0x4ddd65){if(_0x4ddd65){return _0x4ddd65?{'count':_0x48b5ee,'rows':_0x4ddd65}:null;}})['then'](respondWithResult(_0x2adab4,null))[_0xd351('0x41')](handleError(_0x2adab4,null));};exports['getTeams']=function(_0x5c202f,_0x426964,_0x4557ed){var _0x3f6826={};var _0x1a5e8e={};var _0x54fc9c;var _0x2443bd;return db['VoicePrefix']['findOne']({'where':{'id':_0x5c202f[_0xd351('0x43')]['id']}})[_0xd351('0x22')](handleEntityNotFound(_0x426964,null))[_0xd351('0x22')](function(_0x15690b){if(_0x15690b){_0x54fc9c=_0x15690b;_0x1a5e8e[_0xd351('0x2f')]=_[_0xd351('0x31')](db[_0xd351('0x71')]['rawAttributes']);_0x1a5e8e[_0xd351('0x30')]=_[_0xd351('0x31')](_0x5c202f[_0xd351('0x30')]);_0x1a5e8e[_0xd351('0x32')]=_[_0xd351('0x33')](_0x1a5e8e[_0xd351('0x2f')],_0x1a5e8e['query']);_0x3f6826['attributes']=_[_0xd351('0x33')](_0x1a5e8e['model'],qs[_0xd351('0x34')](_0x5c202f[_0xd351('0x30')]['fields']));_0x3f6826[_0xd351('0x35')]=_0x3f6826[_0xd351('0x35')][_0xd351('0x44')]?_0x3f6826[_0xd351('0x35')]:_0x1a5e8e[_0xd351('0x2f')];_0x3f6826['order']=qs[_0xd351('0x38')](_0x5c202f['query'][_0xd351('0x38')]);_0x3f6826[_0xd351('0x39')]=qs['filters'](_[_0xd351('0x3a')](_0x5c202f[_0xd351('0x30')],_0x1a5e8e[_0xd351('0x32')]));if(_0x5c202f[_0xd351('0x30')]['filter']){_0x3f6826['where']=_['merge'](_0x3f6826[_0xd351('0x39')],{'$or':_[_0xd351('0x2b')](_0x3f6826[_0xd351('0x35')],function(_0x40740e){var _0x3606b1={};_0x3606b1[_0x40740e]={'$like':'%'+_0x5c202f[_0xd351('0x30')][_0xd351('0x3b')]+'%'};return _0x3606b1;})});}_0x3f6826=_['merge']({},_0x3f6826,_0x5c202f[_0xd351('0x46')]);return _0x54fc9c['getTeams'](_0x3f6826);}})[_0xd351('0x22')](function(_0x55d564){if(_0x55d564){_0x2443bd=_0x55d564['length'];if(!_0x5c202f[_0xd351('0x30')]['hasOwnProperty'](_0xd351('0x37'))){_0x3f6826[_0xd351('0x1b')]=qs[_0xd351('0x1b')](_0x5c202f[_0xd351('0x30')][_0xd351('0x1b')]);_0x3f6826[_0xd351('0x19')]=qs['offset'](_0x5c202f['query'][_0xd351('0x19')]);}return _0x54fc9c[_0xd351('0x72')](_0x3f6826);}})['then'](function(_0x3d3cfa){if(_0x3d3cfa){return _0x3d3cfa?{'count':_0x2443bd,'rows':_0x3d3cfa}:null;}})['then'](respondWithResult(_0x426964,null))[_0xd351('0x41')](handleError(_0x426964,null));};exports[_0xd351('0x73')]=function(_0x6fd03b,_0x19d16a,_0x127bf9){var _0x4ab9b9=_0x6fd03b[_0xd351('0x4a')]['ids'];var _0x581e66;return db[_0xd351('0x71')][_0xd351('0x40')]({'where':{'id':_0x4ab9b9},'attributes':['id'],'include':[{'model':db[_0xd351('0x6f')],'as':'Agents','attributes':['id','name',_0xd351('0x74'),_0xd351('0x75'),_0xd351('0x76')],'raw':!![]}]})[_0xd351('0x22')](function(_0x1ddacf){if(_0x1ddacf){_0x581e66=_0x1ddacf;var _0x4cadbe=_[_0xd351('0x77')](_0x1ddacf,function(_0x269bf6){var _0x3da123=_0x269bf6[_0xd351('0x4e')]({'plain':!![]});return _0x3da123['Agents'];});return db[_0xd351('0x3f')][_0xd351('0x4f')]({'where':{'id':_0x6fd03b['params']['id']}})[_0xd351('0x22')](function(_0x46745f){return db[_0xd351('0x78')][_0xd351('0x49')](function(_0x37d882){return _0x46745f['addTeams'](_0x4ab9b9,{'transaction':_0x37d882})[_0xd351('0x22')](function(){return BPromise[_0xd351('0x79')](_0x581e66,function(_0x5ceda1){return db[_0xd351('0x7a')]['upsert']({'TeamId':_0x5ceda1['id'],'VoicePrefixId':_0x6fd03b[_0xd351('0x43')]['id']},{'transaction':_0x37d882});});})[_0xd351('0x22')](function(){return BPromise['each'](_0x4cadbe,function(_0x1f0812){return db[_0xd351('0x7b')][_0xd351('0x7c')]({'where':{'UserId':_0x1f0812['id'],'VoicePrefixId':_0x6fd03b[_0xd351('0x43')]['id']},'transaction':_0x37d882});});})[_0xd351('0x22')](function(){_0x4cadbe['forEach'](function(_0x23b2fe){socket['emit'](_0xd351('0x69'),{'UserId':_0x23b2fe['id'],'VoicePrefixId':_0x46745f['id']});});});});});}})[_0xd351('0x22')](respondWithStatusCode(_0x19d16a,null))[_0xd351('0x41')](handleError(_0x19d16a,null));};exports[_0xd351('0x7d')]=function(_0x160102,_0x24ac40,_0x3b2690){return db[_0xd351('0x71')][_0xd351('0x40')]({'where':{'id':_0x160102['query'][_0xd351('0x66')]},'attributes':['id'],'include':[{'model':db[_0xd351('0x6f')],'as':_0xd351('0x7e'),'attributes':['id'],'raw':!![]}]})[_0xd351('0x22')](handleEntityNotFound(_0x24ac40,null))['then'](function(_0x280220){var _0x4f8f00=_[_0xd351('0x2b')](_0x280220,'id');var _0x107886=[];var _0x3a3633=[];var _0x403312=squel[_0xd351('0x7f')]();_0x403312['field'](_0xd351('0x80'))[_0xd351('0x81')]('team_has_voice_prefixes','tq')['join'](_0xd351('0x82'),'ut',_0xd351('0x83'))[_0xd351('0x39')](_0xd351('0x84'),_0x160102[_0xd351('0x43')]['id']);for(var _0x1373c0=0x0;_0x1373c0<_0x280220[_0xd351('0x44')];_0x1373c0+=0x1){let _0x78b55c=_0x280220[_0x1373c0];for(var _0x2de03c=0x0;_0x2de03c<_0x78b55c[_0xd351('0x7e')][_0xd351('0x44')];_0x2de03c+=0x1){let _0x6f4c1e=_0x78b55c[_0xd351('0x7e')][_0x2de03c];var _0x56b88b=_0x403312['clone']();_0x56b88b[_0xd351('0x39')]('ut.UserId\x20=\x20?',_0x6f4c1e['id']);_0x3a3633[_0xd351('0x5f')](db[_0xd351('0x78')][_0xd351('0x30')](_0x56b88b[_0xd351('0x85')](),{'type':db[_0xd351('0x78')][_0xd351('0x86')]['SELECT']})[_0xd351('0x22')](function(_0x2725c4){if(_0x2725c4['length']===0x1){return _0x6f4c1e['id'];}else{var _0x31c1dc=_['every'](_['map'](_0x2725c4,_0xd351('0x87')),function(_0x2f188b){return _['includes'](_0x4f8f00,_0x2f188b);});if(_0x31c1dc){return _0x6f4c1e['id'];}}}));}}return BPromise[_0xd351('0x88')](_0x3a3633)[_0xd351('0x22')](function(_0x5126a1){_0x107886=_(_0x107886)[_0xd351('0x89')](_0x5126a1)[_0xd351('0x8a')]()[_0xd351('0x8b')]();return db[_0xd351('0x3f')][_0xd351('0x4f')]({'where':{'id':_0x160102['params']['id']}})[_0xd351('0x22')](function(_0x1db9db){return db[_0xd351('0x78')][_0xd351('0x49')](function(_0x2ef116){return _0x1db9db[_0xd351('0x7d')](_0x160102[_0xd351('0x30')][_0xd351('0x66')],{'transaction':_0x2ef116})[_0xd351('0x22')](function(){if(!_[_0xd351('0x8c')](_0x107886)){return _0x1db9db[_0xd351('0x6a')](_0x107886,{'transaction':_0x2ef116});}})[_0xd351('0x22')](function(){_0x107886[_0xd351('0x8d')](function(_0x585e94){socket[_0xd351('0x68')](_0xd351('0x6c'),{'UserId':_0x585e94,'VoicePrefixId':_0x1db9db['id']});});});});});});})[_0xd351('0x22')](respondWithStatusCode(_0x24ac40,null))[_0xd351('0x41')](handleError(_0x24ac40,null));};
\ No newline at end of file
index 476ed4c..3c70799 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x63ef=['VoicePrefix','update','remove','emit','hasOwnProperty','exports','events'];(function(_0x32f9ca,_0x2fa8bc){var _0x52e083=function(_0x4fd86a){while(--_0x4fd86a){_0x32f9ca['push'](_0x32f9ca['shift']());}};_0x52e083(++_0x2fa8bc);}(_0x63ef,0xdf));var _0xf63e=function(_0x1a0600,_0x41feef){_0x1a0600=_0x1a0600-0x0;var _0x734670=_0x63ef[_0x1a0600];return _0x734670;};'use strict';var EventEmitter=require(_0xf63e('0x0'));var VoicePrefix=require('../../mysqldb')['db'][_0xf63e('0x1')];var VoicePrefixEvents=new EventEmitter();VoicePrefixEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0xf63e('0x2'),'afterDestroy':_0xf63e('0x3')};function emitEvent(_0x31ecc3){return function(_0x3ba2ce,_0x5465c4,_0x30ff04){VoicePrefixEvents['emit'](_0x31ecc3+':'+_0x3ba2ce['id'],_0x3ba2ce);VoicePrefixEvents[_0xf63e('0x4')](_0x31ecc3,_0x3ba2ce);_0x30ff04(null);};}for(var e in events){if(events[_0xf63e('0x5')](e)){var event=events[e];VoicePrefix['hook'](e,emitEvent(event));}}module[_0xf63e('0x6')]=VoicePrefixEvents;
\ No newline at end of file
+var _0xb9d8=['events','../../mysqldb','VoicePrefix','setMaxListeners','save','emit','hook','exports'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xb9d8,0x158));var _0x8b9d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xb9d8[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require(_0x8b9d('0x0'));var VoicePrefix=require(_0x8b9d('0x1'))['db'][_0x8b9d('0x2')];var VoicePrefixEvents=new EventEmitter();VoicePrefixEvents[_0x8b9d('0x3')](0x0);var events={'afterCreate':_0x8b9d('0x4'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x53dc04){return function(_0x36d661,_0x5f6252,_0x22a316){VoicePrefixEvents['emit'](_0x53dc04+':'+_0x36d661['id'],_0x36d661);VoicePrefixEvents[_0x8b9d('0x5')](_0x53dc04,_0x36d661);_0x22a316(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoicePrefix[_0x8b9d('0x6')](e,emitEvent(event));}}module[_0x8b9d('0x7')]=VoicePrefixEvents;
\ No newline at end of file
index 44da352..8f30583 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x06f4=['bluebird','request-promise','rimraf','../../config/environment','./voicePrefix.attributes','define','voice_prefixes','util','api','moment'];(function(_0x47a9ab,_0x211f5b){var _0x5e58c6=function(_0x3e2a7f){while(--_0x3e2a7f){_0x47a9ab['push'](_0x47a9ab['shift']());}};_0x5e58c6(++_0x211f5b);}(_0x06f4,0x15b));var _0x406f=function(_0x4a5a2e,_0x2a550a){_0x4a5a2e=_0x4a5a2e-0x0;var _0x5b1c8c=_0x06f4[_0x4a5a2e];return _0x5b1c8c;};'use strict';var _=require('lodash');var util=require(_0x406f('0x0'));var logger=require('../../config/logger')(_0x406f('0x1'));var moment=require(_0x406f('0x2'));var BPromise=require(_0x406f('0x3'));var rp=require(_0x406f('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x406f('0x5'));var config=require(_0x406f('0x6'));var attributes=require(_0x406f('0x7'));module['exports']=function(_0x1d1a12,_0x1e2cd8){return _0x1d1a12[_0x406f('0x8')]('VoicePrefix',attributes,{'tableName':_0x406f('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1019=['exports','define','VoicePrefix','voice_prefixes','lodash','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./voicePrefix.attributes'];(function(_0x5f150e,_0x5e3a1e){var _0x2f6957=function(_0x58db60){while(--_0x58db60){_0x5f150e['push'](_0x5f150e['shift']());}};_0x2f6957(++_0x5e3a1e);}(_0x1019,0x1be));var _0x9101=function(_0x29ee39,_0xdb9282){_0x29ee39=_0x29ee39-0x0;var _0x365169=_0x1019[_0x29ee39];return _0x365169;};'use strict';var _=require(_0x9101('0x0'));var util=require('util');var logger=require(_0x9101('0x1'))(_0x9101('0x2'));var moment=require('moment');var BPromise=require(_0x9101('0x3'));var rp=require(_0x9101('0x4'));var fs=require('fs');var path=require(_0x9101('0x5'));var rimraf=require(_0x9101('0x6'));var config=require(_0x9101('0x7'));var attributes=require(_0x9101('0x8'));module[_0x9101('0x9')]=function(_0x1d2002,_0x8c0dfb){return _0x1d2002[_0x9101('0xa')](_0x9101('0xb'),attributes,{'tableName':_0x9101('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 926b47d..bb716d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f6b=['localhost','./voicePrefix.socket','register','request','then','info','VoicePrefix,\x20%s,\x20%s','debug','VoicePrefix,\x20%s,\x20%s,\x20%s','stringify','error','message','request\x20sent','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','client','redis'];(function(_0x121689,_0xfc6372){var _0x4ad7a5=function(_0xfd576){while(--_0xfd576){_0x121689['push'](_0x121689['shift']());}};_0x4ad7a5(++_0xfc6372);}(_0x8f6b,0x146));var _0xb8f6=function(_0x5783f4,_0x4a9e0a){_0x5783f4=_0x5783f4-0x0;var _0x28e380=_0x8f6b[_0x5783f4];return _0x28e380;};'use strict';var _=require(_0xb8f6('0x0'));var util=require(_0xb8f6('0x1'));var moment=require(_0xb8f6('0x2'));var BPromise=require('bluebird');var rs=require(_0xb8f6('0x3'));var fs=require('fs');var Redis=require(_0xb8f6('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xb8f6('0x5'));var logger=require(_0xb8f6('0x6'))('rpc');var config=require(_0xb8f6('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xb8f6('0x8')]['http']({'port':0x232a});config[_0xb8f6('0x9')]=_['defaults'](config[_0xb8f6('0x9')],{'host':_0xb8f6('0xa'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xb8f6('0xb'))[_0xb8f6('0xc')](socket);function respondWithRpcPromise(_0x14cc71,_0x379ed5,_0x165d17){return new BPromise(function(_0x3f8e2a,_0x210f71){return client[_0xb8f6('0xd')](_0x14cc71,_0x165d17)[_0xb8f6('0xe')](function(_0x2ef5c1){logger[_0xb8f6('0xf')](_0xb8f6('0x10'),_0x379ed5,'request\x20sent');logger[_0xb8f6('0x11')](_0xb8f6('0x12'),_0x379ed5,'request\x20sent',JSON[_0xb8f6('0x13')](_0x2ef5c1));if(_0x2ef5c1[_0xb8f6('0x14')]){if(_0x2ef5c1[_0xb8f6('0x14')]['code']===0x1f4){logger[_0xb8f6('0x14')]('VoicePrefix,\x20%s,\x20%s',_0x379ed5,_0x2ef5c1[_0xb8f6('0x14')][_0xb8f6('0x15')]);return _0x210f71(_0x2ef5c1['error']['message']);}logger[_0xb8f6('0x14')](_0xb8f6('0x10'),_0x379ed5,_0x2ef5c1[_0xb8f6('0x14')][_0xb8f6('0x15')]);return _0x3f8e2a(_0x2ef5c1[_0xb8f6('0x14')][_0xb8f6('0x15')]);}else{logger[_0xb8f6('0xf')](_0xb8f6('0x10'),_0x379ed5,_0xb8f6('0x16'));_0x3f8e2a(_0x2ef5c1['result']['message']);}})[_0xb8f6('0x17')](function(_0x4566c5){logger[_0xb8f6('0x14')](_0xb8f6('0x10'),_0x379ed5,_0x4566c5);_0x210f71(_0x4566c5);});});}
\ No newline at end of file
+var _0xf108=['randomstring','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./voicePrefix.socket','register','request','then','info','VoicePrefix,\x20%s,\x20%s','request\x20sent','debug','VoicePrefix,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','moment','bluebird'];(function(_0x50278d,_0x24bab8){var _0xc920be=function(_0x5518b6){while(--_0x5518b6){_0x50278d['push'](_0x50278d['shift']());}};_0xc920be(++_0x24bab8);}(_0xf108,0x1d9));var _0x8f10=function(_0x145b61,_0x5c8355){_0x145b61=_0x145b61-0x0;var _0x45dd44=_0xf108[_0x145b61];return _0x45dd44;};'use strict';var _=require(_0x8f10('0x0'));var util=require('util');var moment=require(_0x8f10('0x1'));var BPromise=require(_0x8f10('0x2'));var rs=require(_0x8f10('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x8f10('0x4'))(_0x8f10('0x5'));var config=require(_0x8f10('0x6'));var jayson=require(_0x8f10('0x7'));var client=jayson[_0x8f10('0x8')][_0x8f10('0x9')]({'port':0x232a});config[_0x8f10('0xa')]=_[_0x8f10('0xb')](config[_0x8f10('0xa')],{'host':_0x8f10('0xc'),'port':0x18eb});var socket=require(_0x8f10('0xd'))(new Redis(config['redis']));require(_0x8f10('0xe'))[_0x8f10('0xf')](socket);function respondWithRpcPromise(_0x1bbe48,_0x1d863a,_0x37527d){return new BPromise(function(_0x7003f3,_0x2e00f7){return client[_0x8f10('0x10')](_0x1bbe48,_0x37527d)[_0x8f10('0x11')](function(_0x23c485){logger[_0x8f10('0x12')](_0x8f10('0x13'),_0x1d863a,_0x8f10('0x14'));logger[_0x8f10('0x15')](_0x8f10('0x16'),_0x1d863a,'request\x20sent',JSON['stringify'](_0x23c485));if(_0x23c485[_0x8f10('0x17')]){if(_0x23c485[_0x8f10('0x17')][_0x8f10('0x18')]===0x1f4){logger[_0x8f10('0x17')](_0x8f10('0x13'),_0x1d863a,_0x23c485[_0x8f10('0x17')][_0x8f10('0x19')]);return _0x2e00f7(_0x23c485[_0x8f10('0x17')][_0x8f10('0x19')]);}logger['error'](_0x8f10('0x13'),_0x1d863a,_0x23c485[_0x8f10('0x17')][_0x8f10('0x19')]);return _0x7003f3(_0x23c485['error'][_0x8f10('0x19')]);}else{logger[_0x8f10('0x12')]('VoicePrefix,\x20%s,\x20%s',_0x1d863a,_0x8f10('0x14'));_0x7003f3(_0x23c485[_0x8f10('0x1a')][_0x8f10('0x19')]);}})[_0x8f10('0x1b')](function(_0x48eb4f){logger['error'](_0x8f10('0x13'),_0x1d863a,_0x48eb4f);_0x2e00f7(_0x48eb4f);});});}
\ No newline at end of file
index 1855907..56ca4bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x61a5=['voicePrefix:','./voicePrefix.events','remove','update','emit','removeListener','register'];(function(_0xb4d92f,_0x5647a7){var _0x42d5fb=function(_0xd3b9f5){while(--_0xd3b9f5){_0xb4d92f['push'](_0xb4d92f['shift']());}};_0x42d5fb(++_0x5647a7);}(_0x61a5,0x19e));var _0x561a=function(_0x308a1d,_0x3d379d){_0x308a1d=_0x308a1d-0x0;var _0x5eb875=_0x61a5[_0x308a1d];return _0x5eb875;};'use strict';var VoicePrefixEvents=require(_0x561a('0x0'));var events=['save',_0x561a('0x1'),_0x561a('0x2')];function createListener(_0x59e06d,_0x28d449){return function(_0x5754b1){_0x28d449[_0x561a('0x3')](_0x59e06d,_0x5754b1);};}function removeListener(_0x526edf,_0x1d8bd8){return function(){VoicePrefixEvents[_0x561a('0x4')](_0x526edf,_0x1d8bd8);};}exports[_0x561a('0x5')]=function(_0x28ff42){for(var _0x1e2ce1=0x0,_0x2a763a=events['length'];_0x1e2ce1<_0x2a763a;_0x1e2ce1++){var _0x3d020c=events[_0x1e2ce1];var _0x27e026=createListener(_0x561a('0x6')+_0x3d020c,_0x28ff42);VoicePrefixEvents['on'](_0x3d020c,_0x27e026);}};
\ No newline at end of file
+var _0xb28a=['removeListener','register','length','voicePrefix:','save','remove'];(function(_0x47b58b,_0x41a189){var _0x46bebe=function(_0x22bbfa){while(--_0x22bbfa){_0x47b58b['push'](_0x47b58b['shift']());}};_0x46bebe(++_0x41a189);}(_0xb28a,0x166));var _0xab28=function(_0x3cf2e3,_0x1b38a7){_0x3cf2e3=_0x3cf2e3-0x0;var _0x18cbf7=_0xb28a[_0x3cf2e3];return _0x18cbf7;};'use strict';var VoicePrefixEvents=require('./voicePrefix.events');var events=[_0xab28('0x0'),_0xab28('0x1'),'update'];function createListener(_0x45d26d,_0x4cb73b){return function(_0x5ae2aa){_0x4cb73b['emit'](_0x45d26d,_0x5ae2aa);};}function removeListener(_0x451fc9,_0x1cdc41){return function(){VoicePrefixEvents[_0xab28('0x2')](_0x451fc9,_0x1cdc41);};}exports[_0xab28('0x3')]=function(_0x133169){for(var _0x128a13=0x0,_0x450e5b=events[_0xab28('0x4')];_0x128a13<_0x450e5b;_0x128a13++){var _0x48949b=events[_0x128a13];var _0x479267=createListener(_0xab28('0x5')+_0x48949b,_0x133169);VoicePrefixEvents['on'](_0x48949b,_0x479267);}};
\ No newline at end of file
index 4915787..8262fa1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3405=['get','isAuthenticated','index','/:id','getHoppers','/:id/hopper_histories','/:id/hopper_finals','getHopperFinals','getHopperBlacks','getTeams','/:id/users','getAgents','getMembers','/:id/lists','getLists','/:id/blacklists','post','/:id/clone','clone','addTeams','addAgents','addLists','update','delete','destroy','/:id/teams','removeTeams','removeLists','removeBlackLists','exports','multer','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceQueue.controller'];(function(_0x1671be,_0x386112){var _0x2cae40=function(_0x166a70){while(--_0x166a70){_0x1671be['push'](_0x1671be['shift']());}};_0x2cae40(++_0x386112);}(_0x3405,0x6a));var _0x5340=function(_0x220f3f,_0x11c540){_0x220f3f=_0x220f3f-0x0;var _0x1f170e=_0x3405[_0x220f3f];return _0x1f170e;};'use strict';var multer=require(_0x5340('0x0'));var util=require('util');var path=require(_0x5340('0x1'));var timeout=require(_0x5340('0x2'));var express=require(_0x5340('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x5340('0x4'));var interaction=require(_0x5340('0x5'));var config=require(_0x5340('0x6'));var controller=require(_0x5340('0x7'));router[_0x5340('0x8')]('/',auth[_0x5340('0x9')](),controller[_0x5340('0xa')]);router[_0x5340('0x8')](_0x5340('0xb'),auth[_0x5340('0x9')](),controller['show']);router['get']('/:id/hoppers',auth[_0x5340('0x9')](),controller[_0x5340('0xc')]);router[_0x5340('0x8')](_0x5340('0xd'),auth[_0x5340('0x9')](),controller['getHopperHistories']);router[_0x5340('0x8')](_0x5340('0xe'),auth[_0x5340('0x9')](),controller[_0x5340('0xf')]);router[_0x5340('0x8')]('/:id/hopper_black',auth[_0x5340('0x9')](),controller[_0x5340('0x10')]);router[_0x5340('0x8')]('/:id/teams',auth[_0x5340('0x9')](),controller[_0x5340('0x11')]);router[_0x5340('0x8')](_0x5340('0x12'),auth[_0x5340('0x9')](),controller[_0x5340('0x13')]);router[_0x5340('0x8')]('/:id/members',auth[_0x5340('0x9')](),controller[_0x5340('0x14')]);router[_0x5340('0x8')](_0x5340('0x15'),auth[_0x5340('0x9')](),controller[_0x5340('0x16')]);router[_0x5340('0x8')](_0x5340('0x17'),auth[_0x5340('0x9')](),controller['getBlackLists']);router[_0x5340('0x18')]('/',auth['isAuthenticated'](),controller['create']);router[_0x5340('0x18')](_0x5340('0x19'),auth[_0x5340('0x9')](),controller[_0x5340('0x1a')]);router['post']('/:id/teams',auth[_0x5340('0x9')](),controller[_0x5340('0x1b')]);router[_0x5340('0x18')]('/:id/users',auth[_0x5340('0x9')](),controller[_0x5340('0x1c')]);router['post']('/:id/lists',auth[_0x5340('0x9')](),controller[_0x5340('0x1d')]);router[_0x5340('0x18')](_0x5340('0x17'),auth[_0x5340('0x9')](),controller['addBlackLists']);router['put'](_0x5340('0xb'),auth[_0x5340('0x9')](),controller[_0x5340('0x1e')]);router[_0x5340('0x1f')](_0x5340('0xb'),auth[_0x5340('0x9')](),controller[_0x5340('0x20')]);router[_0x5340('0x1f')](_0x5340('0x21'),auth['isAuthenticated'](),controller[_0x5340('0x22')]);router[_0x5340('0x1f')](_0x5340('0x12'),auth[_0x5340('0x9')](),controller['removeAgents']);router[_0x5340('0x1f')](_0x5340('0x15'),auth[_0x5340('0x9')](),controller[_0x5340('0x23')]);router[_0x5340('0x1f')](_0x5340('0x17'),auth[_0x5340('0x9')](),controller[_0x5340('0x24')]);module[_0x5340('0x25')]=router;
\ No newline at end of file
+var _0xa9e0=['addAgents','/:id/blacklists','addBlackLists','update','delete','destroy','removeTeams','removeAgents','removeLists','removeBlackLists','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceQueue.controller','get','index','/:id','getHoppers','/:id/hopper_histories','isAuthenticated','getHopperHistories','/:id/hopper_black','getHopperBlacks','/:id/teams','/:id/users','getAgents','/:id/members','getMembers','/:id/lists','getLists','post','create','/:id/clone','clone','addTeams'];(function(_0xb5338d,_0x332e87){var _0x11f17a=function(_0x253a51){while(--_0x253a51){_0xb5338d['push'](_0xb5338d['shift']());}};_0x11f17a(++_0x332e87);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3ce3c,_0x319337){_0x3ce3c=_0x3ce3c-0x0;var _0x55a2c9=_0xa9e0[_0x3ce3c];return _0x55a2c9;};'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/hoppers',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0x8')]('/:id/hopper_finals',auth['isAuthenticated'](),controller['getHopperFinals']);router['get'](_0x0a9e('0xf'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x8')](_0x0a9e('0x11'),auth[_0x0a9e('0xd')](),controller['getTeams']);router[_0x0a9e('0x8')](_0x0a9e('0x12'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);router[_0x0a9e('0x8')](_0x0a9e('0x14'),auth['isAuthenticated'](),controller[_0x0a9e('0x15')]);router['get'](_0x0a9e('0x16'),auth['isAuthenticated'](),controller[_0x0a9e('0x17')]);router[_0x0a9e('0x8')]('/:id/blacklists',auth[_0x0a9e('0xd')](),controller['getBlackLists']);router[_0x0a9e('0x18')]('/',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x19')]);router[_0x0a9e('0x18')](_0x0a9e('0x1a'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1b')]);router[_0x0a9e('0x18')](_0x0a9e('0x11'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1c')]);router[_0x0a9e('0x18')]('/:id/users',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1d')]);router['post'](_0x0a9e('0x16'),auth['isAuthenticated'](),controller['addLists']);router[_0x0a9e('0x18')](_0x0a9e('0x1e'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1f')]);router['put'](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x20')]);router[_0x0a9e('0x21')](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x22')]);router['delete']('/:id/teams',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x23')]);router[_0x0a9e('0x21')](_0x0a9e('0x12'),auth['isAuthenticated'](),controller[_0x0a9e('0x24')]);router['delete'](_0x0a9e('0x16'),auth['isAuthenticated'](),controller[_0x0a9e('0x25')]);router[_0x0a9e('0x21')](_0x0a9e('0x1e'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x26')]);module[_0x0a9e('0x27')]=router;
\ No newline at end of file
index 0206c88..a568760 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b83=['FLOAT','agentBusyFactor','dropRate','Only\x20for\x20predictive\x20method.','Predictive\x20Optimization\x20Percentage\x20(min:\x201,\x20max:\x2095)','Queue\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','AGI\x20queue\x20option\x20(use:\x20agi://127.0.0.1/square,<project_name>)','#Busy\x20Retry\x20(min:1,\x20max:999)','Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','onlyIfOpen','always','Active/Disactive\x20AMD','#AMD\x20Initial\x20Silence','#AMD\x20Greeting','#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)','#RecallMe\x20Timeout\x20(min:1)','DESC','ASC','Random\x20Last\x20Digit\x20(min:1,\x20max:15)','#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)','NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Drop\x20Retry\x20(min:1,\x20max:999)','Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Machine\x20Retry\x20(min:1,\x20max:999)','AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','mandatoryDisposition','exports','STRING','ENUM','inbound','outbound','default','ringall','fewestcalls','random','rrmemory','linear','rrordered','strategy','getDataValue','type','dialMethod','roundrobin','progressive','predictive','power','INTEGER','yes','all','once','TEXT','setDataValue','periodic_announce','join','split','joinempty','leavewhenempty','BOOLEAN','acw','Active/Disactive\x20Campaign','Dial\x20Method.','UNSIGNED','Max\x209999\x20member\x20in\x20queue(min:1,\x20max:9999),\x200\x20means\x20unlimited.'];(function(_0x14a729,_0x326ba7){var _0x4a672d=function(_0x136353){while(--_0x136353){_0x14a729['push'](_0x14a729['shift']());}};_0x4a672d(++_0x326ba7);}(_0x2b83,0x1d3));var _0x32b8=function(_0x15c2cb,_0x4c514e){_0x15c2cb=_0x15c2cb-0x0;var _0x5eb6e7=_0x2b83[_0x15c2cb];return _0x5eb6e7;};'use strict';var Sequelize=require('sequelize');module[_0x32b8('0x0')]={'name':{'type':Sequelize[_0x32b8('0x1')],'allowNull':![],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0x32b8('0x2')](_0x32b8('0x3'),_0x32b8('0x4')),'allowNull':![],'defaultValue':'inbound'},'musiconhold':{'type':Sequelize['STRING'],'defaultValue':_0x32b8('0x5')},'announce':{'type':Sequelize[_0x32b8('0x1')],'defaultValue':''},'strategy':{'type':Sequelize['ENUM']('rr',_0x32b8('0x6'),'leastrecent',_0x32b8('0x7'),_0x32b8('0x8'),_0x32b8('0x9'),_0x32b8('0xa'),'wrandom',_0x32b8('0xb')),'allowNull':![],'defaultValue':_0x32b8('0x6'),'set':function(_0x48257a){this['setDataValue'](_0x32b8('0xc'),_0x48257a?_0x48257a:'rrmemory');},'get':function(){var _0x10e421=this[_0x32b8('0xd')](_0x32b8('0xe'));var _0x3d3ca6=this['getDataValue'](_0x32b8('0xf'));var _0x3b6bc6=this['getDataValue']('strategy');if(_0x10e421===_0x32b8('0x3')){return _0x3b6bc6;}if(_0x3d3ca6==='booked'&&_0x3b6bc6===_0x32b8('0x9')||_0x3d3ca6==='booked'&&_0x3b6bc6===_0x32b8('0x10')){return _0x3b6bc6;}if(_0x3d3ca6===_0x32b8('0x11')||_0x3d3ca6===_0x32b8('0x12')||_0x3d3ca6===_0x32b8('0x13')){return _0x3b6bc6;}return null;}},'servicelevel':{'type':Sequelize[_0x32b8('0x14')](0xb),'defaultValue':0x0},'context':{'type':Sequelize['STRING'],'defaultValue':null},'penaltymemberslimit':{'type':Sequelize['INTEGER'](0xb)},'timeout':{'type':Sequelize[_0x32b8('0x14')](0xb),'defaultValue':0xf},'retry':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x2},'timeoutpriority':{'type':Sequelize['STRING']},'weight':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![],'defaultValue':0x0},'wrapuptime':{'type':Sequelize[_0x32b8('0x14')](0xb),'defaultValue':0x0},'autofill':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':_0x32b8('0x15')},'autopause':{'type':Sequelize[_0x32b8('0x2')](_0x32b8('0x15'),'no',_0x32b8('0x16')),'defaultValue':'no'},'autopausedelay':{'type':Sequelize['INTEGER'](0xb)},'autopausebusy':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no'},'autopauseunavail':{'type':Sequelize[_0x32b8('0x2')](_0x32b8('0x15'),'no'),'defaultValue':'no'},'maxlen':{'type':Sequelize[_0x32b8('0x14')](0xb),'defaultValue':0x0},'setinterfacevar':{'type':Sequelize[_0x32b8('0x2')]('yes','no'),'defaultValue':'no'},'setqueueentryvar':{'type':Sequelize[_0x32b8('0x2')](_0x32b8('0x15'),'no'),'defautValue':'no'},'setqueuevar':{'type':Sequelize[_0x32b8('0x2')](_0x32b8('0x15'),'no'),'defaultValue':'no'},'eventmemberstatus':{'type':Sequelize[_0x32b8('0x2')](_0x32b8('0x15'),'no'),'defaultValue':'no'},'membermacro':{'type':Sequelize[_0x32b8('0x1')],'allowNull':!![]},'membergosub':{'type':Sequelize[_0x32b8('0x1')],'allowNull':!![]},'announce_frequency':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'min_announce_frequency':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'periodic_announce_frequency':{'type':Sequelize[_0x32b8('0x14')](0xb),'defaultValue':0x0},'random_periodic_announce':{'type':Sequelize['ENUM'](_0x32b8('0x15'),'no'),'defaultValue':'no'},'relative_periodic_announce':{'type':Sequelize['ENUM'](_0x32b8('0x15'),'no'),'defaultValue':_0x32b8('0x15')},'announce_holdtime':{'type':Sequelize[_0x32b8('0x2')](_0x32b8('0x15'),'no',_0x32b8('0x17')),'defaultValue':'no'},'announce_position':{'type':Sequelize['STRING'],'defaultValue':'no'},'announce_to_first_user':{'type':Sequelize[_0x32b8('0x2')](_0x32b8('0x15'),'no')},'announce_position_limit':{'type':Sequelize[_0x32b8('0x14')](0xb)},'announce_round_seconds':{'type':Sequelize[_0x32b8('0x2')]('0','5','10','15','20','30'),'defaultValue':'0'},'monitor_format':{'type':Sequelize[_0x32b8('0x1')],'defaultValue':''},'monitor_type':{'type':Sequelize[_0x32b8('0x1')]},'queue_youarenext':{'type':Sequelize['STRING'],'defaultValue':null},'queue_thereare':{'type':Sequelize[_0x32b8('0x1')],'defaultValue':null},'queue_callswaiting':{'type':Sequelize[_0x32b8('0x1')],'defaultValue':null},'queue_holdtime':{'type':Sequelize[_0x32b8('0x1')],'defaultValue':null},'queue_minute':{'type':Sequelize[_0x32b8('0x1')],'allowNull':!![],'defaultValue':null},'queue_minutes':{'type':Sequelize[_0x32b8('0x1')],'defaultValue':null},'queue_seconds':{'type':Sequelize[_0x32b8('0x1')],'defaultValue':null},'queue_thankyou':{'type':Sequelize[_0x32b8('0x1')],'defaultValue':null},'queue_reporthold':{'type':Sequelize[_0x32b8('0x1')]},'queue_quantity1':{'type':Sequelize[_0x32b8('0x1')]},'queue_quantity2':{'type':Sequelize[_0x32b8('0x1')]},'queue_periodic_announce':{'type':Sequelize[_0x32b8('0x1')]},'queue_less_than':{'type':Sequelize[_0x32b8('0x1')]},'periodic_announce':{'type':Sequelize[_0x32b8('0x18')],'set':function(_0x55202b){this[_0x32b8('0x19')](_0x32b8('0x1a'),_0x55202b?_0x55202b[_0x32b8('0x1b')](','):[]);},'get':function(){return this[_0x32b8('0xd')](_0x32b8('0x1a'))?this[_0x32b8('0xd')](_0x32b8('0x1a'))[_0x32b8('0x1c')](','):[];}},'joinempty':{'type':Sequelize[_0x32b8('0x1')],'defaultValue':_0x32b8('0x15'),'set':function(_0x521bf4){this[_0x32b8('0x19')](_0x32b8('0x1d'),_0x521bf4?_0x521bf4[_0x32b8('0x1b')](','):undefined);},'get':function(){return this[_0x32b8('0xd')]('joinempty')?this['getDataValue'](_0x32b8('0x1d'))[_0x32b8('0x1c')](','):undefined;}},'leavewhenempty':{'type':Sequelize[_0x32b8('0x1')],'defaultValue':'no','set':function(_0x12ff7d){this['setDataValue'](_0x32b8('0x1e'),_0x12ff7d?_0x12ff7d[_0x32b8('0x1b')](','):undefined);},'get':function(){return this[_0x32b8('0xd')](_0x32b8('0x1e'))?this[_0x32b8('0xd')](_0x32b8('0x1e'))[_0x32b8('0x1c')](','):undefined;}},'reportholdtime':{'type':Sequelize[_0x32b8('0x2')]('yes','no'),'defaultValue':'no'},'ringinuse':{'type':Sequelize[_0x32b8('0x2')]('yes','no'),'defaultValue':'no'},'memberdelay':{'type':Sequelize[_0x32b8('0x14')](0xb),'defaultValue':0x0},'timeoutrestart':{'type':Sequelize[_0x32b8('0x2')](_0x32b8('0x15'),'no'),'defaultValue':'no'},'defaultrule':{'type':Sequelize[_0x32b8('0x1')]},'description':{'type':Sequelize[_0x32b8('0x1')]},'acw':{'type':Sequelize[_0x32b8('0x1f')],'defaultValue':0x0,'set':function(_0x4c9ab0){this[_0x32b8('0x19')](_0x32b8('0x20'),_0x4c9ab0);if(_0x4c9ab0){if(this[_0x32b8('0xd')]('wrapuptime')<0x2){this[_0x32b8('0x19')]('wrapuptime',0x2);}}}},'acwTimeout':{'type':Sequelize[_0x32b8('0x14')](0xb),'defaultValue':0xa},'dialActive':{'type':Sequelize[_0x32b8('0x1f')],'defaultValue':0x0,'comment':_0x32b8('0x21')},'dialMethod':{'type':Sequelize[_0x32b8('0x2')]('preview',_0x32b8('0x11'),_0x32b8('0x13'),_0x32b8('0x12'),'booked'),'defaultValue':'progressive','comment':_0x32b8('0x22')},'dialLimitChannel':{'type':Sequelize[_0x32b8('0x14')](0x4)[_0x32b8('0x23')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':'Max\x209999\x20channels,\x200\x20means\x20unlimited.'},'dialLimitQueue':{'type':Sequelize['INTEGER'](0x4)['UNSIGNED'],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0x32b8('0x24')},'dialPowerLevel':{'type':Sequelize[_0x32b8('0x25')](0x2)[_0x32b8('0x23')],'defaultValue':0x1,'validate':{'min':0x1,'max':0xa},'comment':'Power\x20Level:\x20Calls\x20for\x20agents\x20(min:1,\x20max:10).'},'dialPredictiveOptimization':{'type':Sequelize[_0x32b8('0x2')](_0x32b8('0x26'),_0x32b8('0x27')),'defaultValue':_0x32b8('0x27'),'comment':_0x32b8('0x28')},'dialPredictiveOptimizationPercentage':{'type':Sequelize[_0x32b8('0x25')](0x2)[_0x32b8('0x23')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5f},'comment':_0x32b8('0x29')},'dialPredictiveInterval':{'type':Sequelize['INTEGER'](0x3)[_0x32b8('0x23')],'defaultValue':0xa,'validate':{'min':0x5,'max':0x1e},'comment':'Interval\x20Predictive\x20Minutes\x20(min:5\x20max:30)'},'dialOriginateCallerIdName':{'type':Sequelize['STRING']},'dialOriginateCallerIdNumber':{'type':Sequelize['STRING']},'dialOriginateTimeout':{'type':Sequelize['INTEGER'](0x3)[_0x32b8('0x23')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':'Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)'},'dialQueueOptions':{'type':Sequelize[_0x32b8('0x1')],'defaultValue':'tTxX','comment':'https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+Application_Queue'},'dialQueueTimeout':{'type':Sequelize[_0x32b8('0x14')](0x3)[_0x32b8('0x23')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x32b8('0x2a')},'dialQueueProject':{'type':Sequelize['STRING'],'comment':_0x32b8('0x2b')},'dialCongestionMaxRetry':{'type':Sequelize[_0x32b8('0x14')](0x3)[_0x32b8('0x23')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Congestion\x20Retry\x20(min:1,\x20max:999)'},'dialCongestionRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x32b8('0x23')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialBusyMaxRetry':{'type':Sequelize[_0x32b8('0x14')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x32b8('0x2c')},'dialBusyRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x32b8('0x23')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x32b8('0x2d')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0x32b8('0x14')](0x3)[_0x32b8('0x23')],'defaultValue':0x3,'comment':'#NoAnswer\x20Retry\x20(min:1,\x20max:999)'},'dialNoAnswerRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x32b8('0x23')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x32b8('0x2e')},'dialGlobalMaxRetry':{'type':Sequelize[_0x32b8('0x14')](0x3)['UNSIGNED'],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':'#Global\x20Max\x20Retry\x20(min:1,\x20max:999)'},'dialTimezone':{'type':Sequelize[_0x32b8('0x1')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0x32b8('0x1')],'defaultValue':'07:00-22:00,*,*,*'},'dialPrefix':{'type':Sequelize[_0x32b8('0x1')],'defaultValue':null},'dialCheckDuplicateType':{'type':Sequelize['ENUM']('always','never',_0x32b8('0x2f')),'defaultValue':_0x32b8('0x30')},'dialAMDActive':{'type':Sequelize[_0x32b8('0x1f')],'defaultValue':0x0,'comment':_0x32b8('0x31')},'dialAMDInitialSilence':{'type':Sequelize['INTEGER'](0x9)[_0x32b8('0x23')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0x32b8('0x32')},'dialAMDGreeting':{'type':Sequelize[_0x32b8('0x14')](0x9)[_0x32b8('0x23')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0x32b8('0x33')},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0x32b8('0x14')](0x9)[_0x32b8('0x23')],'defaultValue':0x320,'validate':{'min':0x0},'comment':'#AMD\x20After\x20Greeting\x20Silence'},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0x32b8('0x14')](0x9)[_0x32b8('0x23')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x32b8('0x34')},'dialAMDMinWordLength':{'type':Sequelize[_0x32b8('0x14')](0x9)[_0x32b8('0x23')],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0x32b8('0x35')},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0x32b8('0x14')](0x9)[_0x32b8('0x23')],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0x32b8('0x36')},'dialAMDMaximumNumberOfWords':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0x32b8('0x37')},'dialAMDSilenceThreshold':{'type':Sequelize[_0x32b8('0x14')](0x5)[_0x32b8('0x23')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0x32b8('0x38')},'dialAMDMaximumWordLength':{'type':Sequelize[_0x32b8('0x14')](0x9)[_0x32b8('0x23')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Word\x20Length'},'dialRecallMeTimeout':{'type':Sequelize[_0x32b8('0x14')](0x5)[_0x32b8('0x23')],'validate':{'min':0x1},'defaultValue':0x1e,'comment':_0x32b8('0x39')},'dialRecallInQueue':{'type':Sequelize[_0x32b8('0x1f')],'defaultValue':0x0,'comment':'Active/Disactive\x20Recall\x20In\x20Queue'},'dialOrderByScheduledAt':{'type':Sequelize[_0x32b8('0x2')](_0x32b8('0x3a'),_0x32b8('0x3b')),'defaultValue':'DESC'},'dialQueueProject2':{'type':Sequelize[_0x32b8('0x1')],'comment':_0x32b8('0x2b')},'dialAgiAfterHangupClient':{'type':Sequelize[_0x32b8('0x1f')],'defaultValue':![]},'dialAgiAfterHangupAgent':{'type':Sequelize[_0x32b8('0x1f')],'defaultValue':![]},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0x32b8('0x14')](0x3)[_0x32b8('0x23')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x32b8('0x3c')},'dialCutDigit':{'type':Sequelize['INTEGER'](0x3)[_0x32b8('0x23')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Cut\x20Digit\x20(min:1,\x20max:15)'},'dialNoSuchNumberMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x32b8('0x23')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x32b8('0x3d')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0x32b8('0x14')](0x5)[_0x32b8('0x23')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x32b8('0x3e')},'dialDropMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x32b8('0x23')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x32b8('0x3f')},'dialDropRetryFrequency':{'type':Sequelize[_0x32b8('0x14')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x32b8('0x40')},'dialAbandonedMaxRetry':{'type':Sequelize[_0x32b8('0x14')](0x3)[_0x32b8('0x23')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Abandoned\x20Retry\x20(min:1,\x20max:999)'},'dialAbandonedRetryFrequency':{'type':Sequelize[_0x32b8('0x14')](0x5)[_0x32b8('0x23')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x32b8('0x41')},'dialMachineMaxRetry':{'type':Sequelize[_0x32b8('0x14')](0x3)[_0x32b8('0x23')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x32b8('0x42')},'dialMachineRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x32b8('0x23')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialAgentRejectMaxRetry':{'type':Sequelize[_0x32b8('0x14')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#AgentReject\x20Retry\x20(min:1,\x20max:999)'},'dialAgentRejectRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x32b8('0x23')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x32b8('0x43')},'mandatoryDispositionPauseId':{'type':Sequelize[_0x32b8('0x14')],'allowNull':!![],'comment':_0x32b8('0x44')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0x32b8('0x45'),'set':function(_0x391244){if(!_0x391244)this[_0x32b8('0x19')](_0x32b8('0x46'),null);this['setDataValue'](_0x32b8('0x47'),_0x391244);}},'dialPredictiveIntervalMaxThreshold':{'type':Sequelize[_0x32b8('0x14')](0x3)[_0x32b8('0x23')],'defaultValue':0x14,'validate':{'min':0x1,'max':0x64}},'dialPredictiveIntervalMinThreshold':{'type':Sequelize[_0x32b8('0x14')](0x3)[_0x32b8('0x23')],'defaultValue':0xa,'validate':{'min':0x1,'max':0x64}}};
\ No newline at end of file
+var _0xb368=['Max\x209999\x20member\x20in\x20queue(min:1,\x20max:9999),\x200\x20means\x20unlimited.','FLOAT','Power\x20Level:\x20Calls\x20for\x20agents\x20(min:1,\x20max:10).','agentBusyFactor','dropRate','Only\x20for\x20predictive\x20method.','Predictive\x20Optimization\x20Percentage\x20(min:\x201,\x20max:\x2095)','Interval\x20Predictive\x20Minutes\x20(min:5\x20max:30)','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','tTxX','Queue\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','#Congestion\x20Retry\x20(min:1,\x20max:999)','Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Busy\x20Retry\x20(min:1,\x20max:999)','Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#NoAnswer\x20Retry\x20(min:1,\x20max:999)','07:00-22:00,*,*,*','always','onlyIfOpen','Active/Disactive\x20AMD','#AMD\x20Initial\x20Silence','#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)','Active/Disactive\x20Recall\x20In\x20Queue','ASC','AGI\x20queue\x20option\x20(use:\x20agi://127.0.0.1/square,<project_name>)','NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Drop\x20Retry\x20(min:1,\x20max:999)','Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Machine\x20Retry\x20(min:1,\x20max:999)','Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#AgentReject\x20Retry\x20(min:1,\x20max:999)','AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','exports','STRING','name','outbound','default','ENUM','random','rrmemory','linear','wrandom','rrordered','ringall','strategy','type','getDataValue','dialMethod','inbound','booked','roundrobin','progressive','predictive','power','INTEGER','yes','all','TEXT','setDataValue','periodic_announce','join','split','joinempty','leavewhenempty','acw','wrapuptime','BOOLEAN','Active/Disactive\x20Campaign','preview','Dial\x20Method.','UNSIGNED'];(function(_0x15cfde,_0x9a5dc9){var _0x3844d8=function(_0x42030b){while(--_0x42030b){_0x15cfde['push'](_0x15cfde['shift']());}};_0x3844d8(++_0x9a5dc9);}(_0xb368,0x1be));var _0x8b36=function(_0x1d036d,_0x26cf09){_0x1d036d=_0x1d036d-0x0;var _0x3a568d=_0xb368[_0x1d036d];return _0x3a568d;};'use strict';var Sequelize=require(_0x8b36('0x0'));module[_0x8b36('0x1')]={'name':{'type':Sequelize[_0x8b36('0x2')],'allowNull':![],'unique':_0x8b36('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize['ENUM']('inbound',_0x8b36('0x4')),'allowNull':![],'defaultValue':'inbound'},'musiconhold':{'type':Sequelize[_0x8b36('0x2')],'defaultValue':_0x8b36('0x5')},'announce':{'type':Sequelize['STRING'],'defaultValue':''},'strategy':{'type':Sequelize[_0x8b36('0x6')]('rr','ringall','leastrecent','fewestcalls',_0x8b36('0x7'),_0x8b36('0x8'),_0x8b36('0x9'),_0x8b36('0xa'),_0x8b36('0xb')),'allowNull':![],'defaultValue':_0x8b36('0xc'),'set':function(_0x496e5f){this['setDataValue'](_0x8b36('0xd'),_0x496e5f?_0x496e5f:_0x8b36('0x8'));},'get':function(){var _0x4ecdb2=this['getDataValue'](_0x8b36('0xe'));var _0x17ab6f=this[_0x8b36('0xf')](_0x8b36('0x10'));var _0x432a05=this['getDataValue']('strategy');if(_0x4ecdb2===_0x8b36('0x11')){return _0x432a05;}if(_0x17ab6f===_0x8b36('0x12')&&_0x432a05==='rrmemory'||_0x17ab6f==='booked'&&_0x432a05===_0x8b36('0x13')){return _0x432a05;}if(_0x17ab6f===_0x8b36('0x14')||_0x17ab6f===_0x8b36('0x15')||_0x17ab6f===_0x8b36('0x16')){return _0x432a05;}return null;}},'servicelevel':{'type':Sequelize[_0x8b36('0x17')](0xb),'defaultValue':0x0},'context':{'type':Sequelize[_0x8b36('0x2')],'defaultValue':null},'penaltymemberslimit':{'type':Sequelize[_0x8b36('0x17')](0xb)},'timeout':{'type':Sequelize[_0x8b36('0x17')](0xb),'defaultValue':0xf},'retry':{'type':Sequelize[_0x8b36('0x17')](0xb),'defaultValue':0x2},'timeoutpriority':{'type':Sequelize[_0x8b36('0x2')]},'weight':{'type':Sequelize[_0x8b36('0x17')](0xb),'allowNull':!![],'defaultValue':0x0},'wrapuptime':{'type':Sequelize[_0x8b36('0x17')](0xb),'defaultValue':0x0},'autofill':{'type':Sequelize[_0x8b36('0x6')]('yes','no'),'defaultValue':'yes'},'autopause':{'type':Sequelize['ENUM'](_0x8b36('0x18'),'no',_0x8b36('0x19')),'defaultValue':'no'},'autopausedelay':{'type':Sequelize[_0x8b36('0x17')](0xb)},'autopausebusy':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no'},'autopauseunavail':{'type':Sequelize[_0x8b36('0x6')](_0x8b36('0x18'),'no'),'defaultValue':'no'},'maxlen':{'type':Sequelize[_0x8b36('0x17')](0xb),'defaultValue':0x0},'setinterfacevar':{'type':Sequelize[_0x8b36('0x6')](_0x8b36('0x18'),'no'),'defaultValue':'no'},'setqueueentryvar':{'type':Sequelize[_0x8b36('0x6')](_0x8b36('0x18'),'no'),'defautValue':'no'},'setqueuevar':{'type':Sequelize[_0x8b36('0x6')]('yes','no'),'defaultValue':'no'},'eventmemberstatus':{'type':Sequelize[_0x8b36('0x6')](_0x8b36('0x18'),'no'),'defaultValue':'no'},'membermacro':{'type':Sequelize[_0x8b36('0x2')],'allowNull':!![]},'membergosub':{'type':Sequelize['STRING'],'allowNull':!![]},'announce_frequency':{'type':Sequelize[_0x8b36('0x17')](0xb),'defaultValue':0x0},'min_announce_frequency':{'type':Sequelize[_0x8b36('0x17')](0xb),'defaultValue':0x0},'periodic_announce_frequency':{'type':Sequelize[_0x8b36('0x17')](0xb),'defaultValue':0x0},'random_periodic_announce':{'type':Sequelize[_0x8b36('0x6')]('yes','no'),'defaultValue':'no'},'relative_periodic_announce':{'type':Sequelize[_0x8b36('0x6')](_0x8b36('0x18'),'no'),'defaultValue':_0x8b36('0x18')},'announce_holdtime':{'type':Sequelize[_0x8b36('0x6')](_0x8b36('0x18'),'no','once'),'defaultValue':'no'},'announce_position':{'type':Sequelize['STRING'],'defaultValue':'no'},'announce_to_first_user':{'type':Sequelize[_0x8b36('0x6')]('yes','no')},'announce_position_limit':{'type':Sequelize[_0x8b36('0x17')](0xb)},'announce_round_seconds':{'type':Sequelize[_0x8b36('0x6')]('0','5','10','15','20','30'),'defaultValue':'0'},'monitor_format':{'type':Sequelize[_0x8b36('0x2')],'defaultValue':''},'monitor_type':{'type':Sequelize[_0x8b36('0x2')]},'queue_youarenext':{'type':Sequelize[_0x8b36('0x2')],'defaultValue':null},'queue_thereare':{'type':Sequelize[_0x8b36('0x2')],'defaultValue':null},'queue_callswaiting':{'type':Sequelize[_0x8b36('0x2')],'defaultValue':null},'queue_holdtime':{'type':Sequelize[_0x8b36('0x2')],'defaultValue':null},'queue_minute':{'type':Sequelize[_0x8b36('0x2')],'allowNull':!![],'defaultValue':null},'queue_minutes':{'type':Sequelize['STRING'],'defaultValue':null},'queue_seconds':{'type':Sequelize[_0x8b36('0x2')],'defaultValue':null},'queue_thankyou':{'type':Sequelize[_0x8b36('0x2')],'defaultValue':null},'queue_reporthold':{'type':Sequelize[_0x8b36('0x2')]},'queue_quantity1':{'type':Sequelize[_0x8b36('0x2')]},'queue_quantity2':{'type':Sequelize[_0x8b36('0x2')]},'queue_periodic_announce':{'type':Sequelize['STRING']},'queue_less_than':{'type':Sequelize[_0x8b36('0x2')]},'periodic_announce':{'type':Sequelize[_0x8b36('0x1a')],'set':function(_0x2197f9){this[_0x8b36('0x1b')](_0x8b36('0x1c'),_0x2197f9?_0x2197f9[_0x8b36('0x1d')](','):[]);},'get':function(){return this[_0x8b36('0xf')](_0x8b36('0x1c'))?this['getDataValue'](_0x8b36('0x1c'))[_0x8b36('0x1e')](','):[];}},'joinempty':{'type':Sequelize[_0x8b36('0x2')],'defaultValue':_0x8b36('0x18'),'set':function(_0x466c91){this['setDataValue'](_0x8b36('0x1f'),_0x466c91?_0x466c91[_0x8b36('0x1d')](','):undefined);},'get':function(){return this[_0x8b36('0xf')]('joinempty')?this[_0x8b36('0xf')](_0x8b36('0x1f'))[_0x8b36('0x1e')](','):undefined;}},'leavewhenempty':{'type':Sequelize[_0x8b36('0x2')],'defaultValue':'no','set':function(_0x4df180){this[_0x8b36('0x1b')](_0x8b36('0x20'),_0x4df180?_0x4df180[_0x8b36('0x1d')](','):undefined);},'get':function(){return this[_0x8b36('0xf')]('leavewhenempty')?this['getDataValue'](_0x8b36('0x20'))[_0x8b36('0x1e')](','):undefined;}},'reportholdtime':{'type':Sequelize[_0x8b36('0x6')](_0x8b36('0x18'),'no'),'defaultValue':'no'},'ringinuse':{'type':Sequelize[_0x8b36('0x6')](_0x8b36('0x18'),'no'),'defaultValue':'no'},'memberdelay':{'type':Sequelize[_0x8b36('0x17')](0xb),'defaultValue':0x0},'timeoutrestart':{'type':Sequelize[_0x8b36('0x6')](_0x8b36('0x18'),'no'),'defaultValue':'no'},'defaultrule':{'type':Sequelize[_0x8b36('0x2')]},'description':{'type':Sequelize[_0x8b36('0x2')]},'acw':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'set':function(_0x36926e){this['setDataValue'](_0x8b36('0x21'),_0x36926e);if(_0x36926e){if(this[_0x8b36('0xf')](_0x8b36('0x22'))<0x2){this[_0x8b36('0x1b')](_0x8b36('0x22'),0x2);}}}},'acwTimeout':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0xa},'dialActive':{'type':Sequelize[_0x8b36('0x23')],'defaultValue':0x0,'comment':_0x8b36('0x24')},'dialMethod':{'type':Sequelize[_0x8b36('0x6')](_0x8b36('0x25'),_0x8b36('0x14'),_0x8b36('0x16'),_0x8b36('0x15'),_0x8b36('0x12')),'defaultValue':'progressive','comment':_0x8b36('0x26')},'dialLimitChannel':{'type':Sequelize['INTEGER'](0x4)[_0x8b36('0x27')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':'Max\x209999\x20channels,\x200\x20means\x20unlimited.'},'dialLimitQueue':{'type':Sequelize[_0x8b36('0x17')](0x4)[_0x8b36('0x27')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0x8b36('0x28')},'dialPowerLevel':{'type':Sequelize[_0x8b36('0x29')](0x2)['UNSIGNED'],'defaultValue':0x1,'validate':{'min':0x1,'max':0xa},'comment':_0x8b36('0x2a')},'dialPredictiveOptimization':{'type':Sequelize[_0x8b36('0x6')](_0x8b36('0x2b'),_0x8b36('0x2c')),'defaultValue':_0x8b36('0x2c'),'comment':_0x8b36('0x2d')},'dialPredictiveOptimizationPercentage':{'type':Sequelize['FLOAT'](0x2)[_0x8b36('0x27')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5f},'comment':_0x8b36('0x2e')},'dialPredictiveInterval':{'type':Sequelize[_0x8b36('0x17')](0x3)[_0x8b36('0x27')],'defaultValue':0xa,'validate':{'min':0x5,'max':0x1e},'comment':_0x8b36('0x2f')},'dialOriginateCallerIdName':{'type':Sequelize['STRING']},'dialOriginateCallerIdNumber':{'type':Sequelize[_0x8b36('0x2')]},'dialOriginateTimeout':{'type':Sequelize[_0x8b36('0x17')](0x3)['UNSIGNED'],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0x8b36('0x30')},'dialQueueOptions':{'type':Sequelize[_0x8b36('0x2')],'defaultValue':_0x8b36('0x31'),'comment':'https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+Application_Queue'},'dialQueueTimeout':{'type':Sequelize[_0x8b36('0x17')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x8b36('0x32')},'dialQueueProject':{'type':Sequelize[_0x8b36('0x2')],'comment':'AGI\x20queue\x20option\x20(use:\x20agi://127.0.0.1/square,<project_name>)'},'dialCongestionMaxRetry':{'type':Sequelize[_0x8b36('0x17')](0x3)[_0x8b36('0x27')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x8b36('0x33')},'dialCongestionRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x8b36('0x27')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x8b36('0x34')},'dialBusyMaxRetry':{'type':Sequelize[_0x8b36('0x17')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x8b36('0x35')},'dialBusyRetryFrequency':{'type':Sequelize[_0x8b36('0x17')](0x5)[_0x8b36('0x27')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x8b36('0x36')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0x8b36('0x17')](0x3)[_0x8b36('0x27')],'defaultValue':0x3,'comment':_0x8b36('0x37')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0x8b36('0x17')](0x5)[_0x8b36('0x27')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialGlobalMaxRetry':{'type':Sequelize[_0x8b36('0x17')](0x3)[_0x8b36('0x27')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':'#Global\x20Max\x20Retry\x20(min:1,\x20max:999)'},'dialTimezone':{'type':Sequelize[_0x8b36('0x2')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0x8b36('0x2')],'defaultValue':_0x8b36('0x38')},'dialPrefix':{'type':Sequelize[_0x8b36('0x2')],'defaultValue':null},'dialCheckDuplicateType':{'type':Sequelize['ENUM'](_0x8b36('0x39'),'never',_0x8b36('0x3a')),'defaultValue':_0x8b36('0x39')},'dialAMDActive':{'type':Sequelize[_0x8b36('0x23')],'defaultValue':0x0,'comment':_0x8b36('0x3b')},'dialAMDInitialSilence':{'type':Sequelize[_0x8b36('0x17')](0x9)['UNSIGNED'],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0x8b36('0x3c')},'dialAMDGreeting':{'type':Sequelize[_0x8b36('0x17')](0x9)['UNSIGNED'],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0x8b36('0x3d')},'dialAMDAfterGreetingSilence':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0x8b36('0x3e')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0x8b36('0x17')](0x9)[_0x8b36('0x27')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x8b36('0x3f')},'dialAMDMinWordLength':{'type':Sequelize[_0x8b36('0x17')](0x9)[_0x8b36('0x27')],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0x8b36('0x40')},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0x8b36('0x17')](0x9)['UNSIGNED'],'defaultValue':0x32,'validate':{'min':0x0},'comment':'#AMD\x20Between\x20Words\x20Silence'},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0x8b36('0x17')](0x9)[_0x8b36('0x27')],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0x8b36('0x41')},'dialAMDSilenceThreshold':{'type':Sequelize[_0x8b36('0x17')](0x5)[_0x8b36('0x27')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0x8b36('0x42')},'dialAMDMaximumWordLength':{'type':Sequelize[_0x8b36('0x17')](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Word\x20Length'},'dialRecallMeTimeout':{'type':Sequelize[_0x8b36('0x17')](0x5)[_0x8b36('0x27')],'validate':{'min':0x1},'defaultValue':0x1e,'comment':'#RecallMe\x20Timeout\x20(min:1)'},'dialRecallInQueue':{'type':Sequelize[_0x8b36('0x23')],'defaultValue':0x0,'comment':_0x8b36('0x43')},'dialOrderByScheduledAt':{'type':Sequelize[_0x8b36('0x6')]('DESC',_0x8b36('0x44')),'defaultValue':'DESC'},'dialQueueProject2':{'type':Sequelize[_0x8b36('0x2')],'comment':_0x8b36('0x45')},'dialAgiAfterHangupClient':{'type':Sequelize[_0x8b36('0x23')],'defaultValue':![]},'dialAgiAfterHangupAgent':{'type':Sequelize[_0x8b36('0x23')],'defaultValue':![]},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Random\x20Last\x20Digit\x20(min:1,\x20max:15)'},'dialCutDigit':{'type':Sequelize[_0x8b36('0x17')](0x3)[_0x8b36('0x27')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Cut\x20Digit\x20(min:1,\x20max:15)'},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0x8b36('0x17')](0x3)[_0x8b36('0x27')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)'},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0x8b36('0x17')](0x5)[_0x8b36('0x27')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x8b36('0x46')},'dialDropMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x8b36('0x27')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x8b36('0x47')},'dialDropRetryFrequency':{'type':Sequelize[_0x8b36('0x17')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialAbandonedMaxRetry':{'type':Sequelize[_0x8b36('0x17')](0x3)[_0x8b36('0x27')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Abandoned\x20Retry\x20(min:1,\x20max:999)'},'dialAbandonedRetryFrequency':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x8b36('0x48')},'dialMachineMaxRetry':{'type':Sequelize[_0x8b36('0x17')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x8b36('0x49')},'dialMachineRetryFrequency':{'type':Sequelize[_0x8b36('0x17')](0x5)[_0x8b36('0x27')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x8b36('0x4a')},'dialAgentRejectMaxRetry':{'type':Sequelize[_0x8b36('0x17')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x8b36('0x4b')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0x8b36('0x17')](0x5)[_0x8b36('0x27')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x8b36('0x4c')},'mandatoryDispositionPauseId':{'type':Sequelize[_0x8b36('0x17')],'allowNull':!![],'comment':_0x8b36('0x4d')},'mandatoryDisposition':{'type':Sequelize[_0x8b36('0x23')],'defaultValue':![],'comment':_0x8b36('0x4e'),'set':function(_0x468fd5){if(!_0x468fd5)this[_0x8b36('0x1b')](_0x8b36('0x4f'),null);this['setDataValue'](_0x8b36('0x50'),_0x468fd5);}},'dialPredictiveIntervalMaxThreshold':{'type':Sequelize[_0x8b36('0x17')](0x3)[_0x8b36('0x27')],'defaultValue':0x14,'validate':{'min':0x1,'max':0x64}},'dialPredictiveIntervalMinThreshold':{'type':Sequelize[_0x8b36('0x17')](0x3)[_0x8b36('0x27')],'defaultValue':0xa,'validate':{'min':0x1,'max':0x64}},'dialPreviewAutoRecallMe':{'type':Sequelize[_0x8b36('0x23')],'defaultValue':!![]}};
\ No newline at end of file
index e1c456a..0b03e8f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x08f5=['addLists','dialCheckDuplicateType','always','insert','fromQuery','phone','scheduledAt','ContactId','ListId','NOW()','CmListId','from','cm_contacts','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','cm_hopper_final','COALESCE(phone,\x27\x27)','VoiceQueueId\x20=\x20?','onlyIfOpen','into','cm_hopper','deletedAt\x20IS\x20NULL','removeLists','getBlackLists','addBlackLists','cm_hopper_black','removeBlackLists','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','sox','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','socket.io-emitter','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','then','get','VoiceQueues','inbound','QueueCampaigns','outbound','ignore','map','value','includes','find','type','error','stack','name','send','model','query','keys','filters','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','VoiceQueue','includeAll','include','catch','show','params','fields','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','omit','createdAt','updatedAt','body','UserProfileSection','getHoppers','findOne','CmHopper','findAll','rows','CmHopperHistory','getHopperFinals','CmHopperFinal','rawAttributes','CmHopperBlack','VoiceQueueId','getTeams','Team','addTeams','teams','User','Agents','online','voicePause','interface','flatMap','penalty','sequelize','transaction','each','TeamVoiceQueue','upsert','UserVoiceQueue','findOrCreate','UserVoiceQueueRt','isNil','SIP/%s','forEach','emit','select','field','team_has_voice_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','ut.UserId\x20=\x20?','push','toString','SELECT','every','TeamId','all','compact','ids','isEmpty','removeAgents','addAgents','spread','userVoiceQueue:save','format','isArray','userVoiceQueue:remove','getAgents','getMembers','getLists','CmList'];(function(_0x1a57d6,_0x4e36d6){var _0x2d98f4=function(_0x4e854d){while(--_0x4e854d){_0x1a57d6['push'](_0x1a57d6['shift']());}};_0x2d98f4(++_0x4e36d6);}(_0x08f5,0x18c));var _0x508f=function(_0x28fbbf,_0x11f896){_0x28fbbf=_0x28fbbf-0x0;var _0x543af6=_0x08f5[_0x28fbbf];return _0x543af6;};'use strict';var emlformat=require(_0x508f('0x0'));var rimraf=require(_0x508f('0x1'));var zipdir=require(_0x508f('0x2'));var jsonpatch=require(_0x508f('0x3'));var rp=require(_0x508f('0x4'));var moment=require('moment');var BPromise=require(_0x508f('0x5'));var Mustache=require('mustache');var util=require(_0x508f('0x6'));var path=require('path');var sox=require(_0x508f('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x508f('0x8'));var _=require(_0x508f('0x9'));var squel=require(_0x508f('0xa'));var crypto=require(_0x508f('0xb'));var jsforce=require(_0x508f('0xc'));var deskjs=require(_0x508f('0xd'));var toCsv=require(_0x508f('0xe'));var querystring=require(_0x508f('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x508f('0x10'));var as=require(_0x508f('0x11'));var hardwareService=require(_0x508f('0x12'));var logger=require(_0x508f('0x13'))(_0x508f('0x14'));var utils=require(_0x508f('0x15'));var config=require(_0x508f('0x16'));var licenseUtil=require(_0x508f('0x17'));var db=require('../../mysqldb')['db'];config[_0x508f('0x18')]=_[_0x508f('0x19')](config[_0x508f('0x18')],{'host':'localhost','port':0x18eb});var socket=require(_0x508f('0x1a'))(new Redis(config[_0x508f('0x18')]));require('./voiceQueue.socket')['register'](socket);function respondWithStatusCode(_0x476685,_0x19a8de){_0x19a8de=_0x19a8de||0xcc;return function(_0x131c71){if(_0x131c71){return _0x476685[_0x508f('0x1b')](_0x19a8de);}return _0x476685[_0x508f('0x1c')](_0x19a8de)[_0x508f('0x1d')]();};}function respondWithResult(_0x499e49,_0x1a2908){_0x1a2908=_0x1a2908||0xc8;return function(_0x3010e4){if(_0x3010e4){return _0x499e49[_0x508f('0x1c')](_0x1a2908)[_0x508f('0x1e')](_0x3010e4);}};}function respondWithFilteredResult(_0x3b5cfd,_0x53e6dd){return function(_0x134547){if(_0x134547){var _0x57e1f2=typeof _0x53e6dd[_0x508f('0x1f')]===_0x508f('0x20')&&typeof _0x53e6dd[_0x508f('0x21')]==='undefined';var _0x2c9920=_0x134547[_0x508f('0x22')];var _0x550ecf=_0x57e1f2?0x0:_0x53e6dd[_0x508f('0x1f')];var _0xa387a9=_0x57e1f2?_0x134547[_0x508f('0x22')]:_0x53e6dd[_0x508f('0x1f')]+_0x53e6dd[_0x508f('0x21')];var _0x2343ec;if(_0xa387a9>=_0x2c9920){_0xa387a9=_0x2c9920;_0x2343ec=0xc8;}else{_0x2343ec=0xce;}_0x3b5cfd[_0x508f('0x1c')](_0x2343ec);return _0x3b5cfd[_0x508f('0x23')](_0x508f('0x24'),_0x550ecf+'-'+_0xa387a9+'/'+_0x2c9920)[_0x508f('0x1e')](_0x134547);}return null;};}function patchUpdates(_0x283803){return function(_0x29dd02){try{jsonpatch[_0x508f('0x25')](_0x29dd02,_0x283803,!![]);}catch(_0x46f20c){return BPromise[_0x508f('0x26')](_0x46f20c);}return _0x29dd02[_0x508f('0x27')]();};}function saveUpdates(_0x91065e,_0x5f4e83){return function(_0x48ed45){if(_0x48ed45){return _0x48ed45[_0x508f('0x28')](_0x91065e)['then'](function(_0x40ce50){return _0x40ce50;});}return null;};}function removeEntity(_0x48d9ee,_0x1ad92e){return function(_0x51be4b){if(_0x51be4b){return _0x51be4b[_0x508f('0x29')]()[_0x508f('0x2a')](function(){var _0x56f9c0=_0x51be4b[_0x508f('0x2b')]({'plain':!![]});var _0x33cb8e=[{'name':_0x508f('0x2c'),'value':_0x508f('0x2d'),'ignore':![]},{'name':_0x508f('0x2e'),'value':_0x508f('0x2f'),'ignore':![]}];var _0x554bd4=_(_0x33cb8e)['filter'](_0x508f('0x30'))[_0x508f('0x31')](_0x508f('0x32'))[_0x508f('0x32')]();if(_[_0x508f('0x33')](_0x554bd4,_0x56f9c0['type'])){return;}var _0x70af17=_[_0x508f('0x34')](_0x33cb8e,[_0x508f('0x32'),_0x56f9c0[_0x508f('0x35')]])['name'];return db['UserProfileResource']['destroy']({'where':{'type':_0x70af17,'resourceId':_0x56f9c0['id']}})[_0x508f('0x2a')](function(){return _0x51be4b;});})[_0x508f('0x2a')](function(){_0x48d9ee[_0x508f('0x1c')](0xcc)[_0x508f('0x1d')]();});}};}function handleEntityNotFound(_0x54f1b1,_0x3ac7fd){return function(_0x47e732){if(!_0x47e732){_0x54f1b1['sendStatus'](0x194);}return _0x47e732;};}function handleError(_0xf14e59,_0x353b72){_0x353b72=_0x353b72||0x1f4;return function(_0x223f41){logger[_0x508f('0x36')](_0x223f41[_0x508f('0x37')]);if(_0x223f41[_0x508f('0x38')]){delete _0x223f41[_0x508f('0x38')];}_0xf14e59['status'](_0x353b72)[_0x508f('0x39')](_0x223f41);};}exports['index']=function(_0x3c59d6,_0x3faa7b){var _0x2bc514={},_0x541af0={},_0x15c1ad={'count':0x0,'rows':[]};var _0x128ef1=_[_0x508f('0x31')](db['VoiceQueue']['rawAttributes'],function(_0x5aa5a5){return{'name':_0x5aa5a5['fieldName'],'type':_0x5aa5a5[_0x508f('0x35')]['key']};});_0x541af0[_0x508f('0x3a')]=_[_0x508f('0x31')](_0x128ef1,'name');_0x541af0[_0x508f('0x3b')]=_[_0x508f('0x3c')](_0x3c59d6[_0x508f('0x3b')]);_0x541af0[_0x508f('0x3d')]=_[_0x508f('0x3e')](_0x541af0[_0x508f('0x3a')],_0x541af0[_0x508f('0x3b')]);_0x2bc514[_0x508f('0x3f')]=_['intersection'](_0x541af0['model'],qs['fields'](_0x3c59d6[_0x508f('0x3b')]['fields']));_0x2bc514['attributes']=_0x2bc514[_0x508f('0x3f')][_0x508f('0x40')]?_0x2bc514['attributes']:_0x541af0[_0x508f('0x3a')];if(!_0x3c59d6[_0x508f('0x3b')][_0x508f('0x41')](_0x508f('0x42'))){_0x2bc514[_0x508f('0x21')]=qs['limit'](_0x3c59d6[_0x508f('0x3b')][_0x508f('0x21')]);_0x2bc514[_0x508f('0x1f')]=qs[_0x508f('0x1f')](_0x3c59d6[_0x508f('0x3b')][_0x508f('0x1f')]);}_0x2bc514[_0x508f('0x43')]=qs[_0x508f('0x44')](_0x3c59d6[_0x508f('0x3b')]['sort']);_0x2bc514[_0x508f('0x45')]=qs[_0x508f('0x3d')](_[_0x508f('0x46')](_0x3c59d6[_0x508f('0x3b')],_0x541af0[_0x508f('0x3d')]),_0x128ef1);if(_0x3c59d6['query'][_0x508f('0x47')]){_0x2bc514[_0x508f('0x45')]=_[_0x508f('0x48')](_0x2bc514['where'],{'$or':_[_0x508f('0x31')](_0x128ef1,function(_0x218434){if(_0x218434[_0x508f('0x35')]!==_0x508f('0x49')){var _0x56efab={};_0x56efab[_0x218434[_0x508f('0x38')]]={'$like':'%'+_0x3c59d6[_0x508f('0x3b')][_0x508f('0x47')]+'%'};return _0x56efab;}})});}_0x2bc514=_[_0x508f('0x48')]({},_0x2bc514,_0x3c59d6[_0x508f('0x4a')]);var _0xa6c30f={'where':_0x2bc514['where']};return db[_0x508f('0x4b')][_0x508f('0x22')](_0xa6c30f)[_0x508f('0x2a')](function(_0x26c502){_0x15c1ad['count']=_0x26c502;if(_0x3c59d6[_0x508f('0x3b')][_0x508f('0x4c')]){_0x2bc514[_0x508f('0x4d')]=[{'all':!![]}];}return db[_0x508f('0x4b')]['findAll'](_0x2bc514);})[_0x508f('0x2a')](function(_0x37fcce){_0x15c1ad['rows']=_0x37fcce;return _0x15c1ad;})['then'](respondWithFilteredResult(_0x3faa7b,_0x2bc514))[_0x508f('0x4e')](handleError(_0x3faa7b,null));};exports[_0x508f('0x4f')]=function(_0x4c26c6,_0x2b75ca){var _0x2a67cd={'raw':![],'where':{'id':_0x4c26c6[_0x508f('0x50')]['id']}},_0x4dc97f={};_0x4dc97f['model']=_[_0x508f('0x3c')](db['VoiceQueue']['rawAttributes']);_0x4dc97f[_0x508f('0x3b')]=_[_0x508f('0x3c')](_0x4c26c6[_0x508f('0x3b')]);_0x4dc97f[_0x508f('0x3d')]=_[_0x508f('0x3e')](_0x4dc97f['model'],_0x4dc97f[_0x508f('0x3b')]);_0x2a67cd[_0x508f('0x3f')]=_[_0x508f('0x3e')](_0x4dc97f['model'],qs[_0x508f('0x51')](_0x4c26c6[_0x508f('0x3b')][_0x508f('0x51')]));_0x2a67cd['attributes']=_0x2a67cd[_0x508f('0x3f')]['length']?_0x2a67cd[_0x508f('0x3f')]:_0x4dc97f[_0x508f('0x3a')];if(_0x4c26c6[_0x508f('0x3b')][_0x508f('0x4c')]){_0x2a67cd[_0x508f('0x4d')]=[{'all':!![]}];}_0x2a67cd=_['merge']({},_0x2a67cd,_0x4c26c6['options']);return db[_0x508f('0x4b')][_0x508f('0x34')](_0x2a67cd)[_0x508f('0x2a')](handleEntityNotFound(_0x2b75ca,null))[_0x508f('0x2a')](respondWithResult(_0x2b75ca,null))[_0x508f('0x4e')](handleError(_0x2b75ca,null));};exports[_0x508f('0x52')]=function(_0x11a4e6,_0x575d08){return db['VoiceQueue'][_0x508f('0x52')](_0x11a4e6['body'],{})[_0x508f('0x2a')](function(_0x4c96b3){var _0x4386f7=_0x11a4e6[_0x508f('0x53')][_0x508f('0x2b')]({'plain':!![]});if(!_0x4386f7)throw new Error(_0x508f('0x54'));if(_0x4386f7['role']===_0x508f('0x53')){var _0x3f0f30=_0x4c96b3[_0x508f('0x2b')]({'plain':!![]});var _0x4e8cb6=[{'name':'VoiceQueues','value':_0x508f('0x2d')},{'name':'QueueCampaigns','value':_0x508f('0x2f')}];var _0x29699c=_[_0x508f('0x34')](_0x4e8cb6,[_0x508f('0x32'),_0x3f0f30[_0x508f('0x35')]])[_0x508f('0x38')];return db['UserProfileSection']['find']({'where':{'name':_0x29699c,'userProfileId':_0x4386f7[_0x508f('0x55')]},'raw':!![]})['then'](function(_0x2a97bf){if(_0x2a97bf&&_0x2a97bf[_0x508f('0x56')]===0x0){return db[_0x508f('0x57')][_0x508f('0x52')]({'name':_0x3f0f30[_0x508f('0x38')],'resourceId':_0x3f0f30['id'],'type':_0x2a97bf[_0x508f('0x38')],'sectionId':_0x2a97bf['id']},{})[_0x508f('0x2a')](function(){return _0x4c96b3;});}else{return _0x4c96b3;}})[_0x508f('0x4e')](function(_0x520f27){logger['error'](_0x508f('0x58'),_0x520f27);throw _0x520f27;});}return _0x4c96b3;})['then'](respondWithResult(_0x575d08,0xc9))[_0x508f('0x4e')](handleError(_0x575d08,null));};exports[_0x508f('0x59')]=function(_0x2cd8e1,_0x17399b){var _0x1e04a4={'where':{'id':_0x2cd8e1[_0x508f('0x50')]['id']}},_0x3ee95c={};_0x3ee95c['model']=_[_0x508f('0x3c')](db['VoiceQueue']['rawAttributes']);_0x1e04a4['attributes']=_[_0x508f('0x3e')](_0x3ee95c[_0x508f('0x3a')],qs['fields'](_0x2cd8e1[_0x508f('0x3b')][_0x508f('0x51')]));_0x1e04a4['attributes']=_0x1e04a4['attributes'][_0x508f('0x40')]?_0x1e04a4[_0x508f('0x3f')]:_0x3ee95c[_0x508f('0x3a')];if(_0x2cd8e1[_0x508f('0x3b')][_0x508f('0x4c')]){_0x1e04a4[_0x508f('0x4d')]=[{'all':!![]}];}_0x1e04a4=_[_0x508f('0x48')]({},_0x1e04a4,_0x2cd8e1[_0x508f('0x4a')]);return db[_0x508f('0x4b')][_0x508f('0x34')](_0x1e04a4)[_0x508f('0x2a')](handleEntityNotFound(_0x17399b,null))[_0x508f('0x2a')](function(_0x12af4b){if(_0x12af4b){var _0x3577d5=_0x12af4b['get']({'plain':!![]});_0x3577d5=qs[_0x508f('0x5a')](_0x3577d5,['id',_0x508f('0x5b'),_0x508f('0x5c')]);_0x2cd8e1[_0x508f('0x5d')]=_[_0x508f('0x5a')](_0x2cd8e1['body'],['id',_0x508f('0x5b'),_0x508f('0x5c')]);return db[_0x508f('0x4b')][_0x508f('0x52')](_[_0x508f('0x48')](_0x3577d5,_0x2cd8e1['body']),{'include':_0x2cd8e1['query'][_0x508f('0x4c')]?[{'all':!![]}]:undefined})[_0x508f('0x2a')](function(_0xb30466){var _0x3c364d=_0x2cd8e1[_0x508f('0x53')][_0x508f('0x2b')]({'plain':!![]});if(!_0x3c364d)throw new Error(_0x508f('0x54'));if(_0x3c364d['role']===_0x508f('0x53')){var _0x558142=_0xb30466[_0x508f('0x2b')]({'plain':!![]});var _0x2e65a3=[{'name':_0x508f('0x2c'),'value':_0x508f('0x2d')},{'name':_0x508f('0x2e'),'value':_0x508f('0x2f')}];var _0x4ec4de=_[_0x508f('0x34')](_0x2e65a3,[_0x508f('0x32'),_0x558142[_0x508f('0x35')]])[_0x508f('0x38')];return db[_0x508f('0x5e')][_0x508f('0x34')]({'where':{'name':_0x4ec4de,'userProfileId':_0x3c364d[_0x508f('0x55')]},'raw':!![]})[_0x508f('0x2a')](function(_0x578adc){if(_0x578adc&&_0x578adc[_0x508f('0x56')]===0x0){return db[_0x508f('0x57')][_0x508f('0x52')]({'name':_0x558142['name'],'resourceId':_0x558142['id'],'type':_0x578adc[_0x508f('0x38')],'sectionId':_0x578adc['id']},{})[_0x508f('0x2a')](function(){return _0xb30466;});}else{return _0xb30466;}})[_0x508f('0x4e')](function(_0xa17719){logger['error'](_0x508f('0x58'),_0xa17719);throw _0xa17719;});}return _0xb30466;});}})[_0x508f('0x2a')](respondWithResult(_0x17399b,0xc9))[_0x508f('0x4e')](handleError(_0x17399b,null));};exports['update']=function(_0x495fda,_0x515a3){if(_0x495fda['body']['id']){delete _0x495fda[_0x508f('0x5d')]['id'];}return db[_0x508f('0x4b')][_0x508f('0x34')]({'where':{'id':_0x495fda[_0x508f('0x50')]['id']}})[_0x508f('0x2a')](handleEntityNotFound(_0x515a3,null))[_0x508f('0x2a')](saveUpdates(_0x495fda[_0x508f('0x5d')],null))[_0x508f('0x2a')](respondWithResult(_0x515a3,null))['catch'](handleError(_0x515a3,null));};exports[_0x508f('0x29')]=function(_0x2e151b,_0x532a55){return db[_0x508f('0x4b')]['find']({'where':{'id':_0x2e151b[_0x508f('0x50')]['id']}})[_0x508f('0x2a')](handleEntityNotFound(_0x532a55,null))[_0x508f('0x2a')](removeEntity(_0x532a55,null))[_0x508f('0x4e')](handleError(_0x532a55,null));};exports[_0x508f('0x5f')]=function(_0x1fa714,_0x24390a,_0x160cf9){var _0x298e92={'raw':![],'where':{}};var _0x1ccd32={};var _0x3b5f95={'count':0x0,'rows':[]};return db[_0x508f('0x4b')][_0x508f('0x60')]({'where':{'id':_0x1fa714[_0x508f('0x50')]['id']}})[_0x508f('0x2a')](handleEntityNotFound(_0x24390a,null))[_0x508f('0x2a')](function(_0x1fd5bf){if(_0x1fd5bf){_0x1ccd32[_0x508f('0x3a')]=_[_0x508f('0x3c')](db[_0x508f('0x61')]['rawAttributes']);_0x1ccd32[_0x508f('0x3b')]=_['keys'](_0x1fa714[_0x508f('0x3b')]);_0x1ccd32[_0x508f('0x3d')]=_[_0x508f('0x3e')](_0x1ccd32[_0x508f('0x3a')],_0x1ccd32['query']);_0x298e92[_0x508f('0x3f')]=_['intersection'](_0x1ccd32['model'],qs[_0x508f('0x51')](_0x1fa714[_0x508f('0x3b')][_0x508f('0x51')]));_0x298e92[_0x508f('0x3f')]=_0x298e92[_0x508f('0x3f')]['length']?_0x298e92[_0x508f('0x3f')]:_0x1ccd32[_0x508f('0x3a')];if(!_0x1fa714[_0x508f('0x3b')][_0x508f('0x41')](_0x508f('0x42'))){_0x298e92['limit']=qs['limit'](_0x1fa714[_0x508f('0x3b')]['limit']);_0x298e92[_0x508f('0x1f')]=qs[_0x508f('0x1f')](_0x1fa714['query'][_0x508f('0x1f')]);}_0x298e92[_0x508f('0x43')]=qs[_0x508f('0x44')](_0x1fa714['query'][_0x508f('0x44')]);_0x298e92['where']=qs[_0x508f('0x3d')](_[_0x508f('0x46')](_0x1fa714[_0x508f('0x3b')],_0x1ccd32[_0x508f('0x3d')]));_0x298e92['where']['VoiceQueueId']=_0x1fd5bf['id'];if(_0x1fa714[_0x508f('0x3b')][_0x508f('0x47')]){_0x298e92[_0x508f('0x45')]=_[_0x508f('0x48')](_0x298e92[_0x508f('0x45')],{'$or':_[_0x508f('0x31')](_0x298e92[_0x508f('0x3f')],function(_0x4b090f){var _0x537b0f={};_0x537b0f[_0x4b090f]={'$like':'%'+_0x1fa714[_0x508f('0x3b')][_0x508f('0x47')]+'%'};return _0x537b0f;})});}_0x298e92=_['merge']({},_0x298e92,_0x1fa714[_0x508f('0x4a')]);return db[_0x508f('0x61')][_0x508f('0x22')]({'where':_0x298e92[_0x508f('0x45')]})[_0x508f('0x2a')](function(_0x4895b4){_0x3b5f95[_0x508f('0x22')]=_0x4895b4;if(_0x1fa714[_0x508f('0x3b')][_0x508f('0x4c')]){_0x298e92[_0x508f('0x4d')]=[{'all':!![]}];}return db['CmHopper'][_0x508f('0x62')](_0x298e92);})[_0x508f('0x2a')](function(_0x29e9c7){_0x3b5f95[_0x508f('0x63')]=_0x29e9c7;return _0x3b5f95;});}})['then'](respondWithFilteredResult(_0x24390a,_0x298e92))[_0x508f('0x4e')](handleError(_0x24390a,null));};exports['getHopperHistories']=function(_0xff2d04,_0x4f213d,_0x6313d3){var _0x5d0768={'raw':!![],'where':{}};var _0x408466={};var _0x2b42b7={'count':0x0,'rows':[]};return db[_0x508f('0x4b')][_0x508f('0x60')]({'where':{'id':_0xff2d04[_0x508f('0x50')]['id']}})[_0x508f('0x2a')](handleEntityNotFound(_0x4f213d,null))['then'](function(_0x186e7c){if(_0x186e7c){_0x408466[_0x508f('0x3a')]=_[_0x508f('0x3c')](db[_0x508f('0x64')]['rawAttributes']);_0x408466[_0x508f('0x3b')]=_[_0x508f('0x3c')](_0xff2d04[_0x508f('0x3b')]);_0x408466['filters']=_[_0x508f('0x3e')](_0x408466[_0x508f('0x3a')],_0x408466[_0x508f('0x3b')]);_0x5d0768[_0x508f('0x3f')]=_[_0x508f('0x3e')](_0x408466[_0x508f('0x3a')],qs[_0x508f('0x51')](_0xff2d04[_0x508f('0x3b')][_0x508f('0x51')]));_0x5d0768['attributes']=_0x5d0768[_0x508f('0x3f')][_0x508f('0x40')]?_0x5d0768[_0x508f('0x3f')]:_0x408466[_0x508f('0x3a')];if(!_0xff2d04[_0x508f('0x3b')][_0x508f('0x41')](_0x508f('0x42'))){_0x5d0768['limit']=qs['limit'](_0xff2d04[_0x508f('0x3b')][_0x508f('0x21')]);_0x5d0768[_0x508f('0x1f')]=qs['offset'](_0xff2d04['query'][_0x508f('0x1f')]);}_0x5d0768[_0x508f('0x43')]=qs['sort'](_0xff2d04[_0x508f('0x3b')][_0x508f('0x44')]);_0x5d0768['where']=qs[_0x508f('0x3d')](_[_0x508f('0x46')](_0xff2d04[_0x508f('0x3b')],_0x408466[_0x508f('0x3d')]));_0x5d0768[_0x508f('0x45')]['VoiceQueueId']=_0x186e7c['id'];if(_0xff2d04[_0x508f('0x3b')][_0x508f('0x47')]){_0x5d0768['where']=_[_0x508f('0x48')](_0x5d0768['where'],{'$or':_['map'](_0x5d0768[_0x508f('0x3f')],function(_0x1f457e){var _0x2e2d8c={};_0x2e2d8c[_0x1f457e]={'$like':'%'+_0xff2d04[_0x508f('0x3b')][_0x508f('0x47')]+'%'};return _0x2e2d8c;})});}_0x5d0768=_[_0x508f('0x48')]({},_0x5d0768,_0xff2d04[_0x508f('0x4a')]);return db[_0x508f('0x64')][_0x508f('0x22')]({'where':_0x5d0768['where']})[_0x508f('0x2a')](function(_0x87b95e){_0x2b42b7[_0x508f('0x22')]=_0x87b95e;if(_0xff2d04[_0x508f('0x3b')][_0x508f('0x4c')]){_0x5d0768[_0x508f('0x4d')]=[{'all':!![]}];}return db[_0x508f('0x64')][_0x508f('0x62')](_0x5d0768);})[_0x508f('0x2a')](function(_0x1816bc){_0x2b42b7[_0x508f('0x63')]=_0x1816bc;return _0x2b42b7;});}})[_0x508f('0x2a')](respondWithFilteredResult(_0x4f213d,_0x5d0768))[_0x508f('0x4e')](handleError(_0x4f213d,null));};exports[_0x508f('0x65')]=function(_0x504380,_0x31c8aa,_0x151c13){var _0x418da3={'raw':!![],'where':{}};var _0xd6521f={};var _0x41ef59={'count':0x0,'rows':[]};return db[_0x508f('0x4b')][_0x508f('0x60')]({'where':{'id':_0x504380[_0x508f('0x50')]['id']}})['then'](handleEntityNotFound(_0x31c8aa,null))[_0x508f('0x2a')](function(_0x44c65b){if(_0x44c65b){_0xd6521f['model']=_[_0x508f('0x3c')](db[_0x508f('0x66')][_0x508f('0x67')]);_0xd6521f[_0x508f('0x3b')]=_['keys'](_0x504380[_0x508f('0x3b')]);_0xd6521f[_0x508f('0x3d')]=_['intersection'](_0xd6521f[_0x508f('0x3a')],_0xd6521f[_0x508f('0x3b')]);_0x418da3['attributes']=_[_0x508f('0x3e')](_0xd6521f['model'],qs[_0x508f('0x51')](_0x504380[_0x508f('0x3b')][_0x508f('0x51')]));_0x418da3['attributes']=_0x418da3[_0x508f('0x3f')]['length']?_0x418da3[_0x508f('0x3f')]:_0xd6521f[_0x508f('0x3a')];if(!_0x504380['query'][_0x508f('0x41')]('nolimit')){_0x418da3[_0x508f('0x21')]=qs[_0x508f('0x21')](_0x504380['query'][_0x508f('0x21')]);_0x418da3[_0x508f('0x1f')]=qs[_0x508f('0x1f')](_0x504380[_0x508f('0x3b')][_0x508f('0x1f')]);}_0x418da3[_0x508f('0x43')]=qs[_0x508f('0x44')](_0x504380['query']['sort']);_0x418da3['where']=qs['filters'](_[_0x508f('0x46')](_0x504380[_0x508f('0x3b')],_0xd6521f[_0x508f('0x3d')]));_0x418da3['where']['VoiceQueueId']=_0x44c65b['id'];if(_0x504380[_0x508f('0x3b')][_0x508f('0x47')]){_0x418da3[_0x508f('0x45')]=_[_0x508f('0x48')](_0x418da3[_0x508f('0x45')],{'$or':_['map'](_0x418da3[_0x508f('0x3f')],function(_0x8801d5){var _0x4437e6={};_0x4437e6[_0x8801d5]={'$like':'%'+_0x504380[_0x508f('0x3b')]['filter']+'%'};return _0x4437e6;})});}_0x418da3=_[_0x508f('0x48')]({},_0x418da3,_0x504380[_0x508f('0x4a')]);return db['CmHopperFinal']['count']({'where':_0x418da3[_0x508f('0x45')]})[_0x508f('0x2a')](function(_0x5b7996){_0x41ef59[_0x508f('0x22')]=_0x5b7996;if(_0x504380[_0x508f('0x3b')][_0x508f('0x4c')]){_0x418da3['include']=[{'all':!![]}];}return db[_0x508f('0x66')][_0x508f('0x62')](_0x418da3);})['then'](function(_0x53271e){_0x41ef59[_0x508f('0x63')]=_0x53271e;return _0x41ef59;});}})[_0x508f('0x2a')](respondWithFilteredResult(_0x31c8aa,_0x418da3))['catch'](handleError(_0x31c8aa,null));};exports['getHopperBlacks']=function(_0x1c531b,_0x226203,_0x59f81a){var _0x4bf735={'raw':!![],'where':{}};var _0x1fc11e={};var _0x34acc8={'count':0x0,'rows':[]};return db['VoiceQueue'][_0x508f('0x60')]({'where':{'id':_0x1c531b[_0x508f('0x50')]['id']}})['then'](handleEntityNotFound(_0x226203,null))['then'](function(_0x2467ca){if(_0x2467ca){_0x1fc11e[_0x508f('0x3a')]=_[_0x508f('0x3c')](db[_0x508f('0x68')]['rawAttributes']);_0x1fc11e[_0x508f('0x3b')]=_[_0x508f('0x3c')](_0x1c531b[_0x508f('0x3b')]);_0x1fc11e[_0x508f('0x3d')]=_[_0x508f('0x3e')](_0x1fc11e[_0x508f('0x3a')],_0x1fc11e[_0x508f('0x3b')]);_0x4bf735['attributes']=_[_0x508f('0x3e')](_0x1fc11e[_0x508f('0x3a')],qs[_0x508f('0x51')](_0x1c531b[_0x508f('0x3b')][_0x508f('0x51')]));_0x4bf735[_0x508f('0x3f')]=_0x4bf735['attributes'][_0x508f('0x40')]?_0x4bf735['attributes']:_0x1fc11e[_0x508f('0x3a')];if(!_0x1c531b[_0x508f('0x3b')][_0x508f('0x41')](_0x508f('0x42'))){_0x4bf735[_0x508f('0x21')]=qs[_0x508f('0x21')](_0x1c531b[_0x508f('0x3b')]['limit']);_0x4bf735['offset']=qs[_0x508f('0x1f')](_0x1c531b[_0x508f('0x3b')]['offset']);}_0x4bf735[_0x508f('0x43')]=qs[_0x508f('0x44')](_0x1c531b[_0x508f('0x3b')][_0x508f('0x44')]);_0x4bf735['where']=qs[_0x508f('0x3d')](_[_0x508f('0x46')](_0x1c531b[_0x508f('0x3b')],_0x1fc11e[_0x508f('0x3d')]));_0x4bf735[_0x508f('0x45')][_0x508f('0x69')]=_0x2467ca['id'];if(_0x1c531b[_0x508f('0x3b')][_0x508f('0x47')]){_0x4bf735['where']=_['merge'](_0x4bf735[_0x508f('0x45')],{'$or':_[_0x508f('0x31')](_0x4bf735[_0x508f('0x3f')],function(_0x4ebb44){var _0x3f0cd2={};_0x3f0cd2[_0x4ebb44]={'$like':'%'+_0x1c531b[_0x508f('0x3b')][_0x508f('0x47')]+'%'};return _0x3f0cd2;})});}_0x4bf735=_[_0x508f('0x48')]({},_0x4bf735,_0x1c531b['options']);return db[_0x508f('0x68')][_0x508f('0x22')]({'where':_0x4bf735['where']})[_0x508f('0x2a')](function(_0x35443f){_0x34acc8[_0x508f('0x22')]=_0x35443f;if(_0x1c531b['query'][_0x508f('0x4c')]){_0x4bf735['include']=[{'all':!![]}];}return db[_0x508f('0x68')][_0x508f('0x62')](_0x4bf735);})[_0x508f('0x2a')](function(_0x329ab8){_0x34acc8[_0x508f('0x63')]=_0x329ab8;return _0x34acc8;});}})['then'](respondWithFilteredResult(_0x226203,_0x4bf735))[_0x508f('0x4e')](handleError(_0x226203,null));};exports[_0x508f('0x6a')]=function(_0xc9ed16,_0x22beb9,_0x2dd379){var _0x13342c={};var _0x8c582b={};var _0x13c45c;var _0x697fcc;return db[_0x508f('0x4b')][_0x508f('0x60')]({'where':{'id':_0xc9ed16[_0x508f('0x50')]['id']}})[_0x508f('0x2a')](handleEntityNotFound(_0x22beb9,null))['then'](function(_0x1306c2){if(_0x1306c2){_0x13c45c=_0x1306c2;_0x8c582b['model']=_[_0x508f('0x3c')](db[_0x508f('0x6b')]['rawAttributes']);_0x8c582b['query']=_[_0x508f('0x3c')](_0xc9ed16[_0x508f('0x3b')]);_0x8c582b['filters']=_['intersection'](_0x8c582b[_0x508f('0x3a')],_0x8c582b[_0x508f('0x3b')]);_0x13342c[_0x508f('0x3f')]=_[_0x508f('0x3e')](_0x8c582b[_0x508f('0x3a')],qs[_0x508f('0x51')](_0xc9ed16[_0x508f('0x3b')]['fields']));_0x13342c[_0x508f('0x3f')]=_0x13342c['attributes']['length']?_0x13342c['attributes']:_0x8c582b[_0x508f('0x3a')];_0x13342c['order']=qs[_0x508f('0x44')](_0xc9ed16[_0x508f('0x3b')][_0x508f('0x44')]);_0x13342c[_0x508f('0x45')]=qs[_0x508f('0x3d')](_[_0x508f('0x46')](_0xc9ed16[_0x508f('0x3b')],_0x8c582b['filters']));if(_0xc9ed16['query'][_0x508f('0x47')]){_0x13342c[_0x508f('0x45')]=_[_0x508f('0x48')](_0x13342c['where'],{'$or':_[_0x508f('0x31')](_0x13342c['attributes'],function(_0x2dc013){var _0x2c81fa={};_0x2c81fa[_0x2dc013]={'$like':'%'+_0xc9ed16[_0x508f('0x3b')]['filter']+'%'};return _0x2c81fa;})});}_0x13342c=_[_0x508f('0x48')]({},_0x13342c,_0xc9ed16[_0x508f('0x4a')]);return _0x13c45c[_0x508f('0x6a')](_0x13342c);}})[_0x508f('0x2a')](function(_0x689b51){if(_0x689b51){_0x697fcc=_0x689b51[_0x508f('0x40')];if(!_0xc9ed16[_0x508f('0x3b')][_0x508f('0x41')]('nolimit')){_0x13342c[_0x508f('0x21')]=qs[_0x508f('0x21')](_0xc9ed16[_0x508f('0x3b')][_0x508f('0x21')]);_0x13342c[_0x508f('0x1f')]=qs[_0x508f('0x1f')](_0xc9ed16[_0x508f('0x3b')]['offset']);}return _0x13c45c[_0x508f('0x6a')](_0x13342c);}})[_0x508f('0x2a')](function(_0x3f8456){if(_0x3f8456){return _0x3f8456?{'count':_0x697fcc,'rows':_0x3f8456}:null;}})['then'](respondWithResult(_0x22beb9,null))[_0x508f('0x4e')](handleError(_0x22beb9,null));};exports[_0x508f('0x6c')]=function(_0x3ee9e5,_0x1bc7cb,_0xf833f6){var _0x20724a=_0x3ee9e5[_0x508f('0x5d')][_0x508f('0x6d')];var _0x28a15d=_[_0x508f('0x31')](_0x20724a,'id');return db['Team'][_0x508f('0x62')]({'where':{'id':_0x28a15d},'attributes':['id'],'include':[{'model':db[_0x508f('0x6e')],'as':_0x508f('0x6f'),'attributes':['id','name',_0x508f('0x70'),_0x508f('0x71'),_0x508f('0x72')],'raw':!![]}]})[_0x508f('0x2a')](function(_0xb8e889){if(_0xb8e889){var _0x34c0a4=_[_0x508f('0x73')](_0xb8e889,function(_0x72f6ad){var _0x4c5c7b=_0x72f6ad['get']({'plain':!![]});_0x4c5c7b[_0x508f('0x6f')]['forEach'](function(_0xe9ce2c){_0xe9ce2c[_0x508f('0x74')]=_['find'](_0x20724a,{'id':_0x4c5c7b['id']})['penalty'];});return _0x4c5c7b[_0x508f('0x6f')];});return db[_0x508f('0x4b')][_0x508f('0x34')]({'where':{'id':_0x3ee9e5[_0x508f('0x50')]['id']}})[_0x508f('0x2a')](function(_0x3a450d){return db[_0x508f('0x75')][_0x508f('0x76')](function(_0x11f626){return _0x3a450d[_0x508f('0x6c')](_0x28a15d,{'transaction':_0x11f626})['then'](function(){return BPromise[_0x508f('0x77')](_0x20724a,function(_0x379977){return db[_0x508f('0x78')][_0x508f('0x79')]({'TeamId':_0x379977['id'],'VoiceQueueId':_0x3ee9e5[_0x508f('0x50')]['id'],'penalty':_0x379977[_0x508f('0x74')]},{'transaction':_0x11f626});});})['then'](function(){return BPromise[_0x508f('0x77')](_0x34c0a4,function(_0x514cd3){return db[_0x508f('0x7a')][_0x508f('0x7b')]({'where':{'UserId':_0x514cd3['id'],'VoiceQueueId':_0x3ee9e5[_0x508f('0x50')]['id']},'defaults':{'penalty':_0x514cd3[_0x508f('0x74')]},'transaction':_0x11f626});});})['then'](function(){return BPromise[_0x508f('0x77')](_[_0x508f('0x47')](_0x34c0a4,{'online':!![]}),function(_0x4e0bf4){return db[_0x508f('0x7c')]['upsert']({'membername':_0x4e0bf4[_0x508f('0x38')],'UserId':_0x4e0bf4['id'],'queue_name':_0x3a450d[_0x508f('0x38')],'VoiceQueueId':_0x3a450d['id'],'interface':_[_0x508f('0x7d')](_0x4e0bf4['interface'])?util['format'](_0x508f('0x7e'),_0x4e0bf4[_0x508f('0x38')]):_0x4e0bf4[_0x508f('0x72')],'paused':_0x4e0bf4['voicePause']||![],'penalty':_0x4e0bf4[_0x508f('0x74')]},{'transaction':_0x11f626});});})[_0x508f('0x2a')](function(){_0x34c0a4[_0x508f('0x7f')](function(_0x285d20){socket[_0x508f('0x80')]('userVoiceQueue:save',{'UserId':_0x285d20['id'],'VoiceQueueId':_0x3a450d['id']});});});});});}})['then'](respondWithStatusCode(_0x1bc7cb,null))['catch'](handleError(_0x1bc7cb,null));};exports['removeTeams']=function(_0x12bf80,_0x3f156d,_0x362a5e){return db['Team'][_0x508f('0x62')]({'where':{'id':_0x12bf80[_0x508f('0x3b')]['ids']},'attributes':['id'],'include':[{'model':db[_0x508f('0x6e')],'as':_0x508f('0x6f'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x3f156d,null))[_0x508f('0x2a')](function(_0x4e1919){var _0x16eb79=_[_0x508f('0x31')](_0x4e1919,'id');var _0x23398a=[];var _0x505d2a=[];var _0x4c3ed8=squel[_0x508f('0x81')]();_0x4c3ed8[_0x508f('0x82')]('tq.TeamId')['from'](_0x508f('0x83'),'tq')[_0x508f('0x84')](_0x508f('0x85'),'ut',_0x508f('0x86'))[_0x508f('0x45')]('VoiceQueueId\x20=\x20?',_0x12bf80[_0x508f('0x50')]['id']);for(var _0x110712=0x0;_0x110712<_0x4e1919[_0x508f('0x40')];_0x110712+=0x1){let _0x4e61a1=_0x4e1919[_0x110712];for(var _0x2fa740=0x0;_0x2fa740<_0x4e61a1[_0x508f('0x6f')][_0x508f('0x40')];_0x2fa740+=0x1){let _0xe7473a=_0x4e61a1['Agents'][_0x2fa740];var _0x10c99f=_0x4c3ed8[_0x508f('0x59')]();_0x10c99f[_0x508f('0x45')](_0x508f('0x87'),_0xe7473a['id']);_0x505d2a[_0x508f('0x88')](db['sequelize'][_0x508f('0x3b')](_0x10c99f[_0x508f('0x89')](),{'type':db[_0x508f('0x75')]['QueryTypes'][_0x508f('0x8a')]})[_0x508f('0x2a')](function(_0x34369f){if(_0x34369f['length']===0x1){return _0xe7473a['id'];}else{var _0x21add9=_[_0x508f('0x8b')](_[_0x508f('0x31')](_0x34369f,_0x508f('0x8c')),function(_0x2c1de2){return _[_0x508f('0x33')](_0x16eb79,_0x2c1de2);});if(_0x21add9){return _0xe7473a['id'];}}}));}}return BPromise[_0x508f('0x8d')](_0x505d2a)[_0x508f('0x2a')](function(_0x3ecec6){_0x23398a=_(_0x23398a)['union'](_0x3ecec6)[_0x508f('0x8e')]()[_0x508f('0x32')]();return db[_0x508f('0x4b')][_0x508f('0x34')]({'where':{'id':_0x12bf80[_0x508f('0x50')]['id']}})[_0x508f('0x2a')](function(_0x58e3a4){return db[_0x508f('0x75')][_0x508f('0x76')](function(_0x38b977){return _0x58e3a4['removeTeams'](_0x12bf80['query'][_0x508f('0x8f')],{'transaction':_0x38b977})[_0x508f('0x2a')](function(){if(!_[_0x508f('0x90')](_0x23398a)){return _0x58e3a4[_0x508f('0x91')](_0x23398a,{'transaction':_0x38b977})['then'](function(){return db[_0x508f('0x7c')][_0x508f('0x29')]({'where':{'VoiceQueueId':_0x12bf80[_0x508f('0x50')]['id'],'UserId':_0x23398a},'transaction':_0x38b977});});}})[_0x508f('0x2a')](function(){_0x23398a[_0x508f('0x7f')](function(_0x4d4850){socket[_0x508f('0x80')]('userVoiceQueue:remove',{'UserId':_0x4d4850,'VoiceQueueId':_0x58e3a4['id']});});});});});});})['then'](respondWithStatusCode(_0x3f156d,null))[_0x508f('0x4e')](handleError(_0x3f156d,null));};exports[_0x508f('0x92')]=function(_0x7ad923,_0x661828,_0xff708d){var _0x56ac27,_0x20730d;return db[_0x508f('0x4b')]['find']({'where':{'id':_0x7ad923[_0x508f('0x50')]['id']}})[_0x508f('0x2a')](handleEntityNotFound(_0x661828,null))[_0x508f('0x2a')](function(_0x21f5de){if(_0x21f5de){_0x20730d=_0x21f5de;return _0x21f5de[_0x508f('0x92')](_0x7ad923[_0x508f('0x5d')]['ids'],_[_0x508f('0x5a')](_0x7ad923['body'],[_0x508f('0x8f'),'id'])||{})[_0x508f('0x93')](function(_0x5a1b5){for(var _0x259374=0x0;_0x259374<_0x7ad923[_0x508f('0x5d')][_0x508f('0x8f')]['length'];_0x259374+=0x1){socket[_0x508f('0x80')](_0x508f('0x94'),{'UserId':Number(_0x7ad923[_0x508f('0x5d')]['ids'][_0x259374]),'VoiceQueueId':Number(_0x7ad923['params']['id'])});}return _0x5a1b5;});}})[_0x508f('0x2a')](function(_0x494afe){_0x56ac27=_0x494afe||[];if(_0x20730d){return db[_0x508f('0x6e')][_0x508f('0x62')]({'where':{'id':_0x7ad923['body'][_0x508f('0x8f')]},'attributes':['id','name','online',_0x508f('0x71'),_0x508f('0x72')],'raw':!![]});}})[_0x508f('0x2a')](function(_0x177123){if(!_[_0x508f('0x90')](_0x177123)){var _0x3c42ad=[];for(var _0x487a77=0x0;_0x487a77<_0x177123[_0x508f('0x40')];_0x487a77++){if(_0x177123[_0x487a77][_0x508f('0x70')]){_0x3c42ad[_0x508f('0x88')](db[_0x508f('0x7c')][_0x508f('0x79')]({'membername':_0x177123[_0x487a77][_0x508f('0x38')],'UserId':_0x177123[_0x487a77]['id'],'queue_name':_0x20730d[_0x508f('0x38')],'VoiceQueueId':_0x20730d['id'],'interface':_[_0x508f('0x7d')](_0x177123[_0x487a77][_0x508f('0x72')])?util[_0x508f('0x95')](_0x508f('0x7e'),_0x177123[_0x487a77]['name']):_0x177123[_0x487a77]['interface'],'paused':_0x177123[_0x487a77][_0x508f('0x71')]||![],'penalty':_0x7ad923[_0x508f('0x5d')]['penalty']||0x0}));}}return BPromise[_0x508f('0x8d')](_0x3c42ad);}})[_0x508f('0x2a')](function(){return _0x56ac27;})[_0x508f('0x2a')](respondWithResult(_0x661828,null))[_0x508f('0x4e')](handleError(_0x661828,null));};exports[_0x508f('0x91')]=function(_0x31fa19,_0x96152e,_0x552a30){return db[_0x508f('0x4b')][_0x508f('0x34')]({'where':{'id':_0x31fa19[_0x508f('0x50')]['id']}})[_0x508f('0x2a')](handleEntityNotFound(_0x96152e,null))[_0x508f('0x2a')](function(_0x3b773b){if(_0x3b773b){return _0x3b773b[_0x508f('0x91')](_0x31fa19[_0x508f('0x3b')][_0x508f('0x8f')])[_0x508f('0x2a')](function(){if(_[_0x508f('0x96')](_0x31fa19['query'][_0x508f('0x8f')])){for(var _0x41541b=0x0;_0x41541b<_0x31fa19[_0x508f('0x3b')]['ids']['length'];_0x41541b+=0x1){socket[_0x508f('0x80')](_0x508f('0x97'),{'UserId':Number(_0x31fa19['query'][_0x508f('0x8f')][_0x41541b]),'VoiceQueueId':Number(_0x31fa19[_0x508f('0x50')]['id'])});}}else{socket[_0x508f('0x80')](_0x508f('0x97'),{'UserId':Number(_0x31fa19['query'][_0x508f('0x8f')]),'VoiceQueueId':Number(_0x31fa19[_0x508f('0x50')]['id'])});}});}})[_0x508f('0x2a')](function(_0xa91bec){return db[_0x508f('0x7c')]['destroy']({'where':{'VoiceQueueId':_0x31fa19[_0x508f('0x50')]['id'],'UserId':_0x31fa19[_0x508f('0x3b')]['ids']}})[_0x508f('0x2a')](function(){return _0xa91bec;});})[_0x508f('0x2a')](respondWithStatusCode(_0x96152e,null))[_0x508f('0x4e')](handleError(_0x96152e,null));};exports[_0x508f('0x98')]=function(_0x1231ad,_0x1e6c6f,_0x209129){var _0x169456={};var _0x49bb5c={};var _0x389820;var _0x15f4d0;return db[_0x508f('0x4b')][_0x508f('0x60')]({'where':{'id':_0x1231ad[_0x508f('0x50')]['id']}})['then'](handleEntityNotFound(_0x1e6c6f,null))[_0x508f('0x2a')](function(_0x18849a){if(_0x18849a){_0x389820=_0x18849a;_0x49bb5c[_0x508f('0x3a')]=_[_0x508f('0x3c')](db[_0x508f('0x6e')][_0x508f('0x67')]);_0x49bb5c[_0x508f('0x3b')]=_[_0x508f('0x3c')](_0x1231ad[_0x508f('0x3b')]);_0x49bb5c[_0x508f('0x3d')]=_['intersection'](_0x49bb5c[_0x508f('0x3a')],_0x49bb5c[_0x508f('0x3b')]);_0x169456['attributes']=_[_0x508f('0x3e')](_0x49bb5c[_0x508f('0x3a')],qs[_0x508f('0x51')](_0x1231ad[_0x508f('0x3b')]['fields']));_0x169456['attributes']=_0x169456[_0x508f('0x3f')][_0x508f('0x40')]?_0x169456[_0x508f('0x3f')]:_0x49bb5c['model'];_0x169456[_0x508f('0x43')]=qs[_0x508f('0x44')](_0x1231ad[_0x508f('0x3b')][_0x508f('0x44')]);_0x169456[_0x508f('0x45')]=qs[_0x508f('0x3d')](_[_0x508f('0x46')](_0x1231ad[_0x508f('0x3b')],_0x49bb5c[_0x508f('0x3d')]));if(_0x1231ad[_0x508f('0x3b')][_0x508f('0x47')]){_0x169456[_0x508f('0x45')]=_[_0x508f('0x48')](_0x169456['where'],{'$or':_[_0x508f('0x31')](_0x169456[_0x508f('0x3f')],function(_0x5d9caa){var _0x4fa979={};_0x4fa979[_0x5d9caa]={'$like':'%'+_0x1231ad[_0x508f('0x3b')][_0x508f('0x47')]+'%'};return _0x4fa979;})});}_0x169456=_['merge']({},_0x169456,_0x1231ad[_0x508f('0x4a')]);return _0x389820[_0x508f('0x98')](_0x169456);}})[_0x508f('0x2a')](function(_0x480b17){if(_0x480b17){_0x15f4d0=_0x480b17[_0x508f('0x40')];if(!_0x1231ad[_0x508f('0x3b')]['hasOwnProperty'](_0x508f('0x42'))){_0x169456[_0x508f('0x21')]=qs[_0x508f('0x21')](_0x1231ad[_0x508f('0x3b')]['limit']);_0x169456[_0x508f('0x1f')]=qs[_0x508f('0x1f')](_0x1231ad[_0x508f('0x3b')][_0x508f('0x1f')]);}return _0x389820[_0x508f('0x98')](_0x169456);}})[_0x508f('0x2a')](function(_0x15f0c1){if(_0x15f0c1){return _0x15f0c1?{'count':_0x15f4d0,'rows':_0x15f0c1}:null;}})['then'](respondWithResult(_0x1e6c6f,null))['catch'](handleError(_0x1e6c6f,null));};exports['getMembers']=function(_0x5ab14c,_0x53203e,_0x2a923a){var _0x470d08={};var _0x23abae={};var _0x21d696;var _0x40490a;return db[_0x508f('0x4b')]['findOne']({'where':{'id':_0x5ab14c[_0x508f('0x50')]['id']}})[_0x508f('0x2a')](handleEntityNotFound(_0x53203e,null))['then'](function(_0x35f4c9){if(_0x35f4c9){_0x21d696=_0x35f4c9;_0x23abae[_0x508f('0x3a')]=_[_0x508f('0x3c')](db[_0x508f('0x7c')][_0x508f('0x67')]);_0x23abae[_0x508f('0x3b')]=_[_0x508f('0x3c')](_0x5ab14c[_0x508f('0x3b')]);_0x23abae[_0x508f('0x3d')]=_['intersection'](_0x23abae[_0x508f('0x3a')],_0x23abae[_0x508f('0x3b')]);_0x470d08[_0x508f('0x3f')]=_[_0x508f('0x3e')](_0x23abae[_0x508f('0x3a')],qs['fields'](_0x5ab14c['query'][_0x508f('0x51')]));_0x470d08[_0x508f('0x3f')]=_0x470d08[_0x508f('0x3f')]['length']?_0x470d08['attributes']:_0x23abae[_0x508f('0x3a')];_0x470d08[_0x508f('0x43')]=qs[_0x508f('0x44')](_0x5ab14c['query']['sort']);_0x470d08[_0x508f('0x45')]=qs[_0x508f('0x3d')](_[_0x508f('0x46')](_0x5ab14c[_0x508f('0x3b')],_0x23abae[_0x508f('0x3d')]));if(_0x5ab14c[_0x508f('0x3b')][_0x508f('0x47')]){_0x470d08[_0x508f('0x45')]=_[_0x508f('0x48')](_0x470d08['where'],{'$or':_[_0x508f('0x31')](_0x470d08['attributes'],function(_0x238582){var _0x1453cb={};_0x1453cb[_0x238582]={'$like':'%'+_0x5ab14c['query'][_0x508f('0x47')]+'%'};return _0x1453cb;})});}_0x470d08=_['merge']({},_0x470d08,_0x5ab14c['options']);return _0x21d696[_0x508f('0x99')](_0x470d08);}})['then'](function(_0x4b6d21){if(_0x4b6d21){_0x40490a=_0x4b6d21[_0x508f('0x40')];if(!_0x5ab14c['query'][_0x508f('0x41')]('nolimit')){_0x470d08[_0x508f('0x21')]=qs['limit'](_0x5ab14c['query'][_0x508f('0x21')]);_0x470d08['offset']=qs[_0x508f('0x1f')](_0x5ab14c['query'][_0x508f('0x1f')]);}return _0x21d696[_0x508f('0x99')](_0x470d08);}})[_0x508f('0x2a')](function(_0x3cc4e6){return _0x3cc4e6?{'count':_0x40490a,'rows':_0x3cc4e6}:null;})[_0x508f('0x2a')](respondWithResult(_0x53203e,null))['catch'](handleError(_0x53203e,null));};exports[_0x508f('0x9a')]=function(_0x3ec348,_0x597f0d,_0x3e1afb){var _0x3e220e={};var _0x25fbf6={};var _0x1515c;var _0x3e93bc;return db[_0x508f('0x4b')][_0x508f('0x60')]({'where':{'id':_0x3ec348[_0x508f('0x50')]['id']}})[_0x508f('0x2a')](handleEntityNotFound(_0x597f0d,null))[_0x508f('0x2a')](function(_0x5cc3cf){if(_0x5cc3cf){_0x1515c=_0x5cc3cf;_0x25fbf6[_0x508f('0x3a')]=_[_0x508f('0x3c')](db[_0x508f('0x9b')][_0x508f('0x67')]);_0x25fbf6['query']=_['keys'](_0x3ec348[_0x508f('0x3b')]);_0x25fbf6[_0x508f('0x3d')]=_['intersection'](_0x25fbf6[_0x508f('0x3a')],_0x25fbf6[_0x508f('0x3b')]);_0x3e220e['attributes']=_[_0x508f('0x3e')](_0x25fbf6[_0x508f('0x3a')],qs[_0x508f('0x51')](_0x3ec348['query'][_0x508f('0x51')]));_0x3e220e[_0x508f('0x3f')]=_0x3e220e[_0x508f('0x3f')][_0x508f('0x40')]?_0x3e220e['attributes']:_0x25fbf6['model'];_0x3e220e[_0x508f('0x43')]=qs[_0x508f('0x44')](_0x3ec348['query']['sort']);_0x3e220e[_0x508f('0x45')]=qs['filters'](_[_0x508f('0x46')](_0x3ec348[_0x508f('0x3b')],_0x25fbf6['filters']));if(_0x3ec348[_0x508f('0x3b')][_0x508f('0x47')]){_0x3e220e[_0x508f('0x45')]=_[_0x508f('0x48')](_0x3e220e[_0x508f('0x45')],{'$or':_[_0x508f('0x31')](_0x3e220e['attributes'],function(_0x1d0bd2){var _0x1d8ffb={};_0x1d8ffb[_0x1d0bd2]={'$like':'%'+_0x3ec348['query'][_0x508f('0x47')]+'%'};return _0x1d8ffb;})});}_0x3e220e=_[_0x508f('0x48')]({},_0x3e220e,_0x3ec348[_0x508f('0x4a')]);return _0x1515c[_0x508f('0x9a')](_0x3e220e);}})[_0x508f('0x2a')](function(_0x421ba7){if(_0x421ba7){_0x3e93bc=_0x421ba7[_0x508f('0x40')];if(!_0x3ec348[_0x508f('0x3b')][_0x508f('0x41')](_0x508f('0x42'))){_0x3e220e['limit']=qs['limit'](_0x3ec348[_0x508f('0x3b')][_0x508f('0x21')]);_0x3e220e['offset']=qs[_0x508f('0x1f')](_0x3ec348[_0x508f('0x3b')][_0x508f('0x1f')]);}return _0x1515c[_0x508f('0x9a')](_0x3e220e);}})[_0x508f('0x2a')](function(_0x2f78d4){if(_0x2f78d4){return _0x2f78d4?{'count':_0x3e93bc,'rows':_0x2f78d4}:null;}})['then'](respondWithResult(_0x597f0d,null))[_0x508f('0x4e')](handleError(_0x597f0d,null));};exports[_0x508f('0x9c')]=function(_0x1fcdba,_0x4f8815,_0x5a3878){var _0x211b12,_0xcd1e5e;return db['VoiceQueue'][_0x508f('0x34')]({'where':{'id':_0x1fcdba[_0x508f('0x50')]['id']}})['then'](handleEntityNotFound(_0x4f8815,null))[_0x508f('0x2a')](function(_0x1129ce){if(_0x1129ce){_0xcd1e5e=_0x1129ce;return _0x1129ce['addLists'](_0x1fcdba[_0x508f('0x5d')][_0x508f('0x8f')],_['omit'](_0x1fcdba[_0x508f('0x5d')],['ids','id'])||{});}return null;})[_0x508f('0x93')](function(_0x49f1c7){var _0x16007a;_0x211b12=_0x49f1c7||[];var _0x7a3af9=[];if(_0x49f1c7){for(var _0x544044=0x0;_0x544044<_0x49f1c7[_0x508f('0x40')];_0x544044+=0x1){var _0x5bbd08=_0x49f1c7[_0x544044]['get']({'plain':!![]});_0xcd1e5e[_0x508f('0x9d')]=_0x1fcdba['body'][_0x508f('0x9d')]?_0x1fcdba['body'][_0x508f('0x9d')]:_0xcd1e5e['dialCheckDuplicateType'];switch(_0xcd1e5e[_0x508f('0x9d')]){case _0x508f('0x9e'):_0x16007a=squel[_0x508f('0x9f')]()['into']('cm_hopper')[_0x508f('0xa0')]([_0x508f('0xa1'),_0x508f('0xa2'),_0x508f('0xa3'),_0x508f('0xa4'),_0x508f('0x69'),_0x508f('0x5b'),_0x508f('0x5c')],squel[_0x508f('0x81')]()[_0x508f('0x82')](_0x508f('0xa1'),_0x508f('0xa1'))[_0x508f('0x82')](_0x508f('0xa5'),_0x508f('0xa2'))[_0x508f('0x82')]('id',_0x508f('0xa3'))['field'](_0x5bbd08[_0x508f('0xa6')][_0x508f('0x89')](),'ListId')[_0x508f('0x82')](_0x1fcdba[_0x508f('0x50')]['id']['toString'](),_0x508f('0x69'))[_0x508f('0x82')](_0x508f('0xa5'),_0x508f('0x5b'))[_0x508f('0x82')]('NOW()','updatedAt')[_0x508f('0xa7')](_0x508f('0xa8'))['where']('deletedAt\x20IS\x20NULL')[_0x508f('0x45')](_0x508f('0xa9'),_0x5bbd08[_0x508f('0xa6')]['toString']())['where'](_0x508f('0xaa'))['where'](_0x508f('0xab'),squel[_0x508f('0x81')]()[_0x508f('0x82')]('COALESCE(calleridnum,\x27\x27)')['from'](_0x508f('0xac'))['where']('VoiceQueueId\x20=\x20?',_0x1fcdba[_0x508f('0x50')]['id'][_0x508f('0x89')]()))[_0x508f('0x45')](_0x508f('0xab'),squel[_0x508f('0x81')]()[_0x508f('0x82')](_0x508f('0xad'))[_0x508f('0xa7')]('cm_hopper')[_0x508f('0x45')](_0x508f('0xae'),_0x1fcdba[_0x508f('0x50')]['id'][_0x508f('0x89')]())))[_0x508f('0x89')]();break;case _0x508f('0xaf'):_0x16007a=squel[_0x508f('0x9f')]()[_0x508f('0xb0')](_0x508f('0xb1'))[_0x508f('0xa0')](['phone',_0x508f('0xa2'),_0x508f('0xa3'),_0x508f('0xa4'),_0x508f('0x69'),_0x508f('0x5b'),_0x508f('0x5c')],squel['select']()[_0x508f('0x82')]('phone','phone')[_0x508f('0x82')](_0x508f('0xa5'),_0x508f('0xa2'))['field']('id',_0x508f('0xa3'))[_0x508f('0x82')](_0x5bbd08[_0x508f('0xa6')][_0x508f('0x89')](),_0x508f('0xa4'))['field'](_0x1fcdba['params']['id']['toString'](),'VoiceQueueId')[_0x508f('0x82')](_0x508f('0xa5'),_0x508f('0x5b'))[_0x508f('0x82')]('NOW()',_0x508f('0x5c'))[_0x508f('0xa7')](_0x508f('0xa8'))['where'](_0x508f('0xb2'))['where'](_0x508f('0xa9'),_0x5bbd08[_0x508f('0xa6')][_0x508f('0x89')]())['where']('phone\x20IS\x20NOT\x20NULL')[_0x508f('0x45')](_0x508f('0xab'),squel['select']()[_0x508f('0x82')](_0x508f('0xad'))[_0x508f('0xa7')]('cm_hopper')[_0x508f('0x45')](_0x508f('0xae'),_0x1fcdba['params']['id'][_0x508f('0x89')]())))[_0x508f('0x89')]();break;default:_0x16007a=squel[_0x508f('0x9f')]()['into'](_0x508f('0xb1'))['fromQuery']([_0x508f('0xa1'),_0x508f('0xa2'),_0x508f('0xa3'),_0x508f('0xa4'),_0x508f('0x69'),_0x508f('0x5b'),_0x508f('0x5c')],squel[_0x508f('0x81')]()[_0x508f('0x82')]('phone',_0x508f('0xa1'))[_0x508f('0x82')]('NOW()',_0x508f('0xa2'))[_0x508f('0x82')]('id',_0x508f('0xa3'))[_0x508f('0x82')](_0x5bbd08[_0x508f('0xa6')][_0x508f('0x89')](),_0x508f('0xa4'))[_0x508f('0x82')](_0x1fcdba[_0x508f('0x50')]['id'][_0x508f('0x89')](),_0x508f('0x69'))[_0x508f('0x82')]('NOW()',_0x508f('0x5b'))['field'](_0x508f('0xa5'),_0x508f('0x5c'))['from'](_0x508f('0xa8'))['where'](_0x508f('0xb2'))['where'](_0x508f('0xa9'),_0x5bbd08[_0x508f('0xa6')][_0x508f('0x89')]())[_0x508f('0x45')](_0x508f('0xaa')))['toString']();}_0x7a3af9[_0x508f('0x88')](db[_0x508f('0x75')][_0x508f('0x3b')](_0x16007a));}return BPromise[_0x508f('0x8d')](_0x7a3af9);}})[_0x508f('0x2a')](function(){return _0x211b12;})[_0x508f('0x2a')](respondWithResult(_0x4f8815,null))[_0x508f('0x4e')](handleError(_0x4f8815,null));};exports[_0x508f('0xb3')]=function(_0x3af03a,_0x257dad,_0x17e7af){return db[_0x508f('0x4b')][_0x508f('0x34')]({'where':{'id':_0x3af03a[_0x508f('0x50')]['id']}})['then'](handleEntityNotFound(_0x257dad,null))['then'](function(_0x38bbef){if(_0x38bbef){return _0x38bbef['removeLists'](_0x3af03a[_0x508f('0x3b')]['ids']);}})[_0x508f('0x2a')](function(_0x2a300d){if(_0x2a300d){return db[_0x508f('0x61')]['destroy']({'where':{'ListId':_0x3af03a[_0x508f('0x3b')][_0x508f('0x8f')],'VoiceQueueId':_0x3af03a[_0x508f('0x50')]['id']}})[_0x508f('0x2a')](function(){return _0x2a300d;});}})['then'](respondWithStatusCode(_0x257dad,null))[_0x508f('0x4e')](handleError(_0x257dad,null));};exports[_0x508f('0xb4')]=function(_0x4d2216,_0x2a874c,_0x39d16b){var _0x1e9b4e={};var _0xd035e={};var _0x4365e0;var _0x3f6bcd;return db[_0x508f('0x4b')][_0x508f('0x60')]({'where':{'id':_0x4d2216[_0x508f('0x50')]['id']}})[_0x508f('0x2a')](handleEntityNotFound(_0x2a874c,null))['then'](function(_0x2e3beb){if(_0x2e3beb){_0x4365e0=_0x2e3beb;_0xd035e['model']=_[_0x508f('0x3c')](db[_0x508f('0x9b')]['rawAttributes']);_0xd035e['query']=_['keys'](_0x4d2216['query']);_0xd035e[_0x508f('0x3d')]=_[_0x508f('0x3e')](_0xd035e[_0x508f('0x3a')],_0xd035e['query']);_0x1e9b4e[_0x508f('0x3f')]=_['intersection'](_0xd035e[_0x508f('0x3a')],qs['fields'](_0x4d2216[_0x508f('0x3b')][_0x508f('0x51')]));_0x1e9b4e[_0x508f('0x3f')]=_0x1e9b4e['attributes']['length']?_0x1e9b4e[_0x508f('0x3f')]:_0xd035e['model'];_0x1e9b4e[_0x508f('0x43')]=qs['sort'](_0x4d2216[_0x508f('0x3b')][_0x508f('0x44')]);_0x1e9b4e[_0x508f('0x45')]=qs['filters'](_[_0x508f('0x46')](_0x4d2216['query'],_0xd035e['filters']));if(_0x4d2216[_0x508f('0x3b')][_0x508f('0x47')]){_0x1e9b4e['where']=_[_0x508f('0x48')](_0x1e9b4e[_0x508f('0x45')],{'$or':_[_0x508f('0x31')](_0x1e9b4e['attributes'],function(_0x3476bf){var _0x5cb5f7={};_0x5cb5f7[_0x3476bf]={'$like':'%'+_0x4d2216[_0x508f('0x3b')][_0x508f('0x47')]+'%'};return _0x5cb5f7;})});}_0x1e9b4e=_[_0x508f('0x48')]({},_0x1e9b4e,_0x4d2216['options']);return _0x4365e0['getBlackLists'](_0x1e9b4e);}})[_0x508f('0x2a')](function(_0x29c0ee){if(_0x29c0ee){_0x3f6bcd=_0x29c0ee[_0x508f('0x40')];if(!_0x4d2216[_0x508f('0x3b')]['hasOwnProperty'](_0x508f('0x42'))){_0x1e9b4e[_0x508f('0x21')]=qs[_0x508f('0x21')](_0x4d2216['query'][_0x508f('0x21')]);_0x1e9b4e[_0x508f('0x1f')]=qs['offset'](_0x4d2216['query']['offset']);}return _0x4365e0[_0x508f('0xb4')](_0x1e9b4e);}})[_0x508f('0x2a')](function(_0xd8e83c){if(_0xd8e83c){return _0xd8e83c?{'count':_0x3f6bcd,'rows':_0xd8e83c}:null;}})[_0x508f('0x2a')](respondWithResult(_0x2a874c,null))[_0x508f('0x4e')](handleError(_0x2a874c,null));};exports[_0x508f('0xb5')]=function(_0x165733,_0x4b8293,_0x4c3bfb){var _0x36372b,_0x3d6b49;return db[_0x508f('0x4b')][_0x508f('0x34')]({'where':{'id':_0x165733[_0x508f('0x50')]['id']}})[_0x508f('0x2a')](handleEntityNotFound(_0x4b8293,null))['then'](function(_0x158bb3){if(_0x158bb3){_0x3d6b49=_0x158bb3;return _0x158bb3[_0x508f('0xb5')](_0x165733[_0x508f('0x5d')]['ids'],_['omit'](_0x165733[_0x508f('0x5d')],['ids','id'])||{});}return null;})['spread'](function(_0x393c5f){var _0x87df6b;_0x36372b=_0x393c5f||[];var _0x27b630=[];if(_0x393c5f){for(var _0x54ecff=0x0;_0x54ecff<_0x393c5f[_0x508f('0x40')];_0x54ecff+=0x1){var _0x51fbe2=_0x393c5f[_0x54ecff]['get']({'plain':!![]});_0x87df6b=squel[_0x508f('0x9f')]()['into'](_0x508f('0xb6'))['fromQuery'](['phone',_0x508f('0xa3'),_0x508f('0xa4'),_0x508f('0x69'),_0x508f('0x5b'),'updatedAt'],squel['select']()[_0x508f('0x82')](_0x508f('0xa1'),'phone')[_0x508f('0x82')]('id','ContactId')[_0x508f('0x82')](_0x51fbe2[_0x508f('0xa6')]['toString'](),_0x508f('0xa4'))[_0x508f('0x82')](_0x165733[_0x508f('0x50')]['id'][_0x508f('0x89')](),_0x508f('0x69'))[_0x508f('0x82')]('NOW()','createdAt')['field'](_0x508f('0xa5'),_0x508f('0x5c'))[_0x508f('0xa7')]('cm_contacts')['where'](_0x508f('0xb2'))[_0x508f('0x45')]('ListId\x20=\x20?',_0x51fbe2[_0x508f('0xa6')][_0x508f('0x89')]())[_0x508f('0x45')](_0x508f('0xaa')))[_0x508f('0x89')]();_0x27b630[_0x508f('0x88')](db[_0x508f('0x75')][_0x508f('0x3b')](_0x87df6b));}return BPromise[_0x508f('0x8d')](_0x27b630);}})[_0x508f('0x2a')](function(){return _0x36372b;})['then'](respondWithResult(_0x4b8293,null))[_0x508f('0x4e')](handleError(_0x4b8293,null));};exports[_0x508f('0xb7')]=function(_0x40836d,_0x13b55f,_0x48d758){return db['VoiceQueue'][_0x508f('0x34')]({'where':{'id':_0x40836d[_0x508f('0x50')]['id']}})['then'](handleEntityNotFound(_0x13b55f,null))[_0x508f('0x2a')](function(_0x5c8a4a){if(_0x5c8a4a){return _0x5c8a4a[_0x508f('0xb7')](_0x40836d['query'][_0x508f('0x8f')]);}})[_0x508f('0x2a')](function(_0x3bf958){if(_0x3bf958){return db['CmHopperBlack'][_0x508f('0x29')]({'where':{'ListId':_0x40836d[_0x508f('0x3b')]['ids'],'VoiceQueueId':_0x40836d['params']['id']}})[_0x508f('0x2a')](function(){return _0x3bf958;});}})[_0x508f('0x2a')](respondWithStatusCode(_0x13b55f,null))[_0x508f('0x4e')](handleError(_0x13b55f,null));};
\ No newline at end of file
+var _0x53f3=['count','set','Content-Range','reject','save','then','destroy','get','VoiceQueues','QueueCampaigns','filter','ignore','map','value','includes','find','type','UserProfileResource','end','error','stack','name','send','index','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','merge','VIRTUAL','options','VoiceQueue','includeAll','include','rows','catch','show','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','inbound','outbound','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','omit','updatedAt','body','createdAt','update','params','getHoppers','CmHopper','nolimit','findAll','findOne','CmHopperHistory','VoiceQueueId','getHopperFinals','CmHopperFinal','getHopperBlacks','CmHopperBlack','Team','getTeams','teams','User','interface','Agents','forEach','penalty','sequelize','transaction','addTeams','each','TeamVoiceQueue','UserVoiceQueue','findOrCreate','UserVoiceQueueRt','upsert','voicePause','emit','removeTeams','ids','select','field','tq.TeamId','from','team_has_voice_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','VoiceQueueId\x20=\x20?','clone','push','toString','QueryTypes','SELECT','every','TeamId','all','compact','removeAgents','userVoiceQueue:remove','spread','userVoiceQueue:save','online','isNil','SIP/%s','isArray','getAgents','getMembers','getLists','CmList','addLists','dialCheckDuplicateType','insert','into','cm_hopper','fromQuery','phone','scheduledAt','ListId','NOW()','ContactId','CmListId','cm_contacts','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','cm_hopper_final','onlyIfOpen','removeLists','getBlackLists','addBlackLists','cm_hopper_black','removeBlackLists','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../mysqldb','redis','defaults','socket.io-emitter','./voiceQueue.socket','sendStatus','status','json','offset','limit','undefined'];(function(_0x4e4bd4,_0xd36990){var _0xfe3c90=function(_0xf6b67c){while(--_0xf6b67c){_0x4e4bd4['push'](_0x4e4bd4['shift']());}};_0xfe3c90(++_0xd36990);}(_0x53f3,0x97));var _0x353f=function(_0x21aefc,_0x1177eb){_0x21aefc=_0x21aefc-0x0;var _0x53ffe7=_0x53f3[_0x21aefc];return _0x53ffe7;};'use strict';var emlformat=require(_0x353f('0x0'));var rimraf=require(_0x353f('0x1'));var zipdir=require(_0x353f('0x2'));var jsonpatch=require(_0x353f('0x3'));var rp=require(_0x353f('0x4'));var moment=require(_0x353f('0x5'));var BPromise=require(_0x353f('0x6'));var Mustache=require(_0x353f('0x7'));var util=require(_0x353f('0x8'));var path=require(_0x353f('0x9'));var sox=require('sox');var csv=require(_0x353f('0xa'));var ejs=require(_0x353f('0xb'));var fs=require('fs');var fs_extra=require(_0x353f('0xc'));var _=require('lodash');var squel=require(_0x353f('0xd'));var crypto=require(_0x353f('0xe'));var jsforce=require(_0x353f('0xf'));var deskjs=require(_0x353f('0x10'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x353f('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x353f('0x12'));var as=require(_0x353f('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x353f('0x14'))(_0x353f('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x353f('0x16'))['db'];config[_0x353f('0x17')]=_[_0x353f('0x18')](config[_0x353f('0x17')],{'host':'localhost','port':0x18eb});var socket=require(_0x353f('0x19'))(new Redis(config[_0x353f('0x17')]));require(_0x353f('0x1a'))['register'](socket);function respondWithStatusCode(_0x435422,_0x15cafe){_0x15cafe=_0x15cafe||0xcc;return function(_0x4cf934){if(_0x4cf934){return _0x435422[_0x353f('0x1b')](_0x15cafe);}return _0x435422['status'](_0x15cafe)['end']();};}function respondWithResult(_0x2a9fcb,_0x32e52d){_0x32e52d=_0x32e52d||0xc8;return function(_0x4bcf23){if(_0x4bcf23){return _0x2a9fcb[_0x353f('0x1c')](_0x32e52d)[_0x353f('0x1d')](_0x4bcf23);}};}function respondWithFilteredResult(_0x2d461d,_0x26b9e1){return function(_0x1c9d3f){if(_0x1c9d3f){var _0x5dc918=typeof _0x26b9e1[_0x353f('0x1e')]==='undefined'&&typeof _0x26b9e1[_0x353f('0x1f')]===_0x353f('0x20');var _0x1dc644=_0x1c9d3f[_0x353f('0x21')];var _0x3022f4=_0x5dc918?0x0:_0x26b9e1[_0x353f('0x1e')];var _0x1f90a7=_0x5dc918?_0x1c9d3f['count']:_0x26b9e1[_0x353f('0x1e')]+_0x26b9e1[_0x353f('0x1f')];var _0x16c8d6;if(_0x1f90a7>=_0x1dc644){_0x1f90a7=_0x1dc644;_0x16c8d6=0xc8;}else{_0x16c8d6=0xce;}_0x2d461d[_0x353f('0x1c')](_0x16c8d6);return _0x2d461d[_0x353f('0x22')](_0x353f('0x23'),_0x3022f4+'-'+_0x1f90a7+'/'+_0x1dc644)[_0x353f('0x1d')](_0x1c9d3f);}return null;};}function patchUpdates(_0x18f09c){return function(_0x504e71){try{jsonpatch['apply'](_0x504e71,_0x18f09c,!![]);}catch(_0x383022){return BPromise[_0x353f('0x24')](_0x383022);}return _0x504e71[_0x353f('0x25')]();};}function saveUpdates(_0x198771,_0x19469d){return function(_0xe96558){if(_0xe96558){return _0xe96558['update'](_0x198771)[_0x353f('0x26')](function(_0x3a84e3){return _0x3a84e3;});}return null;};}function removeEntity(_0x508197,_0x37b61a){return function(_0xd6fcef){if(_0xd6fcef){return _0xd6fcef[_0x353f('0x27')]()[_0x353f('0x26')](function(){var _0x4b08a8=_0xd6fcef[_0x353f('0x28')]({'plain':!![]});var _0xc60553=[{'name':_0x353f('0x29'),'value':'inbound','ignore':![]},{'name':_0x353f('0x2a'),'value':'outbound','ignore':![]}];var _0x1e3b72=_(_0xc60553)[_0x353f('0x2b')](_0x353f('0x2c'))[_0x353f('0x2d')](_0x353f('0x2e'))[_0x353f('0x2e')]();if(_[_0x353f('0x2f')](_0x1e3b72,_0x4b08a8['type'])){return;}var _0x403146=_[_0x353f('0x30')](_0xc60553,['value',_0x4b08a8[_0x353f('0x31')]])['name'];return db[_0x353f('0x32')][_0x353f('0x27')]({'where':{'type':_0x403146,'resourceId':_0x4b08a8['id']}})['then'](function(){return _0xd6fcef;});})[_0x353f('0x26')](function(){_0x508197[_0x353f('0x1c')](0xcc)[_0x353f('0x33')]();});}};}function handleEntityNotFound(_0x25bff9,_0x57d8e8){return function(_0x3f1303){if(!_0x3f1303){_0x25bff9[_0x353f('0x1b')](0x194);}return _0x3f1303;};}function handleError(_0x37ac3e,_0x574ef7){_0x574ef7=_0x574ef7||0x1f4;return function(_0x24c0cb){logger[_0x353f('0x34')](_0x24c0cb[_0x353f('0x35')]);if(_0x24c0cb[_0x353f('0x36')]){delete _0x24c0cb[_0x353f('0x36')];}_0x37ac3e[_0x353f('0x1c')](_0x574ef7)[_0x353f('0x37')](_0x24c0cb);};}exports[_0x353f('0x38')]=function(_0x3c383f,_0x14760d){var _0x595554={},_0xfe967={},_0x1b4d4c={'count':0x0,'rows':[]};var _0x40a2cd=_[_0x353f('0x2d')](db['VoiceQueue'][_0x353f('0x39')],function(_0x20c16d){return{'name':_0x20c16d[_0x353f('0x3a')],'type':_0x20c16d[_0x353f('0x31')][_0x353f('0x3b')]};});_0xfe967[_0x353f('0x3c')]=_[_0x353f('0x2d')](_0x40a2cd,_0x353f('0x36'));_0xfe967[_0x353f('0x3d')]=_[_0x353f('0x3e')](_0x3c383f[_0x353f('0x3d')]);_0xfe967[_0x353f('0x3f')]=_[_0x353f('0x40')](_0xfe967[_0x353f('0x3c')],_0xfe967['query']);_0x595554[_0x353f('0x41')]=_[_0x353f('0x40')](_0xfe967[_0x353f('0x3c')],qs[_0x353f('0x42')](_0x3c383f[_0x353f('0x3d')][_0x353f('0x42')]));_0x595554[_0x353f('0x41')]=_0x595554[_0x353f('0x41')][_0x353f('0x43')]?_0x595554[_0x353f('0x41')]:_0xfe967[_0x353f('0x3c')];if(!_0x3c383f['query'][_0x353f('0x44')]('nolimit')){_0x595554['limit']=qs[_0x353f('0x1f')](_0x3c383f[_0x353f('0x3d')][_0x353f('0x1f')]);_0x595554['offset']=qs[_0x353f('0x1e')](_0x3c383f[_0x353f('0x3d')][_0x353f('0x1e')]);}_0x595554[_0x353f('0x45')]=qs[_0x353f('0x46')](_0x3c383f[_0x353f('0x3d')][_0x353f('0x46')]);_0x595554[_0x353f('0x47')]=qs[_0x353f('0x3f')](_[_0x353f('0x48')](_0x3c383f['query'],_0xfe967[_0x353f('0x3f')]),_0x40a2cd);if(_0x3c383f[_0x353f('0x3d')][_0x353f('0x2b')]){_0x595554['where']=_[_0x353f('0x49')](_0x595554[_0x353f('0x47')],{'$or':_[_0x353f('0x2d')](_0x40a2cd,function(_0x458461){if(_0x458461[_0x353f('0x31')]!==_0x353f('0x4a')){var _0x380331={};_0x380331[_0x458461['name']]={'$like':'%'+_0x3c383f[_0x353f('0x3d')]['filter']+'%'};return _0x380331;}})});}_0x595554=_[_0x353f('0x49')]({},_0x595554,_0x3c383f[_0x353f('0x4b')]);var _0x16fe31={'where':_0x595554[_0x353f('0x47')]};return db[_0x353f('0x4c')][_0x353f('0x21')](_0x16fe31)[_0x353f('0x26')](function(_0x16ceee){_0x1b4d4c['count']=_0x16ceee;if(_0x3c383f[_0x353f('0x3d')][_0x353f('0x4d')]){_0x595554[_0x353f('0x4e')]=[{'all':!![]}];}return db[_0x353f('0x4c')]['findAll'](_0x595554);})['then'](function(_0x29ce2f){_0x1b4d4c[_0x353f('0x4f')]=_0x29ce2f;return _0x1b4d4c;})[_0x353f('0x26')](respondWithFilteredResult(_0x14760d,_0x595554))[_0x353f('0x50')](handleError(_0x14760d,null));};exports[_0x353f('0x51')]=function(_0x2abbe0,_0x3feee3){var _0x5baae1={'raw':![],'where':{'id':_0x2abbe0['params']['id']}},_0x523fd6={};_0x523fd6['model']=_[_0x353f('0x3e')](db[_0x353f('0x4c')]['rawAttributes']);_0x523fd6[_0x353f('0x3d')]=_[_0x353f('0x3e')](_0x2abbe0[_0x353f('0x3d')]);_0x523fd6[_0x353f('0x3f')]=_['intersection'](_0x523fd6[_0x353f('0x3c')],_0x523fd6['query']);_0x5baae1[_0x353f('0x41')]=_[_0x353f('0x40')](_0x523fd6[_0x353f('0x3c')],qs['fields'](_0x2abbe0['query'][_0x353f('0x42')]));_0x5baae1[_0x353f('0x41')]=_0x5baae1['attributes']['length']?_0x5baae1[_0x353f('0x41')]:_0x523fd6[_0x353f('0x3c')];if(_0x2abbe0[_0x353f('0x3d')][_0x353f('0x4d')]){_0x5baae1[_0x353f('0x4e')]=[{'all':!![]}];}_0x5baae1=_[_0x353f('0x49')]({},_0x5baae1,_0x2abbe0[_0x353f('0x4b')]);return db[_0x353f('0x4c')][_0x353f('0x30')](_0x5baae1)['then'](handleEntityNotFound(_0x3feee3,null))[_0x353f('0x26')](respondWithResult(_0x3feee3,null))[_0x353f('0x50')](handleError(_0x3feee3,null));};exports[_0x353f('0x52')]=function(_0x2ccbac,_0x19cbcf){return db[_0x353f('0x4c')]['create'](_0x2ccbac['body'],{})['then'](function(_0x5380c5){var _0x25b09e=_0x2ccbac[_0x353f('0x53')]['get']({'plain':!![]});if(!_0x25b09e)throw new Error(_0x353f('0x54'));if(_0x25b09e[_0x353f('0x55')]===_0x353f('0x53')){var _0x415e5f=_0x5380c5['get']({'plain':!![]});var _0x272bf1=[{'name':_0x353f('0x29'),'value':_0x353f('0x56')},{'name':_0x353f('0x2a'),'value':_0x353f('0x57')}];var _0x4815a5=_[_0x353f('0x30')](_0x272bf1,['value',_0x415e5f[_0x353f('0x31')]])['name'];return db[_0x353f('0x58')][_0x353f('0x30')]({'where':{'name':_0x4815a5,'userProfileId':_0x25b09e[_0x353f('0x59')]},'raw':!![]})[_0x353f('0x26')](function(_0xe3642e){if(_0xe3642e&&_0xe3642e['autoAssociation']===0x0){return db[_0x353f('0x32')]['create']({'name':_0x415e5f[_0x353f('0x36')],'resourceId':_0x415e5f['id'],'type':_0xe3642e[_0x353f('0x36')],'sectionId':_0xe3642e['id']},{})[_0x353f('0x26')](function(){return _0x5380c5;});}else{return _0x5380c5;}})[_0x353f('0x50')](function(_0x28c0a4){logger[_0x353f('0x34')](_0x353f('0x5a'),_0x28c0a4);throw _0x28c0a4;});}return _0x5380c5;})[_0x353f('0x26')](respondWithResult(_0x19cbcf,0xc9))['catch'](handleError(_0x19cbcf,null));};exports['clone']=function(_0x3bff5b,_0x6cc764){var _0x5bb9bd={'where':{'id':_0x3bff5b['params']['id']}},_0x30d06a={};_0x30d06a[_0x353f('0x3c')]=_[_0x353f('0x3e')](db[_0x353f('0x4c')][_0x353f('0x39')]);_0x5bb9bd['attributes']=_['intersection'](_0x30d06a[_0x353f('0x3c')],qs[_0x353f('0x42')](_0x3bff5b['query'][_0x353f('0x42')]));_0x5bb9bd['attributes']=_0x5bb9bd[_0x353f('0x41')][_0x353f('0x43')]?_0x5bb9bd[_0x353f('0x41')]:_0x30d06a[_0x353f('0x3c')];if(_0x3bff5b[_0x353f('0x3d')][_0x353f('0x4d')]){_0x5bb9bd[_0x353f('0x4e')]=[{'all':!![]}];}_0x5bb9bd=_[_0x353f('0x49')]({},_0x5bb9bd,_0x3bff5b[_0x353f('0x4b')]);return db[_0x353f('0x4c')][_0x353f('0x30')](_0x5bb9bd)[_0x353f('0x26')](handleEntityNotFound(_0x6cc764,null))[_0x353f('0x26')](function(_0x26e0ff){if(_0x26e0ff){var _0xbc952d=_0x26e0ff[_0x353f('0x28')]({'plain':!![]});_0xbc952d=qs[_0x353f('0x5b')](_0xbc952d,['id','createdAt',_0x353f('0x5c')]);_0x3bff5b[_0x353f('0x5d')]=_['omit'](_0x3bff5b[_0x353f('0x5d')],['id',_0x353f('0x5e'),'updatedAt']);return db[_0x353f('0x4c')][_0x353f('0x52')](_[_0x353f('0x49')](_0xbc952d,_0x3bff5b[_0x353f('0x5d')]),{'include':_0x3bff5b[_0x353f('0x3d')]['includeAll']?[{'all':!![]}]:undefined})[_0x353f('0x26')](function(_0x3b3a7d){var _0x1b5f94=_0x3bff5b[_0x353f('0x53')][_0x353f('0x28')]({'plain':!![]});if(!_0x1b5f94)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1b5f94[_0x353f('0x55')]===_0x353f('0x53')){var _0x5eb0f9=_0x3b3a7d[_0x353f('0x28')]({'plain':!![]});var _0x51e282=[{'name':_0x353f('0x29'),'value':_0x353f('0x56')},{'name':_0x353f('0x2a'),'value':_0x353f('0x57')}];var _0x24f484=_[_0x353f('0x30')](_0x51e282,['value',_0x5eb0f9[_0x353f('0x31')]])[_0x353f('0x36')];return db[_0x353f('0x58')][_0x353f('0x30')]({'where':{'name':_0x24f484,'userProfileId':_0x1b5f94[_0x353f('0x59')]},'raw':!![]})[_0x353f('0x26')](function(_0xa7cdc4){if(_0xa7cdc4&&_0xa7cdc4['autoAssociation']===0x0){return db[_0x353f('0x32')][_0x353f('0x52')]({'name':_0x5eb0f9[_0x353f('0x36')],'resourceId':_0x5eb0f9['id'],'type':_0xa7cdc4[_0x353f('0x36')],'sectionId':_0xa7cdc4['id']},{})[_0x353f('0x26')](function(){return _0x3b3a7d;});}else{return _0x3b3a7d;}})['catch'](function(_0x418d24){logger['error'](_0x353f('0x5a'),_0x418d24);throw _0x418d24;});}return _0x3b3a7d;});}})['then'](respondWithResult(_0x6cc764,0xc9))[_0x353f('0x50')](handleError(_0x6cc764,null));};exports[_0x353f('0x5f')]=function(_0xe65b7e,_0xfd4c59){if(_0xe65b7e['body']['id']){delete _0xe65b7e['body']['id'];}return db[_0x353f('0x4c')][_0x353f('0x30')]({'where':{'id':_0xe65b7e[_0x353f('0x60')]['id']}})[_0x353f('0x26')](handleEntityNotFound(_0xfd4c59,null))['then'](saveUpdates(_0xe65b7e[_0x353f('0x5d')],null))[_0x353f('0x26')](respondWithResult(_0xfd4c59,null))[_0x353f('0x50')](handleError(_0xfd4c59,null));};exports[_0x353f('0x27')]=function(_0xc92e75,_0x43aa53){return db[_0x353f('0x4c')][_0x353f('0x30')]({'where':{'id':_0xc92e75['params']['id']}})[_0x353f('0x26')](handleEntityNotFound(_0x43aa53,null))['then'](removeEntity(_0x43aa53,null))[_0x353f('0x50')](handleError(_0x43aa53,null));};exports[_0x353f('0x61')]=function(_0x171839,_0x19c6c1,_0x1021ac){var _0x1eb2c2={'raw':![],'where':{}};var _0x4fecce={};var _0x2fb726={'count':0x0,'rows':[]};return db[_0x353f('0x4c')]['findOne']({'where':{'id':_0x171839[_0x353f('0x60')]['id']}})['then'](handleEntityNotFound(_0x19c6c1,null))[_0x353f('0x26')](function(_0x188b11){if(_0x188b11){_0x4fecce[_0x353f('0x3c')]=_['keys'](db[_0x353f('0x62')][_0x353f('0x39')]);_0x4fecce[_0x353f('0x3d')]=_[_0x353f('0x3e')](_0x171839[_0x353f('0x3d')]);_0x4fecce[_0x353f('0x3f')]=_[_0x353f('0x40')](_0x4fecce['model'],_0x4fecce[_0x353f('0x3d')]);_0x1eb2c2['attributes']=_[_0x353f('0x40')](_0x4fecce['model'],qs['fields'](_0x171839[_0x353f('0x3d')][_0x353f('0x42')]));_0x1eb2c2[_0x353f('0x41')]=_0x1eb2c2[_0x353f('0x41')][_0x353f('0x43')]?_0x1eb2c2['attributes']:_0x4fecce[_0x353f('0x3c')];if(!_0x171839[_0x353f('0x3d')][_0x353f('0x44')](_0x353f('0x63'))){_0x1eb2c2['limit']=qs[_0x353f('0x1f')](_0x171839[_0x353f('0x3d')][_0x353f('0x1f')]);_0x1eb2c2[_0x353f('0x1e')]=qs[_0x353f('0x1e')](_0x171839['query'][_0x353f('0x1e')]);}_0x1eb2c2[_0x353f('0x45')]=qs[_0x353f('0x46')](_0x171839[_0x353f('0x3d')]['sort']);_0x1eb2c2[_0x353f('0x47')]=qs[_0x353f('0x3f')](_[_0x353f('0x48')](_0x171839[_0x353f('0x3d')],_0x4fecce[_0x353f('0x3f')]));_0x1eb2c2[_0x353f('0x47')]['VoiceQueueId']=_0x188b11['id'];if(_0x171839[_0x353f('0x3d')][_0x353f('0x2b')]){_0x1eb2c2[_0x353f('0x47')]=_[_0x353f('0x49')](_0x1eb2c2[_0x353f('0x47')],{'$or':_[_0x353f('0x2d')](_0x1eb2c2[_0x353f('0x41')],function(_0x59af5a){var _0x38e79d={};_0x38e79d[_0x59af5a]={'$like':'%'+_0x171839[_0x353f('0x3d')][_0x353f('0x2b')]+'%'};return _0x38e79d;})});}_0x1eb2c2=_[_0x353f('0x49')]({},_0x1eb2c2,_0x171839[_0x353f('0x4b')]);return db[_0x353f('0x62')][_0x353f('0x21')]({'where':_0x1eb2c2['where']})[_0x353f('0x26')](function(_0x1d80b8){_0x2fb726['count']=_0x1d80b8;if(_0x171839['query'][_0x353f('0x4d')]){_0x1eb2c2[_0x353f('0x4e')]=[{'all':!![]}];}return db[_0x353f('0x62')][_0x353f('0x64')](_0x1eb2c2);})[_0x353f('0x26')](function(_0x4d1cca){_0x2fb726[_0x353f('0x4f')]=_0x4d1cca;return _0x2fb726;});}})['then'](respondWithFilteredResult(_0x19c6c1,_0x1eb2c2))['catch'](handleError(_0x19c6c1,null));};exports['getHopperHistories']=function(_0x26bcc8,_0x40f92d,_0x365463){var _0x42101e={'raw':!![],'where':{}};var _0x30a10d={};var _0x3e436d={'count':0x0,'rows':[]};return db[_0x353f('0x4c')][_0x353f('0x65')]({'where':{'id':_0x26bcc8[_0x353f('0x60')]['id']}})['then'](handleEntityNotFound(_0x40f92d,null))[_0x353f('0x26')](function(_0x3563f3){if(_0x3563f3){_0x30a10d[_0x353f('0x3c')]=_[_0x353f('0x3e')](db[_0x353f('0x66')]['rawAttributes']);_0x30a10d[_0x353f('0x3d')]=_[_0x353f('0x3e')](_0x26bcc8['query']);_0x30a10d[_0x353f('0x3f')]=_[_0x353f('0x40')](_0x30a10d[_0x353f('0x3c')],_0x30a10d['query']);_0x42101e[_0x353f('0x41')]=_['intersection'](_0x30a10d['model'],qs['fields'](_0x26bcc8['query'][_0x353f('0x42')]));_0x42101e[_0x353f('0x41')]=_0x42101e[_0x353f('0x41')]['length']?_0x42101e['attributes']:_0x30a10d[_0x353f('0x3c')];if(!_0x26bcc8[_0x353f('0x3d')][_0x353f('0x44')]('nolimit')){_0x42101e[_0x353f('0x1f')]=qs[_0x353f('0x1f')](_0x26bcc8[_0x353f('0x3d')][_0x353f('0x1f')]);_0x42101e[_0x353f('0x1e')]=qs[_0x353f('0x1e')](_0x26bcc8['query'][_0x353f('0x1e')]);}_0x42101e['order']=qs[_0x353f('0x46')](_0x26bcc8['query'][_0x353f('0x46')]);_0x42101e[_0x353f('0x47')]=qs[_0x353f('0x3f')](_[_0x353f('0x48')](_0x26bcc8[_0x353f('0x3d')],_0x30a10d[_0x353f('0x3f')]));_0x42101e[_0x353f('0x47')][_0x353f('0x67')]=_0x3563f3['id'];if(_0x26bcc8[_0x353f('0x3d')][_0x353f('0x2b')]){_0x42101e[_0x353f('0x47')]=_[_0x353f('0x49')](_0x42101e['where'],{'$or':_[_0x353f('0x2d')](_0x42101e[_0x353f('0x41')],function(_0x4711cf){var _0x3ccea4={};_0x3ccea4[_0x4711cf]={'$like':'%'+_0x26bcc8[_0x353f('0x3d')][_0x353f('0x2b')]+'%'};return _0x3ccea4;})});}_0x42101e=_['merge']({},_0x42101e,_0x26bcc8[_0x353f('0x4b')]);return db[_0x353f('0x66')][_0x353f('0x21')]({'where':_0x42101e[_0x353f('0x47')]})[_0x353f('0x26')](function(_0x174266){_0x3e436d['count']=_0x174266;if(_0x26bcc8[_0x353f('0x3d')][_0x353f('0x4d')]){_0x42101e[_0x353f('0x4e')]=[{'all':!![]}];}return db['CmHopperHistory'][_0x353f('0x64')](_0x42101e);})[_0x353f('0x26')](function(_0x358106){_0x3e436d[_0x353f('0x4f')]=_0x358106;return _0x3e436d;});}})[_0x353f('0x26')](respondWithFilteredResult(_0x40f92d,_0x42101e))['catch'](handleError(_0x40f92d,null));};exports[_0x353f('0x68')]=function(_0x22214f,_0x3af7bc,_0x4e075d){var _0x119162={'raw':!![],'where':{}};var _0x41aa81={};var _0x43321c={'count':0x0,'rows':[]};return db[_0x353f('0x4c')]['findOne']({'where':{'id':_0x22214f[_0x353f('0x60')]['id']}})[_0x353f('0x26')](handleEntityNotFound(_0x3af7bc,null))[_0x353f('0x26')](function(_0x528efb){if(_0x528efb){_0x41aa81[_0x353f('0x3c')]=_[_0x353f('0x3e')](db['CmHopperFinal']['rawAttributes']);_0x41aa81[_0x353f('0x3d')]=_[_0x353f('0x3e')](_0x22214f['query']);_0x41aa81['filters']=_['intersection'](_0x41aa81['model'],_0x41aa81[_0x353f('0x3d')]);_0x119162[_0x353f('0x41')]=_[_0x353f('0x40')](_0x41aa81[_0x353f('0x3c')],qs[_0x353f('0x42')](_0x22214f[_0x353f('0x3d')][_0x353f('0x42')]));_0x119162['attributes']=_0x119162['attributes'][_0x353f('0x43')]?_0x119162[_0x353f('0x41')]:_0x41aa81[_0x353f('0x3c')];if(!_0x22214f['query'][_0x353f('0x44')]('nolimit')){_0x119162['limit']=qs[_0x353f('0x1f')](_0x22214f[_0x353f('0x3d')][_0x353f('0x1f')]);_0x119162[_0x353f('0x1e')]=qs[_0x353f('0x1e')](_0x22214f[_0x353f('0x3d')][_0x353f('0x1e')]);}_0x119162['order']=qs[_0x353f('0x46')](_0x22214f[_0x353f('0x3d')]['sort']);_0x119162[_0x353f('0x47')]=qs[_0x353f('0x3f')](_[_0x353f('0x48')](_0x22214f[_0x353f('0x3d')],_0x41aa81['filters']));_0x119162['where'][_0x353f('0x67')]=_0x528efb['id'];if(_0x22214f['query'][_0x353f('0x2b')]){_0x119162[_0x353f('0x47')]=_['merge'](_0x119162['where'],{'$or':_[_0x353f('0x2d')](_0x119162[_0x353f('0x41')],function(_0x3ee9d4){var _0x5ed633={};_0x5ed633[_0x3ee9d4]={'$like':'%'+_0x22214f[_0x353f('0x3d')]['filter']+'%'};return _0x5ed633;})});}_0x119162=_[_0x353f('0x49')]({},_0x119162,_0x22214f[_0x353f('0x4b')]);return db[_0x353f('0x69')][_0x353f('0x21')]({'where':_0x119162['where']})[_0x353f('0x26')](function(_0x283448){_0x43321c['count']=_0x283448;if(_0x22214f[_0x353f('0x3d')]['includeAll']){_0x119162['include']=[{'all':!![]}];}return db[_0x353f('0x69')][_0x353f('0x64')](_0x119162);})[_0x353f('0x26')](function(_0x2571b5){_0x43321c[_0x353f('0x4f')]=_0x2571b5;return _0x43321c;});}})[_0x353f('0x26')](respondWithFilteredResult(_0x3af7bc,_0x119162))['catch'](handleError(_0x3af7bc,null));};exports[_0x353f('0x6a')]=function(_0x33938e,_0x2eec0c,_0x59ce0e){var _0x298919={'raw':!![],'where':{}};var _0x33d9eb={};var _0x3e6e2c={'count':0x0,'rows':[]};return db[_0x353f('0x4c')][_0x353f('0x65')]({'where':{'id':_0x33938e[_0x353f('0x60')]['id']}})[_0x353f('0x26')](handleEntityNotFound(_0x2eec0c,null))[_0x353f('0x26')](function(_0x1051b0){if(_0x1051b0){_0x33d9eb[_0x353f('0x3c')]=_[_0x353f('0x3e')](db[_0x353f('0x6b')][_0x353f('0x39')]);_0x33d9eb[_0x353f('0x3d')]=_[_0x353f('0x3e')](_0x33938e['query']);_0x33d9eb[_0x353f('0x3f')]=_[_0x353f('0x40')](_0x33d9eb[_0x353f('0x3c')],_0x33d9eb[_0x353f('0x3d')]);_0x298919['attributes']=_[_0x353f('0x40')](_0x33d9eb[_0x353f('0x3c')],qs[_0x353f('0x42')](_0x33938e[_0x353f('0x3d')]['fields']));_0x298919[_0x353f('0x41')]=_0x298919[_0x353f('0x41')][_0x353f('0x43')]?_0x298919[_0x353f('0x41')]:_0x33d9eb[_0x353f('0x3c')];if(!_0x33938e['query'][_0x353f('0x44')](_0x353f('0x63'))){_0x298919['limit']=qs[_0x353f('0x1f')](_0x33938e[_0x353f('0x3d')][_0x353f('0x1f')]);_0x298919['offset']=qs[_0x353f('0x1e')](_0x33938e[_0x353f('0x3d')][_0x353f('0x1e')]);}_0x298919[_0x353f('0x45')]=qs['sort'](_0x33938e[_0x353f('0x3d')]['sort']);_0x298919[_0x353f('0x47')]=qs[_0x353f('0x3f')](_[_0x353f('0x48')](_0x33938e[_0x353f('0x3d')],_0x33d9eb['filters']));_0x298919[_0x353f('0x47')][_0x353f('0x67')]=_0x1051b0['id'];if(_0x33938e[_0x353f('0x3d')]['filter']){_0x298919['where']=_['merge'](_0x298919[_0x353f('0x47')],{'$or':_[_0x353f('0x2d')](_0x298919[_0x353f('0x41')],function(_0xc053d1){var _0xcd16a7={};_0xcd16a7[_0xc053d1]={'$like':'%'+_0x33938e[_0x353f('0x3d')][_0x353f('0x2b')]+'%'};return _0xcd16a7;})});}_0x298919=_['merge']({},_0x298919,_0x33938e[_0x353f('0x4b')]);return db['CmHopperBlack']['count']({'where':_0x298919[_0x353f('0x47')]})[_0x353f('0x26')](function(_0x3604fb){_0x3e6e2c[_0x353f('0x21')]=_0x3604fb;if(_0x33938e[_0x353f('0x3d')]['includeAll']){_0x298919[_0x353f('0x4e')]=[{'all':!![]}];}return db[_0x353f('0x6b')][_0x353f('0x64')](_0x298919);})[_0x353f('0x26')](function(_0x18d003){_0x3e6e2c[_0x353f('0x4f')]=_0x18d003;return _0x3e6e2c;});}})['then'](respondWithFilteredResult(_0x2eec0c,_0x298919))[_0x353f('0x50')](handleError(_0x2eec0c,null));};exports['getTeams']=function(_0x5d0bc4,_0x142a49,_0x200a8c){var _0x55a3d5={};var _0x336ed7={};var _0x4dc6df;var _0x433fd6;return db['VoiceQueue'][_0x353f('0x65')]({'where':{'id':_0x5d0bc4[_0x353f('0x60')]['id']}})['then'](handleEntityNotFound(_0x142a49,null))[_0x353f('0x26')](function(_0x7e3bff){if(_0x7e3bff){_0x4dc6df=_0x7e3bff;_0x336ed7[_0x353f('0x3c')]=_[_0x353f('0x3e')](db[_0x353f('0x6c')][_0x353f('0x39')]);_0x336ed7['query']=_[_0x353f('0x3e')](_0x5d0bc4[_0x353f('0x3d')]);_0x336ed7[_0x353f('0x3f')]=_[_0x353f('0x40')](_0x336ed7['model'],_0x336ed7[_0x353f('0x3d')]);_0x55a3d5['attributes']=_[_0x353f('0x40')](_0x336ed7[_0x353f('0x3c')],qs[_0x353f('0x42')](_0x5d0bc4[_0x353f('0x3d')][_0x353f('0x42')]));_0x55a3d5['attributes']=_0x55a3d5['attributes'][_0x353f('0x43')]?_0x55a3d5['attributes']:_0x336ed7[_0x353f('0x3c')];_0x55a3d5[_0x353f('0x45')]=qs[_0x353f('0x46')](_0x5d0bc4[_0x353f('0x3d')][_0x353f('0x46')]);_0x55a3d5[_0x353f('0x47')]=qs['filters'](_[_0x353f('0x48')](_0x5d0bc4[_0x353f('0x3d')],_0x336ed7['filters']));if(_0x5d0bc4[_0x353f('0x3d')][_0x353f('0x2b')]){_0x55a3d5[_0x353f('0x47')]=_[_0x353f('0x49')](_0x55a3d5[_0x353f('0x47')],{'$or':_['map'](_0x55a3d5['attributes'],function(_0xde0cf){var _0x2877a1={};_0x2877a1[_0xde0cf]={'$like':'%'+_0x5d0bc4['query'][_0x353f('0x2b')]+'%'};return _0x2877a1;})});}_0x55a3d5=_[_0x353f('0x49')]({},_0x55a3d5,_0x5d0bc4[_0x353f('0x4b')]);return _0x4dc6df[_0x353f('0x6d')](_0x55a3d5);}})[_0x353f('0x26')](function(_0x17f475){if(_0x17f475){_0x433fd6=_0x17f475[_0x353f('0x43')];if(!_0x5d0bc4['query'][_0x353f('0x44')](_0x353f('0x63'))){_0x55a3d5[_0x353f('0x1f')]=qs[_0x353f('0x1f')](_0x5d0bc4[_0x353f('0x3d')][_0x353f('0x1f')]);_0x55a3d5[_0x353f('0x1e')]=qs[_0x353f('0x1e')](_0x5d0bc4[_0x353f('0x3d')][_0x353f('0x1e')]);}return _0x4dc6df[_0x353f('0x6d')](_0x55a3d5);}})[_0x353f('0x26')](function(_0x2bab59){if(_0x2bab59){return _0x2bab59?{'count':_0x433fd6,'rows':_0x2bab59}:null;}})[_0x353f('0x26')](respondWithResult(_0x142a49,null))['catch'](handleError(_0x142a49,null));};exports['addTeams']=function(_0x2c4a76,_0x269315,_0x2b6f2f){var _0xf6e39b=_0x2c4a76[_0x353f('0x5d')][_0x353f('0x6e')];var _0x21558f=_[_0x353f('0x2d')](_0xf6e39b,'id');return db[_0x353f('0x6c')][_0x353f('0x64')]({'where':{'id':_0x21558f},'attributes':['id'],'include':[{'model':db[_0x353f('0x6f')],'as':'Agents','attributes':['id',_0x353f('0x36'),'online','voicePause',_0x353f('0x70')],'raw':!![]}]})[_0x353f('0x26')](function(_0x310086){if(_0x310086){var _0x191507=_['flatMap'](_0x310086,function(_0x2e2b57){var _0x3138cb=_0x2e2b57[_0x353f('0x28')]({'plain':!![]});_0x3138cb[_0x353f('0x71')][_0x353f('0x72')](function(_0x2326ee){_0x2326ee['penalty']=_[_0x353f('0x30')](_0xf6e39b,{'id':_0x3138cb['id']})[_0x353f('0x73')];});return _0x3138cb[_0x353f('0x71')];});return db[_0x353f('0x4c')][_0x353f('0x30')]({'where':{'id':_0x2c4a76[_0x353f('0x60')]['id']}})[_0x353f('0x26')](function(_0x1a690e){return db[_0x353f('0x74')][_0x353f('0x75')](function(_0x22fefe){return _0x1a690e[_0x353f('0x76')](_0x21558f,{'transaction':_0x22fefe})['then'](function(){return BPromise[_0x353f('0x77')](_0xf6e39b,function(_0x1a9567){return db[_0x353f('0x78')]['upsert']({'TeamId':_0x1a9567['id'],'VoiceQueueId':_0x2c4a76[_0x353f('0x60')]['id'],'penalty':_0x1a9567[_0x353f('0x73')]},{'transaction':_0x22fefe});});})['then'](function(){return BPromise[_0x353f('0x77')](_0x191507,function(_0x4b18d9){return db[_0x353f('0x79')][_0x353f('0x7a')]({'where':{'UserId':_0x4b18d9['id'],'VoiceQueueId':_0x2c4a76['params']['id']},'defaults':{'penalty':_0x4b18d9[_0x353f('0x73')]},'transaction':_0x22fefe});});})[_0x353f('0x26')](function(){return BPromise[_0x353f('0x77')](_[_0x353f('0x2b')](_0x191507,{'online':!![]}),function(_0x9af04c){return db[_0x353f('0x7b')][_0x353f('0x7c')]({'membername':_0x9af04c[_0x353f('0x36')],'UserId':_0x9af04c['id'],'queue_name':_0x1a690e[_0x353f('0x36')],'VoiceQueueId':_0x1a690e['id'],'interface':_['isNil'](_0x9af04c[_0x353f('0x70')])?util['format']('SIP/%s',_0x9af04c[_0x353f('0x36')]):_0x9af04c[_0x353f('0x70')],'paused':_0x9af04c[_0x353f('0x7d')]||![],'penalty':_0x9af04c[_0x353f('0x73')]},{'transaction':_0x22fefe});});})['then'](function(){_0x191507[_0x353f('0x72')](function(_0x2e830e){socket[_0x353f('0x7e')]('userVoiceQueue:save',{'UserId':_0x2e830e['id'],'VoiceQueueId':_0x1a690e['id']});});});});});}})['then'](respondWithStatusCode(_0x269315,null))['catch'](handleError(_0x269315,null));};exports[_0x353f('0x7f')]=function(_0x2f890e,_0x1b410c,_0x32e904){return db[_0x353f('0x6c')][_0x353f('0x64')]({'where':{'id':_0x2f890e[_0x353f('0x3d')][_0x353f('0x80')]},'attributes':['id'],'include':[{'model':db[_0x353f('0x6f')],'as':_0x353f('0x71'),'attributes':['id'],'raw':!![]}]})[_0x353f('0x26')](handleEntityNotFound(_0x1b410c,null))['then'](function(_0x180d26){var _0x117329=_[_0x353f('0x2d')](_0x180d26,'id');var _0x5bb241=[];var _0x2c4c27=[];var _0x3b70f8=squel[_0x353f('0x81')]();_0x3b70f8[_0x353f('0x82')](_0x353f('0x83'))[_0x353f('0x84')](_0x353f('0x85'),'tq')[_0x353f('0x86')](_0x353f('0x87'),'ut',_0x353f('0x88'))[_0x353f('0x47')](_0x353f('0x89'),_0x2f890e[_0x353f('0x60')]['id']);for(var _0x2e0d43=0x0;_0x2e0d43<_0x180d26[_0x353f('0x43')];_0x2e0d43+=0x1){let _0x2610b7=_0x180d26[_0x2e0d43];for(var _0x1c1096=0x0;_0x1c1096<_0x2610b7['Agents'][_0x353f('0x43')];_0x1c1096+=0x1){let _0x2f2d55=_0x2610b7[_0x353f('0x71')][_0x1c1096];var _0xd1a27a=_0x3b70f8[_0x353f('0x8a')]();_0xd1a27a['where']('ut.UserId\x20=\x20?',_0x2f2d55['id']);_0x2c4c27[_0x353f('0x8b')](db['sequelize']['query'](_0xd1a27a[_0x353f('0x8c')](),{'type':db[_0x353f('0x74')][_0x353f('0x8d')][_0x353f('0x8e')]})[_0x353f('0x26')](function(_0x2a5528){if(_0x2a5528[_0x353f('0x43')]===0x1){return _0x2f2d55['id'];}else{var _0x5018af=_[_0x353f('0x8f')](_[_0x353f('0x2d')](_0x2a5528,_0x353f('0x90')),function(_0x4cbc75){return _[_0x353f('0x2f')](_0x117329,_0x4cbc75);});if(_0x5018af){return _0x2f2d55['id'];}}}));}}return BPromise[_0x353f('0x91')](_0x2c4c27)[_0x353f('0x26')](function(_0x1dfc4a){_0x5bb241=_(_0x5bb241)['union'](_0x1dfc4a)[_0x353f('0x92')]()[_0x353f('0x2e')]();return db[_0x353f('0x4c')]['find']({'where':{'id':_0x2f890e['params']['id']}})[_0x353f('0x26')](function(_0x4ca822){return db[_0x353f('0x74')][_0x353f('0x75')](function(_0x30d084){return _0x4ca822[_0x353f('0x7f')](_0x2f890e[_0x353f('0x3d')][_0x353f('0x80')],{'transaction':_0x30d084})[_0x353f('0x26')](function(){if(!_['isEmpty'](_0x5bb241)){return _0x4ca822[_0x353f('0x93')](_0x5bb241,{'transaction':_0x30d084})[_0x353f('0x26')](function(){return db[_0x353f('0x7b')][_0x353f('0x27')]({'where':{'VoiceQueueId':_0x2f890e[_0x353f('0x60')]['id'],'UserId':_0x5bb241},'transaction':_0x30d084});});}})[_0x353f('0x26')](function(){_0x5bb241['forEach'](function(_0x162c27){socket[_0x353f('0x7e')](_0x353f('0x94'),{'UserId':_0x162c27,'VoiceQueueId':_0x4ca822['id']});});});});});});})[_0x353f('0x26')](respondWithStatusCode(_0x1b410c,null))['catch'](handleError(_0x1b410c,null));};exports['addAgents']=function(_0x2e801b,_0x417d4f,_0x1bc0a1){var _0x30fa5c,_0x30722f;return db['VoiceQueue'][_0x353f('0x30')]({'where':{'id':_0x2e801b['params']['id']}})['then'](handleEntityNotFound(_0x417d4f,null))['then'](function(_0x3eb3b9){if(_0x3eb3b9){_0x30722f=_0x3eb3b9;return _0x3eb3b9['addAgents'](_0x2e801b[_0x353f('0x5d')]['ids'],_[_0x353f('0x5b')](_0x2e801b[_0x353f('0x5d')],[_0x353f('0x80'),'id'])||{})[_0x353f('0x95')](function(_0x7b27ff){for(var _0x47093f=0x0;_0x47093f<_0x2e801b[_0x353f('0x5d')][_0x353f('0x80')]['length'];_0x47093f+=0x1){socket[_0x353f('0x7e')](_0x353f('0x96'),{'UserId':Number(_0x2e801b['body'][_0x353f('0x80')][_0x47093f]),'VoiceQueueId':Number(_0x2e801b[_0x353f('0x60')]['id'])});}return _0x7b27ff;});}})[_0x353f('0x26')](function(_0x59db1e){_0x30fa5c=_0x59db1e||[];if(_0x30722f){return db[_0x353f('0x6f')]['findAll']({'where':{'id':_0x2e801b[_0x353f('0x5d')][_0x353f('0x80')]},'attributes':['id',_0x353f('0x36'),_0x353f('0x97'),_0x353f('0x7d'),_0x353f('0x70')],'raw':!![]});}})[_0x353f('0x26')](function(_0x3087cd){if(!_['isEmpty'](_0x3087cd)){var _0x4a778d=[];for(var _0x2da431=0x0;_0x2da431<_0x3087cd[_0x353f('0x43')];_0x2da431++){if(_0x3087cd[_0x2da431][_0x353f('0x97')]){_0x4a778d[_0x353f('0x8b')](db[_0x353f('0x7b')][_0x353f('0x7c')]({'membername':_0x3087cd[_0x2da431][_0x353f('0x36')],'UserId':_0x3087cd[_0x2da431]['id'],'queue_name':_0x30722f['name'],'VoiceQueueId':_0x30722f['id'],'interface':_[_0x353f('0x98')](_0x3087cd[_0x2da431]['interface'])?util['format'](_0x353f('0x99'),_0x3087cd[_0x2da431]['name']):_0x3087cd[_0x2da431]['interface'],'paused':_0x3087cd[_0x2da431]['voicePause']||![],'penalty':_0x2e801b[_0x353f('0x5d')][_0x353f('0x73')]||0x0}));}}return BPromise[_0x353f('0x91')](_0x4a778d);}})['then'](function(){return _0x30fa5c;})[_0x353f('0x26')](respondWithResult(_0x417d4f,null))[_0x353f('0x50')](handleError(_0x417d4f,null));};exports[_0x353f('0x93')]=function(_0x27924f,_0x3f545d,_0x12c5f8){return db['VoiceQueue'][_0x353f('0x30')]({'where':{'id':_0x27924f[_0x353f('0x60')]['id']}})[_0x353f('0x26')](handleEntityNotFound(_0x3f545d,null))[_0x353f('0x26')](function(_0x4e953d){if(_0x4e953d){return _0x4e953d[_0x353f('0x93')](_0x27924f[_0x353f('0x3d')][_0x353f('0x80')])[_0x353f('0x26')](function(){if(_[_0x353f('0x9a')](_0x27924f[_0x353f('0x3d')]['ids'])){for(var _0x6d17a6=0x0;_0x6d17a6<_0x27924f[_0x353f('0x3d')][_0x353f('0x80')][_0x353f('0x43')];_0x6d17a6+=0x1){socket[_0x353f('0x7e')](_0x353f('0x94'),{'UserId':Number(_0x27924f[_0x353f('0x3d')][_0x353f('0x80')][_0x6d17a6]),'VoiceQueueId':Number(_0x27924f['params']['id'])});}}else{socket[_0x353f('0x7e')]('userVoiceQueue:remove',{'UserId':Number(_0x27924f[_0x353f('0x3d')][_0x353f('0x80')]),'VoiceQueueId':Number(_0x27924f[_0x353f('0x60')]['id'])});}});}})[_0x353f('0x26')](function(_0x5aa2e3){return db['UserVoiceQueueRt'][_0x353f('0x27')]({'where':{'VoiceQueueId':_0x27924f[_0x353f('0x60')]['id'],'UserId':_0x27924f[_0x353f('0x3d')]['ids']}})[_0x353f('0x26')](function(){return _0x5aa2e3;});})[_0x353f('0x26')](respondWithStatusCode(_0x3f545d,null))[_0x353f('0x50')](handleError(_0x3f545d,null));};exports[_0x353f('0x9b')]=function(_0x1118ca,_0x2b92fc,_0x21d1b0){var _0x263e03={};var _0x46ee93={};var _0x251005;var _0x66bb54;return db[_0x353f('0x4c')][_0x353f('0x65')]({'where':{'id':_0x1118ca[_0x353f('0x60')]['id']}})[_0x353f('0x26')](handleEntityNotFound(_0x2b92fc,null))[_0x353f('0x26')](function(_0x4018b1){if(_0x4018b1){_0x251005=_0x4018b1;_0x46ee93[_0x353f('0x3c')]=_['keys'](db[_0x353f('0x6f')]['rawAttributes']);_0x46ee93[_0x353f('0x3d')]=_[_0x353f('0x3e')](_0x1118ca['query']);_0x46ee93[_0x353f('0x3f')]=_[_0x353f('0x40')](_0x46ee93[_0x353f('0x3c')],_0x46ee93[_0x353f('0x3d')]);_0x263e03[_0x353f('0x41')]=_[_0x353f('0x40')](_0x46ee93['model'],qs['fields'](_0x1118ca['query']['fields']));_0x263e03[_0x353f('0x41')]=_0x263e03['attributes']['length']?_0x263e03[_0x353f('0x41')]:_0x46ee93[_0x353f('0x3c')];_0x263e03[_0x353f('0x45')]=qs[_0x353f('0x46')](_0x1118ca[_0x353f('0x3d')][_0x353f('0x46')]);_0x263e03[_0x353f('0x47')]=qs[_0x353f('0x3f')](_['pick'](_0x1118ca['query'],_0x46ee93[_0x353f('0x3f')]));if(_0x1118ca[_0x353f('0x3d')]['filter']){_0x263e03[_0x353f('0x47')]=_[_0x353f('0x49')](_0x263e03[_0x353f('0x47')],{'$or':_[_0x353f('0x2d')](_0x263e03[_0x353f('0x41')],function(_0x25bd4a){var _0x1d7e44={};_0x1d7e44[_0x25bd4a]={'$like':'%'+_0x1118ca[_0x353f('0x3d')][_0x353f('0x2b')]+'%'};return _0x1d7e44;})});}_0x263e03=_['merge']({},_0x263e03,_0x1118ca[_0x353f('0x4b')]);return _0x251005['getAgents'](_0x263e03);}})[_0x353f('0x26')](function(_0x15c670){if(_0x15c670){_0x66bb54=_0x15c670[_0x353f('0x43')];if(!_0x1118ca['query'][_0x353f('0x44')](_0x353f('0x63'))){_0x263e03['limit']=qs[_0x353f('0x1f')](_0x1118ca['query']['limit']);_0x263e03[_0x353f('0x1e')]=qs[_0x353f('0x1e')](_0x1118ca[_0x353f('0x3d')][_0x353f('0x1e')]);}return _0x251005[_0x353f('0x9b')](_0x263e03);}})[_0x353f('0x26')](function(_0x43ec8d){if(_0x43ec8d){return _0x43ec8d?{'count':_0x66bb54,'rows':_0x43ec8d}:null;}})[_0x353f('0x26')](respondWithResult(_0x2b92fc,null))[_0x353f('0x50')](handleError(_0x2b92fc,null));};exports[_0x353f('0x9c')]=function(_0x5f1f73,_0xd716ff,_0x44abd7){var _0x48eebc={};var _0x1d58bb={};var _0x133e0c;var _0x10b0cd;return db[_0x353f('0x4c')][_0x353f('0x65')]({'where':{'id':_0x5f1f73['params']['id']}})[_0x353f('0x26')](handleEntityNotFound(_0xd716ff,null))['then'](function(_0x113766){if(_0x113766){_0x133e0c=_0x113766;_0x1d58bb[_0x353f('0x3c')]=_[_0x353f('0x3e')](db['UserVoiceQueueRt'][_0x353f('0x39')]);_0x1d58bb[_0x353f('0x3d')]=_['keys'](_0x5f1f73[_0x353f('0x3d')]);_0x1d58bb[_0x353f('0x3f')]=_[_0x353f('0x40')](_0x1d58bb['model'],_0x1d58bb[_0x353f('0x3d')]);_0x48eebc[_0x353f('0x41')]=_['intersection'](_0x1d58bb[_0x353f('0x3c')],qs['fields'](_0x5f1f73['query'][_0x353f('0x42')]));_0x48eebc['attributes']=_0x48eebc[_0x353f('0x41')][_0x353f('0x43')]?_0x48eebc[_0x353f('0x41')]:_0x1d58bb['model'];_0x48eebc[_0x353f('0x45')]=qs[_0x353f('0x46')](_0x5f1f73[_0x353f('0x3d')][_0x353f('0x46')]);_0x48eebc['where']=qs[_0x353f('0x3f')](_[_0x353f('0x48')](_0x5f1f73[_0x353f('0x3d')],_0x1d58bb[_0x353f('0x3f')]));if(_0x5f1f73[_0x353f('0x3d')][_0x353f('0x2b')]){_0x48eebc[_0x353f('0x47')]=_[_0x353f('0x49')](_0x48eebc[_0x353f('0x47')],{'$or':_['map'](_0x48eebc['attributes'],function(_0x1d4d7a){var _0x2f48d0={};_0x2f48d0[_0x1d4d7a]={'$like':'%'+_0x5f1f73[_0x353f('0x3d')]['filter']+'%'};return _0x2f48d0;})});}_0x48eebc=_[_0x353f('0x49')]({},_0x48eebc,_0x5f1f73[_0x353f('0x4b')]);return _0x133e0c[_0x353f('0x9c')](_0x48eebc);}})[_0x353f('0x26')](function(_0x535bed){if(_0x535bed){_0x10b0cd=_0x535bed['length'];if(!_0x5f1f73['query'][_0x353f('0x44')](_0x353f('0x63'))){_0x48eebc[_0x353f('0x1f')]=qs[_0x353f('0x1f')](_0x5f1f73[_0x353f('0x3d')][_0x353f('0x1f')]);_0x48eebc[_0x353f('0x1e')]=qs[_0x353f('0x1e')](_0x5f1f73['query'][_0x353f('0x1e')]);}return _0x133e0c[_0x353f('0x9c')](_0x48eebc);}})[_0x353f('0x26')](function(_0x2db92d){return _0x2db92d?{'count':_0x10b0cd,'rows':_0x2db92d}:null;})[_0x353f('0x26')](respondWithResult(_0xd716ff,null))[_0x353f('0x50')](handleError(_0xd716ff,null));};exports[_0x353f('0x9d')]=function(_0x4b2dd6,_0x5c477a,_0x47e5b3){var _0x27a1ef={};var _0x16f604={};var _0x3b78c;var _0xbead80;return db[_0x353f('0x4c')][_0x353f('0x65')]({'where':{'id':_0x4b2dd6[_0x353f('0x60')]['id']}})[_0x353f('0x26')](handleEntityNotFound(_0x5c477a,null))[_0x353f('0x26')](function(_0x49814a){if(_0x49814a){_0x3b78c=_0x49814a;_0x16f604[_0x353f('0x3c')]=_[_0x353f('0x3e')](db[_0x353f('0x9e')][_0x353f('0x39')]);_0x16f604[_0x353f('0x3d')]=_['keys'](_0x4b2dd6['query']);_0x16f604['filters']=_[_0x353f('0x40')](_0x16f604[_0x353f('0x3c')],_0x16f604[_0x353f('0x3d')]);_0x27a1ef[_0x353f('0x41')]=_[_0x353f('0x40')](_0x16f604[_0x353f('0x3c')],qs[_0x353f('0x42')](_0x4b2dd6[_0x353f('0x3d')][_0x353f('0x42')]));_0x27a1ef[_0x353f('0x41')]=_0x27a1ef['attributes'][_0x353f('0x43')]?_0x27a1ef[_0x353f('0x41')]:_0x16f604['model'];_0x27a1ef[_0x353f('0x45')]=qs[_0x353f('0x46')](_0x4b2dd6[_0x353f('0x3d')][_0x353f('0x46')]);_0x27a1ef[_0x353f('0x47')]=qs[_0x353f('0x3f')](_[_0x353f('0x48')](_0x4b2dd6['query'],_0x16f604[_0x353f('0x3f')]));if(_0x4b2dd6[_0x353f('0x3d')]['filter']){_0x27a1ef[_0x353f('0x47')]=_[_0x353f('0x49')](_0x27a1ef[_0x353f('0x47')],{'$or':_[_0x353f('0x2d')](_0x27a1ef['attributes'],function(_0x9a6cbd){var _0x2aaa69={};_0x2aaa69[_0x9a6cbd]={'$like':'%'+_0x4b2dd6['query'][_0x353f('0x2b')]+'%'};return _0x2aaa69;})});}_0x27a1ef=_['merge']({},_0x27a1ef,_0x4b2dd6['options']);return _0x3b78c['getLists'](_0x27a1ef);}})['then'](function(_0x28b985){if(_0x28b985){_0xbead80=_0x28b985[_0x353f('0x43')];if(!_0x4b2dd6['query'][_0x353f('0x44')](_0x353f('0x63'))){_0x27a1ef[_0x353f('0x1f')]=qs[_0x353f('0x1f')](_0x4b2dd6['query'][_0x353f('0x1f')]);_0x27a1ef[_0x353f('0x1e')]=qs[_0x353f('0x1e')](_0x4b2dd6['query'][_0x353f('0x1e')]);}return _0x3b78c[_0x353f('0x9d')](_0x27a1ef);}})[_0x353f('0x26')](function(_0x341d77){if(_0x341d77){return _0x341d77?{'count':_0xbead80,'rows':_0x341d77}:null;}})['then'](respondWithResult(_0x5c477a,null))[_0x353f('0x50')](handleError(_0x5c477a,null));};exports[_0x353f('0x9f')]=function(_0x236882,_0x45fb27,_0x562419){var _0x19247a,_0x4be3a3;return db[_0x353f('0x4c')][_0x353f('0x30')]({'where':{'id':_0x236882[_0x353f('0x60')]['id']}})[_0x353f('0x26')](handleEntityNotFound(_0x45fb27,null))[_0x353f('0x26')](function(_0x4f59d8){if(_0x4f59d8){_0x4be3a3=_0x4f59d8;return _0x4f59d8[_0x353f('0x9f')](_0x236882[_0x353f('0x5d')][_0x353f('0x80')],_[_0x353f('0x5b')](_0x236882['body'],['ids','id'])||{});}return null;})[_0x353f('0x95')](function(_0x41c777){var _0x34f526;_0x19247a=_0x41c777||[];var _0x544a74=[];if(_0x41c777){for(var _0x5e11fb=0x0;_0x5e11fb<_0x41c777[_0x353f('0x43')];_0x5e11fb+=0x1){var _0xb59fc3=_0x41c777[_0x5e11fb][_0x353f('0x28')]({'plain':!![]});_0x4be3a3[_0x353f('0xa0')]=_0x236882[_0x353f('0x5d')][_0x353f('0xa0')]?_0x236882[_0x353f('0x5d')][_0x353f('0xa0')]:_0x4be3a3[_0x353f('0xa0')];switch(_0x4be3a3['dialCheckDuplicateType']){case'always':_0x34f526=squel[_0x353f('0xa1')]()[_0x353f('0xa2')](_0x353f('0xa3'))[_0x353f('0xa4')]([_0x353f('0xa5'),_0x353f('0xa6'),'ContactId',_0x353f('0xa7'),_0x353f('0x67'),_0x353f('0x5e'),_0x353f('0x5c')],squel[_0x353f('0x81')]()[_0x353f('0x82')](_0x353f('0xa5'),'phone')[_0x353f('0x82')](_0x353f('0xa8'),_0x353f('0xa6'))[_0x353f('0x82')]('id',_0x353f('0xa9'))[_0x353f('0x82')](_0xb59fc3[_0x353f('0xaa')]['toString'](),_0x353f('0xa7'))[_0x353f('0x82')](_0x236882[_0x353f('0x60')]['id'][_0x353f('0x8c')](),'VoiceQueueId')[_0x353f('0x82')](_0x353f('0xa8'),'createdAt')['field'](_0x353f('0xa8'),'updatedAt')[_0x353f('0x84')](_0x353f('0xab'))[_0x353f('0x47')](_0x353f('0xac'))[_0x353f('0x47')](_0x353f('0xad'),_0xb59fc3[_0x353f('0xaa')][_0x353f('0x8c')]())[_0x353f('0x47')](_0x353f('0xae'))['where'](_0x353f('0xaf'),squel[_0x353f('0x81')]()['field'](_0x353f('0xb0'))['from'](_0x353f('0xb1'))[_0x353f('0x47')]('VoiceQueueId\x20=\x20?',_0x236882[_0x353f('0x60')]['id']['toString']()))[_0x353f('0x47')](_0x353f('0xaf'),squel[_0x353f('0x81')]()['field']('COALESCE(phone,\x27\x27)')[_0x353f('0x84')](_0x353f('0xa3'))['where'](_0x353f('0x89'),_0x236882[_0x353f('0x60')]['id']['toString']())))[_0x353f('0x8c')]();break;case _0x353f('0xb2'):_0x34f526=squel[_0x353f('0xa1')]()[_0x353f('0xa2')](_0x353f('0xa3'))[_0x353f('0xa4')]([_0x353f('0xa5'),_0x353f('0xa6'),_0x353f('0xa9'),_0x353f('0xa7'),_0x353f('0x67'),'createdAt',_0x353f('0x5c')],squel['select']()[_0x353f('0x82')](_0x353f('0xa5'),_0x353f('0xa5'))[_0x353f('0x82')]('NOW()',_0x353f('0xa6'))[_0x353f('0x82')]('id','ContactId')[_0x353f('0x82')](_0xb59fc3[_0x353f('0xaa')][_0x353f('0x8c')](),_0x353f('0xa7'))[_0x353f('0x82')](_0x236882[_0x353f('0x60')]['id'][_0x353f('0x8c')](),_0x353f('0x67'))[_0x353f('0x82')]('NOW()',_0x353f('0x5e'))['field'](_0x353f('0xa8'),_0x353f('0x5c'))[_0x353f('0x84')]('cm_contacts')[_0x353f('0x47')](_0x353f('0xac'))[_0x353f('0x47')](_0x353f('0xad'),_0xb59fc3[_0x353f('0xaa')][_0x353f('0x8c')]())['where'](_0x353f('0xae'))[_0x353f('0x47')](_0x353f('0xaf'),squel[_0x353f('0x81')]()[_0x353f('0x82')]('COALESCE(phone,\x27\x27)')[_0x353f('0x84')](_0x353f('0xa3'))[_0x353f('0x47')](_0x353f('0x89'),_0x236882[_0x353f('0x60')]['id'][_0x353f('0x8c')]())))[_0x353f('0x8c')]();break;default:_0x34f526=squel['insert']()[_0x353f('0xa2')](_0x353f('0xa3'))[_0x353f('0xa4')]([_0x353f('0xa5'),'scheduledAt',_0x353f('0xa9'),_0x353f('0xa7'),'VoiceQueueId','createdAt',_0x353f('0x5c')],squel[_0x353f('0x81')]()['field'](_0x353f('0xa5'),_0x353f('0xa5'))[_0x353f('0x82')](_0x353f('0xa8'),_0x353f('0xa6'))[_0x353f('0x82')]('id','ContactId')[_0x353f('0x82')](_0xb59fc3['CmListId'][_0x353f('0x8c')](),_0x353f('0xa7'))[_0x353f('0x82')](_0x236882[_0x353f('0x60')]['id'][_0x353f('0x8c')](),_0x353f('0x67'))[_0x353f('0x82')]('NOW()',_0x353f('0x5e'))[_0x353f('0x82')]('NOW()','updatedAt')[_0x353f('0x84')](_0x353f('0xab'))['where'](_0x353f('0xac'))[_0x353f('0x47')](_0x353f('0xad'),_0xb59fc3[_0x353f('0xaa')][_0x353f('0x8c')]())['where'](_0x353f('0xae')))[_0x353f('0x8c')]();}_0x544a74[_0x353f('0x8b')](db[_0x353f('0x74')][_0x353f('0x3d')](_0x34f526));}return BPromise[_0x353f('0x91')](_0x544a74);}})[_0x353f('0x26')](function(){return _0x19247a;})[_0x353f('0x26')](respondWithResult(_0x45fb27,null))[_0x353f('0x50')](handleError(_0x45fb27,null));};exports[_0x353f('0xb3')]=function(_0x223ac2,_0x3d47d0,_0x25a940){return db[_0x353f('0x4c')][_0x353f('0x30')]({'where':{'id':_0x223ac2[_0x353f('0x60')]['id']}})['then'](handleEntityNotFound(_0x3d47d0,null))[_0x353f('0x26')](function(_0x2d6337){if(_0x2d6337){return _0x2d6337[_0x353f('0xb3')](_0x223ac2['query']['ids']);}})[_0x353f('0x26')](function(_0x3b516e){if(_0x3b516e){return db['CmHopper'][_0x353f('0x27')]({'where':{'ListId':_0x223ac2[_0x353f('0x3d')]['ids'],'VoiceQueueId':_0x223ac2['params']['id']}})[_0x353f('0x26')](function(){return _0x3b516e;});}})['then'](respondWithStatusCode(_0x3d47d0,null))['catch'](handleError(_0x3d47d0,null));};exports[_0x353f('0xb4')]=function(_0x3200ff,_0x5ea58c,_0x24cdee){var _0x4b42b5={};var _0x4c4b0a={};var _0x331f45;var _0x4ab28a;return db[_0x353f('0x4c')][_0x353f('0x65')]({'where':{'id':_0x3200ff['params']['id']}})['then'](handleEntityNotFound(_0x5ea58c,null))['then'](function(_0x5509ec){if(_0x5509ec){_0x331f45=_0x5509ec;_0x4c4b0a['model']=_[_0x353f('0x3e')](db[_0x353f('0x9e')][_0x353f('0x39')]);_0x4c4b0a[_0x353f('0x3d')]=_[_0x353f('0x3e')](_0x3200ff[_0x353f('0x3d')]);_0x4c4b0a[_0x353f('0x3f')]=_[_0x353f('0x40')](_0x4c4b0a[_0x353f('0x3c')],_0x4c4b0a['query']);_0x4b42b5[_0x353f('0x41')]=_[_0x353f('0x40')](_0x4c4b0a[_0x353f('0x3c')],qs[_0x353f('0x42')](_0x3200ff['query']['fields']));_0x4b42b5[_0x353f('0x41')]=_0x4b42b5[_0x353f('0x41')][_0x353f('0x43')]?_0x4b42b5[_0x353f('0x41')]:_0x4c4b0a[_0x353f('0x3c')];_0x4b42b5[_0x353f('0x45')]=qs[_0x353f('0x46')](_0x3200ff[_0x353f('0x3d')][_0x353f('0x46')]);_0x4b42b5[_0x353f('0x47')]=qs[_0x353f('0x3f')](_[_0x353f('0x48')](_0x3200ff[_0x353f('0x3d')],_0x4c4b0a[_0x353f('0x3f')]));if(_0x3200ff[_0x353f('0x3d')][_0x353f('0x2b')]){_0x4b42b5[_0x353f('0x47')]=_[_0x353f('0x49')](_0x4b42b5[_0x353f('0x47')],{'$or':_[_0x353f('0x2d')](_0x4b42b5['attributes'],function(_0x500daf){var _0x6af86e={};_0x6af86e[_0x500daf]={'$like':'%'+_0x3200ff[_0x353f('0x3d')][_0x353f('0x2b')]+'%'};return _0x6af86e;})});}_0x4b42b5=_[_0x353f('0x49')]({},_0x4b42b5,_0x3200ff[_0x353f('0x4b')]);return _0x331f45[_0x353f('0xb4')](_0x4b42b5);}})[_0x353f('0x26')](function(_0x385ce5){if(_0x385ce5){_0x4ab28a=_0x385ce5[_0x353f('0x43')];if(!_0x3200ff[_0x353f('0x3d')][_0x353f('0x44')](_0x353f('0x63'))){_0x4b42b5[_0x353f('0x1f')]=qs[_0x353f('0x1f')](_0x3200ff['query']['limit']);_0x4b42b5[_0x353f('0x1e')]=qs[_0x353f('0x1e')](_0x3200ff[_0x353f('0x3d')][_0x353f('0x1e')]);}return _0x331f45['getBlackLists'](_0x4b42b5);}})[_0x353f('0x26')](function(_0x132317){if(_0x132317){return _0x132317?{'count':_0x4ab28a,'rows':_0x132317}:null;}})[_0x353f('0x26')](respondWithResult(_0x5ea58c,null))[_0x353f('0x50')](handleError(_0x5ea58c,null));};exports[_0x353f('0xb5')]=function(_0xcf441,_0x138b73,_0x481721){var _0x4ba555,_0x52b107;return db[_0x353f('0x4c')][_0x353f('0x30')]({'where':{'id':_0xcf441[_0x353f('0x60')]['id']}})[_0x353f('0x26')](handleEntityNotFound(_0x138b73,null))['then'](function(_0x24d561){if(_0x24d561){_0x52b107=_0x24d561;return _0x24d561[_0x353f('0xb5')](_0xcf441[_0x353f('0x5d')][_0x353f('0x80')],_[_0x353f('0x5b')](_0xcf441[_0x353f('0x5d')],[_0x353f('0x80'),'id'])||{});}return null;})[_0x353f('0x95')](function(_0x38860d){var _0x3c6bfa;_0x4ba555=_0x38860d||[];var _0xca7c0b=[];if(_0x38860d){for(var _0x4e0dee=0x0;_0x4e0dee<_0x38860d[_0x353f('0x43')];_0x4e0dee+=0x1){var _0x174e2f=_0x38860d[_0x4e0dee][_0x353f('0x28')]({'plain':!![]});_0x3c6bfa=squel['insert']()['into'](_0x353f('0xb6'))['fromQuery']([_0x353f('0xa5'),_0x353f('0xa9'),_0x353f('0xa7'),_0x353f('0x67'),_0x353f('0x5e'),_0x353f('0x5c')],squel[_0x353f('0x81')]()[_0x353f('0x82')](_0x353f('0xa5'),_0x353f('0xa5'))['field']('id',_0x353f('0xa9'))[_0x353f('0x82')](_0x174e2f[_0x353f('0xaa')][_0x353f('0x8c')](),'ListId')['field'](_0xcf441[_0x353f('0x60')]['id'][_0x353f('0x8c')](),_0x353f('0x67'))[_0x353f('0x82')](_0x353f('0xa8'),'createdAt')[_0x353f('0x82')](_0x353f('0xa8'),_0x353f('0x5c'))[_0x353f('0x84')]('cm_contacts')[_0x353f('0x47')](_0x353f('0xac'))[_0x353f('0x47')](_0x353f('0xad'),_0x174e2f[_0x353f('0xaa')][_0x353f('0x8c')]())['where'](_0x353f('0xae')))[_0x353f('0x8c')]();_0xca7c0b[_0x353f('0x8b')](db[_0x353f('0x74')]['query'](_0x3c6bfa));}return BPromise[_0x353f('0x91')](_0xca7c0b);}})[_0x353f('0x26')](function(){return _0x4ba555;})[_0x353f('0x26')](respondWithResult(_0x138b73,null))[_0x353f('0x50')](handleError(_0x138b73,null));};exports[_0x353f('0xb7')]=function(_0x366f41,_0x422a85,_0x64c933){return db[_0x353f('0x4c')][_0x353f('0x30')]({'where':{'id':_0x366f41[_0x353f('0x60')]['id']}})['then'](handleEntityNotFound(_0x422a85,null))['then'](function(_0x2fe51c){if(_0x2fe51c){return _0x2fe51c[_0x353f('0xb7')](_0x366f41[_0x353f('0x3d')][_0x353f('0x80')]);}})[_0x353f('0x26')](function(_0x275aaa){if(_0x275aaa){return db[_0x353f('0x6b')][_0x353f('0x27')]({'where':{'ListId':_0x366f41['query']['ids'],'VoiceQueueId':_0x366f41[_0x353f('0x60')]['id']}})[_0x353f('0x26')](function(){return _0x275aaa;});}})[_0x353f('0x26')](respondWithStatusCode(_0x422a85,null))[_0x353f('0x50')](handleError(_0x422a85,null));};
\ No newline at end of file
index fb3a40d..82a2d8f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb453=['update','remove','emit','hook','exports','events','VoiceQueue'];(function(_0x10562b,_0x5b6af6){var _0x19b8b2=function(_0x5cb05f){while(--_0x5cb05f){_0x10562b['push'](_0x10562b['shift']());}};_0x19b8b2(++_0x5b6af6);}(_0xb453,0x1cc));var _0x3b45=function(_0x4907d8,_0x22cfa8){_0x4907d8=_0x4907d8-0x0;var _0x4d6da0=_0xb453[_0x4907d8];return _0x4d6da0;};'use strict';var EventEmitter=require(_0x3b45('0x0'));var VoiceQueue=require('../../mysqldb')['db'][_0x3b45('0x1')];var VoiceQueueEvents=new EventEmitter();VoiceQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x3b45('0x2'),'afterDestroy':_0x3b45('0x3')};function emitEvent(_0x4bacf2){return function(_0x4090c5,_0xb8c70d,_0x56f585){VoiceQueueEvents[_0x3b45('0x4')](_0x4bacf2+':'+_0x4090c5['id'],_0x4090c5);VoiceQueueEvents[_0x3b45('0x4')](_0x4bacf2,_0x4090c5);_0x56f585(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoiceQueue[_0x3b45('0x5')](e,emitEvent(event));}}module[_0x3b45('0x6')]=VoiceQueueEvents;
\ No newline at end of file
+var _0x421f=['setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports','../../mysqldb','VoiceQueue'];(function(_0x5650d7,_0x51f443){var _0x42431d=function(_0x5262c2){while(--_0x5262c2){_0x5650d7['push'](_0x5650d7['shift']());}};_0x42431d(++_0x51f443);}(_0x421f,0x1f2));var _0xf421=function(_0x433ae0,_0x209a59){_0x433ae0=_0x433ae0-0x0;var _0x7b57dc=_0x421f[_0x433ae0];return _0x7b57dc;};'use strict';var EventEmitter=require('events');var VoiceQueue=require(_0xf421('0x0'))['db'][_0xf421('0x1')];var VoiceQueueEvents=new EventEmitter();VoiceQueueEvents[_0xf421('0x2')](0x0);var events={'afterCreate':_0xf421('0x3'),'afterUpdate':_0xf421('0x4'),'afterDestroy':_0xf421('0x5')};function emitEvent(_0x40be34){return function(_0x2933d0,_0x3353cf,_0x167fa2){VoiceQueueEvents['emit'](_0x40be34+':'+_0x2933d0['id'],_0x2933d0);VoiceQueueEvents[_0xf421('0x6')](_0x40be34,_0x2933d0);_0x167fa2(null);};}for(var e in events){if(events[_0xf421('0x7')](e)){var event=events[e];VoiceQueue[_0xf421('0x8')](e,emitEvent(event));}}module[_0xf421('0x9')]=VoiceQueueEvents;
\ No newline at end of file
index b97db18..13451b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e74=['exports','VoiceQueue','voice_queues','lodash','../../config/logger','api','moment','path','../../config/environment','./voiceQueue.attributes'];(function(_0x4d9f63,_0x115c88){var _0xa6dcfe=function(_0x5ac493){while(--_0x5ac493){_0x4d9f63['push'](_0x4d9f63['shift']());}};_0xa6dcfe(++_0x115c88);}(_0x3e74,0x175));var _0x43e7=function(_0x2d9f4e,_0x422b09){_0x2d9f4e=_0x2d9f4e-0x0;var _0xa61545=_0x3e74[_0x2d9f4e];return _0xa61545;};'use strict';var _=require(_0x43e7('0x0'));var util=require('util');var logger=require(_0x43e7('0x1'))(_0x43e7('0x2'));var moment=require(_0x43e7('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x43e7('0x4'));var rimraf=require('rimraf');var config=require(_0x43e7('0x5'));var attributes=require(_0x43e7('0x6'));module[_0x43e7('0x7')]=function(_0x1c503b,_0xc98b9c){return _0x1c503b['define'](_0x43e7('0x8'),attributes,{'tableName':_0x43e7('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa9e0=['../../config/environment','./voiceQueue.attributes','exports','define','VoiceQueue','lodash','util','../../config/logger','bluebird','path','rimraf'];(function(_0x461e74,_0x24a2b4){var _0x4fe08c=function(_0x29f351){while(--_0x29f351){_0x461e74['push'](_0x461e74['shift']());}};_0x4fe08c(++_0x24a2b4);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4e1d03,_0x786f3a){_0x4e1d03=_0x4e1d03-0x0;var _0x362d4b=_0xa9e0[_0x4e1d03];return _0x362d4b;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var logger=require(_0x0a9e('0x2'))('api');var moment=require('moment');var BPromise=require(_0x0a9e('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0a9e('0x4'));var rimraf=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var attributes=require(_0x0a9e('0x7'));module[_0x0a9e('0x8')]=function(_0x57b080,_0x219af0){return _0x57b080[_0x0a9e('0x9')](_0x0a9e('0xa'),attributes,{'tableName':'voice_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 042b3ec..2a19323 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4b7=['VoiceQueue','find','ShowVoiceQueue','util','moment','randomstring','../../config/utils','../../config/logger','rpc','jayson/promise','http','redis','defaults','localhost','./voiceQueue.socket','register','request','info','debug','VoiceQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','VoiceQueue,\x20%s,\x20%s','message','result','catch','findAll','options','raw','attributes','limit','include','map','model','then','GetVoiceQueue'];(function(_0x2fe538,_0x142ef2){var _0x557a6a=function(_0x310c6d){while(--_0x310c6d){_0x2fe538['push'](_0x2fe538['shift']());}};_0x557a6a(++_0x142ef2);}(_0xf4b7,0x1a5));var _0x7f4b=function(_0x5d3182,_0x4ec4db){_0x5d3182=_0x5d3182-0x0;var _0xcb2c9f=_0xf4b7[_0x5d3182];return _0xcb2c9f;};'use strict';var _=require('lodash');var util=require(_0x7f4b('0x0'));var moment=require(_0x7f4b('0x1'));var BPromise=require('bluebird');var rs=require(_0x7f4b('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x7f4b('0x3'));var logger=require(_0x7f4b('0x4'))(_0x7f4b('0x5'));var config=require('../../config/environment');var jayson=require(_0x7f4b('0x6'));var client=jayson['client'][_0x7f4b('0x7')]({'port':0x232a});config[_0x7f4b('0x8')]=_[_0x7f4b('0x9')](config['redis'],{'host':_0x7f4b('0xa'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x7f4b('0x8')]));require(_0x7f4b('0xb'))[_0x7f4b('0xc')](socket);function respondWithRpcPromise(_0xb78497,_0x259a86,_0x5f1b9f){return new BPromise(function(_0x7c5bcd,_0x128664){return client[_0x7f4b('0xd')](_0xb78497,_0x5f1b9f)['then'](function(_0x291114){logger[_0x7f4b('0xe')]('VoiceQueue,\x20%s,\x20%s',_0x259a86,'request\x20sent');logger[_0x7f4b('0xf')](_0x7f4b('0x10'),_0x259a86,_0x7f4b('0x11'),JSON[_0x7f4b('0x12')](_0x291114));if(_0x291114['error']){if(_0x291114[_0x7f4b('0x13')][_0x7f4b('0x14')]===0x1f4){logger[_0x7f4b('0x13')](_0x7f4b('0x15'),_0x259a86,_0x291114[_0x7f4b('0x13')][_0x7f4b('0x16')]);return _0x128664(_0x291114[_0x7f4b('0x13')][_0x7f4b('0x16')]);}logger[_0x7f4b('0x13')](_0x7f4b('0x15'),_0x259a86,_0x291114[_0x7f4b('0x13')]['message']);return _0x7c5bcd(_0x291114[_0x7f4b('0x13')][_0x7f4b('0x16')]);}else{logger[_0x7f4b('0xe')](_0x7f4b('0x15'),_0x259a86,_0x7f4b('0x11'));_0x7c5bcd(_0x291114[_0x7f4b('0x17')][_0x7f4b('0x16')]);}})[_0x7f4b('0x18')](function(_0x2ed1b2){logger['error']('VoiceQueue,\x20%s,\x20%s',_0x259a86,_0x2ed1b2);_0x128664(_0x2ed1b2);});});}exports['GetVoiceQueue']=function(_0x336d86){var _0x4b83cd=this;return new Promise(function(_0x23486d,_0x280e8f){return db['VoiceQueue'][_0x7f4b('0x19')]({'raw':_0x336d86[_0x7f4b('0x1a')]?_0x336d86[_0x7f4b('0x1a')][_0x7f4b('0x1b')]===undefined?!![]:![]:!![],'where':_0x336d86[_0x7f4b('0x1a')]?_0x336d86['options']['where']||null:null,'attributes':_0x336d86[_0x7f4b('0x1a')]?_0x336d86[_0x7f4b('0x1a')][_0x7f4b('0x1c')]||null:null,'limit':_0x336d86[_0x7f4b('0x1a')]?_0x336d86[_0x7f4b('0x1a')][_0x7f4b('0x1d')]||null:null,'include':_0x336d86[_0x7f4b('0x1a')]?_0x336d86[_0x7f4b('0x1a')][_0x7f4b('0x1e')]?_[_0x7f4b('0x1f')](_0x336d86['options'][_0x7f4b('0x1e')],function(_0x5021d1){return{'model':db[_0x5021d1[_0x7f4b('0x20')]],'as':_0x5021d1['as'],'attributes':_0x5021d1[_0x7f4b('0x1c')],'include':_0x5021d1[_0x7f4b('0x1e')]?_['map'](_0x5021d1[_0x7f4b('0x1e')],function(_0xb0eb93){return{'model':db[_0xb0eb93[_0x7f4b('0x20')]],'as':_0xb0eb93['as'],'attributes':_0xb0eb93[_0x7f4b('0x1c')],'include':_0xb0eb93[_0x7f4b('0x1e')]?_[_0x7f4b('0x1f')](_0xb0eb93[_0x7f4b('0x1e')],function(_0x4bb4c0){return{'model':db[_0x4bb4c0['model']],'as':_0x4bb4c0['as'],'attributes':_0x4bb4c0['attributes']};}):[]};}):[]};}):[]:[]})[_0x7f4b('0x21')](function(_0x472579){logger[_0x7f4b('0xe')](_0x7f4b('0x22'),_0x336d86);logger[_0x7f4b('0xf')](_0x7f4b('0x22'),_0x336d86,JSON[_0x7f4b('0x12')](_0x472579));_0x23486d(_0x472579);})[_0x7f4b('0x18')](function(_0x55d3de){logger[_0x7f4b('0x13')](_0x7f4b('0x22'),_0x55d3de[_0x7f4b('0x16')],_0x336d86);_0x280e8f(_0x4b83cd['error'](0x1f4,_0x55d3de['message']));});});};exports['ShowVoiceQueue']=function(_0x3752d8){var _0x549f2f=this;return new Promise(function(_0x1c638f,_0x2f7833){return db[_0x7f4b('0x23')][_0x7f4b('0x24')]({'raw':_0x3752d8[_0x7f4b('0x1a')]?_0x3752d8[_0x7f4b('0x1a')][_0x7f4b('0x1b')]===undefined?!![]:![]:!![],'where':_0x3752d8['options']?_0x3752d8[_0x7f4b('0x1a')]['where']||null:null,'attributes':_0x3752d8['options']?_0x3752d8[_0x7f4b('0x1a')][_0x7f4b('0x1c')]||null:null,'include':_0x3752d8['options']?_0x3752d8[_0x7f4b('0x1a')]['include']?_[_0x7f4b('0x1f')](_0x3752d8[_0x7f4b('0x1a')][_0x7f4b('0x1e')],function(_0xd5fbbb){return{'model':db[_0xd5fbbb[_0x7f4b('0x20')]],'as':_0xd5fbbb['as'],'attributes':_0xd5fbbb[_0x7f4b('0x1c')],'include':_0xd5fbbb[_0x7f4b('0x1e')]?_['map'](_0xd5fbbb['include'],function(_0x222343){return{'model':db[_0x222343[_0x7f4b('0x20')]],'as':_0x222343['as'],'attributes':_0x222343[_0x7f4b('0x1c')],'include':_0x222343[_0x7f4b('0x1e')]?_[_0x7f4b('0x1f')](_0x222343[_0x7f4b('0x1e')],function(_0x4256f6){return{'model':db[_0x4256f6[_0x7f4b('0x20')]],'as':_0x4256f6['as'],'attributes':_0x4256f6[_0x7f4b('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x7f4b('0x21')](function(_0x39c492){logger['info'](_0x7f4b('0x25'),_0x3752d8);logger[_0x7f4b('0xf')](_0x7f4b('0x25'),_0x3752d8,JSON[_0x7f4b('0x12')](_0x39c492));_0x1c638f(_0x39c492);})[_0x7f4b('0x18')](function(_0x3b0c09){logger[_0x7f4b('0x13')](_0x7f4b('0x25'),_0x3b0c09[_0x7f4b('0x16')],_0x3752d8);_0x2f7833(_0x549f2f[_0x7f4b('0x13')](0x1f4,_0x3b0c09['message']));});});};
\ No newline at end of file
+var _0x94c2=['VoiceQueue','options','raw','attributes','limit','map','model','include','GetVoiceQueue','catch','ShowVoiceQueue','find','where','debug','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','defaults','redis','socket.io-emitter','register','request','then','info','VoiceQueue,\x20%s,\x20%s','request\x20sent','VoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result'];(function(_0x28912c,_0x2c85b9){var _0x55e151=function(_0x59cb4e){while(--_0x59cb4e){_0x28912c['push'](_0x28912c['shift']());}};_0x55e151(++_0x2c85b9);}(_0x94c2,0x1c6));var _0x294c=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0x94c2[_0x3ab51d];return _0x29a04e;};'use strict';var _=require(_0x294c('0x0'));var util=require(_0x294c('0x1'));var moment=require(_0x294c('0x2'));var BPromise=require(_0x294c('0x3'));var rs=require(_0x294c('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x294c('0x5'))['db'];var utils=require(_0x294c('0x6'));var logger=require(_0x294c('0x7'))(_0x294c('0x8'));var config=require('../../config/environment');var jayson=require(_0x294c('0x9'));var client=jayson['client'][_0x294c('0xa')]({'port':0x232a});config['redis']=_[_0x294c('0xb')](config[_0x294c('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0x294c('0xd'))(new Redis(config['redis']));require('./voiceQueue.socket')[_0x294c('0xe')](socket);function respondWithRpcPromise(_0x1eb74b,_0x2d66f2,_0x1a7cad){return new BPromise(function(_0x2892d8,_0x2fb3ea){return client[_0x294c('0xf')](_0x1eb74b,_0x1a7cad)[_0x294c('0x10')](function(_0x3b49a5){logger[_0x294c('0x11')](_0x294c('0x12'),_0x2d66f2,_0x294c('0x13'));logger['debug'](_0x294c('0x14'),_0x2d66f2,_0x294c('0x13'),JSON[_0x294c('0x15')](_0x3b49a5));if(_0x3b49a5[_0x294c('0x16')]){if(_0x3b49a5[_0x294c('0x16')][_0x294c('0x17')]===0x1f4){logger[_0x294c('0x16')](_0x294c('0x12'),_0x2d66f2,_0x3b49a5[_0x294c('0x16')][_0x294c('0x18')]);return _0x2fb3ea(_0x3b49a5['error'][_0x294c('0x18')]);}logger[_0x294c('0x16')]('VoiceQueue,\x20%s,\x20%s',_0x2d66f2,_0x3b49a5['error'][_0x294c('0x18')]);return _0x2892d8(_0x3b49a5[_0x294c('0x16')][_0x294c('0x18')]);}else{logger['info'](_0x294c('0x12'),_0x2d66f2,'request\x20sent');_0x2892d8(_0x3b49a5[_0x294c('0x19')][_0x294c('0x18')]);}})['catch'](function(_0x147976){logger[_0x294c('0x16')](_0x294c('0x12'),_0x2d66f2,_0x147976);_0x2fb3ea(_0x147976);});});}exports['GetVoiceQueue']=function(_0x35e114){var _0x4d2731=this;return new Promise(function(_0x3a0981,_0x489af6){return db[_0x294c('0x1a')]['findAll']({'raw':_0x35e114[_0x294c('0x1b')]?_0x35e114[_0x294c('0x1b')][_0x294c('0x1c')]===undefined?!![]:![]:!![],'where':_0x35e114[_0x294c('0x1b')]?_0x35e114[_0x294c('0x1b')]['where']||null:null,'attributes':_0x35e114['options']?_0x35e114[_0x294c('0x1b')][_0x294c('0x1d')]||null:null,'limit':_0x35e114[_0x294c('0x1b')]?_0x35e114[_0x294c('0x1b')][_0x294c('0x1e')]||null:null,'include':_0x35e114[_0x294c('0x1b')]?_0x35e114['options']['include']?_[_0x294c('0x1f')](_0x35e114[_0x294c('0x1b')]['include'],function(_0x1339a6){return{'model':db[_0x1339a6[_0x294c('0x20')]],'as':_0x1339a6['as'],'attributes':_0x1339a6[_0x294c('0x1d')],'include':_0x1339a6[_0x294c('0x21')]?_[_0x294c('0x1f')](_0x1339a6['include'],function(_0x510002){return{'model':db[_0x510002[_0x294c('0x20')]],'as':_0x510002['as'],'attributes':_0x510002[_0x294c('0x1d')],'include':_0x510002[_0x294c('0x21')]?_['map'](_0x510002[_0x294c('0x21')],function(_0x43286f){return{'model':db[_0x43286f[_0x294c('0x20')]],'as':_0x43286f['as'],'attributes':_0x43286f[_0x294c('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x294c('0x10')](function(_0x36d1a5){logger[_0x294c('0x11')]('GetVoiceQueue',_0x35e114);logger['debug'](_0x294c('0x22'),_0x35e114,JSON[_0x294c('0x15')](_0x36d1a5));_0x3a0981(_0x36d1a5);})[_0x294c('0x23')](function(_0x48b03c){logger[_0x294c('0x16')]('GetVoiceQueue',_0x48b03c['message'],_0x35e114);_0x489af6(_0x4d2731['error'](0x1f4,_0x48b03c['message']));});});};exports[_0x294c('0x24')]=function(_0x322014){var _0x18c009=this;return new Promise(function(_0x58ef3a,_0x16b35c){return db[_0x294c('0x1a')][_0x294c('0x25')]({'raw':_0x322014[_0x294c('0x1b')]?_0x322014[_0x294c('0x1b')][_0x294c('0x1c')]===undefined?!![]:![]:!![],'where':_0x322014[_0x294c('0x1b')]?_0x322014[_0x294c('0x1b')][_0x294c('0x26')]||null:null,'attributes':_0x322014['options']?_0x322014[_0x294c('0x1b')][_0x294c('0x1d')]||null:null,'include':_0x322014['options']?_0x322014[_0x294c('0x1b')][_0x294c('0x21')]?_[_0x294c('0x1f')](_0x322014[_0x294c('0x1b')][_0x294c('0x21')],function(_0xd778a0){return{'model':db[_0xd778a0[_0x294c('0x20')]],'as':_0xd778a0['as'],'attributes':_0xd778a0[_0x294c('0x1d')],'include':_0xd778a0['include']?_['map'](_0xd778a0[_0x294c('0x21')],function(_0x449f59){return{'model':db[_0x449f59[_0x294c('0x20')]],'as':_0x449f59['as'],'attributes':_0x449f59[_0x294c('0x1d')],'include':_0x449f59[_0x294c('0x21')]?_[_0x294c('0x1f')](_0x449f59['include'],function(_0x53bf8d){return{'model':db[_0x53bf8d[_0x294c('0x20')]],'as':_0x53bf8d['as'],'attributes':_0x53bf8d[_0x294c('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x294c('0x10')](function(_0x4b6978){logger[_0x294c('0x11')](_0x294c('0x24'),_0x322014);logger[_0x294c('0x27')](_0x294c('0x24'),_0x322014,JSON[_0x294c('0x15')](_0x4b6978));_0x58ef3a(_0x4b6978);})[_0x294c('0x23')](function(_0x32d57f){logger[_0x294c('0x16')](_0x294c('0x24'),_0x32d57f[_0x294c('0x18')],_0x322014);_0x16b35c(_0x18c009[_0x294c('0x16')](0x1f4,_0x32d57f['message']));});});};
\ No newline at end of file
index 3cc3755..9dbea00 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f5b=['length','voiceQueue:','./voiceQueue.events','remove','update','removeListener','register'];(function(_0x4789c1,_0x37ac92){var _0x4a07bc=function(_0x1d57c8){while(--_0x1d57c8){_0x4789c1['push'](_0x4789c1['shift']());}};_0x4a07bc(++_0x37ac92);}(_0x1f5b,0x1a6));var _0xb1f5=function(_0x11c035,_0x355db9){_0x11c035=_0x11c035-0x0;var _0x2175eb=_0x1f5b[_0x11c035];return _0x2175eb;};'use strict';var VoiceQueueEvents=require(_0xb1f5('0x0'));var events=['save',_0xb1f5('0x1'),_0xb1f5('0x2')];function createListener(_0x2ffe03,_0x1a21ed){return function(_0x50715c){_0x1a21ed['emit'](_0x2ffe03,_0x50715c);};}function removeListener(_0x21597f,_0x34308b){return function(){VoiceQueueEvents[_0xb1f5('0x3')](_0x21597f,_0x34308b);};}exports[_0xb1f5('0x4')]=function(_0x23684a){for(var _0x1413dd=0x0,_0x5a7759=events[_0xb1f5('0x5')];_0x1413dd<_0x5a7759;_0x1413dd++){var _0x1af2d5=events[_0x1413dd];var _0xf4ce3c=createListener(_0xb1f5('0x6')+_0x1af2d5,_0x23684a);VoiceQueueEvents['on'](_0x1af2d5,_0xf4ce3c);}};
\ No newline at end of file
+var _0x0941=['length','voiceQueue:','save','remove','update','emit','removeListener','register'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x0941,0x82));var _0x1094=function(_0x452907,_0x5e948d){_0x452907=_0x452907-0x0;var _0x57c1f8=_0x0941[_0x452907];return _0x57c1f8;};'use strict';var VoiceQueueEvents=require('./voiceQueue.events');var events=[_0x1094('0x0'),_0x1094('0x1'),_0x1094('0x2')];function createListener(_0x181e1c,_0x3c334e){return function(_0x56960c){_0x3c334e[_0x1094('0x3')](_0x181e1c,_0x56960c);};}function removeListener(_0x48cc11,_0x393410){return function(){VoiceQueueEvents[_0x1094('0x4')](_0x48cc11,_0x393410);};}exports[_0x1094('0x5')]=function(_0x32854c){for(var _0x49708e=0x0,_0x1e584b=events[_0x1094('0x6')];_0x49708e<_0x1e584b;_0x49708e++){var _0x35a11e=events[_0x49708e];var _0x1a4579=createListener(_0x1094('0x7')+_0x35a11e,_0x32854c);VoiceQueueEvents['on'](_0x35a11e,_0x1a4579);}};
\ No newline at end of file
index 52f1a64..5a10bda 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d70=['get','isAuthenticated','index','/describe','describe','/index','/:id','show','post','create','put','update','destroy','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./voiceQueueReport.controller'];(function(_0x550d09,_0x44107f){var _0x23b9d3=function(_0x367eb3){while(--_0x367eb3){_0x550d09['push'](_0x550d09['shift']());}};_0x23b9d3(++_0x44107f);}(_0x0d70,0xd3));var _0x00d7=function(_0x3e9e11,_0x4be033){_0x3e9e11=_0x3e9e11-0x0;var _0x27cae1=_0x0d70[_0x3e9e11];return _0x27cae1;};'use strict';var multer=require(_0x00d7('0x0'));var util=require(_0x00d7('0x1'));var path=require('path');var timeout=require(_0x00d7('0x2'));var express=require(_0x00d7('0x3'));var router=express[_0x00d7('0x4')]();var fs_extra=require(_0x00d7('0x5'));var auth=require(_0x00d7('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x00d7('0x7'));var controller=require(_0x00d7('0x8'));router[_0x00d7('0x9')]('/',auth[_0x00d7('0xa')](),controller[_0x00d7('0xb')]);router[_0x00d7('0x9')](_0x00d7('0xc'),auth[_0x00d7('0xa')](),controller[_0x00d7('0xd')]);router[_0x00d7('0x9')](_0x00d7('0xe'),auth[_0x00d7('0xa')](),controller['getVoiceQueuesReport']);router[_0x00d7('0x9')](_0x00d7('0xf'),auth[_0x00d7('0xa')](),controller[_0x00d7('0x10')]);router[_0x00d7('0x11')]('/',auth[_0x00d7('0xa')](),controller[_0x00d7('0x12')]);router[_0x00d7('0x13')](_0x00d7('0xf'),auth[_0x00d7('0xa')](),controller[_0x00d7('0x14')]);router['delete'](_0x00d7('0xf'),auth[_0x00d7('0xa')](),controller[_0x00d7('0x15')]);module['exports']=router;
\ No newline at end of file
+var _0xd636=['delete','exports','util','path','express','fs-extra','../../config/environment','./voiceQueueReport.controller','isAuthenticated','/describe','describe','get','/index','/:id','create','put'];(function(_0x1d664a,_0x149a34){var _0x335345=function(_0x461fac){while(--_0x461fac){_0x1d664a['push'](_0x1d664a['shift']());}};_0x335345(++_0x149a34);}(_0xd636,0x1c2));var _0x6d63=function(_0x6ee03c,_0x5ad366){_0x6ee03c=_0x6ee03c-0x0;var _0x4b833a=_0xd636[_0x6ee03c];return _0x4b833a;};'use strict';var multer=require('multer');var util=require(_0x6d63('0x0'));var path=require(_0x6d63('0x1'));var timeout=require('connect-timeout');var express=require(_0x6d63('0x2'));var router=express['Router']();var fs_extra=require(_0x6d63('0x3'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x6d63('0x4'));var controller=require(_0x6d63('0x5'));router['get']('/',auth[_0x6d63('0x6')](),controller['index']);router['get'](_0x6d63('0x7'),auth[_0x6d63('0x6')](),controller[_0x6d63('0x8')]);router[_0x6d63('0x9')](_0x6d63('0xa'),auth['isAuthenticated'](),controller['getVoiceQueuesReport']);router[_0x6d63('0x9')](_0x6d63('0xb'),auth[_0x6d63('0x6')](),controller['show']);router['post']('/',auth['isAuthenticated'](),controller[_0x6d63('0xc')]);router[_0x6d63('0xd')]('/:id',auth[_0x6d63('0x6')](),controller['update']);router[_0x6d63('0xe')](_0x6d63('0xb'),auth[_0x6d63('0x6')](),controller['destroy']);module[_0x6d63('0xf')]=router;
\ No newline at end of file
index 14a2194..3893e61 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9efd=['diff','seconds','queuecallerleaveAt','setDataValue','INTEGER','BOOLEAN','COMPLETEDBYCALLER,\x20COMPLETEDBYAGENT,\x20FORWARDTRANFER,\x20BLINDTRANSFER,\x20ATTENDEDTRANSFER,\x20EXITWITHKEY,\x20TIMEOUT','FORWARD,\x20BLIND,\x20ATTENDED','exports','STRING','DATE','getDataValue','queuecallerjoinAt','format','YYYY-MM-DD\x20HH:mm:ss'];(function(_0xbeb1e3,_0x58ce41){var _0x161436=function(_0x3d97b4){while(--_0x3d97b4){_0xbeb1e3['push'](_0xbeb1e3['shift']());}};_0x161436(++_0x58ce41);}(_0x9efd,0x143));var _0xd9ef=function(_0x58ccba,_0x9ce23){_0x58ccba=_0x58ccba-0x0;var _0x728ca2=_0x9efd[_0x58ccba];return _0x728ca2;};'use strict';var Sequelize=require('sequelize');var moment=require('moment');module[_0xd9ef('0x0')]={'type':{'type':Sequelize[_0xd9ef('0x1')]},'uniqueid':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0xd9ef('0x1')]},'calleridname':{'type':Sequelize[_0xd9ef('0x1')]},'queue':{'type':Sequelize['STRING']},'queuecallerjoinAt':{'type':Sequelize[_0xd9ef('0x2')]},'queuecallerleaveAt':{'type':Sequelize[_0xd9ef('0x2')],'set':function(_0x8bbe83){var _0x559792=moment(_0x8bbe83);var _0x1febbb=moment(this[_0xd9ef('0x3')](_0xd9ef('0x4')))[_0xd9ef('0x5')](_0xd9ef('0x6'));var _0x520d14=_0x559792[_0xd9ef('0x7')](_0x1febbb,_0xd9ef('0x8'));this['setDataValue'](_0xd9ef('0x9'),_0x8bbe83);this[_0xd9ef('0xa')]('holdtime',_0x520d14||null);}},'position':{'type':Sequelize[_0xd9ef('0xb')]},'count':{'type':Sequelize[_0xd9ef('0xb')]},'queuecallerabandon':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queuecallerabandonAt':{'type':Sequelize[_0xd9ef('0x2')]},'queuecallercomplete':{'type':Sequelize[_0xd9ef('0xc')],'defaultValue':![]},'queuecallercompleteAt':{'type':Sequelize[_0xd9ef('0x2')]},'queuecallerexit':{'type':Sequelize[_0xd9ef('0xc')],'defaultValue':![]},'queuecallerexitAt':{'type':Sequelize[_0xd9ef('0x2')]},'queuecallerexitreason':{'type':Sequelize[_0xd9ef('0x1')],'comment':_0xd9ef('0xd')},'originalposition':{'type':Sequelize[_0xd9ef('0xb')]},'channel':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize[_0xd9ef('0x1')]},'connectedlinename':{'type':Sequelize[_0xd9ef('0x1')]},'accountcode':{'type':Sequelize[_0xd9ef('0x1')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize[_0xd9ef('0x1')]},'priority':{'type':Sequelize[_0xd9ef('0x1')]},'holdtime':{'type':Sequelize[_0xd9ef('0xb')]},'mohtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'assigned':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'lastAssignedTo':{'type':Sequelize[_0xd9ef('0x1')]},'transfer':{'type':Sequelize[_0xd9ef('0xc')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0xd9ef('0x1')],'comment':_0xd9ef('0xe')},'transferexten':{'type':Sequelize[_0xd9ef('0x1')]},'transferuniqueid':{'type':Sequelize[_0xd9ef('0x1')]},'disposition':{'type':Sequelize[_0xd9ef('0x1')]},'secondDisposition':{'type':Sequelize[_0xd9ef('0x1')]},'thirdDisposition':{'type':Sequelize[_0xd9ef('0x1')]},'queuecallerenterreason':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0xa0e1=['sequelize','moment','exports','STRING','DATE','queuecallerjoinAt','YYYY-MM-DD\x20HH:mm:ss','seconds','setDataValue','holdtime','INTEGER','BOOLEAN','COMPLETEDBYCALLER,\x20COMPLETEDBYAGENT,\x20FORWARDTRANFER,\x20BLINDTRANSFER,\x20ATTENDEDTRANSFER,\x20EXITWITHKEY,\x20TIMEOUT','FORWARD,\x20BLIND,\x20ATTENDED'];(function(_0x353f55,_0x2b61d1){var _0x357499=function(_0x72d0e3){while(--_0x72d0e3){_0x353f55['push'](_0x353f55['shift']());}};_0x357499(++_0x2b61d1);}(_0xa0e1,0x16c));var _0x1a0e=function(_0x347c84,_0x34ce3b){_0x347c84=_0x347c84-0x0;var _0x53d3fc=_0xa0e1[_0x347c84];return _0x53d3fc;};'use strict';var Sequelize=require(_0x1a0e('0x0'));var moment=require(_0x1a0e('0x1'));module[_0x1a0e('0x2')]={'type':{'type':Sequelize[_0x1a0e('0x3')]},'uniqueid':{'type':Sequelize[_0x1a0e('0x3')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0x1a0e('0x3')]},'queuecallerjoinAt':{'type':Sequelize[_0x1a0e('0x4')]},'queuecallerleaveAt':{'type':Sequelize['DATE'],'set':function(_0x155d03){var _0xefa2e5=moment(_0x155d03);var _0x31e195=moment(this['getDataValue'](_0x1a0e('0x5')))['format'](_0x1a0e('0x6'));var _0x3e5bfe=_0xefa2e5['diff'](_0x31e195,_0x1a0e('0x7'));this[_0x1a0e('0x8')]('queuecallerleaveAt',_0x155d03);this[_0x1a0e('0x8')](_0x1a0e('0x9'),_0x3e5bfe||null);}},'position':{'type':Sequelize[_0x1a0e('0xa')]},'count':{'type':Sequelize[_0x1a0e('0xa')]},'queuecallerabandon':{'type':Sequelize[_0x1a0e('0xb')],'defaultValue':![]},'queuecallerabandonAt':{'type':Sequelize[_0x1a0e('0x4')]},'queuecallercomplete':{'type':Sequelize[_0x1a0e('0xb')],'defaultValue':![]},'queuecallercompleteAt':{'type':Sequelize[_0x1a0e('0x4')]},'queuecallerexit':{'type':Sequelize[_0x1a0e('0xb')],'defaultValue':![]},'queuecallerexitAt':{'type':Sequelize[_0x1a0e('0x4')]},'queuecallerexitreason':{'type':Sequelize[_0x1a0e('0x3')],'comment':_0x1a0e('0xc')},'originalposition':{'type':Sequelize[_0x1a0e('0xa')]},'channel':{'type':Sequelize[_0x1a0e('0x3')]},'connectedlinenum':{'type':Sequelize[_0x1a0e('0x3')]},'connectedlinename':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0x1a0e('0x3')]},'context':{'type':Sequelize[_0x1a0e('0x3')]},'exten':{'type':Sequelize[_0x1a0e('0x3')]},'priority':{'type':Sequelize[_0x1a0e('0x3')]},'holdtime':{'type':Sequelize[_0x1a0e('0xa')]},'mohtime':{'type':Sequelize[_0x1a0e('0xa')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0x1a0e('0xb')],'defaultValue':![]},'lastAssignedTo':{'type':Sequelize[_0x1a0e('0x3')]},'transfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'transfertype':{'type':Sequelize[_0x1a0e('0x3')],'comment':_0x1a0e('0xd')},'transferexten':{'type':Sequelize[_0x1a0e('0x3')]},'transferuniqueid':{'type':Sequelize[_0x1a0e('0x3')]},'disposition':{'type':Sequelize[_0x1a0e('0x3')]},'secondDisposition':{'type':Sequelize[_0x1a0e('0x3')]},'thirdDisposition':{'type':Sequelize[_0x1a0e('0x3')]},'queuecallerenterreason':{'type':Sequelize[_0x1a0e('0xa')],'defaultValue':0x0}};
\ No newline at end of file
index bda8f96..dbe607b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x75f8=['update','then','destroy','error','stack','name','map','rawAttributes','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','sort','where','filter','merge','type','VoiceQueueReport','includeAll','findAll','keys','include','options','find','create','body','catch','params','describe','getVoiceQueuesReport','order','pick','rows','rimraf','fast-json-patch','request-promise','moment','bluebird','util','path','sox','ejs','fs-extra','lodash','squel','jsforce','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','redis','defaults','localhost','socket.io-emitter','sendStatus','status','end','json','offset','undefined','count','set','apply','reject'];(function(_0xa03be4,_0x193c5a){var _0x41f887=function(_0x3dd8a0){while(--_0x3dd8a0){_0xa03be4['push'](_0xa03be4['shift']());}};_0x41f887(++_0x193c5a);}(_0x75f8,0x16c));var _0x875f=function(_0xe8712b,_0x42aa8c){_0xe8712b=_0xe8712b-0x0;var _0xf5bcdc=_0x75f8[_0xe8712b];return _0xf5bcdc;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x875f('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x875f('0x1'));var rp=require(_0x875f('0x2'));var moment=require(_0x875f('0x3'));var BPromise=require(_0x875f('0x4'));var Mustache=require('mustache');var util=require(_0x875f('0x5'));var path=require(_0x875f('0x6'));var sox=require(_0x875f('0x7'));var csv=require('to-csv');var ejs=require(_0x875f('0x8'));var fs=require('fs');var fs_extra=require(_0x875f('0x9'));var _=require(_0x875f('0xa'));var squel=require(_0x875f('0xb'));var crypto=require('crypto');var jsforce=require(_0x875f('0xc'));var deskjs=require(_0x875f('0xd'));var toCsv=require(_0x875f('0xe'));var querystring=require(_0x875f('0xf'));var Papa=require(_0x875f('0x10'));var Redis=require(_0x875f('0x11'));var authService=require(_0x875f('0x12'));var qs=require(_0x875f('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x875f('0x14'));var logger=require(_0x875f('0x15'))(_0x875f('0x16'));var utils=require(_0x875f('0x17'));var config=require(_0x875f('0x18'));var licenseUtil=require(_0x875f('0x19'));var db=require(_0x875f('0x1a'))['db'];config[_0x875f('0x1b')]=_[_0x875f('0x1c')](config[_0x875f('0x1b')],{'host':_0x875f('0x1d'),'port':0x18eb});var socket=require(_0x875f('0x1e'))(new Redis(config[_0x875f('0x1b')]));require('./voiceQueueReport.socket')['register'](socket);function respondWithStatusCode(_0x434bb2,_0x28aa20){_0x28aa20=_0x28aa20||0xcc;return function(_0xc59f71){if(_0xc59f71){return _0x434bb2[_0x875f('0x1f')](_0x28aa20);}return _0x434bb2[_0x875f('0x20')](_0x28aa20)[_0x875f('0x21')]();};}function respondWithResult(_0x136c7d,_0x46062a){_0x46062a=_0x46062a||0xc8;return function(_0x21d33c){if(_0x21d33c){return _0x136c7d[_0x875f('0x20')](_0x46062a)[_0x875f('0x22')](_0x21d33c);}};}function respondWithFilteredResult(_0x443d83,_0x1ac37c){return function(_0x4c6cc2){if(_0x4c6cc2){var _0x3ae9a6=typeof _0x1ac37c[_0x875f('0x23')]==='undefined'&&typeof _0x1ac37c['limit']===_0x875f('0x24');var _0x265c4f=_0x4c6cc2[_0x875f('0x25')];var _0x2874ed=_0x3ae9a6?0x0:_0x1ac37c[_0x875f('0x23')];var _0x48098c=_0x3ae9a6?_0x4c6cc2[_0x875f('0x25')]:_0x1ac37c[_0x875f('0x23')]+_0x1ac37c['limit'];var _0x27d129;if(_0x48098c>=_0x265c4f){_0x48098c=_0x265c4f;_0x27d129=0xc8;}else{_0x27d129=0xce;}_0x443d83[_0x875f('0x20')](_0x27d129);return _0x443d83[_0x875f('0x26')]('Content-Range',_0x2874ed+'-'+_0x48098c+'/'+_0x265c4f)[_0x875f('0x22')](_0x4c6cc2);}return null;};}function patchUpdates(_0x158dc0){return function(_0x2b61fd){try{jsonpatch[_0x875f('0x27')](_0x2b61fd,_0x158dc0,!![]);}catch(_0x248f09){return BPromise[_0x875f('0x28')](_0x248f09);}return _0x2b61fd['save']();};}function saveUpdates(_0x4726b5,_0x48c6d3){return function(_0x2a4c48){if(_0x2a4c48){return _0x2a4c48[_0x875f('0x29')](_0x4726b5)[_0x875f('0x2a')](function(_0x148a47){return _0x148a47;});}return null;};}function removeEntity(_0x4a4f81,_0x2405b0){return function(_0xd43cbc){if(_0xd43cbc){return _0xd43cbc[_0x875f('0x2b')]()[_0x875f('0x2a')](function(){_0x4a4f81['status'](0xcc)[_0x875f('0x21')]();});}};}function handleEntityNotFound(_0x2c77ca,_0x50d77a){return function(_0x2115f7){if(!_0x2115f7){_0x2c77ca[_0x875f('0x1f')](0x194);}return _0x2115f7;};}function handleError(_0x21aed7,_0x9feda6){_0x9feda6=_0x9feda6||0x1f4;return function(_0x1e9c75){logger[_0x875f('0x2c')](_0x1e9c75[_0x875f('0x2d')]);if(_0x1e9c75[_0x875f('0x2e')]){delete _0x1e9c75[_0x875f('0x2e')];}_0x21aed7[_0x875f('0x20')](_0x9feda6)['send'](_0x1e9c75);};}exports['index']=function(_0x395c5f,_0x47db29){var _0x4e6163={},_0x82c58e={},_0x127306={'count':0x0,'rows':[]};var _0x39410c=_[_0x875f('0x2f')](db['VoiceQueueReport'][_0x875f('0x30')],function(_0x5e8f7b){return{'name':_0x5e8f7b['fieldName'],'type':_0x5e8f7b['type'][_0x875f('0x31')]};});_0x82c58e[_0x875f('0x32')]=_[_0x875f('0x2f')](_0x39410c,'name');_0x82c58e['query']=_['keys'](_0x395c5f[_0x875f('0x33')]);_0x82c58e[_0x875f('0x34')]=_[_0x875f('0x35')](_0x82c58e['model'],_0x82c58e['query']);_0x4e6163[_0x875f('0x36')]=_[_0x875f('0x35')](_0x82c58e[_0x875f('0x32')],qs[_0x875f('0x37')](_0x395c5f[_0x875f('0x33')]['fields']));_0x4e6163[_0x875f('0x36')]=_0x4e6163[_0x875f('0x36')][_0x875f('0x38')]?_0x4e6163[_0x875f('0x36')]:_0x82c58e[_0x875f('0x32')];if(!_0x395c5f[_0x875f('0x33')][_0x875f('0x39')](_0x875f('0x3a'))){_0x4e6163[_0x875f('0x3b')]=qs[_0x875f('0x3b')](_0x395c5f['query'][_0x875f('0x3b')]);_0x4e6163[_0x875f('0x23')]=qs[_0x875f('0x23')](_0x395c5f[_0x875f('0x33')][_0x875f('0x23')]);}_0x4e6163['order']=qs['sort'](_0x395c5f[_0x875f('0x33')][_0x875f('0x3c')]);_0x4e6163[_0x875f('0x3d')]=qs[_0x875f('0x34')](_['pick'](_0x395c5f['query'],_0x82c58e[_0x875f('0x34')]),_0x39410c);if(_0x395c5f[_0x875f('0x33')][_0x875f('0x3e')]){_0x4e6163[_0x875f('0x3d')]=_[_0x875f('0x3f')](_0x4e6163[_0x875f('0x3d')],{'$or':_[_0x875f('0x2f')](_0x39410c,function(_0x2b1d00){if(_0x2b1d00[_0x875f('0x40')]!=='VIRTUAL'){var _0x5a86b7={};_0x5a86b7[_0x2b1d00[_0x875f('0x2e')]]={'$like':'%'+_0x395c5f['query'][_0x875f('0x3e')]+'%'};return _0x5a86b7;}})});}_0x4e6163=_['merge']({},_0x4e6163,_0x395c5f['options']);var _0x49ffec={'where':_0x4e6163['where']};return db[_0x875f('0x41')][_0x875f('0x25')](_0x49ffec)[_0x875f('0x2a')](function(_0x6ca770){_0x127306[_0x875f('0x25')]=_0x6ca770;if(_0x395c5f['query'][_0x875f('0x42')]){_0x4e6163['include']=[{'all':!![]}];}return db[_0x875f('0x41')][_0x875f('0x43')](_0x4e6163);})['then'](function(_0x3e1da9){_0x127306['rows']=_0x3e1da9;return _0x127306;})['then'](respondWithFilteredResult(_0x47db29,_0x4e6163))['catch'](handleError(_0x47db29,null));};exports['show']=function(_0x5ddf4c,_0x4620e6){var _0x14c890={'raw':![],'where':{'id':_0x5ddf4c['params']['id']}},_0x5127c7={};_0x5127c7[_0x875f('0x32')]=_['keys'](db[_0x875f('0x41')][_0x875f('0x30')]);_0x5127c7['query']=_[_0x875f('0x44')](_0x5ddf4c['query']);_0x5127c7[_0x875f('0x34')]=_[_0x875f('0x35')](_0x5127c7[_0x875f('0x32')],_0x5127c7[_0x875f('0x33')]);_0x14c890[_0x875f('0x36')]=_[_0x875f('0x35')](_0x5127c7['model'],qs[_0x875f('0x37')](_0x5ddf4c[_0x875f('0x33')][_0x875f('0x37')]));_0x14c890['attributes']=_0x14c890['attributes'][_0x875f('0x38')]?_0x14c890['attributes']:_0x5127c7['model'];if(_0x5ddf4c[_0x875f('0x33')][_0x875f('0x42')]){_0x14c890[_0x875f('0x45')]=[{'all':!![]}];}_0x14c890=_[_0x875f('0x3f')]({},_0x14c890,_0x5ddf4c[_0x875f('0x46')]);return db[_0x875f('0x41')][_0x875f('0x47')](_0x14c890)[_0x875f('0x2a')](handleEntityNotFound(_0x4620e6,null))['then'](respondWithResult(_0x4620e6,null))['catch'](handleError(_0x4620e6,null));};exports[_0x875f('0x48')]=function(_0x49e045,_0x50dbb0){return db[_0x875f('0x41')][_0x875f('0x48')](_0x49e045[_0x875f('0x49')],{})[_0x875f('0x2a')](respondWithResult(_0x50dbb0,0xc9))[_0x875f('0x4a')](handleError(_0x50dbb0,null));};exports[_0x875f('0x29')]=function(_0x570be4,_0x1b4cac){if(_0x570be4[_0x875f('0x49')]['id']){delete _0x570be4[_0x875f('0x49')]['id'];}return db[_0x875f('0x41')][_0x875f('0x47')]({'where':{'id':_0x570be4[_0x875f('0x4b')]['id']}})[_0x875f('0x2a')](handleEntityNotFound(_0x1b4cac,null))[_0x875f('0x2a')](saveUpdates(_0x570be4[_0x875f('0x49')],null))[_0x875f('0x2a')](respondWithResult(_0x1b4cac,null))['catch'](handleError(_0x1b4cac,null));};exports[_0x875f('0x2b')]=function(_0x58ba14,_0x35eb23){return db[_0x875f('0x41')][_0x875f('0x47')]({'where':{'id':_0x58ba14[_0x875f('0x4b')]['id']}})[_0x875f('0x2a')](handleEntityNotFound(_0x35eb23,null))[_0x875f('0x2a')](removeEntity(_0x35eb23,null))[_0x875f('0x4a')](handleError(_0x35eb23,null));};exports[_0x875f('0x4c')]=function(_0x4f142,_0x22622a){return db[_0x875f('0x41')][_0x875f('0x4c')]()[_0x875f('0x2a')](respondWithResult(_0x22622a,null))[_0x875f('0x4a')](handleError(_0x22622a,null));};exports[_0x875f('0x4d')]=function(_0x38987f,_0x27f00e){var _0x4fa40d={},_0x2fa06b={},_0x280223={'count':0x0,'rows':[]};_0x2fa06b['model']=_[_0x875f('0x44')](db[_0x875f('0x41')][_0x875f('0x30')]);_0x2fa06b[_0x875f('0x33')]=_['keys'](_0x38987f['query']);_0x2fa06b[_0x875f('0x34')]=_[_0x875f('0x35')](_0x2fa06b[_0x875f('0x32')],_0x2fa06b[_0x875f('0x33')]);_0x4fa40d[_0x875f('0x36')]=_[_0x875f('0x35')](_0x2fa06b[_0x875f('0x32')],qs[_0x875f('0x37')](_0x38987f[_0x875f('0x33')][_0x875f('0x37')]));_0x4fa40d['attributes']=_0x4fa40d['attributes'][_0x875f('0x38')]?_0x4fa40d['attributes']:_0x2fa06b[_0x875f('0x32')];if(!_0x38987f[_0x875f('0x33')][_0x875f('0x39')](_0x875f('0x3a'))){_0x4fa40d[_0x875f('0x3b')]=qs[_0x875f('0x3b')](_0x38987f['query'][_0x875f('0x3b')]);_0x4fa40d[_0x875f('0x23')]=qs[_0x875f('0x23')](_0x38987f[_0x875f('0x33')][_0x875f('0x23')]);}_0x4fa40d[_0x875f('0x4e')]=qs[_0x875f('0x3c')](_0x38987f[_0x875f('0x33')][_0x875f('0x3c')]);_0x4fa40d[_0x875f('0x3d')]=qs[_0x875f('0x34')](_[_0x875f('0x4f')](_0x38987f[_0x875f('0x33')],_0x2fa06b['filters']));if(_0x38987f['query']['filter']){_0x4fa40d['where']=_['merge'](_0x4fa40d[_0x875f('0x3d')],{'$or':_[_0x875f('0x2f')](_0x4fa40d[_0x875f('0x36')],function(_0x384d68){var _0x4dd3d5={};_0x4dd3d5[_0x384d68]={'$like':'%'+_0x38987f[_0x875f('0x33')][_0x875f('0x3e')]+'%'};return _0x4dd3d5;})});}_0x4fa40d=_[_0x875f('0x3f')]({},_0x4fa40d,_0x38987f['options']);var _0x4f49f1={'where':_0x4fa40d['where']};return db[_0x875f('0x41')][_0x875f('0x25')](_0x4f49f1)[_0x875f('0x2a')](function(_0x2910e5){_0x280223[_0x875f('0x25')]=_0x2910e5;if(_0x38987f['query']['includeAll']){_0x4fa40d[_0x875f('0x45')]=[{'all':!![]}];}return db[_0x875f('0x41')][_0x875f('0x43')](_0x4fa40d);})['then'](function(_0x2dd3a9){_0x280223[_0x875f('0x50')]=_0x2dd3a9;return _0x280223;})['then'](respondWithFilteredResult(_0x27f00e,_0x4fa40d,'getVoiceQueuesReport'))[_0x875f('0x4a')](handleError(_0x27f00e,null,_0x875f('0x4d')));};
\ No newline at end of file
+var _0xece5=['../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/license/util','../../mysqldb','defaults','localhost','socket.io-emitter','./voiceQueueReport.socket','register','sendStatus','status','end','json','undefined','count','offset','Content-Range','apply','reject','save','update','then','error','stack','name','VoiceQueueReport','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','nolimit','limit','sort','where','filters','pick','filter','merge','options','findAll','rows','params','rawAttributes','includeAll','find','create','body','catch','describe','getVoiceQueuesReport','hasOwnProperty','order','map','include','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','ioredis'];(function(_0x584a51,_0x3dcc2a){var _0x25d14d=function(_0x34fb5b){while(--_0x34fb5b){_0x584a51['push'](_0x584a51['shift']());}};_0x25d14d(++_0x3dcc2a);}(_0xece5,0x1c9));var _0x5ece=function(_0x21549c,_0x6d64d1){_0x21549c=_0x21549c-0x0;var _0x426cbd=_0xece5[_0x21549c];return _0x426cbd;};'use strict';var emlformat=require(_0x5ece('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x5ece('0x1'));var jsonpatch=require(_0x5ece('0x2'));var rp=require(_0x5ece('0x3'));var moment=require(_0x5ece('0x4'));var BPromise=require(_0x5ece('0x5'));var Mustache=require(_0x5ece('0x6'));var util=require(_0x5ece('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0x5ece('0x8'));var ejs=require(_0x5ece('0x9'));var fs=require('fs');var fs_extra=require(_0x5ece('0xa'));var _=require(_0x5ece('0xb'));var squel=require(_0x5ece('0xc'));var crypto=require(_0x5ece('0xd'));var jsforce=require(_0x5ece('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x5ece('0x8'));var querystring=require(_0x5ece('0xf'));var Papa=require('papaparse');var Redis=require(_0x5ece('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x5ece('0x11'));var as=require(_0x5ece('0x12'));var hardwareService=require(_0x5ece('0x13'));var logger=require(_0x5ece('0x14'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x5ece('0x15'));var db=require(_0x5ece('0x16'))['db'];config['redis']=_[_0x5ece('0x17')](config['redis'],{'host':_0x5ece('0x18'),'port':0x18eb});var socket=require(_0x5ece('0x19'))(new Redis(config['redis']));require(_0x5ece('0x1a'))[_0x5ece('0x1b')](socket);function respondWithStatusCode(_0x2061cc,_0xb6ff8c){_0xb6ff8c=_0xb6ff8c||0xcc;return function(_0x3f5728){if(_0x3f5728){return _0x2061cc[_0x5ece('0x1c')](_0xb6ff8c);}return _0x2061cc[_0x5ece('0x1d')](_0xb6ff8c)[_0x5ece('0x1e')]();};}function respondWithResult(_0x27a40b,_0x27f9c4){_0x27f9c4=_0x27f9c4||0xc8;return function(_0x56bc7e){if(_0x56bc7e){return _0x27a40b['status'](_0x27f9c4)[_0x5ece('0x1f')](_0x56bc7e);}};}function respondWithFilteredResult(_0x433045,_0x2c92c8){return function(_0x2db75c){if(_0x2db75c){var _0x20bb5b=typeof _0x2c92c8['offset']===_0x5ece('0x20')&&typeof _0x2c92c8['limit']==='undefined';var _0x3b7874=_0x2db75c[_0x5ece('0x21')];var _0x35c99f=_0x20bb5b?0x0:_0x2c92c8[_0x5ece('0x22')];var _0x279d1d=_0x20bb5b?_0x2db75c[_0x5ece('0x21')]:_0x2c92c8[_0x5ece('0x22')]+_0x2c92c8['limit'];var _0x4b6a84;if(_0x279d1d>=_0x3b7874){_0x279d1d=_0x3b7874;_0x4b6a84=0xc8;}else{_0x4b6a84=0xce;}_0x433045[_0x5ece('0x1d')](_0x4b6a84);return _0x433045['set'](_0x5ece('0x23'),_0x35c99f+'-'+_0x279d1d+'/'+_0x3b7874)[_0x5ece('0x1f')](_0x2db75c);}return null;};}function patchUpdates(_0x42c065){return function(_0xdab5e4){try{jsonpatch[_0x5ece('0x24')](_0xdab5e4,_0x42c065,!![]);}catch(_0x513550){return BPromise[_0x5ece('0x25')](_0x513550);}return _0xdab5e4[_0x5ece('0x26')]();};}function saveUpdates(_0x42788f,_0xa2b7ae){return function(_0x32aa4b){if(_0x32aa4b){return _0x32aa4b[_0x5ece('0x27')](_0x42788f)[_0x5ece('0x28')](function(_0x37f197){return _0x37f197;});}return null;};}function removeEntity(_0x4c1285,_0x52e1c0){return function(_0x6f4f24){if(_0x6f4f24){return _0x6f4f24['destroy']()[_0x5ece('0x28')](function(){_0x4c1285['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x3f2934,_0x62cf57){return function(_0x3c91c8){if(!_0x3c91c8){_0x3f2934[_0x5ece('0x1c')](0x194);}return _0x3c91c8;};}function handleError(_0x937c7,_0x1e3c83){_0x1e3c83=_0x1e3c83||0x1f4;return function(_0x20323c){logger[_0x5ece('0x29')](_0x20323c[_0x5ece('0x2a')]);if(_0x20323c[_0x5ece('0x2b')]){delete _0x20323c[_0x5ece('0x2b')];}_0x937c7['status'](_0x1e3c83)['send'](_0x20323c);};}exports['index']=function(_0x2877ea,_0x1fb4c){var _0x39a532={},_0x1523d2={},_0x1d5122={'count':0x0,'rows':[]};var _0x15aa55=_['map'](db[_0x5ece('0x2c')]['rawAttributes'],function(_0x1a7d18){return{'name':_0x1a7d18[_0x5ece('0x2d')],'type':_0x1a7d18[_0x5ece('0x2e')][_0x5ece('0x2f')]};});_0x1523d2[_0x5ece('0x30')]=_['map'](_0x15aa55,'name');_0x1523d2[_0x5ece('0x31')]=_[_0x5ece('0x32')](_0x2877ea[_0x5ece('0x31')]);_0x1523d2['filters']=_[_0x5ece('0x33')](_0x1523d2[_0x5ece('0x30')],_0x1523d2[_0x5ece('0x31')]);_0x39a532[_0x5ece('0x34')]=_[_0x5ece('0x33')](_0x1523d2[_0x5ece('0x30')],qs[_0x5ece('0x35')](_0x2877ea[_0x5ece('0x31')][_0x5ece('0x35')]));_0x39a532['attributes']=_0x39a532[_0x5ece('0x34')][_0x5ece('0x36')]?_0x39a532[_0x5ece('0x34')]:_0x1523d2[_0x5ece('0x30')];if(!_0x2877ea[_0x5ece('0x31')]['hasOwnProperty'](_0x5ece('0x37'))){_0x39a532['limit']=qs[_0x5ece('0x38')](_0x2877ea['query'][_0x5ece('0x38')]);_0x39a532[_0x5ece('0x22')]=qs[_0x5ece('0x22')](_0x2877ea[_0x5ece('0x31')][_0x5ece('0x22')]);}_0x39a532['order']=qs[_0x5ece('0x39')](_0x2877ea[_0x5ece('0x31')]['sort']);_0x39a532[_0x5ece('0x3a')]=qs[_0x5ece('0x3b')](_[_0x5ece('0x3c')](_0x2877ea['query'],_0x1523d2[_0x5ece('0x3b')]),_0x15aa55);if(_0x2877ea['query'][_0x5ece('0x3d')]){_0x39a532[_0x5ece('0x3a')]=_[_0x5ece('0x3e')](_0x39a532[_0x5ece('0x3a')],{'$or':_['map'](_0x15aa55,function(_0x5e52b0){if(_0x5e52b0[_0x5ece('0x2e')]!=='VIRTUAL'){var _0x212544={};_0x212544[_0x5e52b0['name']]={'$like':'%'+_0x2877ea['query'][_0x5ece('0x3d')]+'%'};return _0x212544;}})});}_0x39a532=_[_0x5ece('0x3e')]({},_0x39a532,_0x2877ea[_0x5ece('0x3f')]);var _0x21d9b6={'where':_0x39a532[_0x5ece('0x3a')]};return db[_0x5ece('0x2c')]['count'](_0x21d9b6)['then'](function(_0x9b1fad){_0x1d5122[_0x5ece('0x21')]=_0x9b1fad;if(_0x2877ea['query']['includeAll']){_0x39a532['include']=[{'all':!![]}];}return db[_0x5ece('0x2c')][_0x5ece('0x40')](_0x39a532);})[_0x5ece('0x28')](function(_0x11278f){_0x1d5122[_0x5ece('0x41')]=_0x11278f;return _0x1d5122;})['then'](respondWithFilteredResult(_0x1fb4c,_0x39a532))['catch'](handleError(_0x1fb4c,null));};exports['show']=function(_0x1cb0a8,_0x3645d9){var _0x290338={'raw':![],'where':{'id':_0x1cb0a8[_0x5ece('0x42')]['id']}},_0x223849={};_0x223849[_0x5ece('0x30')]=_[_0x5ece('0x32')](db[_0x5ece('0x2c')][_0x5ece('0x43')]);_0x223849[_0x5ece('0x31')]=_['keys'](_0x1cb0a8['query']);_0x223849[_0x5ece('0x3b')]=_[_0x5ece('0x33')](_0x223849[_0x5ece('0x30')],_0x223849['query']);_0x290338[_0x5ece('0x34')]=_[_0x5ece('0x33')](_0x223849[_0x5ece('0x30')],qs[_0x5ece('0x35')](_0x1cb0a8[_0x5ece('0x31')][_0x5ece('0x35')]));_0x290338[_0x5ece('0x34')]=_0x290338['attributes']['length']?_0x290338[_0x5ece('0x34')]:_0x223849[_0x5ece('0x30')];if(_0x1cb0a8[_0x5ece('0x31')][_0x5ece('0x44')]){_0x290338['include']=[{'all':!![]}];}_0x290338=_[_0x5ece('0x3e')]({},_0x290338,_0x1cb0a8[_0x5ece('0x3f')]);return db[_0x5ece('0x2c')][_0x5ece('0x45')](_0x290338)['then'](handleEntityNotFound(_0x3645d9,null))[_0x5ece('0x28')](respondWithResult(_0x3645d9,null))['catch'](handleError(_0x3645d9,null));};exports['create']=function(_0x5a508e,_0x527fb5){return db[_0x5ece('0x2c')][_0x5ece('0x46')](_0x5a508e[_0x5ece('0x47')],{})[_0x5ece('0x28')](respondWithResult(_0x527fb5,0xc9))[_0x5ece('0x48')](handleError(_0x527fb5,null));};exports['update']=function(_0xa0f14b,_0x378d88){if(_0xa0f14b[_0x5ece('0x47')]['id']){delete _0xa0f14b['body']['id'];}return db[_0x5ece('0x2c')][_0x5ece('0x45')]({'where':{'id':_0xa0f14b[_0x5ece('0x42')]['id']}})[_0x5ece('0x28')](handleEntityNotFound(_0x378d88,null))[_0x5ece('0x28')](saveUpdates(_0xa0f14b[_0x5ece('0x47')],null))[_0x5ece('0x28')](respondWithResult(_0x378d88,null))[_0x5ece('0x48')](handleError(_0x378d88,null));};exports['destroy']=function(_0x36a9bd,_0x7c1e38){return db['VoiceQueueReport'][_0x5ece('0x45')]({'where':{'id':_0x36a9bd[_0x5ece('0x42')]['id']}})[_0x5ece('0x28')](handleEntityNotFound(_0x7c1e38,null))['then'](removeEntity(_0x7c1e38,null))[_0x5ece('0x48')](handleError(_0x7c1e38,null));};exports[_0x5ece('0x49')]=function(_0x2a691b,_0x1ce75d){return db[_0x5ece('0x2c')][_0x5ece('0x49')]()[_0x5ece('0x28')](respondWithResult(_0x1ce75d,null))[_0x5ece('0x48')](handleError(_0x1ce75d,null));};exports[_0x5ece('0x4a')]=function(_0x11bb7d,_0x118c38){var _0xaa10d={},_0x56a7c5={},_0x2654b8={'count':0x0,'rows':[]};_0x56a7c5['model']=_[_0x5ece('0x32')](db[_0x5ece('0x2c')][_0x5ece('0x43')]);_0x56a7c5['query']=_['keys'](_0x11bb7d['query']);_0x56a7c5[_0x5ece('0x3b')]=_[_0x5ece('0x33')](_0x56a7c5[_0x5ece('0x30')],_0x56a7c5[_0x5ece('0x31')]);_0xaa10d['attributes']=_[_0x5ece('0x33')](_0x56a7c5[_0x5ece('0x30')],qs[_0x5ece('0x35')](_0x11bb7d[_0x5ece('0x31')]['fields']));_0xaa10d[_0x5ece('0x34')]=_0xaa10d['attributes'][_0x5ece('0x36')]?_0xaa10d[_0x5ece('0x34')]:_0x56a7c5['model'];if(!_0x11bb7d[_0x5ece('0x31')][_0x5ece('0x4b')]('nolimit')){_0xaa10d['limit']=qs[_0x5ece('0x38')](_0x11bb7d[_0x5ece('0x31')][_0x5ece('0x38')]);_0xaa10d['offset']=qs[_0x5ece('0x22')](_0x11bb7d['query']['offset']);}_0xaa10d[_0x5ece('0x4c')]=qs['sort'](_0x11bb7d[_0x5ece('0x31')]['sort']);_0xaa10d[_0x5ece('0x3a')]=qs[_0x5ece('0x3b')](_[_0x5ece('0x3c')](_0x11bb7d['query'],_0x56a7c5[_0x5ece('0x3b')]));if(_0x11bb7d[_0x5ece('0x31')]['filter']){_0xaa10d[_0x5ece('0x3a')]=_[_0x5ece('0x3e')](_0xaa10d['where'],{'$or':_[_0x5ece('0x4d')](_0xaa10d[_0x5ece('0x34')],function(_0x3372ed){var _0x3a7de8={};_0x3a7de8[_0x3372ed]={'$like':'%'+_0x11bb7d['query'][_0x5ece('0x3d')]+'%'};return _0x3a7de8;})});}_0xaa10d=_[_0x5ece('0x3e')]({},_0xaa10d,_0x11bb7d[_0x5ece('0x3f')]);var _0x468148={'where':_0xaa10d[_0x5ece('0x3a')]};return db[_0x5ece('0x2c')][_0x5ece('0x21')](_0x468148)[_0x5ece('0x28')](function(_0x3531c9){_0x2654b8['count']=_0x3531c9;if(_0x11bb7d['query'][_0x5ece('0x44')]){_0xaa10d[_0x5ece('0x4e')]=[{'all':!![]}];}return db[_0x5ece('0x2c')][_0x5ece('0x40')](_0xaa10d);})[_0x5ece('0x28')](function(_0x506875){_0x2654b8[_0x5ece('0x41')]=_0x506875;return _0x2654b8;})['then'](respondWithFilteredResult(_0x118c38,_0xaa10d,_0x5ece('0x4a')))[_0x5ece('0x48')](handleError(_0x118c38,null,_0x5ece('0x4a')));};
\ No newline at end of file
index 43714b5..95e4f3d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb9c=['setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','VoiceQueueReport'];(function(_0x241066,_0x201eed){var _0x3553d4=function(_0x1de40a){while(--_0x1de40a){_0x241066['push'](_0x241066['shift']());}};_0x3553d4(++_0x201eed);}(_0xcb9c,0x110));var _0xccb9=function(_0x18ed19,_0x1f4cd4){_0x18ed19=_0x18ed19-0x0;var _0x557ae2=_0xcb9c[_0x18ed19];return _0x557ae2;};'use strict';var EventEmitter=require(_0xccb9('0x0'));var VoiceQueueReport=require(_0xccb9('0x1'))['db'][_0xccb9('0x2')];var VoiceQueueReportEvents=new EventEmitter();VoiceQueueReportEvents[_0xccb9('0x3')](0x0);var events={'afterCreate':_0xccb9('0x4'),'afterUpdate':_0xccb9('0x5'),'afterDestroy':_0xccb9('0x6')};function emitEvent(_0x12a2a9){return function(_0x582401,_0x125125,_0x409f42){VoiceQueueReportEvents[_0xccb9('0x7')](_0x12a2a9+':'+_0x582401['id'],_0x582401);VoiceQueueReportEvents['emit'](_0x12a2a9,_0x582401);_0x409f42(null);};}for(var e in events){if(events[_0xccb9('0x8')](e)){var event=events[e];VoiceQueueReport[_0xccb9('0x9')](e,emitEvent(event));}}module[_0xccb9('0xa')]=VoiceQueueReportEvents;
\ No newline at end of file
+var _0x4209=['VoiceQueueReport','setMaxListeners','save','update','emit','hasOwnProperty','exports','../../mysqldb'];(function(_0x178c9d,_0x1bf7cf){var _0x363cd7=function(_0x23d80e){while(--_0x23d80e){_0x178c9d['push'](_0x178c9d['shift']());}};_0x363cd7(++_0x1bf7cf);}(_0x4209,0x1e7));var _0x9420=function(_0xb4e2df,_0x1cbb7c){_0xb4e2df=_0xb4e2df-0x0;var _0x5e95ba=_0x4209[_0xb4e2df];return _0x5e95ba;};'use strict';var EventEmitter=require('events');var VoiceQueueReport=require(_0x9420('0x0'))['db'][_0x9420('0x1')];var VoiceQueueReportEvents=new EventEmitter();VoiceQueueReportEvents[_0x9420('0x2')](0x0);var events={'afterCreate':_0x9420('0x3'),'afterUpdate':_0x9420('0x4'),'afterDestroy':'remove'};function emitEvent(_0x213020){return function(_0x5668ee,_0x4f193b,_0x3ed35a){VoiceQueueReportEvents[_0x9420('0x5')](_0x213020+':'+_0x5668ee['id'],_0x5668ee);VoiceQueueReportEvents[_0x9420('0x5')](_0x213020,_0x5668ee);_0x3ed35a(null);};}for(var e in events){if(events[_0x9420('0x6')](e)){var event=events[e];VoiceQueueReport['hook'](e,emitEvent(event));}}module[_0x9420('0x7')]=VoiceQueueReportEvents;
\ No newline at end of file
index db09c00..a0b8b67 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1ebd=['moment','bluebird','request-promise','path','../../config/environment','./voiceQueueReport.attributes','exports','define','report_queue','uniqueid','calleridnum','lodash','../../config/logger','api'];(function(_0x1928c9,_0x13a6d1){var _0x51b5fb=function(_0x24cf70){while(--_0x24cf70){_0x1928c9['push'](_0x1928c9['shift']());}};_0x51b5fb(++_0x13a6d1);}(_0x1ebd,0xf9));var _0xd1eb=function(_0x1a010f,_0x18491d){_0x1a010f=_0x1a010f-0x0;var _0x585afd=_0x1ebd[_0x1a010f];return _0x585afd;};'use strict';var _=require(_0xd1eb('0x0'));var util=require('util');var logger=require(_0xd1eb('0x1'))(_0xd1eb('0x2'));var moment=require(_0xd1eb('0x3'));var BPromise=require(_0xd1eb('0x4'));var rp=require(_0xd1eb('0x5'));var fs=require('fs');var path=require(_0xd1eb('0x6'));var rimraf=require('rimraf');var config=require(_0xd1eb('0x7'));var attributes=require(_0xd1eb('0x8'));module[_0xd1eb('0x9')]=function(_0x264269,_0x2e1616){return _0x264269[_0xd1eb('0xa')]('VoiceQueueReport',attributes,{'tableName':_0xd1eb('0xb'),'paranoid':![],'indexes':[{'fields':[_0xd1eb('0xc')]},{'fields':[_0xd1eb('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x2d74=['api','bluebird','request-promise','rimraf','./voiceQueueReport.attributes','exports','define','VoiceQueueReport','report_queue','uniqueid','calleridnum','lodash','util'];(function(_0x138573,_0x1ddd2f){var _0x1417ee=function(_0x160dd9){while(--_0x160dd9){_0x138573['push'](_0x138573['shift']());}};_0x1417ee(++_0x1ddd2f);}(_0x2d74,0x1c5));var _0x42d7=function(_0x21133c,_0x4510ec){_0x21133c=_0x21133c-0x0;var _0x3e1d7b=_0x2d74[_0x21133c];return _0x3e1d7b;};'use strict';var _=require(_0x42d7('0x0'));var util=require(_0x42d7('0x1'));var logger=require('../../config/logger')(_0x42d7('0x2'));var moment=require('moment');var BPromise=require(_0x42d7('0x3'));var rp=require(_0x42d7('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x42d7('0x5'));var config=require('../../config/environment');var attributes=require(_0x42d7('0x6'));module[_0x42d7('0x7')]=function(_0x4676b1,_0x36fe4f){return _0x4676b1[_0x42d7('0x8')](_0x42d7('0x9'),attributes,{'tableName':_0x42d7('0xa'),'paranoid':![],'indexes':[{'fields':[_0x42d7('0xb')]},{'fields':[_0x42d7('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 3360d8c..e6999a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x23f5=['randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','localhost','socket.io-emitter','./voiceQueueReport.socket','register','request','then','info','VoiceQueueReport,\x20%s,\x20%s','request\x20sent','VoiceQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','GetVoiceQueueReport','findAll','options','raw','where','attributes','limit','include','model','map','VoiceQueueReport','create','body','CreateVoiceQueueReport','UpdateVoiceQueueReport','update','debug','lodash','util','moment'];(function(_0x1688f6,_0x9ab079){var _0x144c86=function(_0x3e979e){while(--_0x3e979e){_0x1688f6['push'](_0x1688f6['shift']());}};_0x144c86(++_0x9ab079);}(_0x23f5,0x105));var _0x523f=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x23f5[_0x57b54c];return _0x59cc19;};'use strict';var _=require(_0x523f('0x0'));var util=require(_0x523f('0x1'));var moment=require(_0x523f('0x2'));var BPromise=require('bluebird');var rs=require(_0x523f('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x523f('0x4'))['db'];var utils=require(_0x523f('0x5'));var logger=require(_0x523f('0x6'))(_0x523f('0x7'));var config=require('../../config/environment');var jayson=require(_0x523f('0x8'));var client=jayson[_0x523f('0x9')][_0x523f('0xa')]({'port':0x232a});config[_0x523f('0xb')]=_['defaults'](config['redis'],{'host':_0x523f('0xc'),'port':0x18eb});var socket=require(_0x523f('0xd'))(new Redis(config[_0x523f('0xb')]));require(_0x523f('0xe'))[_0x523f('0xf')](socket);function respondWithRpcPromise(_0x5521c9,_0x3ebac1,_0x4d299e){return new BPromise(function(_0x4608e9,_0x3f2768){return client[_0x523f('0x10')](_0x5521c9,_0x4d299e)[_0x523f('0x11')](function(_0x5ade1e){logger[_0x523f('0x12')](_0x523f('0x13'),_0x3ebac1,_0x523f('0x14'));logger['debug'](_0x523f('0x15'),_0x3ebac1,'request\x20sent',JSON[_0x523f('0x16')](_0x5ade1e));if(_0x5ade1e['error']){if(_0x5ade1e['error']['code']===0x1f4){logger[_0x523f('0x17')](_0x523f('0x13'),_0x3ebac1,_0x5ade1e['error'][_0x523f('0x18')]);return _0x3f2768(_0x5ade1e[_0x523f('0x17')]['message']);}logger[_0x523f('0x17')]('VoiceQueueReport,\x20%s,\x20%s',_0x3ebac1,_0x5ade1e[_0x523f('0x17')][_0x523f('0x18')]);return _0x4608e9(_0x5ade1e[_0x523f('0x17')]['message']);}else{logger['info'](_0x523f('0x13'),_0x3ebac1,_0x523f('0x14'));_0x4608e9(_0x5ade1e[_0x523f('0x19')][_0x523f('0x18')]);}})[_0x523f('0x1a')](function(_0x5e0308){logger['error'](_0x523f('0x13'),_0x3ebac1,_0x5e0308);_0x3f2768(_0x5e0308);});});}exports[_0x523f('0x1b')]=function(_0x2cc6eb){var _0x5c6e16=this;return new Promise(function(_0xd8ac40,_0x39f9b6){return db['VoiceQueueReport'][_0x523f('0x1c')]({'raw':_0x2cc6eb['options']?_0x2cc6eb[_0x523f('0x1d')][_0x523f('0x1e')]===undefined?!![]:![]:!![],'where':_0x2cc6eb[_0x523f('0x1d')]?_0x2cc6eb[_0x523f('0x1d')][_0x523f('0x1f')]||null:null,'attributes':_0x2cc6eb['options']?_0x2cc6eb['options'][_0x523f('0x20')]||null:null,'limit':_0x2cc6eb[_0x523f('0x1d')]?_0x2cc6eb[_0x523f('0x1d')][_0x523f('0x21')]||null:null,'include':_0x2cc6eb['options']?_0x2cc6eb[_0x523f('0x1d')][_0x523f('0x22')]?_['map'](_0x2cc6eb['options'][_0x523f('0x22')],function(_0x24b57b){return{'model':db[_0x24b57b[_0x523f('0x23')]],'as':_0x24b57b['as'],'attributes':_0x24b57b[_0x523f('0x20')],'include':_0x24b57b[_0x523f('0x22')]?_[_0x523f('0x24')](_0x24b57b[_0x523f('0x22')],function(_0x5b7d0d){return{'model':db[_0x5b7d0d[_0x523f('0x23')]],'as':_0x5b7d0d['as'],'attributes':_0x5b7d0d[_0x523f('0x20')],'include':_0x5b7d0d['include']?_['map'](_0x5b7d0d['include'],function(_0x5d330f){return{'model':db[_0x5d330f[_0x523f('0x23')]],'as':_0x5d330f['as'],'attributes':_0x5d330f[_0x523f('0x20')]};}):[]};}):[]};}):[]:[]})[_0x523f('0x11')](function(_0x1fce90){logger[_0x523f('0x12')](_0x523f('0x1b'),_0x2cc6eb);logger['debug'](_0x523f('0x1b'),_0x2cc6eb,JSON['stringify'](_0x1fce90));_0xd8ac40(_0x1fce90);})[_0x523f('0x1a')](function(_0x5a4b35){logger['error'](_0x523f('0x1b'),_0x5a4b35[_0x523f('0x18')],_0x2cc6eb);_0x39f9b6(_0x5c6e16['error'](0x1f4,_0x5a4b35[_0x523f('0x18')]));});});};exports['CreateVoiceQueueReport']=function(_0x3b9f08){var _0x4413df=this;return new Promise(function(_0x26d330,_0x51b683){return db[_0x523f('0x25')][_0x523f('0x26')](_0x3b9f08[_0x523f('0x27')],{'raw':_0x3b9f08[_0x523f('0x1d')]?_0x3b9f08['options']['raw']===undefined?!![]:![]:!![]})[_0x523f('0x11')](function(_0x4da325){logger['info']('CreateVoiceQueueReport',_0x3b9f08);logger['debug'](_0x523f('0x28'),_0x3b9f08,JSON[_0x523f('0x16')](_0x4da325));_0x26d330(_0x4da325);})[_0x523f('0x1a')](function(_0x7124a9){logger[_0x523f('0x17')]('CreateVoiceQueueReport',_0x7124a9[_0x523f('0x18')],_0x3b9f08);_0x51b683(_0x4413df[_0x523f('0x17')](0x1f4,_0x7124a9['message']));});});};exports[_0x523f('0x29')]=function(_0x1cfc8e){var _0x563e0a=this;return new Promise(function(_0x4d15b7,_0x2687de){return db[_0x523f('0x25')][_0x523f('0x2a')](_0x1cfc8e[_0x523f('0x27')],{'raw':_0x1cfc8e[_0x523f('0x1d')]?_0x1cfc8e[_0x523f('0x1d')][_0x523f('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1cfc8e['options']?_0x1cfc8e[_0x523f('0x1d')][_0x523f('0x1f')]||null:null,'attributes':_0x1cfc8e[_0x523f('0x1d')]?_0x1cfc8e[_0x523f('0x1d')][_0x523f('0x20')]||null:null,'limit':_0x1cfc8e['options']?_0x1cfc8e['options']['limit']||null:null})['then'](function(_0x51be5){logger[_0x523f('0x12')]('UpdateVoiceQueueReport',_0x1cfc8e);logger[_0x523f('0x2b')](_0x523f('0x29'),_0x1cfc8e,JSON[_0x523f('0x16')](_0x51be5));_0x4d15b7(_0x51be5);})[_0x523f('0x1a')](function(_0xad13cf){logger[_0x523f('0x17')](_0x523f('0x29'),_0xad13cf[_0x523f('0x18')],_0x1cfc8e);_0x2687de(_0x563e0a[_0x523f('0x17')](0x1f4,_0xad13cf[_0x523f('0x18')]));});});};
\ No newline at end of file
+var _0x2ca7=['http','localhost','redis','./voiceQueueReport.socket','register','info','VoiceQueueReport,\x20%s,\x20%s','VoiceQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','message','request\x20sent','catch','options','raw','where','attributes','include','model','map','then','debug','GetVoiceQueueReport','CreateVoiceQueueReport','create','body','update','limit','UpdateVoiceQueueReport','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','jayson/promise','client'];(function(_0x3628a2,_0x388e54){var _0x565503=function(_0x902f74){while(--_0x902f74){_0x3628a2['push'](_0x3628a2['shift']());}};_0x565503(++_0x388e54);}(_0x2ca7,0x120));var _0x72ca=function(_0x409b5b,_0x55289d){_0x409b5b=_0x409b5b-0x0;var _0x3aae22=_0x2ca7[_0x409b5b];return _0x3aae22;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x72ca('0x0'));var BPromise=require(_0x72ca('0x1'));var rs=require(_0x72ca('0x2'));var fs=require('fs');var Redis=require(_0x72ca('0x3'));var db=require(_0x72ca('0x4'))['db'];var utils=require(_0x72ca('0x5'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x72ca('0x6'));var client=jayson[_0x72ca('0x7')][_0x72ca('0x8')]({'port':0x232a});config['redis']=_['defaults'](config['redis'],{'host':_0x72ca('0x9'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x72ca('0xa')]));require(_0x72ca('0xb'))[_0x72ca('0xc')](socket);function respondWithRpcPromise(_0x477f4a,_0x2f324e,_0x481f64){return new BPromise(function(_0x3f1616,_0xf25872){return client['request'](_0x477f4a,_0x481f64)['then'](function(_0x479975){logger[_0x72ca('0xd')](_0x72ca('0xe'),_0x2f324e,'request\x20sent');logger['debug'](_0x72ca('0xf'),_0x2f324e,'request\x20sent',JSON[_0x72ca('0x10')](_0x479975));if(_0x479975[_0x72ca('0x11')]){if(_0x479975['error']['code']===0x1f4){logger['error']('VoiceQueueReport,\x20%s,\x20%s',_0x2f324e,_0x479975[_0x72ca('0x11')][_0x72ca('0x12')]);return _0xf25872(_0x479975[_0x72ca('0x11')]['message']);}logger[_0x72ca('0x11')]('VoiceQueueReport,\x20%s,\x20%s',_0x2f324e,_0x479975[_0x72ca('0x11')][_0x72ca('0x12')]);return _0x3f1616(_0x479975['error'][_0x72ca('0x12')]);}else{logger['info']('VoiceQueueReport,\x20%s,\x20%s',_0x2f324e,_0x72ca('0x13'));_0x3f1616(_0x479975['result']['message']);}})[_0x72ca('0x14')](function(_0x3b6de4){logger[_0x72ca('0x11')](_0x72ca('0xe'),_0x2f324e,_0x3b6de4);_0xf25872(_0x3b6de4);});});}exports['GetVoiceQueueReport']=function(_0x5c4558){var _0x49cc8f=this;return new Promise(function(_0x4e89ac,_0x1df540){return db['VoiceQueueReport']['findAll']({'raw':_0x5c4558[_0x72ca('0x15')]?_0x5c4558['options'][_0x72ca('0x16')]===undefined?!![]:![]:!![],'where':_0x5c4558['options']?_0x5c4558[_0x72ca('0x15')][_0x72ca('0x17')]||null:null,'attributes':_0x5c4558[_0x72ca('0x15')]?_0x5c4558[_0x72ca('0x15')][_0x72ca('0x18')]||null:null,'limit':_0x5c4558[_0x72ca('0x15')]?_0x5c4558[_0x72ca('0x15')]['limit']||null:null,'include':_0x5c4558[_0x72ca('0x15')]?_0x5c4558[_0x72ca('0x15')][_0x72ca('0x19')]?_['map'](_0x5c4558[_0x72ca('0x15')]['include'],function(_0x5f1100){return{'model':db[_0x5f1100[_0x72ca('0x1a')]],'as':_0x5f1100['as'],'attributes':_0x5f1100[_0x72ca('0x18')],'include':_0x5f1100[_0x72ca('0x19')]?_['map'](_0x5f1100[_0x72ca('0x19')],function(_0x226fb9){return{'model':db[_0x226fb9[_0x72ca('0x1a')]],'as':_0x226fb9['as'],'attributes':_0x226fb9['attributes'],'include':_0x226fb9[_0x72ca('0x19')]?_[_0x72ca('0x1b')](_0x226fb9[_0x72ca('0x19')],function(_0x4de254){return{'model':db[_0x4de254['model']],'as':_0x4de254['as'],'attributes':_0x4de254[_0x72ca('0x18')]};}):[]};}):[]};}):[]:[]})[_0x72ca('0x1c')](function(_0x6a1016){logger[_0x72ca('0xd')]('GetVoiceQueueReport',_0x5c4558);logger[_0x72ca('0x1d')](_0x72ca('0x1e'),_0x5c4558,JSON[_0x72ca('0x10')](_0x6a1016));_0x4e89ac(_0x6a1016);})[_0x72ca('0x14')](function(_0x129317){logger[_0x72ca('0x11')](_0x72ca('0x1e'),_0x129317[_0x72ca('0x12')],_0x5c4558);_0x1df540(_0x49cc8f['error'](0x1f4,_0x129317[_0x72ca('0x12')]));});});};exports[_0x72ca('0x1f')]=function(_0x3efe7f){var _0x23b782=this;return new Promise(function(_0x1372de,_0x15ab28){return db['VoiceQueueReport'][_0x72ca('0x20')](_0x3efe7f[_0x72ca('0x21')],{'raw':_0x3efe7f[_0x72ca('0x15')]?_0x3efe7f[_0x72ca('0x15')]['raw']===undefined?!![]:![]:!![]})[_0x72ca('0x1c')](function(_0x51d0ab){logger[_0x72ca('0xd')]('CreateVoiceQueueReport',_0x3efe7f);logger[_0x72ca('0x1d')](_0x72ca('0x1f'),_0x3efe7f,JSON['stringify'](_0x51d0ab));_0x1372de(_0x51d0ab);})[_0x72ca('0x14')](function(_0x102999){logger[_0x72ca('0x11')](_0x72ca('0x1f'),_0x102999[_0x72ca('0x12')],_0x3efe7f);_0x15ab28(_0x23b782[_0x72ca('0x11')](0x1f4,_0x102999[_0x72ca('0x12')]));});});};exports['UpdateVoiceQueueReport']=function(_0x462145){var _0x56ddb0=this;return new Promise(function(_0x5ad85d,_0x296c5f){return db['VoiceQueueReport'][_0x72ca('0x22')](_0x462145[_0x72ca('0x21')],{'raw':_0x462145[_0x72ca('0x15')]?_0x462145[_0x72ca('0x15')][_0x72ca('0x16')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x462145['options']?_0x462145[_0x72ca('0x15')][_0x72ca('0x17')]||null:null,'attributes':_0x462145[_0x72ca('0x15')]?_0x462145['options'][_0x72ca('0x18')]||null:null,'limit':_0x462145[_0x72ca('0x15')]?_0x462145['options'][_0x72ca('0x23')]||null:null})[_0x72ca('0x1c')](function(_0x696241){logger['info']('UpdateVoiceQueueReport',_0x462145);logger['debug'](_0x72ca('0x24'),_0x462145,JSON['stringify'](_0x696241));_0x5ad85d(_0x696241);})[_0x72ca('0x14')](function(_0x6e670e){logger[_0x72ca('0x11')]('UpdateVoiceQueueReport',_0x6e670e[_0x72ca('0x12')],_0x462145);_0x296c5f(_0x56ddb0[_0x72ca('0x11')](0x1f4,_0x6e670e[_0x72ca('0x12')]));});});};
\ No newline at end of file
index 35f2927..87672ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb9e3=['emit','length','voiceQueueReport:','./voiceQueueReport.events','save','remove','update'];(function(_0x247b0c,_0x492071){var _0xacb9ae=function(_0x2588a7){while(--_0x2588a7){_0x247b0c['push'](_0x247b0c['shift']());}};_0xacb9ae(++_0x492071);}(_0xb9e3,0xdc));var _0x3b9e=function(_0x2d61ac,_0x18ff36){_0x2d61ac=_0x2d61ac-0x0;var _0x3f7d3c=_0xb9e3[_0x2d61ac];return _0x3f7d3c;};'use strict';var VoiceQueueReportEvents=require(_0x3b9e('0x0'));var events=[_0x3b9e('0x1'),_0x3b9e('0x2'),_0x3b9e('0x3')];function createListener(_0xffa7f5,_0x54f160){return function(_0x2a2a5b){_0x54f160[_0x3b9e('0x4')](_0xffa7f5,_0x2a2a5b);};}function removeListener(_0x550fc1,_0x5e04bd){return function(){VoiceQueueReportEvents['removeListener'](_0x550fc1,_0x5e04bd);};}exports['register']=function(_0x30a9dd){for(var _0x313c48=0x0,_0x4fea26=events[_0x3b9e('0x5')];_0x313c48<_0x4fea26;_0x313c48++){var _0x33bb97=events[_0x313c48];var _0x33e67=createListener(_0x3b9e('0x6')+_0x33bb97,_0x30a9dd);VoiceQueueReportEvents['on'](_0x33bb97,_0x33e67);}};
\ No newline at end of file
+var _0x4403=['length','update','emit','removeListener'];(function(_0x160c73,_0x2ee678){var _0xd9302=function(_0x169454){while(--_0x169454){_0x160c73['push'](_0x160c73['shift']());}};_0xd9302(++_0x2ee678);}(_0x4403,0x179));var _0x3440=function(_0x12cc71,_0x19e893){_0x12cc71=_0x12cc71-0x0;var _0x4bb087=_0x4403[_0x12cc71];return _0x4bb087;};'use strict';var VoiceQueueReportEvents=require('./voiceQueueReport.events');var events=['save','remove',_0x3440('0x0')];function createListener(_0x571a63,_0x173448){return function(_0x48ba88){_0x173448[_0x3440('0x1')](_0x571a63,_0x48ba88);};}function removeListener(_0x39386e,_0x4d4dc6){return function(){VoiceQueueReportEvents[_0x3440('0x2')](_0x39386e,_0x4d4dc6);};}exports['register']=function(_0x5904cb){for(var _0x1e5e8d=0x0,_0x3121bd=events[_0x3440('0x3')];_0x1e5e8d<_0x3121bd;_0x1e5e8d++){var _0x4abc5a=events[_0x1e5e8d];var _0x33a070=createListener('voiceQueueReport:'+_0x4abc5a,_0x5904cb);VoiceQueueReportEvents['on'](_0x4abc5a,_0x33a070);}};
\ No newline at end of file
index 207514e..1a53464 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x56d8=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/:id','post','create','put','update','delete','destroy','exports','multer'];(function(_0x3a2a3c,_0x37bd31){var _0x50ac9a=function(_0x494a7f){while(--_0x494a7f){_0x3a2a3c['push'](_0x3a2a3c['shift']());}};_0x50ac9a(++_0x37bd31);}(_0x56d8,0x1a1));var _0x856d=function(_0xd1d19a,_0x1933f0){_0xd1d19a=_0xd1d19a-0x0;var _0x52a79d=_0x56d8[_0xd1d19a];return _0x52a79d;};'use strict';var multer=require(_0x856d('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x856d('0x1'));var express=require(_0x856d('0x2'));var router=express[_0x856d('0x3')]();var fs_extra=require(_0x856d('0x4'));var auth=require(_0x856d('0x5'));var interaction=require(_0x856d('0x6'));var config=require(_0x856d('0x7'));var controller=require('./voiceQueuesLog.controller');router['get']('/',auth[_0x856d('0x8')](),controller[_0x856d('0x9')]);router[_0x856d('0xa')](_0x856d('0xb'),auth['isAuthenticated'](),controller['show']);router[_0x856d('0xc')]('/',auth['isAuthenticated'](),controller[_0x856d('0xd')]);router[_0x856d('0xe')](_0x856d('0xb'),auth[_0x856d('0x8')](),controller[_0x856d('0xf')]);router[_0x856d('0x10')](_0x856d('0xb'),auth[_0x856d('0x8')](),controller[_0x856d('0x11')]);module[_0x856d('0x12')]=router;
\ No newline at end of file
+var _0x86d7=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/:id','show','create','put','update','delete','destroy','exports','util','path','express','Router'];(function(_0x5db1ed,_0x121213){var _0x40a8d7=function(_0x298163){while(--_0x298163){_0x5db1ed['push'](_0x5db1ed['shift']());}};_0x40a8d7(++_0x121213);}(_0x86d7,0x152));var _0x786d=function(_0x18b21b,_0x445493){_0x18b21b=_0x18b21b-0x0;var _0x433615=_0x86d7[_0x18b21b];return _0x433615;};'use strict';var multer=require('multer');var util=require(_0x786d('0x0'));var path=require(_0x786d('0x1'));var timeout=require('connect-timeout');var express=require(_0x786d('0x2'));var router=express[_0x786d('0x3')]();var fs_extra=require(_0x786d('0x4'));var auth=require(_0x786d('0x5'));var interaction=require(_0x786d('0x6'));var config=require(_0x786d('0x7'));var controller=require('./voiceQueuesLog.controller');router[_0x786d('0x8')]('/',auth[_0x786d('0x9')](),controller['index']);router[_0x786d('0x8')](_0x786d('0xa'),auth['isAuthenticated'](),controller[_0x786d('0xb')]);router['post']('/',auth[_0x786d('0x9')](),controller[_0x786d('0xc')]);router[_0x786d('0xd')]('/:id',auth[_0x786d('0x9')](),controller[_0x786d('0xe')]);router[_0x786d('0xf')](_0x786d('0xa'),auth[_0x786d('0x9')](),controller[_0x786d('0x10')]);module[_0x786d('0x11')]=router;
\ No newline at end of file
index ee82b5f..12dec51 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7f2f=['exports','STRING','format','YYYY-MM-DD\x20HH:mm:ss','moment'];(function(_0x30e6c1,_0x1c02b6){var _0x177aac=function(_0x1e36e6){while(--_0x1e36e6){_0x30e6c1['push'](_0x30e6c1['shift']());}};_0x177aac(++_0x1c02b6);}(_0x7f2f,0x11c));var _0xf7f2=function(_0x1aab74,_0x38a57b){_0x1aab74=_0x1aab74-0x0;var _0x396af2=_0x7f2f[_0x1aab74];return _0x396af2;};'use strict';var Sequelize=require('sequelize');var moment=require(_0xf7f2('0x0'));module[_0xf7f2('0x1')]={'time':{'type':Sequelize['STRING']},'callid':{'type':Sequelize[_0xf7f2('0x2')],'allowNull':![],'defaultValue':''},'queuename':{'type':Sequelize[_0xf7f2('0x2')],'allowNull':![],'defaultValue':''},'agent':{'type':Sequelize[_0xf7f2('0x2')],'allowNull':![],'defaultValue':''},'event':{'type':Sequelize[_0xf7f2('0x2')],'allowNull':![],'defaultValue':''},'data':{'type':Sequelize[_0xf7f2('0x2')],'allowNull':![],'defaultValue':''},'data1':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data2':{'type':Sequelize[_0xf7f2('0x2')],'allowNull':![],'defaultValue':''},'data3':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data4':{'type':Sequelize[_0xf7f2('0x2')],'allowNull':![],'defaultValue':''},'data5':{'type':Sequelize[_0xf7f2('0x2')],'allowNull':![],'defaultValue':''},'dtm':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':moment()[_0xf7f2('0x3')](_0xf7f2('0x4'))}};
\ No newline at end of file
+var _0x71d8=['YYYY-MM-DD\x20HH:mm:ss','sequelize','moment','exports','STRING','DATE','format'];(function(_0x93416c,_0x38af9c){var _0x3f2e2c=function(_0x156653){while(--_0x156653){_0x93416c['push'](_0x93416c['shift']());}};_0x3f2e2c(++_0x38af9c);}(_0x71d8,0xb0));var _0x871d=function(_0x4266e6,_0x5b05be){_0x4266e6=_0x4266e6-0x0;var _0x39d88f=_0x71d8[_0x4266e6];return _0x39d88f;};'use strict';var Sequelize=require(_0x871d('0x0'));var moment=require(_0x871d('0x1'));module[_0x871d('0x2')]={'time':{'type':Sequelize[_0x871d('0x3')]},'callid':{'type':Sequelize[_0x871d('0x3')],'allowNull':![],'defaultValue':''},'queuename':{'type':Sequelize[_0x871d('0x3')],'allowNull':![],'defaultValue':''},'agent':{'type':Sequelize[_0x871d('0x3')],'allowNull':![],'defaultValue':''},'event':{'type':Sequelize[_0x871d('0x3')],'allowNull':![],'defaultValue':''},'data':{'type':Sequelize[_0x871d('0x3')],'allowNull':![],'defaultValue':''},'data1':{'type':Sequelize[_0x871d('0x3')],'allowNull':![],'defaultValue':''},'data2':{'type':Sequelize[_0x871d('0x3')],'allowNull':![],'defaultValue':''},'data3':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data4':{'type':Sequelize[_0x871d('0x3')],'allowNull':![],'defaultValue':''},'data5':{'type':Sequelize[_0x871d('0x3')],'allowNull':![],'defaultValue':''},'dtm':{'type':Sequelize[_0x871d('0x4')],'allowNull':![],'defaultValue':moment()[_0x871d('0x5')](_0x871d('0x6'))}};
\ No newline at end of file
index b579496..2ab8f5a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7600=['zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','reject','save','update','destroy','then','error','stack','name','send','index','map','VoiceQueuesLog','rawAttributes','fieldName','type','keys','intersection','model','query','fields','attributes','length','hasOwnProperty','nolimit','order','sort','filters','pick','filter','where','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','eml-format','rimraf'];(function(_0x2fc012,_0x503e5b){var _0x2891f9=function(_0x295f5e){while(--_0x295f5e){_0x2fc012['push'](_0x2fc012['shift']());}};_0x2891f9(++_0x503e5b);}(_0x7600,0x13e));var _0x0760=function(_0x21549c,_0x6d64d1){_0x21549c=_0x21549c-0x0;var _0x426cbd=_0x7600[_0x21549c];return _0x426cbd;};'use strict';var emlformat=require(_0x0760('0x0'));var rimraf=require(_0x0760('0x1'));var zipdir=require(_0x0760('0x2'));var jsonpatch=require(_0x0760('0x3'));var rp=require(_0x0760('0x4'));var moment=require(_0x0760('0x5'));var BPromise=require(_0x0760('0x6'));var Mustache=require(_0x0760('0x7'));var util=require(_0x0760('0x8'));var path=require('path');var sox=require(_0x0760('0x9'));var csv=require(_0x0760('0xa'));var ejs=require(_0x0760('0xb'));var fs=require('fs');var fs_extra=require(_0x0760('0xc'));var _=require(_0x0760('0xd'));var squel=require(_0x0760('0xe'));var crypto=require(_0x0760('0xf'));var jsforce=require(_0x0760('0x10'));var deskjs=require(_0x0760('0x11'));var toCsv=require(_0x0760('0xa'));var querystring=require(_0x0760('0x12'));var Papa=require(_0x0760('0x13'));var Redis=require('ioredis');var authService=require(_0x0760('0x14'));var qs=require(_0x0760('0x15'));var as=require(_0x0760('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x0760('0x17'))(_0x0760('0x18'));var utils=require(_0x0760('0x19'));var config=require(_0x0760('0x1a'));var licenseUtil=require(_0x0760('0x1b'));var db=require(_0x0760('0x1c'))['db'];function respondWithStatusCode(_0x1f394f,_0xd4d1dd){_0xd4d1dd=_0xd4d1dd||0xcc;return function(_0x356bfd){if(_0x356bfd){return _0x1f394f[_0x0760('0x1d')](_0xd4d1dd);}return _0x1f394f[_0x0760('0x1e')](_0xd4d1dd)[_0x0760('0x1f')]();};}function respondWithResult(_0x51fc93,_0x1100ee){_0x1100ee=_0x1100ee||0xc8;return function(_0x31f147){if(_0x31f147){return _0x51fc93[_0x0760('0x1e')](_0x1100ee)['json'](_0x31f147);}};}function respondWithFilteredResult(_0x428a3b,_0x46eea6){return function(_0x4ed433){if(_0x4ed433){var _0x49d89e=typeof _0x46eea6[_0x0760('0x20')]===_0x0760('0x21')&&typeof _0x46eea6[_0x0760('0x22')]===_0x0760('0x21');var _0x125f15=_0x4ed433[_0x0760('0x23')];var _0x3c252d=_0x49d89e?0x0:_0x46eea6['offset'];var _0x5bfb58=_0x49d89e?_0x4ed433['count']:_0x46eea6[_0x0760('0x20')]+_0x46eea6[_0x0760('0x22')];var _0x2cb832;if(_0x5bfb58>=_0x125f15){_0x5bfb58=_0x125f15;_0x2cb832=0xc8;}else{_0x2cb832=0xce;}_0x428a3b['status'](_0x2cb832);return _0x428a3b[_0x0760('0x24')](_0x0760('0x25'),_0x3c252d+'-'+_0x5bfb58+'/'+_0x125f15)[_0x0760('0x26')](_0x4ed433);}return null;};}function patchUpdates(_0x27061d){return function(_0x24101f){try{jsonpatch['apply'](_0x24101f,_0x27061d,!![]);}catch(_0x2063f5){return BPromise[_0x0760('0x27')](_0x2063f5);}return _0x24101f[_0x0760('0x28')]();};}function saveUpdates(_0x2511d0,_0x11d1db){return function(_0x88c03d){if(_0x88c03d){return _0x88c03d[_0x0760('0x29')](_0x2511d0)['then'](function(_0x4fc37a){return _0x4fc37a;});}return null;};}function removeEntity(_0x513ca9,_0x510170){return function(_0x4e4679){if(_0x4e4679){return _0x4e4679[_0x0760('0x2a')]()[_0x0760('0x2b')](function(){_0x513ca9['status'](0xcc)[_0x0760('0x1f')]();});}};}function handleEntityNotFound(_0x4fe7aa,_0x155e30){return function(_0xed1ead){if(!_0xed1ead){_0x4fe7aa[_0x0760('0x1d')](0x194);}return _0xed1ead;};}function handleError(_0x56f083,_0x448e05){_0x448e05=_0x448e05||0x1f4;return function(_0xa606d5){logger[_0x0760('0x2c')](_0xa606d5[_0x0760('0x2d')]);if(_0xa606d5[_0x0760('0x2e')]){delete _0xa606d5[_0x0760('0x2e')];}_0x56f083[_0x0760('0x1e')](_0x448e05)[_0x0760('0x2f')](_0xa606d5);};}exports[_0x0760('0x30')]=function(_0x93947e,_0x3bd82b){var _0x50d6a8={},_0x2af4cd={},_0x1381ab={'count':0x0,'rows':[]};var _0x5ab921=_[_0x0760('0x31')](db[_0x0760('0x32')][_0x0760('0x33')],function(_0x5e6460){return{'name':_0x5e6460[_0x0760('0x34')],'type':_0x5e6460[_0x0760('0x35')]['key']};});_0x2af4cd['model']=_[_0x0760('0x31')](_0x5ab921,_0x0760('0x2e'));_0x2af4cd['query']=_[_0x0760('0x36')](_0x93947e['query']);_0x2af4cd['filters']=_[_0x0760('0x37')](_0x2af4cd[_0x0760('0x38')],_0x2af4cd[_0x0760('0x39')]);_0x50d6a8['attributes']=_[_0x0760('0x37')](_0x2af4cd[_0x0760('0x38')],qs[_0x0760('0x3a')](_0x93947e[_0x0760('0x39')][_0x0760('0x3a')]));_0x50d6a8[_0x0760('0x3b')]=_0x50d6a8[_0x0760('0x3b')][_0x0760('0x3c')]?_0x50d6a8['attributes']:_0x2af4cd[_0x0760('0x38')];if(!_0x93947e['query'][_0x0760('0x3d')](_0x0760('0x3e'))){_0x50d6a8[_0x0760('0x22')]=qs[_0x0760('0x22')](_0x93947e[_0x0760('0x39')][_0x0760('0x22')]);_0x50d6a8[_0x0760('0x20')]=qs[_0x0760('0x20')](_0x93947e[_0x0760('0x39')][_0x0760('0x20')]);}_0x50d6a8[_0x0760('0x3f')]=qs[_0x0760('0x40')](_0x93947e[_0x0760('0x39')][_0x0760('0x40')]);_0x50d6a8['where']=qs[_0x0760('0x41')](_[_0x0760('0x42')](_0x93947e[_0x0760('0x39')],_0x2af4cd[_0x0760('0x41')]),_0x5ab921);if(_0x93947e[_0x0760('0x39')][_0x0760('0x43')]){_0x50d6a8[_0x0760('0x44')]=_['merge'](_0x50d6a8[_0x0760('0x44')],{'$or':_[_0x0760('0x31')](_0x5ab921,function(_0x3ff568){if(_0x3ff568[_0x0760('0x35')]!=='VIRTUAL'){var _0x4db201={};_0x4db201[_0x3ff568[_0x0760('0x2e')]]={'$like':'%'+_0x93947e[_0x0760('0x39')][_0x0760('0x43')]+'%'};return _0x4db201;}})});}_0x50d6a8=_['merge']({},_0x50d6a8,_0x93947e[_0x0760('0x45')]);var _0x596b58={'where':_0x50d6a8[_0x0760('0x44')]};return db['VoiceQueuesLog'][_0x0760('0x23')](_0x596b58)['then'](function(_0x25178d){_0x1381ab[_0x0760('0x23')]=_0x25178d;if(_0x93947e[_0x0760('0x39')][_0x0760('0x46')]){_0x50d6a8[_0x0760('0x47')]=[{'all':!![]}];}return db[_0x0760('0x32')][_0x0760('0x48')](_0x50d6a8);})['then'](function(_0x400fa8){_0x1381ab[_0x0760('0x49')]=_0x400fa8;return _0x1381ab;})[_0x0760('0x2b')](respondWithFilteredResult(_0x3bd82b,_0x50d6a8))[_0x0760('0x4a')](handleError(_0x3bd82b,null));};exports[_0x0760('0x4b')]=function(_0x1ba414,_0x2c85ba){var _0x176f44={'raw':!![],'where':{'id':_0x1ba414[_0x0760('0x4c')]['id']}},_0x27278f={};_0x27278f[_0x0760('0x38')]=_[_0x0760('0x36')](db[_0x0760('0x32')][_0x0760('0x33')]);_0x27278f[_0x0760('0x39')]=_[_0x0760('0x36')](_0x1ba414[_0x0760('0x39')]);_0x27278f['filters']=_[_0x0760('0x37')](_0x27278f[_0x0760('0x38')],_0x27278f[_0x0760('0x39')]);_0x176f44['attributes']=_[_0x0760('0x37')](_0x27278f[_0x0760('0x38')],qs[_0x0760('0x3a')](_0x1ba414[_0x0760('0x39')][_0x0760('0x3a')]));_0x176f44[_0x0760('0x3b')]=_0x176f44['attributes'][_0x0760('0x3c')]?_0x176f44[_0x0760('0x3b')]:_0x27278f[_0x0760('0x38')];if(_0x1ba414['query'][_0x0760('0x46')]){_0x176f44['include']=[{'all':!![]}];}_0x176f44=_['merge']({},_0x176f44,_0x1ba414[_0x0760('0x45')]);return db[_0x0760('0x32')][_0x0760('0x4d')](_0x176f44)[_0x0760('0x2b')](handleEntityNotFound(_0x2c85ba,null))[_0x0760('0x2b')](respondWithResult(_0x2c85ba,null))['catch'](handleError(_0x2c85ba,null));};exports[_0x0760('0x4e')]=function(_0x27b129,_0x54cac2){return db[_0x0760('0x32')]['create'](_0x27b129[_0x0760('0x4f')],{})[_0x0760('0x2b')](respondWithResult(_0x54cac2,0xc9))[_0x0760('0x4a')](handleError(_0x54cac2,null));};exports[_0x0760('0x29')]=function(_0x32384e,_0x550cb5){if(_0x32384e[_0x0760('0x4f')]['id']){delete _0x32384e[_0x0760('0x4f')]['id'];}return db['VoiceQueuesLog'][_0x0760('0x4d')]({'where':{'id':_0x32384e[_0x0760('0x4c')]['id']}})['then'](handleEntityNotFound(_0x550cb5,null))[_0x0760('0x2b')](saveUpdates(_0x32384e[_0x0760('0x4f')],null))['then'](respondWithResult(_0x550cb5,null))[_0x0760('0x4a')](handleError(_0x550cb5,null));};exports['destroy']=function(_0x4d59bf,_0x31fd48){return db[_0x0760('0x32')][_0x0760('0x4d')]({'where':{'id':_0x4d59bf[_0x0760('0x4c')]['id']}})['then'](handleEntityNotFound(_0x31fd48,null))[_0x0760('0x2b')](removeEntity(_0x31fd48,null))[_0x0760('0x4a')](handleError(_0x31fd48,null));};
\ No newline at end of file
+var _0x02b8=['attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','findAll','catch','show','rawAttributes','find','create','body','params','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','to-csv','ejs','fs-extra','crypto','desk.js','querystring','papaparse','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','undefined','count','limit','set','Content-Range','json','apply','reject','update','then','error','name','send','index','map','VoiceQueuesLog','fieldName','type','key','keys','query','filters','intersection','model','fields'];(function(_0x5a3cf0,_0x160a68){var _0x5a64ee=function(_0x34cd1d){while(--_0x34cd1d){_0x5a3cf0['push'](_0x5a3cf0['shift']());}};_0x5a64ee(++_0x160a68);}(_0x02b8,0x1c4));var _0x802b=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0x02b8[_0x42cae2];return _0x5f256f;};'use strict';var emlformat=require(_0x802b('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x802b('0x1'));var jsonpatch=require(_0x802b('0x2'));var rp=require(_0x802b('0x3'));var moment=require('moment');var BPromise=require(_0x802b('0x4'));var Mustache=require('mustache');var util=require(_0x802b('0x5'));var path=require(_0x802b('0x6'));var sox=require(_0x802b('0x7'));var csv=require(_0x802b('0x8'));var ejs=require(_0x802b('0x9'));var fs=require('fs');var fs_extra=require(_0x802b('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x802b('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x802b('0xc'));var toCsv=require(_0x802b('0x8'));var querystring=require(_0x802b('0xd'));var Papa=require(_0x802b('0xe'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x802b('0xf'));var hardwareService=require(_0x802b('0x10'));var logger=require(_0x802b('0x11'))(_0x802b('0x12'));var utils=require(_0x802b('0x13'));var config=require(_0x802b('0x14'));var licenseUtil=require(_0x802b('0x15'));var db=require(_0x802b('0x16'))['db'];function respondWithStatusCode(_0x1a5bb8,_0x2e8a27){_0x2e8a27=_0x2e8a27||0xcc;return function(_0x3fce69){if(_0x3fce69){return _0x1a5bb8[_0x802b('0x17')](_0x2e8a27);}return _0x1a5bb8['status'](_0x2e8a27)[_0x802b('0x18')]();};}function respondWithResult(_0x17e92c,_0x40302f){_0x40302f=_0x40302f||0xc8;return function(_0x5d251e){if(_0x5d251e){return _0x17e92c[_0x802b('0x19')](_0x40302f)['json'](_0x5d251e);}};}function respondWithFilteredResult(_0x571004,_0x19c27a){return function(_0x208c81){if(_0x208c81){var _0x4df9e0=typeof _0x19c27a[_0x802b('0x1a')]==='undefined'&&typeof _0x19c27a['limit']===_0x802b('0x1b');var _0x490189=_0x208c81[_0x802b('0x1c')];var _0x2a2263=_0x4df9e0?0x0:_0x19c27a['offset'];var _0x405dc5=_0x4df9e0?_0x208c81[_0x802b('0x1c')]:_0x19c27a[_0x802b('0x1a')]+_0x19c27a[_0x802b('0x1d')];var _0x16d1da;if(_0x405dc5>=_0x490189){_0x405dc5=_0x490189;_0x16d1da=0xc8;}else{_0x16d1da=0xce;}_0x571004[_0x802b('0x19')](_0x16d1da);return _0x571004[_0x802b('0x1e')](_0x802b('0x1f'),_0x2a2263+'-'+_0x405dc5+'/'+_0x490189)[_0x802b('0x20')](_0x208c81);}return null;};}function patchUpdates(_0x151a37){return function(_0x4815cb){try{jsonpatch[_0x802b('0x21')](_0x4815cb,_0x151a37,!![]);}catch(_0x4e5826){return BPromise[_0x802b('0x22')](_0x4e5826);}return _0x4815cb['save']();};}function saveUpdates(_0x4f18e8,_0x28e783){return function(_0x1977c0){if(_0x1977c0){return _0x1977c0[_0x802b('0x23')](_0x4f18e8)[_0x802b('0x24')](function(_0x3de693){return _0x3de693;});}return null;};}function removeEntity(_0x2570b1,_0x535a8a){return function(_0x4e04f4){if(_0x4e04f4){return _0x4e04f4['destroy']()[_0x802b('0x24')](function(){_0x2570b1[_0x802b('0x19')](0xcc)[_0x802b('0x18')]();});}};}function handleEntityNotFound(_0x1f1fac,_0x1c3fef){return function(_0x461eec){if(!_0x461eec){_0x1f1fac[_0x802b('0x17')](0x194);}return _0x461eec;};}function handleError(_0x719e75,_0x1c2d55){_0x1c2d55=_0x1c2d55||0x1f4;return function(_0x27e9f3){logger[_0x802b('0x25')](_0x27e9f3['stack']);if(_0x27e9f3[_0x802b('0x26')]){delete _0x27e9f3[_0x802b('0x26')];}_0x719e75[_0x802b('0x19')](_0x1c2d55)[_0x802b('0x27')](_0x27e9f3);};}exports[_0x802b('0x28')]=function(_0x3c4217,_0x9ad88c){var _0x12b8f6={},_0x26f83e={},_0x49ee91={'count':0x0,'rows':[]};var _0x127d70=_[_0x802b('0x29')](db[_0x802b('0x2a')]['rawAttributes'],function(_0x2d7ab1){return{'name':_0x2d7ab1[_0x802b('0x2b')],'type':_0x2d7ab1[_0x802b('0x2c')][_0x802b('0x2d')]};});_0x26f83e['model']=_[_0x802b('0x29')](_0x127d70,'name');_0x26f83e['query']=_[_0x802b('0x2e')](_0x3c4217[_0x802b('0x2f')]);_0x26f83e[_0x802b('0x30')]=_[_0x802b('0x31')](_0x26f83e[_0x802b('0x32')],_0x26f83e[_0x802b('0x2f')]);_0x12b8f6['attributes']=_['intersection'](_0x26f83e[_0x802b('0x32')],qs['fields'](_0x3c4217['query'][_0x802b('0x33')]));_0x12b8f6[_0x802b('0x34')]=_0x12b8f6[_0x802b('0x34')][_0x802b('0x35')]?_0x12b8f6[_0x802b('0x34')]:_0x26f83e[_0x802b('0x32')];if(!_0x3c4217[_0x802b('0x2f')][_0x802b('0x36')](_0x802b('0x37'))){_0x12b8f6[_0x802b('0x1d')]=qs['limit'](_0x3c4217['query'][_0x802b('0x1d')]);_0x12b8f6['offset']=qs['offset'](_0x3c4217[_0x802b('0x2f')][_0x802b('0x1a')]);}_0x12b8f6[_0x802b('0x38')]=qs[_0x802b('0x39')](_0x3c4217['query']['sort']);_0x12b8f6[_0x802b('0x3a')]=qs[_0x802b('0x30')](_[_0x802b('0x3b')](_0x3c4217[_0x802b('0x2f')],_0x26f83e['filters']),_0x127d70);if(_0x3c4217['query'][_0x802b('0x3c')]){_0x12b8f6[_0x802b('0x3a')]=_['merge'](_0x12b8f6[_0x802b('0x3a')],{'$or':_[_0x802b('0x29')](_0x127d70,function(_0x23d706){if(_0x23d706[_0x802b('0x2c')]!=='VIRTUAL'){var _0x4a4997={};_0x4a4997[_0x23d706[_0x802b('0x26')]]={'$like':'%'+_0x3c4217[_0x802b('0x2f')]['filter']+'%'};return _0x4a4997;}})});}_0x12b8f6=_[_0x802b('0x3d')]({},_0x12b8f6,_0x3c4217[_0x802b('0x3e')]);var _0x2e7fbf={'where':_0x12b8f6[_0x802b('0x3a')]};return db[_0x802b('0x2a')]['count'](_0x2e7fbf)[_0x802b('0x24')](function(_0x155c6a){_0x49ee91[_0x802b('0x1c')]=_0x155c6a;if(_0x3c4217['query'][_0x802b('0x3f')]){_0x12b8f6['include']=[{'all':!![]}];}return db[_0x802b('0x2a')][_0x802b('0x40')](_0x12b8f6);})[_0x802b('0x24')](function(_0x6c16b0){_0x49ee91['rows']=_0x6c16b0;return _0x49ee91;})[_0x802b('0x24')](respondWithFilteredResult(_0x9ad88c,_0x12b8f6))[_0x802b('0x41')](handleError(_0x9ad88c,null));};exports[_0x802b('0x42')]=function(_0x4a626b,_0x7832a){var _0x48d014={'raw':!![],'where':{'id':_0x4a626b['params']['id']}},_0x255199={};_0x255199[_0x802b('0x32')]=_['keys'](db['VoiceQueuesLog'][_0x802b('0x43')]);_0x255199[_0x802b('0x2f')]=_[_0x802b('0x2e')](_0x4a626b['query']);_0x255199[_0x802b('0x30')]=_[_0x802b('0x31')](_0x255199['model'],_0x255199[_0x802b('0x2f')]);_0x48d014[_0x802b('0x34')]=_['intersection'](_0x255199[_0x802b('0x32')],qs[_0x802b('0x33')](_0x4a626b[_0x802b('0x2f')][_0x802b('0x33')]));_0x48d014[_0x802b('0x34')]=_0x48d014[_0x802b('0x34')][_0x802b('0x35')]?_0x48d014[_0x802b('0x34')]:_0x255199[_0x802b('0x32')];if(_0x4a626b[_0x802b('0x2f')][_0x802b('0x3f')]){_0x48d014['include']=[{'all':!![]}];}_0x48d014=_[_0x802b('0x3d')]({},_0x48d014,_0x4a626b['options']);return db['VoiceQueuesLog'][_0x802b('0x44')](_0x48d014)[_0x802b('0x24')](handleEntityNotFound(_0x7832a,null))[_0x802b('0x24')](respondWithResult(_0x7832a,null))['catch'](handleError(_0x7832a,null));};exports[_0x802b('0x45')]=function(_0x1544e6,_0xfee20b){return db[_0x802b('0x2a')][_0x802b('0x45')](_0x1544e6['body'],{})[_0x802b('0x24')](respondWithResult(_0xfee20b,0xc9))[_0x802b('0x41')](handleError(_0xfee20b,null));};exports['update']=function(_0x1f6407,_0x3650da){if(_0x1f6407[_0x802b('0x46')]['id']){delete _0x1f6407[_0x802b('0x46')]['id'];}return db[_0x802b('0x2a')]['find']({'where':{'id':_0x1f6407[_0x802b('0x47')]['id']}})[_0x802b('0x24')](handleEntityNotFound(_0x3650da,null))[_0x802b('0x24')](saveUpdates(_0x1f6407[_0x802b('0x46')],null))[_0x802b('0x24')](respondWithResult(_0x3650da,null))['catch'](handleError(_0x3650da,null));};exports['destroy']=function(_0x20b9ce,_0x132914){return db[_0x802b('0x2a')][_0x802b('0x44')]({'where':{'id':_0x20b9ce[_0x802b('0x47')]['id']}})['then'](handleEntityNotFound(_0x132914,null))['then'](removeEntity(_0x132914,null))[_0x802b('0x41')](handleError(_0x132914,null));};
\ No newline at end of file
index bfd1f79..a742968 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f63=['event_dtm','lodash','util','api','moment','bluebird','path','rimraf','exports','VoiceQueuesLog','voice_queues_log'];(function(_0x48b5e0,_0xb3826){var _0x4287ea=function(_0x14519e){while(--_0x14519e){_0x48b5e0['push'](_0x48b5e0['shift']());}};_0x4287ea(++_0xb3826);}(_0x1f63,0x7a));var _0x31f6=function(_0x2a4d2d,_0x249ce3){_0x2a4d2d=_0x2a4d2d-0x0;var _0x5dc922=_0x1f63[_0x2a4d2d];return _0x5dc922;};'use strict';var _=require(_0x31f6('0x0'));var util=require(_0x31f6('0x1'));var logger=require('../../config/logger')(_0x31f6('0x2'));var moment=require(_0x31f6('0x3'));var BPromise=require(_0x31f6('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x31f6('0x5'));var rimraf=require(_0x31f6('0x6'));var config=require('../../config/environment');var attributes=require('./voiceQueuesLog.attributes');module[_0x31f6('0x7')]=function(_0x11250b,_0xe8437e){return _0x11250b['define'](_0x31f6('0x8'),attributes,{'tableName':_0x31f6('0x9'),'paranoid':![],'indexes':[{'name':_0x31f6('0xa'),'fields':['event','dtm']}],'timestamps':![]});};
\ No newline at end of file
+var _0xd5b6=['bluebird','request-promise','path','../../config/environment','./voiceQueuesLog.attributes','exports','define','VoiceQueuesLog','voice_queues_log','dtm','lodash','util','../../config/logger','api','moment'];(function(_0xd7b0a4,_0x53c7d3){var _0x184e9e=function(_0x325bbd){while(--_0x325bbd){_0xd7b0a4['push'](_0xd7b0a4['shift']());}};_0x184e9e(++_0x53c7d3);}(_0xd5b6,0x73));var _0x6d5b=function(_0x5ec6ee,_0x1d1530){_0x5ec6ee=_0x5ec6ee-0x0;var _0x4d75cf=_0xd5b6[_0x5ec6ee];return _0x4d75cf;};'use strict';var _=require(_0x6d5b('0x0'));var util=require(_0x6d5b('0x1'));var logger=require(_0x6d5b('0x2'))(_0x6d5b('0x3'));var moment=require(_0x6d5b('0x4'));var BPromise=require(_0x6d5b('0x5'));var rp=require(_0x6d5b('0x6'));var fs=require('fs');var path=require(_0x6d5b('0x7'));var rimraf=require('rimraf');var config=require(_0x6d5b('0x8'));var attributes=require(_0x6d5b('0x9'));module[_0x6d5b('0xa')]=function(_0x4935ef,_0x1c2490){return _0x4935ef[_0x6d5b('0xb')](_0x6d5b('0xc'),attributes,{'tableName':_0x6d5b('0xd'),'paranoid':![],'indexes':[{'name':'event_dtm','fields':['event',_0x6d5b('0xe')]}],'timestamps':![]});};
\ No newline at end of file
index 5667fa0..d20e5b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9de=['stringify','error','code','message','request\x20sent','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','request','then','VoiceQueuesLog,\x20%s,\x20%s','debug'];(function(_0x4808d3,_0x3353c6){var _0x3057fa=function(_0x535a58){while(--_0x535a58){_0x4808d3['push'](_0x4808d3['shift']());}};_0x3057fa(++_0x3353c6);}(_0xa9de,0x99));var _0xea9d=function(_0x160c73,_0x2ee678){_0x160c73=_0x160c73-0x0;var _0xd9302=_0xa9de[_0x160c73];return _0xd9302;};'use strict';var _=require(_0xea9d('0x0'));var util=require(_0xea9d('0x1'));var moment=require(_0xea9d('0x2'));var BPromise=require(_0xea9d('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xea9d('0x4'));var db=require(_0xea9d('0x5'))['db'];var utils=require(_0xea9d('0x6'));var logger=require(_0xea9d('0x7'))(_0xea9d('0x8'));var config=require(_0xea9d('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xea9d('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5a1b1d,_0x927407,_0x4299d2){return new BPromise(function(_0xbbacc1,_0x1c4d2d){return client[_0xea9d('0xb')](_0x5a1b1d,_0x4299d2)[_0xea9d('0xc')](function(_0x11d292){logger['info'](_0xea9d('0xd'),_0x927407,'request\x20sent');logger[_0xea9d('0xe')]('VoiceQueuesLog,\x20%s,\x20%s,\x20%s',_0x927407,'request\x20sent',JSON[_0xea9d('0xf')](_0x11d292));if(_0x11d292[_0xea9d('0x10')]){if(_0x11d292['error'][_0xea9d('0x11')]===0x1f4){logger[_0xea9d('0x10')](_0xea9d('0xd'),_0x927407,_0x11d292['error'][_0xea9d('0x12')]);return _0x1c4d2d(_0x11d292['error']['message']);}logger[_0xea9d('0x10')](_0xea9d('0xd'),_0x927407,_0x11d292[_0xea9d('0x10')][_0xea9d('0x12')]);return _0xbbacc1(_0x11d292['error'][_0xea9d('0x12')]);}else{logger['info'](_0xea9d('0xd'),_0x927407,_0xea9d('0x13'));_0xbbacc1(_0x11d292['result'][_0xea9d('0x12')]);}})[_0xea9d('0x14')](function(_0x2ca2ad){logger['error'](_0xea9d('0xd'),_0x927407,_0x2ca2ad);_0x1c4d2d(_0x2ca2ad);});});}
\ No newline at end of file
+var _0x4d6e=['util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','VoiceQueuesLog,\x20%s,\x20%s','request\x20sent','debug','VoiceQueuesLog,\x20%s,\x20%s,\x20%s','error','code','message','result','lodash'];(function(_0x43a37c,_0x25a567){var _0x5d1d40=function(_0x3ec673){while(--_0x3ec673){_0x43a37c['push'](_0x43a37c['shift']());}};_0x5d1d40(++_0x25a567);}(_0x4d6e,0x77));var _0xe4d6=function(_0x263b35,_0x421508){_0x263b35=_0x263b35-0x0;var _0x48168e=_0x4d6e[_0x263b35];return _0x48168e;};'use strict';var _=require(_0xe4d6('0x0'));var util=require(_0xe4d6('0x1'));var moment=require(_0xe4d6('0x2'));var BPromise=require(_0xe4d6('0x3'));var rs=require(_0xe4d6('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xe4d6('0x5'))['db'];var utils=require(_0xe4d6('0x6'));var logger=require(_0xe4d6('0x7'))(_0xe4d6('0x8'));var config=require(_0xe4d6('0x9'));var jayson=require(_0xe4d6('0xa'));var client=jayson[_0xe4d6('0xb')][_0xe4d6('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x303058,_0x3e02bf,_0x352417){return new BPromise(function(_0xe683ad,_0x5a31f0){return client[_0xe4d6('0xd')](_0x303058,_0x352417)[_0xe4d6('0xe')](function(_0x56a295){logger[_0xe4d6('0xf')](_0xe4d6('0x10'),_0x3e02bf,_0xe4d6('0x11'));logger[_0xe4d6('0x12')](_0xe4d6('0x13'),_0x3e02bf,_0xe4d6('0x11'),JSON['stringify'](_0x56a295));if(_0x56a295['error']){if(_0x56a295[_0xe4d6('0x14')][_0xe4d6('0x15')]===0x1f4){logger[_0xe4d6('0x14')]('VoiceQueuesLog,\x20%s,\x20%s',_0x3e02bf,_0x56a295[_0xe4d6('0x14')][_0xe4d6('0x16')]);return _0x5a31f0(_0x56a295['error'][_0xe4d6('0x16')]);}logger[_0xe4d6('0x14')]('VoiceQueuesLog,\x20%s,\x20%s',_0x3e02bf,_0x56a295[_0xe4d6('0x14')][_0xe4d6('0x16')]);return _0xe683ad(_0x56a295[_0xe4d6('0x14')][_0xe4d6('0x16')]);}else{logger['info'](_0xe4d6('0x10'),_0x3e02bf,_0xe4d6('0x11'));_0xe683ad(_0x56a295[_0xe4d6('0x17')][_0xe4d6('0x16')]);}})['catch'](function(_0x41d1a7){logger['error']('VoiceQueuesLog,\x20%s,\x20%s',_0x3e02bf,_0x41d1a7);_0x5a31f0(_0x41d1a7);});});}
\ No newline at end of file
index 94cf293..a4968d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8a8a=['exports','multer','util','path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./voiceRecording.controller','get','index','/describe','isAuthenticated','/:id','show','/:id/download','download','/:id/downloads','downloads','downloadTranscribe','post','create','/:id/transcribe','runTranscribe','put','destroy'];(function(_0x571b16,_0x164130){var _0xb0f26=function(_0x4f4ec7){while(--_0x4f4ec7){_0x571b16['push'](_0x571b16['shift']());}};_0xb0f26(++_0x164130);}(_0x8a8a,0x6d));var _0xa8a8=function(_0x451b31,_0x180854){_0x451b31=_0x451b31-0x0;var _0xb75225=_0x8a8a[_0x451b31];return _0xb75225;};'use strict';var multer=require(_0xa8a8('0x0'));var util=require(_0xa8a8('0x1'));var path=require(_0xa8a8('0x2'));var timeout=require('connect-timeout');var express=require(_0xa8a8('0x3'));var router=express[_0xa8a8('0x4')]();var fs_extra=require(_0xa8a8('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xa8a8('0x6'));var config=require(_0xa8a8('0x7'));var controller=require(_0xa8a8('0x8'));router[_0xa8a8('0x9')]('/',auth['isAuthenticated'](),controller[_0xa8a8('0xa')]);router[_0xa8a8('0x9')](_0xa8a8('0xb'),auth[_0xa8a8('0xc')](),controller['describe']);router[_0xa8a8('0x9')](_0xa8a8('0xd'),auth[_0xa8a8('0xc')](),controller[_0xa8a8('0xe')]);router['get'](_0xa8a8('0xf'),auth['isAuthenticated'](),controller[_0xa8a8('0x10')]);router[_0xa8a8('0x9')](_0xa8a8('0x11'),controller[_0xa8a8('0x12')]);router[_0xa8a8('0x9')]('/:id/transcribe',auth[_0xa8a8('0xc')](),controller[_0xa8a8('0x13')]);router[_0xa8a8('0x14')]('/',auth['isAuthenticated'](),controller[_0xa8a8('0x15')]);router['post'](_0xa8a8('0x16'),auth['isAuthenticated'](),controller[_0xa8a8('0x17')]);router[_0xa8a8('0x18')](_0xa8a8('0xd'),auth[_0xa8a8('0xc')](),controller['update']);router['delete']('/:id',auth[_0xa8a8('0xc')](),controller[_0xa8a8('0x19')]);module[_0xa8a8('0x1a')]=router;
\ No newline at end of file
+var _0x0c0c=['show','download','/:id/downloads','/:id/transcribe','downloadTranscribe','post','create','update','delete','destroy','exports','multer','util','path','connect-timeout','fs-extra','../../components/auth/service','../../config/environment','./voiceRecording.controller','isAuthenticated','get','/describe','describe','/:id'];(function(_0x13e741,_0x5d3c24){var _0x3f8bb3=function(_0x4440a0){while(--_0x4440a0){_0x13e741['push'](_0x13e741['shift']());}};_0x3f8bb3(++_0x5d3c24);}(_0x0c0c,0x1a3));var _0xc0c0=function(_0x3c717e,_0x394503){_0x3c717e=_0x3c717e-0x0;var _0x1ff1ac=_0x0c0c[_0x3c717e];return _0x1ff1ac;};'use strict';var multer=require(_0xc0c0('0x0'));var util=require(_0xc0c0('0x1'));var path=require(_0xc0c0('0x2'));var timeout=require(_0xc0c0('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xc0c0('0x4'));var auth=require(_0xc0c0('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xc0c0('0x6'));var controller=require(_0xc0c0('0x7'));router['get']('/',auth[_0xc0c0('0x8')](),controller['index']);router[_0xc0c0('0x9')](_0xc0c0('0xa'),auth[_0xc0c0('0x8')](),controller[_0xc0c0('0xb')]);router[_0xc0c0('0x9')](_0xc0c0('0xc'),auth[_0xc0c0('0x8')](),controller[_0xc0c0('0xd')]);router['get']('/:id/download',auth[_0xc0c0('0x8')](),controller[_0xc0c0('0xe')]);router[_0xc0c0('0x9')](_0xc0c0('0xf'),controller['downloads']);router[_0xc0c0('0x9')](_0xc0c0('0x10'),auth['isAuthenticated'](),controller[_0xc0c0('0x11')]);router[_0xc0c0('0x12')]('/',auth[_0xc0c0('0x8')](),controller[_0xc0c0('0x13')]);router[_0xc0c0('0x12')]('/:id/transcribe',auth['isAuthenticated'](),controller['runTranscribe']);router['put'](_0xc0c0('0xc'),auth['isAuthenticated'](),controller[_0xc0c0('0x14')]);router[_0xc0c0('0x15')](_0xc0c0('0xc'),auth['isAuthenticated'](),controller[_0xc0c0('0x16')]);module[_0xc0c0('0x17')]=router;
\ No newline at end of file
index 4a12f64..823cac1 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(_0x341e0f,_0x4a09d0){var _0x59555a=function(_0x4343a8){while(--_0x4343a8){_0x341e0f['push'](_0x341e0f['shift']());}};_0x59555a(++_0x4a09d0);}(_0xa9e0,0x123));var _0x0a9e=function(_0x28947d,_0x4cc9c6){_0x28947d=_0x28947d-0x0;var _0x12d2ee=_0xa9e0[_0x28947d];return _0x12d2ee;};'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(_0x513aa5,_0x1fba79){var _0x1a1a7c=function(_0x240e3f){while(--_0x240e3f){_0x513aa5['push'](_0x513aa5['shift']());}};_0x1a1a7c(++_0x1fba79);}(_0xa9e0,0x123));var _0x0a9e=function(_0xbb091,_0x3fe7ee){_0xbb091=_0xbb091-0x0;var _0x467a04=_0xa9e0[_0xbb091];return _0x467a04;};'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 1ebc5e2..42fc87d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf7cb=['ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','error','stack','name','send','map','VoiceRecording','fieldName','type','key','model','differenceBy','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','sort','where','pick','filter','merge','VIRTUAL','findAll','rows','catch','show','params','rawAttributes','includeAll','include','options','find','body','download','uniqueid','value','%s.cypher','existsSync','decryptFile','recording','ValidationError','VoiceRecording\x20not\x20found','filename','extname','unlink','message','Not\x20found','downloads','../../components/encryptor','sequelize','MD5','col','token','$and','push','format','Sequelize','destroy','Entity\x20not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','isNil','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','File:\x20\x22','upload','TranscribeService','[RUNTRANSCRIPT][%d]\x20Starting\x20voice\x20recording\x20upload\x20in\x20bucket\x20%s','basename','[RUNTRANSCRIPT][%d]\x20Voice\x20recording\x20uploaded\x20in\x20bucket\x20%s\x20(%s)','Location','bucket','Bucket','location','[RUNTRANSCRIPT][%d]\x20Sending\x20transcribe\x20request','[RUNTRANSCRIPT][%d]\x20Transcription\x20job\x20%s\x20created','TranscriptionJobName','transcribeName','TranscriptionJob','runTranscribe','findOne','secrets','Voice\x20Recording\x20not\x20found','transcribe','transcribeRegion','language','Transcribe\x20not\x20configured','runSentiment','sentimentAccountId','sentimentRegion','Sentiment\x20Analysis\x20not\x20configured','CloudProvider','Cloud\x20Provider\x20not\x20available','data2','Cloud\x20Provider\x20not\x20configured','data1','Buckets','Name','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20not\x20available','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20available','transcribeStatus','[RUNTRANSCRIPT][%d]\x20Transcript\x20action\x20already\x20requested','IN_PROGRESS','downloadTranscribe','fileText','root','/server/files/transcribes/transcribe_','.txt','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','aws-sdk','uuid/v4'];(function(_0x18c064,_0x4db1da){var _0x2a99a3=function(_0xaaf892){while(--_0xaaf892){_0x18c064['push'](_0x18c064['shift']());}};_0x2a99a3(++_0x4db1da);}(_0xf7cb,0x86));var _0xbf7c=function(_0x323ed8,_0x41bf75){_0x323ed8=_0x323ed8-0x0;var _0x6ba110=_0xf7cb[_0x323ed8];return _0x6ba110;};'use strict';var emlformat=require(_0xbf7c('0x0'));var rimraf=require(_0xbf7c('0x1'));var zipdir=require(_0xbf7c('0x2'));var jsonpatch=require(_0xbf7c('0x3'));var rp=require(_0xbf7c('0x4'));var moment=require('moment');var BPromise=require(_0xbf7c('0x5'));var Mustache=require(_0xbf7c('0x6'));var util=require(_0xbf7c('0x7'));var path=require(_0xbf7c('0x8'));var sox=require(_0xbf7c('0x9'));var csv=require(_0xbf7c('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xbf7c('0xb'));var squel=require(_0xbf7c('0xc'));var crypto=require(_0xbf7c('0xd'));var jsforce=require(_0xbf7c('0xe'));var deskjs=require(_0xbf7c('0xf'));var toCsv=require(_0xbf7c('0xa'));var querystring=require(_0xbf7c('0x10'));var Papa=require(_0xbf7c('0x11'));var AWS=require(_0xbf7c('0x12'));var uuidv4=require(_0xbf7c('0x13'));var Redis=require(_0xbf7c('0x14'));var authService=require(_0xbf7c('0x15'));var qs=require('../../components/parsers/qs');var as=require(_0xbf7c('0x16'));var hardwareService=require(_0xbf7c('0x17'));var logger=require(_0xbf7c('0x18'))(_0xbf7c('0x19'));var utils=require(_0xbf7c('0x1a'));var config=require(_0xbf7c('0x1b'));var licenseUtil=require(_0xbf7c('0x1c'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x10ccbb,_0x225513){_0x225513=_0x225513||0xcc;return function(_0x8ff322){if(_0x8ff322){return _0x10ccbb[_0xbf7c('0x1d')](_0x225513);}return _0x10ccbb[_0xbf7c('0x1e')](_0x225513)[_0xbf7c('0x1f')]();};}function respondWithResult(_0x10717b,_0x150f32){_0x150f32=_0x150f32||0xc8;return function(_0x29d981){if(_0x29d981){return _0x10717b[_0xbf7c('0x1e')](_0x150f32)[_0xbf7c('0x20')](_0x29d981);}};}function respondWithFilteredResult(_0xd63b53,_0x2f0a34){return function(_0x4f32fa){if(_0x4f32fa){var _0x4da950=typeof _0x2f0a34[_0xbf7c('0x21')]===_0xbf7c('0x22')&&typeof _0x2f0a34[_0xbf7c('0x23')]===_0xbf7c('0x22');var _0x4b33dd=_0x4f32fa[_0xbf7c('0x24')];var _0x4a5386=_0x4da950?0x0:_0x2f0a34[_0xbf7c('0x21')];var _0x3fa2c7=_0x4da950?_0x4f32fa['count']:_0x2f0a34['offset']+_0x2f0a34[_0xbf7c('0x23')];var _0x47abed;if(_0x3fa2c7>=_0x4b33dd){_0x3fa2c7=_0x4b33dd;_0x47abed=0xc8;}else{_0x47abed=0xce;}_0xd63b53[_0xbf7c('0x1e')](_0x47abed);return _0xd63b53[_0xbf7c('0x25')](_0xbf7c('0x26'),_0x4a5386+'-'+_0x3fa2c7+'/'+_0x4b33dd)[_0xbf7c('0x20')](_0x4f32fa);}return null;};}function patchUpdates(_0x3d9555){return function(_0x3f81ca){try{jsonpatch[_0xbf7c('0x27')](_0x3f81ca,_0x3d9555,!![]);}catch(_0x15474d){return BPromise['reject'](_0x15474d);}return _0x3f81ca[_0xbf7c('0x28')]();};}function saveUpdates(_0x4e13ad,_0x1918ef){return function(_0x1595dd){if(_0x1595dd){return _0x1595dd[_0xbf7c('0x29')](_0x4e13ad)[_0xbf7c('0x2a')](function(_0x2cfc3f){return _0x2cfc3f;});}return null;};}function removeEntity(_0x79a355,_0x1e50ff){return function(_0x2997ee){if(_0x2997ee){return _0x2997ee['destroy']()[_0xbf7c('0x2a')](function(){_0x79a355[_0xbf7c('0x1e')](0xcc)[_0xbf7c('0x1f')]();});}};}function handleEntityNotFound(_0x58c76d,_0x4b87b5){return function(_0x303058){if(!_0x303058){_0x58c76d[_0xbf7c('0x1d')](0x194);}return _0x303058;};}function handleError(_0x238bf5,_0x298597){_0x298597=_0x298597||0x1f4;return function(_0x209b3e){logger[_0xbf7c('0x2b')](_0x209b3e[_0xbf7c('0x2c')]);if(_0x209b3e[_0xbf7c('0x2d')]){delete _0x209b3e[_0xbf7c('0x2d')];}_0x238bf5[_0xbf7c('0x1e')](_0x298597)[_0xbf7c('0x2e')](_0x209b3e);};}exports['index']=function(_0x46eee0,_0x2e2afc){var _0x4857e2={},_0x13d68f={},_0x760ff6={'count':0x0,'rows':[]};var _0x24afc4=_[_0xbf7c('0x2f')](db[_0xbf7c('0x30')]['rawAttributes'],function(_0x23bc33){return{'name':_0x23bc33[_0xbf7c('0x31')],'type':_0x23bc33[_0xbf7c('0x32')][_0xbf7c('0x33')]};});_0x13d68f[_0xbf7c('0x34')]=_[_0xbf7c('0x35')](_['map'](_0x24afc4,_0xbf7c('0x2d')),['format']);_0x13d68f[_0xbf7c('0x36')]=_[_0xbf7c('0x37')](_0x46eee0['query']);_0x13d68f[_0xbf7c('0x38')]=_[_0xbf7c('0x39')](_0x13d68f[_0xbf7c('0x34')],_0x13d68f[_0xbf7c('0x36')]);_0x4857e2[_0xbf7c('0x3a')]=_[_0xbf7c('0x39')](_0x13d68f[_0xbf7c('0x34')],qs[_0xbf7c('0x3b')](_0x46eee0['query'][_0xbf7c('0x3b')]));_0x4857e2[_0xbf7c('0x3a')]=_0x4857e2[_0xbf7c('0x3a')][_0xbf7c('0x3c')]?_0x4857e2['attributes']:_0x13d68f[_0xbf7c('0x34')];if(!_0x46eee0['query'][_0xbf7c('0x3d')]('nolimit')){_0x4857e2['limit']=qs[_0xbf7c('0x23')](_0x46eee0['query']['limit']);_0x4857e2[_0xbf7c('0x21')]=qs[_0xbf7c('0x21')](_0x46eee0[_0xbf7c('0x36')][_0xbf7c('0x21')]);}_0x4857e2['order']=qs[_0xbf7c('0x3e')](_0x46eee0[_0xbf7c('0x36')][_0xbf7c('0x3e')]);_0x4857e2[_0xbf7c('0x3f')]=qs[_0xbf7c('0x38')](_[_0xbf7c('0x40')](_0x46eee0[_0xbf7c('0x36')],_0x13d68f[_0xbf7c('0x38')]),_0x24afc4);if(_0x46eee0[_0xbf7c('0x36')][_0xbf7c('0x41')]){_0x4857e2[_0xbf7c('0x3f')]=_[_0xbf7c('0x42')](_0x4857e2[_0xbf7c('0x3f')],{'$or':_['map'](_0x24afc4,function(_0x56faeb){if(_0x56faeb[_0xbf7c('0x32')]!==_0xbf7c('0x43')){var _0x4c411a={};_0x4c411a[_0x56faeb['name']]={'$like':'%'+_0x46eee0['query'][_0xbf7c('0x41')]+'%'};return _0x4c411a;}})});}_0x4857e2=_[_0xbf7c('0x42')]({},_0x4857e2,_0x46eee0['options']);var _0x244628={'where':_0x4857e2[_0xbf7c('0x3f')]};return db['VoiceRecording'][_0xbf7c('0x24')](_0x244628)['then'](function(_0x404b88){_0x760ff6[_0xbf7c('0x24')]=_0x404b88;if(_0x46eee0[_0xbf7c('0x36')]['includeAll']){_0x4857e2['include']=[{'all':!![]}];}return db[_0xbf7c('0x30')][_0xbf7c('0x44')](_0x4857e2);})['then'](function(_0x555817){_0x760ff6[_0xbf7c('0x45')]=_0x555817;return _0x760ff6;})[_0xbf7c('0x2a')](respondWithFilteredResult(_0x2e2afc,_0x4857e2))[_0xbf7c('0x46')](handleError(_0x2e2afc,null));};exports[_0xbf7c('0x47')]=function(_0x2b8712,_0xcd6dce){var _0x1e3d51={'raw':![],'where':{'id':_0x2b8712[_0xbf7c('0x48')]['id']}},_0x3682d4={};_0x3682d4[_0xbf7c('0x34')]=_['keys'](db['VoiceRecording'][_0xbf7c('0x49')]);_0x3682d4['query']=_['keys'](_0x2b8712['query']);_0x3682d4['filters']=_['intersection'](_0x3682d4[_0xbf7c('0x34')],_0x3682d4[_0xbf7c('0x36')]);_0x1e3d51[_0xbf7c('0x3a')]=_['intersection'](_0x3682d4[_0xbf7c('0x34')],qs[_0xbf7c('0x3b')](_0x2b8712[_0xbf7c('0x36')][_0xbf7c('0x3b')]));_0x1e3d51['attributes']=_0x1e3d51[_0xbf7c('0x3a')][_0xbf7c('0x3c')]?_0x1e3d51[_0xbf7c('0x3a')]:_0x3682d4[_0xbf7c('0x34')];if(_0x2b8712['query'][_0xbf7c('0x4a')]){_0x1e3d51[_0xbf7c('0x4b')]=[{'all':!![]}];}_0x1e3d51=_[_0xbf7c('0x42')]({},_0x1e3d51,_0x2b8712[_0xbf7c('0x4c')]);return db['VoiceRecording'][_0xbf7c('0x4d')](_0x1e3d51)['then'](handleEntityNotFound(_0xcd6dce,null))['then'](respondWithResult(_0xcd6dce,null))['catch'](handleError(_0xcd6dce,null));};exports['create']=function(_0x75567a,_0x2fd9d2){return db[_0xbf7c('0x30')]['create'](_0x75567a[_0xbf7c('0x4e')],{})['then'](respondWithResult(_0x2fd9d2,0xc9))['catch'](handleError(_0x2fd9d2,null));};exports[_0xbf7c('0x29')]=function(_0x59f66b,_0x4c6cd7){if(_0x59f66b[_0xbf7c('0x4e')]['id']){delete _0x59f66b['body']['id'];}return db[_0xbf7c('0x30')][_0xbf7c('0x4d')]({'where':{'id':_0x59f66b[_0xbf7c('0x48')]['id']}})[_0xbf7c('0x2a')](handleEntityNotFound(_0x4c6cd7,null))[_0xbf7c('0x2a')](saveUpdates(_0x59f66b['body'],null))['then'](respondWithResult(_0x4c6cd7,null))[_0xbf7c('0x46')](handleError(_0x4c6cd7,null));};exports['describe']=function(_0x40f62e,_0x5a5fdf){return db[_0xbf7c('0x30')]['describe']()[_0xbf7c('0x2a')](respondWithResult(_0x5a5fdf,null))[_0xbf7c('0x46')](handleError(_0x5a5fdf,null));};exports[_0xbf7c('0x4f')]=function(_0x1c2f3f,_0x1df494,_0x4649c9){var _0x1b26a9=require('../../components/encryptor');var _0x5a7bc3=![];var _0x202d0e={};if(_0x1c2f3f[_0xbf7c('0x36')][_0xbf7c('0x32')]&&_0x1c2f3f[_0xbf7c('0x36')]['type']===_0xbf7c('0x50')){_0x202d0e[_0xbf7c('0x50')]=_0x1c2f3f['params']['id'];}else{_0x202d0e['id']=_0x1c2f3f[_0xbf7c('0x48')]['id'];}return db[_0xbf7c('0x30')][_0xbf7c('0x4d')]({'where':_0x202d0e,'attributes':['id',_0xbf7c('0x51')],'raw':!![]})[_0xbf7c('0x2a')](handleEntityNotFound(_0x1df494,null))[_0xbf7c('0x2a')](function(_0x5e089e){if(_0x5e089e){var _0x43161f=_0x5e089e[_0xbf7c('0x51')];var _0x11ae5b=util['format'](_0xbf7c('0x52'),_0x43161f);if(fs[_0xbf7c('0x53')](_0x11ae5b)){_0x5a7bc3=!![];return _0x1b26a9[_0xbf7c('0x54')](_0x11ae5b,_0x43161f,config['secrets'][_0xbf7c('0x55')])[_0xbf7c('0x2a')](function(){return _0x5e089e;});}return _0x5e089e;}})[_0xbf7c('0x2a')](function(_0x283ae7){if(_0x283ae7){var _0x4baab5=_0x283ae7['value'];if(!fs['existsSync'](_0x4baab5)){throw new db['Sequelize'][(_0xbf7c('0x56'))](_0xbf7c('0x57'));}if(_0x283ae7[_0xbf7c('0x58')]){return _0x1df494[_0xbf7c('0x4f')](_0x4baab5,_0x283ae7[_0xbf7c('0x58')]+path[_0xbf7c('0x59')](_0x4baab5),function(){if(_0x5a7bc3){fs['unlink'](_0x4baab5);}});}else{return _0x1df494['download'](_0x4baab5,function(_0x406fba){if(_0x5a7bc3){fs[_0xbf7c('0x5a')](_0x4baab5);}});}}})[_0xbf7c('0x46')](function(_0x52bfa2){if(_0x52bfa2[_0xbf7c('0x5b')]==='VoiceRecording\x20not\x20found'){_0x1df494[_0xbf7c('0x1e')](0x194)[_0xbf7c('0x2e')](_0xbf7c('0x5c'));}else{return handleError(_0x1df494,null);}});};exports[_0xbf7c('0x5d')]=function(_0x4cb399,_0x56cfcd,_0x385e8e){var _0xd177d0=require(_0xbf7c('0x5e'));var _0x105f31=![];var _0x40f15d={'$and':[db[_0xbf7c('0x5f')][_0xbf7c('0x3f')](db[_0xbf7c('0x5f')]['fn'](_0xbf7c('0x60'),db['sequelize'][_0xbf7c('0x61')](_0xbf7c('0x50'))),_0x4cb399[_0xbf7c('0x36')][_0xbf7c('0x62')])]};if(_0x4cb399[_0xbf7c('0x36')][_0xbf7c('0x32')]&&_0x4cb399[_0xbf7c('0x36')][_0xbf7c('0x32')]===_0xbf7c('0x50')){_0x40f15d[_0xbf7c('0x63')]['push']({'uniqueid':_0x4cb399['params']['id']});}else{_0x40f15d[_0xbf7c('0x63')][_0xbf7c('0x64')]({'id':_0x4cb399['params']['id']});}return db[_0xbf7c('0x30')]['find']({'where':_0x40f15d,'attributes':['id',_0xbf7c('0x51')],'raw':!![]})['then'](handleEntityNotFound(_0x56cfcd,null))[_0xbf7c('0x2a')](function(_0x14fcae){if(_0x14fcae){var _0x1473ca=util[_0xbf7c('0x65')](_0xbf7c('0x52'),_0x14fcae[_0xbf7c('0x51')]);if(fs[_0xbf7c('0x53')](_0x1473ca)){_0x105f31=!![];return _0xd177d0[_0xbf7c('0x54')](_0x1473ca,_0x14fcae['value'],config['secrets'][_0xbf7c('0x55')])[_0xbf7c('0x2a')](function(){return _0x14fcae;});}return _0x14fcae;}})[_0xbf7c('0x2a')](function(_0x420c07){if(_0x420c07){if(!fs[_0xbf7c('0x53')](_0x420c07['value'])){throw new db[(_0xbf7c('0x66'))]['ValidationError'](_0xbf7c('0x57'));}if(_0x420c07['filename']){return _0x56cfcd[_0xbf7c('0x4f')](_0x420c07[_0xbf7c('0x51')],_0x420c07[_0xbf7c('0x58')]+path[_0xbf7c('0x59')](_0x420c07[_0xbf7c('0x51')]),function(){if(_0x105f31){fs[_0xbf7c('0x5a')](_0x420c07[_0xbf7c('0x51')]);}});}else{return _0x56cfcd['download'](_0x420c07[_0xbf7c('0x51')],function(_0x1eef74){if(_0x105f31){fs['unlink'](_0x420c07[_0xbf7c('0x51')]);}});}}})[_0xbf7c('0x46')](handleError(_0x56cfcd,null));};exports[_0xbf7c('0x67')]=function(_0x504518,_0x2bb22d){return db[_0xbf7c('0x30')]['find']({'where':{'id':_0x504518[_0xbf7c('0x48')]['id']}})['then'](function(_0x2a051a){if(_['isNil'](_0x2a051a)){throw new ReferenceError(_0xbf7c('0x68'));}return _0x2a051a;})[_0xbf7c('0x2a')](function(_0x537962){var _0x53f1bb=_0x537962['value'];logger[_0xbf7c('0x69')](_0xbf7c('0x6a'),_0x53f1bb);if(!_[_0xbf7c('0x6b')](_0x537962['value'])&&fs['existsSync'](_0x53f1bb)){logger[_0xbf7c('0x69')]('File:\x20\x22'+_0x53f1bb+_0xbf7c('0x6c'));fs[_0xbf7c('0x6d')](_0x53f1bb);}_0x53f1bb=_0x53f1bb+'.cypher';if(!_['isNil'](_0x537962['value'])&&fs[_0xbf7c('0x53')](_0x53f1bb)){logger[_0xbf7c('0x69')](_0xbf7c('0x6e')+_0x53f1bb+_0xbf7c('0x6c'));fs[_0xbf7c('0x6d')](_0x53f1bb);}return _0x537962;})['then'](function(_0x4eed0d){if(!_0x4eed0d)throw new InternalError();return _0x4eed0d['destroy']();})[_0xbf7c('0x2a')](function(){_0x2bb22d['status'](0xcc)[_0xbf7c('0x1f')]();})[_0xbf7c('0x46')](handleError(_0x2bb22d,null));};function getBucketslist(_0x320af9,_0x367284,_0x4da5e0){return new Promise(function(_0x4d557f,_0x38892d){var _0x3ee40b=new AWS['S3']({'accessKeyId':_0x367284,'secretAccessKey':_0x320af9,'region':_0x4da5e0});_0x3ee40b['listBuckets']({},function(_0x183abf,_0x3671c0){if(_0x183abf){return _0x38892d(_0x183abf);}else{return _0x4d557f(_0x3671c0);}});});}function createBucket(_0x58e55d,_0x423bd3,_0x1eb2fc,_0x1da259){return new Promise(function(_0x1518f7,_0x1b2a79){var _0x2ce534=new AWS['S3']({'accessKeyId':_0x423bd3,'secretAccessKey':_0x58e55d,'region':_0x1eb2fc});_0x2ce534['createBucket']({'Bucket':_0x1da259},function(_0x365ada,_0x581c7c){if(_0x365ada){return _0x1b2a79(_0x365ada);}else{return _0x1518f7(_0x581c7c);}});});}function uploadFile(_0x52a565,_0x1d2972,_0x4cf64e,_0x1a9c81,_0x3b17b4,_0x5e15c2){return new Promise(function(_0x178c92,_0x4489b6){var _0x51ba1a=new AWS['S3']({'accessKeyId':_0x1d2972,'secretAccessKey':_0x52a565,'region':_0x4cf64e});_0x51ba1a[_0xbf7c('0x6f')]({'Bucket':_0x1a9c81,'Key':_0x3b17b4,'Body':_0x5e15c2},function(_0x4c2c66,_0x4e31c3){if(_0x4c2c66){return _0x4489b6(_0x4c2c66);}else{return _0x178c92(_0x4e31c3);}});});}function startTranscribe(_0x1c983d,_0x4c76dc,_0xdace19,_0x3908d0,_0x334fd0,_0xdf89a7){return new Promise(function(_0x440bb2,_0x16011d){var _0xeec48=new AWS[(_0xbf7c('0x70'))]({'accessKeyId':_0x4c76dc,'secretAccessKey':_0x1c983d,'region':_0xdace19});_0xeec48['startTranscriptionJob']({'TranscriptionJobName':_0x3908d0,'LanguageCode':_0x334fd0,'Media':{'MediaFileUri':_0xdf89a7}},function(_0x824080,_0xf950db){if(_0x824080){return _0x16011d(_0x824080);}else{return _0x440bb2(_0xf950db);}});});}function transcribe(_0x33c75c,_0x2c4d7b,_0x533f1c,_0x393e6c,_0x189985,_0x5ecada,_0x428da2){return new Promise(function(_0x2248e1,_0x448f44){var _0x3b7748={};logger[_0xbf7c('0x69')](util[_0xbf7c('0x65')](_0xbf7c('0x71'),_0x33c75c,_0x189985));return uploadFile(_0x2c4d7b,_0x533f1c,_0x393e6c,_0x189985,path[_0xbf7c('0x72')](_0x5ecada),fs['readFileSync'](_0x5ecada))[_0xbf7c('0x2a')](function(_0x580257){logger[_0xbf7c('0x69')](util['format'](_0xbf7c('0x73'),_0x33c75c,_0x189985,_0x580257[_0xbf7c('0x74')]));_0x3b7748[_0xbf7c('0x75')]=_0x580257[_0xbf7c('0x76')];_0x3b7748[_0xbf7c('0x77')]=_0x580257[_0xbf7c('0x74')];logger['info'](util[_0xbf7c('0x65')](_0xbf7c('0x78'),_0x33c75c));return startTranscribe(_0x2c4d7b,_0x533f1c,_0x393e6c,uuidv4(),_0x428da2,_0x580257[_0xbf7c('0x74')]);})[_0xbf7c('0x2a')](function(_0x1018ec){logger[_0xbf7c('0x69')](util[_0xbf7c('0x65')](_0xbf7c('0x79'),_0x33c75c,_0x1018ec['TranscriptionJob'][_0xbf7c('0x7a')]));_0x3b7748[_0xbf7c('0x7b')]=_0x1018ec['TranscriptionJob'][_0xbf7c('0x7a')];_0x3b7748['transcribeStatus']=_0x1018ec[_0xbf7c('0x7c')]['TranscriptionJobStatus'];return _0x2248e1(_0x3b7748);})['catch'](function(_0x30f477){return _0x448f44(_0x30f477);});});}exports[_0xbf7c('0x7d')]=function(_0x195b6e,_0x32abf1,_0x4887cc){var _0x2c79c7;var _0x1d4205;var _0x50c9a4;var _0x3b1a81=require('../../components/encryptor');return db['VoiceRecording'][_0xbf7c('0x7e')]({'where':{'id':_0x195b6e['params']['id']}})[_0xbf7c('0x2a')](function(_0x2855db){if(_0x2855db){var _0x38fb60=util[_0xbf7c('0x65')](_0xbf7c('0x52'),_0x2855db['value']);if(fs[_0xbf7c('0x53')](_0x38fb60)){cypher=!![];return _0x3b1a81['decryptFile'](_0x38fb60,_0x2855db[_0xbf7c('0x51')],config[_0xbf7c('0x7f')]['recording'])[_0xbf7c('0x2a')](function(){return _0x2855db;});}return _0x2855db;}})[_0xbf7c('0x2a')](function(_0x3a86df){if(!_0x3a86df){throw new db['Sequelize'][(_0xbf7c('0x56'))](_0xbf7c('0x80'));}_0x1d4205=_0x3a86df;return db['Setting'][_0xbf7c('0x7e')]({'where':{'id':0x1}});})[_0xbf7c('0x2a')](handleEntityNotFound(_0x32abf1,null))[_0xbf7c('0x2a')](function(_0x4c60f6){if(_0x4c60f6){_0x2c79c7=_0x4c60f6;if(!_0x2c79c7[_0xbf7c('0x81')]||!_0x2c79c7['transcribeAccountId']||!_0x2c79c7[_0xbf7c('0x82')]||!_0x2c79c7[_0xbf7c('0x83')]||!_0x2c79c7[_0xbf7c('0x75')]){throw new db[(_0xbf7c('0x66'))][(_0xbf7c('0x56'))](_0xbf7c('0x84'));}if(_0x195b6e[_0xbf7c('0x4e')][_0xbf7c('0x85')]&&(!_0x2c79c7['sentiment']||!_0x2c79c7[_0xbf7c('0x86')]||!_0x2c79c7[_0xbf7c('0x87')]||!_0x2c79c7[_0xbf7c('0x83')]||!_0x2c79c7[_0xbf7c('0x75')])){throw new db[(_0xbf7c('0x66'))][(_0xbf7c('0x56'))](_0xbf7c('0x88'));}return db[_0xbf7c('0x89')][_0xbf7c('0x7e')]({'where':{'id':_0x2c79c7['transcribeAccountId']}});}})[_0xbf7c('0x2a')](function(_0x5b5d24){if(!_0x5b5d24){throw new db['Sequelize']['ValidationError'](_0xbf7c('0x8a'));}if(!_0x5b5d24['data1']||!_0x5b5d24[_0xbf7c('0x8b')]){throw new db[(_0xbf7c('0x66'))][(_0xbf7c('0x56'))](_0xbf7c('0x8c'));}_0x50c9a4=_0x5b5d24;return getBucketslist(_0x50c9a4[_0xbf7c('0x8d')],_0x50c9a4[_0xbf7c('0x8b')],_0x2c79c7[_0xbf7c('0x82')]);})[_0xbf7c('0x2a')](function(_0x4c3cb1){if(_0x4c3cb1&&_0x4c3cb1[_0xbf7c('0x8e')]){var _0x2d3fa2=_['find'](_0x4c3cb1[_0xbf7c('0x8e')],function(_0x51e9ab){return _0x51e9ab[_0xbf7c('0x8f')]===_0x2c79c7['bucket'];});if(!_0x2d3fa2){logger['info'](util['format'](_0xbf7c('0x90'),_0x195b6e[_0xbf7c('0x48')]['id'],_0x2c79c7['bucket']));return createBucket(_0x50c9a4['data1'],_0x50c9a4[_0xbf7c('0x8b')],_0x2c79c7[_0xbf7c('0x82')],_0x2c79c7[_0xbf7c('0x75')]);}logger['info'](util[_0xbf7c('0x65')](_0xbf7c('0x91'),_0x195b6e[_0xbf7c('0x48')]['id'],_0x2c79c7['bucket']));return;}})['then'](function(_0x503783){if(_0x1d4205[_0xbf7c('0x92')]==='NEW'){return transcribe(_0x195b6e[_0xbf7c('0x48')]['id'],_0x50c9a4[_0xbf7c('0x8d')],_0x50c9a4[_0xbf7c('0x8b')],_0x2c79c7[_0xbf7c('0x82')],_0x2c79c7[_0xbf7c('0x75')],_0x1d4205[_0xbf7c('0x51')],_0x2c79c7[_0xbf7c('0x83')]);}else{logger[_0xbf7c('0x69')](util[_0xbf7c('0x65')](_0xbf7c('0x93'),_0x195b6e[_0xbf7c('0x48')]['id']));return{'transcribeStatus':_0xbf7c('0x94')};}})[_0xbf7c('0x2a')](function(_0x4d6411){if(_0x4d6411){_0x4d6411['tempSentiment']=_0x195b6e['body'][_0xbf7c('0x85')];return _0x1d4205['updateAttributes'](_0x4d6411);}})[_0xbf7c('0x2a')](respondWithResult(_0x32abf1,null))[_0xbf7c('0x46')](handleError(_0x32abf1,null));};function writeFile(_0x5c6bcb,_0x87920f){return new Promise(function(_0x38b5fd,_0x342ee7){fs['writeFile'](_0x87920f,_0x5c6bcb,function(_0x376191,_0x198a62){if(_0x376191){return _0x342ee7(_0x376191);}else{return _0x38b5fd(_0x198a62);}});});}exports[_0xbf7c('0x95')]=function(_0x53f8d6,_0x95d0f3,_0x38def8){return db[_0xbf7c('0x30')][_0xbf7c('0x7e')]({'where':{'id':_0x53f8d6[_0xbf7c('0x48')]['id']}})[_0xbf7c('0x2a')](handleEntityNotFound(_0x95d0f3))[_0xbf7c('0x2a')](function(_0x5716f9){if(_0x5716f9&&_0x5716f9[_0xbf7c('0x96')]){var _0x4427bb=_0x5716f9[_0xbf7c('0x96')];var _0x24f63b=config[_0xbf7c('0x97')]+_0xbf7c('0x98')+_0x5716f9['id']+_0xbf7c('0x99');if(fs[_0xbf7c('0x53')](_0x24f63b)){return _0x24f63b;}return writeFile(_0x4427bb,_0x24f63b)[_0xbf7c('0x2a')](function(){return _0x24f63b;});}else{throw new db[(_0xbf7c('0x66'))]['ValidationError']('Transcript\x20not\x20available');}})['then'](function(_0x692a9d){return _0x95d0f3[_0xbf7c('0x4f')](_0x692a9d);})[_0xbf7c('0x46')](handleError(_0x95d0f3));};
\ No newline at end of file
+var _0x3efe=['show','params','find','create','body','update','describe','download','uniqueid','value','%s.cypher','existsSync','decryptFile','secrets','recording','Sequelize','ValidationError','VoiceRecording\x20not\x20found','filename','unlink','message','Not\x20found','downloads','sequelize','MD5','token','$and','push','extname','isNil','Entity\x20not\x20found','cancellazione\x20fisica\x20documento\x20%s','File:\x20\x22','unlinkSync','.cypher','info','listBuckets','createBucket','TranscribeService','startTranscriptionJob','[RUNTRANSCRIPT][%d]\x20Starting\x20voice\x20recording\x20upload\x20in\x20bucket\x20%s','basename','[RUNTRANSCRIPT][%d]\x20Voice\x20recording\x20uploaded\x20in\x20bucket\x20%s\x20(%s)','bucket','Bucket','location','Location','[RUNTRANSCRIPT][%d]\x20Sending\x20transcribe\x20request','[RUNTRANSCRIPT][%d]\x20Transcription\x20job\x20%s\x20created','TranscriptionJob','TranscriptionJobName','transcribeName','transcribeStatus','TranscriptionJobStatus','runTranscribe','../../components/encryptor','Voice\x20Recording\x20not\x20found','findOne','transcribeAccountId','transcribeRegion','language','Transcribe\x20not\x20configured','sentiment','sentimentAccountId','sentimentRegion','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','runSentiment','updateAttributes','writeFile','fileText','/server/files/transcribes/transcribe_','.txt','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','ejs','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','aws-sdk','uuid/v4','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','destroy','stack','name','send','index','map','VoiceRecording','rawAttributes','type','key','differenceBy','format','query','keys','filters','intersection','attributes','model','fields','hasOwnProperty','nolimit','order','sort','pick','filter','where','VIRTUAL','merge','options','includeAll','include','rows','catch'];(function(_0x1c0991,_0x4f22d2){var _0x5034de=function(_0x520f49){while(--_0x520f49){_0x1c0991['push'](_0x1c0991['shift']());}};_0x5034de(++_0x4f22d2);}(_0x3efe,0x191));var _0xe3ef=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0x3efe[_0x4b369d];return _0x571a98;};'use strict';var emlformat=require(_0xe3ef('0x0'));var rimraf=require(_0xe3ef('0x1'));var zipdir=require(_0xe3ef('0x2'));var jsonpatch=require(_0xe3ef('0x3'));var rp=require(_0xe3ef('0x4'));var moment=require('moment');var BPromise=require(_0xe3ef('0x5'));var Mustache=require('mustache');var util=require(_0xe3ef('0x6'));var path=require(_0xe3ef('0x7'));var sox=require(_0xe3ef('0x8'));var csv=require('to-csv');var ejs=require(_0xe3ef('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xe3ef('0xa'));var crypto=require(_0xe3ef('0xb'));var jsforce=require(_0xe3ef('0xc'));var deskjs=require(_0xe3ef('0xd'));var toCsv=require(_0xe3ef('0xe'));var querystring=require(_0xe3ef('0xf'));var Papa=require(_0xe3ef('0x10'));var AWS=require(_0xe3ef('0x11'));var uuidv4=require(_0xe3ef('0x12'));var Redis=require(_0xe3ef('0x13'));var authService=require(_0xe3ef('0x14'));var qs=require(_0xe3ef('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xe3ef('0x16'));var logger=require(_0xe3ef('0x17'))(_0xe3ef('0x18'));var utils=require(_0xe3ef('0x19'));var config=require(_0xe3ef('0x1a'));var licenseUtil=require(_0xe3ef('0x1b'));var db=require(_0xe3ef('0x1c'))['db'];function respondWithStatusCode(_0x36617e,_0x43ff56){_0x43ff56=_0x43ff56||0xcc;return function(_0x4cdc82){if(_0x4cdc82){return _0x36617e[_0xe3ef('0x1d')](_0x43ff56);}return _0x36617e[_0xe3ef('0x1e')](_0x43ff56)[_0xe3ef('0x1f')]();};}function respondWithResult(_0x293bf4,_0x21fe92){_0x21fe92=_0x21fe92||0xc8;return function(_0x324382){if(_0x324382){return _0x293bf4['status'](_0x21fe92)[_0xe3ef('0x20')](_0x324382);}};}function respondWithFilteredResult(_0x461102,_0x490cc4){return function(_0xceebe6){if(_0xceebe6){var _0x557328=typeof _0x490cc4[_0xe3ef('0x21')]===_0xe3ef('0x22')&&typeof _0x490cc4[_0xe3ef('0x23')]===_0xe3ef('0x22');var _0x20d3a7=_0xceebe6[_0xe3ef('0x24')];var _0x5b2916=_0x557328?0x0:_0x490cc4[_0xe3ef('0x21')];var _0x303d32=_0x557328?_0xceebe6['count']:_0x490cc4[_0xe3ef('0x21')]+_0x490cc4[_0xe3ef('0x23')];var _0xcbe0b6;if(_0x303d32>=_0x20d3a7){_0x303d32=_0x20d3a7;_0xcbe0b6=0xc8;}else{_0xcbe0b6=0xce;}_0x461102[_0xe3ef('0x1e')](_0xcbe0b6);return _0x461102[_0xe3ef('0x25')](_0xe3ef('0x26'),_0x5b2916+'-'+_0x303d32+'/'+_0x20d3a7)[_0xe3ef('0x20')](_0xceebe6);}return null;};}function patchUpdates(_0x24fc24){return function(_0x54a287){try{jsonpatch[_0xe3ef('0x27')](_0x54a287,_0x24fc24,!![]);}catch(_0x536961){return BPromise[_0xe3ef('0x28')](_0x536961);}return _0x54a287[_0xe3ef('0x29')]();};}function saveUpdates(_0x1413f0,_0x231161){return function(_0x4e6b2c){if(_0x4e6b2c){return _0x4e6b2c['update'](_0x1413f0)[_0xe3ef('0x2a')](function(_0x25f5c3){return _0x25f5c3;});}return null;};}function removeEntity(_0x1bae5c,_0x1a2cb3){return function(_0x3c2878){if(_0x3c2878){return _0x3c2878[_0xe3ef('0x2b')]()[_0xe3ef('0x2a')](function(){_0x1bae5c[_0xe3ef('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0xd56a4,_0x51bfcd){return function(_0x4706d4){if(!_0x4706d4){_0xd56a4[_0xe3ef('0x1d')](0x194);}return _0x4706d4;};}function handleError(_0x50892e,_0x3cdc7a){_0x3cdc7a=_0x3cdc7a||0x1f4;return function(_0x3c3590){logger['error'](_0x3c3590[_0xe3ef('0x2c')]);if(_0x3c3590[_0xe3ef('0x2d')]){delete _0x3c3590['name'];}_0x50892e[_0xe3ef('0x1e')](_0x3cdc7a)[_0xe3ef('0x2e')](_0x3c3590);};}exports[_0xe3ef('0x2f')]=function(_0x3a51f7,_0xbcb16e){var _0x17b3be={},_0x23ffd8={},_0x55795f={'count':0x0,'rows':[]};var _0x511507=_[_0xe3ef('0x30')](db[_0xe3ef('0x31')][_0xe3ef('0x32')],function(_0x1f01cd){return{'name':_0x1f01cd['fieldName'],'type':_0x1f01cd[_0xe3ef('0x33')][_0xe3ef('0x34')]};});_0x23ffd8['model']=_[_0xe3ef('0x35')](_[_0xe3ef('0x30')](_0x511507,_0xe3ef('0x2d')),[_0xe3ef('0x36')]);_0x23ffd8[_0xe3ef('0x37')]=_[_0xe3ef('0x38')](_0x3a51f7[_0xe3ef('0x37')]);_0x23ffd8[_0xe3ef('0x39')]=_[_0xe3ef('0x3a')](_0x23ffd8['model'],_0x23ffd8[_0xe3ef('0x37')]);_0x17b3be[_0xe3ef('0x3b')]=_[_0xe3ef('0x3a')](_0x23ffd8[_0xe3ef('0x3c')],qs[_0xe3ef('0x3d')](_0x3a51f7[_0xe3ef('0x37')][_0xe3ef('0x3d')]));_0x17b3be[_0xe3ef('0x3b')]=_0x17b3be['attributes']['length']?_0x17b3be['attributes']:_0x23ffd8[_0xe3ef('0x3c')];if(!_0x3a51f7[_0xe3ef('0x37')][_0xe3ef('0x3e')](_0xe3ef('0x3f'))){_0x17b3be[_0xe3ef('0x23')]=qs[_0xe3ef('0x23')](_0x3a51f7['query'][_0xe3ef('0x23')]);_0x17b3be[_0xe3ef('0x21')]=qs[_0xe3ef('0x21')](_0x3a51f7[_0xe3ef('0x37')][_0xe3ef('0x21')]);}_0x17b3be[_0xe3ef('0x40')]=qs[_0xe3ef('0x41')](_0x3a51f7[_0xe3ef('0x37')]['sort']);_0x17b3be['where']=qs[_0xe3ef('0x39')](_[_0xe3ef('0x42')](_0x3a51f7[_0xe3ef('0x37')],_0x23ffd8[_0xe3ef('0x39')]),_0x511507);if(_0x3a51f7['query'][_0xe3ef('0x43')]){_0x17b3be['where']=_['merge'](_0x17b3be[_0xe3ef('0x44')],{'$or':_['map'](_0x511507,function(_0x5cc14e){if(_0x5cc14e[_0xe3ef('0x33')]!==_0xe3ef('0x45')){var _0x2bf16c={};_0x2bf16c[_0x5cc14e[_0xe3ef('0x2d')]]={'$like':'%'+_0x3a51f7['query'][_0xe3ef('0x43')]+'%'};return _0x2bf16c;}})});}_0x17b3be=_[_0xe3ef('0x46')]({},_0x17b3be,_0x3a51f7[_0xe3ef('0x47')]);var _0x476b41={'where':_0x17b3be[_0xe3ef('0x44')]};return db[_0xe3ef('0x31')][_0xe3ef('0x24')](_0x476b41)[_0xe3ef('0x2a')](function(_0x278e42){_0x55795f[_0xe3ef('0x24')]=_0x278e42;if(_0x3a51f7[_0xe3ef('0x37')][_0xe3ef('0x48')]){_0x17b3be[_0xe3ef('0x49')]=[{'all':!![]}];}return db[_0xe3ef('0x31')]['findAll'](_0x17b3be);})[_0xe3ef('0x2a')](function(_0x288c3e){_0x55795f[_0xe3ef('0x4a')]=_0x288c3e;return _0x55795f;})[_0xe3ef('0x2a')](respondWithFilteredResult(_0xbcb16e,_0x17b3be))[_0xe3ef('0x4b')](handleError(_0xbcb16e,null));};exports[_0xe3ef('0x4c')]=function(_0x3b0c47,_0x7af482){var _0x4835cb={'raw':![],'where':{'id':_0x3b0c47[_0xe3ef('0x4d')]['id']}},_0x46e42d={};_0x46e42d[_0xe3ef('0x3c')]=_['keys'](db[_0xe3ef('0x31')][_0xe3ef('0x32')]);_0x46e42d['query']=_[_0xe3ef('0x38')](_0x3b0c47[_0xe3ef('0x37')]);_0x46e42d[_0xe3ef('0x39')]=_['intersection'](_0x46e42d[_0xe3ef('0x3c')],_0x46e42d['query']);_0x4835cb[_0xe3ef('0x3b')]=_[_0xe3ef('0x3a')](_0x46e42d[_0xe3ef('0x3c')],qs[_0xe3ef('0x3d')](_0x3b0c47[_0xe3ef('0x37')][_0xe3ef('0x3d')]));_0x4835cb[_0xe3ef('0x3b')]=_0x4835cb[_0xe3ef('0x3b')]['length']?_0x4835cb[_0xe3ef('0x3b')]:_0x46e42d['model'];if(_0x3b0c47[_0xe3ef('0x37')][_0xe3ef('0x48')]){_0x4835cb[_0xe3ef('0x49')]=[{'all':!![]}];}_0x4835cb=_[_0xe3ef('0x46')]({},_0x4835cb,_0x3b0c47[_0xe3ef('0x47')]);return db['VoiceRecording'][_0xe3ef('0x4e')](_0x4835cb)[_0xe3ef('0x2a')](handleEntityNotFound(_0x7af482,null))[_0xe3ef('0x2a')](respondWithResult(_0x7af482,null))['catch'](handleError(_0x7af482,null));};exports[_0xe3ef('0x4f')]=function(_0x4eed82,_0x1e2f16){return db[_0xe3ef('0x31')]['create'](_0x4eed82[_0xe3ef('0x50')],{})[_0xe3ef('0x2a')](respondWithResult(_0x1e2f16,0xc9))[_0xe3ef('0x4b')](handleError(_0x1e2f16,null));};exports[_0xe3ef('0x51')]=function(_0x20d541,_0x173323){if(_0x20d541[_0xe3ef('0x50')]['id']){delete _0x20d541['body']['id'];}return db[_0xe3ef('0x31')][_0xe3ef('0x4e')]({'where':{'id':_0x20d541[_0xe3ef('0x4d')]['id']}})[_0xe3ef('0x2a')](handleEntityNotFound(_0x173323,null))[_0xe3ef('0x2a')](saveUpdates(_0x20d541[_0xe3ef('0x50')],null))[_0xe3ef('0x2a')](respondWithResult(_0x173323,null))['catch'](handleError(_0x173323,null));};exports['describe']=function(_0x59b73b,_0x344ed2){return db[_0xe3ef('0x31')][_0xe3ef('0x52')]()[_0xe3ef('0x2a')](respondWithResult(_0x344ed2,null))[_0xe3ef('0x4b')](handleError(_0x344ed2,null));};exports[_0xe3ef('0x53')]=function(_0x1f6ec7,_0x4db3c4,_0x68788a){var _0x50e449=require('../../components/encryptor');var _0x37e4f7=![];var _0x1cb7c1={};if(_0x1f6ec7[_0xe3ef('0x37')]['type']&&_0x1f6ec7[_0xe3ef('0x37')][_0xe3ef('0x33')]===_0xe3ef('0x54')){_0x1cb7c1[_0xe3ef('0x54')]=_0x1f6ec7['params']['id'];}else{_0x1cb7c1['id']=_0x1f6ec7[_0xe3ef('0x4d')]['id'];}return db[_0xe3ef('0x31')][_0xe3ef('0x4e')]({'where':_0x1cb7c1,'attributes':['id','value'],'raw':!![]})[_0xe3ef('0x2a')](handleEntityNotFound(_0x4db3c4,null))[_0xe3ef('0x2a')](function(_0x5b2c74){if(_0x5b2c74){var _0x2ec1ab=_0x5b2c74[_0xe3ef('0x55')];var _0x1008a3=util['format'](_0xe3ef('0x56'),_0x2ec1ab);if(fs[_0xe3ef('0x57')](_0x1008a3)){_0x37e4f7=!![];return _0x50e449[_0xe3ef('0x58')](_0x1008a3,_0x2ec1ab,config[_0xe3ef('0x59')][_0xe3ef('0x5a')])[_0xe3ef('0x2a')](function(){return _0x5b2c74;});}return _0x5b2c74;}})[_0xe3ef('0x2a')](function(_0x59530b){if(_0x59530b){var _0x190b22=_0x59530b['value'];if(!fs['existsSync'](_0x190b22)){throw new db[(_0xe3ef('0x5b'))][(_0xe3ef('0x5c'))](_0xe3ef('0x5d'));}if(_0x59530b[_0xe3ef('0x5e')]){return _0x4db3c4[_0xe3ef('0x53')](_0x190b22,_0x59530b['filename']+path['extname'](_0x190b22),function(){if(_0x37e4f7){fs[_0xe3ef('0x5f')](_0x190b22);}});}else{return _0x4db3c4[_0xe3ef('0x53')](_0x190b22,function(_0x70361c){if(_0x37e4f7){fs[_0xe3ef('0x5f')](_0x190b22);}});}}})[_0xe3ef('0x4b')](function(_0x18d52e){if(_0x18d52e[_0xe3ef('0x60')]===_0xe3ef('0x5d')){_0x4db3c4[_0xe3ef('0x1e')](0x194)[_0xe3ef('0x2e')](_0xe3ef('0x61'));}else{return handleError(_0x4db3c4,null);}});};exports[_0xe3ef('0x62')]=function(_0x2b2792,_0x973b26,_0x2efe9c){var _0x4b9529=require('../../components/encryptor');var _0x172fab=![];var _0x5e0711={'$and':[db[_0xe3ef('0x63')][_0xe3ef('0x44')](db['sequelize']['fn'](_0xe3ef('0x64'),db[_0xe3ef('0x63')]['col'](_0xe3ef('0x54'))),_0x2b2792[_0xe3ef('0x37')][_0xe3ef('0x65')])]};if(_0x2b2792[_0xe3ef('0x37')]['type']&&_0x2b2792[_0xe3ef('0x37')][_0xe3ef('0x33')]===_0xe3ef('0x54')){_0x5e0711[_0xe3ef('0x66')][_0xe3ef('0x67')]({'uniqueid':_0x2b2792['params']['id']});}else{_0x5e0711[_0xe3ef('0x66')][_0xe3ef('0x67')]({'id':_0x2b2792[_0xe3ef('0x4d')]['id']});}return db[_0xe3ef('0x31')][_0xe3ef('0x4e')]({'where':_0x5e0711,'attributes':['id',_0xe3ef('0x55')],'raw':!![]})[_0xe3ef('0x2a')](handleEntityNotFound(_0x973b26,null))['then'](function(_0x34243d){if(_0x34243d){var _0x2b95f8=util['format'](_0xe3ef('0x56'),_0x34243d[_0xe3ef('0x55')]);if(fs[_0xe3ef('0x57')](_0x2b95f8)){_0x172fab=!![];return _0x4b9529[_0xe3ef('0x58')](_0x2b95f8,_0x34243d[_0xe3ef('0x55')],config[_0xe3ef('0x59')][_0xe3ef('0x5a')])[_0xe3ef('0x2a')](function(){return _0x34243d;});}return _0x34243d;}})[_0xe3ef('0x2a')](function(_0x2ea32d){if(_0x2ea32d){if(!fs['existsSync'](_0x2ea32d['value'])){throw new db[(_0xe3ef('0x5b'))]['ValidationError']('VoiceRecording\x20not\x20found');}if(_0x2ea32d[_0xe3ef('0x5e')]){return _0x973b26[_0xe3ef('0x53')](_0x2ea32d[_0xe3ef('0x55')],_0x2ea32d[_0xe3ef('0x5e')]+path[_0xe3ef('0x68')](_0x2ea32d['value']),function(){if(_0x172fab){fs[_0xe3ef('0x5f')](_0x2ea32d[_0xe3ef('0x55')]);}});}else{return _0x973b26[_0xe3ef('0x53')](_0x2ea32d[_0xe3ef('0x55')],function(_0x32127b){if(_0x172fab){fs[_0xe3ef('0x5f')](_0x2ea32d['value']);}});}}})['catch'](handleError(_0x973b26,null));};exports[_0xe3ef('0x2b')]=function(_0x38df30,_0x450369){return db[_0xe3ef('0x31')][_0xe3ef('0x4e')]({'where':{'id':_0x38df30[_0xe3ef('0x4d')]['id']}})[_0xe3ef('0x2a')](function(_0x28200c){if(_[_0xe3ef('0x69')](_0x28200c)){throw new ReferenceError(_0xe3ef('0x6a'));}return _0x28200c;})['then'](function(_0x4fc201){var _0x1b8faa=_0x4fc201['value'];logger['info'](_0xe3ef('0x6b'),_0x1b8faa);if(!_[_0xe3ef('0x69')](_0x4fc201[_0xe3ef('0x55')])&&fs['existsSync'](_0x1b8faa)){logger['info'](_0xe3ef('0x6c')+_0x1b8faa+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs[_0xe3ef('0x6d')](_0x1b8faa);}_0x1b8faa=_0x1b8faa+_0xe3ef('0x6e');if(!_['isNil'](_0x4fc201[_0xe3ef('0x55')])&&fs[_0xe3ef('0x57')](_0x1b8faa)){logger[_0xe3ef('0x6f')](_0xe3ef('0x6c')+_0x1b8faa+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs[_0xe3ef('0x6d')](_0x1b8faa);}return _0x4fc201;})[_0xe3ef('0x2a')](function(_0x23ca55){if(!_0x23ca55)throw new InternalError();return _0x23ca55['destroy']();})['then'](function(){_0x450369[_0xe3ef('0x1e')](0xcc)[_0xe3ef('0x1f')]();})[_0xe3ef('0x4b')](handleError(_0x450369,null));};function getBucketslist(_0x54d741,_0x117fd8,_0x20a618){return new Promise(function(_0x45f317,_0x2fb865){var _0x34ab03=new AWS['S3']({'accessKeyId':_0x117fd8,'secretAccessKey':_0x54d741,'region':_0x20a618});_0x34ab03[_0xe3ef('0x70')]({},function(_0x44cb6f,_0x29b7db){if(_0x44cb6f){return _0x2fb865(_0x44cb6f);}else{return _0x45f317(_0x29b7db);}});});}function createBucket(_0x1fb160,_0x22740c,_0x7621f6,_0x3c8249){return new Promise(function(_0x546629,_0x2d1e5e){var _0x9a149c=new AWS['S3']({'accessKeyId':_0x22740c,'secretAccessKey':_0x1fb160,'region':_0x7621f6});_0x9a149c[_0xe3ef('0x71')]({'Bucket':_0x3c8249},function(_0x25cab2,_0x39ef74){if(_0x25cab2){return _0x2d1e5e(_0x25cab2);}else{return _0x546629(_0x39ef74);}});});}function uploadFile(_0x1dba9b,_0x1a5b0b,_0x212a8e,_0x413ba8,_0x43c294,_0x339846){return new Promise(function(_0x493912,_0x461fad){var _0x303a43=new AWS['S3']({'accessKeyId':_0x1a5b0b,'secretAccessKey':_0x1dba9b,'region':_0x212a8e});_0x303a43['upload']({'Bucket':_0x413ba8,'Key':_0x43c294,'Body':_0x339846},function(_0x334c39,_0x3d11e0){if(_0x334c39){return _0x461fad(_0x334c39);}else{return _0x493912(_0x3d11e0);}});});}function startTranscribe(_0x5a0467,_0xaaf9de,_0x48aa3d,_0xb21610,_0x48578d,_0x5b80a6){return new Promise(function(_0x5dded6,_0x402dff){var _0x640fbc=new AWS[(_0xe3ef('0x72'))]({'accessKeyId':_0xaaf9de,'secretAccessKey':_0x5a0467,'region':_0x48aa3d});_0x640fbc[_0xe3ef('0x73')]({'TranscriptionJobName':_0xb21610,'LanguageCode':_0x48578d,'Media':{'MediaFileUri':_0x5b80a6}},function(_0x5ce7d7,_0x56e537){if(_0x5ce7d7){return _0x402dff(_0x5ce7d7);}else{return _0x5dded6(_0x56e537);}});});}function transcribe(_0x33eeea,_0x25cafd,_0xe3def0,_0x557269,_0x1cf5b7,_0x43c74a,_0x3fc66a){return new Promise(function(_0x15dec6,_0x49f606){var _0x18abb7={};logger[_0xe3ef('0x6f')](util[_0xe3ef('0x36')](_0xe3ef('0x74'),_0x33eeea,_0x1cf5b7));return uploadFile(_0x25cafd,_0xe3def0,_0x557269,_0x1cf5b7,path[_0xe3ef('0x75')](_0x43c74a),fs['readFileSync'](_0x43c74a))[_0xe3ef('0x2a')](function(_0x53dc30){logger[_0xe3ef('0x6f')](util[_0xe3ef('0x36')](_0xe3ef('0x76'),_0x33eeea,_0x1cf5b7,_0x53dc30['Location']));_0x18abb7[_0xe3ef('0x77')]=_0x53dc30[_0xe3ef('0x78')];_0x18abb7[_0xe3ef('0x79')]=_0x53dc30[_0xe3ef('0x7a')];logger[_0xe3ef('0x6f')](util[_0xe3ef('0x36')](_0xe3ef('0x7b'),_0x33eeea));return startTranscribe(_0x25cafd,_0xe3def0,_0x557269,uuidv4(),_0x3fc66a,_0x53dc30[_0xe3ef('0x7a')]);})[_0xe3ef('0x2a')](function(_0x5c72e4){logger[_0xe3ef('0x6f')](util[_0xe3ef('0x36')](_0xe3ef('0x7c'),_0x33eeea,_0x5c72e4[_0xe3ef('0x7d')][_0xe3ef('0x7e')]));_0x18abb7[_0xe3ef('0x7f')]=_0x5c72e4['TranscriptionJob'][_0xe3ef('0x7e')];_0x18abb7[_0xe3ef('0x80')]=_0x5c72e4[_0xe3ef('0x7d')][_0xe3ef('0x81')];return _0x15dec6(_0x18abb7);})['catch'](function(_0xf1f051){return _0x49f606(_0xf1f051);});});}exports[_0xe3ef('0x82')]=function(_0x511604,_0x420458,_0x35e8c4){var _0x417bc9;var _0x40d800;var _0x445097;var _0xb439b0=require(_0xe3ef('0x83'));return db[_0xe3ef('0x31')]['findOne']({'where':{'id':_0x511604[_0xe3ef('0x4d')]['id']}})[_0xe3ef('0x2a')](function(_0x37ca6c){if(_0x37ca6c){var _0x38e9f7=util['format']('%s.cypher',_0x37ca6c['value']);if(fs[_0xe3ef('0x57')](_0x38e9f7)){cypher=!![];return _0xb439b0[_0xe3ef('0x58')](_0x38e9f7,_0x37ca6c[_0xe3ef('0x55')],config[_0xe3ef('0x59')]['recording'])[_0xe3ef('0x2a')](function(){return _0x37ca6c;});}return _0x37ca6c;}})[_0xe3ef('0x2a')](function(_0x68aa70){if(!_0x68aa70){throw new db[(_0xe3ef('0x5b'))][(_0xe3ef('0x5c'))](_0xe3ef('0x84'));}_0x40d800=_0x68aa70;return db['Setting'][_0xe3ef('0x85')]({'where':{'id':0x1}});})[_0xe3ef('0x2a')](handleEntityNotFound(_0x420458,null))[_0xe3ef('0x2a')](function(_0x34f962){if(_0x34f962){_0x417bc9=_0x34f962;if(!_0x417bc9['transcribe']||!_0x417bc9[_0xe3ef('0x86')]||!_0x417bc9[_0xe3ef('0x87')]||!_0x417bc9[_0xe3ef('0x88')]||!_0x417bc9[_0xe3ef('0x77')]){throw new db[(_0xe3ef('0x5b'))][(_0xe3ef('0x5c'))](_0xe3ef('0x89'));}if(_0x511604[_0xe3ef('0x50')]['runSentiment']&&(!_0x417bc9[_0xe3ef('0x8a')]||!_0x417bc9[_0xe3ef('0x8b')]||!_0x417bc9[_0xe3ef('0x8c')]||!_0x417bc9[_0xe3ef('0x88')]||!_0x417bc9['bucket'])){throw new db[(_0xe3ef('0x5b'))][(_0xe3ef('0x5c'))](_0xe3ef('0x8d'));}return db[_0xe3ef('0x8e')]['findOne']({'where':{'id':_0x417bc9[_0xe3ef('0x86')]}});}})[_0xe3ef('0x2a')](function(_0x2f0b8e){if(!_0x2f0b8e){throw new db[(_0xe3ef('0x5b'))][(_0xe3ef('0x5c'))](_0xe3ef('0x8f'));}if(!_0x2f0b8e[_0xe3ef('0x90')]||!_0x2f0b8e[_0xe3ef('0x91')]){throw new db[(_0xe3ef('0x5b'))][(_0xe3ef('0x5c'))](_0xe3ef('0x92'));}_0x445097=_0x2f0b8e;return getBucketslist(_0x445097[_0xe3ef('0x90')],_0x445097[_0xe3ef('0x91')],_0x417bc9[_0xe3ef('0x87')]);})['then'](function(_0x72f559){if(_0x72f559&&_0x72f559[_0xe3ef('0x93')]){var _0x4bcbc6=_['find'](_0x72f559[_0xe3ef('0x93')],function(_0x1493fe){return _0x1493fe[_0xe3ef('0x94')]===_0x417bc9['bucket'];});if(!_0x4bcbc6){logger['info'](util[_0xe3ef('0x36')]('[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20not\x20available',_0x511604[_0xe3ef('0x4d')]['id'],_0x417bc9['bucket']));return createBucket(_0x445097[_0xe3ef('0x90')],_0x445097[_0xe3ef('0x91')],_0x417bc9['transcribeRegion'],_0x417bc9[_0xe3ef('0x77')]);}logger[_0xe3ef('0x6f')](util[_0xe3ef('0x36')](_0xe3ef('0x95'),_0x511604[_0xe3ef('0x4d')]['id'],_0x417bc9[_0xe3ef('0x77')]));return;}})['then'](function(_0x280a32){if(_0x40d800[_0xe3ef('0x80')]===_0xe3ef('0x96')){return transcribe(_0x511604[_0xe3ef('0x4d')]['id'],_0x445097[_0xe3ef('0x90')],_0x445097[_0xe3ef('0x91')],_0x417bc9['transcribeRegion'],_0x417bc9[_0xe3ef('0x77')],_0x40d800[_0xe3ef('0x55')],_0x417bc9['language']);}else{logger[_0xe3ef('0x6f')](util[_0xe3ef('0x36')](_0xe3ef('0x97'),_0x511604[_0xe3ef('0x4d')]['id']));return{'transcribeStatus':'IN_PROGRESS'};}})['then'](function(_0x56f3d1){if(_0x56f3d1){_0x56f3d1[_0xe3ef('0x98')]=_0x511604[_0xe3ef('0x50')][_0xe3ef('0x99')];return _0x40d800[_0xe3ef('0x9a')](_0x56f3d1);}})[_0xe3ef('0x2a')](respondWithResult(_0x420458,null))[_0xe3ef('0x4b')](handleError(_0x420458,null));};function writeFile(_0x221091,_0x167cb3){return new Promise(function(_0x5553a8,_0x3f988f){fs[_0xe3ef('0x9b')](_0x167cb3,_0x221091,function(_0x4bdcde,_0x32db9d){if(_0x4bdcde){return _0x3f988f(_0x4bdcde);}else{return _0x5553a8(_0x32db9d);}});});}exports['downloadTranscribe']=function(_0xf3dd89,_0x273951,_0x55baff){return db[_0xe3ef('0x31')][_0xe3ef('0x85')]({'where':{'id':_0xf3dd89[_0xe3ef('0x4d')]['id']}})[_0xe3ef('0x2a')](handleEntityNotFound(_0x273951))[_0xe3ef('0x2a')](function(_0x690225){if(_0x690225&&_0x690225[_0xe3ef('0x9c')]){var _0x57c281=_0x690225[_0xe3ef('0x9c')];var _0xc4ce10=config['root']+_0xe3ef('0x9d')+_0x690225['id']+_0xe3ef('0x9e');if(fs[_0xe3ef('0x57')](_0xc4ce10)){return _0xc4ce10;}return writeFile(_0x57c281,_0xc4ce10)[_0xe3ef('0x2a')](function(){return _0xc4ce10;});}else{throw new db[(_0xe3ef('0x5b'))][(_0xe3ef('0x5c'))]('Transcript\x20not\x20available');}})['then'](function(_0x313967){return _0x273951['download'](_0x313967);})[_0xe3ef('0x4b')](handleError(_0x273951));};
\ No newline at end of file
index e5edaaa..b7ed6c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ab2=['moment','bluebird','rimraf','../../config/environment','./voiceRecording.attributes','exports','define','voice_recordings','uniqueid','../../config/logger'];(function(_0x3b9d5f,_0x2e9039){var _0x39924e=function(_0x5752ee){while(--_0x5752ee){_0x3b9d5f['push'](_0x3b9d5f['shift']());}};_0x39924e(++_0x2e9039);}(_0x8ab2,0x167));var _0x28ab=function(_0x5bbe75,_0x32e4b6){_0x5bbe75=_0x5bbe75-0x0;var _0x353f23=_0x8ab2[_0x5bbe75];return _0x353f23;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x28ab('0x0'))('api');var moment=require(_0x28ab('0x1'));var BPromise=require(_0x28ab('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x28ab('0x3'));var config=require(_0x28ab('0x4'));var attributes=require(_0x28ab('0x5'));module[_0x28ab('0x6')]=function(_0x36397c,_0x212cf6){return _0x36397c[_0x28ab('0x7')]('VoiceRecording',attributes,{'tableName':_0x28ab('0x8'),'paranoid':![],'indexes':[{'name':_0x28ab('0x9'),'fields':[_0x28ab('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xaf42=['uniqueid','util','../../config/logger','api','moment','path','rimraf','../../config/environment','./voiceRecording.attributes','exports','define','VoiceRecording','voice_recordings'];(function(_0x53b05d,_0x587fb2){var _0x25e018=function(_0x1496e8){while(--_0x1496e8){_0x53b05d['push'](_0x53b05d['shift']());}};_0x25e018(++_0x587fb2);}(_0xaf42,0x11f));var _0x2af4=function(_0x3a342f,_0x5b8912){_0x3a342f=_0x3a342f-0x0;var _0x353c39=_0xaf42[_0x3a342f];return _0x353c39;};'use strict';var _=require('lodash');var util=require(_0x2af4('0x0'));var logger=require(_0x2af4('0x1'))(_0x2af4('0x2'));var moment=require(_0x2af4('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x2af4('0x4'));var rimraf=require(_0x2af4('0x5'));var config=require(_0x2af4('0x6'));var attributes=require(_0x2af4('0x7'));module[_0x2af4('0x8')]=function(_0x57c97d,_0x1f8cd3){return _0x57c97d[_0x2af4('0x9')](_0x2af4('0xa'),attributes,{'tableName':_0x2af4('0xb'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x2af4('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 9f39a8a..7fb4558 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x896e=['body','options','raw','where','attributes','limit','CreateVoiceRecording','../../components/encryptor','findOne','callRecordingEncryption','existsSync','value','format','%s.cypher','encryptFile','unlink','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','VoiceRecording,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','info','catch','UpdateVoiceRecording','VoiceRecording','update'];(function(_0x21b7fb,_0x5a37d1){var _0x397b3d=function(_0x2f11d6){while(--_0x2f11d6){_0x21b7fb['push'](_0x21b7fb['shift']());}};_0x397b3d(++_0x5a37d1);}(_0x896e,0x1e9));var _0xe896=function(_0x26eb9f,_0xef5a10){_0x26eb9f=_0x26eb9f-0x0;var _0x447034=_0x896e[_0x26eb9f];return _0x447034;};'use strict';var _=require(_0xe896('0x0'));var util=require(_0xe896('0x1'));var moment=require(_0xe896('0x2'));var BPromise=require(_0xe896('0x3'));var rs=require(_0xe896('0x4'));var fs=require('fs');var Redis=require(_0xe896('0x5'));var db=require(_0xe896('0x6'))['db'];var utils=require(_0xe896('0x7'));var logger=require(_0xe896('0x8'))(_0xe896('0x9'));var config=require(_0xe896('0xa'));var jayson=require(_0xe896('0xb'));var client=jayson['client'][_0xe896('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x7a0721,_0x3b902c,_0x264eeb){return new BPromise(function(_0x43c619,_0x5a1909){return client[_0xe896('0xd')](_0x7a0721,_0x264eeb)[_0xe896('0xe')](function(_0x37a90d){logger['info'](_0xe896('0xf'),_0x3b902c,'request\x20sent');logger[_0xe896('0x10')]('VoiceRecording,\x20%s,\x20%s,\x20%s',_0x3b902c,_0xe896('0x11'),JSON[_0xe896('0x12')](_0x37a90d));if(_0x37a90d[_0xe896('0x13')]){if(_0x37a90d['error'][_0xe896('0x14')]===0x1f4){logger[_0xe896('0x13')](_0xe896('0xf'),_0x3b902c,_0x37a90d['error'][_0xe896('0x15')]);return _0x5a1909(_0x37a90d[_0xe896('0x13')][_0xe896('0x15')]);}logger['error'](_0xe896('0xf'),_0x3b902c,_0x37a90d[_0xe896('0x13')][_0xe896('0x15')]);return _0x43c619(_0x37a90d['error']['message']);}else{logger[_0xe896('0x16')](_0xe896('0xf'),_0x3b902c,'request\x20sent');_0x43c619(_0x37a90d['result'][_0xe896('0x15')]);}})[_0xe896('0x17')](function(_0x57f04b){logger[_0xe896('0x13')]('VoiceRecording,\x20%s,\x20%s',_0x3b902c,_0x57f04b);_0x5a1909(_0x57f04b);});});}exports[_0xe896('0x18')]=function(_0x32f86d){var _0x2d4cf0=this;return new Promise(function(_0x5dc89d,_0x782813){return db[_0xe896('0x19')][_0xe896('0x1a')](_0x32f86d[_0xe896('0x1b')],{'raw':_0x32f86d[_0xe896('0x1c')]?_0x32f86d[_0xe896('0x1c')][_0xe896('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x32f86d[_0xe896('0x1c')]?_0x32f86d['options'][_0xe896('0x1e')]||null:null,'attributes':_0x32f86d['options']?_0x32f86d['options'][_0xe896('0x1f')]||null:null,'limit':_0x32f86d[_0xe896('0x1c')]?_0x32f86d[_0xe896('0x1c')][_0xe896('0x20')]||null:null})['then'](function(_0x468479){logger['info']('UpdateVoiceRecording',_0x32f86d);logger[_0xe896('0x10')](_0xe896('0x18'),_0x32f86d,JSON[_0xe896('0x12')](_0x468479));_0x5dc89d(_0x468479);})[_0xe896('0x17')](function(_0x20e295){logger[_0xe896('0x13')](_0xe896('0x18'),_0x20e295['message'],_0x32f86d);_0x782813(_0x2d4cf0[_0xe896('0x13')](0x1f4,_0x20e295[_0xe896('0x15')]));});});};exports[_0xe896('0x21')]=function(_0x569d5f){var _0x26635e=this;return new Promise(function(_0xd50fe2,_0x2bc11d){var _0xe93aa0=require(_0xe896('0x22'));var _0x3f8ceb;return db['Setting'][_0xe896('0x23')]({'attributes':['id',_0xe896('0x24')],'where':{'id':0x1},'raw':!![]})[_0xe896('0xe')](function(_0xbfb15b){_0x3f8ceb=_0xbfb15b;return db[_0xe896('0x19')]['create'](_0x569d5f['body']);})['then'](function(_0x504d7c){if(_0x3f8ceb['callRecordingEncryption']&&fs[_0xe896('0x25')](_0x504d7c[_0xe896('0x26')])){var _0x10fd26=util[_0xe896('0x27')](_0xe896('0x28'),_0x504d7c[_0xe896('0x26')]);return _0xe93aa0[_0xe896('0x29')](_0x504d7c[_0xe896('0x26')],_0x10fd26,config['secrets']['recording'])[_0xe896('0xe')](function(){fs[_0xe896('0x2a')](_0x504d7c[_0xe896('0x26')]);logger[_0xe896('0x16')]('CreateVoiceRecording\x20file\x20encrypted');return _0x504d7c;});}return _0x504d7c;})[_0xe896('0xe')](function(_0x571e4d){logger['info'](_0xe896('0x21'),_0x569d5f);logger[_0xe896('0x10')](_0xe896('0x21'),_0x569d5f,JSON['stringify'](_0x571e4d));_0xd50fe2(_0x571e4d);})['catch'](function(_0x567589){logger[_0xe896('0x13')](_0xe896('0x21'),_0x567589[_0xe896('0x15')],_0x569d5f);_0x2bc11d(_0x26635e[_0xe896('0x13')](0x1f4,_0x567589[_0xe896('0x15')]));});});};
\ No newline at end of file
+var _0xcf2f=['request','VoiceRecording,\x20%s,\x20%s','request\x20sent','VoiceRecording,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','catch','UpdateVoiceRecording','VoiceRecording','update','options','where','attributes','limit','CreateVoiceRecording','../../components/encryptor','Setting','findOne','callRecordingEncryption','create','body','existsSync','value','format','%s.cypher','encryptFile','recording','then','unlink','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http'];(function(_0x39d187,_0x509d3a){var _0x3e34e7=function(_0x4f0103){while(--_0x4f0103){_0x39d187['push'](_0x39d187['shift']());}};_0x3e34e7(++_0x509d3a);}(_0xcf2f,0xa7));var _0xfcf2=function(_0x2e0d39,_0xfe3e73){_0x2e0d39=_0x2e0d39-0x0;var _0x2a9a0b=_0xcf2f[_0x2e0d39];return _0x2a9a0b;};'use strict';var _=require(_0xfcf2('0x0'));var util=require(_0xfcf2('0x1'));var moment=require(_0xfcf2('0x2'));var BPromise=require(_0xfcf2('0x3'));var rs=require(_0xfcf2('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xfcf2('0x5'))['db'];var utils=require(_0xfcf2('0x6'));var logger=require(_0xfcf2('0x7'))(_0xfcf2('0x8'));var config=require(_0xfcf2('0x9'));var jayson=require(_0xfcf2('0xa'));var client=jayson[_0xfcf2('0xb')][_0xfcf2('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x41d4bd,_0x157f48,_0x16b6b2){return new BPromise(function(_0x34f444,_0xb4c510){return client[_0xfcf2('0xd')](_0x41d4bd,_0x16b6b2)['then'](function(_0x575f33){logger['info'](_0xfcf2('0xe'),_0x157f48,_0xfcf2('0xf'));logger['debug'](_0xfcf2('0x10'),_0x157f48,_0xfcf2('0xf'),JSON[_0xfcf2('0x11')](_0x575f33));if(_0x575f33[_0xfcf2('0x12')]){if(_0x575f33['error']['code']===0x1f4){logger[_0xfcf2('0x12')](_0xfcf2('0xe'),_0x157f48,_0x575f33[_0xfcf2('0x12')][_0xfcf2('0x13')]);return _0xb4c510(_0x575f33['error'][_0xfcf2('0x13')]);}logger['error']('VoiceRecording,\x20%s,\x20%s',_0x157f48,_0x575f33['error'][_0xfcf2('0x13')]);return _0x34f444(_0x575f33['error'][_0xfcf2('0x13')]);}else{logger[_0xfcf2('0x14')](_0xfcf2('0xe'),_0x157f48,_0xfcf2('0xf'));_0x34f444(_0x575f33[_0xfcf2('0x15')][_0xfcf2('0x13')]);}})[_0xfcf2('0x16')](function(_0x4d64ce){logger[_0xfcf2('0x12')](_0xfcf2('0xe'),_0x157f48,_0x4d64ce);_0xb4c510(_0x4d64ce);});});}exports[_0xfcf2('0x17')]=function(_0x581d78){var _0xd87472=this;return new Promise(function(_0x1b3c89,_0x33eaa7){return db[_0xfcf2('0x18')][_0xfcf2('0x19')](_0x581d78['body'],{'raw':_0x581d78[_0xfcf2('0x1a')]?_0x581d78[_0xfcf2('0x1a')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x581d78[_0xfcf2('0x1a')]?_0x581d78[_0xfcf2('0x1a')][_0xfcf2('0x1b')]||null:null,'attributes':_0x581d78[_0xfcf2('0x1a')]?_0x581d78[_0xfcf2('0x1a')][_0xfcf2('0x1c')]||null:null,'limit':_0x581d78[_0xfcf2('0x1a')]?_0x581d78[_0xfcf2('0x1a')][_0xfcf2('0x1d')]||null:null})['then'](function(_0x3790ed){logger[_0xfcf2('0x14')](_0xfcf2('0x17'),_0x581d78);logger['debug'](_0xfcf2('0x17'),_0x581d78,JSON[_0xfcf2('0x11')](_0x3790ed));_0x1b3c89(_0x3790ed);})['catch'](function(_0x3c3774){logger[_0xfcf2('0x12')]('UpdateVoiceRecording',_0x3c3774[_0xfcf2('0x13')],_0x581d78);_0x33eaa7(_0xd87472[_0xfcf2('0x12')](0x1f4,_0x3c3774[_0xfcf2('0x13')]));});});};exports[_0xfcf2('0x1e')]=function(_0x5bb384){var _0x1deca3=this;return new Promise(function(_0x448222,_0x2a9d64){var _0x3779ee=require(_0xfcf2('0x1f'));var _0x2b1d60;return db[_0xfcf2('0x20')][_0xfcf2('0x21')]({'attributes':['id',_0xfcf2('0x22')],'where':{'id':0x1},'raw':!![]})['then'](function(_0x4c2935){_0x2b1d60=_0x4c2935;return db[_0xfcf2('0x18')][_0xfcf2('0x23')](_0x5bb384[_0xfcf2('0x24')]);})['then'](function(_0x560898){if(_0x2b1d60['callRecordingEncryption']&&fs[_0xfcf2('0x25')](_0x560898[_0xfcf2('0x26')])){var _0x40c1ae=util[_0xfcf2('0x27')](_0xfcf2('0x28'),_0x560898[_0xfcf2('0x26')]);return _0x3779ee[_0xfcf2('0x29')](_0x560898['value'],_0x40c1ae,config['secrets'][_0xfcf2('0x2a')])[_0xfcf2('0x2b')](function(){fs[_0xfcf2('0x2c')](_0x560898[_0xfcf2('0x26')]);logger['info']('CreateVoiceRecording\x20file\x20encrypted');return _0x560898;});}return _0x560898;})[_0xfcf2('0x2b')](function(_0x5310e6){logger[_0xfcf2('0x14')](_0xfcf2('0x1e'),_0x5bb384);logger['debug'](_0xfcf2('0x1e'),_0x5bb384,JSON[_0xfcf2('0x11')](_0x5310e6));_0x448222(_0x5310e6);})[_0xfcf2('0x16')](function(_0x4046c6){logger[_0xfcf2('0x12')](_0xfcf2('0x1e'),_0x4046c6[_0xfcf2('0x13')],_0x5bb384);_0x2a9d64(_0x1deca3['error'](0x1f4,_0x4046c6[_0xfcf2('0x13')]));});});};
\ No newline at end of file
index e01a52b..a85d797 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x23d8=['get','index','/describe','isAuthenticated','describe','/:id','show','create','put','update','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./voiceTransferReport.controller'];(function(_0x551e07,_0x158a5f){var _0x5dae6c=function(_0x1dc3bc){while(--_0x1dc3bc){_0x551e07['push'](_0x551e07['shift']());}};_0x5dae6c(++_0x158a5f);}(_0x23d8,0x1da));var _0x823d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x23d8[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x823d('0x0'));var util=require(_0x823d('0x1'));var path=require(_0x823d('0x2'));var timeout=require(_0x823d('0x3'));var express=require(_0x823d('0x4'));var router=express[_0x823d('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x823d('0x6'));var interaction=require(_0x823d('0x7'));var config=require('../../config/environment');var controller=require(_0x823d('0x8'));router[_0x823d('0x9')]('/',auth['isAuthenticated'](),controller[_0x823d('0xa')]);router[_0x823d('0x9')](_0x823d('0xb'),auth[_0x823d('0xc')](),controller[_0x823d('0xd')]);router[_0x823d('0x9')](_0x823d('0xe'),auth['isAuthenticated'](),controller[_0x823d('0xf')]);router['post']('/',auth[_0x823d('0xc')](),controller[_0x823d('0x10')]);router[_0x823d('0x11')](_0x823d('0xe'),auth[_0x823d('0xc')](),controller[_0x823d('0x12')]);router['delete'](_0x823d('0xe'),auth[_0x823d('0xc')](),controller[_0x823d('0x13')]);module[_0x823d('0x14')]=router;
\ No newline at end of file
+var _0xea41=['delete','destroy','exports','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceTransferReport.controller','get','isAuthenticated','index','/describe','describe','post','create','/:id'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0xea41,0x1d7));var _0x1ea4=function(_0x53cf8e,_0x3d290f){_0x53cf8e=_0x53cf8e-0x0;var _0x459197=_0xea41[_0x53cf8e];return _0x459197;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0x1ea4('0x0'));var express=require(_0x1ea4('0x1'));var router=express['Router']();var fs_extra=require(_0x1ea4('0x2'));var auth=require(_0x1ea4('0x3'));var interaction=require(_0x1ea4('0x4'));var config=require(_0x1ea4('0x5'));var controller=require(_0x1ea4('0x6'));router[_0x1ea4('0x7')]('/',auth[_0x1ea4('0x8')](),controller[_0x1ea4('0x9')]);router[_0x1ea4('0x7')](_0x1ea4('0xa'),auth['isAuthenticated'](),controller[_0x1ea4('0xb')]);router['get']('/:id',auth[_0x1ea4('0x8')](),controller['show']);router[_0x1ea4('0xc')]('/',auth[_0x1ea4('0x8')](),controller[_0x1ea4('0xd')]);router['put'](_0x1ea4('0xe'),auth[_0x1ea4('0x8')](),controller['update']);router[_0x1ea4('0xf')](_0x1ea4('0xe'),auth[_0x1ea4('0x8')](),controller[_0x1ea4('0x10')]);module[_0x1ea4('0x11')]=router;
\ No newline at end of file
index d287fbf..ee7023e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc803=['moment','exports','ENUM','blind','STRING','Yes'];(function(_0x3df09b,_0x1f334b){var _0x1b179c=function(_0xdaed4c){while(--_0xdaed4c){_0x3df09b['push'](_0x3df09b['shift']());}};_0x1b179c(++_0x1f334b);}(_0xc803,0xa2));var _0x3c80=function(_0x5c99d5,_0x41a4ac){_0x5c99d5=_0x5c99d5-0x0;var _0x1e6020=_0xc803[_0x5c99d5];return _0x1e6020;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x3c80('0x0'));module[_0x3c80('0x1')]={'type':{'type':Sequelize[_0x3c80('0x2')](_0x3c80('0x3'),'attended')},'result':{'type':Sequelize[_0x3c80('0x4')]},'transfererchannel':{'type':Sequelize[_0x3c80('0x4')]},'transferercalleridnum':{'type':Sequelize[_0x3c80('0x4')]},'transferercalleridname':{'type':Sequelize[_0x3c80('0x4')]},'transfererconnectedlinenum':{'type':Sequelize[_0x3c80('0x4')]},'transfererconnectedlinename':{'type':Sequelize['STRING']},'transfereraccountcode':{'type':Sequelize['STRING']},'transferercontext':{'type':Sequelize['STRING']},'transfererexten':{'type':Sequelize[_0x3c80('0x4')]},'transfererlinkedid':{'type':Sequelize[_0x3c80('0x4')]},'transfereechannel':{'type':Sequelize['STRING']},'transfereecalleridnum':{'type':Sequelize[_0x3c80('0x4')]},'transfereecalleridname':{'type':Sequelize[_0x3c80('0x4')]},'transfereeconnectedlinenum':{'type':Sequelize['STRING']},'transfereeconnectedlinename':{'type':Sequelize[_0x3c80('0x4')]},'transfereeaccountcode':{'type':Sequelize[_0x3c80('0x4')]},'transfereecontext':{'type':Sequelize[_0x3c80('0x4')]},'transfereeexten':{'type':Sequelize[_0x3c80('0x4')]},'transfereelinkedid':{'type':Sequelize['STRING']},'isexternal':{'type':Sequelize[_0x3c80('0x2')](_0x3c80('0x5'),'No')},'context':{'type':Sequelize[_0x3c80('0x4')]},'extension':{'type':Sequelize[_0x3c80('0x4')]}};
\ No newline at end of file
+var _0x81f5=['exports','ENUM','STRING','Yes','sequelize'];(function(_0x1d1779,_0x284147){var _0x2377e9=function(_0x299f6f){while(--_0x299f6f){_0x1d1779['push'](_0x1d1779['shift']());}};_0x2377e9(++_0x284147);}(_0x81f5,0x11c));var _0x581f=function(_0xd1d19a,_0x1933f0){_0xd1d19a=_0xd1d19a-0x0;var _0x52a79d=_0x81f5[_0xd1d19a];return _0x52a79d;};'use strict';var Sequelize=require(_0x581f('0x0'));var moment=require('moment');module[_0x581f('0x1')]={'type':{'type':Sequelize[_0x581f('0x2')]('blind','attended')},'result':{'type':Sequelize['STRING']},'transfererchannel':{'type':Sequelize['STRING']},'transferercalleridnum':{'type':Sequelize['STRING']},'transferercalleridname':{'type':Sequelize[_0x581f('0x3')]},'transfererconnectedlinenum':{'type':Sequelize[_0x581f('0x3')]},'transfererconnectedlinename':{'type':Sequelize['STRING']},'transfereraccountcode':{'type':Sequelize['STRING']},'transferercontext':{'type':Sequelize[_0x581f('0x3')]},'transfererexten':{'type':Sequelize[_0x581f('0x3')]},'transfererlinkedid':{'type':Sequelize['STRING']},'transfereechannel':{'type':Sequelize['STRING']},'transfereecalleridnum':{'type':Sequelize['STRING']},'transfereecalleridname':{'type':Sequelize[_0x581f('0x3')]},'transfereeconnectedlinenum':{'type':Sequelize[_0x581f('0x3')]},'transfereeconnectedlinename':{'type':Sequelize['STRING']},'transfereeaccountcode':{'type':Sequelize['STRING']},'transfereecontext':{'type':Sequelize[_0x581f('0x3')]},'transfereeexten':{'type':Sequelize[_0x581f('0x3')]},'transfereelinkedid':{'type':Sequelize[_0x581f('0x3')]},'isexternal':{'type':Sequelize['ENUM'](_0x581f('0x4'),'No')},'context':{'type':Sequelize[_0x581f('0x3')]},'extension':{'type':Sequelize[_0x581f('0x3')]}};
\ No newline at end of file
index 7bbc161..4f17bcf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x037d=['reject','save','update','then','error','name','index','map','VoiceTransferReport','fieldName','key','model','query','keys','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','filters','filter','where','type','VIRTUAL','merge','options','findAll','rows','show','params','rawAttributes','includeAll','include','find','create','body','catch','describe','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','ejs','fs-extra','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply'];(function(_0x27d958,_0x29ef87){var _0x53e63e=function(_0x4130ec){while(--_0x4130ec){_0x27d958['push'](_0x27d958['shift']());}};_0x53e63e(++_0x29ef87);}(_0x037d,0x19a));var _0xd037=function(_0x342baa,_0x4a110f){_0x342baa=_0x342baa-0x0;var _0x1208f3=_0x037d[_0x342baa];return _0x1208f3;};'use strict';var emlformat=require(_0xd037('0x0'));var rimraf=require(_0xd037('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xd037('0x2'));var rp=require(_0xd037('0x3'));var moment=require(_0xd037('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xd037('0x5'));var util=require(_0xd037('0x6'));var path=require('path');var sox=require(_0xd037('0x7'));var csv=require(_0xd037('0x8'));var ejs=require(_0xd037('0x9'));var fs=require('fs');var fs_extra=require(_0xd037('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xd037('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xd037('0xc'));var toCsv=require(_0xd037('0x8'));var querystring=require(_0xd037('0xd'));var Papa=require(_0xd037('0xe'));var Redis=require(_0xd037('0xf'));var authService=require(_0xd037('0x10'));var qs=require(_0xd037('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xd037('0x12'));var logger=require(_0xd037('0x13'))('api');var utils=require('../../config/utils');var config=require(_0xd037('0x14'));var licenseUtil=require(_0xd037('0x15'));var db=require(_0xd037('0x16'))['db'];function respondWithStatusCode(_0xd9b8ca,_0x5f5c9d){_0x5f5c9d=_0x5f5c9d||0xcc;return function(_0x5da80e){if(_0x5da80e){return _0xd9b8ca[_0xd037('0x17')](_0x5f5c9d);}return _0xd9b8ca[_0xd037('0x18')](_0x5f5c9d)[_0xd037('0x19')]();};}function respondWithResult(_0x24c808,_0x2ce770){_0x2ce770=_0x2ce770||0xc8;return function(_0x4da3c6){if(_0x4da3c6){return _0x24c808['status'](_0x2ce770)[_0xd037('0x1a')](_0x4da3c6);}};}function respondWithFilteredResult(_0x2b7cd1,_0x5c954a){return function(_0x26399d){if(_0x26399d){var _0xe93e70=typeof _0x5c954a['offset']===_0xd037('0x1b')&&typeof _0x5c954a[_0xd037('0x1c')]===_0xd037('0x1b');var _0x3cde2d=_0x26399d['count'];var _0x215890=_0xe93e70?0x0:_0x5c954a['offset'];var _0x4a3f3d=_0xe93e70?_0x26399d[_0xd037('0x1d')]:_0x5c954a[_0xd037('0x1e')]+_0x5c954a[_0xd037('0x1c')];var _0x55154e;if(_0x4a3f3d>=_0x3cde2d){_0x4a3f3d=_0x3cde2d;_0x55154e=0xc8;}else{_0x55154e=0xce;}_0x2b7cd1[_0xd037('0x18')](_0x55154e);return _0x2b7cd1[_0xd037('0x1f')](_0xd037('0x20'),_0x215890+'-'+_0x4a3f3d+'/'+_0x3cde2d)['json'](_0x26399d);}return null;};}function patchUpdates(_0xd30cbb){return function(_0x43c1e1){try{jsonpatch[_0xd037('0x21')](_0x43c1e1,_0xd30cbb,!![]);}catch(_0x328420){return BPromise[_0xd037('0x22')](_0x328420);}return _0x43c1e1[_0xd037('0x23')]();};}function saveUpdates(_0x3c4e9e,_0x335b66){return function(_0x2535f5){if(_0x2535f5){return _0x2535f5[_0xd037('0x24')](_0x3c4e9e)['then'](function(_0x1d3b18){return _0x1d3b18;});}return null;};}function removeEntity(_0x332cf8,_0x575ef8){return function(_0x36e5f5){if(_0x36e5f5){return _0x36e5f5['destroy']()[_0xd037('0x25')](function(){_0x332cf8['status'](0xcc)[_0xd037('0x19')]();});}};}function handleEntityNotFound(_0x52d44e,_0x36a7ac){return function(_0x7ade2){if(!_0x7ade2){_0x52d44e[_0xd037('0x17')](0x194);}return _0x7ade2;};}function handleError(_0x52b313,_0x516536){_0x516536=_0x516536||0x1f4;return function(_0x1b8b12){logger[_0xd037('0x26')](_0x1b8b12['stack']);if(_0x1b8b12[_0xd037('0x27')]){delete _0x1b8b12['name'];}_0x52b313[_0xd037('0x18')](_0x516536)['send'](_0x1b8b12);};}exports[_0xd037('0x28')]=function(_0x5c6876,_0x4bc11c){var _0x120678={},_0x30bdbc={},_0xcf8366={'count':0x0,'rows':[]};var _0x1c9488=_[_0xd037('0x29')](db[_0xd037('0x2a')]['rawAttributes'],function(_0xc84b44){return{'name':_0xc84b44[_0xd037('0x2b')],'type':_0xc84b44['type'][_0xd037('0x2c')]};});_0x30bdbc[_0xd037('0x2d')]=_[_0xd037('0x29')](_0x1c9488,_0xd037('0x27'));_0x30bdbc[_0xd037('0x2e')]=_[_0xd037('0x2f')](_0x5c6876[_0xd037('0x2e')]);_0x30bdbc['filters']=_['intersection'](_0x30bdbc[_0xd037('0x2d')],_0x30bdbc[_0xd037('0x2e')]);_0x120678[_0xd037('0x30')]=_[_0xd037('0x31')](_0x30bdbc['model'],qs[_0xd037('0x32')](_0x5c6876[_0xd037('0x2e')][_0xd037('0x32')]));_0x120678[_0xd037('0x30')]=_0x120678[_0xd037('0x30')]['length']?_0x120678[_0xd037('0x30')]:_0x30bdbc['model'];if(!_0x5c6876[_0xd037('0x2e')][_0xd037('0x33')](_0xd037('0x34'))){_0x120678[_0xd037('0x1c')]=qs[_0xd037('0x1c')](_0x5c6876['query'][_0xd037('0x1c')]);_0x120678['offset']=qs[_0xd037('0x1e')](_0x5c6876[_0xd037('0x2e')][_0xd037('0x1e')]);}_0x120678[_0xd037('0x35')]=qs[_0xd037('0x36')](_0x5c6876[_0xd037('0x2e')][_0xd037('0x36')]);_0x120678['where']=qs[_0xd037('0x37')](_['pick'](_0x5c6876['query'],_0x30bdbc[_0xd037('0x37')]),_0x1c9488);if(_0x5c6876[_0xd037('0x2e')][_0xd037('0x38')]){_0x120678['where']=_['merge'](_0x120678[_0xd037('0x39')],{'$or':_['map'](_0x1c9488,function(_0x2585aa){if(_0x2585aa[_0xd037('0x3a')]!==_0xd037('0x3b')){var _0x2d8cbc={};_0x2d8cbc[_0x2585aa[_0xd037('0x27')]]={'$like':'%'+_0x5c6876[_0xd037('0x2e')][_0xd037('0x38')]+'%'};return _0x2d8cbc;}})});}_0x120678=_[_0xd037('0x3c')]({},_0x120678,_0x5c6876[_0xd037('0x3d')]);var _0x8866c7={'where':_0x120678[_0xd037('0x39')]};return db[_0xd037('0x2a')][_0xd037('0x1d')](_0x8866c7)[_0xd037('0x25')](function(_0x10cfed){_0xcf8366[_0xd037('0x1d')]=_0x10cfed;if(_0x5c6876['query']['includeAll']){_0x120678['include']=[{'all':!![]}];}return db[_0xd037('0x2a')][_0xd037('0x3e')](_0x120678);})[_0xd037('0x25')](function(_0xe85659){_0xcf8366[_0xd037('0x3f')]=_0xe85659;return _0xcf8366;})[_0xd037('0x25')](respondWithFilteredResult(_0x4bc11c,_0x120678))['catch'](handleError(_0x4bc11c,null));};exports[_0xd037('0x40')]=function(_0x14b5a1,_0x1d395a){var _0x43036f={'raw':!![],'where':{'id':_0x14b5a1[_0xd037('0x41')]['id']}},_0x24bedd={};_0x24bedd[_0xd037('0x2d')]=_[_0xd037('0x2f')](db[_0xd037('0x2a')][_0xd037('0x42')]);_0x24bedd[_0xd037('0x2e')]=_[_0xd037('0x2f')](_0x14b5a1['query']);_0x24bedd['filters']=_[_0xd037('0x31')](_0x24bedd['model'],_0x24bedd[_0xd037('0x2e')]);_0x43036f['attributes']=_['intersection'](_0x24bedd[_0xd037('0x2d')],qs[_0xd037('0x32')](_0x14b5a1[_0xd037('0x2e')]['fields']));_0x43036f['attributes']=_0x43036f[_0xd037('0x30')]['length']?_0x43036f[_0xd037('0x30')]:_0x24bedd[_0xd037('0x2d')];if(_0x14b5a1['query'][_0xd037('0x43')]){_0x43036f[_0xd037('0x44')]=[{'all':!![]}];}_0x43036f=_[_0xd037('0x3c')]({},_0x43036f,_0x14b5a1[_0xd037('0x3d')]);return db[_0xd037('0x2a')][_0xd037('0x45')](_0x43036f)['then'](handleEntityNotFound(_0x1d395a,null))[_0xd037('0x25')](respondWithResult(_0x1d395a,null))['catch'](handleError(_0x1d395a,null));};exports[_0xd037('0x46')]=function(_0x1f2f7d,_0x3ef715){return db['VoiceTransferReport'][_0xd037('0x46')](_0x1f2f7d[_0xd037('0x47')],{})[_0xd037('0x25')](respondWithResult(_0x3ef715,0xc9))[_0xd037('0x48')](handleError(_0x3ef715,null));};exports['update']=function(_0x27502e,_0x58ff4b){if(_0x27502e[_0xd037('0x47')]['id']){delete _0x27502e['body']['id'];}return db['VoiceTransferReport']['find']({'where':{'id':_0x27502e[_0xd037('0x41')]['id']}})[_0xd037('0x25')](handleEntityNotFound(_0x58ff4b,null))['then'](saveUpdates(_0x27502e[_0xd037('0x47')],null))[_0xd037('0x25')](respondWithResult(_0x58ff4b,null))[_0xd037('0x48')](handleError(_0x58ff4b,null));};exports['destroy']=function(_0x26077d,_0x35ae5c){return db['VoiceTransferReport']['find']({'where':{'id':_0x26077d[_0xd037('0x41')]['id']}})[_0xd037('0x25')](handleEntityNotFound(_0x35ae5c,null))[_0xd037('0x25')](removeEntity(_0x35ae5c,null))[_0xd037('0x48')](handleError(_0x35ae5c,null));};exports[_0xd037('0x49')]=function(_0x2f3ce3,_0x56bfe1){return db[_0xd037('0x2a')][_0xd037('0x49')]()['then'](respondWithResult(_0x56bfe1,null))[_0xd037('0x48')](handleError(_0x56bfe1,null));};
\ No newline at end of file
+var _0x7e4d=['Content-Range','apply','reject','save','update','destroy','error','name','send','index','map','VoiceTransferReport','rawAttributes','fieldName','type','key','model','query','intersection','attributes','fields','length','hasOwnProperty','sort','where','filters','pick','merge','VIRTUAL','options','count','then','includeAll','include','findAll','catch','params','find','create','body','describe','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','fs-extra','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','status','end','json','offset','undefined','limit','set'];(function(_0x492d61,_0x8d48cb){var _0x5a88a7=function(_0x2d5693){while(--_0x2d5693){_0x492d61['push'](_0x492d61['shift']());}};_0x5a88a7(++_0x8d48cb);}(_0x7e4d,0x151));var _0xd7e4=function(_0x3df1e0,_0x10bf2a){_0x3df1e0=_0x3df1e0-0x0;var _0x595bdb=_0x7e4d[_0x3df1e0];return _0x595bdb;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xd7e4('0x0'));var zipdir=require(_0xd7e4('0x1'));var jsonpatch=require(_0xd7e4('0x2'));var rp=require(_0xd7e4('0x3'));var moment=require('moment');var BPromise=require(_0xd7e4('0x4'));var Mustache=require(_0xd7e4('0x5'));var util=require(_0xd7e4('0x6'));var path=require(_0xd7e4('0x7'));var sox=require(_0xd7e4('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xd7e4('0x9'));var _=require('lodash');var squel=require(_0xd7e4('0xa'));var crypto=require(_0xd7e4('0xb'));var jsforce=require(_0xd7e4('0xc'));var deskjs=require(_0xd7e4('0xd'));var toCsv=require(_0xd7e4('0xe'));var querystring=require(_0xd7e4('0xf'));var Papa=require(_0xd7e4('0x10'));var Redis=require(_0xd7e4('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xd7e4('0x12'));var as=require(_0xd7e4('0x13'));var hardwareService=require(_0xd7e4('0x14'));var logger=require(_0xd7e4('0x15'))(_0xd7e4('0x16'));var utils=require(_0xd7e4('0x17'));var config=require(_0xd7e4('0x18'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1f2be9,_0x4552ab){_0x4552ab=_0x4552ab||0xcc;return function(_0x5ba80f){if(_0x5ba80f){return _0x1f2be9[_0xd7e4('0x19')](_0x4552ab);}return _0x1f2be9[_0xd7e4('0x1a')](_0x4552ab)[_0xd7e4('0x1b')]();};}function respondWithResult(_0x55a626,_0xb38c74){_0xb38c74=_0xb38c74||0xc8;return function(_0x1c2f40){if(_0x1c2f40){return _0x55a626[_0xd7e4('0x1a')](_0xb38c74)[_0xd7e4('0x1c')](_0x1c2f40);}};}function respondWithFilteredResult(_0x47a4d0,_0x283063){return function(_0x51e43c){if(_0x51e43c){var _0x170c74=typeof _0x283063[_0xd7e4('0x1d')]===_0xd7e4('0x1e')&&typeof _0x283063[_0xd7e4('0x1f')]==='undefined';var _0x911369=_0x51e43c['count'];var _0x54efe4=_0x170c74?0x0:_0x283063[_0xd7e4('0x1d')];var _0x38f251=_0x170c74?_0x51e43c['count']:_0x283063['offset']+_0x283063['limit'];var _0x2e4b67;if(_0x38f251>=_0x911369){_0x38f251=_0x911369;_0x2e4b67=0xc8;}else{_0x2e4b67=0xce;}_0x47a4d0[_0xd7e4('0x1a')](_0x2e4b67);return _0x47a4d0[_0xd7e4('0x20')](_0xd7e4('0x21'),_0x54efe4+'-'+_0x38f251+'/'+_0x911369)[_0xd7e4('0x1c')](_0x51e43c);}return null;};}function patchUpdates(_0x1b8dcb){return function(_0x4856f7){try{jsonpatch[_0xd7e4('0x22')](_0x4856f7,_0x1b8dcb,!![]);}catch(_0x2f3f65){return BPromise[_0xd7e4('0x23')](_0x2f3f65);}return _0x4856f7[_0xd7e4('0x24')]();};}function saveUpdates(_0xae8079,_0x20906d){return function(_0x495b4f){if(_0x495b4f){return _0x495b4f[_0xd7e4('0x25')](_0xae8079)['then'](function(_0xaaf215){return _0xaaf215;});}return null;};}function removeEntity(_0x542014,_0x5f5d53){return function(_0xcf555f){if(_0xcf555f){return _0xcf555f[_0xd7e4('0x26')]()['then'](function(){_0x542014['status'](0xcc)[_0xd7e4('0x1b')]();});}};}function handleEntityNotFound(_0x5c10b4,_0x349de7){return function(_0x455eb5){if(!_0x455eb5){_0x5c10b4[_0xd7e4('0x19')](0x194);}return _0x455eb5;};}function handleError(_0x1ed25e,_0x24acf2){_0x24acf2=_0x24acf2||0x1f4;return function(_0x92dbac){logger[_0xd7e4('0x27')](_0x92dbac['stack']);if(_0x92dbac[_0xd7e4('0x28')]){delete _0x92dbac[_0xd7e4('0x28')];}_0x1ed25e[_0xd7e4('0x1a')](_0x24acf2)[_0xd7e4('0x29')](_0x92dbac);};}exports[_0xd7e4('0x2a')]=function(_0xd1ecbd,_0x11b52c){var _0x4842e6={},_0xa61838={},_0x4d471={'count':0x0,'rows':[]};var _0x19755a=_[_0xd7e4('0x2b')](db[_0xd7e4('0x2c')][_0xd7e4('0x2d')],function(_0x20e42d){return{'name':_0x20e42d[_0xd7e4('0x2e')],'type':_0x20e42d[_0xd7e4('0x2f')][_0xd7e4('0x30')]};});_0xa61838[_0xd7e4('0x31')]=_[_0xd7e4('0x2b')](_0x19755a,'name');_0xa61838[_0xd7e4('0x32')]=_['keys'](_0xd1ecbd['query']);_0xa61838['filters']=_[_0xd7e4('0x33')](_0xa61838[_0xd7e4('0x31')],_0xa61838[_0xd7e4('0x32')]);_0x4842e6[_0xd7e4('0x34')]=_[_0xd7e4('0x33')](_0xa61838[_0xd7e4('0x31')],qs[_0xd7e4('0x35')](_0xd1ecbd['query'][_0xd7e4('0x35')]));_0x4842e6[_0xd7e4('0x34')]=_0x4842e6[_0xd7e4('0x34')][_0xd7e4('0x36')]?_0x4842e6[_0xd7e4('0x34')]:_0xa61838[_0xd7e4('0x31')];if(!_0xd1ecbd[_0xd7e4('0x32')][_0xd7e4('0x37')]('nolimit')){_0x4842e6[_0xd7e4('0x1f')]=qs[_0xd7e4('0x1f')](_0xd1ecbd[_0xd7e4('0x32')][_0xd7e4('0x1f')]);_0x4842e6['offset']=qs[_0xd7e4('0x1d')](_0xd1ecbd[_0xd7e4('0x32')]['offset']);}_0x4842e6['order']=qs[_0xd7e4('0x38')](_0xd1ecbd[_0xd7e4('0x32')][_0xd7e4('0x38')]);_0x4842e6[_0xd7e4('0x39')]=qs[_0xd7e4('0x3a')](_[_0xd7e4('0x3b')](_0xd1ecbd[_0xd7e4('0x32')],_0xa61838[_0xd7e4('0x3a')]),_0x19755a);if(_0xd1ecbd['query']['filter']){_0x4842e6['where']=_[_0xd7e4('0x3c')](_0x4842e6['where'],{'$or':_[_0xd7e4('0x2b')](_0x19755a,function(_0x14c3ae){if(_0x14c3ae['type']!==_0xd7e4('0x3d')){var _0x1ea88e={};_0x1ea88e[_0x14c3ae[_0xd7e4('0x28')]]={'$like':'%'+_0xd1ecbd[_0xd7e4('0x32')]['filter']+'%'};return _0x1ea88e;}})});}_0x4842e6=_[_0xd7e4('0x3c')]({},_0x4842e6,_0xd1ecbd[_0xd7e4('0x3e')]);var _0x7fe73={'where':_0x4842e6['where']};return db[_0xd7e4('0x2c')][_0xd7e4('0x3f')](_0x7fe73)[_0xd7e4('0x40')](function(_0x35ac0c){_0x4d471[_0xd7e4('0x3f')]=_0x35ac0c;if(_0xd1ecbd[_0xd7e4('0x32')][_0xd7e4('0x41')]){_0x4842e6[_0xd7e4('0x42')]=[{'all':!![]}];}return db[_0xd7e4('0x2c')][_0xd7e4('0x43')](_0x4842e6);})['then'](function(_0x296b4f){_0x4d471['rows']=_0x296b4f;return _0x4d471;})['then'](respondWithFilteredResult(_0x11b52c,_0x4842e6))[_0xd7e4('0x44')](handleError(_0x11b52c,null));};exports['show']=function(_0x51d0e2,_0x3d95da){var _0x2bda4d={'raw':!![],'where':{'id':_0x51d0e2[_0xd7e4('0x45')]['id']}},_0x37c2b3={};_0x37c2b3['model']=_['keys'](db['VoiceTransferReport'][_0xd7e4('0x2d')]);_0x37c2b3['query']=_['keys'](_0x51d0e2[_0xd7e4('0x32')]);_0x37c2b3[_0xd7e4('0x3a')]=_[_0xd7e4('0x33')](_0x37c2b3[_0xd7e4('0x31')],_0x37c2b3[_0xd7e4('0x32')]);_0x2bda4d[_0xd7e4('0x34')]=_[_0xd7e4('0x33')](_0x37c2b3['model'],qs[_0xd7e4('0x35')](_0x51d0e2[_0xd7e4('0x32')]['fields']));_0x2bda4d[_0xd7e4('0x34')]=_0x2bda4d[_0xd7e4('0x34')][_0xd7e4('0x36')]?_0x2bda4d[_0xd7e4('0x34')]:_0x37c2b3[_0xd7e4('0x31')];if(_0x51d0e2['query'][_0xd7e4('0x41')]){_0x2bda4d[_0xd7e4('0x42')]=[{'all':!![]}];}_0x2bda4d=_[_0xd7e4('0x3c')]({},_0x2bda4d,_0x51d0e2[_0xd7e4('0x3e')]);return db[_0xd7e4('0x2c')][_0xd7e4('0x46')](_0x2bda4d)['then'](handleEntityNotFound(_0x3d95da,null))[_0xd7e4('0x40')](respondWithResult(_0x3d95da,null))[_0xd7e4('0x44')](handleError(_0x3d95da,null));};exports[_0xd7e4('0x47')]=function(_0x146eb8,_0x8571cb){return db[_0xd7e4('0x2c')][_0xd7e4('0x47')](_0x146eb8[_0xd7e4('0x48')],{})[_0xd7e4('0x40')](respondWithResult(_0x8571cb,0xc9))[_0xd7e4('0x44')](handleError(_0x8571cb,null));};exports['update']=function(_0x3647cc,_0x341abf){if(_0x3647cc['body']['id']){delete _0x3647cc[_0xd7e4('0x48')]['id'];}return db[_0xd7e4('0x2c')]['find']({'where':{'id':_0x3647cc[_0xd7e4('0x45')]['id']}})['then'](handleEntityNotFound(_0x341abf,null))[_0xd7e4('0x40')](saveUpdates(_0x3647cc['body'],null))[_0xd7e4('0x40')](respondWithResult(_0x341abf,null))[_0xd7e4('0x44')](handleError(_0x341abf,null));};exports[_0xd7e4('0x26')]=function(_0x1ac2b3,_0x2464a1){return db['VoiceTransferReport'][_0xd7e4('0x46')]({'where':{'id':_0x1ac2b3['params']['id']}})[_0xd7e4('0x40')](handleEntityNotFound(_0x2464a1,null))[_0xd7e4('0x40')](removeEntity(_0x2464a1,null))['catch'](handleError(_0x2464a1,null));};exports[_0xd7e4('0x49')]=function(_0x1c8b12,_0x3f07e1){return db[_0xd7e4('0x2c')][_0xd7e4('0x49')]()['then'](respondWithResult(_0x3f07e1,null))['catch'](handleError(_0x3f07e1,null));};
\ No newline at end of file
index b76eebb..1267bce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x697c=['request-promise','path','rimraf','../../config/environment','./voiceTransferReport.attributes','exports','define','VoiceTransferReport','report_call_transfer','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x2be8c2,_0x14a4b5){var _0x97f531=function(_0xcee58d){while(--_0xcee58d){_0x2be8c2['push'](_0x2be8c2['shift']());}};_0x97f531(++_0x14a4b5);}(_0x697c,0x1da));var _0xc697=function(_0x19e49f,_0x419b39){_0x19e49f=_0x19e49f-0x0;var _0x4940f3=_0x697c[_0x19e49f];return _0x4940f3;};'use strict';var _=require(_0xc697('0x0'));var util=require(_0xc697('0x1'));var logger=require(_0xc697('0x2'))(_0xc697('0x3'));var moment=require(_0xc697('0x4'));var BPromise=require(_0xc697('0x5'));var rp=require(_0xc697('0x6'));var fs=require('fs');var path=require(_0xc697('0x7'));var rimraf=require(_0xc697('0x8'));var config=require(_0xc697('0x9'));var attributes=require(_0xc697('0xa'));module[_0xc697('0xb')]=function(_0x5c2244,_0x1a8e7a){return _0x5c2244[_0xc697('0xc')](_0xc697('0xd'),attributes,{'tableName':_0xc697('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0b66=['report_call_transfer','lodash','util','exports','define','VoiceTransferReport'];(function(_0x122096,_0x60c295){var _0x3d1966=function(_0x3d569e){while(--_0x3d569e){_0x122096['push'](_0x122096['shift']());}};_0x3d1966(++_0x60c295);}(_0x0b66,0x79));var _0x60b6=function(_0x5432e2,_0x371d08){_0x5432e2=_0x5432e2-0x0;var _0x587b82=_0x0b66[_0x5432e2];return _0x587b82;};'use strict';var _=require(_0x60b6('0x0'));var util=require(_0x60b6('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('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./voiceTransferReport.attributes');module[_0x60b6('0x2')]=function(_0x4dba6b,_0x3a60e6){return _0x4dba6b[_0x60b6('0x3')](_0x60b6('0x4'),attributes,{'tableName':_0x60b6('0x5'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index aa9b63c..ef54675 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2026=['../../config/environment','jayson/promise','client','http','request','then','info','VoiceTransferReport,\x20%s,\x20%s','request\x20sent','debug','VoiceTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateVoiceTransferReport','VoiceTransferReport','create','body','options','raw','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc'];(function(_0x5416db,_0x55683a){var _0x243e35=function(_0x1eb623){while(--_0x1eb623){_0x5416db['push'](_0x5416db['shift']());}};_0x243e35(++_0x55683a);}(_0x2026,0x71));var _0x6202=function(_0x11d49d,_0x3374e2){_0x11d49d=_0x11d49d-0x0;var _0x117159=_0x2026[_0x11d49d];return _0x117159;};'use strict';var _=require(_0x6202('0x0'));var util=require('util');var moment=require(_0x6202('0x1'));var BPromise=require(_0x6202('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6202('0x3'));var db=require(_0x6202('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x6202('0x5'))(_0x6202('0x6'));var config=require(_0x6202('0x7'));var jayson=require(_0x6202('0x8'));var client=jayson[_0x6202('0x9')][_0x6202('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x31329b,_0x3e2d8e,_0x4c8fea){return new BPromise(function(_0x3a5ac4,_0x4349d5){return client[_0x6202('0xb')](_0x31329b,_0x4c8fea)[_0x6202('0xc')](function(_0x19efd5){logger[_0x6202('0xd')](_0x6202('0xe'),_0x3e2d8e,_0x6202('0xf'));logger[_0x6202('0x10')](_0x6202('0x11'),_0x3e2d8e,_0x6202('0xf'),JSON[_0x6202('0x12')](_0x19efd5));if(_0x19efd5['error']){if(_0x19efd5[_0x6202('0x13')][_0x6202('0x14')]===0x1f4){logger['error'](_0x6202('0xe'),_0x3e2d8e,_0x19efd5[_0x6202('0x13')]['message']);return _0x4349d5(_0x19efd5[_0x6202('0x13')]['message']);}logger[_0x6202('0x13')](_0x6202('0xe'),_0x3e2d8e,_0x19efd5['error']['message']);return _0x3a5ac4(_0x19efd5[_0x6202('0x13')][_0x6202('0x15')]);}else{logger['info'](_0x6202('0xe'),_0x3e2d8e,'request\x20sent');_0x3a5ac4(_0x19efd5[_0x6202('0x16')][_0x6202('0x15')]);}})[_0x6202('0x17')](function(_0x1953a4){logger[_0x6202('0x13')](_0x6202('0xe'),_0x3e2d8e,_0x1953a4);_0x4349d5(_0x1953a4);});});}exports[_0x6202('0x18')]=function(_0x46e7a1){var _0x4fa6fe=this;return new Promise(function(_0x27d7bf,_0x52f4bc){return db[_0x6202('0x19')][_0x6202('0x1a')](_0x46e7a1[_0x6202('0x1b')],{'raw':_0x46e7a1[_0x6202('0x1c')]?_0x46e7a1['options'][_0x6202('0x1d')]===undefined?!![]:![]:!![]})[_0x6202('0xc')](function(_0x1d3d07){logger[_0x6202('0xd')]('CreateVoiceTransferReport',_0x46e7a1);logger['debug'](_0x6202('0x18'),_0x46e7a1,JSON[_0x6202('0x12')](_0x1d3d07));_0x27d7bf(_0x1d3d07);})['catch'](function(_0x500a95){logger[_0x6202('0x13')]('CreateVoiceTransferReport',_0x500a95['message'],_0x46e7a1);_0x52f4bc(_0x4fa6fe[_0x6202('0x13')](0x1f4,_0x500a95[_0x6202('0x15')]));});});};
\ No newline at end of file
+var _0xef15=['lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','request','then','info','VoiceTransferReport,\x20%s,\x20%s','request\x20sent','debug','VoiceTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','CreateVoiceTransferReport','VoiceTransferReport','create','body','options','raw'];(function(_0x42041c,_0x529d7f){var _0x566392=function(_0x1c847d){while(--_0x1c847d){_0x42041c['push'](_0x42041c['shift']());}};_0x566392(++_0x529d7f);}(_0xef15,0x150));var _0x5ef1=function(_0x4f51cb,_0x3d7bd4){_0x4f51cb=_0x4f51cb-0x0;var _0x4b34b1=_0xef15[_0x4f51cb];return _0x4b34b1;};'use strict';var _=require(_0x5ef1('0x0'));var util=require(_0x5ef1('0x1'));var moment=require(_0x5ef1('0x2'));var BPromise=require(_0x5ef1('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5ef1('0x4'));var db=require(_0x5ef1('0x5'))['db'];var utils=require(_0x5ef1('0x6'));var logger=require(_0x5ef1('0x7'))(_0x5ef1('0x8'));var config=require('../../config/environment');var jayson=require(_0x5ef1('0x9'));var client=jayson['client'][_0x5ef1('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x50cb60,_0x1b56ff,_0x121ccc){return new BPromise(function(_0x475de9,_0x9a46b8){return client[_0x5ef1('0xb')](_0x50cb60,_0x121ccc)[_0x5ef1('0xc')](function(_0x2fbf67){logger[_0x5ef1('0xd')](_0x5ef1('0xe'),_0x1b56ff,_0x5ef1('0xf'));logger[_0x5ef1('0x10')](_0x5ef1('0x11'),_0x1b56ff,_0x5ef1('0xf'),JSON[_0x5ef1('0x12')](_0x2fbf67));if(_0x2fbf67[_0x5ef1('0x13')]){if(_0x2fbf67[_0x5ef1('0x13')]['code']===0x1f4){logger[_0x5ef1('0x13')]('VoiceTransferReport,\x20%s,\x20%s',_0x1b56ff,_0x2fbf67[_0x5ef1('0x13')][_0x5ef1('0x14')]);return _0x9a46b8(_0x2fbf67[_0x5ef1('0x13')][_0x5ef1('0x14')]);}logger['error'](_0x5ef1('0xe'),_0x1b56ff,_0x2fbf67[_0x5ef1('0x13')][_0x5ef1('0x14')]);return _0x475de9(_0x2fbf67['error'][_0x5ef1('0x14')]);}else{logger['info'](_0x5ef1('0xe'),_0x1b56ff,'request\x20sent');_0x475de9(_0x2fbf67['result'][_0x5ef1('0x14')]);}})[_0x5ef1('0x15')](function(_0x308edc){logger[_0x5ef1('0x13')](_0x5ef1('0xe'),_0x1b56ff,_0x308edc);_0x9a46b8(_0x308edc);});});}exports[_0x5ef1('0x16')]=function(_0x48f920){var _0x18c8fb=this;return new Promise(function(_0x4109a9,_0x42d68a){return db[_0x5ef1('0x17')][_0x5ef1('0x18')](_0x48f920[_0x5ef1('0x19')],{'raw':_0x48f920[_0x5ef1('0x1a')]?_0x48f920[_0x5ef1('0x1a')][_0x5ef1('0x1b')]===undefined?!![]:![]:!![]})[_0x5ef1('0xc')](function(_0x34e739){logger[_0x5ef1('0xd')](_0x5ef1('0x16'),_0x48f920);logger[_0x5ef1('0x10')](_0x5ef1('0x16'),_0x48f920,JSON[_0x5ef1('0x12')](_0x34e739));_0x4109a9(_0x34e739);})[_0x5ef1('0x15')](function(_0x1fffb2){logger[_0x5ef1('0x13')](_0x5ef1('0x16'),_0x1fffb2[_0x5ef1('0x14')],_0x48f920);_0x42d68a(_0x18c8fb[_0x5ef1('0x13')](0x1f4,_0x1fffb2[_0x5ef1('0x14')]));});});};
\ No newline at end of file
index 58df3ae..caa4027 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3511=['answer','/unhold','unhold','calls','transfer','exports','express','../../components/auth/service','/originate','isAuthenticated','canUpdate','originate','/hangup','hangup','post'];(function(_0x45d55e,_0x2fede3){var _0x29812a=function(_0x3c6830){while(--_0x3c6830){_0x45d55e['push'](_0x45d55e['shift']());}};_0x29812a(++_0x2fede3);}(_0x3511,0x141));var _0x1351=function(_0x37b2db,_0x361844){_0x37b2db=_0x37b2db-0x0;var _0x34e762=_0x3511[_0x37b2db];return _0x34e762;};'use strict';var express=require(_0x1351('0x0'));var router=express['Router']();var auth=require(_0x1351('0x1'));var controller=require('./webbar.controller');router['post'](_0x1351('0x2'),auth[_0x1351('0x3')](),auth[_0x1351('0x4')](),controller[_0x1351('0x5')]);router['post'](_0x1351('0x6'),auth[_0x1351('0x3')](),auth[_0x1351('0x4')](),controller[_0x1351('0x7')]);router[_0x1351('0x8')]('/answer',auth[_0x1351('0x3')](),auth[_0x1351('0x4')](),controller[_0x1351('0x9')]);router[_0x1351('0x8')]('/hold',auth['isAuthenticated'](),auth['canUpdate'](),controller['hold']);router[_0x1351('0x8')](_0x1351('0xa'),auth['isAuthenticated'](),auth[_0x1351('0x4')](),controller[_0x1351('0xb')]);router[_0x1351('0x8')]('/calls',auth[_0x1351('0x3')](),auth[_0x1351('0x4')](),controller[_0x1351('0xc')]);router['post']('/transfer',auth[_0x1351('0x3')](),auth['canUpdate'](),controller[_0x1351('0xd')]);module[_0x1351('0xe')]=router;
\ No newline at end of file
+var _0xc9c4=['hold','unhold','calls','/transfer','transfer','exports','express','../../components/auth/service','post','/originate','isAuthenticated','/hangup','canUpdate','hangup','/answer','answer','/hold'];(function(_0x5969c2,_0x9aabad){var _0x3e6065=function(_0x321f1e){while(--_0x321f1e){_0x5969c2['push'](_0x5969c2['shift']());}};_0x3e6065(++_0x9aabad);}(_0xc9c4,0x1f3));var _0x4c9c=function(_0x1d4348,_0x453591){_0x1d4348=_0x1d4348-0x0;var _0x199ea6=_0xc9c4[_0x1d4348];return _0x199ea6;};'use strict';var express=require(_0x4c9c('0x0'));var router=express['Router']();var auth=require(_0x4c9c('0x1'));var controller=require('./webbar.controller');router[_0x4c9c('0x2')](_0x4c9c('0x3'),auth[_0x4c9c('0x4')](),auth['canUpdate'](),controller['originate']);router[_0x4c9c('0x2')](_0x4c9c('0x5'),auth[_0x4c9c('0x4')](),auth[_0x4c9c('0x6')](),controller[_0x4c9c('0x7')]);router['post'](_0x4c9c('0x8'),auth[_0x4c9c('0x4')](),auth[_0x4c9c('0x6')](),controller[_0x4c9c('0x9')]);router[_0x4c9c('0x2')](_0x4c9c('0xa'),auth['isAuthenticated'](),auth[_0x4c9c('0x6')](),controller[_0x4c9c('0xb')]);router[_0x4c9c('0x2')]('/unhold',auth[_0x4c9c('0x4')](),auth[_0x4c9c('0x6')](),controller[_0x4c9c('0xc')]);router[_0x4c9c('0x2')]('/calls',auth[_0x4c9c('0x4')](),auth[_0x4c9c('0x6')](),controller[_0x4c9c('0xd')]);router[_0x4c9c('0x2')](_0x4c9c('0xe'),auth[_0x4c9c('0x4')](),auth[_0x4c9c('0x6')](),controller[_0x4c9c('0xf')]);module[_0x4c9c('0x10')]=router;
\ No newline at end of file
index 77fb331..7028b55 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a19=['defaults','validate','number','callNumber\x20is\x20required','string','userId\x20is\x20required','sessionId\x20is\x20required','transferNumber\x20is\x20required','info','log','handleError:','error','stack','name','status','send','NotFound','then','message','result','catch','agent','filter','UserId','sessionId','length','sessionId\x20','\x20not\x20found!','originate','originate\x20fired:','json','body','userId','callNumber','callerId','entityFound:','format','user:%s','hangup','hangup\x20fired:','webbar:hangup','answer','answer\x20fired:','webbar:answer','answer\x20executed!','hold','hold\x20fired:','webbar:hold','unhold','unhold\x20fired:','calls','calls\x20fired:','VoiceChannels','rows','conference','conference\x20fired:','webbar:conference','transfer','webbar:transfer','transfer\x20executed!','path','lodash','../../mysqldb','util','bluebird','jayson/promise','client','http','../../config/logger','webbarapi','ioredis','redis'];(function(_0x4de4b0,_0x52bbd0){var _0x4101f7=function(_0x318492){while(--_0x318492){_0x4de4b0['push'](_0x4de4b0['shift']());}};_0x4101f7(++_0x52bbd0);}(_0x9a19,0x114));var _0x99a1=function(_0x2aa0e7,_0x4e5145){_0x2aa0e7=_0x2aa0e7-0x0;var _0x1472c0=_0x9a19[_0x2aa0e7];return _0x1472c0;};'use strict';var path=require(_0x99a1('0x0'));var fs=require('fs');var _=require(_0x99a1('0x1'));var db=require(_0x99a1('0x2'))['db'];var config=require('../../config/environment');var util=require(_0x99a1('0x3'));var BPromise=require(_0x99a1('0x4'));var jayson=require(_0x99a1('0x5'));var amiClient=jayson[_0x99a1('0x6')][_0x99a1('0x7')]({'port':0x232a});var logger=require(_0x99a1('0x8'))(_0x99a1('0x9'));var Redis=require(_0x99a1('0xa'));config[_0x99a1('0xb')]=_[_0x99a1('0xc')](config[_0x99a1('0xb')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));var Schema=require(_0x99a1('0xd'));var originateValidation=new Schema({'userId':{'type':_0x99a1('0xe'),'required':[!![],'userId\x20is\x20required']},'callNumber':{'type':'string','required':[!![],_0x99a1('0xf')]},'callerId':{'type':_0x99a1('0x10')},'callbackUrl':{'type':_0x99a1('0x10')}});var hangupValidation=new Schema({'userId':{'type':_0x99a1('0xe'),'required':[!![],_0x99a1('0x11')]},'sessionId':{'type':'string','required':![]}});var answerValidation=new Schema({'userId':{'type':_0x99a1('0xe'),'required':[!![],_0x99a1('0x11')]},'sessionId':{'type':_0x99a1('0x10'),'required':![]}});var transferValidation=new Schema({'userId':{'type':_0x99a1('0xe'),'required':[!![],_0x99a1('0x11')]},'sessionId':{'type':_0x99a1('0x10'),'required':[!![],_0x99a1('0x12')]},'transferNumber':{'type':_0x99a1('0x10'),'required':[!![],_0x99a1('0x13')]}});var holdValidation=new Schema({'userId':{'type':_0x99a1('0xe'),'required':[!![],_0x99a1('0x11')]},'sessionId':{'type':_0x99a1('0x10'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0x99a1('0xe'),'required':[!![],_0x99a1('0x11')]},'sessionId':{'type':_0x99a1('0x10'),'required':![]}});var callsValidation=new Schema({'userId':{'type':'number','required':[!![],_0x99a1('0x11')]}});var conferenceValidation=new Schema({'userId':{'type':_0x99a1('0xe'),'required':[!![],_0x99a1('0x11')]}});function emit(_0x3d40cc,_0x384f05,_0x33e2c1){logger[_0x99a1('0x14')](_0x3d40cc,_0x384f05,JSON['stringify'](_0x33e2c1));io['to'](_0x3d40cc)['emit'](_0x384f05,_0x33e2c1);}function handleError(_0x6702d8){return function(_0xbf62f1){console[_0x99a1('0x15')](_0x99a1('0x16'),_0xbf62f1,_0xbf62f1 instanceof RangeError);logger[_0x99a1('0x17')](_0xbf62f1[_0x99a1('0x18')]);if(_0xbf62f1 instanceof RangeError){if(_0xbf62f1[_0x99a1('0x19')]){delete _0xbf62f1[_0x99a1('0x19')];}_0x6702d8[_0x99a1('0x1a')](0x194)[_0x99a1('0x1b')](_0xbf62f1);}else{if(_0xbf62f1[_0x99a1('0x19')]){delete _0xbf62f1['name'];}_0x6702d8[_0x99a1('0x1a')](0x1f4)[_0x99a1('0x1b')](_0xbf62f1);}};}function checkError(){return function(_0x5bed38){if(!_0x5bed38){throw new RangeError(_0x99a1('0x1c'));}return _0x5bed38;};}function respondWithRpcPromise(_0x53093d,_0x458ed3){return new BPromise(function(_0x2927b0,_0x2d6f20){var _0x2d3b82=amiClient;return _0x2d3b82['request'](_0x53093d,_0x458ed3)[_0x99a1('0x1d')](function(_0x1268a7){if(_0x1268a7['error']){if(_0x1268a7[_0x99a1('0x17')]['code']===0x1f4){return _0x2d6f20(_0x1268a7[_0x99a1('0x17')][_0x99a1('0x1e')]);}return _0x2927b0(_0x1268a7[_0x99a1('0x17')][_0x99a1('0x1e')]);}else{_0x2927b0(_0x1268a7[_0x99a1('0x1f')]);}})[_0x99a1('0x20')](function(_0x4fe7f7){_0x2d6f20(_0x4fe7f7);});});}function getAgent(_0x114b38){return db['User']['findOne']({'where':{'id':_0x114b38,'role':_0x99a1('0x21')}})[_0x99a1('0x1d')](checkError());}function getAgentCheckSession(_0xa6799b,_0x15a0b6){return new BPromise(function(_0x25d560,_0x309b93){var _0x183037=respondWithRpcPromise('VoiceChannels');var _0xf41b0d=getAgent(_0xa6799b);Promise['all']([_0x183037,_0xf41b0d])[_0x99a1('0x1d')](function(_0x1137f2){var _0x26fbae=_0x1137f2[0x0];var _0x523668=_0x1137f2[0x1];var _0x371edf=_[_0x99a1('0x22')](_0x26fbae['rows'],function(_0x37514e){return _0x37514e[_0x99a1('0x23')]==_0x523668['id']&&_0x37514e[_0x99a1('0x24')]==_0x15a0b6;});if(_0x371edf[_0x99a1('0x25')]==0x1){_0x25d560(_0x523668);}else{_0x309b93(new RangeError(_0x99a1('0x26')+_0x15a0b6+_0x99a1('0x27')));}});});}exports[_0x99a1('0x28')]=function(_0x26c23c,_0x52da8d){logger['info'](_0x99a1('0x29'),_0x26c23c['body']);var _0x38e383=originateValidation[_0x99a1('0xd')](_0x26c23c['body']);if(_0x38e383[_0x99a1('0x25')]>0x0){return _0x52da8d[_0x99a1('0x1a')](0x190)[_0x99a1('0x2a')](_0x38e383);}var _0x547ed3=_0x26c23c[_0x99a1('0x2b')][_0x99a1('0x2c')];var _0x3081cd=_0x26c23c[_0x99a1('0x2b')][_0x99a1('0x2d')];var _0x432fbc=_0x26c23c[_0x99a1('0x2b')][_0x99a1('0x2e')];var _0x215c18=_0x26c23c[_0x99a1('0x2b')]['callbackUrl'];return getAgent(_0x547ed3)['then'](function(_0x46e3f2){logger[_0x99a1('0x14')](_0x99a1('0x2f'),_0x46e3f2[_0x99a1('0x19')]);emit(util[_0x99a1('0x30')](_0x99a1('0x31'),_0x46e3f2[_0x99a1('0x19')]),'webbar:originate',{'callNumber':_0x3081cd,'callerId':_0x432fbc,'callbackUrl':_0x215c18});return _0x52da8d[_0x99a1('0x1a')](0xc8)[_0x99a1('0x2a')]({'error':![],'message':'originate\x20executed!'});})[_0x99a1('0x20')](handleError(_0x52da8d));};exports[_0x99a1('0x32')]=function(_0x391afa,_0x3cd1a0){logger[_0x99a1('0x14')](_0x99a1('0x33'),_0x391afa[_0x99a1('0x2b')]);var _0x2f8135=hangupValidation[_0x99a1('0xd')](_0x391afa[_0x99a1('0x2b')]);if(_0x2f8135[_0x99a1('0x25')]>0x0){return _0x3cd1a0[_0x99a1('0x1a')](0x190)[_0x99a1('0x2a')](_0x2f8135);}var _0x5018e9=_0x391afa['body']['userId'];var _0x29e884=_0x391afa[_0x99a1('0x2b')][_0x99a1('0x24')];return getAgent(_0x5018e9)[_0x99a1('0x1d')](function(_0x40613a){logger['info'](_0x99a1('0x2f'),_0x40613a[_0x99a1('0x19')]);emit(util[_0x99a1('0x30')]('user:%s',_0x40613a['name']),_0x99a1('0x34'),{'sessionId':_0x29e884});return _0x3cd1a0[_0x99a1('0x1a')](0xc8)[_0x99a1('0x2a')]({'error':![],'message':'hangup\x20executed!'});})[_0x99a1('0x20')](handleError(_0x3cd1a0));};exports[_0x99a1('0x35')]=function(_0x1b5d2d,_0x394762){logger[_0x99a1('0x14')](_0x99a1('0x36'),_0x1b5d2d[_0x99a1('0x2b')]);var _0x29d0a0=answerValidation[_0x99a1('0xd')](_0x1b5d2d[_0x99a1('0x2b')]);if(_0x29d0a0['length']>0x0){return _0x394762[_0x99a1('0x1a')](0x190)[_0x99a1('0x2a')](_0x29d0a0);}var _0x3d5373=_0x1b5d2d['body'][_0x99a1('0x2c')];var _0x51536d=_0x1b5d2d[_0x99a1('0x2b')][_0x99a1('0x24')];return getAgent(_0x3d5373)[_0x99a1('0x1d')](function(_0x3d7ec7){logger[_0x99a1('0x14')](_0x99a1('0x2f'),_0x3d7ec7['name']);emit(util[_0x99a1('0x30')]('user:%s',_0x3d7ec7[_0x99a1('0x19')]),_0x99a1('0x37'),{'sessionId':_0x51536d});return _0x394762[_0x99a1('0x1a')](0xc8)[_0x99a1('0x2a')]({'error':![],'message':_0x99a1('0x38')});})[_0x99a1('0x20')](handleError(_0x394762));};exports[_0x99a1('0x39')]=function(_0x3861b6,_0x61c259){logger[_0x99a1('0x14')](_0x99a1('0x3a'),_0x3861b6['body']);var _0x3c1f55=holdValidation[_0x99a1('0xd')](_0x3861b6['body']);if(_0x3c1f55[_0x99a1('0x25')]>0x0){return _0x61c259[_0x99a1('0x1a')](0x190)[_0x99a1('0x2a')](_0x3c1f55);}var _0x2e377b=_0x3861b6[_0x99a1('0x2b')][_0x99a1('0x2c')];var _0x2e3bef=_0x3861b6['body'][_0x99a1('0x24')];return getAgent(_0x2e377b)['then'](function(_0x1d4d3f){logger[_0x99a1('0x14')]('entityFound:',_0x1d4d3f['name']);emit(util[_0x99a1('0x30')](_0x99a1('0x31'),_0x1d4d3f[_0x99a1('0x19')]),_0x99a1('0x3b'),{'sessionId':_0x2e3bef});return _0x61c259[_0x99a1('0x1a')](0xc8)['json']({'error':![],'message':'hold\x20executed!'});})['catch'](handleError(_0x61c259));};exports[_0x99a1('0x3c')]=function(_0x4ae90e,_0x463e49){logger[_0x99a1('0x14')](_0x99a1('0x3d'),_0x4ae90e[_0x99a1('0x2b')]);var _0x1059b1=unholdValidation['validate'](_0x4ae90e[_0x99a1('0x2b')]);if(_0x1059b1[_0x99a1('0x25')]>0x0){return _0x463e49[_0x99a1('0x1a')](0x190)['json'](_0x1059b1);}var _0x81e218=_0x4ae90e['body']['userId'];var _0x1b9598=_0x4ae90e[_0x99a1('0x2b')][_0x99a1('0x24')];return getAgent(_0x81e218)[_0x99a1('0x1d')](function(_0x11632d){logger[_0x99a1('0x14')](_0x99a1('0x2f'),_0x11632d[_0x99a1('0x19')]);emit(util[_0x99a1('0x30')]('user:%s',_0x11632d[_0x99a1('0x19')]),'webbar:unhold',{'sessionId':_0x1b9598});return _0x463e49[_0x99a1('0x1a')](0xc8)[_0x99a1('0x2a')]({'error':![],'message':'unhold\x20executed!'});})[_0x99a1('0x20')](handleError(_0x463e49));};exports[_0x99a1('0x3e')]=function(_0x469e10,_0x2b2d63){logger[_0x99a1('0x14')](_0x99a1('0x3f'),_0x2b2d63[_0x99a1('0x2b')]);var _0x1a5658=callsValidation[_0x99a1('0xd')](_0x469e10[_0x99a1('0x2b')]);if(_0x1a5658[_0x99a1('0x25')]>0x0){return _0x2b2d63[_0x99a1('0x1a')](0x190)['json'](_0x1a5658);}var _0x4f64b7=_0x469e10[_0x99a1('0x2b')][_0x99a1('0x2c')];var _0x28caeb=respondWithRpcPromise(_0x99a1('0x40'));var _0x213719=getAgent(_0x4f64b7);return Promise['all']([_0x28caeb,_0x213719])[_0x99a1('0x1d')](function(_0x35f4a8){var _0x529f66=_0x35f4a8[0x0];var _0x6107cd=_0x35f4a8[0x1];var _0x95f20a=_[_0x99a1('0x22')](_0x529f66[_0x99a1('0x41')],function(_0x2b0e5f){return _0x2b0e5f['UserId']==_0x6107cd['id'];});return _0x2b2d63[_0x99a1('0x1a')](0xc8)[_0x99a1('0x2a')]({'count':_0x95f20a[_0x99a1('0x25')],'rows':_0x95f20a});})[_0x99a1('0x20')](handleError(_0x2b2d63));};exports[_0x99a1('0x42')]=function(_0x10289c,_0x59260e){logger[_0x99a1('0x14')](_0x99a1('0x43'),_0x10289c['body']);var _0x33feb9=conferenceValidation[_0x99a1('0xd')](_0x10289c[_0x99a1('0x2b')]);if(_0x33feb9[_0x99a1('0x25')]>0x0){return _0x59260e[_0x99a1('0x1a')](0x190)['json'](_0x33feb9);}var _0x52f450=_0x10289c['body']['userId'];return getAgent(_0x52f450)['then'](function(_0x38ce3c){logger[_0x99a1('0x14')]('entityFound:',_0x38ce3c['name']);emit(util[_0x99a1('0x30')]('user:%s',_0x38ce3c[_0x99a1('0x19')]),_0x99a1('0x44'));return _0x59260e[_0x99a1('0x1a')](0xc8)[_0x99a1('0x2a')]({'error':![],'message':'conference\x20executed!'});})[_0x99a1('0x20')](handleError(_0x59260e));};exports[_0x99a1('0x45')]=function(_0x11b1c1,_0x4fbfb3){logger[_0x99a1('0x14')]('transfer\x20fired:',_0x11b1c1[_0x99a1('0x2b')]);var _0x186615=transferValidation[_0x99a1('0xd')](_0x11b1c1[_0x99a1('0x2b')]);if(_0x186615[_0x99a1('0x25')]>0x0){return _0x4fbfb3['status'](0x190)['json'](_0x186615);}var _0x4fc962=_0x11b1c1[_0x99a1('0x2b')][_0x99a1('0x2c')];var _0x4ad713=_0x11b1c1['body'][_0x99a1('0x24')];var _0x2f5587=_0x11b1c1[_0x99a1('0x2b')]['transferNumber'];return getAgent(_0x4fc962)['then'](function(_0x2b8df8){logger['info'](_0x99a1('0x2f'),_0x2b8df8[_0x99a1('0x19')]);emit(util[_0x99a1('0x30')]('user:%s',_0x2b8df8[_0x99a1('0x19')]),_0x99a1('0x46'),{'sessionId':_0x4ad713,'transferNumber':_0x2f5587});return _0x4fbfb3['status'](0xc8)['json']({'error':![],'message':_0x99a1('0x47')});})['catch'](handleError(_0x4fbfb3));};
\ No newline at end of file
+var _0x4c6d=['webbar:hold','hold\x20executed!','unhold','unhold\x20fired:','unhold\x20executed!','calls','calls\x20fired:','conference','conference\x20fired:','webbar:conference','transfer','transfer\x20fired:','transferNumber','transfer\x20executed!','path','lodash','../../mysqldb','../../config/environment','util','jayson/promise','client','http','webbarapi','ioredis','defaults','redis','localhost','validate','number','string','callNumber\x20is\x20required','userId\x20is\x20required','transferNumber\x20is\x20required','info','emit','log','handleError:','stack','name','send','status','request','then','error','code','message','result','User','agent','VoiceChannels','all','filter','rows','UserId','sessionId','length','\x20not\x20found!','originate','body','json','userId','callerId','callbackUrl','entityFound:','format','user:%s','originate\x20executed!','catch','hangup','hangup\x20fired:','hangup\x20executed!','answer\x20fired:','webbar:answer','hold','hold\x20fired:'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0x4c6d,0x1d0));var _0xd4c6=function(_0x127619,_0x24961d){_0x127619=_0x127619-0x0;var _0x1a0ffb=_0x4c6d[_0x127619];return _0x1a0ffb;};'use strict';var path=require(_0xd4c6('0x0'));var fs=require('fs');var _=require(_0xd4c6('0x1'));var db=require(_0xd4c6('0x2'))['db'];var config=require(_0xd4c6('0x3'));var util=require(_0xd4c6('0x4'));var BPromise=require('bluebird');var jayson=require(_0xd4c6('0x5'));var amiClient=jayson[_0xd4c6('0x6')][_0xd4c6('0x7')]({'port':0x232a});var logger=require('../../config/logger')(_0xd4c6('0x8'));var Redis=require(_0xd4c6('0x9'));config['redis']=_[_0xd4c6('0xa')](config[_0xd4c6('0xb')],{'host':_0xd4c6('0xc'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xd4c6('0xb')]));var Schema=require(_0xd4c6('0xd'));var originateValidation=new Schema({'userId':{'type':_0xd4c6('0xe'),'required':[!![],'userId\x20is\x20required']},'callNumber':{'type':_0xd4c6('0xf'),'required':[!![],_0xd4c6('0x10')]},'callerId':{'type':_0xd4c6('0xf')},'callbackUrl':{'type':'string'}});var hangupValidation=new Schema({'userId':{'type':_0xd4c6('0xe'),'required':[!![],_0xd4c6('0x11')]},'sessionId':{'type':_0xd4c6('0xf'),'required':![]}});var answerValidation=new Schema({'userId':{'type':_0xd4c6('0xe'),'required':[!![],_0xd4c6('0x11')]},'sessionId':{'type':_0xd4c6('0xf'),'required':![]}});var transferValidation=new Schema({'userId':{'type':'number','required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0xd4c6('0xf'),'required':[!![],'sessionId\x20is\x20required']},'transferNumber':{'type':_0xd4c6('0xf'),'required':[!![],_0xd4c6('0x12')]}});var holdValidation=new Schema({'userId':{'type':_0xd4c6('0xe'),'required':[!![],_0xd4c6('0x11')]},'sessionId':{'type':_0xd4c6('0xf'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0xd4c6('0xe'),'required':[!![],_0xd4c6('0x11')]},'sessionId':{'type':'string','required':![]}});var callsValidation=new Schema({'userId':{'type':'number','required':[!![],_0xd4c6('0x11')]}});var conferenceValidation=new Schema({'userId':{'type':_0xd4c6('0xe'),'required':[!![],_0xd4c6('0x11')]}});function emit(_0x25204d,_0x3cb95c,_0x3da1f4){logger[_0xd4c6('0x13')](_0x25204d,_0x3cb95c,JSON['stringify'](_0x3da1f4));io['to'](_0x25204d)[_0xd4c6('0x14')](_0x3cb95c,_0x3da1f4);}function handleError(_0x44126c){return function(_0x23a16f){console[_0xd4c6('0x15')](_0xd4c6('0x16'),_0x23a16f,_0x23a16f instanceof RangeError);logger['error'](_0x23a16f[_0xd4c6('0x17')]);if(_0x23a16f instanceof RangeError){if(_0x23a16f[_0xd4c6('0x18')]){delete _0x23a16f[_0xd4c6('0x18')];}_0x44126c['status'](0x194)[_0xd4c6('0x19')](_0x23a16f);}else{if(_0x23a16f[_0xd4c6('0x18')]){delete _0x23a16f[_0xd4c6('0x18')];}_0x44126c[_0xd4c6('0x1a')](0x1f4)['send'](_0x23a16f);}};}function checkError(){return function(_0x1c8427){if(!_0x1c8427){throw new RangeError('NotFound');}return _0x1c8427;};}function respondWithRpcPromise(_0x37f552,_0x150e28){return new BPromise(function(_0x2750c9,_0x222813){var _0xf536e0=amiClient;return _0xf536e0[_0xd4c6('0x1b')](_0x37f552,_0x150e28)[_0xd4c6('0x1c')](function(_0x3f99e8){if(_0x3f99e8[_0xd4c6('0x1d')]){if(_0x3f99e8[_0xd4c6('0x1d')][_0xd4c6('0x1e')]===0x1f4){return _0x222813(_0x3f99e8[_0xd4c6('0x1d')]['message']);}return _0x2750c9(_0x3f99e8['error'][_0xd4c6('0x1f')]);}else{_0x2750c9(_0x3f99e8[_0xd4c6('0x20')]);}})['catch'](function(_0x1dee19){_0x222813(_0x1dee19);});});}function getAgent(_0x3a2c50){return db[_0xd4c6('0x21')]['findOne']({'where':{'id':_0x3a2c50,'role':_0xd4c6('0x22')}})[_0xd4c6('0x1c')](checkError());}function getAgentCheckSession(_0x5614f3,_0x406ed0){return new BPromise(function(_0x8ce066,_0x25ea15){var _0x488e7e=respondWithRpcPromise(_0xd4c6('0x23'));var _0x3b656d=getAgent(_0x5614f3);Promise[_0xd4c6('0x24')]([_0x488e7e,_0x3b656d])[_0xd4c6('0x1c')](function(_0x2e8c34){var _0x160330=_0x2e8c34[0x0];var _0x41a8d2=_0x2e8c34[0x1];var _0x1f32d8=_[_0xd4c6('0x25')](_0x160330[_0xd4c6('0x26')],function(_0x441119){return _0x441119[_0xd4c6('0x27')]==_0x41a8d2['id']&&_0x441119[_0xd4c6('0x28')]==_0x406ed0;});if(_0x1f32d8[_0xd4c6('0x29')]==0x1){_0x8ce066(_0x41a8d2);}else{_0x25ea15(new RangeError('sessionId\x20'+_0x406ed0+_0xd4c6('0x2a')));}});});}exports[_0xd4c6('0x2b')]=function(_0x32deb7,_0x38d423){logger['info']('originate\x20fired:',_0x32deb7['body']);var _0x103ac3=originateValidation[_0xd4c6('0xd')](_0x32deb7[_0xd4c6('0x2c')]);if(_0x103ac3[_0xd4c6('0x29')]>0x0){return _0x38d423[_0xd4c6('0x1a')](0x190)[_0xd4c6('0x2d')](_0x103ac3);}var _0x1615ff=_0x32deb7['body'][_0xd4c6('0x2e')];var _0x3ae596=_0x32deb7[_0xd4c6('0x2c')]['callNumber'];var _0x24a716=_0x32deb7[_0xd4c6('0x2c')][_0xd4c6('0x2f')];var _0x4c69af=_0x32deb7[_0xd4c6('0x2c')][_0xd4c6('0x30')];return getAgent(_0x1615ff)[_0xd4c6('0x1c')](function(_0xe5aa2d){logger['info'](_0xd4c6('0x31'),_0xe5aa2d[_0xd4c6('0x18')]);emit(util[_0xd4c6('0x32')](_0xd4c6('0x33'),_0xe5aa2d[_0xd4c6('0x18')]),'webbar:originate',{'callNumber':_0x3ae596,'callerId':_0x24a716,'callbackUrl':_0x4c69af});return _0x38d423[_0xd4c6('0x1a')](0xc8)[_0xd4c6('0x2d')]({'error':![],'message':_0xd4c6('0x34')});})[_0xd4c6('0x35')](handleError(_0x38d423));};exports[_0xd4c6('0x36')]=function(_0x2cdb9d,_0x554666){logger[_0xd4c6('0x13')](_0xd4c6('0x37'),_0x2cdb9d[_0xd4c6('0x2c')]);var _0x5f4060=hangupValidation[_0xd4c6('0xd')](_0x2cdb9d[_0xd4c6('0x2c')]);if(_0x5f4060[_0xd4c6('0x29')]>0x0){return _0x554666[_0xd4c6('0x1a')](0x190)[_0xd4c6('0x2d')](_0x5f4060);}var _0x20a4e8=_0x2cdb9d[_0xd4c6('0x2c')][_0xd4c6('0x2e')];var _0x2e1768=_0x2cdb9d['body'][_0xd4c6('0x28')];return getAgent(_0x20a4e8)['then'](function(_0x55063c){logger[_0xd4c6('0x13')](_0xd4c6('0x31'),_0x55063c[_0xd4c6('0x18')]);emit(util[_0xd4c6('0x32')](_0xd4c6('0x33'),_0x55063c['name']),'webbar:hangup',{'sessionId':_0x2e1768});return _0x554666[_0xd4c6('0x1a')](0xc8)[_0xd4c6('0x2d')]({'error':![],'message':_0xd4c6('0x38')});})[_0xd4c6('0x35')](handleError(_0x554666));};exports['answer']=function(_0x211d47,_0x494811){logger[_0xd4c6('0x13')](_0xd4c6('0x39'),_0x211d47[_0xd4c6('0x2c')]);var _0x51585c=answerValidation[_0xd4c6('0xd')](_0x211d47[_0xd4c6('0x2c')]);if(_0x51585c[_0xd4c6('0x29')]>0x0){return _0x494811[_0xd4c6('0x1a')](0x190)[_0xd4c6('0x2d')](_0x51585c);}var _0x3ef1b0=_0x211d47[_0xd4c6('0x2c')][_0xd4c6('0x2e')];var _0x343d94=_0x211d47['body'][_0xd4c6('0x28')];return getAgent(_0x3ef1b0)[_0xd4c6('0x1c')](function(_0xefcd5){logger['info'](_0xd4c6('0x31'),_0xefcd5[_0xd4c6('0x18')]);emit(util[_0xd4c6('0x32')]('user:%s',_0xefcd5['name']),_0xd4c6('0x3a'),{'sessionId':_0x343d94});return _0x494811[_0xd4c6('0x1a')](0xc8)[_0xd4c6('0x2d')]({'error':![],'message':'answer\x20executed!'});})[_0xd4c6('0x35')](handleError(_0x494811));};exports[_0xd4c6('0x3b')]=function(_0x1a53e9,_0x258a95){logger[_0xd4c6('0x13')](_0xd4c6('0x3c'),_0x1a53e9['body']);var _0x22298a=holdValidation[_0xd4c6('0xd')](_0x1a53e9[_0xd4c6('0x2c')]);if(_0x22298a[_0xd4c6('0x29')]>0x0){return _0x258a95[_0xd4c6('0x1a')](0x190)[_0xd4c6('0x2d')](_0x22298a);}var _0x34fb42=_0x1a53e9[_0xd4c6('0x2c')]['userId'];var _0x4f26fc=_0x1a53e9[_0xd4c6('0x2c')][_0xd4c6('0x28')];return getAgent(_0x34fb42)[_0xd4c6('0x1c')](function(_0x5bb875){logger[_0xd4c6('0x13')](_0xd4c6('0x31'),_0x5bb875[_0xd4c6('0x18')]);emit(util['format'](_0xd4c6('0x33'),_0x5bb875[_0xd4c6('0x18')]),_0xd4c6('0x3d'),{'sessionId':_0x4f26fc});return _0x258a95[_0xd4c6('0x1a')](0xc8)['json']({'error':![],'message':_0xd4c6('0x3e')});})[_0xd4c6('0x35')](handleError(_0x258a95));};exports[_0xd4c6('0x3f')]=function(_0x14279d,_0x291837){logger[_0xd4c6('0x13')](_0xd4c6('0x40'),_0x14279d['body']);var _0x304f96=unholdValidation[_0xd4c6('0xd')](_0x14279d[_0xd4c6('0x2c')]);if(_0x304f96['length']>0x0){return _0x291837[_0xd4c6('0x1a')](0x190)[_0xd4c6('0x2d')](_0x304f96);}var _0x46bf10=_0x14279d[_0xd4c6('0x2c')][_0xd4c6('0x2e')];var _0x3e6df8=_0x14279d[_0xd4c6('0x2c')]['sessionId'];return getAgent(_0x46bf10)[_0xd4c6('0x1c')](function(_0x4a3092){logger['info'](_0xd4c6('0x31'),_0x4a3092['name']);emit(util[_0xd4c6('0x32')]('user:%s',_0x4a3092[_0xd4c6('0x18')]),'webbar:unhold',{'sessionId':_0x3e6df8});return _0x291837['status'](0xc8)[_0xd4c6('0x2d')]({'error':![],'message':_0xd4c6('0x41')});})[_0xd4c6('0x35')](handleError(_0x291837));};exports[_0xd4c6('0x42')]=function(_0x5639b6,_0x241e6c){logger[_0xd4c6('0x13')](_0xd4c6('0x43'),_0x241e6c[_0xd4c6('0x2c')]);var _0x5e52db=callsValidation[_0xd4c6('0xd')](_0x5639b6[_0xd4c6('0x2c')]);if(_0x5e52db[_0xd4c6('0x29')]>0x0){return _0x241e6c[_0xd4c6('0x1a')](0x190)[_0xd4c6('0x2d')](_0x5e52db);}var _0x1525a4=_0x5639b6[_0xd4c6('0x2c')][_0xd4c6('0x2e')];var _0x106710=respondWithRpcPromise(_0xd4c6('0x23'));var _0xe07a2d=getAgent(_0x1525a4);return Promise['all']([_0x106710,_0xe07a2d])['then'](function(_0x2dab4a){var _0x11c37d=_0x2dab4a[0x0];var _0x558ce2=_0x2dab4a[0x1];var _0x5179af=_['filter'](_0x11c37d[_0xd4c6('0x26')],function(_0x218250){return _0x218250['UserId']==_0x558ce2['id'];});return _0x241e6c['status'](0xc8)[_0xd4c6('0x2d')]({'count':_0x5179af[_0xd4c6('0x29')],'rows':_0x5179af});})[_0xd4c6('0x35')](handleError(_0x241e6c));};exports[_0xd4c6('0x44')]=function(_0x226549,_0x516e12){logger[_0xd4c6('0x13')](_0xd4c6('0x45'),_0x226549[_0xd4c6('0x2c')]);var _0x26cff1=conferenceValidation[_0xd4c6('0xd')](_0x226549[_0xd4c6('0x2c')]);if(_0x26cff1[_0xd4c6('0x29')]>0x0){return _0x516e12[_0xd4c6('0x1a')](0x190)[_0xd4c6('0x2d')](_0x26cff1);}var _0x20b5b9=_0x226549[_0xd4c6('0x2c')][_0xd4c6('0x2e')];return getAgent(_0x20b5b9)[_0xd4c6('0x1c')](function(_0x5a0400){logger['info'](_0xd4c6('0x31'),_0x5a0400['name']);emit(util['format']('user:%s',_0x5a0400[_0xd4c6('0x18')]),_0xd4c6('0x46'));return _0x516e12[_0xd4c6('0x1a')](0xc8)[_0xd4c6('0x2d')]({'error':![],'message':'conference\x20executed!'});})[_0xd4c6('0x35')](handleError(_0x516e12));};exports[_0xd4c6('0x47')]=function(_0x53dcea,_0x705041){logger[_0xd4c6('0x13')](_0xd4c6('0x48'),_0x53dcea[_0xd4c6('0x2c')]);var _0x5cf823=transferValidation[_0xd4c6('0xd')](_0x53dcea[_0xd4c6('0x2c')]);if(_0x5cf823['length']>0x0){return _0x705041[_0xd4c6('0x1a')](0x190)[_0xd4c6('0x2d')](_0x5cf823);}var _0x5ae295=_0x53dcea[_0xd4c6('0x2c')][_0xd4c6('0x2e')];var _0x4cdf5f=_0x53dcea[_0xd4c6('0x2c')]['sessionId'];var _0x7aef4=_0x53dcea[_0xd4c6('0x2c')][_0xd4c6('0x49')];return getAgent(_0x5ae295)[_0xd4c6('0x1c')](function(_0x2a8448){logger[_0xd4c6('0x13')]('entityFound:',_0x2a8448[_0xd4c6('0x18')]);emit(util['format'](_0xd4c6('0x33'),_0x2a8448[_0xd4c6('0x18')]),'webbar:transfer',{'sessionId':_0x4cdf5f,'transferNumber':_0x7aef4});return _0x705041[_0xd4c6('0x1a')](0xc8)[_0xd4c6('0x2d')]({'error':![],'message':_0xd4c6('0x4a')});})['catch'](handleError(_0x705041));};
\ No newline at end of file
index ad7ccee..f9b2737 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc1c6=['addDisposition','/:id/canned_answers','addAnswer','addAgents','/:id/applications','addApplications','notify','/:id/send','send','put','/:id','update','delete','destroy','removeDispositions','removeAnswers','/:id/users','removeAgents','exports','multer','util','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','get','index','/describe','isAuthenticated','describe','show','/:id/dispositions','getDispositions','getAnswers','getAgents','post','create'];(function(_0x3b2cff,_0x30142f){var _0xcbf490=function(_0x4a370c){while(--_0x4a370c){_0x3b2cff['push'](_0x3b2cff['shift']());}};_0xcbf490(++_0x30142f);}(_0xc1c6,0xf7));var _0x6c1c=function(_0x37694d,_0x528a83){_0x37694d=_0x37694d-0x0;var _0x150b7c=_0xc1c6[_0x37694d];return _0x150b7c;};'use strict';var multer=require(_0x6c1c('0x0'));var util=require(_0x6c1c('0x1'));var path=require(_0x6c1c('0x2'));var timeout=require('connect-timeout');var express=require(_0x6c1c('0x3'));var router=express['Router']();var fs_extra=require(_0x6c1c('0x4'));var auth=require(_0x6c1c('0x5'));var interaction=require(_0x6c1c('0x6'));var config=require('../../config/environment');var controller=require('./whatsappAccount.controller');router[_0x6c1c('0x7')]('/',auth['isAuthenticated'](),controller[_0x6c1c('0x8')]);router['get'](_0x6c1c('0x9'),auth[_0x6c1c('0xa')](),controller[_0x6c1c('0xb')]);router[_0x6c1c('0x7')]('/:id',auth[_0x6c1c('0xa')](),controller[_0x6c1c('0xc')]);router['get'](_0x6c1c('0xd'),auth[_0x6c1c('0xa')](),controller[_0x6c1c('0xe')]);router[_0x6c1c('0x7')]('/:id/canned_answers',auth[_0x6c1c('0xa')](),controller[_0x6c1c('0xf')]);router[_0x6c1c('0x7')]('/:id/users',auth[_0x6c1c('0xa')](),controller[_0x6c1c('0x10')]);router[_0x6c1c('0x7')]('/:id/applications',auth[_0x6c1c('0xa')](),controller['getApplications']);router[_0x6c1c('0x11')]('/',auth[_0x6c1c('0xa')](),controller[_0x6c1c('0x12')]);router[_0x6c1c('0x11')](_0x6c1c('0xd'),auth[_0x6c1c('0xa')](),controller[_0x6c1c('0x13')]);router[_0x6c1c('0x11')](_0x6c1c('0x14'),auth['isAuthenticated'](),controller[_0x6c1c('0x15')]);router[_0x6c1c('0x11')]('/:id/users',auth[_0x6c1c('0xa')](),controller[_0x6c1c('0x16')]);router['post'](_0x6c1c('0x17'),auth['isAuthenticated'](),controller[_0x6c1c('0x18')]);router[_0x6c1c('0x11')]('/:id/notify',controller[_0x6c1c('0x19')]);router['post'](_0x6c1c('0x1a'),auth[_0x6c1c('0xa')](),controller[_0x6c1c('0x1b')]);router[_0x6c1c('0x1c')](_0x6c1c('0x1d'),auth[_0x6c1c('0xa')](),controller[_0x6c1c('0x1e')]);router[_0x6c1c('0x1f')](_0x6c1c('0x1d'),auth[_0x6c1c('0xa')](),controller[_0x6c1c('0x20')]);router[_0x6c1c('0x1f')](_0x6c1c('0xd'),auth[_0x6c1c('0xa')](),controller[_0x6c1c('0x21')]);router[_0x6c1c('0x1f')](_0x6c1c('0x14'),auth[_0x6c1c('0xa')](),controller[_0x6c1c('0x22')]);router[_0x6c1c('0x1f')](_0x6c1c('0x23'),auth[_0x6c1c('0xa')](),controller[_0x6c1c('0x24')]);module[_0x6c1c('0x25')]=router;
\ No newline at end of file
+var _0x7096=['removeAgents','exports','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappAccount.controller','get','isAuthenticated','index','/describe','describe','show','/:id/dispositions','getDispositions','getAnswers','/:id/users','getAgents','/:id/applications','getApplications','post','create','addDisposition','/:id/canned_answers','addAnswer','addApplications','/:id/notify','/:id/send','send','/:id','update','delete','destroy','removeDispositions','removeAnswers'];(function(_0x32204f,_0x4d26dc){var _0x104142=function(_0xade2ba){while(--_0xade2ba){_0x32204f['push'](_0x32204f['shift']());}};_0x104142(++_0x4d26dc);}(_0x7096,0x10c));var _0x6709=function(_0x56482c,_0x16118d){_0x56482c=_0x56482c-0x0;var _0x5aae7a=_0x7096[_0x56482c];return _0x5aae7a;};'use strict';var multer=require('multer');var util=require(_0x6709('0x0'));var path=require('path');var timeout=require(_0x6709('0x1'));var express=require('express');var router=express[_0x6709('0x2')]();var fs_extra=require(_0x6709('0x3'));var auth=require(_0x6709('0x4'));var interaction=require(_0x6709('0x5'));var config=require(_0x6709('0x6'));var controller=require(_0x6709('0x7'));router[_0x6709('0x8')]('/',auth[_0x6709('0x9')](),controller[_0x6709('0xa')]);router[_0x6709('0x8')](_0x6709('0xb'),auth[_0x6709('0x9')](),controller[_0x6709('0xc')]);router['get']('/:id',auth[_0x6709('0x9')](),controller[_0x6709('0xd')]);router[_0x6709('0x8')](_0x6709('0xe'),auth[_0x6709('0x9')](),controller[_0x6709('0xf')]);router['get']('/:id/canned_answers',auth[_0x6709('0x9')](),controller[_0x6709('0x10')]);router[_0x6709('0x8')](_0x6709('0x11'),auth[_0x6709('0x9')](),controller[_0x6709('0x12')]);router[_0x6709('0x8')](_0x6709('0x13'),auth['isAuthenticated'](),controller[_0x6709('0x14')]);router[_0x6709('0x15')]('/',auth[_0x6709('0x9')](),controller[_0x6709('0x16')]);router['post'](_0x6709('0xe'),auth['isAuthenticated'](),controller[_0x6709('0x17')]);router['post'](_0x6709('0x18'),auth[_0x6709('0x9')](),controller[_0x6709('0x19')]);router[_0x6709('0x15')]('/:id/users',auth['isAuthenticated'](),controller['addAgents']);router[_0x6709('0x15')](_0x6709('0x13'),auth['isAuthenticated'](),controller[_0x6709('0x1a')]);router[_0x6709('0x15')](_0x6709('0x1b'),controller['notify']);router[_0x6709('0x15')](_0x6709('0x1c'),auth[_0x6709('0x9')](),controller[_0x6709('0x1d')]);router['put'](_0x6709('0x1e'),auth[_0x6709('0x9')](),controller[_0x6709('0x1f')]);router[_0x6709('0x20')](_0x6709('0x1e'),auth[_0x6709('0x9')](),controller[_0x6709('0x21')]);router[_0x6709('0x20')](_0x6709('0xe'),auth[_0x6709('0x9')](),controller[_0x6709('0x22')]);router[_0x6709('0x20')]('/:id/canned_answers',auth[_0x6709('0x9')](),controller[_0x6709('0x23')]);router[_0x6709('0x20')]('/:id/users',auth[_0x6709('0x9')](),controller[_0x6709('0x24')]);module[_0x6709('0x25')]=router;
\ No newline at end of file
index 1ddbede..e3e2f00 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f54=['Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','randomstring','STRING','name','generate','ENUM','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'];(function(_0x190379,_0x4eab72){var _0x19a4ea=function(_0x58a316){while(--_0x58a316){_0x190379['push'](_0x190379['shift']());}};_0x19a4ea(++_0x4eab72);}(_0x9f54,0x103));var _0x49f5=function(_0xa1d8eb,_0x553d61){_0xa1d8eb=_0xa1d8eb-0x0;var _0x457f3a=_0x9f54[_0xa1d8eb];return _0x457f3a;};'use strict';var Sequelize=require(_0x49f5('0x0'));var rs=require(_0x49f5('0x1'));module['exports']={'name':{'type':Sequelize[_0x49f5('0x2')],'unique':_0x49f5('0x3'),'allowNull':![]},'key':{'type':Sequelize['STRING'],'allowNull':![]},'remote':{'type':Sequelize['STRING'],'allowNull':![]},'token':{'type':Sequelize[_0x49f5('0x2')],'defaultValue':function(){return rs[_0x49f5('0x4')]();}},'phone':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0x49f5('0x5')]('twilio')},'accountSid':{'type':Sequelize['STRING']},'authToken':{'type':Sequelize[_0x49f5('0x2')]},'notificationTemplate':{'type':Sequelize[_0x49f5('0x6')],'defaultValue':function(){return _0x49f5('0x7');}},'notificationSound':{'type':Sequelize[_0x49f5('0x8')],'defaultValue':![]},'notificationShake':{'type':Sequelize[_0x49f5('0x8')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x49f5('0x9')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x49f5('0x8')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x49f5('0x9')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x49f5('0x8')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x49f5('0x9')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x49f5('0x9')],'comment':_0x49f5('0xa')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0x49f5('0xb'),'set':function(_0x56e026){if(!_0x56e026){this[_0x49f5('0xc')](_0x49f5('0xd'),null);}this[_0x49f5('0xc')](_0x49f5('0xe'),_0x56e026);}},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xf8af=['ENUM','twilio','sinch','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','setDataValue','sequelize','randomstring','STRING'];(function(_0x416ca7,_0x55b594){var _0x3beb5f=function(_0x51a4ea){while(--_0x51a4ea){_0x416ca7['push'](_0x416ca7['shift']());}};_0x3beb5f(++_0x55b594);}(_0xf8af,0x8c));var _0xff8a=function(_0x126558,_0x143c9a){_0x126558=_0x126558-0x0;var _0x1f6d14=_0xf8af[_0x126558];return _0x1f6d14;};'use strict';var Sequelize=require(_0xff8a('0x0'));var rs=require(_0xff8a('0x1'));module['exports']={'name':{'type':Sequelize[_0xff8a('0x2')],'unique':'name','allowNull':![]},'key':{'type':Sequelize[_0xff8a('0x2')],'allowNull':![]},'remote':{'type':Sequelize['STRING'],'allowNull':![]},'token':{'type':Sequelize[_0xff8a('0x2')],'defaultValue':function(){return rs['generate']();}},'phone':{'type':Sequelize[_0xff8a('0x2')]},'type':{'type':Sequelize[_0xff8a('0x3')](_0xff8a('0x4'),_0xff8a('0x5'))},'accountSid':{'type':Sequelize[_0xff8a('0x2')]},'baseUrl':{'type':Sequelize['STRING']},'authToken':{'type':Sequelize[_0xff8a('0x2')]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0xff8a('0x6');}},'notificationSound':{'type':Sequelize[_0xff8a('0x7')],'defaultValue':![]},'notificationShake':{'type':Sequelize[_0xff8a('0x7')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0xff8a('0x7')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xff8a('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xff8a('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xff8a('0x8')],'comment':_0xff8a('0x9')},'mandatoryDisposition':{'type':Sequelize[_0xff8a('0x7')],'defaultValue':![],'comment':_0xff8a('0xa'),'set':function(_0x4b25d3){if(!_0x4b25d3){this['setDataValue'](_0xff8a('0xb'),null);}this[_0xff8a('0xc')]('mandatoryDisposition',_0x4b25d3);}},'description':{'type':Sequelize[_0xff8a('0x2')]}};
\ No newline at end of file
index 00d0085..f63efe8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa2dc=['../../mysqldb','redis','defaults','localhost','socket.io-emitter','./whatsappAccount.socket','jayson/promise','http','request','then','info','WhatsappAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','sendStatus','status','end','json','count','offset','limit','set','Content-Range','apply','save','update','destroy','get','WhatsappAccounts','UserProfileResource','stack','name','send','index','Pause','mandatoryDispositionPause','map','WhatsappAccount','fieldName','model','keys','filters','intersection','attributes','fields','query','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','options','include','findAll','rows','catch','show','params','rawAttributes','length','includeAll','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','WhatsappAccountId','getDispositions','findOne','Disposition','removeDispositions','ids','addAnswer','getAnswers','CannedAnswer','removeAnswers','addAgents','spread','emit','userWhatsappAccount:save','removeAgents','userWhatsappAccount:remove','getAgents','User','addApplications','sequelize','transaction','WhatsappApplication','bulkCreate','priority','getApplications','notify','whatsapp','Applications','account','applications','orderBy','ValidationError','no\x20available\x20attributes','createdAt','updatedAt','difference','CompanyId','ListId','mobile','twilio','from','replace','whatsapp:','messageId','Sequelize','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','isNil','mapKey','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmContact','Contacts','DESC','list','omit','contact','WhatsappInteraction','interaction','created','autoclose','close','unmanaged','*,*,*,*','WhatsappMessage','ContactId','UserId','unshift','waitForTheAssignedAgent','Start','WhatsappAccount,\x20%s,\x20%s,\x20%s','entity\x20found','WhatsappAccount,\x20%s,\x20%s,\x20%s,\x20%s','Content-Type','text/xml','to\x20is\x20mandatory','CmList','List','out','Messages','dataValues','push','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment'];(function(_0x18bc72,_0x1b2062){var _0x3db2c0=function(_0x2c6256){while(--_0x2c6256){_0x18bc72['push'](_0x18bc72['shift']());}};_0x3db2c0(++_0x1b2062);}(_0xa2dc,0x159));var _0xca2d=function(_0x1a8ff0,_0x20788d){_0x1a8ff0=_0x1a8ff0-0x0;var _0x3588bf=_0xa2dc[_0x1a8ff0];return _0x3588bf;};'use strict';var emlformat=require(_0xca2d('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xca2d('0x1'));var jsonpatch=require(_0xca2d('0x2'));var rp=require(_0xca2d('0x3'));var moment=require(_0xca2d('0x4'));var BPromise=require(_0xca2d('0x5'));var Mustache=require(_0xca2d('0x6'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0xca2d('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xca2d('0x8'));var _=require(_0xca2d('0x9'));var squel=require(_0xca2d('0xa'));var crypto=require(_0xca2d('0xb'));var jsforce=require(_0xca2d('0xc'));var deskjs=require(_0xca2d('0xd'));var toCsv=require(_0xca2d('0x7'));var querystring=require('querystring');var Papa=require(_0xca2d('0xe'));var Redis=require(_0xca2d('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xca2d('0x10'));var as=require(_0xca2d('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xca2d('0x12'))('api');var utils=require(_0xca2d('0x13'));var config=require(_0xca2d('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xca2d('0x15'))['db'];config[_0xca2d('0x16')]=_[_0xca2d('0x17')](config['redis'],{'host':_0xca2d('0x18'),'port':0x18eb});var socket=require(_0xca2d('0x19'))(new Redis(config[_0xca2d('0x16')]));require(_0xca2d('0x1a'))['register'](socket);var jayson=require(_0xca2d('0x1b'));var client=jayson['client'][_0xca2d('0x1c')]({'port':0x232c});function respondWithRpcPromise(_0x3785e9,_0x1edfa0,_0x4283a1,_0x3f9599){return new BPromise(function(_0x541935,_0x333a44){var _0x34e0fd=_0x3f9599||client;return _0x34e0fd[_0xca2d('0x1d')](_0x3785e9,_0x4283a1)[_0xca2d('0x1e')](function(_0x528a5a){logger[_0xca2d('0x1f')](_0xca2d('0x20'),_0x1edfa0,_0xca2d('0x21'));logger[_0xca2d('0x22')]('WhatsappAccount,\x20%s,\x20%s,\x20%s',_0x1edfa0,'request\x20sent',JSON[_0xca2d('0x23')](_0x528a5a));if(_0x528a5a[_0xca2d('0x24')]){if(_0x528a5a[_0xca2d('0x24')]['code']===0x1f4){logger['error'](_0xca2d('0x20'),_0x1edfa0,_0x528a5a['error'][_0xca2d('0x25')]);return _0x333a44(_0x528a5a[_0xca2d('0x24')][_0xca2d('0x25')]);}logger[_0xca2d('0x24')](_0xca2d('0x20'),_0x1edfa0,_0x528a5a[_0xca2d('0x24')][_0xca2d('0x25')]);return _0x541935(_0x528a5a[_0xca2d('0x24')][_0xca2d('0x25')]);}else{logger[_0xca2d('0x1f')](_0xca2d('0x20'),_0x1edfa0,_0xca2d('0x21'));_0x541935(_0x528a5a[_0xca2d('0x26')][_0xca2d('0x25')]);}})['catch'](function(_0x35bc59){logger[_0xca2d('0x24')]('WhatsappAccount,\x20%s,\x20%s',_0x1edfa0,_0x35bc59);_0x333a44(_0x35bc59);});});}function respondWithStatusCode(_0x2b6c2c,_0x310fe8){_0x310fe8=_0x310fe8||0xcc;return function(_0x49ee05){if(_0x49ee05){return _0x2b6c2c[_0xca2d('0x27')](_0x310fe8);}return _0x2b6c2c[_0xca2d('0x28')](_0x310fe8)[_0xca2d('0x29')]();};}function respondWithResult(_0x3f1643,_0x272a4f){_0x272a4f=_0x272a4f||0xc8;return function(_0x423be2){if(_0x423be2){return _0x3f1643[_0xca2d('0x28')](_0x272a4f)[_0xca2d('0x2a')](_0x423be2);}};}function respondWithFilteredResult(_0x2fe915,_0x4c84cc){return function(_0x3d3865){if(_0x3d3865){var _0xc6f92e=typeof _0x4c84cc['offset']==='undefined'&&typeof _0x4c84cc['limit']==='undefined';var _0x45115d=_0x3d3865[_0xca2d('0x2b')];var _0x41dde6=_0xc6f92e?0x0:_0x4c84cc[_0xca2d('0x2c')];var _0x1b9b56=_0xc6f92e?_0x3d3865[_0xca2d('0x2b')]:_0x4c84cc['offset']+_0x4c84cc[_0xca2d('0x2d')];var _0x203b67;if(_0x1b9b56>=_0x45115d){_0x1b9b56=_0x45115d;_0x203b67=0xc8;}else{_0x203b67=0xce;}_0x2fe915[_0xca2d('0x28')](_0x203b67);return _0x2fe915[_0xca2d('0x2e')](_0xca2d('0x2f'),_0x41dde6+'-'+_0x1b9b56+'/'+_0x45115d)[_0xca2d('0x2a')](_0x3d3865);}return null;};}function patchUpdates(_0x4a1770){return function(_0x46106e){try{jsonpatch[_0xca2d('0x30')](_0x46106e,_0x4a1770,!![]);}catch(_0x3f809c){return BPromise['reject'](_0x3f809c);}return _0x46106e[_0xca2d('0x31')]();};}function saveUpdates(_0x347852,_0x235e29){return function(_0x178cc8){if(_0x178cc8){return _0x178cc8[_0xca2d('0x32')](_0x347852)['then'](function(_0x3f0f28){return _0x3f0f28;});}return null;};}function removeEntity(_0x192643,_0x2727b7){return function(_0x29868a){if(_0x29868a){return _0x29868a[_0xca2d('0x33')]()['then'](function(){var _0x362999=_0x29868a[_0xca2d('0x34')]({'plain':!![]});var _0x37dea7=_0xca2d('0x35');return db[_0xca2d('0x36')][_0xca2d('0x33')]({'where':{'type':_0x37dea7,'resourceId':_0x362999['id']}})[_0xca2d('0x1e')](function(){return _0x29868a;});})[_0xca2d('0x1e')](function(){_0x192643[_0xca2d('0x28')](0xcc)[_0xca2d('0x29')]();});}};}function handleEntityNotFound(_0x51b416,_0x39d414){return function(_0x2f8050){if(!_0x2f8050){_0x51b416[_0xca2d('0x27')](0x194);}return _0x2f8050;};}function handleError(_0x4fae78,_0x1b4940){_0x1b4940=_0x1b4940||0x1f4;return function(_0x25e956){logger['error'](_0x25e956[_0xca2d('0x37')]);if(_0x25e956[_0xca2d('0x38')]){delete _0x25e956[_0xca2d('0x38')];}_0x4fae78['status'](_0x1b4940)[_0xca2d('0x39')](_0x25e956);};}exports[_0xca2d('0x3a')]=function(_0x5db316,_0xc9fde){var _0x2c0df6={'include':[{'model':db[_0xca2d('0x3b')],'as':_0xca2d('0x3c')}]},_0x54a49b={},_0x381d4e={'count':0x0,'rows':[]};var _0x125568=_[_0xca2d('0x3d')](db[_0xca2d('0x3e')]['rawAttributes'],function(_0x54f70f){return{'name':_0x54f70f[_0xca2d('0x3f')],'type':_0x54f70f['type']['key']};});_0x54a49b[_0xca2d('0x40')]=_['map'](_0x125568,_0xca2d('0x38'));_0x54a49b['query']=_[_0xca2d('0x41')](_0x5db316['query']);_0x54a49b[_0xca2d('0x42')]=_[_0xca2d('0x43')](_0x54a49b[_0xca2d('0x40')],_0x54a49b['query']);_0x2c0df6[_0xca2d('0x44')]=_[_0xca2d('0x43')](_0x54a49b[_0xca2d('0x40')],qs[_0xca2d('0x45')](_0x5db316[_0xca2d('0x46')][_0xca2d('0x45')]));_0x2c0df6['attributes']=_0x2c0df6[_0xca2d('0x44')]['length']?_0x2c0df6[_0xca2d('0x44')]:_0x54a49b[_0xca2d('0x40')];if(!_0x5db316[_0xca2d('0x46')][_0xca2d('0x47')](_0xca2d('0x48'))){_0x2c0df6[_0xca2d('0x2d')]=qs['limit'](_0x5db316[_0xca2d('0x46')]['limit']);_0x2c0df6[_0xca2d('0x2c')]=qs[_0xca2d('0x2c')](_0x5db316[_0xca2d('0x46')][_0xca2d('0x2c')]);}_0x2c0df6[_0xca2d('0x49')]=qs[_0xca2d('0x4a')](_0x5db316['query'][_0xca2d('0x4a')]);_0x2c0df6[_0xca2d('0x4b')]=qs[_0xca2d('0x42')](_[_0xca2d('0x4c')](_0x5db316[_0xca2d('0x46')],_0x54a49b[_0xca2d('0x42')]),_0x125568);if(_0x5db316['query'][_0xca2d('0x4d')]){_0x2c0df6[_0xca2d('0x4b')]=_[_0xca2d('0x4e')](_0x2c0df6['where'],{'$or':_[_0xca2d('0x3d')](_0x125568,function(_0x50e83a){if(_0x50e83a[_0xca2d('0x4f')]!=='VIRTUAL'){var _0x1e265f={};_0x1e265f[_0x50e83a['name']]={'$like':'%'+_0x5db316[_0xca2d('0x46')][_0xca2d('0x4d')]+'%'};return _0x1e265f;}})});}_0x2c0df6=_['merge']({},_0x2c0df6,_0x5db316[_0xca2d('0x50')]);var _0x4bec2f={'where':_0x2c0df6[_0xca2d('0x4b')]};return db[_0xca2d('0x3e')][_0xca2d('0x2b')](_0x4bec2f)[_0xca2d('0x1e')](function(_0x309196){_0x381d4e[_0xca2d('0x2b')]=_0x309196;if(_0x5db316['query']['includeAll']){_0x2c0df6[_0xca2d('0x51')]=[{'all':!![]}];}return db[_0xca2d('0x3e')][_0xca2d('0x52')](_0x2c0df6);})[_0xca2d('0x1e')](function(_0xe3e0e3){_0x381d4e[_0xca2d('0x53')]=_0xe3e0e3;return _0x381d4e;})[_0xca2d('0x1e')](respondWithFilteredResult(_0xc9fde,_0x2c0df6))[_0xca2d('0x54')](handleError(_0xc9fde,null));};exports[_0xca2d('0x55')]=function(_0x1a377c,_0x5f5112){var _0x1fbb53={'raw':![],'where':{'id':_0x1a377c[_0xca2d('0x56')]['id']},'include':[{'model':db[_0xca2d('0x3b')],'as':_0xca2d('0x3c')}]},_0x33bd86={};_0x33bd86[_0xca2d('0x40')]=_['keys'](db[_0xca2d('0x3e')][_0xca2d('0x57')]);_0x33bd86[_0xca2d('0x46')]=_['keys'](_0x1a377c[_0xca2d('0x46')]);_0x33bd86['filters']=_[_0xca2d('0x43')](_0x33bd86['model'],_0x33bd86[_0xca2d('0x46')]);_0x1fbb53[_0xca2d('0x44')]=_[_0xca2d('0x43')](_0x33bd86[_0xca2d('0x40')],qs[_0xca2d('0x45')](_0x1a377c[_0xca2d('0x46')][_0xca2d('0x45')]));_0x1fbb53['attributes']=_0x1fbb53['attributes'][_0xca2d('0x58')]?_0x1fbb53['attributes']:_0x33bd86['model'];if(_0x1a377c[_0xca2d('0x46')][_0xca2d('0x59')]){_0x1fbb53[_0xca2d('0x51')]=[{'all':!![]}];}_0x1fbb53=_['merge']({},_0x1fbb53,_0x1a377c['options']);return db[_0xca2d('0x3e')][_0xca2d('0x5a')](_0x1fbb53)[_0xca2d('0x1e')](handleEntityNotFound(_0x5f5112,null))[_0xca2d('0x1e')](respondWithResult(_0x5f5112,null))['catch'](handleError(_0x5f5112,null));};exports[_0xca2d('0x5b')]=function(_0x394e96,_0x5001d3){return db[_0xca2d('0x3e')][_0xca2d('0x5b')](_0x394e96[_0xca2d('0x5c')],{})['then'](function(_0x36a055){var _0x38d548=_0x394e96[_0xca2d('0x5d')][_0xca2d('0x34')]({'plain':!![]});if(!_0x38d548)throw new Error(_0xca2d('0x5e'));if(_0x38d548[_0xca2d('0x5f')]===_0xca2d('0x5d')){var _0x5af2cd=_0x36a055[_0xca2d('0x34')]({'plain':!![]});var _0x160b57=_0xca2d('0x35');return db[_0xca2d('0x60')][_0xca2d('0x5a')]({'where':{'name':_0x160b57,'userProfileId':_0x38d548[_0xca2d('0x61')]},'raw':!![]})[_0xca2d('0x1e')](function(_0x20fb25){if(_0x20fb25&&_0x20fb25['autoAssociation']===0x0){return db[_0xca2d('0x36')]['create']({'name':_0x5af2cd[_0xca2d('0x38')],'resourceId':_0x5af2cd['id'],'type':_0x20fb25[_0xca2d('0x38')],'sectionId':_0x20fb25['id']},{})[_0xca2d('0x1e')](function(){return _0x36a055;});}else{return _0x36a055;}})[_0xca2d('0x54')](function(_0x2c725a){logger[_0xca2d('0x24')](_0xca2d('0x62'),_0x2c725a);throw _0x2c725a;});}return _0x36a055;})['then'](respondWithResult(_0x5001d3,0xc9))[_0xca2d('0x54')](handleError(_0x5001d3,null));};exports['update']=function(_0x2fce7a,_0x56b9e6){if(_0x2fce7a[_0xca2d('0x5c')]['id']){delete _0x2fce7a[_0xca2d('0x5c')]['id'];}return db[_0xca2d('0x3e')][_0xca2d('0x5a')]({'where':{'id':_0x2fce7a[_0xca2d('0x56')]['id']},'include':[{'model':db[_0xca2d('0x3b')],'as':'mandatoryDispositionPause'}]})[_0xca2d('0x1e')](handleEntityNotFound(_0x56b9e6,null))[_0xca2d('0x1e')](saveUpdates(_0x2fce7a['body'],null))[_0xca2d('0x1e')](respondWithResult(_0x56b9e6,null))[_0xca2d('0x54')](handleError(_0x56b9e6,null));};exports[_0xca2d('0x33')]=function(_0x103da7,_0x5bb200){return db[_0xca2d('0x3e')][_0xca2d('0x5a')]({'where':{'id':_0x103da7['params']['id']}})[_0xca2d('0x1e')](handleEntityNotFound(_0x5bb200,null))[_0xca2d('0x1e')](removeEntity(_0x5bb200,null))[_0xca2d('0x54')](handleError(_0x5bb200,null));};exports[_0xca2d('0x63')]=function(_0x122601,_0x3cf3de){return db[_0xca2d('0x3e')][_0xca2d('0x63')]()[_0xca2d('0x1e')](respondWithResult(_0x3cf3de,null))[_0xca2d('0x54')](handleError(_0x3cf3de,null));};exports[_0xca2d('0x64')]=function(_0x429eaa,_0x22a7fb,_0xecff9d){if(_0x429eaa[_0xca2d('0x5c')]['id']){delete _0x429eaa[_0xca2d('0x5c')]['id'];}return db['WhatsappAccount']['find']({'where':{'id':_0x429eaa[_0xca2d('0x56')]['id']}})['then'](handleEntityNotFound(_0x22a7fb,null))[_0xca2d('0x1e')](function(_0xdef91d){if(_0xdef91d){_0x429eaa[_0xca2d('0x5c')][_0xca2d('0x65')]=_0xdef91d['id'];return db['Disposition'][_0xca2d('0x5b')](_0x429eaa[_0xca2d('0x5c')]);}})[_0xca2d('0x1e')](respondWithResult(_0x22a7fb,null))[_0xca2d('0x54')](handleError(_0x22a7fb,null));};exports[_0xca2d('0x66')]=function(_0xadfb8a,_0x4f9357,_0x3c9eab){var _0x225c42={'raw':![],'where':{}};var _0x125442={};var _0x16df25={'count':0x0,'rows':[]};return db['WhatsappAccount'][_0xca2d('0x67')]({'where':{'id':_0xadfb8a[_0xca2d('0x56')]['id']}})[_0xca2d('0x1e')](handleEntityNotFound(_0x4f9357,null))['then'](function(_0xa5f7ea){if(_0xa5f7ea){_0x125442['model']=_[_0xca2d('0x41')](db[_0xca2d('0x68')]['rawAttributes']);_0x125442[_0xca2d('0x46')]=_[_0xca2d('0x41')](_0xadfb8a['query']);_0x125442[_0xca2d('0x42')]=_['intersection'](_0x125442['model'],_0x125442[_0xca2d('0x46')]);_0x225c42[_0xca2d('0x44')]=_['intersection'](_0x125442[_0xca2d('0x40')],qs[_0xca2d('0x45')](_0xadfb8a['query'][_0xca2d('0x45')]));_0x225c42['attributes']=_0x225c42['attributes'][_0xca2d('0x58')]?_0x225c42[_0xca2d('0x44')]:_0x125442[_0xca2d('0x40')];if(!_0xadfb8a[_0xca2d('0x46')][_0xca2d('0x47')](_0xca2d('0x48'))){_0x225c42['limit']=qs[_0xca2d('0x2d')](_0xadfb8a[_0xca2d('0x46')][_0xca2d('0x2d')]);_0x225c42[_0xca2d('0x2c')]=qs['offset'](_0xadfb8a[_0xca2d('0x46')][_0xca2d('0x2c')]);}_0x225c42[_0xca2d('0x49')]=qs[_0xca2d('0x4a')](_0xadfb8a[_0xca2d('0x46')][_0xca2d('0x4a')]);_0x225c42[_0xca2d('0x4b')]=qs[_0xca2d('0x42')](_[_0xca2d('0x4c')](_0xadfb8a[_0xca2d('0x46')],_0x125442[_0xca2d('0x42')]));_0x225c42[_0xca2d('0x4b')][_0xca2d('0x65')]=_0xa5f7ea['id'];if(_0xadfb8a[_0xca2d('0x46')][_0xca2d('0x4d')]){_0x225c42['where']=_['merge'](_0x225c42[_0xca2d('0x4b')],{'$or':_['map'](_0x225c42['attributes'],function(_0x44a61a){var _0x4d32d1={};_0x4d32d1[_0x44a61a]={'$like':'%'+_0xadfb8a[_0xca2d('0x46')][_0xca2d('0x4d')]+'%'};return _0x4d32d1;})});}_0x225c42=_[_0xca2d('0x4e')]({},_0x225c42,_0xadfb8a[_0xca2d('0x50')]);return db[_0xca2d('0x68')][_0xca2d('0x2b')]({'where':_0x225c42[_0xca2d('0x4b')]})[_0xca2d('0x1e')](function(_0xb8d314){_0x16df25[_0xca2d('0x2b')]=_0xb8d314;if(_0xadfb8a[_0xca2d('0x46')][_0xca2d('0x59')]){_0x225c42[_0xca2d('0x51')]=[{'all':!![]}];}return db[_0xca2d('0x68')]['findAll'](_0x225c42);})[_0xca2d('0x1e')](function(_0x383cad){_0x16df25['rows']=_0x383cad;return _0x16df25;});}})['then'](respondWithFilteredResult(_0x4f9357,_0x225c42))[_0xca2d('0x54')](handleError(_0x4f9357,null));};exports[_0xca2d('0x69')]=function(_0x366e6e,_0x14418e,_0x3d7c5d){return db[_0xca2d('0x3e')][_0xca2d('0x5a')]({'where':{'id':_0x366e6e[_0xca2d('0x56')]['id']}})[_0xca2d('0x1e')](handleEntityNotFound(_0x14418e,null))['then'](function(_0x412f7c){if(_0x412f7c){return _0x412f7c[_0xca2d('0x69')](_0x366e6e['query'][_0xca2d('0x6a')]);}})[_0xca2d('0x1e')](respondWithStatusCode(_0x14418e,null))[_0xca2d('0x54')](handleError(_0x14418e,null));};exports[_0xca2d('0x6b')]=function(_0x335b48,_0x45c2ba,_0x1b6216){if(_0x335b48[_0xca2d('0x5c')]['id']){delete _0x335b48['body']['id'];}return db[_0xca2d('0x3e')][_0xca2d('0x5a')]({'where':{'id':_0x335b48[_0xca2d('0x56')]['id']}})[_0xca2d('0x1e')](handleEntityNotFound(_0x45c2ba,null))[_0xca2d('0x1e')](function(_0xa617e9){if(_0xa617e9){_0x335b48[_0xca2d('0x5c')][_0xca2d('0x65')]=_0xa617e9['id'];return db['CannedAnswer'][_0xca2d('0x5b')](_0x335b48[_0xca2d('0x5c')]);}})[_0xca2d('0x1e')](respondWithResult(_0x45c2ba,null))['catch'](handleError(_0x45c2ba,null));};exports[_0xca2d('0x6c')]=function(_0x12c8b4,_0x5d8994,_0x322ece){var _0x369b4d={'raw':![],'where':{}};var _0x5a419e={};var _0x351af6={'count':0x0,'rows':[]};return db[_0xca2d('0x3e')]['findOne']({'where':{'id':_0x12c8b4[_0xca2d('0x56')]['id']}})[_0xca2d('0x1e')](handleEntityNotFound(_0x5d8994,null))[_0xca2d('0x1e')](function(_0x425101){if(_0x425101){_0x5a419e[_0xca2d('0x40')]=_['keys'](db[_0xca2d('0x6d')][_0xca2d('0x57')]);_0x5a419e['query']=_[_0xca2d('0x41')](_0x12c8b4['query']);_0x5a419e[_0xca2d('0x42')]=_[_0xca2d('0x43')](_0x5a419e[_0xca2d('0x40')],_0x5a419e['query']);_0x369b4d[_0xca2d('0x44')]=_['intersection'](_0x5a419e[_0xca2d('0x40')],qs[_0xca2d('0x45')](_0x12c8b4[_0xca2d('0x46')][_0xca2d('0x45')]));_0x369b4d[_0xca2d('0x44')]=_0x369b4d[_0xca2d('0x44')]['length']?_0x369b4d[_0xca2d('0x44')]:_0x5a419e[_0xca2d('0x40')];if(!_0x12c8b4[_0xca2d('0x46')]['hasOwnProperty'](_0xca2d('0x48'))){_0x369b4d['limit']=qs[_0xca2d('0x2d')](_0x12c8b4[_0xca2d('0x46')]['limit']);_0x369b4d[_0xca2d('0x2c')]=qs[_0xca2d('0x2c')](_0x12c8b4[_0xca2d('0x46')]['offset']);}_0x369b4d[_0xca2d('0x49')]=qs[_0xca2d('0x4a')](_0x12c8b4[_0xca2d('0x46')]['sort']);_0x369b4d[_0xca2d('0x4b')]=qs[_0xca2d('0x42')](_['pick'](_0x12c8b4[_0xca2d('0x46')],_0x5a419e[_0xca2d('0x42')]));_0x369b4d[_0xca2d('0x4b')][_0xca2d('0x65')]=_0x425101['id'];if(_0x12c8b4['query']['filter']){_0x369b4d[_0xca2d('0x4b')]=_['merge'](_0x369b4d['where'],{'$or':_[_0xca2d('0x3d')](_0x369b4d[_0xca2d('0x44')],function(_0x3964e2){var _0x3659cc={};_0x3659cc[_0x3964e2]={'$like':'%'+_0x12c8b4['query']['filter']+'%'};return _0x3659cc;})});}_0x369b4d=_['merge']({},_0x369b4d,_0x12c8b4[_0xca2d('0x50')]);return db[_0xca2d('0x6d')][_0xca2d('0x2b')]({'where':_0x369b4d[_0xca2d('0x4b')]})[_0xca2d('0x1e')](function(_0x793f0b){_0x351af6[_0xca2d('0x2b')]=_0x793f0b;if(_0x12c8b4['query'][_0xca2d('0x59')]){_0x369b4d[_0xca2d('0x51')]=[{'all':!![]}];}return db[_0xca2d('0x6d')]['findAll'](_0x369b4d);})[_0xca2d('0x1e')](function(_0xa60ad7){_0x351af6[_0xca2d('0x53')]=_0xa60ad7;return _0x351af6;});}})[_0xca2d('0x1e')](respondWithFilteredResult(_0x5d8994,_0x369b4d))['catch'](handleError(_0x5d8994,null));};exports[_0xca2d('0x6e')]=function(_0x418600,_0x436888,_0xc6a17c){return db[_0xca2d('0x3e')][_0xca2d('0x5a')]({'where':{'id':_0x418600[_0xca2d('0x56')]['id']}})[_0xca2d('0x1e')](handleEntityNotFound(_0x436888,null))[_0xca2d('0x1e')](function(_0x194f84){if(_0x194f84){return _0x194f84['removeAnswers'](_0x418600[_0xca2d('0x46')]['ids']);}})['then'](respondWithStatusCode(_0x436888,null))[_0xca2d('0x54')](handleError(_0x436888,null));};exports[_0xca2d('0x6f')]=function(_0x489ff5,_0x9f8d7,_0x32a06a){return db['WhatsappAccount'][_0xca2d('0x5a')]({'where':{'id':_0x489ff5[_0xca2d('0x56')]['id']}})[_0xca2d('0x1e')](handleEntityNotFound(_0x9f8d7,null))[_0xca2d('0x1e')](function(_0x56871e){if(_0x56871e){return _0x56871e[_0xca2d('0x6f')](_0x489ff5['body'][_0xca2d('0x6a')],_['omit'](_0x489ff5[_0xca2d('0x5c')],[_0xca2d('0x6a'),'id'])||{})[_0xca2d('0x70')](function(_0x110dd4){for(var _0x4a2481=0x0;_0x4a2481<_0x489ff5['body']['ids']['length'];_0x4a2481+=0x1){socket[_0xca2d('0x71')](_0xca2d('0x72'),{'UserId':Number(_0x489ff5[_0xca2d('0x5c')][_0xca2d('0x6a')][_0x4a2481]),'WhatsappAccountId':Number(_0x489ff5['params']['id'])});}return _0x110dd4;});}})[_0xca2d('0x1e')](respondWithResult(_0x9f8d7,null))['catch'](handleError(_0x9f8d7,null));};exports[_0xca2d('0x73')]=function(_0x2989bd,_0x29a66e,_0x49b18a){return db['WhatsappAccount'][_0xca2d('0x5a')]({'where':{'id':_0x2989bd[_0xca2d('0x56')]['id']}})[_0xca2d('0x1e')](handleEntityNotFound(_0x29a66e,null))['then'](function(_0x3f9388){if(_0x3f9388){return _0x3f9388[_0xca2d('0x73')](_0x2989bd[_0xca2d('0x46')][_0xca2d('0x6a')])['then'](function(){if(_['isArray'](_0x2989bd[_0xca2d('0x46')][_0xca2d('0x6a')])){for(var _0x119319=0x0;_0x119319<_0x2989bd[_0xca2d('0x46')][_0xca2d('0x6a')]['length'];_0x119319+=0x1){socket[_0xca2d('0x71')](_0xca2d('0x74'),{'UserId':Number(_0x2989bd[_0xca2d('0x46')][_0xca2d('0x6a')][_0x119319]),'WhatsappAccountId':Number(_0x2989bd['params']['id'])});}}else{socket[_0xca2d('0x71')]('userWhatsappAccount:remove',{'UserId':Number(_0x2989bd[_0xca2d('0x46')][_0xca2d('0x6a')]),'WhatsappAccountId':Number(_0x2989bd[_0xca2d('0x56')]['id'])});}});}})['then'](respondWithStatusCode(_0x29a66e,null))[_0xca2d('0x54')](handleError(_0x29a66e,null));};exports[_0xca2d('0x75')]=function(_0x5a3333,_0x3f24b4,_0x56bcd0){var _0x4dbaae={};var _0xe8cd2c={};var _0xc70a1b;var _0x180daa;return db['WhatsappAccount'][_0xca2d('0x67')]({'where':{'id':_0x5a3333['params']['id']}})[_0xca2d('0x1e')](handleEntityNotFound(_0x3f24b4,null))['then'](function(_0x313c0f){if(_0x313c0f){_0xc70a1b=_0x313c0f;_0xe8cd2c[_0xca2d('0x40')]=_[_0xca2d('0x41')](db[_0xca2d('0x76')][_0xca2d('0x57')]);_0xe8cd2c['query']=_['keys'](_0x5a3333[_0xca2d('0x46')]);_0xe8cd2c[_0xca2d('0x42')]=_[_0xca2d('0x43')](_0xe8cd2c[_0xca2d('0x40')],_0xe8cd2c[_0xca2d('0x46')]);_0x4dbaae[_0xca2d('0x44')]=_[_0xca2d('0x43')](_0xe8cd2c[_0xca2d('0x40')],qs[_0xca2d('0x45')](_0x5a3333[_0xca2d('0x46')]['fields']));_0x4dbaae['attributes']=_0x4dbaae[_0xca2d('0x44')][_0xca2d('0x58')]?_0x4dbaae[_0xca2d('0x44')]:_0xe8cd2c['model'];_0x4dbaae[_0xca2d('0x49')]=qs[_0xca2d('0x4a')](_0x5a3333['query'][_0xca2d('0x4a')]);_0x4dbaae[_0xca2d('0x4b')]=qs[_0xca2d('0x42')](_[_0xca2d('0x4c')](_0x5a3333[_0xca2d('0x46')],_0xe8cd2c[_0xca2d('0x42')]));if(_0x5a3333[_0xca2d('0x46')][_0xca2d('0x4d')]){_0x4dbaae[_0xca2d('0x4b')]=_[_0xca2d('0x4e')](_0x4dbaae['where'],{'$or':_['map'](_0x4dbaae['attributes'],function(_0x3a4744){var _0x508cb7={};_0x508cb7[_0x3a4744]={'$like':'%'+_0x5a3333['query'][_0xca2d('0x4d')]+'%'};return _0x508cb7;})});}_0x4dbaae=_[_0xca2d('0x4e')]({},_0x4dbaae,_0x5a3333[_0xca2d('0x50')]);return _0xc70a1b['getAgents'](_0x4dbaae);}})[_0xca2d('0x1e')](function(_0xce993d){if(_0xce993d){_0x180daa=_0xce993d['length'];if(!_0x5a3333[_0xca2d('0x46')]['hasOwnProperty'](_0xca2d('0x48'))){_0x4dbaae[_0xca2d('0x2d')]=qs['limit'](_0x5a3333[_0xca2d('0x46')][_0xca2d('0x2d')]);_0x4dbaae[_0xca2d('0x2c')]=qs['offset'](_0x5a3333['query']['offset']);}return _0xc70a1b[_0xca2d('0x75')](_0x4dbaae);}})[_0xca2d('0x1e')](function(_0x44e276){if(_0x44e276){return _0x44e276?{'count':_0x180daa,'rows':_0x44e276}:null;}})['then'](respondWithResult(_0x3f24b4,null))[_0xca2d('0x54')](handleError(_0x3f24b4,null));};exports[_0xca2d('0x77')]=function(_0x19dec7,_0x12de9b,_0x4c57d6){return db['WhatsappAccount'][_0xca2d('0x67')]({'where':{'id':_0x19dec7['params']['id']}})[_0xca2d('0x1e')](handleEntityNotFound(_0x12de9b,null))[_0xca2d('0x1e')](function(_0x597767){if(_0x597767){return db[_0xca2d('0x78')][_0xca2d('0x79')](function(_0x3403cc){return db[_0xca2d('0x7a')]['destroy']({'where':{'WhatsappAccountId':_0x19dec7[_0xca2d('0x56')]['id']},'transaction':_0x3403cc})[_0xca2d('0x1e')](function(_0x5d810c){var _0x29e0e5=_[_0xca2d('0x3d')](_0x19dec7[_0xca2d('0x5c')],function(_0x5d5129){_0x5d5129['WhatsappAccountId']=_0x19dec7[_0xca2d('0x56')]['id'];return _0x5d5129;});return db['WhatsappApplication'][_0xca2d('0x7b')](_0x29e0e5,{'transaction':_0x3403cc});});})[_0xca2d('0x1e')](function(){return db['WhatsappApplication']['findAndCountAll']({'where':{'WhatsappAccountId':_0x19dec7['params']['id']},'order':_0xca2d('0x7c')});});}})['then'](respondWithResult(_0x12de9b,null))['catch'](handleError(_0x12de9b,null));};exports[_0xca2d('0x7d')]=function(_0x3ac250,_0x41da3a,_0x13b1c4){var _0x336ce4={};var _0x1c0c16={};var _0x10170c;var _0x13b5e8;return db['WhatsappAccount']['findOne']({'where':{'id':_0x3ac250[_0xca2d('0x56')]['id']}})[_0xca2d('0x1e')](handleEntityNotFound(_0x41da3a,null))[_0xca2d('0x1e')](function(_0x4507ec){if(_0x4507ec){_0x10170c=_0x4507ec;_0x1c0c16[_0xca2d('0x40')]=_[_0xca2d('0x41')](db[_0xca2d('0x7a')][_0xca2d('0x57')]);_0x1c0c16[_0xca2d('0x46')]=_[_0xca2d('0x41')](_0x3ac250[_0xca2d('0x46')]);_0x1c0c16['filters']=_['intersection'](_0x1c0c16['model'],_0x1c0c16[_0xca2d('0x46')]);_0x336ce4[_0xca2d('0x44')]=_[_0xca2d('0x43')](_0x1c0c16[_0xca2d('0x40')],qs['fields'](_0x3ac250[_0xca2d('0x46')]['fields']));_0x336ce4[_0xca2d('0x44')]=_0x336ce4[_0xca2d('0x44')][_0xca2d('0x58')]?_0x336ce4[_0xca2d('0x44')]:_0x1c0c16[_0xca2d('0x40')];_0x336ce4[_0xca2d('0x49')]=qs[_0xca2d('0x4a')](_0x3ac250[_0xca2d('0x46')]['sort']);_0x336ce4[_0xca2d('0x4b')]=qs['filters'](_[_0xca2d('0x4c')](_0x3ac250[_0xca2d('0x46')],_0x1c0c16[_0xca2d('0x42')]));if(_0x3ac250[_0xca2d('0x46')][_0xca2d('0x4d')]){_0x336ce4[_0xca2d('0x4b')]=_[_0xca2d('0x4e')](_0x336ce4['where'],{'$or':_[_0xca2d('0x3d')](_0x336ce4[_0xca2d('0x44')],function(_0x3a28d5){var _0x4b3b23={};_0x4b3b23[_0x3a28d5]={'$like':'%'+_0x3ac250[_0xca2d('0x46')][_0xca2d('0x4d')]+'%'};return _0x4b3b23;})});}_0x336ce4=_[_0xca2d('0x4e')]({},_0x336ce4,_0x3ac250[_0xca2d('0x50')]);return _0x10170c[_0xca2d('0x7d')](_0x336ce4);}})[_0xca2d('0x1e')](function(_0x5be796){if(_0x5be796){_0x13b5e8=_0x5be796['length'];if(!_0x3ac250[_0xca2d('0x46')][_0xca2d('0x47')]('nolimit')){_0x336ce4[_0xca2d('0x2d')]=qs['limit'](_0x3ac250[_0xca2d('0x46')]['limit']);_0x336ce4[_0xca2d('0x2c')]=qs[_0xca2d('0x2c')](_0x3ac250['query'][_0xca2d('0x2c')]);}return _0x10170c[_0xca2d('0x7d')](_0x336ce4);}})[_0xca2d('0x1e')](function(_0x138a00){if(_0x138a00){return _0x138a00?{'count':_0x13b5e8,'rows':_0x138a00}:null;}})[_0xca2d('0x1e')](respondWithResult(_0x41da3a,null))[_0xca2d('0x54')](handleError(_0x41da3a,null));};exports[_0xca2d('0x7e')]=function(_0x483ca7,_0x356d0c,_0x55fd57){var _0x12d977={'channel':_0xca2d('0x7f')};var _0x2abfba=[];var _0x581422=[];var _0x11096e={};return db[_0xca2d('0x3e')][_0xca2d('0x5a')]({'where':{'id':_0x483ca7['params']['id']},'include':[{'model':db[_0xca2d('0x7a')],'as':_0xca2d('0x80')}]})[_0xca2d('0x1e')](handleEntityNotFound(_0x356d0c,null))['then'](function(_0x54a76d){_0x12d977[_0xca2d('0x81')]=_0x54a76d;_0x12d977[_0xca2d('0x82')]=_[_0xca2d('0x83')](_0x54a76d[_0xca2d('0x80')],[_0xca2d('0x7c')],['asc']);if(_0x12d977[_0xca2d('0x81')][_0xca2d('0x80')]){delete _0x12d977[_0xca2d('0x81')]['Applications'];}return db['CmContact'][_0xca2d('0x63')]();})[_0xca2d('0x1e')](function(_0x32493b){if(!_0x32493b){throw new db['Sequelize'][(_0xca2d('0x84'))](_0xca2d('0x85'));}_0x2abfba=_['difference'](_['keys'](_0x32493b),[_0xca2d('0x86'),_0xca2d('0x87')]);_0x581422=_[_0xca2d('0x88')](_[_0xca2d('0x41')](_0x32493b),[_0xca2d('0x86'),_0xca2d('0x87'),_0xca2d('0x89'),_0xca2d('0x8a')]);_0x12d977['body']={'mapKey':_0xca2d('0x8b')};if(_0x12d977[_0xca2d('0x81')]['type']&&_0x12d977['account']['type']===_0xca2d('0x8c')){_0x12d977['body'][_0xca2d('0x8d')]=_0x483ca7[_0xca2d('0x5c')]['From'][_0xca2d('0x8e')](_0xca2d('0x8f'),'');_0x12d977[_0xca2d('0x5c')][_0xca2d('0x5c')]=_0x483ca7[_0xca2d('0x5c')]['Body'];_0x12d977[_0xca2d('0x5c')][_0xca2d('0x90')]=_0x483ca7[_0xca2d('0x5c')]['MessageSid'];}if(_0x12d977[_0xca2d('0x5c')]['id']){delete _0x12d977['body']['id'];}if(_['isNil'](_0x12d977[_0xca2d('0x5c')][_0xca2d('0x8d')])){throw new db[(_0xca2d('0x91'))][(_0xca2d('0x84'))](_0xca2d('0x92'));}if(_['isNil'](_0x12d977['body'][_0xca2d('0x5c')])||_0x12d977['body'][_0xca2d('0x5c')]===''){throw new db['Sequelize'][(_0xca2d('0x84'))](_0xca2d('0x93'));}if(_[_0xca2d('0x94')](_0x12d977[_0xca2d('0x5c')][_0xca2d('0x95')])){throw new db['Sequelize']['ValidationError']('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x581422);}if(!_[_0xca2d('0x96')](_0x581422,_0x12d977[_0xca2d('0x5c')][_0xca2d('0x95')])){throw new db[(_0xca2d('0x91'))]['ValidationError'](_0xca2d('0x97')+_0x581422);}_0x11096e[_0x12d977[_0xca2d('0x5c')]['mapKey']]=_0x12d977[_0xca2d('0x5c')]['from'];return db['CmList'][_0xca2d('0x5a')]({'where':{'id':_0x12d977[_0xca2d('0x81')][_0xca2d('0x8a')]},'include':[{'model':db[_0xca2d('0x98')],'as':_0xca2d('0x99'),'where':_0x11096e,'limit':0x1,'order':[[_0xca2d('0x87'),_0xca2d('0x9a')]]}]});})[_0xca2d('0x1e')](handleEntityNotFound(_0x356d0c,null))[_0xca2d('0x1e')](function(_0x49b25c){if(_0x49b25c){_0x12d977[_0xca2d('0x9b')]=_[_0xca2d('0x9c')](_0x49b25c,['Contacts']);if(_0x49b25c[_0xca2d('0x99')]['length']){return _0x49b25c['Contacts'][0x0];}var _0x2a272f=_['defaults'](_0x12d977['body'],{'firstName':_0x12d977['body']['from'],'ListId':_0x49b25c['id']});_0x2a272f[_0x12d977['body'][_0xca2d('0x95')]]=_0x12d977['body'][_0xca2d('0x8d')];return db[_0xca2d('0x98')][_0xca2d('0x5b')](_0x2a272f,{'fields':_0x2abfba,'raw':!![]});}})['then'](handleEntityNotFound(_0x356d0c,null))[_0xca2d('0x1e')](function(_0x4f04dc){if(_0x4f04dc){_0x12d977[_0xca2d('0x9d')]=_0x4f04dc;var _0x3dfef7={'ContactId':_0x4f04dc['id'],'phone':_0x12d977[_0xca2d('0x5c')][_0xca2d('0x8d')],'WhatsappAccountId':_0x483ca7[_0xca2d('0x56')]['id']};var _0x3ec2f4={'ContactId':_0x4f04dc['id'],'WhatsappAccountId':_0x483ca7[_0xca2d('0x56')]['id'],'closed':![]};return db['WhatsappInteraction'][_0xca2d('0x5a')]({'where':_0x3ec2f4})['then'](function(_0x2fc2f7){if(_0x2fc2f7){return[_0x2fc2f7,![]];}return db[_0xca2d('0x9e')][_0xca2d('0x5b')](_0x3dfef7)[_0xca2d('0x1e')](function(_0x54e58e){return[_0x54e58e,!![]];});});}})[_0xca2d('0x70')](function(_0x257cec,_0x5aa491){_0x12d977[_0xca2d('0x9f')]=_0x257cec[_0xca2d('0x34')]({'plain':!![]});_0x12d977[_0xca2d('0x9f')][_0xca2d('0xa0')]=![];if(_0x5aa491){if(_0x12d977['account'][_0xca2d('0xa1')]){_0x12d977[_0xca2d('0x82')]['push']({'id':0x0,'priority':_0x12d977['applications'][_0xca2d('0x58')]+0x1,'app':_0xca2d('0xa2'),'appdata':_0xca2d('0xa3'),'interval':_0xca2d('0xa4')});}_0x12d977[_0xca2d('0x9f')]['created']=!![];}return db[_0xca2d('0xa5')]['create']({'phone':_0x12d977[_0xca2d('0x5c')][_0xca2d('0x8d')],'messageId':_0x12d977['body'][_0xca2d('0x90')],'body':_0x12d977[_0xca2d('0x5c')]['body'],'WhatsappAccountId':_0x483ca7['params']['id'],'WhatsappInteractionId':_0x257cec['id'],'direction':'in','ContactId':_0x257cec[_0xca2d('0xa6')],'AttachmentId':_0x12d977['body']['AttachmentId']});})[_0xca2d('0x1e')](function(_0x43cf70){_0x12d977[_0xca2d('0x25')]=_0x43cf70;if(_0x12d977[_0xca2d('0x9f')][_0xca2d('0xa7')]){return db[_0xca2d('0x76')][_0xca2d('0x5a')]({'attributes':['id','name'],'where':{'id':_0x12d977[_0xca2d('0x9f')]['UserId']}})[_0xca2d('0x1e')](function(_0x4afda5){if(_0x4afda5){_0x12d977[_0xca2d('0x82')][_0xca2d('0xa8')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x4afda5[_0xca2d('0x38')]+','+(_0x12d977[_0xca2d('0x81')][_0xca2d('0xa9')]||0xa),'interval':_0xca2d('0xa4')});}return respondWithRpcPromise(_0xca2d('0xaa'),'startRouting',_0x12d977);});}return respondWithRpcPromise(_0xca2d('0xaa'),'startRouting',_0x12d977);})[_0xca2d('0x1e')](function(_0x1bd9d9){if(_0x1bd9d9){var _0x4a1f2a=0xc8;var _0x3adb7f='receiveMessage';logger['info'](_0xca2d('0xab'),_0x3adb7f,_0x4a1f2a,_0xca2d('0xac'));logger[_0xca2d('0x22')](_0xca2d('0xad'),_0x3adb7f,_0x4a1f2a,_0xca2d('0xac'),JSON[_0xca2d('0x23')](_0x1bd9d9));if(_0x12d977['account'][_0xca2d('0x4f')]==='twilio'){return _0x356d0c[_0xca2d('0x28')](_0x4a1f2a)[_0xca2d('0x2e')](_0xca2d('0xae'),_0xca2d('0xaf'))['send']('<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>');}else{return _0x356d0c[_0xca2d('0x28')](_0x4a1f2a)[_0xca2d('0x2a')](_0x1bd9d9);}}})[_0xca2d('0x54')](handleError(_0x356d0c,null));};exports[_0xca2d('0x39')]=function(_0x435e50,_0x25fe55,_0x20446a){var _0x277f5c,_0x4be97a,_0x34eb60;if(_[_0xca2d('0x94')](_0x435e50[_0xca2d('0x5c')][_0xca2d('0x5c')])||_0x435e50[_0xca2d('0x5c')][_0xca2d('0x5c')]===''){throw new db[(_0xca2d('0x91'))][(_0xca2d('0x84'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_['isNil'](_0x435e50['body']['to'])){throw new db['Sequelize'][(_0xca2d('0x84'))](_0xca2d('0xb0'));}_0x277f5c=_0x435e50[_0xca2d('0x5c')]['to'];return db[_0xca2d('0x3e')]['find']({'where':{'id':_0x435e50[_0xca2d('0x56')]['id']},'include':[{'model':db[_0xca2d('0xb1')],'as':_0xca2d('0xb2'),'include':[{'model':db[_0xca2d('0x98')],'as':'Contacts','where':{'mobile':_0x277f5c},'limit':0x1,'order':[[_0xca2d('0x87'),_0xca2d('0x9a')]]}]}]})['then'](handleEntityNotFound(_0x25fe55,null))['then'](function(_0x4c153d){if(_0x4c153d&&_0x4c153d[_0xca2d('0xb2')]){_0x4be97a=_0x4c153d[_0xca2d('0x34')]({'plain':!![]});if(_0x4be97a[_0xca2d('0xb2')]&&_0x4be97a[_0xca2d('0xb2')][_0xca2d('0x99')]['length']){return _0x4be97a['List'][_0xca2d('0x99')][0x0];}return db['CmContact'][_0xca2d('0x5b')](_[_0xca2d('0x17')](_0x435e50['body'],{'firstName':_0x277f5c,'mobile':_0x277f5c,'phone':_0x277f5c,'ListId':_0x4be97a[_0xca2d('0x8a')]}));}})[_0xca2d('0x1e')](handleEntityNotFound(_0x25fe55,null))[_0xca2d('0x1e')](function(_0x2b4a69){if(_0x2b4a69){_0x34eb60=_0x2b4a69;return db['WhatsappInteraction'][_0xca2d('0x5a')]({'where':{'ContactId':_0x34eb60['id'],'closed':![],'WhatsappAccountId':_0x4be97a['id']}})[_0xca2d('0x1e')](function(_0x32e4e4){if(_0x32e4e4){return[_0x32e4e4,![]];}return db[_0xca2d('0x9e')]['create']({'UserId':_0x435e50['user']['id'],'ContactId':_0x34eb60['id'],'WhatsappAccountId':_0x4be97a['id'],'phone':_0x277f5c,'firstMsgDirection':_0xca2d('0xb3'),'Messages':[_[_0xca2d('0x4e')](_0x435e50[_0xca2d('0x5c')],{'read':![],'body':_0x435e50[_0xca2d('0x5c')][_0xca2d('0x5c')],'phone':_0x277f5c,'WhatsappAccountId':_0x4be97a['id'],'UserId':_0x435e50[_0xca2d('0x5d')]['id'],'ContactId':_0x34eb60['id']})]},{'include':[{'model':db[_0xca2d('0xa5')],'as':_0xca2d('0xb4')}]})[_0xca2d('0x1e')](function(_0x267818){return[_0x267818,!![]];});});}})[_0xca2d('0x70')](function(_0x32ae98,_0x7448b0){if(_0x7448b0){return _0x32ae98;}return db[_0xca2d('0xa5')][_0xca2d('0x5b')](_[_0xca2d('0x4e')](_0x435e50[_0xca2d('0x5c')],{'read':![],'body':_0x435e50[_0xca2d('0x5c')][_0xca2d('0x5c')],'phone':_0x277f5c,'WhatsappAccountId':_0x4be97a['id'],'WhatsappInteractionId':_0x32ae98['id'],'UserId':_0x435e50[_0xca2d('0x5d')]['id'],'ContactId':_0x34eb60['id']}))[_0xca2d('0x1e')](function(_0x4ebcfe){_0x32ae98[_0xca2d('0xb5')][_0xca2d('0xb4')]=[];_0x32ae98[_0xca2d('0xb5')][_0xca2d('0xb4')][_0xca2d('0xb6')](_0x4ebcfe[_0xca2d('0xb5')]);return _0x32ae98;});})['then'](respondWithResult(_0x25fe55,null))[_0xca2d('0x54')](handleError(_0x25fe55,null));};
\ No newline at end of file
+var _0x3e01=['desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/environment','../../config/license/util','redis','defaults','localhost','./whatsappAccount.socket','register','client','http','request','then','info','WhatsappAccount,\x20%s,\x20%s','request\x20sent','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','sendStatus','json','offset','limit','undefined','count','status','set','Content-Range','apply','reject','save','update','destroy','get','WhatsappAccounts','UserProfileResource','stack','name','send','index','Pause','map','WhatsappAccount','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filters','pick','where','VIRTUAL','merge','includeAll','findAll','rows','catch','show','params','mandatoryDispositionPause','find','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','addDisposition','WhatsappAccountId','Disposition','rawAttributes','filter','include','removeDispositions','ids','addAnswer','getAnswers','CannedAnswer','options','removeAnswers','addAgents','omit','spread','emit','userWhatsappAccount:save','removeAgents','isArray','getAgents','findOne','User','addApplications','sequelize','transaction','WhatsappApplication','bulkCreate','findAndCountAll','priority','getApplications','notify','Applications','account','type','sinch','statuses','WhatsappMessage','timestamp','applications','orderBy','asc','CmContact','Sequelize','createdAt','updatedAt','difference','CompanyId','mobile','twilio','from','replace','whatsapp:','messageId','MessageSid','notifications','message_id','from\x20is\x20mandatory','ValidationError','body\x20is\x20mandatory\x20and\x20not\x20empty','isNil','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','ListId','Contacts','DESC','list','contact','WhatsappInteraction','created','autoclose','push','close','interaction','ContactId','AttachmentId','UserId','unshift','agent','waitForTheAssignedAgent','*,*,*,*','Start','receiveMessage','entity\x20found','Content-Type','List','out','user','Messages','dataValues','eml-format','rimraf','fast-json-patch','moment','bluebird','util','sox','to-csv','fs-extra','squel','crypto','jsforce'];(function(_0x5a7e3c,_0xdc9219){var _0x59252b=function(_0x29655c){while(--_0x29655c){_0x5a7e3c['push'](_0x5a7e3c['shift']());}};_0x59252b(++_0xdc9219);}(_0x3e01,0xb3));var _0x13e0=function(_0x345b15,_0xd4c28c){_0x345b15=_0x345b15-0x0;var _0x13726f=_0x3e01[_0x345b15];return _0x13726f;};'use strict';var emlformat=require(_0x13e0('0x0'));var rimraf=require(_0x13e0('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x13e0('0x2'));var rp=require('request-promise');var moment=require(_0x13e0('0x3'));var BPromise=require(_0x13e0('0x4'));var Mustache=require('mustache');var util=require(_0x13e0('0x5'));var path=require('path');var sox=require(_0x13e0('0x6'));var csv=require(_0x13e0('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x13e0('0x8'));var _=require('lodash');var squel=require(_0x13e0('0x9'));var crypto=require(_0x13e0('0xa'));var jsforce=require(_0x13e0('0xb'));var deskjs=require(_0x13e0('0xc'));var toCsv=require(_0x13e0('0x7'));var querystring=require('querystring');var Papa=require(_0x13e0('0xd'));var Redis=require(_0x13e0('0xe'));var authService=require(_0x13e0('0xf'));var qs=require(_0x13e0('0x10'));var as=require(_0x13e0('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x13e0('0x12'))('api');var utils=require('../../config/utils');var config=require(_0x13e0('0x13'));var licenseUtil=require(_0x13e0('0x14'));var db=require('../../mysqldb')['db'];config[_0x13e0('0x15')]=_[_0x13e0('0x16')](config[_0x13e0('0x15')],{'host':_0x13e0('0x17'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x13e0('0x15')]));require(_0x13e0('0x18'))[_0x13e0('0x19')](socket);var jayson=require('jayson/promise');var client=jayson[_0x13e0('0x1a')][_0x13e0('0x1b')]({'port':0x232c});function respondWithRpcPromise(_0x35acff,_0x5f0831,_0x4d2868,_0x30607b){return new BPromise(function(_0x22f053,_0x1da4fa){var _0x29594b=_0x30607b||client;return _0x29594b[_0x13e0('0x1c')](_0x35acff,_0x4d2868)[_0x13e0('0x1d')](function(_0x2327e3){logger[_0x13e0('0x1e')](_0x13e0('0x1f'),_0x5f0831,_0x13e0('0x20'));logger[_0x13e0('0x21')](_0x13e0('0x22'),_0x5f0831,_0x13e0('0x20'),JSON[_0x13e0('0x23')](_0x2327e3));if(_0x2327e3[_0x13e0('0x24')]){if(_0x2327e3['error'][_0x13e0('0x25')]===0x1f4){logger[_0x13e0('0x24')](_0x13e0('0x1f'),_0x5f0831,_0x2327e3[_0x13e0('0x24')]['message']);return _0x1da4fa(_0x2327e3[_0x13e0('0x24')][_0x13e0('0x26')]);}logger[_0x13e0('0x24')](_0x13e0('0x1f'),_0x5f0831,_0x2327e3[_0x13e0('0x24')]['message']);return _0x22f053(_0x2327e3[_0x13e0('0x24')]['message']);}else{logger[_0x13e0('0x1e')](_0x13e0('0x1f'),_0x5f0831,'request\x20sent');_0x22f053(_0x2327e3[_0x13e0('0x27')][_0x13e0('0x26')]);}})['catch'](function(_0x119860){logger['error'](_0x13e0('0x1f'),_0x5f0831,_0x119860);_0x1da4fa(_0x119860);});});}function respondWithStatusCode(_0x398ee4,_0x208db5){_0x208db5=_0x208db5||0xcc;return function(_0x105cc1){if(_0x105cc1){return _0x398ee4[_0x13e0('0x28')](_0x208db5);}return _0x398ee4['status'](_0x208db5)['end']();};}function respondWithResult(_0x549c4b,_0x51c1d8){_0x51c1d8=_0x51c1d8||0xc8;return function(_0x340da0){if(_0x340da0){return _0x549c4b['status'](_0x51c1d8)[_0x13e0('0x29')](_0x340da0);}};}function respondWithFilteredResult(_0xc3a8e7,_0x3aa68d){return function(_0x277e1f){if(_0x277e1f){var _0x123b22=typeof _0x3aa68d[_0x13e0('0x2a')]==='undefined'&&typeof _0x3aa68d[_0x13e0('0x2b')]===_0x13e0('0x2c');var _0x4efbca=_0x277e1f[_0x13e0('0x2d')];var _0x445fd7=_0x123b22?0x0:_0x3aa68d['offset'];var _0x4dc940=_0x123b22?_0x277e1f[_0x13e0('0x2d')]:_0x3aa68d[_0x13e0('0x2a')]+_0x3aa68d['limit'];var _0x5bf217;if(_0x4dc940>=_0x4efbca){_0x4dc940=_0x4efbca;_0x5bf217=0xc8;}else{_0x5bf217=0xce;}_0xc3a8e7[_0x13e0('0x2e')](_0x5bf217);return _0xc3a8e7[_0x13e0('0x2f')](_0x13e0('0x30'),_0x445fd7+'-'+_0x4dc940+'/'+_0x4efbca)['json'](_0x277e1f);}return null;};}function patchUpdates(_0x3a4c1f){return function(_0x2d33dc){try{jsonpatch[_0x13e0('0x31')](_0x2d33dc,_0x3a4c1f,!![]);}catch(_0x5998b5){return BPromise[_0x13e0('0x32')](_0x5998b5);}return _0x2d33dc[_0x13e0('0x33')]();};}function saveUpdates(_0x33be21,_0x28085a){return function(_0x3d5677){if(_0x3d5677){return _0x3d5677[_0x13e0('0x34')](_0x33be21)[_0x13e0('0x1d')](function(_0x4456c8){return _0x4456c8;});}return null;};}function removeEntity(_0x442448,_0x4e7d7d){return function(_0xcb204e){if(_0xcb204e){return _0xcb204e[_0x13e0('0x35')]()[_0x13e0('0x1d')](function(){var _0x1bc755=_0xcb204e[_0x13e0('0x36')]({'plain':!![]});var _0x47e6ab=_0x13e0('0x37');return db[_0x13e0('0x38')][_0x13e0('0x35')]({'where':{'type':_0x47e6ab,'resourceId':_0x1bc755['id']}})[_0x13e0('0x1d')](function(){return _0xcb204e;});})[_0x13e0('0x1d')](function(){_0x442448[_0x13e0('0x2e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2fcf0a,_0x5967a1){return function(_0x26a657){if(!_0x26a657){_0x2fcf0a['sendStatus'](0x194);}return _0x26a657;};}function handleError(_0x3a90fb,_0x3bad43){_0x3bad43=_0x3bad43||0x1f4;return function(_0x12039){logger[_0x13e0('0x24')](_0x12039[_0x13e0('0x39')]);if(_0x12039[_0x13e0('0x3a')]){delete _0x12039[_0x13e0('0x3a')];}_0x3a90fb[_0x13e0('0x2e')](_0x3bad43)[_0x13e0('0x3b')](_0x12039);};}exports[_0x13e0('0x3c')]=function(_0x167524,_0x570cf2){var _0x56c553={'include':[{'model':db[_0x13e0('0x3d')],'as':'mandatoryDispositionPause'}]},_0x106a18={},_0x2efbea={'count':0x0,'rows':[]};var _0x1842ab=_[_0x13e0('0x3e')](db[_0x13e0('0x3f')]['rawAttributes'],function(_0x3b6e43){return{'name':_0x3b6e43['fieldName'],'type':_0x3b6e43['type'][_0x13e0('0x40')]};});_0x106a18[_0x13e0('0x41')]=_[_0x13e0('0x3e')](_0x1842ab,_0x13e0('0x3a'));_0x106a18[_0x13e0('0x42')]=_[_0x13e0('0x43')](_0x167524[_0x13e0('0x42')]);_0x106a18['filters']=_[_0x13e0('0x44')](_0x106a18[_0x13e0('0x41')],_0x106a18[_0x13e0('0x42')]);_0x56c553[_0x13e0('0x45')]=_['intersection'](_0x106a18[_0x13e0('0x41')],qs[_0x13e0('0x46')](_0x167524[_0x13e0('0x42')][_0x13e0('0x46')]));_0x56c553[_0x13e0('0x45')]=_0x56c553[_0x13e0('0x45')][_0x13e0('0x47')]?_0x56c553['attributes']:_0x106a18[_0x13e0('0x41')];if(!_0x167524[_0x13e0('0x42')][_0x13e0('0x48')](_0x13e0('0x49'))){_0x56c553[_0x13e0('0x2b')]=qs['limit'](_0x167524[_0x13e0('0x42')]['limit']);_0x56c553['offset']=qs[_0x13e0('0x2a')](_0x167524[_0x13e0('0x42')]['offset']);}_0x56c553[_0x13e0('0x4a')]=qs[_0x13e0('0x4b')](_0x167524[_0x13e0('0x42')][_0x13e0('0x4b')]);_0x56c553['where']=qs[_0x13e0('0x4c')](_[_0x13e0('0x4d')](_0x167524['query'],_0x106a18[_0x13e0('0x4c')]),_0x1842ab);if(_0x167524[_0x13e0('0x42')]['filter']){_0x56c553[_0x13e0('0x4e')]=_['merge'](_0x56c553['where'],{'$or':_[_0x13e0('0x3e')](_0x1842ab,function(_0x461620){if(_0x461620['type']!==_0x13e0('0x4f')){var _0x2aa4e1={};_0x2aa4e1[_0x461620[_0x13e0('0x3a')]]={'$like':'%'+_0x167524[_0x13e0('0x42')]['filter']+'%'};return _0x2aa4e1;}})});}_0x56c553=_[_0x13e0('0x50')]({},_0x56c553,_0x167524['options']);var _0x46484f={'where':_0x56c553[_0x13e0('0x4e')]};return db[_0x13e0('0x3f')][_0x13e0('0x2d')](_0x46484f)[_0x13e0('0x1d')](function(_0x33e7de){_0x2efbea[_0x13e0('0x2d')]=_0x33e7de;if(_0x167524[_0x13e0('0x42')][_0x13e0('0x51')]){_0x56c553['include']=[{'all':!![]}];}return db[_0x13e0('0x3f')][_0x13e0('0x52')](_0x56c553);})[_0x13e0('0x1d')](function(_0x312e34){_0x2efbea[_0x13e0('0x53')]=_0x312e34;return _0x2efbea;})[_0x13e0('0x1d')](respondWithFilteredResult(_0x570cf2,_0x56c553))[_0x13e0('0x54')](handleError(_0x570cf2,null));};exports[_0x13e0('0x55')]=function(_0x10439d,_0x2b1778){var _0x574306={'raw':![],'where':{'id':_0x10439d[_0x13e0('0x56')]['id']},'include':[{'model':db[_0x13e0('0x3d')],'as':_0x13e0('0x57')}]},_0x1d9269={};_0x1d9269[_0x13e0('0x41')]=_[_0x13e0('0x43')](db[_0x13e0('0x3f')]['rawAttributes']);_0x1d9269['query']=_[_0x13e0('0x43')](_0x10439d[_0x13e0('0x42')]);_0x1d9269[_0x13e0('0x4c')]=_[_0x13e0('0x44')](_0x1d9269[_0x13e0('0x41')],_0x1d9269['query']);_0x574306[_0x13e0('0x45')]=_[_0x13e0('0x44')](_0x1d9269[_0x13e0('0x41')],qs['fields'](_0x10439d[_0x13e0('0x42')][_0x13e0('0x46')]));_0x574306[_0x13e0('0x45')]=_0x574306[_0x13e0('0x45')][_0x13e0('0x47')]?_0x574306[_0x13e0('0x45')]:_0x1d9269[_0x13e0('0x41')];if(_0x10439d[_0x13e0('0x42')][_0x13e0('0x51')]){_0x574306['include']=[{'all':!![]}];}_0x574306=_[_0x13e0('0x50')]({},_0x574306,_0x10439d['options']);return db[_0x13e0('0x3f')][_0x13e0('0x58')](_0x574306)[_0x13e0('0x1d')](handleEntityNotFound(_0x2b1778,null))[_0x13e0('0x1d')](respondWithResult(_0x2b1778,null))[_0x13e0('0x54')](handleError(_0x2b1778,null));};exports[_0x13e0('0x59')]=function(_0x3d6405,_0x23dbf6){return db[_0x13e0('0x3f')][_0x13e0('0x59')](_0x3d6405['body'],{})[_0x13e0('0x1d')](function(_0x402786){var _0x1a7692=_0x3d6405['user']['get']({'plain':!![]});if(!_0x1a7692)throw new Error(_0x13e0('0x5a'));if(_0x1a7692[_0x13e0('0x5b')]==='user'){var _0x6799ec=_0x402786[_0x13e0('0x36')]({'plain':!![]});var _0x1cf154=_0x13e0('0x37');return db[_0x13e0('0x5c')]['find']({'where':{'name':_0x1cf154,'userProfileId':_0x1a7692[_0x13e0('0x5d')]},'raw':!![]})[_0x13e0('0x1d')](function(_0x5b2887){if(_0x5b2887&&_0x5b2887[_0x13e0('0x5e')]===0x0){return db[_0x13e0('0x38')][_0x13e0('0x59')]({'name':_0x6799ec[_0x13e0('0x3a')],'resourceId':_0x6799ec['id'],'type':_0x5b2887[_0x13e0('0x3a')],'sectionId':_0x5b2887['id']},{})[_0x13e0('0x1d')](function(){return _0x402786;});}else{return _0x402786;}})[_0x13e0('0x54')](function(_0x270191){logger[_0x13e0('0x24')](_0x13e0('0x5f'),_0x270191);throw _0x270191;});}return _0x402786;})[_0x13e0('0x1d')](respondWithResult(_0x23dbf6,0xc9))[_0x13e0('0x54')](handleError(_0x23dbf6,null));};exports[_0x13e0('0x34')]=function(_0x4e3ec6,_0x3aaa21){if(_0x4e3ec6['body']['id']){delete _0x4e3ec6[_0x13e0('0x60')]['id'];}return db[_0x13e0('0x3f')][_0x13e0('0x58')]({'where':{'id':_0x4e3ec6[_0x13e0('0x56')]['id']},'include':[{'model':db[_0x13e0('0x3d')],'as':'mandatoryDispositionPause'}]})[_0x13e0('0x1d')](handleEntityNotFound(_0x3aaa21,null))[_0x13e0('0x1d')](saveUpdates(_0x4e3ec6[_0x13e0('0x60')],null))[_0x13e0('0x1d')](respondWithResult(_0x3aaa21,null))['catch'](handleError(_0x3aaa21,null));};exports[_0x13e0('0x35')]=function(_0x121159,_0x3f3817){return db[_0x13e0('0x3f')][_0x13e0('0x58')]({'where':{'id':_0x121159['params']['id']}})[_0x13e0('0x1d')](handleEntityNotFound(_0x3f3817,null))[_0x13e0('0x1d')](removeEntity(_0x3f3817,null))[_0x13e0('0x54')](handleError(_0x3f3817,null));};exports[_0x13e0('0x61')]=function(_0x1b36cf,_0x492886){return db[_0x13e0('0x3f')][_0x13e0('0x61')]()[_0x13e0('0x1d')](respondWithResult(_0x492886,null))[_0x13e0('0x54')](handleError(_0x492886,null));};exports[_0x13e0('0x62')]=function(_0x283012,_0x16b69d,_0x3c71e2){if(_0x283012[_0x13e0('0x60')]['id']){delete _0x283012['body']['id'];}return db['WhatsappAccount'][_0x13e0('0x58')]({'where':{'id':_0x283012[_0x13e0('0x56')]['id']}})[_0x13e0('0x1d')](handleEntityNotFound(_0x16b69d,null))['then'](function(_0x979803){if(_0x979803){_0x283012['body'][_0x13e0('0x63')]=_0x979803['id'];return db[_0x13e0('0x64')][_0x13e0('0x59')](_0x283012[_0x13e0('0x60')]);}})[_0x13e0('0x1d')](respondWithResult(_0x16b69d,null))[_0x13e0('0x54')](handleError(_0x16b69d,null));};exports['getDispositions']=function(_0x30c4c3,_0x5aa27a,_0x293f39){var _0x4012a3={'raw':![],'where':{}};var _0x49d1d0={};var _0xa392ca={'count':0x0,'rows':[]};return db[_0x13e0('0x3f')]['findOne']({'where':{'id':_0x30c4c3['params']['id']}})[_0x13e0('0x1d')](handleEntityNotFound(_0x5aa27a,null))[_0x13e0('0x1d')](function(_0x55af44){if(_0x55af44){_0x49d1d0[_0x13e0('0x41')]=_[_0x13e0('0x43')](db[_0x13e0('0x64')][_0x13e0('0x65')]);_0x49d1d0[_0x13e0('0x42')]=_[_0x13e0('0x43')](_0x30c4c3[_0x13e0('0x42')]);_0x49d1d0[_0x13e0('0x4c')]=_[_0x13e0('0x44')](_0x49d1d0[_0x13e0('0x41')],_0x49d1d0['query']);_0x4012a3[_0x13e0('0x45')]=_['intersection'](_0x49d1d0[_0x13e0('0x41')],qs[_0x13e0('0x46')](_0x30c4c3[_0x13e0('0x42')][_0x13e0('0x46')]));_0x4012a3[_0x13e0('0x45')]=_0x4012a3[_0x13e0('0x45')][_0x13e0('0x47')]?_0x4012a3['attributes']:_0x49d1d0[_0x13e0('0x41')];if(!_0x30c4c3[_0x13e0('0x42')][_0x13e0('0x48')](_0x13e0('0x49'))){_0x4012a3[_0x13e0('0x2b')]=qs[_0x13e0('0x2b')](_0x30c4c3[_0x13e0('0x42')][_0x13e0('0x2b')]);_0x4012a3[_0x13e0('0x2a')]=qs[_0x13e0('0x2a')](_0x30c4c3[_0x13e0('0x42')][_0x13e0('0x2a')]);}_0x4012a3[_0x13e0('0x4a')]=qs[_0x13e0('0x4b')](_0x30c4c3[_0x13e0('0x42')]['sort']);_0x4012a3[_0x13e0('0x4e')]=qs['filters'](_[_0x13e0('0x4d')](_0x30c4c3[_0x13e0('0x42')],_0x49d1d0[_0x13e0('0x4c')]));_0x4012a3[_0x13e0('0x4e')][_0x13e0('0x63')]=_0x55af44['id'];if(_0x30c4c3[_0x13e0('0x42')][_0x13e0('0x66')]){_0x4012a3[_0x13e0('0x4e')]=_[_0x13e0('0x50')](_0x4012a3[_0x13e0('0x4e')],{'$or':_['map'](_0x4012a3[_0x13e0('0x45')],function(_0x2a4dfa){var _0x109c9e={};_0x109c9e[_0x2a4dfa]={'$like':'%'+_0x30c4c3[_0x13e0('0x42')][_0x13e0('0x66')]+'%'};return _0x109c9e;})});}_0x4012a3=_['merge']({},_0x4012a3,_0x30c4c3['options']);return db[_0x13e0('0x64')][_0x13e0('0x2d')]({'where':_0x4012a3['where']})[_0x13e0('0x1d')](function(_0x287aae){_0xa392ca[_0x13e0('0x2d')]=_0x287aae;if(_0x30c4c3[_0x13e0('0x42')]['includeAll']){_0x4012a3[_0x13e0('0x67')]=[{'all':!![]}];}return db[_0x13e0('0x64')][_0x13e0('0x52')](_0x4012a3);})[_0x13e0('0x1d')](function(_0x20b23f){_0xa392ca[_0x13e0('0x53')]=_0x20b23f;return _0xa392ca;});}})[_0x13e0('0x1d')](respondWithFilteredResult(_0x5aa27a,_0x4012a3))[_0x13e0('0x54')](handleError(_0x5aa27a,null));};exports[_0x13e0('0x68')]=function(_0x1725ca,_0x1da88,_0x315465){return db[_0x13e0('0x3f')][_0x13e0('0x58')]({'where':{'id':_0x1725ca[_0x13e0('0x56')]['id']}})[_0x13e0('0x1d')](handleEntityNotFound(_0x1da88,null))[_0x13e0('0x1d')](function(_0x1cc257){if(_0x1cc257){return _0x1cc257[_0x13e0('0x68')](_0x1725ca[_0x13e0('0x42')][_0x13e0('0x69')]);}})[_0x13e0('0x1d')](respondWithStatusCode(_0x1da88,null))[_0x13e0('0x54')](handleError(_0x1da88,null));};exports[_0x13e0('0x6a')]=function(_0x2c9735,_0x4ac5e9,_0x269a79){if(_0x2c9735[_0x13e0('0x60')]['id']){delete _0x2c9735['body']['id'];}return db['WhatsappAccount'][_0x13e0('0x58')]({'where':{'id':_0x2c9735['params']['id']}})[_0x13e0('0x1d')](handleEntityNotFound(_0x4ac5e9,null))['then'](function(_0x4f1e3a){if(_0x4f1e3a){_0x2c9735[_0x13e0('0x60')][_0x13e0('0x63')]=_0x4f1e3a['id'];return db['CannedAnswer']['create'](_0x2c9735[_0x13e0('0x60')]);}})[_0x13e0('0x1d')](respondWithResult(_0x4ac5e9,null))[_0x13e0('0x54')](handleError(_0x4ac5e9,null));};exports[_0x13e0('0x6b')]=function(_0x467f06,_0x5569ad,_0x36640b){var _0x21854d={'raw':![],'where':{}};var _0x3556ea={};var _0x3dfb86={'count':0x0,'rows':[]};return db[_0x13e0('0x3f')]['findOne']({'where':{'id':_0x467f06[_0x13e0('0x56')]['id']}})['then'](handleEntityNotFound(_0x5569ad,null))[_0x13e0('0x1d')](function(_0x4a0c3b){if(_0x4a0c3b){_0x3556ea[_0x13e0('0x41')]=_[_0x13e0('0x43')](db[_0x13e0('0x6c')][_0x13e0('0x65')]);_0x3556ea['query']=_['keys'](_0x467f06[_0x13e0('0x42')]);_0x3556ea[_0x13e0('0x4c')]=_[_0x13e0('0x44')](_0x3556ea['model'],_0x3556ea[_0x13e0('0x42')]);_0x21854d[_0x13e0('0x45')]=_['intersection'](_0x3556ea[_0x13e0('0x41')],qs[_0x13e0('0x46')](_0x467f06[_0x13e0('0x42')][_0x13e0('0x46')]));_0x21854d[_0x13e0('0x45')]=_0x21854d['attributes'][_0x13e0('0x47')]?_0x21854d[_0x13e0('0x45')]:_0x3556ea[_0x13e0('0x41')];if(!_0x467f06[_0x13e0('0x42')][_0x13e0('0x48')](_0x13e0('0x49'))){_0x21854d[_0x13e0('0x2b')]=qs[_0x13e0('0x2b')](_0x467f06[_0x13e0('0x42')]['limit']);_0x21854d['offset']=qs[_0x13e0('0x2a')](_0x467f06[_0x13e0('0x42')]['offset']);}_0x21854d['order']=qs['sort'](_0x467f06['query'][_0x13e0('0x4b')]);_0x21854d[_0x13e0('0x4e')]=qs['filters'](_[_0x13e0('0x4d')](_0x467f06['query'],_0x3556ea[_0x13e0('0x4c')]));_0x21854d[_0x13e0('0x4e')][_0x13e0('0x63')]=_0x4a0c3b['id'];if(_0x467f06[_0x13e0('0x42')][_0x13e0('0x66')]){_0x21854d[_0x13e0('0x4e')]=_['merge'](_0x21854d[_0x13e0('0x4e')],{'$or':_[_0x13e0('0x3e')](_0x21854d[_0x13e0('0x45')],function(_0x82ec3b){var _0x1a6eeb={};_0x1a6eeb[_0x82ec3b]={'$like':'%'+_0x467f06['query']['filter']+'%'};return _0x1a6eeb;})});}_0x21854d=_['merge']({},_0x21854d,_0x467f06[_0x13e0('0x6d')]);return db[_0x13e0('0x6c')][_0x13e0('0x2d')]({'where':_0x21854d[_0x13e0('0x4e')]})[_0x13e0('0x1d')](function(_0x3b886f){_0x3dfb86[_0x13e0('0x2d')]=_0x3b886f;if(_0x467f06['query']['includeAll']){_0x21854d[_0x13e0('0x67')]=[{'all':!![]}];}return db[_0x13e0('0x6c')][_0x13e0('0x52')](_0x21854d);})['then'](function(_0x12a012){_0x3dfb86['rows']=_0x12a012;return _0x3dfb86;});}})[_0x13e0('0x1d')](respondWithFilteredResult(_0x5569ad,_0x21854d))[_0x13e0('0x54')](handleError(_0x5569ad,null));};exports[_0x13e0('0x6e')]=function(_0x4dbc91,_0x13377c,_0x1bfde7){return db['WhatsappAccount']['find']({'where':{'id':_0x4dbc91['params']['id']}})[_0x13e0('0x1d')](handleEntityNotFound(_0x13377c,null))['then'](function(_0x4a526e){if(_0x4a526e){return _0x4a526e[_0x13e0('0x6e')](_0x4dbc91[_0x13e0('0x42')][_0x13e0('0x69')]);}})[_0x13e0('0x1d')](respondWithStatusCode(_0x13377c,null))['catch'](handleError(_0x13377c,null));};exports[_0x13e0('0x6f')]=function(_0x3a771a,_0x2e7f10,_0x41fe76){return db[_0x13e0('0x3f')][_0x13e0('0x58')]({'where':{'id':_0x3a771a[_0x13e0('0x56')]['id']}})[_0x13e0('0x1d')](handleEntityNotFound(_0x2e7f10,null))['then'](function(_0x1c9207){if(_0x1c9207){return _0x1c9207['addAgents'](_0x3a771a['body'][_0x13e0('0x69')],_[_0x13e0('0x70')](_0x3a771a[_0x13e0('0x60')],[_0x13e0('0x69'),'id'])||{})[_0x13e0('0x71')](function(_0x214c98){for(var _0x2a82f0=0x0;_0x2a82f0<_0x3a771a[_0x13e0('0x60')]['ids'][_0x13e0('0x47')];_0x2a82f0+=0x1){socket[_0x13e0('0x72')](_0x13e0('0x73'),{'UserId':Number(_0x3a771a['body']['ids'][_0x2a82f0]),'WhatsappAccountId':Number(_0x3a771a[_0x13e0('0x56')]['id'])});}return _0x214c98;});}})[_0x13e0('0x1d')](respondWithResult(_0x2e7f10,null))[_0x13e0('0x54')](handleError(_0x2e7f10,null));};exports['removeAgents']=function(_0x5e3fb6,_0x5e4b75,_0x9ada22){return db['WhatsappAccount'][_0x13e0('0x58')]({'where':{'id':_0x5e3fb6['params']['id']}})[_0x13e0('0x1d')](handleEntityNotFound(_0x5e4b75,null))[_0x13e0('0x1d')](function(_0x2db574){if(_0x2db574){return _0x2db574[_0x13e0('0x74')](_0x5e3fb6[_0x13e0('0x42')][_0x13e0('0x69')])['then'](function(){if(_[_0x13e0('0x75')](_0x5e3fb6[_0x13e0('0x42')][_0x13e0('0x69')])){for(var _0x57161f=0x0;_0x57161f<_0x5e3fb6[_0x13e0('0x42')][_0x13e0('0x69')]['length'];_0x57161f+=0x1){socket['emit']('userWhatsappAccount:remove',{'UserId':Number(_0x5e3fb6[_0x13e0('0x42')]['ids'][_0x57161f]),'WhatsappAccountId':Number(_0x5e3fb6[_0x13e0('0x56')]['id'])});}}else{socket[_0x13e0('0x72')]('userWhatsappAccount:remove',{'UserId':Number(_0x5e3fb6[_0x13e0('0x42')][_0x13e0('0x69')]),'WhatsappAccountId':Number(_0x5e3fb6[_0x13e0('0x56')]['id'])});}});}})[_0x13e0('0x1d')](respondWithStatusCode(_0x5e4b75,null))[_0x13e0('0x54')](handleError(_0x5e4b75,null));};exports[_0x13e0('0x76')]=function(_0x7edd68,_0x3afac5,_0x41163b){var _0xf1864e={};var _0x269fcb={};var _0x5f416c;var _0x40e1cc;return db[_0x13e0('0x3f')][_0x13e0('0x77')]({'where':{'id':_0x7edd68[_0x13e0('0x56')]['id']}})[_0x13e0('0x1d')](handleEntityNotFound(_0x3afac5,null))[_0x13e0('0x1d')](function(_0x5301c1){if(_0x5301c1){_0x5f416c=_0x5301c1;_0x269fcb['model']=_[_0x13e0('0x43')](db[_0x13e0('0x78')][_0x13e0('0x65')]);_0x269fcb['query']=_[_0x13e0('0x43')](_0x7edd68[_0x13e0('0x42')]);_0x269fcb[_0x13e0('0x4c')]=_['intersection'](_0x269fcb[_0x13e0('0x41')],_0x269fcb['query']);_0xf1864e[_0x13e0('0x45')]=_[_0x13e0('0x44')](_0x269fcb[_0x13e0('0x41')],qs['fields'](_0x7edd68[_0x13e0('0x42')][_0x13e0('0x46')]));_0xf1864e[_0x13e0('0x45')]=_0xf1864e[_0x13e0('0x45')][_0x13e0('0x47')]?_0xf1864e['attributes']:_0x269fcb['model'];_0xf1864e['order']=qs[_0x13e0('0x4b')](_0x7edd68[_0x13e0('0x42')][_0x13e0('0x4b')]);_0xf1864e[_0x13e0('0x4e')]=qs['filters'](_[_0x13e0('0x4d')](_0x7edd68[_0x13e0('0x42')],_0x269fcb[_0x13e0('0x4c')]));if(_0x7edd68[_0x13e0('0x42')][_0x13e0('0x66')]){_0xf1864e[_0x13e0('0x4e')]=_[_0x13e0('0x50')](_0xf1864e['where'],{'$or':_[_0x13e0('0x3e')](_0xf1864e[_0x13e0('0x45')],function(_0x5d9ee1){var _0x14f09c={};_0x14f09c[_0x5d9ee1]={'$like':'%'+_0x7edd68[_0x13e0('0x42')][_0x13e0('0x66')]+'%'};return _0x14f09c;})});}_0xf1864e=_[_0x13e0('0x50')]({},_0xf1864e,_0x7edd68[_0x13e0('0x6d')]);return _0x5f416c[_0x13e0('0x76')](_0xf1864e);}})[_0x13e0('0x1d')](function(_0x403136){if(_0x403136){_0x40e1cc=_0x403136['length'];if(!_0x7edd68[_0x13e0('0x42')][_0x13e0('0x48')](_0x13e0('0x49'))){_0xf1864e[_0x13e0('0x2b')]=qs[_0x13e0('0x2b')](_0x7edd68[_0x13e0('0x42')]['limit']);_0xf1864e[_0x13e0('0x2a')]=qs[_0x13e0('0x2a')](_0x7edd68[_0x13e0('0x42')][_0x13e0('0x2a')]);}return _0x5f416c[_0x13e0('0x76')](_0xf1864e);}})[_0x13e0('0x1d')](function(_0x50d961){if(_0x50d961){return _0x50d961?{'count':_0x40e1cc,'rows':_0x50d961}:null;}})[_0x13e0('0x1d')](respondWithResult(_0x3afac5,null))[_0x13e0('0x54')](handleError(_0x3afac5,null));};exports[_0x13e0('0x79')]=function(_0x52f9f6,_0x5796a6,_0x5e7990){return db[_0x13e0('0x3f')][_0x13e0('0x77')]({'where':{'id':_0x52f9f6[_0x13e0('0x56')]['id']}})[_0x13e0('0x1d')](handleEntityNotFound(_0x5796a6,null))[_0x13e0('0x1d')](function(_0x21dd60){if(_0x21dd60){return db[_0x13e0('0x7a')][_0x13e0('0x7b')](function(_0x3913d1){return db['WhatsappApplication'][_0x13e0('0x35')]({'where':{'WhatsappAccountId':_0x52f9f6[_0x13e0('0x56')]['id']},'transaction':_0x3913d1})[_0x13e0('0x1d')](function(_0x1f48b0){var _0x4e44fd=_[_0x13e0('0x3e')](_0x52f9f6[_0x13e0('0x60')],function(_0x400016){_0x400016['WhatsappAccountId']=_0x52f9f6[_0x13e0('0x56')]['id'];return _0x400016;});return db[_0x13e0('0x7c')][_0x13e0('0x7d')](_0x4e44fd,{'transaction':_0x3913d1});});})[_0x13e0('0x1d')](function(){return db[_0x13e0('0x7c')][_0x13e0('0x7e')]({'where':{'WhatsappAccountId':_0x52f9f6[_0x13e0('0x56')]['id']},'order':_0x13e0('0x7f')});});}})[_0x13e0('0x1d')](respondWithResult(_0x5796a6,null))[_0x13e0('0x54')](handleError(_0x5796a6,null));};exports[_0x13e0('0x80')]=function(_0x2b0a00,_0x93928e,_0x354849){var _0x4101ec={};var _0x110b48={};var _0x359681;var _0x114e91;return db[_0x13e0('0x3f')][_0x13e0('0x77')]({'where':{'id':_0x2b0a00[_0x13e0('0x56')]['id']}})[_0x13e0('0x1d')](handleEntityNotFound(_0x93928e,null))[_0x13e0('0x1d')](function(_0xf1cff6){if(_0xf1cff6){_0x359681=_0xf1cff6;_0x110b48['model']=_[_0x13e0('0x43')](db[_0x13e0('0x7c')][_0x13e0('0x65')]);_0x110b48[_0x13e0('0x42')]=_['keys'](_0x2b0a00[_0x13e0('0x42')]);_0x110b48[_0x13e0('0x4c')]=_[_0x13e0('0x44')](_0x110b48[_0x13e0('0x41')],_0x110b48[_0x13e0('0x42')]);_0x4101ec['attributes']=_[_0x13e0('0x44')](_0x110b48[_0x13e0('0x41')],qs[_0x13e0('0x46')](_0x2b0a00[_0x13e0('0x42')][_0x13e0('0x46')]));_0x4101ec['attributes']=_0x4101ec[_0x13e0('0x45')][_0x13e0('0x47')]?_0x4101ec[_0x13e0('0x45')]:_0x110b48['model'];_0x4101ec[_0x13e0('0x4a')]=qs[_0x13e0('0x4b')](_0x2b0a00['query'][_0x13e0('0x4b')]);_0x4101ec['where']=qs[_0x13e0('0x4c')](_[_0x13e0('0x4d')](_0x2b0a00['query'],_0x110b48[_0x13e0('0x4c')]));if(_0x2b0a00[_0x13e0('0x42')]['filter']){_0x4101ec[_0x13e0('0x4e')]=_[_0x13e0('0x50')](_0x4101ec[_0x13e0('0x4e')],{'$or':_['map'](_0x4101ec[_0x13e0('0x45')],function(_0x593c3b){var _0x5b8405={};_0x5b8405[_0x593c3b]={'$like':'%'+_0x2b0a00[_0x13e0('0x42')][_0x13e0('0x66')]+'%'};return _0x5b8405;})});}_0x4101ec=_[_0x13e0('0x50')]({},_0x4101ec,_0x2b0a00['options']);return _0x359681[_0x13e0('0x80')](_0x4101ec);}})[_0x13e0('0x1d')](function(_0x273872){if(_0x273872){_0x114e91=_0x273872[_0x13e0('0x47')];if(!_0x2b0a00[_0x13e0('0x42')][_0x13e0('0x48')](_0x13e0('0x49'))){_0x4101ec[_0x13e0('0x2b')]=qs['limit'](_0x2b0a00['query']['limit']);_0x4101ec[_0x13e0('0x2a')]=qs[_0x13e0('0x2a')](_0x2b0a00[_0x13e0('0x42')][_0x13e0('0x2a')]);}return _0x359681[_0x13e0('0x80')](_0x4101ec);}})['then'](function(_0x5dd612){if(_0x5dd612){return _0x5dd612?{'count':_0x114e91,'rows':_0x5dd612}:null;}})[_0x13e0('0x1d')](respondWithResult(_0x93928e,null))[_0x13e0('0x54')](handleError(_0x93928e,null));};exports[_0x13e0('0x81')]=function(_0x4ec8f1,_0x4eb20a,_0x462d02){var _0x3549db={'channel':'whatsapp'};var _0x2af5ac=[];var _0x53462a=[];var _0x34c319={};return db[_0x13e0('0x3f')][_0x13e0('0x58')]({'where':{'id':_0x4ec8f1[_0x13e0('0x56')]['id']},'include':[{'model':db[_0x13e0('0x7c')],'as':_0x13e0('0x82')}]})[_0x13e0('0x1d')](handleEntityNotFound(_0x4eb20a,null))[_0x13e0('0x1d')](function(_0xb4ff3e){_0x3549db[_0x13e0('0x83')]=_0xb4ff3e;if(_0x3549db[_0x13e0('0x83')]&&_0x3549db[_0x13e0('0x83')][_0x13e0('0x84')]===_0x13e0('0x85')&&_0x4ec8f1[_0x13e0('0x60')][_0x13e0('0x86')]){if(_0x4ec8f1[_0x13e0('0x60')][_0x13e0('0x86')][_0x13e0('0x47')]===0x0)return;if(_0x4ec8f1[_0x13e0('0x60')][_0x13e0('0x86')][0x0]['state']!=='read')return;return db[_0x13e0('0x87')]['update']({'read':!![],'readAt':_0x4ec8f1[_0x13e0('0x60')][_0x13e0('0x86')][0x0][_0x13e0('0x88')]},{'where':{'messageId':_0x4ec8f1['body']['statuses'][0x0]['message_id']},'individualHooks':!![]})['then'](function(_0x2dc2ab){return _0x4eb20a['status'](0xc8)[_0x13e0('0x29')](_0x2dc2ab);});}_0x3549db[_0x13e0('0x89')]=_[_0x13e0('0x8a')](_0xb4ff3e[_0x13e0('0x82')],[_0x13e0('0x7f')],[_0x13e0('0x8b')]);if(_0x3549db[_0x13e0('0x83')][_0x13e0('0x82')]){delete _0x3549db[_0x13e0('0x83')]['Applications'];}return db[_0x13e0('0x8c')][_0x13e0('0x61')]()[_0x13e0('0x1d')](function(_0x12ac19){if(!_0x12ac19){throw new db[(_0x13e0('0x8d'))]['ValidationError']('no\x20available\x20attributes');}_0x2af5ac=_['difference'](_[_0x13e0('0x43')](_0x12ac19),[_0x13e0('0x8e'),_0x13e0('0x8f')]);_0x53462a=_[_0x13e0('0x90')](_['keys'](_0x12ac19),[_0x13e0('0x8e'),_0x13e0('0x8f'),_0x13e0('0x91'),'ListId']);_0x3549db[_0x13e0('0x60')]={'mapKey':_0x13e0('0x92')};if(_0x3549db[_0x13e0('0x83')]&&_0x3549db[_0x13e0('0x83')][_0x13e0('0x84')]===_0x13e0('0x93')){_0x3549db[_0x13e0('0x60')][_0x13e0('0x94')]=_0x4ec8f1[_0x13e0('0x60')]['From'][_0x13e0('0x95')](_0x13e0('0x96'),'');_0x3549db[_0x13e0('0x60')]['body']=_0x4ec8f1[_0x13e0('0x60')]['Body'];_0x3549db['body'][_0x13e0('0x97')]=_0x4ec8f1[_0x13e0('0x60')][_0x13e0('0x98')];}if(_0x3549db[_0x13e0('0x83')]&&_0x3549db['account'][_0x13e0('0x84')]===_0x13e0('0x85')){_0x3549db['body'][_0x13e0('0x94')]=_0x4ec8f1[_0x13e0('0x60')][_0x13e0('0x99')][0x0][_0x13e0('0x94')];_0x3549db[_0x13e0('0x60')][_0x13e0('0x60')]=_0x4ec8f1[_0x13e0('0x60')][_0x13e0('0x99')][0x0]['message']['body'];_0x3549db['body']['messageId']=_0x4ec8f1[_0x13e0('0x60')]['notifications'][0x0][_0x13e0('0x9a')];}if(_0x3549db['body']['id']){delete _0x3549db['body']['id'];}if(_['isNil'](_0x3549db[_0x13e0('0x60')][_0x13e0('0x94')])){throw new db[(_0x13e0('0x8d'))]['ValidationError'](_0x13e0('0x9b'));}if(_['isNil'](_0x3549db[_0x13e0('0x60')][_0x13e0('0x60')])||_0x3549db[_0x13e0('0x60')][_0x13e0('0x60')]===''){throw new db[(_0x13e0('0x8d'))][(_0x13e0('0x9c'))](_0x13e0('0x9d'));}if(_[_0x13e0('0x9e')](_0x3549db['body'][_0x13e0('0x9f')])){throw new db['Sequelize'][(_0x13e0('0x9c'))](_0x13e0('0xa0')+_0x53462a);}if(!_[_0x13e0('0xa1')](_0x53462a,_0x3549db[_0x13e0('0x60')][_0x13e0('0x9f')])){throw new db[(_0x13e0('0x8d'))][(_0x13e0('0x9c'))](_0x13e0('0xa2')+_0x53462a);}_0x34c319[_0x3549db[_0x13e0('0x60')]['mapKey']]=_0x3549db[_0x13e0('0x60')][_0x13e0('0x94')];return db[_0x13e0('0xa3')][_0x13e0('0x58')]({'where':{'id':_0x3549db[_0x13e0('0x83')][_0x13e0('0xa4')]},'include':[{'model':db[_0x13e0('0x8c')],'as':_0x13e0('0xa5'),'where':_0x34c319,'limit':0x1,'order':[[_0x13e0('0x8f'),_0x13e0('0xa6')]]}]});})[_0x13e0('0x1d')](handleEntityNotFound(_0x4eb20a,null))[_0x13e0('0x1d')](function(_0x37139f){if(_0x37139f){_0x3549db[_0x13e0('0xa7')]=_[_0x13e0('0x70')](_0x37139f,[_0x13e0('0xa5')]);if(_0x37139f['Contacts'][_0x13e0('0x47')]){return _0x37139f['Contacts'][0x0];}var _0x1ec7bb=_['defaults'](_0x3549db[_0x13e0('0x60')],{'firstName':_0x3549db[_0x13e0('0x60')][_0x13e0('0x94')],'ListId':_0x37139f['id']});_0x1ec7bb[_0x3549db[_0x13e0('0x60')][_0x13e0('0x9f')]]=_0x3549db[_0x13e0('0x60')][_0x13e0('0x94')];return db[_0x13e0('0x8c')][_0x13e0('0x59')](_0x1ec7bb,{'fields':_0x2af5ac,'raw':!![]});}})['then'](handleEntityNotFound(_0x4eb20a,null))[_0x13e0('0x1d')](function(_0x178b2a){if(_0x178b2a){_0x3549db[_0x13e0('0xa8')]=_0x178b2a;var _0x1abf7d={'ContactId':_0x178b2a['id'],'phone':_0x3549db['body'][_0x13e0('0x94')],'WhatsappAccountId':_0x4ec8f1[_0x13e0('0x56')]['id']};var _0x2d5618={'ContactId':_0x178b2a['id'],'WhatsappAccountId':_0x4ec8f1[_0x13e0('0x56')]['id'],'closed':![]};return db['WhatsappInteraction'][_0x13e0('0x58')]({'where':_0x2d5618})[_0x13e0('0x1d')](function(_0x534ea0){if(_0x534ea0){return[_0x534ea0,![]];}return db[_0x13e0('0xa9')]['create'](_0x1abf7d)[_0x13e0('0x1d')](function(_0x2e32fb){return[_0x2e32fb,!![]];});});}})[_0x13e0('0x71')](function(_0x27fd16,_0x4ad644){_0x3549db['interaction']=_0x27fd16[_0x13e0('0x36')]({'plain':!![]});_0x3549db['interaction'][_0x13e0('0xaa')]=![];if(_0x4ad644){if(_0x3549db[_0x13e0('0x83')][_0x13e0('0xab')]){_0x3549db[_0x13e0('0x89')][_0x13e0('0xac')]({'id':0x0,'priority':_0x3549db[_0x13e0('0x89')][_0x13e0('0x47')]+0x1,'app':_0x13e0('0xad'),'appdata':'unmanaged','interval':'*,*,*,*'});}_0x3549db[_0x13e0('0xae')][_0x13e0('0xaa')]=!![];}return db[_0x13e0('0x87')]['create']({'phone':_0x3549db[_0x13e0('0x60')][_0x13e0('0x94')],'messageId':_0x3549db[_0x13e0('0x60')][_0x13e0('0x97')],'body':_0x3549db[_0x13e0('0x60')]['body'],'WhatsappAccountId':_0x4ec8f1[_0x13e0('0x56')]['id'],'WhatsappInteractionId':_0x27fd16['id'],'direction':'in','ContactId':_0x27fd16[_0x13e0('0xaf')],'AttachmentId':_0x3549db[_0x13e0('0x60')][_0x13e0('0xb0')]});})['then'](function(_0x38659a){_0x3549db[_0x13e0('0x26')]=_0x38659a;if(_0x3549db[_0x13e0('0xae')][_0x13e0('0xb1')]){return db[_0x13e0('0x78')][_0x13e0('0x58')]({'attributes':['id','name'],'where':{'id':_0x3549db['interaction']['UserId']}})[_0x13e0('0x1d')](function(_0x4c3ab9){if(_0x4c3ab9){_0x3549db[_0x13e0('0x89')][_0x13e0('0xb2')]({'id':0x0,'priority':0x0,'app':_0x13e0('0xb3'),'appdata':_0x4c3ab9['name']+','+(_0x3549db[_0x13e0('0x83')][_0x13e0('0xb4')]||0xa),'interval':_0x13e0('0xb5')});}return respondWithRpcPromise(_0x13e0('0xb6'),'startRouting',_0x3549db);});}return respondWithRpcPromise(_0x13e0('0xb6'),'startRouting',_0x3549db);})['then'](function(_0x29de16){if(_0x29de16){var _0x2185ff=0xc8;var _0x312910=_0x13e0('0xb7');logger[_0x13e0('0x1e')](_0x13e0('0x22'),_0x312910,_0x2185ff,_0x13e0('0xb8'));logger['debug']('WhatsappAccount,\x20%s,\x20%s,\x20%s,\x20%s',_0x312910,_0x2185ff,_0x13e0('0xb8'),JSON['stringify'](_0x29de16));if(_0x3549db[_0x13e0('0x83')][_0x13e0('0x84')]==='twilio'){return _0x4eb20a[_0x13e0('0x2e')](_0x2185ff)[_0x13e0('0x2f')](_0x13e0('0xb9'),'text/xml')[_0x13e0('0x3b')]('<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>');}else{return _0x4eb20a[_0x13e0('0x2e')](_0x2185ff)[_0x13e0('0x29')](_0x29de16);}}});})[_0x13e0('0x54')](handleError(_0x4eb20a,null));};exports[_0x13e0('0x3b')]=function(_0x24cf29,_0x238449,_0x576b57){var _0x8ac66e,_0x3b1df6,_0x59f3d0;if(_['isNil'](_0x24cf29[_0x13e0('0x60')][_0x13e0('0x60')])||_0x24cf29[_0x13e0('0x60')][_0x13e0('0x60')]===''){throw new db['Sequelize'][(_0x13e0('0x9c'))](_0x13e0('0x9d'));}if(_[_0x13e0('0x9e')](_0x24cf29['body']['to'])){throw new db[(_0x13e0('0x8d'))][(_0x13e0('0x9c'))]('to\x20is\x20mandatory');}_0x8ac66e=_0x24cf29[_0x13e0('0x60')]['to'];return db['WhatsappAccount'][_0x13e0('0x58')]({'where':{'id':_0x24cf29[_0x13e0('0x56')]['id']},'include':[{'model':db[_0x13e0('0xa3')],'as':_0x13e0('0xba'),'include':[{'model':db[_0x13e0('0x8c')],'as':'Contacts','where':{'mobile':_0x8ac66e},'limit':0x1,'order':[[_0x13e0('0x8f'),_0x13e0('0xa6')]]}]}]})[_0x13e0('0x1d')](handleEntityNotFound(_0x238449,null))[_0x13e0('0x1d')](function(_0x1fce79){if(_0x1fce79&&_0x1fce79[_0x13e0('0xba')]){_0x3b1df6=_0x1fce79[_0x13e0('0x36')]({'plain':!![]});if(_0x3b1df6['List']&&_0x3b1df6['List'][_0x13e0('0xa5')][_0x13e0('0x47')]){return _0x3b1df6[_0x13e0('0xba')][_0x13e0('0xa5')][0x0];}return db['CmContact'][_0x13e0('0x59')](_[_0x13e0('0x16')](_0x24cf29[_0x13e0('0x60')],{'firstName':_0x8ac66e,'mobile':_0x8ac66e,'phone':_0x8ac66e,'ListId':_0x3b1df6[_0x13e0('0xa4')]}));}})[_0x13e0('0x1d')](handleEntityNotFound(_0x238449,null))[_0x13e0('0x1d')](function(_0x2bfd5d){if(_0x2bfd5d){_0x59f3d0=_0x2bfd5d;return db[_0x13e0('0xa9')][_0x13e0('0x58')]({'where':{'ContactId':_0x59f3d0['id'],'closed':![],'WhatsappAccountId':_0x3b1df6['id']}})[_0x13e0('0x1d')](function(_0x272413){if(_0x272413){return[_0x272413,![]];}return db[_0x13e0('0xa9')][_0x13e0('0x59')]({'UserId':_0x24cf29['user']['id'],'ContactId':_0x59f3d0['id'],'WhatsappAccountId':_0x3b1df6['id'],'phone':_0x8ac66e,'firstMsgDirection':_0x13e0('0xbb'),'Messages':[_['merge'](_0x24cf29[_0x13e0('0x60')],{'read':![],'body':_0x24cf29[_0x13e0('0x60')][_0x13e0('0x60')],'phone':_0x8ac66e,'WhatsappAccountId':_0x3b1df6['id'],'UserId':_0x24cf29[_0x13e0('0xbc')]['id'],'ContactId':_0x59f3d0['id']})]},{'include':[{'model':db[_0x13e0('0x87')],'as':_0x13e0('0xbd')}]})['then'](function(_0x59cb45){return[_0x59cb45,!![]];});});}})[_0x13e0('0x71')](function(_0x3ecc1c,_0x41fe68){if(_0x41fe68){return _0x3ecc1c;}return db[_0x13e0('0x87')]['create'](_[_0x13e0('0x50')](_0x24cf29[_0x13e0('0x60')],{'read':![],'body':_0x24cf29[_0x13e0('0x60')][_0x13e0('0x60')],'phone':_0x8ac66e,'WhatsappAccountId':_0x3b1df6['id'],'WhatsappInteractionId':_0x3ecc1c['id'],'UserId':_0x24cf29['user']['id'],'ContactId':_0x59f3d0['id']}))[_0x13e0('0x1d')](function(_0x284a50){_0x3ecc1c[_0x13e0('0xbe')]['Messages']=[];_0x3ecc1c[_0x13e0('0xbe')][_0x13e0('0xbd')][_0x13e0('0xac')](_0x284a50[_0x13e0('0xbe')]);return _0x3ecc1c;});})[_0x13e0('0x1d')](respondWithResult(_0x238449,null))[_0x13e0('0x54')](handleError(_0x238449,null));};
\ No newline at end of file
index 15558b9..22af2d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc7d5=['hook','exports','events','WhatsappAccount','setMaxListeners','update','emit'];(function(_0x216e3e,_0x239c4e){var _0x2a3c6b=function(_0x48d6a3){while(--_0x48d6a3){_0x216e3e['push'](_0x216e3e['shift']());}};_0x2a3c6b(++_0x239c4e);}(_0xc7d5,0x18a));var _0x5c7d=function(_0x1319c4,_0x3f7dcc){_0x1319c4=_0x1319c4-0x0;var _0x2fcb3b=_0xc7d5[_0x1319c4];return _0x2fcb3b;};'use strict';var EventEmitter=require(_0x5c7d('0x0'));var WhatsappAccount=require('../../mysqldb')['db'][_0x5c7d('0x1')];var WhatsappAccountEvents=new EventEmitter();WhatsappAccountEvents[_0x5c7d('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x5c7d('0x3'),'afterDestroy':'remove'};function emitEvent(_0x5d8682){return function(_0x5cbc36,_0x17c032,_0x967057){WhatsappAccountEvents[_0x5c7d('0x4')](_0x5d8682+':'+_0x5cbc36['id'],_0x5cbc36);WhatsappAccountEvents[_0x5c7d('0x4')](_0x5d8682,_0x5cbc36);_0x967057(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];WhatsappAccount[_0x5c7d('0x5')](e,emitEvent(event));}}module[_0x5c7d('0x6')]=WhatsappAccountEvents;
\ No newline at end of file
+var _0x3070=['remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','WhatsappAccount','setMaxListeners','save'];(function(_0x288f5e,_0x205edd){var _0x476cc9=function(_0x796f53){while(--_0x796f53){_0x288f5e['push'](_0x288f5e['shift']());}};_0x476cc9(++_0x205edd);}(_0x3070,0x1bd));var _0x0307=function(_0x141adc,_0x53d5ed){_0x141adc=_0x141adc-0x0;var _0x50b1d7=_0x3070[_0x141adc];return _0x50b1d7;};'use strict';var EventEmitter=require(_0x0307('0x0'));var WhatsappAccount=require(_0x0307('0x1'))['db'][_0x0307('0x2')];var WhatsappAccountEvents=new EventEmitter();WhatsappAccountEvents[_0x0307('0x3')](0x0);var events={'afterCreate':_0x0307('0x4'),'afterUpdate':'update','afterDestroy':_0x0307('0x5')};function emitEvent(_0x41dc7f){return function(_0x452149,_0xb1a41c,_0x518c84){WhatsappAccountEvents['emit'](_0x41dc7f+':'+_0x452149['id'],_0x452149);WhatsappAccountEvents[_0x0307('0x6')](_0x41dc7f,_0x452149);_0x518c84(null);};}for(var e in events){if(events[_0x0307('0x7')](e)){var event=events[e];WhatsappAccount[_0x0307('0x8')](e,emitEvent(event));}}module[_0x0307('0x9')]=WhatsappAccountEvents;
\ No newline at end of file
index 7eac3e0..0708a51 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd89d=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./whatsappAccount.attributes','exports','define','whatsapp_accounts','util','../../config/logger'];(function(_0xc8c383,_0x157056){var _0x385be7=function(_0x136feb){while(--_0x136feb){_0xc8c383['push'](_0xc8c383['shift']());}};_0x385be7(++_0x157056);}(_0xd89d,0x1d2));var _0xdd89=function(_0x3a6767,_0x577a49){_0x3a6767=_0x3a6767-0x0;var _0xf3e575=_0xd89d[_0x3a6767];return _0xf3e575;};'use strict';var _=require('lodash');var util=require(_0xdd89('0x0'));var logger=require(_0xdd89('0x1'))(_0xdd89('0x2'));var moment=require(_0xdd89('0x3'));var BPromise=require(_0xdd89('0x4'));var rp=require(_0xdd89('0x5'));var fs=require('fs');var path=require(_0xdd89('0x6'));var rimraf=require(_0xdd89('0x7'));var config=require(_0xdd89('0x8'));var attributes=require(_0xdd89('0x9'));module[_0xdd89('0xa')]=function(_0xd00e43,_0x4ec673){return _0xd00e43[_0xdd89('0xb')]('WhatsappAccount',attributes,{'tableName':_0xdd89('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x31f8=['./whatsappAccount.attributes','define','WhatsappAccount','whatsapp_accounts','lodash','util','../../config/logger','moment','bluebird','rimraf'];(function(_0x2aabfa,_0x2bc628){var _0x2a8d1b=function(_0x57295f){while(--_0x57295f){_0x2aabfa['push'](_0x2aabfa['shift']());}};_0x2a8d1b(++_0x2bc628);}(_0x31f8,0x194));var _0x831f=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x31f8[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x831f('0x0'));var util=require(_0x831f('0x1'));var logger=require(_0x831f('0x2'))('api');var moment=require(_0x831f('0x3'));var BPromise=require(_0x831f('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x831f('0x5'));var config=require('../../config/environment');var attributes=require(_0x831f('0x6'));module['exports']=function(_0x34c4f9,_0x88d871){return _0x34c4f9[_0x831f('0x7')](_0x831f('0x8'),attributes,{'tableName':_0x831f('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6149459..c330423 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef51=['catch','ShowWhatsappAccount','WhatsappAccount','options','raw','where','attributes','include','model','map','lodash','util','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./whatsappAccount.socket','register','then','info','WhatsappAccount,\x20%s,\x20%s','request\x20sent','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x64df72,_0x406b97){var _0x47ea96=function(_0x2ce6ac){while(--_0x2ce6ac){_0x64df72['push'](_0x64df72['shift']());}};_0x47ea96(++_0x406b97);}(_0xef51,0x1a1));var _0x1ef5=function(_0x279368,_0x41c002){_0x279368=_0x279368-0x0;var _0x40b6d0=_0xef51[_0x279368];return _0x40b6d0;};'use strict';var _=require(_0x1ef5('0x0'));var util=require(_0x1ef5('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x1ef5('0x2'));var fs=require('fs');var Redis=require(_0x1ef5('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x1ef5('0x4'));var logger=require(_0x1ef5('0x5'))(_0x1ef5('0x6'));var config=require(_0x1ef5('0x7'));var jayson=require(_0x1ef5('0x8'));var client=jayson[_0x1ef5('0x9')][_0x1ef5('0xa')]({'port':0x232a});config[_0x1ef5('0xb')]=_[_0x1ef5('0xc')](config[_0x1ef5('0xb')],{'host':_0x1ef5('0xd'),'port':0x18eb});var socket=require(_0x1ef5('0xe'))(new Redis(config[_0x1ef5('0xb')]));require(_0x1ef5('0xf'))[_0x1ef5('0x10')](socket);function respondWithRpcPromise(_0x11b470,_0x42f64b,_0x3c17a5){return new BPromise(function(_0x13f9f6,_0x19097d){return client['request'](_0x11b470,_0x3c17a5)[_0x1ef5('0x11')](function(_0x1aedeb){logger[_0x1ef5('0x12')](_0x1ef5('0x13'),_0x42f64b,_0x1ef5('0x14'));logger[_0x1ef5('0x15')](_0x1ef5('0x16'),_0x42f64b,_0x1ef5('0x14'),JSON[_0x1ef5('0x17')](_0x1aedeb));if(_0x1aedeb[_0x1ef5('0x18')]){if(_0x1aedeb['error'][_0x1ef5('0x19')]===0x1f4){logger[_0x1ef5('0x18')](_0x1ef5('0x13'),_0x42f64b,_0x1aedeb['error'][_0x1ef5('0x1a')]);return _0x19097d(_0x1aedeb[_0x1ef5('0x18')][_0x1ef5('0x1a')]);}logger['error'](_0x1ef5('0x13'),_0x42f64b,_0x1aedeb[_0x1ef5('0x18')][_0x1ef5('0x1a')]);return _0x13f9f6(_0x1aedeb[_0x1ef5('0x18')][_0x1ef5('0x1a')]);}else{logger[_0x1ef5('0x12')](_0x1ef5('0x13'),_0x42f64b,_0x1ef5('0x14'));_0x13f9f6(_0x1aedeb['result'][_0x1ef5('0x1a')]);}})[_0x1ef5('0x1b')](function(_0x2cf40d){logger[_0x1ef5('0x18')]('WhatsappAccount,\x20%s,\x20%s',_0x42f64b,_0x2cf40d);_0x19097d(_0x2cf40d);});});}exports[_0x1ef5('0x1c')]=function(_0x14f087){var _0x3cb3a9=this;return new Promise(function(_0x1ca987,_0x3e5a57){return db[_0x1ef5('0x1d')]['find']({'raw':_0x14f087[_0x1ef5('0x1e')]?_0x14f087['options'][_0x1ef5('0x1f')]===undefined?!![]:![]:!![],'where':_0x14f087[_0x1ef5('0x1e')]?_0x14f087[_0x1ef5('0x1e')][_0x1ef5('0x20')]||null:null,'attributes':_0x14f087[_0x1ef5('0x1e')]?_0x14f087[_0x1ef5('0x1e')][_0x1ef5('0x21')]||null:null,'include':_0x14f087['options']?_0x14f087[_0x1ef5('0x1e')][_0x1ef5('0x22')]?_['map'](_0x14f087[_0x1ef5('0x1e')][_0x1ef5('0x22')],function(_0x43bff3){return{'model':db[_0x43bff3[_0x1ef5('0x23')]],'as':_0x43bff3['as'],'attributes':_0x43bff3['attributes'],'include':_0x43bff3[_0x1ef5('0x22')]?_[_0x1ef5('0x24')](_0x43bff3['include'],function(_0x4c461e){return{'model':db[_0x4c461e[_0x1ef5('0x23')]],'as':_0x4c461e['as'],'attributes':_0x4c461e[_0x1ef5('0x21')],'include':_0x4c461e[_0x1ef5('0x22')]?_[_0x1ef5('0x24')](_0x4c461e[_0x1ef5('0x22')],function(_0x1b70a0){return{'model':db[_0x1b70a0[_0x1ef5('0x23')]],'as':_0x1b70a0['as'],'attributes':_0x1b70a0[_0x1ef5('0x21')]};}):[]};}):[]};}):[]:[]})[_0x1ef5('0x11')](function(_0x5a6caa){logger[_0x1ef5('0x12')]('ShowWhatsappAccount',_0x14f087);logger[_0x1ef5('0x15')]('ShowWhatsappAccount',_0x14f087,JSON['stringify'](_0x5a6caa));_0x1ca987(_0x5a6caa);})['catch'](function(_0x4d962c){logger[_0x1ef5('0x18')]('ShowWhatsappAccount',_0x4d962c['message'],_0x14f087);_0x3e5a57(_0x3cb3a9['error'](0x1f4,_0x4d962c[_0x1ef5('0x1a')]));});});};
\ No newline at end of file
+var _0x85ae=['catch','ShowWhatsappAccount','WhatsappAccount','find','options','raw','where','include','map','model','attributes','then','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','localhost','./whatsappAccount.socket','register','request','info','WhatsappAccount,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message'];(function(_0x45bec0,_0x573804){var _0x2123c4=function(_0x256448){while(--_0x256448){_0x45bec0['push'](_0x45bec0['shift']());}};_0x2123c4(++_0x573804);}(_0x85ae,0x10f));var _0xe85a=function(_0x3ab590,_0x55559a){_0x3ab590=_0x3ab590-0x0;var _0x3b3bdc=_0x85ae[_0x3ab590];return _0x3b3bdc;};'use strict';var _=require(_0xe85a('0x0'));var util=require(_0xe85a('0x1'));var moment=require('moment');var BPromise=require(_0xe85a('0x2'));var rs=require(_0xe85a('0x3'));var fs=require('fs');var Redis=require(_0xe85a('0x4'));var db=require(_0xe85a('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xe85a('0x6'))(_0xe85a('0x7'));var config=require(_0xe85a('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xe85a('0x9')][_0xe85a('0xa')]({'port':0x232a});config[_0xe85a('0xb')]=_[_0xe85a('0xc')](config[_0xe85a('0xb')],{'host':_0xe85a('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xe85a('0xb')]));require(_0xe85a('0xe'))[_0xe85a('0xf')](socket);function respondWithRpcPromise(_0x407ae4,_0x1c4248,_0x813d03){return new BPromise(function(_0x46e28e,_0x47e4e7){return client[_0xe85a('0x10')](_0x407ae4,_0x813d03)['then'](function(_0x5478b4){logger[_0xe85a('0x11')](_0xe85a('0x12'),_0x1c4248,'request\x20sent');logger[_0xe85a('0x13')]('WhatsappAccount,\x20%s,\x20%s,\x20%s',_0x1c4248,_0xe85a('0x14'),JSON[_0xe85a('0x15')](_0x5478b4));if(_0x5478b4[_0xe85a('0x16')]){if(_0x5478b4[_0xe85a('0x16')][_0xe85a('0x17')]===0x1f4){logger[_0xe85a('0x16')]('WhatsappAccount,\x20%s,\x20%s',_0x1c4248,_0x5478b4[_0xe85a('0x16')]['message']);return _0x47e4e7(_0x5478b4['error'][_0xe85a('0x18')]);}logger[_0xe85a('0x16')](_0xe85a('0x12'),_0x1c4248,_0x5478b4['error']['message']);return _0x46e28e(_0x5478b4[_0xe85a('0x16')]['message']);}else{logger[_0xe85a('0x11')](_0xe85a('0x12'),_0x1c4248,_0xe85a('0x14'));_0x46e28e(_0x5478b4['result'][_0xe85a('0x18')]);}})[_0xe85a('0x19')](function(_0x52534b){logger['error'](_0xe85a('0x12'),_0x1c4248,_0x52534b);_0x47e4e7(_0x52534b);});});}exports[_0xe85a('0x1a')]=function(_0x633dda){var _0x1f3ba6=this;return new Promise(function(_0x35fcd4,_0x201ed9){return db[_0xe85a('0x1b')][_0xe85a('0x1c')]({'raw':_0x633dda[_0xe85a('0x1d')]?_0x633dda[_0xe85a('0x1d')][_0xe85a('0x1e')]===undefined?!![]:![]:!![],'where':_0x633dda[_0xe85a('0x1d')]?_0x633dda[_0xe85a('0x1d')][_0xe85a('0x1f')]||null:null,'attributes':_0x633dda['options']?_0x633dda[_0xe85a('0x1d')]['attributes']||null:null,'include':_0x633dda[_0xe85a('0x1d')]?_0x633dda['options'][_0xe85a('0x20')]?_[_0xe85a('0x21')](_0x633dda[_0xe85a('0x1d')][_0xe85a('0x20')],function(_0x3e423b){return{'model':db[_0x3e423b[_0xe85a('0x22')]],'as':_0x3e423b['as'],'attributes':_0x3e423b[_0xe85a('0x23')],'include':_0x3e423b['include']?_[_0xe85a('0x21')](_0x3e423b[_0xe85a('0x20')],function(_0x1828ea){return{'model':db[_0x1828ea[_0xe85a('0x22')]],'as':_0x1828ea['as'],'attributes':_0x1828ea[_0xe85a('0x23')],'include':_0x1828ea['include']?_[_0xe85a('0x21')](_0x1828ea[_0xe85a('0x20')],function(_0x58a997){return{'model':db[_0x58a997[_0xe85a('0x22')]],'as':_0x58a997['as'],'attributes':_0x58a997['attributes']};}):[]};}):[]};}):[]:[]})[_0xe85a('0x24')](function(_0xe2ad79){logger[_0xe85a('0x11')]('ShowWhatsappAccount',_0x633dda);logger[_0xe85a('0x13')]('ShowWhatsappAccount',_0x633dda,JSON['stringify'](_0xe2ad79));_0x35fcd4(_0xe2ad79);})[_0xe85a('0x19')](function(_0x3de45d){logger[_0xe85a('0x16')]('ShowWhatsappAccount',_0x3de45d[_0xe85a('0x18')],_0x633dda);_0x201ed9(_0x1f3ba6[_0xe85a('0x16')](0x1f4,_0x3de45d[_0xe85a('0x18')]));});});};
\ No newline at end of file
index b7d5a21..4c72e9d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf342=['whatsappAccount:','./whatsappAccount.events','emit','removeListener','register','length'];(function(_0x9969d5,_0x1ac8ba){var _0x1145aa=function(_0x4d8e42){while(--_0x4d8e42){_0x9969d5['push'](_0x9969d5['shift']());}};_0x1145aa(++_0x1ac8ba);}(_0xf342,0xd9));var _0x2f34=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xf342[_0x3dd15e];return _0x231fd0;};'use strict';var WhatsappAccountEvents=require(_0x2f34('0x0'));var events=['save','remove','update'];function createListener(_0x4a2661,_0x1d2ebb){return function(_0x57430a){_0x1d2ebb[_0x2f34('0x1')](_0x4a2661,_0x57430a);};}function removeListener(_0x506e66,_0x32b38c){return function(){WhatsappAccountEvents[_0x2f34('0x2')](_0x506e66,_0x32b38c);};}exports[_0x2f34('0x3')]=function(_0xf83abe){for(var _0xf326c5=0x0,_0x127585=events[_0x2f34('0x4')];_0xf326c5<_0x127585;_0xf326c5++){var _0x5ea55d=events[_0xf326c5];var _0x260f51=createListener(_0x2f34('0x5')+_0x5ea55d,_0xf83abe);WhatsappAccountEvents['on'](_0x5ea55d,_0x260f51);}};
\ No newline at end of file
+var _0x1313=['remove','update','emit','removeListener','length','./whatsappAccount.events','save'];(function(_0x50a94f,_0x54aa9f){var _0xe1b641=function(_0x5be928){while(--_0x5be928){_0x50a94f['push'](_0x50a94f['shift']());}};_0xe1b641(++_0x54aa9f);}(_0x1313,0x18d));var _0x3131=function(_0x571de2,_0x35bf2e){_0x571de2=_0x571de2-0x0;var _0x1dde84=_0x1313[_0x571de2];return _0x1dde84;};'use strict';var WhatsappAccountEvents=require(_0x3131('0x0'));var events=[_0x3131('0x1'),_0x3131('0x2'),_0x3131('0x3')];function createListener(_0xfbadf7,_0x7db2a9){return function(_0x55fc72){_0x7db2a9[_0x3131('0x4')](_0xfbadf7,_0x55fc72);};}function removeListener(_0x36a531,_0x20265f){return function(){WhatsappAccountEvents[_0x3131('0x5')](_0x36a531,_0x20265f);};}exports['register']=function(_0x13652c){for(var _0x338a3d=0x0,_0x50295a=events[_0x3131('0x6')];_0x338a3d<_0x50295a;_0x338a3d++){var _0x2818fd=events[_0x338a3d];var _0x1325ff=createListener('whatsappAccount:'+_0x2818fd,_0x13652c);WhatsappAccountEvents['on'](_0x2818fd,_0x1325ff);}};
\ No newline at end of file
index a09cad7..dbf9315 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x381a=['../../components/auth/service','../../config/environment','./whatsappApplication.controller','get','/:id','isAuthenticated','show','post','create','put','update','delete','exports','util','path','connect-timeout','Router','fs-extra'];(function(_0x43aea3,_0xc8b030){var _0x3f438d=function(_0x2f50b5){while(--_0x2f50b5){_0x43aea3['push'](_0x43aea3['shift']());}};_0x3f438d(++_0xc8b030);}(_0x381a,0x8b));var _0xa381=function(_0x380ca0,_0x111bab){_0x380ca0=_0x380ca0-0x0;var _0x575f0=_0x381a[_0x380ca0];return _0x575f0;};'use strict';var multer=require('multer');var util=require(_0xa381('0x0'));var path=require(_0xa381('0x1'));var timeout=require(_0xa381('0x2'));var express=require('express');var router=express[_0xa381('0x3')]();var fs_extra=require(_0xa381('0x4'));var auth=require(_0xa381('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xa381('0x6'));var controller=require(_0xa381('0x7'));router[_0xa381('0x8')]('/',auth['isAuthenticated'](),controller['index']);router[_0xa381('0x8')](_0xa381('0x9'),auth[_0xa381('0xa')](),controller[_0xa381('0xb')]);router[_0xa381('0xc')]('/',auth[_0xa381('0xa')](),controller[_0xa381('0xd')]);router[_0xa381('0xe')](_0xa381('0x9'),auth[_0xa381('0xa')](),controller[_0xa381('0xf')]);router[_0xa381('0x10')](_0xa381('0x9'),auth[_0xa381('0xa')](),controller['destroy']);module[_0xa381('0x11')]=router;
\ No newline at end of file
+var _0x6c31=['index','show','put','/:id','update','delete','destroy','exports','multer','express','Router','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated'];(function(_0x29799e,_0x584a42){var _0x2894ac=function(_0x35ccdb){while(--_0x35ccdb){_0x29799e['push'](_0x29799e['shift']());}};_0x2894ac(++_0x584a42);}(_0x6c31,0x108));var _0x16c3=function(_0xcc69c5,_0x5b35b2){_0xcc69c5=_0xcc69c5-0x0;var _0x14ec59=_0x6c31[_0xcc69c5];return _0x14ec59;};'use strict';var multer=require(_0x16c3('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x16c3('0x1'));var router=express[_0x16c3('0x2')]();var fs_extra=require(_0x16c3('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x16c3('0x4'));var config=require(_0x16c3('0x5'));var controller=require('./whatsappApplication.controller');router[_0x16c3('0x6')]('/',auth[_0x16c3('0x7')](),controller[_0x16c3('0x8')]);router[_0x16c3('0x6')]('/:id',auth[_0x16c3('0x7')](),controller[_0x16c3('0x9')]);router['post']('/',auth[_0x16c3('0x7')](),controller['create']);router[_0x16c3('0xa')](_0x16c3('0xb'),auth['isAuthenticated'](),controller[_0x16c3('0xc')]);router[_0x16c3('0xd')](_0x16c3('0xb'),auth[_0x16c3('0x7')](),controller[_0x16c3('0xe')]);module[_0x16c3('0xf')]=router;
\ No newline at end of file
index 5258c1d..13a5303 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaabe=['noop','*,*,*,*','sequelize','exports','INTEGER','STRING'];(function(_0x28c939,_0x110e29){var _0x527fe9=function(_0x1df2a6){while(--_0x1df2a6){_0x28c939['push'](_0x28c939['shift']());}};_0x527fe9(++_0x110e29);}(_0xaabe,0x1b8));var _0xeaab=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0xaabe[_0x2c91e9];return _0x13f0ff;};'use strict';var Sequelize=require(_0xeaab('0x0'));module[_0xeaab('0x1')]={'priority':{'type':Sequelize[_0xeaab('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0xeaab('0x3')],'allowNull':![],'defaultValue':_0xeaab('0x4')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0xeaab('0x3')],'defaultValue':_0xeaab('0x5')}};
\ No newline at end of file
+var _0x041c=['sequelize','exports','INTEGER','STRING','noop','TEXT','*,*,*,*'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x041c,0xa1));var _0xc041=function(_0x35fc14,_0x315667){_0x35fc14=_0x35fc14-0x0;var _0x304c56=_0x041c[_0x35fc14];return _0x304c56;};'use strict';var Sequelize=require(_0xc041('0x0'));module[_0xc041('0x1')]={'priority':{'type':Sequelize[_0xc041('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0xc041('0x3')],'allowNull':![],'defaultValue':_0xc041('0x4')},'appdata':{'type':Sequelize[_0xc041('0x5')]()},'description':{'type':Sequelize[_0xc041('0x3')]},'interval':{'type':Sequelize['STRING'],'defaultValue':_0xc041('0x6')}};
\ No newline at end of file
index aec7977..ef489cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe451=['end','offset','undefined','limit','count','update','then','destroy','sendStatus','error','name','send','map','fieldName','type','key','query','keys','intersection','model','fields','attributes','length','order','sort','where','filters','pick','filter','VIRTUAL','merge','options','WhatsappApplication','includeAll','include','findAll','rows','catch','show','params','rawAttributes','create','body','find','zip-dir','bluebird','mustache','util','path','to-csv','ejs','fs-extra','squel','crypto','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','status'];(function(_0x40576b,_0x280b79){var _0x39d545=function(_0x3d6c28){while(--_0x3d6c28){_0x40576b['push'](_0x40576b['shift']());}};_0x39d545(++_0x280b79);}(_0xe451,0xec));var _0x1e45=function(_0x57bcc0,_0x281040){_0x57bcc0=_0x57bcc0-0x0;var _0x4e361f=_0xe451[_0x57bcc0];return _0x4e361f;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x1e45('0x0'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x1e45('0x1'));var Mustache=require(_0x1e45('0x2'));var util=require(_0x1e45('0x3'));var path=require(_0x1e45('0x4'));var sox=require('sox');var csv=require(_0x1e45('0x5'));var ejs=require(_0x1e45('0x6'));var fs=require('fs');var fs_extra=require(_0x1e45('0x7'));var _=require('lodash');var squel=require(_0x1e45('0x8'));var crypto=require(_0x1e45('0x9'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x1e45('0x5'));var querystring=require(_0x1e45('0xa'));var Papa=require(_0x1e45('0xb'));var Redis=require('ioredis');var authService=require(_0x1e45('0xc'));var qs=require(_0x1e45('0xd'));var as=require(_0x1e45('0xe'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x1e45('0xf'));var utils=require(_0x1e45('0x10'));var config=require(_0x1e45('0x11'));var licenseUtil=require(_0x1e45('0x12'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x16cafc,_0x2ec564){_0x2ec564=_0x2ec564||0xcc;return function(_0x3d25a8){if(_0x3d25a8){return _0x16cafc['sendStatus'](_0x2ec564);}return _0x16cafc[_0x1e45('0x13')](_0x2ec564)[_0x1e45('0x14')]();};}function respondWithResult(_0x31215a,_0x21f68d){_0x21f68d=_0x21f68d||0xc8;return function(_0x5b3ee1){if(_0x5b3ee1){return _0x31215a[_0x1e45('0x13')](_0x21f68d)['json'](_0x5b3ee1);}};}function respondWithFilteredResult(_0xf66042,_0x2c7ace){return function(_0x4e1400){if(_0x4e1400){var _0xfdeae3=typeof _0x2c7ace[_0x1e45('0x15')]===_0x1e45('0x16')&&typeof _0x2c7ace[_0x1e45('0x17')]===_0x1e45('0x16');var _0x308c29=_0x4e1400[_0x1e45('0x18')];var _0x2a6f47=_0xfdeae3?0x0:_0x2c7ace[_0x1e45('0x15')];var _0x5d24a7=_0xfdeae3?_0x4e1400[_0x1e45('0x18')]:_0x2c7ace['offset']+_0x2c7ace['limit'];var _0x17c63a;if(_0x5d24a7>=_0x308c29){_0x5d24a7=_0x308c29;_0x17c63a=0xc8;}else{_0x17c63a=0xce;}_0xf66042['status'](_0x17c63a);return _0xf66042['set']('Content-Range',_0x2a6f47+'-'+_0x5d24a7+'/'+_0x308c29)['json'](_0x4e1400);}return null;};}function patchUpdates(_0x207335){return function(_0x4476eb){try{jsonpatch['apply'](_0x4476eb,_0x207335,!![]);}catch(_0xc0deec){return BPromise['reject'](_0xc0deec);}return _0x4476eb['save']();};}function saveUpdates(_0x41cfae,_0x59aaa7){return function(_0x4ffe97){if(_0x4ffe97){return _0x4ffe97[_0x1e45('0x19')](_0x41cfae)[_0x1e45('0x1a')](function(_0x4ce4c5){return _0x4ce4c5;});}return null;};}function removeEntity(_0x48209a,_0x2fb478){return function(_0x40c216){if(_0x40c216){return _0x40c216[_0x1e45('0x1b')]()[_0x1e45('0x1a')](function(){_0x48209a[_0x1e45('0x13')](0xcc)[_0x1e45('0x14')]();});}};}function handleEntityNotFound(_0x55e968,_0x3f6771){return function(_0x394f7e){if(!_0x394f7e){_0x55e968[_0x1e45('0x1c')](0x194);}return _0x394f7e;};}function handleError(_0x25b131,_0x1a8355){_0x1a8355=_0x1a8355||0x1f4;return function(_0xfd7633){logger[_0x1e45('0x1d')](_0xfd7633['stack']);if(_0xfd7633[_0x1e45('0x1e')]){delete _0xfd7633[_0x1e45('0x1e')];}_0x25b131[_0x1e45('0x13')](_0x1a8355)[_0x1e45('0x1f')](_0xfd7633);};}exports['index']=function(_0xe7cdcf,_0x34046e){var _0x3dd6c3={},_0x5229e7={},_0x3def67={'count':0x0,'rows':[]};var _0x4a04aa=_[_0x1e45('0x20')](db['WhatsappApplication']['rawAttributes'],function(_0x34d75e){return{'name':_0x34d75e[_0x1e45('0x21')],'type':_0x34d75e[_0x1e45('0x22')][_0x1e45('0x23')]};});_0x5229e7['model']=_[_0x1e45('0x20')](_0x4a04aa,'name');_0x5229e7[_0x1e45('0x24')]=_[_0x1e45('0x25')](_0xe7cdcf[_0x1e45('0x24')]);_0x5229e7['filters']=_[_0x1e45('0x26')](_0x5229e7[_0x1e45('0x27')],_0x5229e7[_0x1e45('0x24')]);_0x3dd6c3['attributes']=_[_0x1e45('0x26')](_0x5229e7[_0x1e45('0x27')],qs[_0x1e45('0x28')](_0xe7cdcf[_0x1e45('0x24')]['fields']));_0x3dd6c3[_0x1e45('0x29')]=_0x3dd6c3[_0x1e45('0x29')][_0x1e45('0x2a')]?_0x3dd6c3[_0x1e45('0x29')]:_0x5229e7[_0x1e45('0x27')];if(!_0xe7cdcf['query']['hasOwnProperty']('nolimit')){_0x3dd6c3['limit']=qs[_0x1e45('0x17')](_0xe7cdcf['query'][_0x1e45('0x17')]);_0x3dd6c3[_0x1e45('0x15')]=qs['offset'](_0xe7cdcf['query'][_0x1e45('0x15')]);}_0x3dd6c3[_0x1e45('0x2b')]=qs[_0x1e45('0x2c')](_0xe7cdcf[_0x1e45('0x24')]['sort']);_0x3dd6c3[_0x1e45('0x2d')]=qs[_0x1e45('0x2e')](_[_0x1e45('0x2f')](_0xe7cdcf[_0x1e45('0x24')],_0x5229e7['filters']),_0x4a04aa);if(_0xe7cdcf[_0x1e45('0x24')][_0x1e45('0x30')]){_0x3dd6c3[_0x1e45('0x2d')]=_['merge'](_0x3dd6c3['where'],{'$or':_[_0x1e45('0x20')](_0x4a04aa,function(_0x47c200){if(_0x47c200['type']!==_0x1e45('0x31')){var _0x587a0a={};_0x587a0a[_0x47c200['name']]={'$like':'%'+_0xe7cdcf[_0x1e45('0x24')][_0x1e45('0x30')]+'%'};return _0x587a0a;}})});}_0x3dd6c3=_[_0x1e45('0x32')]({},_0x3dd6c3,_0xe7cdcf[_0x1e45('0x33')]);var _0x11a327={'where':_0x3dd6c3[_0x1e45('0x2d')]};return db[_0x1e45('0x34')][_0x1e45('0x18')](_0x11a327)[_0x1e45('0x1a')](function(_0x53713a){_0x3def67[_0x1e45('0x18')]=_0x53713a;if(_0xe7cdcf[_0x1e45('0x24')][_0x1e45('0x35')]){_0x3dd6c3[_0x1e45('0x36')]=[{'all':!![]}];}return db['WhatsappApplication'][_0x1e45('0x37')](_0x3dd6c3);})[_0x1e45('0x1a')](function(_0x2984ae){_0x3def67[_0x1e45('0x38')]=_0x2984ae;return _0x3def67;})['then'](respondWithFilteredResult(_0x34046e,_0x3dd6c3))[_0x1e45('0x39')](handleError(_0x34046e,null));};exports[_0x1e45('0x3a')]=function(_0x32a42a,_0x393a50){var _0x522b40={'raw':!![],'where':{'id':_0x32a42a[_0x1e45('0x3b')]['id']}},_0x460d38={};_0x460d38[_0x1e45('0x27')]=_[_0x1e45('0x25')](db[_0x1e45('0x34')][_0x1e45('0x3c')]);_0x460d38['query']=_[_0x1e45('0x25')](_0x32a42a['query']);_0x460d38[_0x1e45('0x2e')]=_[_0x1e45('0x26')](_0x460d38[_0x1e45('0x27')],_0x460d38[_0x1e45('0x24')]);_0x522b40[_0x1e45('0x29')]=_[_0x1e45('0x26')](_0x460d38['model'],qs[_0x1e45('0x28')](_0x32a42a[_0x1e45('0x24')][_0x1e45('0x28')]));_0x522b40['attributes']=_0x522b40[_0x1e45('0x29')][_0x1e45('0x2a')]?_0x522b40[_0x1e45('0x29')]:_0x460d38['model'];if(_0x32a42a['query']['includeAll']){_0x522b40[_0x1e45('0x36')]=[{'all':!![]}];}_0x522b40=_[_0x1e45('0x32')]({},_0x522b40,_0x32a42a[_0x1e45('0x33')]);return db[_0x1e45('0x34')]['find'](_0x522b40)[_0x1e45('0x1a')](handleEntityNotFound(_0x393a50,null))[_0x1e45('0x1a')](respondWithResult(_0x393a50,null))[_0x1e45('0x39')](handleError(_0x393a50,null));};exports[_0x1e45('0x3d')]=function(_0x3994d8,_0x53e41b){return db[_0x1e45('0x34')][_0x1e45('0x3d')](_0x3994d8[_0x1e45('0x3e')],{})[_0x1e45('0x1a')](respondWithResult(_0x53e41b,0xc9))[_0x1e45('0x39')](handleError(_0x53e41b,null));};exports['update']=function(_0x374c32,_0x14b06f){if(_0x374c32[_0x1e45('0x3e')]['id']){delete _0x374c32[_0x1e45('0x3e')]['id'];}return db[_0x1e45('0x34')][_0x1e45('0x3f')]({'where':{'id':_0x374c32['params']['id']}})[_0x1e45('0x1a')](handleEntityNotFound(_0x14b06f,null))[_0x1e45('0x1a')](saveUpdates(_0x374c32['body'],null))[_0x1e45('0x1a')](respondWithResult(_0x14b06f,null))['catch'](handleError(_0x14b06f,null));};exports[_0x1e45('0x1b')]=function(_0x3e6845,_0x5bafc7){return db[_0x1e45('0x34')][_0x1e45('0x3f')]({'where':{'id':_0x3e6845[_0x1e45('0x3b')]['id']}})[_0x1e45('0x1a')](handleEntityNotFound(_0x5bafc7,null))[_0x1e45('0x1a')](removeEntity(_0x5bafc7,null))[_0x1e45('0x39')](handleError(_0x5bafc7,null));};
\ No newline at end of file
+var _0xf777=['attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','then','include','findAll','rows','show','params','keys','rawAttributes','includeAll','find','create','body','catch','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','fs-extra','squel','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','Content-Range','apply','save','update','sendStatus','error','stack','name','index','map','WhatsappApplication','fieldName','type','key','model','filters','intersection','query'];(function(_0x6503ff,_0x2b169a){var _0x22e638=function(_0x53e4c4){while(--_0x53e4c4){_0x6503ff['push'](_0x6503ff['shift']());}};_0x22e638(++_0x2b169a);}(_0xf777,0x1e9));var _0x7f77=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xf777[_0x20a584];return _0x4b41a8;};'use strict';var emlformat=require(_0x7f77('0x0'));var rimraf=require(_0x7f77('0x1'));var zipdir=require(_0x7f77('0x2'));var jsonpatch=require(_0x7f77('0x3'));var rp=require(_0x7f77('0x4'));var moment=require(_0x7f77('0x5'));var BPromise=require(_0x7f77('0x6'));var Mustache=require(_0x7f77('0x7'));var util=require(_0x7f77('0x8'));var path=require('path');var sox=require(_0x7f77('0x9'));var csv=require(_0x7f77('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x7f77('0xb'));var _=require('lodash');var squel=require(_0x7f77('0xc'));var crypto=require('crypto');var jsforce=require(_0x7f77('0xd'));var deskjs=require(_0x7f77('0xe'));var toCsv=require(_0x7f77('0xa'));var querystring=require(_0x7f77('0xf'));var Papa=require(_0x7f77('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x7f77('0x11'));var as=require(_0x7f77('0x12'));var hardwareService=require(_0x7f77('0x13'));var logger=require(_0x7f77('0x14'))(_0x7f77('0x15'));var utils=require('../../config/utils');var config=require(_0x7f77('0x16'));var licenseUtil=require(_0x7f77('0x17'));var db=require(_0x7f77('0x18'))['db'];function respondWithStatusCode(_0x2ab82d,_0xd625fb){_0xd625fb=_0xd625fb||0xcc;return function(_0x484018){if(_0x484018){return _0x2ab82d['sendStatus'](_0xd625fb);}return _0x2ab82d[_0x7f77('0x19')](_0xd625fb)[_0x7f77('0x1a')]();};}function respondWithResult(_0x3f7a60,_0x3f99e2){_0x3f99e2=_0x3f99e2||0xc8;return function(_0xe15bf7){if(_0xe15bf7){return _0x3f7a60[_0x7f77('0x19')](_0x3f99e2)[_0x7f77('0x1b')](_0xe15bf7);}};}function respondWithFilteredResult(_0x2efdd1,_0x13e9a1){return function(_0x3d8a45){if(_0x3d8a45){var _0x2c104a=typeof _0x13e9a1[_0x7f77('0x1c')]===_0x7f77('0x1d')&&typeof _0x13e9a1[_0x7f77('0x1e')]===_0x7f77('0x1d');var _0x40577e=_0x3d8a45['count'];var _0x5b2c85=_0x2c104a?0x0:_0x13e9a1[_0x7f77('0x1c')];var _0x53ec10=_0x2c104a?_0x3d8a45[_0x7f77('0x1f')]:_0x13e9a1['offset']+_0x13e9a1[_0x7f77('0x1e')];var _0x16eaf0;if(_0x53ec10>=_0x40577e){_0x53ec10=_0x40577e;_0x16eaf0=0xc8;}else{_0x16eaf0=0xce;}_0x2efdd1[_0x7f77('0x19')](_0x16eaf0);return _0x2efdd1['set'](_0x7f77('0x20'),_0x5b2c85+'-'+_0x53ec10+'/'+_0x40577e)[_0x7f77('0x1b')](_0x3d8a45);}return null;};}function patchUpdates(_0x4d7283){return function(_0x175e9c){try{jsonpatch[_0x7f77('0x21')](_0x175e9c,_0x4d7283,!![]);}catch(_0x2d7654){return BPromise['reject'](_0x2d7654);}return _0x175e9c[_0x7f77('0x22')]();};}function saveUpdates(_0x5b869c,_0x5c4049){return function(_0xcb6a79){if(_0xcb6a79){return _0xcb6a79[_0x7f77('0x23')](_0x5b869c)['then'](function(_0x5e98b5){return _0x5e98b5;});}return null;};}function removeEntity(_0x2493a0,_0x87e6b6){return function(_0x1d8fe3){if(_0x1d8fe3){return _0x1d8fe3['destroy']()['then'](function(){_0x2493a0[_0x7f77('0x19')](0xcc)[_0x7f77('0x1a')]();});}};}function handleEntityNotFound(_0x303043,_0x3d66d5){return function(_0xd78c83){if(!_0xd78c83){_0x303043[_0x7f77('0x24')](0x194);}return _0xd78c83;};}function handleError(_0x56484c,_0x106ce3){_0x106ce3=_0x106ce3||0x1f4;return function(_0x4e38e4){logger[_0x7f77('0x25')](_0x4e38e4[_0x7f77('0x26')]);if(_0x4e38e4['name']){delete _0x4e38e4[_0x7f77('0x27')];}_0x56484c[_0x7f77('0x19')](_0x106ce3)['send'](_0x4e38e4);};}exports[_0x7f77('0x28')]=function(_0x53ac60,_0x341b5a){var _0x25fcae={},_0x1bae99={},_0x600238={'count':0x0,'rows':[]};var _0x6995bf=_[_0x7f77('0x29')](db[_0x7f77('0x2a')]['rawAttributes'],function(_0x268c18){return{'name':_0x268c18[_0x7f77('0x2b')],'type':_0x268c18[_0x7f77('0x2c')][_0x7f77('0x2d')]};});_0x1bae99[_0x7f77('0x2e')]=_[_0x7f77('0x29')](_0x6995bf,_0x7f77('0x27'));_0x1bae99['query']=_['keys'](_0x53ac60['query']);_0x1bae99[_0x7f77('0x2f')]=_[_0x7f77('0x30')](_0x1bae99[_0x7f77('0x2e')],_0x1bae99[_0x7f77('0x31')]);_0x25fcae[_0x7f77('0x32')]=_[_0x7f77('0x30')](_0x1bae99[_0x7f77('0x2e')],qs[_0x7f77('0x33')](_0x53ac60[_0x7f77('0x31')][_0x7f77('0x33')]));_0x25fcae[_0x7f77('0x32')]=_0x25fcae['attributes'][_0x7f77('0x34')]?_0x25fcae[_0x7f77('0x32')]:_0x1bae99[_0x7f77('0x2e')];if(!_0x53ac60[_0x7f77('0x31')][_0x7f77('0x35')](_0x7f77('0x36'))){_0x25fcae[_0x7f77('0x1e')]=qs[_0x7f77('0x1e')](_0x53ac60[_0x7f77('0x31')][_0x7f77('0x1e')]);_0x25fcae['offset']=qs[_0x7f77('0x1c')](_0x53ac60['query'][_0x7f77('0x1c')]);}_0x25fcae[_0x7f77('0x37')]=qs['sort'](_0x53ac60['query'][_0x7f77('0x38')]);_0x25fcae[_0x7f77('0x39')]=qs['filters'](_[_0x7f77('0x3a')](_0x53ac60['query'],_0x1bae99[_0x7f77('0x2f')]),_0x6995bf);if(_0x53ac60[_0x7f77('0x31')]['filter']){_0x25fcae[_0x7f77('0x39')]=_[_0x7f77('0x3b')](_0x25fcae[_0x7f77('0x39')],{'$or':_[_0x7f77('0x29')](_0x6995bf,function(_0x41cc45){if(_0x41cc45[_0x7f77('0x2c')]!==_0x7f77('0x3c')){var _0x141c92={};_0x141c92[_0x41cc45[_0x7f77('0x27')]]={'$like':'%'+_0x53ac60['query'][_0x7f77('0x3d')]+'%'};return _0x141c92;}})});}_0x25fcae=_[_0x7f77('0x3b')]({},_0x25fcae,_0x53ac60[_0x7f77('0x3e')]);var _0x205e20={'where':_0x25fcae[_0x7f77('0x39')]};return db[_0x7f77('0x2a')]['count'](_0x205e20)[_0x7f77('0x3f')](function(_0x526dfb){_0x600238[_0x7f77('0x1f')]=_0x526dfb;if(_0x53ac60[_0x7f77('0x31')]['includeAll']){_0x25fcae[_0x7f77('0x40')]=[{'all':!![]}];}return db['WhatsappApplication'][_0x7f77('0x41')](_0x25fcae);})[_0x7f77('0x3f')](function(_0x2078bf){_0x600238[_0x7f77('0x42')]=_0x2078bf;return _0x600238;})[_0x7f77('0x3f')](respondWithFilteredResult(_0x341b5a,_0x25fcae))['catch'](handleError(_0x341b5a,null));};exports[_0x7f77('0x43')]=function(_0x3c79e1,_0x10ca50){var _0x144ff9={'raw':!![],'where':{'id':_0x3c79e1[_0x7f77('0x44')]['id']}},_0x5e326b={};_0x5e326b[_0x7f77('0x2e')]=_[_0x7f77('0x45')](db['WhatsappApplication'][_0x7f77('0x46')]);_0x5e326b[_0x7f77('0x31')]=_['keys'](_0x3c79e1[_0x7f77('0x31')]);_0x5e326b['filters']=_['intersection'](_0x5e326b[_0x7f77('0x2e')],_0x5e326b[_0x7f77('0x31')]);_0x144ff9['attributes']=_[_0x7f77('0x30')](_0x5e326b[_0x7f77('0x2e')],qs[_0x7f77('0x33')](_0x3c79e1[_0x7f77('0x31')]['fields']));_0x144ff9[_0x7f77('0x32')]=_0x144ff9[_0x7f77('0x32')][_0x7f77('0x34')]?_0x144ff9[_0x7f77('0x32')]:_0x5e326b['model'];if(_0x3c79e1[_0x7f77('0x31')][_0x7f77('0x47')]){_0x144ff9[_0x7f77('0x40')]=[{'all':!![]}];}_0x144ff9=_['merge']({},_0x144ff9,_0x3c79e1[_0x7f77('0x3e')]);return db['WhatsappApplication'][_0x7f77('0x48')](_0x144ff9)[_0x7f77('0x3f')](handleEntityNotFound(_0x10ca50,null))[_0x7f77('0x3f')](respondWithResult(_0x10ca50,null))['catch'](handleError(_0x10ca50,null));};exports['create']=function(_0x3f65d8,_0x296152){return db[_0x7f77('0x2a')][_0x7f77('0x49')](_0x3f65d8[_0x7f77('0x4a')],{})[_0x7f77('0x3f')](respondWithResult(_0x296152,0xc9))[_0x7f77('0x4b')](handleError(_0x296152,null));};exports[_0x7f77('0x23')]=function(_0x8e6913,_0x3246dd){if(_0x8e6913[_0x7f77('0x4a')]['id']){delete _0x8e6913[_0x7f77('0x4a')]['id'];}return db['WhatsappApplication'][_0x7f77('0x48')]({'where':{'id':_0x8e6913[_0x7f77('0x44')]['id']}})[_0x7f77('0x3f')](handleEntityNotFound(_0x3246dd,null))[_0x7f77('0x3f')](saveUpdates(_0x8e6913[_0x7f77('0x4a')],null))[_0x7f77('0x3f')](respondWithResult(_0x3246dd,null))[_0x7f77('0x4b')](handleError(_0x3246dd,null));};exports[_0x7f77('0x4c')]=function(_0x28681a,_0x1366b5){return db[_0x7f77('0x2a')]['find']({'where':{'id':_0x28681a[_0x7f77('0x44')]['id']}})[_0x7f77('0x3f')](handleEntityNotFound(_0x1366b5,null))[_0x7f77('0x3f')](removeEntity(_0x1366b5,null))[_0x7f77('0x4b')](handleError(_0x1366b5,null));};
\ No newline at end of file
index 6900946..7370d43 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa1a5=['./whatsappApplication.attributes','exports','define','whatsapp_applications','utf8mb4','utf8mb4_unicode_ci','lodash','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment'];(function(_0x277456,_0x46f400){var _0x30d434=function(_0x2b8843){while(--_0x2b8843){_0x277456['push'](_0x277456['shift']());}};_0x30d434(++_0x46f400);}(_0xa1a5,0x1b8));var _0x5a1a=function(_0x46dffb,_0x213923){_0x46dffb=_0x46dffb-0x0;var _0x11c792=_0xa1a5[_0x46dffb];return _0x11c792;};'use strict';var _=require(_0x5a1a('0x0'));var util=require('util');var logger=require(_0x5a1a('0x1'))(_0x5a1a('0x2'));var moment=require(_0x5a1a('0x3'));var BPromise=require(_0x5a1a('0x4'));var rp=require(_0x5a1a('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x5a1a('0x6'));var config=require(_0x5a1a('0x7'));var attributes=require(_0x5a1a('0x8'));module[_0x5a1a('0x9')]=function(_0x1b718f,_0x27f71f){return _0x1b718f[_0x5a1a('0xa')]('WhatsappApplication',attributes,{'tableName':_0x5a1a('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x5a1a('0xc'),'collate':_0x5a1a('0xd')});};
\ No newline at end of file
+var _0x0a52=['rimraf','../../config/environment','./whatsappApplication.attributes','exports','WhatsappApplication','whatsapp_applications','utf8mb4_unicode_ci','lodash','util','api','moment','bluebird','path'];(function(_0x577508,_0x30e3ab){var _0x514f34=function(_0x4d7dce){while(--_0x4d7dce){_0x577508['push'](_0x577508['shift']());}};_0x514f34(++_0x30e3ab);}(_0x0a52,0xe4));var _0x20a5=function(_0x1f58df,_0x104703){_0x1f58df=_0x1f58df-0x0;var _0x12fb00=_0x0a52[_0x1f58df];return _0x12fb00;};'use strict';var _=require(_0x20a5('0x0'));var util=require(_0x20a5('0x1'));var logger=require('../../config/logger')(_0x20a5('0x2'));var moment=require(_0x20a5('0x3'));var BPromise=require(_0x20a5('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x20a5('0x5'));var rimraf=require(_0x20a5('0x6'));var config=require(_0x20a5('0x7'));var attributes=require(_0x20a5('0x8'));module[_0x20a5('0x9')]=function(_0x1fcc72,_0x4acc66){return _0x1fcc72['define'](_0x20a5('0xa'),attributes,{'tableName':_0x20a5('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x20a5('0xc')});};
\ No newline at end of file
index b088514..528a52f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda55=['util','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','request','then','WhatsappApplication,\x20%s,\x20%s','request\x20sent','debug','WhatsappApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','lodash'];(function(_0x1880f5,_0x18418a){var _0x3f0957=function(_0x22b58b){while(--_0x22b58b){_0x1880f5['push'](_0x1880f5['shift']());}};_0x3f0957(++_0x18418a);}(_0xda55,0x6d));var _0x5da5=function(_0x433422,_0x2fb833){_0x433422=_0x433422-0x0;var _0xd9daaf=_0xda55[_0x433422];return _0xd9daaf;};'use strict';var _=require(_0x5da5('0x0'));var util=require(_0x5da5('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x5da5('0x2'));var fs=require('fs');var Redis=require(_0x5da5('0x3'));var db=require(_0x5da5('0x4'))['db'];var utils=require(_0x5da5('0x5'));var logger=require(_0x5da5('0x6'))('rpc');var config=require(_0x5da5('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x5da5('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2fd877,_0x267469,_0x71b187){return new BPromise(function(_0x46290d,_0x3debdf){return client[_0x5da5('0x9')](_0x2fd877,_0x71b187)[_0x5da5('0xa')](function(_0x302795){logger['info'](_0x5da5('0xb'),_0x267469,_0x5da5('0xc'));logger[_0x5da5('0xd')](_0x5da5('0xe'),_0x267469,_0x5da5('0xc'),JSON[_0x5da5('0xf')](_0x302795));if(_0x302795[_0x5da5('0x10')]){if(_0x302795['error'][_0x5da5('0x11')]===0x1f4){logger[_0x5da5('0x10')]('WhatsappApplication,\x20%s,\x20%s',_0x267469,_0x302795[_0x5da5('0x10')][_0x5da5('0x12')]);return _0x3debdf(_0x302795[_0x5da5('0x10')][_0x5da5('0x12')]);}logger[_0x5da5('0x10')](_0x5da5('0xb'),_0x267469,_0x302795['error']['message']);return _0x46290d(_0x302795['error'][_0x5da5('0x12')]);}else{logger[_0x5da5('0x13')](_0x5da5('0xb'),_0x267469,_0x5da5('0xc'));_0x46290d(_0x302795[_0x5da5('0x14')][_0x5da5('0x12')]);}})[_0x5da5('0x15')](function(_0x4a952a){logger[_0x5da5('0x10')](_0x5da5('0xb'),_0x267469,_0x4a952a);_0x3debdf(_0x4a952a);});});}
\ No newline at end of file
+var _0xd0bb=['debug','stringify','error','code','WhatsappApplication,\x20%s,\x20%s','message','result','catch','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','request','then','request\x20sent'];(function(_0x1054c4,_0x119dea){var _0x2ccb38=function(_0x37ff0c){while(--_0x37ff0c){_0x1054c4['push'](_0x1054c4['shift']());}};_0x2ccb38(++_0x119dea);}(_0xd0bb,0x1eb));var _0xbd0b=function(_0x1bba6c,_0x1f94cf){_0x1bba6c=_0x1bba6c-0x0;var _0x415735=_0xd0bb[_0x1bba6c];return _0x415735;};'use strict';var _=require(_0xbd0b('0x0'));var util=require(_0xbd0b('0x1'));var moment=require(_0xbd0b('0x2'));var BPromise=require('bluebird');var rs=require(_0xbd0b('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xbd0b('0x4'))['db'];var utils=require(_0xbd0b('0x5'));var logger=require('../../config/logger')(_0xbd0b('0x6'));var config=require('../../config/environment');var jayson=require(_0xbd0b('0x7'));var client=jayson[_0xbd0b('0x8')][_0xbd0b('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x37c205,_0x809599,_0x5eb975){return new BPromise(function(_0x2a4075,_0x4533ff){return client[_0xbd0b('0xa')](_0x37c205,_0x5eb975)[_0xbd0b('0xb')](function(_0x16e185){logger['info']('WhatsappApplication,\x20%s,\x20%s',_0x809599,_0xbd0b('0xc'));logger[_0xbd0b('0xd')]('WhatsappApplication,\x20%s,\x20%s,\x20%s',_0x809599,_0xbd0b('0xc'),JSON[_0xbd0b('0xe')](_0x16e185));if(_0x16e185['error']){if(_0x16e185[_0xbd0b('0xf')][_0xbd0b('0x10')]===0x1f4){logger[_0xbd0b('0xf')](_0xbd0b('0x11'),_0x809599,_0x16e185[_0xbd0b('0xf')][_0xbd0b('0x12')]);return _0x4533ff(_0x16e185[_0xbd0b('0xf')][_0xbd0b('0x12')]);}logger[_0xbd0b('0xf')](_0xbd0b('0x11'),_0x809599,_0x16e185[_0xbd0b('0xf')]['message']);return _0x2a4075(_0x16e185[_0xbd0b('0xf')]['message']);}else{logger['info'](_0xbd0b('0x11'),_0x809599,_0xbd0b('0xc'));_0x2a4075(_0x16e185[_0xbd0b('0x13')][_0xbd0b('0x12')]);}})[_0xbd0b('0x14')](function(_0x546db3){logger['error'](_0xbd0b('0x11'),_0x809599,_0x546db3);_0x4533ff(_0x546db3);});});}
\ No newline at end of file
index e1f24dd..6c9016e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef17=['path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./whatsappInteraction.controller','isAuthenticated','get','describe','show','/:id/messages','getMessages','download','post','addMessage','/:id/tags','tracked','whatsapp','whatsappinteraction:addtags','/:id','delete','removeTags','multer','util'];(function(_0x149083,_0x4047b6){var _0x4dc74e=function(_0x1211f9){while(--_0x1211f9){_0x149083['push'](_0x149083['shift']());}};_0x4dc74e(++_0x4047b6);}(_0xef17,0x136));var _0x7ef1=function(_0x5ec769,_0x2739b2){_0x5ec769=_0x5ec769-0x0;var _0x726a95=_0xef17[_0x5ec769];return _0x726a95;};'use strict';var multer=require(_0x7ef1('0x0'));var util=require(_0x7ef1('0x1'));var path=require(_0x7ef1('0x2'));var timeout=require(_0x7ef1('0x3'));var express=require(_0x7ef1('0x4'));var router=express[_0x7ef1('0x5')]();var fs_extra=require(_0x7ef1('0x6'));var auth=require(_0x7ef1('0x7'));var interaction=require(_0x7ef1('0x8'));var config=require('../../config/environment');var controller=require(_0x7ef1('0x9'));router['get']('/',auth[_0x7ef1('0xa')](),controller['index']);router[_0x7ef1('0xb')]('/describe',auth['isAuthenticated'](),controller[_0x7ef1('0xc')]);router[_0x7ef1('0xb')]('/:id',auth[_0x7ef1('0xa')](),controller[_0x7ef1('0xd')]);router[_0x7ef1('0xb')](_0x7ef1('0xe'),auth[_0x7ef1('0xa')](),controller[_0x7ef1('0xf')]);router[_0x7ef1('0xb')]('/:id/download',auth['isAuthenticated'](),controller[_0x7ef1('0x10')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0x7ef1('0x11')]('/:id/messages',auth[_0x7ef1('0xa')](),controller[_0x7ef1('0x12')]);router[_0x7ef1('0x11')](_0x7ef1('0x13'),auth[_0x7ef1('0xa')](),interaction[_0x7ef1('0x14')](_0x7ef1('0x15'),_0x7ef1('0x16')),controller['addTags']);router['put'](_0x7ef1('0x17'),auth['isAuthenticated'](),interaction[_0x7ef1('0x14')](_0x7ef1('0x15'),'whatsappinteraction:update'),controller['update']);router['delete'](_0x7ef1('0x17'),auth['isAuthenticated'](),interaction[_0x7ef1('0x14')]('whatsapp','whatsappinteraction:destroy'),controller['destroy']);router[_0x7ef1('0x18')]('/:id/tags',auth[_0x7ef1('0xa')](),controller[_0x7ef1('0x19')]);module['exports']=router;
\ No newline at end of file
+var _0x1b65=['removeTags','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappInteraction.controller','get','index','/describe','isAuthenticated','/:id','show','getMessages','/:id/download','/:id/messages','addMessage','/:id/tags','tracked','whatsapp','whatsappinteraction:addtags','addTags','whatsappinteraction:update','delete','whatsappinteraction:destroy'];(function(_0x386571,_0xb12d00){var _0x352d6a=function(_0x151247){while(--_0x151247){_0x386571['push'](_0x386571['shift']());}};_0x352d6a(++_0xb12d00);}(_0x1b65,0x1b4));var _0x51b6=function(_0x566a2f,_0x405c7b){_0x566a2f=_0x566a2f-0x0;var _0x186c75=_0x1b65[_0x566a2f];return _0x186c75;};'use strict';var multer=require(_0x51b6('0x0'));var util=require(_0x51b6('0x1'));var path=require(_0x51b6('0x2'));var timeout=require(_0x51b6('0x3'));var express=require('express');var router=express[_0x51b6('0x4')]();var fs_extra=require(_0x51b6('0x5'));var auth=require(_0x51b6('0x6'));var interaction=require(_0x51b6('0x7'));var config=require(_0x51b6('0x8'));var controller=require(_0x51b6('0x9'));router[_0x51b6('0xa')]('/',auth['isAuthenticated'](),controller[_0x51b6('0xb')]);router[_0x51b6('0xa')](_0x51b6('0xc'),auth[_0x51b6('0xd')](),controller['describe']);router[_0x51b6('0xa')](_0x51b6('0xe'),auth['isAuthenticated'](),controller[_0x51b6('0xf')]);router['get']('/:id/messages',auth[_0x51b6('0xd')](),controller[_0x51b6('0x10')]);router[_0x51b6('0xa')](_0x51b6('0x11'),auth[_0x51b6('0xd')](),controller['download']);router['post']('/',auth[_0x51b6('0xd')](),controller['create']);router['post'](_0x51b6('0x12'),auth['isAuthenticated'](),controller[_0x51b6('0x13')]);router['post'](_0x51b6('0x14'),auth[_0x51b6('0xd')](),interaction[_0x51b6('0x15')](_0x51b6('0x16'),_0x51b6('0x17')),controller[_0x51b6('0x18')]);router['put'](_0x51b6('0xe'),auth[_0x51b6('0xd')](),interaction[_0x51b6('0x15')]('whatsapp',_0x51b6('0x19')),controller['update']);router[_0x51b6('0x1a')](_0x51b6('0xe'),auth[_0x51b6('0xd')](),interaction[_0x51b6('0x15')](_0x51b6('0x16'),_0x51b6('0x1b')),controller['destroy']);router[_0x51b6('0x1a')]('/:id/tags',auth[_0x51b6('0xd')](),controller[_0x51b6('0x1c')]);module['exports']=router;
\ No newline at end of file
index ff5b2ff..09e526e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x326f=['BOOLEAN','DATE','STRING','ENUM','out','sequelize'];(function(_0x55679c,_0x129027){var _0x3b099e=function(_0x55aa52){while(--_0x55aa52){_0x55679c['push'](_0x55679c['shift']());}};_0x3b099e(++_0x129027);}(_0x326f,0xd1));var _0xf326=function(_0x207ff8,_0x1281ec){_0x207ff8=_0x207ff8-0x0;var _0x56e835=_0x326f[_0x207ff8];return _0x56e835;};'use strict';var Sequelize=require(_0xf326('0x0'));var moment=require('moment');module['exports']={'closed':{'type':Sequelize[_0xf326('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xf326('0x2')]},'disposition':{'type':Sequelize[_0xf326('0x3')]},'secondDisposition':{'type':Sequelize[_0xf326('0x3')]},'thirdDisposition':{'type':Sequelize[_0xf326('0x3')]},'note':{'type':Sequelize[_0xf326('0x3')]},'phone':{'type':Sequelize[_0xf326('0x3')]},'read1stAt':{'type':Sequelize[_0xf326('0x2')]},'firstMsgDirection':{'type':Sequelize[_0xf326('0x4')]('in',_0xf326('0x5')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize[_0xf326('0x4')]('in',_0xf326('0x5')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0xf326('0x1')],'defaultValue':![]}};
\ No newline at end of file
+var _0x4491=['out','BOOLEAN','sequelize','exports','DATE','STRING','ENUM'];(function(_0x3bfd5b,_0x100e29){var _0xba6715=function(_0xb5a163){while(--_0xb5a163){_0x3bfd5b['push'](_0x3bfd5b['shift']());}};_0xba6715(++_0x100e29);}(_0x4491,0x1bb));var _0x1449=function(_0x2f9331,_0x2e0a62){_0x2f9331=_0x2f9331-0x0;var _0x5dbe9f=_0x4491[_0x2f9331];return _0x5dbe9f;};'use strict';var Sequelize=require(_0x1449('0x0'));var moment=require('moment');module[_0x1449('0x1')]={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x1449('0x2')]},'disposition':{'type':Sequelize[_0x1449('0x3')]},'secondDisposition':{'type':Sequelize[_0x1449('0x3')]},'thirdDisposition':{'type':Sequelize[_0x1449('0x3')]},'note':{'type':Sequelize[_0x1449('0x3')]},'phone':{'type':Sequelize[_0x1449('0x3')]},'read1stAt':{'type':Sequelize['DATE']},'firstMsgDirection':{'type':Sequelize[_0x1449('0x4')]('in','out'),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x1449('0x2')]},'lastMsgDirection':{'type':Sequelize[_0x1449('0x4')]('in',_0x1449('0x5')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x1449('0x6')],'defaultValue':![]}};
\ No newline at end of file
index e0068ba..2b3eeb6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b7c=['addTags','spread','Tag','emit','whatsappInteractionTags:save','removeTags','unix','join','root','server','files','tmp','transcript-%d-%s.zip','CmContact','lastName','attachments','Attachment','direction','secret','WhatsappAccount','Owner','get','mkdirSync','Whatsapp','Account','N.A.','closed','closedAt','disposition','Messages','basename','existsSync','createReadStream','createWriteStream','out','firstName','views','downloadInteraction.ejs','transcript-','createPdfFromHTML','err','unlinkSync','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','localhost','socket.io-emitter','redis','register','sendStatus','end','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','error','stack','name','Users','map','fullname','TagIds','Tags','split','forEach','push','catch','index','WhatsappInteraction','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','pick','select','field','color','from','tools_tags','u.fullname','ui.WhatsappInteractionId','user_has_whatsapp_interactions','left_join','u.id\x20=\x20ui.UserId','whatsapp_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','users','o.id\x20=\x20i.UserId','whatsapp_accounts','a.id\x20=\x20i.WhatsappAccountId','whatsapp_messages','me.WhatsappInteractionId\x20=\x20i.id','whatsapp_interaction_has_tags','it.WhatsappInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','parseSearch','sqlOperator','find','unreadMessages','value','having','`\x20=\x200','Contact','operator','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','ContactId','buildExpression','text','start','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','$substring','UserId','some','isEmpty','i.WhatsappAccountId\x20IN\x20?','concat','createdAt','parse','$lte','where','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20>\x200','tag','isArray','filter','isNumeric','i.id\x20LIKE\x20?','i.phone\x20LIKE\x20?','i.id','Sequelize','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','order','DESC','resolve','WhatsappAccountId','i.WhatsappAccountId\x20IS\x20NOT\x20NULL','user','role','agent','getWhatsappAccounts','i.WhatsappAccountId\x20IS\x20NULL','sequelize','toString','keyBy','a.key','a.mandatoryDisposition','Account.mandatoryDisposition','contactName','i.*','Contact.firstName','c.lastName','Contact.lastName','c.email','Contact.email','c.phone','Contact.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','Owner.fullname','o.internal','ui.WhatsappInteractionId\x20IN\x20?','rows','show','params','include','merge','options','create','body','destroy','describe','addMessage','WhatsappMessage','omit','ids','getMessages','findOne','WhatsappInteractionId','$gte','format','YYYY-MM-DD\x20HH:mm:ss','includeAll'];(function(_0x45198a,_0x45b398){var _0x407199=function(_0x4f4f66){while(--_0x4f4f66){_0x45198a['push'](_0x45198a['shift']());}};_0x407199(++_0x45b398);}(_0x8b7c,0x119));var _0xc8b7=function(_0x47b0d9,_0x41b561){_0x47b0d9=_0x47b0d9-0x0;var _0x599df3=_0x8b7c[_0x47b0d9];return _0x599df3;};'use strict';var emlformat=require(_0xc8b7('0x0'));var rimraf=require(_0xc8b7('0x1'));var zipdir=require(_0xc8b7('0x2'));var jsonpatch=require(_0xc8b7('0x3'));var rp=require(_0xc8b7('0x4'));var moment=require(_0xc8b7('0x5'));var BPromise=require(_0xc8b7('0x6'));var Mustache=require(_0xc8b7('0x7'));var util=require('util');var path=require(_0xc8b7('0x8'));var sox=require(_0xc8b7('0x9'));var csv=require(_0xc8b7('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xc8b7('0xb'));var _=require(_0xc8b7('0xc'));var squel=require(_0xc8b7('0xd'));var crypto=require(_0xc8b7('0xe'));var jsforce=require(_0xc8b7('0xf'));var deskjs=require(_0xc8b7('0x10'));var toCsv=require('to-csv');var querystring=require(_0xc8b7('0x11'));var Papa=require('papaparse');var Redis=require(_0xc8b7('0x12'));var authService=require(_0xc8b7('0x13'));var qs=require(_0xc8b7('0x14'));var as=require(_0xc8b7('0x15'));var pdf=require(_0xc8b7('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0xc8b7('0x17'));var config=require(_0xc8b7('0x18'));var licenseUtil=require(_0xc8b7('0x19'));var db=require(_0xc8b7('0x1a'))['db'];config['redis']=_['defaults'](config['redis'],{'host':_0xc8b7('0x1b'),'port':0x18eb});var socket=require(_0xc8b7('0x1c'))(new Redis(config[_0xc8b7('0x1d')]));require('./whatsappInteraction.socket')[_0xc8b7('0x1e')](socket);function respondWithStatusCode(_0x1f121e,_0x337fbc){_0x337fbc=_0x337fbc||0xcc;return function(_0x1b7dc0){if(_0x1b7dc0){return _0x1f121e[_0xc8b7('0x1f')](_0x337fbc);}return _0x1f121e['status'](_0x337fbc)[_0xc8b7('0x20')]();};}function respondWithResult(_0x26d70a,_0x2ee1b5){_0x2ee1b5=_0x2ee1b5||0xc8;return function(_0x3323de){if(_0x3323de){return _0x26d70a[_0xc8b7('0x21')](_0x2ee1b5)[_0xc8b7('0x22')](_0x3323de);}};}function respondWithFilteredResult(_0x1b2b93,_0x485415){return function(_0x5ae36a){if(_0x5ae36a){var _0x1cf47c=typeof _0x485415[_0xc8b7('0x23')]===_0xc8b7('0x24')&&typeof _0x485415['limit']==='undefined';var _0x12f7e5=_0x5ae36a['count'];var _0xd0f941=_0x1cf47c?0x0:_0x485415['offset'];var _0x462cce=_0x1cf47c?_0x5ae36a[_0xc8b7('0x25')]:_0x485415['offset']+_0x485415[_0xc8b7('0x26')];var _0x4f0829;if(_0x462cce>=_0x12f7e5){_0x462cce=_0x12f7e5;_0x4f0829=0xc8;}else{_0x4f0829=0xce;}_0x1b2b93[_0xc8b7('0x21')](_0x4f0829);return _0x1b2b93[_0xc8b7('0x27')](_0xc8b7('0x28'),_0xd0f941+'-'+_0x462cce+'/'+_0x12f7e5)['json'](_0x5ae36a);}return null;};}function patchUpdates(_0x11f10d){return function(_0x2cdce8){try{jsonpatch[_0xc8b7('0x29')](_0x2cdce8,_0x11f10d,!![]);}catch(_0x5b28ad){return BPromise[_0xc8b7('0x2a')](_0x5b28ad);}return _0x2cdce8[_0xc8b7('0x2b')]();};}function saveUpdates(_0x908acb,_0x210fec){return function(_0x2335cc){if(_0x2335cc){return _0x2335cc[_0xc8b7('0x2c')](_0x908acb)[_0xc8b7('0x2d')](function(_0x1c119f){return _0x1c119f;});}return null;};}function removeEntity(_0x11f863,_0x5d5db8){return function(_0x1439ee){if(_0x1439ee){return _0x1439ee['destroy']()[_0xc8b7('0x2d')](function(){_0x11f863[_0xc8b7('0x21')](0xcc)[_0xc8b7('0x20')]();});}};}function handleEntityNotFound(_0x3f92bd,_0x2046f5){return function(_0x311047){if(!_0x311047){_0x3f92bd['sendStatus'](0x194);}return _0x311047;};}function handleError(_0x48682b,_0x16cc83){_0x16cc83=_0x16cc83||0x1f4;return function(_0x13ac30){logger[_0xc8b7('0x2e')](_0x13ac30[_0xc8b7('0x2f')]);if(_0x13ac30[_0xc8b7('0x30')]){delete _0x13ac30[_0xc8b7('0x30')];}_0x48682b[_0xc8b7('0x21')](_0x16cc83)['send'](_0x13ac30);};}function getInteractionUsers(_0x3a9658,_0x3d6f00){return new BPromise(function(_0x13000d,_0x118574){try{if(_0x3d6f00[_0x3a9658['id']]){_0x3a9658[_0xc8b7('0x31')]=_[_0xc8b7('0x32')](_0x3d6f00[_0x3a9658['id']],function(_0x36f421){return{'id':_0x36f421['id'],'fullname':_0x36f421[_0xc8b7('0x33')]};});}}catch(_0x4fe3e4){_0x118574(_0x4fe3e4);}_0x13000d(_0x3a9658);});}function getInteractionTags(_0x247388,_0x3c5db5){return new BPromise(function(_0x982b0b,_0x2971fc){try{if(_0x247388[_0xc8b7('0x34')]){_0x247388[_0xc8b7('0x35')]=[];_0x247388[_0xc8b7('0x34')][_0xc8b7('0x36')](',')[_0xc8b7('0x37')](function(_0x37b57f){_0x247388[_0xc8b7('0x35')][_0xc8b7('0x38')](_0x3c5db5[_0x37b57f]);});}delete _0x247388[_0xc8b7('0x34')];}catch(_0x4a327d){_0x2971fc(_0x4a327d);}_0x982b0b(_0x247388);});}function updateWhatsappInteraction(_0x4b0c30,_0x174c3a,_0x500da8){return new BPromise(function(_0x68eb40,_0x13b56e){return getInteractionUsers(_0x4b0c30,_0x500da8)[_0xc8b7('0x2d')](function(_0x129e78){return getInteractionTags(_0x129e78,_0x174c3a);})[_0xc8b7('0x2d')](function(_0x59b131){_0x68eb40(_0x59b131);})[_0xc8b7('0x39')](function(_0x5c45ca){_0x13b56e(_0x5c45ca);});});}exports[_0xc8b7('0x3a')]=function(_0x45691c,_0x8e18e3){var _0x28b134={},_0x3706db={},_0x11cb85={'count':0x0,'rows':[]};var _0x18e3d8=_[_0xc8b7('0x32')](db[_0xc8b7('0x3b')][_0xc8b7('0x3c')],function(_0xf3cb9f){return{'name':_0xf3cb9f[_0xc8b7('0x3d')],'type':_0xf3cb9f[_0xc8b7('0x3e')][_0xc8b7('0x3f')]};});_0x3706db[_0xc8b7('0x40')]=_[_0xc8b7('0x32')](_0x18e3d8,'name');_0x3706db[_0xc8b7('0x41')]=_[_0xc8b7('0x42')](_0x45691c[_0xc8b7('0x41')]);_0x3706db[_0xc8b7('0x43')]=_[_0xc8b7('0x44')](_0x3706db[_0xc8b7('0x40')],_0x3706db['query']);_0x28b134[_0xc8b7('0x45')]=_[_0xc8b7('0x44')](_0x3706db[_0xc8b7('0x40')],qs[_0xc8b7('0x46')](_0x45691c['query']['fields']));_0x28b134[_0xc8b7('0x45')]=_0x28b134[_0xc8b7('0x45')][_0xc8b7('0x47')]?_0x28b134['attributes']:_0x3706db['model'];if(!_0x45691c[_0xc8b7('0x41')][_0xc8b7('0x48')](_0xc8b7('0x49'))){_0x28b134[_0xc8b7('0x26')]=qs[_0xc8b7('0x26')](_0x45691c[_0xc8b7('0x41')][_0xc8b7('0x26')]);_0x28b134[_0xc8b7('0x23')]=qs[_0xc8b7('0x23')](_0x45691c[_0xc8b7('0x41')][_0xc8b7('0x23')]);}_0x28b134['order']=qs[_0xc8b7('0x4a')](_0x45691c[_0xc8b7('0x41')]['sort']);_0x28b134['where']=qs[_0xc8b7('0x43')](_[_0xc8b7('0x4b')](_0x45691c['query'],_0x3706db[_0xc8b7('0x43')]),_0x18e3d8);var _0x10a4ff=[];var _0x768ade=squel[_0xc8b7('0x4c')]()[_0xc8b7('0x4d')]('id')[_0xc8b7('0x4d')](_0xc8b7('0x30'))[_0xc8b7('0x4d')](_0xc8b7('0x4e'))[_0xc8b7('0x4f')](_0xc8b7('0x50'));var _0x58b2bc=squel['select']()[_0xc8b7('0x4d')]('u.id')[_0xc8b7('0x4d')](_0xc8b7('0x51'))[_0xc8b7('0x4d')](_0xc8b7('0x52'))[_0xc8b7('0x4f')](_0xc8b7('0x53'),'ui')[_0xc8b7('0x54')]('users','u',_0xc8b7('0x55'));var _0x228e8d=squel[_0xc8b7('0x4c')]()[_0xc8b7('0x4f')](_0xc8b7('0x56'),'i')[_0xc8b7('0x54')](_0xc8b7('0x57'),'c',_0xc8b7('0x58'))[_0xc8b7('0x54')](_0xc8b7('0x59'),'o',_0xc8b7('0x5a'))[_0xc8b7('0x54')](_0xc8b7('0x5b'),'a',_0xc8b7('0x5c'))['left_join'](_0xc8b7('0x5d'),'me',_0xc8b7('0x5e'))[_0xc8b7('0x54')](_0xc8b7('0x5f'),'it',_0xc8b7('0x60'))['left_join'](_0xc8b7('0x50'),'t',_0xc8b7('0x61'));var _0x49e353=squel[_0xc8b7('0x62')]();var _0x32b5e0=[];var _0x1ec314=squel[_0xc8b7('0x62')]();var _0xc72a6;if(_0x45691c[_0xc8b7('0x41')]['search']){_0xc72a6=as[_0xc8b7('0x63')](_0x45691c[_0xc8b7('0x41')]['search']);var _0x163046=_0xc72a6[_0xc8b7('0x64')];for(var _0x538958=0x0;_0x538958<_0xc72a6['conditions'][_0xc8b7('0x47')];_0x538958++){var _0x55b4ca=_0xc72a6['conditions'][_0x538958];var _0x3f73e7='i';var _0x46e5f0=_[_0xc8b7('0x65')](_0x18e3d8,[_0xc8b7('0x30'),_0x55b4ca['field']]);if(!_0x46e5f0){switch(_0x55b4ca[_0xc8b7('0x4d')]){case _0xc8b7('0x66'):if(_0x55b4ca[_0xc8b7('0x67')]==0x1){_0x228e8d[_0xc8b7('0x68')]('`'+_0x55b4ca['field']+_0xc8b7('0x69'));}else{_0x228e8d[_0xc8b7('0x68')]('`'+_0x55b4ca[_0xc8b7('0x4d')]+'`\x20>\x200');}break;case _0xc8b7('0x6a'):if(_0x55b4ca[_0xc8b7('0x6b')]==='$substring'){if(_0x55b4ca[_0xc8b7('0x67')][_0xc8b7('0x36')]('\x20')['length']>0x1){_0x49e353[_0x163046](_0xc8b7('0x6c'),qs[_0xc8b7('0x6d')](_0x55b4ca[_0xc8b7('0x67')]),null);}else{var _0x16ef02='%'+_0x55b4ca['value']+'%';_0x49e353[_0x163046]('c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?',_0x16ef02,_0x16ef02,_0x16ef02);}}else{_0x46e5f0=_[_0xc8b7('0x65')](_0x18e3d8,[_0xc8b7('0x30'),_0xc8b7('0x6e')]);_0x55b4ca[_0xc8b7('0x4d')]=_0xc8b7('0x6e');_0x9f5b46=as[_0xc8b7('0x6f')](_0x3f73e7,_0x46e5f0[_0xc8b7('0x3e')],_0x55b4ca);_0x49e353[_0x163046](_0x9f5b46[_0xc8b7('0x70')],_0x9f5b46[_0xc8b7('0x67')][_0xc8b7('0x71')],_0x9f5b46[_0xc8b7('0x67')][_0xc8b7('0x20')]);}break;case'Tag':var _0x5e1a2d=_0x55b4ca[_0xc8b7('0x67')][_0xc8b7('0x36')](',')[_0xc8b7('0x32')](function(_0x262051){return Number(_0x262051);});_0x5e1a2d['forEach'](function(_0x5422d6){_0x1ec314['or'](_0xc8b7('0x72'),'%,'+_0x5422d6+',%');});_0x32b5e0=_[_0xc8b7('0x73')](_0x32b5e0,_0x5e1a2d);break;case _0xc8b7('0x74'):if(_0x55b4ca[_0xc8b7('0x6b')]===_0xc8b7('0x75')){_0x49e353[_0x163046]('CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','%'+_0x55b4ca[_0xc8b7('0x67')]+'%',null);}else{_0x46e5f0=_[_0xc8b7('0x65')](_0x18e3d8,[_0xc8b7('0x30'),_0xc8b7('0x76')]);_0x55b4ca[_0xc8b7('0x4d')]='UserId';_0x9f5b46=as['buildExpression'](_0x3f73e7,_0x46e5f0['type'],_0x55b4ca);_0x49e353[_0x163046](_0x9f5b46['text'],_0x9f5b46[_0xc8b7('0x67')]['start'],_0x9f5b46['value'][_0xc8b7('0x20')]);}break;case'body':_0x9f5b46=as['buildExpression']('me',null,_0x55b4ca);_0x49e353[_0x163046](_0x9f5b46[_0xc8b7('0x70')],_0x9f5b46[_0xc8b7('0x67')][_0xc8b7('0x71')],_0x9f5b46[_0xc8b7('0x67')][_0xc8b7('0x20')]);break;}}else{var _0x9f5b46=as['buildExpression'](_0x3f73e7,_0x46e5f0[_0xc8b7('0x3e')],_0x55b4ca);_0x49e353[_0x163046](_0x9f5b46['text'],_0x9f5b46['value'][_0xc8b7('0x71')],_0x9f5b46[_0xc8b7('0x67')]['end']);}}}else{var _0x5f24e5=_(_0x45691c[_0xc8b7('0x41')])['keys']()[_0xc8b7('0x32')](function(_0x348f50){return _[_0xc8b7('0x77')](_0x18e3d8,[_0xc8b7('0x30'),_0x348f50])?_0x348f50:undefined;})['compact']()['value']();if(!_[_0xc8b7('0x78')](_0x5f24e5)){_0x5f24e5['forEach'](function(_0x3cd9a4){if(_0x3cd9a4==='WhatsappAccountId'){_0x228e8d['where'](_0xc8b7('0x79'),[][_0xc8b7('0x7a')](_0x45691c[_0xc8b7('0x41')][_0x3cd9a4]));}else if(_0x3cd9a4===_0xc8b7('0x7b')){var _0x35b512=JSON[_0xc8b7('0x7c')](_0x45691c[_0xc8b7('0x41')][_0x3cd9a4])['$gte'];var _0x2b5490=JSON[_0xc8b7('0x7c')](_0x45691c[_0xc8b7('0x41')][_0x3cd9a4])[_0xc8b7('0x7d')];_0x228e8d[_0xc8b7('0x7e')](_0xc8b7('0x7f'),_0x35b512,_0x2b5490);}else{if(_0x45691c['query'][_0x3cd9a4]===_0xc8b7('0x80')){_0x228e8d[_0xc8b7('0x7e')]('i.'+_0x3cd9a4+_0xc8b7('0x81'));}else{_0x228e8d['where']('i.'+_0x3cd9a4+_0xc8b7('0x82'),_0x45691c[_0xc8b7('0x41')][_0x3cd9a4]);}}});}if(_0x45691c['query'][_0xc8b7('0x83')]){if(_0x45691c[_0xc8b7('0x41')][_0xc8b7('0x83')]==0x1){_0x228e8d[_0xc8b7('0x68')]('`unreadMessages`\x20=\x200');}else{_0x228e8d[_0xc8b7('0x68')](_0xc8b7('0x84'));}}if(_0x45691c[_0xc8b7('0x41')][_0xc8b7('0x85')]){_0x32b5e0=_[_0xc8b7('0x86')](_0x45691c[_0xc8b7('0x41')][_0xc8b7('0x85')])?_0x45691c[_0xc8b7('0x41')][_0xc8b7('0x85')]:new Array(_0x45691c[_0xc8b7('0x41')][_0xc8b7('0x85')]);_0x32b5e0[_0xc8b7('0x37')](function(_0x80643d){_0x1ec314['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x80643d+',%');});}if(_0x45691c[_0xc8b7('0x41')][_0xc8b7('0x87')]){var _0x143366=_0x45691c[_0xc8b7('0x41')][_0xc8b7('0x87')]['replace']('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(qs[_0xc8b7('0x88')](_0x143366)){_0x49e353['or'](_0xc8b7('0x89'),_0x143366+'%')['or'](_0xc8b7('0x8a'),_0x143366+'%');}else{_0x49e353['or']('MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0xc8b7('0x6d')](_0x143366))['or']('CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?',_0x143366+'%');}}}_0x228e8d[_0xc8b7('0x7e')](_0x49e353);_0x228e8d['group'](_0xc8b7('0x8b'));var _0x1d9fc6={'type':db[_0xc8b7('0x8c')]['QueryTypes'][_0xc8b7('0x8d')],'raw':!![]};var _0x98f890=_0x228e8d[_0xc8b7('0x8e')]();_0x98f890[_0xc8b7('0x4d')](_0xc8b7('0x8b'));_0x98f890[_0xc8b7('0x4d')](_0xc8b7('0x8f'),'unreadMessages');if(_0x28b134[_0xc8b7('0x90')]){_0x28b134[_0xc8b7('0x90')][_0xc8b7('0x37')](function(_0x5b2605){var _0x4acac3=_0x5b2605[0x0]==='contactName'?_0x5b2605[0x0]:'i.'+_0x5b2605[0x0];_0x228e8d[_0xc8b7('0x90')](_0x4acac3,_0x5b2605[0x1]===_0xc8b7('0x91')?![]:!![]);});}if(!_[_0xc8b7('0x78')](_0x32b5e0)){_0x228e8d['having'](_0x1ec314);_0x98f890[_0xc8b7('0x7e')]('t.id\x20IN\x20?',_0x32b5e0);}BPromise[_0xc8b7('0x92')]()[_0xc8b7('0x2d')](function(){if(!_0xc72a6){if(_0x45691c[_0xc8b7('0x41')][_0xc8b7('0x93')])return;_0x98f890[_0xc8b7('0x7e')](_0xc8b7('0x94'));_0x228e8d[_0xc8b7('0x7e')]('i.WhatsappAccountId\x20IS\x20NOT\x20NULL');return;}if(_0x45691c[_0xc8b7('0x95')][_0xc8b7('0x96')]!==_0xc8b7('0x97'))return;return _0x45691c['user'][_0xc8b7('0x98')]({'attributes':['id'],'raw':!![]})[_0xc8b7('0x2d')](function(_0x3964ef){if(_['isEmpty'](_0x3964ef)){_0x98f890[_0xc8b7('0x7e')](_0xc8b7('0x99'));_0x228e8d['where'](_0xc8b7('0x99'));}else{_0x98f890['where'](_0xc8b7('0x79'),_['map'](_0x3964ef,'id'));_0x228e8d[_0xc8b7('0x7e')]('i.WhatsappAccountId\x20IN\x20?',_['map'](_0x3964ef,'id'));}});})[_0xc8b7('0x2d')](function(){if(_0x45691c[_0xc8b7('0x95')][_0xc8b7('0x96')]===_0xc8b7('0x97')&&!_0xc72a6&&!_0x45691c['query'][_0xc8b7('0x93')])return[];return db[_0xc8b7('0x9a')][_0xc8b7('0x41')](_0x98f890[_0xc8b7('0x9b')](),_0x1d9fc6);})[_0xc8b7('0x2d')](function(_0x4c9eaf){_0x11cb85[_0xc8b7('0x25')]=_0x4c9eaf[_0xc8b7('0x47')];if(_0x11cb85['count']===0x0)return[];return db[_0xc8b7('0x9a')]['query'](_0x768ade[_0xc8b7('0x9b')](),_0x1d9fc6)[_0xc8b7('0x2d')](function(_0x5f4f10){_0x10a4ff=_[_0xc8b7('0x9c')](_0x5f4f10,'id');_0x1d9fc6=_['merge'](_0x1d9fc6,{'model':db['WhatsappInteraction'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x45691c[_0xc8b7('0x41')][_0xc8b7('0x46')]){_0x28b134[_0xc8b7('0x45')][_0xc8b7('0x37')](function(_0x4a5627){_0x228e8d[_0xc8b7('0x4d')]('i.'+_0x4a5627);});}else{_0x228e8d[_0xc8b7('0x4d')](_0xc8b7('0x8f'),'unreadMessages');_0x228e8d[_0xc8b7('0x4d')](_0xc8b7('0x9d'),'Account.key');_0x228e8d[_0xc8b7('0x4d')](_0xc8b7('0x9e'),_0xc8b7('0x9f'));_0x228e8d['field']('CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END',_0xc8b7('0xa0'));_0x228e8d[_0xc8b7('0x4d')](_0xc8b7('0xa1'));_0x228e8d[_0xc8b7('0x4d')]('c.firstName',_0xc8b7('0xa2'));_0x228e8d['field'](_0xc8b7('0xa3'),_0xc8b7('0xa4'));_0x228e8d['field'](_0xc8b7('0xa5'),_0xc8b7('0xa6'));_0x228e8d[_0xc8b7('0x4d')](_0xc8b7('0xa7'),_0xc8b7('0xa8'));_0x228e8d[_0xc8b7('0x4d')](_0xc8b7('0xa9'),_0xc8b7('0xaa'));_0x228e8d[_0xc8b7('0x4d')](_0xc8b7('0xab'),_0xc8b7('0xac'));_0x228e8d[_0xc8b7('0x4d')]('o.fullname',_0xc8b7('0xad'));_0x228e8d[_0xc8b7('0x4d')](_0xc8b7('0xae'),'Owner.internal');_0x228e8d[_0xc8b7('0x4d')]('GROUP_CONCAT(DISTINCT\x20t.id)','TagIds');}if(_0x28b134[_0xc8b7('0x26')])_0x228e8d[_0xc8b7('0x26')](_0x28b134['limit']);if(_0x28b134[_0xc8b7('0x23')])_0x228e8d['offset'](_0x28b134[_0xc8b7('0x23')]);return db['sequelize'][_0xc8b7('0x41')](_0x228e8d[_0xc8b7('0x9b')](),_0x1d9fc6);})[_0xc8b7('0x2d')](function(_0x44d89f){if(_0x44d89f['length']>0x0)_0x58b2bc[_0xc8b7('0x7e')](_0xc8b7('0xaf'),_[_0xc8b7('0x32')](_0x44d89f,'id'));return db[_0xc8b7('0x9a')][_0xc8b7('0x41')](_0x58b2bc[_0xc8b7('0x9b')](),_0x1d9fc6)['then'](function(_0x3cf9d8){var _0x2e338b=_['groupBy'](_0x3cf9d8,'WhatsappInteractionId');var _0x194ddf=[];_0x44d89f[_0xc8b7('0x37')](function(_0x3ed827){_0x194ddf[_0xc8b7('0x38')](updateWhatsappInteraction(_0x3ed827,_0x10a4ff,_0x2e338b));});return BPromise['all'](_0x194ddf);});});})['then'](function(_0x38a9f8){_0x11cb85[_0xc8b7('0xb0')]=_0x38a9f8;return _0x11cb85;})['then'](respondWithFilteredResult(_0x8e18e3,_0x28b134))[_0xc8b7('0x39')](handleError(_0x8e18e3,null));};exports[_0xc8b7('0xb1')]=function(_0x4b1f05,_0x4398a6){var _0x53e8ab={'raw':![],'where':{'id':_0x4b1f05[_0xc8b7('0xb2')]['id']}},_0xcda978={};_0xcda978[_0xc8b7('0x40')]=_[_0xc8b7('0x42')](db[_0xc8b7('0x3b')][_0xc8b7('0x3c')]);_0xcda978[_0xc8b7('0x41')]=_[_0xc8b7('0x42')](_0x4b1f05[_0xc8b7('0x41')]);_0xcda978['filters']=_[_0xc8b7('0x44')](_0xcda978[_0xc8b7('0x40')],_0xcda978[_0xc8b7('0x41')]);_0x53e8ab['attributes']=_[_0xc8b7('0x44')](_0xcda978['model'],qs['fields'](_0x4b1f05[_0xc8b7('0x41')]['fields']));_0x53e8ab[_0xc8b7('0x45')]=_0x53e8ab[_0xc8b7('0x45')][_0xc8b7('0x47')]?_0x53e8ab[_0xc8b7('0x45')]:_0xcda978[_0xc8b7('0x40')];if(_0x4b1f05[_0xc8b7('0x41')]['includeAll']){_0x53e8ab[_0xc8b7('0xb3')]=[{'all':!![]}];}_0x53e8ab=_[_0xc8b7('0xb4')]({},_0x53e8ab,_0x4b1f05[_0xc8b7('0xb5')]);return db[_0xc8b7('0x3b')][_0xc8b7('0x65')](_0x53e8ab)['then'](handleEntityNotFound(_0x4398a6,null))[_0xc8b7('0x2d')](respondWithResult(_0x4398a6,null))[_0xc8b7('0x39')](handleError(_0x4398a6,null));};exports[_0xc8b7('0xb6')]=function(_0x1b8cb0,_0x49fc0a){return db[_0xc8b7('0x3b')][_0xc8b7('0xb6')](_0x1b8cb0[_0xc8b7('0xb7')],{})[_0xc8b7('0x2d')](respondWithResult(_0x49fc0a,0xc9))['catch'](handleError(_0x49fc0a,null));};exports['update']=function(_0x42e385,_0x48b3ea){if(_0x42e385[_0xc8b7('0xb7')]['id']){delete _0x42e385[_0xc8b7('0xb7')]['id'];}return db['WhatsappInteraction'][_0xc8b7('0x65')]({'where':{'id':_0x42e385[_0xc8b7('0xb2')]['id']}})['then'](handleEntityNotFound(_0x48b3ea,null))['then'](saveUpdates(_0x42e385[_0xc8b7('0xb7')],null))['then'](respondWithResult(_0x48b3ea,null))[_0xc8b7('0x39')](handleError(_0x48b3ea,null));};exports[_0xc8b7('0xb8')]=function(_0x4954a4,_0x4e2d7b){return db[_0xc8b7('0x3b')][_0xc8b7('0x65')]({'where':{'id':_0x4954a4['params']['id']}})[_0xc8b7('0x2d')](handleEntityNotFound(_0x4e2d7b,null))[_0xc8b7('0x2d')](removeEntity(_0x4e2d7b,null))[_0xc8b7('0x39')](handleError(_0x4e2d7b,null));};exports['describe']=function(_0x168e57,_0x879a90){return db[_0xc8b7('0x3b')][_0xc8b7('0xb9')]()[_0xc8b7('0x2d')](respondWithResult(_0x879a90,null))[_0xc8b7('0x39')](handleError(_0x879a90,null));};exports[_0xc8b7('0xba')]=function(_0x53a3a1,_0x4528d7,_0x58b462){return db[_0xc8b7('0xbb')][_0xc8b7('0x65')]({'where':{'id':_0x53a3a1[_0xc8b7('0xb2')]['id']}})['then'](handleEntityNotFound(_0x4528d7,null))[_0xc8b7('0x2d')](function(_0x1d1734){if(_0x1d1734){return _0x1d1734[_0xc8b7('0xba')](_0x53a3a1[_0xc8b7('0xb7')]['ids'],_[_0xc8b7('0xbc')](_0x53a3a1[_0xc8b7('0xb7')],[_0xc8b7('0xbd'),'id'])||{});}})[_0xc8b7('0x2d')](respondWithResult(_0x4528d7,null))[_0xc8b7('0x39')](handleError(_0x4528d7,null));};exports[_0xc8b7('0xbe')]=function(_0x4af048,_0x3c6359,_0x5f3fb6){var _0x3a6491={'raw':![],'where':{}};var _0x563fa0={};var _0x177b5d={'count':0x0,'rows':[]};return db[_0xc8b7('0x3b')][_0xc8b7('0xbf')]({'where':{'id':_0x4af048['params']['id']}})[_0xc8b7('0x2d')](handleEntityNotFound(_0x3c6359,null))['then'](function(_0xe21759){if(_0xe21759){_0x563fa0[_0xc8b7('0x40')]=_['keys'](db[_0xc8b7('0xbb')][_0xc8b7('0x3c')]);_0x563fa0[_0xc8b7('0x41')]=_[_0xc8b7('0x42')](_0x4af048[_0xc8b7('0x41')]);_0x563fa0['filters']=_[_0xc8b7('0x44')](_0x563fa0['model'],_0x563fa0[_0xc8b7('0x41')]);_0x3a6491[_0xc8b7('0x45')]=_[_0xc8b7('0x44')](_0x563fa0['model'],qs[_0xc8b7('0x46')](_0x4af048['query'][_0xc8b7('0x46')]));_0x3a6491[_0xc8b7('0x45')]=_0x3a6491['attributes'][_0xc8b7('0x47')]?_0x3a6491[_0xc8b7('0x45')]:_0x563fa0[_0xc8b7('0x40')];if(!_0x4af048[_0xc8b7('0x41')][_0xc8b7('0x48')](_0xc8b7('0x49'))){_0x3a6491[_0xc8b7('0x26')]=qs['limit'](_0x4af048['query'][_0xc8b7('0x26')]);_0x3a6491[_0xc8b7('0x23')]=qs[_0xc8b7('0x23')](_0x4af048[_0xc8b7('0x41')][_0xc8b7('0x23')]);}_0x3a6491[_0xc8b7('0x90')]=qs[_0xc8b7('0x4a')](_0x4af048[_0xc8b7('0x41')][_0xc8b7('0x4a')]);_0x3a6491[_0xc8b7('0x7e')]=qs[_0xc8b7('0x43')](_[_0xc8b7('0x4b')](_0x4af048['query'],_0x563fa0[_0xc8b7('0x43')]));_0x3a6491[_0xc8b7('0x7e')][_0xc8b7('0xc0')]=_0xe21759['id'];if(_0x4af048[_0xc8b7('0x41')][_0xc8b7('0x87')]){_0x3a6491['where']=_[_0xc8b7('0xb4')](_0x3a6491[_0xc8b7('0x7e')],{'$or':_[_0xc8b7('0x32')](_0x3a6491['attributes'],function(_0x13a606){var _0x960834={};_0x960834[_0x13a606]={'$like':'%'+_0x4af048['query'][_0xc8b7('0x87')]+'%'};return _0x960834;})});}if(_0x4af048[_0xc8b7('0x41')][_0xc8b7('0xc1')]){var _0x3ce2dd=_0x4af048[_0xc8b7('0x41')][_0xc8b7('0xc1')][_0xc8b7('0x36')](',');var _0xd7ad04={};_0xd7ad04[_0x3ce2dd[0x0]]={'$gte':moment(_0x3ce2dd[0x1])[_0xc8b7('0xc2')](_0xc8b7('0xc3'))};_0x3a6491[_0xc8b7('0x7e')]=_[_0xc8b7('0xb4')](_0x3a6491[_0xc8b7('0x7e')],_0xd7ad04);}_0x3a6491=_[_0xc8b7('0xb4')]({},_0x3a6491,_0x4af048['options']);return db[_0xc8b7('0xbb')]['count']({'where':_0x3a6491['where']})[_0xc8b7('0x2d')](function(_0xdfeb52){_0x177b5d['count']=_0xdfeb52;if(_0x4af048[_0xc8b7('0x41')][_0xc8b7('0xc4')]){_0x3a6491['include']=[{'all':!![]}];}return db[_0xc8b7('0xbb')]['findAll'](_0x3a6491);})[_0xc8b7('0x2d')](function(_0x1f3000){_0x177b5d['rows']=_0x1f3000;return _0x177b5d;});}})[_0xc8b7('0x2d')](respondWithFilteredResult(_0x3c6359,_0x3a6491))[_0xc8b7('0x39')](handleError(_0x3c6359,null));};exports[_0xc8b7('0xc5')]=function(_0x1df793,_0x2cd373,_0x5e82cc){return db[_0xc8b7('0x3b')][_0xc8b7('0x65')]({'where':{'id':_0x1df793[_0xc8b7('0xb2')]['id']}})[_0xc8b7('0x2d')](handleEntityNotFound(_0x2cd373,null))[_0xc8b7('0x2d')](function(_0x3bdd9c){if(_0x3bdd9c){return _0x3bdd9c['setTags'](_0x1df793[_0xc8b7('0xb7')]['ids'],_[_0xc8b7('0xbc')](_0x1df793[_0xc8b7('0xb7')],[_0xc8b7('0xbd'),'id'])||{})[_0xc8b7('0xc6')](function(){return db[_0xc8b7('0xc7')]['findAll']({'attributes':['id','name',_0xc8b7('0x4e')],'where':{'id':_0x1df793['body']['ids']}});})['then'](function(_0x53387d){socket[_0xc8b7('0xc8')](_0xc8b7('0xc9'),{'id':Number(_0x1df793['params']['id']),'tags':_0x53387d||[]});return{'id':Number(_0x1df793[_0xc8b7('0xb2')]['id']),'tags':_0x53387d||[]};});}})[_0xc8b7('0x2d')](respondWithResult(_0x2cd373,null))[_0xc8b7('0x39')](handleError(_0x2cd373,null));};exports[_0xc8b7('0xca')]=function(_0x36ca2c,_0x483cb5,_0x42d8f6){return db[_0xc8b7('0x3b')]['find']({'where':{'id':_0x36ca2c[_0xc8b7('0xb2')]['id']}})['then'](handleEntityNotFound(_0x483cb5,null))[_0xc8b7('0x2d')](function(_0x31087c){if(_0x31087c){return _0x31087c[_0xc8b7('0xca')](_0x36ca2c[_0xc8b7('0x41')][_0xc8b7('0xbd')]);}})['then'](respondWithStatusCode(_0x483cb5,null))[_0xc8b7('0x39')](handleError(_0x483cb5,null));};exports['download']=function(_0x46d20e,_0x40bc1e){var _0x4cf5c8=moment()[_0xc8b7('0xcb')]()[_0xc8b7('0x9b')]();var _0xee21d0=path[_0xc8b7('0xcc')](config[_0xc8b7('0xcd')],_0xc8b7('0xce'),_0xc8b7('0xcf'),_0xc8b7('0xd0'));var _0x3135b1=path[_0xc8b7('0xcc')](config['root'],_0xc8b7('0xce'),_0xc8b7('0xcf'),'attachments');var _0x202216=path[_0xc8b7('0xcc')](_0xee21d0,_0x4cf5c8);var _0x10dffc=util[_0xc8b7('0xc2')](_0xc8b7('0xd1'),_0x46d20e[_0xc8b7('0xb2')]['id'],_0x4cf5c8);var _0x36366b=path['join'](_0xee21d0,_0x10dffc);var _0x3e81d8=[];_0x3e81d8[_0xc8b7('0x38')]({'model':db[_0xc8b7('0x74')],'as':'User','attributes':['id','fullname'],'raw':!![]});_0x3e81d8[_0xc8b7('0x38')]({'model':db[_0xc8b7('0xd2')],'as':_0xc8b7('0x6a'),'attributes':['id','firstName',_0xc8b7('0xd3')],'raw':!![]});if(_0x46d20e[_0xc8b7('0x41')][_0xc8b7('0xd4')]){_0x3e81d8[_0xc8b7('0x38')]({'model':db[_0xc8b7('0xd5')],'as':'Attachment','raw':!![]});}var _0x2d2fd0=[{'model':db['WhatsappMessage'],'as':'Messages','attributes':['id','body',_0xc8b7('0x7b'),_0xc8b7('0xd6'),_0xc8b7('0xd7'),_0xc8b7('0x83')],'include':_0x3e81d8}];_0x2d2fd0[_0xc8b7('0x38')]({'model':db[_0xc8b7('0xd8')],'as':'Account','attributes':['id',_0xc8b7('0x30')]});_0x2d2fd0[_0xc8b7('0x38')]({'model':db['User'],'as':_0xc8b7('0xd9'),'attributes':['id',_0xc8b7('0x33')]});return db[_0xc8b7('0x3b')][_0xc8b7('0x65')]({'where':{'id':_0x46d20e[_0xc8b7('0xb2')]['id']},'include':_0x2d2fd0})[_0xc8b7('0x2d')](handleEntityNotFound(_0x40bc1e,null))[_0xc8b7('0x2d')](function(_0x366fec){if(_0x366fec){var _0x2cd7c5=_0x366fec[_0xc8b7('0xda')]({'plain':!![]});fs[_0xc8b7('0xdb')](_0x202216);var _0x2a6d66={'channel':_0xc8b7('0xdc'),'account':_0x2cd7c5[_0xc8b7('0xdd')][_0xc8b7('0x30')],'agent':_0x2cd7c5['Owner']?_0x2cd7c5['Owner'][_0xc8b7('0x33')]:_0xc8b7('0xde'),'createdAt':moment(_0x2cd7c5['createdAt'])[_0xc8b7('0xc2')](_0xc8b7('0xc3'))[_0xc8b7('0x9b')](),'closedAt':_0x2cd7c5[_0xc8b7('0xdf')]?moment(_0x2cd7c5[_0xc8b7('0xe0')])[_0xc8b7('0xc2')]('YYYY-MM-DD\x20HH:mm:ss')[_0xc8b7('0x9b')]():'','disposition':_0x2cd7c5[_0xc8b7('0xe1')],'messages':_(_0x2cd7c5[_0xc8b7('0xe2')])[_0xc8b7('0x87')]({'secret':![]})[_0xc8b7('0x32')](function(_0x1cfb8d){if(_0x1cfb8d[_0xc8b7('0xd5')]){var _0xcf1cbe=path[_0xc8b7('0xcc')](_0x3135b1,_0x1cfb8d['Attachment'][_0xc8b7('0xe3')]);if(fs[_0xc8b7('0xe4')](_0xcf1cbe)){fs[_0xc8b7('0xe5')](_0xcf1cbe)['pipe'](fs[_0xc8b7('0xe6')](path[_0xc8b7('0xcc')](_0x202216,_0x1cfb8d[_0xc8b7('0xd5')][_0xc8b7('0xe3')])));}}return{'date':moment(_0x1cfb8d['createdAt'])[_0xc8b7('0xc2')]('YYYY-MM-DD\x20HH:mm:ss')['toString'](),'sender':_0x1cfb8d[_0xc8b7('0xd6')]===_0xc8b7('0xe7')?_0x1cfb8d['User']?_0x1cfb8d[_0xc8b7('0x74')][_0xc8b7('0x33')]:'System':_0x1cfb8d['Contact'][_0xc8b7('0xe8')]+(_0x1cfb8d[_0xc8b7('0x6a')][_0xc8b7('0xd3')]?'\x20'+_0x1cfb8d[_0xc8b7('0x6a')][_0xc8b7('0xd3')]:''),'body':_0x1cfb8d[_0xc8b7('0xd5')]?_0x1cfb8d[_0xc8b7('0xd5')]['basename']:_0x1cfb8d['body'],'direction':_0x1cfb8d['direction']===_0xc8b7('0xe7')?'A':'C','secret':_0x1cfb8d[_0xc8b7('0xd7')],'read':_0x1cfb8d[_0xc8b7('0x83')],'attachment':_0x1cfb8d[_0xc8b7('0xd5')]};})[_0xc8b7('0x67')]()};return ejs['renderFile'](path['join'](config[_0xc8b7('0xcd')],_0xc8b7('0xce'),_0xc8b7('0xe9'),_0xc8b7('0xea')),{'interaction':_0x2a6d66})[_0xc8b7('0x2d')](function(_0x57aaa7){var _0x536fe1=path['join'](_0x202216,_0xc8b7('0xeb')+_0x2cd7c5['id']+'-'+_0x4cf5c8+'.pdf');var _0x54f347={'path':_0x536fe1,'channel':_0xc8b7('0xdc'),'interactionId':_0x2cd7c5['id']};return pdf[_0xc8b7('0xec')](_0x57aaa7,_0x54f347);})[_0xc8b7('0x2d')](function(){return new BPromise(function(_0x202904,_0x4c56cb){zipdir(_0x202216,{'saveTo':_0x36366b},function(_0x31e112,_0x392610){if(_0x31e112)return _0x4c56cb(_0x31e112);return _0x202904(_0x392610);});})['then'](function(){return new BPromise(function(_0x4fd10b,_0x343c5b){rimraf(_0x202216,function(_0x3a9d3c){if(_0x3a9d3c)_0x343c5b(_0x3a9d3c);return _0x4fd10b();});});})[_0xc8b7('0x2d')](function(){return _0x40bc1e['download'](_0x36366b,_0x10dffc,function(_0x33b596){if(_0x33b596){console['log'](_0xc8b7('0xed'),_0x33b596);}else{fs[_0xc8b7('0xee')](_0x36366b);}});});});}else{return _0x40bc1e[_0xc8b7('0x1f')](0xc8);}})['catch'](handleError(_0x40bc1e,null));};
\ No newline at end of file
+var _0x8e63=['body','some','compact','isEmpty','i.WhatsappAccountId\x20IN\x20?','concat','createdAt','parse','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','filter','replace','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','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','t.id\x20IN\x20?','resolve','WhatsappAccountId','i.WhatsappAccountId\x20IS\x20NOT\x20NULL','user','role','agent','i.WhatsappAccountId\x20IS\x20NULL','sequelize','toString','keyBy','merge','WhatsappInteraction','Account.key','a.mandatoryDisposition','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','i.*','c.firstName','Contact.firstName','c.lastName','Contact.lastName','c.email','Contact.phone','Contact.mobile','c.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','ui.WhatsappInteractionId\x20IN\x20?','WhatsappInteractionId','all','rows','includeAll','options','catch','create','params','describe','WhatsappMessage','ids','omit','findOne','nolimit','pick','$gte','format','YYYY-MM-DD\x20HH:mm:ss','include','setTags','spread','findAll','emit','whatsappInteractionTags:save','removeTags','unix','join','root','server','files','tmp','attachments','CmContact','Contact','firstName','lastName','Attachment','Messages','Account','Owner','get','Whatsapp','N.A.','closed','closedAt','disposition','basename','existsSync','createReadStream','pipe','createWriteStream','out','System','secret','renderFile','views','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','download','log','unlinkSync','rimraf','request-promise','moment','bluebird','path','sox','to-csv','fs-extra','lodash','squel','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/export/pdf','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','./whatsappInteraction.socket','register','status','end','json','offset','limit','count','apply','reject','save','update','then','destroy','sendStatus','stack','name','send','Users','map','fullname','TagIds','Tags','forEach','push','index','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filters','select','field','color','tools_tags','u.id','u.fullname','ui.WhatsappInteractionId','user_has_whatsapp_interactions','left_join','users','from','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','me.WhatsappInteractionId\x20=\x20i.id','expr','search','sqlOperator','conditions','find','unreadMessages','value','having','`\x20=\x200','`\x20>\x200','operator','$substring','split','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','buildExpression','text','start','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x8e63,0x7c));var _0x38e6=function(_0x4eb5b4,_0x8fd3bb){_0x4eb5b4=_0x4eb5b4-0x0;var _0x36efd9=_0x8e63[_0x4eb5b4];return _0x36efd9;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x38e6('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x38e6('0x1'));var moment=require(_0x38e6('0x2'));var BPromise=require(_0x38e6('0x3'));var Mustache=require('mustache');var util=require('util');var path=require(_0x38e6('0x4'));var sox=require(_0x38e6('0x5'));var csv=require(_0x38e6('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x38e6('0x7'));var _=require(_0x38e6('0x8'));var squel=require(_0x38e6('0x9'));var crypto=require(_0x38e6('0xa'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x38e6('0x6'));var querystring=require(_0x38e6('0xb'));var Papa=require(_0x38e6('0xc'));var Redis=require(_0x38e6('0xd'));var authService=require(_0x38e6('0xe'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var pdf=require(_0x38e6('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x38e6('0x10'))('api');var utils=require(_0x38e6('0x11'));var config=require(_0x38e6('0x12'));var licenseUtil=require(_0x38e6('0x13'));var db=require(_0x38e6('0x14'))['db'];config[_0x38e6('0x15')]=_['defaults'](config[_0x38e6('0x15')],{'host':_0x38e6('0x16'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x38e6('0x15')]));require(_0x38e6('0x17'))[_0x38e6('0x18')](socket);function respondWithStatusCode(_0x1370bb,_0x220871){_0x220871=_0x220871||0xcc;return function(_0x46b525){if(_0x46b525){return _0x1370bb['sendStatus'](_0x220871);}return _0x1370bb[_0x38e6('0x19')](_0x220871)[_0x38e6('0x1a')]();};}function respondWithResult(_0x3299c9,_0x223169){_0x223169=_0x223169||0xc8;return function(_0x5f9d7e){if(_0x5f9d7e){return _0x3299c9['status'](_0x223169)[_0x38e6('0x1b')](_0x5f9d7e);}};}function respondWithFilteredResult(_0x58c772,_0x800418){return function(_0x3e94f9){if(_0x3e94f9){var _0x57ded4=typeof _0x800418[_0x38e6('0x1c')]==='undefined'&&typeof _0x800418[_0x38e6('0x1d')]==='undefined';var _0x18ec00=_0x3e94f9[_0x38e6('0x1e')];var _0x1781d3=_0x57ded4?0x0:_0x800418[_0x38e6('0x1c')];var _0x3f1d54=_0x57ded4?_0x3e94f9[_0x38e6('0x1e')]:_0x800418['offset']+_0x800418['limit'];var _0x4d6bf4;if(_0x3f1d54>=_0x18ec00){_0x3f1d54=_0x18ec00;_0x4d6bf4=0xc8;}else{_0x4d6bf4=0xce;}_0x58c772[_0x38e6('0x19')](_0x4d6bf4);return _0x58c772['set']('Content-Range',_0x1781d3+'-'+_0x3f1d54+'/'+_0x18ec00)[_0x38e6('0x1b')](_0x3e94f9);}return null;};}function patchUpdates(_0xa4a8b9){return function(_0x22086e){try{jsonpatch[_0x38e6('0x1f')](_0x22086e,_0xa4a8b9,!![]);}catch(_0x5f5ab2){return BPromise[_0x38e6('0x20')](_0x5f5ab2);}return _0x22086e[_0x38e6('0x21')]();};}function saveUpdates(_0x185922,_0x4af8a2){return function(_0x832025){if(_0x832025){return _0x832025[_0x38e6('0x22')](_0x185922)[_0x38e6('0x23')](function(_0x9bc0b0){return _0x9bc0b0;});}return null;};}function removeEntity(_0x106424,_0xdcf7ff){return function(_0x179145){if(_0x179145){return _0x179145[_0x38e6('0x24')]()['then'](function(){_0x106424[_0x38e6('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x23902b,_0x4d2b24){return function(_0x446ed5){if(!_0x446ed5){_0x23902b[_0x38e6('0x25')](0x194);}return _0x446ed5;};}function handleError(_0x43f05f,_0x1afc04){_0x1afc04=_0x1afc04||0x1f4;return function(_0x1d4a1b){logger['error'](_0x1d4a1b[_0x38e6('0x26')]);if(_0x1d4a1b[_0x38e6('0x27')]){delete _0x1d4a1b[_0x38e6('0x27')];}_0x43f05f[_0x38e6('0x19')](_0x1afc04)[_0x38e6('0x28')](_0x1d4a1b);};}function getInteractionUsers(_0x526569,_0x468310){return new BPromise(function(_0x192893,_0x39eafd){try{if(_0x468310[_0x526569['id']]){_0x526569[_0x38e6('0x29')]=_[_0x38e6('0x2a')](_0x468310[_0x526569['id']],function(_0x38d484){return{'id':_0x38d484['id'],'fullname':_0x38d484[_0x38e6('0x2b')]};});}}catch(_0x5a5979){_0x39eafd(_0x5a5979);}_0x192893(_0x526569);});}function getInteractionTags(_0x220c19,_0x3d231a){return new BPromise(function(_0x2655c8,_0x4add22){try{if(_0x220c19[_0x38e6('0x2c')]){_0x220c19[_0x38e6('0x2d')]=[];_0x220c19[_0x38e6('0x2c')]['split'](',')[_0x38e6('0x2e')](function(_0x248e20){_0x220c19[_0x38e6('0x2d')][_0x38e6('0x2f')](_0x3d231a[_0x248e20]);});}delete _0x220c19[_0x38e6('0x2c')];}catch(_0x27b94e){_0x4add22(_0x27b94e);}_0x2655c8(_0x220c19);});}function updateWhatsappInteraction(_0x40a596,_0x5dcbdf,_0xd4ce6c){return new BPromise(function(_0x5d58bf,_0x849b94){return getInteractionUsers(_0x40a596,_0xd4ce6c)[_0x38e6('0x23')](function(_0x596bd4){return getInteractionTags(_0x596bd4,_0x5dcbdf);})[_0x38e6('0x23')](function(_0x887b7c){_0x5d58bf(_0x887b7c);})['catch'](function(_0x769dcb){_0x849b94(_0x769dcb);});});}exports[_0x38e6('0x30')]=function(_0x35bb87,_0x14f5e9){var _0x504251={},_0x366a38={},_0x10626b={'count':0x0,'rows':[]};var _0x22ff9e=_[_0x38e6('0x2a')](db['WhatsappInteraction'][_0x38e6('0x31')],function(_0x1f06a6){return{'name':_0x1f06a6[_0x38e6('0x32')],'type':_0x1f06a6[_0x38e6('0x33')][_0x38e6('0x34')]};});_0x366a38[_0x38e6('0x35')]=_[_0x38e6('0x2a')](_0x22ff9e,'name');_0x366a38[_0x38e6('0x36')]=_[_0x38e6('0x37')](_0x35bb87['query']);_0x366a38['filters']=_[_0x38e6('0x38')](_0x366a38[_0x38e6('0x35')],_0x366a38[_0x38e6('0x36')]);_0x504251[_0x38e6('0x39')]=_[_0x38e6('0x38')](_0x366a38[_0x38e6('0x35')],qs[_0x38e6('0x3a')](_0x35bb87[_0x38e6('0x36')][_0x38e6('0x3a')]));_0x504251[_0x38e6('0x39')]=_0x504251['attributes'][_0x38e6('0x3b')]?_0x504251[_0x38e6('0x39')]:_0x366a38[_0x38e6('0x35')];if(!_0x35bb87[_0x38e6('0x36')][_0x38e6('0x3c')]('nolimit')){_0x504251[_0x38e6('0x1d')]=qs['limit'](_0x35bb87[_0x38e6('0x36')][_0x38e6('0x1d')]);_0x504251[_0x38e6('0x1c')]=qs[_0x38e6('0x1c')](_0x35bb87[_0x38e6('0x36')]['offset']);}_0x504251[_0x38e6('0x3d')]=qs[_0x38e6('0x3e')](_0x35bb87['query'][_0x38e6('0x3e')]);_0x504251[_0x38e6('0x3f')]=qs[_0x38e6('0x40')](_['pick'](_0x35bb87[_0x38e6('0x36')],_0x366a38[_0x38e6('0x40')]),_0x22ff9e);var _0x49a021=[];var _0x454d58=squel[_0x38e6('0x41')]()[_0x38e6('0x42')]('id')[_0x38e6('0x42')](_0x38e6('0x27'))['field'](_0x38e6('0x43'))['from'](_0x38e6('0x44'));var _0x206531=squel['select']()[_0x38e6('0x42')](_0x38e6('0x45'))['field'](_0x38e6('0x46'))[_0x38e6('0x42')](_0x38e6('0x47'))['from'](_0x38e6('0x48'),'ui')[_0x38e6('0x49')](_0x38e6('0x4a'),'u','u.id\x20=\x20ui.UserId');var _0x59557f=squel[_0x38e6('0x41')]()[_0x38e6('0x4b')]('whatsapp_interactions','i')[_0x38e6('0x49')](_0x38e6('0x4c'),'c',_0x38e6('0x4d'))[_0x38e6('0x49')](_0x38e6('0x4a'),'o',_0x38e6('0x4e'))[_0x38e6('0x49')]('whatsapp_accounts','a','a.id\x20=\x20i.WhatsappAccountId')[_0x38e6('0x49')]('whatsapp_messages','me',_0x38e6('0x4f'))[_0x38e6('0x49')]('whatsapp_interaction_has_tags','it','it.WhatsappInteractionId\x20=\x20i.id')[_0x38e6('0x49')](_0x38e6('0x44'),'t','t.id\x20=\x20it.TagId');var _0x175dfa=squel['expr']();var _0x59454c=[];var _0x42cd14=squel[_0x38e6('0x50')]();var _0x385de7;if(_0x35bb87[_0x38e6('0x36')][_0x38e6('0x51')]){_0x385de7=as['parseSearch'](_0x35bb87[_0x38e6('0x36')][_0x38e6('0x51')]);var _0x23779d=_0x385de7[_0x38e6('0x52')];for(var _0x15f2c1=0x0;_0x15f2c1<_0x385de7[_0x38e6('0x53')][_0x38e6('0x3b')];_0x15f2c1++){var _0x4bd79d=_0x385de7['conditions'][_0x15f2c1];var _0x487485='i';var _0x32e8dc=_[_0x38e6('0x54')](_0x22ff9e,['name',_0x4bd79d[_0x38e6('0x42')]]);if(!_0x32e8dc){switch(_0x4bd79d[_0x38e6('0x42')]){case _0x38e6('0x55'):if(_0x4bd79d[_0x38e6('0x56')]==0x1){_0x59557f[_0x38e6('0x57')]('`'+_0x4bd79d[_0x38e6('0x42')]+_0x38e6('0x58'));}else{_0x59557f[_0x38e6('0x57')]('`'+_0x4bd79d[_0x38e6('0x42')]+_0x38e6('0x59'));}break;case'Contact':if(_0x4bd79d[_0x38e6('0x5a')]===_0x38e6('0x5b')){if(_0x4bd79d[_0x38e6('0x56')][_0x38e6('0x5c')]('\x20')[_0x38e6('0x3b')]>0x1){_0x175dfa[_0x23779d](_0x38e6('0x5d'),qs[_0x38e6('0x5e')](_0x4bd79d['value']),null);}else{var _0xf86bf4='%'+_0x4bd79d[_0x38e6('0x56')]+'%';_0x175dfa[_0x23779d](_0x38e6('0x5f'),_0xf86bf4,_0xf86bf4,_0xf86bf4);}}else{_0x32e8dc=_[_0x38e6('0x54')](_0x22ff9e,['name','ContactId']);_0x4bd79d['field']='ContactId';_0x4616f4=as[_0x38e6('0x60')](_0x487485,_0x32e8dc[_0x38e6('0x33')],_0x4bd79d);_0x175dfa[_0x23779d](_0x4616f4[_0x38e6('0x61')],_0x4616f4['value'][_0x38e6('0x62')],_0x4616f4[_0x38e6('0x56')]['end']);}break;case _0x38e6('0x63'):var _0x5e7438=_0x4bd79d[_0x38e6('0x56')][_0x38e6('0x5c')](',')[_0x38e6('0x2a')](function(_0x524415){return Number(_0x524415);});_0x5e7438[_0x38e6('0x2e')](function(_0x4de283){_0x42cd14['or'](_0x38e6('0x64'),'%,'+_0x4de283+',%');});_0x59454c=_['union'](_0x59454c,_0x5e7438);break;case _0x38e6('0x65'):if(_0x4bd79d[_0x38e6('0x5a')]==='$substring'){_0x175dfa[_0x23779d](_0x38e6('0x66'),'%'+_0x4bd79d[_0x38e6('0x56')]+'%',null);}else{_0x32e8dc=_['find'](_0x22ff9e,['name',_0x38e6('0x67')]);_0x4bd79d[_0x38e6('0x42')]=_0x38e6('0x67');_0x4616f4=as[_0x38e6('0x60')](_0x487485,_0x32e8dc[_0x38e6('0x33')],_0x4bd79d);_0x175dfa[_0x23779d](_0x4616f4[_0x38e6('0x61')],_0x4616f4[_0x38e6('0x56')]['start'],_0x4616f4[_0x38e6('0x56')][_0x38e6('0x1a')]);}break;case _0x38e6('0x68'):_0x4616f4=as[_0x38e6('0x60')]('me',null,_0x4bd79d);_0x175dfa[_0x23779d](_0x4616f4['text'],_0x4616f4[_0x38e6('0x56')][_0x38e6('0x62')],_0x4616f4[_0x38e6('0x56')][_0x38e6('0x1a')]);break;}}else{var _0x4616f4=as[_0x38e6('0x60')](_0x487485,_0x32e8dc[_0x38e6('0x33')],_0x4bd79d);_0x175dfa[_0x23779d](_0x4616f4['text'],_0x4616f4[_0x38e6('0x56')][_0x38e6('0x62')],_0x4616f4['value'][_0x38e6('0x1a')]);}}}else{var _0x26d3e5=_(_0x35bb87['query'])[_0x38e6('0x37')]()['map'](function(_0x21c25b){return _[_0x38e6('0x69')](_0x22ff9e,['name',_0x21c25b])?_0x21c25b:undefined;})[_0x38e6('0x6a')]()['value']();if(!_[_0x38e6('0x6b')](_0x26d3e5)){_0x26d3e5[_0x38e6('0x2e')](function(_0x1eac84){if(_0x1eac84==='WhatsappAccountId'){_0x59557f['where'](_0x38e6('0x6c'),[][_0x38e6('0x6d')](_0x35bb87[_0x38e6('0x36')][_0x1eac84]));}else if(_0x1eac84===_0x38e6('0x6e')){var _0x2ad037=JSON[_0x38e6('0x6f')](_0x35bb87['query'][_0x1eac84])['$gte'];var _0x4550fb=JSON[_0x38e6('0x6f')](_0x35bb87[_0x38e6('0x36')][_0x1eac84])[_0x38e6('0x70')];_0x59557f[_0x38e6('0x3f')](_0x38e6('0x71'),_0x2ad037,_0x4550fb);}else{if(_0x35bb87[_0x38e6('0x36')][_0x1eac84]===_0x38e6('0x72')){_0x59557f[_0x38e6('0x3f')]('i.'+_0x1eac84+_0x38e6('0x73'));}else{_0x59557f[_0x38e6('0x3f')]('i.'+_0x1eac84+_0x38e6('0x74'),_0x35bb87['query'][_0x1eac84]);}}});}if(_0x35bb87[_0x38e6('0x36')][_0x38e6('0x75')]){if(_0x35bb87[_0x38e6('0x36')][_0x38e6('0x75')]==0x1){_0x59557f['having'](_0x38e6('0x76'));}else{_0x59557f[_0x38e6('0x57')](_0x38e6('0x77'));}}if(_0x35bb87[_0x38e6('0x36')][_0x38e6('0x78')]){_0x59454c=_['isArray'](_0x35bb87[_0x38e6('0x36')][_0x38e6('0x78')])?_0x35bb87[_0x38e6('0x36')][_0x38e6('0x78')]:new Array(_0x35bb87[_0x38e6('0x36')]['tag']);_0x59454c[_0x38e6('0x2e')](function(_0xbc88b6){_0x42cd14['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0xbc88b6+',%');});}if(_0x35bb87['query'][_0x38e6('0x79')]){var _0x1a66a3=_0x35bb87[_0x38e6('0x36')][_0x38e6('0x79')]['replace']('\x5c','\x5c\x5c')[_0x38e6('0x7a')](/'/g,'\x27\x27');if(qs['isNumeric'](_0x1a66a3)){_0x175dfa['or'](_0x38e6('0x7b'),_0x1a66a3+'%')['or'](_0x38e6('0x7c'),_0x1a66a3+'%');}else{_0x175dfa['or'](_0x38e6('0x7d'),qs[_0x38e6('0x5e')](_0x1a66a3))['or'](_0x38e6('0x7e'),_0x1a66a3+'%');}}}_0x59557f['where'](_0x175dfa);_0x59557f[_0x38e6('0x7f')](_0x38e6('0x80'));var _0x3f5470={'type':db[_0x38e6('0x81')][_0x38e6('0x82')][_0x38e6('0x83')],'raw':!![]};var _0xc130e7=_0x59557f[_0x38e6('0x84')]();_0xc130e7[_0x38e6('0x42')](_0x38e6('0x80'));_0xc130e7[_0x38e6('0x42')](_0x38e6('0x85'),_0x38e6('0x55'));if(_0x504251['order']){_0x504251[_0x38e6('0x3d')][_0x38e6('0x2e')](function(_0x525073){var _0x4a617a=_0x525073[0x0]===_0x38e6('0x86')?_0x525073[0x0]:'i.'+_0x525073[0x0];_0x59557f['order'](_0x4a617a,_0x525073[0x1]==='DESC'?![]:!![]);});}if(!_[_0x38e6('0x6b')](_0x59454c)){_0x59557f[_0x38e6('0x57')](_0x42cd14);_0xc130e7['where'](_0x38e6('0x87'),_0x59454c);}BPromise[_0x38e6('0x88')]()[_0x38e6('0x23')](function(){if(!_0x385de7){if(_0x35bb87[_0x38e6('0x36')][_0x38e6('0x89')])return;_0xc130e7[_0x38e6('0x3f')](_0x38e6('0x8a'));_0x59557f[_0x38e6('0x3f')](_0x38e6('0x8a'));return;}if(_0x35bb87[_0x38e6('0x8b')][_0x38e6('0x8c')]!==_0x38e6('0x8d'))return;return _0x35bb87['user']['getWhatsappAccounts']({'attributes':['id'],'raw':!![]})[_0x38e6('0x23')](function(_0x2f5a81){if(_[_0x38e6('0x6b')](_0x2f5a81)){_0xc130e7[_0x38e6('0x3f')](_0x38e6('0x8e'));_0x59557f[_0x38e6('0x3f')](_0x38e6('0x8e'));}else{_0xc130e7[_0x38e6('0x3f')](_0x38e6('0x6c'),_[_0x38e6('0x2a')](_0x2f5a81,'id'));_0x59557f['where'](_0x38e6('0x6c'),_[_0x38e6('0x2a')](_0x2f5a81,'id'));}});})[_0x38e6('0x23')](function(){if(_0x35bb87['user'][_0x38e6('0x8c')]===_0x38e6('0x8d')&&!_0x385de7&&!_0x35bb87[_0x38e6('0x36')]['WhatsappAccountId'])return[];return db[_0x38e6('0x8f')][_0x38e6('0x36')](_0xc130e7[_0x38e6('0x90')](),_0x3f5470);})[_0x38e6('0x23')](function(_0x5367af){_0x10626b[_0x38e6('0x1e')]=_0x5367af[_0x38e6('0x3b')];if(_0x10626b[_0x38e6('0x1e')]===0x0)return[];return db['sequelize'][_0x38e6('0x36')](_0x454d58['toString'](),_0x3f5470)[_0x38e6('0x23')](function(_0x15b5f2){_0x49a021=_[_0x38e6('0x91')](_0x15b5f2,'id');_0x3f5470=_[_0x38e6('0x92')](_0x3f5470,{'model':db[_0x38e6('0x93')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x35bb87[_0x38e6('0x36')][_0x38e6('0x3a')]){_0x504251[_0x38e6('0x39')][_0x38e6('0x2e')](function(_0x4c13a0){_0x59557f[_0x38e6('0x42')]('i.'+_0x4c13a0);});}else{_0x59557f[_0x38e6('0x42')](_0x38e6('0x85'),_0x38e6('0x55'));_0x59557f['field']('a.key',_0x38e6('0x94'));_0x59557f['field'](_0x38e6('0x95'),'Account.mandatoryDisposition');_0x59557f[_0x38e6('0x42')](_0x38e6('0x96'),_0x38e6('0x86'));_0x59557f[_0x38e6('0x42')](_0x38e6('0x97'));_0x59557f[_0x38e6('0x42')](_0x38e6('0x98'),_0x38e6('0x99'));_0x59557f[_0x38e6('0x42')](_0x38e6('0x9a'),_0x38e6('0x9b'));_0x59557f[_0x38e6('0x42')](_0x38e6('0x9c'),'Contact.email');_0x59557f[_0x38e6('0x42')]('c.phone',_0x38e6('0x9d'));_0x59557f[_0x38e6('0x42')]('c.mobile',_0x38e6('0x9e'));_0x59557f[_0x38e6('0x42')](_0x38e6('0x9f'),'Contact.fax');_0x59557f[_0x38e6('0x42')](_0x38e6('0xa0'),_0x38e6('0xa1'));_0x59557f[_0x38e6('0x42')](_0x38e6('0xa2'),_0x38e6('0xa3'));_0x59557f['field']('GROUP_CONCAT(DISTINCT\x20t.id)','TagIds');}if(_0x504251[_0x38e6('0x1d')])_0x59557f[_0x38e6('0x1d')](_0x504251[_0x38e6('0x1d')]);if(_0x504251[_0x38e6('0x1c')])_0x59557f[_0x38e6('0x1c')](_0x504251[_0x38e6('0x1c')]);return db['sequelize'][_0x38e6('0x36')](_0x59557f[_0x38e6('0x90')](),_0x3f5470);})[_0x38e6('0x23')](function(_0x2fdbec){if(_0x2fdbec[_0x38e6('0x3b')]>0x0)_0x206531['where'](_0x38e6('0xa4'),_[_0x38e6('0x2a')](_0x2fdbec,'id'));return db[_0x38e6('0x8f')][_0x38e6('0x36')](_0x206531[_0x38e6('0x90')](),_0x3f5470)['then'](function(_0x5c8235){var _0xcecef1=_['groupBy'](_0x5c8235,_0x38e6('0xa5'));var _0x57de21=[];_0x2fdbec['forEach'](function(_0x596e28){_0x57de21[_0x38e6('0x2f')](updateWhatsappInteraction(_0x596e28,_0x49a021,_0xcecef1));});return BPromise[_0x38e6('0xa6')](_0x57de21);});});})[_0x38e6('0x23')](function(_0x12c23f){_0x10626b[_0x38e6('0xa7')]=_0x12c23f;return _0x10626b;})[_0x38e6('0x23')](respondWithFilteredResult(_0x14f5e9,_0x504251))['catch'](handleError(_0x14f5e9,null));};exports['show']=function(_0x17ca5f,_0x3f3d3b){var _0x39b2e0={'raw':![],'where':{'id':_0x17ca5f['params']['id']}},_0x53406b={};_0x53406b[_0x38e6('0x35')]=_[_0x38e6('0x37')](db[_0x38e6('0x93')][_0x38e6('0x31')]);_0x53406b['query']=_[_0x38e6('0x37')](_0x17ca5f[_0x38e6('0x36')]);_0x53406b['filters']=_['intersection'](_0x53406b[_0x38e6('0x35')],_0x53406b[_0x38e6('0x36')]);_0x39b2e0[_0x38e6('0x39')]=_[_0x38e6('0x38')](_0x53406b['model'],qs[_0x38e6('0x3a')](_0x17ca5f[_0x38e6('0x36')]['fields']));_0x39b2e0['attributes']=_0x39b2e0['attributes'][_0x38e6('0x3b')]?_0x39b2e0[_0x38e6('0x39')]:_0x53406b['model'];if(_0x17ca5f['query'][_0x38e6('0xa8')]){_0x39b2e0['include']=[{'all':!![]}];}_0x39b2e0=_['merge']({},_0x39b2e0,_0x17ca5f[_0x38e6('0xa9')]);return db[_0x38e6('0x93')]['find'](_0x39b2e0)[_0x38e6('0x23')](handleEntityNotFound(_0x3f3d3b,null))[_0x38e6('0x23')](respondWithResult(_0x3f3d3b,null))[_0x38e6('0xaa')](handleError(_0x3f3d3b,null));};exports[_0x38e6('0xab')]=function(_0x1c66e0,_0x209134){return db[_0x38e6('0x93')][_0x38e6('0xab')](_0x1c66e0['body'],{})['then'](respondWithResult(_0x209134,0xc9))['catch'](handleError(_0x209134,null));};exports[_0x38e6('0x22')]=function(_0x3d5a5b,_0x3916af){if(_0x3d5a5b[_0x38e6('0x68')]['id']){delete _0x3d5a5b[_0x38e6('0x68')]['id'];}return db['WhatsappInteraction'][_0x38e6('0x54')]({'where':{'id':_0x3d5a5b['params']['id']}})[_0x38e6('0x23')](handleEntityNotFound(_0x3916af,null))[_0x38e6('0x23')](saveUpdates(_0x3d5a5b['body'],null))['then'](respondWithResult(_0x3916af,null))[_0x38e6('0xaa')](handleError(_0x3916af,null));};exports[_0x38e6('0x24')]=function(_0xb4f3da,_0x45021c){return db[_0x38e6('0x93')]['find']({'where':{'id':_0xb4f3da[_0x38e6('0xac')]['id']}})[_0x38e6('0x23')](handleEntityNotFound(_0x45021c,null))[_0x38e6('0x23')](removeEntity(_0x45021c,null))[_0x38e6('0xaa')](handleError(_0x45021c,null));};exports[_0x38e6('0xad')]=function(_0x2d44b0,_0x4adae5){return db['WhatsappInteraction']['describe']()[_0x38e6('0x23')](respondWithResult(_0x4adae5,null))[_0x38e6('0xaa')](handleError(_0x4adae5,null));};exports['addMessage']=function(_0x2ec2cb,_0x21fd39,_0x1fd250){return db[_0x38e6('0xae')][_0x38e6('0x54')]({'where':{'id':_0x2ec2cb[_0x38e6('0xac')]['id']}})[_0x38e6('0x23')](handleEntityNotFound(_0x21fd39,null))[_0x38e6('0x23')](function(_0x4e0968){if(_0x4e0968){return _0x4e0968['addMessage'](_0x2ec2cb['body'][_0x38e6('0xaf')],_[_0x38e6('0xb0')](_0x2ec2cb[_0x38e6('0x68')],['ids','id'])||{});}})[_0x38e6('0x23')](respondWithResult(_0x21fd39,null))[_0x38e6('0xaa')](handleError(_0x21fd39,null));};exports['getMessages']=function(_0x4b0cf7,_0x5f5d2d,_0x5a43d6){var _0x4c9a5e={'raw':![],'where':{}};var _0xcfd635={};var _0x12b1ca={'count':0x0,'rows':[]};return db['WhatsappInteraction'][_0x38e6('0xb1')]({'where':{'id':_0x4b0cf7[_0x38e6('0xac')]['id']}})['then'](handleEntityNotFound(_0x5f5d2d,null))['then'](function(_0x4f4053){if(_0x4f4053){_0xcfd635[_0x38e6('0x35')]=_[_0x38e6('0x37')](db['WhatsappMessage']['rawAttributes']);_0xcfd635['query']=_[_0x38e6('0x37')](_0x4b0cf7['query']);_0xcfd635[_0x38e6('0x40')]=_['intersection'](_0xcfd635[_0x38e6('0x35')],_0xcfd635[_0x38e6('0x36')]);_0x4c9a5e[_0x38e6('0x39')]=_[_0x38e6('0x38')](_0xcfd635[_0x38e6('0x35')],qs[_0x38e6('0x3a')](_0x4b0cf7[_0x38e6('0x36')]['fields']));_0x4c9a5e[_0x38e6('0x39')]=_0x4c9a5e[_0x38e6('0x39')][_0x38e6('0x3b')]?_0x4c9a5e['attributes']:_0xcfd635['model'];if(!_0x4b0cf7[_0x38e6('0x36')]['hasOwnProperty'](_0x38e6('0xb2'))){_0x4c9a5e['limit']=qs['limit'](_0x4b0cf7[_0x38e6('0x36')][_0x38e6('0x1d')]);_0x4c9a5e['offset']=qs[_0x38e6('0x1c')](_0x4b0cf7[_0x38e6('0x36')]['offset']);}_0x4c9a5e['order']=qs[_0x38e6('0x3e')](_0x4b0cf7[_0x38e6('0x36')][_0x38e6('0x3e')]);_0x4c9a5e[_0x38e6('0x3f')]=qs[_0x38e6('0x40')](_[_0x38e6('0xb3')](_0x4b0cf7[_0x38e6('0x36')],_0xcfd635['filters']));_0x4c9a5e[_0x38e6('0x3f')]['WhatsappInteractionId']=_0x4f4053['id'];if(_0x4b0cf7[_0x38e6('0x36')]['filter']){_0x4c9a5e[_0x38e6('0x3f')]=_[_0x38e6('0x92')](_0x4c9a5e[_0x38e6('0x3f')],{'$or':_[_0x38e6('0x2a')](_0x4c9a5e['attributes'],function(_0xd1fdd0){var _0x2e5ff1={};_0x2e5ff1[_0xd1fdd0]={'$like':'%'+_0x4b0cf7[_0x38e6('0x36')][_0x38e6('0x79')]+'%'};return _0x2e5ff1;})});}if(_0x4b0cf7[_0x38e6('0x36')][_0x38e6('0xb4')]){var _0x59bdd0=_0x4b0cf7[_0x38e6('0x36')][_0x38e6('0xb4')][_0x38e6('0x5c')](',');var _0xc22d6c={};_0xc22d6c[_0x59bdd0[0x0]]={'$gte':moment(_0x59bdd0[0x1])[_0x38e6('0xb5')](_0x38e6('0xb6'))};_0x4c9a5e[_0x38e6('0x3f')]=_[_0x38e6('0x92')](_0x4c9a5e[_0x38e6('0x3f')],_0xc22d6c);}_0x4c9a5e=_[_0x38e6('0x92')]({},_0x4c9a5e,_0x4b0cf7[_0x38e6('0xa9')]);return db[_0x38e6('0xae')]['count']({'where':_0x4c9a5e[_0x38e6('0x3f')]})['then'](function(_0x418700){_0x12b1ca['count']=_0x418700;if(_0x4b0cf7[_0x38e6('0x36')][_0x38e6('0xa8')]){_0x4c9a5e[_0x38e6('0xb7')]=[{'all':!![]}];}return db[_0x38e6('0xae')]['findAll'](_0x4c9a5e);})[_0x38e6('0x23')](function(_0x2298fb){_0x12b1ca[_0x38e6('0xa7')]=_0x2298fb;return _0x12b1ca;});}})[_0x38e6('0x23')](respondWithFilteredResult(_0x5f5d2d,_0x4c9a5e))[_0x38e6('0xaa')](handleError(_0x5f5d2d,null));};exports['addTags']=function(_0x32e0eb,_0x539c28,_0x2dd42a){return db['WhatsappInteraction'][_0x38e6('0x54')]({'where':{'id':_0x32e0eb[_0x38e6('0xac')]['id']}})[_0x38e6('0x23')](handleEntityNotFound(_0x539c28,null))[_0x38e6('0x23')](function(_0x375f83){if(_0x375f83){return _0x375f83[_0x38e6('0xb8')](_0x32e0eb[_0x38e6('0x68')][_0x38e6('0xaf')],_[_0x38e6('0xb0')](_0x32e0eb['body'],[_0x38e6('0xaf'),'id'])||{})[_0x38e6('0xb9')](function(){return db[_0x38e6('0x63')][_0x38e6('0xba')]({'attributes':['id',_0x38e6('0x27'),_0x38e6('0x43')],'where':{'id':_0x32e0eb[_0x38e6('0x68')][_0x38e6('0xaf')]}});})[_0x38e6('0x23')](function(_0x3c5485){socket[_0x38e6('0xbb')](_0x38e6('0xbc'),{'id':Number(_0x32e0eb[_0x38e6('0xac')]['id']),'tags':_0x3c5485||[]});return{'id':Number(_0x32e0eb[_0x38e6('0xac')]['id']),'tags':_0x3c5485||[]};});}})[_0x38e6('0x23')](respondWithResult(_0x539c28,null))[_0x38e6('0xaa')](handleError(_0x539c28,null));};exports[_0x38e6('0xbd')]=function(_0x1ab844,_0x436d12,_0x5de1ae){return db[_0x38e6('0x93')][_0x38e6('0x54')]({'where':{'id':_0x1ab844[_0x38e6('0xac')]['id']}})[_0x38e6('0x23')](handleEntityNotFound(_0x436d12,null))['then'](function(_0x51dd57){if(_0x51dd57){return _0x51dd57[_0x38e6('0xbd')](_0x1ab844[_0x38e6('0x36')][_0x38e6('0xaf')]);}})[_0x38e6('0x23')](respondWithStatusCode(_0x436d12,null))[_0x38e6('0xaa')](handleError(_0x436d12,null));};exports['download']=function(_0x329816,_0x5ba3ea){var _0x11714c=moment()[_0x38e6('0xbe')]()['toString']();var _0xca05af=path[_0x38e6('0xbf')](config[_0x38e6('0xc0')],_0x38e6('0xc1'),_0x38e6('0xc2'),_0x38e6('0xc3'));var _0xb2ecbb=path[_0x38e6('0xbf')](config[_0x38e6('0xc0')],_0x38e6('0xc1'),_0x38e6('0xc2'),_0x38e6('0xc4'));var _0x37b242=path[_0x38e6('0xbf')](_0xca05af,_0x11714c);var _0x2db7fd=util[_0x38e6('0xb5')]('transcript-%d-%s.zip',_0x329816[_0x38e6('0xac')]['id'],_0x11714c);var _0x4cc3cc=path['join'](_0xca05af,_0x2db7fd);var _0x587ca7=[];_0x587ca7[_0x38e6('0x2f')]({'model':db['User'],'as':_0x38e6('0x65'),'attributes':['id',_0x38e6('0x2b')],'raw':!![]});_0x587ca7[_0x38e6('0x2f')]({'model':db[_0x38e6('0xc5')],'as':_0x38e6('0xc6'),'attributes':['id',_0x38e6('0xc7'),_0x38e6('0xc8')],'raw':!![]});if(_0x329816[_0x38e6('0x36')][_0x38e6('0xc4')]){_0x587ca7['push']({'model':db[_0x38e6('0xc9')],'as':'Attachment','raw':!![]});}var _0x4753cc=[{'model':db[_0x38e6('0xae')],'as':_0x38e6('0xca'),'attributes':['id',_0x38e6('0x68'),_0x38e6('0x6e'),'direction','secret',_0x38e6('0x75')],'include':_0x587ca7}];_0x4753cc['push']({'model':db['WhatsappAccount'],'as':_0x38e6('0xcb'),'attributes':['id','name']});_0x4753cc['push']({'model':db[_0x38e6('0x65')],'as':_0x38e6('0xcc'),'attributes':['id',_0x38e6('0x2b')]});return db['WhatsappInteraction'][_0x38e6('0x54')]({'where':{'id':_0x329816['params']['id']},'include':_0x4753cc})['then'](handleEntityNotFound(_0x5ba3ea,null))[_0x38e6('0x23')](function(_0x5ed14a){if(_0x5ed14a){var _0xf09ab3=_0x5ed14a[_0x38e6('0xcd')]({'plain':!![]});fs['mkdirSync'](_0x37b242);var _0x33fc0e={'channel':_0x38e6('0xce'),'account':_0xf09ab3[_0x38e6('0xcb')][_0x38e6('0x27')],'agent':_0xf09ab3['Owner']?_0xf09ab3[_0x38e6('0xcc')][_0x38e6('0x2b')]:_0x38e6('0xcf'),'createdAt':moment(_0xf09ab3[_0x38e6('0x6e')])[_0x38e6('0xb5')](_0x38e6('0xb6'))[_0x38e6('0x90')](),'closedAt':_0xf09ab3[_0x38e6('0xd0')]?moment(_0xf09ab3[_0x38e6('0xd1')])[_0x38e6('0xb5')](_0x38e6('0xb6'))['toString']():'','disposition':_0xf09ab3[_0x38e6('0xd2')],'messages':_(_0xf09ab3[_0x38e6('0xca')])[_0x38e6('0x79')]({'secret':![]})['map'](function(_0x138d21){if(_0x138d21[_0x38e6('0xc9')]){var _0x21186d=path['join'](_0xb2ecbb,_0x138d21['Attachment'][_0x38e6('0xd3')]);if(fs[_0x38e6('0xd4')](_0x21186d)){fs[_0x38e6('0xd5')](_0x21186d)[_0x38e6('0xd6')](fs[_0x38e6('0xd7')](path['join'](_0x37b242,_0x138d21[_0x38e6('0xc9')][_0x38e6('0xd3')])));}}return{'date':moment(_0x138d21[_0x38e6('0x6e')])[_0x38e6('0xb5')]('YYYY-MM-DD\x20HH:mm:ss')[_0x38e6('0x90')](),'sender':_0x138d21['direction']===_0x38e6('0xd8')?_0x138d21[_0x38e6('0x65')]?_0x138d21[_0x38e6('0x65')][_0x38e6('0x2b')]:_0x38e6('0xd9'):_0x138d21[_0x38e6('0xc6')][_0x38e6('0xc7')]+(_0x138d21[_0x38e6('0xc6')][_0x38e6('0xc8')]?'\x20'+_0x138d21[_0x38e6('0xc6')][_0x38e6('0xc8')]:''),'body':_0x138d21[_0x38e6('0xc9')]?_0x138d21[_0x38e6('0xc9')]['basename']:_0x138d21[_0x38e6('0x68')],'direction':_0x138d21['direction']===_0x38e6('0xd8')?'A':'C','secret':_0x138d21[_0x38e6('0xda')],'read':_0x138d21['read'],'attachment':_0x138d21[_0x38e6('0xc9')]};})['value']()};return ejs[_0x38e6('0xdb')](path[_0x38e6('0xbf')](config[_0x38e6('0xc0')],_0x38e6('0xc1'),_0x38e6('0xdc'),_0x38e6('0xdd')),{'interaction':_0x33fc0e})[_0x38e6('0x23')](function(_0x3aa5a2){var _0x5a760d=path[_0x38e6('0xbf')](_0x37b242,_0x38e6('0xde')+_0xf09ab3['id']+'-'+_0x11714c+_0x38e6('0xdf'));var _0x36452d={'path':_0x5a760d,'channel':_0x38e6('0xce'),'interactionId':_0xf09ab3['id']};return pdf[_0x38e6('0xe0')](_0x3aa5a2,_0x36452d);})[_0x38e6('0x23')](function(){return new BPromise(function(_0xcaeeb9,_0x53185c){zipdir(_0x37b242,{'saveTo':_0x4cc3cc},function(_0x5018e2,_0x29a992){if(_0x5018e2)return _0x53185c(_0x5018e2);return _0xcaeeb9(_0x29a992);});})[_0x38e6('0x23')](function(){return new BPromise(function(_0x28b1c2,_0x52fcc5){rimraf(_0x37b242,function(_0x2eb6cf){if(_0x2eb6cf)_0x52fcc5(_0x2eb6cf);return _0x28b1c2();});});})['then'](function(){return _0x5ba3ea[_0x38e6('0xe1')](_0x4cc3cc,_0x2db7fd,function(_0x392345){if(_0x392345){console[_0x38e6('0xe2')]('err',_0x392345);}else{fs[_0x38e6('0xe3')](_0x4cc3cc);}});});});}else{return _0x5ba3ea['sendStatus'](0xc8);}})[_0x38e6('0xaa')](handleError(_0x5ba3ea,null));};
\ No newline at end of file
index 2cd76d4..b147e39 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd9dc=['WhatsappMessage','setMaxListeners','save','remove','then','setDataValue','Users','map','findAll','unreadMessages','length','emit','hasOwnProperty','exports','../../mysqldb','WhatsappInteraction'];(function(_0x4b2b03,_0xbf34ee){var _0x1bf0ed=function(_0x562785){while(--_0x562785){_0x4b2b03['push'](_0x4b2b03['shift']());}};_0x1bf0ed(++_0xbf34ee);}(_0xd9dc,0x1be));var _0xcd9d=function(_0x22eb18,_0x3f3f86){_0x22eb18=_0x22eb18-0x0;var _0x2edd39=_0xd9dc[_0x22eb18];return _0x2edd39;};'use strict';var EventEmitter=require('events');var WhatsappInteraction=require(_0xcd9d('0x0'))['db'][_0xcd9d('0x1')];var WhatsappMessage=require('../../mysqldb')['db'][_0xcd9d('0x2')];var WhatsappInteractionEvents=new EventEmitter();WhatsappInteractionEvents[_0xcd9d('0x3')](0x0);var events={'afterCreate':_0xcd9d('0x4'),'afterUpdate':'update','afterDestroy':_0xcd9d('0x5')};function emitEvent(_0x12aae1){return function(_0x2c0be0,_0x15c0e2,_0x8cc2e4){_0x2c0be0['getUsers']({'attributes':['id'],'raw':!![]})[_0xcd9d('0x6')](function(_0x425858){_0x2c0be0[_0xcd9d('0x7')](_0xcd9d('0x8'),_0x425858[_0xcd9d('0x9')](function(_0x549558){return{'id':_0x549558['id']};}));return WhatsappMessage[_0xcd9d('0xa')]({'where':{'WhatsappInteractionId':_0x2c0be0['id'],'direction':'in','read':![]},'raw':!![]});})[_0xcd9d('0x6')](function(_0x32dce7){_0x2c0be0[_0xcd9d('0x7')](_0xcd9d('0xb'),_0x32dce7[_0xcd9d('0xc')]);WhatsappInteractionEvents[_0xcd9d('0xd')](_0x12aae1+':'+_0x2c0be0['id'],_0x2c0be0);WhatsappInteractionEvents[_0xcd9d('0xd')](_0x12aae1,_0x2c0be0);_0x8cc2e4(null);})['catch'](_0x8cc2e4(null));};}for(var e in events){if(events[_0xcd9d('0xe')](e)){var event=events[e];WhatsappInteraction['hook'](e,emitEvent(event));}}module[_0xcd9d('0xf')]=WhatsappInteractionEvents;
\ No newline at end of file
+var _0x636f=['exports','WhatsappInteraction','../../mysqldb','WhatsappMessage','setMaxListeners','save','remove','then','setDataValue','Users','map','findAll','length','emit','catch','hasOwnProperty','hook'];(function(_0xd274b9,_0xc75fa9){var _0x2d87e8=function(_0x19cb33){while(--_0x19cb33){_0xd274b9['push'](_0xd274b9['shift']());}};_0x2d87e8(++_0xc75fa9);}(_0x636f,0x188));var _0xf636=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x636f[_0x501510];return _0x1e6ee5;};'use strict';var EventEmitter=require('events');var WhatsappInteraction=require('../../mysqldb')['db'][_0xf636('0x0')];var WhatsappMessage=require(_0xf636('0x1'))['db'][_0xf636('0x2')];var WhatsappInteractionEvents=new EventEmitter();WhatsappInteractionEvents[_0xf636('0x3')](0x0);var events={'afterCreate':_0xf636('0x4'),'afterUpdate':'update','afterDestroy':_0xf636('0x5')};function emitEvent(_0x1479ae){return function(_0x1291af,_0x16d1f6,_0x39c5f1){_0x1291af['getUsers']({'attributes':['id'],'raw':!![]})[_0xf636('0x6')](function(_0x46a395){_0x1291af[_0xf636('0x7')](_0xf636('0x8'),_0x46a395[_0xf636('0x9')](function(_0x1b4f04){return{'id':_0x1b4f04['id']};}));return WhatsappMessage[_0xf636('0xa')]({'where':{'WhatsappInteractionId':_0x1291af['id'],'direction':'in','read':![]},'raw':!![]});})[_0xf636('0x6')](function(_0xf9e996){_0x1291af[_0xf636('0x7')]('unreadMessages',_0xf9e996[_0xf636('0xb')]);WhatsappInteractionEvents[_0xf636('0xc')](_0x1479ae+':'+_0x1291af['id'],_0x1291af);WhatsappInteractionEvents['emit'](_0x1479ae,_0x1291af);_0x39c5f1(null);})[_0xf636('0xd')](_0x39c5f1(null));};}for(var e in events){if(events[_0xf636('0xe')](e)){var event=events[e];WhatsappInteraction[_0xf636('0xf')](e,emitEvent(event));}}module[_0xf636('0x10')]=WhatsappInteractionEvents;
\ No newline at end of file
index f3d7a01..2d25fb4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b67=['lodash','util','api','moment','rimraf','./whatsappInteraction.attributes','define','WhatsappInteraction','changed','closed','format','YYYY-MM-DD\x20HH:mm:ss'];(function(_0x2b8f4c,_0x2fea87){var _0x9cd058=function(_0x253a92){while(--_0x253a92){_0x2b8f4c['push'](_0x2b8f4c['shift']());}};_0x9cd058(++_0x2fea87);}(_0x1b67,0xcc));var _0x71b6=function(_0x26e4f2,_0x3bc08c){_0x26e4f2=_0x26e4f2-0x0;var _0x4319e2=_0x1b67[_0x26e4f2];return _0x4319e2;};'use strict';var _=require(_0x71b6('0x0'));var util=require(_0x71b6('0x1'));var logger=require('../../config/logger')(_0x71b6('0x2'));var moment=require(_0x71b6('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x71b6('0x4'));var config=require('../../config/environment');var attributes=require(_0x71b6('0x5'));module['exports']=function(_0x543919,_0x7ab915){return _0x543919[_0x71b6('0x6')](_0x71b6('0x7'),attributes,{'tableName':'whatsapp_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x195cea,_0x173dc0,_0x53e12f){if(_0x195cea[_0x71b6('0x8')](_0x71b6('0x9'))){_0x195cea['closedAt']=moment()[_0x71b6('0xa')](_0x71b6('0xb'));}_0x53e12f(null,_0x195cea);}}});};
\ No newline at end of file
+var _0xaaba=['changed','closed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','lodash','api','bluebird','request-promise','../../config/environment','./whatsappInteraction.attributes','define','WhatsappInteraction','whatsapp_interactions'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0xaaba,0x10f));var _0xaaab=function(_0x3436f6,_0xc22b38){_0x3436f6=_0x3436f6-0x0;var _0x346a25=_0xaaba[_0x3436f6];return _0x346a25;};'use strict';var _=require(_0xaaab('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xaaab('0x1'));var moment=require('moment');var BPromise=require(_0xaaab('0x2'));var rp=require(_0xaaab('0x3'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xaaab('0x4'));var attributes=require(_0xaaab('0x5'));module['exports']=function(_0x33e049,_0x33a7ee){return _0x33e049[_0xaaab('0x6')](_0xaaab('0x7'),attributes,{'tableName':_0xaaab('0x8'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x124dd3,_0x44a370,_0x39282d){if(_0x124dd3[_0xaaab('0x9')](_0xaaab('0xa'))){_0x124dd3[_0xaaab('0xb')]=moment()[_0xaaab('0xc')](_0xaaab('0xd'));}_0x39282d(null,_0x124dd3);}}});};
\ No newline at end of file
index 817cf5a..e7b2aac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa3fb=['AddTags','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','defaults','redis','localhost','socket.io-emitter','./whatsappInteraction.socket','register','request','then','request\x20sent','debug','WhatsappInteraction,\x20%s,\x20%s,\x20%s','error','code','message','WhatsappInteraction,\x20%s,\x20%s','result','catch','WhatsappInteraction','body','options','attributes','limit','info','UpdateWhatsappInteraction','stringify','AddTagsToWhatsappInteraction','find','where','addTags','omit','spread'];(function(_0x3055bd,_0x33d1e0){var _0x1e1554=function(_0x427265){while(--_0x427265){_0x3055bd['push'](_0x3055bd['shift']());}};_0x1e1554(++_0x33d1e0);}(_0xa3fb,0x18d));var _0xba3f=function(_0x5eb65f,_0x2b90bf){_0x5eb65f=_0x5eb65f-0x0;var _0x305552=_0xa3fb[_0x5eb65f];return _0x305552;};'use strict';var _=require(_0xba3f('0x0'));var util=require(_0xba3f('0x1'));var moment=require(_0xba3f('0x2'));var BPromise=require('bluebird');var rs=require(_0xba3f('0x3'));var fs=require('fs');var Redis=require(_0xba3f('0x4'));var db=require(_0xba3f('0x5'))['db'];var utils=require(_0xba3f('0x6'));var logger=require(_0xba3f('0x7'))(_0xba3f('0x8'));var config=require(_0xba3f('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xba3f('0xa')][_0xba3f('0xb')]({'port':0x232a});config['redis']=_[_0xba3f('0xc')](config[_0xba3f('0xd')],{'host':_0xba3f('0xe'),'port':0x18eb});var socket=require(_0xba3f('0xf'))(new Redis(config[_0xba3f('0xd')]));require(_0xba3f('0x10'))[_0xba3f('0x11')](socket);function respondWithRpcPromise(_0x56cd37,_0x832407,_0x514054){return new BPromise(function(_0x2ffc5c,_0x58ab16){return client[_0xba3f('0x12')](_0x56cd37,_0x514054)[_0xba3f('0x13')](function(_0x1228c2){logger['info']('WhatsappInteraction,\x20%s,\x20%s',_0x832407,_0xba3f('0x14'));logger[_0xba3f('0x15')](_0xba3f('0x16'),_0x832407,_0xba3f('0x14'),JSON['stringify'](_0x1228c2));if(_0x1228c2[_0xba3f('0x17')]){if(_0x1228c2[_0xba3f('0x17')][_0xba3f('0x18')]===0x1f4){logger[_0xba3f('0x17')]('WhatsappInteraction,\x20%s,\x20%s',_0x832407,_0x1228c2['error'][_0xba3f('0x19')]);return _0x58ab16(_0x1228c2[_0xba3f('0x17')][_0xba3f('0x19')]);}logger['error'](_0xba3f('0x1a'),_0x832407,_0x1228c2[_0xba3f('0x17')][_0xba3f('0x19')]);return _0x2ffc5c(_0x1228c2[_0xba3f('0x17')][_0xba3f('0x19')]);}else{logger['info'](_0xba3f('0x1a'),_0x832407,'request\x20sent');_0x2ffc5c(_0x1228c2[_0xba3f('0x1b')]['message']);}})[_0xba3f('0x1c')](function(_0x5984e6){logger[_0xba3f('0x17')]('WhatsappInteraction,\x20%s,\x20%s',_0x832407,_0x5984e6);_0x58ab16(_0x5984e6);});});}exports['UpdateWhatsappInteraction']=function(_0x1920cc){var _0x169e9d=this;return new Promise(function(_0x174b12,_0xcc5bb9){return db[_0xba3f('0x1d')]['update'](_0x1920cc[_0xba3f('0x1e')],{'raw':_0x1920cc[_0xba3f('0x1f')]?_0x1920cc['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1920cc['options']?_0x1920cc['options']['where']||null:null,'attributes':_0x1920cc['options']?_0x1920cc[_0xba3f('0x1f')][_0xba3f('0x20')]||null:null,'limit':_0x1920cc[_0xba3f('0x1f')]?_0x1920cc[_0xba3f('0x1f')][_0xba3f('0x21')]||null:null})[_0xba3f('0x13')](function(_0x2ced2f){logger[_0xba3f('0x22')](_0xba3f('0x23'),_0x1920cc);logger[_0xba3f('0x15')](_0xba3f('0x23'),_0x1920cc,JSON[_0xba3f('0x24')](_0x2ced2f));_0x174b12(_0x2ced2f);})[_0xba3f('0x1c')](function(_0x2d8a95){logger['error']('UpdateWhatsappInteraction',_0x2d8a95[_0xba3f('0x19')],_0x1920cc);_0xcc5bb9(_0x169e9d[_0xba3f('0x17')](0x1f4,_0x2d8a95[_0xba3f('0x19')]));});});};exports[_0xba3f('0x25')]=function(_0x3e657e){return new Promise(function(_0x35f5ce,_0x58fb3d){return db[_0xba3f('0x1d')][_0xba3f('0x26')]({'where':_0x3e657e['options']?_0x3e657e[_0xba3f('0x1f')][_0xba3f('0x27')]||null:null})[_0xba3f('0x13')](function(_0x4be5e9){if(_0x4be5e9){return _0x4be5e9[_0xba3f('0x28')](_0x3e657e['body']['ids'],_[_0xba3f('0x29')](_0x3e657e['body'],['ids','id'])||{});}})[_0xba3f('0x2a')](function(_0x853210){logger[_0xba3f('0x22')](_0xba3f('0x2b'),_0x3e657e);logger['debug'](_0xba3f('0x2b'),_0x3e657e,JSON[_0xba3f('0x24')](_0x853210));_0x35f5ce(_0x853210);})[_0xba3f('0x1c')](function(_0x4a596a){logger['error'](_0xba3f('0x2b'),_0x4a596a[_0xba3f('0x19')],_0x3e657e);_0x58fb3d(_this[_0xba3f('0x17')](0x1f4,_0x4a596a[_0xba3f('0x19')]));});});};
\ No newline at end of file
+var _0x27d3=['rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','request','then','info','request\x20sent','WhatsappInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','WhatsappInteraction,\x20%s,\x20%s','message','catch','WhatsappInteraction','update','body','options','raw','where','UpdateWhatsappInteraction','debug','AddTagsToWhatsappInteraction','addTags','ids','spread','AddTags','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x1a66c3,_0x3c5b32){var _0x4ebfaf=function(_0x9ae67b){while(--_0x9ae67b){_0x1a66c3['push'](_0x1a66c3['shift']());}};_0x4ebfaf(++_0x3c5b32);}(_0x27d3,0x1b1));var _0x327d=function(_0x2080a3,_0x48acfa){_0x2080a3=_0x2080a3-0x0;var _0x8d7d17=_0x27d3[_0x2080a3];return _0x8d7d17;};'use strict';var _=require(_0x327d('0x0'));var util=require(_0x327d('0x1'));var moment=require(_0x327d('0x2'));var BPromise=require('bluebird');var rs=require(_0x327d('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x327d('0x4'))['db'];var utils=require(_0x327d('0x5'));var logger=require(_0x327d('0x6'))(_0x327d('0x7'));var config=require(_0x327d('0x8'));var jayson=require(_0x327d('0x9'));var client=jayson[_0x327d('0xa')][_0x327d('0xb')]({'port':0x232a});config[_0x327d('0xc')]=_[_0x327d('0xd')](config[_0x327d('0xc')],{'host':_0x327d('0xe'),'port':0x18eb});var socket=require(_0x327d('0xf'))(new Redis(config[_0x327d('0xc')]));require('./whatsappInteraction.socket')['register'](socket);function respondWithRpcPromise(_0xc45eeb,_0x4249f8,_0x329869){return new BPromise(function(_0x180cbb,_0x24257d){return client[_0x327d('0x10')](_0xc45eeb,_0x329869)[_0x327d('0x11')](function(_0x5d9248){logger[_0x327d('0x12')]('WhatsappInteraction,\x20%s,\x20%s',_0x4249f8,_0x327d('0x13'));logger['debug'](_0x327d('0x14'),_0x4249f8,_0x327d('0x13'),JSON[_0x327d('0x15')](_0x5d9248));if(_0x5d9248[_0x327d('0x16')]){if(_0x5d9248[_0x327d('0x16')][_0x327d('0x17')]===0x1f4){logger[_0x327d('0x16')](_0x327d('0x18'),_0x4249f8,_0x5d9248['error'][_0x327d('0x19')]);return _0x24257d(_0x5d9248[_0x327d('0x16')]['message']);}logger['error'](_0x327d('0x18'),_0x4249f8,_0x5d9248[_0x327d('0x16')]['message']);return _0x180cbb(_0x5d9248[_0x327d('0x16')][_0x327d('0x19')]);}else{logger['info'](_0x327d('0x18'),_0x4249f8,_0x327d('0x13'));_0x180cbb(_0x5d9248['result'][_0x327d('0x19')]);}})[_0x327d('0x1a')](function(_0x5061a9){logger['error'](_0x327d('0x18'),_0x4249f8,_0x5061a9);_0x24257d(_0x5061a9);});});}exports['UpdateWhatsappInteraction']=function(_0x5c1e67){var _0x21ff5d=this;return new Promise(function(_0x39bf58,_0x1584bd){return db[_0x327d('0x1b')][_0x327d('0x1c')](_0x5c1e67[_0x327d('0x1d')],{'raw':_0x5c1e67['options']?_0x5c1e67[_0x327d('0x1e')][_0x327d('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5c1e67[_0x327d('0x1e')]?_0x5c1e67['options'][_0x327d('0x20')]||null:null,'attributes':_0x5c1e67['options']?_0x5c1e67['options']['attributes']||null:null,'limit':_0x5c1e67[_0x327d('0x1e')]?_0x5c1e67[_0x327d('0x1e')]['limit']||null:null})[_0x327d('0x11')](function(_0x475ebc){logger[_0x327d('0x12')](_0x327d('0x21'),_0x5c1e67);logger[_0x327d('0x22')]('UpdateWhatsappInteraction',_0x5c1e67,JSON[_0x327d('0x15')](_0x475ebc));_0x39bf58(_0x475ebc);})[_0x327d('0x1a')](function(_0x195b37){logger[_0x327d('0x16')](_0x327d('0x21'),_0x195b37[_0x327d('0x19')],_0x5c1e67);_0x1584bd(_0x21ff5d[_0x327d('0x16')](0x1f4,_0x195b37['message']));});});};exports[_0x327d('0x23')]=function(_0x9f49f){return new Promise(function(_0x48fa53,_0x5622d8){return db[_0x327d('0x1b')]['find']({'where':_0x9f49f['options']?_0x9f49f['options'][_0x327d('0x20')]||null:null})[_0x327d('0x11')](function(_0x4b577e){if(_0x4b577e){return _0x4b577e[_0x327d('0x24')](_0x9f49f['body'][_0x327d('0x25')],_['omit'](_0x9f49f[_0x327d('0x1d')],[_0x327d('0x25'),'id'])||{});}})[_0x327d('0x26')](function(_0x68d744){logger[_0x327d('0x12')](_0x327d('0x27'),_0x9f49f);logger['debug'](_0x327d('0x27'),_0x9f49f,JSON[_0x327d('0x15')](_0x68d744));_0x48fa53(_0x68d744);})[_0x327d('0x1a')](function(_0x1c36bd){logger[_0x327d('0x16')](_0x327d('0x27'),_0x1c36bd['message'],_0x9f49f);_0x5622d8(_this[_0x327d('0x16')](0x1f4,_0x1c36bd['message']));});});};
\ No newline at end of file
index 204aaab..df0e8c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf3e=['update','removeListener','register','length','whatsappInteraction:','./whatsappInteraction.events','save','remove'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xaf3e,0x155));var _0xeaf3=function(_0x3a73bc,_0x550aef){_0x3a73bc=_0x3a73bc-0x0;var _0x32891b=_0xaf3e[_0x3a73bc];return _0x32891b;};'use strict';var WhatsappInteractionEvents=require(_0xeaf3('0x0'));var events=[_0xeaf3('0x1'),_0xeaf3('0x2'),_0xeaf3('0x3')];function createListener(_0x33ad33,_0x2cc7ee){return function(_0x52d41a){_0x2cc7ee['emit'](_0x33ad33,_0x52d41a);};}function removeListener(_0x4c0b12,_0x599a4b){return function(){WhatsappInteractionEvents[_0xeaf3('0x4')](_0x4c0b12,_0x599a4b);};}exports[_0xeaf3('0x5')]=function(_0x52f303){for(var _0x46dbe9=0x0,_0x52f70c=events[_0xeaf3('0x6')];_0x46dbe9<_0x52f70c;_0x46dbe9++){var _0x5890ec=events[_0x46dbe9];var _0x2f7757=createListener(_0xeaf3('0x7')+_0x5890ec,_0x52f303);WhatsappInteractionEvents['on'](_0x5890ec,_0x2f7757);}};
\ No newline at end of file
+var _0x24fb=['removeListener','register','./whatsappInteraction.events','save','remove','update','emit'];(function(_0x5980aa,_0x10aebd){var _0xda1145=function(_0x1660d6){while(--_0x1660d6){_0x5980aa['push'](_0x5980aa['shift']());}};_0xda1145(++_0x10aebd);}(_0x24fb,0x10c));var _0xb24f=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x24fb[_0x20a584];return _0x4b41a8;};'use strict';var WhatsappInteractionEvents=require(_0xb24f('0x0'));var events=[_0xb24f('0x1'),_0xb24f('0x2'),_0xb24f('0x3')];function createListener(_0x2f1fb5,_0x558856){return function(_0x3966b5){_0x558856[_0xb24f('0x4')](_0x2f1fb5,_0x3966b5);};}function removeListener(_0x24ceea,_0x348d60){return function(){WhatsappInteractionEvents[_0xb24f('0x5')](_0x24ceea,_0x348d60);};}exports[_0xb24f('0x6')]=function(_0x45cad8){for(var _0x45b28c=0x0,_0x3181df=events['length'];_0x45b28c<_0x3181df;_0x45b28c++){var _0x22133b=events[_0x45b28c];var _0x40ad1c=createListener('whatsappInteraction:'+_0x22133b,_0x45cad8);WhatsappInteractionEvents['on'](_0x22133b,_0x40ad1c);}};
\ No newline at end of file
index 2c6290f..e997986 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c45=['whatsappmessage:create','create','put','update','/:id/accept','accept','/:id/reject','reject','destroy','exports','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','/describe','describe','/:id','post','whatsapp'];(function(_0x2ea716,_0x247e9e){var _0x5dd3b2=function(_0x254b42){while(--_0x254b42){_0x2ea716['push'](_0x2ea716['shift']());}};_0x5dd3b2(++_0x247e9e);}(_0x7c45,0x1ea));var _0x57c4=function(_0x19b3f9,_0xade753){_0x19b3f9=_0x19b3f9-0x0;var _0x18c3f6=_0x7c45[_0x19b3f9];return _0x18c3f6;};'use strict';var multer=require(_0x57c4('0x0'));var util=require('util');var path=require(_0x57c4('0x1'));var timeout=require('connect-timeout');var express=require(_0x57c4('0x2'));var router=express[_0x57c4('0x3')]();var fs_extra=require(_0x57c4('0x4'));var auth=require(_0x57c4('0x5'));var interaction=require(_0x57c4('0x6'));var config=require('../../config/environment');var controller=require('./whatsappMessage.controller');router[_0x57c4('0x7')]('/',auth[_0x57c4('0x8')](),controller['index']);router['get'](_0x57c4('0x9'),auth['isAuthenticated'](),controller[_0x57c4('0xa')]);router[_0x57c4('0x7')](_0x57c4('0xb'),auth[_0x57c4('0x8')](),controller['show']);router[_0x57c4('0xc')]('/',auth['isAuthenticated'](),interaction['tracked'](_0x57c4('0xd'),_0x57c4('0xe')),controller[_0x57c4('0xf')]);router['post']('/:id/status',controller['status']);router[_0x57c4('0x10')]('/:id',auth[_0x57c4('0x8')](),controller[_0x57c4('0x11')]);router[_0x57c4('0x10')](_0x57c4('0x12'),auth[_0x57c4('0x8')](),controller[_0x57c4('0x13')]);router[_0x57c4('0x10')](_0x57c4('0x14'),auth[_0x57c4('0x8')](),controller[_0x57c4('0x15')]);router['delete'](_0x57c4('0xb'),auth['isAuthenticated'](),controller[_0x57c4('0x16')]);module[_0x57c4('0x17')]=router;
\ No newline at end of file
+var _0x3fc2=['connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappMessage.controller','get','isAuthenticated','index','describe','/:id','show','tracked','create','post','status','update','/:id/accept','accept','put','/:id/reject','reject','exports','path'];(function(_0x47e641,_0x40eb6e){var _0x56b6e2=function(_0xbde0da){while(--_0xbde0da){_0x47e641['push'](_0x47e641['shift']());}};_0x56b6e2(++_0x40eb6e);}(_0x3fc2,0x15d));var _0x23fc=function(_0x248ad2,_0x338807){_0x248ad2=_0x248ad2-0x0;var _0x485d9a=_0x3fc2[_0x248ad2];return _0x485d9a;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x23fc('0x0'));var timeout=require(_0x23fc('0x1'));var express=require(_0x23fc('0x2'));var router=express['Router']();var fs_extra=require(_0x23fc('0x3'));var auth=require(_0x23fc('0x4'));var interaction=require(_0x23fc('0x5'));var config=require(_0x23fc('0x6'));var controller=require(_0x23fc('0x7'));router[_0x23fc('0x8')]('/',auth[_0x23fc('0x9')](),controller[_0x23fc('0xa')]);router['get']('/describe',auth[_0x23fc('0x9')](),controller[_0x23fc('0xb')]);router['get'](_0x23fc('0xc'),auth['isAuthenticated'](),controller[_0x23fc('0xd')]);router['post']('/',auth[_0x23fc('0x9')](),interaction[_0x23fc('0xe')]('whatsapp','whatsappmessage:create'),controller[_0x23fc('0xf')]);router[_0x23fc('0x10')]('/:id/status',controller[_0x23fc('0x11')]);router['put'](_0x23fc('0xc'),auth[_0x23fc('0x9')](),controller[_0x23fc('0x12')]);router['put'](_0x23fc('0x13'),auth[_0x23fc('0x9')](),controller[_0x23fc('0x14')]);router[_0x23fc('0x15')](_0x23fc('0x16'),auth['isAuthenticated'](),controller[_0x23fc('0x17')]);router['delete'](_0x23fc('0xc'),auth[_0x23fc('0x9')](),controller['destroy']);module[_0x23fc('0x18')]=router;
\ No newline at end of file
index 13e4f0f..fdd3215 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2fbc=['DATE','sequelize','exports','TEXT','medium','BOOLEAN','ENUM','out','STRING'];(function(_0x362c5c,_0x189ea8){var _0x3a951e=function(_0x3296e4){while(--_0x3296e4){_0x362c5c['push'](_0x362c5c['shift']());}};_0x3a951e(++_0x189ea8);}(_0x2fbc,0x106));var _0xc2fb=function(_0xd7d92b,_0x162a88){_0xd7d92b=_0xd7d92b-0x0;var _0x42856d=_0x2fbc[_0xd7d92b];return _0x42856d;};'use strict';var Sequelize=require(_0xc2fb('0x0'));module[_0xc2fb('0x1')]={'body':{'type':Sequelize[_0xc2fb('0x2')](_0xc2fb('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0xc2fb('0x4')],'defaultValue':![]},'direction':{'type':Sequelize[_0xc2fb('0x5')]('in',_0xc2fb('0x6')),'defaultValue':'out','allowNull':![]},'messageId':{'type':Sequelize['STRING'](0xbe)},'phone':{'type':Sequelize[_0xc2fb('0x7')]},'readAt':{'type':Sequelize[_0xc2fb('0x8')]},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'providerName':{'type':Sequelize[_0xc2fb('0x7')]},'providerResponse':{'type':Sequelize[_0xc2fb('0x2')]}};
\ No newline at end of file
+var _0x1d02=['ENUM','out','STRING','sequelize','TEXT','medium','BOOLEAN'];(function(_0x1fc7b3,_0x6151f7){var _0x5657f9=function(_0x4b0268){while(--_0x4b0268){_0x1fc7b3['push'](_0x1fc7b3['shift']());}};_0x5657f9(++_0x6151f7);}(_0x1d02,0x88));var _0x21d0=function(_0x18ece6,_0x1e5bf0){_0x18ece6=_0x18ece6-0x0;var _0x5dae54=_0x1d02[_0x18ece6];return _0x5dae54;};'use strict';var Sequelize=require(_0x21d0('0x0'));module['exports']={'body':{'type':Sequelize[_0x21d0('0x1')](_0x21d0('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0x21d0('0x3')],'defaultValue':![]},'direction':{'type':Sequelize[_0x21d0('0x4')]('in',_0x21d0('0x5')),'defaultValue':_0x21d0('0x5'),'allowNull':![]},'messageId':{'type':Sequelize[_0x21d0('0x6')](0xbe)},'phone':{'type':Sequelize[_0x21d0('0x6')]},'readAt':{'type':Sequelize['DATE']},'secret':{'type':Sequelize[_0x21d0('0x3')],'defaultValue':![]},'providerName':{'type':Sequelize[_0x21d0('0x6')]},'providerResponse':{'type':Sequelize[_0x21d0('0x1')]}};
\ No newline at end of file
index deb6008..c1a23ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1805=['Sequelize','QueryTypes','SELECT','contact','fullname','interface','SIP/%s','channel','event','EventManager','acceptmessage','whatsapp-interactions','whatsapp','WhatsappInteractionId','RejectMessage','rejectMessage','ContactId','email','WhatsappAccount','WhatsappAccountId','WhatsppMessage,\x20%s,\x20%s,\x20%s','received\x20delivery\x20report\x20from','inspect','MessageSid','messageId','MessageStatus','twilio','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./whatsappMessage.socket','client','http','request','then','WhatsappMessage,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','status','end','json','offset','limit','undefined','count','set','apply','reject','save','destroy','sendStatus','stack','name','send','index','map','WhatsappMessage','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','show','include','find','create','body','update','params','describe','accept','read','readAt','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','WhatsappInteraction','isNil','read1stAt','format','interaction','info','[WHATSAPPMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'];(function(_0x12e073,_0x4d43db){var _0x267748=function(_0x381284){while(--_0x381284){_0x12e073['push'](_0x12e073['shift']());}};_0x267748(++_0x4d43db);}(_0x1805,0x1bf));var _0x5180=function(_0x479bf2,_0x443252){_0x479bf2=_0x479bf2-0x0;var _0x21fec8=_0x1805[_0x479bf2];return _0x21fec8;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5180('0x0'));var zipdir=require(_0x5180('0x1'));var jsonpatch=require(_0x5180('0x2'));var rp=require('request-promise');var moment=require(_0x5180('0x3'));var BPromise=require(_0x5180('0x4'));var Mustache=require(_0x5180('0x5'));var util=require(_0x5180('0x6'));var path=require(_0x5180('0x7'));var sox=require(_0x5180('0x8'));var csv=require(_0x5180('0x9'));var ejs=require(_0x5180('0xa'));var fs=require('fs');var fs_extra=require(_0x5180('0xb'));var _=require(_0x5180('0xc'));var squel=require(_0x5180('0xd'));var crypto=require(_0x5180('0xe'));var jsforce=require(_0x5180('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x5180('0x9'));var querystring=require(_0x5180('0x10'));var Papa=require(_0x5180('0x11'));var Redis=require(_0x5180('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x5180('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x5180('0x14'));var logger=require(_0x5180('0x15'))(_0x5180('0x16'));var utils=require('../../config/utils');var config=require(_0x5180('0x17'));var licenseUtil=require(_0x5180('0x18'));var db=require(_0x5180('0x19'))['db'];config[_0x5180('0x1a')]=_[_0x5180('0x1b')](config[_0x5180('0x1a')],{'host':_0x5180('0x1c'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x5180('0x1a')]));require(_0x5180('0x1d'))['register'](socket);var jayson=require('jayson/promise');var client=jayson[_0x5180('0x1e')][_0x5180('0x1f')]({'port':0x232c});var client9002=jayson[_0x5180('0x1e')][_0x5180('0x1f')]({'port':0x232a});function respondWithRpcPromise(_0x3476e3,_0x48e509,_0x3a3980,_0x54df19){return new BPromise(function(_0x5a911c,_0x31a5f8){var _0x57aecb=_0x54df19||client;return _0x57aecb[_0x5180('0x20')](_0x3476e3,_0x3a3980)[_0x5180('0x21')](function(_0x188c5f){logger['info'](_0x5180('0x22'),_0x48e509,_0x5180('0x23'));logger[_0x5180('0x24')]('WhatsappMessage,\x20%s,\x20%s,\x20%s',_0x48e509,'request\x20sent',JSON[_0x5180('0x25')](_0x188c5f));if(_0x188c5f[_0x5180('0x26')]){if(_0x188c5f['error'][_0x5180('0x27')]===0x1f4){logger['error'](_0x5180('0x22'),_0x48e509,_0x188c5f[_0x5180('0x26')][_0x5180('0x28')]);return _0x31a5f8(_0x188c5f[_0x5180('0x26')][_0x5180('0x28')]);}logger[_0x5180('0x26')](_0x5180('0x22'),_0x48e509,_0x188c5f['error']['message']);return _0x5a911c(_0x188c5f[_0x5180('0x26')][_0x5180('0x28')]);}else{logger['info'](_0x5180('0x22'),_0x48e509,_0x5180('0x23'));_0x5a911c(_0x188c5f[_0x5180('0x29')][_0x5180('0x28')]);}})[_0x5180('0x2a')](function(_0x462717){logger['error']('WhatsappMessage,\x20%s,\x20%s',_0x48e509,_0x462717);_0x31a5f8(_0x462717);});});}function respondWithStatusCode(_0x531e65,_0x5a875e){_0x5a875e=_0x5a875e||0xcc;return function(_0x1442dd){if(_0x1442dd){return _0x531e65['sendStatus'](_0x5a875e);}return _0x531e65[_0x5180('0x2b')](_0x5a875e)[_0x5180('0x2c')]();};}function respondWithResult(_0x373416,_0x3401b1){_0x3401b1=_0x3401b1||0xc8;return function(_0x291e06){if(_0x291e06){return _0x373416['status'](_0x3401b1)[_0x5180('0x2d')](_0x291e06);}};}function respondWithFilteredResult(_0x1b2c48,_0x568d4d){return function(_0x4aa3f5){if(_0x4aa3f5){var _0x34c011=typeof _0x568d4d[_0x5180('0x2e')]==='undefined'&&typeof _0x568d4d[_0x5180('0x2f')]===_0x5180('0x30');var _0xd37a69=_0x4aa3f5[_0x5180('0x31')];var _0x4daa21=_0x34c011?0x0:_0x568d4d[_0x5180('0x2e')];var _0x4d8ec4=_0x34c011?_0x4aa3f5['count']:_0x568d4d[_0x5180('0x2e')]+_0x568d4d[_0x5180('0x2f')];var _0x5eb532;if(_0x4d8ec4>=_0xd37a69){_0x4d8ec4=_0xd37a69;_0x5eb532=0xc8;}else{_0x5eb532=0xce;}_0x1b2c48['status'](_0x5eb532);return _0x1b2c48[_0x5180('0x32')]('Content-Range',_0x4daa21+'-'+_0x4d8ec4+'/'+_0xd37a69)[_0x5180('0x2d')](_0x4aa3f5);}return null;};}function patchUpdates(_0x7341be){return function(_0x4771b2){try{jsonpatch[_0x5180('0x33')](_0x4771b2,_0x7341be,!![]);}catch(_0x2ffe7b){return BPromise[_0x5180('0x34')](_0x2ffe7b);}return _0x4771b2[_0x5180('0x35')]();};}function saveUpdates(_0x350748,_0x46628b){return function(_0x4c36b8){if(_0x4c36b8){return _0x4c36b8['update'](_0x350748)[_0x5180('0x21')](function(_0x428954){return _0x428954;});}return null;};}function removeEntity(_0x2f581a,_0x285dad){return function(_0x2e908b){if(_0x2e908b){return _0x2e908b[_0x5180('0x36')]()[_0x5180('0x21')](function(){_0x2f581a[_0x5180('0x2b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x471859,_0x42bb4e){return function(_0x4666c5){if(!_0x4666c5){_0x471859[_0x5180('0x37')](0x194);}return _0x4666c5;};}function handleError(_0x4fc1cf,_0x471780){_0x471780=_0x471780||0x1f4;return function(_0xb73f1f){logger[_0x5180('0x26')](_0xb73f1f[_0x5180('0x38')]);if(_0xb73f1f[_0x5180('0x39')]){delete _0xb73f1f[_0x5180('0x39')];}_0x4fc1cf[_0x5180('0x2b')](_0x471780)[_0x5180('0x3a')](_0xb73f1f);};}exports[_0x5180('0x3b')]=function(_0x1f9f6b,_0x3218e9){var _0x1c229f={},_0xede3e0={},_0x5cc742={'count':0x0,'rows':[]};var _0xc4687=_[_0x5180('0x3c')](db[_0x5180('0x3d')][_0x5180('0x3e')],function(_0x564ab3){return{'name':_0x564ab3[_0x5180('0x3f')],'type':_0x564ab3[_0x5180('0x40')][_0x5180('0x41')]};});_0xede3e0[_0x5180('0x42')]=_[_0x5180('0x3c')](_0xc4687,_0x5180('0x39'));_0xede3e0[_0x5180('0x43')]=_['keys'](_0x1f9f6b[_0x5180('0x43')]);_0xede3e0[_0x5180('0x44')]=_[_0x5180('0x45')](_0xede3e0[_0x5180('0x42')],_0xede3e0['query']);_0x1c229f[_0x5180('0x46')]=_['intersection'](_0xede3e0[_0x5180('0x42')],qs[_0x5180('0x47')](_0x1f9f6b['query'][_0x5180('0x47')]));_0x1c229f[_0x5180('0x46')]=_0x1c229f[_0x5180('0x46')][_0x5180('0x48')]?_0x1c229f[_0x5180('0x46')]:_0xede3e0[_0x5180('0x42')];if(!_0x1f9f6b[_0x5180('0x43')][_0x5180('0x49')]('nolimit')){_0x1c229f[_0x5180('0x2f')]=qs['limit'](_0x1f9f6b[_0x5180('0x43')][_0x5180('0x2f')]);_0x1c229f[_0x5180('0x2e')]=qs[_0x5180('0x2e')](_0x1f9f6b[_0x5180('0x43')][_0x5180('0x2e')]);}_0x1c229f[_0x5180('0x4a')]=qs[_0x5180('0x4b')](_0x1f9f6b[_0x5180('0x43')][_0x5180('0x4b')]);_0x1c229f[_0x5180('0x4c')]=qs[_0x5180('0x44')](_[_0x5180('0x4d')](_0x1f9f6b[_0x5180('0x43')],_0xede3e0[_0x5180('0x44')]),_0xc4687);if(_0x1f9f6b['query'][_0x5180('0x4e')]){_0x1c229f['where']=_[_0x5180('0x4f')](_0x1c229f[_0x5180('0x4c')],{'$or':_[_0x5180('0x3c')](_0xc4687,function(_0x24912a){if(_0x24912a[_0x5180('0x40')]!==_0x5180('0x50')){var _0xa9aaf9={};_0xa9aaf9[_0x24912a['name']]={'$like':'%'+_0x1f9f6b[_0x5180('0x43')][_0x5180('0x4e')]+'%'};return _0xa9aaf9;}})});}_0x1c229f=_[_0x5180('0x4f')]({},_0x1c229f,_0x1f9f6b[_0x5180('0x51')]);var _0xdc067e={'where':_0x1c229f[_0x5180('0x4c')]};return db[_0x5180('0x3d')]['count'](_0xdc067e)[_0x5180('0x21')](function(_0x120515){_0x5cc742[_0x5180('0x31')]=_0x120515;if(_0x1f9f6b['query'][_0x5180('0x52')]){_0x1c229f['include']=[{'all':!![]}];}return db[_0x5180('0x3d')][_0x5180('0x53')](_0x1c229f);})['then'](function(_0x4071d7){_0x5cc742[_0x5180('0x54')]=_0x4071d7;return _0x5cc742;})[_0x5180('0x21')](respondWithFilteredResult(_0x3218e9,_0x1c229f))[_0x5180('0x2a')](handleError(_0x3218e9,null));};exports[_0x5180('0x55')]=function(_0x368d23,_0x5ab43f){var _0x3e10aa={'raw':!![],'where':{'id':_0x368d23['params']['id']}},_0x538495={};_0x538495['model']=_['keys'](db[_0x5180('0x3d')][_0x5180('0x3e')]);_0x538495['query']=_['keys'](_0x368d23[_0x5180('0x43')]);_0x538495[_0x5180('0x44')]=_[_0x5180('0x45')](_0x538495[_0x5180('0x42')],_0x538495[_0x5180('0x43')]);_0x3e10aa['attributes']=_[_0x5180('0x45')](_0x538495[_0x5180('0x42')],qs[_0x5180('0x47')](_0x368d23['query'][_0x5180('0x47')]));_0x3e10aa[_0x5180('0x46')]=_0x3e10aa['attributes']['length']?_0x3e10aa[_0x5180('0x46')]:_0x538495[_0x5180('0x42')];if(_0x368d23[_0x5180('0x43')][_0x5180('0x52')]){_0x3e10aa[_0x5180('0x56')]=[{'all':!![]}];}_0x3e10aa=_[_0x5180('0x4f')]({},_0x3e10aa,_0x368d23['options']);return db['WhatsappMessage'][_0x5180('0x57')](_0x3e10aa)[_0x5180('0x21')](handleEntityNotFound(_0x5ab43f,null))[_0x5180('0x21')](respondWithResult(_0x5ab43f,null))[_0x5180('0x2a')](handleError(_0x5ab43f,null));};exports[_0x5180('0x58')]=function(_0x55b796,_0x31c0e6){return db[_0x5180('0x3d')][_0x5180('0x58')](_0x55b796[_0x5180('0x59')],{})[_0x5180('0x21')](respondWithResult(_0x31c0e6,0xc9))[_0x5180('0x2a')](handleError(_0x31c0e6,null));};exports[_0x5180('0x5a')]=function(_0x3cfd5a,_0x80dd15){if(_0x3cfd5a[_0x5180('0x59')]['id']){delete _0x3cfd5a['body']['id'];}return db['WhatsappMessage'][_0x5180('0x57')]({'where':{'id':_0x3cfd5a[_0x5180('0x5b')]['id']}})['then'](handleEntityNotFound(_0x80dd15,null))[_0x5180('0x21')](saveUpdates(_0x3cfd5a[_0x5180('0x59')],null))[_0x5180('0x21')](respondWithResult(_0x80dd15,null))[_0x5180('0x2a')](handleError(_0x80dd15,null));};exports[_0x5180('0x36')]=function(_0xe573c1,_0x53759e){return db[_0x5180('0x3d')][_0x5180('0x57')]({'where':{'id':_0xe573c1[_0x5180('0x5b')]['id']}})[_0x5180('0x21')](handleEntityNotFound(_0x53759e,null))[_0x5180('0x21')](removeEntity(_0x53759e,null))[_0x5180('0x2a')](handleError(_0x53759e,null));};exports[_0x5180('0x5c')]=function(_0x4ca7b8,_0x95e80){return db[_0x5180('0x3d')][_0x5180('0x5c')]()[_0x5180('0x21')](respondWithResult(_0x95e80,null))[_0x5180('0x2a')](handleError(_0x95e80,null));};var interaction_log=require(_0x5180('0x15'))('whatsapp-interactions');exports[_0x5180('0x5d')]=function(_0x441e7a,_0x533414,_0x10d954){var _0x45cf9d={'agent':{},'channel':'whatsapp'};if(_0x441e7a[_0x5180('0x59')]['id']){delete _0x441e7a[_0x5180('0x59')]['id'];}_0x441e7a[_0x5180('0x59')][_0x5180('0x5e')]=!![];_0x441e7a[_0x5180('0x59')][_0x5180('0x5f')]=moment()['format'](_0x5180('0x60'));_0x441e7a[_0x5180('0x59')][_0x5180('0x61')]=_0x441e7a[_0x5180('0x59')][_0x5180('0x61')]||_0x441e7a[_0x5180('0x62')]['id'];_0x45cf9d[_0x5180('0x63')]['id']=_0x441e7a[_0x5180('0x59')][_0x5180('0x61')];return db[_0x5180('0x3d')][_0x5180('0x57')]({'where':{'id':_0x441e7a[_0x5180('0x5b')]['id'],'UserId':null}})[_0x5180('0x21')](handleEntityNotFound(_0x533414,null))[_0x5180('0x21')](saveUpdates(_0x441e7a[_0x5180('0x59')],null))[_0x5180('0x21')](function(_0x181649){if(_0x181649){_0x45cf9d[_0x5180('0x28')]=_0x181649[_0x5180('0x64')]({'plain':!![]});return db[_0x5180('0x65')][_0x5180('0x57')]({'where':{'id':_0x181649['WhatsappInteractionId']}});}return null;})['then'](handleEntityNotFound(_0x533414,null))[_0x5180('0x21')](function(_0x5ca77b){if(_0x5ca77b){return _0x5ca77b[_0x5180('0x5a')]({'UserId':_0x441e7a[_0x5180('0x59')][_0x5180('0x61')],'read1stAt':_[_0x5180('0x66')](_0x5ca77b[_0x5180('0x67')])?moment()[_0x5180('0x68')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})['then'](function(_0x25d3c1){if(_0x25d3c1){_0x45cf9d[_0x5180('0x69')]=_0x25d3c1[_0x5180('0x64')]({'plain':!![]});interaction_log[_0x5180('0x6a')](_0x5180('0x6b'),_0x441e7a[_0x5180('0x62')]['id'],_0x441e7a[_0x5180('0x62')]['name'],_0x441e7a[_0x5180('0x62')][_0x5180('0x6c')],_0x45cf9d[_0x5180('0x69')]['id'],_0x441e7a[_0x5180('0x59')]?JSON[_0x5180('0x25')](_0x441e7a[_0x5180('0x59')]):_0x5180('0x6d'));return respondWithRpcPromise(_0x5180('0x6e'),_0x5180('0x6f'),_0x45cf9d);}return null;})[_0x5180('0x21')](function(_0x449aae){var _0x1e29b5=_0x5180('0x70')+_0x449aae[_0x5180('0x28')]['ContactId'];return db['sequelize'][_0x5180('0x43')](_0x1e29b5,{'type':db[_0x5180('0x71')][_0x5180('0x72')][_0x5180('0x73')],'raw':!![]})[_0x5180('0x21')](function(_0x42fa77){return _0x42fa77;});})['then'](function(_0x30a022){if(_0x30a022){_0x45cf9d['message'][_0x5180('0x74')]=_0x30a022[0x0];if(!_0x441e7a[_0x5180('0x59')][_0x5180('0x61')])return;return db['User'][_0x5180('0x57')]({'where':{'id':_0x441e7a[_0x5180('0x59')][_0x5180('0x61')],'role':'agent'},'attributes':['id',_0x5180('0x39'),_0x5180('0x75'),'email','internal'],'raw':!![]});}return null;})[_0x5180('0x21')](function(_0x1f8072){if(!_0x1f8072)return null;_0x45cf9d['message'][_0x5180('0x63')]=_0x1f8072;return _0x45cf9d;})[_0x5180('0x21')](function(_0x4edc48){if(_0x4edc48){if(_0x441e7a[_0x5180('0x59')]['manual']){_0x45cf9d['message'][_0x5180('0x76')]=util[_0x5180('0x68')](_0x5180('0x77'),_0x441e7a[_0x5180('0x62')]['name']);_0x45cf9d['message'][_0x5180('0x78')]=_0x45cf9d[_0x5180('0x78')];_0x45cf9d[_0x5180('0x28')][_0x5180('0x79')]='accept';return respondWithRpcPromise(_0x5180('0x7a'),'EventManager',{'event':_0x5180('0x7b'),'message':_0x45cf9d['message']},client9002)[_0x5180('0x21')](function(){return _0x45cf9d;});}return _0x45cf9d;}return null;})[_0x5180('0x21')](respondWithResult(_0x533414,null))[_0x5180('0x2a')](handleError(_0x533414,null));};var interaction_log=require('../../config/logger')(_0x5180('0x7c'));exports[_0x5180('0x34')]=function(_0x31b5af,_0x257a97,_0x1af601){var _0x1c37dc={'agent':{},'channel':_0x5180('0x7d')};if(_0x31b5af[_0x5180('0x59')]['id']){delete _0x31b5af[_0x5180('0x59')]['id'];}_0x31b5af[_0x5180('0x59')][_0x5180('0x61')]=_0x31b5af[_0x5180('0x59')][_0x5180('0x61')]||_0x31b5af[_0x5180('0x62')]['id'];_0x1c37dc[_0x5180('0x63')]['id']=_0x31b5af[_0x5180('0x59')][_0x5180('0x61')];return db[_0x5180('0x3d')][_0x5180('0x57')]({'where':{'id':_0x31b5af[_0x5180('0x5b')]['id'],'UserId':null}})[_0x5180('0x21')](handleEntityNotFound(_0x257a97,null))[_0x5180('0x21')](function(_0x108f49){if(_0x108f49){_0x1c37dc['message']=_0x108f49[_0x5180('0x64')]({'plain':!![]});return db['WhatsappInteraction'][_0x5180('0x57')]({'where':{'id':_0x108f49[_0x5180('0x7e')]}});}return null;})[_0x5180('0x21')](handleEntityNotFound(_0x257a97,null))[_0x5180('0x21')](function(_0x4cf06b){if(_0x4cf06b){_0x1c37dc[_0x5180('0x69')]=_0x4cf06b[_0x5180('0x64')]({'plain':!![]});interaction_log[_0x5180('0x6a')]('[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x31b5af['user']['id'],_0x31b5af[_0x5180('0x62')][_0x5180('0x39')],_0x31b5af[_0x5180('0x62')]['role'],_0x1c37dc[_0x5180('0x69')]['id'],_0x31b5af[_0x5180('0x59')]?JSON[_0x5180('0x25')](_0x31b5af[_0x5180('0x59')]):_0x5180('0x6d'));return respondWithRpcPromise(_0x5180('0x7f'),_0x5180('0x80'),_0x1c37dc);}return null;})[_0x5180('0x21')](function(_0x5424d9){var _0x30ed74=_0x5180('0x70')+_0x5424d9[_0x5180('0x28')][_0x5180('0x81')];return db['sequelize'][_0x5180('0x43')](_0x30ed74,{'type':db[_0x5180('0x71')][_0x5180('0x72')][_0x5180('0x73')],'raw':!![]})['then'](function(_0x4f4906){return _0x4f4906;});})[_0x5180('0x21')](function(_0x16a0c3){if(_0x16a0c3){_0x1c37dc['message'][_0x5180('0x74')]=_0x16a0c3[0x0];if(!_0x31b5af[_0x5180('0x59')][_0x5180('0x61')])return;return db['User'][_0x5180('0x57')]({'where':{'id':_0x31b5af[_0x5180('0x59')][_0x5180('0x61')],'role':'agent'},'attributes':['id',_0x5180('0x39'),_0x5180('0x75'),_0x5180('0x82'),'internal'],'raw':!![]});}return null;})['then'](function(_0xe64c49){if(!_0xe64c49)return null;_0x1c37dc[_0x5180('0x28')]['agent']=_0xe64c49;return _0x1c37dc;})['then'](function(_0xf873b7){if(_0xf873b7){_0xf873b7[_0x5180('0x28')]['interface']=util[_0x5180('0x68')](_0x5180('0x77'),_0x31b5af['user'][_0x5180('0x39')]);_0xf873b7['message']['channel']=_0x1c37dc['channel'];_0xf873b7[_0x5180('0x28')][_0x5180('0x79')]=_0x5180('0x34');respondWithRpcPromise(_0x5180('0x7a'),'EventManager',{'event':'rejectmessage','message':_0xf873b7[_0x5180('0x28')]},client9002);return _0x1c37dc;}return null;})[_0x5180('0x21')](respondWithResult(_0x257a97,null))[_0x5180('0x2a')](handleError(_0x257a97,null));};exports[_0x5180('0x2b')]=function(_0x3085a1,_0xcc899d,_0x1860a5){if(_0x3085a1[_0x5180('0x59')]['id']){delete _0x3085a1[_0x5180('0x59')]['id'];}var _0x344847;return db[_0x5180('0x3d')][_0x5180('0x57')]({'where':{'id':_0x3085a1[_0x5180('0x5b')]['id']}})[_0x5180('0x21')](handleEntityNotFound(_0xcc899d,null))[_0x5180('0x21')](function(_0x59d05a){if(_0x59d05a){_0x344847=_0x59d05a;return db[_0x5180('0x83')][_0x5180('0x57')]({'where':{'id':_0x59d05a[_0x5180('0x84')]}});}})[_0x5180('0x21')](handleEntityNotFound(_0xcc899d,null))[_0x5180('0x21')](function(_0x3cd38b){if(_0x3cd38b){logger['debug'](_0x5180('0x85'),_0x5180('0x2b'),_0x5180('0x86'),_0x3cd38b[_0x5180('0x40')],util[_0x5180('0x87')](_0x3085a1[_0x5180('0x59')],{'showHidden':![],'depth':null}));switch(_0x3cd38b[_0x5180('0x40')]){case'twilio':if(_0x3085a1[_0x5180('0x59')][_0x5180('0x88')]&&_0x3085a1['body']['MessageSid']===_0x344847[_0x5180('0x89')]&&_0x3085a1[_0x5180('0x59')][_0x5180('0x8a')]&&_0x3085a1['body'][_0x5180('0x8a')]===_0x5180('0x5e')){return _0x344847[_0x5180('0x5a')]({'read':!![]});}else{logger[_0x5180('0x26')]('WhatsappAccount,\x20%s,\x20%s,\x20%s','status',_0x5180('0x8b'),util[_0x5180('0x87')](_0x3085a1[_0x5180('0x59')],{'showHidden':![],'depth':null}));}break;}return _0x344847;}})[_0x5180('0x21')](respondWithResult(_0xcc899d,null))['catch'](handleError(_0xcc899d,null));};
\ No newline at end of file
+var _0x2fbb=['type','inspect','twilio','MessageSid','messageId','MessageStatus','WhatsappAccount,\x20%s,\x20%s,\x20%s','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./whatsappMessage.socket','register','client','http','request','then','request\x20sent','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','error','code','WhatsappMessage,\x20%s,\x20%s','message','info','result','catch','sendStatus','status','end','json','offset','undefined','count','apply','reject','save','update','destroy','stack','name','send','index','map','WhatsappMessage','rawAttributes','fieldName','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','filter','merge','options','include','show','params','keys','includeAll','find','create','body','describe','whatsapp-interactions','whatsapp','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','user','agent','get','WhatsappInteraction','WhatsappInteractionId','UserId','isNil','read1stAt','interaction','[WHATSAPPMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','Sequelize','QueryTypes','SELECT','contact','User','email','manual','motionChannel','channel','event','accept','EventManager','acceptmessage','[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','internal','interface','SIP/%s','WhatsappAccount','received\x20delivery\x20report\x20from'];(function(_0x4fc9e6,_0xc51915){var _0x551d28=function(_0x1a603b){while(--_0x1a603b){_0x4fc9e6['push'](_0x4fc9e6['shift']());}};_0x551d28(++_0xc51915);}(_0x2fbb,0x95));var _0xb2fb=function(_0x4cf2b7,_0x63348e){_0x4cf2b7=_0x4cf2b7-0x0;var _0x3098e1=_0x2fbb[_0x4cf2b7];return _0x3098e1;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xb2fb('0x0'));var zipdir=require(_0xb2fb('0x1'));var jsonpatch=require(_0xb2fb('0x2'));var rp=require(_0xb2fb('0x3'));var moment=require(_0xb2fb('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xb2fb('0x5'));var util=require(_0xb2fb('0x6'));var path=require(_0xb2fb('0x7'));var sox=require(_0xb2fb('0x8'));var csv=require(_0xb2fb('0x9'));var ejs=require(_0xb2fb('0xa'));var fs=require('fs');var fs_extra=require(_0xb2fb('0xb'));var _=require(_0xb2fb('0xc'));var squel=require(_0xb2fb('0xd'));var crypto=require(_0xb2fb('0xe'));var jsforce=require(_0xb2fb('0xf'));var deskjs=require(_0xb2fb('0x10'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xb2fb('0x11'));var Redis=require(_0xb2fb('0x12'));var authService=require(_0xb2fb('0x13'));var qs=require(_0xb2fb('0x14'));var as=require(_0xb2fb('0x15'));var hardwareService=require(_0xb2fb('0x16'));var logger=require(_0xb2fb('0x17'))('api');var utils=require(_0xb2fb('0x18'));var config=require(_0xb2fb('0x19'));var licenseUtil=require(_0xb2fb('0x1a'));var db=require(_0xb2fb('0x1b'))['db'];config[_0xb2fb('0x1c')]=_[_0xb2fb('0x1d')](config['redis'],{'host':_0xb2fb('0x1e'),'port':0x18eb});var socket=require(_0xb2fb('0x1f'))(new Redis(config[_0xb2fb('0x1c')]));require(_0xb2fb('0x20'))[_0xb2fb('0x21')](socket);var jayson=require('jayson/promise');var client=jayson[_0xb2fb('0x22')]['http']({'port':0x232c});var client9002=jayson['client'][_0xb2fb('0x23')]({'port':0x232a});function respondWithRpcPromise(_0x597008,_0x29d340,_0x50af15,_0x1c0c60){return new BPromise(function(_0x5839a0,_0x10929a){var _0x1e6000=_0x1c0c60||client;return _0x1e6000[_0xb2fb('0x24')](_0x597008,_0x50af15)[_0xb2fb('0x25')](function(_0x369d00){logger['info']('WhatsappMessage,\x20%s,\x20%s',_0x29d340,_0xb2fb('0x26'));logger[_0xb2fb('0x27')](_0xb2fb('0x28'),_0x29d340,_0xb2fb('0x26'),JSON['stringify'](_0x369d00));if(_0x369d00[_0xb2fb('0x29')]){if(_0x369d00[_0xb2fb('0x29')][_0xb2fb('0x2a')]===0x1f4){logger[_0xb2fb('0x29')](_0xb2fb('0x2b'),_0x29d340,_0x369d00[_0xb2fb('0x29')][_0xb2fb('0x2c')]);return _0x10929a(_0x369d00[_0xb2fb('0x29')][_0xb2fb('0x2c')]);}logger[_0xb2fb('0x29')](_0xb2fb('0x2b'),_0x29d340,_0x369d00[_0xb2fb('0x29')][_0xb2fb('0x2c')]);return _0x5839a0(_0x369d00['error'][_0xb2fb('0x2c')]);}else{logger[_0xb2fb('0x2d')](_0xb2fb('0x2b'),_0x29d340,_0xb2fb('0x26'));_0x5839a0(_0x369d00[_0xb2fb('0x2e')]['message']);}})[_0xb2fb('0x2f')](function(_0x32f6e7){logger[_0xb2fb('0x29')]('WhatsappMessage,\x20%s,\x20%s',_0x29d340,_0x32f6e7);_0x10929a(_0x32f6e7);});});}function respondWithStatusCode(_0x3556c1,_0x66b562){_0x66b562=_0x66b562||0xcc;return function(_0x10899a){if(_0x10899a){return _0x3556c1[_0xb2fb('0x30')](_0x66b562);}return _0x3556c1[_0xb2fb('0x31')](_0x66b562)[_0xb2fb('0x32')]();};}function respondWithResult(_0x1e56ee,_0x557ac8){_0x557ac8=_0x557ac8||0xc8;return function(_0x2bc5c0){if(_0x2bc5c0){return _0x1e56ee[_0xb2fb('0x31')](_0x557ac8)[_0xb2fb('0x33')](_0x2bc5c0);}};}function respondWithFilteredResult(_0x3f019c,_0xb8b8b9){return function(_0x235d4d){if(_0x235d4d){var _0x1544b5=typeof _0xb8b8b9[_0xb2fb('0x34')]==='undefined'&&typeof _0xb8b8b9['limit']===_0xb2fb('0x35');var _0x58c129=_0x235d4d[_0xb2fb('0x36')];var _0x4486f1=_0x1544b5?0x0:_0xb8b8b9[_0xb2fb('0x34')];var _0x265773=_0x1544b5?_0x235d4d[_0xb2fb('0x36')]:_0xb8b8b9[_0xb2fb('0x34')]+_0xb8b8b9['limit'];var _0x514363;if(_0x265773>=_0x58c129){_0x265773=_0x58c129;_0x514363=0xc8;}else{_0x514363=0xce;}_0x3f019c[_0xb2fb('0x31')](_0x514363);return _0x3f019c['set']('Content-Range',_0x4486f1+'-'+_0x265773+'/'+_0x58c129)['json'](_0x235d4d);}return null;};}function patchUpdates(_0xde4c56){return function(_0x1084a3){try{jsonpatch[_0xb2fb('0x37')](_0x1084a3,_0xde4c56,!![]);}catch(_0xa594e2){return BPromise[_0xb2fb('0x38')](_0xa594e2);}return _0x1084a3[_0xb2fb('0x39')]();};}function saveUpdates(_0x5d6f3d,_0x19290f){return function(_0x470166){if(_0x470166){return _0x470166[_0xb2fb('0x3a')](_0x5d6f3d)[_0xb2fb('0x25')](function(_0x1ec24a){return _0x1ec24a;});}return null;};}function removeEntity(_0x5068da,_0x9cfb57){return function(_0x55093c){if(_0x55093c){return _0x55093c[_0xb2fb('0x3b')]()[_0xb2fb('0x25')](function(){_0x5068da[_0xb2fb('0x31')](0xcc)[_0xb2fb('0x32')]();});}};}function handleEntityNotFound(_0x2e1eff,_0x3b0291){return function(_0x3e5c61){if(!_0x3e5c61){_0x2e1eff[_0xb2fb('0x30')](0x194);}return _0x3e5c61;};}function handleError(_0x2eeac6,_0x5a43dc){_0x5a43dc=_0x5a43dc||0x1f4;return function(_0x193a24){logger[_0xb2fb('0x29')](_0x193a24[_0xb2fb('0x3c')]);if(_0x193a24['name']){delete _0x193a24[_0xb2fb('0x3d')];}_0x2eeac6[_0xb2fb('0x31')](_0x5a43dc)[_0xb2fb('0x3e')](_0x193a24);};}exports[_0xb2fb('0x3f')]=function(_0x5dff42,_0x1f5aa1){var _0x3116ac={},_0xc80e0d={},_0x33ab04={'count':0x0,'rows':[]};var _0x4b4116=_[_0xb2fb('0x40')](db[_0xb2fb('0x41')][_0xb2fb('0x42')],function(_0x2daa69){return{'name':_0x2daa69[_0xb2fb('0x43')],'type':_0x2daa69['type'][_0xb2fb('0x44')]};});_0xc80e0d[_0xb2fb('0x45')]=_[_0xb2fb('0x40')](_0x4b4116,_0xb2fb('0x3d'));_0xc80e0d[_0xb2fb('0x46')]=_['keys'](_0x5dff42[_0xb2fb('0x46')]);_0xc80e0d[_0xb2fb('0x47')]=_[_0xb2fb('0x48')](_0xc80e0d[_0xb2fb('0x45')],_0xc80e0d[_0xb2fb('0x46')]);_0x3116ac[_0xb2fb('0x49')]=_[_0xb2fb('0x48')](_0xc80e0d[_0xb2fb('0x45')],qs[_0xb2fb('0x4a')](_0x5dff42[_0xb2fb('0x46')]['fields']));_0x3116ac[_0xb2fb('0x49')]=_0x3116ac[_0xb2fb('0x49')][_0xb2fb('0x4b')]?_0x3116ac['attributes']:_0xc80e0d[_0xb2fb('0x45')];if(!_0x5dff42[_0xb2fb('0x46')][_0xb2fb('0x4c')](_0xb2fb('0x4d'))){_0x3116ac[_0xb2fb('0x4e')]=qs[_0xb2fb('0x4e')](_0x5dff42[_0xb2fb('0x46')][_0xb2fb('0x4e')]);_0x3116ac[_0xb2fb('0x34')]=qs[_0xb2fb('0x34')](_0x5dff42[_0xb2fb('0x46')][_0xb2fb('0x34')]);}_0x3116ac[_0xb2fb('0x4f')]=qs[_0xb2fb('0x50')](_0x5dff42[_0xb2fb('0x46')][_0xb2fb('0x50')]);_0x3116ac[_0xb2fb('0x51')]=qs[_0xb2fb('0x47')](_['pick'](_0x5dff42[_0xb2fb('0x46')],_0xc80e0d[_0xb2fb('0x47')]),_0x4b4116);if(_0x5dff42['query'][_0xb2fb('0x52')]){_0x3116ac['where']=_[_0xb2fb('0x53')](_0x3116ac['where'],{'$or':_[_0xb2fb('0x40')](_0x4b4116,function(_0x3e6a96){if(_0x3e6a96['type']!=='VIRTUAL'){var _0x216352={};_0x216352[_0x3e6a96[_0xb2fb('0x3d')]]={'$like':'%'+_0x5dff42[_0xb2fb('0x46')][_0xb2fb('0x52')]+'%'};return _0x216352;}})});}_0x3116ac=_['merge']({},_0x3116ac,_0x5dff42[_0xb2fb('0x54')]);var _0x37ef4b={'where':_0x3116ac[_0xb2fb('0x51')]};return db['WhatsappMessage'][_0xb2fb('0x36')](_0x37ef4b)[_0xb2fb('0x25')](function(_0x22fe30){_0x33ab04[_0xb2fb('0x36')]=_0x22fe30;if(_0x5dff42[_0xb2fb('0x46')]['includeAll']){_0x3116ac[_0xb2fb('0x55')]=[{'all':!![]}];}return db[_0xb2fb('0x41')]['findAll'](_0x3116ac);})['then'](function(_0x1d538a){_0x33ab04['rows']=_0x1d538a;return _0x33ab04;})[_0xb2fb('0x25')](respondWithFilteredResult(_0x1f5aa1,_0x3116ac))['catch'](handleError(_0x1f5aa1,null));};exports[_0xb2fb('0x56')]=function(_0x4f5c23,_0x933f58){var _0x18b25e={'raw':!![],'where':{'id':_0x4f5c23[_0xb2fb('0x57')]['id']}},_0x457abc={};_0x457abc[_0xb2fb('0x45')]=_[_0xb2fb('0x58')](db[_0xb2fb('0x41')][_0xb2fb('0x42')]);_0x457abc['query']=_[_0xb2fb('0x58')](_0x4f5c23[_0xb2fb('0x46')]);_0x457abc[_0xb2fb('0x47')]=_[_0xb2fb('0x48')](_0x457abc[_0xb2fb('0x45')],_0x457abc[_0xb2fb('0x46')]);_0x18b25e[_0xb2fb('0x49')]=_[_0xb2fb('0x48')](_0x457abc['model'],qs[_0xb2fb('0x4a')](_0x4f5c23[_0xb2fb('0x46')][_0xb2fb('0x4a')]));_0x18b25e['attributes']=_0x18b25e[_0xb2fb('0x49')][_0xb2fb('0x4b')]?_0x18b25e[_0xb2fb('0x49')]:_0x457abc[_0xb2fb('0x45')];if(_0x4f5c23[_0xb2fb('0x46')][_0xb2fb('0x59')]){_0x18b25e[_0xb2fb('0x55')]=[{'all':!![]}];}_0x18b25e=_[_0xb2fb('0x53')]({},_0x18b25e,_0x4f5c23[_0xb2fb('0x54')]);return db['WhatsappMessage'][_0xb2fb('0x5a')](_0x18b25e)[_0xb2fb('0x25')](handleEntityNotFound(_0x933f58,null))[_0xb2fb('0x25')](respondWithResult(_0x933f58,null))['catch'](handleError(_0x933f58,null));};exports[_0xb2fb('0x5b')]=function(_0x349f1e,_0x3836ef){return db['WhatsappMessage'][_0xb2fb('0x5b')](_0x349f1e[_0xb2fb('0x5c')],{})[_0xb2fb('0x25')](respondWithResult(_0x3836ef,0xc9))[_0xb2fb('0x2f')](handleError(_0x3836ef,null));};exports[_0xb2fb('0x3a')]=function(_0xaf9086,_0x15ba7a){if(_0xaf9086[_0xb2fb('0x5c')]['id']){delete _0xaf9086[_0xb2fb('0x5c')]['id'];}return db['WhatsappMessage'][_0xb2fb('0x5a')]({'where':{'id':_0xaf9086[_0xb2fb('0x57')]['id']}})[_0xb2fb('0x25')](handleEntityNotFound(_0x15ba7a,null))[_0xb2fb('0x25')](saveUpdates(_0xaf9086[_0xb2fb('0x5c')],null))[_0xb2fb('0x25')](respondWithResult(_0x15ba7a,null))['catch'](handleError(_0x15ba7a,null));};exports[_0xb2fb('0x3b')]=function(_0x1f0e32,_0x21b661){return db[_0xb2fb('0x41')][_0xb2fb('0x5a')]({'where':{'id':_0x1f0e32[_0xb2fb('0x57')]['id']}})['then'](handleEntityNotFound(_0x21b661,null))['then'](removeEntity(_0x21b661,null))['catch'](handleError(_0x21b661,null));};exports[_0xb2fb('0x5d')]=function(_0x4c61e3,_0x5b6b94){return db[_0xb2fb('0x41')][_0xb2fb('0x5d')]()['then'](respondWithResult(_0x5b6b94,null))[_0xb2fb('0x2f')](handleError(_0x5b6b94,null));};var interaction_log=require(_0xb2fb('0x17'))(_0xb2fb('0x5e'));exports['accept']=function(_0x4a3c5c,_0x1d21a1,_0x1f086c){var _0x2db8e5={'agent':{},'channel':_0xb2fb('0x5f')};if(_0x4a3c5c['body']['id']){delete _0x4a3c5c[_0xb2fb('0x5c')]['id'];}_0x4a3c5c['body'][_0xb2fb('0x60')]=!![];_0x4a3c5c[_0xb2fb('0x5c')][_0xb2fb('0x61')]=moment()[_0xb2fb('0x62')](_0xb2fb('0x63'));_0x4a3c5c['body']['UserId']=_0x4a3c5c[_0xb2fb('0x5c')]['UserId']||_0x4a3c5c[_0xb2fb('0x64')]['id'];_0x2db8e5[_0xb2fb('0x65')]['id']=_0x4a3c5c[_0xb2fb('0x5c')]['UserId'];return db['WhatsappMessage']['find']({'where':{'id':_0x4a3c5c[_0xb2fb('0x57')]['id'],'UserId':null}})[_0xb2fb('0x25')](handleEntityNotFound(_0x1d21a1,null))[_0xb2fb('0x25')](saveUpdates(_0x4a3c5c[_0xb2fb('0x5c')],null))[_0xb2fb('0x25')](function(_0xfb52e2){if(_0xfb52e2){_0x2db8e5[_0xb2fb('0x2c')]=_0xfb52e2[_0xb2fb('0x66')]({'plain':!![]});return db[_0xb2fb('0x67')][_0xb2fb('0x5a')]({'where':{'id':_0xfb52e2[_0xb2fb('0x68')]}});}return null;})['then'](handleEntityNotFound(_0x1d21a1,null))[_0xb2fb('0x25')](function(_0x4e56c6){if(_0x4e56c6){return _0x4e56c6['update']({'UserId':_0x4a3c5c['body'][_0xb2fb('0x69')],'read1stAt':_[_0xb2fb('0x6a')](_0x4e56c6[_0xb2fb('0x6b')])?moment()[_0xb2fb('0x62')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0xb2fb('0x25')](function(_0xe88b13){if(_0xe88b13){_0x2db8e5[_0xb2fb('0x6c')]=_0xe88b13[_0xb2fb('0x66')]({'plain':!![]});interaction_log[_0xb2fb('0x2d')](_0xb2fb('0x6d'),_0x4a3c5c['user']['id'],_0x4a3c5c[_0xb2fb('0x64')][_0xb2fb('0x3d')],_0x4a3c5c[_0xb2fb('0x64')][_0xb2fb('0x6e')],_0x2db8e5['interaction']['id'],_0x4a3c5c[_0xb2fb('0x5c')]?JSON['stringify'](_0x4a3c5c[_0xb2fb('0x5c')]):'null');return respondWithRpcPromise(_0xb2fb('0x6f'),'acceptMessage',_0x2db8e5);}return null;})[_0xb2fb('0x25')](function(_0x307109){var _0x302cbc=_0xb2fb('0x70')+_0x307109[_0xb2fb('0x2c')][_0xb2fb('0x71')];return db['sequelize']['query'](_0x302cbc,{'type':db[_0xb2fb('0x72')][_0xb2fb('0x73')][_0xb2fb('0x74')],'raw':!![]})['then'](function(_0x474de8){return _0x474de8;});})[_0xb2fb('0x25')](function(_0x17736d){if(_0x17736d){_0x2db8e5[_0xb2fb('0x2c')][_0xb2fb('0x75')]=_0x17736d[0x0];if(!_0x4a3c5c['body'][_0xb2fb('0x69')])return;return db[_0xb2fb('0x76')][_0xb2fb('0x5a')]({'where':{'id':_0x4a3c5c['body']['UserId'],'role':_0xb2fb('0x65')},'attributes':['id','name','fullname',_0xb2fb('0x77'),'internal'],'raw':!![]});}return null;})[_0xb2fb('0x25')](function(_0x4223b2){if(!_0x4223b2)return null;_0x2db8e5['message'][_0xb2fb('0x65')]=_0x4223b2;return _0x2db8e5;})[_0xb2fb('0x25')](function(_0x394866){if(_0x394866){if(_0x4a3c5c['body'][_0xb2fb('0x78')]){_0x2db8e5[_0xb2fb('0x2c')]['interface']=util[_0xb2fb('0x62')]('SIP/%s',_0x4a3c5c['user']['name']);_0x2db8e5[_0xb2fb('0x2c')]['channel']=_0x2db8e5['channel'];_0x2db8e5[_0xb2fb('0x2c')][_0xb2fb('0x79')]=_0x2db8e5[_0xb2fb('0x7a')];_0x2db8e5[_0xb2fb('0x2c')][_0xb2fb('0x7b')]=_0xb2fb('0x7c');return respondWithRpcPromise('EventManager',_0xb2fb('0x7d'),{'event':_0xb2fb('0x7e'),'message':_0x2db8e5[_0xb2fb('0x2c')]},client9002)['then'](function(){return _0x2db8e5;});}return _0x2db8e5;}return null;})[_0xb2fb('0x25')](respondWithResult(_0x1d21a1,null))[_0xb2fb('0x2f')](handleError(_0x1d21a1,null));};var interaction_log=require(_0xb2fb('0x17'))(_0xb2fb('0x5e'));exports[_0xb2fb('0x38')]=function(_0x4065ee,_0x46f0c1,_0x2e6d81){var _0x3ddcc9={'agent':{},'channel':_0xb2fb('0x5f')};if(_0x4065ee[_0xb2fb('0x5c')]['id']){delete _0x4065ee[_0xb2fb('0x5c')]['id'];}_0x4065ee[_0xb2fb('0x5c')]['UserId']=_0x4065ee[_0xb2fb('0x5c')]['UserId']||_0x4065ee[_0xb2fb('0x64')]['id'];_0x3ddcc9['agent']['id']=_0x4065ee['body'][_0xb2fb('0x69')];return db[_0xb2fb('0x41')][_0xb2fb('0x5a')]({'where':{'id':_0x4065ee[_0xb2fb('0x57')]['id'],'UserId':null}})[_0xb2fb('0x25')](handleEntityNotFound(_0x46f0c1,null))['then'](function(_0x3629a4){if(_0x3629a4){_0x3ddcc9['message']=_0x3629a4['get']({'plain':!![]});return db[_0xb2fb('0x67')][_0xb2fb('0x5a')]({'where':{'id':_0x3629a4[_0xb2fb('0x68')]}});}return null;})['then'](handleEntityNotFound(_0x46f0c1,null))[_0xb2fb('0x25')](function(_0x3a961d){if(_0x3a961d){_0x3ddcc9[_0xb2fb('0x6c')]=_0x3a961d[_0xb2fb('0x66')]({'plain':!![]});interaction_log[_0xb2fb('0x2d')](_0xb2fb('0x7f'),_0x4065ee['user']['id'],_0x4065ee['user']['name'],_0x4065ee['user'][_0xb2fb('0x6e')],_0x3ddcc9[_0xb2fb('0x6c')]['id'],_0x4065ee['body']?JSON['stringify'](_0x4065ee[_0xb2fb('0x5c')]):'null');return respondWithRpcPromise(_0xb2fb('0x80'),_0xb2fb('0x81'),_0x3ddcc9);}return null;})['then'](function(_0x50bf7e){var _0x65d24='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x50bf7e[_0xb2fb('0x2c')]['ContactId'];return db['sequelize'][_0xb2fb('0x46')](_0x65d24,{'type':db[_0xb2fb('0x72')][_0xb2fb('0x73')]['SELECT'],'raw':!![]})['then'](function(_0x10a611){return _0x10a611;});})[_0xb2fb('0x25')](function(_0x1ee313){if(_0x1ee313){_0x3ddcc9[_0xb2fb('0x2c')][_0xb2fb('0x75')]=_0x1ee313[0x0];if(!_0x4065ee[_0xb2fb('0x5c')][_0xb2fb('0x69')])return;return db['User'][_0xb2fb('0x5a')]({'where':{'id':_0x4065ee[_0xb2fb('0x5c')][_0xb2fb('0x69')],'role':_0xb2fb('0x65')},'attributes':['id','name','fullname','email',_0xb2fb('0x82')],'raw':!![]});}return null;})[_0xb2fb('0x25')](function(_0x4e24e7){if(!_0x4e24e7)return null;_0x3ddcc9[_0xb2fb('0x2c')][_0xb2fb('0x65')]=_0x4e24e7;return _0x3ddcc9;})[_0xb2fb('0x25')](function(_0x292153){if(_0x292153){_0x292153[_0xb2fb('0x2c')][_0xb2fb('0x83')]=util[_0xb2fb('0x62')](_0xb2fb('0x84'),_0x4065ee[_0xb2fb('0x64')][_0xb2fb('0x3d')]);_0x292153[_0xb2fb('0x2c')][_0xb2fb('0x7a')]=_0x3ddcc9[_0xb2fb('0x7a')];_0x292153[_0xb2fb('0x2c')][_0xb2fb('0x79')]=_0x3ddcc9[_0xb2fb('0x7a')];_0x292153[_0xb2fb('0x2c')][_0xb2fb('0x7b')]='reject';respondWithRpcPromise(_0xb2fb('0x7d'),_0xb2fb('0x7d'),{'event':'rejectmessage','message':_0x292153[_0xb2fb('0x2c')]},client9002);return _0x3ddcc9;}return null;})['then'](respondWithResult(_0x46f0c1,null))[_0xb2fb('0x2f')](handleError(_0x46f0c1,null));};exports[_0xb2fb('0x31')]=function(_0x17fb75,_0x14320b,_0x532a28){if(_0x17fb75[_0xb2fb('0x5c')]['id']){delete _0x17fb75['body']['id'];}var _0x20db8c;return db[_0xb2fb('0x41')][_0xb2fb('0x5a')]({'where':{'id':_0x17fb75['params']['id']}})[_0xb2fb('0x25')](handleEntityNotFound(_0x14320b,null))[_0xb2fb('0x25')](function(_0x21f688){if(_0x21f688){_0x20db8c=_0x21f688;return db[_0xb2fb('0x85')][_0xb2fb('0x5a')]({'where':{'id':_0x21f688['WhatsappAccountId']}});}})[_0xb2fb('0x25')](handleEntityNotFound(_0x14320b,null))[_0xb2fb('0x25')](function(_0x5335ad){if(_0x5335ad){logger[_0xb2fb('0x27')]('WhatsppMessage,\x20%s,\x20%s,\x20%s','status',_0xb2fb('0x86'),_0x5335ad[_0xb2fb('0x87')],util[_0xb2fb('0x88')](_0x17fb75['body'],{'showHidden':![],'depth':null}));switch(_0x5335ad[_0xb2fb('0x87')]){case _0xb2fb('0x89'):if(_0x17fb75[_0xb2fb('0x5c')][_0xb2fb('0x8a')]&&_0x17fb75['body'][_0xb2fb('0x8a')]===_0x20db8c[_0xb2fb('0x8b')]&&_0x17fb75[_0xb2fb('0x5c')]['MessageStatus']&&_0x17fb75[_0xb2fb('0x5c')][_0xb2fb('0x8c')]===_0xb2fb('0x60')){return _0x20db8c[_0xb2fb('0x3a')]({'read':!![]});}else{logger[_0xb2fb('0x29')](_0xb2fb('0x8d'),_0xb2fb('0x31'),_0xb2fb('0x89'),util[_0xb2fb('0x88')](_0x17fb75[_0xb2fb('0x5c')],{'showHidden':![],'depth':null}));}break;}return _0x20db8c;}})[_0xb2fb('0x25')](respondWithResult(_0x14320b,null))[_0xb2fb('0x2f')](handleError(_0x14320b,null));};
\ No newline at end of file
index 4bb96a1..74666e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbee3=['emit','hook','exports','../../mysqldb','save','update'];(function(_0x4da1f5,_0x288df6){var _0x332f4a=function(_0x3fff92){while(--_0x3fff92){_0x4da1f5['push'](_0x4da1f5['shift']());}};_0x332f4a(++_0x288df6);}(_0xbee3,0xd5));var _0x3bee=function(_0x589c4d,_0xd4a381){_0x589c4d=_0x589c4d-0x0;var _0xb1860=_0xbee3[_0x589c4d];return _0xb1860;};'use strict';var EventEmitter=require('events');var WhatsappMessage=require(_0x3bee('0x0'))['db']['WhatsappMessage'];var WhatsappMessageEvents=new EventEmitter();WhatsappMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x3bee('0x1'),'afterUpdate':_0x3bee('0x2'),'afterDestroy':'remove'};function emitEvent(_0x4b354b){return function(_0x1956c1,_0x1cf379,_0x507c6a){WhatsappMessageEvents[_0x3bee('0x3')](_0x4b354b+':'+_0x1956c1['id'],_0x1956c1);WhatsappMessageEvents[_0x3bee('0x3')](_0x4b354b,_0x1956c1);_0x507c6a(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];WhatsappMessage[_0x3bee('0x4')](e,emitEvent(event));}}module[_0x3bee('0x5')]=WhatsappMessageEvents;
\ No newline at end of file
+var _0xc36d=['../../mysqldb','WhatsappMessage','setMaxListeners','save','update','emit','hasOwnProperty','hook','events'];(function(_0x5d1bd4,_0x5ad706){var _0x330536=function(_0x47eda7){while(--_0x47eda7){_0x5d1bd4['push'](_0x5d1bd4['shift']());}};_0x330536(++_0x5ad706);}(_0xc36d,0x7d));var _0xdc36=function(_0x521929,_0x479be5){_0x521929=_0x521929-0x0;var _0x632436=_0xc36d[_0x521929];return _0x632436;};'use strict';var EventEmitter=require(_0xdc36('0x0'));var WhatsappMessage=require(_0xdc36('0x1'))['db'][_0xdc36('0x2')];var WhatsappMessageEvents=new EventEmitter();WhatsappMessageEvents[_0xdc36('0x3')](0x0);var events={'afterCreate':_0xdc36('0x4'),'afterUpdate':_0xdc36('0x5'),'afterDestroy':'remove'};function emitEvent(_0x42522b){return function(_0x3431f9,_0x53ac17,_0x18c8fe){WhatsappMessageEvents[_0xdc36('0x6')](_0x42522b+':'+_0x3431f9['id'],_0x3431f9);WhatsappMessageEvents[_0xdc36('0x6')](_0x42522b,_0x3431f9);_0x18c8fe(null);};}for(var e in events){if(events[_0xdc36('0x7')](e)){var event=events[e];WhatsappMessage[_0xdc36('0x8')](e,emitEvent(event));}}module['exports']=WhatsappMessageEvents;
\ No newline at end of file
index 4bf5de0..a4b94fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x684c=['body','FULLTEXT','get','direction','toLowerCase','secret','isNil','findOne','WhatsappInteractionId','then','update','createdAt','catch','WhatsappAccount','find','WhatsappAccountId','type','twilio','accountSid','phone','authToken','messages','whatsapp:','/api/whatsapp/messages/','/status?token=','token','sid','WhatsappMessage,\x20%s,\x20%s,\x20%s','inspect','error','afterCreate','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','finally','utf8mb4','utf8mb4_unicode_ci','lodash','util','api','moment','bluebird','request-promise','path','../../config/environment','./whatsappMessage.attributes','exports','define','WhatsappMessage','whatsapp_messages','messageId','fti_whatsapp_messages'];(function(_0x1944b7,_0x1724e7){var _0x2c16c7=function(_0x4f088f){while(--_0x4f088f){_0x1944b7['push'](_0x1944b7['shift']());}};_0x2c16c7(++_0x1724e7);}(_0x684c,0x1b3));var _0xc684=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x684c[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xc684('0x0'));var util=require(_0xc684('0x1'));var logger=require('../../config/logger')(_0xc684('0x2'));var moment=require(_0xc684('0x3'));var BPromise=require(_0xc684('0x4'));var rp=require(_0xc684('0x5'));var fs=require('fs');var path=require(_0xc684('0x6'));var rimraf=require('rimraf');var config=require(_0xc684('0x7'));var attributes=require(_0xc684('0x8'));module[_0xc684('0x9')]=function(_0x4487f6,_0x46cb0e){return _0x4487f6[_0xc684('0xa')](_0xc684('0xb'),attributes,{'tableName':_0xc684('0xc'),'paranoid':![],'indexes':[{'name':_0xc684('0xd'),'fields':[_0xc684('0xd')]},{'name':_0xc684('0xe'),'fields':[_0xc684('0xf')],'type':_0xc684('0x10')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x31cd11,_0x11e848,_0x180381){var _0x1736ac=_0x4487f6['models'];var _0x38a9cd=_0x31cd11[_0xc684('0x11')]({'plain':!![]});if(_0x38a9cd[_0xc684('0x12')][_0xc684('0x13')]()==='in'||_0x38a9cd[_0xc684('0x12')][_0xc684('0x13')]()==='out'&&!_0x38a9cd[_0xc684('0x14')]&&!_[_0xc684('0x15')](_0x38a9cd['UserId'])){_0x1736ac['WhatsappInteraction'][_0xc684('0x16')]({'where':{'id':_0x38a9cd[_0xc684('0x17')]}})[_0xc684('0x18')](function(_0x2ad4f1){if(_0x2ad4f1){_0x2ad4f1[_0xc684('0x19')]({'lastMsgAt':_0x38a9cd[_0xc684('0x1a')],'lastMsgDirection':_0x38a9cd['direction']['toLowerCase']()});}})[_0xc684('0x1b')](function(_0x599c93){console['error'](_0x599c93);});}if(_0x38a9cd['direction']==='out'&&!_0x38a9cd['secret']){var _0x264cb5;_0x1736ac[_0xc684('0x1c')][_0xc684('0x1d')]({'where':{'id':_0x38a9cd[_0xc684('0x1e')]},'raw':!![]})[_0xc684('0x18')](function(_0x4a14a2){_0x264cb5=_0x4a14a2;if(_0x264cb5&&_0x264cb5[_0xc684('0x1f')]){switch(_0x264cb5[_0xc684('0x1f')]){case'twilio':var _0x21273b=require(_0xc684('0x20'));if(_0x264cb5[_0xc684('0x21')]&&_0x264cb5['authToken']&&_0x264cb5[_0xc684('0x22')]){var _0x11a159=new _0x21273b(_0x264cb5[_0xc684('0x21')],_0x264cb5[_0xc684('0x23')]);_0x11a159[_0xc684('0x24')]['create']({'body':_0x38a9cd[_0xc684('0xf')],'to':_0xc684('0x25')+_0x38a9cd[_0xc684('0x22')],'from':'whatsapp:'+_0x264cb5['phone'],'statusCallback':_0x264cb5['remote']+_0xc684('0x26')+_0x38a9cd['id']+_0xc684('0x27')+_0x264cb5[_0xc684('0x28')]})['then'](function(_0x491b6a){if(_0x491b6a['sid']){return _0x31cd11['update']({'messageId':_0x491b6a[_0xc684('0x29')]});}})[_0xc684('0x1b')](function(_0x236f02){logger['error'](_0xc684('0x2a'),'afterCreate',_0xc684('0x20'),util[_0xc684('0x2b')](_0x236f02,{'showHidden':![],'depth':null}));});}else{logger[_0xc684('0x2c')]('WhatsappMessage,\x20%s,\x20%s,\x20%s',_0xc684('0x2d'),'twilio',_0xc684('0x2e'));}break;}}})[_0xc684('0x2f')](function(){_0x180381();});}else{_0x180381();}}},'charset':_0xc684('0x30'),'collate':_0xc684('0x31')});};
\ No newline at end of file
+var _0x66a7=['WhatsappInteractionId','then','update','createdAt','catch','error','out','WhatsappAccountId','type','twilio','accountSid','authToken','phone','messages','create','whatsapp:','remote','/api/whatsapp/messages/','token','sid','afterCreate','inspect','WhatsappMessage,\x20%s,\x20%s,\x20%s','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','sinch','baseUrl','/messages/','text','POST','Bearer\x20','statuses','message_id','finally','utf8mb4','utf8mb4_unicode_ci','lodash','api','moment','request-promise','path','rimraf','../../config/environment','./whatsappMessage.attributes','exports','WhatsappMessage','messageId','fti_whatsapp_messages','body','FULLTEXT','get','toLowerCase','direction','secret','isNil','WhatsappInteraction','findOne'];(function(_0x78130f,_0x2911eb){var _0x47d655=function(_0x5d48c0){while(--_0x5d48c0){_0x78130f['push'](_0x78130f['shift']());}};_0x47d655(++_0x2911eb);}(_0x66a7,0x1e3));var _0x766a=function(_0x492535,_0x46524a){_0x492535=_0x492535-0x0;var _0x256620=_0x66a7[_0x492535];return _0x256620;};'use strict';var _=require(_0x766a('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x766a('0x1'));var moment=require(_0x766a('0x2'));var BPromise=require('bluebird');var rp=require(_0x766a('0x3'));var fetch=require('node-fetch');var fs=require('fs');var path=require(_0x766a('0x4'));var rimraf=require(_0x766a('0x5'));var config=require(_0x766a('0x6'));var attributes=require(_0x766a('0x7'));module[_0x766a('0x8')]=function(_0x588363,_0x24a546){return _0x588363['define'](_0x766a('0x9'),attributes,{'tableName':'whatsapp_messages','paranoid':![],'indexes':[{'name':_0x766a('0xa'),'fields':[_0x766a('0xa')]},{'name':_0x766a('0xb'),'fields':[_0x766a('0xc')],'type':_0x766a('0xd')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x53cc62,_0x40c4d1,_0x2fa337){var _0x370a49=_0x588363['models'];var _0x40385a=_0x53cc62[_0x766a('0xe')]({'plain':!![]});if(_0x40385a['direction'][_0x766a('0xf')]()==='in'||_0x40385a[_0x766a('0x10')][_0x766a('0xf')]()==='out'&&!_0x40385a[_0x766a('0x11')]&&!_[_0x766a('0x12')](_0x40385a['UserId'])){_0x370a49[_0x766a('0x13')][_0x766a('0x14')]({'where':{'id':_0x40385a[_0x766a('0x15')]}})[_0x766a('0x16')](function(_0x39cdb0){if(_0x39cdb0){_0x39cdb0[_0x766a('0x17')]({'lastMsgAt':_0x40385a[_0x766a('0x18')],'lastMsgDirection':_0x40385a[_0x766a('0x10')]['toLowerCase']()});}})[_0x766a('0x19')](function(_0x28d8ad){console[_0x766a('0x1a')](_0x28d8ad);});}if(_0x40385a[_0x766a('0x10')]===_0x766a('0x1b')&&!_0x40385a[_0x766a('0x11')]){var _0x5a16f6;_0x370a49['WhatsappAccount']['find']({'where':{'id':_0x40385a[_0x766a('0x1c')]},'raw':!![]})[_0x766a('0x16')](function(_0x5c650f){_0x5a16f6=_0x5c650f;if(_0x5a16f6&&_0x5a16f6['type']){switch(_0x5a16f6[_0x766a('0x1d')]){case _0x766a('0x1e'):var _0x2c2e02=require(_0x766a('0x1e'));if(_0x5a16f6[_0x766a('0x1f')]&&_0x5a16f6[_0x766a('0x20')]&&_0x5a16f6[_0x766a('0x21')]){var _0x15723c=new _0x2c2e02(_0x5a16f6['accountSid'],_0x5a16f6['authToken']);_0x15723c[_0x766a('0x22')][_0x766a('0x23')]({'body':_0x40385a[_0x766a('0xc')],'to':'whatsapp:'+_0x40385a['phone'],'from':_0x766a('0x24')+_0x5a16f6[_0x766a('0x21')],'statusCallback':_0x5a16f6[_0x766a('0x25')]+_0x766a('0x26')+_0x40385a['id']+'/status?token='+_0x5a16f6[_0x766a('0x27')]})[_0x766a('0x16')](function(_0x2d5b59){if(_0x2d5b59[_0x766a('0x28')]){return _0x53cc62[_0x766a('0x17')]({'messageId':_0x2d5b59[_0x766a('0x28')]});}})[_0x766a('0x19')](function(_0xcfa116){logger[_0x766a('0x1a')]('WhatsappMessage,\x20%s,\x20%s,\x20%s',_0x766a('0x29'),_0x766a('0x1e'),util[_0x766a('0x2a')](_0xcfa116,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x766a('0x2b'),_0x766a('0x29'),_0x766a('0x1e'),_0x766a('0x2c'));}break;case _0x766a('0x2d'):var _0xdd1e7d=_0x5a16f6['accountSid'];var _0x2b7409=_0x5a16f6[_0x766a('0x20')];var _0x3ad14b=_0x5a16f6[_0x766a('0x2e')]+'/whatsapp/v1/'+_0xdd1e7d+_0x766a('0x2f');var _0x2f4a09={'to':[_0x40385a['phone']],'message':{'type':_0x766a('0x30'),'text':_0x40385a[_0x766a('0xc')]}};var _0x29c1af={'method':_0x766a('0x31'),'uri':_0x3ad14b,'headers':{'Authorization':_0x766a('0x32')+_0x2b7409,'Content-Type':'application/json'},'body':_0x2f4a09,'json':!![]};rp(_0x29c1af)[_0x766a('0x16')](function(_0x5bc71a){if(_0x5bc71a[_0x766a('0x33')][0x0][_0x766a('0x34')]){return _0x53cc62[_0x766a('0x17')]({'messageId':_0x5bc71a[_0x766a('0x33')][0x0][_0x766a('0x34')]});}})['catch'](function(_0x5ad17f){logger['err']('WhatsappMessage,\x20%s',_0x5ad17f);});break;}}})[_0x766a('0x35')](function(){_0x2fa337();});}else{_0x2fa337();}}},'charset':_0x766a('0x36'),'collate':_0x766a('0x37')});};
\ No newline at end of file
index 3aabb84..317e5ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f99=['../../config/logger','rpc','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','./whatsappMessage.socket','register','request','then','info','WhatsappMessage,\x20%s,\x20%s','WhatsappMessage,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','CreateWhatsappMessage','WhatsappMessage','create','options','raw','debug','stringify','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils'];(function(_0x1694f5,_0x49b7c3){var _0x5b4321=function(_0x58c183){while(--_0x58c183){_0x1694f5['push'](_0x1694f5['shift']());}};_0x5b4321(++_0x49b7c3);}(_0x0f99,0x157));var _0x90f9=function(_0x2f754f,_0x107173){_0x2f754f=_0x2f754f-0x0;var _0x5314bc=_0x0f99[_0x2f754f];return _0x5314bc;};'use strict';var _=require(_0x90f9('0x0'));var util=require(_0x90f9('0x1'));var moment=require(_0x90f9('0x2'));var BPromise=require(_0x90f9('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x90f9('0x4'));var db=require(_0x90f9('0x5'))['db'];var utils=require(_0x90f9('0x6'));var logger=require(_0x90f9('0x7'))(_0x90f9('0x8'));var config=require('../../config/environment');var jayson=require(_0x90f9('0x9'));var client=jayson[_0x90f9('0xa')]['http']({'port':0x232a});config[_0x90f9('0xb')]=_[_0x90f9('0xc')](config['redis'],{'host':_0x90f9('0xd'),'port':0x18eb});var socket=require(_0x90f9('0xe'))(new Redis(config['redis']));require(_0x90f9('0xf'))[_0x90f9('0x10')](socket);function respondWithRpcPromise(_0x1d5b4e,_0x4e98e0,_0x1df9d3){return new BPromise(function(_0x48fd5b,_0x220979){return client[_0x90f9('0x11')](_0x1d5b4e,_0x1df9d3)[_0x90f9('0x12')](function(_0x419d96){logger[_0x90f9('0x13')](_0x90f9('0x14'),_0x4e98e0,'request\x20sent');logger['debug'](_0x90f9('0x15'),_0x4e98e0,_0x90f9('0x16'),JSON['stringify'](_0x419d96));if(_0x419d96[_0x90f9('0x17')]){if(_0x419d96[_0x90f9('0x17')][_0x90f9('0x18')]===0x1f4){logger['error'](_0x90f9('0x14'),_0x4e98e0,_0x419d96[_0x90f9('0x17')][_0x90f9('0x19')]);return _0x220979(_0x419d96[_0x90f9('0x17')][_0x90f9('0x19')]);}logger['error']('WhatsappMessage,\x20%s,\x20%s',_0x4e98e0,_0x419d96['error'][_0x90f9('0x19')]);return _0x48fd5b(_0x419d96[_0x90f9('0x17')][_0x90f9('0x19')]);}else{logger[_0x90f9('0x13')](_0x90f9('0x14'),_0x4e98e0,_0x90f9('0x16'));_0x48fd5b(_0x419d96[_0x90f9('0x1a')][_0x90f9('0x19')]);}})[_0x90f9('0x1b')](function(_0x40ed52){logger[_0x90f9('0x17')](_0x90f9('0x14'),_0x4e98e0,_0x40ed52);_0x220979(_0x40ed52);});});}exports[_0x90f9('0x1c')]=function(_0x583042){var _0x4bad4a=this;return new Promise(function(_0x2090b6,_0x225c4e){return db[_0x90f9('0x1d')][_0x90f9('0x1e')](_0x583042['body'],{'raw':_0x583042['options']?_0x583042[_0x90f9('0x1f')][_0x90f9('0x20')]===undefined?!![]:![]:!![]})[_0x90f9('0x12')](function(_0x2a3b57){logger['info'](_0x90f9('0x1c'),_0x583042);logger[_0x90f9('0x21')](_0x90f9('0x1c'),_0x583042,JSON[_0x90f9('0x22')](_0x2a3b57));_0x2090b6(_0x2a3b57);})[_0x90f9('0x1b')](function(_0x1bad34){logger[_0x90f9('0x17')](_0x90f9('0x1c'),_0x1bad34[_0x90f9('0x19')],_0x583042);_0x225c4e(_0x4bad4a[_0x90f9('0x17')](0x1f4,_0x1bad34[_0x90f9('0x19')]));});});};
\ No newline at end of file
+var _0xfc3d=['randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','./whatsappMessage.socket','request','info','WhatsappMessage,\x20%s,\x20%s','request\x20sent','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','WhatsappMessage','body','options','then','CreateWhatsappMessage','lodash','moment'];(function(_0x23e7c1,_0x35110c){var _0x1add43=function(_0x238918){while(--_0x238918){_0x23e7c1['push'](_0x23e7c1['shift']());}};_0x1add43(++_0x35110c);}(_0xfc3d,0x115));var _0xdfc3=function(_0x55a032,_0x3fd38a){_0x55a032=_0x55a032-0x0;var _0x453e8c=_0xfc3d[_0x55a032];return _0x453e8c;};'use strict';var _=require(_0xdfc3('0x0'));var util=require('util');var moment=require(_0xdfc3('0x1'));var BPromise=require('bluebird');var rs=require(_0xdfc3('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xdfc3('0x3'))['db'];var utils=require(_0xdfc3('0x4'));var logger=require(_0xdfc3('0x5'))(_0xdfc3('0x6'));var config=require(_0xdfc3('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xdfc3('0x8')][_0xdfc3('0x9')]({'port':0x232a});config[_0xdfc3('0xa')]=_[_0xdfc3('0xb')](config[_0xdfc3('0xa')],{'host':_0xdfc3('0xc'),'port':0x18eb});var socket=require(_0xdfc3('0xd'))(new Redis(config[_0xdfc3('0xa')]));require(_0xdfc3('0xe'))['register'](socket);function respondWithRpcPromise(_0x3bdd58,_0xa1ed1d,_0x50d0c7){return new BPromise(function(_0x48dfd9,_0x556203){return client[_0xdfc3('0xf')](_0x3bdd58,_0x50d0c7)['then'](function(_0x1de3a0){logger[_0xdfc3('0x10')](_0xdfc3('0x11'),_0xa1ed1d,_0xdfc3('0x12'));logger[_0xdfc3('0x13')](_0xdfc3('0x14'),_0xa1ed1d,_0xdfc3('0x12'),JSON[_0xdfc3('0x15')](_0x1de3a0));if(_0x1de3a0[_0xdfc3('0x16')]){if(_0x1de3a0[_0xdfc3('0x16')]['code']===0x1f4){logger[_0xdfc3('0x16')]('WhatsappMessage,\x20%s,\x20%s',_0xa1ed1d,_0x1de3a0[_0xdfc3('0x16')][_0xdfc3('0x17')]);return _0x556203(_0x1de3a0[_0xdfc3('0x16')][_0xdfc3('0x17')]);}logger[_0xdfc3('0x16')](_0xdfc3('0x11'),_0xa1ed1d,_0x1de3a0['error'][_0xdfc3('0x17')]);return _0x48dfd9(_0x1de3a0['error']['message']);}else{logger[_0xdfc3('0x10')](_0xdfc3('0x11'),_0xa1ed1d,_0xdfc3('0x12'));_0x48dfd9(_0x1de3a0[_0xdfc3('0x18')][_0xdfc3('0x17')]);}})[_0xdfc3('0x19')](function(_0x439e88){logger[_0xdfc3('0x16')](_0xdfc3('0x11'),_0xa1ed1d,_0x439e88);_0x556203(_0x439e88);});});}exports['CreateWhatsappMessage']=function(_0x24c494){var _0x3417e3=this;return new Promise(function(_0x13b563,_0x429bb6){return db[_0xdfc3('0x1a')]['create'](_0x24c494[_0xdfc3('0x1b')],{'raw':_0x24c494[_0xdfc3('0x1c')]?_0x24c494[_0xdfc3('0x1c')]['raw']===undefined?!![]:![]:!![]})[_0xdfc3('0x1d')](function(_0x3afc8d){logger[_0xdfc3('0x10')](_0xdfc3('0x1e'),_0x24c494);logger['debug'](_0xdfc3('0x1e'),_0x24c494,JSON[_0xdfc3('0x15')](_0x3afc8d));_0x13b563(_0x3afc8d);})[_0xdfc3('0x19')](function(_0x5c4442){logger[_0xdfc3('0x16')]('CreateWhatsappMessage',_0x5c4442[_0xdfc3('0x17')],_0x24c494);_0x429bb6(_0x3417e3[_0xdfc3('0x16')](0x1f4,_0x5c4442['message']));});});};
\ No newline at end of file
index 031b803..a9304de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb80b=['./whatsappMessage.events','register'];(function(_0xf1eda0,_0x4084e8){var _0xc6b93c=function(_0x1da9af){while(--_0x1da9af){_0xf1eda0['push'](_0xf1eda0['shift']());}};_0xc6b93c(++_0x4084e8);}(_0xb80b,0x1e0));var _0xbb80=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xb80b[_0x122ef9];return _0x42fba0;};'use strict';var WhatsappMessageEvents=require(_0xbb80('0x0'));var events=['save','remove','update'];function createListener(_0x7d7ad0,_0x1f9bfc){return function(_0x5217fc){_0x1f9bfc['emit'](_0x7d7ad0,_0x5217fc);};}function removeListener(_0x37df78,_0x5dc02c){return function(){WhatsappMessageEvents['removeListener'](_0x37df78,_0x5dc02c);};}exports[_0xbb80('0x1')]=function(_0x44302b){for(var _0x84293e=0x0,_0x1d42f7=events['length'];_0x84293e<_0x1d42f7;_0x84293e++){var _0x22e7ab=events[_0x84293e];var _0x3343e9=createListener('whatsappMessage:'+_0x22e7ab,_0x44302b);WhatsappMessageEvents['on'](_0x22e7ab,_0x3343e9);}};
\ No newline at end of file
+var _0xa804=['whatsappMessage:','./whatsappMessage.events','save','remove','update','emit','removeListener','register'];(function(_0x55dd60,_0x479fb7){var _0x505abb=function(_0x5429c9){while(--_0x5429c9){_0x55dd60['push'](_0x55dd60['shift']());}};_0x505abb(++_0x479fb7);}(_0xa804,0xa1));var _0x4a80=function(_0x5cae35,_0x2cde15){_0x5cae35=_0x5cae35-0x0;var _0x11e28e=_0xa804[_0x5cae35];return _0x11e28e;};'use strict';var WhatsappMessageEvents=require(_0x4a80('0x0'));var events=[_0x4a80('0x1'),_0x4a80('0x2'),_0x4a80('0x3')];function createListener(_0x539681,_0x2ff4dd){return function(_0x3ed62a){_0x2ff4dd[_0x4a80('0x4')](_0x539681,_0x3ed62a);};}function removeListener(_0x5e145f,_0x1250db){return function(){WhatsappMessageEvents[_0x4a80('0x5')](_0x5e145f,_0x1250db);};}exports[_0x4a80('0x6')]=function(_0x2e2c6e){for(var _0x12dd58=0x0,_0x272d21=events['length'];_0x12dd58<_0x272d21;_0x12dd58++){var _0x4301d0=events[_0x12dd58];var _0x3a7c90=createListener(_0x4a80('0x7')+_0x4301d0,_0x2e2c6e);WhatsappMessageEvents['on'](_0x4301d0,_0x3a7c90);}};
\ No newline at end of file
index f6d296f..9688879 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6fc2=['util','path','express','Router','../../config/environment','./whatsappQueue.controller','isAuthenticated','index','get','/describe','describe','show','getMembers','/:id/teams','getTeams','/:id/users','getAgents','post','create','addAgents','put','/:id','update','delete','removeTeams','removeAgents','exports','multer'];(function(_0x16a637,_0x5eb627){var _0x25126d=function(_0x54e016){while(--_0x54e016){_0x16a637['push'](_0x16a637['shift']());}};_0x25126d(++_0x5eb627);}(_0x6fc2,0x117));var _0x26fc=function(_0x12fc8d,_0x19ee33){_0x12fc8d=_0x12fc8d-0x0;var _0x3f9d04=_0x6fc2[_0x12fc8d];return _0x3f9d04;};'use strict';var multer=require(_0x26fc('0x0'));var util=require(_0x26fc('0x1'));var path=require(_0x26fc('0x2'));var timeout=require('connect-timeout');var express=require(_0x26fc('0x3'));var router=express[_0x26fc('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x26fc('0x5'));var controller=require(_0x26fc('0x6'));router['get']('/',auth[_0x26fc('0x7')](),controller[_0x26fc('0x8')]);router[_0x26fc('0x9')](_0x26fc('0xa'),auth['isAuthenticated'](),controller[_0x26fc('0xb')]);router['get']('/:id',auth[_0x26fc('0x7')](),controller[_0x26fc('0xc')]);router[_0x26fc('0x9')]('/:id/members',auth[_0x26fc('0x7')](),controller[_0x26fc('0xd')]);router[_0x26fc('0x9')](_0x26fc('0xe'),auth[_0x26fc('0x7')](),controller[_0x26fc('0xf')]);router[_0x26fc('0x9')](_0x26fc('0x10'),auth[_0x26fc('0x7')](),controller[_0x26fc('0x11')]);router[_0x26fc('0x12')]('/',auth[_0x26fc('0x7')](),controller[_0x26fc('0x13')]);router[_0x26fc('0x12')](_0x26fc('0xe'),auth[_0x26fc('0x7')](),controller['addTeams']);router[_0x26fc('0x12')](_0x26fc('0x10'),auth[_0x26fc('0x7')](),controller[_0x26fc('0x14')]);router[_0x26fc('0x15')](_0x26fc('0x16'),auth[_0x26fc('0x7')](),controller[_0x26fc('0x17')]);router[_0x26fc('0x18')]('/:id',auth[_0x26fc('0x7')](),controller['destroy']);router[_0x26fc('0x18')](_0x26fc('0xe'),auth[_0x26fc('0x7')](),controller[_0x26fc('0x19')]);router['delete'](_0x26fc('0x10'),auth[_0x26fc('0x7')](),controller[_0x26fc('0x1a')]);module[_0x26fc('0x1b')]=router;
\ No newline at end of file
+var _0xe685=['create','post','addAgents','put','update','/:id','destroy','delete','removeAgents','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/describe','isAuthenticated','describe','getMembers','/:id/teams','getTeams','/:id/users','getAgents'];(function(_0x456d6d,_0x469717){var _0x4363d6=function(_0x51f423){while(--_0x51f423){_0x456d6d['push'](_0x456d6d['shift']());}};_0x4363d6(++_0x469717);}(_0xe685,0x1bd));var _0x5e68=function(_0x129303,_0x136ecd){_0x129303=_0x129303-0x0;var _0x54c317=_0xe685[_0x129303];return _0x54c317;};'use strict';var multer=require(_0x5e68('0x0'));var util=require(_0x5e68('0x1'));var path=require(_0x5e68('0x2'));var timeout=require(_0x5e68('0x3'));var express=require(_0x5e68('0x4'));var router=express['Router']();var fs_extra=require(_0x5e68('0x5'));var auth=require(_0x5e68('0x6'));var interaction=require(_0x5e68('0x7'));var config=require(_0x5e68('0x8'));var controller=require('./whatsappQueue.controller');router[_0x5e68('0x9')]('/',auth['isAuthenticated'](),controller[_0x5e68('0xa')]);router['get'](_0x5e68('0xb'),auth[_0x5e68('0xc')](),controller[_0x5e68('0xd')]);router[_0x5e68('0x9')]('/:id',auth[_0x5e68('0xc')](),controller['show']);router[_0x5e68('0x9')]('/:id/members',auth[_0x5e68('0xc')](),controller[_0x5e68('0xe')]);router[_0x5e68('0x9')](_0x5e68('0xf'),auth[_0x5e68('0xc')](),controller[_0x5e68('0x10')]);router[_0x5e68('0x9')](_0x5e68('0x11'),auth[_0x5e68('0xc')](),controller[_0x5e68('0x12')]);router['post']('/',auth[_0x5e68('0xc')](),controller[_0x5e68('0x13')]);router[_0x5e68('0x14')](_0x5e68('0xf'),auth[_0x5e68('0xc')](),controller['addTeams']);router['post'](_0x5e68('0x11'),auth[_0x5e68('0xc')](),controller[_0x5e68('0x15')]);router[_0x5e68('0x16')]('/:id',auth[_0x5e68('0xc')](),controller[_0x5e68('0x17')]);router['delete'](_0x5e68('0x18'),auth[_0x5e68('0xc')](),controller[_0x5e68('0x19')]);router[_0x5e68('0x1a')]('/:id/teams',auth['isAuthenticated'](),controller['removeTeams']);router[_0x5e68('0x1a')](_0x5e68('0x11'),auth[_0x5e68('0xc')](),controller[_0x5e68('0x1b')]);module[_0x5e68('0x1c')]=router;
\ No newline at end of file
index 3e949bf..d55485f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b05=['STRING','name','ENUM','beepall','roundrobin','sequelize','exports'];(function(_0x1ecb98,_0x1c24d3){var _0x7c44ea=function(_0x33b486){while(--_0x33b486){_0x1ecb98['push'](_0x1ecb98['shift']());}};_0x7c44ea(++_0x1c24d3);}(_0x7b05,0x91));var _0x57b0=function(_0x2eac4f,_0x5173f9){_0x2eac4f=_0x2eac4f-0x0;var _0x58f73b=_0x7b05[_0x2eac4f];return _0x58f73b;};'use strict';var Sequelize=require(_0x57b0('0x0'));module[_0x57b0('0x1')]={'name':{'type':Sequelize[_0x57b0('0x2')],'unique':_0x57b0('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x57b0('0x4')]('rrmemory',_0x57b0('0x5'),_0x57b0('0x6'))},'description':{'type':Sequelize[_0x57b0('0x2')]}};
\ No newline at end of file
+var _0x9099=['ENUM','rrmemory','beepall','roundrobin','sequelize','STRING','name','INTEGER'];(function(_0x1d7037,_0x57dd95){var _0x4d6568=function(_0x5c64c5){while(--_0x5c64c5){_0x1d7037['push'](_0x1d7037['shift']());}};_0x4d6568(++_0x57dd95);}(_0x9099,0x1ac));var _0x9909=function(_0x602ca8,_0x568e82){_0x602ca8=_0x602ca8-0x0;var _0x26e8ab=_0x9099[_0x602ca8];return _0x26e8ab;};'use strict';var Sequelize=require(_0x9909('0x0'));module['exports']={'name':{'type':Sequelize[_0x9909('0x1')],'unique':_0x9909('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'timeout':{'type':Sequelize[_0x9909('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x9909('0x4')](_0x9909('0x5'),_0x9909('0x6'),_0x9909('0x7'))},'description':{'type':Sequelize[_0x9909('0x1')]}};
\ No newline at end of file
index 4969bde..3fe6099 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbe56=['count','offset','limit','set','Content-Range','apply','update','destroy','then','get','WhatsappQueues','UserProfileResource','sendStatus','error','stack','name','send','map','WhatsappQueue','rawAttributes','fieldName','type','key','query','keys','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','options','includeAll','include','findAll','rows','catch','show','params','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','body','describe','getMembers','UserWhatsappQueue','User','agent','whatsappPause','format','SIP','createdAt','updatedAt','Team','getTeams','addTeams','ids','online','voicePause','interface','Agents','sequelize','transaction','each','emit','removeTeams','select','field','team_has_whatsapp_queues','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','ut.UserId\x20=\x20?','push','toString','QueryTypes','TeamId','includes','all','union','isEmpty','removeAgents','forEach','userWhatsappQueue:remove','addAgents','omit','spread','isArray','getAgents','findOne','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','desk.js','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./whatsappQueue.socket','register','status','json','undefined'];(function(_0x4f8c2d,_0x569a6c){var _0x402f81=function(_0x32f891){while(--_0x32f891){_0x4f8c2d['push'](_0x4f8c2d['shift']());}};_0x402f81(++_0x569a6c);}(_0xbe56,0x1ea));var _0x6be5=function(_0x51a682,_0x47c32a){_0x51a682=_0x51a682-0x0;var _0x5a7a00=_0xbe56[_0x51a682];return _0x5a7a00;};'use strict';var emlformat=require(_0x6be5('0x0'));var rimraf=require(_0x6be5('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x6be5('0x2'));var rp=require(_0x6be5('0x3'));var moment=require('moment');var BPromise=require(_0x6be5('0x4'));var Mustache=require(_0x6be5('0x5'));var util=require(_0x6be5('0x6'));var path=require('path');var sox=require(_0x6be5('0x7'));var csv=require(_0x6be5('0x8'));var ejs=require(_0x6be5('0x9'));var fs=require('fs');var fs_extra=require(_0x6be5('0xa'));var _=require(_0x6be5('0xb'));var squel=require(_0x6be5('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x6be5('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x6be5('0xe'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x6be5('0xf'));var hardwareService=require(_0x6be5('0x10'));var logger=require(_0x6be5('0x11'))(_0x6be5('0x12'));var utils=require('../../config/utils');var config=require(_0x6be5('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x6be5('0x14'))['db'];config['redis']=_[_0x6be5('0x15')](config[_0x6be5('0x16')],{'host':_0x6be5('0x17'),'port':0x18eb});var socket=require(_0x6be5('0x18'))(new Redis(config['redis']));require(_0x6be5('0x19'))[_0x6be5('0x1a')](socket);function respondWithStatusCode(_0x20832b,_0x227a67){_0x227a67=_0x227a67||0xcc;return function(_0x10deee){if(_0x10deee){return _0x20832b['sendStatus'](_0x227a67);}return _0x20832b[_0x6be5('0x1b')](_0x227a67)['end']();};}function respondWithResult(_0x4221b5,_0x27b55a){_0x27b55a=_0x27b55a||0xc8;return function(_0x1130bd){if(_0x1130bd){return _0x4221b5[_0x6be5('0x1b')](_0x27b55a)[_0x6be5('0x1c')](_0x1130bd);}};}function respondWithFilteredResult(_0x41e525,_0xca67e){return function(_0x2d4b38){if(_0x2d4b38){var _0x5952b1=typeof _0xca67e['offset']===_0x6be5('0x1d')&&typeof _0xca67e['limit']===_0x6be5('0x1d');var _0x24583f=_0x2d4b38[_0x6be5('0x1e')];var _0x207700=_0x5952b1?0x0:_0xca67e[_0x6be5('0x1f')];var _0x346c06=_0x5952b1?_0x2d4b38[_0x6be5('0x1e')]:_0xca67e[_0x6be5('0x1f')]+_0xca67e[_0x6be5('0x20')];var _0x5aa1a6;if(_0x346c06>=_0x24583f){_0x346c06=_0x24583f;_0x5aa1a6=0xc8;}else{_0x5aa1a6=0xce;}_0x41e525['status'](_0x5aa1a6);return _0x41e525[_0x6be5('0x21')](_0x6be5('0x22'),_0x207700+'-'+_0x346c06+'/'+_0x24583f)[_0x6be5('0x1c')](_0x2d4b38);}return null;};}function patchUpdates(_0x34c29d){return function(_0x349561){try{jsonpatch[_0x6be5('0x23')](_0x349561,_0x34c29d,!![]);}catch(_0x438010){return BPromise['reject'](_0x438010);}return _0x349561['save']();};}function saveUpdates(_0x495a0,_0x3f2252){return function(_0x46390d){if(_0x46390d){return _0x46390d[_0x6be5('0x24')](_0x495a0)['then'](function(_0x1d5e0d){return _0x1d5e0d;});}return null;};}function removeEntity(_0x3c0bfb,_0xadc375){return function(_0x308116){if(_0x308116){return _0x308116[_0x6be5('0x25')]()[_0x6be5('0x26')](function(){var _0x5b418b=_0x308116[_0x6be5('0x27')]({'plain':!![]});var _0x19aef6=_0x6be5('0x28');return db[_0x6be5('0x29')][_0x6be5('0x25')]({'where':{'type':_0x19aef6,'resourceId':_0x5b418b['id']}})['then'](function(){return _0x308116;});})[_0x6be5('0x26')](function(){_0x3c0bfb[_0x6be5('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x174f50,_0x3f7264){return function(_0x1efae9){if(!_0x1efae9){_0x174f50[_0x6be5('0x2a')](0x194);}return _0x1efae9;};}function handleError(_0x27aa1c,_0xc6d28f){_0xc6d28f=_0xc6d28f||0x1f4;return function(_0x182789){logger[_0x6be5('0x2b')](_0x182789[_0x6be5('0x2c')]);if(_0x182789['name']){delete _0x182789[_0x6be5('0x2d')];}_0x27aa1c['status'](_0xc6d28f)[_0x6be5('0x2e')](_0x182789);};}exports['index']=function(_0x1d6671,_0x3bce62){var _0x5acd6a={},_0x52b620={},_0x468dfe={'count':0x0,'rows':[]};var _0x20057d=_[_0x6be5('0x2f')](db[_0x6be5('0x30')][_0x6be5('0x31')],function(_0x2fa41f){return{'name':_0x2fa41f[_0x6be5('0x32')],'type':_0x2fa41f[_0x6be5('0x33')][_0x6be5('0x34')]};});_0x52b620['model']=_['map'](_0x20057d,_0x6be5('0x2d'));_0x52b620[_0x6be5('0x35')]=_[_0x6be5('0x36')](_0x1d6671['query']);_0x52b620['filters']=_[_0x6be5('0x37')](_0x52b620[_0x6be5('0x38')],_0x52b620['query']);_0x5acd6a['attributes']=_[_0x6be5('0x37')](_0x52b620[_0x6be5('0x38')],qs['fields'](_0x1d6671[_0x6be5('0x35')][_0x6be5('0x39')]));_0x5acd6a['attributes']=_0x5acd6a[_0x6be5('0x3a')][_0x6be5('0x3b')]?_0x5acd6a['attributes']:_0x52b620[_0x6be5('0x38')];if(!_0x1d6671[_0x6be5('0x35')][_0x6be5('0x3c')](_0x6be5('0x3d'))){_0x5acd6a['limit']=qs[_0x6be5('0x20')](_0x1d6671[_0x6be5('0x35')][_0x6be5('0x20')]);_0x5acd6a[_0x6be5('0x1f')]=qs[_0x6be5('0x1f')](_0x1d6671[_0x6be5('0x35')]['offset']);}_0x5acd6a[_0x6be5('0x3e')]=qs[_0x6be5('0x3f')](_0x1d6671[_0x6be5('0x35')]['sort']);_0x5acd6a[_0x6be5('0x40')]=qs[_0x6be5('0x41')](_[_0x6be5('0x42')](_0x1d6671['query'],_0x52b620['filters']),_0x20057d);if(_0x1d6671[_0x6be5('0x35')][_0x6be5('0x43')]){_0x5acd6a[_0x6be5('0x40')]=_[_0x6be5('0x44')](_0x5acd6a['where'],{'$or':_[_0x6be5('0x2f')](_0x20057d,function(_0x1b05d5){if(_0x1b05d5[_0x6be5('0x33')]!=='VIRTUAL'){var _0x38230b={};_0x38230b[_0x1b05d5[_0x6be5('0x2d')]]={'$like':'%'+_0x1d6671[_0x6be5('0x35')][_0x6be5('0x43')]+'%'};return _0x38230b;}})});}_0x5acd6a=_[_0x6be5('0x44')]({},_0x5acd6a,_0x1d6671[_0x6be5('0x45')]);var _0x426d4b={'where':_0x5acd6a[_0x6be5('0x40')]};return db[_0x6be5('0x30')][_0x6be5('0x1e')](_0x426d4b)['then'](function(_0xe6ce14){_0x468dfe['count']=_0xe6ce14;if(_0x1d6671[_0x6be5('0x35')][_0x6be5('0x46')]){_0x5acd6a[_0x6be5('0x47')]=[{'all':!![]}];}return db[_0x6be5('0x30')][_0x6be5('0x48')](_0x5acd6a);})[_0x6be5('0x26')](function(_0x313ea7){_0x468dfe[_0x6be5('0x49')]=_0x313ea7;return _0x468dfe;})['then'](respondWithFilteredResult(_0x3bce62,_0x5acd6a))[_0x6be5('0x4a')](handleError(_0x3bce62,null));};exports[_0x6be5('0x4b')]=function(_0x2b84e5,_0x4e2dd8){var _0x5b2c7f={'raw':!![],'where':{'id':_0x2b84e5[_0x6be5('0x4c')]['id']}},_0x38d1f3={};_0x38d1f3[_0x6be5('0x38')]=_[_0x6be5('0x36')](db[_0x6be5('0x30')][_0x6be5('0x31')]);_0x38d1f3[_0x6be5('0x35')]=_[_0x6be5('0x36')](_0x2b84e5[_0x6be5('0x35')]);_0x38d1f3[_0x6be5('0x41')]=_[_0x6be5('0x37')](_0x38d1f3[_0x6be5('0x38')],_0x38d1f3[_0x6be5('0x35')]);_0x5b2c7f['attributes']=_[_0x6be5('0x37')](_0x38d1f3['model'],qs[_0x6be5('0x39')](_0x2b84e5[_0x6be5('0x35')][_0x6be5('0x39')]));_0x5b2c7f[_0x6be5('0x3a')]=_0x5b2c7f[_0x6be5('0x3a')][_0x6be5('0x3b')]?_0x5b2c7f['attributes']:_0x38d1f3[_0x6be5('0x38')];if(_0x2b84e5[_0x6be5('0x35')]['includeAll']){_0x5b2c7f['include']=[{'all':!![]}];}_0x5b2c7f=_[_0x6be5('0x44')]({},_0x5b2c7f,_0x2b84e5[_0x6be5('0x45')]);return db['WhatsappQueue'][_0x6be5('0x4d')](_0x5b2c7f)[_0x6be5('0x26')](handleEntityNotFound(_0x4e2dd8,null))[_0x6be5('0x26')](respondWithResult(_0x4e2dd8,null))['catch'](handleError(_0x4e2dd8,null));};exports[_0x6be5('0x4e')]=function(_0x19d41e,_0xc95430){return db['WhatsappQueue'][_0x6be5('0x4e')](_0x19d41e['body'],{})[_0x6be5('0x26')](function(_0x1bb816){var _0x6cb967=_0x19d41e[_0x6be5('0x4f')][_0x6be5('0x27')]({'plain':!![]});if(!_0x6cb967)throw new Error(_0x6be5('0x50'));if(_0x6cb967['role']===_0x6be5('0x4f')){var _0x294be2=_0x1bb816[_0x6be5('0x27')]({'plain':!![]});var _0x266304=_0x6be5('0x28');return db[_0x6be5('0x51')][_0x6be5('0x4d')]({'where':{'name':_0x266304,'userProfileId':_0x6cb967[_0x6be5('0x52')]},'raw':!![]})[_0x6be5('0x26')](function(_0x4a133a){if(_0x4a133a&&_0x4a133a['autoAssociation']===0x0){return db[_0x6be5('0x29')]['create']({'name':_0x294be2['name'],'resourceId':_0x294be2['id'],'type':_0x4a133a[_0x6be5('0x2d')],'sectionId':_0x4a133a['id']},{})[_0x6be5('0x26')](function(){return _0x1bb816;});}else{return _0x1bb816;}})[_0x6be5('0x4a')](function(_0x37ccc7){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x37ccc7);throw _0x37ccc7;});}return _0x1bb816;})[_0x6be5('0x26')](respondWithResult(_0xc95430,0xc9))[_0x6be5('0x4a')](handleError(_0xc95430,null));};exports[_0x6be5('0x24')]=function(_0x22cd83,_0x3901d0){if(_0x22cd83['body']['id']){delete _0x22cd83[_0x6be5('0x53')]['id'];}return db[_0x6be5('0x30')][_0x6be5('0x4d')]({'where':{'id':_0x22cd83[_0x6be5('0x4c')]['id']}})['then'](handleEntityNotFound(_0x3901d0,null))[_0x6be5('0x26')](saveUpdates(_0x22cd83[_0x6be5('0x53')],null))[_0x6be5('0x26')](respondWithResult(_0x3901d0,null))['catch'](handleError(_0x3901d0,null));};exports[_0x6be5('0x25')]=function(_0x4dcd9f,_0x28d9fe){return db[_0x6be5('0x30')][_0x6be5('0x4d')]({'where':{'id':_0x4dcd9f['params']['id']}})[_0x6be5('0x26')](handleEntityNotFound(_0x28d9fe,null))[_0x6be5('0x26')](removeEntity(_0x28d9fe,null))[_0x6be5('0x4a')](handleError(_0x28d9fe,null));};exports[_0x6be5('0x54')]=function(_0x32dfde,_0x3e368e){return db[_0x6be5('0x30')][_0x6be5('0x54')]()[_0x6be5('0x26')](respondWithResult(_0x3e368e,null))[_0x6be5('0x4a')](handleError(_0x3e368e,null));};exports[_0x6be5('0x55')]=function(_0x392b74,_0x1379ae,_0x532567){var _0x4dcb6c={'raw':!![],'where':{}},_0x4c80c5={},_0x51b15f;return db[_0x6be5('0x30')]['findOne']({'where':{'id':_0x392b74[_0x6be5('0x4c')]['id']}})['then'](handleEntityNotFound(_0x1379ae,null))[_0x6be5('0x26')](function(_0x42c2bb){if(_0x42c2bb){_0x51b15f=_0x42c2bb[_0x6be5('0x27')]({'plain':!![]});_0x4c80c5['model']=_[_0x6be5('0x36')](db[_0x6be5('0x56')]['rawAttributes']);_0x4c80c5[_0x6be5('0x35')]=_['keys'](_0x392b74[_0x6be5('0x35')]);_0x4c80c5[_0x6be5('0x41')]=_[_0x6be5('0x37')](_0x4c80c5[_0x6be5('0x38')],_0x4c80c5[_0x6be5('0x35')]);_0x4dcb6c[_0x6be5('0x3a')]=_[_0x6be5('0x37')](_0x4c80c5[_0x6be5('0x38')],qs[_0x6be5('0x39')](_0x392b74['query'][_0x6be5('0x39')]));_0x4dcb6c[_0x6be5('0x3a')]=_0x4dcb6c[_0x6be5('0x3a')][_0x6be5('0x3b')]?_0x4dcb6c[_0x6be5('0x3a')]:_0x4c80c5[_0x6be5('0x38')];if(!_0x392b74['query'][_0x6be5('0x3c')](_0x6be5('0x3d'))){_0x4dcb6c[_0x6be5('0x20')]=qs[_0x6be5('0x20')](_0x392b74['query'][_0x6be5('0x20')]);_0x4dcb6c[_0x6be5('0x1f')]=qs[_0x6be5('0x1f')](_0x392b74[_0x6be5('0x35')][_0x6be5('0x1f')]);}_0x4dcb6c['order']=qs[_0x6be5('0x3f')](_0x392b74[_0x6be5('0x35')][_0x6be5('0x3f')]);_0x4dcb6c[_0x6be5('0x40')]=qs[_0x6be5('0x41')](_[_0x6be5('0x42')](_0x392b74[_0x6be5('0x35')],_0x4c80c5[_0x6be5('0x41')]));_0x4dcb6c[_0x6be5('0x40')]['WhatsappQueueId']=_0x42c2bb['id'];if(_0x392b74[_0x6be5('0x35')][_0x6be5('0x43')]){_0x4dcb6c[_0x6be5('0x40')]=_[_0x6be5('0x44')](_0x4dcb6c[_0x6be5('0x40')],{'$or':_[_0x6be5('0x2f')](_0x4dcb6c[_0x6be5('0x3a')],function(_0x1a6139){var _0x46ba6f={};_0x46ba6f[_0x1a6139]={'$like':'%'+_0x392b74[_0x6be5('0x35')][_0x6be5('0x43')]+'%'};return _0x46ba6f;})});}_0x4dcb6c=_[_0x6be5('0x44')]({},_0x4dcb6c,_0x392b74[_0x6be5('0x45')]);return db[_0x6be5('0x56')][_0x6be5('0x48')](_0x4dcb6c);}})[_0x6be5('0x26')](function(_0x355ae4){if(_0x355ae4){return db[_0x6be5('0x57')]['findAndCountAll']({'where':{'id':_[_0x6be5('0x2f')](_0x355ae4,'UserId'),'role':_0x6be5('0x58')},'attributes':['id',_0x6be5('0x2d'),_0x6be5('0x59'),'updatedAt','createdAt']});}})[_0x6be5('0x26')](function(_0xe46626){if(_0xe46626){return{'count':_0xe46626[_0x6be5('0x1e')],'rows':_[_0x6be5('0x2f')](_0xe46626[_0x6be5('0x49')],function(_0x1bb6b4){return{'membername':_0x1bb6b4['name'],'UserId':_0x1bb6b4['id'],'queue_name':_0x51b15f[_0x6be5('0x2d')],'WhatsappQueueId':_0x51b15f['id'],'interface':util[_0x6be5('0x5a')]('%s/%s',_0x6be5('0x5b'),_0x1bb6b4['name']),'penalty':0x0,'paused':_0x1bb6b4[_0x6be5('0x59')],'createdAt':_0x1bb6b4[_0x6be5('0x5c')],'updatedAt':_0x1bb6b4[_0x6be5('0x5d')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x1379ae,_0x4dcb6c))['catch'](handleError(_0x1379ae,null));};exports['getTeams']=function(_0x5989b3,_0x4be11d,_0xdf1ccf){var _0x2d7f2c={};var _0x2b105a={};var _0x5795a9;var _0x1b93b1;return db['WhatsappQueue']['findOne']({'where':{'id':_0x5989b3[_0x6be5('0x4c')]['id']}})[_0x6be5('0x26')](handleEntityNotFound(_0x4be11d,null))[_0x6be5('0x26')](function(_0x1d208f){if(_0x1d208f){_0x5795a9=_0x1d208f;_0x2b105a['model']=_['keys'](db[_0x6be5('0x5e')][_0x6be5('0x31')]);_0x2b105a[_0x6be5('0x35')]=_[_0x6be5('0x36')](_0x5989b3[_0x6be5('0x35')]);_0x2b105a[_0x6be5('0x41')]=_[_0x6be5('0x37')](_0x2b105a['model'],_0x2b105a[_0x6be5('0x35')]);_0x2d7f2c[_0x6be5('0x3a')]=_['intersection'](_0x2b105a[_0x6be5('0x38')],qs[_0x6be5('0x39')](_0x5989b3[_0x6be5('0x35')][_0x6be5('0x39')]));_0x2d7f2c['attributes']=_0x2d7f2c[_0x6be5('0x3a')][_0x6be5('0x3b')]?_0x2d7f2c[_0x6be5('0x3a')]:_0x2b105a[_0x6be5('0x38')];_0x2d7f2c[_0x6be5('0x3e')]=qs[_0x6be5('0x3f')](_0x5989b3['query']['sort']);_0x2d7f2c[_0x6be5('0x40')]=qs[_0x6be5('0x41')](_[_0x6be5('0x42')](_0x5989b3[_0x6be5('0x35')],_0x2b105a['filters']));if(_0x5989b3[_0x6be5('0x35')]['filter']){_0x2d7f2c[_0x6be5('0x40')]=_['merge'](_0x2d7f2c[_0x6be5('0x40')],{'$or':_[_0x6be5('0x2f')](_0x2d7f2c['attributes'],function(_0x48e855){var _0x3dca7c={};_0x3dca7c[_0x48e855]={'$like':'%'+_0x5989b3[_0x6be5('0x35')][_0x6be5('0x43')]+'%'};return _0x3dca7c;})});}_0x2d7f2c=_[_0x6be5('0x44')]({},_0x2d7f2c,_0x5989b3['options']);return _0x5795a9[_0x6be5('0x5f')](_0x2d7f2c);}})['then'](function(_0x4000f8){if(_0x4000f8){_0x1b93b1=_0x4000f8[_0x6be5('0x3b')];if(!_0x5989b3[_0x6be5('0x35')]['hasOwnProperty'](_0x6be5('0x3d'))){_0x2d7f2c[_0x6be5('0x20')]=qs['limit'](_0x5989b3[_0x6be5('0x35')][_0x6be5('0x20')]);_0x2d7f2c[_0x6be5('0x1f')]=qs['offset'](_0x5989b3[_0x6be5('0x35')][_0x6be5('0x1f')]);}return _0x5795a9[_0x6be5('0x5f')](_0x2d7f2c);}})[_0x6be5('0x26')](function(_0x4179d6){if(_0x4179d6){return _0x4179d6?{'count':_0x1b93b1,'rows':_0x4179d6}:null;}})[_0x6be5('0x26')](respondWithResult(_0x4be11d,null))[_0x6be5('0x4a')](handleError(_0x4be11d,null));};exports[_0x6be5('0x60')]=function(_0x1a50cd,_0x303f31,_0x1a82d6){var _0x4626dc=_0x1a50cd[_0x6be5('0x53')][_0x6be5('0x61')];return db[_0x6be5('0x5e')]['findAll']({'where':{'id':_0x4626dc},'attributes':['id'],'include':[{'model':db[_0x6be5('0x57')],'as':'Agents','attributes':['id','name',_0x6be5('0x62'),_0x6be5('0x63'),_0x6be5('0x64')],'raw':!![]}]})[_0x6be5('0x26')](function(_0x2c61d9){if(_0x2c61d9){var _0x324454=_['flatMap'](_0x2c61d9,function(_0x12e756){var _0x89f26b=_0x12e756['get']({'plain':!![]});return _0x89f26b[_0x6be5('0x65')];});return db[_0x6be5('0x30')][_0x6be5('0x4d')]({'where':{'id':_0x1a50cd[_0x6be5('0x4c')]['id']}})[_0x6be5('0x26')](function(_0x580064){return db[_0x6be5('0x66')][_0x6be5('0x67')](function(_0x1ce34b){return _0x580064[_0x6be5('0x60')](_0x4626dc,{'transaction':_0x1ce34b})[_0x6be5('0x26')](function(){return BPromise[_0x6be5('0x68')](_0x324454,function(_0x4fc1d9){return db['UserWhatsappQueue']['findOrCreate']({'where':{'UserId':_0x4fc1d9['id'],'WhatsappQueueId':_0x1a50cd['params']['id']},'transaction':_0x1ce34b});});})[_0x6be5('0x26')](function(){_0x324454['forEach'](function(_0x140522){socket[_0x6be5('0x69')]('userWhatsappQueue:save',{'UserId':_0x140522['id'],'WhatsappQueueId':_0x580064['id']});});});});});}})[_0x6be5('0x26')](respondWithStatusCode(_0x303f31,null))[_0x6be5('0x4a')](handleError(_0x303f31,null));};exports[_0x6be5('0x6a')]=function(_0x2bd4bb,_0x2f4dca,_0x2d16f2){return db[_0x6be5('0x5e')][_0x6be5('0x48')]({'where':{'id':_0x2bd4bb['query'][_0x6be5('0x61')]},'attributes':['id'],'include':[{'model':db[_0x6be5('0x57')],'as':_0x6be5('0x65'),'attributes':['id'],'raw':!![]}]})[_0x6be5('0x26')](handleEntityNotFound(_0x2f4dca,null))[_0x6be5('0x26')](function(_0x391af6){var _0x535338=_[_0x6be5('0x2f')](_0x391af6,'id');var _0x27ea02=[];var _0x3cbde9=[];var _0x205321=squel[_0x6be5('0x6b')]();_0x205321[_0x6be5('0x6c')]('tq.TeamId')['from'](_0x6be5('0x6d'),'tq')['join'](_0x6be5('0x6e'),'ut',_0x6be5('0x6f'))[_0x6be5('0x40')]('WhatsappQueueId\x20=\x20?',_0x2bd4bb[_0x6be5('0x4c')]['id']);for(var _0x1c7c88=0x0;_0x1c7c88<_0x391af6[_0x6be5('0x3b')];_0x1c7c88+=0x1){let _0x18410f=_0x391af6[_0x1c7c88];for(var _0x31a61d=0x0;_0x31a61d<_0x18410f['Agents'][_0x6be5('0x3b')];_0x31a61d+=0x1){let _0x5687d4=_0x18410f[_0x6be5('0x65')][_0x31a61d];var _0x3de976=_0x205321['clone']();_0x3de976['where'](_0x6be5('0x70'),_0x5687d4['id']);_0x3cbde9[_0x6be5('0x71')](db[_0x6be5('0x66')][_0x6be5('0x35')](_0x3de976[_0x6be5('0x72')](),{'type':db[_0x6be5('0x66')][_0x6be5('0x73')]['SELECT']})[_0x6be5('0x26')](function(_0x483128){if(_0x483128[_0x6be5('0x3b')]===0x1){return _0x5687d4['id'];}else{var _0x101d94=_['every'](_[_0x6be5('0x2f')](_0x483128,_0x6be5('0x74')),function(_0x1c5534){return _[_0x6be5('0x75')](_0x535338,_0x1c5534);});if(_0x101d94){return _0x5687d4['id'];}}}));}}return BPromise[_0x6be5('0x76')](_0x3cbde9)['then'](function(_0x4b5139){_0x27ea02=_(_0x27ea02)[_0x6be5('0x77')](_0x4b5139)['compact']()['value']();return db[_0x6be5('0x30')][_0x6be5('0x4d')]({'where':{'id':_0x2bd4bb['params']['id']}})[_0x6be5('0x26')](function(_0x3c948b){return db[_0x6be5('0x66')][_0x6be5('0x67')](function(_0x3a5d8b){return _0x3c948b['removeTeams'](_0x2bd4bb[_0x6be5('0x35')][_0x6be5('0x61')],{'transaction':_0x3a5d8b})[_0x6be5('0x26')](function(){if(!_[_0x6be5('0x78')](_0x27ea02)){return _0x3c948b[_0x6be5('0x79')](_0x27ea02,{'transaction':_0x3a5d8b});}})['then'](function(){_0x27ea02[_0x6be5('0x7a')](function(_0x461473){socket['emit'](_0x6be5('0x7b'),{'UserId':_0x461473,'WhatsappQueueId':_0x3c948b['id']});});});});});});})[_0x6be5('0x26')](respondWithStatusCode(_0x2f4dca,null))[_0x6be5('0x4a')](handleError(_0x2f4dca,null));};exports[_0x6be5('0x7c')]=function(_0x4035c8,_0x2cf42d,_0x44cdc3){return db[_0x6be5('0x30')]['find']({'where':{'id':_0x4035c8[_0x6be5('0x4c')]['id']}})['then'](handleEntityNotFound(_0x2cf42d,null))[_0x6be5('0x26')](function(_0x58e633){if(_0x58e633){return _0x58e633[_0x6be5('0x7c')](_0x4035c8[_0x6be5('0x53')][_0x6be5('0x61')],_[_0x6be5('0x7d')](_0x4035c8['body'],['ids','id'])||{})[_0x6be5('0x7e')](function(_0x4a5c7d){for(var _0x12873d=0x0;_0x12873d<_0x4035c8[_0x6be5('0x53')][_0x6be5('0x61')][_0x6be5('0x3b')];_0x12873d+=0x1){socket[_0x6be5('0x69')]('userWhatsappQueue:save',{'UserId':Number(_0x4035c8[_0x6be5('0x53')][_0x6be5('0x61')][_0x12873d]),'WhatsappQueueId':Number(_0x4035c8[_0x6be5('0x4c')]['id'])});}return _0x4a5c7d;});}})[_0x6be5('0x26')](respondWithResult(_0x2cf42d,null))[_0x6be5('0x4a')](handleError(_0x2cf42d,null));};exports[_0x6be5('0x79')]=function(_0x260768,_0x38f6e1,_0x8269b6){return db[_0x6be5('0x30')][_0x6be5('0x4d')]({'where':{'id':_0x260768[_0x6be5('0x4c')]['id']}})[_0x6be5('0x26')](handleEntityNotFound(_0x38f6e1,null))['then'](function(_0x3dde9c){if(_0x3dde9c){return _0x3dde9c['removeAgents'](_0x260768[_0x6be5('0x35')][_0x6be5('0x61')])[_0x6be5('0x26')](function(){if(_[_0x6be5('0x7f')](_0x260768[_0x6be5('0x35')][_0x6be5('0x61')])){for(var _0x23a59a=0x0;_0x23a59a<_0x260768[_0x6be5('0x35')]['ids'][_0x6be5('0x3b')];_0x23a59a+=0x1){socket[_0x6be5('0x69')](_0x6be5('0x7b'),{'UserId':Number(_0x260768[_0x6be5('0x35')][_0x6be5('0x61')][_0x23a59a]),'WhatsappQueueId':Number(_0x260768[_0x6be5('0x4c')]['id'])});}}else{socket[_0x6be5('0x69')](_0x6be5('0x7b'),{'UserId':Number(_0x260768['query'][_0x6be5('0x61')]),'WhatsappQueueId':Number(_0x260768[_0x6be5('0x4c')]['id'])});}});}})['then'](respondWithStatusCode(_0x38f6e1,null))[_0x6be5('0x4a')](handleError(_0x38f6e1,null));};exports[_0x6be5('0x80')]=function(_0x2d9461,_0x3e4855,_0x53d242){var _0x358ce0={};var _0x3f87f4={};var _0x262ec1;var _0x21691d;return db[_0x6be5('0x30')][_0x6be5('0x81')]({'where':{'id':_0x2d9461['params']['id']}})[_0x6be5('0x26')](handleEntityNotFound(_0x3e4855,null))[_0x6be5('0x26')](function(_0x250801){if(_0x250801){_0x262ec1=_0x250801;_0x3f87f4['model']=_['keys'](db['User'][_0x6be5('0x31')]);_0x3f87f4[_0x6be5('0x35')]=_['keys'](_0x2d9461['query']);_0x3f87f4[_0x6be5('0x41')]=_[_0x6be5('0x37')](_0x3f87f4['model'],_0x3f87f4[_0x6be5('0x35')]);_0x358ce0[_0x6be5('0x3a')]=_[_0x6be5('0x37')](_0x3f87f4[_0x6be5('0x38')],qs['fields'](_0x2d9461['query']['fields']));_0x358ce0[_0x6be5('0x3a')]=_0x358ce0[_0x6be5('0x3a')]['length']?_0x358ce0[_0x6be5('0x3a')]:_0x3f87f4[_0x6be5('0x38')];_0x358ce0['order']=qs[_0x6be5('0x3f')](_0x2d9461[_0x6be5('0x35')]['sort']);_0x358ce0[_0x6be5('0x40')]=qs['filters'](_[_0x6be5('0x42')](_0x2d9461[_0x6be5('0x35')],_0x3f87f4['filters']));if(_0x2d9461[_0x6be5('0x35')][_0x6be5('0x43')]){_0x358ce0[_0x6be5('0x40')]=_[_0x6be5('0x44')](_0x358ce0['where'],{'$or':_[_0x6be5('0x2f')](_0x358ce0[_0x6be5('0x3a')],function(_0x345c4c){var _0xd35118={};_0xd35118[_0x345c4c]={'$like':'%'+_0x2d9461[_0x6be5('0x35')]['filter']+'%'};return _0xd35118;})});}_0x358ce0=_[_0x6be5('0x44')]({},_0x358ce0,_0x2d9461[_0x6be5('0x45')]);return _0x262ec1[_0x6be5('0x80')](_0x358ce0);}})['then'](function(_0x2dad5a){if(_0x2dad5a){_0x21691d=_0x2dad5a[_0x6be5('0x3b')];if(!_0x2d9461[_0x6be5('0x35')][_0x6be5('0x3c')]('nolimit')){_0x358ce0[_0x6be5('0x20')]=qs['limit'](_0x2d9461[_0x6be5('0x35')][_0x6be5('0x20')]);_0x358ce0[_0x6be5('0x1f')]=qs['offset'](_0x2d9461[_0x6be5('0x35')][_0x6be5('0x1f')]);}return _0x262ec1[_0x6be5('0x80')](_0x358ce0);}})['then'](function(_0x342bfe){if(_0x342bfe){return _0x342bfe?{'count':_0x21691d,'rows':_0x342bfe}:null;}})['then'](respondWithResult(_0x3e4855,null))[_0x6be5('0x4a')](handleError(_0x3e4855,null));};
\ No newline at end of file
+var _0x10cf=['path','sox','to-csv','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','defaults','redis','localhost','./whatsappQueue.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','save','then','destroy','WhatsappQueues','error','stack','name','send','index','map','rawAttributes','fieldName','key','keys','query','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','type','VIRTUAL','options','includeAll','include','WhatsappQueue','findAll','rows','catch','show','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','describe','getMembers','UserWhatsappQueue','WhatsappQueueId','User','findAndCountAll','UserId','agent','whatsappPause','createdAt','format','%s/%s','SIP','updatedAt','getTeams','ids','Team','Agents','online','voicePause','interface','flatMap','sequelize','transaction','addTeams','each','findOrCreate','forEach','emit','userWhatsappQueue:save','removeTeams','field','tq.TeamId','from','team_has_whatsapp_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','WhatsappQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','toString','QueryTypes','SELECT','every','TeamId','includes','union','value','isEmpty','userWhatsappQueue:remove','addAgents','omit','removeAgents','isArray','findOne','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util'];(function(_0x41ef74,_0x3629e2){var _0x25fffb=function(_0x15e712){while(--_0x15e712){_0x41ef74['push'](_0x41ef74['shift']());}};_0x25fffb(++_0x3629e2);}(_0x10cf,0x8e));var _0xf10c=function(_0x267d5a,_0x437bc3){_0x267d5a=_0x267d5a-0x0;var _0xcb6760=_0x10cf[_0x267d5a];return _0xcb6760;};'use strict';var emlformat=require(_0xf10c('0x0'));var rimraf=require(_0xf10c('0x1'));var zipdir=require(_0xf10c('0x2'));var jsonpatch=require(_0xf10c('0x3'));var rp=require(_0xf10c('0x4'));var moment=require(_0xf10c('0x5'));var BPromise=require(_0xf10c('0x6'));var Mustache=require(_0xf10c('0x7'));var util=require(_0xf10c('0x8'));var path=require(_0xf10c('0x9'));var sox=require(_0xf10c('0xa'));var csv=require(_0xf10c('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xf10c('0xc'));var crypto=require(_0xf10c('0xd'));var jsforce=require(_0xf10c('0xe'));var deskjs=require(_0xf10c('0xf'));var toCsv=require('to-csv');var querystring=require(_0xf10c('0x10'));var Papa=require(_0xf10c('0x11'));var Redis=require(_0xf10c('0x12'));var authService=require('../../components/auth/service');var qs=require(_0xf10c('0x13'));var as=require(_0xf10c('0x14'));var hardwareService=require(_0xf10c('0x15'));var logger=require(_0xf10c('0x16'))(_0xf10c('0x17'));var utils=require(_0xf10c('0x18'));var config=require(_0xf10c('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0xf10c('0x1a'))['db'];config['redis']=_[_0xf10c('0x1b')](config[_0xf10c('0x1c')],{'host':_0xf10c('0x1d'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xf10c('0x1c')]));require(_0xf10c('0x1e'))[_0xf10c('0x1f')](socket);function respondWithStatusCode(_0x55849a,_0x28a957){_0x28a957=_0x28a957||0xcc;return function(_0x1eb366){if(_0x1eb366){return _0x55849a[_0xf10c('0x20')](_0x28a957);}return _0x55849a[_0xf10c('0x21')](_0x28a957)[_0xf10c('0x22')]();};}function respondWithResult(_0x1bec5f,_0x45f684){_0x45f684=_0x45f684||0xc8;return function(_0x20c0dd){if(_0x20c0dd){return _0x1bec5f[_0xf10c('0x21')](_0x45f684)[_0xf10c('0x23')](_0x20c0dd);}};}function respondWithFilteredResult(_0x287d34,_0xd56361){return function(_0x45cde4){if(_0x45cde4){var _0x43996a=typeof _0xd56361[_0xf10c('0x24')]===_0xf10c('0x25')&&typeof _0xd56361[_0xf10c('0x26')]===_0xf10c('0x25');var _0xca07a0=_0x45cde4[_0xf10c('0x27')];var _0x445c45=_0x43996a?0x0:_0xd56361[_0xf10c('0x24')];var _0xa8ed9a=_0x43996a?_0x45cde4[_0xf10c('0x27')]:_0xd56361[_0xf10c('0x24')]+_0xd56361[_0xf10c('0x26')];var _0x3a646c;if(_0xa8ed9a>=_0xca07a0){_0xa8ed9a=_0xca07a0;_0x3a646c=0xc8;}else{_0x3a646c=0xce;}_0x287d34[_0xf10c('0x21')](_0x3a646c);return _0x287d34[_0xf10c('0x28')]('Content-Range',_0x445c45+'-'+_0xa8ed9a+'/'+_0xca07a0)[_0xf10c('0x23')](_0x45cde4);}return null;};}function patchUpdates(_0x3d8c74){return function(_0x1e51ef){try{jsonpatch[_0xf10c('0x29')](_0x1e51ef,_0x3d8c74,!![]);}catch(_0x4f2b5c){return BPromise['reject'](_0x4f2b5c);}return _0x1e51ef[_0xf10c('0x2a')]();};}function saveUpdates(_0xb81996,_0x4adca0){return function(_0x4091a7){if(_0x4091a7){return _0x4091a7['update'](_0xb81996)[_0xf10c('0x2b')](function(_0x2e9b14){return _0x2e9b14;});}return null;};}function removeEntity(_0x239c84,_0x375c3){return function(_0x537ff7){if(_0x537ff7){return _0x537ff7[_0xf10c('0x2c')]()[_0xf10c('0x2b')](function(){var _0x2ccba9=_0x537ff7['get']({'plain':!![]});var _0x20593a=_0xf10c('0x2d');return db['UserProfileResource'][_0xf10c('0x2c')]({'where':{'type':_0x20593a,'resourceId':_0x2ccba9['id']}})[_0xf10c('0x2b')](function(){return _0x537ff7;});})[_0xf10c('0x2b')](function(){_0x239c84[_0xf10c('0x21')](0xcc)[_0xf10c('0x22')]();});}};}function handleEntityNotFound(_0xcabb1f,_0x15551f){return function(_0x152611){if(!_0x152611){_0xcabb1f[_0xf10c('0x20')](0x194);}return _0x152611;};}function handleError(_0x431690,_0x55477d){_0x55477d=_0x55477d||0x1f4;return function(_0x48f9de){logger[_0xf10c('0x2e')](_0x48f9de[_0xf10c('0x2f')]);if(_0x48f9de[_0xf10c('0x30')]){delete _0x48f9de[_0xf10c('0x30')];}_0x431690[_0xf10c('0x21')](_0x55477d)[_0xf10c('0x31')](_0x48f9de);};}exports[_0xf10c('0x32')]=function(_0x864c13,_0x2bbb90){var _0x2ac4ca={},_0x346d60={},_0x200695={'count':0x0,'rows':[]};var _0x358baa=_[_0xf10c('0x33')](db['WhatsappQueue'][_0xf10c('0x34')],function(_0x29206d){return{'name':_0x29206d[_0xf10c('0x35')],'type':_0x29206d['type'][_0xf10c('0x36')]};});_0x346d60['model']=_['map'](_0x358baa,'name');_0x346d60['query']=_[_0xf10c('0x37')](_0x864c13[_0xf10c('0x38')]);_0x346d60['filters']=_[_0xf10c('0x39')](_0x346d60['model'],_0x346d60[_0xf10c('0x38')]);_0x2ac4ca[_0xf10c('0x3a')]=_[_0xf10c('0x39')](_0x346d60[_0xf10c('0x3b')],qs[_0xf10c('0x3c')](_0x864c13[_0xf10c('0x38')][_0xf10c('0x3c')]));_0x2ac4ca[_0xf10c('0x3a')]=_0x2ac4ca[_0xf10c('0x3a')][_0xf10c('0x3d')]?_0x2ac4ca[_0xf10c('0x3a')]:_0x346d60[_0xf10c('0x3b')];if(!_0x864c13[_0xf10c('0x38')][_0xf10c('0x3e')](_0xf10c('0x3f'))){_0x2ac4ca[_0xf10c('0x26')]=qs[_0xf10c('0x26')](_0x864c13[_0xf10c('0x38')][_0xf10c('0x26')]);_0x2ac4ca['offset']=qs[_0xf10c('0x24')](_0x864c13[_0xf10c('0x38')][_0xf10c('0x24')]);}_0x2ac4ca[_0xf10c('0x40')]=qs[_0xf10c('0x41')](_0x864c13['query'][_0xf10c('0x41')]);_0x2ac4ca[_0xf10c('0x42')]=qs[_0xf10c('0x43')](_[_0xf10c('0x44')](_0x864c13[_0xf10c('0x38')],_0x346d60['filters']),_0x358baa);if(_0x864c13['query'][_0xf10c('0x45')]){_0x2ac4ca[_0xf10c('0x42')]=_[_0xf10c('0x46')](_0x2ac4ca[_0xf10c('0x42')],{'$or':_[_0xf10c('0x33')](_0x358baa,function(_0x8175f8){if(_0x8175f8[_0xf10c('0x47')]!==_0xf10c('0x48')){var _0x6c44b0={};_0x6c44b0[_0x8175f8['name']]={'$like':'%'+_0x864c13[_0xf10c('0x38')][_0xf10c('0x45')]+'%'};return _0x6c44b0;}})});}_0x2ac4ca=_[_0xf10c('0x46')]({},_0x2ac4ca,_0x864c13[_0xf10c('0x49')]);var _0x1f0d31={'where':_0x2ac4ca[_0xf10c('0x42')]};return db['WhatsappQueue'][_0xf10c('0x27')](_0x1f0d31)['then'](function(_0x30f9e0){_0x200695[_0xf10c('0x27')]=_0x30f9e0;if(_0x864c13[_0xf10c('0x38')][_0xf10c('0x4a')]){_0x2ac4ca[_0xf10c('0x4b')]=[{'all':!![]}];}return db[_0xf10c('0x4c')][_0xf10c('0x4d')](_0x2ac4ca);})['then'](function(_0x37fadc){_0x200695[_0xf10c('0x4e')]=_0x37fadc;return _0x200695;})[_0xf10c('0x2b')](respondWithFilteredResult(_0x2bbb90,_0x2ac4ca))[_0xf10c('0x4f')](handleError(_0x2bbb90,null));};exports[_0xf10c('0x50')]=function(_0x2d5fda,_0x5d7179){var _0x5ba11c={'raw':!![],'where':{'id':_0x2d5fda['params']['id']}},_0x1f5cc7={};_0x1f5cc7[_0xf10c('0x3b')]=_[_0xf10c('0x37')](db['WhatsappQueue'][_0xf10c('0x34')]);_0x1f5cc7[_0xf10c('0x38')]=_[_0xf10c('0x37')](_0x2d5fda[_0xf10c('0x38')]);_0x1f5cc7[_0xf10c('0x43')]=_[_0xf10c('0x39')](_0x1f5cc7[_0xf10c('0x3b')],_0x1f5cc7[_0xf10c('0x38')]);_0x5ba11c[_0xf10c('0x3a')]=_['intersection'](_0x1f5cc7[_0xf10c('0x3b')],qs[_0xf10c('0x3c')](_0x2d5fda[_0xf10c('0x38')]['fields']));_0x5ba11c[_0xf10c('0x3a')]=_0x5ba11c['attributes'][_0xf10c('0x3d')]?_0x5ba11c[_0xf10c('0x3a')]:_0x1f5cc7[_0xf10c('0x3b')];if(_0x2d5fda[_0xf10c('0x38')]['includeAll']){_0x5ba11c[_0xf10c('0x4b')]=[{'all':!![]}];}_0x5ba11c=_[_0xf10c('0x46')]({},_0x5ba11c,_0x2d5fda['options']);return db[_0xf10c('0x4c')]['find'](_0x5ba11c)[_0xf10c('0x2b')](handleEntityNotFound(_0x5d7179,null))[_0xf10c('0x2b')](respondWithResult(_0x5d7179,null))['catch'](handleError(_0x5d7179,null));};exports['create']=function(_0x146878,_0x35e760){return db[_0xf10c('0x4c')][_0xf10c('0x51')](_0x146878[_0xf10c('0x52')],{})[_0xf10c('0x2b')](function(_0x57fc29){var _0x23a295=_0x146878[_0xf10c('0x53')][_0xf10c('0x54')]({'plain':!![]});if(!_0x23a295)throw new Error(_0xf10c('0x55'));if(_0x23a295[_0xf10c('0x56')]===_0xf10c('0x53')){var _0x46fa7b=_0x57fc29['get']({'plain':!![]});var _0xf0e3ba=_0xf10c('0x2d');return db[_0xf10c('0x57')][_0xf10c('0x58')]({'where':{'name':_0xf0e3ba,'userProfileId':_0x23a295[_0xf10c('0x59')]},'raw':!![]})[_0xf10c('0x2b')](function(_0x60598b){if(_0x60598b&&_0x60598b[_0xf10c('0x5a')]===0x0){return db[_0xf10c('0x5b')]['create']({'name':_0x46fa7b[_0xf10c('0x30')],'resourceId':_0x46fa7b['id'],'type':_0x60598b[_0xf10c('0x30')],'sectionId':_0x60598b['id']},{})[_0xf10c('0x2b')](function(){return _0x57fc29;});}else{return _0x57fc29;}})[_0xf10c('0x4f')](function(_0x2d507e){logger[_0xf10c('0x2e')](_0xf10c('0x5c'),_0x2d507e);throw _0x2d507e;});}return _0x57fc29;})[_0xf10c('0x2b')](respondWithResult(_0x35e760,0xc9))['catch'](handleError(_0x35e760,null));};exports['update']=function(_0x3c9091,_0xc1ee3c){if(_0x3c9091['body']['id']){delete _0x3c9091['body']['id'];}return db[_0xf10c('0x4c')]['find']({'where':{'id':_0x3c9091[_0xf10c('0x5d')]['id']}})[_0xf10c('0x2b')](handleEntityNotFound(_0xc1ee3c,null))[_0xf10c('0x2b')](saveUpdates(_0x3c9091['body'],null))[_0xf10c('0x2b')](respondWithResult(_0xc1ee3c,null))[_0xf10c('0x4f')](handleError(_0xc1ee3c,null));};exports[_0xf10c('0x2c')]=function(_0x3d8ea0,_0x30028e){return db['WhatsappQueue'][_0xf10c('0x58')]({'where':{'id':_0x3d8ea0[_0xf10c('0x5d')]['id']}})[_0xf10c('0x2b')](handleEntityNotFound(_0x30028e,null))[_0xf10c('0x2b')](removeEntity(_0x30028e,null))[_0xf10c('0x4f')](handleError(_0x30028e,null));};exports[_0xf10c('0x5e')]=function(_0x72f5e3,_0xbff506){return db['WhatsappQueue'][_0xf10c('0x5e')]()[_0xf10c('0x2b')](respondWithResult(_0xbff506,null))[_0xf10c('0x4f')](handleError(_0xbff506,null));};exports[_0xf10c('0x5f')]=function(_0xe8ac59,_0x252ec2,_0x3fbe0c){var _0x295e11={'raw':!![],'where':{}},_0x50ff52={},_0x40f574;return db[_0xf10c('0x4c')]['findOne']({'where':{'id':_0xe8ac59[_0xf10c('0x5d')]['id']}})[_0xf10c('0x2b')](handleEntityNotFound(_0x252ec2,null))[_0xf10c('0x2b')](function(_0x10ed23){if(_0x10ed23){_0x40f574=_0x10ed23['get']({'plain':!![]});_0x50ff52[_0xf10c('0x3b')]=_['keys'](db[_0xf10c('0x60')][_0xf10c('0x34')]);_0x50ff52[_0xf10c('0x38')]=_['keys'](_0xe8ac59[_0xf10c('0x38')]);_0x50ff52[_0xf10c('0x43')]=_['intersection'](_0x50ff52[_0xf10c('0x3b')],_0x50ff52[_0xf10c('0x38')]);_0x295e11[_0xf10c('0x3a')]=_['intersection'](_0x50ff52['model'],qs['fields'](_0xe8ac59[_0xf10c('0x38')]['fields']));_0x295e11['attributes']=_0x295e11[_0xf10c('0x3a')][_0xf10c('0x3d')]?_0x295e11[_0xf10c('0x3a')]:_0x50ff52[_0xf10c('0x3b')];if(!_0xe8ac59[_0xf10c('0x38')][_0xf10c('0x3e')](_0xf10c('0x3f'))){_0x295e11[_0xf10c('0x26')]=qs[_0xf10c('0x26')](_0xe8ac59[_0xf10c('0x38')][_0xf10c('0x26')]);_0x295e11[_0xf10c('0x24')]=qs[_0xf10c('0x24')](_0xe8ac59[_0xf10c('0x38')]['offset']);}_0x295e11[_0xf10c('0x40')]=qs['sort'](_0xe8ac59[_0xf10c('0x38')][_0xf10c('0x41')]);_0x295e11[_0xf10c('0x42')]=qs['filters'](_['pick'](_0xe8ac59[_0xf10c('0x38')],_0x50ff52['filters']));_0x295e11[_0xf10c('0x42')][_0xf10c('0x61')]=_0x10ed23['id'];if(_0xe8ac59['query'][_0xf10c('0x45')]){_0x295e11[_0xf10c('0x42')]=_[_0xf10c('0x46')](_0x295e11[_0xf10c('0x42')],{'$or':_[_0xf10c('0x33')](_0x295e11['attributes'],function(_0x2ba68a){var _0x483d08={};_0x483d08[_0x2ba68a]={'$like':'%'+_0xe8ac59[_0xf10c('0x38')][_0xf10c('0x45')]+'%'};return _0x483d08;})});}_0x295e11=_[_0xf10c('0x46')]({},_0x295e11,_0xe8ac59[_0xf10c('0x49')]);return db[_0xf10c('0x60')][_0xf10c('0x4d')](_0x295e11);}})[_0xf10c('0x2b')](function(_0x557b4f){if(_0x557b4f){return db[_0xf10c('0x62')][_0xf10c('0x63')]({'where':{'id':_[_0xf10c('0x33')](_0x557b4f,_0xf10c('0x64')),'role':_0xf10c('0x65')},'attributes':['id',_0xf10c('0x30'),_0xf10c('0x66'),'updatedAt',_0xf10c('0x67')]});}})['then'](function(_0x5ac8b1){if(_0x5ac8b1){return{'count':_0x5ac8b1[_0xf10c('0x27')],'rows':_[_0xf10c('0x33')](_0x5ac8b1[_0xf10c('0x4e')],function(_0x1929a9){return{'membername':_0x1929a9[_0xf10c('0x30')],'UserId':_0x1929a9['id'],'queue_name':_0x40f574[_0xf10c('0x30')],'WhatsappQueueId':_0x40f574['id'],'interface':util[_0xf10c('0x68')](_0xf10c('0x69'),_0xf10c('0x6a'),_0x1929a9[_0xf10c('0x30')]),'penalty':0x0,'paused':_0x1929a9[_0xf10c('0x66')],'createdAt':_0x1929a9['createdAt'],'updatedAt':_0x1929a9[_0xf10c('0x6b')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x252ec2,_0x295e11))[_0xf10c('0x4f')](handleError(_0x252ec2,null));};exports['getTeams']=function(_0x375645,_0x4a4013,_0x336b91){var _0x11404e={};var _0x3a7031={};var _0x1d79c4;var _0x47b5a1;return db['WhatsappQueue']['findOne']({'where':{'id':_0x375645['params']['id']}})['then'](handleEntityNotFound(_0x4a4013,null))[_0xf10c('0x2b')](function(_0x81660f){if(_0x81660f){_0x1d79c4=_0x81660f;_0x3a7031[_0xf10c('0x3b')]=_['keys'](db['Team'][_0xf10c('0x34')]);_0x3a7031['query']=_[_0xf10c('0x37')](_0x375645[_0xf10c('0x38')]);_0x3a7031[_0xf10c('0x43')]=_['intersection'](_0x3a7031['model'],_0x3a7031[_0xf10c('0x38')]);_0x11404e[_0xf10c('0x3a')]=_[_0xf10c('0x39')](_0x3a7031[_0xf10c('0x3b')],qs[_0xf10c('0x3c')](_0x375645[_0xf10c('0x38')][_0xf10c('0x3c')]));_0x11404e[_0xf10c('0x3a')]=_0x11404e['attributes'][_0xf10c('0x3d')]?_0x11404e[_0xf10c('0x3a')]:_0x3a7031[_0xf10c('0x3b')];_0x11404e[_0xf10c('0x40')]=qs[_0xf10c('0x41')](_0x375645['query']['sort']);_0x11404e['where']=qs[_0xf10c('0x43')](_['pick'](_0x375645[_0xf10c('0x38')],_0x3a7031[_0xf10c('0x43')]));if(_0x375645[_0xf10c('0x38')][_0xf10c('0x45')]){_0x11404e[_0xf10c('0x42')]=_['merge'](_0x11404e['where'],{'$or':_['map'](_0x11404e[_0xf10c('0x3a')],function(_0x432afa){var _0x1f3c14={};_0x1f3c14[_0x432afa]={'$like':'%'+_0x375645[_0xf10c('0x38')][_0xf10c('0x45')]+'%'};return _0x1f3c14;})});}_0x11404e=_['merge']({},_0x11404e,_0x375645['options']);return _0x1d79c4[_0xf10c('0x6c')](_0x11404e);}})[_0xf10c('0x2b')](function(_0xf6b4d){if(_0xf6b4d){_0x47b5a1=_0xf6b4d[_0xf10c('0x3d')];if(!_0x375645[_0xf10c('0x38')][_0xf10c('0x3e')](_0xf10c('0x3f'))){_0x11404e['limit']=qs['limit'](_0x375645[_0xf10c('0x38')][_0xf10c('0x26')]);_0x11404e['offset']=qs[_0xf10c('0x24')](_0x375645[_0xf10c('0x38')][_0xf10c('0x24')]);}return _0x1d79c4[_0xf10c('0x6c')](_0x11404e);}})[_0xf10c('0x2b')](function(_0x22bc72){if(_0x22bc72){return _0x22bc72?{'count':_0x47b5a1,'rows':_0x22bc72}:null;}})[_0xf10c('0x2b')](respondWithResult(_0x4a4013,null))[_0xf10c('0x4f')](handleError(_0x4a4013,null));};exports['addTeams']=function(_0x5d561b,_0x1aae6f,_0x2ce4aa){var _0x2cc563=_0x5d561b['body'][_0xf10c('0x6d')];return db[_0xf10c('0x6e')]['findAll']({'where':{'id':_0x2cc563},'attributes':['id'],'include':[{'model':db[_0xf10c('0x62')],'as':_0xf10c('0x6f'),'attributes':['id',_0xf10c('0x30'),_0xf10c('0x70'),_0xf10c('0x71'),_0xf10c('0x72')],'raw':!![]}]})[_0xf10c('0x2b')](function(_0x51da3d){if(_0x51da3d){var _0x2bb9b3=_[_0xf10c('0x73')](_0x51da3d,function(_0x31fbdf){var _0x21ca01=_0x31fbdf[_0xf10c('0x54')]({'plain':!![]});return _0x21ca01['Agents'];});return db[_0xf10c('0x4c')][_0xf10c('0x58')]({'where':{'id':_0x5d561b[_0xf10c('0x5d')]['id']}})[_0xf10c('0x2b')](function(_0x14d95a){return db[_0xf10c('0x74')][_0xf10c('0x75')](function(_0x2158ed){return _0x14d95a[_0xf10c('0x76')](_0x2cc563,{'transaction':_0x2158ed})['then'](function(){return BPromise[_0xf10c('0x77')](_0x2bb9b3,function(_0x406026){return db[_0xf10c('0x60')][_0xf10c('0x78')]({'where':{'UserId':_0x406026['id'],'WhatsappQueueId':_0x5d561b['params']['id']},'transaction':_0x2158ed});});})['then'](function(){_0x2bb9b3[_0xf10c('0x79')](function(_0x459642){socket[_0xf10c('0x7a')](_0xf10c('0x7b'),{'UserId':_0x459642['id'],'WhatsappQueueId':_0x14d95a['id']});});});});});}})[_0xf10c('0x2b')](respondWithStatusCode(_0x1aae6f,null))[_0xf10c('0x4f')](handleError(_0x1aae6f,null));};exports[_0xf10c('0x7c')]=function(_0x5026d7,_0x28ecad,_0x44c44c){return db[_0xf10c('0x6e')][_0xf10c('0x4d')]({'where':{'id':_0x5026d7[_0xf10c('0x38')][_0xf10c('0x6d')]},'attributes':['id'],'include':[{'model':db[_0xf10c('0x62')],'as':_0xf10c('0x6f'),'attributes':['id'],'raw':!![]}]})[_0xf10c('0x2b')](handleEntityNotFound(_0x28ecad,null))[_0xf10c('0x2b')](function(_0x14b776){var _0x2cec84=_[_0xf10c('0x33')](_0x14b776,'id');var _0x7811ed=[];var _0x23c960=[];var _0xe693a0=squel['select']();_0xe693a0[_0xf10c('0x7d')](_0xf10c('0x7e'))[_0xf10c('0x7f')](_0xf10c('0x80'),'tq')[_0xf10c('0x81')](_0xf10c('0x82'),'ut',_0xf10c('0x83'))[_0xf10c('0x42')](_0xf10c('0x84'),_0x5026d7[_0xf10c('0x5d')]['id']);for(var _0x525473=0x0;_0x525473<_0x14b776['length'];_0x525473+=0x1){let _0x18ef9d=_0x14b776[_0x525473];for(var _0x13879d=0x0;_0x13879d<_0x18ef9d[_0xf10c('0x6f')][_0xf10c('0x3d')];_0x13879d+=0x1){let _0x53d449=_0x18ef9d['Agents'][_0x13879d];var _0x560dce=_0xe693a0[_0xf10c('0x85')]();_0x560dce[_0xf10c('0x42')](_0xf10c('0x86'),_0x53d449['id']);_0x23c960['push'](db[_0xf10c('0x74')][_0xf10c('0x38')](_0x560dce[_0xf10c('0x87')](),{'type':db[_0xf10c('0x74')][_0xf10c('0x88')][_0xf10c('0x89')]})[_0xf10c('0x2b')](function(_0x1ec595){if(_0x1ec595['length']===0x1){return _0x53d449['id'];}else{var _0x39a8fc=_[_0xf10c('0x8a')](_['map'](_0x1ec595,_0xf10c('0x8b')),function(_0x4bc55b){return _[_0xf10c('0x8c')](_0x2cec84,_0x4bc55b);});if(_0x39a8fc){return _0x53d449['id'];}}}));}}return BPromise['all'](_0x23c960)[_0xf10c('0x2b')](function(_0xcc67bb){_0x7811ed=_(_0x7811ed)[_0xf10c('0x8d')](_0xcc67bb)['compact']()[_0xf10c('0x8e')]();return db['WhatsappQueue'][_0xf10c('0x58')]({'where':{'id':_0x5026d7['params']['id']}})[_0xf10c('0x2b')](function(_0x5a2f9f){return db[_0xf10c('0x74')][_0xf10c('0x75')](function(_0x439687){return _0x5a2f9f[_0xf10c('0x7c')](_0x5026d7[_0xf10c('0x38')][_0xf10c('0x6d')],{'transaction':_0x439687})[_0xf10c('0x2b')](function(){if(!_[_0xf10c('0x8f')](_0x7811ed)){return _0x5a2f9f['removeAgents'](_0x7811ed,{'transaction':_0x439687});}})[_0xf10c('0x2b')](function(){_0x7811ed['forEach'](function(_0x2d743e){socket[_0xf10c('0x7a')](_0xf10c('0x90'),{'UserId':_0x2d743e,'WhatsappQueueId':_0x5a2f9f['id']});});});});});});})[_0xf10c('0x2b')](respondWithStatusCode(_0x28ecad,null))['catch'](handleError(_0x28ecad,null));};exports[_0xf10c('0x91')]=function(_0x518f04,_0x3a7228,_0x285e37){return db[_0xf10c('0x4c')]['find']({'where':{'id':_0x518f04[_0xf10c('0x5d')]['id']}})[_0xf10c('0x2b')](handleEntityNotFound(_0x3a7228,null))[_0xf10c('0x2b')](function(_0xb111a8){if(_0xb111a8){return _0xb111a8['addAgents'](_0x518f04['body'][_0xf10c('0x6d')],_[_0xf10c('0x92')](_0x518f04['body'],[_0xf10c('0x6d'),'id'])||{})['spread'](function(_0x3dec25){for(var _0x588a01=0x0;_0x588a01<_0x518f04[_0xf10c('0x52')]['ids'][_0xf10c('0x3d')];_0x588a01+=0x1){socket[_0xf10c('0x7a')](_0xf10c('0x7b'),{'UserId':Number(_0x518f04[_0xf10c('0x52')][_0xf10c('0x6d')][_0x588a01]),'WhatsappQueueId':Number(_0x518f04[_0xf10c('0x5d')]['id'])});}return _0x3dec25;});}})[_0xf10c('0x2b')](respondWithResult(_0x3a7228,null))[_0xf10c('0x4f')](handleError(_0x3a7228,null));};exports[_0xf10c('0x93')]=function(_0x29be35,_0xae36f7,_0x19d499){return db[_0xf10c('0x4c')][_0xf10c('0x58')]({'where':{'id':_0x29be35['params']['id']}})[_0xf10c('0x2b')](handleEntityNotFound(_0xae36f7,null))['then'](function(_0x4bced5){if(_0x4bced5){return _0x4bced5[_0xf10c('0x93')](_0x29be35['query'][_0xf10c('0x6d')])['then'](function(){if(_[_0xf10c('0x94')](_0x29be35[_0xf10c('0x38')][_0xf10c('0x6d')])){for(var _0x27fd52=0x0;_0x27fd52<_0x29be35[_0xf10c('0x38')]['ids'][_0xf10c('0x3d')];_0x27fd52+=0x1){socket[_0xf10c('0x7a')](_0xf10c('0x90'),{'UserId':Number(_0x29be35['query'][_0xf10c('0x6d')][_0x27fd52]),'WhatsappQueueId':Number(_0x29be35[_0xf10c('0x5d')]['id'])});}}else{socket[_0xf10c('0x7a')](_0xf10c('0x90'),{'UserId':Number(_0x29be35[_0xf10c('0x38')][_0xf10c('0x6d')]),'WhatsappQueueId':Number(_0x29be35[_0xf10c('0x5d')]['id'])});}});}})['then'](respondWithStatusCode(_0xae36f7,null))['catch'](handleError(_0xae36f7,null));};exports['getAgents']=function(_0x1c2e37,_0x36c6d8,_0x73bec7){var _0x44ba9a={};var _0xfc6dc2={};var _0x1b2ac6;var _0x8ea5ef;return db[_0xf10c('0x4c')][_0xf10c('0x95')]({'where':{'id':_0x1c2e37[_0xf10c('0x5d')]['id']}})['then'](handleEntityNotFound(_0x36c6d8,null))['then'](function(_0x48f4a9){if(_0x48f4a9){_0x1b2ac6=_0x48f4a9;_0xfc6dc2[_0xf10c('0x3b')]=_[_0xf10c('0x37')](db['User'][_0xf10c('0x34')]);_0xfc6dc2[_0xf10c('0x38')]=_[_0xf10c('0x37')](_0x1c2e37[_0xf10c('0x38')]);_0xfc6dc2['filters']=_[_0xf10c('0x39')](_0xfc6dc2[_0xf10c('0x3b')],_0xfc6dc2['query']);_0x44ba9a['attributes']=_['intersection'](_0xfc6dc2['model'],qs[_0xf10c('0x3c')](_0x1c2e37['query'][_0xf10c('0x3c')]));_0x44ba9a['attributes']=_0x44ba9a[_0xf10c('0x3a')][_0xf10c('0x3d')]?_0x44ba9a[_0xf10c('0x3a')]:_0xfc6dc2['model'];_0x44ba9a[_0xf10c('0x40')]=qs[_0xf10c('0x41')](_0x1c2e37[_0xf10c('0x38')][_0xf10c('0x41')]);_0x44ba9a[_0xf10c('0x42')]=qs[_0xf10c('0x43')](_[_0xf10c('0x44')](_0x1c2e37[_0xf10c('0x38')],_0xfc6dc2[_0xf10c('0x43')]));if(_0x1c2e37[_0xf10c('0x38')][_0xf10c('0x45')]){_0x44ba9a[_0xf10c('0x42')]=_[_0xf10c('0x46')](_0x44ba9a[_0xf10c('0x42')],{'$or':_[_0xf10c('0x33')](_0x44ba9a['attributes'],function(_0x3e6d89){var _0xd6ff3c={};_0xd6ff3c[_0x3e6d89]={'$like':'%'+_0x1c2e37[_0xf10c('0x38')][_0xf10c('0x45')]+'%'};return _0xd6ff3c;})});}_0x44ba9a=_[_0xf10c('0x46')]({},_0x44ba9a,_0x1c2e37[_0xf10c('0x49')]);return _0x1b2ac6['getAgents'](_0x44ba9a);}})[_0xf10c('0x2b')](function(_0x1297eb){if(_0x1297eb){_0x8ea5ef=_0x1297eb['length'];if(!_0x1c2e37[_0xf10c('0x38')][_0xf10c('0x3e')](_0xf10c('0x3f'))){_0x44ba9a['limit']=qs[_0xf10c('0x26')](_0x1c2e37[_0xf10c('0x38')][_0xf10c('0x26')]);_0x44ba9a[_0xf10c('0x24')]=qs[_0xf10c('0x24')](_0x1c2e37['query']['offset']);}return _0x1b2ac6[_0xf10c('0x96')](_0x44ba9a);}})['then'](function(_0x303b08){if(_0x303b08){return _0x303b08?{'count':_0x8ea5ef,'rows':_0x303b08}:null;}})['then'](respondWithResult(_0x36c6d8,null))['catch'](handleError(_0x36c6d8,null));};
\ No newline at end of file
index 9634930..8673dba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b34=['hook','exports','../../mysqldb','WhatsappQueue','setMaxListeners','remove','emit','hasOwnProperty'];(function(_0xe0dee2,_0x35d2a8){var _0x568ed0=function(_0x3b1644){while(--_0x3b1644){_0xe0dee2['push'](_0xe0dee2['shift']());}};_0x568ed0(++_0x35d2a8);}(_0x1b34,0xa2));var _0x41b3=function(_0x5688db,_0x234bb9){_0x5688db=_0x5688db-0x0;var _0x1be3ef=_0x1b34[_0x5688db];return _0x1be3ef;};'use strict';var EventEmitter=require('events');var WhatsappQueue=require(_0x41b3('0x0'))['db'][_0x41b3('0x1')];var WhatsappQueueEvents=new EventEmitter();WhatsappQueueEvents[_0x41b3('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x41b3('0x3')};function emitEvent(_0x3e43f1){return function(_0x4446a8,_0x2bd1fb,_0x4c7e29){WhatsappQueueEvents['emit'](_0x3e43f1+':'+_0x4446a8['id'],_0x4446a8);WhatsappQueueEvents[_0x41b3('0x4')](_0x3e43f1,_0x4446a8);_0x4c7e29(null);};}for(var e in events){if(events[_0x41b3('0x5')](e)){var event=events[e];WhatsappQueue[_0x41b3('0x6')](e,emitEvent(event));}}module[_0x41b3('0x7')]=WhatsappQueueEvents;
\ No newline at end of file
+var _0x44ac=['save','emit','hasOwnProperty','hook','events','../../mysqldb','setMaxListeners'];(function(_0x261335,_0x313128){var _0x444971=function(_0x1c213b){while(--_0x1c213b){_0x261335['push'](_0x261335['shift']());}};_0x444971(++_0x313128);}(_0x44ac,0x162));var _0xc44a=function(_0x110c3d,_0x12ee06){_0x110c3d=_0x110c3d-0x0;var _0x226d67=_0x44ac[_0x110c3d];return _0x226d67;};'use strict';var EventEmitter=require(_0xc44a('0x0'));var WhatsappQueue=require(_0xc44a('0x1'))['db']['WhatsappQueue'];var WhatsappQueueEvents=new EventEmitter();WhatsappQueueEvents[_0xc44a('0x2')](0x0);var events={'afterCreate':_0xc44a('0x3'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x12258f){return function(_0x125dd7,_0x476ca6,_0x257c76){WhatsappQueueEvents[_0xc44a('0x4')](_0x12258f+':'+_0x125dd7['id'],_0x125dd7);WhatsappQueueEvents[_0xc44a('0x4')](_0x12258f,_0x125dd7);_0x257c76(null);};}for(var e in events){if(events[_0xc44a('0x5')](e)){var event=events[e];WhatsappQueue[_0xc44a('0x6')](e,emitEvent(event));}}module['exports']=WhatsappQueueEvents;
\ No newline at end of file
index 6490dc0..cafe252 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9be5=['whatsapp_queues','lodash','util','../../config/logger','api','bluebird','path','rimraf','../../config/environment','./whatsappQueue.attributes','exports','define','WhatsappQueue'];(function(_0x471448,_0x1c0e9e){var _0x38190b=function(_0x41dd2f){while(--_0x41dd2f){_0x471448['push'](_0x471448['shift']());}};_0x38190b(++_0x1c0e9e);}(_0x9be5,0x194));var _0x59be=function(_0x122096,_0x60c295){_0x122096=_0x122096-0x0;var _0x3d1966=_0x9be5[_0x122096];return _0x3d1966;};'use strict';var _=require(_0x59be('0x0'));var util=require(_0x59be('0x1'));var logger=require(_0x59be('0x2'))(_0x59be('0x3'));var moment=require('moment');var BPromise=require(_0x59be('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x59be('0x5'));var rimraf=require(_0x59be('0x6'));var config=require(_0x59be('0x7'));var attributes=require(_0x59be('0x8'));module[_0x59be('0x9')]=function(_0x17bf32,_0x214dbf){return _0x17bf32[_0x59be('0xa')](_0x59be('0xb'),attributes,{'tableName':_0x59be('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x109e=['lodash','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./whatsappQueue.attributes','exports','define','WhatsappQueue'];(function(_0x3c7567,_0xb1fb4a){var _0x2cda0a=function(_0x3458b3){while(--_0x3458b3){_0x3c7567['push'](_0x3c7567['shift']());}};_0x2cda0a(++_0xb1fb4a);}(_0x109e,0x1c8));var _0xe109=function(_0x2e3526,_0x1f3325){_0x2e3526=_0x2e3526-0x0;var _0x3d1902=_0x109e[_0x2e3526];return _0x3d1902;};'use strict';var _=require(_0xe109('0x0'));var util=require('util');var logger=require(_0xe109('0x1'))(_0xe109('0x2'));var moment=require(_0xe109('0x3'));var BPromise=require(_0xe109('0x4'));var rp=require(_0xe109('0x5'));var fs=require('fs');var path=require(_0xe109('0x6'));var rimraf=require('rimraf');var config=require(_0xe109('0x7'));var attributes=require(_0xe109('0x8'));module[_0xe109('0x9')]=function(_0x5021b5,_0x124722){return _0x5021b5[_0xe109('0xa')](_0xe109('0xb'),attributes,{'tableName':'whatsapp_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e2f5139..67ee67a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x52e1=['raw','where','attributes','limit','include','map','model','stringify','ShowWhatsappQueue','find','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','register','request','then','request\x20sent','debug','WhatsappQueue,\x20%s,\x20%s,\x20%s','error','WhatsappQueue,\x20%s,\x20%s','message','info','result','catch','GetWhatsappQueue','WhatsappQueue','options'];(function(_0x25d66f,_0x17ad4c){var _0x4feb17=function(_0x2b32a7){while(--_0x2b32a7){_0x25d66f['push'](_0x25d66f['shift']());}};_0x4feb17(++_0x17ad4c);}(_0x52e1,0x122));var _0x152e=function(_0x305fc8,_0x16e31e){_0x305fc8=_0x305fc8-0x0;var _0x427cea=_0x52e1[_0x305fc8];return _0x427cea;};'use strict';var _=require(_0x152e('0x0'));var util=require('util');var moment=require(_0x152e('0x1'));var BPromise=require(_0x152e('0x2'));var rs=require(_0x152e('0x3'));var fs=require('fs');var Redis=require(_0x152e('0x4'));var db=require(_0x152e('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x152e('0x6'))(_0x152e('0x7'));var config=require(_0x152e('0x8'));var jayson=require(_0x152e('0x9'));var client=jayson[_0x152e('0xa')]['http']({'port':0x232a});config[_0x152e('0xb')]=_[_0x152e('0xc')](config[_0x152e('0xb')],{'host':_0x152e('0xd'),'port':0x18eb});var socket=require(_0x152e('0xe'))(new Redis(config[_0x152e('0xb')]));require('./whatsappQueue.socket')[_0x152e('0xf')](socket);function respondWithRpcPromise(_0x40c763,_0x1354af,_0x39b366){return new BPromise(function(_0x1b572d,_0x23fd40){return client[_0x152e('0x10')](_0x40c763,_0x39b366)[_0x152e('0x11')](function(_0x5bafd7){logger['info']('WhatsappQueue,\x20%s,\x20%s',_0x1354af,_0x152e('0x12'));logger[_0x152e('0x13')](_0x152e('0x14'),_0x1354af,'request\x20sent',JSON['stringify'](_0x5bafd7));if(_0x5bafd7[_0x152e('0x15')]){if(_0x5bafd7[_0x152e('0x15')]['code']===0x1f4){logger[_0x152e('0x15')](_0x152e('0x16'),_0x1354af,_0x5bafd7[_0x152e('0x15')][_0x152e('0x17')]);return _0x23fd40(_0x5bafd7[_0x152e('0x15')][_0x152e('0x17')]);}logger[_0x152e('0x15')](_0x152e('0x16'),_0x1354af,_0x5bafd7[_0x152e('0x15')][_0x152e('0x17')]);return _0x1b572d(_0x5bafd7['error']['message']);}else{logger[_0x152e('0x18')](_0x152e('0x16'),_0x1354af,_0x152e('0x12'));_0x1b572d(_0x5bafd7[_0x152e('0x19')][_0x152e('0x17')]);}})[_0x152e('0x1a')](function(_0x592ee4){logger[_0x152e('0x15')](_0x152e('0x16'),_0x1354af,_0x592ee4);_0x23fd40(_0x592ee4);});});}exports[_0x152e('0x1b')]=function(_0x188b5e){var _0x1177bf=this;return new Promise(function(_0x2fee6c,_0x4e2ba7){return db[_0x152e('0x1c')]['findAll']({'raw':_0x188b5e[_0x152e('0x1d')]?_0x188b5e[_0x152e('0x1d')][_0x152e('0x1e')]===undefined?!![]:![]:!![],'where':_0x188b5e[_0x152e('0x1d')]?_0x188b5e[_0x152e('0x1d')][_0x152e('0x1f')]||null:null,'attributes':_0x188b5e[_0x152e('0x1d')]?_0x188b5e[_0x152e('0x1d')][_0x152e('0x20')]||null:null,'limit':_0x188b5e[_0x152e('0x1d')]?_0x188b5e[_0x152e('0x1d')][_0x152e('0x21')]||null:null,'include':_0x188b5e[_0x152e('0x1d')]?_0x188b5e['options'][_0x152e('0x22')]?_[_0x152e('0x23')](_0x188b5e[_0x152e('0x1d')]['include'],function(_0x2c2512){return{'model':db[_0x2c2512['model']],'as':_0x2c2512['as'],'attributes':_0x2c2512[_0x152e('0x20')],'include':_0x2c2512[_0x152e('0x22')]?_[_0x152e('0x23')](_0x2c2512['include'],function(_0x2a4200){return{'model':db[_0x2a4200[_0x152e('0x24')]],'as':_0x2a4200['as'],'attributes':_0x2a4200[_0x152e('0x20')],'include':_0x2a4200['include']?_[_0x152e('0x23')](_0x2a4200[_0x152e('0x22')],function(_0x500990){return{'model':db[_0x500990[_0x152e('0x24')]],'as':_0x500990['as'],'attributes':_0x500990[_0x152e('0x20')]};}):[]};}):[]};}):[]:[]})[_0x152e('0x11')](function(_0xf2e238){logger[_0x152e('0x18')](_0x152e('0x1b'),_0x188b5e);logger[_0x152e('0x13')](_0x152e('0x1b'),_0x188b5e,JSON[_0x152e('0x25')](_0xf2e238));_0x2fee6c(_0xf2e238);})[_0x152e('0x1a')](function(_0x2ebf12){logger[_0x152e('0x15')]('GetWhatsappQueue',_0x2ebf12[_0x152e('0x17')],_0x188b5e);_0x4e2ba7(_0x1177bf[_0x152e('0x15')](0x1f4,_0x2ebf12['message']));});});};exports[_0x152e('0x26')]=function(_0x25c057){var _0x5b5a01=this;return new Promise(function(_0x2b5558,_0x350a2b){return db[_0x152e('0x1c')][_0x152e('0x27')]({'raw':_0x25c057[_0x152e('0x1d')]?_0x25c057[_0x152e('0x1d')][_0x152e('0x1e')]===undefined?!![]:![]:!![],'where':_0x25c057[_0x152e('0x1d')]?_0x25c057[_0x152e('0x1d')][_0x152e('0x1f')]||null:null,'attributes':_0x25c057[_0x152e('0x1d')]?_0x25c057['options'][_0x152e('0x20')]||null:null,'include':_0x25c057[_0x152e('0x1d')]?_0x25c057[_0x152e('0x1d')][_0x152e('0x22')]?_[_0x152e('0x23')](_0x25c057[_0x152e('0x1d')][_0x152e('0x22')],function(_0x2127a0){return{'model':db[_0x2127a0[_0x152e('0x24')]],'as':_0x2127a0['as'],'attributes':_0x2127a0['attributes'],'include':_0x2127a0[_0x152e('0x22')]?_[_0x152e('0x23')](_0x2127a0[_0x152e('0x22')],function(_0x3a6fea){return{'model':db[_0x3a6fea[_0x152e('0x24')]],'as':_0x3a6fea['as'],'attributes':_0x3a6fea[_0x152e('0x20')],'include':_0x3a6fea[_0x152e('0x22')]?_[_0x152e('0x23')](_0x3a6fea[_0x152e('0x22')],function(_0x24d3de){return{'model':db[_0x24d3de[_0x152e('0x24')]],'as':_0x24d3de['as'],'attributes':_0x24d3de[_0x152e('0x20')]};}):[]};}):[]};}):[]:[]})[_0x152e('0x11')](function(_0x7fd15d){logger[_0x152e('0x18')](_0x152e('0x26'),_0x25c057);logger[_0x152e('0x13')](_0x152e('0x26'),_0x25c057,JSON[_0x152e('0x25')](_0x7fd15d));_0x2b5558(_0x7fd15d);})[_0x152e('0x1a')](function(_0x1042ee){logger[_0x152e('0x15')](_0x152e('0x26'),_0x1042ee[_0x152e('0x17')],_0x25c057);_0x350a2b(_0x5b5a01[_0x152e('0x15')](0x1f4,_0x1042ee[_0x152e('0x17')]));});});};
\ No newline at end of file
+var _0x0c95=['client','defaults','localhost','redis','./whatsappQueue.socket','register','request','WhatsappQueue,\x20%s,\x20%s','request\x20sent','debug','WhatsappQueue,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','GetWhatsappQueue','findAll','options','raw','where','attributes','limit','include','model','map','then','catch','ShowWhatsappQueue','WhatsappQueue','lodash','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise'];(function(_0x461be4,_0x2f8a40){var _0x5c89a0=function(_0x392258){while(--_0x392258){_0x461be4['push'](_0x461be4['shift']());}};_0x5c89a0(++_0x2f8a40);}(_0x0c95,0x6a));var _0x50c9=function(_0x50b57f,_0x2f01e9){_0x50b57f=_0x50b57f-0x0;var _0x4386fd=_0x0c95[_0x50b57f];return _0x4386fd;};'use strict';var _=require(_0x50c9('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x50c9('0x1'));var rs=require(_0x50c9('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x50c9('0x3'))['db'];var utils=require(_0x50c9('0x4'));var logger=require(_0x50c9('0x5'))('rpc');var config=require(_0x50c9('0x6'));var jayson=require(_0x50c9('0x7'));var client=jayson[_0x50c9('0x8')]['http']({'port':0x232a});config['redis']=_[_0x50c9('0x9')](config['redis'],{'host':_0x50c9('0xa'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x50c9('0xb')]));require(_0x50c9('0xc'))[_0x50c9('0xd')](socket);function respondWithRpcPromise(_0x57fefe,_0x3a18c2,_0x13360d){return new BPromise(function(_0x5d0cc9,_0x2ba8d6){return client[_0x50c9('0xe')](_0x57fefe,_0x13360d)['then'](function(_0x15ffef){logger['info'](_0x50c9('0xf'),_0x3a18c2,_0x50c9('0x10'));logger[_0x50c9('0x11')](_0x50c9('0x12'),_0x3a18c2,_0x50c9('0x10'),JSON[_0x50c9('0x13')](_0x15ffef));if(_0x15ffef[_0x50c9('0x14')]){if(_0x15ffef[_0x50c9('0x14')]['code']===0x1f4){logger[_0x50c9('0x14')](_0x50c9('0xf'),_0x3a18c2,_0x15ffef[_0x50c9('0x14')][_0x50c9('0x15')]);return _0x2ba8d6(_0x15ffef[_0x50c9('0x14')][_0x50c9('0x15')]);}logger[_0x50c9('0x14')]('WhatsappQueue,\x20%s,\x20%s',_0x3a18c2,_0x15ffef[_0x50c9('0x14')][_0x50c9('0x15')]);return _0x5d0cc9(_0x15ffef[_0x50c9('0x14')]['message']);}else{logger[_0x50c9('0x16')](_0x50c9('0xf'),_0x3a18c2,_0x50c9('0x10'));_0x5d0cc9(_0x15ffef[_0x50c9('0x17')][_0x50c9('0x15')]);}})['catch'](function(_0x25a82d){logger[_0x50c9('0x14')](_0x50c9('0xf'),_0x3a18c2,_0x25a82d);_0x2ba8d6(_0x25a82d);});});}exports[_0x50c9('0x18')]=function(_0x1e7b67){var _0x561030=this;return new Promise(function(_0x4ff63f,_0x37a647){return db['WhatsappQueue'][_0x50c9('0x19')]({'raw':_0x1e7b67[_0x50c9('0x1a')]?_0x1e7b67['options'][_0x50c9('0x1b')]===undefined?!![]:![]:!![],'where':_0x1e7b67['options']?_0x1e7b67['options'][_0x50c9('0x1c')]||null:null,'attributes':_0x1e7b67[_0x50c9('0x1a')]?_0x1e7b67['options'][_0x50c9('0x1d')]||null:null,'limit':_0x1e7b67[_0x50c9('0x1a')]?_0x1e7b67['options'][_0x50c9('0x1e')]||null:null,'include':_0x1e7b67[_0x50c9('0x1a')]?_0x1e7b67[_0x50c9('0x1a')][_0x50c9('0x1f')]?_['map'](_0x1e7b67['options']['include'],function(_0x5255dc){return{'model':db[_0x5255dc[_0x50c9('0x20')]],'as':_0x5255dc['as'],'attributes':_0x5255dc[_0x50c9('0x1d')],'include':_0x5255dc['include']?_[_0x50c9('0x21')](_0x5255dc[_0x50c9('0x1f')],function(_0x1f76ae){return{'model':db[_0x1f76ae['model']],'as':_0x1f76ae['as'],'attributes':_0x1f76ae[_0x50c9('0x1d')],'include':_0x1f76ae[_0x50c9('0x1f')]?_[_0x50c9('0x21')](_0x1f76ae[_0x50c9('0x1f')],function(_0x13f682){return{'model':db[_0x13f682[_0x50c9('0x20')]],'as':_0x13f682['as'],'attributes':_0x13f682[_0x50c9('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x50c9('0x22')](function(_0x25d19b){logger['info']('GetWhatsappQueue',_0x1e7b67);logger[_0x50c9('0x11')](_0x50c9('0x18'),_0x1e7b67,JSON['stringify'](_0x25d19b));_0x4ff63f(_0x25d19b);})[_0x50c9('0x23')](function(_0x550ae8){logger[_0x50c9('0x14')](_0x50c9('0x18'),_0x550ae8[_0x50c9('0x15')],_0x1e7b67);_0x37a647(_0x561030[_0x50c9('0x14')](0x1f4,_0x550ae8[_0x50c9('0x15')]));});});};exports[_0x50c9('0x24')]=function(_0x4dfe91){var _0x3e4761=this;return new Promise(function(_0x546227,_0x657936){return db[_0x50c9('0x25')]['find']({'raw':_0x4dfe91[_0x50c9('0x1a')]?_0x4dfe91[_0x50c9('0x1a')][_0x50c9('0x1b')]===undefined?!![]:![]:!![],'where':_0x4dfe91['options']?_0x4dfe91[_0x50c9('0x1a')][_0x50c9('0x1c')]||null:null,'attributes':_0x4dfe91[_0x50c9('0x1a')]?_0x4dfe91[_0x50c9('0x1a')][_0x50c9('0x1d')]||null:null,'include':_0x4dfe91[_0x50c9('0x1a')]?_0x4dfe91[_0x50c9('0x1a')]['include']?_[_0x50c9('0x21')](_0x4dfe91[_0x50c9('0x1a')][_0x50c9('0x1f')],function(_0x2b6919){return{'model':db[_0x2b6919[_0x50c9('0x20')]],'as':_0x2b6919['as'],'attributes':_0x2b6919['attributes'],'include':_0x2b6919[_0x50c9('0x1f')]?_[_0x50c9('0x21')](_0x2b6919[_0x50c9('0x1f')],function(_0x37c6f4){return{'model':db[_0x37c6f4[_0x50c9('0x20')]],'as':_0x37c6f4['as'],'attributes':_0x37c6f4['attributes'],'include':_0x37c6f4[_0x50c9('0x1f')]?_[_0x50c9('0x21')](_0x37c6f4[_0x50c9('0x1f')],function(_0x3ca09d){return{'model':db[_0x3ca09d[_0x50c9('0x20')]],'as':_0x3ca09d['as'],'attributes':_0x3ca09d[_0x50c9('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x50c9('0x22')](function(_0x12c015){logger[_0x50c9('0x16')](_0x50c9('0x24'),_0x4dfe91);logger['debug'](_0x50c9('0x24'),_0x4dfe91,JSON[_0x50c9('0x13')](_0x12c015));_0x546227(_0x12c015);})['catch'](function(_0x1bdb94){logger['error'](_0x50c9('0x24'),_0x1bdb94[_0x50c9('0x15')],_0x4dfe91);_0x657936(_0x3e4761['error'](0x1f4,_0x1bdb94[_0x50c9('0x15')]));});});};
\ No newline at end of file
index e4939a5..3ed1591 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc965=['./whatsappQueue.events','save','remove','update','emit','removeListener','register','length','whatsappQueue:'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0xc965,0x18c));var _0x5c96=function(_0xb4ec3a,_0x2bace0){_0xb4ec3a=_0xb4ec3a-0x0;var _0x1b83db=_0xc965[_0xb4ec3a];return _0x1b83db;};'use strict';var WhatsappQueueEvents=require(_0x5c96('0x0'));var events=[_0x5c96('0x1'),_0x5c96('0x2'),_0x5c96('0x3')];function createListener(_0x40fb4b,_0x1c24e9){return function(_0x4cf65f){_0x1c24e9[_0x5c96('0x4')](_0x40fb4b,_0x4cf65f);};}function removeListener(_0x48ad9b,_0x583364){return function(){WhatsappQueueEvents[_0x5c96('0x5')](_0x48ad9b,_0x583364);};}exports[_0x5c96('0x6')]=function(_0x5734d7){for(var _0x18db45=0x0,_0x62dbe=events[_0x5c96('0x7')];_0x18db45<_0x62dbe;_0x18db45++){var _0x285aa4=events[_0x18db45];var _0x47bf73=createListener(_0x5c96('0x8')+_0x285aa4,_0x5734d7);WhatsappQueueEvents['on'](_0x285aa4,_0x47bf73);}};
\ No newline at end of file
+var _0xb439=['update','emit','removeListener','register','length','whatsappQueue:','./whatsappQueue.events','save','remove'];(function(_0x2cf97a,_0x336128){var _0x435f47=function(_0x11c869){while(--_0x11c869){_0x2cf97a['push'](_0x2cf97a['shift']());}};_0x435f47(++_0x336128);}(_0xb439,0xa8));var _0x9b43=function(_0x53ccf2,_0x13cb67){_0x53ccf2=_0x53ccf2-0x0;var _0x5a2964=_0xb439[_0x53ccf2];return _0x5a2964;};'use strict';var WhatsappQueueEvents=require(_0x9b43('0x0'));var events=[_0x9b43('0x1'),_0x9b43('0x2'),_0x9b43('0x3')];function createListener(_0x38d8c0,_0x322864){return function(_0x44a30e){_0x322864[_0x9b43('0x4')](_0x38d8c0,_0x44a30e);};}function removeListener(_0x30814c,_0x828cb0){return function(){WhatsappQueueEvents[_0x9b43('0x5')](_0x30814c,_0x828cb0);};}exports[_0x9b43('0x6')]=function(_0x54d42c){for(var _0x215e5f=0x0,_0x336654=events[_0x9b43('0x7')];_0x215e5f<_0x336654;_0x215e5f++){var _0x1d84d2=events[_0x215e5f];var _0x378993=createListener(_0x9b43('0x8')+_0x1d84d2,_0x54d42c);WhatsappQueueEvents['on'](_0x1d84d2,_0x378993);}};
\ No newline at end of file
index c396fe6..de3bebf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x07f7=['index','/describe','isAuthenticated','describe','/:id','show','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','get'];(function(_0x8c184d,_0x43e7cb){var _0xf38b4f=function(_0x2c76e0){while(--_0x2c76e0){_0x8c184d['push'](_0x8c184d['shift']());}};_0xf38b4f(++_0x43e7cb);}(_0x07f7,0x1f1));var _0x707f=function(_0x2e476a,_0x1c655d){_0x2e476a=_0x2e476a-0x0;var _0x188142=_0x07f7[_0x2e476a];return _0x188142;};'use strict';var multer=require(_0x707f('0x0'));var util=require(_0x707f('0x1'));var path=require(_0x707f('0x2'));var timeout=require(_0x707f('0x3'));var express=require(_0x707f('0x4'));var router=express[_0x707f('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x707f('0x6'));var interaction=require(_0x707f('0x7'));var config=require('../../config/environment');var controller=require('./whatsappQueueReport.controller');router[_0x707f('0x8')]('/',auth['isAuthenticated'](),controller[_0x707f('0x9')]);router['get'](_0x707f('0xa'),auth[_0x707f('0xb')](),controller[_0x707f('0xc')]);router[_0x707f('0x8')](_0x707f('0xd'),auth[_0x707f('0xb')](),controller[_0x707f('0xe')]);router[_0x707f('0xf')]('/',auth[_0x707f('0xb')](),controller[_0x707f('0x10')]);router[_0x707f('0x11')](_0x707f('0xd'),auth[_0x707f('0xb')](),controller[_0x707f('0x12')]);router[_0x707f('0x13')](_0x707f('0xd'),auth[_0x707f('0xb')](),controller[_0x707f('0x14')]);module[_0x707f('0x15')]=router;
\ No newline at end of file
+var _0xfe2b=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','/describe','isAuthenticated','describe','/:id','show','create','put','delete','exports','multer'];(function(_0xc78832,_0x27a347){var _0x21753a=function(_0x2efa96){while(--_0x2efa96){_0xc78832['push'](_0xc78832['shift']());}};_0x21753a(++_0x27a347);}(_0xfe2b,0xc7));var _0xbfe2=function(_0x1198b0,_0x474734){_0x1198b0=_0x1198b0-0x0;var _0x2af6fe=_0xfe2b[_0x1198b0];return _0x2af6fe;};'use strict';var multer=require(_0xbfe2('0x0'));var util=require(_0xbfe2('0x1'));var path=require(_0xbfe2('0x2'));var timeout=require(_0xbfe2('0x3'));var express=require(_0xbfe2('0x4'));var router=express[_0xbfe2('0x5')]();var fs_extra=require(_0xbfe2('0x6'));var auth=require(_0xbfe2('0x7'));var interaction=require(_0xbfe2('0x8'));var config=require(_0xbfe2('0x9'));var controller=require('./whatsappQueueReport.controller');router[_0xbfe2('0xa')]('/',auth['isAuthenticated'](),controller['index']);router[_0xbfe2('0xa')](_0xbfe2('0xb'),auth[_0xbfe2('0xc')](),controller[_0xbfe2('0xd')]);router[_0xbfe2('0xa')](_0xbfe2('0xe'),auth[_0xbfe2('0xc')](),controller[_0xbfe2('0xf')]);router['post']('/',auth[_0xbfe2('0xc')](),controller[_0xbfe2('0x10')]);router[_0xbfe2('0x11')]('/:id',auth[_0xbfe2('0xc')](),controller['update']);router[_0xbfe2('0x12')](_0xbfe2('0xe'),auth[_0xbfe2('0xc')](),controller['destroy']);module[_0xbfe2('0x13')]=router;
\ No newline at end of file
index 670d6e3..23fca8f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['exports','STRING','DATE','sequelize'];(function(_0x3ecc57,_0x41d254){var _0xa22649=function(_0x4ee537){while(--_0x4ee537){_0x3ecc57['push'](_0x3ecc57['shift']());}};_0xa22649(++_0x41d254);}(_0x9957,0x93));var _0x7995=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0x9957[_0x4cf98e];return _0x1623ac;};'use strict';var Sequelize=require(_0x7995('0x0'));module[_0x7995('0x1')]={'uniqueid':{'type':Sequelize[_0x7995('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0x7995('0x2')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0x7995('0x3')]},'acceptAt':{'type':Sequelize[_0x7995('0x3')]},'exitAt':{'type':Sequelize[_0x7995('0x3')]},'reason':{'type':Sequelize[_0x7995('0x2')]}};
\ No newline at end of file
+var _0x9957=['exports','STRING','DATE','sequelize'];(function(_0xdb827a,_0x488400){var _0x103265=function(_0x5736c5){while(--_0x5736c5){_0xdb827a['push'](_0xdb827a['shift']());}};_0x103265(++_0x488400);}(_0x9957,0x93));var _0x7995=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x9957[_0x3947c9];return _0x2e7871;};'use strict';var Sequelize=require(_0x7995('0x0'));module[_0x7995('0x1')]={'uniqueid':{'type':Sequelize[_0x7995('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0x7995('0x2')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0x7995('0x3')]},'acceptAt':{'type':Sequelize[_0x7995('0x3')]},'exitAt':{'type':Sequelize[_0x7995('0x3')]},'reason':{'type':Sequelize[_0x7995('0x2')]}};
\ No newline at end of file
index 2898e46..77aa282 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbee3=['desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','end','error','stack','name','send','map','WhatsappQueueReport','rawAttributes','type','key','model','keys','query','attributes','intersection','fields','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','length','body','find','describe','rimraf','request-promise','moment','mustache','util','path','to-csv','ejs','lodash','squel','crypto','jsforce'];(function(_0x616290,_0x280b7f){var _0x453879=function(_0x27bda7){while(--_0x27bda7){_0x616290['push'](_0x616290['shift']());}};_0x453879(++_0x280b7f);}(_0xbee3,0xd5));var _0x3bee=function(_0x4c684b,_0x39cce3){_0x4c684b=_0x4c684b-0x0;var _0x51b9d9=_0xbee3[_0x4c684b];return _0x51b9d9;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x3bee('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x3bee('0x1'));var moment=require(_0x3bee('0x2'));var BPromise=require('bluebird');var Mustache=require(_0x3bee('0x3'));var util=require(_0x3bee('0x4'));var path=require(_0x3bee('0x5'));var sox=require('sox');var csv=require(_0x3bee('0x6'));var ejs=require(_0x3bee('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x3bee('0x8'));var squel=require(_0x3bee('0x9'));var crypto=require(_0x3bee('0xa'));var jsforce=require(_0x3bee('0xb'));var deskjs=require(_0x3bee('0xc'));var toCsv=require(_0x3bee('0x6'));var querystring=require(_0x3bee('0xd'));var Papa=require('papaparse');var Redis=require(_0x3bee('0xe'));var authService=require(_0x3bee('0xf'));var qs=require(_0x3bee('0x10'));var as=require(_0x3bee('0x11'));var hardwareService=require(_0x3bee('0x12'));var logger=require(_0x3bee('0x13'))('api');var utils=require(_0x3bee('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x3bee('0x15'));var db=require(_0x3bee('0x16'))['db'];function respondWithStatusCode(_0x407526,_0x6950d0){_0x6950d0=_0x6950d0||0xcc;return function(_0x410124){if(_0x410124){return _0x407526[_0x3bee('0x17')](_0x6950d0);}return _0x407526[_0x3bee('0x18')](_0x6950d0)['end']();};}function respondWithResult(_0xad01f9,_0x33504d){_0x33504d=_0x33504d||0xc8;return function(_0x31ac52){if(_0x31ac52){return _0xad01f9[_0x3bee('0x18')](_0x33504d)[_0x3bee('0x19')](_0x31ac52);}};}function respondWithFilteredResult(_0x5b9473,_0x558436){return function(_0x346767){if(_0x346767){var _0x515397=typeof _0x558436[_0x3bee('0x1a')]===_0x3bee('0x1b')&&typeof _0x558436['limit']==='undefined';var _0x1582a4=_0x346767[_0x3bee('0x1c')];var _0xfdba3b=_0x515397?0x0:_0x558436[_0x3bee('0x1a')];var _0x49095a=_0x515397?_0x346767[_0x3bee('0x1c')]:_0x558436[_0x3bee('0x1a')]+_0x558436[_0x3bee('0x1d')];var _0x49b32d;if(_0x49095a>=_0x1582a4){_0x49095a=_0x1582a4;_0x49b32d=0xc8;}else{_0x49b32d=0xce;}_0x5b9473[_0x3bee('0x18')](_0x49b32d);return _0x5b9473[_0x3bee('0x1e')](_0x3bee('0x1f'),_0xfdba3b+'-'+_0x49095a+'/'+_0x1582a4)['json'](_0x346767);}return null;};}function patchUpdates(_0x4f36af){return function(_0x1afd0f){try{jsonpatch[_0x3bee('0x20')](_0x1afd0f,_0x4f36af,!![]);}catch(_0x57aba4){return BPromise[_0x3bee('0x21')](_0x57aba4);}return _0x1afd0f[_0x3bee('0x22')]();};}function saveUpdates(_0x2eea75,_0x179e62){return function(_0x28c248){if(_0x28c248){return _0x28c248[_0x3bee('0x23')](_0x2eea75)[_0x3bee('0x24')](function(_0x582fa9){return _0x582fa9;});}return null;};}function removeEntity(_0x8ae4ca,_0x1ed0c1){return function(_0x1fed5a){if(_0x1fed5a){return _0x1fed5a[_0x3bee('0x25')]()['then'](function(){_0x8ae4ca[_0x3bee('0x18')](0xcc)[_0x3bee('0x26')]();});}};}function handleEntityNotFound(_0x1e0111,_0x4b4cd4){return function(_0x5ed022){if(!_0x5ed022){_0x1e0111[_0x3bee('0x17')](0x194);}return _0x5ed022;};}function handleError(_0x479f45,_0x5341e2){_0x5341e2=_0x5341e2||0x1f4;return function(_0x2c0e50){logger[_0x3bee('0x27')](_0x2c0e50[_0x3bee('0x28')]);if(_0x2c0e50['name']){delete _0x2c0e50[_0x3bee('0x29')];}_0x479f45[_0x3bee('0x18')](_0x5341e2)[_0x3bee('0x2a')](_0x2c0e50);};}exports['index']=function(_0x239fa4,_0xf08fb3){var _0x3a3d92={},_0x496abd={},_0x1115ed={'count':0x0,'rows':[]};var _0x24d523=_[_0x3bee('0x2b')](db[_0x3bee('0x2c')][_0x3bee('0x2d')],function(_0x559c2b){return{'name':_0x559c2b['fieldName'],'type':_0x559c2b[_0x3bee('0x2e')][_0x3bee('0x2f')]};});_0x496abd[_0x3bee('0x30')]=_[_0x3bee('0x2b')](_0x24d523,'name');_0x496abd['query']=_[_0x3bee('0x31')](_0x239fa4[_0x3bee('0x32')]);_0x496abd['filters']=_['intersection'](_0x496abd[_0x3bee('0x30')],_0x496abd[_0x3bee('0x32')]);_0x3a3d92[_0x3bee('0x33')]=_[_0x3bee('0x34')](_0x496abd[_0x3bee('0x30')],qs[_0x3bee('0x35')](_0x239fa4[_0x3bee('0x32')][_0x3bee('0x35')]));_0x3a3d92[_0x3bee('0x33')]=_0x3a3d92[_0x3bee('0x33')]['length']?_0x3a3d92['attributes']:_0x496abd[_0x3bee('0x30')];if(!_0x239fa4['query']['hasOwnProperty'](_0x3bee('0x36'))){_0x3a3d92[_0x3bee('0x1d')]=qs[_0x3bee('0x1d')](_0x239fa4[_0x3bee('0x32')][_0x3bee('0x1d')]);_0x3a3d92[_0x3bee('0x1a')]=qs[_0x3bee('0x1a')](_0x239fa4[_0x3bee('0x32')]['offset']);}_0x3a3d92[_0x3bee('0x37')]=qs[_0x3bee('0x38')](_0x239fa4['query'][_0x3bee('0x38')]);_0x3a3d92[_0x3bee('0x39')]=qs[_0x3bee('0x3a')](_[_0x3bee('0x3b')](_0x239fa4[_0x3bee('0x32')],_0x496abd['filters']),_0x24d523);if(_0x239fa4['query'][_0x3bee('0x3c')]){_0x3a3d92[_0x3bee('0x39')]=_[_0x3bee('0x3d')](_0x3a3d92[_0x3bee('0x39')],{'$or':_[_0x3bee('0x2b')](_0x24d523,function(_0x3d9656){if(_0x3d9656[_0x3bee('0x2e')]!==_0x3bee('0x3e')){var _0x2fb349={};_0x2fb349[_0x3d9656[_0x3bee('0x29')]]={'$like':'%'+_0x239fa4[_0x3bee('0x32')][_0x3bee('0x3c')]+'%'};return _0x2fb349;}})});}_0x3a3d92=_['merge']({},_0x3a3d92,_0x239fa4[_0x3bee('0x3f')]);var _0x1b5eca={'where':_0x3a3d92[_0x3bee('0x39')]};return db[_0x3bee('0x2c')][_0x3bee('0x1c')](_0x1b5eca)[_0x3bee('0x24')](function(_0x1622b9){_0x1115ed[_0x3bee('0x1c')]=_0x1622b9;if(_0x239fa4[_0x3bee('0x32')][_0x3bee('0x40')]){_0x3a3d92[_0x3bee('0x41')]=[{'all':!![]}];}return db[_0x3bee('0x2c')][_0x3bee('0x42')](_0x3a3d92);})['then'](function(_0x2b773d){_0x1115ed[_0x3bee('0x43')]=_0x2b773d;return _0x1115ed;})[_0x3bee('0x24')](respondWithFilteredResult(_0xf08fb3,_0x3a3d92))[_0x3bee('0x44')](handleError(_0xf08fb3,null));};exports[_0x3bee('0x45')]=function(_0x44489f,_0x13dd72){var _0xd1140d={'raw':!![],'where':{'id':_0x44489f[_0x3bee('0x46')]['id']}},_0x5d9e1b={};_0x5d9e1b[_0x3bee('0x30')]=_[_0x3bee('0x31')](db['WhatsappQueueReport'][_0x3bee('0x2d')]);_0x5d9e1b['query']=_[_0x3bee('0x31')](_0x44489f['query']);_0x5d9e1b['filters']=_[_0x3bee('0x34')](_0x5d9e1b[_0x3bee('0x30')],_0x5d9e1b[_0x3bee('0x32')]);_0xd1140d[_0x3bee('0x33')]=_[_0x3bee('0x34')](_0x5d9e1b['model'],qs['fields'](_0x44489f[_0x3bee('0x32')]['fields']));_0xd1140d[_0x3bee('0x33')]=_0xd1140d['attributes'][_0x3bee('0x47')]?_0xd1140d['attributes']:_0x5d9e1b[_0x3bee('0x30')];if(_0x44489f[_0x3bee('0x32')][_0x3bee('0x40')]){_0xd1140d[_0x3bee('0x41')]=[{'all':!![]}];}_0xd1140d=_['merge']({},_0xd1140d,_0x44489f['options']);return db[_0x3bee('0x2c')]['find'](_0xd1140d)['then'](handleEntityNotFound(_0x13dd72,null))['then'](respondWithResult(_0x13dd72,null))[_0x3bee('0x44')](handleError(_0x13dd72,null));};exports['create']=function(_0x125fa5,_0x33d615){return db[_0x3bee('0x2c')]['create'](_0x125fa5[_0x3bee('0x48')],{})['then'](respondWithResult(_0x33d615,0xc9))[_0x3bee('0x44')](handleError(_0x33d615,null));};exports['update']=function(_0x26ccd7,_0x16b096){if(_0x26ccd7[_0x3bee('0x48')]['id']){delete _0x26ccd7['body']['id'];}return db[_0x3bee('0x2c')][_0x3bee('0x49')]({'where':{'id':_0x26ccd7[_0x3bee('0x46')]['id']}})['then'](handleEntityNotFound(_0x16b096,null))['then'](saveUpdates(_0x26ccd7[_0x3bee('0x48')],null))[_0x3bee('0x24')](respondWithResult(_0x16b096,null))[_0x3bee('0x44')](handleError(_0x16b096,null));};exports[_0x3bee('0x25')]=function(_0x3b5d7a,_0x21ab40){return db[_0x3bee('0x2c')]['find']({'where':{'id':_0x3b5d7a[_0x3bee('0x46')]['id']}})[_0x3bee('0x24')](handleEntityNotFound(_0x21ab40,null))['then'](removeEntity(_0x21ab40,null))['catch'](handleError(_0x21ab40,null));};exports[_0x3bee('0x4a')]=function(_0x5d4755,_0x1cb54e){return db[_0x3bee('0x2c')][_0x3bee('0x4a')]()['then'](respondWithResult(_0x1cb54e,null))[_0x3bee('0x44')](handleError(_0x1cb54e,null));};
\ No newline at end of file
+var _0x0bb5=['attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','merge','where','VIRTUAL','options','findAll','show','params','rawAttributes','includeAll','include','find','catch','create','body','update','describe','eml-format','rimraf','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','json','offset','undefined','count','set','Content-Range','apply','reject','save','then','destroy','end','name','send','index','map','WhatsappQueueReport','fieldName','type','key','model','query','keys','filters','intersection'];(function(_0x3f3a9c,_0x7ff6cb){var _0x202bc2=function(_0x7821b0){while(--_0x7821b0){_0x3f3a9c['push'](_0x3f3a9c['shift']());}};_0x202bc2(++_0x7ff6cb);}(_0x0bb5,0x148));var _0x50bb=function(_0x5b9102,_0x4bb854){_0x5b9102=_0x5b9102-0x0;var _0x1f93e2=_0x0bb5[_0x5b9102];return _0x1f93e2;};'use strict';var emlformat=require(_0x50bb('0x0'));var rimraf=require(_0x50bb('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x50bb('0x2'));var moment=require(_0x50bb('0x3'));var BPromise=require(_0x50bb('0x4'));var Mustache=require(_0x50bb('0x5'));var util=require(_0x50bb('0x6'));var path=require(_0x50bb('0x7'));var sox=require(_0x50bb('0x8'));var csv=require(_0x50bb('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x50bb('0xa'));var squel=require(_0x50bb('0xb'));var crypto=require(_0x50bb('0xc'));var jsforce=require(_0x50bb('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x50bb('0xe'));var Papa=require(_0x50bb('0xf'));var Redis=require(_0x50bb('0x10'));var authService=require(_0x50bb('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x50bb('0x12'));var hardwareService=require(_0x50bb('0x13'));var logger=require(_0x50bb('0x14'))(_0x50bb('0x15'));var utils=require(_0x50bb('0x16'));var config=require(_0x50bb('0x17'));var licenseUtil=require(_0x50bb('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x226370,_0x58837d){_0x58837d=_0x58837d||0xcc;return function(_0x283f04){if(_0x283f04){return _0x226370[_0x50bb('0x19')](_0x58837d);}return _0x226370[_0x50bb('0x1a')](_0x58837d)['end']();};}function respondWithResult(_0x17007f,_0x309986){_0x309986=_0x309986||0xc8;return function(_0x3094f2){if(_0x3094f2){return _0x17007f['status'](_0x309986)[_0x50bb('0x1b')](_0x3094f2);}};}function respondWithFilteredResult(_0x5e8478,_0x21befa){return function(_0x3e1a51){if(_0x3e1a51){var _0x253073=typeof _0x21befa[_0x50bb('0x1c')]===_0x50bb('0x1d')&&typeof _0x21befa['limit']===_0x50bb('0x1d');var _0x174065=_0x3e1a51['count'];var _0x24ba19=_0x253073?0x0:_0x21befa['offset'];var _0x301f61=_0x253073?_0x3e1a51[_0x50bb('0x1e')]:_0x21befa['offset']+_0x21befa['limit'];var _0x43465b;if(_0x301f61>=_0x174065){_0x301f61=_0x174065;_0x43465b=0xc8;}else{_0x43465b=0xce;}_0x5e8478[_0x50bb('0x1a')](_0x43465b);return _0x5e8478[_0x50bb('0x1f')](_0x50bb('0x20'),_0x24ba19+'-'+_0x301f61+'/'+_0x174065)['json'](_0x3e1a51);}return null;};}function patchUpdates(_0x19dc5d){return function(_0x32bfc3){try{jsonpatch[_0x50bb('0x21')](_0x32bfc3,_0x19dc5d,!![]);}catch(_0x597e95){return BPromise[_0x50bb('0x22')](_0x597e95);}return _0x32bfc3[_0x50bb('0x23')]();};}function saveUpdates(_0x1344ec,_0x4825f8){return function(_0x1dbba2){if(_0x1dbba2){return _0x1dbba2['update'](_0x1344ec)[_0x50bb('0x24')](function(_0x3391da){return _0x3391da;});}return null;};}function removeEntity(_0x1a2a0b,_0x2ee87a){return function(_0x846311){if(_0x846311){return _0x846311[_0x50bb('0x25')]()['then'](function(){_0x1a2a0b[_0x50bb('0x1a')](0xcc)[_0x50bb('0x26')]();});}};}function handleEntityNotFound(_0x284a76,_0x3462c1){return function(_0x5234d7){if(!_0x5234d7){_0x284a76[_0x50bb('0x19')](0x194);}return _0x5234d7;};}function handleError(_0x4d38f7,_0x55e87b){_0x55e87b=_0x55e87b||0x1f4;return function(_0x2befd9){logger['error'](_0x2befd9['stack']);if(_0x2befd9[_0x50bb('0x27')]){delete _0x2befd9[_0x50bb('0x27')];}_0x4d38f7[_0x50bb('0x1a')](_0x55e87b)[_0x50bb('0x28')](_0x2befd9);};}exports[_0x50bb('0x29')]=function(_0x269479,_0x41a8ad){var _0x41d479={},_0x4f7514={},_0x44ce86={'count':0x0,'rows':[]};var _0x461cf3=_[_0x50bb('0x2a')](db[_0x50bb('0x2b')]['rawAttributes'],function(_0x13dc3c){return{'name':_0x13dc3c[_0x50bb('0x2c')],'type':_0x13dc3c[_0x50bb('0x2d')][_0x50bb('0x2e')]};});_0x4f7514[_0x50bb('0x2f')]=_[_0x50bb('0x2a')](_0x461cf3,_0x50bb('0x27'));_0x4f7514[_0x50bb('0x30')]=_[_0x50bb('0x31')](_0x269479[_0x50bb('0x30')]);_0x4f7514[_0x50bb('0x32')]=_[_0x50bb('0x33')](_0x4f7514['model'],_0x4f7514[_0x50bb('0x30')]);_0x41d479[_0x50bb('0x34')]=_[_0x50bb('0x33')](_0x4f7514[_0x50bb('0x2f')],qs[_0x50bb('0x35')](_0x269479[_0x50bb('0x30')][_0x50bb('0x35')]));_0x41d479[_0x50bb('0x34')]=_0x41d479[_0x50bb('0x34')][_0x50bb('0x36')]?_0x41d479[_0x50bb('0x34')]:_0x4f7514['model'];if(!_0x269479[_0x50bb('0x30')][_0x50bb('0x37')](_0x50bb('0x38'))){_0x41d479[_0x50bb('0x39')]=qs[_0x50bb('0x39')](_0x269479[_0x50bb('0x30')]['limit']);_0x41d479['offset']=qs[_0x50bb('0x1c')](_0x269479['query'][_0x50bb('0x1c')]);}_0x41d479[_0x50bb('0x3a')]=qs[_0x50bb('0x3b')](_0x269479[_0x50bb('0x30')][_0x50bb('0x3b')]);_0x41d479['where']=qs[_0x50bb('0x32')](_['pick'](_0x269479[_0x50bb('0x30')],_0x4f7514[_0x50bb('0x32')]),_0x461cf3);if(_0x269479[_0x50bb('0x30')]['filter']){_0x41d479['where']=_[_0x50bb('0x3c')](_0x41d479[_0x50bb('0x3d')],{'$or':_[_0x50bb('0x2a')](_0x461cf3,function(_0x21a180){if(_0x21a180['type']!==_0x50bb('0x3e')){var _0x4b75dc={};_0x4b75dc[_0x21a180['name']]={'$like':'%'+_0x269479[_0x50bb('0x30')]['filter']+'%'};return _0x4b75dc;}})});}_0x41d479=_[_0x50bb('0x3c')]({},_0x41d479,_0x269479[_0x50bb('0x3f')]);var _0x1ef231={'where':_0x41d479[_0x50bb('0x3d')]};return db[_0x50bb('0x2b')][_0x50bb('0x1e')](_0x1ef231)[_0x50bb('0x24')](function(_0x1cf782){_0x44ce86[_0x50bb('0x1e')]=_0x1cf782;if(_0x269479[_0x50bb('0x30')]['includeAll']){_0x41d479['include']=[{'all':!![]}];}return db[_0x50bb('0x2b')][_0x50bb('0x40')](_0x41d479);})[_0x50bb('0x24')](function(_0x1d929d){_0x44ce86['rows']=_0x1d929d;return _0x44ce86;})[_0x50bb('0x24')](respondWithFilteredResult(_0x41a8ad,_0x41d479))['catch'](handleError(_0x41a8ad,null));};exports[_0x50bb('0x41')]=function(_0x473a4c,_0x379944){var _0x40748d={'raw':!![],'where':{'id':_0x473a4c[_0x50bb('0x42')]['id']}},_0x1c438b={};_0x1c438b[_0x50bb('0x2f')]=_[_0x50bb('0x31')](db[_0x50bb('0x2b')][_0x50bb('0x43')]);_0x1c438b[_0x50bb('0x30')]=_[_0x50bb('0x31')](_0x473a4c[_0x50bb('0x30')]);_0x1c438b[_0x50bb('0x32')]=_[_0x50bb('0x33')](_0x1c438b[_0x50bb('0x2f')],_0x1c438b['query']);_0x40748d[_0x50bb('0x34')]=_['intersection'](_0x1c438b[_0x50bb('0x2f')],qs[_0x50bb('0x35')](_0x473a4c[_0x50bb('0x30')][_0x50bb('0x35')]));_0x40748d[_0x50bb('0x34')]=_0x40748d[_0x50bb('0x34')][_0x50bb('0x36')]?_0x40748d[_0x50bb('0x34')]:_0x1c438b[_0x50bb('0x2f')];if(_0x473a4c[_0x50bb('0x30')][_0x50bb('0x44')]){_0x40748d[_0x50bb('0x45')]=[{'all':!![]}];}_0x40748d=_[_0x50bb('0x3c')]({},_0x40748d,_0x473a4c[_0x50bb('0x3f')]);return db['WhatsappQueueReport'][_0x50bb('0x46')](_0x40748d)['then'](handleEntityNotFound(_0x379944,null))[_0x50bb('0x24')](respondWithResult(_0x379944,null))[_0x50bb('0x47')](handleError(_0x379944,null));};exports[_0x50bb('0x48')]=function(_0x35b440,_0x650e91){return db[_0x50bb('0x2b')][_0x50bb('0x48')](_0x35b440[_0x50bb('0x49')],{})['then'](respondWithResult(_0x650e91,0xc9))[_0x50bb('0x47')](handleError(_0x650e91,null));};exports[_0x50bb('0x4a')]=function(_0xf52a22,_0x13afe2){if(_0xf52a22[_0x50bb('0x49')]['id']){delete _0xf52a22['body']['id'];}return db[_0x50bb('0x2b')][_0x50bb('0x46')]({'where':{'id':_0xf52a22[_0x50bb('0x42')]['id']}})[_0x50bb('0x24')](handleEntityNotFound(_0x13afe2,null))[_0x50bb('0x24')](saveUpdates(_0xf52a22['body'],null))['then'](respondWithResult(_0x13afe2,null))[_0x50bb('0x47')](handleError(_0x13afe2,null));};exports['destroy']=function(_0x357d08,_0x57ee0e){return db[_0x50bb('0x2b')][_0x50bb('0x46')]({'where':{'id':_0x357d08[_0x50bb('0x42')]['id']}})['then'](handleEntityNotFound(_0x57ee0e,null))[_0x50bb('0x24')](removeEntity(_0x57ee0e,null))[_0x50bb('0x47')](handleError(_0x57ee0e,null));};exports['describe']=function(_0x184147,_0x1dff6a){return db[_0x50bb('0x2b')][_0x50bb('0x4b')]()['then'](respondWithResult(_0x1dff6a,null))[_0x50bb('0x47')](handleError(_0x1dff6a,null));};
\ No newline at end of file
index bbce280..c2efeb6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc72b=['lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./whatsappQueueReport.attributes','define','WhatsappQueueReport','report_whatsapp_queue','uniqueid'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xc72b,0x70));var _0xbc72=function(_0x1b8050,_0x4d12c6){_0x1b8050=_0x1b8050-0x0;var _0x1ec2b1=_0xc72b[_0x1b8050];return _0x1ec2b1;};'use strict';var _=require(_0xbc72('0x0'));var util=require(_0xbc72('0x1'));var logger=require(_0xbc72('0x2'))(_0xbc72('0x3'));var moment=require(_0xbc72('0x4'));var BPromise=require('bluebird');var rp=require(_0xbc72('0x5'));var fs=require('fs');var path=require(_0xbc72('0x6'));var rimraf=require(_0xbc72('0x7'));var config=require(_0xbc72('0x8'));var attributes=require(_0xbc72('0x9'));module['exports']=function(_0x3414e8,_0x2b4d55){return _0x3414e8[_0xbc72('0xa')](_0xbc72('0xb'),attributes,{'tableName':_0xbc72('0xc'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0xbc72('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x50ca=['./whatsappQueueReport.attributes','define','WhatsappQueueReport','uniqueid','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x3c234f,_0x5ecf91){var _0x26c9cd=function(_0x4ccf25){while(--_0x4ccf25){_0x3c234f['push'](_0x3c234f['shift']());}};_0x26c9cd(++_0x5ecf91);}(_0x50ca,0x64));var _0xa50c=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x50ca[_0x3bf83f];return _0x22c4a9;};'use strict';var _=require(_0xa50c('0x0'));var util=require('util');var logger=require(_0xa50c('0x1'))(_0xa50c('0x2'));var moment=require(_0xa50c('0x3'));var BPromise=require(_0xa50c('0x4'));var rp=require(_0xa50c('0x5'));var fs=require('fs');var path=require(_0xa50c('0x6'));var rimraf=require(_0xa50c('0x7'));var config=require('../../config/environment');var attributes=require(_0xa50c('0x8'));module['exports']=function(_0x37f5c7,_0x5569f9){return _0x37f5c7[_0xa50c('0x9')](_0xa50c('0xa'),attributes,{'tableName':'report_whatsapp_queue','paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0xa50c('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index 1a5c384..d0ae9bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3b7b=['create','options','raw','UpdateWhatsappQueueReport','WhatsappQueueReport','update','body','where','attributes','limit','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','then','info','request\x20sent','debug','WhatsappQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','WhatsappQueueReport,\x20%s,\x20%s','message','catch','CreateWhatsappQueueReport'];(function(_0x3aca22,_0x5e0345){var _0x6334c5=function(_0x30437d){while(--_0x30437d){_0x3aca22['push'](_0x3aca22['shift']());}};_0x6334c5(++_0x5e0345);}(_0x3b7b,0x196));var _0xb3b7=function(_0x3790ef,_0xb5670b){_0x3790ef=_0x3790ef-0x0;var _0x2c1f59=_0x3b7b[_0x3790ef];return _0x2c1f59;};'use strict';var _=require(_0xb3b7('0x0'));var util=require(_0xb3b7('0x1'));var moment=require(_0xb3b7('0x2'));var BPromise=require(_0xb3b7('0x3'));var rs=require(_0xb3b7('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb3b7('0x5'))['db'];var utils=require(_0xb3b7('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0xb3b7('0x7'));var jayson=require(_0xb3b7('0x8'));var client=jayson[_0xb3b7('0x9')][_0xb3b7('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x333d87,_0x30182f,_0x52f3ca){return new BPromise(function(_0xbadb00,_0x222bd9){return client['request'](_0x333d87,_0x52f3ca)[_0xb3b7('0xb')](function(_0x51cfa4){logger[_0xb3b7('0xc')]('WhatsappQueueReport,\x20%s,\x20%s',_0x30182f,_0xb3b7('0xd'));logger[_0xb3b7('0xe')](_0xb3b7('0xf'),_0x30182f,_0xb3b7('0xd'),JSON[_0xb3b7('0x10')](_0x51cfa4));if(_0x51cfa4[_0xb3b7('0x11')]){if(_0x51cfa4[_0xb3b7('0x11')][_0xb3b7('0x12')]===0x1f4){logger[_0xb3b7('0x11')](_0xb3b7('0x13'),_0x30182f,_0x51cfa4[_0xb3b7('0x11')][_0xb3b7('0x14')]);return _0x222bd9(_0x51cfa4[_0xb3b7('0x11')][_0xb3b7('0x14')]);}logger[_0xb3b7('0x11')](_0xb3b7('0x13'),_0x30182f,_0x51cfa4['error'][_0xb3b7('0x14')]);return _0xbadb00(_0x51cfa4[_0xb3b7('0x11')][_0xb3b7('0x14')]);}else{logger[_0xb3b7('0xc')]('WhatsappQueueReport,\x20%s,\x20%s',_0x30182f,_0xb3b7('0xd'));_0xbadb00(_0x51cfa4['result'][_0xb3b7('0x14')]);}})[_0xb3b7('0x15')](function(_0x378af4){logger['error'](_0xb3b7('0x13'),_0x30182f,_0x378af4);_0x222bd9(_0x378af4);});});}exports[_0xb3b7('0x16')]=function(_0x3d32bb){var _0x1c341c=this;return new Promise(function(_0x37c67b,_0x237518){return db['WhatsappQueueReport'][_0xb3b7('0x17')](_0x3d32bb['body'],{'raw':_0x3d32bb[_0xb3b7('0x18')]?_0x3d32bb[_0xb3b7('0x18')][_0xb3b7('0x19')]===undefined?!![]:![]:!![]})[_0xb3b7('0xb')](function(_0x5ef608){logger['info'](_0xb3b7('0x16'),_0x3d32bb);logger['debug'](_0xb3b7('0x16'),_0x3d32bb,JSON[_0xb3b7('0x10')](_0x5ef608));_0x37c67b(_0x5ef608);})['catch'](function(_0x143673){logger[_0xb3b7('0x11')](_0xb3b7('0x16'),_0x143673[_0xb3b7('0x14')],_0x3d32bb);_0x237518(_0x1c341c[_0xb3b7('0x11')](0x1f4,_0x143673[_0xb3b7('0x14')]));});});};exports[_0xb3b7('0x1a')]=function(_0x32ce6c){var _0x502e24=this;return new Promise(function(_0x3157cc,_0x465fac){return db[_0xb3b7('0x1b')][_0xb3b7('0x1c')](_0x32ce6c[_0xb3b7('0x1d')],{'raw':_0x32ce6c[_0xb3b7('0x18')]?_0x32ce6c[_0xb3b7('0x18')][_0xb3b7('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x32ce6c[_0xb3b7('0x18')]?_0x32ce6c[_0xb3b7('0x18')][_0xb3b7('0x1e')]||null:null,'attributes':_0x32ce6c[_0xb3b7('0x18')]?_0x32ce6c[_0xb3b7('0x18')][_0xb3b7('0x1f')]||null:null,'limit':_0x32ce6c['options']?_0x32ce6c[_0xb3b7('0x18')][_0xb3b7('0x20')]||null:null})[_0xb3b7('0xb')](function(_0x2826dd){logger[_0xb3b7('0xc')](_0xb3b7('0x1a'),_0x32ce6c);logger['debug']('UpdateWhatsappQueueReport',_0x32ce6c,JSON[_0xb3b7('0x10')](_0x2826dd));_0x3157cc(_0x2826dd);})[_0xb3b7('0x15')](function(_0x270578){logger[_0xb3b7('0x11')](_0xb3b7('0x1a'),_0x270578['message'],_0x32ce6c);_0x465fac(_0x502e24[_0xb3b7('0x11')](0x1f4,_0x270578['message']));});});};
\ No newline at end of file
+var _0x0643=['client','http','request','then','info','WhatsappQueueReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','CreateWhatsappQueueReport','WhatsappQueueReport','create','body','options','raw','attributes','limit','UpdateWhatsappQueueReport','lodash','util','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x9b7a64,_0x38d4a8){var _0x33fd98=function(_0x15c82b){while(--_0x15c82b){_0x9b7a64['push'](_0x9b7a64['shift']());}};_0x33fd98(++_0x38d4a8);}(_0x0643,0x19c));var _0x3064=function(_0x166146,_0x1f34c6){_0x166146=_0x166146-0x0;var _0x9c7390=_0x0643[_0x166146];return _0x9c7390;};'use strict';var _=require(_0x3064('0x0'));var util=require(_0x3064('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x3064('0x2'))['db'];var utils=require(_0x3064('0x3'));var logger=require(_0x3064('0x4'))(_0x3064('0x5'));var config=require(_0x3064('0x6'));var jayson=require(_0x3064('0x7'));var client=jayson[_0x3064('0x8')][_0x3064('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x49c8e9,_0x595d01,_0x59a138){return new BPromise(function(_0x2ab9fb,_0x42c2fe){return client[_0x3064('0xa')](_0x49c8e9,_0x59a138)[_0x3064('0xb')](function(_0x149a18){logger[_0x3064('0xc')](_0x3064('0xd'),_0x595d01,_0x3064('0xe'));logger[_0x3064('0xf')]('WhatsappQueueReport,\x20%s,\x20%s,\x20%s',_0x595d01,_0x3064('0xe'),JSON[_0x3064('0x10')](_0x149a18));if(_0x149a18[_0x3064('0x11')]){if(_0x149a18[_0x3064('0x11')][_0x3064('0x12')]===0x1f4){logger[_0x3064('0x11')](_0x3064('0xd'),_0x595d01,_0x149a18[_0x3064('0x11')][_0x3064('0x13')]);return _0x42c2fe(_0x149a18['error'][_0x3064('0x13')]);}logger[_0x3064('0x11')](_0x3064('0xd'),_0x595d01,_0x149a18[_0x3064('0x11')][_0x3064('0x13')]);return _0x2ab9fb(_0x149a18[_0x3064('0x11')]['message']);}else{logger['info'](_0x3064('0xd'),_0x595d01,'request\x20sent');_0x2ab9fb(_0x149a18['result'][_0x3064('0x13')]);}})[_0x3064('0x14')](function(_0x41e05e){logger[_0x3064('0x11')]('WhatsappQueueReport,\x20%s,\x20%s',_0x595d01,_0x41e05e);_0x42c2fe(_0x41e05e);});});}exports[_0x3064('0x15')]=function(_0x5ea036){var _0x1b500f=this;return new Promise(function(_0x428cc5,_0x3bfca3){return db[_0x3064('0x16')][_0x3064('0x17')](_0x5ea036[_0x3064('0x18')],{'raw':_0x5ea036[_0x3064('0x19')]?_0x5ea036[_0x3064('0x19')][_0x3064('0x1a')]===undefined?!![]:![]:!![]})[_0x3064('0xb')](function(_0x2e1006){logger[_0x3064('0xc')](_0x3064('0x15'),_0x5ea036);logger['debug'](_0x3064('0x15'),_0x5ea036,JSON[_0x3064('0x10')](_0x2e1006));_0x428cc5(_0x2e1006);})[_0x3064('0x14')](function(_0x2a0d7e){logger['error'](_0x3064('0x15'),_0x2a0d7e[_0x3064('0x13')],_0x5ea036);_0x3bfca3(_0x1b500f[_0x3064('0x11')](0x1f4,_0x2a0d7e[_0x3064('0x13')]));});});};exports['UpdateWhatsappQueueReport']=function(_0x277b67){var _0x28ffbc=this;return new Promise(function(_0x45d77b,_0x22aa92){return db[_0x3064('0x16')]['update'](_0x277b67['body'],{'raw':_0x277b67[_0x3064('0x19')]?_0x277b67[_0x3064('0x19')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x277b67[_0x3064('0x19')]?_0x277b67[_0x3064('0x19')]['where']||null:null,'attributes':_0x277b67[_0x3064('0x19')]?_0x277b67[_0x3064('0x19')][_0x3064('0x1b')]||null:null,'limit':_0x277b67[_0x3064('0x19')]?_0x277b67['options'][_0x3064('0x1c')]||null:null})['then'](function(_0x126979){logger[_0x3064('0xc')](_0x3064('0x1d'),_0x277b67);logger[_0x3064('0xf')](_0x3064('0x1d'),_0x277b67,JSON[_0x3064('0x10')](_0x126979));_0x45d77b(_0x126979);})[_0x3064('0x14')](function(_0x22e93f){logger[_0x3064('0x11')](_0x3064('0x1d'),_0x22e93f[_0x3064('0x13')],_0x277b67);_0x22aa92(_0x28ffbc[_0x3064('0x11')](0x1f4,_0x22e93f[_0x3064('0x13')]));});});};
\ No newline at end of file
index 743afc2..be0f383 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa045=['path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappTransferReport.controller','index','get','/describe','isAuthenticated','describe','/:id','show','post','create','put','update','delete','destroy','exports','multer','util'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa045,0x17e));var _0x5a04=function(_0x4eb088,_0x169913){_0x4eb088=_0x4eb088-0x0;var _0x205cdb=_0xa045[_0x4eb088];return _0x205cdb;};'use strict';var multer=require(_0x5a04('0x0'));var util=require(_0x5a04('0x1'));var path=require(_0x5a04('0x2'));var timeout=require(_0x5a04('0x3'));var express=require(_0x5a04('0x4'));var router=express[_0x5a04('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x5a04('0x6'));var interaction=require(_0x5a04('0x7'));var config=require(_0x5a04('0x8'));var controller=require(_0x5a04('0x9'));router['get']('/',auth['isAuthenticated'](),controller[_0x5a04('0xa')]);router[_0x5a04('0xb')](_0x5a04('0xc'),auth[_0x5a04('0xd')](),controller[_0x5a04('0xe')]);router[_0x5a04('0xb')](_0x5a04('0xf'),auth[_0x5a04('0xd')](),controller[_0x5a04('0x10')]);router[_0x5a04('0x11')]('/',auth[_0x5a04('0xd')](),controller[_0x5a04('0x12')]);router[_0x5a04('0x13')]('/:id',auth['isAuthenticated'](),controller[_0x5a04('0x14')]);router[_0x5a04('0x15')](_0x5a04('0xf'),auth[_0x5a04('0xd')](),controller[_0x5a04('0x16')]);module[_0x5a04('0x17')]=router;
\ No newline at end of file
+var _0x26aa=['util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./whatsappTransferReport.controller','get','isAuthenticated','describe','/:id','show','post','create','put','update','delete','destroy','exports','multer'];(function(_0x5969c2,_0x9aabad){var _0x3e6065=function(_0x321f1e){while(--_0x321f1e){_0x5969c2['push'](_0x5969c2['shift']());}};_0x3e6065(++_0x9aabad);}(_0x26aa,0x1df));var _0xa26a=function(_0x18cb8b,_0x53005a){_0x18cb8b=_0x18cb8b-0x0;var _0x340ffc=_0x26aa[_0x18cb8b];return _0x340ffc;};'use strict';var multer=require(_0xa26a('0x0'));var util=require(_0xa26a('0x1'));var path=require(_0xa26a('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xa26a('0x3')]();var fs_extra=require(_0xa26a('0x4'));var auth=require(_0xa26a('0x5'));var interaction=require(_0xa26a('0x6'));var config=require('../../config/environment');var controller=require(_0xa26a('0x7'));router[_0xa26a('0x8')]('/',auth[_0xa26a('0x9')](),controller['index']);router[_0xa26a('0x8')]('/describe',auth[_0xa26a('0x9')](),controller[_0xa26a('0xa')]);router[_0xa26a('0x8')](_0xa26a('0xb'),auth['isAuthenticated'](),controller[_0xa26a('0xc')]);router[_0xa26a('0xd')]('/',auth[_0xa26a('0x9')](),controller[_0xa26a('0xe')]);router[_0xa26a('0xf')](_0xa26a('0xb'),auth['isAuthenticated'](),controller[_0xa26a('0x10')]);router[_0xa26a('0x11')](_0xa26a('0xb'),auth['isAuthenticated'](),controller[_0xa26a('0x12')]);module[_0xa26a('0x13')]=router;
\ No newline at end of file
index a86ce5c..9971c7b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x866a=['exports','STRING','ENUM','account','agent','DATE'];(function(_0x46568a,_0x4f3299){var _0x2ab011=function(_0xe1f297){while(--_0xe1f297){_0x46568a['push'](_0x46568a['shift']());}};_0x2ab011(++_0x4f3299);}(_0x866a,0x156));var _0xa866=function(_0x68359d,_0x51477f){_0x68359d=_0x68359d-0x0;var _0x15d875=_0x866a[_0x68359d];return _0x15d875;};'use strict';var Sequelize=require('sequelize');module[_0xa866('0x0')]={'uniqueid':{'type':Sequelize[_0xa866('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0xa866('0x2')](_0xa866('0x3'),_0xa866('0x4'),'queue'),'allowNull':![]},'transferredAt':{'type':Sequelize[_0xa866('0x5')]}};
\ No newline at end of file
+var _0x7462=['DATE','sequelize','exports','account'];(function(_0x484e36,_0x4482d8){var _0xafc85d=function(_0xaba9c8){while(--_0xaba9c8){_0x484e36['push'](_0x484e36['shift']());}};_0xafc85d(++_0x4482d8);}(_0x7462,0x165));var _0x2746=function(_0x50e0b4,_0x1057f7){_0x50e0b4=_0x50e0b4-0x0;var _0x2fa8b0=_0x7462[_0x50e0b4];return _0x2fa8b0;};'use strict';var Sequelize=require(_0x2746('0x0'));module[_0x2746('0x1')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x2746('0x2'),'agent','queue'),'allowNull':![]},'transferredAt':{'type':Sequelize[_0x2746('0x3')]}};
\ No newline at end of file
index a3dc830..382b3e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x37c8=['filters','intersection','attributes','fields','hasOwnProperty','nolimit','offset','sort','where','filter','VIRTUAL','merge','options','WhatsappTransferReport','includeAll','include','findAll','show','params','keys','length','find','catch','body','destroy','describe','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','sox','ejs','fs-extra','lodash','squel','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','end','status','json','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','error','stack','name','send','index','rawAttributes','type','key','model','map','query'];(function(_0x3c8e08,_0x27aab8){var _0x4856a3=function(_0x5e4374){while(--_0x5e4374){_0x3c8e08['push'](_0x3c8e08['shift']());}};_0x4856a3(++_0x27aab8);}(_0x37c8,0x69));var _0x837c=function(_0x205e5a,_0x5c19fb){_0x205e5a=_0x205e5a-0x0;var _0x10da58=_0x37c8[_0x205e5a];return _0x10da58;};'use strict';var emlformat=require(_0x837c('0x0'));var rimraf=require(_0x837c('0x1'));var zipdir=require(_0x837c('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x837c('0x3'));var moment=require(_0x837c('0x4'));var BPromise=require(_0x837c('0x5'));var Mustache=require(_0x837c('0x6'));var util=require(_0x837c('0x7'));var path=require('path');var sox=require(_0x837c('0x8'));var csv=require('to-csv');var ejs=require(_0x837c('0x9'));var fs=require('fs');var fs_extra=require(_0x837c('0xa'));var _=require(_0x837c('0xb'));var squel=require(_0x837c('0xc'));var crypto=require(_0x837c('0xd'));var jsforce=require(_0x837c('0xe'));var deskjs=require(_0x837c('0xf'));var toCsv=require(_0x837c('0x10'));var querystring=require(_0x837c('0x11'));var Papa=require(_0x837c('0x12'));var Redis=require(_0x837c('0x13'));var authService=require('../../components/auth/service');var qs=require(_0x837c('0x14'));var as=require(_0x837c('0x15'));var hardwareService=require(_0x837c('0x16'));var logger=require('../../config/logger')(_0x837c('0x17'));var utils=require(_0x837c('0x18'));var config=require(_0x837c('0x19'));var licenseUtil=require(_0x837c('0x1a'));var db=require(_0x837c('0x1b'))['db'];function respondWithStatusCode(_0x59ef62,_0x40f063){_0x40f063=_0x40f063||0xcc;return function(_0x30352d){if(_0x30352d){return _0x59ef62[_0x837c('0x1c')](_0x40f063);}return _0x59ef62['status'](_0x40f063)[_0x837c('0x1d')]();};}function respondWithResult(_0x4a51e7,_0x2ffbab){_0x2ffbab=_0x2ffbab||0xc8;return function(_0x36a6b4){if(_0x36a6b4){return _0x4a51e7[_0x837c('0x1e')](_0x2ffbab)[_0x837c('0x1f')](_0x36a6b4);}};}function respondWithFilteredResult(_0x24e4d0,_0x4f5669){return function(_0x22dc4a){if(_0x22dc4a){var _0x36cd47=typeof _0x4f5669['offset']==='undefined'&&typeof _0x4f5669[_0x837c('0x20')]===_0x837c('0x21');var _0x7f510a=_0x22dc4a[_0x837c('0x22')];var _0x5e5a29=_0x36cd47?0x0:_0x4f5669['offset'];var _0x2e183e=_0x36cd47?_0x22dc4a[_0x837c('0x22')]:_0x4f5669['offset']+_0x4f5669[_0x837c('0x20')];var _0x2a57fc;if(_0x2e183e>=_0x7f510a){_0x2e183e=_0x7f510a;_0x2a57fc=0xc8;}else{_0x2a57fc=0xce;}_0x24e4d0['status'](_0x2a57fc);return _0x24e4d0[_0x837c('0x23')](_0x837c('0x24'),_0x5e5a29+'-'+_0x2e183e+'/'+_0x7f510a)['json'](_0x22dc4a);}return null;};}function patchUpdates(_0x1fc6da){return function(_0x134ecc){try{jsonpatch[_0x837c('0x25')](_0x134ecc,_0x1fc6da,!![]);}catch(_0x4ace68){return BPromise[_0x837c('0x26')](_0x4ace68);}return _0x134ecc[_0x837c('0x27')]();};}function saveUpdates(_0x3025d4,_0x205afe){return function(_0x575d8b){if(_0x575d8b){return _0x575d8b[_0x837c('0x28')](_0x3025d4)[_0x837c('0x29')](function(_0x2b6a5f){return _0x2b6a5f;});}return null;};}function removeEntity(_0x9d637a,_0x44b60b){return function(_0x378c40){if(_0x378c40){return _0x378c40['destroy']()[_0x837c('0x29')](function(){_0x9d637a['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x2db596,_0x446652){return function(_0x41b10a){if(!_0x41b10a){_0x2db596[_0x837c('0x1c')](0x194);}return _0x41b10a;};}function handleError(_0x4abd55,_0xebffab){_0xebffab=_0xebffab||0x1f4;return function(_0x5b4292){logger[_0x837c('0x2a')](_0x5b4292[_0x837c('0x2b')]);if(_0x5b4292[_0x837c('0x2c')]){delete _0x5b4292[_0x837c('0x2c')];}_0x4abd55[_0x837c('0x1e')](_0xebffab)[_0x837c('0x2d')](_0x5b4292);};}exports[_0x837c('0x2e')]=function(_0xf7a6e4,_0x599bae){var _0x2d8bd4={},_0x44a75a={},_0x2ca3f1={'count':0x0,'rows':[]};var _0x112a65=_['map'](db['WhatsappTransferReport'][_0x837c('0x2f')],function(_0x2079f1){return{'name':_0x2079f1['fieldName'],'type':_0x2079f1[_0x837c('0x30')][_0x837c('0x31')]};});_0x44a75a[_0x837c('0x32')]=_[_0x837c('0x33')](_0x112a65,_0x837c('0x2c'));_0x44a75a['query']=_['keys'](_0xf7a6e4[_0x837c('0x34')]);_0x44a75a[_0x837c('0x35')]=_[_0x837c('0x36')](_0x44a75a[_0x837c('0x32')],_0x44a75a['query']);_0x2d8bd4[_0x837c('0x37')]=_[_0x837c('0x36')](_0x44a75a['model'],qs[_0x837c('0x38')](_0xf7a6e4['query'][_0x837c('0x38')]));_0x2d8bd4['attributes']=_0x2d8bd4[_0x837c('0x37')]['length']?_0x2d8bd4[_0x837c('0x37')]:_0x44a75a[_0x837c('0x32')];if(!_0xf7a6e4[_0x837c('0x34')][_0x837c('0x39')](_0x837c('0x3a'))){_0x2d8bd4['limit']=qs[_0x837c('0x20')](_0xf7a6e4[_0x837c('0x34')][_0x837c('0x20')]);_0x2d8bd4[_0x837c('0x3b')]=qs[_0x837c('0x3b')](_0xf7a6e4[_0x837c('0x34')][_0x837c('0x3b')]);}_0x2d8bd4['order']=qs[_0x837c('0x3c')](_0xf7a6e4['query'][_0x837c('0x3c')]);_0x2d8bd4[_0x837c('0x3d')]=qs['filters'](_['pick'](_0xf7a6e4['query'],_0x44a75a[_0x837c('0x35')]),_0x112a65);if(_0xf7a6e4['query'][_0x837c('0x3e')]){_0x2d8bd4['where']=_['merge'](_0x2d8bd4['where'],{'$or':_[_0x837c('0x33')](_0x112a65,function(_0x194630){if(_0x194630[_0x837c('0x30')]!==_0x837c('0x3f')){var _0x2a92bb={};_0x2a92bb[_0x194630[_0x837c('0x2c')]]={'$like':'%'+_0xf7a6e4['query']['filter']+'%'};return _0x2a92bb;}})});}_0x2d8bd4=_[_0x837c('0x40')]({},_0x2d8bd4,_0xf7a6e4[_0x837c('0x41')]);var _0x238500={'where':_0x2d8bd4[_0x837c('0x3d')]};return db[_0x837c('0x42')]['count'](_0x238500)['then'](function(_0x1970fc){_0x2ca3f1[_0x837c('0x22')]=_0x1970fc;if(_0xf7a6e4[_0x837c('0x34')][_0x837c('0x43')]){_0x2d8bd4[_0x837c('0x44')]=[{'all':!![]}];}return db[_0x837c('0x42')][_0x837c('0x45')](_0x2d8bd4);})['then'](function(_0x5546fe){_0x2ca3f1['rows']=_0x5546fe;return _0x2ca3f1;})[_0x837c('0x29')](respondWithFilteredResult(_0x599bae,_0x2d8bd4))['catch'](handleError(_0x599bae,null));};exports[_0x837c('0x46')]=function(_0x86f8e0,_0x32ddb6){var _0x13326d={'raw':!![],'where':{'id':_0x86f8e0[_0x837c('0x47')]['id']}},_0x142d86={};_0x142d86[_0x837c('0x32')]=_[_0x837c('0x48')](db['WhatsappTransferReport']['rawAttributes']);_0x142d86[_0x837c('0x34')]=_[_0x837c('0x48')](_0x86f8e0[_0x837c('0x34')]);_0x142d86['filters']=_[_0x837c('0x36')](_0x142d86[_0x837c('0x32')],_0x142d86[_0x837c('0x34')]);_0x13326d[_0x837c('0x37')]=_['intersection'](_0x142d86[_0x837c('0x32')],qs[_0x837c('0x38')](_0x86f8e0['query'][_0x837c('0x38')]));_0x13326d[_0x837c('0x37')]=_0x13326d[_0x837c('0x37')][_0x837c('0x49')]?_0x13326d[_0x837c('0x37')]:_0x142d86[_0x837c('0x32')];if(_0x86f8e0[_0x837c('0x34')][_0x837c('0x43')]){_0x13326d['include']=[{'all':!![]}];}_0x13326d=_['merge']({},_0x13326d,_0x86f8e0[_0x837c('0x41')]);return db[_0x837c('0x42')][_0x837c('0x4a')](_0x13326d)[_0x837c('0x29')](handleEntityNotFound(_0x32ddb6,null))[_0x837c('0x29')](respondWithResult(_0x32ddb6,null))[_0x837c('0x4b')](handleError(_0x32ddb6,null));};exports['create']=function(_0x4107b9,_0x4efeb3){return db[_0x837c('0x42')]['create'](_0x4107b9[_0x837c('0x4c')],{})[_0x837c('0x29')](respondWithResult(_0x4efeb3,0xc9))['catch'](handleError(_0x4efeb3,null));};exports[_0x837c('0x28')]=function(_0xf9f16c,_0x4b635b){if(_0xf9f16c['body']['id']){delete _0xf9f16c['body']['id'];}return db[_0x837c('0x42')][_0x837c('0x4a')]({'where':{'id':_0xf9f16c[_0x837c('0x47')]['id']}})['then'](handleEntityNotFound(_0x4b635b,null))[_0x837c('0x29')](saveUpdates(_0xf9f16c[_0x837c('0x4c')],null))['then'](respondWithResult(_0x4b635b,null))[_0x837c('0x4b')](handleError(_0x4b635b,null));};exports[_0x837c('0x4d')]=function(_0x535e40,_0x5cdb40){return db['WhatsappTransferReport'][_0x837c('0x4a')]({'where':{'id':_0x535e40[_0x837c('0x47')]['id']}})[_0x837c('0x29')](handleEntityNotFound(_0x5cdb40,null))[_0x837c('0x29')](removeEntity(_0x5cdb40,null))[_0x837c('0x4b')](handleError(_0x5cdb40,null));};exports[_0x837c('0x4e')]=function(_0x2937b3,_0x4a034d){return db[_0x837c('0x42')][_0x837c('0x4e')]()['then'](respondWithResult(_0x4a034d,null))[_0x837c('0x4b')](handleError(_0x4a034d,null));};
\ No newline at end of file
+var _0x8f58=['json','offset','undefined','count','limit','set','Content-Range','update','then','destroy','error','stack','name','send','index','map','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filters','filter','merge','VIRTUAL','WhatsappTransferReport','includeAll','rows','catch','show','params','rawAttributes','include','options','create','body','find','describe','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','ejs','fs-extra','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','status','end'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x8f58,0x79));var _0x88f5=function(_0x14e91e,_0x2131d0){_0x14e91e=_0x14e91e-0x0;var _0x5ea830=_0x8f58[_0x14e91e];return _0x5ea830;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x88f5('0x0'));var jsonpatch=require(_0x88f5('0x1'));var rp=require(_0x88f5('0x2'));var moment=require(_0x88f5('0x3'));var BPromise=require(_0x88f5('0x4'));var Mustache=require(_0x88f5('0x5'));var util=require(_0x88f5('0x6'));var path=require('path');var sox=require(_0x88f5('0x7'));var csv=require('to-csv');var ejs=require(_0x88f5('0x8'));var fs=require('fs');var fs_extra=require(_0x88f5('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x88f5('0xa'));var deskjs=require(_0x88f5('0xb'));var toCsv=require(_0x88f5('0xc'));var querystring=require(_0x88f5('0xd'));var Papa=require(_0x88f5('0xe'));var Redis=require('ioredis');var authService=require(_0x88f5('0xf'));var qs=require(_0x88f5('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x88f5('0x11'));var logger=require(_0x88f5('0x12'))(_0x88f5('0x13'));var utils=require(_0x88f5('0x14'));var config=require(_0x88f5('0x15'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x223edd,_0x17becf){_0x17becf=_0x17becf||0xcc;return function(_0x288feb){if(_0x288feb){return _0x223edd[_0x88f5('0x16')](_0x17becf);}return _0x223edd[_0x88f5('0x17')](_0x17becf)[_0x88f5('0x18')]();};}function respondWithResult(_0x3b20fe,_0x576391){_0x576391=_0x576391||0xc8;return function(_0x3432e0){if(_0x3432e0){return _0x3b20fe[_0x88f5('0x17')](_0x576391)[_0x88f5('0x19')](_0x3432e0);}};}function respondWithFilteredResult(_0x17d9e8,_0x4009d9){return function(_0x4b8b02){if(_0x4b8b02){var _0x56f44d=typeof _0x4009d9[_0x88f5('0x1a')]===_0x88f5('0x1b')&&typeof _0x4009d9['limit']===_0x88f5('0x1b');var _0x41c5d1=_0x4b8b02[_0x88f5('0x1c')];var _0x228a9e=_0x56f44d?0x0:_0x4009d9['offset'];var _0x115f52=_0x56f44d?_0x4b8b02['count']:_0x4009d9['offset']+_0x4009d9[_0x88f5('0x1d')];var _0x509a3f;if(_0x115f52>=_0x41c5d1){_0x115f52=_0x41c5d1;_0x509a3f=0xc8;}else{_0x509a3f=0xce;}_0x17d9e8[_0x88f5('0x17')](_0x509a3f);return _0x17d9e8[_0x88f5('0x1e')](_0x88f5('0x1f'),_0x228a9e+'-'+_0x115f52+'/'+_0x41c5d1)[_0x88f5('0x19')](_0x4b8b02);}return null;};}function patchUpdates(_0x326add){return function(_0x8372a4){try{jsonpatch['apply'](_0x8372a4,_0x326add,!![]);}catch(_0x51c3b1){return BPromise['reject'](_0x51c3b1);}return _0x8372a4['save']();};}function saveUpdates(_0x3708e2,_0x3c423e){return function(_0x5daa78){if(_0x5daa78){return _0x5daa78[_0x88f5('0x20')](_0x3708e2)[_0x88f5('0x21')](function(_0x3a40db){return _0x3a40db;});}return null;};}function removeEntity(_0x5ee310,_0x332c61){return function(_0x41627d){if(_0x41627d){return _0x41627d[_0x88f5('0x22')]()[_0x88f5('0x21')](function(){_0x5ee310['status'](0xcc)[_0x88f5('0x18')]();});}};}function handleEntityNotFound(_0x100de9,_0x1495a6){return function(_0x474935){if(!_0x474935){_0x100de9[_0x88f5('0x16')](0x194);}return _0x474935;};}function handleError(_0x420c67,_0x378049){_0x378049=_0x378049||0x1f4;return function(_0x47557b){logger[_0x88f5('0x23')](_0x47557b[_0x88f5('0x24')]);if(_0x47557b['name']){delete _0x47557b[_0x88f5('0x25')];}_0x420c67['status'](_0x378049)[_0x88f5('0x26')](_0x47557b);};}exports[_0x88f5('0x27')]=function(_0x2742e6,_0x1b7e66){var _0x535daa={},_0x1209a4={},_0x218bd4={'count':0x0,'rows':[]};var _0x12d584=_[_0x88f5('0x28')](db['WhatsappTransferReport']['rawAttributes'],function(_0x29fb02){return{'name':_0x29fb02[_0x88f5('0x29')],'type':_0x29fb02[_0x88f5('0x2a')][_0x88f5('0x2b')]};});_0x1209a4[_0x88f5('0x2c')]=_[_0x88f5('0x28')](_0x12d584,_0x88f5('0x25'));_0x1209a4[_0x88f5('0x2d')]=_[_0x88f5('0x2e')](_0x2742e6[_0x88f5('0x2d')]);_0x1209a4['filters']=_[_0x88f5('0x2f')](_0x1209a4[_0x88f5('0x2c')],_0x1209a4[_0x88f5('0x2d')]);_0x535daa[_0x88f5('0x30')]=_[_0x88f5('0x2f')](_0x1209a4['model'],qs['fields'](_0x2742e6[_0x88f5('0x2d')][_0x88f5('0x31')]));_0x535daa[_0x88f5('0x30')]=_0x535daa[_0x88f5('0x30')][_0x88f5('0x32')]?_0x535daa['attributes']:_0x1209a4[_0x88f5('0x2c')];if(!_0x2742e6[_0x88f5('0x2d')]['hasOwnProperty'](_0x88f5('0x33'))){_0x535daa['limit']=qs[_0x88f5('0x1d')](_0x2742e6['query']['limit']);_0x535daa[_0x88f5('0x1a')]=qs[_0x88f5('0x1a')](_0x2742e6['query'][_0x88f5('0x1a')]);}_0x535daa[_0x88f5('0x34')]=qs['sort'](_0x2742e6['query'][_0x88f5('0x35')]);_0x535daa[_0x88f5('0x36')]=qs['filters'](_[_0x88f5('0x37')](_0x2742e6[_0x88f5('0x2d')],_0x1209a4[_0x88f5('0x38')]),_0x12d584);if(_0x2742e6[_0x88f5('0x2d')][_0x88f5('0x39')]){_0x535daa['where']=_[_0x88f5('0x3a')](_0x535daa[_0x88f5('0x36')],{'$or':_[_0x88f5('0x28')](_0x12d584,function(_0x58d810){if(_0x58d810[_0x88f5('0x2a')]!==_0x88f5('0x3b')){var _0x537d75={};_0x537d75[_0x58d810[_0x88f5('0x25')]]={'$like':'%'+_0x2742e6['query'][_0x88f5('0x39')]+'%'};return _0x537d75;}})});}_0x535daa=_[_0x88f5('0x3a')]({},_0x535daa,_0x2742e6['options']);var _0x5c226a={'where':_0x535daa[_0x88f5('0x36')]};return db[_0x88f5('0x3c')][_0x88f5('0x1c')](_0x5c226a)[_0x88f5('0x21')](function(_0xe5e4a0){_0x218bd4[_0x88f5('0x1c')]=_0xe5e4a0;if(_0x2742e6[_0x88f5('0x2d')][_0x88f5('0x3d')]){_0x535daa['include']=[{'all':!![]}];}return db['WhatsappTransferReport']['findAll'](_0x535daa);})[_0x88f5('0x21')](function(_0xa044f2){_0x218bd4[_0x88f5('0x3e')]=_0xa044f2;return _0x218bd4;})[_0x88f5('0x21')](respondWithFilteredResult(_0x1b7e66,_0x535daa))[_0x88f5('0x3f')](handleError(_0x1b7e66,null));};exports[_0x88f5('0x40')]=function(_0x180fe3,_0x2d1c6b){var _0x25a4ae={'raw':!![],'where':{'id':_0x180fe3[_0x88f5('0x41')]['id']}},_0x3fad84={};_0x3fad84['model']=_[_0x88f5('0x2e')](db[_0x88f5('0x3c')][_0x88f5('0x42')]);_0x3fad84[_0x88f5('0x2d')]=_[_0x88f5('0x2e')](_0x180fe3['query']);_0x3fad84[_0x88f5('0x38')]=_['intersection'](_0x3fad84[_0x88f5('0x2c')],_0x3fad84[_0x88f5('0x2d')]);_0x25a4ae['attributes']=_[_0x88f5('0x2f')](_0x3fad84['model'],qs[_0x88f5('0x31')](_0x180fe3[_0x88f5('0x2d')][_0x88f5('0x31')]));_0x25a4ae['attributes']=_0x25a4ae[_0x88f5('0x30')][_0x88f5('0x32')]?_0x25a4ae[_0x88f5('0x30')]:_0x3fad84[_0x88f5('0x2c')];if(_0x180fe3[_0x88f5('0x2d')][_0x88f5('0x3d')]){_0x25a4ae[_0x88f5('0x43')]=[{'all':!![]}];}_0x25a4ae=_[_0x88f5('0x3a')]({},_0x25a4ae,_0x180fe3[_0x88f5('0x44')]);return db[_0x88f5('0x3c')]['find'](_0x25a4ae)[_0x88f5('0x21')](handleEntityNotFound(_0x2d1c6b,null))[_0x88f5('0x21')](respondWithResult(_0x2d1c6b,null))[_0x88f5('0x3f')](handleError(_0x2d1c6b,null));};exports['create']=function(_0x293523,_0xd56b6a){return db[_0x88f5('0x3c')][_0x88f5('0x45')](_0x293523[_0x88f5('0x46')],{})[_0x88f5('0x21')](respondWithResult(_0xd56b6a,0xc9))['catch'](handleError(_0xd56b6a,null));};exports['update']=function(_0x605296,_0xafac38){if(_0x605296[_0x88f5('0x46')]['id']){delete _0x605296[_0x88f5('0x46')]['id'];}return db['WhatsappTransferReport'][_0x88f5('0x47')]({'where':{'id':_0x605296['params']['id']}})['then'](handleEntityNotFound(_0xafac38,null))['then'](saveUpdates(_0x605296[_0x88f5('0x46')],null))[_0x88f5('0x21')](respondWithResult(_0xafac38,null))[_0x88f5('0x3f')](handleError(_0xafac38,null));};exports[_0x88f5('0x22')]=function(_0x1530e2,_0x56a899){return db[_0x88f5('0x3c')][_0x88f5('0x47')]({'where':{'id':_0x1530e2['params']['id']}})['then'](handleEntityNotFound(_0x56a899,null))['then'](removeEntity(_0x56a899,null))[_0x88f5('0x3f')](handleError(_0x56a899,null));};exports[_0x88f5('0x48')]=function(_0x1b3314,_0x3f0ce8){return db[_0x88f5('0x3c')][_0x88f5('0x48')]()[_0x88f5('0x21')](respondWithResult(_0x3f0ce8,null))[_0x88f5('0x3f')](handleError(_0x3f0ce8,null));};
\ No newline at end of file
index ba17a4d..88bfea6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc33d=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./whatsappTransferReport.attributes','exports','WhatsappTransferReport','report_whatsapp_transfer','uniqueid','util','../../config/logger','api'];(function(_0x1da527,_0x2dc953){var _0x40fc7c=function(_0x9949f5){while(--_0x9949f5){_0x1da527['push'](_0x1da527['shift']());}};_0x40fc7c(++_0x2dc953);}(_0xc33d,0x1d9));var _0xdc33=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xc33d[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0xdc33('0x0'));var logger=require(_0xdc33('0x1'))(_0xdc33('0x2'));var moment=require(_0xdc33('0x3'));var BPromise=require(_0xdc33('0x4'));var rp=require(_0xdc33('0x5'));var fs=require('fs');var path=require(_0xdc33('0x6'));var rimraf=require(_0xdc33('0x7'));var config=require(_0xdc33('0x8'));var attributes=require(_0xdc33('0x9'));module[_0xdc33('0xa')]=function(_0x89f1bb,_0x3a0bb8){return _0x89f1bb['define'](_0xdc33('0xb'),attributes,{'tableName':_0xdc33('0xc'),'paranoid':![],'indexes':[{'name':_0xdc33('0xd'),'fields':[_0xdc33('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x81ce=['../../config/environment','./whatsappTransferReport.attributes','define','report_whatsapp_transfer','uniqueid','util','../../config/logger','moment','bluebird','request-promise','rimraf'];(function(_0x5f309e,_0x66e31){var _0x487b5e=function(_0x44f203){while(--_0x44f203){_0x5f309e['push'](_0x5f309e['shift']());}};_0x487b5e(++_0x66e31);}(_0x81ce,0xaa));var _0xe81c=function(_0x234907,_0x5acabd){_0x234907=_0x234907-0x0;var _0x16ecad=_0x81ce[_0x234907];return _0x16ecad;};'use strict';var _=require('lodash');var util=require(_0xe81c('0x0'));var logger=require(_0xe81c('0x1'))('api');var moment=require(_0xe81c('0x2'));var BPromise=require(_0xe81c('0x3'));var rp=require(_0xe81c('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xe81c('0x5'));var config=require(_0xe81c('0x6'));var attributes=require(_0xe81c('0x7'));module['exports']=function(_0x244622,_0x4d1669){return _0x244622[_0xe81c('0x8')]('WhatsappTransferReport',attributes,{'tableName':_0xe81c('0x9'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0xe81c('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index b2d0c2c..4b8fbc5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e69=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','then','WhatsappTransferReport,\x20%s,\x20%s','request\x20sent','debug','WhatsappTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash'];(function(_0x9ca21f,_0x437553){var _0x9ef54b=function(_0x1aafff){while(--_0x1aafff){_0x9ca21f['push'](_0x9ca21f['shift']());}};_0x9ef54b(++_0x437553);}(_0x7e69,0x1b8));var _0x97e6=function(_0x3add10,_0x457d16){_0x3add10=_0x3add10-0x0;var _0x2da348=_0x7e69[_0x3add10];return _0x2da348;};'use strict';var _=require(_0x97e6('0x0'));var util=require('util');var moment=require(_0x97e6('0x1'));var BPromise=require(_0x97e6('0x2'));var rs=require(_0x97e6('0x3'));var fs=require('fs');var Redis=require(_0x97e6('0x4'));var db=require(_0x97e6('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x97e6('0x6'))(_0x97e6('0x7'));var config=require(_0x97e6('0x8'));var jayson=require(_0x97e6('0x9'));var client=jayson['client'][_0x97e6('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2f3c73,_0x520f12,_0x56b13b){return new BPromise(function(_0x48ce1f,_0x443238){return client['request'](_0x2f3c73,_0x56b13b)[_0x97e6('0xb')](function(_0x55a41f){logger['info'](_0x97e6('0xc'),_0x520f12,_0x97e6('0xd'));logger[_0x97e6('0xe')](_0x97e6('0xf'),_0x520f12,'request\x20sent',JSON[_0x97e6('0x10')](_0x55a41f));if(_0x55a41f['error']){if(_0x55a41f[_0x97e6('0x11')]['code']===0x1f4){logger[_0x97e6('0x11')](_0x97e6('0xc'),_0x520f12,_0x55a41f[_0x97e6('0x11')][_0x97e6('0x12')]);return _0x443238(_0x55a41f[_0x97e6('0x11')]['message']);}logger[_0x97e6('0x11')](_0x97e6('0xc'),_0x520f12,_0x55a41f['error'][_0x97e6('0x12')]);return _0x48ce1f(_0x55a41f[_0x97e6('0x11')][_0x97e6('0x12')]);}else{logger['info'](_0x97e6('0xc'),_0x520f12,_0x97e6('0xd'));_0x48ce1f(_0x55a41f[_0x97e6('0x13')][_0x97e6('0x12')]);}})[_0x97e6('0x14')](function(_0x18635d){logger[_0x97e6('0x11')](_0x97e6('0xc'),_0x520f12,_0x18635d);_0x443238(_0x18635d);});});}
\ No newline at end of file
+var _0xc802=['stringify','error','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','http','then','info','WhatsappTransferReport,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xc802,0x1f2));var _0x2c80=function(_0x542bde,_0x725cf6){_0x542bde=_0x542bde-0x0;var _0x1c0732=_0xc802[_0x542bde];return _0x1c0732;};'use strict';var _=require(_0x2c80('0x0'));var util=require(_0x2c80('0x1'));var moment=require(_0x2c80('0x2'));var BPromise=require(_0x2c80('0x3'));var rs=require(_0x2c80('0x4'));var fs=require('fs');var Redis=require(_0x2c80('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x2c80('0x6'));var logger=require('../../config/logger')(_0x2c80('0x7'));var config=require(_0x2c80('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x2c80('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x22cc15,_0x4e3862,_0x3c97f9){return new BPromise(function(_0x119249,_0x3762db){return client['request'](_0x22cc15,_0x3c97f9)[_0x2c80('0xa')](function(_0x3a9f7e){logger[_0x2c80('0xb')](_0x2c80('0xc'),_0x4e3862,_0x2c80('0xd'));logger[_0x2c80('0xe')]('WhatsappTransferReport,\x20%s,\x20%s,\x20%s',_0x4e3862,_0x2c80('0xd'),JSON[_0x2c80('0xf')](_0x3a9f7e));if(_0x3a9f7e['error']){if(_0x3a9f7e[_0x2c80('0x10')]['code']===0x1f4){logger[_0x2c80('0x10')]('WhatsappTransferReport,\x20%s,\x20%s',_0x4e3862,_0x3a9f7e[_0x2c80('0x10')][_0x2c80('0x11')]);return _0x3762db(_0x3a9f7e['error'][_0x2c80('0x11')]);}logger[_0x2c80('0x10')]('WhatsappTransferReport,\x20%s,\x20%s',_0x4e3862,_0x3a9f7e[_0x2c80('0x10')][_0x2c80('0x11')]);return _0x119249(_0x3a9f7e[_0x2c80('0x10')]['message']);}else{logger['info'](_0x2c80('0xc'),_0x4e3862,_0x2c80('0xd'));_0x119249(_0x3a9f7e[_0x2c80('0x12')][_0x2c80('0x11')]);}})['catch'](function(_0x3779c6){logger[_0x2c80('0x10')](_0x2c80('0xc'),_0x4e3862,_0x3779c6);_0x3762db(_0x3779c6);});});}
\ No newline at end of file
index 40759f1..a556e22 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc33f=['online','name','join','status','seedDB','./config/seedDB','./config/license','default','catch','error','Server\x20failed\x20to\x20start\x20due\x20to\x20error:\x20%s','lodash','./mysqldb','./rpc','./config/environment','./config/logger','app','./config/pm2','./config/schedule/chat','./config/schedule/whatsapp','./config/schedule/transcribe','sequelize','sync','then','listen','info','start','Online\x20apps:','map'];(function(_0x20419d,_0xbcdedb){var _0x377ab2=function(_0x1be0f7){while(--_0x1be0f7){_0x20419d['push'](_0x20419d['shift']());}};_0x377ab2(++_0xbcdedb);}(_0xc33f,0x184));var _0xfc33=function(_0x49ad91,_0x151789){_0x49ad91=_0x49ad91-0x0;var _0x409654=_0xc33f[_0x49ad91];return _0x409654;};'use strict';var _=require(_0xfc33('0x0'));var mysqldb=require(_0xfc33('0x1'));var rpc=require(_0xfc33('0x2'));var config=require(_0xfc33('0x3'));var logger=require(_0xfc33('0x4'))(_0xfc33('0x5'));var pm2=require(_0xfc33('0x6'));var pm2Config=require('./config/pm2/config');var schedule=require('./config/schedule');var chat=require(_0xfc33('0x7'));var whatsapp=require(_0xfc33('0x8'));var transcribe=require(_0xfc33('0x9'));function main(){return mysqldb['db'][_0xfc33('0xa')][_0xfc33('0xb')]()[_0xfc33('0xc')](function(){return rpc[_0xfc33('0xd')]();})[_0xfc33('0xc')](function(_0x14aa56){logger[_0xfc33('0xe')](_0x14aa56);return chat[_0xfc33('0xf')]();})[_0xfc33('0xc')](function(){return whatsapp[_0xfc33('0xf')]();})[_0xfc33('0xc')](function(){return schedule[_0xfc33('0xf')]();})[_0xfc33('0xc')](function(){return transcribe[_0xfc33('0xf')]();})[_0xfc33('0xc')](function(_0x1ebf69){logger['info'](_0x1ebf69);return pm2[_0xfc33('0xf')](pm2Config);})['then'](function(_0x25b203){logger[_0xfc33('0xe')](_0xfc33('0x10'),_[_0xfc33('0x11')](_['filter'](_0x25b203,{'status':_0xfc33('0x12')}),_0xfc33('0x13'))[_0xfc33('0x14')]());logger[_0xfc33('0xe')]('Offline\x20apps:',_[_0xfc33('0x11')](_['filter'](_0x25b203,function(_0x31b986){return _0x31b986[_0xfc33('0x15')]!==_0xfc33('0x12');}),_0xfc33('0x13'))[_0xfc33('0x14')]()||'None');config[_0xfc33('0x16')]&&require(_0xfc33('0x17'))['default']();require(_0xfc33('0x18'))[_0xfc33('0x19')]();})[_0xfc33('0x1a')](function(_0x3d8730){logger[_0xfc33('0x1b')](_0xfc33('0x1c'),_0x3d8730);process['exit'](0x1);});}main();
\ No newline at end of file
+var _0x69b6=['./config/schedule/whatsapp','./config/schedule/transcribe','sync','then','info','start','Online\x20apps:','filter','online','name','join','Offline\x20apps:','status','None','seedDB','./config/seedDB','default','./config/license','lodash','./mysqldb','./rpc','./config/environment','./config/logger','app','./config/pm2','./config/pm2/config','./config/schedule'];(function(_0x138293,_0x197e7f){var _0x34c4a2=function(_0x20192b){while(--_0x20192b){_0x138293['push'](_0x138293['shift']());}};_0x34c4a2(++_0x197e7f);}(_0x69b6,0x13b));var _0x669b=function(_0x18a3d2,_0x136be9){_0x18a3d2=_0x18a3d2-0x0;var _0x2d2ee8=_0x69b6[_0x18a3d2];return _0x2d2ee8;};'use strict';var _=require(_0x669b('0x0'));var mysqldb=require(_0x669b('0x1'));var rpc=require(_0x669b('0x2'));var config=require(_0x669b('0x3'));var logger=require(_0x669b('0x4'))(_0x669b('0x5'));var pm2=require(_0x669b('0x6'));var pm2Config=require(_0x669b('0x7'));var schedule=require(_0x669b('0x8'));var chat=require('./config/schedule/chat');var whatsapp=require(_0x669b('0x9'));var transcribe=require(_0x669b('0xa'));function main(){return mysqldb['db']['sequelize'][_0x669b('0xb')]()[_0x669b('0xc')](function(){return rpc['listen']();})[_0x669b('0xc')](function(_0x24368c){logger[_0x669b('0xd')](_0x24368c);return chat[_0x669b('0xe')]();})[_0x669b('0xc')](function(){return whatsapp[_0x669b('0xe')]();})['then'](function(){return schedule[_0x669b('0xe')]();})[_0x669b('0xc')](function(){return transcribe['start']();})[_0x669b('0xc')](function(_0x35c732){logger[_0x669b('0xd')](_0x35c732);return pm2['start'](pm2Config);})[_0x669b('0xc')](function(_0x4c48f1){logger[_0x669b('0xd')](_0x669b('0xf'),_['map'](_[_0x669b('0x10')](_0x4c48f1,{'status':_0x669b('0x11')}),_0x669b('0x12'))[_0x669b('0x13')]());logger[_0x669b('0xd')](_0x669b('0x14'),_['map'](_[_0x669b('0x10')](_0x4c48f1,function(_0x441f40){return _0x441f40[_0x669b('0x15')]!==_0x669b('0x11');}),_0x669b('0x12'))[_0x669b('0x13')]()||_0x669b('0x16'));config[_0x669b('0x17')]&&require(_0x669b('0x18'))[_0x669b('0x19')]();require(_0x669b('0x1a'))['default']();})['catch'](function(_0x3dfddc){logger['error']('Server\x20failed\x20to\x20start\x20due\x20to\x20error:\x20%s',_0x3dfddc);process['exit'](0x1);});}main();
\ No newline at end of file
index a02d8f8..166c89f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2352=['decryptString','split','toLowerCase','format','The\x20password\x20must\x20be\x20different\x20from\x20the\x20previous\x20%d\x20passwords.\x20Please\x20choose\x20another\x20one.','The\x20password\x20must\x20be\x20different\x20from\x20the\x20last\x20one.\x20Please\x20choose\x20another\x20one.','Sequelize','updatePasswordsHistory','length','unshift','sign','options','promisify','verify','randomBytes','toString','hex','floor','now','HS512','../../mysqldb','../../config/environment','../../config/license/hardware','../../config/license/util','../encryptor','lodash','jsonwebtoken','composable-middleware','basic-auth','util','moment','secrets','session','role','fullname','name','internal','email','userpic','permissions','md5secret','voicePause','chatPause','mailPause','faxPause','smsPause','pauseType','lastLoginAt','passwordResetAt','alias','phoneBarAutoAnswer','phoneBarDnd','phoneBarEnableRecording','phoneBarEnableDtmfTone','phoneBarRemoteControl','phoneBarRemoteControlPort','userProfileId','privacyEnabled','wssPort','downloadVoiceRecordings','downloadOmnichannelInteractions','downloadAttachments','isChatInteractionAuthorized','isAuthenticated','use','user','findOne','closed','disposition','status','unmanaged','json','Forbidden.','catch','startsWith','headers','authorization','Basic','find','then','authenticate','pass','Wrong\x20credentials.','Bearer','Unknown\x20authorization\x20format','apikey','getUuid','User','Setting','allowedLoginAttempts','blockDuration','apiKeyNonce','nonce','API\x20access\x20key\x20is\x20not\x20valid\x20anymore','disabled','Invalid\x20API\x20access\x20key','blockedAt','add','User\x20not\x20found.','User\x20object\x20not\x20found.','canUpdate','getLicense','update','Forbidden','isMiddleware','signToken','setTokenCookie','redirect','send','isNil','apiKeyIat','generateApiKey','regenerateApiKey','query','Please\x20use\x20the\x20previous\x20API\x20access\x20key\x20to\x20generate\x20a\x20new\x20one','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'];(function(_0x466cff,_0x293196){var _0x129488=function(_0x30832c){while(--_0x30832c){_0x466cff['push'](_0x466cff['shift']());}};_0x129488(++_0x293196);}(_0x2352,0x104));var _0x2235=function(_0xbf122f,_0x5ac4de){_0xbf122f=_0xbf122f-0x0;var _0x3f5059=_0x2352[_0xbf122f];return _0x3f5059;};'use strict';var db=require(_0x2235('0x0'))['db'];var config=require(_0x2235('0x1'));var hardwareConf=require(_0x2235('0x2'));var licenseUtil=require(_0x2235('0x3'));var encryptor=require(_0x2235('0x4'));var _=require(_0x2235('0x5'));var jwt=require(_0x2235('0x6'));var expressJwt=require('express-jwt');var compose=require(_0x2235('0x7'));var basicAuth=require(_0x2235('0x8'));var crypto=require('crypto');var BPromise=require('bluebird');var util=require(_0x2235('0x9'));var moment=require(_0x2235('0xa'));var validateJwt=expressJwt({'secret':config[_0x2235('0xb')][_0x2235('0xc')]});var userAttributes=['id',_0x2235('0xd'),_0x2235('0xe'),_0x2235('0xf'),_0x2235('0x10'),_0x2235('0x11'),_0x2235('0x12'),_0x2235('0x13'),_0x2235('0x14'),_0x2235('0x15'),_0x2235('0x16'),_0x2235('0x17'),_0x2235('0x18'),_0x2235('0x19'),'openchannelPause',_0x2235('0x1a'),'showWebBar',_0x2235('0x1b'),'lastPauseAt','crudPermissions','allowmessenger',_0x2235('0x1c'),_0x2235('0x1d'),_0x2235('0x1e'),'phoneBarAutoAnswerDelay',_0x2235('0x1f'),_0x2235('0x20'),_0x2235('0x21'),'phoneBarEnableSettings','phoneBarExpires','phoneBarPrefixRequired',_0x2235('0x22'),_0x2235('0x23'),'hotdesk','interface',_0x2235('0x24'),_0x2235('0x25'),'settingsEnabled',_0x2235('0x26'),_0x2235('0x27'),_0x2235('0x28'),_0x2235('0x29')];exports[_0x2235('0x2a')]=function(){return this[_0x2235('0x2b')](!![])[_0x2235('0x2c')](function(_0x51d074,_0x379c2a,_0x22836b){if(_0x51d074[_0x2235('0x2d')]){_0x22836b();}else{return db['ChatInteraction'][_0x2235('0x2e')]({'where':{'id':_0x51d074['params']['id']},'attributes':['id',_0x2235('0x2f'),_0x2235('0x30')],'raw':!![]})['then'](function(_0x51b829){if(_0x51b829&&_0x51b829[_0x2235('0x2f')]){return _0x379c2a[_0x2235('0x31')](_0x51b829[_0x2235('0x30')]===_0x2235('0x32')?0x195:0x193)[_0x2235('0x33')]({'message':_0x51b829[_0x2235('0x30')]===_0x2235('0x32')?'Unmanaged.':_0x2235('0x34')});}else{_0x22836b();}})[_0x2235('0x35')](function(_0x2f9c87){_0x22836b(_0x2f9c87);});}});};exports[_0x2235('0x2b')]=function isAuthenticated(_0x171980){return compose()[_0x2235('0x2c')](function(_0x354385,_0x125567,_0x3c195f){var _0x1e0379;if(_0x354385['headers']['authorization']){if(_[_0x2235('0x36')](_0x354385[_0x2235('0x37')][_0x2235('0x38')],_0x2235('0x39'))){var _0x3f0f6d=basicAuth(_0x354385);db['User'][_0x2235('0x3a')]({'where':{'name':_0x3f0f6d[_0x2235('0xf')]}})[_0x2235('0x3b')](function(_0x1a5be2){if(!_0x1a5be2||!_0x1a5be2[_0x2235('0x3c')](_0x3f0f6d[_0x2235('0x3d')])){return _0x125567[_0x2235('0x31')](0x191)[_0x2235('0x33')]({'message':_0x2235('0x3e')});}_0x354385[_0x2235('0x2d')]={'id':_0x1a5be2['id']};_0x3c195f();})[_0x2235('0x35')](function(_0xa642aa){_0x3c195f(_0xa642aa);});}else if(_['startsWith'](_0x354385['headers'][_0x2235('0x38')],_0x2235('0x3f'))){validateJwt(_0x354385,_0x125567,_0x3c195f);}else{if(_0x171980){_0x3c195f();}else{return _0x125567[_0x2235('0x31')](0x193)['json']({'message':_0x2235('0x40')});}}}else if(_0x354385['query'][_0x2235('0x41')]){try{var _0x1979b1={'audience':hardwareConf['getUuid'](),'issuer':hardwareConf[_0x2235('0x42')]()};verifyJwt(_0x354385['query'][_0x2235('0x41')],_0x1979b1)[_0x2235('0x3b')](function(_0x4ff32d){return db[_0x2235('0x43')][_0x2235('0x3a')]({'where':{'id':_0x4ff32d['sub']}})['then'](function(_0x16d6ee){_0x1e0379=_0x16d6ee;return db[_0x2235('0x44')]['findOne']({'where':{'id':0x1},'attributes':[_0x2235('0x45'),_0x2235('0x46')],'raw':!![]});})[_0x2235('0x3b')](function(_0x5cb9e7){if(!_0x1e0379||!_['isEqual'](_0x1e0379[_0x2235('0x47')],_0x4ff32d[_0x2235('0x48')])){return _0x125567[_0x2235('0x31')](0x191)[_0x2235('0x33')]({'message':_0x2235('0x49')});}if(_0x1e0379[_0x2235('0x4a')]){return _0x125567[_0x2235('0x31')](0x191)[_0x2235('0x33')]({'message':_0x2235('0x4b')});}if(_0x1e0379['blocked']){if(_0x5cb9e7[_0x2235('0x46')]>0x0){if(moment(_0x1e0379[_0x2235('0x4c')])[_0x2235('0x4d')](_0x5cb9e7[_0x2235('0x46')],'minutes')>moment()){return _0x125567[_0x2235('0x31')](0x191)[_0x2235('0x33')]({'message':'Invalid\x20API\x20access\x20key'});}}else{return _0x125567[_0x2235('0x31')](0x191)[_0x2235('0x33')]({'message':_0x2235('0x4b')});}}_0x354385[_0x2235('0x2d')]={'id':_0x1e0379['id']};_0x3c195f();});})[_0x2235('0x35')](function(){return _0x125567[_0x2235('0x31')](0x191)[_0x2235('0x33')]({'message':_0x2235('0x4b')});});}catch(_0x5657e2){_0x3c195f(_0x5657e2);}}else if(_0x171980){_0x3c195f();}else{return _0x125567[_0x2235('0x31')](0x193)['json']({'message':_0x2235('0x40')});}})['use'](function(_0x17e3b5,_0x55038c,_0x45981b){if(_0x17e3b5[_0x2235('0x2d')]){db[_0x2235('0x43')][_0x2235('0x3a')]({'where':{'id':_0x17e3b5[_0x2235('0x2d')]['id']},'attributes':userAttributes})[_0x2235('0x3b')](function(_0x326031){if(!_0x326031){return _0x55038c[_0x2235('0x31')](0x194)[_0x2235('0x33')]({'message':_0x2235('0x4e')});}_0x17e3b5[_0x2235('0x2d')]=_0x326031;_0x45981b();})[_0x2235('0x35')](function(_0x16a195){_0x45981b(_0x16a195);});}else if(_0x171980){_0x45981b();}else{return _0x55038c[_0x2235('0x31')](0x194)['json']({'message':_0x2235('0x4f')});}});};exports[_0x2235('0x50')]=function canUpdate(){return compose()['use'](function(_0x20992f,_0x4b18a6,_0x1983e5){return licenseUtil[_0x2235('0x51')]()[_0x2235('0x3b')](function(_0x344d91){if(_0x344d91[_0x2235('0x52')]){_0x1983e5();}else{return _0x4b18a6[_0x2235('0x31')](0x193)[_0x2235('0x33')]({'message':_0x2235('0x53')});}})[_0x2235('0x35')](function(_0x40b6d5){_0x1983e5(_0x40b6d5);});});};exports[_0x2235('0x54')]=function(_0x494a8e,_0x145e5d,_0xc24e47){_0x494a8e['isMiddleware']=!![];return _0xc24e47();};exports[_0x2235('0x55')]=function signToken(_0x2a2a81){return signJwt(_0x2a2a81);};exports[_0x2235('0x56')]=function(_0x2989e2,_0x4e952e){if(!_0x2989e2[_0x2235('0x2d')]){return _0x4e952e[_0x2235('0x31')](0x194)[_0x2235('0x33')]({'message':'It\x20looks\x20like\x20you\x20aren\x27t\x20logged\x20in,\x20please\x20try\x20again.'});}var _0x47326d={'payload':{'id':_0x2989e2['user']['id'],'role':_0x2989e2['user'][_0x2235('0xd')]},'options':{'expiresIn':0x15180}};return signJwt(_0x47326d)[_0x2235('0x3b')](function(_0x2098a7){_0x4e952e['cookie']('motion.token',_0x2098a7);_0x4e952e[_0x2235('0x57')]('/dashboards/general');})[_0x2235('0x35')](function(_0x3155ef){return _0x4e952e[_0x2235('0x31')](0x1f4)[_0x2235('0x58')](_0x3155ef);});};exports['retrieveApiKey']=function(_0xd07dca){if(_[_0x2235('0x59')](_0xd07dca[_0x2235('0x47')])||_[_0x2235('0x59')](_0xd07dca[_0x2235('0x5a')])){return null;}else{return createJwt(_0xd07dca);}};exports[_0x2235('0x5b')]=function(_0x1a1c18){_0x1a1c18[_0x2235('0x47')]=generateNonce();_0x1a1c18['apiKeyIat']=generateIssuedAt();return createJwt(_0x1a1c18);};exports[_0x2235('0x5c')]=function(_0x2ea15d,_0x4a7d6a){var _0x59aad6=_0x2ea15d[_0x2235('0x5d')][_0x2235('0x41')];if(_0x59aad6){var _0xade154={'nonce':_0x4a7d6a[_0x2235('0x47')],'iat':_0x4a7d6a[_0x2235('0x5a')],'audience':hardwareConf[_0x2235('0x42')](),'issuer':hardwareConf['getUuid']()};return verifyJwt(_0x59aad6,_0xade154)[_0x2235('0x3b')](function(){return generateApiKey(_0x4a7d6a);});}else{throw{'message':_0x2235('0x5e')};}};exports[_0x2235('0x5f')]=function(_0x6c77de){var _0x2bcf07=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(!_0x2bcf07[_0x2235('0x60')](_0x6c77de))throw new db['Sequelize'][(_0x2235('0x61'))](_0x2235('0x62'));return;};exports[_0x2235('0x63')]=function(_0x1ed55f,_0x175cb9,_0x43e648){var _0x48c396=encryptor[_0x2235('0x64')](_0x175cb9)[_0x2235('0x65')](',');for(var _0x4afc64=0x0;_0x4afc64<_0x43e648;_0x4afc64++){if(!_0x48c396[_0x4afc64])break;if(_0x1ed55f[_0x2235('0x66')]()===_0x48c396[_0x4afc64][_0x2235('0x66')]()){var _0x474dea=util[_0x2235('0x67')](_0x2235('0x68'),_0x43e648);if(_0x43e648===0x1){_0x474dea=_0x2235('0x69');}throw new db[(_0x2235('0x6a'))][(_0x2235('0x61'))](_0x474dea);}}return;};exports[_0x2235('0x6b')]=function(_0x3862d2,_0x279d9b){var _0x40ce64=_0x279d9b?encryptor['decryptString'](_0x279d9b)[_0x2235('0x65')](','):[];if(_0x40ce64[_0x2235('0x6c')]===0x5){_0x40ce64['splice'](-0x1,0x1);}_0x40ce64[_0x2235('0x6d')](_0x3862d2);return encryptor['encryptString'](_0x40ce64['join'](','));};function signJwt(_0x8db04f){var _0x45ad21=BPromise['promisify'](jwt[_0x2235('0x6e')],{'context':jwt});var _0x1b742d=_0x8db04f['secret']||config['secrets'][_0x2235('0xc')];return new BPromise(function(_0x69cf4d,_0xbae949){_0x45ad21(_0x8db04f['payload'],_0x1b742d,_0x8db04f[_0x2235('0x6f')])[_0x2235('0x3b')](function(_0x292c2e){_0x69cf4d(_0x292c2e);})[_0x2235('0x35')](function(_0x46c67b){_0xbae949(_0x46c67b);});});}function verifyJwt(_0x3d274d,_0x228044,_0x5b8c75){var _0x18bd7f=BPromise[_0x2235('0x70')](jwt[_0x2235('0x71')],{'context':jwt});var _0x568a80=_0x5b8c75||config['secrets'][_0x2235('0xc')];return new BPromise(function(_0x44be19,_0x22bbcb){_0x18bd7f(_0x3d274d,_0x568a80,_0x228044)[_0x2235('0x3b')](function(_0x5c7691){_0x44be19(_0x5c7691);})['catch'](function(_0x2306c5){_0x22bbcb(_0x2306c5);});});}function generateNonce(){return crypto[_0x2235('0x72')](0x10)[_0x2235('0x73')](_0x2235('0x74'));}function generateIssuedAt(){return Math[_0x2235('0x75')](Date[_0x2235('0x76')]()/0x3e8)[_0x2235('0x73')]();}function createJwt(_0x396462){var _0x119dbd={'payload':{'iat':_0x396462[_0x2235('0x5a')],'nonce':_0x396462[_0x2235('0x47')]},'options':{'algorithm':_0x2235('0x77'),'subject':_0x396462['id'][_0x2235('0x73')](),'issuer':hardwareConf['getUuid'](),'audience':hardwareConf[_0x2235('0x42')]()}};return signJwt(_0x119dbd)[_0x2235('0x3b')](function(_0x43380f){return{'iat':_0x396462[_0x2235('0x5a')],'nonce':_0x396462[_0x2235('0x47')],'token':_0x43380f};});}
\ No newline at end of file
+var _0xa498=['payload','options','verify','randomBytes','toString','hex','../../mysqldb','../../config/environment','../../config/license/hardware','../encryptor','lodash','express-jwt','basic-auth','bluebird','util','secrets','session','role','fullname','name','internal','email','permissions','md5secret','voicePause','chatPause','mailPause','smsPause','pauseType','showWebBar','lastLoginAt','lastPauseAt','crudPermissions','passwordResetAt','alias','phoneBarEnableSettings','phoneBarExpires','phoneBarPrefixRequired','phoneBarRemoteControl','phoneBarRemoteControlPort','hotdesk','userProfileId','settingsEnabled','downloadOmnichannelInteractions','downloadAttachments','ignorePauseForPreviewCalls','selectRecallMeCampaign','isChatInteractionAuthorized','use','user','findOne','closed','disposition','json','unmanaged','Unmanaged.','Forbidden.','catch','isAuthenticated','headers','authorization','startsWith','Basic','User','find','then','authenticate','status','Wrong\x20credentials.','Bearer','Unknown\x20authorization\x20format','query','apikey','blockDuration','isEqual','apiKeyNonce','nonce','disabled','Invalid\x20API\x20access\x20key','blocked','blockedAt','add','User\x20not\x20found.','canUpdate','getLicense','update','Forbidden','isMiddleware','It\x20looks\x20like\x20you\x20aren\x27t\x20logged\x20in,\x20please\x20try\x20again.','cookie','motion.token','redirect','/dashboards/general','isNil','apiKeyIat','generateApiKey','regenerateApiKey','getUuid','validatePasswordPattern','test','ValidationError','validatePasswordHistory','split','toLowerCase','format','The\x20password\x20must\x20be\x20different\x20from\x20the\x20previous\x20%d\x20passwords.\x20Please\x20choose\x20another\x20one.','The\x20password\x20must\x20be\x20different\x20from\x20the\x20last\x20one.\x20Please\x20choose\x20another\x20one.','decryptString','length','splice','unshift','encryptString','promisify'];(function(_0x1f209f,_0x50adf8){var _0x38acbf=function(_0x13f454){while(--_0x13f454){_0x1f209f['push'](_0x1f209f['shift']());}};_0x38acbf(++_0x50adf8);}(_0xa498,0x1ca));var _0x8a49=function(_0x1b1e76,_0x31695b){_0x1b1e76=_0x1b1e76-0x0;var _0x3d743a=_0xa498[_0x1b1e76];return _0x3d743a;};'use strict';var db=require(_0x8a49('0x0'))['db'];var config=require(_0x8a49('0x1'));var hardwareConf=require(_0x8a49('0x2'));var licenseUtil=require('../../config/license/util');var encryptor=require(_0x8a49('0x3'));var _=require(_0x8a49('0x4'));var jwt=require('jsonwebtoken');var expressJwt=require(_0x8a49('0x5'));var compose=require('composable-middleware');var basicAuth=require(_0x8a49('0x6'));var crypto=require('crypto');var BPromise=require(_0x8a49('0x7'));var util=require(_0x8a49('0x8'));var moment=require('moment');var validateJwt=expressJwt({'secret':config[_0x8a49('0x9')][_0x8a49('0xa')]});var userAttributes=['id',_0x8a49('0xb'),_0x8a49('0xc'),_0x8a49('0xd'),_0x8a49('0xe'),_0x8a49('0xf'),'userpic',_0x8a49('0x10'),_0x8a49('0x11'),_0x8a49('0x12'),_0x8a49('0x13'),_0x8a49('0x14'),'faxPause',_0x8a49('0x15'),'openchannelPause',_0x8a49('0x16'),_0x8a49('0x17'),_0x8a49('0x18'),_0x8a49('0x19'),_0x8a49('0x1a'),'allowmessenger',_0x8a49('0x1b'),_0x8a49('0x1c'),'phoneBarAutoAnswer','phoneBarAutoAnswerDelay','phoneBarDnd','phoneBarEnableRecording','phoneBarEnableDtmfTone',_0x8a49('0x1d'),_0x8a49('0x1e'),_0x8a49('0x1f'),_0x8a49('0x20'),_0x8a49('0x21'),_0x8a49('0x22'),'interface',_0x8a49('0x23'),'privacyEnabled',_0x8a49('0x24'),'wssPort','downloadVoiceRecordings',_0x8a49('0x25'),_0x8a49('0x26'),_0x8a49('0x27'),_0x8a49('0x28')];exports[_0x8a49('0x29')]=function(){return this['isAuthenticated'](!![])[_0x8a49('0x2a')](function(_0x3b6330,_0x559887,_0x2cb335){if(_0x3b6330[_0x8a49('0x2b')]){_0x2cb335();}else{return db['ChatInteraction'][_0x8a49('0x2c')]({'where':{'id':_0x3b6330['params']['id']},'attributes':['id',_0x8a49('0x2d'),_0x8a49('0x2e')],'raw':!![]})['then'](function(_0x1fa9bf){if(_0x1fa9bf&&_0x1fa9bf[_0x8a49('0x2d')]){return _0x559887['status'](_0x1fa9bf[_0x8a49('0x2e')]==='unmanaged'?0x195:0x193)[_0x8a49('0x2f')]({'message':_0x1fa9bf[_0x8a49('0x2e')]===_0x8a49('0x30')?_0x8a49('0x31'):_0x8a49('0x32')});}else{_0x2cb335();}})[_0x8a49('0x33')](function(_0xf8cbd5){_0x2cb335(_0xf8cbd5);});}});};exports[_0x8a49('0x34')]=function isAuthenticated(_0x43e437){return compose()[_0x8a49('0x2a')](function(_0x283aef,_0x229139,_0x34a065){var _0x48a0e4;if(_0x283aef[_0x8a49('0x35')][_0x8a49('0x36')]){if(_[_0x8a49('0x37')](_0x283aef['headers'][_0x8a49('0x36')],_0x8a49('0x38'))){var _0x45b611=basicAuth(_0x283aef);db[_0x8a49('0x39')][_0x8a49('0x3a')]({'where':{'name':_0x45b611[_0x8a49('0xd')]}})[_0x8a49('0x3b')](function(_0x292880){if(!_0x292880||!_0x292880[_0x8a49('0x3c')](_0x45b611['pass'])){return _0x229139[_0x8a49('0x3d')](0x191)['json']({'message':_0x8a49('0x3e')});}_0x283aef['user']={'id':_0x292880['id']};_0x34a065();})[_0x8a49('0x33')](function(_0x21ffc7){_0x34a065(_0x21ffc7);});}else if(_[_0x8a49('0x37')](_0x283aef[_0x8a49('0x35')]['authorization'],_0x8a49('0x3f'))){validateJwt(_0x283aef,_0x229139,_0x34a065);}else{if(_0x43e437){_0x34a065();}else{return _0x229139[_0x8a49('0x3d')](0x193)['json']({'message':_0x8a49('0x40')});}}}else if(_0x283aef[_0x8a49('0x41')][_0x8a49('0x42')]){try{var _0x935e4f={'audience':hardwareConf['getUuid'](),'issuer':hardwareConf['getUuid']()};verifyJwt(_0x283aef[_0x8a49('0x41')][_0x8a49('0x42')],_0x935e4f)[_0x8a49('0x3b')](function(_0x58ed08){return db[_0x8a49('0x39')][_0x8a49('0x3a')]({'where':{'id':_0x58ed08['sub']}})['then'](function(_0xde3fe3){_0x48a0e4=_0xde3fe3;return db['Setting']['findOne']({'where':{'id':0x1},'attributes':['allowedLoginAttempts',_0x8a49('0x43')],'raw':!![]});})[_0x8a49('0x3b')](function(_0x594a58){if(!_0x48a0e4||!_[_0x8a49('0x44')](_0x48a0e4[_0x8a49('0x45')],_0x58ed08[_0x8a49('0x46')])){return _0x229139[_0x8a49('0x3d')](0x191)[_0x8a49('0x2f')]({'message':'API\x20access\x20key\x20is\x20not\x20valid\x20anymore'});}if(_0x48a0e4[_0x8a49('0x47')]){return _0x229139[_0x8a49('0x3d')](0x191)[_0x8a49('0x2f')]({'message':_0x8a49('0x48')});}if(_0x48a0e4[_0x8a49('0x49')]){if(_0x594a58[_0x8a49('0x43')]>0x0){if(moment(_0x48a0e4[_0x8a49('0x4a')])[_0x8a49('0x4b')](_0x594a58['blockDuration'],'minutes')>moment()){return _0x229139[_0x8a49('0x3d')](0x191)[_0x8a49('0x2f')]({'message':'Invalid\x20API\x20access\x20key'});}}else{return _0x229139[_0x8a49('0x3d')](0x191)[_0x8a49('0x2f')]({'message':_0x8a49('0x48')});}}_0x283aef['user']={'id':_0x48a0e4['id']};_0x34a065();});})[_0x8a49('0x33')](function(){return _0x229139[_0x8a49('0x3d')](0x191)[_0x8a49('0x2f')]({'message':_0x8a49('0x48')});});}catch(_0x4ad48e){_0x34a065(_0x4ad48e);}}else if(_0x43e437){_0x34a065();}else{return _0x229139[_0x8a49('0x3d')](0x193)[_0x8a49('0x2f')]({'message':'Unknown\x20authorization\x20format'});}})[_0x8a49('0x2a')](function(_0x10a19e,_0x15e86b,_0x313934){if(_0x10a19e[_0x8a49('0x2b')]){db['User'][_0x8a49('0x3a')]({'where':{'id':_0x10a19e[_0x8a49('0x2b')]['id']},'attributes':userAttributes})[_0x8a49('0x3b')](function(_0x5a1dc0){if(!_0x5a1dc0){return _0x15e86b[_0x8a49('0x3d')](0x194)[_0x8a49('0x2f')]({'message':_0x8a49('0x4c')});}_0x10a19e[_0x8a49('0x2b')]=_0x5a1dc0;_0x313934();})[_0x8a49('0x33')](function(_0x134a83){_0x313934(_0x134a83);});}else if(_0x43e437){_0x313934();}else{return _0x15e86b['status'](0x194)[_0x8a49('0x2f')]({'message':'User\x20object\x20not\x20found.'});}});};exports[_0x8a49('0x4d')]=function canUpdate(){return compose()[_0x8a49('0x2a')](function(_0x34d8ec,_0x415cf2,_0x1d66ff){return licenseUtil[_0x8a49('0x4e')]()[_0x8a49('0x3b')](function(_0x20011a){if(_0x20011a[_0x8a49('0x4f')]){_0x1d66ff();}else{return _0x415cf2[_0x8a49('0x3d')](0x193)[_0x8a49('0x2f')]({'message':_0x8a49('0x50')});}})[_0x8a49('0x33')](function(_0x1e43bf){_0x1d66ff(_0x1e43bf);});});};exports[_0x8a49('0x51')]=function(_0x16bdbf,_0x313ad1,_0x38a397){_0x16bdbf['isMiddleware']=!![];return _0x38a397();};exports['signToken']=function signToken(_0x1ba76c){return signJwt(_0x1ba76c);};exports['setTokenCookie']=function(_0x20f747,_0xa22691){if(!_0x20f747[_0x8a49('0x2b')]){return _0xa22691[_0x8a49('0x3d')](0x194)[_0x8a49('0x2f')]({'message':_0x8a49('0x52')});}var _0xac1957={'payload':{'id':_0x20f747[_0x8a49('0x2b')]['id'],'role':_0x20f747['user'][_0x8a49('0xb')]},'options':{'expiresIn':0x15180}};return signJwt(_0xac1957)[_0x8a49('0x3b')](function(_0x2908ab){_0xa22691[_0x8a49('0x53')](_0x8a49('0x54'),_0x2908ab);_0xa22691[_0x8a49('0x55')](_0x8a49('0x56'));})[_0x8a49('0x33')](function(_0x4cd1a2){return _0xa22691[_0x8a49('0x3d')](0x1f4)['send'](_0x4cd1a2);});};exports['retrieveApiKey']=function(_0x411ffc){if(_[_0x8a49('0x57')](_0x411ffc[_0x8a49('0x45')])||_[_0x8a49('0x57')](_0x411ffc[_0x8a49('0x58')])){return null;}else{return createJwt(_0x411ffc);}};exports[_0x8a49('0x59')]=function(_0x2a3225){_0x2a3225[_0x8a49('0x45')]=generateNonce();_0x2a3225[_0x8a49('0x58')]=generateIssuedAt();return createJwt(_0x2a3225);};exports[_0x8a49('0x5a')]=function(_0x3bcc42,_0x97be07){var _0x2281b8=_0x3bcc42['query'][_0x8a49('0x42')];if(_0x2281b8){var _0x2c3e33={'nonce':_0x97be07[_0x8a49('0x45')],'iat':_0x97be07[_0x8a49('0x58')],'audience':hardwareConf['getUuid'](),'issuer':hardwareConf[_0x8a49('0x5b')]()};return verifyJwt(_0x2281b8,_0x2c3e33)['then'](function(){return generateApiKey(_0x97be07);});}else{throw{'message':'Please\x20use\x20the\x20previous\x20API\x20access\x20key\x20to\x20generate\x20a\x20new\x20one'};}};exports[_0x8a49('0x5c')]=function(_0x1d4961){var _0x48f122=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(!_0x48f122[_0x8a49('0x5d')](_0x1d4961))throw new db['Sequelize'][(_0x8a49('0x5e'))]('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[_0x8a49('0x5f')]=function(_0x516f52,_0x506312,_0x1029cc){var _0x153e2d=encryptor['decryptString'](_0x506312)[_0x8a49('0x60')](',');for(var _0x142a08=0x0;_0x142a08<_0x1029cc;_0x142a08++){if(!_0x153e2d[_0x142a08])break;if(_0x516f52[_0x8a49('0x61')]()===_0x153e2d[_0x142a08][_0x8a49('0x61')]()){var _0x55e906=util[_0x8a49('0x62')](_0x8a49('0x63'),_0x1029cc);if(_0x1029cc===0x1){_0x55e906=_0x8a49('0x64');}throw new db['Sequelize']['ValidationError'](_0x55e906);}}return;};exports['updatePasswordsHistory']=function(_0x2076bf,_0x92831d){var _0x8d9bca=_0x92831d?encryptor[_0x8a49('0x65')](_0x92831d)[_0x8a49('0x60')](','):[];if(_0x8d9bca[_0x8a49('0x66')]===0x5){_0x8d9bca[_0x8a49('0x67')](-0x1,0x1);}_0x8d9bca[_0x8a49('0x68')](_0x2076bf);return encryptor[_0x8a49('0x69')](_0x8d9bca['join'](','));};function signJwt(_0x49d3a6){var _0x472a1e=BPromise[_0x8a49('0x6a')](jwt['sign'],{'context':jwt});var _0x571513=_0x49d3a6['secret']||config[_0x8a49('0x9')][_0x8a49('0xa')];return new BPromise(function(_0x3820bb,_0x2287ba){_0x472a1e(_0x49d3a6[_0x8a49('0x6b')],_0x571513,_0x49d3a6[_0x8a49('0x6c')])[_0x8a49('0x3b')](function(_0x38b2d7){_0x3820bb(_0x38b2d7);})[_0x8a49('0x33')](function(_0x9a5720){_0x2287ba(_0x9a5720);});});}function verifyJwt(_0x10f663,_0x176ea3,_0x3aad6a){var _0x63903=BPromise[_0x8a49('0x6a')](jwt[_0x8a49('0x6d')],{'context':jwt});var _0x108989=_0x3aad6a||config[_0x8a49('0x9')][_0x8a49('0xa')];return new BPromise(function(_0x1c4b2c,_0x1dc3a2){_0x63903(_0x10f663,_0x108989,_0x176ea3)['then'](function(_0xb3be55){_0x1c4b2c(_0xb3be55);})[_0x8a49('0x33')](function(_0x3ba2f9){_0x1dc3a2(_0x3ba2f9);});});}function generateNonce(){return crypto[_0x8a49('0x6e')](0x10)[_0x8a49('0x6f')](_0x8a49('0x70'));}function generateIssuedAt(){return Math['floor'](Date['now']()/0x3e8)[_0x8a49('0x6f')]();}function createJwt(_0x41c0c8){var _0x396110={'payload':{'iat':_0x41c0c8[_0x8a49('0x58')],'nonce':_0x41c0c8[_0x8a49('0x45')]},'options':{'algorithm':'HS512','subject':_0x41c0c8['id'][_0x8a49('0x6f')](),'issuer':hardwareConf['getUuid'](),'audience':hardwareConf[_0x8a49('0x5b')]()}};return signJwt(_0x396110)['then'](function(_0x528ad0){return{'iat':_0x41c0c8['apiKeyIat'],'nonce':_0x41c0c8[_0x8a49('0x45')],'token':_0x528ad0};});}
\ No newline at end of file
index ebcc35a..171c7ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x05b2=['secret','base64','utf8','crypto','bluebird','lodash','../../config/environment','../../config/logger','app','secrets','session','aes-256-ctr','aes192','encrypt','algorithm','join','error','is\x20not\x20a\x20supported\x20algorithm.\x20Your\x20system\x20supports\x20the\x20following\x20algorithms:','test','filter','hasOwnProperty','encryptFile','createWriteStream','createCipher','update','binary','write','final','end','close','unlink','decryptFile','createReadStream','createDecipher','data','encryptString'];(function(_0x3bff80,_0x14a7c1){var _0x344d6f=function(_0x14116e){while(--_0x14116e){_0x3bff80['push'](_0x3bff80['shift']());}};_0x344d6f(++_0x14a7c1);}(_0x05b2,0x1b3));var _0x205b=function(_0x139749,_0x211b0f){_0x139749=_0x139749-0x0;var _0x24fb98=_0x05b2[_0x139749];return _0x24fb98;};'use strict';var crypto=require(_0x205b('0x0'));var fs=require('fs');var BPromise=require(_0x205b('0x1'));var _=require(_0x205b('0x2'));var config=require(_0x205b('0x3'));var logger=require(_0x205b('0x4'))(_0x205b('0x5'));const AES_SUPPORTED_RX=/^aes(-)?\d{3}(-(cbc|cfb|ctr)(1|8)?){0,1}$/;const stringOptions={'secret':config[_0x205b('0x6')][_0x205b('0x7')],'algorithm':_0x205b('0x8')};const fileOptions={'algorithm':_0x205b('0x9')};if(config[_0x205b('0xa')]&&config[_0x205b('0xa')][_0x205b('0xb')]){var isSupported=isAlgorithmSupported(config[_0x205b('0xa')][_0x205b('0xb')]);if(isSupported){fileOptions[_0x205b('0xb')]=config[_0x205b('0xa')]['algorithm'];}else{var supportedAlgorithms=getSupportedCiphers()[_0x205b('0xc')](',\x20');logger[_0x205b('0xd')](config[_0x205b('0xa')][_0x205b('0xb')],_0x205b('0xe'),supportedAlgorithms);}}function isASupportedCipher(_0x3c46b7){return AES_SUPPORTED_RX[_0x205b('0xf')](_0x3c46b7);}function getSupportedCiphers(){return crypto['getCiphers']()[_0x205b('0x10')](isASupportedCipher);}function isAlgorithmSupported(_0x2ff466){return getSupportedCiphers()['indexOf'](_0x2ff466)>-0x1;}function combineOptions(_0x21b52f){var _0x16141a={};for(var _0x553a24 in fileOptions){if(fileOptions[_0x205b('0x11')](_0x553a24)){_0x16141a[_0x553a24]=fileOptions[_0x553a24];}}if(_0x21b52f){for(var _0x5bfa3d in _0x21b52f){if(_0x21b52f[_0x205b('0x11')](_0x5bfa3d)){_0x16141a[_0x5bfa3d]=_0x21b52f[_0x5bfa3d];}}}return _0x16141a;}exports[_0x205b('0x12')]=function(_0x1b9b5d,_0x540430,_0x55c53b,_0x48ca06){return new BPromise(function(_0x135b41,_0x1d014c){_0x48ca06=combineOptions(_0x48ca06);var _0x458845=new Buffer(_0x55c53b);var _0x5a2e35=fs['createReadStream'](_0x1b9b5d);var _0x4d0b19=fs[_0x205b('0x13')](_0x540430);var _0x1ad3e6=crypto[_0x205b('0x14')](_0x48ca06[_0x205b('0xb')],_0x458845);_0x5a2e35['on']('data',function(_0xe3d384){var _0x19b91c=new Buffer(_0x1ad3e6[_0x205b('0x15')](_0xe3d384),_0x205b('0x16'));_0x4d0b19[_0x205b('0x17')](_0x19b91c);});_0x5a2e35['on']('end',function(){try{var _0x33f263=new Buffer(_0x1ad3e6[_0x205b('0x18')](_0x205b('0x16')),_0x205b('0x16'));_0x4d0b19[_0x205b('0x17')](_0x33f263);_0x4d0b19[_0x205b('0x19')]();_0x4d0b19['on'](_0x205b('0x1a'),function(){return _0x135b41(_0x540430);});}catch(_0x594d67){fs[_0x205b('0x1b')](_0x540430);return _0x1d014c(_0x594d67);}});});};exports[_0x205b('0x1c')]=function(_0x33cd76,_0x372d9b,_0x3c60e2,_0x4e8dc1){return new BPromise(function(_0x3f7dad,_0x306006){_0x4e8dc1=combineOptions(_0x4e8dc1);var _0x349e86=new Buffer(_0x3c60e2);var _0x4c30bb=fs[_0x205b('0x1d')](_0x33cd76);var _0x27ef21=fs['createWriteStream'](_0x372d9b);var _0x16e6e6=crypto[_0x205b('0x1e')](_0x4e8dc1[_0x205b('0xb')],_0x349e86);_0x4c30bb['on'](_0x205b('0x1f'),function(_0x40c070){var _0x593e7e=new Buffer(_0x16e6e6[_0x205b('0x15')](_0x40c070),_0x205b('0x16'));_0x27ef21[_0x205b('0x17')](_0x593e7e);});_0x4c30bb['on'](_0x205b('0x19'),function(){try{var _0x15cccf=new Buffer(_0x16e6e6['final'](_0x205b('0x16')),_0x205b('0x16'));_0x27ef21[_0x205b('0x17')](_0x15cccf);_0x27ef21[_0x205b('0x19')]();_0x27ef21['on']('close',function(){return _0x3f7dad(_0x372d9b);});}catch(_0x5dd493){fs['unlink'](_0x372d9b);return _0x306006(_0x5dd493);}});});};exports[_0x205b('0x20')]=function(_0x35462e,_0x2fb855,_0x21ab98){var _0x9bd6f8=_0x21ab98||stringOptions['algorithm'];var _0x3f8a54=_0x2fb855||stringOptions[_0x205b('0x21')];var _0x4685c1=crypto[_0x205b('0x14')](_0x9bd6f8,_0x3f8a54);var _0x59c0ec=_0x4685c1['update'](_0x35462e,'utf8','base64');_0x59c0ec+=_0x4685c1[_0x205b('0x18')](_0x205b('0x22'));return _0x59c0ec;};exports['decryptString']=function(_0x243f1f,_0x5c2429,_0x37c9e5){var _0x2ff637=_0x37c9e5||stringOptions[_0x205b('0xb')];var _0x18440c=_0x5c2429||stringOptions[_0x205b('0x21')];var _0x448d0c=crypto['createDecipher'](_0x2ff637,_0x18440c);var _0x43954b=_0x448d0c[_0x205b('0x15')](_0x243f1f,_0x205b('0x22'),_0x205b('0x23'));_0x43954b+=_0x448d0c[_0x205b('0x18')](_0x205b('0x23'));return _0x43954b;};
\ No newline at end of file
+var _0xe331=['is\x20not\x20a\x20supported\x20algorithm.\x20Your\x20system\x20supports\x20the\x20following\x20algorithms:','test','getCiphers','filter','indexOf','hasOwnProperty','createCipher','data','binary','write','end','final','close','decryptFile','createReadStream','createDecipher','update','unlink','encryptString','utf8','base64','decryptString','secret','crypto','bluebird','../../config/environment','../../config/logger','app','session','aes-256-ctr','aes192','encrypt','algorithm','error'];(function(_0x38fa40,_0x57ae80){var _0x1ef23f=function(_0x4b5939){while(--_0x4b5939){_0x38fa40['push'](_0x38fa40['shift']());}};_0x1ef23f(++_0x57ae80);}(_0xe331,0xc1));var _0x1e33=function(_0x48fdbb,_0x331b3d){_0x48fdbb=_0x48fdbb-0x0;var _0x1f9ac5=_0xe331[_0x48fdbb];return _0x1f9ac5;};'use strict';var crypto=require(_0x1e33('0x0'));var fs=require('fs');var BPromise=require(_0x1e33('0x1'));var _=require('lodash');var config=require(_0x1e33('0x2'));var logger=require(_0x1e33('0x3'))(_0x1e33('0x4'));const AES_SUPPORTED_RX=/^aes(-)?\d{3}(-(cbc|cfb|ctr)(1|8)?){0,1}$/;const stringOptions={'secret':config['secrets'][_0x1e33('0x5')],'algorithm':_0x1e33('0x6')};const fileOptions={'algorithm':_0x1e33('0x7')};if(config[_0x1e33('0x8')]&&config[_0x1e33('0x8')][_0x1e33('0x9')]){var isSupported=isAlgorithmSupported(config[_0x1e33('0x8')][_0x1e33('0x9')]);if(isSupported){fileOptions['algorithm']=config['encrypt']['algorithm'];}else{var supportedAlgorithms=getSupportedCiphers()['join'](',\x20');logger[_0x1e33('0xa')](config[_0x1e33('0x8')][_0x1e33('0x9')],_0x1e33('0xb'),supportedAlgorithms);}}function isASupportedCipher(_0x5a4f7e){return AES_SUPPORTED_RX[_0x1e33('0xc')](_0x5a4f7e);}function getSupportedCiphers(){return crypto[_0x1e33('0xd')]()[_0x1e33('0xe')](isASupportedCipher);}function isAlgorithmSupported(_0x19578e){return getSupportedCiphers()[_0x1e33('0xf')](_0x19578e)>-0x1;}function combineOptions(_0x4c604c){var _0x2e8519={};for(var _0x23c41a in fileOptions){if(fileOptions[_0x1e33('0x10')](_0x23c41a)){_0x2e8519[_0x23c41a]=fileOptions[_0x23c41a];}}if(_0x4c604c){for(var _0x358b5d in _0x4c604c){if(_0x4c604c[_0x1e33('0x10')](_0x358b5d)){_0x2e8519[_0x358b5d]=_0x4c604c[_0x358b5d];}}}return _0x2e8519;}exports['encryptFile']=function(_0x5476f7,_0x124427,_0x2ccbf3,_0x318c82){return new BPromise(function(_0x3d988f,_0x15d00c){_0x318c82=combineOptions(_0x318c82);var _0x126313=new Buffer(_0x2ccbf3);var _0x14961e=fs['createReadStream'](_0x5476f7);var _0x3e51a6=fs['createWriteStream'](_0x124427);var _0x2aadf1=crypto[_0x1e33('0x11')](_0x318c82[_0x1e33('0x9')],_0x126313);_0x14961e['on'](_0x1e33('0x12'),function(_0x41dd3e){var _0x1f5854=new Buffer(_0x2aadf1['update'](_0x41dd3e),_0x1e33('0x13'));_0x3e51a6[_0x1e33('0x14')](_0x1f5854);});_0x14961e['on'](_0x1e33('0x15'),function(){try{var _0x14a048=new Buffer(_0x2aadf1[_0x1e33('0x16')](_0x1e33('0x13')),'binary');_0x3e51a6[_0x1e33('0x14')](_0x14a048);_0x3e51a6[_0x1e33('0x15')]();_0x3e51a6['on'](_0x1e33('0x17'),function(){return _0x3d988f(_0x124427);});}catch(_0xdfe8aa){fs['unlink'](_0x124427);return _0x15d00c(_0xdfe8aa);}});});};exports[_0x1e33('0x18')]=function(_0x596d1e,_0x45f481,_0x42fbb0,_0x589dd1){return new BPromise(function(_0x313d3f,_0x31f204){_0x589dd1=combineOptions(_0x589dd1);var _0x3ba6a0=new Buffer(_0x42fbb0);var _0x168072=fs[_0x1e33('0x19')](_0x596d1e);var _0x3280cd=fs['createWriteStream'](_0x45f481);var _0x1a8a74=crypto[_0x1e33('0x1a')](_0x589dd1['algorithm'],_0x3ba6a0);_0x168072['on']('data',function(_0x20a17f){var _0x563362=new Buffer(_0x1a8a74[_0x1e33('0x1b')](_0x20a17f),_0x1e33('0x13'));_0x3280cd[_0x1e33('0x14')](_0x563362);});_0x168072['on'](_0x1e33('0x15'),function(){try{var _0x56dfcc=new Buffer(_0x1a8a74['final']('binary'),'binary');_0x3280cd[_0x1e33('0x14')](_0x56dfcc);_0x3280cd[_0x1e33('0x15')]();_0x3280cd['on']('close',function(){return _0x313d3f(_0x45f481);});}catch(_0x32dd8e){fs[_0x1e33('0x1c')](_0x45f481);return _0x31f204(_0x32dd8e);}});});};exports[_0x1e33('0x1d')]=function(_0x54fc55,_0x4b114f,_0x1c776a){var _0xeb9a84=_0x1c776a||stringOptions[_0x1e33('0x9')];var _0x1a1706=_0x4b114f||stringOptions['secret'];var _0x1a0784=crypto[_0x1e33('0x11')](_0xeb9a84,_0x1a1706);var _0x285b6a=_0x1a0784[_0x1e33('0x1b')](_0x54fc55,_0x1e33('0x1e'),_0x1e33('0x1f'));_0x285b6a+=_0x1a0784[_0x1e33('0x16')](_0x1e33('0x1f'));return _0x285b6a;};exports[_0x1e33('0x20')]=function(_0x47e089,_0x22921a,_0xe21af1){var _0x1a89f5=_0xe21af1||stringOptions[_0x1e33('0x9')];var _0x301f7c=_0x22921a||stringOptions[_0x1e33('0x21')];var _0x28e70b=crypto[_0x1e33('0x1a')](_0x1a89f5,_0x301f7c);var _0x371d55=_0x28e70b[_0x1e33('0x1b')](_0x47e089,_0x1e33('0x1f'),_0x1e33('0x1e'));_0x371d55+=_0x28e70b['final'](_0x1e33('0x1e'));return _0x371d55;};
\ No newline at end of file
index 691d863..7bbab8c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c5d=['dirname','.csv','length','existsSync','join','each','%s%d.%s','csv','%s.%s','zip','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','Completed','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','Failed','finally','util','path','to-csv','zip-dir','rimraf','../../mysqldb','dbH','../../config/logger','analytics','argv','AnalyticExtractedReport','update','info','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','CSV','Setting','find','split','splitSizeCsv','then','sequelize','query','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','QueryTypes','SELECT','num','Empty','push','format','%s\x20limit\x20%d\x20OFFSET\x20%d'];(function(_0x31e1ac,_0x500c7c){var _0x5f3ad6=function(_0x4478ee){while(--_0x4478ee){_0x31e1ac['push'](_0x31e1ac['shift']());}};_0x5f3ad6(++_0x500c7c);}(_0x0c5d,0x6c));var _0xd0c5=function(_0xa57c71,_0x4146dc){_0xa57c71=_0xa57c71-0x0;var _0x1c5ed2=_0x0c5d[_0xa57c71];return _0x1c5ed2;};'use strict';var util=require(_0xd0c5('0x0'));var path=require(_0xd0c5('0x1'));var _=require('lodash');var csv=require(_0xd0c5('0x2'));var fs=require('fs');var BPromise=require('bluebird');var zipdir=require(_0xd0c5('0x3'));var rimraf=require(_0xd0c5('0x4'));var db=require(_0xd0c5('0x5'))['db'];var dbH=require(_0xd0c5('0x5'))[_0xd0c5('0x6')];var logger=require(_0xd0c5('0x7'))(_0xd0c5('0x8'));var EXTRACTED_REPORT_ID=Number(process[_0xd0c5('0x9')][0x2]);var QUERY=process['argv'][0x3];var PATH=process[_0xd0c5('0x9')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x518801,_0x47f0f4){var _0x365e04={'status':_0x518801};var _0x4be307={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x47f0f4){_0x365e04['savename']=_0x47f0f4;}return db[_0xd0c5('0xa')][_0xd0c5('0xb')](_0x365e04,_0x4be307);}function main(){var _0x50ed33=0x1388;var _0x33a77b;logger[_0xd0c5('0xc')](util['format'](_0xd0c5('0xd'),EXTRACTED_REPORT_ID,_0xd0c5('0xe')));return db[_0xd0c5('0xf')][_0xd0c5('0x10')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0xd0c5('0x11'),_0xd0c5('0x12')]})[_0xd0c5('0x13')](function(_0x46db00){if(_0x46db00){_0x33a77b=_0x46db00;_0x50ed33=_0x33a77b[_0xd0c5('0x12')]||0x1388;}})[_0xd0c5('0x13')](function(){return dbH[_0xd0c5('0x14')][_0xd0c5('0x15')](util['format'](_0xd0c5('0x16'),QUERY),{'type':dbH[_0xd0c5('0x14')][_0xd0c5('0x17')][_0xd0c5('0x18')]});})['then'](function(_0x280e22){if(!_0x280e22[0x0][_0xd0c5('0x19')]){return analyticExtractedReport(_0xd0c5('0x1a'));}var _0x639e72=[];var _0x556487=0x0;var _0x2be13d=!![];if(_0x280e22&&_0x280e22['length']){var _0x1b58cd=_0x280e22[0x0]['num']%(_0x556487+_0x50ed33);if(_0x33a77b[_0xd0c5('0x11')]){for(;_0x2be13d;_0x556487+=_0x50ed33,_0x1b58cd=_0x280e22[0x0][_0xd0c5('0x19')]%(_0x556487+_0x50ed33)){if(_0x1b58cd==0x0||_0x1b58cd==_0x280e22[0x0][_0xd0c5('0x19')]){_0x2be13d=![];}_0x639e72[_0xd0c5('0x1b')](dbH[_0xd0c5('0x14')][_0xd0c5('0x15')](util[_0xd0c5('0x1c')](_0xd0c5('0x1d'),QUERY,_0x50ed33,_0x556487),{'type':dbH['sequelize'][_0xd0c5('0x17')][_0xd0c5('0x18')]}));}}else{_0x639e72['push'](dbH[_0xd0c5('0x14')][_0xd0c5('0x15')](QUERY,{'type':dbH[_0xd0c5('0x14')][_0xd0c5('0x17')][_0xd0c5('0x18')]}));}}var _0x3f0b74=path[_0xd0c5('0x1e')](PATH);var _0x49db81=path['basename'](PATH,_0xd0c5('0x1f'));var _0x2b756a=_0x33a77b[_0xd0c5('0x11')]&&_0x639e72[_0xd0c5('0x20')]>0x1;var _0x5eb093=[];if(!fs[_0xd0c5('0x21')](path['join'](_0x3f0b74,_0x49db81))&&_0x2b756a){fs['mkdirSync'](path[_0xd0c5('0x22')](_0x3f0b74,_0x49db81));}return BPromise[_0xd0c5('0x23')](_0x639e72,function(_0x364963){_0x5eb093[_0xd0c5('0x1b')](_0x364963);})[_0xd0c5('0x13')](function(){for(var _0x96a5b8=0x0;_0x96a5b8<_0x5eb093[_0xd0c5('0x20')];_0x96a5b8+=0x1){var _0x17443b;var _0x19b9ec=_0x5eb093[_0x96a5b8];if(_0x2b756a){_0x17443b=path[_0xd0c5('0x22')](_0x3f0b74,_0x49db81,util[_0xd0c5('0x1c')](_0xd0c5('0x24'),_0x49db81,_0x96a5b8,_0xd0c5('0x25')));}else{_0x17443b=path[_0xd0c5('0x22')](_0x3f0b74,util[_0xd0c5('0x1c')](_0xd0c5('0x26'),_0x49db81,_0xd0c5('0x25')));}fs['writeFileSync'](_0x17443b,csv(_0x19b9ec));}})[_0xd0c5('0x13')](function(){if(_0x2b756a){zipdir(path[_0xd0c5('0x22')](_0x3f0b74,_0x49db81),{'saveTo':path[_0xd0c5('0x22')](_0x3f0b74,util[_0xd0c5('0x1c')](_0xd0c5('0x26'),_0x49db81,_0xd0c5('0x27')))},function(_0x135e2,_0x571410){});rimraf(path[_0xd0c5('0x22')](_0x3f0b74,_0x49db81),function(){});}})['then'](function(){logger[_0xd0c5('0xc')](util[_0xd0c5('0x1c')](_0xd0c5('0x28'),EXTRACTED_REPORT_ID,_0xd0c5('0xe')));return analyticExtractedReport(_0xd0c5('0x29'),_0x2b756a?util[_0xd0c5('0x1c')](_0xd0c5('0x26'),_0x49db81,_0x2b756a?'zip':'csv'):null);});})[_0xd0c5('0x2a')](function(_0x5c0dbf){logger[_0xd0c5('0xc')](util[_0xd0c5('0x1c')](_0xd0c5('0x2b'),EXTRACTED_REPORT_ID,_0xd0c5('0xe')),util['inspect'](_0x5c0dbf,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0xd0c5('0x2c'));})[_0xd0c5('0x2d')](function(){process['exit'](EXIT_CODE);});}main();
\ No newline at end of file
+var _0x05f9=['Completed','zip','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','Failed','finally','exit','util','path','lodash','to-csv','rimraf','../../mysqldb','../../config/logger','analytics','argv','savename','AnalyticExtractedReport','update','info','format','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','CSV','Setting','splitSizeCsv','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','QueryTypes','SELECT','then','num','Empty','split','isInteger','forEach','push','query','%s\x20limit\x20%d\x20OFFSET\x20%d','sequelize','dirname','basename','.csv','length','mkdirSync','join','each','csv','%s.%s','writeFileSync','zip\x20finished'];(function(_0x4a3554,_0x14f2fd){var _0x12e4cb=function(_0x30dedc){while(--_0x30dedc){_0x4a3554['push'](_0x4a3554['shift']());}};_0x12e4cb(++_0x14f2fd);}(_0x05f9,0x134));var _0x905f=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0x05f9[_0x4cf98e];return _0x1623ac;};'use strict';var util=require(_0x905f('0x0'));var path=require(_0x905f('0x1'));var _=require(_0x905f('0x2'));var csv=require(_0x905f('0x3'));var fs=require('fs');var BPromise=require('bluebird');var zipdir=require('zip-dir');var rimraf=require(_0x905f('0x4'));var db=require(_0x905f('0x5'))['db'];var dbH=require(_0x905f('0x5'))['dbH'];var logger=require(_0x905f('0x6'))(_0x905f('0x7'));var EXTRACTED_REPORT_ID=Number(process[_0x905f('0x8')][0x2]);var QUERY=process[_0x905f('0x8')][0x3];var PATH=process[_0x905f('0x8')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x1f8b32,_0x233d07){var _0x23a7a9={'status':_0x1f8b32};var _0x100896={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x233d07){_0x23a7a9[_0x905f('0x9')]=_0x233d07;}return db[_0x905f('0xa')][_0x905f('0xb')](_0x23a7a9,_0x100896);}function main(){var _0x10271e=0x1388;var _0x253ef3;logger[_0x905f('0xc')](util[_0x905f('0xd')](_0x905f('0xe'),EXTRACTED_REPORT_ID,_0x905f('0xf')));return db[_0x905f('0x10')]['find']({'where':{'id':0x1},'raw':!![],'attributes':['id','split',_0x905f('0x11')]})['then'](function(_0x5ea242){if(_0x5ea242){_0x253ef3=_0x5ea242;_0x10271e=_0x253ef3[_0x905f('0x11')]||0x1388;}})['then'](function(){return dbH['sequelize']['query'](util[_0x905f('0xd')](_0x905f('0x12'),QUERY),{'type':dbH['sequelize'][_0x905f('0x13')][_0x905f('0x14')]});})[_0x905f('0x15')](function(_0x47ead4){if(!_0x47ead4[0x0][_0x905f('0x16')]){return analyticExtractedReport(_0x905f('0x17'));}var _0x5c899c=[];var _0x35a698=0x0;if(_0x253ef3[_0x905f('0x18')]){if(_0x47ead4&&_0x47ead4['length']){var _0x5834b3=_['range'](_0x47ead4[0x0][_0x905f('0x16')]/_0x10271e);var _0x150b26=Number[_0x905f('0x19')](_0x47ead4[0x0][_0x905f('0x16')]/_0x10271e)?_0x47ead4[0x0]['num']%_0x10271e:0x0;_0x5834b3[_0x905f('0x1a')](function(_0xf71e6e){if(_0xf71e6e>0x0){_0x35a698+=_0x10271e;}_0x5c899c[_0x905f('0x1b')](dbH['sequelize'][_0x905f('0x1c')](util[_0x905f('0xd')](_0x905f('0x1d'),QUERY,_0x10271e,_0x35a698),{'type':dbH['sequelize'][_0x905f('0x13')][_0x905f('0x14')]}));});if(_0x150b26>0x0){_0x35a698+=_0x10271e;_0x5c899c[_0x905f('0x1b')](dbH[_0x905f('0x1e')][_0x905f('0x1c')](util[_0x905f('0xd')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x150b26,_0x35a698),{'type':dbH[_0x905f('0x1e')]['QueryTypes'][_0x905f('0x14')]}));}}}else{_0x5c899c[_0x905f('0x1b')](dbH[_0x905f('0x1e')][_0x905f('0x1c')](QUERY,{'type':dbH['sequelize'][_0x905f('0x13')][_0x905f('0x14')]}));}var _0x44821a=path[_0x905f('0x1f')](PATH);var _0x35735d=path[_0x905f('0x20')](PATH,_0x905f('0x21'));var _0x1719c0=_0x253ef3[_0x905f('0x18')]&&_0x5c899c[_0x905f('0x22')]>0x1;var _0x362ce6=[];if(!fs['existsSync'](path['join'](_0x44821a,_0x35735d))&&_0x1719c0){fs[_0x905f('0x23')](path[_0x905f('0x24')](_0x44821a,_0x35735d));}return BPromise[_0x905f('0x25')](_0x5c899c,function(_0x4c451b){_0x362ce6[_0x905f('0x1b')](_0x4c451b);})[_0x905f('0x15')](function(){for(var _0x5be0c0=0x0;_0x5be0c0<_0x362ce6[_0x905f('0x22')];_0x5be0c0+=0x1){var _0x31f56e;var _0x24db50=_0x362ce6[_0x5be0c0];if(_0x1719c0){_0x31f56e=path[_0x905f('0x24')](_0x44821a,_0x35735d,util[_0x905f('0xd')]('%s%d.%s',_0x35735d,_0x5be0c0,_0x905f('0x26')));}else{_0x31f56e=path[_0x905f('0x24')](_0x44821a,util['format'](_0x905f('0x27'),_0x35735d,_0x905f('0x26')));}fs[_0x905f('0x28')](_0x31f56e,csv(_0x24db50));}})[_0x905f('0x15')](function(){if(_0x1719c0){return new Promise(function(_0x429dfa){zipdir(path['join'](_0x44821a,_0x35735d),{'saveTo':path[_0x905f('0x24')](_0x44821a,util[_0x905f('0xd')](_0x905f('0x27'),_0x35735d,'zip'))},function(_0x1e3092,_0x50c1c7){rimraf(path[_0x905f('0x24')](_0x44821a,_0x35735d),function(){});_0x429dfa(_0x905f('0x29'));});});}})[_0x905f('0x15')](function(){logger[_0x905f('0xc')](util[_0x905f('0xd')]('Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed',EXTRACTED_REPORT_ID,_0x905f('0xf')));return analyticExtractedReport(_0x905f('0x2a'),_0x1719c0?util[_0x905f('0xd')](_0x905f('0x27'),_0x35735d,_0x1719c0?_0x905f('0x2b'):_0x905f('0x26')):null);});})[_0x905f('0x2c')](function(_0x46aee1){logger[_0x905f('0xc')](util[_0x905f('0xd')](_0x905f('0x2d'),EXTRACTED_REPORT_ID,_0x905f('0xf')),util[_0x905f('0x2e')](_0x46aee1,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x905f('0x2f'));})[_0x905f('0x30')](function(){process[_0x905f('0x31')](EXIT_CODE);});}main();
\ No newline at end of file
index 806fd49..b8f9268 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8849=['Completed','zip','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','PDF','findOne','sequelize','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','SELECT','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','Failed','finally','/fonts/arial-bold.ttf','/fonts/arial-italic.ttf','/fonts/arial-bold-italic.ttf','%s\x20#%d','channel','interactionId','YYYY-MM-DD','center','Interaction\x20Transcript','\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s','createWriteStream','finish','error','end','createPdfFromHTML','lodash','util','path','zip-dir','rimraf','JSDOM','window','../../mysqldb','dbH','../../config/logger','argv','MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a','savename','AnalyticExtractedReport','tableHeader','map','pick','value','fill','body','push','concat','chunk','keys','forEach','format','Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s','name','startDate','endDate','header','pageBreak','margin','toString','footer','black','right','num','dirname','basename','.pdf','join','pdf','Setting','find','split','splitSizePdf','then','length','query','QueryTypes','existsSync','mkdirSync','createPdfKitDocument','%s%d.%s','%s.%s','info','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','CSV'];(function(_0x39f1ae,_0x4a77ce){var _0x1d52b8=function(_0xc262fa){while(--_0xc262fa){_0x39f1ae['push'](_0x39f1ae['shift']());}};_0x1d52b8(++_0x4a77ce);}(_0x8849,0x73));var _0x9884=function(_0x11be76,_0x88926){_0x11be76=_0x11be76-0x0;var _0x2c8516=_0x8849[_0x11be76];return _0x2c8516;};'use strict';var _=require(_0x9884('0x0'));var fs=require('fs');var util=require(_0x9884('0x1'));var path=require(_0x9884('0x2'));var moment=require('moment');var htmlToPdfmake=require('html-to-pdfmake');var PdfPrinter=require('pdfmake/src/printer');var zipdir=require(_0x9884('0x3'));var rimraf=require(_0x9884('0x4'));var JSDOM=require('jsdom')[_0x9884('0x5')];var window=new JSDOM('')[_0x9884('0x6')];var db=require(_0x9884('0x7'))['db'];var dbH=require('../../mysqldb')[_0x9884('0x8')];var logger=require(_0x9884('0x9'))('analytics');var EXTRACTED_REPORT_ID=Number(process['argv'][0x2]);var QUERY=process[_0x9884('0xa')][0x3];var PATH=process['argv'][0x4];var NAME=process[_0x9884('0xa')][0x5];var FORMAT=_0x9884('0xb');var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x461240,_0x329374){var _0x3624a3={'status':_0x461240};var _0x4ff2db={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x329374){_0x3624a3[_0x9884('0xc')]=_0x329374;}return db[_0x9884('0xd')]['update'](_0x3624a3,_0x4ff2db);}function getHeaders(_0x26bca7){return _['map'](_0x26bca7,function(_0x8883a3){return{'text':_0x8883a3,'style':_0x9884('0xe')};});}function getRows(_0x56108c,_0x57b8d5){return _[_0x9884('0xf')](_0x57b8d5,function(_0x202fc4){return _(_0x202fc4)[_0x9884('0x10')](_0x56108c)[_0x9884('0xf')](function(_0x4befcc){return _0x4befcc?_['toString'](_0x4befcc):'';})[_0x9884('0x11')]();});}function createTable(_0x1081aa,_0x2eff59){var _0x9eb8c4={'widths':_[_0x9884('0x12')](Array(_0x1081aa['length']),0x91),'heights':function(_0x71515c){return _0x71515c===0x0?'auto':0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x42a601=getHeaders(_0x1081aa);_0x9eb8c4[_0x9884('0x13')][_0x9884('0x14')](_0x42a601);var _0x25ee52=getRows(_0x1081aa,_0x2eff59);_0x9eb8c4[_0x9884('0x13')]=_0x9eb8c4[_0x9884('0x13')][_0x9884('0x15')](_0x25ee52);return _0x9eb8c4;}function createTables(_0x18609b){var _0x3abdd6=[];var _0x4fa119=_[_0x9884('0x16')](Object[_0x9884('0x17')](_0x18609b[0x0]),0x5);_0x4fa119[_0x9884('0x18')](function(_0xf3bc71){_0x3abdd6[_0x9884('0x14')](createTable(_0xf3bc71,_0x18609b));});return _0x3abdd6;}function getPDFDocDefinition(_0x177c60){var _0x224bd0=util[_0x9884('0x19')](_0x9884('0x1a'),NAME,EXTRACTED_REPORT[_0x9884('0x1b')],moment(EXTRACTED_REPORT[_0x9884('0x1c')])['format'](FORMAT),moment(EXTRACTED_REPORT[_0x9884('0x1d')])[_0x9884('0x19')](FORMAT));var _0x30660f=[];for(var _0x28b6b0=0x0;_0x28b6b0<_0x177c60['length'];_0x28b6b0++){var _0x36045b=[];if(_0x28b6b0===0x0){_0x36045b['push']({'text':_0x224bd0,'style':_0x9884('0x1e')});}var _0x59a8c2={'table':_0x177c60[_0x28b6b0]};if(_0x28b6b0>0x0){_0x59a8c2[_0x9884('0x1f')]='before';_0x59a8c2[_0x9884('0x20')]=[0x0,0x46,0x0,0x0];}_0x36045b[_0x9884('0x14')](_0x59a8c2);_0x30660f[_0x9884('0x14')](_0x36045b);}return{'pageSize':'A4','pageOrientation':'landscape','content':_0x30660f,'footer':function(_0x18ff88,_0x17d42d){return{'text':_0x18ff88[_0x9884('0x21')]()+'\x20/\x20'+_0x17d42d,'style':_0x9884('0x22')};},'defaultStyle':{'font':'Arial'},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':_0x9884('0x23')},'footer':{'alignment':_0x9884('0x24'),'margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x172927){var _0x30e4bc=0x1388;var _0x33b3b0;if(!_0x172927[0x0][_0x9884('0x25')]){return analyticExtractedReport('Empty');}var _0x3be63b=[];var _0x19ead6=0x0;var _0x15209b=!![];var _0x223e0c=path[_0x9884('0x26')](PATH);var _0x2a9cb1=path[_0x9884('0x27')](PATH,_0x9884('0x28'));var _0x465003=path[_0x9884('0x29')](_0x223e0c,util[_0x9884('0x19')]('%s.%s',_0x2a9cb1,_0x9884('0x2a')));var _0x389190=![];return db[_0x9884('0x2b')][_0x9884('0x2c')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x9884('0x2d'),_0x9884('0x2e')]})[_0x9884('0x2f')](function(_0x7b68c5){if(_0x7b68c5){_0x33b3b0=_0x7b68c5;_0x30e4bc=_0x33b3b0[_0x9884('0x2e')]||0x3e8;}})[_0x9884('0x2f')](function(){if(_0x172927&&_0x172927[_0x9884('0x30')]){var _0x4345e3=_0x172927[0x0][_0x9884('0x25')]%(_0x19ead6+_0x30e4bc);if(_0x33b3b0[_0x9884('0x2d')]){for(;_0x15209b;_0x19ead6+=_0x30e4bc,_0x4345e3=_0x172927[0x0]['num']%(_0x19ead6+_0x30e4bc)){if(_0x4345e3==0x0||_0x4345e3==_0x172927[0x0][_0x9884('0x25')]){_0x15209b=![];}_0x3be63b[_0x9884('0x14')](dbH['sequelize'][_0x9884('0x31')](util['format']('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x30e4bc,_0x19ead6),{'type':dbH['sequelize'][_0x9884('0x32')]['SELECT']}));}}else{_0x3be63b[_0x9884('0x14')](dbH['sequelize'][_0x9884('0x31')](QUERY,{'type':dbH['sequelize'][_0x9884('0x32')]['SELECT']}));}}_0x389190=_0x33b3b0[_0x9884('0x2d')]&&_0x3be63b[_0x9884('0x30')]>0x1;if(!fs[_0x9884('0x33')](path[_0x9884('0x29')](_0x223e0c,_0x2a9cb1))&&_0x389190){fs[_0x9884('0x34')](path['join'](_0x223e0c,_0x2a9cb1));}return Promise['all'](_0x3be63b);})[_0x9884('0x2f')](function(_0x4bfca6){return createTables(_['flatten'](_0x4bfca6));})[_0x9884('0x2f')](function(_0xfb8332){var _0x430423=getPDFDocDefinition(_0xfb8332);var _0x30c83b=getPDFPrinter();var _0x18a6b4=_0x30c83b[_0x9884('0x35')](_0x430423);if(_0x389190)_0x465003=path['join'](_0x223e0c,_0x2a9cb1,util['format'](_0x9884('0x36'),_0x2a9cb1,index,_0x9884('0x2a')));return writePDFDocument(_0x18a6b4,_0x465003);})['then'](function(){if(!_0x389190)return;zipdir(path[_0x9884('0x29')](_0x223e0c,_0x2a9cb1),{'saveTo':path[_0x9884('0x29')](_0x223e0c,util[_0x9884('0x19')](_0x9884('0x37'),_0x2a9cb1,'zip'))},function(_0x1e2f9d){if(_0x1e2f9d)throw _0x1e2f9d;return;});})[_0x9884('0x2f')](function(){if(!_0x389190)return;rimraf(path[_0x9884('0x29')](_0x223e0c,_0x2a9cb1),function(){});})['then'](function(){logger[_0x9884('0x38')](util[_0x9884('0x19')](_0x9884('0x39'),EXTRACTED_REPORT_ID,_0x9884('0x3a')));return analyticExtractedReport(_0x9884('0x3b'),_0x389190?util[_0x9884('0x19')](_0x9884('0x37'),_0x2a9cb1,_0x389190?_0x9884('0x3c'):_0x9884('0x2a')):null);});}function main(){if(!EXTRACTED_REPORT_ID)return;logger[_0x9884('0x38')](util[_0x9884('0x19')](_0x9884('0x3d'),EXTRACTED_REPORT_ID,_0x9884('0x3e')));return db['AnalyticExtractedReport'][_0x9884('0x3f')]({'where':{'id':EXTRACTED_REPORT_ID}})[_0x9884('0x2f')](function(_0xb00153){EXTRACTED_REPORT=_0xb00153;return dbH[_0x9884('0x40')][_0x9884('0x31')](util[_0x9884('0x19')](_0x9884('0x41'),QUERY),{'type':dbH[_0x9884('0x40')][_0x9884('0x32')][_0x9884('0x42')]});})[_0x9884('0x2f')](extractReport)[_0x9884('0x43')](function(_0x4389db){logger['info'](util[_0x9884('0x19')](_0x9884('0x44'),EXTRACTED_REPORT_ID,_0x9884('0x3e')),util[_0x9884('0x45')](_0x4389db,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x9884('0x46'));})[_0x9884('0x47')](function(){process['exit'](EXIT_CODE);});}main();function getPDFPrinter(){var _0x394089=new PdfPrinter({'Arial':{'normal':__dirname+'/fonts/arial-regular.ttf','bold':__dirname+_0x9884('0x48'),'italics':__dirname+_0x9884('0x49'),'bolditalics':__dirname+_0x9884('0x4a')}});return _0x394089;}function getPDFDocDefinitionFromHTML(_0x32e5d3,_0x441a7c){var _0x4e6a03=util[_0x9884('0x19')](_0x9884('0x4b'),_0x441a7c[_0x9884('0x4c')],_0x441a7c[_0x9884('0x4d')]);var _0x1f7ebd=moment()['format'](_0x9884('0x4e'))[_0x9884('0x21')]();var _0x2ed125=htmlToPdfmake(_0x32e5d3,{'window':window,'tableAutoSize':!![]});return{'content':[_0x2ed125],'defaultStyle':{'font':'Arial'},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':'center','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':_0x9884('0x4f')}},'header':function(){return[{'text':_0x9884('0x50'),'style':_0x9884('0x1e')}];},'footer':function(_0x4aa492,_0x45d207){return[{'text':util[_0x9884('0x19')](_0x9884('0x51'),_0x4e6a03,_0x4aa492,_0x45d207,_0x1f7ebd),'style':_0x9884('0x22')}];}};}function writePDFDocument(_0x4773dc,_0x4e0b7e){return new Promise(function(_0x242ad9,_0x3d5a2e){var _0x48661a=_0x4773dc['pipe'](fs[_0x9884('0x52')](_0x4e0b7e));_0x48661a['on'](_0x9884('0x53'),function(){_0x242ad9('finish');});_0x48661a['on'](_0x9884('0x54'),function(_0x13ea0b){_0x3d5a2e(_0x13ea0b);});_0x4773dc[_0x9884('0x55')]();});}exports[_0x9884('0x56')]=function(_0x182afc,_0x3c5117){var _0x3b38c3=getPDFPrinter();var _0x2f7047=getPDFDocDefinitionFromHTML(_0x182afc,_0x3c5117);var _0x31043d=_0x3b38c3[_0x9884('0x35')](_0x2f7047);return writePDFDocument(_0x31043d,_0x3c5117[_0x9884('0x2')])['catch'](function(_0x17caa1){throw _0x17caa1;});};
\ No newline at end of file
+var _0x3748=['format','Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s','startDate','endDate','header','before','margin','landscape','footer','Arial','right','Setting','split','then','splitSizePdf','range','num','sequelize','query','%s\x20limit\x20%d\x20OFFSET\x20%d','QueryTypes','SELECT','dirname','basename','.pdf','join','each','flatten','createPdfKitDocument','%s%d.%s','pdf','%s.%s','info','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','PDF','Completed','zip','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','Failed','exit','/fonts/arial-regular.ttf','/fonts/arial-bold.ttf','/fonts/arial-italic.ttf','/fonts/arial-bold-italic.ttf','%s\x20#%d','channel','interactionId','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','lodash','util','path','moment','html-to-pdfmake','zip-dir','jsdom','window','bluebird','../../mysqldb','../../config/logger','analytics','argv','MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a','savename','AnalyticExtractedReport','update','map','tableHeader','toString','value','fill','length','push','body','concat','chunk','keys','forEach'];(function(_0x464390,_0x40db21){var _0x17e399=function(_0x3b24e2){while(--_0x3b24e2){_0x464390['push'](_0x464390['shift']());}};_0x17e399(++_0x40db21);}(_0x3748,0x143));var _0x8374=function(_0x165b5c,_0x2822c6){_0x165b5c=_0x165b5c-0x0;var _0x504fb8=_0x3748[_0x165b5c];return _0x504fb8;};'use strict';var _=require(_0x8374('0x0'));var fs=require('fs');var util=require(_0x8374('0x1'));var path=require(_0x8374('0x2'));var moment=require(_0x8374('0x3'));var htmlToPdfmake=require(_0x8374('0x4'));var PdfPrinter=require('pdfmake/src/printer');var zipdir=require(_0x8374('0x5'));var rimraf=require('rimraf');var JSDOM=require(_0x8374('0x6'))['JSDOM'];var window=new JSDOM('')[_0x8374('0x7')];var BPromise=require(_0x8374('0x8'));var db=require(_0x8374('0x9'))['db'];var dbH=require('../../mysqldb')['dbH'];var logger=require(_0x8374('0xa'))(_0x8374('0xb'));var EXTRACTED_REPORT_ID=Number(process[_0x8374('0xc')][0x2]);var QUERY=process[_0x8374('0xc')][0x3];var PATH=process[_0x8374('0xc')][0x4];var NAME=process[_0x8374('0xc')][0x5];var FORMAT=_0x8374('0xd');var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x416874,_0x4d7b72){var _0x3bb237={'status':_0x416874};var _0x2e585b={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x4d7b72){_0x3bb237[_0x8374('0xe')]=_0x4d7b72;}return db[_0x8374('0xf')][_0x8374('0x10')](_0x3bb237,_0x2e585b);}function getHeaders(_0x2f5a68){return _[_0x8374('0x11')](_0x2f5a68,function(_0x956807){return{'text':_0x956807,'style':_0x8374('0x12')};});}function getRows(_0x313350,_0x5a7966){return _[_0x8374('0x11')](_0x5a7966,function(_0x1372c0){return _(_0x1372c0)['pick'](_0x313350)[_0x8374('0x11')](function(_0x5763ab){return _0x5763ab?_[_0x8374('0x13')](_0x5763ab):'';})[_0x8374('0x14')]();});}function createTable(_0x1dafca,_0x5ca1a0){var _0x403307={'widths':_[_0x8374('0x15')](Array(_0x1dafca[_0x8374('0x16')]),0x91),'heights':function(_0x1d41d7){return _0x1d41d7===0x0?'auto':0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x56567e=getHeaders(_0x1dafca);_0x403307['body'][_0x8374('0x17')](_0x56567e);var _0x5931bc=getRows(_0x1dafca,_0x5ca1a0);_0x403307['body']=_0x403307[_0x8374('0x18')][_0x8374('0x19')](_0x5931bc);return _0x403307;}function createTables(_0x3c1788){var _0x31e502=[];var _0x2bea38=_[_0x8374('0x1a')](Object[_0x8374('0x1b')](_0x3c1788[0x0]),0x5);_0x2bea38[_0x8374('0x1c')](function(_0xa1796f){_0x31e502['push'](createTable(_0xa1796f,_0x3c1788));});return _0x31e502;}function getPDFDocDefinition(_0x325781){var _0x1cffbe=util[_0x8374('0x1d')](_0x8374('0x1e'),NAME,EXTRACTED_REPORT['name'],moment(EXTRACTED_REPORT[_0x8374('0x1f')])[_0x8374('0x1d')](FORMAT),moment(EXTRACTED_REPORT[_0x8374('0x20')])[_0x8374('0x1d')](FORMAT));var _0x2cec4d=[];for(var _0x5ec59f=0x0;_0x5ec59f<_0x325781['length'];_0x5ec59f++){var _0x2bd5c3=[];if(_0x5ec59f===0x0){_0x2bd5c3['push']({'text':_0x1cffbe,'style':_0x8374('0x21')});}var _0x35a919={'table':_0x325781[_0x5ec59f]};if(_0x5ec59f>0x0){_0x35a919['pageBreak']=_0x8374('0x22');_0x35a919[_0x8374('0x23')]=[0x0,0x46,0x0,0x0];}_0x2bd5c3[_0x8374('0x17')](_0x35a919);_0x2cec4d[_0x8374('0x17')](_0x2bd5c3);}return{'pageSize':'A4','pageOrientation':_0x8374('0x24'),'content':_0x2cec4d,'footer':function(_0x16e549,_0x127665){return{'text':_0x16e549[_0x8374('0x13')]()+'\x20/\x20'+_0x127665,'style':_0x8374('0x25')};},'defaultStyle':{'font':_0x8374('0x26')},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':'black'},'footer':{'alignment':_0x8374('0x27'),'margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x19914c){var _0x47f0ab=0x1388;var _0x40fc21;if(!_0x19914c[0x0]['num']){return analyticExtractedReport('Empty');}return db[_0x8374('0x28')]['find']({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x8374('0x29'),'splitSizePdf']})[_0x8374('0x2a')](function(_0x2034e1){if(_0x2034e1){_0x40fc21=_0x2034e1;_0x47f0ab=_0x40fc21[_0x8374('0x2b')]||0x3e8;}})[_0x8374('0x2a')](function(){var _0x29c572=[];var _0x49bfb4=0x0;if(_0x40fc21[_0x8374('0x29')]){if(_0x19914c&&_0x19914c['length']){var _0x99c1ae=_[_0x8374('0x2c')](_0x19914c[0x0][_0x8374('0x2d')]/_0x47f0ab);var _0x956810=Number['isInteger'](_0x19914c[0x0][_0x8374('0x2d')]/_0x47f0ab)?_0x19914c[0x0][_0x8374('0x2d')]%_0x47f0ab:0x0;_0x99c1ae[_0x8374('0x1c')](function(_0x417206){if(_0x417206>0x0){_0x49bfb4+=_0x47f0ab;}_0x29c572['push'](dbH[_0x8374('0x2e')][_0x8374('0x2f')](util['format'](_0x8374('0x30'),QUERY,_0x47f0ab,_0x49bfb4),{'type':dbH[_0x8374('0x2e')][_0x8374('0x31')][_0x8374('0x32')]}));});if(_0x956810>0x0){_0x49bfb4+=_0x47f0ab;_0x29c572[_0x8374('0x17')](dbH[_0x8374('0x2e')][_0x8374('0x2f')](util['format'](_0x8374('0x30'),QUERY,_0x956810,_0x49bfb4),{'type':dbH[_0x8374('0x2e')][_0x8374('0x31')]['SELECT']}));}}}else{_0x29c572[_0x8374('0x17')](dbH['sequelize']['query'](QUERY,{'type':dbH[_0x8374('0x2e')][_0x8374('0x31')][_0x8374('0x32')]}));}var _0x4e1cac=path[_0x8374('0x33')](PATH);var _0x3b7c5f=path[_0x8374('0x34')](PATH,_0x8374('0x35'));var _0x384e21=_0x40fc21[_0x8374('0x29')]&&_0x29c572[_0x8374('0x16')]>0x1;var _0x41514f=[];if(!fs['existsSync'](path[_0x8374('0x36')](_0x4e1cac,_0x3b7c5f))&&_0x384e21){fs['mkdirSync'](path['join'](_0x4e1cac,_0x3b7c5f));}return BPromise[_0x8374('0x37')](_0x29c572,function(_0x1cc4bd){_0x41514f[_0x8374('0x17')](_0x1cc4bd);})[_0x8374('0x2a')](function(){var _0x4bbc40=[];for(var _0x1fa8fa=0x0;_0x1fa8fa<_0x41514f[_0x8374('0x16')];_0x1fa8fa+=0x1){var _0x545ba7=_0x41514f[_0x1fa8fa];var _0x3ecc0d=createTables(_[_0x8374('0x38')](_0x545ba7));var _0x1200a2;var _0x26bb4b=getPDFDocDefinition(_0x3ecc0d);var _0x368dda=getPDFPrinter();var _0x4c0ae8=_0x368dda[_0x8374('0x39')](_0x26bb4b);if(_0x384e21){_0x1200a2=path[_0x8374('0x36')](_0x4e1cac,_0x3b7c5f,util[_0x8374('0x1d')](_0x8374('0x3a'),_0x3b7c5f,_0x1fa8fa,_0x8374('0x3b')));}else{_0x1200a2=path[_0x8374('0x36')](_0x4e1cac,util[_0x8374('0x1d')](_0x8374('0x3c'),_0x3b7c5f,'pdf'));}_0x4bbc40[_0x8374('0x17')](writePDFDocument(_0x4c0ae8,_0x1200a2));}return Promise['all'](_0x4bbc40);})[_0x8374('0x2a')](function(){if(_0x384e21){return new Promise(function(_0xadb646){zipdir(path[_0x8374('0x36')](_0x4e1cac,_0x3b7c5f),{'saveTo':path[_0x8374('0x36')](_0x4e1cac,util[_0x8374('0x1d')](_0x8374('0x3c'),_0x3b7c5f,'zip'))},function(){rimraf(path[_0x8374('0x36')](_0x4e1cac,_0x3b7c5f),function(){});_0xadb646('zip\x20finished');});});}})['then'](function(){if(!_0x384e21)return;rimraf(path[_0x8374('0x36')](_0x4e1cac,_0x3b7c5f),function(){});})[_0x8374('0x2a')](function(){logger[_0x8374('0x3d')](util[_0x8374('0x1d')](_0x8374('0x3e'),EXTRACTED_REPORT_ID,_0x8374('0x3f')));return analyticExtractedReport(_0x8374('0x40'),_0x384e21?util[_0x8374('0x1d')](_0x8374('0x3c'),_0x3b7c5f,_0x384e21?_0x8374('0x41'):_0x8374('0x3b')):null);});});}function main(){if(!EXTRACTED_REPORT_ID)return;logger[_0x8374('0x3d')](util[_0x8374('0x1d')](_0x8374('0x42'),EXTRACTED_REPORT_ID,_0x8374('0x3f')));return db['AnalyticExtractedReport']['findOne']({'where':{'id':EXTRACTED_REPORT_ID}})[_0x8374('0x2a')](function(_0x3f76a9){EXTRACTED_REPORT=_0x3f76a9;return dbH[_0x8374('0x2e')][_0x8374('0x2f')](util['format'](_0x8374('0x43'),QUERY),{'type':dbH['sequelize']['QueryTypes'][_0x8374('0x32')]});})['then'](extractReport)[_0x8374('0x44')](function(_0x40a07d){logger[_0x8374('0x3d')](util[_0x8374('0x1d')](_0x8374('0x45'),EXTRACTED_REPORT_ID,_0x8374('0x3f')),util[_0x8374('0x46')](_0x40a07d,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x8374('0x47'));})['finally'](function(){process[_0x8374('0x48')](EXIT_CODE);});}main();function getPDFPrinter(){var _0x173727=new PdfPrinter({'Arial':{'normal':__dirname+_0x8374('0x49'),'bold':__dirname+_0x8374('0x4a'),'italics':__dirname+_0x8374('0x4b'),'bolditalics':__dirname+_0x8374('0x4c')}});return _0x173727;}function getPDFDocDefinitionFromHTML(_0x3b018c,_0x307527){var _0x57c0f3=util[_0x8374('0x1d')](_0x8374('0x4d'),_0x307527[_0x8374('0x4e')],_0x307527[_0x8374('0x4f')]);var _0x455fc1=moment()[_0x8374('0x1d')]('YYYY-MM-DD')[_0x8374('0x13')]();var _0x5a95de=htmlToPdfmake(_0x3b018c,{'window':window,'tableAutoSize':!![]});return{'content':[_0x5a95de],'defaultStyle':{'font':_0x8374('0x26')},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':'center','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':_0x8374('0x50')}},'header':function(){return[{'text':_0x8374('0x51'),'style':_0x8374('0x21')}];},'footer':function(_0x4cea2f,_0x347a06){return[{'text':util[_0x8374('0x1d')](_0x8374('0x52'),_0x57c0f3,_0x4cea2f,_0x347a06,_0x455fc1),'style':_0x8374('0x25')}];}};}function writePDFDocument(_0x2fc7b4,_0x2202fe){return new Promise(function(_0x50280f,_0x577b90){var _0x163bb0=_0x2fc7b4[_0x8374('0x53')](fs[_0x8374('0x54')](_0x2202fe));_0x163bb0['on'](_0x8374('0x55'),function(){_0x50280f('finish');});_0x163bb0['on'](_0x8374('0x56'),function(_0x26c4be){_0x577b90(_0x26c4be);});_0x2fc7b4[_0x8374('0x57')]();});}exports['createPdfFromHTML']=function(_0x4cf875,_0x594acc){var _0x4248eb=getPDFPrinter();var _0x291c03=getPDFDocDefinitionFromHTML(_0x4cf875,_0x594acc);var _0xdbb4b0=_0x4248eb[_0x8374('0x39')](_0x291c03);return writePDFDocument(_0xdbb4b0,_0x594acc[_0x8374('0x2')])[_0x8374('0x44')](function(_0x439e17){throw _0x439e17;});};
\ No newline at end of file
index 9328cf6..4bdeb86 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3cdb=['SELECT','num','push','%s\x20limit\x20%d\x20OFFSET\x20%d','basename','.xlsx','length','existsSync','join','mkdirSync','%s.%s','xlsx','writeFileSync','XLSX','zip','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','Failed','finally','exit','util','path','lodash','rimraf','../../mysqldb','dbH','../../config/logger','analytics','argv','AnalyticExtractedReport','info','format','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','find','split','splitSizeXlsx','then','sequelize','query','QueryTypes'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0x3cdb,0x90));var _0xb3cd=function(_0x3a9661,_0x530b12){_0x3a9661=_0x3a9661-0x0;var _0x5bb119=_0x3cdb[_0x3a9661];return _0x5bb119;};'use strict';var util=require(_0xb3cd('0x0'));var path=require(_0xb3cd('0x1'));var _=require(_0xb3cd('0x2'));var fs=require('fs');var json2xls=require('json2xls');var BPromise=require('bluebird');var zipdir=require('zip-dir');var rimraf=require(_0xb3cd('0x3'));var db=require(_0xb3cd('0x4'))['db'];var dbH=require(_0xb3cd('0x4'))[_0xb3cd('0x5')];var logger=require(_0xb3cd('0x6'))(_0xb3cd('0x7'));var EXTRACTED_REPORT_ID=Number(process[_0xb3cd('0x8')][0x2]);var QUERY=process['argv'][0x3];var PATH=process['argv'][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0xe2ab53,_0x3e8e52){var _0x2e2e9c={'status':_0xe2ab53};var _0x454072={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x3e8e52){_0x2e2e9c['savename']=_0x3e8e52;}return db[_0xb3cd('0x9')]['update'](_0x2e2e9c,_0x454072);}function main(){var _0x3b3786=0x1388;var _0x4ca97e;logger[_0xb3cd('0xa')](util[_0xb3cd('0xb')](_0xb3cd('0xc'),EXTRACTED_REPORT_ID,'XLSX'));return db['Setting'][_0xb3cd('0xd')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0xb3cd('0xe'),_0xb3cd('0xf')]})[_0xb3cd('0x10')](function(_0x3c87de){if(_0x3c87de){_0x4ca97e=_0x3c87de;_0x3b3786=_0x4ca97e[_0xb3cd('0xf')]||0x1388;}})['then'](function(){return dbH[_0xb3cd('0x11')][_0xb3cd('0x12')](util[_0xb3cd('0xb')]('SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t',QUERY),{'type':dbH[_0xb3cd('0x11')][_0xb3cd('0x13')][_0xb3cd('0x14')]});})[_0xb3cd('0x10')](function(_0x382480){if(!_0x382480[0x0][_0xb3cd('0x15')]){return analyticExtractedReport('Empty');}var _0x22ec2d=[];var _0x3bebc0=0x0;var _0x1c3bd1=!![];if(_0x4ca97e[_0xb3cd('0xe')]){if(_0x382480&&_0x382480['length']){var _0x581ada=_0x382480[0x0][_0xb3cd('0x15')]%(_0x3bebc0+_0x3b3786);for(;_0x1c3bd1;_0x3bebc0+=_0x3b3786,_0x581ada=_0x382480[0x0][_0xb3cd('0x15')]%(_0x3bebc0+_0x3b3786)){if(_0x581ada==0x0||_0x581ada==_0x382480[0x0][_0xb3cd('0x15')]){_0x1c3bd1=![];}_0x22ec2d[_0xb3cd('0x16')](dbH[_0xb3cd('0x11')][_0xb3cd('0x12')](util[_0xb3cd('0xb')](_0xb3cd('0x17'),QUERY,_0x3b3786,_0x3bebc0),{'type':dbH[_0xb3cd('0x11')][_0xb3cd('0x13')][_0xb3cd('0x14')]}));}}}else{_0x22ec2d[_0xb3cd('0x16')](dbH[_0xb3cd('0x11')][_0xb3cd('0x12')](QUERY,{'type':dbH[_0xb3cd('0x11')][_0xb3cd('0x13')][_0xb3cd('0x14')]}));}var _0x1b2c45=path['dirname'](PATH);var _0x1cc4f1=path[_0xb3cd('0x18')](PATH,_0xb3cd('0x19'));var _0x115727=_0x4ca97e['split']&&_0x22ec2d[_0xb3cd('0x1a')]>0x1;var _0x7b3376=[];if(!fs[_0xb3cd('0x1b')](path[_0xb3cd('0x1c')](_0x1b2c45,_0x1cc4f1))&&_0x115727){fs[_0xb3cd('0x1d')](path[_0xb3cd('0x1c')](_0x1b2c45,_0x1cc4f1));}return BPromise['each'](_0x22ec2d,function(_0x2366e8){_0x7b3376['push'](_0x2366e8);})[_0xb3cd('0x10')](function(){for(var _0xd96061=0x0;_0xd96061<_0x7b3376[_0xb3cd('0x1a')];_0xd96061+=0x1){var _0x39965b;var _0x203295=_0x7b3376[_0xd96061];if(_0x115727){_0x39965b=path[_0xb3cd('0x1c')](_0x1b2c45,_0x1cc4f1,util[_0xb3cd('0xb')]('%s%d.%s',_0x1cc4f1,_0xd96061,'xlsx'));}else{_0x39965b=path[_0xb3cd('0x1c')](_0x1b2c45,util[_0xb3cd('0xb')](_0xb3cd('0x1e'),_0x1cc4f1,_0xb3cd('0x1f')));}fs[_0xb3cd('0x20')](_0x39965b,json2xls(_0x203295),'binary');}})[_0xb3cd('0x10')](function(){if(_0x115727){zipdir(path[_0xb3cd('0x1c')](_0x1b2c45,_0x1cc4f1),{'saveTo':path[_0xb3cd('0x1c')](_0x1b2c45,util[_0xb3cd('0xb')](_0xb3cd('0x1e'),_0x1cc4f1,'zip'))},function(_0x221e3c,_0x3019e9){});rimraf(path['join'](_0x1b2c45,_0x1cc4f1),function(){});}})['then'](function(){logger['info'](util[_0xb3cd('0xb')]('Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed',EXTRACTED_REPORT_ID,_0xb3cd('0x21')));return analyticExtractedReport('Completed',_0x115727?util[_0xb3cd('0xb')](_0xb3cd('0x1e'),_0x1cc4f1,_0x115727?_0xb3cd('0x22'):_0xb3cd('0x1f')):null);});})[_0xb3cd('0x23')](function(_0x1ee502){logger[_0xb3cd('0xa')](util['format'](_0xb3cd('0x24'),EXTRACTED_REPORT_ID,_0xb3cd('0x21')),util[_0xb3cd('0x25')](_0x1ee502,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0xb3cd('0x26'));})[_0xb3cd('0x27')](function(){process[_0xb3cd('0x28')](EXIT_CODE);});}main();
\ No newline at end of file
+var _0x68b7=['finally','exit','util','lodash','json2xls','bluebird','rimraf','../../mysqldb','../../config/logger','analytics','argv','AnalyticExtractedReport','update','info','format','XLSX','Setting','splitSizeXlsx','then','sequelize','query','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','QueryTypes','SELECT','num','split','length','range','isInteger','forEach','%s\x20limit\x20%d\x20OFFSET\x20%d','push','dirname','basename','.xlsx','join','each','%s.%s','xlsx','writeFileSync','zip\x20finished','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','Completed','zip','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect'];(function(_0x5653a4,_0x38822f){var _0x512a7e=function(_0x247c80){while(--_0x247c80){_0x5653a4['push'](_0x5653a4['shift']());}};_0x512a7e(++_0x38822f);}(_0x68b7,0x8c));var _0x768b=function(_0x205f10,_0x36dad4){_0x205f10=_0x205f10-0x0;var _0x1ee54f=_0x68b7[_0x205f10];return _0x1ee54f;};'use strict';var util=require(_0x768b('0x0'));var path=require('path');var _=require(_0x768b('0x1'));var fs=require('fs');var json2xls=require(_0x768b('0x2'));var BPromise=require(_0x768b('0x3'));var zipdir=require('zip-dir');var rimraf=require(_0x768b('0x4'));var db=require(_0x768b('0x5'))['db'];var dbH=require(_0x768b('0x5'))['dbH'];var logger=require(_0x768b('0x6'))(_0x768b('0x7'));var EXTRACTED_REPORT_ID=Number(process[_0x768b('0x8')][0x2]);var QUERY=process[_0x768b('0x8')][0x3];var PATH=process[_0x768b('0x8')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x455b55,_0x17c501){var _0x48405c={'status':_0x455b55};var _0x441e3a={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x17c501){_0x48405c['savename']=_0x17c501;}return db[_0x768b('0x9')][_0x768b('0xa')](_0x48405c,_0x441e3a);}function main(){var _0x3ebfe5=0x1388;var _0x17f241;logger[_0x768b('0xb')](util[_0x768b('0xc')]('Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0x768b('0xd')));return db[_0x768b('0xe')]['find']({'where':{'id':0x1},'raw':!![],'attributes':['id','split',_0x768b('0xf')]})[_0x768b('0x10')](function(_0x35689d){if(_0x35689d){_0x17f241=_0x35689d;_0x3ebfe5=_0x17f241[_0x768b('0xf')]||0x1388;}})[_0x768b('0x10')](function(){return dbH[_0x768b('0x11')][_0x768b('0x12')](util[_0x768b('0xc')](_0x768b('0x13'),QUERY),{'type':dbH['sequelize'][_0x768b('0x14')][_0x768b('0x15')]});})[_0x768b('0x10')](function(_0x3a40b6){if(!_0x3a40b6[0x0][_0x768b('0x16')]){return analyticExtractedReport('Empty');}var _0x17078f=[];var _0xbdef19=0x0;if(_0x17f241[_0x768b('0x17')]){if(_0x3a40b6&&_0x3a40b6[_0x768b('0x18')]){var _0x12c953=_[_0x768b('0x19')](_0x3a40b6[0x0][_0x768b('0x16')]/_0x3ebfe5);var _0x20312a=Number[_0x768b('0x1a')](_0x3a40b6[0x0][_0x768b('0x16')]/_0x3ebfe5)?_0x3a40b6[0x0][_0x768b('0x16')]%_0x3ebfe5:0x0;_0x12c953[_0x768b('0x1b')](function(_0x5b677b){if(_0x5b677b>0x0){_0xbdef19+=_0x3ebfe5;}_0x17078f['push'](dbH[_0x768b('0x11')][_0x768b('0x12')](util['format'](_0x768b('0x1c'),QUERY,_0x3ebfe5,_0xbdef19),{'type':dbH[_0x768b('0x11')]['QueryTypes'][_0x768b('0x15')]}));});if(_0x20312a>0x0){_0xbdef19+=_0x3ebfe5;_0x17078f[_0x768b('0x1d')](dbH[_0x768b('0x11')][_0x768b('0x12')](util[_0x768b('0xc')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x20312a,_0xbdef19),{'type':dbH['sequelize'][_0x768b('0x14')][_0x768b('0x15')]}));}}}else{_0x17078f[_0x768b('0x1d')](dbH[_0x768b('0x11')][_0x768b('0x12')](QUERY,{'type':dbH[_0x768b('0x11')][_0x768b('0x14')][_0x768b('0x15')]}));}var _0x1a1733=path[_0x768b('0x1e')](PATH);var _0x3ada89=path[_0x768b('0x1f')](PATH,_0x768b('0x20'));var _0x31e087=_0x17f241['split']&&_0x17078f[_0x768b('0x18')]>0x1;var _0x533665=[];if(!fs['existsSync'](path['join'](_0x1a1733,_0x3ada89))&&_0x31e087){fs['mkdirSync'](path[_0x768b('0x21')](_0x1a1733,_0x3ada89));}return BPromise[_0x768b('0x22')](_0x17078f,function(_0x4aeae6){_0x533665[_0x768b('0x1d')](_0x4aeae6);})['then'](function(){for(var _0x19c0ed=0x0;_0x19c0ed<_0x533665['length'];_0x19c0ed+=0x1){var _0x2681d4;var _0x1973b8=_0x533665[_0x19c0ed];if(_0x31e087){_0x2681d4=path[_0x768b('0x21')](_0x1a1733,_0x3ada89,util[_0x768b('0xc')]('%s%d.%s',_0x3ada89,_0x19c0ed,'xlsx'));}else{_0x2681d4=path['join'](_0x1a1733,util[_0x768b('0xc')](_0x768b('0x23'),_0x3ada89,_0x768b('0x24')));}fs[_0x768b('0x25')](_0x2681d4,json2xls(_0x1973b8),'binary');}})[_0x768b('0x10')](function(){if(_0x31e087){return new Promise(function(_0x293ffd){zipdir(path['join'](_0x1a1733,_0x3ada89),{'saveTo':path['join'](_0x1a1733,util[_0x768b('0xc')](_0x768b('0x23'),_0x3ada89,'zip'))},function(_0x205b83,_0x24a10a){rimraf(path[_0x768b('0x21')](_0x1a1733,_0x3ada89),function(){});_0x293ffd(_0x768b('0x26'));});});}})[_0x768b('0x10')](function(){logger[_0x768b('0xb')](util['format'](_0x768b('0x27'),EXTRACTED_REPORT_ID,_0x768b('0xd')));return analyticExtractedReport(_0x768b('0x28'),_0x31e087?util['format'](_0x768b('0x23'),_0x3ada89,_0x31e087?_0x768b('0x29'):_0x768b('0x24')):null);});})['catch'](function(_0x5e5f5e){logger[_0x768b('0xb')](util[_0x768b('0xc')](_0x768b('0x2a'),EXTRACTED_REPORT_ID,_0x768b('0xd')),util[_0x768b('0x2b')](_0x5e5f5e,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport('Failed');})[_0x768b('0x2c')](function(){process[_0x768b('0x2d')](EXIT_CODE);});}main();
\ No newline at end of file
index cbe70bb..384b465 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x186a=['*,*,*,*','map','tag','CDR(tag)=','callerID','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):Set(CALLERID(all)=','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):NoOp(No\x20number\x20available)','answer','indexOf','toLowerCase','appType','custom','$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-ANSWER=1','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','splice','GotoIfTime','last','concat','Hangup','VoiceExtension','destroy','bulkCreate','catch','rewrite','lodash','util','Interval','then','intervals','models','findAll','IntervalId','exten','CAST(priority\x20AS\x20UNSIGNED)','filter','groupBy','queue','hasOwnProperty','extensions','find','push','type','Set','format','CDR(type)=%s','context','priority','inbound','CDR(routeid)=','VoiceExtensionId','outbound','extension','CDR(destination)=','cutdigits','${EXTEN}','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','outboundrouteid=','recordingFormat','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','XCALLY-MOTION-ANSWER=0','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','length','createdAt','updatedAt','interval'];(function(_0x4a79fd,_0x429333){var _0xef2f88=function(_0x44178c){while(--_0x44178c){_0x4a79fd['push'](_0x4a79fd['shift']());}};_0xef2f88(++_0x429333);}(_0x186a,0xa7));var _0xa186=function(_0x5f41a9,_0x5347a8){_0x5f41a9=_0x5f41a9-0x0;var _0x4f68fb=_0x186a[_0x5f41a9];return _0x4f68fb;};'use strict';var _=require(_0xa186('0x0'));var util=require(_0xa186('0x1'));function rewrite(_0x159623,_0x4d6404){var _0x286821=this;return _0x159623['models'][_0xa186('0x2')]['findAll']({'raw':!![]})[_0xa186('0x3')](function(_0x5509ef){_0x286821[_0xa186('0x4')]=_0x5509ef;return _0x159623[_0xa186('0x5')]['VoiceExtension'][_0xa186('0x6')]({'where':{'IntervalId':_0x4d6404[_0xa186('0x7')]},'raw':!![]});})[_0xa186('0x3')](function(_0x135f45){return _0x159623[_0xa186('0x5')]['VoiceExtension'][_0xa186('0x6')]({'where':{'exten':{'$in':_['uniq'](_['map'](_0x135f45,_0xa186('0x8')))}},'order':[{'raw':_0xa186('0x9')}],'raw':!![]});})[_0xa186('0x3')](function(_0x27ad15){var _0xf738=_['filter'](_0x27ad15,{'priority':'1'});var _0x1269b4=_[_0xa186('0xa')](_0x27ad15,{'isApp':0x1});var _0x15507f=_[_0xa186('0xb')](_0x1269b4,'exten');var _0x49f25a=[_0xa186('0xc'),'playback'];var _0x54f7cc=[];var _0x125610=[];for(var _0x10a460 in _0x15507f){if(_0x15507f[_0xa186('0xd')](_0x10a460)){_0x286821['priority']=0x2;_0x286821[_0xa186('0xe')]=[];_0x286821['extension']=_[_0xa186('0xf')](_0xf738,{'exten':_0x15507f[_0x10a460][0x0][_0xa186('0x8')]});_0x286821['extensions'][_0xa186('0x10')]({'type':_0x15507f[_0x10a460][0x0][_0xa186('0x11')],'app':_0xa186('0x12'),'appdata':util[_0xa186('0x13')](_0xa186('0x14'),_0x15507f[_0x10a460][0x0][_0xa186('0x11')]),'context':_0x15507f[_0x10a460][0x0][_0xa186('0x15')],'exten':_0x15507f[_0x10a460][0x0][_0xa186('0x8')],'priority':_0x286821[_0xa186('0x16')]++,'VoiceExtensionId':_0x15507f[_0x10a460][0x0]['VoiceExtensionId']});if(_0x15507f[_0x10a460][0x0][_0xa186('0x11')]===_0xa186('0x17')){_0x286821[_0xa186('0xe')][_0xa186('0x10')]({'type':_0x15507f[_0x10a460][0x0][_0xa186('0x11')],'app':_0xa186('0x12'),'appdata':_0xa186('0x18')+_0x15507f[_0x10a460][0x0][_0xa186('0x19')],'context':_0x15507f[_0x10a460][0x0][_0xa186('0x15')],'exten':_0x15507f[_0x10a460][0x0][_0xa186('0x8')],'priority':_0x286821[_0xa186('0x16')]++,'VoiceExtensionId':_0x15507f[_0x10a460][0x0][_0xa186('0x19')]});}else if(_0x15507f[_0x10a460][0x0][_0xa186('0x11')]===_0xa186('0x1a')){if(_0x286821[_0xa186('0x1b')]){_0x286821['extensions'][_0xa186('0x10')]({'type':_0x15507f[_0x10a460][0x0][_0xa186('0x11')],'app':'Set','appdata':_0xa186('0x1c')+(_0x286821[_0xa186('0x1b')][_0xa186('0x1d')]?'${EXTEN:'+_0x286821['extension'][_0xa186('0x1d')]+'}':_0xa186('0x1e')),'context':_0x15507f[_0x10a460][0x0][_0xa186('0x15')],'exten':_0x15507f[_0x10a460][0x0][_0xa186('0x8')],'priority':_0x286821[_0xa186('0x16')]++,'VoiceExtensionId':_0x15507f[_0x10a460][0x0]['VoiceExtensionId']});}_0x286821[_0xa186('0xe')]['push']({'type':_0x15507f[_0x10a460][0x0][_0xa186('0x11')],'app':_0xa186('0x12'),'appdata':'CDR(routeid)='+_0x15507f[_0x10a460][0x0][_0xa186('0x19')],'context':_0x15507f[_0x10a460][0x0][_0xa186('0x15')],'exten':_0x15507f[_0x10a460][0x0]['exten'],'priority':_0x286821[_0xa186('0x16')]++,'VoiceExtensionId':_0x15507f[_0x10a460][0x0][_0xa186('0x19')]});var _0x1b8857=_0x286821[_0xa186('0x16')]++;_0x286821['extensions'][_0xa186('0x10')]({'type':_0x15507f[_0x10a460][0x0][_0xa186('0x11')],'app':_0xa186('0x1f'),'appdata':_0xa186('0x20')+(_0x1b8857+0x2)+'):Goto('+(_0x1b8857+0x1)+')','context':_0x15507f[_0x10a460][0x0][_0xa186('0x15')],'exten':_0x15507f[_0x10a460][0x0][_0xa186('0x8')],'priority':_0x1b8857,'VoiceExtensionId':_0x15507f[_0x10a460][0x0]['VoiceExtensionId']});if(_0x286821['extension']){_0x286821[_0xa186('0xe')][_0xa186('0x10')]({'type':_0x15507f[_0x10a460][0x0][_0xa186('0x11')],'app':_0xa186('0x12'),'appdata':_0x286821[_0xa186('0x1b')]['cutdigits']?_0xa186('0x21')+_0x286821['extension'][_0xa186('0x1d')]+'}':_0xa186('0x22'),'context':_0x15507f[_0x10a460][0x0][_0xa186('0x15')],'exten':_0x15507f[_0x10a460][0x0][_0xa186('0x8')],'priority':_0x286821['priority']++,'VoiceExtensionId':_0x15507f[_0x10a460][0x0][_0xa186('0x19')]});}_0x286821[_0xa186('0xe')][_0xa186('0x10')]({'type':_0x15507f[_0x10a460][0x0]['type'],'app':'Set','appdata':_0xa186('0x23')+_0x15507f[_0x10a460][0x0][_0xa186('0x19')],'context':_0x15507f[_0x10a460][0x0][_0xa186('0x15')],'exten':_0x15507f[_0x10a460][0x0][_0xa186('0x8')],'priority':_0x286821[_0xa186('0x16')]++,'VoiceExtensionId':_0x15507f[_0x10a460][0x0][_0xa186('0x19')]});if(_0x286821[_0xa186('0x1b')]&&_0x286821[_0xa186('0x1b')]['hasOwnProperty'](_0xa186('0x24'))&&_0x286821['extension'][_0xa186('0x24')]!=='none'){_0x286821[_0xa186('0xe')][_0xa186('0x10')]({'type':_0x15507f[_0x10a460][0x0][_0xa186('0x11')],'app':_0xa186('0x12'),'appdata':_0xa186('0x25'),'context':_0x15507f[_0x10a460][0x0]['context'],'exten':_0x15507f[_0x10a460][0x0]['exten'],'priority':_0x286821[_0xa186('0x16')]++,'VoiceExtensionId':_0x15507f[_0x10a460][0x0]['VoiceExtensionId']});_0x286821[_0xa186('0xe')][_0xa186('0x10')]({'type':_0x15507f[_0x10a460][0x0][_0xa186('0x11')],'app':'Set','appdata':_0xa186('0x26')+_0x286821['extension'][_0xa186('0x24')]||'wav','context':_0x15507f[_0x10a460][0x0][_0xa186('0x15')],'exten':_0x15507f[_0x10a460][0x0][_0xa186('0x8')],'priority':_0x286821[_0xa186('0x16')]++,'VoiceExtensionId':_0x15507f[_0x10a460][0x0]['VoiceExtensionId']});}}_0x286821[_0xa186('0xe')]['push']({'type':_0x15507f[_0x10a460][0x0][_0xa186('0x11')],'app':_0xa186('0x12'),'appdata':_0xa186('0x27'),'context':_0x15507f[_0x10a460][0x0][_0xa186('0x15')],'exten':_0x15507f[_0x10a460][0x0][_0xa186('0x8')],'priority':_0x286821[_0xa186('0x16')]++,'VoiceExtensionId':_0x15507f[_0x10a460][0x0]['VoiceExtensionId']});_0x286821[_0xa186('0xe')][_0xa186('0x10')]({'type':_0x15507f[_0x10a460][0x0]['type'],'app':_0xa186('0x12'),'appdata':_0xa186('0x28'),'context':_0x15507f[_0x10a460][0x0][_0xa186('0x15')],'exten':_0x15507f[_0x10a460][0x0]['exten'],'priority':_0x286821[_0xa186('0x16')]++,'VoiceExtensionId':_0x15507f[_0x10a460][0x0][_0xa186('0x19')]});_0x286821['extensions']['push']({'type':_0x15507f[_0x10a460][0x0][_0xa186('0x11')],'app':'Set','appdata':_0xa186('0x29'),'context':_0x15507f[_0x10a460][0x0][_0xa186('0x15')],'exten':_0x15507f[_0x10a460][0x0]['exten'],'priority':_0x286821[_0xa186('0x16')]++,'VoiceExtensionId':_0x15507f[_0x10a460][0x0][_0xa186('0x19')]});for(var _0x540880=0x0,_0x390087=0x0;_0x540880<_0x15507f[_0x10a460][_0xa186('0x2a')];_0x540880+=0x1,_0x390087=0x0){var _0x386ac9=_0x15507f[_0x10a460][_0x540880];if(_0x386ac9[_0xa186('0x11')]){_0x386ac9[_0xa186('0x11')]=_0x386ac9[_0xa186('0x11')]['toLowerCase']();}var _0x3b672b=[];var _0xeeaaa5=[];delete _0x386ac9['id'];delete _0x386ac9[_0xa186('0x2b')];delete _0x386ac9[_0xa186('0x2c')];var _0x5ec404=_0x386ac9[_0xa186('0x2d')]!==_0xa186('0x2e')?[_0x386ac9['interval']]:_0x386ac9[_0xa186('0x7')]?_[_0xa186('0x2f')](_['filter'](_0x286821[_0xa186('0x4')],{'IntervalId':_0x386ac9[_0xa186('0x7')]}),'interval'):[];if(_0x386ac9[_0xa186('0xd')](_0xa186('0x30'))){if(_0x386ac9[_0xa186('0x30')]&&_0x386ac9[_0xa186('0x30')]!=='--'){_0x3b672b[_0xa186('0x10')]({'type':_0x386ac9[_0xa186('0x11')],'app':_0xa186('0x12'),'appdata':_0xa186('0x31')+_0x386ac9[_0xa186('0x30')],'context':_0x386ac9[_0xa186('0x15')],'exten':_0x386ac9[_0xa186('0x8')],'priority':_0x5ec404[_0xa186('0x2a')]+_0x286821[_0xa186('0x16')]+_0x390087++,'VoiceExtensionId':_0x386ac9[_0xa186('0x19')]});}}if(_0x386ac9[_0xa186('0x11')]===_0xa186('0x1a')&&_0x386ac9[_0xa186('0xd')](_0xa186('0x32'))){if(_0x386ac9[_0xa186('0x32')]){_0x3b672b[_0xa186('0x10')]({'type':_0x386ac9[_0xa186('0x11')],'app':_0xa186('0x1f'),'appdata':_0xa186('0x33')+_0x386ac9['callerID']+')','context':_0x386ac9[_0xa186('0x15')],'exten':_0x386ac9[_0xa186('0x8')],'priority':_0x5ec404[_0xa186('0x2a')]+_0x286821[_0xa186('0x16')]+_0x390087++,'VoiceExtensionId':_0x386ac9[_0xa186('0x19')]});}else{_0x3b672b[_0xa186('0x10')]({'type':_0x386ac9['type'],'app':'ExecIf','appdata':_0xa186('0x34'),'context':_0x386ac9[_0xa186('0x15')],'exten':_0x386ac9[_0xa186('0x8')],'priority':_0x5ec404[_0xa186('0x2a')]+_0x286821[_0xa186('0x16')]+_0x390087++,'VoiceExtensionId':_0x386ac9['VoiceExtensionId']});}}if(_0x386ac9[_0xa186('0xd')](_0xa186('0x35'))){if(_0x49f25a[_0xa186('0x36')](_0x386ac9['app'][_0xa186('0x37')]())>=0x0&&_0x386ac9[_0xa186('0x38')]!==_0xa186('0x39')){if(_0x386ac9[_0xa186('0x35')]){_0x3b672b[_0xa186('0x10')]({'type':_0x386ac9[_0xa186('0x11')],'app':_0xa186('0x1f'),'appdata':_0xa186('0x3a'),'context':_0x386ac9[_0xa186('0x15')],'exten':_0x386ac9[_0xa186('0x8')],'priority':_0x5ec404[_0xa186('0x2a')]+_0x286821[_0xa186('0x16')]+_0x390087++,'VoiceExtensionId':_0x386ac9['VoiceExtensionId']});_0x3b672b[_0xa186('0x10')]({'type':_0x386ac9[_0xa186('0x11')],'app':_0xa186('0x12'),'appdata':_0xa186('0x3b'),'context':_0x386ac9[_0xa186('0x15')],'exten':_0x386ac9[_0xa186('0x8')],'priority':_0x5ec404[_0xa186('0x2a')]+_0x286821[_0xa186('0x16')]+_0x390087++,'VoiceExtensionId':_0x386ac9[_0xa186('0x19')]});}else{_0x3b672b['push']({'type':_0x386ac9[_0xa186('0x11')],'app':_0xa186('0x1f'),'appdata':_0xa186('0x3c'),'context':_0x386ac9['context'],'exten':_0x386ac9[_0xa186('0x8')],'priority':_0x5ec404[_0xa186('0x2a')]+_0x286821[_0xa186('0x16')]+_0x390087++,'VoiceExtensionId':_0x386ac9[_0xa186('0x19')]});_0x3b672b['push']({'type':_0x386ac9['type'],'app':'Set','appdata':'XCALLY-MOTION-PROGRESS=1','context':_0x386ac9['context'],'exten':_0x386ac9[_0xa186('0x8')],'priority':_0x5ec404[_0xa186('0x2a')]+_0x286821[_0xa186('0x16')]+_0x390087++,'VoiceExtensionId':_0x386ac9[_0xa186('0x19')]});}}}for(var _0x7d113b=0x0;_0x7d113b<_0x5ec404[_0xa186('0x2a')];_0x7d113b+=0x1){var _0x1c7e9a=_0x286821[_0xa186('0x16')]+_0x5ec404[_0xa186('0x2a')];var _0x54d5a3=_0x7d113b===_0x5ec404['length']-0x1?_0x286821['priority']+_0x3b672b[_0xa186('0x2a')]+_0xeeaaa5[_0xa186('0x2a')]+0x2:_0x286821[_0xa186('0x16')]+_0x7d113b+0x1;_0x3b672b[_0xa186('0x3d')](_0x7d113b,0x0,{'type':_0x386ac9['type'],'app':_0xa186('0x3e'),'appdata':_0x5ec404[_0x7d113b]+'?'+_0x386ac9[_0xa186('0x15')]+',${EXTEN},'+_0x1c7e9a+':'+_0x386ac9[_0xa186('0x15')]+',${EXTEN},'+_0x54d5a3,'exten':_0x386ac9['exten'],'context':_0x386ac9['context'],'priority':_0x286821[_0xa186('0x16')]+_0x7d113b,'VoiceExtensionId':_0x15507f[_0x10a460][0x0][_0xa186('0x19')]});}_0x386ac9[_0xa186('0x16')]=_0x3b672b['length']?_['last'](_0x3b672b)[_0xa186('0x16')]+0x1:_0x286821[_0xa186('0x16')];_0x286821[_0xa186('0x16')]=(_0xeeaaa5[_0xa186('0x2a')]?_[_0xa186('0x3f')](_0xeeaaa5)[_0xa186('0x16')]:_0x386ac9['priority'])+0x1;_0x286821[_0xa186('0xe')]=_[_0xa186('0x40')](_0x286821[_0xa186('0xe')],_0x3b672b,[_0x386ac9],_0xeeaaa5);}_0x286821[_0xa186('0xe')]['push']({'type':_0x15507f[_0x10a460][0x0][_0xa186('0x11')],'app':_0xa186('0x41'),'exten':_0x15507f[_0x10a460][0x0][_0xa186('0x8')],'context':_0x15507f[_0x10a460][0x0][_0xa186('0x15')],'priority':_0x286821[_0xa186('0x16')],'VoiceExtensionId':_0x15507f[_0x10a460][0x0][_0xa186('0x19')]});_0x54f7cc[_0xa186('0x10')](_0x15507f[_0x10a460][0x0]['VoiceExtensionId']);_0x125610=_[_0xa186('0x40')](_0x125610,_0x286821[_0xa186('0xe')]);}}return _0x159623['transaction'](function(_0x1e2834){return _0x159623['models'][_0xa186('0x42')][_0xa186('0x43')]({'where':{'VoiceExtensionId':{'$in':_0x54f7cc}},'transaction':_0x1e2834})[_0xa186('0x3')](function(_0x521b5d){return _0x159623[_0xa186('0x5')][_0xa186('0x42')][_0xa186('0x44')](_['sortBy'](_0x125610,_0xa186('0x16')),{'transaction':_0x1e2834});});});})[_0xa186('0x45')](function(_0x2c59f2){console['error'](_0x2c59f2);});}exports[_0xa186('0x46')]=rewrite;
\ No newline at end of file
+var _0xf8e2=['push','type','Set','format','priority','VoiceExtensionId','inbound','cutdigits','${EXTEN:','${EXTEN}','context','CDR(routeid)=','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','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','updatedAt','interval','*,*,*,*','filter','tag','CDR(tag)=','outbound','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','indexOf','app','toLowerCase','appType','$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-ANSWER=1','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','XCALLY-MOTION-PROGRESS=1','splice','GotoIfTime',',${EXTEN},','last','concat','Hangup','transaction','destroy','bulkCreate','error','rewrite','models','Interval','findAll','then','intervals','IntervalId','VoiceExtension','uniq','map','CAST(priority\x20AS\x20UNSIGNED)','exten','queue','playback','hasOwnProperty','extensions','extension','find'];(function(_0x521526,_0x492dcc){var _0xd86730=function(_0x530b2e){while(--_0x530b2e){_0x521526['push'](_0x521526['shift']());}};_0xd86730(++_0x492dcc);}(_0xf8e2,0x161));var _0x2f8e=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0xf8e2[_0x167cc1];return _0x10bc4b;};'use strict';var _=require('lodash');var util=require('util');function rewrite(_0x2acef8,_0x42f9c0){var _0x52e652=this;return _0x2acef8[_0x2f8e('0x0')][_0x2f8e('0x1')][_0x2f8e('0x2')]({'raw':!![]})[_0x2f8e('0x3')](function(_0x41f700){_0x52e652[_0x2f8e('0x4')]=_0x41f700;return _0x2acef8[_0x2f8e('0x0')]['VoiceExtension'][_0x2f8e('0x2')]({'where':{'IntervalId':_0x42f9c0[_0x2f8e('0x5')]},'raw':!![]});})[_0x2f8e('0x3')](function(_0x414bc8){return _0x2acef8[_0x2f8e('0x0')][_0x2f8e('0x6')]['findAll']({'where':{'exten':{'$in':_[_0x2f8e('0x7')](_[_0x2f8e('0x8')](_0x414bc8,'exten'))}},'order':[{'raw':_0x2f8e('0x9')}],'raw':!![]});})[_0x2f8e('0x3')](function(_0x58dc2a){var _0x509abc=_['filter'](_0x58dc2a,{'priority':'1'});var _0x53cf72=_['filter'](_0x58dc2a,{'isApp':0x1});var _0x387e5d=_['groupBy'](_0x53cf72,_0x2f8e('0xa'));var _0x123c0a=[_0x2f8e('0xb'),_0x2f8e('0xc')];var _0xb5421e=[];var _0xd9a5b5=[];for(var _0x228115 in _0x387e5d){if(_0x387e5d[_0x2f8e('0xd')](_0x228115)){_0x52e652['priority']=0x2;_0x52e652[_0x2f8e('0xe')]=[];_0x52e652[_0x2f8e('0xf')]=_[_0x2f8e('0x10')](_0x509abc,{'exten':_0x387e5d[_0x228115][0x0][_0x2f8e('0xa')]});_0x52e652[_0x2f8e('0xe')][_0x2f8e('0x11')]({'type':_0x387e5d[_0x228115][0x0][_0x2f8e('0x12')],'app':_0x2f8e('0x13'),'appdata':util[_0x2f8e('0x14')]('CDR(type)=%s',_0x387e5d[_0x228115][0x0][_0x2f8e('0x12')]),'context':_0x387e5d[_0x228115][0x0]['context'],'exten':_0x387e5d[_0x228115][0x0][_0x2f8e('0xa')],'priority':_0x52e652[_0x2f8e('0x15')]++,'VoiceExtensionId':_0x387e5d[_0x228115][0x0][_0x2f8e('0x16')]});if(_0x387e5d[_0x228115][0x0][_0x2f8e('0x12')]===_0x2f8e('0x17')){_0x52e652[_0x2f8e('0xe')][_0x2f8e('0x11')]({'type':_0x387e5d[_0x228115][0x0]['type'],'app':'Set','appdata':'CDR(routeid)='+_0x387e5d[_0x228115][0x0]['VoiceExtensionId'],'context':_0x387e5d[_0x228115][0x0]['context'],'exten':_0x387e5d[_0x228115][0x0][_0x2f8e('0xa')],'priority':_0x52e652['priority']++,'VoiceExtensionId':_0x387e5d[_0x228115][0x0][_0x2f8e('0x16')]});}else if(_0x387e5d[_0x228115][0x0][_0x2f8e('0x12')]==='outbound'){if(_0x52e652[_0x2f8e('0xf')]){_0x52e652['extensions'][_0x2f8e('0x11')]({'type':_0x387e5d[_0x228115][0x0]['type'],'app':_0x2f8e('0x13'),'appdata':'CDR(destination)='+(_0x52e652['extension'][_0x2f8e('0x18')]?_0x2f8e('0x19')+_0x52e652[_0x2f8e('0xf')][_0x2f8e('0x18')]+'}':_0x2f8e('0x1a')),'context':_0x387e5d[_0x228115][0x0][_0x2f8e('0x1b')],'exten':_0x387e5d[_0x228115][0x0][_0x2f8e('0xa')],'priority':_0x52e652['priority']++,'VoiceExtensionId':_0x387e5d[_0x228115][0x0][_0x2f8e('0x16')]});}_0x52e652[_0x2f8e('0xe')][_0x2f8e('0x11')]({'type':_0x387e5d[_0x228115][0x0][_0x2f8e('0x12')],'app':'Set','appdata':_0x2f8e('0x1c')+_0x387e5d[_0x228115][0x0][_0x2f8e('0x16')],'context':_0x387e5d[_0x228115][0x0][_0x2f8e('0x1b')],'exten':_0x387e5d[_0x228115][0x0][_0x2f8e('0xa')],'priority':_0x52e652['priority']++,'VoiceExtensionId':_0x387e5d[_0x228115][0x0][_0x2f8e('0x16')]});var _0x410c74=_0x52e652[_0x2f8e('0x15')]++;_0x52e652[_0x2f8e('0xe')]['push']({'type':_0x387e5d[_0x228115][0x0][_0x2f8e('0x12')],'app':_0x2f8e('0x1d'),'appdata':_0x2f8e('0x1e')+(_0x410c74+0x2)+_0x2f8e('0x1f')+(_0x410c74+0x1)+')','context':_0x387e5d[_0x228115][0x0][_0x2f8e('0x1b')],'exten':_0x387e5d[_0x228115][0x0]['exten'],'priority':_0x410c74,'VoiceExtensionId':_0x387e5d[_0x228115][0x0][_0x2f8e('0x16')]});if(_0x52e652[_0x2f8e('0xf')]){_0x52e652[_0x2f8e('0xe')][_0x2f8e('0x11')]({'type':_0x387e5d[_0x228115][0x0]['type'],'app':_0x2f8e('0x13'),'appdata':_0x52e652[_0x2f8e('0xf')][_0x2f8e('0x18')]?'CDR(prefix)=${EXTEN:0:'+_0x52e652[_0x2f8e('0xf')][_0x2f8e('0x18')]+'}':_0x2f8e('0x20'),'context':_0x387e5d[_0x228115][0x0]['context'],'exten':_0x387e5d[_0x228115][0x0]['exten'],'priority':_0x52e652[_0x2f8e('0x15')]++,'VoiceExtensionId':_0x387e5d[_0x228115][0x0][_0x2f8e('0x16')]});}_0x52e652[_0x2f8e('0xe')][_0x2f8e('0x11')]({'type':_0x387e5d[_0x228115][0x0][_0x2f8e('0x12')],'app':_0x2f8e('0x13'),'appdata':_0x2f8e('0x21')+_0x387e5d[_0x228115][0x0][_0x2f8e('0x16')],'context':_0x387e5d[_0x228115][0x0][_0x2f8e('0x1b')],'exten':_0x387e5d[_0x228115][0x0][_0x2f8e('0xa')],'priority':_0x52e652[_0x2f8e('0x15')]++,'VoiceExtensionId':_0x387e5d[_0x228115][0x0][_0x2f8e('0x16')]});if(_0x52e652[_0x2f8e('0xf')]&&_0x52e652['extension'][_0x2f8e('0xd')](_0x2f8e('0x22'))&&_0x52e652['extension']['recordingFormat']!==_0x2f8e('0x23')){_0x52e652[_0x2f8e('0xe')][_0x2f8e('0x11')]({'type':_0x387e5d[_0x228115][0x0][_0x2f8e('0x12')],'app':'Set','appdata':_0x2f8e('0x24'),'context':_0x387e5d[_0x228115][0x0][_0x2f8e('0x1b')],'exten':_0x387e5d[_0x228115][0x0][_0x2f8e('0xa')],'priority':_0x52e652[_0x2f8e('0x15')]++,'VoiceExtensionId':_0x387e5d[_0x228115][0x0][_0x2f8e('0x16')]});_0x52e652[_0x2f8e('0xe')][_0x2f8e('0x11')]({'type':_0x387e5d[_0x228115][0x0][_0x2f8e('0x12')],'app':_0x2f8e('0x13'),'appdata':_0x2f8e('0x25')+_0x52e652[_0x2f8e('0xf')]['recordingFormat']||_0x2f8e('0x26'),'context':_0x387e5d[_0x228115][0x0][_0x2f8e('0x1b')],'exten':_0x387e5d[_0x228115][0x0]['exten'],'priority':_0x52e652[_0x2f8e('0x15')]++,'VoiceExtensionId':_0x387e5d[_0x228115][0x0][_0x2f8e('0x16')]});}}_0x52e652['extensions']['push']({'type':_0x387e5d[_0x228115][0x0]['type'],'app':_0x2f8e('0x13'),'appdata':_0x2f8e('0x27'),'context':_0x387e5d[_0x228115][0x0][_0x2f8e('0x1b')],'exten':_0x387e5d[_0x228115][0x0][_0x2f8e('0xa')],'priority':_0x52e652[_0x2f8e('0x15')]++,'VoiceExtensionId':_0x387e5d[_0x228115][0x0][_0x2f8e('0x16')]});_0x52e652['extensions'][_0x2f8e('0x11')]({'type':_0x387e5d[_0x228115][0x0][_0x2f8e('0x12')],'app':_0x2f8e('0x13'),'appdata':_0x2f8e('0x28'),'context':_0x387e5d[_0x228115][0x0][_0x2f8e('0x1b')],'exten':_0x387e5d[_0x228115][0x0][_0x2f8e('0xa')],'priority':_0x52e652[_0x2f8e('0x15')]++,'VoiceExtensionId':_0x387e5d[_0x228115][0x0]['VoiceExtensionId']});_0x52e652[_0x2f8e('0xe')][_0x2f8e('0x11')]({'type':_0x387e5d[_0x228115][0x0][_0x2f8e('0x12')],'app':'Set','appdata':_0x2f8e('0x29'),'context':_0x387e5d[_0x228115][0x0][_0x2f8e('0x1b')],'exten':_0x387e5d[_0x228115][0x0]['exten'],'priority':_0x52e652[_0x2f8e('0x15')]++,'VoiceExtensionId':_0x387e5d[_0x228115][0x0]['VoiceExtensionId']});for(var _0x142f3a=0x0,_0x311e0d=0x0;_0x142f3a<_0x387e5d[_0x228115][_0x2f8e('0x2a')];_0x142f3a+=0x1,_0x311e0d=0x0){var _0x31cb3d=_0x387e5d[_0x228115][_0x142f3a];if(_0x31cb3d[_0x2f8e('0x12')]){_0x31cb3d[_0x2f8e('0x12')]=_0x31cb3d['type']['toLowerCase']();}var _0x52d370=[];var _0x2d3111=[];delete _0x31cb3d['id'];delete _0x31cb3d[_0x2f8e('0x2b')];delete _0x31cb3d[_0x2f8e('0x2c')];var _0x1a502e=_0x31cb3d[_0x2f8e('0x2d')]!==_0x2f8e('0x2e')?[_0x31cb3d[_0x2f8e('0x2d')]]:_0x31cb3d['IntervalId']?_['map'](_[_0x2f8e('0x2f')](_0x52e652[_0x2f8e('0x4')],{'IntervalId':_0x31cb3d[_0x2f8e('0x5')]}),_0x2f8e('0x2d')):[];if(_0x31cb3d[_0x2f8e('0xd')](_0x2f8e('0x30'))){if(_0x31cb3d['tag']&&_0x31cb3d[_0x2f8e('0x30')]!=='--'){_0x52d370[_0x2f8e('0x11')]({'type':_0x31cb3d[_0x2f8e('0x12')],'app':_0x2f8e('0x13'),'appdata':_0x2f8e('0x31')+_0x31cb3d[_0x2f8e('0x30')],'context':_0x31cb3d[_0x2f8e('0x1b')],'exten':_0x31cb3d[_0x2f8e('0xa')],'priority':_0x1a502e[_0x2f8e('0x2a')]+_0x52e652[_0x2f8e('0x15')]+_0x311e0d++,'VoiceExtensionId':_0x31cb3d[_0x2f8e('0x16')]});}}if(_0x31cb3d[_0x2f8e('0x12')]===_0x2f8e('0x32')&&_0x31cb3d['hasOwnProperty'](_0x2f8e('0x33'))){if(_0x31cb3d[_0x2f8e('0x33')]){_0x52d370['push']({'type':_0x31cb3d[_0x2f8e('0x12')],'app':_0x2f8e('0x1d'),'appdata':_0x2f8e('0x34')+_0x31cb3d[_0x2f8e('0x33')]+')','context':_0x31cb3d[_0x2f8e('0x1b')],'exten':_0x31cb3d[_0x2f8e('0xa')],'priority':_0x1a502e[_0x2f8e('0x2a')]+_0x52e652[_0x2f8e('0x15')]+_0x311e0d++,'VoiceExtensionId':_0x31cb3d['VoiceExtensionId']});}else{_0x52d370[_0x2f8e('0x11')]({'type':_0x31cb3d[_0x2f8e('0x12')],'app':_0x2f8e('0x1d'),'appdata':_0x2f8e('0x35'),'context':_0x31cb3d[_0x2f8e('0x1b')],'exten':_0x31cb3d['exten'],'priority':_0x1a502e[_0x2f8e('0x2a')]+_0x52e652[_0x2f8e('0x15')]+_0x311e0d++,'VoiceExtensionId':_0x31cb3d[_0x2f8e('0x16')]});}}if(_0x31cb3d[_0x2f8e('0xd')](_0x2f8e('0x36'))){if(_0x123c0a[_0x2f8e('0x37')](_0x31cb3d[_0x2f8e('0x38')][_0x2f8e('0x39')]())>=0x0&&_0x31cb3d[_0x2f8e('0x3a')]!=='custom'){if(_0x31cb3d[_0x2f8e('0x36')]){_0x52d370[_0x2f8e('0x11')]({'type':_0x31cb3d['type'],'app':'ExecIf','appdata':_0x2f8e('0x3b'),'context':_0x31cb3d[_0x2f8e('0x1b')],'exten':_0x31cb3d['exten'],'priority':_0x1a502e[_0x2f8e('0x2a')]+_0x52e652['priority']+_0x311e0d++,'VoiceExtensionId':_0x31cb3d['VoiceExtensionId']});_0x52d370[_0x2f8e('0x11')]({'type':_0x31cb3d[_0x2f8e('0x12')],'app':_0x2f8e('0x13'),'appdata':_0x2f8e('0x3c'),'context':_0x31cb3d[_0x2f8e('0x1b')],'exten':_0x31cb3d[_0x2f8e('0xa')],'priority':_0x1a502e[_0x2f8e('0x2a')]+_0x52e652['priority']+_0x311e0d++,'VoiceExtensionId':_0x31cb3d['VoiceExtensionId']});}else{_0x52d370[_0x2f8e('0x11')]({'type':_0x31cb3d['type'],'app':_0x2f8e('0x1d'),'appdata':_0x2f8e('0x3d'),'context':_0x31cb3d[_0x2f8e('0x1b')],'exten':_0x31cb3d['exten'],'priority':_0x1a502e[_0x2f8e('0x2a')]+_0x52e652['priority']+_0x311e0d++,'VoiceExtensionId':_0x31cb3d[_0x2f8e('0x16')]});_0x52d370[_0x2f8e('0x11')]({'type':_0x31cb3d['type'],'app':_0x2f8e('0x13'),'appdata':_0x2f8e('0x3e'),'context':_0x31cb3d['context'],'exten':_0x31cb3d[_0x2f8e('0xa')],'priority':_0x1a502e[_0x2f8e('0x2a')]+_0x52e652[_0x2f8e('0x15')]+_0x311e0d++,'VoiceExtensionId':_0x31cb3d[_0x2f8e('0x16')]});}}}for(var _0x1d7c4c=0x0;_0x1d7c4c<_0x1a502e[_0x2f8e('0x2a')];_0x1d7c4c+=0x1){var _0x3f7c65=_0x52e652[_0x2f8e('0x15')]+_0x1a502e[_0x2f8e('0x2a')];var _0x1f20dd=_0x1d7c4c===_0x1a502e[_0x2f8e('0x2a')]-0x1?_0x52e652[_0x2f8e('0x15')]+_0x52d370['length']+_0x2d3111['length']+0x2:_0x52e652[_0x2f8e('0x15')]+_0x1d7c4c+0x1;_0x52d370[_0x2f8e('0x3f')](_0x1d7c4c,0x0,{'type':_0x31cb3d[_0x2f8e('0x12')],'app':_0x2f8e('0x40'),'appdata':_0x1a502e[_0x1d7c4c]+'?'+_0x31cb3d['context']+_0x2f8e('0x41')+_0x3f7c65+':'+_0x31cb3d[_0x2f8e('0x1b')]+_0x2f8e('0x41')+_0x1f20dd,'exten':_0x31cb3d[_0x2f8e('0xa')],'context':_0x31cb3d[_0x2f8e('0x1b')],'priority':_0x52e652[_0x2f8e('0x15')]+_0x1d7c4c,'VoiceExtensionId':_0x387e5d[_0x228115][0x0]['VoiceExtensionId']});}_0x31cb3d['priority']=_0x52d370[_0x2f8e('0x2a')]?_[_0x2f8e('0x42')](_0x52d370)[_0x2f8e('0x15')]+0x1:_0x52e652['priority'];_0x52e652[_0x2f8e('0x15')]=(_0x2d3111['length']?_[_0x2f8e('0x42')](_0x2d3111)[_0x2f8e('0x15')]:_0x31cb3d[_0x2f8e('0x15')])+0x1;_0x52e652['extensions']=_[_0x2f8e('0x43')](_0x52e652[_0x2f8e('0xe')],_0x52d370,[_0x31cb3d],_0x2d3111);}_0x52e652[_0x2f8e('0xe')]['push']({'type':_0x387e5d[_0x228115][0x0][_0x2f8e('0x12')],'app':_0x2f8e('0x44'),'exten':_0x387e5d[_0x228115][0x0][_0x2f8e('0xa')],'context':_0x387e5d[_0x228115][0x0][_0x2f8e('0x1b')],'priority':_0x52e652[_0x2f8e('0x15')],'VoiceExtensionId':_0x387e5d[_0x228115][0x0][_0x2f8e('0x16')]});_0xb5421e['push'](_0x387e5d[_0x228115][0x0][_0x2f8e('0x16')]);_0xd9a5b5=_[_0x2f8e('0x43')](_0xd9a5b5,_0x52e652[_0x2f8e('0xe')]);}}return _0x2acef8[_0x2f8e('0x45')](function(_0x3aad5f){return _0x2acef8['models'][_0x2f8e('0x6')][_0x2f8e('0x46')]({'where':{'VoiceExtensionId':{'$in':_0xb5421e}},'transaction':_0x3aad5f})[_0x2f8e('0x3')](function(_0xacec1a){return _0x2acef8[_0x2f8e('0x0')]['VoiceExtension'][_0x2f8e('0x47')](_['sortBy'](_0xd9a5b5,_0x2f8e('0x15')),{'transaction':_0x3aad5f});});});})['catch'](function(_0xc7a25a){console[_0x2f8e('0x48')](_0xc7a25a);});}exports[_0x2f8e('0x49')]=rewrite;
\ No newline at end of file
index 0a33fa9..53c9b63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa5cd=['birthDate','isValid','birthDate\x20format\x20is\x20invalid,\x20YYYY-MM-DD\x20format\x20is\x20supported!','email','email\x20format\x20is\x20not\x20valid!','ListId','CompanyId','length','duplicate','Duplicate\x20Contact','CmContact','create','keys','then','push','Error\x20while\x20creating\x20contact:\x20','cmContact','inspect','insert','into','fromQuery','scheduledAt','ContactId','createdAt','field','NOW()','toString','from','cm_contacts','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','where','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','cm_hopper','\x20=\x20?','phone','updatedAt','select','id\x20IN\x20?','calleridnum','cm_hopper_final','str','cm_hopper_black','VoiceQueue','findAll','outbound','dialCheckDuplicateType','CmList','always','sequelize','VoiceQueueId','catch','query','all','BlackLists','get','Campaign','Lists','CampaignId','onlyIfOpen','cmContact,\x20%s,\x20%s','Error\x20processing\x20rows\x20block:','emit','contact:csv_','unlinkSync','Unable\x20to\x20delete\x20temp\x20file:','stringify','SIGINT','info','resolve','parse','CSV\x20parsed\x20correctly!','CSV\x20parse\x20error','Error\x20executing\x20contact\x20csv\x20import:','util','lodash','squel','papaparse','ioredis','../../../config/environment','../../../config/logger','api','defaults','redis','localhost','../../../api/cmContact/cmContact.socket','register','argv','null','undefined','Missing\x20binding\x20parameters!','zipObject','split','Missing\x20ListId\x20parameter!','Missing\x20socket_timestamp\x20parameter!','contact','index','test','isNil','error','errors','map','message','join','firstName\x20not\x20specified!','phone\x20not\x20specified!'];(function(_0x5c59b7,_0x6371bf){var _0x12f72a=function(_0x2c3f73){while(--_0x2c3f73){_0x5c59b7['push'](_0x5c59b7['shift']());}};_0x12f72a(++_0x6371bf);}(_0xa5cd,0x18c));var _0xda5c=function(_0x36eaaa,_0x326732){_0x36eaaa=_0x36eaaa-0x0;var _0x461349=_0xa5cd[_0x36eaaa];return _0x461349;};'use strict';var BPromise=require('bluebird');var util=require(_0xda5c('0x0'));var _=require(_0xda5c('0x1'));var fs=require('fs');var squel=require(_0xda5c('0x2'));var Papa=require(_0xda5c('0x3'));var Redis=require(_0xda5c('0x4'));var db=require('../../../mysqldb')['db'];var config=require(_0xda5c('0x5'));var logger=require(_0xda5c('0x6'))(_0xda5c('0x7'));config['redis']=_[_0xda5c('0x8')](config[_0xda5c('0x9')],{'host':_0xda5c('0xa'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xda5c('0xb'))[_0xda5c('0xc')](socket);try{if(!process[_0xda5c('0xd')][0x2]||process['argv'][0x2]==='undefined'||process[_0xda5c('0xd')][0x2]===_0xda5c('0xe')){throw new Error('Missing\x20filepath\x20parameter!');}var FILEPATH=process[_0xda5c('0xd')][0x2];if(!process[_0xda5c('0xd')][0x3]||process[_0xda5c('0xd')][0x3]===_0xda5c('0xf')||process[_0xda5c('0xd')][0x3]===_0xda5c('0xe')||!process[_0xda5c('0xd')][0x4]||process['argv'][0x4]===_0xda5c('0xf')||process['argv'][0x4]===_0xda5c('0xe')){throw new Error(_0xda5c('0x10'));}var FIELDS=_[_0xda5c('0x11')](process[_0xda5c('0xd')][0x3][_0xda5c('0x12')](','),process['argv'][0x4]['split'](','));if(!process['argv'][0x5]||process[_0xda5c('0xd')][0x5]===_0xda5c('0xf')||process[_0xda5c('0xd')][0x5]==='null'){throw new Error(_0xda5c('0x13'));}var LISTID=process[_0xda5c('0xd')][0x5];var COMPANYID=process[_0xda5c('0xd')][0x6]&&process[_0xda5c('0xd')][0x6]!=='undefined'&&process[_0xda5c('0xd')][0x6]!==_0xda5c('0xe')?process[_0xda5c('0xd')][0x6]:null;var DUPLICATES=process['argv'][0x7]&&process['argv'][0x7]!==_0xda5c('0xf')&&process['argv'][0x7]!=='null'?process[_0xda5c('0xd')][0x7]:null;if(!process[_0xda5c('0xd')][0x8]||process[_0xda5c('0xd')][0x8]===_0xda5c('0xf')||process[_0xda5c('0xd')][0x8]===_0xda5c('0xe')){throw new Error(_0xda5c('0x14'));}var SOCKET_TIMESTAMP=process['argv'][0x8];}catch(_0x4899b6){logger['error'](_0x4899b6);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(_0x4af0ed,_0x412a16,_0x31c005,_0xb6cab1){var _0x20ba95={'message':_0x412a16};_0x20ba95[_0x4af0ed]=!![];if(_0x31c005){_0x20ba95[_0xda5c('0x15')]=_0x31c005;}if(_0xb6cab1){_0x20ba95[_0xda5c('0x16')]=_0xb6cab1;}return _0x20ba95;}function isEmail(_0x3dab6f){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))*$/[_0xda5c('0x17')](_0x3dab6f);}function checkRow(_0xb892dc,_0x456448,_0x1a44c4){return new BPromise(function(_0x57ccbf,_0x535ac4){if(_[_0xda5c('0x18')](_0xb892dc)){return _0x535ac4(handleCheckRowError(_0xda5c('0x19'),'The\x20row\x20is\x20empty\x20or\x20the\x20number\x20of\x20parameters\x20does\x20not\x20match\x20the\x20columns!',null,_0x1a44c4));}if(_0xb892dc[_0xda5c('0x1a')]&&_0xb892dc['errors']['length']){var _0x458e76=_[_0xda5c('0x1b')](_0xb892dc['errors'],_0xda5c('0x1c'))[_0xda5c('0x1d')](';');return _0x535ac4(handleCheckRowError('error',_0x458e76,null,_0x1a44c4));}var _0xde683c={};for(var _0x10ca21 in FIELDS){if(FIELDS['hasOwnProperty'](_0x10ca21)&&FIELDS[_0x10ca21]){_0xde683c[_0x10ca21]=_0xb892dc['data'][0x0][FIELDS[_0x10ca21]]||_0xb892dc['data'][0x0]['\ufeff'+FIELDS[_0x10ca21]];}}if(!_0xde683c['firstName']){return _0x535ac4(handleCheckRowError(_0xda5c('0x19'),_0xda5c('0x1e'),null,_0x1a44c4));}if(!_0xde683c['phone']){return _0x535ac4(handleCheckRowError(_0xda5c('0x19'),_0xda5c('0x1f'),null,_0x1a44c4));}if(_0xde683c[_0xda5c('0x20')]){var _0x959349=moment(_0xde683c[_0xda5c('0x20')],'YYYY-MM-DD');if(!_0x959349[_0xda5c('0x21')]()){return _0x535ac4(handleCheckRowError(_0xda5c('0x19'),_0xda5c('0x22'),null,_0x1a44c4));}}if(_0xde683c[_0xda5c('0x23')]){if(!isEmail(_0xde683c['email'])){return _0x535ac4(handleCheckRowError(_0xda5c('0x19'),_0xda5c('0x24'),null,_0x1a44c4));}}_0xde683c[_0xda5c('0x25')]=LISTID;_0xde683c[_0xda5c('0x26')]=COMPANYID||undefined;if(DUPLICATES&&DUPLICATES[_0xda5c('0x27')]&&_0x456448){var _0x426fe0={};for(var _0x1ee523=0x0,_0x2f7f3a=DUPLICATES[_0xda5c('0x27')];_0x1ee523<_0x2f7f3a;_0x1ee523+=0x1){_0x426fe0[DUPLICATES[_0x1ee523]]=_0xde683c[DUPLICATES[_0x1ee523]];}var _0x222a37=_['find'](_0x456448,_0x426fe0);if(_0x222a37){return _0x535ac4(handleCheckRowError(_0xda5c('0x28'),_0xda5c('0x29'),_0x222a37,_0x1a44c4));}}return db[_0xda5c('0x2a')][_0xda5c('0x2b')](_0xde683c,{'raw':!![],'hooks':![],'fields':_[_0xda5c('0x2c')](_0xde683c)})[_0xda5c('0x2d')](function(_0x97d069){if(DUPLICATES&&DUPLICATES['length']&&_0x456448){_0x456448[_0xda5c('0x2e')](_['pick'](_0xde683c,DUPLICATES));}hopperContacts+=(hopperContacts?',':'')+_0x97d069['id'];return _0x57ccbf();})['catch'](function(_0x4e05cb){return _0x535ac4(handleCheckRowError(_0xda5c('0x19'),_0xda5c('0x2f')+(_0x4e05cb[_0xda5c('0x1c')]||JSON['stringify'](_0x4e05cb)),null,_0x1a44c4));});});}function checkHopper(){function _0x45c936(){return function(_0x3ba979){logger[_0xda5c('0x19')](_0xda5c('0x30'),'checkHopper',util[_0xda5c('0x31')](_0x3ba979,{'showHidden':![],'depth':null}));};}var _0xe73792=function(_0x2f679c,_0x8b653){var _0x1ad0aa=squel[_0xda5c('0x32')]()[_0xda5c('0x33')]('cm_hopper')[_0xda5c('0x34')](['phone',_0xda5c('0x35'),_0xda5c('0x36'),_0xda5c('0x25'),_0x8b653,_0xda5c('0x37'),'updatedAt'],squel['select']()['field']('phone','phone')[_0xda5c('0x38')](_0xda5c('0x39'),'scheduledAt')[_0xda5c('0x38')]('id',_0xda5c('0x36'))[_0xda5c('0x38')](LISTID[_0xda5c('0x3a')](),_0xda5c('0x25'))[_0xda5c('0x38')](_0x2f679c['id'][_0xda5c('0x3a')](),_0x8b653)[_0xda5c('0x38')](_0xda5c('0x39'),_0xda5c('0x37'))['field'](_0xda5c('0x39'),'updatedAt')[_0xda5c('0x3b')](_0xda5c('0x3c'))['where'](_0xda5c('0x3d'))['where'](_0xda5c('0x3e'),LISTID[_0xda5c('0x3a')]())[_0xda5c('0x3f')](_0xda5c('0x40'))[_0xda5c('0x3f')](_0xda5c('0x41'),squel['select']()['field']('phone')['from'](_0xda5c('0x42'))[_0xda5c('0x3f')](_0x8b653+_0xda5c('0x43'),_0x2f679c['id'][_0xda5c('0x3a')]())))[_0xda5c('0x3a')]();return _0x1ad0aa;};var _0x36913a=function(_0x4648ba,_0x40f948){var _0x285d1c=squel['insert']()[_0xda5c('0x33')](_0xda5c('0x42'))[_0xda5c('0x34')]([_0xda5c('0x44'),_0xda5c('0x35'),'ContactId',_0xda5c('0x25'),_0x40f948,_0xda5c('0x37'),_0xda5c('0x45')],squel[_0xda5c('0x46')]()[_0xda5c('0x38')](_0xda5c('0x44'),_0xda5c('0x44'))[_0xda5c('0x38')](_0xda5c('0x39'),_0xda5c('0x35'))[_0xda5c('0x38')]('id',_0xda5c('0x36'))[_0xda5c('0x38')](LISTID[_0xda5c('0x3a')](),_0xda5c('0x25'))[_0xda5c('0x38')](_0x4648ba['id'][_0xda5c('0x3a')](),_0x40f948)[_0xda5c('0x38')](_0xda5c('0x39'),'createdAt')[_0xda5c('0x38')]('NOW()',_0xda5c('0x45'))[_0xda5c('0x3b')](_0xda5c('0x3c'))['where'](_0xda5c('0x3d'))[_0xda5c('0x3f')](_0xda5c('0x3e'),LISTID[_0xda5c('0x3a')]())['where'](_0xda5c('0x47'),squel['str'](hopperContacts))[_0xda5c('0x3f')](_0xda5c('0x40'))[_0xda5c('0x3f')]('phone\x20NOT\x20IN\x20(?)',squel[_0xda5c('0x46')]()[_0xda5c('0x38')](_0xda5c('0x48'))[_0xda5c('0x3b')](_0xda5c('0x49'))[_0xda5c('0x3f')](_0x40f948+_0xda5c('0x43'),_0x4648ba['id']['toString']()))[_0xda5c('0x3f')](_0xda5c('0x41'),squel[_0xda5c('0x46')]()[_0xda5c('0x38')](_0xda5c('0x44'))[_0xda5c('0x3b')](_0xda5c('0x42'))['where'](_0x40f948+_0xda5c('0x43'),_0x4648ba['id']['toString']())))[_0xda5c('0x3a')]();return _0x285d1c;};function _0x56c301(_0x261c97,_0x4d8585){var _0x9f622=squel['insert']()[_0xda5c('0x33')]('cm_hopper')[_0xda5c('0x34')](['phone',_0xda5c('0x35'),_0xda5c('0x36'),_0xda5c('0x25'),_0x4d8585,'createdAt',_0xda5c('0x45')],squel['select']()['field']('phone',_0xda5c('0x44'))[_0xda5c('0x38')]('NOW()',_0xda5c('0x35'))[_0xda5c('0x38')]('id',_0xda5c('0x36'))[_0xda5c('0x38')](LISTID[_0xda5c('0x3a')](),'ListId')[_0xda5c('0x38')](_0x261c97['id'][_0xda5c('0x3a')](),_0x4d8585)[_0xda5c('0x38')](_0xda5c('0x39'),_0xda5c('0x37'))[_0xda5c('0x38')](_0xda5c('0x39'),'updatedAt')[_0xda5c('0x3b')](_0xda5c('0x3c'))[_0xda5c('0x3f')]('deletedAt\x20IS\x20NULL')[_0xda5c('0x3f')](_0xda5c('0x3e'),LISTID[_0xda5c('0x3a')]())[_0xda5c('0x3f')]('id\x20IN\x20?',squel[_0xda5c('0x4a')](hopperContacts))[_0xda5c('0x3f')]('phone\x20IS\x20NOT\x20NULL'))[_0xda5c('0x3a')]();return _0x9f622;}function _0x59031b(_0x1e2de9,_0x1f9fc3){var _0x531d87=squel['insert']()[_0xda5c('0x33')](_0xda5c('0x4b'))['fromQuery'](['phone',_0xda5c('0x36'),_0xda5c('0x25'),_0x1f9fc3,_0xda5c('0x37'),_0xda5c('0x45')],squel[_0xda5c('0x46')]()['field']('phone','phone')['field']('id','ContactId')[_0xda5c('0x38')](LISTID[_0xda5c('0x3a')](),_0xda5c('0x25'))[_0xda5c('0x38')](_0x1e2de9['id'][_0xda5c('0x3a')](),_0x1f9fc3)['field'](_0xda5c('0x39'),_0xda5c('0x37'))[_0xda5c('0x38')](_0xda5c('0x39'),'updatedAt')[_0xda5c('0x3b')](_0xda5c('0x3c'))[_0xda5c('0x3f')](_0xda5c('0x3d'))[_0xda5c('0x3f')](_0xda5c('0x3e'),LISTID[_0xda5c('0x3a')]())[_0xda5c('0x3f')]('id\x20IN\x20?',squel['str'](hopperContacts))[_0xda5c('0x3f')](_0xda5c('0x40')))[_0xda5c('0x3a')]();return _0x531d87;}return db[_0xda5c('0x4c')][_0xda5c('0x4d')]({'where':{'type':_0xda5c('0x4e')},'attributes':['id',_0xda5c('0x4f')],'include':[{'model':db[_0xda5c('0x50')],'as':'Lists','where':{'id':LISTID}}]})['then'](function(_0x440064){var _0x2c4682=[];if(_0x440064){var _0x1206eb;for(var _0x13d22c=0x0,_0x2295fc;_0x13d22c<_0x440064[_0xda5c('0x27')];_0x13d22c+=0x1){_0x2295fc=_0x440064[_0x13d22c]['get']({'plain':!![]});switch(_0x2295fc[_0xda5c('0x4f')]){case _0xda5c('0x51'):_0x2c4682['push'](db[_0xda5c('0x52')]['query'](_0x36913a(_0x2295fc,_0xda5c('0x53')))[_0xda5c('0x2d')](function(){})[_0xda5c('0x54')](_0x45c936()));break;case'onlyIfOpen':_0x2c4682[_0xda5c('0x2e')](db[_0xda5c('0x52')]['query'](_0xe73792(_0x2295fc,'VoiceQueueId'))['then'](function(){})[_0xda5c('0x54')](_0x45c936()));break;default:_0x2c4682[_0xda5c('0x2e')](db[_0xda5c('0x52')][_0xda5c('0x55')](_0x56c301(_0x2295fc,_0xda5c('0x53')))[_0xda5c('0x2d')](function(){})[_0xda5c('0x54')](_0x45c936()));}}}return _0x2c4682;})[_0xda5c('0x56')]()['then'](function(){return db[_0xda5c('0x4c')]['findAll']({'where':{'type':'outbound'},'attributes':['id'],'include':[{'model':db[_0xda5c('0x50')],'as':_0xda5c('0x57'),'where':{'id':LISTID}}]})[_0xda5c('0x2d')](function(_0x3dde36){var _0xacd61=[];if(_0x3dde36){var _0x9b5102;for(var _0x36ed89=0x0,_0x268b89;_0x36ed89<_0x3dde36[_0xda5c('0x27')];_0x36ed89+=0x1){_0x268b89=_0x3dde36[_0x36ed89][_0xda5c('0x58')]({'plain':!![]});_0xacd61['push'](db['sequelize'][_0xda5c('0x55')](_0x59031b(_0x268b89,'VoiceQueueId'))['then'](function(){})[_0xda5c('0x54')](_0x45c936()));}}return _0xacd61;})['all']();})['then'](function(){return db[_0xda5c('0x59')][_0xda5c('0x4d')]({'attributes':['id',_0xda5c('0x4f')],'include':[{'model':db['CmList'],'as':_0xda5c('0x5a'),'where':{'id':LISTID}}]})['then'](function(_0x5bef9f){var _0x7d9030=[];if(_0x5bef9f){for(var _0x1075f7=0x0,_0x33d5cb;_0x1075f7<_0x5bef9f['length'];_0x1075f7+=0x1){_0x33d5cb=_0x5bef9f[_0x1075f7][_0xda5c('0x58')]({'plain':!![]});switch(_0x33d5cb['dialCheckDuplicateType']){case _0xda5c('0x51'):_0x7d9030[_0xda5c('0x2e')](db[_0xda5c('0x52')][_0xda5c('0x55')](_0x36913a(_0x33d5cb,_0xda5c('0x5b')))[_0xda5c('0x2d')](function(){})[_0xda5c('0x54')](_0x45c936()));break;case _0xda5c('0x5c'):_0x7d9030[_0xda5c('0x2e')](db[_0xda5c('0x52')][_0xda5c('0x55')](_0xe73792(_0x33d5cb,'CampaignId'))[_0xda5c('0x2d')](function(){})[_0xda5c('0x54')](_0x45c936()));break;default:_0x7d9030[_0xda5c('0x2e')](db[_0xda5c('0x52')][_0xda5c('0x55')](_0x56c301(_0x33d5cb,'CampaignId'))['then'](function(){})[_0xda5c('0x54')](_0x45c936()));}}}return _0x7d9030;})[_0xda5c('0x56')]();})[_0xda5c('0x2d')](function(){return db[_0xda5c('0x59')][_0xda5c('0x4d')]({'attributes':['id'],'include':[{'model':db[_0xda5c('0x50')],'as':_0xda5c('0x57'),'where':{'id':LISTID}}]})[_0xda5c('0x2d')](function(_0x58da0b){var _0x3b5a43=[];if(_0x58da0b){for(var _0x32d32b=0x0,_0x4c4480;_0x32d32b<_0x58da0b[_0xda5c('0x27')];_0x32d32b+=0x1){_0x4c4480=_0x58da0b[_0x32d32b][_0xda5c('0x58')]({'plain':!![]});_0x3b5a43['push'](db[_0xda5c('0x52')][_0xda5c('0x55')](_0x59031b(_0x4c4480,_0xda5c('0x5b')))['then'](function(){})[_0xda5c('0x54')](_0x45c936()));}}return _0x3b5a43;})[_0xda5c('0x56')]();})[_0xda5c('0x54')](function(_0x4a5d44){logger[_0xda5c('0x19')](_0xda5c('0x5d'),'generalCheckHopper',_0x4a5d44[_0xda5c('0x1c')]);});}var processPromises=function(_0x2666bf){return BPromise['all'](promises)[_0xda5c('0x2d')](function(_0x220408){})['catch'](function(_0x4f4ef4){logger[_0xda5c('0x19')](_0xda5c('0x5e'),JSON['stringify'](_0x4f4ef4));})['finally'](function(){socket[_0xda5c('0x5f')](_0xda5c('0x60')+SOCKET_TIMESTAMP,{'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});promises=[];success=0x0;errors=0x0;duplicates=0x0;rows=[];if(_0x2666bf){return _0x2666bf['resume']();}});};var endCsv=function(){return BPromise['resolve']()['then'](function(){if(hopperContacts){return checkHopper();}})[_0xda5c('0x2d')](function(){socket[_0xda5c('0x5f')](_0xda5c('0x60')+SOCKET_TIMESTAMP,{'finished':!![],'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});try{fs[_0xda5c('0x61')](FILEPATH);}catch(_0x23a2e8){logger[_0xda5c('0x19')](_0xda5c('0x62'),JSON[_0xda5c('0x63')](_0x23a2e8));}finally{process['exit'](0x0);}});};process['on'](_0xda5c('0x64'),function(){logger[_0xda5c('0x65')]('CSV\x20import\x20process\x20stopped!');endCsv();});function main(){return BPromise[_0xda5c('0x66')]()[_0xda5c('0x2d')](function(){if(DUPLICATES){DUPLICATES=DUPLICATES['split'](',');return db[_0xda5c('0x2a')][_0xda5c('0x4d')]({'where':{'ListId':LISTID},'attributes':DUPLICATES,'raw':!![]});}})['then'](function(_0x4bdf46){var _0x5a5c31=fs['createReadStream'](FILEPATH,{'highWaterMark':0xf*0x400*0x400});Papa[_0xda5c('0x67')](_0x5a5c31,{'header':!![],'skipEmptyLines':!![],'step':function(_0x2a7e0a,_0x44ab33){total+=0x1;var _0x415a87=total;promises['push'](checkRow(_0x2a7e0a,_0x4bdf46,_0x415a87)[_0xda5c('0x2d')](function(){success+=0x1;})[_0xda5c('0x54')](function(_0x37328a){if(_0x37328a[_0xda5c('0x19')]){errors+=0x1;delete _0x37328a['error'];}else if(_0x37328a[_0xda5c('0x28')]){duplicates+=0x1;delete _0x37328a['duplicate'];}rows[_0xda5c('0x2e')](_0x37328a);}));if(total%0xc8===0x0){_0x44ab33['pause']();return processPromises(_0x44ab33);}},'complete':function(){return processPromises()[_0xda5c('0x2d')](function(){logger[_0xda5c('0x65')](_0xda5c('0x68'));endCsv();});},'error':function(_0x4de255,_0x331dad){logger[_0xda5c('0x65')](_0xda5c('0x69'),JSON['stringify'](_0x4de255));endCsv();}});})['catch'](function(_0x23ae05){logger['error'](_0xda5c('0x6a'),JSON[_0xda5c('0x63')](_0x23ae05));});}main();
\ No newline at end of file
+var _0x980f=['Missing\x20binding\x20parameters!','zipObject','split','Missing\x20ListId\x20parameter!','error','index','test','isNil','The\x20row\x20is\x20empty\x20or\x20the\x20number\x20of\x20parameters\x20does\x20not\x20match\x20the\x20columns!','errors','map','message','join','data','firstName','firstName\x20not\x20specified!','phone','phone\x20not\x20specified!','birthDate','YYYY-MM-DD','isValid','email','ListId','CompanyId','length','duplicate','Duplicate\x20Contact','create','keys','then','push','pick','catch','Error\x20while\x20creating\x20contact:\x20','cmContact','checkHopper','insert','cm_hopper','scheduledAt','ContactId','updatedAt','select','NOW()','field','toString','createdAt','from','cm_contacts','where','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','\x20=\x20?','into','fromQuery','str','phone\x20IS\x20NOT\x20NULL','cm_hopper_final','phone\x20NOT\x20IN\x20(?)','id\x20IN\x20?','cm_hopper_black','VoiceQueue','outbound','Lists','get','always','sequelize','query','onlyIfOpen','VoiceQueueId','all','findAll','CmList','BlackLists','Campaign','dialCheckDuplicateType','CampaignId','generalCheckHopper','stringify','emit','contact:csv_','resume','resolve','unlinkSync','Unable\x20to\x20delete\x20temp\x20file:','SIGINT','info','CSV\x20import\x20process\x20stopped!','CmContact','createReadStream','parse','CSV\x20parsed\x20correctly!','Error\x20executing\x20contact\x20csv\x20import:','util','lodash','papaparse','ioredis','../../../mysqldb','../../../config/environment','api','defaults','redis','localhost','socket.io-emitter','../../../api/cmContact/cmContact.socket','register','argv','undefined','null','Missing\x20filepath\x20parameter!'];(function(_0x42fa4f,_0x244a38){var _0x7f4313=function(_0x242f76){while(--_0x242f76){_0x42fa4f['push'](_0x42fa4f['shift']());}};_0x7f4313(++_0x244a38);}(_0x980f,0x136));var _0xf980=function(_0x2a9490,_0x43cb5f){_0x2a9490=_0x2a9490-0x0;var _0x5bf90e=_0x980f[_0x2a9490];return _0x5bf90e;};'use strict';var BPromise=require('bluebird');var util=require(_0xf980('0x0'));var _=require(_0xf980('0x1'));var fs=require('fs');var squel=require('squel');var Papa=require(_0xf980('0x2'));var Redis=require(_0xf980('0x3'));var db=require(_0xf980('0x4'))['db'];var config=require(_0xf980('0x5'));var logger=require('../../../config/logger')(_0xf980('0x6'));config['redis']=_[_0xf980('0x7')](config[_0xf980('0x8')],{'host':_0xf980('0x9'),'port':0x18eb});var socket=require(_0xf980('0xa'))(new Redis(config[_0xf980('0x8')]));require(_0xf980('0xb'))[_0xf980('0xc')](socket);try{if(!process['argv'][0x2]||process[_0xf980('0xd')][0x2]===_0xf980('0xe')||process[_0xf980('0xd')][0x2]===_0xf980('0xf')){throw new Error(_0xf980('0x10'));}var FILEPATH=process[_0xf980('0xd')][0x2];if(!process[_0xf980('0xd')][0x3]||process[_0xf980('0xd')][0x3]==='undefined'||process[_0xf980('0xd')][0x3]===_0xf980('0xf')||!process['argv'][0x4]||process['argv'][0x4]===_0xf980('0xe')||process[_0xf980('0xd')][0x4]==='null'){throw new Error(_0xf980('0x11'));}var FIELDS=_[_0xf980('0x12')](process[_0xf980('0xd')][0x3][_0xf980('0x13')](','),process[_0xf980('0xd')][0x4]['split'](','));if(!process['argv'][0x5]||process[_0xf980('0xd')][0x5]===_0xf980('0xe')||process['argv'][0x5]===_0xf980('0xf')){throw new Error(_0xf980('0x14'));}var LISTID=process[_0xf980('0xd')][0x5];var COMPANYID=process[_0xf980('0xd')][0x6]&&process[_0xf980('0xd')][0x6]!==_0xf980('0xe')&&process[_0xf980('0xd')][0x6]!=='null'?process[_0xf980('0xd')][0x6]:null;var DUPLICATES=process['argv'][0x7]&&process[_0xf980('0xd')][0x7]!==_0xf980('0xe')&&process[_0xf980('0xd')][0x7]!==_0xf980('0xf')?process['argv'][0x7]:null;if(!process[_0xf980('0xd')][0x8]||process[_0xf980('0xd')][0x8]===_0xf980('0xe')||process[_0xf980('0xd')][0x8]===_0xf980('0xf')){throw new Error('Missing\x20socket_timestamp\x20parameter!');}var SOCKET_TIMESTAMP=process['argv'][0x8];}catch(_0x12f968){logger[_0xf980('0x15')](_0x12f968);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(_0x11d9eb,_0x9180fe,_0x1e4289,_0x3a9826){var _0xc5e7ff={'message':_0x9180fe};_0xc5e7ff[_0x11d9eb]=!![];if(_0x1e4289){_0xc5e7ff['contact']=_0x1e4289;}if(_0x3a9826){_0xc5e7ff[_0xf980('0x16')]=_0x3a9826;}return _0xc5e7ff;}function isEmail(_0x3b51b7){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))*$/[_0xf980('0x17')](_0x3b51b7);}function checkRow(_0x1a1328,_0x5e35d3,_0x41c59a){return new BPromise(function(_0x241741,_0x1817a5){if(_[_0xf980('0x18')](_0x1a1328)){return _0x1817a5(handleCheckRowError(_0xf980('0x15'),_0xf980('0x19'),null,_0x41c59a));}if(_0x1a1328[_0xf980('0x1a')]&&_0x1a1328[_0xf980('0x1a')]['length']){var _0x4a4eb1=_[_0xf980('0x1b')](_0x1a1328[_0xf980('0x1a')],_0xf980('0x1c'))[_0xf980('0x1d')](';');return _0x1817a5(handleCheckRowError(_0xf980('0x15'),_0x4a4eb1,null,_0x41c59a));}var _0x410bbf={};for(var _0x23b626 in FIELDS){if(FIELDS['hasOwnProperty'](_0x23b626)&&FIELDS[_0x23b626]){_0x410bbf[_0x23b626]=_0x1a1328[_0xf980('0x1e')][0x0][FIELDS[_0x23b626]]||_0x1a1328[_0xf980('0x1e')][0x0]['\ufeff'+FIELDS[_0x23b626]];}}if(!_0x410bbf[_0xf980('0x1f')]){return _0x1817a5(handleCheckRowError(_0xf980('0x15'),_0xf980('0x20'),null,_0x41c59a));}if(!_0x410bbf[_0xf980('0x21')]){return _0x1817a5(handleCheckRowError('error',_0xf980('0x22'),null,_0x41c59a));}if(_0x410bbf['birthDate']){var _0x1f21c3=moment(_0x410bbf[_0xf980('0x23')],_0xf980('0x24'));if(!_0x1f21c3[_0xf980('0x25')]()){return _0x1817a5(handleCheckRowError(_0xf980('0x15'),'birthDate\x20format\x20is\x20invalid,\x20YYYY-MM-DD\x20format\x20is\x20supported!',null,_0x41c59a));}}if(_0x410bbf[_0xf980('0x26')]){if(!isEmail(_0x410bbf[_0xf980('0x26')])){return _0x1817a5(handleCheckRowError('error','email\x20format\x20is\x20not\x20valid!',null,_0x41c59a));}}_0x410bbf[_0xf980('0x27')]=LISTID;_0x410bbf[_0xf980('0x28')]=COMPANYID||undefined;if(DUPLICATES&&DUPLICATES[_0xf980('0x29')]&&_0x5e35d3){var _0xc597b4={};for(var _0x5bcaf0=0x0,_0x3b77fe=DUPLICATES[_0xf980('0x29')];_0x5bcaf0<_0x3b77fe;_0x5bcaf0+=0x1){_0xc597b4[DUPLICATES[_0x5bcaf0]]=_0x410bbf[DUPLICATES[_0x5bcaf0]];}var _0x6d5654=_['find'](_0x5e35d3,_0xc597b4);if(_0x6d5654){return _0x1817a5(handleCheckRowError(_0xf980('0x2a'),_0xf980('0x2b'),_0x6d5654,_0x41c59a));}}return db['CmContact'][_0xf980('0x2c')](_0x410bbf,{'raw':!![],'hooks':![],'fields':_[_0xf980('0x2d')](_0x410bbf)})[_0xf980('0x2e')](function(_0x1da340){if(DUPLICATES&&DUPLICATES[_0xf980('0x29')]&&_0x5e35d3){_0x5e35d3[_0xf980('0x2f')](_[_0xf980('0x30')](_0x410bbf,DUPLICATES));}hopperContacts+=(hopperContacts?',':'')+_0x1da340['id'];return _0x241741();})[_0xf980('0x31')](function(_0x27f96f){return _0x1817a5(handleCheckRowError('error',_0xf980('0x32')+(_0x27f96f[_0xf980('0x1c')]||JSON['stringify'](_0x27f96f)),null,_0x41c59a));});});}function checkHopper(){function _0x380e55(){return function(_0x23a93f){logger[_0xf980('0x15')](_0xf980('0x33'),_0xf980('0x34'),util['inspect'](_0x23a93f,{'showHidden':![],'depth':null}));};}var _0x46bea4=function(_0x570ad5,_0x266a27){var _0x4fb475=squel[_0xf980('0x35')]()['into'](_0xf980('0x36'))['fromQuery']([_0xf980('0x21'),_0xf980('0x37'),_0xf980('0x38'),_0xf980('0x27'),_0x266a27,'createdAt',_0xf980('0x39')],squel[_0xf980('0x3a')]()['field'](_0xf980('0x21'),_0xf980('0x21'))['field'](_0xf980('0x3b'),_0xf980('0x37'))[_0xf980('0x3c')]('id',_0xf980('0x38'))[_0xf980('0x3c')](LISTID['toString'](),_0xf980('0x27'))[_0xf980('0x3c')](_0x570ad5['id'][_0xf980('0x3d')](),_0x266a27)[_0xf980('0x3c')](_0xf980('0x3b'),_0xf980('0x3e'))[_0xf980('0x3c')](_0xf980('0x3b'),'updatedAt')[_0xf980('0x3f')](_0xf980('0x40'))[_0xf980('0x41')](_0xf980('0x42'))[_0xf980('0x41')](_0xf980('0x43'),LISTID['toString']())[_0xf980('0x41')]('phone\x20IS\x20NOT\x20NULL')[_0xf980('0x41')]('phone\x20NOT\x20IN\x20(?)',squel[_0xf980('0x3a')]()['field']('phone')[_0xf980('0x3f')](_0xf980('0x36'))[_0xf980('0x41')](_0x266a27+_0xf980('0x44'),_0x570ad5['id'][_0xf980('0x3d')]())))[_0xf980('0x3d')]();return _0x4fb475;};var _0x3f3fcc=function(_0x587c07,_0x49e89e){var _0x3d05b=squel[_0xf980('0x35')]()[_0xf980('0x45')](_0xf980('0x36'))[_0xf980('0x46')](['phone',_0xf980('0x37'),_0xf980('0x38'),'ListId',_0x49e89e,_0xf980('0x3e'),_0xf980('0x39')],squel['select']()['field']('phone',_0xf980('0x21'))[_0xf980('0x3c')]('NOW()','scheduledAt')['field']('id',_0xf980('0x38'))['field'](LISTID['toString'](),_0xf980('0x27'))[_0xf980('0x3c')](_0x587c07['id'][_0xf980('0x3d')](),_0x49e89e)[_0xf980('0x3c')]('NOW()',_0xf980('0x3e'))[_0xf980('0x3c')]('NOW()',_0xf980('0x39'))['from'](_0xf980('0x40'))[_0xf980('0x41')](_0xf980('0x42'))[_0xf980('0x41')](_0xf980('0x43'),LISTID[_0xf980('0x3d')]())[_0xf980('0x41')]('id\x20IN\x20?',squel[_0xf980('0x47')](hopperContacts))[_0xf980('0x41')](_0xf980('0x48'))[_0xf980('0x41')]('phone\x20NOT\x20IN\x20(?)',squel['select']()[_0xf980('0x3c')]('calleridnum')[_0xf980('0x3f')](_0xf980('0x49'))[_0xf980('0x41')](_0x49e89e+_0xf980('0x44'),_0x587c07['id']['toString']()))[_0xf980('0x41')](_0xf980('0x4a'),squel[_0xf980('0x3a')]()[_0xf980('0x3c')]('phone')[_0xf980('0x3f')](_0xf980('0x36'))[_0xf980('0x41')](_0x49e89e+'\x20=\x20?',_0x587c07['id'][_0xf980('0x3d')]())))[_0xf980('0x3d')]();return _0x3d05b;};function _0x280154(_0x511af4,_0x2fc6c6){var _0x4fa90a=squel['insert']()[_0xf980('0x45')](_0xf980('0x36'))[_0xf980('0x46')]([_0xf980('0x21'),'scheduledAt',_0xf980('0x38'),_0xf980('0x27'),_0x2fc6c6,'createdAt',_0xf980('0x39')],squel[_0xf980('0x3a')]()['field'](_0xf980('0x21'),_0xf980('0x21'))['field'](_0xf980('0x3b'),'scheduledAt')[_0xf980('0x3c')]('id',_0xf980('0x38'))['field'](LISTID[_0xf980('0x3d')](),_0xf980('0x27'))[_0xf980('0x3c')](_0x511af4['id'][_0xf980('0x3d')](),_0x2fc6c6)[_0xf980('0x3c')]('NOW()',_0xf980('0x3e'))[_0xf980('0x3c')](_0xf980('0x3b'),_0xf980('0x39'))[_0xf980('0x3f')](_0xf980('0x40'))[_0xf980('0x41')](_0xf980('0x42'))[_0xf980('0x41')](_0xf980('0x43'),LISTID[_0xf980('0x3d')]())[_0xf980('0x41')](_0xf980('0x4b'),squel[_0xf980('0x47')](hopperContacts))['where'](_0xf980('0x48')))['toString']();return _0x4fa90a;}function _0x560234(_0x118f84,_0x5bdac4){var _0x367e66=squel[_0xf980('0x35')]()[_0xf980('0x45')](_0xf980('0x4c'))[_0xf980('0x46')]([_0xf980('0x21'),'ContactId','ListId',_0x5bdac4,'createdAt',_0xf980('0x39')],squel[_0xf980('0x3a')]()[_0xf980('0x3c')](_0xf980('0x21'),_0xf980('0x21'))[_0xf980('0x3c')]('id',_0xf980('0x38'))['field'](LISTID['toString'](),_0xf980('0x27'))[_0xf980('0x3c')](_0x118f84['id'][_0xf980('0x3d')](),_0x5bdac4)[_0xf980('0x3c')]('NOW()','createdAt')[_0xf980('0x3c')](_0xf980('0x3b'),'updatedAt')[_0xf980('0x3f')](_0xf980('0x40'))[_0xf980('0x41')](_0xf980('0x42'))[_0xf980('0x41')](_0xf980('0x43'),LISTID[_0xf980('0x3d')]())[_0xf980('0x41')](_0xf980('0x4b'),squel['str'](hopperContacts))[_0xf980('0x41')](_0xf980('0x48')))[_0xf980('0x3d')]();return _0x367e66;}return db[_0xf980('0x4d')]['findAll']({'where':{'type':_0xf980('0x4e')},'attributes':['id','dialCheckDuplicateType'],'include':[{'model':db['CmList'],'as':_0xf980('0x4f'),'where':{'id':LISTID}}]})[_0xf980('0x2e')](function(_0x6754a2){var _0x4844e0=[];if(_0x6754a2){var _0x233723;for(var _0x4ca289=0x0,_0x366f35;_0x4ca289<_0x6754a2[_0xf980('0x29')];_0x4ca289+=0x1){_0x366f35=_0x6754a2[_0x4ca289][_0xf980('0x50')]({'plain':!![]});switch(_0x366f35['dialCheckDuplicateType']){case _0xf980('0x51'):_0x4844e0[_0xf980('0x2f')](db[_0xf980('0x52')][_0xf980('0x53')](_0x3f3fcc(_0x366f35,'VoiceQueueId'))[_0xf980('0x2e')](function(){})[_0xf980('0x31')](_0x380e55()));break;case _0xf980('0x54'):_0x4844e0[_0xf980('0x2f')](db[_0xf980('0x52')][_0xf980('0x53')](_0x46bea4(_0x366f35,'VoiceQueueId'))[_0xf980('0x2e')](function(){})[_0xf980('0x31')](_0x380e55()));break;default:_0x4844e0[_0xf980('0x2f')](db[_0xf980('0x52')][_0xf980('0x53')](_0x280154(_0x366f35,_0xf980('0x55')))[_0xf980('0x2e')](function(){})['catch'](_0x380e55()));}}}return _0x4844e0;})[_0xf980('0x56')]()[_0xf980('0x2e')](function(){return db[_0xf980('0x4d')][_0xf980('0x57')]({'where':{'type':_0xf980('0x4e')},'attributes':['id'],'include':[{'model':db[_0xf980('0x58')],'as':_0xf980('0x59'),'where':{'id':LISTID}}]})[_0xf980('0x2e')](function(_0x418048){var _0x1930fa=[];if(_0x418048){var _0xab8f2d;for(var _0x7e6a35=0x0,_0xbc8487;_0x7e6a35<_0x418048[_0xf980('0x29')];_0x7e6a35+=0x1){_0xbc8487=_0x418048[_0x7e6a35][_0xf980('0x50')]({'plain':!![]});_0x1930fa[_0xf980('0x2f')](db[_0xf980('0x52')][_0xf980('0x53')](_0x560234(_0xbc8487,_0xf980('0x55')))[_0xf980('0x2e')](function(){})[_0xf980('0x31')](_0x380e55()));}}return _0x1930fa;})['all']();})[_0xf980('0x2e')](function(){return db[_0xf980('0x5a')][_0xf980('0x57')]({'attributes':['id',_0xf980('0x5b')],'include':[{'model':db[_0xf980('0x58')],'as':_0xf980('0x4f'),'where':{'id':LISTID}}]})[_0xf980('0x2e')](function(_0x58733e){var _0x33dd4d=[];if(_0x58733e){for(var _0xf2fd0d=0x0,_0x5cdbfa;_0xf2fd0d<_0x58733e[_0xf980('0x29')];_0xf2fd0d+=0x1){_0x5cdbfa=_0x58733e[_0xf2fd0d][_0xf980('0x50')]({'plain':!![]});switch(_0x5cdbfa[_0xf980('0x5b')]){case'always':_0x33dd4d[_0xf980('0x2f')](db[_0xf980('0x52')][_0xf980('0x53')](_0x3f3fcc(_0x5cdbfa,_0xf980('0x5c')))[_0xf980('0x2e')](function(){})[_0xf980('0x31')](_0x380e55()));break;case'onlyIfOpen':_0x33dd4d[_0xf980('0x2f')](db[_0xf980('0x52')][_0xf980('0x53')](_0x46bea4(_0x5cdbfa,_0xf980('0x5c')))['then'](function(){})[_0xf980('0x31')](_0x380e55()));break;default:_0x33dd4d[_0xf980('0x2f')](db[_0xf980('0x52')][_0xf980('0x53')](_0x280154(_0x5cdbfa,'CampaignId'))[_0xf980('0x2e')](function(){})[_0xf980('0x31')](_0x380e55()));}}}return _0x33dd4d;})[_0xf980('0x56')]();})[_0xf980('0x2e')](function(){return db[_0xf980('0x5a')][_0xf980('0x57')]({'attributes':['id'],'include':[{'model':db[_0xf980('0x58')],'as':_0xf980('0x59'),'where':{'id':LISTID}}]})[_0xf980('0x2e')](function(_0x356a01){var _0x24fd9a=[];if(_0x356a01){for(var _0x5362cd=0x0,_0x3d8237;_0x5362cd<_0x356a01[_0xf980('0x29')];_0x5362cd+=0x1){_0x3d8237=_0x356a01[_0x5362cd][_0xf980('0x50')]({'plain':!![]});_0x24fd9a[_0xf980('0x2f')](db[_0xf980('0x52')][_0xf980('0x53')](_0x560234(_0x3d8237,'CampaignId'))[_0xf980('0x2e')](function(){})['catch'](_0x380e55()));}}return _0x24fd9a;})['all']();})['catch'](function(_0x26fb0a){logger[_0xf980('0x15')]('cmContact,\x20%s,\x20%s',_0xf980('0x5d'),_0x26fb0a['message']);});}var processPromises=function(_0x5b5c90){return BPromise[_0xf980('0x56')](promises)['then'](function(_0x4798d2){})[_0xf980('0x31')](function(_0x407c34){logger[_0xf980('0x15')]('Error\x20processing\x20rows\x20block:',JSON[_0xf980('0x5e')](_0x407c34));})['finally'](function(){socket[_0xf980('0x5f')](_0xf980('0x60')+SOCKET_TIMESTAMP,{'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});promises=[];success=0x0;errors=0x0;duplicates=0x0;rows=[];if(_0x5b5c90){return _0x5b5c90[_0xf980('0x61')]();}});};var endCsv=function(){return BPromise[_0xf980('0x62')]()['then'](function(){if(hopperContacts){return checkHopper();}})['then'](function(){socket['emit'](_0xf980('0x60')+SOCKET_TIMESTAMP,{'finished':!![],'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});try{fs[_0xf980('0x63')](FILEPATH);}catch(_0x428812){logger[_0xf980('0x15')](_0xf980('0x64'),JSON['stringify'](_0x428812));}finally{process['exit'](0x0);}});};process['on'](_0xf980('0x65'),function(){logger[_0xf980('0x66')](_0xf980('0x67'));endCsv();});function main(){return BPromise[_0xf980('0x62')]()[_0xf980('0x2e')](function(){if(DUPLICATES){DUPLICATES=DUPLICATES[_0xf980('0x13')](',');return db[_0xf980('0x68')][_0xf980('0x57')]({'where':{'ListId':LISTID},'attributes':DUPLICATES,'raw':!![]});}})[_0xf980('0x2e')](function(_0x5223ef){var _0x3dae07=fs[_0xf980('0x69')](FILEPATH,{'highWaterMark':0xf*0x400*0x400});Papa[_0xf980('0x6a')](_0x3dae07,{'header':!![],'skipEmptyLines':!![],'step':function(_0x3116e5,_0x4e67c3){total+=0x1;var _0xb4991a=total;promises[_0xf980('0x2f')](checkRow(_0x3116e5,_0x5223ef,_0xb4991a)[_0xf980('0x2e')](function(){success+=0x1;})[_0xf980('0x31')](function(_0x5e0456){if(_0x5e0456['error']){errors+=0x1;delete _0x5e0456['error'];}else if(_0x5e0456[_0xf980('0x2a')]){duplicates+=0x1;delete _0x5e0456['duplicate'];}rows['push'](_0x5e0456);}));if(total%0xc8===0x0){_0x4e67c3['pause']();return processPromises(_0x4e67c3);}},'complete':function(){return processPromises()[_0xf980('0x2e')](function(){logger[_0xf980('0x66')](_0xf980('0x6b'));endCsv();});},'error':function(_0x4450f1,_0x4429e1){logger[_0xf980('0x66')]('CSV\x20parse\x20error',JSON['stringify'](_0x4450f1));endCsv();}});})['catch'](function(_0x534c7c){logger[_0xf980('0x15')](_0xf980('0x6c'),JSON[_0xf980('0x5e')](_0x534c7c));});}main();
\ No newline at end of file
index 015600b..53dec63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x86db=['phone','from','.id\x20=\x20','where','\x20=\x20','.dialCheckDuplicateType\x20IN\x20(','join','cm_contacts.phone','cm_contacts.scheduledat','cm_contacts.ListId','cm_contacts.createdAt','cm_contacts.priority','cm_contacts.UserId','insert','cm_hopper','fromQuery','scheduledat','createdAt','priority','UserId','recallme','select','fields','cm_contacts','cm_contacts.ListId\x20=\x20','.CmListId','.CmListId\x20=\x20?','cm_contacts.createdAt\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','toString','cm_contacts.updatedAt','into','cm_hopper_black','ContactId','ListId','updatedAt','ListId\x20=\x20?','concat','keys',')\x20NOT\x20IN\x20?','id\x20IN\x20?','MIN(id)','min_id','info','Received\x20SIGINT','exit','errors','push','code','spread','catch','error','message','main','stringify','send','binding','root','server/files/tmp','.csv','header','parse','createReadStream','data','rows','hasOwnProperty','trim','replace','isValid','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','isNaN','isNumber','includes','agent\x20not\x20exists','email','YYYY-MM-DD','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','\x20not\x20specified','SystemRow','appendFileSync','emit','contact:import:','Abort\x20parser','abort','step','duplicates','length','cm_contacts_','CREATE\x20TABLE\x20','\x20LIKE\x20cm_contacts;','CompanyId','isNil',',\x20scheduledAt\x20=\x20NOW()','voice_queues_has_cm_lists','voice_queues','VoiceQueueId','voice_queues_has_cm_blacklists','campaigns_has_cm_lists','campaigns_has_cm_blacklists','campaigns','CampaignId','each','then','finish','affectedRows','unlink','complete','argv','arguments\x20<filename>\x20<parameters>\x20<agents>','existsSync','file\x20doesn\x27t\x20exists','binding\x20doesn\x27t\x20exists','phone\x20is\x20mandatory','firstName\x20is\x20mandatory','ListId\x20is\x20mandatory','body\x20id\x20mandatory','No\x20agent\x20available','uncaughtException','path','lodash','util','bluebird','squel','ioredis','../../../mysqldb','../../../config/environment','import','redis','defaults','localhost','socket.io-emitter','format','test','field'];(function(_0x11f541,_0x38754e){var _0x52ec5b=function(_0x298a0f){while(--_0x298a0f){_0x11f541['push'](_0x11f541['shift']());}};_0x52ec5b(++_0x38754e);}(_0x86db,0xfc));var _0xb86d=function(_0x1d7827,_0x42b0db){_0x1d7827=_0x1d7827-0x0;var _0xb449f1=_0x86db[_0x1d7827];return _0xb449f1;};'use strict';var fs=require('fs');var path=require(_0xb86d('0x0'));var _=require(_0xb86d('0x1'));var Papa=require('papaparse');var util=require(_0xb86d('0x2'));var BPromise=require(_0xb86d('0x3'));var moment=require('moment');var squel=require(_0xb86d('0x4'));var Redis=require(_0xb86d('0x5'));var db=require(_0xb86d('0x6'))['db'];var config=require(_0xb86d('0x7'));var logger=require('../../../config/logger')(_0xb86d('0x8'));config[_0xb86d('0x9')]=_[_0xb86d('0xa')](config[_0xb86d('0x9')],{'host':_0xb86d('0xb'),'port':0x18eb});var socket=require(_0xb86d('0xc'))(new Redis(config[_0xb86d('0x9')]));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var stopped=![];var NOW=moment()[_0xb86d('0xd')]('YYYY-MM-DD\x20HH:mm:ss');function isEmail(_0x76cc8c){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))*$/[_0xb86d('0xe')](_0x76cc8c);}function selectNotIn(_0x135ecf,_0x9ecf77,_0x46135a,_0x1c756c,_0x3573c0){return squel['select']()[_0xb86d('0xf')](_0xb86d('0x10'))[_0xb86d('0x11')](_0x1c756c)['join'](_0x9ecf77,null,_0x9ecf77+_0xb86d('0x12')+_0x1c756c+'.'+_0x46135a)[_0xb86d('0x13')](_0x1c756c+'.'+_0x46135a+_0xb86d('0x14')+_0x135ecf+'.'+_0x46135a)['where'](_0x9ecf77+_0xb86d('0x15')+_0x3573c0[_0xb86d('0x16')]()+')');}function insertCmHopper(_0x1a5696,_0x199e7e,_0x6efc27,_0x4a0def,_0x56cea0){var _0x4936b6=[_0xb86d('0x17'),_0xb86d('0x18'),'cm_contacts.id',_0xb86d('0x19'),_0x199e7e+'.'+_0x4a0def,_0xb86d('0x1a'),'cm_contacts.updatedAt',_0xb86d('0x1b'),_0xb86d('0x1c'),'\x22'+_0x56cea0+'\x22'];return squel[_0xb86d('0x1d')]()['into'](_0xb86d('0x1e'))[_0xb86d('0x1f')]([_0xb86d('0x10'),_0xb86d('0x20'),'ContactId','ListId',_0x4a0def,_0xb86d('0x21'),'updatedAt',_0xb86d('0x22'),_0xb86d('0x23'),_0xb86d('0x24')],squel[_0xb86d('0x25')]()[_0xb86d('0x26')](_0x4936b6)['from'](_0x199e7e)[_0xb86d('0x16')](_0xb86d('0x27'),null,_0xb86d('0x28')+_0x199e7e+_0xb86d('0x29'))[_0xb86d('0x16')](_0x6efc27,null,_0x6efc27+_0xb86d('0x12')+_0x199e7e+'.'+_0x4a0def)[_0xb86d('0x13')](_0x199e7e+_0xb86d('0x2a'),_0x1a5696)[_0xb86d('0x13')](_0xb86d('0x2b'),NOW)['where'](_0xb86d('0x2c'),selectNotIn(_0x199e7e,_0x6efc27,_0x4a0def,'cm_hopper',['\x22always\x22','\x22onlyIfOpen\x22']))[_0xb86d('0x13')](_0xb86d('0x2c'),selectNotIn(_0x199e7e,_0x6efc27,_0x4a0def,_0xb86d('0x1e'),['\x22always\x22'])))[_0xb86d('0x2d')]();}function insertCmHopperBlack(_0x438e0d,_0x534d1d,_0x57ca23,_0x5961ff){var _0x52f189=[_0xb86d('0x17'),'cm_contacts.id','cm_contacts.ListId',_0x534d1d+'.'+_0x5961ff,_0xb86d('0x1a'),_0xb86d('0x2e')];return squel[_0xb86d('0x1d')]()[_0xb86d('0x2f')](_0xb86d('0x30'))['fromQuery']([_0xb86d('0x10'),_0xb86d('0x31'),_0xb86d('0x32'),_0x5961ff,'createdAt',_0xb86d('0x33')],squel[_0xb86d('0x25')]()[_0xb86d('0x26')](_0x52f189)[_0xb86d('0x11')](_0x534d1d)[_0xb86d('0x16')](_0xb86d('0x27'),null,'cm_contacts.ListId\x20=\x20'+_0x534d1d+'.CmListId')['join'](_0x57ca23,null,_0x57ca23+'.id\x20=\x20'+_0x534d1d+'.'+_0x5961ff)[_0xb86d('0x13')](_0x534d1d+'.CmListId\x20=\x20?',_0x438e0d)[_0xb86d('0x13')](_0xb86d('0x2b'),NOW)[_0xb86d('0x13')](_0xb86d('0x2c'),squel[_0xb86d('0x25')]()[_0xb86d('0xf')](_0xb86d('0x10'))[_0xb86d('0x11')](_0xb86d('0x30'))[_0xb86d('0x13')](_0xb86d('0x34'),_0x438e0d)[_0xb86d('0x13')](_0x5961ff+'\x20=\x20?',_0x534d1d+'.'+_0x5961ff)))[_0xb86d('0x2d')]();}function insertCmContact(_0x243f55,_0x4dc0f3,_0x262ecc,_0x5317c5){var _0x8c2875=_[_0xb86d('0x35')](_[_0xb86d('0x36')](_0x5317c5),[_0xb86d('0x32'),'CompanyId',_0xb86d('0x21'),'updatedAt']);return squel[_0xb86d('0x1d')]()[_0xb86d('0x2f')]('cm_contacts')[_0xb86d('0x1f')](_0x8c2875,squel[_0xb86d('0x25')]()[_0xb86d('0x26')](_0x8c2875)[_0xb86d('0x11')](_0x4dc0f3)[_0xb86d('0x13')]('('+_0x262ecc[_0xb86d('0x16')](',')+_0xb86d('0x37'),squel['select']()[_0xb86d('0x26')](_0x262ecc)[_0xb86d('0x11')]('cm_contacts')['where'](_0xb86d('0x34'),_0x243f55)['where']('deletedAt\x20IS\x20NULL'))[_0xb86d('0x13')](_0xb86d('0x38'),squel[_0xb86d('0x25')]()[_0xb86d('0xf')](_0xb86d('0x39'),_0xb86d('0x3a'))[_0xb86d('0x11')](_0x4dc0f3)['group'](_0x262ecc['join'](','))))['toString']();}function handleStop(){logger[_0xb86d('0x3b')](_0xb86d('0x3c'));stopped=!![];}function handleUncaughtException(_0x1e94fc){logger['error'](_0x1e94fc['message']);process[_0xb86d('0x3d')](0x1);}function handleError(_0x2007ef,_0x11086c){stats[_0xb86d('0x3e')][_0xb86d('0x3f')]({'name':_0x11086c[_0xb86d('0x40')],'message':_0x11086c['message'],'row':_0x2007ef});}function handleQuery(_0x4a356e){logger[_0xb86d('0x3b')](_0x4a356e);return db['sequelize']['query'](_0x4a356e)[_0xb86d('0x41')](function(_0x211cf1){results['push'](_0x211cf1);})[_0xb86d('0x42')](function(_0x3f191a){logger[_0xb86d('0x43')](_0x3f191a[_0xb86d('0x44')]);});}function main(_0x49a40f,_0x423f24,_0x445377,_0x5a07ae){logger[_0xb86d('0x3b')](_0xb86d('0x45'),_0x49a40f,JSON[_0xb86d('0x46')](_0x423f24));process[_0xb86d('0x47')]('start');var _0x3fbfae=_0x423f24[_0xb86d('0x48')];var _0x1ccb59=_0x423f24['socket_timestamp'];var _0x261428=path[_0xb86d('0x16')](config[_0xb86d('0x49')],_0xb86d('0x4a'),_0x1ccb59+_0xb86d('0x4b'));var _0x3fccdc=_[_0xb86d('0x36')](_0x3fbfae)[_0xb86d('0x16')]();logger[_0xb86d('0x3b')](_0xb86d('0x4c'),_0x3fccdc);fs['writeFileSync'](_0x261428,_0x3fccdc+'\x0a');Papa[_0xb86d('0x4d')](fs[_0xb86d('0x4e')](_0x49a40f),{'header':!![],'skipEmptyLines':!![],'step':function(_0x551b5b,_0xf6c8ca){try{for(var _0x508777=0x0,_0x475bf4=[];_0x508777<_0x551b5b[_0xb86d('0x4f')]['length'];_0x508777++){stats[_0xb86d('0x50')]+=0x1;if(_0x551b5b['errors'][_0x508777]){handleError(_0x551b5b[_0xb86d('0x4f')][_0x508777],_0x551b5b[_0xb86d('0x3e')][_0x508777]);}else{var _0x109b9f=[];for(var _0x51ef16 in _0x3fbfae){if(_0x3fbfae[_0xb86d('0x51')](_0x51ef16)){if(_0x551b5b[_0xb86d('0x4f')][_0x508777][_0x3fbfae[_0x51ef16]]){var _0xad6542=_[_0xb86d('0x52')](_0x551b5b[_0xb86d('0x4f')][_0x508777][_0x3fbfae[_0x51ef16]][_0xb86d('0x53')](/"/g,'\x27'));switch(_0x51ef16){case _0xb86d('0x20'):var _0x314e58=moment(_0xad6542,'YYYY-MM-DD\x20HH:mm:ss',!![]);if(_0x314e58[_0xb86d('0x54')]()){_0x475bf4[_0xb86d('0x3f')]('\x22'+_0xad6542+'\x22');}else{_0x109b9f[_0xb86d('0x3f')](_0xb86d('0x55'));}break;case _0xb86d('0x22'):var _0x5c294f=parseInt(_0xad6542);_0xad6542=_[_0xb86d('0x56')](_0x5c294f)||_0x5c294f<0x0||_0x5c294f>0x4?_0x5a07ae?0x3:0x2:_0x5c294f;_0x475bf4[_0xb86d('0x3f')]('\x22'+_0xad6542+'\x22');break;case'UserId':var _0x2a8037=parseInt(_0xad6542);if(_[_0xb86d('0x57')](_0x2a8037)&&_[_0xb86d('0x58')](_0x445377,_0x2a8037)){_0x475bf4[_0xb86d('0x3f')]('\x22'+_0x2a8037+'\x22');}else{_0x109b9f[_0xb86d('0x3f')](_0xb86d('0x59'));}break;case _0xb86d('0x5a'):if(isEmail(_0xad6542)){_0x475bf4['push']('\x22'+_0xad6542+'\x22');}else{_0x109b9f['push']('email\x20wrong\x20format');}break;case'dateOfBirth':var _0x479e2d=moment(_0xad6542,_0xb86d('0x5b'),!![]);if(_0x479e2d[_0xb86d('0x54')]()){_0x475bf4[_0xb86d('0x3f')]('\x22'+_0xad6542+'\x22');}else{_0x109b9f[_0xb86d('0x3f')](_0xb86d('0x5c'));}break;default:_0x475bf4[_0xb86d('0x3f')]('\x22'+_0xad6542+'\x22');}}else{switch(_0x51ef16){case'firstName':case _0xb86d('0x10'):_0x109b9f['push'](_0x51ef16+_0xb86d('0x5d'));break;default:_0x475bf4[_0xb86d('0x3f')]('\x22\x22');}}}}if(_0x109b9f['length']){handleError(_0x551b5b[_0xb86d('0x4f')][_0x508777],{'code':_0xb86d('0x5e'),'message':_0x109b9f[_0xb86d('0x16')]()});}else{fs[_0xb86d('0x5f')](_0x261428,_0x475bf4[_0xb86d('0x16')]()+'\x0a');}_0x475bf4=[];}if(!(stats[_0xb86d('0x50')]%0xc8)){socket[_0xb86d('0x60')](_0xb86d('0x61')+_0x1ccb59,stats);stats[_0xb86d('0x3e')]=[];}}if(stopped){logger[_0xb86d('0x3b')](_0xb86d('0x62'));_0xf6c8ca[_0xb86d('0x63')]();}}catch(_0x49c933){handleError(_0x551b5b[_0xb86d('0x4f')][_0x508777],{'code':'SystemError','message':_0x49c933[_0xb86d('0x44')]});logger[_0xb86d('0x43')](_0xb86d('0x64'),_0x49c933['message']);}},'complete':function(){try{var _0x2f97a3=[];var _0x2b6944='cm_contacts';if(_0x423f24[_0xb86d('0x65')]&&_0x423f24[_0xb86d('0x65')][_0xb86d('0x66')]){_0x2b6944=_0xb86d('0x67')+_0x1ccb59;_0x2f97a3[_0xb86d('0x3f')](_0xb86d('0x68')+_0x2b6944+_0xb86d('0x69'));}var _0x4b6cfa=util['format']('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',_0x261428,_0x2b6944,_0x3fccdc,_0x423f24[_0xb86d('0x32')],_0x423f24[_0xb86d('0x6a')]||null,NOW,NOW);if(_[_0xb86d('0x6b')](_0x3fbfae['scheduledat'])){_0x4b6cfa+=_0xb86d('0x6c');}_0x2f97a3['push'](_0x4b6cfa);if(_0x423f24[_0xb86d('0x65')]&&_0x423f24[_0xb86d('0x65')][_0xb86d('0x66')]){_0x2f97a3[_0xb86d('0x3f')](insertCmContact(_0x423f24['ListId'],_0x2b6944,_0x423f24[_0xb86d('0x65')],_0x3fbfae));_0x2f97a3[_0xb86d('0x3f')]('DROP\x20TABLE\x20'+_0x2b6944+';');}_0x2f97a3['push'](insertCmHopper(_0x423f24[_0xb86d('0x32')],_0xb86d('0x6d'),_0xb86d('0x6e'),_0xb86d('0x6f'),_0x5a07ae));_0x2f97a3[_0xb86d('0x3f')](insertCmHopperBlack(_0x423f24[_0xb86d('0x32')],_0xb86d('0x70'),_0xb86d('0x6e'),_0xb86d('0x6f')));_0x2f97a3[_0xb86d('0x3f')](insertCmHopper(_0x423f24[_0xb86d('0x32')],_0xb86d('0x71'),'campaigns','CampaignId',_0x5a07ae));_0x2f97a3[_0xb86d('0x3f')](insertCmHopperBlack(_0x423f24['ListId'],_0xb86d('0x72'),_0xb86d('0x73'),_0xb86d('0x74')));BPromise[_0xb86d('0x75')](_0x2f97a3,handleQuery)[_0xb86d('0x76')](function(_0x352c6c){stats[_0xb86d('0x77')]=!![];stats[_0xb86d('0x78')]=_0x423f24[_0xb86d('0x65')]&&_0x423f24[_0xb86d('0x65')][_0xb86d('0x66')]?results[0x2][_0xb86d('0x78')]:results[0x0][_0xb86d('0x78')];socket[_0xb86d('0x60')](_0xb86d('0x61')+_0x1ccb59,stats);fs[_0xb86d('0x79')](_0x49a40f);fs[_0xb86d('0x79')](_0x261428);process['exit'](0x0);})[_0xb86d('0x42')](function(_0xab3586){logger[_0xb86d('0x43')](_0xab3586[_0xb86d('0x44')]);process[_0xb86d('0x3d')](0x1);});}catch(_0x49065b){logger[_0xb86d('0x43')](_0xb86d('0x7a'),_0x49065b[_0xb86d('0x44')]);process[_0xb86d('0x3d')](0x1);}},'error':function(_0x9e2f30,_0x243c4b,_0x38d4ca,_0xb47190){throw new Error(_0xb47190);}});}function validate(){if(process[_0xb86d('0x7b')]&&process[_0xb86d('0x7b')][_0xb86d('0x66')]<0x4){throw new Error(_0xb86d('0x7c'));}var _0x36f097=path[_0xb86d('0x16')](config['root'],'server/files/tmp',process['argv'][0x2]);if(!fs[_0xb86d('0x7d')](_0x36f097)){throw new Error(_0xb86d('0x7e'));}var _0x2b600a={};try{_0x2b600a=JSON[_0xb86d('0x4d')](process[_0xb86d('0x7b')][0x3]);if(!_0x2b600a[_0xb86d('0x48')]){throw new Error(_0xb86d('0x7f'));}if(!_0x2b600a['binding'][_0xb86d('0x10')]){throw new Error(_0xb86d('0x80'));}if(!_0x2b600a['binding']['firstName']){throw new Error(_0xb86d('0x81'));}var _0x289af9=0x0;if(_0x2b600a[_0xb86d('0x48')][_0xb86d('0x23')]){_0x289af9=0x1;}if(!_0x2b600a['ListId']){throw new Error(_0xb86d('0x82'));}}catch(_0x54c7e8){throw new Error(_0xb86d('0x83'));}var _0x257687=[];try{_0x257687=_['map'](JSON[_0xb86d('0x4d')](process['argv'][0x4]),'id');}catch(_0x109a41){logger[_0xb86d('0x3b')](_0xb86d('0x84'));}main(_0x36f097,_0x2b600a,_0x257687,_0x289af9);}validate();process['on']('SIGINT',handleStop);process['on'](_0xb86d('0x85'),handleUncaughtException);
\ No newline at end of file
+var _0x60eb=['abort','duplicates','cm_contacts_','\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','isNil',',\x20scheduledAt\x20=\x20NOW()','DROP\x20TABLE\x20','voice_queues','VoiceQueueId','voice_queues_has_cm_blacklists','campaigns_has_cm_lists','CampaignId','campaigns_has_cm_blacklists','each','then','affectedRows','unlink','complete','argv','existsSync','file\x20doesn\x27t\x20exists','firstName\x20is\x20mandatory','ListId\x20is\x20mandatory','body\x20id\x20mandatory','map','No\x20agent\x20available','SIGINT','uncaughtException','lodash','papaparse','util','bluebird','squel','ioredis','../../../mysqldb','../../../config/environment','../../../config/logger','import','redis','defaults','localhost','format','YYYY-MM-DD\x20HH:mm:ss','test','field','phone','from','join','.id\x20=\x20','where','\x20=\x20','cm_contacts.phone','cm_contacts.id','cm_contacts.ListId','cm_contacts.createdAt','cm_contacts.priority','insert','into','cm_hopper','fromQuery','scheduledat','ListId','createdAt','UserId','select','fields','cm_contacts','cm_contacts.ListId\x20=\x20','.CmListId','.CmListId\x20=\x20?','cm_contacts.createdAt\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','\x22always\x22','toString','cm_contacts.updatedAt','cm_hopper_black','ContactId','updatedAt','ListId\x20=\x20?','\x20=\x20?','concat','keys','CompanyId',')\x20NOT\x20IN\x20?','deletedAt\x20IS\x20NULL','Received\x20SIGINT','error','exit','errors','push','code','message','info','spread','catch','stringify','send','start','binding','socket_timestamp','root','server/files/tmp','.csv','writeFileSync','parse','data','rows','hasOwnProperty','trim','isValid','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','priority','isNumber','agent\x20not\x20exists','email\x20wrong\x20format','dateOfBirth','YYYY-MM-DD','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','firstName','\x20not\x20specified','length','SystemRow','appendFileSync','emit','contact:import:','Abort\x20parser'];(function(_0x218dd4,_0x3f8280){var _0x43d7e0=function(_0x329bd4){while(--_0x329bd4){_0x218dd4['push'](_0x218dd4['shift']());}};_0x43d7e0(++_0x3f8280);}(_0x60eb,0x19a));var _0xb60e=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x60eb[_0x122ef9];return _0x42fba0;};'use strict';var fs=require('fs');var path=require('path');var _=require(_0xb60e('0x0'));var Papa=require(_0xb60e('0x1'));var util=require(_0xb60e('0x2'));var BPromise=require(_0xb60e('0x3'));var moment=require('moment');var squel=require(_0xb60e('0x4'));var Redis=require(_0xb60e('0x5'));var db=require(_0xb60e('0x6'))['db'];var config=require(_0xb60e('0x7'));var logger=require(_0xb60e('0x8'))(_0xb60e('0x9'));config[_0xb60e('0xa')]=_[_0xb60e('0xb')](config[_0xb60e('0xa')],{'host':_0xb60e('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var stopped=![];var NOW=moment()[_0xb60e('0xd')](_0xb60e('0xe'));function isEmail(_0x475ff9){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))*$/[_0xb60e('0xf')](_0x475ff9);}function selectNotIn(_0xd01508,_0x5aa67b,_0xbf96c2,_0x1f2fe9,_0x5d1d72){return squel['select']()[_0xb60e('0x10')](_0xb60e('0x11'))[_0xb60e('0x12')](_0x1f2fe9)[_0xb60e('0x13')](_0x5aa67b,null,_0x5aa67b+_0xb60e('0x14')+_0x1f2fe9+'.'+_0xbf96c2)[_0xb60e('0x15')](_0x1f2fe9+'.'+_0xbf96c2+_0xb60e('0x16')+_0xd01508+'.'+_0xbf96c2)[_0xb60e('0x15')](_0x5aa67b+'.dialCheckDuplicateType\x20IN\x20('+_0x5d1d72['join']()+')');}function insertCmHopper(_0x2a63fc,_0x54c82c,_0x365f3b,_0x3f7428,_0x59b248){var _0x3e72e0=[_0xb60e('0x17'),'cm_contacts.scheduledat',_0xb60e('0x18'),_0xb60e('0x19'),_0x54c82c+'.'+_0x3f7428,_0xb60e('0x1a'),'cm_contacts.updatedAt',_0xb60e('0x1b'),'cm_contacts.UserId','\x22'+_0x59b248+'\x22'];return squel[_0xb60e('0x1c')]()[_0xb60e('0x1d')](_0xb60e('0x1e'))[_0xb60e('0x1f')]([_0xb60e('0x11'),_0xb60e('0x20'),'ContactId',_0xb60e('0x21'),_0x3f7428,_0xb60e('0x22'),'updatedAt','priority',_0xb60e('0x23'),'recallme'],squel[_0xb60e('0x24')]()[_0xb60e('0x25')](_0x3e72e0)[_0xb60e('0x12')](_0x54c82c)['join'](_0xb60e('0x26'),null,_0xb60e('0x27')+_0x54c82c+_0xb60e('0x28'))[_0xb60e('0x13')](_0x365f3b,null,_0x365f3b+_0xb60e('0x14')+_0x54c82c+'.'+_0x3f7428)[_0xb60e('0x15')](_0x54c82c+_0xb60e('0x29'),_0x2a63fc)[_0xb60e('0x15')](_0xb60e('0x2a'),NOW)['where'](_0xb60e('0x2b'),selectNotIn(_0x54c82c,_0x365f3b,_0x3f7428,_0xb60e('0x1e'),[_0xb60e('0x2c'),'\x22onlyIfOpen\x22']))[_0xb60e('0x15')](_0xb60e('0x2b'),selectNotIn(_0x54c82c,_0x365f3b,_0x3f7428,_0xb60e('0x1e'),[_0xb60e('0x2c')])))[_0xb60e('0x2d')]();}function insertCmHopperBlack(_0x10c22b,_0x28a676,_0x382892,_0x23a2f0){var _0x3243b0=['cm_contacts.phone',_0xb60e('0x18'),'cm_contacts.ListId',_0x28a676+'.'+_0x23a2f0,_0xb60e('0x1a'),_0xb60e('0x2e')];return squel[_0xb60e('0x1c')]()['into'](_0xb60e('0x2f'))['fromQuery']([_0xb60e('0x11'),_0xb60e('0x30'),'ListId',_0x23a2f0,_0xb60e('0x22'),_0xb60e('0x31')],squel['select']()[_0xb60e('0x25')](_0x3243b0)['from'](_0x28a676)[_0xb60e('0x13')](_0xb60e('0x26'),null,'cm_contacts.ListId\x20=\x20'+_0x28a676+_0xb60e('0x28'))['join'](_0x382892,null,_0x382892+'.id\x20=\x20'+_0x28a676+'.'+_0x23a2f0)[_0xb60e('0x15')](_0x28a676+_0xb60e('0x29'),_0x10c22b)[_0xb60e('0x15')](_0xb60e('0x2a'),NOW)[_0xb60e('0x15')](_0xb60e('0x2b'),squel['select']()[_0xb60e('0x10')](_0xb60e('0x11'))['from']('cm_hopper_black')[_0xb60e('0x15')](_0xb60e('0x32'),_0x10c22b)['where'](_0x23a2f0+_0xb60e('0x33'),_0x28a676+'.'+_0x23a2f0)))['toString']();}function insertCmContact(_0x397aff,_0x48eac9,_0xe21ede,_0x544df3){var _0x46c105=_[_0xb60e('0x34')](_[_0xb60e('0x35')](_0x544df3),[_0xb60e('0x21'),_0xb60e('0x36'),'createdAt','updatedAt']);return squel['insert']()[_0xb60e('0x1d')](_0xb60e('0x26'))['fromQuery'](_0x46c105,squel[_0xb60e('0x24')]()['fields'](_0x46c105)[_0xb60e('0x12')](_0x48eac9)[_0xb60e('0x15')]('('+_0xe21ede[_0xb60e('0x13')](',')+_0xb60e('0x37'),squel[_0xb60e('0x24')]()['fields'](_0xe21ede)[_0xb60e('0x12')]('cm_contacts')[_0xb60e('0x15')]('ListId\x20=\x20?',_0x397aff)[_0xb60e('0x15')](_0xb60e('0x38')))[_0xb60e('0x15')]('id\x20IN\x20?',squel[_0xb60e('0x24')]()[_0xb60e('0x10')]('MIN(id)','min_id')[_0xb60e('0x12')](_0x48eac9)['group'](_0xe21ede[_0xb60e('0x13')](','))))[_0xb60e('0x2d')]();}function handleStop(){logger['info'](_0xb60e('0x39'));stopped=!![];}function handleUncaughtException(_0x4535f1){logger[_0xb60e('0x3a')](_0x4535f1['message']);process[_0xb60e('0x3b')](0x1);}function handleError(_0x9f89cb,_0x4f71b6){stats[_0xb60e('0x3c')][_0xb60e('0x3d')]({'name':_0x4f71b6[_0xb60e('0x3e')],'message':_0x4f71b6[_0xb60e('0x3f')],'row':_0x9f89cb});}function handleQuery(_0x30a867){logger[_0xb60e('0x40')](_0x30a867);return db['sequelize']['query'](_0x30a867)[_0xb60e('0x41')](function(_0xb88431){results['push'](_0xb88431);})[_0xb60e('0x42')](function(_0x335673){logger[_0xb60e('0x3a')](_0x335673[_0xb60e('0x3f')]);});}function main(_0x583963,_0x46ff49,_0x33b580,_0x43f05c){logger[_0xb60e('0x40')]('main',_0x583963,JSON[_0xb60e('0x43')](_0x46ff49));process[_0xb60e('0x44')](_0xb60e('0x45'));var _0x9225b=_0x46ff49[_0xb60e('0x46')];var _0x31b84e=_0x46ff49[_0xb60e('0x47')];var _0x432028=path['join'](config[_0xb60e('0x48')],_0xb60e('0x49'),_0x31b84e+_0xb60e('0x4a'));var _0x5a0d1a=_[_0xb60e('0x35')](_0x9225b)[_0xb60e('0x13')]();logger[_0xb60e('0x40')]('header',_0x5a0d1a);fs[_0xb60e('0x4b')](_0x432028,_0x5a0d1a+'\x0a');Papa[_0xb60e('0x4c')](fs['createReadStream'](_0x583963),{'header':!![],'skipEmptyLines':!![],'step':function(_0x40ffd1,_0x1196de){try{for(var _0x194e61=0x0,_0xb330d3=[];_0x194e61<_0x40ffd1[_0xb60e('0x4d')]['length'];_0x194e61++){stats[_0xb60e('0x4e')]+=0x1;if(_0x40ffd1[_0xb60e('0x3c')][_0x194e61]){handleError(_0x40ffd1[_0xb60e('0x4d')][_0x194e61],_0x40ffd1['errors'][_0x194e61]);}else{var _0x1c451e=[];for(var _0x329448 in _0x9225b){if(_0x9225b[_0xb60e('0x4f')](_0x329448)){if(_0x40ffd1['data'][_0x194e61][_0x9225b[_0x329448]]){var _0x12c367=_[_0xb60e('0x50')](_0x40ffd1[_0xb60e('0x4d')][_0x194e61][_0x9225b[_0x329448]]['replace'](/"/g,'\x27'));switch(_0x329448){case _0xb60e('0x20'):var _0x52e6d1=moment(_0x12c367,_0xb60e('0xe'),!![]);if(_0x52e6d1[_0xb60e('0x51')]()){_0xb330d3[_0xb60e('0x3d')]('\x22'+_0x12c367+'\x22');}else{_0x1c451e[_0xb60e('0x3d')](_0xb60e('0x52'));}break;case _0xb60e('0x53'):var _0xda910b=parseInt(_0x12c367);_0x12c367=_['isNaN'](_0xda910b)||_0xda910b<0x0||_0xda910b>0x4?_0x43f05c?0x3:0x2:_0xda910b;_0xb330d3[_0xb60e('0x3d')]('\x22'+_0x12c367+'\x22');break;case'UserId':var _0x5835d1=parseInt(_0x12c367);if(_[_0xb60e('0x54')](_0x5835d1)&&_['includes'](_0x33b580,_0x5835d1)){_0xb330d3['push']('\x22'+_0x5835d1+'\x22');}else{_0x1c451e['push'](_0xb60e('0x55'));}break;case'email':if(isEmail(_0x12c367)){_0xb330d3[_0xb60e('0x3d')]('\x22'+_0x12c367+'\x22');}else{_0x1c451e[_0xb60e('0x3d')](_0xb60e('0x56'));}break;case _0xb60e('0x57'):var _0x4edd3f=moment(_0x12c367,_0xb60e('0x58'),!![]);if(_0x4edd3f[_0xb60e('0x51')]()){_0xb330d3[_0xb60e('0x3d')]('\x22'+_0x12c367+'\x22');}else{_0x1c451e[_0xb60e('0x3d')](_0xb60e('0x59'));}break;default:_0xb330d3[_0xb60e('0x3d')]('\x22'+_0x12c367+'\x22');}}else{switch(_0x329448){case _0xb60e('0x5a'):case _0xb60e('0x11'):_0x1c451e[_0xb60e('0x3d')](_0x329448+_0xb60e('0x5b'));break;default:_0xb330d3['push']('\x22\x22');}}}}if(_0x1c451e[_0xb60e('0x5c')]){handleError(_0x40ffd1[_0xb60e('0x4d')][_0x194e61],{'code':_0xb60e('0x5d'),'message':_0x1c451e[_0xb60e('0x13')]()});}else{fs[_0xb60e('0x5e')](_0x432028,_0xb330d3['join']()+'\x0a');}_0xb330d3=[];}if(!(stats['rows']%0xc8)){socket[_0xb60e('0x5f')](_0xb60e('0x60')+_0x31b84e,stats);stats['errors']=[];}}if(stopped){logger[_0xb60e('0x40')](_0xb60e('0x61'));_0x1196de[_0xb60e('0x62')]();}}catch(_0x31632b){handleError(_0x40ffd1[_0xb60e('0x4d')][_0x194e61],{'code':'SystemError','message':_0x31632b[_0xb60e('0x3f')]});logger[_0xb60e('0x3a')]('step',_0x31632b[_0xb60e('0x3f')]);}},'complete':function(){try{var _0x1bf7ee=[];var _0xcb6610='cm_contacts';if(_0x46ff49['duplicates']&&_0x46ff49[_0xb60e('0x63')][_0xb60e('0x5c')]){_0xcb6610=_0xb60e('0x64')+_0x31b84e;_0x1bf7ee['push']('CREATE\x20TABLE\x20'+_0xcb6610+_0xb60e('0x65'));}var _0x46e484=util[_0xb60e('0xd')](_0xb60e('0x66'),_0x432028,_0xcb6610,_0x5a0d1a,_0x46ff49['ListId'],_0x46ff49[_0xb60e('0x36')]||null,NOW,NOW);if(_[_0xb60e('0x67')](_0x9225b[_0xb60e('0x20')])){_0x46e484+=_0xb60e('0x68');}_0x1bf7ee[_0xb60e('0x3d')](_0x46e484);if(_0x46ff49[_0xb60e('0x63')]&&_0x46ff49[_0xb60e('0x63')][_0xb60e('0x5c')]){_0x1bf7ee[_0xb60e('0x3d')](insertCmContact(_0x46ff49[_0xb60e('0x21')],_0xcb6610,_0x46ff49[_0xb60e('0x63')],_0x9225b));_0x1bf7ee['push'](_0xb60e('0x69')+_0xcb6610+';');}_0x1bf7ee[_0xb60e('0x3d')](insertCmHopper(_0x46ff49[_0xb60e('0x21')],'voice_queues_has_cm_lists',_0xb60e('0x6a'),_0xb60e('0x6b'),_0x43f05c));_0x1bf7ee[_0xb60e('0x3d')](insertCmHopperBlack(_0x46ff49[_0xb60e('0x21')],_0xb60e('0x6c'),_0xb60e('0x6a'),_0xb60e('0x6b')));_0x1bf7ee[_0xb60e('0x3d')](insertCmHopper(_0x46ff49[_0xb60e('0x21')],_0xb60e('0x6d'),'campaigns',_0xb60e('0x6e'),_0x43f05c));_0x1bf7ee[_0xb60e('0x3d')](insertCmHopperBlack(_0x46ff49[_0xb60e('0x21')],_0xb60e('0x6f'),'campaigns',_0xb60e('0x6e')));BPromise[_0xb60e('0x70')](_0x1bf7ee,handleQuery)[_0xb60e('0x71')](function(_0x2dbc8d){stats['finish']=!![];stats[_0xb60e('0x72')]=_0x46ff49['duplicates']&&_0x46ff49[_0xb60e('0x63')][_0xb60e('0x5c')]?results[0x2][_0xb60e('0x72')]:results[0x0][_0xb60e('0x72')];socket[_0xb60e('0x5f')]('contact:import:'+_0x31b84e,stats);fs['unlink'](_0x583963);fs[_0xb60e('0x73')](_0x432028);process[_0xb60e('0x3b')](0x0);})[_0xb60e('0x42')](function(_0x2b75e9){logger[_0xb60e('0x3a')](_0x2b75e9[_0xb60e('0x3f')]);process[_0xb60e('0x3b')](0x1);});}catch(_0x13172d){logger[_0xb60e('0x3a')](_0xb60e('0x74'),_0x13172d[_0xb60e('0x3f')]);process['exit'](0x1);}},'error':function(_0x56c7c3,_0xf130da,_0x59012f,_0x376ddb){throw new Error(_0x376ddb);}});}function validate(){if(process['argv']&&process[_0xb60e('0x75')][_0xb60e('0x5c')]<0x4){throw new Error('arguments\x20<filename>\x20<parameters>\x20<agents>');}var _0x4b12fb=path[_0xb60e('0x13')](config[_0xb60e('0x48')],_0xb60e('0x49'),process[_0xb60e('0x75')][0x2]);if(!fs[_0xb60e('0x76')](_0x4b12fb)){throw new Error(_0xb60e('0x77'));}var _0x4edbd1={};try{_0x4edbd1=JSON[_0xb60e('0x4c')](process[_0xb60e('0x75')][0x3]);if(!_0x4edbd1[_0xb60e('0x46')]){throw new Error('binding\x20doesn\x27t\x20exists');}if(!_0x4edbd1['binding'][_0xb60e('0x11')]){throw new Error('phone\x20is\x20mandatory');}if(!_0x4edbd1[_0xb60e('0x46')][_0xb60e('0x5a')]){throw new Error(_0xb60e('0x78'));}var _0x410726=0x0;if(_0x4edbd1[_0xb60e('0x46')][_0xb60e('0x23')]){_0x410726=0x1;}if(!_0x4edbd1[_0xb60e('0x21')]){throw new Error(_0xb60e('0x79'));}}catch(_0x2c88ff){throw new Error(_0xb60e('0x7a'));}var _0x250f49=[];try{_0x250f49=_[_0xb60e('0x7b')](JSON[_0xb60e('0x4c')](process[_0xb60e('0x75')][0x4]),'id');}catch(_0x1634a7){logger[_0xb60e('0x40')](_0xb60e('0x7c'));}main(_0x4b12fb,_0x4edbd1,_0x250f49,_0x410726);}validate();process['on'](_0xb60e('0x7d'),handleStop);process['on'](_0xb60e('0x7e'),handleUncaughtException);
\ No newline at end of file
index 8d41a89..47d1996 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x848d=['Called\x20Number','Member\x20Name','membername','answertime','Complete\x20Time','endtime','Billable\x20Time','billableseconds','getSubjects','string','[xCALLY\x20Ticket]','toLowerCase','voice','push','queue','variable','outbound','Outbound\x20Call','destcalleridnum','***\x20Call\x20Info\x20***','Caller\x20Number','calleridnum','keyValue','Caller\x20Name','calleridname','Call\x20To','Queue','UniqueId','uniqueid','Date','***\x20Agent\x20Info\x20***','Agent\x20Name','destcalleridname','***\x20Time\x20Info\x20***','Agent\x20Ring','agentcalledAt','Agent\x20Connect','Agent\x20Complete','agentcompleteAt','Hold\x20Time','holdtime','Talk\x20Time','talktime'];(function(_0x1a047c,_0xe9b8de){var _0x4a8cbd=function(_0x48dab7){while(--_0x48dab7){_0x1a047c['push'](_0x1a047c['shift']());}};_0x4a8cbd(++_0xe9b8de);}(_0x848d,0x160));var _0xd848=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x848d[_0x3dd15e];return _0x231fd0;};'use strict';exports[_0xd848('0x0')]=function(_0x16d437,_0x370447){var _0x35a51f=[{'type':_0xd848('0x1'),'content':_0xd848('0x2'),'variableName':null}];switch(_0x16d437[_0xd848('0x3')]()){case _0xd848('0x4'):switch(_0x370447['toLowerCase']()){case'inbound':_0x35a51f[_0xd848('0x5')]({'type':'variable','content':'','variableName':_0xd848('0x6')});_0x35a51f['push']({'type':_0xd848('0x7'),'content':'','variableName':'calleridnum'});break;case _0xd848('0x8'):_0x35a51f[_0xd848('0x5')]({'type':_0xd848('0x1'),'content':_0xd848('0x9'),'variableName':null});_0x35a51f[_0xd848('0x5')]({'type':_0xd848('0x7'),'content':'','variableName':_0xd848('0xa')});break;}}return _0x35a51f;};exports['getDescriptions']=function(_0x3f5d0a,_0xa3a626){var _0x30f844=[];switch(_0x3f5d0a[_0xd848('0x3')]()){case _0xd848('0x4'):switch(_0xa3a626[_0xd848('0x3')]()){case'inbound':_0x30f844=[{'type':_0xd848('0x1'),'content':_0xd848('0xb'),'key':null,'keyType':null,'variableName':null},{'type':'keyValue','content':'','key':_0xd848('0xc'),'keyType':_0xd848('0x7'),'variableName':_0xd848('0xd')},{'type':_0xd848('0xe'),'content':'','key':_0xd848('0xf'),'keyType':'variable','variableName':_0xd848('0x10')},{'type':_0xd848('0xe'),'content':'','key':_0xd848('0x11'),'keyType':'variable','variableName':'destexten'},{'type':_0xd848('0xe'),'content':'','key':_0xd848('0x12'),'keyType':_0xd848('0x7'),'variableName':_0xd848('0x6')},{'type':_0xd848('0xe'),'content':'','key':_0xd848('0x13'),'keyType':_0xd848('0x7'),'variableName':_0xd848('0x14')},{'type':'keyValue','content':'','key':_0xd848('0x15'),'keyType':'variable','variableName':'agentcalledAt'},{'type':_0xd848('0x1'),'content':_0xd848('0x16'),'key':null,'keyType':null,'variableName':null},{'type':_0xd848('0xe'),'content':'','key':_0xd848('0x17'),'keyType':'variable','variableName':_0xd848('0x18')},{'type':_0xd848('0xe'),'content':'','key':'Agent\x20Number','keyType':_0xd848('0x7'),'variableName':_0xd848('0xa')},{'type':_0xd848('0x1'),'content':_0xd848('0x19'),'key':null,'keyType':null,'variableName':null},{'type':_0xd848('0xe'),'content':'','key':_0xd848('0x1a'),'keyType':'variable','variableName':_0xd848('0x1b')},{'type':_0xd848('0xe'),'content':'','key':_0xd848('0x1c'),'keyType':_0xd848('0x7'),'variableName':'agentconnectAt'},{'type':_0xd848('0xe'),'content':'','key':_0xd848('0x1d'),'keyType':_0xd848('0x7'),'variableName':_0xd848('0x1e')},{'type':_0xd848('0xe'),'content':'','key':_0xd848('0x1f'),'keyType':'variable','variableName':_0xd848('0x20')},{'type':_0xd848('0xe'),'content':'','key':_0xd848('0x21'),'keyType':_0xd848('0x7'),'variableName':_0xd848('0x22')}];break;case _0xd848('0x8'):_0x30f844=[{'type':'string','content':_0xd848('0xb'),'variableName':null},{'type':_0xd848('0xe'),'content':'','key':_0xd848('0x23'),'keyType':_0xd848('0x7'),'keyContent':'','variableName':_0xd848('0xa')},{'type':_0xd848('0xe'),'content':'','key':_0xd848('0x24'),'keyType':_0xd848('0x7'),'keyContent':'','variableName':_0xd848('0x25')},{'type':'keyValue','content':'','key':_0xd848('0x13'),'keyType':_0xd848('0x7'),'keyContent':'','variableName':'uniqueid'},{'type':_0xd848('0xe'),'content':'','key':_0xd848('0x15'),'keyType':_0xd848('0x7'),'keyContent':'','variableName':'starttime'},{'type':_0xd848('0x1'),'content':'***\x20Time\x20Info\x20***'},{'type':'keyValue','content':'','key':'Answer\x20Time','keyType':_0xd848('0x7'),'keyContent':'','variableName':_0xd848('0x26')},{'type':_0xd848('0xe'),'content':'','key':_0xd848('0x27'),'keyType':_0xd848('0x7'),'keyContent':'','variableName':_0xd848('0x28')},{'type':_0xd848('0xe'),'content':'','key':'Duration','keyType':_0xd848('0x7'),'keyContent':'','variableName':'duration'},{'type':'keyValue','content':'','key':_0xd848('0x29'),'keyType':_0xd848('0x7'),'keyContent':'','variableName':_0xd848('0x2a')}];break;}}return _0x30f844;};
\ No newline at end of file
+var _0x9cbd=['toLowerCase','voice','push','variable','queue','calleridnum','outbound','getDescriptions','***\x20Call\x20Info\x20***','keyValue','Caller\x20Name','calleridname','Call\x20To','destexten','Queue','UniqueId','uniqueid','Date','agentcalledAt','***\x20Agent\x20Info\x20***','Agent\x20Name','destcalleridname','destcalleridnum','Agent\x20Ring','agentconnectAt','Hold\x20Time','holdtime','Talk\x20Time','talktime','membername','starttime','***\x20Time\x20Info\x20***','answertime','Complete\x20Time','endtime','duration','Billable\x20Time','billableseconds','getSubjects','string'];(function(_0x27a125,_0x330c0e){var _0x36eac1=function(_0x49265f){while(--_0x49265f){_0x27a125['push'](_0x27a125['shift']());}};_0x36eac1(++_0x330c0e);}(_0x9cbd,0x116));var _0xd9cb=function(_0x3ba9de,_0x40381c){_0x3ba9de=_0x3ba9de-0x0;var _0x45c5ec=_0x9cbd[_0x3ba9de];return _0x45c5ec;};'use strict';exports[_0xd9cb('0x0')]=function(_0x1b17f0,_0x53bd97){var _0x34461f=[{'type':_0xd9cb('0x1'),'content':'[xCALLY\x20Ticket]','variableName':null}];switch(_0x1b17f0[_0xd9cb('0x2')]()){case _0xd9cb('0x3'):switch(_0x53bd97[_0xd9cb('0x2')]()){case'inbound':_0x34461f[_0xd9cb('0x4')]({'type':_0xd9cb('0x5'),'content':'','variableName':_0xd9cb('0x6')});_0x34461f[_0xd9cb('0x4')]({'type':_0xd9cb('0x5'),'content':'','variableName':_0xd9cb('0x7')});break;case _0xd9cb('0x8'):_0x34461f[_0xd9cb('0x4')]({'type':'string','content':'Outbound\x20Call','variableName':null});_0x34461f[_0xd9cb('0x4')]({'type':'variable','content':'','variableName':'destcalleridnum'});break;}}return _0x34461f;};exports[_0xd9cb('0x9')]=function(_0xa1685,_0x3b1c42){var _0x2f8dae=[];switch(_0xa1685[_0xd9cb('0x2')]()){case _0xd9cb('0x3'):switch(_0x3b1c42[_0xd9cb('0x2')]()){case'inbound':_0x2f8dae=[{'type':_0xd9cb('0x1'),'content':_0xd9cb('0xa'),'key':null,'keyType':null,'variableName':null},{'type':_0xd9cb('0xb'),'content':'','key':'Caller\x20Number','keyType':_0xd9cb('0x5'),'variableName':_0xd9cb('0x7')},{'type':_0xd9cb('0xb'),'content':'','key':_0xd9cb('0xc'),'keyType':'variable','variableName':_0xd9cb('0xd')},{'type':_0xd9cb('0xb'),'content':'','key':_0xd9cb('0xe'),'keyType':_0xd9cb('0x5'),'variableName':_0xd9cb('0xf')},{'type':_0xd9cb('0xb'),'content':'','key':_0xd9cb('0x10'),'keyType':'variable','variableName':_0xd9cb('0x6')},{'type':_0xd9cb('0xb'),'content':'','key':_0xd9cb('0x11'),'keyType':_0xd9cb('0x5'),'variableName':_0xd9cb('0x12')},{'type':_0xd9cb('0xb'),'content':'','key':_0xd9cb('0x13'),'keyType':_0xd9cb('0x5'),'variableName':_0xd9cb('0x14')},{'type':'string','content':_0xd9cb('0x15'),'key':null,'keyType':null,'variableName':null},{'type':_0xd9cb('0xb'),'content':'','key':_0xd9cb('0x16'),'keyType':_0xd9cb('0x5'),'variableName':_0xd9cb('0x17')},{'type':'keyValue','content':'','key':'Agent\x20Number','keyType':_0xd9cb('0x5'),'variableName':_0xd9cb('0x18')},{'type':'string','content':'***\x20Time\x20Info\x20***','key':null,'keyType':null,'variableName':null},{'type':'keyValue','content':'','key':_0xd9cb('0x19'),'keyType':_0xd9cb('0x5'),'variableName':_0xd9cb('0x14')},{'type':_0xd9cb('0xb'),'content':'','key':'Agent\x20Connect','keyType':'variable','variableName':_0xd9cb('0x1a')},{'type':'keyValue','content':'','key':'Agent\x20Complete','keyType':'variable','variableName':'agentcompleteAt'},{'type':'keyValue','content':'','key':_0xd9cb('0x1b'),'keyType':'variable','variableName':_0xd9cb('0x1c')},{'type':'keyValue','content':'','key':_0xd9cb('0x1d'),'keyType':'variable','variableName':_0xd9cb('0x1e')}];break;case _0xd9cb('0x8'):_0x2f8dae=[{'type':_0xd9cb('0x1'),'content':_0xd9cb('0xa'),'variableName':null},{'type':_0xd9cb('0xb'),'content':'','key':'Called\x20Number','keyType':_0xd9cb('0x5'),'keyContent':'','variableName':'destcalleridnum'},{'type':_0xd9cb('0xb'),'content':'','key':'Member\x20Name','keyType':'variable','keyContent':'','variableName':_0xd9cb('0x1f')},{'type':_0xd9cb('0xb'),'content':'','key':_0xd9cb('0x11'),'keyType':_0xd9cb('0x5'),'keyContent':'','variableName':'uniqueid'},{'type':_0xd9cb('0xb'),'content':'','key':'Date','keyType':'variable','keyContent':'','variableName':_0xd9cb('0x20')},{'type':_0xd9cb('0x1'),'content':_0xd9cb('0x21')},{'type':_0xd9cb('0xb'),'content':'','key':'Answer\x20Time','keyType':'variable','keyContent':'','variableName':_0xd9cb('0x22')},{'type':_0xd9cb('0xb'),'content':'','key':_0xd9cb('0x23'),'keyType':'variable','keyContent':'','variableName':_0xd9cb('0x24')},{'type':_0xd9cb('0xb'),'content':'','key':'Duration','keyType':_0xd9cb('0x5'),'keyContent':'','variableName':_0xd9cb('0x25')},{'type':'keyValue','content':'','key':_0xd9cb('0x26'),'keyType':_0xd9cb('0x5'),'keyContent':'','variableName':_0xd9cb('0x27')}];break;}}return _0x2f8dae;};
\ No newline at end of file
index 48e9b22..5d245cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1023=['update','info','error','tracked','query','clone','phone','fax','lodash','../../mysqldb','../../config/logger','openchannel-interactions','mail-interactions','fax-interactions','sms-interactions','chat-interactions','upperFirst','InteractionId','unknown','toLowerCase','[%s]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','toUpperCase','name','stringify','Interaction','findOne','then'];(function(_0x263613,_0xe5ed7f){var _0x35d9ae=function(_0x493cc1){while(--_0x493cc1){_0x263613['push'](_0x263613['shift']());}};_0x35d9ae(++_0xe5ed7f);}(_0x1023,0xc5));var _0x3102=function(_0x548936,_0xc9c1fd){_0x548936=_0x548936-0x0;var _0x2149f5=_0x1023[_0x548936];return _0x2149f5;};'use strict';var _=require(_0x3102('0x0'));var db=require(_0x3102('0x1'))['db'];var loggers={'openchannel':require(_0x3102('0x2'))(_0x3102('0x3')),'mail':require(_0x3102('0x2'))(_0x3102('0x4')),'fax':require(_0x3102('0x2'))(_0x3102('0x5')),'sms':require(_0x3102('0x2'))(_0x3102('0x6')),'chat':require('../../config/logger')(_0x3102('0x7')),'whatsapp':require(_0x3102('0x2'))('whatsapp-interactions')};function getInteractionId(_0x54d1cc,_0x256dc0,_0xc21569){if(_0x54d1cc&&_0x54d1cc[_[_0x3102('0x8')](_0xc21569)+'InteractionId']){return _0x54d1cc[_[_0x3102('0x8')](_0xc21569)+_0x3102('0x9')];}else if(_0x54d1cc&&_0x54d1cc['id']){return _0x54d1cc['id'];}else if(_0x256dc0&&_0x256dc0['id']){return _0x256dc0['id'];}else{return _0x3102('0xa');}}function log(_0x27c332,_0x5a741c,_0x2a84e5,_0x29bba6,_0x223160,_0x343d21){loggers[_0x223160[_0x3102('0xb')]()][_0x27c332](_0x3102('0xc'),_0x343d21[_0x3102('0xd')](),_0x5a741c?_0x5a741c['id']:null,_0x5a741c?_0x5a741c[_0x3102('0xe')]:null,_0x5a741c?_0x5a741c['role']:null,getInteractionId(_0x2a84e5,_0x29bba6,_0x223160),_0x2a84e5?JSON[_0x3102('0xf')](_0x2a84e5):'null');}function updateUser(_0x1370c1,_0x2ad284,_0x34a7ba,_0x10b1e0,_0x35e4b2){db[_['upperFirst'](_0x10b1e0)+_0x3102('0x10')][_0x3102('0x11')]({'where':{'id':getInteractionId(_0x2ad284,_0x34a7ba,_0x10b1e0)}})[_0x3102('0x12')](function(_0x513db9){if(_0x513db9){return _0x513db9[_0x3102('0x13')]({'UserId':_0x1370c1?_0x1370c1['id']:null});}})['then'](function(_0x65ae73){if(_0x65ae73){log(_0x3102('0x14'),_0x1370c1,_0x2ad284,_0x34a7ba,_0x10b1e0,_0x35e4b2);}})['catch'](function(){log(_0x3102('0x15'),_0x1370c1,_0x2ad284,_0x34a7ba,_0x10b1e0,_0x35e4b2);});}exports[_0x3102('0x16')]=function(_0x1c0985,_0x36b93a){return function(_0x43d2ea,_0x2fbd69,_0xf924f2){var _0x972a37=_0x43d2ea['user'];var _0x3c6779={};var _0x3d7de5=_0x43d2ea[_0x3102('0x17')];if(_0x3c6779){_0x3c6779=_[_0x3102('0x18')](_0x43d2ea['body']);_0x3c6779=_['omit'](_0x3c6779,['body','html',_0x3102('0x19'),_0x3102('0x1a'),'mobile']);}updateUser(_0x972a37,_0x3c6779,_0x3d7de5,_0x1c0985,_0x36b93a);_0xf924f2(null);};};
\ No newline at end of file
+var _0x2b07=['then','update','info','catch','error','tracked','query','body','omit','html','phone','fax','mobile','lodash','../../mysqldb','../../config/logger','openchannel-interactions','mail-interactions','fax-interactions','whatsapp-interactions','InteractionId','upperFirst','unknown','toLowerCase','[%s]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','toUpperCase','name','role','null','Interaction'];(function(_0x2cb122,_0x5684a0){var _0x21af56=function(_0x582643){while(--_0x582643){_0x2cb122['push'](_0x2cb122['shift']());}};_0x21af56(++_0x5684a0);}(_0x2b07,0x193));var _0x72b0=function(_0x3b16e1,_0x3bda3e){_0x3b16e1=_0x3b16e1-0x0;var _0x311d1b=_0x2b07[_0x3b16e1];return _0x311d1b;};'use strict';var _=require(_0x72b0('0x0'));var db=require(_0x72b0('0x1'))['db'];var loggers={'openchannel':require(_0x72b0('0x2'))(_0x72b0('0x3')),'mail':require(_0x72b0('0x2'))(_0x72b0('0x4')),'fax':require(_0x72b0('0x2'))(_0x72b0('0x5')),'sms':require(_0x72b0('0x2'))('sms-interactions'),'chat':require(_0x72b0('0x2'))('chat-interactions'),'whatsapp':require(_0x72b0('0x2'))(_0x72b0('0x6'))};function getInteractionId(_0x1f2fbd,_0x120382,_0x16f10d){if(_0x1f2fbd&&_0x1f2fbd[_['upperFirst'](_0x16f10d)+_0x72b0('0x7')]){return _0x1f2fbd[_[_0x72b0('0x8')](_0x16f10d)+'InteractionId'];}else if(_0x1f2fbd&&_0x1f2fbd['id']){return _0x1f2fbd['id'];}else if(_0x120382&&_0x120382['id']){return _0x120382['id'];}else{return _0x72b0('0x9');}}function log(_0x5a4ec8,_0x1d7853,_0x56bdbd,_0xb68044,_0x1fb5f1,_0x14ed76){loggers[_0x1fb5f1[_0x72b0('0xa')]()][_0x5a4ec8](_0x72b0('0xb'),_0x14ed76[_0x72b0('0xc')](),_0x1d7853?_0x1d7853['id']:null,_0x1d7853?_0x1d7853[_0x72b0('0xd')]:null,_0x1d7853?_0x1d7853[_0x72b0('0xe')]:null,getInteractionId(_0x56bdbd,_0xb68044,_0x1fb5f1),_0x56bdbd?JSON['stringify'](_0x56bdbd):_0x72b0('0xf'));}function updateUser(_0x16d31b,_0x29e0e7,_0x19068f,_0x30fb68,_0x36cf70){db[_[_0x72b0('0x8')](_0x30fb68)+_0x72b0('0x10')]['findOne']({'where':{'id':getInteractionId(_0x29e0e7,_0x19068f,_0x30fb68)}})[_0x72b0('0x11')](function(_0xc76be5){if(_0xc76be5){return _0xc76be5[_0x72b0('0x12')]({'UserId':_0x16d31b?_0x16d31b['id']:null});}})['then'](function(_0xc26141){if(_0xc26141){log(_0x72b0('0x13'),_0x16d31b,_0x29e0e7,_0x19068f,_0x30fb68,_0x36cf70);}})[_0x72b0('0x14')](function(){log(_0x72b0('0x15'),_0x16d31b,_0x29e0e7,_0x19068f,_0x30fb68,_0x36cf70);});}exports[_0x72b0('0x16')]=function(_0x475ced,_0x1c7b4c){return function(_0x10446b,_0x4017dc,_0x879a91){var _0x308939=_0x10446b['user'];var _0x5061b2={};var _0x4a78ac=_0x10446b[_0x72b0('0x17')];if(_0x5061b2){_0x5061b2=_['clone'](_0x10446b[_0x72b0('0x18')]);_0x5061b2=_[_0x72b0('0x19')](_0x5061b2,[_0x72b0('0x18'),_0x72b0('0x1a'),_0x72b0('0x1b'),_0x72b0('0x1c'),_0x72b0('0x1d')]);}updateUser(_0x308939,_0x5061b2,_0x4a78ac,_0x475ced,_0x1c7b4c);_0x879a91(null);};};
\ No newline at end of file
index 1c80209..5c8a2ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe8f5=['crypto','../../mysqldb','../../config/environment','license','split','createDecipher','format','update','utf8','final','parse','hasOwnProperty','use','License','findOne','then','count','Maximum\x20%s\x20limit\x20have\x20been\x20reached','catch','users','User','admin','user'];(function(_0x45c15a,_0x92f366){var _0x28cc0e=function(_0x21903b){while(--_0x21903b){_0x45c15a['push'](_0x45c15a['shift']());}};_0x28cc0e(++_0x92f366);}(_0xe8f5,0x159));var _0x5e8f=function(_0x2af4f0,_0x37ad3a){_0x2af4f0=_0x2af4f0-0x0;var _0x1e70c0=_0xe8f5[_0x2af4f0];return _0x1e70c0;};'use strict';var crypto=require(_0x5e8f('0x0'));var util=require('util');var compose=require('composable-middleware');var db=require(_0x5e8f('0x1'))['db'];var config=require(_0x5e8f('0x2'));function getValueFromLicense(_0x5aef8d,_0x55d7bc){if(_0x5aef8d&&_0x55d7bc){if(_0x55d7bc['data1']&&_0x55d7bc[_0x5e8f('0x3')]){var _0x3a2cf6=_0x55d7bc['data1'];var _0x536aee=_0x55d7bc[_0x5e8f('0x3')];var _0x24323b=_0x3a2cf6['split']('-')[0x4];var _0x17e15e=_0x3a2cf6[_0x5e8f('0x4')]('-')[0x0];var _0x227af5=crypto[_0x5e8f('0x5')]('aes-256-ctr',util[_0x5e8f('0x6')]('%s:%s:%s',_0x24323b,_0x3a2cf6,_0x17e15e));var _0x48fc3f=_0x227af5[_0x5e8f('0x7')](_0x536aee,'base64',_0x5e8f('0x8'));_0x48fc3f+=_0x227af5[_0x5e8f('0x9')](_0x5e8f('0x8'));var _0x123b92=JSON[_0x5e8f('0xa')](_0x48fc3f);return _0x123b92[_0x5e8f('0xb')](_0x5aef8d)?_0x123b92[_0x5aef8d]:null;}}return null;}function isLimit(_0x4d9895,_0x38d228,_0x1df274,_0x1fe743){var _0x25eee3=_0x38d228;return compose()[_0x5e8f('0xc')](function(_0x22b4b6,_0xf97529,_0x2aada8){return db[_0x5e8f('0xd')][_0x5e8f('0xe')]({'where':{'id':0x1},'raw':!![]})['then'](function(_0x48fde0){var _0x47b721=getValueFromLicense(_0x4d9895,_0x48fde0);return _0x47b721?_0x47b721:_0x25eee3;})[_0x5e8f('0xf')](function(_0x183389){_0x25eee3=_0x183389;return _0x1df274[_0x5e8f('0x10')](_0x1fe743);})[_0x5e8f('0xf')](function(_0x4c3f5b){if(_0x4c3f5b>=_0x25eee3){return _0xf97529['status'](0x193)['json']({'message':util['format'](_0x5e8f('0x11'),_0x4d9895)});}_0x2aada8();})[_0x5e8f('0x12')](function(_0x4f2e15){_0x2aada8(_0x4f2e15);});});}function isUserLimit(){return isLimit(_0x5e8f('0x13'),0x1,db[_0x5e8f('0x14')],{'where':{'$or':[{'role':_0x5e8f('0x15')},{'role':_0x5e8f('0x16')}]}});}exports['isUserLimit']=isUserLimit;
\ No newline at end of file
+var _0x99cc=['format','%s:%s:%s','update','base64','utf8','final','hasOwnProperty','use','License','findOne','then','count','Maximum\x20%s\x20limit\x20have\x20been\x20reached','catch','users','User','admin','user','isUserLimit','crypto','util','composable-middleware','../../mysqldb','../../config/environment','data1','license','split','aes-256-ctr'];(function(_0x956f97,_0x429ac1){var _0x43fc6a=function(_0x2e73be){while(--_0x2e73be){_0x956f97['push'](_0x956f97['shift']());}};_0x43fc6a(++_0x429ac1);}(_0x99cc,0xbb));var _0xc99c=function(_0x410bf6,_0x4ed5e3){_0x410bf6=_0x410bf6-0x0;var _0x2e0d44=_0x99cc[_0x410bf6];return _0x2e0d44;};'use strict';var crypto=require(_0xc99c('0x0'));var util=require(_0xc99c('0x1'));var compose=require(_0xc99c('0x2'));var db=require(_0xc99c('0x3'))['db'];var config=require(_0xc99c('0x4'));function getValueFromLicense(_0x54029c,_0x4700f1){if(_0x54029c&&_0x4700f1){if(_0x4700f1[_0xc99c('0x5')]&&_0x4700f1['license']){var _0x1277a6=_0x4700f1[_0xc99c('0x5')];var _0x1dbaa8=_0x4700f1[_0xc99c('0x6')];var _0x24b248=_0x1277a6[_0xc99c('0x7')]('-')[0x4];var _0x47784d=_0x1277a6[_0xc99c('0x7')]('-')[0x0];var _0x3d4a3c=crypto['createDecipher'](_0xc99c('0x8'),util[_0xc99c('0x9')](_0xc99c('0xa'),_0x24b248,_0x1277a6,_0x47784d));var _0x408625=_0x3d4a3c[_0xc99c('0xb')](_0x1dbaa8,_0xc99c('0xc'),_0xc99c('0xd'));_0x408625+=_0x3d4a3c[_0xc99c('0xe')]('utf8');var _0x4b38eb=JSON['parse'](_0x408625);return _0x4b38eb[_0xc99c('0xf')](_0x54029c)?_0x4b38eb[_0x54029c]:null;}}return null;}function isLimit(_0x4c0afe,_0x1b0b63,_0x4ca8e2,_0x22c862){var _0x1403b6=_0x1b0b63;return compose()[_0xc99c('0x10')](function(_0x3c14f0,_0x5d1cce,_0x36c5b){return db[_0xc99c('0x11')][_0xc99c('0x12')]({'where':{'id':0x1},'raw':!![]})[_0xc99c('0x13')](function(_0x4b5f49){var _0x326604=getValueFromLicense(_0x4c0afe,_0x4b5f49);return _0x326604?_0x326604:_0x1403b6;})['then'](function(_0x547bb4){_0x1403b6=_0x547bb4;return _0x4ca8e2[_0xc99c('0x14')](_0x22c862);})['then'](function(_0x92dc8f){if(_0x92dc8f>=_0x1403b6){return _0x5d1cce['status'](0x193)['json']({'message':util[_0xc99c('0x9')](_0xc99c('0x15'),_0x4c0afe)});}_0x36c5b();})[_0xc99c('0x16')](function(_0x507935){_0x36c5b(_0x507935);});});}function isUserLimit(){return isLimit(_0xc99c('0x17'),0x1,db[_0xc99c('0x18')],{'where':{'$or':[{'role':_0xc99c('0x19')},{'role':_0xc99c('0x1a')}]}});}exports[_0xc99c('0x1b')]=isUserLimit;
\ No newline at end of file
index 3ef3b8c..b273366 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd09a=['minutes','seconds','lodash','moment','parseSearch','sqlOperator','startsWith','[$or]','and','replace','length','split','match','forEach','filter','indexOf','conditions','push','DATE','operator','$between','value','includes','$gt','add','days','format','castTo','text','CAST(','field','\x20AS\x20','$ne','$notIn','\x20OR\x20','$in','IN\x20?','$eq','=\x20?','<>\x20?','$substring','$lt','>\x20?','$lte','<=\x20?','>=\x20?','BETWEEN\x20?\x20AND\x20?','start','$startsWith','$endsWith','shift','pop','utcOffset'];(function(_0x270adf,_0x1daaa3){var _0x29eda9=function(_0x40afec){while(--_0x40afec){_0x270adf['push'](_0x270adf['shift']());}};_0x29eda9(++_0x1daaa3);}(_0xd09a,0x1aa));var _0xad09=function(_0x5cc21d,_0xb1168f){_0x5cc21d=_0x5cc21d-0x0;var _0x1d2ab9=_0xd09a[_0x5cc21d];return _0x1d2ab9;};'use strict';var _=require(_0xad09('0x0'));var moment=require(_0xad09('0x1'));exports[_0xad09('0x2')]=function(_0x16ca66){var _0x30d877={'conditions':[]};_0x30d877[_0xad09('0x3')]=_[_0xad09('0x4')](_0x16ca66,_0xad09('0x5'))?'or':_0xad09('0x6');var _0x504984=_0x16ca66[_0xad09('0x7')]('[$and]','')[_0xad09('0x7')](_0xad09('0x5'),'')['split']('||');for(var _0x2b6c58=0x0;_0x2b6c58<_0x504984[_0xad09('0x8')];_0x2b6c58++){var _0x45d0a9=_0x504984[_0x2b6c58][_0xad09('0x9')](':=');var _0x388052=_0x45d0a9[0x0];var _0x175aac=_0x45d0a9['slice'](0x1);_0x175aac['forEach'](function(_0x55d443){var _0x3464c3=_0x55d443[_0xad09('0x9')]('[')['shift']();var _0x5eb3a8=_0x55d443[_0xad09('0xa')](/\[(.*?)\]/g);_0x5eb3a8[_0xad09('0xb')](function(_0x4957a3){var _0x2439f1=_0x4957a3[_0xad09('0x9')]('[')[_0xad09('0xc')](function(_0x42ac71){return _0x42ac71[_0xad09('0xd')](']')>-0x1;})['map'](function(_0x22bcf9){return _0x22bcf9[_0xad09('0x9')](']')[0x0];})[0x0];_0x30d877[_0xad09('0xe')][_0xad09('0xf')]({'field':_0x388052,'operator':_0x3464c3,'value':_0x2439f1});});});}return _0x30d877;};exports['buildExpression']=function(_0x1279b9,_0x406878,_0x5492d6){var _0x2031d8={};if(_0x406878===_0xad09('0x10')){if(_0x5492d6[_0xad09('0x11')]==='$eq'){_0x5492d6['operator']=_0xad09('0x12');_0x5492d6['value']+=','+_0x5492d6[_0xad09('0x13')];}else if(_[_0xad09('0x14')]([_0xad09('0x15'),'$lte'],_0x5492d6[_0xad09('0x11')])){_0x5492d6['value']=moment(_0x5492d6['value'])[_0xad09('0x16')](0x1,_0xad09('0x17'))[_0xad09('0x18')]('YYYY-MM-DD');}}if(_0x5492d6[_0xad09('0x19')]){_0x406878=_0x5492d6[_0xad09('0x19')];_0x2031d8[_0xad09('0x1a')]=_0xad09('0x1b')+_0x1279b9+'.'+_0x5492d6[_0xad09('0x1c')]+_0xad09('0x1d')+_0x5492d6[_0xad09('0x19')]+')\x20'+parseOperator(_0x5492d6[_0xad09('0x11')]);}else{_0x2031d8['text']=_0x1279b9+'.'+_0x5492d6['field']+'\x20'+parseOperator(_0x5492d6[_0xad09('0x11')]);}if(_['includes']([_0xad09('0x1e'),_0xad09('0x1f')],_0x5492d6[_0xad09('0x11')]))_0x2031d8[_0xad09('0x1a')]='('+_0x2031d8[_0xad09('0x1a')]+_0xad09('0x20')+_0x1279b9+'.'+_0x5492d6[_0xad09('0x1c')]+'\x20IS\x20NULL)';_0x2031d8[_0xad09('0x13')]=parseValue(_0x406878,_0x5492d6[_0xad09('0x11')],_0x5492d6[_0xad09('0x13')]);return _0x2031d8;};function parseOperator(_0x2a7688){var _0x407d44;switch(_0x2a7688){case _0xad09('0x21'):_0x407d44=_0xad09('0x22');break;case _0xad09('0x1f'):_0x407d44='NOT\x20IN\x20?';break;case _0xad09('0x23'):_0x407d44=_0xad09('0x24');break;case'$ne':_0x407d44=_0xad09('0x25');break;case _0xad09('0x26'):case'$startsWith':case'$endsWith':_0x407d44='LIKE\x20?';break;case _0xad09('0x27'):_0x407d44='<\x20?';break;case'$gt':_0x407d44=_0xad09('0x28');break;case _0xad09('0x29'):_0x407d44=_0xad09('0x2a');break;case'$gte':_0x407d44=_0xad09('0x2b');break;case _0xad09('0x12'):_0x407d44=_0xad09('0x2c');break;}return _0x407d44;}function parseValue(_0x321e82,_0x23af1a,_0x3c5900){var _0xf01cdb={'start':undefined,'end':undefined};switch(_0x23af1a){case _0xad09('0x21'):case'$notIn':_0xf01cdb[_0xad09('0x2d')]=_0x3c5900[_0xad09('0x9')](',');break;case _0xad09('0x26'):_0xf01cdb[_0xad09('0x2d')]='%'+_0x3c5900+'%';break;case _0xad09('0x2e'):_0xf01cdb[_0xad09('0x2d')]=_0x3c5900+'%';break;case _0xad09('0x2f'):_0xf01cdb['start']='%'+_0x3c5900;break;case _0xad09('0x12'):var _0x27221e=_0x3c5900[_0xad09('0x9')](',');var _0x3c5900=_0x27221e[_0xad09('0x30')]();var _0x32134f=_0x27221e[_0xad09('0x31')]();if(_0x321e82==='DATE'){_0x3c5900=moment(_0x3c5900)[_0xad09('0x32')](0x0,!![])[_0xad09('0x18')]();_0x32134f=moment(_0x32134f)[_0xad09('0x32')](0x0,!![])['add'](0x17,'hours')['add'](0x3b,_0xad09('0x33'))[_0xad09('0x16')](0x3b,_0xad09('0x34'))['format']();}_0xf01cdb={'start':_0x3c5900,'end':_0x32134f};break;default:_0xf01cdb[_0xad09('0x2d')]=_0x3c5900;break;}return _0xf01cdb;}
\ No newline at end of file
+var _0x86d4=['value','includes','$gt','add','days','YYYY-MM-DD','castTo','CAST(','field','\x20AS\x20','text','$notIn','\x20OR\x20','NOT\x20IN\x20?','=\x20?','$ne','<>\x20?','$substring','$startsWith','$endsWith','$lt','<\x20?','>\x20?','$lte','<=\x20?','$gte','$in','start','shift','pop','utcOffset','format','minutes','seconds','lodash','moment','parseSearch','and','replace','[$and]','[$or]','split','length','slice','forEach','match','indexOf','map','conditions','push','DATE','operator','$eq','$between'];(function(_0x1bf809,_0x536f55){var _0x1caa4e=function(_0x9f9636){while(--_0x9f9636){_0x1bf809['push'](_0x1bf809['shift']());}};_0x1caa4e(++_0x536f55);}(_0x86d4,0x130));var _0x486d=function(_0x4873a3,_0x317e52){_0x4873a3=_0x4873a3-0x0;var _0x560ad9=_0x86d4[_0x4873a3];return _0x560ad9;};'use strict';var _=require(_0x486d('0x0'));var moment=require(_0x486d('0x1'));exports[_0x486d('0x2')]=function(_0x2d00cf){var _0x46da62={'conditions':[]};_0x46da62['sqlOperator']=_['startsWith'](_0x2d00cf,'[$or]')?'or':_0x486d('0x3');var _0x74bbaa=_0x2d00cf[_0x486d('0x4')](_0x486d('0x5'),'')['replace'](_0x486d('0x6'),'')[_0x486d('0x7')]('||');for(var _0x36e46a=0x0;_0x36e46a<_0x74bbaa[_0x486d('0x8')];_0x36e46a++){var _0x58e5dd=_0x74bbaa[_0x36e46a][_0x486d('0x7')](':=');var _0x4dfc11=_0x58e5dd[0x0];var _0x75ccd2=_0x58e5dd[_0x486d('0x9')](0x1);_0x75ccd2[_0x486d('0xa')](function(_0x5a6d96){var _0x530e3f=_0x5a6d96[_0x486d('0x7')]('[')['shift']();var _0x4de250=_0x5a6d96[_0x486d('0xb')](/\[(.*?)\]/g);_0x4de250['forEach'](function(_0x5de9b9){var _0x677e1f=_0x5de9b9[_0x486d('0x7')]('[')['filter'](function(_0x1e2c4a){return _0x1e2c4a[_0x486d('0xc')](']')>-0x1;})[_0x486d('0xd')](function(_0x49d43b){return _0x49d43b[_0x486d('0x7')](']')[0x0];})[0x0];_0x46da62[_0x486d('0xe')][_0x486d('0xf')]({'field':_0x4dfc11,'operator':_0x530e3f,'value':_0x677e1f});});});}return _0x46da62;};exports['buildExpression']=function(_0x2c90b2,_0x46815d,_0x150e5e){var _0x173eb1={};if(_0x46815d===_0x486d('0x10')){if(_0x150e5e[_0x486d('0x11')]===_0x486d('0x12')){_0x150e5e[_0x486d('0x11')]=_0x486d('0x13');_0x150e5e['value']+=','+_0x150e5e[_0x486d('0x14')];}else if(_[_0x486d('0x15')]([_0x486d('0x16'),'$lte'],_0x150e5e['operator'])){_0x150e5e[_0x486d('0x14')]=moment(_0x150e5e[_0x486d('0x14')])[_0x486d('0x17')](0x1,_0x486d('0x18'))['format'](_0x486d('0x19'));}}if(_0x150e5e[_0x486d('0x1a')]){_0x46815d=_0x150e5e[_0x486d('0x1a')];_0x173eb1['text']=_0x486d('0x1b')+_0x2c90b2+'.'+_0x150e5e[_0x486d('0x1c')]+_0x486d('0x1d')+_0x150e5e[_0x486d('0x1a')]+')\x20'+parseOperator(_0x150e5e[_0x486d('0x11')]);}else{_0x173eb1[_0x486d('0x1e')]=_0x2c90b2+'.'+_0x150e5e[_0x486d('0x1c')]+'\x20'+parseOperator(_0x150e5e[_0x486d('0x11')]);}if(_[_0x486d('0x15')](['$ne',_0x486d('0x1f')],_0x150e5e[_0x486d('0x11')]))_0x173eb1['text']='('+_0x173eb1[_0x486d('0x1e')]+_0x486d('0x20')+_0x2c90b2+'.'+_0x150e5e[_0x486d('0x1c')]+'\x20IS\x20NULL)';_0x173eb1['value']=parseValue(_0x46815d,_0x150e5e['operator'],_0x150e5e[_0x486d('0x14')]);return _0x173eb1;};function parseOperator(_0x39049b){var _0x1d08dc;switch(_0x39049b){case'$in':_0x1d08dc='IN\x20?';break;case'$notIn':_0x1d08dc=_0x486d('0x21');break;case _0x486d('0x12'):_0x1d08dc=_0x486d('0x22');break;case _0x486d('0x23'):_0x1d08dc=_0x486d('0x24');break;case _0x486d('0x25'):case _0x486d('0x26'):case _0x486d('0x27'):_0x1d08dc='LIKE\x20?';break;case _0x486d('0x28'):_0x1d08dc=_0x486d('0x29');break;case'$gt':_0x1d08dc=_0x486d('0x2a');break;case _0x486d('0x2b'):_0x1d08dc=_0x486d('0x2c');break;case _0x486d('0x2d'):_0x1d08dc='>=\x20?';break;case'$between':_0x1d08dc='BETWEEN\x20?\x20AND\x20?';break;}return _0x1d08dc;}function parseValue(_0x1081f9,_0xddf12e,_0x215eb2){var _0x3c556b={'start':undefined,'end':undefined};switch(_0xddf12e){case _0x486d('0x2e'):case _0x486d('0x1f'):_0x3c556b[_0x486d('0x2f')]=_0x215eb2[_0x486d('0x7')](',');break;case _0x486d('0x25'):_0x3c556b[_0x486d('0x2f')]='%'+_0x215eb2+'%';break;case _0x486d('0x26'):_0x3c556b[_0x486d('0x2f')]=_0x215eb2+'%';break;case _0x486d('0x27'):_0x3c556b[_0x486d('0x2f')]='%'+_0x215eb2;break;case _0x486d('0x13'):var _0x5d80b7=_0x215eb2[_0x486d('0x7')](',');var _0x215eb2=_0x5d80b7[_0x486d('0x30')]();var _0x3fb84e=_0x5d80b7[_0x486d('0x31')]();if(_0x1081f9===_0x486d('0x10')){_0x215eb2=moment(_0x215eb2)[_0x486d('0x32')](0x0,!![])[_0x486d('0x33')]();_0x3fb84e=moment(_0x3fb84e)[_0x486d('0x32')](0x0,!![])[_0x486d('0x17')](0x17,'hours')[_0x486d('0x17')](0x3b,_0x486d('0x34'))[_0x486d('0x17')](0x3b,_0x486d('0x35'))[_0x486d('0x33')]();}_0x3c556b={'start':_0x215eb2,'end':_0x3fb84e};break;default:_0x3c556b[_0x486d('0x2f')]=_0x215eb2;break;}return _0x3c556b;}
\ No newline at end of file
index 88e8540..9cf9101 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x39f7=['match','^[+]?[0-9]*$','isEmail','replace','includes','push','join','query','$id','model','intersection','attributes','nolimit','limit','order','where','pick','filter','merge','VIRTUAL','lower','options','lodash','moment','parse','keys','fields','split','filters','forOwn','type','DATE','isPlainObject','$gte','format','YYYY-MM-DD','utc','subtract','name','uniqueid','isArray','offset','sort','map','indexOf','priority','cast','col','unsigned','substr','DESC','ASC','omit','isEmpty','length','isString'];(function(_0x3e21f4,_0x43d310){var _0x40fc49=function(_0x54a8f6){while(--_0x54a8f6){_0x3e21f4['push'](_0x3e21f4['shift']());}};_0x40fc49(++_0x43d310);}(_0x39f7,0x1d6));var _0x739f=function(_0x1034ca,_0x14ecd6){_0x1034ca=_0x1034ca-0x0;var _0x1a023a=_0x39f7[_0x1034ca];return _0x1a023a;};'use strict';var _=require(_0x739f('0x0'));var sequelize=require('sequelize');var moment=require(_0x739f('0x1'));var LIMIT_VALUE=0xfa;function hasSequelizeOperator(_0x2592a4){var _0x1a76cc=['ne'];try{var _0x4c98d9=JSON[_0x739f('0x2')](_0x2592a4);var _0x59139e=Object['keys'](_0x4c98d9)[0x0];return _0x1a76cc['includes'](_0x59139e);}catch(_0x58d10e){return![];}}function getOperatorValue(_0x18b534){var _0x4754a4=JSON[_0x739f('0x2')](_0x18b534);var _0x3c6de0=Object[_0x739f('0x3')](_0x4754a4)[0x0];var _0x3a8897=_0x4754a4[_0x3c6de0];return{['$'+_0x3c6de0]:_0x3a8897};}exports[_0x739f('0x4')]=function(_0x5948c2){var _0x20f9d5=null;if(_0x5948c2){_0x20f9d5=_0x5948c2[_0x739f('0x5')](',');}return _0x20f9d5;};exports[_0x739f('0x6')]=function(_0x130d50,_0xcd660b){var _0x596486={};if(!_['isEmpty'](_0x130d50)){_[_0x739f('0x7')](_0x130d50,function(_0x59fff0,_0x128d72){try{if(_0xcd660b){var _0x2e353d=_['find'](_0xcd660b,{'name':_0x128d72})||{};if(hasSequelizeOperator(_0x59fff0)){_0x596486[_0x128d72]=getOperatorValue(_0x59fff0);}else if(_0x2e353d[_0x739f('0x8')]===_0x739f('0x9')&&_[_0x739f('0xa')](_0x59fff0)){var _0x53e107=JSON[_0x739f('0x2')](_0x59fff0);var _0x2de465={'$gte':moment(moment(_0x53e107[_0x739f('0xb')])[_0x739f('0xc')](_0x739f('0xd')))[_0x739f('0xe')]()[_0x739f('0xc')](),'$lte':moment(moment(_0x53e107['$lte'])[_0x739f('0xc')](_0x739f('0xd')))[_0x739f('0xe')]()[_0x739f('0xf')](0x1,'s')[_0x739f('0xc')]()};_0x596486[_0x128d72]=_0x2de465;}else if(_0x2e353d[_0x739f('0x10')]===_0x739f('0x11')){_0x596486[_0x128d72]=_0x59fff0;}else{_0x596486[_0x128d72]=_[_0x739f('0x12')](_0x59fff0)?_0x59fff0:JSON[_0x739f('0x2')](_0x59fff0);}}else{_0x596486[_0x128d72]=_[_0x739f('0x12')](_0x59fff0)?_0x59fff0:JSON[_0x739f('0x2')](_0x59fff0);}}catch(_0x106258){_0x596486[_0x128d72]=_0x59fff0[_0x739f('0x5')](',');}});}return _0x596486;};exports['limit']=function(_0x4943a8){_0x4943a8=parseInt(_0x4943a8,0xa);if(!_0x4943a8||_0x4943a8<0x0){_0x4943a8=LIMIT_VALUE;}return _0x4943a8;};exports[_0x739f('0x13')]=function(_0x372b92){_0x372b92=parseInt(_0x372b92,0xa);if(!_0x372b92||_0x372b92<0x0){_0x372b92=0x0;}return _0x372b92;};exports[_0x739f('0x14')]=function(_0x9f61bb){var _0x474bde,_0x4b60bb=null;if(_0x9f61bb){_0x474bde=_0x9f61bb[_0x739f('0x5')](',');_0x4b60bb=_[_0x739f('0x15')](_0x474bde,function(_0x39cb05){if(_0x39cb05[_0x739f('0x16')]('-')===0x0){return[_0x39cb05===_0x739f('0x17')?sequelize[_0x739f('0x18')](sequelize[_0x739f('0x19')]('priority'),_0x739f('0x1a')):_0x39cb05[_0x739f('0x1b')](0x1),_0x739f('0x1c')];}else{return[_0x39cb05==='priority'?sequelize[_0x739f('0x18')](sequelize['col'](_0x739f('0x17')),_0x739f('0x1a')):_0x39cb05,_0x739f('0x1d')];}});}return _0x4b60bb;};exports[_0x739f('0x1e')]=function(_0x1ef64c,_0x3f2fdb){if(_[_0x739f('0x1f')](_0x1ef64c)){return _0x1ef64c;}if(_[_0x739f('0x12')](_0x1ef64c)){for(var _0x16292f=0x0;_0x16292f<_0x1ef64c[_0x739f('0x20')];_0x16292f+=0x1){_0x1ef64c[_0x16292f]=this[_0x739f('0x1e')](_0x1ef64c[_0x16292f],_0x3f2fdb);}return _0x1ef64c;}if(!_['isObject'](_0x1ef64c)){return _0x1ef64c;}if(_[_0x739f('0x21')](_0x3f2fdb)){_0x3f2fdb=[_0x3f2fdb];}if(!_[_0x739f('0x12')](_0x3f2fdb)){return _0x1ef64c;}for(var _0x185fc3=0x0;_0x185fc3<_0x3f2fdb[_0x739f('0x20')];_0x185fc3+=0x1){_['unset'](_0x1ef64c,_0x3f2fdb[_0x185fc3]);}for(var _0xd882e2 in _0x1ef64c){if(_0x1ef64c['hasOwnProperty'](_0xd882e2)){_0x1ef64c[_0xd882e2]=this[_0x739f('0x1e')](_0x1ef64c[_0xd882e2],_0x3f2fdb);}}return _0x1ef64c;};exports['isNumeric']=function(_0x96673b){return _0x96673b[_0x739f('0x22')](RegExp(_0x739f('0x23')))?!![]:![];};exports[_0x739f('0x24')]=function(_0x34a657){return _0x34a657[_0x739f('0x22')](/^\S+@\S+$/)?!![]:![];};exports['getFullTextValue']=function(_0x2e9ced){var _0x5df382=[];_0x2e9ced[_0x739f('0x5')](/[ ,]+/)['forEach'](function(_0x10910b){_0x10910b=_0x10910b[_0x739f('0x25')](/([^:]")"+/g,'$1');_0x10910b='+'+_0x10910b+'*';if(_0x10910b[_0x739f('0x26')]('@'))_0x10910b='\x22'+_0x10910b+'\x22';_0x5df382[_0x739f('0x27')](_0x10910b);});return _0x5df382[_0x739f('0x28')]('\x20');};exports['getOptions']=function(_0x56a1ec,_0x446b40,_0x42a0c5){var _0x299ea3={},_0x2387fb={};if(_0x446b40[_0x739f('0x29')]['$id']){_0x446b40[_0x739f('0x29')]['id']=_0x446b40[_0x739f('0x29')][_0x739f('0x2a')];delete _0x446b40[_0x739f('0x29')][_0x739f('0x2a')];}_0x299ea3[_0x739f('0x2b')]=_[_0x739f('0x15')](_0x56a1ec,_0x739f('0x10'));_0x299ea3['query']=_[_0x739f('0x3')](_0x446b40[_0x739f('0x29')]);_0x299ea3[_0x739f('0x6')]=_[_0x739f('0x2c')](_0x299ea3[_0x739f('0x2b')],_0x299ea3[_0x739f('0x29')]);_0x2387fb[_0x739f('0x2d')]=_[_0x739f('0x2c')](_0x299ea3[_0x739f('0x2b')],this[_0x739f('0x4')](_0x446b40[_0x739f('0x29')][_0x739f('0x4')]));_0x2387fb[_0x739f('0x2d')]=_0x2387fb[_0x739f('0x2d')][_0x739f('0x20')]?_0x2387fb[_0x739f('0x2d')]:_0x299ea3[_0x739f('0x2b')];if(!_0x446b40[_0x739f('0x29')]['hasOwnProperty'](_0x739f('0x2e'))){_0x2387fb['limit']=this[_0x739f('0x2f')](_0x446b40[_0x739f('0x29')][_0x739f('0x2f')]);_0x2387fb[_0x739f('0x13')]=this[_0x739f('0x13')](_0x446b40[_0x739f('0x29')][_0x739f('0x13')]);}_0x2387fb[_0x739f('0x30')]=this[_0x739f('0x14')](_0x446b40[_0x739f('0x29')][_0x739f('0x14')]);_0x2387fb[_0x739f('0x31')]=this[_0x739f('0x6')](_[_0x739f('0x32')](_0x446b40[_0x739f('0x29')],_0x299ea3[_0x739f('0x6')]),_0x56a1ec);if(_0x446b40[_0x739f('0x29')][_0x739f('0x33')]){_0x2387fb[_0x739f('0x31')]=_[_0x739f('0x34')](_0x2387fb[_0x739f('0x31')],{'$or':_[_0x739f('0x15')](_0x56a1ec,function(_0x3c803f){if(_0x3c803f[_0x739f('0x8')]!==_0x739f('0x35')){if(_0x42a0c5){return sequelize[_0x739f('0x31')](sequelize['fn'](_0x739f('0x36'),sequelize[_0x739f('0x19')](_0x3c803f[_0x739f('0x10')])),{'$like':sequelize['fn'](_0x739f('0x36'),'%'+_0x446b40['query'][_0x739f('0x33')]+'%')});}else{var _0x3a273b={};_0x3a273b[_0x3c803f[_0x739f('0x10')]]={'$like':'%'+_0x446b40[_0x739f('0x29')][_0x739f('0x33')]+'%'};return _0x3a273b;}}})});}_0x2387fb=_['merge']({},_0x2387fb,_0x446b40[_0x739f('0x37')]);return _0x2387fb;};
\ No newline at end of file
+var _0x33d7=['isEmail','getFullTextValue','forEach','replace','includes','push','$id','query','model','attributes','intersection','nolimit','order','sort','where','pick','filter','object','columns','merge','VIRTUAL','lower','options','keys','parse','fields','split','filters','isEmpty','forOwn','find','type','DATE','isPlainObject','$gte','format','YYYY-MM-DD','utc','$lte','subtract','name','isArray','limit','offset','indexOf','priority','cast','col','unsigned','substr','DESC','ASC','omit','isObject','length','unset','match'];(function(_0x357f0a,_0x37aa60){var _0x10d41b=function(_0x3ef2e1){while(--_0x3ef2e1){_0x357f0a['push'](_0x357f0a['shift']());}};_0x10d41b(++_0x37aa60);}(_0x33d7,0x1a6));var _0x733d=function(_0x3ebe40,_0x47f8fd){_0x3ebe40=_0x3ebe40-0x0;var _0x5a148b=_0x33d7[_0x3ebe40];return _0x5a148b;};'use strict';var _=require('lodash');var sequelize=require('sequelize');var moment=require('moment');var LIMIT_VALUE=0xfa;function hasSequelizeOperator(_0x2b82eb){var _0x45ffed=['ne'];try{var _0x7383d3=JSON['parse'](_0x2b82eb);var _0x3c753d=Object[_0x733d('0x0')](_0x7383d3)[0x0];return _0x45ffed['includes'](_0x3c753d);}catch(_0x263ec1){return![];}}function getOperatorValue(_0x357962){var _0x1bc938=JSON[_0x733d('0x1')](_0x357962);var _0x74bc3e=Object['keys'](_0x1bc938)[0x0];var _0x57ea32=_0x1bc938[_0x74bc3e];return{['$'+_0x74bc3e]:_0x57ea32};}exports[_0x733d('0x2')]=function(_0x44fca5){var _0x1a2602=null;if(_0x44fca5){_0x1a2602=_0x44fca5[_0x733d('0x3')](',');}return _0x1a2602;};exports[_0x733d('0x4')]=function(_0x554e06,_0x48d8f5){var _0x39c615={};if(!_[_0x733d('0x5')](_0x554e06)){_[_0x733d('0x6')](_0x554e06,function(_0x3b0609,_0x3a8a4f){try{if(_0x48d8f5){var _0x4acf6e=_[_0x733d('0x7')](_0x48d8f5,{'name':_0x3a8a4f})||{};if(hasSequelizeOperator(_0x3b0609)){_0x39c615[_0x3a8a4f]=getOperatorValue(_0x3b0609);}else if(_0x4acf6e[_0x733d('0x8')]===_0x733d('0x9')&&_[_0x733d('0xa')](_0x3b0609)){var _0x50fb87=JSON[_0x733d('0x1')](_0x3b0609);var _0x27f25f={'$gte':moment(moment(_0x50fb87[_0x733d('0xb')])[_0x733d('0xc')](_0x733d('0xd')))[_0x733d('0xe')]()['format'](),'$lte':moment(moment(_0x50fb87[_0x733d('0xf')])['format'](_0x733d('0xd')))[_0x733d('0xe')]()[_0x733d('0x10')](0x1,'s')[_0x733d('0xc')]()};_0x39c615[_0x3a8a4f]=_0x27f25f;}else if(_0x4acf6e[_0x733d('0x11')]==='uniqueid'){_0x39c615[_0x3a8a4f]=_0x3b0609;}else{_0x39c615[_0x3a8a4f]=_[_0x733d('0x12')](_0x3b0609)?_0x3b0609:JSON[_0x733d('0x1')](_0x3b0609);}}else{_0x39c615[_0x3a8a4f]=_['isArray'](_0x3b0609)?_0x3b0609:JSON[_0x733d('0x1')](_0x3b0609);}}catch(_0x546063){_0x39c615[_0x3a8a4f]=_0x3b0609['split'](',');}});}return _0x39c615;};exports[_0x733d('0x13')]=function(_0x4ea834){_0x4ea834=parseInt(_0x4ea834,0xa);if(!_0x4ea834||_0x4ea834<0x0){_0x4ea834=LIMIT_VALUE;}return _0x4ea834;};exports[_0x733d('0x14')]=function(_0xaf1825){_0xaf1825=parseInt(_0xaf1825,0xa);if(!_0xaf1825||_0xaf1825<0x0){_0xaf1825=0x0;}return _0xaf1825;};exports['sort']=function(_0x38f320){var _0x56f7bc,_0x10801f=null;if(_0x38f320){_0x56f7bc=_0x38f320[_0x733d('0x3')](',');_0x10801f=_['map'](_0x56f7bc,function(_0x5bc028){if(_0x5bc028[_0x733d('0x15')]('-')===0x0){return[_0x5bc028===_0x733d('0x16')?sequelize[_0x733d('0x17')](sequelize[_0x733d('0x18')](_0x733d('0x16')),_0x733d('0x19')):_0x5bc028[_0x733d('0x1a')](0x1),_0x733d('0x1b')];}else{return[_0x5bc028===_0x733d('0x16')?sequelize[_0x733d('0x17')](sequelize[_0x733d('0x18')](_0x733d('0x16')),'unsigned'):_0x5bc028,_0x733d('0x1c')];}});}return _0x10801f;};exports[_0x733d('0x1d')]=function(_0x4e8299,_0x9a216b){if(_[_0x733d('0x5')](_0x4e8299)){return _0x4e8299;}if(_[_0x733d('0x12')](_0x4e8299)){for(var _0x46e855=0x0;_0x46e855<_0x4e8299['length'];_0x46e855+=0x1){_0x4e8299[_0x46e855]=this[_0x733d('0x1d')](_0x4e8299[_0x46e855],_0x9a216b);}return _0x4e8299;}if(!_[_0x733d('0x1e')](_0x4e8299)){return _0x4e8299;}if(_['isString'](_0x9a216b)){_0x9a216b=[_0x9a216b];}if(!_['isArray'](_0x9a216b)){return _0x4e8299;}for(var _0x596c0f=0x0;_0x596c0f<_0x9a216b[_0x733d('0x1f')];_0x596c0f+=0x1){_[_0x733d('0x20')](_0x4e8299,_0x9a216b[_0x596c0f]);}for(var _0x12298d in _0x4e8299){if(_0x4e8299['hasOwnProperty'](_0x12298d)){_0x4e8299[_0x12298d]=this[_0x733d('0x1d')](_0x4e8299[_0x12298d],_0x9a216b);}}return _0x4e8299;};exports['isNumeric']=function(_0xfa10b1){return _0xfa10b1[_0x733d('0x21')](RegExp('^[+]?[0-9]*$'))?!![]:![];};exports[_0x733d('0x22')]=function(_0x1fe596){return _0x1fe596[_0x733d('0x21')](/^\S+@\S+$/)?!![]:![];};exports[_0x733d('0x23')]=function(_0xdbdf6a){var _0x45d928=[];_0xdbdf6a[_0x733d('0x3')](/[ ,]+/)[_0x733d('0x24')](function(_0x184e36){_0x184e36=_0x184e36[_0x733d('0x25')](/([^:]")"+/g,'$1');_0x184e36='+'+_0x184e36+'*';if(_0x184e36[_0x733d('0x26')]('@'))_0x184e36='\x22'+_0x184e36+'\x22';_0x45d928[_0x733d('0x27')](_0x184e36);});return _0x45d928['join']('\x20');};exports['getOptions']=function(_0x47ee01,_0x2a091b,_0x5552f4){var _0x250aa9={},_0x694f25={};if(_0x2a091b['query'][_0x733d('0x28')]){_0x2a091b[_0x733d('0x29')]['id']=_0x2a091b[_0x733d('0x29')][_0x733d('0x28')];delete _0x2a091b['query'][_0x733d('0x28')];}_0x250aa9[_0x733d('0x2a')]=_['map'](_0x47ee01,_0x733d('0x11'));_0x250aa9[_0x733d('0x29')]=_['keys'](_0x2a091b['query']);_0x250aa9[_0x733d('0x4')]=_['intersection'](_0x250aa9[_0x733d('0x2a')],_0x250aa9['query']);_0x694f25[_0x733d('0x2b')]=_[_0x733d('0x2c')](_0x250aa9['model'],this['fields'](_0x2a091b[_0x733d('0x29')]['fields']));_0x694f25[_0x733d('0x2b')]=_0x694f25[_0x733d('0x2b')][_0x733d('0x1f')]?_0x694f25[_0x733d('0x2b')]:_0x250aa9[_0x733d('0x2a')];if(!_0x2a091b[_0x733d('0x29')]['hasOwnProperty'](_0x733d('0x2d'))){_0x694f25[_0x733d('0x13')]=this['limit'](_0x2a091b[_0x733d('0x29')][_0x733d('0x13')]);_0x694f25['offset']=this[_0x733d('0x14')](_0x2a091b[_0x733d('0x29')][_0x733d('0x14')]);}_0x694f25[_0x733d('0x2e')]=this[_0x733d('0x2f')](_0x2a091b[_0x733d('0x29')][_0x733d('0x2f')]);_0x694f25[_0x733d('0x30')]=this['filters'](_[_0x733d('0x31')](_0x2a091b[_0x733d('0x29')],_0x250aa9['filters']),_0x47ee01);if(_0x2a091b[_0x733d('0x29')][_0x733d('0x32')]){var _0x54e087=_0x47ee01;var _0x6fe029=_0x2a091b[_0x733d('0x29')][_0x733d('0x32')];if(typeof _0x6fe029===_0x733d('0x33')){_0x54e087=_[_0x733d('0x32')](_0x47ee01,function(_0x359ea5){return _[_0x733d('0x26')](_0x6fe029[_0x733d('0x34')],_0x359ea5[_0x733d('0x11')]);});_0x6fe029=_0x6fe029['value'];}_0x694f25[_0x733d('0x30')]=_[_0x733d('0x35')](_0x694f25[_0x733d('0x30')],{'$or':_['map'](_0x54e087,function(_0x31afcf){if(_0x31afcf['type']!==_0x733d('0x36')){if(_0x5552f4){return sequelize[_0x733d('0x30')](sequelize['fn'](_0x733d('0x37'),sequelize[_0x733d('0x18')](_0x31afcf[_0x733d('0x11')])),{'$like':sequelize['fn'](_0x733d('0x37'),'%'+_0x2a091b[_0x733d('0x29')][_0x733d('0x32')]+'%')});}else{var _0x2b50dd={};_0x2b50dd[_0x31afcf[_0x733d('0x11')]]={'$like':'%'+_0x2a091b[_0x733d('0x29')]['filter']+'%'};return _0x2b50dd;}}})});}_0x694f25=_['merge']({},_0x694f25,_0x2a091b[_0x733d('0x38')]);return _0x694f25;};
\ No newline at end of file
index af23a60..23ddc31 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfdf5=['express','serve-favicon','method-override','errorhandler','passport','moment','./environment','../mysqldb','default','get','env','production','set','appPath','join','public','development','test','root','client','use','json\x20replacer','toISOString','split','static','/server/views','engine','ejs','view\x20engine','html','50mb','json'];(function(_0x4cba56,_0x5b2c44){var _0x3cc9f3=function(_0x5bb80a){while(--_0x5bb80a){_0x4cba56['push'](_0x4cba56['shift']());}};_0x3cc9f3(++_0x5b2c44);}(_0xfdf5,0x1e0));var _0x5fdf=function(_0x1ce631,_0x36a3ec){_0x1ce631=_0x1ce631-0x0;var _0x5120a8=_0xfdf5[_0x1ce631];return _0x5120a8;};'use strict';var express=require(_0x5fdf('0x0'));var favicon=require(_0x5fdf('0x1'));var bodyParser=require('body-parser');var methodOverride=require(_0x5fdf('0x2'));var cookieParser=require('cookie-parser');var errorHandler=require(_0x5fdf('0x3'));var path=require('path');var passport=require(_0x5fdf('0x4'));var cors=require('cors');var moment=require(_0x5fdf('0x5'));var config=require(_0x5fdf('0x6'));var db=require(_0x5fdf('0x7'))['db'];exports[_0x5fdf('0x8')]=function(_0x57c4bb){var _0x656814=_0x57c4bb[_0x5fdf('0x9')](_0x5fdf('0xa'));if(_0x656814===_0x5fdf('0xb')){_0x57c4bb[_0x5fdf('0xc')](_0x5fdf('0xd'),path[_0x5fdf('0xe')](config['root'],_0x5fdf('0xf')));}if(_0x656814===_0x5fdf('0x10')||_0x656814===_0x5fdf('0x11')){_0x57c4bb['set'](_0x5fdf('0xd'),path[_0x5fdf('0xe')](config[_0x5fdf('0x12')],_0x5fdf('0x13')));_0x57c4bb[_0x5fdf('0x14')](errorHandler());}_0x57c4bb[_0x5fdf('0xc')](_0x5fdf('0x15'),function(_0x183dd2,_0x209059){if(this[_0x183dd2]instanceof Date){_0x209059=this[_0x183dd2][_0x5fdf('0x16')]()[_0x5fdf('0x17')]('.')[0x0]+'Z';}return _0x209059;});_0x57c4bb[_0x5fdf('0x14')](express[_0x5fdf('0x18')](_0x57c4bb[_0x5fdf('0x9')](_0x5fdf('0xd'))));_0x57c4bb[_0x5fdf('0xc')]('views',config[_0x5fdf('0x12')]+_0x5fdf('0x19'));_0x57c4bb[_0x5fdf('0x1a')]('html',require(_0x5fdf('0x1b'))['renderFile']);_0x57c4bb[_0x5fdf('0xc')](_0x5fdf('0x1c'),_0x5fdf('0x1d'));_0x57c4bb[_0x5fdf('0x14')](bodyParser['urlencoded']({'limit':_0x5fdf('0x1e'),'extended':!![]}));_0x57c4bb['use'](bodyParser[_0x5fdf('0x1f')]({'limit':_0x5fdf('0x1e')}));_0x57c4bb[_0x5fdf('0x14')](cors());_0x57c4bb[_0x5fdf('0x14')](methodOverride());_0x57c4bb['use'](cookieParser());_0x57c4bb[_0x5fdf('0x14')](passport['initialize']());};
\ No newline at end of file
+var _0x6af7=['/server/views','engine','renderFile','view\x20engine','50mb','initialize','express','serve-favicon','body-parser','method-override','cookie-parser','path','passport','moment','../mysqldb','default','set','join','root','public','test','appPath','use','json\x20replacer','get','views'];(function(_0x266068,_0x196c07){var _0x5c2d09=function(_0xec4cf7){while(--_0xec4cf7){_0x266068['push'](_0x266068['shift']());}};_0x5c2d09(++_0x196c07);}(_0x6af7,0x1f4));var _0x76af=function(_0x5cc53f,_0x5add56){_0x5cc53f=_0x5cc53f-0x0;var _0x55e1f9=_0x6af7[_0x5cc53f];return _0x55e1f9;};'use strict';var express=require(_0x76af('0x0'));var favicon=require(_0x76af('0x1'));var bodyParser=require(_0x76af('0x2'));var methodOverride=require(_0x76af('0x3'));var cookieParser=require(_0x76af('0x4'));var errorHandler=require('errorhandler');var path=require(_0x76af('0x5'));var passport=require(_0x76af('0x6'));var cors=require('cors');var moment=require(_0x76af('0x7'));var config=require('./environment');var db=require(_0x76af('0x8'))['db'];exports[_0x76af('0x9')]=function(_0x56bd94){var _0x547d59=_0x56bd94['get']('env');if(_0x547d59==='production'){_0x56bd94[_0x76af('0xa')]('appPath',path[_0x76af('0xb')](config[_0x76af('0xc')],_0x76af('0xd')));}if(_0x547d59==='development'||_0x547d59===_0x76af('0xe')){_0x56bd94[_0x76af('0xa')](_0x76af('0xf'),path['join'](config[_0x76af('0xc')],'client'));_0x56bd94[_0x76af('0x10')](errorHandler());}_0x56bd94['set'](_0x76af('0x11'),function(_0x3d574d,_0x3543b){if(this[_0x3d574d]instanceof Date){_0x3543b=this[_0x3d574d]['toISOString']()['split']('.')[0x0]+'Z';}return _0x3543b;});_0x56bd94[_0x76af('0x10')](express['static'](_0x56bd94[_0x76af('0x12')](_0x76af('0xf'))));_0x56bd94[_0x76af('0xa')](_0x76af('0x13'),config[_0x76af('0xc')]+_0x76af('0x14'));_0x56bd94[_0x76af('0x15')]('html',require('ejs')[_0x76af('0x16')]);_0x56bd94['set'](_0x76af('0x17'),'html');_0x56bd94[_0x76af('0x10')](bodyParser['urlencoded']({'limit':_0x76af('0x18'),'extended':!![]}));_0x56bd94['use'](bodyParser['json']({'limit':_0x76af('0x18')}));_0x56bd94[_0x76af('0x10')](cors());_0x56bd94[_0x76af('0x10')](methodOverride());_0x56bd94['use'](cookieParser());_0x56bd94[_0x76af('0x10')](passport[_0x76af('0x19')]());};
\ No newline at end of file
index 5425187..0dd56d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfc58=['platform','licenseToken','test','win32','dmidecode\x20--string\x20system-uuid','replace','hostname','ipAddress','substring','lodash','bimedia-machine-uuid','child_process','orderBy','keys','filter','internal','concat','head','mac','00:00:00:00:00:00','address','getFirstInterface','cpus','map','model','join','digest','hex','getUuid'];(function(_0x542fde,_0x3fc4c7){var _0x3301b2=function(_0x5b87c3){while(--_0x5b87c3){_0x542fde['push'](_0x542fde['shift']());}};_0x3301b2(++_0x3fc4c7);}(_0xfc58,0x1bc));var _0x8fc5=function(_0x5c113a,_0x2b2da1){_0x5c113a=_0x5c113a-0x0;var _0x143b8e=_0xfc58[_0x5c113a];return _0x143b8e;};'use strict';var _=require(_0x8fc5('0x0'));var os=require('os');var crypto=require('crypto');var machine=require(_0x8fc5('0x1'));var exec=require(_0x8fc5('0x2'))['execSync'];var config=require('../environment');function getInterfaces(){var _0x5eb699=[];var _0x2d4342=os['networkInterfaces']();var _0x56ca51=_[_0x8fc5('0x3')](_[_0x8fc5('0x4')](_0x2d4342));for(var _0x41326e=0x0;_0x41326e<_0x56ca51['length'];_0x41326e++){var _0x3362c0=_0x2d4342[_0x56ca51[_0x41326e]][_0x8fc5('0x5')](function(_0x1d1473){return _0x1d1473['family']==='IPv4'&&_0x1d1473[_0x8fc5('0x6')]===![];});_0x5eb699=_0x5eb699[_0x8fc5('0x7')](_0x3362c0);}return _0x5eb699;}function getFirstInterface(){var _0x52f1f0=_[_0x8fc5('0x8')](getInterfaces());return{'macAddress':_0x52f1f0&&_0x52f1f0[_0x8fc5('0x9')]?_0x52f1f0[_0x8fc5('0x9')]:_0x8fc5('0xa'),'ipAddress':_0x52f1f0&&_0x52f1f0[_0x8fc5('0xb')]?_0x52f1f0['address']:'127.0.0.1'};}exports[_0x8fc5('0xc')]=getFirstInterface;function getCPUhash(){var _0x5732b3=_[_0x8fc5('0x3')](os[_0x8fc5('0xd')]()[_0x8fc5('0xe')](function(_0xb650b1){return _0xb650b1[_0x8fc5('0xf')];}))[_0x8fc5('0x10')](':');return crypto['createHash']('md5')['update'](_0x5732b3)[_0x8fc5('0x11')](_0x8fc5('0x12'));}exports[_0x8fc5('0x13')]=function(){var _0x14a698=os[_0x8fc5('0x14')]();var _0x429050=/[0-9a-f-]{36}/;if(config[_0x8fc5('0x15')]&&_0x429050[_0x8fc5('0x16')](config[_0x8fc5('0x15')])){return config[_0x8fc5('0x15')];}else if(_0x14a698===_0x8fc5('0x17')){return exec(_0x8fc5('0x18'),{'encoding':'utf8'})[_0x8fc5('0x19')]('\x0d\x0a','');}else{var _0x3dc6cb=getFirstInterface();var _0x3b45a6=getCPUhash();var _0x4f0773=_0x3b45a6+'|'+os[_0x8fc5('0x1a')]()+'|'+_0x3dc6cb['macAddress']+'|'+_0x3dc6cb[_0x8fc5('0x1b')];var _0x56507a=crypto['createHash']('md5')['update'](_0x4f0773)[_0x8fc5('0x11')](_0x8fc5('0x12'));return _0x56507a[_0x8fc5('0x1c')](0x0,0x8)+'-'+_0x56507a['substring'](0x8,0xc)+'-'+_0x56507a[_0x8fc5('0x1c')](0xc,0x10)+'-'+_0x56507a['substring'](0x10,0x14)+'-'+_0x56507a[_0x8fc5('0x1c')](0x14);}};
\ No newline at end of file
+var _0x7e6c=['getUuid','platform','licenseToken','test','dmidecode\x20--string\x20system-uuid','utf8','hostname','macAddress','ipAddress','createHash','digest','substring','lodash','crypto','child_process','execSync','../environment','networkInterfaces','length','filter','IPv4','internal','head','mac','00:00:00:00:00:00','address','getFirstInterface','orderBy','cpus','map','model','join','update','hex'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x7e6c,0x13e));var _0xc7e6=function(_0x1d128e,_0x2c87de){_0x1d128e=_0x1d128e-0x0;var _0x3d5236=_0x7e6c[_0x1d128e];return _0x3d5236;};'use strict';var _=require(_0xc7e6('0x0'));var os=require('os');var crypto=require(_0xc7e6('0x1'));var machine=require('bimedia-machine-uuid');var exec=require(_0xc7e6('0x2'))[_0xc7e6('0x3')];var config=require(_0xc7e6('0x4'));function getInterfaces(){var _0x2043db=[];var _0x59b2e1=os[_0xc7e6('0x5')]();var _0x2c2ed9=_['orderBy'](_['keys'](_0x59b2e1));for(var _0x34cab4=0x0;_0x34cab4<_0x2c2ed9[_0xc7e6('0x6')];_0x34cab4++){var _0x1e7580=_0x59b2e1[_0x2c2ed9[_0x34cab4]][_0xc7e6('0x7')](function(_0xeb5fec){return _0xeb5fec['family']===_0xc7e6('0x8')&&_0xeb5fec[_0xc7e6('0x9')]===![];});_0x2043db=_0x2043db['concat'](_0x1e7580);}return _0x2043db;}function getFirstInterface(){var _0x4e2411=_[_0xc7e6('0xa')](getInterfaces());return{'macAddress':_0x4e2411&&_0x4e2411[_0xc7e6('0xb')]?_0x4e2411['mac']:_0xc7e6('0xc'),'ipAddress':_0x4e2411&&_0x4e2411['address']?_0x4e2411[_0xc7e6('0xd')]:'127.0.0.1'};}exports[_0xc7e6('0xe')]=getFirstInterface;function getCPUhash(){var _0x5e14bd=_[_0xc7e6('0xf')](os[_0xc7e6('0x10')]()[_0xc7e6('0x11')](function(_0x330484){return _0x330484[_0xc7e6('0x12')];}))[_0xc7e6('0x13')](':');return crypto['createHash']('md5')[_0xc7e6('0x14')](_0x5e14bd)['digest'](_0xc7e6('0x15'));}exports[_0xc7e6('0x16')]=function(){var _0x35ddbe=os[_0xc7e6('0x17')]();var _0x78c24e=/[0-9a-f-]{36}/;if(config[_0xc7e6('0x18')]&&_0x78c24e[_0xc7e6('0x19')](config[_0xc7e6('0x18')])){return config['licenseToken'];}else if(_0x35ddbe==='win32'){return exec(_0xc7e6('0x1a'),{'encoding':_0xc7e6('0x1b')})['replace']('\x0d\x0a','');}else{var _0x47bf2c=getFirstInterface();var _0x17347c=getCPUhash();var _0x514a55=_0x17347c+'|'+os[_0xc7e6('0x1c')]()+'|'+_0x47bf2c[_0xc7e6('0x1d')]+'|'+_0x47bf2c[_0xc7e6('0x1e')];var _0x8a4fcd=crypto[_0xc7e6('0x1f')]('md5')[_0xc7e6('0x14')](_0x514a55)[_0xc7e6('0x20')]('hex');return _0x8a4fcd[_0xc7e6('0x21')](0x0,0x8)+'-'+_0x8a4fcd[_0xc7e6('0x21')](0x8,0xc)+'-'+_0x8a4fcd[_0xc7e6('0x21')](0xc,0x10)+'-'+_0x8a4fcd[_0xc7e6('0x21')](0x10,0x14)+'-'+_0x8a4fcd[_0xc7e6('0x21')](0x14);}};
\ No newline at end of file
index 5583260..98d9806 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x697f=['getUuid','License','findOrCreate','default','moment','request-promise','bluebird','version','../../mysqldb','../../components/encryptor','./hardware','format','exports','%s/api/servers/%s/check?version=%s&oldtoken=%s','GET','catch','data1','data2','then','active','license','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','encryptString','YYYY-MM-DD\x20HH:mm','decryptString','days','DEMO\x20START\x20AT\x20%s','error','message','finally'];(function(_0x3fdb60,_0xdec36e){var _0x1fa0de=function(_0x287c54){while(--_0x287c54){_0x3fdb60['push'](_0x3fdb60['shift']());}};_0x1fa0de(++_0xdec36e);}(_0x697f,0xe8));var _0xf697=function(_0x1b58cd,_0x1a7c1b){_0x1b58cd=_0x1b58cd-0x0;var _0x5db4f5=_0x697f[_0x1b58cd];return _0x5db4f5;};'use strict';var util=require('util');var moment=require(_0xf697('0x0'));var rp=require(_0xf697('0x1'));var BPromise=require(_0xf697('0x2'));var pkginfo=require('pkginfo')(module,_0xf697('0x3'));var db=require(_0xf697('0x4'))['db'];var encryptor=require(_0xf697('0x5'));var hardware=require(_0xf697('0x6'));var logger=require('../logger')('license');var HOST='https://www.xcallymotion.com';var TIME=0x3c*0x1388;var DAYS=0x7;var GRAY_PERIOD_REASON;var oldToken;var isOldTokenSent=![];function httpRequest(_0x478702){return new BPromise(function(_0x4fab75,_0x5b62e6){var _0x3144b3=util[_0xf697('0x7')]('%s/api/servers/%s/check?version=%s',HOST,_0x478702,module[_0xf697('0x8')][_0xf697('0x3')]);if(oldToken){_0x3144b3=util[_0xf697('0x7')](_0xf697('0x9'),HOST,_0x478702,module[_0xf697('0x8')][_0xf697('0x3')],oldToken);}var _0xc361a8={'uri':_0x3144b3,'method':_0xf697('0xa'),'timeout':0xea60,'json':!![]};return rp(_0xc361a8)['then'](function(_0x676285){_0x4fab75(_0x676285);})[_0xf697('0xb')](function(_0x19b426){_0x5b62e6(_0x19b426);});});}function manageLicense(_0x557691,_0x462d2c){var _0x1b5712=_0x462d2c['get']({'plain':!![]});if(!isOldTokenSent&&_0x1b5712[_0xf697('0xc')]!==_0x557691&&!_0x1b5712[_0xf697('0xd')]){oldToken=_0x1b5712[_0xf697('0xc')];}httpRequest(_0x557691)[_0xf697('0xe')](function(_0x3b0e3d){if(oldToken){oldToken=undefined;isOldTokenSent=!![];}if(_0x3b0e3d[_0xf697('0xf')]){isOldTokenSent=![];if(!_0x1b5712[_0xf697('0x10')]&&_0x1b5712[_0xf697('0x10')]!=_0x3b0e3d['license']||_0x1b5712[_0xf697('0x10')]&&_0x1b5712[_0xf697('0xd')]){logger[_0xf697('0x11')]('THE\x20LICENSE\x20HAS\x20BEEN\x20ENABLED');}if(_0x1b5712[_0xf697('0x10')]&&!_0x1b5712[_0xf697('0xd')]&&_0x1b5712[_0xf697('0x10')]!=_0x3b0e3d['license']){logger[_0xf697('0x11')](_0xf697('0x12'));}if(_0x1b5712[_0xf697('0x10')]&&!_0x1b5712['data2']&&_0x1b5712[_0xf697('0x10')]==_0x3b0e3d[_0xf697('0x10')]){return _0x462d2c;}return _0x462d2c[_0xf697('0x13')]({'data1':_0x557691,'data2':null,'license':_0x3b0e3d[_0xf697('0x10')]});}else{if(_0x3b0e3d[_0xf697('0x10')]||_0x1b5712['license']){if(!_0x1b5712['data2']){if(_0x1b5712[_0xf697('0xc')]==_0x557691){GRAY_PERIOD_REASON=_0xf697('0x14');logger[_0xf697('0x11')](_0xf697('0x15'));}else{GRAY_PERIOD_REASON=_0xf697('0x16');logger[_0xf697('0x11')](_0xf697('0x17'),_0x1b5712[_0xf697('0xc')],_0x557691);}logger[_0xf697('0x11')](_0xf697('0x18'),GRAY_PERIOD_REASON[_0xf697('0x19')](),moment()[_0xf697('0x7')]('YYYY-MM-DD\x20HH:mm'));return _0x462d2c[_0xf697('0x13')]({'data2':encryptor[_0xf697('0x1a')](moment()[_0xf697('0x7')](_0xf697('0x1b')))});}else{if(moment()['diff'](encryptor[_0xf697('0x1c')](_0x1b5712['data2']),_0xf697('0x1d'))>DAYS){logger[_0xf697('0x11')](_0xf697('0x1e'),moment()[_0xf697('0x7')](_0xf697('0x1b')));isOldTokenSent=![];return _0x462d2c[_0xf697('0x13')]({'data1':_0x557691,'data2':null,'license':null});}}}else{if(_0x1b5712[_0xf697('0xc')]!=_0x557691){logger[_0xf697('0x11')](_0xf697('0x17'),_0x1b5712[_0xf697('0xc')],_0x557691);return _0x462d2c[_0xf697('0x13')]({'data1':_0x557691,'data2':null,'license':null});}}}return _0x462d2c;})[_0xf697('0xe')](function(_0x30b12e){_0x462d2c=_0x30b12e;})['catch'](function(_0x51445d){logger[_0xf697('0x1f')](_0x51445d[_0xf697('0x20')]);})[_0xf697('0x21')](function(){setTimeout(function(){manageLicense(hardware[_0xf697('0x22')](),_0x462d2c);},TIME);});}function defaultLicense(){var _0x279c9a=hardware[_0xf697('0x22')]();if(_0x279c9a){return db[_0xf697('0x23')][_0xf697('0x24')]({'where':{'id':0x1},'defaults':{'data1':_0x279c9a}})['spread'](function(_0x26d097,_0x3a4e73){logger[_0xf697('0x11')]('SERVICE\x20LICENSE\x20STARTED\x20%s',_0x279c9a);manageLicense(_0x279c9a,_0x26d097);})[_0xf697('0xb')](function(_0x2e6b27){logger['error'](_0x2e6b27[_0xf697('0x20')]);});}}exports[_0xf697('0x25')]=defaultLicense;
\ No newline at end of file
+var _0x8d43=['util','moment','request-promise','bluebird','../../mysqldb','./hardware','../logger','license','https://www.xcallymotion.com','format','%s/api/servers/%s/check?version=%s','exports','%s/api/servers/%s/check?version=%s&oldtoken=%s','GET','catch','get','data1','data2','then','active','info','THE\x20LICENSE\x20HAS\x20BEEN\x20UPDATED','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','DEMO\x20START\x20AT\x20%s','update','message','getUuid','License','findOrCreate','spread','SERVICE\x20LICENSE\x20STARTED\x20%s','error','default'];(function(_0x3e3218,_0x50b657){var _0x121c66=function(_0xfa1ecc){while(--_0xfa1ecc){_0x3e3218['push'](_0x3e3218['shift']());}};_0x121c66(++_0x50b657);}(_0x8d43,0x138));var _0x38d4=function(_0x46cc18,_0x42eddd){_0x46cc18=_0x46cc18-0x0;var _0x5c50d6=_0x8d43[_0x46cc18];return _0x5c50d6;};'use strict';var util=require(_0x38d4('0x0'));var moment=require(_0x38d4('0x1'));var rp=require(_0x38d4('0x2'));var BPromise=require(_0x38d4('0x3'));var pkginfo=require('pkginfo')(module,'version');var db=require(_0x38d4('0x4'))['db'];var encryptor=require('../../components/encryptor');var hardware=require(_0x38d4('0x5'));var logger=require(_0x38d4('0x6'))(_0x38d4('0x7'));var HOST=_0x38d4('0x8');var TIME=0x3c*0x1388;var DAYS=0x7;var GRAY_PERIOD_REASON;var oldToken;var isOldTokenSent=![];function httpRequest(_0x66734e){return new BPromise(function(_0x7d053,_0xf38cf4){var _0x2efec1=util[_0x38d4('0x9')](_0x38d4('0xa'),HOST,_0x66734e,module[_0x38d4('0xb')]['version']);if(oldToken){_0x2efec1=util[_0x38d4('0x9')](_0x38d4('0xc'),HOST,_0x66734e,module['exports']['version'],oldToken);}var _0x5748a9={'uri':_0x2efec1,'method':_0x38d4('0xd'),'timeout':0xea60,'json':!![]};return rp(_0x5748a9)['then'](function(_0x15d36b){_0x7d053(_0x15d36b);})[_0x38d4('0xe')](function(_0x19dcdb){_0xf38cf4(_0x19dcdb);});});}function manageLicense(_0x4e6802,_0x3c6c93){var _0x27fc64=_0x3c6c93[_0x38d4('0xf')]({'plain':!![]});if(!isOldTokenSent&&_0x27fc64[_0x38d4('0x10')]!==_0x4e6802&&!_0x27fc64[_0x38d4('0x11')]){oldToken=_0x27fc64['data1'];}httpRequest(_0x4e6802)[_0x38d4('0x12')](function(_0x364c76){if(oldToken){oldToken=undefined;isOldTokenSent=!![];}if(_0x364c76[_0x38d4('0x13')]){isOldTokenSent=![];if(!_0x27fc64[_0x38d4('0x7')]&&_0x27fc64[_0x38d4('0x7')]!=_0x364c76[_0x38d4('0x7')]||_0x27fc64['license']&&_0x27fc64['data2']){logger[_0x38d4('0x14')]('THE\x20LICENSE\x20HAS\x20BEEN\x20ENABLED');}if(_0x27fc64[_0x38d4('0x7')]&&!_0x27fc64[_0x38d4('0x11')]&&_0x27fc64[_0x38d4('0x7')]!=_0x364c76['license']){logger['info'](_0x38d4('0x15'));}if(_0x27fc64[_0x38d4('0x7')]&&!_0x27fc64['data2']&&_0x27fc64['license']==_0x364c76[_0x38d4('0x7')]){return _0x3c6c93;}return _0x3c6c93['update']({'data1':_0x4e6802,'data2':null,'license':_0x364c76[_0x38d4('0x7')]});}else{if(_0x364c76[_0x38d4('0x7')]||_0x27fc64[_0x38d4('0x7')]){if(!_0x27fc64[_0x38d4('0x11')]){if(_0x27fc64['data1']==_0x4e6802){GRAY_PERIOD_REASON='Disabled';logger[_0x38d4('0x14')]('THE\x20LICENSE\x20HAS\x20BEEN\x20DISABLED');}else{GRAY_PERIOD_REASON=_0x38d4('0x16');logger[_0x38d4('0x14')](_0x38d4('0x17'),_0x27fc64[_0x38d4('0x10')],_0x4e6802);}logger[_0x38d4('0x14')](_0x38d4('0x18'),GRAY_PERIOD_REASON[_0x38d4('0x19')](),moment()[_0x38d4('0x9')](_0x38d4('0x1a')));return _0x3c6c93['update']({'data2':encryptor[_0x38d4('0x1b')](moment()[_0x38d4('0x9')](_0x38d4('0x1a')))});}else{if(moment()[_0x38d4('0x1c')](encryptor['decryptString'](_0x27fc64[_0x38d4('0x11')]),'days')>DAYS){logger['info'](_0x38d4('0x1d'),moment()[_0x38d4('0x9')]('YYYY-MM-DD\x20HH:mm'));isOldTokenSent=![];return _0x3c6c93[_0x38d4('0x1e')]({'data1':_0x4e6802,'data2':null,'license':null});}}}else{if(_0x27fc64[_0x38d4('0x10')]!=_0x4e6802){logger[_0x38d4('0x14')](_0x38d4('0x17'),_0x27fc64['data1'],_0x4e6802);return _0x3c6c93['update']({'data1':_0x4e6802,'data2':null,'license':null});}}}return _0x3c6c93;})[_0x38d4('0x12')](function(_0x52f98c){_0x3c6c93=_0x52f98c;})['catch'](function(_0x4189f2){logger['error'](_0x4189f2[_0x38d4('0x1f')]);})['finally'](function(){setTimeout(function(){manageLicense(hardware[_0x38d4('0x20')](),_0x3c6c93);},TIME);});}function defaultLicense(){var _0x502fba=hardware[_0x38d4('0x20')]();if(_0x502fba){return db[_0x38d4('0x21')][_0x38d4('0x22')]({'where':{'id':0x1},'defaults':{'data1':_0x502fba}})[_0x38d4('0x23')](function(_0x30ae32,_0xac2282){logger[_0x38d4('0x14')](_0x38d4('0x24'),_0x502fba);manageLicense(_0x502fba,_0x30ae32);})['catch'](function(_0x4e3093){logger[_0x38d4('0x25')](_0x4e3093['message']);});}}exports[_0x38d4('0x26')]=defaultLicense;
\ No newline at end of file
index 70177b1..8c4bda7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x47cd=['license','isEmpty','License\x20key\x20value\x20not\x20found','data2','split','decryptString','format','%s:%s:%s','parse','demo','machineUuid','gray','deadline','add','days','grayReason','disabled','message','then','findAll','role','sequelize','count','admin','user','telephone','users','telephones','forEach','catch','pick','License\x20limit\x20reached\x20for\x20users','License\x20limit\x20reached\x20for\x20telephones','exports','util','lodash','moment','../../components/encryptor','../../mysqldb','2027-01-01T00:00:00.000Z','Demo\x20license','getUuid','Breaking\x20license','uuid','data1'];(function(_0x62c958,_0x2bfdbc){var _0x57ec61=function(_0x5c0094){while(--_0x5c0094){_0x62c958['push'](_0x62c958['shift']());}};_0x57ec61(++_0x2bfdbc);}(_0x47cd,0x7c));var _0xd47c=function(_0xdb92f,_0x4edc8d){_0xdb92f=_0xdb92f-0x0;var _0x5223fb=_0x47cd[_0xdb92f];return _0x5223fb;};'use strict';var util=require(_0xd47c('0x0'));var _=require(_0xd47c('0x1'));var moment=require(_0xd47c('0x2'));var BPromise=require('bluebird');var hardware=require('./hardware');var encryptor=require(_0xd47c('0x3'));var db=require(_0xd47c('0x4'))['db'];const demoLicense={'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0xd47c('0x5'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'description':_0xd47c('0x6'),'machineUuid':hardware[_0xd47c('0x7')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};const breakingLicense={'breaking':!![],'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0xd47c('0x5'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'update':![],'description':_0xd47c('0x8'),'machineUuid':hardware[_0xd47c('0x7')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};function getLicense(_0x1eed2f){return new BPromise(function(_0x14e01c,_0x3383e5){return db['License']['find'](_['defaults'](_0x1eed2f,{'raw':!![],'where':{'id':0x1}}))['then'](function(_0x29c3c6){return checkLicense(_0x29c3c6,null);})['then'](function(_0x2a82ce){_0x14e01c(_0x2a82ce);return;})['catch'](function(_0x3c6b90){_0x3383e5(_0x3c6b90);});});}function checkLicense(_0x211e9f,_0x237307){if(!_0x211e9f){demoLicense[_0xd47c('0x9')]=_0x211e9f[_0xd47c('0xa')];return demoLicense;}try{var _0x4337f0=_0x237307||_0x211e9f[_0xd47c('0xb')];if(_[_0xd47c('0xc')](_0x4337f0)){throw new Error(_0xd47c('0xd'));}var _0x40c2cd=_0x211e9f[_0xd47c('0xa')];var _0x628ef4=_0x211e9f[_0xd47c('0xe')];var _0x5bd213=_0x40c2cd[_0xd47c('0xf')]('-')[0x4];var _0x25a0aa=_0x40c2cd[_0xd47c('0xf')]('-')[0x0];var _0x1e8126=encryptor[_0xd47c('0x10')](_0x4337f0,util[_0xd47c('0x11')](_0xd47c('0x12'),_0x5bd213,_0x40c2cd,_0x25a0aa));var _0x4b728f=JSON[_0xd47c('0x13')](_0x1e8126);_0x4b728f[_0xd47c('0x14')]=![];_0x4b728f[_0xd47c('0x9')]=_0x40c2cd;_0x4b728f[_0xd47c('0x15')]=hardware[_0xd47c('0x7')]();if(_0x628ef4){var _0x28feb7=encryptor[_0xd47c('0x10')](_0x628ef4);_0x4b728f[_0xd47c('0x16')]=_0x28feb7;_0x4b728f[_0xd47c('0x17')]=moment(_0x28feb7)[_0xd47c('0x18')](0x7,_0xd47c('0x19'))[_0xd47c('0x11')]();_0x4b728f[_0xd47c('0x1a')]=_0x4b728f[_0xd47c('0x9')]!=_0x4b728f['machineUuid']?'changed':_0xd47c('0x1b');}return _0x4b728f;}catch(_0x37edb9){breakingLicense['uuid']=_0x211e9f['data1'];breakingLicense['message']=_0x37edb9[_0xd47c('0x1c')];return breakingLicense;}}function getLimits(){return new BPromise(function(_0x360243,_0xb2d0e5){getLicense()[_0xd47c('0x1d')](function(_0x2796b1){return db['User'][_0xd47c('0x1e')]({'attributes':[_0xd47c('0x1f'),[db[_0xd47c('0x20')]['fn']('COUNT',db[_0xd47c('0x20')]['col'](_0xd47c('0x1f'))),_0xd47c('0x21')]],'group':'role','where':{'role':{'$or':[_0xd47c('0x22'),_0xd47c('0x23'),_0xd47c('0x24')]}},'raw':!![]})[_0xd47c('0x1d')](function(_0x40defd){var _0x5a9f12={'user':_0x2796b1[_0xd47c('0x25')]||0x0,'telephone':_0x2796b1[_0xd47c('0x26')]||0x0};_0x40defd[_0xd47c('0x27')](function(_0x2bfeda){var _0xdae6bc=_0x2bfeda[_0xd47c('0x1f')]==='admin'?_0xd47c('0x23'):_0x2bfeda[_0xd47c('0x1f')];_0x5a9f12[_0xdae6bc]-=_0x2bfeda[_0xd47c('0x21')];if(_0x5a9f12[_0xdae6bc]<0x0)_0x5a9f12[_0xdae6bc]=0x0;});_0x360243(_0x5a9f12);return;});})[_0xd47c('0x28')](function(_0x568c9f){_0xb2d0e5(_0x568c9f);});});}function checkUserLimits(_0x55a9fa){return new BPromise(function(_0x3e0843,_0x2d51a3){getLimits()['then'](function(_0x5eca89){var _0x2b5344=_[_0xd47c('0x29')](_['countBy'](_0x55a9fa,_0xd47c('0x1f')),['admin','user',_0xd47c('0x24')]);var _0x2e8b7c=(_0x2b5344[_0xd47c('0x22')]||0x0)+(_0x2b5344[_0xd47c('0x23')]||0x0);var _0x632fad=_0x2b5344[_0xd47c('0x24')]||0x0;if(_0x2e8b7c>_0x5eca89[_0xd47c('0x23')])return _0x2d51a3(_0xd47c('0x2a'));if(_0x632fad>_0x5eca89['telephone'])return _0x2d51a3(_0xd47c('0x2b'));return _0x3e0843();})['catch'](function(_0x5cb92b){_0x2d51a3(_0x5cb92b);});});}module[_0xd47c('0x2c')]={'checkLicense':checkLicense,'checkUserLimits':checkUserLimits,'getLicense':getLicense};
\ No newline at end of file
+var _0xdcde=['changed','disabled','User','findAll','role','sequelize','COUNT','col','count','telephone','users','telephones','forEach','admin','user','countBy','License\x20limit\x20reached\x20for\x20users','License\x20limit\x20reached\x20for\x20telephones','lodash','moment','bluebird','./hardware','../../components/encryptor','../../mysqldb','Demo\x20license','2027-01-01T00:00:00.000Z','getUuid','License','find','defaults','then','catch','uuid','license','isEmpty','data1','data2','split','decryptString','format','%s:%s:%s','machineUuid','gray','deadline','add','days'];(function(_0x157a8a,_0x34d072){var _0x5bf33f=function(_0x4fc182){while(--_0x4fc182){_0x157a8a['push'](_0x157a8a['shift']());}};_0x5bf33f(++_0x34d072);}(_0xdcde,0x6e));var _0xedcd=function(_0x136673,_0x1b1939){_0x136673=_0x136673-0x0;var _0x57c367=_0xdcde[_0x136673];return _0x57c367;};'use strict';var util=require('util');var _=require(_0xedcd('0x0'));var moment=require(_0xedcd('0x1'));var BPromise=require(_0xedcd('0x2'));var hardware=require(_0xedcd('0x3'));var encryptor=require(_0xedcd('0x4'));var db=require(_0xedcd('0x5'))['db'];const demoLicense={'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':'2027-01-01T00:00:00.000Z','chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'description':_0xedcd('0x6'),'machineUuid':hardware['getUuid'](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};const breakingLicense={'breaking':!![],'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0xedcd('0x7'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'update':![],'description':'Breaking\x20license','machineUuid':hardware[_0xedcd('0x8')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};function getLicense(_0x3114b7){return new BPromise(function(_0x1fd500,_0x44dd2a){return db[_0xedcd('0x9')][_0xedcd('0xa')](_[_0xedcd('0xb')](_0x3114b7,{'raw':!![],'where':{'id':0x1}}))['then'](function(_0x4deb3a){return checkLicense(_0x4deb3a,null);})[_0xedcd('0xc')](function(_0x3fa121){_0x1fd500(_0x3fa121);return;})[_0xedcd('0xd')](function(_0x1f367a){_0x44dd2a(_0x1f367a);});});}function checkLicense(_0x5d4dd0,_0x285c88){if(!_0x5d4dd0){demoLicense[_0xedcd('0xe')]=_0x5d4dd0['data1'];return demoLicense;}try{var _0x17249b=_0x285c88||_0x5d4dd0[_0xedcd('0xf')];if(_[_0xedcd('0x10')](_0x17249b)){throw new Error('License\x20key\x20value\x20not\x20found');}var _0x1a52bd=_0x5d4dd0[_0xedcd('0x11')];var _0x115106=_0x5d4dd0[_0xedcd('0x12')];var _0x1c1896=_0x1a52bd[_0xedcd('0x13')]('-')[0x4];var _0x28668f=_0x1a52bd[_0xedcd('0x13')]('-')[0x0];var _0x810aab=encryptor[_0xedcd('0x14')](_0x17249b,util[_0xedcd('0x15')](_0xedcd('0x16'),_0x1c1896,_0x1a52bd,_0x28668f));var _0x988088=JSON['parse'](_0x810aab);_0x988088['demo']=![];_0x988088[_0xedcd('0xe')]=_0x1a52bd;_0x988088[_0xedcd('0x17')]=hardware[_0xedcd('0x8')]();if(_0x115106){var _0x4492ef=encryptor[_0xedcd('0x14')](_0x115106);_0x988088[_0xedcd('0x18')]=_0x4492ef;_0x988088[_0xedcd('0x19')]=moment(_0x4492ef)[_0xedcd('0x1a')](0x7,_0xedcd('0x1b'))[_0xedcd('0x15')]();_0x988088['grayReason']=_0x988088['uuid']!=_0x988088[_0xedcd('0x17')]?_0xedcd('0x1c'):_0xedcd('0x1d');}return _0x988088;}catch(_0x36b44d){breakingLicense[_0xedcd('0xe')]=_0x5d4dd0[_0xedcd('0x11')];breakingLicense['message']=_0x36b44d['message'];return breakingLicense;}}function getLimits(){return new BPromise(function(_0x2621db,_0x6f6f10){getLicense()[_0xedcd('0xc')](function(_0x3739cc){return db[_0xedcd('0x1e')][_0xedcd('0x1f')]({'attributes':[_0xedcd('0x20'),[db[_0xedcd('0x21')]['fn'](_0xedcd('0x22'),db[_0xedcd('0x21')][_0xedcd('0x23')]('role')),_0xedcd('0x24')]],'group':_0xedcd('0x20'),'where':{'role':{'$or':['admin','user',_0xedcd('0x25')]}},'raw':!![]})[_0xedcd('0xc')](function(_0x1a18d4){var _0x561f0c={'user':_0x3739cc[_0xedcd('0x26')]||0x0,'telephone':_0x3739cc[_0xedcd('0x27')]||0x0};_0x1a18d4[_0xedcd('0x28')](function(_0x5110a2){var _0x20efd6=_0x5110a2['role']===_0xedcd('0x29')?_0xedcd('0x2a'):_0x5110a2[_0xedcd('0x20')];_0x561f0c[_0x20efd6]-=_0x5110a2['count'];if(_0x561f0c[_0x20efd6]<0x0)_0x561f0c[_0x20efd6]=0x0;});_0x2621db(_0x561f0c);return;});})['catch'](function(_0x27fae2){_0x6f6f10(_0x27fae2);});});}function checkUserLimits(_0x56d255){return new BPromise(function(_0x1674af,_0x46a36c){getLimits()[_0xedcd('0xc')](function(_0x1c72ac){var _0x574d95=_['pick'](_[_0xedcd('0x2b')](_0x56d255,_0xedcd('0x20')),[_0xedcd('0x29'),'user',_0xedcd('0x25')]);var _0x5c8810=(_0x574d95[_0xedcd('0x29')]||0x0)+(_0x574d95[_0xedcd('0x2a')]||0x0);var _0x43e94e=_0x574d95[_0xedcd('0x25')]||0x0;if(_0x5c8810>_0x1c72ac['user'])return _0x46a36c(_0xedcd('0x2c'));if(_0x43e94e>_0x1c72ac[_0xedcd('0x25')])return _0x46a36c(_0xedcd('0x2d'));return _0x1674af();})[_0xedcd('0xd')](function(_0x29d563){_0x46a36c(_0x29d563);});});}module['exports']={'checkLicense':checkLicense,'checkUserLimits':checkUserLimits,'getLicense':getLicense};
\ No newline at end of file
index 54b7aa3..81126ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd943=['app-id','exports','http://localhost:9000','myappanuglar-secret'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xd943,0x15d));var _0x3d94=function(_0x38d6bf,_0x158cb2){_0x38d6bf=_0x38d6bf-0x0;var _0x508d5e=_0xd943[_0x38d6bf];return _0x508d5e;};'use strict';module[_0x3d94('0x0')]={'DOMAIN':_0x3d94('0x1'),'SESSION_SECRET':_0x3d94('0x2'),'GOOGLE_ID':_0x3d94('0x3'),'GOOGLE_SECRET':'secret','DEBUG':''};
\ No newline at end of file
+var _0x065e=['secret','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x065e,0x1a7));var _0xe065=function(_0x453705,_0x1f3175){_0x453705=_0x453705-0x0;var _0x2f9c07=_0x065e[_0x453705];return _0x2f9c07;};'use strict';module[_0xe065('0x0')]={'DOMAIN':'http://localhost:9000','SESSION_SECRET':'myappanuglar-secret','GOOGLE_ID':'app-id','GOOGLE_SECRET':_0xe065('0x1'),'DEBUG':''};
\ No newline at end of file
index 1ddeaeb..7364bfb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x63e4=['format','message','replace','{{{','}}}','[%s]\x20[%s]\x20%s\x20-\x20%s','YYYY-MM-DD\x20HH:mm:ss','level','toUpperCase','exports','transports','File','%s-%s','error','info','Console','env','debugLevel','moment','util','path','INFO','join','/var','log','xcally'];(function(_0x5e933b,_0x3d7abd){var _0x223fe7=function(_0x3d1add){while(--_0x3d1add){_0x5e933b['push'](_0x5e933b['shift']());}};_0x223fe7(++_0x3d7abd);}(_0x63e4,0x94));var _0x463e=function(_0x2b89d6,_0x7c54ab){_0x2b89d6=_0x2b89d6-0x0;var _0x480eaa=_0x63e4[_0x2b89d6];return _0x480eaa;};'use strict';var moment=require(_0x463e('0x0'));var winston=require('winston');var util=require(_0x463e('0x1'));var path=require(_0x463e('0x2'));var debugLevel=_0x463e('0x3');function filename(_0x291230,_0x7e7d84){return path[_0x463e('0x4')](_0x463e('0x5'),_0x463e('0x6'),_0x463e('0x7'),util[_0x463e('0x8')]('%s-%s.log',_0x291230,_0x7e7d84));}function formatter(_0x147973,_0x522003){_0x522003['message']=_0x522003[_0x463e('0x9')][_0x463e('0xa')](/@@{/g,_0x463e('0xb'))[_0x463e('0xa')](/}@@/g,_0x463e('0xc'))[_0x463e('0xa')](/@{/g,'{{')[_0x463e('0xa')](/}@/g,'}}');return util[_0x463e('0x8')](_0x463e('0xd'),moment()['format'](_0x463e('0xe')),_0x522003[_0x463e('0xf')][_0x463e('0x10')](),_0x147973,_0x522003[_0x463e('0x9')]);}module[_0x463e('0x11')]=function(_0xef86d7){return new winston['Logger']({'transports':[new winston[(_0x463e('0x12'))][(_0x463e('0x13'))]({'name':util[_0x463e('0x8')](_0x463e('0x14'),_0xef86d7,_0x463e('0x15')),'filename':filename(_0xef86d7,_0x463e('0x15')),'level':'error','json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x598854){return formatter(_0xef86d7,_0x598854);}}),new winston['transports'][(_0x463e('0x13'))]({'name':util[_0x463e('0x8')](_0x463e('0x14'),_0xef86d7,_0x463e('0x16')),'filename':filename(_0xef86d7,_0x463e('0x16')),'level':_0x463e('0x16'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0xd08776){return formatter(_0xef86d7,_0xd08776);}}),new winston['transports'][(_0x463e('0x17'))]({'level':process[_0x463e('0x18')][_0x463e('0x19')]||debugLevel,'json':![],'formatter':function(_0x1481a0){return formatter(_0xef86d7,_0x1481a0);}})]});};
\ No newline at end of file
+var _0xa03c=['[%s]\x20[%s]\x20%s\x20-\x20%s','YYYY-MM-DD\x20HH:mm:ss','level','exports','File','%s-%s','error','transports','info','env','winston','util','path','INFO','join','/var','log','xcally','format','message','replace','{{{'];(function(_0x3e4361,_0x3a90dd){var _0x211001=function(_0x345c31){while(--_0x345c31){_0x3e4361['push'](_0x3e4361['shift']());}};_0x211001(++_0x3a90dd);}(_0xa03c,0x16a));var _0xca03=function(_0x4f6f84,_0x31e197){_0x4f6f84=_0x4f6f84-0x0;var _0x20d989=_0xa03c[_0x4f6f84];return _0x20d989;};'use strict';var moment=require('moment');var winston=require(_0xca03('0x0'));var util=require(_0xca03('0x1'));var path=require(_0xca03('0x2'));var debugLevel=_0xca03('0x3');function filename(_0x2d8eea,_0x143051){return path[_0xca03('0x4')](_0xca03('0x5'),_0xca03('0x6'),_0xca03('0x7'),util[_0xca03('0x8')]('%s-%s.log',_0x2d8eea,_0x143051));}function formatter(_0x4615b5,_0x284321){_0x284321[_0xca03('0x9')]=_0x284321['message'][_0xca03('0xa')](/@@{/g,_0xca03('0xb'))['replace'](/}@@/g,'}}}')[_0xca03('0xa')](/@{/g,'{{')[_0xca03('0xa')](/}@/g,'}}');return util[_0xca03('0x8')](_0xca03('0xc'),moment()[_0xca03('0x8')](_0xca03('0xd')),_0x284321[_0xca03('0xe')]['toUpperCase'](),_0x4615b5,_0x284321['message']);}module[_0xca03('0xf')]=function(_0x217cfd){return new winston['Logger']({'transports':[new winston['transports'][(_0xca03('0x10'))]({'name':util['format'](_0xca03('0x11'),_0x217cfd,'error'),'filename':filename(_0x217cfd,_0xca03('0x12')),'level':_0xca03('0x12'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x251113){return formatter(_0x217cfd,_0x251113);}}),new winston[(_0xca03('0x13'))][(_0xca03('0x10'))]({'name':util['format'](_0xca03('0x11'),_0x217cfd,'info'),'filename':filename(_0x217cfd,_0xca03('0x14')),'level':_0xca03('0x14'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x50e3df){return formatter(_0x217cfd,_0x50e3df);}}),new winston['transports']['Console']({'level':process[_0xca03('0x15')]['debugLevel']||debugLevel,'json':![],'formatter':function(_0x4da488){return formatter(_0x217cfd,_0x4da488);}})]});};
\ No newline at end of file
index cd10177..1c3b4ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc6b9=['path','express','join','../../services/express/index.js','ami','../../services/email/index.js','routing','../../services/routing/index.js','xdr','../../services/xdr/index.js'];(function(_0x258dc3,_0x386130){var _0x1876a1=function(_0x29c27d){while(--_0x29c27d){_0x258dc3['push'](_0x258dc3['shift']());}};_0x1876a1(++_0x386130);}(_0xc6b9,0x6e));var _0x9c6b=function(_0x2db12b,_0x30ab1d){_0x2db12b=_0x2db12b-0x0;var _0x20990b=_0xc6b9[_0x2db12b];return _0x20990b;};'use strict';var path=require(_0x9c6b('0x0'));var os=require('os');var config={'apps':[{'name':_0x9c6b('0x1'),'script':path[_0x9c6b('0x2')](__dirname,_0x9c6b('0x3'))},{'name':_0x9c6b('0x4'),'script':path['join'](__dirname,'../../services/ami/index.js')},{'name':'agi','script':path['join'](__dirname,'../../services/agi/index.js')},{'name':'email','script':path[_0x9c6b('0x2')](__dirname,_0x9c6b('0x5'))},{'name':_0x9c6b('0x6'),'script':path[_0x9c6b('0x2')](__dirname,_0x9c6b('0x7'))},{'name':_0x9c6b('0x8'),'script':path[_0x9c6b('0x2')](__dirname,_0x9c6b('0x9'))}]};module['exports']=config;
\ No newline at end of file
+var _0x717d=['exports','path','express','join','../../services/express/index.js','ami','../../services/ami/index.js','agi','../../services/agi/index.js','../../services/email/index.js','routing','../../services/routing/index.js','xdr','../../services/xdr/index.js'];(function(_0x48263b,_0x35eedb){var _0xb5ff83=function(_0x57845c){while(--_0x57845c){_0x48263b['push'](_0x48263b['shift']());}};_0xb5ff83(++_0x35eedb);}(_0x717d,0x10b));var _0xd717=function(_0x10b317,_0x2adf32){_0x10b317=_0x10b317-0x0;var _0x1e3054=_0x717d[_0x10b317];return _0x1e3054;};'use strict';var path=require(_0xd717('0x0'));var os=require('os');var config={'apps':[{'name':_0xd717('0x1'),'script':path[_0xd717('0x2')](__dirname,_0xd717('0x3'))},{'name':_0xd717('0x4'),'script':path[_0xd717('0x2')](__dirname,_0xd717('0x5'))},{'name':_0xd717('0x6'),'script':path[_0xd717('0x2')](__dirname,_0xd717('0x7'))},{'name':'email','script':path[_0xd717('0x2')](__dirname,_0xd717('0x8'))},{'name':_0xd717('0x9'),'script':path[_0xd717('0x2')](__dirname,_0xd717('0xa'))},{'name':_0xd717('0xb'),'script':path[_0xd717('0x2')](__dirname,_0xd717('0xc'))}]};module[_0xd717('0xd')]=config;
\ No newline at end of file
index 94b6bb1..7bdaad5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x369a=['saved','bluebird','./config','connect','start','then','disconnect','stop','restart','list','describe','delete','dump'];(function(_0x3eb38d,_0x4b4160){var _0x15b4a0=function(_0xf8f2d8){while(--_0xf8f2d8){_0x3eb38d['push'](_0x3eb38d['shift']());}};_0x15b4a0(++_0x4b4160);}(_0x369a,0x194));var _0xa369=function(_0x1d1540,_0x2e3496){_0x1d1540=_0x1d1540-0x0;var _0x1029b1=_0x369a[_0x1d1540];return _0x1029b1;};'use strict';var pm2=require('pm2');var BPromise=require(_0xa369('0x0'));var config=require(_0xa369('0x1'));function connect(){return new BPromise(function(_0x306934,_0x4cf843){return pm2[_0xa369('0x2')](function(_0x560ed2){if(_0x560ed2){return _0x4cf843(_0x560ed2);}return _0x306934('connected');});});};exports[_0xa369('0x3')]=function(_0x3837b8){return connect()[_0xa369('0x4')](function(){return new BPromise(function(_0x6ebc0,_0x28c366){return pm2[_0xa369('0x3')](_0x3837b8,function(_0x561f0f,_0x19b608){if(_0x561f0f){return _0x28c366(_0x561f0f);}pm2[_0xa369('0x5')]();return _0x6ebc0(_0x19b608);});});});};exports[_0xa369('0x6')]=function(_0xb95e33){return connect()[_0xa369('0x4')](function(){return new BPromise(function(_0x59f83e,_0x1e93e7){return pm2[_0xa369('0x6')](_0xb95e33,function(_0x15e222,_0x2cff85){if(_0x15e222){return _0x1e93e7(_0x15e222);}pm2[_0xa369('0x5')]();return _0x59f83e(_0x2cff85);});});});};exports[_0xa369('0x7')]=function(_0x27ba28){return connect()[_0xa369('0x4')](function(){return new BPromise(function(_0x42514e,_0x556d2f){return pm2[_0xa369('0x7')](_0x27ba28,function(_0xbc6672,_0x82e8f5){if(_0xbc6672){return _0x556d2f(_0xbc6672);}pm2[_0xa369('0x5')]();return _0x42514e(_0x82e8f5);});});});};exports[_0xa369('0x8')]=function(){return connect()[_0xa369('0x4')](function(){return new BPromise(function(_0x43e702,_0x4df3ef){return pm2[_0xa369('0x8')](function(_0xe9a315,_0x59bc01){if(_0xe9a315){return _0x4df3ef(_0xe9a315);}pm2[_0xa369('0x5')]();return _0x43e702(_0x59bc01);});});});};exports[_0xa369('0x9')]=function(_0x2671e2){return connect()[_0xa369('0x4')](function(){return new BPromise(function(_0x30f51e,_0x36faf6){return pm2['describe'](_0x2671e2,function(_0x4a0570,_0x56c6d1){if(_0x4a0570){return _0x36faf6(_0x4a0570);}pm2[_0xa369('0x5')]();return _0x30f51e(_0x56c6d1);});});});};exports['delete']=function(_0x16e037){return connect()[_0xa369('0x4')](function(){return new BPromise(function(_0x371530,_0x401bee){return pm2[_0xa369('0xa')](_0x16e037,function(_0x1899f7,_0x3fcc98){if(_0x1899f7){return _0x401bee(_0x1899f7);}pm2['disconnect']();return _0x371530(_0x3fcc98);});});});};exports[_0xa369('0xb')]=function(){return connect()[_0xa369('0x4')](function(){return new BPromise(function(_0xbc5fc9,_0x51f7e0){return pm2['dump'](function(_0x46e1a4){if(_0x46e1a4){return _0x51f7e0(_0x46e1a4);}return _0xbc5fc9(_0xa369('0xc'));});});});};
\ No newline at end of file
+var _0x67e3=['describe','delete','dump','pm2','./config','connect','start','then','stop','list','disconnect'];(function(_0x36e1a6,_0x1fc507){var _0xe9711f=function(_0x3d833a){while(--_0x3d833a){_0x36e1a6['push'](_0x36e1a6['shift']());}};_0xe9711f(++_0x1fc507);}(_0x67e3,0x66));var _0x367e=function(_0x11a5e7,_0x40bd8f){_0x11a5e7=_0x11a5e7-0x0;var _0x47f57a=_0x67e3[_0x11a5e7];return _0x47f57a;};'use strict';var pm2=require(_0x367e('0x0'));var BPromise=require('bluebird');var config=require(_0x367e('0x1'));function connect(){return new BPromise(function(_0xb5d119,_0x4ff27d){return pm2[_0x367e('0x2')](function(_0x3f4020){if(_0x3f4020){return _0x4ff27d(_0x3f4020);}return _0xb5d119('connected');});});};exports[_0x367e('0x3')]=function(_0x15f709){return connect()['then'](function(){return new BPromise(function(_0x106eea,_0x5ff16d){return pm2['start'](_0x15f709,function(_0x3f1d55,_0x303e1c){if(_0x3f1d55){return _0x5ff16d(_0x3f1d55);}pm2['disconnect']();return _0x106eea(_0x303e1c);});});});};exports['stop']=function(_0x40da47){return connect()[_0x367e('0x4')](function(){return new BPromise(function(_0x1f0994,_0x5f0b47){return pm2[_0x367e('0x5')](_0x40da47,function(_0x3d0b29,_0x3e6c60){if(_0x3d0b29){return _0x5f0b47(_0x3d0b29);}pm2['disconnect']();return _0x1f0994(_0x3e6c60);});});});};exports['restart']=function(_0x5ee01b){return connect()[_0x367e('0x4')](function(){return new BPromise(function(_0x4652ae,_0x498e4d){return pm2['restart'](_0x5ee01b,function(_0x1bc8ca,_0x51d009){if(_0x1bc8ca){return _0x498e4d(_0x1bc8ca);}pm2['disconnect']();return _0x4652ae(_0x51d009);});});});};exports[_0x367e('0x6')]=function(){return connect()[_0x367e('0x4')](function(){return new BPromise(function(_0x282a86,_0x3b6de2){return pm2[_0x367e('0x6')](function(_0x417789,_0x440f20){if(_0x417789){return _0x3b6de2(_0x417789);}pm2[_0x367e('0x7')]();return _0x282a86(_0x440f20);});});});};exports['describe']=function(_0x336a0c){return connect()['then'](function(){return new BPromise(function(_0xbff4ed,_0x846090){return pm2[_0x367e('0x8')](_0x336a0c,function(_0x3b863f,_0x3da2da){if(_0x3b863f){return _0x846090(_0x3b863f);}pm2[_0x367e('0x7')]();return _0xbff4ed(_0x3da2da);});});});};exports[_0x367e('0x9')]=function(_0x52e206){return connect()[_0x367e('0x4')](function(){return new BPromise(function(_0x5e2fa6,_0x3428e8){return pm2['delete'](_0x52e206,function(_0x59364f,_0x22e93a){if(_0x59364f){return _0x3428e8(_0x59364f);}pm2[_0x367e('0x7')]();return _0x5e2fa6(_0x22e93a);});});});};exports[_0x367e('0xa')]=function(){return connect()['then'](function(){return new BPromise(function(_0x407c73,_0x47fcd5){return pm2[_0x367e('0xa')](function(_0x169204){if(_0x169204){return _0x47fcd5(_0x169204);}return _0x407c73('saved');});});});};
\ No newline at end of file
index 8486a41..417cdc2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c2c=['start','lodash','moment','util','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','Setting','chatTimeout','then','ChatInteraction','findAll','lastMsgAt','subtract','info','[CHAT]\x20Interactions\x20to\x20close:','join','update','timeout','format','YYYY-MM-DD\x20HH:mm:ss','[CHAT]\x20Sending\x20updates\x20for\x20interactions:','length','chatInteraction:update','catch','[CHAT]\x20Error\x20closing\x20interactions'];(function(_0x1a696f,_0x1e9b62){var _0x39057a=function(_0x4deec1){while(--_0x4deec1){_0x1a696f['push'](_0x1a696f['shift']());}};_0x39057a(++_0x1e9b62);}(_0x3c2c,0x123));var _0xc3c2=function(_0x193060,_0x14b3db){_0x193060=_0x193060-0x0;var _0x1cab7e=_0x3c2c[_0x193060];return _0x1cab7e;};'use strict';var _=require(_0xc3c2('0x0'));var moment=require(_0xc3c2('0x1'));var Redis=require('ioredis');var util=require(_0xc3c2('0x2'));var config=require(_0xc3c2('0x3'));var db=require(_0xc3c2('0x4'))['db'];var logger=require('../logger')('schedule');config[_0xc3c2('0x5')]=_[_0xc3c2('0x6')](config['redis'],{'host':_0xc3c2('0x7'),'port':0x18eb});var io=require(_0xc3c2('0x8'))(new Redis(config[_0xc3c2('0x5')]));function closeInteractions(){var _0x227c0b=0x0;var _0x59c843=[];return db[_0xc3c2('0x9')]['find']({'raw':!![],'attributes':['id',_0xc3c2('0xa')],'where':{'id':0x1}})[_0xc3c2('0xb')](function(_0x4c8da4){_0x227c0b=_0x4c8da4[_0xc3c2('0xa')];if(_0x227c0b){return db[_0xc3c2('0xc')][_0xc3c2('0xd')]({'raw':!![],'attributes':['id',_0xc3c2('0xe')],'where':{'closed':![],'lastMsgAt':{'$lt':moment()[_0xc3c2('0xf')](_0x4c8da4[_0xc3c2('0xa')],'minutes')}}});}else{return[];}})[_0xc3c2('0xb')](function(_0x3bd405){if(_0x3bd405&&_0x3bd405['length']){_0x59c843=_['map'](_0x3bd405||[],'id');logger[_0xc3c2('0x10')](_0xc3c2('0x11'),_0x59c843[_0xc3c2('0x12')]());return db[_0xc3c2('0xc')][_0xc3c2('0x13')]({'closeReason':'system','disposition':_0xc3c2('0x14'),'closed':!![],'closedAt':moment()[_0xc3c2('0x15')](_0xc3c2('0x16'))},{'where':{'id':_0x59c843}});}})[_0xc3c2('0xb')](function(){if(_0x59c843&&_0x59c843['length']){logger['info'](_0xc3c2('0x17'),_0x59c843[_0xc3c2('0x12')]());for(var _0x43148c=0x0;_0x43148c<_0x59c843[_0xc3c2('0x18')];_0x43148c++){io['emit'](_0xc3c2('0x19'),{'id':_0x59c843[_0x43148c],'closed':!![]});}}})[_0xc3c2('0x1a')](function(_0x21076d){logger['error'](_0xc3c2('0x1b'),_0x21076d?util['inspect'](_0x21076d,{'showHidden':![],'depth':null}):'');});}exports[_0xc3c2('0x1c')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
+var _0x2b54=['chatTimeout','then','ChatInteraction','lastMsgAt','subtract','minutes','map','info','[CHAT]\x20Interactions\x20to\x20close:','join','update','system','timeout','format','YYYY-MM-DD\x20HH:mm:ss','length','[CHAT]\x20Sending\x20updates\x20for\x20interactions:','emit','chatInteraction:update','catch','error','[CHAT]\x20Error\x20closing\x20interactions','inspect','start','lodash','moment','ioredis','util','../../config/environment','../../mysqldb','../logger','schedule','redis','defaults','localhost','socket.io-emitter','find'];(function(_0x3e5086,_0x48f4a2){var _0xfeb102=function(_0x5a945f){while(--_0x5a945f){_0x3e5086['push'](_0x3e5086['shift']());}};_0xfeb102(++_0x48f4a2);}(_0x2b54,0x18a));var _0x42b5=function(_0x5d2262,_0x285b7a){_0x5d2262=_0x5d2262-0x0;var _0x240261=_0x2b54[_0x5d2262];return _0x240261;};'use strict';var _=require(_0x42b5('0x0'));var moment=require(_0x42b5('0x1'));var Redis=require(_0x42b5('0x2'));var util=require(_0x42b5('0x3'));var config=require(_0x42b5('0x4'));var db=require(_0x42b5('0x5'))['db'];var logger=require(_0x42b5('0x6'))(_0x42b5('0x7'));config[_0x42b5('0x8')]=_[_0x42b5('0x9')](config[_0x42b5('0x8')],{'host':_0x42b5('0xa'),'port':0x18eb});var io=require(_0x42b5('0xb'))(new Redis(config[_0x42b5('0x8')]));function closeInteractions(){var _0x3ec5c9=0x0;var _0x3e3365=[];return db['Setting'][_0x42b5('0xc')]({'raw':!![],'attributes':['id',_0x42b5('0xd')],'where':{'id':0x1}})[_0x42b5('0xe')](function(_0x1c85ad){_0x3ec5c9=_0x1c85ad[_0x42b5('0xd')];if(_0x3ec5c9){return db[_0x42b5('0xf')]['findAll']({'raw':!![],'attributes':['id',_0x42b5('0x10')],'where':{'closed':![],'lastMsgAt':{'$lt':moment()[_0x42b5('0x11')](_0x1c85ad['chatTimeout'],_0x42b5('0x12'))}}});}else{return[];}})[_0x42b5('0xe')](function(_0x212e26){if(_0x212e26&&_0x212e26['length']){_0x3e3365=_[_0x42b5('0x13')](_0x212e26||[],'id');logger[_0x42b5('0x14')](_0x42b5('0x15'),_0x3e3365[_0x42b5('0x16')]());return db[_0x42b5('0xf')][_0x42b5('0x17')]({'closeReason':_0x42b5('0x18'),'disposition':_0x42b5('0x19'),'closed':!![],'closedAt':moment()[_0x42b5('0x1a')](_0x42b5('0x1b'))},{'where':{'id':_0x3e3365}});}})[_0x42b5('0xe')](function(){if(_0x3e3365&&_0x3e3365[_0x42b5('0x1c')]){logger['info'](_0x42b5('0x1d'),_0x3e3365[_0x42b5('0x16')]());for(var _0x59b040=0x0;_0x59b040<_0x3e3365['length'];_0x59b040++){io[_0x42b5('0x1e')](_0x42b5('0x1f'),{'id':_0x3e3365[_0x59b040],'closed':!![]});}}})[_0x42b5('0x20')](function(_0x12b4bf){logger[_0x42b5('0x21')](_0x42b5('0x22'),_0x12b4bf?util[_0x42b5('0x23')](_0x12b4bf,{'showHidden':![],'depth':null}):'');});}exports[_0x42b5('0x24')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
index 9205c63..815663e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd7b3=['Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a','sendIfEmpty','request','SendMail','then','error','email\x20sent','catch','stringify','data','isNil','subtractNumber\x20null\x20or\x20undefined','subtractUnit\x20null\x20or\x20undefined','subtract','YYYY-MM-DD\x20HH:mm:ss','scheduled','output','exec\x20defaul\x20report\x20id:%s','runReport','CustomReportId','no\x20report\x20id','Schedule','MailServerOut','keys','jobs','map','toString','keyBy','intersection','difference','length','exists','stop','index','my\x20id','run\x20job','cron','active','isBetween','startAt','endAt','start','add\x20cron','deleteJob','stop\x20cron','update','run','util','lodash','moment','cron-job-manager','jayson/promise','bluebird','schedule','../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller','client','http','info','Try\x20to\x20send\x20a\x20mail\x20to','email','MailAccount','service','Smtp','host','port','secure','auth','pass','format','\x22%s\x22\x20<%s>','name','bcc','Report\x20%s\x20last\x20%s\x20%s','subtractNumber','subtractUnit','join','%s.%s','basename','savename','extname','zip','existsSync','status','Sent','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','attachments'];(function(_0x3f239d,_0x1e4675){var _0x46f035=function(_0x4d80a3){while(--_0x4d80a3){_0x3f239d['push'](_0x3f239d['shift']());}};_0x46f035(++_0x1e4675);}(_0xd7b3,0xe3));var _0x3d7b=function(_0x17dd1d,_0x31f1b5){_0x17dd1d=_0x17dd1d-0x0;var _0x5e9d0c=_0xd7b3[_0x17dd1d];return _0x5e9d0c;};'use strict';var fs=require('fs');var util=require(_0x3d7b('0x0'));var path=require('path');var _=require(_0x3d7b('0x1'));var moment=require(_0x3d7b('0x2'));var CronJobManager=require(_0x3d7b('0x3'));var jayson=require(_0x3d7b('0x4'));var BPromise=require(_0x3d7b('0x5'));var logger=require('../logger')(_0x3d7b('0x6'));var db=require(_0x3d7b('0x7'))['db'];var analyticCustomReportController=require(_0x3d7b('0x8'));var analyticDefaultReportController=require(_0x3d7b('0x9'));var client=jayson[_0x3d7b('0xa')][_0x3d7b('0xb')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x2c4908,_0xd50609){return function(){logger[_0x3d7b('0xc')](_0x3d7b('0xd'),_0x2c4908[_0x3d7b('0xe')]);var _0x2ef75a=!![];var _0x526ec0={'tls':{'rejectUnauthorized':![]}};if(_0x2c4908[_0x3d7b('0xf')]['Smtp'][_0x3d7b('0x10')]){_0x526ec0[_0x3d7b('0x10')]=_0x2c4908['MailAccount'][_0x3d7b('0x11')]['service'];}else{_0x526ec0[_0x3d7b('0x12')]=_0x2c4908[_0x3d7b('0xf')]['Smtp']['host'];_0x526ec0[_0x3d7b('0x13')]=_0x2c4908[_0x3d7b('0xf')][_0x3d7b('0x11')][_0x3d7b('0x13')];_0x526ec0['secure']=_0x2c4908[_0x3d7b('0xf')][_0x3d7b('0x11')][_0x3d7b('0x14')];}if(_0x2c4908[_0x3d7b('0xf')]['Smtp']['authentication']){_0x526ec0[_0x3d7b('0x15')]={'user':_0x2c4908[_0x3d7b('0xf')][_0x3d7b('0x11')]['user'],'pass':_0x2c4908[_0x3d7b('0xf')][_0x3d7b('0x11')][_0x3d7b('0x16')]};}var _0x399df1={'account':_0x526ec0,'message':{'from':util[_0x3d7b('0x17')](_0x3d7b('0x18'),_0x2c4908[_0x3d7b('0xf')][_0x3d7b('0x19')],_0x2c4908[_0x3d7b('0xf')][_0x3d7b('0xe')]||_0x2c4908[_0x3d7b('0xf')][_0x3d7b('0x11')]['user']),'to':_0x2c4908[_0x3d7b('0xe')],'cc':_0x2c4908['cc'],'bcc':_0x2c4908[_0x3d7b('0x1a')],'subject':util['format'](_0x3d7b('0x1b'),_0xd50609[_0x3d7b('0x19')],_0x2c4908[_0x3d7b('0x1c')],_0x2c4908[_0x3d7b('0x1d')])}};var _0x4b586e=path[_0x3d7b('0x1e')](__dirname,'../../files/reports');var _0x5c258a=_0xd50609['savename'];var _0xffdac9=util[_0x3d7b('0x17')](_0x3d7b('0x1f'),path[_0x3d7b('0x20')](_0xd50609[_0x3d7b('0x21')],path[_0x3d7b('0x22')](_0xd50609[_0x3d7b('0x21')])),_0x3d7b('0x23'));var _0x5f1364=path[_0x3d7b('0x1e')](_0x4b586e,_0x5c258a);var _0x149fd9=path[_0x3d7b('0x1e')](_0x4b586e,_0xffdac9);if(fs[_0x3d7b('0x24')](_0x5f1364)){_0xd50609[_0x3d7b('0x25')]=_0x3d7b('0x26');_0x399df1[_0x3d7b('0x27')]['attachments']=[{'filename':_0x5c258a,'path':_0x5f1364}];_0x399df1[_0x3d7b('0x27')][_0x3d7b('0x28')]=util[_0x3d7b('0x17')](_0x3d7b('0x29'),JSON['stringify'](_0xd50609,null,0x2));}else if(fs[_0x3d7b('0x24')](_0x149fd9)){_0xd50609[_0x3d7b('0x25')]='Sent';_0x399df1['message'][_0x3d7b('0x2a')]=[{'filename':_0xffdac9,'path':_0x149fd9}];}else{_0x399df1['message']['text']=_0x3d7b('0x2b');if(!_0x2c4908[_0x3d7b('0x2c')]){_0x2ef75a=![];logger['info']('empty\x20file,\x20email\x20not\x20sent');}}if(_0x2ef75a){return client[_0x3d7b('0x2d')](_0x3d7b('0x2e'),_0x399df1)[_0x3d7b('0x2f')](function(_0x25b0cd){if(_0x25b0cd[_0x3d7b('0x30')]){return logger[_0x3d7b('0x30')]('error\x20mail',JSON['stringify'](_0x25b0cd));}return logger[_0x3d7b('0xc')](_0x3d7b('0x31'));})[_0x3d7b('0x32')](function(_0x5272f4){return logger[_0x3d7b('0x30')]('error\x20mail',JSON[_0x3d7b('0x33')](_0x5272f4));});}};}function handleError(){return function(_0xdaeea5){return logger['error'](JSON[_0x3d7b('0x33')](_0xdaeea5));};}function handleResult(_0x321a0f){return function(_0x531b3b){logger[_0x3d7b('0xc')](_0x3d7b('0x34'),JSON[_0x3d7b('0x33')](_0x531b3b));if(_0x321a0f['MailAccount']&&_0x321a0f[_0x3d7b('0xf')][_0x3d7b('0x11')]&&!_[_0x3d7b('0x35')](_0x321a0f[_0x3d7b('0xe')])){setTimeout(handleSendEmail(_0x321a0f,_0x531b3b),0x3c*0x3e8);}};}function handleJob(_0x33e889){return function(){try{if(_[_0x3d7b('0x35')](_0x33e889[_0x3d7b('0x1c')])){return logger['info'](_0x3d7b('0x36'));}if(_['isNil'](_0x33e889['subtractUnit'])){return logger[_0x3d7b('0xc')](_0x3d7b('0x37'));}var _0x3f0992={'startDate':moment()[_0x3d7b('0x38')](_0x33e889[_0x3d7b('0x1c')],_0x33e889['subtractUnit'])[_0x3d7b('0x17')](_0x3d7b('0x39')),'endDate':moment()[_0x3d7b('0x17')](_0x3d7b('0x39')),'type':_0x3d7b('0x3a'),'output':_0x33e889[_0x3d7b('0x3b')],'name':_0x33e889[_0x3d7b('0x19')]};if(!_[_0x3d7b('0x35')](_0x33e889['DefaultReportId'])){logger['info'](_0x3d7b('0x3c'),_0x33e889['DefaultReportId']);return analyticDefaultReportController[_0x3d7b('0x3d')]({'id':_0x33e889['DefaultReportId']},_0x3f0992)[_0x3d7b('0x2f')](handleResult(_0x33e889))[_0x3d7b('0x32')](handleError());}if(!_[_0x3d7b('0x35')](_0x33e889[_0x3d7b('0x3e')])){logger[_0x3d7b('0xc')]('exec\x20custom\x20report\x20id:%s',_0x33e889[_0x3d7b('0x3e')]);return analyticCustomReportController['runReport']({'id':_0x33e889[_0x3d7b('0x3e')]},_0x3f0992)['then'](handleResult(_0x33e889))[_0x3d7b('0x32')](handleError());}}catch(_0x1264ca){logger[_0x3d7b('0x30')](JSON[_0x3d7b('0x33')](_0x1264ca));}return logger[_0x3d7b('0xc')](_0x3d7b('0x3f'));};}function getJobs(_0x3f7a0a){var _0x455b83={};if(_0x3f7a0a){_0x455b83['id']=_0x3f7a0a;}return db[_0x3d7b('0x40')]['findAll']({'where':_0x455b83,'include':[{'model':db[_0x3d7b('0xf')],'attributes':['id','name',_0x3d7b('0xe')],'include':[{'model':db[_0x3d7b('0x41')],'as':_0x3d7b('0x11')}]}]})['then'](function(_0x5eb322){var _0x3af703=_[_0x3d7b('0x42')](manager[_0x3d7b('0x43')]);var _0x379615=_[_0x3d7b('0x44')](_0x5eb322,function(_0x12ff75){return _0x12ff75['id'][_0x3d7b('0x45')]();});var _0x56e0eb=_[_0x3d7b('0x46')](_0x5eb322,function(_0x33aa7b){return _0x33aa7b['id'][_0x3d7b('0x45')]();});var _0x4fcec8=_0x3f7a0a?_0x379615:_['difference'](_0x379615,_0x3af703);var _0x63e71f=_[_0x3d7b('0x47')](_0x379615,_0x3af703);var _0x39e3ea=_[_0x3d7b('0x48')](_0x3af703,_0x379615);var _0x50ac34;var _0x3a7e97;for(_0x50ac34=0x0;_0x50ac34<_0x39e3ea[_0x3d7b('0x49')]&&!_0x3f7a0a;_0x50ac34+=0x1){_0x3a7e97=_0x39e3ea[_0x50ac34][_0x3d7b('0x45')]();if(manager[_0x3d7b('0x4a')](_0x3a7e97)){manager[_0x3d7b('0x4b')](_0x3a7e97);manager['deleteJob'](_0x3a7e97);logger[_0x3d7b('0xc')]('delete\x20cron',_0x3a7e97);}}logger[_0x3d7b('0xc')]('toRun',JSON[_0x3d7b('0x33')](_0x4fcec8));for(_0x50ac34=0x0;_0x50ac34<_0x4fcec8[_0x3d7b('0x49')];_0x50ac34+=0x1){_0x3a7e97=_0x4fcec8[_0x50ac34][_0x3d7b('0x45')]();logger[_0x3d7b('0xc')](_0x3d7b('0x4c'),_0x3a7e97);if(_0x3f7a0a){logger[_0x3d7b('0xc')](_0x3d7b('0x4d'),_0x3f7a0a);logger[_0x3d7b('0xc')](JSON['stringify'](_0x56e0eb[_0x3a7e97]));BPromise['resolve']()[_0x3d7b('0x2f')](handleJob(_0x56e0eb[_0x3a7e97]));logger[_0x3d7b('0xc')](_0x3d7b('0x4e'),_0x56e0eb[_0x3a7e97][_0x3d7b('0x19')],_0x56e0eb[_0x3a7e97][_0x3d7b('0x4f')]);}else if(_0x56e0eb[_0x3a7e97][_0x3d7b('0x4f')]&&_0x56e0eb[_0x3a7e97][_0x3d7b('0x50')]&&moment()[_0x3d7b('0x51')](_0x56e0eb[_0x3a7e97][_0x3d7b('0x52')],_0x56e0eb[_0x3a7e97][_0x3d7b('0x53')])){manager['add'](_0x3a7e97,_0x56e0eb[_0x3a7e97][_0x3d7b('0x4f')],handleJob(_0x56e0eb[_0x3a7e97]));manager[_0x3d7b('0x54')](_0x3a7e97);logger[_0x3d7b('0xc')](_0x3d7b('0x55'),_0x56e0eb[_0x3a7e97][_0x3d7b('0x19')],_0x56e0eb[_0x3a7e97][_0x3d7b('0x4f')]);}else if(manager[_0x3d7b('0x4a')](_0x3a7e97)){manager[_0x3d7b('0x4b')](_0x3a7e97);manager[_0x3d7b('0x56')](_0x3a7e97);logger['info'](_0x3d7b('0x57'),_0x56e0eb[_0x3a7e97]['name'],_0x56e0eb[_0x3a7e97][_0x3d7b('0x4f')]);}}for(_0x50ac34=0x0,_0x3a7e97;_0x50ac34<_0x63e71f[_0x3d7b('0x49')]&&!_0x3f7a0a;_0x50ac34+=0x1){_0x3a7e97=_0x63e71f[_0x50ac34][_0x3d7b('0x45')]();if(manager['exists'](_0x3a7e97)){if(_0x56e0eb[_0x3a7e97][_0x3d7b('0x4f')]&&_0x56e0eb[_0x3a7e97][_0x3d7b('0x50')]&&moment()[_0x3d7b('0x51')](_0x56e0eb[_0x3a7e97]['startAt'],_0x56e0eb[_0x3a7e97]['endAt'])){manager[_0x3d7b('0x58')](_0x3a7e97,_0x56e0eb[_0x3a7e97][_0x3d7b('0x4f')],handleJob(_0x56e0eb[_0x3a7e97]));logger[_0x3d7b('0xc')]('update\x20cron',_0x56e0eb[_0x3a7e97]['name'],_0x56e0eb[_0x3a7e97][_0x3d7b('0x4f')]);}else{manager[_0x3d7b('0x4b')](_0x3a7e97);manager[_0x3d7b('0x56')](_0x3a7e97);logger[_0x3d7b('0xc')](_0x3d7b('0x57'),_0x56e0eb[_0x3a7e97]['name'],_0x56e0eb[_0x3a7e97]['cron']);}}}})[_0x3d7b('0x32')](function(_0x18f851){logger[_0x3d7b('0x30')](JSON[_0x3d7b('0x33')](_0x18f851));});}exports[_0x3d7b('0x59')]=function(_0xe3977a){return getJobs(_0xe3977a);};exports[_0x3d7b('0x54')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};
\ No newline at end of file
+var _0x0a19=['\x22%s\x22\x20<%s>','email','bcc','name','subtractNumber','subtractUnit','join','../../files/reports','extname','savename','zip','existsSync','Sent','message','attachments','text','stringify','Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a','sendIfEmpty','empty\x20file,\x20email\x20not\x20sent','then','error','error\x20mail','email\x20sent','data','isNil','subtractUnit\x20null\x20or\x20undefined','YYYY-MM-DD\x20HH:mm:ss','scheduled','output','DefaultReportId','exec\x20defaul\x20report\x20id:%s','runReport','exec\x20custom\x20report\x20id:%s','CustomReportId','catch','no\x20report\x20id','findAll','MailServerOut','keys','jobs','map','toString','keyBy','intersection','difference','exists','stop','deleteJob','delete\x20cron','length','index','my\x20id','resolve','run\x20job','cron','active','isBetween','startAt','add','start','add\x20cron','endAt','update','update\x20cron','run','path','moment','jayson/promise','bluebird','../logger','../../mysqldb','client','http','info','Try\x20to\x20send\x20a\x20mail\x20to','service','MailAccount','Smtp','host','port','secure','authentication','auth','user','format'];(function(_0x5ddb1c,_0x5ea4df){var _0x354adc=function(_0x2dfb1f){while(--_0x2dfb1f){_0x5ddb1c['push'](_0x5ddb1c['shift']());}};_0x354adc(++_0x5ea4df);}(_0x0a19,0x19a));var _0x90a1=function(_0x396466,_0xe9857b){_0x396466=_0x396466-0x0;var _0x5e9ab4=_0x0a19[_0x396466];return _0x5e9ab4;};'use strict';var fs=require('fs');var util=require('util');var path=require(_0x90a1('0x0'));var _=require('lodash');var moment=require(_0x90a1('0x1'));var CronJobManager=require('cron-job-manager');var jayson=require(_0x90a1('0x2'));var BPromise=require(_0x90a1('0x3'));var logger=require(_0x90a1('0x4'))('schedule');var db=require(_0x90a1('0x5'))['db'];var analyticCustomReportController=require('../../api/analyticCustomReport/analyticCustomReport.controller');var analyticDefaultReportController=require('../../api/analyticDefaultReport/analyticDefaultReport.controller');var client=jayson[_0x90a1('0x6')][_0x90a1('0x7')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x242d5b,_0x15e314){return function(){logger[_0x90a1('0x8')](_0x90a1('0x9'),_0x242d5b['email']);var _0x2a30cb=!![];var _0x343f74={'tls':{'rejectUnauthorized':![]}};if(_0x242d5b['MailAccount']['Smtp'][_0x90a1('0xa')]){_0x343f74[_0x90a1('0xa')]=_0x242d5b[_0x90a1('0xb')][_0x90a1('0xc')][_0x90a1('0xa')];}else{_0x343f74[_0x90a1('0xd')]=_0x242d5b[_0x90a1('0xb')]['Smtp'][_0x90a1('0xd')];_0x343f74[_0x90a1('0xe')]=_0x242d5b[_0x90a1('0xb')][_0x90a1('0xc')][_0x90a1('0xe')];_0x343f74['secure']=_0x242d5b['MailAccount'][_0x90a1('0xc')][_0x90a1('0xf')];}if(_0x242d5b[_0x90a1('0xb')]['Smtp'][_0x90a1('0x10')]){_0x343f74[_0x90a1('0x11')]={'user':_0x242d5b[_0x90a1('0xb')][_0x90a1('0xc')][_0x90a1('0x12')],'pass':_0x242d5b[_0x90a1('0xb')][_0x90a1('0xc')]['pass']};}var _0x1aee32={'account':_0x343f74,'message':{'from':util[_0x90a1('0x13')](_0x90a1('0x14'),_0x242d5b['MailAccount']['name'],_0x242d5b[_0x90a1('0xb')][_0x90a1('0x15')]||_0x242d5b['MailAccount']['Smtp']['user']),'to':_0x242d5b[_0x90a1('0x15')],'cc':_0x242d5b['cc'],'bcc':_0x242d5b[_0x90a1('0x16')],'subject':util[_0x90a1('0x13')]('Report\x20%s\x20last\x20%s\x20%s',_0x15e314[_0x90a1('0x17')],_0x242d5b[_0x90a1('0x18')],_0x242d5b[_0x90a1('0x19')])}};var _0x23766b=path[_0x90a1('0x1a')](__dirname,_0x90a1('0x1b'));var _0x5780ba=_0x15e314['savename'];var _0x117039=util['format']('%s.%s',path['basename'](_0x15e314['savename'],path[_0x90a1('0x1c')](_0x15e314[_0x90a1('0x1d')])),_0x90a1('0x1e'));var _0x3bd5f5=path['join'](_0x23766b,_0x5780ba);var _0x5884e2=path['join'](_0x23766b,_0x117039);if(fs[_0x90a1('0x1f')](_0x3bd5f5)){_0x15e314['status']=_0x90a1('0x20');_0x1aee32[_0x90a1('0x21')][_0x90a1('0x22')]=[{'filename':_0x5780ba,'path':_0x3bd5f5}];_0x1aee32[_0x90a1('0x21')][_0x90a1('0x23')]=util[_0x90a1('0x13')]('Info\x20report:\x0a%s\x0aPlease\x20see\x20the\x20attachments\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20it.\x0a\x0a',JSON[_0x90a1('0x24')](_0x15e314,null,0x2));}else if(fs[_0x90a1('0x1f')](_0x5884e2)){_0x15e314['status']=_0x90a1('0x20');_0x1aee32['message'][_0x90a1('0x22')]=[{'filename':_0x117039,'path':_0x5884e2}];}else{_0x1aee32[_0x90a1('0x21')][_0x90a1('0x23')]=_0x90a1('0x25');if(!_0x242d5b[_0x90a1('0x26')]){_0x2a30cb=![];logger['info'](_0x90a1('0x27'));}}if(_0x2a30cb){return client['request']('SendMail',_0x1aee32)[_0x90a1('0x28')](function(_0x40fb6f){if(_0x40fb6f[_0x90a1('0x29')]){return logger[_0x90a1('0x29')](_0x90a1('0x2a'),JSON['stringify'](_0x40fb6f));}return logger[_0x90a1('0x8')](_0x90a1('0x2b'));})['catch'](function(_0x5e5d99){return logger[_0x90a1('0x29')]('error\x20mail',JSON[_0x90a1('0x24')](_0x5e5d99));});}};}function handleError(){return function(_0x1c7044){return logger['error'](JSON[_0x90a1('0x24')](_0x1c7044));};}function handleResult(_0x37c033){return function(_0x5aa0a6){logger[_0x90a1('0x8')](_0x90a1('0x2c'),JSON[_0x90a1('0x24')](_0x5aa0a6));if(_0x37c033[_0x90a1('0xb')]&&_0x37c033[_0x90a1('0xb')][_0x90a1('0xc')]&&!_[_0x90a1('0x2d')](_0x37c033[_0x90a1('0x15')])){setTimeout(handleSendEmail(_0x37c033,_0x5aa0a6),0x3c*0x3e8);}};}function handleJob(_0x52f128){return function(){try{if(_[_0x90a1('0x2d')](_0x52f128[_0x90a1('0x18')])){return logger[_0x90a1('0x8')]('subtractNumber\x20null\x20or\x20undefined');}if(_[_0x90a1('0x2d')](_0x52f128[_0x90a1('0x19')])){return logger['info'](_0x90a1('0x2e'));}var _0x57237c={'startDate':moment()['subtract'](_0x52f128[_0x90a1('0x18')],_0x52f128[_0x90a1('0x19')])['format'](_0x90a1('0x2f')),'endDate':moment()[_0x90a1('0x13')]('YYYY-MM-DD\x20HH:mm:ss'),'type':_0x90a1('0x30'),'output':_0x52f128[_0x90a1('0x31')],'name':_0x52f128[_0x90a1('0x17')]};if(!_[_0x90a1('0x2d')](_0x52f128[_0x90a1('0x32')])){logger['info'](_0x90a1('0x33'),_0x52f128[_0x90a1('0x32')]);return analyticDefaultReportController[_0x90a1('0x34')]({'id':_0x52f128[_0x90a1('0x32')]},_0x57237c)['then'](handleResult(_0x52f128))['catch'](handleError());}if(!_[_0x90a1('0x2d')](_0x52f128['CustomReportId'])){logger['info'](_0x90a1('0x35'),_0x52f128[_0x90a1('0x36')]);return analyticCustomReportController[_0x90a1('0x34')]({'id':_0x52f128['CustomReportId']},_0x57237c)['then'](handleResult(_0x52f128))[_0x90a1('0x37')](handleError());}}catch(_0x22046e){logger[_0x90a1('0x29')](JSON[_0x90a1('0x24')](_0x22046e));}return logger[_0x90a1('0x8')](_0x90a1('0x38'));};}function getJobs(_0x368ea8){var _0x39e444={};if(_0x368ea8){_0x39e444['id']=_0x368ea8;}return db['Schedule'][_0x90a1('0x39')]({'where':_0x39e444,'include':[{'model':db['MailAccount'],'attributes':['id','name',_0x90a1('0x15')],'include':[{'model':db[_0x90a1('0x3a')],'as':_0x90a1('0xc')}]}]})[_0x90a1('0x28')](function(_0x2d086e){var _0x30a65a=_[_0x90a1('0x3b')](manager[_0x90a1('0x3c')]);var _0x543b73=_[_0x90a1('0x3d')](_0x2d086e,function(_0x4ccb40){return _0x4ccb40['id'][_0x90a1('0x3e')]();});var _0x1c58b2=_[_0x90a1('0x3f')](_0x2d086e,function(_0x4e72b6){return _0x4e72b6['id']['toString']();});var _0x404cd3=_0x368ea8?_0x543b73:_['difference'](_0x543b73,_0x30a65a);var _0x5dc384=_[_0x90a1('0x40')](_0x543b73,_0x30a65a);var _0x454a1b=_[_0x90a1('0x41')](_0x30a65a,_0x543b73);var _0x216de1;var _0x270521;for(_0x216de1=0x0;_0x216de1<_0x454a1b['length']&&!_0x368ea8;_0x216de1+=0x1){_0x270521=_0x454a1b[_0x216de1][_0x90a1('0x3e')]();if(manager[_0x90a1('0x42')](_0x270521)){manager[_0x90a1('0x43')](_0x270521);manager[_0x90a1('0x44')](_0x270521);logger[_0x90a1('0x8')](_0x90a1('0x45'),_0x270521);}}logger[_0x90a1('0x8')]('toRun',JSON[_0x90a1('0x24')](_0x404cd3));for(_0x216de1=0x0;_0x216de1<_0x404cd3[_0x90a1('0x46')];_0x216de1+=0x1){_0x270521=_0x404cd3[_0x216de1]['toString']();logger['info'](_0x90a1('0x47'),_0x270521);if(_0x368ea8){logger['info'](_0x90a1('0x48'),_0x368ea8);logger[_0x90a1('0x8')](JSON[_0x90a1('0x24')](_0x1c58b2[_0x270521]));BPromise[_0x90a1('0x49')]()[_0x90a1('0x28')](handleJob(_0x1c58b2[_0x270521]));logger[_0x90a1('0x8')](_0x90a1('0x4a'),_0x1c58b2[_0x270521][_0x90a1('0x17')],_0x1c58b2[_0x270521][_0x90a1('0x4b')]);}else if(_0x1c58b2[_0x270521][_0x90a1('0x4b')]&&_0x1c58b2[_0x270521][_0x90a1('0x4c')]&&moment()[_0x90a1('0x4d')](_0x1c58b2[_0x270521][_0x90a1('0x4e')],_0x1c58b2[_0x270521]['endAt'])){manager[_0x90a1('0x4f')](_0x270521,_0x1c58b2[_0x270521][_0x90a1('0x4b')],handleJob(_0x1c58b2[_0x270521]));manager[_0x90a1('0x50')](_0x270521);logger[_0x90a1('0x8')](_0x90a1('0x51'),_0x1c58b2[_0x270521][_0x90a1('0x17')],_0x1c58b2[_0x270521]['cron']);}else if(manager[_0x90a1('0x42')](_0x270521)){manager[_0x90a1('0x43')](_0x270521);manager[_0x90a1('0x44')](_0x270521);logger[_0x90a1('0x8')]('stop\x20cron',_0x1c58b2[_0x270521][_0x90a1('0x17')],_0x1c58b2[_0x270521][_0x90a1('0x4b')]);}}for(_0x216de1=0x0,_0x270521;_0x216de1<_0x5dc384['length']&&!_0x368ea8;_0x216de1+=0x1){_0x270521=_0x5dc384[_0x216de1]['toString']();if(manager[_0x90a1('0x42')](_0x270521)){if(_0x1c58b2[_0x270521][_0x90a1('0x4b')]&&_0x1c58b2[_0x270521][_0x90a1('0x4c')]&&moment()[_0x90a1('0x4d')](_0x1c58b2[_0x270521][_0x90a1('0x4e')],_0x1c58b2[_0x270521][_0x90a1('0x52')])){manager[_0x90a1('0x53')](_0x270521,_0x1c58b2[_0x270521][_0x90a1('0x4b')],handleJob(_0x1c58b2[_0x270521]));logger[_0x90a1('0x8')](_0x90a1('0x54'),_0x1c58b2[_0x270521]['name'],_0x1c58b2[_0x270521]['cron']);}else{manager[_0x90a1('0x43')](_0x270521);manager['deleteJob'](_0x270521);logger[_0x90a1('0x8')]('stop\x20cron',_0x1c58b2[_0x270521]['name'],_0x1c58b2[_0x270521]['cron']);}}}})[_0x90a1('0x37')](function(_0x22b5c6){logger[_0x90a1('0x29')](JSON[_0x90a1('0x24')](_0x22b5c6));});}exports[_0x90a1('0x55')]=function(_0x3d8ab8){return getJobs(_0x3d8ab8);};exports[_0x90a1('0x50')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};
\ No newline at end of file
index 87fbf69..b79e6fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde6f=['TranscriptionJob','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','transcript','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','Sequelize','ValidationError','sentiment','sentimentAccountId','language','bucket','findOne','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','update','Sentiment','SentimentScore','Positive','Negative','Mixed','FAILED','FailureReason','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','tempSentiment','Sentiment\x20Analysis\x20not\x20requested','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','CloudProvider','Cloud\x20Provider\x20not\x20available','sentimentRegion','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Neutral','COMPLETED','catch','name','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','VoiceRecording','findAll','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','Setting','Settings\x20not\x20available','transcribeAccountId','transcribeRegion','Transcribe\x20not\x20configured','forEach','push','all','SequelizeValidationError','request-promise','util','bluebird','../../config/logger','transcribe','TranscribeService','getTranscriptionJob','Comprehend','detectSentiment','substring','info','format','transcribeName','data1','data2','then','TranscriptionJobStatus','fileText'];(function(_0x1b7c66,_0x1528af){var _0x464060=function(_0xf1164d){while(--_0xf1164d){_0x1b7c66['push'](_0x1b7c66['shift']());}};_0x464060(++_0x1528af);}(_0xde6f,0x84));var _0xfde6=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xde6f[_0x20a584];return _0x4b41a8;};var _=require('lodash');var AWS=require('aws-sdk');var rp=require(_0xfde6('0x0'));var util=require(_0xfde6('0x1'));var BPromise=require(_0xfde6('0x2'));var db=require('../../mysqldb')['db'];var logger=require(_0xfde6('0x3'))(_0xfde6('0x4'));function getTranscriptionJob(_0x3d10be,_0x17d254,_0x44c8f3,_0x347a67){return new Promise(function(_0x50d21a,_0x5628ea){var _0x20ec09=new AWS[(_0xfde6('0x5'))]({'accessKeyId':_0x17d254,'secretAccessKey':_0x3d10be,'region':_0x44c8f3});_0x20ec09[_0xfde6('0x6')]({'TranscriptionJobName':_0x347a67},function(_0x135b39,_0x5e6fb0){if(_0x135b39){return _0x5628ea(_0x135b39);}else{return _0x50d21a(_0x5e6fb0);}});});}function sentiment(_0x333746,_0x3fe159,_0x136937,_0x5d890c,_0x27e896){return new Promise(function(_0x470b8a,_0x48dd4c){var _0x5167e2=new AWS[(_0xfde6('0x7'))]({'accessKeyId':_0x3fe159,'secretAccessKey':_0x333746,'region':_0x136937});_0x5167e2[_0xfde6('0x8')]({'Text':_0x5d890c,'LanguageCode':_0x27e896[_0xfde6('0x9')](0x0,0x2)},function(_0x1a540f,_0x485d23){if(_0x1a540f){return _0x48dd4c(_0x1a540f);}else{return _0x470b8a(_0x485d23);}});});}function checkTranscribeJob(_0xdb1266,_0x9a96cf,_0x3a3776){var _0x1c5ade;return new BPromise(function(_0x13da60,_0x5bf8fb){logger[_0xfde6('0xa')](util[_0xfde6('0xb')]('[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)',_0xdb1266['id'],_0xdb1266[_0xfde6('0xc')]));return getTranscriptionJob(_0x3a3776[_0xfde6('0xd')],_0x3a3776[_0xfde6('0xe')],_0x9a96cf['transcribeRegion'],_0xdb1266[_0xfde6('0xc')])[_0xfde6('0xf')](function(_0x101ea8){logger[_0xfde6('0xa')](util['format']('[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s',_0xdb1266['id'],_0xdb1266[_0xfde6('0xc')],_0x101ea8['TranscriptionJob'][_0xfde6('0x10')]));if(!_0xdb1266[_0xfde6('0x11')]){switch(_0x101ea8['TranscriptionJob'][_0xfde6('0x10')]){case'COMPLETED':var _0x122e45={'transcribeStatus':_0x101ea8[_0xfde6('0x12')][_0xfde6('0x10')],'fileUri':_0x101ea8[_0xfde6('0x12')][_0xfde6('0x13')][_0xfde6('0x14')]};logger[_0xfde6('0xa')](util[_0xfde6('0xb')](_0xfde6('0x15'),_0xdb1266['id']));return rp({'uri':_0x101ea8['TranscriptionJob'][_0xfde6('0x13')][_0xfde6('0x14')],'json':!![]})['then'](function(_0x2577a1){logger[_0xfde6('0xa')](util['format'](_0xfde6('0x16'),_0xdb1266['id']));if(_0x2577a1&&_0x2577a1[_0xfde6('0x17')]&&_0x2577a1['results']['transcripts']&&_0x2577a1[_0xfde6('0x17')][_0xfde6('0x18')]['length']){_0x122e45[_0xfde6('0x11')]='';for(var _0x492219=0x0;_0x492219<_0x2577a1['results'][_0xfde6('0x18')][_0xfde6('0x19')];_0x492219++){_0x122e45[_0xfde6('0x11')]+=_0x2577a1[_0xfde6('0x17')][_0xfde6('0x18')][_0x492219][_0xfde6('0x1a')]+'';}}return _0xdb1266['update'](_0x122e45);})[_0xfde6('0xf')](function(){logger[_0xfde6('0xa')](util['format'](_0xfde6('0x1b'),_0xdb1266['id']));if(!_0xdb1266['tempSentiment']){throw new db[(_0xfde6('0x1c'))][(_0xfde6('0x1d'))]('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x9a96cf[_0xfde6('0x1e')]||!_0x9a96cf[_0xfde6('0x1f')]||!_0x9a96cf['sentimentRegion']||!_0x9a96cf[_0xfde6('0x20')]||!_0x9a96cf[_0xfde6('0x21')]){throw new db['Sequelize'][(_0xfde6('0x1d'))]('Sentiment\x20Analysis\x20not\x20configured');}if(!_0x122e45[_0xfde6('0x11')]){throw new Error('Transcript\x20not\x20available');}if(_0x9a96cf['sentimentAccountId']===_0x3a3776['id']){return _0x3a3776;}else{return db['CloudProvider'][_0xfde6('0x22')]({'where':{'id':_settings[_0xfde6('0x1f')]}});}})[_0xfde6('0xf')](function(_0x140296){if(!_0x140296){throw new db[(_0xfde6('0x1c'))]['ValidationError']('Cloud\x20Provider\x20not\x20available');}if(!_0x140296['data1']||!_0x140296[_0xfde6('0xe')]){throw new db[(_0xfde6('0x1c'))][(_0xfde6('0x1d'))](_0xfde6('0x23'));}_0x1c5ade=_0x140296;logger[_0xfde6('0xa')](util[_0xfde6('0xb')](_0xfde6('0x24'),_0xdb1266['id']));return sentiment(_0x1c5ade[_0xfde6('0xd')],_0x1c5ade[_0xfde6('0xe')],_0x9a96cf['sentimentRegion'],_0x122e45[_0xfde6('0x11')],_0x9a96cf[_0xfde6('0x20')]);})[_0xfde6('0xf')](function(_0x180ece){logger['info'](util[_0xfde6('0xb')]('[RECORDING:%d]\x20Sentiment\x20Analysis\x20available',_0xdb1266['id']));return _0xdb1266[_0xfde6('0x25')]({'sentiment':_0x180ece[_0xfde6('0x26')],'sPositive':_0x180ece[_0xfde6('0x27')][_0xfde6('0x28')],'sNegative':_0x180ece['SentimentScore'][_0xfde6('0x29')],'sMixed':_0x180ece['SentimentScore'][_0xfde6('0x2a')],'sNeutral':_0x180ece[_0xfde6('0x27')]['Neutral']});})[_0xfde6('0xf')](function(){logger[_0xfde6('0xa')](util[_0xfde6('0xb')](_0xfde6('0x1b'),_0xdb1266['id']));_0x13da60();});case'FAILED':return _0xdb1266[_0xfde6('0x25')]({'transcribeStatus':_0xfde6('0x2b'),'failureReason':_0x101ea8[_0xfde6('0x12')][_0xfde6('0x2c')]})[_0xfde6('0xf')](function(){logger[_0xfde6('0xa')](util[_0xfde6('0xb')](_0xfde6('0x1b'),_0xdb1266['id']));_0x13da60();});default:logger[_0xfde6('0xa')](util[_0xfde6('0xb')](_0xfde6('0x2d'),_0xdb1266['id']));break;}}else{return BPromise[_0xfde6('0x2e')]()[_0xfde6('0xf')](function(){if(!_0xdb1266[_0xfde6('0x2f')]){throw new db[(_0xfde6('0x1c'))][(_0xfde6('0x1d'))](_0xfde6('0x30'));}if(!_0x9a96cf['sentiment']||!_0x9a96cf['sentimentAccountId']||!_0x9a96cf['sentimentRegion']||!_0x9a96cf[_0xfde6('0x20')]||!_0x9a96cf[_0xfde6('0x21')]){throw new db['Sequelize'][(_0xfde6('0x1d'))](_0xfde6('0x31'));}if(!_0xdb1266[_0xfde6('0x11')]){throw new Error(_0xfde6('0x32'));}if(_0x9a96cf[_0xfde6('0x1f')]===_0x3a3776['id']){return _0x3a3776;}else{return db[_0xfde6('0x33')][_0xfde6('0x22')]({'where':{'id':_settings[_0xfde6('0x1f')]}});}})[_0xfde6('0xf')](function(_0x245894){if(!_0x245894){throw new db[(_0xfde6('0x1c'))][(_0xfde6('0x1d'))](_0xfde6('0x34'));}if(!_0x245894['data1']||!_0x245894[_0xfde6('0xe')]){throw new db[(_0xfde6('0x1c'))]['ValidationError'](_0xfde6('0x23'));}_0x1c5ade=_0x245894;logger[_0xfde6('0xa')](util[_0xfde6('0xb')](_0xfde6('0x24'),_0xdb1266['id']));return sentiment(_0x1c5ade[_0xfde6('0xd')],_0x1c5ade[_0xfde6('0xe')],_0x9a96cf[_0xfde6('0x35')],_0xdb1266[_0xfde6('0x11')],_0x9a96cf[_0xfde6('0x20')]);})[_0xfde6('0xf')](function(_0x387581){logger[_0xfde6('0xa')](util[_0xfde6('0xb')](_0xfde6('0x36'),_0xdb1266['id']));return _0xdb1266[_0xfde6('0x25')]({'sentiment':_0x387581[_0xfde6('0x26')],'sPositive':_0x387581['SentimentScore'][_0xfde6('0x28')],'sNegative':_0x387581[_0xfde6('0x27')][_0xfde6('0x29')],'sMixed':_0x387581[_0xfde6('0x27')][_0xfde6('0x2a')],'sNeutral':_0x387581['SentimentScore'][_0xfde6('0x37')],'transcribeStatus':_0xfde6('0x38')});})[_0xfde6('0xf')](function(){logger['info'](util['format'](_0xfde6('0x1b'),_0xdb1266['id']));_0x13da60();});}})[_0xfde6('0x39')](function(_0x1eb912){if(_0x1eb912){if(!_0x1eb912[_0xfde6('0x3a')]||_0x1eb912[_0xfde6('0x3a')]!=='SequelizeValidationError'){logger[_0xfde6('0x3b')](util[_0xfde6('0xb')](_0xfde6('0x3c'),_0xdb1266['id']),util[_0xfde6('0x3d')](_0x1eb912,{'showHidden':![],'depth':null}));}}_0x13da60();});});}function checkTranscribe(){var _0x545f35;var _0x1419be;var _0x5ccefb;return db[_0xfde6('0x3e')][_0xfde6('0x3f')]({'where':{'transcribeStatus':_0xfde6('0x40')}})[_0xfde6('0xf')](function(_0x3830ea){if(!_0x3830ea||!_0x3830ea[_0xfde6('0x19')]){throw new db[(_0xfde6('0x1c'))][(_0xfde6('0x1d'))](_0xfde6('0x41'));}_0x545f35=_0x3830ea;return db[_0xfde6('0x42')]['findOne']({'where':{'id':0x1}});})[_0xfde6('0xf')](function(_0x43677d){if(!_0x43677d){throw new db['Sequelize'][(_0xfde6('0x1d'))](_0xfde6('0x43'));}_0x1419be=_0x43677d;if(!_0x1419be['transcribe']||!_0x1419be[_0xfde6('0x44')]||!_0x1419be[_0xfde6('0x45')]||!_0x1419be[_0xfde6('0x20')]||!_0x1419be[_0xfde6('0x21')]){throw new db[(_0xfde6('0x1c'))][(_0xfde6('0x1d'))](_0xfde6('0x46'));}return db[_0xfde6('0x33')][_0xfde6('0x22')]({'where':{'id':_0x1419be[_0xfde6('0x44')]}});})[_0xfde6('0xf')](function(_0x507d55){if(!_0x507d55){throw new db['Sequelize'][(_0xfde6('0x1d'))](_0xfde6('0x34'));}if(!_0x507d55[_0xfde6('0xd')]||!_0x507d55[_0xfde6('0xe')]){throw new db[(_0xfde6('0x1c'))][(_0xfde6('0x1d'))](_0xfde6('0x23'));}_0x5ccefb=_0x507d55;var _0x2a25d6=[];_0x545f35[_0xfde6('0x47')](function(_0x13ab70){_0x2a25d6[_0xfde6('0x48')](checkTranscribeJob(_0x13ab70,_0x1419be,_0x5ccefb));});return BPromise[_0xfde6('0x49')](_0x2a25d6);})[_0xfde6('0x39')](function(_0x19915d){if(_0x19915d){if(!_0x19915d[_0xfde6('0x3a')]||_0x19915d[_0xfde6('0x3a')]!==_0xfde6('0x4a')){logger['error'](util['inspect'](_0x19915d,{'showHidden':![],'depth':null}));}}});}exports['start']=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};
\ No newline at end of file
+var _0x851a=['Sentiment\x20Analysis\x20not\x20requested','sentiment','sentimentAccountId','sentimentRegion','language','Sequelize','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','CloudProvider','findOne','Cloud\x20Provider\x20not\x20available','data2','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Sentiment','SentimentScore','Positive','Mixed','Neutral','FAILED','FailureReason','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','bucket','Negative','catch','name','SequelizeValidationError','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','findAll','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','Setting','Settings\x20not\x20available','transcribeAccountId','Transcribe\x20not\x20configured','forEach','error','start','lodash','request-promise','util','bluebird','../../mysqldb','../../config/logger','transcribe','TranscribeService','Comprehend','detectSentiment','substring','info','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data1','transcribeRegion','then','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJob','TranscriptionJobStatus','COMPLETED','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','fileText','update','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','tempSentiment','ValidationError'];(function(_0x560877,_0xf2a4fa){var _0x31d697=function(_0x22fb0b){while(--_0x22fb0b){_0x560877['push'](_0x560877['shift']());}};_0x31d697(++_0xf2a4fa);}(_0x851a,0x19b));var _0xa851=function(_0x4b2436,_0x452299){_0x4b2436=_0x4b2436-0x0;var _0x4f5ab2=_0x851a[_0x4b2436];return _0x4f5ab2;};var _=require(_0xa851('0x0'));var AWS=require('aws-sdk');var rp=require(_0xa851('0x1'));var util=require(_0xa851('0x2'));var BPromise=require(_0xa851('0x3'));var db=require(_0xa851('0x4'))['db'];var logger=require(_0xa851('0x5'))(_0xa851('0x6'));function getTranscriptionJob(_0x1b30dc,_0x3f317d,_0x4a10c8,_0xdd4995){return new Promise(function(_0x57a7c4,_0x1cba67){var _0x2fc0e0=new AWS[(_0xa851('0x7'))]({'accessKeyId':_0x3f317d,'secretAccessKey':_0x1b30dc,'region':_0x4a10c8});_0x2fc0e0['getTranscriptionJob']({'TranscriptionJobName':_0xdd4995},function(_0x3e1e9d,_0xa2162e){if(_0x3e1e9d){return _0x1cba67(_0x3e1e9d);}else{return _0x57a7c4(_0xa2162e);}});});}function sentiment(_0x1334a1,_0x459f94,_0x51f1be,_0x393900,_0x156b4c){return new Promise(function(_0x5a3726,_0x3b1a9b){var _0x23dd94=new AWS[(_0xa851('0x8'))]({'accessKeyId':_0x459f94,'secretAccessKey':_0x1334a1,'region':_0x51f1be});_0x23dd94[_0xa851('0x9')]({'Text':_0x393900,'LanguageCode':_0x156b4c[_0xa851('0xa')](0x0,0x2)},function(_0x3316aa,_0x18059e){if(_0x3316aa){return _0x3b1a9b(_0x3316aa);}else{return _0x5a3726(_0x18059e);}});});}function checkTranscribeJob(_0x2fb982,_0x24c9b0,_0x184d51){var _0x349d2d;return new BPromise(function(_0x25efd8,_0x94f6d9){logger[_0xa851('0xb')](util[_0xa851('0xc')](_0xa851('0xd'),_0x2fb982['id'],_0x2fb982[_0xa851('0xe')]));return getTranscriptionJob(_0x184d51[_0xa851('0xf')],_0x184d51['data2'],_0x24c9b0[_0xa851('0x10')],_0x2fb982[_0xa851('0xe')])[_0xa851('0x11')](function(_0x3d4dd6){logger['info'](util[_0xa851('0xc')](_0xa851('0x12'),_0x2fb982['id'],_0x2fb982[_0xa851('0xe')],_0x3d4dd6[_0xa851('0x13')][_0xa851('0x14')]));if(!_0x2fb982['fileText']){switch(_0x3d4dd6[_0xa851('0x13')]['TranscriptionJobStatus']){case _0xa851('0x15'):var _0x7afd4={'transcribeStatus':_0x3d4dd6[_0xa851('0x13')][_0xa851('0x14')],'fileUri':_0x3d4dd6[_0xa851('0x13')][_0xa851('0x16')][_0xa851('0x17')]};logger[_0xa851('0xb')](util[_0xa851('0xc')]('[RECORDING:%d]\x20Get\x20transcript',_0x2fb982['id']));return rp({'uri':_0x3d4dd6[_0xa851('0x13')][_0xa851('0x16')]['TranscriptFileUri'],'json':!![]})[_0xa851('0x11')](function(_0x258266){logger['info'](util[_0xa851('0xc')](_0xa851('0x18'),_0x2fb982['id']));if(_0x258266&&_0x258266[_0xa851('0x19')]&&_0x258266[_0xa851('0x19')][_0xa851('0x1a')]&&_0x258266[_0xa851('0x19')][_0xa851('0x1a')][_0xa851('0x1b')]){_0x7afd4[_0xa851('0x1c')]='';for(var _0x3f5428=0x0;_0x3f5428<_0x258266[_0xa851('0x19')][_0xa851('0x1a')]['length'];_0x3f5428++){_0x7afd4[_0xa851('0x1c')]+=_0x258266[_0xa851('0x19')][_0xa851('0x1a')][_0x3f5428]['transcript']+'';}}return _0x2fb982[_0xa851('0x1d')](_0x7afd4);})['then'](function(){logger[_0xa851('0xb')](util['format'](_0xa851('0x1e'),_0x2fb982['id']));if(!_0x2fb982[_0xa851('0x1f')]){throw new db['Sequelize'][(_0xa851('0x20'))](_0xa851('0x21'));}if(!_0x24c9b0[_0xa851('0x22')]||!_0x24c9b0[_0xa851('0x23')]||!_0x24c9b0[_0xa851('0x24')]||!_0x24c9b0[_0xa851('0x25')]||!_0x24c9b0['bucket']){throw new db[(_0xa851('0x26'))][(_0xa851('0x20'))](_0xa851('0x27'));}if(!_0x7afd4['fileText']){throw new Error(_0xa851('0x28'));}if(_0x24c9b0[_0xa851('0x23')]===_0x184d51['id']){return _0x184d51;}else{return db[_0xa851('0x29')][_0xa851('0x2a')]({'where':{'id':_settings[_0xa851('0x23')]}});}})[_0xa851('0x11')](function(_0x1b35f8){if(!_0x1b35f8){throw new db[(_0xa851('0x26'))][(_0xa851('0x20'))](_0xa851('0x2b'));}if(!_0x1b35f8[_0xa851('0xf')]||!_0x1b35f8[_0xa851('0x2c')]){throw new db['Sequelize'][(_0xa851('0x20'))](_0xa851('0x2d'));}_0x349d2d=_0x1b35f8;logger[_0xa851('0xb')](util[_0xa851('0xc')](_0xa851('0x2e'),_0x2fb982['id']));return sentiment(_0x349d2d[_0xa851('0xf')],_0x349d2d['data2'],_0x24c9b0['sentimentRegion'],_0x7afd4[_0xa851('0x1c')],_0x24c9b0[_0xa851('0x25')]);})['then'](function(_0x26ca81){logger[_0xa851('0xb')](util[_0xa851('0xc')](_0xa851('0x2f'),_0x2fb982['id']));return _0x2fb982[_0xa851('0x1d')]({'sentiment':_0x26ca81[_0xa851('0x30')],'sPositive':_0x26ca81[_0xa851('0x31')][_0xa851('0x32')],'sNegative':_0x26ca81[_0xa851('0x31')]['Negative'],'sMixed':_0x26ca81[_0xa851('0x31')][_0xa851('0x33')],'sNeutral':_0x26ca81[_0xa851('0x31')][_0xa851('0x34')]});})[_0xa851('0x11')](function(){logger[_0xa851('0xb')](util['format'](_0xa851('0x1e'),_0x2fb982['id']));_0x25efd8();});case _0xa851('0x35'):return _0x2fb982['update']({'transcribeStatus':_0xa851('0x35'),'failureReason':_0x3d4dd6['TranscriptionJob'][_0xa851('0x36')]})[_0xa851('0x11')](function(){logger[_0xa851('0xb')](util['format'](_0xa851('0x1e'),_0x2fb982['id']));_0x25efd8();});default:logger['info'](util[_0xa851('0xc')](_0xa851('0x37'),_0x2fb982['id']));break;}}else{return BPromise[_0xa851('0x38')]()[_0xa851('0x11')](function(){if(!_0x2fb982[_0xa851('0x1f')]){throw new db[(_0xa851('0x26'))][(_0xa851('0x20'))](_0xa851('0x21'));}if(!_0x24c9b0[_0xa851('0x22')]||!_0x24c9b0[_0xa851('0x23')]||!_0x24c9b0[_0xa851('0x24')]||!_0x24c9b0[_0xa851('0x25')]||!_0x24c9b0[_0xa851('0x39')]){throw new db[(_0xa851('0x26'))][(_0xa851('0x20'))](_0xa851('0x27'));}if(!_0x2fb982[_0xa851('0x1c')]){throw new Error(_0xa851('0x28'));}if(_0x24c9b0[_0xa851('0x23')]===_0x184d51['id']){return _0x184d51;}else{return db['CloudProvider'][_0xa851('0x2a')]({'where':{'id':_settings[_0xa851('0x23')]}});}})[_0xa851('0x11')](function(_0x569128){if(!_0x569128){throw new db['Sequelize'][(_0xa851('0x20'))](_0xa851('0x2b'));}if(!_0x569128['data1']||!_0x569128[_0xa851('0x2c')]){throw new db[(_0xa851('0x26'))][(_0xa851('0x20'))](_0xa851('0x2d'));}_0x349d2d=_0x569128;logger[_0xa851('0xb')](util[_0xa851('0xc')](_0xa851('0x2e'),_0x2fb982['id']));return sentiment(_0x349d2d[_0xa851('0xf')],_0x349d2d['data2'],_0x24c9b0[_0xa851('0x24')],_0x2fb982['fileText'],_0x24c9b0[_0xa851('0x25')]);})[_0xa851('0x11')](function(_0x4effed){logger[_0xa851('0xb')](util[_0xa851('0xc')](_0xa851('0x2f'),_0x2fb982['id']));return _0x2fb982[_0xa851('0x1d')]({'sentiment':_0x4effed[_0xa851('0x30')],'sPositive':_0x4effed[_0xa851('0x31')]['Positive'],'sNegative':_0x4effed[_0xa851('0x31')][_0xa851('0x3a')],'sMixed':_0x4effed[_0xa851('0x31')][_0xa851('0x33')],'sNeutral':_0x4effed[_0xa851('0x31')][_0xa851('0x34')],'transcribeStatus':_0xa851('0x15')});})['then'](function(){logger[_0xa851('0xb')](util[_0xa851('0xc')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x2fb982['id']));_0x25efd8();});}})[_0xa851('0x3b')](function(_0xc5e352){if(_0xc5e352){if(!_0xc5e352[_0xa851('0x3c')]||_0xc5e352[_0xa851('0x3c')]!==_0xa851('0x3d')){logger['error'](util[_0xa851('0xc')](_0xa851('0x3e'),_0x2fb982['id']),util[_0xa851('0x3f')](_0xc5e352,{'showHidden':![],'depth':null}));}}_0x25efd8();});});}function checkTranscribe(){var _0x459c04;var _0x2b489a;var _0xa5dde8;return db['VoiceRecording'][_0xa851('0x40')]({'where':{'transcribeStatus':_0xa851('0x41')}})['then'](function(_0x3c5263){if(!_0x3c5263||!_0x3c5263[_0xa851('0x1b')]){throw new db['Sequelize'][(_0xa851('0x20'))](_0xa851('0x42'));}_0x459c04=_0x3c5263;return db[_0xa851('0x43')][_0xa851('0x2a')]({'where':{'id':0x1}});})[_0xa851('0x11')](function(_0x1bf34b){if(!_0x1bf34b){throw new db['Sequelize'][(_0xa851('0x20'))](_0xa851('0x44'));}_0x2b489a=_0x1bf34b;if(!_0x2b489a[_0xa851('0x6')]||!_0x2b489a[_0xa851('0x45')]||!_0x2b489a[_0xa851('0x10')]||!_0x2b489a[_0xa851('0x25')]||!_0x2b489a[_0xa851('0x39')]){throw new db[(_0xa851('0x26'))][(_0xa851('0x20'))](_0xa851('0x46'));}return db[_0xa851('0x29')][_0xa851('0x2a')]({'where':{'id':_0x2b489a[_0xa851('0x45')]}});})[_0xa851('0x11')](function(_0x492b9a){if(!_0x492b9a){throw new db[(_0xa851('0x26'))][(_0xa851('0x20'))](_0xa851('0x2b'));}if(!_0x492b9a[_0xa851('0xf')]||!_0x492b9a[_0xa851('0x2c')]){throw new db[(_0xa851('0x26'))][(_0xa851('0x20'))](_0xa851('0x2d'));}_0xa5dde8=_0x492b9a;var _0x4d838b=[];_0x459c04[_0xa851('0x47')](function(_0x94eacd){_0x4d838b['push'](checkTranscribeJob(_0x94eacd,_0x2b489a,_0xa5dde8));});return BPromise['all'](_0x4d838b);})[_0xa851('0x3b')](function(_0x188ae8){if(_0x188ae8){if(!_0x188ae8[_0xa851('0x3c')]||_0x188ae8[_0xa851('0x3c')]!==_0xa851('0x3d')){logger[_0xa851('0x48')](util[_0xa851('0x3f')](_0x188ae8,{'showHidden':![],'depth':null}));}}});}exports[_0xa851('0x49')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};
\ No newline at end of file
index 82590c1..7b728eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x868c=['schedule','defaults','redis','localhost','WhatsappInteraction','findAll','lastMsgAt','subtract','hours','length','info','[WHATSAPP]\x20Interactions\x20to\x20close:','join','update','system','timeout','format','then','[WHATSAPP]\x20Sending\x20updates\x20for\x20interactions:','catch','[WHATSAPP]\x20Error\x20closing\x20interactions','inspect','lodash','moment','util','../../config/environment','../logger'];(function(_0x217aec,_0x374e80){var _0x52ced5=function(_0x1be65b){while(--_0x1be65b){_0x217aec['push'](_0x217aec['shift']());}};_0x52ced5(++_0x374e80);}(_0x868c,0x1e1));var _0xc868=function(_0x2b81be,_0x544bdf){_0x2b81be=_0x2b81be-0x0;var _0x8ed4a7=_0x868c[_0x2b81be];return _0x8ed4a7;};'use strict';var _=require(_0xc868('0x0'));var moment=require(_0xc868('0x1'));var Redis=require('ioredis');var util=require(_0xc868('0x2'));var config=require(_0xc868('0x3'));var db=require('../../mysqldb')['db'];var logger=require(_0xc868('0x4'))(_0xc868('0x5'));config['redis']=_[_0xc868('0x6')](config[_0xc868('0x7')],{'host':_0xc868('0x8'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xc868('0x7')]));function closeInteractions(){var _0xbf4b13=[];return db[_0xc868('0x9')][_0xc868('0xa')]({'raw':!![],'attributes':['id',_0xc868('0xb')],'where':{'closed':![],'lastMsgDirection':'in','lastMsgAt':{'$lt':moment()[_0xc868('0xc')](0x18,_0xc868('0xd'))}}})['then'](function(_0x1831ff){if(_0x1831ff&&_0x1831ff[_0xc868('0xe')]){_0xbf4b13=_['map'](_0x1831ff||[],'id');logger[_0xc868('0xf')](_0xc868('0x10'),_0xbf4b13[_0xc868('0x11')]());return db[_0xc868('0x9')][_0xc868('0x12')]({'closeReason':_0xc868('0x13'),'disposition':_0xc868('0x14'),'closed':!![],'closedAt':moment()[_0xc868('0x15')]('YYYY-MM-DD\x20HH:mm:ss')},{'where':{'id':_0xbf4b13}});}})[_0xc868('0x16')](function(){if(_0xbf4b13&&_0xbf4b13[_0xc868('0xe')]){logger['info'](_0xc868('0x17'),_0xbf4b13['join']());for(var _0x2fa613=0x0;_0x2fa613<_0xbf4b13[_0xc868('0xe')];_0x2fa613++){io['emit']('whatsappInteraction:update',{'id':_0xbf4b13[_0x2fa613],'closed':!![]});}}})[_0xc868('0x18')](function(_0x76aaf9){logger['error'](_0xc868('0x19'),_0x76aaf9?util[_0xc868('0x1a')](_0x76aaf9,{'showHidden':![],'depth':null}):'');});}exports['start']=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
+var _0x0928=['ioredis','util','../../config/environment','../../mysqldb','../logger','schedule','redis','defaults','localhost','WhatsappInteraction','findAll','lastMsgAt','subtract','then','length','map','info','[WHATSAPP]\x20Interactions\x20to\x20close:','join','update','timeout','YYYY-MM-DD\x20HH:mm:ss','[WHATSAPP]\x20Sending\x20updates\x20for\x20interactions:','emit','whatsappInteraction:update','error','[WHATSAPP]\x20Error\x20closing\x20interactions','inspect','start','lodash'];(function(_0x313801,_0x8215cd){var _0xf0b386=function(_0x4d347d){while(--_0x4d347d){_0x313801['push'](_0x313801['shift']());}};_0xf0b386(++_0x8215cd);}(_0x0928,0x1c1));var _0x8092=function(_0x5afb63,_0x57b2d4){_0x5afb63=_0x5afb63-0x0;var _0x547738=_0x0928[_0x5afb63];return _0x547738;};'use strict';var _=require(_0x8092('0x0'));var moment=require('moment');var Redis=require(_0x8092('0x1'));var util=require(_0x8092('0x2'));var config=require(_0x8092('0x3'));var db=require(_0x8092('0x4'))['db'];var logger=require(_0x8092('0x5'))(_0x8092('0x6'));config[_0x8092('0x7')]=_[_0x8092('0x8')](config[_0x8092('0x7')],{'host':_0x8092('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x8092('0x7')]));function closeInteractions(){var _0x17a3d0=[];return db[_0x8092('0xa')][_0x8092('0xb')]({'raw':!![],'attributes':['id',_0x8092('0xc')],'where':{'closed':![],'lastMsgDirection':'in','lastMsgAt':{'$lt':moment()[_0x8092('0xd')](0x18,'hours')}}})[_0x8092('0xe')](function(_0x44292e){if(_0x44292e&&_0x44292e[_0x8092('0xf')]){_0x17a3d0=_[_0x8092('0x10')](_0x44292e||[],'id');logger[_0x8092('0x11')](_0x8092('0x12'),_0x17a3d0[_0x8092('0x13')]());return db[_0x8092('0xa')][_0x8092('0x14')]({'closeReason':'system','disposition':_0x8092('0x15'),'closed':!![],'closedAt':moment()['format'](_0x8092('0x16'))},{'where':{'id':_0x17a3d0}});}})['then'](function(){if(_0x17a3d0&&_0x17a3d0[_0x8092('0xf')]){logger['info'](_0x8092('0x17'),_0x17a3d0[_0x8092('0x13')]());for(var _0x502e82=0x0;_0x502e82<_0x17a3d0[_0x8092('0xf')];_0x502e82++){io[_0x8092('0x18')](_0x8092('0x19'),{'id':_0x17a3d0[_0x502e82],'closed':!![]});}}})['catch'](function(_0x47fc39){logger[_0x8092('0x1a')](_0x8092('0x1b'),_0x47fc39?util[_0x8092('0x1c')](_0x47fc39,{'showHidden':![],'depth':null}):'');});}exports[_0x8092('0x1d')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
index 8adc093..429765e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d27=['push','innocenzo.biondo','@xcally.com','now','Innocenzo','CmContact','destroy','then','bulkCreate','log','finished\x20populating','contacts1','CmHopper','hopper1','contacts2','hopper2','catch','util','../mysqldb'];(function(_0xb9ff80,_0xc71502){var _0x130361=function(_0xac32a3){while(--_0xac32a3){_0xb9ff80['push'](_0xb9ff80['shift']());}};_0x130361(++_0xc71502);}(_0x8d27,0x108));var _0x78d2=function(_0x147d2e,_0xd58fb8){_0x147d2e=_0x147d2e-0x0;var _0x55a923=_0x8d27[_0x147d2e];return _0x55a923;};'use strict';var util=require(_0x78d2('0x0'));var db=require(_0x78d2('0x1'))['db'];var contacts=[];var hopper=[];var contacts2=[];var hopper2=[];for(var i=0x1;i<=0x4b0;i+=0x1){contacts[_0x78d2('0x2')]({'id':i,'firstName':'Innocenzo'+i,'lastName':'Biondo'+i,'phone':0xf879fb460+i,'email':_0x78d2('0x3')+i+_0x78d2('0x4')});}for(var i=0x1;i<=0x4b0;i+=0x1){hopper[_0x78d2('0x2')]({'id':i,'active':![],'scheduledat':Date[_0x78d2('0x5')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0x78d2('0x5')](),'updatedAt':Date[_0x78d2('0x5')]()});}for(var i=0x4b1;i<=0x960;i+=0x1){contacts2[_0x78d2('0x2')]({'id':i,'firstName':_0x78d2('0x6')+i,'lastName':'Biondo'+i,'phone':0xf879fb460+i,'email':'innocenzo.biondo'+i+_0x78d2('0x4')});}for(var i=0x4b1;i<=0x960;i+=0x1){hopper2[_0x78d2('0x2')]({'id':i,'active':![],'scheduledat':Date[_0x78d2('0x5')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0x78d2('0x5')](),'updatedAt':Date[_0x78d2('0x5')]()});}db[_0x78d2('0x7')][_0x78d2('0x8')]({'where':{}})[_0x78d2('0x9')](function(){return db[_0x78d2('0x7')][_0x78d2('0xa')](contacts);})[_0x78d2('0x9')](function(){console[_0x78d2('0xb')](_0x78d2('0xc'),_0x78d2('0xd'));return db[_0x78d2('0xe')][_0x78d2('0x8')]({'where':{}});})[_0x78d2('0x9')](function(){return db[_0x78d2('0xe')][_0x78d2('0xa')](hopper);})[_0x78d2('0x9')](function(){console[_0x78d2('0xb')](_0x78d2('0xc'),_0x78d2('0xf'));return db[_0x78d2('0x7')]['bulkCreate'](contacts2);})[_0x78d2('0x9')](function(){console[_0x78d2('0xb')](_0x78d2('0xc'),_0x78d2('0x10'));return db[_0x78d2('0xe')]['bulkCreate'](hopper2);})[_0x78d2('0x9')](function(){console[_0x78d2('0xb')](_0x78d2('0xc'),_0x78d2('0x11'));})[_0x78d2('0x12')](function(_0x3f968b){console[_0x78d2('0xb')](_0x3f968b);});
\ No newline at end of file
+var _0x13c0=['innocenzo.biondo','CmContact','destroy','then','bulkCreate','log','finished\x20populating','CmHopper','hopper1','contacts2','hopper2','catch','util','../mysqldb','push','Innocenzo','Biondo','now'];(function(_0x1e0237,_0x5456bd){var _0x2a68fa=function(_0xd1c359){while(--_0xd1c359){_0x1e0237['push'](_0x1e0237['shift']());}};_0x2a68fa(++_0x5456bd);}(_0x13c0,0xc0));var _0x013c=function(_0x2af160,_0x765b1){_0x2af160=_0x2af160-0x0;var _0x439d67=_0x13c0[_0x2af160];return _0x439d67;};'use strict';var util=require(_0x013c('0x0'));var db=require(_0x013c('0x1'))['db'];var contacts=[];var hopper=[];var contacts2=[];var hopper2=[];for(var i=0x1;i<=0x4b0;i+=0x1){contacts[_0x013c('0x2')]({'id':i,'firstName':_0x013c('0x3')+i,'lastName':_0x013c('0x4')+i,'phone':0xf879fb460+i,'email':'innocenzo.biondo'+i+'@xcally.com'});}for(var i=0x1;i<=0x4b0;i+=0x1){hopper[_0x013c('0x2')]({'id':i,'active':![],'scheduledat':Date[_0x013c('0x5')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0x013c('0x5')](),'updatedAt':Date['now']()});}for(var i=0x4b1;i<=0x960;i+=0x1){contacts2[_0x013c('0x2')]({'id':i,'firstName':_0x013c('0x3')+i,'lastName':_0x013c('0x4')+i,'phone':0xf879fb460+i,'email':_0x013c('0x6')+i+'@xcally.com'});}for(var i=0x4b1;i<=0x960;i+=0x1){hopper2[_0x013c('0x2')]({'id':i,'active':![],'scheduledat':Date[_0x013c('0x5')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0x013c('0x5')](),'updatedAt':Date[_0x013c('0x5')]()});}db[_0x013c('0x7')][_0x013c('0x8')]({'where':{}})[_0x013c('0x9')](function(){return db[_0x013c('0x7')][_0x013c('0xa')](contacts);})[_0x013c('0x9')](function(){console[_0x013c('0xb')](_0x013c('0xc'),'contacts1');return db['CmHopper'][_0x013c('0x8')]({'where':{}});})[_0x013c('0x9')](function(){return db[_0x013c('0xd')]['bulkCreate'](hopper);})[_0x013c('0x9')](function(){console[_0x013c('0xb')](_0x013c('0xc'),_0x013c('0xe'));return db[_0x013c('0x7')][_0x013c('0xa')](contacts2);})[_0x013c('0x9')](function(){console[_0x013c('0xb')](_0x013c('0xc'),_0x013c('0xf'));return db[_0x013c('0xd')]['bulkCreate'](hopper2);})[_0x013c('0x9')](function(){console[_0x013c('0xb')]('finished\x20populating',_0x013c('0x10'));})[_0x013c('0x11')](function(_0x44359e){console[_0x013c('0xb')](_0x44359e);});
\ No newline at end of file
index 69ed76d..c5ae74c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf86d=['/etc/pki/tls/certs/motion.crt','/etc/pki/tls/private/motion.key','actpass','\x22%s\x22\x20<%s>','bulkCreate','add\x20user','catch','push','format','agent','friend','udp','wss','all','ulaw','%s%s','yes'];(function(_0xbcd8d9,_0x16451e){var _0x4e7d8f=function(_0x1f198a){while(--_0x1f198a){_0xbcd8d9['push'](_0xbcd8d9['shift']());}};_0x4e7d8f(++_0x16451e);}(_0xf86d,0xa0));var _0xdf86=function(_0x531d15,_0x599af5){_0x531d15=_0x531d15-0x0;var _0x271a18=_0xf86d[_0x531d15];return _0x271a18;};'use strict';var util=require('util');var db=require('../mysqldb')['db'];var users=[];for(var i=0x1;i<=0xc8;i+=0x1){users[_0xdf86('0x0')]({'name':util[_0xdf86('0x1')]('%s%s',_0xdf86('0x2'),i),'fullname':util[_0xdf86('0x1')]('%s%s',_0xdf86('0x2'),i),'email':util['format']('%s%s@xcally.com',_0xdf86('0x2'),i),'role':_0xdf86('0x2'),'password':'password','internal':0xfa0+i,'type':_0xdf86('0x3'),'transport':[_0xdf86('0x4'),'ws',_0xdf86('0x5')],'disallow':[_0xdf86('0x6')],'allow':[_0xdf86('0x7')],'defaultuser':util[_0xdf86('0x1')](_0xdf86('0x8'),_0xdf86('0x2'),i),'encryption':_0xdf86('0x9'),'avpf':_0xdf86('0x9'),'force_avp':_0xdf86('0x9'),'icesupport':'yes','dtlsenable':_0xdf86('0x9'),'dtlsverify':'no','dtlscertfile':_0xdf86('0xa'),'dtlsprivatekey':_0xdf86('0xb'),'dtlssetup':_0xdf86('0xc'),'callerid':util['format'](_0xdf86('0xd'),util[_0xdf86('0x1')](_0xdf86('0x8'),_0xdf86('0x2'),i),0xfa0+i)});}db['User'][_0xdf86('0xe')](users)['then'](function(){console['log'](_0xdf86('0xf'));})[_0xdf86('0x10')](function(_0x300406){console['log'](_0x300406);});
\ No newline at end of file
+var _0x5b57=['/etc/pki/tls/private/motion.key','actpass','\x22%s\x22\x20<%s>','bulkCreate','log','add\x20user','catch','util','push','agent','format','%s%s','%s%s@xcally.com','password','friend','udp','wss','ulaw','yes','/etc/pki/tls/certs/motion.crt'];(function(_0x30d371,_0x198ed4){var _0x5cc451=function(_0x567e71){while(--_0x567e71){_0x30d371['push'](_0x30d371['shift']());}};_0x5cc451(++_0x198ed4);}(_0x5b57,0xf7));var _0x75b5=function(_0x162ba7,_0x3b5c73){_0x162ba7=_0x162ba7-0x0;var _0x83254e=_0x5b57[_0x162ba7];return _0x83254e;};'use strict';var util=require(_0x75b5('0x0'));var db=require('../mysqldb')['db'];var users=[];for(var i=0x1;i<=0xc8;i+=0x1){users[_0x75b5('0x1')]({'name':util['format']('%s%s',_0x75b5('0x2'),i),'fullname':util[_0x75b5('0x3')](_0x75b5('0x4'),_0x75b5('0x2'),i),'email':util[_0x75b5('0x3')](_0x75b5('0x5'),_0x75b5('0x2'),i),'role':'agent','password':_0x75b5('0x6'),'internal':0xfa0+i,'type':_0x75b5('0x7'),'transport':[_0x75b5('0x8'),'ws',_0x75b5('0x9')],'disallow':['all'],'allow':[_0x75b5('0xa')],'defaultuser':util[_0x75b5('0x3')](_0x75b5('0x4'),'agent',i),'encryption':_0x75b5('0xb'),'avpf':_0x75b5('0xb'),'force_avp':_0x75b5('0xb'),'icesupport':'yes','dtlsenable':_0x75b5('0xb'),'dtlsverify':'no','dtlscertfile':_0x75b5('0xc'),'dtlsprivatekey':_0x75b5('0xd'),'dtlssetup':_0x75b5('0xe'),'callerid':util[_0x75b5('0x3')](_0x75b5('0xf'),util[_0x75b5('0x3')]('%s%s','agent',i),0xfa0+i)});}db['User'][_0x75b5('0x10')](users)['then'](function(){console[_0x75b5('0x11')](_0x75b5('0x12'));})[_0x75b5('0x13')](function(_0x471143){console[_0x75b5('0x11')](_0x471143);});
\ No newline at end of file
index 3162fac..64c92d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6659=['then','autoAssociation','VoiceQueues','FaxQueues','MailQueues','OpenchannelQueues','WhatsappQueues','findAll','Trunks','IvrCampaigns','UserProfileResource','Campaign','format','length','handshake','find','userProfileId','ChatInteractions','MailInteraction','MailInteractions','FaxInteraction','SmsInteraction','SmsInteractions','OpenchannelInteractions','WhatsappInteraction','WhatsappInteractions','user:%s','voice:inbound','voice:outbound','hasOwnProperty','include','push','VoiceQueue','ChatQueue','FaxQueue','SmsQueue','OpenchannelQueue','WhatsappQueue','Trunk','user','ChatQueues','MailQueue','getChatQueues','getSmsQueues','getWhatsappQueues','all','fax','openchannel','whatsapp','telephone:%s','trunk:%s','map','removeChatInteractions','emit','user_has_chat_interactions:remove','removeMailInteractions','user_has_mail_interactions:remove','FaxInteractions','removeFaxInteractions','user_has_fax_interactions:remove','leave','removeSmsInteractions','user_has_sms_interactions:remove','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','catch','join','default','connection','address','request','remoteAddress','remotePort','connectedAt','log','SocketIO\x20','nsp','DISCONNECTED','CONNECTED','lodash','util','bluebird','../mysqldb','./environment','name','Agents','User','role','agent','telephone','type','ivr','UserProfileSection','findOne'];(function(_0x15f429,_0x42df31){var _0x367132=function(_0x9381e2){while(--_0x9381e2){_0x15f429['push'](_0x15f429['shift']());}};_0x367132(++_0x42df31);}(_0x6659,0x169));var _0x9665=function(_0x92549d,_0x3f6af8){_0x92549d=_0x92549d-0x0;var _0x9d93=_0x6659[_0x92549d];return _0x9d93;};'use strict';var _=require(_0x9665('0x0'));var util=require(_0x9665('0x1'));var BPromise=require(_0x9665('0x2'));var db=require(_0x9665('0x3'))['db'];var config=require(_0x9665('0x4'));var queryQueues={'attributes':['id',_0x9665('0x5')],'include':[{'as':_0x9665('0x6'),'model':db[_0x9665('0x7')],'attributes':['id','name',_0x9665('0x8')],'raw':!![],'where':{'role':_0x9665('0x9')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x9665('0x5')],'where':{'role':_0x9665('0xa')}};var queryTrunks={'raw':!![],'attributes':['id',_0x9665('0x5')]};var queryAgents={'raw':!![],'attributes':['id',_0x9665('0x5')],'where':{'role':'agent'}};var queryCampaigns={'raw':!![],'attributes':['id',_0x9665('0x5'),_0x9665('0xb')],'where':{'type':_0x9665('0xc')}};function getAssociatedResources(_0x432ad9,_0x2a3374,_0x439736){return db[_0x9665('0xd')][_0x9665('0xe')]({'where':{'name':_0x432ad9,'userProfileId':_0x2a3374},'raw':!![]})[_0x9665('0xf')](function(_0x1fc5b8){if(_0x1fc5b8){if(_0x1fc5b8[_0x9665('0x10')]){switch(_0x432ad9){case _0x9665('0x11'):case'ChatQueues':case _0x9665('0x12'):case'SmsQueues':case _0x9665('0x13'):case _0x9665('0x14'):case _0x9665('0x15'):return db[_0x439736][_0x9665('0x16')](queryQueues);case'Telephones':return db[_0x439736][_0x9665('0x16')](queryTelephones);case _0x9665('0x17'):return db[_0x439736][_0x9665('0x16')](queryTrunks);case _0x9665('0x18'):return db[_0x439736][_0x9665('0x16')](queryCampaigns);}}else{return db[_0x9665('0x19')][_0x9665('0x16')]({'attributes':['resourceId'],'where':{'sectionId':_0x1fc5b8['id']},'raw':!![]})[_0x9665('0xf')](function(_0x511cfb){if(_0x511cfb){var _0x3bdcd9={'where':{'id':_['map'](_0x511cfb,'resourceId')},'raw':!![]};switch(_0x439736){case _0x9665('0x7'):_0x3bdcd9['where']['role']=_0x9665('0xa');break;case _0x9665('0x1a'):_0x3bdcd9['where']['type']=_0x9665('0xc');break;}return db[_0x439736][_0x9665('0x16')](_0x3bdcd9);}else{return[];}});}}else{return[];}})[_0x9665('0xf')](function(_0x33fed9){return _0x33fed9;});}function joinOrLeaveQueues(_0x273ad3,_0xd45d66,_0xbd028,_0x349200){_0x273ad3[_0xd45d66](util[_0x9665('0x1b')]('%s:queue:%s',_0xbd028,_0x349200[_0x9665('0x5')]));if(_0x349200[_0x9665('0x6')]){for(var _0x117090=0x0;_0x117090<_0x349200[_0x9665('0x6')][_0x9665('0x1c')];_0x117090+=0x1){_0x273ad3[_0xd45d66](util[_0x9665('0x1b')]('user:%s',_0x349200[_0x9665('0x6')][_0x117090][_0x9665('0x5')]));}}}function joinOrLeave(_0x224b50,_0x3b987b,_0x3bff19){var _0x1d11c9;if(_0x224b50[_0x9665('0x1d')]['query']['id']){db[_0x9665('0x7')][_0x9665('0x1e')]({'attributes':['id',_0x9665('0x5'),'role',_0x9665('0x1f')],'where':{'id':_0x224b50[_0x9665('0x1d')]['query']['id']},'include':[{'model':db['ChatInteraction'],'as':_0x9665('0x20'),'attributes':['id'],'raw':!![]},{'model':db[_0x9665('0x21')],'as':_0x9665('0x22'),'attributes':['id'],'raw':!![]},{'model':db[_0x9665('0x23')],'as':'FaxInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x9665('0x24')],'as':_0x9665('0x25'),'attributes':['id'],'raw':!![]},{'model':db['OpenchannelInteraction'],'as':_0x9665('0x26'),'attributes':['id'],'raw':!![]},{'model':db[_0x9665('0x27')],'as':_0x9665('0x28'),'attributes':['id'],'raw':!![]}]})[_0x9665('0xf')](function(_0x1e09d6){if(_0x1e09d6){_0x1d11c9=_0x1e09d6;_0x224b50[_0x3b987b](util[_0x9665('0x1b')](_0x9665('0x29'),_0x1e09d6['name']));var _0x37161e=[];switch(_0x1e09d6[_0x9665('0x8')]){case'admin':_0x224b50[_0x3b987b](_0x9665('0x2a'));_0x224b50[_0x3b987b](_0x9665('0x2b'));if(queryQueues[_0x9665('0x2c')](_0x9665('0x2d'))){delete queryQueues[_0x9665('0x2d')];}_0x37161e[_0x9665('0x2e')](db[_0x9665('0x2f')][_0x9665('0x16')](queryQueues));_0x37161e[_0x9665('0x2e')](db[_0x9665('0x30')][_0x9665('0x16')](queryQueues));_0x37161e[_0x9665('0x2e')](db[_0x9665('0x31')][_0x9665('0x16')](queryQueues));_0x37161e[_0x9665('0x2e')](db[_0x9665('0x32')][_0x9665('0x16')](queryQueues));_0x37161e[_0x9665('0x2e')](db['MailQueue'][_0x9665('0x16')](queryQueues));_0x37161e['push'](db[_0x9665('0x33')][_0x9665('0x16')](queryQueues));_0x37161e[_0x9665('0x2e')](db[_0x9665('0x34')][_0x9665('0x16')](queryQueues));_0x37161e[_0x9665('0x2e')](db['User'][_0x9665('0x16')](queryTelephones));_0x37161e[_0x9665('0x2e')](db[_0x9665('0x35')][_0x9665('0x16')](queryTrunks));_0x37161e[_0x9665('0x2e')](db['Campaign'][_0x9665('0x16')](queryCampaigns));_0x37161e['push'](db[_0x9665('0x7')][_0x9665('0x16')](queryAgents));break;case _0x9665('0x36'):_0x224b50[_0x3b987b](_0x9665('0x2a'));_0x224b50[_0x3b987b](_0x9665('0x2b'));_0x37161e[_0x9665('0x2e')](getAssociatedResources(_0x9665('0x11'),_0x1e09d6[_0x9665('0x1f')],_0x9665('0x2f')));_0x37161e[_0x9665('0x2e')](getAssociatedResources(_0x9665('0x37'),_0x1e09d6['userProfileId'],_0x9665('0x30')));_0x37161e[_0x9665('0x2e')](getAssociatedResources(_0x9665('0x12'),_0x1e09d6[_0x9665('0x1f')],_0x9665('0x31')));_0x37161e[_0x9665('0x2e')](getAssociatedResources('SmsQueues',_0x1e09d6[_0x9665('0x1f')],_0x9665('0x32')));_0x37161e[_0x9665('0x2e')](getAssociatedResources(_0x9665('0x13'),_0x1e09d6['userProfileId'],_0x9665('0x38')));_0x37161e[_0x9665('0x2e')](getAssociatedResources('OpenchannelQueues',_0x1e09d6['userProfileId'],'OpenchannelQueue'));_0x37161e['push'](getAssociatedResources(_0x9665('0x15'),_0x1e09d6[_0x9665('0x1f')],_0x9665('0x34')));_0x37161e[_0x9665('0x2e')](getAssociatedResources('Telephones',_0x1e09d6[_0x9665('0x1f')],'User'));_0x37161e[_0x9665('0x2e')](getAssociatedResources(_0x9665('0x17'),_0x1e09d6[_0x9665('0x1f')],_0x9665('0x35')));_0x37161e[_0x9665('0x2e')](getAssociatedResources(_0x9665('0x18'),_0x1e09d6['userProfileId'],_0x9665('0x1a')));_0x37161e['push'](db[_0x9665('0x7')][_0x9665('0x16')](queryAgents));break;case _0x9665('0x9'):_0x224b50[_0x3b987b](_0x9665('0x2a'));_0x224b50[_0x3b987b](_0x9665('0x2b'));_0x37161e[_0x9665('0x2e')](_0x1e09d6['getVoiceQueues']({'attributes':['id',_0x9665('0x5')]}));_0x37161e[_0x9665('0x2e')](_0x1e09d6[_0x9665('0x39')]({'attributes':['id','name']}));_0x37161e[_0x9665('0x2e')](_0x1e09d6['getFaxQueues']({'attributes':['id',_0x9665('0x5')]}));_0x37161e[_0x9665('0x2e')](_0x1e09d6[_0x9665('0x3a')]({'attributes':['id','name']}));_0x37161e[_0x9665('0x2e')](_0x1e09d6['getMailQueues']({'attributes':['id',_0x9665('0x5')]}));_0x37161e['push'](_0x1e09d6['getOpenchannelQueues']({'attributes':['id','name']}));_0x37161e[_0x9665('0x2e')](_0x1e09d6[_0x9665('0x3b')]({'attributes':['id',_0x9665('0x5')]}));break;}return BPromise[_0x9665('0x3c')](_0x37161e);}})[_0x9665('0xf')](function(_0x2f87e6){if(_0x2f87e6&&_0x2f87e6[_0x9665('0x1c')]){for(var _0x4d37fb=0x0;_0x4d37fb<_0x2f87e6[_0x9665('0x1c')];_0x4d37fb+=0x1){for(var _0x4c1e98=0x0;_0x4c1e98<_0x2f87e6[_0x4d37fb]['length'];_0x4c1e98+=0x1){switch(_0x4d37fb){case 0x0:joinOrLeaveQueues(_0x224b50,_0x3b987b,'voice',_0x2f87e6[_0x4d37fb][_0x4c1e98]);break;case 0x1:joinOrLeaveQueues(_0x224b50,_0x3b987b,'chat',_0x2f87e6[_0x4d37fb][_0x4c1e98]);break;case 0x2:joinOrLeaveQueues(_0x224b50,_0x3b987b,_0x9665('0x3d'),_0x2f87e6[_0x4d37fb][_0x4c1e98]);break;case 0x3:joinOrLeaveQueues(_0x224b50,_0x3b987b,'sms',_0x2f87e6[_0x4d37fb][_0x4c1e98]);break;case 0x4:joinOrLeaveQueues(_0x224b50,_0x3b987b,'mail',_0x2f87e6[_0x4d37fb][_0x4c1e98]);break;case 0x5:joinOrLeaveQueues(_0x224b50,_0x3b987b,_0x9665('0x3e'),_0x2f87e6[_0x4d37fb][_0x4c1e98]);break;case 0x6:joinOrLeaveQueues(_0x224b50,_0x3b987b,_0x9665('0x3f'),_0x2f87e6[_0x4d37fb][_0x4c1e98]);break;case 0x7:if(_0x1d11c9['role']!==_0x9665('0x9'))_0x224b50[_0x3b987b](util[_0x9665('0x1b')](_0x9665('0x40'),_0x2f87e6[_0x4d37fb][_0x4c1e98][_0x9665('0x5')]));break;case 0x8:if(_0x1d11c9[_0x9665('0x8')]!=='agent')_0x224b50[_0x3b987b](util['format'](_0x9665('0x41'),_0x2f87e6[_0x4d37fb][_0x4c1e98][_0x9665('0x5')]));break;case 0x9:if(_0x1d11c9[_0x9665('0x8')]!==_0x9665('0x9'))_0x224b50[_0x3b987b](util[_0x9665('0x1b')]('campaign:%s:%s',_0x2f87e6[_0x4d37fb][_0x4c1e98]['type'],_0x2f87e6[_0x4d37fb][_0x4c1e98]['name']));break;case 0xa:_0x224b50[_0x3b987b](util[_0x9665('0x1b')](_0x9665('0x29'),_0x2f87e6[_0x4d37fb][_0x4c1e98][_0x9665('0x5')]));break;}}}}})[_0x9665('0xf')](function(){if(_0x3b987b==='leave'){var _0x390923=_[_0x9665('0x42')](_0x1d11c9[_0x9665('0x20')],'id');return _0x1d11c9[_0x9665('0x43')](_0x390923)[_0x9665('0xf')](function(){for(var _0x4b01b4=0x0;_0x4b01b4<_0x390923[_0x9665('0x1c')];_0x4b01b4+=0x1){_0x3bff19[_0x9665('0x44')](_0x9665('0x45'),{'ChatInteractionId':Number(_0x390923[_0x4b01b4]),'UserId':Number(_0x1d11c9['id'])});}});}})[_0x9665('0xf')](function(){if(_0x3b987b==='leave'){var _0x49d147=_[_0x9665('0x42')](_0x1d11c9['MailInteractions'],'id');return _0x1d11c9[_0x9665('0x46')](_0x49d147)[_0x9665('0xf')](function(){for(var _0x423fb9=0x0;_0x423fb9<_0x49d147[_0x9665('0x1c')];_0x423fb9+=0x1){_0x3bff19[_0x9665('0x44')](_0x9665('0x47'),{'MailInteractionId':Number(_0x49d147[_0x423fb9]),'UserId':Number(_0x1d11c9['id'])});}});}})[_0x9665('0xf')](function(){if(_0x3b987b==='leave'){var _0xfd654f=_[_0x9665('0x42')](_0x1d11c9[_0x9665('0x48')],'id');return _0x1d11c9[_0x9665('0x49')](_0xfd654f)['then'](function(){for(var _0x54c7da=0x0;_0x54c7da<_0xfd654f[_0x9665('0x1c')];_0x54c7da+=0x1){_0x3bff19['emit'](_0x9665('0x4a'),{'FaxInteractionId':Number(_0xfd654f[_0x54c7da]),'UserId':Number(_0x1d11c9['id'])});}});}})['then'](function(){if(_0x3b987b===_0x9665('0x4b')){var _0x825f0=_[_0x9665('0x42')](_0x1d11c9['SmsInteractions'],'id');return _0x1d11c9[_0x9665('0x4c')](_0x825f0)['then'](function(){for(var _0x1d8736=0x0;_0x1d8736<_0x825f0[_0x9665('0x1c')];_0x1d8736+=0x1){_0x3bff19[_0x9665('0x44')](_0x9665('0x4d'),{'SmsInteractionId':Number(_0x825f0[_0x1d8736]),'UserId':Number(_0x1d11c9['id'])});}});}})[_0x9665('0xf')](function(){if(_0x3b987b==='leave'){var _0x5c6848=_[_0x9665('0x42')](_0x1d11c9[_0x9665('0x26')],'id');return _0x1d11c9['removeOpenchannelInteractions'](_0x5c6848)['then'](function(){for(var _0x30b0dc=0x0;_0x30b0dc<_0x5c6848['length'];_0x30b0dc+=0x1){_0x3bff19[_0x9665('0x44')]('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0x5c6848[_0x30b0dc]),'UserId':Number(_0x1d11c9['id'])});}});}})['then'](function(){if(_0x3b987b===_0x9665('0x4b')){var _0x5194c2=_['map'](_0x1d11c9['WhatsappInteractions'],'id');return _0x1d11c9[_0x9665('0x4e')](_0x5194c2)[_0x9665('0xf')](function(){for(var _0x9bd252=0x0;_0x9bd252<_0x5194c2[_0x9665('0x1c')];_0x9bd252+=0x1){_0x3bff19[_0x9665('0x44')](_0x9665('0x4f'),{'WhatsappInteractionId':Number(_0x5194c2[_0x9bd252]),'UserId':Number(_0x1d11c9['id'])});}});}})[_0x9665('0x50')](function(_0x40bffb){_0x224b50['log'](_0x40bffb);});}}function onDisconnect(_0x249d4a,_0x5298a6){joinOrLeave(_0x249d4a,_0x9665('0x4b'),_0x5298a6);}function onConnect(_0x5e64eb){joinOrLeave(_0x5e64eb,_0x9665('0x51'));}exports[_0x9665('0x52')]=function(_0x590178){_0x590178['on'](_0x9665('0x53'),function(_0x1e5b8b){_0x1e5b8b['setMaxListeners'](0x0);_0x1e5b8b[_0x9665('0x54')]=_0x1e5b8b[_0x9665('0x55')][_0x9665('0x53')][_0x9665('0x56')]+':'+_0x1e5b8b['request'][_0x9665('0x53')][_0x9665('0x57')];_0x1e5b8b[_0x9665('0x58')]=new Date();_0x1e5b8b[_0x9665('0x59')]=function(_0x4607d2){console[_0x9665('0x59')](_0x9665('0x5a')+_0x1e5b8b[_0x9665('0x5b')][_0x9665('0x5')]+'['+_0x1e5b8b[_0x9665('0x54')]+']',_0x4607d2);};_0x1e5b8b['on']('disconnect',function(){onDisconnect(_0x1e5b8b,_0x590178);_0x1e5b8b[_0x9665('0x59')](_0x9665('0x5c'));});onConnect(_0x1e5b8b);_0x1e5b8b['log'](_0x9665('0x5d'));});};
\ No newline at end of file
+var _0xcc58=['Campaign','format','find','handshake','ChatInteraction','MailInteraction','MailInteractions','FaxInteraction','FaxInteractions','SmsInteraction','SmsInteractions','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteractions','user:%s','voice:inbound','voice:outbound','hasOwnProperty','include','push','ChatQueue','FaxQueue','MailQueue','WhatsappQueue','user','VoiceQueue','ChatQueues','userProfileId','SmsQueues','SmsQueue','OpenchannelQueues','OpenchannelQueue','Telephones','getVoiceQueues','getChatQueues','getFaxQueues','getSmsQueues','getOpenchannelQueues','getWhatsappQueues','all','length','voice','fax','sms','mail','openchannel','trunk:%s','campaign:%s:%s','leave','ChatInteractions','removeChatInteractions','emit','user_has_chat_interactions:remove','removeMailInteractions','user_has_mail_interactions:remove','removeFaxInteractions','user_has_fax_interactions:remove','removeSmsInteractions','user_has_sms_interactions:remove','user_has_openchannel_interactions:remove','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','log','join','default','connection','address','request','remoteAddress','remotePort','SocketIO\x20','nsp','disconnect','DISCONNECTED','lodash','../mysqldb','./environment','name','Agents','role','agent','telephone','type','ivr','findOne','then','VoiceQueues','FaxQueues','MailQueues','findAll','Trunks','IvrCampaigns','UserProfileResource','resourceId','map','User','where'];(function(_0x37274d,_0x120826){var _0x4aa896=function(_0xfefbd0){while(--_0xfefbd0){_0x37274d['push'](_0x37274d['shift']());}};_0x4aa896(++_0x120826);}(_0xcc58,0xab));var _0x8cc5=function(_0xb19920,_0x5eecd6){_0xb19920=_0xb19920-0x0;var _0x27b57d=_0xcc58[_0xb19920];return _0x27b57d;};'use strict';var _=require(_0x8cc5('0x0'));var util=require('util');var BPromise=require('bluebird');var db=require(_0x8cc5('0x1'))['db'];var config=require(_0x8cc5('0x2'));var queryQueues={'attributes':['id',_0x8cc5('0x3')],'include':[{'as':_0x8cc5('0x4'),'model':db['User'],'attributes':['id','name',_0x8cc5('0x5')],'raw':!![],'where':{'role':_0x8cc5('0x6')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x8cc5('0x3')],'where':{'role':_0x8cc5('0x7')}};var queryTrunks={'raw':!![],'attributes':['id',_0x8cc5('0x3')]};var queryAgents={'raw':!![],'attributes':['id',_0x8cc5('0x3')],'where':{'role':'agent'}};var queryCampaigns={'raw':!![],'attributes':['id',_0x8cc5('0x3'),_0x8cc5('0x8')],'where':{'type':_0x8cc5('0x9')}};function getAssociatedResources(_0x244203,_0x11fce6,_0x1c4dea){return db['UserProfileSection'][_0x8cc5('0xa')]({'where':{'name':_0x244203,'userProfileId':_0x11fce6},'raw':!![]})[_0x8cc5('0xb')](function(_0x3315d5){if(_0x3315d5){if(_0x3315d5['autoAssociation']){switch(_0x244203){case _0x8cc5('0xc'):case'ChatQueues':case _0x8cc5('0xd'):case'SmsQueues':case _0x8cc5('0xe'):case'OpenchannelQueues':case'WhatsappQueues':return db[_0x1c4dea][_0x8cc5('0xf')](queryQueues);case'Telephones':return db[_0x1c4dea][_0x8cc5('0xf')](queryTelephones);case _0x8cc5('0x10'):return db[_0x1c4dea]['findAll'](queryTrunks);case _0x8cc5('0x11'):return db[_0x1c4dea][_0x8cc5('0xf')](queryCampaigns);}}else{return db[_0x8cc5('0x12')][_0x8cc5('0xf')]({'attributes':[_0x8cc5('0x13')],'where':{'sectionId':_0x3315d5['id']},'raw':!![]})[_0x8cc5('0xb')](function(_0x10bbd7){if(_0x10bbd7){var _0x5a28c8={'where':{'id':_[_0x8cc5('0x14')](_0x10bbd7,_0x8cc5('0x13'))},'raw':!![]};switch(_0x1c4dea){case _0x8cc5('0x15'):_0x5a28c8[_0x8cc5('0x16')][_0x8cc5('0x5')]='telephone';break;case _0x8cc5('0x17'):_0x5a28c8[_0x8cc5('0x16')]['type']=_0x8cc5('0x9');break;}return db[_0x1c4dea][_0x8cc5('0xf')](_0x5a28c8);}else{return[];}});}}else{return[];}})[_0x8cc5('0xb')](function(_0xab691a){return _0xab691a;});}function joinOrLeaveQueues(_0x221c57,_0x323bab,_0x4f643e,_0x3a5b14){_0x221c57[_0x323bab](util[_0x8cc5('0x18')]('%s:queue:%s',_0x4f643e,_0x3a5b14[_0x8cc5('0x3')]));if(_0x3a5b14[_0x8cc5('0x4')]){for(var _0x7e91b8=0x0;_0x7e91b8<_0x3a5b14[_0x8cc5('0x4')]['length'];_0x7e91b8+=0x1){_0x221c57[_0x323bab](util[_0x8cc5('0x18')]('user:%s',_0x3a5b14[_0x8cc5('0x4')][_0x7e91b8][_0x8cc5('0x3')]));}}}function joinOrLeave(_0x35a471,_0x104f9f,_0x43cad3){var _0x2246f6;if(_0x35a471['handshake']['query']['id']){db[_0x8cc5('0x15')][_0x8cc5('0x19')]({'attributes':['id',_0x8cc5('0x3'),_0x8cc5('0x5'),'userProfileId'],'where':{'id':_0x35a471[_0x8cc5('0x1a')]['query']['id']},'include':[{'model':db[_0x8cc5('0x1b')],'as':'ChatInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x8cc5('0x1c')],'as':_0x8cc5('0x1d'),'attributes':['id'],'raw':!![]},{'model':db[_0x8cc5('0x1e')],'as':_0x8cc5('0x1f'),'attributes':['id'],'raw':!![]},{'model':db[_0x8cc5('0x20')],'as':_0x8cc5('0x21'),'attributes':['id'],'raw':!![]},{'model':db[_0x8cc5('0x22')],'as':_0x8cc5('0x23'),'attributes':['id'],'raw':!![]},{'model':db['WhatsappInteraction'],'as':_0x8cc5('0x24'),'attributes':['id'],'raw':!![]}]})[_0x8cc5('0xb')](function(_0x1e8da5){if(_0x1e8da5){_0x2246f6=_0x1e8da5;_0x35a471[_0x104f9f](util[_0x8cc5('0x18')](_0x8cc5('0x25'),_0x1e8da5[_0x8cc5('0x3')]));var _0x5b9d92=[];switch(_0x1e8da5[_0x8cc5('0x5')]){case'admin':_0x35a471[_0x104f9f](_0x8cc5('0x26'));_0x35a471[_0x104f9f](_0x8cc5('0x27'));if(queryQueues[_0x8cc5('0x28')](_0x8cc5('0x29'))){delete queryQueues[_0x8cc5('0x29')];}_0x5b9d92[_0x8cc5('0x2a')](db['VoiceQueue'][_0x8cc5('0xf')](queryQueues));_0x5b9d92[_0x8cc5('0x2a')](db[_0x8cc5('0x2b')][_0x8cc5('0xf')](queryQueues));_0x5b9d92[_0x8cc5('0x2a')](db[_0x8cc5('0x2c')][_0x8cc5('0xf')](queryQueues));_0x5b9d92[_0x8cc5('0x2a')](db['SmsQueue'][_0x8cc5('0xf')](queryQueues));_0x5b9d92[_0x8cc5('0x2a')](db[_0x8cc5('0x2d')][_0x8cc5('0xf')](queryQueues));_0x5b9d92[_0x8cc5('0x2a')](db['OpenchannelQueue']['findAll'](queryQueues));_0x5b9d92[_0x8cc5('0x2a')](db[_0x8cc5('0x2e')][_0x8cc5('0xf')](queryQueues));_0x5b9d92[_0x8cc5('0x2a')](db[_0x8cc5('0x15')][_0x8cc5('0xf')](queryTelephones));_0x5b9d92[_0x8cc5('0x2a')](db['Trunk'][_0x8cc5('0xf')](queryTrunks));_0x5b9d92[_0x8cc5('0x2a')](db[_0x8cc5('0x17')][_0x8cc5('0xf')](queryCampaigns));_0x5b9d92[_0x8cc5('0x2a')](db[_0x8cc5('0x15')][_0x8cc5('0xf')](queryAgents));break;case _0x8cc5('0x2f'):_0x35a471[_0x104f9f](_0x8cc5('0x26'));_0x35a471[_0x104f9f](_0x8cc5('0x27'));_0x5b9d92[_0x8cc5('0x2a')](getAssociatedResources(_0x8cc5('0xc'),_0x1e8da5['userProfileId'],_0x8cc5('0x30')));_0x5b9d92[_0x8cc5('0x2a')](getAssociatedResources(_0x8cc5('0x31'),_0x1e8da5[_0x8cc5('0x32')],'ChatQueue'));_0x5b9d92[_0x8cc5('0x2a')](getAssociatedResources(_0x8cc5('0xd'),_0x1e8da5[_0x8cc5('0x32')],'FaxQueue'));_0x5b9d92['push'](getAssociatedResources(_0x8cc5('0x33'),_0x1e8da5[_0x8cc5('0x32')],_0x8cc5('0x34')));_0x5b9d92[_0x8cc5('0x2a')](getAssociatedResources(_0x8cc5('0xe'),_0x1e8da5['userProfileId'],'MailQueue'));_0x5b9d92[_0x8cc5('0x2a')](getAssociatedResources(_0x8cc5('0x35'),_0x1e8da5[_0x8cc5('0x32')],_0x8cc5('0x36')));_0x5b9d92[_0x8cc5('0x2a')](getAssociatedResources('WhatsappQueues',_0x1e8da5['userProfileId'],_0x8cc5('0x2e')));_0x5b9d92['push'](getAssociatedResources(_0x8cc5('0x37'),_0x1e8da5[_0x8cc5('0x32')],_0x8cc5('0x15')));_0x5b9d92[_0x8cc5('0x2a')](getAssociatedResources('Trunks',_0x1e8da5[_0x8cc5('0x32')],'Trunk'));_0x5b9d92[_0x8cc5('0x2a')](getAssociatedResources(_0x8cc5('0x11'),_0x1e8da5['userProfileId'],'Campaign'));_0x5b9d92['push'](db[_0x8cc5('0x15')]['findAll'](queryAgents));break;case _0x8cc5('0x6'):_0x35a471[_0x104f9f](_0x8cc5('0x26'));_0x35a471[_0x104f9f]('voice:outbound');_0x5b9d92[_0x8cc5('0x2a')](_0x1e8da5[_0x8cc5('0x38')]({'attributes':['id',_0x8cc5('0x3')]}));_0x5b9d92[_0x8cc5('0x2a')](_0x1e8da5[_0x8cc5('0x39')]({'attributes':['id',_0x8cc5('0x3')]}));_0x5b9d92[_0x8cc5('0x2a')](_0x1e8da5[_0x8cc5('0x3a')]({'attributes':['id','name']}));_0x5b9d92['push'](_0x1e8da5[_0x8cc5('0x3b')]({'attributes':['id',_0x8cc5('0x3')]}));_0x5b9d92[_0x8cc5('0x2a')](_0x1e8da5['getMailQueues']({'attributes':['id',_0x8cc5('0x3')]}));_0x5b9d92['push'](_0x1e8da5[_0x8cc5('0x3c')]({'attributes':['id',_0x8cc5('0x3')]}));_0x5b9d92['push'](_0x1e8da5[_0x8cc5('0x3d')]({'attributes':['id',_0x8cc5('0x3')]}));break;}return BPromise[_0x8cc5('0x3e')](_0x5b9d92);}})[_0x8cc5('0xb')](function(_0x289e6c){if(_0x289e6c&&_0x289e6c[_0x8cc5('0x3f')]){for(var _0x533b54=0x0;_0x533b54<_0x289e6c[_0x8cc5('0x3f')];_0x533b54+=0x1){for(var _0x2eb765=0x0;_0x2eb765<_0x289e6c[_0x533b54][_0x8cc5('0x3f')];_0x2eb765+=0x1){switch(_0x533b54){case 0x0:joinOrLeaveQueues(_0x35a471,_0x104f9f,_0x8cc5('0x40'),_0x289e6c[_0x533b54][_0x2eb765]);break;case 0x1:joinOrLeaveQueues(_0x35a471,_0x104f9f,'chat',_0x289e6c[_0x533b54][_0x2eb765]);break;case 0x2:joinOrLeaveQueues(_0x35a471,_0x104f9f,_0x8cc5('0x41'),_0x289e6c[_0x533b54][_0x2eb765]);break;case 0x3:joinOrLeaveQueues(_0x35a471,_0x104f9f,_0x8cc5('0x42'),_0x289e6c[_0x533b54][_0x2eb765]);break;case 0x4:joinOrLeaveQueues(_0x35a471,_0x104f9f,_0x8cc5('0x43'),_0x289e6c[_0x533b54][_0x2eb765]);break;case 0x5:joinOrLeaveQueues(_0x35a471,_0x104f9f,_0x8cc5('0x44'),_0x289e6c[_0x533b54][_0x2eb765]);break;case 0x6:joinOrLeaveQueues(_0x35a471,_0x104f9f,'whatsapp',_0x289e6c[_0x533b54][_0x2eb765]);break;case 0x7:if(_0x2246f6[_0x8cc5('0x5')]!==_0x8cc5('0x6'))_0x35a471[_0x104f9f](util[_0x8cc5('0x18')]('telephone:%s',_0x289e6c[_0x533b54][_0x2eb765][_0x8cc5('0x3')]));break;case 0x8:if(_0x2246f6[_0x8cc5('0x5')]!==_0x8cc5('0x6'))_0x35a471[_0x104f9f](util[_0x8cc5('0x18')](_0x8cc5('0x45'),_0x289e6c[_0x533b54][_0x2eb765][_0x8cc5('0x3')]));break;case 0x9:if(_0x2246f6[_0x8cc5('0x5')]!==_0x8cc5('0x6'))_0x35a471[_0x104f9f](util['format'](_0x8cc5('0x46'),_0x289e6c[_0x533b54][_0x2eb765][_0x8cc5('0x8')],_0x289e6c[_0x533b54][_0x2eb765][_0x8cc5('0x3')]));break;case 0xa:_0x35a471[_0x104f9f](util[_0x8cc5('0x18')]('user:%s',_0x289e6c[_0x533b54][_0x2eb765][_0x8cc5('0x3')]));break;}}}}})['then'](function(){if(_0x104f9f===_0x8cc5('0x47')){var _0x52ac4c=_[_0x8cc5('0x14')](_0x2246f6[_0x8cc5('0x48')],'id');return _0x2246f6[_0x8cc5('0x49')](_0x52ac4c)[_0x8cc5('0xb')](function(){for(var _0x56d739=0x0;_0x56d739<_0x52ac4c['length'];_0x56d739+=0x1){_0x43cad3[_0x8cc5('0x4a')](_0x8cc5('0x4b'),{'ChatInteractionId':Number(_0x52ac4c[_0x56d739]),'UserId':Number(_0x2246f6['id'])});}});}})[_0x8cc5('0xb')](function(){if(_0x104f9f===_0x8cc5('0x47')){var _0x5809e3=_['map'](_0x2246f6['MailInteractions'],'id');return _0x2246f6[_0x8cc5('0x4c')](_0x5809e3)[_0x8cc5('0xb')](function(){for(var _0x533c4d=0x0;_0x533c4d<_0x5809e3[_0x8cc5('0x3f')];_0x533c4d+=0x1){_0x43cad3[_0x8cc5('0x4a')](_0x8cc5('0x4d'),{'MailInteractionId':Number(_0x5809e3[_0x533c4d]),'UserId':Number(_0x2246f6['id'])});}});}})['then'](function(){if(_0x104f9f===_0x8cc5('0x47')){var _0x5a523b=_[_0x8cc5('0x14')](_0x2246f6[_0x8cc5('0x1f')],'id');return _0x2246f6[_0x8cc5('0x4e')](_0x5a523b)[_0x8cc5('0xb')](function(){for(var _0x2a2469=0x0;_0x2a2469<_0x5a523b[_0x8cc5('0x3f')];_0x2a2469+=0x1){_0x43cad3[_0x8cc5('0x4a')](_0x8cc5('0x4f'),{'FaxInteractionId':Number(_0x5a523b[_0x2a2469]),'UserId':Number(_0x2246f6['id'])});}});}})[_0x8cc5('0xb')](function(){if(_0x104f9f==='leave'){var _0x4d69a5=_[_0x8cc5('0x14')](_0x2246f6[_0x8cc5('0x21')],'id');return _0x2246f6[_0x8cc5('0x50')](_0x4d69a5)['then'](function(){for(var _0x3e2904=0x0;_0x3e2904<_0x4d69a5[_0x8cc5('0x3f')];_0x3e2904+=0x1){_0x43cad3[_0x8cc5('0x4a')](_0x8cc5('0x51'),{'SmsInteractionId':Number(_0x4d69a5[_0x3e2904]),'UserId':Number(_0x2246f6['id'])});}});}})['then'](function(){if(_0x104f9f===_0x8cc5('0x47')){var _0x2372a3=_[_0x8cc5('0x14')](_0x2246f6[_0x8cc5('0x23')],'id');return _0x2246f6['removeOpenchannelInteractions'](_0x2372a3)[_0x8cc5('0xb')](function(){for(var _0xe24a8c=0x0;_0xe24a8c<_0x2372a3[_0x8cc5('0x3f')];_0xe24a8c+=0x1){_0x43cad3['emit'](_0x8cc5('0x52'),{'OpenchannelInteractionId':Number(_0x2372a3[_0xe24a8c]),'UserId':Number(_0x2246f6['id'])});}});}})[_0x8cc5('0xb')](function(){if(_0x104f9f===_0x8cc5('0x47')){var _0x3045cb=_['map'](_0x2246f6[_0x8cc5('0x24')],'id');return _0x2246f6[_0x8cc5('0x53')](_0x3045cb)[_0x8cc5('0xb')](function(){for(var _0x2ceda5=0x0;_0x2ceda5<_0x3045cb[_0x8cc5('0x3f')];_0x2ceda5+=0x1){_0x43cad3[_0x8cc5('0x4a')](_0x8cc5('0x54'),{'WhatsappInteractionId':Number(_0x3045cb[_0x2ceda5]),'UserId':Number(_0x2246f6['id'])});}});}})['catch'](function(_0x26db3f){_0x35a471[_0x8cc5('0x55')](_0x26db3f);});}}function onDisconnect(_0x338675,_0x4de0e1){joinOrLeave(_0x338675,_0x8cc5('0x47'),_0x4de0e1);}function onConnect(_0x3b7f85){joinOrLeave(_0x3b7f85,_0x8cc5('0x56'));}exports[_0x8cc5('0x57')]=function(_0x17c5a6){_0x17c5a6['on'](_0x8cc5('0x58'),function(_0x3b134b){_0x3b134b['setMaxListeners'](0x0);_0x3b134b[_0x8cc5('0x59')]=_0x3b134b[_0x8cc5('0x5a')][_0x8cc5('0x58')][_0x8cc5('0x5b')]+':'+_0x3b134b['request']['connection'][_0x8cc5('0x5c')];_0x3b134b['connectedAt']=new Date();_0x3b134b[_0x8cc5('0x55')]=function(_0x68cf4e){console[_0x8cc5('0x55')](_0x8cc5('0x5d')+_0x3b134b[_0x8cc5('0x5e')][_0x8cc5('0x3')]+'['+_0x3b134b[_0x8cc5('0x59')]+']',_0x68cf4e);};_0x3b134b['on'](_0x8cc5('0x5f'),function(){onDisconnect(_0x3b134b,_0x17c5a6);_0x3b134b['log'](_0x8cc5('0x60'));});onConnect(_0x3b134b);_0x3b134b[_0x8cc5('0x55')]('CONNECTED');});};
\ No newline at end of file
index cefce06..a9e1bf4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb6f7=['afterCreate','newinteraction','afterUpdate','closedinteraction','ChatMessage','newmessage','Sms','SmsInteraction','SmsMessage','Whatsapp','WhatsappInteraction','WhatsappMessage','Fax','FaxInteraction','FaxMessage','Mail','MailInteraction','MailMessage','OpenchannelInteraction','Openchannel','OpenchannelMessage','request','EventManager','then','info','Trigger,\x20%s','code','error','catch','get','channel','event','direction','ContactId','sequelize','query','Sequelize','QueryTypes','SELECT','contact','UserId','find','name','fullname','email','internal','format','SIP/%s','agent','opened','changed','closed','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','User','interface','default','length','hasOwnProperty','model','hook','callback','toLowerCase','util','../../mysqldb','jayson/promise','../logger','triggers','lodash','client','http','Chat','ChatInteraction'];(function(_0x2eea1c,_0x555aae){var _0x55f270=function(_0x156ab7){while(--_0x156ab7){_0x2eea1c['push'](_0x2eea1c['shift']());}};_0x55f270(++_0x555aae);}(_0xb6f7,0x1ee));var _0x7b6f=function(_0xcb83d,_0x5cbe62){_0xcb83d=_0xcb83d-0x0;var _0x80d1fd=_0xb6f7[_0xcb83d];return _0x80d1fd;};'use strict';var util=require(_0x7b6f('0x0'));var db=require(_0x7b6f('0x1'))['db'];var jayson=require(_0x7b6f('0x2'));var logger=require(_0x7b6f('0x3'))(_0x7b6f('0x4'));var _=require(_0x7b6f('0x5'));var client=jayson[_0x7b6f('0x6')][_0x7b6f('0x7')]({'port':0x232a});var triggers=[{'channel':_0x7b6f('0x8'),'model':_0x7b6f('0x9'),'event':_0x7b6f('0xa'),'condition':_0x7b6f('0xb'),'callback':afterCreate},{'channel':_0x7b6f('0x8'),'model':_0x7b6f('0x9'),'event':_0x7b6f('0xc'),'condition':_0x7b6f('0xd'),'callback':afterUpdate},{'channel':_0x7b6f('0x8'),'model':_0x7b6f('0xe'),'event':_0x7b6f('0xa'),'condition':_0x7b6f('0xf'),'callback':afterCreateMessage},{'channel':_0x7b6f('0x10'),'model':_0x7b6f('0x11'),'event':_0x7b6f('0xa'),'condition':_0x7b6f('0xb'),'callback':afterCreate},{'channel':_0x7b6f('0x10'),'model':_0x7b6f('0x11'),'event':_0x7b6f('0xc'),'condition':_0x7b6f('0xd'),'callback':afterUpdate},{'channel':'Sms','model':_0x7b6f('0x12'),'event':_0x7b6f('0xa'),'condition':_0x7b6f('0xf'),'callback':afterCreateMessage},{'channel':_0x7b6f('0x13'),'model':_0x7b6f('0x14'),'event':_0x7b6f('0xa'),'condition':'newinteraction','callback':afterCreate},{'channel':_0x7b6f('0x13'),'model':_0x7b6f('0x14'),'event':_0x7b6f('0xc'),'condition':_0x7b6f('0xd'),'callback':afterUpdate},{'channel':'Whatsapp','model':_0x7b6f('0x15'),'event':'afterCreate','condition':_0x7b6f('0xf'),'callback':afterCreateMessage},{'channel':_0x7b6f('0x16'),'model':_0x7b6f('0x17'),'event':'afterCreate','condition':'newinteraction','callback':afterCreate},{'channel':_0x7b6f('0x16'),'model':_0x7b6f('0x17'),'event':'afterUpdate','condition':'closedinteraction','callback':afterUpdate},{'channel':_0x7b6f('0x16'),'model':_0x7b6f('0x18'),'event':_0x7b6f('0xa'),'condition':_0x7b6f('0xf'),'callback':afterCreateMessage},{'channel':_0x7b6f('0x19'),'model':_0x7b6f('0x1a'),'event':_0x7b6f('0xa'),'condition':_0x7b6f('0xb'),'callback':afterCreate},{'channel':'Mail','model':_0x7b6f('0x1a'),'event':'afterUpdate','condition':_0x7b6f('0xd'),'callback':afterUpdate},{'channel':_0x7b6f('0x19'),'model':_0x7b6f('0x1b'),'event':_0x7b6f('0xa'),'condition':_0x7b6f('0xf'),'callback':afterCreateMessage},{'channel':'Openchannel','model':_0x7b6f('0x1c'),'event':_0x7b6f('0xa'),'condition':_0x7b6f('0xb'),'callback':afterCreate},{'channel':_0x7b6f('0x1d'),'model':'OpenchannelInteraction','event':_0x7b6f('0xc'),'condition':_0x7b6f('0xd'),'callback':afterUpdate},{'channel':'Openchannel','model':_0x7b6f('0x1e'),'event':_0x7b6f('0xa'),'condition':_0x7b6f('0xf'),'callback':afterCreateMessage}];function request(_0x197bac){return client[_0x7b6f('0x1f')](_0x7b6f('0x20'),_0x197bac)[_0x7b6f('0x21')](function(_0x45c61b){logger[_0x7b6f('0x22')](_0x7b6f('0x23'),'EventManager',_0x45c61b);if(_0x45c61b['error']){if(_0x45c61b['error'][_0x7b6f('0x24')]===0x1f4){logger[_0x7b6f('0x25')](_0x7b6f('0x23'),_0x7b6f('0x20'),_0x45c61b[_0x7b6f('0x25')]);}}})[_0x7b6f('0x26')](function(_0x230f06){logger[_0x7b6f('0x25')](_0x7b6f('0x23'),_0x7b6f('0x20'),_0x230f06);});}function afterCreateMessage(_0x51507a,_0x3f6280){return function(_0x4ffaf4,_0x3195cd){_0x4ffaf4=_0x4ffaf4[_0x7b6f('0x27')]({'plain':!![]});_0x4ffaf4[_0x7b6f('0x28')]=_0x51507a;_0x4ffaf4[_0x7b6f('0x29')]=_0x4ffaf4[_0x7b6f('0x2a')];var _0x3ecac1='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x4ffaf4[_0x7b6f('0x2b')];return db[_0x7b6f('0x2c')][_0x7b6f('0x2d')](_0x3ecac1,{'type':db[_0x7b6f('0x2e')][_0x7b6f('0x2f')][_0x7b6f('0x30')],'raw':!![]})['then'](function(_0x259d99){return _0x259d99;})[_0x7b6f('0x21')](function(_0x498729){if(_0x498729){_0x4ffaf4[_0x7b6f('0x31')]=_0x498729[0x0];}if(_0x4ffaf4[_0x7b6f('0x32')]){return db['User'][_0x7b6f('0x33')]({'where':{'id':_0x4ffaf4[_0x7b6f('0x32')]},'attributes':['id',_0x7b6f('0x34'),_0x7b6f('0x35'),_0x7b6f('0x36'),_0x7b6f('0x37')],'raw':!![]})[_0x7b6f('0x21')](function(_0xf53902){_0x4ffaf4['interface']=util[_0x7b6f('0x38')](_0x7b6f('0x39'),_0xf53902['name']);_0x4ffaf4['channel']=_0x51507a;_0x4ffaf4[_0x7b6f('0x3a')]=_0xf53902;return request({'event':'incomingmessage','message':_0x4ffaf4});})[_0x7b6f('0x26')](function(_0x217634){console[_0x7b6f('0x25')](_0x217634);});}else{return request({'event':'outgoingmessage','message':_0x4ffaf4});}});};}function afterCreate(_0x1088db,_0x709c2a){return function(_0x360e07,_0x28a8b2){_0x360e07=_0x360e07[_0x7b6f('0x27')]({'plain':!![]});_0x360e07[_0x7b6f('0x28')]=_0x1088db;_0x360e07['event']=_0x7b6f('0x3b');var _0x333021='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x360e07['ContactId'];return db[_0x7b6f('0x2c')][_0x7b6f('0x2d')](_0x333021,{'type':db[_0x7b6f('0x2e')]['QueryTypes'][_0x7b6f('0x30')],'raw':!![]})[_0x7b6f('0x21')](function(_0x112d68){return _0x112d68;})[_0x7b6f('0x21')](function(_0xa16b68){if(_0xa16b68){_0x360e07['contact']=_0xa16b68[0x0];}return request({'event':_0x709c2a,'message':_0x360e07});});};}function afterUpdate(_0x123fb2,_0x16801e){return function(_0x3d343a,_0x57172f){if(_0x3d343a[_0x7b6f('0x3c')](_0x7b6f('0x3d'))&&_0x3d343a[_0x7b6f('0x3d')]){_0x3d343a=_0x3d343a[_0x7b6f('0x27')]({'plain':!![]});_0x3d343a[_0x7b6f('0x28')]=_0x123fb2;_0x3d343a[_0x7b6f('0x29')]=_0x7b6f('0x3d');var _0x13d510=_0x7b6f('0x3e')+_0x3d343a[_0x7b6f('0x2b')];return db[_0x7b6f('0x2c')][_0x7b6f('0x2d')](_0x13d510,{'type':db[_0x7b6f('0x2e')][_0x7b6f('0x2f')]['SELECT'],'raw':!![]})[_0x7b6f('0x21')](function(_0xe2a090){return _0xe2a090;})['then'](function(_0x3f8b1c){if(_0x3f8b1c){_0x3d343a['contact']=_0x3f8b1c[0x0];}if(_0x3d343a['UserId']){return db[_0x7b6f('0x3f')][_0x7b6f('0x33')]({'where':{'id':_0x3d343a['UserId']},'attributes':['id',_0x7b6f('0x34'),_0x7b6f('0x35'),'email',_0x7b6f('0x37')],'raw':!![]})[_0x7b6f('0x21')](function(_0x5cb60a){_0x3d343a[_0x7b6f('0x40')]=util['format']('SIP/%s',_0x5cb60a[_0x7b6f('0x34')]);_0x3d343a[_0x7b6f('0x3a')]=_0x5cb60a;return request({'event':_0x16801e,'message':_0x3d343a});})['catch'](function(_0x1d9990){console[_0x7b6f('0x25')](_0x1d9990);});}else{return request({'event':_0x16801e,'message':_0x3d343a});}});}};}exports[_0x7b6f('0x41')]=function(){for(var _0x5ef939=0x0;_0x5ef939<triggers[_0x7b6f('0x42')];_0x5ef939+=0x1){if(db[_0x7b6f('0x43')](triggers[_0x5ef939][_0x7b6f('0x44')])){db[triggers[_0x5ef939][_0x7b6f('0x44')]][_0x7b6f('0x45')](triggers[_0x5ef939][_0x7b6f('0x29')],triggers[_0x5ef939][_0x7b6f('0x46')](triggers[_0x5ef939][_0x7b6f('0x28')][_0x7b6f('0x47')](),triggers[_0x5ef939]['condition']));}}};
\ No newline at end of file
+var _0x77a4=['newmessage','Sms','SmsInteraction','afterUpdate','SmsMessage','Whatsapp','WhatsappInteraction','WhatsappMessage','Fax','FaxInteraction','FaxMessage','Mail','MailInteraction','MailMessage','Openchannel','OpenchannelInteraction','OpenchannelMessage','request','EventManager','info','Trigger,\x20%s','error','code','catch','channel','motionChannel','direction','resolve','undefined','ContactId','sequelize','QueryTypes','then','contact','UserId','find','name','fullname','internal','format','agent','incomingmessage','AfterCreateMessage','get','opened','query','Sequelize','SELECT','changed','closed','substatus','event','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','User','interface','SIP/%s','length','hasOwnProperty','model','callback','toLowerCase','util','../../mysqldb','jayson/promise','../logger','triggers','client','http','Chat','ChatInteraction','afterCreate','newinteraction','closedinteraction','ChatMessage'];(function(_0x36ed3c,_0x44a00a){var _0x52a2e0=function(_0x3f7af9){while(--_0x3f7af9){_0x36ed3c['push'](_0x36ed3c['shift']());}};_0x52a2e0(++_0x44a00a);}(_0x77a4,0xd1));var _0x477a=function(_0x1d3577,_0x17a32e){_0x1d3577=_0x1d3577-0x0;var _0x277d9a=_0x77a4[_0x1d3577];return _0x277d9a;};'use strict';var util=require(_0x477a('0x0'));var db=require(_0x477a('0x1'))['db'];var jayson=require(_0x477a('0x2'));var logger=require(_0x477a('0x3'))(_0x477a('0x4'));var client=jayson[_0x477a('0x5')][_0x477a('0x6')]({'port':0x232a});var triggers=[{'channel':_0x477a('0x7'),'model':_0x477a('0x8'),'event':_0x477a('0x9'),'condition':_0x477a('0xa'),'callback':afterCreate},{'channel':'Chat','model':_0x477a('0x8'),'event':'afterUpdate','condition':_0x477a('0xb'),'callback':afterUpdate},{'channel':_0x477a('0x7'),'model':_0x477a('0xc'),'event':_0x477a('0x9'),'condition':_0x477a('0xd'),'callback':afterCreateMessage},{'channel':_0x477a('0xe'),'model':'SmsInteraction','event':_0x477a('0x9'),'condition':_0x477a('0xa'),'callback':afterCreate},{'channel':'Sms','model':_0x477a('0xf'),'event':_0x477a('0x10'),'condition':_0x477a('0xb'),'callback':afterUpdate},{'channel':'Sms','model':_0x477a('0x11'),'event':_0x477a('0x9'),'condition':_0x477a('0xd'),'callback':afterCreateMessage},{'channel':_0x477a('0x12'),'model':_0x477a('0x13'),'event':_0x477a('0x9'),'condition':'newinteraction','callback':afterCreate},{'channel':_0x477a('0x12'),'model':'WhatsappInteraction','event':_0x477a('0x10'),'condition':'closedinteraction','callback':afterUpdate},{'channel':_0x477a('0x12'),'model':_0x477a('0x14'),'event':'afterCreate','condition':_0x477a('0xd'),'callback':afterCreateMessage},{'channel':_0x477a('0x15'),'model':_0x477a('0x16'),'event':_0x477a('0x9'),'condition':_0x477a('0xa'),'callback':afterCreate},{'channel':'Fax','model':_0x477a('0x16'),'event':_0x477a('0x10'),'condition':_0x477a('0xb'),'callback':afterUpdate},{'channel':_0x477a('0x15'),'model':_0x477a('0x17'),'event':_0x477a('0x9'),'condition':_0x477a('0xd'),'callback':afterCreateMessage},{'channel':_0x477a('0x18'),'model':'MailInteraction','event':_0x477a('0x9'),'condition':'newinteraction','callback':afterCreate},{'channel':_0x477a('0x18'),'model':_0x477a('0x19'),'event':_0x477a('0x10'),'condition':_0x477a('0xb'),'callback':afterUpdate},{'channel':_0x477a('0x18'),'model':_0x477a('0x1a'),'event':_0x477a('0x9'),'condition':_0x477a('0xd'),'callback':afterCreateMessage},{'channel':_0x477a('0x1b'),'model':_0x477a('0x1c'),'event':_0x477a('0x9'),'condition':_0x477a('0xa'),'callback':afterCreate},{'channel':_0x477a('0x1b'),'model':_0x477a('0x1c'),'event':_0x477a('0x10'),'condition':_0x477a('0xb'),'callback':afterUpdate},{'channel':'Openchannel','model':_0x477a('0x1d'),'event':_0x477a('0x9'),'condition':'newmessage','callback':afterCreateMessage}];function request(_0x883696){return client[_0x477a('0x1e')](_0x477a('0x1f'),_0x883696)['then'](function(_0x5d1da9){logger[_0x477a('0x20')](_0x477a('0x21'),'EventManager',_0x5d1da9);if(_0x5d1da9[_0x477a('0x22')]){if(_0x5d1da9[_0x477a('0x22')][_0x477a('0x23')]===0x1f4){logger[_0x477a('0x22')](_0x477a('0x21'),'EventManager',_0x5d1da9[_0x477a('0x22')]);}}})[_0x477a('0x24')](function(_0xe4151e){logger['error'](_0x477a('0x21'),'EventManager',_0xe4151e);});}function afterCreateMessage(_0x10ce55){return function(_0x560322){_0x560322=_0x560322['get']({'plain':!![]});_0x560322[_0x477a('0x25')]=_0x10ce55;_0x560322[_0x477a('0x26')]=_0x10ce55;_0x560322['event']=_0x560322[_0x477a('0x27')];Promise[_0x477a('0x28')]()['then'](function(){if(typeof _0x560322['ContactId']===_0x477a('0x29'))return null;var _0x50bc1b='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x560322[_0x477a('0x2a')];return db[_0x477a('0x2b')]['query'](_0x50bc1b,{'type':db['Sequelize'][_0x477a('0x2c')]['SELECT'],'raw':!![]});})[_0x477a('0x2d')](function(_0x276e42){if(_0x276e42){_0x560322[_0x477a('0x2e')]=_0x276e42[0x0];}if(_0x560322[_0x477a('0x2f')]){return db['User'][_0x477a('0x30')]({'where':{'id':_0x560322[_0x477a('0x2f')]},'attributes':['id',_0x477a('0x31'),_0x477a('0x32'),'email',_0x477a('0x33')],'raw':!![]})[_0x477a('0x2d')](function(_0xa81925){_0x560322['interface']=util[_0x477a('0x34')]('SIP/%s',_0xa81925[_0x477a('0x31')]);_0x560322[_0x477a('0x25')]=_0x10ce55;_0x560322[_0x477a('0x35')]=_0xa81925;return request({'event':_0x477a('0x36'),'message':_0x560322});})[_0x477a('0x24')](function(_0x2f31de){logger['error']('Trigger,\x20%s',_0x477a('0x37'),_0x2f31de);});}else{return request({'event':'outgoingmessage','message':_0x560322});}});};}function afterCreate(_0x2a333a,_0x56a000){return function(_0x4d8aee){_0x4d8aee=_0x4d8aee[_0x477a('0x38')]({'plain':!![]});_0x4d8aee[_0x477a('0x25')]=_0x2a333a;_0x4d8aee[_0x477a('0x26')]=_0x2a333a;_0x4d8aee['event']=_0x477a('0x39');var _0x5f2fab='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x4d8aee[_0x477a('0x2a')];return db[_0x477a('0x2b')][_0x477a('0x3a')](_0x5f2fab,{'type':db[_0x477a('0x3b')][_0x477a('0x2c')][_0x477a('0x3c')],'raw':!![]})[_0x477a('0x2d')](function(_0x35de5b){return _0x35de5b;})[_0x477a('0x2d')](function(_0x7ff96a){if(_0x7ff96a){_0x4d8aee['contact']=_0x7ff96a[0x0];}return request({'event':_0x56a000,'message':_0x4d8aee});});};}function afterUpdate(_0x23f5e5){return function(_0x32c2bc){var _0x533217=_0x32c2bc[_0x477a('0x3d')]('closed')&&_0x32c2bc[_0x477a('0x3e')];var _0x294232=_0x32c2bc[_0x477a('0x3d')]('substatus');if(_0x533217||_0x294232){var _0x19f79b=_0x533217?_0x477a('0xb'):_0x477a('0x3f');var _0x4263b0=_0x32c2bc[_0x477a('0x38')]({'plain':!![]});_0x4263b0['channel']=_0x23f5e5;_0x4263b0[_0x477a('0x26')]=_0x23f5e5;_0x4263b0[_0x477a('0x40')]=_0x533217?_0x477a('0x3e'):_0x477a('0x3f');var _0x3e74f3=_0x477a('0x41')+_0x4263b0[_0x477a('0x2a')];return db[_0x477a('0x2b')][_0x477a('0x3a')](_0x3e74f3,{'type':db[_0x477a('0x3b')][_0x477a('0x2c')]['SELECT'],'raw':!![]})[_0x477a('0x2d')](function(_0x2d62a3){if(_0x2d62a3){_0x4263b0[_0x477a('0x2e')]=_0x2d62a3[0x0];}if(_0x4263b0[_0x477a('0x2f')]){return db[_0x477a('0x42')][_0x477a('0x30')]({'where':{'id':_0x4263b0[_0x477a('0x2f')]},'attributes':['id',_0x477a('0x31'),'fullname','email',_0x477a('0x33')],'raw':!![]})[_0x477a('0x2d')](function(_0x49c6ea){_0x4263b0[_0x477a('0x43')]=util[_0x477a('0x34')](_0x477a('0x44'),_0x49c6ea[_0x477a('0x31')]);_0x4263b0[_0x477a('0x35')]=_0x49c6ea;return request({'event':_0x19f79b,'message':_0x4263b0});})[_0x477a('0x24')](function(_0x44fc2c){logger['error'](_0x477a('0x21'),'AfterUpdate',_0x44fc2c);});}else{return request({'event':_0x19f79b,'message':_0x4263b0});}});}};}exports['default']=function(){for(var _0x438405=0x0;_0x438405<triggers[_0x477a('0x45')];_0x438405+=0x1){if(db[_0x477a('0x46')](triggers[_0x438405][_0x477a('0x47')])){db[triggers[_0x438405][_0x477a('0x47')]]['hook'](triggers[_0x438405][_0x477a('0x40')],triggers[_0x438405][_0x477a('0x48')](triggers[_0x438405][_0x477a('0x25')][_0x477a('0x49')](),triggers[_0x438405]['condition']));}}};
\ No newline at end of file
index dfd1f56..d073596 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5914=['clearBlockUser','isUndefined','blockedAt','updateAttributes','getLicense','role','User','count','agent','then','Maximum\x20login\x20has\x20been\x20reached','catch','lodash','bluebird','../mysqldb','./license/util','mail','chat','fax','sms','whatsapp','getChannels','isValidChannel','toLowerCase'];(function(_0x409fb8,_0x5ab3d3){var _0x278270=function(_0x58849c){while(--_0x58849c){_0x409fb8['push'](_0x409fb8['shift']());}};_0x278270(++_0x5ab3d3);}(_0x5914,0x1bc));var _0x4591=function(_0x2235f2,_0x3b9028){_0x2235f2=_0x2235f2-0x0;var _0x3cab17=_0x5914[_0x2235f2];return _0x3cab17;};'use strict';var _=require(_0x4591('0x0'));var BPromise=require(_0x4591('0x1'));var db=require(_0x4591('0x2'))['db'];var util=require(_0x4591('0x3'));var channels=['voice',_0x4591('0x4'),_0x4591('0x5'),_0x4591('0x6'),_0x4591('0x7'),_0x4591('0x8'),'openchannel'];exports[_0x4591('0x9')]=function(){return channels;};exports[_0x4591('0xa')]=function(_0x1676a1){_0x1676a1=_0x1676a1[_0x4591('0xb')]();return _['includes'](channels,_0x1676a1);};exports[_0x4591('0xc')]=function(_0x23693f,_0x3268f1,_0x41dece,_0x3d73a2){var _0x4b81fa={'loginAttempts':_0x3268f1,'blocked':_0x41dece};if(!_[_0x4591('0xd')](_0x3d73a2)){_0x4b81fa[_0x4591('0xe')]=_0x3d73a2;}return _0x23693f[_0x4591('0xf')](_0x4b81fa);};exports[_0x4591('0x10')]=function(_0x43295e){return new BPromise(function(_0xb7106a,_0x39a1a2){var _0x470377=0x0;if(_0x43295e[_0x4591('0x11')]!=='agent'){_0xb7106a(_0x43295e);}db[_0x4591('0x12')][_0x4591('0x13')]({'where':{'role':_0x4591('0x14'),'online':!![],'id':{'$ne':_0x43295e['id']}}})[_0x4591('0x15')](function(_0x5d284f){_0x470377=_0x5d284f;return util[_0x4591('0x10')]();})[_0x4591('0x15')](function(_0x4d4f66){if(_0x4d4f66&&_0x4d4f66['agents']&&_0x470377>=_0x4d4f66['agents']){throw Error(_0x4591('0x16'));}_0xb7106a(_0x43295e);})[_0x4591('0x17')](function(_0x12e8c1){_0x39a1a2(_0x12e8c1);});});};
\ No newline at end of file
+var _0x1505=['../mysqldb','./license/util','voice','mail','chat','fax','sms','whatsapp','openchannel','getChannels','isValidChannel','toLowerCase','includes','clearBlockUser','isUndefined','role','User','count','agent','then','agents','catch','bluebird'];(function(_0x509532,_0x2987cc){var _0x5d8f7f=function(_0x418166){while(--_0x418166){_0x509532['push'](_0x509532['shift']());}};_0x5d8f7f(++_0x2987cc);}(_0x1505,0x89));var _0x5150=function(_0x3fca73,_0x4ef0f9){_0x3fca73=_0x3fca73-0x0;var _0x412069=_0x1505[_0x3fca73];return _0x412069;};'use strict';var _=require('lodash');var BPromise=require(_0x5150('0x0'));var db=require(_0x5150('0x1'))['db'];var util=require(_0x5150('0x2'));var channels=[_0x5150('0x3'),_0x5150('0x4'),_0x5150('0x5'),_0x5150('0x6'),_0x5150('0x7'),_0x5150('0x8'),_0x5150('0x9')];exports[_0x5150('0xa')]=function(){return channels;};exports[_0x5150('0xb')]=function(_0x172a2d){_0x172a2d=_0x172a2d[_0x5150('0xc')]();return _[_0x5150('0xd')](channels,_0x172a2d);};exports[_0x5150('0xe')]=function(_0x32e46d,_0x4fc21b,_0x165e21,_0x24b07e){var _0xb1863e={'loginAttempts':_0x4fc21b,'blocked':_0x165e21};if(!_[_0x5150('0xf')](_0x24b07e)){_0xb1863e['blockedAt']=_0x24b07e;}return _0x32e46d['updateAttributes'](_0xb1863e);};exports['getLicense']=function(_0x5cb7fe){return new BPromise(function(_0x1ef6f7,_0x2fee8f){var _0x167707=0x0;if(_0x5cb7fe[_0x5150('0x10')]!=='agent'){_0x1ef6f7(_0x5cb7fe);}db[_0x5150('0x11')][_0x5150('0x12')]({'where':{'role':_0x5150('0x13'),'online':!![],'id':{'$ne':_0x5cb7fe['id']}}})[_0x5150('0x14')](function(_0x3401b6){_0x167707=_0x3401b6;return util['getLicense']();})['then'](function(_0xdba01b){if(_0xdba01b&&_0xdba01b[_0x5150('0x15')]&&_0x167707>=_0xdba01b['agents']){throw Error('Maximum\x20login\x20has\x20been\x20reached');}_0x1ef6f7(_0x5cb7fe);})[_0x5150('0x16')](function(_0xf2c9fa){_0x2fee8f(_0xf2c9fa);});});};
\ No newline at end of file
index a2b9419..6fb237b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x305b=['render','json','send','exports','404','status'];(function(_0x49e4c6,_0x233b1a){var _0x11ea68=function(_0x4ffaa5){while(--_0x4ffaa5){_0x49e4c6['push'](_0x49e4c6['shift']());}};_0x11ea68(++_0x233b1a);}(_0x305b,0x81));var _0xb305=function(_0x205e5a,_0x5c19fb){_0x205e5a=_0x205e5a-0x0;var _0x10da58=_0x305b[_0x205e5a];return _0x10da58;};'use strict';module[_0xb305('0x0')][0x194]=function pageNotFound(_0xff5877,_0x1c7872){var _0x590471=_0xb305('0x1');var _0x654fcd=0x194;var _0x3377de={'status':_0x654fcd};_0x1c7872[_0xb305('0x2')](_0x3377de[_0xb305('0x2')]);_0x1c7872[_0xb305('0x3')](_0x590471,{},function(_0x2ac785,_0x2deaee){if(_0x2ac785){return _0x1c7872[_0xb305('0x2')](_0x3377de[_0xb305('0x2')])[_0xb305('0x4')](_0x3377de);}_0x1c7872[_0xb305('0x5')](_0x2deaee);});};
\ No newline at end of file
+var _0xe62a=['render','json','send','exports','status'];(function(_0x1c4b8d,_0x146a41){var _0x203346=function(_0x541d4d){while(--_0x541d4d){_0x1c4b8d['push'](_0x1c4b8d['shift']());}};_0x203346(++_0x146a41);}(_0xe62a,0x143));var _0xae62=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0xe62a[_0xfae23b];return _0x200640;};'use strict';module[_0xae62('0x0')][0x194]=function pageNotFound(_0x10b756,_0x54631c){var _0x52bc97='404';var _0x10f15b=0x194;var _0x37923c={'status':_0x10f15b};_0x54631c[_0xae62('0x1')](_0x37923c[_0xae62('0x1')]);_0x54631c[_0xae62('0x2')](_0x52bc97,{},function(_0x2cee94,_0x427568){if(_0x2cee94){return _0x54631c[_0xae62('0x1')](_0x37923c[_0xae62('0x1')])[_0xae62('0x3')](_0x37923c);}_0x54631c[_0xae62('0x4')](_0x427568);});};
\ 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
diff --git a/server/migrations/2.5.36.js b/server/migrations/2.5.36.js
new file mode 100644 (file)
index 0000000..e3fb3ea
--- /dev/null
@@ -0,0 +1,184 @@
+'use strict';\r
+\r
+var BPromise = require('bluebird');\r
+var util = require('util');\r
+\r
+var logger = require('../config/logger')('migration');\r
+\r
+var Sequence = function() {};\r
+\r
+Sequence.prototype.enqueue = function(fn) {\r
+  this.tail = this.tail ? this.tail.finally(fn) : fn();\r
+};\r
+\r
+var Migration = function(queryInterface) {\r
+  this.queryInterface = queryInterface;\r
+  this.sequence = new Sequence();\r
+};\r
+\r
+Migration.prototype.changeColumn = function(table, column, type) {\r
+  var _this = this;\r
+  this.sequence.enqueue(function() {\r
+    return _this.queryInterface\r
+      .changeColumn(table, column, type)\r
+      .then(function() {\r
+        logger.info('Changed column %s in table %s', column, table);\r
+      })\r
+      .catch(function(err) {\r
+        logger.info(JSON.stringify(err));\r
+      });\r
+  });\r
+};\r
+\r
+Migration.prototype.addColumn = function(table, column, type) {\r
+  var _this = this;\r
+  this.sequence.enqueue(function() {\r
+    return _this.queryInterface\r
+      .addColumn(table, column, type)\r
+      .then(function() {\r
+        logger.info('Added column %s to %s', column, table);\r
+      })\r
+      .catch(function(err) {\r
+        logger.info(JSON.stringify(err));\r
+      });\r
+  });\r
+};\r
+\r
+Migration.prototype.dropTable = function(table) {\r
+  var _this = this;\r
+  this.sequence.enqueue(function() {\r
+    return _this.queryInterface\r
+      .dropTable(table, {\r
+        force: true\r
+      })\r
+      .then(function() {\r
+        logger.info('table dropped %s', table);\r
+      })\r
+      .catch(function(err) {\r
+        logger.info(JSON.stringify(err));\r
+      });\r
+  });\r
+};\r
+\r
+Migration.prototype.addIndex = function(table, column, indexName) {\r
+  var _this = this;\r
+  this.sequence.enqueue(function() {\r
+    return _this.queryInterface\r
+      .addIndex(table, column, {\r
+        indexName: indexName\r
+      })\r
+      .then(function() {\r
+        logger.info('addIndex %s %s %s', table, column.join(','), indexName);\r
+      })\r
+      .catch(function(err) {\r
+        logger.info(JSON.stringify(err));\r
+      });\r
+  });\r
+};\r
+\r
+Migration.prototype.removeIndex = function(table, indexName) {\r
+  var _this = this;\r
+  this.sequence.enqueue(function() {\r
+    return _this.queryInterface\r
+      .removeIndex(table, indexName)\r
+      .then(function() {\r
+        logger.info('removeIndex %s %s', table, indexName);\r
+      })\r
+      .catch(function(err) {\r
+        logger.info(JSON.stringify(err));\r
+      });\r
+  });\r
+};\r
+\r
+Migration.prototype.query = function(sql) {\r
+  var _this = this;\r
+  this.sequence.enqueue(function() {\r
+    return _this.queryInterface.sequelize\r
+      .query(sql)\r
+      .then(function() {\r
+        logger.info('query %s', sql);\r
+      })\r
+      .catch(function(err) {\r
+        logger.info(JSON.stringify(err));\r
+      });\r
+  });\r
+};\r
+\r
+Migration.prototype.removeColumn = function(table, column) {\r
+  var _this = this;\r
+  this.sequence.enqueue(function() {\r
+    return _this.queryInterface\r
+      .removeColumn(table, column)\r
+      .then(function() {\r
+        logger.info('Removed column %s from %s', column, table);\r
+      })\r
+      .catch(function(err) {\r
+        logger.info(\r
+          util.inspect(err, {\r
+            showHidden: false,\r
+            depth: null\r
+          })\r
+        );\r
+      });\r
+  });\r
+};\r
+\r
+Migration.prototype.renameColumn = function(table, oldColumn, newColumn) {\r
+  var _this = this;\r
+  this.sequence.enqueue(function() {\r
+    return _this.queryInterface\r
+      .renameColumn(table, oldColumn, newColumn)\r
+      .then(function() {\r
+        logger.info('Renamed column from %s to %s on %s', oldColumn, newColumn, table);\r
+      })\r
+      .catch(function(err) {\r
+        logger.info(\r
+          util.inspect(err, {\r
+            showHidden: false,\r
+            depth: null\r
+          })\r
+        );\r
+      });\r
+  });\r
+};\r
+\r
+Migration.prototype.final = function(resolve) {\r
+  this.sequence.enqueue(function() {\r
+    return resolve();\r
+  });\r
+};\r
+\r
+module.exports = {\r
+  up: function(queryInterface, Sequelize) {\r
+    return new BPromise(function(resolve) {\r
+      var migration = new Migration(queryInterface);\r
+\r
+      // START users\r
+      migration.addColumn('users', 'ignorePauseForPreviewCalls', {\r
+        type: Sequelize.BOOLEAN,\r
+        defaultValue: false\r
+      });\r
+\r
+      migration.addColumn('users', 'selectRecallMeCampaign', {\r
+        type: Sequelize.BOOLEAN,\r
+        defaultValue: false\r
+      });\r
+      // END users\r
+\r
+      // START voice_queues\r
+      migration.addColumn('voice_queues', 'dialPreviewAutoRecallMe', {\r
+        type: Sequelize.BOOLEAN,\r
+        defaultValue: true\r
+      });\r
+      // END voice_queues\r
+\r
+      // START FINAL\r
+      migration.final(resolve);\r
+      // END FINAL\r
+    });\r
+  },\r
+\r
+  down: function(queryInterface, Sequelize) {\r
+    // var migration = new Migration(queryInterface);\r
+  }\r
+};
\ No newline at end of file
diff --git a/server/migrations/2.5.37.js b/server/migrations/2.5.37.js
new file mode 100644 (file)
index 0000000..3eb68ac
--- /dev/null
@@ -0,0 +1,182 @@
+'use strict';
+
+var BPromise = require('bluebird');
+var util = require('util');
+
+var logger = require('../config/logger')('migration');
+
+var Sequence = function() {};
+
+Sequence.prototype.enqueue = function(fn) {
+  this.tail = this.tail ? this.tail.finally(fn) : fn();
+};
+
+var Migration = function(queryInterface) {
+  this.queryInterface = queryInterface;
+  this.sequence = new Sequence();
+};
+
+Migration.prototype.changeColumn = function(table, column, type) {
+  var _this = this;
+  this.sequence.enqueue(function() {
+    return _this.queryInterface
+      .changeColumn(table, column, type)
+      .then(function() {
+        logger.info('Changed column %s in table %s', column, table);
+      })
+      .catch(function(err) {
+        logger.info(JSON.stringify(err));
+      });
+  });
+};
+
+Migration.prototype.addColumn = function(table, column, type) {
+  var _this = this;
+  this.sequence.enqueue(function() {
+    return _this.queryInterface
+      .addColumn(table, column, type)
+      .then(function() {
+        logger.info('Added column %s to %s', column, table);
+      })
+      .catch(function(err) {
+        logger.info(JSON.stringify(err));
+      });
+  });
+};
+
+Migration.prototype.dropTable = function(table) {
+  var _this = this;
+  this.sequence.enqueue(function() {
+    return _this.queryInterface
+      .dropTable(table, {
+        force: true
+      })
+      .then(function() {
+        logger.info('table dropped %s', table);
+      })
+      .catch(function(err) {
+        logger.info(JSON.stringify(err));
+      });
+  });
+};
+
+Migration.prototype.addIndex = function(table, column, indexName) {
+  var _this = this;
+  this.sequence.enqueue(function() {
+    return _this.queryInterface
+      .addIndex(table, column, {
+        indexName: indexName
+      })
+      .then(function() {
+        logger.info('addIndex %s %s %s', table, column.join(','), indexName);
+      })
+      .catch(function(err) {
+        logger.info(JSON.stringify(err));
+      });
+  });
+};
+
+Migration.prototype.removeIndex = function(table, indexName) {
+  var _this = this;
+  this.sequence.enqueue(function() {
+    return _this.queryInterface
+      .removeIndex(table, indexName)
+      .then(function() {
+        logger.info('removeIndex %s %s', table, indexName);
+      })
+      .catch(function(err) {
+        logger.info(JSON.stringify(err));
+      });
+  });
+};
+
+Migration.prototype.query = function(sql) {
+  var _this = this;
+  this.sequence.enqueue(function() {
+    return _this.queryInterface.sequelize
+      .query(sql)
+      .then(function() {
+        logger.info('query %s', sql);
+      })
+      .catch(function(err) {
+        logger.info(JSON.stringify(err));
+      });
+  });
+};
+
+Migration.prototype.removeColumn = function(table, column) {
+  var _this = this;
+  this.sequence.enqueue(function() {
+    return _this.queryInterface
+      .removeColumn(table, column)
+      .then(function() {
+        logger.info('Removed column %s from %s', column, table);
+      })
+      .catch(function(err) {
+        logger.info(
+          util.inspect(err, {
+            showHidden: false,
+            depth: null
+          })
+        );
+      });
+  });
+};
+
+Migration.prototype.renameColumn = function(table, oldColumn, newColumn) {
+  var _this = this;
+  this.sequence.enqueue(function() {
+    return _this.queryInterface
+      .renameColumn(table, oldColumn, newColumn)
+      .then(function() {
+        logger.info('Renamed column from %s to %s on %s', oldColumn, newColumn, table);
+      })
+      .catch(function(err) {
+        logger.info(
+          util.inspect(err, {
+            showHidden: false,
+            depth: null
+          })
+        );
+      });
+  });
+};
+
+Migration.prototype.final = function(resolve) {
+  this.sequence.enqueue(function() {
+    return resolve();
+  });
+};
+
+module.exports = {
+  up: function(queryInterface, Sequelize) {
+    return new BPromise(function(resolve) {
+      var migration = new Migration(queryInterface);
+
+      // START settings
+      migration.addColumn('settings', 'viewHelpSection', {
+        type: Sequelize.BOOLEAN,
+        defaultValue: true
+      });
+      // END settings 
+
+      // START whatsapp_accounts
+      migration.addColumn('whatsapp_accounts', 'baseUrl', {
+        type: Sequelize.STRING
+      });
+
+      migration.changeColumn('whatsapp_accounts', 'type', {
+        type: Sequelize.ENUM('twilio', 'sinch')
+      });
+      // END whatsapp_accounts
+
+      // START FINAL
+      migration.final(resolve);
+      // END FINAL
+    });
+  },
+
+  down: function(queryInterface, Sequelize) {
+    // var migration = new Migration(queryInterface);
+  }
+};
\ No newline at end of file
index 21c257e..719aacb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4a9a=['ChatOfflineMessage','../api/chatOfflineMessage/chatOfflineMessage.model','ChatQueue','ChatGroup','../api/chatGroup/chatGroup.model','ChatProactiveAction','../api/chatProactiveAction/chatProactiveAction.model','CmCompany','../api/cmCompany/cmCompany.model','CmContact','../api/cmContact/cmContact.model','CmHopper','../api/cmHopper/cmHopper.model','../api/cmHopperBlack/cmHopperBlack.model','CmHopperFinal','../api/cmHopperFinal/cmHopperFinal.model','CmHopperHistory','../api/cmHopperHistory/cmHopperHistory.model','CmCustomField','../api/cmCustomField/cmCustomField.model','../api/action/action.model','Automation','../api/automation/automation.model','CannedAnswer','../api/cannedAnswer/cannedAnswer.model','Disposition','Condition','../api/condition/condition.model','Pause','../api/pause/pause.model','../api/voiceQueuesLog/voiceQueuesLog.model','Schedule','../api/schedule/schedule.model','../api/sound/sound.model','Tag','../api/tag/tag.model','Template','../api/template/template.model','Trigger','../api/variable/variable.model','Integration','IntegrationReport','../api/integrationReport/integrationReport.model','AnalyticCustomReport','../api/analyticCustomReport/analyticCustomReport.model','AnalyticDefaultReport','../api/analyticDefaultReport/analyticDefaultReport.model','AnalyticExtractedReport','../api/analyticExtractedReport/analyticExtractedReport.model','AnalyticMetric','../api/analyticMetric/analyticMetric.model','AnalyticFieldReport','../api/analyticFieldReport/analyticFieldReport.model','SalesforceAccount','../api/intSalesforceAccount/intSalesforceAccount.model','SalesforceField','SugarcrmAccount','../api/intSugarcrmAccount/intSugarcrmAccount.model','../api/intSugarcrmConfiguration/intSugarcrmConfiguration.model','SugarcrmField','../api/intSugarcrmField/intSugarcrmField.model','DeskAccount','../api/intDeskAccount/intDeskAccount.model','../api/intDeskConfiguration/intDeskConfiguration.model','DeskField','../api/intDeskField/intDeskField.model','ZohoAccount','../api/intZohoAccount/intZohoAccount.model','../api/intZohoConfiguration/intZohoConfiguration.model','ZohoField','../api/intZohoField/intZohoField.model','ZendeskAccount','../api/intZendeskAccount/intZendeskAccount.model','ZendeskConfiguration','../api/intZendeskConfiguration/intZendeskConfiguration.model','../api/intZendeskField/intZendeskField.model','../api/intFreshdeskAccount/intFreshdeskAccount.model','FreshdeskConfiguration','../api/intFreshdeskConfiguration/intFreshdeskConfiguration.model','FreshdeskField','VtigerAccount','../api/intVtigerAccount/intVtigerAccount.model','VtigerConfiguration','VtigerField','../api/intVtigerField/intVtigerField.model','../api/intServicenowAccount/intServicenowAccount.model','ServicenowConfiguration','../api/intServicenowConfiguration/intServicenowConfiguration.model','ServicenowField','../api/intServicenowField/intServicenowField.model','../api/intDynamics365Account/intDynamics365Account.model','Dynamics365Configuration','../api/intDynamics365Configuration/intDynamics365Configuration.model','FreshsalesAccount','../api/intFreshsalesAccount/intFreshsalesAccount.model','FreshsalesField','../api/intFreshsalesField/intFreshsalesField.model','../api/integration/integration.model','Network','../api/network/network.model','JscriptyAnswerReport','JscriptyQuestionReport','../api/jscriptyQuestionReport/jscriptyQuestionReport.model','JscriptySessionReport','SmsQueueReport','../api/smsQueueReport/smsQueueReport.model','SquareReport','../api/squareReport/squareReport.model','SquareDetailsReport','../api/squareReportDetail/squareReportDetail.model','../api/jscriptyProject/jscriptyProject.model','Setting','../api/setting/setting.model','../api/squareOdbc/squareOdbc.model','../api/squareProject/squareProject.model','SquareRecording','../api/squareRecording/squareRecording.model','Team','License','../api/license/license.model','Campaign','../api/campaign/campaign.model','Migration','../api/migration/migration.model','Attachment','../api/attachment/attachment.model','Plugin','../api/plugin/plugin.model','MailTransferReport','../api/mailTransferReport/mailTransferReport.model','ChatTransferReport','../api/chatTransferReport/chatTransferReport.model','OpenchannelTransferReport','../api/openchannelTransferReport/openchannelTransferReport.model','SmsTransferReport','CmList','../api/cmList/cmList.model','VoicePrefix','../api/voicePrefix/voicePrefix.model','UserProfile','../api/userProfile/userProfile.model','UserProfileSection','../api/userProfileResource/userProfileResource.model','UserNotification','../api/whatsappAccount/whatsappAccount.model','WhatsappApplication','../api/whatsappApplication/whatsappApplication.model','WhatsappInteraction','../api/whatsappInteraction/whatsappInteraction.model','WhatsappMessage','../api/whatsappMessage/whatsappMessage.model','WhatsappQueueReport','../api/whatsappQueueReport/whatsappQueueReport.model','WhatsappTransferReport','../api/whatsappTransferReport/whatsappTransferReport.model','../api/whatsappQueue/whatsappQueue.model','CloudProvider','TeamVoiceQueue','User','cascade','UserId','hasMany','VoiceRecording','Recordings','VoiceQueuesRt','VoiceExtension','ReportAgentPreview','OpenchannelInteraction','ChatInteractions','SmsInteraction','SmsInteractions','FaxInteractions','MailInteractions','WhatsappInteractions','UserNotifications','belongsTo','userProfileId','belongsToMany','chat_group_has_users','Contacts','cm_user_has_contacts','Lists','cm_user_has_lists','user_has_teams','user_has_mail_interactions','OpenchannelInteractions','user_has_openchannel_interactions','user_has_whatsapp_interactions','VoiceQueue','VoiceQueues','UserChatQueue','FaxQueues','UserFaxQueue','SmsQueues','OpenchannelQueues','WhatsappQueue','VoicePrefixes','ChatWebsites','user_has_chat_websites','MailAccounts','user_has_mail_accounts','OpenchannelAccounts','user_has_openchannel_accounts','user_has_sms_accounts','WhatsappAccount','WhatsappAccounts','user_has_whatsapp_accounts','SquareProjects','user_has_square_projects','ChanSpyId','Sounds','moh_has_sounds','Members','VoiceQueueId','Hoppers','HopperFinals','HopperHistories','CmHopperBlack','HopperBlacks','TrunkBackup','IntervalId','mandatoryDispositionPauseId','voice_queues_has_cm_lists','Agents','Teams','BlackLists','voice_queues_has_cm_blacklists','ScreenRecording','Messages','mailbox','VoiceMailMessage','mailboxuser','QueueCalls','uniqueid','VoiceAgentReport','AgentReports','ContactId','MailAccountId','hasOne','Imap','Dispositions','MailMessage','Applications','List','ListId','TemplateId','Contact','mail_interaction_has_tags','Tags','Users','MailInteractionId','Attachments','Interaction','Account','ChatWebsiteId','ChatOfflineMessageId','restrict','Interval','Dashboard','DashboardItem','Items','FaxAccountId','Interactions','Exntensions','user_has_fax_accounts','TagId','FaxInteractionId','fax_interaction_has_tags','ThroughTags','AttachmentId','SmsAccountId','Answers','SmsApplication','mandatoryDispositionPause','SmsInteractionId','Owner','sms_interaction_has_tags','user_has_sms_interactions','SmsQueueId','team_has_sms_queues','OpenchannelAccountId','OpenchannelQueueId','OpenchannelInteractionId','openchannel_interaction_has_tags','UserOpenchannelQueue','team_has_openchannel_queues','ProactiveActions','Agent','ChatInteractionId','chat_interaction_has_tags','user_has_chat_interactions','ChatInternalMessage','ChatGroupId','JscriptySessions','Company','CompanyId','cm_contact_has_tags','Queue','CampaignId','OwnerId','All','OneAll','AutomationAllId','Any','OneAny','Action','Actions','AutomationId','ParentId','Intervals','Extensions','MailApplications','ChatApplications','FaxApplications','SmsApplications','DefaultReportId','CustomReportId','Mohs','whatsapp_interaction_has_tags','AllConditions','AllCondition','AnyConditions','AnyCondition','TriggerAnyId','TriggerId','Fields','SalesforceConfiguration','Configurations','AccountId','Subjects','SubjectId','DescriptionId','FieldId','Subject','Description','Field','Variable','VariableId','SugarcrmConfiguration','DeskConfiguration','int_desk_configuration_has_tags','ZohoConfiguration','Descriptions','ZendeskField','FreshdeskAccount','int_freshdesk_configuration_has_tags','ServicenowAccount','Dynamics365Account','Dynamics365Field','FreshsalesConfiguration','ChatQueueReport','FromId','ToId','SessionId','JscriptyProject','ProjectId','MailQueues','team_has_chat_queues','ChatQueues','team_has_fax_queues','team_has_whatsapp_queues','WhatsappQueues','TrunkId','TrunkBackupId','SquareProject','SquareProjectId','campaigns_has_cm_lists','campaigns_has_cm_blacklists','FromMailAccountId','FromAccount','FromUserId','FromAgent','ToAgent','ToQueue','ToMailAccountId','ToAccount','FromChatWebsiteId','ToUserId','ToChatQueueId','ToChatWebsiteId','FaxTransferReport','FromOpenchannelAccountId','ToOpenchannelQueueId','ToOpenchannelAccountId','FromSmsAccountId','ToSmsQueueId','HopperHistory','Queues','user_has_voice_prefixes','UserProfileSections','UserProfileResource','Resources','sectionId','WhatsappAccountId','WhatsappInteractionId','FromWhatsappAccountId','ToWhatsappAccountId','ToQueueId','WhatsappQueueId','exports','sequelize','lodash','jstz','motion2','xcall','xC@LL1234','mysql','name','utf8','sequelizeHistory','127.0.0.1','utf8mb4','utf8_general_ci','database','password','options','username','../api/user/user.model','VoiceChanSpy','import','../api/voiceChanSpy/voiceChanSpy.model','VoiceContext','../api/voiceContext/voiceContext.model','VoiceMusicOnHold','../api/voiceMusicOnHold/voiceMusicOnHold.model','../api/voiceRecording/voiceRecording.model','../api/screenRecording/screenRecording.model','VoiceMail','../api/voiceMail/voiceMail.model','VoiceCallReport','../api/voiceCallReport/voiceCallReport.model','VoiceDialReport','../api/voiceDialReport/voiceDialReport.model','VoiceQueueReport','../api/voiceQueueReport/voiceQueueReport.model','MemberReport','../api/memberReport/memberReport.model','Trunk','../api/trunk/trunk.model','VoiceTransferReport','UserVoiceQueueRt','../api/userVoiceQueueRt/userVoiceQueueRt.model','UserVoiceQueue','../api/userVoiceQueue/userVoiceQueue.model','../api/userChatQueue/userChatQueue.model','UserMailQueue','../api/userMailQueue/userMailQueue.model','UserSmsQueue','../api/userOpenchannelQueue/userOpenchannelQueue.model','UserWhatsappQueue','MailServerIn','../api/mailServerIn/mailServerIn.model','MailServerOut','../api/mailServerOut/mailServerOut.model','MailAccount','../api/mailAccount/mailAccount.model','MailQueue','../api/mailSubstatus/mailSubstatus.model','MailInteraction','../api/mailInteraction/mailInteraction.model','../api/mailMessage/mailMessage.model','MailApplication','../api/mailApplication/mailApplication.model','MailQueueReport','../api/mailQueueReport/mailQueueReport.model','../api/dashboard/dashboard.model','FaxAccount','../api/faxAccount/faxAccount.model','FaxApplication','../api/faxApplication/faxApplication.model','FaxInteraction','../api/faxInteraction/faxInteraction.model','FaxMessage','../api/faxMessage/faxMessage.model','FaxQueue','FaxQueueReport','SmsAccount','../api/smsAccount/smsAccount.model','../api/smsApplication/smsApplication.model','../api/smsInteraction/smsInteraction.model','SmsMessage','../api/smsMessage/smsMessage.model','SmsQueue','OpenchannelAccount','../api/openchannelAccount/openchannelAccount.model','OpenchannelApplication','../api/openchannelApplication/openchannelApplication.model','../api/openchannelInteraction/openchannelInteraction.model','OpenchannelMessage','../api/openchannelMessage/openchannelMessage.model','OpenchannelQueue','../api/openchannelQueue/openchannelQueue.model','ChatWebsite','OpenchannelQueueReport','../api/openchannelQueueReport/openchannelQueueReport.model','ChatApplication','../api/chatApplication/chatApplication.model','ChatInteraction','../api/chatInteraction/chatInteraction.model','ChatMessage','../api/chatMessage/chatMessage.model'];(function(_0xe36fb,_0x561176){var _0x50a044=function(_0x291b08){while(--_0x291b08){_0xe36fb['push'](_0xe36fb['shift']());}};_0x50a044(++_0x561176);}(_0x4a9a,0x190));var _0xa4a9=function(_0x305b74,_0x2ceebf){_0x305b74=_0x305b74-0x0;var _0x4a12ec=_0x4a9a[_0x305b74];return _0x4a12ec;};'use strict';var config=require('../config/environment');var Sequelize=require(_0xa4a9('0x0'));var _=require(_0xa4a9('0x1'));var jstz=require(_0xa4a9('0x2'));var timezone=jstz['determine']();config[_0xa4a9('0x0')]=_['defaultsDeep'](config[_0xa4a9('0x0')],{'database':_0xa4a9('0x3'),'username':_0xa4a9('0x4'),'password':_0xa4a9('0x5'),'options':{'host':'127.0.0.1','port':0xcea,'dialect':_0xa4a9('0x6'),'dialectOptions':{'charset':'utf8mb4'},'logging':![],'timezone':timezone[_0xa4a9('0x7')](),'define':{'charset':_0xa4a9('0x8'),'collate':'utf8_general_ci'}}});config[_0xa4a9('0x9')]=_['defaultsDeep'](config[_0xa4a9('0x9')],{'database':_0xa4a9('0x3'),'username':_0xa4a9('0x4'),'password':'xC@LL1234','options':{'host':_0xa4a9('0xa'),'port':0xcea,'dialect':_0xa4a9('0x6'),'dialectOptions':{'charset':_0xa4a9('0xb')},'logging':![],'timezone':timezone[_0xa4a9('0x7')](),'define':{'charset':_0xa4a9('0x8'),'collate':_0xa4a9('0xc')}}});var db={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0xa4a9('0x0')][_0xa4a9('0xd')],config[_0xa4a9('0x0')]['username'],config[_0xa4a9('0x0')][_0xa4a9('0xe')],config[_0xa4a9('0x0')][_0xa4a9('0xf')])};var dbH={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0xa4a9('0x9')]['database'],config['sequelizeHistory'][_0xa4a9('0x10')],config[_0xa4a9('0x9')][_0xa4a9('0xe')],config[_0xa4a9('0x9')][_0xa4a9('0xf')])};db['User']=db['sequelize']['import'](_0xa4a9('0x11'));db[_0xa4a9('0x12')]=db['sequelize'][_0xa4a9('0x13')](_0xa4a9('0x14'));db[_0xa4a9('0x15')]=db[_0xa4a9('0x0')][_0xa4a9('0x13')](_0xa4a9('0x16'));db['VoiceExtension']=db[_0xa4a9('0x0')]['import']('../api/voiceExtension/voiceExtension.model');db[_0xa4a9('0x17')]=db[_0xa4a9('0x0')][_0xa4a9('0x13')](_0xa4a9('0x18'));db['VoiceQueue']=db[_0xa4a9('0x0')][_0xa4a9('0x13')]('../api/voiceQueue/voiceQueue.model');db['VoiceRecording']=db[_0xa4a9('0x0')][_0xa4a9('0x13')](_0xa4a9('0x19'));db['ScreenRecording']=db[_0xa4a9('0x0')][_0xa4a9('0x13')](_0xa4a9('0x1a'));db[_0xa4a9('0x1b')]=db[_0xa4a9('0x0')][_0xa4a9('0x13')](_0xa4a9('0x1c'));db['VoiceMailMessage']=db['sequelize']['import']('../api/voiceMailMessage/voiceMailMessage.model');db[_0xa4a9('0x1d')]=db['sequelize'][_0xa4a9('0x13')](_0xa4a9('0x1e'));db[_0xa4a9('0x1f')]=db[_0xa4a9('0x0')][_0xa4a9('0x13')](_0xa4a9('0x20'));db['VoiceAgentReport']=db[_0xa4a9('0x0')][_0xa4a9('0x13')]('../api/voiceAgentReport/voiceAgentReport.model');db[_0xa4a9('0x21')]=db[_0xa4a9('0x0')]['import'](_0xa4a9('0x22'));db[_0xa4a9('0x23')]=db['sequelize'][_0xa4a9('0x13')](_0xa4a9('0x24'));db[_0xa4a9('0x25')]=db['sequelize'][_0xa4a9('0x13')](_0xa4a9('0x26'));db[_0xa4a9('0x27')]=db['sequelize']['import']('../api/voiceTransferReport/voiceTransferReport.model');db[_0xa4a9('0x28')]=db[_0xa4a9('0x0')][_0xa4a9('0x13')](_0xa4a9('0x29'));db[_0xa4a9('0x2a')]=db[_0xa4a9('0x0')]['import'](_0xa4a9('0x2b'));db['UserChatQueue']=db['sequelize'][_0xa4a9('0x13')](_0xa4a9('0x2c'));db[_0xa4a9('0x2d')]=db[_0xa4a9('0x0')][_0xa4a9('0x13')](_0xa4a9('0x2e'));db['UserFaxQueue']=db['sequelize'][_0xa4a9('0x13')]('../api/userFaxQueue/userFaxQueue.model');db[_0xa4a9('0x2f')]=db['sequelize'][_0xa4a9('0x13')]('../api/userSmsQueue/userSmsQueue.model');db['UserOpenchannelQueue']=db['sequelize']['import'](_0xa4a9('0x30'));db[_0xa4a9('0x31')]=db['sequelize'][_0xa4a9('0x13')]('../api/userWhatsappQueue/userWhatsappQueue.model');db[_0xa4a9('0x32')]=db[_0xa4a9('0x0')]['import'](_0xa4a9('0x33'));db[_0xa4a9('0x34')]=db['sequelize'][_0xa4a9('0x13')](_0xa4a9('0x35'));db[_0xa4a9('0x36')]=db[_0xa4a9('0x0')]['import'](_0xa4a9('0x37'));db[_0xa4a9('0x38')]=db[_0xa4a9('0x0')][_0xa4a9('0x13')]('../api/mailQueue/mailQueue.model');db['MailSubstatus']=db['sequelize']['import'](_0xa4a9('0x39'));db[_0xa4a9('0x3a')]=db[_0xa4a9('0x0')][_0xa4a9('0x13')](_0xa4a9('0x3b'));db['MailMessage']=db['sequelize'][_0xa4a9('0x13')](_0xa4a9('0x3c'));db[_0xa4a9('0x3d')]=db[_0xa4a9('0x0')][_0xa4a9('0x13')](_0xa4a9('0x3e'));db[_0xa4a9('0x3f')]=db[_0xa4a9('0x0')][_0xa4a9('0x13')](_0xa4a9('0x40'));db['Dashboard']=db[_0xa4a9('0x0')][_0xa4a9('0x13')](_0xa4a9('0x41'));db['DashboardItem']=db['sequelize'][_0xa4a9('0x13')]('../api/dashboardItem/dashboardItem.model');db[_0xa4a9('0x42')]=db[_0xa4a9('0x0')]['import'](_0xa4a9('0x43'));db[_0xa4a9('0x44')]=db[_0xa4a9('0x0')][_0xa4a9('0x13')](_0xa4a9('0x45'));db[_0xa4a9('0x46')]=db[_0xa4a9('0x0')][_0xa4a9('0x13')](_0xa4a9('0x47'));db[_0xa4a9('0x48')]=db[_0xa4a9('0x0')][_0xa4a9('0x13')](_0xa4a9('0x49'));db[_0xa4a9('0x4a')]=db[_0xa4a9('0x0')]['import']('../api/faxQueue/faxQueue.model');db[_0xa4a9('0x4b')]=db[_0xa4a9('0x0')][_0xa4a9('0x13')]('../api/faxQueueReport/faxQueueReport.model');db[_0xa4a9('0x4c')]=db['sequelize'][_0xa4a9('0x13')](_0xa4a9('0x4d'));db['SmsApplication']=db[_0xa4a9('0x0')][_0xa4a9('0x13')](_0xa4a9('0x4e'));db['SmsInteraction']=db[_0xa4a9('0x0')]['import'](_0xa4a9('0x4f'));db[_0xa4a9('0x50')]=db[_0xa4a9('0x0')]['import'](_0xa4a9('0x51'));db[_0xa4a9('0x52')]=db[_0xa4a9('0x0')][_0xa4a9('0x13')]('../api/smsQueue/smsQueue.model');db[_0xa4a9('0x53')]=db[_0xa4a9('0x0')][_0xa4a9('0x13')](_0xa4a9('0x54'));db[_0xa4a9('0x55')]=db['sequelize'][_0xa4a9('0x13')](_0xa4a9('0x56'));db['OpenchannelInteraction']=db[_0xa4a9('0x0')]['import'](_0xa4a9('0x57'));db[_0xa4a9('0x58')]=db[_0xa4a9('0x0')][_0xa4a9('0x13')](_0xa4a9('0x59'));db[_0xa4a9('0x5a')]=db['sequelize']['import'](_0xa4a9('0x5b'));db[_0xa4a9('0x5c')]=db[_0xa4a9('0x0')]['import']('../api/chatWebsite/chatWebsite.model');db[_0xa4a9('0x5d')]=db['sequelize'][_0xa4a9('0x13')](_0xa4a9('0x5e'));db[_0xa4a9('0x5f')]=db['sequelize']['import'](_0xa4a9('0x60'));db[_0xa4a9('0x61')]=db[_0xa4a9('0x0')][_0xa4a9('0x13')](_0xa4a9('0x62'));db[_0xa4a9('0x63')]=db[_0xa4a9('0x0')][_0xa4a9('0x13')](_0xa4a9('0x64'));db[_0xa4a9('0x65')]=db[_0xa4a9('0x0')][_0xa4a9('0x13')](_0xa4a9('0x66'));db[_0xa4a9('0x67')]=db[_0xa4a9('0x0')]['import']('../api/chatQueue/chatQueue.model');db[_0xa4a9('0x68')]=db[_0xa4a9('0x0')][_0xa4a9('0x13')](_0xa4a9('0x69'));db[_0xa4a9('0x6a')]=db[_0xa4a9('0x0')][_0xa4a9('0x13')](_0xa4a9('0x6b'));db[_0xa4a9('0x6c')]=db[_0xa4a9('0x0')]['import'](_0xa4a9('0x6d'));db[_0xa4a9('0x6e')]=db[_0xa4a9('0x0')]['import'](_0xa4a9('0x6f'));db[_0xa4a9('0x70')]=db[_0xa4a9('0x0')][_0xa4a9('0x13')](_0xa4a9('0x71'));db['CmHopperBlack']=db[_0xa4a9('0x0')][_0xa4a9('0x13')](_0xa4a9('0x72'));db[_0xa4a9('0x73')]=db[_0xa4a9('0x0')]['import'](_0xa4a9('0x74'));db[_0xa4a9('0x75')]=db['sequelize'][_0xa4a9('0x13')](_0xa4a9('0x76'));db['ReportAgentPreview']=db['sequelize']['import']('../api/reportAgentPreview/reportAgentPreview.model');db[_0xa4a9('0x77')]=db[_0xa4a9('0x0')][_0xa4a9('0x13')](_0xa4a9('0x78'));db['Action']=db['sequelize']['import'](_0xa4a9('0x79'));db[_0xa4a9('0x7a')]=db[_0xa4a9('0x0')]['import'](_0xa4a9('0x7b'));db[_0xa4a9('0x7c')]=db['sequelize'][_0xa4a9('0x13')](_0xa4a9('0x7d'));db[_0xa4a9('0x7e')]=db[_0xa4a9('0x0')][_0xa4a9('0x13')]('../api/disposition/disposition.model');db[_0xa4a9('0x7f')]=db['sequelize']['import'](_0xa4a9('0x80'));db['Interval']=db[_0xa4a9('0x0')][_0xa4a9('0x13')]('../api/interval/interval.model');db[_0xa4a9('0x81')]=db['sequelize']['import'](_0xa4a9('0x82'));db['Cdr']=db[_0xa4a9('0x0')]['import']('../api/cdr/cdr.model');db['VoiceQueuesLog']=db[_0xa4a9('0x0')][_0xa4a9('0x13')](_0xa4a9('0x83'));db[_0xa4a9('0x84')]=db[_0xa4a9('0x0')][_0xa4a9('0x13')](_0xa4a9('0x85'));db['Sound']=db[_0xa4a9('0x0')]['import'](_0xa4a9('0x86'));db[_0xa4a9('0x87')]=db[_0xa4a9('0x0')][_0xa4a9('0x13')](_0xa4a9('0x88'));db[_0xa4a9('0x89')]=db[_0xa4a9('0x0')]['import'](_0xa4a9('0x8a'));db[_0xa4a9('0x8b')]=db[_0xa4a9('0x0')][_0xa4a9('0x13')]('../api/trigger/trigger.model');db['Variable']=db[_0xa4a9('0x0')][_0xa4a9('0x13')](_0xa4a9('0x8c'));db[_0xa4a9('0x8d')]=db[_0xa4a9('0x0')][_0xa4a9('0x13')]('../api/integration/integration.model');db[_0xa4a9('0x8e')]=db[_0xa4a9('0x0')][_0xa4a9('0x13')](_0xa4a9('0x8f'));db[_0xa4a9('0x90')]=db[_0xa4a9('0x0')]['import'](_0xa4a9('0x91'));db[_0xa4a9('0x92')]=db[_0xa4a9('0x0')][_0xa4a9('0x13')](_0xa4a9('0x93'));db[_0xa4a9('0x94')]=db[_0xa4a9('0x0')][_0xa4a9('0x13')](_0xa4a9('0x95'));db[_0xa4a9('0x96')]=db['sequelize']['import'](_0xa4a9('0x97'));db[_0xa4a9('0x98')]=db[_0xa4a9('0x0')][_0xa4a9('0x13')](_0xa4a9('0x99'));db['AnalyticTreeReport']=db[_0xa4a9('0x0')][_0xa4a9('0x13')]('../api/analyticTreeReport/analyticTreeReport.model');db[_0xa4a9('0x9a')]=db[_0xa4a9('0x0')][_0xa4a9('0x13')](_0xa4a9('0x9b'));db['SalesforceConfiguration']=db[_0xa4a9('0x0')][_0xa4a9('0x13')]('../api/intSalesforceConfiguration/intSalesforceConfiguration.model');db[_0xa4a9('0x9c')]=db[_0xa4a9('0x0')]['import']('../api/intSalesforceField/intSalesforceField.model');db[_0xa4a9('0x9d')]=db[_0xa4a9('0x0')][_0xa4a9('0x13')](_0xa4a9('0x9e'));db['SugarcrmConfiguration']=db['sequelize'][_0xa4a9('0x13')](_0xa4a9('0x9f'));db[_0xa4a9('0xa0')]=db[_0xa4a9('0x0')][_0xa4a9('0x13')](_0xa4a9('0xa1'));db[_0xa4a9('0xa2')]=db[_0xa4a9('0x0')][_0xa4a9('0x13')](_0xa4a9('0xa3'));db['DeskConfiguration']=db['sequelize'][_0xa4a9('0x13')](_0xa4a9('0xa4'));db[_0xa4a9('0xa5')]=db[_0xa4a9('0x0')]['import'](_0xa4a9('0xa6'));db[_0xa4a9('0xa7')]=db[_0xa4a9('0x0')][_0xa4a9('0x13')](_0xa4a9('0xa8'));db['ZohoConfiguration']=db[_0xa4a9('0x0')][_0xa4a9('0x13')](_0xa4a9('0xa9'));db[_0xa4a9('0xaa')]=db[_0xa4a9('0x0')][_0xa4a9('0x13')](_0xa4a9('0xab'));db[_0xa4a9('0xac')]=db[_0xa4a9('0x0')][_0xa4a9('0x13')](_0xa4a9('0xad'));db[_0xa4a9('0xae')]=db['sequelize'][_0xa4a9('0x13')](_0xa4a9('0xaf'));db['ZendeskField']=db[_0xa4a9('0x0')][_0xa4a9('0x13')](_0xa4a9('0xb0'));db['FreshdeskAccount']=db['sequelize'][_0xa4a9('0x13')](_0xa4a9('0xb1'));db[_0xa4a9('0xb2')]=db[_0xa4a9('0x0')][_0xa4a9('0x13')](_0xa4a9('0xb3'));db[_0xa4a9('0xb4')]=db[_0xa4a9('0x0')][_0xa4a9('0x13')]('../api/intFreshdeskField/intFreshdeskField.model');db[_0xa4a9('0xb5')]=db[_0xa4a9('0x0')][_0xa4a9('0x13')](_0xa4a9('0xb6'));db[_0xa4a9('0xb7')]=db[_0xa4a9('0x0')][_0xa4a9('0x13')]('../api/intVtigerConfiguration/intVtigerConfiguration.model');db[_0xa4a9('0xb8')]=db['sequelize'][_0xa4a9('0x13')](_0xa4a9('0xb9'));db['ServicenowAccount']=db[_0xa4a9('0x0')][_0xa4a9('0x13')](_0xa4a9('0xba'));db[_0xa4a9('0xbb')]=db['sequelize']['import'](_0xa4a9('0xbc'));db[_0xa4a9('0xbd')]=db['sequelize']['import'](_0xa4a9('0xbe'));db['Dynamics365Account']=db[_0xa4a9('0x0')][_0xa4a9('0x13')](_0xa4a9('0xbf'));db[_0xa4a9('0xc0')]=db['sequelize'][_0xa4a9('0x13')](_0xa4a9('0xc1'));db['Dynamics365Field']=db[_0xa4a9('0x0')][_0xa4a9('0x13')]('../api/intDynamics365Field/intDynamics365Field.model');db[_0xa4a9('0xc2')]=db[_0xa4a9('0x0')][_0xa4a9('0x13')](_0xa4a9('0xc3'));db['FreshsalesConfiguration']=db[_0xa4a9('0x0')]['import']('../api/intFreshsalesConfiguration/intFreshsalesConfiguration.model');db[_0xa4a9('0xc4')]=db[_0xa4a9('0x0')][_0xa4a9('0x13')](_0xa4a9('0xc5'));db[_0xa4a9('0x8d')]=db[_0xa4a9('0x0')]['import'](_0xa4a9('0xc6'));db[_0xa4a9('0xc7')]=db[_0xa4a9('0x0')][_0xa4a9('0x13')](_0xa4a9('0xc8'));db['ChatQueueReport']=db[_0xa4a9('0x0')][_0xa4a9('0x13')]('../api/chatQueueReport/chatQueueReport.model');db['ChatInternalMessage']=db[_0xa4a9('0x0')][_0xa4a9('0x13')]('../api/chatInternalMessage/chatInternalMessage.model');db[_0xa4a9('0xc9')]=db[_0xa4a9('0x0')][_0xa4a9('0x13')]('../api/jscriptyAnswerReport/jscriptyAnswerReport.model');db[_0xa4a9('0xca')]=db[_0xa4a9('0x0')]['import'](_0xa4a9('0xcb'));db[_0xa4a9('0xcc')]=db['sequelize'][_0xa4a9('0x13')]('../api/jscriptySessionReport/jscriptySessionReport.model');db[_0xa4a9('0xcd')]=db[_0xa4a9('0x0')][_0xa4a9('0x13')](_0xa4a9('0xce'));db[_0xa4a9('0xcf')]=db[_0xa4a9('0x0')][_0xa4a9('0x13')](_0xa4a9('0xd0'));db[_0xa4a9('0xd1')]=db[_0xa4a9('0x0')][_0xa4a9('0x13')](_0xa4a9('0xd2'));db['JscriptyProject']=db['sequelize'][_0xa4a9('0x13')](_0xa4a9('0xd3'));db[_0xa4a9('0xd4')]=db['sequelize'][_0xa4a9('0x13')](_0xa4a9('0xd5'));db['SquareOdbc']=db['sequelize'][_0xa4a9('0x13')](_0xa4a9('0xd6'));db['SquareProject']=db['sequelize']['import'](_0xa4a9('0xd7'));db[_0xa4a9('0xd8')]=db[_0xa4a9('0x0')][_0xa4a9('0x13')](_0xa4a9('0xd9'));db['SquareMessage']=db[_0xa4a9('0x0')]['import']('../api/squareMessage/squareMessage.model');db[_0xa4a9('0xda')]=db[_0xa4a9('0x0')][_0xa4a9('0x13')]('../api/team/team.model');db[_0xa4a9('0xdb')]=db['sequelize'][_0xa4a9('0x13')](_0xa4a9('0xdc'));db[_0xa4a9('0xdd')]=db[_0xa4a9('0x0')][_0xa4a9('0x13')](_0xa4a9('0xde'));db[_0xa4a9('0xdf')]=db[_0xa4a9('0x0')]['import'](_0xa4a9('0xe0'));db[_0xa4a9('0xe1')]=db[_0xa4a9('0x0')]['import'](_0xa4a9('0xe2'));db[_0xa4a9('0xe3')]=db[_0xa4a9('0x0')]['import'](_0xa4a9('0xe4'));db[_0xa4a9('0xe5')]=db[_0xa4a9('0x0')][_0xa4a9('0x13')](_0xa4a9('0xe6'));db[_0xa4a9('0xe7')]=db[_0xa4a9('0x0')]['import'](_0xa4a9('0xe8'));db['FaxTransferReport']=db[_0xa4a9('0x0')][_0xa4a9('0x13')]('../api/faxTransferReport/faxTransferReport.model');db[_0xa4a9('0xe9')]=db[_0xa4a9('0x0')][_0xa4a9('0x13')](_0xa4a9('0xea'));db[_0xa4a9('0xeb')]=db['sequelize']['import']('../api/smsTransferReport/smsTransferReport.model');db[_0xa4a9('0xec')]=db[_0xa4a9('0x0')][_0xa4a9('0x13')](_0xa4a9('0xed'));db[_0xa4a9('0xee')]=db[_0xa4a9('0x0')]['import'](_0xa4a9('0xef'));db[_0xa4a9('0xf0')]=db['sequelize'][_0xa4a9('0x13')](_0xa4a9('0xf1'));db[_0xa4a9('0xf2')]=db[_0xa4a9('0x0')]['import']('../api/userProfileSection/userProfileSection.model');db['UserProfileResource']=db[_0xa4a9('0x0')][_0xa4a9('0x13')](_0xa4a9('0xf3'));db[_0xa4a9('0xf4')]=db[_0xa4a9('0x0')]['import']('../api/userNotification/userNotification.model');db['WhatsappAccount']=db[_0xa4a9('0x0')][_0xa4a9('0x13')](_0xa4a9('0xf5'));db[_0xa4a9('0xf6')]=db['sequelize']['import'](_0xa4a9('0xf7'));db[_0xa4a9('0xf8')]=db[_0xa4a9('0x0')]['import'](_0xa4a9('0xf9'));db[_0xa4a9('0xfa')]=db[_0xa4a9('0x0')][_0xa4a9('0x13')](_0xa4a9('0xfb'));db[_0xa4a9('0xfc')]=db[_0xa4a9('0x0')][_0xa4a9('0x13')](_0xa4a9('0xfd'));db[_0xa4a9('0xfe')]=db['sequelize'][_0xa4a9('0x13')](_0xa4a9('0xff'));db['WhatsappQueue']=db[_0xa4a9('0x0')][_0xa4a9('0x13')](_0xa4a9('0x100'));db[_0xa4a9('0x101')]=db[_0xa4a9('0x0')][_0xa4a9('0x13')]('../api/cloudProvider/cloudProvider.model');db[_0xa4a9('0x102')]=db['sequelize'][_0xa4a9('0x13')]('../api/teamVoiceQueue/teamVoiceQueue.model');db[_0xa4a9('0x103')]['hasOne'](db[_0xa4a9('0x1b')],{'as':_0xa4a9('0x1b'),'onDelete':_0xa4a9('0x104'),'foreignKey':_0xa4a9('0x105')});db[_0xa4a9('0x103')][_0xa4a9('0x106')](db[_0xa4a9('0x107')],{'as':_0xa4a9('0x108'),'foreignKey':_0xa4a9('0x105')});db[_0xa4a9('0x103')][_0xa4a9('0x106')](db[_0xa4a9('0x28')],{'as':_0xa4a9('0x109'),'foreignKey':_0xa4a9('0x105')});db['User'][_0xa4a9('0x106')](db[_0xa4a9('0x10a')],{'as':'Extensions','onDelete':_0xa4a9('0x104'),'hooks':!![]});db['User'][_0xa4a9('0x106')](db[_0xa4a9('0x73')],{'as':'HopperFinals','foreignKey':'UserId'});db['User'][_0xa4a9('0x106')](db[_0xa4a9('0x75')],{'as':'HopperHistory','foreignKey':_0xa4a9('0x105')});db[_0xa4a9('0x103')]['hasMany'](db[_0xa4a9('0x10b')],{'as':_0xa4a9('0x10b'),'foreignKey':'UserId'});db[_0xa4a9('0x103')][_0xa4a9('0x106')](db[_0xa4a9('0x10c')],{'as':'OpenchannelInteractions','foreignKey':_0xa4a9('0x105')});db['User'][_0xa4a9('0x106')](db['ChatInteraction'],{'as':_0xa4a9('0x10d'),'foreignKey':_0xa4a9('0x105')});db[_0xa4a9('0x103')][_0xa4a9('0x106')](db[_0xa4a9('0x10e')],{'as':_0xa4a9('0x10f'),'foreignKey':_0xa4a9('0x105')});db[_0xa4a9('0x103')][_0xa4a9('0x106')](db[_0xa4a9('0x46')],{'as':_0xa4a9('0x110'),'foreignKey':_0xa4a9('0x105')});db[_0xa4a9('0x103')][_0xa4a9('0x106')](db['MailInteraction'],{'as':_0xa4a9('0x111'),'foreignKey':_0xa4a9('0x105')});db[_0xa4a9('0x103')]['hasMany'](db[_0xa4a9('0xf8')],{'as':_0xa4a9('0x112'),'foreignKey':'UserId'});db[_0xa4a9('0x103')][_0xa4a9('0x106')](db['UserNotification'],{'as':_0xa4a9('0x113'),'foreignKey':'SenderId'});db['User'][_0xa4a9('0x114')](db['UserProfile'],{'as':_0xa4a9('0xf0'),'foreignKey':_0xa4a9('0x115')});db['User'][_0xa4a9('0x116')](db[_0xa4a9('0x68')],{'as':'Groups','through':_0xa4a9('0x117')});db[_0xa4a9('0x103')]['belongsToMany'](db[_0xa4a9('0x6e')],{'as':_0xa4a9('0x118'),'through':_0xa4a9('0x119')});db[_0xa4a9('0x103')][_0xa4a9('0x116')](db[_0xa4a9('0xec')],{'as':_0xa4a9('0x11a'),'through':_0xa4a9('0x11b')});db['User']['belongsToMany'](db['Team'],{'through':_0xa4a9('0x11c')});db[_0xa4a9('0x103')][_0xa4a9('0x116')](db['MailInteraction'],{'as':_0xa4a9('0x111'),'through':_0xa4a9('0x11d')});db['User'][_0xa4a9('0x116')](db['ChatInteraction'],{'as':'ChatInteractions','through':'user_has_chat_interactions'});db[_0xa4a9('0x103')][_0xa4a9('0x116')](db['FaxInteraction'],{'as':_0xa4a9('0x110'),'through':'user_has_fax_interactions'});db[_0xa4a9('0x103')]['belongsToMany'](db[_0xa4a9('0x10e')],{'as':_0xa4a9('0x10f'),'through':'user_has_sms_interactions'});db[_0xa4a9('0x103')][_0xa4a9('0x116')](db['OpenchannelInteraction'],{'as':_0xa4a9('0x11e'),'through':_0xa4a9('0x11f')});db[_0xa4a9('0x103')]['belongsToMany'](db[_0xa4a9('0xf8')],{'as':_0xa4a9('0x112'),'through':_0xa4a9('0x120')});db[_0xa4a9('0x103')]['belongsToMany'](db[_0xa4a9('0x121')],{'as':_0xa4a9('0x122'),'through':_0xa4a9('0x2a'),'required':![]});db[_0xa4a9('0x103')][_0xa4a9('0x116')](db[_0xa4a9('0x38')],{'as':'MailQueues','through':_0xa4a9('0x2d'),'required':![]});db[_0xa4a9('0x103')]['belongsToMany'](db[_0xa4a9('0x67')],{'as':'ChatQueues','through':_0xa4a9('0x123'),'required':![],'hooks':!![]});db[_0xa4a9('0x103')][_0xa4a9('0x116')](db[_0xa4a9('0x4a')],{'as':_0xa4a9('0x124'),'through':_0xa4a9('0x125'),'required':![]});db['User'][_0xa4a9('0x116')](db['SmsQueue'],{'as':_0xa4a9('0x126'),'through':_0xa4a9('0x2f'),'required':![]});db[_0xa4a9('0x103')][_0xa4a9('0x116')](db[_0xa4a9('0x5a')],{'as':_0xa4a9('0x127'),'through':'UserOpenchannelQueue','required':![]});db[_0xa4a9('0x103')]['belongsToMany'](db[_0xa4a9('0x128')],{'as':'WhatsappQueues','through':_0xa4a9('0x31'),'required':![]});db[_0xa4a9('0x103')][_0xa4a9('0x116')](db[_0xa4a9('0xec')],{'through':_0xa4a9('0x11b')});db[_0xa4a9('0x103')][_0xa4a9('0x116')](db[_0xa4a9('0xee')],{'as':_0xa4a9('0x129'),'through':'user_has_voice_prefixes','required':![]});db[_0xa4a9('0x103')][_0xa4a9('0x116')](db[_0xa4a9('0x5c')],{'as':_0xa4a9('0x12a'),'through':_0xa4a9('0x12b')});db[_0xa4a9('0x103')]['belongsToMany'](db['FaxAccount'],{'as':'FaxAccounts','through':'user_has_fax_accounts'});db[_0xa4a9('0x103')][_0xa4a9('0x116')](db[_0xa4a9('0x36')],{'as':_0xa4a9('0x12c'),'through':_0xa4a9('0x12d')});db['User'][_0xa4a9('0x116')](db['OpenchannelAccount'],{'as':_0xa4a9('0x12e'),'through':_0xa4a9('0x12f')});db[_0xa4a9('0x103')][_0xa4a9('0x116')](db[_0xa4a9('0x4c')],{'as':'SmsAccounts','through':_0xa4a9('0x130')});db['User'][_0xa4a9('0x116')](db[_0xa4a9('0x131')],{'as':_0xa4a9('0x132'),'through':_0xa4a9('0x133')});db[_0xa4a9('0x103')][_0xa4a9('0x116')](db['SquareProject'],{'as':_0xa4a9('0x134'),'through':_0xa4a9('0x135')});db[_0xa4a9('0x12')][_0xa4a9('0x106')](db['VoiceExtension'],{'as':'SpiedAgents','onDelete':_0xa4a9('0x104'),'foreignKey':_0xa4a9('0x136')});db[_0xa4a9('0x15')]['hasMany'](db['VoiceExtension'],{'onDelete':_0xa4a9('0x104')});db[_0xa4a9('0x10a')][_0xa4a9('0x106')](db[_0xa4a9('0x10a')],{'as':'Applications','onDelete':_0xa4a9('0x104')});db[_0xa4a9('0x17')]['belongsToMany'](db['Sound'],{'as':_0xa4a9('0x137'),'through':_0xa4a9('0x138')});db[_0xa4a9('0x121')][_0xa4a9('0x106')](db[_0xa4a9('0x28')],{'as':_0xa4a9('0x139'),'foreignKey':_0xa4a9('0x13a')});db[_0xa4a9('0x121')][_0xa4a9('0x106')](db[_0xa4a9('0x70')],{'as':_0xa4a9('0x13b'),'foreignKey':'VoiceQueueId'});db[_0xa4a9('0x121')][_0xa4a9('0x106')](db['CmHopperFinal'],{'as':_0xa4a9('0x13c'),'foreignKey':_0xa4a9('0x13a')});db[_0xa4a9('0x121')][_0xa4a9('0x106')](db[_0xa4a9('0x75')],{'as':_0xa4a9('0x13d'),'foreignKey':_0xa4a9('0x13a')});db['VoiceQueue'][_0xa4a9('0x106')](db['ReportAgentPreview'],{'as':_0xa4a9('0x10b'),'foreignKey':_0xa4a9('0x13a')});db[_0xa4a9('0x121')][_0xa4a9('0x106')](db[_0xa4a9('0x13e')],{'as':_0xa4a9('0x13f'),'foreignKey':'VoiceQueueId'});db[_0xa4a9('0x121')][_0xa4a9('0x106')](db[_0xa4a9('0xcc')],{'as':'JscriptySessions','foreignKey':'VoiceQueueId'});db['VoiceQueue'][_0xa4a9('0x114')](db[_0xa4a9('0x25')],{'as':_0xa4a9('0x25'),'foreignKey':'TrunkId'});db['VoiceQueue'][_0xa4a9('0x114')](db[_0xa4a9('0x25')],{'as':_0xa4a9('0x140'),'foreignKey':'TrunkBackupId'});db[_0xa4a9('0x121')][_0xa4a9('0x114')](db['Interval'],{'as':'Interval','foreignKey':_0xa4a9('0x141')});db[_0xa4a9('0x121')][_0xa4a9('0x114')](db[_0xa4a9('0x81')],{'as':'mandatoryDispositionPause','foreignKey':_0xa4a9('0x142')});db[_0xa4a9('0x121')][_0xa4a9('0x116')](db['CmList'],{'as':_0xa4a9('0x11a'),'through':_0xa4a9('0x143')});db[_0xa4a9('0x121')][_0xa4a9('0x116')](db[_0xa4a9('0x103')],{'as':_0xa4a9('0x144'),'through':_0xa4a9('0x2a')});db['VoiceQueue'][_0xa4a9('0x116')](db['Team'],{'as':_0xa4a9('0x145'),'through':_0xa4a9('0x102')});db[_0xa4a9('0x121')][_0xa4a9('0x116')](db[_0xa4a9('0xec')],{'as':_0xa4a9('0x146'),'through':_0xa4a9('0x147')});db[_0xa4a9('0x107')][_0xa4a9('0x114')](db['User'],{'as':_0xa4a9('0x103'),'foreignKey':_0xa4a9('0x105')});db[_0xa4a9('0x148')][_0xa4a9('0x114')](db[_0xa4a9('0x103')],{'as':'User','foreignKey':_0xa4a9('0x105')});db[_0xa4a9('0x1b')]['hasMany'](db['VoiceMailMessage'],{'as':_0xa4a9('0x149'),'onDelete':'cascade','foreignKey':'mailboxuser','sourceKey':_0xa4a9('0x14a')});db[_0xa4a9('0x14b')][_0xa4a9('0x114')](db[_0xa4a9('0x1b')],{'foreignKey':_0xa4a9('0x14c'),'targetKey':_0xa4a9('0x14a')});db['VoiceCallReport'][_0xa4a9('0x106')](db['VoiceQueueReport'],{'as':_0xa4a9('0x14d'),'foreignKey':_0xa4a9('0x14e'),'constraints':![]});db[_0xa4a9('0x1d')][_0xa4a9('0x106')](db[_0xa4a9('0x14f')],{'as':_0xa4a9('0x150'),'foreignKey':'uniqueid','constraints':![]});db['VoiceCallReport']['belongsTo'](db[_0xa4a9('0x103')],{'as':_0xa4a9('0x103'),'foreignKey':'UserId'});db['VoiceCallReport'][_0xa4a9('0x114')](db[_0xa4a9('0x6e')],{'as':'Contact','foreignKey':_0xa4a9('0x151')});db[_0xa4a9('0x32')][_0xa4a9('0x114')](db['MailAccount'],{'as':_0xa4a9('0x36'),'foreignKey':_0xa4a9('0x152')});db['MailServerOut'][_0xa4a9('0x114')](db[_0xa4a9('0x36')],{'as':_0xa4a9('0x36'),'foreignKey':_0xa4a9('0x152')});db[_0xa4a9('0x36')][_0xa4a9('0x153')](db[_0xa4a9('0x32')],{'as':_0xa4a9('0x154'),'onDelete':'cascade'});db[_0xa4a9('0x36')][_0xa4a9('0x153')](db[_0xa4a9('0x34')],{'as':'Smtp','onDelete':_0xa4a9('0x104')});db[_0xa4a9('0x36')]['hasMany'](db['Disposition'],{'as':_0xa4a9('0x155'),'foreignKey':'MailAccountId','onDelete':_0xa4a9('0x104')});db[_0xa4a9('0x36')][_0xa4a9('0x106')](db[_0xa4a9('0x7c')],{'as':'Answers','foreignKey':'MailAccountId'});db['MailAccount'][_0xa4a9('0x106')](db[_0xa4a9('0x156')],{'as':_0xa4a9('0x149'),'foreignKey':_0xa4a9('0x152')});db[_0xa4a9('0x36')][_0xa4a9('0x106')](db[_0xa4a9('0x3a')],{'as':'Interactions'});db[_0xa4a9('0x36')][_0xa4a9('0x106')](db[_0xa4a9('0x3d')],{'as':_0xa4a9('0x157')});db['MailAccount'][_0xa4a9('0x114')](db[_0xa4a9('0xec')],{'as':_0xa4a9('0x158'),'foreignKey':_0xa4a9('0x159')});db[_0xa4a9('0x36')][_0xa4a9('0x114')](db[_0xa4a9('0x89')],{'as':_0xa4a9('0x89'),'foreignKey':_0xa4a9('0x15a')});db[_0xa4a9('0x36')][_0xa4a9('0x114')](db[_0xa4a9('0x81')],{'as':'mandatoryDispositionPause','foreignKey':_0xa4a9('0x142')});db['MailAccount']['belongsToMany'](db['User'],{'as':_0xa4a9('0x144'),'through':'user_has_mail_accounts'});db[_0xa4a9('0x38')][_0xa4a9('0x116')](db[_0xa4a9('0x103')],{'as':_0xa4a9('0x144'),'through':_0xa4a9('0x2d')});db[_0xa4a9('0x38')]['belongsToMany'](db[_0xa4a9('0xda')],{'through':'team_has_mail_queues','as':_0xa4a9('0x145')});db[_0xa4a9('0x3a')]['hasMany'](db['MailMessage'],{'as':'Messages','onDelete':_0xa4a9('0x104'),'foreignKey':'MailInteractionId'});db[_0xa4a9('0x3a')][_0xa4a9('0x114')](db[_0xa4a9('0x36')],{'as':'Account','foreignKey':'MailAccountId'});db[_0xa4a9('0x3a')][_0xa4a9('0x114')](db[_0xa4a9('0x6e')],{'as':_0xa4a9('0x15b'),'foreignKey':_0xa4a9('0x151')});db['MailInteraction']['belongsTo'](db[_0xa4a9('0x103')],{'as':'Owner','foreignKey':_0xa4a9('0x105')});db[_0xa4a9('0x3a')][_0xa4a9('0x116')](db[_0xa4a9('0x87')],{'through':_0xa4a9('0x15c'),'as':_0xa4a9('0x15d')});db['MailInteraction'][_0xa4a9('0x116')](db[_0xa4a9('0x87')],{'through':_0xa4a9('0x15c'),'as':'ThroughTags'});db[_0xa4a9('0x3a')][_0xa4a9('0x116')](db['User'],{'as':_0xa4a9('0x15e'),'through':_0xa4a9('0x11d'),'foreignKey':_0xa4a9('0x15f')});db['MailMessage'][_0xa4a9('0x106')](db['Attachment'],{'as':_0xa4a9('0x160'),'onDelete':_0xa4a9('0x104')});db['MailMessage'][_0xa4a9('0x114')](db[_0xa4a9('0x103')],{'as':_0xa4a9('0x103')});db[_0xa4a9('0x156')][_0xa4a9('0x114')](db[_0xa4a9('0x6e')],{'onDelete':'cascade','as':_0xa4a9('0x15b')});db[_0xa4a9('0x156')][_0xa4a9('0x114')](db[_0xa4a9('0x3a')],{'as':_0xa4a9('0x161'),'foreignKey':_0xa4a9('0x15f')});db['MailMessage'][_0xa4a9('0x114')](db[_0xa4a9('0x36')],{'as':_0xa4a9('0x162'),'foreignKey':_0xa4a9('0x152')});db[_0xa4a9('0x156')][_0xa4a9('0x114')](db[_0xa4a9('0x5c')],{'as':_0xa4a9('0x5c'),'foreignKey':_0xa4a9('0x163')});db[_0xa4a9('0x156')][_0xa4a9('0x114')](db[_0xa4a9('0x65')],{'as':_0xa4a9('0x65'),'foreignKey':_0xa4a9('0x164')});db[_0xa4a9('0x3d')]['belongsTo'](db['User'],{'onDelete':'restrict'});db[_0xa4a9('0x3d')][_0xa4a9('0x114')](db[_0xa4a9('0x38')],{'onDelete':_0xa4a9('0x165')});db[_0xa4a9('0x3d')]['belongsTo'](db[_0xa4a9('0x36')],{'onDelete':_0xa4a9('0x165')});db['MailApplication'][_0xa4a9('0x114')](db[_0xa4a9('0x166')],{'onDelete':'restrict','foreignKey':_0xa4a9('0x141')});db[_0xa4a9('0x3d')][_0xa4a9('0x114')](db[_0xa4a9('0x87')],{'onDelete':_0xa4a9('0x165'),'foreignKey':'TagId'});db[_0xa4a9('0x3f')][_0xa4a9('0x114')](db['MailAccount'],{});db['MailQueueReport'][_0xa4a9('0x114')](db[_0xa4a9('0xec')],{'as':_0xa4a9('0x158'),'foreignKey':_0xa4a9('0x159')});db[_0xa4a9('0x3f')][_0xa4a9('0x114')](db[_0xa4a9('0x6e')],{'as':_0xa4a9('0x15b'),'foreignKey':'ContactId'});db[_0xa4a9('0x3f')][_0xa4a9('0x114')](db['MailInteraction'],{});db[_0xa4a9('0x3f')][_0xa4a9('0x114')](db[_0xa4a9('0x156')],{});db[_0xa4a9('0x3f')]['belongsTo'](db[_0xa4a9('0x103')],{});db['MailQueueReport']['belongsTo'](db[_0xa4a9('0x38')],{});db[_0xa4a9('0x167')][_0xa4a9('0x106')](db[_0xa4a9('0x168')],{'as':_0xa4a9('0x169'),'onDelete':_0xa4a9('0x104')});db[_0xa4a9('0x42')][_0xa4a9('0x106')](db[_0xa4a9('0x7e')],{'as':'Dispositions','foreignKey':_0xa4a9('0x16a'),'onDelete':'cascade'});db[_0xa4a9('0x42')]['hasMany'](db['CannedAnswer'],{'as':'Answers','foreignKey':_0xa4a9('0x16a')});db[_0xa4a9('0x42')]['hasMany'](db['FaxInteraction'],{'as':_0xa4a9('0x16b')});db[_0xa4a9('0x42')]['hasMany'](db[_0xa4a9('0x44')],{'as':'Applications'});db['FaxAccount'][_0xa4a9('0x106')](db[_0xa4a9('0x10a')],{'as':_0xa4a9('0x16c'),'onDelete':'cascade'});db[_0xa4a9('0x42')][_0xa4a9('0x106')](db['FaxMessage'],{'as':'Messages'});db[_0xa4a9('0x42')][_0xa4a9('0x114')](db[_0xa4a9('0x25')],{'as':_0xa4a9('0x25')});db[_0xa4a9('0x42')]['belongsTo'](db[_0xa4a9('0xec')],{'as':'List','foreignKey':_0xa4a9('0x159')});db[_0xa4a9('0x42')][_0xa4a9('0x114')](db[_0xa4a9('0x81')],{'as':'mandatoryDispositionPause','foreignKey':_0xa4a9('0x142')});db[_0xa4a9('0x42')][_0xa4a9('0x116')](db['User'],{'as':_0xa4a9('0x144'),'through':_0xa4a9('0x16d')});db[_0xa4a9('0x44')][_0xa4a9('0x114')](db[_0xa4a9('0x103')],{'onDelete':_0xa4a9('0x165')});db[_0xa4a9('0x44')][_0xa4a9('0x114')](db[_0xa4a9('0x4a')],{'onDelete':_0xa4a9('0x165')});db[_0xa4a9('0x44')][_0xa4a9('0x114')](db[_0xa4a9('0x42')],{'onDelete':_0xa4a9('0x165')});db[_0xa4a9('0x44')][_0xa4a9('0x114')](db[_0xa4a9('0x87')],{'onDelete':_0xa4a9('0x165'),'foreignKey':_0xa4a9('0x16e')});db[_0xa4a9('0x46')][_0xa4a9('0x106')](db['FaxMessage'],{'as':'Messages','onDelete':'cascade','foreignKey':_0xa4a9('0x16f')});db[_0xa4a9('0x46')][_0xa4a9('0x114')](db[_0xa4a9('0x42')],{'as':_0xa4a9('0x162'),'foreignKey':'FaxAccountId'});db[_0xa4a9('0x46')][_0xa4a9('0x114')](db[_0xa4a9('0x6e')],{'as':_0xa4a9('0x15b'),'foreignKey':_0xa4a9('0x151')});db[_0xa4a9('0x46')]['belongsTo'](db[_0xa4a9('0x103')],{'as':'Owner','foreignKey':'UserId'});db[_0xa4a9('0x46')][_0xa4a9('0x116')](db[_0xa4a9('0x87')],{'through':_0xa4a9('0x170'),'as':'Tags'});db['FaxInteraction'][_0xa4a9('0x116')](db['Tag'],{'through':_0xa4a9('0x170'),'as':_0xa4a9('0x171')});db[_0xa4a9('0x46')][_0xa4a9('0x116')](db['User'],{'as':_0xa4a9('0x15e'),'through':'user_has_fax_interactions','foreignKey':'FaxInteractionId'});db[_0xa4a9('0x48')][_0xa4a9('0x114')](db[_0xa4a9('0x103')],{'onDelete':_0xa4a9('0x104'),'as':_0xa4a9('0x103')});db[_0xa4a9('0x48')][_0xa4a9('0x114')](db['FaxInteraction'],{'as':_0xa4a9('0x161'),'foreignKey':'FaxInteractionId'});db[_0xa4a9('0x48')]['belongsTo'](db[_0xa4a9('0x6e')],{'onDelete':_0xa4a9('0x104'),'as':_0xa4a9('0x15b')});db[_0xa4a9('0x48')][_0xa4a9('0x114')](db[_0xa4a9('0xe1')],{'as':'Attachment','foreignKey':_0xa4a9('0x172')});db[_0xa4a9('0x48')][_0xa4a9('0x114')](db[_0xa4a9('0x42')],{'as':_0xa4a9('0x162'),'foreignKey':_0xa4a9('0x16a')});db[_0xa4a9('0x4a')][_0xa4a9('0x116')](db[_0xa4a9('0x103')],{'as':'Agents','through':'UserFaxQueue'});db['FaxQueue']['belongsToMany'](db['Team'],{'through':'team_has_fax_queues','as':_0xa4a9('0x145')});db[_0xa4a9('0x4b')]['belongsTo'](db[_0xa4a9('0x42')],{});db[_0xa4a9('0x4b')][_0xa4a9('0x114')](db[_0xa4a9('0xec')],{'as':'List','foreignKey':_0xa4a9('0x159')});db['FaxQueueReport'][_0xa4a9('0x114')](db[_0xa4a9('0x6e')],{'as':_0xa4a9('0x15b'),'foreignKey':'ContactId'});db['FaxQueueReport']['belongsTo'](db[_0xa4a9('0x46')],{});db[_0xa4a9('0x4b')][_0xa4a9('0x114')](db[_0xa4a9('0x48')],{});db[_0xa4a9('0x4b')]['belongsTo'](db[_0xa4a9('0x103')],{});db[_0xa4a9('0x4b')][_0xa4a9('0x114')](db['FaxQueue'],{});db[_0xa4a9('0x4c')][_0xa4a9('0x106')](db[_0xa4a9('0x7e')],{'as':_0xa4a9('0x155'),'foreignKey':_0xa4a9('0x173'),'onDelete':'cascade'});db[_0xa4a9('0x4c')][_0xa4a9('0x106')](db[_0xa4a9('0x7c')],{'as':_0xa4a9('0x174'),'foreignKey':_0xa4a9('0x173')});db[_0xa4a9('0x4c')][_0xa4a9('0x106')](db[_0xa4a9('0x50')],{'as':_0xa4a9('0x149'),'foreignKey':_0xa4a9('0x173')});db['SmsAccount'][_0xa4a9('0x106')](db[_0xa4a9('0x10e')],{'as':'Interactions'});db['SmsAccount']['hasMany'](db[_0xa4a9('0x175')],{'as':_0xa4a9('0x157')});db[_0xa4a9('0x4c')]['belongsTo'](db[_0xa4a9('0xec')],{'as':'List','foreignKey':_0xa4a9('0x159')});db['SmsAccount'][_0xa4a9('0x114')](db[_0xa4a9('0x81')],{'as':_0xa4a9('0x176'),'foreignKey':_0xa4a9('0x142')});db['SmsAccount']['belongsToMany'](db[_0xa4a9('0x103')],{'as':_0xa4a9('0x144'),'through':'user_has_sms_accounts'});db[_0xa4a9('0x175')][_0xa4a9('0x114')](db['User'],{'onDelete':'restrict'});db[_0xa4a9('0x175')]['belongsTo'](db[_0xa4a9('0x52')],{'onDelete':_0xa4a9('0x165')});db[_0xa4a9('0x175')][_0xa4a9('0x114')](db[_0xa4a9('0x4c')],{'onDelete':_0xa4a9('0x165')});db[_0xa4a9('0x175')]['belongsTo'](db[_0xa4a9('0x166')],{'onDelete':_0xa4a9('0x165'),'foreignKey':_0xa4a9('0x141')});db[_0xa4a9('0x175')]['belongsTo'](db[_0xa4a9('0x87')],{'onDelete':_0xa4a9('0x165'),'foreignKey':'TagId'});db[_0xa4a9('0x10e')][_0xa4a9('0x106')](db['SmsMessage'],{'as':_0xa4a9('0x149'),'onDelete':_0xa4a9('0x104'),'foreignKey':_0xa4a9('0x177')});db[_0xa4a9('0x10e')][_0xa4a9('0x114')](db[_0xa4a9('0x4c')],{'as':'Account','foreignKey':'SmsAccountId'});db[_0xa4a9('0x10e')]['belongsTo'](db[_0xa4a9('0x6e')],{'as':'Contact','foreignKey':_0xa4a9('0x151')});db[_0xa4a9('0x10e')][_0xa4a9('0x114')](db[_0xa4a9('0x103')],{'as':_0xa4a9('0x178'),'foreignKey':'UserId'});db[_0xa4a9('0x10e')][_0xa4a9('0x116')](db[_0xa4a9('0x87')],{'through':_0xa4a9('0x179'),'as':'Tags'});db[_0xa4a9('0x10e')]['belongsToMany'](db['Tag'],{'through':_0xa4a9('0x179'),'as':'ThroughTags'});db[_0xa4a9('0x10e')][_0xa4a9('0x116')](db[_0xa4a9('0x103')],{'as':'Users','through':_0xa4a9('0x17a'),'foreignKey':'SmsInteractionId'});db['SmsMessage']['belongsTo'](db[_0xa4a9('0x103')],{'as':'User'});db[_0xa4a9('0x50')][_0xa4a9('0x114')](db[_0xa4a9('0x6e')],{'onDelete':_0xa4a9('0x104'),'as':_0xa4a9('0x15b')});db['SmsMessage'][_0xa4a9('0x114')](db[_0xa4a9('0x10e')],{'onDelete':'cascade','as':'Interaction','foreignKey':_0xa4a9('0x177')});db['SmsMessage'][_0xa4a9('0x114')](db[_0xa4a9('0x4c')],{'as':_0xa4a9('0x162'),'foreignKey':_0xa4a9('0x173')});db['SmsQueue'][_0xa4a9('0x116')](db['User'],{'as':_0xa4a9('0x144'),'through':'UserSmsQueue','foreignKey':_0xa4a9('0x17b')});db[_0xa4a9('0x52')]['belongsToMany'](db[_0xa4a9('0xda')],{'through':_0xa4a9('0x17c'),'as':_0xa4a9('0x145')});db[_0xa4a9('0x53')][_0xa4a9('0x106')](db[_0xa4a9('0x7e')],{'as':_0xa4a9('0x155'),'foreignKey':_0xa4a9('0x17d'),'onDelete':_0xa4a9('0x104')});db[_0xa4a9('0x53')][_0xa4a9('0x106')](db[_0xa4a9('0x7c')],{'as':_0xa4a9('0x174'),'foreignKey':_0xa4a9('0x17d')});db[_0xa4a9('0x53')]['hasMany'](db['OpenchannelInteraction'],{'as':_0xa4a9('0x16b'),'foreignKey':_0xa4a9('0x17d')});db[_0xa4a9('0x53')][_0xa4a9('0x106')](db[_0xa4a9('0x58')],{'as':_0xa4a9('0x149'),'foreignKey':_0xa4a9('0x17d')});db[_0xa4a9('0x53')][_0xa4a9('0x106')](db[_0xa4a9('0x55')],{'as':_0xa4a9('0x157'),'foreignKey':_0xa4a9('0x17d')});db[_0xa4a9('0x53')][_0xa4a9('0x114')](db[_0xa4a9('0xec')],{'as':'List','foreignKey':'ListId'});db[_0xa4a9('0x53')][_0xa4a9('0x114')](db[_0xa4a9('0x81')],{'as':_0xa4a9('0x176'),'foreignKey':_0xa4a9('0x142')});db[_0xa4a9('0x53')][_0xa4a9('0x116')](db[_0xa4a9('0x103')],{'as':'Agents','through':_0xa4a9('0x12f')});db['OpenchannelApplication']['belongsTo'](db['User'],{'onDelete':_0xa4a9('0x165')});db[_0xa4a9('0x55')][_0xa4a9('0x114')](db[_0xa4a9('0x5a')],{'onDelete':_0xa4a9('0x165'),'foreignKey':_0xa4a9('0x17e')});db['OpenchannelApplication'][_0xa4a9('0x114')](db[_0xa4a9('0x53')],{'onDelete':_0xa4a9('0x165'),'foreignKey':_0xa4a9('0x17d')});db['OpenchannelApplication']['belongsTo'](db['Interval'],{'onDelete':_0xa4a9('0x165'),'foreignKey':_0xa4a9('0x141')});db['OpenchannelApplication'][_0xa4a9('0x114')](db['Tag'],{'onDelete':_0xa4a9('0x165'),'foreignKey':_0xa4a9('0x16e')});db[_0xa4a9('0x10c')]['hasMany'](db[_0xa4a9('0x58')],{'as':_0xa4a9('0x149'),'onDelete':'cascade','foreignKey':_0xa4a9('0x17f')});db[_0xa4a9('0x10c')][_0xa4a9('0x114')](db[_0xa4a9('0x53')],{'as':_0xa4a9('0x162'),'foreignKey':'OpenchannelAccountId'});db[_0xa4a9('0x10c')][_0xa4a9('0x114')](db[_0xa4a9('0x6e')],{'as':_0xa4a9('0x15b'),'foreignKey':_0xa4a9('0x151')});db[_0xa4a9('0x10c')][_0xa4a9('0x114')](db[_0xa4a9('0x103')],{'as':_0xa4a9('0x178'),'foreignKey':_0xa4a9('0x105')});db[_0xa4a9('0x10c')][_0xa4a9('0x116')](db[_0xa4a9('0x87')],{'through':_0xa4a9('0x180'),'as':_0xa4a9('0x15d')});db[_0xa4a9('0x10c')][_0xa4a9('0x116')](db[_0xa4a9('0x87')],{'through':_0xa4a9('0x180'),'as':_0xa4a9('0x171')});db[_0xa4a9('0x10c')][_0xa4a9('0x116')](db[_0xa4a9('0x103')],{'as':_0xa4a9('0x15e'),'through':_0xa4a9('0x11f'),'foreignKey':_0xa4a9('0x17f')});db[_0xa4a9('0x58')][_0xa4a9('0x114')](db[_0xa4a9('0x103')],{'onDelete':'cascade','as':_0xa4a9('0x103')});db[_0xa4a9('0x58')][_0xa4a9('0x114')](db['CmContact'],{'onDelete':_0xa4a9('0x104'),'as':_0xa4a9('0x15b')});db[_0xa4a9('0x58')]['belongsTo'](db[_0xa4a9('0x10c')],{'onDelete':_0xa4a9('0x104'),'as':_0xa4a9('0x161'),'foreignKey':_0xa4a9('0x17f')});db[_0xa4a9('0x58')]['belongsTo'](db[_0xa4a9('0xe1')],{'as':_0xa4a9('0xe1'),'foreignKey':'AttachmentId'});db[_0xa4a9('0x58')][_0xa4a9('0x114')](db['OpenchannelAccount'],{'as':_0xa4a9('0x162'),'foreignKey':_0xa4a9('0x17d')});db[_0xa4a9('0x5a')][_0xa4a9('0x116')](db['User'],{'as':'Agents','through':_0xa4a9('0x181'),'foreignKey':'OpenchannelQueueId'});db[_0xa4a9('0x5a')][_0xa4a9('0x116')](db['Team'],{'through':_0xa4a9('0x182'),'as':_0xa4a9('0x145')});db[_0xa4a9('0x5c')][_0xa4a9('0x106')](db[_0xa4a9('0x7e')],{'as':_0xa4a9('0x155'),'foreignKey':_0xa4a9('0x163'),'onDelete':_0xa4a9('0x104')});db[_0xa4a9('0x5c')][_0xa4a9('0x106')](db['CannedAnswer'],{'as':'Answers','foreignKey':_0xa4a9('0x163')});db['ChatWebsite'][_0xa4a9('0x106')](db['ChatProactiveAction'],{'as':_0xa4a9('0x183')});db[_0xa4a9('0x5c')]['hasMany'](db[_0xa4a9('0x61')],{'as':_0xa4a9('0x16b')});db[_0xa4a9('0x5c')][_0xa4a9('0x106')](db[_0xa4a9('0x5f')],{'as':_0xa4a9('0x157')});db[_0xa4a9('0x5c')][_0xa4a9('0x106')](db['ChatMessage'],{'as':_0xa4a9('0x149')});db[_0xa4a9('0x5c')][_0xa4a9('0x114')](db[_0xa4a9('0xec')],{'as':'List','foreignKey':'ListId'});db[_0xa4a9('0x5c')][_0xa4a9('0x114')](db[_0xa4a9('0x166')],{'as':_0xa4a9('0x166'),'foreignKey':_0xa4a9('0x141')});db[_0xa4a9('0x5c')][_0xa4a9('0x114')](db[_0xa4a9('0x36')],{'as':_0xa4a9('0x36'),'foreignKey':'MailAccountId'});db[_0xa4a9('0x5c')][_0xa4a9('0x114')](db['Pause'],{'as':_0xa4a9('0x176'),'foreignKey':'mandatoryDispositionPauseId'});db[_0xa4a9('0x5c')][_0xa4a9('0x116')](db['User'],{'as':_0xa4a9('0x144'),'through':'user_has_chat_websites'});db[_0xa4a9('0x5d')][_0xa4a9('0x114')](db[_0xa4a9('0x53')],{});db['OpenchannelQueueReport']['belongsTo'](db[_0xa4a9('0xec')],{'as':'List','foreignKey':_0xa4a9('0x159')});db['OpenchannelQueueReport'][_0xa4a9('0x114')](db[_0xa4a9('0x6e')],{'as':_0xa4a9('0x15b'),'foreignKey':_0xa4a9('0x151')});db[_0xa4a9('0x5d')][_0xa4a9('0x114')](db[_0xa4a9('0x10c')],{});db['OpenchannelQueueReport'][_0xa4a9('0x114')](db[_0xa4a9('0x58')],{});db[_0xa4a9('0x5d')][_0xa4a9('0x114')](db[_0xa4a9('0x103')],{});db[_0xa4a9('0x5d')]['belongsTo'](db[_0xa4a9('0x5a')],{});db[_0xa4a9('0x5f')][_0xa4a9('0x114')](db['User'],{'as':_0xa4a9('0x184'),'foreignKey':_0xa4a9('0x105'),'onDelete':_0xa4a9('0x165')});db['ChatApplication'][_0xa4a9('0x114')](db[_0xa4a9('0x67')],{'as':'Queue','foreignKey':'ChatQueueId','onDelete':_0xa4a9('0x165')});db[_0xa4a9('0x5f')]['belongsTo'](db[_0xa4a9('0x5c')],{'as':'Website','foreignKey':_0xa4a9('0x163'),'onDelete':_0xa4a9('0x165')});db[_0xa4a9('0x5f')][_0xa4a9('0x114')](db['Tag'],{'onDelete':'restrict','foreignKey':'TagId'});db['ChatInteraction'][_0xa4a9('0x106')](db[_0xa4a9('0x63')],{'as':_0xa4a9('0x149'),'onDelete':_0xa4a9('0x104'),'foreignKey':_0xa4a9('0x185')});db['ChatInteraction'][_0xa4a9('0x114')](db[_0xa4a9('0x5c')],{'as':_0xa4a9('0x162'),'foreignKey':_0xa4a9('0x163')});db[_0xa4a9('0x61')][_0xa4a9('0x114')](db['CmContact'],{'as':_0xa4a9('0x15b'),'foreignKey':_0xa4a9('0x151')});db[_0xa4a9('0x61')][_0xa4a9('0x114')](db[_0xa4a9('0x103')],{'as':_0xa4a9('0x178'),'foreignKey':'UserId'});db[_0xa4a9('0x61')]['belongsToMany'](db[_0xa4a9('0x87')],{'through':_0xa4a9('0x186'),'as':_0xa4a9('0x15d')});db[_0xa4a9('0x61')][_0xa4a9('0x116')](db[_0xa4a9('0x87')],{'through':_0xa4a9('0x186'),'as':_0xa4a9('0x171')});db[_0xa4a9('0x61')][_0xa4a9('0x116')](db[_0xa4a9('0x103')],{'as':_0xa4a9('0x15e'),'through':_0xa4a9('0x187'),'foreignKey':_0xa4a9('0x185')});db[_0xa4a9('0x63')][_0xa4a9('0x114')](db['User'],{'onDelete':_0xa4a9('0x104'),'as':'User'});db[_0xa4a9('0x63')][_0xa4a9('0x114')](db[_0xa4a9('0x6e')],{'onDelete':_0xa4a9('0x104'),'as':_0xa4a9('0x15b'),'foreignKey':_0xa4a9('0x151')});db[_0xa4a9('0x63')][_0xa4a9('0x114')](db[_0xa4a9('0x61')],{'onDelete':_0xa4a9('0x104'),'as':_0xa4a9('0x161'),'foreignKey':_0xa4a9('0x185')});db[_0xa4a9('0x63')][_0xa4a9('0x114')](db[_0xa4a9('0xe1')],{'as':_0xa4a9('0xe1'),'foreignKey':_0xa4a9('0x172')});db[_0xa4a9('0x63')][_0xa4a9('0x114')](db['ChatWebsite'],{'as':_0xa4a9('0x162'),'foreignKey':'ChatWebsiteId'});db[_0xa4a9('0x65')][_0xa4a9('0x106')](db[_0xa4a9('0xe1')],{'as':_0xa4a9('0x160'),'foreignKey':'ChatOfflineMessageId','onDelete':_0xa4a9('0x104'),'hooks':!![]});db[_0xa4a9('0x65')][_0xa4a9('0x114')](db[_0xa4a9('0x6e')],{'onDelete':_0xa4a9('0x104'),'as':_0xa4a9('0x15b'),'foreignKey':_0xa4a9('0x151')});db[_0xa4a9('0x65')][_0xa4a9('0x114')](db[_0xa4a9('0x5c')],{'as':_0xa4a9('0x162'),'foreignKey':_0xa4a9('0x163')});db[_0xa4a9('0x67')][_0xa4a9('0x116')](db[_0xa4a9('0x103')],{'as':_0xa4a9('0x144'),'through':'UserChatQueue','hooks':!![]});db[_0xa4a9('0x67')][_0xa4a9('0x116')](db['Team'],{'through':'team_has_chat_queues','as':_0xa4a9('0x145')});db[_0xa4a9('0x68')][_0xa4a9('0x106')](db[_0xa4a9('0x188')],{'as':_0xa4a9('0x149'),'foreignKey':_0xa4a9('0x189'),'onDelete':_0xa4a9('0x104')});db[_0xa4a9('0x68')][_0xa4a9('0x116')](db['User'],{'as':_0xa4a9('0x139'),'through':_0xa4a9('0x117')});db['ChatProactiveAction']['belongsTo'](db['ChatWebsite'],{'as':'Website','foreignKey':'ChatWebsiteId'});db['CmCompany'][_0xa4a9('0x106')](db[_0xa4a9('0x6e')],{'as':_0xa4a9('0x118'),'foreignKey':'CompanyId'});db['CmContact'][_0xa4a9('0x106')](db[_0xa4a9('0x70')],{'as':_0xa4a9('0x13b'),'foreignKey':_0xa4a9('0x151')});db[_0xa4a9('0x6e')]['hasMany'](db[_0xa4a9('0x73')],{'as':_0xa4a9('0x13c'),'foreignKey':_0xa4a9('0x151')});db[_0xa4a9('0x6e')][_0xa4a9('0x106')](db[_0xa4a9('0x75')],{'as':_0xa4a9('0x13d'),'foreignKey':_0xa4a9('0x151')});db[_0xa4a9('0x6e')][_0xa4a9('0x106')](db['ReportAgentPreview'],{'as':_0xa4a9('0x10b'),'foreignKey':'ContactId'});db[_0xa4a9('0x6e')][_0xa4a9('0x106')](db[_0xa4a9('0xcc')],{'as':_0xa4a9('0x18a'),'foreignKey':'ContactId'});db[_0xa4a9('0x6e')]['hasMany'](db['OpenchannelInteraction'],{'as':'OpenchannelInteractions','foreignKey':_0xa4a9('0x151'),'onDelete':'restrict'});db['CmContact'][_0xa4a9('0x106')](db[_0xa4a9('0x61')],{'as':'ChatInteractions','foreignKey':'ContactId','onDelete':_0xa4a9('0x165')});db[_0xa4a9('0x6e')][_0xa4a9('0x106')](db[_0xa4a9('0x10e')],{'as':_0xa4a9('0x10f'),'foreignKey':_0xa4a9('0x151'),'onDelete':_0xa4a9('0x165')});db['CmContact']['hasMany'](db[_0xa4a9('0x46')],{'as':_0xa4a9('0x110'),'foreignKey':_0xa4a9('0x151'),'onDelete':_0xa4a9('0x165')});db[_0xa4a9('0x6e')]['hasMany'](db[_0xa4a9('0x3a')],{'as':'MailInteractions','foreignKey':_0xa4a9('0x151'),'onDelete':'restrict'});db[_0xa4a9('0x6e')]['belongsTo'](db[_0xa4a9('0x6c')],{'as':_0xa4a9('0x18b'),'foreignKey':_0xa4a9('0x18c')});db[_0xa4a9('0x6e')][_0xa4a9('0x114')](db[_0xa4a9('0xec')],{'as':_0xa4a9('0x158'),'foreignKey':_0xa4a9('0x159'),'onDelete':_0xa4a9('0x104')});db['CmContact'][_0xa4a9('0x116')](db['User'],{'as':'Users','through':'cm_user_has_contacts'});db[_0xa4a9('0x6e')][_0xa4a9('0x116')](db[_0xa4a9('0x87')],{'as':_0xa4a9('0x15d'),'through':_0xa4a9('0x18d')});db['CmContact'][_0xa4a9('0x116')](db[_0xa4a9('0x87')],{'through':_0xa4a9('0x18d'),'as':_0xa4a9('0x171')});db[_0xa4a9('0x70')][_0xa4a9('0x114')](db[_0xa4a9('0x6e')],{'as':_0xa4a9('0x15b'),'foreignKey':_0xa4a9('0x151'),'onDelete':_0xa4a9('0x104')});db[_0xa4a9('0x70')]['belongsTo'](db[_0xa4a9('0xec')],{'as':_0xa4a9('0x158'),'foreignKey':_0xa4a9('0x159'),'onDelete':_0xa4a9('0x104')});db[_0xa4a9('0x70')][_0xa4a9('0x114')](db[_0xa4a9('0x103')],{'as':'Agent','foreignKey':_0xa4a9('0x105')});db[_0xa4a9('0x70')]['belongsTo'](db[_0xa4a9('0x121')],{'as':_0xa4a9('0x18e'),'foreignKey':'VoiceQueueId','onDelete':_0xa4a9('0x104')});db['CmHopper'][_0xa4a9('0x114')](db[_0xa4a9('0xdd')],{'as':_0xa4a9('0xdd'),'foreignKey':_0xa4a9('0x18f'),'onDelete':_0xa4a9('0x104')});db['CmHopper'][_0xa4a9('0x114')](db[_0xa4a9('0x103')],{'as':_0xa4a9('0x178'),'foreignKey':_0xa4a9('0x190')});db[_0xa4a9('0x13e')][_0xa4a9('0x114')](db[_0xa4a9('0x6e')],{'as':_0xa4a9('0x15b'),'foreignKey':'ContactId','onDelete':_0xa4a9('0x104')});db[_0xa4a9('0x13e')][_0xa4a9('0x114')](db[_0xa4a9('0xec')],{'as':'List','foreignKey':_0xa4a9('0x159'),'onDelete':'cascade'});db[_0xa4a9('0x13e')][_0xa4a9('0x114')](db[_0xa4a9('0x121')],{'as':_0xa4a9('0x18e'),'foreignKey':'VoiceQueueId','onDelete':'cascade'});db[_0xa4a9('0x13e')]['belongsTo'](db[_0xa4a9('0xdd')],{'as':_0xa4a9('0xdd'),'foreignKey':_0xa4a9('0x18f'),'onDelete':_0xa4a9('0x104')});db['Automation'][_0xa4a9('0x106')](db[_0xa4a9('0x7f')],{'as':{'plural':_0xa4a9('0x191'),'singular':_0xa4a9('0x192')},'foreignKey':_0xa4a9('0x193'),'onDelete':_0xa4a9('0x104'),'hooks':!![]});db['Automation'][_0xa4a9('0x106')](db[_0xa4a9('0x7f')],{'as':{'plural':_0xa4a9('0x194'),'singular':_0xa4a9('0x195')},'foreignKey':'AutomationAnyId','onDelete':_0xa4a9('0x104'),'hooks':!![]});db[_0xa4a9('0x7a')][_0xa4a9('0x106')](db[_0xa4a9('0x196')],{'as':_0xa4a9('0x197'),'foreignKey':_0xa4a9('0x198'),'onDelete':_0xa4a9('0x104'),'hooks':!![]});db['Disposition'][_0xa4a9('0x106')](db[_0xa4a9('0x7e')],{'as':_0xa4a9('0x155'),'foreignKey':_0xa4a9('0x199'),'onDelete':_0xa4a9('0x104')});db[_0xa4a9('0x166')][_0xa4a9('0x106')](db[_0xa4a9('0x166')],{'as':_0xa4a9('0x19a'),'foreignKey':_0xa4a9('0x141'),'onDelete':_0xa4a9('0x104'),'hooks':!![],'required':![]});db[_0xa4a9('0x166')][_0xa4a9('0x106')](db[_0xa4a9('0x10a')],{'as':_0xa4a9('0x19b'),'foreignKey':_0xa4a9('0x141'),'onDelete':_0xa4a9('0x165')});db[_0xa4a9('0x166')][_0xa4a9('0x106')](db[_0xa4a9('0x3d')],{'as':_0xa4a9('0x19c'),'foreignKey':_0xa4a9('0x141')});db[_0xa4a9('0x166')][_0xa4a9('0x106')](db[_0xa4a9('0x5f')],{'as':_0xa4a9('0x19d'),'foreignKey':_0xa4a9('0x141')});db[_0xa4a9('0x166')]['hasMany'](db[_0xa4a9('0x44')],{'as':_0xa4a9('0x19e'),'foreignKey':_0xa4a9('0x141')});db['Interval']['hasMany'](db[_0xa4a9('0x175')],{'as':_0xa4a9('0x19f'),'foreignKey':_0xa4a9('0x141')});db['Schedule']['belongsTo'](db[_0xa4a9('0x36')],{});db[_0xa4a9('0x84')][_0xa4a9('0x114')](db[_0xa4a9('0x92')],{'foreignKey':_0xa4a9('0x1a0')});db['Schedule'][_0xa4a9('0x114')](db[_0xa4a9('0x90')],{'foreignKey':_0xa4a9('0x1a1')});db['Sound'][_0xa4a9('0x116')](db[_0xa4a9('0x17')],{'as':_0xa4a9('0x1a2'),'through':'moh_has_sounds','onDelete':_0xa4a9('0x165')});db[_0xa4a9('0x87')][_0xa4a9('0x116')](db[_0xa4a9('0x6e')],{'through':'cm_contact_has_tags'});db[_0xa4a9('0x87')][_0xa4a9('0x116')](db[_0xa4a9('0x61')],{'through':'chat_interaction_has_tags'});db[_0xa4a9('0x87')]['belongsToMany'](db[_0xa4a9('0x3a')],{'through':_0xa4a9('0x15c')});db[_0xa4a9('0x87')][_0xa4a9('0x116')](db['SmsInteraction'],{'through':'sms_interaction_has_tags'});db[_0xa4a9('0x87')][_0xa4a9('0x116')](db[_0xa4a9('0x46')],{'through':_0xa4a9('0x170')});db[_0xa4a9('0x87')][_0xa4a9('0x116')](db[_0xa4a9('0x10c')],{'through':_0xa4a9('0x180')});db['Tag'][_0xa4a9('0x116')](db['WhatsappInteraction'],{'through':_0xa4a9('0x1a3')});db[_0xa4a9('0x8b')][_0xa4a9('0x106')](db['Condition'],{'as':{'plural':_0xa4a9('0x1a4'),'singular':_0xa4a9('0x1a5')},'foreignKey':'TriggerAllId','onDelete':_0xa4a9('0x104'),'hooks':!![]});db[_0xa4a9('0x8b')]['hasMany'](db['Condition'],{'as':{'plural':_0xa4a9('0x1a6'),'singular':_0xa4a9('0x1a7')},'foreignKey':_0xa4a9('0x1a8'),'onDelete':_0xa4a9('0x104'),'hooks':!![]});db[_0xa4a9('0x8b')][_0xa4a9('0x106')](db[_0xa4a9('0x196')],{'as':_0xa4a9('0x197'),'foreignKey':_0xa4a9('0x1a9'),'onDelete':_0xa4a9('0x104'),'hooks':!![]});db['AnalyticCustomReport'][_0xa4a9('0x106')](db['AnalyticFieldReport'],{'as':_0xa4a9('0x1aa'),'onDelete':_0xa4a9('0x104'),'foreignKey':_0xa4a9('0x1a1'),'hooks':!![]});db[_0xa4a9('0x92')][_0xa4a9('0x106')](db[_0xa4a9('0x98')],{'as':'Fields','onDelete':_0xa4a9('0x104'),'foreignKey':'DefaultReportId'});db[_0xa4a9('0x96')]['hasMany'](db[_0xa4a9('0x98')],{'as':_0xa4a9('0x1aa'),'onDelete':_0xa4a9('0x104'),'foreignKey':'MetricId'});db[_0xa4a9('0x98')][_0xa4a9('0x114')](db[_0xa4a9('0x96')],{'foreignKey':'MetricId'});db[_0xa4a9('0x9a')]['hasMany'](db[_0xa4a9('0x1ab')],{'as':_0xa4a9('0x1ac'),'onDelete':_0xa4a9('0x104'),'foreignKey':_0xa4a9('0x1ad')});db[_0xa4a9('0x1ab')][_0xa4a9('0x106')](db[_0xa4a9('0x9c')],{'as':_0xa4a9('0x1ae'),'onDelete':_0xa4a9('0x104'),'foreignKey':_0xa4a9('0x1af')});db[_0xa4a9('0x1ab')][_0xa4a9('0x106')](db['SalesforceField'],{'as':'Descriptions','onDelete':_0xa4a9('0x104'),'foreignKey':_0xa4a9('0x1b0')});db['SalesforceConfiguration'][_0xa4a9('0x106')](db['SalesforceField'],{'as':_0xa4a9('0x1aa'),'onDelete':'cascade','foreignKey':_0xa4a9('0x1b1')});db[_0xa4a9('0x1ab')]['belongsTo'](db[_0xa4a9('0x9a')],{'as':'Account','foreignKey':'AccountId'});db['SalesforceField'][_0xa4a9('0x106')](db[_0xa4a9('0x9c')],{'as':_0xa4a9('0x1b2'),'foreignKey':_0xa4a9('0x1af')});db['SalesforceField'][_0xa4a9('0x106')](db[_0xa4a9('0x9c')],{'as':_0xa4a9('0x1b3'),'foreignKey':'DescriptionId'});db[_0xa4a9('0x9c')][_0xa4a9('0x106')](db[_0xa4a9('0x9c')],{'as':_0xa4a9('0x1b4'),'foreignKey':'FieldId'});db['SalesforceField']['belongsTo'](db[_0xa4a9('0x1b5')],{'as':_0xa4a9('0x1b5'),'foreignKey':_0xa4a9('0x1b6')});db['SugarcrmAccount'][_0xa4a9('0x106')](db[_0xa4a9('0x1b7')],{'as':'Configurations','onDelete':'cascade','foreignKey':'AccountId'});db[_0xa4a9('0x1b7')]['hasMany'](db['SugarcrmField'],{'as':_0xa4a9('0x1ae'),'onDelete':_0xa4a9('0x104'),'foreignKey':_0xa4a9('0x1af')});db['SugarcrmConfiguration'][_0xa4a9('0x106')](db[_0xa4a9('0xa0')],{'as':'Descriptions','onDelete':_0xa4a9('0x104'),'foreignKey':_0xa4a9('0x1b0')});db[_0xa4a9('0x1b7')][_0xa4a9('0x106')](db[_0xa4a9('0xa0')],{'as':_0xa4a9('0x1aa'),'onDelete':'cascade','foreignKey':_0xa4a9('0x1b1')});db[_0xa4a9('0x1b7')][_0xa4a9('0x114')](db['SugarcrmAccount'],{'as':'Account','foreignKey':_0xa4a9('0x1ad')});db['SugarcrmField'][_0xa4a9('0x106')](db[_0xa4a9('0xa0')],{'as':_0xa4a9('0x1b2'),'foreignKey':_0xa4a9('0x1af')});db['SugarcrmField'][_0xa4a9('0x106')](db[_0xa4a9('0xa0')],{'as':_0xa4a9('0x1b3'),'foreignKey':_0xa4a9('0x1b0')});db['SugarcrmField']['hasMany'](db[_0xa4a9('0xa0')],{'as':'Field','foreignKey':_0xa4a9('0x1b1')});db[_0xa4a9('0xa0')][_0xa4a9('0x114')](db[_0xa4a9('0x1b5')],{'as':'Variable','foreignKey':_0xa4a9('0x1b6')});db['DeskAccount'][_0xa4a9('0x106')](db[_0xa4a9('0x1b8')],{'as':_0xa4a9('0x1ac'),'onDelete':'cascade','foreignKey':'AccountId'});db[_0xa4a9('0x1b8')][_0xa4a9('0x106')](db[_0xa4a9('0xa5')],{'as':'Subjects','onDelete':_0xa4a9('0x104'),'foreignKey':_0xa4a9('0x1af')});db[_0xa4a9('0x1b8')][_0xa4a9('0x106')](db[_0xa4a9('0xa5')],{'as':'Descriptions','onDelete':_0xa4a9('0x104'),'foreignKey':_0xa4a9('0x1b0')});db[_0xa4a9('0x1b8')]['hasMany'](db[_0xa4a9('0xa5')],{'as':_0xa4a9('0x1aa'),'onDelete':_0xa4a9('0x104'),'foreignKey':_0xa4a9('0x1b1')});db[_0xa4a9('0x1b8')][_0xa4a9('0x114')](db[_0xa4a9('0xa2')],{'as':_0xa4a9('0x162'),'foreignKey':_0xa4a9('0x1ad')});db['DeskConfiguration'][_0xa4a9('0x116')](db['Tag'],{'through':_0xa4a9('0x1b9')});db[_0xa4a9('0xa5')][_0xa4a9('0x106')](db[_0xa4a9('0xa5')],{'as':_0xa4a9('0x1b2'),'foreignKey':'SubjectId'});db[_0xa4a9('0xa5')][_0xa4a9('0x106')](db[_0xa4a9('0xa5')],{'as':_0xa4a9('0x1b3'),'foreignKey':_0xa4a9('0x1b0')});db[_0xa4a9('0xa5')][_0xa4a9('0x106')](db[_0xa4a9('0xa5')],{'as':_0xa4a9('0x1b4'),'foreignKey':_0xa4a9('0x1b1')});db[_0xa4a9('0xa5')][_0xa4a9('0x114')](db['Variable'],{'as':'Variable','foreignKey':_0xa4a9('0x1b6')});db[_0xa4a9('0xa7')]['hasMany'](db['ZohoConfiguration'],{'as':_0xa4a9('0x1ac'),'onDelete':'cascade','foreignKey':'AccountId'});db['ZohoConfiguration'][_0xa4a9('0x106')](db[_0xa4a9('0xaa')],{'as':_0xa4a9('0x1ae'),'onDelete':_0xa4a9('0x104'),'foreignKey':_0xa4a9('0x1af')});db[_0xa4a9('0x1ba')][_0xa4a9('0x106')](db[_0xa4a9('0xaa')],{'as':_0xa4a9('0x1bb'),'onDelete':_0xa4a9('0x104'),'foreignKey':'DescriptionId'});db[_0xa4a9('0x1ba')]['hasMany'](db[_0xa4a9('0xaa')],{'as':_0xa4a9('0x1aa'),'onDelete':_0xa4a9('0x104'),'foreignKey':_0xa4a9('0x1b1')});db['ZohoConfiguration'][_0xa4a9('0x114')](db[_0xa4a9('0xa7')],{'as':_0xa4a9('0x162'),'foreignKey':'AccountId'});db[_0xa4a9('0xaa')][_0xa4a9('0x106')](db[_0xa4a9('0xaa')],{'as':'Subject','foreignKey':_0xa4a9('0x1af')});db['ZohoField'][_0xa4a9('0x106')](db[_0xa4a9('0xaa')],{'as':_0xa4a9('0x1b3'),'foreignKey':_0xa4a9('0x1b0')});db['ZohoField']['hasMany'](db['ZohoField'],{'as':_0xa4a9('0x1b4'),'foreignKey':_0xa4a9('0x1b1')});db[_0xa4a9('0xaa')][_0xa4a9('0x114')](db[_0xa4a9('0x1b5')],{'as':_0xa4a9('0x1b5'),'foreignKey':_0xa4a9('0x1b6')});db[_0xa4a9('0xac')]['hasMany'](db[_0xa4a9('0xae')],{'as':_0xa4a9('0x1ac'),'onDelete':_0xa4a9('0x104'),'foreignKey':_0xa4a9('0x1ad')});db[_0xa4a9('0xae')]['hasMany'](db['ZendeskField'],{'as':_0xa4a9('0x1ae'),'foreignKey':_0xa4a9('0x1af')});db[_0xa4a9('0xae')]['hasMany'](db[_0xa4a9('0x1bc')],{'as':_0xa4a9('0x1bb'),'foreignKey':_0xa4a9('0x1b0')});db[_0xa4a9('0xae')][_0xa4a9('0x106')](db[_0xa4a9('0x1bc')],{'as':_0xa4a9('0x1aa'),'foreignKey':_0xa4a9('0x1b1')});db[_0xa4a9('0xae')]['belongsTo'](db[_0xa4a9('0xac')],{'as':_0xa4a9('0x162'),'foreignKey':'AccountId'});db[_0xa4a9('0xae')][_0xa4a9('0x116')](db[_0xa4a9('0x87')],{'through':'int_zendesk_configuration_has_tags'});db['ZendeskField']['hasMany'](db['ZendeskField'],{'as':_0xa4a9('0x1b2'),'foreignKey':'SubjectId'});db[_0xa4a9('0x1bc')]['hasMany'](db[_0xa4a9('0x1bc')],{'as':_0xa4a9('0x1b3'),'foreignKey':_0xa4a9('0x1b0')});db[_0xa4a9('0x1bc')]['hasMany'](db[_0xa4a9('0x1bc')],{'as':_0xa4a9('0x1b4'),'foreignKey':_0xa4a9('0x1b1')});db[_0xa4a9('0x1bc')][_0xa4a9('0x114')](db[_0xa4a9('0x1b5')],{'as':_0xa4a9('0x1b5'),'foreignKey':_0xa4a9('0x1b6')});db[_0xa4a9('0x1bd')][_0xa4a9('0x106')](db[_0xa4a9('0xb2')],{'as':_0xa4a9('0x1ac'),'onDelete':_0xa4a9('0x104'),'foreignKey':_0xa4a9('0x1ad')});db[_0xa4a9('0xb2')]['hasMany'](db['FreshdeskField'],{'as':_0xa4a9('0x1ae'),'onDelete':_0xa4a9('0x104'),'foreignKey':_0xa4a9('0x1af')});db[_0xa4a9('0xb2')][_0xa4a9('0x106')](db[_0xa4a9('0xb4')],{'as':'Descriptions','onDelete':_0xa4a9('0x104'),'foreignKey':_0xa4a9('0x1b0')});db[_0xa4a9('0xb2')]['hasMany'](db[_0xa4a9('0xb4')],{'as':'Fields','onDelete':_0xa4a9('0x104'),'foreignKey':'FieldId'});db[_0xa4a9('0xb2')][_0xa4a9('0x114')](db[_0xa4a9('0x1bd')],{'as':_0xa4a9('0x162'),'foreignKey':_0xa4a9('0x1ad')});db['FreshdeskConfiguration']['belongsToMany'](db[_0xa4a9('0x87')],{'through':_0xa4a9('0x1be')});db[_0xa4a9('0xb4')][_0xa4a9('0x106')](db['FreshdeskField'],{'as':_0xa4a9('0x1b2'),'foreignKey':_0xa4a9('0x1af')});db[_0xa4a9('0xb4')][_0xa4a9('0x106')](db['FreshdeskField'],{'as':_0xa4a9('0x1b3'),'foreignKey':'DescriptionId'});db[_0xa4a9('0xb4')][_0xa4a9('0x106')](db['FreshdeskField'],{'as':'Field','foreignKey':'FieldId'});db[_0xa4a9('0xb4')][_0xa4a9('0x114')](db[_0xa4a9('0x1b5')],{'as':_0xa4a9('0x1b5'),'foreignKey':_0xa4a9('0x1b6')});db[_0xa4a9('0xb5')][_0xa4a9('0x106')](db[_0xa4a9('0xb7')],{'as':_0xa4a9('0x1ac'),'onDelete':_0xa4a9('0x104'),'foreignKey':'AccountId'});db[_0xa4a9('0xb7')][_0xa4a9('0x106')](db['VtigerField'],{'as':_0xa4a9('0x1ae'),'foreignKey':_0xa4a9('0x1af')});db[_0xa4a9('0xb7')]['hasMany'](db[_0xa4a9('0xb8')],{'as':_0xa4a9('0x1bb'),'foreignKey':_0xa4a9('0x1b0')});db['VtigerConfiguration'][_0xa4a9('0x106')](db[_0xa4a9('0xb8')],{'as':_0xa4a9('0x1aa'),'foreignKey':'FieldId'});db[_0xa4a9('0xb7')][_0xa4a9('0x114')](db['VtigerAccount'],{'as':_0xa4a9('0x162'),'foreignKey':_0xa4a9('0x1ad')});db['VtigerField'][_0xa4a9('0x106')](db[_0xa4a9('0xb8')],{'as':_0xa4a9('0x1b2'),'foreignKey':_0xa4a9('0x1af')});db[_0xa4a9('0xb8')][_0xa4a9('0x106')](db[_0xa4a9('0xb8')],{'as':'Description','foreignKey':_0xa4a9('0x1b0')});db['VtigerField']['hasMany'](db[_0xa4a9('0xb8')],{'as':'Field','foreignKey':_0xa4a9('0x1b1')});db[_0xa4a9('0xb8')][_0xa4a9('0x114')](db['Variable'],{'as':'Variable','foreignKey':_0xa4a9('0x1b6')});db['ServicenowAccount'][_0xa4a9('0x106')](db[_0xa4a9('0xbb')],{'as':_0xa4a9('0x1ac'),'onDelete':_0xa4a9('0x104'),'foreignKey':_0xa4a9('0x1ad')});db[_0xa4a9('0xbb')][_0xa4a9('0x106')](db[_0xa4a9('0xbd')],{'as':_0xa4a9('0x1ae'),'foreignKey':_0xa4a9('0x1af')});db[_0xa4a9('0xbb')][_0xa4a9('0x106')](db[_0xa4a9('0xbd')],{'as':'Descriptions','foreignKey':_0xa4a9('0x1b0')});db[_0xa4a9('0xbb')][_0xa4a9('0x106')](db[_0xa4a9('0xbd')],{'as':_0xa4a9('0x1aa'),'foreignKey':_0xa4a9('0x1b1')});db[_0xa4a9('0xbb')][_0xa4a9('0x114')](db[_0xa4a9('0x1bf')],{'as':_0xa4a9('0x162'),'foreignKey':'AccountId'});db[_0xa4a9('0xbd')][_0xa4a9('0x106')](db['ServicenowField'],{'as':_0xa4a9('0x1b2'),'foreignKey':_0xa4a9('0x1af')});db[_0xa4a9('0xbd')]['hasMany'](db[_0xa4a9('0xbd')],{'as':'Description','foreignKey':_0xa4a9('0x1b0')});db[_0xa4a9('0xbd')][_0xa4a9('0x106')](db[_0xa4a9('0xbd')],{'as':_0xa4a9('0x1b4'),'foreignKey':'FieldId'});db[_0xa4a9('0xbd')][_0xa4a9('0x114')](db['Variable'],{'as':_0xa4a9('0x1b5'),'foreignKey':_0xa4a9('0x1b6')});db[_0xa4a9('0x1c0')][_0xa4a9('0x106')](db[_0xa4a9('0xc0')],{'as':'Configurations','onDelete':_0xa4a9('0x104'),'foreignKey':_0xa4a9('0x1ad')});db[_0xa4a9('0xc0')][_0xa4a9('0x106')](db[_0xa4a9('0x1c1')],{'as':_0xa4a9('0x1ae'),'onDelete':'cascade','foreignKey':'SubjectId'});db[_0xa4a9('0xc0')][_0xa4a9('0x106')](db[_0xa4a9('0x1c1')],{'as':_0xa4a9('0x1bb'),'onDelete':_0xa4a9('0x104'),'foreignKey':'DescriptionId'});db[_0xa4a9('0xc0')]['hasMany'](db['Dynamics365Field'],{'as':_0xa4a9('0x1aa'),'onDelete':_0xa4a9('0x104'),'foreignKey':_0xa4a9('0x1b1')});db[_0xa4a9('0xc0')][_0xa4a9('0x114')](db[_0xa4a9('0x1c0')],{'as':_0xa4a9('0x162'),'foreignKey':_0xa4a9('0x1ad')});db[_0xa4a9('0x1c1')]['hasMany'](db[_0xa4a9('0x1c1')],{'as':_0xa4a9('0x1b2'),'foreignKey':_0xa4a9('0x1af')});db[_0xa4a9('0x1c1')][_0xa4a9('0x106')](db[_0xa4a9('0x1c1')],{'as':_0xa4a9('0x1b3'),'foreignKey':_0xa4a9('0x1b0')});db[_0xa4a9('0x1c1')][_0xa4a9('0x106')](db[_0xa4a9('0x1c1')],{'as':'Field','foreignKey':'FieldId'});db[_0xa4a9('0x1c1')][_0xa4a9('0x114')](db[_0xa4a9('0x1b5')],{'as':_0xa4a9('0x1b5'),'foreignKey':_0xa4a9('0x1b6')});db[_0xa4a9('0xc2')]['hasMany'](db[_0xa4a9('0x1c2')],{'as':_0xa4a9('0x1ac'),'onDelete':_0xa4a9('0x104'),'foreignKey':_0xa4a9('0x1ad')});db[_0xa4a9('0x1c2')][_0xa4a9('0x106')](db[_0xa4a9('0xc4')],{'as':_0xa4a9('0x1ae'),'foreignKey':_0xa4a9('0x1af')});db['FreshsalesConfiguration'][_0xa4a9('0x106')](db[_0xa4a9('0xc4')],{'as':_0xa4a9('0x1bb'),'foreignKey':'DescriptionId'});db[_0xa4a9('0x1c2')]['hasMany'](db[_0xa4a9('0xc4')],{'as':_0xa4a9('0x1aa'),'foreignKey':_0xa4a9('0x1b1')});db['FreshsalesConfiguration'][_0xa4a9('0x114')](db[_0xa4a9('0xc2')],{'as':'Account','foreignKey':_0xa4a9('0x1ad')});db['FreshsalesField'][_0xa4a9('0x106')](db[_0xa4a9('0xc4')],{'as':'Subject','foreignKey':_0xa4a9('0x1af')});db[_0xa4a9('0xc4')][_0xa4a9('0x106')](db[_0xa4a9('0xc4')],{'as':_0xa4a9('0x1b3'),'foreignKey':'DescriptionId'});db['FreshsalesField'][_0xa4a9('0x106')](db[_0xa4a9('0xc4')],{'as':'Field','foreignKey':_0xa4a9('0x1b1')});db[_0xa4a9('0xc4')][_0xa4a9('0x114')](db['Variable'],{'as':_0xa4a9('0x1b5'),'foreignKey':_0xa4a9('0x1b6')});db[_0xa4a9('0x1c3')]['belongsTo'](db['ChatWebsite'],{});db[_0xa4a9('0x1c3')][_0xa4a9('0x114')](db[_0xa4a9('0xec')],{'as':_0xa4a9('0x158'),'foreignKey':_0xa4a9('0x159')});db[_0xa4a9('0x1c3')][_0xa4a9('0x114')](db[_0xa4a9('0x6e')],{'as':'Contact','foreignKey':_0xa4a9('0x151')});db[_0xa4a9('0x1c3')][_0xa4a9('0x114')](db[_0xa4a9('0x61')],{});db['ChatQueueReport'][_0xa4a9('0x114')](db[_0xa4a9('0x63')],{});db[_0xa4a9('0x1c3')][_0xa4a9('0x114')](db[_0xa4a9('0x103')],{});db[_0xa4a9('0x1c3')][_0xa4a9('0x114')](db[_0xa4a9('0x67')],{});db[_0xa4a9('0x188')][_0xa4a9('0x114')](db[_0xa4a9('0x103')],{'onDelete':_0xa4a9('0x104'),'foreignKey':_0xa4a9('0x1c4')});db[_0xa4a9('0x188')][_0xa4a9('0x114')](db[_0xa4a9('0x103')],{'onDelete':_0xa4a9('0x104'),'foreignKey':_0xa4a9('0x1c5')});db[_0xa4a9('0xcc')][_0xa4a9('0x106')](db[_0xa4a9('0xca')],{'foreignKey':'SessionId','onDelete':_0xa4a9('0x104')});db[_0xa4a9('0xcc')]['hasMany'](db[_0xa4a9('0xc9')],{'foreignKey':_0xa4a9('0x1c6'),'onDelete':_0xa4a9('0x104')});db[_0xa4a9('0xcd')][_0xa4a9('0x114')](db[_0xa4a9('0x4c')],{});db[_0xa4a9('0xcd')][_0xa4a9('0x114')](db[_0xa4a9('0xec')],{'as':_0xa4a9('0x158'),'foreignKey':_0xa4a9('0x159')});db[_0xa4a9('0xcd')][_0xa4a9('0x114')](db[_0xa4a9('0x6e')],{'as':_0xa4a9('0x15b'),'foreignKey':_0xa4a9('0x151')});db[_0xa4a9('0xcd')][_0xa4a9('0x114')](db[_0xa4a9('0x10e')],{});db['SmsQueueReport']['belongsTo'](db['SmsMessage'],{});db[_0xa4a9('0xcd')][_0xa4a9('0x114')](db[_0xa4a9('0x103')],{});db[_0xa4a9('0xcd')][_0xa4a9('0x114')](db[_0xa4a9('0x52')],{});db[_0xa4a9('0x1c7')][_0xa4a9('0x106')](db[_0xa4a9('0xcc')],{'foreignKey':_0xa4a9('0x1c8')});db[_0xa4a9('0x1c7')]['hasMany'](db[_0xa4a9('0xca')],{'foreignKey':_0xa4a9('0x1c8')});db[_0xa4a9('0x1c7')][_0xa4a9('0x106')](db[_0xa4a9('0xc9')],{'foreignKey':_0xa4a9('0x1c8')});db['SquareProject'][_0xa4a9('0x116')](db[_0xa4a9('0x103')],{'as':_0xa4a9('0x15e'),'through':_0xa4a9('0x135')});db['Team'][_0xa4a9('0x116')](db[_0xa4a9('0x103')],{'as':'Agents','through':'user_has_teams'});db[_0xa4a9('0xda')]['belongsToMany'](db[_0xa4a9('0x121')],{'through':'TeamVoiceQueue','as':'VoiceQueues'});db[_0xa4a9('0xda')][_0xa4a9('0x116')](db[_0xa4a9('0x38')],{'through':'team_has_mail_queues','as':_0xa4a9('0x1c9')});db[_0xa4a9('0xda')]['belongsToMany'](db[_0xa4a9('0x67')],{'through':_0xa4a9('0x1ca'),'as':_0xa4a9('0x1cb')});db[_0xa4a9('0xda')][_0xa4a9('0x116')](db['FaxQueue'],{'through':_0xa4a9('0x1cc'),'as':_0xa4a9('0x124')});db[_0xa4a9('0xda')][_0xa4a9('0x116')](db[_0xa4a9('0x52')],{'through':'team_has_sms_queues','as':_0xa4a9('0x126')});db[_0xa4a9('0xda')]['belongsToMany'](db['OpenchannelQueue'],{'through':'team_has_openchannel_queues','as':_0xa4a9('0x127')});db[_0xa4a9('0xda')]['belongsToMany'](db[_0xa4a9('0x128')],{'through':_0xa4a9('0x1cd'),'as':_0xa4a9('0x1ce')});db['Campaign'][_0xa4a9('0x106')](db[_0xa4a9('0x70')],{'as':_0xa4a9('0x13b'),'foreignKey':'CampaignId'});db['Campaign'][_0xa4a9('0x106')](db[_0xa4a9('0x73')],{'as':_0xa4a9('0x13c'),'foreignKey':_0xa4a9('0x18f')});db[_0xa4a9('0xdd')][_0xa4a9('0x106')](db['CmHopperHistory'],{'as':_0xa4a9('0x13d'),'foreignKey':_0xa4a9('0x18f')});db[_0xa4a9('0xdd')]['hasMany'](db[_0xa4a9('0x13e')],{'as':_0xa4a9('0x13f'),'foreignKey':_0xa4a9('0x18f')});db[_0xa4a9('0xdd')][_0xa4a9('0x114')](db['Trunk'],{'as':'Trunk','foreignKey':_0xa4a9('0x1cf')});db['Campaign'][_0xa4a9('0x114')](db[_0xa4a9('0x25')],{'as':'TrunkBackup','foreignKey':_0xa4a9('0x1d0')});db[_0xa4a9('0xdd')][_0xa4a9('0x114')](db[_0xa4a9('0x166')],{'as':'Interval','foreignKey':_0xa4a9('0x141')});db[_0xa4a9('0xdd')][_0xa4a9('0x114')](db[_0xa4a9('0x1d1')],{'as':_0xa4a9('0x1d1'),'foreignKey':_0xa4a9('0x1d2')});db[_0xa4a9('0xdd')][_0xa4a9('0x116')](db[_0xa4a9('0xec')],{'as':_0xa4a9('0x11a'),'through':_0xa4a9('0x1d3')});db[_0xa4a9('0xdd')][_0xa4a9('0x116')](db[_0xa4a9('0xec')],{'as':_0xa4a9('0x146'),'through':_0xa4a9('0x1d4')});db['Attachment']['belongsTo'](db[_0xa4a9('0x65')],{'as':_0xa4a9('0x65'),'foreignKey':'ChatOfflineMessageId'});db[_0xa4a9('0xe5')][_0xa4a9('0x114')](db[_0xa4a9('0x156')],{});db[_0xa4a9('0xe5')]['belongsTo'](db[_0xa4a9('0x3a')],{});db[_0xa4a9('0xe5')][_0xa4a9('0x114')](db[_0xa4a9('0x36')],{'foreignKey':_0xa4a9('0x1d5'),'as':_0xa4a9('0x1d6')});db['MailTransferReport'][_0xa4a9('0x114')](db[_0xa4a9('0x103')],{'foreignKey':_0xa4a9('0x1d7'),'as':_0xa4a9('0x1d8')});db['MailTransferReport']['belongsTo'](db[_0xa4a9('0x103')],{'foreignKey':'ToUserId','as':_0xa4a9('0x1d9')});db[_0xa4a9('0xe5')][_0xa4a9('0x114')](db[_0xa4a9('0x38')],{'foreignKey':'ToMailQueueId','as':_0xa4a9('0x1da')});db[_0xa4a9('0xe5')][_0xa4a9('0x114')](db[_0xa4a9('0x36')],{'foreignKey':_0xa4a9('0x1db'),'as':_0xa4a9('0x1dc')});db[_0xa4a9('0xe7')][_0xa4a9('0x114')](db[_0xa4a9('0x63')],{});db['ChatTransferReport']['belongsTo'](db[_0xa4a9('0x61')],{});db[_0xa4a9('0xe7')][_0xa4a9('0x114')](db[_0xa4a9('0x5c')],{'foreignKey':_0xa4a9('0x1dd'),'as':'FromAccount'});db[_0xa4a9('0xe7')][_0xa4a9('0x114')](db[_0xa4a9('0x103')],{'foreignKey':_0xa4a9('0x1d7'),'as':_0xa4a9('0x1d8')});db[_0xa4a9('0xe7')]['belongsTo'](db[_0xa4a9('0x103')],{'foreignKey':_0xa4a9('0x1de'),'as':_0xa4a9('0x1d9')});db[_0xa4a9('0xe7')][_0xa4a9('0x114')](db[_0xa4a9('0x67')],{'foreignKey':_0xa4a9('0x1df'),'as':_0xa4a9('0x1da')});db['ChatTransferReport'][_0xa4a9('0x114')](db[_0xa4a9('0x5c')],{'foreignKey':_0xa4a9('0x1e0'),'as':_0xa4a9('0x1dc')});db[_0xa4a9('0x1e1')]['belongsTo'](db[_0xa4a9('0x48')],{});db[_0xa4a9('0x1e1')]['belongsTo'](db['FaxInteraction'],{});db[_0xa4a9('0x1e1')]['belongsTo'](db[_0xa4a9('0x42')],{'foreignKey':'FromFaxAccountId','as':_0xa4a9('0x1d6')});db[_0xa4a9('0x1e1')]['belongsTo'](db[_0xa4a9('0x103')],{'foreignKey':_0xa4a9('0x1d7'),'as':_0xa4a9('0x1d8')});db[_0xa4a9('0x1e1')][_0xa4a9('0x114')](db[_0xa4a9('0x103')],{'foreignKey':_0xa4a9('0x1de'),'as':'ToAgent'});db[_0xa4a9('0x1e1')][_0xa4a9('0x114')](db[_0xa4a9('0x4a')],{'foreignKey':'ToFaxQueueId','as':_0xa4a9('0x1da')});db['FaxTransferReport'][_0xa4a9('0x114')](db[_0xa4a9('0x42')],{'foreignKey':'ToFaxAccountId','as':_0xa4a9('0x1dc')});db[_0xa4a9('0xe9')][_0xa4a9('0x114')](db[_0xa4a9('0x58')],{});db[_0xa4a9('0xe9')][_0xa4a9('0x114')](db[_0xa4a9('0x10c')],{});db[_0xa4a9('0xe9')][_0xa4a9('0x114')](db[_0xa4a9('0x53')],{'foreignKey':_0xa4a9('0x1e2'),'as':_0xa4a9('0x1d6')});db['OpenchannelTransferReport']['belongsTo'](db['User'],{'foreignKey':'FromUserId','as':_0xa4a9('0x1d8')});db['OpenchannelTransferReport']['belongsTo'](db[_0xa4a9('0x103')],{'foreignKey':'ToUserId','as':'ToAgent'});db['OpenchannelTransferReport'][_0xa4a9('0x114')](db[_0xa4a9('0x5a')],{'foreignKey':_0xa4a9('0x1e3'),'as':_0xa4a9('0x1da')});db[_0xa4a9('0xe9')]['belongsTo'](db[_0xa4a9('0x53')],{'foreignKey':_0xa4a9('0x1e4'),'as':_0xa4a9('0x1dc')});db[_0xa4a9('0xeb')]['belongsTo'](db['SmsMessage'],{});db[_0xa4a9('0xeb')]['belongsTo'](db[_0xa4a9('0x10e')],{});db['SmsTransferReport'][_0xa4a9('0x114')](db[_0xa4a9('0x4c')],{'foreignKey':_0xa4a9('0x1e5'),'as':_0xa4a9('0x1d6')});db['SmsTransferReport'][_0xa4a9('0x114')](db[_0xa4a9('0x103')],{'foreignKey':'FromUserId','as':_0xa4a9('0x1d8')});db[_0xa4a9('0xeb')][_0xa4a9('0x114')](db[_0xa4a9('0x103')],{'foreignKey':_0xa4a9('0x1de'),'as':_0xa4a9('0x1d9')});db[_0xa4a9('0xeb')]['belongsTo'](db[_0xa4a9('0x52')],{'foreignKey':_0xa4a9('0x1e6'),'as':'ToQueue'});db[_0xa4a9('0xeb')][_0xa4a9('0x114')](db[_0xa4a9('0x4c')],{'foreignKey':'ToSmsAccountId','as':_0xa4a9('0x1dc')});db['CmList'][_0xa4a9('0x106')](db['Disposition'],{'as':_0xa4a9('0x155'),'foreignKey':_0xa4a9('0x159'),'onDelete':_0xa4a9('0x104')});db['CmList'][_0xa4a9('0x106')](db[_0xa4a9('0x77')],{'as':'CustomFields','foreignKey':'ListId'});db[_0xa4a9('0xec')]['hasMany'](db[_0xa4a9('0x6e')],{'as':_0xa4a9('0x118'),'onDelete':'cascade','foreignKey':_0xa4a9('0x159')});db[_0xa4a9('0xec')]['hasMany'](db[_0xa4a9('0x73')],{'as':'HopperFinals','foreignKey':_0xa4a9('0x159')});db[_0xa4a9('0xec')][_0xa4a9('0x106')](db['CmHopperHistory'],{'as':_0xa4a9('0x1e7'),'foreignKey':_0xa4a9('0x159')});db['CmList'][_0xa4a9('0x106')](db[_0xa4a9('0x10b')],{'as':_0xa4a9('0x10b'),'foreignKey':'ListId'});db[_0xa4a9('0xec')][_0xa4a9('0x116')](db['VoiceQueue'],{'as':_0xa4a9('0x1e8'),'through':_0xa4a9('0x143')});db[_0xa4a9('0xec')][_0xa4a9('0x116')](db[_0xa4a9('0x103')],{'as':_0xa4a9('0x144'),'through':'cm_user_has_lists'});db[_0xa4a9('0xee')][_0xa4a9('0x106')](db[_0xa4a9('0x10a')],{'as':_0xa4a9('0x19b'),'onDelete':_0xa4a9('0x104')});db['VoicePrefix']['belongsToMany'](db['User'],{'as':'Agents','through':_0xa4a9('0x1e9')});db['UserProfile'][_0xa4a9('0x106')](db[_0xa4a9('0x103')],{'as':_0xa4a9('0x15e'),'foreignKey':'userProfileId'});db[_0xa4a9('0xf0')][_0xa4a9('0x106')](db['UserProfileSection'],{'as':_0xa4a9('0x1ea'),'foreignKey':_0xa4a9('0x115'),'onDelete':'cascade'});db[_0xa4a9('0xf2')][_0xa4a9('0x106')](db[_0xa4a9('0x1eb')],{'as':_0xa4a9('0x1ec'),'foreignKey':_0xa4a9('0x1ed'),'onDelete':_0xa4a9('0x104')});db[_0xa4a9('0x131')][_0xa4a9('0x106')](db[_0xa4a9('0x7e')],{'as':_0xa4a9('0x155'),'foreignKey':_0xa4a9('0x1ee'),'onDelete':_0xa4a9('0x104')});db['WhatsappAccount']['hasMany'](db[_0xa4a9('0x7c')],{'as':_0xa4a9('0x174'),'foreignKey':_0xa4a9('0x1ee')});db[_0xa4a9('0x131')][_0xa4a9('0x106')](db[_0xa4a9('0xfa')],{'as':_0xa4a9('0x149'),'foreignKey':_0xa4a9('0x1ee')});db[_0xa4a9('0x131')]['hasMany'](db[_0xa4a9('0xf8')],{'as':'Interactions'});db['WhatsappAccount'][_0xa4a9('0x106')](db[_0xa4a9('0xf6')],{'as':_0xa4a9('0x157')});db['WhatsappAccount']['belongsTo'](db['CmList'],{'as':_0xa4a9('0x158'),'foreignKey':_0xa4a9('0x159')});db[_0xa4a9('0x131')][_0xa4a9('0x114')](db[_0xa4a9('0x81')],{'as':'mandatoryDispositionPause','foreignKey':_0xa4a9('0x142')});db[_0xa4a9('0x131')][_0xa4a9('0x116')](db[_0xa4a9('0x103')],{'as':'Agents','through':_0xa4a9('0x133')});db[_0xa4a9('0xf6')][_0xa4a9('0x114')](db[_0xa4a9('0x103')],{'onDelete':'restrict'});db[_0xa4a9('0xf6')][_0xa4a9('0x114')](db[_0xa4a9('0x128')],{'onDelete':'restrict'});db['WhatsappApplication'][_0xa4a9('0x114')](db['WhatsappAccount'],{'onDelete':'restrict'});db[_0xa4a9('0xf6')][_0xa4a9('0x114')](db[_0xa4a9('0x166')],{'onDelete':'restrict','foreignKey':_0xa4a9('0x141')});db[_0xa4a9('0xf6')][_0xa4a9('0x114')](db[_0xa4a9('0x87')],{'onDelete':'restrict','foreignKey':'TagId'});db[_0xa4a9('0xf8')][_0xa4a9('0x106')](db['WhatsappMessage'],{'as':'Messages','onDelete':_0xa4a9('0x104'),'foreignKey':_0xa4a9('0x1ef')});db[_0xa4a9('0xf8')][_0xa4a9('0x114')](db[_0xa4a9('0x131')],{'as':_0xa4a9('0x162'),'foreignKey':_0xa4a9('0x1ee')});db[_0xa4a9('0xf8')]['belongsTo'](db[_0xa4a9('0x6e')],{'as':_0xa4a9('0x15b'),'foreignKey':_0xa4a9('0x151')});db[_0xa4a9('0xf8')]['belongsTo'](db[_0xa4a9('0x103')],{'as':_0xa4a9('0x178'),'foreignKey':_0xa4a9('0x105')});db[_0xa4a9('0xf8')][_0xa4a9('0x116')](db[_0xa4a9('0x87')],{'through':_0xa4a9('0x1a3'),'as':_0xa4a9('0x15d')});db[_0xa4a9('0xf8')][_0xa4a9('0x116')](db[_0xa4a9('0x87')],{'through':_0xa4a9('0x1a3'),'as':_0xa4a9('0x171')});db[_0xa4a9('0xf8')][_0xa4a9('0x116')](db['User'],{'as':'Users','through':_0xa4a9('0x120'),'foreignKey':'WhatsappInteractionId'});db[_0xa4a9('0xfa')][_0xa4a9('0x114')](db['User'],{'as':_0xa4a9('0x103')});db[_0xa4a9('0xfa')][_0xa4a9('0x114')](db[_0xa4a9('0x6e')],{'onDelete':'cascade','as':'Contact'});db['WhatsappMessage'][_0xa4a9('0x114')](db['WhatsappInteraction'],{'onDelete':'cascade','as':_0xa4a9('0x161'),'foreignKey':_0xa4a9('0x1ef')});db[_0xa4a9('0xfa')][_0xa4a9('0x114')](db[_0xa4a9('0x131')],{'as':'Account','foreignKey':_0xa4a9('0x1ee')});db[_0xa4a9('0xfc')][_0xa4a9('0x114')](db[_0xa4a9('0x131')],{});db[_0xa4a9('0xfc')][_0xa4a9('0x114')](db['CmList'],{'as':_0xa4a9('0x158'),'foreignKey':_0xa4a9('0x159')});db['WhatsappQueueReport'][_0xa4a9('0x114')](db[_0xa4a9('0x6e')],{'as':_0xa4a9('0x15b'),'foreignKey':_0xa4a9('0x151')});db[_0xa4a9('0xfc')][_0xa4a9('0x114')](db[_0xa4a9('0xf8')],{});db['WhatsappQueueReport'][_0xa4a9('0x114')](db['WhatsappQueue'],{});db[_0xa4a9('0xfc')][_0xa4a9('0x114')](db[_0xa4a9('0xfa')],{});db[_0xa4a9('0xfc')][_0xa4a9('0x114')](db[_0xa4a9('0x103')],{});db['WhatsappTransferReport'][_0xa4a9('0x114')](db[_0xa4a9('0xfa')],{});db['WhatsappTransferReport'][_0xa4a9('0x114')](db[_0xa4a9('0xf8')],{});db['WhatsappTransferReport'][_0xa4a9('0x114')](db[_0xa4a9('0x131')],{'foreignKey':_0xa4a9('0x1f0'),'as':'FromAccount'});db['WhatsappTransferReport'][_0xa4a9('0x114')](db[_0xa4a9('0x131')],{'foreignKey':_0xa4a9('0x1f1'),'as':'ToAccount'});db[_0xa4a9('0xfe')][_0xa4a9('0x114')](db[_0xa4a9('0x128')],{'foreignKey':_0xa4a9('0x1f2'),'as':_0xa4a9('0x1da')});db['WhatsappTransferReport'][_0xa4a9('0x114')](db[_0xa4a9('0x103')],{'foreignKey':_0xa4a9('0x1d7'),'as':'FromAgent'});db['WhatsappTransferReport']['belongsTo'](db['User'],{'foreignKey':_0xa4a9('0x1de'),'as':'ToAgent'});db[_0xa4a9('0x128')]['belongsToMany'](db[_0xa4a9('0x103')],{'as':_0xa4a9('0x144'),'through':_0xa4a9('0x31'),'foreignKey':_0xa4a9('0x1f3')});db['WhatsappQueue'][_0xa4a9('0x116')](db[_0xa4a9('0xda')],{'through':'team_has_whatsapp_queues','as':'Teams'});module[_0xa4a9('0x1f4')]={'db':db,'dbH':dbH};
\ No newline at end of file
+var _0x1339=['motion2','xcall','127.0.0.1','mysql','utf8mb4','utf8','utf8_general_ci','sequelizeHistory','xC@LL1234','name','database','password','username','options','import','VoiceChanSpy','../api/voiceChanSpy/voiceChanSpy.model','../api/voiceContext/voiceContext.model','VoiceMusicOnHold','../api/voiceQueue/voiceQueue.model','../api/voiceRecording/voiceRecording.model','ScreenRecording','../api/screenRecording/screenRecording.model','VoiceMail','../api/voiceMail/voiceMail.model','../api/voiceMailMessage/voiceMailMessage.model','VoiceCallReport','../api/voiceCallReport/voiceCallReport.model','VoiceDialReport','../api/voiceAgentReport/voiceAgentReport.model','VoiceQueueReport','../api/voiceQueueReport/voiceQueueReport.model','MemberReport','../api/memberReport/memberReport.model','Trunk','VoiceTransferReport','../api/voiceTransferReport/voiceTransferReport.model','../api/userVoiceQueueRt/userVoiceQueueRt.model','UserVoiceQueue','../api/userVoiceQueue/userVoiceQueue.model','UserChatQueue','../api/userChatQueue/userChatQueue.model','UserMailQueue','../api/userMailQueue/userMailQueue.model','UserFaxQueue','UserSmsQueue','../api/userSmsQueue/userSmsQueue.model','UserOpenchannelQueue','../api/userOpenchannelQueue/userOpenchannelQueue.model','UserWhatsappQueue','../api/userWhatsappQueue/userWhatsappQueue.model','MailServerIn','../api/mailServerIn/mailServerIn.model','MailServerOut','../api/mailServerOut/mailServerOut.model','MailAccount','../api/mailAccount/mailAccount.model','../api/mailQueue/mailQueue.model','MailSubstatus','../api/mailSubstatus/mailSubstatus.model','MailInteraction','MailMessage','../api/mailMessage/mailMessage.model','MailApplication','../api/mailApplication/mailApplication.model','MailQueueReport','../api/mailQueueReport/mailQueueReport.model','Dashboard','../api/dashboard/dashboard.model','DashboardItem','../api/dashboardItem/dashboardItem.model','../api/faxAccount/faxAccount.model','FaxApplication','../api/faxApplication/faxApplication.model','FaxInteraction','FaxMessage','FaxQueueReport','../api/faxQueueReport/faxQueueReport.model','SmsAccount','../api/smsAccount/smsAccount.model','SmsApplication','../api/smsApplication/smsApplication.model','../api/smsInteraction/smsInteraction.model','SmsMessage','../api/smsMessage/smsMessage.model','SmsQueue','../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','../api/chatWebsite/chatWebsite.model','OpenchannelQueueReport','../api/openchannelQueueReport/openchannelQueueReport.model','ChatApplication','../api/chatApplication/chatApplication.model','../api/chatInteraction/chatInteraction.model','ChatQueue','../api/chatQueue/chatQueue.model','../api/chatGroup/chatGroup.model','ChatProactiveAction','../api/chatProactiveAction/chatProactiveAction.model','CmCompany','CmContact','CmHopper','../api/cmHopper/cmHopper.model','CmHopperBlack','../api/cmHopperBlack/cmHopperBlack.model','../api/cmHopperFinal/cmHopperFinal.model','../api/reportAgentPreview/reportAgentPreview.model','CmCustomField','../api/cmCustomField/cmCustomField.model','Action','../api/action/action.model','../api/automation/automation.model','CannedAnswer','../api/cannedAnswer/cannedAnswer.model','../api/disposition/disposition.model','Condition','../api/condition/condition.model','Interval','Pause','../api/pause/pause.model','Cdr','../api/cdr/cdr.model','VoiceQueuesLog','Schedule','../api/schedule/schedule.model','Sound','../api/sound/sound.model','Tag','../api/tag/tag.model','Template','../api/template/template.model','../api/trigger/trigger.model','Variable','../api/variable/variable.model','Integration','../api/integration/integration.model','IntegrationReport','AnalyticCustomReport','../api/analyticCustomReport/analyticCustomReport.model','../api/analyticDefaultReport/analyticDefaultReport.model','AnalyticExtractedReport','../api/analyticExtractedReport/analyticExtractedReport.model','AnalyticMetric','AnalyticFieldReport','../api/analyticFieldReport/analyticFieldReport.model','AnalyticTreeReport','../api/analyticTreeReport/analyticTreeReport.model','SalesforceAccount','SalesforceConfiguration','../api/intSalesforceConfiguration/intSalesforceConfiguration.model','../api/intSalesforceField/intSalesforceField.model','SugarcrmAccount','../api/intSugarcrmAccount/intSugarcrmAccount.model','SugarcrmConfiguration','../api/intSugarcrmConfiguration/intSugarcrmConfiguration.model','SugarcrmField','../api/intSugarcrmField/intSugarcrmField.model','DeskAccount','DeskConfiguration','DeskField','../api/intDeskField/intDeskField.model','ZohoAccount','../api/intZohoAccount/intZohoAccount.model','ZohoConfiguration','../api/intZohoConfiguration/intZohoConfiguration.model','ZohoField','../api/intZohoField/intZohoField.model','../api/intZendeskAccount/intZendeskAccount.model','ZendeskConfiguration','ZendeskField','../api/intZendeskField/intZendeskField.model','../api/intFreshdeskAccount/intFreshdeskAccount.model','FreshdeskConfiguration','../api/intFreshdeskField/intFreshdeskField.model','VtigerAccount','../api/intVtigerAccount/intVtigerAccount.model','VtigerConfiguration','VtigerField','../api/intVtigerField/intVtigerField.model','ServicenowAccount','ServicenowConfiguration','ServicenowField','../api/intServicenowField/intServicenowField.model','Dynamics365Account','../api/intDynamics365Account/intDynamics365Account.model','../api/intDynamics365Configuration/intDynamics365Configuration.model','Dynamics365Field','FreshsalesConfiguration','../api/intFreshsalesConfiguration/intFreshsalesConfiguration.model','../api/intFreshsalesField/intFreshsalesField.model','Network','../api/network/network.model','ChatQueueReport','JscriptyAnswerReport','../api/jscriptyAnswerReport/jscriptyAnswerReport.model','JscriptyQuestionReport','../api/jscriptyQuestionReport/jscriptyQuestionReport.model','JscriptySessionReport','SmsQueueReport','../api/smsQueueReport/smsQueueReport.model','SquareReport','../api/squareReport/squareReport.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','SquareMessage','../api/team/team.model','../api/license/license.model','../api/campaign/campaign.model','Migration','../api/migration/migration.model','Attachment','../api/attachment/attachment.model','Plugin','MailTransferReport','../api/mailTransferReport/mailTransferReport.model','ChatTransferReport','../api/chatTransferReport/chatTransferReport.model','FaxTransferReport','OpenchannelTransferReport','../api/openchannelTransferReport/openchannelTransferReport.model','SmsTransferReport','../api/smsTransferReport/smsTransferReport.model','CmList','../api/cmList/cmList.model','VoicePrefix','../api/voicePrefix/voicePrefix.model','UserProfile','../api/userProfile/userProfile.model','../api/userProfileSection/userProfileSection.model','UserProfileResource','../api/userProfileResource/userProfileResource.model','UserNotification','../api/userNotification/userNotification.model','WhatsappAccount','WhatsappApplication','../api/whatsappApplication/whatsappApplication.model','../api/whatsappInteraction/whatsappInteraction.model','WhatsappQueueReport','../api/whatsappQueueReport/whatsappQueueReport.model','WhatsappTransferReport','WhatsappQueue','../api/whatsappQueue/whatsappQueue.model','TeamVoiceQueue','../api/teamVoicePrefix/teamVoicePrefix.model','../api/userVoicePrefix/userVoicePrefix.model','User','hasOne','cascade','UserId','hasMany','UserVoiceQueueRt','VoiceQueuesRt','VoiceExtension','Extensions','HopperFinals','CmHopperHistory','HopperHistory','ReportAgentPreview','ChatInteraction','ChatInteractions','SmsInteraction','SmsInteractions','MailInteractions','WhatsappInteraction','WhatsappInteractions','SenderId','belongsTo','belongsToMany','ChatGroup','Groups','chat_group_has_users','Contacts','cm_user_has_contacts','Lists','cm_user_has_lists','Team','user_has_mail_interactions','user_has_chat_interactions','FaxInteractions','user_has_fax_interactions','OpenchannelInteractions','user_has_whatsapp_interactions','VoiceQueue','VoiceQueues','VoicePrefixes','UserVoicePrefix','MailQueue','MailQueues','ChatQueues','FaxQueue','FaxQueues','SmsQueues','WhatsappQueues','ChatWebsites','user_has_chat_websites','user_has_fax_accounts','MailAccounts','user_has_mail_accounts','OpenchannelAccounts','user_has_openchannel_accounts','user_has_sms_accounts','WhatsappAccounts','user_has_whatsapp_accounts','SquareProjects','user_has_square_projects','SpiedAgents','ChanSpyId','VoiceContext','Applications','moh_has_sounds','Members','VoiceQueueId','Hoppers','CmHopperFinal','HopperHistories','HopperBlacks','JscriptySessions','TrunkId','TrunkBackup','TrunkBackupId','IntervalId','mandatoryDispositionPause','Agents','Teams','BlackLists','voice_queues_has_cm_blacklists','Messages','mailboxuser','VoiceMailMessage','QueueCalls','uniqueid','AgentReports','Contact','ContactId','MailAccountId','Imap','Smtp','Dispositions','Answers','List','ListId','TemplateId','mandatoryDispositionPauseId','team_has_mail_queues','MailInteractionId','Account','Owner','mail_interaction_has_tags','Tags','ThroughTags','Attachments','Interaction','ChatWebsite','ChatWebsiteId','ChatOfflineMessage','ChatOfflineMessageId','restrict','TagId','FaxAccount','FaxAccountId','Interactions','Exntensions','FaxInteractionId','fax_interaction_has_tags','Users','AttachmentId','team_has_fax_queues','Disposition','SmsAccountId','sms_interaction_has_tags','user_has_sms_interactions','SmsInteractionId','SmsQueueId','team_has_sms_queues','OpenchannelAccountId','OpenchannelQueueId','OpenchannelInteractionId','openchannel_interaction_has_tags','user_has_openchannel_interactions','team_has_openchannel_queues','ProactiveActions','ChatMessage','Agent','Queue','ChatQueueId','Website','ChatInteractionId','chat_interaction_has_tags','team_has_chat_queues','ChatInternalMessage','ChatGroupId','CompanyId','Company','Campaign','CampaignId','OwnerId','Automation','All','OneAll','AutomationAnyId','Actions','AutomationId','ParentId','Intervals','MailApplications','ChatApplications','SmsApplications','AnalyticDefaultReport','CustomReportId','Mohs','cm_contact_has_tags','whatsapp_interaction_has_tags','Trigger','AllConditions','AllCondition','TriggerAllId','AnyConditions','Fields','MetricId','Configurations','AccountId','Subjects','SubjectId','Descriptions','DescriptionId','SalesforceField','FieldId','Subject','Field','VariableId','Description','int_desk_configuration_has_tags','ZendeskAccount','int_zendesk_configuration_has_tags','FreshdeskAccount','FreshdeskField','Dynamics365Configuration','FreshsalesAccount','FreshsalesField','FromId','SessionId','ProjectId','user_has_teams','OpenchannelQueues','team_has_whatsapp_queues','TeamVoicePrefix','campaigns_has_cm_lists','FromMailAccountId','FromUserId','FromAgent','ToAgent','ToMailQueueId','ToQueue','ToMailAccountId','ToAccount','FromChatWebsiteId','ToUserId','ToChatWebsiteId','FromFaxAccountId','FromAccount','ToFaxQueueId','ToFaxAccountId','ToOpenchannelQueueId','ToOpenchannelAccountId','ToSmsQueueId','ToSmsAccountId','voice_queues_has_cm_lists','UserProfileSection','userProfileId','WhatsappAccountId','WhatsappMessage','WhatsappInteractionId','FromWhatsappAccountId','ToWhatsappAccountId','ToQueueId','WhatsappQueueId','exports','lodash','jstz','determine','sequelize','defaultsDeep'];(function(_0x5b19fd,_0x330d8e){var _0x49cb32=function(_0xc1c7b5){while(--_0xc1c7b5){_0x5b19fd['push'](_0x5b19fd['shift']());}};_0x49cb32(++_0x330d8e);}(_0x1339,0x1ed));var _0x9133=function(_0x5e939d,_0x50e522){_0x5e939d=_0x5e939d-0x0;var _0x3ff214=_0x1339[_0x5e939d];return _0x3ff214;};'use strict';var config=require('../config/environment');var Sequelize=require('sequelize');var _=require(_0x9133('0x0'));var jstz=require(_0x9133('0x1'));var timezone=jstz[_0x9133('0x2')]();config[_0x9133('0x3')]=_[_0x9133('0x4')](config[_0x9133('0x3')],{'database':_0x9133('0x5'),'username':_0x9133('0x6'),'password':'xC@LL1234','options':{'host':_0x9133('0x7'),'port':0xcea,'dialect':_0x9133('0x8'),'dialectOptions':{'charset':_0x9133('0x9')},'logging':![],'timezone':timezone['name'](),'define':{'charset':_0x9133('0xa'),'collate':_0x9133('0xb')}}});config[_0x9133('0xc')]=_[_0x9133('0x4')](config[_0x9133('0xc')],{'database':_0x9133('0x5'),'username':_0x9133('0x6'),'password':_0x9133('0xd'),'options':{'host':_0x9133('0x7'),'port':0xcea,'dialect':_0x9133('0x8'),'dialectOptions':{'charset':'utf8mb4'},'logging':![],'timezone':timezone[_0x9133('0xe')](),'define':{'charset':_0x9133('0xa'),'collate':_0x9133('0xb')}}});var db={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0x9133('0x3')][_0x9133('0xf')],config[_0x9133('0x3')]['username'],config[_0x9133('0x3')][_0x9133('0x10')],config['sequelize']['options'])};var dbH={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0x9133('0xc')]['database'],config[_0x9133('0xc')][_0x9133('0x11')],config[_0x9133('0xc')][_0x9133('0x10')],config[_0x9133('0xc')][_0x9133('0x12')])};db['User']=db[_0x9133('0x3')][_0x9133('0x13')]('../api/user/user.model');db[_0x9133('0x14')]=db[_0x9133('0x3')][_0x9133('0x13')](_0x9133('0x15'));db['VoiceContext']=db[_0x9133('0x3')]['import'](_0x9133('0x16'));db['VoiceExtension']=db[_0x9133('0x3')][_0x9133('0x13')]('../api/voiceExtension/voiceExtension.model');db[_0x9133('0x17')]=db['sequelize'][_0x9133('0x13')]('../api/voiceMusicOnHold/voiceMusicOnHold.model');db['VoiceQueue']=db[_0x9133('0x3')]['import'](_0x9133('0x18'));db['VoiceRecording']=db['sequelize']['import'](_0x9133('0x19'));db[_0x9133('0x1a')]=db['sequelize'][_0x9133('0x13')](_0x9133('0x1b'));db[_0x9133('0x1c')]=db[_0x9133('0x3')]['import'](_0x9133('0x1d'));db['VoiceMailMessage']=db[_0x9133('0x3')][_0x9133('0x13')](_0x9133('0x1e'));db[_0x9133('0x1f')]=db[_0x9133('0x3')][_0x9133('0x13')](_0x9133('0x20'));db[_0x9133('0x21')]=db[_0x9133('0x3')][_0x9133('0x13')]('../api/voiceDialReport/voiceDialReport.model');db['VoiceAgentReport']=db[_0x9133('0x3')][_0x9133('0x13')](_0x9133('0x22'));db[_0x9133('0x23')]=db['sequelize']['import'](_0x9133('0x24'));db[_0x9133('0x25')]=db[_0x9133('0x3')][_0x9133('0x13')](_0x9133('0x26'));db[_0x9133('0x27')]=db['sequelize']['import']('../api/trunk/trunk.model');db[_0x9133('0x28')]=db['sequelize'][_0x9133('0x13')](_0x9133('0x29'));db['UserVoiceQueueRt']=db[_0x9133('0x3')]['import'](_0x9133('0x2a'));db[_0x9133('0x2b')]=db[_0x9133('0x3')]['import'](_0x9133('0x2c'));db[_0x9133('0x2d')]=db[_0x9133('0x3')]['import'](_0x9133('0x2e'));db[_0x9133('0x2f')]=db[_0x9133('0x3')]['import'](_0x9133('0x30'));db[_0x9133('0x31')]=db[_0x9133('0x3')][_0x9133('0x13')]('../api/userFaxQueue/userFaxQueue.model');db[_0x9133('0x32')]=db[_0x9133('0x3')]['import'](_0x9133('0x33'));db[_0x9133('0x34')]=db[_0x9133('0x3')][_0x9133('0x13')](_0x9133('0x35'));db[_0x9133('0x36')]=db[_0x9133('0x3')][_0x9133('0x13')](_0x9133('0x37'));db[_0x9133('0x38')]=db[_0x9133('0x3')]['import'](_0x9133('0x39'));db[_0x9133('0x3a')]=db['sequelize'][_0x9133('0x13')](_0x9133('0x3b'));db[_0x9133('0x3c')]=db[_0x9133('0x3')][_0x9133('0x13')](_0x9133('0x3d'));db['MailQueue']=db['sequelize'][_0x9133('0x13')](_0x9133('0x3e'));db[_0x9133('0x3f')]=db[_0x9133('0x3')][_0x9133('0x13')](_0x9133('0x40'));db[_0x9133('0x41')]=db[_0x9133('0x3')][_0x9133('0x13')]('../api/mailInteraction/mailInteraction.model');db[_0x9133('0x42')]=db[_0x9133('0x3')][_0x9133('0x13')](_0x9133('0x43'));db[_0x9133('0x44')]=db['sequelize'][_0x9133('0x13')](_0x9133('0x45'));db[_0x9133('0x46')]=db[_0x9133('0x3')]['import'](_0x9133('0x47'));db[_0x9133('0x48')]=db[_0x9133('0x3')][_0x9133('0x13')](_0x9133('0x49'));db[_0x9133('0x4a')]=db[_0x9133('0x3')]['import'](_0x9133('0x4b'));db['FaxAccount']=db['sequelize'][_0x9133('0x13')](_0x9133('0x4c'));db[_0x9133('0x4d')]=db[_0x9133('0x3')][_0x9133('0x13')](_0x9133('0x4e'));db[_0x9133('0x4f')]=db[_0x9133('0x3')][_0x9133('0x13')]('../api/faxInteraction/faxInteraction.model');db[_0x9133('0x50')]=db[_0x9133('0x3')][_0x9133('0x13')]('../api/faxMessage/faxMessage.model');db['FaxQueue']=db[_0x9133('0x3')][_0x9133('0x13')]('../api/faxQueue/faxQueue.model');db[_0x9133('0x51')]=db[_0x9133('0x3')][_0x9133('0x13')](_0x9133('0x52'));db[_0x9133('0x53')]=db['sequelize'][_0x9133('0x13')](_0x9133('0x54'));db[_0x9133('0x55')]=db['sequelize'][_0x9133('0x13')](_0x9133('0x56'));db['SmsInteraction']=db['sequelize'][_0x9133('0x13')](_0x9133('0x57'));db[_0x9133('0x58')]=db[_0x9133('0x3')][_0x9133('0x13')](_0x9133('0x59'));db[_0x9133('0x5a')]=db[_0x9133('0x3')][_0x9133('0x13')](_0x9133('0x5b'));db[_0x9133('0x5c')]=db[_0x9133('0x3')]['import']('../api/openchannelAccount/openchannelAccount.model');db[_0x9133('0x5d')]=db['sequelize'][_0x9133('0x13')](_0x9133('0x5e'));db[_0x9133('0x5f')]=db[_0x9133('0x3')]['import'](_0x9133('0x60'));db[_0x9133('0x61')]=db[_0x9133('0x3')]['import'](_0x9133('0x62'));db[_0x9133('0x63')]=db[_0x9133('0x3')]['import'](_0x9133('0x64'));db['ChatWebsite']=db[_0x9133('0x3')][_0x9133('0x13')](_0x9133('0x65'));db[_0x9133('0x66')]=db['sequelize']['import'](_0x9133('0x67'));db[_0x9133('0x68')]=db[_0x9133('0x3')][_0x9133('0x13')](_0x9133('0x69'));db['ChatInteraction']=db['sequelize'][_0x9133('0x13')](_0x9133('0x6a'));db['ChatMessage']=db[_0x9133('0x3')][_0x9133('0x13')]('../api/chatMessage/chatMessage.model');db['ChatOfflineMessage']=db['sequelize'][_0x9133('0x13')]('../api/chatOfflineMessage/chatOfflineMessage.model');db[_0x9133('0x6b')]=db[_0x9133('0x3')][_0x9133('0x13')](_0x9133('0x6c'));db['ChatGroup']=db[_0x9133('0x3')]['import'](_0x9133('0x6d'));db[_0x9133('0x6e')]=db[_0x9133('0x3')][_0x9133('0x13')](_0x9133('0x6f'));db[_0x9133('0x70')]=db['sequelize']['import']('../api/cmCompany/cmCompany.model');db[_0x9133('0x71')]=db[_0x9133('0x3')][_0x9133('0x13')]('../api/cmContact/cmContact.model');db[_0x9133('0x72')]=db[_0x9133('0x3')][_0x9133('0x13')](_0x9133('0x73'));db[_0x9133('0x74')]=db[_0x9133('0x3')][_0x9133('0x13')](_0x9133('0x75'));db['CmHopperFinal']=db[_0x9133('0x3')]['import'](_0x9133('0x76'));db['CmHopperHistory']=db[_0x9133('0x3')][_0x9133('0x13')]('../api/cmHopperHistory/cmHopperHistory.model');db['ReportAgentPreview']=db[_0x9133('0x3')][_0x9133('0x13')](_0x9133('0x77'));db[_0x9133('0x78')]=db[_0x9133('0x3')][_0x9133('0x13')](_0x9133('0x79'));db[_0x9133('0x7a')]=db[_0x9133('0x3')][_0x9133('0x13')](_0x9133('0x7b'));db['Automation']=db[_0x9133('0x3')]['import'](_0x9133('0x7c'));db[_0x9133('0x7d')]=db[_0x9133('0x3')][_0x9133('0x13')](_0x9133('0x7e'));db['Disposition']=db[_0x9133('0x3')][_0x9133('0x13')](_0x9133('0x7f'));db[_0x9133('0x80')]=db['sequelize'][_0x9133('0x13')](_0x9133('0x81'));db[_0x9133('0x82')]=db[_0x9133('0x3')]['import']('../api/interval/interval.model');db[_0x9133('0x83')]=db[_0x9133('0x3')][_0x9133('0x13')](_0x9133('0x84'));db[_0x9133('0x85')]=db[_0x9133('0x3')]['import'](_0x9133('0x86'));db[_0x9133('0x87')]=db[_0x9133('0x3')][_0x9133('0x13')]('../api/voiceQueuesLog/voiceQueuesLog.model');db[_0x9133('0x88')]=db['sequelize'][_0x9133('0x13')](_0x9133('0x89'));db[_0x9133('0x8a')]=db[_0x9133('0x3')][_0x9133('0x13')](_0x9133('0x8b'));db[_0x9133('0x8c')]=db[_0x9133('0x3')]['import'](_0x9133('0x8d'));db[_0x9133('0x8e')]=db[_0x9133('0x3')][_0x9133('0x13')](_0x9133('0x8f'));db['Trigger']=db['sequelize']['import'](_0x9133('0x90'));db[_0x9133('0x91')]=db[_0x9133('0x3')]['import'](_0x9133('0x92'));db[_0x9133('0x93')]=db[_0x9133('0x3')][_0x9133('0x13')](_0x9133('0x94'));db[_0x9133('0x95')]=db[_0x9133('0x3')][_0x9133('0x13')]('../api/integrationReport/integrationReport.model');db[_0x9133('0x96')]=db[_0x9133('0x3')]['import'](_0x9133('0x97'));db['AnalyticDefaultReport']=db[_0x9133('0x3')][_0x9133('0x13')](_0x9133('0x98'));db[_0x9133('0x99')]=db[_0x9133('0x3')]['import'](_0x9133('0x9a'));db[_0x9133('0x9b')]=db[_0x9133('0x3')][_0x9133('0x13')]('../api/analyticMetric/analyticMetric.model');db[_0x9133('0x9c')]=db[_0x9133('0x3')][_0x9133('0x13')](_0x9133('0x9d'));db[_0x9133('0x9e')]=db[_0x9133('0x3')][_0x9133('0x13')](_0x9133('0x9f'));db[_0x9133('0xa0')]=db[_0x9133('0x3')][_0x9133('0x13')]('../api/intSalesforceAccount/intSalesforceAccount.model');db[_0x9133('0xa1')]=db[_0x9133('0x3')][_0x9133('0x13')](_0x9133('0xa2'));db['SalesforceField']=db[_0x9133('0x3')]['import'](_0x9133('0xa3'));db[_0x9133('0xa4')]=db[_0x9133('0x3')]['import'](_0x9133('0xa5'));db[_0x9133('0xa6')]=db[_0x9133('0x3')]['import'](_0x9133('0xa7'));db[_0x9133('0xa8')]=db['sequelize'][_0x9133('0x13')](_0x9133('0xa9'));db[_0x9133('0xaa')]=db['sequelize'][_0x9133('0x13')]('../api/intDeskAccount/intDeskAccount.model');db[_0x9133('0xab')]=db[_0x9133('0x3')][_0x9133('0x13')]('../api/intDeskConfiguration/intDeskConfiguration.model');db[_0x9133('0xac')]=db['sequelize'][_0x9133('0x13')](_0x9133('0xad'));db[_0x9133('0xae')]=db[_0x9133('0x3')][_0x9133('0x13')](_0x9133('0xaf'));db[_0x9133('0xb0')]=db[_0x9133('0x3')]['import'](_0x9133('0xb1'));db[_0x9133('0xb2')]=db[_0x9133('0x3')][_0x9133('0x13')](_0x9133('0xb3'));db['ZendeskAccount']=db[_0x9133('0x3')][_0x9133('0x13')](_0x9133('0xb4'));db[_0x9133('0xb5')]=db['sequelize'][_0x9133('0x13')]('../api/intZendeskConfiguration/intZendeskConfiguration.model');db[_0x9133('0xb6')]=db[_0x9133('0x3')][_0x9133('0x13')](_0x9133('0xb7'));db['FreshdeskAccount']=db[_0x9133('0x3')][_0x9133('0x13')](_0x9133('0xb8'));db[_0x9133('0xb9')]=db[_0x9133('0x3')]['import']('../api/intFreshdeskConfiguration/intFreshdeskConfiguration.model');db['FreshdeskField']=db['sequelize'][_0x9133('0x13')](_0x9133('0xba'));db[_0x9133('0xbb')]=db['sequelize'][_0x9133('0x13')](_0x9133('0xbc'));db[_0x9133('0xbd')]=db[_0x9133('0x3')][_0x9133('0x13')]('../api/intVtigerConfiguration/intVtigerConfiguration.model');db[_0x9133('0xbe')]=db['sequelize'][_0x9133('0x13')](_0x9133('0xbf'));db[_0x9133('0xc0')]=db[_0x9133('0x3')][_0x9133('0x13')]('../api/intServicenowAccount/intServicenowAccount.model');db[_0x9133('0xc1')]=db[_0x9133('0x3')][_0x9133('0x13')]('../api/intServicenowConfiguration/intServicenowConfiguration.model');db[_0x9133('0xc2')]=db['sequelize'][_0x9133('0x13')](_0x9133('0xc3'));db[_0x9133('0xc4')]=db[_0x9133('0x3')][_0x9133('0x13')](_0x9133('0xc5'));db['Dynamics365Configuration']=db[_0x9133('0x3')][_0x9133('0x13')](_0x9133('0xc6'));db[_0x9133('0xc7')]=db[_0x9133('0x3')][_0x9133('0x13')]('../api/intDynamics365Field/intDynamics365Field.model');db['FreshsalesAccount']=db[_0x9133('0x3')][_0x9133('0x13')]('../api/intFreshsalesAccount/intFreshsalesAccount.model');db[_0x9133('0xc8')]=db['sequelize'][_0x9133('0x13')](_0x9133('0xc9'));db['FreshsalesField']=db[_0x9133('0x3')][_0x9133('0x13')](_0x9133('0xca'));db[_0x9133('0x93')]=db[_0x9133('0x3')]['import'](_0x9133('0x94'));db[_0x9133('0xcb')]=db['sequelize'][_0x9133('0x13')](_0x9133('0xcc'));db[_0x9133('0xcd')]=db[_0x9133('0x3')][_0x9133('0x13')]('../api/chatQueueReport/chatQueueReport.model');db['ChatInternalMessage']=db[_0x9133('0x3')][_0x9133('0x13')]('../api/chatInternalMessage/chatInternalMessage.model');db[_0x9133('0xce')]=db[_0x9133('0x3')]['import'](_0x9133('0xcf'));db[_0x9133('0xd0')]=db[_0x9133('0x3')][_0x9133('0x13')](_0x9133('0xd1'));db[_0x9133('0xd2')]=db[_0x9133('0x3')][_0x9133('0x13')]('../api/jscriptySessionReport/jscriptySessionReport.model');db[_0x9133('0xd3')]=db['sequelize']['import'](_0x9133('0xd4'));db[_0x9133('0xd5')]=db[_0x9133('0x3')][_0x9133('0x13')](_0x9133('0xd6'));db[_0x9133('0xd7')]=db[_0x9133('0x3')]['import'](_0x9133('0xd8'));db[_0x9133('0xd9')]=db[_0x9133('0x3')]['import'](_0x9133('0xda'));db['Setting']=db[_0x9133('0x3')][_0x9133('0x13')](_0x9133('0xdb'));db[_0x9133('0xdc')]=db[_0x9133('0x3')][_0x9133('0x13')](_0x9133('0xdd'));db[_0x9133('0xde')]=db[_0x9133('0x3')]['import'](_0x9133('0xdf'));db[_0x9133('0xe0')]=db[_0x9133('0x3')][_0x9133('0x13')]('../api/squareRecording/squareRecording.model');db[_0x9133('0xe1')]=db['sequelize'][_0x9133('0x13')]('../api/squareMessage/squareMessage.model');db['Team']=db[_0x9133('0x3')]['import'](_0x9133('0xe2'));db['License']=db['sequelize']['import'](_0x9133('0xe3'));db['Campaign']=db[_0x9133('0x3')]['import'](_0x9133('0xe4'));db[_0x9133('0xe5')]=db[_0x9133('0x3')][_0x9133('0x13')](_0x9133('0xe6'));db[_0x9133('0xe7')]=db[_0x9133('0x3')][_0x9133('0x13')](_0x9133('0xe8'));db[_0x9133('0xe9')]=db[_0x9133('0x3')]['import']('../api/plugin/plugin.model');db[_0x9133('0xea')]=db[_0x9133('0x3')][_0x9133('0x13')](_0x9133('0xeb'));db[_0x9133('0xec')]=db[_0x9133('0x3')][_0x9133('0x13')](_0x9133('0xed'));db[_0x9133('0xee')]=db[_0x9133('0x3')][_0x9133('0x13')]('../api/faxTransferReport/faxTransferReport.model');db[_0x9133('0xef')]=db[_0x9133('0x3')][_0x9133('0x13')](_0x9133('0xf0'));db[_0x9133('0xf1')]=db[_0x9133('0x3')][_0x9133('0x13')](_0x9133('0xf2'));db[_0x9133('0xf3')]=db[_0x9133('0x3')][_0x9133('0x13')](_0x9133('0xf4'));db[_0x9133('0xf5')]=db[_0x9133('0x3')]['import'](_0x9133('0xf6'));db[_0x9133('0xf7')]=db[_0x9133('0x3')][_0x9133('0x13')](_0x9133('0xf8'));db['UserProfileSection']=db[_0x9133('0x3')][_0x9133('0x13')](_0x9133('0xf9'));db[_0x9133('0xfa')]=db[_0x9133('0x3')][_0x9133('0x13')](_0x9133('0xfb'));db[_0x9133('0xfc')]=db[_0x9133('0x3')]['import'](_0x9133('0xfd'));db[_0x9133('0xfe')]=db[_0x9133('0x3')][_0x9133('0x13')]('../api/whatsappAccount/whatsappAccount.model');db[_0x9133('0xff')]=db[_0x9133('0x3')][_0x9133('0x13')](_0x9133('0x100'));db['WhatsappInteraction']=db[_0x9133('0x3')]['import'](_0x9133('0x101'));db['WhatsappMessage']=db['sequelize'][_0x9133('0x13')]('../api/whatsappMessage/whatsappMessage.model');db[_0x9133('0x102')]=db[_0x9133('0x3')][_0x9133('0x13')](_0x9133('0x103'));db[_0x9133('0x104')]=db[_0x9133('0x3')][_0x9133('0x13')]('../api/whatsappTransferReport/whatsappTransferReport.model');db[_0x9133('0x105')]=db[_0x9133('0x3')][_0x9133('0x13')](_0x9133('0x106'));db['CloudProvider']=db[_0x9133('0x3')][_0x9133('0x13')]('../api/cloudProvider/cloudProvider.model');db[_0x9133('0x107')]=db[_0x9133('0x3')][_0x9133('0x13')]('../api/teamVoiceQueue/teamVoiceQueue.model');db['TeamVoicePrefix']=db['sequelize'][_0x9133('0x13')](_0x9133('0x108'));db['UserVoicePrefix']=db[_0x9133('0x3')][_0x9133('0x13')](_0x9133('0x109'));db[_0x9133('0x10a')][_0x9133('0x10b')](db['VoiceMail'],{'as':'VoiceMail','onDelete':_0x9133('0x10c'),'foreignKey':_0x9133('0x10d')});db[_0x9133('0x10a')][_0x9133('0x10e')](db['VoiceRecording'],{'as':'Recordings','foreignKey':_0x9133('0x10d')});db[_0x9133('0x10a')]['hasMany'](db[_0x9133('0x10f')],{'as':_0x9133('0x110'),'foreignKey':'UserId'});db[_0x9133('0x10a')][_0x9133('0x10e')](db[_0x9133('0x111')],{'as':_0x9133('0x112'),'onDelete':_0x9133('0x10c'),'hooks':!![]});db[_0x9133('0x10a')][_0x9133('0x10e')](db['CmHopperFinal'],{'as':_0x9133('0x113'),'foreignKey':'UserId'});db['User'][_0x9133('0x10e')](db[_0x9133('0x114')],{'as':_0x9133('0x115'),'foreignKey':'UserId'});db['User'][_0x9133('0x10e')](db['ReportAgentPreview'],{'as':_0x9133('0x116'),'foreignKey':'UserId'});db[_0x9133('0x10a')][_0x9133('0x10e')](db[_0x9133('0x5f')],{'as':'OpenchannelInteractions','foreignKey':_0x9133('0x10d')});db['User']['hasMany'](db[_0x9133('0x117')],{'as':_0x9133('0x118'),'foreignKey':_0x9133('0x10d')});db['User'][_0x9133('0x10e')](db[_0x9133('0x119')],{'as':_0x9133('0x11a'),'foreignKey':_0x9133('0x10d')});db[_0x9133('0x10a')]['hasMany'](db['FaxInteraction'],{'as':'FaxInteractions','foreignKey':_0x9133('0x10d')});db[_0x9133('0x10a')][_0x9133('0x10e')](db[_0x9133('0x41')],{'as':_0x9133('0x11b'),'foreignKey':_0x9133('0x10d')});db[_0x9133('0x10a')][_0x9133('0x10e')](db[_0x9133('0x11c')],{'as':_0x9133('0x11d'),'foreignKey':'UserId'});db[_0x9133('0x10a')][_0x9133('0x10e')](db['UserNotification'],{'as':'UserNotifications','foreignKey':_0x9133('0x11e')});db[_0x9133('0x10a')][_0x9133('0x11f')](db[_0x9133('0xf7')],{'as':_0x9133('0xf7'),'foreignKey':'userProfileId'});db['User'][_0x9133('0x120')](db[_0x9133('0x121')],{'as':_0x9133('0x122'),'through':_0x9133('0x123')});db[_0x9133('0x10a')][_0x9133('0x120')](db[_0x9133('0x71')],{'as':_0x9133('0x124'),'through':_0x9133('0x125')});db[_0x9133('0x10a')]['belongsToMany'](db[_0x9133('0xf3')],{'as':_0x9133('0x126'),'through':_0x9133('0x127')});db[_0x9133('0x10a')][_0x9133('0x120')](db[_0x9133('0x128')],{'through':'user_has_teams'});db[_0x9133('0x10a')][_0x9133('0x120')](db[_0x9133('0x41')],{'as':_0x9133('0x11b'),'through':_0x9133('0x129')});db[_0x9133('0x10a')][_0x9133('0x120')](db['ChatInteraction'],{'as':'ChatInteractions','through':_0x9133('0x12a')});db[_0x9133('0x10a')][_0x9133('0x120')](db['FaxInteraction'],{'as':_0x9133('0x12b'),'through':_0x9133('0x12c')});db[_0x9133('0x10a')]['belongsToMany'](db[_0x9133('0x119')],{'as':'SmsInteractions','through':'user_has_sms_interactions'});db['User']['belongsToMany'](db[_0x9133('0x5f')],{'as':_0x9133('0x12d'),'through':'user_has_openchannel_interactions'});db[_0x9133('0x10a')]['belongsToMany'](db[_0x9133('0x11c')],{'as':'WhatsappInteractions','through':_0x9133('0x12e')});db[_0x9133('0x10a')][_0x9133('0x120')](db[_0x9133('0x12f')],{'as':_0x9133('0x130'),'through':_0x9133('0x2b'),'required':![]});db[_0x9133('0x10a')][_0x9133('0x120')](db[_0x9133('0xf5')],{'as':_0x9133('0x131'),'through':_0x9133('0x132'),'required':![]});db[_0x9133('0x10a')]['belongsToMany'](db[_0x9133('0x133')],{'as':_0x9133('0x134'),'through':_0x9133('0x2f'),'required':![]});db[_0x9133('0x10a')][_0x9133('0x120')](db['ChatQueue'],{'as':_0x9133('0x135'),'through':_0x9133('0x2d'),'required':![],'hooks':!![]});db[_0x9133('0x10a')][_0x9133('0x120')](db[_0x9133('0x136')],{'as':_0x9133('0x137'),'through':_0x9133('0x31'),'required':![]});db['User'][_0x9133('0x120')](db[_0x9133('0x5a')],{'as':_0x9133('0x138'),'through':_0x9133('0x32'),'required':![]});db[_0x9133('0x10a')]['belongsToMany'](db['OpenchannelQueue'],{'as':'OpenchannelQueues','through':_0x9133('0x34'),'required':![]});db[_0x9133('0x10a')][_0x9133('0x120')](db[_0x9133('0x105')],{'as':_0x9133('0x139'),'through':_0x9133('0x36'),'required':![]});db[_0x9133('0x10a')][_0x9133('0x120')](db['CmList'],{'through':_0x9133('0x127')});db[_0x9133('0x10a')]['belongsToMany'](db['ChatWebsite'],{'as':_0x9133('0x13a'),'through':_0x9133('0x13b')});db[_0x9133('0x10a')]['belongsToMany'](db['FaxAccount'],{'as':'FaxAccounts','through':_0x9133('0x13c')});db['User']['belongsToMany'](db[_0x9133('0x3c')],{'as':_0x9133('0x13d'),'through':_0x9133('0x13e')});db[_0x9133('0x10a')][_0x9133('0x120')](db[_0x9133('0x5c')],{'as':_0x9133('0x13f'),'through':_0x9133('0x140')});db['User'][_0x9133('0x120')](db['SmsAccount'],{'as':'SmsAccounts','through':_0x9133('0x141')});db[_0x9133('0x10a')][_0x9133('0x120')](db['WhatsappAccount'],{'as':_0x9133('0x142'),'through':_0x9133('0x143')});db[_0x9133('0x10a')][_0x9133('0x120')](db['SquareProject'],{'as':_0x9133('0x144'),'through':_0x9133('0x145')});db['VoiceChanSpy']['hasMany'](db[_0x9133('0x111')],{'as':_0x9133('0x146'),'onDelete':_0x9133('0x10c'),'foreignKey':_0x9133('0x147')});db[_0x9133('0x148')]['hasMany'](db[_0x9133('0x111')],{'onDelete':'cascade'});db[_0x9133('0x111')]['hasMany'](db['VoiceExtension'],{'as':_0x9133('0x149'),'onDelete':_0x9133('0x10c')});db['VoiceMusicOnHold'][_0x9133('0x120')](db[_0x9133('0x8a')],{'as':'Sounds','through':_0x9133('0x14a')});db[_0x9133('0x12f')][_0x9133('0x10e')](db[_0x9133('0x10f')],{'as':_0x9133('0x14b'),'foreignKey':_0x9133('0x14c')});db[_0x9133('0x12f')][_0x9133('0x10e')](db[_0x9133('0x72')],{'as':_0x9133('0x14d'),'foreignKey':_0x9133('0x14c')});db[_0x9133('0x12f')][_0x9133('0x10e')](db[_0x9133('0x14e')],{'as':_0x9133('0x113'),'foreignKey':_0x9133('0x14c')});db['VoiceQueue'][_0x9133('0x10e')](db['CmHopperHistory'],{'as':_0x9133('0x14f'),'foreignKey':_0x9133('0x14c')});db[_0x9133('0x12f')][_0x9133('0x10e')](db[_0x9133('0x116')],{'as':_0x9133('0x116'),'foreignKey':'VoiceQueueId'});db[_0x9133('0x12f')]['hasMany'](db[_0x9133('0x74')],{'as':_0x9133('0x150'),'foreignKey':'VoiceQueueId'});db[_0x9133('0x12f')][_0x9133('0x10e')](db[_0x9133('0xd2')],{'as':_0x9133('0x151'),'foreignKey':_0x9133('0x14c')});db[_0x9133('0x12f')][_0x9133('0x11f')](db[_0x9133('0x27')],{'as':_0x9133('0x27'),'foreignKey':_0x9133('0x152')});db[_0x9133('0x12f')][_0x9133('0x11f')](db['Trunk'],{'as':_0x9133('0x153'),'foreignKey':_0x9133('0x154')});db['VoiceQueue'][_0x9133('0x11f')](db['Interval'],{'as':'Interval','foreignKey':_0x9133('0x155')});db[_0x9133('0x12f')][_0x9133('0x11f')](db['Pause'],{'as':_0x9133('0x156'),'foreignKey':'mandatoryDispositionPauseId'});db[_0x9133('0x12f')][_0x9133('0x120')](db[_0x9133('0xf3')],{'as':_0x9133('0x126'),'through':'voice_queues_has_cm_lists'});db[_0x9133('0x12f')]['belongsToMany'](db['User'],{'as':_0x9133('0x157'),'through':'UserVoiceQueue'});db['VoiceQueue'][_0x9133('0x120')](db['Team'],{'as':_0x9133('0x158'),'through':'TeamVoiceQueue'});db[_0x9133('0x12f')]['belongsToMany'](db[_0x9133('0xf3')],{'as':_0x9133('0x159'),'through':_0x9133('0x15a')});db['VoiceRecording'][_0x9133('0x11f')](db[_0x9133('0x10a')],{'as':_0x9133('0x10a'),'foreignKey':_0x9133('0x10d')});db[_0x9133('0x1a')][_0x9133('0x11f')](db[_0x9133('0x10a')],{'as':'User','foreignKey':'UserId'});db[_0x9133('0x1c')][_0x9133('0x10e')](db['VoiceMailMessage'],{'as':_0x9133('0x15b'),'onDelete':'cascade','foreignKey':_0x9133('0x15c'),'sourceKey':'mailbox'});db[_0x9133('0x15d')]['belongsTo'](db[_0x9133('0x1c')],{'foreignKey':'mailboxuser','targetKey':'mailbox'});db[_0x9133('0x1f')]['hasMany'](db[_0x9133('0x23')],{'as':_0x9133('0x15e'),'foreignKey':_0x9133('0x15f'),'constraints':![]});db['VoiceCallReport'][_0x9133('0x10e')](db['VoiceAgentReport'],{'as':_0x9133('0x160'),'foreignKey':_0x9133('0x15f'),'constraints':![]});db[_0x9133('0x1f')][_0x9133('0x11f')](db[_0x9133('0x10a')],{'as':_0x9133('0x10a'),'foreignKey':_0x9133('0x10d')});db['VoiceCallReport'][_0x9133('0x11f')](db['CmContact'],{'as':_0x9133('0x161'),'foreignKey':_0x9133('0x162')});db['MailServerIn']['belongsTo'](db[_0x9133('0x3c')],{'as':_0x9133('0x3c'),'foreignKey':_0x9133('0x163')});db[_0x9133('0x3a')][_0x9133('0x11f')](db[_0x9133('0x3c')],{'as':_0x9133('0x3c'),'foreignKey':_0x9133('0x163')});db[_0x9133('0x3c')][_0x9133('0x10b')](db[_0x9133('0x38')],{'as':_0x9133('0x164'),'onDelete':'cascade'});db[_0x9133('0x3c')][_0x9133('0x10b')](db[_0x9133('0x3a')],{'as':_0x9133('0x165'),'onDelete':_0x9133('0x10c')});db[_0x9133('0x3c')][_0x9133('0x10e')](db['Disposition'],{'as':_0x9133('0x166'),'foreignKey':'MailAccountId','onDelete':_0x9133('0x10c')});db['MailAccount'][_0x9133('0x10e')](db['CannedAnswer'],{'as':_0x9133('0x167'),'foreignKey':_0x9133('0x163')});db[_0x9133('0x3c')][_0x9133('0x10e')](db['MailMessage'],{'as':_0x9133('0x15b'),'foreignKey':_0x9133('0x163')});db[_0x9133('0x3c')][_0x9133('0x10e')](db['MailInteraction'],{'as':'Interactions'});db[_0x9133('0x3c')][_0x9133('0x10e')](db[_0x9133('0x44')],{'as':'Applications'});db[_0x9133('0x3c')][_0x9133('0x11f')](db[_0x9133('0xf3')],{'as':_0x9133('0x168'),'foreignKey':_0x9133('0x169')});db[_0x9133('0x3c')][_0x9133('0x11f')](db['Template'],{'as':_0x9133('0x8e'),'foreignKey':_0x9133('0x16a')});db[_0x9133('0x3c')][_0x9133('0x11f')](db[_0x9133('0x83')],{'as':_0x9133('0x156'),'foreignKey':_0x9133('0x16b')});db[_0x9133('0x3c')][_0x9133('0x120')](db['User'],{'as':_0x9133('0x157'),'through':_0x9133('0x13e')});db[_0x9133('0x133')]['belongsToMany'](db[_0x9133('0x10a')],{'as':'Agents','through':'UserMailQueue'});db['MailQueue']['belongsToMany'](db[_0x9133('0x128')],{'through':_0x9133('0x16c'),'as':_0x9133('0x158')});db[_0x9133('0x41')]['hasMany'](db[_0x9133('0x42')],{'as':_0x9133('0x15b'),'onDelete':'cascade','foreignKey':_0x9133('0x16d')});db['MailInteraction'][_0x9133('0x11f')](db[_0x9133('0x3c')],{'as':_0x9133('0x16e'),'foreignKey':_0x9133('0x163')});db['MailInteraction']['belongsTo'](db['CmContact'],{'as':_0x9133('0x161'),'foreignKey':'ContactId'});db[_0x9133('0x41')]['belongsTo'](db['User'],{'as':_0x9133('0x16f'),'foreignKey':_0x9133('0x10d')});db[_0x9133('0x41')][_0x9133('0x120')](db[_0x9133('0x8c')],{'through':_0x9133('0x170'),'as':_0x9133('0x171')});db['MailInteraction']['belongsToMany'](db['Tag'],{'through':_0x9133('0x170'),'as':_0x9133('0x172')});db['MailInteraction'][_0x9133('0x120')](db[_0x9133('0x10a')],{'as':'Users','through':'user_has_mail_interactions','foreignKey':_0x9133('0x16d')});db[_0x9133('0x42')][_0x9133('0x10e')](db['Attachment'],{'as':_0x9133('0x173'),'onDelete':'cascade'});db[_0x9133('0x42')][_0x9133('0x11f')](db[_0x9133('0x10a')],{'as':_0x9133('0x10a')});db['MailMessage'][_0x9133('0x11f')](db[_0x9133('0x71')],{'onDelete':_0x9133('0x10c'),'as':'Contact'});db[_0x9133('0x42')][_0x9133('0x11f')](db[_0x9133('0x41')],{'as':_0x9133('0x174'),'foreignKey':_0x9133('0x16d')});db[_0x9133('0x42')][_0x9133('0x11f')](db[_0x9133('0x3c')],{'as':_0x9133('0x16e'),'foreignKey':_0x9133('0x163')});db[_0x9133('0x42')][_0x9133('0x11f')](db[_0x9133('0x175')],{'as':_0x9133('0x175'),'foreignKey':_0x9133('0x176')});db[_0x9133('0x42')]['belongsTo'](db['ChatOfflineMessage'],{'as':_0x9133('0x177'),'foreignKey':_0x9133('0x178')});db[_0x9133('0x44')][_0x9133('0x11f')](db[_0x9133('0x10a')],{'onDelete':_0x9133('0x179')});db[_0x9133('0x44')][_0x9133('0x11f')](db[_0x9133('0x133')],{'onDelete':_0x9133('0x179')});db[_0x9133('0x44')]['belongsTo'](db[_0x9133('0x3c')],{'onDelete':_0x9133('0x179')});db['MailApplication'][_0x9133('0x11f')](db[_0x9133('0x82')],{'onDelete':'restrict','foreignKey':_0x9133('0x155')});db[_0x9133('0x44')]['belongsTo'](db[_0x9133('0x8c')],{'onDelete':'restrict','foreignKey':_0x9133('0x17a')});db[_0x9133('0x46')][_0x9133('0x11f')](db['MailAccount'],{});db[_0x9133('0x46')][_0x9133('0x11f')](db[_0x9133('0xf3')],{'as':'List','foreignKey':_0x9133('0x169')});db[_0x9133('0x46')]['belongsTo'](db[_0x9133('0x71')],{'as':_0x9133('0x161'),'foreignKey':_0x9133('0x162')});db['MailQueueReport']['belongsTo'](db[_0x9133('0x41')],{});db[_0x9133('0x46')][_0x9133('0x11f')](db[_0x9133('0x42')],{});db[_0x9133('0x46')][_0x9133('0x11f')](db[_0x9133('0x10a')],{});db[_0x9133('0x46')][_0x9133('0x11f')](db[_0x9133('0x133')],{});db[_0x9133('0x48')][_0x9133('0x10e')](db[_0x9133('0x4a')],{'as':'Items','onDelete':'cascade'});db[_0x9133('0x17b')][_0x9133('0x10e')](db['Disposition'],{'as':_0x9133('0x166'),'foreignKey':_0x9133('0x17c'),'onDelete':'cascade'});db['FaxAccount']['hasMany'](db[_0x9133('0x7d')],{'as':_0x9133('0x167'),'foreignKey':_0x9133('0x17c')});db[_0x9133('0x17b')][_0x9133('0x10e')](db['FaxInteraction'],{'as':_0x9133('0x17d')});db['FaxAccount'][_0x9133('0x10e')](db['FaxApplication'],{'as':_0x9133('0x149')});db[_0x9133('0x17b')][_0x9133('0x10e')](db[_0x9133('0x111')],{'as':_0x9133('0x17e'),'onDelete':_0x9133('0x10c')});db[_0x9133('0x17b')][_0x9133('0x10e')](db[_0x9133('0x50')],{'as':'Messages'});db[_0x9133('0x17b')][_0x9133('0x11f')](db['Trunk'],{'as':_0x9133('0x27')});db['FaxAccount'][_0x9133('0x11f')](db[_0x9133('0xf3')],{'as':_0x9133('0x168'),'foreignKey':_0x9133('0x169')});db['FaxAccount'][_0x9133('0x11f')](db[_0x9133('0x83')],{'as':'mandatoryDispositionPause','foreignKey':'mandatoryDispositionPauseId'});db[_0x9133('0x17b')]['belongsToMany'](db[_0x9133('0x10a')],{'as':_0x9133('0x157'),'through':_0x9133('0x13c')});db['FaxApplication'][_0x9133('0x11f')](db[_0x9133('0x10a')],{'onDelete':_0x9133('0x179')});db[_0x9133('0x4d')][_0x9133('0x11f')](db[_0x9133('0x136')],{'onDelete':_0x9133('0x179')});db[_0x9133('0x4d')]['belongsTo'](db['FaxAccount'],{'onDelete':'restrict'});db[_0x9133('0x4d')][_0x9133('0x11f')](db[_0x9133('0x8c')],{'onDelete':_0x9133('0x179'),'foreignKey':_0x9133('0x17a')});db['FaxInteraction']['hasMany'](db[_0x9133('0x50')],{'as':_0x9133('0x15b'),'onDelete':_0x9133('0x10c'),'foreignKey':_0x9133('0x17f')});db[_0x9133('0x4f')][_0x9133('0x11f')](db[_0x9133('0x17b')],{'as':'Account','foreignKey':_0x9133('0x17c')});db[_0x9133('0x4f')][_0x9133('0x11f')](db[_0x9133('0x71')],{'as':'Contact','foreignKey':_0x9133('0x162')});db[_0x9133('0x4f')][_0x9133('0x11f')](db[_0x9133('0x10a')],{'as':_0x9133('0x16f'),'foreignKey':_0x9133('0x10d')});db['FaxInteraction'][_0x9133('0x120')](db[_0x9133('0x8c')],{'through':_0x9133('0x180'),'as':'Tags'});db[_0x9133('0x4f')]['belongsToMany'](db[_0x9133('0x8c')],{'through':_0x9133('0x180'),'as':_0x9133('0x172')});db['FaxInteraction'][_0x9133('0x120')](db[_0x9133('0x10a')],{'as':_0x9133('0x181'),'through':_0x9133('0x12c'),'foreignKey':_0x9133('0x17f')});db['FaxMessage'][_0x9133('0x11f')](db['User'],{'onDelete':_0x9133('0x10c'),'as':'User'});db[_0x9133('0x50')][_0x9133('0x11f')](db[_0x9133('0x4f')],{'as':_0x9133('0x174'),'foreignKey':_0x9133('0x17f')});db['FaxMessage']['belongsTo'](db[_0x9133('0x71')],{'onDelete':_0x9133('0x10c'),'as':'Contact'});db[_0x9133('0x50')]['belongsTo'](db[_0x9133('0xe7')],{'as':_0x9133('0xe7'),'foreignKey':_0x9133('0x182')});db['FaxMessage'][_0x9133('0x11f')](db['FaxAccount'],{'as':_0x9133('0x16e'),'foreignKey':_0x9133('0x17c')});db['FaxQueue'][_0x9133('0x120')](db[_0x9133('0x10a')],{'as':_0x9133('0x157'),'through':_0x9133('0x31')});db[_0x9133('0x136')]['belongsToMany'](db[_0x9133('0x128')],{'through':_0x9133('0x183'),'as':_0x9133('0x158')});db[_0x9133('0x51')][_0x9133('0x11f')](db['FaxAccount'],{});db['FaxQueueReport'][_0x9133('0x11f')](db[_0x9133('0xf3')],{'as':_0x9133('0x168'),'foreignKey':_0x9133('0x169')});db[_0x9133('0x51')][_0x9133('0x11f')](db[_0x9133('0x71')],{'as':_0x9133('0x161'),'foreignKey':_0x9133('0x162')});db['FaxQueueReport'][_0x9133('0x11f')](db[_0x9133('0x4f')],{});db['FaxQueueReport']['belongsTo'](db[_0x9133('0x50')],{});db['FaxQueueReport'][_0x9133('0x11f')](db[_0x9133('0x10a')],{});db['FaxQueueReport']['belongsTo'](db['FaxQueue'],{});db[_0x9133('0x53')]['hasMany'](db[_0x9133('0x184')],{'as':'Dispositions','foreignKey':_0x9133('0x185'),'onDelete':_0x9133('0x10c')});db[_0x9133('0x53')][_0x9133('0x10e')](db['CannedAnswer'],{'as':'Answers','foreignKey':_0x9133('0x185')});db[_0x9133('0x53')][_0x9133('0x10e')](db['SmsMessage'],{'as':_0x9133('0x15b'),'foreignKey':_0x9133('0x185')});db['SmsAccount'][_0x9133('0x10e')](db[_0x9133('0x119')],{'as':_0x9133('0x17d')});db[_0x9133('0x53')][_0x9133('0x10e')](db[_0x9133('0x55')],{'as':_0x9133('0x149')});db[_0x9133('0x53')][_0x9133('0x11f')](db[_0x9133('0xf3')],{'as':_0x9133('0x168'),'foreignKey':_0x9133('0x169')});db[_0x9133('0x53')][_0x9133('0x11f')](db[_0x9133('0x83')],{'as':_0x9133('0x156'),'foreignKey':_0x9133('0x16b')});db['SmsAccount'][_0x9133('0x120')](db[_0x9133('0x10a')],{'as':'Agents','through':_0x9133('0x141')});db['SmsApplication'][_0x9133('0x11f')](db['User'],{'onDelete':'restrict'});db['SmsApplication'][_0x9133('0x11f')](db[_0x9133('0x5a')],{'onDelete':_0x9133('0x179')});db[_0x9133('0x55')][_0x9133('0x11f')](db[_0x9133('0x53')],{'onDelete':_0x9133('0x179')});db[_0x9133('0x55')][_0x9133('0x11f')](db['Interval'],{'onDelete':_0x9133('0x179'),'foreignKey':'IntervalId'});db['SmsApplication'][_0x9133('0x11f')](db['Tag'],{'onDelete':'restrict','foreignKey':_0x9133('0x17a')});db[_0x9133('0x119')][_0x9133('0x10e')](db[_0x9133('0x58')],{'as':_0x9133('0x15b'),'onDelete':'cascade','foreignKey':'SmsInteractionId'});db[_0x9133('0x119')][_0x9133('0x11f')](db[_0x9133('0x53')],{'as':_0x9133('0x16e'),'foreignKey':_0x9133('0x185')});db[_0x9133('0x119')][_0x9133('0x11f')](db[_0x9133('0x71')],{'as':_0x9133('0x161'),'foreignKey':_0x9133('0x162')});db[_0x9133('0x119')]['belongsTo'](db[_0x9133('0x10a')],{'as':_0x9133('0x16f'),'foreignKey':_0x9133('0x10d')});db[_0x9133('0x119')]['belongsToMany'](db[_0x9133('0x8c')],{'through':_0x9133('0x186'),'as':_0x9133('0x171')});db['SmsInteraction'][_0x9133('0x120')](db[_0x9133('0x8c')],{'through':_0x9133('0x186'),'as':_0x9133('0x172')});db[_0x9133('0x119')][_0x9133('0x120')](db[_0x9133('0x10a')],{'as':_0x9133('0x181'),'through':_0x9133('0x187'),'foreignKey':'SmsInteractionId'});db[_0x9133('0x58')][_0x9133('0x11f')](db[_0x9133('0x10a')],{'as':'User'});db[_0x9133('0x58')][_0x9133('0x11f')](db['CmContact'],{'onDelete':_0x9133('0x10c'),'as':'Contact'});db[_0x9133('0x58')][_0x9133('0x11f')](db['SmsInteraction'],{'onDelete':_0x9133('0x10c'),'as':_0x9133('0x174'),'foreignKey':_0x9133('0x188')});db['SmsMessage'][_0x9133('0x11f')](db['SmsAccount'],{'as':'Account','foreignKey':_0x9133('0x185')});db[_0x9133('0x5a')][_0x9133('0x120')](db['User'],{'as':_0x9133('0x157'),'through':_0x9133('0x32'),'foreignKey':_0x9133('0x189')});db[_0x9133('0x5a')][_0x9133('0x120')](db['Team'],{'through':_0x9133('0x18a'),'as':_0x9133('0x158')});db[_0x9133('0x5c')][_0x9133('0x10e')](db[_0x9133('0x184')],{'as':_0x9133('0x166'),'foreignKey':_0x9133('0x18b'),'onDelete':_0x9133('0x10c')});db[_0x9133('0x5c')][_0x9133('0x10e')](db[_0x9133('0x7d')],{'as':_0x9133('0x167'),'foreignKey':'OpenchannelAccountId'});db[_0x9133('0x5c')][_0x9133('0x10e')](db[_0x9133('0x5f')],{'as':_0x9133('0x17d'),'foreignKey':_0x9133('0x18b')});db['OpenchannelAccount'][_0x9133('0x10e')](db[_0x9133('0x61')],{'as':_0x9133('0x15b'),'foreignKey':_0x9133('0x18b')});db[_0x9133('0x5c')][_0x9133('0x10e')](db[_0x9133('0x5d')],{'as':_0x9133('0x149'),'foreignKey':_0x9133('0x18b')});db[_0x9133('0x5c')]['belongsTo'](db[_0x9133('0xf3')],{'as':_0x9133('0x168'),'foreignKey':'ListId'});db[_0x9133('0x5c')][_0x9133('0x11f')](db[_0x9133('0x83')],{'as':'mandatoryDispositionPause','foreignKey':_0x9133('0x16b')});db[_0x9133('0x5c')][_0x9133('0x120')](db[_0x9133('0x10a')],{'as':'Agents','through':_0x9133('0x140')});db[_0x9133('0x5d')][_0x9133('0x11f')](db[_0x9133('0x10a')],{'onDelete':_0x9133('0x179')});db['OpenchannelApplication'][_0x9133('0x11f')](db[_0x9133('0x63')],{'onDelete':_0x9133('0x179'),'foreignKey':_0x9133('0x18c')});db['OpenchannelApplication'][_0x9133('0x11f')](db[_0x9133('0x5c')],{'onDelete':'restrict','foreignKey':'OpenchannelAccountId'});db[_0x9133('0x5d')][_0x9133('0x11f')](db[_0x9133('0x82')],{'onDelete':_0x9133('0x179'),'foreignKey':_0x9133('0x155')});db['OpenchannelApplication'][_0x9133('0x11f')](db[_0x9133('0x8c')],{'onDelete':_0x9133('0x179'),'foreignKey':'TagId'});db['OpenchannelInteraction'][_0x9133('0x10e')](db['OpenchannelMessage'],{'as':_0x9133('0x15b'),'onDelete':_0x9133('0x10c'),'foreignKey':_0x9133('0x18d')});db[_0x9133('0x5f')][_0x9133('0x11f')](db[_0x9133('0x5c')],{'as':'Account','foreignKey':_0x9133('0x18b')});db[_0x9133('0x5f')][_0x9133('0x11f')](db['CmContact'],{'as':_0x9133('0x161'),'foreignKey':_0x9133('0x162')});db[_0x9133('0x5f')]['belongsTo'](db[_0x9133('0x10a')],{'as':'Owner','foreignKey':_0x9133('0x10d')});db[_0x9133('0x5f')][_0x9133('0x120')](db[_0x9133('0x8c')],{'through':_0x9133('0x18e'),'as':_0x9133('0x171')});db[_0x9133('0x5f')][_0x9133('0x120')](db[_0x9133('0x8c')],{'through':'openchannel_interaction_has_tags','as':'ThroughTags'});db[_0x9133('0x5f')][_0x9133('0x120')](db[_0x9133('0x10a')],{'as':'Users','through':_0x9133('0x18f'),'foreignKey':'OpenchannelInteractionId'});db[_0x9133('0x61')][_0x9133('0x11f')](db[_0x9133('0x10a')],{'onDelete':_0x9133('0x10c'),'as':'User'});db[_0x9133('0x61')]['belongsTo'](db[_0x9133('0x71')],{'onDelete':_0x9133('0x10c'),'as':_0x9133('0x161')});db[_0x9133('0x61')]['belongsTo'](db[_0x9133('0x5f')],{'onDelete':'cascade','as':_0x9133('0x174'),'foreignKey':_0x9133('0x18d')});db[_0x9133('0x61')][_0x9133('0x11f')](db[_0x9133('0xe7')],{'as':_0x9133('0xe7'),'foreignKey':_0x9133('0x182')});db[_0x9133('0x61')][_0x9133('0x11f')](db[_0x9133('0x5c')],{'as':'Account','foreignKey':_0x9133('0x18b')});db['OpenchannelQueue'][_0x9133('0x120')](db[_0x9133('0x10a')],{'as':'Agents','through':_0x9133('0x34'),'foreignKey':_0x9133('0x18c')});db[_0x9133('0x63')][_0x9133('0x120')](db['Team'],{'through':_0x9133('0x190'),'as':_0x9133('0x158')});db[_0x9133('0x175')][_0x9133('0x10e')](db[_0x9133('0x184')],{'as':_0x9133('0x166'),'foreignKey':_0x9133('0x176'),'onDelete':_0x9133('0x10c')});db['ChatWebsite'][_0x9133('0x10e')](db[_0x9133('0x7d')],{'as':_0x9133('0x167'),'foreignKey':_0x9133('0x176')});db[_0x9133('0x175')][_0x9133('0x10e')](db[_0x9133('0x6e')],{'as':_0x9133('0x191')});db[_0x9133('0x175')][_0x9133('0x10e')](db[_0x9133('0x117')],{'as':'Interactions'});db['ChatWebsite'][_0x9133('0x10e')](db[_0x9133('0x68')],{'as':_0x9133('0x149')});db[_0x9133('0x175')][_0x9133('0x10e')](db[_0x9133('0x192')],{'as':_0x9133('0x15b')});db[_0x9133('0x175')][_0x9133('0x11f')](db[_0x9133('0xf3')],{'as':_0x9133('0x168'),'foreignKey':'ListId'});db[_0x9133('0x175')][_0x9133('0x11f')](db['Interval'],{'as':'Interval','foreignKey':_0x9133('0x155')});db[_0x9133('0x175')][_0x9133('0x11f')](db[_0x9133('0x3c')],{'as':_0x9133('0x3c'),'foreignKey':_0x9133('0x163')});db['ChatWebsite']['belongsTo'](db['Pause'],{'as':_0x9133('0x156'),'foreignKey':_0x9133('0x16b')});db[_0x9133('0x175')]['belongsToMany'](db[_0x9133('0x10a')],{'as':_0x9133('0x157'),'through':_0x9133('0x13b')});db['OpenchannelQueueReport'][_0x9133('0x11f')](db[_0x9133('0x5c')],{});db['OpenchannelQueueReport'][_0x9133('0x11f')](db[_0x9133('0xf3')],{'as':_0x9133('0x168'),'foreignKey':_0x9133('0x169')});db[_0x9133('0x66')]['belongsTo'](db[_0x9133('0x71')],{'as':_0x9133('0x161'),'foreignKey':_0x9133('0x162')});db[_0x9133('0x66')]['belongsTo'](db[_0x9133('0x5f')],{});db[_0x9133('0x66')]['belongsTo'](db['OpenchannelMessage'],{});db[_0x9133('0x66')][_0x9133('0x11f')](db[_0x9133('0x10a')],{});db['OpenchannelQueueReport'][_0x9133('0x11f')](db[_0x9133('0x63')],{});db[_0x9133('0x68')][_0x9133('0x11f')](db[_0x9133('0x10a')],{'as':_0x9133('0x193'),'foreignKey':_0x9133('0x10d'),'onDelete':_0x9133('0x179')});db[_0x9133('0x68')][_0x9133('0x11f')](db[_0x9133('0x6b')],{'as':_0x9133('0x194'),'foreignKey':_0x9133('0x195'),'onDelete':_0x9133('0x179')});db[_0x9133('0x68')]['belongsTo'](db[_0x9133('0x175')],{'as':_0x9133('0x196'),'foreignKey':_0x9133('0x176'),'onDelete':_0x9133('0x179')});db['ChatApplication'][_0x9133('0x11f')](db[_0x9133('0x8c')],{'onDelete':'restrict','foreignKey':_0x9133('0x17a')});db[_0x9133('0x117')]['hasMany'](db[_0x9133('0x192')],{'as':_0x9133('0x15b'),'onDelete':_0x9133('0x10c'),'foreignKey':_0x9133('0x197')});db[_0x9133('0x117')]['belongsTo'](db['ChatWebsite'],{'as':_0x9133('0x16e'),'foreignKey':'ChatWebsiteId'});db[_0x9133('0x117')][_0x9133('0x11f')](db[_0x9133('0x71')],{'as':_0x9133('0x161'),'foreignKey':_0x9133('0x162')});db[_0x9133('0x117')][_0x9133('0x11f')](db[_0x9133('0x10a')],{'as':_0x9133('0x16f'),'foreignKey':_0x9133('0x10d')});db[_0x9133('0x117')]['belongsToMany'](db['Tag'],{'through':_0x9133('0x198'),'as':_0x9133('0x171')});db[_0x9133('0x117')][_0x9133('0x120')](db['Tag'],{'through':_0x9133('0x198'),'as':_0x9133('0x172')});db[_0x9133('0x117')][_0x9133('0x120')](db[_0x9133('0x10a')],{'as':_0x9133('0x181'),'through':_0x9133('0x12a'),'foreignKey':_0x9133('0x197')});db[_0x9133('0x192')][_0x9133('0x11f')](db['User'],{'onDelete':_0x9133('0x10c'),'as':_0x9133('0x10a')});db[_0x9133('0x192')][_0x9133('0x11f')](db[_0x9133('0x71')],{'onDelete':_0x9133('0x10c'),'as':_0x9133('0x161'),'foreignKey':'ContactId'});db[_0x9133('0x192')]['belongsTo'](db['ChatInteraction'],{'onDelete':'cascade','as':_0x9133('0x174'),'foreignKey':_0x9133('0x197')});db[_0x9133('0x192')][_0x9133('0x11f')](db['Attachment'],{'as':_0x9133('0xe7'),'foreignKey':_0x9133('0x182')});db['ChatMessage'][_0x9133('0x11f')](db['ChatWebsite'],{'as':_0x9133('0x16e'),'foreignKey':'ChatWebsiteId'});db[_0x9133('0x177')]['hasMany'](db[_0x9133('0xe7')],{'as':_0x9133('0x173'),'foreignKey':'ChatOfflineMessageId','onDelete':'cascade','hooks':!![]});db[_0x9133('0x177')][_0x9133('0x11f')](db[_0x9133('0x71')],{'onDelete':'cascade','as':_0x9133('0x161'),'foreignKey':_0x9133('0x162')});db[_0x9133('0x177')][_0x9133('0x11f')](db[_0x9133('0x175')],{'as':'Account','foreignKey':_0x9133('0x176')});db[_0x9133('0x6b')][_0x9133('0x120')](db['User'],{'as':_0x9133('0x157'),'through':'UserChatQueue','hooks':!![]});db['ChatQueue'][_0x9133('0x120')](db['Team'],{'through':_0x9133('0x199'),'as':'Teams'});db[_0x9133('0x121')][_0x9133('0x10e')](db[_0x9133('0x19a')],{'as':_0x9133('0x15b'),'foreignKey':_0x9133('0x19b'),'onDelete':_0x9133('0x10c')});db[_0x9133('0x121')]['belongsToMany'](db[_0x9133('0x10a')],{'as':_0x9133('0x14b'),'through':_0x9133('0x123')});db['ChatProactiveAction'][_0x9133('0x11f')](db[_0x9133('0x175')],{'as':'Website','foreignKey':'ChatWebsiteId'});db['CmCompany'][_0x9133('0x10e')](db[_0x9133('0x71')],{'as':_0x9133('0x124'),'foreignKey':_0x9133('0x19c')});db['CmContact'][_0x9133('0x10e')](db[_0x9133('0x72')],{'as':_0x9133('0x14d'),'foreignKey':_0x9133('0x162')});db['CmContact'][_0x9133('0x10e')](db['CmHopperFinal'],{'as':_0x9133('0x113'),'foreignKey':'ContactId'});db[_0x9133('0x71')][_0x9133('0x10e')](db[_0x9133('0x114')],{'as':_0x9133('0x14f'),'foreignKey':_0x9133('0x162')});db['CmContact'][_0x9133('0x10e')](db[_0x9133('0x116')],{'as':_0x9133('0x116'),'foreignKey':'ContactId'});db['CmContact']['hasMany'](db[_0x9133('0xd2')],{'as':_0x9133('0x151'),'foreignKey':'ContactId'});db[_0x9133('0x71')][_0x9133('0x10e')](db[_0x9133('0x5f')],{'as':_0x9133('0x12d'),'foreignKey':_0x9133('0x162'),'onDelete':_0x9133('0x179')});db[_0x9133('0x71')][_0x9133('0x10e')](db[_0x9133('0x117')],{'as':'ChatInteractions','foreignKey':_0x9133('0x162'),'onDelete':_0x9133('0x179')});db[_0x9133('0x71')][_0x9133('0x10e')](db['SmsInteraction'],{'as':_0x9133('0x11a'),'foreignKey':'ContactId','onDelete':'restrict'});db[_0x9133('0x71')]['hasMany'](db[_0x9133('0x4f')],{'as':_0x9133('0x12b'),'foreignKey':_0x9133('0x162'),'onDelete':_0x9133('0x179')});db['CmContact']['hasMany'](db[_0x9133('0x41')],{'as':_0x9133('0x11b'),'foreignKey':'ContactId','onDelete':_0x9133('0x179')});db[_0x9133('0x71')][_0x9133('0x11f')](db[_0x9133('0x70')],{'as':_0x9133('0x19d'),'foreignKey':_0x9133('0x19c')});db[_0x9133('0x71')][_0x9133('0x11f')](db[_0x9133('0xf3')],{'as':_0x9133('0x168'),'foreignKey':_0x9133('0x169'),'onDelete':_0x9133('0x10c')});db[_0x9133('0x71')][_0x9133('0x120')](db[_0x9133('0x10a')],{'as':'Users','through':_0x9133('0x125')});db['CmContact'][_0x9133('0x120')](db['Tag'],{'as':_0x9133('0x171'),'through':'cm_contact_has_tags'});db[_0x9133('0x71')][_0x9133('0x120')](db[_0x9133('0x8c')],{'through':'cm_contact_has_tags','as':'ThroughTags'});db[_0x9133('0x72')][_0x9133('0x11f')](db['CmContact'],{'as':'Contact','foreignKey':_0x9133('0x162'),'onDelete':_0x9133('0x10c')});db[_0x9133('0x72')][_0x9133('0x11f')](db[_0x9133('0xf3')],{'as':_0x9133('0x168'),'foreignKey':_0x9133('0x169'),'onDelete':_0x9133('0x10c')});db[_0x9133('0x72')][_0x9133('0x11f')](db[_0x9133('0x10a')],{'as':_0x9133('0x193'),'foreignKey':_0x9133('0x10d')});db[_0x9133('0x72')][_0x9133('0x11f')](db[_0x9133('0x12f')],{'as':_0x9133('0x194'),'foreignKey':'VoiceQueueId','onDelete':'cascade'});db[_0x9133('0x72')][_0x9133('0x11f')](db[_0x9133('0x19e')],{'as':_0x9133('0x19e'),'foreignKey':_0x9133('0x19f'),'onDelete':'cascade'});db[_0x9133('0x72')][_0x9133('0x11f')](db[_0x9133('0x10a')],{'as':'Owner','foreignKey':_0x9133('0x1a0')});db[_0x9133('0x74')][_0x9133('0x11f')](db['CmContact'],{'as':_0x9133('0x161'),'foreignKey':'ContactId','onDelete':_0x9133('0x10c')});db[_0x9133('0x74')][_0x9133('0x11f')](db[_0x9133('0xf3')],{'as':_0x9133('0x168'),'foreignKey':_0x9133('0x169'),'onDelete':_0x9133('0x10c')});db[_0x9133('0x74')]['belongsTo'](db[_0x9133('0x12f')],{'as':_0x9133('0x194'),'foreignKey':_0x9133('0x14c'),'onDelete':_0x9133('0x10c')});db[_0x9133('0x74')][_0x9133('0x11f')](db['Campaign'],{'as':_0x9133('0x19e'),'foreignKey':_0x9133('0x19f'),'onDelete':'cascade'});db[_0x9133('0x1a1')][_0x9133('0x10e')](db[_0x9133('0x80')],{'as':{'plural':_0x9133('0x1a2'),'singular':_0x9133('0x1a3')},'foreignKey':'AutomationAllId','onDelete':_0x9133('0x10c'),'hooks':!![]});db[_0x9133('0x1a1')][_0x9133('0x10e')](db[_0x9133('0x80')],{'as':{'plural':'Any','singular':'OneAny'},'foreignKey':_0x9133('0x1a4'),'onDelete':_0x9133('0x10c'),'hooks':!![]});db[_0x9133('0x1a1')]['hasMany'](db[_0x9133('0x7a')],{'as':_0x9133('0x1a5'),'foreignKey':_0x9133('0x1a6'),'onDelete':_0x9133('0x10c'),'hooks':!![]});db['Disposition'][_0x9133('0x10e')](db[_0x9133('0x184')],{'as':'Dispositions','foreignKey':_0x9133('0x1a7'),'onDelete':_0x9133('0x10c')});db[_0x9133('0x82')][_0x9133('0x10e')](db[_0x9133('0x82')],{'as':_0x9133('0x1a8'),'foreignKey':_0x9133('0x155'),'onDelete':_0x9133('0x10c'),'hooks':!![],'required':![]});db[_0x9133('0x82')]['hasMany'](db[_0x9133('0x111')],{'as':_0x9133('0x112'),'foreignKey':_0x9133('0x155'),'onDelete':'restrict'});db[_0x9133('0x82')]['hasMany'](db['MailApplication'],{'as':_0x9133('0x1a9'),'foreignKey':_0x9133('0x155')});db[_0x9133('0x82')][_0x9133('0x10e')](db[_0x9133('0x68')],{'as':_0x9133('0x1aa'),'foreignKey':_0x9133('0x155')});db['Interval'][_0x9133('0x10e')](db['FaxApplication'],{'as':'FaxApplications','foreignKey':_0x9133('0x155')});db['Interval'][_0x9133('0x10e')](db['SmsApplication'],{'as':_0x9133('0x1ab'),'foreignKey':_0x9133('0x155')});db['Schedule']['belongsTo'](db[_0x9133('0x3c')],{});db[_0x9133('0x88')][_0x9133('0x11f')](db[_0x9133('0x1ac')],{'foreignKey':'DefaultReportId'});db['Schedule'][_0x9133('0x11f')](db[_0x9133('0x96')],{'foreignKey':_0x9133('0x1ad')});db[_0x9133('0x8a')][_0x9133('0x120')](db[_0x9133('0x17')],{'as':_0x9133('0x1ae'),'through':_0x9133('0x14a'),'onDelete':_0x9133('0x179')});db[_0x9133('0x8c')]['belongsToMany'](db[_0x9133('0x71')],{'through':_0x9133('0x1af')});db[_0x9133('0x8c')][_0x9133('0x120')](db[_0x9133('0x117')],{'through':_0x9133('0x198')});db['Tag'][_0x9133('0x120')](db[_0x9133('0x41')],{'through':_0x9133('0x170')});db[_0x9133('0x8c')]['belongsToMany'](db['SmsInteraction'],{'through':_0x9133('0x186')});db[_0x9133('0x8c')][_0x9133('0x120')](db[_0x9133('0x4f')],{'through':_0x9133('0x180')});db[_0x9133('0x8c')]['belongsToMany'](db[_0x9133('0x5f')],{'through':_0x9133('0x18e')});db[_0x9133('0x8c')]['belongsToMany'](db['WhatsappInteraction'],{'through':_0x9133('0x1b0')});db[_0x9133('0x1b1')]['hasMany'](db[_0x9133('0x80')],{'as':{'plural':_0x9133('0x1b2'),'singular':_0x9133('0x1b3')},'foreignKey':_0x9133('0x1b4'),'onDelete':_0x9133('0x10c'),'hooks':!![]});db[_0x9133('0x1b1')]['hasMany'](db[_0x9133('0x80')],{'as':{'plural':_0x9133('0x1b5'),'singular':'AnyCondition'},'foreignKey':'TriggerAnyId','onDelete':_0x9133('0x10c'),'hooks':!![]});db[_0x9133('0x1b1')]['hasMany'](db[_0x9133('0x7a')],{'as':_0x9133('0x1a5'),'foreignKey':'TriggerId','onDelete':'cascade','hooks':!![]});db[_0x9133('0x96')][_0x9133('0x10e')](db[_0x9133('0x9c')],{'as':'Fields','onDelete':'cascade','foreignKey':'CustomReportId','hooks':!![]});db[_0x9133('0x1ac')][_0x9133('0x10e')](db['AnalyticFieldReport'],{'as':_0x9133('0x1b6'),'onDelete':_0x9133('0x10c'),'foreignKey':'DefaultReportId'});db[_0x9133('0x9b')][_0x9133('0x10e')](db['AnalyticFieldReport'],{'as':'Fields','onDelete':_0x9133('0x10c'),'foreignKey':_0x9133('0x1b7')});db['AnalyticFieldReport'][_0x9133('0x11f')](db['AnalyticMetric'],{'foreignKey':_0x9133('0x1b7')});db[_0x9133('0xa0')][_0x9133('0x10e')](db[_0x9133('0xa1')],{'as':_0x9133('0x1b8'),'onDelete':_0x9133('0x10c'),'foreignKey':_0x9133('0x1b9')});db[_0x9133('0xa1')][_0x9133('0x10e')](db['SalesforceField'],{'as':_0x9133('0x1ba'),'onDelete':_0x9133('0x10c'),'foreignKey':_0x9133('0x1bb')});db[_0x9133('0xa1')]['hasMany'](db['SalesforceField'],{'as':_0x9133('0x1bc'),'onDelete':_0x9133('0x10c'),'foreignKey':_0x9133('0x1bd')});db[_0x9133('0xa1')][_0x9133('0x10e')](db[_0x9133('0x1be')],{'as':_0x9133('0x1b6'),'onDelete':_0x9133('0x10c'),'foreignKey':_0x9133('0x1bf')});db[_0x9133('0xa1')][_0x9133('0x11f')](db[_0x9133('0xa0')],{'as':_0x9133('0x16e'),'foreignKey':_0x9133('0x1b9')});db[_0x9133('0x1be')][_0x9133('0x10e')](db[_0x9133('0x1be')],{'as':_0x9133('0x1c0'),'foreignKey':'SubjectId'});db[_0x9133('0x1be')][_0x9133('0x10e')](db['SalesforceField'],{'as':'Description','foreignKey':_0x9133('0x1bd')});db['SalesforceField'][_0x9133('0x10e')](db[_0x9133('0x1be')],{'as':_0x9133('0x1c1'),'foreignKey':_0x9133('0x1bf')});db[_0x9133('0x1be')][_0x9133('0x11f')](db[_0x9133('0x91')],{'as':_0x9133('0x91'),'foreignKey':_0x9133('0x1c2')});db[_0x9133('0xa4')][_0x9133('0x10e')](db['SugarcrmConfiguration'],{'as':_0x9133('0x1b8'),'onDelete':_0x9133('0x10c'),'foreignKey':_0x9133('0x1b9')});db[_0x9133('0xa6')][_0x9133('0x10e')](db['SugarcrmField'],{'as':_0x9133('0x1ba'),'onDelete':_0x9133('0x10c'),'foreignKey':_0x9133('0x1bb')});db[_0x9133('0xa6')][_0x9133('0x10e')](db['SugarcrmField'],{'as':'Descriptions','onDelete':'cascade','foreignKey':_0x9133('0x1bd')});db[_0x9133('0xa6')]['hasMany'](db[_0x9133('0xa8')],{'as':_0x9133('0x1b6'),'onDelete':_0x9133('0x10c'),'foreignKey':_0x9133('0x1bf')});db['SugarcrmConfiguration'][_0x9133('0x11f')](db['SugarcrmAccount'],{'as':_0x9133('0x16e'),'foreignKey':_0x9133('0x1b9')});db['SugarcrmField'][_0x9133('0x10e')](db[_0x9133('0xa8')],{'as':_0x9133('0x1c0'),'foreignKey':'SubjectId'});db['SugarcrmField']['hasMany'](db[_0x9133('0xa8')],{'as':_0x9133('0x1c3'),'foreignKey':_0x9133('0x1bd')});db['SugarcrmField'][_0x9133('0x10e')](db[_0x9133('0xa8')],{'as':_0x9133('0x1c1'),'foreignKey':_0x9133('0x1bf')});db[_0x9133('0xa8')]['belongsTo'](db[_0x9133('0x91')],{'as':'Variable','foreignKey':_0x9133('0x1c2')});db[_0x9133('0xaa')][_0x9133('0x10e')](db[_0x9133('0xab')],{'as':'Configurations','onDelete':_0x9133('0x10c'),'foreignKey':_0x9133('0x1b9')});db['DeskConfiguration'][_0x9133('0x10e')](db[_0x9133('0xac')],{'as':'Subjects','onDelete':_0x9133('0x10c'),'foreignKey':'SubjectId'});db[_0x9133('0xab')]['hasMany'](db[_0x9133('0xac')],{'as':_0x9133('0x1bc'),'onDelete':'cascade','foreignKey':'DescriptionId'});db[_0x9133('0xab')][_0x9133('0x10e')](db[_0x9133('0xac')],{'as':_0x9133('0x1b6'),'onDelete':_0x9133('0x10c'),'foreignKey':'FieldId'});db[_0x9133('0xab')]['belongsTo'](db[_0x9133('0xaa')],{'as':_0x9133('0x16e'),'foreignKey':_0x9133('0x1b9')});db['DeskConfiguration'][_0x9133('0x120')](db[_0x9133('0x8c')],{'through':_0x9133('0x1c4')});db['DeskField']['hasMany'](db[_0x9133('0xac')],{'as':_0x9133('0x1c0'),'foreignKey':'SubjectId'});db['DeskField'][_0x9133('0x10e')](db[_0x9133('0xac')],{'as':_0x9133('0x1c3'),'foreignKey':_0x9133('0x1bd')});db[_0x9133('0xac')][_0x9133('0x10e')](db[_0x9133('0xac')],{'as':_0x9133('0x1c1'),'foreignKey':'FieldId'});db[_0x9133('0xac')][_0x9133('0x11f')](db['Variable'],{'as':_0x9133('0x91'),'foreignKey':_0x9133('0x1c2')});db[_0x9133('0xae')]['hasMany'](db[_0x9133('0xb0')],{'as':_0x9133('0x1b8'),'onDelete':_0x9133('0x10c'),'foreignKey':_0x9133('0x1b9')});db['ZohoConfiguration']['hasMany'](db['ZohoField'],{'as':_0x9133('0x1ba'),'onDelete':_0x9133('0x10c'),'foreignKey':_0x9133('0x1bb')});db['ZohoConfiguration'][_0x9133('0x10e')](db[_0x9133('0xb2')],{'as':_0x9133('0x1bc'),'onDelete':_0x9133('0x10c'),'foreignKey':_0x9133('0x1bd')});db['ZohoConfiguration'][_0x9133('0x10e')](db[_0x9133('0xb2')],{'as':_0x9133('0x1b6'),'onDelete':_0x9133('0x10c'),'foreignKey':'FieldId'});db['ZohoConfiguration'][_0x9133('0x11f')](db[_0x9133('0xae')],{'as':_0x9133('0x16e'),'foreignKey':'AccountId'});db['ZohoField'][_0x9133('0x10e')](db[_0x9133('0xb2')],{'as':_0x9133('0x1c0'),'foreignKey':_0x9133('0x1bb')});db[_0x9133('0xb2')][_0x9133('0x10e')](db[_0x9133('0xb2')],{'as':'Description','foreignKey':_0x9133('0x1bd')});db[_0x9133('0xb2')][_0x9133('0x10e')](db[_0x9133('0xb2')],{'as':_0x9133('0x1c1'),'foreignKey':_0x9133('0x1bf')});db[_0x9133('0xb2')][_0x9133('0x11f')](db[_0x9133('0x91')],{'as':_0x9133('0x91'),'foreignKey':'VariableId'});db[_0x9133('0x1c5')]['hasMany'](db['ZendeskConfiguration'],{'as':_0x9133('0x1b8'),'onDelete':'cascade','foreignKey':_0x9133('0x1b9')});db[_0x9133('0xb5')][_0x9133('0x10e')](db[_0x9133('0xb6')],{'as':_0x9133('0x1ba'),'foreignKey':_0x9133('0x1bb')});db[_0x9133('0xb5')]['hasMany'](db['ZendeskField'],{'as':'Descriptions','foreignKey':_0x9133('0x1bd')});db[_0x9133('0xb5')]['hasMany'](db['ZendeskField'],{'as':_0x9133('0x1b6'),'foreignKey':_0x9133('0x1bf')});db[_0x9133('0xb5')][_0x9133('0x11f')](db[_0x9133('0x1c5')],{'as':'Account','foreignKey':_0x9133('0x1b9')});db['ZendeskConfiguration'][_0x9133('0x120')](db['Tag'],{'through':_0x9133('0x1c6')});db[_0x9133('0xb6')][_0x9133('0x10e')](db['ZendeskField'],{'as':_0x9133('0x1c0'),'foreignKey':_0x9133('0x1bb')});db[_0x9133('0xb6')][_0x9133('0x10e')](db[_0x9133('0xb6')],{'as':_0x9133('0x1c3'),'foreignKey':_0x9133('0x1bd')});db[_0x9133('0xb6')][_0x9133('0x10e')](db[_0x9133('0xb6')],{'as':_0x9133('0x1c1'),'foreignKey':_0x9133('0x1bf')});db[_0x9133('0xb6')]['belongsTo'](db['Variable'],{'as':'Variable','foreignKey':_0x9133('0x1c2')});db[_0x9133('0x1c7')]['hasMany'](db[_0x9133('0xb9')],{'as':_0x9133('0x1b8'),'onDelete':_0x9133('0x10c'),'foreignKey':_0x9133('0x1b9')});db[_0x9133('0xb9')][_0x9133('0x10e')](db[_0x9133('0x1c8')],{'as':_0x9133('0x1ba'),'onDelete':_0x9133('0x10c'),'foreignKey':_0x9133('0x1bb')});db[_0x9133('0xb9')][_0x9133('0x10e')](db[_0x9133('0x1c8')],{'as':_0x9133('0x1bc'),'onDelete':_0x9133('0x10c'),'foreignKey':_0x9133('0x1bd')});db[_0x9133('0xb9')][_0x9133('0x10e')](db[_0x9133('0x1c8')],{'as':_0x9133('0x1b6'),'onDelete':_0x9133('0x10c'),'foreignKey':_0x9133('0x1bf')});db[_0x9133('0xb9')][_0x9133('0x11f')](db[_0x9133('0x1c7')],{'as':_0x9133('0x16e'),'foreignKey':'AccountId'});db[_0x9133('0xb9')]['belongsToMany'](db[_0x9133('0x8c')],{'through':'int_freshdesk_configuration_has_tags'});db[_0x9133('0x1c8')][_0x9133('0x10e')](db[_0x9133('0x1c8')],{'as':_0x9133('0x1c0'),'foreignKey':'SubjectId'});db[_0x9133('0x1c8')][_0x9133('0x10e')](db[_0x9133('0x1c8')],{'as':_0x9133('0x1c3'),'foreignKey':_0x9133('0x1bd')});db[_0x9133('0x1c8')][_0x9133('0x10e')](db[_0x9133('0x1c8')],{'as':_0x9133('0x1c1'),'foreignKey':_0x9133('0x1bf')});db[_0x9133('0x1c8')][_0x9133('0x11f')](db[_0x9133('0x91')],{'as':'Variable','foreignKey':'VariableId'});db[_0x9133('0xbb')]['hasMany'](db['VtigerConfiguration'],{'as':'Configurations','onDelete':_0x9133('0x10c'),'foreignKey':_0x9133('0x1b9')});db['VtigerConfiguration'][_0x9133('0x10e')](db[_0x9133('0xbe')],{'as':_0x9133('0x1ba'),'foreignKey':_0x9133('0x1bb')});db[_0x9133('0xbd')][_0x9133('0x10e')](db['VtigerField'],{'as':_0x9133('0x1bc'),'foreignKey':_0x9133('0x1bd')});db[_0x9133('0xbd')]['hasMany'](db[_0x9133('0xbe')],{'as':_0x9133('0x1b6'),'foreignKey':'FieldId'});db['VtigerConfiguration']['belongsTo'](db[_0x9133('0xbb')],{'as':'Account','foreignKey':_0x9133('0x1b9')});db[_0x9133('0xbe')][_0x9133('0x10e')](db[_0x9133('0xbe')],{'as':'Subject','foreignKey':'SubjectId'});db[_0x9133('0xbe')]['hasMany'](db[_0x9133('0xbe')],{'as':_0x9133('0x1c3'),'foreignKey':_0x9133('0x1bd')});db[_0x9133('0xbe')]['hasMany'](db[_0x9133('0xbe')],{'as':_0x9133('0x1c1'),'foreignKey':_0x9133('0x1bf')});db['VtigerField'][_0x9133('0x11f')](db['Variable'],{'as':_0x9133('0x91'),'foreignKey':'VariableId'});db[_0x9133('0xc0')]['hasMany'](db[_0x9133('0xc1')],{'as':_0x9133('0x1b8'),'onDelete':'cascade','foreignKey':_0x9133('0x1b9')});db[_0x9133('0xc1')]['hasMany'](db[_0x9133('0xc2')],{'as':_0x9133('0x1ba'),'foreignKey':'SubjectId'});db[_0x9133('0xc1')][_0x9133('0x10e')](db['ServicenowField'],{'as':_0x9133('0x1bc'),'foreignKey':_0x9133('0x1bd')});db[_0x9133('0xc1')][_0x9133('0x10e')](db[_0x9133('0xc2')],{'as':'Fields','foreignKey':_0x9133('0x1bf')});db[_0x9133('0xc1')][_0x9133('0x11f')](db['ServicenowAccount'],{'as':'Account','foreignKey':_0x9133('0x1b9')});db[_0x9133('0xc2')][_0x9133('0x10e')](db[_0x9133('0xc2')],{'as':'Subject','foreignKey':_0x9133('0x1bb')});db[_0x9133('0xc2')][_0x9133('0x10e')](db[_0x9133('0xc2')],{'as':_0x9133('0x1c3'),'foreignKey':_0x9133('0x1bd')});db[_0x9133('0xc2')][_0x9133('0x10e')](db[_0x9133('0xc2')],{'as':_0x9133('0x1c1'),'foreignKey':'FieldId'});db['ServicenowField'][_0x9133('0x11f')](db[_0x9133('0x91')],{'as':_0x9133('0x91'),'foreignKey':_0x9133('0x1c2')});db[_0x9133('0xc4')][_0x9133('0x10e')](db[_0x9133('0x1c9')],{'as':_0x9133('0x1b8'),'onDelete':'cascade','foreignKey':_0x9133('0x1b9')});db[_0x9133('0x1c9')]['hasMany'](db[_0x9133('0xc7')],{'as':_0x9133('0x1ba'),'onDelete':_0x9133('0x10c'),'foreignKey':_0x9133('0x1bb')});db['Dynamics365Configuration']['hasMany'](db['Dynamics365Field'],{'as':_0x9133('0x1bc'),'onDelete':_0x9133('0x10c'),'foreignKey':_0x9133('0x1bd')});db['Dynamics365Configuration'][_0x9133('0x10e')](db[_0x9133('0xc7')],{'as':_0x9133('0x1b6'),'onDelete':'cascade','foreignKey':_0x9133('0x1bf')});db[_0x9133('0x1c9')]['belongsTo'](db[_0x9133('0xc4')],{'as':_0x9133('0x16e'),'foreignKey':_0x9133('0x1b9')});db[_0x9133('0xc7')][_0x9133('0x10e')](db['Dynamics365Field'],{'as':_0x9133('0x1c0'),'foreignKey':_0x9133('0x1bb')});db[_0x9133('0xc7')][_0x9133('0x10e')](db['Dynamics365Field'],{'as':'Description','foreignKey':_0x9133('0x1bd')});db[_0x9133('0xc7')]['hasMany'](db[_0x9133('0xc7')],{'as':_0x9133('0x1c1'),'foreignKey':_0x9133('0x1bf')});db[_0x9133('0xc7')][_0x9133('0x11f')](db[_0x9133('0x91')],{'as':_0x9133('0x91'),'foreignKey':'VariableId'});db[_0x9133('0x1ca')][_0x9133('0x10e')](db[_0x9133('0xc8')],{'as':_0x9133('0x1b8'),'onDelete':_0x9133('0x10c'),'foreignKey':_0x9133('0x1b9')});db[_0x9133('0xc8')][_0x9133('0x10e')](db[_0x9133('0x1cb')],{'as':_0x9133('0x1ba'),'foreignKey':'SubjectId'});db[_0x9133('0xc8')][_0x9133('0x10e')](db[_0x9133('0x1cb')],{'as':_0x9133('0x1bc'),'foreignKey':_0x9133('0x1bd')});db[_0x9133('0xc8')][_0x9133('0x10e')](db['FreshsalesField'],{'as':_0x9133('0x1b6'),'foreignKey':'FieldId'});db[_0x9133('0xc8')][_0x9133('0x11f')](db['FreshsalesAccount'],{'as':'Account','foreignKey':'AccountId'});db['FreshsalesField']['hasMany'](db['FreshsalesField'],{'as':_0x9133('0x1c0'),'foreignKey':_0x9133('0x1bb')});db['FreshsalesField'][_0x9133('0x10e')](db[_0x9133('0x1cb')],{'as':_0x9133('0x1c3'),'foreignKey':_0x9133('0x1bd')});db['FreshsalesField'][_0x9133('0x10e')](db['FreshsalesField'],{'as':'Field','foreignKey':_0x9133('0x1bf')});db[_0x9133('0x1cb')][_0x9133('0x11f')](db[_0x9133('0x91')],{'as':_0x9133('0x91'),'foreignKey':_0x9133('0x1c2')});db['ChatQueueReport']['belongsTo'](db['ChatWebsite'],{});db[_0x9133('0xcd')]['belongsTo'](db[_0x9133('0xf3')],{'as':_0x9133('0x168'),'foreignKey':_0x9133('0x169')});db[_0x9133('0xcd')]['belongsTo'](db[_0x9133('0x71')],{'as':'Contact','foreignKey':'ContactId'});db[_0x9133('0xcd')][_0x9133('0x11f')](db[_0x9133('0x117')],{});db[_0x9133('0xcd')]['belongsTo'](db[_0x9133('0x192')],{});db['ChatQueueReport']['belongsTo'](db[_0x9133('0x10a')],{});db[_0x9133('0xcd')][_0x9133('0x11f')](db[_0x9133('0x6b')],{});db[_0x9133('0x19a')][_0x9133('0x11f')](db['User'],{'onDelete':_0x9133('0x10c'),'foreignKey':_0x9133('0x1cc')});db['ChatInternalMessage'][_0x9133('0x11f')](db[_0x9133('0x10a')],{'onDelete':'cascade','foreignKey':'ToId'});db['JscriptySessionReport'][_0x9133('0x10e')](db[_0x9133('0xd0')],{'foreignKey':_0x9133('0x1cd'),'onDelete':_0x9133('0x10c')});db[_0x9133('0xd2')][_0x9133('0x10e')](db[_0x9133('0xce')],{'foreignKey':_0x9133('0x1cd'),'onDelete':_0x9133('0x10c')});db['SmsQueueReport'][_0x9133('0x11f')](db[_0x9133('0x53')],{});db[_0x9133('0xd3')]['belongsTo'](db[_0x9133('0xf3')],{'as':'List','foreignKey':_0x9133('0x169')});db[_0x9133('0xd3')][_0x9133('0x11f')](db[_0x9133('0x71')],{'as':_0x9133('0x161'),'foreignKey':_0x9133('0x162')});db[_0x9133('0xd3')]['belongsTo'](db[_0x9133('0x119')],{});db['SmsQueueReport']['belongsTo'](db[_0x9133('0x58')],{});db[_0x9133('0xd3')][_0x9133('0x11f')](db[_0x9133('0x10a')],{});db['SmsQueueReport'][_0x9133('0x11f')](db[_0x9133('0x5a')],{});db[_0x9133('0xd9')][_0x9133('0x10e')](db[_0x9133('0xd2')],{'foreignKey':_0x9133('0x1ce')});db['JscriptyProject'][_0x9133('0x10e')](db['JscriptyQuestionReport'],{'foreignKey':'ProjectId'});db[_0x9133('0xd9')][_0x9133('0x10e')](db[_0x9133('0xce')],{'foreignKey':_0x9133('0x1ce')});db[_0x9133('0xde')][_0x9133('0x120')](db[_0x9133('0x10a')],{'as':_0x9133('0x181'),'through':_0x9133('0x145')});db[_0x9133('0x128')]['belongsToMany'](db['User'],{'as':_0x9133('0x157'),'through':_0x9133('0x1cf')});db[_0x9133('0x128')]['belongsToMany'](db[_0x9133('0x12f')],{'through':_0x9133('0x107'),'as':_0x9133('0x130')});db[_0x9133('0x128')]['belongsToMany'](db[_0x9133('0x133')],{'through':_0x9133('0x16c'),'as':'MailQueues'});db[_0x9133('0x128')][_0x9133('0x120')](db['ChatQueue'],{'through':_0x9133('0x199'),'as':'ChatQueues'});db[_0x9133('0x128')][_0x9133('0x120')](db[_0x9133('0x136')],{'through':_0x9133('0x183'),'as':_0x9133('0x137')});db['Team']['belongsToMany'](db[_0x9133('0x5a')],{'through':_0x9133('0x18a'),'as':_0x9133('0x138')});db['Team'][_0x9133('0x120')](db[_0x9133('0x63')],{'through':_0x9133('0x190'),'as':_0x9133('0x1d0')});db[_0x9133('0x128')][_0x9133('0x120')](db[_0x9133('0x105')],{'through':_0x9133('0x1d1'),'as':_0x9133('0x139')});db[_0x9133('0x128')]['belongsToMany'](db['VoicePrefix'],{'through':_0x9133('0x1d2'),'as':_0x9133('0x131')});db[_0x9133('0x19e')][_0x9133('0x10e')](db['CmHopper'],{'as':_0x9133('0x14d'),'foreignKey':'CampaignId'});db[_0x9133('0x19e')]['hasMany'](db['CmHopperFinal'],{'as':_0x9133('0x113'),'foreignKey':_0x9133('0x19f')});db[_0x9133('0x19e')][_0x9133('0x10e')](db[_0x9133('0x114')],{'as':_0x9133('0x14f'),'foreignKey':_0x9133('0x19f')});db['Campaign'][_0x9133('0x10e')](db[_0x9133('0x74')],{'as':_0x9133('0x150'),'foreignKey':'CampaignId'});db[_0x9133('0x19e')][_0x9133('0x11f')](db[_0x9133('0x27')],{'as':_0x9133('0x27'),'foreignKey':'TrunkId'});db[_0x9133('0x19e')][_0x9133('0x11f')](db[_0x9133('0x27')],{'as':_0x9133('0x153'),'foreignKey':_0x9133('0x154')});db[_0x9133('0x19e')][_0x9133('0x11f')](db[_0x9133('0x82')],{'as':_0x9133('0x82'),'foreignKey':'IntervalId'});db[_0x9133('0x19e')][_0x9133('0x11f')](db[_0x9133('0xde')],{'as':'SquareProject','foreignKey':'SquareProjectId'});db[_0x9133('0x19e')][_0x9133('0x120')](db[_0x9133('0xf3')],{'as':_0x9133('0x126'),'through':_0x9133('0x1d3')});db[_0x9133('0x19e')][_0x9133('0x120')](db['CmList'],{'as':_0x9133('0x159'),'through':'campaigns_has_cm_blacklists'});db[_0x9133('0xe7')]['belongsTo'](db[_0x9133('0x177')],{'as':_0x9133('0x177'),'foreignKey':_0x9133('0x178')});db['MailTransferReport'][_0x9133('0x11f')](db['MailMessage'],{});db[_0x9133('0xea')]['belongsTo'](db['MailInteraction'],{});db['MailTransferReport'][_0x9133('0x11f')](db[_0x9133('0x3c')],{'foreignKey':_0x9133('0x1d4'),'as':'FromAccount'});db[_0x9133('0xea')][_0x9133('0x11f')](db[_0x9133('0x10a')],{'foreignKey':_0x9133('0x1d5'),'as':_0x9133('0x1d6')});db[_0x9133('0xea')][_0x9133('0x11f')](db[_0x9133('0x10a')],{'foreignKey':'ToUserId','as':_0x9133('0x1d7')});db[_0x9133('0xea')][_0x9133('0x11f')](db[_0x9133('0x133')],{'foreignKey':_0x9133('0x1d8'),'as':_0x9133('0x1d9')});db['MailTransferReport'][_0x9133('0x11f')](db[_0x9133('0x3c')],{'foreignKey':_0x9133('0x1da'),'as':_0x9133('0x1db')});db[_0x9133('0xec')][_0x9133('0x11f')](db[_0x9133('0x192')],{});db['ChatTransferReport'][_0x9133('0x11f')](db['ChatInteraction'],{});db['ChatTransferReport'][_0x9133('0x11f')](db[_0x9133('0x175')],{'foreignKey':_0x9133('0x1dc'),'as':'FromAccount'});db[_0x9133('0xec')][_0x9133('0x11f')](db['User'],{'foreignKey':_0x9133('0x1d5'),'as':'FromAgent'});db[_0x9133('0xec')][_0x9133('0x11f')](db[_0x9133('0x10a')],{'foreignKey':_0x9133('0x1dd'),'as':_0x9133('0x1d7')});db['ChatTransferReport'][_0x9133('0x11f')](db['ChatQueue'],{'foreignKey':'ToChatQueueId','as':'ToQueue'});db['ChatTransferReport'][_0x9133('0x11f')](db[_0x9133('0x175')],{'foreignKey':_0x9133('0x1de'),'as':'ToAccount'});db['FaxTransferReport'][_0x9133('0x11f')](db['FaxMessage'],{});db[_0x9133('0xee')]['belongsTo'](db['FaxInteraction'],{});db['FaxTransferReport'][_0x9133('0x11f')](db[_0x9133('0x17b')],{'foreignKey':_0x9133('0x1df'),'as':_0x9133('0x1e0')});db[_0x9133('0xee')][_0x9133('0x11f')](db[_0x9133('0x10a')],{'foreignKey':_0x9133('0x1d5'),'as':'FromAgent'});db['FaxTransferReport']['belongsTo'](db[_0x9133('0x10a')],{'foreignKey':_0x9133('0x1dd'),'as':_0x9133('0x1d7')});db[_0x9133('0xee')]['belongsTo'](db[_0x9133('0x136')],{'foreignKey':_0x9133('0x1e1'),'as':_0x9133('0x1d9')});db[_0x9133('0xee')]['belongsTo'](db[_0x9133('0x17b')],{'foreignKey':_0x9133('0x1e2'),'as':_0x9133('0x1db')});db[_0x9133('0xef')]['belongsTo'](db[_0x9133('0x61')],{});db[_0x9133('0xef')]['belongsTo'](db['OpenchannelInteraction'],{});db['OpenchannelTransferReport']['belongsTo'](db['OpenchannelAccount'],{'foreignKey':'FromOpenchannelAccountId','as':'FromAccount'});db[_0x9133('0xef')][_0x9133('0x11f')](db[_0x9133('0x10a')],{'foreignKey':'FromUserId','as':_0x9133('0x1d6')});db['OpenchannelTransferReport'][_0x9133('0x11f')](db[_0x9133('0x10a')],{'foreignKey':_0x9133('0x1dd'),'as':_0x9133('0x1d7')});db[_0x9133('0xef')][_0x9133('0x11f')](db['OpenchannelQueue'],{'foreignKey':_0x9133('0x1e3'),'as':_0x9133('0x1d9')});db[_0x9133('0xef')]['belongsTo'](db['OpenchannelAccount'],{'foreignKey':_0x9133('0x1e4'),'as':_0x9133('0x1db')});db[_0x9133('0xf1')][_0x9133('0x11f')](db[_0x9133('0x58')],{});db[_0x9133('0xf1')][_0x9133('0x11f')](db[_0x9133('0x119')],{});db['SmsTransferReport'][_0x9133('0x11f')](db['SmsAccount'],{'foreignKey':'FromSmsAccountId','as':_0x9133('0x1e0')});db[_0x9133('0xf1')]['belongsTo'](db[_0x9133('0x10a')],{'foreignKey':_0x9133('0x1d5'),'as':_0x9133('0x1d6')});db[_0x9133('0xf1')][_0x9133('0x11f')](db[_0x9133('0x10a')],{'foreignKey':_0x9133('0x1dd'),'as':'ToAgent'});db[_0x9133('0xf1')][_0x9133('0x11f')](db[_0x9133('0x5a')],{'foreignKey':_0x9133('0x1e5'),'as':'ToQueue'});db[_0x9133('0xf1')]['belongsTo'](db[_0x9133('0x53')],{'foreignKey':_0x9133('0x1e6'),'as':_0x9133('0x1db')});db[_0x9133('0xf3')][_0x9133('0x10e')](db[_0x9133('0x184')],{'as':'Dispositions','foreignKey':'ListId','onDelete':_0x9133('0x10c')});db[_0x9133('0xf3')][_0x9133('0x10e')](db[_0x9133('0x78')],{'as':'CustomFields','foreignKey':_0x9133('0x169')});db[_0x9133('0xf3')][_0x9133('0x10e')](db[_0x9133('0x71')],{'as':_0x9133('0x124'),'onDelete':_0x9133('0x10c'),'foreignKey':'ListId'});db[_0x9133('0xf3')][_0x9133('0x10e')](db['CmHopperFinal'],{'as':_0x9133('0x113'),'foreignKey':_0x9133('0x169')});db[_0x9133('0xf3')]['hasMany'](db[_0x9133('0x114')],{'as':_0x9133('0x115'),'foreignKey':_0x9133('0x169')});db[_0x9133('0xf3')][_0x9133('0x10e')](db['ReportAgentPreview'],{'as':'ReportAgentPreview','foreignKey':_0x9133('0x169')});db['CmList']['belongsToMany'](db[_0x9133('0x12f')],{'as':'Queues','through':_0x9133('0x1e7')});db[_0x9133('0xf3')][_0x9133('0x120')](db['User'],{'as':_0x9133('0x157'),'through':_0x9133('0x127')});db['VoicePrefix'][_0x9133('0x10e')](db[_0x9133('0x111')],{'as':_0x9133('0x112'),'onDelete':'cascade'});db[_0x9133('0xf5')]['belongsToMany'](db[_0x9133('0x10a')],{'as':_0x9133('0x157'),'through':_0x9133('0x132')});db[_0x9133('0xf5')][_0x9133('0x120')](db['Team'],{'through':'TeamVoicePrefix','as':_0x9133('0x158')});db[_0x9133('0xf7')][_0x9133('0x10e')](db[_0x9133('0x10a')],{'as':_0x9133('0x181'),'foreignKey':'userProfileId'});db[_0x9133('0xf7')][_0x9133('0x10e')](db[_0x9133('0x1e8')],{'as':'UserProfileSections','foreignKey':_0x9133('0x1e9'),'onDelete':_0x9133('0x10c')});db[_0x9133('0x1e8')][_0x9133('0x10e')](db[_0x9133('0xfa')],{'as':'Resources','foreignKey':'sectionId','onDelete':_0x9133('0x10c')});db[_0x9133('0xfe')][_0x9133('0x10e')](db[_0x9133('0x184')],{'as':'Dispositions','foreignKey':_0x9133('0x1ea'),'onDelete':_0x9133('0x10c')});db['WhatsappAccount'][_0x9133('0x10e')](db[_0x9133('0x7d')],{'as':_0x9133('0x167'),'foreignKey':_0x9133('0x1ea')});db[_0x9133('0xfe')][_0x9133('0x10e')](db[_0x9133('0x1eb')],{'as':_0x9133('0x15b'),'foreignKey':_0x9133('0x1ea')});db['WhatsappAccount']['hasMany'](db['WhatsappInteraction'],{'as':_0x9133('0x17d')});db[_0x9133('0xfe')][_0x9133('0x10e')](db[_0x9133('0xff')],{'as':_0x9133('0x149')});db[_0x9133('0xfe')][_0x9133('0x11f')](db[_0x9133('0xf3')],{'as':_0x9133('0x168'),'foreignKey':'ListId'});db[_0x9133('0xfe')][_0x9133('0x11f')](db[_0x9133('0x83')],{'as':'mandatoryDispositionPause','foreignKey':'mandatoryDispositionPauseId'});db[_0x9133('0xfe')][_0x9133('0x120')](db[_0x9133('0x10a')],{'as':'Agents','through':_0x9133('0x143')});db['WhatsappApplication'][_0x9133('0x11f')](db[_0x9133('0x10a')],{'onDelete':'restrict'});db[_0x9133('0xff')]['belongsTo'](db[_0x9133('0x105')],{'onDelete':'restrict'});db['WhatsappApplication']['belongsTo'](db['WhatsappAccount'],{'onDelete':'restrict'});db[_0x9133('0xff')][_0x9133('0x11f')](db['Interval'],{'onDelete':_0x9133('0x179'),'foreignKey':_0x9133('0x155')});db['WhatsappApplication'][_0x9133('0x11f')](db[_0x9133('0x8c')],{'onDelete':_0x9133('0x179'),'foreignKey':_0x9133('0x17a')});db[_0x9133('0x11c')][_0x9133('0x10e')](db[_0x9133('0x1eb')],{'as':_0x9133('0x15b'),'onDelete':'cascade','foreignKey':_0x9133('0x1ec')});db[_0x9133('0x11c')][_0x9133('0x11f')](db[_0x9133('0xfe')],{'as':_0x9133('0x16e'),'foreignKey':'WhatsappAccountId'});db[_0x9133('0x11c')][_0x9133('0x11f')](db[_0x9133('0x71')],{'as':_0x9133('0x161'),'foreignKey':_0x9133('0x162')});db['WhatsappInteraction'][_0x9133('0x11f')](db['User'],{'as':_0x9133('0x16f'),'foreignKey':_0x9133('0x10d')});db['WhatsappInteraction'][_0x9133('0x120')](db[_0x9133('0x8c')],{'through':_0x9133('0x1b0'),'as':'Tags'});db[_0x9133('0x11c')][_0x9133('0x120')](db[_0x9133('0x8c')],{'through':_0x9133('0x1b0'),'as':_0x9133('0x172')});db[_0x9133('0x11c')][_0x9133('0x120')](db['User'],{'as':'Users','through':_0x9133('0x12e'),'foreignKey':_0x9133('0x1ec')});db[_0x9133('0x1eb')][_0x9133('0x11f')](db[_0x9133('0x10a')],{'as':'User'});db[_0x9133('0x1eb')][_0x9133('0x11f')](db[_0x9133('0x71')],{'onDelete':_0x9133('0x10c'),'as':_0x9133('0x161')});db[_0x9133('0x1eb')][_0x9133('0x11f')](db[_0x9133('0x11c')],{'onDelete':_0x9133('0x10c'),'as':_0x9133('0x174'),'foreignKey':'WhatsappInteractionId'});db['WhatsappMessage'][_0x9133('0x11f')](db['WhatsappAccount'],{'as':'Account','foreignKey':_0x9133('0x1ea')});db[_0x9133('0x102')]['belongsTo'](db[_0x9133('0xfe')],{});db[_0x9133('0x102')]['belongsTo'](db[_0x9133('0xf3')],{'as':_0x9133('0x168'),'foreignKey':_0x9133('0x169')});db[_0x9133('0x102')][_0x9133('0x11f')](db[_0x9133('0x71')],{'as':_0x9133('0x161'),'foreignKey':_0x9133('0x162')});db[_0x9133('0x102')][_0x9133('0x11f')](db[_0x9133('0x11c')],{});db[_0x9133('0x102')][_0x9133('0x11f')](db[_0x9133('0x105')],{});db[_0x9133('0x102')]['belongsTo'](db[_0x9133('0x1eb')],{});db[_0x9133('0x102')][_0x9133('0x11f')](db[_0x9133('0x10a')],{});db[_0x9133('0x104')][_0x9133('0x11f')](db[_0x9133('0x1eb')],{});db['WhatsappTransferReport']['belongsTo'](db[_0x9133('0x11c')],{});db[_0x9133('0x104')]['belongsTo'](db[_0x9133('0xfe')],{'foreignKey':_0x9133('0x1ed'),'as':_0x9133('0x1e0')});db['WhatsappTransferReport'][_0x9133('0x11f')](db['WhatsappAccount'],{'foreignKey':_0x9133('0x1ee'),'as':_0x9133('0x1db')});db[_0x9133('0x104')][_0x9133('0x11f')](db['WhatsappQueue'],{'foreignKey':_0x9133('0x1ef'),'as':_0x9133('0x1d9')});db[_0x9133('0x104')][_0x9133('0x11f')](db[_0x9133('0x10a')],{'foreignKey':'FromUserId','as':_0x9133('0x1d6')});db['WhatsappTransferReport']['belongsTo'](db['User'],{'foreignKey':_0x9133('0x1dd'),'as':_0x9133('0x1d7')});db[_0x9133('0x105')][_0x9133('0x120')](db['User'],{'as':_0x9133('0x157'),'through':'UserWhatsappQueue','foreignKey':_0x9133('0x1f0')});db['WhatsappQueue'][_0x9133('0x120')](db[_0x9133('0x128')],{'through':_0x9133('0x1d1'),'as':'Teams'});module[_0x9133('0x1f1')]={'db':db,'dbH':dbH};
\ No newline at end of file
index 2e19339..07ad184 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb48f=['exten','clientEmail','privateKey','accesskeyid','secretaccesskey','key','pass','accountSid','localstationid','secret','oldPassword','isArray','length','isPlainObject','isString','replace','@@{','}@@','includes','path','express-winston','util','./errors','./config/environment','./config/logger','api','auth','default','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s','isEmpty','body','\x20body=%s','headers','x-forwarded-for','connection','remoteAddress','url','statusCode','responseTime','user','role','inspect','use','logger','%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)','other','agent_name','test','/api/users','./api/user','/api/voice/chanspy','/api/voice/contexts','./api/voiceContext','/api/voice/extensions','/api/voice/mohs','/api/voice/queues','./api/voiceQueue','/api/voice/recordings','./api/voiceRecording','/api/screen/recordings','./api/screenRecording','./api/voiceMail','/api/voice/mails/messages','./api/voiceMailMessage','/api/voice/calls/reports','./api/voiceCallReport','/api/voice/dials/reports','./api/voiceDialReport','/api/voice/agents/reports','./api/voiceAgentReport','/api/voice/queues/reports','/api/members/reports','./api/trunk','/api/voice/transfers/reports','./api/voiceTransferReport','./api/mailServerOut','/api/mail/accounts','/api/mail/queues','./api/mailQueue','/api/mail/substatuses','./api/mailSubstatus','/api/mail/messages','./api/mailMessage','/api/mail/applications','./api/mailApplication','/api/mail/reports/queue','./api/mailQueueReport','/api/dashboards','./api/dashboard','/api/dashboards/items','./api/dashboardItem','/api/fax/accounts','./api/faxAccount','/api/fax/applications','/api/fax/interactions','./api/faxInteraction','/api/fax/messages','./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/openchannel/accounts','/api/openchannel/applications','./api/openchannelApplication','/api/openchannel/interactions','./api/openchannelInteraction','/api/openchannel/queues','./api/openchannelQueue','/api/chat/websites','/api/openchannel/reports/queue','./api/openchannelQueueReport','/api/chat/applications','./api/chatApplication','/api/chat/interactions','./api/chatInteraction','/api/chat/messages','/api/chat/queues','./api/chatQueue','./api/chatGroup','/api/chat/proactive_actions','/api/cm/companies','/api/cm/contacts','./api/cmContact','./api/cmHopper','./api/cmHopperBlack','./api/cmHopperFinal','/api/cm/hopper_history','/api/cm/custom_fields','./api/cmCustomField','./api/action','/api/automations','./api/automation','/api/canned_answers','./api/cannedAnswer','./api/disposition','/api/conditions','./api/condition','/api/intervals','./api/interval','/api/pauses','/api/cdr','./api/cdr','/api/voiceQueuesLog','./api/voiceQueuesLog','/api/schedules','./api/schedule','/api/sounds','./api/sound','/api/tags','./api/tag','/api/templates','/api/triggers','./api/trigger','/api/variables','/api/integrations/reports','./api/integrationReport','/api/analytics/custom_reports','/api/analytics/default_reports','./api/analyticDefaultReport','/api/analytics/extracted_reports','./api/analyticMetric','/api/analytics/field_reports','./api/analyticFieldReport','/api/analytics/tree_reports','./api/analyticTreeReport','/api/integrations/salesforce/accounts','./api/intSalesforceAccount','/api/integrations/salesforce/configurations','/api/integrations/salesforce/fields','./api/intSugarcrmConfiguration','/api/integrations/sugarcrm/fields','/api/integrations/desk/accounts','./api/intDeskAccount','/api/integrations/desk/configurations','./api/intDeskConfiguration','/api/integrations/desk/fields','./api/intDeskField','/api/integrations/zoho/configurations','./api/intZohoConfiguration','./api/intZendeskAccount','/api/integrations/zendesk/configurations','./api/intZendeskConfiguration','/api/integrations/zendesk/fields','./api/intZendeskField','./api/intFreshdeskConfiguration','/api/integrations/freshdesk/fields','./api/intFreshdeskField','/api/integrations/vtiger/accounts','./api/intVtigerAccount','/api/integrations/vtiger/configurations','/api/integrations/vtiger/fields','/api/integrations/servicenow/accounts','./api/intServicenowAccount','/api/integrations/servicenow/configurations','/api/integrations/dynamics365/accounts','./api/intDynamics365Account','/api/integrations/dynamics365/configurations','/api/integrations/dynamics365/fields','./api/intDynamics365Field','/api/integrations/freshsales/accounts','./api/intFreshsalesAccount','/api/integrations/freshsales/configurations','/api/integrations/freshsales/fields','/api/networks','/api/chat/reports/queue','/api/chat/internal/messages','./api/chatInternalMessage','/api/jscripty/answers/reports','/api/jscripty/questions/reports','/api/jscripty/sessions/reports','./api/smsQueueReport','/api/square/reports','./api/squareReportDetail','/api/jscripty/projects','./api/jscriptyProject','./api/setting','/api/square/odbc','./api/squareOdbc','/api/square/projects','./api/squareProject','/api/square/recordings','./api/squareMessage','/api/teams','./api/team','/api/license','./api/license','/api/campaigns','./api/campaign','./api/migration','./api/plugin','/api/mail/reports/transfer','./api/mailTransferReport','./api/chatTransferReport','/api/fax/reports/transfer','./api/faxTransferReport','/api/openchannel/reports/transfer','./api/openchannelTransferReport','/api/sms/reports/transfer','./api/smsTransferReport','/api/cm/lists','./api/cmList','/api/voice/prefixes','./api/voicePrefix','/api/userProfiles','./api/userProfile','/api/userProfile/sections','./api/userProfileSection','/api/userProfile/resources','./api/userProfileResource','/api/userNotifications','./api/userNotification','/api/whatsapp/accounts','./api/whatsappAccount','/api/whatsapp/applications','/api/whatsapp/interactions','./api/whatsappInteraction','/api/whatsapp/messages','./api/whatsappMessage','./api/whatsappQueueReport','/api/whatsapp/reports/transfer','./api/whatsappTransferReport','/api/whatsapp/queues','./api/cloudProvider','/api/realtime','/api/auth/local','./api/authLocal','/api/auth/google','./api/authGoogle','/api/jira','./api/jira','/api/rpc','./api/rpc','/api/system','./api/system','/api/pm2','./api/pm2','/api/webbar','./api/webbar','/apidoc','static','join','root','/www','/demo','3.0.0','/plugins','/server/files/plugins','route','/:url(api|auth|components|app|bower_components|assets)/*','get','sendFile','resolve','appPath','/index.html','newPassword','apiKey','firstName','lastName','street','mobile','fax','email','clientId','securityToken','code','accessKey','tenantId','token','accessToken','accessTokenSecret','consumerKey','consumerSecret','calleridname','calleridnum'];(function(_0x558db5,_0x4e6dba){var _0x8b42d5=function(_0x2ea910){while(--_0x2ea910){_0x558db5['push'](_0x558db5['shift']());}};_0x8b42d5(++_0x4e6dba);}(_0xb48f,0x155));var _0xfb48=function(_0x1effc9,_0x4496d1){_0x1effc9=_0x1effc9-0x0;var _0x1cb7e5=_0xb48f[_0x1effc9];return _0x1cb7e5;};'use strict';var _=require('lodash');var path=require(_0xfb48('0x0'));var express=require('express');var ewinston=require(_0xfb48('0x1'));var util=require(_0xfb48('0x2'));var errors=require(_0xfb48('0x3'));var config=require(_0xfb48('0x4'));var logger=require(_0xfb48('0x5'))(_0xfb48('0x6'));var authLogger=require(_0xfb48('0x5'))(_0xfb48('0x7'));exports[_0xfb48('0x8')]=function(_0x4617cb){_0x4617cb['use'](ewinston['logger']({'winstonInstance':logger,'meta':![],'statusLevels':!![],'msg':function(_0x46ab61,_0x58ed2b){var _0x1d864f=_0xfb48('0x9');if(!_[_0xfb48('0xa')](_0x46ab61[_0xfb48('0xb')])){_0x1d864f+=_0xfb48('0xc');var _0x1dfaf5=_0x46ab61['body'];maskSensitiveData(_0x1dfaf5);}return util['format'](_0x1d864f,_0x46ab61['method'],_0x46ab61[_0xfb48('0xd')][_0xfb48('0xe')]?_0x46ab61['headers'][_0xfb48('0xe')]:_0x46ab61[_0xfb48('0xf')][_0xfb48('0x10')]||_0x46ab61['ip'],_0x46ab61[_0xfb48('0x11')],_0x58ed2b[_0xfb48('0x12')],_0x58ed2b[_0xfb48('0x13')],_0x46ab61[_0xfb48('0x14')]?_0x46ab61[_0xfb48('0x14')]['id']:null,_0x46ab61[_0xfb48('0x14')]?_0x46ab61['user']['name']:null,_0x46ab61['user']?_0x46ab61[_0xfb48('0x14')][_0xfb48('0x15')]:null,_0x1dfaf5?util[_0xfb48('0x16')](_0x1dfaf5,![],null):'');}}));_0x4617cb[_0xfb48('0x17')](ewinston[_0xfb48('0x18')]({'winstonInstance':authLogger,'meta':![],'statusLevels':!![],'msg':function(_0x94da53,_0x132f8e){var _0xa77aef=_0xfb48('0x19');if(_0x94da53[_0xfb48('0xb')]&&_0x94da53['body'][_0xfb48('0x1a')]&&_0x94da53['body'][_0xfb48('0x1b')]){_0xa77aef=_0xfb48('0x1c');}return util['format'](_0xa77aef,_0x94da53['method'],_0x94da53['headers'][_0xfb48('0xe')]?_0x94da53[_0xfb48('0xd')][_0xfb48('0xe')]:_0x94da53[_0xfb48('0xf')]['remoteAddress']||_0x94da53['ip'],_0x94da53[_0xfb48('0x11')],_0x132f8e['statusCode'],_0x132f8e[_0xfb48('0x13')],_0x94da53[_0xfb48('0x14')]?_0x94da53[_0xfb48('0x14')]['id']:null,_0x94da53['user']?_0x94da53[_0xfb48('0x14')]['name']:null,_0x94da53['user']?_0x94da53[_0xfb48('0x14')][_0xfb48('0x15')]:null,_0x94da53[_0xfb48('0xb')]&&_0x94da53[_0xfb48('0xb')]['device']?_0x94da53[_0xfb48('0xb')][_0xfb48('0x1a')]:_0xfb48('0x1d'),_0x94da53['body']&&_0x94da53[_0xfb48('0xb')][_0xfb48('0x1b')]?_0x94da53[_0xfb48('0xb')][_0xfb48('0x1b')]:'',_0x94da53['body']&&_0x94da53[_0xfb48('0xb')][_0xfb48('0x1e')]?_0x94da53[_0xfb48('0xb')][_0xfb48('0x1e')]:'');},'ignoreRoute':function(_0x297381){var _0xa78331=/\/api\/users\/[0-9]+\/(login|logout)/gi;return!_0xa78331[_0xfb48('0x1f')](_0x297381[_0xfb48('0x11')]);}}));_0x4617cb[_0xfb48('0x17')](_0xfb48('0x20'),require(_0xfb48('0x21')));_0x4617cb[_0xfb48('0x17')](_0xfb48('0x22'),require('./api/voiceChanSpy'));_0x4617cb['use'](_0xfb48('0x23'),require(_0xfb48('0x24')));_0x4617cb['use'](_0xfb48('0x25'),require('./api/voiceExtension'));_0x4617cb[_0xfb48('0x17')](_0xfb48('0x26'),require('./api/voiceMusicOnHold'));_0x4617cb[_0xfb48('0x17')](_0xfb48('0x27'),require(_0xfb48('0x28')));_0x4617cb[_0xfb48('0x17')](_0xfb48('0x29'),require(_0xfb48('0x2a')));_0x4617cb[_0xfb48('0x17')](_0xfb48('0x2b'),require(_0xfb48('0x2c')));_0x4617cb['use']('/api/voice/mails',require(_0xfb48('0x2d')));_0x4617cb[_0xfb48('0x17')](_0xfb48('0x2e'),require(_0xfb48('0x2f')));_0x4617cb[_0xfb48('0x17')](_0xfb48('0x30'),require(_0xfb48('0x31')));_0x4617cb[_0xfb48('0x17')](_0xfb48('0x32'),require(_0xfb48('0x33')));_0x4617cb['use'](_0xfb48('0x34'),require(_0xfb48('0x35')));_0x4617cb[_0xfb48('0x17')](_0xfb48('0x36'),require('./api/voiceQueueReport'));_0x4617cb[_0xfb48('0x17')](_0xfb48('0x37'),require('./api/memberReport'));_0x4617cb[_0xfb48('0x17')]('/api/trunks',require(_0xfb48('0x38')));_0x4617cb[_0xfb48('0x17')](_0xfb48('0x39'),require(_0xfb48('0x3a')));_0x4617cb['use']('/api/mail/out_servers',require(_0xfb48('0x3b')));_0x4617cb['use'](_0xfb48('0x3c'),require('./api/mailAccount'));_0x4617cb[_0xfb48('0x17')](_0xfb48('0x3d'),require(_0xfb48('0x3e')));_0x4617cb['use'](_0xfb48('0x3f'),require(_0xfb48('0x40')));_0x4617cb[_0xfb48('0x17')]('/api/mail/interactions',require('./api/mailInteraction'));_0x4617cb[_0xfb48('0x17')](_0xfb48('0x41'),require(_0xfb48('0x42')));_0x4617cb[_0xfb48('0x17')](_0xfb48('0x43'),require(_0xfb48('0x44')));_0x4617cb[_0xfb48('0x17')](_0xfb48('0x45'),require(_0xfb48('0x46')));_0x4617cb[_0xfb48('0x17')](_0xfb48('0x47'),require(_0xfb48('0x48')));_0x4617cb['use'](_0xfb48('0x49'),require(_0xfb48('0x4a')));_0x4617cb['use'](_0xfb48('0x4b'),require(_0xfb48('0x4c')));_0x4617cb['use'](_0xfb48('0x4d'),require('./api/faxApplication'));_0x4617cb[_0xfb48('0x17')](_0xfb48('0x4e'),require(_0xfb48('0x4f')));_0x4617cb[_0xfb48('0x17')](_0xfb48('0x50'),require('./api/faxMessage'));_0x4617cb[_0xfb48('0x17')]('/api/fax/queues',require(_0xfb48('0x51')));_0x4617cb[_0xfb48('0x17')](_0xfb48('0x52'),require(_0xfb48('0x53')));_0x4617cb[_0xfb48('0x17')](_0xfb48('0x54'),require('./api/smsAccount'));_0x4617cb[_0xfb48('0x17')](_0xfb48('0x55'),require(_0xfb48('0x56')));_0x4617cb[_0xfb48('0x17')](_0xfb48('0x57'),require(_0xfb48('0x58')));_0x4617cb[_0xfb48('0x17')](_0xfb48('0x59'),require('./api/smsMessage'));_0x4617cb[_0xfb48('0x17')]('/api/sms/queues',require('./api/smsQueue'));_0x4617cb['use'](_0xfb48('0x5a'),require('./api/openchannelAccount'));_0x4617cb[_0xfb48('0x17')](_0xfb48('0x5b'),require(_0xfb48('0x5c')));_0x4617cb[_0xfb48('0x17')](_0xfb48('0x5d'),require(_0xfb48('0x5e')));_0x4617cb[_0xfb48('0x17')]('/api/openchannel/messages',require('./api/openchannelMessage'));_0x4617cb[_0xfb48('0x17')](_0xfb48('0x5f'),require(_0xfb48('0x60')));_0x4617cb[_0xfb48('0x17')](_0xfb48('0x61'),require('./api/chatWebsite'));_0x4617cb[_0xfb48('0x17')](_0xfb48('0x62'),require(_0xfb48('0x63')));_0x4617cb[_0xfb48('0x17')](_0xfb48('0x64'),require(_0xfb48('0x65')));_0x4617cb['use'](_0xfb48('0x66'),require(_0xfb48('0x67')));_0x4617cb[_0xfb48('0x17')](_0xfb48('0x68'),require('./api/chatMessage'));_0x4617cb[_0xfb48('0x17')]('/api/chat/offline_messages',require('./api/chatOfflineMessage'));_0x4617cb['use'](_0xfb48('0x69'),require(_0xfb48('0x6a')));_0x4617cb[_0xfb48('0x17')]('/api/chat/groups',require(_0xfb48('0x6b')));_0x4617cb[_0xfb48('0x17')](_0xfb48('0x6c'),require('./api/chatProactiveAction'));_0x4617cb[_0xfb48('0x17')](_0xfb48('0x6d'),require('./api/cmCompany'));_0x4617cb[_0xfb48('0x17')](_0xfb48('0x6e'),require(_0xfb48('0x6f')));_0x4617cb['use']('/api/cm/hopper',require(_0xfb48('0x70')));_0x4617cb[_0xfb48('0x17')]('/api/cm/hopper_black',require(_0xfb48('0x71')));_0x4617cb[_0xfb48('0x17')]('/api/cm/hopper_final',require(_0xfb48('0x72')));_0x4617cb[_0xfb48('0x17')](_0xfb48('0x73'),require('./api/cmHopperHistory'));_0x4617cb[_0xfb48('0x17')](_0xfb48('0x74'),require(_0xfb48('0x75')));_0x4617cb[_0xfb48('0x17')]('/api/actions',require(_0xfb48('0x76')));_0x4617cb[_0xfb48('0x17')](_0xfb48('0x77'),require(_0xfb48('0x78')));_0x4617cb[_0xfb48('0x17')](_0xfb48('0x79'),require(_0xfb48('0x7a')));_0x4617cb[_0xfb48('0x17')]('/api/dispositions',require(_0xfb48('0x7b')));_0x4617cb[_0xfb48('0x17')](_0xfb48('0x7c'),require(_0xfb48('0x7d')));_0x4617cb['use'](_0xfb48('0x7e'),require(_0xfb48('0x7f')));_0x4617cb[_0xfb48('0x17')](_0xfb48('0x80'),require('./api/pause'));_0x4617cb[_0xfb48('0x17')](_0xfb48('0x81'),require(_0xfb48('0x82')));_0x4617cb[_0xfb48('0x17')](_0xfb48('0x83'),require(_0xfb48('0x84')));_0x4617cb[_0xfb48('0x17')](_0xfb48('0x85'),require(_0xfb48('0x86')));_0x4617cb['use'](_0xfb48('0x87'),require(_0xfb48('0x88')));_0x4617cb[_0xfb48('0x17')](_0xfb48('0x89'),require(_0xfb48('0x8a')));_0x4617cb[_0xfb48('0x17')](_0xfb48('0x8b'),require('./api/template'));_0x4617cb['use'](_0xfb48('0x8c'),require(_0xfb48('0x8d')));_0x4617cb[_0xfb48('0x17')](_0xfb48('0x8e'),require('./api/variable'));_0x4617cb[_0xfb48('0x17')]('/api/integrations',require('./api/integration'));_0x4617cb[_0xfb48('0x17')](_0xfb48('0x8f'),require(_0xfb48('0x90')));_0x4617cb[_0xfb48('0x17')](_0xfb48('0x91'),require('./api/analyticCustomReport'));_0x4617cb[_0xfb48('0x17')](_0xfb48('0x92'),require(_0xfb48('0x93')));_0x4617cb[_0xfb48('0x17')](_0xfb48('0x94'),require('./api/analyticExtractedReport'));_0x4617cb['use']('/api/analytics/metrics',require(_0xfb48('0x95')));_0x4617cb['use'](_0xfb48('0x96'),require(_0xfb48('0x97')));_0x4617cb[_0xfb48('0x17')](_0xfb48('0x98'),require(_0xfb48('0x99')));_0x4617cb['use'](_0xfb48('0x9a'),require(_0xfb48('0x9b')));_0x4617cb['use'](_0xfb48('0x9c'),require('./api/intSalesforceConfiguration'));_0x4617cb[_0xfb48('0x17')](_0xfb48('0x9d'),require('./api/intSalesforceField'));_0x4617cb[_0xfb48('0x17')]('/api/integrations/sugarcrm/accounts',require('./api/intSugarcrmAccount'));_0x4617cb[_0xfb48('0x17')]('/api/integrations/sugarcrm/configurations',require(_0xfb48('0x9e')));_0x4617cb[_0xfb48('0x17')](_0xfb48('0x9f'),require('./api/intSugarcrmField'));_0x4617cb['use'](_0xfb48('0xa0'),require(_0xfb48('0xa1')));_0x4617cb['use'](_0xfb48('0xa2'),require(_0xfb48('0xa3')));_0x4617cb[_0xfb48('0x17')](_0xfb48('0xa4'),require(_0xfb48('0xa5')));_0x4617cb[_0xfb48('0x17')]('/api/integrations/zoho/accounts',require('./api/intZohoAccount'));_0x4617cb[_0xfb48('0x17')](_0xfb48('0xa6'),require(_0xfb48('0xa7')));_0x4617cb[_0xfb48('0x17')]('/api/integrations/zoho/fields',require('./api/intZohoField'));_0x4617cb['use']('/api/integrations/zendesk/accounts',require(_0xfb48('0xa8')));_0x4617cb[_0xfb48('0x17')](_0xfb48('0xa9'),require(_0xfb48('0xaa')));_0x4617cb['use'](_0xfb48('0xab'),require(_0xfb48('0xac')));_0x4617cb['use']('/api/integrations/freshdesk/accounts',require('./api/intFreshdeskAccount'));_0x4617cb['use']('/api/integrations/freshdesk/configurations',require(_0xfb48('0xad')));_0x4617cb[_0xfb48('0x17')](_0xfb48('0xae'),require(_0xfb48('0xaf')));_0x4617cb['use'](_0xfb48('0xb0'),require(_0xfb48('0xb1')));_0x4617cb[_0xfb48('0x17')](_0xfb48('0xb2'),require('./api/intVtigerConfiguration'));_0x4617cb['use'](_0xfb48('0xb3'),require('./api/intVtigerField'));_0x4617cb[_0xfb48('0x17')](_0xfb48('0xb4'),require(_0xfb48('0xb5')));_0x4617cb[_0xfb48('0x17')](_0xfb48('0xb6'),require('./api/intServicenowConfiguration'));_0x4617cb[_0xfb48('0x17')]('/api/integrations/servicenow/fields',require('./api/intServicenowField'));_0x4617cb[_0xfb48('0x17')](_0xfb48('0xb7'),require(_0xfb48('0xb8')));_0x4617cb[_0xfb48('0x17')](_0xfb48('0xb9'),require('./api/intDynamics365Configuration'));_0x4617cb[_0xfb48('0x17')](_0xfb48('0xba'),require(_0xfb48('0xbb')));_0x4617cb[_0xfb48('0x17')](_0xfb48('0xbc'),require(_0xfb48('0xbd')));_0x4617cb['use'](_0xfb48('0xbe'),require('./api/intFreshsalesConfiguration'));_0x4617cb[_0xfb48('0x17')](_0xfb48('0xbf'),require('./api/intFreshsalesField'));_0x4617cb[_0xfb48('0x17')](_0xfb48('0xc0'),require('./api/network'));_0x4617cb['use'](_0xfb48('0xc1'),require('./api/chatQueueReport'));_0x4617cb['use'](_0xfb48('0xc2'),require(_0xfb48('0xc3')));_0x4617cb['use'](_0xfb48('0xc4'),require('./api/jscriptyAnswerReport'));_0x4617cb[_0xfb48('0x17')](_0xfb48('0xc5'),require('./api/jscriptyQuestionReport'));_0x4617cb[_0xfb48('0x17')](_0xfb48('0xc6'),require('./api/jscriptySessionReport'));_0x4617cb[_0xfb48('0x17')]('/api/sms/reports/queue',require(_0xfb48('0xc7')));_0x4617cb[_0xfb48('0x17')](_0xfb48('0xc8'),require('./api/squareReport'));_0x4617cb[_0xfb48('0x17')]('/api/square/details/reports',require(_0xfb48('0xc9')));_0x4617cb[_0xfb48('0x17')](_0xfb48('0xca'),require(_0xfb48('0xcb')));_0x4617cb[_0xfb48('0x17')]('/api/settings',require(_0xfb48('0xcc')));_0x4617cb['use'](_0xfb48('0xcd'),require(_0xfb48('0xce')));_0x4617cb[_0xfb48('0x17')](_0xfb48('0xcf'),require(_0xfb48('0xd0')));_0x4617cb[_0xfb48('0x17')](_0xfb48('0xd1'),require('./api/squareRecording'));_0x4617cb[_0xfb48('0x17')]('/api/square/messages',require(_0xfb48('0xd2')));_0x4617cb[_0xfb48('0x17')](_0xfb48('0xd3'),require(_0xfb48('0xd4')));_0x4617cb['use'](_0xfb48('0xd5'),require(_0xfb48('0xd6')));_0x4617cb[_0xfb48('0x17')](_0xfb48('0xd7'),require(_0xfb48('0xd8')));_0x4617cb[_0xfb48('0x17')]('/api/migrations',require(_0xfb48('0xd9')));_0x4617cb[_0xfb48('0x17')]('/api/attachments',require('./api/attachment'));_0x4617cb[_0xfb48('0x17')]('/api/plugins',require(_0xfb48('0xda')));_0x4617cb[_0xfb48('0x17')](_0xfb48('0xdb'),require(_0xfb48('0xdc')));_0x4617cb[_0xfb48('0x17')]('/api/chat/reports/transfer',require(_0xfb48('0xdd')));_0x4617cb[_0xfb48('0x17')](_0xfb48('0xde'),require(_0xfb48('0xdf')));_0x4617cb[_0xfb48('0x17')](_0xfb48('0xe0'),require(_0xfb48('0xe1')));_0x4617cb[_0xfb48('0x17')](_0xfb48('0xe2'),require(_0xfb48('0xe3')));_0x4617cb[_0xfb48('0x17')](_0xfb48('0xe4'),require(_0xfb48('0xe5')));_0x4617cb['use'](_0xfb48('0xe6'),require(_0xfb48('0xe7')));_0x4617cb[_0xfb48('0x17')](_0xfb48('0xe8'),require(_0xfb48('0xe9')));_0x4617cb[_0xfb48('0x17')](_0xfb48('0xea'),require(_0xfb48('0xeb')));_0x4617cb[_0xfb48('0x17')](_0xfb48('0xec'),require(_0xfb48('0xed')));_0x4617cb[_0xfb48('0x17')](_0xfb48('0xee'),require(_0xfb48('0xef')));_0x4617cb[_0xfb48('0x17')](_0xfb48('0xf0'),require(_0xfb48('0xf1')));_0x4617cb[_0xfb48('0x17')](_0xfb48('0xf2'),require('./api/whatsappApplication'));_0x4617cb[_0xfb48('0x17')](_0xfb48('0xf3'),require(_0xfb48('0xf4')));_0x4617cb['use'](_0xfb48('0xf5'),require(_0xfb48('0xf6')));_0x4617cb[_0xfb48('0x17')]('/api/whatsapp/reports/queue',require(_0xfb48('0xf7')));_0x4617cb[_0xfb48('0x17')](_0xfb48('0xf8'),require(_0xfb48('0xf9')));_0x4617cb[_0xfb48('0x17')](_0xfb48('0xfa'),require('./api/whatsappQueue'));_0x4617cb[_0xfb48('0x17')]('/api/cloudProviders',require(_0xfb48('0xfb')));_0x4617cb[_0xfb48('0x17')](_0xfb48('0xfc'),require('./api/realtime'));_0x4617cb[_0xfb48('0x17')](_0xfb48('0xfd'),require(_0xfb48('0xfe')));_0x4617cb[_0xfb48('0x17')](_0xfb48('0xff'),require(_0xfb48('0x100')));_0x4617cb[_0xfb48('0x17')](_0xfb48('0x101'),require(_0xfb48('0x102')));_0x4617cb[_0xfb48('0x17')](_0xfb48('0x103'),require(_0xfb48('0x104')));_0x4617cb[_0xfb48('0x17')]('/api/version',require('./api/version'));_0x4617cb['use'](_0xfb48('0x105'),require(_0xfb48('0x106')));_0x4617cb[_0xfb48('0x17')](_0xfb48('0x107'),require(_0xfb48('0x108')));_0x4617cb[_0xfb48('0x17')](_0xfb48('0x109'),require(_0xfb48('0x10a')));_0x4617cb['use'](_0xfb48('0x10b'),express[_0xfb48('0x10c')](path[_0xfb48('0x10d')](config[_0xfb48('0x10e')],_0xfb48('0x10b'))));_0x4617cb[_0xfb48('0x17')](_0xfb48('0x10f'),express[_0xfb48('0x10c')](path[_0xfb48('0x10d')](config['root'],_0xfb48('0x10f'))));_0x4617cb[_0xfb48('0x17')](_0xfb48('0x110'),express[_0xfb48('0x10c')](path['join'](config[_0xfb48('0x10e')],'/demo')));_0x4617cb[_0xfb48('0x17')]('/snippet',express[_0xfb48('0x10c')](path[_0xfb48('0x10d')](config['root'],'snippet',_0xfb48('0x111'))));_0x4617cb[_0xfb48('0x17')](_0xfb48('0x112'),express[_0xfb48('0x10c')](path[_0xfb48('0x10d')](config['root'],_0xfb48('0x113'))));_0x4617cb[_0xfb48('0x114')](_0xfb48('0x115'))[_0xfb48('0x116')](errors[0x194]);_0x4617cb[_0xfb48('0x114')]('/*')['get'](function(_0x58e122,_0x2b44ca){_0x2b44ca[_0xfb48('0x117')](path[_0xfb48('0x118')](_0x4617cb[_0xfb48('0x116')](_0xfb48('0x119'))+_0xfb48('0x11a')));});};var sensitiveFields=['username','password',_0xfb48('0x11b'),_0xfb48('0x11c'),_0xfb48('0x11d'),_0xfb48('0x11e'),_0xfb48('0x11f'),'phone',_0xfb48('0x120'),_0xfb48('0x121'),_0xfb48('0x122'),_0xfb48('0x123'),'clientSecret',_0xfb48('0x124'),_0xfb48('0x125'),_0xfb48('0x126'),_0xfb48('0x127'),_0xfb48('0x128'),'channelSecret',_0xfb48('0x129'),_0xfb48('0x12a'),'authToken',_0xfb48('0x12b'),_0xfb48('0x12c'),'membername',_0xfb48('0x12d'),_0xfb48('0x12e'),_0xfb48('0x12f'),'vidaooApiKey',_0xfb48('0x130'),_0xfb48('0x131'),_0xfb48('0x132'),_0xfb48('0x133'),_0xfb48('0x134'),_0xfb48('0x14'),_0xfb48('0x135'),_0xfb48('0x136'),_0xfb48('0x137'),'dsn',_0xfb48('0x138'),'registry',_0xfb48('0x139')];function maskSensitiveData(_0x514a24){var _0x255c5e=/(?!^)[\s\S](?!$)/g;if(!_['isPlainObject'](_0x514a24))return;for(var _0x42d41c in _0x514a24){if(_[_0xfb48('0x13a')](_0x514a24[_0x42d41c])){for(var _0x556fcc=0x0;_0x556fcc<_0x514a24[_0x42d41c][_0xfb48('0x13b')];_0x556fcc++){maskSensitiveData(_0x514a24[_0x42d41c][_0x556fcc]);}}else if(_[_0xfb48('0x13c')](_0x514a24[_0x42d41c])){maskSensitiveData(_0x514a24[_0x42d41c]);}else if(_[_0xfb48('0x13d')](_0x514a24[_0x42d41c])){_0x514a24[_0x42d41c]=_0x514a24[_0x42d41c][_0xfb48('0x13e')](/{{{/g,_0xfb48('0x13f'))['replace'](/}}}/g,_0xfb48('0x140'))[_0xfb48('0x13e')](/{{/g,'@{')[_0xfb48('0x13e')](/}}/g,'}@');if(_[_0xfb48('0x141')](sensitiveFields,_0x42d41c)){_0x514a24[_0x42d41c]=_0x514a24[_0x42d41c][_0xfb48('0x13e')](_0x255c5e,'*');}}}}
\ No newline at end of file
+var _0x93cf=['/api/integrations/freshdesk/fields','/api/integrations/vtiger/accounts','./api/intVtigerAccount','/api/integrations/vtiger/configurations','./api/intVtigerConfiguration','/api/integrations/vtiger/fields','./api/intVtigerField','/api/integrations/servicenow/configurations','./api/intServicenowConfiguration','/api/integrations/servicenow/fields','./api/intServicenowField','/api/integrations/dynamics365/accounts','./api/intDynamics365Account','/api/integrations/dynamics365/configurations','./api/intDynamics365Configuration','/api/integrations/dynamics365/fields','./api/intDynamics365Field','/api/integrations/freshsales/accounts','./api/intFreshsalesAccount','./api/intFreshsalesConfiguration','/api/integrations/freshsales/fields','./api/intFreshsalesField','/api/networks','./api/network','/api/chat/reports/queue','./api/chatQueueReport','/api/chat/internal/messages','./api/chatInternalMessage','/api/jscripty/answers/reports','./api/jscriptyAnswerReport','./api/jscriptyQuestionReport','/api/jscripty/sessions/reports','/api/sms/reports/queue','./api/smsQueueReport','/api/square/reports','/api/square/details/reports','./api/squareReportDetail','./api/jscriptyProject','./api/setting','/api/square/odbc','./api/squareOdbc','/api/square/projects','./api/squareMessage','/api/teams','/api/license','./api/license','/api/campaigns','/api/migrations','./api/migration','/api/attachments','./api/attachment','./api/plugin','/api/mail/reports/transfer','./api/mailTransferReport','/api/chat/reports/transfer','/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/whatsapp/accounts','./api/whatsappAccount','/api/whatsapp/applications','./api/whatsappApplication','/api/whatsapp/interactions','./api/whatsappInteraction','/api/whatsapp/messages','./api/whatsappMessage','./api/whatsappQueueReport','./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/rpc','/api/version','./api/version','/api/system','./api/system','/api/pm2','/api/webbar','./api/webbar','/apidoc','static','join','root','/www','/demo','/snippet','/plugins','/server/files/plugins','get','route','resolve','appPath','username','password','newPassword','apiKey','firstName','lastName','street','phone','mobile','email','clientId','clientSecret','securityToken','accessKey','tenantId','token','channelSecret','accessToken','accessTokenSecret','authToken','consumerKey','consumerSecret','calleridname','calleridnum','exten','clientEmail','accesskeyid','secretaccesskey','key','accountSid','localstationid','dsn','registry','oldPassword','isPlainObject','isArray','length','replace','@@{','}@@','includes','lodash','path','express','express-winston','util','./config/environment','./config/logger','auth','./safe-template','safeTemplate','default','isEmpty','body','\x20body=%s','format','method','headers','x-forwarded-for','connection','url','statusCode','user','name','role','use','logger','remoteAddress','responseTime','device','agent_id','agent_name','/api/users','/api/voice/chanspy','/api/voice/contexts','./api/voiceContext','/api/voice/extensions','./api/voiceExtension','./api/voiceMusicOnHold','./api/voiceQueue','/api/voice/recordings','./api/voiceRecording','/api/screen/recordings','./api/screenRecording','/api/voice/mails','./api/voiceMail','/api/voice/mails/messages','./api/voiceMailMessage','./api/voiceCallReport','/api/voice/dials/reports','/api/voice/agents/reports','./api/voiceAgentReport','/api/voice/queues/reports','./api/voiceQueueReport','/api/members/reports','./api/memberReport','/api/trunks','/api/voice/transfers/reports','./api/voiceTransferReport','/api/mail/out_servers','./api/mailServerOut','/api/mail/accounts','/api/mail/queues','./api/mailSubstatus','/api/mail/interactions','./api/mailInteraction','/api/mail/messages','/api/mail/applications','./api/mailApplication','/api/mail/reports/queue','./api/mailQueueReport','/api/dashboards/items','./api/dashboardItem','/api/fax/accounts','./api/faxAccount','/api/fax/applications','/api/fax/interactions','/api/fax/messages','./api/faxMessage','/api/fax/queues','./api/faxQueue','/api/fax/reports/queue','./api/faxQueueReport','/api/sms/applications','./api/smsApplication','/api/sms/interactions','/api/sms/messages','./api/smsMessage','/api/sms/queues','/api/openchannel/accounts','/api/openchannel/applications','./api/openchannelApplication','/api/openchannel/messages','./api/openchannelMessage','./api/openchannelQueue','/api/chat/websites','./api/chatWebsite','/api/openchannel/reports/queue','./api/chatInteraction','/api/chat/messages','./api/chatMessage','./api/chatOfflineMessage','./api/chatQueue','/api/chat/groups','./api/chatGroup','/api/chat/proactive_actions','./api/chatProactiveAction','/api/cm/companies','./api/cmCompany','/api/cm/contacts','./api/cmContact','/api/cm/hopper','/api/cm/hopper_black','/api/cm/hopper_final','./api/cmHopperHistory','/api/cm/custom_fields','/api/actions','./api/action','/api/automations','./api/automation','./api/cannedAnswer','/api/dispositions','./api/disposition','/api/conditions','./api/condition','/api/intervals','./api/interval','./api/cdr','/api/voiceQueuesLog','./api/voiceQueuesLog','/api/schedules','/api/sounds','./api/sound','/api/templates','./api/template','/api/triggers','./api/trigger','/api/variables','./api/variable','/api/integrations','./api/integration','/api/analytics/custom_reports','./api/analyticCustomReport','/api/analytics/default_reports','./api/analyticDefaultReport','/api/analytics/extracted_reports','/api/analytics/metrics','./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/configurations','/api/integrations/zoho/accounts','./api/intZohoAccount','/api/integrations/zoho/configurations','./api/intZohoConfiguration','/api/integrations/zoho/fields','./api/intZohoField','/api/integrations/zendesk/accounts','./api/intZendeskAccount','/api/integrations/zendesk/configurations','/api/integrations/zendesk/fields','./api/intZendeskField','./api/intFreshdeskAccount','/api/integrations/freshdesk/configurations'];(function(_0x50aa2e,_0xfbd6f0){var _0x5e07f0=function(_0x3ed540){while(--_0x3ed540){_0x50aa2e['push'](_0x50aa2e['shift']());}};_0x5e07f0(++_0xfbd6f0);}(_0x93cf,0x96));var _0xf93c=function(_0x2bf141,_0x31eac7){_0x2bf141=_0x2bf141-0x0;var _0x48277b=_0x93cf[_0x2bf141];return _0x48277b;};'use strict';var _=require(_0xf93c('0x0'));var path=require(_0xf93c('0x1'));var express=require(_0xf93c('0x2'));var ewinston=require(_0xf93c('0x3'));var util=require(_0xf93c('0x4'));var errors=require('./errors');var config=require(_0xf93c('0x5'));var logger=require('./config/logger')('api');var authLogger=require(_0xf93c('0x6'))(_0xf93c('0x7'));var safeTemplate=require(_0xf93c('0x8'))[_0xf93c('0x9')];exports[_0xf93c('0xa')]=function(_0x3ec12f){_0x3ec12f['use'](ewinston['logger']({'winstonInstance':logger,'meta':![],'statusLevels':!![],'msg':function(_0x26af8c,_0x547c5b){var _0x10426c='%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s';if(!_[_0xf93c('0xb')](_0x26af8c[_0xf93c('0xc')])){_0x10426c+=_0xf93c('0xd');var _0x2c92a9=_0x26af8c[_0xf93c('0xc')];maskSensitiveData(_0x2c92a9);}return safeTemplate(util[_0xf93c('0xe')](_0x10426c,_0x26af8c[_0xf93c('0xf')],_0x26af8c[_0xf93c('0x10')][_0xf93c('0x11')]?_0x26af8c[_0xf93c('0x10')][_0xf93c('0x11')]:_0x26af8c[_0xf93c('0x12')]['remoteAddress']||_0x26af8c['ip'],_0x26af8c[_0xf93c('0x13')],_0x547c5b[_0xf93c('0x14')],_0x547c5b['responseTime'],_0x26af8c['user']?_0x26af8c[_0xf93c('0x15')]['id']:null,_0x26af8c[_0xf93c('0x15')]?_0x26af8c[_0xf93c('0x15')][_0xf93c('0x16')]:null,_0x26af8c['user']?_0x26af8c['user'][_0xf93c('0x17')]:null,_0x2c92a9?util['inspect'](_0x2c92a9,![],null):''));}}));_0x3ec12f[_0xf93c('0x18')](ewinston[_0xf93c('0x19')]({'winstonInstance':authLogger,'meta':![],'statusLevels':!![],'msg':function(_0x52e441,_0x395531){var _0x27b8b8='%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s';if(_0x52e441['body']&&_0x52e441[_0xf93c('0xc')]['device']&&_0x52e441[_0xf93c('0xc')]['agent_id']){_0x27b8b8='%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s\x20(id=%s\x20name=%s)';}return util[_0xf93c('0xe')](_0x27b8b8,_0x52e441[_0xf93c('0xf')],_0x52e441[_0xf93c('0x10')][_0xf93c('0x11')]?_0x52e441['headers'][_0xf93c('0x11')]:_0x52e441[_0xf93c('0x12')][_0xf93c('0x1a')]||_0x52e441['ip'],_0x52e441[_0xf93c('0x13')],_0x395531[_0xf93c('0x14')],_0x395531[_0xf93c('0x1b')],_0x52e441[_0xf93c('0x15')]?_0x52e441['user']['id']:null,_0x52e441['user']?_0x52e441[_0xf93c('0x15')][_0xf93c('0x16')]:null,_0x52e441['user']?_0x52e441[_0xf93c('0x15')][_0xf93c('0x17')]:null,_0x52e441[_0xf93c('0xc')]&&_0x52e441[_0xf93c('0xc')]['device']?_0x52e441['body'][_0xf93c('0x1c')]:'other',_0x52e441[_0xf93c('0xc')]&&_0x52e441[_0xf93c('0xc')]['agent_id']?_0x52e441[_0xf93c('0xc')][_0xf93c('0x1d')]:'',_0x52e441[_0xf93c('0xc')]&&_0x52e441[_0xf93c('0xc')]['agent_name']?_0x52e441['body'][_0xf93c('0x1e')]:'');},'ignoreRoute':function(_0x33673e){var _0x381eec=/\/api\/users\/[0-9]+\/(login|logout)/gi;return!_0x381eec['test'](_0x33673e[_0xf93c('0x13')]);}}));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0x1f'),require('./api/user'));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0x20'),require('./api/voiceChanSpy'));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0x21'),require(_0xf93c('0x22')));_0x3ec12f['use'](_0xf93c('0x23'),require(_0xf93c('0x24')));_0x3ec12f[_0xf93c('0x18')]('/api/voice/mohs',require(_0xf93c('0x25')));_0x3ec12f[_0xf93c('0x18')]('/api/voice/queues',require(_0xf93c('0x26')));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0x27'),require(_0xf93c('0x28')));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0x29'),require(_0xf93c('0x2a')));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0x2b'),require(_0xf93c('0x2c')));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0x2d'),require(_0xf93c('0x2e')));_0x3ec12f[_0xf93c('0x18')]('/api/voice/calls/reports',require(_0xf93c('0x2f')));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0x30'),require('./api/voiceDialReport'));_0x3ec12f['use'](_0xf93c('0x31'),require(_0xf93c('0x32')));_0x3ec12f['use'](_0xf93c('0x33'),require(_0xf93c('0x34')));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0x35'),require(_0xf93c('0x36')));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0x37'),require('./api/trunk'));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0x38'),require(_0xf93c('0x39')));_0x3ec12f['use'](_0xf93c('0x3a'),require(_0xf93c('0x3b')));_0x3ec12f['use'](_0xf93c('0x3c'),require('./api/mailAccount'));_0x3ec12f['use'](_0xf93c('0x3d'),require('./api/mailQueue'));_0x3ec12f[_0xf93c('0x18')]('/api/mail/substatuses',require(_0xf93c('0x3e')));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0x3f'),require(_0xf93c('0x40')));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0x41'),require('./api/mailMessage'));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0x42'),require(_0xf93c('0x43')));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0x44'),require(_0xf93c('0x45')));_0x3ec12f['use']('/api/dashboards',require('./api/dashboard'));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0x46'),require(_0xf93c('0x47')));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0x48'),require(_0xf93c('0x49')));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0x4a'),require('./api/faxApplication'));_0x3ec12f['use'](_0xf93c('0x4b'),require('./api/faxInteraction'));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0x4c'),require(_0xf93c('0x4d')));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0x4e'),require(_0xf93c('0x4f')));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0x50'),require(_0xf93c('0x51')));_0x3ec12f[_0xf93c('0x18')]('/api/sms/accounts',require('./api/smsAccount'));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0x52'),require(_0xf93c('0x53')));_0x3ec12f['use'](_0xf93c('0x54'),require('./api/smsInteraction'));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0x55'),require(_0xf93c('0x56')));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0x57'),require('./api/smsQueue'));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0x58'),require('./api/openchannelAccount'));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0x59'),require(_0xf93c('0x5a')));_0x3ec12f[_0xf93c('0x18')]('/api/openchannel/interactions',require('./api/openchannelInteraction'));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0x5b'),require(_0xf93c('0x5c')));_0x3ec12f[_0xf93c('0x18')]('/api/openchannel/queues',require(_0xf93c('0x5d')));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0x5e'),require(_0xf93c('0x5f')));_0x3ec12f['use'](_0xf93c('0x60'),require('./api/openchannelQueueReport'));_0x3ec12f[_0xf93c('0x18')]('/api/chat/applications',require('./api/chatApplication'));_0x3ec12f[_0xf93c('0x18')]('/api/chat/interactions',require(_0xf93c('0x61')));_0x3ec12f['use'](_0xf93c('0x62'),require(_0xf93c('0x63')));_0x3ec12f[_0xf93c('0x18')]('/api/chat/offline_messages',require(_0xf93c('0x64')));_0x3ec12f[_0xf93c('0x18')]('/api/chat/queues',require(_0xf93c('0x65')));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0x66'),require(_0xf93c('0x67')));_0x3ec12f['use'](_0xf93c('0x68'),require(_0xf93c('0x69')));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0x6a'),require(_0xf93c('0x6b')));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0x6c'),require(_0xf93c('0x6d')));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0x6e'),require('./api/cmHopper'));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0x6f'),require('./api/cmHopperBlack'));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0x70'),require('./api/cmHopperFinal'));_0x3ec12f[_0xf93c('0x18')]('/api/cm/hopper_history',require(_0xf93c('0x71')));_0x3ec12f['use'](_0xf93c('0x72'),require('./api/cmCustomField'));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0x73'),require(_0xf93c('0x74')));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0x75'),require(_0xf93c('0x76')));_0x3ec12f['use']('/api/canned_answers',require(_0xf93c('0x77')));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0x78'),require(_0xf93c('0x79')));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0x7a'),require(_0xf93c('0x7b')));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0x7c'),require(_0xf93c('0x7d')));_0x3ec12f[_0xf93c('0x18')]('/api/pauses',require('./api/pause'));_0x3ec12f['use']('/api/cdr',require(_0xf93c('0x7e')));_0x3ec12f['use'](_0xf93c('0x7f'),require(_0xf93c('0x80')));_0x3ec12f['use'](_0xf93c('0x81'),require('./api/schedule'));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0x82'),require(_0xf93c('0x83')));_0x3ec12f[_0xf93c('0x18')]('/api/tags',require('./api/tag'));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0x84'),require(_0xf93c('0x85')));_0x3ec12f['use'](_0xf93c('0x86'),require(_0xf93c('0x87')));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0x88'),require(_0xf93c('0x89')));_0x3ec12f['use'](_0xf93c('0x8a'),require(_0xf93c('0x8b')));_0x3ec12f[_0xf93c('0x18')]('/api/integrations/reports',require('./api/integrationReport'));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0x8c'),require(_0xf93c('0x8d')));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0x8e'),require(_0xf93c('0x8f')));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0x90'),require('./api/analyticExtractedReport'));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0x91'),require('./api/analyticMetric'));_0x3ec12f[_0xf93c('0x18')]('/api/analytics/field_reports',require(_0xf93c('0x92')));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0x93'),require(_0xf93c('0x94')));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0x95'),require(_0xf93c('0x96')));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0x97'),require(_0xf93c('0x98')));_0x3ec12f['use'](_0xf93c('0x99'),require(_0xf93c('0x9a')));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0x9b'),require(_0xf93c('0x9c')));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0x9d'),require('./api/intSugarcrmConfiguration'));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0x9e'),require(_0xf93c('0x9f')));_0x3ec12f[_0xf93c('0x18')]('/api/integrations/desk/accounts',require('./api/intDeskAccount'));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0xa0'),require('./api/intDeskConfiguration'));_0x3ec12f[_0xf93c('0x18')]('/api/integrations/desk/fields',require('./api/intDeskField'));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0xa1'),require(_0xf93c('0xa2')));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0xa3'),require(_0xf93c('0xa4')));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0xa5'),require(_0xf93c('0xa6')));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0xa7'),require(_0xf93c('0xa8')));_0x3ec12f['use'](_0xf93c('0xa9'),require('./api/intZendeskConfiguration'));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0xaa'),require(_0xf93c('0xab')));_0x3ec12f['use']('/api/integrations/freshdesk/accounts',require(_0xf93c('0xac')));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0xad'),require('./api/intFreshdeskConfiguration'));_0x3ec12f['use'](_0xf93c('0xae'),require('./api/intFreshdeskField'));_0x3ec12f['use'](_0xf93c('0xaf'),require(_0xf93c('0xb0')));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0xb1'),require(_0xf93c('0xb2')));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0xb3'),require(_0xf93c('0xb4')));_0x3ec12f[_0xf93c('0x18')]('/api/integrations/servicenow/accounts',require('./api/intServicenowAccount'));_0x3ec12f['use'](_0xf93c('0xb5'),require(_0xf93c('0xb6')));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0xb7'),require(_0xf93c('0xb8')));_0x3ec12f['use'](_0xf93c('0xb9'),require(_0xf93c('0xba')));_0x3ec12f['use'](_0xf93c('0xbb'),require(_0xf93c('0xbc')));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0xbd'),require(_0xf93c('0xbe')));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0xbf'),require(_0xf93c('0xc0')));_0x3ec12f['use']('/api/integrations/freshsales/configurations',require(_0xf93c('0xc1')));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0xc2'),require(_0xf93c('0xc3')));_0x3ec12f['use'](_0xf93c('0xc4'),require(_0xf93c('0xc5')));_0x3ec12f['use'](_0xf93c('0xc6'),require(_0xf93c('0xc7')));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0xc8'),require(_0xf93c('0xc9')));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0xca'),require(_0xf93c('0xcb')));_0x3ec12f[_0xf93c('0x18')]('/api/jscripty/questions/reports',require(_0xf93c('0xcc')));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0xcd'),require('./api/jscriptySessionReport'));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0xce'),require(_0xf93c('0xcf')));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0xd0'),require('./api/squareReport'));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0xd1'),require(_0xf93c('0xd2')));_0x3ec12f[_0xf93c('0x18')]('/api/jscripty/projects',require(_0xf93c('0xd3')));_0x3ec12f[_0xf93c('0x18')]('/api/settings',require(_0xf93c('0xd4')));_0x3ec12f['use'](_0xf93c('0xd5'),require(_0xf93c('0xd6')));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0xd7'),require('./api/squareProject'));_0x3ec12f[_0xf93c('0x18')]('/api/square/recordings',require('./api/squareRecording'));_0x3ec12f['use']('/api/square/messages',require(_0xf93c('0xd8')));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0xd9'),require('./api/team'));_0x3ec12f['use'](_0xf93c('0xda'),require(_0xf93c('0xdb')));_0x3ec12f['use'](_0xf93c('0xdc'),require('./api/campaign'));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0xdd'),require(_0xf93c('0xde')));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0xdf'),require(_0xf93c('0xe0')));_0x3ec12f['use']('/api/plugins',require(_0xf93c('0xe1')));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0xe2'),require(_0xf93c('0xe3')));_0x3ec12f['use'](_0xf93c('0xe4'),require('./api/chatTransferReport'));_0x3ec12f[_0xf93c('0x18')]('/api/fax/reports/transfer',require('./api/faxTransferReport'));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0xe5'),require(_0xf93c('0xe6')));_0x3ec12f[_0xf93c('0x18')]('/api/sms/reports/transfer',require(_0xf93c('0xe7')));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0xe8'),require(_0xf93c('0xe9')));_0x3ec12f[_0xf93c('0x18')]('/api/voice/prefixes',require(_0xf93c('0xea')));_0x3ec12f['use'](_0xf93c('0xeb'),require(_0xf93c('0xec')));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0xed'),require('./api/userProfileSection'));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0xee'),require('./api/userProfileResource'));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0xef'),require('./api/userNotification'));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0xf0'),require(_0xf93c('0xf1')));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0xf2'),require(_0xf93c('0xf3')));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0xf4'),require(_0xf93c('0xf5')));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0xf6'),require(_0xf93c('0xf7')));_0x3ec12f[_0xf93c('0x18')]('/api/whatsapp/reports/queue',require(_0xf93c('0xf8')));_0x3ec12f[_0xf93c('0x18')]('/api/whatsapp/reports/transfer',require(_0xf93c('0xf9')));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0xfa'),require(_0xf93c('0xfb')));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0xfc'),require(_0xf93c('0xfd')));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0xfe'),require(_0xf93c('0xff')));_0x3ec12f['use'](_0xf93c('0x100'),require(_0xf93c('0x101')));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0x102'),require(_0xf93c('0x103')));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0x104'),require(_0xf93c('0x105')));_0x3ec12f['use']('/api/rpc',require(_0xf93c('0x106')));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0x107'),require(_0xf93c('0x108')));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0x109'),require(_0xf93c('0x10a')));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0x10b'),require('./api/pm2'));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0x10c'),require(_0xf93c('0x10d')));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0x10e'),express['static'](path['join'](config['root'],_0xf93c('0x10e'))));_0x3ec12f['use']('/www',express[_0xf93c('0x10f')](path[_0xf93c('0x110')](config[_0xf93c('0x111')],_0xf93c('0x112'))));_0x3ec12f['use'](_0xf93c('0x113'),express[_0xf93c('0x10f')](path[_0xf93c('0x110')](config[_0xf93c('0x111')],_0xf93c('0x113'))));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0x114'),express['static'](path['join'](config[_0xf93c('0x111')],'snippet','3.0.0')));_0x3ec12f[_0xf93c('0x18')](_0xf93c('0x115'),express[_0xf93c('0x10f')](path[_0xf93c('0x110')](config[_0xf93c('0x111')],_0xf93c('0x116'))));_0x3ec12f['route']('/:url(api|auth|components|app|bower_components|assets)/*')[_0xf93c('0x117')](errors[0x194]);_0x3ec12f[_0xf93c('0x118')]('/*')[_0xf93c('0x117')](function(_0x5afc55,_0x941ee5){_0x941ee5['sendFile'](path[_0xf93c('0x119')](_0x3ec12f[_0xf93c('0x117')](_0xf93c('0x11a'))+'/index.html'));});};var sensitiveFields=[_0xf93c('0x11b'),_0xf93c('0x11c'),_0xf93c('0x11d'),_0xf93c('0x11e'),_0xf93c('0x11f'),_0xf93c('0x120'),_0xf93c('0x121'),_0xf93c('0x122'),_0xf93c('0x123'),'fax',_0xf93c('0x124'),_0xf93c('0x125'),_0xf93c('0x126'),_0xf93c('0x127'),'code',_0xf93c('0x128'),_0xf93c('0x129'),_0xf93c('0x12a'),_0xf93c('0x12b'),_0xf93c('0x12c'),_0xf93c('0x12d'),_0xf93c('0x12e'),_0xf93c('0x12f'),_0xf93c('0x130'),'membername',_0xf93c('0x131'),_0xf93c('0x132'),_0xf93c('0x133'),'vidaooApiKey',_0xf93c('0x134'),'privateKey',_0xf93c('0x135'),_0xf93c('0x136'),_0xf93c('0x137'),_0xf93c('0x15'),'pass',_0xf93c('0x138'),_0xf93c('0x139'),_0xf93c('0x13a'),'secret',_0xf93c('0x13b'),_0xf93c('0x13c')];function maskSensitiveData(_0x2a2cfd){var _0x2245bb=/(?!^)[\s\S](?!$)/g;if(!_[_0xf93c('0x13d')](_0x2a2cfd))return;for(var _0x203bb2 in _0x2a2cfd){if(_[_0xf93c('0x13e')](_0x2a2cfd[_0x203bb2])){for(var _0x4c6277=0x0;_0x4c6277<_0x2a2cfd[_0x203bb2][_0xf93c('0x13f')];_0x4c6277++){maskSensitiveData(_0x2a2cfd[_0x203bb2][_0x4c6277]);}}else if(_[_0xf93c('0x13d')](_0x2a2cfd[_0x203bb2])){maskSensitiveData(_0x2a2cfd[_0x203bb2]);}else if(_['isString'](_0x2a2cfd[_0x203bb2])){_0x2a2cfd[_0x203bb2]=_0x2a2cfd[_0x203bb2][_0xf93c('0x140')](/{{{/g,_0xf93c('0x141'))['replace'](/}}}/g,_0xf93c('0x142'))['replace'](/{{/g,'@{')[_0xf93c('0x140')](/}}/g,'}@');if(_[_0xf93c('0x143')](sensitiveFields,_0x203bb2)){_0x2a2cfd[_0x203bb2]=_0x2a2cfd[_0x203bb2][_0xf93c('0x140')](_0x2245bb,'*');}}}}
\ No newline at end of file
index 1cb8884..6c3c16d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb361=['../api/reportAgentPreview/reportAgentPreview.rpc','../api/interval/interval.rpc','../api/pause/pause.rpc','../api/intSalesforceAccount/intSalesforceAccount.rpc','../api/intSugarcrmAccount/intSugarcrmAccount.rpc','../api/intZohoAccount/intZohoAccount.rpc','../api/intFreshdeskAccount/intFreshdeskAccount.rpc','../api/intVtigerAccount/intVtigerAccount.rpc','../api/intServicenowAccount/intServicenowAccount.rpc','../api/intDynamics365Account/intDynamics365Account.rpc','../api/intFreshsalesAccount/intFreshsalesAccount.rpc','../api/chatQueueReport/chatQueueReport.rpc','../api/squareReport/squareReport.rpc','../api/squareReportDetail/squareReportDetail.rpc','../api/setting/setting.rpc','../api/squareOdbc/squareOdbc.rpc','../api/squareRecording/squareRecording.rpc','../api/squareMessage/squareMessage.rpc','../api/attachment/attachment.rpc','../api/plugin/plugin.rpc','../api/whatsappAccount/whatsappAccount.rpc','../api/whatsappInteraction/whatsappInteraction.rpc','../api/whatsappMessage/whatsappMessage.rpc','../api/whatsappQueueReport/whatsappQueueReport.rpc','../api/whatsappQueue/whatsappQueue.rpc','http','rpc','port','localhost','error','listen','Express\x20RPC\x20server\x20listening\x20on\x20%s:%d!','../config/triggers','jayson/promise','bluebird','../config/environment','../api/user/user.rpc','merge','../api/voiceExtension/voiceExtension.rpc','../api/voiceQueue/voiceQueue.rpc','../api/voiceRecording/voiceRecording.rpc','../api/voiceDialReport/voiceDialReport.rpc','../api/voiceAgentReport/voiceAgentReport.rpc','../api/voiceQueueReport/voiceQueueReport.rpc','../api/memberReport/memberReport.rpc','../api/trunk/trunk.rpc','../api/userVoiceQueueRt/userVoiceQueueRt.rpc','../api/mailAccount/mailAccount.rpc','../api/mailQueue/mailQueue.rpc','../api/mailInteraction/mailInteraction.rpc','../api/mailMessage/mailMessage.rpc','../api/mailApplication/mailApplication.rpc','../api/faxAccount/faxAccount.rpc','../api/faxApplication/faxApplication.rpc','../api/faxMessage/faxMessage.rpc','../api/faxQueueReport/faxQueueReport.rpc','../api/smsInteraction/smsInteraction.rpc','../api/smsMessage/smsMessage.rpc','../api/smsQueue/smsQueue.rpc','../api/openchannelApplication/openchannelApplication.rpc','../api/openchannelInteraction/openchannelInteraction.rpc','../api/openchannelMessage/openchannelMessage.rpc','../api/openchannelQueue/openchannelQueue.rpc','../api/chatInteraction/chatInteraction.rpc','../api/chatMessage/chatMessage.rpc','../api/chatQueue/chatQueue.rpc','../api/cmContact/cmContact.rpc','../api/cmHopperHistory/cmHopperHistory.rpc'];(function(_0x5d2803,_0xf375bd){var _0xdcad2c=function(_0x3c3a98){while(--_0x3c3a98){_0x5d2803['push'](_0x5d2803['shift']());}};_0xdcad2c(++_0xf375bd);}(_0xb361,0x175));var _0x1b36=function(_0x4daedb,_0x5cfd60){_0x4daedb=_0x4daedb-0x0;var _0x38341d=_0xb361[_0x4daedb];return _0x38341d;};'use strict';var jayson=require(_0x1b36('0x0'));var BPromise=require(_0x1b36('0x1'));var _=require('lodash');var config=require(_0x1b36('0x2'));exports['listen']=function(){return new BPromise(function(_0x44347f,_0x1415cf){var _0x2a61e6={};_0x2a61e6=_['merge'](_0x2a61e6,require(_0x1b36('0x3')));_0x2a61e6=_[_0x1b36('0x4')](_0x2a61e6,require(_0x1b36('0x5')));_0x2a61e6=_[_0x1b36('0x4')](_0x2a61e6,require(_0x1b36('0x6')));_0x2a61e6=_['merge'](_0x2a61e6,require(_0x1b36('0x7')));_0x2a61e6=_[_0x1b36('0x4')](_0x2a61e6,require('../api/voiceCallReport/voiceCallReport.rpc'));_0x2a61e6=_[_0x1b36('0x4')](_0x2a61e6,require(_0x1b36('0x8')));_0x2a61e6=_[_0x1b36('0x4')](_0x2a61e6,require(_0x1b36('0x9')));_0x2a61e6=_[_0x1b36('0x4')](_0x2a61e6,require(_0x1b36('0xa')));_0x2a61e6=_['merge'](_0x2a61e6,require(_0x1b36('0xb')));_0x2a61e6=_[_0x1b36('0x4')](_0x2a61e6,require(_0x1b36('0xc')));_0x2a61e6=_[_0x1b36('0x4')](_0x2a61e6,require('../api/voiceTransferReport/voiceTransferReport.rpc'));_0x2a61e6=_[_0x1b36('0x4')](_0x2a61e6,require(_0x1b36('0xd')));_0x2a61e6=_[_0x1b36('0x4')](_0x2a61e6,require('../api/mailServerIn/mailServerIn.rpc'));_0x2a61e6=_[_0x1b36('0x4')](_0x2a61e6,require(_0x1b36('0xe')));_0x2a61e6=_[_0x1b36('0x4')](_0x2a61e6,require(_0x1b36('0xf')));_0x2a61e6=_[_0x1b36('0x4')](_0x2a61e6,require(_0x1b36('0x10')));_0x2a61e6=_[_0x1b36('0x4')](_0x2a61e6,require(_0x1b36('0x11')));_0x2a61e6=_['merge'](_0x2a61e6,require(_0x1b36('0x12')));_0x2a61e6=_['merge'](_0x2a61e6,require('../api/mailQueueReport/mailQueueReport.rpc'));_0x2a61e6=_[_0x1b36('0x4')](_0x2a61e6,require(_0x1b36('0x13')));_0x2a61e6=_[_0x1b36('0x4')](_0x2a61e6,require(_0x1b36('0x14')));_0x2a61e6=_[_0x1b36('0x4')](_0x2a61e6,require('../api/faxInteraction/faxInteraction.rpc'));_0x2a61e6=_[_0x1b36('0x4')](_0x2a61e6,require(_0x1b36('0x15')));_0x2a61e6=_[_0x1b36('0x4')](_0x2a61e6,require('../api/faxQueue/faxQueue.rpc'));_0x2a61e6=_['merge'](_0x2a61e6,require(_0x1b36('0x16')));_0x2a61e6=_[_0x1b36('0x4')](_0x2a61e6,require('../api/smsAccount/smsAccount.rpc'));_0x2a61e6=_[_0x1b36('0x4')](_0x2a61e6,require(_0x1b36('0x17')));_0x2a61e6=_['merge'](_0x2a61e6,require(_0x1b36('0x18')));_0x2a61e6=_[_0x1b36('0x4')](_0x2a61e6,require(_0x1b36('0x19')));_0x2a61e6=_[_0x1b36('0x4')](_0x2a61e6,require(_0x1b36('0x1a')));_0x2a61e6=_[_0x1b36('0x4')](_0x2a61e6,require(_0x1b36('0x1b')));_0x2a61e6=_[_0x1b36('0x4')](_0x2a61e6,require(_0x1b36('0x1c')));_0x2a61e6=_[_0x1b36('0x4')](_0x2a61e6,require(_0x1b36('0x1d')));_0x2a61e6=_['merge'](_0x2a61e6,require('../api/openchannelQueueReport/openchannelQueueReport.rpc'));_0x2a61e6=_[_0x1b36('0x4')](_0x2a61e6,require(_0x1b36('0x1e')));_0x2a61e6=_[_0x1b36('0x4')](_0x2a61e6,require(_0x1b36('0x1f')));_0x2a61e6=_[_0x1b36('0x4')](_0x2a61e6,require(_0x1b36('0x20')));_0x2a61e6=_['merge'](_0x2a61e6,require(_0x1b36('0x21')));_0x2a61e6=_[_0x1b36('0x4')](_0x2a61e6,require('../api/cmHopper/cmHopper.rpc'));_0x2a61e6=_['merge'](_0x2a61e6,require('../api/cmHopperBlack/cmHopperBlack.rpc'));_0x2a61e6=_['merge'](_0x2a61e6,require('../api/cmHopperFinal/cmHopperFinal.rpc'));_0x2a61e6=_['merge'](_0x2a61e6,require(_0x1b36('0x22')));_0x2a61e6=_[_0x1b36('0x4')](_0x2a61e6,require(_0x1b36('0x23')));_0x2a61e6=_[_0x1b36('0x4')](_0x2a61e6,require(_0x1b36('0x24')));_0x2a61e6=_[_0x1b36('0x4')](_0x2a61e6,require(_0x1b36('0x25')));_0x2a61e6=_[_0x1b36('0x4')](_0x2a61e6,require('../api/sound/sound.rpc'));_0x2a61e6=_[_0x1b36('0x4')](_0x2a61e6,require('../api/template/template.rpc'));_0x2a61e6=_[_0x1b36('0x4')](_0x2a61e6,require('../api/trigger/trigger.rpc'));_0x2a61e6=_[_0x1b36('0x4')](_0x2a61e6,require('../api/variable/variable.rpc'));_0x2a61e6=_[_0x1b36('0x4')](_0x2a61e6,require(_0x1b36('0x26')));_0x2a61e6=_['merge'](_0x2a61e6,require(_0x1b36('0x27')));_0x2a61e6=_[_0x1b36('0x4')](_0x2a61e6,require('../api/intDeskAccount/intDeskAccount.rpc'));_0x2a61e6=_[_0x1b36('0x4')](_0x2a61e6,require(_0x1b36('0x28')));_0x2a61e6=_[_0x1b36('0x4')](_0x2a61e6,require('../api/intZendeskAccount/intZendeskAccount.rpc'));_0x2a61e6=_[_0x1b36('0x4')](_0x2a61e6,require(_0x1b36('0x29')));_0x2a61e6=_['merge'](_0x2a61e6,require(_0x1b36('0x2a')));_0x2a61e6=_['merge'](_0x2a61e6,require(_0x1b36('0x2b')));_0x2a61e6=_[_0x1b36('0x4')](_0x2a61e6,require(_0x1b36('0x2c')));_0x2a61e6=_[_0x1b36('0x4')](_0x2a61e6,require(_0x1b36('0x2d')));_0x2a61e6=_[_0x1b36('0x4')](_0x2a61e6,require(_0x1b36('0x2e')));_0x2a61e6=_[_0x1b36('0x4')](_0x2a61e6,require('../api/smsQueueReport/smsQueueReport.rpc'));_0x2a61e6=_['merge'](_0x2a61e6,require(_0x1b36('0x2f')));_0x2a61e6=_[_0x1b36('0x4')](_0x2a61e6,require(_0x1b36('0x30')));_0x2a61e6=_[_0x1b36('0x4')](_0x2a61e6,require(_0x1b36('0x31')));_0x2a61e6=_[_0x1b36('0x4')](_0x2a61e6,require(_0x1b36('0x32')));_0x2a61e6=_[_0x1b36('0x4')](_0x2a61e6,require('../api/squareProject/squareProject.rpc'));_0x2a61e6=_['merge'](_0x2a61e6,require(_0x1b36('0x33')));_0x2a61e6=_[_0x1b36('0x4')](_0x2a61e6,require(_0x1b36('0x34')));_0x2a61e6=_[_0x1b36('0x4')](_0x2a61e6,require('../api/campaign/campaign.rpc'));_0x2a61e6=_[_0x1b36('0x4')](_0x2a61e6,require(_0x1b36('0x35')));_0x2a61e6=_[_0x1b36('0x4')](_0x2a61e6,require(_0x1b36('0x36')));_0x2a61e6=_[_0x1b36('0x4')](_0x2a61e6,require(_0x1b36('0x37')));_0x2a61e6=_['merge'](_0x2a61e6,require(_0x1b36('0x38')));_0x2a61e6=_[_0x1b36('0x4')](_0x2a61e6,require(_0x1b36('0x39')));_0x2a61e6=_[_0x1b36('0x4')](_0x2a61e6,require(_0x1b36('0x3a')));_0x2a61e6=_[_0x1b36('0x4')](_0x2a61e6,require(_0x1b36('0x3b')));var _0x42ca84=jayson['server'](_0x2a61e6)[_0x1b36('0x3c')]();var _0x4e3b9c=config[_0x1b36('0x3d')][_0x1b36('0x3e')]||config[_0x1b36('0x3e')]+0x1;var _0x64d864=config[_0x1b36('0x3d')]['ip']||_0x1b36('0x3f');_0x42ca84['on'](_0x1b36('0x40'),function(_0x518d64){return _0x1415cf(_0x518d64);});_0x42ca84[_0x1b36('0x41')](_0x4e3b9c,_0x64d864,function(){console['log'](_0x1b36('0x42'),_0x64d864,_0x4e3b9c);require(_0x1b36('0x43'))['default']();return _0x44347f('RPC\x20listening\x20on\x20'+_0x64d864+':'+_0x4e3b9c);});});};
\ No newline at end of file
+var _0xffc4=['../api/intVtigerAccount/intVtigerAccount.rpc','../api/intDynamics365Account/intDynamics365Account.rpc','../api/chatQueueReport/chatQueueReport.rpc','../api/smsQueueReport/smsQueueReport.rpc','../api/squareReportDetail/squareReportDetail.rpc','../api/squareOdbc/squareOdbc.rpc','../api/squareProject/squareProject.rpc','../api/squareRecording/squareRecording.rpc','../api/campaign/campaign.rpc','../api/plugin/plugin.rpc','../api/whatsappAccount/whatsappAccount.rpc','../api/whatsappInteraction/whatsappInteraction.rpc','../api/whatsappMessage/whatsappMessage.rpc','../api/whatsappQueueReport/whatsappQueueReport.rpc','server','http','port','localhost','error','log','Express\x20RPC\x20server\x20listening\x20on\x20%s:%d!','default','RPC\x20listening\x20on\x20','jayson/promise','bluebird','../config/environment','listen','merge','../api/voiceQueue/voiceQueue.rpc','../api/voiceRecording/voiceRecording.rpc','../api/voiceCallReport/voiceCallReport.rpc','../api/voiceDialReport/voiceDialReport.rpc','../api/voiceAgentReport/voiceAgentReport.rpc','../api/voiceQueueReport/voiceQueueReport.rpc','../api/memberReport/memberReport.rpc','../api/voiceTransferReport/voiceTransferReport.rpc','../api/mailServerIn/mailServerIn.rpc','../api/mailAccount/mailAccount.rpc','../api/mailQueue/mailQueue.rpc','../api/mailInteraction/mailInteraction.rpc','../api/mailMessage/mailMessage.rpc','../api/mailApplication/mailApplication.rpc','../api/mailQueueReport/mailQueueReport.rpc','../api/faxAccount/faxAccount.rpc','../api/faxInteraction/faxInteraction.rpc','../api/faxMessage/faxMessage.rpc','../api/faxQueue/faxQueue.rpc','../api/faxQueueReport/faxQueueReport.rpc','../api/smsAccount/smsAccount.rpc','../api/smsInteraction/smsInteraction.rpc','../api/smsMessage/smsMessage.rpc','../api/openchannelInteraction/openchannelInteraction.rpc','../api/openchannelQueue/openchannelQueue.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/cmHopperHistory/cmHopperHistory.rpc','../api/reportAgentPreview/reportAgentPreview.rpc','../api/trigger/trigger.rpc','../api/intDeskAccount/intDeskAccount.rpc','../api/intZohoAccount/intZohoAccount.rpc','../api/intFreshdeskAccount/intFreshdeskAccount.rpc'];(function(_0xd20b19,_0x467e87){var _0x99a02e=function(_0x2b9b43){while(--_0x2b9b43){_0xd20b19['push'](_0xd20b19['shift']());}};_0x99a02e(++_0x467e87);}(_0xffc4,0x19d));var _0x4ffc=function(_0x3f95f1,_0x46985f){_0x3f95f1=_0x3f95f1-0x0;var _0xbc81a6=_0xffc4[_0x3f95f1];return _0xbc81a6;};'use strict';var jayson=require(_0x4ffc('0x0'));var BPromise=require(_0x4ffc('0x1'));var _=require('lodash');var config=require(_0x4ffc('0x2'));exports[_0x4ffc('0x3')]=function(){return new BPromise(function(_0x3cdb3a,_0x49c970){var _0x50054b={};_0x50054b=_[_0x4ffc('0x4')](_0x50054b,require('../api/user/user.rpc'));_0x50054b=_[_0x4ffc('0x4')](_0x50054b,require('../api/voiceExtension/voiceExtension.rpc'));_0x50054b=_[_0x4ffc('0x4')](_0x50054b,require(_0x4ffc('0x5')));_0x50054b=_[_0x4ffc('0x4')](_0x50054b,require(_0x4ffc('0x6')));_0x50054b=_[_0x4ffc('0x4')](_0x50054b,require(_0x4ffc('0x7')));_0x50054b=_[_0x4ffc('0x4')](_0x50054b,require(_0x4ffc('0x8')));_0x50054b=_[_0x4ffc('0x4')](_0x50054b,require(_0x4ffc('0x9')));_0x50054b=_[_0x4ffc('0x4')](_0x50054b,require(_0x4ffc('0xa')));_0x50054b=_[_0x4ffc('0x4')](_0x50054b,require(_0x4ffc('0xb')));_0x50054b=_[_0x4ffc('0x4')](_0x50054b,require('../api/trunk/trunk.rpc'));_0x50054b=_[_0x4ffc('0x4')](_0x50054b,require(_0x4ffc('0xc')));_0x50054b=_[_0x4ffc('0x4')](_0x50054b,require('../api/userVoiceQueueRt/userVoiceQueueRt.rpc'));_0x50054b=_['merge'](_0x50054b,require(_0x4ffc('0xd')));_0x50054b=_[_0x4ffc('0x4')](_0x50054b,require(_0x4ffc('0xe')));_0x50054b=_[_0x4ffc('0x4')](_0x50054b,require(_0x4ffc('0xf')));_0x50054b=_[_0x4ffc('0x4')](_0x50054b,require(_0x4ffc('0x10')));_0x50054b=_[_0x4ffc('0x4')](_0x50054b,require(_0x4ffc('0x11')));_0x50054b=_[_0x4ffc('0x4')](_0x50054b,require(_0x4ffc('0x12')));_0x50054b=_['merge'](_0x50054b,require(_0x4ffc('0x13')));_0x50054b=_[_0x4ffc('0x4')](_0x50054b,require(_0x4ffc('0x14')));_0x50054b=_[_0x4ffc('0x4')](_0x50054b,require('../api/faxApplication/faxApplication.rpc'));_0x50054b=_['merge'](_0x50054b,require(_0x4ffc('0x15')));_0x50054b=_[_0x4ffc('0x4')](_0x50054b,require(_0x4ffc('0x16')));_0x50054b=_[_0x4ffc('0x4')](_0x50054b,require(_0x4ffc('0x17')));_0x50054b=_[_0x4ffc('0x4')](_0x50054b,require(_0x4ffc('0x18')));_0x50054b=_[_0x4ffc('0x4')](_0x50054b,require(_0x4ffc('0x19')));_0x50054b=_[_0x4ffc('0x4')](_0x50054b,require(_0x4ffc('0x1a')));_0x50054b=_[_0x4ffc('0x4')](_0x50054b,require(_0x4ffc('0x1b')));_0x50054b=_[_0x4ffc('0x4')](_0x50054b,require('../api/smsQueue/smsQueue.rpc'));_0x50054b=_['merge'](_0x50054b,require('../api/openchannelApplication/openchannelApplication.rpc'));_0x50054b=_[_0x4ffc('0x4')](_0x50054b,require(_0x4ffc('0x1c')));_0x50054b=_[_0x4ffc('0x4')](_0x50054b,require('../api/openchannelMessage/openchannelMessage.rpc'));_0x50054b=_[_0x4ffc('0x4')](_0x50054b,require(_0x4ffc('0x1d')));_0x50054b=_[_0x4ffc('0x4')](_0x50054b,require('../api/openchannelQueueReport/openchannelQueueReport.rpc'));_0x50054b=_[_0x4ffc('0x4')](_0x50054b,require(_0x4ffc('0x1e')));_0x50054b=_[_0x4ffc('0x4')](_0x50054b,require(_0x4ffc('0x1f')));_0x50054b=_[_0x4ffc('0x4')](_0x50054b,require(_0x4ffc('0x20')));_0x50054b=_[_0x4ffc('0x4')](_0x50054b,require(_0x4ffc('0x21')));_0x50054b=_['merge'](_0x50054b,require(_0x4ffc('0x22')));_0x50054b=_['merge'](_0x50054b,require(_0x4ffc('0x23')));_0x50054b=_[_0x4ffc('0x4')](_0x50054b,require('../api/cmHopperFinal/cmHopperFinal.rpc'));_0x50054b=_[_0x4ffc('0x4')](_0x50054b,require(_0x4ffc('0x24')));_0x50054b=_['merge'](_0x50054b,require(_0x4ffc('0x25')));_0x50054b=_['merge'](_0x50054b,require('../api/interval/interval.rpc'));_0x50054b=_[_0x4ffc('0x4')](_0x50054b,require('../api/pause/pause.rpc'));_0x50054b=_[_0x4ffc('0x4')](_0x50054b,require('../api/sound/sound.rpc'));_0x50054b=_[_0x4ffc('0x4')](_0x50054b,require('../api/template/template.rpc'));_0x50054b=_[_0x4ffc('0x4')](_0x50054b,require(_0x4ffc('0x26')));_0x50054b=_[_0x4ffc('0x4')](_0x50054b,require('../api/variable/variable.rpc'));_0x50054b=_['merge'](_0x50054b,require('../api/intSalesforceAccount/intSalesforceAccount.rpc'));_0x50054b=_[_0x4ffc('0x4')](_0x50054b,require('../api/intSugarcrmAccount/intSugarcrmAccount.rpc'));_0x50054b=_['merge'](_0x50054b,require(_0x4ffc('0x27')));_0x50054b=_[_0x4ffc('0x4')](_0x50054b,require(_0x4ffc('0x28')));_0x50054b=_[_0x4ffc('0x4')](_0x50054b,require('../api/intZendeskAccount/intZendeskAccount.rpc'));_0x50054b=_[_0x4ffc('0x4')](_0x50054b,require(_0x4ffc('0x29')));_0x50054b=_[_0x4ffc('0x4')](_0x50054b,require(_0x4ffc('0x2a')));_0x50054b=_[_0x4ffc('0x4')](_0x50054b,require('../api/intServicenowAccount/intServicenowAccount.rpc'));_0x50054b=_[_0x4ffc('0x4')](_0x50054b,require(_0x4ffc('0x2b')));_0x50054b=_[_0x4ffc('0x4')](_0x50054b,require('../api/intFreshsalesAccount/intFreshsalesAccount.rpc'));_0x50054b=_[_0x4ffc('0x4')](_0x50054b,require(_0x4ffc('0x2c')));_0x50054b=_[_0x4ffc('0x4')](_0x50054b,require(_0x4ffc('0x2d')));_0x50054b=_['merge'](_0x50054b,require('../api/squareReport/squareReport.rpc'));_0x50054b=_['merge'](_0x50054b,require(_0x4ffc('0x2e')));_0x50054b=_['merge'](_0x50054b,require('../api/setting/setting.rpc'));_0x50054b=_[_0x4ffc('0x4')](_0x50054b,require(_0x4ffc('0x2f')));_0x50054b=_['merge'](_0x50054b,require(_0x4ffc('0x30')));_0x50054b=_[_0x4ffc('0x4')](_0x50054b,require(_0x4ffc('0x31')));_0x50054b=_[_0x4ffc('0x4')](_0x50054b,require('../api/squareMessage/squareMessage.rpc'));_0x50054b=_['merge'](_0x50054b,require(_0x4ffc('0x32')));_0x50054b=_[_0x4ffc('0x4')](_0x50054b,require('../api/attachment/attachment.rpc'));_0x50054b=_[_0x4ffc('0x4')](_0x50054b,require(_0x4ffc('0x33')));_0x50054b=_[_0x4ffc('0x4')](_0x50054b,require(_0x4ffc('0x34')));_0x50054b=_['merge'](_0x50054b,require(_0x4ffc('0x35')));_0x50054b=_[_0x4ffc('0x4')](_0x50054b,require(_0x4ffc('0x36')));_0x50054b=_[_0x4ffc('0x4')](_0x50054b,require(_0x4ffc('0x37')));_0x50054b=_[_0x4ffc('0x4')](_0x50054b,require('../api/whatsappQueue/whatsappQueue.rpc'));var _0xde43e4=jayson[_0x4ffc('0x38')](_0x50054b)[_0x4ffc('0x39')]();var _0x2c0f88=config['rpc'][_0x4ffc('0x3a')]||config['port']+0x1;var _0x5532ca=config['rpc']['ip']||_0x4ffc('0x3b');_0xde43e4['on'](_0x4ffc('0x3c'),function(_0x4f6295){return _0x49c970(_0x4f6295);});_0xde43e4['listen'](_0x2c0f88,_0x5532ca,function(){console[_0x4ffc('0x3d')](_0x4ffc('0x3e'),_0x5532ca,_0x2c0f88);require('../config/triggers')[_0x4ffc('0x3f')]();return _0x3cdb3a(_0x4ffc('0x40')+_0x5532ca+':'+_0x2c0f88);});});};
\ No newline at end of file
diff --git a/server/safe-template.js b/server/safe-template.js
new file mode 100644 (file)
index 0000000..91cafcc
--- /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 _0x14a0=['string','replace','isPlainObject','keys','exports','safeTemplate','{\x20{\x20','\x20}\x20}'];(function(_0x174ef5,_0x256e8e){var _0x1cc379=function(_0x3eafcf){while(--_0x3eafcf){_0x174ef5['push'](_0x174ef5['shift']());}};_0x1cc379(++_0x256e8e);}(_0x14a0,0x8e));var _0x014a=function(_0x5d88f8,_0x1e4dfc){_0x5d88f8=_0x5d88f8-0x0;var _0x180076=_0x14a0[_0x5d88f8];return _0x180076;};var _=require('lodash');var mustacheLikeBracketsRx=/(\{|\}){2}/gm;function bracketsReplacer(_0x105436){return _0x105436==='{{'?_0x014a('0x0'):_0x014a('0x1');}function safeTemplate(_0x28b0f6){var _0x32e88c=_0x28b0f6;if(typeof _0x28b0f6===_0x014a('0x2')){_0x32e88c=_0x28b0f6[_0x014a('0x3')](mustacheLikeBracketsRx,bracketsReplacer);}else if(Array['isArray'](_0x28b0f6)){_0x32e88c=_0x28b0f6['map'](function(_0x1730a5){return safeTemplate(_0x1730a5);});}else if(_[_0x014a('0x4')](_0x28b0f6)){_0x32e88c=Object[_0x014a('0x5')](_0x28b0f6)['reduce'](function(_0x5a61ac,_0x11b8ce){_0x5a61ac[_0x11b8ce]=safeTemplate(_0x28b0f6[_0x11b8ce]);return _0x5a61ac;},{});}return _0x32e88c;}module[_0x014a('0x6')][_0x014a('0x7')]=safeTemplate;
\ No newline at end of file
index 841067c..da682a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe90c=['setExtension','SET\x20EXTENSION\x20%s','HANGUP','setVariable','isBoolean','isNumber','SET\x20VARIABLE\x20%s\x20\x22%s\x22','sayNumber','SAY\x20NUMBER\x20%s\x20%s','sayDigits','SAY\x20DIGITS\x20%s\x20%s','sayPhonetic','SAY\x20PHONETIC\x20\x22%s\x22\x20%s','continueAt','setContext','setPriority','GOTO\x20%s\x20%s\x20%s','getVariable','GET\x20VARIABLE\x20\x22%s\x22','recordFile','wav','RECORD\x20FILE\x20\x22%s\x22\x20\x22%s\x22\x20\x22%s\x22\x20%s\x20%s\x20%s','streamFile','STREAM\x20FILE\x20\x22%s\x22\x20\x22%s\x22','agi','AGI','wait','WAIT','noop','ID:%s\x20-\x20LABEL:\x20%s\x20-\x20MSG:\x20%s','exports','util','lodash','events','./reply','./error','call','setEncoding','utf8','ready','line','toLowerCase','hangup','emit','substring','520-Invalid','search','520\x20End\x20of\x20proper','function','no\x20code','replace','startsWith','split','length','match','error','E_AGI_SOCKET_ERROR','close','E_AGI_SOCKET_CLOSE','timeout','E_AGI_SOCKET_TIMEOUT','destroy','pipe','sync','prototype','answer','ANSWER','getData','beep','format','GET\x20DATA\x20\x22%s\x22\x20%s\x20%s','NO\x20MESSAGE','sendRequest','VERBOSE\x20\x22%s\x22','exec','EXEC\x20%s\x20%s','SET\x20CONTEXT\x20%s'];(function(_0x4ed2f1,_0x3623d1){var _0x2b45c1=function(_0x329031){while(--_0x329031){_0x4ed2f1['push'](_0x4ed2f1['shift']());}};_0x2b45c1(++_0x3623d1);}(_0xe90c,0x153));var _0xce90=function(_0x5d5d7b,_0x53d3a0){_0x5d5d7b=_0x5d5d7b-0x0;var _0x319b2e=_0xe90c[_0x5d5d7b];return _0x319b2e;};'use strict';var util=require(_0xce90('0x0'));var _=require(_0xce90('0x1'));var EventEmitter=require(_0xce90('0x2'))['EventEmitter'];var AGIReply=require(_0xce90('0x3'));var AGIError=require(_0xce90('0x4'));function AGIChannel(_0x56f0c3){var _0x4c7a9e=this,_0x1276c9=new AGIReply(),_0x166fb3=![],_0xf7a716={};EventEmitter[_0xce90('0x5')](_0x4c7a9e);_0x56f0c3[_0xce90('0x6')](_0xce90('0x7'));_0x56f0c3['setTimeout'](0x8*0x3c*0x3c*0x3e8);_0x1276c9[_0xce90('0x6')](_0xce90('0x7'));_0x1276c9['on']('headers',function(_0x270456){for(var _0x5af4ef in _0x270456){_0x4c7a9e[_0x5af4ef]=_0x270456[_0x5af4ef];}_0x4c7a9e['emit'](_0xce90('0x8'));});_0x1276c9['on'](_0xce90('0x9'),function(_0x213131){if(_0x213131[_0xce90('0xa')]()==_0xce90('0xb')){_0x4c7a9e[_0xce90('0xc')](_0xce90('0xb'));return;}if(_0x213131[_0xce90('0xd')](0x0,0xb)==_0xce90('0xe')){_0x166fb3=!![];}if(_0x166fb3){_0xf7a716['rx']+=_0x213131+'\x0a';if(_0x213131[_0xce90('0xf')](_0xce90('0x10'))!=-0x1){_0x166fb3=![];}}else{_0xf7a716['rx']=_0x213131;}if(_0x166fb3){return;}if(typeof _0xf7a716['cb']==_0xce90('0x11')){var _0x106f4e=_0xf7a716['rx'][_0xce90('0xd')](0x0,0x3),_0x30952b=null,_0x2b8ef2=null;_0x106f4e=parseInt(_0x106f4e);if(isNaN(_0x106f4e)){_0xf7a716['cb'](null,{'code':0x1f4,'result':-0x1,'extra':_0xce90('0x12')});return;}if(_0x106f4e!=0xc8){_0xf7a716['cb'](null,{'code':_0x106f4e,'result':-0x1,'extra':'KO'});return;}_0x30952b=_0xf7a716['rx']['substring'](0x4)[_0xce90('0x13')]('result=','');if(_0x30952b['indexOf']('\x20')!=-0x1){_0x30952b=_0x30952b['substr'](0x0,_0x30952b['indexOf']('\x20'));}if(_[_0xce90('0x14')](_0x30952b,'-1')){_0x30952b=parseInt(_0x30952b);}_0x2b8ef2=_0xf7a716['rx'][_0xce90('0x15')]('\x20');if(_0x2b8ef2['length']==0x3){_0x2b8ef2=_0x2b8ef2[0x2][_0xce90('0xd')](0x1,_0x2b8ef2[0x2][_0xce90('0x16')]-0x1);}else if(_0x2b8ef2[_0xce90('0x16')]>0x3){var _0x4686b3=/\((.+)\)/;var _0x4332be=_0xf7a716['rx'][_0xce90('0x17')](_0x4686b3);if(_0x4332be){_0x2b8ef2=_0x4332be[0x1];}else{_0x2b8ef2=null;}}else{_0x2b8ef2=null;}_0xf7a716['cb'](null,{'code':_0x106f4e,'result':_0x30952b,'extra':_0x2b8ef2});}});_0x56f0c3['on'](_0xce90('0x18'),function(_0x5c0fba){_0x4c7a9e[_0xce90('0xc')](_0xce90('0x18'),new AGIError(_0xce90('0x19'),_0x5c0fba['code']));});_0x56f0c3['on'](_0xce90('0x1a'),function(){_0x4c7a9e[_0xce90('0xc')]('close',new AGIError(_0xce90('0x1b')));});_0x56f0c3['on'](_0xce90('0x1c'),function(){_0x4c7a9e[_0xce90('0xc')]('timeout',new AGIError(_0xce90('0x1d')));_0x56f0c3[_0xce90('0x1e')]();});_0x56f0c3[_0xce90('0x1f')](_0x1276c9);this['command']=function(_0x3d3446,_0x5045e7){var _0x3d3446=_0x3d3446||'',_0x5045e7=typeof _0x5045e7==_0xce90('0x11')?_0x5045e7:new Function();_0xf7a716={'tx':_0x3d3446,'rx':'','cb':_0x5045e7};_0x56f0c3['write'](_0x3d3446+'\x0a');},this['close']=function(){_0x56f0c3[_0xce90('0x1e')]();};}util['inherits'](AGIChannel,EventEmitter);AGIChannel['prototype']['sendRequest']=function(_0x3bdb0b){return this['command'][_0xce90('0x20')](this,_0x3bdb0b);};AGIChannel[_0xce90('0x21')][_0xce90('0x22')]=function(){return this['sendRequest'](_0xce90('0x23'));};AGIChannel[_0xce90('0x21')][_0xce90('0x24')]=function(_0x42c5eb,_0x4f6031,_0xc390c6){_0x42c5eb=_0x42c5eb===undefined?_0xce90('0x25'):_0x42c5eb;_0x4f6031=_0x4f6031===undefined?'5':_0x4f6031;_0xc390c6=_0xc390c6===undefined?'1':_0xc390c6;return this['sendRequest'](util[_0xce90('0x26')](_0xce90('0x27'),_0x42c5eb,_0x4f6031*0x3e8,_0xc390c6));};AGIChannel[_0xce90('0x21')]['noop']=function(_0x113cd8){_0x113cd8=_0x113cd8||_0xce90('0x28');return this[_0xce90('0x29')](util[_0xce90('0x26')](_0xce90('0x2a'),_0x113cd8));};AGIChannel[_0xce90('0x21')][_0xce90('0x2b')]=function(_0x54a5b7,_0x594878){if(_['isArray'](_0x594878)){return this[_0xce90('0x29')](util[_0xce90('0x26')](_0xce90('0x2c'),_0x54a5b7,_0x594878['join'](',')));}return this[_0xce90('0x29')](util[_0xce90('0x26')](_0xce90('0x2c'),_0x54a5b7,_0x594878));};AGIChannel[_0xce90('0x21')]['setContext']=function(_0x204a23){return this[_0xce90('0x29')](util[_0xce90('0x26')](_0xce90('0x2d'),_0x204a23));};AGIChannel[_0xce90('0x21')][_0xce90('0x2e')]=function(_0x768603){return this[_0xce90('0x29')](util[_0xce90('0x26')](_0xce90('0x2f'),_0x768603));};AGIChannel[_0xce90('0x21')]['setPriority']=function(_0x2830a6){return this[_0xce90('0x29')](util[_0xce90('0x26')]('SET\x20PRIORITY\x20%s',_0x2830a6));};AGIChannel[_0xce90('0x21')][_0xce90('0xb')]=function(){return this[_0xce90('0x29')](_0xce90('0x30'));};AGIChannel[_0xce90('0x21')][_0xce90('0x31')]=function(_0x5e9ba7,_0x3dfe0e){var _0x98f3aa=_[_0xce90('0x32')](_0x3dfe0e)||_[_0xce90('0x33')](_0x3dfe0e)?_0x3dfe0e['toString']():_0x3dfe0e;return this[_0xce90('0x29')](util['format'](_0xce90('0x34'),_0x5e9ba7,_0x98f3aa?_0x98f3aa['toString']()[_0xce90('0x13')](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel['prototype'][_0xce90('0x35')]=function(_0x482ca4,_0x5cdb1a){return this[_0xce90('0x29')](util[_0xce90('0x26')](_0xce90('0x36'),_0x482ca4,_0x5cdb1a));};AGIChannel[_0xce90('0x21')][_0xce90('0x37')]=function(_0x277360,_0xac195a){return this['sendRequest'](util[_0xce90('0x26')](_0xce90('0x38'),_0x277360,_0xac195a));};AGIChannel['prototype'][_0xce90('0x39')]=function(_0x488d5e,_0x2c0f0f){return this[_0xce90('0x29')](util[_0xce90('0x26')](_0xce90('0x3a'),_0x488d5e,_0x2c0f0f));};AGIChannel['prototype'][_0xce90('0x3b')]=function(_0x476699,_0x24558c,_0x492c55){_0x24558c=_0x24558c||this['extension'];_0x492c55=_0x492c55||0x1;this[_0xce90('0x3c')](_0x476699);this[_0xce90('0x2e')](_0x24558c);this[_0xce90('0x3d')](_0x492c55);return this['noop'](util['format'](_0xce90('0x3e'),_0x476699,_0x24558c,_0x492c55));};AGIChannel['prototype'][_0xce90('0x3f')]=function(_0x5207ae){return this['sendRequest'](util[_0xce90('0x26')](_0xce90('0x40'),_0x5207ae));};AGIChannel[_0xce90('0x21')][_0xce90('0x41')]=function(_0x22c649,_0x24153c,_0x195763,_0x4c2245,_0x4bbb38,_0x30dc23){_0x24153c=_0x24153c||_0xce90('0x42');_0x195763=_0x195763||'';_0x4c2245=_0x4c2245===undefined?-0x1:_0x4c2245==='-1'?-0x1:_0x4c2245*0x3e8;_0x4bbb38=_0x4bbb38===undefined?'':'s='+_0x4bbb38;_0x30dc23=_0x30dc23?'BEEP':'';return this[_0xce90('0x29')](util[_0xce90('0x26')](_0xce90('0x43'),_0x22c649,_0x24153c,_0x195763,_0x4c2245,_0x30dc23,_0x4bbb38));};AGIChannel[_0xce90('0x21')][_0xce90('0x44')]=function(_0x56f9ef,_0x3fba95){_0x3fba95=_0x3fba95||'';return this[_0xce90('0x29')](util[_0xce90('0x26')](_0xce90('0x45'),_0x56f9ef,_0x3fba95));};AGIChannel[_0xce90('0x21')][_0xce90('0x46')]=function(_0x1db7b8){return this[_0xce90('0x2b')](_0xce90('0x47'),_0x1db7b8);};AGIChannel['prototype'][_0xce90('0x48')]=function(_0x3176c6){return this[_0xce90('0x2b')](_0xce90('0x49'),_0x3176c6);};AGIChannel[_0xce90('0x21')][_0xce90('0x18')]=function(_0xdc3ede,_0x13f795){this[_0xce90('0x4a')](util[_0xce90('0x26')](_0xce90('0x4b'),_0xdc3ede['id'],_0xdc3ede['label'],_0x13f795));return{'code':0x1f4,'result':'-1','extra':''};};module[_0xce90('0x4c')]=AGIChannel;
\ No newline at end of file
+var _0x9802=['SAY\x20PHONETIC\x20\x22%s\x22\x20%s','continueAt','extension','setPriority','GOTO\x20%s\x20%s\x20%s','getVariable','GET\x20VARIABLE\x20\x22%s\x22','recordFile','BEEP','streamFile','STREAM\x20FILE\x20\x22%s\x22\x20\x22%s\x22','wait','WAIT','ID:%s\x20-\x20LABEL:\x20%s\x20-\x20MSG:\x20%s','label','util','lodash','events','./reply','./error','setTimeout','setEncoding','utf8','emit','ready','line','toLowerCase','hangup','520-Invalid','search','520\x20End\x20of\x20proper','function','substring','replace','result=','indexOf','substr','split','length','match','error','E_AGI_SOCKET_ERROR','close','E_AGI_SOCKET_CLOSE','timeout','E_AGI_SOCKET_TIMEOUT','destroy','pipe','command','write','sendRequest','prototype','answer','ANSWER','getData','beep','format','noop','NO\x20MESSAGE','VERBOSE\x20\x22%s\x22','exec','isArray','EXEC\x20%s\x20%s','join','setContext','setExtension','SET\x20EXTENSION\x20%s','SET\x20PRIORITY\x20%s','HANGUP','setVariable','isNumber','toString','SET\x20VARIABLE\x20%s\x20\x22%s\x22','sayNumber','sayDigits','SAY\x20DIGITS\x20%s\x20%s','sayPhonetic'];(function(_0x5baf15,_0x1119c4){var _0x4bd4cb=function(_0x187a71){while(--_0x187a71){_0x5baf15['push'](_0x5baf15['shift']());}};_0x4bd4cb(++_0x1119c4);}(_0x9802,0xf6));var _0x2980=function(_0x1e4360,_0x930b9b){_0x1e4360=_0x1e4360-0x0;var _0x31e6b4=_0x9802[_0x1e4360];return _0x31e6b4;};'use strict';var util=require(_0x2980('0x0'));var _=require(_0x2980('0x1'));var EventEmitter=require(_0x2980('0x2'))['EventEmitter'];var AGIReply=require(_0x2980('0x3'));var AGIError=require(_0x2980('0x4'));function AGIChannel(_0x8c8c1e){var _0x21e68f=this,_0x2879d2=new AGIReply(),_0x59f868=![],_0x2bf45d={};EventEmitter['call'](_0x21e68f);_0x8c8c1e['setEncoding']('utf8');_0x8c8c1e[_0x2980('0x5')](0x8*0x3c*0x3c*0x3e8);_0x2879d2[_0x2980('0x6')](_0x2980('0x7'));_0x2879d2['on']('headers',function(_0x44f9d6){for(var _0x114694 in _0x44f9d6){_0x21e68f[_0x114694]=_0x44f9d6[_0x114694];}_0x21e68f[_0x2980('0x8')](_0x2980('0x9'));});_0x2879d2['on'](_0x2980('0xa'),function(_0x222f2f){if(_0x222f2f[_0x2980('0xb')]()==_0x2980('0xc')){_0x21e68f['emit']('hangup');return;}if(_0x222f2f['substring'](0x0,0xb)==_0x2980('0xd')){_0x59f868=!![];}if(_0x59f868){_0x2bf45d['rx']+=_0x222f2f+'\x0a';if(_0x222f2f[_0x2980('0xe')](_0x2980('0xf'))!=-0x1){_0x59f868=![];}}else{_0x2bf45d['rx']=_0x222f2f;}if(_0x59f868){return;}if(typeof _0x2bf45d['cb']==_0x2980('0x10')){var _0x34a13c=_0x2bf45d['rx'][_0x2980('0x11')](0x0,0x3),_0xa259f9=null,_0x4f5f2d=null;_0x34a13c=parseInt(_0x34a13c);if(isNaN(_0x34a13c)){_0x2bf45d['cb'](null,{'code':0x1f4,'result':-0x1,'extra':'no\x20code'});return;}if(_0x34a13c!=0xc8){_0x2bf45d['cb'](null,{'code':_0x34a13c,'result':-0x1,'extra':'KO'});return;}_0xa259f9=_0x2bf45d['rx'][_0x2980('0x11')](0x4)[_0x2980('0x12')](_0x2980('0x13'),'');if(_0xa259f9[_0x2980('0x14')]('\x20')!=-0x1){_0xa259f9=_0xa259f9[_0x2980('0x15')](0x0,_0xa259f9[_0x2980('0x14')]('\x20'));}if(_['startsWith'](_0xa259f9,'-1')){_0xa259f9=parseInt(_0xa259f9);}_0x4f5f2d=_0x2bf45d['rx'][_0x2980('0x16')]('\x20');if(_0x4f5f2d[_0x2980('0x17')]==0x3){_0x4f5f2d=_0x4f5f2d[0x2][_0x2980('0x11')](0x1,_0x4f5f2d[0x2]['length']-0x1);}else if(_0x4f5f2d[_0x2980('0x17')]>0x3){var _0x5e5074=/\((.+)\)/;var _0x74d740=_0x2bf45d['rx'][_0x2980('0x18')](_0x5e5074);if(_0x74d740){_0x4f5f2d=_0x74d740[0x1];}else{_0x4f5f2d=null;}}else{_0x4f5f2d=null;}_0x2bf45d['cb'](null,{'code':_0x34a13c,'result':_0xa259f9,'extra':_0x4f5f2d});}});_0x8c8c1e['on'](_0x2980('0x19'),function(_0x1ec2e9){_0x21e68f[_0x2980('0x8')](_0x2980('0x19'),new AGIError(_0x2980('0x1a'),_0x1ec2e9['code']));});_0x8c8c1e['on']('close',function(){_0x21e68f[_0x2980('0x8')](_0x2980('0x1b'),new AGIError(_0x2980('0x1c')));});_0x8c8c1e['on'](_0x2980('0x1d'),function(){_0x21e68f[_0x2980('0x8')](_0x2980('0x1d'),new AGIError(_0x2980('0x1e')));_0x8c8c1e[_0x2980('0x1f')]();});_0x8c8c1e[_0x2980('0x20')](_0x2879d2);this[_0x2980('0x21')]=function(_0x16d8f3,_0x1a37eb){var _0x16d8f3=_0x16d8f3||'',_0x1a37eb=typeof _0x1a37eb=='function'?_0x1a37eb:new Function();_0x2bf45d={'tx':_0x16d8f3,'rx':'','cb':_0x1a37eb};_0x8c8c1e[_0x2980('0x22')](_0x16d8f3+'\x0a');},this['close']=function(){_0x8c8c1e[_0x2980('0x1f')]();};}util['inherits'](AGIChannel,EventEmitter);AGIChannel['prototype'][_0x2980('0x23')]=function(_0x10b6ae){return this[_0x2980('0x21')]['sync'](this,_0x10b6ae);};AGIChannel[_0x2980('0x24')][_0x2980('0x25')]=function(){return this['sendRequest'](_0x2980('0x26'));};AGIChannel[_0x2980('0x24')][_0x2980('0x27')]=function(_0x98e126,_0x3bbf4a,_0x1e785e){_0x98e126=_0x98e126===undefined?_0x2980('0x28'):_0x98e126;_0x3bbf4a=_0x3bbf4a===undefined?'5':_0x3bbf4a;_0x1e785e=_0x1e785e===undefined?'1':_0x1e785e;return this[_0x2980('0x23')](util[_0x2980('0x29')]('GET\x20DATA\x20\x22%s\x22\x20%s\x20%s',_0x98e126,_0x3bbf4a*0x3e8,_0x1e785e));};AGIChannel[_0x2980('0x24')][_0x2980('0x2a')]=function(_0x77ebd){_0x77ebd=_0x77ebd||_0x2980('0x2b');return this[_0x2980('0x23')](util[_0x2980('0x29')](_0x2980('0x2c'),_0x77ebd));};AGIChannel[_0x2980('0x24')][_0x2980('0x2d')]=function(_0x12806d,_0x67f072){if(_[_0x2980('0x2e')](_0x67f072)){return this[_0x2980('0x23')](util['format'](_0x2980('0x2f'),_0x12806d,_0x67f072[_0x2980('0x30')](',')));}return this[_0x2980('0x23')](util['format']('EXEC\x20%s\x20%s',_0x12806d,_0x67f072));};AGIChannel['prototype'][_0x2980('0x31')]=function(_0x7eb8e0){return this[_0x2980('0x23')](util[_0x2980('0x29')]('SET\x20CONTEXT\x20%s',_0x7eb8e0));};AGIChannel[_0x2980('0x24')][_0x2980('0x32')]=function(_0x240a83){return this['sendRequest'](util[_0x2980('0x29')](_0x2980('0x33'),_0x240a83));};AGIChannel[_0x2980('0x24')]['setPriority']=function(_0x5ef26a){return this[_0x2980('0x23')](util['format'](_0x2980('0x34'),_0x5ef26a));};AGIChannel[_0x2980('0x24')][_0x2980('0xc')]=function(){return this[_0x2980('0x23')](_0x2980('0x35'));};AGIChannel[_0x2980('0x24')][_0x2980('0x36')]=function(_0x1ab83b,_0x27b73a){var _0x528e12=_['isBoolean'](_0x27b73a)||_[_0x2980('0x37')](_0x27b73a)?_0x27b73a[_0x2980('0x38')]():_0x27b73a;return this['sendRequest'](util['format'](_0x2980('0x39'),_0x1ab83b,_0x528e12?_0x528e12[_0x2980('0x38')]()[_0x2980('0x12')](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel['prototype'][_0x2980('0x3a')]=function(_0x2a4d8e,_0x159115){return this[_0x2980('0x23')](util['format']('SAY\x20NUMBER\x20%s\x20%s',_0x2a4d8e,_0x159115));};AGIChannel['prototype'][_0x2980('0x3b')]=function(_0x5714ac,_0x330def){return this[_0x2980('0x23')](util[_0x2980('0x29')](_0x2980('0x3c'),_0x5714ac,_0x330def));};AGIChannel['prototype'][_0x2980('0x3d')]=function(_0x310956,_0x431354){return this[_0x2980('0x23')](util['format'](_0x2980('0x3e'),_0x310956,_0x431354));};AGIChannel[_0x2980('0x24')][_0x2980('0x3f')]=function(_0x437813,_0x1e24c8,_0x95e279){_0x1e24c8=_0x1e24c8||this[_0x2980('0x40')];_0x95e279=_0x95e279||0x1;this[_0x2980('0x31')](_0x437813);this[_0x2980('0x32')](_0x1e24c8);this[_0x2980('0x41')](_0x95e279);return this['noop'](util[_0x2980('0x29')](_0x2980('0x42'),_0x437813,_0x1e24c8,_0x95e279));};AGIChannel[_0x2980('0x24')][_0x2980('0x43')]=function(_0x12636c){return this[_0x2980('0x23')](util[_0x2980('0x29')](_0x2980('0x44'),_0x12636c));};AGIChannel['prototype'][_0x2980('0x45')]=function(_0x1decd0,_0x55337d,_0x1d766f,_0x907823,_0x55ba0f,_0x5728e1){_0x55337d=_0x55337d||'wav';_0x1d766f=_0x1d766f||'';_0x907823=_0x907823===undefined?-0x1:_0x907823==='-1'?-0x1:_0x907823*0x3e8;_0x55ba0f=_0x55ba0f===undefined?'':'s='+_0x55ba0f;_0x5728e1=_0x5728e1?_0x2980('0x46'):'';return this['sendRequest'](util['format']('RECORD\x20FILE\x20\x22%s\x22\x20\x22%s\x22\x20\x22%s\x22\x20%s\x20%s\x20%s',_0x1decd0,_0x55337d,_0x1d766f,_0x907823,_0x5728e1,_0x55ba0f));};AGIChannel['prototype'][_0x2980('0x47')]=function(_0x6899d8,_0x4bd680){_0x4bd680=_0x4bd680||'';return this[_0x2980('0x23')](util[_0x2980('0x29')](_0x2980('0x48'),_0x6899d8,_0x4bd680));};AGIChannel[_0x2980('0x24')]['agi']=function(_0xa844b3){return this[_0x2980('0x2d')]('AGI',_0xa844b3);};AGIChannel[_0x2980('0x24')][_0x2980('0x49')]=function(_0x2c809a){return this[_0x2980('0x2d')](_0x2980('0x4a'),_0x2c809a);};AGIChannel['prototype'][_0x2980('0x19')]=function(_0x36f495,_0x4a2bd6){this[_0x2980('0x2a')](util[_0x2980('0x29')](_0x2980('0x4b'),_0x36f495['id'],_0x36f495[_0x2980('0x4c')],_0x4a2bd6));return{'code':0x1f4,'result':'-1','extra':''};};module['exports']=AGIChannel;
\ No newline at end of file
index 3c5cf43..4a7659e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf428=['Argument\x20\x27port\x27\x20missing\x20in\x20function\x20call.','Server\x20error.\x20Code:\x20%s.','Server\x20closed.','[LICENSE]\x20Server\x20max\x20connection.\x20Count:\x20%s.','Socket\x20closed.','Socket\x20timeout.','Empty\x20command.','E_AGI_UNDEFINED','push','apply','message','name','exports'];(function(_0x1d30fc,_0x3ab679){var _0x3c27e3=function(_0x50c609){while(--_0x50c609){_0x1d30fc['push'](_0x1d30fc['shift']());}};_0x3c27e3(++_0x3ab679);}(_0xf428,0x104));var _0x8f42=function(_0x1819df,_0x18d901){_0x1819df=_0x1819df-0x0;var _0x50cd92=_0xf428[_0x1819df];return _0x50cd92;};'use strict';var util=require('util');var error={'E_AGI_UNDEFINED':'Undefined\x20error.','E_AGI_ARGUMENT_PORT':_0x8f42('0x0'),'E_AGI_SERVER_ERROR':_0x8f42('0x1'),'E_AGI_SERVER_CLOSE':_0x8f42('0x2'),'E_AGI_SERVER_MAXCONNECTION':_0x8f42('0x3'),'E_AGI_SERVER_VOICE_DISABLED':'[LICENSE\x20VOICE]\x20Server\x20license\x20voice\x20disabled.','E_AGI_SOCKET_ERROR':'Socket\x20error.\x20Code:\x20%s.','E_AGI_SOCKET_CLOSE':_0x8f42('0x4'),'E_AGI_SOCKET_TIMEOUT':_0x8f42('0x5'),'E_AGI_COMMAND_EMPTY':_0x8f42('0x6'),'E_AGI_IVR_AGI_NETWORK_SCRIPT':'Missing\x20\x27ivr.agi_network_script\x27.','E_AGI_IVR_ENTRY':'Missing\x20\x27ivr.entry\x27\x20menu.'};function AGIError(_0x516700){var _0x516700=_0x516700||null,_0x5bad8b=_0x5bad8b||[],_0x1b4b6c=0x1,_0x33329e='';if(!error[_0x516700]){_0x516700=_0x8f42('0x7');}_0x5bad8b[_0x8f42('0x8')](error[_0x516700]);while(arguments[_0x1b4b6c]){_0x5bad8b[_0x8f42('0x8')](arguments[_0x1b4b6c]);_0x1b4b6c++;}_0x33329e=util['format'][_0x8f42('0x9')](util,_0x5bad8b);this[_0x8f42('0xa')]=_0x33329e;this[_0x8f42('0xb')]=_0x516700;}module[_0x8f42('0xc')]=AGIError;
\ No newline at end of file
+var _0xcfc8=['Server\x20error.\x20Code:\x20%s.','[LICENSE]\x20Server\x20max\x20connection.\x20Count:\x20%s.','[LICENSE\x20VOICE]\x20Server\x20license\x20voice\x20disabled.','Empty\x20command.','Missing\x20\x27ivr.agi_network_script\x27.','Missing\x20\x27ivr.entry\x27\x20menu.','E_AGI_UNDEFINED','push','format','apply','message','name','exports','Undefined\x20error.'];(function(_0x4d4c63,_0x33ac30){var _0x383b63=function(_0x2520c6){while(--_0x2520c6){_0x4d4c63['push'](_0x4d4c63['shift']());}};_0x383b63(++_0x33ac30);}(_0xcfc8,0x15d));var _0x8cfc=function(_0xf76f48,_0x4b3a42){_0xf76f48=_0xf76f48-0x0;var _0x29fb96=_0xcfc8[_0xf76f48];return _0x29fb96;};'use strict';var util=require('util');var error={'E_AGI_UNDEFINED':_0x8cfc('0x0'),'E_AGI_ARGUMENT_PORT':'Argument\x20\x27port\x27\x20missing\x20in\x20function\x20call.','E_AGI_SERVER_ERROR':_0x8cfc('0x1'),'E_AGI_SERVER_CLOSE':'Server\x20closed.','E_AGI_SERVER_MAXCONNECTION':_0x8cfc('0x2'),'E_AGI_SERVER_VOICE_DISABLED':_0x8cfc('0x3'),'E_AGI_SOCKET_ERROR':'Socket\x20error.\x20Code:\x20%s.','E_AGI_SOCKET_CLOSE':'Socket\x20closed.','E_AGI_SOCKET_TIMEOUT':'Socket\x20timeout.','E_AGI_COMMAND_EMPTY':_0x8cfc('0x4'),'E_AGI_IVR_AGI_NETWORK_SCRIPT':_0x8cfc('0x5'),'E_AGI_IVR_ENTRY':_0x8cfc('0x6')};function AGIError(_0x1bc033){var _0x1bc033=_0x1bc033||null,_0x25d7aa=_0x25d7aa||[],_0x59ba74=0x1,_0x3dd9ff='';if(!error[_0x1bc033]){_0x1bc033=_0x8cfc('0x7');}_0x25d7aa['push'](error[_0x1bc033]);while(arguments[_0x59ba74]){_0x25d7aa[_0x8cfc('0x8')](arguments[_0x59ba74]);_0x59ba74++;}_0x3dd9ff=util[_0x8cfc('0x9')][_0x8cfc('0xa')](util,_0x25d7aa);this[_0x8cfc('0xb')]=_0x3dd9ff;this[_0x8cfc('0xc')]=_0x1bc033;}module[_0x8cfc('0xd')]=AGIError;
\ No newline at end of file
index 2837fea..0aa5eef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xabbf=['menu','getsecretdigits','vertices','edges','numberOfEdges','prototype','addVertex','addEdge','push','size','relations','getVertex','traverseBFS','no\x20vertex\x20found','info','length','no\x20edge/s\x20available','condition','split','agicommand','vswitch','target','invalid','default\x20on\x20switch\x20not\x20found','includes','max\x20retry\x20reach','condition\x20not\x20found','lodash','../../../config/logger','agi'];(function(_0x1036e7,_0x32fc34){var _0x156760=function(_0x432a19){while(--_0x432a19){_0x1036e7['push'](_0x1036e7['shift']());}};_0x156760(++_0x32fc34);}(_0xabbf,0x1a1));var _0xfabb=function(_0x29632e,_0x5ecba4){_0x29632e=_0x29632e-0x0;var _0x426e04=_0xabbf[_0x29632e];return _0x426e04;};'use strict';var _=require(_0xfabb('0x0'));var logger=require(_0xfabb('0x1'))(_0xfabb('0x2'));var verticesWithRetry=[_0xfabb('0x3'),'getdigits',_0xfabb('0x4')];var Graph=function(){this[_0xfabb('0x5')]={};this[_0xfabb('0x6')]={};this[_0xfabb('0x7')]=0x0;};Graph[_0xfabb('0x8')][_0xfabb('0x9')]=function(_0x2359e5){this[_0xfabb('0x5')][_0x2359e5['id']]=_0x2359e5;this[_0xfabb('0x6')][_0x2359e5['id']]=[];};Graph[_0xfabb('0x8')][_0xfabb('0xa')]=function(_0x505cdb,_0x454d33,_0x498827){this[_0xfabb('0x6')][_0x505cdb][_0xfabb('0xb')]({'target':_0x454d33,'condition':_0x498827});this['numberOfEdges']+=0x1;};Graph[_0xfabb('0x8')][_0xfabb('0xc')]=function(){return _['size'](this['vertices']);};Graph[_0xfabb('0x8')][_0xfabb('0xd')]=function(){return this[_0xfabb('0x7')];};Graph[_0xfabb('0x8')][_0xfabb('0xe')]=function(_0x11cc7e){return this[_0xfabb('0x5')][_0x11cc7e];};Graph[_0xfabb('0x8')][_0xfabb('0xf')]=function(_0x48fadf,_0x145225){if(!this['vertices'][_0x48fadf]){return logger['info'](_0xfabb('0x10'));}var _0x5dcc9a=_0x145225(this['vertices'][_0x48fadf]);if(!_0x5dcc9a){return logger[_0xfabb('0x11')]('stop\x20traverse');}if(this[_0xfabb('0x6')][_0x48fadf][_0xfabb('0x12')]===0x0){return logger[_0xfabb('0x11')](_0xfabb('0x13'));}for(var _0x228eb0=0x0,_0x4ce64e=[],_0x35f5f1=![];_0x228eb0<this[_0xfabb('0x6')][_0x48fadf][_0xfabb('0x12')];_0x228eb0+=0x1){if(this[_0xfabb('0x6')][_0x48fadf][_0x228eb0][_0xfabb('0x14')]){_0x4ce64e=this['edges'][_0x48fadf][_0x228eb0][_0xfabb('0x14')][_0xfabb('0x15')](',');for(var _0x508e29=0x0;_0x508e29<_0x4ce64e[_0xfabb('0x12')];_0x508e29+=0x1){if(this['vertices'][_0x48fadf][_0xfabb('0x16')]===_0xfabb('0x17')&&_0x4ce64e[_0x508e29]==='-'){_0x35f5f1=this[_0xfabb('0x6')][_0x48fadf][_0x228eb0][_0xfabb('0x18')];logger['info']('default',_0x4ce64e[_0x508e29],this['edges'][_0x48fadf][_0x228eb0][_0xfabb('0x18')]);}else if(this['vertices'][_0x48fadf][_0xfabb('0x16')]===_0xfabb('0x3')&&_0x4ce64e[_0x508e29]==='i'){_0x35f5f1=this[_0xfabb('0x6')][_0x48fadf][_0x228eb0][_0xfabb('0x18')];logger[_0xfabb('0x11')](_0xfabb('0x19'),_0x4ce64e[_0x508e29],this['edges'][_0x48fadf][_0x228eb0][_0xfabb('0x18')]);}if(_0x4ce64e[_0x508e29]===_0x5dcc9a){return this[_0xfabb('0xf')](this['edges'][_0x48fadf][_0x228eb0][_0xfabb('0x18')],_0x145225);}}}else{return this[_0xfabb('0xf')](this[_0xfabb('0x6')][_0x48fadf][_0x228eb0][_0xfabb('0x18')],_0x145225);}}if(_0x4ce64e[_0xfabb('0x12')]){if(this['vertices'][_0x48fadf][_0xfabb('0x16')]===_0xfabb('0x17')){if(_0x35f5f1){return this[_0xfabb('0xf')](_0x35f5f1,_0x145225);}return logger[_0xfabb('0x11')](_0xfabb('0x1a'));}else if(_[_0xfabb('0x1b')](verticesWithRetry,this[_0xfabb('0x5')][_0x48fadf][_0xfabb('0x16')])){if(_0x5dcc9a==='-'){return logger['info'](_0xfabb('0x1c'));}if(_0x35f5f1&&_0x5dcc9a!=='t'){return this['traverseBFS'](_0x35f5f1,_0x145225);}return this[_0xfabb('0xf')](_0x48fadf,_0x145225);}return logger[_0xfabb('0x11')](_0xfabb('0x1d'));}};module['exports']=Graph;
\ No newline at end of file
+var _0x26c6=['../../../config/logger','agi','getdigits','getsecretdigits','vertices','edges','numberOfEdges','prototype','addEdge','size','getVertex','traverseBFS','no\x20vertex\x20found','info','stop\x20traverse','length','no\x20edge/s\x20available','condition','split','vswitch','target','default','agicommand','menu','includes','max\x20retry\x20reach','exports'];(function(_0x4e1d03,_0x786f3a){var _0x362d4b=function(_0x1924d2){while(--_0x1924d2){_0x4e1d03['push'](_0x4e1d03['shift']());}};_0x362d4b(++_0x786f3a);}(_0x26c6,0xa2));var _0x626c=function(_0x3e7d85,_0x457daf){_0x3e7d85=_0x3e7d85-0x0;var _0x3c4348=_0x26c6[_0x3e7d85];return _0x3c4348;};'use strict';var _=require('lodash');var logger=require(_0x626c('0x0'))(_0x626c('0x1'));var verticesWithRetry=['menu',_0x626c('0x2'),_0x626c('0x3')];var Graph=function(){this[_0x626c('0x4')]={};this[_0x626c('0x5')]={};this[_0x626c('0x6')]=0x0;};Graph['prototype']['addVertex']=function(_0x31adb8){this[_0x626c('0x4')][_0x31adb8['id']]=_0x31adb8;this[_0x626c('0x5')][_0x31adb8['id']]=[];};Graph[_0x626c('0x7')][_0x626c('0x8')]=function(_0x1c9ce1,_0x33ff2d,_0x119a77){this[_0x626c('0x5')][_0x1c9ce1]['push']({'target':_0x33ff2d,'condition':_0x119a77});this[_0x626c('0x6')]+=0x1;};Graph['prototype'][_0x626c('0x9')]=function(){return _['size'](this['vertices']);};Graph['prototype']['relations']=function(){return this[_0x626c('0x6')];};Graph[_0x626c('0x7')][_0x626c('0xa')]=function(_0x344161){return this[_0x626c('0x4')][_0x344161];};Graph[_0x626c('0x7')][_0x626c('0xb')]=function(_0x33c1d8,_0x55f31f){if(!this['vertices'][_0x33c1d8]){return logger['info'](_0x626c('0xc'));}var _0x4681e8=_0x55f31f(this[_0x626c('0x4')][_0x33c1d8]);if(!_0x4681e8){return logger[_0x626c('0xd')](_0x626c('0xe'));}if(this[_0x626c('0x5')][_0x33c1d8][_0x626c('0xf')]===0x0){return logger[_0x626c('0xd')](_0x626c('0x10'));}for(var _0xe67992=0x0,_0x490dc9=[],_0x332d4c=![];_0xe67992<this[_0x626c('0x5')][_0x33c1d8][_0x626c('0xf')];_0xe67992+=0x1){if(this['edges'][_0x33c1d8][_0xe67992][_0x626c('0x11')]){_0x490dc9=this['edges'][_0x33c1d8][_0xe67992][_0x626c('0x11')][_0x626c('0x12')](',');for(var _0x3ced78=0x0;_0x3ced78<_0x490dc9['length'];_0x3ced78+=0x1){if(this[_0x626c('0x4')][_0x33c1d8]['agicommand']===_0x626c('0x13')&&_0x490dc9[_0x3ced78]==='-'){_0x332d4c=this['edges'][_0x33c1d8][_0xe67992][_0x626c('0x14')];logger['info'](_0x626c('0x15'),_0x490dc9[_0x3ced78],this['edges'][_0x33c1d8][_0xe67992]['target']);}else if(this[_0x626c('0x4')][_0x33c1d8][_0x626c('0x16')]===_0x626c('0x17')&&_0x490dc9[_0x3ced78]==='i'){_0x332d4c=this[_0x626c('0x5')][_0x33c1d8][_0xe67992][_0x626c('0x14')];logger['info']('invalid',_0x490dc9[_0x3ced78],this[_0x626c('0x5')][_0x33c1d8][_0xe67992]['target']);}if(_0x490dc9[_0x3ced78]===_0x4681e8){return this['traverseBFS'](this[_0x626c('0x5')][_0x33c1d8][_0xe67992][_0x626c('0x14')],_0x55f31f);}}}else{return this['traverseBFS'](this['edges'][_0x33c1d8][_0xe67992][_0x626c('0x14')],_0x55f31f);}}if(_0x490dc9[_0x626c('0xf')]){if(this[_0x626c('0x4')][_0x33c1d8]['agicommand']==='vswitch'){if(_0x332d4c){return this[_0x626c('0xb')](_0x332d4c,_0x55f31f);}return logger['info']('default\x20on\x20switch\x20not\x20found');}else if(_[_0x626c('0x18')](verticesWithRetry,this[_0x626c('0x4')][_0x33c1d8][_0x626c('0x16')])){if(_0x4681e8==='-'){return logger[_0x626c('0xd')](_0x626c('0x19'));}if(_0x332d4c&&_0x4681e8!=='t'){return this[_0x626c('0xb')](_0x332d4c,_0x55f31f);}return this[_0x626c('0xb')](_0x33c1d8,_0x55f31f);}return logger[_0x626c('0xd')]('condition\x20not\x20found');}};module[_0x626c('0x1a')]=Graph;
\ No newline at end of file
index 099b55b..1af0692 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcdc5=['context','priority','response','code','result','toString','agicommand\x20not\x20found','finally','[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','[END]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s','extension','Project\x20%s\x20not\x20published','continueAt','Project\x20%s\x20not\x20found','getLicense','voice','callysquare','[LICENSE]\x20CHANNELS:\x20%s','[LICENSE]\x20CHANNELS:\x20UNLIMITED','[LICENSE]\x20VOICE\x20IS\x20DISABLED','[LICENSE]','./server','listening','util','../../config/logger','../../config/license/util','./rpc','./mailRpc','./graph','agi','127.0.0.1','stack','log','info','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','port','name','message','error','format','[ERROR]\x20%s','[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','calleridname','callerid','dnid','uniqueid','[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','evtHangup','toJson','root','agicommand','hasOwnProperty','retry','maxRetry','addVertex','omit','mxCell','length','addEdge','source','target','value','getSquareProject','then','catch','indexOf','agi_','substring','variables','stringify','close','timeout','hangup','sync','production','start','debug','joinAt','[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','traverseBFS','clear','vertex'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0xcdc5,0x6d));var _0x5cdc=function(_0x585133,_0x2412a1){_0x585133=_0x585133-0x0;var _0x18254a=_0xcdc5[_0x585133];return _0x18254a;};'use strict';var parser=require('xml2json');var _=require('lodash');var syncho=require('syncho');var util=require(_0x5cdc('0x0'));var moment=require('moment');var config=require('../../config/environment');var logger=require(_0x5cdc('0x1'))('agi');var utilLicense=require(_0x5cdc('0x2'));var rpc=require(_0x5cdc('0x3'));var mailRpc=require(_0x5cdc('0x4'));var Graph=require(_0x5cdc('0x5'));var Vertices=require('./vertices');var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config[_0x5cdc('0x6')]=_['defaults'](config[_0x5cdc('0x6')],{'ip':_0x5cdc('0x7'),'port':0x11dd});function connectionHandler(_0x4f3df2){process['nextTick'](function(){syncho(function(){try{setChannelVariables(_0x4f3df2);agiHandler(_0x4f3df2);}catch(_0x3fe988){logger['error'](_0x3fe988[_0x5cdc('0x8')]);}});});}function listeningHandler(){console[_0x5cdc('0x9')]('Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!',config[_0x5cdc('0x6')]['port']);logger[_0x5cdc('0xa')](util['format'](_0x5cdc('0xb'),config[_0x5cdc('0x6')]['ip'],config[_0x5cdc('0x6')][_0x5cdc('0xc')]));}function errorHandler(_0x5a49a3){if(_0x5a49a3&&_0x5a49a3[_0x5cdc('0xd')]&&_0x5a49a3[_0x5cdc('0xe')]){logger[_0x5cdc('0xf')](util[_0x5cdc('0x10')]('[%s]\x20%s',_0x5a49a3[_0x5cdc('0xd')],_0x5a49a3[_0x5cdc('0xe')]));}else{logger[_0x5cdc('0xf')](util['format'](_0x5cdc('0x11'),_0x5a49a3[_0x5cdc('0x8')]));}}function closeHandler(){logger['info'](util[_0x5cdc('0x10')](_0x5cdc('0x12'),this['arg_1'],this[_0x5cdc('0x13')],this[_0x5cdc('0x14')],this[_0x5cdc('0x15')],this[_0x5cdc('0x16')]));try{createSquareReport(this);}catch(_0x44a8da){logger[_0x5cdc('0xf')](_0x44a8da['stack']);}}function timeoutHandler(){logger[_0x5cdc('0xa')](util[_0x5cdc('0x10')](_0x5cdc('0x17'),this[_0x5cdc('0x18')],this[_0x5cdc('0x13')],this[_0x5cdc('0x14')],this[_0x5cdc('0x15')],this[_0x5cdc('0x16')]));}function hangupHandler(){logger[_0x5cdc('0xa')](util[_0x5cdc('0x10')](_0x5cdc('0x19'),this['arg_1'],this[_0x5cdc('0x13')],this['callerid'],this['dnid'],this[_0x5cdc('0x16')]));this[_0x5cdc('0x1a')]=!![];}function getRoot(_0x51cea2){return parser[_0x5cdc('0x1b')](_0x51cea2,{'object':!![]})['mxGraphModel'][_0x5cdc('0x1c')];}function addVertex(_0x5d4b08,_0xe483c9,_0x21aee){_0xe483c9[_0x5cdc('0x1d')]=_0x21aee;if(_0xe483c9[_0x5cdc('0x1e')](_0x5cdc('0x1f'))){_0xe483c9[_0x5cdc('0x20')]=parseInt(_0xe483c9['retry'],0xa);}_0x5d4b08[_0x5cdc('0x21')](_[_0x5cdc('0x22')](_0xe483c9,_0x5cdc('0x23')));}function initGraph(_0x5c1227,_0x4be205){var _0x10a1b7=new Graph();for(var _0x1b6d66 in _0x5c1227){if(_0x5c1227['hasOwnProperty'](_0x1b6d66)){if(_['isArray'](_0x5c1227[_0x1b6d66])){for(var _0x525c15=0x0;_0x525c15<_0x5c1227[_0x1b6d66][_0x5cdc('0x24')];_0x525c15+=0x1){addVertex(_0x10a1b7,_0x5c1227[_0x1b6d66][_0x525c15],_0x1b6d66);}}else{addVertex(_0x10a1b7,_0x5c1227[_0x1b6d66],_0x1b6d66);}}}for(var _0x20e7fc=0x0;_0x20e7fc<_0x4be205['length'];_0x20e7fc+=0x1){if(_0x4be205[_0x20e7fc]['source']&&_0x4be205[_0x20e7fc]['target']){_0x10a1b7[_0x5cdc('0x25')](_0x4be205[_0x20e7fc][_0x5cdc('0x26')],_0x4be205[_0x20e7fc][_0x5cdc('0x27')],_0x4be205[_0x20e7fc][_0x5cdc('0x28')]);}}return _0x10a1b7;}function getSquareProject(_0x36c106,_0xfe5ef9){rpc[_0x5cdc('0x29')](_0x36c106)[_0x5cdc('0x2a')](function(_0x5b310a){_0xfe5ef9(null,_0x5b310a);})[_0x5cdc('0x2b')](function(_0x3c5a6d){_0xfe5ef9(null,_0x3c5a6d);});}function createSquareReport(_0x57f879,_0x57218a){rpc['createSquareReport'](_0x57f879)[_0x5cdc('0x2a')](function(_0x34053d){if(_0x57218a){_0x57218a(null,_0x34053d);}})[_0x5cdc('0x2b')](function(_0x250d0b){if(_0x57218a){_0x57218a(null,_0x250d0b);}});}function setChannelVariables(_0x5a254a){for(var _0x5b430d in _0x5a254a){if(_0x5a254a[_0x5cdc('0x1e')](_0x5b430d)){if(_0x5b430d[_0x5cdc('0x2c')](_0x5cdc('0x2d'))===0x0){_0x5a254a[_0x5b430d[_0x5cdc('0x2e')](0x4)]=_0x5a254a[_0x5b430d];delete _0x5a254a[_0x5b430d];}}}}function getLogFromObject(_0x5c0d79){return util['inspect'](_0x5c0d79,{'showHidden':![],'depth':null});}function agiHandler(_0x1fe5c1){var _0x4736f1,_0x3c0ca3,_0x235110,_0xb8e06f,_0x10b146;logger['debug'](_0x5cdc('0x2f'),JSON[_0x5cdc('0x30')](_0x1fe5c1,null,0x2));logger[_0x5cdc('0xa')](util['format']('[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x1fe5c1[_0x5cdc('0x18')],_0x1fe5c1[_0x5cdc('0x13')],_0x1fe5c1[_0x5cdc('0x14')],_0x1fe5c1['dnid'],_0x1fe5c1[_0x5cdc('0x16')]));_0x1fe5c1['on'](_0x5cdc('0xf'),errorHandler);_0x1fe5c1['on'](_0x5cdc('0x31'),closeHandler);_0x1fe5c1['on'](_0x5cdc('0x32'),timeoutHandler);_0x1fe5c1[_0x5cdc('0x1a')]=![];_0x1fe5c1['on'](_0x5cdc('0x33'),hangupHandler);var _0x25ba85=getSquareProject[_0x5cdc('0x34')](null,_0x1fe5c1[_0x5cdc('0x18')]);if(_0x25ba85){if(_0x25ba85[_0x5cdc('0x35')]){_0x4736f1=getRoot(_0x25ba85['production']);if(_0x4736f1&&_0x4736f1[_0x5cdc('0x36')]){logger[_0x5cdc('0x37')](_0x5cdc('0x1c'),JSON[_0x5cdc('0x30')](_0x4736f1,null,0x2));_0x1fe5c1[_0x5cdc('0x38')]=moment()[_0x5cdc('0x10')]('YYYY-MM-DD\x20HH:mm:ss');_0x3c0ca3=initGraph(_[_0x5cdc('0x22')](_0x4736f1,_0x5cdc('0x23')),_0x4736f1[_0x5cdc('0x23')]);_0x235110=new Vertices(_0x1fe5c1,rpc,mailRpc);logger[_0x5cdc('0xa')](util['format'](_0x5cdc('0x39'),_0x1fe5c1['arg_1'],_0x1fe5c1[_0x5cdc('0x13')],_0x1fe5c1['callerid'],_0x1fe5c1[_0x5cdc('0x15')],_0x1fe5c1['uniqueid']));_0x3c0ca3[_0x5cdc('0x3a')](_0x4736f1[_0x5cdc('0x36')]['id'],function(_0x4426e1){try{_0x4426e1=_0x235110[_0x5cdc('0x3b')](_0x4426e1);logger[_0x5cdc('0x37')](_0x5cdc('0x3c'),JSON[_0x5cdc('0x30')](_0x4426e1,null,0x2));if(_0x4426e1[_0x5cdc('0x1d')]==='gotoc'){logger[_0x5cdc('0xa')]('gotoc\x20block\x20stop\x20traverse\x20BFS');_0x1fe5c1['context']=_0x4426e1[_0x5cdc('0x3d')]||_0x1fe5c1[_0x5cdc('0x3d')];_0x1fe5c1['extension']=_0x4426e1['extension'];_0x1fe5c1[_0x5cdc('0x3e')]=_0x4426e1[_0x5cdc('0x3e')]?_0x4426e1[_0x5cdc('0x3e')]-0x1:0x1;return null;}else if(_0x4426e1&&_0x235110[_0x4426e1[_0x5cdc('0x1d')]]){_0x10b146=_0x235110[_0x4426e1[_0x5cdc('0x1d')]](_0x4426e1);logger[_0x5cdc('0xa')](_0x5cdc('0x3f'),JSON[_0x5cdc('0x30')](_0x10b146,null,0x2));if(_0x10b146&&_0x10b146[_0x5cdc('0x40')]===AGI_CODE_SUCCESS&&_0x10b146[_0x5cdc('0x41')]!==AGI_RESULT_ERROR&&!_0x1fe5c1['evtHangup']){logger[_0x5cdc('0x37')](_0x5cdc('0x3f'),getLogFromObject(_0x10b146));return _['isUndefined'](_0x10b146['result'])?null:_0x10b146[_0x5cdc('0x41')][_0x5cdc('0x42')]();}else{logger['error'](_0x5cdc('0x3f'),getLogFromObject(_0x10b146));return null;}}else{logger[_0x5cdc('0xf')](_0x5cdc('0x43'));return null;}}catch(_0x402a1d){logger[_0x5cdc('0xf')](_0x402a1d[_0x5cdc('0x8')]);return null;}});if(_0x4736f1[_0x5cdc('0x44')]){logger[_0x5cdc('0xa')](util[_0x5cdc('0x10')](_0x5cdc('0x45'),_0x1fe5c1['arg_1'],_0x1fe5c1[_0x5cdc('0x13')],_0x1fe5c1['callerid'],_0x1fe5c1['dnid'],_0x1fe5c1[_0x5cdc('0x16')]));_0x3c0ca3['traverseBFS'](_0x4736f1[_0x5cdc('0x44')]['id'],function(_0x1874e6){try{_0x1874e6=_0x235110[_0x5cdc('0x3b')](_0x1874e6);logger[_0x5cdc('0x37')]('vertex',JSON[_0x5cdc('0x30')](_0x1874e6,null,0x2));if(_0x1874e6&&_0x235110[_0x1874e6[_0x5cdc('0x1d')]]){_0x10b146=_0x235110[_0x1874e6[_0x5cdc('0x1d')]](_0x1874e6);if(_0x10b146){logger[_0x5cdc('0x37')]('response',getLogFromObject(_0x10b146));return _['isUndefined'](_0x10b146['result'])?null:_0x10b146[_0x5cdc('0x41')][_0x5cdc('0x42')]();}else{logger['error'](_0x5cdc('0x3f'),getLogFromObject(_0x10b146));return null;}}else{logger['error']('agicommand\x20not\x20found');return null;}}catch(_0x31f107){logger['error'](_0x31f107[_0x5cdc('0x8')]);return null;}});}logger['info'](util[_0x5cdc('0x10')](_0x5cdc('0x46'),_0x1fe5c1[_0x5cdc('0x18')],_0x1fe5c1[_0x5cdc('0x13')],_0x1fe5c1['callerid'],_0x1fe5c1[_0x5cdc('0x15')],_0x1fe5c1[_0x5cdc('0x16')]));logger[_0x5cdc('0xa')](util[_0x5cdc('0x10')](_0x5cdc('0x47'),_0x1fe5c1[_0x5cdc('0x3d')],_0x1fe5c1[_0x5cdc('0x48')],parseInt(_0x1fe5c1['priority'],0xa)+0x1));_0x1fe5c1['continueAt'](_0x1fe5c1['context'],_0x1fe5c1[_0x5cdc('0x48')],parseInt(_0x1fe5c1[_0x5cdc('0x3e')],0xa)+0x1);_0x1fe5c1[_0x5cdc('0x31')]();}}else{logger[_0x5cdc('0xf')](util[_0x5cdc('0x10')](_0x5cdc('0x49'),_0x1fe5c1['arg_1']));_0x1fe5c1[_0x5cdc('0x4a')](_0x1fe5c1[_0x5cdc('0x3d')],_0x1fe5c1[_0x5cdc('0x48')],parseInt(_0x1fe5c1[_0x5cdc('0x3e')],0xa)+0x1);_0x1fe5c1[_0x5cdc('0x31')]();}}else{logger['error'](util[_0x5cdc('0x10')](_0x5cdc('0x4b'),_0x1fe5c1['arg_1']));_0x1fe5c1[_0x5cdc('0x4a')](_0x1fe5c1[_0x5cdc('0x3d')],_0x1fe5c1['extension'],parseInt(_0x1fe5c1[_0x5cdc('0x3e')],0xa)+0x1);_0x1fe5c1['close']();}}function main(){var _0x5dc54d;return utilLicense[_0x5cdc('0x4c')]()[_0x5cdc('0x2a')](function(_0x1ef89d){if(_0x1ef89d){if(_0x1ef89d[_0x5cdc('0x4d')]){if(_0x1ef89d[_0x5cdc('0x4e')]&&_0x1ef89d[_0x5cdc('0x4e')]>0x0){logger['info'](util[_0x5cdc('0x10')](_0x5cdc('0x4f'),_0x1ef89d[_0x5cdc('0x4e')]));_0x5dc54d=_0x1ef89d['callysquare'];}else{logger['info'](_0x5cdc('0x50'));}}else{logger[_0x5cdc('0xa')](_0x5cdc('0x51'));_0x5dc54d=-0x1;}}})[_0x5cdc('0x2b')](function(_0x5450d9){logger[_0x5cdc('0xf')](_0x5cdc('0x52'),_0x5450d9[_0x5cdc('0x8')]);})[_0x5cdc('0x44')](function(){var _0x363b0f=require(_0x5cdc('0x53'))(config[_0x5cdc('0x6')][_0x5cdc('0xc')],config[_0x5cdc('0x6')]['ip'],_0x5dc54d);_0x363b0f['on'](_0x5cdc('0xf'),errorHandler);_0x363b0f['on'](_0x5cdc('0x54'),listeningHandler);_0x363b0f['on']('connection',connectionHandler);_0x363b0f['on'](_0x5cdc('0x31'),closeHandler);});}main();
\ No newline at end of file
+var _0x76f4=['./graph','./vertices','defaults','127.0.0.1','log','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!','port','info','format','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','name','message','error','[%s]\x20%s','[ERROR]\x20%s','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','callerid','evtHangup','toJson','root','agicommand','hasOwnProperty','retry','maxRetry','addVertex','omit','mxCell','isArray','length','source','target','addEdge','value','getSquareProject','then','createSquareReport','catch','indexOf','agi_','substring','inspect','debug','variables','stringify','close','hangup','sync','production','start','joinAt','YYYY-MM-DD\x20HH:mm:ss','traverseBFS','vertex','gotoc\x20block\x20stop\x20traverse\x20BFS','context','extension','priority','response','code','result','toString','agicommand\x20not\x20found','finally','clear','isUndefined','continueAt','Project\x20%s\x20not\x20published','getLicense','callysquare','[LICENSE]\x20CHANNELS:\x20%s','[LICENSE]\x20CHANNELS:\x20UNLIMITED','[LICENSE]\x20VOICE\x20IS\x20DISABLED','listening','connection','lodash','syncho','util','../../config/environment','../../config/logger','agi','./rpc','./mailRpc'];(function(_0x5d7817,_0x4fd8b7){var _0x3f140e=function(_0x1b162c){while(--_0x1b162c){_0x5d7817['push'](_0x5d7817['shift']());}};_0x3f140e(++_0x4fd8b7);}(_0x76f4,0x158));var _0x476f=function(_0x2b7764,_0x2606f1){_0x2b7764=_0x2b7764-0x0;var _0x848dcb=_0x76f4[_0x2b7764];return _0x848dcb;};'use strict';var parser=require('xml2json');var _=require(_0x476f('0x0'));var syncho=require(_0x476f('0x1'));var util=require(_0x476f('0x2'));var moment=require('moment');var config=require(_0x476f('0x3'));var logger=require(_0x476f('0x4'))(_0x476f('0x5'));var utilLicense=require('../../config/license/util');var rpc=require(_0x476f('0x6'));var mailRpc=require(_0x476f('0x7'));var Graph=require(_0x476f('0x8'));var Vertices=require(_0x476f('0x9'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config[_0x476f('0x5')]=_[_0x476f('0xa')](config[_0x476f('0x5')],{'ip':_0x476f('0xb'),'port':0x11dd});function connectionHandler(_0x22d2f0){process['nextTick'](function(){syncho(function(){try{setChannelVariables(_0x22d2f0);agiHandler(_0x22d2f0);}catch(_0x33f110){logger['error'](_0x33f110['stack']);}});});}function listeningHandler(){console[_0x476f('0xc')](_0x476f('0xd'),config[_0x476f('0x5')][_0x476f('0xe')]);logger[_0x476f('0xf')](util[_0x476f('0x10')](_0x476f('0x11'),config['agi']['ip'],config[_0x476f('0x5')][_0x476f('0xe')]));}function errorHandler(_0x27b2bc){if(_0x27b2bc&&_0x27b2bc[_0x476f('0x12')]&&_0x27b2bc[_0x476f('0x13')]){logger[_0x476f('0x14')](util[_0x476f('0x10')](_0x476f('0x15'),_0x27b2bc[_0x476f('0x12')],_0x27b2bc['message']));}else{logger['error'](util['format'](_0x476f('0x16'),_0x27b2bc[_0x476f('0x17')]));}}function closeHandler(){logger[_0x476f('0xf')](util[_0x476f('0x10')](_0x476f('0x18'),this[_0x476f('0x19')],this[_0x476f('0x1a')],this['callerid'],this[_0x476f('0x1b')],this[_0x476f('0x1c')]));try{createSquareReport(this);}catch(_0x25e961){logger['error'](_0x25e961[_0x476f('0x17')]);}}function timeoutHandler(){logger['info'](util[_0x476f('0x10')]('[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this[_0x476f('0x19')],this[_0x476f('0x1a')],this['callerid'],this[_0x476f('0x1b')],this[_0x476f('0x1c')]));}function hangupHandler(){logger[_0x476f('0xf')](util[_0x476f('0x10')](_0x476f('0x1d'),this[_0x476f('0x19')],this[_0x476f('0x1a')],this[_0x476f('0x1e')],this[_0x476f('0x1b')],this[_0x476f('0x1c')]));this[_0x476f('0x1f')]=!![];}function getRoot(_0x2a013f){return parser[_0x476f('0x20')](_0x2a013f,{'object':!![]})['mxGraphModel'][_0x476f('0x21')];}function addVertex(_0x5dd0da,_0x3d9e54,_0x195a16){_0x3d9e54[_0x476f('0x22')]=_0x195a16;if(_0x3d9e54[_0x476f('0x23')](_0x476f('0x24'))){_0x3d9e54[_0x476f('0x25')]=parseInt(_0x3d9e54[_0x476f('0x24')],0xa);}_0x5dd0da[_0x476f('0x26')](_[_0x476f('0x27')](_0x3d9e54,_0x476f('0x28')));}function initGraph(_0x54a29e,_0x2e6dc5){var _0x55891a=new Graph();for(var _0x3a8e1f in _0x54a29e){if(_0x54a29e[_0x476f('0x23')](_0x3a8e1f)){if(_[_0x476f('0x29')](_0x54a29e[_0x3a8e1f])){for(var _0x358e50=0x0;_0x358e50<_0x54a29e[_0x3a8e1f]['length'];_0x358e50+=0x1){addVertex(_0x55891a,_0x54a29e[_0x3a8e1f][_0x358e50],_0x3a8e1f);}}else{addVertex(_0x55891a,_0x54a29e[_0x3a8e1f],_0x3a8e1f);}}}for(var _0x5bedcc=0x0;_0x5bedcc<_0x2e6dc5[_0x476f('0x2a')];_0x5bedcc+=0x1){if(_0x2e6dc5[_0x5bedcc][_0x476f('0x2b')]&&_0x2e6dc5[_0x5bedcc][_0x476f('0x2c')]){_0x55891a[_0x476f('0x2d')](_0x2e6dc5[_0x5bedcc]['source'],_0x2e6dc5[_0x5bedcc][_0x476f('0x2c')],_0x2e6dc5[_0x5bedcc][_0x476f('0x2e')]);}}return _0x55891a;}function getSquareProject(_0x2d773d,_0x98776c){rpc[_0x476f('0x2f')](_0x2d773d)[_0x476f('0x30')](function(_0x390d1b){_0x98776c(null,_0x390d1b);})['catch'](function(_0x1caa2d){_0x98776c(null,_0x1caa2d);});}function createSquareReport(_0x16a41b,_0x28ed26){rpc[_0x476f('0x31')](_0x16a41b)[_0x476f('0x30')](function(_0x5c1a81){if(_0x28ed26){_0x28ed26(null,_0x5c1a81);}})[_0x476f('0x32')](function(_0x53be25){if(_0x28ed26){_0x28ed26(null,_0x53be25);}});}function setChannelVariables(_0x2d4146){for(var _0xfcaa5d in _0x2d4146){if(_0x2d4146['hasOwnProperty'](_0xfcaa5d)){if(_0xfcaa5d[_0x476f('0x33')](_0x476f('0x34'))===0x0){_0x2d4146[_0xfcaa5d[_0x476f('0x35')](0x4)]=_0x2d4146[_0xfcaa5d];delete _0x2d4146[_0xfcaa5d];}}}}function getLogFromObject(_0x4336fa){return util[_0x476f('0x36')](_0x4336fa,{'showHidden':![],'depth':null});}function agiHandler(_0x26139e){var _0x4f6686,_0x32e8b9,_0xf0461a,_0x570b94,_0x5e1892;logger[_0x476f('0x37')](_0x476f('0x38'),JSON[_0x476f('0x39')](_0x26139e,null,0x2));logger['info'](util[_0x476f('0x10')]('[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x26139e['arg_1'],_0x26139e[_0x476f('0x1a')],_0x26139e[_0x476f('0x1e')],_0x26139e['dnid'],_0x26139e[_0x476f('0x1c')]));_0x26139e['on'](_0x476f('0x14'),errorHandler);_0x26139e['on'](_0x476f('0x3a'),closeHandler);_0x26139e['on']('timeout',timeoutHandler);_0x26139e[_0x476f('0x1f')]=![];_0x26139e['on'](_0x476f('0x3b'),hangupHandler);var _0x45aa4b=getSquareProject[_0x476f('0x3c')](null,_0x26139e['arg_1']);if(_0x45aa4b){if(_0x45aa4b[_0x476f('0x3d')]){_0x4f6686=getRoot(_0x45aa4b[_0x476f('0x3d')]);if(_0x4f6686&&_0x4f6686[_0x476f('0x3e')]){logger[_0x476f('0x37')](_0x476f('0x21'),JSON[_0x476f('0x39')](_0x4f6686,null,0x2));_0x26139e[_0x476f('0x3f')]=moment()[_0x476f('0x10')](_0x476f('0x40'));_0x32e8b9=initGraph(_[_0x476f('0x27')](_0x4f6686,_0x476f('0x28')),_0x4f6686[_0x476f('0x28')]);_0xf0461a=new Vertices(_0x26139e,rpc,mailRpc);logger[_0x476f('0xf')](util['format']('[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x26139e[_0x476f('0x19')],_0x26139e[_0x476f('0x1a')],_0x26139e[_0x476f('0x1e')],_0x26139e['dnid'],_0x26139e[_0x476f('0x1c')]));_0x32e8b9[_0x476f('0x41')](_0x4f6686[_0x476f('0x3e')]['id'],function(_0x5d2901){try{_0x5d2901=_0xf0461a['clear'](_0x5d2901);logger[_0x476f('0x37')](_0x476f('0x42'),JSON[_0x476f('0x39')](_0x5d2901,null,0x2));if(_0x5d2901[_0x476f('0x22')]==='gotoc'){logger[_0x476f('0xf')](_0x476f('0x43'));_0x26139e['context']=_0x5d2901[_0x476f('0x44')]||_0x26139e[_0x476f('0x44')];_0x26139e[_0x476f('0x45')]=_0x5d2901[_0x476f('0x45')];_0x26139e[_0x476f('0x46')]=_0x5d2901[_0x476f('0x46')]?_0x5d2901[_0x476f('0x46')]-0x1:0x1;return null;}else if(_0x5d2901&&_0xf0461a[_0x5d2901[_0x476f('0x22')]]){_0x5e1892=_0xf0461a[_0x5d2901['agicommand']](_0x5d2901);logger[_0x476f('0xf')](_0x476f('0x47'),JSON[_0x476f('0x39')](_0x5e1892,null,0x2));if(_0x5e1892&&_0x5e1892[_0x476f('0x48')]===AGI_CODE_SUCCESS&&_0x5e1892[_0x476f('0x49')]!==AGI_RESULT_ERROR&&!_0x26139e[_0x476f('0x1f')]){logger[_0x476f('0x37')](_0x476f('0x47'),getLogFromObject(_0x5e1892));return _['isUndefined'](_0x5e1892[_0x476f('0x49')])?null:_0x5e1892[_0x476f('0x49')][_0x476f('0x4a')]();}else{logger[_0x476f('0x14')](_0x476f('0x47'),getLogFromObject(_0x5e1892));return null;}}else{logger['error'](_0x476f('0x4b'));return null;}}catch(_0x4c2eae){logger[_0x476f('0x14')](_0x4c2eae[_0x476f('0x17')]);return null;}});if(_0x4f6686[_0x476f('0x4c')]){logger['info'](util['format']('[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x26139e[_0x476f('0x19')],_0x26139e['calleridname'],_0x26139e[_0x476f('0x1e')],_0x26139e[_0x476f('0x1b')],_0x26139e[_0x476f('0x1c')]));_0x32e8b9[_0x476f('0x41')](_0x4f6686[_0x476f('0x4c')]['id'],function(_0x125164){try{_0x125164=_0xf0461a[_0x476f('0x4d')](_0x125164);logger['debug'](_0x476f('0x42'),JSON[_0x476f('0x39')](_0x125164,null,0x2));if(_0x125164&&_0xf0461a[_0x125164[_0x476f('0x22')]]){_0x5e1892=_0xf0461a[_0x125164[_0x476f('0x22')]](_0x125164);if(_0x5e1892){logger[_0x476f('0x37')](_0x476f('0x47'),getLogFromObject(_0x5e1892));return _[_0x476f('0x4e')](_0x5e1892['result'])?null:_0x5e1892['result']['toString']();}else{logger[_0x476f('0x14')](_0x476f('0x47'),getLogFromObject(_0x5e1892));return null;}}else{logger[_0x476f('0x14')](_0x476f('0x4b'));return null;}}catch(_0x4b13f2){logger['error'](_0x4b13f2[_0x476f('0x17')]);return null;}});}logger[_0x476f('0xf')](util[_0x476f('0x10')]('[END]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x26139e[_0x476f('0x19')],_0x26139e[_0x476f('0x1a')],_0x26139e[_0x476f('0x1e')],_0x26139e[_0x476f('0x1b')],_0x26139e[_0x476f('0x1c')]));logger['info'](util['format']('[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s',_0x26139e[_0x476f('0x44')],_0x26139e[_0x476f('0x45')],parseInt(_0x26139e[_0x476f('0x46')],0xa)+0x1));_0x26139e[_0x476f('0x4f')](_0x26139e['context'],_0x26139e['extension'],parseInt(_0x26139e['priority'],0xa)+0x1);_0x26139e[_0x476f('0x3a')]();}}else{logger[_0x476f('0x14')](util[_0x476f('0x10')](_0x476f('0x50'),_0x26139e['arg_1']));_0x26139e[_0x476f('0x4f')](_0x26139e[_0x476f('0x44')],_0x26139e[_0x476f('0x45')],parseInt(_0x26139e['priority'],0xa)+0x1);_0x26139e['close']();}}else{logger['error'](util['format']('Project\x20%s\x20not\x20found',_0x26139e[_0x476f('0x19')]));_0x26139e[_0x476f('0x4f')](_0x26139e[_0x476f('0x44')],_0x26139e[_0x476f('0x45')],parseInt(_0x26139e['priority'],0xa)+0x1);_0x26139e[_0x476f('0x3a')]();}}function main(){var _0x2b7cab;return utilLicense[_0x476f('0x51')]()[_0x476f('0x30')](function(_0x5d624e){if(_0x5d624e){if(_0x5d624e['voice']){if(_0x5d624e[_0x476f('0x52')]&&_0x5d624e[_0x476f('0x52')]>0x0){logger[_0x476f('0xf')](util[_0x476f('0x10')](_0x476f('0x53'),_0x5d624e['callysquare']));_0x2b7cab=_0x5d624e[_0x476f('0x52')];}else{logger[_0x476f('0xf')](_0x476f('0x54'));}}else{logger[_0x476f('0xf')](_0x476f('0x55'));_0x2b7cab=-0x1;}}})[_0x476f('0x32')](function(_0x5005dd){logger[_0x476f('0x14')]('[LICENSE]',_0x5005dd[_0x476f('0x17')]);})[_0x476f('0x4c')](function(){var _0x4bd3d0=require('./server')(config[_0x476f('0x5')][_0x476f('0xe')],config['agi']['ip'],_0x2b7cab);_0x4bd3d0['on'](_0x476f('0x14'),errorHandler);_0x4bd3d0['on'](_0x476f('0x56'),listeningHandler);_0x4bd3d0['on'](_0x476f('0x57'),connectionHandler);_0x4bd3d0['on'](_0x476f('0x3a'),closeHandler);});}main();
\ No newline at end of file
index 57e6c39..a53f87b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x699c=['http','request','result','catch','SendMail','bluebird','jayson/promise','client'];(function(_0x4f24e3,_0x59b204){var _0x1c66d7=function(_0x242849){while(--_0x242849){_0x4f24e3['push'](_0x4f24e3['shift']());}};_0x1c66d7(++_0x59b204);}(_0x699c,0xb5));var _0xc699=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x699c[_0x3dd15e];return _0x231fd0;};'use strict';var BPromise=require(_0xc699('0x0'));var jayson=require(_0xc699('0x1'));var client=jayson[_0xc699('0x2')][_0xc699('0x3')]({'port':0x232b});function request(_0x35dfe6,_0x17313e){return new BPromise(function(_0x56f044,_0x48387e){return client[_0xc699('0x4')](_0x35dfe6,_0x17313e)['then'](function(_0x3fe949){if(_0x3fe949['error']){return _0x48387e(_0x3fe949['error']['message']);}else{return _0x56f044(_0x3fe949[_0xc699('0x5')]);}})[_0xc699('0x6')](function(_0x38570a){return _0x48387e(_0x38570a);});});}exports['sendMailMessage']=function(_0x589b73,_0x2ea138){return request(_0xc699('0x7'),{'account':_0x589b73,'message':_0x2ea138});};
\ No newline at end of file
+var _0x71d1=['sendMailMessage','bluebird','jayson/promise','client','http','request','then','error','message','result','catch'];(function(_0x32cac2,_0x49391a){var _0xfb8b5a=function(_0x412409){while(--_0x412409){_0x32cac2['push'](_0x32cac2['shift']());}};_0xfb8b5a(++_0x49391a);}(_0x71d1,0x1a3));var _0x171d=function(_0x37a79c,_0x2b19f0){_0x37a79c=_0x37a79c-0x0;var _0x561d89=_0x71d1[_0x37a79c];return _0x561d89;};'use strict';var BPromise=require(_0x171d('0x0'));var jayson=require(_0x171d('0x1'));var client=jayson[_0x171d('0x2')][_0x171d('0x3')]({'port':0x232b});function request(_0x6a74f0,_0x33bcbc){return new BPromise(function(_0x2629ab,_0x1257a0){return client[_0x171d('0x4')](_0x6a74f0,_0x33bcbc)[_0x171d('0x5')](function(_0x17fd41){if(_0x17fd41[_0x171d('0x6')]){return _0x1257a0(_0x17fd41[_0x171d('0x6')][_0x171d('0x7')]);}else{return _0x2629ab(_0x17fd41[_0x171d('0x8')]);}})[_0x171d('0x9')](function(_0x43d83e){return _0x1257a0(_0x43d83e);});});}exports[_0x171d('0xa')]=function(_0x117bf0,_0x4f13da){return request('SendMail',{'account':_0x117bf0,'message':_0x4f13da});};
\ No newline at end of file
index 3d56d7f..5aa8e00 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2794=['substring','line','exports','stream','call','_inBody','inherits','prototype','_transform','\x0d\x0a\x0d\x0a','_localBuffer','toString','indexOf','split','slice','length','emit','headers'];(function(_0x2c1144,_0x5264a8){var _0x147bd2=function(_0xaee5c7){while(--_0xaee5c7){_0x2c1144['push'](_0x2c1144['shift']());}};_0x147bd2(++_0x5264a8);}(_0x2794,0x111));var _0x4279=function(_0x2a1079,_0x5979be){_0x2a1079=_0x2a1079-0x0;var _0x513940=_0x2794[_0x2a1079];return _0x513940;};'use strict';var util=require('util');var Transform=require(_0x4279('0x0'))['Transform'];function AGIReply(_0x3b5bf0){Transform[_0x4279('0x1')](this,_0x3b5bf0);this['_localBuffer']='';this[_0x4279('0x2')]=![];}util[_0x4279('0x3')](AGIReply,Transform);AGIReply[_0x4279('0x4')][_0x4279('0x5')]=function(_0x3f2ade,_0x1e31b2,_0x44cf69){var _0x369301='\x0a',_0x167e5=['\x0a\x0a',_0x4279('0x6')],_0x234f61=-0x1,_0x219adf=-0x1,_0x5493f6='',_0x317bec=0x0,_0x42d848='',_0x19b9b4='';this[_0x4279('0x7')]+=_0x3f2ade[_0x4279('0x8')]();_0x42d848=this[_0x4279('0x7')];if(!this[_0x4279('0x2')]){_0x317bec=0x0;while(_0x167e5[_0x317bec]){while((_0x219adf=_0x42d848[_0x4279('0x9')](_0x167e5[_0x317bec]))!=-0x1){_0x5493f6=_0x167e5[_0x317bec];_0x19b9b4=_0x42d848['substring'](0x0,_0x219adf);_0x42d848=_0x42d848['substring'](_0x219adf+_0x5493f6['length']);var _0x15274f=_0x19b9b4[_0x4279('0xa')](_0x369301),_0x101b84=0x0,_0x593aee={},_0x52b4a8='',_0x5e3cac='',_0x30c18c=-0x1;while(_0x15274f[_0x101b84]){_0x30c18c=_0x15274f[_0x101b84][_0x4279('0x9')](':');if(_0x30c18c!=-0x1){_0x52b4a8=_0x15274f[_0x101b84][_0x4279('0xb')](0x0,_0x30c18c)['trim']();_0x5e3cac=_0x15274f[_0x101b84][_0x4279('0xb')](_0x30c18c+0x1)['trim']();if(_0x52b4a8[_0x4279('0xc')]>0x0){_0x593aee[_0x52b4a8]=_0x5e3cac;}}else{}_0x101b84++;}this[_0x4279('0xd')](_0x4279('0xe'),_0x593aee);this['_inBody']=!![];}_0x317bec++;}this['_localBuffer']=_0x42d848;}else{while((_0x234f61=_0x42d848[_0x4279('0x9')](_0x369301))!=-0x1){_0x19b9b4=_0x42d848[_0x4279('0xf')](0x0,_0x234f61);this[_0x4279('0xd')](_0x4279('0x10'),_0x19b9b4);_0x42d848=_0x42d848[_0x4279('0xf')](_0x234f61+_0x369301['length']);}this[_0x4279('0x7')]=_0x42d848;}_0x44cf69();};module[_0x4279('0x11')]=AGIReply;
\ No newline at end of file
+var _0xf692=['headers','line','exports','util','call','inherits','_transform','\x0d\x0a\x0d\x0a','_localBuffer','toString','substring','length','split','indexOf','slice','trim','emit'];(function(_0x1e60ef,_0xab7fd6){var _0x13a60a=function(_0x69d30d){while(--_0x69d30d){_0x1e60ef['push'](_0x1e60ef['shift']());}};_0x13a60a(++_0xab7fd6);}(_0xf692,0x1f0));var _0x2f69=function(_0x936159,_0x17a38c){_0x936159=_0x936159-0x0;var _0x463e42=_0xf692[_0x936159];return _0x463e42;};'use strict';var util=require(_0x2f69('0x0'));var Transform=require('stream')['Transform'];function AGIReply(_0x398537){Transform[_0x2f69('0x1')](this,_0x398537);this['_localBuffer']='';this['_inBody']=![];}util[_0x2f69('0x2')](AGIReply,Transform);AGIReply['prototype'][_0x2f69('0x3')]=function(_0xc4dd90,_0x497466,_0x22aa74){var _0x4b7a69='\x0a',_0x3d053c=['\x0a\x0a',_0x2f69('0x4')],_0x3b37eb=-0x1,_0x32e2cf=-0x1,_0x320a3a='',_0x30ad30=0x0,_0x5c88a7='',_0x70f07b='';this[_0x2f69('0x5')]+=_0xc4dd90[_0x2f69('0x6')]();_0x5c88a7=this[_0x2f69('0x5')];if(!this['_inBody']){_0x30ad30=0x0;while(_0x3d053c[_0x30ad30]){while((_0x32e2cf=_0x5c88a7['indexOf'](_0x3d053c[_0x30ad30]))!=-0x1){_0x320a3a=_0x3d053c[_0x30ad30];_0x70f07b=_0x5c88a7['substring'](0x0,_0x32e2cf);_0x5c88a7=_0x5c88a7[_0x2f69('0x7')](_0x32e2cf+_0x320a3a[_0x2f69('0x8')]);var _0x54a901=_0x70f07b[_0x2f69('0x9')](_0x4b7a69),_0x246112=0x0,_0x1dc0f6={},_0x3ac9de='',_0x24bb37='',_0xff8080=-0x1;while(_0x54a901[_0x246112]){_0xff8080=_0x54a901[_0x246112][_0x2f69('0xa')](':');if(_0xff8080!=-0x1){_0x3ac9de=_0x54a901[_0x246112][_0x2f69('0xb')](0x0,_0xff8080)[_0x2f69('0xc')]();_0x24bb37=_0x54a901[_0x246112][_0x2f69('0xb')](_0xff8080+0x1)[_0x2f69('0xc')]();if(_0x3ac9de[_0x2f69('0x8')]>0x0){_0x1dc0f6[_0x3ac9de]=_0x24bb37;}}else{}_0x246112++;}this[_0x2f69('0xd')](_0x2f69('0xe'),_0x1dc0f6);this['_inBody']=!![];}_0x30ad30++;}this[_0x2f69('0x5')]=_0x5c88a7;}else{while((_0x3b37eb=_0x5c88a7[_0x2f69('0xa')](_0x4b7a69))!=-0x1){_0x70f07b=_0x5c88a7[_0x2f69('0x7')](0x0,_0x3b37eb);this[_0x2f69('0xd')](_0x2f69('0xf'),_0x70f07b);_0x5c88a7=_0x5c88a7[_0x2f69('0x7')](_0x3b37eb+_0x4b7a69[_0x2f69('0x8')]);}this['_localBuffer']=_0x5c88a7;}_0x22aa74();};module[_0x2f69('0x10')]=AGIReply;
\ No newline at end of file
index f53993a..4a53c66 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcbc7=['then','error','result','catch','getSquareProject','ShowSquareProject','production','getMailAccountById','ShowMailAccount','MailServerOut','Smtp','name','getSquareProjectById','getVoiceQueueById','ShowVoiceQueue','getVariableById','ShowVariable','getSquareOdbcById','ShowSquareOdbc','dsn','getUserById','getTrunkById','ShowInterval','Interval','Intervals','getSmsAccountById','createSmsMessage','CreateSmsMessage','createSquareDetailsReport','CreateSquareDetailsReport','CreateSquareReport','merge','arg_1','arg_2','YYYY-MM-DD\x20HH:mm:ss','CreateSquareRecording','createSquareMessage','createCmContact','ShowCmHopper','phone','CreateCmContact','getPauseById','ShowPause','LoginUser','agentPause','agentLogout','LogoutUser','bluebird','moment','lodash','util','jayson/promise','client','http'];(function(_0xc6d35,_0x445827){var _0x41a7cb=function(_0x2b2039){while(--_0x2b2039){_0xc6d35['push'](_0xc6d35['shift']());}};_0x41a7cb(++_0x445827);}(_0xcbc7,0x107));var _0x7cbc=function(_0x163e4e,_0x44cc89){_0x163e4e=_0x163e4e-0x0;var _0x4d825c=_0xcbc7[_0x163e4e];return _0x4d825c;};'use strict';var BPromise=require(_0x7cbc('0x0'));var moment=require(_0x7cbc('0x1'));var _=require(_0x7cbc('0x2'));var util=require(_0x7cbc('0x3'));var jayson=require(_0x7cbc('0x4'));var client=jayson[_0x7cbc('0x5')][_0x7cbc('0x6')]({'port':0x2329});function request(_0xd2d9af,_0x42d650){return new BPromise(function(_0x13f68c,_0x4f61e3){return client['request'](_0xd2d9af,_0x42d650)[_0x7cbc('0x7')](function(_0x41c52d){if(_0x41c52d[_0x7cbc('0x8')]){return _0x4f61e3(_0x41c52d[_0x7cbc('0x8')]['message']);}else{return _0x13f68c(_0x41c52d[_0x7cbc('0x9')]);}})[_0x7cbc('0xa')](function(_0x2d5a42){return _0x4f61e3(_0x2d5a42);});});}exports[_0x7cbc('0xb')]=function(_0x4b399b){return request(_0x7cbc('0xc'),{'options':{'raw':![],'where':{'name':_0x4b399b},'attributes':[_0x7cbc('0xd')]}});};exports[_0x7cbc('0xe')]=function(_0x4e1c85){return request(_0x7cbc('0xf'),{'options':{'raw':![],'where':{'id':_0x4e1c85},'include':[{'model':_0x7cbc('0x10'),'as':_0x7cbc('0x11')}],'attributes':['id',_0x7cbc('0x12'),'email']}});};exports[_0x7cbc('0x13')]=function(_0x21e879){return request('ShowSquareProject',{'options':{'where':{'id':_0x21e879},'attributes':[_0x7cbc('0x12')]}});};exports[_0x7cbc('0x14')]=function(_0x4344f2){return request(_0x7cbc('0x15'),{'options':{'where':{'id':_0x4344f2},'attributes':[_0x7cbc('0x12')]}});};exports[_0x7cbc('0x16')]=function(_0x439309){return request(_0x7cbc('0x17'),{'options':{'where':{'id':_0x439309},'attributes':[_0x7cbc('0x12')]}});};exports[_0x7cbc('0x18')]=function(_0x5f2d73){return request(_0x7cbc('0x19'),{'options':{'where':{'id':_0x5f2d73},'attributes':[_0x7cbc('0x1a')]}});};exports[_0x7cbc('0x1b')]=function(_0x267715){return request('ShowUser',{'options':{'where':{'id':_0x267715},'attributes':[_0x7cbc('0x12')]}});};exports[_0x7cbc('0x1c')]=function(_0x5a9fe1){return request('ShowTrunk',{'options':{'where':{'id':_0x5a9fe1},'attributes':[_0x7cbc('0x12')]}});};exports['getSoundById']=function(_0x5cf078){return request('ShowSound',{'options':{'where':{'id':_0x5cf078},'attributes':['save_name']}});};exports['getIntervalById']=function(_0x464e67){return request(_0x7cbc('0x1d'),{'options':{'raw':![],'where':{'id':_0x464e67},'include':[{'model':_0x7cbc('0x1e'),'as':_0x7cbc('0x1f')}]}});};exports[_0x7cbc('0x20')]=function(_0xb6d5f2){return request('ShowSmsAccount',{'options':{'where':{'id':_0xb6d5f2},'attributes':['id',_0x7cbc('0x12')]}});};exports[_0x7cbc('0x21')]=function(_0x53ab58){return request(_0x7cbc('0x22'),{'body':_0x53ab58});};exports[_0x7cbc('0x23')]=function(_0x177f4f){return request(_0x7cbc('0x24'),{'body':_0x177f4f});};exports['createSquareReport']=function(_0x1448eb){return request(_0x7cbc('0x25'),{'body':_[_0x7cbc('0x26')](_0x1448eb,{'project_name':_0x1448eb[_0x7cbc('0x27')],'prev_project_name':_0x1448eb[_0x7cbc('0x28')]||'','is_subproject':_0x1448eb[_0x7cbc('0x28')]?!![]:![],'leaveAt':moment()['format'](_0x7cbc('0x29'))})});};exports['createSquareRecording']=function(_0x4dcac3){return request(_0x7cbc('0x2a'),{'body':_0x4dcac3});};exports[_0x7cbc('0x2b')]=function(_0xbdc5ce){return request('CreateSquareMessage',{'body':_0xbdc5ce});};exports[_0x7cbc('0x2c')]=function(_0xc0ad21){return request(_0x7cbc('0x2d'),{'options':{'raw':![],'where':{'phone':_0xc0ad21[_0x7cbc('0x2e')],'ListId':_0xc0ad21['ListId']}}})[_0x7cbc('0x7')](function(_0x13b70a){if(_0x13b70a){return _0x13b70a;}return request(_0x7cbc('0x2f'),{'body':_0xc0ad21});});};exports[_0x7cbc('0x30')]=function(_0x3fda69){return request(_0x7cbc('0x31'),{'options':{'where':{'id':_0x3fda69},'attributes':[_0x7cbc('0x12')]}});};exports['agentLogin']=function(_0x411577,_0x2055e2){return request(_0x7cbc('0x32'),{'body':{'interface':_0x2055e2},'options':{'where':_0x411577}});};exports[_0x7cbc('0x33')]=function(_0x46f94e,_0x31bca8,_0x54a57f){return request('PauseUser',{'body':{'type':_0x31bca8,'uniqueid':_0x54a57f},'options':{'where':_0x46f94e}});};exports['agentUnpause']=function(_0x334d68){return request('UnpauseUser',{'body':{},'options':{'where':_0x334d68}});};exports[_0x7cbc('0x34')]=function(_0x331337){return request(_0x7cbc('0x35'),{'body':{},'options':{'where':_0x331337}});};
\ No newline at end of file
+var _0xd439=['arg_2','YYYY-MM-DD\x20HH:mm:ss','createSquareRecording','CreateSquareRecording','createSquareMessage','phone','CreateCmContact','getPauseById','ShowPause','agentLogin','LoginUser','agentPause','PauseUser','agentLogout','LogoutUser','bluebird','lodash','util','jayson/promise','http','request','then','error','result','catch','getSquareProject','ShowSquareProject','production','getMailAccountById','ShowMailAccount','MailServerOut','name','email','getSquareProjectById','getVoiceQueueById','ShowVoiceQueue','getVariableById','ShowVariable','getSquareOdbcById','ShowSquareOdbc','getUserById','ShowUser','getTrunkById','ShowTrunk','getSoundById','getIntervalById','ShowInterval','Interval','getSmsAccountById','ShowSmsAccount','createSmsMessage','CreateSmsMessage','createSquareDetailsReport','CreateSquareDetailsReport','CreateSquareReport','merge','arg_1'];(function(_0x167c2f,_0x3aec2f){var _0x5cbf15=function(_0x54b974){while(--_0x54b974){_0x167c2f['push'](_0x167c2f['shift']());}};_0x5cbf15(++_0x3aec2f);}(_0xd439,0xf3));var _0x9d43=function(_0x79e530,_0x301a31){_0x79e530=_0x79e530-0x0;var _0x30fcd0=_0xd439[_0x79e530];return _0x30fcd0;};'use strict';var BPromise=require(_0x9d43('0x0'));var moment=require('moment');var _=require(_0x9d43('0x1'));var util=require(_0x9d43('0x2'));var jayson=require(_0x9d43('0x3'));var client=jayson['client'][_0x9d43('0x4')]({'port':0x2329});function request(_0x47dec7,_0x5d657c){return new BPromise(function(_0x4ec83e,_0x1cf984){return client[_0x9d43('0x5')](_0x47dec7,_0x5d657c)[_0x9d43('0x6')](function(_0x4127dd){if(_0x4127dd[_0x9d43('0x7')]){return _0x1cf984(_0x4127dd[_0x9d43('0x7')]['message']);}else{return _0x4ec83e(_0x4127dd[_0x9d43('0x8')]);}})[_0x9d43('0x9')](function(_0x13bab6){return _0x1cf984(_0x13bab6);});});}exports[_0x9d43('0xa')]=function(_0x1fdd18){return request(_0x9d43('0xb'),{'options':{'raw':![],'where':{'name':_0x1fdd18},'attributes':[_0x9d43('0xc')]}});};exports[_0x9d43('0xd')]=function(_0x5e6b09){return request(_0x9d43('0xe'),{'options':{'raw':![],'where':{'id':_0x5e6b09},'include':[{'model':_0x9d43('0xf'),'as':'Smtp'}],'attributes':['id',_0x9d43('0x10'),_0x9d43('0x11')]}});};exports[_0x9d43('0x12')]=function(_0x1611f3){return request('ShowSquareProject',{'options':{'where':{'id':_0x1611f3},'attributes':[_0x9d43('0x10')]}});};exports[_0x9d43('0x13')]=function(_0x3ffd6e){return request(_0x9d43('0x14'),{'options':{'where':{'id':_0x3ffd6e},'attributes':[_0x9d43('0x10')]}});};exports[_0x9d43('0x15')]=function(_0x491244){return request(_0x9d43('0x16'),{'options':{'where':{'id':_0x491244},'attributes':[_0x9d43('0x10')]}});};exports[_0x9d43('0x17')]=function(_0x5edfbb){return request(_0x9d43('0x18'),{'options':{'where':{'id':_0x5edfbb},'attributes':['dsn']}});};exports[_0x9d43('0x19')]=function(_0x1cf686){return request(_0x9d43('0x1a'),{'options':{'where':{'id':_0x1cf686},'attributes':['name']}});};exports[_0x9d43('0x1b')]=function(_0x4f579a){return request(_0x9d43('0x1c'),{'options':{'where':{'id':_0x4f579a},'attributes':[_0x9d43('0x10')]}});};exports[_0x9d43('0x1d')]=function(_0xe35d1){return request('ShowSound',{'options':{'where':{'id':_0xe35d1},'attributes':['save_name']}});};exports[_0x9d43('0x1e')]=function(_0x37b3b1){return request(_0x9d43('0x1f'),{'options':{'raw':![],'where':{'id':_0x37b3b1},'include':[{'model':_0x9d43('0x20'),'as':'Intervals'}]}});};exports[_0x9d43('0x21')]=function(_0x2fbb69){return request(_0x9d43('0x22'),{'options':{'where':{'id':_0x2fbb69},'attributes':['id','name']}});};exports[_0x9d43('0x23')]=function(_0x1c618f){return request(_0x9d43('0x24'),{'body':_0x1c618f});};exports[_0x9d43('0x25')]=function(_0x16521c){return request(_0x9d43('0x26'),{'body':_0x16521c});};exports['createSquareReport']=function(_0x4cd55c){return request(_0x9d43('0x27'),{'body':_[_0x9d43('0x28')](_0x4cd55c,{'project_name':_0x4cd55c[_0x9d43('0x29')],'prev_project_name':_0x4cd55c[_0x9d43('0x2a')]||'','is_subproject':_0x4cd55c['arg_2']?!![]:![],'leaveAt':moment()['format'](_0x9d43('0x2b'))})});};exports[_0x9d43('0x2c')]=function(_0x2e79d4){return request(_0x9d43('0x2d'),{'body':_0x2e79d4});};exports[_0x9d43('0x2e')]=function(_0x2fdc4f){return request('CreateSquareMessage',{'body':_0x2fdc4f});};exports['createCmContact']=function(_0x1329e5){return request('ShowCmHopper',{'options':{'raw':![],'where':{'phone':_0x1329e5[_0x9d43('0x2f')],'ListId':_0x1329e5['ListId']}}})[_0x9d43('0x6')](function(_0xe3c63d){if(_0xe3c63d){return _0xe3c63d;}return request(_0x9d43('0x30'),{'body':_0x1329e5});});};exports[_0x9d43('0x31')]=function(_0x43fc48){return request(_0x9d43('0x32'),{'options':{'where':{'id':_0x43fc48},'attributes':[_0x9d43('0x10')]}});};exports[_0x9d43('0x33')]=function(_0x567087,_0x57a0e6){return request(_0x9d43('0x34'),{'body':{'interface':_0x57a0e6},'options':{'where':_0x567087}});};exports[_0x9d43('0x35')]=function(_0x2e6d95,_0x11d329,_0x39a341){return request(_0x9d43('0x36'),{'body':{'type':_0x11d329,'uniqueid':_0x39a341},'options':{'where':_0x2e6d95}});};exports['agentUnpause']=function(_0x4709c0){return request('UnpauseUser',{'body':{},'options':{'where':_0x4709c0}});};exports[_0x9d43('0x37')]=function(_0x14cf8c){return request(_0x9d43('0x38'),{'body':{},'options':{'where':_0x14cf8c}});};
\ No newline at end of file
index fde7930..9edad03 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed08=['exports','./lex'];(function(_0x4867a8,_0xc2057c){var _0x5e5eec=function(_0x49144e){while(--_0x49144e){_0x4867a8['push'](_0x4867a8['shift']());}};_0x5e5eec(++_0xc2057c);}(_0xed08,0x67));var _0x8ed0=function(_0x17b7d7,_0x551056){_0x17b7d7=_0x17b7d7-0x0;var _0x1b62dd=_0xed08[_0x17b7d7];return _0x1b62dd;};var polly=require('./polly');var lex=require(_0x8ed0('0x0'));module[_0x8ed0('0x1')]={'polly':polly,'lex':lex};
\ No newline at end of file
+var _0xd86a=['./polly','./lex','exports'];(function(_0x270986,_0x42bc63){var _0x4fc35d=function(_0x7cc971){while(--_0x7cc971){_0x270986['push'](_0x270986['shift']());}};_0x4fc35d(++_0x42bc63);}(_0xd86a,0xf3));var _0xad86=function(_0x49d41c,_0x2bdc35){_0x49d41c=_0x49d41c-0x0;var _0xb64c5f=_0xd86a[_0x49d41c];return _0xb64c5f;};var polly=require(_0xad86('0x0'));var lex=require(_0xad86('0x1'));module[_0xad86('0x2')]={'polly':polly,'lex':lex};
\ No newline at end of file
index 1a8a92f..cd3f618 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-'use strict';var lex=require('./lib/api');module['exports']=function(_0x46400f,_0xa5f6b7,_0x4a08d4,_0x5080f5,_0x229028,_0x1fdf5b){return lex(_0x46400f,_0xa5f6b7,_0x4a08d4,_0x5080f5,_0x229028,_0x1fdf5b);};
\ No newline at end of file
+var _0x6c76=['./lib/api','exports'];(function(_0x1d2a0c,_0x124c35){var _0xebcc1c=function(_0x3fd0af){while(--_0x3fd0af){_0x1d2a0c['push'](_0x1d2a0c['shift']());}};_0xebcc1c(++_0x124c35);}(_0x6c76,0x184));var _0x66c7=function(_0x1d0fa7,_0x1ad70f){_0x1d0fa7=_0x1d0fa7-0x0;var _0x5b2d91=_0x6c76[_0x1d0fa7];return _0x5b2d91;};'use strict';var lex=require(_0x66c7('0x0'));module[_0x66c7('0x1')]=function(_0x10a050,_0x55604c,_0x203e75,_0xd49f21,_0x519756,_0x572a2b){return lex(_0x10a050,_0x55604c,_0x203e75,_0xd49f21,_0x519756,_0x572a2b);};
\ No newline at end of file
index 1008655..cb9e1da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['LexRuntime','bluebird','aws-sdk','slots','hasOwnProperty'];(function(_0x5d67c2,_0x2c1309){var _0x27a5bb=function(_0x29ac03){while(--_0x29ac03){_0x5d67c2['push'](_0x5d67c2['shift']());}};_0x27a5bb(++_0x2c1309);}(_0xa9e0,0x123));var _0x0a9e=function(_0x173d7e,_0x3242fd){_0x173d7e=_0x173d7e-0x0;var _0x2220d6=_0xa9e0[_0x173d7e];return _0x2220d6;};'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(_0x33d8a6,_0x45a9b2){var _0x4f1c24=function(_0x9c7703){while(--_0x9c7703){_0x33d8a6['push'](_0x33d8a6['shift']());}};_0x4f1c24(++_0x45a9b2);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4e1d03,_0x786f3a){_0x4e1d03=_0x4e1d03-0x0;var _0x362d4b=_0xa9e0[_0x4e1d03];return _0x362d4b;};'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 2ef37b2..1ad584f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa91b=['./lib/api'];(function(_0x488ceb,_0x38c965){var _0x93d517=function(_0x3c9d14){while(--_0x3c9d14){_0x488ceb['push'](_0x488ceb['shift']());}};_0x93d517(++_0x38c965);}(_0xa91b,0x91));var _0xba91=function(_0x117b72,_0xf70554){_0x117b72=_0x117b72-0x0;var _0x15ebad=_0xa91b[_0x117b72];return _0x15ebad;};'use strict';var polly=require(_0xba91('0x0'));module['exports']=function(_0x377f09,_0xc026bd,_0x40e368,_0x58e416,_0x6f9d0e,_0x2eeb52,_0x3c3204){return polly(_0x377f09,_0xc026bd,_0x40e368,_0x58e416,_0x6f9d0e,_0x2eeb52,_0x3c3204);};
\ No newline at end of file
+'use strict';var polly=require('./lib/api');module['exports']=function(_0x594c13,_0x9d6a41,_0x3a2e9c,_0x237bad,_0x4f7f10,_0x32dc4f,_0x40b39b){return polly(_0x594c13,_0x9d6a41,_0x3a2e9c,_0x237bad,_0x4f7f10,_0x32dc4f,_0x40b39b);};
\ No newline at end of file
index 7395d86..67c6f44 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a7c=['No\x20data\x20response\x20from\x20aws\x20Polly!','Polly','text','mp3','path','bluebird','randomstring','aws-sdk','synthesizeSpeech','AudioStream','writeFile'];(function(_0x1510c5,_0xde9022){var _0x433a86=function(_0x114896){while(--_0x114896){_0x1510c5['push'](_0x1510c5['shift']());}};_0x433a86(++_0xde9022);}(_0x9a7c,0xca));var _0xc9a7=function(_0x3218cc,_0x482fec){_0x3218cc=_0x3218cc-0x0;var _0x28e718=_0x9a7c[_0x3218cc];return _0x28e718;};'use strict';var fs=require('fs');var path=require(_0xc9a7('0x0'));var BPromise=require(_0xc9a7('0x1'));var rs=require(_0xc9a7('0x2'));var AWS=require(_0xc9a7('0x3'));function pollyResult(_0xd0f1de,_0x56db04,_0x53152b){return new BPromise(function(_0x58b087,_0x5128a0){_0xd0f1de[_0xc9a7('0x4')](_0x56db04,function(_0x29ce33,_0x16feda){if(_0x29ce33){_0x5128a0(_0x29ce33);}else if(_0x16feda){if(_0x16feda[_0xc9a7('0x5')]instanceof Buffer){fs[_0xc9a7('0x6')](_0x53152b,_0x16feda[_0xc9a7('0x5')],function(_0x7ed111){if(_0x7ed111){_0x5128a0(_0x7ed111);}else{_0x58b087();}});}else{_0x5128a0(new Error('Invalid\x20data\x20response\x20from\x20aws\x20Polly!'));}}else{_0x5128a0(new Error(_0xc9a7('0x7')));}});});}module['exports']=function(_0x563216,_0x5525e9,_0x2fd96e,_0x5bb721,_0x308bed,_0x3c04e2,_0x42266a){var _0x4671ea=new AWS[(_0xc9a7('0x8'))]({'accessKeyId':_0x563216,'secretAccessKey':_0x5525e9,'region':_0x2fd96e});var _0x4fc466={'Text':_0x308bed,'TextType':_0x3c04e2||_0xc9a7('0x9'),'OutputFormat':_0xc9a7('0xa'),'VoiceId':_0x5bb721};return pollyResult(_0x4671ea,_0x4fc466,_0x42266a);};
\ No newline at end of file
+var _0x074b=['bluebird','randomstring','aws-sdk','synthesizeSpeech','writeFile','AudioStream','Invalid\x20data\x20response\x20from\x20aws\x20Polly!','exports','Polly','path'];(function(_0x334841,_0x2bbc4c){var _0x5beb4b=function(_0x4bea72){while(--_0x4bea72){_0x334841['push'](_0x334841['shift']());}};_0x5beb4b(++_0x2bbc4c);}(_0x074b,0x17b));var _0xb074=function(_0x4cc9c0,_0x5dffc7){_0x4cc9c0=_0x4cc9c0-0x0;var _0x226a34=_0x074b[_0x4cc9c0];return _0x226a34;};'use strict';var fs=require('fs');var path=require(_0xb074('0x0'));var BPromise=require(_0xb074('0x1'));var rs=require(_0xb074('0x2'));var AWS=require(_0xb074('0x3'));function pollyResult(_0x336b1e,_0x2269f3,_0x2018d8){return new BPromise(function(_0xbf50c5,_0x4390ec){_0x336b1e[_0xb074('0x4')](_0x2269f3,function(_0x27be6f,_0x20c5c0){if(_0x27be6f){_0x4390ec(_0x27be6f);}else if(_0x20c5c0){if(_0x20c5c0['AudioStream']instanceof Buffer){fs[_0xb074('0x5')](_0x2018d8,_0x20c5c0[_0xb074('0x6')],function(_0xa9943f){if(_0xa9943f){_0x4390ec(_0xa9943f);}else{_0xbf50c5();}});}else{_0x4390ec(new Error(_0xb074('0x7')));}}else{_0x4390ec(new Error('No\x20data\x20response\x20from\x20aws\x20Polly!'));}});});}module[_0xb074('0x8')]=function(_0x17bace,_0x10db76,_0xa4ea86,_0x1c66a1,_0x2d2f85,_0x4bd956,_0x19aa32){var _0x474340=new AWS[(_0xb074('0x9'))]({'accessKeyId':_0x17bace,'secretAccessKey':_0x10db76,'region':_0xa4ea86});var _0x3185f4={'Text':_0x2d2f85,'TextType':_0x4bd956||'text','OutputFormat':'mp3','VoiceId':_0x1c66a1};return pollyResult(_0x474340,_0x3185f4,_0x19aa32);};
\ No newline at end of file
index 99c4b51..3512b9b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c02=['exports','./lib/api'];(function(_0x431e6e,_0x3d2d42){var _0x1b5197=function(_0x245b7e){while(--_0x245b7e){_0x431e6e['push'](_0x431e6e['shift']());}};_0x1b5197(++_0x3d2d42);}(_0x0c02,0x193));var _0x20c0=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0c02[_0x3dd15e];return _0x231fd0;};'use strict';var asr=require(_0x20c0('0x0'));module[_0x20c0('0x1')]=function(_0x1c87d2,_0x5187b5,_0x5145a4,_0x5689c3){return asr(_0x1c87d2,_0x5187b5,_0x5145a4);};
\ No newline at end of file
+var _0x275e=['./lib/api'];(function(_0x45891c,_0x3b67d7){var _0x396fb2=function(_0x52e80c){while(--_0x52e80c){_0x45891c['push'](_0x45891c['shift']());}};_0x396fb2(++_0x3b67d7);}(_0x275e,0xfa));var _0xe275=function(_0x373233,_0x5959a4){_0x373233=_0x373233-0x0;var _0x19bde8=_0x275e[_0x373233];return _0x19bde8;};'use strict';var asr=require(_0xe275('0x0'));module['exports']=function(_0x92d585,_0x3752a1,_0x382967,_0x4181ee){return asr(_0x92d585,_0x3752a1,_0x382967);};
\ No newline at end of file
index d8def83..a6ba985 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa2f=['length','filepath\x20should\x20be\x20a\x20string','lang\x20should\x20be\x20a\x20string','readFileSync','toString','base64','/v1/speech:recognize?key=','https://speech.googleapis.com','string'];(function(_0x364ec2,_0x3d2b0e){var _0xc6451c=function(_0x671f){while(--_0x671f){_0x364ec2['push'](_0x364ec2['shift']());}};_0xc6451c(++_0x3d2b0e);}(_0xfa2f,0xe8));var _0xffa2=function(_0x9728fc,_0x5aa479){_0x9728fc=_0x9728fc-0x0;var _0x201f31=_0xfa2f[_0x9728fc];return _0x201f31;};'use strict';var url=require('url');var BPromise=require('bluebird');var fs=require('fs');var host=_0xffa2('0x0');module['exports']=function(_0x2411c2,_0x34de1d,_0x4d6507){return new BPromise(function(_0x54d423,_0x3fcced){var _0x12b74e;if(typeof _0x2411c2!==_0xffa2('0x1')||_0x2411c2[_0xffa2('0x2')]===0x0){return _0x3fcced(_0xffa2('0x3'));}if(typeof _0x34de1d!==_0xffa2('0x1')||_0x34de1d[_0xffa2('0x2')]===0x0){return _0x3fcced('key\x20should\x20be\x20a\x20string');}if(typeof _0x4d6507!=='undefined'&&(typeof _0x4d6507!==_0xffa2('0x1')||_0x4d6507[_0xffa2('0x2')]===0x0)){return _0x3fcced(_0xffa2('0x4'));}try{_0x12b74e=fs[_0xffa2('0x5')](_0x2411c2)[_0xffa2('0x6')](_0xffa2('0x7'));}catch(_0x1fa2eb){return _0x3fcced(_0x1fa2eb);}return _0x54d423({'method':'POST','uri':host+_0xffa2('0x8')+_0x34de1d,'body':{'config':{'encoding':'LINEAR16','sampleRateHertz':'8000','languageCode':_0x4d6507},'audio':{'content':_0x12b74e}},'json':!![]});});};
\ No newline at end of file
+var _0x5044=['POST','/v1/speech:recognize?key=','LINEAR16','8000','bluebird','exports','string','filepath\x20should\x20be\x20a\x20string','length','key\x20should\x20be\x20a\x20string','undefined','lang\x20should\x20be\x20a\x20string','readFileSync','base64'];(function(_0x361d3f,_0x3be2aa){var _0x320229=function(_0x138319){while(--_0x138319){_0x361d3f['push'](_0x361d3f['shift']());}};_0x320229(++_0x3be2aa);}(_0x5044,0xc8));var _0x4504=function(_0x2ab6c3,_0x5c72ca){_0x2ab6c3=_0x2ab6c3-0x0;var _0x2bcfe1=_0x5044[_0x2ab6c3];return _0x2bcfe1;};'use strict';var url=require('url');var BPromise=require(_0x4504('0x0'));var fs=require('fs');var host='https://speech.googleapis.com';module[_0x4504('0x1')]=function(_0x55be59,_0x2e8da7,_0x4da79c){return new BPromise(function(_0x254de4,_0x3e3c2d){var _0x19f90c;if(typeof _0x55be59!==_0x4504('0x2')||_0x55be59['length']===0x0){return _0x3e3c2d(_0x4504('0x3'));}if(typeof _0x2e8da7!==_0x4504('0x2')||_0x2e8da7[_0x4504('0x4')]===0x0){return _0x3e3c2d(_0x4504('0x5'));}if(typeof _0x4da79c!==_0x4504('0x6')&&(typeof _0x4da79c!==_0x4504('0x2')||_0x4da79c[_0x4504('0x4')]===0x0)){return _0x3e3c2d(_0x4504('0x7'));}try{_0x19f90c=fs[_0x4504('0x8')](_0x55be59)['toString'](_0x4504('0x9'));}catch(_0x5693ac){return _0x3e3c2d(_0x5693ac);}return _0x254de4({'method':_0x4504('0xa'),'uri':host+_0x4504('0xb')+_0x2e8da7,'body':{'config':{'encoding':_0x4504('0xc'),'sampleRateHertz':_0x4504('0xd'),'languageCode':_0x4da79c},'audio':{'content':_0x19f90c}},'json':!![]});});};
\ No newline at end of file
index 3638dd6..52d9ae7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5788=['exports','./asr'];(function(_0x290b97,_0xf028a4){var _0x53a9c7=function(_0x5216c8){while(--_0x5216c8){_0x290b97['push'](_0x290b97['shift']());}};_0x53a9c7(++_0xf028a4);}(_0x5788,0x15b));var _0x8578=function(_0x2f5f02,_0x33e14f){_0x2f5f02=_0x2f5f02-0x0;var _0x17e17c=_0x5788[_0x2f5f02];return _0x17e17c;};var asr=require(_0x8578('0x0'));module[_0x8578('0x1')]={'asr':asr};
\ No newline at end of file
+var _0x1af1=['exports'];(function(_0x4abea3,_0x3d8a98){var _0x3a4b1e=function(_0x5bcc66){while(--_0x5bcc66){_0x4abea3['push'](_0x4abea3['shift']());}};_0x3a4b1e(++_0x3d8a98);}(_0x1af1,0x10d));var _0x11af=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1af1[_0x3dd15e];return _0x231fd0;};var asr=require('./asr');module[_0x11af('0x0')]={'asr':asr};
\ No newline at end of file
index 951130f..b103182 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x64b3=['fulfillmentText','intent','displayName','isFallback','languageCode','queryText','intentDetectionConfidence','tildeASR','asr','awsPolly','polly','awsLex','lex','ispeechTTS','format','%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3','ispeechASR','freeform=3','sestekNDA','nda','text','CustomAction','channelData','CustomActionData','AudioFromTts','Data','audiofile','dirName','apiai-promise','bluebird','http','https','md5','querystring','request-promise','randomstring','sox','url','parse','util','./aws','./google','./tilde','../../../config/logger','protocol','https:','path','WHAT_EVER','error','\x20failed,\x20status\x20code\x20=\x20','statusCode','statusMessage','request\x20to\x20','info','close','pipe','end','host','data','wav','error\x20convert','finish\x20to\x20convert','start','.wav','writeFileSync','base64','then','unlink','chmodSync','777','split','readFileSync','toString','googleCloudTTS','https://texttospeech.googleapis.com/v1/','?key=','ssml','input','audioConfig','MP3','text:synthesize','POST','generate','.mp3','tmp','googleCloudTTS\x20path','googleTTS','application/x-www-form-urlencoded','stringify','null','generic','parse\x20response\x20failed:\x0a','text\x20length\x20limit\x20reached','resolve','goggleTTS\x20path','uri','results','map','alternatives','transcript','join','confidence','googleASR\x20transcription','[%s]\x20%s:%s','name','googleDialogflow','textRequest','result','source','resolvedQuery','action','actionIncomplete','speech','score','code','metadata','endConversation','isFallbackIntent','googleDialogflowV2','replace','SessionsClient','sessionPath','detectIntent','queryResult','allRequiredParamsPresent','diagnosticInfo','fields','end_conversation'];(function(_0x4b1852,_0x50ee99){var _0x22544e=function(_0x127666){while(--_0x127666){_0x4b1852['push'](_0x4b1852['shift']());}};_0x22544e(++_0x50ee99);}(_0x64b3,0x9c));var _0x364b=function(_0x470e3a,_0x581524){_0x470e3a=_0x470e3a-0x0;var _0x21b65b=_0x64b3[_0x470e3a];return _0x21b65b;};'use strict';var apiai=require(_0x364b('0x0'));var BPromise=require(_0x364b('0x1'));var dialogflow=require('dialogflow');var fs=require('fs');var http=require(_0x364b('0x2'));var https=require(_0x364b('0x3'));var md5=require(_0x364b('0x4'));var path=require('path');var querystring=require(_0x364b('0x5'));var rp=require(_0x364b('0x6'));var rs=require(_0x364b('0x7'));var sox=require(_0x364b('0x8'));var tts=require('google-tts-api');var urlParse=require(_0x364b('0x9'))[_0x364b('0xa')];var util=require(_0x364b('0xb'));var aws=require(_0x364b('0xc'));var google=require(_0x364b('0xd'));var sestek=require('./sestek');var tilde=require(_0x364b('0xe'));var logger=require(_0x364b('0xf'))('agi');var ISPEECH_API='https://api.ispeech.org/api/rest';function downloadFile(_0x3ee5b4,_0x1d7607){return new BPromise(function(_0x4cba81,_0x3b5d79){var _0x3390ee=urlParse(_0x3ee5b4);var _0x5a76e0=_0x3390ee[_0x364b('0x10')]===_0x364b('0x11')?https:http;var _0x491901={'host':_0x3390ee['host'],'path':_0x3390ee[_0x364b('0x12')],'headers':{'user-agent':_0x364b('0x13')}};_0x5a76e0['get'](_0x491901,function(_0x1d5018){if(_0x1d5018['statusCode']!==0xc8){logger[_0x364b('0x14')]('request\x20to\x20'+_0x3ee5b4+_0x364b('0x15')+_0x1d5018[_0x364b('0x16')]+'\x20('+_0x1d5018[_0x364b('0x17')]+')');_0x3b5d79(new Error(_0x364b('0x18')+_0x3ee5b4+_0x364b('0x15')+_0x1d5018[_0x364b('0x16')]+'\x20('+_0x1d5018[_0x364b('0x17')]+')'));return;}var _0x2126aa=fs['createWriteStream'](_0x1d7607);_0x2126aa['on']('finish',function(){logger[_0x364b('0x19')]('finish\x20download\x20file');_0x2126aa[_0x364b('0x1a')](_0x4cba81);});_0x2126aa['on'](_0x364b('0x14'),function(_0x43c578){fs['unlink'](_0x1d7607);logger[_0x364b('0x14')]('download\x20error',_0x43c578);_0x3b5d79(_0x43c578);});_0x1d5018[_0x364b('0x1b')](_0x2126aa);})['on']('error',function(_0xb6ef7c){logger[_0x364b('0x14')](_0xb6ef7c);_0x3b5d79(_0xb6ef7c);})[_0x364b('0x1c')]();});}function uploadFile(_0x1e1d52){return new BPromise(function(_0x5499f6,_0x100b2f){var _0x50046e=urlParse(_0x1e1d52);var _0xda9261=_0x50046e[_0x364b('0x10')]==='https:'?https:http;var _0x2e910f={'host':_0x50046e[_0x364b('0x1d')],'path':_0x50046e[_0x364b('0x12')],'headers':{'user-agent':_0x364b('0x13')}};_0xda9261['get'](_0x2e910f,function(_0x1d37d6){if(_0x1d37d6[_0x364b('0x16')]!==0xc8){_0x100b2f(new Error(_0x364b('0x18')+_0x1e1d52+_0x364b('0x15')+_0x1d37d6[_0x364b('0x16')]+'\x20('+_0x1d37d6[_0x364b('0x17')]+')'));return;}var _0x3ddafc='';_0x1d37d6['on'](_0x364b('0x1e'),function(_0x58116b){_0x3ddafc+=_0x58116b;});_0x1d37d6['on']('end',function(){_0x5499f6(_0x3ddafc);});})['on'](_0x364b('0x14'),function(_0x1b362a){_0x100b2f(_0x1b362a);})[_0x364b('0x1c')]();});}function convertFile(_0x3dc08d,_0x8946b8){return new BPromise(function(_0x3ffb02,_0x38fc82){var _0x39e5c4=sox['transcode'](_0x3dc08d,_0x8946b8,{'sampleRate':0x1f40,'format':_0x364b('0x1f'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x39e5c4['on']('error',function(_0x252f63){logger[_0x364b('0x14')](_0x364b('0x20'),_0x252f63);_0x38fc82(_0x252f63);});_0x39e5c4['on'](_0x364b('0x1c'),function(){logger[_0x364b('0x19')](_0x364b('0x21'));_0x3ffb02();});_0x39e5c4[_0x364b('0x22')]();});}function base64Decode(_0x2d7460,_0x51e09e){var _0x36e877=path['resolve'](__dirname,'tmp',rs['generate'](0x4)+_0x364b('0x23'));fs[_0x364b('0x24')](_0x36e877,_0x2d7460,_0x364b('0x25'));return convertFile(_0x36e877,_0x51e09e)[_0x364b('0x26')](function(){try{fs[_0x364b('0x27')](_0x36e877);fs[_0x364b('0x28')](_0x51e09e,_0x364b('0x29'));}catch(_0x35cee0){logger[_0x364b('0x14')](_0x35cee0);}return _0x51e09e[_0x364b('0x2a')]('.')[0x0];});}function base64Encode(_0x62d8ef){var _0x27e610=fs[_0x364b('0x2b')](_0x62d8ef);return new Buffer(_0x27e610)[_0x364b('0x2c')](_0x364b('0x25'));}exports[_0x364b('0x2d')]=function(_0x5047e1,_0x331d36,_0x124628,_0x21314d,_0x3de699,_0x5b9f14){var _0x448e16,_0x5046d1;var _0x1c180f=_0x364b('0x2e');var _0x4464ca=_0x364b('0x2f')+_0x5047e1;var _0x1c720a={};if(_0x331d36===_0x364b('0x30')){_0x1c720a[_0x364b('0x31')]={'ssml':_0x124628};}else{_0x1c720a[_0x364b('0x31')]={'text':_0x124628};};_0x1c720a['voice']={'languageCode':_0x21314d,'ssmlGender':_0x3de699};_0x1c720a[_0x364b('0x32')]={'audioEncoding':_0x364b('0x33'),'sampleRateHertz':0x1f40};var _0x347790={'url':_0x1c180f+_0x364b('0x34')+_0x4464ca,'method':_0x364b('0x35'),'json':!![],'body':_0x1c720a};return rp(_0x347790)[_0x364b('0x26')](function(_0x2b0555){return new BPromise(function(_0x13ad42,_0x25aeb9){_0x448e16=path['resolve'](__dirname,'tmp',rs[_0x364b('0x36')](0x4)+_0x364b('0x37'));var _0x354611=Buffer['from'](_0x2b0555['audioContent'],_0x364b('0x25'));return fs['writeFile'](_0x448e16,_0x354611,function(_0x1d27d9){_0x25aeb9(_0x1d27d9);},function(_0x10f873){fs['chmodSync'](_0x448e16,_0x364b('0x29'));_0x13ad42(_0x10f873);});});})[_0x364b('0x26')](function(_0x56ab46){_0x5046d1=path['resolve'](__dirname,_0x364b('0x38'),rs[_0x364b('0x36')](0x4)+'.wav');return convertFile(_0x448e16,_0x5046d1);})['then'](function(){try{fs['unlink'](_0x448e16);fs[_0x364b('0x28')](_0x5046d1,'777');}catch(_0x66bd50){logger[_0x364b('0x14')](_0x66bd50);}logger[_0x364b('0x19')](_0x364b('0x39'),_0x5046d1['split']('.')[0x0]);return _0x5046d1['split']('.')[0x0];});};exports[_0x364b('0x3a')]=function(_0x1af632,_0x349145){var _0x5b651a='https://translate.google.com/_/TranslateWebserverUi/data/batchexecute';var _0x5c4caf,_0x1a8990;var _0x2508e1;var _0x2481bb={'encoding':'utf8','method':'POST','timeout':0x2710,'url':_0x5b651a,'headers':{'Content-Type':_0x364b('0x3b')},'body':'f.req='+encodeURIComponent(JSON[_0x364b('0x3c')]([[['jQ1olc',JSON['stringify']([_0x1af632,_0x349145||'en',![],_0x364b('0x3d')]),null,_0x364b('0x3e')]]]))};return rp(_0x2481bb)[_0x364b('0x26')](function(_0xa0f94){try{_0x2508e1=eval(_0xa0f94['slice'](0x5))[0x0][0x2];}catch(_0x275d4a){throw new Error(_0x364b('0x3f')+_0xa0f94[_0x364b('0x1e')]);}if(!_0x2508e1){if(_0x1af632['length']>0xc8){throw new Error(_0x364b('0x40'));}else{throw new Error('lang\x20\x22'+_0x349145+'\x22\x20might\x20not\x20exist');}}try{_0x2508e1=eval(_0x2508e1)[0x0];}catch(_0x26eb82){throw new Error(_0x364b('0x3f')+res[_0x364b('0x1e')]);}const _0x13ed53=_0x2508e1;_0x5c4caf=path['resolve'](__dirname,_0x364b('0x38'),rs[_0x364b('0x36')](0x4)+_0x364b('0x37'));fs[_0x364b('0x24')](_0x5c4caf,_0x2508e1,{'encoding':_0x364b('0x25')});_0x1a8990=path[_0x364b('0x41')](__dirname,_0x364b('0x38'),rs['generate'](0x4)+_0x364b('0x23'));return convertFile(_0x5c4caf,_0x1a8990);})[_0x364b('0x26')](function(){try{fs[_0x364b('0x27')](_0x5c4caf);fs['chmodSync'](_0x1a8990,_0x364b('0x29'));}catch(_0xeb558b){logger[_0x364b('0x14')](_0xeb558b);}logger[_0x364b('0x19')](_0x364b('0x42'),_0x1a8990[_0x364b('0x2a')]('.')[0x0]);return _0x1a8990[_0x364b('0x2a')]('.')[0x0];});};exports['googleASR']=function(_0xc55521,_0x2bcbfe,_0x1447f7){return google['asr'](_0xc55521,_0x2bcbfe,_0x1447f7)['then'](function(_0xbea7fb){logger[_0x364b('0x19')](_0xbea7fb[_0x364b('0x43')]);return rp(_0xbea7fb);})[_0x364b('0x26')](function(_0x5558d9){var _0x4063c2='';var _0x13d26b=0x0;try{fs['unlink'](_0xc55521);}catch(_0xe52ae2){logger[_0x364b('0x14')](_0xe52ae2);}if(_0x5558d9&&_0x5558d9['results']){_0x4063c2=_0x5558d9[_0x364b('0x44')][_0x364b('0x45')](function(_0x21c86d){return _0x21c86d&&_0x21c86d['alternatives'][0x0]&&_0x21c86d[_0x364b('0x46')][0x0]['transcript']?_0x21c86d[_0x364b('0x46')][0x0][_0x364b('0x47')]:'';})[_0x364b('0x48')]('\x0a');_0x13d26b=_0x5558d9[_0x364b('0x44')]['map'](function(_0x3e5604){return _0x3e5604&&_0x3e5604[_0x364b('0x46')][0x0]&&_0x3e5604[_0x364b('0x46')][0x0][_0x364b('0x49')]?_0x3e5604[_0x364b('0x46')][0x0][_0x364b('0x49')]:0x0;})[_0x364b('0x48')]('\x0a');}logger[_0x364b('0x19')](_0x364b('0x4a'),_0x4063c2);logger['info']('googleASR\x20confidence',_0x13d26b);return{'transcript':_0x4063c2,'confidence':_0x13d26b};})['catch'](function(_0x1ae019){logger[_0x364b('0x14')](_0x364b('0x4b'),_0x1ae019[_0x364b('0x16')],_0x1ae019[_0x364b('0x4c')],_0x1ae019['message']);});};exports[_0x364b('0x4d')]=function(_0xd1ecdf,_0x366822,_0xada991,_0x1341a0){var _0x199b96=apiai(_0x366822,{'language':_0x1341a0||'en'});return _0x199b96[_0x364b('0x4e')](_0xada991,{'sessionId':md5(_0xd1ecdf)})['then'](function(_0x2b4206){logger[_0x364b('0x19')](JSON[_0x364b('0x3c')](_0x2b4206));return{'source':_0x2b4206[_0x364b('0x4f')][_0x364b('0x50')],'resolvedQuery':_0x2b4206[_0x364b('0x4f')][_0x364b('0x51')],'action':_0x2b4206['result'][_0x364b('0x52')],'actionIncomplete':_0x2b4206[_0x364b('0x4f')][_0x364b('0x53')],'speech':_0x2b4206[_0x364b('0x4f')]['fulfillment'][_0x364b('0x54')],'score':_0x2b4206[_0x364b('0x4f')][_0x364b('0x55')],'statusCode':_0x2b4206['status'][_0x364b('0x56')],'endConversation':_0x2b4206[_0x364b('0x4f')][_0x364b('0x57')][_0x364b('0x58')]||![],'isFallbackIntent':_0x2b4206[_0x364b('0x4f')]['metadata'][_0x364b('0x59')]};});};exports[_0x364b('0x5a')]=function(_0x40ea34,_0x3ddedf,_0x215c30,_0x29f9a4,_0x3d567d,_0x5d0707){var _0x14253e=_0x29f9a4[_0x364b('0x5b')](/\\n/g,'\x0a');var _0x2638d8={'credentials':{'private_key':_0x14253e,'client_email':_0x215c30}};var _0x5462b0=new dialogflow[(_0x364b('0x5c'))](_0x2638d8);var _0xa824de=_0x5462b0[_0x364b('0x5d')](_0x3ddedf,md5(_0x40ea34));var _0x22ee0a={'session':_0xa824de,'queryInput':{'text':{'text':_0x3d567d,'languageCode':_0x5d0707}}};return _0x5462b0[_0x364b('0x5e')](_0x22ee0a)[_0x364b('0x26')](function(_0x2cb258){if(_0x2cb258&&_0x2cb258['length']){logger['info']('Dialogflow\x20V2\x20response:',JSON[_0x364b('0x3c')](_0x2cb258));var _0x1ba35b=_0x2cb258[0x0];if(_0x1ba35b){var _0x1a91cb={'action':_0x1ba35b[_0x364b('0x5f')][_0x364b('0x52')],'allRequiredParamsPresent':_0x1ba35b['queryResult'][_0x364b('0x60')],'endConversation':_0x1ba35b['queryResult'][_0x364b('0x61')]&&_0x1ba35b[_0x364b('0x5f')][_0x364b('0x61')][_0x364b('0x62')]?_0x1ba35b[_0x364b('0x5f')]['diagnosticInfo'][_0x364b('0x62')][_0x364b('0x63')]['boolValue']:![],'fulfillmentText':_0x1ba35b[_0x364b('0x5f')][_0x364b('0x64')],'intentName':_0x1ba35b['queryResult'][_0x364b('0x65')][_0x364b('0x4c')],'intentDisplayName':_0x1ba35b[_0x364b('0x5f')][_0x364b('0x65')][_0x364b('0x66')],'isFallbackIntent':_0x1ba35b[_0x364b('0x5f')][_0x364b('0x65')][_0x364b('0x67')],'languageCode':_0x1ba35b[_0x364b('0x5f')][_0x364b('0x68')],'queryText':_0x1ba35b['queryResult'][_0x364b('0x69')],'responseId':_0x1ba35b['responseId'],'score':_0x1ba35b[_0x364b('0x5f')][_0x364b('0x6a')],'speech':_0x1ba35b[_0x364b('0x5f')][_0x364b('0x64')],'providerResponse':JSON['stringify'](_0x2cb258)};return _0x1a91cb;}}});};exports[_0x364b('0x6b')]=function(_0x228524,_0x3dca23,_0x54434d,_0x1de1cf){return tilde[_0x364b('0x6c')](_0x228524,_0x3dca23,_0x54434d,_0x1de1cf)['then'](function(_0xd476b4){try{fs[_0x364b('0x27')](_0x228524);}catch(_0x26ff69){logger[_0x364b('0x14')](_0x26ff69);}logger['info']('Tilde\x20ASR\x20transcription',_0xd476b4['transcript']);logger['info']('Tilde\x20ASR\x20confidence',_0xd476b4[_0x364b('0x49')]);return _0xd476b4;});};exports[_0x364b('0x6d')]=function(_0x4474aa,_0x1bc214,_0x5097af,_0x45fb8c,_0x30611a,_0x569694){var _0x8dce12=path[_0x364b('0x41')](__dirname,_0x364b('0x38'),rs[_0x364b('0x36')](0x4)+_0x364b('0x37'));var _0x24c1aa;return aws[_0x364b('0x6e')](_0x4474aa,_0x1bc214,_0x5097af,_0x45fb8c,_0x30611a,_0x569694,_0x8dce12)[_0x364b('0x26')](function(){_0x24c1aa=path[_0x364b('0x41')](__dirname,_0x364b('0x38'),rs[_0x364b('0x36')](0x4)+_0x364b('0x23'));return convertFile(_0x8dce12,_0x24c1aa);})[_0x364b('0x26')](function(){try{fs[_0x364b('0x27')](_0x8dce12);fs[_0x364b('0x28')](_0x24c1aa,_0x364b('0x29'));}catch(_0x1431ca){logger[_0x364b('0x14')](_0x1431ca);}return _0x24c1aa[_0x364b('0x2a')]('.')[0x0];});};exports[_0x364b('0x6f')]=function(_0x5b7bcd,_0x198b88,_0x1f33bf,_0x3decd1,_0x3a8785,_0x239d52){return aws[_0x364b('0x70')](_0x5b7bcd,_0x198b88,_0x1f33bf,_0x3decd1,_0x3a8785,_0x239d52)[_0x364b('0x26')](function(_0xf02547){logger['info'](JSON[_0x364b('0x3c')](_0xf02547));return _0xf02547;});};exports[_0x364b('0x71')]=function(_0x536d9e,_0x45f5ee,_0x5d905b,_0x36d3e9){var _0x1d23fd=util[_0x364b('0x72')](_0x364b('0x73'),ISPEECH_API,_0x536d9e,encodeURIComponent(_0x45f5ee),_0x5d905b,_0x36d3e9);var _0x3d4514=path['resolve'](__dirname,_0x364b('0x38'),rs['generate'](0x4)+_0x364b('0x37'));var _0x5390b6;return downloadFile(_0x1d23fd,_0x3d4514)[_0x364b('0x26')](function(){_0x5390b6=path['resolve'](__dirname,'tmp',rs[_0x364b('0x36')](0x4)+_0x364b('0x23'));return convertFile(_0x3d4514,_0x5390b6);})[_0x364b('0x26')](function(){try{fs['unlink'](_0x3d4514);fs['chmodSync'](_0x5390b6,_0x364b('0x29'));}catch(_0x1eb71b){logger[_0x364b('0x14')](_0x1eb71b);}return _0x5390b6[_0x364b('0x2a')]('.')[0x0];});};exports[_0x364b('0x74')]=function(_0x319e38,_0x312383,_0x3bef44,_0x5b0844){var _0x5e35ff=util[_0x364b('0x72')]('%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s',ISPEECH_API,_0x312383,_0x3bef44,base64Encode(_0x319e38),_0x5b0844?util[_0x364b('0x72')]('model=%s',encodeURIComponent(_0x5b0844)):_0x364b('0x75'));return uploadFile(_0x5e35ff)[_0x364b('0x26')](function(_0x4c32a2){return querystring[_0x364b('0xa')](_0x4c32a2);});};exports[_0x364b('0x76')]=function(_0x566d30,_0x3edea2){return sestek[_0x364b('0x77')](_0x566d30,_0x3edea2)[_0x364b('0x26')](function(_0x3fa966){logger[_0x364b('0x19')](JSON[_0x364b('0x3c')](_0x3fa966));var _0x396f63={'speech':_0x3fa966[_0x364b('0x78')],'action':_0x3fa966['channelData']?_0x3fa966['channelData'][_0x364b('0x79')]:undefined,'actiondata':_0x3fa966['channelData']?_0x3fa966[_0x364b('0x7a')][_0x364b('0x7b')]:undefined};if(_0x3fa966[_0x364b('0x7a')]&&_0x3fa966['channelData'][_0x364b('0x7c')]){return base64Decode(_0x3fa966[_0x364b('0x7a')][_0x364b('0x7c')][_0x364b('0x7d')],path[_0x364b('0x41')](__dirname,'tmp',rs[_0x364b('0x36')](0x4)+_0x364b('0x23')))[_0x364b('0x26')](function(_0x1ad468){_0x396f63[_0x364b('0x7e')]=_0x1ad468;return _0x396f63;});}return _0x396f63;});};exports[_0x364b('0x7f')]=function(){return __dirname;};
\ No newline at end of file
+var _0x0d33=['transcript','join','map','confidence','catch','name','message','googleDialogflow','result','source','actionIncomplete','fulfillment','speech','score','status','code','endConversation','metadata','googleDialogflowV2','replace','SessionsClient','sessionPath','detectIntent','length','Dialogflow\x20V2\x20response:','allRequiredParamsPresent','queryResult','diagnosticInfo','fields','end_conversation','fulfillmentText','intent','displayName','isFallback','languageCode','responseId','intentDetectionConfidence','tildeASR','asr','Tilde\x20ASR\x20transcription','Tilde\x20ASR\x20confidence','awsPolly','polly','awsLex','lex','ispeechTTS','format','%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3','%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s','model=%s','freeform=3','sestekNDA','channelData','CustomAction','CustomActionData','AudioFromTts','Data','dirName','apiai-promise','bluebird','dialogflow','http','https','md5','path','querystring','request-promise','sox','google-tts-api','url','parse','util','./aws','./google','./sestek','./tilde','../../../config/logger','agi','https://api.ispeech.org/api/rest','protocol','https:','host','WHAT_EVER','request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20','statusMessage','statusCode','createWriteStream','info','close','error','unlink','download\x20error','pipe','get','data','end','transcode','error\x20convert','finish\x20to\x20convert','resolve','tmp','generate','.wav','writeFileSync','base64','then','chmodSync','777','split','toString','https://texttospeech.googleapis.com/v1/','?key=','ssml','input','audioConfig','MP3','text:synthesize','POST','from','audioContent','writeFile','googleTTS','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','utf8','application/x-www-form-urlencoded','f.req=','stringify','jQ1olc','null','generic','slice','parse\x20response\x20failed:\x0a','text\x20length\x20limit\x20reached','\x22\x20might\x20not\x20exist','.mp3','goggleTTS\x20path','uri','results','alternatives'];(function(_0x3adad8,_0x5aef55){var _0x177095=function(_0x5eadaa){while(--_0x5eadaa){_0x3adad8['push'](_0x3adad8['shift']());}};_0x177095(++_0x5aef55);}(_0x0d33,0x152));var _0x30d3=function(_0xd57d77,_0x1fd355){_0xd57d77=_0xd57d77-0x0;var _0x23245e=_0x0d33[_0xd57d77];return _0x23245e;};'use strict';var apiai=require(_0x30d3('0x0'));var BPromise=require(_0x30d3('0x1'));var dialogflow=require(_0x30d3('0x2'));var fs=require('fs');var http=require(_0x30d3('0x3'));var https=require(_0x30d3('0x4'));var md5=require(_0x30d3('0x5'));var path=require(_0x30d3('0x6'));var querystring=require(_0x30d3('0x7'));var rp=require(_0x30d3('0x8'));var rs=require('randomstring');var sox=require(_0x30d3('0x9'));var tts=require(_0x30d3('0xa'));var urlParse=require(_0x30d3('0xb'))[_0x30d3('0xc')];var util=require(_0x30d3('0xd'));var aws=require(_0x30d3('0xe'));var google=require(_0x30d3('0xf'));var sestek=require(_0x30d3('0x10'));var tilde=require(_0x30d3('0x11'));var logger=require(_0x30d3('0x12'))(_0x30d3('0x13'));var ISPEECH_API=_0x30d3('0x14');function downloadFile(_0x273759,_0x374ccc){return new BPromise(function(_0x1e292a,_0x6fdca2){var _0x5165cc=urlParse(_0x273759);var _0x6e3656=_0x5165cc[_0x30d3('0x15')]===_0x30d3('0x16')?https:http;var _0xa68c80={'host':_0x5165cc[_0x30d3('0x17')],'path':_0x5165cc['path'],'headers':{'user-agent':_0x30d3('0x18')}};_0x6e3656['get'](_0xa68c80,function(_0xeebf4e){if(_0xeebf4e['statusCode']!==0xc8){logger['error'](_0x30d3('0x19')+_0x273759+_0x30d3('0x1a')+_0xeebf4e['statusCode']+'\x20('+_0xeebf4e[_0x30d3('0x1b')]+')');_0x6fdca2(new Error(_0x30d3('0x19')+_0x273759+_0x30d3('0x1a')+_0xeebf4e[_0x30d3('0x1c')]+'\x20('+_0xeebf4e[_0x30d3('0x1b')]+')'));return;}var _0x4c2077=fs[_0x30d3('0x1d')](_0x374ccc);_0x4c2077['on']('finish',function(){logger[_0x30d3('0x1e')]('finish\x20download\x20file');_0x4c2077[_0x30d3('0x1f')](_0x1e292a);});_0x4c2077['on'](_0x30d3('0x20'),function(_0x1cae62){fs[_0x30d3('0x21')](_0x374ccc);logger[_0x30d3('0x20')](_0x30d3('0x22'),_0x1cae62);_0x6fdca2(_0x1cae62);});_0xeebf4e[_0x30d3('0x23')](_0x4c2077);})['on'](_0x30d3('0x20'),function(_0x4c332b){logger[_0x30d3('0x20')](_0x4c332b);_0x6fdca2(_0x4c332b);})['end']();});}function uploadFile(_0x3c3147){return new BPromise(function(_0x5e50f0,_0x4e77e6){var _0x39ed6f=urlParse(_0x3c3147);var _0x4ddf0e=_0x39ed6f[_0x30d3('0x15')]==='https:'?https:http;var _0x30c37f={'host':_0x39ed6f[_0x30d3('0x17')],'path':_0x39ed6f['path'],'headers':{'user-agent':_0x30d3('0x18')}};_0x4ddf0e[_0x30d3('0x24')](_0x30c37f,function(_0x4b8456){if(_0x4b8456[_0x30d3('0x1c')]!==0xc8){_0x4e77e6(new Error(_0x30d3('0x19')+_0x3c3147+_0x30d3('0x1a')+_0x4b8456[_0x30d3('0x1c')]+'\x20('+_0x4b8456[_0x30d3('0x1b')]+')'));return;}var _0x4b2b8f='';_0x4b8456['on'](_0x30d3('0x25'),function(_0x184e0c){_0x4b2b8f+=_0x184e0c;});_0x4b8456['on'](_0x30d3('0x26'),function(){_0x5e50f0(_0x4b2b8f);});})['on'](_0x30d3('0x20'),function(_0x4182ce){_0x4e77e6(_0x4182ce);})[_0x30d3('0x26')]();});}function convertFile(_0x18d824,_0x38a27a){return new BPromise(function(_0x16c59d,_0x5a3a7a){var _0x31a6a7=sox[_0x30d3('0x27')](_0x18d824,_0x38a27a,{'sampleRate':0x1f40,'format':'wav','channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x31a6a7['on'](_0x30d3('0x20'),function(_0x2bfd6f){logger[_0x30d3('0x20')](_0x30d3('0x28'),_0x2bfd6f);_0x5a3a7a(_0x2bfd6f);});_0x31a6a7['on'](_0x30d3('0x26'),function(){logger['info'](_0x30d3('0x29'));_0x16c59d();});_0x31a6a7['start']();});}function base64Decode(_0x3ee06b,_0xe664cb){var _0x1b6f9d=path[_0x30d3('0x2a')](__dirname,_0x30d3('0x2b'),rs[_0x30d3('0x2c')](0x4)+_0x30d3('0x2d'));fs[_0x30d3('0x2e')](_0x1b6f9d,_0x3ee06b,_0x30d3('0x2f'));return convertFile(_0x1b6f9d,_0xe664cb)[_0x30d3('0x30')](function(){try{fs['unlink'](_0x1b6f9d);fs[_0x30d3('0x31')](_0xe664cb,_0x30d3('0x32'));}catch(_0x477fe6){logger[_0x30d3('0x20')](_0x477fe6);}return _0xe664cb[_0x30d3('0x33')]('.')[0x0];});}function base64Encode(_0x37bd7b){var _0x3b9794=fs['readFileSync'](_0x37bd7b);return new Buffer(_0x3b9794)[_0x30d3('0x34')]('base64');}exports['googleCloudTTS']=function(_0x73f5ce,_0x1a1343,_0x464110,_0x46e3b7,_0x529d6c,_0xa975cd){var _0x1c5279,_0x1bbae3;var _0x271ccd=_0x30d3('0x35');var _0x4e6c22=_0x30d3('0x36')+_0x73f5ce;var _0x50a175={};if(_0x1a1343===_0x30d3('0x37')){_0x50a175[_0x30d3('0x38')]={'ssml':_0x464110};}else{_0x50a175['input']={'text':_0x464110};};_0x50a175['voice']={'languageCode':_0x46e3b7,'ssmlGender':_0x529d6c};_0x50a175[_0x30d3('0x39')]={'audioEncoding':_0x30d3('0x3a'),'sampleRateHertz':0x1f40};var _0x3243da={'url':_0x271ccd+_0x30d3('0x3b')+_0x4e6c22,'method':_0x30d3('0x3c'),'json':!![],'body':_0x50a175};return rp(_0x3243da)[_0x30d3('0x30')](function(_0x3d1590){return new BPromise(function(_0x1661cb,_0xd7b5d6){_0x1c5279=path['resolve'](__dirname,_0x30d3('0x2b'),rs[_0x30d3('0x2c')](0x4)+'.mp3');var _0x346b64=Buffer[_0x30d3('0x3d')](_0x3d1590[_0x30d3('0x3e')],_0x30d3('0x2f'));return fs[_0x30d3('0x3f')](_0x1c5279,_0x346b64,function(_0x51fd04){_0xd7b5d6(_0x51fd04);},function(_0x22c5cb){fs[_0x30d3('0x31')](_0x1c5279,_0x30d3('0x32'));_0x1661cb(_0x22c5cb);});});})[_0x30d3('0x30')](function(_0x25af69){_0x1bbae3=path[_0x30d3('0x2a')](__dirname,_0x30d3('0x2b'),rs[_0x30d3('0x2c')](0x4)+_0x30d3('0x2d'));return convertFile(_0x1c5279,_0x1bbae3);})[_0x30d3('0x30')](function(){try{fs[_0x30d3('0x21')](_0x1c5279);fs['chmodSync'](_0x1bbae3,'777');}catch(_0xa2a986){logger[_0x30d3('0x20')](_0xa2a986);}logger['info']('googleCloudTTS\x20path',_0x1bbae3['split']('.')[0x0]);return _0x1bbae3['split']('.')[0x0];});};exports[_0x30d3('0x40')]=function(_0x1d8601,_0x1e556d){var _0x2fc879=_0x30d3('0x41');var _0x1418f0,_0x4c9aa6;var _0x5bf9d8;var _0x438bf7={'encoding':_0x30d3('0x42'),'method':_0x30d3('0x3c'),'timeout':0x2710,'url':_0x2fc879,'headers':{'Content-Type':_0x30d3('0x43')},'body':_0x30d3('0x44')+encodeURIComponent(JSON[_0x30d3('0x45')]([[[_0x30d3('0x46'),JSON[_0x30d3('0x45')]([_0x1d8601,_0x1e556d||'en',![],_0x30d3('0x47')]),null,_0x30d3('0x48')]]]))};return rp(_0x438bf7)[_0x30d3('0x30')](function(_0x4f327e){try{_0x5bf9d8=eval(_0x4f327e[_0x30d3('0x49')](0x5))[0x0][0x2];}catch(_0x41b51c){throw new Error(_0x30d3('0x4a')+_0x4f327e['data']);}if(!_0x5bf9d8){if(_0x1d8601['length']>0xc8){throw new Error(_0x30d3('0x4b'));}else{throw new Error('lang\x20\x22'+_0x1e556d+_0x30d3('0x4c'));}}try{_0x5bf9d8=eval(_0x5bf9d8)[0x0];}catch(_0x4ea809){throw new Error('parse\x20response\x20failed:\x0a'+res[_0x30d3('0x25')]);}const _0x548f7d=_0x5bf9d8;_0x1418f0=path[_0x30d3('0x2a')](__dirname,'tmp',rs[_0x30d3('0x2c')](0x4)+_0x30d3('0x4d'));fs[_0x30d3('0x2e')](_0x1418f0,_0x5bf9d8,{'encoding':_0x30d3('0x2f')});_0x4c9aa6=path[_0x30d3('0x2a')](__dirname,_0x30d3('0x2b'),rs[_0x30d3('0x2c')](0x4)+'.wav');return convertFile(_0x1418f0,_0x4c9aa6);})[_0x30d3('0x30')](function(){try{fs[_0x30d3('0x21')](_0x1418f0);fs[_0x30d3('0x31')](_0x4c9aa6,'777');}catch(_0xcbabb3){logger[_0x30d3('0x20')](_0xcbabb3);}logger[_0x30d3('0x1e')](_0x30d3('0x4e'),_0x4c9aa6[_0x30d3('0x33')]('.')[0x0]);return _0x4c9aa6['split']('.')[0x0];});};exports['googleASR']=function(_0xe06fd8,_0x241b58,_0x114f22){return google['asr'](_0xe06fd8,_0x241b58,_0x114f22)[_0x30d3('0x30')](function(_0x148895){logger[_0x30d3('0x1e')](_0x148895[_0x30d3('0x4f')]);return rp(_0x148895);})['then'](function(_0x187a89){var _0x28af8b='';var _0x22498b=0x0;try{fs[_0x30d3('0x21')](_0xe06fd8);}catch(_0x49af51){logger[_0x30d3('0x20')](_0x49af51);}if(_0x187a89&&_0x187a89[_0x30d3('0x50')]){_0x28af8b=_0x187a89[_0x30d3('0x50')]['map'](function(_0x2de738){return _0x2de738&&_0x2de738['alternatives'][0x0]&&_0x2de738[_0x30d3('0x51')][0x0][_0x30d3('0x52')]?_0x2de738[_0x30d3('0x51')][0x0][_0x30d3('0x52')]:'';})[_0x30d3('0x53')]('\x0a');_0x22498b=_0x187a89[_0x30d3('0x50')][_0x30d3('0x54')](function(_0x38ce40){return _0x38ce40&&_0x38ce40[_0x30d3('0x51')][0x0]&&_0x38ce40[_0x30d3('0x51')][0x0][_0x30d3('0x55')]?_0x38ce40[_0x30d3('0x51')][0x0][_0x30d3('0x55')]:0x0;})['join']('\x0a');}logger['info']('googleASR\x20transcription',_0x28af8b);logger[_0x30d3('0x1e')]('googleASR\x20confidence',_0x22498b);return{'transcript':_0x28af8b,'confidence':_0x22498b};})[_0x30d3('0x56')](function(_0x56a685){logger[_0x30d3('0x20')]('[%s]\x20%s:%s',_0x56a685[_0x30d3('0x1c')],_0x56a685[_0x30d3('0x57')],_0x56a685[_0x30d3('0x58')]);});};exports[_0x30d3('0x59')]=function(_0x19cf1c,_0x346fc2,_0x36dfe6,_0x3cb293){var _0x10d9e4=apiai(_0x346fc2,{'language':_0x3cb293||'en'});return _0x10d9e4['textRequest'](_0x36dfe6,{'sessionId':md5(_0x19cf1c)})[_0x30d3('0x30')](function(_0x3997fc){logger[_0x30d3('0x1e')](JSON[_0x30d3('0x45')](_0x3997fc));return{'source':_0x3997fc[_0x30d3('0x5a')][_0x30d3('0x5b')],'resolvedQuery':_0x3997fc[_0x30d3('0x5a')]['resolvedQuery'],'action':_0x3997fc[_0x30d3('0x5a')]['action'],'actionIncomplete':_0x3997fc[_0x30d3('0x5a')][_0x30d3('0x5c')],'speech':_0x3997fc[_0x30d3('0x5a')][_0x30d3('0x5d')][_0x30d3('0x5e')],'score':_0x3997fc[_0x30d3('0x5a')][_0x30d3('0x5f')],'statusCode':_0x3997fc[_0x30d3('0x60')][_0x30d3('0x61')],'endConversation':_0x3997fc[_0x30d3('0x5a')]['metadata'][_0x30d3('0x62')]||![],'isFallbackIntent':_0x3997fc[_0x30d3('0x5a')][_0x30d3('0x63')]['isFallbackIntent']};});};exports[_0x30d3('0x64')]=function(_0x397b1e,_0x483529,_0x13fbec,_0xbb4162,_0x1d4a71,_0x20677e){var _0x1da9fa=_0xbb4162[_0x30d3('0x65')](/\\n/g,'\x0a');var _0x2b218f={'credentials':{'private_key':_0x1da9fa,'client_email':_0x13fbec}};var _0x4e66ed=new dialogflow[(_0x30d3('0x66'))](_0x2b218f);var _0x49791d=_0x4e66ed[_0x30d3('0x67')](_0x483529,md5(_0x397b1e));var _0x1598ac={'session':_0x49791d,'queryInput':{'text':{'text':_0x1d4a71,'languageCode':_0x20677e}}};return _0x4e66ed[_0x30d3('0x68')](_0x1598ac)['then'](function(_0x560077){if(_0x560077&&_0x560077[_0x30d3('0x69')]){logger[_0x30d3('0x1e')](_0x30d3('0x6a'),JSON['stringify'](_0x560077));var _0x11c3eb=_0x560077[0x0];if(_0x11c3eb){var _0x3e35b3={'action':_0x11c3eb['queryResult']['action'],'allRequiredParamsPresent':_0x11c3eb['queryResult'][_0x30d3('0x6b')],'endConversation':_0x11c3eb[_0x30d3('0x6c')][_0x30d3('0x6d')]&&_0x11c3eb['queryResult'][_0x30d3('0x6d')][_0x30d3('0x6e')]?_0x11c3eb['queryResult']['diagnosticInfo'][_0x30d3('0x6e')][_0x30d3('0x6f')]['boolValue']:![],'fulfillmentText':_0x11c3eb[_0x30d3('0x6c')][_0x30d3('0x70')],'intentName':_0x11c3eb[_0x30d3('0x6c')][_0x30d3('0x71')][_0x30d3('0x57')],'intentDisplayName':_0x11c3eb[_0x30d3('0x6c')]['intent'][_0x30d3('0x72')],'isFallbackIntent':_0x11c3eb[_0x30d3('0x6c')]['intent'][_0x30d3('0x73')],'languageCode':_0x11c3eb[_0x30d3('0x6c')][_0x30d3('0x74')],'queryText':_0x11c3eb['queryResult']['queryText'],'responseId':_0x11c3eb[_0x30d3('0x75')],'score':_0x11c3eb[_0x30d3('0x6c')][_0x30d3('0x76')],'speech':_0x11c3eb['queryResult'][_0x30d3('0x70')],'providerResponse':JSON[_0x30d3('0x45')](_0x560077)};return _0x3e35b3;}}});};exports[_0x30d3('0x77')]=function(_0x2fc995,_0x106f8f,_0x5a6d35,_0x25fb1f){return tilde[_0x30d3('0x78')](_0x2fc995,_0x106f8f,_0x5a6d35,_0x25fb1f)['then'](function(_0x8ba7ee){try{fs[_0x30d3('0x21')](_0x2fc995);}catch(_0x343f3c){logger[_0x30d3('0x20')](_0x343f3c);}logger[_0x30d3('0x1e')](_0x30d3('0x79'),_0x8ba7ee[_0x30d3('0x52')]);logger[_0x30d3('0x1e')](_0x30d3('0x7a'),_0x8ba7ee[_0x30d3('0x55')]);return _0x8ba7ee;});};exports[_0x30d3('0x7b')]=function(_0x1180c9,_0x544a5a,_0x519498,_0x51fd90,_0x342838,_0x50ae1f){var _0x4c92ce=path['resolve'](__dirname,'tmp',rs[_0x30d3('0x2c')](0x4)+_0x30d3('0x4d'));var _0x548e15;return aws[_0x30d3('0x7c')](_0x1180c9,_0x544a5a,_0x519498,_0x51fd90,_0x342838,_0x50ae1f,_0x4c92ce)['then'](function(){_0x548e15=path[_0x30d3('0x2a')](__dirname,'tmp',rs['generate'](0x4)+_0x30d3('0x2d'));return convertFile(_0x4c92ce,_0x548e15);})['then'](function(){try{fs[_0x30d3('0x21')](_0x4c92ce);fs[_0x30d3('0x31')](_0x548e15,_0x30d3('0x32'));}catch(_0x1733ae){logger[_0x30d3('0x20')](_0x1733ae);}return _0x548e15[_0x30d3('0x33')]('.')[0x0];});};exports[_0x30d3('0x7d')]=function(_0x580c5f,_0xe51ec7,_0xdd0df,_0x37ec17,_0x2080c5,_0x226926){return aws[_0x30d3('0x7e')](_0x580c5f,_0xe51ec7,_0xdd0df,_0x37ec17,_0x2080c5,_0x226926)[_0x30d3('0x30')](function(_0x5dec00){logger[_0x30d3('0x1e')](JSON[_0x30d3('0x45')](_0x5dec00));return _0x5dec00;});};exports[_0x30d3('0x7f')]=function(_0x1a8b51,_0x41b5ce,_0x5d99da,_0x2bdce1){var _0x58f7df=util[_0x30d3('0x80')](_0x30d3('0x81'),ISPEECH_API,_0x1a8b51,encodeURIComponent(_0x41b5ce),_0x5d99da,_0x2bdce1);var _0x1ef254=path[_0x30d3('0x2a')](__dirname,'tmp',rs['generate'](0x4)+_0x30d3('0x4d'));var _0x13b9ae;return downloadFile(_0x58f7df,_0x1ef254)[_0x30d3('0x30')](function(){_0x13b9ae=path['resolve'](__dirname,'tmp',rs[_0x30d3('0x2c')](0x4)+'.wav');return convertFile(_0x1ef254,_0x13b9ae);})[_0x30d3('0x30')](function(){try{fs['unlink'](_0x1ef254);fs[_0x30d3('0x31')](_0x13b9ae,_0x30d3('0x32'));}catch(_0x598f5e){logger[_0x30d3('0x20')](_0x598f5e);}return _0x13b9ae[_0x30d3('0x33')]('.')[0x0];});};exports['ispeechASR']=function(_0x52cc35,_0x1dd352,_0x3f7be2,_0x1a0509){var _0x3d4e04=util[_0x30d3('0x80')](_0x30d3('0x82'),ISPEECH_API,_0x1dd352,_0x3f7be2,base64Encode(_0x52cc35),_0x1a0509?util[_0x30d3('0x80')](_0x30d3('0x83'),encodeURIComponent(_0x1a0509)):_0x30d3('0x84'));return uploadFile(_0x3d4e04)[_0x30d3('0x30')](function(_0x23fe38){return querystring[_0x30d3('0xc')](_0x23fe38);});};exports[_0x30d3('0x85')]=function(_0x22c057,_0x5e26da){return sestek['nda'](_0x22c057,_0x5e26da)['then'](function(_0xe9d16c){logger[_0x30d3('0x1e')](JSON['stringify'](_0xe9d16c));var _0x4adcea={'speech':_0xe9d16c['text'],'action':_0xe9d16c[_0x30d3('0x86')]?_0xe9d16c['channelData'][_0x30d3('0x87')]:undefined,'actiondata':_0xe9d16c['channelData']?_0xe9d16c[_0x30d3('0x86')][_0x30d3('0x88')]:undefined};if(_0xe9d16c[_0x30d3('0x86')]&&_0xe9d16c[_0x30d3('0x86')][_0x30d3('0x89')]){return base64Decode(_0xe9d16c[_0x30d3('0x86')][_0x30d3('0x89')][_0x30d3('0x8a')],path[_0x30d3('0x2a')](__dirname,'tmp',rs[_0x30d3('0x2c')](0x4)+_0x30d3('0x2d')))[_0x30d3('0x30')](function(_0x20b786){_0x4adcea['audiofile']=_0x20b786;return _0x4adcea;});}return _0x4adcea;});};exports[_0x30d3('0x8b')]=function(){return __dirname;};
\ No newline at end of file
index fc26aa6..6f5f162 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd761=['./nda','exports'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xd761,0x88));var _0x1d76=function(_0x2459fd,_0x575d9b){_0x2459fd=_0x2459fd-0x0;var _0x364cd2=_0xd761[_0x2459fd];return _0x364cd2;};var nda=require(_0x1d76('0x0'));module[_0x1d76('0x1')]={'nda':nda};
\ No newline at end of file
+var _0xc246=['./nda'];(function(_0x109094,_0x3706b0){var _0x5b854c=function(_0x4c1b8b){while(--_0x4c1b8b){_0x109094['push'](_0x109094['shift']());}};_0x5b854c(++_0x3706b0);}(_0xc246,0x13c));var _0x6c24=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xc246[_0x3dd15e];return _0x231fd0;};var nda=require(_0x6c24('0x0'));module['exports']={'nda':nda};
\ No newline at end of file
index cd9c454..0ba6db9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9bb4=['project','body','channelData','ProjectName','ndagenerate_audio','AudioOutputSettings','custom_action','CustomAction','custom_action_data','info','request-promise','url','../../../../../config/logger','agi','exports','POST','ndauth_url','/token','password','username','then','resolve','/api/NaturalDialogAssistant/v1/Run','message','Nda','callerid','extension','Bearer\x20','access_token'];(function(_0x1b567c,_0x26f0f8){var _0x44a063=function(_0x62b2f7){while(--_0x62b2f7){_0x1b567c['push'](_0x1b567c['shift']());}};_0x44a063(++_0x26f0f8);}(_0x9bb4,0xd5));var _0x49bb=function(_0x280249,_0x10bee4){_0x280249=_0x280249-0x0;var _0x54f672=_0x9bb4[_0x280249];return _0x54f672;};'use strict';var rp=require(_0x49bb('0x0'));var url=require(_0x49bb('0x1'));var logger=require(_0x49bb('0x2'))(_0x49bb('0x3'));module[_0x49bb('0x4')]=function(_0x2d4298,_0x26cbff){var _0xa01a73={'method':_0x49bb('0x5'),'uri':url['resolve'](_0x26cbff[_0x49bb('0x6')],_0x49bb('0x7')),'form':{'grant_type':_0x49bb('0x8'),'username':_0x26cbff[_0x49bb('0x9')],'password':_0x26cbff['password']},'json':!![]};return rp(_0xa01a73)[_0x49bb('0xa')](function(_0x353853){var _0x1a4094={'method':_0x49bb('0x5'),'uri':url[_0x49bb('0xb')](_0x26cbff['ndassistant_url'],_0x49bb('0xc')),'body':{'type':_0x26cbff['ndaactivity_type']||_0x49bb('0xd'),'channelId':_0x49bb('0xe'),'conversation':{'id':_0x2d4298['uniqueid']},'from':{'id':_0x2d4298[_0x49bb('0xf')],'name':_0x2d4298['calleridname']},'recipient':{'id':_0x2d4298['dnid'],'name':_0x2d4298[_0x49bb('0x10')]},'text':_0x26cbff['text'],'channelData':{}},'headers':{'Authorization':_0x49bb('0x11')+_0x353853[_0x49bb('0x12')]},'json':!![]};if(_0x26cbff[_0x49bb('0x13')]){_0x1a4094[_0x49bb('0x14')][_0x49bb('0x15')][_0x49bb('0x16')]=_0x26cbff[_0x49bb('0x13')];}if(_0x26cbff[_0x49bb('0x17')]=='1'){_0x1a4094[_0x49bb('0x14')]['channelData'][_0x49bb('0x18')]={'Generate':!![],'PutInStructuredPart':![],'ExpectedFormat':'audio/wav'};}if(_0x26cbff[_0x49bb('0x19')]){_0x1a4094[_0x49bb('0x14')][_0x49bb('0x15')][_0x49bb('0x1a')]=_0x26cbff[_0x49bb('0x19')];if(_0x26cbff[_0x49bb('0x1b')]){_0x1a4094[_0x49bb('0x14')][_0x49bb('0x15')]['CustomActionData']=_0x26cbff[_0x49bb('0x1b')];}}logger[_0x49bb('0x1c')](JSON['stringify'](_0x1a4094));return rp(_0x1a4094);});};
\ No newline at end of file
+var _0xeea4=['ndauth_url','password','username','resolve','ndassistant_url','/api/NaturalDialogAssistant/v1/Run','ndaactivity_type','Nda','uniqueid','callerid','calleridname','dnid','extension','text','Bearer\x20','access_token','project','ProjectName','ndagenerate_audio','body','channelData','AudioOutputSettings','audio/wav','custom_action','CustomAction','custom_action_data','CustomActionData','info','stringify','request-promise','url','../../../../../config/logger','agi','exports','POST'];(function(_0x18307e,_0x1898e8){var _0x24186b=function(_0x5ee12b){while(--_0x5ee12b){_0x18307e['push'](_0x18307e['shift']());}};_0x24186b(++_0x1898e8);}(_0xeea4,0x19e));var _0x4eea=function(_0x29bfc4,_0x1a1f09){_0x29bfc4=_0x29bfc4-0x0;var _0x591d36=_0xeea4[_0x29bfc4];return _0x591d36;};'use strict';var rp=require(_0x4eea('0x0'));var url=require(_0x4eea('0x1'));var logger=require(_0x4eea('0x2'))(_0x4eea('0x3'));module[_0x4eea('0x4')]=function(_0x38a9e8,_0x2a47d5){var _0x2028ed={'method':_0x4eea('0x5'),'uri':url['resolve'](_0x2a47d5[_0x4eea('0x6')],'/token'),'form':{'grant_type':_0x4eea('0x7'),'username':_0x2a47d5[_0x4eea('0x8')],'password':_0x2a47d5[_0x4eea('0x7')]},'json':!![]};return rp(_0x2028ed)['then'](function(_0x1a2e5e){var _0x44116a={'method':'POST','uri':url[_0x4eea('0x9')](_0x2a47d5[_0x4eea('0xa')],_0x4eea('0xb')),'body':{'type':_0x2a47d5[_0x4eea('0xc')]||'message','channelId':_0x4eea('0xd'),'conversation':{'id':_0x38a9e8[_0x4eea('0xe')]},'from':{'id':_0x38a9e8[_0x4eea('0xf')],'name':_0x38a9e8[_0x4eea('0x10')]},'recipient':{'id':_0x38a9e8[_0x4eea('0x11')],'name':_0x38a9e8[_0x4eea('0x12')]},'text':_0x2a47d5[_0x4eea('0x13')],'channelData':{}},'headers':{'Authorization':_0x4eea('0x14')+_0x1a2e5e[_0x4eea('0x15')]},'json':!![]};if(_0x2a47d5[_0x4eea('0x16')]){_0x44116a['body']['channelData'][_0x4eea('0x17')]=_0x2a47d5[_0x4eea('0x16')];}if(_0x2a47d5[_0x4eea('0x18')]=='1'){_0x44116a[_0x4eea('0x19')][_0x4eea('0x1a')][_0x4eea('0x1b')]={'Generate':!![],'PutInStructuredPart':![],'ExpectedFormat':_0x4eea('0x1c')};}if(_0x2a47d5[_0x4eea('0x1d')]){_0x44116a['body'][_0x4eea('0x1a')][_0x4eea('0x1e')]=_0x2a47d5[_0x4eea('0x1d')];if(_0x2a47d5[_0x4eea('0x1f')]){_0x44116a['body'][_0x4eea('0x1a')][_0x4eea('0x20')]=_0x2a47d5[_0x4eea('0x1f')];}}logger[_0x4eea('0x21')](JSON[_0x4eea('0x22')](_0x44116a));return rp(_0x44116a);});};
\ No newline at end of file
index a36f243..d592feb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea0d=['exports','./lib/api'];(function(_0x4237b9,_0x2ea135){var _0x416349=function(_0x24c1c1){while(--_0x24c1c1){_0x4237b9['push'](_0x4237b9['shift']());}};_0x416349(++_0x2ea135);}(_0xea0d,0xa7));var _0xdea0=function(_0x4d7df6,_0x3f6139){_0x4d7df6=_0x4d7df6-0x0;var _0x4c0d29=_0xea0d[_0x4d7df6];return _0x4c0d29;};'use strict';var asr=require(_0xdea0('0x0'));module[_0xdea0('0x1')]=function(_0x346757,_0x2591c8,_0x125a69,_0x1879a6){return asr(_0x346757,_0x2591c8,_0x125a69,_0x1879a6);};
\ No newline at end of file
+var _0x0c0c=['exports'];(function(_0x14397e,_0x3a9217){var _0x156b62=function(_0x129940){while(--_0x129940){_0x14397e['push'](_0x14397e['shift']());}};_0x156b62(++_0x3a9217);}(_0x0c0c,0x11e));var _0xc0c0=function(_0x318564,_0xd16f7c){_0x318564=_0x318564-0x0;var _0x283787=_0x0c0c[_0x318564];return _0x283787;};'use strict';var asr=require('./lib/api');module[_0xc0c0('0x0')]=function(_0x96df,_0x9dc96d,_0xf98bc,_0x59d8e8){return asr(_0x96df,_0x9dc96d,_0xf98bc,_0x59d8e8);};
\ No newline at end of file
index b0e9f2a..1ed6752 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2132=['message','bluebird','lodash','moment','crypto','../../../../../../config/logger','exports','Tilde\x20URI','wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE','createHash','sha1','update','digest','hex','info','Open\x20Tilde\x20ASR\x20socket','unix','send','stringify','createReadStream','data','close','EOS','error','Tilde\x20ASR\x20send\x20error','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.','Tilde\x20ASR\x20parse\x20error','Error\x20Tilde\x20ASR\x20socket','isNil','isObject','open'];(function(_0x292291,_0x3b8da5){var _0x1576d6=function(_0x1079db){while(--_0x1079db){_0x292291['push'](_0x292291['shift']());}};_0x1576d6(++_0x3b8da5);}(_0x2132,0x169));var _0x2213=function(_0x53d1f9,_0x507162){_0x53d1f9=_0x53d1f9-0x0;var _0x45ec63=_0x2132[_0x53d1f9];return _0x45ec63;};'use strict';var BPromise=require(_0x2213('0x0'));var _=require(_0x2213('0x1'));var fs=require('fs');var WebSocket=require('ws');var moment=require(_0x2213('0x2'));var crypto=require(_0x2213('0x3'));var logger=require(_0x2213('0x4'))('agi');module[_0x2213('0x5')]=function(_0x415116,_0x279447,_0x502453,_0x4f72b8){return new BPromise(function(_0x5ef4af,_0x1c992a){logger['info'](_0x2213('0x6'),_0x4f72b8||_0x2213('0x7'));var _0x51e616=new WebSocket(_0x4f72b8||_0x2213('0x7'),{'perMessageDeflate':![]});var _0x1c6c25='';var _0xec439e='0';var _0x1b415f='1';var _0x2186d5='No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech';function _0x379b45(_0x29870b){var _0x55f9ff=crypto[_0x2213('0x8')](_0x2213('0x9'));_0x55f9ff[_0x2213('0xa')](_0x29870b);return _0x55f9ff[_0x2213('0xb')](_0x2213('0xc'));}function _0x56d163(){try{logger[_0x2213('0xd')](_0x2213('0xe'));var _0x56e6fa=moment()[_0x2213('0xf')]();var _0x6b2ec0=_0x379b45(_0x56e6fa+_0x279447+_0x502453);_0x51e616[_0x2213('0x10')](JSON[_0x2213('0x11')]({'appID':_0x279447,'timestamp':_0x56e6fa,'appKey':_0x6b2ec0}));var _0x526042=fs[_0x2213('0x12')](_0x415116);_0x526042['on'](_0x2213('0x13'),function(_0x2d562c){_0x51e616[_0x2213('0x10')](_0x2d562c);});_0x526042['on'](_0x2213('0x14'),function(){_0x51e616[_0x2213('0x10')](_0x2213('0x15'));});}catch(_0x4ceb69){logger[_0x2213('0x16')](_0x2213('0x17'),JSON['stringify'](_0x4ceb69));_0x51e616[_0x2213('0x18')]();}}function _0x303784(_0x5729f5){try{if(_0x5729f5){var _0x4b855b=JSON[_0x2213('0x19')](_0x5729f5);switch(_0x4b855b[_0x2213('0x1a')]){case 0x0:if(_0x4b855b[_0x2213('0x1b')]){if(_0x4b855b[_0x2213('0x1b')][_0x2213('0x1c')]){logger['info'](_0x2213('0x1d'),JSON['stringify'](_0x4b855b[_0x2213('0x1b')][_0x2213('0x1e')]));_0x1c6c25=_0x4b855b[_0x2213('0x1b')][_0x2213('0x1e')][0x0][_0x2213('0x1f')];_0xec439e=_0x4b855b[_0x2213('0x1b')]['hypotheses'][0x0][_0x2213('0x20')];_0x1b415f='0';_0x2186d5=_0x2213('0x21');_0x51e616[_0x2213('0x18')]();}}break;case 0x1:logger[_0x2213('0xd')](_0x2213('0x22'));_0x1b415f='1';_0x2186d5='No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech';break;case 0x2:logger[_0x2213('0xd')](_0x2213('0x23'));_0x1b415f='2';_0x2186d5='Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.';break;case 0x9:logger[_0x2213('0xd')](_0x2213('0x24'));_0x1b415f='9';_0x2186d5=_0x2213('0x24');break;case 0xa:logger['info'](_0x2213('0x25'));_0x1b415f='10';_0x2186d5=_0x2213('0x25');break;case 0xb:logger['info'](_0x2213('0x26'));_0x1b415f='11';_0x2186d5=_0x2213('0x26');}}}catch(_0x702560){logger[_0x2213('0x16')](_0x2213('0x27'),JSON[_0x2213('0x11')](_0x702560));_0x51e616[_0x2213('0x18')]();}}function _0x22687f(){logger[_0x2213('0xd')]('Close\x20Tilde\x20ASR\x20socket');_0x5ef4af({'transcript':_0x1c6c25,'confidence':_0xec439e,'status':_0x1b415f,'status_message':_0x2186d5});}function _0x1388e5(_0x49bb0f){logger[_0x2213('0x16')](_0x2213('0x28'));if(!_[_0x2213('0x29')](_0x49bb0f)){logger['error'](_[_0x2213('0x2a')](_0x49bb0f)?JSON[_0x2213('0x11')](_0x49bb0f):_0x49bb0f);}}_0x51e616['on'](_0x2213('0x2b'),_0x56d163);_0x51e616['on'](_0x2213('0x2c'),_0x303784);_0x51e616['on'](_0x2213('0x14'),_0x22687f);_0x51e616['on'](_0x2213('0x16'),_0x1388e5);});};
\ No newline at end of file
+var _0x58ec=['message','bluebird','lodash','moment','crypto','agi','exports','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','sha1','update','digest','Open\x20Tilde\x20ASR\x20socket','send','stringify','createReadStream','data','close','EOS','error','Tilde\x20ASR\x20send\x20error','terminate','parse','status','result','Tilde\x20ASR\x20hypoteses','hypotheses','transcript','likelihood','Not\x20available.\x20Max\x20load\x20limit\x20reached.','Authentication\x20failed.','All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.','Tilde\x20ASR\x20parse\x20error','Error\x20Tilde\x20ASR\x20socket','isNil','isObject','open'];(function(_0x563bfd,_0x25bb8b){var _0x44ef43=function(_0x5c9f68){while(--_0x5c9f68){_0x563bfd['push'](_0x563bfd['shift']());}};_0x44ef43(++_0x25bb8b);}(_0x58ec,0x139));var _0xc58e=function(_0x46b585,_0x941ce7){_0x46b585=_0x46b585-0x0;var _0x140a29=_0x58ec[_0x46b585];return _0x140a29;};'use strict';var BPromise=require(_0xc58e('0x0'));var _=require(_0xc58e('0x1'));var fs=require('fs');var WebSocket=require('ws');var moment=require(_0xc58e('0x2'));var crypto=require(_0xc58e('0x3'));var logger=require('../../../../../../config/logger')(_0xc58e('0x4'));module[_0xc58e('0x5')]=function(_0xdbe4ff,_0x48e4ab,_0x1038c4,_0x1c3518){return new BPromise(function(_0x567550,_0x5ae45c){logger[_0xc58e('0x6')](_0xc58e('0x7'),_0x1c3518||'wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE');var _0x4795d9=new WebSocket(_0x1c3518||_0xc58e('0x8'),{'perMessageDeflate':![]});var _0x48c713='';var _0x2b5821='0';var _0x4cc7bc='1';var _0x3b7a64=_0xc58e('0x9');function _0x2d7690(_0x1efb9d){var _0x611a50=crypto['createHash'](_0xc58e('0xa'));_0x611a50[_0xc58e('0xb')](_0x1efb9d);return _0x611a50[_0xc58e('0xc')]('hex');}function _0x5af267(){try{logger[_0xc58e('0x6')](_0xc58e('0xd'));var _0x23aac3=moment()['unix']();var _0x5b25d8=_0x2d7690(_0x23aac3+_0x48e4ab+_0x1038c4);_0x4795d9[_0xc58e('0xe')](JSON[_0xc58e('0xf')]({'appID':_0x48e4ab,'timestamp':_0x23aac3,'appKey':_0x5b25d8}));var _0x1ab85f=fs[_0xc58e('0x10')](_0xdbe4ff);_0x1ab85f['on'](_0xc58e('0x11'),function(_0x5733c8){_0x4795d9[_0xc58e('0xe')](_0x5733c8);});_0x1ab85f['on'](_0xc58e('0x12'),function(){_0x4795d9[_0xc58e('0xe')](_0xc58e('0x13'));});}catch(_0x188cc1){logger[_0xc58e('0x14')](_0xc58e('0x15'),JSON['stringify'](_0x188cc1));_0x4795d9[_0xc58e('0x16')]();}}function _0x270fe1(_0x1132e2){try{if(_0x1132e2){var _0x32a1e8=JSON[_0xc58e('0x17')](_0x1132e2);switch(_0x32a1e8[_0xc58e('0x18')]){case 0x0:if(_0x32a1e8[_0xc58e('0x19')]){if(_0x32a1e8[_0xc58e('0x19')]['final']){logger[_0xc58e('0x6')](_0xc58e('0x1a'),JSON[_0xc58e('0xf')](_0x32a1e8[_0xc58e('0x19')]['hypotheses']));_0x48c713=_0x32a1e8[_0xc58e('0x19')][_0xc58e('0x1b')][0x0][_0xc58e('0x1c')];_0x2b5821=_0x32a1e8[_0xc58e('0x19')]['hypotheses'][0x0][_0xc58e('0x1d')];_0x4cc7bc='0';_0x3b7a64='Success.';_0x4795d9['terminate']();}}break;case 0x1:logger[_0xc58e('0x6')](_0xc58e('0x9'));_0x4cc7bc='1';_0x3b7a64=_0xc58e('0x9');break;case 0x2:logger[_0xc58e('0x6')]('Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.');_0x4cc7bc='2';_0x3b7a64='Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.';break;case 0x9:logger[_0xc58e('0x6')](_0xc58e('0x1e'));_0x4cc7bc='9';_0x3b7a64=_0xc58e('0x1e');break;case 0xa:logger[_0xc58e('0x6')](_0xc58e('0x1f'));_0x4cc7bc='10';_0x3b7a64='Authentication\x20failed.';break;case 0xb:logger['info'](_0xc58e('0x20'));_0x4cc7bc='11';_0x3b7a64='All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.';}}}catch(_0x384b69){logger['error'](_0xc58e('0x21'),JSON[_0xc58e('0xf')](_0x384b69));_0x4795d9[_0xc58e('0x16')]();}}function _0x25053a(){logger[_0xc58e('0x6')]('Close\x20Tilde\x20ASR\x20socket');_0x567550({'transcript':_0x48c713,'confidence':_0x2b5821,'status':_0x4cc7bc,'status_message':_0x3b7a64});}function _0x468fc0(_0x2e6db2){logger[_0xc58e('0x14')](_0xc58e('0x22'));if(!_[_0xc58e('0x23')](_0x2e6db2)){logger[_0xc58e('0x14')](_[_0xc58e('0x24')](_0x2e6db2)?JSON[_0xc58e('0xf')](_0x2e6db2):_0x2e6db2);}}_0x4795d9['on'](_0xc58e('0x25'),_0x5af267);_0x4795d9['on'](_0xc58e('0x26'),_0x270fe1);_0x4795d9['on'](_0xc58e('0x12'),_0x25053a);_0x4795d9['on'](_0xc58e('0x14'),_0x468fc0);});};
\ No newline at end of file
index 4bb4312..593222c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9643=['exports','./asr'];(function(_0x28044b,_0x7cd962){var _0x183289=function(_0x49d5){while(--_0x49d5){_0x28044b['push'](_0x28044b['shift']());}};_0x183289(++_0x7cd962);}(_0x9643,0xc1));var _0x3964=function(_0x3c8560,_0x5d220b){_0x3c8560=_0x3c8560-0x0;var _0x3ffd96=_0x9643[_0x3c8560];return _0x3ffd96;};var asr=require(_0x3964('0x0'));module[_0x3964('0x1')]={'asr':asr};
\ No newline at end of file
+var _0xee44=['exports','./asr'];(function(_0x5f4ad5,_0x5b9082){var _0x4241e2=function(_0x29a0be){while(--_0x29a0be){_0x5f4ad5['push'](_0x5f4ad5['shift']());}};_0x4241e2(++_0x5b9082);}(_0xee44,0x18b));var _0x4ee4=function(_0x31906d,_0x58e890){_0x31906d=_0x31906d-0x0;var _0x43560a=_0xee44[_0x31906d];return _0x43560a;};var asr=require(_0x4ee4('0x0'));module[_0x4ee4('0x1')]={'asr':asr};
\ No newline at end of file
index 72a29d2..27318b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf4c=['code','close','E_AGI_SERVER_CLOSE','nextTick','inherits','exports','util','net','events','EventEmitter','./error','./channel','127.0.0.1','emit','error','E_AGI_ARGUMENT_PORT','listen','listening','connection','getConnections','E_AGI_SERVER_ERROR','E_AGI_SERVER_VOICE_DISABLED','E_AGI_SERVER_MAXCONNECTION','destroy','ready'];(function(_0x4bc5ed,_0x409944){var _0x23371b=function(_0xf4fcf2){while(--_0xf4fcf2){_0x4bc5ed['push'](_0x4bc5ed['shift']());}};_0x23371b(++_0x409944);}(_0xbf4c,0x1e1));var _0xcbf4=function(_0x1c3851,_0x3d5cd4){_0x1c3851=_0x1c3851-0x0;var _0x5865b8=_0xbf4c[_0x1c3851];return _0x5865b8;};'use strict';var util=require(_0xcbf4('0x0'));var net=require(_0xcbf4('0x1'));var EventEmitter=require(_0xcbf4('0x2'))[_0xcbf4('0x3')];var AGIError=require(_0xcbf4('0x4'));var AGIChannel=require(_0xcbf4('0x5'));var AGIServer=function(_0x3e7014,_0x1b8a32,_0x3c2bad){var _0x35b20e=this,_0x3e7014=_0x3e7014||0x11dd,_0x1b8a32=_0x1b8a32||_0xcbf4('0x6'),_0x2461c6=null,_0x4c6470=0x0;EventEmitter['call'](_0x35b20e);function _0x19a7f3(){if(!_0x3e7014){_0x35b20e[_0xcbf4('0x7')](_0xcbf4('0x8'),new AGIError(_0xcbf4('0x9')));return![];}_0x2461c6=net['createServer']();_0x2461c6[_0xcbf4('0xa')](_0x3e7014,_0x1b8a32);_0x2461c6['on'](_0xcbf4('0xb'),function(){_0x35b20e[_0xcbf4('0x7')](_0xcbf4('0xb'));});_0x2461c6['on'](_0xcbf4('0xc'),function(_0x2a3d55){_0x2461c6[_0xcbf4('0xd')](function(_0x31de86,_0x5ce17e){if(_0x31de86){_0x35b20e['emit'](_0xcbf4('0x8'),new AGIError(_0xcbf4('0xe'),_0x31de86));}else if(_0x3c2bad&&_0x3c2bad<0x0){_0x35b20e[_0xcbf4('0x7')](_0xcbf4('0x8'),new AGIError(_0xcbf4('0xf')));_0x2a3d55['destroy']();}else if(_0x3c2bad&&_0x3c2bad>0x0&&_0x3c2bad<_0x5ce17e){_0x4c6470+=0x1;_0x35b20e[_0xcbf4('0x7')](_0xcbf4('0x8'),new AGIError(_0xcbf4('0x10'),_0x4c6470));_0x2a3d55[_0xcbf4('0x11')]();}else{var _0x897fc5=new AGIChannel(_0x2a3d55);_0x897fc5['on'](_0xcbf4('0x12'),function(){_0x35b20e[_0xcbf4('0x7')](_0xcbf4('0xc'),_0x897fc5);});}});});_0x2461c6['on'](_0xcbf4('0x8'),function(_0x28ea49){_0x35b20e[_0xcbf4('0x7')](_0xcbf4('0x8'),new AGIError('E_AGI_SERVER_ERROR',_0x28ea49[_0xcbf4('0x13')]));});_0x2461c6['on']('close',function(){_0x35b20e[_0xcbf4('0x7')](_0xcbf4('0x14'),new AGIError(_0xcbf4('0x15')));});}process[_0xcbf4('0x16')](function(){_0x19a7f3();});};util[_0xcbf4('0x17')](AGIServer,EventEmitter);module[_0xcbf4('0x18')]=function(_0x592d20,_0xdb0985,_0x57a8d9){return new AGIServer(_0x592d20,_0xdb0985,_0x57a8d9);};
\ No newline at end of file
+var _0x00ea=['nextTick','exports','util','EventEmitter','./error','./channel','127.0.0.1','call','emit','error','E_AGI_ARGUMENT_PORT','createServer','listening','connection','getConnections','E_AGI_SERVER_ERROR','E_AGI_SERVER_VOICE_DISABLED','E_AGI_SERVER_MAXCONNECTION','destroy','ready','code','close','E_AGI_SERVER_CLOSE'];(function(_0x3c69ea,_0x37daaa){var _0x1f02d5=function(_0x3014a1){while(--_0x3014a1){_0x3c69ea['push'](_0x3c69ea['shift']());}};_0x1f02d5(++_0x37daaa);}(_0x00ea,0x189));var _0xa00e=function(_0x5f1986,_0x424452){_0x5f1986=_0x5f1986-0x0;var _0x2246a1=_0x00ea[_0x5f1986];return _0x2246a1;};'use strict';var util=require(_0xa00e('0x0'));var net=require('net');var EventEmitter=require('events')[_0xa00e('0x1')];var AGIError=require(_0xa00e('0x2'));var AGIChannel=require(_0xa00e('0x3'));var AGIServer=function(_0x3dce93,_0x658ba5,_0x25f670){var _0x10db3c=this,_0x3dce93=_0x3dce93||0x11dd,_0x658ba5=_0x658ba5||_0xa00e('0x4'),_0x116dd1=null,_0x5533e0=0x0;EventEmitter[_0xa00e('0x5')](_0x10db3c);function _0x3e2f90(){if(!_0x3dce93){_0x10db3c[_0xa00e('0x6')](_0xa00e('0x7'),new AGIError(_0xa00e('0x8')));return![];}_0x116dd1=net[_0xa00e('0x9')]();_0x116dd1['listen'](_0x3dce93,_0x658ba5);_0x116dd1['on'](_0xa00e('0xa'),function(){_0x10db3c[_0xa00e('0x6')](_0xa00e('0xa'));});_0x116dd1['on'](_0xa00e('0xb'),function(_0x2950c4){_0x116dd1[_0xa00e('0xc')](function(_0x3cf391,_0x5d77ea){if(_0x3cf391){_0x10db3c[_0xa00e('0x6')]('error',new AGIError(_0xa00e('0xd'),_0x3cf391));}else if(_0x25f670&&_0x25f670<0x0){_0x10db3c[_0xa00e('0x6')](_0xa00e('0x7'),new AGIError(_0xa00e('0xe')));_0x2950c4['destroy']();}else if(_0x25f670&&_0x25f670>0x0&&_0x25f670<_0x5d77ea){_0x5533e0+=0x1;_0x10db3c[_0xa00e('0x6')](_0xa00e('0x7'),new AGIError(_0xa00e('0xf'),_0x5533e0));_0x2950c4[_0xa00e('0x10')]();}else{var _0x1e39e6=new AGIChannel(_0x2950c4);_0x1e39e6['on'](_0xa00e('0x11'),function(){_0x10db3c['emit']('connection',_0x1e39e6);});}});});_0x116dd1['on']('error',function(_0x5ab45d){_0x10db3c[_0xa00e('0x6')](_0xa00e('0x7'),new AGIError(_0xa00e('0xd'),_0x5ab45d[_0xa00e('0x12')]));});_0x116dd1['on'](_0xa00e('0x13'),function(){_0x10db3c[_0xa00e('0x6')]('close',new AGIError(_0xa00e('0x14')));});}process[_0xa00e('0x15')](function(){_0x3e2f90();});};util['inherits'](AGIServer,EventEmitter);module[_0xa00e('0x16')]=function(_0x4c9e29,_0x2681ff,_0x3caf09){return new AGIServer(_0x4c9e29,_0x2681ff,_0x3caf09);};
\ No newline at end of file
index 7695477..36e14c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac76=['delay','minutes','custom_app','Enter\x20in\x20CUSTOM\x20APP\x20(%s)\x20block','Executed\x20command\x20%s\x20%s','application','lumenvoxtts','Enter\x20in\x20LUMENVOXTTS\x20(%s)\x20block','Enter\x20in\x20SESTEKTTS\x20(%s)\x20block','lumenvoxasr','Enter\x20in\x20LUMENVOXASR\x20(%s)\x20block','RECOG_CONFIDENCE()','LUMENVOX_ASR_CONFIDENCE','RECOG_INPUT()','RECOG_INSTANCE()','LUMENVOX_ASR_INSTANCE','sestekasr','SESTEK_ASR_CONFIDENCE','SESTEK_ASR_TRANSCRIPT','Enter\x20in\x20DATABASE\x20(%s)\x20block','odbc_id','getSquareOdbc','no\x20odbc\x20database\x20found','variable_id','keys','forEach','%s[%s][%s]','variable\x20%s\x20set','Enter\x20in\x20DIAL\x20(%s)\x20block','sip_id','no\x20user\x20selected','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','Dialogflow\x20Result\x20%s','Dialogflow\x20is\x20unreachable','dialogflowV2','Enter\x20in\x20DIALOGFLOW\x20V2\x20(%s)\x20block','no\x20project_id\x20configured','no\x20client_email\x20configured','no\x20private_key\x20configured','DialogflowV2\x20Result\x20%s','DialogflowV2\x20is\x20unreachable','sesteknda','Enter\x20in\x20SESTEKNDA\x20(%s)\x20block','ndauth_url','username','no\x20username\x20configured','password','no\x20password\x20configured','Trying\x20SestekNDA:\x20%s','SESTEK_NDA_%s','audiofile','Sestek\x20NDA\x20%s\x20file\x20created','streamFile','unlink','.wav','SestekNDA\x20Result\x20%s','SestekNDA\x20is\x20unreachable','end','Enter\x20in\x20END\x20(%s)\x20block','ext_dial','Enter\x20in\x20EXTERNAL\x20DIAL\x20(%s)\x20block','trunk_id','no\x20trunk\x20selected','trunk_name','SIP/%s/%s','finally','Enter\x20in\x20FINALLY\x20(%s)\x20block','Enter\x20in\x20GETDIGITS\x20(%s)\x20block','file_id','no\x20file\x20audio\x20selected','no\x20file\x20audio\x20found','no\x20variable\x20selected\x20for\x20the\x20result','getData','response','maxdigit','test','mindigit','hiddendigitsnum','generate','hiddendigitspos','first','substr','Enter\x20in\x20GETSECRETDIGITS\x20(%s)\x20block','goal','Enter\x20in\x20GOAL\x20(%s)\x20block','GOAL\x20%s','goalname','[AGI]\x20Enter\x20in\x20AWSPOLLY\x20(%s)\x20block','aws_secret_access_key','no\x20valid\x20credentials\x20configured','aws\x20Polly\x20%s\x20file\x20created','aws\x20Polly\x20is\x20unreachable','awslex','Enter\x20in\x20Amazon\x20Lex\x20(%s)\x20block','aws_bot_name','no\x20bot\x20name\x20configured','Trying\x20Amazon\x20Lex:\x20%s','AWS_LEX_%s','Amazon\x20Lex\x20ready\x20for\x20fulfillment','amazonlex','Amazon\x20Lex\x20Result\x20%s','Enter\x20in\x20GOOGLEASR\x20(%s)\x20block\x20%s','wav','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','no\x20appsecret\x20configured','tilde\x20%s\x20file\x20created','TILDE_ASR_%s','TildeASR\x20Result\x20%s','gotoc','Enter\x20in\x20GOTO\x20(%s)\x20block','continueAt','context','gotoif','Enter\x20in\x20GOTOIF\x20(%s)\x20block','condition','no\x20condition\x20configured','true','EVAL\x20CONDITION\x20%s\x20%s','false','gotoiftime','Enter\x20in\x20GOTOIFTIME\x20(%s)\x20block','interval_id','no\x20intervals\x20found','IFTIME\x20%s\x20%s','hangup','Enter\x20in\x20HANGUP\x20(%s)\x20block','ispeechasr','%s/recordings/%s','ispeech\x20%s\x20file\x20created','ISPEECH_ASR_%s','IspeechASR\x20Result\x20%s','Enter\x20in\x20ISPEECHTTS\x20(%s)\x20block','Trying\x20ispeech\x20TTS\x20%s','intKey','ispeech\x20TTS\x20is\x20unreachable','Enter\x20in\x20LOGIN\x20(%s)\x20block','no\x20find\x20by\x20configured','FIND\x20AGENT\x20%s\x20BY\x20%s','findBy','AGENT\x20%s\x20FOUND\x20BY','success','AGENT\x20%s\x20NOT\x20FOUND\x20BY','logout','Enter\x20in\x20LOGOUT\x20(%s)\x20block','failure','no\x20operation\x20configured','math\x20%s','no\x20variable\x20found','%s[%s]','menu','Enter\x20in\x20MENU\x20(%s)\x20block','getSound','Enter\x20in\x20NOOP\x20(%s)\x20block','pause','Enter\x20in\x20PAUSE\x20(%s)\x20block','pause_id','Enter\x20in\x20PLAYBACK\x20(%s)\x20block','PLAYBACK','queue','Enter\x20in\x20QUEUE\x20(%s)\x20block','queue_id','no\x20queue\x20selected','no\x20queue\x20found','indexOf','XMCS-QUEUE','gosub','position','QUEUE','Enter\x20in\x20RECORD\x20(%s)\x20block','%s_%s','%s/recordings/%s.%s','RECORDING_SAVENAME','Recording\x20%s\x20%s\x20%s\x20%s','escape_digits','restapi','Enter\x20in\x20RESTAPI\x20(%s)\x20block','no\x20url\x20configured','restAPI','no\x20variable\x20selected\x20for\x20the\x20response','200','%s_STATUS_MESSAGE','Unable\x20to\x20set\x20result\x20in\x20variable\x20%s','sayDigits','digits','sayphonetic','Enter\x20in\x20SAYPHONETIC\x20(%s)\x20block','sayPhonetic','sendMail','Enter\x20in\x20SENDMAIL\x20(%s)\x20block','no\x20mail\x20account\x20configured','account_id','Smtp','\x22%s\x22\x20<%s>','email','user','bcc','service','host','port','secure','auth','pass','sendMail\x20message','Trying\x20SendMail\x20with\x20account\x20%s','Mail\x20message\x20added\x20to\x20outgoing\x20process','sendFax','SENDFAX\x20block\x20not\x20implemented','sendSMS','Enter\x20in\x20SENDSMS\x20(%s)\x20block','no\x20sms\x20account\x20configured','sms_account_id','no\x20sms\x20account\x20found','sms_text','debug','sendSMS\x20message','Trying\x20SendSMS\x20with\x20account\x20%s','createSmsMessage','Sms\x20message\x20added\x20to\x20outgoing\x20process','set','Enter\x20in\x20SET\x20(%s)\x20block','variable_value','start','START\x20CALLY\x20SQUARE','yes','Answer','Enter\x20in\x20SUBPROJECT\x20(%s)\x20block','project_id','no\x20subproject\x20selected','getSquareProject','project\x20in\x20subproject\x20must\x20be\x20different\x20from\x20the\x20called\x20project','AGI','agi://%s/square,\x22%s\x22,\x22%s\x22','127.0.0.1','Enter\x20in\x20SYSTEM\x20(%s)\x20block','sh\x20command:\x20%s\x20result\x20on\x20variable:\x20%s','Trying\x20Google\x20Cloud\x20TTS\x20%s','Google\x20Cloud\x20TTS\x20%s\x20file\x20created','tts','Trying\x20Google\x20TTS\x20%s','Google\x20TTS\x20%s\x20file\x20created','unpause','Enter\x20in\x20UNPAUSE\x20(%s)\x20block','voicemail','VOICEMAIL','mailbox','vswitch','Enter\x20in\x20SWITCH\x20(%s)\x20block','no\x20variable\x20selected','exports','path','lodash','odbc','randomstring','moment','mustache','../../config/environment','./scripts','/var/opt/motion2/server/files','getdigits','getsecretdigits','channel','mailRpc','prototype','getVariable','rpc','getVariableById','catch','getVoiceQueue','then','name','getSquareProjectById','getSquareOdbcById','dsn','getUser','getUserById','getTrunk','getTrunkById','getSoundPath','getMailAccount','sendMailMessage','getIntervals','getIntervalById','IntervalId','interval','map','Intervals','%s/sounds/converted/%s','getQueryOdbc','open','error','Error\x20getting\x20ODBC\x20connection\x20%s','info','ODBC\x20connection\x20successfully','query','close','Error\x20closing\x20connection\x20to\x20odbc\x20%s','getSmsAccount','getSmsAccountById','createSquareDetailsReport','uniqueid','label','arg_1','callerid','createSquareRecording','calleridname','extension','priority','accountcode','dnid','createSquareMessage','createCmContact','isEmpty','isNil','callback_','lastName','phone','list_id','scheduledAt','callback','toString','callback_priority','getPause','getPauseById','agentPause','agent','agentUnpause','agentLogout','agentLogin','format','%s/%s@from-sip/n','LOCAL','shellCommand','exec','trim','replace','googleCloudTTS','apiKey','text','ssmlGender','MALE','MP3','googleTTS','google_tts_language','method','timeout','number','includes','POST','PUT','toUpperCase','body','rawBody','An\x20incorrect\x20formatted\x20json\x20body\x20has\x20been\x20passed\x20to\x20the\x20function','headers','rawHeaders','parse','An\x20incorrect\x20formatted\x20json\x20headers\x20has\x20been\x20passed\x20to\x20the\x20function','computedVariables','sync','uri','render','url','stringify','An\x20incorrect\x20formatted\x20json\x20has\x20been\x20passed\x20to\x20the\x20function','statusMessage','statusCode','message','500\x20-\x20Internal\x20Server\x20Error','googleDialogflow','key','dialogflow_language','googleDialogflowV2','dialogflowV2_project_id','private_key','dialogflowV2_language','sestekNDA','ispeechTTS','ispeech_tts_language','en-US','speed','ispeechASR','model','awsPolly','aws_access_key_id','Amy','aws_lex_region','googleASR','tildeASR','appsecret','agicommand','clone','isString','replaceAllVariables','recursiveNodeIndex','isPlainObject','isArray','length','saveRestApiResult','hasOwnProperty','setVariable','%s.%s','replaceObjectAllVariables','split','replaceAll','extra','getAndSetVariable','The\x20\x22%s\x22\x20variable\x20value\x20is:\x20%s','isConfigured','maxRetry','retry','mrcpsynth','noop','no\x20text\x20configured','options','MRCPSynth','result','Executed\x20command\x20MRCPSynth\x20%s','mrcprecog','Enter\x20in\x20MRCPRecog\x20(%s)\x20block','no\x20grammar\x20configured','grammar','MRCPRecog','MRCP_RECOG_CONFIDENCE','MRCP_RECOG_TRANSCRIPT','MRCP_RECOG_INSTANCE','Executed\x20command\x20MRCPRecog\x20%s','Enter\x20in\x20AGI\x20(%s)\x20block','agi','command','args','answer','Enter\x20in\x20ANSWER\x20(%s)\x20block','Wait\x20%s\x20seconds\x20before\x20answer','wait','Enter\x20in\x20CALLBACK\x20(%s)\x20block','no\x20list\x20selected'];(function(_0x5793d5,_0x311565){var _0x4f9549=function(_0x1cecce){while(--_0x1cecce){_0x5793d5['push'](_0x5793d5['shift']());}};_0x4f9549(++_0x311565);}(_0xac76,0x10e));var _0x6ac7=function(_0x576c1e,_0x49c1d6){_0x576c1e=_0x576c1e-0x0;var _0x33a3c3=_0xac76[_0x576c1e];return _0x33a3c3;};'use strict';var fs=require('fs');var path=require(_0x6ac7('0x0'));var util=require('util');var _=require(_0x6ac7('0x1'));var sh=require('shelljs');var odbc=require(_0x6ac7('0x2'))();var rs=require(_0x6ac7('0x3'));var moment=require(_0x6ac7('0x4'));var Mustache=require(_0x6ac7('0x5'));var rp=require('request-promise');var logger=require('../../config/logger')('agi');var config=require(_0x6ac7('0x6'));var scripts=require(_0x6ac7('0x7'));var FILES_PATH=_0x6ac7('0x8');var recursiveMapAttributes=['rawHeaders','rawBody'];var verticesWithRetry=['menu',_0x6ac7('0x9'),_0x6ac7('0xa')];var AGIVertices=function(_0x1f0ac5,_0x215f30,_0x18a49d){this[_0x6ac7('0xb')]=_0x1f0ac5;this['rpc']=_0x215f30;this[_0x6ac7('0xc')]=_0x18a49d;};AGIVertices[_0x6ac7('0xd')][_0x6ac7('0xe')]=function(_0x1cea8c,_0x1f5589){this[_0x6ac7('0xf')][_0x6ac7('0x10')](_0x1cea8c)['then'](function(_0x2793bf){_0x1f5589(null,_0x2793bf?_0x2793bf['name']:![]);})[_0x6ac7('0x11')](function(_0x2b7fca){_0x1f5589(_0x2b7fca);});};AGIVertices[_0x6ac7('0xd')][_0x6ac7('0x12')]=function(_0xc87a8e,_0x30421e){this[_0x6ac7('0xf')]['getVoiceQueueById'](_0xc87a8e)[_0x6ac7('0x13')](function(_0x2eb614){_0x30421e(null,_0x2eb614?_0x2eb614[_0x6ac7('0x14')]:![]);})[_0x6ac7('0x11')](function(_0x4a49c9){_0x30421e(_0x4a49c9);});};AGIVertices[_0x6ac7('0xd')]['getSquareProject']=function(_0x32e7fd,_0x56bd60){this[_0x6ac7('0xf')][_0x6ac7('0x15')](_0x32e7fd)['then'](function(_0x2c8695){_0x56bd60(null,_0x2c8695?_0x2c8695[_0x6ac7('0x14')]:![]);})[_0x6ac7('0x11')](function(_0x50714a){_0x56bd60(_0x50714a);});};AGIVertices[_0x6ac7('0xd')]['getSquareOdbc']=function(_0x2756e7,_0x59f84f){this[_0x6ac7('0xf')][_0x6ac7('0x16')](_0x2756e7)[_0x6ac7('0x13')](function(_0x1118c7){_0x59f84f(null,_0x1118c7?_0x1118c7[_0x6ac7('0x17')]:![]);})[_0x6ac7('0x11')](function(_0x5e7712){_0x59f84f(_0x5e7712);});};AGIVertices[_0x6ac7('0xd')][_0x6ac7('0x18')]=function(_0x4856d1,_0x2072be){this[_0x6ac7('0xf')][_0x6ac7('0x19')](_0x4856d1)[_0x6ac7('0x13')](function(_0x3362e9){_0x2072be(null,_0x3362e9?_0x3362e9[_0x6ac7('0x14')]:![]);})[_0x6ac7('0x11')](function(_0x4a8cb2){_0x2072be(_0x4a8cb2);});};AGIVertices[_0x6ac7('0xd')][_0x6ac7('0x1a')]=function(_0x238a3c,_0xe37921){this['rpc'][_0x6ac7('0x1b')](_0x238a3c)['then'](function(_0x124773){_0xe37921(null,_0x124773?_0x124773[_0x6ac7('0x14')]:![]);})[_0x6ac7('0x11')](function(_0xd80f6){_0xe37921(_0xd80f6);});};AGIVertices[_0x6ac7('0xd')]['getSound']=function(_0xef925e,_0x24e9d2){var _0x415079=this;this[_0x6ac7('0xf')]['getSoundById'](_0xef925e)[_0x6ac7('0x13')](function(_0x148206){_0x24e9d2(null,_0x148206?_0x415079[_0x6ac7('0x1c')](_0x148206['save_name']):![]);})[_0x6ac7('0x11')](function(_0x4fa576){_0x24e9d2(_0x4fa576);});};AGIVertices[_0x6ac7('0xd')][_0x6ac7('0x1d')]=function(_0x150871,_0x21418a){this[_0x6ac7('0xf')]['getMailAccountById'](_0x150871)[_0x6ac7('0x13')](function(_0xedefe){_0x21418a(null,_0xedefe?_0xedefe:![]);})[_0x6ac7('0x11')](function(_0x2a89cf){_0x21418a(_0x2a89cf);});};AGIVertices[_0x6ac7('0xd')][_0x6ac7('0x1e')]=function(_0x2141db,_0x3a9498,_0x4dd4dc){this[_0x6ac7('0xc')][_0x6ac7('0x1e')](_0x2141db,_0x3a9498)[_0x6ac7('0x13')](function(){_0x4dd4dc(null);})[_0x6ac7('0x11')](function(_0x2d01dd){_0x4dd4dc(_0x2d01dd);});};AGIVertices['prototype'][_0x6ac7('0x1f')]=function(_0x24c739,_0xf540ab){this['rpc'][_0x6ac7('0x20')](_0x24c739)['then'](function(_0x4137db){if(_0x4137db){if(_0x4137db[_0x6ac7('0x21')]){_0xf540ab(null,[_0x4137db[_0x6ac7('0x22')]]);}else{_0xf540ab(null,_[_0x6ac7('0x23')](_0x4137db[_0x6ac7('0x24')],_0x6ac7('0x22')));}}else{_0xf540ab(null,![]);}})[_0x6ac7('0x11')](function(_0x450e47){_0xf540ab(_0x450e47);});};AGIVertices[_0x6ac7('0xd')][_0x6ac7('0x1c')]=function(_0x7ba6e5){return util['format'](_0x6ac7('0x25'),FILES_PATH,_0x7ba6e5);};AGIVertices['prototype'][_0x6ac7('0x26')]=function(_0x19f0ff,_0x5917dd,_0x1ff655){odbc[_0x6ac7('0x27')](_0x19f0ff,function(_0x54a4df){if(_0x54a4df){logger[_0x6ac7('0x28')](_0x6ac7('0x29'),_0x54a4df);_0x1ff655(_0x54a4df);}else{logger[_0x6ac7('0x2a')](_0x6ac7('0x2b'));odbc[_0x6ac7('0x2c')](_0x5917dd,function(_0x9846,_0x25bfe0){if(_0x9846){logger[_0x6ac7('0x2a')]('Error\x20executing\x20query\x20%s',_0x5917dd);_0x1ff655(_0x9846);}else{logger['info']('Query\x20executed\x20correctly\x20%s',_0x5917dd);odbc[_0x6ac7('0x2d')](function(_0x85380b){if(_0x85380b){logger['error'](_0x6ac7('0x2e'),_0x85380b);}_0x1ff655(null,_0x25bfe0);});}});}});};AGIVertices[_0x6ac7('0xd')][_0x6ac7('0x2f')]=function(_0x4d8928,_0x2ccbc0){this[_0x6ac7('0xf')][_0x6ac7('0x30')](_0x4d8928)[_0x6ac7('0x13')](function(_0x1d940c){_0x2ccbc0(null,_0x1d940c?_0x1d940c:![]);})['catch'](function(_0x3bf9b2){_0x2ccbc0(_0x3bf9b2);});};AGIVertices[_0x6ac7('0xd')]['createSmsMessage']=function(_0x28a537,_0x49491f){this['rpc']['createSmsMessage'](_0x28a537)[_0x6ac7('0x13')](function(_0x1240df){_0x49491f(null,_0x1240df);})[_0x6ac7('0x11')](function(_0x3f8b1d){_0x49491f(_0x3f8b1d);});};AGIVertices[_0x6ac7('0xd')][_0x6ac7('0x31')]=function(_0x1ff107,_0x2a6af1,_0x3aa3bf){this['rpc'][_0x6ac7('0x31')]({'uniqueid':this['channel'][_0x6ac7('0x32')],'node':_0x1ff107[_0x6ac7('0x33')],'application':_0x1ff107['agicommand'],'data':_0x2a6af1||null,'project_name':this[_0x6ac7('0xb')][_0x6ac7('0x34')],'callerid':this[_0x6ac7('0xb')][_0x6ac7('0x35')]})[_0x6ac7('0x13')](function(_0x47ac94){if(_0x3aa3bf){_0x3aa3bf(null,_0x47ac94);}})[_0x6ac7('0x11')](function(_0x35567a){if(_0x3aa3bf){_0x3aa3bf(_0x35567a);}});};AGIVertices[_0x6ac7('0xd')][_0x6ac7('0x36')]=function(_0x25be1a,_0x4f5215,_0x45714a,_0x3fa80d){this[_0x6ac7('0xf')][_0x6ac7('0x36')]({'uniqueid':this[_0x6ac7('0xb')][_0x6ac7('0x32')],'callerid':this[_0x6ac7('0xb')][_0x6ac7('0x35')],'calleridname':this[_0x6ac7('0xb')][_0x6ac7('0x37')],'context':this[_0x6ac7('0xb')]['context'],'extension':this[_0x6ac7('0xb')][_0x6ac7('0x38')],'priority':this['channel'][_0x6ac7('0x39')],'accountcode':this['channel'][_0x6ac7('0x3a')],'dnid':this[_0x6ac7('0xb')][_0x6ac7('0x3b')],'projectName':this[_0x6ac7('0xb')]['arg_1'],'saveName':_0x4f5215,'filename':_0x25be1a['file']||_0x4f5215,'savePath':_0x45714a})[_0x6ac7('0x13')](function(_0x19a71){_0x3fa80d(null,_0x19a71);})['catch'](function(_0x2ea8f1){_0x3fa80d(_0x2ea8f1);});};AGIVertices[_0x6ac7('0xd')][_0x6ac7('0x3c')]=function(_0x3f3a66,_0x174f4d,_0x573c44,_0x2483db,_0x58c8ac){this['rpc'][_0x6ac7('0x3c')]({'uniqueid':this[_0x6ac7('0xb')][_0x6ac7('0x32')],'body':_0x3f3a66,'direction':_0x174f4d,'providerName':_0x573c44,'providerResponse':_0x2483db})[_0x6ac7('0x13')](function(_0x1d6dbe){if(_0x58c8ac){_0x58c8ac(null,_0x1d6dbe);}})[_0x6ac7('0x11')](function(_0x30cfd2){if(_0x58c8ac){_0x58c8ac(_0x30cfd2);}});};AGIVertices['prototype'][_0x6ac7('0x3d')]=function(_0x48c5b5,_0x1679a7){this[_0x6ac7('0xf')][_0x6ac7('0x3d')]({'firstName':_[_0x6ac7('0x3e')](_0x48c5b5[_0x6ac7('0x14')])||_[_0x6ac7('0x3f')](_0x48c5b5[_0x6ac7('0x14')])?_0x6ac7('0x40')+Math['random']():_0x48c5b5[_0x6ac7('0x14')],'lastName':_[_0x6ac7('0x3e')](_0x48c5b5[_0x6ac7('0x41')])||_[_0x6ac7('0x3f')](_0x48c5b5['lastName'])?null:_0x48c5b5[_0x6ac7('0x41')],'phone':_0x48c5b5[_0x6ac7('0x42')],'ListId':_0x48c5b5[_0x6ac7('0x43')],'scheduledat':_0x48c5b5[_0x6ac7('0x44')],'callbackUniqueid':this['channel']['uniqueid'],'tags':_0x6ac7('0x45'),'description':'Callback\x20scheduled\x20at\x20'+_0x48c5b5[_0x6ac7('0x44')][_0x6ac7('0x46')](),'priority':_0x48c5b5[_0x6ac7('0x47')]})[_0x6ac7('0x13')](function(_0x5836b6){_0x1679a7(null,_0x5836b6);})[_0x6ac7('0x11')](function(_0x220921){_0x1679a7(_0x220921);});};AGIVertices[_0x6ac7('0xd')][_0x6ac7('0x48')]=function(_0x4b8c46,_0x14b0ce){this['rpc'][_0x6ac7('0x49')](_0x4b8c46)[_0x6ac7('0x13')](function(_0xe9c601){_0x14b0ce(null,_0xe9c601?_0xe9c601['name']:![]);})['catch'](function(_0x266522){_0x14b0ce(_0x266522);});};AGIVertices[_0x6ac7('0xd')][_0x6ac7('0x4a')]=function(_0x2250d6,_0x76d6d4,_0x40861f){var _0x15e6e7={'role':_0x6ac7('0x4b')};_0x15e6e7[_0x2250d6]=this[_0x6ac7('0xb')][_0x6ac7('0x35')];this[_0x6ac7('0xf')][_0x6ac7('0x4a')](_0x15e6e7,_0x76d6d4,this[_0x6ac7('0xb')][_0x6ac7('0x32')])[_0x6ac7('0x13')](function(_0x154d88){_0x40861f(null,_[_0x6ac7('0x3f')](_0x154d88)?![]:!![]);})['catch'](function(_0x4f28c3){logger['error'](_0x4f28c3);_0x40861f(null,![]);});};AGIVertices[_0x6ac7('0xd')]['agentUnpause']=function(_0x53f04b,_0x3bf413){var _0x29f784={'role':'agent'};_0x29f784[_0x53f04b]=this[_0x6ac7('0xb')][_0x6ac7('0x35')];this['rpc'][_0x6ac7('0x4c')](_0x29f784)[_0x6ac7('0x13')](function(_0x1c9ac4){_0x3bf413(null,_[_0x6ac7('0x3f')](_0x1c9ac4)?![]:!![]);})[_0x6ac7('0x11')](function(_0x2fa639){logger[_0x6ac7('0x28')](_0x2fa639);_0x3bf413(null,![]);});};AGIVertices[_0x6ac7('0xd')]['agentLogout']=function(_0x23df07,_0x2612f7){var _0xad2fc8={'role':_0x6ac7('0x4b')};_0xad2fc8[_0x23df07]=this[_0x6ac7('0xb')][_0x6ac7('0x35')];this[_0x6ac7('0xf')][_0x6ac7('0x4d')](_0xad2fc8)['then'](function(_0x13c693){_0x2612f7(null,_[_0x6ac7('0x3f')](_0x13c693)?![]:!![]);})[_0x6ac7('0x11')](function(_0x150484){logger[_0x6ac7('0x28')](_0x150484);_0x2612f7(null,![]);});};AGIVertices['prototype'][_0x6ac7('0x4e')]=function(_0xeb7892,_0x33084d){var _0x250316={'role':'agent'};_0x250316[_0xeb7892]=this[_0x6ac7('0xb')][_0x6ac7('0x35')];var _0x37235b=_0xeb7892!='internal'?util[_0x6ac7('0x4f')](_0x6ac7('0x50'),_0x6ac7('0x51'),this[_0x6ac7('0xb')][_0x6ac7('0x35')]):undefined;this[_0x6ac7('0xf')]['agentLogin'](_0x250316,_0x37235b)[_0x6ac7('0x13')](function(_0x21d69f){_0x33084d(null,_[_0x6ac7('0x3f')](_0x21d69f)?![]:!![]);})['catch'](function(_0x4bbba8){logger[_0x6ac7('0x28')](_0x4bbba8);_0x33084d(null,![]);});};AGIVertices[_0x6ac7('0xd')][_0x6ac7('0x52')]=function(_0x14c67d,_0x41955a){sh[_0x6ac7('0x53')](_[_0x6ac7('0x54')](_0x14c67d),function(_0x4173dc,_0x3ec6bc){var _0x1c7086=_0x3ec6bc[_0x6ac7('0x55')](/(\r\n|\n|\r)/gm,'');_0x41955a(null,_0x1c7086);});};AGIVertices[_0x6ac7('0xd')]['googleCloudTTS']=function(_0x599b11,_0x286cbd){scripts[_0x6ac7('0x56')](_0x599b11[_0x6ac7('0x57')],_0x599b11['google_cloud_tts_text_type']||_0x6ac7('0x58'),_0x599b11[_0x6ac7('0x58')],_0x599b11['languageCode']||'en-US',_0x599b11[_0x6ac7('0x59')]||_0x6ac7('0x5a'),_0x599b11['audioEncoding']||_0x6ac7('0x5b'))['then'](function(_0x1c03b0){_0x286cbd(null,_0x1c03b0);})['catch'](function(_0x323b75){_0x286cbd(_0x323b75);});};AGIVertices['prototype'][_0x6ac7('0x5c')]=function(_0x1d3114,_0x4eb071){scripts['googleTTS'](_0x1d3114[_0x6ac7('0x58')],_0x1d3114[_0x6ac7('0x5d')]||'en',0x1)[_0x6ac7('0x13')](function(_0xc0fe90){_0x4eb071(null,_0xc0fe90);})[_0x6ac7('0x11')](function(_0xfc05d0){_0x4eb071(_0xfc05d0);});};AGIVertices[_0x6ac7('0xd')]['restAPI']=function(_0x22891c,_0x4594c4){var _0x12c443={'uri':_0x22891c['url'],'method':_0x22891c[_0x6ac7('0x5e')],'json':!![],'resolveWithFullResponse':!![],'strictSSL':![],'timeout':typeof parseInt(_0x22891c[_0x6ac7('0x5f')])===_0x6ac7('0x60')&&parseInt(_0x22891c[_0x6ac7('0x5f')])>=0x1?parseInt(_0x22891c[_0x6ac7('0x5f')])*0x3e8:0x5*0x3e8};if(_[_0x6ac7('0x61')]([_0x6ac7('0x62'),_0x6ac7('0x63')],_0x12c443[_0x6ac7('0x5e')][_0x6ac7('0x64')]())){try{_0x12c443[_0x6ac7('0x65')]=_0x22891c['rawBody']?JSON['parse'](_0x22891c[_0x6ac7('0x66')]):{};}catch(_0x5eb7ab){logger['error'](_0x6ac7('0x67'),_0x5eb7ab);}}try{_0x12c443[_0x6ac7('0x68')]=_0x22891c[_0x6ac7('0x69')]?JSON[_0x6ac7('0x6a')](_0x22891c[_0x6ac7('0x69')]):{};}catch(_0x3e59e2){logger[_0x6ac7('0x28')](_0x6ac7('0x6b'),_0x3e59e2);}if(_0x22891c[_0x6ac7('0x6c')]){try{var _0x1f7baa=require(_0x22891c[_0x6ac7('0x6c')])[_0x6ac7('0x6d')](this,_0x12c443);_0x12c443[_0x6ac7('0x6e')]=Mustache[_0x6ac7('0x6f')](_0x22891c[_0x6ac7('0x70')],_0x1f7baa,{},['$$','$$']);if(_0x12c443[_0x6ac7('0x68')]){_0x12c443['headers']=JSON[_0x6ac7('0x6a')](Mustache[_0x6ac7('0x6f')](JSON['stringify'](_0x12c443[_0x6ac7('0x68')]),_0x1f7baa,{},['$$','$$']));}if(_0x12c443[_0x6ac7('0x65')]){_0x12c443[_0x6ac7('0x65')]=JSON[_0x6ac7('0x6a')](Mustache['render'](JSON[_0x6ac7('0x71')](_0x12c443[_0x6ac7('0x65')]),_0x1f7baa,{},['$$','$$']));}}catch(_0x3beeff){logger[_0x6ac7('0x28')](_0x6ac7('0x72'),_0x3beeff);}}rp(_0x12c443)[_0x6ac7('0x13')](function(_0x2cd1a0){var _0x15b920={'statusCode':_0x2cd1a0['statusCode']||0xc8,'statusMessage':_0x2cd1a0[_0x6ac7('0x73')]||'OK','headers':_0x2cd1a0[_0x6ac7('0x68')]||{},'body':_0x2cd1a0['body']||{}};_0x4594c4(null,_0x15b920);})[_0x6ac7('0x11')](function(_0x1a4aa3){var _0x55975d={'statusCode':_0x1a4aa3[_0x6ac7('0x74')]||0x1f4,'statusMessage':_0x1a4aa3[_0x6ac7('0x75')]||_0x6ac7('0x76'),'headers':_0x1a4aa3['options'][_0x6ac7('0x68')]||{},'body':_0x1a4aa3['options'][_0x6ac7('0x65')]||{}};_0x4594c4(null,_0x55975d);});};AGIVertices[_0x6ac7('0xd')][_0x6ac7('0x77')]=function(_0x3f83be,_0x45e331){scripts[_0x6ac7('0x77')](this[_0x6ac7('0xb')]['uniqueid'],_0x3f83be[_0x6ac7('0x78')],_0x3f83be[_0x6ac7('0x58')],_0x3f83be[_0x6ac7('0x79')]||'en')[_0x6ac7('0x13')](function(_0x2541f1){_0x45e331(null,_0x2541f1);})[_0x6ac7('0x11')](function(_0xf4e717){_0x45e331(_0xf4e717);});};AGIVertices[_0x6ac7('0xd')][_0x6ac7('0x7a')]=function(_0x5e413a,_0x7b802d){scripts[_0x6ac7('0x7a')](this[_0x6ac7('0xb')]['uniqueid'],_0x5e413a[_0x6ac7('0x7b')],_0x5e413a['client_email'],_0x5e413a[_0x6ac7('0x7c')],_0x5e413a[_0x6ac7('0x58')],_0x5e413a[_0x6ac7('0x7d')]||'en')['then'](function(_0x130bfe){_0x7b802d(null,_0x130bfe);})[_0x6ac7('0x11')](function(_0x2c6b39){_0x7b802d(_0x2c6b39);});};AGIVertices[_0x6ac7('0xd')][_0x6ac7('0x7e')]=function(_0x5f2462,_0x2554ad){scripts[_0x6ac7('0x7e')](this[_0x6ac7('0xb')],_0x5f2462)[_0x6ac7('0x13')](function(_0x43e3ef){_0x2554ad(null,_0x43e3ef);})[_0x6ac7('0x11')](function(_0x39cd40){_0x2554ad(_0x39cd40);});};AGIVertices[_0x6ac7('0xd')][_0x6ac7('0x7f')]=function(_0x269b7e,_0x38322c){scripts[_0x6ac7('0x7f')](_0x269b7e[_0x6ac7('0x78')],_0x269b7e[_0x6ac7('0x58')],_0x269b7e[_0x6ac7('0x80')]||_0x6ac7('0x81'),_0x269b7e[_0x6ac7('0x82')])[_0x6ac7('0x13')](function(_0x545f55){_0x38322c(null,_0x545f55);})[_0x6ac7('0x11')](function(_0x43a701){_0x38322c(_0x43a701);});};AGIVertices[_0x6ac7('0xd')][_0x6ac7('0x83')]=function(_0x3f8863,_0x4f6614,_0x1e5427){scripts[_0x6ac7('0x83')](_0x4f6614,_0x3f8863[_0x6ac7('0x78')],_0x3f8863['ispeech_asr_language']||_0x6ac7('0x81'),this['isConfigured'](_0x3f8863[_0x6ac7('0x84')])?_0x3f8863[_0x6ac7('0x84')]:undefined)[_0x6ac7('0x13')](function(_0x3716f6){_0x1e5427(null,_0x3716f6);})[_0x6ac7('0x11')](function(_0x1b999f){_0x1e5427(_0x1b999f);});};AGIVertices['prototype']['awsPolly']=function(_0x448def,_0x3d9b86){scripts[_0x6ac7('0x85')](_0x448def[_0x6ac7('0x86')],_0x448def['aws_secret_access_key'],_0x448def['aws_polly_region'],_0x448def['aws_polly_voice']||_0x6ac7('0x87'),_0x448def['text'],_0x448def['aws_text_type']||'text')[_0x6ac7('0x13')](function(_0x8dac05){_0x3d9b86(null,_0x8dac05);})[_0x6ac7('0x11')](function(_0x4d02ac){_0x3d9b86(_0x4d02ac);});};AGIVertices[_0x6ac7('0xd')]['awsLex']=function(_0x155d7c,_0x4bb25b){scripts['awsLex'](this[_0x6ac7('0xb')][_0x6ac7('0x32')],_0x155d7c[_0x6ac7('0x86')],_0x155d7c['aws_secret_access_key'],_0x155d7c[_0x6ac7('0x88')],_0x155d7c[_0x6ac7('0x58')],_0x155d7c['aws_bot_name'])[_0x6ac7('0x13')](function(_0x488a7b){_0x4bb25b(null,_0x488a7b);})['catch'](function(_0x59509e){_0x4bb25b(_0x59509e);});};AGIVertices[_0x6ac7('0xd')][_0x6ac7('0x89')]=function(_0x18c105,_0x4c4ebc,_0x38735f){scripts[_0x6ac7('0x89')](_0x4c4ebc,_0x18c105[_0x6ac7('0x78')],_0x18c105['google_asr_language']||_0x6ac7('0x81'))[_0x6ac7('0x13')](function(_0x17d611){_0x38735f(null,_0x17d611);})[_0x6ac7('0x11')](function(_0x5d1af6){_0x38735f(_0x5d1af6);});};AGIVertices[_0x6ac7('0xd')]['tildeASR']=function(_0x2a88b2,_0x10be9a,_0x245ca1){scripts[_0x6ac7('0x8a')](_0x10be9a,_0x2a88b2['appid'],_0x2a88b2[_0x6ac7('0x8b')],_0x2a88b2['uri'])[_0x6ac7('0x13')](function(_0x3f151a){_0x245ca1(null,_0x3f151a);})[_0x6ac7('0x11')](function(_0x302f1c){_0x245ca1(_0x302f1c);});};AGIVertices['prototype']['clear']=function(_0x31ef28){var _0x3ed7de=_[_0x6ac7('0x61')](verticesWithRetry,_0x31ef28[_0x6ac7('0x8c')])?_0x31ef28:_[_0x6ac7('0x8d')](_0x31ef28);for(var _0x1d4910 in _0x3ed7de){if(_0x3ed7de['hasOwnProperty'](_0x1d4910)){if(_0x3ed7de[_0x1d4910]&&_[_0x6ac7('0x8e')](_0x3ed7de[_0x1d4910])){if(_[_0x6ac7('0x61')](recursiveMapAttributes,_0x1d4910)){_0x3ed7de[_0x1d4910]=this['replaceObjectAllVariables'](_0x3ed7de[_0x1d4910]);}else{_0x3ed7de[_0x1d4910]=this[_0x6ac7('0x8f')](_0x3ed7de[_0x1d4910]);}}}}return _0x3ed7de;};AGIVertices['prototype'][_0x6ac7('0x90')]=function(_0xc24e14){for(var _0x6d8b2 in _0xc24e14){if(_0xc24e14['hasOwnProperty'](_0x6d8b2)){if(_[_0x6ac7('0x91')](_0xc24e14[_0x6d8b2])){this[_0x6ac7('0x90')](_0xc24e14[_0x6d8b2]);}else if(_[_0x6ac7('0x92')](_0xc24e14[_0x6d8b2])){for(var _0x164ae8=0x0;_0x164ae8<_0xc24e14[_0x6d8b2][_0x6ac7('0x93')];_0x164ae8++){this['recursiveNodeIndex'](_0xc24e14[_0x6d8b2][_0x164ae8]);}}else if(_['isString'](_0xc24e14[_0x6d8b2])){_0xc24e14[_0x6d8b2]=this['replaceAllVariables'](_0xc24e14[_0x6d8b2]);}}}};AGIVertices['prototype'][_0x6ac7('0x94')]=function(_0x3eace2,_0x45c3db){for(var _0x66d82 in _0x3eace2){if(_0x3eace2[_0x6ac7('0x95')](_0x66d82)){if(_[_0x6ac7('0x91')](_0x3eace2[_0x66d82])){if(!_[_0x6ac7('0x3e')](_0x3eace2[_0x66d82])){this[_0x6ac7('0x94')](_0x3eace2[_0x66d82],util[_0x6ac7('0x4f')]('%s.%s',_0x45c3db,_0x66d82));}}else if(_[_0x6ac7('0x92')](_0x3eace2[_0x66d82])){for(var _0x5873f8=0x0;_0x5873f8<_0x3eace2[_0x66d82][_0x6ac7('0x93')];_0x5873f8++){this[_0x6ac7('0x94')](_0x3eace2[_0x66d82][_0x5873f8],util[_0x6ac7('0x4f')]('%s.%s',_0x45c3db,_0x66d82+'['+_0x5873f8+']'));}}else{if(!_[_0x6ac7('0x3f')](_0x3eace2[_0x66d82])){this[_0x6ac7('0xb')][_0x6ac7('0x96')](util['format'](_0x6ac7('0x97'),_0x45c3db,_0x66d82),_0x3eace2[_0x66d82]);}}}}};AGIVertices[_0x6ac7('0xd')][_0x6ac7('0x98')]=function(_0x45e7f3){try{var _0x351479=JSON[_0x6ac7('0x6a')](_0x45e7f3);this[_0x6ac7('0x90')](_0x351479);return JSON[_0x6ac7('0x71')](_0x351479);}catch(_0x1af6dd){return this[_0x6ac7('0x8f')](_0x45e7f3);}};AGIVertices['prototype'][_0x6ac7('0x8f')]=function(_0x10af7d){var _0x44f269=_0x10af7d[_0x6ac7('0x99')]('{');for(var _0x545000=0x1;_0x545000<_0x44f269[_0x6ac7('0x93')];_0x545000+=0x1){var _0x25d0de=_0x44f269[_0x545000][_0x6ac7('0x99')]('}');if(_0x25d0de[_0x6ac7('0x93')]>0x1){_0x10af7d=_0x10af7d[_0x6ac7('0x9a')]('{'+_0x25d0de[0x0]+'}',this[_0x6ac7('0xb')][_0x6ac7('0xe')](_0x25d0de[0x0])[_0x6ac7('0x9b')]||_0x25d0de[0x0]);}}if(_0x44f269['length']===0x1){return _0x10af7d[_0x6ac7('0x46')]();}return this['replaceAllVariables'](_0x10af7d);};AGIVertices[_0x6ac7('0xd')][_0x6ac7('0x9c')]=function(_0x4caa3a,_0x4cb02c){var _0x197b76=this['channel'][_0x6ac7('0xe')](_0x4caa3a);if(_0x197b76['result']===-0x1){return _0x197b76;}logger[_0x6ac7('0x2a')](util[_0x6ac7('0x4f')](_0x6ac7('0x9d'),_0x4cb02c,_0x197b76[_0x6ac7('0x9b')]));return this[_0x6ac7('0xb')][_0x6ac7('0x96')](_0x4cb02c,_0x197b76[_0x6ac7('0x9b')]);};AGIVertices[_0x6ac7('0xd')][_0x6ac7('0x9e')]=function(_0x589b43){return _0x589b43&&_0x589b43!=='0'&&_0x589b43!=='-1'&&_0x589b43!=='';};AGIVertices[_0x6ac7('0xd')][_0x6ac7('0x9f')]=function(_0x182027){this[_0x6ac7('0x31')][_0x6ac7('0x6d')](this,_0x182027,'-');_0x182027[_0x6ac7('0xa0')]=_0x182027[_0x6ac7('0x9f')];return{'code':0xc8,'result':'-'};};AGIVertices[_0x6ac7('0xd')][_0x6ac7('0xa1')]=function(_0x4e30dc){logger[_0x6ac7('0x2a')](util['format']('Enter\x20in\x20MRCPSynth\x20(%s)\x20block',_0x4e30dc['label']));if(!this[_0x6ac7('0x9e')](_0x4e30dc[_0x6ac7('0x58')])){return this['channel'][_0x6ac7('0xa2')](_0x6ac7('0xa3'));}var _0x41d07b='\x22'+_0x4e30dc[_0x6ac7('0x58')]+'\x22';if(this[_0x6ac7('0x9e')](_0x4e30dc[_0x6ac7('0xa4')])){_0x41d07b+=','+_0x4e30dc[_0x6ac7('0xa4')];}var _0x5ab9c1=this[_0x6ac7('0xb')][_0x6ac7('0x53')](_0x6ac7('0xa5'),_0x41d07b);if(_0x5ab9c1[_0x6ac7('0xa6')]===-0x1){return _0x5ab9c1;}return this[_0x6ac7('0xb')][_0x6ac7('0xa2')](util['format'](_0x6ac7('0xa7'),_0x41d07b));};AGIVertices['prototype'][_0x6ac7('0xa8')]=function(_0x5deda0){logger['info'](util[_0x6ac7('0x4f')](_0x6ac7('0xa9'),_0x5deda0[_0x6ac7('0x33')]));if(!this[_0x6ac7('0x9e')](_0x5deda0['grammar'])){return this[_0x6ac7('0xb')][_0x6ac7('0xa2')](_0x6ac7('0xaa'));}var _0x452fc5=_0x5deda0[_0x6ac7('0xab')];if(this[_0x6ac7('0x9e')](_0x5deda0['options'])){_0x452fc5+=','+_0x5deda0['options'];}var _0x30e521=this['channel'][_0x6ac7('0x53')](_0x6ac7('0xac'),_0x452fc5);if(_0x30e521['result']===-0x1){return _0x30e521;}var _0x1a31f1=this[_0x6ac7('0x9c')]('RECOG_CONFIDENCE()',_0x6ac7('0xad'));if(_0x1a31f1[_0x6ac7('0xa6')]===-0x1){return _0x1a31f1;}var _0x4d6265=this[_0x6ac7('0x9c')]('RECOG_INPUT()',_0x6ac7('0xae'));if(_0x4d6265[_0x6ac7('0xa6')]===-0x1){return _0x4d6265;}var _0x47ddcf=this[_0x6ac7('0x9c')]('RECOG_INSTANCE()',_0x6ac7('0xaf'));if(_0x47ddcf[_0x6ac7('0xa6')]===-0x1){return _0x47ddcf;}return this[_0x6ac7('0xb')][_0x6ac7('0xa2')](util['format'](_0x6ac7('0xb0'),_0x452fc5));};AGIVertices['prototype']['agi']=function(_0x5caec4){logger[_0x6ac7('0x2a')](util['format'](_0x6ac7('0xb1'),_0x5caec4[_0x6ac7('0x33')]));return this['channel'][_0x6ac7('0xb2')]([_0x5caec4[_0x6ac7('0xb3')],_0x5caec4[_0x6ac7('0xb4')]]);};AGIVertices[_0x6ac7('0xd')][_0x6ac7('0xb5')]=function(_0x11b668){logger[_0x6ac7('0x2a')](util[_0x6ac7('0x4f')](_0x6ac7('0xb6'),_0x11b668['label']));if(this[_0x6ac7('0x9e')](_0x11b668['timeout'])){logger[_0x6ac7('0x2a')](util['format'](_0x6ac7('0xb7'),_0x11b668[_0x6ac7('0x5f')]));var _0x17e710=this[_0x6ac7('0xb')][_0x6ac7('0xb8')](_0x11b668[_0x6ac7('0x5f')]);if(_0x17e710[_0x6ac7('0xa6')]===-0x1){return _0x17e710;}}return this[_0x6ac7('0xb')][_0x6ac7('0xb5')]();};AGIVertices[_0x6ac7('0xd')][_0x6ac7('0x45')]=function(_0x28f73a){logger[_0x6ac7('0x2a')](util[_0x6ac7('0x4f')](_0x6ac7('0xb9'),_0x28f73a[_0x6ac7('0x33')]));if(!this[_0x6ac7('0x9e')](_0x28f73a['list_id'])){return this[_0x6ac7('0xb')][_0x6ac7('0x28')](_0x28f73a,_0x6ac7('0xba'));}_0x28f73a[_0x6ac7('0x44')]=moment();if(this[_0x6ac7('0x9e')](_0x28f73a[_0x6ac7('0xbb')])){_0x28f73a['scheduledAt']=moment()['add'](_0x28f73a[_0x6ac7('0xbb')],_0x6ac7('0xbc'));}if(!this[_0x6ac7('0x9e')](_0x28f73a[_0x6ac7('0x47')])){_0x28f73a['callback_priority']=0x2;}this[_0x6ac7('0x3d')][_0x6ac7('0x6d')](this,_0x28f73a);return this[_0x6ac7('0xb')][_0x6ac7('0xa2')](util[_0x6ac7('0x4f')]('CALLBACK\x20added\x20phone:\x20%s\x20on\x20list:\x20%s\x20at\x20%s',_0x28f73a['phone'],_0x28f73a[_0x6ac7('0x43')],_0x28f73a[_0x6ac7('0x44')]));};AGIVertices[_0x6ac7('0xd')][_0x6ac7('0xbd')]=function(_0x2de8d7){logger[_0x6ac7('0x2a')](util[_0x6ac7('0x4f')](_0x6ac7('0xbe'),_0x2de8d7['label']));var _0x262474=this['channel']['exec'](_0x2de8d7['application'],_0x2de8d7[_0x6ac7('0xa4')]);if(_0x262474['result']===-0x1){return _0x262474;}return this[_0x6ac7('0xb')]['noop'](util[_0x6ac7('0x4f')](_0x6ac7('0xbf'),_0x2de8d7[_0x6ac7('0xc0')],_0x2de8d7['options']));};AGIVertices[_0x6ac7('0xd')][_0x6ac7('0xc1')]=function(_0x77da4e){logger[_0x6ac7('0x2a')](util[_0x6ac7('0x4f')](_0x6ac7('0xc2'),_0x77da4e[_0x6ac7('0x33')]));if(!this[_0x6ac7('0x9e')](_0x77da4e[_0x6ac7('0x58')])){return this[_0x6ac7('0xb')][_0x6ac7('0xa2')](_0x6ac7('0xa3'));}var _0x24a012='\x22'+_0x77da4e['text']+'\x22';if(this[_0x6ac7('0x9e')](_0x77da4e[_0x6ac7('0xa4')])){_0x24a012+=','+_0x77da4e['options'];}var _0x13ed17=this[_0x6ac7('0xb')][_0x6ac7('0x53')](_0x6ac7('0xa5'),_0x24a012);if(_0x13ed17['result']===-0x1){return _0x13ed17;}return this['channel'][_0x6ac7('0xa2')](util[_0x6ac7('0x4f')]('Executed\x20command\x20MRCPSynth\x20%s',_0x24a012));};AGIVertices[_0x6ac7('0xd')]['sestektts']=function(_0x6d03a6){logger[_0x6ac7('0x2a')](util[_0x6ac7('0x4f')](_0x6ac7('0xc3'),_0x6d03a6['label']));if(!this[_0x6ac7('0x9e')](_0x6d03a6[_0x6ac7('0x58')])){return this[_0x6ac7('0xb')][_0x6ac7('0xa2')]('no\x20text\x20configured');}var _0x4ae85f='\x22'+_0x6d03a6[_0x6ac7('0x58')]+'\x22';if(this[_0x6ac7('0x9e')](_0x6d03a6[_0x6ac7('0xa4')])){_0x4ae85f+=','+_0x6d03a6['options'];}var _0x3b8113=this[_0x6ac7('0xb')][_0x6ac7('0x53')]('MRCPSynth',_0x4ae85f);if(_0x3b8113['result']===-0x1){return _0x3b8113;}return this[_0x6ac7('0xb')][_0x6ac7('0xa2')](util[_0x6ac7('0x4f')]('Executed\x20command\x20MRCPSynth\x20%s',_0x4ae85f));};AGIVertices[_0x6ac7('0xd')][_0x6ac7('0xc4')]=function(_0x26f748){logger[_0x6ac7('0x2a')](util[_0x6ac7('0x4f')](_0x6ac7('0xc5'),_0x26f748[_0x6ac7('0x33')]));if(!this[_0x6ac7('0x9e')](_0x26f748[_0x6ac7('0xab')])){return this['channel'][_0x6ac7('0xa2')](_0x6ac7('0xaa'));}var _0x5d5d71=_0x26f748[_0x6ac7('0xab')];if(this[_0x6ac7('0x9e')](_0x26f748[_0x6ac7('0xa4')])){_0x5d5d71+=','+_0x26f748[_0x6ac7('0xa4')];}var _0x2a92d1=this[_0x6ac7('0xb')][_0x6ac7('0x53')](_0x6ac7('0xac'),_0x5d5d71);if(_0x2a92d1[_0x6ac7('0xa6')]===-0x1){return _0x2a92d1;}var _0x1e0c15=this[_0x6ac7('0x9c')](_0x6ac7('0xc6'),_0x6ac7('0xc7'));if(_0x1e0c15[_0x6ac7('0xa6')]===-0x1){return _0x1e0c15;}var _0x5d9754=this[_0x6ac7('0x9c')](_0x6ac7('0xc8'),'LUMENVOX_ASR_TRANSCRIPT');if(_0x5d9754[_0x6ac7('0xa6')]===-0x1){return _0x5d9754;}var _0xc152df=this[_0x6ac7('0x9c')](_0x6ac7('0xc9'),_0x6ac7('0xca'));if(_0xc152df[_0x6ac7('0xa6')]===-0x1){return _0xc152df;}return this['channel']['noop'](util[_0x6ac7('0x4f')]('Executed\x20command\x20MRCPRecog\x20%s',_0x5d5d71));};AGIVertices[_0x6ac7('0xd')][_0x6ac7('0xcb')]=function(_0x308497){logger[_0x6ac7('0x2a')](util['format']('Enter\x20in\x20SESTEKASR\x20(%s)\x20block',_0x308497[_0x6ac7('0x33')]));if(!this[_0x6ac7('0x9e')](_0x308497[_0x6ac7('0xab')])){return this[_0x6ac7('0xb')][_0x6ac7('0xa2')]('no\x20grammar\x20configured');}var _0x2e4927=_0x308497[_0x6ac7('0xab')];if(this[_0x6ac7('0x9e')](_0x308497[_0x6ac7('0xa4')])){_0x2e4927+=','+_0x308497[_0x6ac7('0xa4')];}var _0x3c0a35=this[_0x6ac7('0xb')]['exec'](_0x6ac7('0xac'),_0x2e4927);if(_0x3c0a35[_0x6ac7('0xa6')]===-0x1){return _0x3c0a35;}var _0x461d9f=this[_0x6ac7('0x9c')](_0x6ac7('0xc6'),_0x6ac7('0xcc'));if(_0x461d9f[_0x6ac7('0xa6')]===-0x1){return _0x461d9f;}var _0x3b67f4=this[_0x6ac7('0x9c')](_0x6ac7('0xc8'),_0x6ac7('0xcd'));if(_0x3b67f4[_0x6ac7('0xa6')]===-0x1){return _0x3b67f4;}var _0x1cee3d=this[_0x6ac7('0x9c')](_0x6ac7('0xc9'),'SESTEK_ASR_INSTANCE');if(_0x1cee3d[_0x6ac7('0xa6')]===-0x1){return _0x1cee3d;}return this[_0x6ac7('0xb')]['noop'](util['format']('Executed\x20command\x20MRCPRecog\x20%s',_0x2e4927));};AGIVertices[_0x6ac7('0xd')]['database']=function(_0x468242){logger[_0x6ac7('0x2a')](util[_0x6ac7('0x4f')](_0x6ac7('0xce'),_0x468242[_0x6ac7('0x33')]));if(!this[_0x6ac7('0x9e')](_0x468242[_0x6ac7('0xcf')])){return this[_0x6ac7('0xb')][_0x6ac7('0x28')](_0x468242,'no\x20database\x20selected');}var _0x234cd8=this[_0x6ac7('0xd0')][_0x6ac7('0x6d')](this,_0x468242[_0x6ac7('0xcf')]);if(!_0x234cd8){return this[_0x6ac7('0xb')][_0x6ac7('0x28')](_0x468242,_0x6ac7('0xd1'));}if(!this[_0x6ac7('0x9e')](_0x468242[_0x6ac7('0x2c')])){return this[_0x6ac7('0xb')][_0x6ac7('0x28')](_0x468242,'no\x20query\x20configured');}var _0x30b207=_0x468242['query'][_0x6ac7('0x55')](/(\r\n|\n|\r)/gm,'\x20');this[_0x6ac7('0xb')][_0x6ac7('0xa2')](util[_0x6ac7('0x4f')]('query:\x20%s',_0x30b207));var _0x3bd3a4=this[_0x6ac7('0x26')][_0x6ac7('0x6d')](this,_0x234cd8,_0x30b207);this['createSquareDetailsReport'][_0x6ac7('0x6d')](this,_0x468242,_0x30b207);if(!this[_0x6ac7('0x9e')](_0x468242[_0x6ac7('0xd2')])){return this[_0x6ac7('0xb')][_0x6ac7('0xa2')]('no\x20variable\x20selected\x20for\x20the\x20result');}var _0x27c4a2=this[_0x6ac7('0xe')][_0x6ac7('0x6d')](this,_0x468242[_0x6ac7('0xd2')]);if(!_0x27c4a2){return this[_0x6ac7('0xb')][_0x6ac7('0x28')](_0x468242,'no\x20variable\x20found');}var _0x54cc4d=this;_0x3bd3a4['forEach'](function(_0x471604,_0x2b201){Object[_0x6ac7('0xd3')](_0x471604)[_0x6ac7('0xd4')](function(_0x22682e){_0x54cc4d['channel'][_0x6ac7('0x96')](util[_0x6ac7('0x4f')](_0x6ac7('0xd5'),_0x27c4a2,_0x2b201,_0x22682e),_0x471604[_0x22682e]);});});this['channel']['setVariable'](util[_0x6ac7('0x4f')]('%s_ROWS_COUNT',_0x27c4a2),_0x3bd3a4[_0x6ac7('0x93')]);return this[_0x6ac7('0xb')][_0x6ac7('0xa2')](util['format'](_0x6ac7('0xd6'),_0x27c4a2));};AGIVertices['prototype']['dial']=function(_0x38b3d2){logger['debug'](util[_0x6ac7('0x4f')](_0x6ac7('0xd7'),_0x38b3d2['label']));if(!this[_0x6ac7('0x9e')](_0x38b3d2[_0x6ac7('0xd8')])){return this[_0x6ac7('0xb')]['error'](_0x38b3d2,_0x6ac7('0xd9'));}var _0x4d48b8=this['getUser'][_0x6ac7('0x6d')](this,_0x38b3d2[_0x6ac7('0xd8')]);if(!_0x4d48b8){return this[_0x6ac7('0xb')][_0x6ac7('0x28')](_0x38b3d2,_0x6ac7('0xda'));}var _0x1cfe7d=this[_0x6ac7('0xb')][_0x6ac7('0x53')](_0x6ac7('0xdb'),[util[_0x6ac7('0x4f')](_0x6ac7('0xdc'),_0x4d48b8),_0x38b3d2['timeout'],_0x38b3d2[_0x6ac7('0xdd')],_0x38b3d2[_0x6ac7('0x70')]]);if(_0x1cfe7d[_0x6ac7('0xa6')]===-0x1){return _0x1cfe7d;}return this['channel'][_0x6ac7('0xa2')](util[_0x6ac7('0x4f')](_0x6ac7('0xde'),_0x6ac7('0xdb')));};AGIVertices['prototype'][_0x6ac7('0xdf')]=function(_0x3838df){logger[_0x6ac7('0x2a')](util[_0x6ac7('0x4f')](_0x6ac7('0xe0'),_0x3838df['label']));if(!this['isConfigured'](_0x3838df[_0x6ac7('0x78')])){return this[_0x6ac7('0xb')][_0x6ac7('0xa2')](_0x6ac7('0xe1'));}if(!this['isConfigured'](_0x3838df['text'])){return this[_0x6ac7('0xb')][_0x6ac7('0xa2')](_0x6ac7('0xa3'));}this[_0x6ac7('0xb')][_0x6ac7('0xe2')]=!![];this[_0x6ac7('0x31')](_0x3838df);this[_0x6ac7('0x3c')](_0x3838df[_0x6ac7('0x58')],'in','','');this[_0x6ac7('0xb')]['noop'](util['format'](_0x6ac7('0xe3'),_0x3838df[_0x6ac7('0x58')]));var _0x4f3cf8=this[_0x6ac7('0x77')][_0x6ac7('0x6d')](this,_0x3838df);if(_0x4f3cf8){for(var _0x47cb40 in _0x4f3cf8){if(_0x4f3cf8[_0x6ac7('0x95')](_0x47cb40)){this[_0x6ac7('0xb')][_0x6ac7('0x96')](util[_0x6ac7('0x4f')](_0x6ac7('0xe4'),_0x47cb40[_0x6ac7('0x64')]()),_0x4f3cf8[_0x47cb40]);}}this[_0x6ac7('0x3c')](_0x4f3cf8[_0x6ac7('0xe5')],_0x6ac7('0xe6'),_0x6ac7('0xdf'),'');return this[_0x6ac7('0xb')]['noop'](util[_0x6ac7('0x4f')](_0x6ac7('0xe7'),_0x4f3cf8['speech']));}return this['channel'][_0x6ac7('0x28')](_0x3838df,_0x6ac7('0xe8'));};AGIVertices['prototype'][_0x6ac7('0xe9')]=function(_0x3009ec){logger[_0x6ac7('0x2a')](util[_0x6ac7('0x4f')](_0x6ac7('0xea'),_0x3009ec['label']));if(!this[_0x6ac7('0x9e')](_0x3009ec[_0x6ac7('0x7b')])){return this[_0x6ac7('0xb')][_0x6ac7('0xa2')](_0x6ac7('0xeb'));}if(!this[_0x6ac7('0x9e')](_0x3009ec['client_email'])){return this[_0x6ac7('0xb')][_0x6ac7('0xa2')](_0x6ac7('0xec'));}if(!this['isConfigured'](_0x3009ec[_0x6ac7('0x7c')])){return this[_0x6ac7('0xb')][_0x6ac7('0xa2')](_0x6ac7('0xed'));}if(!this[_0x6ac7('0x9e')](_0x3009ec[_0x6ac7('0x7d')])){return this[_0x6ac7('0xb')][_0x6ac7('0xa2')]('no\x20anguage\x20configured');}if(!this[_0x6ac7('0x9e')](_0x3009ec[_0x6ac7('0x58')])){return this[_0x6ac7('0xb')][_0x6ac7('0xa2')](_0x6ac7('0xa3'));}this[_0x6ac7('0xb')][_0x6ac7('0xe2')]=!![];this[_0x6ac7('0x31')](_0x3009ec);this[_0x6ac7('0x3c')](_0x3009ec[_0x6ac7('0x58')],'in','','');this[_0x6ac7('0xb')][_0x6ac7('0xa2')](util[_0x6ac7('0x4f')]('Trying\x20DialogflowV2:\x20%s',_0x3009ec[_0x6ac7('0x58')]));var _0x34f08a=this[_0x6ac7('0x7a')][_0x6ac7('0x6d')](this,_0x3009ec);if(_0x34f08a){for(var _0x19bdc8 in _0x34f08a){if(_0x34f08a[_0x6ac7('0x95')](_0x19bdc8)){if(_0x19bdc8!=='providerResponse'){this[_0x6ac7('0xb')][_0x6ac7('0x96')](util[_0x6ac7('0x4f')]('DIALOGFLOW_%s',_0x19bdc8[_0x6ac7('0x64')]()),_0x34f08a[_0x19bdc8]);}}}this['createSquareMessage'](_0x34f08a['speech'],_0x6ac7('0xe6'),_0x6ac7('0xe9'),_0x34f08a['providerResponse']);return this[_0x6ac7('0xb')][_0x6ac7('0xa2')](util[_0x6ac7('0x4f')](_0x6ac7('0xee'),_0x34f08a[_0x6ac7('0xe5')]));}return this[_0x6ac7('0xb')][_0x6ac7('0x28')](_0x3009ec,_0x6ac7('0xef'));};AGIVertices['prototype'][_0x6ac7('0xf0')]=function(_0x32bf5d){logger[_0x6ac7('0x2a')](util[_0x6ac7('0x4f')](_0x6ac7('0xf1'),_0x32bf5d['label']));if(!this[_0x6ac7('0x9e')](_0x32bf5d[_0x6ac7('0xf2')])){return this[_0x6ac7('0xb')][_0x6ac7('0xa2')]('no\x20ndauth\x20url\x20configured');}if(!this[_0x6ac7('0x9e')](_0x32bf5d[_0x6ac7('0xf3')])){return this['channel']['noop'](_0x6ac7('0xf4'));}if(!this[_0x6ac7('0x9e')](_0x32bf5d[_0x6ac7('0xf5')])){return this[_0x6ac7('0xb')][_0x6ac7('0xa2')](_0x6ac7('0xf6'));}if(!this[_0x6ac7('0x9e')](_0x32bf5d['ndassistant_url'])){return this[_0x6ac7('0xb')][_0x6ac7('0xa2')](_0x6ac7('0xa3'));}this['channel'][_0x6ac7('0xe2')]=!![];this[_0x6ac7('0x31')](_0x32bf5d);this[_0x6ac7('0x3c')](_0x32bf5d[_0x6ac7('0x58')],'in','','');this[_0x6ac7('0xb')]['noop'](util[_0x6ac7('0x4f')](_0x6ac7('0xf7'),_0x32bf5d[_0x6ac7('0x58')]));var _0x56ff83=this[_0x6ac7('0x7e')][_0x6ac7('0x6d')](this,_0x32bf5d);if(_0x56ff83){for(var _0x377296 in _0x56ff83){if(_0x56ff83[_0x6ac7('0x95')](_0x377296)){this[_0x6ac7('0xb')][_0x6ac7('0x96')](util[_0x6ac7('0x4f')](_0x6ac7('0xf8'),_0x377296[_0x6ac7('0x64')]()),_0x56ff83[_0x377296]);}}this[_0x6ac7('0x3c')](_0x56ff83['speech'],_0x6ac7('0xe6'),_0x6ac7('0xf0'),'');if(_0x56ff83[_0x6ac7('0xf9')]){this['channel'][_0x6ac7('0xa2')](util[_0x6ac7('0x4f')](_0x6ac7('0xfa'),_0x56ff83[_0x6ac7('0xf9')]));var _0x358a9d=this[_0x6ac7('0xb')][_0x6ac7('0xfb')](_0x56ff83[_0x6ac7('0xf9')]);try{fs[_0x6ac7('0xfc')](_0x56ff83[_0x6ac7('0xf9')]+_0x6ac7('0xfd'));}catch(_0x51dddd){logger[_0x6ac7('0x28')](_0x51dddd);}return _0x358a9d;}else{return this['channel'][_0x6ac7('0xa2')](util[_0x6ac7('0x4f')](_0x6ac7('0xfe'),_0x56ff83[_0x6ac7('0xe5')]));}}return this[_0x6ac7('0xb')]['error'](_0x32bf5d,_0x6ac7('0xff'));};AGIVertices[_0x6ac7('0xd')][_0x6ac7('0x100')]=function(_0x4b2ca6){logger['info'](util[_0x6ac7('0x4f')](_0x6ac7('0x101'),_0x4b2ca6[_0x6ac7('0x33')]));return this['channel'][_0x6ac7('0xa2')](_0x6ac7('0x100'));};AGIVertices[_0x6ac7('0xd')][_0x6ac7('0x102')]=function(_0x46445c){logger['info'](util[_0x6ac7('0x4f')](_0x6ac7('0x103'),_0x46445c['label']));var _0x3c5961='';if(_0x46445c[_0x6ac7('0x104')]){if(!this[_0x6ac7('0x9e')](_0x46445c[_0x6ac7('0x104')])){return this[_0x6ac7('0xb')][_0x6ac7('0x28')](_0x46445c,_0x6ac7('0x105'));}else{var _0x55bbb0=parseInt(_0x46445c['trunk_id'],0xa);if(isNaN(_0x55bbb0)){_0x3c5961=_0x46445c['trunk_id'];}else{_0x3c5961=this['getTrunk'][_0x6ac7('0x6d')](this,_0x46445c[_0x6ac7('0x104')]);if(!_0x3c5961){return this[_0x6ac7('0xb')][_0x6ac7('0x28')](_0x46445c,'no\x20trunk\x20found');}}}}else if(_0x46445c['trunk_name']){_0x3c5961=_0x46445c[_0x6ac7('0x106')];}else{return this[_0x6ac7('0xb')][_0x6ac7('0x28')](_0x46445c,'no\x20trunk\x20selected');}var _0x42f390=this['channel'][_0x6ac7('0x53')](_0x6ac7('0xdb'),[util[_0x6ac7('0x4f')](_0x6ac7('0x107'),_0x3c5961,_0x46445c[_0x6ac7('0x42')]),_0x46445c[_0x6ac7('0x5f')],_0x46445c[_0x6ac7('0xdd')],_0x46445c[_0x6ac7('0x70')]]);if(_0x42f390[_0x6ac7('0xa6')]===-0x1){return _0x42f390;}return this['channel'][_0x6ac7('0xa2')](util[_0x6ac7('0x4f')]('Executed\x20command\x20%s',_0x6ac7('0xdb')));};AGIVertices[_0x6ac7('0xd')][_0x6ac7('0x108')]=function(_0x46007d){logger[_0x6ac7('0x2a')](util[_0x6ac7('0x4f')](_0x6ac7('0x109'),_0x46007d['label']));return this[_0x6ac7('0xb')][_0x6ac7('0xa2')](_0x6ac7('0x108'));};AGIVertices['prototype'][_0x6ac7('0x9')]=function(_0x3be5b4){logger['info'](util['format'](_0x6ac7('0x10a'),_0x3be5b4[_0x6ac7('0x33')]));if(_0x3be5b4[_0x6ac7('0xa0')]===0x0){return this['maxRetry'](_0x3be5b4);}_0x3be5b4[_0x6ac7('0xa0')]-=0x1;if(!this[_0x6ac7('0x9e')](_0x3be5b4[_0x6ac7('0x10b')])){return this[_0x6ac7('0xb')]['error'](_0x3be5b4,_0x6ac7('0x10c'));}var _0x54ca48=this['getSound']['sync'](this,_0x3be5b4[_0x6ac7('0x10b')]);if(!_0x54ca48){return this[_0x6ac7('0xb')][_0x6ac7('0x28')](_0x3be5b4,_0x6ac7('0x10d'));}if(!this[_0x6ac7('0x9e')](_0x3be5b4['variable_id'])){return this['channel'][_0x6ac7('0x28')](_0x6ac7('0x10e'));}var _0x59fd61=this['channel'][_0x6ac7('0x10f')](_0x54ca48,_0x3be5b4[_0x6ac7('0x110')],_0x3be5b4[_0x6ac7('0x111')]);var _0x8afaea=_0x59fd61[_0x6ac7('0xa6')]?_0x59fd61[_0x6ac7('0xa6')][_0x6ac7('0x46')]():'';logger[_0x6ac7('0x2a')](_0x6ac7('0x112'),JSON[_0x6ac7('0x71')](_0x59fd61));if(_0x59fd61['result']===-0x1){this[_0x6ac7('0x31')][_0x6ac7('0x6d')](this,_0x3be5b4,_0x8afaea);return _0x59fd61;}else if(_0x59fd61[_0x6ac7('0x9b')]===_0x6ac7('0x5f')){_0x59fd61[_0x6ac7('0xa6')]=_0x8afaea['length']>=parseInt(_0x3be5b4[_0x6ac7('0x113')])?'x':'i';}else{_0x59fd61[_0x6ac7('0xa6')]=_0x8afaea[_0x6ac7('0x93')]>=parseInt(_0x3be5b4[_0x6ac7('0x113')])&&_0x8afaea[_0x6ac7('0x93')]<=parseInt(_0x3be5b4[_0x6ac7('0x111')])?'x':'i';}var _0x282cf3=this[_0x6ac7('0xe')][_0x6ac7('0x6d')](this,_0x3be5b4['variable_id']);if(!_0x282cf3){return this[_0x6ac7('0xb')][_0x6ac7('0x28')](_0x3be5b4,'no\x20variable\x20found');}this[_0x6ac7('0xb')][_0x6ac7('0x96')](_0x282cf3,_0x8afaea);if(this[_0x6ac7('0x9e')](_0x3be5b4[_0x6ac7('0x114')])){var _0x260904=parseInt(_0x3be5b4[_0x6ac7('0x114')],0xa);var _0x3e7824=rs[_0x6ac7('0x115')]({'charset':'*','length':_0x260904});var _0x185836=_0x8afaea['length'];if(_0x185836>0x0){if(_0x185836>_0x260904){this[_0x6ac7('0x31')]['sync'](this,_0x3be5b4,_0x3be5b4[_0x6ac7('0x116')]===_0x6ac7('0x117')?_0x3e7824+_0x8afaea[_0x6ac7('0x118')](_0x260904):_0x8afaea[_0x6ac7('0x118')](0x0,_0x185836-_0x260904)+_0x3e7824);}else{this[_0x6ac7('0x31')][_0x6ac7('0x6d')](this,_0x3be5b4,rs[_0x6ac7('0x115')]({'charset':'*','length':_0x185836}));}}else{this[_0x6ac7('0x31')][_0x6ac7('0x6d')](this,_0x3be5b4,'');}}else{this[_0x6ac7('0x31')][_0x6ac7('0x6d')](this,_0x3be5b4,_0x8afaea);}return _0x59fd61;};AGIVertices[_0x6ac7('0xd')][_0x6ac7('0xa')]=function(_0x2dda2e){logger[_0x6ac7('0x2a')](util[_0x6ac7('0x4f')](_0x6ac7('0x119'),_0x2dda2e['label']));return this['getdigits'](_0x2dda2e);};AGIVertices[_0x6ac7('0xd')][_0x6ac7('0x11a')]=function(_0x128f50){logger[_0x6ac7('0x2a')](util[_0x6ac7('0x4f')](_0x6ac7('0x11b'),_0x128f50[_0x6ac7('0x33')]));this[_0x6ac7('0x31')]['sync'](this,_0x128f50,_0x128f50['goalname']);return this[_0x6ac7('0xb')]['noop'](util[_0x6ac7('0x4f')](_0x6ac7('0x11c'),_0x128f50[_0x6ac7('0x11d')]));};AGIVertices[_0x6ac7('0xd')]['awspolly']=function(_0x5b11f1){logger[_0x6ac7('0x2a')](util[_0x6ac7('0x4f')](_0x6ac7('0x11e'),_0x5b11f1[_0x6ac7('0x33')]));if(!this[_0x6ac7('0x9e')](_0x5b11f1['aws_access_key_id'])||!this[_0x6ac7('0x9e')](_0x5b11f1[_0x6ac7('0x11f')])){return this[_0x6ac7('0xb')][_0x6ac7('0xa2')](_0x6ac7('0x120'));}if(!this['isConfigured'](_0x5b11f1['text'])){return this[_0x6ac7('0xb')][_0x6ac7('0xa2')]('no\x20text\x20configured');}this[_0x6ac7('0xb')][_0x6ac7('0xa2')](util[_0x6ac7('0x4f')]('Trying\x20aws\x20Polly\x20%s',_0x5b11f1['text']));var _0x5939e5=this['awsPolly'][_0x6ac7('0x6d')](this,_0x5b11f1);if(_0x5939e5){this[_0x6ac7('0xb')][_0x6ac7('0xa2')](util[_0x6ac7('0x4f')](_0x6ac7('0x121'),_0x5939e5));var _0x5e0654=this[_0x6ac7('0xb')][_0x6ac7('0xfb')](_0x5939e5);try{fs[_0x6ac7('0xfc')](_0x5939e5+_0x6ac7('0xfd'));}catch(_0x23db59){logger[_0x6ac7('0x28')](_0x23db59);}return _0x5e0654;}return this[_0x6ac7('0xb')]['error'](_0x5b11f1,_0x6ac7('0x122'));};AGIVertices[_0x6ac7('0xd')][_0x6ac7('0x123')]=function(_0x9c440a){logger[_0x6ac7('0x2a')](util['format'](_0x6ac7('0x124'),_0x9c440a['label']));if(!this['isConfigured'](_0x9c440a[_0x6ac7('0x86')])||!this[_0x6ac7('0x9e')](_0x9c440a['aws_secret_access_key'])){return this[_0x6ac7('0xb')][_0x6ac7('0xa2')](_0x6ac7('0x120'));}if(!this[_0x6ac7('0x9e')](_0x9c440a[_0x6ac7('0x125')])){return this[_0x6ac7('0xb')]['noop'](_0x6ac7('0x126'));}if(!this['isConfigured'](_0x9c440a['text'])){return this[_0x6ac7('0xb')][_0x6ac7('0xa2')](_0x6ac7('0xa3'));}this[_0x6ac7('0xb')][_0x6ac7('0xe2')]=!![];this[_0x6ac7('0x31')](_0x9c440a);this[_0x6ac7('0x3c')](_0x9c440a[_0x6ac7('0x58')],'in','','');this[_0x6ac7('0xb')][_0x6ac7('0xa2')](util[_0x6ac7('0x4f')](_0x6ac7('0x127'),_0x9c440a['text']));var _0xabe04c=this['awsLex']['sync'](this,_0x9c440a);if(_0xabe04c){for(var _0x12c48a in _0xabe04c){if(_0xabe04c[_0x6ac7('0x95')](_0x12c48a)&&_[_0x6ac7('0x8e')](_0xabe04c[_0x12c48a])){this['channel'][_0x6ac7('0x96')](util['format'](_0x6ac7('0x128'),_0x12c48a[_0x6ac7('0x64')]()),_0xabe04c[_0x12c48a]);}}if(_['isNil'](_0xabe04c[_0x6ac7('0x75')])){return this[_0x6ac7('0xb')][_0x6ac7('0xa2')](_0x6ac7('0x129'));}else{this[_0x6ac7('0x3c')](_0xabe04c[_0x6ac7('0x75')],_0x6ac7('0xe6'),_0x6ac7('0x12a'),'');return this[_0x6ac7('0xb')]['noop'](util[_0x6ac7('0x4f')](_0x6ac7('0x12b'),_0xabe04c['message']));}}return this['channel']['error'](_0x9c440a,'Amazon\x20Lex\x20is\x20unreachable');};AGIVertices[_0x6ac7('0xd')]['googleasr']=function(_0x399708){logger[_0x6ac7('0x2a')](util['format'](_0x6ac7('0x12c'),_0x399708['label'],_0x399708[_0x6ac7('0x5f')]));if(!this[_0x6ac7('0x9e')](_0x399708['key'])){return this['channel'][_0x6ac7('0xa2')](_0x6ac7('0xe1'));}var _0x465b22=_0x6ac7('0x12d');var _0x41c427=util[_0x6ac7('0x4f')]('%s/recordings/%s',FILES_PATH,rs[_0x6ac7('0x115')](0x4));var _0x52b10e=util['format'](_0x6ac7('0x97'),_0x41c427,_0x465b22);var _0x136b53=!![];if(_0x399708[_0x6ac7('0x12e')]===_0x6ac7('0x12f')){_0x136b53=![];}var _0x4a5292=this[_0x6ac7('0xb')][_0x6ac7('0x130')](_0x41c427,_0x465b22,_0x399708['intKey'],_0x399708['timeout'],undefined,_0x136b53);if(_0x4a5292[_0x6ac7('0xa6')]!==-0x1){this[_0x6ac7('0xb')][_0x6ac7('0xa2')](util[_0x6ac7('0x4f')](_0x6ac7('0x131'),_0x52b10e));var _0x317521=this[_0x6ac7('0x89')][_0x6ac7('0x6d')](this,_0x399708,_0x52b10e);if(_0x317521){for(var _0x3a4215 in _0x317521){if(_0x317521[_0x6ac7('0x95')](_0x3a4215)){this[_0x6ac7('0xb')][_0x6ac7('0x96')](util[_0x6ac7('0x4f')](_0x6ac7('0x132'),_0x3a4215[_0x6ac7('0x64')]()),_0x317521[_0x3a4215]);}}return this[_0x6ac7('0xb')]['noop'](util['format'](_0x6ac7('0x133'),JSON[_0x6ac7('0x71')](_0x317521)));}}return _0x4a5292;};AGIVertices[_0x6ac7('0xd')][_0x6ac7('0x134')]=function(_0x3ce9c8){logger[_0x6ac7('0x2a')](util[_0x6ac7('0x4f')](_0x6ac7('0x135'),_0x3ce9c8[_0x6ac7('0x33')]));if(!this['isConfigured'](_0x3ce9c8[_0x6ac7('0x136')])){return this[_0x6ac7('0xb')][_0x6ac7('0xa2')](_0x6ac7('0x137'));}if(!this[_0x6ac7('0x9e')](_0x3ce9c8[_0x6ac7('0x8b')])){return this[_0x6ac7('0xb')]['noop'](_0x6ac7('0x138'));}var _0x452c8b='wav';var _0x208d1e=util['format']('%s/recordings/%s',FILES_PATH,rs[_0x6ac7('0x115')](0x4));var _0x185395=util[_0x6ac7('0x4f')](_0x6ac7('0x97'),_0x208d1e,_0x452c8b);var _0x5f2102=!![];if(_0x3ce9c8[_0x6ac7('0x12e')]===_0x6ac7('0x12f')){_0x5f2102=![];}var _0x51983e=this[_0x6ac7('0xb')][_0x6ac7('0x130')](_0x208d1e,_0x452c8b,_0x3ce9c8['intKey'],_0x3ce9c8[_0x6ac7('0x5f')],undefined,_0x5f2102);if(_0x51983e[_0x6ac7('0xa6')]!==-0x1){this[_0x6ac7('0xb')][_0x6ac7('0xa2')](util[_0x6ac7('0x4f')](_0x6ac7('0x139'),_0x185395));var _0x108a1c=this[_0x6ac7('0x8a')][_0x6ac7('0x6d')](this,_0x3ce9c8,_0x185395);if(_0x108a1c){for(var _0x2f57c1 in _0x108a1c){if(_0x108a1c[_0x6ac7('0x95')](_0x2f57c1)){this[_0x6ac7('0xb')][_0x6ac7('0x96')](util['format'](_0x6ac7('0x13a'),_0x2f57c1[_0x6ac7('0x64')]()),_0x108a1c[_0x2f57c1]);}}return this['channel'][_0x6ac7('0xa2')](util[_0x6ac7('0x4f')](_0x6ac7('0x13b'),JSON[_0x6ac7('0x71')](_0x108a1c)));}}return _0x51983e;};AGIVertices[_0x6ac7('0xd')][_0x6ac7('0x13c')]=function(_0x51bdda){logger[_0x6ac7('0x2a')](util[_0x6ac7('0x4f')](_0x6ac7('0x13d'),_0x51bdda[_0x6ac7('0x33')]));return this[_0x6ac7('0xb')][_0x6ac7('0x13e')](_0x51bdda[_0x6ac7('0x13f')],_0x51bdda[_0x6ac7('0x38')],_0x51bdda[_0x6ac7('0x39')]);};AGIVertices['prototype'][_0x6ac7('0x140')]=function(_0x557b8d){logger[_0x6ac7('0x2a')](util[_0x6ac7('0x4f')](_0x6ac7('0x141'),_0x557b8d[_0x6ac7('0x33')]));if(!this['isConfigured'](_0x557b8d[_0x6ac7('0x142')])){return this[_0x6ac7('0xb')][_0x6ac7('0x28')](_0x557b8d,_0x6ac7('0x143'));}try{var _0x5d18e5=eval(_0x557b8d[_0x6ac7('0x142')])?_0x6ac7('0x144'):'false';this[_0x6ac7('0xb')]['noop'](util[_0x6ac7('0x4f')](_0x6ac7('0x145'),_0x557b8d['condition'],_0x5d18e5));return{'code':0xc8,'result':_0x5d18e5};}catch(_0x1c11f6){return{'code':0xc8,'result':_0x6ac7('0x146')};}};AGIVertices['prototype'][_0x6ac7('0x147')]=function(_0x1e57eb){logger[_0x6ac7('0x2a')](util[_0x6ac7('0x4f')](_0x6ac7('0x148'),_0x1e57eb[_0x6ac7('0x33')]));if(!this[_0x6ac7('0x9e')](_0x1e57eb['interval_id'])){return this[_0x6ac7('0xb')]['error'](_0x1e57eb,'no\x20interval\x20configured');}var _0x260903=this[_0x6ac7('0x1f')][_0x6ac7('0x6d')](this,_0x1e57eb[_0x6ac7('0x149')]);if(!_0x260903){return this['channel'][_0x6ac7('0x28')](_0x1e57eb,_0x6ac7('0x14a'));}for(var _0x84ee5f=0x0;_0x84ee5f<_0x260903[_0x6ac7('0x93')];_0x84ee5f+=0x1){var _0x2a1eb2=this[_0x6ac7('0xb')][_0x6ac7('0xe')](util[_0x6ac7('0x4f')]('IFTIME(%s?true:false)',_0x260903[_0x84ee5f]));if(_0x2a1eb2[_0x6ac7('0xa6')]===-0x1){return _0x2a1eb2;}logger[_0x6ac7('0x2a')](util[_0x6ac7('0x4f')](_0x6ac7('0x14b'),_0x260903[_0x84ee5f],_0x2a1eb2[_0x6ac7('0x9b')]));if(_0x2a1eb2[_0x6ac7('0x9b')]===_0x6ac7('0x144')){logger[_0x6ac7('0x2a')](util['format']('IFTIME\x20%s\x20%s',_0x260903[_0x84ee5f],_0x6ac7('0x144')));this[_0x6ac7('0xb')][_0x6ac7('0xa2')](util[_0x6ac7('0x4f')](_0x6ac7('0x14b'),_0x260903[_0x84ee5f],'true'));return{'code':0xc8,'result':_0x6ac7('0x144')};}else{logger['info'](util[_0x6ac7('0x4f')](_0x6ac7('0x14b'),_0x260903[_0x84ee5f],_0x6ac7('0x146')));this[_0x6ac7('0xb')][_0x6ac7('0xa2')](util['format'](_0x6ac7('0x14b'),_0x260903[_0x84ee5f],_0x6ac7('0x146')));}}return{'code':0xc8,'result':_0x6ac7('0x146')};};AGIVertices['prototype'][_0x6ac7('0x14c')]=function(_0x1f96e4){logger['info'](util['format'](_0x6ac7('0x14d'),_0x1f96e4[_0x6ac7('0x33')]));return this['channel'][_0x6ac7('0x14c')]();};AGIVertices[_0x6ac7('0xd')][_0x6ac7('0x14e')]=function(_0x28a430){logger['info'](util[_0x6ac7('0x4f')]('Enter\x20in\x20ISPEECHASR\x20(%s)\x20block',_0x28a430[_0x6ac7('0x33')]));if(!this['isConfigured'](_0x28a430[_0x6ac7('0x78')])){return this[_0x6ac7('0xb')][_0x6ac7('0xa2')](_0x6ac7('0xe1'));}var _0x5f1978='wav';var _0x2e5067=util[_0x6ac7('0x4f')](_0x6ac7('0x14f'),FILES_PATH,rs['generate'](0x4));var _0x414534=util[_0x6ac7('0x4f')]('%s.%s',_0x2e5067,_0x5f1978);var _0x5081f5=!![];if(_0x28a430[_0x6ac7('0x12e')]===_0x6ac7('0x12f')){_0x5081f5=![];}var _0xa86daf=this[_0x6ac7('0xb')][_0x6ac7('0x130')](_0x2e5067,_0x5f1978,_0x28a430['intKey'],_0x28a430[_0x6ac7('0x5f')],undefined,_0x5081f5);if(_0xa86daf[_0x6ac7('0xa6')]!==-0x1){this[_0x6ac7('0xb')][_0x6ac7('0xa2')](util[_0x6ac7('0x4f')](_0x6ac7('0x150'),_0x414534));var _0x11e4fc=this[_0x6ac7('0x83')][_0x6ac7('0x6d')](this,_0x28a430,_0x414534);if(_0x11e4fc){for(var _0xf39dd7 in _0x11e4fc){if(_0x11e4fc['hasOwnProperty'](_0xf39dd7)){this[_0x6ac7('0xb')][_0x6ac7('0x96')](util[_0x6ac7('0x4f')](_0x6ac7('0x151'),_0xf39dd7[_0x6ac7('0x64')]()),_0x11e4fc[_0xf39dd7]);}}return this[_0x6ac7('0xb')]['noop'](util[_0x6ac7('0x4f')](_0x6ac7('0x152'),JSON[_0x6ac7('0x71')](_0x11e4fc)));}}return _0xa86daf;};AGIVertices['prototype']['ispeechtts']=function(_0x80f8c9){logger['info'](util[_0x6ac7('0x4f')](_0x6ac7('0x153'),_0x80f8c9[_0x6ac7('0x33')]));if(!this[_0x6ac7('0x9e')](_0x80f8c9[_0x6ac7('0x78')])){return this[_0x6ac7('0xb')][_0x6ac7('0xa2')](_0x6ac7('0xe1'));}if(!this[_0x6ac7('0x9e')](_0x80f8c9[_0x6ac7('0x58')])){return this[_0x6ac7('0xb')][_0x6ac7('0xa2')]('no\x20text\x20configured');}this[_0x6ac7('0xb')][_0x6ac7('0xa2')](util[_0x6ac7('0x4f')](_0x6ac7('0x154'),_0x80f8c9[_0x6ac7('0x58')]));var _0x4aa0b8=this[_0x6ac7('0x7f')][_0x6ac7('0x6d')](this,_0x80f8c9);if(_0x4aa0b8){this[_0x6ac7('0xb')][_0x6ac7('0xa2')](util['format'](_0x6ac7('0x150'),_0x4aa0b8));var _0x2eefcb=this[_0x6ac7('0xb')][_0x6ac7('0xfb')](_0x4aa0b8,_0x80f8c9[_0x6ac7('0x155')]);try{fs[_0x6ac7('0xfc')](_0x4aa0b8+_0x6ac7('0xfd'));}catch(_0x3612c7){logger[_0x6ac7('0x28')](_0x3612c7);}return _0x2eefcb;}return this['channel'][_0x6ac7('0x28')](_0x80f8c9,_0x6ac7('0x156'));};AGIVertices['prototype']['login']=function(_0x2013c0){logger[_0x6ac7('0x2a')](util[_0x6ac7('0x4f')](_0x6ac7('0x157'),_0x2013c0['label']));if(!this['isConfigured'](_0x2013c0['findBy'])){return this[_0x6ac7('0xb')][_0x6ac7('0x28')](_0x2013c0,_0x6ac7('0x158'));}logger[_0x6ac7('0x2a')](util[_0x6ac7('0x4f')](_0x6ac7('0x159'),this['channel'][_0x6ac7('0x35')],_0x2013c0[_0x6ac7('0x15a')]));var _0x7d3125=this[_0x6ac7('0x4e')][_0x6ac7('0x6d')](this,_0x2013c0['findBy']);if(_0x7d3125){logger['info'](util[_0x6ac7('0x4f')](_0x6ac7('0x15b'),this[_0x6ac7('0xb')][_0x6ac7('0x35')],_0x2013c0[_0x6ac7('0x15a')]));this[_0x6ac7('0xb')][_0x6ac7('0xa2')](util[_0x6ac7('0x4f')]('AGENT\x20%s\x20FOUND\x20BY',this[_0x6ac7('0xb')][_0x6ac7('0x35')],_0x2013c0[_0x6ac7('0x15a')]));return{'code':0xc8,'result':_0x6ac7('0x15c')};}else{logger[_0x6ac7('0x2a')](util['format'](_0x6ac7('0x15d'),this[_0x6ac7('0xb')][_0x6ac7('0x35')],_0x2013c0[_0x6ac7('0x15a')]));this[_0x6ac7('0xb')]['noop'](util['format'](_0x6ac7('0x15d'),this[_0x6ac7('0xb')][_0x6ac7('0x35')],_0x2013c0[_0x6ac7('0x15a')]));return{'code':0xc8,'result':'failure'};}};AGIVertices['prototype'][_0x6ac7('0x15e')]=function(_0x2fbe1f){logger['info'](util[_0x6ac7('0x4f')](_0x6ac7('0x15f'),_0x2fbe1f[_0x6ac7('0x33')]));if(!this['isConfigured'](_0x2fbe1f[_0x6ac7('0x15a')])){return this[_0x6ac7('0xb')][_0x6ac7('0x28')](_0x2fbe1f,_0x6ac7('0x158'));}logger[_0x6ac7('0x2a')](util['format'](_0x6ac7('0x159'),this[_0x6ac7('0xb')][_0x6ac7('0x35')],_0x2fbe1f[_0x6ac7('0x15a')]));var _0x519f4d=this['agentLogout']['sync'](this,_0x2fbe1f[_0x6ac7('0x15a')]);if(_0x519f4d){logger[_0x6ac7('0x2a')](util[_0x6ac7('0x4f')](_0x6ac7('0x15b'),this[_0x6ac7('0xb')][_0x6ac7('0x35')],_0x2fbe1f['findBy']));this[_0x6ac7('0xb')]['noop'](util[_0x6ac7('0x4f')]('AGENT\x20%s\x20FOUND\x20BY',this[_0x6ac7('0xb')][_0x6ac7('0x35')],_0x2fbe1f[_0x6ac7('0x15a')]));return{'code':0xc8,'result':'success'};}else{logger['info'](util[_0x6ac7('0x4f')](_0x6ac7('0x15d'),this[_0x6ac7('0xb')][_0x6ac7('0x35')],_0x2fbe1f['findBy']));this[_0x6ac7('0xb')][_0x6ac7('0xa2')](util['format']('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0x6ac7('0xb')][_0x6ac7('0x35')],_0x2fbe1f[_0x6ac7('0x15a')]));return{'code':0xc8,'result':_0x6ac7('0x160')};}};AGIVertices[_0x6ac7('0xd')]['math']=function(_0x7f40cf){logger[_0x6ac7('0x2a')](util[_0x6ac7('0x4f')]('Enter\x20in\x20MATH\x20(%s)\x20block',_0x7f40cf['label']));if(!this[_0x6ac7('0x9e')](_0x7f40cf['operation'])){return this['channel'][_0x6ac7('0x28')](_0x7f40cf,_0x6ac7('0x161'));}this[_0x6ac7('0xb')][_0x6ac7('0xa2')](util[_0x6ac7('0x4f')](_0x6ac7('0x162'),_0x7f40cf['operation']));var _0x57892a=eval(_0x7f40cf['operation']);if(!this[_0x6ac7('0x9e')](_0x7f40cf['variable_id'])){return this[_0x6ac7('0xb')]['noop'](_0x6ac7('0x10e'));}var _0x558c38=this['getVariable'][_0x6ac7('0x6d')](this,_0x7f40cf[_0x6ac7('0xd2')]);if(!_0x558c38){return this[_0x6ac7('0xb')]['error'](_0x7f40cf,_0x6ac7('0x163'));}if(_[_0x6ac7('0x92')](_0x57892a)){var _0x5132cc=this;_0x57892a[_0x6ac7('0xd4')](function(_0x45fc6b,_0x1e45fa){_0x5132cc['channel'][_0x6ac7('0x96')](util[_0x6ac7('0x4f')](_0x6ac7('0x164'),_0x558c38,_0x1e45fa),_0x45fc6b);});return this[_0x6ac7('0xb')][_0x6ac7('0xa2')](util['format']('variable\x20%s[key]\x20set',_0x558c38));}else{return this['channel'][_0x6ac7('0x96')](_0x558c38,_0x57892a);}};AGIVertices[_0x6ac7('0xd')][_0x6ac7('0x165')]=function(_0x308056){logger['info'](util['format'](_0x6ac7('0x166'),_0x308056['label']));if(_0x308056['retry']===0x0){return this[_0x6ac7('0x9f')](_0x308056);}_0x308056[_0x6ac7('0xa0')]-=0x1;if(!this[_0x6ac7('0x9e')](_0x308056[_0x6ac7('0x10b')])){return this['channel'][_0x6ac7('0x28')](_0x308056,_0x6ac7('0x10c'));}var _0x5d0b43=this[_0x6ac7('0x167')][_0x6ac7('0x6d')](this,_0x308056[_0x6ac7('0x10b')]);if(!_0x5d0b43){return this[_0x6ac7('0xb')]['error'](_0x308056,'no\x20file\x20audio\x20found');}var _0x3ef6e8=this['channel'][_0x6ac7('0x10f')](_0x5d0b43,_0x308056[_0x6ac7('0x110')],_0x308056['digit']);var _0x4fc476=_0x3ef6e8[_0x6ac7('0xa6')];if(_0x3ef6e8[_0x6ac7('0xa6')]===-0x1){this[_0x6ac7('0x31')][_0x6ac7('0x6d')](this,_0x308056,'-1');return _0x3ef6e8;}else if(_0x3ef6e8[_0x6ac7('0x9b')]==='timeout'){_0x3ef6e8[_0x6ac7('0xa6')]=_0x3ef6e8[_0x6ac7('0xa6')][_0x6ac7('0x93')]>0x0?_0x3ef6e8[_0x6ac7('0xa6')]:'t';}else if(_[_0x6ac7('0x3e')](_0x3ef6e8[_0x6ac7('0xa6')])){_0x3ef6e8[_0x6ac7('0xa6')]='#';_0x4fc476='#';}if(!this[_0x6ac7('0x9e')](_0x308056['variable_id'])){this['channel'][_0x6ac7('0xa2')]('no\x20variable\x20selected\x20for\x20the\x20result');}else{var _0x481a7b=this[_0x6ac7('0xe')][_0x6ac7('0x6d')](this,_0x308056[_0x6ac7('0xd2')]);if(!_0x481a7b){return this[_0x6ac7('0xb')][_0x6ac7('0x28')](_0x308056,_0x6ac7('0x163'));}this['channel'][_0x6ac7('0x96')](_0x481a7b,_0x4fc476);}this['createSquareDetailsReport'][_0x6ac7('0x6d')](this,_0x308056,_0x4fc476);return _0x3ef6e8;};AGIVertices[_0x6ac7('0xd')][_0x6ac7('0xa2')]=function(_0x3b0f45){logger[_0x6ac7('0x2a')](util['format'](_0x6ac7('0x168'),_0x3b0f45[_0x6ac7('0x33')]));return this[_0x6ac7('0xb')]['noop'](_0x3b0f45['output']||_0x3b0f45[_0x6ac7('0x33')]);};AGIVertices['prototype'][_0x6ac7('0x169')]=function(_0x2b7747){logger[_0x6ac7('0x2a')](util['format'](_0x6ac7('0x16a'),_0x2b7747[_0x6ac7('0x33')]));if(!this[_0x6ac7('0x9e')](_0x2b7747[_0x6ac7('0x15a')])){return this['channel'][_0x6ac7('0x28')](_0x2b7747,_0x6ac7('0x158'));}logger[_0x6ac7('0x2a')](util[_0x6ac7('0x4f')]('FIND\x20AGENT\x20%s\x20BY\x20%s',this[_0x6ac7('0xb')][_0x6ac7('0x35')],_0x2b7747[_0x6ac7('0x15a')]));var _0x448951=this[_0x6ac7('0x48')]['sync'](this,_0x2b7747[_0x6ac7('0x16b')]);var _0x583d63=this[_0x6ac7('0x4a')]['sync'](this,_0x2b7747[_0x6ac7('0x15a')],_0x448951);if(_0x583d63){logger[_0x6ac7('0x2a')](util[_0x6ac7('0x4f')](_0x6ac7('0x15b'),this[_0x6ac7('0xb')][_0x6ac7('0x35')],_0x2b7747[_0x6ac7('0x15a')]));this[_0x6ac7('0xb')][_0x6ac7('0xa2')](util[_0x6ac7('0x4f')]('AGENT\x20%s\x20FOUND\x20BY',this[_0x6ac7('0xb')][_0x6ac7('0x35')],_0x2b7747['findBy']));return{'code':0xc8,'result':'success'};}else{logger[_0x6ac7('0x2a')](util[_0x6ac7('0x4f')](_0x6ac7('0x15d'),this[_0x6ac7('0xb')][_0x6ac7('0x35')],_0x2b7747['findBy']));this[_0x6ac7('0xb')][_0x6ac7('0xa2')](util[_0x6ac7('0x4f')](_0x6ac7('0x15b'),this[_0x6ac7('0xb')][_0x6ac7('0x35')],_0x2b7747[_0x6ac7('0x15a')]));return{'code':0xc8,'result':_0x6ac7('0x160')};}};AGIVertices[_0x6ac7('0xd')]['playback']=function(_0x1c4317){logger[_0x6ac7('0x2a')](util[_0x6ac7('0x4f')](_0x6ac7('0x16c'),_0x1c4317[_0x6ac7('0x33')]));if(!this[_0x6ac7('0x9e')](_0x1c4317[_0x6ac7('0x10b')])){return this[_0x6ac7('0xb')][_0x6ac7('0x28')](_0x1c4317,_0x6ac7('0x10c'));}var _0x515f6a=this[_0x6ac7('0x167')][_0x6ac7('0x6d')](this,_0x1c4317['file_id']);if(!_0x515f6a){return this[_0x6ac7('0xb')][_0x6ac7('0x28')](_0x1c4317,_0x6ac7('0x10d'));}var _0x56d501=this[_0x6ac7('0xb')][_0x6ac7('0x53')](_0x6ac7('0x16d'),[_0x515f6a,_0x1c4317[_0x6ac7('0xdd')]]);if(_0x56d501[_0x6ac7('0xa6')]===-0x1){return _0x56d501;}return this['channel'][_0x6ac7('0xa2')](util[_0x6ac7('0x4f')]('Executed\x20command\x20%s\x20%s','PLAYBACK',_0x515f6a));};AGIVertices[_0x6ac7('0xd')][_0x6ac7('0x16e')]=function(_0x4285c0){logger[_0x6ac7('0x2a')](util[_0x6ac7('0x4f')](_0x6ac7('0x16f'),_0x4285c0[_0x6ac7('0x33')]));if(!this[_0x6ac7('0x9e')](_0x4285c0[_0x6ac7('0x170')])){return this['channel'][_0x6ac7('0x28')](_0x4285c0,_0x6ac7('0x171'));}var _0x3be39c='';var _0xa42327=parseInt(_0x4285c0[_0x6ac7('0x170')],0xa);if(isNaN(_0xa42327)){_0x3be39c=_0x4285c0['queue_id'];}else{_0x3be39c=this[_0x6ac7('0x12')]['sync'](this,_0x4285c0[_0x6ac7('0x170')]);if(!_0x3be39c){return this[_0x6ac7('0xb')][_0x6ac7('0x28')](_0x4285c0,_0x6ac7('0x172'));}}var _0x1471eb='';if(this['isConfigured'](_0x4285c0['file_id'])){var _0xef4d54=this[_0x6ac7('0x167')][_0x6ac7('0x6d')](this,_0x4285c0[_0x6ac7('0x10b')]);if(_0xef4d54){_0x1471eb=_0xef4d54;}}this[_0x6ac7('0x31')][_0x6ac7('0x6d')](this,_0x4285c0,_0x3be39c);if(_0x4285c0['opts'][_0x6ac7('0x173')]('x')<0x0){_0x4285c0[_0x6ac7('0xdd')]+='x';}if(_0x4285c0[_0x6ac7('0xdd')][_0x6ac7('0x173')]('X')<0x0){_0x4285c0[_0x6ac7('0xdd')]+='X';}this[_0x6ac7('0xb')][_0x6ac7('0x96')](_0x6ac7('0x174'),_0x3be39c?_0x3be39c['toLowerCase']():'');var _0x40f9d6=this[_0x6ac7('0xb')][_0x6ac7('0x53')]('QUEUE',[_0x3be39c,_0x4285c0[_0x6ac7('0xdd')],_0x4285c0[_0x6ac7('0x70')],_0x1471eb,_0x4285c0[_0x6ac7('0x5f')],_0x4285c0['agi'],_0x4285c0['macro'],_0x4285c0[_0x6ac7('0x175')],'',_0x4285c0[_0x6ac7('0x176')]]);if(_0x40f9d6[_0x6ac7('0xa6')]===-0x1){return _0x40f9d6;}return this['channel']['noop'](util[_0x6ac7('0x4f')]('Executed\x20command\x20%s\x20%s',_0x6ac7('0x177'),_0x3be39c));};AGIVertices['prototype']['record']=function(_0x4a9b50){logger[_0x6ac7('0x2a')](util[_0x6ac7('0x4f')](_0x6ac7('0x178'),_0x4a9b50[_0x6ac7('0x33')]));var _0x512132=_0x4a9b50['recordingFormat']||_0x6ac7('0x12d');var _0x274d46=util['format'](_0x6ac7('0x179'),this[_0x6ac7('0xb')][_0x6ac7('0x32')],rs['generate'](0x5));var _0x57e23a=util[_0x6ac7('0x4f')](_0x6ac7('0x17a'),FILES_PATH,_0x274d46,_0x512132);var _0xf937db=util[_0x6ac7('0x4f')](_0x6ac7('0x14f'),FILES_PATH,_0x274d46);this['createSquareRecording'][_0x6ac7('0x6d')](this,_0x4a9b50,_0x274d46,_0x57e23a);this[_0x6ac7('0xb')][_0x6ac7('0x96')](_0x6ac7('0x17b'),_0x274d46);logger[_0x6ac7('0x2a')](_0x6ac7('0x17c'),_0xf937db,_0x512132,_0x4a9b50['escape_digits'],_0x4a9b50[_0x6ac7('0x5f')]);return this[_0x6ac7('0xb')][_0x6ac7('0x130')](_0xf937db,_0x512132,_0x4a9b50[_0x6ac7('0x17d')],_0x4a9b50[_0x6ac7('0x5f')],undefined,!![]);};AGIVertices[_0x6ac7('0xd')][_0x6ac7('0x17e')]=function(_0x28be46){logger[_0x6ac7('0x2a')](util['format'](_0x6ac7('0x17f'),_0x28be46[_0x6ac7('0x33')]));if(!this[_0x6ac7('0x9e')](_0x28be46['url'])){return this[_0x6ac7('0xb')][_0x6ac7('0xa2')](_0x6ac7('0x180'));}var _0x19ec7f=this[_0x6ac7('0x181')]['sync'](this,_0x28be46);logger[_0x6ac7('0x2a')](util[_0x6ac7('0x4f')]('Response:',util['inspect'](_0x19ec7f,{'showHidden':![],'depth':null})));if(!this[_0x6ac7('0x9e')](_0x28be46[_0x6ac7('0xd2')])){return this[_0x6ac7('0xb')][_0x6ac7('0xa2')](_0x6ac7('0x182'));}var _0x221057=this[_0x6ac7('0xe')]['sync'](this,_0x28be46[_0x6ac7('0xd2')]);if(!_0x221057){return this[_0x6ac7('0xb')][_0x6ac7('0x28')](_0x28be46,_0x6ac7('0x163'));}this[_0x6ac7('0xb')]['setVariable'](util[_0x6ac7('0x4f')]('%s_STATUS_CODE',_0x221057),_0x19ec7f[_0x6ac7('0x74')]?_0x19ec7f['statusCode']:_0x6ac7('0x183'));this[_0x6ac7('0xb')]['setVariable'](util['format'](_0x6ac7('0x184'),_0x221057),_0x19ec7f[_0x6ac7('0x73')]?_0x19ec7f[_0x6ac7('0x73')]:'OK');if(_0x19ec7f['body']){try{this[_0x6ac7('0x94')](_0x19ec7f[_0x6ac7('0x65')],_0x221057);}catch(_0x5b9064){logger[_0x6ac7('0x28')](util[_0x6ac7('0x4f')](_0x6ac7('0x185'),_0x221057));}}return this[_0x6ac7('0xb')][_0x6ac7('0xa2')](util['format'](_0x6ac7('0xd6'),_0x221057));};AGIVertices['prototype']['saydigits']=function(_0x33f081){logger['info'](util['format']('Enter\x20in\x20SAYDIGITS\x20(%s)\x20block',_0x33f081[_0x6ac7('0x33')]));return this[_0x6ac7('0xb')][_0x6ac7('0x186')](_0x33f081[_0x6ac7('0x187')][_0x6ac7('0x55')](/\s+/g,''),_0x33f081[_0x6ac7('0x17d')]);};AGIVertices['prototype']['saynumber']=function(_0x3f59bf){logger[_0x6ac7('0x2a')](util[_0x6ac7('0x4f')]('Enter\x20in\x20SAYNUMBER\x20(%s)\x20block',_0x3f59bf[_0x6ac7('0x33')]));return this['channel']['sayNumber'](_0x3f59bf[_0x6ac7('0x60')][_0x6ac7('0x55')](/\s+/g,''),_0x3f59bf[_0x6ac7('0x17d')]);};AGIVertices[_0x6ac7('0xd')][_0x6ac7('0x188')]=function(_0x59eb74){logger[_0x6ac7('0x2a')](util[_0x6ac7('0x4f')](_0x6ac7('0x189'),_0x59eb74[_0x6ac7('0x33')]));return this['channel'][_0x6ac7('0x18a')](_0x59eb74[_0x6ac7('0x58')],_0x59eb74['escape_digits']);};AGIVertices['prototype'][_0x6ac7('0x18b')]=function(_0x2dd91a){logger[_0x6ac7('0x2a')](util['format'](_0x6ac7('0x18c'),_0x2dd91a[_0x6ac7('0x33')]));if(!this[_0x6ac7('0x9e')](_0x2dd91a['account_id'])){return this[_0x6ac7('0xb')][_0x6ac7('0xa2')](_0x6ac7('0x18d'));}var _0x16769b=this[_0x6ac7('0x1d')]['sync'](this,_0x2dd91a[_0x6ac7('0x18e')]);if(!_0x16769b||!_0x16769b[_0x6ac7('0x18f')]){return this[_0x6ac7('0xb')][_0x6ac7('0x28')](_0x2dd91a,'no\x20mail\x20account\x20found');}var _0x2b77f2={'from':util['format'](_0x6ac7('0x190'),_0x16769b['name'],_0x16769b[_0x6ac7('0x191')]||_0x16769b[_0x6ac7('0x18f')][_0x6ac7('0x192')]),'to':_0x2dd91a['to']||'','cc':_0x2dd91a['cc']||'','bcc':_0x2dd91a[_0x6ac7('0x193')]||'','subject':_0x2dd91a['subject'],'html':_0x2dd91a[_0x6ac7('0x58')],'text':_0x2dd91a[_0x6ac7('0x58')]};var _0x3835a8={'tls':{'rejectUnauthorized':![]}};if(_0x16769b[_0x6ac7('0x18f')][_0x6ac7('0x194')]){_0x3835a8[_0x6ac7('0x194')]=_0x16769b['Smtp'][_0x6ac7('0x194')];}else{_0x3835a8[_0x6ac7('0x195')]=_0x16769b['Smtp'][_0x6ac7('0x195')];_0x3835a8[_0x6ac7('0x196')]=_0x16769b['Smtp'][_0x6ac7('0x196')];_0x3835a8[_0x6ac7('0x197')]=_0x16769b['Smtp'][_0x6ac7('0x197')];}if(_0x16769b[_0x6ac7('0x18f')]['authentication']){_0x3835a8[_0x6ac7('0x198')]={'user':_0x16769b[_0x6ac7('0x18f')][_0x6ac7('0x192')],'pass':_0x16769b['Smtp'][_0x6ac7('0x199')]};}if(this[_0x6ac7('0x9e')](_0x2dd91a['template_id'])){}logger['debug'](_0x6ac7('0x19a'),JSON[_0x6ac7('0x71')](_0x2b77f2));this[_0x6ac7('0x31')][_0x6ac7('0x6d')](this,_0x2dd91a,_0x2dd91a[_0x6ac7('0x18e')]);this[_0x6ac7('0xb')][_0x6ac7('0xa2')](util['format'](_0x6ac7('0x19b'),_0x16769b[_0x6ac7('0x14')]));this['sendMailMessage']['sync'](this,_0x3835a8,_0x2b77f2);return this[_0x6ac7('0xb')][_0x6ac7('0xa2')](_0x6ac7('0x19c'));};AGIVertices[_0x6ac7('0xd')][_0x6ac7('0x19d')]=function(_0x1bfb7c){logger['info'](util[_0x6ac7('0x4f')]('Enter\x20in\x20SENDFAX\x20(%s)\x20block',_0x1bfb7c[_0x6ac7('0x33')]));return this[_0x6ac7('0xb')][_0x6ac7('0xa2')](_0x6ac7('0x19e'));};AGIVertices['prototype'][_0x6ac7('0x19f')]=function(_0x6c922b){logger[_0x6ac7('0x2a')](util[_0x6ac7('0x4f')](_0x6ac7('0x1a0'),_0x6c922b['label']));if(!this[_0x6ac7('0x9e')](_0x6c922b['sms_account_id'])){return this['channel'][_0x6ac7('0xa2')](_0x6ac7('0x1a1'));}var _0x5de5d5=this[_0x6ac7('0x2f')]['sync'](this,_0x6c922b[_0x6ac7('0x1a2')]);if(!_0x5de5d5){return this['channel']['error'](_0x6c922b,_0x6ac7('0x1a3'));}var _0x1d98d6={'body':_0x6c922b[_0x6ac7('0x1a4')],'phone':_0x6c922b['to']||'','SmsAccountId':_0x5de5d5['id']};logger[_0x6ac7('0x1a5')](_0x6ac7('0x1a6'),JSON['stringify'](_0x1d98d6));this[_0x6ac7('0x31')][_0x6ac7('0x6d')](this,_0x6c922b,_0x6c922b['sms_account_id']);this['channel'][_0x6ac7('0xa2')](util[_0x6ac7('0x4f')](_0x6ac7('0x1a7'),_0x5de5d5['name']));this[_0x6ac7('0x1a8')][_0x6ac7('0x6d')](this,_0x1d98d6);return this['channel']['noop'](_0x6ac7('0x1a9'));};AGIVertices[_0x6ac7('0xd')][_0x6ac7('0x1aa')]=function(_0x2bf876){logger[_0x6ac7('0x2a')](util[_0x6ac7('0x4f')](_0x6ac7('0x1ab'),_0x2bf876['label']));if(!this[_0x6ac7('0x9e')](_0x2bf876[_0x6ac7('0xd2')])){return this[_0x6ac7('0xb')][_0x6ac7('0x28')](_0x2bf876,'no\x20variable\x20selected');}var _0x35457c=this[_0x6ac7('0xe')]['sync'](this,_0x2bf876[_0x6ac7('0xd2')]);if(!_0x35457c){return this[_0x6ac7('0xb')][_0x6ac7('0x28')](_0x2bf876,_0x6ac7('0x163'));}return this[_0x6ac7('0xb')][_0x6ac7('0x96')](_0x35457c,_0x2bf876[_0x6ac7('0x1ac')]);};AGIVertices[_0x6ac7('0xd')][_0x6ac7('0x1ad')]=function(_0x43b4bb){logger['info'](util['format']('Enter\x20in\x20START\x20(%s)\x20block',_0x43b4bb[_0x6ac7('0x33')]));this['channel'][_0x6ac7('0xa2')](_0x6ac7('0x1ae'));if(_0x43b4bb[_0x6ac7('0xb5')]===_0x6ac7('0x1af')){this['channel'][_0x6ac7('0xa2')](_0x6ac7('0x1b0'));return this['channel'][_0x6ac7('0xb5')]();}return this[_0x6ac7('0xb')][_0x6ac7('0xa2')]('Skipped\x20Answer');};AGIVertices['prototype']['subproject']=function(_0x598d77){logger[_0x6ac7('0x2a')](util[_0x6ac7('0x4f')](_0x6ac7('0x1b1'),_0x598d77['label']));if(!this[_0x6ac7('0x9e')](_0x598d77[_0x6ac7('0x1b2')])){return this['channel']['error'](_0x598d77,_0x6ac7('0x1b3'));}var _0x3025b4=this[_0x6ac7('0x1b4')]['sync'](this,_0x598d77[_0x6ac7('0x1b2')]);if(!this['isConfigured'](_0x3025b4)){return this[_0x6ac7('0xb')][_0x6ac7('0x28')](_0x598d77,util[_0x6ac7('0x4f')]('no\x20subproject\x20found\x20with\x20id\x20%d',_0x598d77[_0x6ac7('0x1b2')]));}if(_0x3025b4===this[_0x6ac7('0xb')][_0x6ac7('0x34')]){return this[_0x6ac7('0xb')]['error'](_0x598d77,_0x6ac7('0x1b5'));}this[_0x6ac7('0x31')]['sync'](this,_0x598d77,_0x3025b4);var _0x512c0f=this[_0x6ac7('0xb')][_0x6ac7('0x53')](_0x6ac7('0x1b6'),util[_0x6ac7('0x4f')](_0x6ac7('0x1b7'),config['agi'][_0x6ac7('0x195')]||_0x6ac7('0x1b8'),_0x3025b4,this[_0x6ac7('0xb')]['arg_1']));if(_0x512c0f[_0x6ac7('0xa6')]===-0x1){return _0x512c0f;}return this['channel'][_0x6ac7('0xa2')](util[_0x6ac7('0x4f')](_0x6ac7('0xbf'),'AGI',_0x3025b4));};AGIVertices['prototype']['system']=function(_0xeb675a){logger[_0x6ac7('0x2a')](util[_0x6ac7('0x4f')](_0x6ac7('0x1b9'),_0xeb675a[_0x6ac7('0x33')]));var _0x338f5a=this[_0x6ac7('0x52')][_0x6ac7('0x6d')](this,_0xeb675a[_0x6ac7('0xb3')]);this['createSquareDetailsReport'][_0x6ac7('0x6d')](this,_0xeb675a,_0xeb675a['command']);if(this[_0x6ac7('0x9e')](_0xeb675a['variable_id'])){var _0x598c44=this[_0x6ac7('0xe')][_0x6ac7('0x6d')](this,_0xeb675a[_0x6ac7('0xd2')]);if(_0x598c44){this[_0x6ac7('0xb')]['setVariable'](_0x598c44,_0x338f5a);return this['channel'][_0x6ac7('0xa2')](util['format'](_0x6ac7('0x1ba'),_0xeb675a[_0x6ac7('0xb3')],_0x598c44));}}return this['channel'][_0x6ac7('0xa2')](util[_0x6ac7('0x4f')]('sh\x20command:\x20%s\x20result\x20no\x20stored',_0xeb675a[_0x6ac7('0xb3')]));};AGIVertices[_0x6ac7('0xd')]['google_cloud_tts']=function(_0x129235){logger[_0x6ac7('0x2a')](util[_0x6ac7('0x4f')]('Enter\x20in\x20Google\x20Cloud\x20TTS\x20(%s)\x20block',_0x129235[_0x6ac7('0x33')]));_0x129235[_0x6ac7('0x58')]=_0x129235[_0x6ac7('0x58')][_0x6ac7('0x55')](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0x6ac7('0x9e')](_0x129235[_0x6ac7('0x57')])){return this[_0x6ac7('0xb')][_0x6ac7('0xa2')]('no\x20apiKey\x20configured');}if(!this[_0x6ac7('0x9e')](_0x129235[_0x6ac7('0x58')])){return this['channel'][_0x6ac7('0xa2')](_0x6ac7('0xa3'));}this[_0x6ac7('0xb')]['noop'](util['format'](_0x6ac7('0x1bb'),_0x129235[_0x6ac7('0x58')]));var _0x160975=this['googleCloudTTS'][_0x6ac7('0x6d')](this,_0x129235);if(_0x160975){this[_0x6ac7('0xb')][_0x6ac7('0xa2')](util[_0x6ac7('0x4f')](_0x6ac7('0x1bc'),_0x160975));var _0x20f30d=this[_0x6ac7('0xb')][_0x6ac7('0xfb')](_0x160975);try{fs[_0x6ac7('0xfc')](_0x160975+_0x6ac7('0xfd'));}catch(_0x2b73b6){logger[_0x6ac7('0x28')](_0x2b73b6);}return _0x20f30d;}return this[_0x6ac7('0xb')][_0x6ac7('0x28')](_0x129235,'Google\x20Cloud\x20TTS\x20is\x20unreachable');};AGIVertices[_0x6ac7('0xd')][_0x6ac7('0x1bd')]=function(_0x2f644f){logger[_0x6ac7('0x2a')](util[_0x6ac7('0x4f')]('Enter\x20in\x20GOOGLETTS\x20(%s)\x20block',_0x2f644f['label']));_0x2f644f[_0x6ac7('0x58')]=_0x2f644f[_0x6ac7('0x58')][_0x6ac7('0x55')](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0x6ac7('0x9e')](_0x2f644f['text'])){return this['channel'][_0x6ac7('0xa2')]('no\x20text\x20configured');}this[_0x6ac7('0xb')][_0x6ac7('0xa2')](util['format'](_0x6ac7('0x1be'),_0x2f644f[_0x6ac7('0x58')]));var _0x5eed60=this[_0x6ac7('0x5c')][_0x6ac7('0x6d')](this,_0x2f644f);if(_0x5eed60){this['channel'][_0x6ac7('0xa2')](util[_0x6ac7('0x4f')](_0x6ac7('0x1bf'),_0x5eed60));var _0x502b60=this[_0x6ac7('0xb')][_0x6ac7('0xfb')](_0x5eed60);try{fs[_0x6ac7('0xfc')](_0x5eed60+'.wav');}catch(_0x16b600){logger['error'](_0x16b600);}return _0x502b60;}return this[_0x6ac7('0xb')][_0x6ac7('0x28')](_0x2f644f,'Google\x20TTS\x20is\x20unreachable');};AGIVertices[_0x6ac7('0xd')][_0x6ac7('0x1c0')]=function(_0x93dd6a){logger[_0x6ac7('0x2a')](util[_0x6ac7('0x4f')](_0x6ac7('0x1c1'),_0x93dd6a[_0x6ac7('0x33')]));if(!this[_0x6ac7('0x9e')](_0x93dd6a['findBy'])){return this[_0x6ac7('0xb')]['error'](_0x93dd6a,_0x6ac7('0x158'));}logger[_0x6ac7('0x2a')](util[_0x6ac7('0x4f')](_0x6ac7('0x159'),this['channel'][_0x6ac7('0x35')],_0x93dd6a[_0x6ac7('0x15a')]));var _0x126a46=this['agentUnpause'][_0x6ac7('0x6d')](this,_0x93dd6a[_0x6ac7('0x15a')]);if(_0x126a46){logger[_0x6ac7('0x2a')](util[_0x6ac7('0x4f')](_0x6ac7('0x15b'),this[_0x6ac7('0xb')]['callerid'],_0x93dd6a[_0x6ac7('0x15a')]));this[_0x6ac7('0xb')][_0x6ac7('0xa2')](util['format'](_0x6ac7('0x15b'),this['channel'][_0x6ac7('0x35')],_0x93dd6a[_0x6ac7('0x15a')]));return{'code':0xc8,'result':'success'};}else{logger[_0x6ac7('0x2a')](util['format'](_0x6ac7('0x15d'),this['channel'][_0x6ac7('0x35')],_0x93dd6a['findBy']));this[_0x6ac7('0xb')][_0x6ac7('0xa2')](util['format'](_0x6ac7('0x15d'),this[_0x6ac7('0xb')][_0x6ac7('0x35')],_0x93dd6a['findBy']));return{'code':0xc8,'result':_0x6ac7('0x160')};}};AGIVertices['prototype'][_0x6ac7('0x1c2')]=function(_0x4df508){logger[_0x6ac7('0x2a')](util['format']('Enter\x20in\x20VOICEMAIL\x20(%s)\x20block',_0x4df508[_0x6ac7('0x33')]));var _0x14fe34=this['channel'][_0x6ac7('0x53')]('VOICEMAIL',[_0x4df508['mailbox'],_0x4df508[_0x6ac7('0xa4')]]);if(_0x14fe34[_0x6ac7('0xa6')]===-0x1){return _0x14fe34;}return this['channel']['noop'](util['format'](_0x6ac7('0xbf'),_0x6ac7('0x1c3'),_0x4df508[_0x6ac7('0x1c4')]));};AGIVertices[_0x6ac7('0xd')][_0x6ac7('0x1c5')]=function(_0x4a8840){logger[_0x6ac7('0x2a')](util['format'](_0x6ac7('0x1c6'),_0x4a8840[_0x6ac7('0x33')]));if(!this[_0x6ac7('0x9e')](_0x4a8840[_0x6ac7('0xd2')])){return this['channel'][_0x6ac7('0x28')](_0x4a8840,_0x6ac7('0x1c7'));}var _0x51e55c=this[_0x6ac7('0xe')][_0x6ac7('0x6d')](this,_0x4a8840[_0x6ac7('0xd2')]);if(!_0x51e55c){return this['channel']['error'](_0x4a8840,'no\x20variable\x20found');}var _0x2d3e22=this[_0x6ac7('0xb')][_0x6ac7('0xe')](_0x51e55c);return{'code':0xc8,'result':_0x2d3e22[_0x6ac7('0x9b')]?_0x2d3e22['extra']:'-'};};String[_0x6ac7('0xd')][_0x6ac7('0x9a')]=function(_0x24578d,_0x41d82e){return this['split'](_0x24578d)['join'](_0x41d82e);};module[_0x6ac7('0x1c8')]=AGIVertices;
\ No newline at end of file
+var _0x867f=['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','no\x20username\x20configured','password','no\x20password\x20configured','ndassistant_url','Trying\x20SestekNDA:\x20%s','out','audiofile','Sestek\x20NDA\x20%s\x20file\x20created','streamFile','unlink','.wav','SestekNDA\x20Result\x20%s','SestekNDA\x20is\x20unreachable','end','Enter\x20in\x20END\x20(%s)\x20block','ext_dial','Enter\x20in\x20EXTERNAL\x20DIAL\x20(%s)\x20block','trunk_id','no\x20trunk\x20selected','no\x20trunk\x20found','trunk_name','SIP/%s/%s','Enter\x20in\x20FINALLY\x20(%s)\x20block','finally','getSound','file_id','no\x20file\x20audio\x20found','getData','maxdigit','test','hiddendigitsnum','generate','hiddendigitspos','substr','Enter\x20in\x20GETSECRETDIGITS\x20(%s)\x20block','goal','Enter\x20in\x20GOAL\x20(%s)\x20block','goalname','awspolly','[AGI]\x20Enter\x20in\x20AWSPOLLY\x20(%s)\x20block','no\x20valid\x20credentials\x20configured','aws\x20Polly\x20is\x20unreachable','awslex','Enter\x20in\x20Amazon\x20Lex\x20(%s)\x20block','Trying\x20Amazon\x20Lex:\x20%s','awsLex','AWS_LEX_%s','Amazon\x20Lex\x20ready\x20for\x20fulfillment','amazonlex','Amazon\x20Lex\x20is\x20unreachable','googleasr','wav','%s/recordings/%s','%s.%s','beep','NOBEEP','intKey','google\x20%s\x20file\x20created','googleASR','GoogleASR\x20Result\x20%s','tildeasr','Enter\x20in\x20TILDEASR\x20(%s)\x20block','no\x20appid\x20configured','appsecret','tilde\x20%s\x20file\x20created','gotoc','Enter\x20in\x20GOTO\x20(%s)\x20block','gotoif','Enter\x20in\x20GOTOIF\x20(%s)\x20block','no\x20condition\x20configured','condition','false','Enter\x20in\x20GOTOIFTIME\x20(%s)\x20block','no\x20interval\x20configured','interval_id','IFTIME(%s?true:false)','IFTIME\x20%s\x20%s','true','hangup','recordFile','ispeech\x20%s\x20file\x20created','ispeechASR','ISPEECH_ASR_%s','ispeechtts','Enter\x20in\x20ISPEECHTTS\x20(%s)\x20block','Trying\x20ispeech\x20TTS\x20%s','login','Enter\x20in\x20LOGIN\x20(%s)\x20block','FIND\x20AGENT\x20%s\x20BY\x20%s','findBy','AGENT\x20%s\x20FOUND\x20BY','success','AGENT\x20%s\x20NOT\x20FOUND\x20BY','failure','no\x20find\x20by\x20configured','operation','no\x20operation\x20configured','math\x20%s','no\x20variable\x20found','%s[%s]','variable\x20%s[key]\x20set','response','digit','Enter\x20in\x20NOOP\x20(%s)\x20block','output','pause','Enter\x20in\x20PAUSE\x20(%s)\x20block','pause_id','playback','Enter\x20in\x20PLAYBACK\x20(%s)\x20block','Executed\x20command\x20%s\x20%s','PLAYBACK','queue','Enter\x20in\x20QUEUE\x20(%s)\x20block','queue_id','no\x20queue\x20selected','no\x20queue\x20found','indexOf','toLowerCase','macro','gosub','QUEUE','record','Enter\x20in\x20RECORD\x20(%s)\x20block','%s_%s','%s/recordings/%s.%s','RECORDING_SAVENAME','Recording\x20%s\x20%s\x20%s\x20%s','escape_digits','no\x20url\x20configured','Response:','inspect','no\x20variable\x20selected\x20for\x20the\x20response','%s_STATUS_CODE','200','%s_STATUS_MESSAGE','Enter\x20in\x20SAYDIGITS\x20(%s)\x20block','sayDigits','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','no\x20mail\x20account\x20configured','no\x20mail\x20account\x20found','\x22%s\x22\x20<%s>','email','Smtp','user','bcc','subject','service','host','port','secure','authentication','auth','template_id','sendMail\x20message','Trying\x20SendMail\x20with\x20account\x20%s','Mail\x20message\x20added\x20to\x20outgoing\x20process','sendFax','Enter\x20in\x20SENDFAX\x20(%s)\x20block','sendSMS','sms_account_id','no\x20sms\x20account\x20configured','sms_text','sendSMS\x20message','Sms\x20message\x20added\x20to\x20outgoing\x20process','set','Enter\x20in\x20SET\x20(%s)\x20block','no\x20variable\x20selected','variable_value','start','Enter\x20in\x20START\x20(%s)\x20block','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','127.0.0.1','system','Enter\x20in\x20SYSTEM\x20(%s)\x20block','sh\x20command:\x20%s\x20result\x20on\x20variable:\x20%s','sh\x20command:\x20%s\x20result\x20no\x20stored','google_cloud_tts','Enter\x20in\x20Google\x20Cloud\x20TTS\x20(%s)\x20block','no\x20apiKey\x20configured','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','Enter\x20in\x20VOICEMAIL\x20(%s)\x20block','VOICEMAIL','mailbox','Enter\x20in\x20SWITCH\x20(%s)\x20block','path','util','lodash','odbc','randomstring','moment','request-promise','agi','../../config/environment','./scripts','/var/opt/motion2/server/files','rawHeaders','rawBody','menu','getdigits','getsecretdigits','channel','rpc','mailRpc','getVariableById','then','name','prototype','getVoiceQueue','getVoiceQueueById','getSquareProject','getSquareProjectById','catch','getSquareOdbc','dsn','getUser','getUserById','getTrunk','getTrunkById','getSoundById','getSoundPath','save_name','getMailAccount','getMailAccountById','sendMailMessage','getIntervals','Intervals','format','%s/sounds/converted/%s','getQueryOdbc','Error\x20getting\x20ODBC\x20connection\x20%s','info','ODBC\x20connection\x20successfully','Error\x20executing\x20query\x20%s','error','Error\x20closing\x20connection\x20to\x20odbc\x20%s','getSmsAccount','getSmsAccountById','createSmsMessage','createSquareDetailsReport','uniqueid','label','agicommand','arg_1','callerid','createSquareRecording','calleridname','context','extension','priority','accountcode','file','createSquareMessage','createCmContact','isEmpty','isNil','callback_','random','lastName','phone','list_id','Callback\x20scheduled\x20at\x20','getPause','getPauseById','agentPause','agent','agentUnpause','agentLogout','agentLogin','internal','%s/%s@from-sip/n','LOCAL','shellCommand','exec','trim','replace','googleCloudTTS','apiKey','google_cloud_tts_text_type','text','languageCode','en-US','ssmlGender','MP3','googleTTS','google_tts_language','restAPI','timeout','number','includes','POST','PUT','method','An\x20incorrect\x20formatted\x20json\x20body\x20has\x20been\x20passed\x20to\x20the\x20function','headers','An\x20incorrect\x20formatted\x20json\x20headers\x20has\x20been\x20passed\x20to\x20the\x20function','computedVariables','sync','uri','render','url','parse','body','stringify','An\x20incorrect\x20formatted\x20json\x20has\x20been\x20passed\x20to\x20the\x20function','statusCode','statusMessage','message','googleDialogflow','key','dialogflow_language','googleDialogflowV2','dialogflowV2_project_id','client_email','private_key','dialogflowV2_language','sestekNDA','ispeechTTS','ispeech_tts_language','ispeech_asr_language','isConfigured','model','awsPolly','aws_access_key_id','aws_secret_access_key','aws_polly_region','aws_polly_voice','Amy','aws_text_type','aws_bot_name','google_asr_language','tildeASR','appid','clone','hasOwnProperty','isString','replaceObjectAllVariables','replaceAllVariables','recursiveNodeIndex','isPlainObject','length','saveRestApiResult','isArray','setVariable','split','extra','toString','getAndSetVariable','getVariable','result','The\x20\x22%s\x22\x20variable\x20value\x20is:\x20%s','maxRetry','retry','mrcpsynth','no\x20text\x20configured','options','noop','mrcprecog','Enter\x20in\x20MRCPRecog\x20(%s)\x20block','no\x20grammar\x20configured','grammar','RECOG_CONFIDENCE()','MRCP_RECOG_TRANSCRIPT','RECOG_INSTANCE()','Executed\x20command\x20MRCPRecog\x20%s','Enter\x20in\x20AGI\x20(%s)\x20block','command','answer','wait','Enter\x20in\x20CALLBACK\x20(%s)\x20block','no\x20list\x20selected','scheduledAt','delay','minutes','callback_priority','custom_app','Enter\x20in\x20CUSTOM\x20APP\x20(%s)\x20block','application','lumenvoxtts','Enter\x20in\x20LUMENVOXTTS\x20(%s)\x20block','MRCPSynth','Executed\x20command\x20MRCPSynth\x20%s','Enter\x20in\x20LUMENVOXASR\x20(%s)\x20block','MRCPRecog','LUMENVOX_ASR_CONFIDENCE','RECOG_INPUT()','LUMENVOX_ASR_TRANSCRIPT','LUMENVOX_ASR_INSTANCE','Enter\x20in\x20SESTEKASR\x20(%s)\x20block','SESTEK_ASR_CONFIDENCE','SESTEK_ASR_TRANSCRIPT','Enter\x20in\x20DATABASE\x20(%s)\x20block','odbc_id','no\x20database\x20selected','no\x20odbc\x20database\x20found','no\x20query\x20configured','query','query:\x20%s','no\x20variable\x20selected\x20for\x20the\x20result','variable_id','forEach','%s[%s][%s]','%s_ROWS_COUNT','variable\x20%s\x20set','dial','debug','Enter\x20in\x20DIAL\x20(%s)\x20block','sip_id','no\x20user\x20selected','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','toUpperCase','speech','Dialogflow\x20is\x20unreachable','dialogflowV2','Enter\x20in\x20DIALOGFLOW\x20V2\x20(%s)\x20block','no\x20project_id\x20configured','no\x20client_email\x20configured','no\x20private_key\x20configured','no\x20anguage\x20configured'];(function(_0x57fe21,_0xbea137){var _0xeb1982=function(_0x1536e6){while(--_0x1536e6){_0x57fe21['push'](_0x57fe21['shift']());}};_0xeb1982(++_0xbea137);}(_0x867f,0xdc));var _0xf867=function(_0x306626,_0x425e93){_0x306626=_0x306626-0x0;var _0x466728=_0x867f[_0x306626];return _0x466728;};'use strict';var fs=require('fs');var path=require(_0xf867('0x0'));var util=require(_0xf867('0x1'));var _=require(_0xf867('0x2'));var sh=require('shelljs');var odbc=require(_0xf867('0x3'))();var rs=require(_0xf867('0x4'));var moment=require(_0xf867('0x5'));var Mustache=require('mustache');var rp=require(_0xf867('0x6'));var logger=require('../../config/logger')(_0xf867('0x7'));var config=require(_0xf867('0x8'));var scripts=require(_0xf867('0x9'));var FILES_PATH=_0xf867('0xa');var recursiveMapAttributes=[_0xf867('0xb'),_0xf867('0xc')];var verticesWithRetry=[_0xf867('0xd'),_0xf867('0xe'),_0xf867('0xf')];var AGIVertices=function(_0x9d90ac,_0x48f3bb,_0x48fec9){this[_0xf867('0x10')]=_0x9d90ac;this[_0xf867('0x11')]=_0x48f3bb;this[_0xf867('0x12')]=_0x48fec9;};AGIVertices['prototype']['getVariable']=function(_0x1e7888,_0x280ab6){this['rpc'][_0xf867('0x13')](_0x1e7888)[_0xf867('0x14')](function(_0x830d0f){_0x280ab6(null,_0x830d0f?_0x830d0f[_0xf867('0x15')]:![]);})['catch'](function(_0x8059d0){_0x280ab6(_0x8059d0);});};AGIVertices[_0xf867('0x16')][_0xf867('0x17')]=function(_0x1fe7e6,_0xc29586){this[_0xf867('0x11')][_0xf867('0x18')](_0x1fe7e6)[_0xf867('0x14')](function(_0x3ede5b){_0xc29586(null,_0x3ede5b?_0x3ede5b[_0xf867('0x15')]:![]);})['catch'](function(_0x55fb64){_0xc29586(_0x55fb64);});};AGIVertices['prototype'][_0xf867('0x19')]=function(_0x45541a,_0x42179b){this[_0xf867('0x11')][_0xf867('0x1a')](_0x45541a)[_0xf867('0x14')](function(_0x2b98cd){_0x42179b(null,_0x2b98cd?_0x2b98cd['name']:![]);})[_0xf867('0x1b')](function(_0x20586d){_0x42179b(_0x20586d);});};AGIVertices[_0xf867('0x16')][_0xf867('0x1c')]=function(_0x348e70,_0x523461){this[_0xf867('0x11')]['getSquareOdbcById'](_0x348e70)[_0xf867('0x14')](function(_0x272be1){_0x523461(null,_0x272be1?_0x272be1[_0xf867('0x1d')]:![]);})['catch'](function(_0x34ab76){_0x523461(_0x34ab76);});};AGIVertices[_0xf867('0x16')][_0xf867('0x1e')]=function(_0x2dcb41,_0x83ba8c){this[_0xf867('0x11')][_0xf867('0x1f')](_0x2dcb41)[_0xf867('0x14')](function(_0x55d21e){_0x83ba8c(null,_0x55d21e?_0x55d21e[_0xf867('0x15')]:![]);})[_0xf867('0x1b')](function(_0x3a54bc){_0x83ba8c(_0x3a54bc);});};AGIVertices['prototype'][_0xf867('0x20')]=function(_0x9d52e4,_0x302662){this[_0xf867('0x11')][_0xf867('0x21')](_0x9d52e4)['then'](function(_0x2c5a53){_0x302662(null,_0x2c5a53?_0x2c5a53[_0xf867('0x15')]:![]);})[_0xf867('0x1b')](function(_0x165e63){_0x302662(_0x165e63);});};AGIVertices[_0xf867('0x16')]['getSound']=function(_0x1dec3d,_0xf3f726){var _0x13a202=this;this[_0xf867('0x11')][_0xf867('0x22')](_0x1dec3d)[_0xf867('0x14')](function(_0x5b7865){_0xf3f726(null,_0x5b7865?_0x13a202[_0xf867('0x23')](_0x5b7865[_0xf867('0x24')]):![]);})[_0xf867('0x1b')](function(_0x4c0f0c){_0xf3f726(_0x4c0f0c);});};AGIVertices[_0xf867('0x16')][_0xf867('0x25')]=function(_0x298406,_0x386051){this['rpc'][_0xf867('0x26')](_0x298406)[_0xf867('0x14')](function(_0xaeb33b){_0x386051(null,_0xaeb33b?_0xaeb33b:![]);})[_0xf867('0x1b')](function(_0xfdc9b3){_0x386051(_0xfdc9b3);});};AGIVertices[_0xf867('0x16')][_0xf867('0x27')]=function(_0x20321a,_0x5c221a,_0x1bfdcf){this['mailRpc']['sendMailMessage'](_0x20321a,_0x5c221a)[_0xf867('0x14')](function(){_0x1bfdcf(null);})[_0xf867('0x1b')](function(_0x8a7c99){_0x1bfdcf(_0x8a7c99);});};AGIVertices[_0xf867('0x16')][_0xf867('0x28')]=function(_0x5da8bb,_0x390a74){this[_0xf867('0x11')]['getIntervalById'](_0x5da8bb)['then'](function(_0xe77dae){if(_0xe77dae){if(_0xe77dae['IntervalId']){_0x390a74(null,[_0xe77dae['interval']]);}else{_0x390a74(null,_['map'](_0xe77dae[_0xf867('0x29')],'interval'));}}else{_0x390a74(null,![]);}})[_0xf867('0x1b')](function(_0x41bc1b){_0x390a74(_0x41bc1b);});};AGIVertices[_0xf867('0x16')][_0xf867('0x23')]=function(_0x416dc1){return util[_0xf867('0x2a')](_0xf867('0x2b'),FILES_PATH,_0x416dc1);};AGIVertices['prototype'][_0xf867('0x2c')]=function(_0x519060,_0x346edb,_0x1cb4e1){odbc['open'](_0x519060,function(_0x33d428){if(_0x33d428){logger['error'](_0xf867('0x2d'),_0x33d428);_0x1cb4e1(_0x33d428);}else{logger[_0xf867('0x2e')](_0xf867('0x2f'));odbc['query'](_0x346edb,function(_0x1bc093,_0x5f2980){if(_0x1bc093){logger[_0xf867('0x2e')](_0xf867('0x30'),_0x346edb);_0x1cb4e1(_0x1bc093);}else{logger['info']('Query\x20executed\x20correctly\x20%s',_0x346edb);odbc['close'](function(_0x267731){if(_0x267731){logger[_0xf867('0x31')](_0xf867('0x32'),_0x267731);}_0x1cb4e1(null,_0x5f2980);});}});}});};AGIVertices['prototype'][_0xf867('0x33')]=function(_0x487357,_0x56fa25){this[_0xf867('0x11')][_0xf867('0x34')](_0x487357)[_0xf867('0x14')](function(_0xebd8e7){_0x56fa25(null,_0xebd8e7?_0xebd8e7:![]);})[_0xf867('0x1b')](function(_0x50d764){_0x56fa25(_0x50d764);});};AGIVertices['prototype']['createSmsMessage']=function(_0x11dc97,_0x4471b6){this[_0xf867('0x11')][_0xf867('0x35')](_0x11dc97)[_0xf867('0x14')](function(_0xc78db0){_0x4471b6(null,_0xc78db0);})[_0xf867('0x1b')](function(_0x12961c){_0x4471b6(_0x12961c);});};AGIVertices['prototype'][_0xf867('0x36')]=function(_0x28995a,_0x520eb5,_0x2b07b6){this[_0xf867('0x11')][_0xf867('0x36')]({'uniqueid':this[_0xf867('0x10')][_0xf867('0x37')],'node':_0x28995a[_0xf867('0x38')],'application':_0x28995a[_0xf867('0x39')],'data':_0x520eb5||null,'project_name':this[_0xf867('0x10')][_0xf867('0x3a')],'callerid':this[_0xf867('0x10')][_0xf867('0x3b')]})[_0xf867('0x14')](function(_0xa6f6f0){if(_0x2b07b6){_0x2b07b6(null,_0xa6f6f0);}})[_0xf867('0x1b')](function(_0x15e1f6){if(_0x2b07b6){_0x2b07b6(_0x15e1f6);}});};AGIVertices['prototype'][_0xf867('0x3c')]=function(_0x3cc98c,_0x462764,_0x17ae70,_0x220e15){this[_0xf867('0x11')][_0xf867('0x3c')]({'uniqueid':this[_0xf867('0x10')][_0xf867('0x37')],'callerid':this[_0xf867('0x10')][_0xf867('0x3b')],'calleridname':this[_0xf867('0x10')][_0xf867('0x3d')],'context':this[_0xf867('0x10')][_0xf867('0x3e')],'extension':this[_0xf867('0x10')][_0xf867('0x3f')],'priority':this['channel'][_0xf867('0x40')],'accountcode':this[_0xf867('0x10')][_0xf867('0x41')],'dnid':this[_0xf867('0x10')]['dnid'],'projectName':this[_0xf867('0x10')][_0xf867('0x3a')],'saveName':_0x462764,'filename':_0x3cc98c[_0xf867('0x42')]||_0x462764,'savePath':_0x17ae70})[_0xf867('0x14')](function(_0x35a66d){_0x220e15(null,_0x35a66d);})['catch'](function(_0x53dba7){_0x220e15(_0x53dba7);});};AGIVertices[_0xf867('0x16')][_0xf867('0x43')]=function(_0x1e0810,_0x22f038,_0x2f083e,_0x545f48,_0x2a1678){this[_0xf867('0x11')][_0xf867('0x43')]({'uniqueid':this['channel']['uniqueid'],'body':_0x1e0810,'direction':_0x22f038,'providerName':_0x2f083e,'providerResponse':_0x545f48})[_0xf867('0x14')](function(_0x2ec49b){if(_0x2a1678){_0x2a1678(null,_0x2ec49b);}})['catch'](function(_0x56ab3a){if(_0x2a1678){_0x2a1678(_0x56ab3a);}});};AGIVertices['prototype'][_0xf867('0x44')]=function(_0xa4f542,_0x311da4){this[_0xf867('0x11')]['createCmContact']({'firstName':_[_0xf867('0x45')](_0xa4f542[_0xf867('0x15')])||_[_0xf867('0x46')](_0xa4f542[_0xf867('0x15')])?_0xf867('0x47')+Math[_0xf867('0x48')]():_0xa4f542[_0xf867('0x15')],'lastName':_[_0xf867('0x45')](_0xa4f542[_0xf867('0x49')])||_[_0xf867('0x46')](_0xa4f542[_0xf867('0x49')])?null:_0xa4f542['lastName'],'phone':_0xa4f542[_0xf867('0x4a')],'ListId':_0xa4f542[_0xf867('0x4b')],'scheduledat':_0xa4f542['scheduledAt'],'callbackUniqueid':this[_0xf867('0x10')][_0xf867('0x37')],'tags':'callback','description':_0xf867('0x4c')+_0xa4f542['scheduledAt']['toString'](),'priority':_0xa4f542['callback_priority']})[_0xf867('0x14')](function(_0x583efa){_0x311da4(null,_0x583efa);})[_0xf867('0x1b')](function(_0x10d691){_0x311da4(_0x10d691);});};AGIVertices['prototype'][_0xf867('0x4d')]=function(_0x3b50e6,_0xe5b12e){this[_0xf867('0x11')][_0xf867('0x4e')](_0x3b50e6)[_0xf867('0x14')](function(_0x333154){_0xe5b12e(null,_0x333154?_0x333154[_0xf867('0x15')]:![]);})['catch'](function(_0x201673){_0xe5b12e(_0x201673);});};AGIVertices[_0xf867('0x16')][_0xf867('0x4f')]=function(_0x5964ea,_0x1df2ab,_0x1ccd79){var _0x2794e3={'role':_0xf867('0x50')};_0x2794e3[_0x5964ea]=this['channel']['callerid'];this[_0xf867('0x11')]['agentPause'](_0x2794e3,_0x1df2ab,this['channel'][_0xf867('0x37')])[_0xf867('0x14')](function(_0x5b7cbe){_0x1ccd79(null,_[_0xf867('0x46')](_0x5b7cbe)?![]:!![]);})[_0xf867('0x1b')](function(_0x310d2f){logger[_0xf867('0x31')](_0x310d2f);_0x1ccd79(null,![]);});};AGIVertices[_0xf867('0x16')]['agentUnpause']=function(_0x51de67,_0x284bb0){var _0x3f9ce1={'role':_0xf867('0x50')};_0x3f9ce1[_0x51de67]=this[_0xf867('0x10')][_0xf867('0x3b')];this['rpc'][_0xf867('0x51')](_0x3f9ce1)[_0xf867('0x14')](function(_0x4adaa7){_0x284bb0(null,_[_0xf867('0x46')](_0x4adaa7)?![]:!![]);})[_0xf867('0x1b')](function(_0x267549){logger[_0xf867('0x31')](_0x267549);_0x284bb0(null,![]);});};AGIVertices[_0xf867('0x16')][_0xf867('0x52')]=function(_0x17bc66,_0x4800a0){var _0xe3a8f0={'role':_0xf867('0x50')};_0xe3a8f0[_0x17bc66]=this['channel'][_0xf867('0x3b')];this[_0xf867('0x11')][_0xf867('0x52')](_0xe3a8f0)['then'](function(_0x2e3c3e){_0x4800a0(null,_[_0xf867('0x46')](_0x2e3c3e)?![]:!![]);})[_0xf867('0x1b')](function(_0x43e0a9){logger[_0xf867('0x31')](_0x43e0a9);_0x4800a0(null,![]);});};AGIVertices[_0xf867('0x16')][_0xf867('0x53')]=function(_0x434517,_0x835387){var _0x33cea3={'role':_0xf867('0x50')};_0x33cea3[_0x434517]=this['channel'][_0xf867('0x3b')];var _0x2e05ca=_0x434517!=_0xf867('0x54')?util[_0xf867('0x2a')](_0xf867('0x55'),_0xf867('0x56'),this[_0xf867('0x10')]['callerid']):undefined;this[_0xf867('0x11')]['agentLogin'](_0x33cea3,_0x2e05ca)[_0xf867('0x14')](function(_0x1f89fd){_0x835387(null,_[_0xf867('0x46')](_0x1f89fd)?![]:!![]);})[_0xf867('0x1b')](function(_0xdb6a4b){logger[_0xf867('0x31')](_0xdb6a4b);_0x835387(null,![]);});};AGIVertices[_0xf867('0x16')][_0xf867('0x57')]=function(_0xaaec00,_0x4f691d){sh[_0xf867('0x58')](_[_0xf867('0x59')](_0xaaec00),function(_0x33ca71,_0x2a5195){var _0x22afb7=_0x2a5195[_0xf867('0x5a')](/(\r\n|\n|\r)/gm,'');_0x4f691d(null,_0x22afb7);});};AGIVertices[_0xf867('0x16')]['googleCloudTTS']=function(_0x2fd080,_0x3812a9){scripts[_0xf867('0x5b')](_0x2fd080[_0xf867('0x5c')],_0x2fd080[_0xf867('0x5d')]||_0xf867('0x5e'),_0x2fd080[_0xf867('0x5e')],_0x2fd080[_0xf867('0x5f')]||_0xf867('0x60'),_0x2fd080[_0xf867('0x61')]||'MALE',_0x2fd080['audioEncoding']||_0xf867('0x62'))[_0xf867('0x14')](function(_0x7c8f09){_0x3812a9(null,_0x7c8f09);})[_0xf867('0x1b')](function(_0x194c3c){_0x3812a9(_0x194c3c);});};AGIVertices['prototype'][_0xf867('0x63')]=function(_0x44e3a8,_0x4e1c70){scripts[_0xf867('0x63')](_0x44e3a8[_0xf867('0x5e')],_0x44e3a8[_0xf867('0x64')]||'en',0x1)[_0xf867('0x14')](function(_0x46fad7){_0x4e1c70(null,_0x46fad7);})['catch'](function(_0x41f3c8){_0x4e1c70(_0x41f3c8);});};AGIVertices[_0xf867('0x16')][_0xf867('0x65')]=function(_0x10d51f,_0x52f095){var _0x497955={'uri':_0x10d51f['url'],'method':_0x10d51f['method'],'json':!![],'resolveWithFullResponse':!![],'strictSSL':![],'timeout':typeof parseInt(_0x10d51f[_0xf867('0x66')])===_0xf867('0x67')&&parseInt(_0x10d51f[_0xf867('0x66')])>=0x1?parseInt(_0x10d51f['timeout'])*0x3e8:0x5*0x3e8};if(_[_0xf867('0x68')]([_0xf867('0x69'),_0xf867('0x6a')],_0x497955[_0xf867('0x6b')]['toUpperCase']())){try{_0x497955['body']=_0x10d51f[_0xf867('0xc')]?JSON['parse'](_0x10d51f[_0xf867('0xc')]):{};}catch(_0x2146d7){logger[_0xf867('0x31')](_0xf867('0x6c'),_0x2146d7);}}try{_0x497955[_0xf867('0x6d')]=_0x10d51f['rawHeaders']?JSON['parse'](_0x10d51f[_0xf867('0xb')]):{};}catch(_0x11322e){logger[_0xf867('0x31')](_0xf867('0x6e'),_0x11322e);}if(_0x10d51f[_0xf867('0x6f')]){try{var _0x5cf2dd=require(_0x10d51f['computedVariables'])[_0xf867('0x70')](this,_0x497955);_0x497955[_0xf867('0x71')]=Mustache[_0xf867('0x72')](_0x10d51f[_0xf867('0x73')],_0x5cf2dd,{},['$$','$$']);if(_0x497955['headers']){_0x497955['headers']=JSON[_0xf867('0x74')](Mustache[_0xf867('0x72')](JSON['stringify'](_0x497955[_0xf867('0x6d')]),_0x5cf2dd,{},['$$','$$']));}if(_0x497955[_0xf867('0x75')]){_0x497955['body']=JSON[_0xf867('0x74')](Mustache[_0xf867('0x72')](JSON[_0xf867('0x76')](_0x497955[_0xf867('0x75')]),_0x5cf2dd,{},['$$','$$']));}}catch(_0x498951){logger['error'](_0xf867('0x77'),_0x498951);}}rp(_0x497955)[_0xf867('0x14')](function(_0xd3c213){var _0x4af735={'statusCode':_0xd3c213[_0xf867('0x78')]||0xc8,'statusMessage':_0xd3c213[_0xf867('0x79')]||'OK','headers':_0xd3c213[_0xf867('0x6d')]||{},'body':_0xd3c213['body']||{}};_0x52f095(null,_0x4af735);})['catch'](function(_0x5cc069){var _0x133bb6={'statusCode':_0x5cc069[_0xf867('0x78')]||0x1f4,'statusMessage':_0x5cc069[_0xf867('0x7a')]||'500\x20-\x20Internal\x20Server\x20Error','headers':_0x5cc069['options']['headers']||{},'body':_0x5cc069['options'][_0xf867('0x75')]||{}};_0x52f095(null,_0x133bb6);});};AGIVertices[_0xf867('0x16')]['googleDialogflow']=function(_0x32be6f,_0xbf4efd){scripts[_0xf867('0x7b')](this[_0xf867('0x10')]['uniqueid'],_0x32be6f[_0xf867('0x7c')],_0x32be6f['text'],_0x32be6f[_0xf867('0x7d')]||'en')['then'](function(_0x24951a){_0xbf4efd(null,_0x24951a);})[_0xf867('0x1b')](function(_0x4695eb){_0xbf4efd(_0x4695eb);});};AGIVertices[_0xf867('0x16')][_0xf867('0x7e')]=function(_0x57e7ba,_0x824389){scripts[_0xf867('0x7e')](this['channel'][_0xf867('0x37')],_0x57e7ba[_0xf867('0x7f')],_0x57e7ba[_0xf867('0x80')],_0x57e7ba[_0xf867('0x81')],_0x57e7ba['text'],_0x57e7ba[_0xf867('0x82')]||'en')['then'](function(_0x2d5e78){_0x824389(null,_0x2d5e78);})['catch'](function(_0x4d45ab){_0x824389(_0x4d45ab);});};AGIVertices[_0xf867('0x16')]['sestekNDA']=function(_0x4acab8,_0x5ef22a){scripts[_0xf867('0x83')](this[_0xf867('0x10')],_0x4acab8)[_0xf867('0x14')](function(_0x495a60){_0x5ef22a(null,_0x495a60);})[_0xf867('0x1b')](function(_0x5215da){_0x5ef22a(_0x5215da);});};AGIVertices[_0xf867('0x16')]['ispeechTTS']=function(_0x4e1aee,_0x2672b4){scripts[_0xf867('0x84')](_0x4e1aee[_0xf867('0x7c')],_0x4e1aee[_0xf867('0x5e')],_0x4e1aee[_0xf867('0x85')]||_0xf867('0x60'),_0x4e1aee['speed'])['then'](function(_0x105d66){_0x2672b4(null,_0x105d66);})[_0xf867('0x1b')](function(_0x34ad1f){_0x2672b4(_0x34ad1f);});};AGIVertices[_0xf867('0x16')]['ispeechASR']=function(_0x3aef1b,_0x4cfe5a,_0x31decf){scripts['ispeechASR'](_0x4cfe5a,_0x3aef1b[_0xf867('0x7c')],_0x3aef1b[_0xf867('0x86')]||_0xf867('0x60'),this[_0xf867('0x87')](_0x3aef1b['model'])?_0x3aef1b[_0xf867('0x88')]:undefined)['then'](function(_0x2d24cf){_0x31decf(null,_0x2d24cf);})[_0xf867('0x1b')](function(_0x5f11e3){_0x31decf(_0x5f11e3);});};AGIVertices[_0xf867('0x16')][_0xf867('0x89')]=function(_0x476f44,_0x1db698){scripts[_0xf867('0x89')](_0x476f44[_0xf867('0x8a')],_0x476f44[_0xf867('0x8b')],_0x476f44[_0xf867('0x8c')],_0x476f44[_0xf867('0x8d')]||_0xf867('0x8e'),_0x476f44['text'],_0x476f44[_0xf867('0x8f')]||_0xf867('0x5e'))[_0xf867('0x14')](function(_0x214732){_0x1db698(null,_0x214732);})[_0xf867('0x1b')](function(_0x4ed55c){_0x1db698(_0x4ed55c);});};AGIVertices[_0xf867('0x16')]['awsLex']=function(_0x311fb6,_0x2c8dae){scripts['awsLex'](this['channel'][_0xf867('0x37')],_0x311fb6[_0xf867('0x8a')],_0x311fb6['aws_secret_access_key'],_0x311fb6['aws_lex_region'],_0x311fb6[_0xf867('0x5e')],_0x311fb6[_0xf867('0x90')])['then'](function(_0x111a8c){_0x2c8dae(null,_0x111a8c);})[_0xf867('0x1b')](function(_0x5a0414){_0x2c8dae(_0x5a0414);});};AGIVertices[_0xf867('0x16')]['googleASR']=function(_0x132848,_0xb47cba,_0x80ad28){scripts['googleASR'](_0xb47cba,_0x132848[_0xf867('0x7c')],_0x132848[_0xf867('0x91')]||_0xf867('0x60'))['then'](function(_0x3752c8){_0x80ad28(null,_0x3752c8);})[_0xf867('0x1b')](function(_0x5b7617){_0x80ad28(_0x5b7617);});};AGIVertices[_0xf867('0x16')][_0xf867('0x92')]=function(_0x42642e,_0x420003,_0x5326f4){scripts['tildeASR'](_0x420003,_0x42642e[_0xf867('0x93')],_0x42642e['appsecret'],_0x42642e[_0xf867('0x71')])[_0xf867('0x14')](function(_0x355c2f){_0x5326f4(null,_0x355c2f);})[_0xf867('0x1b')](function(_0x1d6ac9){_0x5326f4(_0x1d6ac9);});};AGIVertices[_0xf867('0x16')]['clear']=function(_0x19728e){var _0x27f3c1=_[_0xf867('0x68')](verticesWithRetry,_0x19728e[_0xf867('0x39')])?_0x19728e:_[_0xf867('0x94')](_0x19728e);for(var _0x209362 in _0x27f3c1){if(_0x27f3c1[_0xf867('0x95')](_0x209362)){if(_0x27f3c1[_0x209362]&&_[_0xf867('0x96')](_0x27f3c1[_0x209362])){if(_['includes'](recursiveMapAttributes,_0x209362)){_0x27f3c1[_0x209362]=this[_0xf867('0x97')](_0x27f3c1[_0x209362]);}else{_0x27f3c1[_0x209362]=this[_0xf867('0x98')](_0x27f3c1[_0x209362]);}}}}return _0x27f3c1;};AGIVertices[_0xf867('0x16')][_0xf867('0x99')]=function(_0x4b92f4){for(var _0x31fa81 in _0x4b92f4){if(_0x4b92f4[_0xf867('0x95')](_0x31fa81)){if(_[_0xf867('0x9a')](_0x4b92f4[_0x31fa81])){this[_0xf867('0x99')](_0x4b92f4[_0x31fa81]);}else if(_['isArray'](_0x4b92f4[_0x31fa81])){for(var _0x2c0103=0x0;_0x2c0103<_0x4b92f4[_0x31fa81][_0xf867('0x9b')];_0x2c0103++){this['recursiveNodeIndex'](_0x4b92f4[_0x31fa81][_0x2c0103]);}}else if(_['isString'](_0x4b92f4[_0x31fa81])){_0x4b92f4[_0x31fa81]=this[_0xf867('0x98')](_0x4b92f4[_0x31fa81]);}}}};AGIVertices[_0xf867('0x16')][_0xf867('0x9c')]=function(_0x2e8913,_0x117bed){for(var _0x2af8e in _0x2e8913){if(_0x2e8913[_0xf867('0x95')](_0x2af8e)){if(_['isPlainObject'](_0x2e8913[_0x2af8e])){if(!_['isEmpty'](_0x2e8913[_0x2af8e])){this[_0xf867('0x9c')](_0x2e8913[_0x2af8e],util[_0xf867('0x2a')]('%s.%s',_0x117bed,_0x2af8e));}}else if(_[_0xf867('0x9d')](_0x2e8913[_0x2af8e])){for(var _0x3333cb=0x0;_0x3333cb<_0x2e8913[_0x2af8e][_0xf867('0x9b')];_0x3333cb++){this[_0xf867('0x9c')](_0x2e8913[_0x2af8e][_0x3333cb],util[_0xf867('0x2a')]('%s.%s',_0x117bed,_0x2af8e+'['+_0x3333cb+']'));}}else{if(!_[_0xf867('0x46')](_0x2e8913[_0x2af8e])){this[_0xf867('0x10')][_0xf867('0x9e')](util[_0xf867('0x2a')]('%s.%s',_0x117bed,_0x2af8e),_0x2e8913[_0x2af8e]);}}}}};AGIVertices[_0xf867('0x16')][_0xf867('0x97')]=function(_0x22af5b){try{var _0x4c9b10=JSON[_0xf867('0x74')](_0x22af5b);this[_0xf867('0x99')](_0x4c9b10);return JSON[_0xf867('0x76')](_0x4c9b10);}catch(_0x372f1b){return this[_0xf867('0x98')](_0x22af5b);}};AGIVertices[_0xf867('0x16')][_0xf867('0x98')]=function(_0x21e580){var _0x5a2803=_0x21e580[_0xf867('0x9f')]('{');for(var _0x45a61c=0x1;_0x45a61c<_0x5a2803[_0xf867('0x9b')];_0x45a61c+=0x1){var _0x100170=_0x5a2803[_0x45a61c][_0xf867('0x9f')]('}');if(_0x100170[_0xf867('0x9b')]>0x1){_0x21e580=_0x21e580['replaceAll']('{'+_0x100170[0x0]+'}',this[_0xf867('0x10')]['getVariable'](_0x100170[0x0])[_0xf867('0xa0')]||_0x100170[0x0]);}}if(_0x5a2803[_0xf867('0x9b')]===0x1){return _0x21e580[_0xf867('0xa1')]();}return this['replaceAllVariables'](_0x21e580);};AGIVertices[_0xf867('0x16')][_0xf867('0xa2')]=function(_0x41349a,_0x47b32f){var _0x52bb35=this[_0xf867('0x10')][_0xf867('0xa3')](_0x41349a);if(_0x52bb35[_0xf867('0xa4')]===-0x1){return _0x52bb35;}logger['info'](util['format'](_0xf867('0xa5'),_0x47b32f,_0x52bb35['extra']));return this[_0xf867('0x10')][_0xf867('0x9e')](_0x47b32f,_0x52bb35[_0xf867('0xa0')]);};AGIVertices['prototype'][_0xf867('0x87')]=function(_0x441829){return _0x441829&&_0x441829!=='0'&&_0x441829!=='-1'&&_0x441829!=='';};AGIVertices[_0xf867('0x16')][_0xf867('0xa6')]=function(_0x31af76){this[_0xf867('0x36')][_0xf867('0x70')](this,_0x31af76,'-');_0x31af76[_0xf867('0xa7')]=_0x31af76[_0xf867('0xa6')];return{'code':0xc8,'result':'-'};};AGIVertices[_0xf867('0x16')][_0xf867('0xa8')]=function(_0x5e02e0){logger[_0xf867('0x2e')](util['format']('Enter\x20in\x20MRCPSynth\x20(%s)\x20block',_0x5e02e0[_0xf867('0x38')]));if(!this[_0xf867('0x87')](_0x5e02e0[_0xf867('0x5e')])){return this[_0xf867('0x10')]['noop'](_0xf867('0xa9'));}var _0x113b3a='\x22'+_0x5e02e0['text']+'\x22';if(this[_0xf867('0x87')](_0x5e02e0[_0xf867('0xaa')])){_0x113b3a+=','+_0x5e02e0[_0xf867('0xaa')];}var _0x52e0c2=this[_0xf867('0x10')][_0xf867('0x58')]('MRCPSynth',_0x113b3a);if(_0x52e0c2[_0xf867('0xa4')]===-0x1){return _0x52e0c2;}return this['channel'][_0xf867('0xab')](util[_0xf867('0x2a')]('Executed\x20command\x20MRCPSynth\x20%s',_0x113b3a));};AGIVertices[_0xf867('0x16')][_0xf867('0xac')]=function(_0x3d221c){logger[_0xf867('0x2e')](util[_0xf867('0x2a')](_0xf867('0xad'),_0x3d221c[_0xf867('0x38')]));if(!this[_0xf867('0x87')](_0x3d221c['grammar'])){return this['channel']['noop'](_0xf867('0xae'));}var _0x244279=_0x3d221c[_0xf867('0xaf')];if(this['isConfigured'](_0x3d221c[_0xf867('0xaa')])){_0x244279+=','+_0x3d221c[_0xf867('0xaa')];}var _0x5e3706=this[_0xf867('0x10')]['exec']('MRCPRecog',_0x244279);if(_0x5e3706[_0xf867('0xa4')]===-0x1){return _0x5e3706;}var _0x11322f=this[_0xf867('0xa2')](_0xf867('0xb0'),'MRCP_RECOG_CONFIDENCE');if(_0x11322f[_0xf867('0xa4')]===-0x1){return _0x11322f;}var _0x2055f7=this[_0xf867('0xa2')]('RECOG_INPUT()',_0xf867('0xb1'));if(_0x2055f7['result']===-0x1){return _0x2055f7;}var _0x4b3262=this[_0xf867('0xa2')](_0xf867('0xb2'),'MRCP_RECOG_INSTANCE');if(_0x4b3262[_0xf867('0xa4')]===-0x1){return _0x4b3262;}return this['channel']['noop'](util[_0xf867('0x2a')](_0xf867('0xb3'),_0x244279));};AGIVertices[_0xf867('0x16')][_0xf867('0x7')]=function(_0x3df8e9){logger[_0xf867('0x2e')](util[_0xf867('0x2a')](_0xf867('0xb4'),_0x3df8e9['label']));return this[_0xf867('0x10')][_0xf867('0x7')]([_0x3df8e9[_0xf867('0xb5')],_0x3df8e9['args']]);};AGIVertices[_0xf867('0x16')][_0xf867('0xb6')]=function(_0x33bf32){logger['info'](util[_0xf867('0x2a')]('Enter\x20in\x20ANSWER\x20(%s)\x20block',_0x33bf32['label']));if(this[_0xf867('0x87')](_0x33bf32[_0xf867('0x66')])){logger[_0xf867('0x2e')](util[_0xf867('0x2a')]('Wait\x20%s\x20seconds\x20before\x20answer',_0x33bf32[_0xf867('0x66')]));var _0x5efdce=this[_0xf867('0x10')][_0xf867('0xb7')](_0x33bf32[_0xf867('0x66')]);if(_0x5efdce[_0xf867('0xa4')]===-0x1){return _0x5efdce;}}return this['channel'][_0xf867('0xb6')]();};AGIVertices[_0xf867('0x16')]['callback']=function(_0x3ed26c){logger[_0xf867('0x2e')](util[_0xf867('0x2a')](_0xf867('0xb8'),_0x3ed26c['label']));if(!this['isConfigured'](_0x3ed26c[_0xf867('0x4b')])){return this['channel'][_0xf867('0x31')](_0x3ed26c,_0xf867('0xb9'));}_0x3ed26c[_0xf867('0xba')]=moment();if(this[_0xf867('0x87')](_0x3ed26c[_0xf867('0xbb')])){_0x3ed26c[_0xf867('0xba')]=moment()['add'](_0x3ed26c['delay'],_0xf867('0xbc'));}if(!this[_0xf867('0x87')](_0x3ed26c[_0xf867('0xbd')])){_0x3ed26c[_0xf867('0xbd')]=0x2;}this[_0xf867('0x44')][_0xf867('0x70')](this,_0x3ed26c);return this[_0xf867('0x10')][_0xf867('0xab')](util['format']('CALLBACK\x20added\x20phone:\x20%s\x20on\x20list:\x20%s\x20at\x20%s',_0x3ed26c[_0xf867('0x4a')],_0x3ed26c[_0xf867('0x4b')],_0x3ed26c[_0xf867('0xba')]));};AGIVertices[_0xf867('0x16')][_0xf867('0xbe')]=function(_0x33c1d6){logger[_0xf867('0x2e')](util['format'](_0xf867('0xbf'),_0x33c1d6[_0xf867('0x38')]));var _0x1d6829=this[_0xf867('0x10')][_0xf867('0x58')](_0x33c1d6[_0xf867('0xc0')],_0x33c1d6[_0xf867('0xaa')]);if(_0x1d6829[_0xf867('0xa4')]===-0x1){return _0x1d6829;}return this['channel']['noop'](util['format']('Executed\x20command\x20%s\x20%s',_0x33c1d6['application'],_0x33c1d6[_0xf867('0xaa')]));};AGIVertices[_0xf867('0x16')][_0xf867('0xc1')]=function(_0x3e6271){logger[_0xf867('0x2e')](util[_0xf867('0x2a')](_0xf867('0xc2'),_0x3e6271[_0xf867('0x38')]));if(!this[_0xf867('0x87')](_0x3e6271[_0xf867('0x5e')])){return this[_0xf867('0x10')]['noop'](_0xf867('0xa9'));}var _0x388387='\x22'+_0x3e6271[_0xf867('0x5e')]+'\x22';if(this['isConfigured'](_0x3e6271[_0xf867('0xaa')])){_0x388387+=','+_0x3e6271['options'];}var _0x4d59f3=this[_0xf867('0x10')][_0xf867('0x58')](_0xf867('0xc3'),_0x388387);if(_0x4d59f3['result']===-0x1){return _0x4d59f3;}return this[_0xf867('0x10')][_0xf867('0xab')](util[_0xf867('0x2a')](_0xf867('0xc4'),_0x388387));};AGIVertices[_0xf867('0x16')]['sestektts']=function(_0x5d4658){logger['info'](util['format']('Enter\x20in\x20SESTEKTTS\x20(%s)\x20block',_0x5d4658['label']));if(!this[_0xf867('0x87')](_0x5d4658[_0xf867('0x5e')])){return this[_0xf867('0x10')][_0xf867('0xab')](_0xf867('0xa9'));}var _0x48347e='\x22'+_0x5d4658[_0xf867('0x5e')]+'\x22';if(this[_0xf867('0x87')](_0x5d4658['options'])){_0x48347e+=','+_0x5d4658['options'];}var _0x51935c=this[_0xf867('0x10')][_0xf867('0x58')](_0xf867('0xc3'),_0x48347e);if(_0x51935c['result']===-0x1){return _0x51935c;}return this[_0xf867('0x10')][_0xf867('0xab')](util[_0xf867('0x2a')](_0xf867('0xc4'),_0x48347e));};AGIVertices[_0xf867('0x16')]['lumenvoxasr']=function(_0x5d8a53){logger[_0xf867('0x2e')](util['format'](_0xf867('0xc5'),_0x5d8a53[_0xf867('0x38')]));if(!this[_0xf867('0x87')](_0x5d8a53['grammar'])){return this['channel'][_0xf867('0xab')](_0xf867('0xae'));}var _0x529e61=_0x5d8a53[_0xf867('0xaf')];if(this['isConfigured'](_0x5d8a53[_0xf867('0xaa')])){_0x529e61+=','+_0x5d8a53[_0xf867('0xaa')];}var _0x2e3904=this[_0xf867('0x10')][_0xf867('0x58')](_0xf867('0xc6'),_0x529e61);if(_0x2e3904['result']===-0x1){return _0x2e3904;}var _0x55936a=this['getAndSetVariable'](_0xf867('0xb0'),_0xf867('0xc7'));if(_0x55936a[_0xf867('0xa4')]===-0x1){return _0x55936a;}var _0x3b11bd=this[_0xf867('0xa2')](_0xf867('0xc8'),_0xf867('0xc9'));if(_0x3b11bd[_0xf867('0xa4')]===-0x1){return _0x3b11bd;}var _0x539438=this[_0xf867('0xa2')]('RECOG_INSTANCE()',_0xf867('0xca'));if(_0x539438[_0xf867('0xa4')]===-0x1){return _0x539438;}return this[_0xf867('0x10')]['noop'](util['format'](_0xf867('0xb3'),_0x529e61));};AGIVertices['prototype']['sestekasr']=function(_0x5760ce){logger['info'](util[_0xf867('0x2a')](_0xf867('0xcb'),_0x5760ce['label']));if(!this['isConfigured'](_0x5760ce[_0xf867('0xaf')])){return this[_0xf867('0x10')]['noop']('no\x20grammar\x20configured');}var _0x260f0f=_0x5760ce['grammar'];if(this[_0xf867('0x87')](_0x5760ce[_0xf867('0xaa')])){_0x260f0f+=','+_0x5760ce['options'];}var _0x10319=this[_0xf867('0x10')][_0xf867('0x58')](_0xf867('0xc6'),_0x260f0f);if(_0x10319[_0xf867('0xa4')]===-0x1){return _0x10319;}var _0x2d25f3=this[_0xf867('0xa2')](_0xf867('0xb0'),_0xf867('0xcc'));if(_0x2d25f3[_0xf867('0xa4')]===-0x1){return _0x2d25f3;}var _0x23ecae=this[_0xf867('0xa2')](_0xf867('0xc8'),_0xf867('0xcd'));if(_0x23ecae[_0xf867('0xa4')]===-0x1){return _0x23ecae;}var _0x371fb2=this[_0xf867('0xa2')]('RECOG_INSTANCE()','SESTEK_ASR_INSTANCE');if(_0x371fb2[_0xf867('0xa4')]===-0x1){return _0x371fb2;}return this[_0xf867('0x10')][_0xf867('0xab')](util[_0xf867('0x2a')](_0xf867('0xb3'),_0x260f0f));};AGIVertices[_0xf867('0x16')]['database']=function(_0x2347ab){logger[_0xf867('0x2e')](util[_0xf867('0x2a')](_0xf867('0xce'),_0x2347ab['label']));if(!this['isConfigured'](_0x2347ab[_0xf867('0xcf')])){return this[_0xf867('0x10')]['error'](_0x2347ab,_0xf867('0xd0'));}var _0x4b268f=this[_0xf867('0x1c')][_0xf867('0x70')](this,_0x2347ab[_0xf867('0xcf')]);if(!_0x4b268f){return this[_0xf867('0x10')][_0xf867('0x31')](_0x2347ab,_0xf867('0xd1'));}if(!this['isConfigured'](_0x2347ab['query'])){return this[_0xf867('0x10')]['error'](_0x2347ab,_0xf867('0xd2'));}var _0x481e26=_0x2347ab[_0xf867('0xd3')]['replace'](/(\r\n|\n|\r)/gm,'\x20');this[_0xf867('0x10')][_0xf867('0xab')](util['format'](_0xf867('0xd4'),_0x481e26));var _0x23198e=this[_0xf867('0x2c')][_0xf867('0x70')](this,_0x4b268f,_0x481e26);this['createSquareDetailsReport']['sync'](this,_0x2347ab,_0x481e26);if(!this[_0xf867('0x87')](_0x2347ab['variable_id'])){return this['channel']['noop'](_0xf867('0xd5'));}var _0x3745c3=this['getVariable'][_0xf867('0x70')](this,_0x2347ab[_0xf867('0xd6')]);if(!_0x3745c3){return this['channel'][_0xf867('0x31')](_0x2347ab,'no\x20variable\x20found');}var _0x33d2cd=this;_0x23198e[_0xf867('0xd7')](function(_0x219b41,_0x3bb905){Object['keys'](_0x219b41)[_0xf867('0xd7')](function(_0xae2a63){_0x33d2cd['channel'][_0xf867('0x9e')](util[_0xf867('0x2a')](_0xf867('0xd8'),_0x3745c3,_0x3bb905,_0xae2a63),_0x219b41[_0xae2a63]);});});this['channel'][_0xf867('0x9e')](util[_0xf867('0x2a')](_0xf867('0xd9'),_0x3745c3),_0x23198e[_0xf867('0x9b')]);return this[_0xf867('0x10')][_0xf867('0xab')](util[_0xf867('0x2a')](_0xf867('0xda'),_0x3745c3));};AGIVertices[_0xf867('0x16')][_0xf867('0xdb')]=function(_0x86f8d0){logger[_0xf867('0xdc')](util[_0xf867('0x2a')](_0xf867('0xdd'),_0x86f8d0['label']));if(!this[_0xf867('0x87')](_0x86f8d0[_0xf867('0xde')])){return this[_0xf867('0x10')]['error'](_0x86f8d0,_0xf867('0xdf'));}var _0x4e30d8=this['getUser']['sync'](this,_0x86f8d0[_0xf867('0xde')]);if(!_0x4e30d8){return this['channel'][_0xf867('0x31')](_0x86f8d0,_0xf867('0xe0'));}var _0x2227fb=this[_0xf867('0x10')][_0xf867('0x58')](_0xf867('0xe1'),[util['format'](_0xf867('0xe2'),_0x4e30d8),_0x86f8d0[_0xf867('0x66')],_0x86f8d0[_0xf867('0xe3')],_0x86f8d0[_0xf867('0x73')]]);if(_0x2227fb['result']===-0x1){return _0x2227fb;}return this['channel'][_0xf867('0xab')](util['format'](_0xf867('0xe4'),'DIAL'));};AGIVertices[_0xf867('0x16')][_0xf867('0xe5')]=function(_0x59cbb5){logger[_0xf867('0x2e')](util[_0xf867('0x2a')](_0xf867('0xe6'),_0x59cbb5['label']));if(!this[_0xf867('0x87')](_0x59cbb5[_0xf867('0x7c')])){return this[_0xf867('0x10')][_0xf867('0xab')](_0xf867('0xe7'));}if(!this['isConfigured'](_0x59cbb5[_0xf867('0x5e')])){return this['channel']['noop'](_0xf867('0xa9'));}this[_0xf867('0x10')][_0xf867('0xe8')]=!![];this[_0xf867('0x36')](_0x59cbb5);this['createSquareMessage'](_0x59cbb5[_0xf867('0x5e')],'in','','');this[_0xf867('0x10')][_0xf867('0xab')](util[_0xf867('0x2a')](_0xf867('0xe9'),_0x59cbb5[_0xf867('0x5e')]));var _0xd8a6fb=this['googleDialogflow'][_0xf867('0x70')](this,_0x59cbb5);if(_0xd8a6fb){for(var _0x128e0f in _0xd8a6fb){if(_0xd8a6fb['hasOwnProperty'](_0x128e0f)){this['channel']['setVariable'](util[_0xf867('0x2a')](_0xf867('0xea'),_0x128e0f[_0xf867('0xeb')]()),_0xd8a6fb[_0x128e0f]);}}this[_0xf867('0x43')](_0xd8a6fb[_0xf867('0xec')],'out',_0xf867('0xe5'),'');return this['channel'][_0xf867('0xab')](util[_0xf867('0x2a')]('Dialogflow\x20Result\x20%s',_0xd8a6fb[_0xf867('0xec')]));}return this[_0xf867('0x10')][_0xf867('0x31')](_0x59cbb5,_0xf867('0xed'));};AGIVertices['prototype'][_0xf867('0xee')]=function(_0xe936fb){logger[_0xf867('0x2e')](util[_0xf867('0x2a')](_0xf867('0xef'),_0xe936fb[_0xf867('0x38')]));if(!this['isConfigured'](_0xe936fb[_0xf867('0x7f')])){return this['channel'][_0xf867('0xab')](_0xf867('0xf0'));}if(!this[_0xf867('0x87')](_0xe936fb[_0xf867('0x80')])){return this[_0xf867('0x10')][_0xf867('0xab')](_0xf867('0xf1'));}if(!this[_0xf867('0x87')](_0xe936fb[_0xf867('0x81')])){return this[_0xf867('0x10')][_0xf867('0xab')](_0xf867('0xf2'));}if(!this['isConfigured'](_0xe936fb[_0xf867('0x82')])){return this[_0xf867('0x10')][_0xf867('0xab')](_0xf867('0xf3'));}if(!this[_0xf867('0x87')](_0xe936fb[_0xf867('0x5e')])){return this[_0xf867('0x10')][_0xf867('0xab')](_0xf867('0xa9'));}this[_0xf867('0x10')]['bot']=!![];this[_0xf867('0x36')](_0xe936fb);this[_0xf867('0x43')](_0xe936fb[_0xf867('0x5e')],'in','','');this[_0xf867('0x10')]['noop'](util[_0xf867('0x2a')](_0xf867('0xf4'),_0xe936fb['text']));var _0x4fa808=this[_0xf867('0x7e')][_0xf867('0x70')](this,_0xe936fb);if(_0x4fa808){for(var _0x4bb85b in _0x4fa808){if(_0x4fa808['hasOwnProperty'](_0x4bb85b)){if(_0x4bb85b!==_0xf867('0xf5')){this['channel'][_0xf867('0x9e')](util['format'](_0xf867('0xea'),_0x4bb85b['toUpperCase']()),_0x4fa808[_0x4bb85b]);}}}this[_0xf867('0x43')](_0x4fa808[_0xf867('0xec')],'out',_0xf867('0xee'),_0x4fa808[_0xf867('0xf5')]);return this[_0xf867('0x10')]['noop'](util[_0xf867('0x2a')](_0xf867('0xf6'),_0x4fa808[_0xf867('0xec')]));}return this[_0xf867('0x10')]['error'](_0xe936fb,_0xf867('0xf7'));};AGIVertices[_0xf867('0x16')][_0xf867('0xf8')]=function(_0x4bae04){logger['info'](util[_0xf867('0x2a')](_0xf867('0xf9'),_0x4bae04[_0xf867('0x38')]));if(!this[_0xf867('0x87')](_0x4bae04[_0xf867('0xfa')])){return this[_0xf867('0x10')][_0xf867('0xab')](_0xf867('0xfb'));}if(!this[_0xf867('0x87')](_0x4bae04['username'])){return this[_0xf867('0x10')]['noop'](_0xf867('0xfc'));}if(!this[_0xf867('0x87')](_0x4bae04[_0xf867('0xfd')])){return this[_0xf867('0x10')][_0xf867('0xab')](_0xf867('0xfe'));}if(!this['isConfigured'](_0x4bae04[_0xf867('0xff')])){return this[_0xf867('0x10')]['noop']('no\x20text\x20configured');}this[_0xf867('0x10')][_0xf867('0xe8')]=!![];this['createSquareDetailsReport'](_0x4bae04);this['createSquareMessage'](_0x4bae04[_0xf867('0x5e')],'in','','');this[_0xf867('0x10')][_0xf867('0xab')](util['format'](_0xf867('0x100'),_0x4bae04[_0xf867('0x5e')]));var _0x5d04f7=this[_0xf867('0x83')][_0xf867('0x70')](this,_0x4bae04);if(_0x5d04f7){for(var _0x42fcd9 in _0x5d04f7){if(_0x5d04f7['hasOwnProperty'](_0x42fcd9)){this[_0xf867('0x10')][_0xf867('0x9e')](util[_0xf867('0x2a')]('SESTEK_NDA_%s',_0x42fcd9[_0xf867('0xeb')]()),_0x5d04f7[_0x42fcd9]);}}this[_0xf867('0x43')](_0x5d04f7['speech'],_0xf867('0x101'),_0xf867('0xf8'),'');if(_0x5d04f7[_0xf867('0x102')]){this['channel']['noop'](util[_0xf867('0x2a')](_0xf867('0x103'),_0x5d04f7[_0xf867('0x102')]));var _0x48893f=this[_0xf867('0x10')][_0xf867('0x104')](_0x5d04f7['audiofile']);try{fs[_0xf867('0x105')](_0x5d04f7[_0xf867('0x102')]+_0xf867('0x106'));}catch(_0x558fa1){logger[_0xf867('0x31')](_0x558fa1);}return _0x48893f;}else{return this[_0xf867('0x10')][_0xf867('0xab')](util[_0xf867('0x2a')](_0xf867('0x107'),_0x5d04f7[_0xf867('0xec')]));}}return this[_0xf867('0x10')][_0xf867('0x31')](_0x4bae04,_0xf867('0x108'));};AGIVertices[_0xf867('0x16')][_0xf867('0x109')]=function(_0x28f796){logger[_0xf867('0x2e')](util[_0xf867('0x2a')](_0xf867('0x10a'),_0x28f796[_0xf867('0x38')]));return this['channel'][_0xf867('0xab')](_0xf867('0x109'));};AGIVertices[_0xf867('0x16')][_0xf867('0x10b')]=function(_0x226240){logger[_0xf867('0x2e')](util[_0xf867('0x2a')](_0xf867('0x10c'),_0x226240[_0xf867('0x38')]));var _0x241aa2='';if(_0x226240[_0xf867('0x10d')]){if(!this[_0xf867('0x87')](_0x226240[_0xf867('0x10d')])){return this['channel']['error'](_0x226240,_0xf867('0x10e'));}else{var _0x4d390c=parseInt(_0x226240[_0xf867('0x10d')],0xa);if(isNaN(_0x4d390c)){_0x241aa2=_0x226240[_0xf867('0x10d')];}else{_0x241aa2=this[_0xf867('0x20')][_0xf867('0x70')](this,_0x226240[_0xf867('0x10d')]);if(!_0x241aa2){return this['channel'][_0xf867('0x31')](_0x226240,_0xf867('0x10f'));}}}}else if(_0x226240[_0xf867('0x110')]){_0x241aa2=_0x226240[_0xf867('0x110')];}else{return this[_0xf867('0x10')][_0xf867('0x31')](_0x226240,_0xf867('0x10e'));}var _0x4ae5bf=this[_0xf867('0x10')][_0xf867('0x58')](_0xf867('0xe1'),[util[_0xf867('0x2a')](_0xf867('0x111'),_0x241aa2,_0x226240[_0xf867('0x4a')]),_0x226240[_0xf867('0x66')],_0x226240['opts'],_0x226240[_0xf867('0x73')]]);if(_0x4ae5bf[_0xf867('0xa4')]===-0x1){return _0x4ae5bf;}return this[_0xf867('0x10')][_0xf867('0xab')](util[_0xf867('0x2a')]('Executed\x20command\x20%s','DIAL'));};AGIVertices['prototype']['finally']=function(_0x27504d){logger[_0xf867('0x2e')](util[_0xf867('0x2a')](_0xf867('0x112'),_0x27504d[_0xf867('0x38')]));return this[_0xf867('0x10')][_0xf867('0xab')](_0xf867('0x113'));};AGIVertices[_0xf867('0x16')][_0xf867('0xe')]=function(_0x59dc38){logger[_0xf867('0x2e')](util[_0xf867('0x2a')]('Enter\x20in\x20GETDIGITS\x20(%s)\x20block',_0x59dc38[_0xf867('0x38')]));if(_0x59dc38[_0xf867('0xa7')]===0x0){return this[_0xf867('0xa6')](_0x59dc38);}_0x59dc38[_0xf867('0xa7')]-=0x1;if(!this[_0xf867('0x87')](_0x59dc38['file_id'])){return this['channel'][_0xf867('0x31')](_0x59dc38,'no\x20file\x20audio\x20selected');}var _0x54dabe=this[_0xf867('0x114')][_0xf867('0x70')](this,_0x59dc38[_0xf867('0x115')]);if(!_0x54dabe){return this[_0xf867('0x10')][_0xf867('0x31')](_0x59dc38,_0xf867('0x116'));}if(!this[_0xf867('0x87')](_0x59dc38[_0xf867('0xd6')])){return this[_0xf867('0x10')][_0xf867('0x31')](_0xf867('0xd5'));}var _0x15f131=this[_0xf867('0x10')][_0xf867('0x117')](_0x54dabe,_0x59dc38['response'],_0x59dc38[_0xf867('0x118')]);var _0x224f35=_0x15f131['result']?_0x15f131[_0xf867('0xa4')][_0xf867('0xa1')]():'';logger['info'](_0xf867('0x119'),JSON[_0xf867('0x76')](_0x15f131));if(_0x15f131[_0xf867('0xa4')]===-0x1){this[_0xf867('0x36')][_0xf867('0x70')](this,_0x59dc38,_0x224f35);return _0x15f131;}else if(_0x15f131['extra']==='timeout'){_0x15f131['result']=_0x224f35['length']>=parseInt(_0x59dc38['mindigit'])?'x':'i';}else{_0x15f131[_0xf867('0xa4')]=_0x224f35['length']>=parseInt(_0x59dc38['mindigit'])&&_0x224f35[_0xf867('0x9b')]<=parseInt(_0x59dc38[_0xf867('0x118')])?'x':'i';}var _0xa3cb0d=this[_0xf867('0xa3')][_0xf867('0x70')](this,_0x59dc38[_0xf867('0xd6')]);if(!_0xa3cb0d){return this[_0xf867('0x10')][_0xf867('0x31')](_0x59dc38,'no\x20variable\x20found');}this[_0xf867('0x10')][_0xf867('0x9e')](_0xa3cb0d,_0x224f35);if(this[_0xf867('0x87')](_0x59dc38[_0xf867('0x11a')])){var _0x110fc6=parseInt(_0x59dc38[_0xf867('0x11a')],0xa);var _0x5a0507=rs[_0xf867('0x11b')]({'charset':'*','length':_0x110fc6});var _0x399615=_0x224f35[_0xf867('0x9b')];if(_0x399615>0x0){if(_0x399615>_0x110fc6){this[_0xf867('0x36')][_0xf867('0x70')](this,_0x59dc38,_0x59dc38[_0xf867('0x11c')]==='first'?_0x5a0507+_0x224f35['substr'](_0x110fc6):_0x224f35[_0xf867('0x11d')](0x0,_0x399615-_0x110fc6)+_0x5a0507);}else{this[_0xf867('0x36')][_0xf867('0x70')](this,_0x59dc38,rs[_0xf867('0x11b')]({'charset':'*','length':_0x399615}));}}else{this[_0xf867('0x36')][_0xf867('0x70')](this,_0x59dc38,'');}}else{this['createSquareDetailsReport']['sync'](this,_0x59dc38,_0x224f35);}return _0x15f131;};AGIVertices[_0xf867('0x16')][_0xf867('0xf')]=function(_0x48839e){logger[_0xf867('0x2e')](util[_0xf867('0x2a')](_0xf867('0x11e'),_0x48839e[_0xf867('0x38')]));return this[_0xf867('0xe')](_0x48839e);};AGIVertices['prototype'][_0xf867('0x11f')]=function(_0x181f46){logger[_0xf867('0x2e')](util[_0xf867('0x2a')](_0xf867('0x120'),_0x181f46[_0xf867('0x38')]));this[_0xf867('0x36')][_0xf867('0x70')](this,_0x181f46,_0x181f46['goalname']);return this[_0xf867('0x10')][_0xf867('0xab')](util[_0xf867('0x2a')]('GOAL\x20%s',_0x181f46[_0xf867('0x121')]));};AGIVertices['prototype'][_0xf867('0x122')]=function(_0x518f05){logger[_0xf867('0x2e')](util['format'](_0xf867('0x123'),_0x518f05['label']));if(!this[_0xf867('0x87')](_0x518f05[_0xf867('0x8a')])||!this['isConfigured'](_0x518f05[_0xf867('0x8b')])){return this[_0xf867('0x10')][_0xf867('0xab')](_0xf867('0x124'));}if(!this['isConfigured'](_0x518f05['text'])){return this[_0xf867('0x10')][_0xf867('0xab')](_0xf867('0xa9'));}this[_0xf867('0x10')]['noop'](util[_0xf867('0x2a')]('Trying\x20aws\x20Polly\x20%s',_0x518f05['text']));var _0x2a56dd=this[_0xf867('0x89')]['sync'](this,_0x518f05);if(_0x2a56dd){this[_0xf867('0x10')][_0xf867('0xab')](util[_0xf867('0x2a')]('aws\x20Polly\x20%s\x20file\x20created',_0x2a56dd));var _0x30f3be=this[_0xf867('0x10')][_0xf867('0x104')](_0x2a56dd);try{fs[_0xf867('0x105')](_0x2a56dd+_0xf867('0x106'));}catch(_0x294b4d){logger['error'](_0x294b4d);}return _0x30f3be;}return this['channel'][_0xf867('0x31')](_0x518f05,_0xf867('0x125'));};AGIVertices[_0xf867('0x16')][_0xf867('0x126')]=function(_0xecd937){logger['info'](util[_0xf867('0x2a')](_0xf867('0x127'),_0xecd937[_0xf867('0x38')]));if(!this[_0xf867('0x87')](_0xecd937[_0xf867('0x8a')])||!this[_0xf867('0x87')](_0xecd937[_0xf867('0x8b')])){return this[_0xf867('0x10')][_0xf867('0xab')](_0xf867('0x124'));}if(!this[_0xf867('0x87')](_0xecd937[_0xf867('0x90')])){return this[_0xf867('0x10')][_0xf867('0xab')]('no\x20bot\x20name\x20configured');}if(!this[_0xf867('0x87')](_0xecd937[_0xf867('0x5e')])){return this['channel'][_0xf867('0xab')](_0xf867('0xa9'));}this[_0xf867('0x10')]['bot']=!![];this[_0xf867('0x36')](_0xecd937);this[_0xf867('0x43')](_0xecd937[_0xf867('0x5e')],'in','','');this[_0xf867('0x10')][_0xf867('0xab')](util['format'](_0xf867('0x128'),_0xecd937[_0xf867('0x5e')]));var _0x35bf70=this[_0xf867('0x129')]['sync'](this,_0xecd937);if(_0x35bf70){for(var _0x32aa6a in _0x35bf70){if(_0x35bf70[_0xf867('0x95')](_0x32aa6a)&&_[_0xf867('0x96')](_0x35bf70[_0x32aa6a])){this[_0xf867('0x10')][_0xf867('0x9e')](util[_0xf867('0x2a')](_0xf867('0x12a'),_0x32aa6a[_0xf867('0xeb')]()),_0x35bf70[_0x32aa6a]);}}if(_[_0xf867('0x46')](_0x35bf70[_0xf867('0x7a')])){return this[_0xf867('0x10')][_0xf867('0xab')](_0xf867('0x12b'));}else{this[_0xf867('0x43')](_0x35bf70[_0xf867('0x7a')],_0xf867('0x101'),_0xf867('0x12c'),'');return this['channel']['noop'](util[_0xf867('0x2a')]('Amazon\x20Lex\x20Result\x20%s',_0x35bf70[_0xf867('0x7a')]));}}return this[_0xf867('0x10')][_0xf867('0x31')](_0xecd937,_0xf867('0x12d'));};AGIVertices[_0xf867('0x16')][_0xf867('0x12e')]=function(_0x5df5fd){logger[_0xf867('0x2e')](util['format']('Enter\x20in\x20GOOGLEASR\x20(%s)\x20block\x20%s',_0x5df5fd[_0xf867('0x38')],_0x5df5fd['timeout']));if(!this['isConfigured'](_0x5df5fd[_0xf867('0x7c')])){return this[_0xf867('0x10')][_0xf867('0xab')](_0xf867('0xe7'));}var _0x1dae61=_0xf867('0x12f');var _0x407f1b=util[_0xf867('0x2a')](_0xf867('0x130'),FILES_PATH,rs[_0xf867('0x11b')](0x4));var _0x30fa90=util[_0xf867('0x2a')](_0xf867('0x131'),_0x407f1b,_0x1dae61);var _0x10d79b=!![];if(_0x5df5fd[_0xf867('0x132')]===_0xf867('0x133')){_0x10d79b=![];}var _0x1f7fd3=this['channel']['recordFile'](_0x407f1b,_0x1dae61,_0x5df5fd[_0xf867('0x134')],_0x5df5fd[_0xf867('0x66')],undefined,_0x10d79b);if(_0x1f7fd3[_0xf867('0xa4')]!==-0x1){this[_0xf867('0x10')][_0xf867('0xab')](util[_0xf867('0x2a')](_0xf867('0x135'),_0x30fa90));var _0x50c3b2=this[_0xf867('0x136')][_0xf867('0x70')](this,_0x5df5fd,_0x30fa90);if(_0x50c3b2){for(var _0x58a1b1 in _0x50c3b2){if(_0x50c3b2[_0xf867('0x95')](_0x58a1b1)){this['channel'][_0xf867('0x9e')](util['format']('GOOGLE_ASR_%s',_0x58a1b1[_0xf867('0xeb')]()),_0x50c3b2[_0x58a1b1]);}}return this['channel'][_0xf867('0xab')](util[_0xf867('0x2a')](_0xf867('0x137'),JSON[_0xf867('0x76')](_0x50c3b2)));}}return _0x1f7fd3;};AGIVertices['prototype'][_0xf867('0x138')]=function(_0x549148){logger[_0xf867('0x2e')](util[_0xf867('0x2a')](_0xf867('0x139'),_0x549148[_0xf867('0x38')]));if(!this['isConfigured'](_0x549148[_0xf867('0x93')])){return this[_0xf867('0x10')][_0xf867('0xab')](_0xf867('0x13a'));}if(!this[_0xf867('0x87')](_0x549148[_0xf867('0x13b')])){return this[_0xf867('0x10')]['noop']('no\x20appsecret\x20configured');}var _0x5283e6=_0xf867('0x12f');var _0x2db4a9=util[_0xf867('0x2a')]('%s/recordings/%s',FILES_PATH,rs[_0xf867('0x11b')](0x4));var _0x28eff3=util[_0xf867('0x2a')](_0xf867('0x131'),_0x2db4a9,_0x5283e6);var _0x142a4f=!![];if(_0x549148[_0xf867('0x132')]===_0xf867('0x133')){_0x142a4f=![];}var _0xc78ece=this[_0xf867('0x10')]['recordFile'](_0x2db4a9,_0x5283e6,_0x549148[_0xf867('0x134')],_0x549148['timeout'],undefined,_0x142a4f);if(_0xc78ece['result']!==-0x1){this[_0xf867('0x10')][_0xf867('0xab')](util[_0xf867('0x2a')](_0xf867('0x13c'),_0x28eff3));var _0x3607ff=this['tildeASR'][_0xf867('0x70')](this,_0x549148,_0x28eff3);if(_0x3607ff){for(var _0xf38212 in _0x3607ff){if(_0x3607ff[_0xf867('0x95')](_0xf38212)){this[_0xf867('0x10')][_0xf867('0x9e')](util[_0xf867('0x2a')]('TILDE_ASR_%s',_0xf38212[_0xf867('0xeb')]()),_0x3607ff[_0xf38212]);}}return this[_0xf867('0x10')][_0xf867('0xab')](util[_0xf867('0x2a')]('TildeASR\x20Result\x20%s',JSON[_0xf867('0x76')](_0x3607ff)));}}return _0xc78ece;};AGIVertices[_0xf867('0x16')][_0xf867('0x13d')]=function(_0x26f798){logger[_0xf867('0x2e')](util[_0xf867('0x2a')](_0xf867('0x13e'),_0x26f798['label']));return this['channel']['continueAt'](_0x26f798[_0xf867('0x3e')],_0x26f798[_0xf867('0x3f')],_0x26f798['priority']);};AGIVertices[_0xf867('0x16')][_0xf867('0x13f')]=function(_0xe2c5ef){logger[_0xf867('0x2e')](util[_0xf867('0x2a')](_0xf867('0x140'),_0xe2c5ef[_0xf867('0x38')]));if(!this[_0xf867('0x87')](_0xe2c5ef['condition'])){return this[_0xf867('0x10')]['error'](_0xe2c5ef,_0xf867('0x141'));}try{var _0x523f2b=eval(_0xe2c5ef[_0xf867('0x142')])?'true':'false';this[_0xf867('0x10')]['noop'](util[_0xf867('0x2a')]('EVAL\x20CONDITION\x20%s\x20%s',_0xe2c5ef[_0xf867('0x142')],_0x523f2b));return{'code':0xc8,'result':_0x523f2b};}catch(_0x1a8551){return{'code':0xc8,'result':_0xf867('0x143')};}};AGIVertices[_0xf867('0x16')]['gotoiftime']=function(_0x597a87){logger[_0xf867('0x2e')](util['format'](_0xf867('0x144'),_0x597a87['label']));if(!this['isConfigured'](_0x597a87['interval_id'])){return this[_0xf867('0x10')][_0xf867('0x31')](_0x597a87,_0xf867('0x145'));}var _0x2e82f4=this['getIntervals']['sync'](this,_0x597a87[_0xf867('0x146')]);if(!_0x2e82f4){return this[_0xf867('0x10')][_0xf867('0x31')](_0x597a87,'no\x20intervals\x20found');}for(var _0x3bd138=0x0;_0x3bd138<_0x2e82f4[_0xf867('0x9b')];_0x3bd138+=0x1){var _0x400654=this[_0xf867('0x10')]['getVariable'](util['format'](_0xf867('0x147'),_0x2e82f4[_0x3bd138]));if(_0x400654['result']===-0x1){return _0x400654;}logger[_0xf867('0x2e')](util['format'](_0xf867('0x148'),_0x2e82f4[_0x3bd138],_0x400654[_0xf867('0xa0')]));if(_0x400654['extra']===_0xf867('0x149')){logger[_0xf867('0x2e')](util[_0xf867('0x2a')]('IFTIME\x20%s\x20%s',_0x2e82f4[_0x3bd138],'true'));this[_0xf867('0x10')][_0xf867('0xab')](util[_0xf867('0x2a')](_0xf867('0x148'),_0x2e82f4[_0x3bd138],_0xf867('0x149')));return{'code':0xc8,'result':_0xf867('0x149')};}else{logger[_0xf867('0x2e')](util[_0xf867('0x2a')](_0xf867('0x148'),_0x2e82f4[_0x3bd138],_0xf867('0x143')));this[_0xf867('0x10')][_0xf867('0xab')](util['format'](_0xf867('0x148'),_0x2e82f4[_0x3bd138],_0xf867('0x143')));}}return{'code':0xc8,'result':_0xf867('0x143')};};AGIVertices[_0xf867('0x16')][_0xf867('0x14a')]=function(_0x4a3987){logger[_0xf867('0x2e')](util[_0xf867('0x2a')]('Enter\x20in\x20HANGUP\x20(%s)\x20block',_0x4a3987[_0xf867('0x38')]));return this['channel'][_0xf867('0x14a')]();};AGIVertices[_0xf867('0x16')]['ispeechasr']=function(_0x1f38a2){logger[_0xf867('0x2e')](util[_0xf867('0x2a')]('Enter\x20in\x20ISPEECHASR\x20(%s)\x20block',_0x1f38a2[_0xf867('0x38')]));if(!this['isConfigured'](_0x1f38a2[_0xf867('0x7c')])){return this['channel']['noop'](_0xf867('0xe7'));}var _0x22ced7='wav';var _0x4679c1=util[_0xf867('0x2a')](_0xf867('0x130'),FILES_PATH,rs[_0xf867('0x11b')](0x4));var _0x3ce12e=util['format'](_0xf867('0x131'),_0x4679c1,_0x22ced7);var _0x464d83=!![];if(_0x1f38a2['beep']===_0xf867('0x133')){_0x464d83=![];}var _0x56aa2e=this[_0xf867('0x10')][_0xf867('0x14b')](_0x4679c1,_0x22ced7,_0x1f38a2[_0xf867('0x134')],_0x1f38a2[_0xf867('0x66')],undefined,_0x464d83);if(_0x56aa2e['result']!==-0x1){this[_0xf867('0x10')]['noop'](util[_0xf867('0x2a')](_0xf867('0x14c'),_0x3ce12e));var _0x1c0ba1=this[_0xf867('0x14d')][_0xf867('0x70')](this,_0x1f38a2,_0x3ce12e);if(_0x1c0ba1){for(var _0x20def0 in _0x1c0ba1){if(_0x1c0ba1[_0xf867('0x95')](_0x20def0)){this['channel'][_0xf867('0x9e')](util['format'](_0xf867('0x14e'),_0x20def0[_0xf867('0xeb')]()),_0x1c0ba1[_0x20def0]);}}return this[_0xf867('0x10')][_0xf867('0xab')](util['format']('IspeechASR\x20Result\x20%s',JSON['stringify'](_0x1c0ba1)));}}return _0x56aa2e;};AGIVertices[_0xf867('0x16')][_0xf867('0x14f')]=function(_0x41d835){logger[_0xf867('0x2e')](util[_0xf867('0x2a')](_0xf867('0x150'),_0x41d835[_0xf867('0x38')]));if(!this[_0xf867('0x87')](_0x41d835[_0xf867('0x7c')])){return this['channel'][_0xf867('0xab')](_0xf867('0xe7'));}if(!this[_0xf867('0x87')](_0x41d835[_0xf867('0x5e')])){return this[_0xf867('0x10')][_0xf867('0xab')](_0xf867('0xa9'));}this[_0xf867('0x10')][_0xf867('0xab')](util['format'](_0xf867('0x151'),_0x41d835[_0xf867('0x5e')]));var _0x182bd8=this[_0xf867('0x84')][_0xf867('0x70')](this,_0x41d835);if(_0x182bd8){this[_0xf867('0x10')][_0xf867('0xab')](util['format']('ispeech\x20%s\x20file\x20created',_0x182bd8));var _0x1eb52a=this['channel']['streamFile'](_0x182bd8,_0x41d835['intKey']);try{fs[_0xf867('0x105')](_0x182bd8+'.wav');}catch(_0x68a554){logger[_0xf867('0x31')](_0x68a554);}return _0x1eb52a;}return this[_0xf867('0x10')][_0xf867('0x31')](_0x41d835,'ispeech\x20TTS\x20is\x20unreachable');};AGIVertices[_0xf867('0x16')][_0xf867('0x152')]=function(_0x32922c){logger[_0xf867('0x2e')](util[_0xf867('0x2a')](_0xf867('0x153'),_0x32922c[_0xf867('0x38')]));if(!this['isConfigured'](_0x32922c['findBy'])){return this[_0xf867('0x10')][_0xf867('0x31')](_0x32922c,'no\x20find\x20by\x20configured');}logger['info'](util['format'](_0xf867('0x154'),this['channel'][_0xf867('0x3b')],_0x32922c['findBy']));var _0x13af28=this['agentLogin']['sync'](this,_0x32922c[_0xf867('0x155')]);if(_0x13af28){logger[_0xf867('0x2e')](util['format'](_0xf867('0x156'),this['channel']['callerid'],_0x32922c['findBy']));this[_0xf867('0x10')][_0xf867('0xab')](util[_0xf867('0x2a')](_0xf867('0x156'),this['channel'][_0xf867('0x3b')],_0x32922c[_0xf867('0x155')]));return{'code':0xc8,'result':_0xf867('0x157')};}else{logger[_0xf867('0x2e')](util['format'](_0xf867('0x158'),this[_0xf867('0x10')][_0xf867('0x3b')],_0x32922c['findBy']));this['channel'][_0xf867('0xab')](util[_0xf867('0x2a')](_0xf867('0x158'),this[_0xf867('0x10')][_0xf867('0x3b')],_0x32922c[_0xf867('0x155')]));return{'code':0xc8,'result':_0xf867('0x159')};}};AGIVertices[_0xf867('0x16')]['logout']=function(_0x3d90fa){logger[_0xf867('0x2e')](util[_0xf867('0x2a')]('Enter\x20in\x20LOGOUT\x20(%s)\x20block',_0x3d90fa[_0xf867('0x38')]));if(!this[_0xf867('0x87')](_0x3d90fa[_0xf867('0x155')])){return this[_0xf867('0x10')][_0xf867('0x31')](_0x3d90fa,_0xf867('0x15a'));}logger['info'](util['format'](_0xf867('0x154'),this[_0xf867('0x10')][_0xf867('0x3b')],_0x3d90fa[_0xf867('0x155')]));var _0x161252=this[_0xf867('0x52')][_0xf867('0x70')](this,_0x3d90fa[_0xf867('0x155')]);if(_0x161252){logger[_0xf867('0x2e')](util[_0xf867('0x2a')](_0xf867('0x156'),this[_0xf867('0x10')]['callerid'],_0x3d90fa['findBy']));this[_0xf867('0x10')]['noop'](util['format']('AGENT\x20%s\x20FOUND\x20BY',this[_0xf867('0x10')][_0xf867('0x3b')],_0x3d90fa['findBy']));return{'code':0xc8,'result':'success'};}else{logger[_0xf867('0x2e')](util[_0xf867('0x2a')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0xf867('0x10')][_0xf867('0x3b')],_0x3d90fa[_0xf867('0x155')]));this[_0xf867('0x10')]['noop'](util[_0xf867('0x2a')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0xf867('0x10')][_0xf867('0x3b')],_0x3d90fa['findBy']));return{'code':0xc8,'result':'failure'};}};AGIVertices[_0xf867('0x16')]['math']=function(_0x2308d5){logger[_0xf867('0x2e')](util[_0xf867('0x2a')]('Enter\x20in\x20MATH\x20(%s)\x20block',_0x2308d5[_0xf867('0x38')]));if(!this[_0xf867('0x87')](_0x2308d5[_0xf867('0x15b')])){return this['channel'][_0xf867('0x31')](_0x2308d5,_0xf867('0x15c'));}this[_0xf867('0x10')][_0xf867('0xab')](util[_0xf867('0x2a')](_0xf867('0x15d'),_0x2308d5[_0xf867('0x15b')]));var _0x2b7dfe=eval(_0x2308d5[_0xf867('0x15b')]);if(!this[_0xf867('0x87')](_0x2308d5[_0xf867('0xd6')])){return this['channel']['noop'](_0xf867('0xd5'));}var _0x3b0f36=this['getVariable'][_0xf867('0x70')](this,_0x2308d5['variable_id']);if(!_0x3b0f36){return this[_0xf867('0x10')][_0xf867('0x31')](_0x2308d5,_0xf867('0x15e'));}if(_[_0xf867('0x9d')](_0x2b7dfe)){var _0x48b3db=this;_0x2b7dfe['forEach'](function(_0xc5002,_0x143263){_0x48b3db[_0xf867('0x10')][_0xf867('0x9e')](util['format'](_0xf867('0x15f'),_0x3b0f36,_0x143263),_0xc5002);});return this[_0xf867('0x10')][_0xf867('0xab')](util[_0xf867('0x2a')](_0xf867('0x160'),_0x3b0f36));}else{return this[_0xf867('0x10')][_0xf867('0x9e')](_0x3b0f36,_0x2b7dfe);}};AGIVertices['prototype'][_0xf867('0xd')]=function(_0x46f696){logger[_0xf867('0x2e')](util['format']('Enter\x20in\x20MENU\x20(%s)\x20block',_0x46f696[_0xf867('0x38')]));if(_0x46f696[_0xf867('0xa7')]===0x0){return this[_0xf867('0xa6')](_0x46f696);}_0x46f696[_0xf867('0xa7')]-=0x1;if(!this[_0xf867('0x87')](_0x46f696['file_id'])){return this[_0xf867('0x10')]['error'](_0x46f696,'no\x20file\x20audio\x20selected');}var _0x2d476f=this[_0xf867('0x114')][_0xf867('0x70')](this,_0x46f696[_0xf867('0x115')]);if(!_0x2d476f){return this[_0xf867('0x10')][_0xf867('0x31')](_0x46f696,_0xf867('0x116'));}var _0x1668ba=this[_0xf867('0x10')][_0xf867('0x117')](_0x2d476f,_0x46f696[_0xf867('0x161')],_0x46f696[_0xf867('0x162')]);var _0x5902fd=_0x1668ba[_0xf867('0xa4')];if(_0x1668ba[_0xf867('0xa4')]===-0x1){this['createSquareDetailsReport'][_0xf867('0x70')](this,_0x46f696,'-1');return _0x1668ba;}else if(_0x1668ba[_0xf867('0xa0')]===_0xf867('0x66')){_0x1668ba['result']=_0x1668ba[_0xf867('0xa4')][_0xf867('0x9b')]>0x0?_0x1668ba[_0xf867('0xa4')]:'t';}else if(_[_0xf867('0x45')](_0x1668ba[_0xf867('0xa4')])){_0x1668ba[_0xf867('0xa4')]='#';_0x5902fd='#';}if(!this[_0xf867('0x87')](_0x46f696[_0xf867('0xd6')])){this['channel'][_0xf867('0xab')](_0xf867('0xd5'));}else{var _0x3c8567=this['getVariable'][_0xf867('0x70')](this,_0x46f696['variable_id']);if(!_0x3c8567){return this['channel'][_0xf867('0x31')](_0x46f696,_0xf867('0x15e'));}this[_0xf867('0x10')][_0xf867('0x9e')](_0x3c8567,_0x5902fd);}this[_0xf867('0x36')][_0xf867('0x70')](this,_0x46f696,_0x5902fd);return _0x1668ba;};AGIVertices['prototype'][_0xf867('0xab')]=function(_0x2bbe58){logger['info'](util[_0xf867('0x2a')](_0xf867('0x163'),_0x2bbe58['label']));return this['channel'][_0xf867('0xab')](_0x2bbe58[_0xf867('0x164')]||_0x2bbe58[_0xf867('0x38')]);};AGIVertices[_0xf867('0x16')][_0xf867('0x165')]=function(_0x36504e){logger[_0xf867('0x2e')](util[_0xf867('0x2a')](_0xf867('0x166'),_0x36504e[_0xf867('0x38')]));if(!this[_0xf867('0x87')](_0x36504e[_0xf867('0x155')])){return this[_0xf867('0x10')][_0xf867('0x31')](_0x36504e,'no\x20find\x20by\x20configured');}logger[_0xf867('0x2e')](util['format']('FIND\x20AGENT\x20%s\x20BY\x20%s',this['channel'][_0xf867('0x3b')],_0x36504e[_0xf867('0x155')]));var _0x2c6e8f=this[_0xf867('0x4d')][_0xf867('0x70')](this,_0x36504e[_0xf867('0x167')]);var _0x9d7551=this['agentPause'][_0xf867('0x70')](this,_0x36504e[_0xf867('0x155')],_0x2c6e8f);if(_0x9d7551){logger['info'](util[_0xf867('0x2a')](_0xf867('0x156'),this[_0xf867('0x10')][_0xf867('0x3b')],_0x36504e['findBy']));this[_0xf867('0x10')][_0xf867('0xab')](util['format'](_0xf867('0x156'),this[_0xf867('0x10')]['callerid'],_0x36504e[_0xf867('0x155')]));return{'code':0xc8,'result':_0xf867('0x157')};}else{logger[_0xf867('0x2e')](util[_0xf867('0x2a')](_0xf867('0x158'),this[_0xf867('0x10')][_0xf867('0x3b')],_0x36504e[_0xf867('0x155')]));this[_0xf867('0x10')][_0xf867('0xab')](util[_0xf867('0x2a')](_0xf867('0x156'),this[_0xf867('0x10')][_0xf867('0x3b')],_0x36504e[_0xf867('0x155')]));return{'code':0xc8,'result':'failure'};}};AGIVertices[_0xf867('0x16')][_0xf867('0x168')]=function(_0x39ea5c){logger['info'](util[_0xf867('0x2a')](_0xf867('0x169'),_0x39ea5c[_0xf867('0x38')]));if(!this[_0xf867('0x87')](_0x39ea5c[_0xf867('0x115')])){return this[_0xf867('0x10')][_0xf867('0x31')](_0x39ea5c,'no\x20file\x20audio\x20selected');}var _0x373764=this[_0xf867('0x114')][_0xf867('0x70')](this,_0x39ea5c[_0xf867('0x115')]);if(!_0x373764){return this[_0xf867('0x10')][_0xf867('0x31')](_0x39ea5c,_0xf867('0x116'));}var _0x1979d6=this[_0xf867('0x10')][_0xf867('0x58')]('PLAYBACK',[_0x373764,_0x39ea5c[_0xf867('0xe3')]]);if(_0x1979d6['result']===-0x1){return _0x1979d6;}return this[_0xf867('0x10')][_0xf867('0xab')](util[_0xf867('0x2a')](_0xf867('0x16a'),_0xf867('0x16b'),_0x373764));};AGIVertices[_0xf867('0x16')][_0xf867('0x16c')]=function(_0x2376e3){logger[_0xf867('0x2e')](util['format'](_0xf867('0x16d'),_0x2376e3['label']));if(!this['isConfigured'](_0x2376e3[_0xf867('0x16e')])){return this[_0xf867('0x10')][_0xf867('0x31')](_0x2376e3,_0xf867('0x16f'));}var _0x5288ee='';var _0x402197=parseInt(_0x2376e3[_0xf867('0x16e')],0xa);if(isNaN(_0x402197)){_0x5288ee=_0x2376e3[_0xf867('0x16e')];}else{_0x5288ee=this[_0xf867('0x17')][_0xf867('0x70')](this,_0x2376e3[_0xf867('0x16e')]);if(!_0x5288ee){return this['channel']['error'](_0x2376e3,_0xf867('0x170'));}}var _0x528a68='';if(this[_0xf867('0x87')](_0x2376e3[_0xf867('0x115')])){var _0xa69025=this[_0xf867('0x114')][_0xf867('0x70')](this,_0x2376e3['file_id']);if(_0xa69025){_0x528a68=_0xa69025;}}this[_0xf867('0x36')][_0xf867('0x70')](this,_0x2376e3,_0x5288ee);if(_0x2376e3['opts'][_0xf867('0x171')]('x')<0x0){_0x2376e3[_0xf867('0xe3')]+='x';}if(_0x2376e3[_0xf867('0xe3')]['indexOf']('X')<0x0){_0x2376e3['opts']+='X';}this['channel'][_0xf867('0x9e')]('XMCS-QUEUE',_0x5288ee?_0x5288ee[_0xf867('0x172')]():'');var _0x401403=this['channel'][_0xf867('0x58')]('QUEUE',[_0x5288ee,_0x2376e3[_0xf867('0xe3')],_0x2376e3[_0xf867('0x73')],_0x528a68,_0x2376e3[_0xf867('0x66')],_0x2376e3[_0xf867('0x7')],_0x2376e3[_0xf867('0x173')],_0x2376e3[_0xf867('0x174')],'',_0x2376e3['position']]);if(_0x401403[_0xf867('0xa4')]===-0x1){return _0x401403;}return this['channel']['noop'](util['format'](_0xf867('0x16a'),_0xf867('0x175'),_0x5288ee));};AGIVertices[_0xf867('0x16')][_0xf867('0x176')]=function(_0x5d7b71){logger[_0xf867('0x2e')](util[_0xf867('0x2a')](_0xf867('0x177'),_0x5d7b71[_0xf867('0x38')]));var _0x5375d0=_0x5d7b71['recordingFormat']||_0xf867('0x12f');var _0x17ed88=util['format'](_0xf867('0x178'),this[_0xf867('0x10')][_0xf867('0x37')],rs[_0xf867('0x11b')](0x5));var _0x47b0c1=util[_0xf867('0x2a')](_0xf867('0x179'),FILES_PATH,_0x17ed88,_0x5375d0);var _0x5a714c=util[_0xf867('0x2a')]('%s/recordings/%s',FILES_PATH,_0x17ed88);this[_0xf867('0x3c')][_0xf867('0x70')](this,_0x5d7b71,_0x17ed88,_0x47b0c1);this[_0xf867('0x10')][_0xf867('0x9e')](_0xf867('0x17a'),_0x17ed88);logger['info'](_0xf867('0x17b'),_0x5a714c,_0x5375d0,_0x5d7b71[_0xf867('0x17c')],_0x5d7b71[_0xf867('0x66')]);return this[_0xf867('0x10')]['recordFile'](_0x5a714c,_0x5375d0,_0x5d7b71[_0xf867('0x17c')],_0x5d7b71[_0xf867('0x66')],undefined,!![]);};AGIVertices['prototype']['restapi']=function(_0x3100da){logger[_0xf867('0x2e')](util[_0xf867('0x2a')]('Enter\x20in\x20RESTAPI\x20(%s)\x20block',_0x3100da[_0xf867('0x38')]));if(!this[_0xf867('0x87')](_0x3100da[_0xf867('0x73')])){return this[_0xf867('0x10')][_0xf867('0xab')](_0xf867('0x17d'));}var _0x48b884=this[_0xf867('0x65')]['sync'](this,_0x3100da);logger['info'](util['format'](_0xf867('0x17e'),util[_0xf867('0x17f')](_0x48b884,{'showHidden':![],'depth':null})));if(!this[_0xf867('0x87')](_0x3100da[_0xf867('0xd6')])){return this[_0xf867('0x10')][_0xf867('0xab')](_0xf867('0x180'));}var _0x4da65e=this[_0xf867('0xa3')][_0xf867('0x70')](this,_0x3100da[_0xf867('0xd6')]);if(!_0x4da65e){return this[_0xf867('0x10')][_0xf867('0x31')](_0x3100da,_0xf867('0x15e'));}this[_0xf867('0x10')]['setVariable'](util[_0xf867('0x2a')](_0xf867('0x181'),_0x4da65e),_0x48b884['statusCode']?_0x48b884['statusCode']:_0xf867('0x182'));this['channel'][_0xf867('0x9e')](util[_0xf867('0x2a')](_0xf867('0x183'),_0x4da65e),_0x48b884['statusMessage']?_0x48b884[_0xf867('0x79')]:'OK');if(_0x48b884['body']){try{this[_0xf867('0x9c')](_0x48b884[_0xf867('0x75')],_0x4da65e);}catch(_0x462c05){logger[_0xf867('0x31')](util[_0xf867('0x2a')]('Unable\x20to\x20set\x20result\x20in\x20variable\x20%s',_0x4da65e));}}return this[_0xf867('0x10')][_0xf867('0xab')](util[_0xf867('0x2a')](_0xf867('0xda'),_0x4da65e));};AGIVertices[_0xf867('0x16')]['saydigits']=function(_0x2d4dc7){logger[_0xf867('0x2e')](util['format'](_0xf867('0x184'),_0x2d4dc7[_0xf867('0x38')]));return this[_0xf867('0x10')][_0xf867('0x185')](_0x2d4dc7[_0xf867('0x186')][_0xf867('0x5a')](/\s+/g,''),_0x2d4dc7[_0xf867('0x17c')]);};AGIVertices[_0xf867('0x16')][_0xf867('0x187')]=function(_0x2734ab){logger['info'](util[_0xf867('0x2a')](_0xf867('0x188'),_0x2734ab[_0xf867('0x38')]));return this['channel'][_0xf867('0x189')](_0x2734ab[_0xf867('0x67')][_0xf867('0x5a')](/\s+/g,''),_0x2734ab['escape_digits']);};AGIVertices['prototype'][_0xf867('0x18a')]=function(_0x3d9a8a){logger[_0xf867('0x2e')](util[_0xf867('0x2a')](_0xf867('0x18b'),_0x3d9a8a[_0xf867('0x38')]));return this['channel'][_0xf867('0x18c')](_0x3d9a8a[_0xf867('0x5e')],_0x3d9a8a['escape_digits']);};AGIVertices[_0xf867('0x16')][_0xf867('0x18d')]=function(_0x1afad4){logger['info'](util['format'](_0xf867('0x18e'),_0x1afad4[_0xf867('0x38')]));if(!this[_0xf867('0x87')](_0x1afad4[_0xf867('0x18f')])){return this[_0xf867('0x10')][_0xf867('0xab')](_0xf867('0x190'));}var _0x50f1d5=this['getMailAccount'][_0xf867('0x70')](this,_0x1afad4[_0xf867('0x18f')]);if(!_0x50f1d5||!_0x50f1d5['Smtp']){return this[_0xf867('0x10')]['error'](_0x1afad4,_0xf867('0x191'));}var _0x5cf0b5={'from':util['format'](_0xf867('0x192'),_0x50f1d5[_0xf867('0x15')],_0x50f1d5[_0xf867('0x193')]||_0x50f1d5[_0xf867('0x194')][_0xf867('0x195')]),'to':_0x1afad4['to']||'','cc':_0x1afad4['cc']||'','bcc':_0x1afad4[_0xf867('0x196')]||'','subject':_0x1afad4[_0xf867('0x197')],'html':_0x1afad4['text'],'text':_0x1afad4['text']};var _0x1439d2={'tls':{'rejectUnauthorized':![]}};if(_0x50f1d5['Smtp'][_0xf867('0x198')]){_0x1439d2[_0xf867('0x198')]=_0x50f1d5[_0xf867('0x194')][_0xf867('0x198')];}else{_0x1439d2[_0xf867('0x199')]=_0x50f1d5[_0xf867('0x194')][_0xf867('0x199')];_0x1439d2[_0xf867('0x19a')]=_0x50f1d5[_0xf867('0x194')][_0xf867('0x19a')];_0x1439d2[_0xf867('0x19b')]=_0x50f1d5[_0xf867('0x194')][_0xf867('0x19b')];}if(_0x50f1d5[_0xf867('0x194')][_0xf867('0x19c')]){_0x1439d2[_0xf867('0x19d')]={'user':_0x50f1d5[_0xf867('0x194')][_0xf867('0x195')],'pass':_0x50f1d5[_0xf867('0x194')]['pass']};}if(this['isConfigured'](_0x1afad4[_0xf867('0x19e')])){}logger['debug'](_0xf867('0x19f'),JSON['stringify'](_0x5cf0b5));this['createSquareDetailsReport'][_0xf867('0x70')](this,_0x1afad4,_0x1afad4['account_id']);this[_0xf867('0x10')][_0xf867('0xab')](util[_0xf867('0x2a')](_0xf867('0x1a0'),_0x50f1d5['name']));this[_0xf867('0x27')]['sync'](this,_0x1439d2,_0x5cf0b5);return this[_0xf867('0x10')][_0xf867('0xab')](_0xf867('0x1a1'));};AGIVertices[_0xf867('0x16')][_0xf867('0x1a2')]=function(_0xbdd4b5){logger['info'](util[_0xf867('0x2a')](_0xf867('0x1a3'),_0xbdd4b5[_0xf867('0x38')]));return this['channel'][_0xf867('0xab')]('SENDFAX\x20block\x20not\x20implemented');};AGIVertices['prototype'][_0xf867('0x1a4')]=function(_0xb3f939){logger[_0xf867('0x2e')](util[_0xf867('0x2a')]('Enter\x20in\x20SENDSMS\x20(%s)\x20block',_0xb3f939[_0xf867('0x38')]));if(!this[_0xf867('0x87')](_0xb3f939[_0xf867('0x1a5')])){return this[_0xf867('0x10')]['noop'](_0xf867('0x1a6'));}var _0x1263ba=this['getSmsAccount'][_0xf867('0x70')](this,_0xb3f939[_0xf867('0x1a5')]);if(!_0x1263ba){return this['channel'][_0xf867('0x31')](_0xb3f939,'no\x20sms\x20account\x20found');}var _0x1c6839={'body':_0xb3f939[_0xf867('0x1a7')],'phone':_0xb3f939['to']||'','SmsAccountId':_0x1263ba['id']};logger['debug'](_0xf867('0x1a8'),JSON[_0xf867('0x76')](_0x1c6839));this[_0xf867('0x36')][_0xf867('0x70')](this,_0xb3f939,_0xb3f939[_0xf867('0x1a5')]);this[_0xf867('0x10')]['noop'](util['format']('Trying\x20SendSMS\x20with\x20account\x20%s',_0x1263ba[_0xf867('0x15')]));this[_0xf867('0x35')][_0xf867('0x70')](this,_0x1c6839);return this[_0xf867('0x10')]['noop'](_0xf867('0x1a9'));};AGIVertices[_0xf867('0x16')][_0xf867('0x1aa')]=function(_0x4a8006){logger[_0xf867('0x2e')](util[_0xf867('0x2a')](_0xf867('0x1ab'),_0x4a8006[_0xf867('0x38')]));if(!this[_0xf867('0x87')](_0x4a8006['variable_id'])){return this[_0xf867('0x10')][_0xf867('0x31')](_0x4a8006,_0xf867('0x1ac'));}var _0x248b8d=this[_0xf867('0xa3')][_0xf867('0x70')](this,_0x4a8006[_0xf867('0xd6')]);if(!_0x248b8d){return this[_0xf867('0x10')]['error'](_0x4a8006,_0xf867('0x15e'));}return this[_0xf867('0x10')][_0xf867('0x9e')](_0x248b8d,_0x4a8006[_0xf867('0x1ad')]);};AGIVertices[_0xf867('0x16')][_0xf867('0x1ae')]=function(_0x23300e){logger[_0xf867('0x2e')](util[_0xf867('0x2a')](_0xf867('0x1af'),_0x23300e[_0xf867('0x38')]));this[_0xf867('0x10')][_0xf867('0xab')](_0xf867('0x1b0'));if(_0x23300e['answer']===_0xf867('0x1b1')){this[_0xf867('0x10')][_0xf867('0xab')](_0xf867('0x1b2'));return this[_0xf867('0x10')][_0xf867('0xb6')]();}return this[_0xf867('0x10')][_0xf867('0xab')](_0xf867('0x1b3'));};AGIVertices[_0xf867('0x16')][_0xf867('0x1b4')]=function(_0xbb9ed7){logger[_0xf867('0x2e')](util[_0xf867('0x2a')](_0xf867('0x1b5'),_0xbb9ed7[_0xf867('0x38')]));if(!this['isConfigured'](_0xbb9ed7[_0xf867('0x1b6')])){return this[_0xf867('0x10')][_0xf867('0x31')](_0xbb9ed7,_0xf867('0x1b7'));}var _0x4e894e=this[_0xf867('0x19')]['sync'](this,_0xbb9ed7['project_id']);if(!this[_0xf867('0x87')](_0x4e894e)){return this[_0xf867('0x10')]['error'](_0xbb9ed7,util[_0xf867('0x2a')](_0xf867('0x1b8'),_0xbb9ed7[_0xf867('0x1b6')]));}if(_0x4e894e===this['channel']['arg_1']){return this[_0xf867('0x10')]['error'](_0xbb9ed7,_0xf867('0x1b9'));}this[_0xf867('0x36')][_0xf867('0x70')](this,_0xbb9ed7,_0x4e894e);var _0x53bc44=this['channel'][_0xf867('0x58')](_0xf867('0x1ba'),util['format'](_0xf867('0x1bb'),config['agi'][_0xf867('0x199')]||_0xf867('0x1bc'),_0x4e894e,this[_0xf867('0x10')][_0xf867('0x3a')]));if(_0x53bc44[_0xf867('0xa4')]===-0x1){return _0x53bc44;}return this[_0xf867('0x10')][_0xf867('0xab')](util['format'](_0xf867('0x16a'),'AGI',_0x4e894e));};AGIVertices['prototype'][_0xf867('0x1bd')]=function(_0x321fa0){logger[_0xf867('0x2e')](util[_0xf867('0x2a')](_0xf867('0x1be'),_0x321fa0[_0xf867('0x38')]));var _0x5a10aa=this['shellCommand']['sync'](this,_0x321fa0['command']);this['createSquareDetailsReport'][_0xf867('0x70')](this,_0x321fa0,_0x321fa0[_0xf867('0xb5')]);if(this['isConfigured'](_0x321fa0['variable_id'])){var _0x495652=this[_0xf867('0xa3')]['sync'](this,_0x321fa0[_0xf867('0xd6')]);if(_0x495652){this[_0xf867('0x10')][_0xf867('0x9e')](_0x495652,_0x5a10aa);return this[_0xf867('0x10')][_0xf867('0xab')](util[_0xf867('0x2a')](_0xf867('0x1bf'),_0x321fa0[_0xf867('0xb5')],_0x495652));}}return this['channel'][_0xf867('0xab')](util['format'](_0xf867('0x1c0'),_0x321fa0[_0xf867('0xb5')]));};AGIVertices[_0xf867('0x16')][_0xf867('0x1c1')]=function(_0x1f1103){logger[_0xf867('0x2e')](util['format'](_0xf867('0x1c2'),_0x1f1103[_0xf867('0x38')]));_0x1f1103[_0xf867('0x5e')]=_0x1f1103[_0xf867('0x5e')][_0xf867('0x5a')](/(\r\n|\n|\r)/gm,'\x20');if(!this['isConfigured'](_0x1f1103[_0xf867('0x5c')])){return this[_0xf867('0x10')][_0xf867('0xab')](_0xf867('0x1c3'));}if(!this[_0xf867('0x87')](_0x1f1103[_0xf867('0x5e')])){return this['channel'][_0xf867('0xab')](_0xf867('0xa9'));}this[_0xf867('0x10')][_0xf867('0xab')](util['format'](_0xf867('0x1c4'),_0x1f1103[_0xf867('0x5e')]));var _0x46feb7=this[_0xf867('0x5b')][_0xf867('0x70')](this,_0x1f1103);if(_0x46feb7){this[_0xf867('0x10')][_0xf867('0xab')](util['format']('Google\x20Cloud\x20TTS\x20%s\x20file\x20created',_0x46feb7));var _0xf6365=this[_0xf867('0x10')][_0xf867('0x104')](_0x46feb7);try{fs[_0xf867('0x105')](_0x46feb7+'.wav');}catch(_0x5020c1){logger[_0xf867('0x31')](_0x5020c1);}return _0xf6365;}return this[_0xf867('0x10')]['error'](_0x1f1103,_0xf867('0x1c5'));};AGIVertices[_0xf867('0x16')][_0xf867('0x1c6')]=function(_0x314a51){logger[_0xf867('0x2e')](util[_0xf867('0x2a')](_0xf867('0x1c7'),_0x314a51[_0xf867('0x38')]));_0x314a51[_0xf867('0x5e')]=_0x314a51[_0xf867('0x5e')]['replace'](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0xf867('0x87')](_0x314a51['text'])){return this[_0xf867('0x10')]['noop'](_0xf867('0xa9'));}this[_0xf867('0x10')][_0xf867('0xab')](util[_0xf867('0x2a')](_0xf867('0x1c8'),_0x314a51[_0xf867('0x5e')]));var _0x5702f5=this[_0xf867('0x63')][_0xf867('0x70')](this,_0x314a51);if(_0x5702f5){this[_0xf867('0x10')][_0xf867('0xab')](util[_0xf867('0x2a')]('Google\x20TTS\x20%s\x20file\x20created',_0x5702f5));var _0x5486eb=this[_0xf867('0x10')][_0xf867('0x104')](_0x5702f5);try{fs[_0xf867('0x105')](_0x5702f5+'.wav');}catch(_0x10d55c){logger['error'](_0x10d55c);}return _0x5486eb;}return this[_0xf867('0x10')]['error'](_0x314a51,_0xf867('0x1c9'));};AGIVertices['prototype']['unpause']=function(_0x499269){logger[_0xf867('0x2e')](util['format'](_0xf867('0x1ca'),_0x499269[_0xf867('0x38')]));if(!this['isConfigured'](_0x499269[_0xf867('0x155')])){return this['channel'][_0xf867('0x31')](_0x499269,_0xf867('0x15a'));}logger[_0xf867('0x2e')](util['format'](_0xf867('0x154'),this[_0xf867('0x10')][_0xf867('0x3b')],_0x499269['findBy']));var _0x3e45f9=this[_0xf867('0x51')]['sync'](this,_0x499269[_0xf867('0x155')]);if(_0x3e45f9){logger[_0xf867('0x2e')](util['format']('AGENT\x20%s\x20FOUND\x20BY',this[_0xf867('0x10')][_0xf867('0x3b')],_0x499269['findBy']));this[_0xf867('0x10')][_0xf867('0xab')](util[_0xf867('0x2a')](_0xf867('0x156'),this['channel'][_0xf867('0x3b')],_0x499269[_0xf867('0x155')]));return{'code':0xc8,'result':_0xf867('0x157')};}else{logger[_0xf867('0x2e')](util[_0xf867('0x2a')](_0xf867('0x158'),this[_0xf867('0x10')]['callerid'],_0x499269['findBy']));this[_0xf867('0x10')][_0xf867('0xab')](util[_0xf867('0x2a')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this['channel'][_0xf867('0x3b')],_0x499269[_0xf867('0x155')]));return{'code':0xc8,'result':_0xf867('0x159')};}};AGIVertices[_0xf867('0x16')][_0xf867('0x1cb')]=function(_0x511be4){logger['info'](util[_0xf867('0x2a')](_0xf867('0x1cc'),_0x511be4[_0xf867('0x38')]));var _0x14964c=this[_0xf867('0x10')][_0xf867('0x58')](_0xf867('0x1cd'),[_0x511be4[_0xf867('0x1ce')],_0x511be4[_0xf867('0xaa')]]);if(_0x14964c[_0xf867('0xa4')]===-0x1){return _0x14964c;}return this[_0xf867('0x10')]['noop'](util[_0xf867('0x2a')](_0xf867('0x16a'),_0xf867('0x1cd'),_0x511be4[_0xf867('0x1ce')]));};AGIVertices['prototype']['vswitch']=function(_0x3bebd3){logger[_0xf867('0x2e')](util[_0xf867('0x2a')](_0xf867('0x1cf'),_0x3bebd3[_0xf867('0x38')]));if(!this[_0xf867('0x87')](_0x3bebd3[_0xf867('0xd6')])){return this[_0xf867('0x10')][_0xf867('0x31')](_0x3bebd3,_0xf867('0x1ac'));}var _0x58ad3e=this['getVariable'][_0xf867('0x70')](this,_0x3bebd3[_0xf867('0xd6')]);if(!_0x58ad3e){return this[_0xf867('0x10')][_0xf867('0x31')](_0x3bebd3,_0xf867('0x15e'));}var _0x23fb24=this[_0xf867('0x10')][_0xf867('0xa3')](_0x58ad3e);return{'code':0xc8,'result':_0x23fb24[_0xf867('0xa0')]?_0x23fb24['extra']:'-'};};String[_0xf867('0x16')]['replaceAll']=function(_0x3026a8,_0xc36d19){return this['split'](_0x3026a8)['join'](_0xc36d19);};module['exports']=AGIVertices;
\ No newline at end of file
index da5a05e..c5ca5ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x28b2=['voicePause','info','attended','destlinkedid','savePause','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','acwTimeout','stopAcw','format','YYYY-MM-DD\x20HH:mm:ss','uniqueid','lastPauseAt','timer','update','catch','error','[%s][UPDATE][ERRORS:%s]','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','finally','[ACW][START]\x20%s','message','[%s][TIMER][STOP][AGENT:%s]','[%s][UPDATE][ACWTIME:%s]','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]','stringify','[ACW][STOP]\x20%s','[ACW][syncAgentConnect]\x20%s','[ACW][syncAgentConnectPreview]\x20%s','isUndefined','[%s][HANGUP:UNIQUEID]','linkedid','startAcw','[ACW][syncHangupRequest]\x20%s','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','[ACW][syncHangup]\x20%s','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','transfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','transfererlinkedid','[%s][BLINDTRANSFER:LINKEDID]','[ACW][syncBlindTransfer]\x20%s','all','Auto-Pause','util','moment','../ami','../../../config/logger','acw','../rpc/user','voiceQueues','agents','timers','channels','agentconnect','syncAgentConnect','bind','hanguprequest','syncHangupRequest','hangup','agentringnoanswer','syncAgentRingNoAnswer','syncAttendedTransfer','syncBlindTransfer','custom:agentConnectPreview','syncAgentConnectPreview','milliseconds','diff','prototype','interface','queue','ACW','mandatoryDisposition','mandatoryDispositionPause','then','getAgent'];(function(_0x2707fb,_0x4eb208){var _0x19b3db=function(_0x33b894){while(--_0x33b894){_0x2707fb['push'](_0x2707fb['shift']());}};_0x19b3db(++_0x4eb208);}(_0x28b2,0xd3));var _0x228b=function(_0x556bb1,_0x34830d){_0x556bb1=_0x556bb1-0x0;var _0x45455f=_0x28b2[_0x556bb1];return _0x45455f;};'use strict';var util=require(_0x228b('0x0'));var _=require('lodash');var moment=require(_0x228b('0x1'));var ami=require(_0x228b('0x2'));var logger=require(_0x228b('0x3'))(_0x228b('0x4'));var RpcUser=require(_0x228b('0x5'));var RpcVoiceAgentReport=require('../rpc/voiceAgentReport');function Acw(_0x109b0d){this[_0x228b('0x6')]=_0x109b0d[_0x228b('0x6')];this[_0x228b('0x7')]=_0x109b0d[_0x228b('0x7')];this[_0x228b('0x8')]=_0x109b0d[_0x228b('0x8')];this[_0x228b('0x9')]={};ami['on'](_0x228b('0xa'),this[_0x228b('0xb')][_0x228b('0xc')](this));ami['on'](_0x228b('0xd'),this[_0x228b('0xe')][_0x228b('0xc')](this));ami['on'](_0x228b('0xf'),this['syncHangup'][_0x228b('0xc')](this));ami['on'](_0x228b('0x10'),this[_0x228b('0x11')][_0x228b('0xc')](this));ami['on']('attendedtransfer',this[_0x228b('0x12')][_0x228b('0xc')](this));ami['on']('blindtransfer',this[_0x228b('0x13')][_0x228b('0xc')](this));ami['on'](_0x228b('0x14'),this[_0x228b('0x15')][_0x228b('0xc')](this));}function getDiff(_0x5107aa){var _0x3c02a9=moment()[_0x228b('0x16')](0x0);var _0x3b875c=moment(_0x5107aa)[_0x228b('0x16')](0x0);return _0x3c02a9[_0x228b('0x17')](_0x3b875c,'seconds');}Acw[_0x228b('0x18')]['startAcw']=function(_0x287327){try{var _0x211006=this;var _0x135eed=this[_0x228b('0x9')][_0x287327][_0x228b('0x19')];var _0x219577=this[_0x228b('0x9')][_0x287327][_0x228b('0x1a')];var _0x425e27=this[_0x228b('0x6')][_0x219577];var _0x340362=![];var _0x4834e2=_0x228b('0x1b');if(_0x425e27[_0x228b('0x1c')]){if(_0x425e27[_0x228b('0x1d')]['name']){_0x340362=!![];_0x4834e2=_0x425e27[_0x228b('0x1d')]['name'];}}ami['Action']({'action':'QueuePause','interface':_0x135eed,'paused':!![],'reason':_0x4834e2})[_0x228b('0x1e')](function(_0x5a766e){if(_0x211006[_0x228b('0x7')][_0x135eed]){return RpcUser[_0x228b('0x1f')](_0x211006[_0x228b('0x7')][_0x135eed]['id'])[_0x228b('0x1e')](function(_0xb6d201){if(_0xb6d201&&!_0xb6d201[_0x228b('0x20')]){logger[_0x228b('0x21')]('[%s][START][AGENT:%s][QUEUE:%s]',_0x287327,_0x135eed,_0x219577);var _0xf2bc37=_0x211006[_0x228b('0x9')][_0x287327][_0x228b('0x22')]&&_0x211006[_0x228b('0x9')][_0x287327]['destlinkedid']?_0x211006['channels'][_0x287327][_0x228b('0x23')]:_0x287327;return RpcUser[_0x228b('0x24')](_0x211006[_0x228b('0x7')][_0x135eed],_0x4834e2,_0xf2bc37)[_0x228b('0x1e')](function(_0x1fa33a){if(!_0x340362){_0x211006['timers'][_0x135eed]={};logger[_0x228b('0x21')](_0x228b('0x25'),_0x287327,_0x211006[_0x228b('0x6')][_0x219577][_0x228b('0x26')],_0x135eed,_0x219577);_0x211006['timers'][_0x135eed]['timer']=setTimeout(_0x211006[_0x228b('0x27')][_0x228b('0xc')](_0x211006,_0x135eed),_0x211006[_0x228b('0x6')][_0x219577][_0x228b('0x26')]*0x3e8);_0x211006[_0x228b('0x8')][_0x135eed]['lastPauseAt']=moment()[_0x228b('0x28')](_0x228b('0x29'));_0x211006['timers'][_0x135eed][_0x228b('0x2a')]=_0x287327;_0x211006[_0x228b('0x8')][_0x135eed][_0x228b('0x1a')]=_0x219577;_0x211006[_0x228b('0x8')][_0x135eed]['updateAcw']=function(){var _0x48d9d6=getDiff(_0x211006[_0x228b('0x8')][_0x135eed][_0x228b('0x2b')]);clearTimeout(_0x211006[_0x228b('0x8')][_0x135eed]['timer']);_0x211006['timers'][_0x135eed][_0x228b('0x2c')]=![];RpcVoiceAgentReport[_0x228b('0x2d')]({'acwtime':_0x48d9d6},_0x211006[_0x228b('0x8')][_0x135eed][_0x228b('0x2a')],_0x135eed)[_0x228b('0x1e')](function(_0x5c2fc1){logger[_0x228b('0x21')]('[%s][UPDATE][ACWTIME:%s]',_0x287327,_0x48d9d6,_0x5c2fc1);})[_0x228b('0x2e')](function(_0x5ce284){logger[_0x228b('0x2f')](_0x228b('0x30'),_0x287327,_0x5ce284);});delete _0x211006['timers'][_0x135eed];};}});}else{logger['info'](_0x228b('0x31'),_0x287327,_0x135eed,_0x219577);}});}})[_0x228b('0x2e')](function(_0xbebd6c){logger[_0x228b('0x2f')](_0x228b('0x25'),_0x287327,_0x211006[_0x228b('0x6')][_0x219577][_0x228b('0x26')],_0x135eed,_0x219577);})[_0x228b('0x32')](function(){delete _0x211006[_0x228b('0x9')][_0x287327];});}catch(_0x5bb88e){logger['error'](_0x228b('0x33'),_0x5bb88e[_0x228b('0x34')]);}};Acw[_0x228b('0x18')][_0x228b('0x27')]=function(_0x436ca3){try{var _0x1658ee=this;if(_0x1658ee[_0x228b('0x8')][_0x436ca3]){_0x1658ee['timers'][_0x436ca3]['timer']=![];var _0x170b72=_0x1658ee[_0x228b('0x8')][_0x436ca3]['uniqueid'];var _0x394798=_0x1658ee[_0x228b('0x8')][_0x436ca3][_0x228b('0x1a')];var _0x4a4d61=_0x1658ee['voiceQueues'][_0x394798][_0x228b('0x26')];logger[_0x228b('0x21')](_0x228b('0x35'),_0x170b72,_0x436ca3);RpcUser['saveUnpause'](this[_0x228b('0x7')][_0x436ca3]);RpcVoiceAgentReport[_0x228b('0x2d')]({'acwtime':_0x4a4d61,'agentacw':!![]},_0x170b72,_0x436ca3)[_0x228b('0x1e')](function(_0x3eba33){logger[_0x228b('0x21')](_0x228b('0x36'),_0x170b72,_0x4a4d61,_0x3eba33);})['catch'](function(_0x3edae){logger[_0x228b('0x2f')](_0x228b('0x30'),_0x170b72,_0x3edae);});}else{logger[_0x228b('0x2f')](_0x228b('0x37'),_0x436ca3);if(_0x1658ee[_0x228b('0x8')]){logger[_0x228b('0x21')](_0x228b('0x38'),JSON[_0x228b('0x39')](_0x1658ee[_0x228b('0x8')]));}}}catch(_0x305084){logger['error'](_0x228b('0x3a'),_0x305084['message']);}};Acw['prototype'][_0x228b('0xb')]=function(_0x446625){try{if(this[_0x228b('0x6')][_0x446625['queue']]&&(this[_0x228b('0x6')][_0x446625[_0x228b('0x1a')]][_0x228b('0x4')]||this[_0x228b('0x6')][_0x446625[_0x228b('0x1a')]]['mandatoryDisposition'])){if(this[_0x228b('0x7')][_0x446625[_0x228b('0x19')]]){this[_0x228b('0x9')][_0x446625[_0x228b('0x2a')]]={'queue':_0x446625['queue'],'interface':_0x446625[_0x228b('0x19')],'destlinkedid':_0x446625['destlinkedid']};}}}catch(_0x2c355d){logger[_0x228b('0x2f')](_0x228b('0x3b'),_0x2c355d[_0x228b('0x34')]);}};Acw[_0x228b('0x18')]['syncAgentConnectPreview']=function(_0x2af282){try{if(this[_0x228b('0x6')][_0x2af282[_0x228b('0x1a')]]&&(this[_0x228b('0x6')][_0x2af282['queue']][_0x228b('0x4')]||this['voiceQueues'][_0x2af282['queue']][_0x228b('0x1c')])){if(this[_0x228b('0x7')][_0x2af282[_0x228b('0x19')]]){this[_0x228b('0x9')][_0x2af282['uniqueid']]={'queue':_0x2af282[_0x228b('0x1a')],'interface':_0x2af282['interface']};}}}catch(_0x5051cd){logger[_0x228b('0x2f')](_0x228b('0x3c'),_0x5051cd[_0x228b('0x34')]);}};Acw[_0x228b('0x18')]['syncHangupRequest']=function(_0x50cc66){try{if(this['channels'][_0x50cc66[_0x228b('0x2a')]]&&_[_0x228b('0x3d')](this['channels'][_0x50cc66['uniqueid']][_0x228b('0x22')])){logger[_0x228b('0x21')](_0x228b('0x3e'),_0x50cc66[_0x228b('0x2a')]);this['startAcw'](_0x50cc66[_0x228b('0x2a')]);}else if(this[_0x228b('0x9')][_0x50cc66[_0x228b('0x3f')]]&&_[_0x228b('0x3d')](this['channels'][_0x50cc66['linkedid']]['attended'])){logger[_0x228b('0x21')]('[%s][HANGUP:LINKEDID]',_0x50cc66[_0x228b('0x3f')]);this[_0x228b('0x40')](_0x50cc66['linkedid']);}}catch(_0x4da009){logger['error'](_0x228b('0x41'),_0x4da009[_0x228b('0x34')]);}};Acw['prototype']['syncHangup']=function(_0x4be931){try{if(this['channels'][_0x4be931[_0x228b('0x2a')]]&&this['channels'][_0x4be931[_0x228b('0x2a')]][_0x228b('0x22')]){logger[_0x228b('0x21')]('[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]',_0x4be931[_0x228b('0x2a')]);this[_0x228b('0x40')](_0x4be931['uniqueid']);}else if(this['channels'][_0x4be931[_0x228b('0x3f')]]&&this[_0x228b('0x9')][_0x4be931[_0x228b('0x3f')]][_0x228b('0x22')]){logger[_0x228b('0x21')](_0x228b('0x42'),_0x4be931['linkedid']);this[_0x228b('0x40')](_0x4be931[_0x228b('0x3f')]);}}catch(_0x369369){logger[_0x228b('0x2f')](_0x228b('0x43'),_0x369369[_0x228b('0x34')]);}};Acw['prototype'][_0x228b('0x12')]=function(_0x34663a){try{if(!_[_0x228b('0x44')](this[_0x228b('0x9')][_0x34663a[_0x228b('0x45')]])){this[_0x228b('0x40')](_0x34663a[_0x228b('0x45')]);if(this[_0x228b('0x9')][_0x34663a[_0x228b('0x46')]]){this[_0x228b('0x9')][_0x34663a[_0x228b('0x46')]][_0x228b('0x22')]=!![];this['channels'][_0x34663a[_0x228b('0x47')]]=this[_0x228b('0x9')][_0x34663a[_0x228b('0x46')]];delete this[_0x228b('0x9')][_0x34663a[_0x228b('0x46')]];}}else if(!_[_0x228b('0x44')](this[_0x228b('0x9')][_0x34663a[_0x228b('0x47')]])){this[_0x228b('0x40')](_0x34663a[_0x228b('0x47')]);if(this[_0x228b('0x9')][_0x34663a[_0x228b('0x48')]]){this[_0x228b('0x9')][_0x34663a[_0x228b('0x48')]][_0x228b('0x22')]=!![];this[_0x228b('0x9')][_0x34663a[_0x228b('0x45')]]=this[_0x228b('0x9')][_0x34663a[_0x228b('0x48')]];delete this[_0x228b('0x9')][_0x34663a[_0x228b('0x48')]];}}}catch(_0x3f01c7){logger['error'](_0x228b('0x49'),_0x3f01c7[_0x228b('0x34')]);}};Acw['prototype'][_0x228b('0x13')]=function(_0xe97544){try{if(this[_0x228b('0x9')][_0xe97544[_0x228b('0x4a')]]){logger['info'](_0x228b('0x4b'),JSON[_0x228b('0x39')](_0xe97544['transfereruniqueid']));this[_0x228b('0x40')](_0xe97544[_0x228b('0x4a')]);}else if(this[_0x228b('0x9')][_0xe97544[_0x228b('0x4c')]]){logger[_0x228b('0x21')](_0x228b('0x4d'),JSON[_0x228b('0x39')](_0xe97544[_0x228b('0x4c')]));this[_0x228b('0x40')](_0xe97544[_0x228b('0x4c')]);}}catch(_0x19d105){logger[_0x228b('0x2f')](_0x228b('0x4e'),_0x19d105[_0x228b('0x34')]);}};Acw[_0x228b('0x18')][_0x228b('0x11')]=function(_0x40c700){try{if(this[_0x228b('0x6')][_0x40c700[_0x228b('0x1a')]]&&this['voiceQueues'][_0x40c700[_0x228b('0x1a')]]['autopause']===_0x228b('0x4f')){if(this['agents'][_0x40c700[_0x228b('0x19')]]){logger[_0x228b('0x21')]('[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]',_0x40c700['uniqueid'],_0x40c700[_0x228b('0x19')],_0x40c700[_0x228b('0x1a')]);return RpcUser['savePause'](this[_0x228b('0x7')][_0x40c700[_0x228b('0x19')]],_0x228b('0x50'),_0x40c700[_0x228b('0x2a')]);}}}catch(_0x533afe){logger[_0x228b('0x2f')]('[ACW][syncAgentRingNoAnswer]\x20%s',_0x533afe['message']);}};module['exports']=Acw;
\ No newline at end of file
+var _0x7d22=['[%s][BLINDTRANSFER:UNIQUEID]','[%s][BLINDTRANSFER:LINKEDID]','transfererlinkedid','[ACW][syncBlindTransfer]\x20%s','autopause','all','savePause','Auto-Pause','[ACW][syncAgentRingNoAnswer]\x20%s','exports','util','lodash','../ami','../../../config/logger','acw','../rpc/voiceAgentReport','voiceQueues','timers','channels','agentconnect','syncAgentConnect','bind','hangup','agentringnoanswer','syncAgentRingNoAnswer','attendedtransfer','syncBlindTransfer','custom:agentConnectPreview','syncAgentConnectPreview','milliseconds','seconds','prototype','startAcw','interface','queue','ACW','mandatoryDispositionPause','name','then','agents','voicePause','info','[%s][START][AGENT:%s][QUEUE:%s]','attended','destlinkedid','timer','acwTimeout','lastPauseAt','format','YYYY-MM-DD\x20HH:mm:ss','uniqueid','updateAcw','[%s][UPDATE][ACWTIME:%s]','catch','error','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','finally','[ACW][START]\x20%s','message','stopAcw','[%s][TIMER][STOP][AGENT:%s]','saveUnpause','update','[%s][UPDATE][ERRORS:%s]','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]','stringify','mandatoryDisposition','[ACW][syncAgentConnect]\x20%s','[ACW][syncAgentConnectPreview]\x20%s','syncHangupRequest','[%s][HANGUP:UNIQUEID]','linkedid','[%s][HANGUP:LINKEDID]','[ACW][syncHangupRequest]\x20%s','syncHangup','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','[ACW][syncHangup]\x20%s','syncAttendedTransfer','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','transfereruniqueid'];(function(_0x2c028f,_0x52beb1){var _0x5b6908=function(_0x439e57){while(--_0x439e57){_0x2c028f['push'](_0x2c028f['shift']());}};_0x5b6908(++_0x52beb1);}(_0x7d22,0xba));var _0x27d2=function(_0x1dece5,_0x5141cd){_0x1dece5=_0x1dece5-0x0;var _0x4ebaa5=_0x7d22[_0x1dece5];return _0x4ebaa5;};'use strict';var util=require(_0x27d2('0x0'));var _=require(_0x27d2('0x1'));var moment=require('moment');var ami=require(_0x27d2('0x2'));var logger=require(_0x27d2('0x3'))(_0x27d2('0x4'));var RpcUser=require('../rpc/user');var RpcVoiceAgentReport=require(_0x27d2('0x5'));function Acw(_0x587100){this['voiceQueues']=_0x587100[_0x27d2('0x6')];this['agents']=_0x587100['agents'];this[_0x27d2('0x7')]=_0x587100['timers'];this[_0x27d2('0x8')]={};ami['on'](_0x27d2('0x9'),this[_0x27d2('0xa')][_0x27d2('0xb')](this));ami['on']('hanguprequest',this['syncHangupRequest']['bind'](this));ami['on'](_0x27d2('0xc'),this['syncHangup']['bind'](this));ami['on'](_0x27d2('0xd'),this[_0x27d2('0xe')][_0x27d2('0xb')](this));ami['on'](_0x27d2('0xf'),this['syncAttendedTransfer'][_0x27d2('0xb')](this));ami['on']('blindtransfer',this[_0x27d2('0x10')][_0x27d2('0xb')](this));ami['on'](_0x27d2('0x11'),this[_0x27d2('0x12')][_0x27d2('0xb')](this));}function getDiff(_0x47dc3d){var _0x3cc281=moment()[_0x27d2('0x13')](0x0);var _0x56b363=moment(_0x47dc3d)[_0x27d2('0x13')](0x0);return _0x3cc281['diff'](_0x56b363,_0x27d2('0x14'));}Acw[_0x27d2('0x15')][_0x27d2('0x16')]=function(_0x1c45ed){try{var _0x55a01c=this;var _0x57d8d9=this[_0x27d2('0x8')][_0x1c45ed][_0x27d2('0x17')];var _0x21b2e=this[_0x27d2('0x8')][_0x1c45ed][_0x27d2('0x18')];var _0x3dc2b2=this[_0x27d2('0x6')][_0x21b2e];var _0x5ade2f=![];var _0x2cf219=_0x27d2('0x19');if(_0x3dc2b2['mandatoryDisposition']){if(_0x3dc2b2[_0x27d2('0x1a')][_0x27d2('0x1b')]){_0x5ade2f=!![];_0x2cf219=_0x3dc2b2['mandatoryDispositionPause'][_0x27d2('0x1b')];}}ami['Action']({'action':'QueuePause','interface':_0x57d8d9,'paused':!![],'reason':_0x2cf219})[_0x27d2('0x1c')](function(_0x3e84e5){if(_0x55a01c[_0x27d2('0x1d')][_0x57d8d9]){return RpcUser['getAgent'](_0x55a01c[_0x27d2('0x1d')][_0x57d8d9]['id'])[_0x27d2('0x1c')](function(_0x5cc612){if(_0x5cc612&&!_0x5cc612[_0x27d2('0x1e')]){logger[_0x27d2('0x1f')](_0x27d2('0x20'),_0x1c45ed,_0x57d8d9,_0x21b2e);var _0x201b6a=_0x55a01c[_0x27d2('0x8')][_0x1c45ed][_0x27d2('0x21')]&&_0x55a01c[_0x27d2('0x8')][_0x1c45ed][_0x27d2('0x22')]?_0x55a01c['channels'][_0x1c45ed]['destlinkedid']:_0x1c45ed;return RpcUser['savePause'](_0x55a01c[_0x27d2('0x1d')][_0x57d8d9],_0x2cf219,_0x201b6a)[_0x27d2('0x1c')](function(_0x3dc564){if(!_0x5ade2f){_0x55a01c[_0x27d2('0x7')][_0x57d8d9]={};logger['info']('[%s][TIMER:%s][AGENT:%s][QUEUE:%s]',_0x1c45ed,_0x55a01c[_0x27d2('0x6')][_0x21b2e]['acwTimeout'],_0x57d8d9,_0x21b2e);_0x55a01c[_0x27d2('0x7')][_0x57d8d9][_0x27d2('0x23')]=setTimeout(_0x55a01c['stopAcw'][_0x27d2('0xb')](_0x55a01c,_0x57d8d9),_0x55a01c[_0x27d2('0x6')][_0x21b2e][_0x27d2('0x24')]*0x3e8);_0x55a01c[_0x27d2('0x7')][_0x57d8d9][_0x27d2('0x25')]=moment()[_0x27d2('0x26')](_0x27d2('0x27'));_0x55a01c['timers'][_0x57d8d9][_0x27d2('0x28')]=_0x1c45ed;_0x55a01c[_0x27d2('0x7')][_0x57d8d9]['queue']=_0x21b2e;_0x55a01c[_0x27d2('0x7')][_0x57d8d9][_0x27d2('0x29')]=function(){var _0x4154df=getDiff(_0x55a01c[_0x27d2('0x7')][_0x57d8d9][_0x27d2('0x25')]);clearTimeout(_0x55a01c[_0x27d2('0x7')][_0x57d8d9]['timer']);_0x55a01c[_0x27d2('0x7')][_0x57d8d9]['timer']=![];RpcVoiceAgentReport['update']({'acwtime':_0x4154df},_0x55a01c['timers'][_0x57d8d9][_0x27d2('0x28')],_0x57d8d9)['then'](function(_0xca5b01){logger['info'](_0x27d2('0x2a'),_0x1c45ed,_0x4154df,_0xca5b01);})[_0x27d2('0x2b')](function(_0x39664b){logger[_0x27d2('0x2c')]('[%s][UPDATE][ERRORS:%s]',_0x1c45ed,_0x39664b);});delete _0x55a01c[_0x27d2('0x7')][_0x57d8d9];};}});}else{logger[_0x27d2('0x1f')](_0x27d2('0x2d'),_0x1c45ed,_0x57d8d9,_0x21b2e);}});}})[_0x27d2('0x2b')](function(_0x1a01a1){logger[_0x27d2('0x2c')](_0x27d2('0x2e'),_0x1c45ed,_0x55a01c[_0x27d2('0x6')][_0x21b2e][_0x27d2('0x24')],_0x57d8d9,_0x21b2e);})[_0x27d2('0x2f')](function(){delete _0x55a01c['channels'][_0x1c45ed];});}catch(_0x1a58fc){logger[_0x27d2('0x2c')](_0x27d2('0x30'),_0x1a58fc[_0x27d2('0x31')]);}};Acw[_0x27d2('0x15')][_0x27d2('0x32')]=function(_0x28df72){try{var _0x46273=this;if(_0x46273[_0x27d2('0x7')][_0x28df72]){_0x46273[_0x27d2('0x7')][_0x28df72][_0x27d2('0x23')]=![];var _0x42c3ed=_0x46273[_0x27d2('0x7')][_0x28df72]['uniqueid'];var _0x1b887e=_0x46273['timers'][_0x28df72][_0x27d2('0x18')];var _0x1c61ef=_0x46273[_0x27d2('0x6')][_0x1b887e]['acwTimeout'];logger[_0x27d2('0x1f')](_0x27d2('0x33'),_0x42c3ed,_0x28df72);RpcUser[_0x27d2('0x34')](this['agents'][_0x28df72]);RpcVoiceAgentReport[_0x27d2('0x35')]({'acwtime':_0x1c61ef,'agentacw':!![]},_0x42c3ed,_0x28df72)['then'](function(_0x4cd254){logger[_0x27d2('0x1f')](_0x27d2('0x2a'),_0x42c3ed,_0x1c61ef,_0x4cd254);})[_0x27d2('0x2b')](function(_0x302433){logger[_0x27d2('0x2c')](_0x27d2('0x36'),_0x42c3ed,_0x302433);});}else{logger[_0x27d2('0x2c')](_0x27d2('0x37'),_0x28df72);if(_0x46273[_0x27d2('0x7')]){logger[_0x27d2('0x1f')](_0x27d2('0x38'),JSON[_0x27d2('0x39')](_0x46273[_0x27d2('0x7')]));}}}catch(_0x195611){logger[_0x27d2('0x2c')]('[ACW][STOP]\x20%s',_0x195611['message']);}};Acw[_0x27d2('0x15')][_0x27d2('0xa')]=function(_0x490822){try{if(this['voiceQueues'][_0x490822[_0x27d2('0x18')]]&&(this[_0x27d2('0x6')][_0x490822[_0x27d2('0x18')]][_0x27d2('0x4')]||this['voiceQueues'][_0x490822[_0x27d2('0x18')]][_0x27d2('0x3a')])){if(this['agents'][_0x490822['interface']]){this[_0x27d2('0x8')][_0x490822['uniqueid']]={'queue':_0x490822[_0x27d2('0x18')],'interface':_0x490822[_0x27d2('0x17')],'destlinkedid':_0x490822[_0x27d2('0x22')]};}}}catch(_0x35ea08){logger[_0x27d2('0x2c')](_0x27d2('0x3b'),_0x35ea08[_0x27d2('0x31')]);}};Acw[_0x27d2('0x15')]['syncAgentConnectPreview']=function(_0x3fcb86){try{if(this[_0x27d2('0x6')][_0x3fcb86[_0x27d2('0x18')]]&&(this['voiceQueues'][_0x3fcb86['queue']][_0x27d2('0x4')]||this['voiceQueues'][_0x3fcb86[_0x27d2('0x18')]][_0x27d2('0x3a')])){if(this[_0x27d2('0x1d')][_0x3fcb86[_0x27d2('0x17')]]){this['channels'][_0x3fcb86[_0x27d2('0x28')]]={'queue':_0x3fcb86[_0x27d2('0x18')],'interface':_0x3fcb86[_0x27d2('0x17')]};}}}catch(_0x22ca08){logger[_0x27d2('0x2c')](_0x27d2('0x3c'),_0x22ca08['message']);}};Acw['prototype'][_0x27d2('0x3d')]=function(_0x4cc5fc){try{if(this[_0x27d2('0x8')][_0x4cc5fc[_0x27d2('0x28')]]&&_['isUndefined'](this[_0x27d2('0x8')][_0x4cc5fc['uniqueid']][_0x27d2('0x21')])){logger['info'](_0x27d2('0x3e'),_0x4cc5fc['uniqueid']);this['startAcw'](_0x4cc5fc[_0x27d2('0x28')]);}else if(this['channels'][_0x4cc5fc[_0x27d2('0x3f')]]&&_['isUndefined'](this[_0x27d2('0x8')][_0x4cc5fc['linkedid']][_0x27d2('0x21')])){logger[_0x27d2('0x1f')](_0x27d2('0x40'),_0x4cc5fc['linkedid']);this['startAcw'](_0x4cc5fc[_0x27d2('0x3f')]);}}catch(_0x359c41){logger[_0x27d2('0x2c')](_0x27d2('0x41'),_0x359c41[_0x27d2('0x31')]);}};Acw['prototype'][_0x27d2('0x42')]=function(_0x2b13f1){try{if(this[_0x27d2('0x8')][_0x2b13f1[_0x27d2('0x28')]]&&this[_0x27d2('0x8')][_0x2b13f1['uniqueid']]['attended']){logger['info'](_0x27d2('0x43'),_0x2b13f1[_0x27d2('0x28')]);this['startAcw'](_0x2b13f1[_0x27d2('0x28')]);}else if(this[_0x27d2('0x8')][_0x2b13f1['linkedid']]&&this['channels'][_0x2b13f1[_0x27d2('0x3f')]][_0x27d2('0x21')]){logger[_0x27d2('0x1f')](_0x27d2('0x44'),_0x2b13f1[_0x27d2('0x3f')]);this['startAcw'](_0x2b13f1[_0x27d2('0x3f')]);}}catch(_0x583da6){logger[_0x27d2('0x2c')](_0x27d2('0x45'),_0x583da6[_0x27d2('0x31')]);}};Acw['prototype'][_0x27d2('0x46')]=function(_0x294203){try{if(!_[_0x27d2('0x47')](this[_0x27d2('0x8')][_0x294203[_0x27d2('0x48')]])){this['startAcw'](_0x294203['transfereeuniqueid']);if(this[_0x27d2('0x8')][_0x294203[_0x27d2('0x49')]]){this[_0x27d2('0x8')][_0x294203[_0x27d2('0x49')]][_0x27d2('0x21')]=!![];this[_0x27d2('0x8')][_0x294203['transfertargetuniqueid']]=this['channels'][_0x294203[_0x27d2('0x49')]];delete this[_0x27d2('0x8')][_0x294203[_0x27d2('0x49')]];}}else if(!_[_0x27d2('0x47')](this[_0x27d2('0x8')][_0x294203[_0x27d2('0x4a')]])){this[_0x27d2('0x16')](_0x294203[_0x27d2('0x4a')]);if(this[_0x27d2('0x8')][_0x294203['origtransfereruniqueid']]){this[_0x27d2('0x8')][_0x294203[_0x27d2('0x4b')]][_0x27d2('0x21')]=!![];this[_0x27d2('0x8')][_0x294203[_0x27d2('0x48')]]=this[_0x27d2('0x8')][_0x294203[_0x27d2('0x4b')]];delete this[_0x27d2('0x8')][_0x294203['origtransfereruniqueid']];}}}catch(_0x53f8dc){logger[_0x27d2('0x2c')](_0x27d2('0x4c'),_0x53f8dc[_0x27d2('0x31')]);}};Acw[_0x27d2('0x15')]['syncBlindTransfer']=function(_0x265a6b){try{if(this['channels'][_0x265a6b[_0x27d2('0x4d')]]){logger[_0x27d2('0x1f')](_0x27d2('0x4e'),JSON[_0x27d2('0x39')](_0x265a6b[_0x27d2('0x4d')]));this['startAcw'](_0x265a6b[_0x27d2('0x4d')]);}else if(this[_0x27d2('0x8')][_0x265a6b['transfererlinkedid']]){logger[_0x27d2('0x1f')](_0x27d2('0x4f'),JSON['stringify'](_0x265a6b['transfererlinkedid']));this['startAcw'](_0x265a6b[_0x27d2('0x50')]);}}catch(_0x5415db){logger[_0x27d2('0x2c')](_0x27d2('0x51'),_0x5415db[_0x27d2('0x31')]);}};Acw[_0x27d2('0x15')][_0x27d2('0xe')]=function(_0x1e24c8){try{if(this['voiceQueues'][_0x1e24c8[_0x27d2('0x18')]]&&this[_0x27d2('0x6')][_0x1e24c8[_0x27d2('0x18')]][_0x27d2('0x52')]===_0x27d2('0x53')){if(this[_0x27d2('0x1d')][_0x1e24c8['interface']]){logger[_0x27d2('0x1f')]('[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]',_0x1e24c8[_0x27d2('0x28')],_0x1e24c8[_0x27d2('0x17')],_0x1e24c8[_0x27d2('0x18')]);return RpcUser[_0x27d2('0x54')](this['agents'][_0x1e24c8['interface']],_0x27d2('0x55'),_0x1e24c8[_0x27d2('0x28')]);}}}catch(_0x58b590){logger[_0x27d2('0x2c')](_0x27d2('0x56'),_0x58b590['message']);}};module[_0x27d2('0x57')]=Acw;
\ No newline at end of file
index e805c8d..0fb3aa5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x584e=['keepConnected','Action','promisify','action','inspect','error','format','Manager\x20\x22%s\x22\x20closed\x20to\x20%s:%s','sipshowregistry','actionDeviceStateList','actionSipPeerStatus','actionQueueSummary','queuesummary','actionCoreShowChannels','coreshowchannels','info','Manager\x20\x22%s\x22\x20logged\x20on\x20to\x20%s:%s','once','close','connect','Shutdown\x20\x22%s\x22\x20to\x20%s:%s\x20with:\x0a%s','fullybooted','Fullybooted\x20\x22%s\x22\x20to\x20%s:%s','resolve','then','log','exports','asterisk-manager','bluebird','moment','util','../../config/logger','../../config/environment','port','asterisk','username','password'];(function(_0x187629,_0x44ff6f){var _0x4d1e84=function(_0x91db7d){while(--_0x91db7d){_0x187629['push'](_0x187629['shift']());}};_0x4d1e84(++_0x44ff6f);}(_0x584e,0xf9));var _0xe584=function(_0x588011,_0x5e9d11){_0x588011=_0x588011-0x0;var _0x3b3773=_0x584e[_0x588011];return _0x3b3773;};'use strict';var Manager=require(_0xe584('0x0'));var BPromise=require(_0xe584('0x1'));var moment=require(_0xe584('0x2'));var util=require(_0xe584('0x3'));var _=require('lodash');var logger=require(_0xe584('0x4'))('ami');var config=require(_0xe584('0x5'));var ami=new Manager(config['asterisk'][_0xe584('0x6')],config[_0xe584('0x7')]['ip'],config[_0xe584('0x7')][_0xe584('0x8')],config['asterisk'][_0xe584('0x9')],!![]);ami[_0xe584('0xa')]();ami[_0xe584('0xb')]=BPromise[_0xe584('0xc')](ami[_0xe584('0xd')]);function error(_0xb14e29){logger['error'](util['format']('Manager\x20\x22%s\x22\x20error\x20to\x20%s:%s\x20with:\x0a%s',config['asterisk'][_0xe584('0x8')],config[_0xe584('0x7')]['ip'],config[_0xe584('0x7')][_0xe584('0x6')],util[_0xe584('0xe')](_0xb14e29,![],null)));}function close(){logger[_0xe584('0xf')](util[_0xe584('0x10')](_0xe584('0x11'),config['asterisk'][_0xe584('0x8')],config[_0xe584('0x7')]['ip'],config[_0xe584('0x7')][_0xe584('0x6')]));}ami['actionSipShowRegistry']=function(){return function(){return ami[_0xe584('0xb')]({'action':_0xe584('0x12')});};};ami[_0xe584('0x13')]=function(){return function(){return ami[_0xe584('0xb')]({'action':'devicestatelist'});};};ami[_0xe584('0x14')]=function(){return function(){return ami[_0xe584('0xb')]({'action':'sippeerstatus'});};};ami[_0xe584('0x15')]=function(){return function(){return ami[_0xe584('0xb')]({'action':_0xe584('0x16')});};};ami[_0xe584('0x17')]=function(){return function(){return ami[_0xe584('0xb')]({'action':_0xe584('0x18')});};};function connect(_0x422399){logger[_0xe584('0x19')](util[_0xe584('0x10')](_0xe584('0x1a'),config[_0xe584('0x7')][_0xe584('0x8')],config[_0xe584('0x7')]['ip'],config[_0xe584('0x7')][_0xe584('0x6')]));ami[_0xe584('0x1b')](_0xe584('0xf'),error);ami[_0xe584('0x1b')](_0xe584('0x1c'),close);}ami['on'](_0xe584('0x1d'),connect);ami['on']('shutdown',function(_0x275f81){logger[_0xe584('0x19')](util['format'](_0xe584('0x1e'),config['asterisk'][_0xe584('0x8')],config[_0xe584('0x7')]['ip'],config[_0xe584('0x7')]['port'],util[_0xe584('0xe')](_0x275f81,![],null)));});ami['on'](_0xe584('0x1f'),function(_0x5f1f30){logger[_0xe584('0x19')](util[_0xe584('0x10')](_0xe584('0x20'),config[_0xe584('0x7')][_0xe584('0x8')],config[_0xe584('0x7')]['ip'],config[_0xe584('0x7')][_0xe584('0x6')]));return BPromise[_0xe584('0x21')]()['then'](ami['actionSipShowRegistry']())[_0xe584('0x22')](ami[_0xe584('0x13')]())['then'](ami[_0xe584('0x14')]())[_0xe584('0x22')](ami[_0xe584('0x15')]())['then'](ami['actionCoreShowChannels']())['catch'](function(_0x26bb15){console[_0xe584('0x23')](_0x26bb15);});});ami[_0xe584('0x1b')](_0xe584('0xf'),error);ami[_0xe584('0x1b')](_0xe584('0x1c'),close);module[_0xe584('0x24')]=ami;
\ No newline at end of file
+var _0x0b0e=['../../config/environment','asterisk','port','username','password','promisify','action','error','Manager\x20\x22%s\x22\x20error\x20to\x20%s:%s\x20with:\x0a%s','inspect','format','Action','sipshowregistry','actionDeviceStateList','devicestatelist','actionQueueSummary','actionCoreShowChannels','coreshowchannels','Manager\x20\x22%s\x22\x20logged\x20on\x20to\x20%s:%s','close','shutdown','info','Shutdown\x20\x22%s\x22\x20to\x20%s:%s\x20with:\x0a%s','then','actionSipPeerStatus','catch','[ami.js][fullybooted]','once','asterisk-manager','moment','lodash','../../config/logger','ami'];(function(_0x94feeb,_0x124b58){var _0x1dec61=function(_0x586dd4){while(--_0x586dd4){_0x94feeb['push'](_0x94feeb['shift']());}};_0x1dec61(++_0x124b58);}(_0x0b0e,0x187));var _0xe0b0=function(_0x212579,_0xdb4d5a){_0x212579=_0x212579-0x0;var _0x55d50e=_0x0b0e[_0x212579];return _0x55d50e;};'use strict';var Manager=require(_0xe0b0('0x0'));var BPromise=require('bluebird');var moment=require(_0xe0b0('0x1'));var util=require('util');var _=require(_0xe0b0('0x2'));var logger=require(_0xe0b0('0x3'))(_0xe0b0('0x4'));var config=require(_0xe0b0('0x5'));var ami=new Manager(config[_0xe0b0('0x6')][_0xe0b0('0x7')],config[_0xe0b0('0x6')]['ip'],config[_0xe0b0('0x6')][_0xe0b0('0x8')],config[_0xe0b0('0x6')][_0xe0b0('0x9')],!![]);ami['keepConnected']();ami['Action']=BPromise[_0xe0b0('0xa')](ami[_0xe0b0('0xb')]);function error(_0xc4a085){logger[_0xe0b0('0xc')](util['format'](_0xe0b0('0xd'),config[_0xe0b0('0x6')]['username'],config[_0xe0b0('0x6')]['ip'],config[_0xe0b0('0x6')]['port'],util[_0xe0b0('0xe')](_0xc4a085,![],null)));}function close(){logger[_0xe0b0('0xc')](util[_0xe0b0('0xf')]('Manager\x20\x22%s\x22\x20closed\x20to\x20%s:%s',config[_0xe0b0('0x6')][_0xe0b0('0x8')],config[_0xe0b0('0x6')]['ip'],config[_0xe0b0('0x6')][_0xe0b0('0x7')]));}ami['actionSipShowRegistry']=function(){return function(){return ami[_0xe0b0('0x10')]({'action':_0xe0b0('0x11')});};};ami[_0xe0b0('0x12')]=function(){return function(){return ami[_0xe0b0('0x10')]({'action':_0xe0b0('0x13')});};};ami['actionSipPeerStatus']=function(){return function(){return ami[_0xe0b0('0x10')]({'action':'sippeerstatus'});};};ami[_0xe0b0('0x14')]=function(){return function(){return ami[_0xe0b0('0x10')]({'action':'queuesummary'});};};ami[_0xe0b0('0x15')]=function(){return function(){return ami['Action']({'action':_0xe0b0('0x16')});};};function connect(_0x100204){logger['info'](util['format'](_0xe0b0('0x17'),config['asterisk']['username'],config['asterisk']['ip'],config[_0xe0b0('0x6')]['port']));ami['once'](_0xe0b0('0xc'),error);ami['once'](_0xe0b0('0x18'),close);}ami['on']('connect',connect);ami['on'](_0xe0b0('0x19'),function(_0x1cd7c4){logger[_0xe0b0('0x1a')](util[_0xe0b0('0xf')](_0xe0b0('0x1b'),config['asterisk']['username'],config[_0xe0b0('0x6')]['ip'],config['asterisk'][_0xe0b0('0x7')],util[_0xe0b0('0xe')](_0x1cd7c4,![],null)));});ami['on']('fullybooted',function(_0x170ad8){logger['info'](util[_0xe0b0('0xf')]('Fullybooted\x20\x22%s\x22\x20to\x20%s:%s',config[_0xe0b0('0x6')]['username'],config[_0xe0b0('0x6')]['ip'],config['asterisk'][_0xe0b0('0x7')]));return BPromise['resolve']()[_0xe0b0('0x1c')](ami['actionSipShowRegistry']())[_0xe0b0('0x1c')](ami[_0xe0b0('0x12')]())[_0xe0b0('0x1c')](ami[_0xe0b0('0x1d')]())[_0xe0b0('0x1c')](ami[_0xe0b0('0x14')]())['then'](ami[_0xe0b0('0x15')]())[_0xe0b0('0x1e')](function(_0x5b7a64){logger[_0xe0b0('0xc')](_0xe0b0('0x1f'),util[_0xe0b0('0xe')](_0x5b7a64,{'showHidden':![],'depth':null}));});});ami[_0xe0b0('0x20')](_0xe0b0('0xc'),error);ami[_0xe0b0('0x20')](_0xe0b0('0x18'),close);module['exports']=ami;
\ No newline at end of file
index 9f99d28..caf1a32 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(_0x3c51d4,_0x36ba53){var _0x53c45f=function(_0x3d6683){while(--_0x3d6683){_0x3c51d4['push'](_0x3c51d4['shift']());}};_0x53c45f(++_0x36ba53);}(_0x9bde,0xe1));var _0xe9bd=function(_0x40a1f2,_0x25b8da){_0x40a1f2=_0x40a1f2-0x0;var _0x4688e9=_0x9bde[_0x40a1f2];return _0x4688e9;};'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 _0xbdb7=['result','catch','jayson/promise','bluebird','../../config/logger','ami','client','http','Request','debug','error','message'];(function(_0x1f4e91,_0x13d0fd){var _0x2b9038=function(_0x2e6ab7){while(--_0x2e6ab7){_0x1f4e91['push'](_0x1f4e91['shift']());}};_0x2b9038(++_0x13d0fd);}(_0xbdb7,0x12e));var _0x7bdb=function(_0x59342a,_0x16827b){_0x59342a=_0x59342a-0x0;var _0x17abc9=_0xbdb7[_0x59342a];return _0x17abc9;};'use strict';var jayson=require(_0x7bdb('0x0'));var BPromise=require(_0x7bdb('0x1'));var logger=require(_0x7bdb('0x2'))(_0x7bdb('0x3'));var client=jayson[_0x7bdb('0x4')][_0x7bdb('0x5')]({'port':0x2329});client[_0x7bdb('0x6')]=function(_0x2c7e07,_0x46c068){return new BPromise(function(_0x47aec5,_0x28542c){return client['request'](_0x2c7e07,_0x46c068)['then'](function(_0xffdc86){logger[_0x7bdb('0x7')]('rpc','memberReport',_0x2c7e07,_0x46c068,_0xffdc86);if(_0xffdc86[_0x7bdb('0x8')]){logger[_0x7bdb('0x8')]('rpc','memberReport',_0x2c7e07,_0xffdc86[_0x7bdb('0x8')][_0x7bdb('0x9')],_0x46c068);return _0x28542c(_0xffdc86[_0x7bdb('0x8')][_0x7bdb('0x9')]);}else{return _0x47aec5(_0xffdc86[_0x7bdb('0xa')]);}})[_0x7bdb('0xb')](function(_0x297724){logger[_0x7bdb('0x8')]('rpc','memberReport',_0x2c7e07,_0x297724,_0x46c068);return _0x28542c(_0x297724);});});};module['exports']=client;
\ No newline at end of file
index bb746ff..68901f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d9e=['ContactId','ListId','UserId','VoiceQueueId','CampaignId','starttime','format','YYYY-MM-DD\x20HH:mm:ss','callback','callbackuniqueid','callbackat','recallme','originatecalleridnum','prototype','getCaller','\x22%s\x22\x20<%s>','number','substring','dialCutDigit','exports','lodash','isNil','voiceQueue','uniqueid','name','Contact','phone','firstName','lastName','queue','active','type','dialQueueTimeout','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry'];(function(_0x453de5,_0x51ca8c){var _0x48d9a0=function(_0x1a416a){while(--_0x1a416a){_0x453de5['push'](_0x453de5['shift']());}};_0x48d9a0(++_0x51ca8c);}(_0x6d9e,0x110));var _0xe6d9=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x6d9e[_0x2dafbe];return _0x58a45a;};'use strict';var util=require('util');var _=require(_0xe6d9('0x0'));var moment=require('moment');function checkNameSurname(_0x56b537,_0xa6e168,_0x22982c){var _0x3ce037='';if(!_['isNil'](_0xa6e168)&&'string'===typeof _0xa6e168){_0x3ce037+=_0xa6e168;}if(!_[_0xe6d9('0x1')](_0x22982c)&&'string'===typeof _0x22982c){_0x3ce037+='\x20'+_0x22982c;}if(_0x3ce037!==''){return _0x3ce037;}return _0x56b537;}function Action(_0x390f3e,_0x198d8f,_0x42b946){this[_0xe6d9('0x2')]=_0x390f3e;this[_0xe6d9('0x3')]=_0x42b946||undefined;this[_0xe6d9('0x4')]=checkNameSurname(_0x198d8f[_0xe6d9('0x5')][_0xe6d9('0x6')],_0x198d8f['Contact'][_0xe6d9('0x7')],_0x198d8f['Contact'][_0xe6d9('0x8')]);this['number']=_0x198d8f[_0xe6d9('0x5')]['phone'];this[_0xe6d9('0x9')]=_0x390f3e[_0xe6d9('0x4')];this[_0xe6d9('0xa')]=_0x198d8f[_0xe6d9('0xa')]||![];this['type']=_0x390f3e[_0xe6d9('0xb')];this[_0xe6d9('0xc')]=_0x390f3e[_0xe6d9('0xc')]||0x3;this[_0xe6d9('0xd')]=_0x198d8f[_0xe6d9('0xd')];this[_0xe6d9('0xe')]=_0x198d8f[_0xe6d9('0xe')];this['countcongestionretry']=_0x198d8f[_0xe6d9('0xf')];this[_0xe6d9('0x10')]=_0x198d8f['countnoanswerretry'];this['countnosuchnumberretry']=_0x198d8f[_0xe6d9('0x11')];this[_0xe6d9('0x12')]=_0x198d8f[_0xe6d9('0x12')];this[_0xe6d9('0x13')]=_0x198d8f['countabandonedretry'];this['countmachineretry']=_0x198d8f[_0xe6d9('0x14')];this[_0xe6d9('0x15')]=_0x198d8f['countagentrejectretry'];this[_0xe6d9('0x16')]=_0x198d8f[_0xe6d9('0x16')];this[_0xe6d9('0x17')]=_0x198d8f['ListId'];this[_0xe6d9('0x18')]=_0x198d8f[_0xe6d9('0x18')];this[_0xe6d9('0x19')]=_0x198d8f['VoiceQueueId'];this[_0xe6d9('0x1a')]=_0x198d8f[_0xe6d9('0x1a')];this['idHopper']=_0x198d8f['id'];this['ContactFirstName']=_0x198d8f['Contact'][_0xe6d9('0x7')]||'';this[_0xe6d9('0x1b')]=moment()[_0xe6d9('0x1c')](_0xe6d9('0x1d'));this[_0xe6d9('0x1e')]=_0x198d8f[_0xe6d9('0x1e')];this[_0xe6d9('0x1f')]=_0x198d8f[_0xe6d9('0x1f')];this[_0xe6d9('0x20')]=_0x198d8f[_0xe6d9('0x20')];this[_0xe6d9('0x21')]=_0x198d8f['recallme'];this[_0xe6d9('0x22')]='';this['originatecalleridname']='';}Action[_0xe6d9('0x23')][_0xe6d9('0x24')]=function(){return util[_0xe6d9('0x1c')](_0xe6d9('0x25'),this['name'],this[_0xe6d9('0x2')]['dialCutDigit']>0x0?this[_0xe6d9('0x26')][_0xe6d9('0x27')](this[_0xe6d9('0x2')][_0xe6d9('0x28')]):this[_0xe6d9('0x26')]);};Action['prototype']['getQueue']=function(){return this[_0xe6d9('0x9')];};module[_0xe6d9('0x29')]=Action;
\ No newline at end of file
+var _0x69b1=['countmachineretry','countagentrejectretry','ContactId','ListId','UserId','VoiceQueueId','CampaignId','idHopper','ContactFirstName','starttime','format','YYYY-MM-DD\x20HH:mm:ss','callback','callbackuniqueid','callbackat','recallme','originatecalleridnum','originatecalleridname','getCaller','\x22%s\x22\x20<%s>','dialCutDigit','exports','util','lodash','isNil','string','voiceQueue','name','Contact','phone','firstName','lastName','number','queue','active','type','scheduledat','countbusyretry','countcongestionretry','countnosuchnumberretry','countabandonedretry'];(function(_0x1433df,_0xd43fe8){var _0x961a3b=function(_0x1c0e30){while(--_0x1c0e30){_0x1433df['push'](_0x1433df['shift']());}};_0x961a3b(++_0xd43fe8);}(_0x69b1,0x91));var _0x169b=function(_0x1176dc,_0x3f2329){_0x1176dc=_0x1176dc-0x0;var _0x4311cf=_0x69b1[_0x1176dc];return _0x4311cf;};'use strict';var util=require(_0x169b('0x0'));var _=require(_0x169b('0x1'));var moment=require('moment');function checkNameSurname(_0x226740,_0x2d54df,_0x1714ae){var _0x206ca7='';if(!_['isNil'](_0x2d54df)&&'string'===typeof _0x2d54df){_0x206ca7+=_0x2d54df;}if(!_[_0x169b('0x2')](_0x1714ae)&&_0x169b('0x3')===typeof _0x1714ae){_0x206ca7+='\x20'+_0x1714ae;}if(_0x206ca7!==''){return _0x206ca7;}return _0x226740;}function Action(_0x50de74,_0x27ca92,_0x52d3b8){this[_0x169b('0x4')]=_0x50de74;this['uniqueid']=_0x52d3b8||undefined;this[_0x169b('0x5')]=checkNameSurname(_0x27ca92[_0x169b('0x6')][_0x169b('0x7')],_0x27ca92[_0x169b('0x6')][_0x169b('0x8')],_0x27ca92[_0x169b('0x6')][_0x169b('0x9')]);this[_0x169b('0xa')]=_0x27ca92[_0x169b('0x6')]['phone'];this[_0x169b('0xb')]=_0x50de74['name'];this[_0x169b('0xc')]=_0x27ca92[_0x169b('0xc')]||![];this[_0x169b('0xd')]=_0x50de74[_0x169b('0xd')];this['dialQueueTimeout']=_0x50de74['dialQueueTimeout']||0x3;this[_0x169b('0xe')]=_0x27ca92['scheduledat'];this[_0x169b('0xf')]=_0x27ca92['countbusyretry'];this['countcongestionretry']=_0x27ca92[_0x169b('0x10')];this['countnoanswerretry']=_0x27ca92['countnoanswerretry'];this[_0x169b('0x11')]=_0x27ca92[_0x169b('0x11')];this['countdropretry']=_0x27ca92['countdropretry'];this[_0x169b('0x12')]=_0x27ca92[_0x169b('0x12')];this['countmachineretry']=_0x27ca92[_0x169b('0x13')];this['countagentrejectretry']=_0x27ca92[_0x169b('0x14')];this[_0x169b('0x15')]=_0x27ca92[_0x169b('0x15')];this[_0x169b('0x16')]=_0x27ca92[_0x169b('0x16')];this[_0x169b('0x17')]=_0x27ca92['UserId'];this['VoiceQueueId']=_0x27ca92[_0x169b('0x18')];this[_0x169b('0x19')]=_0x27ca92[_0x169b('0x19')];this[_0x169b('0x1a')]=_0x27ca92['id'];this[_0x169b('0x1b')]=_0x27ca92['Contact'][_0x169b('0x8')]||'';this[_0x169b('0x1c')]=moment()[_0x169b('0x1d')](_0x169b('0x1e'));this[_0x169b('0x1f')]=_0x27ca92[_0x169b('0x1f')];this['callbackuniqueid']=_0x27ca92[_0x169b('0x20')];this[_0x169b('0x21')]=_0x27ca92[_0x169b('0x21')];this['recallme']=_0x27ca92[_0x169b('0x22')];this[_0x169b('0x23')]='';this[_0x169b('0x24')]='';}Action['prototype'][_0x169b('0x25')]=function(){return util[_0x169b('0x1d')](_0x169b('0x26'),this[_0x169b('0x5')],this['voiceQueue'][_0x169b('0x27')]>0x0?this['number']['substring'](this[_0x169b('0x4')][_0x169b('0x27')]):this['number']);};Action['prototype']['getQueue']=function(){return this['queue'];};module[_0x169b('0x28')]=Action;
\ No newline at end of file
index 38fa6d6..2e85414 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d4f=['responsetime','holdtime','talktime','queue','membername','reason','callback','callbackuniqueid','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','util','lodash','moment','milliseconds','seconds','state','statedesc','Answer','scheduledat','type','campaigntype','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countmachineretry','countabandonedretry','countagentrejectretry','uniqueid','calleridname','name','calleridnum','number','starttime','answertime','endtime','format','YYYY-MM-DD\x20HH:mm:ss','ringtime'];(function(_0x3b0552,_0x5a8df5){var _0x613f23=function(_0x181990){while(--_0x181990){_0x3b0552['push'](_0x3b0552['shift']());}};_0x613f23(++_0x5a8df5);}(_0x1d4f,0x6c));var _0xf1d4=function(_0x2407a4,_0x296918){_0x2407a4=_0x2407a4-0x0;var _0x56d17e=_0x1d4f[_0x2407a4];return _0x56d17e;};'use strict';var util=require(_0xf1d4('0x0'));var _=require(_0xf1d4('0x1'));var moment=require(_0xf1d4('0x2'));function getSeconds(_0x4b06d9,_0xa2aaac){var _0x5e69c1=moment(_0x4b06d9)[_0xf1d4('0x3')](0x0);var _0x9a12e6=moment(_0xa2aaac)['milliseconds'](0x0);return _0x5e69c1['diff'](_0x9a12e6,_0xf1d4('0x4'));}function AgentComplete(_0xcaaac5,_0x54661f){this[_0xf1d4('0x5')]=0x4;this[_0xf1d4('0x6')]=_0xf1d4('0x7');this[_0xf1d4('0x8')]=_0xcaaac5[_0xf1d4('0x8')];this[_0xf1d4('0x9')]=_0xcaaac5['type'];this[_0xf1d4('0xa')]=_0xcaaac5[_0xf1d4('0x9')]==='outbound'?'queue':_0xcaaac5[_0xf1d4('0x9')];this[_0xf1d4('0xb')]=_0xcaaac5[_0xf1d4('0xb')];this[_0xf1d4('0xc')]=_0xcaaac5[_0xf1d4('0xc')];this['countnoanswerretry']=_0xcaaac5[_0xf1d4('0xd')];this['countglobal']=_0xcaaac5[_0xf1d4('0xb')]+_0xcaaac5['countcongestionretry']+_0xcaaac5[_0xf1d4('0xd')]+_0xcaaac5[_0xf1d4('0xe')]+_0xcaaac5[_0xf1d4('0xf')]+_0xcaaac5['countabandonedretry']+_0xcaaac5[_0xf1d4('0x10')]+_0xcaaac5['countagentrejectretry'];this['countnosuchnumberretry']=_0xcaaac5['countnosuchnumberretry'];this[_0xf1d4('0xf')]=_0xcaaac5[_0xf1d4('0xf')];this['countabandonedretry']=_0xcaaac5[_0xf1d4('0x11')];this[_0xf1d4('0x10')]=_0xcaaac5['countmachineretry'];this['countagentrejectretry']=_0xcaaac5[_0xf1d4('0x12')];this['uniqueid']=_0x54661f[_0xf1d4('0x13')];this[_0xf1d4('0x14')]=_0xcaaac5[_0xf1d4('0x15')];this[_0xf1d4('0x16')]=_0xcaaac5[_0xf1d4('0x17')];this['starttime']=_0xcaaac5[_0xf1d4('0x18')];this['responsetime']=_0xcaaac5['responsetime'];this['answertime']=_0xcaaac5[_0xf1d4('0x19')];this[_0xf1d4('0x1a')]=moment()[_0xf1d4('0x1b')](_0xf1d4('0x1c'));this[_0xf1d4('0x1d')]=getSeconds(_0xcaaac5[_0xf1d4('0x1e')],_0xcaaac5[_0xf1d4('0x18')]);this[_0xf1d4('0x1f')]=getSeconds(_0xcaaac5[_0xf1d4('0x19')],_0xcaaac5[_0xf1d4('0x1e')]);this[_0xf1d4('0x20')]=getSeconds(this[_0xf1d4('0x1a')],_0xcaaac5['answertime']);this[_0xf1d4('0x21')]=_0x54661f[_0xf1d4('0x21')];this[_0xf1d4('0x22')]=_0x54661f[_0xf1d4('0x22')];this[_0xf1d4('0x23')]=_0x54661f[_0xf1d4('0x23')];this['callback']=_0xcaaac5[_0xf1d4('0x24')];this[_0xf1d4('0x25')]=_0xcaaac5[_0xf1d4('0x25')];this['callbackat']=_0xcaaac5['callbackat'];this[_0xf1d4('0x26')]=_0xcaaac5[_0xf1d4('0x26')];this[_0xf1d4('0x27')]=_0xcaaac5[_0xf1d4('0x27')];this[_0xf1d4('0x28')]=_0xcaaac5[_0xf1d4('0x28')];this[_0xf1d4('0x29')]=_0xcaaac5[_0xf1d4('0x29')];this[_0xf1d4('0x2a')]=_0xcaaac5['VoiceQueueId'];this[_0xf1d4('0x2b')]=_0xcaaac5[_0xf1d4('0x2b')];this[_0xf1d4('0x2c')]=_0xcaaac5['originatecalleridnum']||'';this[_0xf1d4('0x2d')]=_0xcaaac5[_0xf1d4('0x2d')]||'';}module['exports']=AgentComplete;
\ No newline at end of file
+var _0x1cb8=['milliseconds','diff','seconds','state','statedesc','Answer','scheduledat','type','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','uniqueid','calleridname','name','starttime','responsetime','answertime','endtime','format','ringtime','holdtime','membername','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','exports','util','lodash','moment'];(function(_0xd578cb,_0x2167a3){var _0x775533=function(_0x1c340d){while(--_0x1c340d){_0xd578cb['push'](_0xd578cb['shift']());}};_0x775533(++_0x2167a3);}(_0x1cb8,0x1b5));var _0x81cb=function(_0x72a756,_0x2d85ae){_0x72a756=_0x72a756-0x0;var _0x457a0c=_0x1cb8[_0x72a756];return _0x457a0c;};'use strict';var util=require(_0x81cb('0x0'));var _=require(_0x81cb('0x1'));var moment=require(_0x81cb('0x2'));function getSeconds(_0x4a2119,_0x4dc6b6){var _0x2d8856=moment(_0x4a2119)['milliseconds'](0x0);var _0x1b3e5a=moment(_0x4dc6b6)[_0x81cb('0x3')](0x0);return _0x2d8856[_0x81cb('0x4')](_0x1b3e5a,_0x81cb('0x5'));}function AgentComplete(_0x26bf37,_0x4b4e48){this[_0x81cb('0x6')]=0x4;this[_0x81cb('0x7')]=_0x81cb('0x8');this[_0x81cb('0x9')]=_0x26bf37[_0x81cb('0x9')];this[_0x81cb('0xa')]=_0x26bf37['type'];this['campaigntype']=_0x26bf37[_0x81cb('0xa')]==='outbound'?_0x81cb('0xb'):_0x26bf37['type'];this[_0x81cb('0xc')]=_0x26bf37[_0x81cb('0xc')];this['countcongestionretry']=_0x26bf37[_0x81cb('0xd')];this[_0x81cb('0xe')]=_0x26bf37[_0x81cb('0xe')];this[_0x81cb('0xf')]=_0x26bf37['countbusyretry']+_0x26bf37[_0x81cb('0xd')]+_0x26bf37[_0x81cb('0xe')]+_0x26bf37[_0x81cb('0x10')]+_0x26bf37[_0x81cb('0x11')]+_0x26bf37[_0x81cb('0x12')]+_0x26bf37[_0x81cb('0x13')]+_0x26bf37[_0x81cb('0x14')];this[_0x81cb('0x10')]=_0x26bf37[_0x81cb('0x10')];this[_0x81cb('0x11')]=_0x26bf37[_0x81cb('0x11')];this[_0x81cb('0x12')]=_0x26bf37['countabandonedretry'];this['countmachineretry']=_0x26bf37[_0x81cb('0x13')];this[_0x81cb('0x14')]=_0x26bf37[_0x81cb('0x14')];this['uniqueid']=_0x4b4e48[_0x81cb('0x15')];this[_0x81cb('0x16')]=_0x26bf37[_0x81cb('0x17')];this['calleridnum']=_0x26bf37['number'];this[_0x81cb('0x18')]=_0x26bf37[_0x81cb('0x18')];this['responsetime']=_0x26bf37[_0x81cb('0x19')];this['answertime']=_0x26bf37[_0x81cb('0x1a')];this[_0x81cb('0x1b')]=moment()[_0x81cb('0x1c')]('YYYY-MM-DD\x20HH:mm:ss');this[_0x81cb('0x1d')]=getSeconds(_0x26bf37[_0x81cb('0x19')],_0x26bf37[_0x81cb('0x18')]);this[_0x81cb('0x1e')]=getSeconds(_0x26bf37[_0x81cb('0x1a')],_0x26bf37[_0x81cb('0x19')]);this['talktime']=getSeconds(this['endtime'],_0x26bf37[_0x81cb('0x1a')]);this[_0x81cb('0xb')]=_0x4b4e48[_0x81cb('0xb')];this['membername']=_0x4b4e48[_0x81cb('0x1f')];this[_0x81cb('0x20')]=_0x4b4e48[_0x81cb('0x20')];this[_0x81cb('0x21')]=_0x26bf37['callback'];this['callbackuniqueid']=_0x26bf37[_0x81cb('0x22')];this[_0x81cb('0x23')]=_0x26bf37['callbackat'];this[_0x81cb('0x24')]=_0x26bf37[_0x81cb('0x24')];this[_0x81cb('0x25')]=_0x26bf37[_0x81cb('0x25')];this[_0x81cb('0x26')]=_0x26bf37[_0x81cb('0x26')];this[_0x81cb('0x27')]=_0x26bf37['UserId'];this[_0x81cb('0x28')]=_0x26bf37[_0x81cb('0x28')];this[_0x81cb('0x29')]=_0x26bf37[_0x81cb('0x29')];this[_0x81cb('0x2a')]=_0x26bf37['originatecalleridnum']||'';this['originatecalleridname']=_0x26bf37['originatecalleridname']||'';}module[_0x81cb('0x2b')]=AgentComplete;
\ No newline at end of file
index 872d578..b21b692 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5075=['seconds','uniqueid','scheduledat','type','campaigntype','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','calleridname','calleridnum','starttime','responsetime','endtime','ringtime','holdtime','talktime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','lodash','moment','milliseconds','diff'];(function(_0x230c04,_0x4fac1a){var _0x36a05e=function(_0x3ac198){while(--_0x3ac198){_0x230c04['push'](_0x230c04['shift']());}};_0x36a05e(++_0x4fac1a);}(_0x5075,0x73));var _0x5507=function(_0xeb7891,_0x4771f7){_0xeb7891=_0xeb7891-0x0;var _0x11cc19=_0x5075[_0xeb7891];return _0x11cc19;};'use strict';var util=require(_0x5507('0x0'));var _=require(_0x5507('0x1'));var moment=require(_0x5507('0x2'));function getSeconds(_0x1a552a,_0x3ec62f){var _0x2b444e=moment(_0x1a552a)[_0x5507('0x3')](0x0);var _0x518ca7=moment(_0x3ec62f)[_0x5507('0x3')](0x0);return _0x2b444e[_0x5507('0x4')](_0x518ca7,_0x5507('0x5'));}function Final(_0x54267f){this['uniqueid']=_0x54267f[_0x5507('0x6')];this[_0x5507('0x7')]=_0x54267f['scheduledat'];this[_0x5507('0x8')]=_0x54267f[_0x5507('0x8')];this[_0x5507('0x9')]=_0x54267f['type']==='outbound'?_0x5507('0xa'):_0x54267f[_0x5507('0x8')];this[_0x5507('0xb')]=_0x54267f[_0x5507('0xb')];this['countcongestionretry']=_0x54267f[_0x5507('0xc')];this[_0x5507('0xd')]=_0x54267f['countnoanswerretry'];this[_0x5507('0xe')]=_0x54267f[_0x5507('0xb')]+_0x54267f['countcongestionretry']+_0x54267f[_0x5507('0xd')]+_0x54267f[_0x5507('0xf')]+_0x54267f[_0x5507('0x10')]+_0x54267f[_0x5507('0x11')]+_0x54267f[_0x5507('0x12')]+_0x54267f[_0x5507('0x13')];this['countnosuchnumberretry']=_0x54267f[_0x5507('0xf')];this[_0x5507('0x10')]=_0x54267f[_0x5507('0x10')];this[_0x5507('0x11')]=_0x54267f['countabandonedretry'];this[_0x5507('0x12')]=_0x54267f[_0x5507('0x12')];this[_0x5507('0x13')]=_0x54267f[_0x5507('0x13')];this[_0x5507('0xa')]=_0x54267f[_0x5507('0xa')];this[_0x5507('0x14')]=_0x54267f[_0x5507('0x14')];this[_0x5507('0x15')]=_0x54267f[_0x5507('0x15')];this[_0x5507('0x16')]=_0x54267f[_0x5507('0x16')];this[_0x5507('0x17')]=_0x54267f['responsetime'];this[_0x5507('0x18')]=_0x54267f[_0x5507('0x17')];this[_0x5507('0x19')]=_0x54267f[_0x5507('0x19')]||0x0;this['holdtime']=_0x54267f[_0x5507('0x1a')]||0x0;this[_0x5507('0x1b')]=_0x54267f[_0x5507('0x1b')]||0x0;this[_0x5507('0x1c')]=_0x54267f[_0x5507('0x1c')];this[_0x5507('0x1d')]=_0x54267f['callbackuniqueid'];this[_0x5507('0x1e')]=_0x54267f[_0x5507('0x1e')];this[_0x5507('0x1f')]=_0x54267f[_0x5507('0x1f')];this[_0x5507('0x20')]=_0x54267f[_0x5507('0x20')];this[_0x5507('0x21')]=_0x54267f[_0x5507('0x21')];this[_0x5507('0x22')]=_0x54267f[_0x5507('0x22')];this[_0x5507('0x23')]=_0x54267f[_0x5507('0x23')];this[_0x5507('0x24')]=_0x54267f[_0x5507('0x24')];this[_0x5507('0x25')]=_0x54267f['originatecalleridnum']||'';this[_0x5507('0x26')]=_0x54267f['originatecalleridname']||'';}module[_0x5507('0x27')]=Final;
\ No newline at end of file
+var _0x008c=['originatecalleridname','exports','util','lodash','moment','milliseconds','diff','seconds','uniqueid','scheduledat','type','campaigntype','queue','countcongestionretry','countnoanswerretry','countglobal','countbusyretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','calleridname','responsetime','talktime','callbackat','recallme','ContactId','ListId','VoiceQueueId','CampaignId'];(function(_0x2387c5,_0xfcc74c){var _0x2c414c=function(_0x3d1881){while(--_0x3d1881){_0x2387c5['push'](_0x2387c5['shift']());}};_0x2c414c(++_0xfcc74c);}(_0x008c,0x188));var _0xc008=function(_0x29d623,_0x1a5c9c){_0x29d623=_0x29d623-0x0;var _0x242e59=_0x008c[_0x29d623];return _0x242e59;};'use strict';var util=require(_0xc008('0x0'));var _=require(_0xc008('0x1'));var moment=require(_0xc008('0x2'));function getSeconds(_0xae17af,_0x1d119a){var _0x544fdf=moment(_0xae17af)[_0xc008('0x3')](0x0);var _0x47063f=moment(_0x1d119a)[_0xc008('0x3')](0x0);return _0x544fdf[_0xc008('0x4')](_0x47063f,_0xc008('0x5'));}function Final(_0x1679e0){this[_0xc008('0x6')]=_0x1679e0[_0xc008('0x6')];this[_0xc008('0x7')]=_0x1679e0['scheduledat'];this[_0xc008('0x8')]=_0x1679e0['type'];this[_0xc008('0x9')]=_0x1679e0['type']==='outbound'?_0xc008('0xa'):_0x1679e0[_0xc008('0x8')];this['countbusyretry']=_0x1679e0['countbusyretry'];this['countcongestionretry']=_0x1679e0[_0xc008('0xb')];this[_0xc008('0xc')]=_0x1679e0['countnoanswerretry'];this[_0xc008('0xd')]=_0x1679e0[_0xc008('0xe')]+_0x1679e0[_0xc008('0xb')]+_0x1679e0[_0xc008('0xc')]+_0x1679e0[_0xc008('0xf')]+_0x1679e0[_0xc008('0x10')]+_0x1679e0[_0xc008('0x11')]+_0x1679e0['countmachineretry']+_0x1679e0['countagentrejectretry'];this[_0xc008('0xf')]=_0x1679e0['countnosuchnumberretry'];this[_0xc008('0x10')]=_0x1679e0[_0xc008('0x10')];this[_0xc008('0x11')]=_0x1679e0[_0xc008('0x11')];this[_0xc008('0x12')]=_0x1679e0['countmachineretry'];this['countagentrejectretry']=_0x1679e0['countagentrejectretry'];this[_0xc008('0xa')]=_0x1679e0[_0xc008('0xa')];this[_0xc008('0x13')]=_0x1679e0[_0xc008('0x13')];this['calleridnum']=_0x1679e0['calleridnum'];this['starttime']=_0x1679e0['starttime'];this[_0xc008('0x14')]=_0x1679e0[_0xc008('0x14')];this['endtime']=_0x1679e0[_0xc008('0x14')];this['ringtime']=_0x1679e0['ringtime']||0x0;this['holdtime']=_0x1679e0['holdtime']||0x0;this[_0xc008('0x15')]=_0x1679e0['talktime']||0x0;this['callback']=_0x1679e0['callback'];this['callbackuniqueid']=_0x1679e0['callbackuniqueid'];this[_0xc008('0x16')]=_0x1679e0[_0xc008('0x16')];this[_0xc008('0x17')]=_0x1679e0[_0xc008('0x17')];this[_0xc008('0x18')]=_0x1679e0[_0xc008('0x18')];this['ListId']=_0x1679e0[_0xc008('0x19')];this['UserId']=_0x1679e0['UserId'];this[_0xc008('0x1a')]=_0x1679e0[_0xc008('0x1a')];this[_0xc008('0x1b')]=_0x1679e0[_0xc008('0x1b')];this['originatecalleridnum']=_0x1679e0['originatecalleridnum']||'';this['originatecalleridname']=_0x1679e0[_0xc008('0x1c')]||'';}module[_0xc008('0x1d')]=Final;
\ No newline at end of file
index f2bac01..2734e51 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1932=['exports','util','lodash','moment','milliseconds','state','Answer','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countmachineretry','countagentrejectretry','countdropretry','uniqueid','name','number','starttime','responsetime','endtime','format','YYYY-MM-DD\x20HH:mm:ss','ringtime','holdtime','membername','cause-txt','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId'];(function(_0x1b3ed9,_0x23c04){var _0x5a8e35=function(_0x3247d8){while(--_0x3247d8){_0x1b3ed9['push'](_0x1b3ed9['shift']());}};_0x5a8e35(++_0x23c04);}(_0x1932,0x191));var _0x2193=function(_0x15bc81,_0x4d4f77){_0x15bc81=_0x15bc81-0x0;var _0x59440e=_0x1932[_0x15bc81];return _0x59440e;};'use strict';var util=require(_0x2193('0x0'));var _=require(_0x2193('0x1'));var moment=require(_0x2193('0x2'));function getSeconds(_0x50744d,_0x25d7e1){var _0x68957d=moment(_0x50744d)[_0x2193('0x3')](0x0);var _0x4c5ef6=moment(_0x25d7e1)[_0x2193('0x3')](0x0);return _0x68957d['diff'](_0x4c5ef6,'seconds');}function Hangup(_0x5bf07f,_0x2030c9){this[_0x2193('0x4')]=0x4;this['statedesc']=_0x2193('0x5');this[_0x2193('0x6')]=_0x5bf07f['scheduledat'];this[_0x2193('0x7')]=_0x5bf07f[_0x2193('0x7')];this[_0x2193('0x8')]=_0x5bf07f[_0x2193('0x7')]===_0x2193('0x9')?_0x2193('0xa'):_0x5bf07f['type'];this[_0x2193('0xb')]=_0x5bf07f['countbusyretry'];this[_0x2193('0xc')]=_0x5bf07f[_0x2193('0xc')];this[_0x2193('0xd')]=_0x5bf07f[_0x2193('0xd')];this[_0x2193('0xe')]=_0x5bf07f[_0x2193('0xb')]+_0x5bf07f[_0x2193('0xc')]+_0x5bf07f[_0x2193('0xd')]+_0x5bf07f[_0x2193('0xf')]+_0x5bf07f['countdropretry']+_0x5bf07f['countabandonedretry']+_0x5bf07f[_0x2193('0x10')]+_0x5bf07f[_0x2193('0x11')];this[_0x2193('0xf')]=_0x5bf07f[_0x2193('0xf')];this['countdropretry']=_0x5bf07f[_0x2193('0x12')];this['countabandonedretry']=_0x5bf07f['countabandonedretry'];this['countmachineretry']=_0x5bf07f[_0x2193('0x10')];this[_0x2193('0x11')]=_0x5bf07f[_0x2193('0x11')];this[_0x2193('0x13')]=_0x2030c9[_0x2193('0x13')];this['calleridname']=_0x5bf07f[_0x2193('0x14')];this['calleridnum']=_0x5bf07f[_0x2193('0x15')];this[_0x2193('0x16')]=_0x5bf07f['starttime'];this[_0x2193('0x17')]=_0x5bf07f[_0x2193('0x17')];this[_0x2193('0x18')]=moment()[_0x2193('0x19')](_0x2193('0x1a'));this[_0x2193('0x1b')]=getSeconds(_0x5bf07f[_0x2193('0x17')],_0x5bf07f[_0x2193('0x16')]);this[_0x2193('0x1c')]=0x0;this['talktime']=getSeconds(this['endtime'],_0x5bf07f[_0x2193('0x17')]);this['queue']=_0x5bf07f[_0x2193('0xa')];this[_0x2193('0x1d')]='IVR';this['reason']=_0x2030c9[_0x2193('0x1e')];this['callback']=_0x5bf07f['callback'];this[_0x2193('0x1f')]=_0x5bf07f['callbackuniqueid'];this[_0x2193('0x20')]=_0x5bf07f[_0x2193('0x20')];this[_0x2193('0x21')]=_0x5bf07f['recallme'];this[_0x2193('0x22')]=_0x5bf07f[_0x2193('0x22')];this[_0x2193('0x23')]=_0x5bf07f[_0x2193('0x23')];this[_0x2193('0x24')]=_0x5bf07f[_0x2193('0x24')];this[_0x2193('0x25')]=_0x5bf07f['VoiceQueueId'];this['CampaignId']=_0x5bf07f[_0x2193('0x26')];}module[_0x2193('0x27')]=Hangup;
\ No newline at end of file
+var _0xd87e=['Answer','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countdropretry','countmachineretry','countagentrejectretry','countnosuchnumberretry','countabandonedretry','uniqueid','calleridname','name','calleridnum','number','starttime','responsetime','endtime','format','YYYY-MM-DD\x20HH:mm:ss','ringtime','holdtime','talktime','IVR','cause-txt','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','exports','lodash','moment','milliseconds','seconds','state','statedesc'];(function(_0x299089,_0x3cff81){var _0x11c91f=function(_0x3e135b){while(--_0x3e135b){_0x299089['push'](_0x299089['shift']());}};_0x11c91f(++_0x3cff81);}(_0xd87e,0xae));var _0xed87=function(_0x5c6767,_0x4d77a4){_0x5c6767=_0x5c6767-0x0;var _0x50efad=_0xd87e[_0x5c6767];return _0x50efad;};'use strict';var util=require('util');var _=require(_0xed87('0x0'));var moment=require(_0xed87('0x1'));function getSeconds(_0x8bcb1a,_0x16ed29){var _0x540ec6=moment(_0x8bcb1a)[_0xed87('0x2')](0x0);var _0x3ca57e=moment(_0x16ed29)[_0xed87('0x2')](0x0);return _0x540ec6['diff'](_0x3ca57e,_0xed87('0x3'));}function Hangup(_0x32ddad,_0xff4b7c){this[_0xed87('0x4')]=0x4;this[_0xed87('0x5')]=_0xed87('0x6');this[_0xed87('0x7')]=_0x32ddad[_0xed87('0x7')];this['type']=_0x32ddad[_0xed87('0x8')];this[_0xed87('0x9')]=_0x32ddad[_0xed87('0x8')]===_0xed87('0xa')?_0xed87('0xb'):_0x32ddad['type'];this[_0xed87('0xc')]=_0x32ddad[_0xed87('0xc')];this[_0xed87('0xd')]=_0x32ddad[_0xed87('0xd')];this[_0xed87('0xe')]=_0x32ddad[_0xed87('0xe')];this['countglobal']=_0x32ddad[_0xed87('0xc')]+_0x32ddad[_0xed87('0xd')]+_0x32ddad['countnoanswerretry']+_0x32ddad['countnosuchnumberretry']+_0x32ddad[_0xed87('0xf')]+_0x32ddad['countabandonedretry']+_0x32ddad[_0xed87('0x10')]+_0x32ddad[_0xed87('0x11')];this[_0xed87('0x12')]=_0x32ddad['countnosuchnumberretry'];this['countdropretry']=_0x32ddad[_0xed87('0xf')];this[_0xed87('0x13')]=_0x32ddad['countabandonedretry'];this[_0xed87('0x10')]=_0x32ddad[_0xed87('0x10')];this[_0xed87('0x11')]=_0x32ddad[_0xed87('0x11')];this[_0xed87('0x14')]=_0xff4b7c['uniqueid'];this[_0xed87('0x15')]=_0x32ddad[_0xed87('0x16')];this[_0xed87('0x17')]=_0x32ddad[_0xed87('0x18')];this[_0xed87('0x19')]=_0x32ddad[_0xed87('0x19')];this[_0xed87('0x1a')]=_0x32ddad[_0xed87('0x1a')];this[_0xed87('0x1b')]=moment()[_0xed87('0x1c')](_0xed87('0x1d'));this[_0xed87('0x1e')]=getSeconds(_0x32ddad['responsetime'],_0x32ddad[_0xed87('0x19')]);this[_0xed87('0x1f')]=0x0;this[_0xed87('0x20')]=getSeconds(this[_0xed87('0x1b')],_0x32ddad[_0xed87('0x1a')]);this[_0xed87('0xb')]=_0x32ddad[_0xed87('0xb')];this['membername']=_0xed87('0x21');this['reason']=_0xff4b7c[_0xed87('0x22')];this['callback']=_0x32ddad[_0xed87('0x23')];this[_0xed87('0x24')]=_0x32ddad[_0xed87('0x24')];this[_0xed87('0x25')]=_0x32ddad[_0xed87('0x25')];this[_0xed87('0x26')]=_0x32ddad[_0xed87('0x26')];this[_0xed87('0x27')]=_0x32ddad[_0xed87('0x27')];this[_0xed87('0x28')]=_0x32ddad[_0xed87('0x28')];this[_0xed87('0x29')]=_0x32ddad['UserId'];this[_0xed87('0x2a')]=_0x32ddad['VoiceQueueId'];this[_0xed87('0x2b')]=_0x32ddad[_0xed87('0x2b')];}module[_0xed87('0x2c')]=Hangup;
\ No newline at end of file
index b9a2d18..5328275 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb41=['campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','name','calleridnum','starttime','responsetime','endtime','ringtime','talktime','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','util','lodash','moment','milliseconds','uniqueid','scheduledat','type'];(function(_0x31a9cc,_0x243908){var _0x1e0710=function(_0x399f8b){while(--_0x399f8b){_0x31a9cc['push'](_0x31a9cc['shift']());}};_0x1e0710(++_0x243908);}(_0xfb41,0x1a9));var _0x1fb4=function(_0x45f0ab,_0x166cd2){_0x45f0ab=_0x45f0ab-0x0;var _0x53e0ee=_0xfb41[_0x45f0ab];return _0x53e0ee;};'use strict';var util=require(_0x1fb4('0x0'));var _=require(_0x1fb4('0x1'));var moment=require(_0x1fb4('0x2'));function getSeconds(_0x599323,_0x24a112){var _0x13de7f=moment(_0x599323)[_0x1fb4('0x3')](0x0);var _0x29f0b0=moment(_0x24a112)[_0x1fb4('0x3')](0x0);return _0x13de7f['diff'](_0x29f0b0,'seconds');}function History(_0x30f246){this[_0x1fb4('0x4')]=_0x30f246['uniqueid'];this['scheduledat']=_0x30f246[_0x1fb4('0x5')]||undefined;this[_0x1fb4('0x6')]=_0x30f246[_0x1fb4('0x6')];this[_0x1fb4('0x7')]=_0x30f246[_0x1fb4('0x6')]===_0x1fb4('0x8')?_0x1fb4('0x9'):_0x30f246[_0x1fb4('0x6')];this[_0x1fb4('0xa')]=_0x30f246[_0x1fb4('0xa')];this[_0x1fb4('0xb')]=_0x30f246[_0x1fb4('0xb')];this[_0x1fb4('0xc')]=_0x30f246[_0x1fb4('0xc')];this[_0x1fb4('0xd')]=_0x30f246[_0x1fb4('0xa')]+_0x30f246['countcongestionretry']+_0x30f246['countnoanswerretry']+_0x30f246[_0x1fb4('0xe')]+_0x30f246[_0x1fb4('0xf')]+_0x30f246[_0x1fb4('0x10')]+_0x30f246[_0x1fb4('0x11')]+_0x30f246[_0x1fb4('0x12')];this['countnosuchnumberretry']=_0x30f246[_0x1fb4('0xe')];this[_0x1fb4('0xf')]=_0x30f246[_0x1fb4('0xf')];this[_0x1fb4('0x10')]=_0x30f246[_0x1fb4('0x10')];this[_0x1fb4('0x11')]=_0x30f246[_0x1fb4('0x11')];this[_0x1fb4('0x12')]=_0x30f246[_0x1fb4('0x12')];this[_0x1fb4('0x9')]=_0x30f246[_0x1fb4('0x9')];this['calleridname']=_0x30f246[_0x1fb4('0x13')];this[_0x1fb4('0x14')]=_0x30f246['number'];this[_0x1fb4('0x15')]=_0x30f246[_0x1fb4('0x15')];this[_0x1fb4('0x16')]=_0x30f246[_0x1fb4('0x16')];this[_0x1fb4('0x17')]=_0x30f246[_0x1fb4('0x16')];this[_0x1fb4('0x18')]=getSeconds(_0x30f246[_0x1fb4('0x16')],_0x30f246['starttime']);this['holdtime']=0x0;this[_0x1fb4('0x19')]=0x0;this['callback']=_0x30f246['callback'];this[_0x1fb4('0x1a')]=_0x30f246['callbackuniqueid'];this[_0x1fb4('0x1b')]=_0x30f246[_0x1fb4('0x1b')];this[_0x1fb4('0x1c')]=_0x30f246[_0x1fb4('0x1c')];this['ContactId']=_0x30f246[_0x1fb4('0x1d')];this[_0x1fb4('0x1e')]=_0x30f246[_0x1fb4('0x1e')];this['UserId']=_0x30f246[_0x1fb4('0x1f')];this[_0x1fb4('0x20')]=_0x30f246['VoiceQueueId'];this[_0x1fb4('0x21')]=_0x30f246[_0x1fb4('0x21')];this['originatecalleridnum']=_0x30f246[_0x1fb4('0x22')]||'';this[_0x1fb4('0x23')]=_0x30f246['originatecalleridname']||'';}module['exports']=History;
\ No newline at end of file
+var _0x4467=['queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countagentrejectretry','countmachineretry','calleridname','name','calleridnum','number','starttime','responsetime','endtime','ringtime','holdtime','talktime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','originatecalleridnum','originatecalleridname','exports','util','lodash','moment','milliseconds','diff','uniqueid','scheduledat','type','campaigntype','outbound'];(function(_0x1ccdf7,_0x215d5a){var _0x52a0ae=function(_0x40324a){while(--_0x40324a){_0x1ccdf7['push'](_0x1ccdf7['shift']());}};_0x52a0ae(++_0x215d5a);}(_0x4467,0x115));var _0x7446=function(_0x1a9c8e,_0xd5e5fb){_0x1a9c8e=_0x1a9c8e-0x0;var _0x31d0a4=_0x4467[_0x1a9c8e];return _0x31d0a4;};'use strict';var util=require(_0x7446('0x0'));var _=require(_0x7446('0x1'));var moment=require(_0x7446('0x2'));function getSeconds(_0x2a5967,_0x44822c){var _0x3f7acc=moment(_0x2a5967)[_0x7446('0x3')](0x0);var _0x41f2f3=moment(_0x44822c)[_0x7446('0x3')](0x0);return _0x3f7acc[_0x7446('0x4')](_0x41f2f3,'seconds');}function History(_0x290412){this[_0x7446('0x5')]=_0x290412[_0x7446('0x5')];this[_0x7446('0x6')]=_0x290412[_0x7446('0x6')]||undefined;this['type']=_0x290412[_0x7446('0x7')];this[_0x7446('0x8')]=_0x290412['type']===_0x7446('0x9')?_0x7446('0xa'):_0x290412[_0x7446('0x7')];this[_0x7446('0xb')]=_0x290412[_0x7446('0xb')];this[_0x7446('0xc')]=_0x290412[_0x7446('0xc')];this[_0x7446('0xd')]=_0x290412[_0x7446('0xd')];this[_0x7446('0xe')]=_0x290412[_0x7446('0xb')]+_0x290412[_0x7446('0xc')]+_0x290412['countnoanswerretry']+_0x290412[_0x7446('0xf')]+_0x290412[_0x7446('0x10')]+_0x290412[_0x7446('0x11')]+_0x290412['countmachineretry']+_0x290412[_0x7446('0x12')];this[_0x7446('0xf')]=_0x290412['countnosuchnumberretry'];this['countdropretry']=_0x290412[_0x7446('0x10')];this[_0x7446('0x11')]=_0x290412[_0x7446('0x11')];this[_0x7446('0x13')]=_0x290412[_0x7446('0x13')];this['countagentrejectretry']=_0x290412[_0x7446('0x12')];this['queue']=_0x290412[_0x7446('0xa')];this[_0x7446('0x14')]=_0x290412[_0x7446('0x15')];this[_0x7446('0x16')]=_0x290412[_0x7446('0x17')];this[_0x7446('0x18')]=_0x290412['starttime'];this['responsetime']=_0x290412[_0x7446('0x19')];this[_0x7446('0x1a')]=_0x290412[_0x7446('0x19')];this[_0x7446('0x1b')]=getSeconds(_0x290412[_0x7446('0x19')],_0x290412[_0x7446('0x18')]);this[_0x7446('0x1c')]=0x0;this[_0x7446('0x1d')]=0x0;this[_0x7446('0x1e')]=_0x290412[_0x7446('0x1e')];this['callbackuniqueid']=_0x290412[_0x7446('0x1f')];this[_0x7446('0x20')]=_0x290412[_0x7446('0x20')];this[_0x7446('0x21')]=_0x290412['recallme'];this[_0x7446('0x22')]=_0x290412[_0x7446('0x22')];this[_0x7446('0x23')]=_0x290412[_0x7446('0x23')];this[_0x7446('0x24')]=_0x290412[_0x7446('0x24')];this[_0x7446('0x25')]=_0x290412[_0x7446('0x25')];this['CampaignId']=_0x290412['CampaignId'];this['originatecalleridnum']=_0x290412[_0x7446('0x26')]||'';this[_0x7446('0x27')]=_0x290412[_0x7446('0x27')]||'';}module[_0x7446('0x28')]=History;
\ No newline at end of file
index 0edcf6c..c34727f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8cc8=['RESCHEDULED_CONTACTS','[getContactDialer2][ReScheduled]','AVAILABLE_CONTACTS_FINISHED','[getContactDialer2][Empty]','sendMessageOneNotActive','available','[syncQueueSummary]\x20Campaign\x20Queue:\x20','is\x20not\x20active','IS_DISACTIVED','is\x20disactive','state','statedesc','endtime','starttime','clearZombieChannels','uniqueId','[uniqueid]','isNil','Action','status','channel','No\x20such\x20channel','updateOriginated','queue','[Dialer][checkChannel]','resolve','countReScheduled','catch','[countReScheduled]\x20','checkIsBlackList','then','checkIsBlackListIvr','[checkIsBlackListIvr]\x20','averageHandleTime','rescheduleContact','unlockContact','getContactDialer','temp','[getContactDialer]\x20','getContactDialerIvr','[getContactDialerIvr]\x20','getVoiceQueueRtPauses','[getVoiceQueueRtPauses]\x20','moveContactManagedDialer','createHistory','loggerHandler','saveInDb','ContactId','ListId','UserId','VoiceQueueId','CampaignId','[emptyContact][createHistory]','[emptyContact]','isSuccess','Success','isTrunkReachable','SIP/%s','reachable','unmonitored','variable','dialAMDActive','value','HANGUP','membername','AMD','custom:amd','amd','[syncHangupInAMD]','MACHINE','Machine','countmachineretry','buildObj','[syncAgentComplete][createHistory][0]','countbusyretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countagentrejectretry','dialGlobalMaxRetry','stateGlobal','reason19\x20machine....','dialMachineMaxRetry','createStateFinal','reason\x2019\x20machine....','add','dialMachineRetryFrequency','minutes','YYYY-MM-DD\x20HH:mm:ss','uniqueid','HangupInAMD','[syncHangupInAMDIvr][createHistory]','[syncHangupInAMDIvr]','countcongestionretry','countabandonedretry','[rescheduleContact][Machine]','ivrAnswerCallsDay','[syncHangupIvr][createHistory]','dialQueueProject','AnswerAGI','AGI','cause-txt','Unknow','reason','agent','agiafterat','dialAgiAfterHangupAgent','[syncAgentComplete][createHistory]','[syncAgentComplete]','queueCallerAbandonCreateState','[syncQueueCallerAbandon]\x20[Drop]','droptime','responsetime','dialQueueTimeout','predictiveIntervalDroppedCallsTimeout','Drop','TIMEOUT','dialQueueProject2','countglobal','dialDropMaxRetry','[rescheduleContact][Drop]','calleridname','calleridnum','[syncAgentComplete][createHistory][10]','outboundDropCallsDayCallersExit','Abandoned','dropreason','CALLEREXIT','dialAbandonedMaxRetry','[rescheduleContact][Abandoned]','[syncAgentComplete][createHistory][11]','actionid','strategy','locked','paused','stateinterface','push','pick','idHopper','[unlockQueueStatus][undefined]','queueStatusComplete','[booked][unlockQueueStatus]','syncQueueStatusComplete','[unlock][syncQueueStatusComplete]','_rr','unlockRR','[booked][RR]','contactAgent-idHopper:\x20','run','[Catch][Preview][syncQueueStatusComplete]','[booked][RR][finaly]','Agent:\x20','[booked][unlock]','[unlock2][syncQueueStatusComplete]','[booked][unlock3]','[unlock3][syncQueueStatusComplete]','syncCampaigns','TrunkBackup','TRUNK_IS_NOT_REACHABLE','\x20trunk\x20is\x20not\x20reachable','checkIfTime','ifTime','checkIfTimeIntervals','\x20Intervals\x20is\x20null\x20','INTERVAL_IS_EMPTY','Failure','\x20Intervals\x20is\x20empty\x20','timezones','TIMEZONE_UNKNOW','\x20Timezone\x20unknow\x20','isArray','command','iftime\x20%s,%s','interval','indexOf','true','content','all','INTERVAL_IS_OVERTIME','[ifTime][promiseAll]','Global:\x20','\x20Interval\x20is\x20overtime:\x20','checkDialMethod','handlePower','dialPowerLevel','predictive','Queue','launchHandleIvr','handleIvr','checkIsTrunkReachable','dialGlobalInterval','dialTimezone','[syncCampaigns]','\x5cw{0,','pow','replace','random','match','actionOriginate','object','originate','voiceQueue\x20is\x20undefine','Contact','phone','getCaller','\x22agi://%s/square,%s\x22','NONE','dialQueueOptions','ACTIVE','xcally-motion-dialer','XMD-AMDINITIALSILENCE','dialAMDInitialSilence','XMD-AMDGREETING','dialAMDGreeting','XMD-AMDAFTERGREETINGSILENCE','dialAMDAfterGreetingSilence','XMD-AMDTOTALANALYSISTIME','dialAMDTotalAnalysisTime','XMD-AMDMINWORDLENGTH','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','XMD-AMDSILENCETHRESHOLD','dialAMDSilenceThreshold','XMD-AMDMAXIMUMWORDLENGTH','tags','%s%s','XMD-','toUpper','callerid','dialRandomLastDigitCallerIdNumber','XMD-ORIGINATECALLERIDNAME','originatecalleridname','XMD-ORIGINATECALLERIDNUM','SIP/%s/%s%s','trim','dialCutDigit','substring','from-sip','dialOriginateTimeout','[originateError]:\x20%s','OriginateError','[originate][error]','originate\x20action\x20Error','getQueue','callProgressDetecting','dialNoAnswerRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','[rescheduleContact]\x20[Busy]','dialCongestionMaxRetry','dialCongestionRetryFrequency','[rescheduleContact]\x20[Congestion]','dialNoSuchNumberRetryFrequency','[rescheduleContact][NoSuchNumber]','dialDropRetryFrequency','dialAbandonedRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','[rescheduleContact][AgentReject]','[callProgressDetecting]','entity\x20is\x20undefine','evt\x20is\x20undefine','NoSuchNumber','nosuchnumber','checkRetriveMax','dialNoSuchNumberMaxRetry','reason\x200\x20no\x20such\x20number....','NoAnswer','custom:agentnoanswer','noanswer','[syncAgentComplete][createHistory][3]','Busy','busy','[syncAgentComplete][createHistory][5]','reason\x205\x20busy','Congestion','reason\x208\x20congestion','outboundAbandonedCallsDay','reason\x2011\x20abandoned','outboundRejectCallsDay','AgentReject','custom:agentreject','agentreject','[syncAgentComplete][createHistory][20]','reason\x2020\x20agentreject','[syncAgentComplete][createHistory][?]','Global','[moveContactManagedDialer][0]','contact\x20not\x20moved','dialPredictiveOptimizationPercentage','round','predictiveIntervalAvailable','predictiveIntervalMaxThreshold','floor','predictiveIntervalHitRate','[startMethodPredictive][StartProgressive]','check\x20predictive\x20is\x20not\x20undefine','[stopMethodPredictive][ReStartProgressive][ExceededDropDay]','Dropped\x20calls\x20day','predictiveIntervalErlangCallsDroppedCalls','dropRate','[stopMethodPredictive][ReStartProgressive][ExceededDropInterval]','Max\x20Drop\x20','Drop\x20in\x20this\x20interval','started\x20in\x20predictive\x20at','getDataPredictive','startMethodPredictive','Predictive\x20after\x20first\x20interval','dialPredictiveInterval','recalculate\x20predictive\x20at','Predictive\x20for\x20every\x20interval','switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',')\x20are\x20less\x20than\x20threshold\x20(',')\x20are\x20more\x20than\x20threshold\x20(','dialPredictiveOptimization','abandonmentRate','agentBusyFactor','busyFactor','[getDataPredictive]','Unknown\x20Predictive','check\x20failure','getDataPredictiveOld','outboundQueuePauses','[CatchErlangB]','one\x20call\x20every:','[handlePredictive]','fail\x20to\x20scheduled\x20calls','checkContactBlack','[booked][checkContactBlack]','Queue:\x20','queuestatus','[unlockOriginate][syncQueueStatusComplete]','[booked][checkContactBlack][else]','Agent','voicePause','dialRecallInQueue','[rescheduleContact][dialRecallInQueue]','RECALLINQUEUE','RecallInQueue','[Originate][HistoryDialRecallInQueue][historyCatch]','RECALLFAILEDTIMEOUT','[Originate][HistoryRecallClose][historyCatch]','[Originate][historyBlacklist]','[Originate][MoveBlacklist]','inBlackList','[getContactCampaign2][Empty]','RUNNING','ivrTotalCallsDays','emptyContact','[actionOriginate]\x20','Contact.phone','[actionOriginateIvr]\x20','dialLimitQueue','not_inuse','tryOriginatePredictive','dialOrderByScheduledAt','[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','Interval:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Ts:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Amax:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','[abandonmentRate]','Ts\x20=\x20','p\x20=\x20','Amax\x20=\x20','----\x20Agent\x20Busy\x20Factor\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','[busyFactor]','m\x20=\x20','interval\x20=\x20','Umin\x20=\x20','exports','util','lodash','bluebird','uuid','moment','md5','ioredis','../preview/util/util','../../../config/environment/','../../../config/logger','dialer','booked','predictiveCalls','syncQueueSummary','redis','defaults','localhost','../rpc/cmHopper','../rpc/cmHopperHistory','../rpc/cmHopperBlack','./action','./history','./final','./agentComplete','./queueCallerAbandon','./hangup','env','XCALLY_IP_AGI','rrmemory','roundrobin','prototype','enqueue','tail','finally','sequence','voiceQueues','campaigns','agents','trunks','maxNumberOriginate','actions','contactsId','optionPredictive','startPredictive','startProgressive','ivrOriginated','queueBooked','queueBookedRR','syncAgentConnect','bind','queuecallerabandon','syncQueueCallerAbandon','originateresponse','syncOriginateResponse','agentcomplete','syncAgentComplete','custom:queuesummary','hangup','syncHangup','newexten','syncNewExten','varset','syncVarSet','syncQueueMember','queuestatuscomplete','loopCampaigns','loopClearZombieChannels','isUndefined','AGENTS_NOT_LOGGED','name','\x20AGENTS\x20NOT\x20LOGGED','message','NOT_ACTIVE','\x20NOT\x20Active','Interval','INTERVAL_IS_NULL','\x20INTERVAL_IS_NULL','Intervals','isEmpty','[ifTime][Action]','Error','stringify','milliseconds','emit','outbound','answered','loggedIn','pTalking','sumBillable','sumDuration','talking','type','unmanaged','abandoned','waiting','loggedInDb','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialPrefix','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalErlangCalls','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','originated','erlangCalls','erlangCallToSecond','erlangBusyFactor','Trunk','active','format','voice:queue:%s','voice_queue:save','ivr','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','predictiveIntervalTotalCalls','Answered\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Dropped\x20Timeout:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Dropped\x20Exit:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','AVG\x20Hold\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','---------------------------','Avg\x20Talk\x20Time\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','erlangAbandonmentRate','Agent\x20Busy\x20Factor:\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','merge','seconds','clearing\x20variable\x20start\x20progressive','handlePredictive','clearing\x20variable\x20handle\x20predictive','preview','string','\x22%s\x22\x20<%s>','\x22\x22\x20<>','error','inspect','stack','length','undefined','[decremetOriginate]\x20is\x20null\x20or\x20undefined','contactsRescheduled'];(function(_0x214f8b,_0xde2ef6){var _0x6bb2a3=function(_0x4623ae){while(--_0x4623ae){_0x214f8b['push'](_0x214f8b['shift']());}};_0x6bb2a3(++_0xde2ef6);}(_0x8cc8,0x177));var _0x88cc=function(_0x33f367,_0x31e422){_0x33f367=_0x33f367-0x0;var _0xc7970d=_0x8cc8[_0x33f367];return _0xc7970d;};'use strict';var util=require(_0x88cc('0x0'));var _=require(_0x88cc('0x1'));var BPromise=require(_0x88cc('0x2'));var uuid=require(_0x88cc('0x3'));var moment=require(_0x88cc('0x4'));var rr=require('rr');var md5=require(_0x88cc('0x5'));var Redis=require(_0x88cc('0x6'));var ut=require(_0x88cc('0x7'));var config=require(_0x88cc('0x8'));var logger=require(_0x88cc('0x9'))(_0x88cc('0xa'));var loggerBooked=require(_0x88cc('0x9'))(_0x88cc('0xb'));var loggerPredictive=require('../../../config/logger')('predictive');var loggerPredictiveCalls=require(_0x88cc('0x9'))(_0x88cc('0xc'));var loggerSyncQueueSummary=require(_0x88cc('0x9'))(_0x88cc('0xd'));var ami=require('../ami');config[_0x88cc('0xe')]=_[_0x88cc('0xf')](config['redis'],{'host':_0x88cc('0x10'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x88cc('0xe')]));var cmHopper=require(_0x88cc('0x11'));var cmHopperHistory=require(_0x88cc('0x12'));var cmHopperBlack=require(_0x88cc('0x13'));var voiceQueueRt=require('../rpc/voiceQueueRt');var Action=require(_0x88cc('0x14'));var History=require(_0x88cc('0x15'));var Final=require(_0x88cc('0x16'));var AgentComplete=require(_0x88cc('0x17'));var QueueCallerAbandon=require(_0x88cc('0x18'));var Hangup=require(_0x88cc('0x19'));var ipAgi=process[_0x88cc('0x1a')][_0x88cc('0x1b')]||'127.0.0.1';var strategy={'rrmemory':_0x88cc('0x1c'),'roundrobin':_0x88cc('0x1d')};var Sequence=function(){};Sequence[_0x88cc('0x1e')][_0x88cc('0x1f')]=function(_0x1291a6){this[_0x88cc('0x20')]=this['tail']?this[_0x88cc('0x20')][_0x88cc('0x21')](_0x1291a6):_0x1291a6();};function Dialer(_0x1a42ab,_0x2625db){this[_0x88cc('0x22')]=new Sequence();this['preview']=_0x2625db;this[_0x88cc('0x23')]=_0x1a42ab[_0x88cc('0x23')];this[_0x88cc('0x24')]=_0x1a42ab[_0x88cc('0x24')];this[_0x88cc('0x25')]=_0x1a42ab['agents'];this[_0x88cc('0x26')]=_0x1a42ab[_0x88cc('0x26')];this['maxNumberOriginate']=config[_0x88cc('0x27')]||0x2;this['channels']={};this[_0x88cc('0x28')]={};this[_0x88cc('0x29')]={};this['uniqueId']={};this[_0x88cc('0x2a')]={};this[_0x88cc('0x2b')]={};this[_0x88cc('0x2c')]={};this[_0x88cc('0x2d')]={};this[_0x88cc('0x2e')]={};this[_0x88cc('0x2f')]={};ami['on']('agentconnect',this[_0x88cc('0x30')][_0x88cc('0x31')](this));ami['on'](_0x88cc('0x32'),this[_0x88cc('0x33')][_0x88cc('0x31')](this));ami['on'](_0x88cc('0x34'),this[_0x88cc('0x35')][_0x88cc('0x31')](this));ami['on'](_0x88cc('0x36'),this[_0x88cc('0x37')][_0x88cc('0x31')](this));ami['on'](_0x88cc('0x38'),this[_0x88cc('0xd')]['bind'](this));ami['on'](_0x88cc('0x39'),this[_0x88cc('0x3a')][_0x88cc('0x31')](this));ami['on'](_0x88cc('0x3b'),this[_0x88cc('0x3c')][_0x88cc('0x31')](this));ami['on'](_0x88cc('0x3d'),this[_0x88cc('0x3e')]['bind'](this));ami['on']('queuemember',this[_0x88cc('0x3f')][_0x88cc('0x31')](this));ami['on'](_0x88cc('0x40'),this['syncQueueStatusComplete']['bind'](this));this[_0x88cc('0x41')]();this[_0x88cc('0x42')]();}function isNotNull(_0x5511b9){return _0x5511b9!==null&&!_[_0x88cc('0x43')](_0x5511b9);}function checkIsLoggedIn(_0x17d432,_0x10248e){return function(){if(_0x10248e<=0x0){_0x17d432['message']=_0x88cc('0x44');throw _0x17d432[_0x88cc('0x45')]+_0x88cc('0x46');}};}function isActive(_0x59b4c5){return _0x59b4c5;}function checkIsActive(_0x2a9de4,_0x1ffc13){return function(){if(!isActive(_0x1ffc13)){_0x2a9de4[_0x88cc('0x47')]=_0x88cc('0x48');throw _0x2a9de4[_0x88cc('0x45')]+_0x88cc('0x49');}};}function checkInterval(_0x5628d9){return function(){if(!isNotNull(_0x5628d9[_0x88cc('0x4a')])){_0x5628d9[_0x88cc('0x47')]=_0x88cc('0x4b');throw _0x5628d9[_0x88cc('0x45')]+_0x88cc('0x4c');}if(!isNotNull(_0x5628d9[_0x88cc('0x4a')][_0x88cc('0x4d')])){_0x5628d9['message']='INTERVAL_IS_NULL';throw _0x5628d9[_0x88cc('0x45')]+_0x88cc('0x4c');}if(!isNotNull(_[_0x88cc('0x4e')](_0x5628d9[_0x88cc('0x4a')][_0x88cc('0x4d')]))){_0x5628d9['message']=_0x88cc('0x4b');throw _0x5628d9[_0x88cc('0x45')]+_0x88cc('0x4c');}};}function msgResponse(_0x3baf9f,_0x2bb05b,_0x43bac6){return{'action':_0x3baf9f,'response':_0x2bb05b,'message':_0x43bac6,'stack':_0x43bac6};}function myreject(_0x263ca2){return function(_0x46fb4b){return _0x263ca2(msgResponse(_0x88cc('0x4f'),_0x88cc('0x50'),JSON[_0x88cc('0x51')](_0x46fb4b)));};}function getSeconds(_0x36dc7e,_0x526193){var _0x199cde=moment(_0x36dc7e)[_0x88cc('0x52')](0x0);var _0x52e231=moment(_0x526193)[_0x88cc('0x52')](0x0);return _0x199cde['diff'](_0x52e231,'seconds');}function emit(_0x5278f2,_0x2beb74,_0x4b2b85){io['to'](_0x5278f2)[_0x88cc('0x53')](_0x2beb74,_0x4b2b85);}function emitVoiceQueueSummary(_0x1fb2ca){if(_0x1fb2ca['type']===_0x88cc('0x54')){var _0x57ecf7={'id':_0x1fb2ca['id'],'name':_0x1fb2ca[_0x88cc('0x45')],'strategy':_0x1fb2ca['strategy'],'answered':_0x1fb2ca[_0x88cc('0x55')],'available':_0x1fb2ca['available'],'loggedIn':_0x1fb2ca[_0x88cc('0x56')],'pTalking':_0x1fb2ca[_0x88cc('0x57')],'sumBillable':_0x1fb2ca[_0x88cc('0x58')],'sumDuration':_0x1fb2ca[_0x88cc('0x59')],'sumHoldTime':_0x1fb2ca['sumHoldTime']||0x0,'talking':_0x1fb2ca[_0x88cc('0x5a')],'total':_0x1fb2ca['total'],'type':_0x1fb2ca[_0x88cc('0x5b')],'unmanaged':_0x1fb2ca[_0x88cc('0x5c')],'abandoned':_0x1fb2ca[_0x88cc('0x5d')],'waiting':_0x1fb2ca[_0x88cc('0x5e')],'loggedInDb':_0x1fb2ca[_0x88cc('0x5f')],'dialActive':_0x1fb2ca[_0x88cc('0x60')],'dialMethod':_0x1fb2ca[_0x88cc('0x61')],'dialOriginateCallerIdName':_0x1fb2ca[_0x88cc('0x62')],'dialOriginateCallerIdNumber':_0x1fb2ca[_0x88cc('0x63')],'dialOriginateTimeout':_0x1fb2ca['dialOriginateTimeout'],'dialPrefix':_0x1fb2ca[_0x88cc('0x64')],'outboundAnswerAgiCallsDay':_0x1fb2ca[_0x88cc('0x65')],'outboundAnswerCallsDay':_0x1fb2ca[_0x88cc('0x66')],'outboundBlacklistCallsDay':_0x1fb2ca['outboundBlacklistCallsDay'],'outboundBusyCallsDay':_0x1fb2ca[_0x88cc('0x67')],'outboundCongestionCallsDay':_0x1fb2ca[_0x88cc('0x68')],'outboundDropCallsDayACS':_0x1fb2ca[_0x88cc('0x69')],'outboundDropCallsDayCallersExit':_0x1fb2ca['outboundDropCallsDayCallersExit'],'outboundDropCallsDayTimeout':_0x1fb2ca[_0x88cc('0x6a')],'outboundNoAnswerCallsDay':_0x1fb2ca[_0x88cc('0x6b')],'outboundNoSuchCallsDay':_0x1fb2ca[_0x88cc('0x6c')],'outboundOriginateFailureCallsDay':_0x1fb2ca[_0x88cc('0x6d')],'outboundReCallsDay':_0x1fb2ca[_0x88cc('0x6e')],'outboundRejectCallsDay':_0x1fb2ca['outboundRejectCallsDay'],'outboundUnknownCallsDay':_0x1fb2ca[_0x88cc('0x6f')],'predictiveIntervalAnsweredCalls':_0x1fb2ca[_0x88cc('0x70')],'predictiveIntervalAvgHoldtime':_0x1fb2ca[_0x88cc('0x71')],'predictiveIntervalAvgTalktime':_0x1fb2ca[_0x88cc('0x72')],'predictiveIntervalDroppedCallsCallersExit':_0x1fb2ca[_0x88cc('0x73')],'predictiveIntervalDroppedCallsTimeout':_0x1fb2ca['predictiveIntervalDroppedCallsTimeout'],'predictiveIntervalErlangCalls':_0x1fb2ca[_0x88cc('0x74')],'predictiveIntervalErlangCallsDroppedCalls':_0x1fb2ca['predictiveIntervalErlangCallsDroppedCalls'],'predictiveIntervalHitRate':_0x1fb2ca['predictiveIntervalHitRate'],'predictiveIntervalMultiplicativeFactor':_0x1fb2ca[_0x88cc('0x75')],'predictiveIntervalPauses':_0x1fb2ca[_0x88cc('0x76')],'predictiveIntervalAvailable':_0x1fb2ca['predictiveIntervalAvailable'],'predictiveIntervalTotalCalls':_0x1fb2ca['predictiveIntervalTotalCalls'],'message':_0x1fb2ca[_0x88cc('0x47')],'originated':_0x1fb2ca[_0x88cc('0x77')],'erlangCalls':_0x1fb2ca[_0x88cc('0x78')],'erlangCallToSecond':_0x1fb2ca[_0x88cc('0x79')],'erlangAbandonmentRate':_0x1fb2ca['erlangAbandonmentRate'],'erlangBusyFactor':_0x1fb2ca[_0x88cc('0x7a')],'startPredictive':_0x1fb2ca[_0x88cc('0x2b')],'startProgressive':_0x1fb2ca[_0x88cc('0x2c')]};if(_0x1fb2ca[_0x88cc('0x7b')]){_0x57ecf7[_0x88cc('0x7b')]={'id':_0x1fb2ca[_0x88cc('0x7b')]['id'],'name':_0x1fb2ca[_0x88cc('0x7b')][_0x88cc('0x45')],'active':_0x1fb2ca[_0x88cc('0x7b')][_0x88cc('0x7c')],'callerid':_0x1fb2ca[_0x88cc('0x7b')]['callerid']};}if(_0x1fb2ca[_0x88cc('0x4a')]){_0x57ecf7[_0x88cc('0x4a')]={'id':_0x1fb2ca[_0x88cc('0x4a')]['id'],'name':_0x1fb2ca['Interval'][_0x88cc('0x45')]};}var _0xdc32cb=md5(JSON['stringify'](_0x57ecf7));if(_0x1fb2ca[_0x88cc('0x5')]!==_0xdc32cb){_0x1fb2ca[_0x88cc('0x5')]=_0xdc32cb;emit(util[_0x88cc('0x7d')](_0x88cc('0x7e'),_0x57ecf7['name']),_0x88cc('0x7f'),_0x57ecf7);}}}function emitCampaignSummary(_0x437584){if(_0x437584['type']===_0x88cc('0x80')){emit(util[_0x88cc('0x7d')](_0x88cc('0x81'),_0x437584[_0x88cc('0x45')]),_0x88cc('0x82'),_0x437584);}}function checkGetDataPredictive(_0x151057){if(isNotNull(_0x151057)&&!_[_0x88cc('0x4e')](_0x151057)){loggerPredictive[_0x88cc('0x83')](_0x88cc('0x84'));loggerPredictive[_0x88cc('0x83')](_0x88cc('0x85'),_0x151057[_0x88cc('0x86')]);loggerPredictive[_0x88cc('0x83')](_0x88cc('0x87'),_0x151057[_0x88cc('0x70')]);loggerPredictive[_0x88cc('0x83')](_0x88cc('0x88'),_0x151057['predictiveIntervalDroppedCallsTimeout']);loggerPredictive[_0x88cc('0x83')](_0x88cc('0x89'),_0x151057['predictiveIntervalDroppedCallsCallersExit']);loggerPredictive['info'](_0x88cc('0x8a'),_0x151057[_0x88cc('0x71')]);loggerPredictive[_0x88cc('0x83')]('AVG\x20Talk\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x151057['predictiveIntervalAvgTalktime']);loggerPredictive[_0x88cc('0x83')](_0x88cc('0x8b'));if(_0x151057[_0x88cc('0x86')]>0x0){if(!_[_0x88cc('0x43')](_0x151057[_0x88cc('0x72')])&&_0x151057[_0x88cc('0x72')]>0x0){return!![];}loggerPredictive['info'](_0x88cc('0x8c'));if(!_[_0x88cc('0x43')](_0x151057[_0x88cc('0x71')])&&_0x151057[_0x88cc('0x71')]>0x0){return!![];}loggerPredictive[_0x88cc('0x83')](_0x88cc('0x8d'));}else{loggerPredictive[_0x88cc('0x83')](_0x88cc('0x8e'));}}else{loggerPredictive['info'](_0x88cc('0x8f'));}return![];}function mergeDataErlangB(_0x16e3dd){return function(_0x4b5676){loggerPredictive[_0x88cc('0x83')](_0x88cc('0x90'));loggerPredictive[_0x88cc('0x83')](_0x88cc('0x91'),_0x4b5676[_0x88cc('0x78')]);loggerPredictive[_0x88cc('0x83')]('One\x20call\x20every:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x4b5676['erlangCallToSecond']);loggerPredictive[_0x88cc('0x83')]('Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x4b5676[_0x88cc('0x92')]);loggerPredictive['info'](_0x88cc('0x93'),_0x4b5676[_0x88cc('0x7a')]);loggerPredictive[_0x88cc('0x83')](_0x88cc('0x94'),_0x4b5676[_0x88cc('0x92')]);loggerPredictive[_0x88cc('0x83')](_0x88cc('0x8b'));_[_0x88cc('0x95')](_0x16e3dd,_0x4b5676);};}function getDiff(_0x5e2b8f){var _0x4d065e=moment()[_0x88cc('0x52')](0x0);var _0x12c704=moment(_0x5e2b8f)[_0x88cc('0x52')](0x0);return _0x4d065e['diff'](_0x12c704,_0x88cc('0x96'));}function ifInterval(_0x28d577,_0xbbc66){if(_['isUndefined'](_0xbbc66)){return![];}return getDiff(_0xbbc66)<_0x28d577*0x3c;}function freeVariablesPredictive(_0x1d9c8d){if(isNotNull(_0x1d9c8d)){if(!_[_0x88cc('0x43')](_0x1d9c8d[_0x88cc('0x2c')])){_0x1d9c8d['startProgressive']=undefined;loggerPredictive[_0x88cc('0x83')](_0x1d9c8d[_0x88cc('0x45')],_0x88cc('0x97'));}if(!_[_0x88cc('0x43')](_0x1d9c8d[_0x88cc('0x2b')])){_0x1d9c8d[_0x88cc('0x2b')]=undefined;loggerPredictive[_0x88cc('0x83')](_0x1d9c8d[_0x88cc('0x45')],'clearing\x20variable\x20start\x20predictive');}if(!_[_0x88cc('0x43')](_0x1d9c8d['handlePredictive'])){clearInterval(_0x1d9c8d[_0x88cc('0x98')]);_0x1d9c8d[_0x88cc('0x98')]=undefined;loggerPredictive[_0x88cc('0x83')](_0x1d9c8d[_0x88cc('0x45')],_0x88cc('0x99'));}}}function erlangb(_0x38411f,_0x2b3727){if(_0x2b3727===0x0){return 0x0;}var _0x5a781d=0x1;for(var _0x26ba6d=0x1;_0x26ba6d<=_0x2b3727;_0x26ba6d+=0x1){_0x5a781d=0x1+_0x5a781d*_0x26ba6d/_0x38411f;}return 0x1/_0x5a781d;}function isVoiceQueueOutbound(_0x4aaaf2){return _0x4aaaf2===_0x88cc('0x54');}function isNotPreview(_0x351c94){return _0x351c94!==_0x88cc('0x9a');}function isCampaignIvr(_0x4eac9f){return _0x4eac9f===_0x88cc('0x80');}function getCallerId(_0x4d0876,_0x556525,_0x39f69d){if(!_['isUndefined'](_0x39f69d)&&typeof _0x39f69d==='string'&&!_[_0x88cc('0x4e')](_0x39f69d)){if(!_[_0x88cc('0x43')](_0x556525)&&typeof _0x556525===_0x88cc('0x9b')&&!_[_0x88cc('0x4e')](_0x556525)){return util[_0x88cc('0x7d')](_0x88cc('0x9c'),_0x556525,_0x39f69d);}return util[_0x88cc('0x7d')](_0x88cc('0x9c'),_0x39f69d,_0x39f69d);}if(!_['isUndefined'](_0x4d0876)&&typeof _0x4d0876===_0x88cc('0x9b')&&!_[_0x88cc('0x4e')](_0x4d0876)){return _0x4d0876;}return _0x88cc('0x9d');}function loggerCatchQueueSummary(_0x2195ef,_0x2a8ec3){return function(_0x57d5ed){freeVariablesPredictive(_0x2a8ec3);emitVoiceQueueSummary(_0x2a8ec3);emitCampaignSummary(_0x2a8ec3);loggerSyncQueueSummary[_0x88cc('0x9e')](_0x2195ef,util[_0x88cc('0x9f')](_0x57d5ed,{'showHidden':![],'depth':null}));};}function loggerCatchPredictive(_0x3857ad,_0x180534){return function(_0x1cba60){loggerPredictive[_0x88cc('0x9e')](_0x180534[_0x88cc('0x45')],_0x3857ad);loggerPredictive['error'](_0x1cba60[_0x88cc('0xa0')]);freeVariablesPredictive(_0x180534);};}function loggerCatch(_0x17312d){return function(_0x15ca84){logger[_0x88cc('0x9e')](_0x17312d,util[_0x88cc('0x9f')](_0x15ca84,{'showHidden':![],'depth':null}));};}function checkContactEmpty(_0x440ec2){return _0x440ec2&&!_[_0x88cc('0x43')](_0x440ec2)&&_0x440ec2[_0x88cc('0xa1')]>0x0;}function decremetOriginate(_0x58ca5c){if(!_[_0x88cc('0x43')](_0x58ca5c)&&_0x58ca5c!==null){if(typeof _0x58ca5c[_0x88cc('0x77')]!==_0x88cc('0xa2')){if(_0x58ca5c[_0x88cc('0x77')]>0x0){_0x58ca5c['originated']-=0x1;}else{logger[_0x88cc('0x9e')]('[decremetOriginate]\x20object\x20originated\x20is\x20negative');}}}else{logger[_0x88cc('0x9e')](_0x88cc('0xa3'));}}function checkContactLowerLimitOriginate(_0x39f837,_0x249a78,_0x250f7f){if(_0x249a78>_0x250f7f){for(var _0x1370e6=0x0;_0x1370e6<_0x249a78-_0x250f7f;_0x1370e6+=0x1){decremetOriginate(_0x39f837);}}}function loggerGetContactDialer(_0xc8ab27,_0x37db75,_0x5b889e){return function(_0x4e6000){checkContactLowerLimitOriginate(_0x37db75,_0x5b889e,0x0);logger['error'](_0xc8ab27,util[_0x88cc('0x9f')](_0x4e6000,{'showHidden':![],'depth':null}));};}function sendMessageReschedule(_0x235c0a){return function(_0x5a4511){if(isNotNull(_0x5a4511)&&isNotNull(_0x5a4511[0x0])){if(_0x5a4511[0x0][_0x88cc('0xa4')]>0x0){_0x235c0a[_0x88cc('0x47')]=_0x88cc('0xa5');logger[_0x88cc('0x83')](_0x88cc('0xa6')+_0x235c0a['name'],_0x5a4511[0x0][_0x88cc('0xa4')],'contacts');}else{_0x235c0a[_0x88cc('0x47')]=_0x88cc('0xa7');logger['info'](_0x88cc('0xa8')+_0x235c0a[_0x88cc('0x45')]);}}};}function notSendMessagesQueue(_0x11532e){if(_0x11532e[_0x88cc('0xa9')]){freeVariablesPredictive(_0x11532e);if(_0x11532e[_0x88cc('0x77')]===0x0&&_0x11532e[_0x88cc('0x5a')]===0x0&&_0x11532e[_0x88cc('0x5e')]===0x0&&(_0x11532e[_0x88cc('0x57')]||0x0)===0x0){_0x11532e[_0x88cc('0xa9')]=![];_0x11532e[_0x88cc('0xaa')]=0x0;_0x11532e['message']='NOT_ACTIVE';loggerSyncQueueSummary[_0x88cc('0x9e')](_0x88cc('0xab'),_0x11532e[_0x88cc('0x45')],_0x88cc('0xac'));}else{_0x11532e[_0x88cc('0x47')]=_0x88cc('0xad');loggerSyncQueueSummary[_0x88cc('0x9e')](_0x88cc('0xab'),_0x11532e[_0x88cc('0x45')],_0x88cc('0xae'));}emitVoiceQueueSummary(_0x11532e);}}function notSendMessagesCampaign(_0x1d57ab){if(_0x1d57ab['sendMessageOneNotActive']){if(_0x1d57ab[_0x88cc('0x77')]===0x0){_0x1d57ab['sendMessageOneNotActive']=![];_0x1d57ab['message']=_0x88cc('0x48');loggerSyncQueueSummary[_0x88cc('0x9e')]('[syncQueueSummary]\x20Campaign\x20Ivr:\x20',_0x1d57ab['name'],_0x88cc('0xac'));}else{_0x1d57ab['message']=_0x88cc('0xad');loggerSyncQueueSummary[_0x88cc('0x9e')]('[syncQueueSummary]\x20Campaign\x20Ivr:\x20',_0x1d57ab[_0x88cc('0x45')],'is\x20disactive');}emitCampaignSummary(_0x1d57ab);}}function createObjHistory(_0x162045,_0x594296,_0x203801,_0xd5e338,_0x1a4758){_0x162045['message']=_0x203801;var _0xb251cb=new Action(_0x162045,_0x594296);var _0x1ae515=new History(_0xb251cb);_0x1ae515[_0x88cc('0xaf')]=_0xd5e338;_0x1ae515[_0x88cc('0xb0')]=_0x1a4758;_0x1ae515[_0x88cc('0xb1')]=_0xb251cb[_0x88cc('0xb2')];return _0x1ae515;}Dialer['prototype'][_0x88cc('0x42')]=function(){var _0x92602c=this;setInterval(function(){_0x92602c[_0x88cc('0xb3')](_0x92602c[_0x88cc('0xb4')],_0x88cc('0xb5'));_0x92602c['clearZombieChannels'](_0x92602c[_0x88cc('0x28')],'[actions]');},0x32c8);};Dialer[_0x88cc('0x1e')][_0x88cc('0xb3')]=function(_0x2db749,_0x3d7b36){var _0x42d58d=this;for(var _0x1d6429 in _0x2db749){if(typeof _0x2db749[_0x1d6429]!=='undefined'){this[_0x88cc('0x22')][_0x88cc('0x1f')](function(){if(!_[_0x88cc('0xb6')](_0x2db749[_0x1d6429])){return ami[_0x88cc('0xb7')]({'action':_0x88cc('0xb8'),'channel':_0x2db749[_0x1d6429][_0x88cc('0xb9')]})['catch'](function(_0x259610){if(_0x259610[_0x88cc('0x47')]===_0x88cc('0xba')){setTimeout(function(){if(_0x2db749[_0x1d6429]&&_0x2db749[_0x1d6429]['type']!==_0x88cc('0x80')){_0x42d58d[_0x88cc('0xbb')](_0x42d58d['voiceQueues'][_0x2db749[_0x1d6429][_0x88cc('0xbc')]]);logger[_0x88cc('0x9e')](_0x88cc('0xbd'),_0x3d7b36,_0x1d6429,_0x2db749[_0x1d6429][_0x88cc('0xbc')]);delete _0x2db749[_0x1d6429];}if(_0x2db749[_0x1d6429]&&_0x2db749[_0x1d6429][_0x88cc('0x5b')]==='ivr'){_0x42d58d[_0x88cc('0xbb')](_0x42d58d[_0x88cc('0x24')][_0x2db749[_0x1d6429][_0x88cc('0xbc')]]);logger[_0x88cc('0x9e')]('[Dialer][checkChannel][ivr]',_0x3d7b36,_0x1d6429,_0x2db749[_0x1d6429][_0x88cc('0xbc')]);delete _0x2db749[_0x1d6429];}},0x2328);}});}});}}};Dialer[_0x88cc('0x1e')]['countReScheduled']=function(_0x2577ca){return BPromise[_0x88cc('0xbe')]()['then'](cmHopper[_0x88cc('0xbf')](_0x2577ca))[_0x88cc('0xc0')](loggerCatch(_0x88cc('0xc1')));};Dialer[_0x88cc('0x1e')][_0x88cc('0xc2')]=function(_0x31d222){return BPromise[_0x88cc('0xbe')]()[_0x88cc('0xc3')](cmHopperBlack[_0x88cc('0xc2')](_0x31d222))[_0x88cc('0xc0')](loggerCatch('[checkIsBlackList]\x20'));};Dialer['prototype'][_0x88cc('0xc4')]=function(_0x58b4ed){return BPromise['resolve']()['then'](cmHopperBlack[_0x88cc('0xc4')](_0x58b4ed))[_0x88cc('0xc0')](loggerCatch(_0x88cc('0xc5')));};Dialer[_0x88cc('0x1e')][_0x88cc('0xc6')]=function(_0x366c70){return BPromise[_0x88cc('0xbe')]()[_0x88cc('0xc3')](cmHopperHistory['avgHandleTime'](_0x366c70))['catch'](loggerCatch('[averageHandleTime]\x20'));};Dialer[_0x88cc('0x1e')][_0x88cc('0xc7')]=function(_0xfd11b7){return BPromise[_0x88cc('0xbe')]()['then'](cmHopper['rescheduleContact'](_0xfd11b7))[_0x88cc('0xc0')](loggerCatch('[rescheduleContact]\x20'));};Dialer['prototype'][_0x88cc('0xc8')]=function(_0x4b9b47,_0x4b87fe,_0x2eb918){return BPromise[_0x88cc('0xbe')]()[_0x88cc('0xc3')](cmHopper[_0x88cc('0xc8')](_0x4b9b47,_0x4b87fe,_0x2eb918))[_0x88cc('0xc0')](loggerCatch('[unlockContact]\x20'));};Dialer['prototype'][_0x88cc('0xc9')]=function(_0x4f63e6,_0x5a9818,_0x45d02e,_0x5c7b55,_0x183c63){return BPromise['resolve']()[_0x88cc('0xc3')](cmHopper['getContactDialer'](_0x4f63e6,_0x5a9818,_0x45d02e,_0x5c7b55))[_0x88cc('0xc0')](function(_0x3f175f){_0x183c63[_0x88cc('0xca')]-=_0x45d02e;_0x183c63[_0x88cc('0xca')]=_0x183c63['temp']>0x0?_0x183c63[_0x88cc('0xca')]:0x0;loggerCatch(_0x88cc('0xcb'))(_0x3f175f);});};Dialer['prototype']['getContactDialerIvr']=function(_0x5170e7,_0x4dae6a,_0x53058d,_0x51352b){return BPromise[_0x88cc('0xbe')]()[_0x88cc('0xc3')](cmHopper[_0x88cc('0xcc')](_0x5170e7,_0x4dae6a,_0x53058d))['catch'](function(_0x20cfed){_0x51352b[_0x88cc('0xca')]-=_0x4dae6a;_0x51352b[_0x88cc('0xca')]=_0x51352b['temp']>0x0?_0x51352b[_0x88cc('0xca')]:0x0;loggerCatch(_0x88cc('0xcd'))(_0x20cfed);});};Dialer[_0x88cc('0x1e')]['getVoiceQueueRtPauses']=function(_0x35da6f){return BPromise[_0x88cc('0xbe')]()[_0x88cc('0xc3')](voiceQueueRt[_0x88cc('0xce')](_0x35da6f))['catch'](loggerCatch(_0x88cc('0xcf')));};Dialer[_0x88cc('0x1e')][_0x88cc('0xd0')]=function(_0x9dd2df){return BPromise[_0x88cc('0xbe')]()['then'](cmHopper[_0x88cc('0xd0')](_0x9dd2df))['catch'](loggerCatch('[moveContactManagedDialer]\x20'));};Dialer[_0x88cc('0x1e')][_0x88cc('0xd1')]=function(_0x5b40f8){return BPromise[_0x88cc('0xbe')]()['then'](cmHopperHistory[_0x88cc('0xd1')](_0x5b40f8))[_0x88cc('0xc0')](loggerCatch('[createHistory]\x20'));};Dialer[_0x88cc('0x1e')]['updateOriginated']=function(_0x5e875f){if(!_[_0x88cc('0x43')](_0x5e875f)&&_0x5e875f!==null){if(typeof _0x5e875f[_0x88cc('0x77')]!==_0x88cc('0xa2')){if(_0x5e875f[_0x88cc('0x77')]>0x0){_0x5e875f[_0x88cc('0x77')]-=0x1;}else{logger[_0x88cc('0x9e')]('[updateOriginated]\x20object\x20originated\x20is\x20negative');}}}else{logger[_0x88cc('0x9e')]('[updateOriginated]\x20is\x20null\x20or\x20undefined');}};Dialer[_0x88cc('0x1e')][_0x88cc('0xd2')]=function(_0x902574,_0x26491b){var _0x3a73c2=this;return function(_0x493434){_0x3a73c2[_0x88cc('0xbb')](_0x26491b);logger[_0x88cc('0x9e')](_0x902574,util[_0x88cc('0x9f')](_0x493434,{'showHidden':![],'depth':null}));};};Dialer['prototype']['emptyContact']=function(_0x5810fe,_0x7dc9dd,_0x534454){var _0x313403={'state':0x19,'statedesc':'notFound'};this[_0x88cc('0xbb')](_0x7dc9dd);this[_0x88cc('0xd3')](_[_0x88cc('0x95')](_0x313403,_['pick'](_0x534454,[_0x88cc('0xd4'),_0x88cc('0xd5'),_0x88cc('0xd6'),_0x88cc('0xd7'),_0x88cc('0xd8')])),_0x88cc('0xd9'),_0x88cc('0xda'));logger[_0x88cc('0x9e')](_0x5810fe);};Dialer[_0x88cc('0x1e')][_0x88cc('0xdb')]=function(_0x37e0f0){return _0x37e0f0===_0x88cc('0xdc');};Dialer[_0x88cc('0x1e')][_0x88cc('0xdd')]=function(_0x5c5ee0){return!_[_0x88cc('0x43')](_0x5c5ee0)&&_0x5c5ee0&&!_[_0x88cc('0x43')](_0x5c5ee0[_0x88cc('0x45')])&&!_[_0x88cc('0x43')](_0x5c5ee0['active'])&&_0x5c5ee0[_0x88cc('0x7c')]&&(this[_0x88cc('0x26')][util[_0x88cc('0x7d')](_0x88cc('0xde'),_0x5c5ee0[_0x88cc('0x45')])][_0x88cc('0xb8')]===_0x88cc('0xdf')||this[_0x88cc('0x26')][util[_0x88cc('0x7d')](_0x88cc('0xde'),_0x5c5ee0['name'])][_0x88cc('0xb8')]===_0x88cc('0xe0'));};Dialer['prototype'][_0x88cc('0xd3')]=function(_0x5150cf,_0x49d0f4,_0x2d69e2){this[_0x88cc('0xd1')](_0x5150cf)['catch'](loggerCatch(_0x49d0f4));this[_0x88cc('0xd0')](_0x5150cf)[_0x88cc('0xc0')](loggerCatch(_0x2d69e2));};Dialer[_0x88cc('0x1e')][_0x88cc('0x3e')]=function(_0x4dd455){var _0x5538e3=this[_0x88cc('0xb4')][_0x4dd455['uniqueid']];var _0x49f402;if(!_[_0x88cc('0xb6')](_0x4dd455)&&!_[_0x88cc('0xb6')](_0x4dd455[_0x88cc('0xe1')])&&!_[_0x88cc('0xb6')](_0x4dd455[_0x88cc('0xe1')]['amdstatus'])&&_0x4dd455['exten']==='xcally-motion-dialer'&&_0x5538e3){if(_0x5538e3[_0x88cc('0x5b')]!==_0x88cc('0x80')&&this[_0x88cc('0x23')][_0x5538e3[_0x88cc('0xbc')]][_0x88cc('0xe2')]&&_0x4dd455[_0x88cc('0xe3')]===_0x88cc('0xe4')){delete this['uniqueId'][_0x4dd455['uniqueid']];this[_0x88cc('0xbb')](this[_0x88cc('0x23')][_0x5538e3['queue']]);this[_0x88cc('0x23')][_0x5538e3[_0x88cc('0xbc')]][_0x88cc('0x66')]+=0x1;this[_0x88cc('0x23')][_0x5538e3[_0x88cc('0xbc')]][_0x88cc('0x65')]+=0x1;_0x49f402=new Hangup(_0x5538e3,_0x4dd455);_0x49f402[_0x88cc('0xaf')]=0x12;_0x49f402[_0x88cc('0xb0')]='HangupInAMD';_0x49f402[_0x88cc('0xe5')]=_0x88cc('0xe6');ami[_0x88cc('0x53')](_0x88cc('0xe7'),ut['buildObj'](_0x49f402,_0x88cc('0xe8')));this['saveInDb'](_0x49f402,'[syncHangupInAMD][createHistory]',_0x88cc('0xe9'));}if(_0x5538e3[_0x88cc('0x5b')]!==_0x88cc('0x80')&&this['voiceQueues'][_0x5538e3[_0x88cc('0xbc')]][_0x88cc('0xe2')]&&_0x4dd455[_0x88cc('0xe3')]===_0x88cc('0xea')){var _0x401cb4=this;return new BPromise(function(_0x14afcd,_0x1b5528){delete _0x401cb4[_0x88cc('0xb4')][_0x4dd455['uniqueid']];_0x401cb4[_0x88cc('0xbb')](_0x401cb4[_0x88cc('0x23')][_0x5538e3[_0x88cc('0xbc')]]);_0x401cb4[_0x88cc('0x23')][_0x5538e3['queue']][_0x88cc('0x66')]+=0x1;_0x401cb4[_0x88cc('0x23')][_0x5538e3[_0x88cc('0xbc')]]['outboundAnswerAgiCallsDay']+=0x1;var _0x180348=_0x401cb4['voiceQueues'][_0x5538e3[_0x88cc('0xbc')]];var _0x1fa789=new Hangup(_0x5538e3,_0x4dd455);_0x1fa789[_0x88cc('0xaf')]=0x13;_0x1fa789[_0x88cc('0xb0')]=_0x88cc('0xeb');_0x1fa789[_0x88cc('0xe5')]=_0x88cc('0xe6');_0x1fa789[_0x88cc('0xec')]+=0x1;_0x1fa789['countglobal']+=0x1;_0x1fa789[_0x88cc('0xe8')]=!![];ami[_0x88cc('0x53')](_0x88cc('0xe7'),ut[_0x88cc('0xed')](_0x1fa789,_0x88cc('0xe8')));_0x401cb4[_0x88cc('0xd1')](_0x1fa789)[_0x88cc('0xc0')](loggerCatch(_0x88cc('0xee')));if(_0x1fa789[_0x88cc('0xef')]+_0x1fa789['countcongestionretry']+_0x1fa789[_0x88cc('0xf0')]+_0x1fa789[_0x88cc('0xf1')]+_0x1fa789[_0x88cc('0xf2')]+_0x1fa789['countabandonedretry']+_0x1fa789[_0x88cc('0xec')]+_0x1fa789[_0x88cc('0xf3')]>=_0x180348[_0x88cc('0xf4')]){_0x401cb4[_0x88cc('0xf5')](_0x1fa789,_0x14afcd,_0x1b5528,_0x88cc('0xf6'));}else{if(_0x1fa789[_0x88cc('0xec')]>=_0x180348[_0x88cc('0xf7')]){_0x401cb4[_0x88cc('0xf8')](_0x1fa789,_0x14afcd,_0x1b5528,_0x88cc('0xf9'));}else{_0x401cb4['rescheduleContact']({'active':![],'countmachineretry':_0x1fa789[_0x88cc('0xec')],'scheduledat':moment()[_0x88cc('0xfa')](_0x180348[_0x88cc('0xfb')],_0x88cc('0xfc'))[_0x88cc('0x7d')](_0x88cc('0xfd')),'ContactId':_0x1fa789[_0x88cc('0xd4')],'ListId':_0x1fa789[_0x88cc('0xd5')],'VoiceQueueId':_0x1fa789['VoiceQueueId']||undefined,'CampaignId':_0x1fa789[_0x88cc('0xd8')]||undefined})[_0x88cc('0xc0')](loggerCatch('[rescheduleContact][Machine]'));_0x14afcd({'reschedule':0x1});}}});}if(_0x5538e3[_0x88cc('0x5b')]==='ivr'&&this[_0x88cc('0x24')][_0x5538e3[_0x88cc('0xbc')]][_0x88cc('0xe2')]&&_0x4dd455[_0x88cc('0xe3')]===_0x88cc('0xe4')){delete this[_0x88cc('0xb4')][_0x4dd455[_0x88cc('0xfe')]];this['updateOriginated'](this[_0x88cc('0x24')][_0x5538e3['queue']]);_0x49f402=new Hangup(_0x5538e3,_0x4dd455);_0x49f402[_0x88cc('0xaf')]=0x12;_0x49f402[_0x88cc('0xb0')]=_0x88cc('0xff');_0x49f402[_0x88cc('0xe5')]=_0x88cc('0xe6');ami[_0x88cc('0x53')](_0x88cc('0xe7'),ut[_0x88cc('0xed')](_0x49f402,_0x88cc('0xe8')));this[_0x88cc('0xd3')](_0x49f402,_0x88cc('0x100'),_0x88cc('0x101'));}if(_0x5538e3[_0x88cc('0x5b')]===_0x88cc('0x80')&&this[_0x88cc('0x24')][_0x5538e3['queue']][_0x88cc('0xe2')]&&_0x4dd455['value']==='MACHINE'){var _0x401cb4=this;return new BPromise(function(_0x3a50c4,_0x59d13a){delete _0x401cb4['uniqueId'][_0x4dd455['uniqueid']];_0x401cb4[_0x88cc('0xbb')](_0x401cb4['campaigns'][_0x5538e3['queue']]);_0x401cb4['campaigns'][_0x5538e3[_0x88cc('0xbc')]]['outboundAnswerCallsDay']+=0x1;_0x401cb4[_0x88cc('0x24')][_0x5538e3[_0x88cc('0xbc')]][_0x88cc('0x65')]+=0x1;var _0x5e3c87=_0x401cb4[_0x88cc('0x24')][_0x5538e3[_0x88cc('0xbc')]];var _0x55425e=new Hangup(_0x5538e3,_0x4dd455);_0x55425e[_0x88cc('0xaf')]=0x13;_0x55425e['statedesc']='Machine';_0x55425e[_0x88cc('0xe5')]=_0x88cc('0xe6');_0x55425e[_0x88cc('0xec')]+=0x1;_0x55425e['countglobal']+=0x1;_0x55425e['amd']=!![];ami[_0x88cc('0x53')](_0x88cc('0xe7'),ut[_0x88cc('0xed')](_0x55425e,_0x88cc('0xe8')));_0x401cb4['createHistory'](_0x55425e)[_0x88cc('0xc0')](loggerCatch('[syncAgentComplete][createHistory][0]'));if(_0x55425e[_0x88cc('0xef')]+_0x55425e[_0x88cc('0x102')]+_0x55425e[_0x88cc('0xf0')]+_0x55425e[_0x88cc('0xf1')]+_0x55425e['countdropretry']+_0x55425e[_0x88cc('0x103')]+_0x55425e[_0x88cc('0xec')]+_0x55425e[_0x88cc('0xf3')]>=_0x5e3c87[_0x88cc('0xf4')]){_0x401cb4[_0x88cc('0xf5')](_0x55425e,_0x3a50c4,_0x59d13a,_0x88cc('0xf6'));}else{if(_0x55425e['countmachineretry']>=_0x5e3c87[_0x88cc('0xf7')]){_0x401cb4['createStateFinal'](_0x55425e,_0x3a50c4,_0x59d13a,_0x88cc('0xf9'));}else{_0x401cb4['rescheduleContact']({'active':![],'countmachineretry':_0x55425e[_0x88cc('0xec')],'scheduledat':moment()[_0x88cc('0xfa')](_0x5e3c87[_0x88cc('0xfb')],_0x88cc('0xfc'))[_0x88cc('0x7d')](_0x88cc('0xfd')),'ContactId':_0x55425e[_0x88cc('0xd4')],'ListId':_0x55425e[_0x88cc('0xd5')],'VoiceQueueId':_0x55425e[_0x88cc('0xd7')]||undefined,'CampaignId':_0x55425e[_0x88cc('0xd8')]||undefined})['catch'](loggerCatch(_0x88cc('0x104')));_0x3a50c4({'reschedule':0x1});}}});}}};Dialer[_0x88cc('0x1e')][_0x88cc('0x3a')]=function(_0x51ea19){var _0x31de2e=this[_0x88cc('0xb4')][_0x51ea19[_0x88cc('0xfe')]];var _0x751b55=this;var _0x24b554;if(_0x31de2e&&_0x31de2e[_0x88cc('0x5b')]===_0x88cc('0x80')){delete this[_0x88cc('0xb4')][_0x51ea19[_0x88cc('0xfe')]];this[_0x88cc('0xbb')](this['campaigns'][_0x31de2e[_0x88cc('0xbc')]]);this[_0x88cc('0x24')][_0x31de2e[_0x88cc('0xbc')]][_0x88cc('0x105')]+=0x1;_0x24b554=new Hangup(_0x31de2e,_0x51ea19);this['createHistory'](_0x24b554)[_0x88cc('0xc0')](loggerCatch(_0x88cc('0x106')));this[_0x88cc('0xd0')](_0x24b554)[_0x88cc('0xc0')](loggerCatch('[syncHangupIvr]'));}if(_0x31de2e&&_0x31de2e[_0x88cc('0x5b')]!==_0x88cc('0x80')&&isNotNull(this[_0x88cc('0x23')][_0x31de2e['queue']][_0x88cc('0x107')])){delete this[_0x88cc('0xb4')][_0x51ea19[_0x88cc('0xfe')]];this['updateOriginated'](this['voiceQueues'][_0x31de2e[_0x88cc('0xbc')]]);this[_0x88cc('0x23')][_0x31de2e[_0x88cc('0xbc')]][_0x88cc('0x66')]+=0x1;this[_0x88cc('0x23')][_0x31de2e['queue']]['outboundAnswerAgiCallsDay']+=0x1;_0x24b554=new Hangup(_0x31de2e,_0x51ea19);_0x24b554[_0x88cc('0xaf')]=0x10;_0x24b554[_0x88cc('0xb0')]=_0x88cc('0x108');_0x24b554[_0x88cc('0xe5')]=_0x88cc('0x109');this[_0x88cc('0xd1')](_0x24b554)['catch'](loggerCatch('[syncHangupIvr][createHistory]'));this[_0x88cc('0xd0')](_0x24b554)[_0x88cc('0xc0')](loggerCatch('[syncHangupIvr]'));}if(_0x31de2e&&_0x31de2e[_0x88cc('0x5b')]!==_0x88cc('0x80')&&!isNotNull(this[_0x88cc('0x23')][_0x31de2e[_0x88cc('0xbc')]]['dialQueueProject'])){delete this[_0x88cc('0xb4')][_0x51ea19[_0x88cc('0xfe')]];this[_0x88cc('0xbb')](this[_0x88cc('0x23')][_0x31de2e[_0x88cc('0xbc')]]);this[_0x88cc('0x23')][_0x31de2e[_0x88cc('0xbc')]]['outboundUnknownCallsDay']+=0x1;_0x24b554=new Hangup(_0x31de2e,_0x51ea19);_0x24b554[_0x88cc('0xaf')]=0xc;_0x24b554['statedesc']=_0x51ea19[_0x88cc('0x10a')];_0x24b554[_0x88cc('0xe5')]=_0x88cc('0x10b');this[_0x88cc('0xd1')](_0x24b554)[_0x88cc('0xc0')](loggerCatch(_0x88cc('0x106')));this[_0x88cc('0xd0')](_0x24b554)[_0x88cc('0xc0')](loggerCatch('[syncHangupIvr]'));}};Dialer[_0x88cc('0x1e')][_0x88cc('0x37')]=function(_0x2f343f){var _0x1c2623=this['uniqueId'][_0x2f343f[_0x88cc('0xfe')]];var _0x56c122=this;if(this[_0x88cc('0x23')][_0x2f343f[_0x88cc('0xbc')]]){if(_0x1c2623&&_0x1c2623['type']!==_0x88cc('0x80')){delete this[_0x88cc('0xb4')][_0x2f343f[_0x88cc('0xfe')]];this['voiceQueues'][_0x2f343f[_0x88cc('0xbc')]][_0x88cc('0x66')]+=0x1;var _0x1bfff3=new AgentComplete(_0x1c2623,_0x2f343f);if(_0x2f343f[_0x88cc('0x10c')]===_0x88cc('0x10d')){_0x1bfff3[_0x88cc('0x10e')]=this[_0x88cc('0x23')][_0x2f343f['queue']]['dialQueueProject2']&&this[_0x88cc('0x23')][_0x2f343f[_0x88cc('0xbc')]][_0x88cc('0x10f')]?moment()[_0x88cc('0x7d')](_0x88cc('0xfd')):undefined;}this['createHistory'](_0x1bfff3)['catch'](loggerCatch(_0x88cc('0x110')));this[_0x88cc('0xd0')](_0x1bfff3)[_0x88cc('0xc0')](loggerCatch(_0x88cc('0x111')));}}};Dialer[_0x88cc('0x1e')]['syncAgentConnect']=function(_0x5e4f1f){if(this['voiceQueues'][_0x5e4f1f[_0x88cc('0xbc')]]){if(this[_0x88cc('0xb4')][_0x5e4f1f[_0x88cc('0xfe')]]&&this[_0x88cc('0xb4')][_0x5e4f1f[_0x88cc('0xfe')]][_0x88cc('0x5b')]!==_0x88cc('0x80')){this[_0x88cc('0xbb')](this[_0x88cc('0x23')][_0x5e4f1f[_0x88cc('0xbc')]]);this[_0x88cc('0xb4')][_0x5e4f1f['uniqueid']]['answertime']=moment()['format'](_0x88cc('0xfd'));}}};Dialer[_0x88cc('0x1e')][_0x88cc('0x112')]=function(_0x30d9c2){this[_0x88cc('0xd1')](_0x30d9c2)[_0x88cc('0xc0')](loggerCatch(_0x88cc('0x110')));this[_0x88cc('0xd0')](_0x30d9c2)[_0x88cc('0xc0')](loggerCatch(_0x88cc('0x113')));};Dialer[_0x88cc('0x1e')]['syncQueueCallerAbandon']=function(_0x4f2d3a){var _0x204366=this[_0x88cc('0xb4')][_0x4f2d3a['uniqueid']];var _0x1cf21e=this;if(this[_0x88cc('0x23')][_0x4f2d3a[_0x88cc('0xbc')]]){if(_0x204366&&_0x204366[_0x88cc('0x5b')]!==_0x88cc('0x80')){delete this[_0x88cc('0xb4')][_0x4f2d3a[_0x88cc('0xfe')]];this[_0x88cc('0xbb')](this['voiceQueues'][_0x4f2d3a[_0x88cc('0xbc')]]);_0x204366[_0x88cc('0x114')]=moment()['format'](_0x88cc('0xfd'));var _0x3d9b70=new QueueCallerAbandon(_0x204366,_0x4f2d3a);if(getSeconds(_0x204366[_0x88cc('0x114')],_0x204366[_0x88cc('0x115')])>=_0x204366[_0x88cc('0x116')]){this[_0x88cc('0x23')][_0x4f2d3a['queue']][_0x88cc('0x117')]+=0x1;this[_0x88cc('0x23')][_0x4f2d3a[_0x88cc('0xbc')]][_0x88cc('0x6a')]+=0x1;this[_0x88cc('0x23')][_0x4f2d3a[_0x88cc('0xbc')]]['predictiveIntervalErlangCallsDroppedCalls']+=0x1;_0x3d9b70[_0x88cc('0xaf')]=0xa;_0x3d9b70['statedesc']=_0x88cc('0x118');_0x3d9b70['dropreason']=_0x88cc('0x119');_0x3d9b70[_0x88cc('0x10e')]=this[_0x88cc('0x23')][_0x4f2d3a['queue']][_0x88cc('0x11a')]?moment()[_0x88cc('0x7d')]('YYYY-MM-DD\x20HH:mm:ss'):undefined;_0x3d9b70[_0x88cc('0xf2')]+=0x1;_0x3d9b70[_0x88cc('0x11b')]+=0x1;if(_0x3d9b70['countdropretry']>=this['voiceQueues'][_0x4f2d3a[_0x88cc('0xbc')]][_0x88cc('0x11c')]){this[_0x88cc('0x112')](_0x3d9b70);}else{this[_0x88cc('0xc7')]({'active':![],'countdropretry':_0x3d9b70[_0x88cc('0xf2')],'scheduledat':moment()[_0x88cc('0xfa')](this[_0x88cc('0x23')][_0x4f2d3a[_0x88cc('0xbc')]]['dialDropRetryFrequency'],'minutes')[_0x88cc('0x7d')](_0x88cc('0xfd')),'ContactId':_0x204366[_0x88cc('0xd4')],'ListId':_0x204366[_0x88cc('0xd5')],'VoiceQueueId':_0x204366[_0x88cc('0xd7')]||undefined,'CampaignId':_0x204366[_0x88cc('0xd8')]||undefined})[_0x88cc('0xc0')](loggerCatch(_0x88cc('0x11d')));var _0x3dda3a=new History(_0x3d9b70);_0x3dda3a[_0x88cc('0xaf')]=0xa;_0x3dda3a[_0x88cc('0xb0')]=_0x88cc('0x118');_0x3dda3a[_0x88cc('0xb2')]=moment()[_0x88cc('0x7d')](_0x88cc('0xfd'));_0x3dda3a[_0x88cc('0xb1')]=_0x3dda3a['starttime'];_0x3dda3a[_0x88cc('0x11e')]=_0x3d9b70[_0x88cc('0x11e')];_0x3dda3a[_0x88cc('0x11f')]=_0x3d9b70[_0x88cc('0x11f')];this[_0x88cc('0xd1')](_0x3dda3a)['catch'](loggerCatch(_0x88cc('0x120')));}}else{this[_0x88cc('0x23')][_0x4f2d3a['queue']][_0x88cc('0x73')]+=0x1;this['voiceQueues'][_0x4f2d3a['queue']][_0x88cc('0x121')]+=0x1;_0x3d9b70[_0x88cc('0xaf')]=0xb;_0x3d9b70[_0x88cc('0xb0')]=_0x88cc('0x122');_0x3d9b70[_0x88cc('0x123')]=_0x88cc('0x124');_0x3d9b70['countabandonedretry']+=0x1;_0x3d9b70[_0x88cc('0x11b')]+=0x1;if(_0x3d9b70[_0x88cc('0x103')]>=this['voiceQueues'][_0x4f2d3a[_0x88cc('0xbc')]][_0x88cc('0x125')]){this[_0x88cc('0x112')](_0x3d9b70);}else{this[_0x88cc('0xc7')]({'active':![],'countabandonedretry':_0x3d9b70[_0x88cc('0x103')],'scheduledat':moment()['add'](this[_0x88cc('0x23')][_0x4f2d3a['queue']]['dialAbandonedRetryFrequency'],_0x88cc('0xfc'))['format'](_0x88cc('0xfd')),'ContactId':_0x204366['ContactId'],'ListId':_0x204366[_0x88cc('0xd5')],'VoiceQueueId':_0x204366[_0x88cc('0xd7')]||undefined,'CampaignId':_0x204366[_0x88cc('0xd8')]||undefined})[_0x88cc('0xc0')](loggerCatch(_0x88cc('0x126')));var _0x3dda3a=new History(_0x3d9b70);_0x3dda3a[_0x88cc('0xaf')]=0xb;_0x3dda3a['statedesc']=_0x88cc('0x122');_0x3dda3a['starttime']=moment()[_0x88cc('0x7d')](_0x88cc('0xfd'));_0x3dda3a['endtime']=_0x3dda3a[_0x88cc('0xb2')];_0x3dda3a['calleridname']=_0x3d9b70[_0x88cc('0x11e')];_0x3dda3a[_0x88cc('0x11f')]=_0x3d9b70[_0x88cc('0x11f')];this['createHistory'](_0x3dda3a)[_0x88cc('0xc0')](loggerCatch(_0x88cc('0x127')));}}}}};Dialer[_0x88cc('0x1e')][_0x88cc('0x3c')]=function(_0x11b79d){if(this['actions'][_0x11b79d['uniqueid']]){this['actions'][_0x11b79d[_0x88cc('0xfe')]]['channel']=_0x11b79d[_0x88cc('0xb9')];}if(this[_0x88cc('0xb4')][_0x11b79d[_0x88cc('0xfe')]]){this['uniqueId'][_0x11b79d[_0x88cc('0xfe')]][_0x88cc('0xb9')]=_0x11b79d['channel'];}};Dialer['prototype'][_0x88cc('0x3f')]=function(_0x3a0782){if(strategy[this[_0x88cc('0x23')][this[_0x88cc('0x28')][_0x3a0782[_0x88cc('0x128')]][_0x88cc('0xbc')]][_0x88cc('0x129')]]===_0x88cc('0x1d')){if(this[_0x88cc('0x28')][_0x3a0782[_0x88cc('0x128')]]&&_[_0x88cc('0xb6')](this[_0x88cc('0x28')][_0x3a0782[_0x88cc('0x128')]][_0x88cc('0x12a')])&&_0x3a0782[_0x88cc('0xb8')]==='1'&&_0x3a0782[_0x88cc('0x12b')]==='0'){if(this['agents'][_0x3a0782[_0x88cc('0x12c')]]){if(!this[_0x88cc('0x25')][_0x3a0782[_0x88cc('0x12c')]][_0x88cc('0x12a')]){this[_0x88cc('0x25')][_0x3a0782[_0x88cc('0x12c')]][_0x88cc('0x12a')]=!![];this[_0x88cc('0x28')][_0x3a0782[_0x88cc('0x128')]][_0x88cc('0x12a')]=!![];this[_0x88cc('0x28')][_0x3a0782[_0x88cc('0x128')]][_0x88cc('0x12c')]=_0x3a0782[_0x88cc('0x12c')];}}}}else if((strategy[this[_0x88cc('0x23')][this[_0x88cc('0x28')][_0x3a0782['actionid']][_0x88cc('0xbc')]][_0x88cc('0x129')]]||_0x88cc('0x1c'))==='rrmemory'){if(this[_0x88cc('0x28')][_0x3a0782[_0x88cc('0x128')]]){if(this[_0x88cc('0x25')][_0x3a0782[_0x88cc('0x12c')]]){this[_0x88cc('0x28')][_0x3a0782[_0x88cc('0x128')]][_0x88cc('0x12c')]=_0x3a0782[_0x88cc('0x12c')];if(_['isNil'](this['queueBooked'][this['actions'][_0x3a0782[_0x88cc('0x128')]]['queue']])){this[_0x88cc('0x2e')][this['actions'][_0x3a0782[_0x88cc('0x128')]][_0x88cc('0xbc')]]=[];}this[_0x88cc('0x2e')][this[_0x88cc('0x28')][_0x3a0782[_0x88cc('0x128')]][_0x88cc('0xbc')]][_0x88cc('0x12d')](_['merge'](_[_0x88cc('0x12e')](this['actions'][_0x3a0782[_0x88cc('0x128')]],[_0x88cc('0x12f'),'stateinterface']),{'status':_0x3a0782[_0x88cc('0xb8')],'paused':_0x3a0782[_0x88cc('0x12b')]}));}}}};function unlockQueueStatus(_0x3d0220,_0x51902a){setTimeout(function(){if(_[_0x88cc('0x43')](_0x3d0220['queueStatusComplete'])){loggerBooked[_0x88cc('0x9e')](_0x88cc('0x130'),_0x51902a);}_0x3d0220[_0x88cc('0x131')]=!![];loggerBooked[_0x88cc('0x83')](_0x88cc('0x132'),_0x51902a,JSON[_0x88cc('0x51')](_['pick'](_0x3d0220,[_0x88cc('0x45'),'queueStatusComplete'])));},0x1f3);}Dialer[_0x88cc('0x1e')][_0x88cc('0x133')]=function(_0x1f39e0){var _0xc798b4=this;var _0x139557=_0xc798b4['voiceQueues'][_0xc798b4[_0x88cc('0x28')][_0x1f39e0[_0x88cc('0x128')]][_0x88cc('0xbc')]];if(strategy[this[_0x88cc('0x23')][this[_0x88cc('0x28')][_0x1f39e0[_0x88cc('0x128')]][_0x88cc('0xbc')]][_0x88cc('0x129')]]===_0x88cc('0x1d')){if(this[_0x88cc('0x28')][_0x1f39e0['actionid']]&&this[_0x88cc('0x28')][_0x1f39e0['actionid']][_0x88cc('0x12c')]){this[_0x88cc('0x9a')]['run'](this[_0x88cc('0x28')][_0x1f39e0[_0x88cc('0x128')]][_0x88cc('0x12f')],this[_0x88cc('0x28')][_0x1f39e0[_0x88cc('0x128')]][_0x88cc('0x12c')])['catch'](function(_0xb6a5a){logger[_0x88cc('0x9e')]('[Catch][Preview][syncQueueStatusComplete]',util['inspect'](_0xb6a5a,{'showHidden':![],'depth':null}));})[_0x88cc('0x21')](function(){_0xc798b4[_0x88cc('0xbb')](_0xc798b4[_0x88cc('0x23')][_0xc798b4[_0x88cc('0x28')][_0x1f39e0[_0x88cc('0x128')]][_0x88cc('0xbc')]]);_0xc798b4[_0x88cc('0x25')][_0xc798b4[_0x88cc('0x28')][_0x1f39e0[_0x88cc('0x128')]]['stateinterface']][_0x88cc('0x12a')]=![];delete _0xc798b4['actions'][_0x1f39e0[_0x88cc('0x128')]];unlockQueueStatus(_0x139557);});}else{this[_0x88cc('0xbb')](this[_0x88cc('0x23')][this[_0x88cc('0x28')][_0x1f39e0[_0x88cc('0x128')]][_0x88cc('0xbc')]]);this[_0x88cc('0xc7')]({'active':![],'ContactId':this['actions'][_0x1f39e0[_0x88cc('0x128')]][_0x88cc('0xd4')],'ListId':this[_0x88cc('0x28')][_0x1f39e0['actionid']][_0x88cc('0xd5')],'VoiceQueueId':this[_0x88cc('0x28')][_0x1f39e0[_0x88cc('0x128')]][_0x88cc('0xd7')]||undefined,'CampaignId':this[_0x88cc('0x28')][_0x1f39e0[_0x88cc('0x128')]][_0x88cc('0xd8')]||undefined})[_0x88cc('0xc0')](loggerCatch(_0x88cc('0x134')));delete this[_0x88cc('0x28')][_0x1f39e0[_0x88cc('0x128')]];unlockQueueStatus(_0x139557);}}else if((strategy[this[_0x88cc('0x23')][this[_0x88cc('0x28')][_0x1f39e0[_0x88cc('0x128')]][_0x88cc('0xbc')]][_0x88cc('0x129')]]||_0x88cc('0x1c'))===_0x88cc('0x1c')){var _0x2df98e;if(this[_0x88cc('0x28')][_0x1f39e0['actionid']]&&!_['isEmpty'](this[_0x88cc('0x2e')][this[_0x88cc('0x28')][_0x1f39e0['actionid']][_0x88cc('0xbc')]])){if(this[_0x88cc('0x2f')][_0xc798b4['actions'][_0x1f39e0['actionid']][_0x88cc('0xbc')]]){this[_0x88cc('0x2f')][_0xc798b4[_0x88cc('0x28')][_0x1f39e0[_0x88cc('0x128')]][_0x88cc('0xbc')]]=this[_0x88cc('0x2f')][this[_0x88cc('0x28')][_0x1f39e0[_0x88cc('0x128')]][_0x88cc('0xbc')]]?this[_0x88cc('0x2f')][this[_0x88cc('0x28')][_0x1f39e0['actionid']]['queue']]:this[_0x88cc('0x2e')][this[_0x88cc('0x28')][_0x1f39e0['actionid']]['queue']]?this[_0x88cc('0x2e')][this['actions'][_0x1f39e0[_0x88cc('0x128')]][_0x88cc('0xbc')]][_0x88cc('0x135')]||0x0:0x0;}this[_0x88cc('0x2e')][this[_0x88cc('0x28')][_0x1f39e0[_0x88cc('0x128')]]['queue']][_0x88cc('0x135')]=this[_0x88cc('0x2f')][this[_0x88cc('0x28')][_0x1f39e0[_0x88cc('0x128')]]['queue']];for(var _0x4ca720=0x0;_0x4ca720<this[_0x88cc('0x2e')][this[_0x88cc('0x28')][_0x1f39e0['actionid']][_0x88cc('0xbc')]][_0x88cc('0xa1')];_0x4ca720+=0x1){_0x2df98e=rr(this['queueBooked'][this[_0x88cc('0x28')][_0x1f39e0[_0x88cc('0x128')]][_0x88cc('0xbc')]]);this[_0x88cc('0x2f')][_0xc798b4[_0x88cc('0x28')][_0x1f39e0[_0x88cc('0x128')]][_0x88cc('0xbc')]]=this[_0x88cc('0x2e')][this[_0x88cc('0x28')][_0x1f39e0[_0x88cc('0x128')]][_0x88cc('0xbc')]][_0x88cc('0x135')];if(_0x2df98e[_0x88cc('0xb8')]==='1'&&_0x2df98e[_0x88cc('0x12b')]==='0'){break;}}if(!_[_0x88cc('0xb6')](_0x2df98e)){this[_0x88cc('0x25')][_0x2df98e[_0x88cc('0x12c')]][_0x88cc('0x136')]=_[_0x88cc('0x43')](this['agents'][_0x2df98e[_0x88cc('0x12c')]][_0x88cc('0x136')])?!![]:this[_0x88cc('0x25')][_0x2df98e[_0x88cc('0x12c')]][_0x88cc('0x136')];}loggerBooked['info'](_0x88cc('0x137'),_0x1f39e0['actionid'],'Agent:\x20',JSON['stringify'](_['pick'](this[_0x88cc('0x25')][_0x2df98e['stateinterface']],[_0x88cc('0x45'),_0x88cc('0x136')])),_0x88cc('0x138'),JSON[_0x88cc('0x51')](_0x2df98e[_0x88cc('0x12f')]));if(!_[_0x88cc('0xb6')](_0x2df98e)&&_0x2df98e[_0x88cc('0xb8')]==='1'&&_0x2df98e['paused']==='0'&&this[_0x88cc('0x25')][_0x2df98e['stateinterface']][_0x88cc('0x136')]){this[_0x88cc('0x25')][_0x2df98e['stateinterface']][_0x88cc('0x136')]=![];this[_0x88cc('0x2e')][_0xc798b4[_0x88cc('0x28')][_0x1f39e0[_0x88cc('0x128')]][_0x88cc('0xbc')]]=[];this[_0x88cc('0x9a')][_0x88cc('0x139')](_0x2df98e[_0x88cc('0x12f')],_0x2df98e[_0x88cc('0x12c')])['catch'](function(_0x1fee5){logger['error'](_0x88cc('0x13a'),util[_0x88cc('0x9f')](_0x1fee5,{'showHidden':![],'depth':null}));})[_0x88cc('0x21')](function(){_0xc798b4[_0x88cc('0xbb')](_0xc798b4[_0x88cc('0x23')][_0xc798b4['actions'][_0x1f39e0['actionid']][_0x88cc('0xbc')]]);setTimeout(function(){_0xc798b4[_0x88cc('0x25')][_0x2df98e[_0x88cc('0x12c')]]['unlockRR']=!![];loggerBooked['info'](_0x88cc('0x13b'),_0x1f39e0[_0x88cc('0x128')],_0x88cc('0x13c'),JSON[_0x88cc('0x51')](_[_0x88cc('0x12e')](_0xc798b4[_0x88cc('0x25')][_0x2df98e['stateinterface']],[_0x88cc('0x45'),_0x88cc('0x136')])),_0x88cc('0x138'),JSON['stringify'](_0x2df98e[_0x88cc('0x12f')]));},0xc7);delete _0xc798b4[_0x88cc('0x28')][_0x1f39e0[_0x88cc('0x128')]];unlockQueueStatus(_0x139557,_0x1f39e0[_0x88cc('0x128')]);});}else{loggerBooked[_0x88cc('0x83')](_0x88cc('0x13d'));this[_0x88cc('0xbb')](this[_0x88cc('0x23')][this[_0x88cc('0x28')][_0x1f39e0[_0x88cc('0x128')]][_0x88cc('0xbc')]]);this[_0x88cc('0xc7')]({'active':![],'ContactId':this[_0x88cc('0x28')][_0x1f39e0[_0x88cc('0x128')]][_0x88cc('0xd4')],'ListId':this['actions'][_0x1f39e0[_0x88cc('0x128')]][_0x88cc('0xd5')],'VoiceQueueId':this['actions'][_0x1f39e0[_0x88cc('0x128')]][_0x88cc('0xd7')]||undefined,'CampaignId':this[_0x88cc('0x28')][_0x1f39e0[_0x88cc('0x128')]][_0x88cc('0xd8')]||undefined})[_0x88cc('0xc0')](loggerCatch(_0x88cc('0x134')));delete this['actions'][_0x1f39e0[_0x88cc('0x128')]];unlockQueueStatus(_0x139557);}}else{loggerBooked[_0x88cc('0x83')]('[booked][unlock2]');this[_0x88cc('0xbb')](this[_0x88cc('0x23')][this[_0x88cc('0x28')][_0x1f39e0[_0x88cc('0x128')]][_0x88cc('0xbc')]]);this[_0x88cc('0xc7')]({'active':![],'ContactId':this[_0x88cc('0x28')][_0x1f39e0[_0x88cc('0x128')]]['ContactId'],'ListId':this['actions'][_0x1f39e0[_0x88cc('0x128')]]['ListId'],'VoiceQueueId':this[_0x88cc('0x28')][_0x1f39e0[_0x88cc('0x128')]][_0x88cc('0xd7')]||undefined,'CampaignId':this[_0x88cc('0x28')][_0x1f39e0[_0x88cc('0x128')]]['CampaignId']||undefined})[_0x88cc('0xc0')](loggerCatch(_0x88cc('0x13e')));delete this[_0x88cc('0x28')][_0x1f39e0[_0x88cc('0x128')]];unlockQueueStatus(_0x139557);}}else{loggerBooked[_0x88cc('0x83')](_0x88cc('0x13f'));this[_0x88cc('0xbb')](this[_0x88cc('0x23')][this[_0x88cc('0x28')][_0x1f39e0[_0x88cc('0x128')]][_0x88cc('0xbc')]]);this[_0x88cc('0xc7')]({'active':![],'ContactId':this[_0x88cc('0x28')][_0x1f39e0[_0x88cc('0x128')]][_0x88cc('0xd4')],'ListId':this[_0x88cc('0x28')][_0x1f39e0['actionid']][_0x88cc('0xd5')],'VoiceQueueId':this[_0x88cc('0x28')][_0x1f39e0['actionid']][_0x88cc('0xd7')]||undefined,'CampaignId':this[_0x88cc('0x28')][_0x1f39e0[_0x88cc('0x128')]]['CampaignId']||undefined})[_0x88cc('0xc0')](loggerCatch(_0x88cc('0x140')));delete this[_0x88cc('0x28')][_0x1f39e0[_0x88cc('0x128')]];unlockQueueStatus(_0x139557);}};Dialer[_0x88cc('0x1e')][_0x88cc('0x41')]=function(){var _0x32d301=this;setInterval(function(){_0x32d301[_0x88cc('0x141')]();},0x3e8);};Dialer[_0x88cc('0x1e')]['checkIsTrunkReachable']=function(_0x3bdfd7){var _0x3b17e8=this;return function(){if(!_0x3b17e8['isTrunkReachable'](_0x3bdfd7['Trunk'])){if(!_0x3b17e8[_0x88cc('0xdd')](_0x3bdfd7[_0x88cc('0x142')])){_0x3bdfd7[_0x88cc('0x47')]=_0x88cc('0x143');throw _0x3bdfd7['name']+_0x88cc('0x144');}}};};Dialer['prototype'][_0x88cc('0x145')]=function(_0x1bb6c2,_0x3e2411,_0x499310,_0x313362){var _0x26686b=this;return function(){var _0x117f5d=!![];return _0x26686b[_0x88cc('0x146')](_0x1bb6c2,_0x3e2411,_0x499310,_0x313362,_0x117f5d);};};Dialer[_0x88cc('0x1e')][_0x88cc('0x147')]=function(_0xdb9b90,_0x45a6ac,_0x37f103,_0x5f258b){var _0x29c4da=this;return function(){var _0x257a3d=![];return _0x29c4da['ifTime'](_0xdb9b90[_0x88cc('0x4d')],_0x45a6ac,_0x37f103,_0x5f258b,_0x257a3d);};};Dialer['prototype'][_0x88cc('0x146')]=function(_0x2bcfcb,_0x99bcc4,_0x3d72ff,_0x294d5f,_0x1f200c){var _0x567d84=[];return new BPromise(function(_0x705ab1,_0x5aca6e){if(!isNotNull(_0x2bcfcb)){_0x294d5f['message']=_0x88cc('0x4b');return _0x5aca6e(msgResponse(_0x88cc('0x146'),'Failure',_0x3d72ff+_0x88cc('0x148')));}if(_[_0x88cc('0x4e')](_0x2bcfcb)){_0x294d5f[_0x88cc('0x47')]=_0x88cc('0x149');return _0x5aca6e(msgResponse(_0x88cc('0x146'),_0x88cc('0x14a'),_0x3d72ff+_0x88cc('0x14b')));}if(_0x99bcc4&&_[_0x88cc('0x43')](config[_0x88cc('0x14c')][_0x99bcc4])){_0x294d5f['message']=_0x88cc('0x14d');return _0x5aca6e(msgResponse(_0x88cc('0x146'),_0x88cc('0x14a'),_0x3d72ff+_0x88cc('0x14e')+_0x99bcc4));}if(_[_0x88cc('0x14f')](_0x2bcfcb)){for(var _0x45259d=0x0;_0x45259d<_0x2bcfcb['length'];_0x45259d+=0x1){_0x567d84['push'](ami[_0x88cc('0xb7')]({'action':_0x88cc('0x150'),'command':util[_0x88cc('0x7d')](_0x88cc('0x151'),_0x2bcfcb[_0x45259d][_0x88cc('0x152')],!_[_0x88cc('0x43')](config[_0x88cc('0x14c')][_0x99bcc4])?_0x99bcc4:'')})[_0x88cc('0xc3')](function(_0xd610cf){return _0xd610cf['content'][_0x88cc('0x153')](_0x88cc('0x154'))>=0x0;})[_0x88cc('0xc0')](myreject(_0x5aca6e)));}}else{_0x567d84['push'](ami[_0x88cc('0xb7')]({'action':'command','command':util[_0x88cc('0x7d')](_0x88cc('0x151'),_0x2bcfcb,!_[_0x88cc('0x43')](config['timezones'][_0x99bcc4])?_0x99bcc4:'')})[_0x88cc('0xc3')](function(_0x35d3d6){return _0x35d3d6[_0x88cc('0x155')][_0x88cc('0x153')]('true')>=0x0;})['catch'](myreject(_0x5aca6e)));}BPromise[_0x88cc('0x156')](_0x567d84)['then'](function(_0x34328d){var _0x25f598=_['some'](_0x34328d);if(_0x25f598){return _0x705ab1(_0x25f598);}else{_0x294d5f['message']=_0x1f200c?'GLOBAL_INTERVAL_IS_OVERTIME':_0x88cc('0x157');return _0x5aca6e(msgResponse(_0x88cc('0x158'),_0x88cc('0x14a'),_0x88cc('0x159')+_0x1f200c+'\x20'+_0x3d72ff+_0x88cc('0x15a')+util[_0x88cc('0x9f')](_0x2bcfcb,{'showHidden':![],'depth':null})+'Timezone:\x20'+_0x99bcc4));}})['catch'](function(_0x2bae38){return _0x5aca6e(msgResponse('ifTime',_0x88cc('0x14a'),JSON[_0x88cc('0x51')](_0x2bae38)));});});};Dialer[_0x88cc('0x1e')][_0x88cc('0x15b')]=function(_0x58e6e4){var _0x4c8991=this;return function(){switch(_0x58e6e4[_0x88cc('0x61')]){case'progressive':freeVariablesPredictive(_0x58e6e4);_0x4c8991[_0x88cc('0x15c')](_0x58e6e4,0x1);break;case'power':freeVariablesPredictive(_0x58e6e4);_0x4c8991[_0x88cc('0x15c')](_0x58e6e4,_0x58e6e4[_0x88cc('0x15d')]);break;case _0x88cc('0x15e'):_0x4c8991[_0x88cc('0x15e')](_0x58e6e4);break;case'booked':freeVariablesPredictive(_0x58e6e4);_0x4c8991[_0x88cc('0x15c')](_0x58e6e4,0x1);break;default:freeVariablesPredictive(_0x58e6e4);logger['error'](_0x88cc('0x15f'),_0x58e6e4[_0x88cc('0x45')],'method\x20not\x20recognized');}};};Dialer[_0x88cc('0x1e')][_0x88cc('0x160')]=function(_0x2a8fba){var _0x19e9d8=this;return function(){_0x19e9d8[_0x88cc('0x161')](_0x2a8fba);};};Dialer[_0x88cc('0x1e')][_0x88cc('0xd')]=function(_0x16a388){var _0x17fc1b=this;if(isNotPreview(_0x16a388[_0x88cc('0x61')])){if(isVoiceQueueOutbound(_0x16a388[_0x88cc('0x5b')])&&isActive(_0x16a388['dialActive'])){_0x16a388['sendMessageOneNotActive']=!![];BPromise['resolve']()[_0x88cc('0xc3')](checkIsLoggedIn(_0x16a388,_0x16a388[_0x88cc('0x56')]))['then'](checkIsActive(_0x16a388,_0x16a388['dialActive']))['then'](checkInterval(_0x16a388))[_0x88cc('0xc3')](_0x17fc1b[_0x88cc('0x162')](_0x16a388))[_0x88cc('0xc3')](_0x17fc1b['checkIfTime'](_0x16a388[_0x88cc('0x163')],_0x16a388[_0x88cc('0x164')],_0x16a388[_0x88cc('0x45')],_0x16a388))[_0x88cc('0xc3')](_0x17fc1b['checkIfTimeIntervals'](_0x16a388['Interval'],_0x16a388[_0x88cc('0x164')],_0x16a388[_0x88cc('0x45')],_0x16a388))[_0x88cc('0xc3')](_0x17fc1b[_0x88cc('0x15b')](_0x16a388))[_0x88cc('0xc0')](loggerCatchQueueSummary('[syncQueueSummary]',_0x16a388));}else{notSendMessagesQueue(_0x16a388);}}else{freeVariablesPredictive(_0x16a388);}};Dialer['prototype']['syncCampaigns']=function(){var _0x30f7f9=this;var _0x12b36c;for(var _0x5d017a in this[_0x88cc('0x24')]){if(typeof this['campaigns'][_0x5d017a]!=='undefined'){_0x12b36c=this[_0x88cc('0x24')][_0x5d017a];if(isCampaignIvr(_0x12b36c[_0x88cc('0x5b')])&&isActive(_0x12b36c[_0x88cc('0x7c')])){_0x12b36c[_0x88cc('0xa9')]=!![];BPromise[_0x88cc('0xbe')]()[_0x88cc('0xc3')](checkIsActive(_0x12b36c,_0x12b36c[_0x88cc('0x7c')]))[_0x88cc('0xc3')](checkInterval(_0x12b36c))['then'](_0x30f7f9[_0x88cc('0x162')](_0x12b36c))[_0x88cc('0xc3')](_0x30f7f9['checkIfTime'](_0x12b36c[_0x88cc('0x163')],_0x12b36c[_0x88cc('0x164')],_0x12b36c[_0x88cc('0x45')],_0x12b36c))['then'](_0x30f7f9[_0x88cc('0x147')](_0x12b36c[_0x88cc('0x4a')],_0x12b36c[_0x88cc('0x164')],_0x12b36c['name'],_0x12b36c))['then'](_0x30f7f9[_0x88cc('0x160')](_0x12b36c))[_0x88cc('0xc0')](loggerCatchQueueSummary(_0x88cc('0x165'),_0x12b36c));}else{notSendMessagesCampaign(_0x12b36c);}}}};function getCallerIdRandom(_0x4f1a05,_0x4320e0){var _0xb06e38;var _0x3576e4;var _0x4c3993;if(_0x4320e0<=0x0){_0x4320e0=0x1;}_0xb06e38=new RegExp(_0x88cc('0x166')+_0x4320e0+'}$');_0x3576e4=Math[_0x88cc('0x167')](0xa,_0x4320e0-0x1);_0x4c3993=Math[_0x88cc('0x167')](0xa,_0x4320e0)-0x1;return util[_0x88cc('0x7d')]('%s',_[_0x88cc('0x168')](_0x4f1a05,_0xb06e38,_[_0x88cc('0x169')](_0x3576e4,_0x4c3993)));}function extractCalleridName(_0x80f4dd){var _0x2fb794=_0x80f4dd[_0x88cc('0x16a')](/"(.*?)"/);return _0x2fb794?_0x2fb794[0x1]:_0x80f4dd;}function extractCalleridNumber(_0x2c9ed9){var _0x4c67ad=_0x2c9ed9[_0x88cc('0x16a')](/<(.*?)>/);return _0x4c67ad?_0x4c67ad[0x1]:_0x2c9ed9;}Dialer[_0x88cc('0x1e')][_0x88cc('0x16b')]=function(_0x48d3df,_0x156e70){var _0xb73be6=this;var _0x531b13=uuid['v4']();this['actions'][_0x531b13]=new Action(_0x48d3df,_0x156e70,_0x531b13);return new BPromise(function(_0x205db3,_0x26061b){if(_[_0x88cc('0x43')](_0x48d3df)&&typeof _0x48d3df!==_0x88cc('0x16c')){return _0x26061b(msgResponse(_0x88cc('0x16d'),'Failure',_0x88cc('0x16e')));}if(_['isUndefined'](_0x156e70[_0x88cc('0x16f')][_0x88cc('0x170')])||_0x156e70[_0x88cc('0x16f')][_0x88cc('0x170')]===null){return _0x26061b(msgResponse(_0x88cc('0x16d'),'Failure','contact\x20is\x20undefine'));}var _0x1aa65e={'XMD-CALLERID':_0xb73be6[_0x88cc('0x28')][_0x531b13][_0x88cc('0x171')](),'XMD-AGI':_0x48d3df[_0x88cc('0x107')]?util[_0x88cc('0x7d')](_0x88cc('0x172'),ipAgi,_0x48d3df[_0x88cc('0x107')]):_0x88cc('0x173'),'XMD-AGIAFTER':_0x48d3df[_0x88cc('0x11a')]?util[_0x88cc('0x7d')]('\x22agi://%s/square,%s\x22',ipAgi,_0x48d3df[_0x88cc('0x11a')]):'NONE','XMD-QUEUE':_0x48d3df[_0x88cc('0x5b')]===_0x88cc('0x54')?util[_0x88cc('0x7d')]('\x22%s,%s%s,,,%s\x22',_0x48d3df[_0x88cc('0x45')],_0x48d3df[_0x88cc('0x174')]||'',_0x48d3df[_0x88cc('0x10f')]?'c':'',_0x48d3df[_0x88cc('0x116')]||0x3):'NONE','XMD-CONTACTID':_0x156e70[_0x88cc('0xd4')],'XMD-CDRTYPE':_0x88cc('0xa'),'CALLERID(all)':_0xb73be6[_0x88cc('0x28')][_0x531b13][_0x88cc('0x171')](),'XMD-AMD':_0x48d3df[_0x88cc('0xe2')]?_0x88cc('0x175'):_0x88cc('0x173'),'XMD-DESTINATION':_0x88cc('0x176')};if(_0x48d3df[_0x88cc('0xe2')]){_0x1aa65e[_0x88cc('0x177')]=_0x48d3df[_0x88cc('0x178')]||0x9c4;_0x1aa65e[_0x88cc('0x179')]=_0x48d3df[_0x88cc('0x17a')]||0x5dc;_0x1aa65e[_0x88cc('0x17b')]=_0x48d3df[_0x88cc('0x17c')]||0x320;_0x1aa65e[_0x88cc('0x17d')]=_0x48d3df[_0x88cc('0x17e')]||0x1388;_0x1aa65e[_0x88cc('0x17f')]=_0x48d3df[_0x88cc('0x180')]||0x64;_0x1aa65e['XMD-AMDBETWEENWORDSSILENCE']=_0x48d3df[_0x88cc('0x181')]||0x32;_0x1aa65e['XMD-AMDMAXIMUMNUMBEROFWORDS']=_0x48d3df[_0x88cc('0x182')]||0x3;_0x1aa65e[_0x88cc('0x183')]=_0x48d3df[_0x88cc('0x184')]||0x100;_0x1aa65e[_0x88cc('0x185')]=_0x48d3df['dialAMDMaximumWordLength']||0x1388;}if(_0x48d3df[_0x88cc('0x5b')]==='outbound'){_0x1aa65e['XMD-VOICEQUEUEID']=_0x156e70[_0x88cc('0xd7')];}else{_0x1aa65e['XMD-CAMPAIGNID']=_0x156e70[_0x88cc('0xd8')];}for(var _0xce2546 in _0x156e70['Contact']){if(typeof _0x156e70['Contact'][_0xce2546]!==_0x88cc('0xa2')){if(isNotNull(_0x156e70[_0x88cc('0x16f')][_0xce2546])&&_0xce2546!=='id'&&_0xce2546!==_0x88cc('0x186')&&_0xce2546!=='createdAt'&&_0xce2546!=='updatedAt'){_0x1aa65e[util['format'](_0x88cc('0x187'),_0x88cc('0x188'),_[_0x88cc('0x189')](_0xce2546))]=_0x156e70[_0x88cc('0x16f')][_0xce2546];}}}var _0x2014f7=_0xb73be6[_0x88cc('0xdd')](_0x48d3df[_0x88cc('0x7b')])?getCallerId(_0x48d3df['Trunk'][_0x88cc('0x18a')],_0x48d3df[_0x88cc('0x62')],_0x48d3df['dialRandomLastDigitCallerIdNumber']>0x0?getCallerIdRandom(_0x48d3df[_0x88cc('0x63')],_0x48d3df[_0x88cc('0x18b')]):_0x48d3df[_0x88cc('0x63')]):getCallerId(_[_0x88cc('0xb6')](_0x48d3df[_0x88cc('0x142')])?_0x48d3df['Trunk'][_0x88cc('0x18a')]:_0x48d3df[_0x88cc('0x142')][_0x88cc('0x18a')],_0x48d3df[_0x88cc('0x62')],_0x48d3df[_0x88cc('0x18b')]>0x0?getCallerIdRandom(_0x48d3df[_0x88cc('0x63')],_0x48d3df[_0x88cc('0x18b')]):_0x48d3df[_0x88cc('0x63')]);if(_0x2014f7){_0x1aa65e[_0x88cc('0x18c')]=_0xb73be6[_0x88cc('0x28')][_0x531b13][_0x88cc('0x18d')]=extractCalleridName(_0x2014f7);_0x1aa65e[_0x88cc('0x18e')]=_0xb73be6[_0x88cc('0x28')][_0x531b13]['originatecalleridnum']=extractCalleridNumber(_0x2014f7);}return ami[_0x88cc('0xb7')]({'actionid':_0x531b13,'action':_0x88cc('0x16d'),'channel':_0xb73be6[_0x88cc('0xdd')](_0x48d3df['Trunk'])?util['format'](_0x88cc('0x18f'),_0x48d3df[_0x88cc('0x7b')][_0x88cc('0x45')],isNotNull(_0x48d3df[_0x88cc('0x64')])?_0x48d3df['dialPrefix'][_0x88cc('0x190')]()||'':'',_0x48d3df[_0x88cc('0x191')]>0x0?_0x156e70[_0x88cc('0x16f')][_0x88cc('0x170')]['substring'](_0x48d3df[_0x88cc('0x191')]):_0x156e70[_0x88cc('0x16f')][_0x88cc('0x170')]):util[_0x88cc('0x7d')](_0x88cc('0x18f'),_['isNil'](_0x48d3df[_0x88cc('0x142')])?_0x48d3df[_0x88cc('0x7b')][_0x88cc('0x45')]:_0x48d3df['TrunkBackup'][_0x88cc('0x45')],isNotNull(_0x48d3df[_0x88cc('0x64')])?_0x48d3df[_0x88cc('0x64')]['trim']()||'':'',_0x48d3df['dialCutDigit']>0x0?_0x156e70[_0x88cc('0x16f')]['phone'][_0x88cc('0x192')](_0x48d3df[_0x88cc('0x191')]):_0x156e70[_0x88cc('0x16f')]['phone']),'callerid':_0x2014f7,'Exten':'xcally-motion-dialer','Context':_0x88cc('0x193'),'Priority':'1','variable':_0x1aa65e,'timeout':(_0x48d3df[_0x88cc('0x194')]||0x1e)*0x3e8,'async':!![],'channelid':_0x531b13})['then'](function(_0x25e4e5){return _0x205db3(_0x25e4e5);})['catch'](function(_0x1fe8c9){_0x48d3df[_0x88cc('0x6d')]+=0x1;var _0x2626ba=new History(_0xb73be6['actions'][_0x531b13]);logger['error'](util[_0x88cc('0x7d')](_0x88cc('0x195'),JSON['stringify'](_0x1fe8c9)));_0x2626ba[_0x88cc('0xaf')]=0xe;_0x2626ba[_0x88cc('0xb0')]=_0x88cc('0x196');_0x2626ba[_0x88cc('0xb2')]=moment()[_0x88cc('0x7d')](_0x88cc('0xfd'));_0x2626ba[_0x88cc('0xb1')]=_0x2626ba['starttime'];_0xb73be6['createHistory'](_0x2626ba)[_0x88cc('0xc0')](loggerCatch('[originate][error]'));_0xb73be6[_0x88cc('0xd0')](_0x2626ba)[_0x88cc('0xc0')](loggerCatch(_0x88cc('0x197')))[_0x88cc('0x21')](function(){delete _0xb73be6[_0x88cc('0x28')][_0x531b13];return _0x26061b(msgResponse(_0x88cc('0x16d'),'Error',_0x88cc('0x198')));});});});};Dialer[_0x88cc('0x1e')][_0x88cc('0x35')]=function(_0x265de8){var _0x4df0ee=this[_0x88cc('0x28')][_0x265de8[_0x88cc('0x128')]];if(_0x4df0ee){delete this[_0x88cc('0x28')][_0x265de8[_0x88cc('0x128')]];_0x4df0ee[_0x88cc('0x115')]=moment()[_0x88cc('0x7d')]('YYYY-MM-DD\x20HH:mm:ss');var _0x3aa998=_0x4df0ee[_0x88cc('0x5b')]===_0x88cc('0x80')?this[_0x88cc('0x24')][_0x4df0ee['queue']]:this['voiceQueues'][_0x4df0ee[_0x88cc('0x199')]()];if(!this['isSuccess'](_0x265de8['response'])){this[_0x88cc('0xbb')](_0x3aa998);return this[_0x88cc('0x19a')](_0x4df0ee,_0x3aa998,_0x265de8)[_0x88cc('0xc0')](loggerCatch('[callProgressDetecting]\x20'));}this[_0x88cc('0xb4')][_0x265de8[_0x88cc('0xfe')]]=_0x4df0ee;}};Dialer[_0x88cc('0x1e')]['checkRetriveMax']=function(_0x19366d,_0xdbae42,_0x57d712){var _0x43dd5=new History(_0xdbae42);if(_0x43dd5[_0x88cc('0xef')]+_0x43dd5['countcongestionretry']+_0x43dd5[_0x88cc('0xf0')]+_0x43dd5[_0x88cc('0xf1')]+_0x43dd5[_0x88cc('0xf2')]+_0x43dd5[_0x88cc('0x103')]+_0x43dd5[_0x88cc('0xec')]+_0x43dd5[_0x88cc('0xf3')]>=_0x57d712[_0x88cc('0xf4')]-0x1){return!![];}switch(_0x19366d){case 0x3:if(_0x43dd5[_0x88cc('0xf0')]>=_0x57d712['dialNoAnswerMaxRetry']-0x1){return!![];}this[_0x88cc('0xc7')]({'active':![],'countnoanswerretry':_0x43dd5[_0x88cc('0xf0')]+=0x1,'scheduledat':moment()[_0x88cc('0xfa')](_0x57d712[_0x88cc('0x19b')],_0x88cc('0xfc'))['format']('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x43dd5[_0x88cc('0xd4')],'ListId':_0x43dd5['ListId'],'VoiceQueueId':_0x43dd5['VoiceQueueId']||undefined,'CampaignId':_0x43dd5['CampaignId']||undefined})['catch'](loggerCatch('[rescheduleContact][NoAnswer]'));break;case 0x5:if(_0x43dd5[_0x88cc('0xef')]>=_0x57d712[_0x88cc('0x19c')]-0x1){return!![];}this[_0x88cc('0xc7')]({'active':![],'countbusyretry':_0x43dd5[_0x88cc('0xef')]+=0x1,'scheduledat':moment()[_0x88cc('0xfa')](_0x57d712[_0x88cc('0x19d')],_0x88cc('0xfc'))[_0x88cc('0x7d')](_0x88cc('0xfd')),'ContactId':_0x43dd5[_0x88cc('0xd4')],'ListId':_0x43dd5[_0x88cc('0xd5')],'VoiceQueueId':_0x43dd5[_0x88cc('0xd7')]||undefined,'CampaignId':_0x43dd5['CampaignId']||undefined})['catch'](loggerCatch(_0x88cc('0x19e')));break;case 0x8:if(_0x43dd5[_0x88cc('0x102')]>=_0x57d712[_0x88cc('0x19f')]-0x1){return!![];}this['rescheduleContact']({'active':![],'countcongestionretry':_0x43dd5['countcongestionretry']+=0x1,'scheduledat':moment()[_0x88cc('0xfa')](_0x57d712[_0x88cc('0x1a0')],_0x88cc('0xfc'))[_0x88cc('0x7d')](_0x88cc('0xfd')),'ContactId':_0x43dd5[_0x88cc('0xd4')],'ListId':_0x43dd5[_0x88cc('0xd5')],'VoiceQueueId':_0x43dd5[_0x88cc('0xd7')]||undefined,'CampaignId':_0x43dd5[_0x88cc('0xd8')]||undefined})[_0x88cc('0xc0')](loggerCatch(_0x88cc('0x1a1')));break;case 0x0:if(_0x43dd5[_0x88cc('0xf1')]>=_0x57d712['dialNoSuchNumberMaxRetry']-0x1){return!![];}else{this['rescheduleContact']({'active':![],'countnosuchnumberretry':_0x43dd5[_0x88cc('0xf1')]+=0x1,'scheduledat':moment()[_0x88cc('0xfa')](_0x57d712[_0x88cc('0x1a2')],_0x88cc('0xfc'))[_0x88cc('0x7d')](_0x88cc('0xfd')),'ContactId':_0x43dd5[_0x88cc('0xd4')],'ListId':_0x43dd5['ListId'],'VoiceQueueId':_0x43dd5[_0x88cc('0xd7')]||undefined,'CampaignId':_0x43dd5[_0x88cc('0xd8')]||undefined})['catch'](loggerCatch(_0x88cc('0x1a3')));}break;case 0xa:if(_0x43dd5[_0x88cc('0xf2')]>=_0x57d712[_0x88cc('0x11c')]-0x1){return!![];}this[_0x88cc('0xc7')]({'active':![],'countdropretry':_0x43dd5[_0x88cc('0xf2')]+=0x1,'scheduledat':moment()[_0x88cc('0xfa')](_0x57d712[_0x88cc('0x1a4')],'minutes')['format'](_0x88cc('0xfd')),'ContactId':_0x43dd5[_0x88cc('0xd4')],'ListId':_0x43dd5[_0x88cc('0xd5')],'VoiceQueueId':_0x43dd5[_0x88cc('0xd7')]||undefined,'CampaignId':_0x43dd5[_0x88cc('0xd8')]||undefined})[_0x88cc('0xc0')](loggerCatch(_0x88cc('0x11d')));break;case 0xb:if(_0x43dd5['countabandonedretry']>=_0x57d712[_0x88cc('0x125')]-0x1){return!![];}this[_0x88cc('0xc7')]({'active':![],'countabandonedretry':_0x43dd5[_0x88cc('0x103')]+=0x1,'scheduledat':moment()['add'](_0x57d712[_0x88cc('0x1a5')],'minutes')[_0x88cc('0x7d')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x43dd5['ContactId'],'ListId':_0x43dd5[_0x88cc('0xd5')],'VoiceQueueId':_0x43dd5[_0x88cc('0xd7')]||undefined,'CampaignId':_0x43dd5['CampaignId']||undefined})[_0x88cc('0xc0')](loggerCatch(_0x88cc('0x126')));break;case 0x13:if(_0x43dd5['countmachineretry']>=_0x57d712[_0x88cc('0xf7')]-0x1){return!![];}this[_0x88cc('0xc7')]({'active':![],'countmachineretry':_0x43dd5['countmachineretry']+=0x1,'scheduledat':moment()[_0x88cc('0xfa')](_0x57d712[_0x88cc('0xfb')],_0x88cc('0xfc'))[_0x88cc('0x7d')](_0x88cc('0xfd')),'ContactId':_0x43dd5[_0x88cc('0xd4')],'ListId':_0x43dd5['ListId'],'VoiceQueueId':_0x43dd5[_0x88cc('0xd7')]||undefined,'CampaignId':_0x43dd5[_0x88cc('0xd8')]||undefined})[_0x88cc('0xc0')](loggerCatch(_0x88cc('0x104')));break;case 0x14:if(_0x43dd5[_0x88cc('0xf3')]>=_0x57d712[_0x88cc('0x1a6')]-0x1){return!![];}this[_0x88cc('0xc7')]({'active':![],'countagentrejectretry':_0x43dd5['countagentrejectretry']+=0x1,'scheduledat':moment()[_0x88cc('0xfa')](_0x57d712[_0x88cc('0x1a7')],'minutes')['format'](_0x88cc('0xfd')),'ContactId':_0x43dd5[_0x88cc('0xd4')],'ListId':_0x43dd5[_0x88cc('0xd5')],'VoiceQueueId':_0x43dd5[_0x88cc('0xd7')]||undefined,'CampaignId':_0x43dd5[_0x88cc('0xd8')]||undefined})[_0x88cc('0xc0')](loggerCatch(_0x88cc('0x1a8')));break;default:return!![];}};Dialer[_0x88cc('0x1e')][_0x88cc('0x19a')]=function(_0x31680d,_0x23212a,_0x4a2670){var _0x210923=this;var _0x34c4d3=new History(_0x31680d);return new BPromise(function(_0x322535,_0x5f3129){if(_[_0x88cc('0x43')](_0x23212a)&&typeof _0x23212a!==_0x88cc('0x16c')){return _0x5f3129(msgResponse(_0x88cc('0x1a9'),_0x88cc('0x14a'),_0x88cc('0x1aa')));}if(_[_0x88cc('0x43')](_0x4a2670)&&typeof _0x4a2670!==_0x88cc('0x16c')){return _0x5f3129(msgResponse(_0x88cc('0x1a9'),'Failure',_0x88cc('0x1ab')));}switch(_0x4a2670[_0x88cc('0x10c')]){case'0':_0x23212a[_0x88cc('0x6c')]+=0x1;_0x34c4d3['state']=0x0;_0x34c4d3[_0x88cc('0xb0')]=_0x88cc('0x1ac');_0x34c4d3[_0x88cc('0xf1')]+=0x1;_0x34c4d3[_0x88cc('0x11b')]+=0x1;ami[_0x88cc('0x53')]('custom:agentnosuchnumber',ut[_0x88cc('0xed')](_0x31680d,_0x88cc('0x1ad')));_0x210923['createHistory'](_0x34c4d3)['catch'](loggerCatch(_0x88cc('0xee')));if(_0x210923[_0x88cc('0x1ae')](0x0,_0x31680d,_0x23212a)){if(_0x34c4d3[_0x88cc('0xf1')]>=_0x23212a[_0x88cc('0x1af')]){_0x210923[_0x88cc('0xf8')](_0x34c4d3,_0x322535,_0x5f3129,_0x88cc('0x1b0'));}else{_0x210923[_0x88cc('0xf5')](_0x34c4d3,_0x322535,_0x5f3129,_0x88cc('0x1b0'));}}break;case'3':_0x23212a[_0x88cc('0x6b')]+=0x1;_0x34c4d3['state']=0x3;_0x34c4d3[_0x88cc('0xb0')]=_0x88cc('0x1b1');_0x34c4d3[_0x88cc('0xf0')]+=0x1;_0x34c4d3['countglobal']+=0x1;ami[_0x88cc('0x53')](_0x88cc('0x1b2'),ut['buildObj'](_0x31680d,_0x88cc('0x1b3')));_0x210923[_0x88cc('0xd1')](_0x34c4d3)[_0x88cc('0xc0')](loggerCatch(_0x88cc('0x1b4')));if(_0x210923['checkRetriveMax'](0x3,_0x31680d,_0x23212a)){if(_0x34c4d3[_0x88cc('0xf0')]>=_0x23212a['dialNoAnswerMaxRetry']){_0x210923[_0x88cc('0xf8')](_0x34c4d3,_0x322535,_0x5f3129,'reason\x203\x20ringing\x20no\x20answer');}else{_0x210923['stateGlobal'](_0x34c4d3,_0x322535,_0x5f3129,'reason\x203\x20ringing\x20no\x20answer');}}break;case'5':_0x23212a[_0x88cc('0x67')]+=0x1;_0x34c4d3[_0x88cc('0xaf')]=0x5;_0x34c4d3[_0x88cc('0xb0')]=_0x88cc('0x1b5');_0x34c4d3[_0x88cc('0xef')]+=0x1;_0x34c4d3[_0x88cc('0x11b')]+=0x1;ami[_0x88cc('0x53')]('custom:agentbusy',ut[_0x88cc('0xed')](_0x31680d,_0x88cc('0x1b6')));_0x210923['createHistory'](_0x34c4d3)['catch'](loggerCatch(_0x88cc('0x1b7')));if(_0x210923['checkRetriveMax'](0x5,_0x31680d,_0x23212a)){if(_0x34c4d3[_0x88cc('0xef')]>=_0x23212a[_0x88cc('0x19c')]){_0x210923['createStateFinal'](_0x34c4d3,_0x322535,_0x5f3129,_0x88cc('0x1b8'));}else{_0x210923[_0x88cc('0xf5')](_0x34c4d3,_0x322535,_0x5f3129,_0x88cc('0x1b8'));}}break;case'8':_0x23212a['outboundCongestionCallsDay']+=0x1;_0x34c4d3['state']=0x8;_0x34c4d3['statedesc']=_0x88cc('0x1b9');_0x34c4d3[_0x88cc('0x102')]+=0x1;_0x34c4d3['countglobal']+=0x1;ami['emit']('custom:agentcongestion',ut[_0x88cc('0xed')](_0x31680d,'congestion'));_0x210923[_0x88cc('0xd1')](_0x34c4d3)[_0x88cc('0xc0')](loggerCatch('[syncAgentComplete][createHistory][8]'));if(_0x210923[_0x88cc('0x1ae')](0x8,_0x31680d,_0x23212a)){if(_0x34c4d3[_0x88cc('0x102')]>=_0x23212a['dialCongestionMaxRetry']){_0x210923[_0x88cc('0xf8')](_0x34c4d3,_0x322535,_0x5f3129,_0x88cc('0x1ba'));}else{_0x210923[_0x88cc('0xf5')](_0x34c4d3,_0x322535,_0x5f3129,_0x88cc('0x1ba'));}}break;case'11':_0x23212a[_0x88cc('0x1bb')]+=0x1;_0x34c4d3[_0x88cc('0xaf')]=0xb;_0x34c4d3['statedesc']=_0x88cc('0x122');_0x34c4d3['countabandonedretry']+=0x1;_0x34c4d3[_0x88cc('0x11b')]+=0x1;_0x210923['createHistory'](_0x34c4d3)[_0x88cc('0xc0')](loggerCatch(_0x88cc('0x127')));if(_0x210923[_0x88cc('0x1ae')](0xb,_0x31680d,_0x23212a)){if(_0x34c4d3['countabandonedretry']>=_0x23212a[_0x88cc('0x125')]){_0x210923[_0x88cc('0xf8')](_0x34c4d3,_0x322535,_0x5f3129,_0x88cc('0x1bc'));}else{_0x210923[_0x88cc('0xf5')](_0x34c4d3,_0x322535,_0x5f3129,_0x88cc('0x1bc'));}}break;case'20':_0x23212a[_0x88cc('0x1bd')]+=0x1;_0x34c4d3[_0x88cc('0xaf')]=0x14;_0x34c4d3[_0x88cc('0xb0')]=_0x88cc('0x1be');_0x34c4d3[_0x88cc('0xf3')]+=0x1;_0x34c4d3['countglobal']+=0x1;ami['emit'](_0x88cc('0x1bf'),ut['buildObj'](_0x31680d,_0x88cc('0x1c0')));_0x210923[_0x88cc('0xd1')](_0x34c4d3)[_0x88cc('0xc0')](loggerCatch(_0x88cc('0x1c1')));if(_0x210923[_0x88cc('0x1ae')](0x14,_0x31680d,_0x23212a)){if(_0x34c4d3['countagentrejectretry']>=_0x23212a[_0x88cc('0x1a6')]){_0x210923[_0x88cc('0xf8')](_0x34c4d3,_0x322535,_0x5f3129,'reason\x2020\x20agentreject');}else{_0x210923['stateGlobal'](_0x34c4d3,_0x322535,_0x5f3129,_0x88cc('0x1c2'));}}break;default:_0x23212a[_0x88cc('0x6f')]+=0x1;_0x34c4d3['state']=0xc;_0x34c4d3[_0x88cc('0xb0')]=_0x4a2670[_0x88cc('0x10c')];_0x210923['createHistory'](_0x34c4d3)[_0x88cc('0xc0')](loggerCatch(_0x88cc('0x1c3')));if(_0x210923[_0x88cc('0x1ae')](_0x4a2670[_0x88cc('0x10c')],_0x31680d,_0x23212a)){if(_0x34c4d3[_0x88cc('0xef')]+_0x34c4d3[_0x88cc('0x102')]+_0x34c4d3[_0x88cc('0xf0')]+_0x34c4d3[_0x88cc('0xf1')]+_0x34c4d3['countdropretry']+_0x34c4d3[_0x88cc('0x103')]+_0x34c4d3[_0x88cc('0xec')]+_0x34c4d3[_0x88cc('0xf3')]>=_0x23212a['dialGlobalMaxRetry']){_0x210923[_0x88cc('0xf5')](_0x34c4d3,_0x322535,_0x5f3129,_0x4a2670[_0x88cc('0x10c')]);}else{_0x210923['createStateFinal'](_0x34c4d3,_0x322535,_0x5f3129,_0x4a2670[_0x88cc('0x10c')]);}}}});};Dialer['prototype'][_0x88cc('0xf5')]=function(_0x5ca1f0,_0x485fcf,_0x105575,_0x21051d){var _0x196f2a=new Final(_0x5ca1f0);_0x196f2a[_0x88cc('0xaf')]=0xf;_0x196f2a['statedesc']=_0x88cc('0x1c4');this[_0x88cc('0xf8')](_0x196f2a,_0x485fcf,_0x105575,_0x21051d);};Dialer[_0x88cc('0x1e')][_0x88cc('0xf8')]=function(_0x5bca7d,_0x56010c,_0x162823,_0x20d609){this['moveContactManagedDialer'](_0x5bca7d)[_0x88cc('0xc3')](function(){return _0x56010c(msgResponse(_0x88cc('0x1a9'),_0x88cc('0xdc'),_0x20d609));})[_0x88cc('0xc0')](function(){return _0x162823(msgResponse(_0x88cc('0x1c5'),_0x88cc('0x14a'),_0x88cc('0x1c6')));});};Dialer[_0x88cc('0x1e')][_0x88cc('0x15e')]=function(_0x3c414d){var _0x2262d9=_0x3c414d[_0x88cc('0x1c7')]/0x64;var _0x460078=_0x3c414d[_0x88cc('0x6a')]/(_0x3c414d[_0x88cc('0x6a')]+_0x3c414d['outboundAnswerCallsDay']);var _0x13627e=Math[_0x88cc('0x1c8')](_0x3c414d[_0x88cc('0x1c9')]*(_0x3c414d[_0x88cc('0x1ca')]/0x64));var _0x431c28=Math['round'](_0x3c414d['predictiveIntervalAvailable']*(_0x3c414d['predictiveIntervalMinThreshold']/0x64));var _0x3135fa=_0x3c414d[_0x88cc('0xaa')]+_0x3c414d[_0x88cc('0x5a')];var _0x3f88bb=Math[_0x88cc('0x1cb')](_0x3c414d[_0x88cc('0x78')]*_0x3c414d[_0x88cc('0x92')]*_0x3c414d[_0x88cc('0x1cc')]*_0x3c414d[_0x88cc('0x75')]);if(_[_0x88cc('0x43')](_0x3c414d['startProgressive'])){if(!_[_0x88cc('0x43')](_0x3c414d[_0x88cc('0x2b')])){_0x3c414d[_0x88cc('0x2b')]=undefined;loggerPredictive['error'](_0x88cc('0x1cd'),_0x88cc('0x1ce'));}if(!_['isUndefined'](_0x3c414d[_0x88cc('0x98')])){loggerPredictive['error']('[startMethodPredictive][StartProgressive]','check\x20handlePredictive\x20is\x20not\x20undefine');clearInterval(_0x3c414d['handlePredictive']);_0x3c414d['handlePredictive']=undefined;}_0x3c414d[_0x88cc('0x2c')]=moment()[_0x88cc('0x7d')](_0x88cc('0xfd'));loggerPredictive[_0x88cc('0x83')](_0x3c414d[_0x88cc('0x45')],'collection\x20data\x20in\x20progressive\x20at',_0x3c414d[_0x88cc('0x2c')]);this[_0x88cc('0x15c')](_0x3c414d,0x1);}else if(ifInterval(_0x3c414d['dialPredictiveInterval'],_0x3c414d[_0x88cc('0x2c')])){this[_0x88cc('0x15c')](_0x3c414d,0x1);loggerPredictiveCalls[_0x88cc('0x83')]('[startMethodPredictive][StartProgressive][Loop]',_0x3c414d[_0x88cc('0x2c')],_0x3c414d[_0x88cc('0x45')]);_0x3c414d[_0x88cc('0x78')]=0x0;_0x3c414d['predictiveIntervalErlangCallsDroppedCalls']=0x0;}else if(_0x2262d9<_0x460078&&_0x3c414d['dialPredictiveOptimization']==='dropRate'){freeVariablesPredictive(_0x3c414d);loggerPredictive['info'](_0x88cc('0x1cf'),_0x88cc('0x1d0'),_0x460078,_0x88cc('0x2c'),_0x3c414d['name']);}else if(_0x3f88bb<_0x3c414d[_0x88cc('0x1d1')]&&_0x3c414d['dialPredictiveOptimization']===_0x88cc('0x1d2')){freeVariablesPredictive(_0x3c414d);loggerPredictive[_0x88cc('0x83')](_0x88cc('0x1d3'),_0x88cc('0x1d4'),_0x3f88bb,_0x88cc('0x1d5'),_0x3c414d[_0x88cc('0x1d1')],_0x88cc('0x2c'),_0x3c414d[_0x88cc('0x45')]);}else if(!ifInterval(_0x3c414d['dialPredictiveInterval'],_0x3c414d['startProgressive'])&&_[_0x88cc('0x43')](_0x3c414d[_0x88cc('0x2b')])&&!_[_0x88cc('0x43')](_0x3c414d[_0x88cc('0x2c')])){_0x3c414d[_0x88cc('0x2b')]=moment()['format'](_0x88cc('0xfd'));loggerPredictive['info'](_0x3c414d[_0x88cc('0x45')],_0x88cc('0x1d6'),_0x3c414d[_0x88cc('0x2b')]);this[_0x88cc('0xc6')](_0x3c414d['dialPredictiveInterval'])['then'](this[_0x88cc('0x1d7')](_0x3c414d))[_0x88cc('0xc3')](mergeDataErlangB(_0x3c414d))[_0x88cc('0xc3')](this[_0x88cc('0x1d8')](_0x3c414d))[_0x88cc('0xc0')](loggerCatchPredictive(_0x88cc('0x1d9'),_0x3c414d));}else if(!ifInterval(_0x3c414d[_0x88cc('0x1da')],_0x3c414d['startPredictive'])){_0x3c414d[_0x88cc('0x1d1')]=0x0;_0x3c414d[_0x88cc('0x2b')]=moment()[_0x88cc('0x7d')](_0x88cc('0xfd'));loggerPredictive['info'](_0x3c414d['name'],_0x88cc('0x1db'),_0x3c414d['startPredictive']);clearInterval(_0x3c414d[_0x88cc('0x98')]);_0x3c414d['handlePredictive']=undefined;this[_0x88cc('0xc6')](_0x3c414d[_0x88cc('0x1da')])[_0x88cc('0xc3')](this[_0x88cc('0x1d7')](_0x3c414d))[_0x88cc('0xc3')](mergeDataErlangB(_0x3c414d))[_0x88cc('0xc3')](this[_0x88cc('0x1d8')](_0x3c414d))[_0x88cc('0xc0')](loggerCatchPredictive(_0x88cc('0x1dc'),_0x3c414d));}else if(_0x3c414d[_0x88cc('0x1c9')]&&_0x3135fa<_0x3c414d[_0x88cc('0x1c9')]-_0x431c28){freeVariablesPredictive(_0x3c414d);loggerPredictive[_0x88cc('0x83')](_0x3c414d[_0x88cc('0x45')],_0x88cc('0x1dd'),_0x3135fa,_0x88cc('0x1de'),_0x3c414d[_0x88cc('0x1c9')],'-',_0x431c28,'=',_0x3c414d[_0x88cc('0x1c9')]-_0x431c28,')');}else if(_0x3c414d[_0x88cc('0x1c9')]&&_0x3135fa>_0x3c414d['predictiveIntervalAvailable']+_0x13627e){freeVariablesPredictive(_0x3c414d);loggerPredictive[_0x88cc('0x83')](_0x3c414d[_0x88cc('0x45')],_0x88cc('0x1dd'),_0x3135fa,_0x88cc('0x1df'),_0x3c414d[_0x88cc('0x1c9')],'+',_0x13627e,'=',_0x3c414d[_0x88cc('0x1c9')]+_0x13627e,')');}};Dialer[_0x88cc('0x1e')][_0x88cc('0x1d7')]=function(_0x214e2b){var _0x57069a=this;return function(_0x4440a4){return new BPromise(function(_0xff0ac0,_0x39547b){_['merge'](_0x214e2b,_0x4440a4[0x0]);if(checkGetDataPredictive(_0x4440a4[0x0])){var _0xd1bdb4=_0x214e2b[_0x88cc('0x1c9')]=_0x214e2b[_0x88cc('0x5a')]+_0x214e2b['available'];var _0x3a4244=_0x214e2b['dialPredictiveInterval']*0x3c;var _0x1c9e7c=_0x4440a4[0x0][_0x88cc('0x72')]+_0x4440a4[0x0][_0x88cc('0x71')];var _0x1c7510=(_0x4440a4[0x0][_0x88cc('0x70')]+_0x4440a4[0x0][_0x88cc('0x117')]+_0x4440a4[0x0][_0x88cc('0x73')])/_0x4440a4[0x0][_0x88cc('0x86')];_0x214e2b['predictiveIntervalHitRate']=_0x1c7510>0x0?_0x1c7510:0x1;switch(_0x214e2b[_0x88cc('0x1e0')]){case'dropRate':var _0x2a9653=_0x214e2b[_0x88cc('0x1c7')]/0x64;return _0x57069a[_0x88cc('0x1e1')](_0xd1bdb4,_0x3a4244,_0x1c9e7c,_0x1c7510,_0x2a9653)['then'](function(_0x597a34){return _0xff0ac0(_0x597a34);});case _0x88cc('0x1e2'):var _0x3e3693=_0x214e2b[_0x88cc('0x1c7')]/0x64;return _0x57069a[_0x88cc('0x1e3')](_0xd1bdb4,_0x3a4244,_0x1c9e7c,_0x1c7510,_0x3e3693)['then'](function(_0x3ca1da){return _0xff0ac0(_0x3ca1da);});default:return _0x39547b(msgResponse(_0x88cc('0x1e4'),_0x88cc('0x14a'),_0x88cc('0x1e5')));}}else{return _0x39547b(msgResponse(_0x88cc('0x1e4'),_0x88cc('0x14a'),_0x88cc('0x1e6')));}});};};Dialer[_0x88cc('0x1e')][_0x88cc('0x1e7')]=function(_0x5845a6){var _0x1cd638=this;return function(_0x5013f7){return new BPromise(function(_0x593476,_0x4cad14){_[_0x88cc('0x95')](_0x5845a6,_0x5013f7[0x0]);if(checkGetDataPredictive(_0x5013f7[0x0])){loggerPredictive[_0x88cc('0x83')](JSON[_0x88cc('0x51')](_0x5013f7[0x0]));if(_0x5845a6[_0x88cc('0x1e0')]===_0x88cc('0x1d2')){return _0x1cd638[_0x88cc('0xce')](_0x5845a6['id'])[_0x88cc('0xc3')](function(_0x3e23fb){var _0x1fc143=_0x5845a6[_0x88cc('0x56')]-_0x3e23fb[0x0]['outboundQueuePauses'];var _0xc5ce7f=_0x5845a6[_0x88cc('0x1da')]*0x3c;var _0x30b65c=_0x5013f7[0x0][_0x88cc('0x72')]+_0x5013f7[0x0][_0x88cc('0x71')];var _0x45f71a=(_0x5013f7[0x0]['predictiveIntervalAnsweredCalls']+_0x5013f7[0x0][_0x88cc('0x117')]+_0x5013f7[0x0]['predictiveIntervalDroppedCallsCallersExit'])/_0x5013f7[0x0]['predictiveIntervalTotalCalls'];var _0x2a469c=_0x5845a6[_0x88cc('0x1c7')]/0x64;_0x5845a6[_0x88cc('0x76')]=_0x3e23fb[0x0][_0x88cc('0x1e8')]||0x0;_0x5845a6[_0x88cc('0x1cc')]=_0x45f71a>0x0?_0x45f71a:0x1;return _0x1cd638[_0x88cc('0x1e1')](_0x1fc143,_0xc5ce7f,_0x30b65c,_0x45f71a,_0x2a469c);})[_0x88cc('0xc3')](function(_0x39bd9b){return _0x593476(_0x39bd9b);})[_0x88cc('0xc0')](function(_0x47b2db){return _0x4cad14(msgResponse(_0x88cc('0x1e9'),_0x88cc('0x14a'),JSON[_0x88cc('0x51')](_0x47b2db)));});}if(_0x5845a6[_0x88cc('0x1e0')]===_0x88cc('0x1e2')){return _0x1cd638['getVoiceQueueRtPauses'](_0x5845a6['id'])[_0x88cc('0xc3')](function(_0x64ba29){var _0x53a101=_0x5845a6['loggedIn']-_0x64ba29[0x0][_0x88cc('0x1e8')];var _0x33066b=_0x5845a6['dialPredictiveInterval']*0x3c;var _0x219c70=_0x5013f7[0x0][_0x88cc('0x72')]+_0x5013f7[0x0][_0x88cc('0x71')];var _0x243395=(_0x5013f7[0x0]['predictiveIntervalAnsweredCalls']+_0x5013f7[0x0][_0x88cc('0x117')]+_0x5013f7[0x0][_0x88cc('0x73')])/_0x5013f7[0x0]['predictiveIntervalTotalCalls'];var _0x59e74e=_0x5845a6[_0x88cc('0x1c7')]/0x64;_0x5845a6[_0x88cc('0x76')]=_0x64ba29[0x0]['outboundQueuePauses']||0x0;_0x5845a6['predictiveIntervalHitRate']=_0x243395>0x0?_0x243395:0x1;return _0x1cd638[_0x88cc('0x1e3')](_0x53a101,_0x33066b,_0x219c70,_0x243395,_0x59e74e);})[_0x88cc('0xc3')](function(_0x847860){return _0x593476(_0x847860);})[_0x88cc('0xc0')](function(_0x1e296b){return _0x4cad14(msgResponse(_0x88cc('0x1e9'),'Failure',JSON[_0x88cc('0x51')](_0x1e296b)));});}}else{return _0x4cad14(msgResponse(_0x88cc('0x1e4'),_0x88cc('0x14a'),_0x88cc('0x1e6')));}});};};Dialer[_0x88cc('0x1e')][_0x88cc('0x1d8')]=function(_0x5ca011){var _0x549093=this;return function(){var _0x1db0f3=0x0;var _0x250c20=Math['floor'](_0x5ca011[_0x88cc('0x79')]*0x3e8);if(_0x250c20>0x0){_0x250c20=_0x250c20<0x64?0x64:_0x250c20;loggerPredictive[_0x88cc('0x83')](_0x5ca011[_0x88cc('0x45')],_0x88cc('0x1ea'),_0x250c20,'milliseconds');_0x5ca011[_0x88cc('0x98')]=setInterval(function(){_0x549093[_0x88cc('0x98')](_0x5ca011);loggerPredictiveCalls[_0x88cc('0x83')](_0x88cc('0x1eb'),_0x1db0f3+=0x1);},_0x250c20);}else{loggerPredictive[_0x88cc('0x83')](_0x5ca011[_0x88cc('0x45')],_0x88cc('0x1ec'));}};};Dialer[_0x88cc('0x1e')][_0x88cc('0x1ed')]=function(_0x1dad5e,_0xf5862e){var _0x51c30e=this;return function(_0x459c93){if(_[_0x88cc('0x4e')](_0x459c93)){if(_['isNil'](_0xf5862e[_0x88cc('0xd6')])||!_0xf5862e['recallme']){if(_0x1dad5e['dialMethod']==='booked'){_0x1dad5e[_0x88cc('0x131')]=_[_0x88cc('0x43')](_0x1dad5e[_0x88cc('0x131')])?!![]:_0x1dad5e[_0x88cc('0x131')];var _0x5d5e63=uuid['v4']();_0x51c30e[_0x88cc('0x28')][_0x5d5e63]=new Action(_0x1dad5e,_0xf5862e,_0x5d5e63);loggerBooked[_0x88cc('0x83')](_0x88cc('0x1ee'),_0x5d5e63,'queueStatusComplete:\x20',JSON['stringify'](_0x1dad5e[_0x88cc('0x131')]),_0x88cc('0x1ef'),_0x1dad5e[_0x88cc('0x45')]);if(_0x1dad5e[_0x88cc('0x131')]){_0x1dad5e['queueStatusComplete']=![];_0x51c30e['queueBooked'][_0x51c30e[_0x88cc('0x28')][_0x5d5e63][_0x88cc('0xbc')]]=[];ami[_0x88cc('0xb7')]({'actionid':_0x5d5e63,'action':_0x88cc('0x1f0'),'queue':_0x1dad5e[_0x88cc('0x45')]})[_0x88cc('0xc0')](function(){_0x51c30e[_0x88cc('0xbb')](_0x1dad5e);_0x51c30e[_0x88cc('0xc7')]({'active':![],'ContactId':_0x51c30e[_0x88cc('0x28')][_0x5d5e63]['ContactId'],'ListId':_0x51c30e[_0x88cc('0x28')][_0x5d5e63][_0x88cc('0xd5')],'VoiceQueueId':_0x51c30e[_0x88cc('0x28')][_0x5d5e63]['VoiceQueueId']||undefined,'CampaignId':_0x51c30e['actions'][_0x5d5e63][_0x88cc('0xd8')]||undefined})[_0x88cc('0xc0')](loggerCatch(_0x88cc('0x1f1')));delete _0x51c30e[_0x88cc('0x28')][_0x5d5e63];});}else{loggerBooked[_0x88cc('0x83')](_0x88cc('0x1f2'),JSON['stringify'](_0x1dad5e[_0x88cc('0x131')]),'Queue:\x20',_0x1dad5e['name']);_0x51c30e['updateOriginated'](_0x1dad5e);_0x51c30e[_0x88cc('0xc7')]({'active':![],'ContactId':_0x51c30e[_0x88cc('0x28')][_0x5d5e63][_0x88cc('0xd4')],'ListId':_0x51c30e[_0x88cc('0x28')][_0x5d5e63][_0x88cc('0xd5')],'VoiceQueueId':_0x51c30e[_0x88cc('0x28')][_0x5d5e63][_0x88cc('0xd7')]||undefined,'CampaignId':_0x51c30e[_0x88cc('0x28')][_0x5d5e63][_0x88cc('0xd8')]||undefined})[_0x88cc('0xc0')](loggerCatch('[unlockOriginate][syncQueueStatusComplete]'));delete _0x51c30e[_0x88cc('0x28')][_0x5d5e63];}}else{return _0x51c30e[_0x88cc('0x16b')](_0x1dad5e,_0xf5862e);}}else{if(getDiff(_0xf5862e['scheduledat'])<_0x1dad5e['dialRecallMeTimeout']*0x3c){if(_0xf5862e['Agent']&&!_0xf5862e[_0x88cc('0x1f3')][_0x88cc('0x1f4')]){_0x51c30e['preview'][_0x88cc('0x139')](_0xf5862e['id'])[_0x88cc('0x21')](function(){_0x51c30e[_0x88cc('0xbb')](_0x1dad5e);});}else{_0x51c30e['unlockContact']({'active':![]},_0xf5862e['id'],0x1)[_0x88cc('0x21')](function(){_0x51c30e[_0x88cc('0xbb')](_0x1dad5e);});}}else{_0x1dad5e['outboundReCallsDay']+=0x1;_0x51c30e[_0x88cc('0xbb')](_0x1dad5e);if(_0x1dad5e[_0x88cc('0x1f5')]){_0x51c30e['rescheduleContact']({'active':![],'recallme':![],'UserId':null,'ContactId':_0xf5862e['ContactId'],'ListId':_0xf5862e[_0x88cc('0xd5')],'VoiceQueueId':_0xf5862e[_0x88cc('0xd7')]||undefined,'CampaignId':_0xf5862e[_0x88cc('0xd8')]||undefined})['catch'](loggerCatch(_0x88cc('0x1f6')));_0x51c30e[_0x88cc('0xd1')](createObjHistory(_0x1dad5e,_0xf5862e,_0x88cc('0x1f7'),0x17,_0x88cc('0x1f8')))[_0x88cc('0xc0')](loggerCatch(_0x88cc('0x1f9')));}else{_0x51c30e[_0x88cc('0xd3')](createObjHistory(_0x1dad5e,_0xf5862e,_0x88cc('0x1fa'),0x16,'RecallFailedTimeout'),_0x88cc('0x1fb'),'[Originate][HistoryRecallClose]');}}}}else{_0x1dad5e['outboundBlacklistCallsDay']+=0x1;_0x51c30e['saveInDb'](createObjHistory(_0x1dad5e,_0xf5862e,'BLACKLIST',0xd,'Blacklist'),_0x88cc('0x1fc'),_0x88cc('0x1fd'));throw _0x88cc('0x1fe');}};};Dialer[_0x88cc('0x1e')]['handleIvr']=function(_0x489975){var _0x1086a3=this;var _0x1c5969=_0x489975['limitCalls']-_0x489975[_0x88cc('0x77')]-_0x489975[_0x88cc('0xca')];emitCampaignSummary(_0x489975);if(_0x1c5969>0x0){if(_0x1c5969>this[_0x88cc('0x27')]){_0x1c5969=this[_0x88cc('0x27')];}_0x489975[_0x88cc('0xca')]+=_0x1c5969;this[_0x88cc('0xcc')](_0x489975['id'],_0x1c5969,_0x489975['dialOrderByScheduledAt'],_0x489975)[_0x88cc('0xc3')](function(_0x42bb26){_0x489975['temp']-=_0x1c5969;_0x489975[_0x88cc('0xca')]=_0x489975[_0x88cc('0xca')]>0x0?_0x489975[_0x88cc('0xca')]:0x0;if(!checkContactEmpty(_0x42bb26)){_0x489975[_0x88cc('0x47')]='AVAILABLE_CONTACTS_FINISHED';logger[_0x88cc('0x83')](_0x88cc('0x1ff')+_0x489975['name']);}else{_0x489975[_0x88cc('0x77')]+=_0x42bb26[_0x88cc('0xa1')];_0x489975[_0x88cc('0x47')]=_0x88cc('0x200');for(var _0x10ed9e=0x0;_0x10ed9e<_0x42bb26['length'];_0x10ed9e+=0x1){_0x489975[_0x88cc('0x201')]+=0x1;if(_[_0x88cc('0xb6')](_0x42bb26[_0x10ed9e])||_[_0x88cc('0xb6')](_0x42bb26[_0x10ed9e][_0x88cc('0x16f')])||_['isNil'](_0x42bb26[_0x10ed9e][_0x88cc('0x16f')][_0x88cc('0x170')])){_0x1086a3[_0x88cc('0x202')](_0x88cc('0x203'),_0x489975,_0x42bb26[_0x10ed9e]);}else{_0x1086a3[_0x88cc('0xc4')](_[_0x88cc('0x12e')](_0x42bb26[_0x10ed9e],['CampaignId',_0x88cc('0x204')]))[_0x88cc('0xc3')](_0x1086a3[_0x88cc('0x1ed')](_0x489975,_0x42bb26[_0x10ed9e]))[_0x88cc('0xc0')](_0x1086a3['loggerHandler'](_0x88cc('0x205'),_0x489975));}}}})[_0x88cc('0xc0')](loggerGetContactDialer('[getContactCampaign2]',_0x489975,_0x1c5969));}};Dialer[_0x88cc('0x1e')][_0x88cc('0x15c')]=function(_0x859e04,_0x13dbec){var _0x2c5869=this;var _0x1dc0ec=[];var _0x43e4ba=_0x13dbec>=0x1?_0x13dbec:0x1;if(_0x859e04[_0x88cc('0x61')]===_0x88cc('0xb')){_0x43e4ba=0x1;}var _0x407160=Math[_0x88cc('0x1cb')](_0x859e04[_0x88cc('0xaa')]*_0x43e4ba)-_0x859e04[_0x88cc('0x77')]-_0x859e04[_0x88cc('0xca')];emitVoiceQueueSummary(_0x859e04);if(_0x859e04[_0x88cc('0x206')]>0x0){var _0x433b1c=_0x859e04[_0x88cc('0x206')]-_0x859e04[_0x88cc('0x77')]-_0x859e04[_0x88cc('0x5a')]-_0x859e04[_0x88cc('0xca')]-_0x859e04[_0x88cc('0x57')];if(_0x407160>_0x433b1c){_0x407160=_0x433b1c;}}if(_0x407160>0x0){if(_0x859e04[_0x88cc('0x61')]==='booked'){_0x407160=0x1;}if(_0x407160>this['maxNumberOriginate']){_0x407160=this['maxNumberOriginate'];}_0x859e04['temp']+=_0x407160;for(var _0x35688e in this[_0x88cc('0x25')]){if(typeof this[_0x88cc('0x25')][_0x35688e]!==_0x88cc('0xa2')){if(this['agents'][_0x35688e][_0x88cc('0xaf')]===_0x88cc('0x207')&&this[_0x88cc('0x25')][_0x35688e][_0x88cc('0xb8')]==='reachable'){_0x1dc0ec[_0x88cc('0x12d')](this[_0x88cc('0x25')][_0x35688e]['id']);}}}this[_0x88cc('0xc9')](_0x859e04['id'],_0x1dc0ec,_0x407160,_0x859e04['dialOrderByScheduledAt'],_0x859e04)[_0x88cc('0xc3')](function(_0x37c2cf){_0x859e04[_0x88cc('0xca')]-=_0x407160;_0x859e04[_0x88cc('0xca')]=_0x859e04[_0x88cc('0xca')]>0x0?_0x859e04[_0x88cc('0xca')]:0x0;if(!checkContactEmpty(_0x37c2cf)){_0x2c5869[_0x88cc('0xbf')](_0x859e04)[_0x88cc('0xc3')](sendMessageReschedule(_0x859e04))['catch'](loggerCatch('[countReScheduled]\x20'));}else{_0x859e04['originated']+=_0x37c2cf[_0x88cc('0xa1')];_0x859e04['message']=_0x859e04[_0x88cc('0x61')]===_0x88cc('0xb')?_0x88cc('0x175'):_0x88cc('0x200');for(var _0x573ce9=0x0;_0x573ce9<_0x37c2cf[_0x88cc('0xa1')];_0x573ce9+=0x1){if(_[_0x88cc('0xb6')](_0x37c2cf[_0x573ce9])||_[_0x88cc('0xb6')](_0x37c2cf[_0x573ce9][_0x88cc('0x16f')])||_[_0x88cc('0xb6')](_0x37c2cf[_0x573ce9][_0x88cc('0x16f')][_0x88cc('0x170')])){_0x2c5869['emptyContact'](_0x88cc('0x203'),_0x859e04,_0x37c2cf[_0x573ce9]);}else{_0x2c5869['checkIsBlackList'](_[_0x88cc('0x12e')](_0x37c2cf[_0x573ce9],[_0x88cc('0xd7'),_0x88cc('0x204')]))[_0x88cc('0xc3')](_0x2c5869[_0x88cc('0x1ed')](_0x859e04,_0x37c2cf[_0x573ce9]))['catch'](_0x2c5869[_0x88cc('0xd2')](_0x88cc('0x203'),_0x859e04));}}}})[_0x88cc('0xc0')](loggerGetContactDialer('[getContactDialer2]',_0x859e04,_0x407160));}};Dialer[_0x88cc('0x1e')][_0x88cc('0x98')]=function(_0x52d468){if(_0x52d468[_0x88cc('0x206')]>0x0){var _0x2c034f=_0x52d468[_0x88cc('0x206')]-_0x52d468[_0x88cc('0x77')]-_0x52d468[_0x88cc('0x5a')];if(_0x2c034f>0x0){this['tryOriginatePredictive'](_0x52d468);}else{loggerPredictiveCalls['info']('[handlePredictive][limitChannel]');}}else{this[_0x88cc('0x208')](_0x52d468);}};Dialer[_0x88cc('0x1e')][_0x88cc('0x208')]=function(_0x1e2504){var _0x532854=this;var _0x9de31c=[];_0x1e2504['originated']+=0x1;for(var _0x4f91e5 in this[_0x88cc('0x25')]){if(typeof this[_0x88cc('0x25')][_0x4f91e5]!==_0x88cc('0xa2')){if(this['agents'][_0x4f91e5][_0x88cc('0xaf')]===_0x88cc('0x207')&&this[_0x88cc('0x25')][_0x4f91e5]['status']==='reachable'){_0x9de31c['push'](this[_0x88cc('0x25')][_0x4f91e5]['id']);}}}this[_0x88cc('0xc9')](_0x1e2504['id'],_0x9de31c,0x1,_0x1e2504[_0x88cc('0x209')],_0x1e2504)['then'](function(_0xaaf183){if(!checkContactEmpty(_0xaaf183)){checkContactLowerLimitOriginate(_0x1e2504,0x1,0x0);_0x532854[_0x88cc('0xbf')](_0x1e2504)['then'](sendMessageReschedule(_0x1e2504))[_0x88cc('0xc0')](loggerCatch('[countReScheduled]\x20'));}else{_0x1e2504['message']=_0x88cc('0x200');if(_[_0x88cc('0xb6')](_0xaaf183[0x0])||_[_0x88cc('0xb6')](_0xaaf183[0x0][_0x88cc('0x16f')])||_['isNil'](_0xaaf183[0x0][_0x88cc('0x16f')][_0x88cc('0x170')])){_0x532854[_0x88cc('0x202')](_0x88cc('0x203'),_0x1e2504,_0xaaf183[0x0]);}else{_0x532854[_0x88cc('0xc2')](_[_0x88cc('0x12e')](_0xaaf183[0x0],['VoiceQueueId',_0x88cc('0x204')]))['then'](_0x532854['checkContactBlack'](_0x1e2504,_0xaaf183[0x0]))['catch'](_0x532854[_0x88cc('0xd2')](_0x88cc('0x20a'),_0x1e2504));}}})['catch'](loggerGetContactDialer(_0x88cc('0x20b'),_0x1e2504,0x1));emitVoiceQueueSummary(_0x1e2504);};Dialer[_0x88cc('0x1e')]['abandonmentRate']=function(_0x2b0595,_0x571b83,_0x367e10,_0xfd4392,_0x480709,_0x1dda1e){loggerPredictive['info'](_0x88cc('0x20c'));loggerPredictive[_0x88cc('0x83')](_0x88cc('0x20d'),_0x2b0595);loggerPredictive[_0x88cc('0x83')](_0x88cc('0x20e'),_0x571b83);loggerPredictive[_0x88cc('0x83')](_0x88cc('0x20f'),_0x367e10);loggerPredictive['info']('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',_0xfd4392);loggerPredictive['info'](_0x88cc('0x210'),_0x480709);loggerPredictive[_0x88cc('0x83')](_0x88cc('0x8b'));return new BPromise(function(_0x3b53f2,_0x529915){if(_0x2b0595<=0x0||isNaN(_0x2b0595)){return _0x529915(msgResponse(_0x88cc('0x211'),_0x88cc('0x50'),'m\x20=\x20'+_0x2b0595));}if(_0x367e10<=0x0||isNaN(_0x367e10)){return _0x529915(msgResponse('[abandonmentRate]','Error',_0x88cc('0x212')+_0x367e10));}if(_0xfd4392<=0x0||isNaN(_0xfd4392)){return _0x529915(msgResponse('[abandonmentRate]',_0x88cc('0x50'),_0x88cc('0x213')+_0xfd4392));}if(_0x571b83<=0x0||isNaN(_0x571b83)){return _0x529915(msgResponse(_0x88cc('0x211'),'Error','interval\x20=\x20'+_0x571b83));}if(_0x480709<=0x0||isNaN(_0x480709)){return _0x529915(msgResponse(_0x88cc('0x211'),'Error',_0x88cc('0x214')+_0x480709));}_0x1dda1e=_0x1dda1e||0x0;var _0x5db8ad=0x1/_0x367e10;var _0x469cbc=0x0;var _0x5551de=0x0;var _0x3fa2f7=0x0;var _0x20ca30=0x0;for(var _0x25a0ca=0x0;_0x3fa2f7<_0x480709;_0x25a0ca+=0x1){_0x5551de=_0x25a0ca/_0x571b83;_0x469cbc=(_0xfd4392*_0x5551de+_0x1dda1e)/_0x5db8ad;_0x3fa2f7=erlangb(_0x469cbc,_0x2b0595);_0x20ca30=_0x469cbc/_0x2b0595*(0x1-erlangb(_0x469cbc,_0x2b0595));}return _0x3b53f2({'erlangCalls':_0x25a0ca,'erlangCallToSecond':_0x571b83/_0x25a0ca,'erlangAbandonmentRate':_0x3fa2f7,'erlangBusyFactor':_0x20ca30});});};Dialer[_0x88cc('0x1e')][_0x88cc('0x1e3')]=function(_0x3bb443,_0x421954,_0x1f7175,_0x1dab51,_0x2e303c,_0x4ed2a9){loggerPredictive[_0x88cc('0x83')](_0x88cc('0x215'));loggerPredictive['info'](_0x88cc('0x20d'),_0x3bb443);loggerPredictive[_0x88cc('0x83')](_0x88cc('0x20e'),_0x421954);loggerPredictive[_0x88cc('0x83')](_0x88cc('0x20f'),_0x1f7175);loggerPredictive[_0x88cc('0x83')](_0x88cc('0x216'),_0x1dab51);loggerPredictive['info']('Umin:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x2e303c);loggerPredictive[_0x88cc('0x83')](_0x88cc('0x8b'));return new BPromise(function(_0x37476d,_0x57764f){if(_0x3bb443<=0x0||isNaN(_0x3bb443)){return _0x57764f(msgResponse(_0x88cc('0x217'),'Error',_0x88cc('0x218')+_0x3bb443));}if(_0x1f7175<=0x0||isNaN(_0x1f7175)){return _0x57764f(msgResponse('[busyFactor]',_0x88cc('0x50'),'Ts\x20=\x20'+_0x1f7175));}if(_0x1dab51<=0x0||isNaN(_0x1dab51)){return _0x57764f(msgResponse(_0x88cc('0x217'),_0x88cc('0x50'),_0x88cc('0x213')+_0x1dab51));}if(_0x421954<=0x0||isNaN(_0x421954)){return _0x57764f(msgResponse(_0x88cc('0x217'),_0x88cc('0x50'),_0x88cc('0x219')+_0x421954));}if(_0x2e303c<=0x0||isNaN(_0x2e303c)){return _0x57764f(msgResponse(_0x88cc('0x217'),_0x88cc('0x50'),_0x88cc('0x21a')+_0x2e303c));}_0x4ed2a9=_0x4ed2a9||0x0;var _0x23863d=0x1/_0x1f7175;var _0x2a9154=0x0;var _0x3a8edd=0x0;var _0x55f5c0=0x0;var _0x296e47=0x0;for(var _0x5cfb89=0x0;_0x296e47<_0x2e303c;_0x5cfb89+=0x1){_0x3a8edd=_0x5cfb89/_0x421954;_0x2a9154=(_0x1dab51*_0x3a8edd+_0x4ed2a9)/_0x23863d;_0x55f5c0=erlangb(_0x2a9154,_0x3bb443);_0x296e47=_0x2a9154/_0x3bb443*(0x1-erlangb(_0x2a9154,_0x3bb443));}return _0x37476d({'erlangCalls':_0x5cfb89,'erlangCallToSecond':_0x421954/_0x5cfb89,'erlangAbandonmentRate':_0x55f5c0,'erlangBusyFactor':_0x296e47});});};module[_0x88cc('0x21b')]=Dialer;
\ No newline at end of file
+var _0x97a2=['outboundRejectCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalAvailable','predictiveIntervalTotalCalls','originated','erlangCalls','erlangAbandonmentRate','erlangBusyFactor','Trunk','active','stringify','format','voice:queue:%s','voice_queue:save','type','ivr','campaign:ivr:%s','campaign:save','isEmpty','-----\x20Stats\x20Predictive\x20---','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','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\x20is\x20not\x20enough\x20for\x20predictive','Total\x20Calls\x20are\x20not\x20enough\x20for\x20predictive','---------\x20ErlangB\x20---------','Scheduled\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','erlangCallToSecond','Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','merge','clearing\x20variable\x20start\x20predictive','handlePredictive','clearing\x20variable\x20handle\x20predictive','string','\x22%s\x22\x20<%s>','\x22\x22\x20<>','error','inspect','stack','length','undefined','[decremetOriginate]\x20is\x20null\x20or\x20undefined','contactsRescheduled','[getContactDialer2][ReScheduled]','contacts','AVAILABLE_CONTACTS_FINISHED','available','[syncQueueSummary]\x20Campaign\x20Queue:\x20','is\x20disactive','[syncQueueSummary]\x20Campaign\x20Ivr:\x20','IS_DISACTIVED','state','statedesc','endtime','starttime','clearZombieChannels','[uniqueid]','enqueue','isNil','status','channel','catch','No\x20such\x20channel','updateOriginated','queue','[Dialer][checkChannel][ivr]','resolve','countReScheduled','[countReScheduled]\x20','checkIsBlackList','then','[checkIsBlackList]\x20','checkIsBlackListIvr','averageHandleTime','avgHandleTime','[averageHandleTime]\x20','rescheduleContact','[rescheduleContact]\x20','unlockContact','[unlockContact]\x20','getContactDialer','temp','[getContactDialer]\x20','getContactDialerIvr','getVoiceQueueRtPauses','[getVoiceQueueRtPauses]\x20','moveContactManagedDialer','createHistory','[createHistory]\x20','[updateOriginated]\x20object\x20originated\x20is\x20negative','[updateOriginated]\x20is\x20null\x20or\x20undefined','loggerHandler','emptyContact','notFound','saveInDb','ContactId','ListId','UserId','VoiceQueueId','CampaignId','isSuccess','Success','isTrunkReachable','reachable','SIP/%s','uniqueid','variable','amdstatus','exten','dialAMDActive','value','HANGUP','HangupInAMD','membername','AMD','custom:amd','buildObj','amd','[syncHangupInAMD][createHistory]','MACHINE','Machine','countglobal','emit','[syncAgentComplete][createHistory][0]','countbusyretry','countcongestionretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','dialGlobalMaxRetry','stateGlobal','reason19\x20machine....','createStateFinal','add','dialMachineRetryFrequency','minutes','YYYY-MM-DD\x20HH:mm:ss','[rescheduleContact][Machine]','[syncHangupInAMDIvr]','dialMachineMaxRetry','reason\x2019\x20machine....','ivrAnswerCallsDay','[syncHangupIvr][createHistory]','[syncHangupIvr]','dialQueueProject','AnswerAGI','AGI','cause-txt','Unknow','syncAgentComplete','dialAgiAfterHangupAgent','[syncAgentComplete][createHistory]','[syncAgentComplete]','syncAgentConnect','queueCallerAbandonCreateState','[syncQueueCallerAbandon]\x20[Drop]','droptime','responsetime','dialQueueTimeout','outboundDropCallsDayTimeout','predictiveIntervalErlangCallsDroppedCalls','TIMEOUT','dialDropMaxRetry','dialDropRetryFrequency','[rescheduleContact][Drop]','Drop','calleridname','calleridnum','[syncAgentComplete][createHistory][10]','outboundDropCallsDayCallersExit','dropreason','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','[syncAgentComplete][createHistory][11]','actionid','strategy','roundrobin','stateinterface','locked','rrmemory','pick','idHopper','paused','queueStatusComplete','[unlockQueueStatus][undefined]','[booked][unlockQueueStatus]','run','[Catch][Preview][syncQueueStatusComplete]','_rr','unlockRR','Agent:\x20','contactAgent-idHopper:\x20','[unlock][syncQueueStatusComplete]','[booked][unlock2]','[unlock2][syncQueueStatusComplete]','[booked][unlock3]','loopCampaigns','checkIsTrunkReachable','\x20trunk\x20is\x20not\x20reachable','checkIfTime','ifTime','checkIfTimeIntervals','Failure','\x20Intervals\x20is\x20null\x20','INTERVAL_IS_EMPTY','\x20Intervals\x20is\x20empty\x20','timezones','isArray','push','iftime\x20%s,%s','interval','content','true','Action','command','indexOf','all','some','GLOBAL_INTERVAL_IS_OVERTIME','INTERVAL_IS_OVERTIME','[ifTime][promiseAll]','Global:\x20','\x20Interval\x20is\x20overtime:\x20','Timezone:\x20','checkDialMethod','progressive','power','handlePower','dialPowerLevel','Queue','method\x20not\x20recognized','sendMessageOneNotActive','dialTimezone','[syncQueueSummary]','[syncCampaigns]','\x5cw{0,','pow','replace','random','match','actionOriginate','object','originate','voiceQueue\x20is\x20undefine','Contact','phone','getCaller','NONE','dialer','ACTIVE','XMD-AMDINITIALSILENCE','dialAMDGreeting','XMD-AMDAFTERGREETINGSILENCE','dialAMDAfterGreetingSilence','XMD-AMDTOTALANALYSISTIME','dialAMDTotalAnalysisTime','XMD-AMDMINWORDLENGTH','dialAMDMinWordLength','XMD-AMDBETWEENWORDSSILENCE','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','XMD-AMDSILENCETHRESHOLD','dialAMDSilenceThreshold','dialAMDMaximumWordLength','tags','createdAt','%s%s','toUpper','callerid','dialRandomLastDigitCallerIdNumber','dialOriginateCallerIdNumber','TrunkBackup','XMD-ORIGINATECALLERIDNAME','originatecalleridname','XMD-ORIGINATECALLERIDNUM','SIP/%s/%s%s','trim','dialCutDigit','substring','from-sip','[originateError]:\x20%s','OriginateError','[originate][error]','originate\x20action\x20Error','getQueue','response','callProgressDetecting','[callProgressDetecting]\x20','checkRetriveMax','countnoanswerretry','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','[rescheduleContact][NoAnswer]','dialBusyMaxRetry','[rescheduleContact]\x20[Busy]','dialCongestionMaxRetry','dialCongestionRetryFrequency','[rescheduleContact]\x20[Congestion]','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','[rescheduleContact][NoSuchNumber]','[rescheduleContact][Abandoned]','dialAgentRejectRetryFrequency','[callProgressDetecting]','entity\x20is\x20undefine','custom:agentnosuchnumber','nosuchnumber','reason\x200\x20no\x20such\x20number....','NoAnswer','custom:agentnoanswer','noanswer','[syncAgentComplete][createHistory][3]','reason\x203\x20ringing\x20no\x20answer','outboundBusyCallsDay','Busy','custom:agentbusy','busy','reason\x205\x20busy','Congestion','reason\x208\x20congestion','outboundAbandonedCallsDay','Abandoned','reason\x2011\x20abandoned','AgentReject','agentreject','[syncAgentComplete][createHistory][20]','dialAgentRejectMaxRetry','reason\x2020\x20agentreject','outboundUnknownCallsDay','reason','[syncAgentComplete][createHistory][?]','Global','[moveContactManagedDialer][0]','dialPredictiveOptimizationPercentage','round','predictiveIntervalMinThreshold','[startMethodPredictive][StartProgressive]','check\x20predictive\x20is\x20not\x20undefine','check\x20handlePredictive\x20is\x20not\x20undefine','[startMethodPredictive][StartProgressive][Loop]','dialPredictiveOptimization','dropRate','Dropped\x20calls\x20day','[stopMethodPredictive][ReStartProgressive][ExceededDropInterval]','Max\x20Drop\x20','Drop\x20in\x20this\x20interval','dialPredictiveInterval','started\x20in\x20predictive\x20at','startMethodPredictive','Predictive\x20after\x20first\x20interval','recalculate\x20predictive\x20at','Predictive\x20for\x20every\x20interval',')\x20are\x20more\x20than\x20threshold\x20(','getDataPredictive','abandonmentRate','[getDataPredictive]','getDataPredictiveOld','outboundQueuePauses','[CatchErlangB]','agentBusyFactor','busyFactor','check\x20failure','[handlePredictive]','fail\x20to\x20scheduled\x20calls','checkContactBlack','recallme','[booked][checkContactBlack]','queueStatusComplete:\x20','Queue:\x20','queuestatus','[unlockOriginate][syncQueueStatusComplete]','scheduledat','dialRecallMeTimeout','Agent','voicePause','outboundReCallsDay','dialRecallInQueue','[rescheduleContact][dialRecallInQueue]','RECALLINQUEUE','RecallInQueue','[Originate][HistoryDialRecallInQueue][historyCatch]','RECALLFAILEDTIMEOUT','[Originate][HistoryRecallClose][historyCatch]','[Originate][HistoryRecallClose]','BLACKLIST','[Originate][historyBlacklist]','[Originate][MoveBlacklist]','inBlackList','handleIvr','limitCalls','dialOrderByScheduledAt','RUNNING','ivrTotalCallsDays','[actionOriginate]\x20','Contact.phone','[actionOriginateIvr]\x20','[getContactCampaign2]','floor','dialLimitQueue','[getContactDialer2]','tryOriginatePredictive','[handlePredictive][limitChannel]','not_inuse','[actionOriginatePredictive]\x20','--------\x20Drop\x20Rate\x20--------','M:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Interval:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','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','[abandonmentRate]','m\x20=\x20','Ts\x20=\x20','p\x20=\x20','interval\x20=\x20','Amax\x20=\x20','----\x20Agent\x20Busy\x20Factor\x20----','Umin:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','[busyFactor]','Umin\x20=\x20','exports','util','bluebird','uuid','moment','md5','ioredis','../preview/util/util','../../../config/environment/','../../../config/logger','booked','predictive','predictiveCalls','syncQueueSummary','../ami','redis','defaults','localhost','../rpc/cmHopperHistory','../rpc/cmHopperBlack','../rpc/voiceQueueRt','./action','./final','./agentComplete','./queueCallerAbandon','./hangup','env','XCALLY_IP_AGI','127.0.0.1','prototype','tail','finally','sequence','preview','voiceQueues','campaigns','agents','trunks','maxNumberOriginate','channels','actions','contactsId','uniqueId','optionPredictive','startPredictive','startProgressive','ivrOriginated','queueBooked','queueBookedRR','queuecallerabandon','syncQueueCallerAbandon','originateresponse','syncOriginateResponse','bind','agentcomplete','custom:queuesummary','hangup','syncHangup','newexten','syncNewExten','varset','syncVarSet','queuemember','syncQueueMember','queuestatuscomplete','syncQueueStatusComplete','isUndefined','message','AGENTS_NOT_LOGGED','NOT_ACTIVE','name','\x20NOT\x20Active','Interval','INTERVAL_IS_NULL','\x20INTERVAL_IS_NULL','Intervals','[ifTime][Action]','Error','milliseconds','diff','seconds','outbound','answered','loggedIn','pTalking','sumBillable','talking','abandoned','waiting','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateTimeout','dialPrefix','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundCongestionCallsDay','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay'];(function(_0x2b31ae,_0x48c5a9){var _0x224405=function(_0x5880d0){while(--_0x5880d0){_0x2b31ae['push'](_0x2b31ae['shift']());}};_0x224405(++_0x48c5a9);}(_0x97a2,0x1b1));var _0x297a=function(_0x18d663,_0x559a3c){_0x18d663=_0x18d663-0x0;var _0x103b0b=_0x97a2[_0x18d663];return _0x103b0b;};'use strict';var util=require(_0x297a('0x0'));var _=require('lodash');var BPromise=require(_0x297a('0x1'));var uuid=require(_0x297a('0x2'));var moment=require(_0x297a('0x3'));var rr=require('rr');var md5=require(_0x297a('0x4'));var Redis=require(_0x297a('0x5'));var ut=require(_0x297a('0x6'));var config=require(_0x297a('0x7'));var logger=require(_0x297a('0x8'))('dialer');var loggerBooked=require(_0x297a('0x8'))(_0x297a('0x9'));var loggerPredictive=require(_0x297a('0x8'))(_0x297a('0xa'));var loggerPredictiveCalls=require(_0x297a('0x8'))(_0x297a('0xb'));var loggerSyncQueueSummary=require('../../../config/logger')(_0x297a('0xc'));var ami=require(_0x297a('0xd'));config[_0x297a('0xe')]=_[_0x297a('0xf')](config[_0x297a('0xe')],{'host':_0x297a('0x10'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));var cmHopper=require('../rpc/cmHopper');var cmHopperHistory=require(_0x297a('0x11'));var cmHopperBlack=require(_0x297a('0x12'));var voiceQueueRt=require(_0x297a('0x13'));var Action=require(_0x297a('0x14'));var History=require('./history');var Final=require(_0x297a('0x15'));var AgentComplete=require(_0x297a('0x16'));var QueueCallerAbandon=require(_0x297a('0x17'));var Hangup=require(_0x297a('0x18'));var ipAgi=process[_0x297a('0x19')][_0x297a('0x1a')]||_0x297a('0x1b');var strategy={'rrmemory':'rrmemory','roundrobin':'roundrobin'};var Sequence=function(){};Sequence[_0x297a('0x1c')]['enqueue']=function(_0x1abaed){this[_0x297a('0x1d')]=this['tail']?this[_0x297a('0x1d')][_0x297a('0x1e')](_0x1abaed):_0x1abaed();};function Dialer(_0x5256f7,_0x173cf4){this[_0x297a('0x1f')]=new Sequence();this[_0x297a('0x20')]=_0x173cf4;this['voiceQueues']=_0x5256f7[_0x297a('0x21')];this[_0x297a('0x22')]=_0x5256f7[_0x297a('0x22')];this['agents']=_0x5256f7[_0x297a('0x23')];this[_0x297a('0x24')]=_0x5256f7['trunks'];this[_0x297a('0x25')]=config[_0x297a('0x25')]||0x2;this[_0x297a('0x26')]={};this[_0x297a('0x27')]={};this[_0x297a('0x28')]={};this[_0x297a('0x29')]={};this[_0x297a('0x2a')]={};this[_0x297a('0x2b')]={};this[_0x297a('0x2c')]={};this[_0x297a('0x2d')]={};this[_0x297a('0x2e')]={};this[_0x297a('0x2f')]={};ami['on']('agentconnect',this['syncAgentConnect']['bind'](this));ami['on'](_0x297a('0x30'),this[_0x297a('0x31')]['bind'](this));ami['on'](_0x297a('0x32'),this[_0x297a('0x33')][_0x297a('0x34')](this));ami['on'](_0x297a('0x35'),this['syncAgentComplete'][_0x297a('0x34')](this));ami['on'](_0x297a('0x36'),this[_0x297a('0xc')]['bind'](this));ami['on'](_0x297a('0x37'),this[_0x297a('0x38')][_0x297a('0x34')](this));ami['on'](_0x297a('0x39'),this[_0x297a('0x3a')][_0x297a('0x34')](this));ami['on'](_0x297a('0x3b'),this[_0x297a('0x3c')][_0x297a('0x34')](this));ami['on'](_0x297a('0x3d'),this[_0x297a('0x3e')]['bind'](this));ami['on'](_0x297a('0x3f'),this[_0x297a('0x40')][_0x297a('0x34')](this));this['loopCampaigns']();this['loopClearZombieChannels']();}function isNotNull(_0x1e5888){return _0x1e5888!==null&&!_[_0x297a('0x41')](_0x1e5888);}function checkIsLoggedIn(_0x40cc4d,_0xd9c747){return function(){if(_0xd9c747<=0x0){_0x40cc4d[_0x297a('0x42')]=_0x297a('0x43');throw _0x40cc4d['name']+'\x20AGENTS\x20NOT\x20LOGGED';}};}function isActive(_0x29da30){return _0x29da30;}function checkIsActive(_0x49be29,_0x20b90a){return function(){if(!isActive(_0x20b90a)){_0x49be29[_0x297a('0x42')]=_0x297a('0x44');throw _0x49be29[_0x297a('0x45')]+_0x297a('0x46');}};}function checkInterval(_0x59c31e){return function(){if(!isNotNull(_0x59c31e[_0x297a('0x47')])){_0x59c31e[_0x297a('0x42')]=_0x297a('0x48');throw _0x59c31e[_0x297a('0x45')]+_0x297a('0x49');}if(!isNotNull(_0x59c31e[_0x297a('0x47')][_0x297a('0x4a')])){_0x59c31e[_0x297a('0x42')]=_0x297a('0x48');throw _0x59c31e['name']+_0x297a('0x49');}if(!isNotNull(_['isEmpty'](_0x59c31e[_0x297a('0x47')][_0x297a('0x4a')]))){_0x59c31e[_0x297a('0x42')]=_0x297a('0x48');throw _0x59c31e['name']+_0x297a('0x49');}};}function msgResponse(_0x5aba6f,_0x100723,_0x451b4f){return{'action':_0x5aba6f,'response':_0x100723,'message':_0x451b4f,'stack':_0x451b4f};}function myreject(_0x5c9d41){return function(_0x3e4dfb){return _0x5c9d41(msgResponse(_0x297a('0x4b'),_0x297a('0x4c'),JSON['stringify'](_0x3e4dfb)));};}function getSeconds(_0x4a17ee,_0x1fd3b4){var _0x2aa6f9=moment(_0x4a17ee)[_0x297a('0x4d')](0x0);var _0x4e7fed=moment(_0x1fd3b4)[_0x297a('0x4d')](0x0);return _0x2aa6f9[_0x297a('0x4e')](_0x4e7fed,_0x297a('0x4f'));}function emit(_0x4770ff,_0x63e572,_0x13e2c7){io['to'](_0x4770ff)['emit'](_0x63e572,_0x13e2c7);}function emitVoiceQueueSummary(_0x1a4a10){if(_0x1a4a10['type']===_0x297a('0x50')){var _0x5f410a={'id':_0x1a4a10['id'],'name':_0x1a4a10[_0x297a('0x45')],'strategy':_0x1a4a10['strategy'],'answered':_0x1a4a10[_0x297a('0x51')],'available':_0x1a4a10['available'],'loggedIn':_0x1a4a10[_0x297a('0x52')],'pTalking':_0x1a4a10[_0x297a('0x53')],'sumBillable':_0x1a4a10[_0x297a('0x54')],'sumDuration':_0x1a4a10['sumDuration'],'sumHoldTime':_0x1a4a10['sumHoldTime']||0x0,'talking':_0x1a4a10[_0x297a('0x55')],'total':_0x1a4a10['total'],'type':_0x1a4a10['type'],'unmanaged':_0x1a4a10['unmanaged'],'abandoned':_0x1a4a10[_0x297a('0x56')],'waiting':_0x1a4a10[_0x297a('0x57')],'loggedInDb':_0x1a4a10['loggedInDb'],'dialActive':_0x1a4a10[_0x297a('0x58')],'dialMethod':_0x1a4a10[_0x297a('0x59')],'dialOriginateCallerIdName':_0x1a4a10[_0x297a('0x5a')],'dialOriginateCallerIdNumber':_0x1a4a10['dialOriginateCallerIdNumber'],'dialOriginateTimeout':_0x1a4a10[_0x297a('0x5b')],'dialPrefix':_0x1a4a10[_0x297a('0x5c')],'outboundAnswerAgiCallsDay':_0x1a4a10[_0x297a('0x5d')],'outboundAnswerCallsDay':_0x1a4a10[_0x297a('0x5e')],'outboundBlacklistCallsDay':_0x1a4a10[_0x297a('0x5f')],'outboundBusyCallsDay':_0x1a4a10['outboundBusyCallsDay'],'outboundCongestionCallsDay':_0x1a4a10[_0x297a('0x60')],'outboundDropCallsDayACS':_0x1a4a10['outboundDropCallsDayACS'],'outboundDropCallsDayCallersExit':_0x1a4a10['outboundDropCallsDayCallersExit'],'outboundDropCallsDayTimeout':_0x1a4a10['outboundDropCallsDayTimeout'],'outboundNoAnswerCallsDay':_0x1a4a10[_0x297a('0x61')],'outboundNoSuchCallsDay':_0x1a4a10[_0x297a('0x62')],'outboundOriginateFailureCallsDay':_0x1a4a10[_0x297a('0x63')],'outboundReCallsDay':_0x1a4a10['outboundReCallsDay'],'outboundRejectCallsDay':_0x1a4a10[_0x297a('0x64')],'outboundUnknownCallsDay':_0x1a4a10['outboundUnknownCallsDay'],'predictiveIntervalAnsweredCalls':_0x1a4a10[_0x297a('0x65')],'predictiveIntervalAvgHoldtime':_0x1a4a10[_0x297a('0x66')],'predictiveIntervalAvgTalktime':_0x1a4a10[_0x297a('0x67')],'predictiveIntervalDroppedCallsCallersExit':_0x1a4a10[_0x297a('0x68')],'predictiveIntervalDroppedCallsTimeout':_0x1a4a10[_0x297a('0x69')],'predictiveIntervalErlangCalls':_0x1a4a10[_0x297a('0x6a')],'predictiveIntervalErlangCallsDroppedCalls':_0x1a4a10['predictiveIntervalErlangCallsDroppedCalls'],'predictiveIntervalHitRate':_0x1a4a10[_0x297a('0x6b')],'predictiveIntervalMultiplicativeFactor':_0x1a4a10[_0x297a('0x6c')],'predictiveIntervalPauses':_0x1a4a10['predictiveIntervalPauses'],'predictiveIntervalAvailable':_0x1a4a10[_0x297a('0x6d')],'predictiveIntervalTotalCalls':_0x1a4a10[_0x297a('0x6e')],'message':_0x1a4a10[_0x297a('0x42')],'originated':_0x1a4a10[_0x297a('0x6f')],'erlangCalls':_0x1a4a10[_0x297a('0x70')],'erlangCallToSecond':_0x1a4a10['erlangCallToSecond'],'erlangAbandonmentRate':_0x1a4a10[_0x297a('0x71')],'erlangBusyFactor':_0x1a4a10[_0x297a('0x72')],'startPredictive':_0x1a4a10[_0x297a('0x2b')],'startProgressive':_0x1a4a10[_0x297a('0x2c')]};if(_0x1a4a10[_0x297a('0x73')]){_0x5f410a[_0x297a('0x73')]={'id':_0x1a4a10[_0x297a('0x73')]['id'],'name':_0x1a4a10[_0x297a('0x73')]['name'],'active':_0x1a4a10['Trunk'][_0x297a('0x74')],'callerid':_0x1a4a10[_0x297a('0x73')]['callerid']};}if(_0x1a4a10['Interval']){_0x5f410a[_0x297a('0x47')]={'id':_0x1a4a10[_0x297a('0x47')]['id'],'name':_0x1a4a10[_0x297a('0x47')][_0x297a('0x45')]};}var _0x4baed0=md5(JSON[_0x297a('0x75')](_0x5f410a));if(_0x1a4a10[_0x297a('0x4')]!==_0x4baed0){_0x1a4a10[_0x297a('0x4')]=_0x4baed0;emit(util[_0x297a('0x76')](_0x297a('0x77'),_0x5f410a[_0x297a('0x45')]),_0x297a('0x78'),_0x5f410a);}}}function emitCampaignSummary(_0x384d3a){if(_0x384d3a[_0x297a('0x79')]===_0x297a('0x7a')){emit(util['format'](_0x297a('0x7b'),_0x384d3a[_0x297a('0x45')]),_0x297a('0x7c'),_0x384d3a);}}function checkGetDataPredictive(_0x190934){if(isNotNull(_0x190934)&&!_[_0x297a('0x7d')](_0x190934)){loggerPredictive['info'](_0x297a('0x7e'));loggerPredictive[_0x297a('0x7f')](_0x297a('0x80'),_0x190934[_0x297a('0x6e')]);loggerPredictive[_0x297a('0x7f')](_0x297a('0x81'),_0x190934[_0x297a('0x65')]);loggerPredictive[_0x297a('0x7f')](_0x297a('0x82'),_0x190934['predictiveIntervalDroppedCallsTimeout']);loggerPredictive[_0x297a('0x7f')](_0x297a('0x83'),_0x190934[_0x297a('0x68')]);loggerPredictive[_0x297a('0x7f')](_0x297a('0x84'),_0x190934[_0x297a('0x66')]);loggerPredictive['info']('AVG\x20Talk\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x190934[_0x297a('0x67')]);loggerPredictive[_0x297a('0x7f')](_0x297a('0x85'));if(_0x190934[_0x297a('0x6e')]>0x0){if(!_['isUndefined'](_0x190934['predictiveIntervalAvgTalktime'])&&_0x190934[_0x297a('0x67')]>0x0){return!![];}loggerPredictive[_0x297a('0x7f')](_0x297a('0x86'));if(!_[_0x297a('0x41')](_0x190934[_0x297a('0x66')])&&_0x190934[_0x297a('0x66')]>0x0){return!![];}loggerPredictive[_0x297a('0x7f')]('Avg\x20Hold\x20Time\x20is\x20not\x20enough\x20for\x20predictive');}else{loggerPredictive['info'](_0x297a('0x87'));}}else{loggerPredictive['info']('History\x20information\x20are\x20empty');}return![];}function mergeDataErlangB(_0x47ad96){return function(_0x3c442c){loggerPredictive['info'](_0x297a('0x88'));loggerPredictive[_0x297a('0x7f')](_0x297a('0x89'),_0x3c442c['erlangCalls']);loggerPredictive['info']('One\x20call\x20every:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x3c442c[_0x297a('0x8a')]);loggerPredictive[_0x297a('0x7f')](_0x297a('0x8b'),_0x3c442c[_0x297a('0x71')]);loggerPredictive[_0x297a('0x7f')]('Agent\x20Busy\x20Factor:\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x3c442c['erlangBusyFactor']);loggerPredictive[_0x297a('0x7f')](_0x297a('0x8b'),_0x3c442c['erlangAbandonmentRate']);loggerPredictive[_0x297a('0x7f')](_0x297a('0x85'));_[_0x297a('0x8c')](_0x47ad96,_0x3c442c);};}function getDiff(_0x2d59bc){var _0x222d1d=moment()[_0x297a('0x4d')](0x0);var _0x4bb7ef=moment(_0x2d59bc)['milliseconds'](0x0);return _0x222d1d[_0x297a('0x4e')](_0x4bb7ef,_0x297a('0x4f'));}function ifInterval(_0x51f361,_0x40edc4){if(_[_0x297a('0x41')](_0x40edc4)){return![];}return getDiff(_0x40edc4)<_0x51f361*0x3c;}function freeVariablesPredictive(_0x4e104d){if(isNotNull(_0x4e104d)){if(!_[_0x297a('0x41')](_0x4e104d[_0x297a('0x2c')])){_0x4e104d[_0x297a('0x2c')]=undefined;loggerPredictive['info'](_0x4e104d[_0x297a('0x45')],'clearing\x20variable\x20start\x20progressive');}if(!_[_0x297a('0x41')](_0x4e104d['startPredictive'])){_0x4e104d['startPredictive']=undefined;loggerPredictive[_0x297a('0x7f')](_0x4e104d['name'],_0x297a('0x8d'));}if(!_[_0x297a('0x41')](_0x4e104d[_0x297a('0x8e')])){clearInterval(_0x4e104d[_0x297a('0x8e')]);_0x4e104d['handlePredictive']=undefined;loggerPredictive[_0x297a('0x7f')](_0x4e104d[_0x297a('0x45')],_0x297a('0x8f'));}}}function erlangb(_0x4f70e8,_0x49d2e7){if(_0x49d2e7===0x0){return 0x0;}var _0x3d41ff=0x1;for(var _0x597b6a=0x1;_0x597b6a<=_0x49d2e7;_0x597b6a+=0x1){_0x3d41ff=0x1+_0x3d41ff*_0x597b6a/_0x4f70e8;}return 0x1/_0x3d41ff;}function isVoiceQueueOutbound(_0x4f210d){return _0x4f210d===_0x297a('0x50');}function isNotPreview(_0x3db087){return _0x3db087!==_0x297a('0x20');}function isCampaignIvr(_0x41a2c4){return _0x41a2c4===_0x297a('0x7a');}function getCallerId(_0x5349dc,_0x56dee3,_0x23874c){if(!_[_0x297a('0x41')](_0x23874c)&&typeof _0x23874c===_0x297a('0x90')&&!_[_0x297a('0x7d')](_0x23874c)){if(!_[_0x297a('0x41')](_0x56dee3)&&typeof _0x56dee3===_0x297a('0x90')&&!_[_0x297a('0x7d')](_0x56dee3)){return util['format'](_0x297a('0x91'),_0x56dee3,_0x23874c);}return util[_0x297a('0x76')](_0x297a('0x91'),_0x23874c,_0x23874c);}if(!_[_0x297a('0x41')](_0x5349dc)&&typeof _0x5349dc===_0x297a('0x90')&&!_['isEmpty'](_0x5349dc)){return _0x5349dc;}return _0x297a('0x92');}function loggerCatchQueueSummary(_0x196c48,_0x1c33c7){return function(_0x5658e9){freeVariablesPredictive(_0x1c33c7);emitVoiceQueueSummary(_0x1c33c7);emitCampaignSummary(_0x1c33c7);loggerSyncQueueSummary[_0x297a('0x93')](_0x196c48,util[_0x297a('0x94')](_0x5658e9,{'showHidden':![],'depth':null}));};}function loggerCatchPredictive(_0x584c17,_0x10b88a){return function(_0x283790){loggerPredictive[_0x297a('0x93')](_0x10b88a[_0x297a('0x45')],_0x584c17);loggerPredictive[_0x297a('0x93')](_0x283790[_0x297a('0x95')]);freeVariablesPredictive(_0x10b88a);};}function loggerCatch(_0x403639){return function(_0x2d64e5){logger['error'](_0x403639,util[_0x297a('0x94')](_0x2d64e5,{'showHidden':![],'depth':null}));};}function checkContactEmpty(_0x46b2e5){return _0x46b2e5&&!_['isUndefined'](_0x46b2e5)&&_0x46b2e5[_0x297a('0x96')]>0x0;}function decremetOriginate(_0x5e4e97){if(!_[_0x297a('0x41')](_0x5e4e97)&&_0x5e4e97!==null){if(typeof _0x5e4e97[_0x297a('0x6f')]!==_0x297a('0x97')){if(_0x5e4e97[_0x297a('0x6f')]>0x0){_0x5e4e97['originated']-=0x1;}else{logger[_0x297a('0x93')]('[decremetOriginate]\x20object\x20originated\x20is\x20negative');}}}else{logger['error'](_0x297a('0x98'));}}function checkContactLowerLimitOriginate(_0x5cd80e,_0xa2d3b9,_0x123d95){if(_0xa2d3b9>_0x123d95){for(var _0x556d2c=0x0;_0x556d2c<_0xa2d3b9-_0x123d95;_0x556d2c+=0x1){decremetOriginate(_0x5cd80e);}}}function loggerGetContactDialer(_0x4cb9fa,_0x31fc1d,_0x41a310){return function(_0x219d15){checkContactLowerLimitOriginate(_0x31fc1d,_0x41a310,0x0);logger[_0x297a('0x93')](_0x4cb9fa,util[_0x297a('0x94')](_0x219d15,{'showHidden':![],'depth':null}));};}function sendMessageReschedule(_0x16213c){return function(_0x4f03a3){if(isNotNull(_0x4f03a3)&&isNotNull(_0x4f03a3[0x0])){if(_0x4f03a3[0x0][_0x297a('0x99')]>0x0){_0x16213c['message']='RESCHEDULED_CONTACTS';logger[_0x297a('0x7f')](_0x297a('0x9a')+_0x16213c[_0x297a('0x45')],_0x4f03a3[0x0][_0x297a('0x99')],_0x297a('0x9b'));}else{_0x16213c[_0x297a('0x42')]=_0x297a('0x9c');logger[_0x297a('0x7f')]('[getContactDialer2][Empty]'+_0x16213c[_0x297a('0x45')]);}}};}function notSendMessagesQueue(_0x2122fe){if(_0x2122fe['sendMessageOneNotActive']){freeVariablesPredictive(_0x2122fe);if(_0x2122fe['originated']===0x0&&_0x2122fe[_0x297a('0x55')]===0x0&&_0x2122fe['waiting']===0x0&&(_0x2122fe['pTalking']||0x0)===0x0){_0x2122fe['sendMessageOneNotActive']=![];_0x2122fe[_0x297a('0x9d')]=0x0;_0x2122fe[_0x297a('0x42')]=_0x297a('0x44');loggerSyncQueueSummary['error'](_0x297a('0x9e'),_0x2122fe[_0x297a('0x45')],'is\x20not\x20active');}else{_0x2122fe[_0x297a('0x42')]='IS_DISACTIVED';loggerSyncQueueSummary[_0x297a('0x93')](_0x297a('0x9e'),_0x2122fe['name'],_0x297a('0x9f'));}emitVoiceQueueSummary(_0x2122fe);}}function notSendMessagesCampaign(_0x2e4bcd){if(_0x2e4bcd['sendMessageOneNotActive']){if(_0x2e4bcd[_0x297a('0x6f')]===0x0){_0x2e4bcd['sendMessageOneNotActive']=![];_0x2e4bcd['message']='NOT_ACTIVE';loggerSyncQueueSummary[_0x297a('0x93')](_0x297a('0xa0'),_0x2e4bcd[_0x297a('0x45')],'is\x20not\x20active');}else{_0x2e4bcd[_0x297a('0x42')]=_0x297a('0xa1');loggerSyncQueueSummary[_0x297a('0x93')]('[syncQueueSummary]\x20Campaign\x20Ivr:\x20',_0x2e4bcd[_0x297a('0x45')],_0x297a('0x9f'));}emitCampaignSummary(_0x2e4bcd);}}function createObjHistory(_0x48e609,_0x5d68fb,_0x43043f,_0x1c58e4,_0x22aa67){_0x48e609[_0x297a('0x42')]=_0x43043f;var _0x5b2f00=new Action(_0x48e609,_0x5d68fb);var _0x445f52=new History(_0x5b2f00);_0x445f52[_0x297a('0xa2')]=_0x1c58e4;_0x445f52[_0x297a('0xa3')]=_0x22aa67;_0x445f52[_0x297a('0xa4')]=_0x5b2f00[_0x297a('0xa5')];return _0x445f52;}Dialer[_0x297a('0x1c')]['loopClearZombieChannels']=function(){var _0x3ac2b9=this;setInterval(function(){_0x3ac2b9[_0x297a('0xa6')](_0x3ac2b9['uniqueId'],_0x297a('0xa7'));_0x3ac2b9[_0x297a('0xa6')](_0x3ac2b9[_0x297a('0x27')],'[actions]');},0x32c8);};Dialer[_0x297a('0x1c')][_0x297a('0xa6')]=function(_0x2d4100,_0x174193){var _0x3abaf1=this;for(var _0x2934b0 in _0x2d4100){if(typeof _0x2d4100[_0x2934b0]!==_0x297a('0x97')){this['sequence'][_0x297a('0xa8')](function(){if(!_[_0x297a('0xa9')](_0x2d4100[_0x2934b0])){return ami['Action']({'action':_0x297a('0xaa'),'channel':_0x2d4100[_0x2934b0][_0x297a('0xab')]})[_0x297a('0xac')](function(_0x1ea737){if(_0x1ea737[_0x297a('0x42')]===_0x297a('0xad')){setTimeout(function(){if(_0x2d4100[_0x2934b0]&&_0x2d4100[_0x2934b0][_0x297a('0x79')]!==_0x297a('0x7a')){_0x3abaf1[_0x297a('0xae')](_0x3abaf1['voiceQueues'][_0x2d4100[_0x2934b0][_0x297a('0xaf')]]);logger[_0x297a('0x93')]('[Dialer][checkChannel]',_0x174193,_0x2934b0,_0x2d4100[_0x2934b0][_0x297a('0xaf')]);delete _0x2d4100[_0x2934b0];}if(_0x2d4100[_0x2934b0]&&_0x2d4100[_0x2934b0][_0x297a('0x79')]===_0x297a('0x7a')){_0x3abaf1[_0x297a('0xae')](_0x3abaf1['campaigns'][_0x2d4100[_0x2934b0]['queue']]);logger[_0x297a('0x93')](_0x297a('0xb0'),_0x174193,_0x2934b0,_0x2d4100[_0x2934b0][_0x297a('0xaf')]);delete _0x2d4100[_0x2934b0];}},0x2328);}});}});}}};Dialer['prototype']['countReScheduled']=function(_0x3a9d2d){return BPromise[_0x297a('0xb1')]()['then'](cmHopper[_0x297a('0xb2')](_0x3a9d2d))[_0x297a('0xac')](loggerCatch(_0x297a('0xb3')));};Dialer[_0x297a('0x1c')][_0x297a('0xb4')]=function(_0x35568b){return BPromise[_0x297a('0xb1')]()[_0x297a('0xb5')](cmHopperBlack[_0x297a('0xb4')](_0x35568b))[_0x297a('0xac')](loggerCatch(_0x297a('0xb6')));};Dialer[_0x297a('0x1c')][_0x297a('0xb7')]=function(_0x297ebf){return BPromise[_0x297a('0xb1')]()['then'](cmHopperBlack[_0x297a('0xb7')](_0x297ebf))[_0x297a('0xac')](loggerCatch('[checkIsBlackListIvr]\x20'));};Dialer[_0x297a('0x1c')][_0x297a('0xb8')]=function(_0x3f6698){return BPromise[_0x297a('0xb1')]()[_0x297a('0xb5')](cmHopperHistory[_0x297a('0xb9')](_0x3f6698))[_0x297a('0xac')](loggerCatch(_0x297a('0xba')));};Dialer[_0x297a('0x1c')][_0x297a('0xbb')]=function(_0x11a020){return BPromise[_0x297a('0xb1')]()['then'](cmHopper[_0x297a('0xbb')](_0x11a020))[_0x297a('0xac')](loggerCatch(_0x297a('0xbc')));};Dialer[_0x297a('0x1c')][_0x297a('0xbd')]=function(_0x2357d7,_0x3c4c9e,_0x38eb9e){return BPromise[_0x297a('0xb1')]()[_0x297a('0xb5')](cmHopper['unlockContact'](_0x2357d7,_0x3c4c9e,_0x38eb9e))['catch'](loggerCatch(_0x297a('0xbe')));};Dialer[_0x297a('0x1c')][_0x297a('0xbf')]=function(_0x549e11,_0x34a512,_0x4a94d0,_0x1eac78,_0x384152){return BPromise[_0x297a('0xb1')]()[_0x297a('0xb5')](cmHopper[_0x297a('0xbf')](_0x549e11,_0x34a512,_0x4a94d0,_0x1eac78))['catch'](function(_0x538247){_0x384152[_0x297a('0xc0')]-=_0x4a94d0;_0x384152[_0x297a('0xc0')]=_0x384152['temp']>0x0?_0x384152[_0x297a('0xc0')]:0x0;loggerCatch(_0x297a('0xc1'))(_0x538247);});};Dialer[_0x297a('0x1c')]['getContactDialerIvr']=function(_0x304ac7,_0x2b00c1,_0x4a75ae,_0x4222d9){return BPromise[_0x297a('0xb1')]()['then'](cmHopper[_0x297a('0xc2')](_0x304ac7,_0x2b00c1,_0x4a75ae))[_0x297a('0xac')](function(_0x56de1e){_0x4222d9[_0x297a('0xc0')]-=_0x2b00c1;_0x4222d9['temp']=_0x4222d9[_0x297a('0xc0')]>0x0?_0x4222d9[_0x297a('0xc0')]:0x0;loggerCatch('[getContactDialerIvr]\x20')(_0x56de1e);});};Dialer[_0x297a('0x1c')][_0x297a('0xc3')]=function(_0x4dc2d0){return BPromise[_0x297a('0xb1')]()[_0x297a('0xb5')](voiceQueueRt[_0x297a('0xc3')](_0x4dc2d0))[_0x297a('0xac')](loggerCatch(_0x297a('0xc4')));};Dialer['prototype'][_0x297a('0xc5')]=function(_0x3c1884){return BPromise[_0x297a('0xb1')]()['then'](cmHopper[_0x297a('0xc5')](_0x3c1884))[_0x297a('0xac')](loggerCatch('[moveContactManagedDialer]\x20'));};Dialer[_0x297a('0x1c')]['createHistory']=function(_0x268125){return BPromise[_0x297a('0xb1')]()[_0x297a('0xb5')](cmHopperHistory[_0x297a('0xc6')](_0x268125))[_0x297a('0xac')](loggerCatch(_0x297a('0xc7')));};Dialer[_0x297a('0x1c')]['updateOriginated']=function(_0xd5f113){if(!_[_0x297a('0x41')](_0xd5f113)&&_0xd5f113!==null){if(typeof _0xd5f113[_0x297a('0x6f')]!==_0x297a('0x97')){if(_0xd5f113['originated']>0x0){_0xd5f113[_0x297a('0x6f')]-=0x1;}else{logger[_0x297a('0x93')](_0x297a('0xc8'));}}}else{logger[_0x297a('0x93')](_0x297a('0xc9'));}};Dialer[_0x297a('0x1c')][_0x297a('0xca')]=function(_0x3c5f74,_0x5c72a6){var _0x4585ed=this;return function(_0x6b4426){_0x4585ed[_0x297a('0xae')](_0x5c72a6);logger[_0x297a('0x93')](_0x3c5f74,util[_0x297a('0x94')](_0x6b4426,{'showHidden':![],'depth':null}));};};Dialer['prototype'][_0x297a('0xcb')]=function(_0x45abc6,_0x3ce9aa,_0x5b134){var _0x3b923b={'state':0x19,'statedesc':_0x297a('0xcc')};this['updateOriginated'](_0x3ce9aa);this[_0x297a('0xcd')](_[_0x297a('0x8c')](_0x3b923b,_['pick'](_0x5b134,[_0x297a('0xce'),_0x297a('0xcf'),_0x297a('0xd0'),_0x297a('0xd1'),_0x297a('0xd2')])),'[emptyContact][createHistory]','[emptyContact]');logger['error'](_0x45abc6);};Dialer['prototype'][_0x297a('0xd3')]=function(_0x1717c1){return _0x1717c1===_0x297a('0xd4');};Dialer[_0x297a('0x1c')][_0x297a('0xd5')]=function(_0x30e8d4){return!_[_0x297a('0x41')](_0x30e8d4)&&_0x30e8d4&&!_['isUndefined'](_0x30e8d4[_0x297a('0x45')])&&!_[_0x297a('0x41')](_0x30e8d4['active'])&&_0x30e8d4[_0x297a('0x74')]&&(this[_0x297a('0x24')][util['format']('SIP/%s',_0x30e8d4['name'])]['status']===_0x297a('0xd6')||this[_0x297a('0x24')][util['format'](_0x297a('0xd7'),_0x30e8d4['name'])][_0x297a('0xaa')]==='unmonitored');};Dialer[_0x297a('0x1c')][_0x297a('0xcd')]=function(_0x919486,_0x280f89,_0x250039){this[_0x297a('0xc6')](_0x919486)[_0x297a('0xac')](loggerCatch(_0x280f89));this[_0x297a('0xc5')](_0x919486)['catch'](loggerCatch(_0x250039));};Dialer[_0x297a('0x1c')][_0x297a('0x3c')]=function(_0x251cc3){var _0x255ca9=this[_0x297a('0x29')][_0x251cc3[_0x297a('0xd8')]];var _0x97e34;if(!_[_0x297a('0xa9')](_0x251cc3)&&!_[_0x297a('0xa9')](_0x251cc3[_0x297a('0xd9')])&&!_[_0x297a('0xa9')](_0x251cc3[_0x297a('0xd9')][_0x297a('0xda')])&&_0x251cc3[_0x297a('0xdb')]==='xcally-motion-dialer'&&_0x255ca9){if(_0x255ca9[_0x297a('0x79')]!==_0x297a('0x7a')&&this['voiceQueues'][_0x255ca9[_0x297a('0xaf')]][_0x297a('0xdc')]&&_0x251cc3[_0x297a('0xdd')]===_0x297a('0xde')){delete this[_0x297a('0x29')][_0x251cc3[_0x297a('0xd8')]];this[_0x297a('0xae')](this[_0x297a('0x21')][_0x255ca9[_0x297a('0xaf')]]);this[_0x297a('0x21')][_0x255ca9[_0x297a('0xaf')]]['outboundAnswerCallsDay']+=0x1;this[_0x297a('0x21')][_0x255ca9[_0x297a('0xaf')]][_0x297a('0x5d')]+=0x1;_0x97e34=new Hangup(_0x255ca9,_0x251cc3);_0x97e34[_0x297a('0xa2')]=0x12;_0x97e34['statedesc']=_0x297a('0xdf');_0x97e34[_0x297a('0xe0')]=_0x297a('0xe1');ami['emit'](_0x297a('0xe2'),ut[_0x297a('0xe3')](_0x97e34,_0x297a('0xe4')));this['saveInDb'](_0x97e34,_0x297a('0xe5'),'[syncHangupInAMD]');}if(_0x255ca9[_0x297a('0x79')]!==_0x297a('0x7a')&&this[_0x297a('0x21')][_0x255ca9[_0x297a('0xaf')]]['dialAMDActive']&&_0x251cc3[_0x297a('0xdd')]===_0x297a('0xe6')){var _0x4c0322=this;return new BPromise(function(_0x2b31e1,_0x53b859){delete _0x4c0322[_0x297a('0x29')][_0x251cc3[_0x297a('0xd8')]];_0x4c0322[_0x297a('0xae')](_0x4c0322['voiceQueues'][_0x255ca9[_0x297a('0xaf')]]);_0x4c0322['voiceQueues'][_0x255ca9[_0x297a('0xaf')]][_0x297a('0x5e')]+=0x1;_0x4c0322[_0x297a('0x21')][_0x255ca9[_0x297a('0xaf')]]['outboundAnswerAgiCallsDay']+=0x1;var _0x38be4f=_0x4c0322[_0x297a('0x21')][_0x255ca9[_0x297a('0xaf')]];var _0x5c5272=new Hangup(_0x255ca9,_0x251cc3);_0x5c5272[_0x297a('0xa2')]=0x13;_0x5c5272[_0x297a('0xa3')]=_0x297a('0xe7');_0x5c5272[_0x297a('0xe0')]=_0x297a('0xe1');_0x5c5272['countmachineretry']+=0x1;_0x5c5272[_0x297a('0xe8')]+=0x1;_0x5c5272[_0x297a('0xe4')]=!![];ami[_0x297a('0xe9')](_0x297a('0xe2'),ut[_0x297a('0xe3')](_0x5c5272,_0x297a('0xe4')));_0x4c0322[_0x297a('0xc6')](_0x5c5272)[_0x297a('0xac')](loggerCatch(_0x297a('0xea')));if(_0x5c5272[_0x297a('0xeb')]+_0x5c5272[_0x297a('0xec')]+_0x5c5272['countnoanswerretry']+_0x5c5272[_0x297a('0xed')]+_0x5c5272[_0x297a('0xee')]+_0x5c5272[_0x297a('0xef')]+_0x5c5272[_0x297a('0xf0')]+_0x5c5272[_0x297a('0xf1')]>=_0x38be4f[_0x297a('0xf2')]){_0x4c0322[_0x297a('0xf3')](_0x5c5272,_0x2b31e1,_0x53b859,_0x297a('0xf4'));}else{if(_0x5c5272[_0x297a('0xf0')]>=_0x38be4f['dialMachineMaxRetry']){_0x4c0322[_0x297a('0xf5')](_0x5c5272,_0x2b31e1,_0x53b859,'reason\x2019\x20machine....');}else{_0x4c0322[_0x297a('0xbb')]({'active':![],'countmachineretry':_0x5c5272[_0x297a('0xf0')],'scheduledat':moment()[_0x297a('0xf6')](_0x38be4f[_0x297a('0xf7')],_0x297a('0xf8'))[_0x297a('0x76')](_0x297a('0xf9')),'ContactId':_0x5c5272[_0x297a('0xce')],'ListId':_0x5c5272[_0x297a('0xcf')],'VoiceQueueId':_0x5c5272[_0x297a('0xd1')]||undefined,'CampaignId':_0x5c5272[_0x297a('0xd2')]||undefined})[_0x297a('0xac')](loggerCatch(_0x297a('0xfa')));_0x2b31e1({'reschedule':0x1});}}});}if(_0x255ca9[_0x297a('0x79')]===_0x297a('0x7a')&&this[_0x297a('0x22')][_0x255ca9[_0x297a('0xaf')]][_0x297a('0xdc')]&&_0x251cc3[_0x297a('0xdd')]==='HANGUP'){delete this['uniqueId'][_0x251cc3['uniqueid']];this[_0x297a('0xae')](this[_0x297a('0x22')][_0x255ca9[_0x297a('0xaf')]]);_0x97e34=new Hangup(_0x255ca9,_0x251cc3);_0x97e34[_0x297a('0xa2')]=0x12;_0x97e34[_0x297a('0xa3')]='HangupInAMD';_0x97e34[_0x297a('0xe0')]='AMD';ami[_0x297a('0xe9')]('custom:amd',ut['buildObj'](_0x97e34,'amd'));this['saveInDb'](_0x97e34,'[syncHangupInAMDIvr][createHistory]',_0x297a('0xfb'));}if(_0x255ca9['type']==='ivr'&&this[_0x297a('0x22')][_0x255ca9[_0x297a('0xaf')]][_0x297a('0xdc')]&&_0x251cc3[_0x297a('0xdd')]==='MACHINE'){var _0x4c0322=this;return new BPromise(function(_0x35013c,_0x2d1615){delete _0x4c0322[_0x297a('0x29')][_0x251cc3[_0x297a('0xd8')]];_0x4c0322[_0x297a('0xae')](_0x4c0322[_0x297a('0x22')][_0x255ca9[_0x297a('0xaf')]]);_0x4c0322[_0x297a('0x22')][_0x255ca9['queue']]['outboundAnswerCallsDay']+=0x1;_0x4c0322['campaigns'][_0x255ca9['queue']][_0x297a('0x5d')]+=0x1;var _0x3a26ef=_0x4c0322[_0x297a('0x22')][_0x255ca9[_0x297a('0xaf')]];var _0x41219a=new Hangup(_0x255ca9,_0x251cc3);_0x41219a[_0x297a('0xa2')]=0x13;_0x41219a['statedesc']=_0x297a('0xe7');_0x41219a['membername']=_0x297a('0xe1');_0x41219a[_0x297a('0xf0')]+=0x1;_0x41219a[_0x297a('0xe8')]+=0x1;_0x41219a[_0x297a('0xe4')]=!![];ami['emit'](_0x297a('0xe2'),ut[_0x297a('0xe3')](_0x41219a,_0x297a('0xe4')));_0x4c0322[_0x297a('0xc6')](_0x41219a)[_0x297a('0xac')](loggerCatch(_0x297a('0xea')));if(_0x41219a['countbusyretry']+_0x41219a[_0x297a('0xec')]+_0x41219a['countnoanswerretry']+_0x41219a['countnosuchnumberretry']+_0x41219a[_0x297a('0xee')]+_0x41219a['countabandonedretry']+_0x41219a[_0x297a('0xf0')]+_0x41219a[_0x297a('0xf1')]>=_0x3a26ef[_0x297a('0xf2')]){_0x4c0322[_0x297a('0xf3')](_0x41219a,_0x35013c,_0x2d1615,_0x297a('0xf4'));}else{if(_0x41219a[_0x297a('0xf0')]>=_0x3a26ef[_0x297a('0xfc')]){_0x4c0322[_0x297a('0xf5')](_0x41219a,_0x35013c,_0x2d1615,_0x297a('0xfd'));}else{_0x4c0322[_0x297a('0xbb')]({'active':![],'countmachineretry':_0x41219a[_0x297a('0xf0')],'scheduledat':moment()[_0x297a('0xf6')](_0x3a26ef[_0x297a('0xf7')],'minutes')[_0x297a('0x76')](_0x297a('0xf9')),'ContactId':_0x41219a[_0x297a('0xce')],'ListId':_0x41219a[_0x297a('0xcf')],'VoiceQueueId':_0x41219a[_0x297a('0xd1')]||undefined,'CampaignId':_0x41219a[_0x297a('0xd2')]||undefined})[_0x297a('0xac')](loggerCatch(_0x297a('0xfa')));_0x35013c({'reschedule':0x1});}}});}}};Dialer[_0x297a('0x1c')][_0x297a('0x38')]=function(_0xac25a){var _0x2c7bbb=this['uniqueId'][_0xac25a[_0x297a('0xd8')]];var _0x108792=this;var _0x56f844;if(_0x2c7bbb&&_0x2c7bbb[_0x297a('0x79')]===_0x297a('0x7a')){delete this[_0x297a('0x29')][_0xac25a[_0x297a('0xd8')]];this['updateOriginated'](this[_0x297a('0x22')][_0x2c7bbb[_0x297a('0xaf')]]);this[_0x297a('0x22')][_0x2c7bbb[_0x297a('0xaf')]][_0x297a('0xfe')]+=0x1;_0x56f844=new Hangup(_0x2c7bbb,_0xac25a);this['createHistory'](_0x56f844)[_0x297a('0xac')](loggerCatch(_0x297a('0xff')));this['moveContactManagedDialer'](_0x56f844)[_0x297a('0xac')](loggerCatch(_0x297a('0x100')));}if(_0x2c7bbb&&_0x2c7bbb[_0x297a('0x79')]!==_0x297a('0x7a')&&isNotNull(this[_0x297a('0x21')][_0x2c7bbb[_0x297a('0xaf')]][_0x297a('0x101')])){delete this[_0x297a('0x29')][_0xac25a[_0x297a('0xd8')]];this[_0x297a('0xae')](this[_0x297a('0x21')][_0x2c7bbb['queue']]);this[_0x297a('0x21')][_0x2c7bbb['queue']][_0x297a('0x5e')]+=0x1;this[_0x297a('0x21')][_0x2c7bbb['queue']][_0x297a('0x5d')]+=0x1;_0x56f844=new Hangup(_0x2c7bbb,_0xac25a);_0x56f844[_0x297a('0xa2')]=0x10;_0x56f844[_0x297a('0xa3')]=_0x297a('0x102');_0x56f844[_0x297a('0xe0')]=_0x297a('0x103');this['createHistory'](_0x56f844)[_0x297a('0xac')](loggerCatch(_0x297a('0xff')));this[_0x297a('0xc5')](_0x56f844)[_0x297a('0xac')](loggerCatch(_0x297a('0x100')));}if(_0x2c7bbb&&_0x2c7bbb[_0x297a('0x79')]!==_0x297a('0x7a')&&!isNotNull(this[_0x297a('0x21')][_0x2c7bbb['queue']][_0x297a('0x101')])){delete this[_0x297a('0x29')][_0xac25a[_0x297a('0xd8')]];this[_0x297a('0xae')](this[_0x297a('0x21')][_0x2c7bbb[_0x297a('0xaf')]]);this[_0x297a('0x21')][_0x2c7bbb[_0x297a('0xaf')]]['outboundUnknownCallsDay']+=0x1;_0x56f844=new Hangup(_0x2c7bbb,_0xac25a);_0x56f844[_0x297a('0xa2')]=0xc;_0x56f844['statedesc']=_0xac25a[_0x297a('0x104')];_0x56f844[_0x297a('0xe0')]=_0x297a('0x105');this[_0x297a('0xc6')](_0x56f844)[_0x297a('0xac')](loggerCatch(_0x297a('0xff')));this[_0x297a('0xc5')](_0x56f844)[_0x297a('0xac')](loggerCatch(_0x297a('0x100')));}};Dialer[_0x297a('0x1c')][_0x297a('0x106')]=function(_0x47b5e8){var _0x4a6166=this['uniqueId'][_0x47b5e8['uniqueid']];var _0x3042dc=this;if(this[_0x297a('0x21')][_0x47b5e8[_0x297a('0xaf')]]){if(_0x4a6166&&_0x4a6166['type']!==_0x297a('0x7a')){delete this[_0x297a('0x29')][_0x47b5e8['uniqueid']];this[_0x297a('0x21')][_0x47b5e8[_0x297a('0xaf')]][_0x297a('0x5e')]+=0x1;var _0x2ab83e=new AgentComplete(_0x4a6166,_0x47b5e8);if(_0x47b5e8['reason']==='agent'){_0x2ab83e['agiafterat']=this[_0x297a('0x21')][_0x47b5e8['queue']]['dialQueueProject2']&&this[_0x297a('0x21')][_0x47b5e8['queue']][_0x297a('0x107')]?moment()[_0x297a('0x76')](_0x297a('0xf9')):undefined;}this[_0x297a('0xc6')](_0x2ab83e)[_0x297a('0xac')](loggerCatch(_0x297a('0x108')));this['moveContactManagedDialer'](_0x2ab83e)[_0x297a('0xac')](loggerCatch(_0x297a('0x109')));}}};Dialer[_0x297a('0x1c')][_0x297a('0x10a')]=function(_0x516da8){if(this[_0x297a('0x21')][_0x516da8[_0x297a('0xaf')]]){if(this[_0x297a('0x29')][_0x516da8[_0x297a('0xd8')]]&&this['uniqueId'][_0x516da8[_0x297a('0xd8')]]['type']!==_0x297a('0x7a')){this[_0x297a('0xae')](this[_0x297a('0x21')][_0x516da8[_0x297a('0xaf')]]);this[_0x297a('0x29')][_0x516da8[_0x297a('0xd8')]]['answertime']=moment()[_0x297a('0x76')]('YYYY-MM-DD\x20HH:mm:ss');}}};Dialer[_0x297a('0x1c')][_0x297a('0x10b')]=function(_0x48fb6d){this[_0x297a('0xc6')](_0x48fb6d)[_0x297a('0xac')](loggerCatch(_0x297a('0x108')));this[_0x297a('0xc5')](_0x48fb6d)[_0x297a('0xac')](loggerCatch(_0x297a('0x10c')));};Dialer['prototype']['syncQueueCallerAbandon']=function(_0x52e077){var _0x38582f=this[_0x297a('0x29')][_0x52e077['uniqueid']];var _0x4a33bf=this;if(this['voiceQueues'][_0x52e077[_0x297a('0xaf')]]){if(_0x38582f&&_0x38582f[_0x297a('0x79')]!=='ivr'){delete this[_0x297a('0x29')][_0x52e077['uniqueid']];this[_0x297a('0xae')](this['voiceQueues'][_0x52e077[_0x297a('0xaf')]]);_0x38582f[_0x297a('0x10d')]=moment()[_0x297a('0x76')](_0x297a('0xf9'));var _0x5e3ebb=new QueueCallerAbandon(_0x38582f,_0x52e077);if(getSeconds(_0x38582f['droptime'],_0x38582f[_0x297a('0x10e')])>=_0x38582f[_0x297a('0x10f')]){this['voiceQueues'][_0x52e077[_0x297a('0xaf')]][_0x297a('0x69')]+=0x1;this[_0x297a('0x21')][_0x52e077['queue']][_0x297a('0x110')]+=0x1;this[_0x297a('0x21')][_0x52e077[_0x297a('0xaf')]][_0x297a('0x111')]+=0x1;_0x5e3ebb['state']=0xa;_0x5e3ebb[_0x297a('0xa3')]='Drop';_0x5e3ebb['dropreason']=_0x297a('0x112');_0x5e3ebb['agiafterat']=this[_0x297a('0x21')][_0x52e077['queue']]['dialQueueProject2']?moment()[_0x297a('0x76')]('YYYY-MM-DD\x20HH:mm:ss'):undefined;_0x5e3ebb[_0x297a('0xee')]+=0x1;_0x5e3ebb[_0x297a('0xe8')]+=0x1;if(_0x5e3ebb[_0x297a('0xee')]>=this['voiceQueues'][_0x52e077[_0x297a('0xaf')]][_0x297a('0x113')]){this[_0x297a('0x10b')](_0x5e3ebb);}else{this[_0x297a('0xbb')]({'active':![],'countdropretry':_0x5e3ebb[_0x297a('0xee')],'scheduledat':moment()[_0x297a('0xf6')](this[_0x297a('0x21')][_0x52e077[_0x297a('0xaf')]][_0x297a('0x114')],_0x297a('0xf8'))['format']('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x38582f['ContactId'],'ListId':_0x38582f[_0x297a('0xcf')],'VoiceQueueId':_0x38582f[_0x297a('0xd1')]||undefined,'CampaignId':_0x38582f[_0x297a('0xd2')]||undefined})[_0x297a('0xac')](loggerCatch(_0x297a('0x115')));var _0x391220=new History(_0x5e3ebb);_0x391220[_0x297a('0xa2')]=0xa;_0x391220[_0x297a('0xa3')]=_0x297a('0x116');_0x391220[_0x297a('0xa5')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x391220[_0x297a('0xa4')]=_0x391220[_0x297a('0xa5')];_0x391220[_0x297a('0x117')]=_0x5e3ebb[_0x297a('0x117')];_0x391220[_0x297a('0x118')]=_0x5e3ebb[_0x297a('0x118')];this[_0x297a('0xc6')](_0x391220)[_0x297a('0xac')](loggerCatch(_0x297a('0x119')));}}else{this[_0x297a('0x21')][_0x52e077[_0x297a('0xaf')]][_0x297a('0x68')]+=0x1;this[_0x297a('0x21')][_0x52e077['queue']][_0x297a('0x11a')]+=0x1;_0x5e3ebb[_0x297a('0xa2')]=0xb;_0x5e3ebb[_0x297a('0xa3')]='Abandoned';_0x5e3ebb[_0x297a('0x11b')]='CALLEREXIT';_0x5e3ebb[_0x297a('0xef')]+=0x1;_0x5e3ebb[_0x297a('0xe8')]+=0x1;if(_0x5e3ebb[_0x297a('0xef')]>=this['voiceQueues'][_0x52e077[_0x297a('0xaf')]][_0x297a('0x11c')]){this[_0x297a('0x10b')](_0x5e3ebb);}else{this['rescheduleContact']({'active':![],'countabandonedretry':_0x5e3ebb['countabandonedretry'],'scheduledat':moment()[_0x297a('0xf6')](this[_0x297a('0x21')][_0x52e077[_0x297a('0xaf')]][_0x297a('0x11d')],_0x297a('0xf8'))['format'](_0x297a('0xf9')),'ContactId':_0x38582f[_0x297a('0xce')],'ListId':_0x38582f[_0x297a('0xcf')],'VoiceQueueId':_0x38582f['VoiceQueueId']||undefined,'CampaignId':_0x38582f['CampaignId']||undefined})['catch'](loggerCatch('[rescheduleContact][Abandoned]'));var _0x391220=new History(_0x5e3ebb);_0x391220['state']=0xb;_0x391220[_0x297a('0xa3')]='Abandoned';_0x391220['starttime']=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x391220[_0x297a('0xa4')]=_0x391220['starttime'];_0x391220[_0x297a('0x117')]=_0x5e3ebb[_0x297a('0x117')];_0x391220['calleridnum']=_0x5e3ebb[_0x297a('0x118')];this['createHistory'](_0x391220)[_0x297a('0xac')](loggerCatch(_0x297a('0x11e')));}}}}};Dialer[_0x297a('0x1c')][_0x297a('0x3a')]=function(_0x1d1bae){if(this[_0x297a('0x27')][_0x1d1bae[_0x297a('0xd8')]]){this[_0x297a('0x27')][_0x1d1bae[_0x297a('0xd8')]][_0x297a('0xab')]=_0x1d1bae[_0x297a('0xab')];}if(this[_0x297a('0x29')][_0x1d1bae['uniqueid']]){this[_0x297a('0x29')][_0x1d1bae[_0x297a('0xd8')]][_0x297a('0xab')]=_0x1d1bae['channel'];}};Dialer[_0x297a('0x1c')][_0x297a('0x3e')]=function(_0x2cabfb){if(strategy[this[_0x297a('0x21')][this[_0x297a('0x27')][_0x2cabfb[_0x297a('0x11f')]][_0x297a('0xaf')]][_0x297a('0x120')]]===_0x297a('0x121')){if(this['actions'][_0x2cabfb[_0x297a('0x11f')]]&&_[_0x297a('0xa9')](this[_0x297a('0x27')][_0x2cabfb[_0x297a('0x11f')]]['locked'])&&_0x2cabfb[_0x297a('0xaa')]==='1'&&_0x2cabfb['paused']==='0'){if(this[_0x297a('0x23')][_0x2cabfb[_0x297a('0x122')]]){if(!this[_0x297a('0x23')][_0x2cabfb['stateinterface']]['locked']){this['agents'][_0x2cabfb['stateinterface']][_0x297a('0x123')]=!![];this[_0x297a('0x27')][_0x2cabfb[_0x297a('0x11f')]][_0x297a('0x123')]=!![];this[_0x297a('0x27')][_0x2cabfb['actionid']][_0x297a('0x122')]=_0x2cabfb[_0x297a('0x122')];}}}}else if((strategy[this[_0x297a('0x21')][this[_0x297a('0x27')][_0x2cabfb[_0x297a('0x11f')]]['queue']]['strategy']]||_0x297a('0x124'))===_0x297a('0x124')){if(this[_0x297a('0x27')][_0x2cabfb[_0x297a('0x11f')]]){if(this[_0x297a('0x23')][_0x2cabfb[_0x297a('0x122')]]){this[_0x297a('0x27')][_0x2cabfb['actionid']][_0x297a('0x122')]=_0x2cabfb[_0x297a('0x122')];if(_[_0x297a('0xa9')](this[_0x297a('0x2e')][this['actions'][_0x2cabfb[_0x297a('0x11f')]][_0x297a('0xaf')]])){this['queueBooked'][this[_0x297a('0x27')][_0x2cabfb[_0x297a('0x11f')]][_0x297a('0xaf')]]=[];}this[_0x297a('0x2e')][this[_0x297a('0x27')][_0x2cabfb['actionid']][_0x297a('0xaf')]]['push'](_['merge'](_[_0x297a('0x125')](this[_0x297a('0x27')][_0x2cabfb['actionid']],[_0x297a('0x126'),_0x297a('0x122')]),{'status':_0x2cabfb[_0x297a('0xaa')],'paused':_0x2cabfb[_0x297a('0x127')]}));}}}};function unlockQueueStatus(_0x53dc84,_0x56eab9){setTimeout(function(){if(_[_0x297a('0x41')](_0x53dc84[_0x297a('0x128')])){loggerBooked[_0x297a('0x93')](_0x297a('0x129'),_0x56eab9);}_0x53dc84[_0x297a('0x128')]=!![];loggerBooked[_0x297a('0x7f')](_0x297a('0x12a'),_0x56eab9,JSON[_0x297a('0x75')](_['pick'](_0x53dc84,[_0x297a('0x45'),_0x297a('0x128')])));},0x1f3);}Dialer['prototype'][_0x297a('0x40')]=function(_0x51165b){var _0x562148=this;var _0x4697ba=_0x562148['voiceQueues'][_0x562148[_0x297a('0x27')][_0x51165b[_0x297a('0x11f')]][_0x297a('0xaf')]];if(strategy[this['voiceQueues'][this['actions'][_0x51165b[_0x297a('0x11f')]][_0x297a('0xaf')]]['strategy']]===_0x297a('0x121')){if(this[_0x297a('0x27')][_0x51165b['actionid']]&&this[_0x297a('0x27')][_0x51165b[_0x297a('0x11f')]][_0x297a('0x122')]){this[_0x297a('0x20')][_0x297a('0x12b')](this[_0x297a('0x27')][_0x51165b[_0x297a('0x11f')]][_0x297a('0x126')],this[_0x297a('0x27')][_0x51165b[_0x297a('0x11f')]]['stateinterface'])[_0x297a('0xac')](function(_0x577365){logger[_0x297a('0x93')](_0x297a('0x12c'),util[_0x297a('0x94')](_0x577365,{'showHidden':![],'depth':null}));})[_0x297a('0x1e')](function(){_0x562148[_0x297a('0xae')](_0x562148[_0x297a('0x21')][_0x562148['actions'][_0x51165b[_0x297a('0x11f')]]['queue']]);_0x562148[_0x297a('0x23')][_0x562148[_0x297a('0x27')][_0x51165b[_0x297a('0x11f')]][_0x297a('0x122')]][_0x297a('0x123')]=![];delete _0x562148['actions'][_0x51165b[_0x297a('0x11f')]];unlockQueueStatus(_0x4697ba);});}else{this['updateOriginated'](this[_0x297a('0x21')][this[_0x297a('0x27')][_0x51165b[_0x297a('0x11f')]]['queue']]);this[_0x297a('0xbb')]({'active':![],'ContactId':this[_0x297a('0x27')][_0x51165b[_0x297a('0x11f')]]['ContactId'],'ListId':this['actions'][_0x51165b[_0x297a('0x11f')]][_0x297a('0xcf')],'VoiceQueueId':this[_0x297a('0x27')][_0x51165b[_0x297a('0x11f')]][_0x297a('0xd1')]||undefined,'CampaignId':this[_0x297a('0x27')][_0x51165b[_0x297a('0x11f')]][_0x297a('0xd2')]||undefined})[_0x297a('0xac')](loggerCatch('[unlock][syncQueueStatusComplete]'));delete this[_0x297a('0x27')][_0x51165b['actionid']];unlockQueueStatus(_0x4697ba);}}else if((strategy[this[_0x297a('0x21')][this[_0x297a('0x27')][_0x51165b[_0x297a('0x11f')]][_0x297a('0xaf')]][_0x297a('0x120')]]||_0x297a('0x124'))===_0x297a('0x124')){var _0x4a1c87;if(this['actions'][_0x51165b[_0x297a('0x11f')]]&&!_[_0x297a('0x7d')](this[_0x297a('0x2e')][this[_0x297a('0x27')][_0x51165b['actionid']]['queue']])){if(this[_0x297a('0x2f')][_0x562148[_0x297a('0x27')][_0x51165b[_0x297a('0x11f')]][_0x297a('0xaf')]]){this[_0x297a('0x2f')][_0x562148[_0x297a('0x27')][_0x51165b[_0x297a('0x11f')]][_0x297a('0xaf')]]=this['queueBookedRR'][this['actions'][_0x51165b[_0x297a('0x11f')]][_0x297a('0xaf')]]?this['queueBookedRR'][this[_0x297a('0x27')][_0x51165b[_0x297a('0x11f')]][_0x297a('0xaf')]]:this[_0x297a('0x2e')][this[_0x297a('0x27')][_0x51165b[_0x297a('0x11f')]][_0x297a('0xaf')]]?this[_0x297a('0x2e')][this[_0x297a('0x27')][_0x51165b[_0x297a('0x11f')]][_0x297a('0xaf')]][_0x297a('0x12d')]||0x0:0x0;}this['queueBooked'][this[_0x297a('0x27')][_0x51165b[_0x297a('0x11f')]][_0x297a('0xaf')]][_0x297a('0x12d')]=this[_0x297a('0x2f')][this['actions'][_0x51165b[_0x297a('0x11f')]][_0x297a('0xaf')]];for(var _0x4ec945=0x0;_0x4ec945<this['queueBooked'][this[_0x297a('0x27')][_0x51165b[_0x297a('0x11f')]][_0x297a('0xaf')]][_0x297a('0x96')];_0x4ec945+=0x1){_0x4a1c87=rr(this[_0x297a('0x2e')][this[_0x297a('0x27')][_0x51165b[_0x297a('0x11f')]][_0x297a('0xaf')]]);this['queueBookedRR'][_0x562148[_0x297a('0x27')][_0x51165b['actionid']][_0x297a('0xaf')]]=this[_0x297a('0x2e')][this[_0x297a('0x27')][_0x51165b[_0x297a('0x11f')]][_0x297a('0xaf')]][_0x297a('0x12d')];if(_0x4a1c87[_0x297a('0xaa')]==='1'&&_0x4a1c87[_0x297a('0x127')]==='0'){break;}}if(!_[_0x297a('0xa9')](_0x4a1c87)){this[_0x297a('0x23')][_0x4a1c87[_0x297a('0x122')]][_0x297a('0x12e')]=_[_0x297a('0x41')](this[_0x297a('0x23')][_0x4a1c87[_0x297a('0x122')]]['unlockRR'])?!![]:this[_0x297a('0x23')][_0x4a1c87[_0x297a('0x122')]][_0x297a('0x12e')];}loggerBooked[_0x297a('0x7f')]('[booked][RR]',_0x51165b[_0x297a('0x11f')],_0x297a('0x12f'),JSON[_0x297a('0x75')](_['pick'](this[_0x297a('0x23')][_0x4a1c87['stateinterface']],[_0x297a('0x45'),'unlockRR'])),_0x297a('0x130'),JSON[_0x297a('0x75')](_0x4a1c87[_0x297a('0x126')]));if(!_[_0x297a('0xa9')](_0x4a1c87)&&_0x4a1c87[_0x297a('0xaa')]==='1'&&_0x4a1c87['paused']==='0'&&this[_0x297a('0x23')][_0x4a1c87['stateinterface']][_0x297a('0x12e')]){this[_0x297a('0x23')][_0x4a1c87[_0x297a('0x122')]][_0x297a('0x12e')]=![];this[_0x297a('0x2e')][_0x562148[_0x297a('0x27')][_0x51165b[_0x297a('0x11f')]]['queue']]=[];this[_0x297a('0x20')][_0x297a('0x12b')](_0x4a1c87['idHopper'],_0x4a1c87[_0x297a('0x122')])[_0x297a('0xac')](function(_0x732fd2){logger['error'](_0x297a('0x12c'),util['inspect'](_0x732fd2,{'showHidden':![],'depth':null}));})[_0x297a('0x1e')](function(){_0x562148[_0x297a('0xae')](_0x562148[_0x297a('0x21')][_0x562148[_0x297a('0x27')][_0x51165b[_0x297a('0x11f')]]['queue']]);setTimeout(function(){_0x562148[_0x297a('0x23')][_0x4a1c87[_0x297a('0x122')]][_0x297a('0x12e')]=!![];loggerBooked[_0x297a('0x7f')]('[booked][RR][finaly]',_0x51165b['actionid'],'Agent:\x20',JSON[_0x297a('0x75')](_[_0x297a('0x125')](_0x562148['agents'][_0x4a1c87['stateinterface']],[_0x297a('0x45'),'unlockRR'])),_0x297a('0x130'),JSON[_0x297a('0x75')](_0x4a1c87[_0x297a('0x126')]));},0xc7);delete _0x562148[_0x297a('0x27')][_0x51165b[_0x297a('0x11f')]];unlockQueueStatus(_0x4697ba,_0x51165b['actionid']);});}else{loggerBooked[_0x297a('0x7f')]('[booked][unlock]');this['updateOriginated'](this[_0x297a('0x21')][this[_0x297a('0x27')][_0x51165b[_0x297a('0x11f')]]['queue']]);this[_0x297a('0xbb')]({'active':![],'ContactId':this['actions'][_0x51165b[_0x297a('0x11f')]][_0x297a('0xce')],'ListId':this['actions'][_0x51165b[_0x297a('0x11f')]][_0x297a('0xcf')],'VoiceQueueId':this[_0x297a('0x27')][_0x51165b[_0x297a('0x11f')]][_0x297a('0xd1')]||undefined,'CampaignId':this[_0x297a('0x27')][_0x51165b['actionid']]['CampaignId']||undefined})[_0x297a('0xac')](loggerCatch(_0x297a('0x131')));delete this[_0x297a('0x27')][_0x51165b['actionid']];unlockQueueStatus(_0x4697ba);}}else{loggerBooked['info'](_0x297a('0x132'));this[_0x297a('0xae')](this[_0x297a('0x21')][this['actions'][_0x51165b[_0x297a('0x11f')]][_0x297a('0xaf')]]);this[_0x297a('0xbb')]({'active':![],'ContactId':this[_0x297a('0x27')][_0x51165b['actionid']][_0x297a('0xce')],'ListId':this[_0x297a('0x27')][_0x51165b[_0x297a('0x11f')]][_0x297a('0xcf')],'VoiceQueueId':this[_0x297a('0x27')][_0x51165b[_0x297a('0x11f')]][_0x297a('0xd1')]||undefined,'CampaignId':this['actions'][_0x51165b[_0x297a('0x11f')]][_0x297a('0xd2')]||undefined})['catch'](loggerCatch(_0x297a('0x133')));delete this[_0x297a('0x27')][_0x51165b[_0x297a('0x11f')]];unlockQueueStatus(_0x4697ba);}}else{loggerBooked['info'](_0x297a('0x134'));this[_0x297a('0xae')](this['voiceQueues'][this[_0x297a('0x27')][_0x51165b[_0x297a('0x11f')]]['queue']]);this[_0x297a('0xbb')]({'active':![],'ContactId':this[_0x297a('0x27')][_0x51165b[_0x297a('0x11f')]][_0x297a('0xce')],'ListId':this[_0x297a('0x27')][_0x51165b[_0x297a('0x11f')]][_0x297a('0xcf')],'VoiceQueueId':this[_0x297a('0x27')][_0x51165b[_0x297a('0x11f')]][_0x297a('0xd1')]||undefined,'CampaignId':this['actions'][_0x51165b[_0x297a('0x11f')]]['CampaignId']||undefined})[_0x297a('0xac')](loggerCatch('[unlock3][syncQueueStatusComplete]'));delete this[_0x297a('0x27')][_0x51165b[_0x297a('0x11f')]];unlockQueueStatus(_0x4697ba);}};Dialer[_0x297a('0x1c')][_0x297a('0x135')]=function(){var _0xcda662=this;setInterval(function(){_0xcda662['syncCampaigns']();},0x3e8);};Dialer['prototype'][_0x297a('0x136')]=function(_0x5b71da){var _0x218f41=this;return function(){if(!_0x218f41[_0x297a('0xd5')](_0x5b71da[_0x297a('0x73')])){if(!_0x218f41[_0x297a('0xd5')](_0x5b71da['TrunkBackup'])){_0x5b71da['message']='TRUNK_IS_NOT_REACHABLE';throw _0x5b71da['name']+_0x297a('0x137');}}};};Dialer[_0x297a('0x1c')][_0x297a('0x138')]=function(_0x3b579d,_0x6f330f,_0x4ba053,_0x3995d8){var _0x4be76c=this;return function(){var _0x185ea9=!![];return _0x4be76c[_0x297a('0x139')](_0x3b579d,_0x6f330f,_0x4ba053,_0x3995d8,_0x185ea9);};};Dialer[_0x297a('0x1c')][_0x297a('0x13a')]=function(_0x20bba0,_0x4564a2,_0x463dc3,_0x2e4ff7){var _0x35f10e=this;return function(){var _0x371605=![];return _0x35f10e['ifTime'](_0x20bba0[_0x297a('0x4a')],_0x4564a2,_0x463dc3,_0x2e4ff7,_0x371605);};};Dialer[_0x297a('0x1c')]['ifTime']=function(_0x4fb6a4,_0x1643b5,_0xacb12c,_0x1b60b8,_0x1c1553){var _0xaf9a80=[];return new BPromise(function(_0x4ee3b3,_0x3cd72d){if(!isNotNull(_0x4fb6a4)){_0x1b60b8[_0x297a('0x42')]=_0x297a('0x48');return _0x3cd72d(msgResponse(_0x297a('0x139'),_0x297a('0x13b'),_0xacb12c+_0x297a('0x13c')));}if(_['isEmpty'](_0x4fb6a4)){_0x1b60b8[_0x297a('0x42')]=_0x297a('0x13d');return _0x3cd72d(msgResponse(_0x297a('0x139'),'Failure',_0xacb12c+_0x297a('0x13e')));}if(_0x1643b5&&_[_0x297a('0x41')](config[_0x297a('0x13f')][_0x1643b5])){_0x1b60b8[_0x297a('0x42')]='TIMEZONE_UNKNOW';return _0x3cd72d(msgResponse(_0x297a('0x139'),_0x297a('0x13b'),_0xacb12c+'\x20Timezone\x20unknow\x20'+_0x1643b5));}if(_[_0x297a('0x140')](_0x4fb6a4)){for(var _0x17e1b3=0x0;_0x17e1b3<_0x4fb6a4[_0x297a('0x96')];_0x17e1b3+=0x1){_0xaf9a80[_0x297a('0x141')](ami['Action']({'action':'command','command':util[_0x297a('0x76')](_0x297a('0x142'),_0x4fb6a4[_0x17e1b3][_0x297a('0x143')],!_[_0x297a('0x41')](config[_0x297a('0x13f')][_0x1643b5])?_0x1643b5:'')})[_0x297a('0xb5')](function(_0x2a5d68){return _0x2a5d68[_0x297a('0x144')]['indexOf'](_0x297a('0x145'))>=0x0;})[_0x297a('0xac')](myreject(_0x3cd72d)));}}else{_0xaf9a80[_0x297a('0x141')](ami[_0x297a('0x146')]({'action':_0x297a('0x147'),'command':util[_0x297a('0x76')](_0x297a('0x142'),_0x4fb6a4,!_[_0x297a('0x41')](config[_0x297a('0x13f')][_0x1643b5])?_0x1643b5:'')})[_0x297a('0xb5')](function(_0x53d500){return _0x53d500[_0x297a('0x144')][_0x297a('0x148')](_0x297a('0x145'))>=0x0;})[_0x297a('0xac')](myreject(_0x3cd72d)));}BPromise[_0x297a('0x149')](_0xaf9a80)[_0x297a('0xb5')](function(_0x5cc8f9){var _0x19b928=_[_0x297a('0x14a')](_0x5cc8f9);if(_0x19b928){return _0x4ee3b3(_0x19b928);}else{_0x1b60b8[_0x297a('0x42')]=_0x1c1553?_0x297a('0x14b'):_0x297a('0x14c');return _0x3cd72d(msgResponse(_0x297a('0x14d'),_0x297a('0x13b'),_0x297a('0x14e')+_0x1c1553+'\x20'+_0xacb12c+_0x297a('0x14f')+util['inspect'](_0x4fb6a4,{'showHidden':![],'depth':null})+_0x297a('0x150')+_0x1643b5));}})[_0x297a('0xac')](function(_0x171011){return _0x3cd72d(msgResponse(_0x297a('0x139'),_0x297a('0x13b'),JSON[_0x297a('0x75')](_0x171011)));});});};Dialer['prototype'][_0x297a('0x151')]=function(_0x27c810){var _0x23ff09=this;return function(){switch(_0x27c810[_0x297a('0x59')]){case _0x297a('0x152'):freeVariablesPredictive(_0x27c810);_0x23ff09['handlePower'](_0x27c810,0x1);break;case _0x297a('0x153'):freeVariablesPredictive(_0x27c810);_0x23ff09[_0x297a('0x154')](_0x27c810,_0x27c810[_0x297a('0x155')]);break;case _0x297a('0xa'):_0x23ff09['predictive'](_0x27c810);break;case _0x297a('0x9'):freeVariablesPredictive(_0x27c810);_0x23ff09[_0x297a('0x154')](_0x27c810,0x1);break;default:freeVariablesPredictive(_0x27c810);logger['error'](_0x297a('0x156'),_0x27c810[_0x297a('0x45')],_0x297a('0x157'));}};};Dialer[_0x297a('0x1c')]['launchHandleIvr']=function(_0x2dcae7){var _0x47c1aa=this;return function(){_0x47c1aa['handleIvr'](_0x2dcae7);};};Dialer['prototype'][_0x297a('0xc')]=function(_0x48c1b3){var _0x278e60=this;if(isNotPreview(_0x48c1b3[_0x297a('0x59')])){if(isVoiceQueueOutbound(_0x48c1b3[_0x297a('0x79')])&&isActive(_0x48c1b3[_0x297a('0x58')])){_0x48c1b3[_0x297a('0x158')]=!![];BPromise[_0x297a('0xb1')]()[_0x297a('0xb5')](checkIsLoggedIn(_0x48c1b3,_0x48c1b3[_0x297a('0x52')]))[_0x297a('0xb5')](checkIsActive(_0x48c1b3,_0x48c1b3[_0x297a('0x58')]))[_0x297a('0xb5')](checkInterval(_0x48c1b3))['then'](_0x278e60['checkIsTrunkReachable'](_0x48c1b3))['then'](_0x278e60[_0x297a('0x138')](_0x48c1b3['dialGlobalInterval'],_0x48c1b3[_0x297a('0x159')],_0x48c1b3[_0x297a('0x45')],_0x48c1b3))[_0x297a('0xb5')](_0x278e60[_0x297a('0x13a')](_0x48c1b3[_0x297a('0x47')],_0x48c1b3['dialTimezone'],_0x48c1b3['name'],_0x48c1b3))[_0x297a('0xb5')](_0x278e60[_0x297a('0x151')](_0x48c1b3))[_0x297a('0xac')](loggerCatchQueueSummary(_0x297a('0x15a'),_0x48c1b3));}else{notSendMessagesQueue(_0x48c1b3);}}else{freeVariablesPredictive(_0x48c1b3);}};Dialer[_0x297a('0x1c')]['syncCampaigns']=function(){var _0x22275b=this;var _0x4a8b32;for(var _0x104291 in this[_0x297a('0x22')]){if(typeof this[_0x297a('0x22')][_0x104291]!==_0x297a('0x97')){_0x4a8b32=this[_0x297a('0x22')][_0x104291];if(isCampaignIvr(_0x4a8b32['type'])&&isActive(_0x4a8b32[_0x297a('0x74')])){_0x4a8b32['sendMessageOneNotActive']=!![];BPromise[_0x297a('0xb1')]()[_0x297a('0xb5')](checkIsActive(_0x4a8b32,_0x4a8b32['active']))[_0x297a('0xb5')](checkInterval(_0x4a8b32))[_0x297a('0xb5')](_0x22275b[_0x297a('0x136')](_0x4a8b32))['then'](_0x22275b['checkIfTime'](_0x4a8b32['dialGlobalInterval'],_0x4a8b32[_0x297a('0x159')],_0x4a8b32[_0x297a('0x45')],_0x4a8b32))[_0x297a('0xb5')](_0x22275b[_0x297a('0x13a')](_0x4a8b32[_0x297a('0x47')],_0x4a8b32['dialTimezone'],_0x4a8b32['name'],_0x4a8b32))[_0x297a('0xb5')](_0x22275b['launchHandleIvr'](_0x4a8b32))[_0x297a('0xac')](loggerCatchQueueSummary(_0x297a('0x15b'),_0x4a8b32));}else{notSendMessagesCampaign(_0x4a8b32);}}}};function getCallerIdRandom(_0x259acf,_0x51030f){var _0x5c117a;var _0x3c4189;var _0x4054b9;if(_0x51030f<=0x0){_0x51030f=0x1;}_0x5c117a=new RegExp(_0x297a('0x15c')+_0x51030f+'}$');_0x3c4189=Math['pow'](0xa,_0x51030f-0x1);_0x4054b9=Math[_0x297a('0x15d')](0xa,_0x51030f)-0x1;return util[_0x297a('0x76')]('%s',_[_0x297a('0x15e')](_0x259acf,_0x5c117a,_[_0x297a('0x15f')](_0x3c4189,_0x4054b9)));}function extractCalleridName(_0x3ba4b9){var _0x2bb9fc=_0x3ba4b9['match'](/"(.*?)"/);return _0x2bb9fc?_0x2bb9fc[0x1]:_0x3ba4b9;}function extractCalleridNumber(_0x402fd3){var _0x227b89=_0x402fd3[_0x297a('0x160')](/<(.*?)>/);return _0x227b89?_0x227b89[0x1]:_0x402fd3;}Dialer['prototype'][_0x297a('0x161')]=function(_0x1b7032,_0x4790d0){var _0x55a6ad=this;var _0x35f056=uuid['v4']();this[_0x297a('0x27')][_0x35f056]=new Action(_0x1b7032,_0x4790d0,_0x35f056);return new BPromise(function(_0x35c23c,_0xc0b7fd){if(_[_0x297a('0x41')](_0x1b7032)&&typeof _0x1b7032!==_0x297a('0x162')){return _0xc0b7fd(msgResponse(_0x297a('0x163'),_0x297a('0x13b'),_0x297a('0x164')));}if(_[_0x297a('0x41')](_0x4790d0[_0x297a('0x165')][_0x297a('0x166')])||_0x4790d0['Contact'][_0x297a('0x166')]===null){return _0xc0b7fd(msgResponse(_0x297a('0x163'),'Failure','contact\x20is\x20undefine'));}var _0xe4976={'XMD-CALLERID':_0x55a6ad[_0x297a('0x27')][_0x35f056][_0x297a('0x167')](),'XMD-AGI':_0x1b7032['dialQueueProject']?util[_0x297a('0x76')]('\x22agi://%s/square,%s\x22',ipAgi,_0x1b7032[_0x297a('0x101')]):_0x297a('0x168'),'XMD-AGIAFTER':_0x1b7032['dialQueueProject2']?util['format']('\x22agi://%s/square,%s\x22',ipAgi,_0x1b7032['dialQueueProject2']):_0x297a('0x168'),'XMD-QUEUE':_0x1b7032[_0x297a('0x79')]===_0x297a('0x50')?util['format']('\x22%s,%s%s,,,%s\x22',_0x1b7032[_0x297a('0x45')],_0x1b7032['dialQueueOptions']||'',_0x1b7032[_0x297a('0x107')]?'c':'',_0x1b7032['dialQueueTimeout']||0x3):'NONE','XMD-CONTACTID':_0x4790d0[_0x297a('0xce')],'XMD-CDRTYPE':_0x297a('0x169'),'CALLERID(all)':_0x55a6ad[_0x297a('0x27')][_0x35f056][_0x297a('0x167')](),'XMD-AMD':_0x1b7032['dialAMDActive']?_0x297a('0x16a'):'NONE','XMD-DESTINATION':'xcally-motion-dialer'};if(_0x1b7032[_0x297a('0xdc')]){_0xe4976[_0x297a('0x16b')]=_0x1b7032['dialAMDInitialSilence']||0x9c4;_0xe4976['XMD-AMDGREETING']=_0x1b7032[_0x297a('0x16c')]||0x5dc;_0xe4976[_0x297a('0x16d')]=_0x1b7032[_0x297a('0x16e')]||0x320;_0xe4976[_0x297a('0x16f')]=_0x1b7032[_0x297a('0x170')]||0x1388;_0xe4976[_0x297a('0x171')]=_0x1b7032[_0x297a('0x172')]||0x64;_0xe4976[_0x297a('0x173')]=_0x1b7032[_0x297a('0x174')]||0x32;_0xe4976['XMD-AMDMAXIMUMNUMBEROFWORDS']=_0x1b7032[_0x297a('0x175')]||0x3;_0xe4976[_0x297a('0x176')]=_0x1b7032[_0x297a('0x177')]||0x100;_0xe4976['XMD-AMDMAXIMUMWORDLENGTH']=_0x1b7032[_0x297a('0x178')]||0x1388;}if(_0x1b7032[_0x297a('0x79')]==='outbound'){_0xe4976['XMD-VOICEQUEUEID']=_0x4790d0[_0x297a('0xd1')];}else{_0xe4976['XMD-CAMPAIGNID']=_0x4790d0[_0x297a('0xd2')];}for(var _0x4b97ef in _0x4790d0[_0x297a('0x165')]){if(typeof _0x4790d0['Contact'][_0x4b97ef]!==_0x297a('0x97')){if(isNotNull(_0x4790d0['Contact'][_0x4b97ef])&&_0x4b97ef!=='id'&&_0x4b97ef!==_0x297a('0x179')&&_0x4b97ef!==_0x297a('0x17a')&&_0x4b97ef!=='updatedAt'){_0xe4976[util[_0x297a('0x76')](_0x297a('0x17b'),'XMD-',_[_0x297a('0x17c')](_0x4b97ef))]=_0x4790d0[_0x297a('0x165')][_0x4b97ef];}}}var _0x426fd8=_0x55a6ad['isTrunkReachable'](_0x1b7032[_0x297a('0x73')])?getCallerId(_0x1b7032[_0x297a('0x73')][_0x297a('0x17d')],_0x1b7032['dialOriginateCallerIdName'],_0x1b7032[_0x297a('0x17e')]>0x0?getCallerIdRandom(_0x1b7032[_0x297a('0x17f')],_0x1b7032[_0x297a('0x17e')]):_0x1b7032['dialOriginateCallerIdNumber']):getCallerId(_[_0x297a('0xa9')](_0x1b7032[_0x297a('0x180')])?_0x1b7032[_0x297a('0x73')][_0x297a('0x17d')]:_0x1b7032['TrunkBackup'][_0x297a('0x17d')],_0x1b7032['dialOriginateCallerIdName'],_0x1b7032['dialRandomLastDigitCallerIdNumber']>0x0?getCallerIdRandom(_0x1b7032[_0x297a('0x17f')],_0x1b7032[_0x297a('0x17e')]):_0x1b7032[_0x297a('0x17f')]);if(_0x426fd8){_0xe4976[_0x297a('0x181')]=_0x55a6ad[_0x297a('0x27')][_0x35f056][_0x297a('0x182')]=extractCalleridName(_0x426fd8);_0xe4976[_0x297a('0x183')]=_0x55a6ad[_0x297a('0x27')][_0x35f056]['originatecalleridnum']=extractCalleridNumber(_0x426fd8);}return ami['Action']({'actionid':_0x35f056,'action':_0x297a('0x163'),'channel':_0x55a6ad[_0x297a('0xd5')](_0x1b7032[_0x297a('0x73')])?util[_0x297a('0x76')](_0x297a('0x184'),_0x1b7032['Trunk'][_0x297a('0x45')],isNotNull(_0x1b7032['dialPrefix'])?_0x1b7032['dialPrefix'][_0x297a('0x185')]()||'':'',_0x1b7032[_0x297a('0x186')]>0x0?_0x4790d0[_0x297a('0x165')][_0x297a('0x166')][_0x297a('0x187')](_0x1b7032[_0x297a('0x186')]):_0x4790d0[_0x297a('0x165')][_0x297a('0x166')]):util[_0x297a('0x76')]('SIP/%s/%s%s',_[_0x297a('0xa9')](_0x1b7032[_0x297a('0x180')])?_0x1b7032[_0x297a('0x73')][_0x297a('0x45')]:_0x1b7032['TrunkBackup'][_0x297a('0x45')],isNotNull(_0x1b7032[_0x297a('0x5c')])?_0x1b7032[_0x297a('0x5c')]['trim']()||'':'',_0x1b7032[_0x297a('0x186')]>0x0?_0x4790d0[_0x297a('0x165')][_0x297a('0x166')][_0x297a('0x187')](_0x1b7032[_0x297a('0x186')]):_0x4790d0[_0x297a('0x165')][_0x297a('0x166')]),'callerid':_0x426fd8,'Exten':'xcally-motion-dialer','Context':_0x297a('0x188'),'Priority':'1','variable':_0xe4976,'timeout':(_0x1b7032[_0x297a('0x5b')]||0x1e)*0x3e8,'async':!![],'channelid':_0x35f056})[_0x297a('0xb5')](function(_0x5011a7){return _0x35c23c(_0x5011a7);})[_0x297a('0xac')](function(_0x5af4f2){_0x1b7032[_0x297a('0x63')]+=0x1;var _0x27fa51=new History(_0x55a6ad[_0x297a('0x27')][_0x35f056]);logger[_0x297a('0x93')](util['format'](_0x297a('0x189'),JSON['stringify'](_0x5af4f2)));_0x27fa51[_0x297a('0xa2')]=0xe;_0x27fa51['statedesc']=_0x297a('0x18a');_0x27fa51['starttime']=moment()[_0x297a('0x76')](_0x297a('0xf9'));_0x27fa51[_0x297a('0xa4')]=_0x27fa51[_0x297a('0xa5')];_0x55a6ad[_0x297a('0xc6')](_0x27fa51)[_0x297a('0xac')](loggerCatch(_0x297a('0x18b')));_0x55a6ad[_0x297a('0xc5')](_0x27fa51)[_0x297a('0xac')](loggerCatch(_0x297a('0x18b')))[_0x297a('0x1e')](function(){delete _0x55a6ad['actions'][_0x35f056];return _0xc0b7fd(msgResponse('originate',_0x297a('0x4c'),_0x297a('0x18c')));});});});};Dialer[_0x297a('0x1c')][_0x297a('0x33')]=function(_0x273e89){var _0xc9acb6=this[_0x297a('0x27')][_0x273e89[_0x297a('0x11f')]];if(_0xc9acb6){delete this[_0x297a('0x27')][_0x273e89[_0x297a('0x11f')]];_0xc9acb6[_0x297a('0x10e')]=moment()[_0x297a('0x76')](_0x297a('0xf9'));var _0x5c5ee9=_0xc9acb6[_0x297a('0x79')]===_0x297a('0x7a')?this['campaigns'][_0xc9acb6[_0x297a('0xaf')]]:this[_0x297a('0x21')][_0xc9acb6[_0x297a('0x18d')]()];if(!this[_0x297a('0xd3')](_0x273e89[_0x297a('0x18e')])){this[_0x297a('0xae')](_0x5c5ee9);return this[_0x297a('0x18f')](_0xc9acb6,_0x5c5ee9,_0x273e89)[_0x297a('0xac')](loggerCatch(_0x297a('0x190')));}this['uniqueId'][_0x273e89[_0x297a('0xd8')]]=_0xc9acb6;}};Dialer[_0x297a('0x1c')][_0x297a('0x191')]=function(_0x269c77,_0x51a6f8,_0x5af254){var _0x2cbb7a=new History(_0x51a6f8);if(_0x2cbb7a['countbusyretry']+_0x2cbb7a['countcongestionretry']+_0x2cbb7a[_0x297a('0x192')]+_0x2cbb7a[_0x297a('0xed')]+_0x2cbb7a['countdropretry']+_0x2cbb7a[_0x297a('0xef')]+_0x2cbb7a[_0x297a('0xf0')]+_0x2cbb7a['countagentrejectretry']>=_0x5af254['dialGlobalMaxRetry']-0x1){return!![];}switch(_0x269c77){case 0x3:if(_0x2cbb7a['countnoanswerretry']>=_0x5af254[_0x297a('0x193')]-0x1){return!![];}this[_0x297a('0xbb')]({'active':![],'countnoanswerretry':_0x2cbb7a[_0x297a('0x192')]+=0x1,'scheduledat':moment()['add'](_0x5af254[_0x297a('0x194')],_0x297a('0xf8'))[_0x297a('0x76')](_0x297a('0xf9')),'ContactId':_0x2cbb7a[_0x297a('0xce')],'ListId':_0x2cbb7a[_0x297a('0xcf')],'VoiceQueueId':_0x2cbb7a[_0x297a('0xd1')]||undefined,'CampaignId':_0x2cbb7a[_0x297a('0xd2')]||undefined})['catch'](loggerCatch(_0x297a('0x195')));break;case 0x5:if(_0x2cbb7a['countbusyretry']>=_0x5af254[_0x297a('0x196')]-0x1){return!![];}this[_0x297a('0xbb')]({'active':![],'countbusyretry':_0x2cbb7a[_0x297a('0xeb')]+=0x1,'scheduledat':moment()[_0x297a('0xf6')](_0x5af254['dialBusyRetryFrequency'],_0x297a('0xf8'))[_0x297a('0x76')](_0x297a('0xf9')),'ContactId':_0x2cbb7a['ContactId'],'ListId':_0x2cbb7a[_0x297a('0xcf')],'VoiceQueueId':_0x2cbb7a[_0x297a('0xd1')]||undefined,'CampaignId':_0x2cbb7a[_0x297a('0xd2')]||undefined})['catch'](loggerCatch(_0x297a('0x197')));break;case 0x8:if(_0x2cbb7a[_0x297a('0xec')]>=_0x5af254[_0x297a('0x198')]-0x1){return!![];}this['rescheduleContact']({'active':![],'countcongestionretry':_0x2cbb7a[_0x297a('0xec')]+=0x1,'scheduledat':moment()['add'](_0x5af254[_0x297a('0x199')],_0x297a('0xf8'))[_0x297a('0x76')](_0x297a('0xf9')),'ContactId':_0x2cbb7a[_0x297a('0xce')],'ListId':_0x2cbb7a['ListId'],'VoiceQueueId':_0x2cbb7a[_0x297a('0xd1')]||undefined,'CampaignId':_0x2cbb7a['CampaignId']||undefined})[_0x297a('0xac')](loggerCatch(_0x297a('0x19a')));break;case 0x0:if(_0x2cbb7a['countnosuchnumberretry']>=_0x5af254[_0x297a('0x19b')]-0x1){return!![];}else{this[_0x297a('0xbb')]({'active':![],'countnosuchnumberretry':_0x2cbb7a[_0x297a('0xed')]+=0x1,'scheduledat':moment()[_0x297a('0xf6')](_0x5af254[_0x297a('0x19c')],'minutes')[_0x297a('0x76')](_0x297a('0xf9')),'ContactId':_0x2cbb7a[_0x297a('0xce')],'ListId':_0x2cbb7a[_0x297a('0xcf')],'VoiceQueueId':_0x2cbb7a[_0x297a('0xd1')]||undefined,'CampaignId':_0x2cbb7a['CampaignId']||undefined})[_0x297a('0xac')](loggerCatch(_0x297a('0x19d')));}break;case 0xa:if(_0x2cbb7a[_0x297a('0xee')]>=_0x5af254[_0x297a('0x113')]-0x1){return!![];}this[_0x297a('0xbb')]({'active':![],'countdropretry':_0x2cbb7a[_0x297a('0xee')]+=0x1,'scheduledat':moment()[_0x297a('0xf6')](_0x5af254[_0x297a('0x114')],'minutes')[_0x297a('0x76')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x2cbb7a[_0x297a('0xce')],'ListId':_0x2cbb7a['ListId'],'VoiceQueueId':_0x2cbb7a['VoiceQueueId']||undefined,'CampaignId':_0x2cbb7a[_0x297a('0xd2')]||undefined})['catch'](loggerCatch('[rescheduleContact][Drop]'));break;case 0xb:if(_0x2cbb7a[_0x297a('0xef')]>=_0x5af254['dialAbandonedMaxRetry']-0x1){return!![];}this['rescheduleContact']({'active':![],'countabandonedretry':_0x2cbb7a['countabandonedretry']+=0x1,'scheduledat':moment()[_0x297a('0xf6')](_0x5af254[_0x297a('0x11d')],_0x297a('0xf8'))['format'](_0x297a('0xf9')),'ContactId':_0x2cbb7a[_0x297a('0xce')],'ListId':_0x2cbb7a[_0x297a('0xcf')],'VoiceQueueId':_0x2cbb7a[_0x297a('0xd1')]||undefined,'CampaignId':_0x2cbb7a['CampaignId']||undefined})[_0x297a('0xac')](loggerCatch(_0x297a('0x19e')));break;case 0x13:if(_0x2cbb7a[_0x297a('0xf0')]>=_0x5af254[_0x297a('0xfc')]-0x1){return!![];}this['rescheduleContact']({'active':![],'countmachineretry':_0x2cbb7a[_0x297a('0xf0')]+=0x1,'scheduledat':moment()[_0x297a('0xf6')](_0x5af254[_0x297a('0xf7')],_0x297a('0xf8'))[_0x297a('0x76')](_0x297a('0xf9')),'ContactId':_0x2cbb7a[_0x297a('0xce')],'ListId':_0x2cbb7a[_0x297a('0xcf')],'VoiceQueueId':_0x2cbb7a['VoiceQueueId']||undefined,'CampaignId':_0x2cbb7a[_0x297a('0xd2')]||undefined})[_0x297a('0xac')](loggerCatch(_0x297a('0xfa')));break;case 0x14:if(_0x2cbb7a[_0x297a('0xf1')]>=_0x5af254['dialAgentRejectMaxRetry']-0x1){return!![];}this[_0x297a('0xbb')]({'active':![],'countagentrejectretry':_0x2cbb7a[_0x297a('0xf1')]+=0x1,'scheduledat':moment()[_0x297a('0xf6')](_0x5af254[_0x297a('0x19f')],'minutes')[_0x297a('0x76')](_0x297a('0xf9')),'ContactId':_0x2cbb7a['ContactId'],'ListId':_0x2cbb7a[_0x297a('0xcf')],'VoiceQueueId':_0x2cbb7a[_0x297a('0xd1')]||undefined,'CampaignId':_0x2cbb7a['CampaignId']||undefined})[_0x297a('0xac')](loggerCatch('[rescheduleContact][AgentReject]'));break;default:return!![];}};Dialer[_0x297a('0x1c')]['callProgressDetecting']=function(_0x142585,_0x549743,_0xd68fd3){var _0x45b89c=this;var _0x2d586c=new History(_0x142585);return new BPromise(function(_0x1992d9,_0x3413ac){if(_[_0x297a('0x41')](_0x549743)&&typeof _0x549743!==_0x297a('0x162')){return _0x3413ac(msgResponse(_0x297a('0x1a0'),_0x297a('0x13b'),_0x297a('0x1a1')));}if(_[_0x297a('0x41')](_0xd68fd3)&&typeof _0xd68fd3!==_0x297a('0x162')){return _0x3413ac(msgResponse('[callProgressDetecting]',_0x297a('0x13b'),'evt\x20is\x20undefine'));}switch(_0xd68fd3['reason']){case'0':_0x549743[_0x297a('0x62')]+=0x1;_0x2d586c[_0x297a('0xa2')]=0x0;_0x2d586c[_0x297a('0xa3')]='NoSuchNumber';_0x2d586c[_0x297a('0xed')]+=0x1;_0x2d586c[_0x297a('0xe8')]+=0x1;ami[_0x297a('0xe9')](_0x297a('0x1a2'),ut[_0x297a('0xe3')](_0x142585,_0x297a('0x1a3')));_0x45b89c['createHistory'](_0x2d586c)[_0x297a('0xac')](loggerCatch(_0x297a('0xea')));if(_0x45b89c[_0x297a('0x191')](0x0,_0x142585,_0x549743)){if(_0x2d586c[_0x297a('0xed')]>=_0x549743[_0x297a('0x19b')]){_0x45b89c[_0x297a('0xf5')](_0x2d586c,_0x1992d9,_0x3413ac,_0x297a('0x1a4'));}else{_0x45b89c[_0x297a('0xf3')](_0x2d586c,_0x1992d9,_0x3413ac,'reason\x200\x20no\x20such\x20number....');}}break;case'3':_0x549743[_0x297a('0x61')]+=0x1;_0x2d586c[_0x297a('0xa2')]=0x3;_0x2d586c[_0x297a('0xa3')]=_0x297a('0x1a5');_0x2d586c['countnoanswerretry']+=0x1;_0x2d586c['countglobal']+=0x1;ami[_0x297a('0xe9')](_0x297a('0x1a6'),ut[_0x297a('0xe3')](_0x142585,_0x297a('0x1a7')));_0x45b89c['createHistory'](_0x2d586c)[_0x297a('0xac')](loggerCatch(_0x297a('0x1a8')));if(_0x45b89c[_0x297a('0x191')](0x3,_0x142585,_0x549743)){if(_0x2d586c['countnoanswerretry']>=_0x549743[_0x297a('0x193')]){_0x45b89c[_0x297a('0xf5')](_0x2d586c,_0x1992d9,_0x3413ac,'reason\x203\x20ringing\x20no\x20answer');}else{_0x45b89c[_0x297a('0xf3')](_0x2d586c,_0x1992d9,_0x3413ac,_0x297a('0x1a9'));}}break;case'5':_0x549743[_0x297a('0x1aa')]+=0x1;_0x2d586c[_0x297a('0xa2')]=0x5;_0x2d586c['statedesc']=_0x297a('0x1ab');_0x2d586c[_0x297a('0xeb')]+=0x1;_0x2d586c['countglobal']+=0x1;ami[_0x297a('0xe9')](_0x297a('0x1ac'),ut[_0x297a('0xe3')](_0x142585,_0x297a('0x1ad')));_0x45b89c['createHistory'](_0x2d586c)['catch'](loggerCatch('[syncAgentComplete][createHistory][5]'));if(_0x45b89c['checkRetriveMax'](0x5,_0x142585,_0x549743)){if(_0x2d586c[_0x297a('0xeb')]>=_0x549743[_0x297a('0x196')]){_0x45b89c[_0x297a('0xf5')](_0x2d586c,_0x1992d9,_0x3413ac,_0x297a('0x1ae'));}else{_0x45b89c['stateGlobal'](_0x2d586c,_0x1992d9,_0x3413ac,'reason\x205\x20busy');}}break;case'8':_0x549743[_0x297a('0x60')]+=0x1;_0x2d586c[_0x297a('0xa2')]=0x8;_0x2d586c[_0x297a('0xa3')]=_0x297a('0x1af');_0x2d586c[_0x297a('0xec')]+=0x1;_0x2d586c[_0x297a('0xe8')]+=0x1;ami[_0x297a('0xe9')]('custom:agentcongestion',ut[_0x297a('0xe3')](_0x142585,'congestion'));_0x45b89c[_0x297a('0xc6')](_0x2d586c)['catch'](loggerCatch('[syncAgentComplete][createHistory][8]'));if(_0x45b89c[_0x297a('0x191')](0x8,_0x142585,_0x549743)){if(_0x2d586c[_0x297a('0xec')]>=_0x549743['dialCongestionMaxRetry']){_0x45b89c[_0x297a('0xf5')](_0x2d586c,_0x1992d9,_0x3413ac,_0x297a('0x1b0'));}else{_0x45b89c[_0x297a('0xf3')](_0x2d586c,_0x1992d9,_0x3413ac,'reason\x208\x20congestion');}}break;case'11':_0x549743[_0x297a('0x1b1')]+=0x1;_0x2d586c[_0x297a('0xa2')]=0xb;_0x2d586c['statedesc']=_0x297a('0x1b2');_0x2d586c[_0x297a('0xef')]+=0x1;_0x2d586c['countglobal']+=0x1;_0x45b89c[_0x297a('0xc6')](_0x2d586c)[_0x297a('0xac')](loggerCatch(_0x297a('0x11e')));if(_0x45b89c['checkRetriveMax'](0xb,_0x142585,_0x549743)){if(_0x2d586c[_0x297a('0xef')]>=_0x549743[_0x297a('0x11c')]){_0x45b89c[_0x297a('0xf5')](_0x2d586c,_0x1992d9,_0x3413ac,_0x297a('0x1b3'));}else{_0x45b89c[_0x297a('0xf3')](_0x2d586c,_0x1992d9,_0x3413ac,'reason\x2011\x20abandoned');}}break;case'20':_0x549743['outboundRejectCallsDay']+=0x1;_0x2d586c[_0x297a('0xa2')]=0x14;_0x2d586c[_0x297a('0xa3')]=_0x297a('0x1b4');_0x2d586c[_0x297a('0xf1')]+=0x1;_0x2d586c[_0x297a('0xe8')]+=0x1;ami[_0x297a('0xe9')]('custom:agentreject',ut[_0x297a('0xe3')](_0x142585,_0x297a('0x1b5')));_0x45b89c['createHistory'](_0x2d586c)[_0x297a('0xac')](loggerCatch(_0x297a('0x1b6')));if(_0x45b89c[_0x297a('0x191')](0x14,_0x142585,_0x549743)){if(_0x2d586c[_0x297a('0xf1')]>=_0x549743[_0x297a('0x1b7')]){_0x45b89c[_0x297a('0xf5')](_0x2d586c,_0x1992d9,_0x3413ac,_0x297a('0x1b8'));}else{_0x45b89c[_0x297a('0xf3')](_0x2d586c,_0x1992d9,_0x3413ac,_0x297a('0x1b8'));}}break;default:_0x549743[_0x297a('0x1b9')]+=0x1;_0x2d586c['state']=0xc;_0x2d586c[_0x297a('0xa3')]=_0xd68fd3[_0x297a('0x1ba')];_0x45b89c['createHistory'](_0x2d586c)[_0x297a('0xac')](loggerCatch(_0x297a('0x1bb')));if(_0x45b89c[_0x297a('0x191')](_0xd68fd3['reason'],_0x142585,_0x549743)){if(_0x2d586c['countbusyretry']+_0x2d586c['countcongestionretry']+_0x2d586c[_0x297a('0x192')]+_0x2d586c[_0x297a('0xed')]+_0x2d586c[_0x297a('0xee')]+_0x2d586c[_0x297a('0xef')]+_0x2d586c[_0x297a('0xf0')]+_0x2d586c['countagentrejectretry']>=_0x549743[_0x297a('0xf2')]){_0x45b89c['stateGlobal'](_0x2d586c,_0x1992d9,_0x3413ac,_0xd68fd3[_0x297a('0x1ba')]);}else{_0x45b89c[_0x297a('0xf5')](_0x2d586c,_0x1992d9,_0x3413ac,_0xd68fd3[_0x297a('0x1ba')]);}}}});};Dialer['prototype'][_0x297a('0xf3')]=function(_0x4c6f8b,_0xa50111,_0x5a91fe,_0x22f95a){var _0x41a795=new Final(_0x4c6f8b);_0x41a795[_0x297a('0xa2')]=0xf;_0x41a795[_0x297a('0xa3')]=_0x297a('0x1bc');this['createStateFinal'](_0x41a795,_0xa50111,_0x5a91fe,_0x22f95a);};Dialer['prototype'][_0x297a('0xf5')]=function(_0x457bef,_0x39cd17,_0x333948,_0x52eeb1){this[_0x297a('0xc5')](_0x457bef)[_0x297a('0xb5')](function(){return _0x39cd17(msgResponse(_0x297a('0x1a0'),'Success',_0x52eeb1));})[_0x297a('0xac')](function(){return _0x333948(msgResponse(_0x297a('0x1bd'),'Failure','contact\x20not\x20moved'));});};Dialer[_0x297a('0x1c')][_0x297a('0xa')]=function(_0x2b24ba){var _0x47dd40=_0x2b24ba[_0x297a('0x1be')]/0x64;var _0x1aa4da=_0x2b24ba[_0x297a('0x110')]/(_0x2b24ba[_0x297a('0x110')]+_0x2b24ba[_0x297a('0x5e')]);var _0x5e9845=Math['round'](_0x2b24ba[_0x297a('0x6d')]*(_0x2b24ba['predictiveIntervalMaxThreshold']/0x64));var _0x14eb80=Math[_0x297a('0x1bf')](_0x2b24ba['predictiveIntervalAvailable']*(_0x2b24ba[_0x297a('0x1c0')]/0x64));var _0x4a7e05=_0x2b24ba[_0x297a('0x9d')]+_0x2b24ba[_0x297a('0x55')];var _0x58a216=Math['floor'](_0x2b24ba[_0x297a('0x70')]*_0x2b24ba['erlangAbandonmentRate']*_0x2b24ba[_0x297a('0x6b')]*_0x2b24ba[_0x297a('0x6c')]);if(_[_0x297a('0x41')](_0x2b24ba[_0x297a('0x2c')])){if(!_[_0x297a('0x41')](_0x2b24ba[_0x297a('0x2b')])){_0x2b24ba[_0x297a('0x2b')]=undefined;loggerPredictive[_0x297a('0x93')](_0x297a('0x1c1'),_0x297a('0x1c2'));}if(!_[_0x297a('0x41')](_0x2b24ba[_0x297a('0x8e')])){loggerPredictive[_0x297a('0x93')](_0x297a('0x1c1'),_0x297a('0x1c3'));clearInterval(_0x2b24ba[_0x297a('0x8e')]);_0x2b24ba['handlePredictive']=undefined;}_0x2b24ba[_0x297a('0x2c')]=moment()[_0x297a('0x76')](_0x297a('0xf9'));loggerPredictive[_0x297a('0x7f')](_0x2b24ba[_0x297a('0x45')],'collection\x20data\x20in\x20progressive\x20at',_0x2b24ba['startProgressive']);this[_0x297a('0x154')](_0x2b24ba,0x1);}else if(ifInterval(_0x2b24ba['dialPredictiveInterval'],_0x2b24ba[_0x297a('0x2c')])){this[_0x297a('0x154')](_0x2b24ba,0x1);loggerPredictiveCalls[_0x297a('0x7f')](_0x297a('0x1c4'),_0x2b24ba[_0x297a('0x2c')],_0x2b24ba[_0x297a('0x45')]);_0x2b24ba[_0x297a('0x70')]=0x0;_0x2b24ba['predictiveIntervalErlangCallsDroppedCalls']=0x0;}else if(_0x47dd40<_0x1aa4da&&_0x2b24ba[_0x297a('0x1c5')]===_0x297a('0x1c6')){freeVariablesPredictive(_0x2b24ba);loggerPredictive['info']('[stopMethodPredictive][ReStartProgressive][ExceededDropDay]',_0x297a('0x1c7'),_0x1aa4da,_0x297a('0x2c'),_0x2b24ba[_0x297a('0x45')]);}else if(_0x58a216<_0x2b24ba[_0x297a('0x111')]&&_0x2b24ba[_0x297a('0x1c5')]===_0x297a('0x1c6')){freeVariablesPredictive(_0x2b24ba);loggerPredictive[_0x297a('0x7f')](_0x297a('0x1c8'),_0x297a('0x1c9'),_0x58a216,_0x297a('0x1ca'),_0x2b24ba[_0x297a('0x111')],_0x297a('0x2c'),_0x2b24ba[_0x297a('0x45')]);}else if(!ifInterval(_0x2b24ba[_0x297a('0x1cb')],_0x2b24ba[_0x297a('0x2c')])&&_[_0x297a('0x41')](_0x2b24ba[_0x297a('0x2b')])&&!_[_0x297a('0x41')](_0x2b24ba[_0x297a('0x2c')])){_0x2b24ba['startPredictive']=moment()[_0x297a('0x76')](_0x297a('0xf9'));loggerPredictive[_0x297a('0x7f')](_0x2b24ba[_0x297a('0x45')],_0x297a('0x1cc'),_0x2b24ba[_0x297a('0x2b')]);this[_0x297a('0xb8')](_0x2b24ba[_0x297a('0x1cb')])[_0x297a('0xb5')](this['getDataPredictive'](_0x2b24ba))[_0x297a('0xb5')](mergeDataErlangB(_0x2b24ba))['then'](this[_0x297a('0x1cd')](_0x2b24ba))[_0x297a('0xac')](loggerCatchPredictive(_0x297a('0x1ce'),_0x2b24ba));}else if(!ifInterval(_0x2b24ba[_0x297a('0x1cb')],_0x2b24ba['startPredictive'])){_0x2b24ba[_0x297a('0x111')]=0x0;_0x2b24ba[_0x297a('0x2b')]=moment()[_0x297a('0x76')](_0x297a('0xf9'));loggerPredictive['info'](_0x2b24ba[_0x297a('0x45')],_0x297a('0x1cf'),_0x2b24ba[_0x297a('0x2b')]);clearInterval(_0x2b24ba[_0x297a('0x8e')]);_0x2b24ba[_0x297a('0x8e')]=undefined;this['averageHandleTime'](_0x2b24ba[_0x297a('0x1cb')])[_0x297a('0xb5')](this['getDataPredictive'](_0x2b24ba))[_0x297a('0xb5')](mergeDataErlangB(_0x2b24ba))[_0x297a('0xb5')](this[_0x297a('0x1cd')](_0x2b24ba))['catch'](loggerCatchPredictive(_0x297a('0x1d0'),_0x2b24ba));}else if(_0x2b24ba[_0x297a('0x6d')]&&_0x4a7e05<_0x2b24ba[_0x297a('0x6d')]-_0x14eb80){freeVariablesPredictive(_0x2b24ba);loggerPredictive['info'](_0x2b24ba[_0x297a('0x45')],'switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',_0x4a7e05,')\x20are\x20less\x20than\x20threshold\x20(',_0x2b24ba[_0x297a('0x6d')],'-',_0x14eb80,'=',_0x2b24ba[_0x297a('0x6d')]-_0x14eb80,')');}else if(_0x2b24ba[_0x297a('0x6d')]&&_0x4a7e05>_0x2b24ba['predictiveIntervalAvailable']+_0x5e9845){freeVariablesPredictive(_0x2b24ba);loggerPredictive[_0x297a('0x7f')](_0x2b24ba[_0x297a('0x45')],'switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',_0x4a7e05,_0x297a('0x1d1'),_0x2b24ba[_0x297a('0x6d')],'+',_0x5e9845,'=',_0x2b24ba[_0x297a('0x6d')]+_0x5e9845,')');}};Dialer[_0x297a('0x1c')][_0x297a('0x1d2')]=function(_0x5dcfcb){var _0x340b52=this;return function(_0x3a74d8){return new BPromise(function(_0x12d252,_0x32dbef){_[_0x297a('0x8c')](_0x5dcfcb,_0x3a74d8[0x0]);if(checkGetDataPredictive(_0x3a74d8[0x0])){var _0x2d2f1f=_0x5dcfcb[_0x297a('0x6d')]=_0x5dcfcb[_0x297a('0x55')]+_0x5dcfcb['available'];var _0x2b3147=_0x5dcfcb[_0x297a('0x1cb')]*0x3c;var _0x2217f9=_0x3a74d8[0x0]['predictiveIntervalAvgTalktime']+_0x3a74d8[0x0][_0x297a('0x66')];var _0xbaedfd=(_0x3a74d8[0x0]['predictiveIntervalAnsweredCalls']+_0x3a74d8[0x0][_0x297a('0x69')]+_0x3a74d8[0x0]['predictiveIntervalDroppedCallsCallersExit'])/_0x3a74d8[0x0]['predictiveIntervalTotalCalls'];_0x5dcfcb[_0x297a('0x6b')]=_0xbaedfd>0x0?_0xbaedfd:0x1;switch(_0x5dcfcb[_0x297a('0x1c5')]){case _0x297a('0x1c6'):var _0x5f5d33=_0x5dcfcb[_0x297a('0x1be')]/0x64;return _0x340b52[_0x297a('0x1d3')](_0x2d2f1f,_0x2b3147,_0x2217f9,_0xbaedfd,_0x5f5d33)['then'](function(_0x50754a){return _0x12d252(_0x50754a);});case'agentBusyFactor':var _0x306ab1=_0x5dcfcb[_0x297a('0x1be')]/0x64;return _0x340b52['busyFactor'](_0x2d2f1f,_0x2b3147,_0x2217f9,_0xbaedfd,_0x306ab1)[_0x297a('0xb5')](function(_0x3d2da8){return _0x12d252(_0x3d2da8);});default:return _0x32dbef(msgResponse(_0x297a('0x1d4'),'Failure','Unknown\x20Predictive'));}}else{return _0x32dbef(msgResponse('[getDataPredictive]',_0x297a('0x13b'),'check\x20failure'));}});};};Dialer[_0x297a('0x1c')][_0x297a('0x1d5')]=function(_0x59b0d3){var _0x731bc0=this;return function(_0x73230c){return new BPromise(function(_0xb613e5,_0x316d36){_[_0x297a('0x8c')](_0x59b0d3,_0x73230c[0x0]);if(checkGetDataPredictive(_0x73230c[0x0])){loggerPredictive[_0x297a('0x7f')](JSON[_0x297a('0x75')](_0x73230c[0x0]));if(_0x59b0d3['dialPredictiveOptimization']==='dropRate'){return _0x731bc0['getVoiceQueueRtPauses'](_0x59b0d3['id'])[_0x297a('0xb5')](function(_0x4e84cd){var _0x5d8850=_0x59b0d3['loggedIn']-_0x4e84cd[0x0]['outboundQueuePauses'];var _0x143137=_0x59b0d3[_0x297a('0x1cb')]*0x3c;var _0x1ac800=_0x73230c[0x0][_0x297a('0x67')]+_0x73230c[0x0][_0x297a('0x66')];var _0x192b34=(_0x73230c[0x0]['predictiveIntervalAnsweredCalls']+_0x73230c[0x0][_0x297a('0x69')]+_0x73230c[0x0][_0x297a('0x68')])/_0x73230c[0x0][_0x297a('0x6e')];var _0x13d6e5=_0x59b0d3[_0x297a('0x1be')]/0x64;_0x59b0d3['predictiveIntervalPauses']=_0x4e84cd[0x0][_0x297a('0x1d6')]||0x0;_0x59b0d3[_0x297a('0x6b')]=_0x192b34>0x0?_0x192b34:0x1;return _0x731bc0[_0x297a('0x1d3')](_0x5d8850,_0x143137,_0x1ac800,_0x192b34,_0x13d6e5);})[_0x297a('0xb5')](function(_0x24361f){return _0xb613e5(_0x24361f);})['catch'](function(_0x592c7a){return _0x316d36(msgResponse(_0x297a('0x1d7'),_0x297a('0x13b'),JSON[_0x297a('0x75')](_0x592c7a)));});}if(_0x59b0d3['dialPredictiveOptimization']===_0x297a('0x1d8')){return _0x731bc0[_0x297a('0xc3')](_0x59b0d3['id'])[_0x297a('0xb5')](function(_0x2a842e){var _0x221c3c=_0x59b0d3[_0x297a('0x52')]-_0x2a842e[0x0][_0x297a('0x1d6')];var _0x354104=_0x59b0d3[_0x297a('0x1cb')]*0x3c;var _0xcaeef8=_0x73230c[0x0]['predictiveIntervalAvgTalktime']+_0x73230c[0x0][_0x297a('0x66')];var _0x499563=(_0x73230c[0x0]['predictiveIntervalAnsweredCalls']+_0x73230c[0x0][_0x297a('0x69')]+_0x73230c[0x0]['predictiveIntervalDroppedCallsCallersExit'])/_0x73230c[0x0][_0x297a('0x6e')];var _0x2cf28c=_0x59b0d3['dialPredictiveOptimizationPercentage']/0x64;_0x59b0d3['predictiveIntervalPauses']=_0x2a842e[0x0][_0x297a('0x1d6')]||0x0;_0x59b0d3[_0x297a('0x6b')]=_0x499563>0x0?_0x499563:0x1;return _0x731bc0[_0x297a('0x1d9')](_0x221c3c,_0x354104,_0xcaeef8,_0x499563,_0x2cf28c);})['then'](function(_0x30412e){return _0xb613e5(_0x30412e);})[_0x297a('0xac')](function(_0x1b6aeb){return _0x316d36(msgResponse(_0x297a('0x1d7'),_0x297a('0x13b'),JSON[_0x297a('0x75')](_0x1b6aeb)));});}}else{return _0x316d36(msgResponse(_0x297a('0x1d4'),'Failure',_0x297a('0x1da')));}});};};Dialer[_0x297a('0x1c')][_0x297a('0x1cd')]=function(_0x415507){var _0x30fcf7=this;return function(){var _0x4958ee=0x0;var _0x4c468f=Math['floor'](_0x415507[_0x297a('0x8a')]*0x3e8);if(_0x4c468f>0x0){_0x4c468f=_0x4c468f<0x64?0x64:_0x4c468f;loggerPredictive['info'](_0x415507[_0x297a('0x45')],'one\x20call\x20every:',_0x4c468f,_0x297a('0x4d'));_0x415507[_0x297a('0x8e')]=setInterval(function(){_0x30fcf7['handlePredictive'](_0x415507);loggerPredictiveCalls[_0x297a('0x7f')](_0x297a('0x1db'),_0x4958ee+=0x1);},_0x4c468f);}else{loggerPredictive[_0x297a('0x7f')](_0x415507[_0x297a('0x45')],_0x297a('0x1dc'));}};};Dialer['prototype'][_0x297a('0x1dd')]=function(_0x5e9c56,_0x2ef3e8){var _0x95c4fb=this;return function(_0x4d9f78){if(_[_0x297a('0x7d')](_0x4d9f78)){if(_['isNil'](_0x2ef3e8[_0x297a('0xd0')])||!_0x2ef3e8[_0x297a('0x1de')]){if(_0x5e9c56[_0x297a('0x59')]===_0x297a('0x9')){_0x5e9c56[_0x297a('0x128')]=_[_0x297a('0x41')](_0x5e9c56[_0x297a('0x128')])?!![]:_0x5e9c56[_0x297a('0x128')];var _0x55cc34=uuid['v4']();_0x95c4fb[_0x297a('0x27')][_0x55cc34]=new Action(_0x5e9c56,_0x2ef3e8,_0x55cc34);loggerBooked['info'](_0x297a('0x1df'),_0x55cc34,_0x297a('0x1e0'),JSON[_0x297a('0x75')](_0x5e9c56[_0x297a('0x128')]),_0x297a('0x1e1'),_0x5e9c56[_0x297a('0x45')]);if(_0x5e9c56[_0x297a('0x128')]){_0x5e9c56[_0x297a('0x128')]=![];_0x95c4fb[_0x297a('0x2e')][_0x95c4fb['actions'][_0x55cc34]['queue']]=[];ami[_0x297a('0x146')]({'actionid':_0x55cc34,'action':_0x297a('0x1e2'),'queue':_0x5e9c56['name']})[_0x297a('0xac')](function(){_0x95c4fb['updateOriginated'](_0x5e9c56);_0x95c4fb[_0x297a('0xbb')]({'active':![],'ContactId':_0x95c4fb[_0x297a('0x27')][_0x55cc34][_0x297a('0xce')],'ListId':_0x95c4fb[_0x297a('0x27')][_0x55cc34][_0x297a('0xcf')],'VoiceQueueId':_0x95c4fb['actions'][_0x55cc34][_0x297a('0xd1')]||undefined,'CampaignId':_0x95c4fb[_0x297a('0x27')][_0x55cc34][_0x297a('0xd2')]||undefined})['catch'](loggerCatch(_0x297a('0x1e3')));delete _0x95c4fb[_0x297a('0x27')][_0x55cc34];});}else{loggerBooked[_0x297a('0x7f')]('[booked][checkContactBlack][else]',JSON['stringify'](_0x5e9c56[_0x297a('0x128')]),_0x297a('0x1e1'),_0x5e9c56['name']);_0x95c4fb[_0x297a('0xae')](_0x5e9c56);_0x95c4fb[_0x297a('0xbb')]({'active':![],'ContactId':_0x95c4fb[_0x297a('0x27')][_0x55cc34][_0x297a('0xce')],'ListId':_0x95c4fb[_0x297a('0x27')][_0x55cc34][_0x297a('0xcf')],'VoiceQueueId':_0x95c4fb['actions'][_0x55cc34]['VoiceQueueId']||undefined,'CampaignId':_0x95c4fb[_0x297a('0x27')][_0x55cc34][_0x297a('0xd2')]||undefined})[_0x297a('0xac')](loggerCatch(_0x297a('0x1e3')));delete _0x95c4fb['actions'][_0x55cc34];}}else{return _0x95c4fb[_0x297a('0x161')](_0x5e9c56,_0x2ef3e8);}}else{if(getDiff(_0x2ef3e8[_0x297a('0x1e4')])<_0x5e9c56[_0x297a('0x1e5')]*0x3c){if(_0x2ef3e8[_0x297a('0x1e6')]&&!_0x2ef3e8[_0x297a('0x1e6')][_0x297a('0x1e7')]){_0x95c4fb[_0x297a('0x20')][_0x297a('0x12b')](_0x2ef3e8['id'])['finally'](function(){_0x95c4fb[_0x297a('0xae')](_0x5e9c56);});}else{_0x95c4fb[_0x297a('0xbd')]({'active':![]},_0x2ef3e8['id'],0x1)['finally'](function(){_0x95c4fb[_0x297a('0xae')](_0x5e9c56);});}}else{_0x5e9c56[_0x297a('0x1e8')]+=0x1;_0x95c4fb['updateOriginated'](_0x5e9c56);if(_0x5e9c56[_0x297a('0x1e9')]){_0x95c4fb['rescheduleContact']({'active':![],'recallme':![],'UserId':null,'ContactId':_0x2ef3e8['ContactId'],'ListId':_0x2ef3e8['ListId'],'VoiceQueueId':_0x2ef3e8['VoiceQueueId']||undefined,'CampaignId':_0x2ef3e8[_0x297a('0xd2')]||undefined})[_0x297a('0xac')](loggerCatch(_0x297a('0x1ea')));_0x95c4fb[_0x297a('0xc6')](createObjHistory(_0x5e9c56,_0x2ef3e8,_0x297a('0x1eb'),0x17,_0x297a('0x1ec')))[_0x297a('0xac')](loggerCatch(_0x297a('0x1ed')));}else{_0x95c4fb[_0x297a('0xcd')](createObjHistory(_0x5e9c56,_0x2ef3e8,_0x297a('0x1ee'),0x16,'RecallFailedTimeout'),_0x297a('0x1ef'),_0x297a('0x1f0'));}}}}else{_0x5e9c56[_0x297a('0x5f')]+=0x1;_0x95c4fb[_0x297a('0xcd')](createObjHistory(_0x5e9c56,_0x2ef3e8,_0x297a('0x1f1'),0xd,'Blacklist'),_0x297a('0x1f2'),_0x297a('0x1f3'));throw _0x297a('0x1f4');}};};Dialer[_0x297a('0x1c')][_0x297a('0x1f5')]=function(_0x3b91ba){var _0x596457=this;var _0x489abf=_0x3b91ba[_0x297a('0x1f6')]-_0x3b91ba['originated']-_0x3b91ba[_0x297a('0xc0')];emitCampaignSummary(_0x3b91ba);if(_0x489abf>0x0){if(_0x489abf>this[_0x297a('0x25')]){_0x489abf=this[_0x297a('0x25')];}_0x3b91ba['temp']+=_0x489abf;this['getContactDialerIvr'](_0x3b91ba['id'],_0x489abf,_0x3b91ba[_0x297a('0x1f7')],_0x3b91ba)[_0x297a('0xb5')](function(_0x752bb5){_0x3b91ba[_0x297a('0xc0')]-=_0x489abf;_0x3b91ba[_0x297a('0xc0')]=_0x3b91ba[_0x297a('0xc0')]>0x0?_0x3b91ba[_0x297a('0xc0')]:0x0;if(!checkContactEmpty(_0x752bb5)){_0x3b91ba['message']='AVAILABLE_CONTACTS_FINISHED';logger[_0x297a('0x7f')]('[getContactCampaign2][Empty]'+_0x3b91ba[_0x297a('0x45')]);}else{_0x3b91ba[_0x297a('0x6f')]+=_0x752bb5[_0x297a('0x96')];_0x3b91ba['message']=_0x297a('0x1f8');for(var _0x2d9092=0x0;_0x2d9092<_0x752bb5[_0x297a('0x96')];_0x2d9092+=0x1){_0x3b91ba[_0x297a('0x1f9')]+=0x1;if(_[_0x297a('0xa9')](_0x752bb5[_0x2d9092])||_[_0x297a('0xa9')](_0x752bb5[_0x2d9092][_0x297a('0x165')])||_[_0x297a('0xa9')](_0x752bb5[_0x2d9092][_0x297a('0x165')]['phone'])){_0x596457[_0x297a('0xcb')](_0x297a('0x1fa'),_0x3b91ba,_0x752bb5[_0x2d9092]);}else{_0x596457[_0x297a('0xb7')](_[_0x297a('0x125')](_0x752bb5[_0x2d9092],[_0x297a('0xd2'),_0x297a('0x1fb')]))[_0x297a('0xb5')](_0x596457[_0x297a('0x1dd')](_0x3b91ba,_0x752bb5[_0x2d9092]))[_0x297a('0xac')](_0x596457[_0x297a('0xca')](_0x297a('0x1fc'),_0x3b91ba));}}}})[_0x297a('0xac')](loggerGetContactDialer(_0x297a('0x1fd'),_0x3b91ba,_0x489abf));}};Dialer['prototype'][_0x297a('0x154')]=function(_0x1a8a32,_0x5a998d){var _0x1cf02c=this;var _0x6036c0=[];var _0x5ad7ee=_0x5a998d>=0x1?_0x5a998d:0x1;if(_0x1a8a32[_0x297a('0x59')]==='booked'){_0x5ad7ee=0x1;}var _0x4f1847=Math[_0x297a('0x1fe')](_0x1a8a32[_0x297a('0x9d')]*_0x5ad7ee)-_0x1a8a32[_0x297a('0x6f')]-_0x1a8a32[_0x297a('0xc0')];emitVoiceQueueSummary(_0x1a8a32);if(_0x1a8a32[_0x297a('0x1ff')]>0x0){var _0x5d007a=_0x1a8a32['dialLimitQueue']-_0x1a8a32[_0x297a('0x6f')]-_0x1a8a32[_0x297a('0x55')]-_0x1a8a32['temp']-_0x1a8a32[_0x297a('0x53')];if(_0x4f1847>_0x5d007a){_0x4f1847=_0x5d007a;}}if(_0x4f1847>0x0){if(_0x1a8a32[_0x297a('0x59')]==='booked'){_0x4f1847=0x1;}if(_0x4f1847>this[_0x297a('0x25')]){_0x4f1847=this['maxNumberOriginate'];}_0x1a8a32[_0x297a('0xc0')]+=_0x4f1847;for(var _0x324406 in this[_0x297a('0x23')]){if(typeof this[_0x297a('0x23')][_0x324406]!==_0x297a('0x97')){if(this[_0x297a('0x23')][_0x324406][_0x297a('0xa2')]==='not_inuse'&&this[_0x297a('0x23')][_0x324406]['status']===_0x297a('0xd6')){_0x6036c0['push'](this[_0x297a('0x23')][_0x324406]['id']);}}}this[_0x297a('0xbf')](_0x1a8a32['id'],_0x6036c0,_0x4f1847,_0x1a8a32[_0x297a('0x1f7')],_0x1a8a32)[_0x297a('0xb5')](function(_0x161a51){_0x1a8a32[_0x297a('0xc0')]-=_0x4f1847;_0x1a8a32[_0x297a('0xc0')]=_0x1a8a32[_0x297a('0xc0')]>0x0?_0x1a8a32[_0x297a('0xc0')]:0x0;if(!checkContactEmpty(_0x161a51)){_0x1cf02c[_0x297a('0xb2')](_0x1a8a32)['then'](sendMessageReschedule(_0x1a8a32))[_0x297a('0xac')](loggerCatch(_0x297a('0xb3')));}else{_0x1a8a32[_0x297a('0x6f')]+=_0x161a51[_0x297a('0x96')];_0x1a8a32[_0x297a('0x42')]=_0x1a8a32['dialMethod']===_0x297a('0x9')?_0x297a('0x16a'):_0x297a('0x1f8');for(var _0x3c61de=0x0;_0x3c61de<_0x161a51[_0x297a('0x96')];_0x3c61de+=0x1){if(_[_0x297a('0xa9')](_0x161a51[_0x3c61de])||_[_0x297a('0xa9')](_0x161a51[_0x3c61de][_0x297a('0x165')])||_[_0x297a('0xa9')](_0x161a51[_0x3c61de][_0x297a('0x165')][_0x297a('0x166')])){_0x1cf02c[_0x297a('0xcb')](_0x297a('0x1fa'),_0x1a8a32,_0x161a51[_0x3c61de]);}else{_0x1cf02c[_0x297a('0xb4')](_['pick'](_0x161a51[_0x3c61de],['VoiceQueueId',_0x297a('0x1fb')]))[_0x297a('0xb5')](_0x1cf02c[_0x297a('0x1dd')](_0x1a8a32,_0x161a51[_0x3c61de]))['catch'](_0x1cf02c[_0x297a('0xca')](_0x297a('0x1fa'),_0x1a8a32));}}}})['catch'](loggerGetContactDialer(_0x297a('0x200'),_0x1a8a32,_0x4f1847));}};Dialer[_0x297a('0x1c')][_0x297a('0x8e')]=function(_0x3a7fb9){if(_0x3a7fb9[_0x297a('0x1ff')]>0x0){var _0x12b3bc=_0x3a7fb9[_0x297a('0x1ff')]-_0x3a7fb9[_0x297a('0x6f')]-_0x3a7fb9[_0x297a('0x55')];if(_0x12b3bc>0x0){this[_0x297a('0x201')](_0x3a7fb9);}else{loggerPredictiveCalls[_0x297a('0x7f')](_0x297a('0x202'));}}else{this['tryOriginatePredictive'](_0x3a7fb9);}};Dialer[_0x297a('0x1c')]['tryOriginatePredictive']=function(_0x1dc865){var _0x5bcecf=this;var _0x2f966e=[];_0x1dc865[_0x297a('0x6f')]+=0x1;for(var _0x3491e1 in this[_0x297a('0x23')]){if(typeof this['agents'][_0x3491e1]!=='undefined'){if(this['agents'][_0x3491e1]['state']===_0x297a('0x203')&&this[_0x297a('0x23')][_0x3491e1][_0x297a('0xaa')]===_0x297a('0xd6')){_0x2f966e[_0x297a('0x141')](this[_0x297a('0x23')][_0x3491e1]['id']);}}}this['getContactDialer'](_0x1dc865['id'],_0x2f966e,0x1,_0x1dc865[_0x297a('0x1f7')],_0x1dc865)[_0x297a('0xb5')](function(_0x157f11){if(!checkContactEmpty(_0x157f11)){checkContactLowerLimitOriginate(_0x1dc865,0x1,0x0);_0x5bcecf[_0x297a('0xb2')](_0x1dc865)[_0x297a('0xb5')](sendMessageReschedule(_0x1dc865))[_0x297a('0xac')](loggerCatch(_0x297a('0xb3')));}else{_0x1dc865[_0x297a('0x42')]=_0x297a('0x1f8');if(_[_0x297a('0xa9')](_0x157f11[0x0])||_[_0x297a('0xa9')](_0x157f11[0x0]['Contact'])||_['isNil'](_0x157f11[0x0][_0x297a('0x165')][_0x297a('0x166')])){_0x5bcecf[_0x297a('0xcb')](_0x297a('0x1fa'),_0x1dc865,_0x157f11[0x0]);}else{_0x5bcecf[_0x297a('0xb4')](_[_0x297a('0x125')](_0x157f11[0x0],['VoiceQueueId',_0x297a('0x1fb')]))['then'](_0x5bcecf[_0x297a('0x1dd')](_0x1dc865,_0x157f11[0x0]))[_0x297a('0xac')](_0x5bcecf['loggerHandler'](_0x297a('0x204'),_0x1dc865));}}})[_0x297a('0xac')](loggerGetContactDialer('[getContactDialerPredictive]',_0x1dc865,0x1));emitVoiceQueueSummary(_0x1dc865);};Dialer['prototype'][_0x297a('0x1d3')]=function(_0x288a77,_0x68ac41,_0x2c3da3,_0x3fcf08,_0x78b2ab,_0x53428e){loggerPredictive[_0x297a('0x7f')](_0x297a('0x205'));loggerPredictive['info'](_0x297a('0x206'),_0x288a77);loggerPredictive[_0x297a('0x7f')](_0x297a('0x207'),_0x68ac41);loggerPredictive[_0x297a('0x7f')](_0x297a('0x208'),_0x2c3da3);loggerPredictive[_0x297a('0x7f')](_0x297a('0x209'),_0x3fcf08);loggerPredictive[_0x297a('0x7f')]('Amax:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x78b2ab);loggerPredictive[_0x297a('0x7f')]('---------------------------');return new BPromise(function(_0x368716,_0x4029cb){if(_0x288a77<=0x0||isNaN(_0x288a77)){return _0x4029cb(msgResponse(_0x297a('0x20a'),_0x297a('0x4c'),_0x297a('0x20b')+_0x288a77));}if(_0x2c3da3<=0x0||isNaN(_0x2c3da3)){return _0x4029cb(msgResponse('[abandonmentRate]',_0x297a('0x4c'),_0x297a('0x20c')+_0x2c3da3));}if(_0x3fcf08<=0x0||isNaN(_0x3fcf08)){return _0x4029cb(msgResponse(_0x297a('0x20a'),_0x297a('0x4c'),_0x297a('0x20d')+_0x3fcf08));}if(_0x68ac41<=0x0||isNaN(_0x68ac41)){return _0x4029cb(msgResponse(_0x297a('0x20a'),_0x297a('0x4c'),_0x297a('0x20e')+_0x68ac41));}if(_0x78b2ab<=0x0||isNaN(_0x78b2ab)){return _0x4029cb(msgResponse(_0x297a('0x20a'),_0x297a('0x4c'),_0x297a('0x20f')+_0x78b2ab));}_0x53428e=_0x53428e||0x0;var _0x231a62=0x1/_0x2c3da3;var _0x1a1075=0x0;var _0x32b94d=0x0;var _0xdfc6bb=0x0;var _0x53f38=0x0;for(var _0x5d2499=0x0;_0xdfc6bb<_0x78b2ab;_0x5d2499+=0x1){_0x32b94d=_0x5d2499/_0x68ac41;_0x1a1075=(_0x3fcf08*_0x32b94d+_0x53428e)/_0x231a62;_0xdfc6bb=erlangb(_0x1a1075,_0x288a77);_0x53f38=_0x1a1075/_0x288a77*(0x1-erlangb(_0x1a1075,_0x288a77));}return _0x368716({'erlangCalls':_0x5d2499,'erlangCallToSecond':_0x68ac41/_0x5d2499,'erlangAbandonmentRate':_0xdfc6bb,'erlangBusyFactor':_0x53f38});});};Dialer['prototype'][_0x297a('0x1d9')]=function(_0x1d43e7,_0x5a57b9,_0x2601cf,_0x1a8a15,_0x3993c9,_0x1d7bb0){loggerPredictive[_0x297a('0x7f')](_0x297a('0x210'));loggerPredictive[_0x297a('0x7f')](_0x297a('0x206'),_0x1d43e7);loggerPredictive['info'](_0x297a('0x207'),_0x5a57b9);loggerPredictive[_0x297a('0x7f')](_0x297a('0x208'),_0x2601cf);loggerPredictive[_0x297a('0x7f')](_0x297a('0x209'),_0x1a8a15);loggerPredictive['info'](_0x297a('0x211'),_0x3993c9);loggerPredictive[_0x297a('0x7f')]('---------------------------');return new BPromise(function(_0x13581b,_0x3e2697){if(_0x1d43e7<=0x0||isNaN(_0x1d43e7)){return _0x3e2697(msgResponse(_0x297a('0x212'),_0x297a('0x4c'),_0x297a('0x20b')+_0x1d43e7));}if(_0x2601cf<=0x0||isNaN(_0x2601cf)){return _0x3e2697(msgResponse(_0x297a('0x212'),_0x297a('0x4c'),_0x297a('0x20c')+_0x2601cf));}if(_0x1a8a15<=0x0||isNaN(_0x1a8a15)){return _0x3e2697(msgResponse('[busyFactor]',_0x297a('0x4c'),_0x297a('0x20d')+_0x1a8a15));}if(_0x5a57b9<=0x0||isNaN(_0x5a57b9)){return _0x3e2697(msgResponse('[busyFactor]',_0x297a('0x4c'),'interval\x20=\x20'+_0x5a57b9));}if(_0x3993c9<=0x0||isNaN(_0x3993c9)){return _0x3e2697(msgResponse(_0x297a('0x212'),_0x297a('0x4c'),_0x297a('0x213')+_0x3993c9));}_0x1d7bb0=_0x1d7bb0||0x0;var _0x5bb0ae=0x1/_0x2601cf;var _0x2a2149=0x0;var _0x46ab0b=0x0;var _0x4a47d8=0x0;var _0x3cc47a=0x0;for(var _0x589ec9=0x0;_0x3cc47a<_0x3993c9;_0x589ec9+=0x1){_0x46ab0b=_0x589ec9/_0x5a57b9;_0x2a2149=(_0x1a8a15*_0x46ab0b+_0x1d7bb0)/_0x5bb0ae;_0x4a47d8=erlangb(_0x2a2149,_0x1d43e7);_0x3cc47a=_0x2a2149/_0x1d43e7*(0x1-erlangb(_0x2a2149,_0x1d43e7));}return _0x13581b({'erlangCalls':_0x589ec9,'erlangCallToSecond':_0x5a57b9/_0x589ec9,'erlangAbandonmentRate':_0x4a47d8,'erlangBusyFactor':_0x3cc47a});});};module[_0x297a('0x214')]=Dialer;
\ No newline at end of file
index 100be9e..022b76f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad94=['queue','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','uniqueid','calleridname','name','calleridnum','number','starttime','responsetime','droptime','endtime','ringtime','holdtime','talktime','membername','connectedlinename','reason','callback','callbackuniqueid','recallme','ContactId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','moment','milliseconds','seconds','scheduledat','type','campaigntype','outbound'];(function(_0x2bfd54,_0x50ab56){var _0x711287=function(_0xed54a6){while(--_0xed54a6){_0x2bfd54['push'](_0x2bfd54['shift']());}};_0x711287(++_0x50ab56);}(_0xad94,0x99));var _0x4ad9=function(_0x35bf8e,_0x1930fd){_0x35bf8e=_0x35bf8e-0x0;var _0x1b137c=_0xad94[_0x35bf8e];return _0x1b137c;};'use strict';var util=require('util');var _=require('lodash');var moment=require(_0x4ad9('0x0'));function getSeconds(_0x5dd7f6,_0x133841){var _0x25fa89=moment(_0x5dd7f6)['milliseconds'](0x0);var _0x58c4f5=moment(_0x133841)[_0x4ad9('0x1')](0x0);return _0x25fa89['diff'](_0x58c4f5,_0x4ad9('0x2'));}function QueueCallerAbandon(_0x530be9,_0x450c29){this[_0x4ad9('0x3')]=_0x530be9[_0x4ad9('0x3')];this[_0x4ad9('0x4')]=_0x530be9[_0x4ad9('0x4')];this[_0x4ad9('0x5')]=_0x530be9['type']===_0x4ad9('0x6')?_0x4ad9('0x7'):_0x530be9[_0x4ad9('0x4')];this[_0x4ad9('0x8')]=_0x530be9[_0x4ad9('0x8')];this['countcongestionretry']=_0x530be9[_0x4ad9('0x9')];this[_0x4ad9('0xa')]=_0x530be9[_0x4ad9('0xa')];this['countglobal']=_0x530be9[_0x4ad9('0x8')]+_0x530be9[_0x4ad9('0x9')]+_0x530be9[_0x4ad9('0xa')]+_0x530be9[_0x4ad9('0xb')]+_0x530be9[_0x4ad9('0xc')]+_0x530be9[_0x4ad9('0xd')]+_0x530be9[_0x4ad9('0xe')]+_0x530be9[_0x4ad9('0xf')];this[_0x4ad9('0xb')]=_0x530be9[_0x4ad9('0xb')];this[_0x4ad9('0xc')]=_0x530be9[_0x4ad9('0xc')];this['countabandonedretry']=_0x530be9[_0x4ad9('0xd')];this['countmachineretry']=_0x530be9[_0x4ad9('0xe')];this['countagentrejectretry']=_0x530be9[_0x4ad9('0xf')];this[_0x4ad9('0x10')]=_0x450c29[_0x4ad9('0x10')];this[_0x4ad9('0x11')]=_0x530be9[_0x4ad9('0x12')];this[_0x4ad9('0x13')]=_0x530be9[_0x4ad9('0x14')];this[_0x4ad9('0x15')]=_0x530be9[_0x4ad9('0x15')];this[_0x4ad9('0x16')]=_0x530be9['responsetime'];this[_0x4ad9('0x17')]=_0x530be9['droptime'];this[_0x4ad9('0x18')]=this[_0x4ad9('0x17')];this[_0x4ad9('0x19')]=getSeconds(_0x530be9[_0x4ad9('0x16')],_0x530be9['starttime']);this[_0x4ad9('0x1a')]=getSeconds(this['droptime'],_0x530be9[_0x4ad9('0x16')]);this[_0x4ad9('0x1b')]=0x0;this['queue']=_0x450c29['queue'];this[_0x4ad9('0x1c')]=_0x450c29[_0x4ad9('0x1d')];this[_0x4ad9('0x1e')]=_0x450c29[_0x4ad9('0x1e')];this[_0x4ad9('0x1f')]=_0x530be9['callback'];this[_0x4ad9('0x20')]=_0x530be9[_0x4ad9('0x20')];this['callbackat']=_0x530be9['callbackat'];this['recallme']=_0x530be9[_0x4ad9('0x21')];this[_0x4ad9('0x22')]=_0x530be9[_0x4ad9('0x22')];this['ListId']=_0x530be9['ListId'];this[_0x4ad9('0x23')]=_0x530be9['UserId'];this[_0x4ad9('0x24')]=_0x530be9[_0x4ad9('0x24')];this['CampaignId']=_0x530be9[_0x4ad9('0x25')];this[_0x4ad9('0x26')]=_0x530be9[_0x4ad9('0x26')]||'';this[_0x4ad9('0x27')]=_0x530be9[_0x4ad9('0x27')]||'';}module['exports']=QueueCallerAbandon;
\ No newline at end of file
+var _0xa267=['countnoanswerretry','countglobal','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','countnosuchnumberretry','uniqueid','name','calleridnum','number','responsetime','endtime','ringtime','holdtime','talktime','queue','membername','connectedlinename','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','util','lodash','moment','milliseconds','diff','seconds','scheduledat','type','campaigntype','outbound','countbusyretry','countcongestionretry'];(function(_0x29d94e,_0xf386d6){var _0x106237=function(_0x327501){while(--_0x327501){_0x29d94e['push'](_0x29d94e['shift']());}};_0x106237(++_0xf386d6);}(_0xa267,0xcb));var _0x7a26=function(_0x103d8a,_0x437e57){_0x103d8a=_0x103d8a-0x0;var _0x5a85dc=_0xa267[_0x103d8a];return _0x5a85dc;};'use strict';var util=require(_0x7a26('0x0'));var _=require(_0x7a26('0x1'));var moment=require(_0x7a26('0x2'));function getSeconds(_0x52e054,_0x45a174){var _0x2fc5d8=moment(_0x52e054)[_0x7a26('0x3')](0x0);var _0x4d52ba=moment(_0x45a174)[_0x7a26('0x3')](0x0);return _0x2fc5d8[_0x7a26('0x4')](_0x4d52ba,_0x7a26('0x5'));}function QueueCallerAbandon(_0x1d048b,_0x4aafaf){this[_0x7a26('0x6')]=_0x1d048b[_0x7a26('0x6')];this[_0x7a26('0x7')]=_0x1d048b['type'];this[_0x7a26('0x8')]=_0x1d048b[_0x7a26('0x7')]===_0x7a26('0x9')?'queue':_0x1d048b['type'];this[_0x7a26('0xa')]=_0x1d048b[_0x7a26('0xa')];this[_0x7a26('0xb')]=_0x1d048b[_0x7a26('0xb')];this[_0x7a26('0xc')]=_0x1d048b[_0x7a26('0xc')];this[_0x7a26('0xd')]=_0x1d048b[_0x7a26('0xa')]+_0x1d048b['countcongestionretry']+_0x1d048b[_0x7a26('0xc')]+_0x1d048b['countnosuchnumberretry']+_0x1d048b[_0x7a26('0xe')]+_0x1d048b[_0x7a26('0xf')]+_0x1d048b[_0x7a26('0x10')]+_0x1d048b[_0x7a26('0x11')];this[_0x7a26('0x12')]=_0x1d048b[_0x7a26('0x12')];this[_0x7a26('0xe')]=_0x1d048b['countdropretry'];this[_0x7a26('0xf')]=_0x1d048b[_0x7a26('0xf')];this[_0x7a26('0x10')]=_0x1d048b[_0x7a26('0x10')];this[_0x7a26('0x11')]=_0x1d048b[_0x7a26('0x11')];this[_0x7a26('0x13')]=_0x4aafaf[_0x7a26('0x13')];this['calleridname']=_0x1d048b[_0x7a26('0x14')];this[_0x7a26('0x15')]=_0x1d048b[_0x7a26('0x16')];this['starttime']=_0x1d048b['starttime'];this[_0x7a26('0x17')]=_0x1d048b[_0x7a26('0x17')];this['droptime']=_0x1d048b['droptime'];this[_0x7a26('0x18')]=this['droptime'];this[_0x7a26('0x19')]=getSeconds(_0x1d048b['responsetime'],_0x1d048b['starttime']);this[_0x7a26('0x1a')]=getSeconds(this['droptime'],_0x1d048b[_0x7a26('0x17')]);this[_0x7a26('0x1b')]=0x0;this[_0x7a26('0x1c')]=_0x4aafaf['queue'];this[_0x7a26('0x1d')]=_0x4aafaf[_0x7a26('0x1e')];this[_0x7a26('0x1f')]=_0x4aafaf['reason'];this['callback']=_0x1d048b[_0x7a26('0x20')];this[_0x7a26('0x21')]=_0x1d048b[_0x7a26('0x21')];this['callbackat']=_0x1d048b[_0x7a26('0x22')];this[_0x7a26('0x23')]=_0x1d048b[_0x7a26('0x23')];this[_0x7a26('0x24')]=_0x1d048b[_0x7a26('0x24')];this[_0x7a26('0x25')]=_0x1d048b['ListId'];this[_0x7a26('0x26')]=_0x1d048b[_0x7a26('0x26')];this[_0x7a26('0x27')]=_0x1d048b[_0x7a26('0x27')];this[_0x7a26('0x28')]=_0x1d048b[_0x7a26('0x28')];this[_0x7a26('0x29')]=_0x1d048b['originatecalleridnum']||'';this[_0x7a26('0x2a')]=_0x1d048b['originatecalleridname']||'';}module['exports']=QueueCallerAbandon;
\ No newline at end of file
index 51caac1..48a60fd 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(_0x10ef29,_0x246697){var _0x329848=function(_0x2f387b){while(--_0x2f387b){_0x10ef29['push'](_0x10ef29['shift']());}};_0x329848(++_0x246697);}(_0xa9e0,0x123));var _0x0a9e=function(_0xc6be3a,_0x540e05){_0xc6be3a=_0xc6be3a-0x0;var _0x56a310=_0xa9e0[_0xc6be3a];return _0x56a310;};'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(_0x98a2d0,_0x78a6fb){var _0x5ae4f3=function(_0x236c10){while(--_0x236c10){_0x98a2d0['push'](_0x98a2d0['shift']());}};_0x5ae4f3(++_0x78a6fb);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5e3b04,_0xbb6795){_0x5e3b04=_0x5e3b04-0x0;var _0x1fc44d=_0xa9e0[_0x5e3b04];return _0x1fc44d;};'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 6f1b908..6e48cb7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb840=['transferrate','calleridnum','/var/opt/motion2/server/files/attachments/','\x20result\x20conversion\x20file\x20','message','create','.pdf','then','parse','catch','error','\x20notify\x20','stringify','\x20receiveFax\x20','merge','pick','response','reason','update','AttachmentId','SENDING\x20FAILED\x20','logger','updateStatus','[Fax][Message][NoUpdate1]','finally','\x20hangup\x20sendFile\x20','\x20hangup\x20faxRiceive\x20','faxpages','SUCCESS','faxstatusstring','SENDING\x20FAILED','send','execOriginate','Fax\x20received','[Fax][execOriginate][failure]','Fax\x20failed','checkTrunk','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','path','execute','format','%s/%s.tif','dir','Action','variablesAction','addVariables','ext','isTrunkReachable','isNil','active','SIP/%s','reachable','[Fax][checkTrunk][Trunk\x20not\x20work]','\x20Trunk\x20is\x20not\x20active','Trunk\x20not\x20working','[Fax][checkTrunk][Empty\x20Fax]','Empty\x20Fax','[Fax][checkTrunk][Empty\x20path]','Empty\x20path','Is\x20Valid','exports','util','lodash','uuid','moment','tiff2pdf','./util/gs','../../../config/logger','fax','../ami','./channel','./util/util','../rpc/faxAccount','../rpc/attachment','../rpc/faxMessage','channels','faxAccounts','trunks','actions','newchannel','syncNewchannel','bind','syncVarSet','newstate','syncNewState','newexten','syncNewExten','faxstatus','syncFaxStatus','receivefax','syncReceiveFax','hangup','syncHangup','originateresponse','syncOriginateResponse','prototype','context','exten','uniqueid','name','info','\x20syncNewchannel\x20','channel','variable','hasOwnProperty','channelstate','channelstatedesc','value','operation','status','localstationid','filename','\x20syncFaxStatus\x20','remotestationid','pagestransferred','resolution'];(function(_0x2e4bcf,_0x133124){var _0x35f8dd=function(_0x4f49a4){while(--_0x4f49a4){_0x2e4bcf['push'](_0x2e4bcf['shift']());}};_0x35f8dd(++_0x133124);}(_0xb840,0x12b));var _0x0b84=function(_0x18f6ee,_0x241f93){_0x18f6ee=_0x18f6ee-0x0;var _0x42ac3f=_0xb840[_0x18f6ee];return _0x42ac3f;};'use strict';var util=require(_0x0b84('0x0'));var _=require(_0x0b84('0x1'));var BPromise=require('bluebird');var uuid=require(_0x0b84('0x2'));var moment=require(_0x0b84('0x3'));var path=require('path');var tiff2pdf=require(_0x0b84('0x4'));var gs=require(_0x0b84('0x5'));var logger=require(_0x0b84('0x6'))(_0x0b84('0x7'));var ami=require(_0x0b84('0x8'));var rpcDb=require('./rpcDb');var Channel=require(_0x0b84('0x9'));var ut=require(_0x0b84('0xa'));var Action=require('./action');var faxAccount=require(_0x0b84('0xb'));var attachment=require(_0x0b84('0xc'));var faxMessage=require(_0x0b84('0xd'));function Fax(_0x2e5dd3){this[_0x0b84('0xe')]={};this[_0x0b84('0xf')]=_0x2e5dd3[_0x0b84('0xf')];this[_0x0b84('0x10')]=_0x2e5dd3['trunks'];this[_0x0b84('0x11')]={};ami['on'](_0x0b84('0x12'),this[_0x0b84('0x13')][_0x0b84('0x14')](this));ami['on']('varset',this[_0x0b84('0x15')]['bind'](this));ami['on'](_0x0b84('0x16'),this[_0x0b84('0x17')][_0x0b84('0x14')](this));ami['on'](_0x0b84('0x18'),this[_0x0b84('0x19')][_0x0b84('0x14')](this));ami['on'](_0x0b84('0x1a'),this[_0x0b84('0x1b')][_0x0b84('0x14')](this));ami['on'](_0x0b84('0x1c'),this[_0x0b84('0x1d')][_0x0b84('0x14')](this));ami['on'](_0x0b84('0x1e'),this[_0x0b84('0x1f')]['bind'](this));ami['on'](_0x0b84('0x20'),this[_0x0b84('0x21')][_0x0b84('0x14')](this));}Fax[_0x0b84('0x22')]['syncNewchannel']=function(_0x2ed8ce){if(_0x2ed8ce[_0x0b84('0x23')]==='from-voip-provider'){for(var _0x4354f1 in this[_0x0b84('0xf')]){if(this[_0x0b84('0xf')]['hasOwnProperty'](_0x4354f1)){if(_0x2ed8ce[_0x0b84('0x24')]===this[_0x0b84('0xf')][_0x4354f1]['localstationid']){this[_0x0b84('0xe')][_0x2ed8ce[_0x0b84('0x25')]]={};this[_0x0b84('0xe')][_0x2ed8ce['uniqueid']]['channel']=_0x2ed8ce['channel'];this[_0x0b84('0xe')][_0x2ed8ce['uniqueid']]['id']=this[_0x0b84('0xf')][_0x4354f1]['id'];this[_0x0b84('0xe')][_0x2ed8ce['uniqueid']][_0x0b84('0x26')]=this[_0x0b84('0xf')][_0x4354f1][_0x0b84('0x26')];logger[_0x0b84('0x27')](_0x2ed8ce[_0x0b84('0x25')],_0x0b84('0x28'));}}}}if(this[_0x0b84('0x11')][_0x2ed8ce[_0x0b84('0x25')]]){this['channels'][_0x2ed8ce[_0x0b84('0x25')]]={};this[_0x0b84('0xe')][_0x2ed8ce[_0x0b84('0x25')]]['channel']=_0x2ed8ce[_0x0b84('0x29')];logger[_0x0b84('0x27')](_0x2ed8ce['uniqueid'],_0x0b84('0x28'));}};Fax['prototype'][_0x0b84('0x15')]=function(_0x1216f4){if(this[_0x0b84('0xe')][_0x1216f4['uniqueid']]){for(var _0x3dda91 in _0x1216f4[_0x0b84('0x2a')]){if(_0x1216f4[_0x0b84('0x2a')][_0x0b84('0x2b')](_0x3dda91)){this[_0x0b84('0xe')][_0x1216f4['uniqueid']][_0x3dda91]=_0x1216f4['value'];}}}};Fax[_0x0b84('0x22')][_0x0b84('0x17')]=function(_0x638b9d){if(this[_0x0b84('0xe')][_0x638b9d[_0x0b84('0x25')]]){this[_0x0b84('0xe')][_0x638b9d['uniqueid']][_0x0b84('0x2c')]=_0x638b9d[_0x0b84('0x2c')];this[_0x0b84('0xe')][_0x638b9d[_0x0b84('0x25')]][_0x0b84('0x2d')]=_0x638b9d['channelstatedesc'];}};Fax['prototype'][_0x0b84('0x19')]=function(_0x36c14b){if(this[_0x0b84('0xe')][_0x36c14b['uniqueid']]){for(var _0x4a168f in _0x36c14b[_0x0b84('0x2a')]){if(_0x36c14b[_0x0b84('0x2a')][_0x0b84('0x2b')](_0x4a168f)){this[_0x0b84('0xe')][_0x36c14b['uniqueid']][_0x4a168f]=_0x36c14b[_0x0b84('0x2e')];}}}};Fax['prototype'][_0x0b84('0x1b')]=function(_0x31a46d){if(this[_0x0b84('0xe')][_0x31a46d[_0x0b84('0x25')]]){this[_0x0b84('0xe')][_0x31a46d[_0x0b84('0x25')]][_0x0b84('0x2f')]=_0x31a46d['operation'];this[_0x0b84('0xe')][_0x31a46d[_0x0b84('0x25')]]['status']=_0x31a46d[_0x0b84('0x30')];this['channels'][_0x31a46d[_0x0b84('0x25')]][_0x0b84('0x31')]=_0x31a46d['localstationid'];this[_0x0b84('0xe')][_0x31a46d[_0x0b84('0x25')]][_0x0b84('0x32')]=_0x31a46d[_0x0b84('0x32')];logger[_0x0b84('0x27')](_0x31a46d[_0x0b84('0x25')],_0x0b84('0x33'));}};Fax[_0x0b84('0x22')][_0x0b84('0x1d')]=function(_0x1fc5c8){var _0xc7a138=this;if(this[_0x0b84('0xe')][_0x1fc5c8['uniqueid']]){var _0x21f9e5=this[_0x0b84('0xe')][_0x1fc5c8[_0x0b84('0x25')]]['id'];this[_0x0b84('0xe')][_0x1fc5c8[_0x0b84('0x25')]][_0x0b84('0x34')]=_0x1fc5c8['remotestationid'];this[_0x0b84('0xe')][_0x1fc5c8[_0x0b84('0x25')]][_0x0b84('0x35')]=_0x1fc5c8[_0x0b84('0x35')];this[_0x0b84('0xe')][_0x1fc5c8['uniqueid']][_0x0b84('0x31')]=_0x1fc5c8[_0x0b84('0x31')];this[_0x0b84('0xe')][_0x1fc5c8[_0x0b84('0x25')]][_0x0b84('0x36')]=_0x1fc5c8[_0x0b84('0x36')];this[_0x0b84('0xe')][_0x1fc5c8[_0x0b84('0x25')]]['transferrate']=_0x1fc5c8[_0x0b84('0x37')];this[_0x0b84('0xe')][_0x1fc5c8['uniqueid']][_0x0b84('0x32')]=_0x1fc5c8['filename'];this['channels'][_0x1fc5c8[_0x0b84('0x25')]][_0x0b84('0x38')]=_0x1fc5c8['calleridnum'];if(this['channels'][_0x1fc5c8[_0x0b84('0x25')]][_0x0b84('0x35')]>0x0){tiff2pdf(_0x1fc5c8[_0x0b84('0x32')],_0x0b84('0x39'),function(_0xd6ae90){logger[_0x0b84('0x27')](_0x1fc5c8[_0x0b84('0x25')],_0x0b84('0x3a'),_0xd6ae90[_0x0b84('0x3b')]);attachment[_0x0b84('0x3c')]({'name':path['parse'](_0x1fc5c8[_0x0b84('0x32')])[_0x0b84('0x26')],'basename':path['parse'](_0x1fc5c8['filename'])['name']+_0x0b84('0x3d'),'type':'application/pdf'})[_0x0b84('0x3e')](function(_0x344def){faxAccount['notify'](_0x21f9e5,{'from':_0x1fc5c8[_0x0b84('0x38')],'mapKey':_0x0b84('0x7'),'body':path[_0x0b84('0x3f')](_0x1fc5c8[_0x0b84('0x32')])[_0x0b84('0x26')]+_0x0b84('0x3d'),'AttachmentId':_0x344def['id']})[_0x0b84('0x40')](function(_0x351919){logger[_0x0b84('0x41')](_0x1fc5c8[_0x0b84('0x25')],_0x0b84('0x42'),JSON[_0x0b84('0x43')](_0x351919));});})[_0x0b84('0x40')](function(_0x128e19){logger['error'](_0x1fc5c8['uniqueid'],_0x0b84('0x44'),JSON['stringify'](_0x128e19));});});}logger[_0x0b84('0x27')](_0x1fc5c8[_0x0b84('0x25')],_0x0b84('0x44'));}};Fax['prototype'][_0x0b84('0x21')]=function(_0x42603f){if(this[_0x0b84('0x11')][_0x42603f['uniqueid']]){_[_0x0b84('0x45')](this[_0x0b84('0xe')][_0x42603f[_0x0b84('0x25')]],_[_0x0b84('0x46')](_0x42603f,[_0x0b84('0x47'),_0x0b84('0x48')]));}};function updateStatus(_0x37008b){if(_0x37008b['AttachmentId']){faxMessage[_0x0b84('0x49')](_0x37008b[_0x0b84('0x4a')],{'failMessage':_0x0b84('0x4b')})['then'](function(_0x307908){ut[_0x0b84('0x4c')]('[Fax][Message][Error][Updated]',_0x307908);})[_0x0b84('0x40')](function(_0x11f90a){ut[_0x0b84('0x4c')]('[Fax][Message][Error][NoUpdate1]',_0x11f90a);});}else{ut['logger']('[Fax][Message][Error][NoUpdate2]');}}Fax[_0x0b84('0x22')][_0x0b84('0x4d')]=function(_0x58662c,_0x4fa724,_0x28cb2c){var _0x1c718e=this;var _0x7955f9={};if(_0x4fa724){_0x7955f9={'read':_0x4fa724};}else{_0x7955f9={'failMessage':_0x28cb2c};}if(this[_0x0b84('0x11')][_0x58662c][_0x0b84('0x4a')]){faxMessage[_0x0b84('0x49')](this[_0x0b84('0x11')][_0x58662c]['AttachmentId'],_0x7955f9)['then'](function(_0x422cd8){ut[_0x0b84('0x4c')]('[Fax][Message][Updated]',_0x422cd8);})[_0x0b84('0x40')](function(_0x4b1da2){ut[_0x0b84('0x4c')](_0x0b84('0x4e'),_0x4b1da2);})[_0x0b84('0x4f')](function(){delete _0x1c718e['channels'][_0x58662c];delete _0x1c718e[_0x0b84('0x11')][_0x58662c];});}else{ut[_0x0b84('0x4c')]('[Fax][Message][NoUpdate2]');delete this['channels'][_0x58662c];delete this[_0x0b84('0x11')][_0x58662c];}};Fax[_0x0b84('0x22')]['syncHangup']=function(_0x1099d5){var _0x56d692=this;if(this['channels'][_0x1099d5['uniqueid']]){if(this['actions'][_0x1099d5[_0x0b84('0x25')]]){this[_0x0b84('0xe')][_0x1099d5['uniqueid']]['id']=this[_0x0b84('0x11')][_0x1099d5[_0x0b84('0x25')]]['id'];this[_0x0b84('0xe')][_0x1099d5[_0x0b84('0x25')]][_0x0b84('0x26')]=this[_0x0b84('0x11')][_0x1099d5[_0x0b84('0x25')]][_0x0b84('0x26')];}logger['info'](_0x1099d5[_0x0b84('0x25')],this[_0x0b84('0x11')][_0x1099d5[_0x0b84('0x25')]]?_0x0b84('0x50'):_0x0b84('0x51'),JSON[_0x0b84('0x43')](this[_0x0b84('0xe')][_0x1099d5['uniqueid']]));if(this[_0x0b84('0x11')][_0x1099d5['uniqueid']]){if(this[_0x0b84('0xe')][_0x1099d5[_0x0b84('0x25')]][_0x0b84('0x52')]>0x0&&this[_0x0b84('0xe')][_0x1099d5[_0x0b84('0x25')]]['faxstatus']===_0x0b84('0x53')){this[_0x0b84('0x4d')](_0x1099d5[_0x0b84('0x25')],!![]);}else{this[_0x0b84('0x4d')](_0x1099d5[_0x0b84('0x25')],![],this[_0x0b84('0xe')][_0x1099d5[_0x0b84('0x25')]][_0x0b84('0x54')]?'SENDING\x20FAILED:\x20'+this[_0x0b84('0xe')][_0x1099d5['uniqueid']][_0x0b84('0x54')]:_0x0b84('0x55'));}}}};Fax[_0x0b84('0x22')][_0x0b84('0x56')]=function(_0x5814cb){var _0x147c60=this;return new BPromise(function(_0x38bba5,_0x1a55d3){_0x147c60[_0x0b84('0x57')](_0x5814cb,_0x147c60[_0x0b84('0xf')][_0x5814cb['FaxAccountId']])['then'](function(_0x389c54){ut[_0x0b84('0x4c')]('[Fax][execOriginate][success]',_0x389c54);_0x38bba5(ut[_0x0b84('0x3b')](_0x0b84('0x58')));})[_0x0b84('0x40')](function(_0x363663){ut[_0x0b84('0x4c')](_0x0b84('0x59'),_0x363663);updateStatus(_0x5814cb);_0x1a55d3(ut[_0x0b84('0x3b')](_0x0b84('0x5a')));});});};Fax[_0x0b84('0x22')]['checkAfterSend']=function(_0x3650d4){var _0x3d04ad=this;return new BPromise(function(_0x1d21e9,_0x102c33){var _0x132ad6=_0x3d04ad[_0x0b84('0x5b')](_0x3d04ad[_0x0b84('0xf')][_0x3650d4['FaxAccountId']]['Trunk'],_0x3650d4);if(_0x132ad6[_0x0b84('0x5c')]){_0x1d21e9(ut['message'](_0x0b84('0x5d')));}else{_0x102c33(ut[_0x0b84('0x3b')](_0x132ad6[_0x0b84('0x3b')]));}});};function originate(_0x56e701,_0x2ba3e2,_0x1b78d2){return new BPromise(function(_0x1f5d72,_0x1168f9){if(_0x1b78d2){var _0x1214d3=util['format'](_0x0b84('0x5e'),path[_0x0b84('0x3f')](_0x56e701[_0x0b84('0x5f')])[_0x0b84('0x26')],_0x56e701[_0x0b84('0x5f')]);gs[_0x0b84('0x60')](_0x1214d3)[_0x0b84('0x3e')](function(){_0x56e701[_0x0b84('0x5f')]=util[_0x0b84('0x61')](_0x0b84('0x62'),path[_0x0b84('0x3f')](_0x56e701[_0x0b84('0x5f')])[_0x0b84('0x63')],path[_0x0b84('0x3f')](_0x56e701[_0x0b84('0x5f')])[_0x0b84('0x26')]);_0x2ba3e2['XMF-PATH']=_0x56e701[_0x0b84('0x5f')];ut[_0x0b84('0x4c')]('Convert\x20pdf\x20to\x20tif','');ami[_0x0b84('0x64')](ut[_0x0b84('0x65')](_0x56e701,_0x2ba3e2))[_0x0b84('0x3e')](function(_0x25b4da){_0x1f5d72(_0x25b4da);})['catch'](function(_0x544105){_0x1168f9(_0x544105);});})['catch'](function(_0x1bb170){_0x1168f9(_0x1bb170);});}else{ami[_0x0b84('0x64')](ut[_0x0b84('0x65')](_0x56e701,_0x2ba3e2))[_0x0b84('0x3e')](function(_0x177f1a){_0x1f5d72(_0x177f1a);})[_0x0b84('0x40')](function(_0x36429f){_0x1168f9(_0x36429f);});}});}Fax[_0x0b84('0x22')][_0x0b84('0x57')]=function(_0x4eb6cf,_0x34ef55){var _0x247539=this;return new BPromise(function(_0x560d6e,_0x1a01b0){var _0x40de50=uuid['v4']();var _0x2448f8=ut[_0x0b84('0x66')](_0x4eb6cf,_0x34ef55);_0x247539[_0x0b84('0x11')][_0x40de50]=new Action(_0x40de50,_0x34ef55,_0x4eb6cf);var _0x432d37=_0x247539[_0x0b84('0x11')][_0x40de50];if(path['parse'](_0x4eb6cf[_0x0b84('0x5f')])[_0x0b84('0x67')]===_0x0b84('0x3d')){originate(_0x432d37,_0x2448f8,!![])['then'](function(_0x352893){_0x560d6e(_0x352893);})[_0x0b84('0x40')](function(_0x894da3){_0x1a01b0(_0x894da3);});}else{originate(_0x432d37,_0x2448f8,![])['then'](function(_0x38833f){_0x560d6e(_0x38833f);})[_0x0b84('0x40')](function(_0x4c0087){_0x1a01b0(_0x4c0087);});}});};Fax[_0x0b84('0x22')][_0x0b84('0x68')]=function(_0x3b3c7c){return!_[_0x0b84('0x69')](_0x3b3c7c)&&!_[_0x0b84('0x69')](_0x3b3c7c[_0x0b84('0x26')])&&!_['isNil'](_0x3b3c7c[_0x0b84('0x6a')])&&_0x3b3c7c[_0x0b84('0x6a')]&&!_[_0x0b84('0x69')](this[_0x0b84('0x10')][util[_0x0b84('0x61')](_0x0b84('0x6b'),_0x3b3c7c[_0x0b84('0x26')])])&&!_[_0x0b84('0x69')](this['trunks'][util[_0x0b84('0x61')]('SIP/%s',_0x3b3c7c[_0x0b84('0x26')])][_0x0b84('0x30')])&&(this['trunks'][util[_0x0b84('0x61')](_0x0b84('0x6b'),_0x3b3c7c[_0x0b84('0x26')])]['status']===_0x0b84('0x6c')||this[_0x0b84('0x10')][util[_0x0b84('0x61')](_0x0b84('0x6b'),_0x3b3c7c[_0x0b84('0x26')])]['status']==='unmonitored');};Fax[_0x0b84('0x22')][_0x0b84('0x5b')]=function(_0x250d87,_0x630a66){if(!this[_0x0b84('0x68')](_0x250d87)){ut[_0x0b84('0x4c')](_0x0b84('0x6d'),_[_0x0b84('0x69')](_0x250d87)?'':_0x250d87['name']+_0x0b84('0x6e'));return{'isValid':![],'message':_0x0b84('0x6f')};}if(_[_0x0b84('0x69')](_0x630a66[_0x0b84('0x7')])){ut[_0x0b84('0x4c')](_0x0b84('0x70'),JSON[_0x0b84('0x43')](_0x630a66));return{'isValid':![],'message':_0x0b84('0x71')};}if(_[_0x0b84('0x69')](_0x630a66['path'])){ut[_0x0b84('0x4c')](_0x0b84('0x72'),JSON['stringify'](_0x630a66));return{'isValid':![],'message':_0x0b84('0x73')};}return{'isValid':!![],'message':_0x0b84('0x74')};};module[_0x0b84('0x75')]=Fax;
\ No newline at end of file
+var _0x4b17=['[Fax][Message][NoUpdate2]','\x20hangup\x20sendFile\x20','\x20hangup\x20faxRiceive\x20','faxstatus','SUCCESS','faxstatusstring','SENDING\x20FAILED:\x20','SENDING\x20FAILED','send','execOriginate','FaxAccountId','Fax\x20received','[Fax][execOriginate][failure]','Fax\x20failed','checkAfterSend','checkTrunk','Trunk','isValid','Trunk\x20Reachable','format','gs\x20-q\x20-dNOPAUSE\x20-dBATCH\x20-sDEVICE=tiffg4\x20-sPAPERSIZE=letter\x20-sOutputFile=/var/opt/motion2/server/files/attachments/%s.tif\x20\x20%s\x20-c\x20quit','%s/%s.tif','dir','XMF-PATH','Convert\x20pdf\x20to\x20tif','Action','variablesAction','ext','.pdf','isTrunkReachable','isNil','SIP/%s','status','reachable','unmonitored','\x20Trunk\x20is\x20not\x20active','Trunk\x20not\x20working','[Fax][checkTrunk][Empty\x20Fax]','Empty\x20Fax','[Fax][checkTrunk][Empty\x20path]','Empty\x20path','util','bluebird','moment','path','./util/gs','../ami','./rpcDb','./channel','./util/util','./action','../rpc/faxAccount','../rpc/attachment','channels','faxAccounts','trunks','actions','newchannel','bind','varset','syncVarSet','syncNewState','syncNewExten','receivefax','hangup','syncHangup','originateresponse','syncOriginateResponse','syncNewchannel','context','from-voip-provider','exten','uniqueid','channel','name','info','\x20syncNewchannel\x20','prototype','variable','hasOwnProperty','value','channelstate','channelstatedesc','operation','filename','\x20syncFaxStatus\x20','remotestationid','pagestransferred','localstationid','resolution','transferrate','calleridnum','\x20result\x20conversion\x20file\x20','message','parse','application/pdf','then','notify','fax','catch','error','\x20notify\x20','\x20receiveFax\x20','stringify','merge','response','reason','AttachmentId','update','logger','[Fax][Message][Error][Updated]','[Fax][Message][Error][NoUpdate2]','updateStatus','[Fax][Message][Updated]','finally'];(function(_0xb53767,_0x3f98c7){var _0x5b0308=function(_0x3070d3){while(--_0x3070d3){_0xb53767['push'](_0xb53767['shift']());}};_0x5b0308(++_0x3f98c7);}(_0x4b17,0x10f));var _0x74b1=function(_0x1203f,_0x554bbc){_0x1203f=_0x1203f-0x0;var _0x365f0a=_0x4b17[_0x1203f];return _0x365f0a;};'use strict';var util=require(_0x74b1('0x0'));var _=require('lodash');var BPromise=require(_0x74b1('0x1'));var uuid=require('uuid');var moment=require(_0x74b1('0x2'));var path=require(_0x74b1('0x3'));var tiff2pdf=require('tiff2pdf');var gs=require(_0x74b1('0x4'));var logger=require('../../../config/logger')('fax');var ami=require(_0x74b1('0x5'));var rpcDb=require(_0x74b1('0x6'));var Channel=require(_0x74b1('0x7'));var ut=require(_0x74b1('0x8'));var Action=require(_0x74b1('0x9'));var faxAccount=require(_0x74b1('0xa'));var attachment=require(_0x74b1('0xb'));var faxMessage=require('../rpc/faxMessage');function Fax(_0x287e3e){this[_0x74b1('0xc')]={};this[_0x74b1('0xd')]=_0x287e3e[_0x74b1('0xd')];this[_0x74b1('0xe')]=_0x287e3e['trunks'];this[_0x74b1('0xf')]={};ami['on'](_0x74b1('0x10'),this['syncNewchannel'][_0x74b1('0x11')](this));ami['on'](_0x74b1('0x12'),this[_0x74b1('0x13')][_0x74b1('0x11')](this));ami['on']('newstate',this[_0x74b1('0x14')]['bind'](this));ami['on']('newexten',this[_0x74b1('0x15')][_0x74b1('0x11')](this));ami['on']('faxstatus',this['syncFaxStatus']['bind'](this));ami['on'](_0x74b1('0x16'),this['syncReceiveFax']['bind'](this));ami['on'](_0x74b1('0x17'),this[_0x74b1('0x18')][_0x74b1('0x11')](this));ami['on'](_0x74b1('0x19'),this[_0x74b1('0x1a')][_0x74b1('0x11')](this));}Fax['prototype'][_0x74b1('0x1b')]=function(_0x213b28){if(_0x213b28[_0x74b1('0x1c')]===_0x74b1('0x1d')){for(var _0xde2736 in this[_0x74b1('0xd')]){if(this[_0x74b1('0xd')]['hasOwnProperty'](_0xde2736)){if(_0x213b28[_0x74b1('0x1e')]===this[_0x74b1('0xd')][_0xde2736]['localstationid']){this[_0x74b1('0xc')][_0x213b28[_0x74b1('0x1f')]]={};this[_0x74b1('0xc')][_0x213b28[_0x74b1('0x1f')]][_0x74b1('0x20')]=_0x213b28[_0x74b1('0x20')];this[_0x74b1('0xc')][_0x213b28[_0x74b1('0x1f')]]['id']=this['faxAccounts'][_0xde2736]['id'];this[_0x74b1('0xc')][_0x213b28['uniqueid']]['name']=this['faxAccounts'][_0xde2736][_0x74b1('0x21')];logger[_0x74b1('0x22')](_0x213b28[_0x74b1('0x1f')],_0x74b1('0x23'));}}}}if(this[_0x74b1('0xf')][_0x213b28['uniqueid']]){this[_0x74b1('0xc')][_0x213b28['uniqueid']]={};this[_0x74b1('0xc')][_0x213b28[_0x74b1('0x1f')]][_0x74b1('0x20')]=_0x213b28[_0x74b1('0x20')];logger[_0x74b1('0x22')](_0x213b28[_0x74b1('0x1f')],_0x74b1('0x23'));}};Fax[_0x74b1('0x24')]['syncVarSet']=function(_0x322e61){if(this[_0x74b1('0xc')][_0x322e61[_0x74b1('0x1f')]]){for(var _0x5c32d2 in _0x322e61[_0x74b1('0x25')]){if(_0x322e61[_0x74b1('0x25')][_0x74b1('0x26')](_0x5c32d2)){this[_0x74b1('0xc')][_0x322e61[_0x74b1('0x1f')]][_0x5c32d2]=_0x322e61[_0x74b1('0x27')];}}}};Fax[_0x74b1('0x24')][_0x74b1('0x14')]=function(_0x4fbe3d){if(this[_0x74b1('0xc')][_0x4fbe3d[_0x74b1('0x1f')]]){this['channels'][_0x4fbe3d[_0x74b1('0x1f')]][_0x74b1('0x28')]=_0x4fbe3d[_0x74b1('0x28')];this['channels'][_0x4fbe3d[_0x74b1('0x1f')]][_0x74b1('0x29')]=_0x4fbe3d['channelstatedesc'];}};Fax[_0x74b1('0x24')][_0x74b1('0x15')]=function(_0x2211b2){if(this[_0x74b1('0xc')][_0x2211b2[_0x74b1('0x1f')]]){for(var _0x32a8d6 in _0x2211b2[_0x74b1('0x25')]){if(_0x2211b2[_0x74b1('0x25')]['hasOwnProperty'](_0x32a8d6)){this[_0x74b1('0xc')][_0x2211b2['uniqueid']][_0x32a8d6]=_0x2211b2['value'];}}}};Fax[_0x74b1('0x24')]['syncFaxStatus']=function(_0x52d96f){if(this[_0x74b1('0xc')][_0x52d96f[_0x74b1('0x1f')]]){this[_0x74b1('0xc')][_0x52d96f[_0x74b1('0x1f')]][_0x74b1('0x2a')]=_0x52d96f[_0x74b1('0x2a')];this[_0x74b1('0xc')][_0x52d96f[_0x74b1('0x1f')]]['status']=_0x52d96f['status'];this['channels'][_0x52d96f[_0x74b1('0x1f')]]['localstationid']=_0x52d96f['localstationid'];this[_0x74b1('0xc')][_0x52d96f[_0x74b1('0x1f')]][_0x74b1('0x2b')]=_0x52d96f['filename'];logger[_0x74b1('0x22')](_0x52d96f['uniqueid'],_0x74b1('0x2c'));}};Fax[_0x74b1('0x24')]['syncReceiveFax']=function(_0x514d0e){var _0x1be766=this;if(this[_0x74b1('0xc')][_0x514d0e['uniqueid']]){var _0x5e2007=this[_0x74b1('0xc')][_0x514d0e['uniqueid']]['id'];this[_0x74b1('0xc')][_0x514d0e[_0x74b1('0x1f')]][_0x74b1('0x2d')]=_0x514d0e[_0x74b1('0x2d')];this[_0x74b1('0xc')][_0x514d0e['uniqueid']][_0x74b1('0x2e')]=_0x514d0e['pagestransferred'];this[_0x74b1('0xc')][_0x514d0e['uniqueid']][_0x74b1('0x2f')]=_0x514d0e['localstationid'];this['channels'][_0x514d0e[_0x74b1('0x1f')]][_0x74b1('0x30')]=_0x514d0e[_0x74b1('0x30')];this['channels'][_0x514d0e[_0x74b1('0x1f')]][_0x74b1('0x31')]=_0x514d0e[_0x74b1('0x31')];this['channels'][_0x514d0e[_0x74b1('0x1f')]][_0x74b1('0x2b')]=_0x514d0e['filename'];this['channels'][_0x514d0e[_0x74b1('0x1f')]][_0x74b1('0x32')]=_0x514d0e[_0x74b1('0x32')];if(this[_0x74b1('0xc')][_0x514d0e[_0x74b1('0x1f')]][_0x74b1('0x2e')]>0x0){tiff2pdf(_0x514d0e[_0x74b1('0x2b')],'/var/opt/motion2/server/files/attachments/',function(_0x19d393){logger[_0x74b1('0x22')](_0x514d0e[_0x74b1('0x1f')],_0x74b1('0x33'),_0x19d393[_0x74b1('0x34')]);attachment['create']({'name':path[_0x74b1('0x35')](_0x514d0e[_0x74b1('0x2b')])['name'],'basename':path['parse'](_0x514d0e[_0x74b1('0x2b')])[_0x74b1('0x21')]+'.pdf','type':_0x74b1('0x36')})[_0x74b1('0x37')](function(_0x2675c6){faxAccount[_0x74b1('0x38')](_0x5e2007,{'from':_0x514d0e[_0x74b1('0x32')],'mapKey':_0x74b1('0x39'),'body':path[_0x74b1('0x35')](_0x514d0e['filename'])['name']+'.pdf','AttachmentId':_0x2675c6['id']})[_0x74b1('0x3a')](function(_0x455355){logger[_0x74b1('0x3b')](_0x514d0e[_0x74b1('0x1f')],_0x74b1('0x3c'),JSON['stringify'](_0x455355));});})[_0x74b1('0x3a')](function(_0x2f4e45){logger[_0x74b1('0x3b')](_0x514d0e[_0x74b1('0x1f')],_0x74b1('0x3d'),JSON[_0x74b1('0x3e')](_0x2f4e45));});});}logger[_0x74b1('0x22')](_0x514d0e[_0x74b1('0x1f')],_0x74b1('0x3d'));}};Fax[_0x74b1('0x24')][_0x74b1('0x1a')]=function(_0x3038f9){if(this['actions'][_0x3038f9[_0x74b1('0x1f')]]){_[_0x74b1('0x3f')](this['channels'][_0x3038f9[_0x74b1('0x1f')]],_['pick'](_0x3038f9,[_0x74b1('0x40'),_0x74b1('0x41')]));}};function updateStatus(_0x5459b6){if(_0x5459b6[_0x74b1('0x42')]){faxMessage[_0x74b1('0x43')](_0x5459b6[_0x74b1('0x42')],{'failMessage':'SENDING\x20FAILED\x20'})[_0x74b1('0x37')](function(_0x418652){ut[_0x74b1('0x44')](_0x74b1('0x45'),_0x418652);})[_0x74b1('0x3a')](function(_0x5f1355){ut[_0x74b1('0x44')]('[Fax][Message][Error][NoUpdate1]',_0x5f1355);});}else{ut[_0x74b1('0x44')](_0x74b1('0x46'));}}Fax['prototype'][_0x74b1('0x47')]=function(_0x12ec28,_0x180fff,_0x54a221){var _0x3b6838=this;var _0x37b907={};if(_0x180fff){_0x37b907={'read':_0x180fff};}else{_0x37b907={'failMessage':_0x54a221};}if(this['actions'][_0x12ec28][_0x74b1('0x42')]){faxMessage['update'](this['actions'][_0x12ec28][_0x74b1('0x42')],_0x37b907)[_0x74b1('0x37')](function(_0x1525db){ut[_0x74b1('0x44')](_0x74b1('0x48'),_0x1525db);})['catch'](function(_0x145ce3){ut[_0x74b1('0x44')]('[Fax][Message][NoUpdate1]',_0x145ce3);})[_0x74b1('0x49')](function(){delete _0x3b6838[_0x74b1('0xc')][_0x12ec28];delete _0x3b6838[_0x74b1('0xf')][_0x12ec28];});}else{ut['logger'](_0x74b1('0x4a'));delete this[_0x74b1('0xc')][_0x12ec28];delete this[_0x74b1('0xf')][_0x12ec28];}};Fax['prototype'][_0x74b1('0x18')]=function(_0x3b4338){var _0x473a01=this;if(this[_0x74b1('0xc')][_0x3b4338[_0x74b1('0x1f')]]){if(this[_0x74b1('0xf')][_0x3b4338['uniqueid']]){this[_0x74b1('0xc')][_0x3b4338['uniqueid']]['id']=this['actions'][_0x3b4338[_0x74b1('0x1f')]]['id'];this['channels'][_0x3b4338['uniqueid']][_0x74b1('0x21')]=this[_0x74b1('0xf')][_0x3b4338[_0x74b1('0x1f')]]['name'];}logger[_0x74b1('0x22')](_0x3b4338[_0x74b1('0x1f')],this[_0x74b1('0xf')][_0x3b4338[_0x74b1('0x1f')]]?_0x74b1('0x4b'):_0x74b1('0x4c'),JSON[_0x74b1('0x3e')](this[_0x74b1('0xc')][_0x3b4338[_0x74b1('0x1f')]]));if(this[_0x74b1('0xf')][_0x3b4338[_0x74b1('0x1f')]]){if(this[_0x74b1('0xc')][_0x3b4338['uniqueid']]['faxpages']>0x0&&this[_0x74b1('0xc')][_0x3b4338['uniqueid']][_0x74b1('0x4d')]===_0x74b1('0x4e')){this['updateStatus'](_0x3b4338['uniqueid'],!![]);}else{this[_0x74b1('0x47')](_0x3b4338[_0x74b1('0x1f')],![],this[_0x74b1('0xc')][_0x3b4338[_0x74b1('0x1f')]][_0x74b1('0x4f')]?_0x74b1('0x50')+this[_0x74b1('0xc')][_0x3b4338[_0x74b1('0x1f')]][_0x74b1('0x4f')]:_0x74b1('0x51'));}}}};Fax[_0x74b1('0x24')][_0x74b1('0x52')]=function(_0x4d14b1){var _0x3549b5=this;return new BPromise(function(_0x1de918,_0x378f63){_0x3549b5[_0x74b1('0x53')](_0x4d14b1,_0x3549b5['faxAccounts'][_0x4d14b1[_0x74b1('0x54')]])[_0x74b1('0x37')](function(_0x5ada76){ut[_0x74b1('0x44')]('[Fax][execOriginate][success]',_0x5ada76);_0x1de918(ut[_0x74b1('0x34')](_0x74b1('0x55')));})['catch'](function(_0xf721c){ut[_0x74b1('0x44')](_0x74b1('0x56'),_0xf721c);updateStatus(_0x4d14b1);_0x378f63(ut['message'](_0x74b1('0x57')));});});};Fax['prototype'][_0x74b1('0x58')]=function(_0x154ad4){var _0x3e92cb=this;return new BPromise(function(_0x327878,_0x264698){var _0x4167e7=_0x3e92cb[_0x74b1('0x59')](_0x3e92cb[_0x74b1('0xd')][_0x154ad4[_0x74b1('0x54')]][_0x74b1('0x5a')],_0x154ad4);if(_0x4167e7[_0x74b1('0x5b')]){_0x327878(ut[_0x74b1('0x34')](_0x74b1('0x5c')));}else{_0x264698(ut['message'](_0x4167e7[_0x74b1('0x34')]));}});};function originate(_0x2a12b0,_0x39aabf,_0x31756f){return new BPromise(function(_0x30692c,_0x228f8f){if(_0x31756f){var _0x2e94d6=util[_0x74b1('0x5d')](_0x74b1('0x5e'),path['parse'](_0x2a12b0[_0x74b1('0x3')])['name'],_0x2a12b0[_0x74b1('0x3')]);gs['execute'](_0x2e94d6)['then'](function(){_0x2a12b0[_0x74b1('0x3')]=util[_0x74b1('0x5d')](_0x74b1('0x5f'),path['parse'](_0x2a12b0[_0x74b1('0x3')])[_0x74b1('0x60')],path['parse'](_0x2a12b0[_0x74b1('0x3')])[_0x74b1('0x21')]);_0x39aabf[_0x74b1('0x61')]=_0x2a12b0[_0x74b1('0x3')];ut[_0x74b1('0x44')](_0x74b1('0x62'),'');ami[_0x74b1('0x63')](ut[_0x74b1('0x64')](_0x2a12b0,_0x39aabf))[_0x74b1('0x37')](function(_0x444092){_0x30692c(_0x444092);})['catch'](function(_0x2b1119){_0x228f8f(_0x2b1119);});})[_0x74b1('0x3a')](function(_0xdcb4c6){_0x228f8f(_0xdcb4c6);});}else{ami['Action'](ut[_0x74b1('0x64')](_0x2a12b0,_0x39aabf))[_0x74b1('0x37')](function(_0x1b7e22){_0x30692c(_0x1b7e22);})[_0x74b1('0x3a')](function(_0x458b5e){_0x228f8f(_0x458b5e);});}});}Fax['prototype'][_0x74b1('0x53')]=function(_0x155ca8,_0x505de5){var _0x11b94e=this;return new BPromise(function(_0x121a42,_0x36733f){var _0x359e05=uuid['v4']();var _0x211f12=ut['addVariables'](_0x155ca8,_0x505de5);_0x11b94e[_0x74b1('0xf')][_0x359e05]=new Action(_0x359e05,_0x505de5,_0x155ca8);var _0x1633dd=_0x11b94e[_0x74b1('0xf')][_0x359e05];if(path['parse'](_0x155ca8['path'])[_0x74b1('0x65')]===_0x74b1('0x66')){originate(_0x1633dd,_0x211f12,!![])[_0x74b1('0x37')](function(_0x286012){_0x121a42(_0x286012);})[_0x74b1('0x3a')](function(_0x5d8729){_0x36733f(_0x5d8729);});}else{originate(_0x1633dd,_0x211f12,![])[_0x74b1('0x37')](function(_0x548393){_0x121a42(_0x548393);})['catch'](function(_0x1a66c6){_0x36733f(_0x1a66c6);});}});};Fax[_0x74b1('0x24')][_0x74b1('0x67')]=function(_0x2da0f2){return!_[_0x74b1('0x68')](_0x2da0f2)&&!_[_0x74b1('0x68')](_0x2da0f2[_0x74b1('0x21')])&&!_[_0x74b1('0x68')](_0x2da0f2['active'])&&_0x2da0f2['active']&&!_['isNil'](this[_0x74b1('0xe')][util[_0x74b1('0x5d')](_0x74b1('0x69'),_0x2da0f2[_0x74b1('0x21')])])&&!_[_0x74b1('0x68')](this[_0x74b1('0xe')][util[_0x74b1('0x5d')](_0x74b1('0x69'),_0x2da0f2[_0x74b1('0x21')])][_0x74b1('0x6a')])&&(this[_0x74b1('0xe')][util[_0x74b1('0x5d')]('SIP/%s',_0x2da0f2[_0x74b1('0x21')])][_0x74b1('0x6a')]===_0x74b1('0x6b')||this[_0x74b1('0xe')][util[_0x74b1('0x5d')](_0x74b1('0x69'),_0x2da0f2['name'])][_0x74b1('0x6a')]===_0x74b1('0x6c'));};Fax[_0x74b1('0x24')]['checkTrunk']=function(_0x418a03,_0x43443e){if(!this[_0x74b1('0x67')](_0x418a03)){ut[_0x74b1('0x44')]('[Fax][checkTrunk][Trunk\x20not\x20work]',_[_0x74b1('0x68')](_0x418a03)?'':_0x418a03[_0x74b1('0x21')]+_0x74b1('0x6d'));return{'isValid':![],'message':_0x74b1('0x6e')};}if(_[_0x74b1('0x68')](_0x43443e['fax'])){ut[_0x74b1('0x44')](_0x74b1('0x6f'),JSON['stringify'](_0x43443e));return{'isValid':![],'message':_0x74b1('0x70')};}if(_[_0x74b1('0x68')](_0x43443e['path'])){ut[_0x74b1('0x44')](_0x74b1('0x71'),JSON[_0x74b1('0x3e')](_0x43443e));return{'isValid':![],'message':_0x74b1('0x72')};}return{'isValid':!![],'message':'Is\x20Valid'};};module['exports']=Fax;
\ No newline at end of file
index 651a74a..a48de30 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb38c=['notify','resolve','catch','[Notify]\x20','util','bluebird','preview','lodash','../rpc/faxAccount','error'];(function(_0x4f7a17,_0x237ece){var _0x459fae=function(_0x4de820){while(--_0x4de820){_0x4f7a17['push'](_0x4f7a17['shift']());}};_0x459fae(++_0x237ece);}(_0xb38c,0x1d0));var _0xcb38=function(_0x3ee55a,_0x19aeea){_0x3ee55a=_0x3ee55a-0x0;var _0x581800=_0xb38c[_0x3ee55a];return _0x581800;};'use strict';var util=require(_0xcb38('0x0'));var BPromise=require(_0xcb38('0x1'));var logger=require('../../../config/logger')(_0xcb38('0x2'));var _=require(_0xcb38('0x3'));var faxAccount=require(_0xcb38('0x4'));function loggerCatch(_0x542cfb){return function(_0x431e3e){logger[_0xcb38('0x5')](_0x542cfb,util['inspect'](_0x431e3e,{'showHidden':![],'depth':null}));};}exports[_0xcb38('0x6')]=function(_0x2d539b,_0x4e02e1){return BPromise[_0xcb38('0x7')]()['then'](faxAccount[_0xcb38('0x6')](_0x2d539b,_0x4e02e1))[_0xcb38('0x8')](loggerCatch(_0xcb38('0x9')));};
\ No newline at end of file
+var _0x7183=['catch','bluebird','../../../config/logger','preview','lodash','../rpc/faxAccount','inspect','notify','resolve','then'];(function(_0xcda377,_0x1e2678){var _0x1c024f=function(_0x1aeb61){while(--_0x1aeb61){_0xcda377['push'](_0xcda377['shift']());}};_0x1c024f(++_0x1e2678);}(_0x7183,0xb5));var _0x3718=function(_0x599f41,_0x4db732){_0x599f41=_0x599f41-0x0;var _0x2e4d58=_0x7183[_0x599f41];return _0x2e4d58;};'use strict';var util=require('util');var BPromise=require(_0x3718('0x0'));var logger=require(_0x3718('0x1'))(_0x3718('0x2'));var _=require(_0x3718('0x3'));var faxAccount=require(_0x3718('0x4'));function loggerCatch(_0x5df03b){return function(_0x24b7c3){logger['error'](_0x5df03b,util[_0x3718('0x5')](_0x24b7c3,{'showHidden':![],'depth':null}));};}exports[_0x3718('0x6')]=function(_0x1a3952,_0x13ecc3){return BPromise[_0x3718('0x7')]()[_0x3718('0x8')](faxAccount[_0x3718('0x6')](_0x1a3952,_0x13ecc3))[_0x3718('0x9')](loggerCatch('[Notify]\x20'));};
\ No newline at end of file
index daf5283..2426e5e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x832a=['fax','bluebird','child_process','exec','execute','info','Exec\x20gs','\x20Error\x20:','util','../../../../config/logger'];(function(_0x437ac6,_0x25ec3f){var _0x46f227=function(_0x100ef5){while(--_0x100ef5){_0x437ac6['push'](_0x437ac6['shift']());}};_0x46f227(++_0x25ec3f);}(_0x832a,0x80));var _0xa832=function(_0x1c4c1a,_0x1e4d6b){_0x1c4c1a=_0x1c4c1a-0x0;var _0x434002=_0x832a[_0x1c4c1a];return _0x434002;};'use strict';var util=require(_0xa832('0x0'));var logger=require(_0xa832('0x1'))(_0xa832('0x2'));var BPromise=require(_0xa832('0x3'));var exec=require(_0xa832('0x4'))[_0xa832('0x5')];exports[_0xa832('0x6')]=function(_0x40dd57){return new BPromise(function(_0x3a7cd3,_0x4b0e47){exec(_0x40dd57,function(_0xaeb937,_0x14296d,_0x42be52){logger[_0xa832('0x7')](_0xa832('0x8'),_0x14296d);if(_0xaeb937){logger[_0xa832('0x7')]('Exec\x20gs',_0xa832('0x9'),util['inspect'](_0xaeb937,{'showHidden':![],'depth':null}),_0x14296d,_0x42be52);_0x4b0e47(_0xaeb937);}_0x3a7cd3(_0x14296d);});});};
\ No newline at end of file
+var _0x0b00=['fax','bluebird','child_process','Exec\x20gs','inspect','../../../../config/logger'];(function(_0x51020b,_0x38c2c7){var _0x371e47=function(_0x2a538f){while(--_0x2a538f){_0x51020b['push'](_0x51020b['shift']());}};_0x371e47(++_0x38c2c7);}(_0x0b00,0x14f));var _0x00b0=function(_0x3aa0c5,_0x19cb1d){_0x3aa0c5=_0x3aa0c5-0x0;var _0x37f985=_0x0b00[_0x3aa0c5];return _0x37f985;};'use strict';var util=require('util');var logger=require(_0x00b0('0x0'))(_0x00b0('0x1'));var BPromise=require(_0x00b0('0x2'));var exec=require(_0x00b0('0x3'))['exec'];exports['execute']=function(_0x353643){return new BPromise(function(_0xf0ce6d,_0x99650f){exec(_0x353643,function(_0x3e8e01,_0x17d541,_0x1a2a5f){logger['info']('Exec\x20gs',_0x17d541);if(_0x3e8e01){logger['info'](_0x00b0('0x4'),'\x20Error\x20:',util[_0x00b0('0x5')](_0x3e8e01,{'showHidden':![],'depth':null}),_0x17d541,_0x1a2a5f);_0x99650f(_0x3e8e01);}_0xf0ce6d(_0x17d541);});});};
\ No newline at end of file
index 5f5c5a8..9c59122 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc40a=['headerinfo','minrate','maxrate','format','modem','faxdetect','localstationid','path','originate','channel','xcally-motion-fax','from-sip','util','lodash','moment','../../../../config/logger','fax','message','logger','inspect','addVariables'];(function(_0x46ae5a,_0x2a38d0){var _0x434986=function(_0x22735d){while(--_0x22735d){_0x46ae5a['push'](_0x46ae5a['shift']());}};_0x434986(++_0x2a38d0);}(_0xc40a,0x186));var _0xac40=function(_0xefc924,_0x4d1e0a){_0xefc924=_0xefc924-0x0;var _0x1a8844=_0xc40a[_0xefc924];return _0x1a8844;};'use strict';var util=require(_0xac40('0x0'));var _=require(_0xac40('0x1'));var moment=require(_0xac40('0x2'));var logger=require(_0xac40('0x3'))(_0xac40('0x4'));exports[_0xac40('0x5')]=function(_0x3ea8d2){return{'message':_0x3ea8d2};};exports[_0xac40('0x6')]=function(_0x26cd43,_0x577c0e){logger['info'](_0x26cd43,util[_0xac40('0x7')](_0x577c0e,{'showHidden':![],'depth':null}));};exports[_0xac40('0x8')]=function(_0x17baea,_0x408466){var _0x3462e8={'XMF-ECM':_0x408466['ecm'],'XMF-HEADERINFO':_0x408466[_0xac40('0x9')],'XMF-MINRATE':_0x408466[_0xac40('0xa')],'XMF-MAXRATE':_0x408466[_0xac40('0xb')],'XMF-MODEM':util[_0xac40('0xc')]('\x22%s\x22',_0x408466[_0xac40('0xd')]),'XMF-GATEWAY':_0x408466['gateway'],'XMF-FAXDETECT':_0x408466[_0xac40('0xe')],'XMF-T38TIMEOUT':_0x408466['t38timeout'],'XMF-LOCALSTATIONID':_0x408466[_0xac40('0xf')],'XMF-PATH':_0x17baea[_0xac40('0x10')]};return _0x3462e8;};exports['variablesAction']=function(_0x3ff512,_0x5ea9fb){return{'actionid':_0x3ff512['uniqueid'],'action':_0xac40('0x11'),'channel':_0x3ff512[_0xac40('0x12')],'Exten':_0xac40('0x13'),'Context':_0xac40('0x14'),'Priority':'1','callerid':util['format']('\x22%s\x22\x20<%s>',_0x3ff512[_0xac40('0x9')]?_0x3ff512[_0xac40('0x9')]:'',_0x3ff512[_0xac40('0xf')]),'variable':_0x5ea9fb,'timeout':0x1e*0x3e8,'async':!![],'channelid':_0x3ff512['uniqueid']};};
\ No newline at end of file
+var _0x4598=['headerinfo','format','modem','faxdetect','t38timeout','localstationid','path','uniqueid','xcally-motion-fax','\x22%s\x22\x20<%s>','util','lodash','moment','../../../../config/logger','fax','message','logger','inspect','addVariables'];(function(_0xf823a2,_0x395825){var _0x339590=function(_0x12036f){while(--_0x12036f){_0xf823a2['push'](_0xf823a2['shift']());}};_0x339590(++_0x395825);}(_0x4598,0x8f));var _0x8459=function(_0x48776c,_0x215b5b){_0x48776c=_0x48776c-0x0;var _0x4e4f47=_0x4598[_0x48776c];return _0x4e4f47;};'use strict';var util=require(_0x8459('0x0'));var _=require(_0x8459('0x1'));var moment=require(_0x8459('0x2'));var logger=require(_0x8459('0x3'))(_0x8459('0x4'));exports[_0x8459('0x5')]=function(_0x248997){return{'message':_0x248997};};exports[_0x8459('0x6')]=function(_0x23050a,_0x5b8151){logger['info'](_0x23050a,util[_0x8459('0x7')](_0x5b8151,{'showHidden':![],'depth':null}));};exports[_0x8459('0x8')]=function(_0x2b201b,_0x3baa43){var _0x2ea000={'XMF-ECM':_0x3baa43['ecm'],'XMF-HEADERINFO':_0x3baa43[_0x8459('0x9')],'XMF-MINRATE':_0x3baa43['minrate'],'XMF-MAXRATE':_0x3baa43['maxrate'],'XMF-MODEM':util[_0x8459('0xa')]('\x22%s\x22',_0x3baa43[_0x8459('0xb')]),'XMF-GATEWAY':_0x3baa43['gateway'],'XMF-FAXDETECT':_0x3baa43[_0x8459('0xc')],'XMF-T38TIMEOUT':_0x3baa43[_0x8459('0xd')],'XMF-LOCALSTATIONID':_0x3baa43[_0x8459('0xe')],'XMF-PATH':_0x2b201b[_0x8459('0xf')]};return _0x2ea000;};exports['variablesAction']=function(_0x150e29,_0x37869e){return{'actionid':_0x150e29[_0x8459('0x10')],'action':'originate','channel':_0x150e29['channel'],'Exten':_0x8459('0x11'),'Context':'from-sip','Priority':'1','callerid':util[_0x8459('0xa')](_0x8459('0x12'),_0x150e29['headerinfo']?_0x150e29[_0x8459('0x9')]:'',_0x150e29[_0x8459('0xe')]),'variable':_0x37869e,'timeout':0x1e*0x3e8,'async':!![],'channelid':_0x150e29[_0x8459('0x10')]};};
\ No newline at end of file
index cb546b3..77404f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe633=['getServicenowAccounts','getDynamics365Accounts','initDynamics365Accounts','getCampaigns','initCampaigns','getVoiceExtensions','initVoiceExtensions','getFaxAccounts','initFaxAccounts','getVoiceQueueReports','initVoiceQueueReports','getVoiceQueueHopperHistory','initVoiceQueueHopperHistory','getCampaignHopperHistory','getVoiceCallReports','initVoiceCallReports','catch','log','listen','sync','moment','./server','./report','./acw','./trigger','./preview','./rpc/voiceQueue','./rpc/voiceQueueReport','./rpc/template','./rpc/cmHopperHistory','./rpc/campaign','./rpc/voiceExtension','./rpc/integrations/salesforce','./rpc/integrations/sugarcrm','./rpc/integrations/desk','./rpc/integrations/zoho','./rpc/integrations/vtiger','./rpc/integrations/freshsales','./rpc/integrations/servicenow','./rpc/integrations/dynamics365','get','hour','then','getAgents','initAgents','initTelephones','getVoiceQueues','initVoiceQueues','getTriggers','initTriggers','getTemplates','getZendeskAccounts','initSugarcrmAccounts','getFreshdeskAccounts','initFreshdeskAccounts','getDeskAccounts','initDeskAccounts','getZohoAccounts','initZohoAccounts','initVtigerAccounts','getFreshsalesAccounts','initFreshsalesAccounts'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0xe633,0x10c));var _0x3e63=function(_0x4bb0b2,_0x52d352){_0x4bb0b2=_0x4bb0b2-0x0;var _0x45aed0=_0xe633[_0x4bb0b2];return _0x45aed0;};'use strict';var BPromise=require('bluebird');var util=require('util');var moment=require(_0x3e63('0x0'));var server=require(_0x3e63('0x1'));var Realtime=require('./realtime');var Report=require(_0x3e63('0x2'));var Acw=require(_0x3e63('0x3'));var Trigger=require(_0x3e63('0x4'));var Dialer=require('./dialer');var Preview=require(_0x3e63('0x5'));var Fax=require('./fax');var user=require('./rpc/user');var voiceQueue=require(_0x3e63('0x6'));var voiceQueueReport=require(_0x3e63('0x7'));var voiceCallReport=require('./rpc/voiceCallReport');var trunk=require('./rpc/trunk');var trigger=require('./rpc/trigger');var template=require(_0x3e63('0x8'));var cmHopperHistory=require(_0x3e63('0x9'));var campaign=require(_0x3e63('0xa'));var voiceExtension=require(_0x3e63('0xb'));var faxAccount=require('./rpc/faxAccount');var zendesk=require('./rpc/integrations/zendesk');var salesforce=require(_0x3e63('0xc'));var sugarcrm=require(_0x3e63('0xd'));var freshdesk=require('./rpc/integrations/freshdesk');var desk=require(_0x3e63('0xe'));var zoho=require(_0x3e63('0xf'));var vtiger=require(_0x3e63('0x10'));var freshsales=require(_0x3e63('0x11'));var servicenow=require(_0x3e63('0x12'));var dynamics365=require(_0x3e63('0x13'));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()[_0x3e63('0x14')](_0x3e63('0x15'))===0x0&&initP){initP=![];isTrue=!![];initParams();}if(moment()[_0x3e63('0x14')]('hour')===0x1&&isTrue){isTrue=![];initP=!![];}}function initRealtime(){ifMidnight();return BPromise['resolve']()[_0x3e63('0x16')](user[_0x3e63('0x17')]())[_0x3e63('0x16')](realtime[_0x3e63('0x18')]())['then'](user['getTelephones']())[_0x3e63('0x16')](realtime[_0x3e63('0x19')]())[_0x3e63('0x16')](trunk['getTrunks']())[_0x3e63('0x16')](realtime['initTrunks']())[_0x3e63('0x16')](voiceQueue[_0x3e63('0x1a')]())[_0x3e63('0x16')](realtime[_0x3e63('0x1b')]())[_0x3e63('0x16')](trigger[_0x3e63('0x1c')]())[_0x3e63('0x16')](realtime[_0x3e63('0x1d')]())[_0x3e63('0x16')](template[_0x3e63('0x1e')]())[_0x3e63('0x16')](realtime['initTemplates']())[_0x3e63('0x16')](zendesk[_0x3e63('0x1f')]())[_0x3e63('0x16')](realtime['initZendeskAccounts']())[_0x3e63('0x16')](salesforce['getSalesforceAccounts']())['then'](realtime['initSalesforceAccounts']())[_0x3e63('0x16')](sugarcrm['getSugarcrmAccounts']())['then'](realtime[_0x3e63('0x20')]())[_0x3e63('0x16')](freshdesk[_0x3e63('0x21')]())['then'](realtime[_0x3e63('0x22')]())['then'](desk[_0x3e63('0x23')]())[_0x3e63('0x16')](realtime[_0x3e63('0x24')]())['then'](zoho[_0x3e63('0x25')]())['then'](realtime[_0x3e63('0x26')]())['then'](vtiger['getVtigerAccounts']())['then'](realtime[_0x3e63('0x27')]())['then'](freshsales[_0x3e63('0x28')]())['then'](realtime[_0x3e63('0x29')]())[_0x3e63('0x16')](servicenow[_0x3e63('0x2a')]())['then'](realtime['initServicenowAccounts']())['then'](dynamics365[_0x3e63('0x2b')]())[_0x3e63('0x16')](realtime[_0x3e63('0x2c')]())['then'](campaign[_0x3e63('0x2d')]())['then'](realtime[_0x3e63('0x2e')]())[_0x3e63('0x16')](voiceExtension[_0x3e63('0x2f')]())[_0x3e63('0x16')](realtime[_0x3e63('0x30')]())['then'](faxAccount[_0x3e63('0x31')]())[_0x3e63('0x16')](realtime[_0x3e63('0x32')]())['then'](function(){return realtime;});}function initParams(){return BPromise['resolve']()[_0x3e63('0x16')](voiceQueueReport[_0x3e63('0x33')]())[_0x3e63('0x16')](realtime[_0x3e63('0x34')]())[_0x3e63('0x16')](cmHopperHistory[_0x3e63('0x35')]())['then'](realtime[_0x3e63('0x36')]())[_0x3e63('0x16')](cmHopperHistory[_0x3e63('0x37')]())[_0x3e63('0x16')](realtime['initCampaignHopperHistory']())[_0x3e63('0x16')](voiceCallReport[_0x3e63('0x38')]())[_0x3e63('0x16')](realtime[_0x3e63('0x39')]())[_0x3e63('0x16')](function(_0x568e4a){})[_0x3e63('0x3a')](function(_0x26421e){console[_0x3e63('0x3b')](_0x26421e);});}function main(){return server[_0x3e63('0x3c')](realtime,preview,fax)[_0x3e63('0x16')](function(_0x42b6c7){return initRealtime();})[_0x3e63('0x16')](function(){return initParams();})[_0x3e63('0x16')](function(){report[_0x3e63('0x3d')]();setInterval(initRealtime,0x1388);})[_0x3e63('0x3a')](function(_0x4fb88a){console['log'](_0x4fb88a);});}main();
\ No newline at end of file
+var _0xcf7f=['initVoiceQueueHopperHistory','getCampaignHopperHistory','getVoiceCallReports','initVoiceCallReports','error','listen','sync','catch','[index.js][main]','inspect','bluebird','util','moment','./report','./acw','./preview','./fax','./rpc/user','./rpc/voiceQueue','./rpc/voiceQueueReport','./rpc/voiceCallReport','./rpc/trunk','./rpc/trigger','./rpc/template','./rpc/cmHopperHistory','./rpc/campaign','./rpc/voiceExtension','./rpc/faxAccount','./rpc/integrations/salesforce','./rpc/integrations/sugarcrm','./rpc/integrations/desk','./rpc/integrations/zoho','./rpc/integrations/vtiger','./rpc/integrations/dynamics365','../../config/logger','ami','get','hour','resolve','then','initAgents','getTelephones','getVoiceQueues','initVoiceQueues','getTriggers','getTemplates','initTemplates','getZendeskAccounts','initZendeskAccounts','getSalesforceAccounts','initSalesforceAccounts','getSugarcrmAccounts','initSugarcrmAccounts','initFreshdeskAccounts','initDeskAccounts','getZohoAccounts','initVtigerAccounts','getFreshsalesAccounts','initFreshsalesAccounts','getServicenowAccounts','initServicenowAccounts','initDynamics365Accounts','getCampaigns','initVoiceExtensions','getFaxAccounts','initFaxAccounts','initVoiceQueueReports'];(function(_0x102e37,_0x14a181){var _0x35a07c=function(_0x16577f){while(--_0x16577f){_0x102e37['push'](_0x102e37['shift']());}};_0x35a07c(++_0x14a181);}(_0xcf7f,0x1df));var _0xfcf7=function(_0x4e52be,_0x3bf276){_0x4e52be=_0x4e52be-0x0;var _0x349482=_0xcf7f[_0x4e52be];return _0x349482;};'use strict';var BPromise=require(_0xfcf7('0x0'));var util=require(_0xfcf7('0x1'));var moment=require(_0xfcf7('0x2'));var server=require('./server');var Realtime=require('./realtime');var Report=require(_0xfcf7('0x3'));var Acw=require(_0xfcf7('0x4'));var Trigger=require('./trigger');var Dialer=require('./dialer');var Preview=require(_0xfcf7('0x5'));var Fax=require(_0xfcf7('0x6'));var user=require(_0xfcf7('0x7'));var voiceQueue=require(_0xfcf7('0x8'));var voiceQueueReport=require(_0xfcf7('0x9'));var voiceCallReport=require(_0xfcf7('0xa'));var trunk=require(_0xfcf7('0xb'));var trigger=require(_0xfcf7('0xc'));var template=require(_0xfcf7('0xd'));var cmHopperHistory=require(_0xfcf7('0xe'));var campaign=require(_0xfcf7('0xf'));var voiceExtension=require(_0xfcf7('0x10'));var faxAccount=require(_0xfcf7('0x11'));var zendesk=require('./rpc/integrations/zendesk');var salesforce=require(_0xfcf7('0x12'));var sugarcrm=require(_0xfcf7('0x13'));var freshdesk=require('./rpc/integrations/freshdesk');var desk=require(_0xfcf7('0x14'));var zoho=require(_0xfcf7('0x15'));var vtiger=require(_0xfcf7('0x16'));var freshsales=require('./rpc/integrations/freshsales');var servicenow=require('./rpc/integrations/servicenow');var dynamics365=require(_0xfcf7('0x17'));var realtime=new Realtime();var report=new Report(realtime);var acw=new Acw(realtime);var channelTrigger=new Trigger(realtime);var preview=new Preview(realtime);var dialer=new Dialer(realtime,preview);var fax=new Fax(realtime);var logger=require(_0xfcf7('0x18'))(_0xfcf7('0x19'));var isTrue=!![];var initP=!![];function ifMidnight(){if(moment()[_0xfcf7('0x1a')](_0xfcf7('0x1b'))===0x0&&initP){initP=![];isTrue=!![];initParams();}if(moment()[_0xfcf7('0x1a')](_0xfcf7('0x1b'))===0x1&&isTrue){isTrue=![];initP=!![];}}function initRealtime(){ifMidnight();return BPromise[_0xfcf7('0x1c')]()[_0xfcf7('0x1d')](user['getAgents']())[_0xfcf7('0x1d')](realtime[_0xfcf7('0x1e')]())['then'](user[_0xfcf7('0x1f')]())[_0xfcf7('0x1d')](realtime['initTelephones']())[_0xfcf7('0x1d')](trunk['getTrunks']())[_0xfcf7('0x1d')](realtime['initTrunks']())[_0xfcf7('0x1d')](voiceQueue[_0xfcf7('0x20')]())['then'](realtime[_0xfcf7('0x21')]())[_0xfcf7('0x1d')](trigger[_0xfcf7('0x22')]())[_0xfcf7('0x1d')](realtime['initTriggers']())[_0xfcf7('0x1d')](template[_0xfcf7('0x23')]())[_0xfcf7('0x1d')](realtime[_0xfcf7('0x24')]())[_0xfcf7('0x1d')](zendesk[_0xfcf7('0x25')]())[_0xfcf7('0x1d')](realtime[_0xfcf7('0x26')]())[_0xfcf7('0x1d')](salesforce[_0xfcf7('0x27')]())[_0xfcf7('0x1d')](realtime[_0xfcf7('0x28')]())['then'](sugarcrm[_0xfcf7('0x29')]())[_0xfcf7('0x1d')](realtime[_0xfcf7('0x2a')]())[_0xfcf7('0x1d')](freshdesk['getFreshdeskAccounts']())['then'](realtime[_0xfcf7('0x2b')]())[_0xfcf7('0x1d')](desk['getDeskAccounts']())[_0xfcf7('0x1d')](realtime[_0xfcf7('0x2c')]())[_0xfcf7('0x1d')](zoho[_0xfcf7('0x2d')]())[_0xfcf7('0x1d')](realtime['initZohoAccounts']())[_0xfcf7('0x1d')](vtiger['getVtigerAccounts']())[_0xfcf7('0x1d')](realtime[_0xfcf7('0x2e')]())[_0xfcf7('0x1d')](freshsales[_0xfcf7('0x2f')]())['then'](realtime[_0xfcf7('0x30')]())[_0xfcf7('0x1d')](servicenow[_0xfcf7('0x31')]())[_0xfcf7('0x1d')](realtime[_0xfcf7('0x32')]())[_0xfcf7('0x1d')](dynamics365['getDynamics365Accounts']())[_0xfcf7('0x1d')](realtime[_0xfcf7('0x33')]())['then'](campaign[_0xfcf7('0x34')]())[_0xfcf7('0x1d')](realtime['initCampaigns']())[_0xfcf7('0x1d')](voiceExtension['getVoiceExtensions']())[_0xfcf7('0x1d')](realtime[_0xfcf7('0x35')]())[_0xfcf7('0x1d')](faxAccount[_0xfcf7('0x36')]())[_0xfcf7('0x1d')](realtime[_0xfcf7('0x37')]())['then'](function(){return realtime;});}function initParams(){return BPromise[_0xfcf7('0x1c')]()[_0xfcf7('0x1d')](voiceQueueReport['getVoiceQueueReports']())[_0xfcf7('0x1d')](realtime[_0xfcf7('0x38')]())[_0xfcf7('0x1d')](cmHopperHistory['getVoiceQueueHopperHistory']())['then'](realtime[_0xfcf7('0x39')]())[_0xfcf7('0x1d')](cmHopperHistory[_0xfcf7('0x3a')]())[_0xfcf7('0x1d')](realtime['initCampaignHopperHistory']())[_0xfcf7('0x1d')](voiceCallReport[_0xfcf7('0x3b')]())[_0xfcf7('0x1d')](realtime[_0xfcf7('0x3c')]())['catch'](function(_0x531b42){logger[_0xfcf7('0x3d')]('[index.js][initParams]',util['inspect'](_0x531b42,{'showHidden':![],'depth':null}));});}function main(){return server[_0xfcf7('0x3e')](realtime,preview,fax)[_0xfcf7('0x1d')](function(_0x4f2d21){return initRealtime();})[_0xfcf7('0x1d')](function(){return initParams();})[_0xfcf7('0x1d')](function(){report[_0xfcf7('0x3f')]();setInterval(initRealtime,0x1388);})[_0xfcf7('0x40')](function(_0x3b365b){logger[_0xfcf7('0x3d')](_0xfcf7('0x41'),util[_0xfcf7('0x42')](_0x3b365b,{'showHidden':![],'depth':null}));});}main();
\ No newline at end of file
index 51c7021..3765b54 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['phone','mobile','online','voiceStatus','voiceStatusTime','voiceStatusCallerIdNumber','voiceStatusQueue','onhold','prototype','updateStatusRealtime','state','toLowerCase','idle','inuse','talking','statePause','toNumber','interface','format','user:%s','user:save','emit','user:presence','exports','util','moment','md5','ioredis','../../../config/environment','redis','defaults','socket.io-emitter','name','email','accountcode','fullname','unknown','status'];(function(_0x2763f2,_0x416af8){var _0x3ef471=function(_0x288aa2){while(--_0x288aa2){_0x2763f2['push'](_0x2763f2['shift']());}};_0x3ef471(++_0x416af8);}(_0xedd9,0xfc));var _0x9edd=function(_0x28205e,_0x2f88f4){_0x28205e=_0x28205e-0x0;var _0x499f1b=_0xedd9[_0x28205e];return _0x499f1b;};'use strict';var _=require('lodash');var util=require(_0x9edd('0x0'));var moment=require(_0x9edd('0x1'));var md5=require(_0x9edd('0x2'));var Redis=require(_0x9edd('0x3'));var config=require(_0x9edd('0x4'));config[_0x9edd('0x5')]=_[_0x9edd('0x6')](config[_0x9edd('0x5')],{'host':'localhost','port':0x18eb});var io=require(_0x9edd('0x7'))(new Redis(config[_0x9edd('0x5')]));function Agent(_0x268f9e){this['id']=_0x268f9e['id']||0x0;this[_0x9edd('0x8')]=_0x268f9e['name']||'';this[_0x9edd('0x9')]=_0x268f9e['email']||'';this[_0x9edd('0xa')]=_0x268f9e[_0x9edd('0xa')]||'';this[_0x9edd('0xb')]=_0x268f9e[_0x9edd('0xb')]||'';this['state']=_0x9edd('0xc');this['stateTime']=0x0;this[_0x9edd('0xd')]=_0x9edd('0xc');this['address']='';this[_0x9edd('0xe')]='';this[_0x9edd('0xf')]='';this['interface']='';this[_0x9edd('0x10')]=_0x268f9e[_0x9edd('0x10')]||![];this[_0x9edd('0x11')]=_0x9edd('0xc');this[_0x9edd('0x12')]=0x0;this[_0x9edd('0x13')]='';this[_0x9edd('0x14')]='';this[_0x9edd('0x15')]=![];this['local']=![];this[_0x9edd('0x2')]='';}Agent[_0x9edd('0x16')][_0x9edd('0x17')]=function(_0x4d9a7){var _0x13b6b6;if(_0x4d9a7&&_0x4d9a7[_0x9edd('0x18')]){_0x13b6b6=_0x4d9a7[_0x9edd('0x18')][_0x9edd('0x19')]();switch(_0x13b6b6){case'not_inuse':_0x13b6b6=_0x9edd('0x1a');break;case _0x9edd('0x1b'):_0x13b6b6=_0x9edd('0x1c');break;}}if(_0x13b6b6&&this['voiceStatus']!==_0x13b6b6||_0x4d9a7[_0x9edd('0x1d')]){this[_0x9edd('0x12')]=_[_0x9edd('0x1e')](moment()['format']('x'));}if(_0x13b6b6){this[_0x9edd('0x11')]=_0x13b6b6;}var _0x5d879c={'id':this['id'],'name':this[_0x9edd('0x8')],'email':this[_0x9edd('0x9')],'accountcode':this['accountcode'],'fullname':this['fullname'],'state':this[_0x9edd('0x18')],'stateTime':this['stateTime'],'status':this[_0x9edd('0xd')],'address':this['address'],'online':this['online'],'voiceStatus':this[_0x9edd('0x11')],'voiceStatusTime':this[_0x9edd('0x12')],'voiceStatusCallerIdNumber':this['voiceStatusCallerIdNumber'],'voiceStatusQueue':this['voiceStatusQueue'],'interface':this[_0x9edd('0x1f')],'onhold':this[_0x9edd('0x15')]};var _0x477878=md5(JSON['stringify'](_0x5d879c));if(this[_0x9edd('0x2')]!==_0x477878){this[_0x9edd('0x2')]=_0x477878;io['to'](util[_0x9edd('0x20')](_0x9edd('0x21'),_0x5d879c[_0x9edd('0x8')]))['emit'](_0x9edd('0x22'),_0x5d879c);io[_0x9edd('0x23')](_0x9edd('0x24'),_0x5d879c);}};module[_0x9edd('0x25')]=Agent;
\ No newline at end of file
+var _0x0713=['idle','inuse','talking','voiceStatusTime','toNumber','format','voiceStatusQueue','stringify','user:%s','emit','user:save','user:presence','exports','moment','md5','ioredis','../../../config/environment','redis','localhost','socket.io-emitter','name','email','accountcode','fullname','unknown','stateTime','status','address','mobile','interface','online','voiceStatus','voiceStatusCallerIdNumber','onhold','local','prototype','state','toLowerCase','not_inuse'];(function(_0x20665e,_0x3101d4){var _0x55adf2=function(_0x370880){while(--_0x370880){_0x20665e['push'](_0x20665e['shift']());}};_0x55adf2(++_0x3101d4);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x3071('0x0'));var md5=require(_0x3071('0x1'));var Redis=require(_0x3071('0x2'));var config=require(_0x3071('0x3'));config[_0x3071('0x4')]=_['defaults'](config[_0x3071('0x4')],{'host':_0x3071('0x5'),'port':0x18eb});var io=require(_0x3071('0x6'))(new Redis(config[_0x3071('0x4')]));function Agent(_0xabd7b6){this['id']=_0xabd7b6['id']||0x0;this[_0x3071('0x7')]=_0xabd7b6[_0x3071('0x7')]||'';this[_0x3071('0x8')]=_0xabd7b6[_0x3071('0x8')]||'';this[_0x3071('0x9')]=_0xabd7b6[_0x3071('0x9')]||'';this[_0x3071('0xa')]=_0xabd7b6[_0x3071('0xa')]||'';this['state']=_0x3071('0xb');this[_0x3071('0xc')]=0x0;this[_0x3071('0xd')]=_0x3071('0xb');this[_0x3071('0xe')]='';this['phone']='';this[_0x3071('0xf')]='';this[_0x3071('0x10')]='';this[_0x3071('0x11')]=_0xabd7b6[_0x3071('0x11')]||![];this[_0x3071('0x12')]='unknown';this['voiceStatusTime']=0x0;this[_0x3071('0x13')]='';this['voiceStatusQueue']='';this[_0x3071('0x14')]=![];this[_0x3071('0x15')]=![];this['md5']='';}Agent[_0x3071('0x16')]['updateStatusRealtime']=function(_0x2fc15d){var _0x45c93b;if(_0x2fc15d&&_0x2fc15d[_0x3071('0x17')]){_0x45c93b=_0x2fc15d[_0x3071('0x17')][_0x3071('0x18')]();switch(_0x45c93b){case _0x3071('0x19'):_0x45c93b=_0x3071('0x1a');break;case _0x3071('0x1b'):_0x45c93b=_0x3071('0x1c');break;}}if(_0x45c93b&&this[_0x3071('0x12')]!==_0x45c93b||_0x2fc15d['statePause']){this[_0x3071('0x1d')]=_[_0x3071('0x1e')](moment()[_0x3071('0x1f')]('x'));}if(_0x45c93b){this[_0x3071('0x12')]=_0x45c93b;}var _0x3acf0e={'id':this['id'],'name':this[_0x3071('0x7')],'email':this[_0x3071('0x8')],'accountcode':this[_0x3071('0x9')],'fullname':this['fullname'],'state':this[_0x3071('0x17')],'stateTime':this[_0x3071('0xc')],'status':this[_0x3071('0xd')],'address':this['address'],'online':this[_0x3071('0x11')],'voiceStatus':this['voiceStatus'],'voiceStatusTime':this[_0x3071('0x1d')],'voiceStatusCallerIdNumber':this[_0x3071('0x13')],'voiceStatusQueue':this[_0x3071('0x20')],'interface':this[_0x3071('0x10')],'onhold':this[_0x3071('0x14')]};var _0x34c50e=md5(JSON[_0x3071('0x21')](_0x3acf0e));if(this[_0x3071('0x1')]!==_0x34c50e){this['md5']=_0x34c50e;io['to'](util['format'](_0x3071('0x22'),_0x3acf0e[_0x3071('0x7')]))[_0x3071('0x23')](_0x3071('0x24'),_0x3acf0e);io[_0x3071('0x23')](_0x3071('0x25'),_0x3acf0e);}};module[_0x3071('0x26')]=Agent;
\ No newline at end of file
index 39a00c4..bfc2737 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x069d=['dialOriginateTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialPrefix','dialCutDigit','TrunkBackup','Trunk','Interval','SquareProject','dialQueueProject','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','exports','name','type','campaign','originated','temp','ivrTotalCallsDays','sendMessageOneNotActive','active','dialTimezone','dialGlobalInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber'];(function(_0xc457ef,_0x356d6d){var _0x2141c9=function(_0x5e2007){while(--_0x5e2007){_0xc457ef['push'](_0xc457ef['shift']());}};_0x2141c9(++_0x356d6d);}(_0x069d,0x13d));var _0xd069=function(_0x352644,_0x33db92){_0x352644=_0x352644-0x0;var _0x2ec642=_0x069d[_0x352644];return _0x2ec642;};'use strict';function Campaign(_0x3930e9){this['id']=_0x3930e9['id']||0x0;this[_0xd069('0x0')]=_0x3930e9[_0xd069('0x0')]||'';this[_0xd069('0x1')]=_0x3930e9['type']||_0xd069('0x2');this[_0xd069('0x3')]=0x0;this[_0xd069('0x4')]=0x0;this['ivrAnswerCallsDay']=0x0;this[_0xd069('0x5')]=0x0;this['message']='';this[_0xd069('0x6')]=!![];this[_0xd069('0x7')]=_0x3930e9[_0xd069('0x7')];this['limitCalls']=_0x3930e9['limitCalls'];this[_0xd069('0x8')]=_0x3930e9['dialTimezone']||null;this[_0xd069('0x9')]=_0x3930e9['dialGlobalInterval']?_0x3930e9['dialGlobalInterval']:null;this[_0xd069('0xa')]=_0x3930e9[_0xd069('0xa')];this[_0xd069('0xb')]=_0x3930e9[_0xd069('0xb')];this['dialOriginateTimeout']=_0x3930e9[_0xd069('0xc')]||0x1e;this[_0xd069('0xd')]=_0x3930e9['dialCongestionMaxRetry'];this['dialCongestionRetryFrequency']=_0x3930e9[_0xd069('0xe')];this[_0xd069('0xf')]=_0x3930e9[_0xd069('0xf')];this['dialBusyRetryFrequency']=_0x3930e9[_0xd069('0x10')];this[_0xd069('0x11')]=_0x3930e9[_0xd069('0x11')];this['dialNoAnswerRetryFrequency']=_0x3930e9['dialNoAnswerRetryFrequency'];this[_0xd069('0x12')]=_0x3930e9[_0xd069('0x12')];this['dialNoSuchNumberMaxRetry']=_0x3930e9[_0xd069('0x13')]||0x3;this[_0xd069('0x14')]=_0x3930e9[_0xd069('0x14')]||0x96;this['dialDropMaxRetry']=_0x3930e9[_0xd069('0x15')]||0x3;this[_0xd069('0x16')]=_0x3930e9['dialDropRetryFrequency']||0x96;this[_0xd069('0x17')]=_0x3930e9[_0xd069('0x17')]||0x3;this[_0xd069('0x18')]=_0x3930e9[_0xd069('0x18')]||0x96;this['dialMachineMaxRetry']=_0x3930e9[_0xd069('0x19')]||0x3;this[_0xd069('0x1a')]=_0x3930e9[_0xd069('0x1a')]||0x96;this[_0xd069('0x1b')]=_0x3930e9[_0xd069('0x1b')]||0x3;this[_0xd069('0x1c')]=_0x3930e9['dialAgentRejectRetryFrequency']||0x96;this['dialOrderByScheduledAt']=_0x3930e9['dialOrderByScheduledAt']||'DESC';this[_0xd069('0x1d')]=_0x3930e9['dialPrefix']||undefined;this['dialRandomLastDigitCallerIdNumber']=_0x3930e9['dialRandomLastDigitCallerIdNumber']||undefined;this[_0xd069('0x1e')]=_0x3930e9[_0xd069('0x1e')]||undefined;this[_0xd069('0x1f')]=_0x3930e9['TrunkBackup']?_0x3930e9[_0xd069('0x1f')]:undefined;this[_0xd069('0x20')]=_0x3930e9[_0xd069('0x20')]?_0x3930e9[_0xd069('0x20')]:undefined;this[_0xd069('0x21')]=_0x3930e9[_0xd069('0x21')]?_0x3930e9[_0xd069('0x21')]:undefined;this[_0xd069('0x22')]=_0x3930e9[_0xd069('0x22')]?_0x3930e9[_0xd069('0x22')]:undefined;this[_0xd069('0x23')]=_0x3930e9[_0xd069('0x22')]?_0x3930e9[_0xd069('0x22')][_0xd069('0x0')]:undefined;this[_0xd069('0x24')]=_0x3930e9[_0xd069('0x24')]||![];this[_0xd069('0x25')]=_0x3930e9[_0xd069('0x25')];this[_0xd069('0x26')]=_0x3930e9[_0xd069('0x26')];this[_0xd069('0x27')]=_0x3930e9['dialAMDAfterGreetingSilence'];this[_0xd069('0x28')]=_0x3930e9['dialAMDTotalAnalysisTime'];this[_0xd069('0x29')]=_0x3930e9[_0xd069('0x29')];this[_0xd069('0x2a')]=_0x3930e9['dialAMDBetweenWordsSilence'];this['dialAMDMaximumNumberOfWords']=_0x3930e9[_0xd069('0x2b')];this[_0xd069('0x2c')]=_0x3930e9['dialAMDSilenceThreshold'];this[_0xd069('0x2d')]=_0x3930e9[_0xd069('0x2d')];}module[_0xd069('0x2e')]=Campaign;
\ No newline at end of file
+var _0x211c=['dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialOrderByScheduledAt','DESC','dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit','TrunkBackup','Trunk','Interval','SquareProject','dialAMDActive','dialAMDInitialSilence','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','exports','name','type','campaign','originated','ivrAnswerCallsDay','ivrTotalCallsDays','message','sendMessageOneNotActive','active','limitCalls','dialTimezone','dialGlobalInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency'];(function(_0x3a4a42,_0x61f1e){var _0x1ee783=function(_0x5653ee){while(--_0x5653ee){_0x3a4a42['push'](_0x3a4a42['shift']());}};_0x1ee783(++_0x61f1e);}(_0x211c,0xb5));var _0xc211=function(_0x17af63,_0x25670f){_0x17af63=_0x17af63-0x0;var _0x871287=_0x211c[_0x17af63];return _0x871287;};'use strict';function Campaign(_0x50d885){this['id']=_0x50d885['id']||0x0;this[_0xc211('0x0')]=_0x50d885[_0xc211('0x0')]||'';this[_0xc211('0x1')]=_0x50d885[_0xc211('0x1')]||_0xc211('0x2');this[_0xc211('0x3')]=0x0;this['temp']=0x0;this[_0xc211('0x4')]=0x0;this[_0xc211('0x5')]=0x0;this[_0xc211('0x6')]='';this[_0xc211('0x7')]=!![];this[_0xc211('0x8')]=_0x50d885[_0xc211('0x8')];this[_0xc211('0x9')]=_0x50d885[_0xc211('0x9')];this[_0xc211('0xa')]=_0x50d885[_0xc211('0xa')]||null;this[_0xc211('0xb')]=_0x50d885[_0xc211('0xb')]?_0x50d885[_0xc211('0xb')]:null;this[_0xc211('0xc')]=_0x50d885[_0xc211('0xc')];this['dialOriginateCallerIdNumber']=_0x50d885[_0xc211('0xd')];this[_0xc211('0xe')]=_0x50d885['dialOriginateTimeout']||0x1e;this[_0xc211('0xf')]=_0x50d885[_0xc211('0xf')];this[_0xc211('0x10')]=_0x50d885[_0xc211('0x10')];this[_0xc211('0x11')]=_0x50d885[_0xc211('0x11')];this[_0xc211('0x12')]=_0x50d885['dialBusyRetryFrequency'];this['dialNoAnswerMaxRetry']=_0x50d885[_0xc211('0x13')];this[_0xc211('0x14')]=_0x50d885['dialNoAnswerRetryFrequency'];this[_0xc211('0x15')]=_0x50d885[_0xc211('0x15')];this[_0xc211('0x16')]=_0x50d885[_0xc211('0x16')]||0x3;this[_0xc211('0x17')]=_0x50d885[_0xc211('0x17')]||0x96;this[_0xc211('0x18')]=_0x50d885[_0xc211('0x18')]||0x3;this[_0xc211('0x19')]=_0x50d885[_0xc211('0x19')]||0x96;this[_0xc211('0x1a')]=_0x50d885[_0xc211('0x1a')]||0x3;this[_0xc211('0x1b')]=_0x50d885[_0xc211('0x1b')]||0x96;this['dialMachineMaxRetry']=_0x50d885[_0xc211('0x1c')]||0x3;this['dialMachineRetryFrequency']=_0x50d885[_0xc211('0x1d')]||0x96;this[_0xc211('0x1e')]=_0x50d885['dialAgentRejectMaxRetry']||0x3;this[_0xc211('0x1f')]=_0x50d885[_0xc211('0x1f')]||0x96;this['dialOrderByScheduledAt']=_0x50d885[_0xc211('0x20')]||_0xc211('0x21');this[_0xc211('0x22')]=_0x50d885['dialPrefix']||undefined;this[_0xc211('0x23')]=_0x50d885['dialRandomLastDigitCallerIdNumber']||undefined;this[_0xc211('0x24')]=_0x50d885[_0xc211('0x24')]||undefined;this[_0xc211('0x25')]=_0x50d885['TrunkBackup']?_0x50d885[_0xc211('0x25')]:undefined;this['Trunk']=_0x50d885[_0xc211('0x26')]?_0x50d885[_0xc211('0x26')]:undefined;this[_0xc211('0x27')]=_0x50d885['Interval']?_0x50d885[_0xc211('0x27')]:undefined;this['SquareProject']=_0x50d885[_0xc211('0x28')]?_0x50d885[_0xc211('0x28')]:undefined;this['dialQueueProject']=_0x50d885[_0xc211('0x28')]?_0x50d885[_0xc211('0x28')]['name']:undefined;this[_0xc211('0x29')]=_0x50d885[_0xc211('0x29')]||![];this[_0xc211('0x2a')]=_0x50d885[_0xc211('0x2a')];this['dialAMDGreeting']=_0x50d885['dialAMDGreeting'];this['dialAMDAfterGreetingSilence']=_0x50d885[_0xc211('0x2b')];this[_0xc211('0x2c')]=_0x50d885[_0xc211('0x2c')];this[_0xc211('0x2d')]=_0x50d885[_0xc211('0x2d')];this[_0xc211('0x2e')]=_0x50d885[_0xc211('0x2e')];this[_0xc211('0x2f')]=_0x50d885['dialAMDMaximumNumberOfWords'];this['dialAMDSilenceThreshold']=_0x50d885[_0xc211('0x30')];this['dialAMDMaximumWordLength']=_0x50d885['dialAMDMaximumWordLength'];}module[_0xc211('0x31')]=Campaign;
\ No newline at end of file
index 773007e..2f2d5a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xebc0=['transferconnectedlinenum','transferType','mohtime','exports','starttime','channel','destinationchannel','calleridname','connectedlinenum','connectedlinename','accountcode','context','uniqueid','linkedid','answertime','abandoned','lastapplication','holdtime','type','tag','disposition','monitorFilename','queue','monitors','transfercalleridnum'];(function(_0x3733ec,_0x267eba){var _0x219310=function(_0x25dd54){while(--_0x25dd54){_0x3733ec['push'](_0x3733ec['shift']());}};_0x219310(++_0x267eba);}(_0xebc0,0xe5));var _0x0ebc=function(_0x59f8cb,_0x50567c){_0x59f8cb=_0x59f8cb-0x0;var _0x58dd01=_0xebc0[_0x59f8cb];return _0x58dd01;};'use strict';function Channel(){this[_0x0ebc('0x0')]=null;this[_0x0ebc('0x1')]='';this[_0x0ebc('0x2')]='';this['calleridnum']=0x0;this[_0x0ebc('0x3')]='';this[_0x0ebc('0x4')]=undefined;this[_0x0ebc('0x5')]=undefined;this[_0x0ebc('0x6')]=0x0;this[_0x0ebc('0x7')]='';this[_0x0ebc('0x8')]=0x0;this[_0x0ebc('0x9')]=0x0;this['exten']=0x0;this['answered']=![];this[_0x0ebc('0xa')]=null;this['endtime']=null;this['unmanaged']=![];this[_0x0ebc('0xb')]=![];this[_0x0ebc('0xc')]='';this['lastdata']='';this['duration']=0x0;this['billableseconds']=0x0;this[_0x0ebc('0xd')]=0x0;this[_0x0ebc('0xe')]=null;this[_0x0ebc('0xf')]=null;this[_0x0ebc('0x10')]=null;this['monitor']=![];this[_0x0ebc('0x11')]=null;this[_0x0ebc('0x12')]=null;this[_0x0ebc('0x13')]=[];this[_0x0ebc('0x14')]=undefined;this[_0x0ebc('0x15')]=undefined;this[_0x0ebc('0x16')]=undefined;this[_0x0ebc('0x17')]=0x0;}module[_0x0ebc('0x18')]=Channel;
\ No newline at end of file
+var _0x7969=['endtime','abandoned','duration','holdtime','tag','disposition','monitor','monitorFilename','queue','monitors','transfercalleridnum','transferconnectedlinenum','mohtime','destinationchannel','calleridnum','calleridname','accountcode','context','uniqueid','linkedid','exten','answered','answertime'];(function(_0x413feb,_0x10477f){var _0x40ee88=function(_0x32a3f6){while(--_0x32a3f6){_0x413feb['push'](_0x413feb['shift']());}};_0x40ee88(++_0x10477f);}(_0x7969,0x1c2));var _0x9796=function(_0x5f57be,_0x38d282){_0x5f57be=_0x5f57be-0x0;var _0x1b27b0=_0x7969[_0x5f57be];return _0x1b27b0;};'use strict';function Channel(){this['starttime']=null;this['channel']='';this[_0x9796('0x0')]='';this[_0x9796('0x1')]=0x0;this[_0x9796('0x2')]='';this['connectedlinenum']=undefined;this['connectedlinename']=undefined;this[_0x9796('0x3')]=0x0;this[_0x9796('0x4')]='';this[_0x9796('0x5')]=0x0;this[_0x9796('0x6')]=0x0;this[_0x9796('0x7')]=0x0;this[_0x9796('0x8')]=![];this[_0x9796('0x9')]=null;this[_0x9796('0xa')]=null;this['unmanaged']=![];this[_0x9796('0xb')]=![];this['lastapplication']='';this['lastdata']='';this[_0x9796('0xc')]=0x0;this['billableseconds']=0x0;this[_0x9796('0xd')]=0x0;this['type']=null;this[_0x9796('0xe')]=null;this[_0x9796('0xf')]=null;this[_0x9796('0x10')]=![];this[_0x9796('0x11')]=null;this[_0x9796('0x12')]=null;this[_0x9796('0x13')]=[];this[_0x9796('0x14')]=undefined;this[_0x9796('0x15')]=undefined;this['transferType']=undefined;this[_0x9796('0x16')]=0x0;}module['exports']=Channel;
\ No newline at end of file
index b3af7de..12911e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9751=['remoteUri','authType','consumerKey','consumerSecret','token','tokenSecret','type','serverUrl','Configurations','name','username'];(function(_0x1a0daa,_0x2a4634){var _0x1dbe15=function(_0xa8ab22){while(--_0xa8ab22){_0x1a0daa['push'](_0x1a0daa['shift']());}};_0x1dbe15(++_0x2a4634);}(_0x9751,0x13d));var _0x1975=function(_0x567a9e,_0x1b593e){_0x567a9e=_0x567a9e-0x0;var _0xcf211a=_0x9751[_0x567a9e];return _0xcf211a;};'use strict';function DeskAccount(_0x18d76d){this['id']=_0x18d76d['id']||0x0;this['name']=_0x18d76d[_0x1975('0x0')]||'';this['username']=_0x18d76d[_0x1975('0x1')]||'';this[_0x1975('0x2')]=_0x18d76d[_0x1975('0x2')]||'';this[_0x1975('0x3')]=_0x18d76d[_0x1975('0x3')]||'';this['password']=_0x18d76d['password']||'';this[_0x1975('0x4')]=_0x18d76d[_0x1975('0x4')]||'';this[_0x1975('0x5')]=_0x18d76d[_0x1975('0x5')]||'';this[_0x1975('0x6')]=_0x18d76d['token']||'';this['tokenSecret']=_0x18d76d[_0x1975('0x7')]||'';this[_0x1975('0x8')]=_0x18d76d[_0x1975('0x8')]||'';this[_0x1975('0x9')]=_0x18d76d[_0x1975('0x9')]||'';this['Configurations']=_0x18d76d[_0x1975('0xa')]||{};}module['exports']=DeskAccount;
\ No newline at end of file
+var _0x1e30=['type','serverUrl','Configurations','exports','name','username','remoteUri','authType','password','consumerKey','token','tokenSecret'];(function(_0x2d1f82,_0x20ea67){var _0x88ee92=function(_0x2e08ce){while(--_0x2e08ce){_0x2d1f82['push'](_0x2d1f82['shift']());}};_0x88ee92(++_0x20ea67);}(_0x1e30,0xdc));var _0x01e3=function(_0x7303c,_0x2d7803){_0x7303c=_0x7303c-0x0;var _0x367cc7=_0x1e30[_0x7303c];return _0x367cc7;};'use strict';function DeskAccount(_0x5afc30){this['id']=_0x5afc30['id']||0x0;this[_0x01e3('0x0')]=_0x5afc30[_0x01e3('0x0')]||'';this[_0x01e3('0x1')]=_0x5afc30[_0x01e3('0x1')]||'';this[_0x01e3('0x2')]=_0x5afc30[_0x01e3('0x2')]||'';this[_0x01e3('0x3')]=_0x5afc30[_0x01e3('0x3')]||'';this[_0x01e3('0x4')]=_0x5afc30[_0x01e3('0x4')]||'';this[_0x01e3('0x5')]=_0x5afc30[_0x01e3('0x5')]||'';this['consumerSecret']=_0x5afc30['consumerSecret']||'';this['token']=_0x5afc30[_0x01e3('0x6')]||'';this[_0x01e3('0x7')]=_0x5afc30['tokenSecret']||'';this[_0x01e3('0x8')]=_0x5afc30['type']||'';this['serverUrl']=_0x5afc30[_0x01e3('0x9')]||'';this[_0x01e3('0xa')]=_0x5afc30['Configurations']||{};}module[_0x01e3('0xb')]=DeskAccount;
\ No newline at end of file
index fd53339..c90b962 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c76=['exports','name','username','password','remoteUri','tenantId','clientId','clientSecret','Configurations'];(function(_0x1b27ff,_0x34070b){var _0x1ff114=function(_0xb5b137){while(--_0xb5b137){_0x1b27ff['push'](_0x1b27ff['shift']());}};_0x1ff114(++_0x34070b);}(_0x6c76,0x184));var _0x66c7=function(_0x29195e,_0x132406){_0x29195e=_0x29195e-0x0;var _0x515001=_0x6c76[_0x29195e];return _0x515001;};'use strict';function Dynamics365Account(_0x4d4f77){this['id']=_0x4d4f77['id']||0x0;this[_0x66c7('0x0')]=_0x4d4f77[_0x66c7('0x0')]||'';this['username']=_0x4d4f77[_0x66c7('0x1')]||'';this[_0x66c7('0x2')]=_0x4d4f77['password']||'';this['remoteUri']=_0x4d4f77[_0x66c7('0x3')]||'';this[_0x66c7('0x4')]=_0x4d4f77['tenantId']||'';this[_0x66c7('0x5')]=_0x4d4f77[_0x66c7('0x5')]||'';this['clientSecret']=_0x4d4f77[_0x66c7('0x6')]||{};this['serverUrl']=_0x4d4f77['serverUrl']||'';this[_0x66c7('0x7')]=_0x4d4f77[_0x66c7('0x7')]||{};}module[_0x66c7('0x8')]=Dynamics365Account;
\ No newline at end of file
+var _0xa75b=['username','password','remoteUri','tenantId','clientId','clientSecret','serverUrl','Configurations'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa75b,0x170));var _0xba75=function(_0x5d75be,_0xd38873){_0x5d75be=_0x5d75be-0x0;var _0x4815d5=_0xa75b[_0x5d75be];return _0x4815d5;};'use strict';function Dynamics365Account(_0x5b33c5){this['id']=_0x5b33c5['id']||0x0;this['name']=_0x5b33c5['name']||'';this[_0xba75('0x0')]=_0x5b33c5[_0xba75('0x0')]||'';this[_0xba75('0x1')]=_0x5b33c5[_0xba75('0x1')]||'';this[_0xba75('0x2')]=_0x5b33c5[_0xba75('0x2')]||'';this[_0xba75('0x3')]=_0x5b33c5[_0xba75('0x3')]||'';this[_0xba75('0x4')]=_0x5b33c5[_0xba75('0x4')]||'';this[_0xba75('0x5')]=_0x5b33c5[_0xba75('0x5')]||{};this[_0xba75('0x6')]=_0x5b33c5['serverUrl']||'';this['Configurations']=_0x5b33c5[_0xba75('0x7')]||{};}module['exports']=Dynamics365Account;
\ No newline at end of file
index ba0708e..3b3e203 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf7a1=['headerinfo','localstationid','maxrate','modem','gateway','faxdetect','tech','SIP','Trunk','ListId','key','exports','name','description','ecm'];(function(_0x170855,_0xde543a){var _0x372e42=function(_0x3140ee){while(--_0x3140ee){_0x170855['push'](_0x170855['shift']());}};_0x372e42(++_0xde543a);}(_0xf7a1,0xed));var _0x1f7a=function(_0x45efce,_0x4677f1){_0x45efce=_0x45efce-0x0;var _0x53d66f=_0xf7a1[_0x45efce];return _0x53d66f;};'use strict';function FaxAccount(_0x136aee){this['id']=_0x136aee['id']||0x0;this[_0x1f7a('0x0')]=_0x136aee[_0x1f7a('0x0')]||'';this[_0x1f7a('0x1')]=_0x136aee[_0x1f7a('0x1')];this[_0x1f7a('0x2')]=_0x136aee[_0x1f7a('0x2')];this['headerinfo']=_0x136aee[_0x1f7a('0x3')];this['localstationid']=_0x136aee[_0x1f7a('0x4')];this['minrate']=_0x136aee['minrate']||0x960;this[_0x1f7a('0x5')]=_0x136aee[_0x1f7a('0x5')]||0x3840;this[_0x1f7a('0x6')]=_0x136aee[_0x1f7a('0x6')]||'v17,v27,v29';this[_0x1f7a('0x7')]=_0x136aee[_0x1f7a('0x7')]||'no';this[_0x1f7a('0x8')]=_0x136aee[_0x1f7a('0x8')]||'no';this['t38timeout']=_0x136aee['t38timeout']||0x1388;this['tech']=_0x136aee[_0x1f7a('0x9')]||_0x1f7a('0xa');this['Trunk']=_0x136aee[_0x1f7a('0xb')]?_0x136aee['Trunk']:undefined;this[_0x1f7a('0xc')]=_0x136aee[_0x1f7a('0xc')];this[_0x1f7a('0xd')]=_0x136aee[_0x1f7a('0xd')];}module[_0x1f7a('0xe')]=FaxAccount;
\ No newline at end of file
+var _0x974a=['localstationid','minrate','maxrate','modem','v17,v27,v29','gateway','faxdetect','t38timeout','tech','SIP','Trunk','ListId','key','name','description','headerinfo'];(function(_0x43b584,_0x20a6bd){var _0x48f27b=function(_0x1eeb77){while(--_0x1eeb77){_0x43b584['push'](_0x43b584['shift']());}};_0x48f27b(++_0x20a6bd);}(_0x974a,0xad));var _0xa974=function(_0x44e402,_0xccbf30){_0x44e402=_0x44e402-0x0;var _0x597665=_0x974a[_0x44e402];return _0x597665;};'use strict';function FaxAccount(_0x3ab665){this['id']=_0x3ab665['id']||0x0;this[_0xa974('0x0')]=_0x3ab665['name']||'';this[_0xa974('0x1')]=_0x3ab665[_0xa974('0x1')];this['ecm']=_0x3ab665['ecm'];this['headerinfo']=_0x3ab665[_0xa974('0x2')];this[_0xa974('0x3')]=_0x3ab665[_0xa974('0x3')];this[_0xa974('0x4')]=_0x3ab665['minrate']||0x960;this[_0xa974('0x5')]=_0x3ab665[_0xa974('0x5')]||0x3840;this[_0xa974('0x6')]=_0x3ab665[_0xa974('0x6')]||_0xa974('0x7');this[_0xa974('0x8')]=_0x3ab665[_0xa974('0x8')]||'no';this[_0xa974('0x9')]=_0x3ab665['faxdetect']||'no';this[_0xa974('0xa')]=_0x3ab665[_0xa974('0xa')]||0x1388;this[_0xa974('0xb')]=_0x3ab665['tech']||_0xa974('0xc');this['Trunk']=_0x3ab665[_0xa974('0xd')]?_0x3ab665[_0xa974('0xd')]:undefined;this[_0xa974('0xe')]=_0x3ab665['ListId'];this[_0xa974('0xf')]=_0x3ab665['key'];}module['exports']=FaxAccount;
\ No newline at end of file
index e54e7ed..cd5ee10 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeea1=['name','username','apiKey','serverUrl','Configurations','exports'];(function(_0x128188,_0x418a16){var _0x4bc209=function(_0x58c891){while(--_0x58c891){_0x128188['push'](_0x128188['shift']());}};_0x4bc209(++_0x418a16);}(_0xeea1,0x16e));var _0x1eea=function(_0x98353e,_0x502998){_0x98353e=_0x98353e-0x0;var _0x3569c3=_0xeea1[_0x98353e];return _0x3569c3;};'use strict';function FreshdeskAccount(_0x139482){this['id']=_0x139482['id']||0x0;this[_0x1eea('0x0')]=_0x139482[_0x1eea('0x0')]||'';this[_0x1eea('0x1')]=_0x139482[_0x1eea('0x1')]||'';this[_0x1eea('0x2')]=_0x139482['token']||'';this['remoteUri']=_0x139482['remoteUri']||'';this[_0x1eea('0x3')]=_0x139482['serverUrl']||'';this[_0x1eea('0x4')]=_0x139482[_0x1eea('0x4')]||{};}module[_0x1eea('0x5')]=FreshdeskAccount;
\ No newline at end of file
+var _0x021b=['serverUrl','Configurations','exports','name','username','apiKey','token','remoteUri'];(function(_0x3600e2,_0x396426){var _0x45ace2=function(_0x2d9fe2){while(--_0x2d9fe2){_0x3600e2['push'](_0x3600e2['shift']());}};_0x45ace2(++_0x396426);}(_0x021b,0x1bb));var _0xb021=function(_0x24ce1b,_0x885966){_0x24ce1b=_0x24ce1b-0x0;var _0x106cd6=_0x021b[_0x24ce1b];return _0x106cd6;};'use strict';function FreshdeskAccount(_0x3befe3){this['id']=_0x3befe3['id']||0x0;this[_0xb021('0x0')]=_0x3befe3['name']||'';this[_0xb021('0x1')]=_0x3befe3[_0xb021('0x1')]||'';this[_0xb021('0x2')]=_0x3befe3[_0xb021('0x3')]||'';this[_0xb021('0x4')]=_0x3befe3['remoteUri']||'';this[_0xb021('0x5')]=_0x3befe3[_0xb021('0x5')]||'';this[_0xb021('0x6')]=_0x3befe3[_0xb021('0x6')]||{};}module[_0xb021('0x7')]=FreshdeskAccount;
\ No newline at end of file
index d4eb61d..b545631 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x29af=['serverUrl','exports','name','username','apiKey','remoteUri'];(function(_0x34021d,_0x753aa6){var _0x16597b=function(_0x2d040a){while(--_0x2d040a){_0x34021d['push'](_0x34021d['shift']());}};_0x16597b(++_0x753aa6);}(_0x29af,0x134));var _0xf29a=function(_0x4f4ddf,_0x509cf8){_0x4f4ddf=_0x4f4ddf-0x0;var _0x2b04ec=_0x29af[_0x4f4ddf];return _0x2b04ec;};'use strict';function FreshsalesAccount(_0x1e95c8){this['id']=_0x1e95c8['id']||0x0;this[_0xf29a('0x0')]=_0x1e95c8[_0xf29a('0x0')]||'';this['username']=_0x1e95c8[_0xf29a('0x1')]||'';this[_0xf29a('0x2')]=_0x1e95c8['token']||'';this[_0xf29a('0x3')]=_0x1e95c8['remoteUri']||'';this[_0xf29a('0x4')]=_0x1e95c8[_0xf29a('0x4')]||'';this['Configurations']=_0x1e95c8['Configurations']||{};}module[_0xf29a('0x5')]=FreshsalesAccount;
\ No newline at end of file
+var _0x3ca4=['serverUrl','Configurations','exports','name','apiKey','token','remoteUri'];(function(_0xee9c5b,_0x50a896){var _0x3597c3=function(_0x494832){while(--_0x494832){_0xee9c5b['push'](_0xee9c5b['shift']());}};_0x3597c3(++_0x50a896);}(_0x3ca4,0x17d));var _0x43ca=function(_0x1c340a,_0x158d84){_0x1c340a=_0x1c340a-0x0;var _0x343aac=_0x3ca4[_0x1c340a];return _0x343aac;};'use strict';function FreshsalesAccount(_0x5e57e9){this['id']=_0x5e57e9['id']||0x0;this[_0x43ca('0x0')]=_0x5e57e9[_0x43ca('0x0')]||'';this['username']=_0x5e57e9['username']||'';this[_0x43ca('0x1')]=_0x5e57e9[_0x43ca('0x2')]||'';this[_0x43ca('0x3')]=_0x5e57e9[_0x43ca('0x3')]||'';this[_0x43ca('0x4')]=_0x5e57e9[_0x43ca('0x4')]||'';this[_0x43ca('0x5')]=_0x5e57e9['Configurations']||{};}module[_0x43ca('0x6')]=FreshsalesAccount;
\ No newline at end of file
index 14445cb..78042f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0387=['accountcode','exten','priority','holdtime','assigned','variables','exports','type','inbound','uniqueid','calleridnum','calleridname','queue','queuecallerjoinAt','count','queuecallerabandon','queuecallerabandonAt','queuecallercomplete','queuecallercompleteAt','queuecallerexit','queuecallerexitAt','channel','connectedlinename'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x0387,0xa8));var _0x7038=function(_0x25634c,_0x3086df){_0x25634c=_0x25634c-0x0;var _0x30757e=_0x0387[_0x25634c];return _0x30757e;};'use strict';function QueueReport(){this[_0x7038('0x0')]=_0x7038('0x1');this[_0x7038('0x2')]='';this[_0x7038('0x3')]='';this[_0x7038('0x4')]='';this[_0x7038('0x5')]='';this[_0x7038('0x6')]=null;this['queuecallerleaveAt']=null;this['position']=0x1;this[_0x7038('0x7')]=0x1;this[_0x7038('0x8')]=![];this[_0x7038('0x9')]=null;this[_0x7038('0xa')]=![];this[_0x7038('0xb')]=null;this[_0x7038('0xc')]=![];this[_0x7038('0xd')]=null;this['originalposition']=0x1;this[_0x7038('0xe')]='';this['connectedlinenum']='';this[_0x7038('0xf')]='';this[_0x7038('0x10')]='';this['context']='';this[_0x7038('0x11')]='';this[_0x7038('0x12')]='';this[_0x7038('0x13')]=0x0;this[_0x7038('0x14')]=![];this['lastAssignedTo']='';this['mohtime']=0x0;this[_0x7038('0x15')]={};}module[_0x7038('0x16')]=QueueReport;
\ No newline at end of file
+var _0xc247=['uniqueid','calleridnum','calleridname','queuecallerleaveAt','position','count','queuecallerabandon','queuecallerabandonAt','queuecallercompleteAt','queuecallerexit','queuecallerexitAt','originalposition','channel','connectedlinenum','connectedlinename','accountcode','holdtime','assigned','motionChannel','mohtime','exports','type','inbound'];(function(_0x3df517,_0x373364){var _0x25ddd5=function(_0xdd2381){while(--_0xdd2381){_0x3df517['push'](_0x3df517['shift']());}};_0x25ddd5(++_0x373364);}(_0xc247,0x9f));var _0x7c24=function(_0x39fd11,_0x5d7883){_0x39fd11=_0x39fd11-0x0;var _0x302799=_0xc247[_0x39fd11];return _0x302799;};'use strict';function QueueReport(){this[_0x7c24('0x0')]=_0x7c24('0x1');this[_0x7c24('0x2')]='';this[_0x7c24('0x3')]='';this[_0x7c24('0x4')]='';this['queue']='';this['queuecallerjoinAt']=null;this[_0x7c24('0x5')]=null;this[_0x7c24('0x6')]=0x1;this[_0x7c24('0x7')]=0x1;this[_0x7c24('0x8')]=![];this[_0x7c24('0x9')]=null;this['queuecallercomplete']=![];this[_0x7c24('0xa')]=null;this[_0x7c24('0xb')]=![];this[_0x7c24('0xc')]=null;this[_0x7c24('0xd')]=0x1;this[_0x7c24('0xe')]='';this[_0x7c24('0xf')]='';this[_0x7c24('0x10')]='';this[_0x7c24('0x11')]='';this['context']='';this['exten']='';this['priority']='';this[_0x7c24('0x12')]=0x0;this[_0x7c24('0x13')]=![];this['lastAssignedTo']='';this[_0x7c24('0x14')]='voice';this[_0x7c24('0x15')]=0x0;this['variables']={};}module[_0x7c24('0x16')]=QueueReport;
\ No newline at end of file
index 463d3f4..b5c1445 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaac4=['name','username','remoteUri','password','clientId','clientSecret','securityToken','type','integrationTab','serverUrl','Configurations','exports'];(function(_0x5d1fec,_0x3a0c62){var _0x5db43f=function(_0x58afa1){while(--_0x58afa1){_0x5d1fec['push'](_0x5d1fec['shift']());}};_0x5db43f(++_0x3a0c62);}(_0xaac4,0x6c));var _0x4aac=function(_0x26ed29,_0x2288f1){_0x26ed29=_0x26ed29-0x0;var _0x26182c=_0xaac4[_0x26ed29];return _0x26182c;};'use strict';function SalesforceAccount(_0x4b964b){this['id']=_0x4b964b['id']||0x0;this[_0x4aac('0x0')]=_0x4b964b['name']||'';this[_0x4aac('0x1')]=_0x4b964b[_0x4aac('0x1')]||'';this[_0x4aac('0x2')]=_0x4b964b['remoteUri']||'';this[_0x4aac('0x3')]=_0x4b964b[_0x4aac('0x3')]||'';this[_0x4aac('0x4')]=_0x4b964b[_0x4aac('0x4')]||'';this[_0x4aac('0x5')]=_0x4b964b['clientSecret']||'';this[_0x4aac('0x6')]=_0x4b964b[_0x4aac('0x6')]||'';this[_0x4aac('0x7')]=_0x4b964b['type']||_0x4aac('0x8');this['serverUrl']=_0x4b964b[_0x4aac('0x9')]||'';this[_0x4aac('0xa')]=_0x4b964b[_0x4aac('0xa')]||{};}module[_0x4aac('0xb')]=SalesforceAccount;
\ No newline at end of file
+var _0x4ca4=['clientSecret','securityToken','serverUrl','Configurations','name','username','remoteUri','password','clientId'];(function(_0x19bf9c,_0xa5ef2){var _0x2fd6a6=function(_0x1662fc){while(--_0x1662fc){_0x19bf9c['push'](_0x19bf9c['shift']());}};_0x2fd6a6(++_0xa5ef2);}(_0x4ca4,0x100));var _0x44ca=function(_0x3b61a7,_0x384659){_0x3b61a7=_0x3b61a7-0x0;var _0x39bbec=_0x4ca4[_0x3b61a7];return _0x39bbec;};'use strict';function SalesforceAccount(_0x1e1c56){this['id']=_0x1e1c56['id']||0x0;this[_0x44ca('0x0')]=_0x1e1c56[_0x44ca('0x0')]||'';this[_0x44ca('0x1')]=_0x1e1c56[_0x44ca('0x1')]||'';this[_0x44ca('0x2')]=_0x1e1c56[_0x44ca('0x2')]||'';this[_0x44ca('0x3')]=_0x1e1c56['password']||'';this[_0x44ca('0x4')]=_0x1e1c56[_0x44ca('0x4')]||'';this[_0x44ca('0x5')]=_0x1e1c56[_0x44ca('0x5')]||'';this[_0x44ca('0x6')]=_0x1e1c56[_0x44ca('0x6')]||'';this['type']=_0x1e1c56['type']||'integrationTab';this[_0x44ca('0x7')]=_0x1e1c56[_0x44ca('0x7')]||'';this['Configurations']=_0x1e1c56[_0x44ca('0x8')]||{};}module['exports']=SalesforceAccount;
\ No newline at end of file
index a5b989d..804e2f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4a0=['remoteUri','serverUrl','Configurations','name','username','password'];(function(_0x1e9116,_0x508de1){var _0xeed3f8=function(_0x5b79b1){while(--_0x5b79b1){_0x1e9116['push'](_0x1e9116['shift']());}};_0xeed3f8(++_0x508de1);}(_0xf4a0,0x12f));var _0x0f4a=function(_0x2d17fb,_0x5196ea){_0x2d17fb=_0x2d17fb-0x0;var _0x32d345=_0xf4a0[_0x2d17fb];return _0x32d345;};'use strict';function ServicenowAccount(_0x4029ae){this['id']=_0x4029ae['id']||0x0;this['name']=_0x4029ae[_0x0f4a('0x0')]||'';this[_0x0f4a('0x1')]=_0x4029ae['username']||'';this[_0x0f4a('0x2')]=_0x4029ae[_0x0f4a('0x2')]||'';this[_0x0f4a('0x3')]=_0x4029ae['remoteUri']||'';this[_0x0f4a('0x4')]=_0x4029ae[_0x0f4a('0x4')]||'';this[_0x0f4a('0x5')]=_0x4029ae['Configurations']||{};}module['exports']=ServicenowAccount;
\ No newline at end of file
+var _0x564b=['name','username','password','remoteUri','serverUrl','Configurations','exports'];(function(_0x53de5a,_0x36cf2d){var _0x17c567=function(_0x480946){while(--_0x480946){_0x53de5a['push'](_0x53de5a['shift']());}};_0x17c567(++_0x36cf2d);}(_0x564b,0xd2));var _0xb564=function(_0x279a30,_0xf9a7a1){_0x279a30=_0x279a30-0x0;var _0xa5fdf6=_0x564b[_0x279a30];return _0xa5fdf6;};'use strict';function ServicenowAccount(_0x9203a8){this['id']=_0x9203a8['id']||0x0;this[_0xb564('0x0')]=_0x9203a8['name']||'';this[_0xb564('0x1')]=_0x9203a8[_0xb564('0x1')]||'';this['password']=_0x9203a8[_0xb564('0x2')]||'';this[_0xb564('0x3')]=_0x9203a8[_0xb564('0x3')]||'';this['serverUrl']=_0x9203a8[_0xb564('0x4')]||'';this[_0xb564('0x5')]=_0x9203a8[_0xb564('0x5')]||{};}module[_0xb564('0x6')]=ServicenowAccount;
\ No newline at end of file
index 3e7ecf7..ba81d2b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x93a0=['exports','name','username','password','remoteUri','serverUrl','Configurations'];(function(_0x43887c,_0x1733d9){var _0x627512=function(_0x3a390f){while(--_0x3a390f){_0x43887c['push'](_0x43887c['shift']());}};_0x627512(++_0x1733d9);}(_0x93a0,0x1f2));var _0x093a=function(_0x5c1120,_0x405cb4){_0x5c1120=_0x5c1120-0x0;var _0x1e9039=_0x93a0[_0x5c1120];return _0x1e9039;};'use strict';function SugarcrmAccount(_0x4a1b81){this['id']=_0x4a1b81['id']||0x0;this[_0x093a('0x0')]=_0x4a1b81['name']||'';this['username']=_0x4a1b81[_0x093a('0x1')]||'';this['password']=_0x4a1b81[_0x093a('0x2')]||'';this['remoteUri']=_0x4a1b81[_0x093a('0x3')]||'';this['serverUrl']=_0x4a1b81[_0x093a('0x4')]||'';this[_0x093a('0x5')]=_0x4a1b81[_0x093a('0x5')]||{};}module[_0x093a('0x6')]=SugarcrmAccount;
\ No newline at end of file
+var _0x1284=['remoteUri','serverUrl','Configurations','exports','name','username','password'];(function(_0x20ba8a,_0x3a9ee3){var _0x34f894=function(_0x44a587){while(--_0x44a587){_0x20ba8a['push'](_0x20ba8a['shift']());}};_0x34f894(++_0x3a9ee3);}(_0x1284,0x1bd));var _0x4128=function(_0x2ef8f1,_0x1280a3){_0x2ef8f1=_0x2ef8f1-0x0;var _0x17498d=_0x1284[_0x2ef8f1];return _0x17498d;};'use strict';function SugarcrmAccount(_0x36b75d){this['id']=_0x36b75d['id']||0x0;this['name']=_0x36b75d[_0x4128('0x0')]||'';this['username']=_0x36b75d[_0x4128('0x1')]||'';this[_0x4128('0x2')]=_0x36b75d[_0x4128('0x2')]||'';this[_0x4128('0x3')]=_0x36b75d['remoteUri']||'';this[_0x4128('0x4')]=_0x36b75d['serverUrl']||'';this[_0x4128('0x5')]=_0x36b75d[_0x4128('0x5')]||{};}module[_0x4128('0x6')]=SugarcrmAccount;
\ No newline at end of file
index 5624bd4..f0d2167 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b08=['unknown','stateTime','status','address','exports','name','accountcode','state'];(function(_0xefb4e,_0xe56689){var _0x36c78c=function(_0x158fe3){while(--_0x158fe3){_0xefb4e['push'](_0xefb4e['shift']());}};_0x36c78c(++_0xe56689);}(_0x1b08,0x1c5));var _0x81b0=function(_0x271e26,_0xeaa798){_0x271e26=_0x271e26-0x0;var _0x4c3771=_0x1b08[_0x271e26];return _0x4c3771;};'use strict';function Telephone(_0x1eed49){this['id']=_0x1eed49['id']||0x0;this[_0x81b0('0x0')]=_0x1eed49['name']||'';this[_0x81b0('0x1')]=_0x1eed49[_0x81b0('0x1')]||'';this[_0x81b0('0x2')]=_0x81b0('0x3');this[_0x81b0('0x4')]=0x0;this[_0x81b0('0x5')]='unknown';this[_0x81b0('0x6')]='';}module[_0x81b0('0x7')]=Telephone;
\ No newline at end of file
+var _0x63d6=['name','accountcode','unknown','stateTime','address','exports'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0x63d6,0xae));var _0x663d=function(_0x5f1b83,_0x8778c7){_0x5f1b83=_0x5f1b83-0x0;var _0x4d408b=_0x63d6[_0x5f1b83];return _0x4d408b;};'use strict';function Telephone(_0x1ff15e){this['id']=_0x1ff15e['id']||0x0;this[_0x663d('0x0')]=_0x1ff15e[_0x663d('0x0')]||'';this[_0x663d('0x1')]=_0x1ff15e[_0x663d('0x1')]||'';this['state']=_0x663d('0x2');this[_0x663d('0x3')]=0x0;this['status']=_0x663d('0x2');this[_0x663d('0x4')]='';}module[_0x663d('0x5')]=Telephone;
\ No newline at end of file
index b71cf01..d4523ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['name','html'];(function(_0x214e28,_0x323724){var _0x78ada9=function(_0xc7daf6){while(--_0xc7daf6){_0x214e28['push'](_0x214e28['shift']());}};_0x78ada9(++_0x323724);}(_0xb10b,0x12a));var _0xbb10=function(_0x1a3243,_0x201872){_0x1a3243=_0x1a3243-0x0;var _0x33f2ca=_0xb10b[_0x1a3243];return _0x33f2ca;};'use strict';function template(_0x13ce8d){this['id']=_0x13ce8d['id']||0x0;this['name']=_0x13ce8d[_0xbb10('0x0')]||'';this[_0xbb10('0x1')]=_0x13ce8d[_0xbb10('0x1')]||'';}module['exports']=template;
\ No newline at end of file
+var _0xb10b=['name','html'];(function(_0x1e2263,_0x5e42e7){var _0x2030f1=function(_0xa74508){while(--_0xa74508){_0x1e2263['push'](_0x1e2263['shift']());}};_0x2030f1(++_0x5e42e7);}(_0xb10b,0x12a));var _0xbb10=function(_0x2d34d6,_0x397ff9){_0x2d34d6=_0x2d34d6-0x0;var _0x1d3d12=_0xb10b[_0x2d34d6];return _0x1d3d12;};'use strict';function template(_0x13ce8d){this['id']=_0x13ce8d['id']||0x0;this['name']=_0x13ce8d[_0xbb10('0x0')]||'';this[_0xbb10('0x1')]=_0x13ce8d[_0xbb10('0x1')]||'';}module['exports']=template;
\ No newline at end of file
index 033b44a..42256b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda3f=['Actions','name','status','AllConditions','AnyConditions'];(function(_0x5ad56a,_0x3355e6){var _0x32a28d=function(_0x883884){while(--_0x883884){_0x5ad56a['push'](_0x5ad56a['shift']());}};_0x32a28d(++_0x3355e6);}(_0xda3f,0xec));var _0xfda3=function(_0x5798fc,_0x5366ab){_0x5798fc=_0x5798fc-0x0;var _0x49168f=_0xda3f[_0x5798fc];return _0x49168f;};'use strict';function Trigger(_0x33f0ce){this['id']=_0x33f0ce['id']||0x0;this[_0xfda3('0x0')]=_0x33f0ce[_0xfda3('0x0')]||'';this['channel']=_0x33f0ce['channel']||'voice';this[_0xfda3('0x1')]=_0x33f0ce['status']||![];this[_0xfda3('0x2')]=_0x33f0ce[_0xfda3('0x2')]||[];this['AnyConditions']=_0x33f0ce[_0xfda3('0x3')]||[];this[_0xfda3('0x4')]=_0x33f0ce['Actions']||[];}module['exports']=Trigger;
\ No newline at end of file
+var _0x757a=['name','status','AllConditions','AnyConditions','Actions','exports'];(function(_0x216d41,_0x35dd4f){var _0x166e47=function(_0x85a31a){while(--_0x85a31a){_0x216d41['push'](_0x216d41['shift']());}};_0x166e47(++_0x35dd4f);}(_0x757a,0xde));var _0xa757=function(_0x2b74aa,_0x1a5d84){_0x2b74aa=_0x2b74aa-0x0;var _0x7896a7=_0x757a[_0x2b74aa];return _0x7896a7;};'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 805e8a2..3f6bda7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcc64=['domainport','refresh','stateRegistry','registrationtime','address','defaultuser','active','name','state','unknown','stateTime','status','registry','indexOf','split','host','port','domain'];(function(_0x125625,_0x33a537){var _0x979a5e=function(_0x463339){while(--_0x463339){_0x125625['push'](_0x125625['shift']());}};_0x979a5e(++_0x33a537);}(_0xcc64,0x126));var _0x4cc6=function(_0x20d94c,_0x4c5a5a){_0x20d94c=_0x20d94c-0x0;var _0x5ebf3f=_0xcc64[_0x20d94c];return _0x5ebf3f;};'use strict';function Trunk(_0x5854a7){this['id']=_0x5854a7['id']||0x0;this[_0x4cc6('0x0')]=_0x5854a7[_0x4cc6('0x0')]||![];this[_0x4cc6('0x1')]=_0x5854a7[_0x4cc6('0x1')]||'';this[_0x4cc6('0x2')]=_0x4cc6('0x3');this[_0x4cc6('0x4')]=0x0;this[_0x4cc6('0x5')]=_0x4cc6('0x3');this['registry']=_0x5854a7[_0x4cc6('0x6')]&&_0x5854a7[_0x4cc6('0x6')][_0x4cc6('0x7')](':')?_0x5854a7[_0x4cc6('0x6')][_0x4cc6('0x8')](':')[0x0]:'';this[_0x4cc6('0x9')]='';this[_0x4cc6('0xa')]='';this[_0x4cc6('0xb')]='';this[_0x4cc6('0xc')]='';this[_0x4cc6('0xd')]='';this[_0x4cc6('0xe')]=_0x4cc6('0x3');this[_0x4cc6('0xf')]='';this[_0x4cc6('0x10')]='';this['defaultuser']=_0x5854a7[_0x4cc6('0x11')]||'';}module['exports']=Trunk;
\ No newline at end of file
+var _0x2572=['split','port','domain','domainport','stateRegistry','address','defaultuser','exports','active','name','state','unknown','stateTime','registry','indexOf'];(function(_0x523b8f,_0xde9d92){var _0x5b4ddb=function(_0x5755e9){while(--_0x5755e9){_0x523b8f['push'](_0x523b8f['shift']());}};_0x5b4ddb(++_0xde9d92);}(_0x2572,0x1e8));var _0x2257=function(_0x2bf141,_0x31eac7){_0x2bf141=_0x2bf141-0x0;var _0x48277b=_0x2572[_0x2bf141];return _0x48277b;};'use strict';function Trunk(_0xcfb4cd){this['id']=_0xcfb4cd['id']||0x0;this[_0x2257('0x0')]=_0xcfb4cd['active']||![];this[_0x2257('0x1')]=_0xcfb4cd[_0x2257('0x1')]||'';this[_0x2257('0x2')]=_0x2257('0x3');this[_0x2257('0x4')]=0x0;this['status']=_0x2257('0x3');this[_0x2257('0x5')]=_0xcfb4cd[_0x2257('0x5')]&&_0xcfb4cd[_0x2257('0x5')][_0x2257('0x6')](':')?_0xcfb4cd[_0x2257('0x5')][_0x2257('0x7')](':')[0x0]:'';this['host']='';this[_0x2257('0x8')]='';this[_0x2257('0x9')]='';this[_0x2257('0xa')]='';this['refresh']='';this[_0x2257('0xb')]=_0x2257('0x3');this['registrationtime']='';this[_0x2257('0xc')]='';this[_0x2257('0xd')]=_0xcfb4cd[_0x2257('0xd')]||'';}module[_0x2257('0xe')]=Trunk;
\ No newline at end of file
index e8400f9..a4d38c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x662a=['recordingFormat','none','mandatoryDisposition','exten'];(function(_0x1c030b,_0x57236c){var _0x47bb85=function(_0x350a7e){while(--_0x350a7e){_0x1c030b['push'](_0x1c030b['shift']());}};_0x47bb85(++_0x57236c);}(_0x662a,0x1ef));var _0xa662=function(_0x545827,_0x51baa6){_0x545827=_0x545827-0x0;var _0x42f69c=_0x662a[_0x545827];return _0x42f69c;};'use strict';function voiceExtension(_0x2e289a){this['id']=_0x2e289a['id']||0x0;this[_0xa662('0x0')]=_0x2e289a['exten']||'';this['recordingFormat']=_0x2e289a[_0xa662('0x1')]||_0xa662('0x2');this[_0xa662('0x3')]=_0x2e289a[_0xa662('0x3')]||![];}module['exports']=voiceExtension;
\ No newline at end of file
+var _0x7170=['mandatoryDisposition','exten','recordingFormat'];(function(_0x2d39fd,_0x51c4bf){var _0x304cec=function(_0x7058c3){while(--_0x7058c3){_0x2d39fd['push'](_0x2d39fd['shift']());}};_0x304cec(++_0x51c4bf);}(_0x7170,0x79));var _0x0717=function(_0x4c9f6d,_0x55a947){_0x4c9f6d=_0x4c9f6d-0x0;var _0x68edfb=_0x7170[_0x4c9f6d];return _0x68edfb;};'use strict';function voiceExtension(_0x193287){this['id']=_0x193287['id']||0x0;this[_0x0717('0x0')]=_0x193287['exten']||'';this[_0x0717('0x1')]=_0x193287[_0x0717('0x1')]||'none';this['mandatoryDisposition']=_0x193287[_0x0717('0x2')]||![];}module['exports']=voiceExtension;
\ No newline at end of file
index aae81ea..680043b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x52ad=['dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','anonymous','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueOptions','tTxX','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialGlobalMaxRetry','Trunk','TrunkBackup','dialPrefix','Interval','dialOrderByScheduledAt','DESC','dialRandomLastDigitCallerIdNumber','dialCutDigit','strategy','rrmemory','queueStatusComplete','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','outboundRejectCallsDay','pTalking','timeout','outboundAnswerCallsDay','outboundAnswerAgiCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundNoSuchCallsDay','outboundUnknownCallsDay','outboundBlacklistCallsDay','outboundDropCallsDayTimeout','outboundDropCallsDayACS','outboundReCallsDay','outboundAbandonedDay','startProgressive','startPredictive','predictiveIntervalMultiplicativeFactor','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalAvgTalktime','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalMaxThreshold','dialPredictiveIntervalMaxThreshold','predictiveIntervalMinThreshold','predictiveIntervalErlangCalls','predictiveIntervalHitRate','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','dialRecallMeTimeout','dialRecallInQueue','dialQueueProject2','dialAgiAfterHangupClient','dialAgiAfterHangupAgent','mandatoryDisposition','mandatoryDispositionPause','exports','inuse','invalid','unavailable','ringing','onhold','wav49','gsm','roundrobin','name','monitor_format','type','inbound','waiting','talking','total','answered','sumDuration','sumHoldTime','sumBillable','loggedIn','available','acw','acwTimeout','autopause','sendMessageOneNotActive','message','originated','dialTimezone','dialGlobalInterval','dialActive','dialMethod','dialLimitChannel'];(function(_0x44b33b,_0x5df28b){var _0x31731e=function(_0x4d9368){while(--_0x4d9368){_0x44b33b['push'](_0x44b33b['shift']());}};_0x31731e(++_0x5df28b);}(_0x52ad,0xd4));var _0xd52a=function(_0x2a08cb,_0x5ab94d){_0x2a08cb=_0x2a08cb-0x0;var _0x390f36=_0x52ad[_0x2a08cb];return _0x390f36;};'use strict';var statusDesc=['unknown','not_inuse',_0xd52a('0x0'),'busy',_0xd52a('0x1'),_0xd52a('0x2'),_0xd52a('0x3'),'ringinuse',_0xd52a('0x4')];var monitorFormat={'wav':'wav','wav49':_0xd52a('0x5'),'gsm':_0xd52a('0x6')};var strategy={'rrmemory':'rrmemory','roundrobin':_0xd52a('0x7')};function VoiceQueue(_0x2a6aad){this['id']=_0x2a6aad['id']||0x0;this[_0xd52a('0x8')]=_0x2a6aad[_0xd52a('0x8')]||'';this[_0xd52a('0x9')]=_0x2a6aad[_0xd52a('0x9')]||'';this[_0xd52a('0xa')]=_0x2a6aad[_0xd52a('0xa')]||_0xd52a('0xb');this[_0xd52a('0xc')]=0x0;this[_0xd52a('0xd')]=0x0;this[_0xd52a('0xe')]=0x0;this[_0xd52a('0xf')]=0x0;this[_0xd52a('0x10')]=0x0;this[_0xd52a('0x11')]=0x0;this[_0xd52a('0x12')]=0x0;this['unmanaged']=0x0;this['abandoned']=0x0;this[_0xd52a('0x13')]=0x0;this[_0xd52a('0x14')]=0x0;this[_0xd52a('0x15')]=_0x2a6aad['acw']||![];this[_0xd52a('0x16')]=_0x2a6aad['acwTimeout']||0xa;this[_0xd52a('0x17')]=_0x2a6aad[_0xd52a('0x17')]||'no';this[_0xd52a('0x18')]=!![];this[_0xd52a('0x19')]='';this[_0xd52a('0x1a')]=0x0;this['temp']=0x0;this['dialTimezone']=_0x2a6aad[_0xd52a('0x1b')]||null;this[_0xd52a('0x1c')]=_0x2a6aad[_0xd52a('0x1c')]?_0x2a6aad[_0xd52a('0x1c')]:null;this[_0xd52a('0x1d')]=_0x2a6aad[_0xd52a('0x1d')];this['dialMethod']=_0x2a6aad[_0xd52a('0x1e')]||'progressive';this[_0xd52a('0x1f')]=_0x2a6aad['dialLimitChannel']||0x0;this[_0xd52a('0x20')]=_0x2a6aad[_0xd52a('0x20')]||0x0;this[_0xd52a('0x21')]=_0x2a6aad[_0xd52a('0x21')]||0x1;this[_0xd52a('0x22')]=_0x2a6aad['dialPredictiveOptimization']||'dropRate';this[_0xd52a('0x23')]=_0x2a6aad['dialPredictiveOptimizationPercentage']||0.03;this[_0xd52a('0x24')]=_0x2a6aad['dialPredictiveInterval']||0x258;this[_0xd52a('0x25')]=_0x2a6aad['dialOriginateCallerIdName']||_0xd52a('0x26');this[_0xd52a('0x27')]=_0x2a6aad[_0xd52a('0x27')]||'anonymous';this[_0xd52a('0x28')]=_0x2a6aad[_0xd52a('0x28')]||0x1e;this['dialQueueOptions']=_0x2a6aad[_0xd52a('0x29')]||_0xd52a('0x2a');this[_0xd52a('0x2b')]=_0x2a6aad[_0xd52a('0x2b')]||0x3;this[_0xd52a('0x2c')]=_0x2a6aad[_0xd52a('0x2c')]||undefined;this[_0xd52a('0x2d')]=_0x2a6aad[_0xd52a('0x2d')]||0x3;this[_0xd52a('0x2e')]=_0x2a6aad[_0xd52a('0x2e')]||0x96;this['dialBusyMaxRetry']=_0x2a6aad[_0xd52a('0x2f')]||0x3;this[_0xd52a('0x30')]=_0x2a6aad[_0xd52a('0x30')]||0x96;this[_0xd52a('0x31')]=_0x2a6aad[_0xd52a('0x31')]||0x3;this[_0xd52a('0x32')]=_0x2a6aad[_0xd52a('0x32')]||0x96;this[_0xd52a('0x33')]=_0x2a6aad[_0xd52a('0x33')]||0x3;this[_0xd52a('0x34')]=_0x2a6aad['dialNoSuchNumberRetryFrequency']||0x96;this[_0xd52a('0x35')]=_0x2a6aad['dialDropMaxRetry']||0x3;this[_0xd52a('0x36')]=_0x2a6aad[_0xd52a('0x36')]||0x96;this[_0xd52a('0x37')]=_0x2a6aad[_0xd52a('0x37')]||0x3;this['dialAbandonedRetryFrequency']=_0x2a6aad[_0xd52a('0x38')]||0x96;this[_0xd52a('0x39')]=_0x2a6aad[_0xd52a('0x39')]||0x3;this[_0xd52a('0x3a')]=_0x2a6aad[_0xd52a('0x3a')]||0x96;this[_0xd52a('0x3b')]=_0x2a6aad[_0xd52a('0x3b')]||0x3;this[_0xd52a('0x3c')]=_0x2a6aad[_0xd52a('0x3c')]||0x96;this['dialGlobalMaxRetry']=_0x2a6aad[_0xd52a('0x3d')]||0x4;this['Trunk']=_0x2a6aad[_0xd52a('0x3e')]?_0x2a6aad[_0xd52a('0x3e')]:undefined;this[_0xd52a('0x3f')]=_0x2a6aad['TrunkBackup']?_0x2a6aad[_0xd52a('0x3f')]:undefined;this[_0xd52a('0x40')]=_0x2a6aad[_0xd52a('0x40')]||undefined;this['Interval']=_0x2a6aad[_0xd52a('0x41')]?_0x2a6aad[_0xd52a('0x41')]:undefined;this[_0xd52a('0x42')]=_0x2a6aad['dialOrderByScheduledAt']||_0xd52a('0x43');this[_0xd52a('0x44')]=_0x2a6aad[_0xd52a('0x44')]||undefined;this[_0xd52a('0x45')]=_0x2a6aad[_0xd52a('0x45')]||undefined;this[_0xd52a('0x46')]=strategy[_0x2a6aad[_0xd52a('0x46')]]||_0xd52a('0x47');this[_0xd52a('0x48')]=!![];this[_0xd52a('0x49')]=_0x2a6aad[_0xd52a('0x49')]||![];this[_0xd52a('0x4a')]=_0x2a6aad[_0xd52a('0x4a')];this[_0xd52a('0x4b')]=_0x2a6aad['dialAMDGreeting'];this[_0xd52a('0x4c')]=_0x2a6aad[_0xd52a('0x4c')];this['dialAMDTotalAnalysisTime']=_0x2a6aad['dialAMDTotalAnalysisTime'];this['dialAMDMinWordLength']=_0x2a6aad[_0xd52a('0x4d')];this[_0xd52a('0x4e')]=_0x2a6aad[_0xd52a('0x4e')];this[_0xd52a('0x4f')]=_0x2a6aad[_0xd52a('0x4f')];this['dialAMDSilenceThreshold']=_0x2a6aad[_0xd52a('0x50')];this[_0xd52a('0x51')]=_0x2a6aad[_0xd52a('0x51')];this[_0xd52a('0x52')]=0x0;this[_0xd52a('0x53')]=0x0;this[_0xd52a('0x54')]=_0x2a6aad[_0xd52a('0x54')];this[_0xd52a('0x55')]=0x0;this[_0xd52a('0x56')]=0x0;this['outboundNoAnswerCallsDay']=0x0;this[_0xd52a('0x57')]=0x0;this[_0xd52a('0x58')]=0x0;this[_0xd52a('0x59')]=0x0;this[_0xd52a('0x5a')]=0x0;this[_0xd52a('0x5b')]=0x0;this['outboundOriginateFailureCallsDay']=0x0;this['outboundDropCallsDayCallersExit']=0x0;this[_0xd52a('0x5c')]=0x0;this[_0xd52a('0x5d')]=0x0;this[_0xd52a('0x5e')]=0x0;this[_0xd52a('0x5f')]=0x0;this[_0xd52a('0x60')]=undefined;this[_0xd52a('0x61')]=undefined;this['handlePredictive']=undefined;this[_0xd52a('0x62')]=1.05;this[_0xd52a('0x63')]=0x0;this[_0xd52a('0x64')]=0x0;this[_0xd52a('0x65')]=0x0;this['predictiveIntervalDroppedCallsTimeout']=0x0;this['predictiveIntervalAvgHoldtime']=0x0;this[_0xd52a('0x66')]=0x0;this[_0xd52a('0x67')]=0x0;this[_0xd52a('0x68')]=0x0;this[_0xd52a('0x69')]=_0x2a6aad[_0xd52a('0x6a')]||0x14;this[_0xd52a('0x6b')]=_0x2a6aad[_0xd52a('0x6a')]||0xa;this[_0xd52a('0x6c')]=0x0;this['predictiveIntervalErlangCallsDroppedCalls']=0x0;this[_0xd52a('0x6d')]=0x1;this[_0xd52a('0x6e')]=0x0;this[_0xd52a('0x6f')]=0x0;this[_0xd52a('0x70')]=0x0;this[_0xd52a('0x71')]=0x0;this[_0xd52a('0x72')]=_0x2a6aad[_0xd52a('0x72')]||0x1e;this[_0xd52a('0x73')]=_0x2a6aad[_0xd52a('0x73')]||![];this[_0xd52a('0x74')]=_0x2a6aad[_0xd52a('0x74')]||undefined;this[_0xd52a('0x75')]=_0x2a6aad['dialAgiAfterHangupClient']||![];this[_0xd52a('0x76')]=_0x2a6aad[_0xd52a('0x76')]||![];this[_0xd52a('0x9')]=monitorFormat[_0x2a6aad[_0xd52a('0x9')]]?monitorFormat[_0x2a6aad[_0xd52a('0x9')]]:undefined;this['mandatoryDisposition']=_0x2a6aad[_0xd52a('0x77')]||![];this[_0xd52a('0x78')]=_0x2a6aad['mandatoryDispositionPause']?_0x2a6aad[_0xd52a('0x78')]:undefined;}module[_0xd52a('0x79')]=VoiceQueue;
\ No newline at end of file
+var _0xedf3=['predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalAvgTalktime','predictiveIntervalPauses','predictiveIntervalMaxThreshold','dialPredictiveIntervalMaxThreshold','predictiveIntervalMinThreshold','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','erlangCalls','erlangAbandonmentRate','erlangBusyFactor','dialRecallMeTimeout','dialRecallInQueue','dialPreviewAutoRecallMe','dialQueueProject2','dialAgiAfterHangupClient','dialAgiAfterHangupAgent','mandatoryDisposition','mandatoryDispositionPause','exports','unknown','inuse','busy','invalid','ringing','ringinuse','onhold','wav','wav49','rrmemory','roundrobin','name','monitor_format','type','waiting','talking','total','sumHoldTime','sumBillable','unmanaged','abandoned','available','acw','acwTimeout','autopause','sendMessageOneNotActive','message','temp','dialTimezone','dialGlobalInterval','dialActive','dialMethod','progressive','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dropRate','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','anonymous','dialOriginateTimeout','dialQueueOptions','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectRetryFrequency','dialGlobalMaxRetry','Trunk','TrunkBackup','dialPrefix','Interval','dialOrderByScheduledAt','DESC','dialRandomLastDigitCallerIdNumber','dialCutDigit','strategy','queueStatusComplete','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','outboundRejectCallsDay','timeout','outboundAnswerCallsDay','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundNoSuchCallsDay','outboundUnknownCallsDay','outboundOriginateFailureCallsDay','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundDropCallsDayACS','outboundReCallsDay','outboundAbandonedDay','handlePredictive','predictiveIntervalMultiplicativeFactor'];(function(_0x5dc03e,_0x54e60c){var _0x466a07=function(_0x2ce0cd){while(--_0x2ce0cd){_0x5dc03e['push'](_0x5dc03e['shift']());}};_0x466a07(++_0x54e60c);}(_0xedf3,0x8f));var _0x3edf=function(_0x4653f7,_0x3d3ae3){_0x4653f7=_0x4653f7-0x0;var _0x5454da=_0xedf3[_0x4653f7];return _0x5454da;};'use strict';var statusDesc=[_0x3edf('0x0'),'not_inuse',_0x3edf('0x1'),_0x3edf('0x2'),_0x3edf('0x3'),'unavailable',_0x3edf('0x4'),_0x3edf('0x5'),_0x3edf('0x6')];var monitorFormat={'wav':_0x3edf('0x7'),'wav49':_0x3edf('0x8'),'gsm':'gsm'};var strategy={'rrmemory':_0x3edf('0x9'),'roundrobin':_0x3edf('0xa')};function VoiceQueue(_0x7ab8fe){this['id']=_0x7ab8fe['id']||0x0;this[_0x3edf('0xb')]=_0x7ab8fe[_0x3edf('0xb')]||'';this[_0x3edf('0xc')]=_0x7ab8fe[_0x3edf('0xc')]||'';this[_0x3edf('0xd')]=_0x7ab8fe[_0x3edf('0xd')]||'inbound';this[_0x3edf('0xe')]=0x0;this[_0x3edf('0xf')]=0x0;this[_0x3edf('0x10')]=0x0;this['answered']=0x0;this['sumDuration']=0x0;this[_0x3edf('0x11')]=0x0;this[_0x3edf('0x12')]=0x0;this[_0x3edf('0x13')]=0x0;this[_0x3edf('0x14')]=0x0;this['loggedIn']=0x0;this[_0x3edf('0x15')]=0x0;this[_0x3edf('0x16')]=_0x7ab8fe['acw']||![];this[_0x3edf('0x17')]=_0x7ab8fe[_0x3edf('0x17')]||0xa;this[_0x3edf('0x18')]=_0x7ab8fe['autopause']||'no';this[_0x3edf('0x19')]=!![];this[_0x3edf('0x1a')]='';this['originated']=0x0;this[_0x3edf('0x1b')]=0x0;this[_0x3edf('0x1c')]=_0x7ab8fe[_0x3edf('0x1c')]||null;this[_0x3edf('0x1d')]=_0x7ab8fe[_0x3edf('0x1d')]?_0x7ab8fe[_0x3edf('0x1d')]:null;this[_0x3edf('0x1e')]=_0x7ab8fe[_0x3edf('0x1e')];this[_0x3edf('0x1f')]=_0x7ab8fe['dialMethod']||_0x3edf('0x20');this[_0x3edf('0x21')]=_0x7ab8fe[_0x3edf('0x21')]||0x0;this['dialLimitQueue']=_0x7ab8fe[_0x3edf('0x22')]||0x0;this['dialPowerLevel']=_0x7ab8fe[_0x3edf('0x23')]||0x1;this[_0x3edf('0x24')]=_0x7ab8fe[_0x3edf('0x24')]||_0x3edf('0x25');this[_0x3edf('0x26')]=_0x7ab8fe[_0x3edf('0x26')]||0.03;this[_0x3edf('0x27')]=_0x7ab8fe[_0x3edf('0x27')]||0x258;this[_0x3edf('0x28')]=_0x7ab8fe[_0x3edf('0x28')]||'anonymous';this['dialOriginateCallerIdNumber']=_0x7ab8fe[_0x3edf('0x29')]||_0x3edf('0x2a');this[_0x3edf('0x2b')]=_0x7ab8fe[_0x3edf('0x2b')]||0x1e;this[_0x3edf('0x2c')]=_0x7ab8fe[_0x3edf('0x2c')]||'tTxX';this[_0x3edf('0x2d')]=_0x7ab8fe['dialQueueTimeout']||0x3;this[_0x3edf('0x2e')]=_0x7ab8fe[_0x3edf('0x2e')]||undefined;this[_0x3edf('0x2f')]=_0x7ab8fe[_0x3edf('0x2f')]||0x3;this[_0x3edf('0x30')]=_0x7ab8fe[_0x3edf('0x30')]||0x96;this[_0x3edf('0x31')]=_0x7ab8fe[_0x3edf('0x31')]||0x3;this[_0x3edf('0x32')]=_0x7ab8fe[_0x3edf('0x32')]||0x96;this[_0x3edf('0x33')]=_0x7ab8fe['dialNoAnswerMaxRetry']||0x3;this['dialNoAnswerRetryFrequency']=_0x7ab8fe[_0x3edf('0x34')]||0x96;this[_0x3edf('0x35')]=_0x7ab8fe['dialNoSuchNumberMaxRetry']||0x3;this[_0x3edf('0x36')]=_0x7ab8fe[_0x3edf('0x36')]||0x96;this[_0x3edf('0x37')]=_0x7ab8fe['dialDropMaxRetry']||0x3;this[_0x3edf('0x38')]=_0x7ab8fe[_0x3edf('0x38')]||0x96;this['dialAbandonedMaxRetry']=_0x7ab8fe[_0x3edf('0x39')]||0x3;this['dialAbandonedRetryFrequency']=_0x7ab8fe['dialAbandonedRetryFrequency']||0x96;this[_0x3edf('0x3a')]=_0x7ab8fe[_0x3edf('0x3a')]||0x3;this[_0x3edf('0x3b')]=_0x7ab8fe['dialMachineRetryFrequency']||0x96;this['dialAgentRejectMaxRetry']=_0x7ab8fe['dialAgentRejectMaxRetry']||0x3;this[_0x3edf('0x3c')]=_0x7ab8fe[_0x3edf('0x3c')]||0x96;this[_0x3edf('0x3d')]=_0x7ab8fe['dialGlobalMaxRetry']||0x4;this[_0x3edf('0x3e')]=_0x7ab8fe[_0x3edf('0x3e')]?_0x7ab8fe['Trunk']:undefined;this[_0x3edf('0x3f')]=_0x7ab8fe[_0x3edf('0x3f')]?_0x7ab8fe[_0x3edf('0x3f')]:undefined;this[_0x3edf('0x40')]=_0x7ab8fe[_0x3edf('0x40')]||undefined;this[_0x3edf('0x41')]=_0x7ab8fe[_0x3edf('0x41')]?_0x7ab8fe[_0x3edf('0x41')]:undefined;this[_0x3edf('0x42')]=_0x7ab8fe[_0x3edf('0x42')]||_0x3edf('0x43');this['dialRandomLastDigitCallerIdNumber']=_0x7ab8fe[_0x3edf('0x44')]||undefined;this[_0x3edf('0x45')]=_0x7ab8fe['dialCutDigit']||undefined;this['strategy']=strategy[_0x7ab8fe[_0x3edf('0x46')]]||_0x3edf('0x9');this[_0x3edf('0x47')]=!![];this[_0x3edf('0x48')]=_0x7ab8fe[_0x3edf('0x48')]||![];this['dialAMDInitialSilence']=_0x7ab8fe[_0x3edf('0x49')];this[_0x3edf('0x4a')]=_0x7ab8fe[_0x3edf('0x4a')];this['dialAMDAfterGreetingSilence']=_0x7ab8fe[_0x3edf('0x4b')];this[_0x3edf('0x4c')]=_0x7ab8fe[_0x3edf('0x4c')];this['dialAMDMinWordLength']=_0x7ab8fe['dialAMDMinWordLength'];this['dialAMDBetweenWordsSilence']=_0x7ab8fe['dialAMDBetweenWordsSilence'];this[_0x3edf('0x4d')]=_0x7ab8fe[_0x3edf('0x4d')];this[_0x3edf('0x4e')]=_0x7ab8fe[_0x3edf('0x4e')];this[_0x3edf('0x4f')]=_0x7ab8fe['dialAMDMaximumWordLength'];this[_0x3edf('0x50')]=0x0;this['pTalking']=0x0;this[_0x3edf('0x51')]=_0x7ab8fe[_0x3edf('0x51')];this[_0x3edf('0x52')]=0x0;this[_0x3edf('0x53')]=0x0;this[_0x3edf('0x54')]=0x0;this[_0x3edf('0x55')]=0x0;this[_0x3edf('0x56')]=0x0;this[_0x3edf('0x57')]=0x0;this[_0x3edf('0x58')]=0x0;this['outboundBlacklistCallsDay']=0x0;this[_0x3edf('0x59')]=0x0;this[_0x3edf('0x5a')]=0x0;this[_0x3edf('0x5b')]=0x0;this[_0x3edf('0x5c')]=0x0;this[_0x3edf('0x5d')]=0x0;this[_0x3edf('0x5e')]=0x0;this['startProgressive']=undefined;this['startPredictive']=undefined;this[_0x3edf('0x5f')]=undefined;this[_0x3edf('0x60')]=1.05;this[_0x3edf('0x61')]=0x0;this[_0x3edf('0x62')]=0x0;this[_0x3edf('0x63')]=0x0;this[_0x3edf('0x64')]=0x0;this['predictiveIntervalAvgHoldtime']=0x0;this[_0x3edf('0x65')]=0x0;this[_0x3edf('0x66')]=0x0;this['predictiveIntervalAvailable']=0x0;this[_0x3edf('0x67')]=_0x7ab8fe[_0x3edf('0x68')]||0x14;this[_0x3edf('0x69')]=_0x7ab8fe[_0x3edf('0x68')]||0xa;this[_0x3edf('0x6a')]=0x0;this[_0x3edf('0x6b')]=0x0;this['predictiveIntervalHitRate']=0x1;this[_0x3edf('0x6c')]=0x0;this['erlangCallToSecond']=0x0;this[_0x3edf('0x6d')]=0x0;this[_0x3edf('0x6e')]=0x0;this['dialRecallMeTimeout']=_0x7ab8fe[_0x3edf('0x6f')]||0x1e;this[_0x3edf('0x70')]=_0x7ab8fe['dialRecallInQueue']||![];this[_0x3edf('0x71')]=!!_0x7ab8fe[_0x3edf('0x71')]||![];this['dialQueueProject2']=_0x7ab8fe[_0x3edf('0x72')]||undefined;this[_0x3edf('0x73')]=_0x7ab8fe[_0x3edf('0x73')]||![];this[_0x3edf('0x74')]=_0x7ab8fe[_0x3edf('0x74')]||![];this['monitor_format']=monitorFormat[_0x7ab8fe[_0x3edf('0xc')]]?monitorFormat[_0x7ab8fe[_0x3edf('0xc')]]:undefined;this[_0x3edf('0x75')]=_0x7ab8fe[_0x3edf('0x75')]||![];this[_0x3edf('0x76')]=_0x7ab8fe[_0x3edf('0x76')]?_0x7ab8fe[_0x3edf('0x76')]:undefined;}module[_0x3edf('0x77')]=VoiceQueue;
\ No newline at end of file
index f3a2267..7ee5e31 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x118e=['serverUrl','Configurations','name','username','accessKey','remoteUri'];(function(_0x2e0afe,_0x47850d){var _0x3c4006=function(_0x3989c9){while(--_0x3989c9){_0x2e0afe['push'](_0x2e0afe['shift']());}};_0x3c4006(++_0x47850d);}(_0x118e,0x74));var _0xe118=function(_0x54cd98,_0x3029e6){_0x54cd98=_0x54cd98-0x0;var _0x4abd09=_0x118e[_0x54cd98];return _0x4abd09;};'use strict';function VtigerAccount(_0x2c02c4){this['id']=_0x2c02c4['id']||0x0;this[_0xe118('0x0')]=_0x2c02c4['name']||'';this[_0xe118('0x1')]=_0x2c02c4[_0xe118('0x1')]||'';this[_0xe118('0x2')]=_0x2c02c4['accessKey']||'';this[_0xe118('0x3')]=_0x2c02c4['remoteUri']||'';this[_0xe118('0x4')]=_0x2c02c4[_0xe118('0x4')]||'';this['Configurations']=_0x2c02c4[_0xe118('0x5')]||{};}module['exports']=VtigerAccount;
\ No newline at end of file
+var _0xe988=['exports','name','username','accessKey','remoteUri','serverUrl'];(function(_0x14363e,_0x4f0e0d){var _0x17c56d=function(_0x1c7bac){while(--_0x1c7bac){_0x14363e['push'](_0x14363e['shift']());}};_0x17c56d(++_0x4f0e0d);}(_0xe988,0x17b));var _0x8e98=function(_0x4243a3,_0x447337){_0x4243a3=_0x4243a3-0x0;var _0x1b2a33=_0xe988[_0x4243a3];return _0x1b2a33;};'use strict';function VtigerAccount(_0x5f1ce7){this['id']=_0x5f1ce7['id']||0x0;this[_0x8e98('0x0')]=_0x5f1ce7[_0x8e98('0x0')]||'';this[_0x8e98('0x1')]=_0x5f1ce7['username']||'';this[_0x8e98('0x2')]=_0x5f1ce7[_0x8e98('0x2')]||'';this[_0x8e98('0x3')]=_0x5f1ce7[_0x8e98('0x3')]||'';this[_0x8e98('0x4')]=_0x5f1ce7[_0x8e98('0x4')]||'';this['Configurations']=_0x5f1ce7['Configurations']||{};}module[_0x8e98('0x5')]=VtigerAccount;
\ No newline at end of file
index c007aaf..05d6505 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc693=['Configurations','exports','name','username','password','token','authType','type','integrationTab','serverUrl'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xc693,0x8e));var _0x3c69=function(_0x23c418,_0x33da88){_0x23c418=_0x23c418-0x0;var _0x12b7bb=_0xc693[_0x23c418];return _0x12b7bb;};'use strict';function ZendeskAccount(_0x43adc9){this['id']=_0x43adc9['id']||0x0;this[_0x3c69('0x0')]=_0x43adc9[_0x3c69('0x0')]||'';this['username']=_0x43adc9[_0x3c69('0x1')]||'';this[_0x3c69('0x2')]=_0x43adc9[_0x3c69('0x2')]||'';this[_0x3c69('0x3')]=_0x43adc9[_0x3c69('0x3')]||'';this['remoteUri']=_0x43adc9['remoteUri']||'';this[_0x3c69('0x4')]=_0x43adc9[_0x3c69('0x4')]||'';this[_0x3c69('0x5')]=_0x43adc9[_0x3c69('0x5')]||_0x3c69('0x6');this[_0x3c69('0x7')]=_0x43adc9[_0x3c69('0x7')]||'';this['Configurations']=_0x43adc9[_0x3c69('0x8')]||{};}module[_0x3c69('0x9')]=ZendeskAccount;
\ No newline at end of file
+var _0x2caf=['password','token','remoteUri','authType','type','serverUrl','Configurations','exports','name','username'];(function(_0x432fca,_0xb0b1b5){var _0x3adba4=function(_0x5e3ae4){while(--_0x5e3ae4){_0x432fca['push'](_0x432fca['shift']());}};_0x3adba4(++_0xb0b1b5);}(_0x2caf,0x198));var _0xf2ca=function(_0x4ccaea,_0x4fa66f){_0x4ccaea=_0x4ccaea-0x0;var _0x56fb81=_0x2caf[_0x4ccaea];return _0x56fb81;};'use strict';function ZendeskAccount(_0x7061f0){this['id']=_0x7061f0['id']||0x0;this[_0xf2ca('0x0')]=_0x7061f0[_0xf2ca('0x0')]||'';this[_0xf2ca('0x1')]=_0x7061f0['username']||'';this[_0xf2ca('0x2')]=_0x7061f0[_0xf2ca('0x2')]||'';this[_0xf2ca('0x3')]=_0x7061f0[_0xf2ca('0x3')]||'';this[_0xf2ca('0x4')]=_0x7061f0['remoteUri']||'';this[_0xf2ca('0x5')]=_0x7061f0[_0xf2ca('0x5')]||'';this[_0xf2ca('0x6')]=_0x7061f0[_0xf2ca('0x6')]||'integrationTab';this['serverUrl']=_0x7061f0[_0xf2ca('0x7')]||'';this[_0xf2ca('0x8')]=_0x7061f0[_0xf2ca('0x8')]||{};}module[_0xf2ca('0x9')]=ZendeskAccount;
\ No newline at end of file
index 3f74105..b8becea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcadc=['host','zone','clientId','clientSecret','serverUrl','code','refreshToken','exports','name','description'];(function(_0x1efd60,_0x2115c4){var _0x5a45dd=function(_0x1cc658){while(--_0x1cc658){_0x1efd60['push'](_0x1efd60['shift']());}};_0x5a45dd(++_0x2115c4);}(_0xcadc,0x1f2));var _0xccad=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0xcadc[_0x4565bf];return _0x5610ba;};'use strict';function ZohoAccount(_0xdf3d50){this['id']=_0xdf3d50['id']||0x0;this[_0xccad('0x0')]=_0xdf3d50[_0xccad('0x0')]||'';this[_0xccad('0x1')]=_0xdf3d50[_0xccad('0x1')]||'';this[_0xccad('0x2')]=_0xdf3d50[_0xccad('0x2')]||'';this[_0xccad('0x3')]=_0xdf3d50[_0xccad('0x3')]||'';this['clientId']=_0xdf3d50[_0xccad('0x4')]||'';this[_0xccad('0x5')]=_0xdf3d50[_0xccad('0x5')]||'';this['serverUrl']=_0xdf3d50[_0xccad('0x6')]||'';this[_0xccad('0x7')]=_0xdf3d50[_0xccad('0x7')]||'';this['refreshToken']=_0xdf3d50[_0xccad('0x8')]||'';this['Configurations']=_0xdf3d50['Configurations']||{};}module[_0xccad('0x9')]=ZohoAccount;
\ No newline at end of file
+var _0xe4a4=['code','refreshToken','Configurations','name','description','host','zone','clientId','clientSecret'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0xe4a4,0xe4));var _0x4e4a=function(_0x236d24,_0x29e80a){_0x236d24=_0x236d24-0x0;var _0x1574cf=_0xe4a4[_0x236d24];return _0x1574cf;};'use strict';function ZohoAccount(_0x3e8f9d){this['id']=_0x3e8f9d['id']||0x0;this[_0x4e4a('0x0')]=_0x3e8f9d['name']||'';this[_0x4e4a('0x1')]=_0x3e8f9d[_0x4e4a('0x1')]||'';this['host']=_0x3e8f9d[_0x4e4a('0x2')]||'';this[_0x4e4a('0x3')]=_0x3e8f9d[_0x4e4a('0x3')]||'';this[_0x4e4a('0x4')]=_0x3e8f9d[_0x4e4a('0x4')]||'';this[_0x4e4a('0x5')]=_0x3e8f9d[_0x4e4a('0x5')]||'';this['serverUrl']=_0x3e8f9d['serverUrl']||'';this[_0x4e4a('0x6')]=_0x3e8f9d[_0x4e4a('0x6')]||'';this[_0x4e4a('0x7')]=_0x3e8f9d[_0x4e4a('0x7')]||'';this[_0x4e4a('0x8')]=_0x3e8f9d[_0x4e4a('0x8')]||{};}module['exports']=ZohoAccount;
\ No newline at end of file
index df4f8f4..e370492 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e8f=['countcongestionretry','countnoanswerretry','countglobal','countdropretry','countmachineretry','countagentrejectretry','countnosuchnumberretry','countabandonedretry','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','originatecalleridnum','prototype','getCaller','\x22%s\x22\x20<%s>','number','util','lodash','isNil','uniqueid','queue','type','dialAnswer','membername','Agent','name','channelAgent','format','SIP/%s','calleridname','Contact','phone','lastName','active','calleridnum','scheduledat','countbusyretry'];(function(_0x41cfd4,_0x1ed2cc){var _0x190f48=function(_0x4b5b1a){while(--_0x4b5b1a){_0x41cfd4['push'](_0x41cfd4['shift']());}};_0x190f48(++_0x1ed2cc);}(_0x7e8f,0x69));var _0xf7e8=function(_0x33ff15,_0x2cbb0e){_0x33ff15=_0x33ff15-0x0;var _0x2866ff=_0x7e8f[_0x33ff15];return _0x2866ff;};'use strict';var util=require(_0xf7e8('0x0'));var _=require(_0xf7e8('0x1'));var moment=require('moment');function checkNameSurname(_0x210788,_0x391285,_0x5159e3){var _0x56ad1a='';if(!_['isNil'](_0x391285)&&'string'===typeof _0x391285){_0x56ad1a+=_0x391285;}if(!_[_0xf7e8('0x2')](_0x5159e3)&&'string'===typeof _0x5159e3){_0x56ad1a+='\x20'+_0x5159e3;}if(_0x56ad1a!==''){return _0x56ad1a;}return _0x210788;}function Action(_0x1704e2,_0x2d0505,_0x50bb2e,_0x599b4b,_0x444790){this[_0xf7e8('0x3')]=_0x50bb2e||undefined;this['idContact']=_0x1704e2['id'];this[_0xf7e8('0x4')]=_0x2d0505['name'];this[_0xf7e8('0x5')]=_0x2d0505[_0xf7e8('0x5')];this['campaigntype']=_0xf7e8('0x4');this[_0xf7e8('0x6')]=![];this[_0xf7e8('0x7')]=_['isNil'](_0x1704e2[_0xf7e8('0x8')])?undefined:_0x1704e2[_0xf7e8('0x8')][_0xf7e8('0x9')];this[_0xf7e8('0xa')]=this[_0xf7e8('0x7')]?util[_0xf7e8('0xb')](_0xf7e8('0xc'),this[_0xf7e8('0x7')]):_0x599b4b||undefined;this[_0xf7e8('0xd')]=checkNameSurname(_0x1704e2[_0xf7e8('0xe')][_0xf7e8('0xf')],_0x1704e2['Contact']['firstName'],_0x1704e2[_0xf7e8('0xe')][_0xf7e8('0x10')]);this[_0xf7e8('0x11')]=_0x1704e2[_0xf7e8('0x11')]||![];this[_0xf7e8('0x12')]=_0x1704e2['Contact'][_0xf7e8('0xf')];this[_0xf7e8('0x13')]=_0x1704e2[_0xf7e8('0x13')];this[_0xf7e8('0x14')]=_0x1704e2['countbusyretry']||0x0;this[_0xf7e8('0x15')]=_0x1704e2[_0xf7e8('0x15')]||0x0;this[_0xf7e8('0x16')]=_0x1704e2[_0xf7e8('0x16')]||0x0;this[_0xf7e8('0x17')]=(_0x1704e2[_0xf7e8('0x14')]||0x0)+(_0x1704e2[_0xf7e8('0x15')]||0x0)+(_0x1704e2[_0xf7e8('0x16')]||0x0)+(_0x1704e2['countnosuchnumberretry']||0x0)+(_0x1704e2[_0xf7e8('0x18')]||0x0)+(_0x1704e2['countabandonedretry']||0x0)+(_0x1704e2[_0xf7e8('0x19')]||0x0)+(_0x1704e2[_0xf7e8('0x1a')]||0x0);this[_0xf7e8('0x1b')]=_0x1704e2[_0xf7e8('0x1b')]||0x0;this[_0xf7e8('0x18')]=_0x1704e2['countdropretry']||0x0;this[_0xf7e8('0x1c')]=_0x1704e2['countabandonedretry']||0x0;this[_0xf7e8('0x19')]=_0x1704e2[_0xf7e8('0x19')]||0x0;this[_0xf7e8('0x1a')]=_0x1704e2[_0xf7e8('0x1a')]||0x0;this['callback']=_0x1704e2[_0xf7e8('0x1d')];this[_0xf7e8('0x1e')]=_0x1704e2['callbackuniqueid'];this[_0xf7e8('0x1f')]=_0x1704e2[_0xf7e8('0x1f')];this['recallme']=_0x1704e2[_0xf7e8('0x20')];this[_0xf7e8('0x21')]=_0x1704e2[_0xf7e8('0x21')];this[_0xf7e8('0x22')]=_0x1704e2['ListId'];this['UserId']=_[_0xf7e8('0x2')](_0x1704e2[_0xf7e8('0x8')])?_0x1704e2[_0xf7e8('0x23')]:_0x1704e2['Agent']['id'];this[_0xf7e8('0x24')]=_0x1704e2[_0xf7e8('0x24')];this[_0xf7e8('0x25')]='';this['originatecalleridname']='';}Action[_0xf7e8('0x26')][_0xf7e8('0x27')]=function(){return util[_0xf7e8('0xb')](_0xf7e8('0x28'),this['calleridname'],this[_0xf7e8('0x29')]);};module['exports']=Action;
\ No newline at end of file
+var _0xe70e=['originatecalleridnum','prototype','getCaller','number','exports','util','moment','isNil','string','uniqueid','idContact','queue','name','type','dialAnswer','membername','Agent','channelAgent','format','SIP/%s','calleridname','Contact','lastName','active','phone','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countagentrejectretry','countmachineretry','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId'];(function(_0x23ac87,_0x3c6d1c){var _0x5793bb=function(_0x489100){while(--_0x489100){_0x23ac87['push'](_0x23ac87['shift']());}};_0x5793bb(++_0x3c6d1c);}(_0xe70e,0x86));var _0xee70=function(_0x31161b,_0x25ace0){_0x31161b=_0x31161b-0x0;var _0x944aa4=_0xe70e[_0x31161b];return _0x944aa4;};'use strict';var util=require(_0xee70('0x0'));var _=require('lodash');var moment=require(_0xee70('0x1'));function checkNameSurname(_0x5bb9f8,_0x2a2364,_0x8d43be){var _0x26b75a='';if(!_[_0xee70('0x2')](_0x2a2364)&&_0xee70('0x3')===typeof _0x2a2364){_0x26b75a+=_0x2a2364;}if(!_['isNil'](_0x8d43be)&&_0xee70('0x3')===typeof _0x8d43be){_0x26b75a+='\x20'+_0x8d43be;}if(_0x26b75a!==''){return _0x26b75a;}return _0x5bb9f8;}function Action(_0x39cd4d,_0x3f43f0,_0x317523,_0x1d98b3,_0x4f937c){this[_0xee70('0x4')]=_0x317523||undefined;this[_0xee70('0x5')]=_0x39cd4d['id'];this[_0xee70('0x6')]=_0x3f43f0[_0xee70('0x7')];this[_0xee70('0x8')]=_0x3f43f0[_0xee70('0x8')];this['campaigntype']=_0xee70('0x6');this[_0xee70('0x9')]=![];this[_0xee70('0xa')]=_[_0xee70('0x2')](_0x39cd4d[_0xee70('0xb')])?undefined:_0x39cd4d['Agent']['name'];this[_0xee70('0xc')]=this['membername']?util[_0xee70('0xd')](_0xee70('0xe'),this[_0xee70('0xa')]):_0x1d98b3||undefined;this[_0xee70('0xf')]=checkNameSurname(_0x39cd4d[_0xee70('0x10')]['phone'],_0x39cd4d[_0xee70('0x10')]['firstName'],_0x39cd4d['Contact'][_0xee70('0x11')]);this[_0xee70('0x12')]=_0x39cd4d['active']||![];this['calleridnum']=_0x39cd4d[_0xee70('0x10')][_0xee70('0x13')];this[_0xee70('0x14')]=_0x39cd4d['scheduledat'];this[_0xee70('0x15')]=_0x39cd4d[_0xee70('0x15')]||0x0;this[_0xee70('0x16')]=_0x39cd4d[_0xee70('0x16')]||0x0;this[_0xee70('0x17')]=_0x39cd4d['countnoanswerretry']||0x0;this[_0xee70('0x18')]=(_0x39cd4d[_0xee70('0x15')]||0x0)+(_0x39cd4d[_0xee70('0x16')]||0x0)+(_0x39cd4d[_0xee70('0x17')]||0x0)+(_0x39cd4d[_0xee70('0x19')]||0x0)+(_0x39cd4d[_0xee70('0x1a')]||0x0)+(_0x39cd4d[_0xee70('0x1b')]||0x0)+(_0x39cd4d['countmachineretry']||0x0)+(_0x39cd4d[_0xee70('0x1c')]||0x0);this[_0xee70('0x19')]=_0x39cd4d['countnosuchnumberretry']||0x0;this['countdropretry']=_0x39cd4d['countdropretry']||0x0;this[_0xee70('0x1b')]=_0x39cd4d['countabandonedretry']||0x0;this[_0xee70('0x1d')]=_0x39cd4d[_0xee70('0x1d')]||0x0;this['countagentrejectretry']=_0x39cd4d[_0xee70('0x1c')]||0x0;this['callback']=_0x39cd4d[_0xee70('0x1e')];this[_0xee70('0x1f')]=_0x39cd4d[_0xee70('0x1f')];this[_0xee70('0x20')]=_0x39cd4d[_0xee70('0x20')];this[_0xee70('0x21')]=_0x39cd4d['recallme'];this[_0xee70('0x22')]=_0x39cd4d[_0xee70('0x22')];this[_0xee70('0x23')]=_0x39cd4d[_0xee70('0x23')];this['UserId']=_[_0xee70('0x2')](_0x39cd4d[_0xee70('0xb')])?_0x39cd4d[_0xee70('0x24')]:_0x39cd4d[_0xee70('0xb')]['id'];this['VoiceQueueId']=_0x39cd4d[_0xee70('0x25')];this[_0xee70('0x26')]='';this['originatecalleridname']='';}Action[_0xee70('0x27')][_0xee70('0x28')]=function(){return util[_0xee70('0xd')]('\x22%s\x22\x20<%s>',this[_0xee70('0xf')],this[_0xee70('0x29')]);};module[_0xee70('0x2a')]=Action;
\ No newline at end of file
index 650cffc..14891bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc80b=['buildObj','complete','outboundAnswerCallsDay','total','[16]','[callProgressDetectingCustomer][logAnswer]','[callProgressDetectingCustomer][logAnswerGlobal]','talktime','[syncHangup][talking][decrement]','BUSY','outboundBusyCallsDay','countbusyretry','Busy','custom:agentbusy','busy','[callProgressDetectingCustomer][logBusy]','[callProgressDetectingCustomer][logBusyGlobal]','dialBusyRetryFrequency','NOANSWER','countnoanswerretry','NoAnswer','custom:agentnoanswer','noanswer','[callProgressDetectingCustomer][logNoAnswer]','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','CONGESTION','countcongestionretry','Congestion','custom:agentcongestion','[callProgressDetectingCustomer][logCongestion]','[callProgressDetectingCustomer][logCongestionGlobal]','dialCongestionMaxRetry','CANCEL','AgentReject','custom:agentreject','agentreject','[callProgressDetectingCustomer][logAgentReject]','countagentrejectretry','dialAgentRejectRetryFrequency','ABANDONED','outboundAbandonedCallsDay','[callProgressDetectingCustomer][logAbandoned]','countabandonedetry','dialAbandonedMaxRety','countabandonedretry','dialAbandonedRetryFrequency','countmachineretry','cause-txt','[callProgressDetectingCustomer][hangupInAMD]','custom:amd','amd','[callProgressDetectingCustomer][machine]','[Dialer][decrementTalkink][no\x20Hangup][Preview]','dialstatus','[callProgressDetectingCustomer][logUnknown]','[callProgressDetectingCustomer][logUnknownGlobal]','[callProgressDetectingCustomer]','[originated][decrement][callProgressDetectingCustomer]','originated:\x20','callProgressDetectingAgent','isUndefined','object','reason','logAgent','createAgentHistory','[callProgressDetectingAgent][logNoSuch]','[callProgressDetectingAgent][logNoAnswer]','[callProgressDetectingAgent][logCongestion]','[callProgressDetectingAgent]','checkInBlack','Contact','phone','VoiceQueueId','lookAgent','isEmpty','\x20IdHopper:\x20','idContact','custom:agentcalled','called','logBlacklist','SIP/%s','reachable','execRun','unlock','getContactPreview','recallme','validateContact','isValid','checkIsBlackList','Contact.phone','Call\x20unsuccessful','[Preview][getContactPreview]','[Preview][validateContact][Empty\x20Contact]','[Preview][validateContact][Empty\x20Campaign]','[Preview][validateContact][Trunk\x20not\x20work]','\x20Trunk\x20is\x20not\x20active','\x20Trunk\x20Backup\x20is\x20not\x20active','Trunk\x20not\x20work','[Preview][validateContact][Campaign\x20Active]','\x20Not\x20Active','campaign\x20Name:\x20','Is\x20Valid','execCall','SIP/%s/%s%s','substring','trim','dialCutDigit','getCallerId','callerid','dialRandomLastDigitCallerIdNumber','getCallerIdRandom','originatecalleridname','extractCalleridName','addVariables','toLowerVariables','variablesAction','channelAgent','destconnectedlinenum','user:%s','user:agentconnect','accountcode','calleridnum','[originated][increment]','OriginateError','actionid','isFailure','response','unlockContact','rejected','Answer','[callProgressDetectingAgent][logAnswer]','syncHangup','[syncHangup][talking]','cause','callProgressDetectingCustomer','channelstate','transfer','[syncHangup][talking][cause]','destlinkedid','destuniqueid','addVariable','variables','filterKey','keys','variable','value','error','[syncVarSet][Preview]','transfertargetlinkedid','transfererlinkedid','util','lodash','bluebird','uuid','md5','ioredis','../../../config/environment','../../../config/logger','actionPreview','./rpcDb','./util/util','redis','defaults','socket.io-emitter','prototype','enqueue','tail','finally','sequence','campaignsPreview','voiceQueues','trunks','actions','agents','clockClearZombieChannels','originateresponse','syncOriginateResponse','bind','hangup','hanguprequest','syncHangupRequest','syncDialEnd','newexten','syncNewExten','syncVarSet','attendedtransfer','syncAttendedTransfer','syncBlindTransfer','loopCampaigns','strategy','answered','loggedIn','pTalking','sumBillable','sumDuration','type','abandoned','waiting','loggedInDb','dialActive','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','outboundBlacklistCallsDay','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','message','originated','erlangCalls','erlangCallToSecond','erlangBusyFactor','startPredictive','startProgressive','Trunk','name','active','Interval','stringify','format','voice:queue:%s','info','[DEBUG]\x20Emit\x20voice_queue_channel:remove\x20event','voice_queue_channel:remove','emit','voice_queue_presence:remove','sendMessageOneNotActive','available','paused','NOT_ACTIVE','logger','[CampaignPreview]\x20Campaign\x20Queue:\x20','\x20is\x20not\x20active','\x20is\x20disactive','syncCampaigns','hasOwnProperty','dialMethod','booked','outbound','clearZombieChannels','preview','setMessage','isNil','[clearZombieChannels][talking]','Queue','queue','pTalking:\x20','dialAnswer','pick','Action','status','channel','catch','No\x20such\x20channel','updateOriginated','[clearZombieChannel]','decrementTalkink','loggerError','[Dialer][checkChannel][pTalking][Preview]','[Dialer][checkChannel][Preview]','[action]','size','recallMe','then','getDiff','dialRecallMeTimeout','Agent','voicePause','run','logger2','[RecallMe]','disableContact','starttime','YYYY-MM-DD\x20HH:mm:ss','logCustomer','RecallInQueue','rescheduleContactInQueue','createBody','createCustomerHistory','[HistoryDialRecallInQueue][historyCatch]','RecallFailedTimeout','[HistoryRecallClose]','createCustomerFinal','[getContactRecallMe]','IsNotLoggedIn','AGENTS_NOT_LOGGED','isActive','isTrunkReachable','TrunkBackup','TRUNK_IS_NOT_REACHABLE','ACTIVE','countglobal','totalGlobal','NoSuchNumber','custom:agentnosuchnumber','nosuchnumber','[callProgressDetectingCustomer][logNoSuch]','dialGlobalMaxRetry','cloneAction','Global','[callProgressDetectingCustomer][logNoSuchGlobal]','countnosuchnumberretry','dialNoSuchNumberMaxRetry','rescheduleContact','scheduledAt','unlockAgent','activeContact','linkedid','ANSWER','responsetime','[syncHangup][talking][increment]','uniqueid','\x20Queue','acw','custom:agentConnectPreview','buildAcw','custom:agentcomplete'];(function(_0x4aba66,_0x1d803d){var _0x3d7ebe=function(_0x37e689){while(--_0x37e689){_0x4aba66['push'](_0x4aba66['shift']());}};_0x3d7ebe(++_0x1d803d);}(_0xc80b,0x97));var _0xbc80=function(_0x33719e,_0x3c7537){_0x33719e=_0x33719e-0x0;var _0x5472b1=_0xc80b[_0x33719e];return _0x5472b1;};'use strict';var util=require(_0xbc80('0x0'));var _=require(_0xbc80('0x1'));var BPromise=require(_0xbc80('0x2'));var uuid=require(_0xbc80('0x3'));var moment=require('moment');var md5=require(_0xbc80('0x4'));var Redis=require(_0xbc80('0x5'));var config=require(_0xbc80('0x6'));var logger=require(_0xbc80('0x7'))('preview');var loggerAction=require(_0xbc80('0x7'))(_0xbc80('0x8'));var ami=require('../ami');var rpcDb=require(_0xbc80('0x9'));var Action=require('./action');var ut=require(_0xbc80('0xa'));config[_0xbc80('0xb')]=_[_0xbc80('0xc')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0xbc80('0xd'))(new Redis(config[_0xbc80('0xb')]));var Sequence=function(){};Sequence[_0xbc80('0xe')][_0xbc80('0xf')]=function(_0x2c9da9){this['tail']=this[_0xbc80('0x10')]?this['tail'][_0xbc80('0x11')](_0x2c9da9):_0x2c9da9();};function Preview(_0x58a66d){this[_0xbc80('0x12')]=new Sequence();this[_0xbc80('0x13')]=_0x58a66d[_0xbc80('0x14')];this[_0xbc80('0x15')]=_0x58a66d[_0xbc80('0x15')];this[_0xbc80('0x16')]={};this[_0xbc80('0x17')]=_0x58a66d[_0xbc80('0x17')];this[_0xbc80('0x18')]=0x0;ami['on'](_0xbc80('0x19'),this[_0xbc80('0x1a')][_0xbc80('0x1b')](this));ami['on'](_0xbc80('0x1c'),this['syncHangup'][_0xbc80('0x1b')](this));ami['on'](_0xbc80('0x1d'),this[_0xbc80('0x1e')][_0xbc80('0x1b')](this));ami['on']('dialend',this[_0xbc80('0x1f')][_0xbc80('0x1b')](this));ami['on'](_0xbc80('0x20'),this[_0xbc80('0x21')][_0xbc80('0x1b')](this));ami['on']('varset',this[_0xbc80('0x22')][_0xbc80('0x1b')](this));ami['on'](_0xbc80('0x23'),this[_0xbc80('0x24')]['bind'](this));ami['on']('blindtransfer',this[_0xbc80('0x25')][_0xbc80('0x1b')](this));this[_0xbc80('0x26')](this[_0xbc80('0x13')]);}function emit(_0x411db0,_0x44b252,_0x462a7c){io['to'](_0x411db0)['emit'](_0x44b252,_0x462a7c);}function emitCampaignPreview(_0x2f8a81){if(_0x2f8a81['type']==='outbound'){var _0x589135={'id':_0x2f8a81['id'],'name':_0x2f8a81['name'],'strategy':_0x2f8a81[_0xbc80('0x27')],'answered':_0x2f8a81[_0xbc80('0x28')],'available':_0x2f8a81['available'],'loggedIn':_0x2f8a81[_0xbc80('0x29')],'pTalking':_0x2f8a81[_0xbc80('0x2a')],'sumBillable':_0x2f8a81[_0xbc80('0x2b')],'sumDuration':_0x2f8a81[_0xbc80('0x2c')],'sumHoldTime':_0x2f8a81['sumHoldTime']||0x0,'talking':_0x2f8a81['talking'],'total':_0x2f8a81['total'],'type':_0x2f8a81[_0xbc80('0x2d')],'unmanaged':_0x2f8a81['unmanaged'],'abandoned':_0x2f8a81[_0xbc80('0x2e')],'waiting':_0x2f8a81[_0xbc80('0x2f')],'loggedInDb':_0x2f8a81[_0xbc80('0x30')],'dialActive':_0x2f8a81[_0xbc80('0x31')],'dialMethod':_0x2f8a81['dialMethod'],'dialOriginateCallerIdName':_0x2f8a81[_0xbc80('0x32')],'dialOriginateCallerIdNumber':_0x2f8a81[_0xbc80('0x33')],'dialOriginateTimeout':_0x2f8a81[_0xbc80('0x34')],'dialPrefix':_0x2f8a81[_0xbc80('0x35')],'outboundAnswerAgiCallsDay':_0x2f8a81['outboundAnswerAgiCallsDay'],'outboundAnswerCallsDay':_0x2f8a81['outboundAnswerCallsDay'],'outboundBlacklistCallsDay':_0x2f8a81[_0xbc80('0x36')],'outboundBusyCallsDay':_0x2f8a81['outboundBusyCallsDay'],'outboundCongestionCallsDay':_0x2f8a81['outboundCongestionCallsDay'],'outboundDropCallsDayACS':_0x2f8a81['outboundDropCallsDayACS'],'outboundDropCallsDayCallersExit':_0x2f8a81['outboundDropCallsDayCallersExit'],'outboundDropCallsDayTimeout':_0x2f8a81[_0xbc80('0x37')],'outboundNoAnswerCallsDay':_0x2f8a81[_0xbc80('0x38')],'outboundNoSuchCallsDay':_0x2f8a81[_0xbc80('0x39')],'outboundOriginateFailureCallsDay':_0x2f8a81[_0xbc80('0x3a')],'outboundReCallsDay':_0x2f8a81[_0xbc80('0x3b')],'outboundRejectCallsDay':_0x2f8a81[_0xbc80('0x3c')],'outboundUnknownCallsDay':_0x2f8a81[_0xbc80('0x3d')],'outboundAbandonedCallsDay':_0x2f8a81['outboundAbandonedCallsDay'],'predictiveIntervalAnsweredCalls':_0x2f8a81[_0xbc80('0x3e')],'predictiveIntervalAvgHoldtime':_0x2f8a81[_0xbc80('0x3f')],'predictiveIntervalAvgTalktime':_0x2f8a81[_0xbc80('0x40')],'predictiveIntervalDroppedCallsCallersExit':_0x2f8a81[_0xbc80('0x41')],'predictiveIntervalDroppedCallsTimeout':_0x2f8a81[_0xbc80('0x42')],'predictiveIntervalErlangCalls':_0x2f8a81[_0xbc80('0x43')],'predictiveIntervalErlangCallsDroppedCalls':_0x2f8a81[_0xbc80('0x44')],'predictiveIntervalHitRate':_0x2f8a81['predictiveIntervalHitRate'],'predictiveIntervalMultiplicativeFactor':_0x2f8a81['predictiveIntervalMultiplicativeFactor'],'predictiveIntervalPauses':_0x2f8a81[_0xbc80('0x45')],'predictiveIntervalAvailable':_0x2f8a81[_0xbc80('0x46')],'predictiveIntervalTotalCalls':_0x2f8a81[_0xbc80('0x47')],'message':_0x2f8a81[_0xbc80('0x48')],'originated':_0x2f8a81[_0xbc80('0x49')],'erlangCalls':_0x2f8a81[_0xbc80('0x4a')],'erlangCallToSecond':_0x2f8a81[_0xbc80('0x4b')],'erlangAbandonmentRate':_0x2f8a81['erlangAbandonmentRate'],'erlangBusyFactor':_0x2f8a81[_0xbc80('0x4c')],'startPredictive':_0x2f8a81[_0xbc80('0x4d')],'startProgressive':_0x2f8a81[_0xbc80('0x4e')]};if(_0x2f8a81[_0xbc80('0x4f')]){_0x589135[_0xbc80('0x4f')]={'id':_0x2f8a81[_0xbc80('0x4f')]['id'],'name':_0x2f8a81[_0xbc80('0x4f')][_0xbc80('0x50')],'active':_0x2f8a81[_0xbc80('0x4f')][_0xbc80('0x51')],'callerid':_0x2f8a81['Trunk']['callerid']};}if(_0x2f8a81[_0xbc80('0x52')]){_0x589135[_0xbc80('0x52')]={'id':_0x2f8a81[_0xbc80('0x52')]['id'],'name':_0x2f8a81[_0xbc80('0x52')][_0xbc80('0x50')]};}var _0x43d599=md5(JSON[_0xbc80('0x53')](_0x589135));if(_0x2f8a81[_0xbc80('0x4')]!==_0x43d599){_0x2f8a81['md5']=_0x43d599;emit(util[_0xbc80('0x54')](_0xbc80('0x55'),_0x589135['name']),'voice_queue:save',_0x589135);}}}function emitVoiceQueueChannelRemove(_0xf02b91){logger[_0xbc80('0x56')](_0xbc80('0x57'),JSON[_0xbc80('0x53')](_0xf02b91));emit(util[_0xbc80('0x54')](_0xbc80('0x55'),_0xf02b91[_0xbc80('0x50')]),_0xbc80('0x58'),_0xf02b91);io[_0xbc80('0x59')](_0xbc80('0x5a'),_0xf02b91);}function notSendMessagesQueue(_0x5535f9){if(_0x5535f9['sendMessageOneNotActive']){if(_0x5535f9[_0xbc80('0x49')]===0x0&&_0x5535f9[_0xbc80('0x2a')]===0x0){_0x5535f9[_0xbc80('0x5b')]=![];_0x5535f9[_0xbc80('0x5c')]=0x0;_0x5535f9[_0xbc80('0x5d')]=0x0;_0x5535f9[_0xbc80('0x48')]=_0xbc80('0x5e');ut[_0xbc80('0x5f')](_0xbc80('0x60'),_0x5535f9[_0xbc80('0x50')]+_0xbc80('0x61'));}else{_0x5535f9[_0xbc80('0x48')]='IS_DISACTIVED';ut[_0xbc80('0x5f')](_0xbc80('0x60'),_0x5535f9[_0xbc80('0x50')]+_0xbc80('0x62'));}emitCampaignPreview(_0x5535f9);}}Preview['prototype'][_0xbc80('0x26')]=function(){var _0x30eeec=this;setInterval(function(){_0x30eeec[_0xbc80('0x63')]();},0x7cf);};Preview[_0xbc80('0xe')]['syncCampaigns']=function(){var _0x2a8fed=this[_0xbc80('0x13')];this[_0xbc80('0x18')]+=0x1;for(var _0x49b6c3 in _0x2a8fed){if(_0x2a8fed[_0xbc80('0x64')](_0x49b6c3)&&(_0x2a8fed[_0x49b6c3][_0xbc80('0x65')]==='preview'||_0x2a8fed[_0x49b6c3][_0xbc80('0x65')]===_0xbc80('0x66'))&&_0x2a8fed[_0x49b6c3]['type']===_0xbc80('0x67')){if(this[_0xbc80('0x18')]>0x7){this[_0xbc80('0x18')]=0x0;this[_0xbc80('0x68')]();}}if(_0x2a8fed[_0xbc80('0x64')](_0x49b6c3)&&_0x2a8fed[_0x49b6c3][_0xbc80('0x65')]===_0xbc80('0x69')&&_0x2a8fed[_0x49b6c3][_0xbc80('0x2d')]===_0xbc80('0x67')){if(_0x2a8fed[_0x49b6c3]['dialActive']){this[_0xbc80('0x6a')](_0x2a8fed[_0x49b6c3]);this['recallMe'](_0x2a8fed[_0x49b6c3]);}else{notSendMessagesQueue(_0x2a8fed[_0x49b6c3]);}}}};Preview['prototype']['clearZombieChannel']=function(_0x86a73){var _0x46876c=this;this[_0xbc80('0x12')][_0xbc80('0xf')](function(){if(!_[_0xbc80('0x6b')](_0x46876c[_0xbc80('0x16')][_0x86a73])){loggerAction[_0xbc80('0x56')](_0xbc80('0x6c'),_0x86a73,_0xbc80('0x6d'),_0x46876c[_0xbc80('0x16')][_0x86a73][_0xbc80('0x6e')],'originated:\x20',JSON[_0xbc80('0x53')](_0x46876c[_0xbc80('0x13')][_0x46876c[_0xbc80('0x16')][_0x86a73][_0xbc80('0x6e')]]['originated']),_0xbc80('0x6f'),JSON[_0xbc80('0x53')](_0x46876c['campaignsPreview'][_0x46876c[_0xbc80('0x16')][_0x86a73]['queue']][_0xbc80('0x2a')]),JSON[_0xbc80('0x53')](_0x46876c['actions'][_0x86a73][_0xbc80('0x70')]),JSON[_0xbc80('0x53')](_[_0xbc80('0x71')](_0x46876c[_0xbc80('0x16')][_0x86a73],['contactId','UserId','VoiceQueueId','ListId'])));return ami[_0xbc80('0x72')]({'action':_0xbc80('0x73'),'channel':_0x46876c['actions'][_0x86a73][_0xbc80('0x74')]})[_0xbc80('0x75')](function(_0x18b3d6){if(_0x18b3d6['message']===_0xbc80('0x76')){setTimeout(function(){if(_0x46876c[_0xbc80('0x16')][_0x86a73]){ut[_0xbc80('0x77')](_0x46876c[_0xbc80('0x13')][_0x46876c[_0xbc80('0x16')][_0x86a73][_0xbc80('0x6e')]],_0xbc80('0x78'));if(_0x46876c[_0xbc80('0x16')][_0x86a73]['dialAnswer']===!![]){ut[_0xbc80('0x79')](_0x46876c[_0xbc80('0x13')][_0x46876c[_0xbc80('0x16')][_0x86a73][_0xbc80('0x6e')]],'[clearZombieChannel]');ut[_0xbc80('0x7a')](_0xbc80('0x7b')+_0x86a73,_0x46876c[_0xbc80('0x16')][_0x86a73][_0xbc80('0x6e')]);}ut['loggerError'](_0xbc80('0x7c')+_0x86a73,_0x46876c[_0xbc80('0x16')][_0x86a73]['queue']);delete _0x46876c[_0xbc80('0x16')][_0x86a73];}},0x2328);}});}});};Preview['prototype'][_0xbc80('0x68')]=function(){var _0x2a5862=this;loggerAction[_0xbc80('0x56')](_0xbc80('0x7d'),_[_0xbc80('0x7e')](this[_0xbc80('0x16')]));for(var _0x16dac5 in this[_0xbc80('0x16')]){if(_0x2a5862['actions']['hasOwnProperty'](_0x16dac5)){_0x2a5862['clearZombieChannel'](_0x16dac5);}}};Preview[_0xbc80('0xe')][_0xbc80('0x7f')]=function(_0x27863c){var _0x5197c2=this;rpcDb['getContactRecallMe'](_0x27863c['id'],ut['agentReadyId'](this[_0xbc80('0x17')]))[_0xbc80('0x80')](function(_0x5c1a21){if(!_[_0xbc80('0x6b')](_0x5c1a21)){for(var _0x3f6922=0x0;_0x3f6922<_0x5c1a21['length'];_0x3f6922+=0x1){if(ut[_0xbc80('0x81')](_0x5c1a21[_0x3f6922]['scheduledat'])<_0x27863c[_0xbc80('0x82')]*0x3c){if(_0x5c1a21[_0x3f6922][_0xbc80('0x83')]&&!_0x5c1a21[_0x3f6922][_0xbc80('0x83')][_0xbc80('0x84')]){_0x5197c2[_0xbc80('0x85')](_0x5c1a21[_0x3f6922]['id'])['then'](ut[_0xbc80('0x86')]('[RecallMe]'))[_0xbc80('0x75')](ut[_0xbc80('0x86')](_0xbc80('0x87')));}else{rpcDb[_0xbc80('0x88')](_0x5c1a21[_0x3f6922]['id']);}}else{var _0x5cde19=new Action(_0x5c1a21[_0x3f6922],_0x27863c);_0x5cde19[_0xbc80('0x89')]=moment()[_0xbc80('0x54')](_0xbc80('0x8a'));_0x27863c[_0xbc80('0x3b')]+=0x1;ut[_0xbc80('0x8b')](_0x5cde19,0x17,_0xbc80('0x8c'));if(_0x27863c['dialRecallInQueue']){rpcDb[_0xbc80('0x8d')](ut[_0xbc80('0x8e')](_0x5c1a21[_0x3f6922]));rpcDb[_0xbc80('0x8f')](_0x5cde19,_0xbc80('0x90'));}else{ut['logCustomer'](_0x5cde19,0x16,_0xbc80('0x91'));rpcDb['createCustomerHistory'](_0x5cde19,_0xbc80('0x92'));rpcDb[_0xbc80('0x93')](_0x5cde19,_0xbc80('0x92'));}}}}})[_0xbc80('0x75')](ut[_0xbc80('0x86')](_0xbc80('0x94')));};Preview[_0xbc80('0xe')][_0xbc80('0x6a')]=function(_0x56bdd4){_0x56bdd4[_0xbc80('0x5b')]=!![];if(ut[_0xbc80('0x95')](_0x56bdd4[_0xbc80('0x29')])){_0x56bdd4[_0xbc80('0x48')]=_0xbc80('0x96');}else if(!ut[_0xbc80('0x97')](_0x56bdd4[_0xbc80('0x31')])){_0x56bdd4['message']=_0xbc80('0x5e');}else if(!this[_0xbc80('0x98')](_0x56bdd4[_0xbc80('0x4f')])){if(!this[_0xbc80('0x98')](_0x56bdd4[_0xbc80('0x99')])){_0x56bdd4['message']=_0xbc80('0x9a');}else{_0x56bdd4['message']=_0xbc80('0x9b');}}else{_0x56bdd4['message']=_0xbc80('0x9b');}emitCampaignPreview(_0x56bdd4);};Preview[_0xbc80('0xe')]['callProgressDetectingCustomer']=function(_0x4b2867,_0x54be74,_0x25614b){var _0x4ec78a=this;var _0x3aab1f=this[_0xbc80('0x16')][_0x54be74];var _0x3339fe=this['campaignsPreview'][_0x3aab1f[_0xbc80('0x6e')]];var _0x43824a;if(_0x3339fe){switch(_0x25614b){case'1':_0x3339fe[_0xbc80('0x39')]+=0x1;_0x3aab1f['countnosuchnumberretry']+=0x1;_0x3aab1f[_0xbc80('0x9c')]=ut[_0xbc80('0x9d')](_0x3aab1f);ut[_0xbc80('0x8b')](_0x3aab1f,0x0,_0xbc80('0x9e'));ami[_0xbc80('0x59')](_0xbc80('0x9f'),ut['buildObj'](_0x3aab1f,_0xbc80('0xa0')));rpcDb[_0xbc80('0x8f')](_0x3aab1f,_0xbc80('0xa1'));if(ut[_0xbc80('0x9d')](_0x3aab1f)>=_0x3339fe[_0xbc80('0xa2')]){_0x43824a=ut[_0xbc80('0xa3')](_0x3aab1f,0xf,_0xbc80('0xa4'));rpcDb[_0xbc80('0x93')](_0x43824a,_0xbc80('0xa5'));}else{if(_0x3aab1f[_0xbc80('0xa6')]>=_0x3339fe[_0xbc80('0xa7')]){rpcDb[_0xbc80('0x93')](_0x3aab1f,'[callProgressDetectingCustomer][logNoSuchGlobal]');}else{rpcDb[_0xbc80('0xa8')](ut[_0xbc80('0xa9')](_0x3aab1f,'countnosuchnumberretry',_0x3339fe['dialNoSuchNumberRetryFrequency']),_0x3aab1f[_0xbc80('0xaa')],_0x3aab1f[_0xbc80('0xab')]);}}delete this[_0xbc80('0x16')][_0x4b2867[_0xbc80('0xac')]];break;case _0xbc80('0xad'):var _0x1b1f41=moment()[_0xbc80('0x54')](_0xbc80('0x8a'));_0x3aab1f[_0xbc80('0xae')]=_0x1b1f41;_0x3aab1f['answertime']=_0x1b1f41;_0x3aab1f[_0xbc80('0x70')]=!![];_0x3339fe[_0xbc80('0x2a')]+=0x1;logger[_0xbc80('0x56')](_0xbc80('0xaf'),_0x3aab1f[_0xbc80('0xb0')],_0xbc80('0xb1'),_0x3339fe['name'],_0xbc80('0x6f'),_0x3339fe[_0xbc80('0x2a')]);ami[_0xbc80('0x59')]('custom:agentconnect',ut['buildObj'](_0x3aab1f,'connect',this[_0xbc80('0x13')][_0x3aab1f[_0xbc80('0x6e')]]));if(_0x3339fe[_0xbc80('0xb2')]){ami[_0xbc80('0x59')](_0xbc80('0xb3'),ut[_0xbc80('0xb4')](_0x3aab1f));}break;case'16':ami[_0xbc80('0x59')](_0xbc80('0xb5'),ut[_0xbc80('0xb6')](_0x3aab1f,_0xbc80('0xb7'),this[_0xbc80('0x13')][_0x3aab1f[_0xbc80('0x6e')]]));emitVoiceQueueChannelRemove(ut['buildObj'](_0x3aab1f,'complete'));_0x3339fe[_0xbc80('0xb8')]+=0x1;_0x3339fe[_0xbc80('0xb9')]+=0x1;_0x3339fe[_0xbc80('0x28')]+=0x1;ut[_0xbc80('0x79')](_0x3339fe,_0xbc80('0xba'));_0x3aab1f[_0xbc80('0x9c')]=ut[_0xbc80('0x9d')](_0x3aab1f);ut['logCustomer'](_0x3aab1f,0x4,'Answer');rpcDb[_0xbc80('0x8f')](_0x3aab1f,_0xbc80('0xbb'));rpcDb[_0xbc80('0x93')](_0x3aab1f,_0xbc80('0xbc'));rpcDb['crateCustomerReportQueue'](_0x3aab1f);_0x3339fe['sumDuration']+=_0x3aab1f[_0xbc80('0xbd')];_0x3339fe[_0xbc80('0x2b')]+=_0x3aab1f[_0xbc80('0xbd')];logger[_0xbc80('0x56')](_0xbc80('0xbe'),_0x3aab1f[_0xbc80('0xb0')],'\x20Queue',_0x3339fe[_0xbc80('0x50')],_0xbc80('0x6f'),_0x3339fe['pTalking']);delete this[_0xbc80('0x16')][_0x4b2867[_0xbc80('0xac')]];break;case _0xbc80('0xbf'):_0x3339fe[_0xbc80('0xc0')]+=0x1;_0x3aab1f[_0xbc80('0xc1')]+=0x1;_0x3aab1f[_0xbc80('0x9c')]=ut[_0xbc80('0x9d')](_0x3aab1f);ut['logCustomer'](_0x3aab1f,0x5,_0xbc80('0xc2'));ami['emit'](_0xbc80('0xc3'),ut['buildObj'](_0x3aab1f,_0xbc80('0xc4')));rpcDb['createCustomerHistory'](_0x3aab1f,_0xbc80('0xc5'));if(ut['totalGlobal'](_0x3aab1f)>=_0x3339fe['dialGlobalMaxRetry']){_0x43824a=ut[_0xbc80('0xa3')](_0x3aab1f,0xf,_0xbc80('0xa4'));rpcDb['createCustomerFinal'](_0x43824a,_0xbc80('0xc6'));}else{if(_0x3aab1f[_0xbc80('0xc1')]>=_0x3339fe['dialBusyMaxRetry']){rpcDb['createCustomerFinal'](_0x3aab1f,_0xbc80('0xc5'));}else{rpcDb[_0xbc80('0xa8')](ut[_0xbc80('0xa9')](_0x3aab1f,_0xbc80('0xc1'),_0x3339fe[_0xbc80('0xc7')]),_0x3aab1f[_0xbc80('0xaa')],_0x3aab1f['activeContact']);}}break;case _0xbc80('0xc8'):_0x3339fe[_0xbc80('0x38')]+=0x1;_0x3aab1f[_0xbc80('0xc9')]+=0x1;_0x3aab1f[_0xbc80('0x9c')]=ut[_0xbc80('0x9d')](_0x3aab1f);ut[_0xbc80('0x8b')](_0x3aab1f,0x3,_0xbc80('0xca'));ami[_0xbc80('0x59')](_0xbc80('0xcb'),ut[_0xbc80('0xb6')](_0x3aab1f,_0xbc80('0xcc')));rpcDb[_0xbc80('0x8f')](_0x3aab1f,_0xbc80('0xcd'));if(ut[_0xbc80('0x9d')](_0x3aab1f)>=_0x3339fe[_0xbc80('0xa2')]){_0x43824a=ut[_0xbc80('0xa3')](_0x3aab1f,0xf,_0xbc80('0xa4'));rpcDb[_0xbc80('0x93')](_0x43824a,'[callProgressDetectingCustomer][logNoAnswerGlobal]');}else{if(_0x3aab1f[_0xbc80('0xc9')]>=_0x3339fe[_0xbc80('0xce')]){rpcDb[_0xbc80('0x93')](_0x3aab1f,_0xbc80('0xcd'));}else{rpcDb['rescheduleContact'](ut[_0xbc80('0xa9')](_0x3aab1f,_0xbc80('0xc9'),_0x3339fe[_0xbc80('0xcf')]),_0x3aab1f[_0xbc80('0xaa')],_0x3aab1f[_0xbc80('0xab')]);}}break;case _0xbc80('0xd0'):_0x3339fe['outboundCongestionCallsDay']+=0x1;_0x3aab1f[_0xbc80('0xd1')]+=0x1;_0x3aab1f['countglobal']=ut['totalGlobal'](_0x3aab1f);ut[_0xbc80('0x8b')](_0x3aab1f,0x8,_0xbc80('0xd2'));ami['emit'](_0xbc80('0xd3'),ut[_0xbc80('0xb6')](_0x3aab1f,'congestion'));rpcDb[_0xbc80('0x8f')](_0x3aab1f,_0xbc80('0xd4'));if(ut[_0xbc80('0x9d')](_0x3aab1f)>=_0x3339fe[_0xbc80('0xa2')]){_0x43824a=ut[_0xbc80('0xa3')](_0x3aab1f,0xf,_0xbc80('0xa4'));rpcDb['createCustomerFinal'](_0x43824a,_0xbc80('0xd5'));}else{if(_0x3aab1f[_0xbc80('0xd1')]>=_0x3339fe[_0xbc80('0xd6')]){rpcDb['createCustomerFinal'](_0x3aab1f,_0xbc80('0xd4'));}else{rpcDb['rescheduleContact'](ut[_0xbc80('0xa9')](_0x3aab1f,_0xbc80('0xd1'),_0x3339fe[_0xbc80('0xc7')]),_0x3aab1f['unlockAgent'],_0x3aab1f['activeContact']);}}break;case _0xbc80('0xd7'):_0x3339fe[_0xbc80('0x3c')]+=0x1;_0x3aab1f['countagentrejectretry']+=0x1;_0x3aab1f['countglobal']=ut['totalGlobal'](_0x3aab1f);ut[_0xbc80('0x8b')](_0x3aab1f,0x14,_0xbc80('0xd8'));ami[_0xbc80('0x59')](_0xbc80('0xd9'),ut[_0xbc80('0xb6')](_0x3aab1f,_0xbc80('0xda')));rpcDb[_0xbc80('0x8f')](_0x3aab1f,'[syncHangupRequest][logAgentReject]');if(ut[_0xbc80('0x9d')](_0x3aab1f)>=_0x3339fe[_0xbc80('0xa2')]){_0x43824a=ut['cloneAction'](_0x3aab1f,0x14,_0xbc80('0xd8'));rpcDb[_0xbc80('0x93')](_0x43824a,_0xbc80('0xdb'));}else{if(_0x3aab1f[_0xbc80('0xdc')]>=_0x3339fe['dialAgentRejectMaxRetry']){rpcDb[_0xbc80('0x93')](_0x3aab1f,_0xbc80('0xdb'));}else{rpcDb[_0xbc80('0xa8')](ut[_0xbc80('0xa9')](_0x3aab1f,_0xbc80('0xdc'),_0x3339fe[_0xbc80('0xdd')]),_0x3aab1f[_0xbc80('0xaa')],_0x3aab1f[_0xbc80('0xab')]);}}break;case _0xbc80('0xde'):_0x3339fe[_0xbc80('0xdf')]+=0x1;_0x3aab1f['countabandonedretry']+=0x1;_0x3aab1f[_0xbc80('0x9c')]=ut[_0xbc80('0x9d')](_0x3aab1f);ut[_0xbc80('0x8b')](_0x3aab1f,0xb,'Abandoned');rpcDb[_0xbc80('0x8f')](_0x3aab1f,_0xbc80('0xe0'));if(ut[_0xbc80('0x9d')](_0x3aab1f)>=_0x3339fe[_0xbc80('0xa2')]){_0x43824a=ut[_0xbc80('0xa3')](_0x3aab1f,0xf,'Global');rpcDb['createCustomerFinal'](_0x43824a,_0xbc80('0xe0'));}else{if(_0x3aab1f[_0xbc80('0xe1')]>=_0x3339fe[_0xbc80('0xe2')]){rpcDb[_0xbc80('0x93')](_0x3aab1f,_0xbc80('0xe0'));}else{rpcDb[_0xbc80('0xa8')](ut[_0xbc80('0xa9')](_0x3aab1f,_0xbc80('0xe3'),_0x3339fe[_0xbc80('0xe4')]),_0x3aab1f['unlockAgent'],_0x3aab1f[_0xbc80('0xab')]);}}break;case'18':_0x3339fe[_0xbc80('0x3d')]+=0x1;_0x3aab1f[_0xbc80('0xe5')]+=0x1;_0x3aab1f[_0xbc80('0x9c')]=ut['totalGlobal'](_0x3aab1f);ut['logCustomer'](_0x3aab1f,0x12,_0x4b2867[_0xbc80('0xe6')]||_0x4b2867['dialstatus']);ami[_0xbc80('0x59')]('custom:amd',ut[_0xbc80('0xb6')](_0x3aab1f,'amd'));rpcDb[_0xbc80('0x8f')](_0x3aab1f,'[callProgressDetectingCustomer][hangupInAMD]');if(ut[_0xbc80('0x9d')](_0x3aab1f)>=_0x3339fe['dialGlobalMaxRetry']){_0x43824a=ut['cloneAction'](_0x3aab1f,0xf,_0xbc80('0xa4'));rpcDb[_0xbc80('0x93')](_0x43824a,_0xbc80('0xe7'));}else{rpcDb[_0xbc80('0x93')](_0x3aab1f,_0xbc80('0xe7'));}delete this[_0xbc80('0x16')][_0x4b2867[_0xbc80('0xac')]];break;case'19':_0x3339fe[_0xbc80('0x3d')]+=0x1;_0x3aab1f[_0xbc80('0x9c')]=ut[_0xbc80('0x9d')](_0x3aab1f);ut[_0xbc80('0x8b')](_0x3aab1f,0x13,_0x4b2867[_0xbc80('0xe6')]||_0x4b2867['dialstatus']);ami[_0xbc80('0x59')](_0xbc80('0xe8'),ut['buildObj'](_0x3aab1f,_0xbc80('0xe9')));rpcDb[_0xbc80('0x8f')](_0x3aab1f,_0xbc80('0xea'));if(ut[_0xbc80('0x9d')](_0x3aab1f)>=_0x3339fe['dialGlobalMaxRetry']){_0x43824a=ut[_0xbc80('0xa3')](_0x3aab1f,0xf,_0xbc80('0xa4'));rpcDb[_0xbc80('0x93')](_0x43824a,_0xbc80('0xea'));}else{rpcDb[_0xbc80('0x93')](_0x3aab1f,_0xbc80('0xea'));}delete this[_0xbc80('0x16')][_0x4b2867['linkedid']];break;default:if(_0x3aab1f[_0xbc80('0x70')]){ut['decrementTalkink'](_0x3339fe,'[default]');ut[_0xbc80('0x7a')](_0xbc80('0xeb')+_0x3339fe['name'],_0x4b2867);}_0x3339fe['outboundUnknownCallsDay']+=0x1;_0x3aab1f[_0xbc80('0x9c')]=ut[_0xbc80('0x9d')](_0x3aab1f);ut[_0xbc80('0x8b')](_0x3aab1f,0xc,_0x4b2867[_0xbc80('0xe6')]||_0x4b2867[_0xbc80('0xec')]);rpcDb[_0xbc80('0x8f')](_0x3aab1f,_0xbc80('0xed'));if(ut[_0xbc80('0x9d')](_0x3aab1f)>=_0x3339fe[_0xbc80('0xa2')]){_0x43824a=ut[_0xbc80('0xa3')](_0x3aab1f,0xf,_0xbc80('0xa4'));rpcDb[_0xbc80('0x93')](_0x43824a,_0xbc80('0xee'));}else{rpcDb[_0xbc80('0x93')](_0x3aab1f,_0xbc80('0xee'));}delete this[_0xbc80('0x16')][_0x4b2867[_0xbc80('0xac')]];}if(!(_0x3aab1f['dialAnswer']&&_0x25614b==='16')){ut[_0xbc80('0x77')](_0x3339fe,_0xbc80('0xef'));logger['info'](_0xbc80('0xf0'),_0x3aab1f[_0xbc80('0xb0')],_0xbc80('0xb1'),_0x3339fe[_0xbc80('0x50')],_0xbc80('0xf1'),_0x3339fe[_0xbc80('0x49')]);}if(_0x25614b!=='ANSWER'){delete this['actions'][_0x4b2867[_0xbc80('0xac')]];delete this['actions'][_0x4b2867['destlinkedid']];}}};Preview[_0xbc80('0xe')][_0xbc80('0xf2')]=function(_0x15fcaa,_0x5e48fe,_0x1356a9){if(_[_0xbc80('0xf3')](_0x5e48fe)&&_0xbc80('0xf4')!==typeof _0x5e48fe){return;}if(_['isUndefined'](_0x1356a9)&&_0xbc80('0xf4')!==typeof _0x1356a9){return;}switch(_0x1356a9[_0xbc80('0xf5')]){case'0':ut[_0xbc80('0xf6')](_0x15fcaa,0x0,_0xbc80('0x9e'));rpcDb[_0xbc80('0xf7')](_0x15fcaa,_0xbc80('0xf8'));break;case'3':ut[_0xbc80('0xf6')](_0x15fcaa,0x3,'NoAnswer');rpcDb['createAgentHistory'](_0x15fcaa,_0xbc80('0xf9'));break;case'5':ut['logAgent'](_0x15fcaa,0x5,_0xbc80('0xc2'));rpcDb[_0xbc80('0xf7')](_0x15fcaa,'[callProgressDetectingAgent][logBusy]');break;case'8':ut[_0xbc80('0xf6')](_0x15fcaa,0x8,_0xbc80('0xd2'));rpcDb['createAgentHistory'](_0x15fcaa,_0xbc80('0xfa'));break;case'22':ut[_0xbc80('0xf6')](_0x15fcaa,0x16,'AnswerAGI');rpcDb['createAgentHistory'](_0x15fcaa,'[callProgressDetectingAgent][logAnswerAGI]');break;default:ut['logAgent'](_0x15fcaa,0xc,_0x1356a9[_0xbc80('0xf5')]);rpcDb[_0xbc80('0xf7')](_0x15fcaa,_0xbc80('0xfa'));}ut[_0xbc80('0x77')](_0x5e48fe,_0xbc80('0xfb'));logger['info']('[originated][decrement][callProgressDetectingAgent]',_0x15fcaa[_0xbc80('0xb0')],_0xbc80('0xb1'),_0x5e48fe['name'],_0xbc80('0xf1'),_0x5e48fe[_0xbc80('0x49')]);delete this[_0xbc80('0x16')][_0x15fcaa[_0xbc80('0xb0')]];};Preview['prototype'][_0xbc80('0xfc')]=function(_0xf3b26,_0x502e57,_0x16b8a3,_0x18f419,_0x840a0){var _0x1fc9d2=this;return new BPromise(function(_0x448500,_0x24fba7){if(_['isNil'](_0x502e57)||_[_0xbc80('0x6b')](_0x502e57[_0xbc80('0xfd')])||_[_0xbc80('0x6b')](_0x502e57[_0xbc80('0xfd')][_0xbc80('0xfe')])||_['isNil'](_0x502e57[_0xbc80('0xff')])){_0x24fba7(ut[_0xbc80('0x48')]('Contact\x20is\x20undefined',_0x18f419,_0x840a0));return;}var _0x265fec=uuid['v4']();var _0x37acb7=_0x1fc9d2[_0xbc80('0x13')][_0x502e57[_0xbc80('0x6d')][_0xbc80('0x50')]];var _0x25b927=_0x16b8a3?_0x1fc9d2[_0xbc80('0x17')][_0x16b8a3]['id']:undefined;_0x1fc9d2[_0xbc80('0x16')][_0x265fec]=new Action(_0x502e57,_0x37acb7,_0x265fec,_0x16b8a3,_0x25b927);var _0x33a416=_0x1fc9d2[_0xbc80('0x16')][_0x265fec];_0x33a416[_0xbc80('0xaa')]=_0x18f419;_0x33a416['activeContact']=_0x840a0;_0x33a416[_0xbc80('0x100')]=_0x16b8a3;if(_[_0xbc80('0x101')](_0xf3b26)){_0x1fc9d2['execCall'](_0x33a416,_0x37acb7,_0x502e57,_0x16b8a3)['then'](function(_0x1b2881){logger[_0xbc80('0x56')]('[Preview][execCall][success]','Queue:\x20'+_0x33a416[_0xbc80('0x6e')]+_0xbc80('0x102')+_0x33a416[_0xbc80('0x103')],JSON[_0xbc80('0x53')](_0x1b2881));ami[_0xbc80('0x59')](_0xbc80('0x104'),ut[_0xbc80('0xb6')](_0x33a416,_0xbc80('0x105'),_0x1fc9d2['campaignsPreview'][_0x33a416['queue']]));_0x448500(ut[_0xbc80('0x48')]('Calling'));})[_0xbc80('0x75')](function(_0x337d32){ut[_0xbc80('0x5f')]('[Preview][execCall][failure]',_0x337d32);_0x24fba7(ut[_0xbc80('0x48')]('Call\x20failed',_0x18f419,_0x840a0));});}else{_0x37acb7[_0xbc80('0x36')]+=0x1;ut[_0xbc80('0x106')](_0x33a416);rpcDb['createHistory'](_0x33a416,'[Blacklist][error]');delete _0x1fc9d2[_0xbc80('0x16')][_0x265fec];_0x24fba7(ut[_0xbc80('0x48')]('Contact\x20in\x20black\x20List',_0x18f419,_0x840a0));}});};Preview[_0xbc80('0xe')][_0xbc80('0x98')]=function(_0x4fd3a0){return!_['isNil'](_0x4fd3a0)&&!_[_0xbc80('0x6b')](_0x4fd3a0[_0xbc80('0x50')])&&!_['isNil'](_0x4fd3a0[_0xbc80('0x51')])&&_0x4fd3a0[_0xbc80('0x51')]&&!_[_0xbc80('0x6b')](this[_0xbc80('0x15')][util[_0xbc80('0x54')]('SIP/%s',_0x4fd3a0[_0xbc80('0x50')])])&&!_[_0xbc80('0x6b')](this[_0xbc80('0x15')][util['format']('SIP/%s',_0x4fd3a0[_0xbc80('0x50')])][_0xbc80('0x73')])&&(this['trunks'][util[_0xbc80('0x54')](_0xbc80('0x107'),_0x4fd3a0[_0xbc80('0x50')])][_0xbc80('0x73')]===_0xbc80('0x108')||this[_0xbc80('0x15')][util['format'](_0xbc80('0x107'),_0x4fd3a0[_0xbc80('0x50')])]['status']==='unmonitored');};Preview['prototype'][_0xbc80('0x85')]=function(_0x106b44,_0x4dc6ee){var _0x195ee6=this;return new BPromise(function(_0x1d60c4,_0x1344a3){_0x195ee6[_0xbc80('0x109')](_0x106b44,_0x4dc6ee)[_0xbc80('0x80')](function(_0x58f8a0){_0x1d60c4(_[_0xbc80('0x71')](_0x58f8a0,[_0xbc80('0x48')]));})[_0xbc80('0x75')](function(_0x47a9f1){if(_0x47a9f1[_0xbc80('0x10a')]){rpcDb['unlockContact'](_0x106b44);}if(_0x47a9f1['active']){rpcDb[_0xbc80('0x88')](_0x106b44);}_0x1344a3(_['pick'](_0x47a9f1,[_0xbc80('0x48')]));});});};Preview[_0xbc80('0xe')][_0xbc80('0x109')]=function(_0x52ccb4,_0x219741){var _0x3b12c5=this;return new BPromise(function(_0x4da303,_0x296497){var _0x30b4ee,_0x2deda9;rpcDb[_0xbc80('0x10b')](_0x52ccb4)['then'](function(_0xaee27a){if(!_[_0xbc80('0x6b')](_0xaee27a[0x0])){_0x2deda9=_0xaee27a[0x0][_0xbc80('0x10c')]?![]:!![];_0x30b4ee=_0xaee27a[0x0]['recallme']?!![]:![];_0x30b4ee=_0x219741?!![]:_0x30b4ee;}var _0x17d9ad=_0x3b12c5[_0xbc80('0x10d')](_0xaee27a);if(_0x17d9ad[_0xbc80('0x10e')]){rpcDb[_0xbc80('0x10f')](_[_0xbc80('0x71')](_0xaee27a[0x0],[_0xbc80('0xff'),_0xbc80('0x110')]))[_0xbc80('0x80')](function(_0x12fc7b){_0x3b12c5[_0xbc80('0xfc')](_0x12fc7b,_0xaee27a[0x0],_0x219741,_0x2deda9,_0x30b4ee)[_0xbc80('0x80')](function(_0x44d6b2){_0x4da303(_0x44d6b2);})[_0xbc80('0x75')](function(_0x1e4d9e){_0x296497(_0x1e4d9e);});})[_0xbc80('0x75')](function(_0x4f89e0){ut['logger']('[Preview][checkIsBlackList]',_0x4f89e0);_0x296497(ut[_0xbc80('0x48')](_0xbc80('0x111'),_0x2deda9,_0x30b4ee));});}else{_0x296497(ut[_0xbc80('0x48')](_0x17d9ad[_0xbc80('0x48')],_0x2deda9,_0x30b4ee));}})['catch'](function(_0x4c60de){ut[_0xbc80('0x5f')](_0xbc80('0x112'),_0x4c60de);_0x296497(ut[_0xbc80('0x48')](_0xbc80('0x111'),![],!![]));});});};Preview[_0xbc80('0xe')]['validateContact']=function(_0x7cd0b3){if(_[_0xbc80('0x6b')](_0x7cd0b3)||_[_0xbc80('0x101')](_0x7cd0b3)||!_[_0xbc80('0x6b')](_0x7cd0b3[0x0][_0xbc80('0x83')])&&_[_0xbc80('0x6b')](_0x7cd0b3[0x0][_0xbc80('0x83')]['name'])){ut['logger'](_0xbc80('0x113'),_0x7cd0b3);return{'isValid':![],'message':'Empty\x20Contact'};}var _0x5b7e12=this[_0xbc80('0x13')][_0x7cd0b3[0x0][_0xbc80('0x6d')][_0xbc80('0x50')]];_0x5b7e12[_0xbc80('0x48')]=_0xbc80('0x9b');if(_[_0xbc80('0x6b')](_0x5b7e12)){ut['logger'](_0xbc80('0x114'),_0x5b7e12);return{'isValid':![],'message':'Empty\x20Campaign'};}if(!this[_0xbc80('0x98')](_0x5b7e12[_0xbc80('0x4f')])){ut[_0xbc80('0x5f')](_0xbc80('0x115'),'campaign\x20Name:\x20'+_0x5b7e12[_0xbc80('0x50')]+_0xbc80('0x116'));if(!this[_0xbc80('0x98')](_0x5b7e12[_0xbc80('0x99')])){ut[_0xbc80('0x5f')](_0xbc80('0x115'),_0x5b7e12[_0xbc80('0x50')]+_0xbc80('0x117'));return{'isValid':![],'message':_0xbc80('0x118')};}}if(!ut[_0xbc80('0x97')](_0x5b7e12[_0xbc80('0x31')])){ut[_0xbc80('0x5f')](_0xbc80('0x119'),_0x5b7e12[_0xbc80('0x50')]+_0xbc80('0x11a'));return{'isValid':![],'message':_0xbc80('0x11b')+_0x5b7e12[_0xbc80('0x50')]+_0xbc80('0x11a')};}return{'isValid':!![],'message':_0xbc80('0x11c')};};Preview[_0xbc80('0xe')][_0xbc80('0x11d')]=function(_0x31315d,_0x318beb,_0x28c686,_0x226558){var _0x1df8be=this;return new BPromise(function(_0x4bd9f9,_0x24d4d4){var _0x11bb03=_0x31315d['uniqueid'];var _0x504a7b=_0x1df8be[_0xbc80('0x98')](_0x318beb['Trunk'])?util[_0xbc80('0x54')](_0xbc80('0x11e'),_0x318beb[_0xbc80('0x4f')][_0xbc80('0x50')],_[_0xbc80('0x6b')](_0x318beb[_0xbc80('0x35')])?'':_0x318beb['dialPrefix']['trim']()||'',_0x318beb['dialCutDigit']>0x0?_0x28c686['Contact']['phone'][_0xbc80('0x11f')](_0x318beb['dialCutDigit']):_0x28c686['Contact'][_0xbc80('0xfe')]):util[_0xbc80('0x54')](_0xbc80('0x11e'),_[_0xbc80('0x6b')](_0x318beb[_0xbc80('0x99')])?_0x318beb['Trunk']['name']:_0x318beb[_0xbc80('0x99')][_0xbc80('0x50')],_[_0xbc80('0x6b')](_0x318beb['dialPrefix'])?'':_0x318beb[_0xbc80('0x35')][_0xbc80('0x120')]()||'',_0x318beb[_0xbc80('0x121')]>0x0?_0x28c686['Contact']['phone'][_0xbc80('0x11f')](_0x318beb[_0xbc80('0x121')]):_0x28c686[_0xbc80('0xfd')][_0xbc80('0xfe')]);var _0x4c9dda=_0x1df8be[_0xbc80('0x98')](_0x318beb[_0xbc80('0x4f')])?ut[_0xbc80('0x122')](_0x318beb['Trunk'][_0xbc80('0x123')],_0x318beb['dialOriginateCallerIdName'],_0x318beb[_0xbc80('0x124')]>0x0?ut['getCallerIdRandom'](_0x318beb[_0xbc80('0x33')],_0x318beb[_0xbc80('0x124')]):_0x318beb[_0xbc80('0x33')]):ut[_0xbc80('0x122')](_[_0xbc80('0x6b')](_0x318beb[_0xbc80('0x99')])?_0x318beb[_0xbc80('0x4f')][_0xbc80('0x123')]:_0x318beb[_0xbc80('0x99')]['callerid'],_0x318beb[_0xbc80('0x32')],_0x318beb[_0xbc80('0x124')]>0x0?ut[_0xbc80('0x125')](_0x318beb['dialOriginateCallerIdNumber'],_0x318beb[_0xbc80('0x124')]):_0x318beb[_0xbc80('0x33')]);if(_0x4c9dda){_0x31315d[_0xbc80('0x126')]=ut[_0xbc80('0x127')](_0x4c9dda);_0x31315d['originatecalleridnum']=ut['extractCalleridNumber'](_0x4c9dda);}var _0x112272=ut[_0xbc80('0x128')](_0x318beb,_0x28c686,_0x504a7b,_0x4c9dda,_0x11bb03,_0x31315d);_['merge'](_0x31315d,ut[_0xbc80('0x129')](_0x112272));_0x31315d['starttime']=moment()['format'](_0xbc80('0x8a'));ami[_0xbc80('0x72')](ut[_0xbc80('0x12a')](_0x31315d,_0x318beb,_0x112272,_0x31315d[_0xbc80('0xab')],_0x226558))[_0xbc80('0x80')](function(_0x58c71d){var _0x339af9=_0x31315d[_0xbc80('0x12b')];if(!_[_0xbc80('0x6b')](_0x339af9)){if(!_['isNil'](_0x1df8be['agents'][_0x339af9])){_0x1df8be['agents'][_0x339af9][_0xbc80('0x12c')]=_0x31315d['calleridnum'];emit(util[_0xbc80('0x54')](_0xbc80('0x12d'),_0x1df8be[_0xbc80('0x17')][_0x339af9]['name']),_0xbc80('0x12e'),{'destaccountcode':_0x1df8be[_0xbc80('0x17')][_0x339af9][_0xbc80('0x12f')],'destconnectedlinenum':_0x31315d[_0xbc80('0x130')]});}}_0x318beb[_0xbc80('0x49')]+=0x1;logger[_0xbc80('0x56')](_0xbc80('0x131'),_0x11bb03,'\x20Queue',_0x318beb[_0xbc80('0x50')],'originated:\x20',_0x318beb[_0xbc80('0x49')]);_0x4bd9f9(_0x58c71d);})['catch'](function(_0x34b21e){ut[_0xbc80('0xf6')](_0x31315d,0xe,_0xbc80('0x132'));rpcDb[_0xbc80('0xf7')](_0x31315d,'[originateFailure][logOriginateFailure]');_0x24d4d4(_0x34b21e);});});};Preview[_0xbc80('0xe')]['syncNewExten']=function(_0x4f445c){if(this[_0xbc80('0x16')][_0x4f445c[_0xbc80('0xac')]]){this['actions'][_0x4f445c[_0xbc80('0xac')]][_0xbc80('0x74')]=_0x4f445c['channel'];}};Preview[_0xbc80('0xe')][_0xbc80('0x1a')]=function(_0x59b4ec){var _0x27ac69=this;var _0x135568=this[_0xbc80('0x16')][_0x59b4ec[_0xbc80('0x133')]];if(_0x135568){if(_0x135568['lookAgent']&&this[_0xbc80('0x17')][_0x135568[_0xbc80('0x100')]]){ut['logLookAgent'](_0x135568,this[_0xbc80('0x17')][_0x135568[_0xbc80('0x100')]]['name'],this['agents'][_0x135568['lookAgent']]['id']);}var _0x4e1146=_['clone'](_0x135568);_0x4e1146['responsetime']=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');var _0x73ecc4=_0x27ac69[_0xbc80('0x13')][_0x135568[_0xbc80('0x6e')]];if(ut[_0xbc80('0x134')](_0x59b4ec[_0xbc80('0x135')])){if(_0x135568[_0xbc80('0xaa')]){rpcDb[_0xbc80('0x136')](_0x135568['idContact']);}if(_0x135568[_0xbc80('0xab')]){rpcDb['disableContact'](_0x135568[_0xbc80('0x103')]);}ami[_0xbc80('0x59')]('custom:agentringnoanswer',ut[_0xbc80('0xb6')](_0x135568,_0xbc80('0x137'),this[_0xbc80('0x13')][_0x135568[_0xbc80('0x6e')]]));this[_0xbc80('0xf2')](_0x4e1146,_0x73ecc4,_0x59b4ec);}else{_0x135568[_0xbc80('0x89')]=moment()[_0xbc80('0x54')](_0xbc80('0x8a'));ut[_0xbc80('0xf6')](_0x4e1146,0x4,_0xbc80('0x138'));rpcDb[_0xbc80('0xf7')](_0x4e1146,_0xbc80('0x139'));}}};Preview['prototype'][_0xbc80('0x13a')]=function(_0x527269){var _0x33e206=this;var _0x3142cc=this[_0xbc80('0x16')][_0x527269[_0xbc80('0xac')]];var _0x339fdd;if(_0x3142cc){_0x339fdd=this[_0xbc80('0x13')][_0x3142cc[_0xbc80('0x6e')]];logger[_0xbc80('0x56')](_0xbc80('0x13b'),_0x527269[_0xbc80('0xac')],_0xbc80('0xb1'),_0x339fdd[_0xbc80('0x50')],'pTalking:\x20',_0x339fdd['pTalking']);}if(this[_0xbc80('0x16')][_0x527269['linkedid']]&&_0x527269[_0xbc80('0xac')]!==_0x527269['uniqueid']){if(_0x527269[_0xbc80('0x13c')]==='16'&&this[_0xbc80('0x16')][_0x527269[_0xbc80('0xac')]]['dialAnswer']){this[_0xbc80('0x13d')](_0x527269,_0x527269[_0xbc80('0xac')],_0x527269[_0xbc80('0x13c')]);}else if(this[_0xbc80('0x16')][_0x527269[_0xbc80('0xac')]][_0xbc80('0x70')]){logger[_0xbc80('0x56')]('[syncHangup][talking][cause]',_0x527269[_0xbc80('0xac')],_0x527269['cause'],_0xbc80('0xb1'),_0x339fdd['name'],_0xbc80('0x6f'),_0x339fdd['pTalking']);this[_0xbc80('0x13d')](_0x527269,_0x527269[_0xbc80('0xac')],_0x527269[_0xbc80('0x13c')]);}}else if(_0x3142cc&&_[_0xbc80('0x6b')](_0x3142cc['statedesc'])&&_0x339fdd['dialQueueProject']&&_0x527269['linkedid']===_0x527269[_0xbc80('0xb0')]&&_[_0xbc80('0x6b')](_0x527269[_0xbc80('0xf5')])&&_0x527269[_0xbc80('0x13c')]==='16'&&_0x527269[_0xbc80('0x13e')]==='6'&&_[_0xbc80('0xf3')](_0x3142cc[_0xbc80('0x13f')])){if(_0x3142cc[_0xbc80('0xaa')]){rpcDb[_0xbc80('0x136')](_0x3142cc[_0xbc80('0x103')]);}if(_0x3142cc['activeContact']){rpcDb[_0xbc80('0x88')](_0x3142cc['idContact']);}_0x527269[_0xbc80('0xf5')]='22';this[_0xbc80('0xf2')](_0x3142cc,_0x339fdd,_0x527269);}else if(_0x3142cc&&_0x3142cc[_0xbc80('0x13f')]){if(_0x527269[_0xbc80('0x13c')]==='16'&&this['actions'][_0x527269[_0xbc80('0xac')]][_0xbc80('0x70')]){logger[_0xbc80('0x56')]('[syncHangup][talking][transfer]',_0x527269[_0xbc80('0xac')],_0x527269[_0xbc80('0x13c')],_0xbc80('0xb1'),_0x339fdd[_0xbc80('0x50')],_0xbc80('0x6f'),_0x339fdd[_0xbc80('0x2a')]);this[_0xbc80('0x13d')](_0x527269,_0x527269[_0xbc80('0xac')],_0x527269[_0xbc80('0x13c')]);}else if(this[_0xbc80('0x16')][_0x527269['linkedid']]['dialAnswer']){logger[_0xbc80('0x56')](_0xbc80('0x140'),_0x527269[_0xbc80('0xac')],_0x527269[_0xbc80('0x13c')],_0xbc80('0xb1'),_0x339fdd['name'],_0xbc80('0x6f'),_0x339fdd[_0xbc80('0x2a')]);this[_0xbc80('0x13d')](_0x527269,_0x527269[_0xbc80('0xac')],_0x527269['cause']);}}};Preview[_0xbc80('0xe')][_0xbc80('0x1f')]=function(_0x2c5247){if(this['actions'][_0x2c5247['destlinkedid']]&&_0x2c5247[_0xbc80('0x141')]!==_0x2c5247[_0xbc80('0x142')]){this[_0xbc80('0x13d')](_0x2c5247,_0x2c5247[_0xbc80('0x141')],_0x2c5247[_0xbc80('0xec')]);}};Preview[_0xbc80('0xe')][_0xbc80('0x1e')]=function(_0x4e1cea){if(this['actions'][_0x4e1cea[_0xbc80('0xac')]]&&_0x4e1cea[_0xbc80('0xac')]!==_0x4e1cea['uniqueid']&&!this[_0xbc80('0x16')][_0x4e1cea[_0xbc80('0xac')]]['dialAnswer']){if(_0x4e1cea[_0xbc80('0x13c')]==='1'){this[_0xbc80('0x13d')](_0x4e1cea,_0x4e1cea[_0xbc80('0xac')],_0x4e1cea[_0xbc80('0x13c')]);}}};Preview[_0xbc80('0xe')][_0xbc80('0x143')]=function(_0x1b2908,_0x27d28a,_0x3ed915){if(this[_0xbc80('0x16')][_0x1b2908]){if(_['isNil'](this['actions'][_0x1b2908][_0xbc80('0x144')])){this[_0xbc80('0x16')][_0x1b2908]['variables']={};}this['actions'][_0x1b2908][_0xbc80('0x144')][_0x27d28a]=_0x3ed915;}};Preview[_0xbc80('0xe')][_0xbc80('0x22')]=function(_0x1ea24e){try{if(!_['isNil'](_0x1ea24e)){if(ut[_0xbc80('0x145')](_[_0xbc80('0x146')](_0x1ea24e['variable'])[0x0])){this['addVariable'](_0x1ea24e['uniqueid'],_['keys'](_0x1ea24e[_0xbc80('0x147')])[0x0],_0x1ea24e[_0xbc80('0x148')]);}}}catch(_0x30dc91){logger[_0xbc80('0x149')](_0xbc80('0x14a'),util['inspect'](_0x30dc91,{'showHidden':![],'depth':null}));}};Preview[_0xbc80('0xe')][_0xbc80('0x24')]=function(_0x3f9617){if(_0x3f9617){if(this[_0xbc80('0x16')][_0x3f9617[_0xbc80('0x14b')]]){this[_0xbc80('0x16')][_0x3f9617[_0xbc80('0x14b')]]['transfer']=!![];}}};Preview[_0xbc80('0xe')][_0xbc80('0x25')]=function(_0x8127ed){if(_0x8127ed){if(this[_0xbc80('0x16')][_0x8127ed[_0xbc80('0x14c')]]){this[_0xbc80('0x16')][_0x8127ed[_0xbc80('0x14c')]][_0xbc80('0x13f')]=!![];}}};module['exports']=Preview;
\ No newline at end of file
+var _0x8ef6=['IS_DISACTIVED','logger','\x20is\x20disactive','syncCampaigns','hasOwnProperty','booked','clearZombieChannels','dialActive','dialPreviewAutoRecallMe','recallMe','sequence','info','[clearZombieChannels][talking]','Queue','queue','dialAnswer','pick','contactId','UserId','VoiceQueueId','Action','status','catch','[clearZombieChannel]','decrementTalkink','loggerError','[Dialer][checkChannel][pTalking][Preview]','[Dialer][checkChannel][Preview]','clearZombieChannel','getContactRecallMe','agentReadyId','then','length','getDiff','scheduledat','dialRecallMeTimeout','Agent','voicePause','run','logger2','[RecallMe]','starttime','YYYY-MM-DD\x20HH:mm:ss','logCustomer','RecallInQueue','dialRecallInQueue','rescheduleContactInQueue','createBody','createCustomerHistory','createCustomerFinal','[HistoryRecallClose]','[getContactRecallMe]','setMessage','IsNotLoggedIn','AGENTS_NOT_LOGGED','isTrunkReachable','TrunkBackup','TRUNK_IS_NOT_REACHABLE','ACTIVE','callProgressDetectingCustomer','outboundNoSuchCallsDay','countglobal','NoSuchNumber','custom:agentnosuchnumber','buildObj','[callProgressDetectingCustomer][logNoSuch]','totalGlobal','cloneAction','dialNoSuchNumberMaxRetry','[callProgressDetectingCustomer][logNoSuchGlobal]','rescheduleContact','countnosuchnumberretry','dialNoSuchNumberRetryFrequency','unlockAgent','linkedid','ANSWER','responsetime','answertime','[syncHangup][talking][increment]','\x20Queue','connect','acw','custom:agentConnectPreview','complete','[callProgressDetectingCustomer][logAnswerGlobal]','talktime','[syncHangup][talking][decrement]','uniqueid','pTalking:\x20','BUSY','countbusyretry','Busy','busy','[callProgressDetectingCustomer][logBusy]','Global','dialBusyMaxRetry','scheduledAt','dialBusyRetryFrequency','activeContact','NOANSWER','countnoanswerretry','NoAnswer','[callProgressDetectingCustomer][logNoAnswer]','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','CONGESTION','countcongestionretry','Congestion','custom:agentcongestion','congestion','[callProgressDetectingCustomer][logCongestion]','dialCongestionMaxRetry','CANCEL','AgentReject','custom:agentreject','agentreject','[syncHangupRequest][logAgentReject]','dialGlobalMaxRetry','[callProgressDetectingCustomer][logAgentReject]','dialAgentRejectMaxRetry','countagentrejectretry','dialAgentRejectRetryFrequency','ABANDONED','countabandonedretry','Abandoned','[callProgressDetectingCustomer][logAbandoned]','dialAbandonedMaxRety','countmachineretry','cause-txt','dialstatus','custom:amd','[callProgressDetectingCustomer][hangupInAMD]','outboundUnknownCallsDay','[callProgressDetectingCustomer][machine]','[Dialer][decrementTalkink][no\x20Hangup][Preview]','[callProgressDetectingCustomer][logUnknown]','[callProgressDetectingCustomer][logUnknownGlobal]','updateOriginated','[callProgressDetectingCustomer]','[originated][decrement][callProgressDetectingCustomer]','originated:\x20','destlinkedid','callProgressDetectingAgent','isUndefined','object','logAgent','createAgentHistory','[callProgressDetectingAgent][logNoSuch]','[callProgressDetectingAgent][logNoAnswer]','[callProgressDetectingAgent][logCongestion]','AnswerAGI','reason','[callProgressDetectingAgent]','[originated][decrement][callProgressDetectingAgent]','checkInBlack','isNil','phone','Contact\x20is\x20undefined','lookAgent','isEmpty','execCall','[Preview][execCall][success]','Queue:\x20','\x20IdHopper:\x20','idContact','custom:agentcalled','called','Calling','[Preview][execCall][failure]','Call\x20failed','createHistory','[Blacklist][error]','Contact\x20in\x20black\x20List','SIP/%s','reachable','unmonitored','execRun','unlock','unlockContact','disableContact','getContactPreview','recallme','Contact.phone','[Preview][checkIsBlackList]','Call\x20unsuccessful','[Preview][getContactPreview]','validateContact','[Preview][validateContact][Empty\x20Contact]','Empty\x20Campaign','[Preview][validateContact][Trunk\x20not\x20work]','campaign\x20Name:\x20','\x20Trunk\x20is\x20not\x20active','\x20Trunk\x20Backup\x20is\x20not\x20active','Trunk\x20not\x20work','isActive','[Preview][validateContact][Campaign\x20Active]','\x20Not\x20Active','Is\x20Valid','dialPrefix','trim','dialCutDigit','Contact','substring','SIP/%s/%s%s','getCallerId','callerid','dialRandomLastDigitCallerIdNumber','getCallerIdRandom','extractCalleridName','originatecalleridnum','extractCalleridNumber','addVariables','merge','toLowerVariables','variablesAction','[originated][increment]','OriginateError','[originateFailure][logOriginateFailure]','syncNewExten','channel','clone','isFailure','response','rejected','[callProgressDetectingAgent][logAnswer]','cause','statedesc','dialQueueProject','transfer','[syncHangup][talking][transfer]','[syncHangup][talking][cause]','addVariable','variables','filterKey','keys','variable','value','error','[syncVarSet][Preview]','syncBlindTransfer','transfererlinkedid','exports','util','lodash','bluebird','uuid','moment','md5','ioredis','../../../config/logger','preview','actionPreview','./action','./util/util','redis','localhost','socket.io-emitter','prototype','enqueue','tail','finally','campaignsPreview','voiceQueues','trunks','actions','agents','clockClearZombieChannels','originateresponse','syncOriginateResponse','hangup','syncHangup','bind','syncHangupRequest','dialend','syncDialEnd','newexten','varset','syncVarSet','syncAttendedTransfer','blindtransfer','loopCampaigns','type','outbound','answered','available','loggedIn','pTalking','sumBillable','sumDuration','sumHoldTime','talking','total','abandoned','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundAbandonedCallsDay','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','originated','erlangCalls','erlangAbandonmentRate','startPredictive','startProgressive','Trunk','active','Interval','name','stringify','format','voice_queue:save','[DEBUG]\x20Emit\x20voice_queue_channel:remove\x20event','voice_queue_channel:remove','emit','voice_queue_presence:remove','sendMessageOneNotActive','paused','message','NOT_ACTIVE','[CampaignPreview]\x20Campaign\x20Queue:\x20','\x20is\x20not\x20active'];(function(_0x36ed3c,_0x44a00a){var _0x52a2e0=function(_0x3f7af9){while(--_0x3f7af9){_0x36ed3c['push'](_0x36ed3c['shift']());}};_0x52a2e0(++_0x44a00a);}(_0x8ef6,0xf2));var _0x68ef=function(_0xe9044b,_0x2b38f4){_0xe9044b=_0xe9044b-0x0;var _0x573567=_0x8ef6[_0xe9044b];return _0x573567;};'use strict';var util=require(_0x68ef('0x0'));var _=require(_0x68ef('0x1'));var BPromise=require(_0x68ef('0x2'));var uuid=require(_0x68ef('0x3'));var moment=require(_0x68ef('0x4'));var md5=require(_0x68ef('0x5'));var Redis=require(_0x68ef('0x6'));var config=require('../../../config/environment');var logger=require(_0x68ef('0x7'))(_0x68ef('0x8'));var loggerAction=require(_0x68ef('0x7'))(_0x68ef('0x9'));var ami=require('../ami');var rpcDb=require('./rpcDb');var Action=require(_0x68ef('0xa'));var ut=require(_0x68ef('0xb'));config[_0x68ef('0xc')]=_['defaults'](config[_0x68ef('0xc')],{'host':_0x68ef('0xd'),'port':0x18eb});var io=require(_0x68ef('0xe'))(new Redis(config[_0x68ef('0xc')]));var Sequence=function(){};Sequence[_0x68ef('0xf')][_0x68ef('0x10')]=function(_0x304a60){this[_0x68ef('0x11')]=this[_0x68ef('0x11')]?this[_0x68ef('0x11')][_0x68ef('0x12')](_0x304a60):_0x304a60();};function Preview(_0xfa6763){this['sequence']=new Sequence();this[_0x68ef('0x13')]=_0xfa6763[_0x68ef('0x14')];this[_0x68ef('0x15')]=_0xfa6763[_0x68ef('0x15')];this[_0x68ef('0x16')]={};this[_0x68ef('0x17')]=_0xfa6763['agents'];this[_0x68ef('0x18')]=0x0;ami['on'](_0x68ef('0x19'),this[_0x68ef('0x1a')]['bind'](this));ami['on'](_0x68ef('0x1b'),this[_0x68ef('0x1c')][_0x68ef('0x1d')](this));ami['on']('hanguprequest',this[_0x68ef('0x1e')][_0x68ef('0x1d')](this));ami['on'](_0x68ef('0x1f'),this[_0x68ef('0x20')]['bind'](this));ami['on'](_0x68ef('0x21'),this['syncNewExten']['bind'](this));ami['on'](_0x68ef('0x22'),this[_0x68ef('0x23')]['bind'](this));ami['on']('attendedtransfer',this[_0x68ef('0x24')][_0x68ef('0x1d')](this));ami['on'](_0x68ef('0x25'),this['syncBlindTransfer'][_0x68ef('0x1d')](this));this[_0x68ef('0x26')](this[_0x68ef('0x13')]);}function emit(_0x5b246b,_0x3c46d4,_0x3be4c0){io['to'](_0x5b246b)['emit'](_0x3c46d4,_0x3be4c0);}function emitCampaignPreview(_0x399da4){if(_0x399da4[_0x68ef('0x27')]===_0x68ef('0x28')){var _0x5ddec7={'id':_0x399da4['id'],'name':_0x399da4['name'],'strategy':_0x399da4['strategy'],'answered':_0x399da4[_0x68ef('0x29')],'available':_0x399da4[_0x68ef('0x2a')],'loggedIn':_0x399da4[_0x68ef('0x2b')],'pTalking':_0x399da4[_0x68ef('0x2c')],'sumBillable':_0x399da4[_0x68ef('0x2d')],'sumDuration':_0x399da4[_0x68ef('0x2e')],'sumHoldTime':_0x399da4[_0x68ef('0x2f')]||0x0,'talking':_0x399da4[_0x68ef('0x30')],'total':_0x399da4[_0x68ef('0x31')],'type':_0x399da4[_0x68ef('0x27')],'unmanaged':_0x399da4['unmanaged'],'abandoned':_0x399da4[_0x68ef('0x32')],'waiting':_0x399da4['waiting'],'loggedInDb':_0x399da4['loggedInDb'],'dialActive':_0x399da4['dialActive'],'dialMethod':_0x399da4[_0x68ef('0x33')],'dialOriginateCallerIdName':_0x399da4[_0x68ef('0x34')],'dialOriginateCallerIdNumber':_0x399da4[_0x68ef('0x35')],'dialOriginateTimeout':_0x399da4[_0x68ef('0x36')],'dialPrefix':_0x399da4['dialPrefix'],'outboundAnswerAgiCallsDay':_0x399da4['outboundAnswerAgiCallsDay'],'outboundAnswerCallsDay':_0x399da4[_0x68ef('0x37')],'outboundBlacklistCallsDay':_0x399da4[_0x68ef('0x38')],'outboundBusyCallsDay':_0x399da4[_0x68ef('0x39')],'outboundCongestionCallsDay':_0x399da4[_0x68ef('0x3a')],'outboundDropCallsDayACS':_0x399da4[_0x68ef('0x3b')],'outboundDropCallsDayCallersExit':_0x399da4[_0x68ef('0x3c')],'outboundDropCallsDayTimeout':_0x399da4[_0x68ef('0x3d')],'outboundNoAnswerCallsDay':_0x399da4[_0x68ef('0x3e')],'outboundNoSuchCallsDay':_0x399da4['outboundNoSuchCallsDay'],'outboundOriginateFailureCallsDay':_0x399da4[_0x68ef('0x3f')],'outboundReCallsDay':_0x399da4[_0x68ef('0x40')],'outboundRejectCallsDay':_0x399da4[_0x68ef('0x41')],'outboundUnknownCallsDay':_0x399da4['outboundUnknownCallsDay'],'outboundAbandonedCallsDay':_0x399da4[_0x68ef('0x42')],'predictiveIntervalAnsweredCalls':_0x399da4['predictiveIntervalAnsweredCalls'],'predictiveIntervalAvgHoldtime':_0x399da4[_0x68ef('0x43')],'predictiveIntervalAvgTalktime':_0x399da4[_0x68ef('0x44')],'predictiveIntervalDroppedCallsCallersExit':_0x399da4['predictiveIntervalDroppedCallsCallersExit'],'predictiveIntervalDroppedCallsTimeout':_0x399da4['predictiveIntervalDroppedCallsTimeout'],'predictiveIntervalErlangCalls':_0x399da4[_0x68ef('0x45')],'predictiveIntervalErlangCallsDroppedCalls':_0x399da4[_0x68ef('0x46')],'predictiveIntervalHitRate':_0x399da4['predictiveIntervalHitRate'],'predictiveIntervalMultiplicativeFactor':_0x399da4[_0x68ef('0x47')],'predictiveIntervalPauses':_0x399da4[_0x68ef('0x48')],'predictiveIntervalAvailable':_0x399da4[_0x68ef('0x49')],'predictiveIntervalTotalCalls':_0x399da4[_0x68ef('0x4a')],'message':_0x399da4['message'],'originated':_0x399da4[_0x68ef('0x4b')],'erlangCalls':_0x399da4[_0x68ef('0x4c')],'erlangCallToSecond':_0x399da4['erlangCallToSecond'],'erlangAbandonmentRate':_0x399da4[_0x68ef('0x4d')],'erlangBusyFactor':_0x399da4['erlangBusyFactor'],'startPredictive':_0x399da4[_0x68ef('0x4e')],'startProgressive':_0x399da4[_0x68ef('0x4f')]};if(_0x399da4['Trunk']){_0x5ddec7[_0x68ef('0x50')]={'id':_0x399da4['Trunk']['id'],'name':_0x399da4[_0x68ef('0x50')]['name'],'active':_0x399da4[_0x68ef('0x50')][_0x68ef('0x51')],'callerid':_0x399da4[_0x68ef('0x50')]['callerid']};}if(_0x399da4[_0x68ef('0x52')]){_0x5ddec7['Interval']={'id':_0x399da4[_0x68ef('0x52')]['id'],'name':_0x399da4['Interval'][_0x68ef('0x53')]};}var _0x362ef1=md5(JSON[_0x68ef('0x54')](_0x5ddec7));if(_0x399da4[_0x68ef('0x5')]!==_0x362ef1){_0x399da4[_0x68ef('0x5')]=_0x362ef1;emit(util[_0x68ef('0x55')]('voice:queue:%s',_0x5ddec7[_0x68ef('0x53')]),_0x68ef('0x56'),_0x5ddec7);}}}function emitVoiceQueueChannelRemove(_0x32074a){logger['info'](_0x68ef('0x57'),JSON[_0x68ef('0x54')](_0x32074a));emit(util[_0x68ef('0x55')]('voice:queue:%s',_0x32074a['name']),_0x68ef('0x58'),_0x32074a);io[_0x68ef('0x59')](_0x68ef('0x5a'),_0x32074a);}function notSendMessagesQueue(_0x42fc8c){if(_0x42fc8c[_0x68ef('0x5b')]){if(_0x42fc8c[_0x68ef('0x4b')]===0x0&&_0x42fc8c[_0x68ef('0x2c')]===0x0){_0x42fc8c['sendMessageOneNotActive']=![];_0x42fc8c[_0x68ef('0x2a')]=0x0;_0x42fc8c[_0x68ef('0x5c')]=0x0;_0x42fc8c[_0x68ef('0x5d')]=_0x68ef('0x5e');ut['logger'](_0x68ef('0x5f'),_0x42fc8c[_0x68ef('0x53')]+_0x68ef('0x60'));}else{_0x42fc8c[_0x68ef('0x5d')]=_0x68ef('0x61');ut[_0x68ef('0x62')]('[CampaignPreview]\x20Campaign\x20Queue:\x20',_0x42fc8c[_0x68ef('0x53')]+_0x68ef('0x63'));}emitCampaignPreview(_0x42fc8c);}}Preview[_0x68ef('0xf')][_0x68ef('0x26')]=function(){var _0x449f3c=this;setInterval(function(){_0x449f3c[_0x68ef('0x64')]();},0x7cf);};Preview[_0x68ef('0xf')][_0x68ef('0x64')]=function(){var _0xc687ab=this['campaignsPreview'];this[_0x68ef('0x18')]+=0x1;for(var _0x19d7a1 in _0xc687ab){if(_0xc687ab[_0x68ef('0x65')](_0x19d7a1)&&(_0xc687ab[_0x19d7a1][_0x68ef('0x33')]===_0x68ef('0x8')||_0xc687ab[_0x19d7a1][_0x68ef('0x33')]===_0x68ef('0x66'))&&_0xc687ab[_0x19d7a1]['type']===_0x68ef('0x28')){if(this['clockClearZombieChannels']>0x7){this[_0x68ef('0x18')]=0x0;this[_0x68ef('0x67')]();}}if(_0xc687ab[_0x68ef('0x65')](_0x19d7a1)&&_0xc687ab[_0x19d7a1][_0x68ef('0x33')]==='preview'&&_0xc687ab[_0x19d7a1][_0x68ef('0x27')]==='outbound'){if(_0xc687ab[_0x19d7a1][_0x68ef('0x68')]){this['setMessage'](_0xc687ab[_0x19d7a1]);if(_0xc687ab[_0x19d7a1][_0x68ef('0x69')])this[_0x68ef('0x6a')](_0xc687ab[_0x19d7a1]);}else{notSendMessagesQueue(_0xc687ab[_0x19d7a1]);}}}};Preview[_0x68ef('0xf')]['clearZombieChannel']=function(_0x59b148){var _0x4044d5=this;this[_0x68ef('0x6b')]['enqueue'](function(){if(!_['isNil'](_0x4044d5['actions'][_0x59b148])){loggerAction[_0x68ef('0x6c')](_0x68ef('0x6d'),_0x59b148,_0x68ef('0x6e'),_0x4044d5[_0x68ef('0x16')][_0x59b148][_0x68ef('0x6f')],'originated:\x20',JSON['stringify'](_0x4044d5[_0x68ef('0x13')][_0x4044d5[_0x68ef('0x16')][_0x59b148][_0x68ef('0x6f')]][_0x68ef('0x4b')]),'pTalking:\x20',JSON[_0x68ef('0x54')](_0x4044d5[_0x68ef('0x13')][_0x4044d5[_0x68ef('0x16')][_0x59b148][_0x68ef('0x6f')]]['pTalking']),JSON['stringify'](_0x4044d5[_0x68ef('0x16')][_0x59b148][_0x68ef('0x70')]),JSON['stringify'](_[_0x68ef('0x71')](_0x4044d5[_0x68ef('0x16')][_0x59b148],[_0x68ef('0x72'),_0x68ef('0x73'),_0x68ef('0x74'),'ListId'])));return ami[_0x68ef('0x75')]({'action':_0x68ef('0x76'),'channel':_0x4044d5[_0x68ef('0x16')][_0x59b148]['channel']})[_0x68ef('0x77')](function(_0x3e7e55){if(_0x3e7e55[_0x68ef('0x5d')]==='No\x20such\x20channel'){setTimeout(function(){if(_0x4044d5[_0x68ef('0x16')][_0x59b148]){ut['updateOriginated'](_0x4044d5['campaignsPreview'][_0x4044d5[_0x68ef('0x16')][_0x59b148]['queue']],_0x68ef('0x78'));if(_0x4044d5[_0x68ef('0x16')][_0x59b148][_0x68ef('0x70')]===!![]){ut[_0x68ef('0x79')](_0x4044d5[_0x68ef('0x13')][_0x4044d5[_0x68ef('0x16')][_0x59b148][_0x68ef('0x6f')]],_0x68ef('0x78'));ut[_0x68ef('0x7a')](_0x68ef('0x7b')+_0x59b148,_0x4044d5['actions'][_0x59b148]['queue']);}ut[_0x68ef('0x7a')](_0x68ef('0x7c')+_0x59b148,_0x4044d5[_0x68ef('0x16')][_0x59b148][_0x68ef('0x6f')]);delete _0x4044d5[_0x68ef('0x16')][_0x59b148];}},0x2328);}});}});};Preview[_0x68ef('0xf')][_0x68ef('0x67')]=function(){var _0x300a64=this;loggerAction[_0x68ef('0x6c')]('[action]',_['size'](this[_0x68ef('0x16')]));for(var _0x5781c8 in this[_0x68ef('0x16')]){if(_0x300a64['actions'][_0x68ef('0x65')](_0x5781c8)){_0x300a64[_0x68ef('0x7d')](_0x5781c8);}}};Preview['prototype'][_0x68ef('0x6a')]=function(_0x4e097e){var _0x407c6d=this;rpcDb[_0x68ef('0x7e')](_0x4e097e['id'],ut[_0x68ef('0x7f')](this[_0x68ef('0x17')]))[_0x68ef('0x80')](function(_0x3d81c8){if(!_['isNil'](_0x3d81c8)){for(var _0x1cdaef=0x0;_0x1cdaef<_0x3d81c8[_0x68ef('0x81')];_0x1cdaef+=0x1){if(ut[_0x68ef('0x82')](_0x3d81c8[_0x1cdaef][_0x68ef('0x83')])<_0x4e097e[_0x68ef('0x84')]*0x3c){if(_0x3d81c8[_0x1cdaef][_0x68ef('0x85')]&&!_0x3d81c8[_0x1cdaef]['Agent'][_0x68ef('0x86')]){_0x407c6d[_0x68ef('0x87')](_0x3d81c8[_0x1cdaef]['id'])['then'](ut[_0x68ef('0x88')](_0x68ef('0x89')))[_0x68ef('0x77')](ut['logger2'](_0x68ef('0x89')));}else{rpcDb['disableContact'](_0x3d81c8[_0x1cdaef]['id']);}}else{var _0x5412ea=new Action(_0x3d81c8[_0x1cdaef],_0x4e097e);_0x5412ea[_0x68ef('0x8a')]=moment()['format'](_0x68ef('0x8b'));_0x4e097e['outboundReCallsDay']+=0x1;ut[_0x68ef('0x8c')](_0x5412ea,0x17,_0x68ef('0x8d'));if(_0x4e097e[_0x68ef('0x8e')]){rpcDb[_0x68ef('0x8f')](ut[_0x68ef('0x90')](_0x3d81c8[_0x1cdaef]));rpcDb[_0x68ef('0x91')](_0x5412ea,'[HistoryDialRecallInQueue][historyCatch]');}else{ut[_0x68ef('0x8c')](_0x5412ea,0x16,'RecallFailedTimeout');rpcDb[_0x68ef('0x91')](_0x5412ea,'[HistoryRecallClose]');rpcDb[_0x68ef('0x92')](_0x5412ea,_0x68ef('0x93'));}}}}})[_0x68ef('0x77')](ut[_0x68ef('0x88')](_0x68ef('0x94')));};Preview[_0x68ef('0xf')][_0x68ef('0x95')]=function(_0x52d29a){_0x52d29a[_0x68ef('0x5b')]=!![];if(ut[_0x68ef('0x96')](_0x52d29a[_0x68ef('0x2b')])){_0x52d29a[_0x68ef('0x5d')]=_0x68ef('0x97');}else if(!ut['isActive'](_0x52d29a[_0x68ef('0x68')])){_0x52d29a['message']=_0x68ef('0x5e');}else if(!this['isTrunkReachable'](_0x52d29a['Trunk'])){if(!this[_0x68ef('0x98')](_0x52d29a[_0x68ef('0x99')])){_0x52d29a[_0x68ef('0x5d')]=_0x68ef('0x9a');}else{_0x52d29a['message']=_0x68ef('0x9b');}}else{_0x52d29a['message']=_0x68ef('0x9b');}emitCampaignPreview(_0x52d29a);};Preview[_0x68ef('0xf')][_0x68ef('0x9c')]=function(_0x49e5d4,_0x541e35,_0x3e74d2){var _0x1092f8=this;var _0x24d7f7=this[_0x68ef('0x16')][_0x541e35];var _0x5b41e1=this[_0x68ef('0x13')][_0x24d7f7[_0x68ef('0x6f')]];var _0x19c20f;if(_0x5b41e1){switch(_0x3e74d2){case'1':_0x5b41e1[_0x68ef('0x9d')]+=0x1;_0x24d7f7['countnosuchnumberretry']+=0x1;_0x24d7f7[_0x68ef('0x9e')]=ut['totalGlobal'](_0x24d7f7);ut[_0x68ef('0x8c')](_0x24d7f7,0x0,_0x68ef('0x9f'));ami[_0x68ef('0x59')](_0x68ef('0xa0'),ut[_0x68ef('0xa1')](_0x24d7f7,'nosuchnumber'));rpcDb[_0x68ef('0x91')](_0x24d7f7,_0x68ef('0xa2'));if(ut[_0x68ef('0xa3')](_0x24d7f7)>=_0x5b41e1['dialGlobalMaxRetry']){_0x19c20f=ut[_0x68ef('0xa4')](_0x24d7f7,0xf,'Global');rpcDb[_0x68ef('0x92')](_0x19c20f,'[callProgressDetectingCustomer][logNoSuchGlobal]');}else{if(_0x24d7f7['countnosuchnumberretry']>=_0x5b41e1[_0x68ef('0xa5')]){rpcDb[_0x68ef('0x92')](_0x24d7f7,_0x68ef('0xa6'));}else{rpcDb[_0x68ef('0xa7')](ut['scheduledAt'](_0x24d7f7,_0x68ef('0xa8'),_0x5b41e1[_0x68ef('0xa9')]),_0x24d7f7[_0x68ef('0xaa')],_0x24d7f7['activeContact']);}}delete this[_0x68ef('0x16')][_0x49e5d4[_0x68ef('0xab')]];break;case _0x68ef('0xac'):var _0x1cfb74=moment()[_0x68ef('0x55')](_0x68ef('0x8b'));_0x24d7f7[_0x68ef('0xad')]=_0x1cfb74;_0x24d7f7[_0x68ef('0xae')]=_0x1cfb74;_0x24d7f7[_0x68ef('0x70')]=!![];_0x5b41e1[_0x68ef('0x2c')]+=0x1;logger[_0x68ef('0x6c')](_0x68ef('0xaf'),_0x24d7f7['uniqueid'],_0x68ef('0xb0'),_0x5b41e1[_0x68ef('0x53')],'pTalking:\x20',_0x5b41e1['pTalking']);ami[_0x68ef('0x59')]('custom:agentconnect',ut[_0x68ef('0xa1')](_0x24d7f7,_0x68ef('0xb1'),this['campaignsPreview'][_0x24d7f7['queue']]));if(_0x5b41e1[_0x68ef('0xb2')]){ami['emit'](_0x68ef('0xb3'),ut['buildAcw'](_0x24d7f7));}break;case'16':ami[_0x68ef('0x59')]('custom:agentcomplete',ut[_0x68ef('0xa1')](_0x24d7f7,_0x68ef('0xb4'),this['campaignsPreview'][_0x24d7f7[_0x68ef('0x6f')]]));emitVoiceQueueChannelRemove(ut[_0x68ef('0xa1')](_0x24d7f7,_0x68ef('0xb4')));_0x5b41e1[_0x68ef('0x37')]+=0x1;_0x5b41e1['total']+=0x1;_0x5b41e1[_0x68ef('0x29')]+=0x1;ut[_0x68ef('0x79')](_0x5b41e1,'[16]');_0x24d7f7[_0x68ef('0x9e')]=ut[_0x68ef('0xa3')](_0x24d7f7);ut[_0x68ef('0x8c')](_0x24d7f7,0x4,'Answer');rpcDb[_0x68ef('0x91')](_0x24d7f7,'[callProgressDetectingCustomer][logAnswer]');rpcDb[_0x68ef('0x92')](_0x24d7f7,_0x68ef('0xb5'));rpcDb['crateCustomerReportQueue'](_0x24d7f7);_0x5b41e1['sumDuration']+=_0x24d7f7['talktime'];_0x5b41e1['sumBillable']+=_0x24d7f7[_0x68ef('0xb6')];logger[_0x68ef('0x6c')](_0x68ef('0xb7'),_0x24d7f7[_0x68ef('0xb8')],_0x68ef('0xb0'),_0x5b41e1[_0x68ef('0x53')],_0x68ef('0xb9'),_0x5b41e1[_0x68ef('0x2c')]);delete this[_0x68ef('0x16')][_0x49e5d4[_0x68ef('0xab')]];break;case _0x68ef('0xba'):_0x5b41e1[_0x68ef('0x39')]+=0x1;_0x24d7f7[_0x68ef('0xbb')]+=0x1;_0x24d7f7['countglobal']=ut[_0x68ef('0xa3')](_0x24d7f7);ut['logCustomer'](_0x24d7f7,0x5,_0x68ef('0xbc'));ami['emit']('custom:agentbusy',ut[_0x68ef('0xa1')](_0x24d7f7,_0x68ef('0xbd')));rpcDb[_0x68ef('0x91')](_0x24d7f7,_0x68ef('0xbe'));if(ut['totalGlobal'](_0x24d7f7)>=_0x5b41e1['dialGlobalMaxRetry']){_0x19c20f=ut[_0x68ef('0xa4')](_0x24d7f7,0xf,_0x68ef('0xbf'));rpcDb[_0x68ef('0x92')](_0x19c20f,'[callProgressDetectingCustomer][logBusyGlobal]');}else{if(_0x24d7f7[_0x68ef('0xbb')]>=_0x5b41e1[_0x68ef('0xc0')]){rpcDb[_0x68ef('0x92')](_0x24d7f7,_0x68ef('0xbe'));}else{rpcDb['rescheduleContact'](ut[_0x68ef('0xc1')](_0x24d7f7,_0x68ef('0xbb'),_0x5b41e1[_0x68ef('0xc2')]),_0x24d7f7[_0x68ef('0xaa')],_0x24d7f7[_0x68ef('0xc3')]);}}break;case _0x68ef('0xc4'):_0x5b41e1['outboundNoAnswerCallsDay']+=0x1;_0x24d7f7[_0x68ef('0xc5')]+=0x1;_0x24d7f7['countglobal']=ut[_0x68ef('0xa3')](_0x24d7f7);ut[_0x68ef('0x8c')](_0x24d7f7,0x3,_0x68ef('0xc6'));ami[_0x68ef('0x59')]('custom:agentnoanswer',ut[_0x68ef('0xa1')](_0x24d7f7,'noanswer'));rpcDb[_0x68ef('0x91')](_0x24d7f7,_0x68ef('0xc7'));if(ut['totalGlobal'](_0x24d7f7)>=_0x5b41e1['dialGlobalMaxRetry']){_0x19c20f=ut[_0x68ef('0xa4')](_0x24d7f7,0xf,'Global');rpcDb[_0x68ef('0x92')](_0x19c20f,'[callProgressDetectingCustomer][logNoAnswerGlobal]');}else{if(_0x24d7f7[_0x68ef('0xc5')]>=_0x5b41e1[_0x68ef('0xc8')]){rpcDb[_0x68ef('0x92')](_0x24d7f7,_0x68ef('0xc7'));}else{rpcDb[_0x68ef('0xa7')](ut[_0x68ef('0xc1')](_0x24d7f7,'countnoanswerretry',_0x5b41e1[_0x68ef('0xc9')]),_0x24d7f7[_0x68ef('0xaa')],_0x24d7f7[_0x68ef('0xc3')]);}}break;case _0x68ef('0xca'):_0x5b41e1[_0x68ef('0x3a')]+=0x1;_0x24d7f7[_0x68ef('0xcb')]+=0x1;_0x24d7f7[_0x68ef('0x9e')]=ut['totalGlobal'](_0x24d7f7);ut[_0x68ef('0x8c')](_0x24d7f7,0x8,_0x68ef('0xcc'));ami[_0x68ef('0x59')](_0x68ef('0xcd'),ut[_0x68ef('0xa1')](_0x24d7f7,_0x68ef('0xce')));rpcDb[_0x68ef('0x91')](_0x24d7f7,_0x68ef('0xcf'));if(ut[_0x68ef('0xa3')](_0x24d7f7)>=_0x5b41e1['dialGlobalMaxRetry']){_0x19c20f=ut[_0x68ef('0xa4')](_0x24d7f7,0xf,'Global');rpcDb['createCustomerFinal'](_0x19c20f,'[callProgressDetectingCustomer][logCongestionGlobal]');}else{if(_0x24d7f7[_0x68ef('0xcb')]>=_0x5b41e1[_0x68ef('0xd0')]){rpcDb[_0x68ef('0x92')](_0x24d7f7,'[callProgressDetectingCustomer][logCongestion]');}else{rpcDb['rescheduleContact'](ut['scheduledAt'](_0x24d7f7,_0x68ef('0xcb'),_0x5b41e1[_0x68ef('0xc2')]),_0x24d7f7[_0x68ef('0xaa')],_0x24d7f7[_0x68ef('0xc3')]);}}break;case _0x68ef('0xd1'):_0x5b41e1[_0x68ef('0x41')]+=0x1;_0x24d7f7['countagentrejectretry']+=0x1;_0x24d7f7[_0x68ef('0x9e')]=ut[_0x68ef('0xa3')](_0x24d7f7);ut[_0x68ef('0x8c')](_0x24d7f7,0x14,_0x68ef('0xd2'));ami['emit'](_0x68ef('0xd3'),ut[_0x68ef('0xa1')](_0x24d7f7,_0x68ef('0xd4')));rpcDb[_0x68ef('0x91')](_0x24d7f7,_0x68ef('0xd5'));if(ut[_0x68ef('0xa3')](_0x24d7f7)>=_0x5b41e1[_0x68ef('0xd6')]){_0x19c20f=ut[_0x68ef('0xa4')](_0x24d7f7,0x14,'AgentReject');rpcDb[_0x68ef('0x92')](_0x19c20f,_0x68ef('0xd7'));}else{if(_0x24d7f7['countagentrejectretry']>=_0x5b41e1[_0x68ef('0xd8')]){rpcDb[_0x68ef('0x92')](_0x24d7f7,_0x68ef('0xd7'));}else{rpcDb[_0x68ef('0xa7')](ut[_0x68ef('0xc1')](_0x24d7f7,_0x68ef('0xd9'),_0x5b41e1[_0x68ef('0xda')]),_0x24d7f7[_0x68ef('0xaa')],_0x24d7f7[_0x68ef('0xc3')]);}}break;case _0x68ef('0xdb'):_0x5b41e1[_0x68ef('0x42')]+=0x1;_0x24d7f7[_0x68ef('0xdc')]+=0x1;_0x24d7f7[_0x68ef('0x9e')]=ut[_0x68ef('0xa3')](_0x24d7f7);ut[_0x68ef('0x8c')](_0x24d7f7,0xb,_0x68ef('0xdd'));rpcDb[_0x68ef('0x91')](_0x24d7f7,_0x68ef('0xde'));if(ut['totalGlobal'](_0x24d7f7)>=_0x5b41e1[_0x68ef('0xd6')]){_0x19c20f=ut[_0x68ef('0xa4')](_0x24d7f7,0xf,_0x68ef('0xbf'));rpcDb[_0x68ef('0x92')](_0x19c20f,_0x68ef('0xde'));}else{if(_0x24d7f7['countabandonedetry']>=_0x5b41e1[_0x68ef('0xdf')]){rpcDb[_0x68ef('0x92')](_0x24d7f7,'[callProgressDetectingCustomer][logAbandoned]');}else{rpcDb[_0x68ef('0xa7')](ut['scheduledAt'](_0x24d7f7,'countabandonedretry',_0x5b41e1['dialAbandonedRetryFrequency']),_0x24d7f7['unlockAgent'],_0x24d7f7[_0x68ef('0xc3')]);}}break;case'18':_0x5b41e1['outboundUnknownCallsDay']+=0x1;_0x24d7f7[_0x68ef('0xe0')]+=0x1;_0x24d7f7['countglobal']=ut['totalGlobal'](_0x24d7f7);ut['logCustomer'](_0x24d7f7,0x12,_0x49e5d4[_0x68ef('0xe1')]||_0x49e5d4[_0x68ef('0xe2')]);ami[_0x68ef('0x59')](_0x68ef('0xe3'),ut[_0x68ef('0xa1')](_0x24d7f7,'amd'));rpcDb[_0x68ef('0x91')](_0x24d7f7,_0x68ef('0xe4'));if(ut[_0x68ef('0xa3')](_0x24d7f7)>=_0x5b41e1[_0x68ef('0xd6')]){_0x19c20f=ut['cloneAction'](_0x24d7f7,0xf,_0x68ef('0xbf'));rpcDb['createCustomerFinal'](_0x19c20f,'[callProgressDetectingCustomer][hangupInAMD]');}else{rpcDb['createCustomerFinal'](_0x24d7f7,_0x68ef('0xe4'));}delete this[_0x68ef('0x16')][_0x49e5d4[_0x68ef('0xab')]];break;case'19':_0x5b41e1[_0x68ef('0xe5')]+=0x1;_0x24d7f7[_0x68ef('0x9e')]=ut[_0x68ef('0xa3')](_0x24d7f7);ut[_0x68ef('0x8c')](_0x24d7f7,0x13,_0x49e5d4[_0x68ef('0xe1')]||_0x49e5d4[_0x68ef('0xe2')]);ami[_0x68ef('0x59')](_0x68ef('0xe3'),ut[_0x68ef('0xa1')](_0x24d7f7,'amd'));rpcDb['createCustomerHistory'](_0x24d7f7,'[callProgressDetectingCustomer][machine]');if(ut[_0x68ef('0xa3')](_0x24d7f7)>=_0x5b41e1[_0x68ef('0xd6')]){_0x19c20f=ut[_0x68ef('0xa4')](_0x24d7f7,0xf,'Global');rpcDb[_0x68ef('0x92')](_0x19c20f,'[callProgressDetectingCustomer][machine]');}else{rpcDb[_0x68ef('0x92')](_0x24d7f7,_0x68ef('0xe6'));}delete this[_0x68ef('0x16')][_0x49e5d4['linkedid']];break;default:if(_0x24d7f7[_0x68ef('0x70')]){ut[_0x68ef('0x79')](_0x5b41e1,'[default]');ut[_0x68ef('0x7a')](_0x68ef('0xe7')+_0x5b41e1[_0x68ef('0x53')],_0x49e5d4);}_0x5b41e1[_0x68ef('0xe5')]+=0x1;_0x24d7f7[_0x68ef('0x9e')]=ut[_0x68ef('0xa3')](_0x24d7f7);ut[_0x68ef('0x8c')](_0x24d7f7,0xc,_0x49e5d4['cause-txt']||_0x49e5d4[_0x68ef('0xe2')]);rpcDb[_0x68ef('0x91')](_0x24d7f7,_0x68ef('0xe8'));if(ut[_0x68ef('0xa3')](_0x24d7f7)>=_0x5b41e1[_0x68ef('0xd6')]){_0x19c20f=ut[_0x68ef('0xa4')](_0x24d7f7,0xf,_0x68ef('0xbf'));rpcDb[_0x68ef('0x92')](_0x19c20f,_0x68ef('0xe9'));}else{rpcDb[_0x68ef('0x92')](_0x24d7f7,'[callProgressDetectingCustomer][logUnknownGlobal]');}delete this['actions'][_0x49e5d4[_0x68ef('0xab')]];}if(!(_0x24d7f7['dialAnswer']&&_0x3e74d2==='16')){ut[_0x68ef('0xea')](_0x5b41e1,_0x68ef('0xeb'));logger[_0x68ef('0x6c')](_0x68ef('0xec'),_0x24d7f7[_0x68ef('0xb8')],'\x20Queue',_0x5b41e1[_0x68ef('0x53')],_0x68ef('0xed'),_0x5b41e1[_0x68ef('0x4b')]);}if(_0x3e74d2!==_0x68ef('0xac')){delete this['actions'][_0x49e5d4['linkedid']];delete this[_0x68ef('0x16')][_0x49e5d4[_0x68ef('0xee')]];}}};Preview[_0x68ef('0xf')][_0x68ef('0xef')]=function(_0x1914e9,_0x27d5b6,_0x20362d){if(_[_0x68ef('0xf0')](_0x27d5b6)&&_0x68ef('0xf1')!==typeof _0x27d5b6){return;}if(_[_0x68ef('0xf0')](_0x20362d)&&_0x68ef('0xf1')!==typeof _0x20362d){return;}switch(_0x20362d['reason']){case'0':ut[_0x68ef('0xf2')](_0x1914e9,0x0,_0x68ef('0x9f'));rpcDb[_0x68ef('0xf3')](_0x1914e9,_0x68ef('0xf4'));break;case'3':ut[_0x68ef('0xf2')](_0x1914e9,0x3,_0x68ef('0xc6'));rpcDb[_0x68ef('0xf3')](_0x1914e9,_0x68ef('0xf5'));break;case'5':ut[_0x68ef('0xf2')](_0x1914e9,0x5,_0x68ef('0xbc'));rpcDb['createAgentHistory'](_0x1914e9,'[callProgressDetectingAgent][logBusy]');break;case'8':ut[_0x68ef('0xf2')](_0x1914e9,0x8,_0x68ef('0xcc'));rpcDb[_0x68ef('0xf3')](_0x1914e9,_0x68ef('0xf6'));break;case'22':ut[_0x68ef('0xf2')](_0x1914e9,0x16,_0x68ef('0xf7'));rpcDb[_0x68ef('0xf3')](_0x1914e9,'[callProgressDetectingAgent][logAnswerAGI]');break;default:ut[_0x68ef('0xf2')](_0x1914e9,0xc,_0x20362d[_0x68ef('0xf8')]);rpcDb[_0x68ef('0xf3')](_0x1914e9,_0x68ef('0xf6'));}ut['updateOriginated'](_0x27d5b6,_0x68ef('0xf9'));logger['info'](_0x68ef('0xfa'),_0x1914e9[_0x68ef('0xb8')],_0x68ef('0xb0'),_0x27d5b6['name'],'originated:\x20',_0x27d5b6[_0x68ef('0x4b')]);delete this['actions'][_0x1914e9[_0x68ef('0xb8')]];};Preview['prototype'][_0x68ef('0xfb')]=function(_0x426274,_0x5aa4a2,_0x4a172f,_0x3604b1,_0x1d429a){var _0x4d96a9=this;return new BPromise(function(_0xf9f2c4,_0x4a9167){if(_[_0x68ef('0xfc')](_0x5aa4a2)||_['isNil'](_0x5aa4a2['Contact'])||_[_0x68ef('0xfc')](_0x5aa4a2['Contact'][_0x68ef('0xfd')])||_[_0x68ef('0xfc')](_0x5aa4a2[_0x68ef('0x74')])){_0x4a9167(ut[_0x68ef('0x5d')](_0x68ef('0xfe'),_0x3604b1,_0x1d429a));return;}var _0x7b382e=uuid['v4']();var _0x54ccfe=_0x4d96a9['campaignsPreview'][_0x5aa4a2[_0x68ef('0x6e')][_0x68ef('0x53')]];var _0x8eb711=_0x4a172f?_0x4d96a9[_0x68ef('0x17')][_0x4a172f]['id']:undefined;_0x4d96a9[_0x68ef('0x16')][_0x7b382e]=new Action(_0x5aa4a2,_0x54ccfe,_0x7b382e,_0x4a172f,_0x8eb711);var _0x4929ee=_0x4d96a9[_0x68ef('0x16')][_0x7b382e];_0x4929ee[_0x68ef('0xaa')]=_0x3604b1;_0x4929ee[_0x68ef('0xc3')]=_0x1d429a;_0x4929ee[_0x68ef('0xff')]=_0x4a172f;if(_[_0x68ef('0x100')](_0x426274)){_0x4d96a9[_0x68ef('0x101')](_0x4929ee,_0x54ccfe,_0x5aa4a2,_0x4a172f)[_0x68ef('0x80')](function(_0xd6e356){logger['info'](_0x68ef('0x102'),_0x68ef('0x103')+_0x4929ee[_0x68ef('0x6f')]+_0x68ef('0x104')+_0x4929ee[_0x68ef('0x105')],JSON[_0x68ef('0x54')](_0xd6e356));ami['emit'](_0x68ef('0x106'),ut[_0x68ef('0xa1')](_0x4929ee,_0x68ef('0x107'),_0x4d96a9[_0x68ef('0x13')][_0x4929ee[_0x68ef('0x6f')]]));_0xf9f2c4(ut['message'](_0x68ef('0x108')));})[_0x68ef('0x77')](function(_0x5d156e){ut['logger'](_0x68ef('0x109'),_0x5d156e);_0x4a9167(ut[_0x68ef('0x5d')](_0x68ef('0x10a'),_0x3604b1,_0x1d429a));});}else{_0x54ccfe['outboundBlacklistCallsDay']+=0x1;ut['logBlacklist'](_0x4929ee);rpcDb[_0x68ef('0x10b')](_0x4929ee,_0x68ef('0x10c'));delete _0x4d96a9[_0x68ef('0x16')][_0x7b382e];_0x4a9167(ut[_0x68ef('0x5d')](_0x68ef('0x10d'),_0x3604b1,_0x1d429a));}});};Preview[_0x68ef('0xf')][_0x68ef('0x98')]=function(_0x1dd16e){return!_[_0x68ef('0xfc')](_0x1dd16e)&&!_[_0x68ef('0xfc')](_0x1dd16e[_0x68ef('0x53')])&&!_[_0x68ef('0xfc')](_0x1dd16e[_0x68ef('0x51')])&&_0x1dd16e[_0x68ef('0x51')]&&!_['isNil'](this['trunks'][util[_0x68ef('0x55')](_0x68ef('0x10e'),_0x1dd16e[_0x68ef('0x53')])])&&!_[_0x68ef('0xfc')](this['trunks'][util[_0x68ef('0x55')](_0x68ef('0x10e'),_0x1dd16e['name'])]['status'])&&(this[_0x68ef('0x15')][util[_0x68ef('0x55')](_0x68ef('0x10e'),_0x1dd16e['name'])][_0x68ef('0x76')]===_0x68ef('0x10f')||this[_0x68ef('0x15')][util['format'](_0x68ef('0x10e'),_0x1dd16e['name'])][_0x68ef('0x76')]===_0x68ef('0x110'));};Preview['prototype'][_0x68ef('0x87')]=function(_0xc24c31,_0x298127){var _0x46af0e=this;return new BPromise(function(_0x35f8c9,_0x196260){_0x46af0e[_0x68ef('0x111')](_0xc24c31,_0x298127)[_0x68ef('0x80')](function(_0xdd801b){_0x35f8c9(_['pick'](_0xdd801b,[_0x68ef('0x5d')]));})[_0x68ef('0x77')](function(_0x12e03f){if(_0x12e03f[_0x68ef('0x112')]){rpcDb[_0x68ef('0x113')](_0xc24c31);}if(_0x12e03f[_0x68ef('0x51')]){rpcDb[_0x68ef('0x114')](_0xc24c31);}_0x196260(_['pick'](_0x12e03f,['message']));});});};Preview[_0x68ef('0xf')]['execRun']=function(_0x11fba7,_0x158e68){var _0xb4e6ea=this;return new BPromise(function(_0x4762db,_0x52d821){var _0x728df1,_0x3d51f0;rpcDb[_0x68ef('0x115')](_0x11fba7)['then'](function(_0xe18083){if(!_[_0x68ef('0xfc')](_0xe18083[0x0])){_0x3d51f0=_0xe18083[0x0]['recallme']?![]:!![];_0x728df1=_0xe18083[0x0][_0x68ef('0x116')]?!![]:![];_0x728df1=_0x158e68?!![]:_0x728df1;}var _0x117233=_0xb4e6ea['validateContact'](_0xe18083);if(_0x117233['isValid']){rpcDb['checkIsBlackList'](_[_0x68ef('0x71')](_0xe18083[0x0],[_0x68ef('0x74'),_0x68ef('0x117')]))[_0x68ef('0x80')](function(_0xd4e347){_0xb4e6ea[_0x68ef('0xfb')](_0xd4e347,_0xe18083[0x0],_0x158e68,_0x3d51f0,_0x728df1)[_0x68ef('0x80')](function(_0x31c252){_0x4762db(_0x31c252);})[_0x68ef('0x77')](function(_0x4b393e){_0x52d821(_0x4b393e);});})[_0x68ef('0x77')](function(_0x62a830){ut['logger'](_0x68ef('0x118'),_0x62a830);_0x52d821(ut[_0x68ef('0x5d')](_0x68ef('0x119'),_0x3d51f0,_0x728df1));});}else{_0x52d821(ut['message'](_0x117233[_0x68ef('0x5d')],_0x3d51f0,_0x728df1));}})['catch'](function(_0x4649f9){ut[_0x68ef('0x62')](_0x68ef('0x11a'),_0x4649f9);_0x52d821(ut[_0x68ef('0x5d')](_0x68ef('0x119'),![],!![]));});});};Preview[_0x68ef('0xf')][_0x68ef('0x11b')]=function(_0x3385ec){if(_['isNil'](_0x3385ec)||_[_0x68ef('0x100')](_0x3385ec)||!_[_0x68ef('0xfc')](_0x3385ec[0x0]['Agent'])&&_[_0x68ef('0xfc')](_0x3385ec[0x0][_0x68ef('0x85')][_0x68ef('0x53')])){ut[_0x68ef('0x62')](_0x68ef('0x11c'),_0x3385ec);return{'isValid':![],'message':'Empty\x20Contact'};}var _0x1c4847=this[_0x68ef('0x13')][_0x3385ec[0x0][_0x68ef('0x6e')][_0x68ef('0x53')]];_0x1c4847[_0x68ef('0x5d')]='ACTIVE';if(_[_0x68ef('0xfc')](_0x1c4847)){ut['logger']('[Preview][validateContact][Empty\x20Campaign]',_0x1c4847);return{'isValid':![],'message':_0x68ef('0x11d')};}if(!this[_0x68ef('0x98')](_0x1c4847[_0x68ef('0x50')])){ut[_0x68ef('0x62')](_0x68ef('0x11e'),_0x68ef('0x11f')+_0x1c4847[_0x68ef('0x53')]+_0x68ef('0x120'));if(!this['isTrunkReachable'](_0x1c4847[_0x68ef('0x99')])){ut[_0x68ef('0x62')](_0x68ef('0x11e'),_0x1c4847[_0x68ef('0x53')]+_0x68ef('0x121'));return{'isValid':![],'message':_0x68ef('0x122')};}}if(!ut[_0x68ef('0x123')](_0x1c4847[_0x68ef('0x68')])){ut[_0x68ef('0x62')](_0x68ef('0x124'),_0x1c4847[_0x68ef('0x53')]+_0x68ef('0x125'));return{'isValid':![],'message':'campaign\x20Name:\x20'+_0x1c4847[_0x68ef('0x53')]+_0x68ef('0x125')};}return{'isValid':!![],'message':_0x68ef('0x126')};};Preview[_0x68ef('0xf')]['execCall']=function(_0xc5163d,_0xb342e5,_0x1917bb,_0x5a91a7){var _0x13ddbb=this;return new BPromise(function(_0x52043b,_0x184cda){var _0xd4a6c1=_0xc5163d[_0x68ef('0xb8')];var _0x1aa045=_0x13ddbb[_0x68ef('0x98')](_0xb342e5['Trunk'])?util['format']('SIP/%s/%s%s',_0xb342e5[_0x68ef('0x50')][_0x68ef('0x53')],_['isNil'](_0xb342e5[_0x68ef('0x127')])?'':_0xb342e5[_0x68ef('0x127')][_0x68ef('0x128')]()||'',_0xb342e5[_0x68ef('0x129')]>0x0?_0x1917bb[_0x68ef('0x12a')][_0x68ef('0xfd')][_0x68ef('0x12b')](_0xb342e5[_0x68ef('0x129')]):_0x1917bb[_0x68ef('0x12a')][_0x68ef('0xfd')]):util[_0x68ef('0x55')](_0x68ef('0x12c'),_[_0x68ef('0xfc')](_0xb342e5[_0x68ef('0x99')])?_0xb342e5[_0x68ef('0x50')][_0x68ef('0x53')]:_0xb342e5['TrunkBackup'][_0x68ef('0x53')],_[_0x68ef('0xfc')](_0xb342e5['dialPrefix'])?'':_0xb342e5[_0x68ef('0x127')][_0x68ef('0x128')]()||'',_0xb342e5[_0x68ef('0x129')]>0x0?_0x1917bb[_0x68ef('0x12a')][_0x68ef('0xfd')][_0x68ef('0x12b')](_0xb342e5[_0x68ef('0x129')]):_0x1917bb['Contact']['phone']);var _0xc0a464=_0x13ddbb[_0x68ef('0x98')](_0xb342e5['Trunk'])?ut[_0x68ef('0x12d')](_0xb342e5['Trunk'][_0x68ef('0x12e')],_0xb342e5['dialOriginateCallerIdName'],_0xb342e5[_0x68ef('0x12f')]>0x0?ut[_0x68ef('0x130')](_0xb342e5[_0x68ef('0x35')],_0xb342e5[_0x68ef('0x12f')]):_0xb342e5[_0x68ef('0x35')]):ut[_0x68ef('0x12d')](_[_0x68ef('0xfc')](_0xb342e5[_0x68ef('0x99')])?_0xb342e5['Trunk'][_0x68ef('0x12e')]:_0xb342e5[_0x68ef('0x99')][_0x68ef('0x12e')],_0xb342e5[_0x68ef('0x34')],_0xb342e5[_0x68ef('0x12f')]>0x0?ut[_0x68ef('0x130')](_0xb342e5[_0x68ef('0x35')],_0xb342e5[_0x68ef('0x12f')]):_0xb342e5[_0x68ef('0x35')]);if(_0xc0a464){_0xc5163d['originatecalleridname']=ut[_0x68ef('0x131')](_0xc0a464);_0xc5163d[_0x68ef('0x132')]=ut[_0x68ef('0x133')](_0xc0a464);}var _0x552097=ut[_0x68ef('0x134')](_0xb342e5,_0x1917bb,_0x1aa045,_0xc0a464,_0xd4a6c1,_0xc5163d);_[_0x68ef('0x135')](_0xc5163d,ut[_0x68ef('0x136')](_0x552097));_0xc5163d[_0x68ef('0x8a')]=moment()[_0x68ef('0x55')](_0x68ef('0x8b'));ami[_0x68ef('0x75')](ut[_0x68ef('0x137')](_0xc5163d,_0xb342e5,_0x552097,_0xc5163d[_0x68ef('0xc3')],_0x5a91a7))[_0x68ef('0x80')](function(_0x283d63){_0xb342e5[_0x68ef('0x4b')]+=0x1;logger[_0x68ef('0x6c')](_0x68ef('0x138'),_0xd4a6c1,_0x68ef('0xb0'),_0xb342e5['name'],_0x68ef('0xed'),_0xb342e5[_0x68ef('0x4b')]);_0x52043b(_0x283d63);})['catch'](function(_0x1e26d1){ut['logAgent'](_0xc5163d,0xe,_0x68ef('0x139'));rpcDb[_0x68ef('0xf3')](_0xc5163d,_0x68ef('0x13a'));_0x184cda(_0x1e26d1);});});};Preview[_0x68ef('0xf')][_0x68ef('0x13b')]=function(_0x76232b){if(this[_0x68ef('0x16')][_0x76232b[_0x68ef('0xab')]]){this[_0x68ef('0x16')][_0x76232b[_0x68ef('0xab')]][_0x68ef('0x13c')]=_0x76232b[_0x68ef('0x13c')];}};Preview[_0x68ef('0xf')]['syncOriginateResponse']=function(_0x272060){var _0x2a7802=this;var _0x2cf7d3=this[_0x68ef('0x16')][_0x272060['actionid']];if(_0x2cf7d3){if(_0x2cf7d3[_0x68ef('0xff')]&&this[_0x68ef('0x17')][_0x2cf7d3[_0x68ef('0xff')]]){ut['logLookAgent'](_0x2cf7d3,this[_0x68ef('0x17')][_0x2cf7d3[_0x68ef('0xff')]][_0x68ef('0x53')],this[_0x68ef('0x17')][_0x2cf7d3[_0x68ef('0xff')]]['id']);}var _0x2a5f7e=_[_0x68ef('0x13d')](_0x2cf7d3);_0x2a5f7e['responsetime']=moment()['format'](_0x68ef('0x8b'));var _0x1600cc=_0x2a7802['campaignsPreview'][_0x2cf7d3['queue']];if(ut[_0x68ef('0x13e')](_0x272060[_0x68ef('0x13f')])){if(_0x2cf7d3[_0x68ef('0xaa')]){rpcDb[_0x68ef('0x113')](_0x2cf7d3[_0x68ef('0x105')]);}if(_0x2cf7d3[_0x68ef('0xc3')]){rpcDb[_0x68ef('0x114')](_0x2cf7d3[_0x68ef('0x105')]);}ami['emit']('custom:agentringnoanswer',ut[_0x68ef('0xa1')](_0x2cf7d3,_0x68ef('0x140'),this[_0x68ef('0x13')][_0x2cf7d3['queue']]));this[_0x68ef('0xef')](_0x2a5f7e,_0x1600cc,_0x272060);}else{_0x2cf7d3[_0x68ef('0x8a')]=moment()[_0x68ef('0x55')](_0x68ef('0x8b'));ut['logAgent'](_0x2a5f7e,0x4,'Answer');rpcDb[_0x68ef('0xf3')](_0x2a5f7e,_0x68ef('0x141'));}}};Preview[_0x68ef('0xf')]['syncHangup']=function(_0x1b507e){var _0x31219b=this;var _0x1745d3=this[_0x68ef('0x16')][_0x1b507e[_0x68ef('0xab')]];var _0x155d16;if(_0x1745d3){_0x155d16=this[_0x68ef('0x13')][_0x1745d3[_0x68ef('0x6f')]];logger[_0x68ef('0x6c')]('[syncHangup][talking]',_0x1b507e[_0x68ef('0xab')],_0x68ef('0xb0'),_0x155d16['name'],_0x68ef('0xb9'),_0x155d16[_0x68ef('0x2c')]);}if(this[_0x68ef('0x16')][_0x1b507e[_0x68ef('0xab')]]&&_0x1b507e['linkedid']!==_0x1b507e[_0x68ef('0xb8')]){if(_0x1b507e[_0x68ef('0x142')]==='16'&&this[_0x68ef('0x16')][_0x1b507e['linkedid']][_0x68ef('0x70')]){this['callProgressDetectingCustomer'](_0x1b507e,_0x1b507e['linkedid'],_0x1b507e['cause']);}else if(this[_0x68ef('0x16')][_0x1b507e[_0x68ef('0xab')]]['dialAnswer']){logger[_0x68ef('0x6c')]('[syncHangup][talking][cause]',_0x1b507e['linkedid'],_0x1b507e[_0x68ef('0x142')],_0x68ef('0xb0'),_0x155d16[_0x68ef('0x53')],_0x68ef('0xb9'),_0x155d16[_0x68ef('0x2c')]);this[_0x68ef('0x9c')](_0x1b507e,_0x1b507e[_0x68ef('0xab')],_0x1b507e[_0x68ef('0x142')]);}}else if(_0x1745d3&&_[_0x68ef('0xfc')](_0x1745d3[_0x68ef('0x143')])&&_0x155d16[_0x68ef('0x144')]&&_0x1b507e['linkedid']===_0x1b507e[_0x68ef('0xb8')]&&_[_0x68ef('0xfc')](_0x1b507e['reason'])&&_0x1b507e[_0x68ef('0x142')]==='16'&&_0x1b507e['channelstate']==='6'&&_[_0x68ef('0xf0')](_0x1745d3[_0x68ef('0x145')])){if(_0x1745d3[_0x68ef('0xaa')]){rpcDb['unlockContact'](_0x1745d3[_0x68ef('0x105')]);}if(_0x1745d3[_0x68ef('0xc3')]){rpcDb[_0x68ef('0x114')](_0x1745d3[_0x68ef('0x105')]);}_0x1b507e[_0x68ef('0xf8')]='22';this[_0x68ef('0xef')](_0x1745d3,_0x155d16,_0x1b507e);}else if(_0x1745d3&&_0x1745d3['transfer']){if(_0x1b507e['cause']==='16'&&this[_0x68ef('0x16')][_0x1b507e['linkedid']][_0x68ef('0x70')]){logger[_0x68ef('0x6c')](_0x68ef('0x146'),_0x1b507e[_0x68ef('0xab')],_0x1b507e[_0x68ef('0x142')],_0x68ef('0xb0'),_0x155d16[_0x68ef('0x53')],_0x68ef('0xb9'),_0x155d16['pTalking']);this[_0x68ef('0x9c')](_0x1b507e,_0x1b507e[_0x68ef('0xab')],_0x1b507e[_0x68ef('0x142')]);}else if(this['actions'][_0x1b507e[_0x68ef('0xab')]][_0x68ef('0x70')]){logger[_0x68ef('0x6c')](_0x68ef('0x147'),_0x1b507e[_0x68ef('0xab')],_0x1b507e[_0x68ef('0x142')],_0x68ef('0xb0'),_0x155d16[_0x68ef('0x53')],_0x68ef('0xb9'),_0x155d16['pTalking']);this['callProgressDetectingCustomer'](_0x1b507e,_0x1b507e[_0x68ef('0xab')],_0x1b507e[_0x68ef('0x142')]);}}};Preview['prototype'][_0x68ef('0x20')]=function(_0x39a89c){if(this['actions'][_0x39a89c['destlinkedid']]&&_0x39a89c['destlinkedid']!==_0x39a89c['destuniqueid']){this[_0x68ef('0x9c')](_0x39a89c,_0x39a89c['destlinkedid'],_0x39a89c[_0x68ef('0xe2')]);}};Preview['prototype'][_0x68ef('0x1e')]=function(_0x3d8eac){if(this['actions'][_0x3d8eac['linkedid']]&&_0x3d8eac['linkedid']!==_0x3d8eac[_0x68ef('0xb8')]&&!this[_0x68ef('0x16')][_0x3d8eac[_0x68ef('0xab')]]['dialAnswer']){if(_0x3d8eac[_0x68ef('0x142')]==='1'){this['callProgressDetectingCustomer'](_0x3d8eac,_0x3d8eac[_0x68ef('0xab')],_0x3d8eac['cause']);}}};Preview[_0x68ef('0xf')][_0x68ef('0x148')]=function(_0x35db11,_0x3909b1,_0x28c251){if(this[_0x68ef('0x16')][_0x35db11]){if(_[_0x68ef('0xfc')](this['actions'][_0x35db11][_0x68ef('0x149')])){this[_0x68ef('0x16')][_0x35db11][_0x68ef('0x149')]={};}this[_0x68ef('0x16')][_0x35db11][_0x68ef('0x149')][_0x3909b1]=_0x28c251;}};Preview[_0x68ef('0xf')][_0x68ef('0x23')]=function(_0x4bf1d7){try{if(!_[_0x68ef('0xfc')](_0x4bf1d7)){if(ut[_0x68ef('0x14a')](_[_0x68ef('0x14b')](_0x4bf1d7[_0x68ef('0x14c')])[0x0])){this[_0x68ef('0x148')](_0x4bf1d7[_0x68ef('0xb8')],_[_0x68ef('0x14b')](_0x4bf1d7[_0x68ef('0x14c')])[0x0],_0x4bf1d7[_0x68ef('0x14d')]);}}}catch(_0x40da26){logger[_0x68ef('0x14e')](_0x68ef('0x14f'),util['inspect'](_0x40da26,{'showHidden':![],'depth':null}));}};Preview[_0x68ef('0xf')][_0x68ef('0x24')]=function(_0x2ea696){if(_0x2ea696){if(this[_0x68ef('0x16')][_0x2ea696['transfertargetlinkedid']]){this['actions'][_0x2ea696['transfertargetlinkedid']][_0x68ef('0x145')]=!![];}}};Preview[_0x68ef('0xf')][_0x68ef('0x150')]=function(_0x2d7ff2){if(_0x2d7ff2){if(this['actions'][_0x2d7ff2['transfererlinkedid']]){this['actions'][_0x2d7ff2[_0x68ef('0x151')]][_0x68ef('0x145')]=!![];}}};module[_0x68ef('0x152')]=Preview;
\ No newline at end of file
index 14bc3dc..1222cbc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x92e1=['bluebird','../../../config/logger','preview','../rpc/cmHopper','../rpc/cmHopperFinal','../rpc/cmHopperBlack','../rpc/voiceQueueRt','error','inspect','resolve','then','createHistory','[createHistory]\x20','catch','[moveContactManagedDialer]\x20','checkIsBlackList','getContactPreview','createAgentHistory','createCustomerFinal','rescheduleContact','UserId','active','countReScheduled','[countReScheduled]\x20','unlockContact','[unlockContact]\x20','disableContact','crateCustomerReportQueue','type','uniqueid','calleridnum','calleridname','queue','queuecallerjoinAt','answertime','queuecallerleaveAt','queuecallercomplete','queuecallercompleteAt','endtime','connectedlinename','context','xcally-motion-preview','holdtime','assigned','membername','queuecallerexitreason','COMPLETED','create','[voiceQueueReport]\x20','getContactRecallMe','rescheduleContactInQueue','[rescheduleContactInQueue]\x20','util'];(function(_0x554663,_0x56821a){var _0x3b111e=function(_0x3740bf){while(--_0x3740bf){_0x554663['push'](_0x554663['shift']());}};_0x3b111e(++_0x56821a);}(_0x92e1,0x9e));var _0x192e=function(_0x2faddb,_0xc18b78){_0x2faddb=_0x2faddb-0x0;var _0x273c05=_0x92e1[_0x2faddb];return _0x273c05;};'use strict';var util=require(_0x192e('0x0'));var BPromise=require(_0x192e('0x1'));var logger=require(_0x192e('0x2'))(_0x192e('0x3'));var _=require('lodash');var cmHopper=require(_0x192e('0x4'));var cmHopperFinal=require(_0x192e('0x5'));var cmHopperHistory=require('../rpc/cmHopperHistory');var cmHopperBlack=require(_0x192e('0x6'));var voiceQueueRt=require(_0x192e('0x7'));var agentReportPreview=require('../rpc/agentReportPreview');var voiceQueueReport=require('../rpc/voiceQueueReport');function loggerCatch(_0xd4e12f){return function(_0x2c0090){logger[_0x192e('0x8')](_0xd4e12f,util[_0x192e('0x9')](_0x2c0090,{'showHidden':![],'depth':null}));};}function create(_0x5a72be){return BPromise[_0x192e('0xa')]()[_0x192e('0xb')](cmHopperHistory[_0x192e('0xc')](_0x5a72be))['catch'](loggerCatch(_0x192e('0xd')));}function createAgent(_0x2acdeb){return BPromise['resolve']()['then'](agentReportPreview['createHistory'](_0x2acdeb))['catch'](loggerCatch(_0x192e('0xd')));}function moveContact(_0x3b6592){return BPromise['resolve']()[_0x192e('0xb')](cmHopper['moveContactManagedDialer'](_0x3b6592,!![]))[_0x192e('0xe')](loggerCatch(_0x192e('0xf')));}exports['checkIsBlackList']=function(_0x256531){return BPromise[_0x192e('0xa')]()['then'](cmHopperBlack[_0x192e('0x10')](_0x256531))[_0x192e('0xe')](loggerCatch('[checkIsBlackList]\x20'));};exports[_0x192e('0x11')]=function(_0x2d8b9f){return BPromise[_0x192e('0xa')]()['then'](cmHopper[_0x192e('0x11')](_0x2d8b9f))[_0x192e('0xe')](loggerCatch('[getContactPreview]\x20'));};exports[_0x192e('0xc')]=function(_0x18222e,_0x3a3db7){create(_0x18222e)[_0x192e('0xe')](loggerCatch(_0x3a3db7));moveContact(_0x18222e)[_0x192e('0xe')](loggerCatch(_0x3a3db7));};exports[_0x192e('0x12')]=function(_0x36f0bc,_0x8fd3de){createAgent(_0x36f0bc)[_0x192e('0xe')](loggerCatch(_0x8fd3de));};exports['createCustomerHistory']=function(_0x23ce3b,_0xd984f3){create(_0x23ce3b)[_0x192e('0xe')](loggerCatch(_0xd984f3));};exports[_0x192e('0x13')]=function(_0x29e313,_0x5c08ce){moveContact(_0x29e313)[_0x192e('0xe')](loggerCatch(_0x5c08ce));};exports[_0x192e('0x14')]=function(_0xd6a4a6,_0x30f92d,_0x1cf9bf){if(_0x30f92d){_0xd6a4a6[_0x192e('0x15')]=null;}if(_0x1cf9bf){_0xd6a4a6[_0x192e('0x16')]=![];}return BPromise[_0x192e('0xa')]()[_0x192e('0xb')](cmHopper[_0x192e('0x14')](_0xd6a4a6))['catch'](loggerCatch('[rescheduleContact]\x20'));};exports[_0x192e('0x17')]=function(_0x33b30e){return BPromise[_0x192e('0xa')]()[_0x192e('0xb')](cmHopper['countReScheduled'](_0x33b30e))[_0x192e('0xe')](loggerCatch(_0x192e('0x18')));};exports[_0x192e('0x19')]=function(_0xd12c4d){return BPromise[_0x192e('0xa')]()[_0x192e('0xb')](cmHopper[_0x192e('0x19')]({'UserId':null},_0xd12c4d,0x1))[_0x192e('0xe')](loggerCatch(_0x192e('0x1a')));};exports[_0x192e('0x1b')]=function(_0xb1891a){return BPromise[_0x192e('0xa')]()[_0x192e('0xb')](cmHopper['unlockContact']({'active':![]},_0xb1891a,0x1))[_0x192e('0xe')](loggerCatch('[activeContact]\x20'));};exports[_0x192e('0x1c')]=function(_0xcf066f){var _0x232e0a={};_0x232e0a['type']=_0xcf066f[_0x192e('0x1d')];_0x232e0a[_0x192e('0x1e')]=_0xcf066f[_0x192e('0x1e')];_0x232e0a[_0x192e('0x1f')]=_0xcf066f['calleridnum'];_0x232e0a[_0x192e('0x20')]=_0xcf066f[_0x192e('0x20')];_0x232e0a[_0x192e('0x21')]=_0xcf066f['queue'];_0x232e0a[_0x192e('0x22')]=_0xcf066f[_0x192e('0x23')];_0x232e0a[_0x192e('0x24')]=_0xcf066f[_0x192e('0x23')];_0x232e0a[_0x192e('0x25')]=0x1;_0x232e0a[_0x192e('0x26')]=_0xcf066f[_0x192e('0x27')];_0x232e0a[_0x192e('0x28')]=_0xcf066f['membername'];_0x232e0a[_0x192e('0x29')]='from-sip';_0x232e0a['exten']=_0x192e('0x2a');_0x232e0a[_0x192e('0x2b')]=0x0;_0x232e0a[_0x192e('0x2c')]=0x1;_0x232e0a['lastAssignedTo']=_0xcf066f[_0x192e('0x2d')];_0x232e0a[_0x192e('0x2e')]=_0x192e('0x2f');return BPromise['resolve']()[_0x192e('0xb')](voiceQueueReport[_0x192e('0x30')](_0x232e0a))[_0x192e('0xe')](loggerCatch(_0x192e('0x31')));};exports['getContactRecallMe']=function(_0x2f14f6,_0x572085){return BPromise['resolve']()['then'](cmHopper[_0x192e('0x32')](_0x2f14f6,_0x572085))[_0x192e('0xe')](loggerCatch('[GetContactRecallMe]\x20'));};exports[_0x192e('0x33')]=function(_0x6206b3){return BPromise[_0x192e('0xa')]()[_0x192e('0xb')](cmHopper['rescheduleContact'](_0x6206b3,!![],!![]))[_0x192e('0xe')](loggerCatch(_0x192e('0x34')));};
\ No newline at end of file
+var _0x24f2=['createCustomerFinal','rescheduleContact','active','[rescheduleContact]\x20','countReScheduled','[countReScheduled]\x20','unlockContact','[unlockContact]\x20','disableContact','[activeContact]\x20','crateCustomerReportQueue','type','uniqueid','calleridnum','calleridname','queue','queuecallerleaveAt','answertime','queuecallercomplete','queuecallercompleteAt','endtime','connectedlinename','membername','context','from-sip','xcally-motion-preview','assigned','lastAssignedTo','queuecallerexitreason','COMPLETED','create','getContactRecallMe','[GetContactRecallMe]\x20','[rescheduleContactInQueue]\x20','util','bluebird','../../../config/logger','../rpc/cmHopper','../rpc/cmHopperFinal','../rpc/cmHopperHistory','../rpc/cmHopperBlack','../rpc/agentReportPreview','../rpc/voiceQueueReport','error','inspect','resolve','then','createHistory','catch','[createHistory]\x20','moveContactManagedDialer','[moveContactManagedDialer]\x20','checkIsBlackList','[checkIsBlackList]\x20','getContactPreview','[getContactPreview]\x20','createAgentHistory'];(function(_0x581960,_0x1232ff){var _0x4ee892=function(_0x2a920d){while(--_0x2a920d){_0x581960['push'](_0x581960['shift']());}};_0x4ee892(++_0x1232ff);}(_0x24f2,0x178));var _0x224f=function(_0x343e44,_0x519af9){_0x343e44=_0x343e44-0x0;var _0xa5130e=_0x24f2[_0x343e44];return _0xa5130e;};'use strict';var util=require(_0x224f('0x0'));var BPromise=require(_0x224f('0x1'));var logger=require(_0x224f('0x2'))('preview');var _=require('lodash');var cmHopper=require(_0x224f('0x3'));var cmHopperFinal=require(_0x224f('0x4'));var cmHopperHistory=require(_0x224f('0x5'));var cmHopperBlack=require(_0x224f('0x6'));var voiceQueueRt=require('../rpc/voiceQueueRt');var agentReportPreview=require(_0x224f('0x7'));var voiceQueueReport=require(_0x224f('0x8'));function loggerCatch(_0x2f3b87){return function(_0x30323f){logger[_0x224f('0x9')](_0x2f3b87,util[_0x224f('0xa')](_0x30323f,{'showHidden':![],'depth':null}));};}function create(_0x2c954f){return BPromise[_0x224f('0xb')]()[_0x224f('0xc')](cmHopperHistory[_0x224f('0xd')](_0x2c954f))[_0x224f('0xe')](loggerCatch(_0x224f('0xf')));}function createAgent(_0x44b9e3){return BPromise[_0x224f('0xb')]()[_0x224f('0xc')](agentReportPreview[_0x224f('0xd')](_0x44b9e3))[_0x224f('0xe')](loggerCatch(_0x224f('0xf')));}function moveContact(_0x508140){return BPromise[_0x224f('0xb')]()[_0x224f('0xc')](cmHopper[_0x224f('0x10')](_0x508140,!![]))[_0x224f('0xe')](loggerCatch(_0x224f('0x11')));}exports[_0x224f('0x12')]=function(_0x335da4){return BPromise[_0x224f('0xb')]()[_0x224f('0xc')](cmHopperBlack[_0x224f('0x12')](_0x335da4))[_0x224f('0xe')](loggerCatch(_0x224f('0x13')));};exports[_0x224f('0x14')]=function(_0x18a53d){return BPromise[_0x224f('0xb')]()['then'](cmHopper['getContactPreview'](_0x18a53d))[_0x224f('0xe')](loggerCatch(_0x224f('0x15')));};exports[_0x224f('0xd')]=function(_0x309ad0,_0x560a8f){create(_0x309ad0)[_0x224f('0xe')](loggerCatch(_0x560a8f));moveContact(_0x309ad0)[_0x224f('0xe')](loggerCatch(_0x560a8f));};exports[_0x224f('0x16')]=function(_0x23efea,_0xab6ca9){createAgent(_0x23efea)[_0x224f('0xe')](loggerCatch(_0xab6ca9));};exports['createCustomerHistory']=function(_0x51eaf4,_0x4e451d){create(_0x51eaf4)['catch'](loggerCatch(_0x4e451d));};exports[_0x224f('0x17')]=function(_0x13d053,_0x3cae6f){moveContact(_0x13d053)[_0x224f('0xe')](loggerCatch(_0x3cae6f));};exports[_0x224f('0x18')]=function(_0x2787ea,_0x1cbd9c,_0x30937c){if(_0x1cbd9c){_0x2787ea['UserId']=null;}if(_0x30937c){_0x2787ea[_0x224f('0x19')]=![];}return BPromise['resolve']()[_0x224f('0xc')](cmHopper[_0x224f('0x18')](_0x2787ea))['catch'](loggerCatch(_0x224f('0x1a')));};exports[_0x224f('0x1b')]=function(_0x4de969){return BPromise[_0x224f('0xb')]()[_0x224f('0xc')](cmHopper[_0x224f('0x1b')](_0x4de969))[_0x224f('0xe')](loggerCatch(_0x224f('0x1c')));};exports[_0x224f('0x1d')]=function(_0x31b9f9){return BPromise[_0x224f('0xb')]()['then'](cmHopper[_0x224f('0x1d')]({'UserId':null},_0x31b9f9,0x1))[_0x224f('0xe')](loggerCatch(_0x224f('0x1e')));};exports[_0x224f('0x1f')]=function(_0x1a85ff){return BPromise['resolve']()['then'](cmHopper[_0x224f('0x1d')]({'active':![]},_0x1a85ff,0x1))['catch'](loggerCatch(_0x224f('0x20')));};exports[_0x224f('0x21')]=function(_0x2142f1){var _0xc13779={};_0xc13779[_0x224f('0x22')]=_0x2142f1[_0x224f('0x22')];_0xc13779['uniqueid']=_0x2142f1[_0x224f('0x23')];_0xc13779[_0x224f('0x24')]=_0x2142f1[_0x224f('0x24')];_0xc13779[_0x224f('0x25')]=_0x2142f1[_0x224f('0x25')];_0xc13779[_0x224f('0x26')]=_0x2142f1[_0x224f('0x26')];_0xc13779['queuecallerjoinAt']=_0x2142f1['answertime'];_0xc13779[_0x224f('0x27')]=_0x2142f1[_0x224f('0x28')];_0xc13779[_0x224f('0x29')]=0x1;_0xc13779[_0x224f('0x2a')]=_0x2142f1[_0x224f('0x2b')];_0xc13779[_0x224f('0x2c')]=_0x2142f1[_0x224f('0x2d')];_0xc13779[_0x224f('0x2e')]=_0x224f('0x2f');_0xc13779['exten']=_0x224f('0x30');_0xc13779['holdtime']=0x0;_0xc13779[_0x224f('0x31')]=0x1;_0xc13779[_0x224f('0x32')]=_0x2142f1[_0x224f('0x2d')];_0xc13779[_0x224f('0x33')]=_0x224f('0x34');return BPromise[_0x224f('0xb')]()[_0x224f('0xc')](voiceQueueReport[_0x224f('0x35')](_0xc13779))[_0x224f('0xe')](loggerCatch('[voiceQueueReport]\x20'));};exports[_0x224f('0x36')]=function(_0x1facb1,_0x48c386){return BPromise[_0x224f('0xb')]()[_0x224f('0xc')](cmHopper['getContactRecallMe'](_0x1facb1,_0x48c386))[_0x224f('0xe')](loggerCatch(_0x224f('0x37')));};exports['rescheduleContactInQueue']=function(_0x1c6766){return BPromise['resolve']()[_0x224f('0xc')](cmHopper[_0x224f('0x18')](_0x1c6766,!![],!![]))['catch'](loggerCatch(_0x224f('0x38')));};
\ No newline at end of file
index 54ea257..a7d8b9b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x81f2=['U(xcally-mixmonitor-context)','dialPreviewUrl','dialQueueProject','\x22agi://%s/square,%s\x22','NONE','originatecalleridnum','originatecalleridname','_XCALLY_MIXMONITOR_FORMAT','_XCALLY_MIXMONITOR_UNIQUEID','hasOwnProperty','Contact','tags','createdAt','%s%s','XMD-','toLowerVariables','toLower','updateOriginated','originated','[updateOriginated]\x20is\x20null\x20or\x20undefined','YYYY-MM-DD\x20HH:mm:ss','state','Blacklist','starttime','responsetime','statedesc','ringtime','logLookAgent','UserId','logCustomer','endtime','talktime','answertime','isFailure','Failure','variablesAction','RECALL','BOOKED','uniqueid','originate','xcally-motion-preview','totalGlobal','countcongestionretry','countnoanswerretry','clone','Global','active','scheduledat','add','minutes','ListId','VoiceQueueId','decrementTalkink','pTalking','[decrementTalkink]\x20is\x20null\x20or\x20undefined','buildObj','interface','channelAgent','mandatoryDisposition','buildAcw','queue','agentReadyId','status','reachable','push','createBody','CampaignId','filterKey','idContact','type','campaigntype','membername','countbusyretry','countglobal','callback','callbackat','recallme','sipcallid','xmd-voicequeueid','xmd-phone','xmd-dialtimeout','xmd-dialoptions','xmd-dialid','xmd-dialchannel','xmd-contactid','xmd-cdrtype','xmd-callerid','xmd-agiafter','xmd-agi','rtpaudioqosjitter','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitterbridged','rtpaudioqosloss','bridgepeer','bridgepvtcallid','\x5cw{0,','pow','replace','random','extractCalleridName','extractCalleridNumber','match','util','lodash','moment','../../../../config/logger','env','XCALLY_IP_AGI','127.0.0.1','milliseconds','seconds','loggerCatch','error','inspect','logger','info','loggerError','logger2','getCallerId','isUndefined','string','isEmpty','format','\x22%s\x22\x20<%s>','\x22\x22\x20<>','isActive','isNil','addVariables','Queue','name','calleridname','calleridnum','ContactId','dialer','dialOriginateTimeout','\x22rtTxX%s%s\x22','dialQueueProject2','monitor_format'];(function(_0x38fed9,_0x38a9ff){var _0x1453ec=function(_0x426fad){while(--_0x426fad){_0x38fed9['push'](_0x38fed9['shift']());}};_0x1453ec(++_0x38a9ff);}(_0x81f2,0x186));var _0x281f=function(_0x77cb50,_0x5af067){_0x77cb50=_0x77cb50-0x0;var _0x1124fb=_0x81f2[_0x77cb50];return _0x1124fb;};'use strict';var util=require(_0x281f('0x0'));var _=require(_0x281f('0x1'));var moment=require(_0x281f('0x2'));var logger=require(_0x281f('0x3'))('preview');var ipAgi=process[_0x281f('0x4')][_0x281f('0x5')]||_0x281f('0x6');function getSeconds(_0x1ef345,_0x211027){var _0x64f511=moment(_0x1ef345)['milliseconds'](0x0);var _0xbde17f=moment(_0x211027)[_0x281f('0x7')](0x0);return _0x64f511['diff'](_0xbde17f,_0x281f('0x8'));}exports[_0x281f('0x9')]=function(_0x2a31e1){return function(_0x5bc4e1){logger[_0x281f('0xa')](_0x2a31e1,util[_0x281f('0xb')](_0x5bc4e1,{'showHidden':![],'depth':null}));};};exports[_0x281f('0xc')]=function(_0x5e134b,_0x1dda19){logger[_0x281f('0xd')](_0x5e134b,util[_0x281f('0xb')](_0x1dda19,{'showHidden':![],'depth':null}));};exports[_0x281f('0xe')]=function(_0x21fee8,_0x33fec8){logger[_0x281f('0xa')](_0x21fee8,util[_0x281f('0xb')](_0x33fec8,{'showHidden':![],'depth':null}));};exports[_0x281f('0xf')]=function(_0x314b6f){return function(_0xeb1e6f){logger['info'](_0x314b6f,util['inspect'](_0xeb1e6f,{'showHidden':![],'depth':null}));};};exports['message']=function(_0x1d1d88,_0xe5e67f,_0x5bc099){return{'message':_0x1d1d88,'unlock':_0xe5e67f,'active':_0x5bc099};};exports[_0x281f('0x10')]=function(_0x1359ac,_0x435715,_0x26cc8a){if(!_[_0x281f('0x11')](_0x26cc8a)&&_0x281f('0x12')===typeof _0x26cc8a&&!_[_0x281f('0x13')](_0x26cc8a)){if(!_[_0x281f('0x11')](_0x435715)&&_0x281f('0x12')===typeof _0x435715&&!_[_0x281f('0x13')](_0x435715)){return util[_0x281f('0x14')](_0x281f('0x15'),_0x435715,_0x26cc8a);}return util[_0x281f('0x14')](_0x281f('0x15'),_0x26cc8a,_0x26cc8a);}if(!_[_0x281f('0x11')](_0x1359ac)&&_0x281f('0x12')===typeof _0x1359ac&&!_[_0x281f('0x13')](_0x1359ac)){return _0x1359ac;}return _0x281f('0x16');};exports[_0x281f('0x17')]=function(_0x30a3f5){if(_[_0x281f('0x18')](_0x30a3f5)){return![];}return _0x30a3f5;};exports[_0x281f('0x19')]=function(_0x5e2ec7,_0x504f98,_0x333cfa,_0x3338ee,_0x4bd6cd,_0x25a2d2){var _0x17e78d={'XMD-QUEUE':_0x504f98[_0x281f('0x1a')]?_0x504f98[_0x281f('0x1a')][_0x281f('0x1b')]:'','XMD-CALLERID':_0x3338ee,'XMD-CALLERID-PREVIEW':_0x25a2d2?util[_0x281f('0x14')]('\x22%s\x22\x20<%s>',_0x25a2d2[_0x281f('0x1c')],_0x25a2d2[_0x281f('0x1d')]):_0x3338ee,'XMD-DIALID':_0x4bd6cd,'XMD-CONTACTID':_0x504f98[_0x281f('0x1e')],'XMD-CDRTYPE':_0x281f('0x1f'),'CALLERID(all)':_0x3338ee,'XMD-VOICEQUEUEID':_0x504f98['VoiceQueueId'],'XMD-DIALCHANNEL':_0x333cfa,'XMD-DIALTIMEOUT':_0x5e2ec7[_0x281f('0x20')]||0x1e,'XMD-DIALOPTIONS':util[_0x281f('0x14')](_0x281f('0x21'),_0x5e2ec7[_0x281f('0x22')]?'g':'',_['isEmpty'](_0x5e2ec7[_0x281f('0x23')])?'':_0x281f('0x24')),'XMD-DIALURL':_0x5e2ec7[_0x281f('0x25')]||'','XMD-AGI':_0x5e2ec7[_0x281f('0x26')]?util[_0x281f('0x14')]('\x22agi://%s/square,%s\x22',ipAgi,_0x5e2ec7['dialQueueProject']):'NONE','XMD-AGIAFTER':_0x5e2ec7[_0x281f('0x22')]?util['format'](_0x281f('0x27'),ipAgi,_0x5e2ec7['dialQueueProject2']):_0x281f('0x28'),'XMD-ORIGINATECALLERIDNUM':_0x25a2d2?_0x25a2d2[_0x281f('0x29')]:'','XMD-ORIGINATECALLERIDNAME':_0x25a2d2?_0x25a2d2[_0x281f('0x2a')]:'','XMD-DESTINATION':'xcally-motion-preview'};if(!_[_0x281f('0x13')](_0x5e2ec7[_0x281f('0x23')])){_0x17e78d[util[_0x281f('0x14')]('%s',_0x281f('0x2b'))]=_0x5e2ec7[_0x281f('0x23')];_0x17e78d[util[_0x281f('0x14')]('%s',_0x281f('0x2c'))]=_0x4bd6cd;}if(_0x504f98&&_0x504f98['Contact']){for(var _0x27a520 in _0x504f98['Contact']){if(_0x504f98['Contact'][_0x281f('0x2d')](_0x27a520)){if(!_[_0x281f('0x18')](_0x504f98[_0x281f('0x2e')][_0x27a520])&&_0x27a520!=='id'&&_0x27a520!==_0x281f('0x2f')&&_0x27a520!==_0x281f('0x30')&&_0x27a520!=='updatedAt'){_0x17e78d[util[_0x281f('0x14')](_0x281f('0x31'),_0x281f('0x32'),_['toUpper'](_0x27a520))]=_0x504f98[_0x281f('0x2e')][_0x27a520];}}}}return _0x17e78d;};exports[_0x281f('0x33')]=function(_0x436be1){var _0x374c62={};for(var _0x39c49b in _0x436be1){if(_0x436be1[_0x281f('0x2d')](_0x39c49b)){_0x374c62[util['format']('%s',_[_0x281f('0x34')](_0x39c49b))]=_0x436be1[_0x39c49b];}}return{'variables':_0x374c62};};exports[_0x281f('0x35')]=function(_0x458bf9,_0x5ce209){if(!_[_0x281f('0x18')](_0x458bf9)){if(_0x458bf9[_0x281f('0x2d')](_0x281f('0x36'))){if(_0x458bf9['originated']>0x0){_0x458bf9[_0x281f('0x36')]-=0x1;}else{logger[_0x281f('0xa')]('[updateOriginated]\x20object\x20originated\x20is\x20negative',_0x5ce209);}}}else{logger[_0x281f('0xa')](_0x281f('0x37'),_0x5ce209);}};exports['logBlacklist']=function(_0x2c28ab){var _0x7f60cb=moment()[_0x281f('0x14')](_0x281f('0x38'));_0x2c28ab[_0x281f('0x39')]=0xd;_0x2c28ab['statedesc']=_0x281f('0x3a');_0x2c28ab[_0x281f('0x3b')]=_0x7f60cb;_0x2c28ab[_0x281f('0x3c')]=_0x7f60cb;_0x2c28ab['endtime']=_0x7f60cb;};exports['logAgent']=function(_0xc5789b,_0x5a76a9,_0x1e584b){var _0x3208b3=moment()[_0x281f('0x14')](_0x281f('0x38'));_0xc5789b['state']=_0x5a76a9;_0xc5789b[_0x281f('0x3d')]=_0x1e584b;_0xc5789b[_0x281f('0x3c')]=_0x3208b3;_0xc5789b[_0x281f('0x3e')]=getSeconds(_0xc5789b[_0x281f('0x3c')],_0xc5789b[_0x281f('0x3b')]);};exports[_0x281f('0x3f')]=function(_0x4b5ac7,_0x110999,_0x3daee3){_0x4b5ac7['membername']=_0x110999;_0x4b5ac7[_0x281f('0x40')]=_0x3daee3;};exports[_0x281f('0x41')]=function(_0x2c6979,_0xb5ee68,_0x2aab25){var _0x2c4726=moment()[_0x281f('0x14')]('YYYY-MM-DD\x20HH:mm:ss');_0x2c6979[_0x281f('0x39')]=_0xb5ee68;_0x2c6979[_0x281f('0x3d')]=_0x2aab25;_0x2c6979['responsetime']=_0x2c6979[_0x281f('0x3c')]?_0x2c6979['responsetime']:_0x2c4726;_0x2c6979['endtime']=_0x2c6979[_0x281f('0x42')]?_0x2c6979[_0x281f('0x42')]:_0x2c4726;_0x2c6979[_0x281f('0x3e')]=getSeconds(_0x2c6979[_0x281f('0x3c')]||0x0,_0x2c6979[_0x281f('0x3b')]||0x0);_0x2c6979[_0x281f('0x43')]=_0x2c6979[_0x281f('0x44')]?getSeconds(_0x2c6979[_0x281f('0x42')],_0x2c6979[_0x281f('0x44')]):0x0;};exports[_0x281f('0x45')]=function(_0x341d8f){return _0x341d8f===_0x281f('0x46');};exports[_0x281f('0x47')]=function(_0x569b84,_0x1430a0,_0x285538,_0x4d56ed,_0x405843){var _0x214e7a=_0x4d56ed?_0x281f('0x48'):_0x569b84[_0x281f('0x1c')];_0x214e7a=_0x405843?_0x281f('0x49'):_0x214e7a;return{'actionid':_0x569b84[_0x281f('0x4a')],'action':_0x281f('0x4b'),'channel':_0x569b84['channelAgent'],'callerid':util['format']('\x22%s\x22\x20<%s>',_0x214e7a,_0x569b84['calleridnum']),'Exten':_0x281f('0x4c'),'Context':'from-sip','Priority':'1','variable':_0x285538,'timeout':(_0x1430a0['timeout']||0x1e)*0x3e8,'async':!![],'channelid':_0x569b84[_0x281f('0x4a')]};};exports[_0x281f('0x4d')]=function(_0x1c0693){return _0x1c0693['countbusyretry']+_0x1c0693[_0x281f('0x4e')]+_0x1c0693[_0x281f('0x4f')]+_0x1c0693['countagentrejectretry']+_0x1c0693['countnosuchnumberretry'];};exports['cloneAction']=function(_0xb981cc){var _0x44dc4d=_[_0x281f('0x50')](_0xb981cc);_0x44dc4d[_0x281f('0x39')]=0xf;_0x44dc4d[_0x281f('0x3d')]=_0x281f('0x51');return _0x44dc4d;};exports['scheduledAt']=function(_0x4b7f6b,_0x392e67,_0x419023){var _0x320084={};_0x320084[_0x392e67]=_0x4b7f6b[_0x392e67];_0x320084[_0x281f('0x52')]=![];_0x320084[_0x281f('0x53')]=moment()[_0x281f('0x54')](_0x419023,_0x281f('0x55'))[_0x281f('0x14')]('YYYY-MM-DD\x20HH:mm:ss');_0x320084['ContactId']=_0x4b7f6b[_0x281f('0x1e')];_0x320084[_0x281f('0x56')]=_0x4b7f6b['ListId'];_0x320084['VoiceQueueId']=_0x4b7f6b[_0x281f('0x57')]||undefined;return _0x320084;};exports[_0x281f('0x58')]=function(_0xdebc39,_0x3d8c7d){if(!_[_0x281f('0x18')](_0xdebc39)){if(_0xdebc39[_0x281f('0x59')]>0x0){_0xdebc39[_0x281f('0x59')]-=0x1;}else{logger[_0x281f('0xa')](_0x3d8c7d,'[decrementTalkink]\x20object\x20talking\x20is\x20negative');}}else{logger['error'](_0x3d8c7d,_0x281f('0x5a'));}};exports['IsNotLoggedIn']=function(_0x11f179){if(_0x11f179<=0x0){return!![];}return![];};exports[_0x281f('0x5b')]=function(_0x450977,_0x3de5c2,_0x161fdf){_0x450977['lastevent']=_0x3de5c2;_0x450977['name']=_0x450977['queue'];_0x450977[_0x281f('0x5c')]=_0x450977[_0x281f('0x5d')];if(_0x161fdf){_0x450977[_0x281f('0x5e')]=_0x161fdf['mandatoryDisposition'];}return _0x450977;};exports[_0x281f('0x5f')]=function(_0x5327b3){var _0x48b901={};_0x48b901[_0x281f('0x60')]=_0x5327b3[_0x281f('0x60')];_0x48b901['interface']=_0x5327b3[_0x281f('0x5d')];_0x48b901[_0x281f('0x4a')]=_0x5327b3[_0x281f('0x4a')];return _0x48b901;};exports[_0x281f('0x61')]=function(_0x54ce88){var _0x9b15f9=[];for(var _0x56bff3 in _0x54ce88){if(_0x54ce88['hasOwnProperty'](_0x56bff3)){if(!_[_0x281f('0x18')](_0x54ce88[_0x56bff3])&&_0x54ce88[_0x56bff3]['state']==='not_inuse'&&_0x54ce88[_0x56bff3][_0x281f('0x62')]===_0x281f('0x63')){_0x9b15f9[_0x281f('0x64')](_0x54ce88[_0x56bff3]['id']);}}}return _0x9b15f9;};exports['getDiff']=function(_0x37fbd){var _0x83e46d=moment()[_0x281f('0x7')](0x0);var _0x39dfbd=moment(_0x37fbd)[_0x281f('0x7')](0x0);return _0x83e46d['diff'](_0x39dfbd,_0x281f('0x8'));};exports[_0x281f('0x65')]=function(_0x53f07b){return{'active':![],'recallme':![],'UserId':null,'ContactId':_0x53f07b['ContactId'],'ListId':_0x53f07b['ListId'],'VoiceQueueId':_0x53f07b['VoiceQueueId']||undefined,'CampaignId':_0x53f07b[_0x281f('0x66')]||undefined};};exports[_0x281f('0x67')]=function(_0x5d8934){if(_0x5d8934==='uniqueid'||_0x5d8934===_0x281f('0x68')||_0x5d8934===_0x281f('0x60')||_0x5d8934===_0x281f('0x69')||_0x5d8934===_0x281f('0x6a')||_0x5d8934==='dialAnswer'||_0x5d8934===_0x281f('0x6b')||_0x5d8934===_0x281f('0x5d')||_0x5d8934===_0x281f('0x1c')||_0x5d8934===_0x281f('0x52')||_0x5d8934===_0x281f('0x1d')||_0x5d8934===_0x281f('0x53')||_0x5d8934===_0x281f('0x6c')||_0x5d8934===_0x281f('0x4e')||_0x5d8934===_0x281f('0x4f')||_0x5d8934===_0x281f('0x6d')||_0x5d8934===_0x281f('0x6e')||_0x5d8934==='callbackuniqueid'||_0x5d8934===_0x281f('0x6f')||_0x5d8934===_0x281f('0x70')||_0x5d8934===_0x281f('0x1e')||_0x5d8934==='ListId'||_0x5d8934===_0x281f('0x40')||_0x5d8934===_0x281f('0x57')||_0x5d8934===_0x281f('0x71')||_0x5d8934===_0x281f('0x72')||_0x5d8934==='xmd-queue'||_0x5d8934===_0x281f('0x73')||_0x5d8934==='xmd-listid'||_0x5d8934==='xmd-dialurl'||_0x5d8934===_0x281f('0x74')||_0x5d8934===_0x281f('0x75')||_0x5d8934===_0x281f('0x76')||_0x5d8934===_0x281f('0x77')||_0x5d8934===_0x281f('0x78')||_0x5d8934===_0x281f('0x79')||_0x5d8934===_0x281f('0x7a')||_0x5d8934===_0x281f('0x7b')||_0x5d8934===_0x281f('0x7c')||_0x5d8934==='rtpaudioqos'||_0x5d8934==='rtpaudioqosbridged'||_0x5d8934===_0x281f('0x7d')||_0x5d8934==='rtpaudioqosjitterbridged'||_0x5d8934==='rtpaudioqosloss'||_0x5d8934===_0x281f('0x7e')||_0x5d8934===_0x281f('0x7f')||_0x5d8934===_0x281f('0x80')||_0x5d8934===_0x281f('0x81')||_0x5d8934===_0x281f('0x82')||_0x5d8934==='rtpaudioqosjitter'||_0x5d8934===_0x281f('0x83')||_0x5d8934===_0x281f('0x84')||_0x5d8934===_0x281f('0x7e')||_0x5d8934===_0x281f('0x7f')||_0x5d8934===_0x281f('0x80')||_0x5d8934===_0x281f('0x85')||_0x5d8934===_0x281f('0x86')||_0x5d8934===_0x281f('0x39')||_0x5d8934===_0x281f('0x3d')){return![];}return!![];};exports['getCallerIdRandom']=function(_0x4c3747,_0x29da89){var _0x2d343b,_0x495d03,_0x17ebd2;if(_0x29da89<=0x0){_0x29da89=0x1;}_0x2d343b=new RegExp(_0x281f('0x87')+_0x29da89+'}$');_0x495d03=Math[_0x281f('0x88')](0xa,_0x29da89-0x1);_0x17ebd2=Math[_0x281f('0x88')](0xa,_0x29da89)-0x1;return util[_0x281f('0x14')]('%s',_[_0x281f('0x89')](_0x4c3747,_0x2d343b,_[_0x281f('0x8a')](_0x495d03,_0x17ebd2)));};exports[_0x281f('0x8b')]=function(_0x3a9dd8){var _0xd7823e=_0x3a9dd8['match'](/"(.*?)"/);return _0xd7823e?_0xd7823e[0x1]:_0x3a9dd8;};exports[_0x281f('0x8c')]=function(_0x2e8e3d){var _0x3917fd=_0x2e8e3d[_0x281f('0x8d')](/<(.*?)>/);return _0x3917fd?_0x3917fd[0x1]:_0x2e8e3d;};
\ No newline at end of file
+var _0x59e9=['reachable','push','seconds','createBody','CampaignId','idContact','type','campaigntype','dialAnswer','countglobal','callback','callbackuniqueid','recallme','sipcallid','xmd-listid','xmd-dialurl','xmd-dialtimeout','xmd-dialid','xmd-dialchannel','xmd-contactid','xmd-cdrtype','xmd-callerid','xmd-agiafter','xmd-agi','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','bridgepeer','bridgepvtcallid','getCallerIdRandom','\x5cw{0,','pow','replace','random','extractCalleridName','match','extractCalleridNumber','util','lodash','moment','../../../../config/logger','XCALLY_IP_AGI','milliseconds','diff','loggerCatch','inspect','logger','info','loggerError','error','logger2','message','getCallerId','isUndefined','string','isEmpty','\x22%s\x22\x20<%s>','format','\x22\x22\x20<>','isActive','isNil','addVariables','Queue','name','calleridname','calleridnum','ContactId','dialer','VoiceQueueId','\x22rtTxX%s%s\x22','dialQueueProject2','monitor_format','U(xcally-mixmonitor-context)','dialPreviewUrl','dialQueueProject','\x22agi://%s/square,%s\x22','NONE','originatecalleridnum','originatecalleridname','xcally-motion-preview','Call-Type:\x20PREVIEW','_XCALLY_MIXMONITOR_FORMAT','_XCALLY_MIXMONITOR_UNIQUEID','Contact','hasOwnProperty','tags','createdAt','updatedAt','%s%s','XMD-','toLowerVariables','toLower','updateOriginated','originated','[updateOriginated]\x20object\x20originated\x20is\x20negative','[updateOriginated]\x20is\x20null\x20or\x20undefined','logBlacklist','YYYY-MM-DD\x20HH:mm:ss','state','Blacklist','responsetime','endtime','statedesc','ringtime','membername','UserId','logCustomer','starttime','answertime','isFailure','Failure','variablesAction','uniqueid','originate','from-sip','timeout','countbusyretry','countcongestionretry','countnoanswerretry','countagentrejectretry','cloneAction','clone','Global','active','scheduledat','add','minutes','ListId','pTalking','[decrementTalkink]\x20object\x20talking\x20is\x20negative','[decrementTalkink]\x20is\x20null\x20or\x20undefined','IsNotLoggedIn','lastevent','queue','interface','channelAgent','motionChannel','voice','mandatoryDisposition','agentReadyId','not_inuse'];(function(_0x18a79d,_0x57bd2c){var _0x4f8848=function(_0x28af80){while(--_0x28af80){_0x18a79d['push'](_0x18a79d['shift']());}};_0x4f8848(++_0x57bd2c);}(_0x59e9,0x1d8));var _0x959e=function(_0x3252b7,_0x412685){_0x3252b7=_0x3252b7-0x0;var _0x461dba=_0x59e9[_0x3252b7];return _0x461dba;};'use strict';var util=require(_0x959e('0x0'));var _=require(_0x959e('0x1'));var moment=require(_0x959e('0x2'));var logger=require(_0x959e('0x3'))('preview');var ipAgi=process['env'][_0x959e('0x4')]||'127.0.0.1';function getSeconds(_0x20962d,_0x5bef88){var _0xeac74=moment(_0x20962d)[_0x959e('0x5')](0x0);var _0x7235c6=moment(_0x5bef88)[_0x959e('0x5')](0x0);return _0xeac74[_0x959e('0x6')](_0x7235c6,'seconds');}exports[_0x959e('0x7')]=function(_0x30d93a){return function(_0x3c8dc1){logger['error'](_0x30d93a,util[_0x959e('0x8')](_0x3c8dc1,{'showHidden':![],'depth':null}));};};exports[_0x959e('0x9')]=function(_0x25e2d0,_0x1860ec){logger[_0x959e('0xa')](_0x25e2d0,util[_0x959e('0x8')](_0x1860ec,{'showHidden':![],'depth':null}));};exports[_0x959e('0xb')]=function(_0x189eae,_0x333377){logger[_0x959e('0xc')](_0x189eae,util[_0x959e('0x8')](_0x333377,{'showHidden':![],'depth':null}));};exports[_0x959e('0xd')]=function(_0x324884){return function(_0x59c42c){logger[_0x959e('0xa')](_0x324884,util[_0x959e('0x8')](_0x59c42c,{'showHidden':![],'depth':null}));};};exports[_0x959e('0xe')]=function(_0x18df72,_0x537c89,_0x5c53c0){return{'message':_0x18df72,'unlock':_0x537c89,'active':_0x5c53c0};};exports[_0x959e('0xf')]=function(_0x37a7d2,_0xbaacec,_0x4e4000){if(!_[_0x959e('0x10')](_0x4e4000)&&_0x959e('0x11')===typeof _0x4e4000&&!_[_0x959e('0x12')](_0x4e4000)){if(!_[_0x959e('0x10')](_0xbaacec)&&_0x959e('0x11')===typeof _0xbaacec&&!_['isEmpty'](_0xbaacec)){return util['format'](_0x959e('0x13'),_0xbaacec,_0x4e4000);}return util[_0x959e('0x14')]('\x22%s\x22\x20<%s>',_0x4e4000,_0x4e4000);}if(!_[_0x959e('0x10')](_0x37a7d2)&&_0x959e('0x11')===typeof _0x37a7d2&&!_['isEmpty'](_0x37a7d2)){return _0x37a7d2;}return _0x959e('0x15');};exports[_0x959e('0x16')]=function(_0xc4911d){if(_[_0x959e('0x17')](_0xc4911d)){return![];}return _0xc4911d;};exports[_0x959e('0x18')]=function(_0x47604f,_0x269fb6,_0x31068c,_0xfc6618,_0x22b9da,_0x57bc24){var _0x1eb242={'XMD-QUEUE':_0x269fb6['Queue']?_0x269fb6[_0x959e('0x19')][_0x959e('0x1a')]:'','XMD-CALLERID':_0xfc6618,'XMD-CALLERID-PREVIEW':_0x57bc24?util[_0x959e('0x14')](_0x959e('0x13'),_0x57bc24[_0x959e('0x1b')],_0x57bc24[_0x959e('0x1c')]):_0xfc6618,'XMD-DIALID':_0x22b9da,'XMD-CONTACTID':_0x269fb6[_0x959e('0x1d')],'XMD-CDRTYPE':_0x959e('0x1e'),'CALLERID(all)':_0xfc6618,'XMD-VOICEQUEUEID':_0x269fb6[_0x959e('0x1f')],'XMD-DIALCHANNEL':_0x31068c,'XMD-DIALTIMEOUT':_0x47604f['dialOriginateTimeout']||0x1e,'XMD-DIALOPTIONS':util['format'](_0x959e('0x20'),_0x47604f[_0x959e('0x21')]?'g':'',_[_0x959e('0x12')](_0x47604f[_0x959e('0x22')])?'':_0x959e('0x23')),'XMD-DIALURL':_0x47604f[_0x959e('0x24')]||'','XMD-AGI':_0x47604f[_0x959e('0x25')]?util['format'](_0x959e('0x26'),ipAgi,_0x47604f['dialQueueProject']):_0x959e('0x27'),'XMD-AGIAFTER':_0x47604f[_0x959e('0x21')]?util[_0x959e('0x14')](_0x959e('0x26'),ipAgi,_0x47604f['dialQueueProject2']):_0x959e('0x27'),'XMD-ORIGINATECALLERIDNUM':_0x57bc24?_0x57bc24[_0x959e('0x28')]:'','XMD-ORIGINATECALLERIDNAME':_0x57bc24?_0x57bc24[_0x959e('0x29')]:'','XMD-DESTINATION':_0x959e('0x2a'),'SIPADDHEADER':_0x959e('0x2b')};if(!_[_0x959e('0x12')](_0x47604f[_0x959e('0x22')])){_0x1eb242[util[_0x959e('0x14')]('%s',_0x959e('0x2c'))]=_0x47604f[_0x959e('0x22')];_0x1eb242[util[_0x959e('0x14')]('%s',_0x959e('0x2d'))]=_0x22b9da;}if(_0x269fb6&&_0x269fb6[_0x959e('0x2e')]){for(var _0x44fc15 in _0x269fb6['Contact']){if(_0x269fb6['Contact'][_0x959e('0x2f')](_0x44fc15)){if(!_[_0x959e('0x17')](_0x269fb6[_0x959e('0x2e')][_0x44fc15])&&_0x44fc15!=='id'&&_0x44fc15!==_0x959e('0x30')&&_0x44fc15!==_0x959e('0x31')&&_0x44fc15!==_0x959e('0x32')){_0x1eb242[util[_0x959e('0x14')](_0x959e('0x33'),_0x959e('0x34'),_['toUpper'](_0x44fc15))]=_0x269fb6['Contact'][_0x44fc15];}}}}return _0x1eb242;};exports[_0x959e('0x35')]=function(_0x3aa591){var _0x3b4377={};for(var _0x482bee in _0x3aa591){if(_0x3aa591[_0x959e('0x2f')](_0x482bee)){_0x3b4377[util['format']('%s',_[_0x959e('0x36')](_0x482bee))]=_0x3aa591[_0x482bee];}}return{'variables':_0x3b4377};};exports[_0x959e('0x37')]=function(_0x21eb79,_0x6c8a60){if(!_[_0x959e('0x17')](_0x21eb79)){if(_0x21eb79[_0x959e('0x2f')](_0x959e('0x38'))){if(_0x21eb79['originated']>0x0){_0x21eb79[_0x959e('0x38')]-=0x1;}else{logger[_0x959e('0xc')](_0x959e('0x39'),_0x6c8a60);}}}else{logger['error'](_0x959e('0x3a'),_0x6c8a60);}};exports[_0x959e('0x3b')]=function(_0x1c788c){var _0x15a449=moment()['format'](_0x959e('0x3c'));_0x1c788c[_0x959e('0x3d')]=0xd;_0x1c788c['statedesc']=_0x959e('0x3e');_0x1c788c['starttime']=_0x15a449;_0x1c788c[_0x959e('0x3f')]=_0x15a449;_0x1c788c[_0x959e('0x40')]=_0x15a449;};exports['logAgent']=function(_0x43238c,_0x8a696a,_0x1916c0){var _0x235df0=moment()[_0x959e('0x14')]('YYYY-MM-DD\x20HH:mm:ss');_0x43238c[_0x959e('0x3d')]=_0x8a696a;_0x43238c[_0x959e('0x41')]=_0x1916c0;_0x43238c['responsetime']=_0x235df0;_0x43238c[_0x959e('0x42')]=getSeconds(_0x43238c['responsetime'],_0x43238c['starttime']);};exports['logLookAgent']=function(_0x16a698,_0xb0344b,_0x2b88e0){_0x16a698[_0x959e('0x43')]=_0xb0344b;_0x16a698[_0x959e('0x44')]=_0x2b88e0;};exports[_0x959e('0x45')]=function(_0x336f49,_0x34218a,_0x3bc805){var _0x38d7ce=moment()['format'](_0x959e('0x3c'));_0x336f49[_0x959e('0x3d')]=_0x34218a;_0x336f49['statedesc']=_0x3bc805;_0x336f49[_0x959e('0x3f')]=_0x336f49[_0x959e('0x3f')]?_0x336f49['responsetime']:_0x38d7ce;_0x336f49[_0x959e('0x40')]=_0x336f49[_0x959e('0x40')]?_0x336f49[_0x959e('0x40')]:_0x38d7ce;_0x336f49[_0x959e('0x42')]=getSeconds(_0x336f49['responsetime']||0x0,_0x336f49[_0x959e('0x46')]||0x0);_0x336f49['talktime']=_0x336f49[_0x959e('0x47')]?getSeconds(_0x336f49[_0x959e('0x40')],_0x336f49[_0x959e('0x47')]):0x0;};exports[_0x959e('0x48')]=function(_0x20c560){return _0x20c560===_0x959e('0x49');};exports[_0x959e('0x4a')]=function(_0xbf4a01,_0x5dda26,_0x1e18a4,_0x5bd8fc,_0x5bd4dc){var _0x47b93f=_0x5bd8fc?'RECALL':_0xbf4a01[_0x959e('0x1b')];_0x47b93f=_0x5bd4dc?'BOOKED':_0x47b93f;return{'actionid':_0xbf4a01[_0x959e('0x4b')],'action':_0x959e('0x4c'),'channel':_0xbf4a01['channelAgent'],'callerid':util['format'](_0x959e('0x13'),_0x47b93f,_0xbf4a01[_0x959e('0x1c')]),'Exten':_0x959e('0x2a'),'Context':_0x959e('0x4d'),'Priority':'1','variable':_0x1e18a4,'timeout':(_0x5dda26[_0x959e('0x4e')]||0x1e)*0x3e8,'async':!![],'channelid':_0xbf4a01[_0x959e('0x4b')]};};exports['totalGlobal']=function(_0xab30b6){return _0xab30b6[_0x959e('0x4f')]+_0xab30b6[_0x959e('0x50')]+_0xab30b6[_0x959e('0x51')]+_0xab30b6[_0x959e('0x52')]+_0xab30b6['countnosuchnumberretry'];};exports[_0x959e('0x53')]=function(_0x1dbde){var _0x1bad3b=_[_0x959e('0x54')](_0x1dbde);_0x1bad3b[_0x959e('0x3d')]=0xf;_0x1bad3b[_0x959e('0x41')]=_0x959e('0x55');return _0x1bad3b;};exports['scheduledAt']=function(_0x500def,_0x496efe,_0x5d1be2){var _0x1dccf1={};_0x1dccf1[_0x496efe]=_0x500def[_0x496efe];_0x1dccf1[_0x959e('0x56')]=![];_0x1dccf1[_0x959e('0x57')]=moment()[_0x959e('0x58')](_0x5d1be2,_0x959e('0x59'))['format'](_0x959e('0x3c'));_0x1dccf1[_0x959e('0x1d')]=_0x500def[_0x959e('0x1d')];_0x1dccf1['ListId']=_0x500def[_0x959e('0x5a')];_0x1dccf1[_0x959e('0x1f')]=_0x500def[_0x959e('0x1f')]||undefined;return _0x1dccf1;};exports['decrementTalkink']=function(_0x180fe2,_0x229f5c){if(!_['isNil'](_0x180fe2)){if(_0x180fe2[_0x959e('0x5b')]>0x0){_0x180fe2['pTalking']-=0x1;}else{logger[_0x959e('0xc')](_0x229f5c,_0x959e('0x5c'));}}else{logger['error'](_0x229f5c,_0x959e('0x5d'));}};exports[_0x959e('0x5e')]=function(_0x37c5ed){if(_0x37c5ed<=0x0){return!![];}return![];};exports['buildObj']=function(_0x4415be,_0x5e7833,_0x53e09e){_0x4415be[_0x959e('0x5f')]=_0x5e7833;_0x4415be['name']=_0x4415be[_0x959e('0x60')];_0x4415be[_0x959e('0x61')]=_0x4415be[_0x959e('0x62')];_0x4415be[_0x959e('0x63')]=_0x959e('0x64');if(_0x53e09e){_0x4415be[_0x959e('0x65')]=_0x53e09e[_0x959e('0x65')];}return _0x4415be;};exports['buildAcw']=function(_0xf11d4f){var _0x9e9346={};_0x9e9346['queue']=_0xf11d4f[_0x959e('0x60')];_0x9e9346[_0x959e('0x61')]=_0xf11d4f[_0x959e('0x62')];_0x9e9346[_0x959e('0x4b')]=_0xf11d4f[_0x959e('0x4b')];return _0x9e9346;};exports[_0x959e('0x66')]=function(_0x4d09b1){var _0x1f50e5=[];for(var _0x5b3bba in _0x4d09b1){if(_0x4d09b1[_0x959e('0x2f')](_0x5b3bba)){if(!_[_0x959e('0x17')](_0x4d09b1[_0x5b3bba])&&_0x4d09b1[_0x5b3bba][_0x959e('0x3d')]===_0x959e('0x67')&&_0x4d09b1[_0x5b3bba]['status']===_0x959e('0x68')){_0x1f50e5[_0x959e('0x69')](_0x4d09b1[_0x5b3bba]['id']);}}}return _0x1f50e5;};exports['getDiff']=function(_0x57d7e9){var _0x594f8d=moment()['milliseconds'](0x0);var _0x244009=moment(_0x57d7e9)[_0x959e('0x5')](0x0);return _0x594f8d[_0x959e('0x6')](_0x244009,_0x959e('0x6a'));};exports[_0x959e('0x6b')]=function(_0x4bfbd2){return{'active':![],'recallme':![],'UserId':null,'ContactId':_0x4bfbd2['ContactId'],'ListId':_0x4bfbd2[_0x959e('0x5a')],'VoiceQueueId':_0x4bfbd2['VoiceQueueId']||undefined,'CampaignId':_0x4bfbd2[_0x959e('0x6c')]||undefined};};exports['filterKey']=function(_0x52b261){if(_0x52b261===_0x959e('0x4b')||_0x52b261===_0x959e('0x6d')||_0x52b261===_0x959e('0x60')||_0x52b261===_0x959e('0x6e')||_0x52b261===_0x959e('0x6f')||_0x52b261===_0x959e('0x70')||_0x52b261==='membername'||_0x52b261==='channelAgent'||_0x52b261===_0x959e('0x1b')||_0x52b261==='active'||_0x52b261==='calleridnum'||_0x52b261===_0x959e('0x57')||_0x52b261===_0x959e('0x4f')||_0x52b261===_0x959e('0x50')||_0x52b261===_0x959e('0x51')||_0x52b261===_0x959e('0x71')||_0x52b261===_0x959e('0x72')||_0x52b261===_0x959e('0x73')||_0x52b261==='callbackat'||_0x52b261===_0x959e('0x74')||_0x52b261==='ContactId'||_0x52b261===_0x959e('0x5a')||_0x52b261===_0x959e('0x44')||_0x52b261===_0x959e('0x1f')||_0x52b261===_0x959e('0x75')||_0x52b261==='xmd-voicequeueid'||_0x52b261==='xmd-queue'||_0x52b261==='xmd-phone'||_0x52b261===_0x959e('0x76')||_0x52b261===_0x959e('0x77')||_0x52b261===_0x959e('0x78')||_0x52b261==='xmd-dialoptions'||_0x52b261===_0x959e('0x79')||_0x52b261===_0x959e('0x7a')||_0x52b261===_0x959e('0x7b')||_0x52b261===_0x959e('0x7c')||_0x52b261===_0x959e('0x7d')||_0x52b261===_0x959e('0x7e')||_0x52b261===_0x959e('0x7f')||_0x52b261==='rtpaudioqos'||_0x52b261===_0x959e('0x80')||_0x52b261===_0x959e('0x81')||_0x52b261===_0x959e('0x82')||_0x52b261==='rtpaudioqosloss'||_0x52b261===_0x959e('0x83')||_0x52b261===_0x959e('0x84')||_0x52b261===_0x959e('0x85')||_0x52b261==='rtpaudioqos'||_0x52b261===_0x959e('0x80')||_0x52b261===_0x959e('0x81')||_0x52b261===_0x959e('0x82')||_0x52b261==='rtpaudioqosloss'||_0x52b261===_0x959e('0x83')||_0x52b261===_0x959e('0x84')||_0x52b261===_0x959e('0x85')||_0x52b261===_0x959e('0x86')||_0x52b261===_0x959e('0x87')||_0x52b261===_0x959e('0x3d')||_0x52b261===_0x959e('0x41')){return![];}return!![];};exports[_0x959e('0x88')]=function(_0x48fd4f,_0x2c1e20){var _0x887fd4,_0x183312,_0x17913e;if(_0x2c1e20<=0x0){_0x2c1e20=0x1;}_0x887fd4=new RegExp(_0x959e('0x89')+_0x2c1e20+'}$');_0x183312=Math[_0x959e('0x8a')](0xa,_0x2c1e20-0x1);_0x17913e=Math['pow'](0xa,_0x2c1e20)-0x1;return util['format']('%s',_[_0x959e('0x8b')](_0x48fd4f,_0x887fd4,_[_0x959e('0x8c')](_0x183312,_0x17913e)));};exports[_0x959e('0x8d')]=function(_0x380ac2){var _0x1a3583=_0x380ac2[_0x959e('0x8e')](/"(.*?)"/);return _0x1a3583?_0x1a3583[0x1]:_0x380ac2;};exports[_0x959e('0x8f')]=function(_0x52996b){var _0x23d0e4=_0x52996b['match'](/<(.*?)>/);return _0x23d0e4?_0x23d0e4[0x1]:_0x52996b;};
\ No newline at end of file
index a7e17ec..44a4dbe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbe09=['queueremove','queuepause','voicequeuechannel','voicequeuechannelhangup','string','boolean'];(function(_0x59049f,_0x30de6f){var _0x587f93=function(_0x37d437){while(--_0x37d437){_0x59049f['push'](_0x59049f['shift']());}};_0x587f93(++_0x30de6f);}(_0xbe09,0x1ea));var _0x9be0=function(_0x4173f3,_0x41904c){_0x4173f3=_0x4173f3-0x0;var _0x2431a0=_0xbe09[_0x4173f3];return _0x2431a0;};'use strict';exports['queueadd']={'queue':{'type':_0x9be0('0x0'),'required':!![]},'interface':{'type':_0x9be0('0x0'),'required':!![]},'membername':{'type':'string','required':!![]},'penalty':{'type':'number','required':![]},'paused':{'type':_0x9be0('0x1'),'required':![]}};exports[_0x9be0('0x2')]={'queue':{'type':_0x9be0('0x0'),'required':!![]},'interface':{'type':_0x9be0('0x0'),'required':!![]}};exports[_0x9be0('0x3')]={'interface':{'type':'string','required':!![]},'paused':{'type':_0x9be0('0x1')},'reason':{'type':_0x9be0('0x0'),'required':![]}};exports['reload']={'module':{'type':_0x9be0('0x0'),'required':![]}};exports[_0x9be0('0x4')]={'uniqueid':{'type':_0x9be0('0x0'),'required':!![]}};exports['voicechannel']={'uniqueid':{'type':'string','required':!![]},'filename':{'type':'string'},'format':{'type':_0x9be0('0x0')},'mixmonitorid':{'type':_0x9be0('0x0')}};exports[_0x9be0('0x5')]={'uniqueid':{'type':_0x9be0('0x0'),'required':!![]}};exports['voicequeuechannelredirect']={'uniqueid':{'type':'string','required':!![]},'exten':{'type':_0x9be0('0x0'),'required':!![]},'context':{'type':_0x9be0('0x0')}};
\ No newline at end of file
+var _0xeda1=['queuepause','voicequeuechannel','voicechannel','voicequeuechannelhangup','voicequeuechannelredirect','queueadd','string','number','boolean','queueremove'];(function(_0xb0f7c3,_0x4eae95){var _0x28ea68=function(_0x4395a7){while(--_0x4395a7){_0xb0f7c3['push'](_0xb0f7c3['shift']());}};_0x28ea68(++_0x4eae95);}(_0xeda1,0xc3));var _0x1eda=function(_0x1d116b,_0x4924ec){_0x1d116b=_0x1d116b-0x0;var _0x13db0c=_0xeda1[_0x1d116b];return _0x13db0c;};'use strict';exports[_0x1eda('0x0')]={'queue':{'type':_0x1eda('0x1'),'required':!![]},'interface':{'type':_0x1eda('0x1'),'required':!![]},'membername':{'type':_0x1eda('0x1'),'required':!![]},'penalty':{'type':_0x1eda('0x2'),'required':![]},'paused':{'type':_0x1eda('0x3'),'required':![]}};exports[_0x1eda('0x4')]={'queue':{'type':_0x1eda('0x1'),'required':!![]},'interface':{'type':_0x1eda('0x1'),'required':!![]}};exports[_0x1eda('0x5')]={'interface':{'type':'string','required':!![]},'paused':{'type':_0x1eda('0x3')},'reason':{'type':_0x1eda('0x1'),'required':![]}};exports['reload']={'module':{'type':_0x1eda('0x1'),'required':![]}};exports[_0x1eda('0x6')]={'uniqueid':{'type':'string','required':!![]}};exports[_0x1eda('0x7')]={'uniqueid':{'type':_0x1eda('0x1'),'required':!![]},'filename':{'type':'string'},'format':{'type':_0x1eda('0x1')},'mixmonitorid':{'type':_0x1eda('0x1')}};exports[_0x1eda('0x8')]={'uniqueid':{'type':'string','required':!![]}};exports[_0x1eda('0x9')]={'uniqueid':{'type':_0x1eda('0x1'),'required':!![]},'exten':{'type':'string','required':!![]},'context':{'type':'string'}};
\ No newline at end of file
index 601d381..b94edc7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b13=['zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','faxAccounts','mapKeys','hasOwnProperty','SIP/%s','name','isNil','interface','format','total','answered','sumDuration','sumBillable','isEmpty','ivrTotalCallsDays','ivrAnswerCallsDay','unmanaged','abandoned','outboundBusyCallsDay','outboundCongestionCallsDay','outboundUnknownCallsDay','outboundDropCallsDayTimeout','outboundBlacklistCallsDay','outboundRejectCallsDay','outboundReCallsDay','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','queueStatusComplete','prototype','mergeFromDatabase','initAgents','length','isUndefined','initVoiceQueues','voiceQueues','initTriggers','initTemplates','initZendeskAccounts','zendeskAccounts','initSalesforceAccounts','initFreshdeskAccounts','initZohoAccounts','initSugarcrmAccounts','initVtigerAccounts','initServicenowAccounts','initDynamics365Accounts','initFreshsalesAccounts','freshsalesAccounts','initVoiceQueueHopperHistory','merge','initVoiceQueueReports','groupBy','uniqueid','queue','queuecallerexit','queuecallerabandon','sumHoldTime','queuecallerleaveAt','diff','queuecallerjoinAt','queuecallercompleteAt','queuecallerexitAt','seconds','queuecallercomplete','initVoiceCallReports','duration','billableseconds','initCampaigns','dialQueueProject','SquareProject','initVoiceExtensions','initCampaignHopperHistory','initFaxAccounts','exports','bluebird','lodash','moment','../model/agent','../model/trunk','../model/voiceQueue','../model/trigger','../model/template','../model/campaign','../model/voiceExtension','../model/zendeskAccount','../model/salesforceAccount','../model/sugarcrmAccount','../model/zohoAccount','../model/deskAccount','../model/vtigerAccount','../model/servicenowAccount','../model/dynamics365Account','../model/freshsalesAccount','agents','telephones','trunks','triggers','campaigns','templates','outbound','voiceExtensions','channels','queueChannels','outboundChannels','settings','salesforceAccounts','sugarcrmAccounts','freshdeskAccounts'];(function(_0x1f0231,_0x3bb286){var _0x3c9964=function(_0x1a48e3){while(--_0x1a48e3){_0x1f0231['push'](_0x1f0231['shift']());}};_0x3c9964(++_0x3bb286);}(_0x7b13,0x12e));var _0x37b1=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0x7b13[_0x4b369d];return _0x571a98;};'use strict';var BPromise=require(_0x37b1('0x0'));var util=require('util');var _=require(_0x37b1('0x1'));var moment=require(_0x37b1('0x2'));var Agent=require(_0x37b1('0x3'));var Telephone=require('../model/telephone');var Trunk=require(_0x37b1('0x4'));var VoiceQueue=require(_0x37b1('0x5'));var Trigger=require(_0x37b1('0x6'));var Template=require(_0x37b1('0x7'));var Campaign=require(_0x37b1('0x8'));var VoiceExtension=require(_0x37b1('0x9'));var ZendeskAccount=require(_0x37b1('0xa'));var SalesforceAccount=require(_0x37b1('0xb'));var FreshdeskAccount=require('../model/freshdeskAccount');var SugarcrmAccount=require(_0x37b1('0xc'));var ZohoAccount=require(_0x37b1('0xd'));var DeskAccount=require(_0x37b1('0xe'));var VtigerAccount=require(_0x37b1('0xf'));var ServicenowAccount=require(_0x37b1('0x10'));var Dynamics365Account=require(_0x37b1('0x11'));var FreshsalesAccount=require(_0x37b1('0x12'));var FaxAccount=require('../model/faxAccount');var Realtime=function(){this[_0x37b1('0x13')]={};this[_0x37b1('0x14')]={};this[_0x37b1('0x15')]={};this['voiceQueues']={};this[_0x37b1('0x16')]={};this[_0x37b1('0x17')]={};this[_0x37b1('0x18')]={};this[_0x37b1('0x19')]={'total':0x0,'answered':0x0,'sumHoldTime':0x0,'sumDuration':0x0,'sumBillable':0x0};this[_0x37b1('0x1a')]={};this[_0x37b1('0x1b')]={};this[_0x37b1('0x1c')]={};this[_0x37b1('0x1d')]={};this['timers']={};this[_0x37b1('0x1e')]={};this['zendeskAccounts']={};this[_0x37b1('0x1f')]={};this[_0x37b1('0x20')]={};this[_0x37b1('0x21')]={};this[_0x37b1('0x22')]={};this[_0x37b1('0x23')]={};this[_0x37b1('0x24')]={};this[_0x37b1('0x25')]={};this[_0x37b1('0x26')]={};this['freshsalesAccounts']={};this[_0x37b1('0x27')]={};};function freeIsNotKey(_0xe90e4d,_0x3bc83a,_0x14b46d){var _0x4b5ab1=_[_0x37b1('0x28')](_0xe90e4d,function(_0x52895d,_0x141eec){return _0x52895d[_0x14b46d];});for(var _0x402272 in _0x3bc83a){if(_0x3bc83a[_0x37b1('0x29')](_0x402272)){if(!_0x4b5ab1[_0x402272]){delete _0x3bc83a[_0x402272];}}}}function freeIsNotKeySip(_0x1fcbe0,_0x23852b){var _0x5b8b0a=_[_0x37b1('0x28')](_0x1fcbe0,function(_0x338b9b,_0x1da2a7){return util['format'](_0x37b1('0x2a'),_0x338b9b[_0x37b1('0x2b')]);});for(var _0x248e53 in _0x23852b){if(_0x23852b[_0x37b1('0x29')](_0x248e53)){if(!_0x5b8b0a[_0x248e53]){delete _0x23852b[_0x248e53];}}}}function freeIsNotKeyAgent(_0x431a41,_0x3c9260){var _0x4af5ae=_[_0x37b1('0x28')](_0x431a41,function(_0x13765f,_0x369446){var _0x1164ac=_[_0x37b1('0x2c')](_0x13765f[_0x37b1('0x2d')])?util[_0x37b1('0x2e')](_0x37b1('0x2a'),_0x13765f['name']):_0x13765f[_0x37b1('0x2d')];return _0x1164ac;});for(var _0x50937f in _0x3c9260){if(_0x3c9260[_0x37b1('0x29')](_0x50937f)){if(!_0x4af5ae[_0x50937f]){delete _0x3c9260[_0x50937f];}}}}function clearVoiceCallReports(_0x492797){_0x492797[_0x37b1('0x2f')]=0x0;_0x492797[_0x37b1('0x30')]=0x0;_0x492797['sumHoldTime']=0x0;_0x492797[_0x37b1('0x31')]=0x0;_0x492797[_0x37b1('0x32')]=0x0;}function clearCampaigns(_0x393b00){if(!_[_0x37b1('0x33')](_0x393b00)){for(var _0x3c5672 in _0x393b00){if(_0x393b00[_0x37b1('0x29')](_0x3c5672)){_0x393b00[_0x3c5672][_0x37b1('0x34')]=0x0;_0x393b00[_0x3c5672][_0x37b1('0x35')]=0x0;}}}}function clearVoiceQueues(_0x463520){if(!_[_0x37b1('0x33')](_0x463520)){for(var _0xc9df2e in _0x463520){if(_0x463520[_0x37b1('0x29')](_0xc9df2e)){_0x463520[_0xc9df2e]['total']=0x0;_0x463520[_0xc9df2e]['answered']=0x0;_0x463520[_0xc9df2e][_0x37b1('0x36')]=0x0;_0x463520[_0xc9df2e][_0x37b1('0x37')]=0x0;_0x463520[_0xc9df2e]['sumHoldTime']=0x0;_0x463520[_0xc9df2e][_0x37b1('0x31')]=0x0;_0x463520[_0xc9df2e][_0x37b1('0x32')]=0x0;_0x463520[_0xc9df2e]['outboundAnswerAgiCallsDay']=0x0;_0x463520[_0xc9df2e]['outboundNoAnswerCallsDay']=0x0;_0x463520[_0xc9df2e][_0x37b1('0x38')]=0x0;_0x463520[_0xc9df2e][_0x37b1('0x39')]=0x0;_0x463520[_0xc9df2e]['outboundNoSuchCallsDay']=0x0;_0x463520[_0xc9df2e][_0x37b1('0x3a')]=0x0;_0x463520[_0xc9df2e][_0x37b1('0x3b')]=0x0;_0x463520[_0xc9df2e]['outboundDropCallsDayCallersExit']=0x0;_0x463520[_0xc9df2e][_0x37b1('0x3c')]=0x0;_0x463520[_0xc9df2e]['outboundOriginateFailureCallsDay']=0x0;_0x463520[_0xc9df2e][_0x37b1('0x3d')]=0x0;_0x463520[_0xc9df2e][_0x37b1('0x3e')]=0x0;_0x463520[_0xc9df2e][_0x37b1('0x3f')]=0x0;_0x463520[_0xc9df2e][_0x37b1('0x40')]=0x0;_0x463520[_0xc9df2e][_0x37b1('0x41')]=!![];}}}}Realtime[_0x37b1('0x42')][_0x37b1('0x43')]=function(_0x3d58db,_0x58dc02){for(var _0x3d7fc7 in _0x58dc02){if(_0x3d58db[_0x37b1('0x29')](_0x3d7fc7)){_0x3d58db[_0x3d7fc7]=_0x58dc02[_0x3d7fc7];}}};Realtime['prototype'][_0x37b1('0x44')]=function(){var _0x2b86bc=this;return function(_0x4e3175){if(_0x4e3175){freeIsNotKeyAgent(_0x4e3175,_0x2b86bc[_0x37b1('0x13')]);for(var _0x511d9b=0x0,_0x4367a0={},_0x37a6ca={};_0x511d9b<_0x4e3175[_0x37b1('0x45')];_0x511d9b+=0x1){_0x4367a0=_0x4e3175[_0x511d9b];var _0x21ae1a=_[_0x37b1('0x2c')](_0x4367a0[_0x37b1('0x2d')])?util[_0x37b1('0x2e')](_0x37b1('0x2a'),_0x4367a0[_0x37b1('0x2b')]):_0x4367a0['interface'];if(_[_0x37b1('0x46')](_0x2b86bc[_0x37b1('0x13')][_0x21ae1a])){_0x2b86bc[_0x37b1('0x13')][_0x21ae1a]=new Agent(_0x4367a0);}else{_0x2b86bc[_0x37b1('0x43')](_0x2b86bc[_0x37b1('0x13')][_0x21ae1a],_0x4367a0);}}}return _0x2b86bc[_0x37b1('0x13')];};};Realtime[_0x37b1('0x42')]['initTelephones']=function(){var _0x12178f=this;return function(_0x28cf8e){if(_0x28cf8e){freeIsNotKeySip(_0x28cf8e,_0x12178f[_0x37b1('0x14')]);for(var _0x1579c8=0x0,_0x67b816={},_0x58c5f4={};_0x1579c8<_0x28cf8e[_0x37b1('0x45')];_0x1579c8+=0x1){_0x67b816=_0x28cf8e[_0x1579c8];if(_['isUndefined'](_0x12178f[_0x37b1('0x14')][util[_0x37b1('0x2e')](_0x37b1('0x2a'),_0x67b816[_0x37b1('0x2b')])])){_0x12178f[_0x37b1('0x14')][util[_0x37b1('0x2e')](_0x37b1('0x2a'),_0x67b816[_0x37b1('0x2b')])]=new Telephone(_0x67b816);}else{_0x12178f[_0x37b1('0x43')](_0x12178f[_0x37b1('0x14')][util[_0x37b1('0x2e')](_0x37b1('0x2a'),_0x67b816[_0x37b1('0x2b')])],_0x67b816);}}}return _0x12178f[_0x37b1('0x14')];};};Realtime[_0x37b1('0x42')]['initTrunks']=function(){var _0x3fa24b=this;return function(_0x308310){if(_0x308310){freeIsNotKeySip(_0x308310,_0x3fa24b[_0x37b1('0x15')]);for(var _0x75e707=0x0,_0x1cadfc={},_0x4c883f={};_0x75e707<_0x308310[_0x37b1('0x45')];_0x75e707+=0x1){_0x1cadfc=_0x308310[_0x75e707];if(_[_0x37b1('0x46')](_0x3fa24b[_0x37b1('0x15')][util[_0x37b1('0x2e')](_0x37b1('0x2a'),_0x1cadfc[_0x37b1('0x2b')])])){_0x3fa24b[_0x37b1('0x15')][util[_0x37b1('0x2e')](_0x37b1('0x2a'),_0x1cadfc[_0x37b1('0x2b')])]=new Trunk(_0x1cadfc);}else{_0x3fa24b[_0x37b1('0x43')](_0x3fa24b[_0x37b1('0x15')][util[_0x37b1('0x2e')](_0x37b1('0x2a'),_0x1cadfc[_0x37b1('0x2b')])],_0x1cadfc);}}}return _0x3fa24b['trunks'];};};Realtime['prototype'][_0x37b1('0x47')]=function(){var _0x1f642c=this;return function(_0x5a5700){if(_0x5a5700){freeIsNotKey(_0x5a5700,_0x1f642c[_0x37b1('0x48')],_0x37b1('0x2b'));for(var _0x42e7f7=0x0,_0x3600bc={},_0x326ac4={};_0x42e7f7<_0x5a5700[_0x37b1('0x45')];_0x42e7f7+=0x1){_0x3600bc=_0x5a5700[_0x42e7f7];if(_[_0x37b1('0x46')](_0x1f642c[_0x37b1('0x48')][_0x3600bc[_0x37b1('0x2b')]])){_0x1f642c['voiceQueues'][_0x3600bc[_0x37b1('0x2b')]]=new VoiceQueue(_0x3600bc);}else{_0x1f642c[_0x37b1('0x43')](_0x1f642c[_0x37b1('0x48')][_0x3600bc[_0x37b1('0x2b')]],_0x3600bc);}}}return _0x1f642c[_0x37b1('0x48')];};};Realtime['prototype'][_0x37b1('0x49')]=function(){var _0xf571dc=this;return function(_0x1ca061){if(_0x1ca061){freeIsNotKey(_0x1ca061,_0xf571dc[_0x37b1('0x16')],'id');for(var _0x2b720d=0x0,_0x4194b0={},_0x14f7ee={};_0x2b720d<_0x1ca061[_0x37b1('0x45')];_0x2b720d+=0x1){_0x4194b0=_0x1ca061[_0x2b720d];if(_[_0x37b1('0x46')](_0xf571dc[_0x37b1('0x16')][_0x4194b0['id']])){_0xf571dc[_0x37b1('0x16')][_0x4194b0['id']]=new Trigger(_0x4194b0);}else{_0xf571dc[_0x37b1('0x43')](_0xf571dc[_0x37b1('0x16')][_0x4194b0['id']],_0x4194b0);}}}return _0xf571dc[_0x37b1('0x16')];};};Realtime[_0x37b1('0x42')][_0x37b1('0x4a')]=function(){var _0x36d9b0=this;return function(_0x224459){if(_0x224459){freeIsNotKey(_0x224459,_0x36d9b0[_0x37b1('0x18')],'id');for(var _0x35f70e=0x0,_0x410f1f={},_0x480230={};_0x35f70e<_0x224459[_0x37b1('0x45')];_0x35f70e+=0x1){_0x410f1f=_0x224459[_0x35f70e];if(_[_0x37b1('0x46')](_0x36d9b0[_0x37b1('0x18')][_0x410f1f['id']])){_0x36d9b0[_0x37b1('0x18')][_0x410f1f['id']]=new Template(_0x410f1f);}else{_0x36d9b0[_0x37b1('0x43')](_0x36d9b0['templates'][_0x410f1f['id']],_0x410f1f);}}}return _0x36d9b0[_0x37b1('0x18')];};};Realtime[_0x37b1('0x42')][_0x37b1('0x4b')]=function(){var _0x272285=this;return function(_0x573457){if(_0x573457){freeIsNotKey(_0x573457,_0x272285[_0x37b1('0x4c')],'id');for(var _0x4b4f32=0x0,_0x40f754={},_0x2ec9ec={};_0x4b4f32<_0x573457[_0x37b1('0x45')];_0x4b4f32+=0x1){_0x40f754=_0x573457[_0x4b4f32];if(_[_0x37b1('0x46')](_0x272285[_0x37b1('0x4c')][_0x40f754['id']])){_0x272285[_0x37b1('0x4c')][_0x40f754['id']]=new ZendeskAccount(_0x40f754);}else{_0x272285[_0x37b1('0x43')](_0x272285['zendeskAccounts'][_0x40f754['id']],_0x40f754);}}}return _0x272285[_0x37b1('0x4c')];};};Realtime[_0x37b1('0x42')][_0x37b1('0x4d')]=function(){var _0x5bb7af=this;return function(_0x4535bc){if(_0x4535bc){freeIsNotKey(_0x4535bc,_0x5bb7af[_0x37b1('0x1f')],'id');for(var _0x11cff6=0x0,_0x5d755d={},_0x5f1d57={};_0x11cff6<_0x4535bc[_0x37b1('0x45')];_0x11cff6+=0x1){_0x5d755d=_0x4535bc[_0x11cff6];if(_['isUndefined'](_0x5bb7af['salesforceAccounts'][_0x5d755d['id']])){_0x5bb7af['salesforceAccounts'][_0x5d755d['id']]=new SalesforceAccount(_0x5d755d);}else{_0x5bb7af[_0x37b1('0x43')](_0x5bb7af['salesforceAccounts'][_0x5d755d['id']],_0x5d755d);}}}return _0x5bb7af[_0x37b1('0x1f')];};};Realtime[_0x37b1('0x42')][_0x37b1('0x4e')]=function(){var _0x174593=this;return function(_0x1cc10a){if(_0x1cc10a){freeIsNotKey(_0x1cc10a,_0x174593[_0x37b1('0x21')],'id');for(var _0x1234ff=0x0,_0x345959={},_0x3f0b25={};_0x1234ff<_0x1cc10a[_0x37b1('0x45')];_0x1234ff+=0x1){_0x345959=_0x1cc10a[_0x1234ff];if(_['isUndefined'](_0x174593[_0x37b1('0x21')][_0x345959['id']])){_0x174593['freshdeskAccounts'][_0x345959['id']]=new FreshdeskAccount(_0x345959);}else{_0x174593[_0x37b1('0x43')](_0x174593['freshdeskAccounts'][_0x345959['id']],_0x345959);}}}return _0x174593['freshdeskAccounts'];};};Realtime[_0x37b1('0x42')][_0x37b1('0x4f')]=function(){var _0x31a54b=this;return function(_0x38dc9b){if(_0x38dc9b){freeIsNotKey(_0x38dc9b,_0x31a54b['zohoAccounts'],'id');for(var _0xb6c45b=0x0,_0x2ea0f0={},_0x2d5afb={};_0xb6c45b<_0x38dc9b[_0x37b1('0x45')];_0xb6c45b+=0x1){_0x2ea0f0=_0x38dc9b[_0xb6c45b];if(_['isUndefined'](_0x31a54b[_0x37b1('0x22')][_0x2ea0f0['id']])){_0x31a54b['zohoAccounts'][_0x2ea0f0['id']]=new ZohoAccount(_0x2ea0f0);}else{_0x31a54b[_0x37b1('0x43')](_0x31a54b[_0x37b1('0x22')][_0x2ea0f0['id']],_0x2ea0f0);}}}return _0x31a54b[_0x37b1('0x22')];};};Realtime['prototype']['initDeskAccounts']=function(){var _0x4b2a65=this;return function(_0x419678){if(_0x419678){freeIsNotKey(_0x419678,_0x4b2a65[_0x37b1('0x23')],'id');for(var _0x12abbe=0x0,_0x3c0b43={},_0x4d7b18={};_0x12abbe<_0x419678[_0x37b1('0x45')];_0x12abbe+=0x1){_0x3c0b43=_0x419678[_0x12abbe];if(_['isUndefined'](_0x4b2a65[_0x37b1('0x23')][_0x3c0b43['id']])){_0x4b2a65[_0x37b1('0x23')][_0x3c0b43['id']]=new DeskAccount(_0x3c0b43);}else{_0x4b2a65[_0x37b1('0x43')](_0x4b2a65['deskAccounts'][_0x3c0b43['id']],_0x3c0b43);}}}return _0x4b2a65[_0x37b1('0x23')];};};Realtime[_0x37b1('0x42')][_0x37b1('0x50')]=function(){var _0x434158=this;return function(_0x305040){if(_0x305040){freeIsNotKey(_0x305040,_0x434158[_0x37b1('0x20')],'id');for(var _0x3586e4=0x0,_0xe0fbb3={},_0xde250e={};_0x3586e4<_0x305040['length'];_0x3586e4+=0x1){_0xe0fbb3=_0x305040[_0x3586e4];if(_[_0x37b1('0x46')](_0x434158['sugarcrmAccounts'][_0xe0fbb3['id']])){_0x434158['sugarcrmAccounts'][_0xe0fbb3['id']]=new SugarcrmAccount(_0xe0fbb3);}else{_0x434158[_0x37b1('0x43')](_0x434158[_0x37b1('0x20')][_0xe0fbb3['id']],_0xe0fbb3);}}}return _0x434158['sugarcrmAccounts'];};};Realtime[_0x37b1('0x42')][_0x37b1('0x51')]=function(){var _0x5c683e=this;return function(_0x39bc57){if(_0x39bc57){freeIsNotKey(_0x39bc57,_0x5c683e[_0x37b1('0x24')],'id');for(var _0x1f20d9=0x0,_0x196718={},_0x418d87={};_0x1f20d9<_0x39bc57['length'];_0x1f20d9+=0x1){_0x196718=_0x39bc57[_0x1f20d9];if(_[_0x37b1('0x46')](_0x5c683e[_0x37b1('0x24')][_0x196718['id']])){_0x5c683e[_0x37b1('0x24')][_0x196718['id']]=new VtigerAccount(_0x196718);}else{_0x5c683e['mergeFromDatabase'](_0x5c683e['vtigerAccounts'][_0x196718['id']],_0x196718);}}}return _0x5c683e['vtigerAccounts'];};};Realtime[_0x37b1('0x42')][_0x37b1('0x52')]=function(){var _0xdfc55a=this;return function(_0x34a9a8){if(_0x34a9a8){freeIsNotKey(_0x34a9a8,_0xdfc55a[_0x37b1('0x25')],'id');for(var _0x1ffdbd=0x0,_0x3064f8={},_0x2a3030={};_0x1ffdbd<_0x34a9a8['length'];_0x1ffdbd+=0x1){_0x3064f8=_0x34a9a8[_0x1ffdbd];if(_[_0x37b1('0x46')](_0xdfc55a[_0x37b1('0x25')][_0x3064f8['id']])){_0xdfc55a[_0x37b1('0x25')][_0x3064f8['id']]=new ServicenowAccount(_0x3064f8);}else{_0xdfc55a[_0x37b1('0x43')](_0xdfc55a[_0x37b1('0x25')][_0x3064f8['id']],_0x3064f8);}}}return _0xdfc55a[_0x37b1('0x25')];};};Realtime[_0x37b1('0x42')][_0x37b1('0x53')]=function(){var _0x25400b=this;return function(_0x1ed688){if(_0x1ed688){freeIsNotKey(_0x1ed688,_0x25400b[_0x37b1('0x26')],'id');for(var _0x42a154=0x0,_0x11dc79={},_0x415b33={};_0x42a154<_0x1ed688[_0x37b1('0x45')];_0x42a154+=0x1){_0x11dc79=_0x1ed688[_0x42a154];if(_[_0x37b1('0x46')](_0x25400b[_0x37b1('0x26')][_0x11dc79['id']])){_0x25400b[_0x37b1('0x26')][_0x11dc79['id']]=new Dynamics365Account(_0x11dc79);}else{_0x25400b['mergeFromDatabase'](_0x25400b[_0x37b1('0x26')][_0x11dc79['id']],_0x11dc79);}}}return _0x25400b[_0x37b1('0x26')];};};Realtime[_0x37b1('0x42')][_0x37b1('0x54')]=function(){var _0x5ccd07=this;return function(_0x11338b){if(_0x11338b){freeIsNotKey(_0x11338b,_0x5ccd07['freshsalesAccounts'],'id');for(var _0x454c44=0x0,_0x333edf={},_0x111af1={};_0x454c44<_0x11338b[_0x37b1('0x45')];_0x454c44+=0x1){_0x333edf=_0x11338b[_0x454c44];if(_['isUndefined'](_0x5ccd07[_0x37b1('0x55')][_0x333edf['id']])){_0x5ccd07[_0x37b1('0x55')][_0x333edf['id']]=new FreshsalesAccount(_0x333edf);}else{_0x5ccd07[_0x37b1('0x43')](_0x5ccd07[_0x37b1('0x55')][_0x333edf['id']],_0x333edf);}}}return _0x5ccd07['freshsalesAccounts'];};};Realtime[_0x37b1('0x42')][_0x37b1('0x56')]=function(){var _0x2a3908=this;return function(_0x3f5045){for(var _0x4cae1e=0x0;_0x4cae1e<_0x3f5045[_0x37b1('0x45')];_0x4cae1e+=0x1){_[_0x37b1('0x57')](_0x2a3908[_0x37b1('0x48')][_0x3f5045[_0x4cae1e][_0x37b1('0x2b')]],_0x3f5045[_0x4cae1e]);}return _0x2a3908['voiceQueues'];};};Realtime[_0x37b1('0x42')][_0x37b1('0x58')]=function(){var _0x19b3c0=this;return function(_0x592f04){clearVoiceQueues(_0x19b3c0[_0x37b1('0x48')]);if(_0x592f04){_0x592f04=_[_0x37b1('0x59')](_0x592f04,_0x37b1('0x5a'));for(var _0x45f725 in _0x592f04){if(_0x592f04[_0x37b1('0x29')](_0x45f725)){var _0x1582cb={};for(var _0x326a30=0x0;_0x326a30<_0x592f04[_0x45f725][_0x37b1('0x45')];_0x326a30+=0x1){var _0x4a9e33=_0x592f04[_0x45f725][_0x326a30][_0x37b1('0x5b')];if(_0x19b3c0[_0x37b1('0x48')][_0x4a9e33]){if(_0x592f04[_0x45f725][_0x326a30][_0x37b1('0x5c')]){_0x19b3c0[_0x37b1('0x48')][_0x4a9e33][_0x37b1('0x36')]+=0x1;}if(_0x592f04[_0x45f725][_0x326a30][_0x37b1('0x5d')]){_0x19b3c0[_0x37b1('0x48')][_0x4a9e33][_0x37b1('0x37')]+=0x1;}_0x19b3c0[_0x37b1('0x48')][_0x4a9e33][_0x37b1('0x5e')]+=moment(_0x592f04[_0x45f725][_0x326a30][_0x37b1('0x5f')])[_0x37b1('0x60')](moment(_0x592f04[_0x45f725][_0x326a30][_0x37b1('0x61')]),'seconds')||0x0;if(_0x326a30===_0x592f04[_0x45f725]['length']-0x1){_0x19b3c0['voiceQueues'][_0x4a9e33][_0x37b1('0x31')]+=moment(_0x592f04[_0x45f725][_0x326a30][_0x37b1('0x62')]||_0x592f04[_0x45f725][_0x326a30]['queuecallerabandonAt']||_0x592f04[_0x45f725][_0x326a30][_0x37b1('0x63')])[_0x37b1('0x60')](moment(_0x592f04[_0x45f725][_0x326a30]['queuecallerjoinAt']),_0x37b1('0x64'))||0x0;_0x19b3c0['voiceQueues'][_0x4a9e33][_0x37b1('0x2f')]+=0x1;if(_0x592f04[_0x45f725][_0x326a30][_0x37b1('0x65')]){_0x19b3c0[_0x37b1('0x48')][_0x4a9e33][_0x37b1('0x30')]+=0x1;_0x19b3c0[_0x37b1('0x48')][_0x4a9e33][_0x37b1('0x32')]+=moment(_0x592f04[_0x45f725][_0x326a30][_0x37b1('0x62')])[_0x37b1('0x60')](moment(_0x592f04[_0x45f725][_0x326a30][_0x37b1('0x5f')]),_0x37b1('0x64'))||0x0;}}else{_0x19b3c0[_0x37b1('0x48')][_0x4a9e33][_0x37b1('0x31')]+=_0x19b3c0['voiceQueues'][_0x4a9e33]['sumHoldTime']||0x0;}}}}}}return _0x19b3c0['voiceQueues'];};};Realtime[_0x37b1('0x42')][_0x37b1('0x66')]=function(){var _0x13a917=this;return function(_0x13f263){clearVoiceCallReports(_0x13a917[_0x37b1('0x19')]);if(_0x13f263){for(var _0x4b6a86=0x0;_0x4b6a86<_0x13f263['length'];_0x4b6a86+=0x1){_0x13a917[_0x37b1('0x19')][_0x37b1('0x2f')]+=0x1;_0x13a917[_0x37b1('0x19')][_0x37b1('0x31')]+=_0x13f263[_0x4b6a86][_0x37b1('0x67')];if(_0x13f263[_0x4b6a86]['disposition']==='ANSWERED'){_0x13a917[_0x37b1('0x19')][_0x37b1('0x30')]+=0x1;_0x13a917['outbound'][_0x37b1('0x5e')]+=_0x13f263[_0x4b6a86][_0x37b1('0x67')]-_0x13f263[_0x4b6a86][_0x37b1('0x68')]||0x0;_0x13a917['outbound']['sumBillable']+=_0x13f263[_0x4b6a86][_0x37b1('0x68')];}}}return _0x13a917[_0x37b1('0x19')];};};Realtime['prototype'][_0x37b1('0x69')]=function(){var _0x4cc578=this;return function(_0x1c239f){if(_0x1c239f){freeIsNotKey(_0x1c239f,_0x4cc578[_0x37b1('0x17')],_0x37b1('0x2b'));for(var _0x5550fa=0x0,_0xc10d00={};_0x5550fa<_0x1c239f[_0x37b1('0x45')];_0x5550fa+=0x1){_0xc10d00=_0x1c239f[_0x5550fa];if(_[_0x37b1('0x46')](_0x4cc578[_0x37b1('0x17')][_0xc10d00[_0x37b1('0x2b')]])){_0x4cc578[_0x37b1('0x17')][_0xc10d00['name']]=new Campaign(_0xc10d00);}else{_0x4cc578[_0x37b1('0x43')](_0x4cc578['campaigns'][_0xc10d00[_0x37b1('0x2b')]],_0xc10d00);_0x4cc578[_0x37b1('0x17')][_0xc10d00[_0x37b1('0x2b')]][_0x37b1('0x6a')]=_0xc10d00[_0x37b1('0x6b')]?_0xc10d00[_0x37b1('0x6b')][_0x37b1('0x2b')]:undefined;}}}return _0x4cc578[_0x37b1('0x17')];};};Realtime[_0x37b1('0x42')][_0x37b1('0x6c')]=function(){var _0x455281=this;return function(_0x71b763){if(_0x71b763){freeIsNotKey(_0x71b763,_0x455281[_0x37b1('0x1a')],'id');for(var _0x380792=0x0,_0x23ddf9={};_0x380792<_0x71b763['length'];_0x380792+=0x1){_0x23ddf9=_0x71b763[_0x380792];if(_[_0x37b1('0x46')](_0x455281['voiceExtensions'][_0x23ddf9['id']])){_0x455281[_0x37b1('0x1a')][_0x23ddf9['id']]=new VoiceExtension(_0x23ddf9);}else{_0x455281[_0x37b1('0x43')](_0x455281[_0x37b1('0x1a')][_0x23ddf9['id']],_0x23ddf9);}}}return _0x455281[_0x37b1('0x1a')];};};Realtime['prototype'][_0x37b1('0x6d')]=function(){var _0x3bacf6=this;return function(_0xb9cc0d){clearCampaigns(_0x3bacf6['campaigns']);for(var _0x499fd9=0x0;_0x499fd9<_0xb9cc0d['length'];_0x499fd9+=0x1){_['merge'](_0x3bacf6[_0x37b1('0x17')][_0xb9cc0d[_0x499fd9]['name']],_0xb9cc0d[_0x499fd9]);}return _0x3bacf6['campaigns'];};};Realtime[_0x37b1('0x42')][_0x37b1('0x6e')]=function(){var _0x2be04f=this;return function(_0x505a66){if(_0x505a66){freeIsNotKey(_0x505a66,_0x2be04f['faxAccounts'],'id');for(var _0x30af60=0x0,_0x358550={},_0x84bef0={};_0x30af60<_0x505a66[_0x37b1('0x45')];_0x30af60+=0x1){_0x358550=_0x505a66[_0x30af60];if(_[_0x37b1('0x46')](_0x2be04f[_0x37b1('0x27')][_0x358550['id']])){_0x2be04f[_0x37b1('0x27')][_0x358550['id']]=new FaxAccount(_0x358550);}else{_0x2be04f[_0x37b1('0x43')](_0x2be04f[_0x37b1('0x27')][_0x358550['id']],_0x358550);}}}return _0x2be04f['faxAccounts'];};};module[_0x37b1('0x6f')]=Realtime;
\ No newline at end of file
+var _0x2117=['outboundAnswerAgiCallsDay','outboundCongestionCallsDay','outboundDropCallsDayTimeout','outboundDropCallsDayCallersExit','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundRejectCallsDay','outboundReCallsDay','outboundAnswerCallsDay','queueStatusComplete','prototype','mergeFromDatabase','initAgents','agents','isUndefined','initTelephones','trunks','length','initVoiceQueues','voiceQueues','initTriggers','initTemplates','templates','initSalesforceAccounts','initFreshdeskAccounts','initZohoAccounts','initDeskAccounts','sugarcrmAccounts','initVtigerAccounts','initServicenowAccounts','servicenowAccounts','initDynamics365Accounts','initFreshsalesAccounts','initVoiceQueueHopperHistory','initVoiceQueueReports','groupBy','uniqueid','queuecallerexit','queuecallerleaveAt','diff','seconds','queuecallercompleteAt','queuecallerabandonAt','queuecallerexitAt','queuecallerjoinAt','disposition','duration','dialQueueProject','SquareProject','initVoiceExtensions','initCampaignHopperHistory','merge','initFaxAccounts','faxAccounts','exports','bluebird','util','moment','../model/agent','../model/telephone','../model/trunk','../model/voiceQueue','../model/template','../model/campaign','../model/voiceExtension','../model/zendeskAccount','../model/salesforceAccount','../model/freshdeskAccount','../model/sugarcrmAccount','../model/zohoAccount','../model/deskAccount','../model/faxAccount','telephones','triggers','campaigns','outbound','voiceExtensions','channels','queueChannels','outboundChannels','timers','settings','zendeskAccounts','salesforceAccounts','freshdeskAccounts','zohoAccounts','deskAccounts','vtigerAccounts','dynamics365Accounts','freshsalesAccounts','mapKeys','format','SIP/%s','hasOwnProperty','interface','name','total','sumDuration','isEmpty','ivrAnswerCallsDay','answered','unmanaged','abandoned','sumHoldTime','sumBillable'];(function(_0x31204f,_0x27f210){var _0x5a45a2=function(_0x1403c6){while(--_0x1403c6){_0x31204f['push'](_0x31204f['shift']());}};_0x5a45a2(++_0x27f210);}(_0x2117,0xa0));var _0x7211=function(_0x1d2a55,_0x15b8b1){_0x1d2a55=_0x1d2a55-0x0;var _0x401303=_0x2117[_0x1d2a55];return _0x401303;};'use strict';var BPromise=require(_0x7211('0x0'));var util=require(_0x7211('0x1'));var _=require('lodash');var moment=require(_0x7211('0x2'));var Agent=require(_0x7211('0x3'));var Telephone=require(_0x7211('0x4'));var Trunk=require(_0x7211('0x5'));var VoiceQueue=require(_0x7211('0x6'));var Trigger=require('../model/trigger');var Template=require(_0x7211('0x7'));var Campaign=require(_0x7211('0x8'));var VoiceExtension=require(_0x7211('0x9'));var ZendeskAccount=require(_0x7211('0xa'));var SalesforceAccount=require(_0x7211('0xb'));var FreshdeskAccount=require(_0x7211('0xc'));var SugarcrmAccount=require(_0x7211('0xd'));var ZohoAccount=require(_0x7211('0xe'));var DeskAccount=require(_0x7211('0xf'));var VtigerAccount=require('../model/vtigerAccount');var ServicenowAccount=require('../model/servicenowAccount');var Dynamics365Account=require('../model/dynamics365Account');var FreshsalesAccount=require('../model/freshsalesAccount');var FaxAccount=require(_0x7211('0x10'));var Realtime=function(){this['agents']={};this[_0x7211('0x11')]={};this['trunks']={};this['voiceQueues']={};this[_0x7211('0x12')]={};this[_0x7211('0x13')]={};this['templates']={};this[_0x7211('0x14')]={'total':0x0,'answered':0x0,'sumHoldTime':0x0,'sumDuration':0x0,'sumBillable':0x0};this[_0x7211('0x15')]={};this[_0x7211('0x16')]={};this[_0x7211('0x17')]={};this[_0x7211('0x18')]={};this[_0x7211('0x19')]={};this[_0x7211('0x1a')]={};this[_0x7211('0x1b')]={};this[_0x7211('0x1c')]={};this['sugarcrmAccounts']={};this[_0x7211('0x1d')]={};this[_0x7211('0x1e')]={};this[_0x7211('0x1f')]={};this[_0x7211('0x20')]={};this['servicenowAccounts']={};this[_0x7211('0x21')]={};this[_0x7211('0x22')]={};this['faxAccounts']={};};function freeIsNotKey(_0x40928a,_0x53c7ed,_0x607a97){var _0x4100b8=_[_0x7211('0x23')](_0x40928a,function(_0x3fe2ba,_0x1772b1){return _0x3fe2ba[_0x607a97];});for(var _0x56c652 in _0x53c7ed){if(_0x53c7ed['hasOwnProperty'](_0x56c652)){if(!_0x4100b8[_0x56c652]){delete _0x53c7ed[_0x56c652];}}}}function freeIsNotKeySip(_0x44e669,_0x5afd14){var _0x57128d=_[_0x7211('0x23')](_0x44e669,function(_0x33c568,_0x520c2a){return util[_0x7211('0x24')](_0x7211('0x25'),_0x33c568['name']);});for(var _0x5a39c1 in _0x5afd14){if(_0x5afd14[_0x7211('0x26')](_0x5a39c1)){if(!_0x57128d[_0x5a39c1]){delete _0x5afd14[_0x5a39c1];}}}}function freeIsNotKeyAgent(_0x9c658,_0x17e494){var _0x26c96d=_[_0x7211('0x23')](_0x9c658,function(_0x9cf077,_0x511319){var _0x4793d7=_['isNil'](_0x9cf077[_0x7211('0x27')])?util[_0x7211('0x24')](_0x7211('0x25'),_0x9cf077[_0x7211('0x28')]):_0x9cf077[_0x7211('0x27')];return _0x4793d7;});for(var _0x29cf69 in _0x17e494){if(_0x17e494[_0x7211('0x26')](_0x29cf69)){if(!_0x26c96d[_0x29cf69]){delete _0x17e494[_0x29cf69];}}}}function clearVoiceCallReports(_0x30e38f){_0x30e38f[_0x7211('0x29')]=0x0;_0x30e38f['answered']=0x0;_0x30e38f['sumHoldTime']=0x0;_0x30e38f[_0x7211('0x2a')]=0x0;_0x30e38f['sumBillable']=0x0;}function clearCampaigns(_0x35ea6){if(!_[_0x7211('0x2b')](_0x35ea6)){for(var _0x5be630 in _0x35ea6){if(_0x35ea6[_0x7211('0x26')](_0x5be630)){_0x35ea6[_0x5be630]['ivrTotalCallsDays']=0x0;_0x35ea6[_0x5be630][_0x7211('0x2c')]=0x0;}}}}function clearVoiceQueues(_0x1169ee){if(!_[_0x7211('0x2b')](_0x1169ee)){for(var _0x783eae in _0x1169ee){if(_0x1169ee[_0x7211('0x26')](_0x783eae)){_0x1169ee[_0x783eae][_0x7211('0x29')]=0x0;_0x1169ee[_0x783eae][_0x7211('0x2d')]=0x0;_0x1169ee[_0x783eae][_0x7211('0x2e')]=0x0;_0x1169ee[_0x783eae][_0x7211('0x2f')]=0x0;_0x1169ee[_0x783eae][_0x7211('0x30')]=0x0;_0x1169ee[_0x783eae][_0x7211('0x2a')]=0x0;_0x1169ee[_0x783eae][_0x7211('0x31')]=0x0;_0x1169ee[_0x783eae][_0x7211('0x32')]=0x0;_0x1169ee[_0x783eae]['outboundNoAnswerCallsDay']=0x0;_0x1169ee[_0x783eae]['outboundBusyCallsDay']=0x0;_0x1169ee[_0x783eae][_0x7211('0x33')]=0x0;_0x1169ee[_0x783eae]['outboundNoSuchCallsDay']=0x0;_0x1169ee[_0x783eae]['outboundUnknownCallsDay']=0x0;_0x1169ee[_0x783eae][_0x7211('0x34')]=0x0;_0x1169ee[_0x783eae][_0x7211('0x35')]=0x0;_0x1169ee[_0x783eae][_0x7211('0x36')]=0x0;_0x1169ee[_0x783eae][_0x7211('0x37')]=0x0;_0x1169ee[_0x783eae][_0x7211('0x38')]=0x0;_0x1169ee[_0x783eae][_0x7211('0x39')]=0x0;_0x1169ee[_0x783eae][_0x7211('0x32')]=0x0;_0x1169ee[_0x783eae][_0x7211('0x3a')]=0x0;_0x1169ee[_0x783eae][_0x7211('0x3b')]=!![];}}}}Realtime[_0x7211('0x3c')][_0x7211('0x3d')]=function(_0x3e1345,_0x4d8dc8){for(var _0x1cd091 in _0x4d8dc8){if(_0x3e1345[_0x7211('0x26')](_0x1cd091)){_0x3e1345[_0x1cd091]=_0x4d8dc8[_0x1cd091];}}};Realtime['prototype'][_0x7211('0x3e')]=function(){var _0x38aeec=this;return function(_0x4b2145){if(_0x4b2145){freeIsNotKeyAgent(_0x4b2145,_0x38aeec[_0x7211('0x3f')]);for(var _0x2b8e26=0x0,_0x51835c={},_0x10c6a8={};_0x2b8e26<_0x4b2145['length'];_0x2b8e26+=0x1){_0x51835c=_0x4b2145[_0x2b8e26];var _0x5f3f56=_['isNil'](_0x51835c[_0x7211('0x27')])?util[_0x7211('0x24')](_0x7211('0x25'),_0x51835c['name']):_0x51835c[_0x7211('0x27')];if(_[_0x7211('0x40')](_0x38aeec['agents'][_0x5f3f56])){_0x38aeec[_0x7211('0x3f')][_0x5f3f56]=new Agent(_0x51835c);}else{_0x38aeec[_0x7211('0x3d')](_0x38aeec['agents'][_0x5f3f56],_0x51835c);}}}return _0x38aeec[_0x7211('0x3f')];};};Realtime['prototype'][_0x7211('0x41')]=function(){var _0x42f82a=this;return function(_0xa6275d){if(_0xa6275d){freeIsNotKeySip(_0xa6275d,_0x42f82a['telephones']);for(var _0x12a0d2=0x0,_0x57324b={},_0x4d4cf8={};_0x12a0d2<_0xa6275d['length'];_0x12a0d2+=0x1){_0x57324b=_0xa6275d[_0x12a0d2];if(_[_0x7211('0x40')](_0x42f82a[_0x7211('0x11')][util[_0x7211('0x24')](_0x7211('0x25'),_0x57324b[_0x7211('0x28')])])){_0x42f82a[_0x7211('0x11')][util['format'](_0x7211('0x25'),_0x57324b[_0x7211('0x28')])]=new Telephone(_0x57324b);}else{_0x42f82a[_0x7211('0x3d')](_0x42f82a[_0x7211('0x11')][util[_0x7211('0x24')](_0x7211('0x25'),_0x57324b['name'])],_0x57324b);}}}return _0x42f82a[_0x7211('0x11')];};};Realtime[_0x7211('0x3c')]['initTrunks']=function(){var _0x275f70=this;return function(_0x572ff1){if(_0x572ff1){freeIsNotKeySip(_0x572ff1,_0x275f70[_0x7211('0x42')]);for(var _0x10cdc0=0x0,_0x4d50c7={},_0x19e800={};_0x10cdc0<_0x572ff1[_0x7211('0x43')];_0x10cdc0+=0x1){_0x4d50c7=_0x572ff1[_0x10cdc0];if(_[_0x7211('0x40')](_0x275f70[_0x7211('0x42')][util[_0x7211('0x24')](_0x7211('0x25'),_0x4d50c7[_0x7211('0x28')])])){_0x275f70[_0x7211('0x42')][util['format'](_0x7211('0x25'),_0x4d50c7['name'])]=new Trunk(_0x4d50c7);}else{_0x275f70[_0x7211('0x3d')](_0x275f70[_0x7211('0x42')][util['format'](_0x7211('0x25'),_0x4d50c7[_0x7211('0x28')])],_0x4d50c7);}}}return _0x275f70[_0x7211('0x42')];};};Realtime[_0x7211('0x3c')][_0x7211('0x44')]=function(){var _0x42b73b=this;return function(_0x2c167b){if(_0x2c167b){freeIsNotKey(_0x2c167b,_0x42b73b[_0x7211('0x45')],_0x7211('0x28'));for(var _0x30f036=0x0,_0x44c202={},_0xdc51b8={};_0x30f036<_0x2c167b['length'];_0x30f036+=0x1){_0x44c202=_0x2c167b[_0x30f036];if(_[_0x7211('0x40')](_0x42b73b['voiceQueues'][_0x44c202[_0x7211('0x28')]])){_0x42b73b[_0x7211('0x45')][_0x44c202[_0x7211('0x28')]]=new VoiceQueue(_0x44c202);}else{_0x42b73b[_0x7211('0x3d')](_0x42b73b[_0x7211('0x45')][_0x44c202[_0x7211('0x28')]],_0x44c202);}}}return _0x42b73b[_0x7211('0x45')];};};Realtime[_0x7211('0x3c')][_0x7211('0x46')]=function(){var _0x339612=this;return function(_0xcb7642){if(_0xcb7642){freeIsNotKey(_0xcb7642,_0x339612[_0x7211('0x12')],'id');for(var _0x793351=0x0,_0x414ea2={},_0x5b2bab={};_0x793351<_0xcb7642[_0x7211('0x43')];_0x793351+=0x1){_0x414ea2=_0xcb7642[_0x793351];if(_[_0x7211('0x40')](_0x339612[_0x7211('0x12')][_0x414ea2['id']])){_0x339612['triggers'][_0x414ea2['id']]=new Trigger(_0x414ea2);}else{_0x339612['mergeFromDatabase'](_0x339612[_0x7211('0x12')][_0x414ea2['id']],_0x414ea2);}}}return _0x339612['triggers'];};};Realtime[_0x7211('0x3c')][_0x7211('0x47')]=function(){var _0x555207=this;return function(_0x85e34b){if(_0x85e34b){freeIsNotKey(_0x85e34b,_0x555207[_0x7211('0x48')],'id');for(var _0x21a3d5=0x0,_0x4c6e76={},_0x3c4122={};_0x21a3d5<_0x85e34b[_0x7211('0x43')];_0x21a3d5+=0x1){_0x4c6e76=_0x85e34b[_0x21a3d5];if(_['isUndefined'](_0x555207[_0x7211('0x48')][_0x4c6e76['id']])){_0x555207[_0x7211('0x48')][_0x4c6e76['id']]=new Template(_0x4c6e76);}else{_0x555207[_0x7211('0x3d')](_0x555207[_0x7211('0x48')][_0x4c6e76['id']],_0x4c6e76);}}}return _0x555207[_0x7211('0x48')];};};Realtime[_0x7211('0x3c')]['initZendeskAccounts']=function(){var _0xcb72f8=this;return function(_0x4512b9){if(_0x4512b9){freeIsNotKey(_0x4512b9,_0xcb72f8[_0x7211('0x1b')],'id');for(var _0x45ee3f=0x0,_0x518231={},_0x3bb880={};_0x45ee3f<_0x4512b9[_0x7211('0x43')];_0x45ee3f+=0x1){_0x518231=_0x4512b9[_0x45ee3f];if(_[_0x7211('0x40')](_0xcb72f8[_0x7211('0x1b')][_0x518231['id']])){_0xcb72f8['zendeskAccounts'][_0x518231['id']]=new ZendeskAccount(_0x518231);}else{_0xcb72f8[_0x7211('0x3d')](_0xcb72f8['zendeskAccounts'][_0x518231['id']],_0x518231);}}}return _0xcb72f8[_0x7211('0x1b')];};};Realtime[_0x7211('0x3c')][_0x7211('0x49')]=function(){var _0x32f5f6=this;return function(_0x2fa770){if(_0x2fa770){freeIsNotKey(_0x2fa770,_0x32f5f6[_0x7211('0x1c')],'id');for(var _0x3a2977=0x0,_0x3688c9={},_0x156475={};_0x3a2977<_0x2fa770[_0x7211('0x43')];_0x3a2977+=0x1){_0x3688c9=_0x2fa770[_0x3a2977];if(_['isUndefined'](_0x32f5f6[_0x7211('0x1c')][_0x3688c9['id']])){_0x32f5f6[_0x7211('0x1c')][_0x3688c9['id']]=new SalesforceAccount(_0x3688c9);}else{_0x32f5f6[_0x7211('0x3d')](_0x32f5f6[_0x7211('0x1c')][_0x3688c9['id']],_0x3688c9);}}}return _0x32f5f6['salesforceAccounts'];};};Realtime[_0x7211('0x3c')][_0x7211('0x4a')]=function(){var _0x6d4447=this;return function(_0x1aa8ab){if(_0x1aa8ab){freeIsNotKey(_0x1aa8ab,_0x6d4447['freshdeskAccounts'],'id');for(var _0x3564e0=0x0,_0x26196a={},_0xadb442={};_0x3564e0<_0x1aa8ab[_0x7211('0x43')];_0x3564e0+=0x1){_0x26196a=_0x1aa8ab[_0x3564e0];if(_['isUndefined'](_0x6d4447[_0x7211('0x1d')][_0x26196a['id']])){_0x6d4447['freshdeskAccounts'][_0x26196a['id']]=new FreshdeskAccount(_0x26196a);}else{_0x6d4447[_0x7211('0x3d')](_0x6d4447[_0x7211('0x1d')][_0x26196a['id']],_0x26196a);}}}return _0x6d4447['freshdeskAccounts'];};};Realtime[_0x7211('0x3c')][_0x7211('0x4b')]=function(){var _0x24bc9f=this;return function(_0x45c611){if(_0x45c611){freeIsNotKey(_0x45c611,_0x24bc9f['zohoAccounts'],'id');for(var _0x3bf11b=0x0,_0x5c94f4={},_0x24d803={};_0x3bf11b<_0x45c611[_0x7211('0x43')];_0x3bf11b+=0x1){_0x5c94f4=_0x45c611[_0x3bf11b];if(_[_0x7211('0x40')](_0x24bc9f[_0x7211('0x1e')][_0x5c94f4['id']])){_0x24bc9f[_0x7211('0x1e')][_0x5c94f4['id']]=new ZohoAccount(_0x5c94f4);}else{_0x24bc9f[_0x7211('0x3d')](_0x24bc9f[_0x7211('0x1e')][_0x5c94f4['id']],_0x5c94f4);}}}return _0x24bc9f[_0x7211('0x1e')];};};Realtime[_0x7211('0x3c')][_0x7211('0x4c')]=function(){var _0xb596b3=this;return function(_0x26a540){if(_0x26a540){freeIsNotKey(_0x26a540,_0xb596b3[_0x7211('0x1f')],'id');for(var _0x576a55=0x0,_0x4f9816={},_0x4383be={};_0x576a55<_0x26a540[_0x7211('0x43')];_0x576a55+=0x1){_0x4f9816=_0x26a540[_0x576a55];if(_[_0x7211('0x40')](_0xb596b3[_0x7211('0x1f')][_0x4f9816['id']])){_0xb596b3[_0x7211('0x1f')][_0x4f9816['id']]=new DeskAccount(_0x4f9816);}else{_0xb596b3['mergeFromDatabase'](_0xb596b3[_0x7211('0x1f')][_0x4f9816['id']],_0x4f9816);}}}return _0xb596b3[_0x7211('0x1f')];};};Realtime[_0x7211('0x3c')]['initSugarcrmAccounts']=function(){var _0x524f46=this;return function(_0x2dd867){if(_0x2dd867){freeIsNotKey(_0x2dd867,_0x524f46[_0x7211('0x4d')],'id');for(var _0x269fa1=0x0,_0x5792cd={},_0x15974c={};_0x269fa1<_0x2dd867[_0x7211('0x43')];_0x269fa1+=0x1){_0x5792cd=_0x2dd867[_0x269fa1];if(_['isUndefined'](_0x524f46[_0x7211('0x4d')][_0x5792cd['id']])){_0x524f46[_0x7211('0x4d')][_0x5792cd['id']]=new SugarcrmAccount(_0x5792cd);}else{_0x524f46[_0x7211('0x3d')](_0x524f46['sugarcrmAccounts'][_0x5792cd['id']],_0x5792cd);}}}return _0x524f46[_0x7211('0x4d')];};};Realtime[_0x7211('0x3c')][_0x7211('0x4e')]=function(){var _0x388c63=this;return function(_0x285500){if(_0x285500){freeIsNotKey(_0x285500,_0x388c63[_0x7211('0x20')],'id');for(var _0x1477d0=0x0,_0x270eed={},_0x137329={};_0x1477d0<_0x285500[_0x7211('0x43')];_0x1477d0+=0x1){_0x270eed=_0x285500[_0x1477d0];if(_[_0x7211('0x40')](_0x388c63[_0x7211('0x20')][_0x270eed['id']])){_0x388c63[_0x7211('0x20')][_0x270eed['id']]=new VtigerAccount(_0x270eed);}else{_0x388c63[_0x7211('0x3d')](_0x388c63[_0x7211('0x20')][_0x270eed['id']],_0x270eed);}}}return _0x388c63[_0x7211('0x20')];};};Realtime[_0x7211('0x3c')][_0x7211('0x4f')]=function(){var _0x22b737=this;return function(_0x5cffac){if(_0x5cffac){freeIsNotKey(_0x5cffac,_0x22b737[_0x7211('0x50')],'id');for(var _0x1cc1e6=0x0,_0x36e4e7={},_0x3026bc={};_0x1cc1e6<_0x5cffac[_0x7211('0x43')];_0x1cc1e6+=0x1){_0x36e4e7=_0x5cffac[_0x1cc1e6];if(_[_0x7211('0x40')](_0x22b737[_0x7211('0x50')][_0x36e4e7['id']])){_0x22b737['servicenowAccounts'][_0x36e4e7['id']]=new ServicenowAccount(_0x36e4e7);}else{_0x22b737[_0x7211('0x3d')](_0x22b737[_0x7211('0x50')][_0x36e4e7['id']],_0x36e4e7);}}}return _0x22b737[_0x7211('0x50')];};};Realtime[_0x7211('0x3c')][_0x7211('0x51')]=function(){var _0x135af5=this;return function(_0x3739ad){if(_0x3739ad){freeIsNotKey(_0x3739ad,_0x135af5['dynamics365Accounts'],'id');for(var _0x2d5a9e=0x0,_0x23d2e6={},_0x7bcb71={};_0x2d5a9e<_0x3739ad[_0x7211('0x43')];_0x2d5a9e+=0x1){_0x23d2e6=_0x3739ad[_0x2d5a9e];if(_[_0x7211('0x40')](_0x135af5[_0x7211('0x21')][_0x23d2e6['id']])){_0x135af5[_0x7211('0x21')][_0x23d2e6['id']]=new Dynamics365Account(_0x23d2e6);}else{_0x135af5[_0x7211('0x3d')](_0x135af5[_0x7211('0x21')][_0x23d2e6['id']],_0x23d2e6);}}}return _0x135af5[_0x7211('0x21')];};};Realtime[_0x7211('0x3c')][_0x7211('0x52')]=function(){var _0x161d38=this;return function(_0xe49afd){if(_0xe49afd){freeIsNotKey(_0xe49afd,_0x161d38['freshsalesAccounts'],'id');for(var _0x3ef7a1=0x0,_0x34b8d3={},_0x395dac={};_0x3ef7a1<_0xe49afd['length'];_0x3ef7a1+=0x1){_0x34b8d3=_0xe49afd[_0x3ef7a1];if(_[_0x7211('0x40')](_0x161d38[_0x7211('0x22')][_0x34b8d3['id']])){_0x161d38['freshsalesAccounts'][_0x34b8d3['id']]=new FreshsalesAccount(_0x34b8d3);}else{_0x161d38[_0x7211('0x3d')](_0x161d38['freshsalesAccounts'][_0x34b8d3['id']],_0x34b8d3);}}}return _0x161d38[_0x7211('0x22')];};};Realtime[_0x7211('0x3c')][_0x7211('0x53')]=function(){var _0x135cc3=this;return function(_0x2e7d88){for(var _0x4d903c=0x0;_0x4d903c<_0x2e7d88['length'];_0x4d903c+=0x1){_['merge'](_0x135cc3['voiceQueues'][_0x2e7d88[_0x4d903c][_0x7211('0x28')]],_0x2e7d88[_0x4d903c]);}return _0x135cc3[_0x7211('0x45')];};};Realtime[_0x7211('0x3c')][_0x7211('0x54')]=function(){var _0x3d9d13=this;return function(_0x3caab1){clearVoiceQueues(_0x3d9d13['voiceQueues']);if(_0x3caab1){_0x3caab1=_[_0x7211('0x55')](_0x3caab1,_0x7211('0x56'));for(var _0x222857 in _0x3caab1){if(_0x3caab1[_0x7211('0x26')](_0x222857)){var _0x1bc64f={};for(var _0xbc767a=0x0;_0xbc767a<_0x3caab1[_0x222857][_0x7211('0x43')];_0xbc767a+=0x1){var _0x3e3360=_0x3caab1[_0x222857][_0xbc767a]['queue'];if(_0x3d9d13['voiceQueues'][_0x3e3360]){if(_0x3caab1[_0x222857][_0xbc767a][_0x7211('0x57')]){_0x3d9d13[_0x7211('0x45')][_0x3e3360][_0x7211('0x2e')]+=0x1;}if(_0x3caab1[_0x222857][_0xbc767a]['queuecallerabandon']){_0x3d9d13[_0x7211('0x45')][_0x3e3360][_0x7211('0x2f')]+=0x1;}_0x3d9d13[_0x7211('0x45')][_0x3e3360][_0x7211('0x30')]+=moment(_0x3caab1[_0x222857][_0xbc767a][_0x7211('0x58')])[_0x7211('0x59')](moment(_0x3caab1[_0x222857][_0xbc767a]['queuecallerjoinAt']),_0x7211('0x5a'))||0x0;if(_0xbc767a===_0x3caab1[_0x222857][_0x7211('0x43')]-0x1){_0x3d9d13[_0x7211('0x45')][_0x3e3360]['sumDuration']+=moment(_0x3caab1[_0x222857][_0xbc767a][_0x7211('0x5b')]||_0x3caab1[_0x222857][_0xbc767a][_0x7211('0x5c')]||_0x3caab1[_0x222857][_0xbc767a][_0x7211('0x5d')])[_0x7211('0x59')](moment(_0x3caab1[_0x222857][_0xbc767a][_0x7211('0x5e')]),_0x7211('0x5a'))||0x0;_0x3d9d13['voiceQueues'][_0x3e3360][_0x7211('0x29')]+=0x1;if(_0x3caab1[_0x222857][_0xbc767a]['queuecallercomplete']){_0x3d9d13[_0x7211('0x45')][_0x3e3360]['answered']+=0x1;_0x3d9d13[_0x7211('0x45')][_0x3e3360][_0x7211('0x31')]+=moment(_0x3caab1[_0x222857][_0xbc767a][_0x7211('0x5b')])['diff'](moment(_0x3caab1[_0x222857][_0xbc767a][_0x7211('0x58')]),_0x7211('0x5a'))||0x0;}}else{_0x3d9d13['voiceQueues'][_0x3e3360][_0x7211('0x2a')]+=_0x3d9d13[_0x7211('0x45')][_0x3e3360][_0x7211('0x30')]||0x0;}}}}}}return _0x3d9d13['voiceQueues'];};};Realtime['prototype']['initVoiceCallReports']=function(){var _0x16abd9=this;return function(_0x5d6c68){clearVoiceCallReports(_0x16abd9['outbound']);if(_0x5d6c68){for(var _0xe26ef=0x0;_0xe26ef<_0x5d6c68['length'];_0xe26ef+=0x1){_0x16abd9[_0x7211('0x14')][_0x7211('0x29')]+=0x1;_0x16abd9[_0x7211('0x14')]['sumDuration']+=_0x5d6c68[_0xe26ef]['duration'];if(_0x5d6c68[_0xe26ef][_0x7211('0x5f')]==='ANSWERED'){_0x16abd9[_0x7211('0x14')][_0x7211('0x2d')]+=0x1;_0x16abd9[_0x7211('0x14')]['sumHoldTime']+=_0x5d6c68[_0xe26ef][_0x7211('0x60')]-_0x5d6c68[_0xe26ef]['billableseconds']||0x0;_0x16abd9['outbound'][_0x7211('0x31')]+=_0x5d6c68[_0xe26ef]['billableseconds'];}}}return _0x16abd9[_0x7211('0x14')];};};Realtime['prototype']['initCampaigns']=function(){var _0x2d9759=this;return function(_0x4f830){if(_0x4f830){freeIsNotKey(_0x4f830,_0x2d9759[_0x7211('0x13')],_0x7211('0x28'));for(var _0x4243a9=0x0,_0x3984a0={};_0x4243a9<_0x4f830[_0x7211('0x43')];_0x4243a9+=0x1){_0x3984a0=_0x4f830[_0x4243a9];if(_[_0x7211('0x40')](_0x2d9759[_0x7211('0x13')][_0x3984a0[_0x7211('0x28')]])){_0x2d9759[_0x7211('0x13')][_0x3984a0['name']]=new Campaign(_0x3984a0);}else{_0x2d9759[_0x7211('0x3d')](_0x2d9759[_0x7211('0x13')][_0x3984a0[_0x7211('0x28')]],_0x3984a0);_0x2d9759[_0x7211('0x13')][_0x3984a0[_0x7211('0x28')]][_0x7211('0x61')]=_0x3984a0['SquareProject']?_0x3984a0[_0x7211('0x62')][_0x7211('0x28')]:undefined;}}}return _0x2d9759[_0x7211('0x13')];};};Realtime[_0x7211('0x3c')][_0x7211('0x63')]=function(){var _0xfb815=this;return function(_0x2edc75){if(_0x2edc75){freeIsNotKey(_0x2edc75,_0xfb815[_0x7211('0x15')],'id');for(var _0x207ec1=0x0,_0x27f2d6={};_0x207ec1<_0x2edc75[_0x7211('0x43')];_0x207ec1+=0x1){_0x27f2d6=_0x2edc75[_0x207ec1];if(_[_0x7211('0x40')](_0xfb815[_0x7211('0x15')][_0x27f2d6['id']])){_0xfb815[_0x7211('0x15')][_0x27f2d6['id']]=new VoiceExtension(_0x27f2d6);}else{_0xfb815[_0x7211('0x3d')](_0xfb815[_0x7211('0x15')][_0x27f2d6['id']],_0x27f2d6);}}}return _0xfb815[_0x7211('0x15')];};};Realtime[_0x7211('0x3c')][_0x7211('0x64')]=function(){var _0x27ac6f=this;return function(_0x99acca){clearCampaigns(_0x27ac6f[_0x7211('0x13')]);for(var _0x3274e1=0x0;_0x3274e1<_0x99acca[_0x7211('0x43')];_0x3274e1+=0x1){_[_0x7211('0x65')](_0x27ac6f['campaigns'][_0x99acca[_0x3274e1]['name']],_0x99acca[_0x3274e1]);}return _0x27ac6f['campaigns'];};};Realtime[_0x7211('0x3c')][_0x7211('0x66')]=function(){var _0x4e8bc7=this;return function(_0x14854f){if(_0x14854f){freeIsNotKey(_0x14854f,_0x4e8bc7['faxAccounts'],'id');for(var _0x5a71ac=0x0,_0x59ff17={},_0x51e6a0={};_0x5a71ac<_0x14854f[_0x7211('0x43')];_0x5a71ac+=0x1){_0x59ff17=_0x14854f[_0x5a71ac];if(_['isUndefined'](_0x4e8bc7[_0x7211('0x67')][_0x59ff17['id']])){_0x4e8bc7[_0x7211('0x67')][_0x59ff17['id']]=new FaxAccount(_0x59ff17);}else{_0x4e8bc7[_0x7211('0x3d')](_0x4e8bc7[_0x7211('0x67')][_0x59ff17['id']],_0x59ff17);}}}return _0x4e8bc7[_0x7211('0x67')];};};module[_0x7211('0x68')]=Realtime;
\ No newline at end of file
index 7cb55c7..eeb801f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb9cc=['../rpc/voiceDialReport','../rpc/memberReport','../rpc/voiceQueueReport','../rpc/voiceRecording','../rpc/voiceTransferReport','./voiceCallReport','./voiceAgentReport','./voiceDialReport','./userReport','realtime','agents','prototype','sync','xdr','disabled','voiceQueueReport','bind','custom:voiceCallReport','voiceCallReport','custom:voiceAgentReport','voiceAgentReport','custom:voiceDialReport','voiceDialReport','blindtransfer','blindTransfer','attendedTransfer','findAgent','find','name','isNil','telephones','accountcode','interface','format','SIP/%s','length','connectedlinenum','assigned','lastAssignedTo','queuecallercomplete','queuecallercompleteAt','YYYY-MM-DD\x20HH:mm:ss','queuecallerexit','queuecallerexitAt','create','match','destination','type','dialer','queue','lastdata','context','from-voip-provider','callerid','from-sip','xcally-motion-preview','calleridpreview','calleridnum','originatecalleridnum','channel','destinationchannel','disposition','ANSWERED','\x22%s\x22\x20<%s>','calleridname','transfers','linkedid','transfereelinkedid','uniqueid','monitor','monitors','filename','createdAt','exten','connectedlinename','membername','xcally-motion-dialer','isArray','forEach','startsWith','Local','substring','indexOf','mobile','phone','transfererlinkedid','exports','lodash','util','../ami','../rpc/voiceAgentReport'];(function(_0x3ac67f,_0x33b9c9){var _0x18588f=function(_0x2bc50b){while(--_0x2bc50b){_0x3ac67f['push'](_0x3ac67f['shift']());}};_0x18588f(++_0x33b9c9);}(_0xb9cc,0xb2));var _0xcb9c=function(_0x192c7c,_0x43a61f){_0x192c7c=_0x192c7c-0x0;var _0x329d8b=_0xb9cc[_0x192c7c];return _0x329d8b;};'use strict';var _=require(_0xcb9c('0x0'));var moment=require('moment');var util=require(_0xcb9c('0x1'));var config=require('../../../config/environment');var ami=require(_0xcb9c('0x2'));var RpcVoiceAgentReport=require(_0xcb9c('0x3'));var RpcVoiceCallReport=require('../rpc/voiceCallReport');var RpcVoiceDialReport=require(_0xcb9c('0x4'));var RpcMemberReport=require(_0xcb9c('0x5'));var RpcVoiceQueueReport=require(_0xcb9c('0x6'));var RpcVoiceRecording=require(_0xcb9c('0x7'));var RpcVoiceTransferReport=require(_0xcb9c('0x8'));var VoiceQueueReport=require('./voiceQueueReport');var VoiceCallReport=require(_0xcb9c('0x9'));var VoiceAgentReport=require(_0xcb9c('0xa'));var VoiceDialReport=require(_0xcb9c('0xb'));var UserReport=require(_0xcb9c('0xc'));function Report(_0x55f2e3){this[_0xcb9c('0xd')]=_0x55f2e3;this[_0xcb9c('0xe')]=_0x55f2e3['agents'];this['telephones']=_0x55f2e3['telephones'];}Report[_0xcb9c('0xf')][_0xcb9c('0x10')]=function(_0x72034a){var _0x226671=new VoiceQueueReport(this[_0xcb9c('0xd')]);var _0x223ace=new VoiceAgentReport(this['realtime']);var _0xe13117=new VoiceDialReport(this[_0xcb9c('0xd')]);var _0x458499=new VoiceCallReport(this[_0xcb9c('0xd')]);var _0x38f52f=new UserReport(this[_0xcb9c('0xd')]);if(config[_0xcb9c('0x11')]&&config[_0xcb9c('0x11')][_0xcb9c('0x12')]){ami['on']('custom:voiceQueueReport',this[_0xcb9c('0x13')][_0xcb9c('0x14')](this));ami['on'](_0xcb9c('0x15'),this[_0xcb9c('0x16')][_0xcb9c('0x14')](this));ami['on'](_0xcb9c('0x17'),this[_0xcb9c('0x18')][_0xcb9c('0x14')](this));ami['on'](_0xcb9c('0x19'),this[_0xcb9c('0x1a')][_0xcb9c('0x14')](this));ami['on'](_0xcb9c('0x1b'),this[_0xcb9c('0x1c')][_0xcb9c('0x14')](this));ami['on']('attendedtransfer',this[_0xcb9c('0x1d')][_0xcb9c('0x14')](this));}};Report[_0xcb9c('0xf')][_0xcb9c('0x1e')]=function(_0x44e2ba){var _0x150faa;_0x150faa=_[_0xcb9c('0x1f')](this[_0xcb9c('0xe')],function(_0x15d129){return _0x15d129['accountcode']==_0x44e2ba||_0x15d129[_0xcb9c('0x20')]==_0x44e2ba;});if(_[_0xcb9c('0x21')](_0x150faa)){var _0x135cd4=_[_0xcb9c('0x1f')](this[_0xcb9c('0x22')],function(_0x527413){return _0x527413[_0xcb9c('0x23')]==_0x44e2ba||_0x527413[_0xcb9c('0x20')]==_0x44e2ba;});if(_0x135cd4){_0x150faa=_[_0xcb9c('0x1f')](this[_0xcb9c('0xe')],function(_0x43cf3d){return _0x43cf3d[_0xcb9c('0x24')]==util[_0xcb9c('0x25')](_0xcb9c('0x26'),_0x135cd4[_0xcb9c('0x20')]);});}}return _0x150faa;};Report['prototype'][_0xcb9c('0x13')]=function(_0x1ec92d){for(var _0x3ec4c0=0x0;_0x3ec4c0<_0x1ec92d[_0xcb9c('0x27')];_0x3ec4c0+=0x1){var _0xf83084=this['findAgent'](_0x1ec92d[_0x3ec4c0][_0xcb9c('0x28')]);if(_0xf83084){_0x1ec92d[_0x3ec4c0]['accountcode']=_0xf83084['accountcode'];_0x1ec92d[_0x3ec4c0][_0xcb9c('0x29')]=!![];_0x1ec92d[_0x3ec4c0][_0xcb9c('0x2a')]=_0xf83084[_0xcb9c('0x20')];_0x1ec92d[_0x3ec4c0][_0xcb9c('0x24')]=_[_0xcb9c('0x21')](_0xf83084[_0xcb9c('0x24')])?util['format']('SIP/%s',_0xf83084[_0xcb9c('0x20')]):_0xf83084[_0xcb9c('0x24')];if(_0x1ec92d[_0x3ec4c0][_0xcb9c('0x2b')]){_0x1ec92d[_0x3ec4c0][_0xcb9c('0x2c')]=moment()['format'](_0xcb9c('0x2d'));}if(_0x1ec92d[_0x3ec4c0][_0xcb9c('0x2e')]){_0x1ec92d[_0x3ec4c0][_0xcb9c('0x2f')]=moment()[_0xcb9c('0x25')]('YYYY-MM-DD\x20HH:mm:ss');}RpcMemberReport['voiceQueueReport'](_0x1ec92d[_0x3ec4c0]);}RpcVoiceQueueReport[_0xcb9c('0x30')](_0x1ec92d[_0x3ec4c0]);}};function extractCalleridNumber(_0x39c3ca){var _0x59da01=_0x39c3ca[_0xcb9c('0x31')](/<(.*?)>/);return _0x59da01?_0x59da01[0x1]:_0x39c3ca;}Report[_0xcb9c('0xf')]['voiceCallReport']=function(_0xded0b2){_0xded0b2['destination']=_0xded0b2[_0xcb9c('0x32')]||_0xded0b2['exten'];if(_0xded0b2[_0xcb9c('0x33')]==_0xcb9c('0x34')){_0xded0b2['lastapplication']=_0xcb9c('0x35');_0xded0b2[_0xcb9c('0x36')]=_0xded0b2[_0xcb9c('0x35')];if(_0xded0b2[_0xcb9c('0x37')]==_0xcb9c('0x38')){_0xded0b2['accountcode']='';_0xded0b2['destination']=extractCalleridNumber(_0xded0b2[_0xcb9c('0x39')]);}else if(_0xded0b2[_0xcb9c('0x37')]==_0xcb9c('0x3a')){if(_0xded0b2[_0xcb9c('0x32')]==_0xcb9c('0x3b')){_0xded0b2[_0xcb9c('0x32')]=extractCalleridNumber(_0xded0b2[_0xcb9c('0x3c')]);_0xded0b2[_0xcb9c('0x3d')]=_0xded0b2[_0xcb9c('0x3e')];_0xded0b2['destinationchannel']=[_0xded0b2[_0xcb9c('0x3f')],_0xded0b2['channel']=_0xded0b2[_0xcb9c('0x40')]][0x0];_0xded0b2['callerid']=_0xded0b2[_0xcb9c('0x3c')];}else{_0xded0b2['destination']=_0xded0b2['calleridnum'];_0xded0b2[_0xcb9c('0x3d')]=_0xded0b2[_0xcb9c('0x3e')];if(_0xded0b2[_0xcb9c('0x41')]==_0xcb9c('0x42')){_0xded0b2[_0xcb9c('0x23')]=_0xded0b2[_0xcb9c('0x28')];}else{_0xded0b2['accountcode']='';}}}}else{_0xded0b2[_0xcb9c('0x39')]=util['format'](_0xcb9c('0x43'),_0xded0b2[_0xcb9c('0x44')],_0xded0b2['calleridnum']);}if(RpcVoiceTransferReport[_0xcb9c('0x45')][_0xded0b2[_0xcb9c('0x46')]]){var _0x482bb0=RpcVoiceTransferReport[_0xcb9c('0x45')][_0xded0b2[_0xcb9c('0x46')]];_0x482bb0[_0xcb9c('0x47')]=_0xded0b2[_0xcb9c('0x48')];RpcVoiceTransferReport['blindTransfer'](_0x482bb0);delete RpcVoiceTransferReport[_0xcb9c('0x45')][_0xded0b2[_0xcb9c('0x46')]];}RpcVoiceCallReport[_0xcb9c('0x30')](_0xded0b2);if(_0xded0b2[_0xcb9c('0x49')]){for(var _0x11800b=0x0;_0x11800b<_0xded0b2[_0xcb9c('0x4a')][_0xcb9c('0x27')];_0x11800b+=0x1){_0xded0b2['monitorFilename']=_0xded0b2[_0xcb9c('0x4a')][_0x11800b][_0xcb9c('0x4b')];_0xded0b2[_0xcb9c('0x4c')]=_0xded0b2[_0xcb9c('0x4a')][_0x11800b]['createdAt'];if(_0xded0b2[_0xcb9c('0x4d')]==_0xcb9c('0x3b')){_0xded0b2[_0xcb9c('0x3d')]=_0xded0b2['connectedlinenum'];_0xded0b2[_0xcb9c('0x44')]=_0xded0b2[_0xcb9c('0x4e')];_0xded0b2[_0xcb9c('0x28')]=_0xded0b2['accountcode'];_0xded0b2[_0xcb9c('0x4e')]=_0xded0b2[_0xcb9c('0x4f')];_0xded0b2[_0xcb9c('0x4d')]=_0xded0b2['originatecalleridnum'];}else if(_0xded0b2[_0xcb9c('0x4d')]==_0xcb9c('0x50')){_0xded0b2[_0xcb9c('0x3d')]=_0xded0b2['destination'];_0xded0b2[_0xcb9c('0x4d')]=_0xded0b2[_0xcb9c('0x3e')];}RpcVoiceRecording[_0xcb9c('0x30')](_0xded0b2);}}};Report['prototype']['voiceAgentReport']=function(_0x3f6dac){if(_[_0xcb9c('0x51')](_0x3f6dac)){_0x3f6dac[_0xcb9c('0x52')](function(_0x13f30d){RpcVoiceAgentReport[_0xcb9c('0x30')](_0x13f30d);});}else{RpcVoiceAgentReport[_0xcb9c('0x30')](_0x3f6dac);}};Report[_0xcb9c('0xf')]['voiceDialReport']=function(_0x3313e1){RpcVoiceDialReport[_0xcb9c('0x30')](_0x3313e1);var _0x4ae642;var _0x579a8a;var _0x35540b=_0x3313e1[_0xcb9c('0x3f')];if(_[_0xcb9c('0x53')](_0x35540b,_0xcb9c('0x54'))){_0x579a8a=_0x35540b[_0xcb9c('0x55')](_0x35540b[_0xcb9c('0x56')]('/')+0x1,_0x35540b['indexOf']('@'));_0x4ae642=_[_0xcb9c('0x1f')](this[_0xcb9c('0xe')],function(_0x2398d4){return _0x2398d4[_0xcb9c('0x57')]==_0x579a8a||_0x2398d4[_0xcb9c('0x58')]==_0x579a8a||_0x2398d4[_0xcb9c('0x23')]==_0x579a8a;});}else{_0x579a8a=_0x35540b['substring'](_0x35540b[_0xcb9c('0x56')]('/')+0x1,_0x35540b['lastIndexOf']('-'));_0x4ae642=this[_0xcb9c('0x1e')](_0x579a8a);}if(_0x4ae642){_0x3313e1[_0xcb9c('0x24')]=_['isNil'](_0x4ae642[_0xcb9c('0x24')])?util['format'](_0xcb9c('0x26'),_0x4ae642[_0xcb9c('0x20')]):_0x4ae642[_0xcb9c('0x24')];_0x3313e1[_0xcb9c('0x4f')]=_0x4ae642[_0xcb9c('0x20')];_0x3313e1[_0xcb9c('0x23')]=_0x4ae642['accountcode'];RpcMemberReport['voiceDialReport'](_0x3313e1);}};Report[_0xcb9c('0xf')][_0xcb9c('0x1c')]=function(_0x739c30){RpcVoiceTransferReport[_0xcb9c('0x45')][_0x739c30[_0xcb9c('0x59')]]=_0x739c30;};Report['prototype'][_0xcb9c('0x1d')]=function(_0x4d2ca9){RpcVoiceTransferReport['attendedTransfer'](_0x4d2ca9);};module[_0xcb9c('0x5a')]=Report;
\ No newline at end of file
+var _0x8d8f=['custom:voiceQueueReport','voiceQueueReport','bind','custom:voiceCallReport','custom:voiceAgentReport','voiceDialReport','blindtransfer','blindTransfer','attendedTransfer','findAgent','find','accountcode','isNil','name','interface','format','connectedlinenum','assigned','lastAssignedTo','SIP/%s','queuecallercompleteAt','YYYY-MM-DD\x20HH:mm:ss','queuecallerexitAt','match','destination','exten','type','dialer','lastapplication','queue','from-voip-provider','callerid','context','from-sip','xcally-motion-preview','calleridpreview','calleridnum','originatecalleridnum','destinationchannel','channel','\x22%s\x22\x20<%s>','calleridname','transfers','linkedid','transfereelinkedid','uniqueid','create','monitor','monitors','length','filename','createdAt','connectedlinename','membername','xcally-motion-dialer','voiceAgentReport','isArray','startsWith','Local','substring','phone','indexOf','lastIndexOf','transfererlinkedid','exports','lodash','moment','util','../../../config/environment','../ami','../rpc/voiceAgentReport','../rpc/voiceCallReport','../rpc/voiceDialReport','../rpc/memberReport','../rpc/voiceQueueReport','../rpc/voiceRecording','../rpc/voiceTransferReport','./voiceAgentReport','./userReport','realtime','agents','telephones','prototype','xdr'];(function(_0x55fbfc,_0x350f41){var _0xf7bbd8=function(_0x997e69){while(--_0x997e69){_0x55fbfc['push'](_0x55fbfc['shift']());}};_0xf7bbd8(++_0x350f41);}(_0x8d8f,0x13d));var _0xf8d8=function(_0x235e2b,_0x232235){_0x235e2b=_0x235e2b-0x0;var _0x4e9f0a=_0x8d8f[_0x235e2b];return _0x4e9f0a;};'use strict';var _=require(_0xf8d8('0x0'));var moment=require(_0xf8d8('0x1'));var util=require(_0xf8d8('0x2'));var config=require(_0xf8d8('0x3'));var ami=require(_0xf8d8('0x4'));var RpcVoiceAgentReport=require(_0xf8d8('0x5'));var RpcVoiceCallReport=require(_0xf8d8('0x6'));var RpcVoiceDialReport=require(_0xf8d8('0x7'));var RpcMemberReport=require(_0xf8d8('0x8'));var RpcVoiceQueueReport=require(_0xf8d8('0x9'));var RpcVoiceRecording=require(_0xf8d8('0xa'));var RpcVoiceTransferReport=require(_0xf8d8('0xb'));var VoiceQueueReport=require('./voiceQueueReport');var VoiceCallReport=require('./voiceCallReport');var VoiceAgentReport=require(_0xf8d8('0xc'));var VoiceDialReport=require('./voiceDialReport');var UserReport=require(_0xf8d8('0xd'));function Report(_0x2d3fb8){this[_0xf8d8('0xe')]=_0x2d3fb8;this[_0xf8d8('0xf')]=_0x2d3fb8[_0xf8d8('0xf')];this[_0xf8d8('0x10')]=_0x2d3fb8[_0xf8d8('0x10')];}Report[_0xf8d8('0x11')]['sync']=function(_0x2f0a2e){var _0xc92ff4=new VoiceQueueReport(this[_0xf8d8('0xe')]);var _0x563b93=new VoiceAgentReport(this[_0xf8d8('0xe')]);var _0x3504f6=new VoiceDialReport(this[_0xf8d8('0xe')]);var _0x330131=new VoiceCallReport(this[_0xf8d8('0xe')]);var _0x115c63=new UserReport(this[_0xf8d8('0xe')]);if(config[_0xf8d8('0x12')]&&config[_0xf8d8('0x12')]['disabled']){ami['on'](_0xf8d8('0x13'),this[_0xf8d8('0x14')][_0xf8d8('0x15')](this));ami['on'](_0xf8d8('0x16'),this['voiceCallReport'][_0xf8d8('0x15')](this));ami['on'](_0xf8d8('0x17'),this['voiceAgentReport'][_0xf8d8('0x15')](this));ami['on']('custom:voiceDialReport',this[_0xf8d8('0x18')]['bind'](this));ami['on'](_0xf8d8('0x19'),this[_0xf8d8('0x1a')][_0xf8d8('0x15')](this));ami['on']('attendedtransfer',this[_0xf8d8('0x1b')][_0xf8d8('0x15')](this));}};Report['prototype'][_0xf8d8('0x1c')]=function(_0x5b39e2){var _0x492466;_0x492466=_[_0xf8d8('0x1d')](this[_0xf8d8('0xf')],function(_0x80918a){return _0x80918a[_0xf8d8('0x1e')]==_0x5b39e2||_0x80918a['name']==_0x5b39e2;});if(_[_0xf8d8('0x1f')](_0x492466)){var _0x583271=_[_0xf8d8('0x1d')](this[_0xf8d8('0x10')],function(_0x5af9f8){return _0x5af9f8['accountcode']==_0x5b39e2||_0x5af9f8[_0xf8d8('0x20')]==_0x5b39e2;});if(_0x583271){_0x492466=_[_0xf8d8('0x1d')](this[_0xf8d8('0xf')],function(_0x20371a){return _0x20371a[_0xf8d8('0x21')]==util[_0xf8d8('0x22')]('SIP/%s',_0x583271['name']);});}}return _0x492466;};Report[_0xf8d8('0x11')][_0xf8d8('0x14')]=function(_0x395651){for(var _0x5d4065=0x0;_0x5d4065<_0x395651['length'];_0x5d4065+=0x1){var _0x363583=this[_0xf8d8('0x1c')](_0x395651[_0x5d4065][_0xf8d8('0x23')]);if(_0x363583){_0x395651[_0x5d4065]['accountcode']=_0x363583[_0xf8d8('0x1e')];_0x395651[_0x5d4065][_0xf8d8('0x24')]=!![];_0x395651[_0x5d4065][_0xf8d8('0x25')]=_0x363583[_0xf8d8('0x20')];_0x395651[_0x5d4065][_0xf8d8('0x21')]=_[_0xf8d8('0x1f')](_0x363583[_0xf8d8('0x21')])?util['format'](_0xf8d8('0x26'),_0x363583[_0xf8d8('0x20')]):_0x363583['interface'];if(_0x395651[_0x5d4065]['queuecallercomplete']){_0x395651[_0x5d4065][_0xf8d8('0x27')]=moment()[_0xf8d8('0x22')](_0xf8d8('0x28'));}if(_0x395651[_0x5d4065]['queuecallerexit']){_0x395651[_0x5d4065][_0xf8d8('0x29')]=moment()[_0xf8d8('0x22')](_0xf8d8('0x28'));}RpcMemberReport['voiceQueueReport'](_0x395651[_0x5d4065]);}RpcVoiceQueueReport['create'](_0x395651[_0x5d4065]);}};function extractCalleridNumber(_0x5df0de){var _0x45a502=_0x5df0de[_0xf8d8('0x2a')](/<(.*?)>/);return _0x45a502?_0x45a502[0x1]:_0x5df0de;}Report[_0xf8d8('0x11')]['voiceCallReport']=function(_0x5c9cf6){_0x5c9cf6['destination']=_0x5c9cf6[_0xf8d8('0x2b')]||_0x5c9cf6[_0xf8d8('0x2c')];if(_0x5c9cf6[_0xf8d8('0x2d')]==_0xf8d8('0x2e')){_0x5c9cf6[_0xf8d8('0x2f')]='queue';_0x5c9cf6['lastdata']=_0x5c9cf6[_0xf8d8('0x30')];if(_0x5c9cf6['context']==_0xf8d8('0x31')){_0x5c9cf6[_0xf8d8('0x1e')]='';_0x5c9cf6[_0xf8d8('0x2b')]=extractCalleridNumber(_0x5c9cf6[_0xf8d8('0x32')]);}else if(_0x5c9cf6[_0xf8d8('0x33')]==_0xf8d8('0x34')){if(_0x5c9cf6[_0xf8d8('0x2b')]==_0xf8d8('0x35')){_0x5c9cf6[_0xf8d8('0x2b')]=extractCalleridNumber(_0x5c9cf6[_0xf8d8('0x36')]);_0x5c9cf6[_0xf8d8('0x37')]=_0x5c9cf6[_0xf8d8('0x38')];_0x5c9cf6[_0xf8d8('0x39')]=[_0x5c9cf6[_0xf8d8('0x3a')],_0x5c9cf6['channel']=_0x5c9cf6[_0xf8d8('0x39')]][0x0];_0x5c9cf6['callerid']=_0x5c9cf6[_0xf8d8('0x36')];}else{_0x5c9cf6[_0xf8d8('0x2b')]=_0x5c9cf6[_0xf8d8('0x37')];_0x5c9cf6[_0xf8d8('0x37')]=_0x5c9cf6[_0xf8d8('0x38')];if(_0x5c9cf6['disposition']=='ANSWERED'){_0x5c9cf6[_0xf8d8('0x1e')]=_0x5c9cf6[_0xf8d8('0x23')];}else{_0x5c9cf6[_0xf8d8('0x1e')]='';}}}}else{_0x5c9cf6[_0xf8d8('0x32')]=util[_0xf8d8('0x22')](_0xf8d8('0x3b'),_0x5c9cf6[_0xf8d8('0x3c')],_0x5c9cf6[_0xf8d8('0x37')]);}if(RpcVoiceTransferReport[_0xf8d8('0x3d')][_0x5c9cf6[_0xf8d8('0x3e')]]){var _0x2b89a6=RpcVoiceTransferReport[_0xf8d8('0x3d')][_0x5c9cf6[_0xf8d8('0x3e')]];_0x2b89a6[_0xf8d8('0x3f')]=_0x5c9cf6[_0xf8d8('0x40')];RpcVoiceTransferReport[_0xf8d8('0x1a')](_0x2b89a6);delete RpcVoiceTransferReport[_0xf8d8('0x3d')][_0x5c9cf6[_0xf8d8('0x3e')]];}RpcVoiceCallReport[_0xf8d8('0x41')](_0x5c9cf6);if(_0x5c9cf6[_0xf8d8('0x42')]){for(var _0x402036=0x0;_0x402036<_0x5c9cf6[_0xf8d8('0x43')][_0xf8d8('0x44')];_0x402036+=0x1){_0x5c9cf6['monitorFilename']=_0x5c9cf6[_0xf8d8('0x43')][_0x402036][_0xf8d8('0x45')];_0x5c9cf6[_0xf8d8('0x46')]=_0x5c9cf6[_0xf8d8('0x43')][_0x402036][_0xf8d8('0x46')];if(_0x5c9cf6[_0xf8d8('0x2c')]==_0xf8d8('0x35')){_0x5c9cf6[_0xf8d8('0x37')]=_0x5c9cf6['connectedlinenum'];_0x5c9cf6['calleridname']=_0x5c9cf6[_0xf8d8('0x47')];_0x5c9cf6[_0xf8d8('0x23')]=_0x5c9cf6[_0xf8d8('0x1e')];_0x5c9cf6[_0xf8d8('0x47')]=_0x5c9cf6[_0xf8d8('0x48')];_0x5c9cf6['exten']=_0x5c9cf6[_0xf8d8('0x38')];}else if(_0x5c9cf6['exten']==_0xf8d8('0x49')){_0x5c9cf6[_0xf8d8('0x37')]=_0x5c9cf6[_0xf8d8('0x2b')];_0x5c9cf6[_0xf8d8('0x2c')]=_0x5c9cf6[_0xf8d8('0x38')];}RpcVoiceRecording[_0xf8d8('0x41')](_0x5c9cf6);}}};Report['prototype'][_0xf8d8('0x4a')]=function(_0x5220e8){if(_[_0xf8d8('0x4b')](_0x5220e8)){_0x5220e8['forEach'](function(_0x12e276){RpcVoiceAgentReport['create'](_0x12e276);});}else{RpcVoiceAgentReport[_0xf8d8('0x41')](_0x5220e8);}};Report['prototype'][_0xf8d8('0x18')]=function(_0x19789d){RpcVoiceDialReport[_0xf8d8('0x41')](_0x19789d);var _0x368599;var _0x186e41;var _0x45e937=_0x19789d[_0xf8d8('0x3a')];if(_[_0xf8d8('0x4c')](_0x45e937,_0xf8d8('0x4d'))){_0x186e41=_0x45e937[_0xf8d8('0x4e')](_0x45e937['indexOf']('/')+0x1,_0x45e937['indexOf']('@'));_0x368599=_[_0xf8d8('0x1d')](this[_0xf8d8('0xf')],function(_0x16ca6b){return _0x16ca6b['mobile']==_0x186e41||_0x16ca6b[_0xf8d8('0x4f')]==_0x186e41||_0x16ca6b[_0xf8d8('0x1e')]==_0x186e41;});}else{_0x186e41=_0x45e937['substring'](_0x45e937[_0xf8d8('0x50')]('/')+0x1,_0x45e937[_0xf8d8('0x51')]('-'));_0x368599=this[_0xf8d8('0x1c')](_0x186e41);}if(_0x368599){_0x19789d[_0xf8d8('0x21')]=_[_0xf8d8('0x1f')](_0x368599[_0xf8d8('0x21')])?util[_0xf8d8('0x22')](_0xf8d8('0x26'),_0x368599[_0xf8d8('0x20')]):_0x368599[_0xf8d8('0x21')];_0x19789d[_0xf8d8('0x48')]=_0x368599['name'];_0x19789d['accountcode']=_0x368599[_0xf8d8('0x1e')];RpcMemberReport[_0xf8d8('0x18')](_0x19789d);}};Report[_0xf8d8('0x11')][_0xf8d8('0x1a')]=function(_0x59b5ff){RpcVoiceTransferReport['transfers'][_0x59b5ff[_0xf8d8('0x52')]]=_0x59b5ff;};Report[_0xf8d8('0x11')]['attendedTransfer']=function(_0xf4f93e){RpcVoiceTransferReport[_0xf8d8('0x1b')](_0xf4f93e);};module[_0xf8d8('0x53')]=Report;
\ No newline at end of file
index b6a0c4e..5e1db2c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe28a=['[userReport][devicestatelist]','inspect','actionSipPeerStatus','syncRealtimeShow','prototype','isNotNull','isUndefined','emit','info','[userReport][registry]\x20registry:%s\x20state:%s','debug','[userReport][registry]','username','stateRegistry','state','merge','omit','event','[userReport][registry]\x20sending\x20trunk:save\x20event:','format','trunk:%s','name','[userReport][devicestatechange]\x20device:%s\x20state:%s','device','[userReport][devicestatechange]','local','toLowerCase','inuse','stateTime','toNumber','telephone:%s','telephone:save','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','trunk:save','substring','indexOf','find','phone','accountcode','updateStatusRealtime','syncPeerStatus','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','peer','registered','status','address','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','exports','moment','util','bluebird','../../../config/logger','ami','redis','localhost','socket.io-emitter','trunks','agents','telephones','registryentry','syncRegistry','bind','registry','devicestatechange','syncDeviceState','peerstatus','then','actionSipShowRegistry','[userReport][sipshowregistry]','resolve','catch','error'];(function(_0x81480d,_0x44cb9a){var _0x26d57f=function(_0x158e6b){while(--_0x158e6b){_0x81480d['push'](_0x81480d['shift']());}};_0x26d57f(++_0x44cb9a);}(_0xe28a,0x19e));var _0xae28=function(_0x4cd210,_0x1accbb){_0x4cd210=_0x4cd210-0x0;var _0x36fc26=_0xe28a[_0x4cd210];return _0x36fc26;};'use strict';var _=require('lodash');var moment=require(_0xae28('0x0'));var util=require(_0xae28('0x1'));var Redis=require('ioredis');var BPromise=require(_0xae28('0x2'));var config=require('../../../config/environment');var logger=require(_0xae28('0x3'))(_0xae28('0x4'));var ami=require('../ami');config[_0xae28('0x5')]=_['defaults'](config[_0xae28('0x5')],{'host':_0xae28('0x6'),'port':0x18eb});var io=require(_0xae28('0x7'))(new Redis(config['redis']));function UserReport(_0x55b856){this[_0xae28('0x8')]=_0x55b856[_0xae28('0x8')];this[_0xae28('0x9')]=_0x55b856[_0xae28('0x9')];this[_0xae28('0xa')]=_0x55b856[_0xae28('0xa')];ami['on'](_0xae28('0xb'),this[_0xae28('0xc')][_0xae28('0xd')](this));ami['on'](_0xae28('0xe'),this[_0xae28('0xc')]['bind'](this));ami['on'](_0xae28('0xf'),this[_0xae28('0x10')]['bind'](this));ami['on'](_0xae28('0x11'),this['syncPeerStatus']['bind'](this));return this['syncRealtimeShow']();}function showSipRegistrations(){Promise['resolve']()[_0xae28('0x12')](ami[_0xae28('0x13')]())['catch'](function(_0x27402b){logger['error'](_0xae28('0x14'),util['inspect'](_0x27402b,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0xae28('0x15')]()[_0xae28('0x12')](ami['actionDeviceStateList']())[_0xae28('0x16')](function(_0x447c3b){logger[_0xae28('0x17')](_0xae28('0x18'),util[_0xae28('0x19')](_0x447c3b,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0xae28('0x15')]()[_0xae28('0x12')](ami[_0xae28('0x1a')]())[_0xae28('0x16')](function(_0x9582d8){logger['error']('[userReport][sippeerstatus]',util['inspect'](_0x9582d8,{'showHidden':![],'depth':null}));});}UserReport['prototype'][_0xae28('0x1b')]=function(){setInterval(function(){BPromise[_0xae28('0x15')]()[_0xae28('0x12')](showSipRegistrations())['then'](listDeviceStates())['then'](showPeersStatus());},0x32c8);};UserReport[_0xae28('0x1c')][_0xae28('0x1d')]=function(_0x55b275){return _0x55b275!==null&&!_[_0xae28('0x1e')](_0x55b275);};UserReport[_0xae28('0x1c')]['emit']=function(_0x5a5c11,_0xff88f0,_0x2efc65){io['to'](_0x5a5c11)[_0xae28('0x1f')](_0xff88f0,_0x2efc65);};UserReport['prototype'][_0xae28('0xc')]=function(_0x465e3c){try{if(this[_0xae28('0x1d')](_0x465e3c)){logger[_0xae28('0x20')](_0xae28('0x21'),_0x465e3c['username'],_0x465e3c['state']);logger[_0xae28('0x22')](_0xae28('0x23'),util[_0xae28('0x19')](_0x465e3c,{'showHidden':![],'depth':null}));var _0x5ced1b=_['find'](this['trunks'],{'defaultuser':_0x465e3c[_0xae28('0x24')]});if(_0x5ced1b){_0x465e3c[_0xae28('0x25')]=_0x465e3c[_0xae28('0x26')];_[_0xae28('0x27')](_0x5ced1b,_[_0xae28('0x28')](_0x465e3c,[_0xae28('0x29'),'actionid','username',_0xae28('0x26')]));logger[_0xae28('0x22')](_0xae28('0x2a'),util[_0xae28('0x19')](_0x5ced1b,{'showHidden':![],'depth':null}));this[_0xae28('0x1f')](util[_0xae28('0x2b')](_0xae28('0x2c'),_0x5ced1b[_0xae28('0x2d')]),'trunk:save',_0x5ced1b);}}}catch(_0x138d60){logger[_0xae28('0x17')]('[userReport][registry]',util[_0xae28('0x19')](_0x138d60,{'showHidden':![],'depth':null}));}};UserReport[_0xae28('0x1c')][_0xae28('0x10')]=function(_0x25bab4){try{if(this[_0xae28('0x1d')](_0x25bab4)){logger['info'](_0xae28('0x2e'),_0x25bab4[_0xae28('0x2f')],_0x25bab4[_0xae28('0x26')]);logger[_0xae28('0x22')](_0xae28('0x30'),util[_0xae28('0x19')](_0x25bab4,{'showHidden':![],'depth':null}));if(this[_0xae28('0x9')][_0x25bab4[_0xae28('0x2f')]]){if(!this[_0xae28('0x9')][_0x25bab4[_0xae28('0x2f')]][_0xae28('0x31')]||_0x25bab4['state'][_0xae28('0x32')]()==_0xae28('0x33')){this['agents'][_0x25bab4[_0xae28('0x2f')]]['local']=![];if(this[_0xae28('0x9')][_0x25bab4['device']]['state']!==_0x25bab4[_0xae28('0x26')]['toLowerCase']()){this[_0xae28('0x9')][_0x25bab4[_0xae28('0x2f')]][_0xae28('0x34')]=_[_0xae28('0x35')](moment()[_0xae28('0x2b')]('x'));}this[_0xae28('0x9')][_0x25bab4['device']][_0xae28('0x26')]=_0x25bab4[_0xae28('0x26')][_0xae28('0x32')]();this[_0xae28('0x9')][_0x25bab4['device']]['updateStatusRealtime'](_0x25bab4);}}else if(this[_0xae28('0xa')][_0x25bab4[_0xae28('0x2f')]]){if(this[_0xae28('0xa')][_0x25bab4[_0xae28('0x2f')]][_0xae28('0x26')]!==_0x25bab4[_0xae28('0x26')][_0xae28('0x32')]()){this['telephones'][_0x25bab4[_0xae28('0x2f')]]['stateTime']=_['toNumber'](moment()[_0xae28('0x2b')]('x'));}this['telephones'][_0x25bab4[_0xae28('0x2f')]][_0xae28('0x26')]=_0x25bab4[_0xae28('0x26')][_0xae28('0x32')]();logger[_0xae28('0x22')]('[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:',util[_0xae28('0x19')](this[_0xae28('0xa')][_0x25bab4[_0xae28('0x2f')]],{'showHidden':![],'depth':null}));this[_0xae28('0x1f')](util['format'](_0xae28('0x36'),this[_0xae28('0xa')][_0x25bab4[_0xae28('0x2f')]]['name']),_0xae28('0x37'),this[_0xae28('0xa')][_0x25bab4['device']]);}else if(this[_0xae28('0x8')][_0x25bab4[_0xae28('0x2f')]]){if(this[_0xae28('0x8')][_0x25bab4[_0xae28('0x2f')]][_0xae28('0x26')]!==_0x25bab4[_0xae28('0x26')][_0xae28('0x32')]()){this[_0xae28('0x8')][_0x25bab4['device']][_0xae28('0x34')]=_['toNumber'](moment()[_0xae28('0x2b')]('x'));}this[_0xae28('0x8')][_0x25bab4[_0xae28('0x2f')]][_0xae28('0x26')]=_0x25bab4[_0xae28('0x26')][_0xae28('0x32')]();logger['debug'](_0xae28('0x38'),util[_0xae28('0x19')](this[_0xae28('0x8')][_0x25bab4[_0xae28('0x2f')]],{'showHidden':![],'depth':null}));this[_0xae28('0x1f')](util[_0xae28('0x2b')]('trunk:%s',this[_0xae28('0x8')][_0x25bab4['device']][_0xae28('0x2d')]),_0xae28('0x39'),this[_0xae28('0x8')][_0x25bab4[_0xae28('0x2f')]]);}else if(_['startsWith'](_0x25bab4[_0xae28('0x2f')],'Local')){var _0x37e399=_0x25bab4['device'];var _0x1ef52e=_0x37e399[_0xae28('0x3a')](_0x37e399['indexOf']('/')+0x1,_0x37e399[_0xae28('0x3b')]('@'));var _0x1f7748=_[_0xae28('0x3c')](this['agents'],function(_0x520ea7){return _0x520ea7['mobile']==_0x1ef52e||_0x520ea7[_0xae28('0x3d')]==_0x1ef52e||_0x520ea7[_0xae28('0x3e')]==_0x1ef52e;});if(_0x1f7748){if(_0x1f7748['state']!==_0x25bab4[_0xae28('0x26')][_0xae28('0x32')]()){_0x1f7748[_0xae28('0x34')]=_[_0xae28('0x35')](moment()[_0xae28('0x2b')]('x'));}_0x1f7748[_0xae28('0x26')]=_0x25bab4[_0xae28('0x26')]['toLowerCase']();_0x1f7748['local']=!![];_0x1f7748[_0xae28('0x3f')](_0x25bab4);}}}}catch(_0x822c48){logger['error'](_0xae28('0x30'),util['inspect'](_0x822c48,{'showHidden':![],'depth':null}));}};UserReport['prototype'][_0xae28('0x40')]=function(_0x4eb0f8){try{if(this[_0xae28('0x1d')](_0x4eb0f8)&&this[_0xae28('0x1d')](_0x4eb0f8[_0xae28('0x11')])){logger['info'](_0xae28('0x41'),_0x4eb0f8['peer'],_0x4eb0f8['address'],_0x4eb0f8[_0xae28('0x11')]);logger['debug']('[userReport][peerstatus]',util[_0xae28('0x19')](_0x4eb0f8,{'showHidden':![],'depth':null}));if(this['agents'][_0x4eb0f8[_0xae28('0x42')]]){if(!this[_0xae28('0x9')][_0x4eb0f8[_0xae28('0x42')]][_0xae28('0x31')]||_0x4eb0f8[_0xae28('0x11')][_0xae28('0x32')]()==_0xae28('0x43')){this['agents'][_0x4eb0f8[_0xae28('0x42')]][_0xae28('0x31')]=![];this[_0xae28('0x9')][_0x4eb0f8[_0xae28('0x42')]][_0xae28('0x44')]=_0x4eb0f8[_0xae28('0x11')]['toLowerCase']();this[_0xae28('0x9')][_0x4eb0f8[_0xae28('0x42')]]['address']=_0x4eb0f8[_0xae28('0x45')];this['agents'][_0x4eb0f8[_0xae28('0x42')]][_0xae28('0x3f')](_0x4eb0f8);}}else if(this[_0xae28('0xa')][_0x4eb0f8[_0xae28('0x42')]]){this[_0xae28('0xa')][_0x4eb0f8[_0xae28('0x42')]]['status']=_0x4eb0f8[_0xae28('0x11')][_0xae28('0x32')]();this['telephones'][_0x4eb0f8[_0xae28('0x42')]][_0xae28('0x45')]=_0x4eb0f8['address'];logger[_0xae28('0x22')](_0xae28('0x46'),util[_0xae28('0x19')](this['telephones'][_0x4eb0f8[_0xae28('0x42')]],{'showHidden':![],'depth':null}));this['emit'](util[_0xae28('0x2b')]('telephone:%s',this['telephones'][_0x4eb0f8[_0xae28('0x42')]][_0xae28('0x2d')]),'telephone:save',this[_0xae28('0xa')][_0x4eb0f8['peer']]);}else if(this[_0xae28('0x8')][_0x4eb0f8[_0xae28('0x42')]]){this[_0xae28('0x8')][_0x4eb0f8['peer']][_0xae28('0x44')]=_0x4eb0f8['peerstatus']['toLowerCase']();this[_0xae28('0x8')][_0x4eb0f8[_0xae28('0x42')]][_0xae28('0x45')]=_0x4eb0f8[_0xae28('0x45')];logger['debug'](_0xae28('0x47'),util['inspect'](this['trunks'][_0x4eb0f8[_0xae28('0x42')]],{'showHidden':![],'depth':null}));this[_0xae28('0x1f')](util[_0xae28('0x2b')](_0xae28('0x2c'),this[_0xae28('0x8')][_0x4eb0f8['peer']][_0xae28('0x2d')]),_0xae28('0x39'),this[_0xae28('0x8')][_0x4eb0f8[_0xae28('0x42')]]);}}}catch(_0x301e98){logger[_0xae28('0x17')]('[userReport][peerstatus]',util['inspect'](_0x301e98,{'showHidden':![],'depth':null}));}};module[_0xae28('0x48')]=UserReport;
\ No newline at end of file
+var _0x29ee=['prototype','isNotNull','isUndefined','emit','debug','[userReport][registry]','find','username','state','merge','actionid','[userReport][registry]\x20sending\x20trunk:save\x20event:','trunk:%s','trunk:save','device','[userReport][devicestatechange]','local','inuse','toLowerCase','stateTime','toNumber','format','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:%s','name','telephone:save','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','Local','substring','indexOf','mobile','phone','accountcode','updateStatusRealtime','info','address','[userReport][peerstatus]','peer','registered','status','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','exports','lodash','moment','util','ioredis','../../../config/environment','../../../config/logger','../ami','redis','defaults','localhost','trunks','agents','telephones','registry','devicestatechange','syncDeviceState','bind','peerstatus','syncRealtimeShow','resolve','then','actionSipShowRegistry','catch','error','[userReport][sipshowregistry]','inspect','actionDeviceStateList','[userReport][devicestatelist]','actionSipPeerStatus','[userReport][sippeerstatus]'];(function(_0x3b231a,_0x53a00d){var _0x18d67a=function(_0x5e14c6){while(--_0x5e14c6){_0x3b231a['push'](_0x3b231a['shift']());}};_0x18d67a(++_0x53a00d);}(_0x29ee,0x198));var _0xe29e=function(_0x2763f2,_0x416af8){_0x2763f2=_0x2763f2-0x0;var _0x3ef471=_0x29ee[_0x2763f2];return _0x3ef471;};'use strict';var _=require(_0xe29e('0x0'));var moment=require(_0xe29e('0x1'));var util=require(_0xe29e('0x2'));var Redis=require(_0xe29e('0x3'));var BPromise=require('bluebird');var config=require(_0xe29e('0x4'));var logger=require(_0xe29e('0x5'))('ami');var ami=require(_0xe29e('0x6'));config[_0xe29e('0x7')]=_[_0xe29e('0x8')](config[_0xe29e('0x7')],{'host':_0xe29e('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xe29e('0x7')]));function UserReport(_0x255390){this[_0xe29e('0xa')]=_0x255390[_0xe29e('0xa')];this[_0xe29e('0xb')]=_0x255390['agents'];this[_0xe29e('0xc')]=_0x255390['telephones'];ami['on']('registryentry',this['syncRegistry']['bind'](this));ami['on'](_0xe29e('0xd'),this['syncRegistry']['bind'](this));ami['on'](_0xe29e('0xe'),this[_0xe29e('0xf')][_0xe29e('0x10')](this));ami['on'](_0xe29e('0x11'),this['syncPeerStatus']['bind'](this));return this[_0xe29e('0x12')]();}function showSipRegistrations(){Promise[_0xe29e('0x13')]()[_0xe29e('0x14')](ami[_0xe29e('0x15')]())[_0xe29e('0x16')](function(_0x41005f){logger[_0xe29e('0x17')](_0xe29e('0x18'),util[_0xe29e('0x19')](_0x41005f,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0xe29e('0x13')]()[_0xe29e('0x14')](ami[_0xe29e('0x1a')]())['catch'](function(_0x24f77e){logger['error'](_0xe29e('0x1b'),util['inspect'](_0x24f77e,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0xe29e('0x13')]()[_0xe29e('0x14')](ami[_0xe29e('0x1c')]())[_0xe29e('0x16')](function(_0x5894f4){logger[_0xe29e('0x17')](_0xe29e('0x1d'),util[_0xe29e('0x19')](_0x5894f4,{'showHidden':![],'depth':null}));});}UserReport[_0xe29e('0x1e')][_0xe29e('0x12')]=function(){setInterval(function(){BPromise[_0xe29e('0x13')]()[_0xe29e('0x14')](showSipRegistrations())[_0xe29e('0x14')](listDeviceStates())[_0xe29e('0x14')](showPeersStatus());},0x32c8);};UserReport[_0xe29e('0x1e')][_0xe29e('0x1f')]=function(_0x177448){return _0x177448!==null&&!_[_0xe29e('0x20')](_0x177448);};UserReport[_0xe29e('0x1e')][_0xe29e('0x21')]=function(_0xba7d4a,_0x37871,_0x4cae9e){io['to'](_0xba7d4a)[_0xe29e('0x21')](_0x37871,_0x4cae9e);};UserReport[_0xe29e('0x1e')]['syncRegistry']=function(_0x15a414){try{if(this['isNotNull'](_0x15a414)){logger['info']('[userReport][registry]\x20registry:%s\x20state:%s',_0x15a414['username'],_0x15a414['state']);logger[_0xe29e('0x22')](_0xe29e('0x23'),util[_0xe29e('0x19')](_0x15a414,{'showHidden':![],'depth':null}));var _0x438ead=_[_0xe29e('0x24')](this[_0xe29e('0xa')],{'defaultuser':_0x15a414[_0xe29e('0x25')]});if(_0x438ead){_0x15a414['stateRegistry']=_0x15a414[_0xe29e('0x26')];_[_0xe29e('0x27')](_0x438ead,_['omit'](_0x15a414,['event',_0xe29e('0x28'),_0xe29e('0x25'),_0xe29e('0x26')]));logger[_0xe29e('0x22')](_0xe29e('0x29'),util['inspect'](_0x438ead,{'showHidden':![],'depth':null}));this[_0xe29e('0x21')](util['format'](_0xe29e('0x2a'),_0x438ead['name']),_0xe29e('0x2b'),_0x438ead);}}}catch(_0xd99316){logger[_0xe29e('0x17')](_0xe29e('0x23'),util[_0xe29e('0x19')](_0xd99316,{'showHidden':![],'depth':null}));}};UserReport['prototype'][_0xe29e('0xf')]=function(_0x42fa45){try{if(this['isNotNull'](_0x42fa45)){logger['info']('[userReport][devicestatechange]\x20device:%s\x20state:%s',_0x42fa45[_0xe29e('0x2c')],_0x42fa45[_0xe29e('0x26')]);logger['debug'](_0xe29e('0x2d'),util[_0xe29e('0x19')](_0x42fa45,{'showHidden':![],'depth':null}));if(this[_0xe29e('0xb')][_0x42fa45[_0xe29e('0x2c')]]){if(!this[_0xe29e('0xb')][_0x42fa45[_0xe29e('0x2c')]][_0xe29e('0x2e')]||_0x42fa45[_0xe29e('0x26')]['toLowerCase']()==_0xe29e('0x2f')){this[_0xe29e('0xb')][_0x42fa45[_0xe29e('0x2c')]]['local']=![];if(this[_0xe29e('0xb')][_0x42fa45[_0xe29e('0x2c')]][_0xe29e('0x26')]!==_0x42fa45['state'][_0xe29e('0x30')]()){this[_0xe29e('0xb')][_0x42fa45[_0xe29e('0x2c')]][_0xe29e('0x31')]=_[_0xe29e('0x32')](moment()['format']('x'));}this['agents'][_0x42fa45[_0xe29e('0x2c')]]['state']=_0x42fa45[_0xe29e('0x26')][_0xe29e('0x30')]();this['agents'][_0x42fa45[_0xe29e('0x2c')]]['updateStatusRealtime'](_0x42fa45);}}else if(this[_0xe29e('0xc')][_0x42fa45[_0xe29e('0x2c')]]){if(this[_0xe29e('0xc')][_0x42fa45[_0xe29e('0x2c')]][_0xe29e('0x26')]!==_0x42fa45[_0xe29e('0x26')][_0xe29e('0x30')]()){this[_0xe29e('0xc')][_0x42fa45[_0xe29e('0x2c')]][_0xe29e('0x31')]=_[_0xe29e('0x32')](moment()[_0xe29e('0x33')]('x'));}this[_0xe29e('0xc')][_0x42fa45['device']][_0xe29e('0x26')]=_0x42fa45['state'][_0xe29e('0x30')]();logger['debug'](_0xe29e('0x34'),util[_0xe29e('0x19')](this[_0xe29e('0xc')][_0x42fa45[_0xe29e('0x2c')]],{'showHidden':![],'depth':null}));this[_0xe29e('0x21')](util[_0xe29e('0x33')](_0xe29e('0x35'),this[_0xe29e('0xc')][_0x42fa45[_0xe29e('0x2c')]][_0xe29e('0x36')]),_0xe29e('0x37'),this[_0xe29e('0xc')][_0x42fa45[_0xe29e('0x2c')]]);}else if(this['trunks'][_0x42fa45['device']]){if(this[_0xe29e('0xa')][_0x42fa45['device']][_0xe29e('0x26')]!==_0x42fa45[_0xe29e('0x26')][_0xe29e('0x30')]()){this[_0xe29e('0xa')][_0x42fa45[_0xe29e('0x2c')]][_0xe29e('0x31')]=_[_0xe29e('0x32')](moment()[_0xe29e('0x33')]('x'));}this[_0xe29e('0xa')][_0x42fa45['device']]['state']=_0x42fa45[_0xe29e('0x26')]['toLowerCase']();logger['debug'](_0xe29e('0x38'),util[_0xe29e('0x19')](this['trunks'][_0x42fa45[_0xe29e('0x2c')]],{'showHidden':![],'depth':null}));this[_0xe29e('0x21')](util['format']('trunk:%s',this['trunks'][_0x42fa45[_0xe29e('0x2c')]][_0xe29e('0x36')]),_0xe29e('0x2b'),this[_0xe29e('0xa')][_0x42fa45[_0xe29e('0x2c')]]);}else if(_['startsWith'](_0x42fa45[_0xe29e('0x2c')],_0xe29e('0x39'))){var _0x34066a=_0x42fa45['device'];var _0x36f1e8=_0x34066a[_0xe29e('0x3a')](_0x34066a[_0xe29e('0x3b')]('/')+0x1,_0x34066a[_0xe29e('0x3b')]('@'));var _0x1f85d2=_[_0xe29e('0x24')](this[_0xe29e('0xb')],function(_0x9287b5){return _0x9287b5[_0xe29e('0x3c')]==_0x36f1e8||_0x9287b5[_0xe29e('0x3d')]==_0x36f1e8||_0x9287b5[_0xe29e('0x3e')]==_0x36f1e8;});if(_0x1f85d2){if(_0x1f85d2[_0xe29e('0x26')]!==_0x42fa45['state']['toLowerCase']()){_0x1f85d2[_0xe29e('0x31')]=_[_0xe29e('0x32')](moment()[_0xe29e('0x33')]('x'));}_0x1f85d2[_0xe29e('0x26')]=_0x42fa45[_0xe29e('0x26')][_0xe29e('0x30')]();_0x1f85d2['local']=!![];_0x1f85d2[_0xe29e('0x3f')](_0x42fa45);}}}}catch(_0x373582){logger[_0xe29e('0x17')](_0xe29e('0x2d'),util[_0xe29e('0x19')](_0x373582,{'showHidden':![],'depth':null}));}};UserReport['prototype']['syncPeerStatus']=function(_0x4b19db){try{if(this[_0xe29e('0x1f')](_0x4b19db)&&this[_0xe29e('0x1f')](_0x4b19db[_0xe29e('0x11')])){logger[_0xe29e('0x40')]('[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s',_0x4b19db['peer'],_0x4b19db[_0xe29e('0x41')],_0x4b19db[_0xe29e('0x11')]);logger['debug'](_0xe29e('0x42'),util[_0xe29e('0x19')](_0x4b19db,{'showHidden':![],'depth':null}));if(this[_0xe29e('0xb')][_0x4b19db[_0xe29e('0x43')]]){if(!this[_0xe29e('0xb')][_0x4b19db['peer']]['local']||_0x4b19db[_0xe29e('0x11')][_0xe29e('0x30')]()==_0xe29e('0x44')){this[_0xe29e('0xb')][_0x4b19db[_0xe29e('0x43')]][_0xe29e('0x2e')]=![];this[_0xe29e('0xb')][_0x4b19db[_0xe29e('0x43')]][_0xe29e('0x45')]=_0x4b19db[_0xe29e('0x11')][_0xe29e('0x30')]();this[_0xe29e('0xb')][_0x4b19db[_0xe29e('0x43')]][_0xe29e('0x41')]=_0x4b19db[_0xe29e('0x41')];this['agents'][_0x4b19db[_0xe29e('0x43')]]['updateStatusRealtime'](_0x4b19db);}}else if(this[_0xe29e('0xc')][_0x4b19db['peer']]){this['telephones'][_0x4b19db[_0xe29e('0x43')]]['status']=_0x4b19db[_0xe29e('0x11')]['toLowerCase']();this[_0xe29e('0xc')][_0x4b19db[_0xe29e('0x43')]][_0xe29e('0x41')]=_0x4b19db[_0xe29e('0x41')];logger['debug'](_0xe29e('0x46'),util[_0xe29e('0x19')](this[_0xe29e('0xc')][_0x4b19db[_0xe29e('0x43')]],{'showHidden':![],'depth':null}));this[_0xe29e('0x21')](util[_0xe29e('0x33')](_0xe29e('0x35'),this['telephones'][_0x4b19db[_0xe29e('0x43')]]['name']),_0xe29e('0x37'),this['telephones'][_0x4b19db['peer']]);}else if(this[_0xe29e('0xa')][_0x4b19db[_0xe29e('0x43')]]){this[_0xe29e('0xa')][_0x4b19db[_0xe29e('0x43')]][_0xe29e('0x45')]=_0x4b19db[_0xe29e('0x11')][_0xe29e('0x30')]();this[_0xe29e('0xa')][_0x4b19db[_0xe29e('0x43')]][_0xe29e('0x41')]=_0x4b19db['address'];logger[_0xe29e('0x22')](_0xe29e('0x47'),util[_0xe29e('0x19')](this[_0xe29e('0xa')][_0x4b19db['peer']],{'showHidden':![],'depth':null}));this['emit'](util[_0xe29e('0x33')](_0xe29e('0x2a'),this[_0xe29e('0xa')][_0x4b19db['peer']][_0xe29e('0x36')]),_0xe29e('0x2b'),this[_0xe29e('0xa')][_0x4b19db['peer']]);}}}catch(_0x4faa34){logger[_0xe29e('0x17')](_0xe29e('0x42'),util[_0xe29e('0x19')](_0x4faa34,{'showHidden':![],'depth':null}));}};module[_0xe29e('0x48')]=UserReport;
\ No newline at end of file
index 8e1b387..76dbca5 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(_0xcb25d9,_0x3aef0d){var _0x4c8003=function(_0x11488b){while(--_0x11488b){_0xcb25d9['push'](_0xcb25d9['shift']());}};_0x4c8003(++_0x3aef0d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x31e29a,_0x349c9b){_0x31e29a=_0x31e29a-0x0;var _0x32d892=_0xa9e0[_0x31e29a];return _0x32d892;};'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 _0xa9e0=['musiconholdstop','attendedtransfer','syncBlindTransfer','prototype','emit','isNotNull','isUndefined','info','membername','destuniqueid','debug','[%s][voiceAgentReport][agentcalled]\x20event:','inspect','uniqueid','YYYY-MM-DD\x20HH:mm:ss','queue','mandatoryDisposition','type','inbound','voice','omit','event','privilege','[%s][voiceAgentReport][agentcalled]\x20sending\x20agentcalled\x20event:','custom:agentcalled','interface','calleridnum','extravar','format','user:%s','error','[%s][voiceAgentReport][agentcalled]','syncAgentConnect','[%s][voiceAgentReport][agentconnect]\x20event:','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','connectedlinename','connectedlinenum','destchannelstate','destchannelstatedesc','holdtime','connect','voiceChannels','routealias','merge','pick','destconnectedlinenum','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentconnect\x20event:','custom:agentconnect','user:agentconnect','agentringnoanswer','agentringnoanswerAt','answered_elsewhere','reason','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentansweredelsewhere\x20event:','custom:agentansweredelsewhere','syncAgentRingNoAnswer','[%s][voiceAgentReport][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:rejected','lastevent','rejected','custom:agentringnoanswer','[%s][voiceAgentReport][agentringnoanswer]','[%s][voiceAgentReport][queuecallerabandon]\x20event:','hasOwnProperty','[%s][voiceAgentReport][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','abandoned','[%s][voiceAgentReport][queuecallerabandon]\x20sending\x20agentqueuecallerabandon\x20event:','custom:agentqueuecallerabandon','[%s][voiceAgentReport][queuecallerabandon]','[%s][voiceAgentReport][agentcomplete]\x20event:','agentcompleteAt','complete','agent','talktime','acw','acwtime','acwTimeout','custom:agentcomplete','[%s][voiceAgentReport][agentcomplete]\x20sending\x20user:agentcomplete\x20event:','destaccountcode','user:agentcomplete','[%s][voiceAgentReport][agentcomplete]','[%s][voiceAgentReport][varset]\x20event:','addVariable','keys','variable','value','[%s][voiceAgentReport][varset]\x20destuniqueid:%s\x20variable:%s\x20value:%s','[%s][voiceAgentReport][varset]','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','sipcallid','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberpenalty','memberrealtime','isNil','includes','[%s][voiceAgentReport][hangup]\x20event:','transfer','[%s][voiceAgentReport][hangup]\x20sending\x20voiceAgentReport\x20event:','values','custom:voiceAgentReport','syncAttendedTransfer','[%s][voiceAgentReport][attendedtransfer]\x20event:','transfereeuniqueid','origtransfereruniqueid','[%s][voiceAgentReport][attendedtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','diff','seconds','secondtransfereruniqueid','[%s][voiceAgentReport][attendedtransfer]','[%s][voiceAgentReport][blindtransfer]\x20event:','[%s][voiceAgentReport][blindtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','[%s][voiceAgentReport][blindtransfer]','[%s][voiceAgentReport][musiconholdstart]\x20event:','channel','substring','[%s][voiceAgentReport][musiconholdstart]\x20interface:%s','onhold','[%s][voiceAgentReport][musiconholdstart]','syncMusicOnHoldStop','lastIndexOf','[%s][voiceAgentReport][musiconholdstop]\x20interface:%s','exports','lodash','moment','util','../../../config/logger','../ami','redis','defaults','localhost','channels','voiceQueues','agents','variables','agentcalled','syncAgentCalled','bind','agentconnect','queuecallerabandon','syncQueueCallerAbandon','agentcomplete','syncAgentComplete','varset','syncVarSet','hangup','syncHangup','syncMusicOnHoldStart'];(function(_0x136aed,_0x520312){var _0x257b2a=function(_0x55221e){while(--_0x55221e){_0x136aed['push'](_0x136aed['shift']());}};_0x257b2a(++_0x520312);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0xa9e0[_0x1facfa];return _0x9ec701;};'use strict';var _=require(_0x0a9e('0x0'));var moment=require(_0x0a9e('0x1'));var util=require(_0x0a9e('0x2'));var Redis=require('ioredis');var config=require('../../../config/environment');var logger=require(_0x0a9e('0x3'))('ami');var ami=require(_0x0a9e('0x4'));config[_0x0a9e('0x5')]=_[_0x0a9e('0x6')](config[_0x0a9e('0x5')],{'host':_0x0a9e('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x0a9e('0x5')]));function VoiceAgentReport(_0x441e3a){this[_0x0a9e('0x8')]={};this['voiceChannels']=_0x441e3a['channels'];this[_0x0a9e('0x9')]=_0x441e3a['voiceQueues'];this['agents']=_0x441e3a[_0x0a9e('0xa')];this[_0x0a9e('0xb')]={};ami['on'](_0x0a9e('0xc'),this[_0x0a9e('0xd')][_0x0a9e('0xe')](this));ami['on'](_0x0a9e('0xf'),this['syncAgentConnect']['bind'](this));ami['on']('agentringnoanswer',this['syncAgentRingNoAnswer'][_0x0a9e('0xe')](this));ami['on'](_0x0a9e('0x10'),this[_0x0a9e('0x11')][_0x0a9e('0xe')](this));ami['on'](_0x0a9e('0x12'),this[_0x0a9e('0x13')]['bind'](this));ami['on'](_0x0a9e('0x14'),this[_0x0a9e('0x15')][_0x0a9e('0xe')](this));ami['on'](_0x0a9e('0x16'),this[_0x0a9e('0x17')][_0x0a9e('0xe')](this));ami['on']('musiconholdstart',this[_0x0a9e('0x18')]['bind'](this));ami['on'](_0x0a9e('0x19'),this['syncMusicOnHoldStop'][_0x0a9e('0xe')](this));ami['on'](_0x0a9e('0x1a'),this['syncAttendedTransfer'][_0x0a9e('0xe')](this));ami['on']('blindtransfer',this[_0x0a9e('0x1b')][_0x0a9e('0xe')](this));}VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x1d')]=function(_0x31b1ca,_0x2eb11f,_0x530eb7){io['to'](_0x31b1ca)[_0x0a9e('0x1d')](_0x2eb11f,_0x530eb7);};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x1e')]=function(_0x1c696a){return _0x1c696a!==null&&!_[_0x0a9e('0x1f')](_0x1c696a);};VoiceAgentReport['prototype'][_0x0a9e('0xd')]=function(_0x155cce){try{if(this['isNotNull'](_0x155cce)){logger[_0x0a9e('0x20')]('[%s][voiceAgentReport][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called',_0x155cce['uniqueid'],_0x155cce[_0x0a9e('0x21')],_0x155cce[_0x0a9e('0x22')]);logger[_0x0a9e('0x23')](_0x0a9e('0x24'),_0x155cce['uniqueid'],util[_0x0a9e('0x25')](_0x155cce,{'showHidden':![],'depth':null}));if(_[_0x0a9e('0x1f')](this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]])){this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]]={};}if(_[_0x0a9e('0x1f')](this['channels'][_0x155cce['uniqueid']][_0x155cce[_0x0a9e('0x22')]])){this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]]={'agentcalledAt':moment()['format'](_0x0a9e('0x27')),'lastevent':'called','mandatoryDisposition':this[_0x0a9e('0x9')][_0x155cce['queue']]?this[_0x0a9e('0x9')][_0x155cce[_0x0a9e('0x28')]][_0x0a9e('0x29')]||![]:![],'type':this[_0x0a9e('0x9')][_0x155cce[_0x0a9e('0x28')]]?this[_0x0a9e('0x9')][_0x155cce[_0x0a9e('0x28')]][_0x0a9e('0x2a')]||'inbound':_0x0a9e('0x2b'),'variables':this[_0x0a9e('0xb')][_0x155cce[_0x0a9e('0x26')]],'motionChannel':_0x0a9e('0x2c')};}_['merge'](this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]],_[_0x0a9e('0x2d')](_0x155cce,[_0x0a9e('0x2e'),_0x0a9e('0x2f')]));logger[_0x0a9e('0x23')](_0x0a9e('0x30'),_0x155cce[_0x0a9e('0x26')],util['inspect'](this[_0x0a9e('0x8')][_0x155cce['uniqueid']][_0x155cce[_0x0a9e('0x22')]],{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x31'),this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]][_0x155cce['destuniqueid']]);var _0x66c1d2={'id':this[_0x0a9e('0xa')][_0x155cce[_0x0a9e('0x32')]]['id'],'calleridnum':this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]][_0x0a9e('0x33')],'queue':this[_0x0a9e('0x8')][_0x155cce['uniqueid']][_0x155cce[_0x0a9e('0x22')]]['queue'],'extravar':this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]][_0x0a9e('0xb')]?this['channels'][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]][_0x0a9e('0xb')][_0x0a9e('0x34')]:undefined};logger['debug']('[%s][voiceAgentReport][agentcalled]\x20sending\x20user:called\x20event:',_0x155cce[_0x0a9e('0x26')],util['inspect'](_0x66c1d2,{'showHidden':![],'depth':null}));this[_0x0a9e('0x1d')](util[_0x0a9e('0x35')](_0x0a9e('0x36'),_0x155cce[_0x0a9e('0x21')]),'user:called',_0x66c1d2);}}catch(_0x31916f){logger[_0x0a9e('0x37')](_0x0a9e('0x38'),_0x155cce['uniqueid'],util[_0x0a9e('0x25')](_0x31916f,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x39')]=function(_0x4c1c0e){try{if(this['isNotNull'](_0x4c1c0e)){if(this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]]){logger['debug'](_0x0a9e('0x3a'),_0x4c1c0e[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x4c1c0e,{'showHidden':![],'depth':null}));for(var _0x148f55 in this['channels'][_0x4c1c0e['uniqueid']]){if(this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]]['hasOwnProperty'](_0x148f55)){if(_0x4c1c0e[_0x0a9e('0x22')]===_0x148f55){logger[_0x0a9e('0x20')](_0x0a9e('0x3b'),_0x4c1c0e['uniqueid'],_0x4c1c0e[_0x0a9e('0x21')],_0x4c1c0e[_0x0a9e('0x22')]);this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x3c')]=moment()[_0x0a9e('0x35')](_0x0a9e('0x27'));this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x3d')]=_0x4c1c0e[_0x0a9e('0x3d')];this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x3e')]=_0x4c1c0e[_0x0a9e('0x3e')];this['channels'][_0x4c1c0e['uniqueid']][_0x148f55][_0x0a9e('0x3f')]=_0x4c1c0e[_0x0a9e('0x3f')];this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x40')]=_0x4c1c0e[_0x0a9e('0x40')];this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x41')]=_0x4c1c0e[_0x0a9e('0x41')];this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55]['lastevent']=_0x0a9e('0x42');if(this[_0x0a9e('0x43')][this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x26')]]){var _0xbe9d19=this[_0x0a9e('0x43')][this[_0x0a9e('0x8')][_0x4c1c0e['uniqueid']][_0x148f55][_0x0a9e('0x26')]]['routealias'];this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x44')]=_0xbe9d19;_0x4c1c0e['routealias']=_0xbe9d19;}_[_0x0a9e('0x45')](this[_0x0a9e('0xa')][_0x4c1c0e[_0x0a9e('0x32')]],_[_0x0a9e('0x46')](_0x4c1c0e,[_0x0a9e('0x28'),_0x0a9e('0x47'),_0x0a9e('0x44')]));logger['debug'](_0x0a9e('0x48'),_0x4c1c0e[_0x0a9e('0x26')],util[_0x0a9e('0x25')](this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x4c1c0e[_0x0a9e('0x22')]],{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x49'),this[_0x0a9e('0x8')][_0x4c1c0e['uniqueid']][_0x4c1c0e[_0x0a9e('0x22')]]);logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][agentcalled]\x20sending\x20user:agentconnect\x20event:',_0x4c1c0e['uniqueid'],util['inspect'](this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x4c1c0e[_0x0a9e('0x22')]],{'showHidden':![],'depth':null}));this[_0x0a9e('0x1d')](util[_0x0a9e('0x35')](_0x0a9e('0x36'),_0x4c1c0e[_0x0a9e('0x21')]),_0x0a9e('0x4a'),this['channels'][_0x4c1c0e['uniqueid']][_0x4c1c0e['destuniqueid']]);}else if(!this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x4b')]&&!this['channels'][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x12')]){logger['info']('[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:answered_elsewhere',_0x4c1c0e[_0x0a9e('0x26')],this['channels'][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55]['membername'],_0x148f55);this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x4b')]=!![];this['channels'][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x4c')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55]['answeredelsewheredestinationuniqueid']=_0x4c1c0e[_0x0a9e('0x22')];this['channels'][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55]['answeredelsewheremembername']=_0x4c1c0e[_0x0a9e('0x21')];this['channels'][_0x4c1c0e['uniqueid']][_0x148f55]['lastevent']=_0x0a9e('0x4d');this['channels'][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x4e')]=_0x0a9e('0x4d');logger[_0x0a9e('0x23')](_0x0a9e('0x4f'),_0x4c1c0e[_0x0a9e('0x26')],util[_0x0a9e('0x25')](this[_0x0a9e('0x8')][_0x4c1c0e['uniqueid']][_0x148f55],{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x50'),this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55]);}}}}}}catch(_0xb83dfd){logger[_0x0a9e('0x37')]('[%s][voiceAgentReport][agentconnect]',_0x4c1c0e[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0xb83dfd,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x0a9e('0x51')]=function(_0x5cc8fb){try{if(this[_0x0a9e('0x1e')](_0x5cc8fb)){logger['debug']('[%s][voiceAgentReport][agentringnoanswer]\x20event:',_0x5cc8fb['uniqueid'],util[_0x0a9e('0x25')](_0x5cc8fb,{'showHidden':![],'depth':null}));if(this['channels'][_0x5cc8fb[_0x0a9e('0x26')]]&&this[_0x0a9e('0x8')][_0x5cc8fb[_0x0a9e('0x26')]][_0x5cc8fb[_0x0a9e('0x22')]]){logger[_0x0a9e('0x20')](_0x0a9e('0x52'),_0x5cc8fb['uniqueid'],_0x5cc8fb[_0x0a9e('0x21')],_0x5cc8fb['destuniqueid']);this[_0x0a9e('0x8')][_0x5cc8fb[_0x0a9e('0x26')]][_0x5cc8fb[_0x0a9e('0x22')]]['agentringnoanswer']=!![];this[_0x0a9e('0x8')][_0x5cc8fb[_0x0a9e('0x26')]][_0x5cc8fb[_0x0a9e('0x22')]][_0x0a9e('0x4c')]=moment()['format'](_0x0a9e('0x27'));this[_0x0a9e('0x8')][_0x5cc8fb['uniqueid']][_0x5cc8fb[_0x0a9e('0x22')]][_0x0a9e('0x53')]=_0x0a9e('0x54');this[_0x0a9e('0x8')][_0x5cc8fb[_0x0a9e('0x26')]][_0x5cc8fb['destuniqueid']][_0x0a9e('0x4e')]=_0x0a9e('0x54');logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][agentringnoanswer]\x20sending\x20agentringnoanswer\x20event:',_0x5cc8fb[_0x0a9e('0x26')],util['inspect'](this['channels'][_0x5cc8fb[_0x0a9e('0x26')]][_0x5cc8fb[_0x0a9e('0x22')]],{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x55'),this[_0x0a9e('0x8')][_0x5cc8fb[_0x0a9e('0x26')]][_0x5cc8fb[_0x0a9e('0x22')]]);}}}catch(_0x54a37d){logger[_0x0a9e('0x37')](_0x0a9e('0x56'),_0x5cc8fb[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x54a37d,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x11')]=function(_0x320898){try{if(this[_0x0a9e('0x1e')](_0x320898)){logger[_0x0a9e('0x23')](_0x0a9e('0x57'),_0x320898['uniqueid'],util[_0x0a9e('0x25')](_0x320898,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x320898[_0x0a9e('0x26')]]){for(var _0x4edbb0 in this[_0x0a9e('0x8')][_0x320898[_0x0a9e('0x26')]]){if(this['channels'][_0x320898[_0x0a9e('0x26')]][_0x0a9e('0x58')](_0x4edbb0)&&!this[_0x0a9e('0x8')][_0x320898[_0x0a9e('0x26')]][_0x4edbb0][_0x0a9e('0x4b')]&&!this['channels'][_0x320898['uniqueid']][_0x4edbb0]['agentcomplete']){logger[_0x0a9e('0x20')](_0x0a9e('0x59'),_0x320898[_0x0a9e('0x26')],this[_0x0a9e('0x8')][_0x320898[_0x0a9e('0x26')]][_0x4edbb0][_0x0a9e('0x21')],_0x4edbb0);this[_0x0a9e('0x8')][_0x320898[_0x0a9e('0x26')]][_0x4edbb0]['agentringnoanswer']=!![];this[_0x0a9e('0x8')][_0x320898[_0x0a9e('0x26')]][_0x4edbb0][_0x0a9e('0x4c')]=moment()['format'](_0x0a9e('0x27'));this['channels'][_0x320898[_0x0a9e('0x26')]][_0x4edbb0][_0x0a9e('0x53')]='abandoned';this[_0x0a9e('0x8')][_0x320898[_0x0a9e('0x26')]][_0x4edbb0][_0x0a9e('0x4e')]=_0x0a9e('0x5a');logger['debug'](_0x0a9e('0x5b'),_0x320898[_0x0a9e('0x26')],util[_0x0a9e('0x25')](this[_0x0a9e('0x8')][_0x320898['uniqueid']][_0x4edbb0],{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x5c'),this[_0x0a9e('0x8')][_0x320898[_0x0a9e('0x26')]][_0x4edbb0]);}}}}}catch(_0x4abc8f){logger[_0x0a9e('0x37')](_0x0a9e('0x5d'),_0x320898[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x4abc8f,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x13')]=function(_0x40fc56){try{if(this[_0x0a9e('0x1e')](_0x40fc56)){logger[_0x0a9e('0x23')](_0x0a9e('0x5e'),_0x40fc56[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x40fc56,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x40fc56[_0x0a9e('0x26')]]){for(var _0x5b35db in this[_0x0a9e('0x8')][_0x40fc56[_0x0a9e('0x26')]]){if(this[_0x0a9e('0x8')][_0x40fc56['uniqueid']][_0x0a9e('0x58')](_0x5b35db)){if(this[_0x0a9e('0x8')][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db][_0x0a9e('0x3c')]&&!this['channels'][_0x40fc56['uniqueid']][_0x5b35db][_0x0a9e('0x12')]){logger[_0x0a9e('0x20')]('[%s][voiceAgentReport][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete',_0x40fc56[_0x0a9e('0x26')],this['channels'][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db][_0x0a9e('0x21')],_0x5b35db);this['channels'][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db][_0x0a9e('0x12')]=!![];this[_0x0a9e('0x8')][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db][_0x0a9e('0x5f')]=moment()[_0x0a9e('0x35')](_0x0a9e('0x27'));this['channels'][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db][_0x0a9e('0x53')]=_0x0a9e('0x60');this[_0x0a9e('0x8')][_0x40fc56['uniqueid']][_0x5b35db][_0x0a9e('0x4e')]=_0x40fc56[_0x0a9e('0x4e')]=='transfer'?_0x0a9e('0x61'):_0x40fc56['reason'];this[_0x0a9e('0x8')][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db][_0x0a9e('0x62')]=_0x40fc56[_0x0a9e('0x62')];if(this['voiceQueues'][_0x40fc56['queue']]&&this[_0x0a9e('0x9')][_0x40fc56[_0x0a9e('0x28')]][_0x0a9e('0x63')]){this['channels'][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db][_0x0a9e('0x64')]=this['voiceQueues'][_0x40fc56['queue']][_0x0a9e('0x65')];this['channels'][_0x40fc56['uniqueid']][_0x5b35db]['agentacw']=!![];}this[_0x0a9e('0xa')][_0x40fc56[_0x0a9e('0x32')]]=_[_0x0a9e('0x2d')](this[_0x0a9e('0xa')][_0x40fc56[_0x0a9e('0x32')]],[_0x0a9e('0x28'),'destconnectedlinenum']);logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][agentcomplete]\x20sending\x20agentcomplete\x20event:',_0x40fc56[_0x0a9e('0x26')],util[_0x0a9e('0x25')](this[_0x0a9e('0x8')][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db],{'showHidden':![],'depth':null}));ami['emit'](_0x0a9e('0x66'),this[_0x0a9e('0x8')][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db]);logger['debug'](_0x0a9e('0x67'),_0x40fc56[_0x0a9e('0x26')],util[_0x0a9e('0x25')]({'id':this[_0x0a9e('0xa')][_0x40fc56[_0x0a9e('0x32')]]['id'],'destaccountcode':_0x40fc56[_0x0a9e('0x68')]},{'showHidden':![],'depth':null}));this[_0x0a9e('0x1d')](util[_0x0a9e('0x35')]('user:%s',_0x40fc56[_0x0a9e('0x21')]),_0x0a9e('0x69'),{'id':this['agents'][_0x40fc56[_0x0a9e('0x32')]]['id'],'destaccountcode':_0x40fc56[_0x0a9e('0x68')]});}}}}}}catch(_0x3a1974){logger['error'](_0x0a9e('0x6a'),_0x40fc56['uniqueid'],util[_0x0a9e('0x25')](_0x3a1974,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x15')]=function(_0x1f29bd){try{if(this[_0x0a9e('0x1e')](_0x1f29bd)){logger[_0x0a9e('0x23')](_0x0a9e('0x6b'),_0x1f29bd[_0x0a9e('0x26')],util['inspect'](_0x1f29bd,{'showHidden':![],'depth':null}));this[_0x0a9e('0x6c')](_0x1f29bd[_0x0a9e('0x26')],_[_0x0a9e('0x6d')](_0x1f29bd[_0x0a9e('0x6e')])[0x0],_0x1f29bd[_0x0a9e('0x6f')]);if(this[_0x0a9e('0x8')][_0x1f29bd[_0x0a9e('0x26')]]){for(var _0x33f0c9 in this[_0x0a9e('0x8')][_0x1f29bd[_0x0a9e('0x26')]]){if(this[_0x0a9e('0x8')][_0x1f29bd[_0x0a9e('0x26')]][_0x0a9e('0x58')](_0x33f0c9)){logger['info'](_0x0a9e('0x70'),_0x1f29bd[_0x0a9e('0x26')],_0x33f0c9,_[_0x0a9e('0x6d')](_0x1f29bd[_0x0a9e('0x6e')])[0x0],_0x1f29bd[_0x0a9e('0x6f')]);if(_['isUndefined'](this[_0x0a9e('0x8')][_0x1f29bd[_0x0a9e('0x26')]][_0x33f0c9]['variables'])){this[_0x0a9e('0x8')][_0x1f29bd['uniqueid']][_0x33f0c9][_0x0a9e('0xb')]={};}this[_0x0a9e('0x8')][_0x1f29bd[_0x0a9e('0x26')]][_0x33f0c9][_0x0a9e('0xb')]=this['variables'][_0x1f29bd[_0x0a9e('0x26')]];}}}}}catch(_0x4cf72d){logger[_0x0a9e('0x37')](_0x0a9e('0x71'),_0x1f29bd['uniqueid'],util[_0x0a9e('0x25')](_0x4cf72d,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x6c')]=function(_0x4ab276,_0x4c788f,_0x1b82b7){var _0x6ba2be=[_0x0a9e('0x72'),_0x0a9e('0x73'),_0x0a9e('0x74'),_0x0a9e('0x75'),_0x0a9e('0x76'),_0x0a9e('0x77'),_0x0a9e('0x78'),'rtpaudioqosrttbridged',_0x0a9e('0x79'),'sipuri',_0x0a9e('0x7a'),_0x0a9e('0x7b'),_0x0a9e('0x7c'),_0x0a9e('0x7d'),_0x0a9e('0x7e'),'memberlastcall',_0x0a9e('0x21'),_0x0a9e('0x7f'),_0x0a9e('0x80')];if(!_[_0x0a9e('0x81')](_0x4c788f)&&!_[_0x0a9e('0x82')](_0x6ba2be,_0x4c788f)){if(_['isUndefined'](this['variables'][_0x4ab276])){this[_0x0a9e('0xb')][_0x4ab276]={};}this['variables'][_0x4ab276][_0x4c788f]=_0x1b82b7;}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x17')]=function(_0x4672e1){try{if(this[_0x0a9e('0x1e')](_0x4672e1)){logger[_0x0a9e('0x23')](_0x0a9e('0x83'),_0x4672e1['uniqueid'],util['inspect'](_0x4672e1,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x4672e1['uniqueid']]){for(var _0x2469d1 in this['channels'][_0x4672e1[_0x0a9e('0x26')]]){if(this['channels'][_0x4672e1['uniqueid']][_0x0a9e('0x58')](_0x2469d1)){if(this[_0x0a9e('0x8')][_0x4672e1['uniqueid']][_0x2469d1][_0x0a9e('0x4e')]==_0x0a9e('0x84')&&this[_0x0a9e('0x8')][_0x4672e1[_0x0a9e('0x26')]][_0x2469d1][_0x0a9e('0x12')]){logger['info']('[%s][voiceAgentReport][hangup]\x20destuniqueid:%s',_0x4672e1[_0x0a9e('0x26')],_0x2469d1);this[_0x0a9e('0x8')][_0x4672e1[_0x0a9e('0x26')]][_0x2469d1][_0x0a9e('0x5f')]=moment()[_0x0a9e('0x35')]('YYYY-MM-DD\x20HH:mm:ss');}}}logger[_0x0a9e('0x23')](_0x0a9e('0x85'),_0x4672e1['uniqueid'],util[_0x0a9e('0x25')](_[_0x0a9e('0x86')](this[_0x0a9e('0x8')][_0x4672e1[_0x0a9e('0x26')]]),{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x87'),_[_0x0a9e('0x86')](this[_0x0a9e('0x8')][_0x4672e1[_0x0a9e('0x26')]]));delete this[_0x0a9e('0x8')][_0x4672e1['uniqueid']];}if(this[_0x0a9e('0xb')][_0x4672e1[_0x0a9e('0x26')]]){delete this[_0x0a9e('0xb')][_0x4672e1[_0x0a9e('0x26')]];}}}catch(_0x1d0b02){logger['error']('[%s][voiceAgentReport][hangup]',_0x4672e1[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x1d0b02,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x88')]=function(_0x34f7b5){try{if(this['isNotNull'](_0x34f7b5)){logger[_0x0a9e('0x23')](_0x0a9e('0x89'),_0x34f7b5[_0x0a9e('0x26')],util['inspect'](_0x34f7b5,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x34f7b5['transfereeuniqueid']]){for(var _0x2144ca in this['channels'][_0x34f7b5[_0x0a9e('0x8a')]]){if(this[_0x0a9e('0x8')][_0x34f7b5[_0x0a9e('0x8a')]]['hasOwnProperty'](_0x2144ca)){if(_0x34f7b5[_0x0a9e('0x8b')]===_0x2144ca){logger['info'](_0x0a9e('0x8c'),_0x34f7b5[_0x0a9e('0x26')],this[_0x0a9e('0x8')][_0x34f7b5[_0x0a9e('0x8a')]][_0x2144ca][_0x0a9e('0x21')],_0x2144ca);var _0x1bee04=moment();this[_0x0a9e('0x8')][_0x34f7b5[_0x0a9e('0x8a')]][_0x2144ca][_0x0a9e('0x12')]=!![];this[_0x0a9e('0x8')][_0x34f7b5[_0x0a9e('0x8a')]][_0x2144ca][_0x0a9e('0x5f')]=moment()[_0x0a9e('0x35')](_0x0a9e('0x27'));this[_0x0a9e('0x8')][_0x34f7b5[_0x0a9e('0x8a')]][_0x2144ca]['lastevent']='complete';this[_0x0a9e('0x8')][_0x34f7b5['transfereeuniqueid']][_0x2144ca][_0x0a9e('0x4e')]=_0x0a9e('0x84');this['channels'][_0x34f7b5[_0x0a9e('0x8a')]][_0x2144ca][_0x0a9e('0x62')]=_0x1bee04[_0x0a9e('0x8d')](this[_0x0a9e('0x8')][_0x34f7b5['transfereeuniqueid']][_0x2144ca][_0x0a9e('0x3c')],_0x0a9e('0x8e'));}}}}if(this[_0x0a9e('0x8')][_0x34f7b5[_0x0a9e('0x8f')]]){var _0x5d0e1f=this[_0x0a9e('0x8')][_0x34f7b5[_0x0a9e('0x8f')]];this[_0x0a9e('0x8')][_0x34f7b5['secondtransfereruniqueid']]=this[_0x0a9e('0x8')][_0x34f7b5[_0x0a9e('0x8a')]];this[_0x0a9e('0x8')][_0x34f7b5['transfereeuniqueid']]=_0x5d0e1f;}}}catch(_0x303f75){logger[_0x0a9e('0x37')](_0x0a9e('0x90'),_0x34f7b5[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x303f75,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x0a9e('0x1b')]=function(_0x289e65){try{if(this['isNotNull'](_0x289e65)){logger[_0x0a9e('0x23')](_0x0a9e('0x91'),_0x289e65[_0x0a9e('0x26')],util['inspect'](_0x289e65,{'showHidden':![],'depth':null}));if(this['channels'][_0x289e65['transfereeuniqueid']]){for(var _0x1015aa in this[_0x0a9e('0x8')][_0x289e65['transfereeuniqueid']]){if(this[_0x0a9e('0x8')][_0x289e65[_0x0a9e('0x8a')]][_0x0a9e('0x58')](_0x1015aa)){if(_0x289e65['transfereruniqueid']===_0x1015aa){logger[_0x0a9e('0x20')](_0x0a9e('0x92'),_0x289e65[_0x0a9e('0x26')],this[_0x0a9e('0x8')][_0x289e65[_0x0a9e('0x8a')]][_0x1015aa][_0x0a9e('0x21')],_0x1015aa);var _0x40e6e7=moment();this[_0x0a9e('0x8')][_0x289e65[_0x0a9e('0x8a')]][_0x1015aa]['agentcomplete']=!![];this[_0x0a9e('0x8')][_0x289e65['transfereeuniqueid']][_0x1015aa][_0x0a9e('0x5f')]=_0x40e6e7;this[_0x0a9e('0x8')][_0x289e65[_0x0a9e('0x8a')]][_0x1015aa][_0x0a9e('0x53')]=_0x0a9e('0x60');this[_0x0a9e('0x8')][_0x289e65['transfereeuniqueid']][_0x1015aa][_0x0a9e('0x4e')]=_0x0a9e('0x84');this[_0x0a9e('0x8')][_0x289e65[_0x0a9e('0x8a')]][_0x1015aa]['talktime']=_0x40e6e7[_0x0a9e('0x8d')](this[_0x0a9e('0x8')][_0x289e65[_0x0a9e('0x8a')]][_0x1015aa][_0x0a9e('0x3c')],_0x0a9e('0x8e'));}}}}}}catch(_0x2be526){logger[_0x0a9e('0x37')](_0x0a9e('0x93'),_0x289e65[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x2be526,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x0a9e('0x18')]=function(_0x88b25f){var _0x2ff265='';try{if(this[_0x0a9e('0x1e')](_0x88b25f)){logger[_0x0a9e('0x23')](_0x0a9e('0x94'),_0x88b25f[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x88b25f,{'showHidden':![],'depth':null}));if(_0x88b25f['channel']){_0x2ff265=_0x88b25f[_0x0a9e('0x95')][_0x0a9e('0x96')](0x0,_0x88b25f[_0x0a9e('0x95')]['lastIndexOf']('-'));if(this[_0x0a9e('0xa')][_0x2ff265]){logger[_0x0a9e('0x20')](_0x0a9e('0x97'),_0x88b25f[_0x0a9e('0x26')],_0x2ff265);this[_0x0a9e('0xa')][_0x2ff265][_0x0a9e('0x98')]=!![];}}}}catch(_0x424f1b){logger[_0x0a9e('0x37')](_0x0a9e('0x99'),_0x88b25f[_0x0a9e('0x26')],util['inspect'](_0x424f1b,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x9a')]=function(_0x15a9ed){var _0x3db98f='';try{if(this[_0x0a9e('0x1e')](_0x15a9ed)){logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][musiconholdstop]\x20event:',_0x15a9ed[_0x0a9e('0x26')],util['inspect'](_0x15a9ed,{'showHidden':![],'depth':null}));if(_0x15a9ed['channel']){_0x3db98f=_0x15a9ed['channel'][_0x0a9e('0x96')](0x0,_0x15a9ed[_0x0a9e('0x95')][_0x0a9e('0x9b')]('-'));if(this[_0x0a9e('0xa')][_0x3db98f]){logger['info'](_0x0a9e('0x9c'),_0x15a9ed[_0x0a9e('0x26')],_0x3db98f);this[_0x0a9e('0xa')][_0x3db98f][_0x0a9e('0x98')]=![];}}}}catch(_0x2c8d1d){logger['error']('[%s][voiceAgentReport][musiconholdstop]',_0x15a9ed[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x2c8d1d,{'showHidden':![],'depth':null}));}};module[_0x0a9e('0x9d')]=VoiceAgentReport;
\ No newline at end of file
index a4a6ce4..c169633 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a42=['subtract','seconds','lastapplication','lastdata','cdr(','match','queue','[%s][voiceCallReport][newexten]','[%s][voiceCallReport][newstate]\x20event:','answered','answertime','holdtime','connectedlinename','destinationchannel','disposition','toNumber','UserId','membername','routealias','[%s][voiceCallReport][newstate]\x20sending\x20user:agentconnect\x20event:','[%s][voiceCallReport][newstate]','syncMixMonitorFilename','endsWith','.wav49','replace','.WAV','monitorFilename','find','monitors','rec','[%s][voiceCallReport][mixMonitorFilename]','[%s][voiceCallReport][varset]\x20event:','variable','mixmonitor_filename','[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s','value','xmd-phone','[%s][voiceCallReport][varset]\x20variable:xmd-phone\x20value:%s','[%s][voiceCallReport][varset]\x20variable:xmd-callerid\x20value:%s','callerid','xmd-cdrtype','[%s][voiceCallReport][varset]\x20variable:xmd-cdrtype\x20value:%s','[%s][voiceCallReport][varset]\x20variable:xmd-queue\x20value:%s','xmd-originatecalleridnum','originatecalleridnum','destination','xmd-callerid-preview','[%s][voiceCallReport][varset]\x20variable:xmd-callerid-preview\x20value:%s','[%s][voiceCallReport][varset]\x20variable:xmcs-queue\x20value:%s','[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s','parse','sipcallid','sipcalllinkedid','[%s][voiceCallReport][varset]','[%s][voiceCallReport][hangup]\x20event:','[%s][voiceCallReport][hangup]\x20reason:%s','cause-txt','endtime','billableseconds','diff','omit','[%s][voiceCallReport][hangup]\x20sending\x20user:agentcomplete\x20event:','emit','user:agentcomplete','resolve','transferType','getSettings','then','Action','StopMixMonitor','catch','finally','event','BlindTransfer','type','outbound','[%s][voiceCallReport][hangup]\x20sending\x20hangup\x20event:','[%s][voiceCallReport][hangup]','syncAttendedTransfer','[%s][voiceCallReport][attendedtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','origtransferercalleridnum','transfereeuniqueid','transfercalleridnum','transfertargetcalleridnum','secondtransfereruniqueid','transfertargetuniqueid','transferconnectedlinenum','origtransfereruniqueid','origtransfererlinkedid','ATTENDED','[%s][voiceCallReport][attendedtransfer]','syncBlindTransfer','[%s][voiceCallReport][blindtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','transfereecalleridnum','[%s][voiceCallReport][blindtransfer]\x20event:','extension','BLIND','isNil','mohstarttime','[%s][voiceCallReport][musiconholdstart]','mohtime','[%s][voiceCallReport][musiconholdstop]\x20mohtime:%s','[%s][voiceCallReport][musiconholdstop]','lodash','moment','util','ioredis','../../../config/logger','../ami','../model/channel','../rpc/setting','unknown','not_inuse','ringing','ringinuse','onhold','set','dial','playback','voicemail','NO\x20ANSWER','FAILED','BUSY','redis','defaults','localhost','channels','blindTransfers','coreshowchannel','syncNewExten','bind','newchannel','syncNewChannel','newstate','syncNewState','varset','syncVarSet','syncHangup','newcallerid','syncNewCallerId','attendedtransfer','blindtransfer','musiconholdstart','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','info','actionCoreShowChannels','error','inspect','prototype','isNotNull','[%s][voiceCallReport][newcallerid]\x20calleridname:%s\x20calleridnum:%s','uniqueid','calleridname','calleridnum','debug','[%s][voiceCallReport][newcallerid]\x20event:','linkedid','isUndefined','merge','keys','from-sip','exten','xcally-motion-preview','agents','channel','destconnectedlinenum','connectedlinenum','format','name','user:agentconnect','split','accountcode','[%s][voiceCallReport][newcallerid]','[%s][voiceCallReport][newchannel]\x20event:','context','starttime','YYYY-MM-DD\x20HH:mm:ss','channelstate','pick','[%s][voiceCallReport][newchannel]\x20sending\x20user:agentconnect\x20event:','user:%s','[%s][voiceCallReport][newchannel]','[%s][voiceCallReport][newexten]\x20event:','OutgoingSpoolFailed','application','toLowerCase','applicationdata','appdata','startsWith','CDR(routeAlias)','[%s][voiceCallReport][newexten]\x20application:%s\x20appdata:%s','duration'];(function(_0x129929,_0x46008d){var _0x3bd48e=function(_0x5d0a26){while(--_0x5d0a26){_0x129929['push'](_0x129929['shift']());}};_0x3bd48e(++_0x46008d);}(_0x5a42,0x129));var _0x25a4=function(_0x383102,_0x3f735f){_0x383102=_0x383102-0x0;var _0x31698d=_0x5a42[_0x383102];return _0x31698d;};'use strict';var BPromise=require('bluebird');var _=require(_0x25a4('0x0'));var moment=require(_0x25a4('0x1'));var util=require(_0x25a4('0x2'));var path=require('path');var Redis=require(_0x25a4('0x3'));var config=require('../../../config/environment');var logger=require(_0x25a4('0x4'))('ami');var ami=require(_0x25a4('0x5'));var Channel=require(_0x25a4('0x6'));var RpcSetting=require(_0x25a4('0x7'));var statusDesc=[_0x25a4('0x8'),_0x25a4('0x9'),'inuse','busy','invalid','unavailable',_0x25a4('0xa'),_0x25a4('0xb'),_0x25a4('0xc')];var applications=[_0x25a4('0xd'),'queue','agi',_0x25a4('0xe'),_0x25a4('0xf'),_0x25a4('0x10')];var dispositions=[_0x25a4('0x11'),'FAILED',_0x25a4('0x12'),_0x25a4('0x11'),_0x25a4('0x11'),_0x25a4('0x11'),'ANSWERED',_0x25a4('0x13'),'FAILED',_0x25a4('0x12'),_0x25a4('0x12')];var actions={};config[_0x25a4('0x14')]=_[_0x25a4('0x15')](config[_0x25a4('0x14')],{'host':_0x25a4('0x16'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function VoiceCallReport(_0x5888bd){this[_0x25a4('0x17')]=_0x5888bd['channels'];this['agents']=_0x5888bd['agents'];this[_0x25a4('0x18')]={};ami['on'](_0x25a4('0x19'),this[_0x25a4('0x1a')][_0x25a4('0x1b')](this));ami['on']('newexten',this[_0x25a4('0x1a')][_0x25a4('0x1b')](this));ami['on'](_0x25a4('0x1c'),this[_0x25a4('0x1d')][_0x25a4('0x1b')](this));ami['on'](_0x25a4('0x1e'),this[_0x25a4('0x1f')][_0x25a4('0x1b')](this));ami['on'](_0x25a4('0x20'),this[_0x25a4('0x21')]['bind'](this));ami['on']('hangup',this[_0x25a4('0x22')][_0x25a4('0x1b')](this));ami['on'](_0x25a4('0x23'),this[_0x25a4('0x24')]['bind'](this));ami['on'](_0x25a4('0x25'),this['syncAttendedTransfer'][_0x25a4('0x1b')](this));ami['on'](_0x25a4('0x26'),this['syncBlindTransfer'][_0x25a4('0x1b')](this));ami['on'](_0x25a4('0x27'),this[_0x25a4('0x28')][_0x25a4('0x1b')](this));ami['on'](_0x25a4('0x29'),this[_0x25a4('0x2a')]['bind'](this));try{logger[_0x25a4('0x2b')]('[voiceCallReport][coreshowchannels]\x20started');ami[_0x25a4('0x2c')]();}catch(_0xd2d334){logger[_0x25a4('0x2d')]('[voiceCallReport][coreshowchannels]',util[_0x25a4('0x2e')](_0xd2d334,{'showHidden':![],'depth':null}));}}VoiceCallReport[_0x25a4('0x2f')]['isNotNull']=function(_0x3e1a43){return _0x3e1a43!==null&&!_['isUndefined'](_0x3e1a43);};VoiceCallReport[_0x25a4('0x2f')]['emit']=function(_0x526626,_0xd7eb0d,_0x1208fa){io['to'](_0x526626)['emit'](_0xd7eb0d,_0x1208fa);};VoiceCallReport[_0x25a4('0x2f')][_0x25a4('0x24')]=function(_0x654bdd){try{if(this[_0x25a4('0x30')](_0x654bdd)){logger[_0x25a4('0x2b')](_0x25a4('0x31'),_0x654bdd[_0x25a4('0x32')],_0x654bdd[_0x25a4('0x33')],_0x654bdd[_0x25a4('0x34')]);logger[_0x25a4('0x35')](_0x25a4('0x36'),_0x654bdd[_0x25a4('0x32')],util[_0x25a4('0x2e')](_0x654bdd,{'showHidden':![],'depth':null}));if(_0x654bdd[_0x25a4('0x32')]===_0x654bdd[_0x25a4('0x37')]){if(!_[_0x25a4('0x38')](this[_0x25a4('0x17')][_0x654bdd[_0x25a4('0x32')]])){_[_0x25a4('0x39')](this['channels'][_0x654bdd[_0x25a4('0x32')]],_['pick'](_0x654bdd,_[_0x25a4('0x3a')](this['channels'][_0x654bdd['uniqueid']])));}}if(_0x654bdd['context']===_0x25a4('0x3b')){if(this['agents'][_0x654bdd['channel']['split']('-')[0x0]]){if(_0x654bdd[_0x25a4('0x3c')]==_0x25a4('0x3d')){this[_0x25a4('0x3e')][_0x654bdd[_0x25a4('0x3f')]['split']('-')[0x0]][_0x25a4('0x40')]=_0x654bdd[_0x25a4('0x41')];this['emit'](util[_0x25a4('0x42')]('user:%s',this[_0x25a4('0x3e')][_0x654bdd[_0x25a4('0x3f')]['split']('-')[0x0]][_0x25a4('0x43')]),_0x25a4('0x44'),{'destaccountcode':this['agents'][_0x654bdd[_0x25a4('0x3f')][_0x25a4('0x45')]('-')[0x0]][_0x25a4('0x46')],'destconnectedlinenum':_0x654bdd[_0x25a4('0x41')]});}}}}}catch(_0x4d9246){logger['error'](_0x25a4('0x47'),_0x654bdd[_0x25a4('0x32')],util[_0x25a4('0x2e')](_0x4d9246,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x25a4('0x2f')][_0x25a4('0x1d')]=function(_0x588af2){try{if(this[_0x25a4('0x30')](_0x588af2)){logger[_0x25a4('0x35')](_0x25a4('0x48'),_0x588af2[_0x25a4('0x32')],util[_0x25a4('0x2e')](_0x588af2,{'showHidden':![],'depth':null}));if(_0x588af2[_0x25a4('0x32')]===_0x588af2['linkedid']&&_0x588af2['channel']!='OutgoingSpoolFailed'){if(_[_0x25a4('0x38')](this[_0x25a4('0x17')][_0x588af2['uniqueid']])){logger[_0x25a4('0x2b')]('[%s][voiceCallReport][newchannel]\x20context:%s\x20exten:%s',_0x588af2['uniqueid'],_0x588af2[_0x25a4('0x49')],_0x588af2[_0x25a4('0x3c')]);this[_0x25a4('0x17')][_0x588af2[_0x25a4('0x32')]]=new Channel();this[_0x25a4('0x17')][_0x588af2[_0x25a4('0x32')]][_0x25a4('0x4a')]=moment()[_0x25a4('0x42')](_0x25a4('0x4b'));this['channels'][_0x588af2['uniqueid']]['disposition']=dispositions[_['toNumber'](_0x588af2[_0x25a4('0x4c')])];_[_0x25a4('0x39')](this[_0x25a4('0x17')][_0x588af2[_0x25a4('0x32')]],_[_0x25a4('0x4d')](_0x588af2,_[_0x25a4('0x3a')](this[_0x25a4('0x17')][_0x588af2[_0x25a4('0x32')]])));if(_0x588af2[_0x25a4('0x49')]==='from-sip'){if(this['agents'][_0x588af2[_0x25a4('0x3f')][_0x25a4('0x45')]('-')[0x0]]){if(_[_0x25a4('0x38')](this['agents'][_0x588af2['channel'][_0x25a4('0x45')]('-')[0x0]]['destconnectedlinenum'])){this[_0x25a4('0x3e')][_0x588af2[_0x25a4('0x3f')][_0x25a4('0x45')]('-')[0x0]][_0x25a4('0x40')]=_0x588af2['exten'];logger[_0x25a4('0x35')](_0x25a4('0x4e'),_0x588af2[_0x25a4('0x32')],util[_0x25a4('0x2e')]({'destaccountcode':this[_0x25a4('0x3e')][_0x588af2[_0x25a4('0x3f')][_0x25a4('0x45')]('-')[0x0]][_0x25a4('0x46')],'destconnectedlinenum':_0x588af2[_0x25a4('0x3c')]},{'showHidden':![],'depth':null}));this['emit'](util[_0x25a4('0x42')](_0x25a4('0x4f'),this[_0x25a4('0x3e')][_0x588af2[_0x25a4('0x3f')][_0x25a4('0x45')]('-')[0x0]][_0x25a4('0x43')]),_0x25a4('0x44'),{'destaccountcode':this[_0x25a4('0x3e')][_0x588af2['channel']['split']('-')[0x0]]['accountcode'],'destconnectedlinenum':_0x588af2[_0x25a4('0x3c')]});}}}}}}}catch(_0x4494e0){logger[_0x25a4('0x2d')](_0x25a4('0x50'),_0x588af2[_0x25a4('0x32')],util['inspect'](_0x4494e0,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x25a4('0x2f')][_0x25a4('0x1a')]=function(_0x482c9f){try{if(this[_0x25a4('0x30')](_0x482c9f)){logger[_0x25a4('0x35')](_0x25a4('0x51'),_0x482c9f[_0x25a4('0x32')],util['inspect'](_0x482c9f,{'showHidden':![],'depth':null}));if(_0x482c9f[_0x25a4('0x32')]===_0x482c9f[_0x25a4('0x37')]&&_0x482c9f['exten']!='h'&&_0x482c9f[_0x25a4('0x3f')]!=_0x25a4('0x52')){_0x482c9f[_0x25a4('0x53')]=_0x482c9f[_0x25a4('0x53')][_0x25a4('0x54')]();_0x482c9f[_0x25a4('0x55')]=_0x482c9f['appdata']&&_0x482c9f[_0x25a4('0x56')][_0x25a4('0x57')](_0x25a4('0x58'))?_0x482c9f[_0x25a4('0x56')]:(_0x482c9f['appdata']||_0x482c9f[_0x25a4('0x55')])[_0x25a4('0x54')]();logger['info'](_0x25a4('0x59'),_0x482c9f[_0x25a4('0x32')],_0x482c9f[_0x25a4('0x53')],_0x482c9f[_0x25a4('0x55')]);if(_['isUndefined'](this[_0x25a4('0x17')][_0x482c9f[_0x25a4('0x32')]])){this[_0x25a4('0x17')][_0x482c9f[_0x25a4('0x32')]]=new Channel();this[_0x25a4('0x17')][_0x482c9f['uniqueid']][_0x25a4('0x4a')]=_0x482c9f[_0x25a4('0x5a')]?moment()[_0x25a4('0x5b')](moment['duration'](_0x482c9f[_0x25a4('0x5a')])[_0x25a4('0x5c')](),_0x25a4('0x5c'))[_0x25a4('0x42')](_0x25a4('0x4b')):moment()[_0x25a4('0x42')](_0x25a4('0x4b'));this[_0x25a4('0x17')][_0x482c9f[_0x25a4('0x32')]]['disposition']=_0x25a4('0x11');}_[_0x25a4('0x39')](this['channels'][_0x482c9f[_0x25a4('0x32')]],_[_0x25a4('0x4d')](_0x482c9f,_['keys'](this[_0x25a4('0x17')][_0x482c9f[_0x25a4('0x32')]])));if(_['includes'](applications,_0x482c9f['application'])){this[_0x25a4('0x17')][_0x482c9f['uniqueid']][_0x25a4('0x5d')]=_0x482c9f[_0x25a4('0x53')];this[_0x25a4('0x17')][_0x482c9f['uniqueid']][_0x25a4('0x5e')]=_0x482c9f[_0x25a4('0x55')];if(_0x482c9f['application']===_0x25a4('0xd')&&_['startsWith'](_0x482c9f[_0x25a4('0x55')][_0x25a4('0x54')](),_0x25a4('0x5f'))){var _0x4539b5=_0x482c9f[_0x25a4('0x55')][_0x25a4('0x45')]('=');var _0x3477dd=_0x4539b5[0x0][_0x25a4('0x54')]()[_0x25a4('0x60')](/cdr\((.*)\)/);if(_0x3477dd){this['channels'][_0x482c9f[_0x25a4('0x32')]][_0x3477dd[0x1]]=_0x4539b5[0x1];}}else if(_0x482c9f[_0x25a4('0x53')]===_0x25a4('0x61')){this[_0x25a4('0x17')][_0x482c9f[_0x25a4('0x32')]][_0x25a4('0x61')]=_0x482c9f[_0x25a4('0x55')]['split'](',')[0x0];}}}}}catch(_0x4df7f7){logger[_0x25a4('0x2d')](_0x25a4('0x62'),_0x482c9f[_0x25a4('0x32')],util['inspect'](_0x4df7f7,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x25a4('0x2f')][_0x25a4('0x1f')]=function(_0x219e53){try{if(this[_0x25a4('0x30')](_0x219e53)){logger[_0x25a4('0x2b')]('[%s][voiceCallReport][newstate]\x20linkedid:%s\x20calleridname:%s\x20calleridnum:%s',_0x219e53['uniqueid'],_0x219e53[_0x25a4('0x37')],_0x219e53[_0x25a4('0x33')],_0x219e53[_0x25a4('0x34')]);logger[_0x25a4('0x35')](_0x25a4('0x63'),_0x219e53['uniqueid'],util[_0x25a4('0x2e')](_0x219e53,{'showHidden':![],'depth':null}));if(_0x219e53['uniqueid']!==_0x219e53[_0x25a4('0x37')]){if(this['channels'][_0x219e53[_0x25a4('0x37')]]){if(_0x219e53['channelstate']==='6'){if(!this[_0x25a4('0x17')][_0x219e53[_0x25a4('0x37')]][_0x25a4('0x64')]){var _0x26c0d3=moment();this[_0x25a4('0x17')][_0x219e53[_0x25a4('0x37')]][_0x25a4('0x64')]=!![];this[_0x25a4('0x17')][_0x219e53[_0x25a4('0x37')]][_0x25a4('0x65')]=_0x26c0d3['format'](_0x25a4('0x4b'));if(this[_0x25a4('0x17')][_0x219e53[_0x25a4('0x37')]][_0x25a4('0x4a')]){this[_0x25a4('0x17')][_0x219e53['linkedid']][_0x25a4('0x66')]=_0x26c0d3['diff'](this[_0x25a4('0x17')][_0x219e53['linkedid']][_0x25a4('0x4a')],_0x25a4('0x5c'));}}this[_0x25a4('0x17')][_0x219e53['linkedid']][_0x25a4('0x37')]=_0x219e53[_0x25a4('0x32')];if(_0x219e53[_0x25a4('0x34')]!==_0x25a4('0x3d')){this[_0x25a4('0x17')][_0x219e53['linkedid']][_0x25a4('0x41')]=_0x219e53['calleridnum'];}this[_0x25a4('0x17')][_0x219e53[_0x25a4('0x37')]][_0x25a4('0x67')]=_0x219e53[_0x25a4('0x33')];this[_0x25a4('0x17')][_0x219e53[_0x25a4('0x37')]][_0x25a4('0x68')]=_0x219e53[_0x25a4('0x3f')];this['channels'][_0x219e53[_0x25a4('0x37')]][_0x25a4('0x69')]=dispositions[_[_0x25a4('0x6a')](_0x219e53[_0x25a4('0x4c')])];if(this[_0x25a4('0x3e')][_0x219e53['channel'][_0x25a4('0x45')]('-')[0x0]]){this['channels'][_0x219e53[_0x25a4('0x37')]][_0x25a4('0x6b')]=this['agents'][_0x219e53[_0x25a4('0x3f')][_0x25a4('0x45')]('-')[0x0]]['id'];this[_0x25a4('0x17')][_0x219e53[_0x25a4('0x37')]][_0x25a4('0x6c')]=this[_0x25a4('0x3e')][_0x219e53[_0x25a4('0x3f')]['split']('-')[0x0]][_0x25a4('0x43')];}}}}else{if(this[_0x25a4('0x17')][_0x219e53[_0x25a4('0x32')]]){if(_0x219e53['channelstate']==='6'){if(this['agents'][_0x219e53[_0x25a4('0x3f')][_0x25a4('0x45')]('-')[0x0]]){this[_0x25a4('0x17')][_0x219e53['uniqueid']][_0x25a4('0x6b')]=this[_0x25a4('0x3e')][_0x219e53[_0x25a4('0x3f')][_0x25a4('0x45')]('-')[0x0]]['id'];this['channels'][_0x219e53[_0x25a4('0x32')]][_0x25a4('0x6c')]=this[_0x25a4('0x3e')][_0x219e53[_0x25a4('0x3f')]['split']('-')[0x0]][_0x25a4('0x43')];}}}}if(_0x219e53['channelstate']==='6'&&_0x219e53[_0x25a4('0x49')]==='from-sip'){if(this[_0x25a4('0x3e')][_0x219e53[_0x25a4('0x3f')]['split']('-')[0x0]]){this['agents'][_0x219e53[_0x25a4('0x3f')][_0x25a4('0x45')]('-')[0x0]][_0x25a4('0x40')]=_0x219e53[_0x25a4('0x3c')];var _0xb087d2;if(this[_0x25a4('0x17')][_0x219e53[_0x25a4('0x32')]])_0xb087d2=this['channels'][_0x219e53[_0x25a4('0x32')]][_0x25a4('0x6d')];else if(this['channels'][_0x219e53[_0x25a4('0x37')]])_0xb087d2=this['channels'][_0x219e53[_0x25a4('0x37')]][_0x25a4('0x6d')];logger[_0x25a4('0x35')](_0x25a4('0x6e'),_0x219e53['uniqueid'],util['inspect']({'destaccountcode':this[_0x25a4('0x3e')][_0x219e53[_0x25a4('0x3f')][_0x25a4('0x45')]('-')[0x0]][_0x25a4('0x46')],'destconnectedlinenum':_0x219e53[_0x25a4('0x3c')],'routealias':_0xb087d2},{'showHidden':![],'depth':null}));this['emit'](util['format'](_0x25a4('0x4f'),this['agents'][_0x219e53['channel'][_0x25a4('0x45')]('-')[0x0]][_0x25a4('0x43')]),_0x25a4('0x44'),{'destaccountcode':this[_0x25a4('0x3e')][_0x219e53['channel'][_0x25a4('0x45')]('-')[0x0]][_0x25a4('0x46')],'destconnectedlinenum':_0x219e53[_0x25a4('0x3c')],'routealias':_0xb087d2});}}}}catch(_0x47a024){logger[_0x25a4('0x2d')](_0x25a4('0x6f'),_0x219e53[_0x25a4('0x32')],util['inspect'](_0x47a024,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x25a4('0x2f')][_0x25a4('0x70')]=function(_0x21ce08,_0x45b7d4){try{if(this[_0x25a4('0x17')][_0x21ce08]){logger[_0x25a4('0x2b')]('[%s][voiceCallReport][mixMonitorFilename]\x20monitorFilename:%s',_0x21ce08,_0x45b7d4);this['channels'][_0x21ce08]['monitor']=!![];if(_[_0x25a4('0x71')](_0x45b7d4,_0x25a4('0x72'))){_0x45b7d4=_0x45b7d4[_0x25a4('0x73')](_0x25a4('0x72'),_0x25a4('0x74'));}this[_0x25a4('0x17')][_0x21ce08][_0x25a4('0x75')]=_0x45b7d4;var _0x2cc5c7=_[_0x25a4('0x76')](this[_0x25a4('0x17')][_0x21ce08][_0x25a4('0x77')],{'filename':_0x45b7d4});if(_['isNil'](_0x2cc5c7)){this['channels'][_0x21ce08][_0x25a4('0x77')]['push']({'filename':_0x45b7d4,'createdAt':moment()['format'](_0x25a4('0x4b')),'mixmonitorid':'','status':_0x25a4('0x78')});}}}catch(_0x13240c){logger['error'](_0x25a4('0x79'),_0x21ce08,util[_0x25a4('0x2e')](_0x13240c,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x25a4('0x2f')][_0x25a4('0x21')]=function(_0x111203){try{if(this[_0x25a4('0x30')](_0x111203)){logger[_0x25a4('0x35')](_0x25a4('0x7a'),_0x111203['uniqueid'],util[_0x25a4('0x2e')](_0x111203,{'showHidden':![],'depth':null}));if(this['channels'][_0x111203[_0x25a4('0x32')]]&&_0x111203['channel']!='OutgoingSpoolFailed'){if(this[_0x25a4('0x30')](_0x111203[_0x25a4('0x7b')])){if(this[_0x25a4('0x30')](_0x111203[_0x25a4('0x7b')][_0x25a4('0x7c')])){logger[_0x25a4('0x2b')](_0x25a4('0x7d'),_0x111203[_0x25a4('0x32')],_0x111203['value']);this[_0x25a4('0x70')](_0x111203[_0x25a4('0x32')],_0x111203[_0x25a4('0x7e')]);}else if(this[_0x25a4('0x30')](_0x111203['variable'][_0x25a4('0x7f')])){logger[_0x25a4('0x2b')](_0x25a4('0x80'),_0x111203['uniqueid'],_0x111203[_0x25a4('0x7e')]);this[_0x25a4('0x17')][_0x111203[_0x25a4('0x32')]][_0x25a4('0x34')]=_0x111203['value'];}else if(this['isNotNull'](_0x111203[_0x25a4('0x7b')]['xmd-callerid'])){logger[_0x25a4('0x2b')](_0x25a4('0x81'),_0x111203[_0x25a4('0x32')],_0x111203[_0x25a4('0x7e')]);this['channels'][_0x111203[_0x25a4('0x32')]][_0x25a4('0x82')]=_0x111203[_0x25a4('0x7e')];}else if(this[_0x25a4('0x30')](_0x111203[_0x25a4('0x7b')][_0x25a4('0x83')])){logger['info'](_0x25a4('0x84'),_0x111203[_0x25a4('0x32')],_0x111203[_0x25a4('0x7e')]);this[_0x25a4('0x17')][_0x111203['uniqueid']]['type']=_0x111203['value'];}else if(this[_0x25a4('0x30')](_0x111203['variable']['xmd-queue'])){logger[_0x25a4('0x2b')](_0x25a4('0x85'),_0x111203[_0x25a4('0x32')],_0x111203[_0x25a4('0x7e')]['split'](',')[0x0]);this['channels'][_0x111203[_0x25a4('0x32')]][_0x25a4('0x61')]=_0x111203[_0x25a4('0x7e')][_0x25a4('0x45')](',')[0x0];}else if(this[_0x25a4('0x30')](_0x111203[_0x25a4('0x7b')][_0x25a4('0x86')])){logger[_0x25a4('0x2b')]('[%s][voiceCallReport][varset]\x20variable:xmd-originatecalleridnum\x20value:%s',_0x111203['uniqueid'],_0x111203[_0x25a4('0x7e')]);this[_0x25a4('0x17')][_0x111203[_0x25a4('0x32')]][_0x25a4('0x87')]=_0x111203[_0x25a4('0x7e')];}else if(this[_0x25a4('0x30')](_0x111203[_0x25a4('0x7b')]['xmd-destination'])){logger[_0x25a4('0x2b')]('[%s][voiceCallReport][varset]\x20variable:xmd-destination\x20value:%s',_0x111203[_0x25a4('0x32')],_0x111203[_0x25a4('0x7e')]);this['channels'][_0x111203[_0x25a4('0x32')]][_0x25a4('0x88')]=_0x111203['value'];}else if(this[_0x25a4('0x30')](_0x111203[_0x25a4('0x7b')][_0x25a4('0x89')])){logger['info'](_0x25a4('0x8a'),_0x111203['uniqueid'],_0x111203['value']);this[_0x25a4('0x17')][_0x111203[_0x25a4('0x32')]]['calleridpreview']=_0x111203['value'];}else if(this[_0x25a4('0x30')](_0x111203['variable']['xmcs-queue'])){logger[_0x25a4('0x2b')](_0x25a4('0x8b'),_0x111203['uniqueid'],_0x111203['value']);this['channels'][_0x111203[_0x25a4('0x32')]][_0x25a4('0x61')]=_0x111203[_0x25a4('0x7e')];}else if(this['isNotNull'](_0x111203[_0x25a4('0x7b')]['sipcallid'])){logger[_0x25a4('0x2b')](_0x25a4('0x8c'),_0x111203[_0x25a4('0x32')],_0x111203['value']);this['channels'][_0x111203[_0x25a4('0x32')]]['sipcalluniqueid']=_0x111203[_0x25a4('0x7e')];}}}else if(this[_0x25a4('0x30')](_0x111203[_0x25a4('0x7b')]['mixmonitor_filename'])){if(_0x111203[_0x25a4('0x7e')]){var _0x2892c6=path[_0x25a4('0x8d')](_0x111203['value'])[_0x25a4('0x43')];logger[_0x25a4('0x2b')](_0x25a4('0x7d'),_0x2892c6,_0x111203[_0x25a4('0x7e')]);this[_0x25a4('0x70')](_0x2892c6,_0x111203['value']);}}else if(this[_0x25a4('0x17')][_0x111203[_0x25a4('0x37')]]){if(this[_0x25a4('0x30')](_0x111203['variable'])){if(this[_0x25a4('0x30')](_0x111203[_0x25a4('0x7b')][_0x25a4('0x8e')])){logger['info'](_0x25a4('0x8c'),_0x111203[_0x25a4('0x37')],_0x111203[_0x25a4('0x7e')]);this[_0x25a4('0x17')][_0x111203['linkedid']][_0x25a4('0x8f')]=_0x111203[_0x25a4('0x7e')];}}}}}catch(_0x37449a){logger[_0x25a4('0x2d')](_0x25a4('0x90'),_0x111203[_0x25a4('0x32')],util[_0x25a4('0x2e')](_0x37449a,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x25a4('0x2f')]['syncHangup']=function(_0x4e30bb){try{if(this[_0x25a4('0x30')](_0x4e30bb)){logger[_0x25a4('0x35')](_0x25a4('0x91'),_0x4e30bb[_0x25a4('0x32')],util[_0x25a4('0x2e')](_0x4e30bb,{'showHidden':![],'depth':null}));if(this['channels'][_0x4e30bb['uniqueid']]){logger[_0x25a4('0x2b')](_0x25a4('0x92'),_0x4e30bb['uniqueid'],_0x4e30bb[_0x25a4('0x93')]);var _0xf46bf=moment();this[_0x25a4('0x17')][_0x4e30bb[_0x25a4('0x32')]][_0x25a4('0x94')]=_0xf46bf[_0x25a4('0x42')]('YYYY-MM-DD\x20HH:mm:ss');this[_0x25a4('0x17')][_0x4e30bb['uniqueid']][_0x25a4('0x5a')]=_0xf46bf['diff'](this[_0x25a4('0x17')][_0x4e30bb[_0x25a4('0x32')]][_0x25a4('0x4a')],_0x25a4('0x5c'));if(this['channels'][_0x4e30bb[_0x25a4('0x32')]][_0x25a4('0x64')]){this[_0x25a4('0x17')][_0x4e30bb['uniqueid']][_0x25a4('0x95')]=_0xf46bf[_0x25a4('0x96')](this[_0x25a4('0x17')][_0x4e30bb[_0x25a4('0x32')]][_0x25a4('0x65')],_0x25a4('0x5c'));this[_0x25a4('0x17')][_0x4e30bb[_0x25a4('0x32')]][_0x25a4('0x66')]=this[_0x25a4('0x17')][_0x4e30bb[_0x25a4('0x32')]][_0x25a4('0x5a')]-this[_0x25a4('0x17')][_0x4e30bb[_0x25a4('0x32')]][_0x25a4('0x95')];}if(_0x4e30bb['context']==='from-sip'){if(this[_0x25a4('0x3e')][_0x4e30bb[_0x25a4('0x3f')][_0x25a4('0x45')]('-')[0x0]]){this[_0x25a4('0x3e')][_0x4e30bb[_0x25a4('0x3f')][_0x25a4('0x45')]('-')[0x0]]=_[_0x25a4('0x97')](this[_0x25a4('0x3e')][_0x4e30bb[_0x25a4('0x3f')][_0x25a4('0x45')]('-')[0x0]],[_0x25a4('0x40')]);logger['debug'](_0x25a4('0x98'),_0x4e30bb[_0x25a4('0x32')],util[_0x25a4('0x2e')]({'id':this[_0x25a4('0x3e')][_0x4e30bb[_0x25a4('0x3f')][_0x25a4('0x45')]('-')[0x0]]['id'],'destaccountcode':this[_0x25a4('0x3e')][_0x4e30bb[_0x25a4('0x3f')][_0x25a4('0x45')]('-')[0x0]][_0x25a4('0x46')]},{'showHidden':![],'depth':null}));this[_0x25a4('0x99')](util['format'](_0x25a4('0x4f'),this[_0x25a4('0x3e')][_0x4e30bb[_0x25a4('0x3f')][_0x25a4('0x45')]('-')[0x0]][_0x25a4('0x43')]),_0x25a4('0x9a'),{'id':this[_0x25a4('0x3e')][_0x4e30bb['channel']['split']('-')[0x0]]['id'],'destaccountcode':this[_0x25a4('0x3e')][_0x4e30bb[_0x25a4('0x3f')][_0x25a4('0x45')]('-')[0x0]][_0x25a4('0x46')]});}}var _0x192528=this;Promise[_0x25a4('0x9b')]()['then'](function(){var _0x5ab743=_0x192528[_0x25a4('0x17')][_0x4e30bb[_0x25a4('0x32')]];if(typeof _0x5ab743[_0x25a4('0x9c')]==='undefined')return;if(_['isEmpty'](_0x5ab743[_0x25a4('0x77')]))return;return RpcSetting[_0x25a4('0x9d')]()[_0x25a4('0x9e')](function(_0x550518){if(!_0x550518['stopRecordingOnTransfer'])return;return Promise[_0x25a4('0x9b')]()[_0x25a4('0x9e')](function(){return ami[_0x25a4('0x9f')]({'action':_0x25a4('0xa0'),'channel':_0x5ab743['channel']})[_0x25a4('0xa1')](function(){});})[_0x25a4('0x9e')](function(){return ami[_0x25a4('0x9f')]({'action':_0x25a4('0xa0'),'channel':_0x5ab743[_0x25a4('0x68')]})['catch'](function(){})[_0x25a4('0xa2')](function(){var _0xc0570=_0x192528['agents'][_0x5ab743[_0x25a4('0x68')][_0x25a4('0x45')]('-')[0x0]];if(!_0xc0570)return;io[_0x25a4('0x99')]('webbar:stopmonitors',{'agentId':_0xc0570['id'],'uniqueid':_0x5ab743['uniqueid']});});});});})[_0x25a4('0x9e')](function(){if(_0x4e30bb[_0x25a4('0xa3')]===_0x25a4('0xa4')){_0x192528[_0x25a4('0x18')][_0x4e30bb['uniqueid']]=_0x192528[_0x25a4('0x17')][_0x4e30bb[_0x25a4('0x32')]];}else{if(_0x192528['channels'][_0x4e30bb[_0x25a4('0x32')]][_0x25a4('0xa5')]===_0x25a4('0xa6')&&_0x192528['blindTransfers'][_0x4e30bb['uniqueid']]){_0x192528['channels'][_0x4e30bb['uniqueid']]['uniqueid']=[_0x192528[_0x25a4('0x17')][_0x4e30bb[_0x25a4('0x32')]][_0x25a4('0x37')],_0x192528['channels'][_0x4e30bb[_0x25a4('0x32')]][_0x25a4('0x37')]=_0x192528[_0x25a4('0x17')][_0x4e30bb['uniqueid']]['uniqueid']][0x0];delete _0x192528['blindTransfers'][_0x4e30bb['uniqueid']];}}logger[_0x25a4('0x35')](_0x25a4('0xa7'),_0x4e30bb[_0x25a4('0x32')],util[_0x25a4('0x2e')](_0x192528[_0x25a4('0x17')][_0x4e30bb['uniqueid']],{'showHidden':![],'depth':null}));ami['emit']('custom:voiceCallReport',_0x192528[_0x25a4('0x17')][_0x4e30bb[_0x25a4('0x32')]]);delete _0x192528['channels'][_0x4e30bb[_0x25a4('0x32')]];});}}}catch(_0x5040c3){logger[_0x25a4('0x2d')](_0x25a4('0xa8'),_0x4e30bb['uniqueid'],util['inspect'](_0x5040c3,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0x25a4('0xa9')]=function(_0xc3fa56){try{if(this[_0x25a4('0x30')](_0xc3fa56)){logger[_0x25a4('0x2b')](_0x25a4('0xaa'),_0xc3fa56[_0x25a4('0x32')],_0xc3fa56[_0x25a4('0xab')],_0xc3fa56['transfertargetcalleridnum']);logger[_0x25a4('0x35')]('[%s][voiceCallReport][attendedtransfer]\x20event:',_0xc3fa56[_0x25a4('0x32')],util['inspect'](_0xc3fa56,{'showHidden':![],'depth':null}));if(this['channels'][_0xc3fa56[_0x25a4('0xac')]]){this[_0x25a4('0x17')][_0xc3fa56[_0x25a4('0xac')]][_0x25a4('0xad')]=_0xc3fa56[_0x25a4('0xab')];this['channels'][_0xc3fa56[_0x25a4('0xac')]]['transferconnectedlinenum']=_0xc3fa56[_0x25a4('0xae')];if(this['channels'][_0xc3fa56[_0x25a4('0xaf')]]){var _0x1a11c6=this[_0x25a4('0x17')][_0xc3fa56[_0x25a4('0xaf')]];this['channels'][_0xc3fa56['secondtransfereruniqueid']]=this[_0x25a4('0x17')][_0xc3fa56[_0x25a4('0xac')]];this['channels'][_0xc3fa56[_0x25a4('0xac')]]=_0x1a11c6;}}else if(this[_0x25a4('0x17')][_0xc3fa56['transfertargetuniqueid']]){this[_0x25a4('0x17')][_0xc3fa56['transfertargetuniqueid']][_0x25a4('0xad')]=_0xc3fa56[_0x25a4('0xab')];this[_0x25a4('0x17')][_0xc3fa56[_0x25a4('0xb0')]][_0x25a4('0xb1')]=_0xc3fa56[_0x25a4('0xae')];if(this[_0x25a4('0x17')][_0xc3fa56['origtransfereruniqueid']]){var _0x1a11c6=this['channels'][_0xc3fa56[_0x25a4('0xb2')]];this[_0x25a4('0x17')][_0xc3fa56[_0x25a4('0xb2')]]=this[_0x25a4('0x17')][_0xc3fa56[_0x25a4('0xb0')]];this['channels'][_0xc3fa56[_0x25a4('0xb0')]]=_0x1a11c6;}}if((this['channels'][_0xc3fa56[_0x25a4('0xb2')]]||this[_0x25a4('0x17')][_0xc3fa56[_0x25a4('0xb3')]])&&this[_0x25a4('0x17')][_0xc3fa56[_0x25a4('0xaf')]]){var _0x2452ac=_['some']([this['channels'][_0xc3fa56[_0x25a4('0xb2')]],this['channels'][_0xc3fa56[_0x25a4('0xb3')]],this['channels'][_0xc3fa56[_0x25a4('0xaf')]]],function(_0x55924f){return _0x55924f&&_0x55924f[_0x25a4('0xa5')]===_0x25a4('0xa6')&&_0x55924f['routeid'];});if(_0x2452ac){if(this[_0x25a4('0x17')][_0xc3fa56['origtransfereruniqueid']])this[_0x25a4('0x17')][_0xc3fa56['origtransfereruniqueid']][_0x25a4('0x9c')]='ATTENDED';if(this[_0x25a4('0x17')][_0xc3fa56[_0x25a4('0xb3')]])this[_0x25a4('0x17')][_0xc3fa56[_0x25a4('0xb3')]]['transferType']=_0x25a4('0xb4');this[_0x25a4('0x17')][_0xc3fa56[_0x25a4('0xaf')]]['transferType']=_0x25a4('0xb4');}}}}catch(_0x3972b){logger['error'](_0x25a4('0xb5'),_0xc3fa56[_0x25a4('0x32')],util[_0x25a4('0x2e')](_0x3972b,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0x25a4('0xb6')]=function(_0x784d06){try{if(this[_0x25a4('0x30')](_0x784d06)){logger[_0x25a4('0x2b')](_0x25a4('0xb7'),_0x784d06[_0x25a4('0x32')],_0x784d06[_0x25a4('0xb8')],_0x784d06['extension']);logger[_0x25a4('0x35')](_0x25a4('0xb9'),_0x784d06[_0x25a4('0x32')],util['inspect'](_0x784d06,{'showHidden':![],'depth':null}));if(this['channels'][_0x784d06[_0x25a4('0xac')]]){this[_0x25a4('0x17')][_0x784d06[_0x25a4('0xac')]][_0x25a4('0xad')]=_0x784d06[_0x25a4('0xb8')];this['channels'][_0x784d06[_0x25a4('0xac')]][_0x25a4('0xb1')]=_0x784d06[_0x25a4('0xba')];this[_0x25a4('0x17')][_0x784d06['transfereeuniqueid']][_0x25a4('0x9c')]=_0x25a4('0xbb');this['syncHangup']({'event':_0x25a4('0xa4'),'uniqueid':_0x784d06[_0x25a4('0xac')],'context':_0x784d06[_0x25a4('0x49')],'channel':_0x784d06['transfererchannel']});}else{this[_0x25a4('0x17')][_0x784d06['transfereruniqueid']][_0x25a4('0x9c')]='BLIND';}}}catch(_0x5e1481){logger['error']('[%s][voiceCallReport][blindtransfer]',_0x784d06[_0x25a4('0x32')],util['inspect'](_0x5e1481,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x25a4('0x2f')][_0x25a4('0x28')]=function(_0x2d29a7){try{if(this['isNotNull'](_0x2d29a7)){logger['debug']('[%s][voiceCallReport][musiconholdstart]\x20event:',_0x2d29a7[_0x25a4('0x32')],util[_0x25a4('0x2e')](_0x2d29a7,{'showHidden':![],'depth':null}));if(this['channels'][_0x2d29a7['uniqueid']]){if(!_[_0x25a4('0xbc')](this['channels'][_0x2d29a7[_0x25a4('0x32')]]['answertime'])){this['channels'][_0x2d29a7['uniqueid']]['mohstarttime']=moment()['format'](_0x25a4('0x4b'));logger['info']('[%s][voiceCallReport][musiconholdstart]\x20mohstarttime:%s',_0x2d29a7['uniqueid'],this['channels'][_0x2d29a7[_0x25a4('0x32')]][_0x25a4('0xbd')]);}}}}catch(_0x1d0dda){logger[_0x25a4('0x2d')](_0x25a4('0xbe'),_0x2d29a7[_0x25a4('0x32')],util[_0x25a4('0x2e')](_0x1d0dda,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x25a4('0x2f')][_0x25a4('0x2a')]=function(_0x59bae8){try{if(this['isNotNull'](_0x59bae8)){logger[_0x25a4('0x35')]('[%s][voiceCallReport][musiconholdstop]\x20event:',_0x59bae8[_0x25a4('0x32')],util['inspect'](_0x59bae8,{'showHidden':![],'depth':null}));if(this['channels'][_0x59bae8[_0x25a4('0x32')]]){if(!_[_0x25a4('0xbc')](this[_0x25a4('0x17')][_0x59bae8[_0x25a4('0x32')]]['mohstarttime'])){this[_0x25a4('0x17')][_0x59bae8[_0x25a4('0x32')]][_0x25a4('0xbf')]+=moment()['milliseconds'](0x0)['diff'](this['channels'][_0x59bae8[_0x25a4('0x32')]][_0x25a4('0xbd')],_0x25a4('0x5c'));logger[_0x25a4('0x2b')](_0x25a4('0xc0'),_0x59bae8[_0x25a4('0x32')],this[_0x25a4('0x17')][_0x59bae8[_0x25a4('0x32')]][_0x25a4('0xbf')]);delete this[_0x25a4('0x17')][_0x59bae8[_0x25a4('0x32')]]['mohstarttime'];}}}}catch(_0x198e19){logger['error'](_0x25a4('0xc1'),_0x59bae8[_0x25a4('0x32')],util[_0x25a4('0x2e')](_0x198e19,{'showHidden':![],'depth':null}));}};module['exports']=VoiceCallReport;
\ No newline at end of file
+var _0xb1aa=['[%s][voiceCallReport][hangup]','transfertargetcalleridnum','[%s][voiceCallReport][attendedtransfer]\x20event:','transfereeuniqueid','transfercalleridnum','origtransferercalleridnum','transferconnectedlinenum','secondtransfereruniqueid','ATTENDED','transfertargetuniqueid','origtransfereruniqueid','some','origtransfererlinkedid','[%s][voiceCallReport][attendedtransfer]','[%s][voiceCallReport][blindtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','transfereecalleridnum','extension','[%s][voiceCallReport][blindtransfer]\x20event:','BLIND','BlindTransfer','transfererchannel','transfereruniqueid','[%s][voiceCallReport][blindtransfer]','[%s][voiceCallReport][musiconholdstart]\x20event:','[%s][voiceCallReport][musiconholdstart]\x20mohstarttime:%s','mohstarttime','[%s][voiceCallReport][musiconholdstart]','milliseconds','[%s][voiceCallReport][musiconholdstop]\x20mohtime:%s','exports','lodash','moment','util','path','ioredis','ami','../ami','../model/channel','../rpc/setting','set','queue','agi','dial','playback','voicemail','NO\x20ANSWER','FAILED','ANSWERED','BUSY','redis','defaults','localhost','socket.io-emitter','channels','agents','blindTransfers','newexten','syncNewExten','newchannel','syncNewChannel','bind','syncNewState','varset','syncVarSet','hangup','syncHangup','syncNewCallerId','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','info','[voiceCallReport][coreshowchannels]\x20started','actionCoreShowChannels','error','[voiceCallReport][coreshowchannels]','inspect','prototype','isNotNull','emit','[%s][voiceCallReport][newcallerid]\x20calleridname:%s\x20calleridnum:%s','calleridnum','debug','uniqueid','linkedid','isUndefined','merge','pick','context','channel','split','exten','xcally-motion-preview','destconnectedlinenum','connectedlinenum','format','name','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','keys','from-sip','[%s][voiceCallReport][newchannel]\x20sending\x20user:agentconnect\x20event:','[%s][voiceCallReport][newchannel]','[%s][voiceCallReport][newexten]\x20event:','application','appdata','startsWith','CDR(routeAlias)','applicationdata','toLowerCase','duration','seconds','includes','lastapplication','lastdata','match','[%s][voiceCallReport][newexten]','[%s][voiceCallReport][newstate]\x20linkedid:%s\x20calleridname:%s\x20calleridnum:%s','calleridname','answered','answertime','connectedlinename','UserId','membername','routealias','[%s][voiceCallReport][newstate]\x20sending\x20user:agentconnect\x20event:','user:%s','[%s][voiceCallReport][newstate]','syncMixMonitorFilename','monitor','endsWith','replace','.WAV','monitorFilename','find','monitors','isNil','push','rec','[%s][voiceCallReport][mixMonitorFilename]','[%s][voiceCallReport][varset]\x20event:','variable','mixmonitor_filename','[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s','value','[%s][voiceCallReport][varset]\x20variable:xmd-phone\x20value:%s','xmd-callerid','[%s][voiceCallReport][varset]\x20variable:xmd-callerid\x20value:%s','xmd-cdrtype','[%s][voiceCallReport][varset]\x20variable:xmd-cdrtype\x20value:%s','type','xmd-queue','[%s][voiceCallReport][varset]\x20variable:xmd-queue\x20value:%s','xmd-destination','[%s][voiceCallReport][varset]\x20variable:xmd-destination\x20value:%s','destination','xmd-callerid-preview','[%s][voiceCallReport][varset]\x20variable:xmd-callerid-preview\x20value:%s','calleridpreview','[%s][voiceCallReport][varset]\x20variable:xmcs-queue\x20value:%s','sipcallid','[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s','sipcalluniqueid','parse','sipcalllinkedid','[%s][voiceCallReport][hangup]\x20event:','[%s][voiceCallReport][hangup]\x20reason:%s','cause-txt','endtime','diff','holdtime','billableseconds','omit','[%s][voiceCallReport][hangup]\x20sending\x20user:agentcomplete\x20event:','length','user:agentcomplete','transferType','resolve','then','stopRecordingOnTransfer','Action','StopMixMonitor','catch','destinationchannel','finally','event','outbound','[%s][voiceCallReport][hangup]\x20sending\x20hangup\x20event:'];(function(_0x255d5b,_0x4f6f35){var _0x3e141a=function(_0x249ee2){while(--_0x249ee2){_0x255d5b['push'](_0x255d5b['shift']());}};_0x3e141a(++_0x4f6f35);}(_0xb1aa,0x1ae));var _0xab1a=function(_0x2b0078,_0x391775){_0x2b0078=_0x2b0078-0x0;var _0x44cc60=_0xb1aa[_0x2b0078];return _0x44cc60;};'use strict';var _=require(_0xab1a('0x0'));var moment=require(_0xab1a('0x1'));var util=require(_0xab1a('0x2'));var path=require(_0xab1a('0x3'));var Redis=require(_0xab1a('0x4'));var config=require('../../../config/environment');var logger=require('../../../config/logger')(_0xab1a('0x5'));var ami=require(_0xab1a('0x6'));var Channel=require(_0xab1a('0x7'));var RpcSetting=require(_0xab1a('0x8'));var applications=[_0xab1a('0x9'),_0xab1a('0xa'),_0xab1a('0xb'),_0xab1a('0xc'),_0xab1a('0xd'),_0xab1a('0xe')];var dispositions=[_0xab1a('0xf'),_0xab1a('0x10'),'FAILED',_0xab1a('0xf'),'NO\x20ANSWER',_0xab1a('0xf'),_0xab1a('0x11'),_0xab1a('0x12'),_0xab1a('0x10'),'FAILED',_0xab1a('0x10')];config[_0xab1a('0x13')]=_[_0xab1a('0x14')](config[_0xab1a('0x13')],{'host':_0xab1a('0x15'),'port':0x18eb});var io=require(_0xab1a('0x16'))(new Redis(config[_0xab1a('0x13')]));function VoiceCallReport(_0x87b8d0){this[_0xab1a('0x17')]=_0x87b8d0['channels'];this[_0xab1a('0x18')]=_0x87b8d0['agents'];this[_0xab1a('0x19')]={};ami['on']('coreshowchannel',this['syncNewExten']['bind'](this));ami['on'](_0xab1a('0x1a'),this[_0xab1a('0x1b')]['bind'](this));ami['on'](_0xab1a('0x1c'),this[_0xab1a('0x1d')][_0xab1a('0x1e')](this));ami['on']('newstate',this[_0xab1a('0x1f')][_0xab1a('0x1e')](this));ami['on'](_0xab1a('0x20'),this[_0xab1a('0x21')]['bind'](this));ami['on'](_0xab1a('0x22'),this[_0xab1a('0x23')][_0xab1a('0x1e')](this));ami['on']('newcallerid',this[_0xab1a('0x24')][_0xab1a('0x1e')](this));ami['on'](_0xab1a('0x25'),this[_0xab1a('0x26')][_0xab1a('0x1e')](this));ami['on'](_0xab1a('0x27'),this[_0xab1a('0x28')][_0xab1a('0x1e')](this));ami['on']('musiconholdstart',this[_0xab1a('0x29')][_0xab1a('0x1e')](this));ami['on'](_0xab1a('0x2a'),this[_0xab1a('0x2b')][_0xab1a('0x1e')](this));try{logger[_0xab1a('0x2c')](_0xab1a('0x2d'));ami[_0xab1a('0x2e')]();}catch(_0x35f80d){logger[_0xab1a('0x2f')](_0xab1a('0x30'),util[_0xab1a('0x31')](_0x35f80d,{'showHidden':![],'depth':null}));}}VoiceCallReport[_0xab1a('0x32')][_0xab1a('0x33')]=function(_0x2004d0){return _0x2004d0!==null&&!_['isUndefined'](_0x2004d0);};VoiceCallReport['prototype'][_0xab1a('0x34')]=function(_0x1cfd26,_0x21be65,_0x228bcb){io['to'](_0x1cfd26)[_0xab1a('0x34')](_0x21be65,_0x228bcb);};VoiceCallReport['prototype']['syncNewCallerId']=function(_0x311657){try{if(this['isNotNull'](_0x311657)){logger[_0xab1a('0x2c')](_0xab1a('0x35'),_0x311657['uniqueid'],_0x311657['calleridname'],_0x311657[_0xab1a('0x36')]);logger[_0xab1a('0x37')]('[%s][voiceCallReport][newcallerid]\x20event:',_0x311657['uniqueid'],util[_0xab1a('0x31')](_0x311657,{'showHidden':![],'depth':null}));if(_0x311657[_0xab1a('0x38')]===_0x311657[_0xab1a('0x39')]){if(!_[_0xab1a('0x3a')](this[_0xab1a('0x17')][_0x311657[_0xab1a('0x38')]])){_[_0xab1a('0x3b')](this[_0xab1a('0x17')][_0x311657[_0xab1a('0x38')]],_[_0xab1a('0x3c')](_0x311657,_['keys'](this[_0xab1a('0x17')][_0x311657[_0xab1a('0x38')]])));}}if(_0x311657[_0xab1a('0x3d')]==='from-sip'){if(this[_0xab1a('0x18')][_0x311657[_0xab1a('0x3e')][_0xab1a('0x3f')]('-')[0x0]]){if(_0x311657[_0xab1a('0x40')]==_0xab1a('0x41')){this[_0xab1a('0x18')][_0x311657[_0xab1a('0x3e')]['split']('-')[0x0]][_0xab1a('0x42')]=_0x311657[_0xab1a('0x43')];this['emit'](util[_0xab1a('0x44')]('user:%s',this[_0xab1a('0x18')][_0x311657[_0xab1a('0x3e')][_0xab1a('0x3f')]('-')[0x0]][_0xab1a('0x45')]),_0xab1a('0x46'),{'destaccountcode':this[_0xab1a('0x18')][_0x311657['channel'][_0xab1a('0x3f')]('-')[0x0]][_0xab1a('0x47')],'destconnectedlinenum':_0x311657['connectedlinenum']});}}}}}catch(_0x55799e){logger['error'](_0xab1a('0x48'),_0x311657[_0xab1a('0x38')],util['inspect'](_0x55799e,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0xab1a('0x1d')]=function(_0x2f17a0){try{if(this[_0xab1a('0x33')](_0x2f17a0)){logger[_0xab1a('0x37')](_0xab1a('0x49'),_0x2f17a0[_0xab1a('0x38')],util[_0xab1a('0x31')](_0x2f17a0,{'showHidden':![],'depth':null}));if(_0x2f17a0['uniqueid']===_0x2f17a0[_0xab1a('0x39')]&&_0x2f17a0[_0xab1a('0x3e')]!=_0xab1a('0x4a')){if(_[_0xab1a('0x3a')](this['channels'][_0x2f17a0[_0xab1a('0x38')]])){logger[_0xab1a('0x2c')](_0xab1a('0x4b'),_0x2f17a0['uniqueid'],_0x2f17a0[_0xab1a('0x3d')],_0x2f17a0[_0xab1a('0x40')]);this['channels'][_0x2f17a0[_0xab1a('0x38')]]=new Channel();this[_0xab1a('0x17')][_0x2f17a0[_0xab1a('0x38')]][_0xab1a('0x4c')]=moment()[_0xab1a('0x44')](_0xab1a('0x4d'));this['channels'][_0x2f17a0['uniqueid']][_0xab1a('0x4e')]=dispositions[_[_0xab1a('0x4f')](_0x2f17a0[_0xab1a('0x50')])];_[_0xab1a('0x3b')](this[_0xab1a('0x17')][_0x2f17a0[_0xab1a('0x38')]],_['pick'](_0x2f17a0,_[_0xab1a('0x51')](this[_0xab1a('0x17')][_0x2f17a0[_0xab1a('0x38')]])));if(_0x2f17a0['context']===_0xab1a('0x52')){if(this[_0xab1a('0x18')][_0x2f17a0['channel'][_0xab1a('0x3f')]('-')[0x0]]){if(_[_0xab1a('0x3a')](this[_0xab1a('0x18')][_0x2f17a0[_0xab1a('0x3e')][_0xab1a('0x3f')]('-')[0x0]][_0xab1a('0x42')])){this[_0xab1a('0x18')][_0x2f17a0['channel'][_0xab1a('0x3f')]('-')[0x0]][_0xab1a('0x42')]=_0x2f17a0['exten'];logger[_0xab1a('0x37')](_0xab1a('0x53'),_0x2f17a0[_0xab1a('0x38')],util[_0xab1a('0x31')]({'id':this[_0xab1a('0x18')][_0x2f17a0[_0xab1a('0x3e')][_0xab1a('0x3f')]('-')[0x0]]['id'],'destaccountcode':this['agents'][_0x2f17a0['channel']['split']('-')[0x0]][_0xab1a('0x47')],'destconnectedlinenum':_0x2f17a0[_0xab1a('0x40')]},{'showHidden':![],'depth':null}));this[_0xab1a('0x34')](util[_0xab1a('0x44')]('user:%s',this[_0xab1a('0x18')][_0x2f17a0[_0xab1a('0x3e')][_0xab1a('0x3f')]('-')[0x0]][_0xab1a('0x45')]),_0xab1a('0x46'),{'id':this['agents'][_0x2f17a0[_0xab1a('0x3e')]['split']('-')[0x0]]['id'],'destaccountcode':this[_0xab1a('0x18')][_0x2f17a0[_0xab1a('0x3e')][_0xab1a('0x3f')]('-')[0x0]][_0xab1a('0x47')],'destconnectedlinenum':_0x2f17a0[_0xab1a('0x40')]});}}}}}}}catch(_0x33f91c){logger[_0xab1a('0x2f')](_0xab1a('0x54'),_0x2f17a0[_0xab1a('0x38')],util[_0xab1a('0x31')](_0x33f91c,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xab1a('0x32')][_0xab1a('0x1b')]=function(_0xd49ce6){try{if(this[_0xab1a('0x33')](_0xd49ce6)){logger['debug'](_0xab1a('0x55'),_0xd49ce6[_0xab1a('0x38')],util[_0xab1a('0x31')](_0xd49ce6,{'showHidden':![],'depth':null}));if(_0xd49ce6[_0xab1a('0x38')]===_0xd49ce6[_0xab1a('0x39')]&&_0xd49ce6[_0xab1a('0x40')]!='h'&&_0xd49ce6[_0xab1a('0x3e')]!=_0xab1a('0x4a')){_0xd49ce6[_0xab1a('0x56')]=_0xd49ce6['application']['toLowerCase']();_0xd49ce6['applicationdata']=_0xd49ce6['appdata']&&_0xd49ce6[_0xab1a('0x57')][_0xab1a('0x58')](_0xab1a('0x59'))?_0xd49ce6['appdata']:(_0xd49ce6[_0xab1a('0x57')]||_0xd49ce6[_0xab1a('0x5a')])[_0xab1a('0x5b')]();logger[_0xab1a('0x2c')]('[%s][voiceCallReport][newexten]\x20application:%s\x20appdata:%s',_0xd49ce6['uniqueid'],_0xd49ce6[_0xab1a('0x56')],_0xd49ce6[_0xab1a('0x5a')]);if(_[_0xab1a('0x3a')](this[_0xab1a('0x17')][_0xd49ce6[_0xab1a('0x38')]])){this['channels'][_0xd49ce6[_0xab1a('0x38')]]=new Channel();this[_0xab1a('0x17')][_0xd49ce6['uniqueid']][_0xab1a('0x4c')]=_0xd49ce6[_0xab1a('0x5c')]?moment()['subtract'](moment['duration'](_0xd49ce6[_0xab1a('0x5c')])[_0xab1a('0x5d')](),_0xab1a('0x5d'))[_0xab1a('0x44')]('YYYY-MM-DD\x20HH:mm:ss'):moment()['format'](_0xab1a('0x4d'));this[_0xab1a('0x17')][_0xd49ce6[_0xab1a('0x38')]][_0xab1a('0x4e')]=_0xab1a('0xf');}_[_0xab1a('0x3b')](this[_0xab1a('0x17')][_0xd49ce6[_0xab1a('0x38')]],_[_0xab1a('0x3c')](_0xd49ce6,_['keys'](this[_0xab1a('0x17')][_0xd49ce6[_0xab1a('0x38')]])));if(_[_0xab1a('0x5e')](applications,_0xd49ce6[_0xab1a('0x56')])){this[_0xab1a('0x17')][_0xd49ce6[_0xab1a('0x38')]][_0xab1a('0x5f')]=_0xd49ce6[_0xab1a('0x56')];this[_0xab1a('0x17')][_0xd49ce6[_0xab1a('0x38')]][_0xab1a('0x60')]=_0xd49ce6[_0xab1a('0x5a')];if(_0xd49ce6[_0xab1a('0x56')]===_0xab1a('0x9')&&_['startsWith'](_0xd49ce6[_0xab1a('0x5a')]['toLowerCase'](),'cdr(')){var _0x472636=_0xd49ce6['applicationdata']['split']('=');var _0x3b147d=_0x472636[0x0][_0xab1a('0x5b')]()[_0xab1a('0x61')](/cdr\((.*)\)/);if(_0x3b147d){this[_0xab1a('0x17')][_0xd49ce6[_0xab1a('0x38')]][_0x3b147d[0x1]]=_0x472636[0x1];}}else if(_0xd49ce6[_0xab1a('0x56')]==='queue'){this[_0xab1a('0x17')][_0xd49ce6[_0xab1a('0x38')]][_0xab1a('0xa')]=_0xd49ce6[_0xab1a('0x5a')][_0xab1a('0x3f')](',')[0x0];}}}}}catch(_0x22be5b){logger[_0xab1a('0x2f')](_0xab1a('0x62'),_0xd49ce6[_0xab1a('0x38')],util['inspect'](_0x22be5b,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xab1a('0x32')]['syncNewState']=function(_0x16b5b7){try{if(this[_0xab1a('0x33')](_0x16b5b7)){logger['info'](_0xab1a('0x63'),_0x16b5b7[_0xab1a('0x38')],_0x16b5b7['linkedid'],_0x16b5b7[_0xab1a('0x64')],_0x16b5b7[_0xab1a('0x36')]);logger['debug']('[%s][voiceCallReport][newstate]\x20event:',_0x16b5b7['uniqueid'],util['inspect'](_0x16b5b7,{'showHidden':![],'depth':null}));if(_0x16b5b7['uniqueid']!==_0x16b5b7[_0xab1a('0x39')]){if(this['channels'][_0x16b5b7[_0xab1a('0x39')]]){if(_0x16b5b7[_0xab1a('0x50')]==='6'){if(!this[_0xab1a('0x17')][_0x16b5b7[_0xab1a('0x39')]][_0xab1a('0x65')]){var _0x232e81=moment();this['channels'][_0x16b5b7[_0xab1a('0x39')]][_0xab1a('0x65')]=!![];this['channels'][_0x16b5b7[_0xab1a('0x39')]][_0xab1a('0x66')]=_0x232e81[_0xab1a('0x44')](_0xab1a('0x4d'));if(this[_0xab1a('0x17')][_0x16b5b7['linkedid']][_0xab1a('0x4c')]){this[_0xab1a('0x17')][_0x16b5b7[_0xab1a('0x39')]]['holdtime']=_0x232e81['diff'](this['channels'][_0x16b5b7['linkedid']][_0xab1a('0x4c')],'seconds');}}this[_0xab1a('0x17')][_0x16b5b7[_0xab1a('0x39')]][_0xab1a('0x39')]=_0x16b5b7[_0xab1a('0x38')];if(_0x16b5b7[_0xab1a('0x36')]!=='xcally-motion-preview'){this['channels'][_0x16b5b7[_0xab1a('0x39')]]['connectedlinenum']=_0x16b5b7['calleridnum'];}this[_0xab1a('0x17')][_0x16b5b7[_0xab1a('0x39')]][_0xab1a('0x67')]=_0x16b5b7[_0xab1a('0x64')];this['channels'][_0x16b5b7['linkedid']]['destinationchannel']=_0x16b5b7[_0xab1a('0x3e')];this[_0xab1a('0x17')][_0x16b5b7[_0xab1a('0x39')]][_0xab1a('0x4e')]=dispositions[_['toNumber'](_0x16b5b7['channelstate'])];if(this[_0xab1a('0x18')][_0x16b5b7[_0xab1a('0x3e')]['split']('-')[0x0]]){this[_0xab1a('0x17')][_0x16b5b7[_0xab1a('0x39')]]['UserId']=this[_0xab1a('0x18')][_0x16b5b7[_0xab1a('0x3e')][_0xab1a('0x3f')]('-')[0x0]]['id'];this[_0xab1a('0x17')][_0x16b5b7[_0xab1a('0x39')]]['membername']=this[_0xab1a('0x18')][_0x16b5b7[_0xab1a('0x3e')][_0xab1a('0x3f')]('-')[0x0]][_0xab1a('0x45')];}}}}else{if(this[_0xab1a('0x17')][_0x16b5b7[_0xab1a('0x38')]]){if(_0x16b5b7['channelstate']==='6'){if(this[_0xab1a('0x18')][_0x16b5b7[_0xab1a('0x3e')]['split']('-')[0x0]]){this[_0xab1a('0x17')][_0x16b5b7['uniqueid']][_0xab1a('0x68')]=this[_0xab1a('0x18')][_0x16b5b7[_0xab1a('0x3e')][_0xab1a('0x3f')]('-')[0x0]]['id'];this[_0xab1a('0x17')][_0x16b5b7[_0xab1a('0x38')]][_0xab1a('0x69')]=this[_0xab1a('0x18')][_0x16b5b7[_0xab1a('0x3e')][_0xab1a('0x3f')]('-')[0x0]][_0xab1a('0x45')];}}}}if(_0x16b5b7[_0xab1a('0x50')]==='6'&&_0x16b5b7[_0xab1a('0x3d')]===_0xab1a('0x52')){if(this[_0xab1a('0x18')][_0x16b5b7[_0xab1a('0x3e')][_0xab1a('0x3f')]('-')[0x0]]){this['agents'][_0x16b5b7[_0xab1a('0x3e')][_0xab1a('0x3f')]('-')[0x0]][_0xab1a('0x42')]=_0x16b5b7['exten'];var _0x88339,_0x22d6c2;if(this['channels'][_0x16b5b7[_0xab1a('0x38')]]){_0x88339=this[_0xab1a('0x17')][_0x16b5b7[_0xab1a('0x38')]][_0xab1a('0x6a')];_0x22d6c2=this[_0xab1a('0x17')][_0x16b5b7[_0xab1a('0x38')]][_0xab1a('0xa')];}else if(this[_0xab1a('0x17')][_0x16b5b7[_0xab1a('0x39')]]){_0x88339=this[_0xab1a('0x17')][_0x16b5b7[_0xab1a('0x39')]]['routealias'];_0x22d6c2=this[_0xab1a('0x17')][_0x16b5b7[_0xab1a('0x39')]][_0xab1a('0xa')];}logger[_0xab1a('0x37')](_0xab1a('0x6b'),_0x16b5b7[_0xab1a('0x38')],util[_0xab1a('0x31')]({'id':this[_0xab1a('0x18')][_0x16b5b7[_0xab1a('0x3e')][_0xab1a('0x3f')]('-')[0x0]]['id'],'destaccountcode':this[_0xab1a('0x18')][_0x16b5b7['channel'][_0xab1a('0x3f')]('-')[0x0]]['accountcode'],'destconnectedlinenum':_0x16b5b7[_0xab1a('0x40')],'routealias':_0x88339,'queue':_0x22d6c2||undefined},{'showHidden':![],'depth':null}));this['emit'](util[_0xab1a('0x44')](_0xab1a('0x6c'),this['agents'][_0x16b5b7['channel'][_0xab1a('0x3f')]('-')[0x0]][_0xab1a('0x45')]),_0xab1a('0x46'),{'id':this['agents'][_0x16b5b7[_0xab1a('0x3e')][_0xab1a('0x3f')]('-')[0x0]]['id'],'agentconnected':!![],'destaccountcode':this['agents'][_0x16b5b7[_0xab1a('0x3e')][_0xab1a('0x3f')]('-')[0x0]]['accountcode'],'destconnectedlinenum':_0x16b5b7[_0xab1a('0x40')],'routealias':_0x88339,'queue':_0x22d6c2||undefined});}}}}catch(_0xb8c94){logger[_0xab1a('0x2f')](_0xab1a('0x6d'),_0x16b5b7['uniqueid'],util[_0xab1a('0x31')](_0xb8c94,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0xab1a('0x6e')]=function(_0x2a4263,_0x5ae455){try{if(this[_0xab1a('0x17')][_0x2a4263]){logger['info']('[%s][voiceCallReport][mixMonitorFilename]\x20monitorFilename:%s',_0x2a4263,_0x5ae455);this[_0xab1a('0x17')][_0x2a4263][_0xab1a('0x6f')]=!![];if(_[_0xab1a('0x70')](_0x5ae455,'.wav49')){_0x5ae455=_0x5ae455[_0xab1a('0x71')]('.wav49',_0xab1a('0x72'));}this['channels'][_0x2a4263][_0xab1a('0x73')]=_0x5ae455;var _0x494b73=_[_0xab1a('0x74')](this['channels'][_0x2a4263][_0xab1a('0x75')],{'filename':_0x5ae455});if(_[_0xab1a('0x76')](_0x494b73)){this[_0xab1a('0x17')][_0x2a4263][_0xab1a('0x75')][_0xab1a('0x77')]({'filename':_0x5ae455,'createdAt':moment()[_0xab1a('0x44')](_0xab1a('0x4d')),'mixmonitorid':'','status':_0xab1a('0x78')});}}}catch(_0x17276d){logger[_0xab1a('0x2f')](_0xab1a('0x79'),_0x2a4263,util[_0xab1a('0x31')](_0x17276d,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xab1a('0x32')]['syncVarSet']=function(_0x1bb6dd){try{if(this[_0xab1a('0x33')](_0x1bb6dd)){logger[_0xab1a('0x37')](_0xab1a('0x7a'),_0x1bb6dd[_0xab1a('0x38')],util[_0xab1a('0x31')](_0x1bb6dd,{'showHidden':![],'depth':null}));if(this[_0xab1a('0x17')][_0x1bb6dd[_0xab1a('0x38')]]&&_0x1bb6dd[_0xab1a('0x3e')]!=_0xab1a('0x4a')){if(this[_0xab1a('0x33')](_0x1bb6dd[_0xab1a('0x7b')])){if(this[_0xab1a('0x33')](_0x1bb6dd[_0xab1a('0x7b')][_0xab1a('0x7c')])){logger['info'](_0xab1a('0x7d'),_0x1bb6dd['uniqueid'],_0x1bb6dd[_0xab1a('0x7e')]);this[_0xab1a('0x6e')](_0x1bb6dd['uniqueid'],_0x1bb6dd['value']);}else if(this[_0xab1a('0x33')](_0x1bb6dd[_0xab1a('0x7b')]['xmd-phone'])){logger[_0xab1a('0x2c')](_0xab1a('0x7f'),_0x1bb6dd['uniqueid'],_0x1bb6dd['value']);this[_0xab1a('0x17')][_0x1bb6dd[_0xab1a('0x38')]][_0xab1a('0x36')]=_0x1bb6dd[_0xab1a('0x7e')];}else if(this[_0xab1a('0x33')](_0x1bb6dd[_0xab1a('0x7b')][_0xab1a('0x80')])){logger[_0xab1a('0x2c')](_0xab1a('0x81'),_0x1bb6dd['uniqueid'],_0x1bb6dd['value']);this[_0xab1a('0x17')][_0x1bb6dd[_0xab1a('0x38')]]['callerid']=_0x1bb6dd[_0xab1a('0x7e')];}else if(this[_0xab1a('0x33')](_0x1bb6dd['variable'][_0xab1a('0x82')])){logger['info'](_0xab1a('0x83'),_0x1bb6dd[_0xab1a('0x38')],_0x1bb6dd[_0xab1a('0x7e')]);this[_0xab1a('0x17')][_0x1bb6dd[_0xab1a('0x38')]][_0xab1a('0x84')]=_0x1bb6dd[_0xab1a('0x7e')];}else if(this[_0xab1a('0x33')](_0x1bb6dd['variable'][_0xab1a('0x85')])){logger['info'](_0xab1a('0x86'),_0x1bb6dd[_0xab1a('0x38')],_0x1bb6dd[_0xab1a('0x7e')][_0xab1a('0x3f')](',')[0x0]);this[_0xab1a('0x17')][_0x1bb6dd[_0xab1a('0x38')]][_0xab1a('0xa')]=_0x1bb6dd[_0xab1a('0x7e')][_0xab1a('0x3f')](',')[0x0];}else if(this[_0xab1a('0x33')](_0x1bb6dd[_0xab1a('0x7b')]['xmd-originatecalleridnum'])){logger[_0xab1a('0x2c')]('[%s][voiceCallReport][varset]\x20variable:xmd-originatecalleridnum\x20value:%s',_0x1bb6dd['uniqueid'],_0x1bb6dd[_0xab1a('0x7e')]);this[_0xab1a('0x17')][_0x1bb6dd[_0xab1a('0x38')]]['originatecalleridnum']=_0x1bb6dd[_0xab1a('0x7e')];}else if(this[_0xab1a('0x33')](_0x1bb6dd[_0xab1a('0x7b')][_0xab1a('0x87')])){logger[_0xab1a('0x2c')](_0xab1a('0x88'),_0x1bb6dd[_0xab1a('0x38')],_0x1bb6dd[_0xab1a('0x7e')]);this[_0xab1a('0x17')][_0x1bb6dd[_0xab1a('0x38')]][_0xab1a('0x89')]=_0x1bb6dd[_0xab1a('0x7e')];}else if(this[_0xab1a('0x33')](_0x1bb6dd[_0xab1a('0x7b')][_0xab1a('0x8a')])){logger[_0xab1a('0x2c')](_0xab1a('0x8b'),_0x1bb6dd[_0xab1a('0x38')],_0x1bb6dd[_0xab1a('0x7e')]);this[_0xab1a('0x17')][_0x1bb6dd[_0xab1a('0x38')]][_0xab1a('0x8c')]=_0x1bb6dd[_0xab1a('0x7e')];}else if(this[_0xab1a('0x33')](_0x1bb6dd[_0xab1a('0x7b')]['xmcs-queue'])){logger[_0xab1a('0x2c')](_0xab1a('0x8d'),_0x1bb6dd[_0xab1a('0x38')],_0x1bb6dd['value']);this[_0xab1a('0x17')][_0x1bb6dd[_0xab1a('0x38')]]['queue']=_0x1bb6dd[_0xab1a('0x7e')];}else if(this[_0xab1a('0x33')](_0x1bb6dd[_0xab1a('0x7b')][_0xab1a('0x8e')])){logger[_0xab1a('0x2c')](_0xab1a('0x8f'),_0x1bb6dd[_0xab1a('0x38')],_0x1bb6dd[_0xab1a('0x7e')]);this[_0xab1a('0x17')][_0x1bb6dd[_0xab1a('0x38')]][_0xab1a('0x90')]=_0x1bb6dd[_0xab1a('0x7e')];}}}else if(this[_0xab1a('0x33')](_0x1bb6dd[_0xab1a('0x7b')][_0xab1a('0x7c')])){if(_0x1bb6dd[_0xab1a('0x7e')]){var _0x4aaf73=path[_0xab1a('0x91')](_0x1bb6dd['value'])[_0xab1a('0x45')];logger[_0xab1a('0x2c')]('[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s',_0x4aaf73,_0x1bb6dd[_0xab1a('0x7e')]);this['syncMixMonitorFilename'](_0x4aaf73,_0x1bb6dd[_0xab1a('0x7e')]);}}else if(this[_0xab1a('0x17')][_0x1bb6dd[_0xab1a('0x39')]]){if(this[_0xab1a('0x33')](_0x1bb6dd['variable'])){if(this['isNotNull'](_0x1bb6dd[_0xab1a('0x7b')][_0xab1a('0x8e')])){logger['info'](_0xab1a('0x8f'),_0x1bb6dd[_0xab1a('0x39')],_0x1bb6dd[_0xab1a('0x7e')]);this[_0xab1a('0x17')][_0x1bb6dd[_0xab1a('0x39')]][_0xab1a('0x92')]=_0x1bb6dd[_0xab1a('0x7e')];}}}}}catch(_0x17baa2){logger[_0xab1a('0x2f')]('[%s][voiceCallReport][varset]',_0x1bb6dd['uniqueid'],util['inspect'](_0x17baa2,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0xab1a('0x23')]=function(_0x5e4391){try{if(this[_0xab1a('0x33')](_0x5e4391)){logger[_0xab1a('0x37')](_0xab1a('0x93'),_0x5e4391[_0xab1a('0x38')],util[_0xab1a('0x31')](_0x5e4391,{'showHidden':![],'depth':null}));if(this[_0xab1a('0x17')][_0x5e4391[_0xab1a('0x38')]]){logger[_0xab1a('0x2c')](_0xab1a('0x94'),_0x5e4391[_0xab1a('0x38')],_0x5e4391[_0xab1a('0x95')]);var _0x4a3a7e=moment();this[_0xab1a('0x17')][_0x5e4391[_0xab1a('0x38')]][_0xab1a('0x96')]=_0x4a3a7e[_0xab1a('0x44')]('YYYY-MM-DD\x20HH:mm:ss');this['channels'][_0x5e4391[_0xab1a('0x38')]][_0xab1a('0x5c')]=_0x4a3a7e[_0xab1a('0x97')](this['channels'][_0x5e4391[_0xab1a('0x38')]][_0xab1a('0x4c')],_0xab1a('0x5d'));if(this['channels'][_0x5e4391[_0xab1a('0x38')]][_0xab1a('0x65')]){this[_0xab1a('0x17')][_0x5e4391[_0xab1a('0x38')]]['billableseconds']=_0x4a3a7e[_0xab1a('0x97')](this[_0xab1a('0x17')][_0x5e4391[_0xab1a('0x38')]][_0xab1a('0x66')],_0xab1a('0x5d'));this[_0xab1a('0x17')][_0x5e4391[_0xab1a('0x38')]][_0xab1a('0x98')]=this[_0xab1a('0x17')][_0x5e4391['uniqueid']][_0xab1a('0x5c')]-this[_0xab1a('0x17')][_0x5e4391['uniqueid']][_0xab1a('0x99')];}if(_0x5e4391[_0xab1a('0x3d')]===_0xab1a('0x52')){if(this['agents'][_0x5e4391[_0xab1a('0x3e')]['split']('-')[0x0]]){this[_0xab1a('0x18')][_0x5e4391[_0xab1a('0x3e')][_0xab1a('0x3f')]('-')[0x0]]=_[_0xab1a('0x9a')](this['agents'][_0x5e4391[_0xab1a('0x3e')]['split']('-')[0x0]],['destconnectedlinenum']);logger['debug'](_0xab1a('0x9b'),_0x5e4391['uniqueid'],util[_0xab1a('0x31')]({'id':this[_0xab1a('0x18')][_0x5e4391[_0xab1a('0x3e')]['split']('-')[0x0]]['id'],'destaccountcode':this[_0xab1a('0x18')][_0x5e4391[_0xab1a('0x3e')]['split']('-')[0x0]][_0xab1a('0x47')]},{'showHidden':![],'depth':null}));this[_0xab1a('0x34')](util[_0xab1a('0x44')](_0xab1a('0x6c'),this[_0xab1a('0x18')][_0x5e4391['channel'][_0xab1a('0x3f')]('-')[0x0]][_0xab1a('0x45')]),'user:agentcomplete',{'id':this[_0xab1a('0x18')][_0x5e4391[_0xab1a('0x3e')]['split']('-')[0x0]]['id'],'destaccountcode':this[_0xab1a('0x18')][_0x5e4391[_0xab1a('0x3e')][_0xab1a('0x3f')]('-')[0x0]][_0xab1a('0x47')]});for(var _0x2c10c5=0x0;_0x2c10c5<Object[_0xab1a('0x51')](this[_0xab1a('0x18')])[_0xab1a('0x9c')];_0x2c10c5++){var _0x300c4a=Object[_0xab1a('0x51')](this['agents'])[_0x2c10c5];var _0xc83527=this[_0xab1a('0x18')][_0x300c4a];if(_0xc83527['accountcode']===Number(_0x5e4391[_0xab1a('0x43')])){this[_0xab1a('0x34')](util[_0xab1a('0x44')](_0xab1a('0x6c'),_0xc83527['name']),_0xab1a('0x9d'),{'id':_0xc83527['id'],'destaccountcode':_0xc83527[_0xab1a('0x47')],'transfer':this[_0xab1a('0x17')][_0x5e4391[_0xab1a('0x38')]][_0xab1a('0x9e')]});break;}}}}var _0x21ad36=this;Promise[_0xab1a('0x9f')]()[_0xab1a('0xa0')](function(){var _0x57b725=_0x21ad36[_0xab1a('0x17')][_0x5e4391[_0xab1a('0x38')]];if(typeof _0x57b725['transferType']==='undefined')return;if(_['isEmpty'](_0x57b725[_0xab1a('0x75')]))return;return RpcSetting['getSettings']()[_0xab1a('0xa0')](function(_0x2d956a){if(!_0x2d956a[_0xab1a('0xa1')])return;return Promise[_0xab1a('0x9f')]()[_0xab1a('0xa0')](function(){return ami[_0xab1a('0xa2')]({'action':_0xab1a('0xa3'),'channel':_0x57b725['channel']})[_0xab1a('0xa4')](function(){});})[_0xab1a('0xa0')](function(){return ami[_0xab1a('0xa2')]({'action':'StopMixMonitor','channel':_0x57b725[_0xab1a('0xa5')]})[_0xab1a('0xa4')](function(){})[_0xab1a('0xa6')](function(){var _0x3f3c72=_0x21ad36[_0xab1a('0x18')][_0x57b725[_0xab1a('0xa5')]['split']('-')[0x0]];if(!_0x3f3c72)return;io[_0xab1a('0x34')]('webbar:stopmonitors',{'agentId':_0x3f3c72['id'],'uniqueid':_0x57b725[_0xab1a('0x38')]});});});});})['then'](function(){if(_0x5e4391[_0xab1a('0xa7')]==='BlindTransfer'){_0x21ad36[_0xab1a('0x19')][_0x5e4391[_0xab1a('0x38')]]=_0x21ad36['channels'][_0x5e4391[_0xab1a('0x38')]];}else{if(_0x21ad36[_0xab1a('0x17')][_0x5e4391['uniqueid']]['type']===_0xab1a('0xa8')&&_0x21ad36['blindTransfers'][_0x5e4391[_0xab1a('0x38')]]){_0x21ad36[_0xab1a('0x17')][_0x5e4391[_0xab1a('0x38')]][_0xab1a('0x38')]=[_0x21ad36[_0xab1a('0x17')][_0x5e4391[_0xab1a('0x38')]][_0xab1a('0x39')],_0x21ad36['channels'][_0x5e4391['uniqueid']][_0xab1a('0x39')]=_0x21ad36[_0xab1a('0x17')][_0x5e4391[_0xab1a('0x38')]][_0xab1a('0x38')]][0x0];delete _0x21ad36[_0xab1a('0x19')][_0x5e4391[_0xab1a('0x38')]];}}logger['debug'](_0xab1a('0xa9'),_0x5e4391[_0xab1a('0x38')],util[_0xab1a('0x31')](_0x21ad36[_0xab1a('0x17')][_0x5e4391[_0xab1a('0x38')]],{'showHidden':![],'depth':null}));ami[_0xab1a('0x34')]('custom:voiceCallReport',_0x21ad36[_0xab1a('0x17')][_0x5e4391[_0xab1a('0x38')]]);delete _0x21ad36[_0xab1a('0x17')][_0x5e4391[_0xab1a('0x38')]];});}}}catch(_0x25b363){logger['error'](_0xab1a('0xaa'),_0x5e4391[_0xab1a('0x38')],util[_0xab1a('0x31')](_0x25b363,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0xab1a('0x26')]=function(_0x4e011f){try{if(this[_0xab1a('0x33')](_0x4e011f)){logger[_0xab1a('0x2c')]('[%s][voiceCallReport][attendedtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s',_0x4e011f[_0xab1a('0x38')],_0x4e011f['origtransferercalleridnum'],_0x4e011f[_0xab1a('0xab')]);logger[_0xab1a('0x37')](_0xab1a('0xac'),_0x4e011f[_0xab1a('0x38')],util[_0xab1a('0x31')](_0x4e011f,{'showHidden':![],'depth':null}));var _0x45f3cf;if(this[_0xab1a('0x17')][_0x4e011f['transfereeuniqueid']]){this[_0xab1a('0x17')][_0x4e011f[_0xab1a('0xad')]][_0xab1a('0xae')]=_0x4e011f[_0xab1a('0xaf')];this[_0xab1a('0x17')][_0x4e011f[_0xab1a('0xad')]][_0xab1a('0xb0')]=_0x4e011f[_0xab1a('0xab')];if(this[_0xab1a('0x17')][_0x4e011f[_0xab1a('0xb1')]]){_0x45f3cf=this[_0xab1a('0x17')][_0x4e011f[_0xab1a('0xb1')]];this[_0xab1a('0x17')][_0x4e011f[_0xab1a('0xb1')]]=this[_0xab1a('0x17')][_0x4e011f[_0xab1a('0xad')]];this['channels'][_0x4e011f[_0xab1a('0xad')]]=_0x45f3cf;}this[_0xab1a('0x17')][_0x4e011f[_0xab1a('0xb1')]][_0xab1a('0x9e')]=_0xab1a('0xb2');}else if(this[_0xab1a('0x17')][_0x4e011f[_0xab1a('0xb3')]]){this['channels'][_0x4e011f['transfertargetuniqueid']]['transfercalleridnum']=_0x4e011f[_0xab1a('0xaf')];this[_0xab1a('0x17')][_0x4e011f[_0xab1a('0xb3')]][_0xab1a('0xb0')]=_0x4e011f[_0xab1a('0xab')];if(this['channels'][_0x4e011f[_0xab1a('0xb4')]]){_0x45f3cf=this[_0xab1a('0x17')][_0x4e011f[_0xab1a('0xb4')]];this[_0xab1a('0x17')][_0x4e011f['origtransfereruniqueid']]=this[_0xab1a('0x17')][_0x4e011f['transfertargetuniqueid']];this[_0xab1a('0x17')][_0x4e011f[_0xab1a('0xb3')]]=_0x45f3cf;}this[_0xab1a('0x17')][_0x4e011f['transfertargetuniqueid']][_0xab1a('0x9e')]=_0xab1a('0xb2');}if((this[_0xab1a('0x17')][_0x4e011f['origtransfereruniqueid']]||this[_0xab1a('0x17')][_0x4e011f['origtransfererlinkedid']])&&this[_0xab1a('0x17')][_0x4e011f[_0xab1a('0xb1')]]){var _0x590578=_[_0xab1a('0xb5')]([this[_0xab1a('0x17')][_0x4e011f['origtransfereruniqueid']],this[_0xab1a('0x17')][_0x4e011f['origtransfererlinkedid']],this['channels'][_0x4e011f[_0xab1a('0xb1')]]],function(_0x1954b7){return _0x1954b7&&_0x1954b7[_0xab1a('0x84')]===_0xab1a('0xa8')&&_0x1954b7['routeid'];});if(_0x590578){if(this[_0xab1a('0x17')][_0x4e011f['origtransfereruniqueid']])this['channels'][_0x4e011f[_0xab1a('0xb4')]][_0xab1a('0x9e')]=_0xab1a('0xb2');if(this[_0xab1a('0x17')][_0x4e011f['origtransfererlinkedid']])this[_0xab1a('0x17')][_0x4e011f[_0xab1a('0xb6')]][_0xab1a('0x9e')]=_0xab1a('0xb2');this[_0xab1a('0x17')][_0x4e011f[_0xab1a('0xb1')]][_0xab1a('0x9e')]=_0xab1a('0xb2');}}}}catch(_0x4b7d86){logger[_0xab1a('0x2f')](_0xab1a('0xb7'),_0x4e011f[_0xab1a('0x38')],util[_0xab1a('0x31')](_0x4b7d86,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype']['syncBlindTransfer']=function(_0x47678f){try{if(this[_0xab1a('0x33')](_0x47678f)){logger[_0xab1a('0x2c')](_0xab1a('0xb8'),_0x47678f[_0xab1a('0x38')],_0x47678f[_0xab1a('0xb9')],_0x47678f[_0xab1a('0xba')]);logger[_0xab1a('0x37')](_0xab1a('0xbb'),_0x47678f[_0xab1a('0x38')],util[_0xab1a('0x31')](_0x47678f,{'showHidden':![],'depth':null}));if(this[_0xab1a('0x17')][_0x47678f['transfereeuniqueid']]){this[_0xab1a('0x17')][_0x47678f[_0xab1a('0xad')]]['transfercalleridnum']=_0x47678f[_0xab1a('0xb9')];this[_0xab1a('0x17')][_0x47678f['transfereeuniqueid']]['transferconnectedlinenum']=_0x47678f['extension'];this[_0xab1a('0x17')][_0x47678f[_0xab1a('0xad')]][_0xab1a('0x9e')]=_0xab1a('0xbc');this[_0xab1a('0x23')]({'event':_0xab1a('0xbd'),'uniqueid':_0x47678f[_0xab1a('0xad')],'context':_0x47678f[_0xab1a('0x3d')],'channel':_0x47678f[_0xab1a('0xbe')]});}else{this['channels'][_0x47678f[_0xab1a('0xbf')]][_0xab1a('0x9e')]=_0xab1a('0xbc');}}}catch(_0x56d6f5){logger[_0xab1a('0x2f')](_0xab1a('0xc0'),_0x47678f['uniqueid'],util['inspect'](_0x56d6f5,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xab1a('0x32')][_0xab1a('0x29')]=function(_0x4f7252){try{if(this[_0xab1a('0x33')](_0x4f7252)){logger[_0xab1a('0x37')](_0xab1a('0xc1'),_0x4f7252[_0xab1a('0x38')],util[_0xab1a('0x31')](_0x4f7252,{'showHidden':![],'depth':null}));if(this['channels'][_0x4f7252[_0xab1a('0x38')]]){if(!_[_0xab1a('0x76')](this['channels'][_0x4f7252['uniqueid']]['answertime'])){this['channels'][_0x4f7252[_0xab1a('0x38')]]['mohstarttime']=moment()[_0xab1a('0x44')](_0xab1a('0x4d'));logger[_0xab1a('0x2c')](_0xab1a('0xc2'),_0x4f7252[_0xab1a('0x38')],this['channels'][_0x4f7252['uniqueid']][_0xab1a('0xc3')]);}}}}catch(_0x3af4aa){logger[_0xab1a('0x2f')](_0xab1a('0xc4'),_0x4f7252['uniqueid'],util[_0xab1a('0x31')](_0x3af4aa,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xab1a('0x32')][_0xab1a('0x2b')]=function(_0x2d4ccc){try{if(this[_0xab1a('0x33')](_0x2d4ccc)){logger[_0xab1a('0x37')]('[%s][voiceCallReport][musiconholdstop]\x20event:',_0x2d4ccc[_0xab1a('0x38')],util[_0xab1a('0x31')](_0x2d4ccc,{'showHidden':![],'depth':null}));if(this[_0xab1a('0x17')][_0x2d4ccc['uniqueid']]){if(!_[_0xab1a('0x76')](this[_0xab1a('0x17')][_0x2d4ccc['uniqueid']][_0xab1a('0xc3')])){this[_0xab1a('0x17')][_0x2d4ccc[_0xab1a('0x38')]]['mohtime']+=moment()[_0xab1a('0xc5')](0x0)['diff'](this[_0xab1a('0x17')][_0x2d4ccc[_0xab1a('0x38')]]['mohstarttime'],'seconds');logger[_0xab1a('0x2c')](_0xab1a('0xc6'),_0x2d4ccc[_0xab1a('0x38')],this[_0xab1a('0x17')][_0x2d4ccc['uniqueid']]['mohtime']);delete this['channels'][_0x2d4ccc[_0xab1a('0x38')]][_0xab1a('0xc3')];}}}}catch(_0x53d6e8){logger[_0xab1a('0x2f')]('[%s][voiceCallReport][musiconholdstop]',_0x2d4ccc['uniqueid'],util[_0xab1a('0x31')](_0x53d6e8,{'showHidden':![],'depth':null}));}};module[_0xab1a('0xc7')]=VoiceCallReport;
\ No newline at end of file
index 40edff9..b70f557 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e5a=['socket.io-emitter','outboundChannels','outbound','applications','variables','dialbegin','syncDialBegin','bind','syncVarSet','newexten','syncNewExten','hangup','isNotNull','isUndefined','emit','prototype','debug','[%s][voiceDialReport][dialbegin]\x20event:','uniqueid','inspect','channels','merge','YYYY-MM-DD\x20HH:mm:ss','called','channel','lastIndexOf','substring','event','privilege','info','interface','voice:outbound','[%s][voiceDialReport][dialbegin]\x20sending\x20dialbegin\x20event:','custom:dialbegin','[%s][voiceDialReport][dialbegin]','syncDialEnd','[%s][voiceDialReport][dialend]\x20event:','dialstatus','ANSWER','connectedlinenum','connectedlinename','answertime','[%s][voiceDialReport][dialend]\x20agent:%s\x20lastevent:connect','[%s][voiceDialReport][dialend]\x20sending\x20dialconnect\x20event:','custom:dialconnect','error','[%s][voiceDialReport][dialend]','[%s][voiceDialReport][varset]\x20event:','addVariable','keys','variable','outboundrouteid','value','[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s','[%s][voiceDialReport][varset]','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberlastcall','membername','memberrealtime','isNil','includes','[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete','cause-txt','endtime','format','duration','starttime','lastevent','complete','total','answered','diff','seconds','sumHoldTime','holdtime','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:','voice_outbound_channel:remove','linkedid','[%s][voiceDialReport][hangup]','[%s][voiceDialReport][newexten]\x20event:','toLowerCase','applicationdata','startsWith','cdr(','application','split','match','exports','moment','util','ioredis','../../../config/environment','ami','defaults','redis','localhost'];(function(_0x6ad2c7,_0xb22a9a){var _0x435d5f=function(_0x38ec10){while(--_0x38ec10){_0x6ad2c7['push'](_0x6ad2c7['shift']());}};_0x435d5f(++_0xb22a9a);}(_0x6e5a,0x1c8));var _0xa6e5=function(_0x4c86cc,_0x199d0b){_0x4c86cc=_0x4c86cc-0x0;var _0x2b289d=_0x6e5a[_0x4c86cc];return _0x2b289d;};'use strict';var _=require('lodash');var moment=require(_0xa6e5('0x0'));var util=require(_0xa6e5('0x1'));var Redis=require(_0xa6e5('0x2'));var config=require(_0xa6e5('0x3'));var logger=require('../../../config/logger')(_0xa6e5('0x4'));var ami=require('../ami');config['redis']=_[_0xa6e5('0x5')](config[_0xa6e5('0x6')],{'host':_0xa6e5('0x7'),'port':0x18eb});var io=require(_0xa6e5('0x8'))(new Redis(config['redis']));function VoiceDialReport(_0x528add){this['channels']=_0x528add[_0xa6e5('0x9')];this[_0xa6e5('0xa')]=_0x528add['outbound'];this[_0xa6e5('0xb')]={};this[_0xa6e5('0xc')]={};ami['on'](_0xa6e5('0xd'),this[_0xa6e5('0xe')][_0xa6e5('0xf')](this));ami['on']('dialend',this['syncDialEnd'][_0xa6e5('0xf')](this));ami['on']('varset',this[_0xa6e5('0x10')][_0xa6e5('0xf')](this));ami['on'](_0xa6e5('0x11'),this[_0xa6e5('0x12')][_0xa6e5('0xf')](this));ami['on'](_0xa6e5('0x13'),this['syncHangup'][_0xa6e5('0xf')](this));}VoiceDialReport['prototype'][_0xa6e5('0x14')]=function(_0x35eaa1){return _0x35eaa1!==null&&!_[_0xa6e5('0x15')](_0x35eaa1);};VoiceDialReport['prototype']['emit']=function(_0x2b0bee,_0x4ae0ef,_0x553879){io['to'](_0x2b0bee)[_0xa6e5('0x16')](_0x4ae0ef,_0x553879);};VoiceDialReport[_0xa6e5('0x17')][_0xa6e5('0xe')]=function(_0x258729){try{if(this['isNotNull'](_0x258729)){logger[_0xa6e5('0x18')](_0xa6e5('0x19'),_0x258729[_0xa6e5('0x1a')],util[_0xa6e5('0x1b')](_0x258729,{'showHidden':![],'depth':null}));if(this[_0xa6e5('0x1c')][_0x258729['uniqueid']]){_[_0xa6e5('0x1d')](this[_0xa6e5('0x1c')][_0x258729[_0xa6e5('0x1a')]],{'starttime':moment()['format'](_0xa6e5('0x1e')),'lastevent':_0xa6e5('0x1f'),'interface':_0x258729[_0xa6e5('0x20')]['substring'](0x0,_0x258729[_0xa6e5('0x20')][_0xa6e5('0x21')]('-')),'membername':_0x258729[_0xa6e5('0x20')][_0xa6e5('0x22')](_0x258729[_0xa6e5('0x20')][_0xa6e5('0x21')]('/')+0x1,_0x258729[_0xa6e5('0x20')][_0xa6e5('0x21')]('-'))},_['omit'](_0x258729,[_0xa6e5('0x23'),_0xa6e5('0x24')]));logger[_0xa6e5('0x25')]('[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called',_0x258729[_0xa6e5('0x1a')],this[_0xa6e5('0x1c')][_0x258729[_0xa6e5('0x1a')]]['membername'],this[_0xa6e5('0x1c')][_0x258729[_0xa6e5('0x1a')]][_0xa6e5('0x26')]);logger[_0xa6e5('0x18')]('[%s][voiceDialReport][dialbegin]\x20sending\x20voice_outbound_channel:save\x20event:',_0x258729[_0xa6e5('0x1a')],util[_0xa6e5('0x1b')](this['channels'][_0x258729['uniqueid']],{'showHidden':![],'depth':null}));if(this[_0xa6e5('0xb')][_0x258729[_0xa6e5('0x1a')]])_[_0xa6e5('0x1d')](this[_0xa6e5('0x1c')][_0x258729[_0xa6e5('0x1a')]],this[_0xa6e5('0xb')][_0x258729[_0xa6e5('0x1a')]]);this['emit'](_0xa6e5('0x27'),'voice_outbound_channel:save',this[_0xa6e5('0x1c')][_0x258729[_0xa6e5('0x1a')]]);logger[_0xa6e5('0x18')](_0xa6e5('0x28'),_0x258729['uniqueid'],util['inspect'](this[_0xa6e5('0x1c')][_0x258729[_0xa6e5('0x1a')]],{'showHidden':![],'depth':null}));ami[_0xa6e5('0x16')](_0xa6e5('0x29'),this[_0xa6e5('0x1c')][_0x258729[_0xa6e5('0x1a')]]);}}}catch(_0x44f15c){logger['error'](_0xa6e5('0x2a'),_0x258729[_0xa6e5('0x1a')],util[_0xa6e5('0x1b')](_0x44f15c,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xa6e5('0x17')][_0xa6e5('0x2b')]=function(_0x71a25f){try{if(this[_0xa6e5('0x14')](_0x71a25f)){logger[_0xa6e5('0x18')](_0xa6e5('0x2c'),_0x71a25f[_0xa6e5('0x1a')],util[_0xa6e5('0x1b')](_0x71a25f,{'showHidden':![],'depth':null}));if(this[_0xa6e5('0x1c')][_0x71a25f[_0xa6e5('0x1a')]]){this['channels'][_0x71a25f[_0xa6e5('0x1a')]][_0xa6e5('0x2d')]=_0x71a25f[_0xa6e5('0x2d')];if(_0x71a25f[_0xa6e5('0x2d')]===_0xa6e5('0x2e')){this[_0xa6e5('0x1c')][_0x71a25f['uniqueid']][_0xa6e5('0x2f')]=_0x71a25f['connectedlinenum'];this[_0xa6e5('0x1c')][_0x71a25f[_0xa6e5('0x1a')]][_0xa6e5('0x30')]=_0x71a25f['connectedlinename'];this[_0xa6e5('0x1c')][_0x71a25f[_0xa6e5('0x1a')]][_0xa6e5('0x31')]=moment()['format'](_0xa6e5('0x1e'));this[_0xa6e5('0x1c')][_0x71a25f[_0xa6e5('0x1a')]]['lastevent']='connect';logger[_0xa6e5('0x25')](_0xa6e5('0x32'),_0x71a25f['uniqueid'],_0x71a25f[_0xa6e5('0x20')][_0xa6e5('0x22')](_0x71a25f['channel'][_0xa6e5('0x21')]('/')+0x1,_0x71a25f['channel'][_0xa6e5('0x21')]('-')));logger[_0xa6e5('0x18')](_0xa6e5('0x33'),_0x71a25f[_0xa6e5('0x1a')],util[_0xa6e5('0x1b')](this['channels'][_0x71a25f[_0xa6e5('0x1a')]],{'showHidden':![],'depth':null}));ami[_0xa6e5('0x16')](_0xa6e5('0x34'),this[_0xa6e5('0x1c')][_0x71a25f['uniqueid']]);}logger[_0xa6e5('0x18')]('[%s][voiceDialReport][dialend]\x20sending\x20voice_outbound_channel:save\x20event:',_0x71a25f[_0xa6e5('0x1a')],util[_0xa6e5('0x1b')](this[_0xa6e5('0x1c')][_0x71a25f[_0xa6e5('0x1a')]],{'showHidden':![],'depth':null}));this['emit'](_0xa6e5('0x27'),'voice_outbound_channel:save',this['channels'][_0x71a25f[_0xa6e5('0x1a')]]);}}}catch(_0x19e6d9){logger[_0xa6e5('0x35')](_0xa6e5('0x36'),_0x71a25f['uniqueid'],util[_0xa6e5('0x1b')](_0x19e6d9,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xa6e5('0x17')][_0xa6e5('0x10')]=function(_0x13a209){try{if(this[_0xa6e5('0x14')](_0x13a209)){logger[_0xa6e5('0x18')](_0xa6e5('0x37'),_0x13a209[_0xa6e5('0x1a')],util[_0xa6e5('0x1b')](_0x13a209,{'showHidden':![],'depth':null}));this[_0xa6e5('0x38')](_0x13a209[_0xa6e5('0x1a')],_[_0xa6e5('0x39')](_0x13a209['variable'])[0x0],_0x13a209['value']);if(this[_0xa6e5('0x14')](_0x13a209[_0xa6e5('0x3a')])&&this['isNotNull'](_0x13a209['variable'][_0xa6e5('0x3b')])){if(_[_0xa6e5('0x15')](this[_0xa6e5('0x1c')][_0x13a209['uniqueid']])){this[_0xa6e5('0x1c')][_0x13a209[_0xa6e5('0x1a')]]={'routeId':_0x13a209[_0xa6e5('0x3c')],'variables':this['variables'][_0x13a209[_0xa6e5('0x1a')]]};logger['info'](_0xa6e5('0x3d'),_0x13a209[_0xa6e5('0x1a')],_0x13a209[_0xa6e5('0x3a')][_0xa6e5('0x3b')],_['keys'](_0x13a209['variable'])[0x0],_0x13a209[_0xa6e5('0x3c')]);logger[_0xa6e5('0x18')]('[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:',_0x13a209['uniqueid'],util[_0xa6e5('0x1b')](this[_0xa6e5('0x1c')][_0x13a209['uniqueid']],{'showHidden':![],'depth':null}));this[_0xa6e5('0x16')](_0xa6e5('0x27'),'voice_outbound_channel:save',this[_0xa6e5('0x1c')][_0x13a209['uniqueid']]);}}}}catch(_0x99b8e0){logger[_0xa6e5('0x35')](_0xa6e5('0x3e'),_0x13a209[_0xa6e5('0x1a')],util[_0xa6e5('0x1b')](_0x99b8e0,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xa6e5('0x17')]['addVariable']=function(_0x42860a,_0x1e3d17,_0x337100){var _0x518b02=[_0xa6e5('0x3f'),_0xa6e5('0x40'),_0xa6e5('0x41'),_0xa6e5('0x42'),_0xa6e5('0x43'),'rtpaudioqoslossbridged',_0xa6e5('0x44'),_0xa6e5('0x45'),_0xa6e5('0x46'),_0xa6e5('0x47'),'bridgepeer',_0xa6e5('0x48'),_0xa6e5('0x49'),_0xa6e5('0x4a'),_0xa6e5('0x4b'),_0xa6e5('0x4c'),_0xa6e5('0x4d'),'memberpenalty',_0xa6e5('0x4e')];if(!_[_0xa6e5('0x4f')](_0x1e3d17)&&!_[_0xa6e5('0x50')](_0x518b02,_0x1e3d17)){if(_[_0xa6e5('0x15')](this[_0xa6e5('0xc')][_0x42860a])){this['variables'][_0x42860a]={};}this['variables'][_0x42860a][_0x1e3d17]=_0x337100;}};VoiceDialReport[_0xa6e5('0x17')]['syncHangup']=function(_0x52d76a){try{if(this[_0xa6e5('0x14')](_0x52d76a)){logger[_0xa6e5('0x18')]('[%s][voiceDialReport][hangup]\x20event:',_0x52d76a[_0xa6e5('0x1a')],util[_0xa6e5('0x1b')](_0x52d76a,{'showHidden':![],'depth':null}));if(this[_0xa6e5('0x1c')][_0x52d76a['uniqueid']]){logger['info'](_0xa6e5('0x51'),_0x52d76a[_0xa6e5('0x1a')],_0x52d76a[_0xa6e5('0x52')]);this[_0xa6e5('0x1c')][_0x52d76a[_0xa6e5('0x1a')]][_0xa6e5('0x53')]=moment()[_0xa6e5('0x54')](_0xa6e5('0x1e'));this['channels'][_0x52d76a['uniqueid']][_0xa6e5('0x55')]=moment(this[_0xa6e5('0x1c')][_0x52d76a['uniqueid']][_0xa6e5('0x53')])['diff'](this[_0xa6e5('0x1c')][_0x52d76a['uniqueid']][_0xa6e5('0x56')],'seconds');this[_0xa6e5('0x1c')][_0x52d76a['uniqueid']][_0xa6e5('0x57')]=_0xa6e5('0x58');this[_0xa6e5('0xa')][_0xa6e5('0x59')]+=0x1;if(this['channels'][_0x52d76a[_0xa6e5('0x1a')]][_0xa6e5('0x31')]){this[_0xa6e5('0xa')][_0xa6e5('0x5a')]+=0x1;this['channels'][_0x52d76a[_0xa6e5('0x1a')]]['holdtime']=moment(this[_0xa6e5('0x1c')][_0x52d76a[_0xa6e5('0x1a')]][_0xa6e5('0x31')])[_0xa6e5('0x5b')](this[_0xa6e5('0x1c')][_0x52d76a['uniqueid']]['starttime'],_0xa6e5('0x5c'));this[_0xa6e5('0x1c')][_0x52d76a[_0xa6e5('0x1a')]]['billableseconds']=moment(this[_0xa6e5('0x1c')][_0x52d76a[_0xa6e5('0x1a')]][_0xa6e5('0x53')])[_0xa6e5('0x5b')](this[_0xa6e5('0x1c')][_0x52d76a[_0xa6e5('0x1a')]][_0xa6e5('0x31')],'seconds');this[_0xa6e5('0xa')][_0xa6e5('0x5d')]+=this[_0xa6e5('0x1c')][_0x52d76a[_0xa6e5('0x1a')]][_0xa6e5('0x5e')]||0x0;this['outbound']['sumBillable']+=this[_0xa6e5('0x1c')][_0x52d76a[_0xa6e5('0x1a')]][_0xa6e5('0x5f')];}this[_0xa6e5('0xa')]['sumDuration']+=this[_0xa6e5('0x1c')][_0x52d76a['uniqueid']][_0xa6e5('0x55')];logger[_0xa6e5('0x18')](_0xa6e5('0x60'),_0x52d76a['uniqueid'],util[_0xa6e5('0x1b')](this[_0xa6e5('0x1c')][_0x52d76a[_0xa6e5('0x1a')]],{'showHidden':![],'depth':null}));ami[_0xa6e5('0x16')](_0xa6e5('0x61'),this[_0xa6e5('0x1c')][_0x52d76a[_0xa6e5('0x1a')]]);logger[_0xa6e5('0x18')](_0xa6e5('0x62'),_0x52d76a[_0xa6e5('0x1a')],util[_0xa6e5('0x1b')](this[_0xa6e5('0x1c')][_0x52d76a[_0xa6e5('0x1a')]],{'showHidden':![],'depth':null}));ami[_0xa6e5('0x16')](_0xa6e5('0x63'),this['channels'][_0x52d76a[_0xa6e5('0x1a')]]);logger['debug']('[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound:save\x20event:',_0x52d76a[_0xa6e5('0x1a')],util[_0xa6e5('0x1b')](this[_0xa6e5('0x1c')][_0x52d76a[_0xa6e5('0x1a')]],{'showHidden':![],'depth':null}));this[_0xa6e5('0x16')](_0xa6e5('0x27'),_0xa6e5('0x64'),this[_0xa6e5('0xa')]);logger[_0xa6e5('0x25')](_0xa6e5('0x65'),JSON[_0xa6e5('0x66')](this[_0xa6e5('0x1c')][_0x52d76a[_0xa6e5('0x1a')]]));logger[_0xa6e5('0x18')](_0xa6e5('0x67'),_0x52d76a[_0xa6e5('0x1a')],util['inspect'](this[_0xa6e5('0x1c')][_0x52d76a[_0xa6e5('0x1a')]],{'showHidden':![],'depth':null}));this['emit'](_0xa6e5('0x27'),_0xa6e5('0x68'),this['channels'][_0x52d76a[_0xa6e5('0x1a')]]);delete this['channels'][_0x52d76a[_0xa6e5('0x1a')]];}else if(this[_0xa6e5('0x1c')][_0x52d76a[_0xa6e5('0x69')]]){this['channels'][_0x52d76a['linkedid']][_0xa6e5('0x1a')]=this[_0xa6e5('0x1c')][_0x52d76a[_0xa6e5('0x69')]]['destuniqueid'];}if(this[_0xa6e5('0xc')][_0x52d76a[_0xa6e5('0x1a')]]){delete this[_0xa6e5('0xc')][_0x52d76a[_0xa6e5('0x1a')]];}}}catch(_0x577c61){logger[_0xa6e5('0x35')](_0xa6e5('0x6a'),_0x52d76a[_0xa6e5('0x1a')],util[_0xa6e5('0x1b')](_0x577c61,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xa6e5('0x17')][_0xa6e5('0x12')]=function(_0x564d4a){try{if(this[_0xa6e5('0x14')](_0x564d4a)){logger['debug'](_0xa6e5('0x6b'),_0x564d4a[_0xa6e5('0x1a')],util['inspect'](_0x564d4a,{'showHidden':![],'depth':null}));if(_0x564d4a['application'][_0xa6e5('0x6c')]()==='set'){_0x564d4a[_0xa6e5('0x6d')]=(_0x564d4a['appdata']||_0x564d4a[_0xa6e5('0x6d')])[_0xa6e5('0x6c')]();if(_[_0xa6e5('0x6e')](_0x564d4a[_0xa6e5('0x6d')],_0xa6e5('0x6f'))){if(_[_0xa6e5('0x15')](this[_0xa6e5('0xb')][_0x564d4a[_0xa6e5('0x1a')]]))this[_0xa6e5('0xb')][_0x564d4a[_0xa6e5('0x1a')]]={};logger[_0xa6e5('0x25')]('[%s][voiceDialReport][newexten]\x20application:%s\x20appdata:%s',_0x564d4a[_0xa6e5('0x1a')],_0x564d4a[_0xa6e5('0x70')],_0x564d4a['applicationdata']);var _0x30ffeb=_0x564d4a[_0xa6e5('0x6d')][_0xa6e5('0x71')]('=');var _0x4556b4=_0x30ffeb[0x0][_0xa6e5('0x72')](/cdr\((.*)\)/);if(_0x4556b4)this[_0xa6e5('0xb')][_0x564d4a[_0xa6e5('0x1a')]][_0x4556b4[0x1]]=_0x30ffeb[0x1];}}}}catch(_0x45ba78){logger[_0xa6e5('0x35')]('[%s][voiceDialReport][newexten]',_0x564d4a[_0xa6e5('0x1a')],util[_0xa6e5('0x1b')](_0x45ba78,{'showHidden':![],'depth':null}));}};module[_0xa6e5('0x73')]=VoiceDialReport;
\ No newline at end of file
+var _0xa01a=['[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepeer','membercalls','memberdynamic','memberpenalty','includes','syncHangup','[%s][voiceDialReport][hangup]\x20event:','endtime','duration','diff','starttime','total','answered','seconds','billableseconds','sumHoldTime','holdtime','sumBillable','sumDuration','[%s][voiceDialReport][hangup]\x20sending\x20voiceDialReport\x20event:','custom:voiceDialReport','[%s][voiceDialReport][hangup]\x20sending\x20dialend\x20event:','custom:dialend','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound:save\x20event:','voice_outbound:save','[DEBUG]\x20Emit\x20voice_outbound_channel:remove\x20event','voice_outbound_channel:remove','linkedid','destuniqueid','[%s][voiceDialReport][hangup]','[%s][voiceDialReport][newexten]\x20event:','application','toLowerCase','set','appdata','applicationdata','[%s][voiceDialReport][newexten]\x20application:%s\x20appdata:%s','split','exports','lodash','moment','util','ioredis','../../../config/environment','../../../config/logger','ami','redis','localhost','channels','outboundChannels','outbound','applications','variables','dialbegin','syncDialBegin','dialend','syncDialEnd','varset','bind','newexten','syncNewExten','prototype','isNotNull','isUndefined','emit','debug','[%s][voiceDialReport][dialbegin]\x20event:','inspect','merge','uniqueid','format','YYYY-MM-DD\x20HH:mm:ss','called','channel','substring','lastIndexOf','omit','privilege','info','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','ANSWER','connectedlinenum','answertime','lastevent','connect','[%s][voiceDialReport][dialend]\x20agent:%s\x20lastevent:connect','[%s][voiceDialReport][dialend]\x20sending\x20dialconnect\x20event:','custom:dialconnect','[%s][voiceDialReport][dialend]','syncVarSet','[%s][voiceDialReport][varset]\x20event:','addVariable','keys','variable','value','voice','[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s','outboundrouteid'];(function(_0x19e915,_0x3ac017){var _0x23c76c=function(_0x50ab75){while(--_0x50ab75){_0x19e915['push'](_0x19e915['shift']());}};_0x23c76c(++_0x3ac017);}(_0xa01a,0x190));var _0xaa01=function(_0x5bd426,_0x4878e5){_0x5bd426=_0x5bd426-0x0;var _0x23a7eb=_0xa01a[_0x5bd426];return _0x23a7eb;};'use strict';var _=require(_0xaa01('0x0'));var moment=require(_0xaa01('0x1'));var util=require(_0xaa01('0x2'));var Redis=require(_0xaa01('0x3'));var config=require(_0xaa01('0x4'));var logger=require(_0xaa01('0x5'))(_0xaa01('0x6'));var ami=require('../ami');config[_0xaa01('0x7')]=_['defaults'](config[_0xaa01('0x7')],{'host':_0xaa01('0x8'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xaa01('0x7')]));function VoiceDialReport(_0x3b2465){this[_0xaa01('0x9')]=_0x3b2465[_0xaa01('0xa')];this['outbound']=_0x3b2465[_0xaa01('0xb')];this[_0xaa01('0xc')]={};this[_0xaa01('0xd')]={};ami['on'](_0xaa01('0xe'),this[_0xaa01('0xf')]['bind'](this));ami['on'](_0xaa01('0x10'),this[_0xaa01('0x11')]['bind'](this));ami['on'](_0xaa01('0x12'),this['syncVarSet'][_0xaa01('0x13')](this));ami['on'](_0xaa01('0x14'),this[_0xaa01('0x15')][_0xaa01('0x13')](this));ami['on']('hangup',this['syncHangup'][_0xaa01('0x13')](this));}VoiceDialReport[_0xaa01('0x16')][_0xaa01('0x17')]=function(_0x3cf4ee){return _0x3cf4ee!==null&&!_[_0xaa01('0x18')](_0x3cf4ee);};VoiceDialReport[_0xaa01('0x16')][_0xaa01('0x19')]=function(_0x4e9fdb,_0xa84b1d,_0x29e8af){io['to'](_0x4e9fdb)[_0xaa01('0x19')](_0xa84b1d,_0x29e8af);};VoiceDialReport[_0xaa01('0x16')][_0xaa01('0xf')]=function(_0x3f1229){try{if(this[_0xaa01('0x17')](_0x3f1229)){logger[_0xaa01('0x1a')](_0xaa01('0x1b'),_0x3f1229['uniqueid'],util[_0xaa01('0x1c')](_0x3f1229,{'showHidden':![],'depth':null}));if(this[_0xaa01('0x9')][_0x3f1229['uniqueid']]){_[_0xaa01('0x1d')](this[_0xaa01('0x9')][_0x3f1229[_0xaa01('0x1e')]],{'starttime':moment()[_0xaa01('0x1f')](_0xaa01('0x20')),'lastevent':_0xaa01('0x21'),'interface':_0x3f1229[_0xaa01('0x22')][_0xaa01('0x23')](0x0,_0x3f1229[_0xaa01('0x22')][_0xaa01('0x24')]('-')),'membername':_0x3f1229[_0xaa01('0x22')][_0xaa01('0x23')](_0x3f1229[_0xaa01('0x22')][_0xaa01('0x24')]('/')+0x1,_0x3f1229[_0xaa01('0x22')]['lastIndexOf']('-'))},_[_0xaa01('0x25')](_0x3f1229,['event',_0xaa01('0x26')]));logger[_0xaa01('0x27')]('[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called',_0x3f1229[_0xaa01('0x1e')],this[_0xaa01('0x9')][_0x3f1229['uniqueid']][_0xaa01('0x28')],this[_0xaa01('0x9')][_0x3f1229[_0xaa01('0x1e')]][_0xaa01('0x29')]);logger[_0xaa01('0x1a')](_0xaa01('0x2a'),_0x3f1229['uniqueid'],util[_0xaa01('0x1c')](this[_0xaa01('0x9')][_0x3f1229[_0xaa01('0x1e')]],{'showHidden':![],'depth':null}));if(this[_0xaa01('0xc')][_0x3f1229['uniqueid']])_[_0xaa01('0x1d')](this[_0xaa01('0x9')][_0x3f1229[_0xaa01('0x1e')]],this[_0xaa01('0xc')][_0x3f1229[_0xaa01('0x1e')]]);this['emit'](_0xaa01('0x2b'),_0xaa01('0x2c'),this[_0xaa01('0x9')][_0x3f1229[_0xaa01('0x1e')]]);logger['debug'](_0xaa01('0x2d'),_0x3f1229[_0xaa01('0x1e')],util['inspect'](this[_0xaa01('0x9')][_0x3f1229[_0xaa01('0x1e')]],{'showHidden':![],'depth':null}));ami[_0xaa01('0x19')](_0xaa01('0x2e'),this[_0xaa01('0x9')][_0x3f1229['uniqueid']]);}}}catch(_0x3012c8){logger[_0xaa01('0x2f')](_0xaa01('0x30'),_0x3f1229['uniqueid'],util['inspect'](_0x3012c8,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xaa01('0x16')]['syncDialEnd']=function(_0x4dbe70){try{if(this['isNotNull'](_0x4dbe70)){logger[_0xaa01('0x1a')]('[%s][voiceDialReport][dialend]\x20event:',_0x4dbe70[_0xaa01('0x1e')],util[_0xaa01('0x1c')](_0x4dbe70,{'showHidden':![],'depth':null}));if(this['channels'][_0x4dbe70[_0xaa01('0x1e')]]){this[_0xaa01('0x9')][_0x4dbe70[_0xaa01('0x1e')]][_0xaa01('0x31')]=_0x4dbe70[_0xaa01('0x31')];if(_0x4dbe70[_0xaa01('0x31')]===_0xaa01('0x32')){this[_0xaa01('0x9')][_0x4dbe70['uniqueid']][_0xaa01('0x33')]=_0x4dbe70[_0xaa01('0x33')];this[_0xaa01('0x9')][_0x4dbe70[_0xaa01('0x1e')]]['connectedlinename']=_0x4dbe70['connectedlinename'];this[_0xaa01('0x9')][_0x4dbe70[_0xaa01('0x1e')]][_0xaa01('0x34')]=moment()['format'](_0xaa01('0x20'));this[_0xaa01('0x9')][_0x4dbe70[_0xaa01('0x1e')]][_0xaa01('0x35')]=_0xaa01('0x36');logger[_0xaa01('0x27')](_0xaa01('0x37'),_0x4dbe70[_0xaa01('0x1e')],_0x4dbe70['channel'][_0xaa01('0x23')](_0x4dbe70[_0xaa01('0x22')][_0xaa01('0x24')]('/')+0x1,_0x4dbe70['channel'][_0xaa01('0x24')]('-')));logger[_0xaa01('0x1a')](_0xaa01('0x38'),_0x4dbe70['uniqueid'],util[_0xaa01('0x1c')](this[_0xaa01('0x9')][_0x4dbe70['uniqueid']],{'showHidden':![],'depth':null}));ami[_0xaa01('0x19')](_0xaa01('0x39'),this[_0xaa01('0x9')][_0x4dbe70[_0xaa01('0x1e')]]);}logger['debug']('[%s][voiceDialReport][dialend]\x20sending\x20voice_outbound_channel:save\x20event:',_0x4dbe70[_0xaa01('0x1e')],util[_0xaa01('0x1c')](this[_0xaa01('0x9')][_0x4dbe70['uniqueid']],{'showHidden':![],'depth':null}));this['emit'](_0xaa01('0x2b'),'voice_outbound_channel:save',this[_0xaa01('0x9')][_0x4dbe70[_0xaa01('0x1e')]]);}}}catch(_0x33a1ea){logger[_0xaa01('0x2f')](_0xaa01('0x3a'),_0x4dbe70['uniqueid'],util[_0xaa01('0x1c')](_0x33a1ea,{'showHidden':![],'depth':null}));}};VoiceDialReport['prototype'][_0xaa01('0x3b')]=function(_0x14ecce){try{if(this[_0xaa01('0x17')](_0x14ecce)){logger['debug'](_0xaa01('0x3c'),_0x14ecce[_0xaa01('0x1e')],util[_0xaa01('0x1c')](_0x14ecce,{'showHidden':![],'depth':null}));this[_0xaa01('0x3d')](_0x14ecce[_0xaa01('0x1e')],_[_0xaa01('0x3e')](_0x14ecce[_0xaa01('0x3f')])[0x0],_0x14ecce[_0xaa01('0x40')]);if(this['isNotNull'](_0x14ecce[_0xaa01('0x3f')])&&this['isNotNull'](_0x14ecce[_0xaa01('0x3f')]['outboundrouteid'])){if(_[_0xaa01('0x18')](this[_0xaa01('0x9')][_0x14ecce[_0xaa01('0x1e')]])){this[_0xaa01('0x9')][_0x14ecce['uniqueid']]={'routeId':_0x14ecce[_0xaa01('0x40')],'variables':this[_0xaa01('0xd')][_0x14ecce[_0xaa01('0x1e')]],'motionChannel':_0xaa01('0x41')};logger['info'](_0xaa01('0x42'),_0x14ecce[_0xaa01('0x1e')],_0x14ecce[_0xaa01('0x3f')][_0xaa01('0x43')],_['keys'](_0x14ecce[_0xaa01('0x3f')])[0x0],_0x14ecce[_0xaa01('0x40')]);logger[_0xaa01('0x1a')](_0xaa01('0x44'),_0x14ecce[_0xaa01('0x1e')],util[_0xaa01('0x1c')](this[_0xaa01('0x9')][_0x14ecce[_0xaa01('0x1e')]],{'showHidden':![],'depth':null}));this[_0xaa01('0x19')](_0xaa01('0x2b'),_0xaa01('0x2c'),this[_0xaa01('0x9')][_0x14ecce['uniqueid']]);}}}}catch(_0x1b67be){logger[_0xaa01('0x2f')]('[%s][voiceDialReport][varset]',_0x14ecce[_0xaa01('0x1e')],util['inspect'](_0x1b67be,{'showHidden':![],'depth':null}));}};VoiceDialReport['prototype'][_0xaa01('0x3d')]=function(_0x313bd,_0x4b4def,_0x4ee34a){var _0x2725f7=[_0xaa01('0x45'),_0xaa01('0x46'),'rtpaudioqosjitter',_0xaa01('0x47'),_0xaa01('0x48'),_0xaa01('0x49'),_0xaa01('0x4a'),_0xaa01('0x4b'),_0xaa01('0x4c'),_0xaa01('0x4d'),_0xaa01('0x4e'),'bridgepvtcallid',_0xaa01('0x4f'),_0xaa01('0x50'),'memberinterface','memberlastcall',_0xaa01('0x28'),_0xaa01('0x51'),'memberrealtime'];if(!_['isNil'](_0x4b4def)&&!_[_0xaa01('0x52')](_0x2725f7,_0x4b4def)){if(_[_0xaa01('0x18')](this['variables'][_0x313bd])){this['variables'][_0x313bd]={};}this[_0xaa01('0xd')][_0x313bd][_0x4b4def]=_0x4ee34a;}};VoiceDialReport[_0xaa01('0x16')][_0xaa01('0x53')]=function(_0x384cbf){try{if(this[_0xaa01('0x17')](_0x384cbf)){logger['debug'](_0xaa01('0x54'),_0x384cbf['uniqueid'],util[_0xaa01('0x1c')](_0x384cbf,{'showHidden':![],'depth':null}));if(this[_0xaa01('0x9')][_0x384cbf[_0xaa01('0x1e')]]){logger[_0xaa01('0x27')]('[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete',_0x384cbf[_0xaa01('0x1e')],_0x384cbf['cause-txt']);this['channels'][_0x384cbf[_0xaa01('0x1e')]][_0xaa01('0x55')]=moment()['format'](_0xaa01('0x20'));this[_0xaa01('0x9')][_0x384cbf[_0xaa01('0x1e')]][_0xaa01('0x56')]=moment(this['channels'][_0x384cbf[_0xaa01('0x1e')]]['endtime'])[_0xaa01('0x57')](this[_0xaa01('0x9')][_0x384cbf[_0xaa01('0x1e')]][_0xaa01('0x58')],'seconds');this['channels'][_0x384cbf[_0xaa01('0x1e')]]['lastevent']='complete';this[_0xaa01('0xb')][_0xaa01('0x59')]+=0x1;if(this[_0xaa01('0x9')][_0x384cbf[_0xaa01('0x1e')]][_0xaa01('0x34')]){this[_0xaa01('0xb')][_0xaa01('0x5a')]+=0x1;this[_0xaa01('0x9')][_0x384cbf[_0xaa01('0x1e')]]['holdtime']=moment(this[_0xaa01('0x9')][_0x384cbf[_0xaa01('0x1e')]][_0xaa01('0x34')])[_0xaa01('0x57')](this[_0xaa01('0x9')][_0x384cbf['uniqueid']][_0xaa01('0x58')],_0xaa01('0x5b'));this['channels'][_0x384cbf['uniqueid']][_0xaa01('0x5c')]=moment(this['channels'][_0x384cbf[_0xaa01('0x1e')]][_0xaa01('0x55')])['diff'](this[_0xaa01('0x9')][_0x384cbf[_0xaa01('0x1e')]][_0xaa01('0x34')],_0xaa01('0x5b'));this[_0xaa01('0xb')][_0xaa01('0x5d')]+=this[_0xaa01('0x9')][_0x384cbf['uniqueid']][_0xaa01('0x5e')]||0x0;this['outbound'][_0xaa01('0x5f')]+=this[_0xaa01('0x9')][_0x384cbf[_0xaa01('0x1e')]]['billableseconds'];}this['outbound'][_0xaa01('0x60')]+=this[_0xaa01('0x9')][_0x384cbf[_0xaa01('0x1e')]][_0xaa01('0x56')];logger[_0xaa01('0x1a')](_0xaa01('0x61'),_0x384cbf['uniqueid'],util['inspect'](this[_0xaa01('0x9')][_0x384cbf[_0xaa01('0x1e')]],{'showHidden':![],'depth':null}));ami['emit'](_0xaa01('0x62'),this['channels'][_0x384cbf[_0xaa01('0x1e')]]);logger[_0xaa01('0x1a')](_0xaa01('0x63'),_0x384cbf['uniqueid'],util[_0xaa01('0x1c')](this['channels'][_0x384cbf[_0xaa01('0x1e')]],{'showHidden':![],'depth':null}));ami[_0xaa01('0x19')](_0xaa01('0x64'),this[_0xaa01('0x9')][_0x384cbf[_0xaa01('0x1e')]]);logger[_0xaa01('0x1a')](_0xaa01('0x65'),_0x384cbf['uniqueid'],util[_0xaa01('0x1c')](this['channels'][_0x384cbf[_0xaa01('0x1e')]],{'showHidden':![],'depth':null}));this[_0xaa01('0x19')]('voice:outbound',_0xaa01('0x66'),this[_0xaa01('0xb')]);logger[_0xaa01('0x27')](_0xaa01('0x67'),JSON['stringify'](this[_0xaa01('0x9')][_0x384cbf[_0xaa01('0x1e')]]));logger[_0xaa01('0x1a')]('[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound_channel:remove\x20event:',_0x384cbf[_0xaa01('0x1e')],util[_0xaa01('0x1c')](this[_0xaa01('0x9')][_0x384cbf[_0xaa01('0x1e')]],{'showHidden':![],'depth':null}));this[_0xaa01('0x19')]('voice:outbound',_0xaa01('0x68'),this[_0xaa01('0x9')][_0x384cbf[_0xaa01('0x1e')]]);delete this['channels'][_0x384cbf[_0xaa01('0x1e')]];}else if(this['channels'][_0x384cbf['linkedid']]){this[_0xaa01('0x9')][_0x384cbf[_0xaa01('0x69')]][_0xaa01('0x1e')]=this['channels'][_0x384cbf[_0xaa01('0x69')]][_0xaa01('0x6a')];}if(this['variables'][_0x384cbf['uniqueid']]){delete this[_0xaa01('0xd')][_0x384cbf[_0xaa01('0x1e')]];}}}catch(_0x49323f){logger[_0xaa01('0x2f')](_0xaa01('0x6b'),_0x384cbf['uniqueid'],util[_0xaa01('0x1c')](_0x49323f,{'showHidden':![],'depth':null}));}};VoiceDialReport['prototype'][_0xaa01('0x15')]=function(_0x414656){try{if(this[_0xaa01('0x17')](_0x414656)){logger[_0xaa01('0x1a')](_0xaa01('0x6c'),_0x414656['uniqueid'],util[_0xaa01('0x1c')](_0x414656,{'showHidden':![],'depth':null}));if(_0x414656[_0xaa01('0x6d')][_0xaa01('0x6e')]()===_0xaa01('0x6f')){_0x414656['applicationdata']=(_0x414656[_0xaa01('0x70')]||_0x414656[_0xaa01('0x71')])[_0xaa01('0x6e')]();if(_['startsWith'](_0x414656[_0xaa01('0x71')],'cdr(')){if(_['isUndefined'](this[_0xaa01('0xc')][_0x414656[_0xaa01('0x1e')]]))this['applications'][_0x414656['uniqueid']]={};logger[_0xaa01('0x27')](_0xaa01('0x72'),_0x414656['uniqueid'],_0x414656[_0xaa01('0x6d')],_0x414656[_0xaa01('0x71')]);var _0x54b64d=_0x414656[_0xaa01('0x71')][_0xaa01('0x73')]('=');var _0xcb10e2=_0x54b64d[0x0]['match'](/cdr\((.*)\)/);if(_0xcb10e2)this[_0xaa01('0xc')][_0x414656[_0xaa01('0x1e')]][_0xcb10e2[0x1]]=_0x54b64d[0x1];}}}}catch(_0x13da47){logger[_0xaa01('0x2f')]('[%s][voiceDialReport][newexten]',_0x414656[_0xaa01('0x1e')],util[_0xaa01('0x1c')](_0x13da47,{'showHidden':![],'depth':null}));}};module[_0xaa01('0x74')]=VoiceDialReport;
\ No newline at end of file
index 7476d5d..1b29fc5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b19=['lodash','moment','md5','../../../config/logger','ami','../ami','../model/queueReport','redis','socket.io-emitter','enqueue','tail','finally','sequence','queueReports','agents','voiceQueues','campaigns','variables','syncQueueSummary','bind','queuesummarycomplete','syncQueueSummaryComplete','syncQueueCallerJoin','queuecallerabandon','syncQueueCallerAbandon','queuecallerleave','syncQueueCallerLeave','agentcomplete','syncAgentComplete','agentconnect','syncAgentConnect','varset','syncHangup','fullybooted','newexten','syncNewExten','musiconholdstart','syncMusicOnHoldStart','musiconholdstop','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','loopQueueSummary','isEmpty','hasOwnProperty','originated','pTalking','waiting','queueStatusComplete','clearZombieChannels','channels','isNil','Action','status','channel','catch','No\x20such\x20channel','[%s][voiceQueueReport][checkChannel]','inspect','[%s][voiceQueueReport][checkQueueReport]','[%s][voiceQueueReport][checkVariables]','prototype','syncFullyBooted','error','clearQueueReport','emitVoiceQueueChannelRemove','clearqueuereport','emit','emitVoiceQueueChannelSave','debug','[%s][voiceQueueReport][',']\x20sending\x20voice_queue_channel:save\x20event:','uniqueid','format','voice:queue:%s','name','voice_queue_channel:save','voice_queue_presence:save',']\x20sending\x20voice_queue_channel:remove\x20event:','voice_queue_channel:remove','voice_queue_presence:remove','emitVoiceQueueSummary','inbound','answered','loggedIn','sumBillable','sumDuration','sumHoldTime','total','type','unmanaged','Trunk','callerid','Interval','[voiceQueueReport][',']\x20sending\x20voice_queue:save\x20event:','voice_queue:save','isNotNull','isUndefined','queues','[voiceQueueReport][queues]','queuesummary','then','flagQueueSummary','[voiceQueueReport][queuesummary]','queue','[voiceQueueReport][queuesummary]\x20event:','info','[voiceQueueReport][queuesummary]\x20name:%s','countBy','toNumber','callers','loggedin','available','talking','custom:queuesummary','[voiceQueueReport][queuesummarycomplete]\x20event:','[%s][voiceQueueReport][queuecallerjoin]','YYYY-MM-DD\x20HH:mm:ss','position','count','routealias','[voiceQueueReport][queuecallerjoin]\x20name:%s\x20type:%s','merge','queuecallerjoin','queuecallercomplete','holdtime','originalposition','ABANDONED','[voiceQueueReport][queuecallerabandon]\x20name:%s\x20type:%s','[%s][voiceQueueReport][queuecallerabandon]','[%s][voiceQueueReport][queuecallerleave]','last','queuecallerleaveAt','connectedlinenum','connectedlinename','[voiceQueueReport][queuecallerleave]\x20name:%s\x20type:%s\x20connectedlinenum:%s\x20connectedlinename:%s','[%s][voiceQueueReport][agentconnect]','queuecallerexitreason','COMPLETEDBYAGENT','[voiceQueueReport][agentconnect]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETEDBYAGENT','queuecallerabandonAt','assigned','lastAssignedTo','membername','transfer','reason','startsWith','toLowerCase','local/','linkedid','queuecallerexit','queuecallerexitAt','queuecallerjoinAt','seconds','transfertype','FORWARD','transferexten','destexten','transferuniqueid','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:FORWARDTRANSFER','COMPLETEDBY','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:%s','syncVarSet','[%s][voiceQueueReport][varset]','addVariable','keys','variable','value','queuestatus','TIMEOUT','lastevent','timeout','[%s][voiceQueueReport][varset]\x20sending\x20timeout\x20event:','custom:timeout','[%s][voiceQueueReport][varset]\x20name:%s\x20type:%s\x20variable:%s\x20value:%s','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberlastcall','memberpenalty','memberrealtime','includes','[%s][voiceQueueReport][hangup]','length','abandoned','diff','milliseconds','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerunmanaged\x20event:','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerabandon\x20event:','custom:queuecallerabandon','[%s][voiceQueueReport][hangup]\x20name:%s\x20type:%s\x20reason:%s','cause-txt','hangup','[%s][voiceQueueReport][hangup]\x20sending\x20voiceQueueReport\x20event:','[%s][voiceQueueReport][attendedtransfer]','transfereeuniqueid','secondtransfereruniqueid','ATTENDED','switch','[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','origtransfereruniqueid','transfertargetuniqueid','[%s][voiceQueueReport][blindtransfer]','BLIND','[%s][voiceQueueReport][blindTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','BlindTransfer','transfererchannel','[%s][voiceQueueReport][musiconholdstart]','mohstarttime','syncMusicOnHoldStop','[%s][voiceQueueReport][musiconholdstop]','mohtime','[%s][voiceQueueReport][musiconholdstop]\x20mohtime:%s','application','applicationdata','appdata','CDR(routeAlias)','[%s][voiceQueueReport][newexten]\x20application:%s\x20appdata:%s','[%s][voiceQueueReport][newexten]','exports'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x6b19,0xe8));var _0x96b1=function(_0x2fef40,_0x26af20){_0x2fef40=_0x2fef40-0x0;var _0x4345ca=_0x6b19[_0x2fef40];return _0x4345ca;};'use strict';var _=require(_0x96b1('0x0'));var moment=require(_0x96b1('0x1'));var util=require('util');var md5=require(_0x96b1('0x2'));var Redis=require('ioredis');var config=require('../../../config/environment');var logger=require(_0x96b1('0x3'))(_0x96b1('0x4'));var ami=require(_0x96b1('0x5'));var QueueReport=require(_0x96b1('0x6'));config[_0x96b1('0x7')]=_['defaults'](config[_0x96b1('0x7')],{'host':'localhost','port':0x18eb});var io=require(_0x96b1('0x8'))(new Redis(config['redis']));var Sequence=function(){};Sequence['prototype'][_0x96b1('0x9')]=function(_0x535cc9){this[_0x96b1('0xa')]=this['tail']?this[_0x96b1('0xa')][_0x96b1('0xb')](_0x535cc9):_0x535cc9();};function VoiceQueueReport(_0x366a60){this[_0x96b1('0xc')]=new Sequence();this[_0x96b1('0xd')]={};this[_0x96b1('0xe')]=_0x366a60[_0x96b1('0xe')];this['channels']=_0x366a60['queueChannels'];this[_0x96b1('0xf')]=_0x366a60['voiceQueues'];this['flagQueueSummary']=!![];this[_0x96b1('0x10')]=_0x366a60[_0x96b1('0x10')];this[_0x96b1('0x11')]={};ami['on']('queuesummary',this[_0x96b1('0x12')][_0x96b1('0x13')](this));ami['on'](_0x96b1('0x14'),this[_0x96b1('0x15')][_0x96b1('0x13')](this));ami['on']('queuecallerjoin',this[_0x96b1('0x16')][_0x96b1('0x13')](this));ami['on'](_0x96b1('0x17'),this[_0x96b1('0x18')][_0x96b1('0x13')](this));ami['on'](_0x96b1('0x19'),this[_0x96b1('0x1a')][_0x96b1('0x13')](this));ami['on'](_0x96b1('0x1b'),this[_0x96b1('0x1c')][_0x96b1('0x13')](this));ami['on'](_0x96b1('0x1d'),this[_0x96b1('0x1e')][_0x96b1('0x13')](this));ami['on'](_0x96b1('0x1f'),this['syncVarSet'][_0x96b1('0x13')](this));ami['on']('hangup',this[_0x96b1('0x20')][_0x96b1('0x13')](this));ami['on'](_0x96b1('0x21'),this['syncFullyBooted'][_0x96b1('0x13')](this));ami['on'](_0x96b1('0x22'),this[_0x96b1('0x23')]['bind'](this));ami['on'](_0x96b1('0x24'),this[_0x96b1('0x25')][_0x96b1('0x13')](this));ami['on'](_0x96b1('0x26'),this['syncMusicOnHoldStop'][_0x96b1('0x13')](this));ami['on'](_0x96b1('0x27'),this[_0x96b1('0x28')]['bind'](this));ami['on'](_0x96b1('0x29'),this[_0x96b1('0x2a')][_0x96b1('0x13')](this));this[_0x96b1('0x2b')]();this['loopQueueShow']();}function clearChannels(_0x21da55){if(!_['isEmpty'](_0x21da55)){for(var _0x21ac25 in _0x21da55){if(_0x21da55['hasOwnProperty'](_0x21ac25)){delete _0x21da55[_0x21ac25];}}}}function clearCampaigns(_0x6509d2){if(!_[_0x96b1('0x2c')](_0x6509d2)){for(var _0x4fb8de in _0x6509d2){if(_0x6509d2['hasOwnProperty'](_0x4fb8de)){_0x6509d2[_0x4fb8de]['originated']=0x0;}}}}function clearVoiceQueues(_0x3f24bc){if(!_[_0x96b1('0x2c')](_0x3f24bc)){for(var _0x18e56a in _0x3f24bc){if(_0x3f24bc[_0x96b1('0x2d')](_0x18e56a)){_0x3f24bc[_0x18e56a][_0x96b1('0x2e')]=0x0;_0x3f24bc[_0x18e56a]['talking']=0x0;_0x3f24bc[_0x18e56a][_0x96b1('0x2f')]=0x0;_0x3f24bc[_0x18e56a][_0x96b1('0x30')]=0x0;_0x3f24bc[_0x18e56a][_0x96b1('0x31')]=!![];}}}}function clearAgentBooked(_0x209ce8){if(!_['isEmpty'](_0x209ce8)){for(var _0x30dd00 in _0x209ce8){if(_0x209ce8[_0x96b1('0x2d')](_0x30dd00)){_0x209ce8[_0x30dd00]['unlockRR']=!![];}}}}VoiceQueueReport['prototype'][_0x96b1('0x32')]=function(){var _0x53a198=this;for(var _0x436605 in this[_0x96b1('0x33')]){if(this['channels'][_0x96b1('0x2d')](_0x436605)&&!this[_0x96b1('0x33')][_0x436605]['switch']){this[_0x96b1('0xc')][_0x96b1('0x9')](function(){if(!_[_0x96b1('0x34')](_0x53a198['channels'][_0x436605])){return ami[_0x96b1('0x35')]({'action':_0x96b1('0x36'),'channel':_0x53a198[_0x96b1('0x33')][_0x436605][_0x96b1('0x37')]})[_0x96b1('0x38')](function(_0x3a7118){if(_0x3a7118['message']===_0x96b1('0x39')){setTimeout(function(){if(_0x53a198[_0x96b1('0x33')][_0x436605]){delete _0x53a198['channels'][_0x436605];logger['error'](_0x96b1('0x3a'),_0x436605,util[_0x96b1('0x3b')](_0x3a7118,{'showHidden':![],'depth':null}));}if(_0x53a198[_0x96b1('0xd')][_0x436605]){delete _0x53a198['queueReports'][_0x436605];logger['error'](_0x96b1('0x3c'),_0x436605,util[_0x96b1('0x3b')](_0x3a7118,{'showHidden':![],'depth':null}));}if(_0x53a198[_0x96b1('0x11')][_0x436605]){delete _0x53a198[_0x96b1('0x11')][_0x436605];logger['error'](_0x96b1('0x3d'),_0x436605,util['inspect'](_0x3a7118,{'showHidden':![],'depth':null}));}},0x1f40);}});}});}}};VoiceQueueReport[_0x96b1('0x3e')][_0x96b1('0x3f')]=function(){logger[_0x96b1('0x40')]('[FullyBooted]\x20clear\x20realtime');clearChannels(this[_0x96b1('0x33')]);this[_0x96b1('0x41')](this[_0x96b1('0xd')]);clearAgentBooked(this[_0x96b1('0xe')]);clearVoiceQueues(this[_0x96b1('0xf')]);clearCampaigns(this[_0x96b1('0x10')]);};VoiceQueueReport['prototype'][_0x96b1('0x41')]=function(_0x3bc56d){var _0x4a7dd4=this;if(!_[_0x96b1('0x2c')](_0x3bc56d)){for(var _0x4ebe93 in _0x3bc56d){if(_0x3bc56d[_0x96b1('0x2d')](_0x4ebe93)){_0x4a7dd4[_0x96b1('0x42')](_0x3bc56d[_0x4ebe93],_0x96b1('0x43'));delete _0x3bc56d[_0x4ebe93];}}}};VoiceQueueReport[_0x96b1('0x3e')][_0x96b1('0x44')]=function(_0xa02c65,_0x377775,_0x220d08){io['to'](_0xa02c65)[_0x96b1('0x44')](_0x377775,_0x220d08);};VoiceQueueReport['prototype'][_0x96b1('0x45')]=function(_0x4d3c9f,_0x41764a){logger[_0x96b1('0x46')](_0x96b1('0x47')+_0x41764a+_0x96b1('0x48'),_0x4d3c9f[_0x96b1('0x49')],util[_0x96b1('0x3b')](_0x4d3c9f,{'showHidden':![],'depth':null}));this[_0x96b1('0x44')](util[_0x96b1('0x4a')](_0x96b1('0x4b'),_0x4d3c9f[_0x96b1('0x4c')]),_0x96b1('0x4d'),_0x4d3c9f);io[_0x96b1('0x44')](_0x96b1('0x4e'),_0x4d3c9f);};VoiceQueueReport['prototype']['emitVoiceQueueChannelRemove']=function(_0xba6502,_0x2fdcb8){logger['debug'](_0x96b1('0x47')+_0x2fdcb8+_0x96b1('0x4f'),_0xba6502['uniqueid'],util['inspect'](_0xba6502,{'showHidden':![],'depth':null}));this['emit'](util[_0x96b1('0x4a')](_0x96b1('0x4b'),_0xba6502[_0x96b1('0x4c')]),_0x96b1('0x50'),_0xba6502);io[_0x96b1('0x44')](_0x96b1('0x51'),_0xba6502);};VoiceQueueReport[_0x96b1('0x3e')][_0x96b1('0x52')]=function(_0x2610ee,_0x28f820){if(_0x2610ee['type']===_0x96b1('0x53')){var _0x54acd9={'id':_0x2610ee['id'],'name':_0x2610ee[_0x96b1('0x4c')],'strategy':_0x2610ee['strategy'],'answered':_0x2610ee[_0x96b1('0x54')],'available':_0x2610ee['available'],'loggedIn':_0x2610ee[_0x96b1('0x55')],'pTalking':_0x2610ee[_0x96b1('0x2f')],'sumBillable':_0x2610ee[_0x96b1('0x56')],'sumDuration':_0x2610ee[_0x96b1('0x57')],'sumHoldTime':_0x2610ee[_0x96b1('0x58')]||0x0,'talking':_0x2610ee['talking'],'total':_0x2610ee[_0x96b1('0x59')],'type':_0x2610ee[_0x96b1('0x5a')],'unmanaged':_0x2610ee[_0x96b1('0x5b')],'abandoned':_0x2610ee['abandoned'],'waiting':_0x2610ee[_0x96b1('0x30')]};if(_0x2610ee[_0x96b1('0x5c')]){_0x54acd9[_0x96b1('0x5c')]={'id':_0x2610ee[_0x96b1('0x5c')]['id'],'name':_0x2610ee['Trunk'][_0x96b1('0x4c')],'active':_0x2610ee[_0x96b1('0x5c')]['active'],'callerid':_0x2610ee[_0x96b1('0x5c')][_0x96b1('0x5d')]};}if(_0x2610ee[_0x96b1('0x5e')]){_0x54acd9[_0x96b1('0x5e')]={'id':_0x2610ee[_0x96b1('0x5e')]['id'],'name':_0x2610ee[_0x96b1('0x5e')]['name']};}var _0x306dc9=md5(JSON['stringify'](_0x54acd9));if(_0x2610ee[_0x96b1('0x2')]!==_0x306dc9){_0x2610ee[_0x96b1('0x2')]=_0x306dc9;logger['debug'](_0x96b1('0x5f')+_0x28f820+_0x96b1('0x60'),util['inspect'](_0x54acd9,{'showHidden':![],'depth':null}));this[_0x96b1('0x44')](util[_0x96b1('0x4a')](_0x96b1('0x4b'),_0x54acd9[_0x96b1('0x4c')]),_0x96b1('0x61'),_0x54acd9);}}};VoiceQueueReport[_0x96b1('0x3e')][_0x96b1('0x62')]=function(_0x192aa4){return _0x192aa4!==null&&!_[_0x96b1('0x63')](_0x192aa4);};VoiceQueueReport[_0x96b1('0x3e')]['loopQueueShow']=function(){var _0x296960=this;setInterval(function(){_0x296960[_0x96b1('0x32')]();ami[_0x96b1('0x35')]({'action':_0x96b1('0x64')})[_0x96b1('0x38')](function(_0x1e087d){logger[_0x96b1('0x40')](_0x96b1('0x65'),util['inspect'](_0x1e087d,{'showHidden':![],'depth':null}));});},0x2710);};VoiceQueueReport['prototype'][_0x96b1('0x2b')]=function(){var _0x1d07e1=this;setInterval(function(){if(_0x1d07e1['flagQueueSummary']){return ami[_0x96b1('0x35')]({'action':_0x96b1('0x66')})[_0x96b1('0x67')](function(_0x5f026c){_0x1d07e1[_0x96b1('0x68')]=![];})[_0x96b1('0x38')](function(_0x52c64e){logger['error'](_0x96b1('0x69'),util[_0x96b1('0x3b')](_0x52c64e,{'showHidden':![],'depth':null}));});}},0x3e8);};VoiceQueueReport[_0x96b1('0x3e')][_0x96b1('0x12')]=function(_0x22aa61){try{if(this[_0x96b1('0x62')](_0x22aa61)&&this[_0x96b1('0x62')](_0x22aa61[_0x96b1('0x6a')])){logger[_0x96b1('0x46')](_0x96b1('0x6b'),util[_0x96b1('0x3b')](_0x22aa61,{'showHidden':![],'depth':null}));if(this[_0x96b1('0xf')][_0x22aa61['queue']]){logger[_0x96b1('0x6c')](_0x96b1('0x6d'),_0x22aa61[_0x96b1('0x6a')]);var _0x22da91=_[_0x96b1('0x6e')](this[_0x96b1('0x33')],_0x96b1('0x6a'))[_0x22aa61['queue']]||0x0;var _0x10d5b7=_0x22da91-_0x22aa61['callers'];if(this['voiceQueues'][_0x22aa61[_0x96b1('0x6a')]][_0x96b1('0x30')]!==_[_0x96b1('0x6f')](_0x22aa61[_0x96b1('0x70')])||this[_0x96b1('0xf')][_0x22aa61[_0x96b1('0x6a')]][_0x96b1('0x55')]!==_['toNumber'](_0x22aa61[_0x96b1('0x71')])||this['voiceQueues'][_0x22aa61[_0x96b1('0x6a')]]['available']!==_[_0x96b1('0x6f')](_0x22aa61[_0x96b1('0x72')])||this['voiceQueues'][_0x22aa61[_0x96b1('0x6a')]][_0x96b1('0x73')]!==_0x10d5b7){this[_0x96b1('0xf')][_0x22aa61[_0x96b1('0x6a')]]['waiting']=_['toNumber'](_0x22aa61[_0x96b1('0x70')]);this[_0x96b1('0xf')][_0x22aa61[_0x96b1('0x6a')]][_0x96b1('0x55')]=_['toNumber'](_0x22aa61[_0x96b1('0x71')]);this[_0x96b1('0xf')][_0x22aa61[_0x96b1('0x6a')]][_0x96b1('0x72')]=_[_0x96b1('0x6f')](_0x22aa61[_0x96b1('0x72')]);this[_0x96b1('0xf')][_0x22aa61[_0x96b1('0x6a')]][_0x96b1('0x73')]=_0x10d5b7>0x0?_0x10d5b7:0x0;this['voiceQueues'][_0x22aa61['queue']][_0x96b1('0x73')]=this[_0x96b1('0xf')][_0x22aa61['queue']]['talking']>_[_0x96b1('0x6f')](_0x22aa61[_0x96b1('0x71')])?_[_0x96b1('0x6f')](_0x22aa61[_0x96b1('0x71')]):this[_0x96b1('0xf')][_0x22aa61[_0x96b1('0x6a')]][_0x96b1('0x73')];this['emitVoiceQueueSummary'](this['voiceQueues'][_0x22aa61[_0x96b1('0x6a')]],_0x96b1('0x66'));}logger['debug']('[voiceQueueReport][queuesummary]\x20sending\x20queuesummary\x20event:',util[_0x96b1('0x3b')](this[_0x96b1('0xf')][_0x22aa61['queue']],{'showHidden':![],'depth':null}));ami[_0x96b1('0x44')](_0x96b1('0x74'),this[_0x96b1('0xf')][_0x22aa61[_0x96b1('0x6a')]]);}}}catch(_0x3ae851){logger[_0x96b1('0x40')]('[voiceQueueReport][queuesummary]',util[_0x96b1('0x3b')](_0x3ae851,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x96b1('0x3e')][_0x96b1('0x15')]=function(_0xb972bb){logger['debug'](_0x96b1('0x75'),util['inspect'](_0xb972bb,{'showHidden':![],'depth':null}));this[_0x96b1('0x68')]=!![];};VoiceQueueReport[_0x96b1('0x3e')][_0x96b1('0x16')]=function(_0x20fd2a){try{if(this[_0x96b1('0x62')](_0x20fd2a)){logger[_0x96b1('0x46')](_0x96b1('0x76'),_0x20fd2a[_0x96b1('0x49')],util[_0x96b1('0x3b')](_0x20fd2a,{'showHidden':![],'depth':null}));if(_[_0x96b1('0x63')](this[_0x96b1('0xd')][_0x20fd2a['uniqueid']]))this[_0x96b1('0xd')][_0x20fd2a[_0x96b1('0x49')]]=[];if(_[_0x96b1('0x63')](this[_0x96b1('0x33')][_0x20fd2a[_0x96b1('0x49')]]))this['channels'][_0x20fd2a[_0x96b1('0x49')]]={};var _0x362017=new QueueReport();_0x362017['name']=_0x20fd2a[_0x96b1('0x6a')];_0x362017[_0x96b1('0x5a')]=this[_0x96b1('0xf')][_0x362017[_0x96b1('0x4c')]]&&this['voiceQueues'][_0x362017['name']]['type']?this['voiceQueues'][_0x362017[_0x96b1('0x4c')]][_0x96b1('0x5a')]||'inbound':_0x96b1('0x53');_0x362017[_0x96b1('0x6a')]=_0x20fd2a[_0x96b1('0x6a')];_0x362017['queuecallerjoinAt']=moment()[_0x96b1('0x4a')](_0x96b1('0x77'));_0x362017[_0x96b1('0x78')]=_0x20fd2a['position'];_0x362017[_0x96b1('0x79')]=_0x20fd2a[_0x96b1('0x79')];_0x362017[_0x96b1('0x49')]=_0x20fd2a[_0x96b1('0x49')];_0x362017[_0x96b1('0x7a')]=this['channels'][_0x20fd2a[_0x96b1('0x49')]]['routealias'];logger['info'](_0x96b1('0x7b'),_0x362017[_0x96b1('0x4c')],_0x362017[_0x96b1('0x5a')]);_[_0x96b1('0x7c')](_0x362017,_['pick'](_0x20fd2a,_['keys'](_0x362017)));this['queueReports'][_0x20fd2a['uniqueid']]['push'](_0x362017);this[_0x96b1('0x33')][_0x20fd2a['uniqueid']]=_0x362017;this[_0x96b1('0x45')](_0x362017,_0x96b1('0x7d'));}}catch(_0x331e21){logger[_0x96b1('0x40')]('[%s][voiceQueueReport][queuecallerjoin]',_0x20fd2a[_0x96b1('0x49')],util[_0x96b1('0x3b')](_0x331e21,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x96b1('0x18')]=function(_0x4a0e61){try{if(this['isNotNull'](_0x4a0e61)){logger[_0x96b1('0x46')]('[%s][voiceQueueReport][queuecallerabandon]',_0x4a0e61[_0x96b1('0x49')],util['inspect'](_0x4a0e61,{'showHidden':![],'depth':null}));if(this[_0x96b1('0xd')][_0x4a0e61[_0x96b1('0x49')]]){var _0x379256=_['last'](this[_0x96b1('0xd')][_0x4a0e61[_0x96b1('0x49')]]);_0x379256[_0x96b1('0x7e')]=![];_0x379256['queuecallercompleteAt']=null;_0x379256[_0x96b1('0x7f')]=_0x4a0e61[_0x96b1('0x7f')];_0x379256['originalposition']=_0x4a0e61[_0x96b1('0x80')];_0x379256[_0x96b1('0x17')]=!![];_0x379256['queuecallerabandonAt']=moment()['format'](_0x96b1('0x77'));_0x379256['queuecallerexitreason']=_0x96b1('0x81');_0x379256['lastAssignedTo']=null;logger[_0x96b1('0x6c')](_0x96b1('0x82'),_0x379256[_0x96b1('0x4c')],_0x379256[_0x96b1('0x5a')]);this[_0x96b1('0x33')][_0x4a0e61['uniqueid']]=_0x379256;this[_0x96b1('0x42')](_0x379256,_0x96b1('0x17'));}}}catch(_0x3a492e){logger['error'](_0x96b1('0x83'),_0x4a0e61['uniqueid'],util['inspect'](_0x3a492e,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x96b1('0x3e')]['syncQueueCallerLeave']=function(_0x1b1d65){try{if(this['isNotNull'](_0x1b1d65)){logger['debug'](_0x96b1('0x84'),_0x1b1d65['uniqueid'],util[_0x96b1('0x3b')](_0x1b1d65,{'showHidden':![],'depth':null}));if(this[_0x96b1('0xd')][_0x1b1d65[_0x96b1('0x49')]]){var _0x14af55=_[_0x96b1('0x85')](this[_0x96b1('0xd')][_0x1b1d65['uniqueid']]);_0x14af55[_0x96b1('0x86')]=moment()['format'](_0x96b1('0x77'));_0x14af55[_0x96b1('0x87')]=_0x1b1d65['connectedlinenum'];_0x14af55[_0x96b1('0x88')]=_0x1b1d65[_0x96b1('0x88')];logger['info'](_0x96b1('0x89'),_0x14af55[_0x96b1('0x4c')],_0x14af55['type'],_0x1b1d65[_0x96b1('0x87')],_0x1b1d65['connectedlinename']);this[_0x96b1('0x33')][_0x1b1d65['uniqueid']]=_0x14af55;this['emitVoiceQueueChannelSave'](_0x14af55,_0x96b1('0x19'));}}}catch(_0x393295){logger[_0x96b1('0x40')](_0x96b1('0x84'),_0x1b1d65['uniqueid'],util[_0x96b1('0x3b')](_0x393295,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x96b1('0x3e')][_0x96b1('0x1e')]=function(_0x303ec2){try{if(this[_0x96b1('0x62')](_0x303ec2)){logger[_0x96b1('0x46')](_0x96b1('0x8a'),_0x303ec2['uniqueid'],util[_0x96b1('0x3b')](_0x303ec2,{'showHidden':![],'depth':null}));if(this[_0x96b1('0xd')][_0x303ec2[_0x96b1('0x49')]]){var _0x2d4516=_['last'](this['queueReports'][_0x303ec2[_0x96b1('0x49')]]);_0x2d4516[_0x96b1('0x7e')]=!![];_0x2d4516[_0x96b1('0x8b')]=_0x96b1('0x8c');logger[_0x96b1('0x6c')](_0x96b1('0x8d'),_0x2d4516[_0x96b1('0x4c')],_0x2d4516[_0x96b1('0x5a')]);}}}catch(_0x2739fd){logger[_0x96b1('0x40')]('[%s][voiceQueueReport][agentconnect]',_0x303ec2['uniqueid'],util[_0x96b1('0x3b')](_0x2739fd,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x96b1('0x3e')][_0x96b1('0x1c')]=function(_0x3e6953){try{if(this[_0x96b1('0x62')](_0x3e6953)){logger[_0x96b1('0x46')]('[%s][voiceQueueReport][agentcomplete]',_0x3e6953[_0x96b1('0x49')],util['inspect'](_0x3e6953,{'showHidden':![],'depth':null}));if(this[_0x96b1('0xd')][_0x3e6953[_0x96b1('0x49')]]){var _0x640c3d=_[_0x96b1('0x85')](this[_0x96b1('0xd')][_0x3e6953[_0x96b1('0x49')]]);_0x640c3d['queuecallerabandon']=![];_0x640c3d[_0x96b1('0x8e')]=null;_0x640c3d[_0x96b1('0x8f')]=!![];_0x640c3d[_0x96b1('0x90')]=_0x3e6953[_0x96b1('0x91')];_0x640c3d['holdtime']=_0x3e6953[_0x96b1('0x7f')];_0x640c3d[_0x96b1('0x7e')]=!![];_0x640c3d['queuecallerexit']=![];_0x640c3d['queuecallerexitAt']=null;if(!_0x640c3d[_0x96b1('0x92')]){if(_0x3e6953[_0x96b1('0x93')]==_0x96b1('0x92')){_0x640c3d[_0x96b1('0x8b')]='COMPLETED';logger[_0x96b1('0x6c')]('[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETED',_0x640c3d[_0x96b1('0x4c')],_0x640c3d[_0x96b1('0x5a')]);}else{if(_[_0x96b1('0x94')](_0x3e6953[_0x96b1('0x37')][_0x96b1('0x95')](),_0x96b1('0x96'))){if(this[_0x96b1('0xd')][_0x3e6953['linkedid']]){var _0x2ae174=_[_0x96b1('0x85')](this[_0x96b1('0xd')][_0x3e6953[_0x96b1('0x97')]]);_0x2ae174[_0x96b1('0x7e')]=![];_0x2ae174[_0x96b1('0x98')]=!![];_0x2ae174[_0x96b1('0x99')]=moment(_0x640c3d[_0x96b1('0x9a')])['add'](_0x3e6953[_0x96b1('0x7f')],_0x96b1('0x9b'))[_0x96b1('0x4a')](_0x96b1('0x77'));_0x2ae174[_0x96b1('0x8b')]='FORWARDTRANSFER';_0x2ae174['transfer']=!![];_0x2ae174[_0x96b1('0x9c')]=_0x96b1('0x9d');_0x2ae174[_0x96b1('0x9e')]=_0x3e6953[_0x96b1('0x9f')];_0x2ae174[_0x96b1('0xa0')]=_0x3e6953[_0x96b1('0x49')];logger['info'](_0x96b1('0xa1'),_0x2ae174[_0x96b1('0x4c')],_0x2ae174['type']);var _0x564b1e=this[_0x96b1('0xd')][_0x3e6953['linkedid']];this[_0x96b1('0xd')][_0x3e6953[_0x96b1('0x97')]]=this[_0x96b1('0xd')][_0x3e6953[_0x96b1('0x49')]];this['queueReports'][_0x3e6953['uniqueid']]=_0x564b1e;}}else{_0x640c3d['queuecallerexitreason']=_0x96b1('0xa2')+_0x3e6953[_0x96b1('0x93')]['toUpperCase']();logger[_0x96b1('0x6c')](_0x96b1('0xa3'),_0x640c3d[_0x96b1('0x4c')],_0x640c3d[_0x96b1('0x5a')],_0x640c3d['queuecallerexitreason']);}}}this[_0x96b1('0x33')][_0x3e6953[_0x96b1('0x49')]]=_0x640c3d;this[_0x96b1('0x42')](_0x640c3d,_0x96b1('0x1b'));}}}catch(_0x443d7a){logger[_0x96b1('0x40')]('[%s][voiceQueueReport][agentcomplete]',_0x3e6953['uniqueid'],util[_0x96b1('0x3b')](_0x443d7a,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x96b1('0x3e')][_0x96b1('0xa4')]=function(_0x199940){try{if(this['isNotNull'](_0x199940)){logger[_0x96b1('0x46')](_0x96b1('0xa5'),_0x199940[_0x96b1('0x49')],util[_0x96b1('0x3b')](_0x199940,{'showHidden':![],'depth':null}));this[_0x96b1('0xa6')](_0x199940['uniqueid'],_[_0x96b1('0xa7')](_0x199940[_0x96b1('0xa8')])[0x0],_0x199940[_0x96b1('0xa9')]);if(this[_0x96b1('0xd')][_0x199940[_0x96b1('0x49')]]){var _0x163fb4=_[_0x96b1('0x85')](this[_0x96b1('0xd')][_0x199940[_0x96b1('0x49')]]);if(_0x163fb4){if(this[_0x96b1('0x62')](_0x199940['variable'])&&this['isNotNull'](_0x199940['variable'][_0x96b1('0xaa')])){switch(_0x199940[_0x96b1('0xa9')]){case'CONTINUE':_0x163fb4[_0x96b1('0x98')]=![];_0x163fb4[_0x96b1('0x99')]=null;break;case _0x96b1('0xab'):_0x163fb4[_0x96b1('0xac')]=_0x96b1('0xad');_0x163fb4[_0x96b1('0x98')]=!![];_0x163fb4[_0x96b1('0x99')]=moment()['format'](_0x96b1('0x77'));_0x163fb4['queuecallerleaveAt']=moment()[_0x96b1('0x4a')](_0x96b1('0x77'));logger[_0x96b1('0x46')](_0x96b1('0xae'),_0x199940[_0x96b1('0x49')],util['inspect'](_0x163fb4,{'showHidden':![],'depth':null}));ami[_0x96b1('0x44')](_0x96b1('0xaf'),_0x163fb4);break;default:_0x163fb4[_0x96b1('0x98')]=!![];_0x163fb4['queuecallerexitAt']=moment()[_0x96b1('0x4a')](_0x96b1('0x77'));_0x163fb4[_0x96b1('0x86')]=moment()[_0x96b1('0x4a')]('YYYY-MM-DD\x20HH:mm:ss');}_0x163fb4[_0x96b1('0x17')]=![];_0x163fb4[_0x96b1('0x8e')]=null;_0x163fb4[_0x96b1('0x8b')]=_0x199940[_0x96b1('0xa9')];this[_0x96b1('0x33')][_0x199940['uniqueid']]=_0x163fb4;this['emitVoiceQueueChannelRemove'](_0x163fb4,_0x96b1('0x1f'));}else if(this[_0x96b1('0x62')](_0x199940['variable'])&&this[_0x96b1('0x62')](_0x199940[_0x96b1('0xa8')]['queueposition'])){if(!_0x163fb4[_0x96b1('0x17')]){_0x163fb4['queuecallerexit']=!![];_0x163fb4['queuecallerexitAt']=moment()[_0x96b1('0x4a')](_0x96b1('0x77'));_0x163fb4[_0x96b1('0x8b')]='EXITWITHKEY';_0x163fb4[_0x96b1('0x86')]=moment()[_0x96b1('0x4a')](_0x96b1('0x77'));this['channels'][_0x199940[_0x96b1('0x49')]]=_0x163fb4;}}logger[_0x96b1('0x6c')](_0x96b1('0xb0'),_0x199940[_0x96b1('0x49')],_0x163fb4[_0x96b1('0x4c')],_0x163fb4[_0x96b1('0x5a')],_[_0x96b1('0xa7')](_0x199940[_0x96b1('0xa8')])[0x0],_0x199940['value']);_0x163fb4[_0x96b1('0x11')]=this[_0x96b1('0x11')][_0x199940[_0x96b1('0x49')]];}}}}catch(_0x5c0039){logger['error'](_0x96b1('0xa5'),_0x199940[_0x96b1('0x49')],util[_0x96b1('0x3b')](_0x5c0039,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x96b1('0xa6')]=function(_0x245bd8,_0x3982a1,_0x2f81c2){var _0xaffdf=[_0x96b1('0xb1'),_0x96b1('0xb2'),'rtpaudioqosjitter',_0x96b1('0xb3'),_0x96b1('0xb4'),'rtpaudioqoslossbridged',_0x96b1('0xb5'),_0x96b1('0xb6'),_0x96b1('0xb7'),_0x96b1('0xb8'),_0x96b1('0xb9'),_0x96b1('0xba'),_0x96b1('0xbb'),_0x96b1('0xbc'),_0x96b1('0xbd'),_0x96b1('0xbe'),'membername',_0x96b1('0xbf'),_0x96b1('0xc0')];if(!_[_0x96b1('0x34')](_0x3982a1)&&!_[_0x96b1('0xc1')](_0xaffdf,_0x3982a1)){if(_[_0x96b1('0x63')](this[_0x96b1('0x11')][_0x245bd8])){this[_0x96b1('0x11')][_0x245bd8]={};}this['variables'][_0x245bd8][_0x3982a1]=_0x2f81c2;}};VoiceQueueReport['prototype'][_0x96b1('0x20')]=function(_0x44f947){try{if(this[_0x96b1('0x62')](_0x44f947)){logger[_0x96b1('0x46')](_0x96b1('0xc2'),_0x44f947[_0x96b1('0x49')],util['inspect'](_0x44f947,{'showHidden':![],'depth':null}));if(this[_0x96b1('0xd')][_0x44f947[_0x96b1('0x49')]]){for(var _0xc778cc=0x0,_0x3f06e9={};_0xc778cc<this[_0x96b1('0xd')][_0x44f947[_0x96b1('0x49')]][_0x96b1('0xc3')];_0xc778cc+=0x1){_0x3f06e9=this[_0x96b1('0xd')][_0x44f947[_0x96b1('0x49')]][_0xc778cc];if(this['voiceQueues'][_0x3f06e9[_0x96b1('0x6a')]]){if(_0x3f06e9[_0x96b1('0x98')]&&_0x3f06e9['transfer']!=!![]){this[_0x96b1('0xf')][_0x3f06e9['queue']][_0x96b1('0x5b')]+=0x1;}if(_0x3f06e9[_0x96b1('0x17')]){this[_0x96b1('0xf')][_0x3f06e9[_0x96b1('0x6a')]][_0x96b1('0xc4')]+=0x1;}this[_0x96b1('0xf')][_0x3f06e9['queue']]['sumHoldTime']+=moment(_0x3f06e9[_0x96b1('0x86')])[_0x96b1('0xc5')](_0x3f06e9[_0x96b1('0x9a')],_0x96b1('0x9b'))||0x0;if(_0xc778cc===this[_0x96b1('0xd')][_0x44f947['uniqueid']]['length']-0x1){this[_0x96b1('0xf')][_0x3f06e9['queue']][_0x96b1('0x57')]+=moment()[_0x96b1('0xc6')](0x0)[_0x96b1('0xc5')](_0x3f06e9['queuecallerjoinAt'],_0x96b1('0x9b'));this[_0x96b1('0xf')][_0x3f06e9['queue']][_0x96b1('0x59')]+=0x1;if(_0x3f06e9[_0x96b1('0x7e')]){this[_0x96b1('0xf')][_0x3f06e9['queue']]['answered']+=0x1;this[_0x96b1('0xf')][_0x3f06e9[_0x96b1('0x6a')]]['sumBillable']+=moment()[_0x96b1('0xc6')](0x0)[_0x96b1('0xc5')](_0x3f06e9[_0x96b1('0x86')],_0x96b1('0x9b'));_0x3f06e9['queuecallercompleteAt']=moment()[_0x96b1('0x4a')](_0x96b1('0x77'));_0x3f06e9[_0x96b1('0x98')]=![];_0x3f06e9[_0x96b1('0x99')]=null;}if(_0x3f06e9['queuecallerexit']&&_0x3f06e9[_0x96b1('0x92')]!=!![]){_0x3f06e9['lastevent']=_0x96b1('0x5b');logger['debug'](_0x96b1('0xc7'),_0x44f947['uniqueid'],util['inspect'](_0x3f06e9,{'showHidden':![],'depth':null}));ami[_0x96b1('0x44')]('custom:queuecallerunmanaged',_0x3f06e9);}if(_0x3f06e9[_0x96b1('0x17')]){_0x3f06e9['lastevent']='abandoned';logger[_0x96b1('0x46')](_0x96b1('0xc8'),_0x44f947['uniqueid'],util['inspect'](_0x3f06e9,{'showHidden':![],'depth':null}));ami[_0x96b1('0x44')](_0x96b1('0xc9'),_0x3f06e9);}}else{this[_0x96b1('0xf')][_0x3f06e9[_0x96b1('0x6a')]][_0x96b1('0x57')]+=this[_0x96b1('0xf')][_0x3f06e9[_0x96b1('0x6a')]]['sumHoldTime'];}logger[_0x96b1('0x6c')](_0x96b1('0xca'),_0x44f947['uniqueid'],_0x3f06e9[_0x96b1('0x4c')],_0x3f06e9[_0x96b1('0x5a')],_0x44f947[_0x96b1('0xcb')]);this[_0x96b1('0x33')][_0x44f947['uniqueid']]=_0x3f06e9;this[_0x96b1('0x42')](_0x3f06e9,_0x96b1('0xcc'));this[_0x96b1('0x52')](this[_0x96b1('0xf')][_0x3f06e9[_0x96b1('0x6a')]],_0x96b1('0xcc'));}}logger[_0x96b1('0x46')](_0x96b1('0xcd'),_0x44f947['uniqueid'],util[_0x96b1('0x3b')](this[_0x96b1('0xd')][_0x44f947[_0x96b1('0x49')]],{'showHidden':![],'depth':null}));ami[_0x96b1('0x44')]('custom:voiceQueueReport',this[_0x96b1('0xd')][_0x44f947['uniqueid']]);delete this[_0x96b1('0xd')][_0x44f947[_0x96b1('0x49')]];delete this[_0x96b1('0x33')][_0x44f947['uniqueid']];}if(this[_0x96b1('0x11')][_0x44f947[_0x96b1('0x49')]]){delete this[_0x96b1('0x11')][_0x44f947[_0x96b1('0x49')]];}}}catch(_0x57482f){logger[_0x96b1('0x40')](_0x96b1('0xc2'),_0x44f947['uniqueid'],util[_0x96b1('0x3b')](_0x57482f,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x96b1('0x3e')][_0x96b1('0x28')]=function(_0x56a436){try{if(this[_0x96b1('0x62')](_0x56a436)){logger['debug'](_0x96b1('0xce'),_0x56a436[_0x96b1('0x49')],util[_0x96b1('0x3b')](_0x56a436,{'showHidden':![],'depth':null}));var _0x298324;if(this[_0x96b1('0xd')][_0x56a436[_0x96b1('0xcf')]]){_0x298324=_['last'](this['queueReports'][_0x56a436['transfereeuniqueid']]);_0x298324[_0x96b1('0x9e')]=_0x56a436['secondtransfererexten'];_0x298324[_0x96b1('0xa0')]=_0x56a436[_0x96b1('0xd0')];_0x298324[_0x96b1('0x8b')]='ATTENDEDTRANSFER';_0x298324[_0x96b1('0x92')]=!![];_0x298324['transfertype']=_0x96b1('0xd1');if(this['queueReports'][_0x56a436['secondtransfereruniqueid']]){var _0x2140e6=this[_0x96b1('0xd')][_0x56a436[_0x96b1('0xd0')]];this[_0x96b1('0xd')][_0x56a436['secondtransfereruniqueid']]=this['queueReports'][_0x56a436['transfereeuniqueid']];this[_0x96b1('0xd')][_0x56a436[_0x96b1('0xcf')]]=_0x2140e6;var _0x4c4bba=_[_0x96b1('0x85')](this[_0x96b1('0xd')][_0x56a436[_0x96b1('0xcf')]]);_0x4c4bba[_0x96b1('0xd2')]=!![];}logger[_0x96b1('0x6c')](_0x96b1('0xd3'),_0x56a436['uniqueid'],_0x298324[_0x96b1('0x4c')],_0x298324[_0x96b1('0x5a')],_0x298324[_0x96b1('0x9e')],_0x298324[_0x96b1('0xa0')]);}else if(this[_0x96b1('0xd')][_0x56a436['transfertargetuniqueid']]){_0x298324=_['last'](this[_0x96b1('0xd')][_0x56a436['transfertargetuniqueid']]);_0x298324[_0x96b1('0x9e')]=_0x56a436['origtransfererexten'];_0x298324[_0x96b1('0xa0')]=_0x56a436[_0x96b1('0xd4')];_0x298324['queuecallerexitreason']='ATTENDEDTRANSFER';_0x298324[_0x96b1('0x92')]=!![];_0x298324[_0x96b1('0x9c')]=_0x96b1('0xd1');if(this[_0x96b1('0xd')][_0x56a436['origtransfereruniqueid']]){var _0x2140e6=this['queueReports'][_0x56a436[_0x96b1('0xd4')]];this[_0x96b1('0xd')][_0x56a436[_0x96b1('0xd4')]]=this[_0x96b1('0xd')][_0x56a436['transfertargetuniqueid']];this[_0x96b1('0xd')][_0x56a436['transfertargetuniqueid']]=_0x2140e6;var _0x4c4bba=_[_0x96b1('0x85')](this[_0x96b1('0xd')][_0x56a436[_0x96b1('0xd5')]]);_0x4c4bba[_0x96b1('0xd2')]=!![];}logger[_0x96b1('0x6c')](_0x96b1('0xd3'),_0x56a436['uniqueid'],_0x298324['name'],_0x298324[_0x96b1('0x5a')],_0x298324[_0x96b1('0x9e')],_0x298324[_0x96b1('0xa0')]);}}}catch(_0x3b78f6){logger[_0x96b1('0x40')](_0x96b1('0xce'),_0x56a436[_0x96b1('0x49')],util['inspect'](_0x3b78f6,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x96b1('0x3e')]['syncBlindTransfer']=function(_0x1b62aa){try{if(this[_0x96b1('0x62')](_0x1b62aa)){logger[_0x96b1('0x46')](_0x96b1('0xd6'),_0x1b62aa['uniqueid'],util[_0x96b1('0x3b')](_0x1b62aa,{'showHidden':![],'depth':null}));if(this[_0x96b1('0xd')][_0x1b62aa[_0x96b1('0xcf')]]){var _0x21814b=_[_0x96b1('0x85')](this['queueReports'][_0x1b62aa['transfereeuniqueid']]);_0x21814b[_0x96b1('0x8b')]='BLINDTRANSFER';_0x21814b[_0x96b1('0x92')]=!![];_0x21814b[_0x96b1('0x9c')]=_0x96b1('0xd7');_0x21814b[_0x96b1('0x9e')]=_0x1b62aa['extension'];_0x21814b[_0x96b1('0xa0')]=_0x1b62aa['transfereeuniqueid'];logger[_0x96b1('0x6c')](_0x96b1('0xd8'),_0x1b62aa['uniqueid'],_0x21814b[_0x96b1('0x4c')],_0x21814b[_0x96b1('0x5a')],_0x21814b[_0x96b1('0x9e')],_0x21814b[_0x96b1('0xa0')]);this[_0x96b1('0x20')]({'event':_0x96b1('0xd9'),'uniqueid':_0x1b62aa[_0x96b1('0xcf')],'context':_0x1b62aa['context'],'channel':_0x1b62aa[_0x96b1('0xda')]});}}}catch(_0x26a975){logger[_0x96b1('0x40')](_0x96b1('0xd6'),_0x1b62aa[_0x96b1('0x49')],util['inspect'](_0x26a975,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x96b1('0x3e')][_0x96b1('0x25')]=function(_0x36c87e){try{if(this[_0x96b1('0x62')](_0x36c87e)){logger[_0x96b1('0x46')](_0x96b1('0xdb'),_0x36c87e[_0x96b1('0x49')],util[_0x96b1('0x3b')](_0x36c87e,{'showHidden':![],'depth':null}));if(this[_0x96b1('0xd')][_0x36c87e[_0x96b1('0x49')]]){var _0x517e1c=_[_0x96b1('0x85')](this[_0x96b1('0xd')][_0x36c87e[_0x96b1('0x49')]]);if(!_['isNil'](_0x517e1c[_0x96b1('0x86')])){_0x517e1c[_0x96b1('0xdc')]=moment()[_0x96b1('0x4a')](_0x96b1('0x77'));logger[_0x96b1('0x6c')]('[%s][voiceQueueReport][musiconholdstart]\x20mohstarttime:%s',_0x36c87e['uniqueid'],_0x517e1c['mohstarttime']);}}}}catch(_0x70c798){logger[_0x96b1('0x40')](_0x96b1('0xdb'),_0x36c87e[_0x96b1('0x49')],util[_0x96b1('0x3b')](_0x70c798,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x96b1('0x3e')][_0x96b1('0xdd')]=function(_0xdcb776){try{if(this['isNotNull'](_0xdcb776)){logger[_0x96b1('0x46')](_0x96b1('0xde'),_0xdcb776['uniqueid'],util['inspect'](_0xdcb776,{'showHidden':![],'depth':null}));if(this[_0x96b1('0xd')][_0xdcb776[_0x96b1('0x49')]]){var _0x382fbd=_[_0x96b1('0x85')](this[_0x96b1('0xd')][_0xdcb776['uniqueid']]);if(!_[_0x96b1('0x34')](_0x382fbd[_0x96b1('0xdc')])){_0x382fbd[_0x96b1('0xdf')]+=moment()['milliseconds'](0x0)['diff'](_0x382fbd[_0x96b1('0xdc')],'seconds');logger[_0x96b1('0x6c')](_0x96b1('0xe0'),_0xdcb776['uniqueid'],_0x382fbd['mohtime']);delete _0x382fbd[_0x96b1('0xdc')];}}}}catch(_0x1dff3a){logger['error'](_0x96b1('0xde'),_0xdcb776[_0x96b1('0x49')],util['inspect'](_0x1dff3a,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x96b1('0x3e')][_0x96b1('0x23')]=function(_0x512656){try{if(this[_0x96b1('0x62')](_0x512656)){logger[_0x96b1('0x46')]('[%s][voiceQueueReport][newexten]\x20event:',_0x512656[_0x96b1('0x49')],util[_0x96b1('0x3b')](_0x512656,{'showHidden':![],'depth':null}));if(_0x512656[_0x96b1('0xe1')][_0x96b1('0x95')]()==='set'){_0x512656[_0x96b1('0xe2')]=_0x512656[_0x96b1('0xe3')]&&_0x512656[_0x96b1('0xe3')][_0x96b1('0x94')](_0x96b1('0xe4'))?_0x512656[_0x96b1('0xe3')]:(_0x512656[_0x96b1('0xe3')]||_0x512656['applicationdata'])[_0x96b1('0x95')]();if(_[_0x96b1('0x94')](_0x512656[_0x96b1('0xe2')][_0x96b1('0x95')](),'cdr(')){logger[_0x96b1('0x6c')](_0x96b1('0xe5'),_0x512656[_0x96b1('0x49')],_0x512656[_0x96b1('0xe1')],_0x512656[_0x96b1('0xe2')]);if(_[_0x96b1('0x63')](this[_0x96b1('0x33')][_0x512656[_0x96b1('0x49')]]))this['channels'][_0x512656[_0x96b1('0x49')]]={};var _0x5847ea=_0x512656[_0x96b1('0xe2')]['split']('=');var _0x5e88ce=_0x5847ea[0x0][_0x96b1('0x95')]()['match'](/cdr\((.*)\)/);if(_0x5e88ce)this[_0x96b1('0x33')][_0x512656[_0x96b1('0x49')]][_0x5e88ce[0x1]]=_0x5847ea[0x1];}}}}catch(_0x30f2bb){logger[_0x96b1('0x40')](_0x96b1('0xe6'),_0x512656[_0x96b1('0x49')],util[_0x96b1('0x3b')](_0x30f2bb,{'showHidden':![],'depth':null}));}};module[_0x96b1('0xe7')]=VoiceQueueReport;
\ No newline at end of file
+var _0x387b=['talking','pTalking','waiting','queueStatusComplete','unlockRR','clearZombieChannels','switch','isNil','Action','status','catch','message','No\x20such\x20channel','error','inspect','[%s][voiceQueueReport][checkQueueReport]','[%s][voiceQueueReport][checkVariables]','syncFullyBooted','clearQueueReport','emitVoiceQueueChannelRemove','clearqueuereport','emit','emitVoiceQueueChannelSave','debug','[%s][voiceQueueReport][','uniqueid','format','name','voice_queue_channel:save','voice_queue_presence:save',']\x20sending\x20voice_queue_channel:remove\x20event:','voice:queue:%s','voice_queue_channel:remove','voice_queue_presence:remove','inbound','strategy','available','loggedIn','sumBillable','sumHoldTime','total','unmanaged','Trunk','active','Interval','stringify','[voiceQueueReport][',']\x20sending\x20voice_queue:save\x20event:','voice_queue:save','isNotNull','[voiceQueueReport][queues]','loopQueueSummary','then','queue','info','[voiceQueueReport][queuesummary]\x20name:%s','countBy','toNumber','callers','loggedin','emitVoiceQueueSummary','[voiceQueueReport][queuesummary]\x20sending\x20queuesummary\x20event:','[voiceQueueReport][queuesummary]','[voiceQueueReport][queuesummarycomplete]\x20event:','[%s][voiceQueueReport][queuecallerjoin]','isUndefined','type','queuecallerjoinAt','position','count','routealias','[voiceQueueReport][queuecallerjoin]\x20name:%s\x20type:%s','keys','push','[%s][voiceQueueReport][queuecallerabandon]','last','queuecallercomplete','queuecallercompleteAt','originalposition','queuecallerabandonAt','YYYY-MM-DD\x20HH:mm:ss','queuecallerexitreason','ABANDONED','lastAssignedTo','queuecallerleaveAt','connectedlinenum','connectedlinename','[voiceQueueReport][queuecallerleave]\x20name:%s\x20type:%s\x20connectedlinenum:%s\x20connectedlinename:%s','queuecallerleave','syncAgentConnect','[%s][voiceQueueReport][agentconnect]','COMPLETEDBYAGENT','[voiceQueueReport][agentconnect]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETEDBYAGENT','[%s][voiceQueueReport][agentcomplete]','assigned','membername','holdtime','queuecallerexit','queuecallerexitAt','transfer','reason','COMPLETED','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETED','startsWith','linkedid','add','seconds','transfertype','FORWARD','transferexten','destexten','transferuniqueid','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:FORWARDTRANSFER','toUpperCase','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:%s','[%s][voiceQueueReport][varset]','addVariable','variable','value','CONTINUE','TIMEOUT','lastevent','timeout','[%s][voiceQueueReport][varset]\x20sending\x20timeout\x20event:','queueposition','[%s][voiceQueueReport][varset]\x20name:%s\x20type:%s\x20variable:%s\x20value:%s','rtpaudioqosbridged','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','bridgepeer','bridgepvtcallid','membercalls','memberlastcall','memberpenalty','includes','length','abandoned','diff','sumDuration','milliseconds','answered','[%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','[%s][voiceQueueReport][attendedtransfer]','transfereeuniqueid','secondtransfererexten','ATTENDEDTRANSFER','ATTENDED','secondtransfereruniqueid','[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','transfertargetuniqueid','origtransfereruniqueid','syncBlindTransfer','[%s][voiceQueueReport][blindtransfer]','[%s][voiceQueueReport][blindTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','BlindTransfer','context','transfererchannel','[%s][voiceQueueReport][musiconholdstart]','mohstarttime','[%s][voiceQueueReport][musiconholdstart]\x20mohstarttime:%s','[%s][voiceQueueReport][musiconholdstop]','mohtime','[%s][voiceQueueReport][musiconholdstop]\x20mohtime:%s','[%s][voiceQueueReport][newexten]\x20event:','application','toLowerCase','set','applicationdata','appdata','CDR(routeAlias)','cdr(','[%s][voiceQueueReport][newexten]\x20application:%s\x20appdata:%s','split','match','[%s][voiceQueueReport][newexten]','exports','lodash','moment','util','md5','ioredis','../../../config/environment','../../../config/logger','ami','../ami','../model/queueReport','defaults','redis','localhost','prototype','enqueue','tail','finally','queueReports','agents','channels','queueChannels','voiceQueues','flagQueueSummary','campaigns','variables','queuesummary','syncQueueSummary','bind','syncQueueSummaryComplete','queuecallerjoin','syncQueueCallerJoin','queuecallerabandon','syncQueueCallerAbandon','syncQueueCallerLeave','agentcomplete','syncAgentComplete','agentconnect','varset','hangup','syncHangup','newexten','syncNewExten','musiconholdstart','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','attendedtransfer','syncAttendedTransfer','loopQueueShow','hasOwnProperty','isEmpty','originated'];(function(_0x243270,_0x219ed6){var _0x2d8446=function(_0x1a5993){while(--_0x1a5993){_0x243270['push'](_0x243270['shift']());}};_0x2d8446(++_0x219ed6);}(_0x387b,0x1a4));var _0xb387=function(_0x346d09,_0x2d4178){_0x346d09=_0x346d09-0x0;var _0x44c4e7=_0x387b[_0x346d09];return _0x44c4e7;};'use strict';var _=require(_0xb387('0x0'));var moment=require(_0xb387('0x1'));var util=require(_0xb387('0x2'));var md5=require(_0xb387('0x3'));var Redis=require(_0xb387('0x4'));var config=require(_0xb387('0x5'));var logger=require(_0xb387('0x6'))(_0xb387('0x7'));var ami=require(_0xb387('0x8'));var QueueReport=require(_0xb387('0x9'));config['redis']=_[_0xb387('0xa')](config[_0xb387('0xb')],{'host':_0xb387('0xc'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xb387('0xb')]));var Sequence=function(){};Sequence[_0xb387('0xd')][_0xb387('0xe')]=function(_0x2b899a){this[_0xb387('0xf')]=this[_0xb387('0xf')]?this['tail'][_0xb387('0x10')](_0x2b899a):_0x2b899a();};function VoiceQueueReport(_0x21a1f2){this['sequence']=new Sequence();this[_0xb387('0x11')]={};this[_0xb387('0x12')]=_0x21a1f2[_0xb387('0x12')];this[_0xb387('0x13')]=_0x21a1f2[_0xb387('0x14')];this[_0xb387('0x15')]=_0x21a1f2[_0xb387('0x15')];this[_0xb387('0x16')]=!![];this['campaigns']=_0x21a1f2[_0xb387('0x17')];this[_0xb387('0x18')]={};ami['on'](_0xb387('0x19'),this[_0xb387('0x1a')][_0xb387('0x1b')](this));ami['on']('queuesummarycomplete',this[_0xb387('0x1c')][_0xb387('0x1b')](this));ami['on'](_0xb387('0x1d'),this[_0xb387('0x1e')][_0xb387('0x1b')](this));ami['on'](_0xb387('0x1f'),this[_0xb387('0x20')][_0xb387('0x1b')](this));ami['on']('queuecallerleave',this[_0xb387('0x21')][_0xb387('0x1b')](this));ami['on'](_0xb387('0x22'),this[_0xb387('0x23')][_0xb387('0x1b')](this));ami['on'](_0xb387('0x24'),this['syncAgentConnect']['bind'](this));ami['on'](_0xb387('0x25'),this['syncVarSet'][_0xb387('0x1b')](this));ami['on'](_0xb387('0x26'),this[_0xb387('0x27')]['bind'](this));ami['on']('fullybooted',this['syncFullyBooted'][_0xb387('0x1b')](this));ami['on'](_0xb387('0x28'),this[_0xb387('0x29')][_0xb387('0x1b')](this));ami['on'](_0xb387('0x2a'),this[_0xb387('0x2b')][_0xb387('0x1b')](this));ami['on'](_0xb387('0x2c'),this[_0xb387('0x2d')][_0xb387('0x1b')](this));ami['on'](_0xb387('0x2e'),this[_0xb387('0x2f')]['bind'](this));ami['on']('blindtransfer',this['syncBlindTransfer'][_0xb387('0x1b')](this));this['loopQueueSummary']();this[_0xb387('0x30')]();}function clearChannels(_0x5b1489){if(!_['isEmpty'](_0x5b1489)){for(var _0x4f03fd in _0x5b1489){if(_0x5b1489[_0xb387('0x31')](_0x4f03fd)){delete _0x5b1489[_0x4f03fd];}}}}function clearCampaigns(_0x5f205a){if(!_[_0xb387('0x32')](_0x5f205a)){for(var _0x3c4956 in _0x5f205a){if(_0x5f205a['hasOwnProperty'](_0x3c4956)){_0x5f205a[_0x3c4956][_0xb387('0x33')]=0x0;}}}}function clearVoiceQueues(_0x3c624a){if(!_[_0xb387('0x32')](_0x3c624a)){for(var _0x11b31c in _0x3c624a){if(_0x3c624a[_0xb387('0x31')](_0x11b31c)){_0x3c624a[_0x11b31c][_0xb387('0x33')]=0x0;_0x3c624a[_0x11b31c][_0xb387('0x34')]=0x0;_0x3c624a[_0x11b31c][_0xb387('0x35')]=0x0;_0x3c624a[_0x11b31c][_0xb387('0x36')]=0x0;_0x3c624a[_0x11b31c][_0xb387('0x37')]=!![];}}}}function clearAgentBooked(_0x45dd7e){if(!_['isEmpty'](_0x45dd7e)){for(var _0x439767 in _0x45dd7e){if(_0x45dd7e['hasOwnProperty'](_0x439767)){_0x45dd7e[_0x439767][_0xb387('0x38')]=!![];}}}}VoiceQueueReport[_0xb387('0xd')][_0xb387('0x39')]=function(){var _0x388c23=this;for(var _0x8ddcb4 in this['channels']){if(this['channels'][_0xb387('0x31')](_0x8ddcb4)&&!this[_0xb387('0x13')][_0x8ddcb4][_0xb387('0x3a')]){this['sequence']['enqueue'](function(){if(!_[_0xb387('0x3b')](_0x388c23[_0xb387('0x13')][_0x8ddcb4])){return ami[_0xb387('0x3c')]({'action':_0xb387('0x3d'),'channel':_0x388c23['channels'][_0x8ddcb4]['channel']})[_0xb387('0x3e')](function(_0xb5a294){if(_0xb5a294[_0xb387('0x3f')]===_0xb387('0x40')){setTimeout(function(){if(_0x388c23[_0xb387('0x13')][_0x8ddcb4]){delete _0x388c23[_0xb387('0x13')][_0x8ddcb4];logger[_0xb387('0x41')]('[%s][voiceQueueReport][checkChannel]',_0x8ddcb4,util[_0xb387('0x42')](_0xb5a294,{'showHidden':![],'depth':null}));}if(_0x388c23[_0xb387('0x11')][_0x8ddcb4]){delete _0x388c23[_0xb387('0x11')][_0x8ddcb4];logger[_0xb387('0x41')](_0xb387('0x43'),_0x8ddcb4,util['inspect'](_0xb5a294,{'showHidden':![],'depth':null}));}if(_0x388c23[_0xb387('0x18')][_0x8ddcb4]){delete _0x388c23[_0xb387('0x18')][_0x8ddcb4];logger[_0xb387('0x41')](_0xb387('0x44'),_0x8ddcb4,util[_0xb387('0x42')](_0xb5a294,{'showHidden':![],'depth':null}));}},0x1f40);}});}});}}};VoiceQueueReport['prototype'][_0xb387('0x45')]=function(){logger['error']('[FullyBooted]\x20clear\x20realtime');clearChannels(this[_0xb387('0x13')]);this[_0xb387('0x46')](this[_0xb387('0x11')]);clearAgentBooked(this[_0xb387('0x12')]);clearVoiceQueues(this[_0xb387('0x15')]);clearCampaigns(this['campaigns']);};VoiceQueueReport[_0xb387('0xd')][_0xb387('0x46')]=function(_0x1b49fa){var _0xb02f9e=this;if(!_[_0xb387('0x32')](_0x1b49fa)){for(var _0x54d465 in _0x1b49fa){if(_0x1b49fa[_0xb387('0x31')](_0x54d465)){_0xb02f9e[_0xb387('0x47')](_0x1b49fa[_0x54d465],_0xb387('0x48'));delete _0x1b49fa[_0x54d465];}}}};VoiceQueueReport[_0xb387('0xd')][_0xb387('0x49')]=function(_0x51029f,_0x4a062c,_0x25a029){io['to'](_0x51029f)['emit'](_0x4a062c,_0x25a029);};VoiceQueueReport[_0xb387('0xd')][_0xb387('0x4a')]=function(_0x5ace23,_0x3b612e){logger[_0xb387('0x4b')](_0xb387('0x4c')+_0x3b612e+']\x20sending\x20voice_queue_channel:save\x20event:',_0x5ace23[_0xb387('0x4d')],util[_0xb387('0x42')](_0x5ace23,{'showHidden':![],'depth':null}));this[_0xb387('0x49')](util[_0xb387('0x4e')]('voice:queue:%s',_0x5ace23[_0xb387('0x4f')]),_0xb387('0x50'),_0x5ace23);io['emit'](_0xb387('0x51'),_0x5ace23);};VoiceQueueReport['prototype'][_0xb387('0x47')]=function(_0xed1f8c,_0x355025){logger[_0xb387('0x4b')]('[%s][voiceQueueReport]['+_0x355025+_0xb387('0x52'),_0xed1f8c[_0xb387('0x4d')],util['inspect'](_0xed1f8c,{'showHidden':![],'depth':null}));this[_0xb387('0x49')](util[_0xb387('0x4e')](_0xb387('0x53'),_0xed1f8c[_0xb387('0x4f')]),_0xb387('0x54'),_0xed1f8c);io[_0xb387('0x49')](_0xb387('0x55'),_0xed1f8c);};VoiceQueueReport[_0xb387('0xd')]['emitVoiceQueueSummary']=function(_0x43a128,_0x2ffe0e){if(_0x43a128['type']===_0xb387('0x56')){var _0x370f7c={'id':_0x43a128['id'],'name':_0x43a128['name'],'strategy':_0x43a128[_0xb387('0x57')],'answered':_0x43a128['answered'],'available':_0x43a128[_0xb387('0x58')],'loggedIn':_0x43a128[_0xb387('0x59')],'pTalking':_0x43a128['pTalking'],'sumBillable':_0x43a128[_0xb387('0x5a')],'sumDuration':_0x43a128['sumDuration'],'sumHoldTime':_0x43a128[_0xb387('0x5b')]||0x0,'talking':_0x43a128[_0xb387('0x34')],'total':_0x43a128[_0xb387('0x5c')],'type':_0x43a128['type'],'unmanaged':_0x43a128[_0xb387('0x5d')],'abandoned':_0x43a128['abandoned'],'waiting':_0x43a128[_0xb387('0x36')]};if(_0x43a128[_0xb387('0x5e')]){_0x370f7c['Trunk']={'id':_0x43a128[_0xb387('0x5e')]['id'],'name':_0x43a128[_0xb387('0x5e')][_0xb387('0x4f')],'active':_0x43a128[_0xb387('0x5e')][_0xb387('0x5f')],'callerid':_0x43a128[_0xb387('0x5e')]['callerid']};}if(_0x43a128[_0xb387('0x60')]){_0x370f7c[_0xb387('0x60')]={'id':_0x43a128[_0xb387('0x60')]['id'],'name':_0x43a128[_0xb387('0x60')][_0xb387('0x4f')]};}var _0x4d03a2=md5(JSON[_0xb387('0x61')](_0x370f7c));if(_0x43a128[_0xb387('0x3')]!==_0x4d03a2){_0x43a128[_0xb387('0x3')]=_0x4d03a2;logger[_0xb387('0x4b')](_0xb387('0x62')+_0x2ffe0e+_0xb387('0x63'),util['inspect'](_0x370f7c,{'showHidden':![],'depth':null}));this[_0xb387('0x49')](util['format']('voice:queue:%s',_0x370f7c[_0xb387('0x4f')]),_0xb387('0x64'),_0x370f7c);}}};VoiceQueueReport[_0xb387('0xd')][_0xb387('0x65')]=function(_0x548f03){return _0x548f03!==null&&!_['isUndefined'](_0x548f03);};VoiceQueueReport[_0xb387('0xd')][_0xb387('0x30')]=function(){var _0x589fa4=this;setInterval(function(){_0x589fa4[_0xb387('0x39')]();ami[_0xb387('0x3c')]({'action':'queues'})[_0xb387('0x3e')](function(_0x515d5b){logger[_0xb387('0x41')](_0xb387('0x66'),util[_0xb387('0x42')](_0x515d5b,{'showHidden':![],'depth':null}));});},0x2710);};VoiceQueueReport['prototype'][_0xb387('0x67')]=function(){var _0x4fb39f=this;setInterval(function(){if(_0x4fb39f[_0xb387('0x16')]){return ami[_0xb387('0x3c')]({'action':_0xb387('0x19')})[_0xb387('0x68')](function(_0x1efde2){_0x4fb39f[_0xb387('0x16')]=![];})[_0xb387('0x3e')](function(_0x2073b1){logger[_0xb387('0x41')]('[voiceQueueReport][queuesummary]',util['inspect'](_0x2073b1,{'showHidden':![],'depth':null}));});}},0x3e8);};VoiceQueueReport['prototype']['syncQueueSummary']=function(_0x176f9c){try{if(this['isNotNull'](_0x176f9c)&&this[_0xb387('0x65')](_0x176f9c[_0xb387('0x69')])){logger[_0xb387('0x4b')]('[voiceQueueReport][queuesummary]\x20event:',util['inspect'](_0x176f9c,{'showHidden':![],'depth':null}));if(this[_0xb387('0x15')][_0x176f9c['queue']]){logger[_0xb387('0x6a')](_0xb387('0x6b'),_0x176f9c[_0xb387('0x69')]);var _0x51dafc=_[_0xb387('0x6c')](this['channels'],_0xb387('0x69'))[_0x176f9c['queue']]||0x0;var _0x175e1d=_0x51dafc-_0x176f9c['callers'];if(this[_0xb387('0x15')][_0x176f9c[_0xb387('0x69')]][_0xb387('0x36')]!==_[_0xb387('0x6d')](_0x176f9c[_0xb387('0x6e')])||this['voiceQueues'][_0x176f9c[_0xb387('0x69')]]['loggedIn']!==_[_0xb387('0x6d')](_0x176f9c['loggedin'])||this[_0xb387('0x15')][_0x176f9c[_0xb387('0x69')]][_0xb387('0x58')]!==_[_0xb387('0x6d')](_0x176f9c[_0xb387('0x58')])||this[_0xb387('0x15')][_0x176f9c['queue']]['talking']!==_0x175e1d){this['voiceQueues'][_0x176f9c['queue']][_0xb387('0x36')]=_[_0xb387('0x6d')](_0x176f9c[_0xb387('0x6e')]);this['voiceQueues'][_0x176f9c['queue']][_0xb387('0x59')]=_['toNumber'](_0x176f9c[_0xb387('0x6f')]);this[_0xb387('0x15')][_0x176f9c['queue']]['available']=_[_0xb387('0x6d')](_0x176f9c['available']);this['voiceQueues'][_0x176f9c['queue']]['talking']=_0x175e1d>0x0?_0x175e1d:0x0;this[_0xb387('0x15')][_0x176f9c[_0xb387('0x69')]][_0xb387('0x34')]=this[_0xb387('0x15')][_0x176f9c[_0xb387('0x69')]][_0xb387('0x34')]>_['toNumber'](_0x176f9c[_0xb387('0x6f')])?_[_0xb387('0x6d')](_0x176f9c[_0xb387('0x6f')]):this[_0xb387('0x15')][_0x176f9c[_0xb387('0x69')]][_0xb387('0x34')];this[_0xb387('0x70')](this[_0xb387('0x15')][_0x176f9c[_0xb387('0x69')]],_0xb387('0x19'));}logger[_0xb387('0x4b')](_0xb387('0x71'),util[_0xb387('0x42')](this[_0xb387('0x15')][_0x176f9c['queue']],{'showHidden':![],'depth':null}));ami['emit']('custom:queuesummary',this[_0xb387('0x15')][_0x176f9c[_0xb387('0x69')]]);}}}catch(_0x4ed005){logger[_0xb387('0x41')](_0xb387('0x72'),util[_0xb387('0x42')](_0x4ed005,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xb387('0xd')][_0xb387('0x1c')]=function(_0x4714be){logger[_0xb387('0x4b')](_0xb387('0x73'),util[_0xb387('0x42')](_0x4714be,{'showHidden':![],'depth':null}));this[_0xb387('0x16')]=!![];};VoiceQueueReport[_0xb387('0xd')][_0xb387('0x1e')]=function(_0x1f6804){try{if(this[_0xb387('0x65')](_0x1f6804)){logger[_0xb387('0x4b')](_0xb387('0x74'),_0x1f6804['uniqueid'],util[_0xb387('0x42')](_0x1f6804,{'showHidden':![],'depth':null}));if(_[_0xb387('0x75')](this['queueReports'][_0x1f6804[_0xb387('0x4d')]]))this[_0xb387('0x11')][_0x1f6804[_0xb387('0x4d')]]=[];if(_[_0xb387('0x75')](this['channels'][_0x1f6804[_0xb387('0x4d')]]))this[_0xb387('0x13')][_0x1f6804[_0xb387('0x4d')]]={};var _0x4e6420=new QueueReport();_0x4e6420[_0xb387('0x4f')]=_0x1f6804[_0xb387('0x69')];_0x4e6420['type']=this['voiceQueues'][_0x4e6420[_0xb387('0x4f')]]&&this[_0xb387('0x15')][_0x4e6420[_0xb387('0x4f')]][_0xb387('0x76')]?this[_0xb387('0x15')][_0x4e6420[_0xb387('0x4f')]][_0xb387('0x76')]||_0xb387('0x56'):_0xb387('0x56');_0x4e6420[_0xb387('0x69')]=_0x1f6804[_0xb387('0x69')];_0x4e6420[_0xb387('0x77')]=moment()[_0xb387('0x4e')]('YYYY-MM-DD\x20HH:mm:ss');_0x4e6420[_0xb387('0x78')]=_0x1f6804['position'];_0x4e6420[_0xb387('0x79')]=_0x1f6804[_0xb387('0x79')];_0x4e6420[_0xb387('0x4d')]=_0x1f6804['uniqueid'];_0x4e6420[_0xb387('0x7a')]=this['channels'][_0x1f6804[_0xb387('0x4d')]][_0xb387('0x7a')];logger['info'](_0xb387('0x7b'),_0x4e6420[_0xb387('0x4f')],_0x4e6420[_0xb387('0x76')]);_['merge'](_0x4e6420,_['pick'](_0x1f6804,_[_0xb387('0x7c')](_0x4e6420)));this[_0xb387('0x11')][_0x1f6804['uniqueid']][_0xb387('0x7d')](_0x4e6420);this[_0xb387('0x13')][_0x1f6804['uniqueid']]=_0x4e6420;this['emitVoiceQueueChannelSave'](_0x4e6420,_0xb387('0x1d'));}}catch(_0x5e8e93){logger[_0xb387('0x41')](_0xb387('0x74'),_0x1f6804[_0xb387('0x4d')],util['inspect'](_0x5e8e93,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xb387('0xd')][_0xb387('0x20')]=function(_0x2bbcae){try{if(this[_0xb387('0x65')](_0x2bbcae)){logger[_0xb387('0x4b')](_0xb387('0x7e'),_0x2bbcae['uniqueid'],util['inspect'](_0x2bbcae,{'showHidden':![],'depth':null}));if(this[_0xb387('0x11')][_0x2bbcae[_0xb387('0x4d')]]){var _0x207ab3=_[_0xb387('0x7f')](this[_0xb387('0x11')][_0x2bbcae[_0xb387('0x4d')]]);_0x207ab3[_0xb387('0x80')]=![];_0x207ab3[_0xb387('0x81')]=null;_0x207ab3['holdtime']=_0x2bbcae['holdtime'];_0x207ab3[_0xb387('0x82')]=_0x2bbcae[_0xb387('0x82')];_0x207ab3[_0xb387('0x1f')]=!![];_0x207ab3[_0xb387('0x83')]=moment()[_0xb387('0x4e')](_0xb387('0x84'));_0x207ab3[_0xb387('0x85')]=_0xb387('0x86');_0x207ab3[_0xb387('0x87')]=null;logger[_0xb387('0x6a')]('[voiceQueueReport][queuecallerabandon]\x20name:%s\x20type:%s',_0x207ab3['name'],_0x207ab3[_0xb387('0x76')]);this[_0xb387('0x13')][_0x2bbcae[_0xb387('0x4d')]]=_0x207ab3;this[_0xb387('0x47')](_0x207ab3,_0xb387('0x1f'));}}}catch(_0x1249dd){logger['error']('[%s][voiceQueueReport][queuecallerabandon]',_0x2bbcae[_0xb387('0x4d')],util[_0xb387('0x42')](_0x1249dd,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xb387('0xd')][_0xb387('0x21')]=function(_0x1f1277){try{if(this[_0xb387('0x65')](_0x1f1277)){logger[_0xb387('0x4b')]('[%s][voiceQueueReport][queuecallerleave]',_0x1f1277[_0xb387('0x4d')],util[_0xb387('0x42')](_0x1f1277,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x1f1277[_0xb387('0x4d')]]){var _0x475336=_[_0xb387('0x7f')](this[_0xb387('0x11')][_0x1f1277[_0xb387('0x4d')]]);_0x475336[_0xb387('0x88')]=moment()[_0xb387('0x4e')]('YYYY-MM-DD\x20HH:mm:ss');_0x475336[_0xb387('0x89')]=_0x1f1277[_0xb387('0x89')];_0x475336[_0xb387('0x8a')]=_0x1f1277[_0xb387('0x8a')];logger['info'](_0xb387('0x8b'),_0x475336[_0xb387('0x4f')],_0x475336[_0xb387('0x76')],_0x1f1277['connectedlinenum'],_0x1f1277[_0xb387('0x8a')]);this[_0xb387('0x13')][_0x1f1277[_0xb387('0x4d')]]=_0x475336;this[_0xb387('0x4a')](_0x475336,_0xb387('0x8c'));}}}catch(_0x25313b){logger[_0xb387('0x41')]('[%s][voiceQueueReport][queuecallerleave]',_0x1f1277['uniqueid'],util[_0xb387('0x42')](_0x25313b,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0xb387('0x8d')]=function(_0x331448){try{if(this['isNotNull'](_0x331448)){logger[_0xb387('0x4b')](_0xb387('0x8e'),_0x331448[_0xb387('0x4d')],util[_0xb387('0x42')](_0x331448,{'showHidden':![],'depth':null}));if(this[_0xb387('0x11')][_0x331448[_0xb387('0x4d')]]){var _0x1b80a3=_[_0xb387('0x7f')](this[_0xb387('0x11')][_0x331448['uniqueid']]);_0x1b80a3[_0xb387('0x80')]=!![];_0x1b80a3[_0xb387('0x85')]=_0xb387('0x8f');logger[_0xb387('0x6a')](_0xb387('0x90'),_0x1b80a3[_0xb387('0x4f')],_0x1b80a3['type']);}}}catch(_0x483020){logger[_0xb387('0x41')](_0xb387('0x8e'),_0x331448[_0xb387('0x4d')],util[_0xb387('0x42')](_0x483020,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xb387('0xd')]['syncAgentComplete']=function(_0x3b4e5f){try{if(this['isNotNull'](_0x3b4e5f)){logger['debug'](_0xb387('0x91'),_0x3b4e5f[_0xb387('0x4d')],util[_0xb387('0x42')](_0x3b4e5f,{'showHidden':![],'depth':null}));if(this[_0xb387('0x11')][_0x3b4e5f[_0xb387('0x4d')]]){var _0x326b2d=_[_0xb387('0x7f')](this[_0xb387('0x11')][_0x3b4e5f[_0xb387('0x4d')]]);_0x326b2d[_0xb387('0x1f')]=![];_0x326b2d['queuecallerabandonAt']=null;_0x326b2d[_0xb387('0x92')]=!![];_0x326b2d[_0xb387('0x87')]=_0x3b4e5f[_0xb387('0x93')];_0x326b2d[_0xb387('0x94')]=_0x3b4e5f['holdtime'];_0x326b2d[_0xb387('0x80')]=!![];_0x326b2d[_0xb387('0x95')]=![];_0x326b2d[_0xb387('0x96')]=null;if(!_0x326b2d[_0xb387('0x97')]){if(_0x3b4e5f[_0xb387('0x98')]==_0xb387('0x97')){_0x326b2d['queuecallerexitreason']=_0xb387('0x99');logger[_0xb387('0x6a')](_0xb387('0x9a'),_0x326b2d[_0xb387('0x4f')],_0x326b2d[_0xb387('0x76')]);}else{if(_[_0xb387('0x9b')](_0x3b4e5f['channel']['toLowerCase'](),'local/')){if(this[_0xb387('0x11')][_0x3b4e5f[_0xb387('0x9c')]]){var _0xdf8a05=_[_0xb387('0x7f')](this[_0xb387('0x11')][_0x3b4e5f['linkedid']]);_0xdf8a05[_0xb387('0x80')]=![];_0xdf8a05[_0xb387('0x95')]=!![];_0xdf8a05[_0xb387('0x96')]=moment(_0x326b2d[_0xb387('0x77')])[_0xb387('0x9d')](_0x3b4e5f[_0xb387('0x94')],_0xb387('0x9e'))[_0xb387('0x4e')](_0xb387('0x84'));_0xdf8a05[_0xb387('0x85')]='FORWARDTRANSFER';_0xdf8a05[_0xb387('0x97')]=!![];_0xdf8a05[_0xb387('0x9f')]=_0xb387('0xa0');_0xdf8a05[_0xb387('0xa1')]=_0x3b4e5f[_0xb387('0xa2')];_0xdf8a05[_0xb387('0xa3')]=_0x3b4e5f[_0xb387('0x4d')];logger['info'](_0xb387('0xa4'),_0xdf8a05[_0xb387('0x4f')],_0xdf8a05['type']);var _0x57438a=this[_0xb387('0x11')][_0x3b4e5f['linkedid']];this['queueReports'][_0x3b4e5f[_0xb387('0x9c')]]=this[_0xb387('0x11')][_0x3b4e5f[_0xb387('0x4d')]];this['queueReports'][_0x3b4e5f[_0xb387('0x4d')]]=_0x57438a;}}else{_0x326b2d[_0xb387('0x85')]='COMPLETEDBY'+_0x3b4e5f[_0xb387('0x98')][_0xb387('0xa5')]();logger['info'](_0xb387('0xa6'),_0x326b2d[_0xb387('0x4f')],_0x326b2d[_0xb387('0x76')],_0x326b2d['queuecallerexitreason']);}}}this['channels'][_0x3b4e5f[_0xb387('0x4d')]]=_0x326b2d;this[_0xb387('0x47')](_0x326b2d,_0xb387('0x22'));}}}catch(_0x409579){logger[_0xb387('0x41')]('[%s][voiceQueueReport][agentcomplete]',_0x3b4e5f[_0xb387('0x4d')],util[_0xb387('0x42')](_0x409579,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype']['syncVarSet']=function(_0x55f90a){try{if(this[_0xb387('0x65')](_0x55f90a)){logger[_0xb387('0x4b')](_0xb387('0xa7'),_0x55f90a['uniqueid'],util[_0xb387('0x42')](_0x55f90a,{'showHidden':![],'depth':null}));this[_0xb387('0xa8')](_0x55f90a[_0xb387('0x4d')],_[_0xb387('0x7c')](_0x55f90a[_0xb387('0xa9')])[0x0],_0x55f90a[_0xb387('0xaa')]);if(this[_0xb387('0x11')][_0x55f90a[_0xb387('0x4d')]]){var _0x3bff12=_[_0xb387('0x7f')](this[_0xb387('0x11')][_0x55f90a['uniqueid']]);if(_0x3bff12){if(this[_0xb387('0x65')](_0x55f90a['variable'])&&this[_0xb387('0x65')](_0x55f90a[_0xb387('0xa9')]['queuestatus'])){switch(_0x55f90a[_0xb387('0xaa')]){case _0xb387('0xab'):_0x3bff12[_0xb387('0x95')]=![];_0x3bff12[_0xb387('0x96')]=null;break;case _0xb387('0xac'):_0x3bff12[_0xb387('0xad')]=_0xb387('0xae');_0x3bff12[_0xb387('0x95')]=!![];_0x3bff12[_0xb387('0x96')]=moment()[_0xb387('0x4e')]('YYYY-MM-DD\x20HH:mm:ss');_0x3bff12[_0xb387('0x88')]=moment()[_0xb387('0x4e')](_0xb387('0x84'));logger['debug'](_0xb387('0xaf'),_0x55f90a['uniqueid'],util[_0xb387('0x42')](_0x3bff12,{'showHidden':![],'depth':null}));ami[_0xb387('0x49')]('custom:timeout',_0x3bff12);break;default:_0x3bff12[_0xb387('0x95')]=!![];_0x3bff12['queuecallerexitAt']=moment()[_0xb387('0x4e')]('YYYY-MM-DD\x20HH:mm:ss');_0x3bff12['queuecallerleaveAt']=moment()[_0xb387('0x4e')]('YYYY-MM-DD\x20HH:mm:ss');}_0x3bff12[_0xb387('0x1f')]=![];_0x3bff12['queuecallerabandonAt']=null;_0x3bff12[_0xb387('0x85')]=_0x55f90a[_0xb387('0xaa')];this[_0xb387('0x13')][_0x55f90a[_0xb387('0x4d')]]=_0x3bff12;this['emitVoiceQueueChannelRemove'](_0x3bff12,_0xb387('0x25'));}else if(this[_0xb387('0x65')](_0x55f90a[_0xb387('0xa9')])&&this[_0xb387('0x65')](_0x55f90a[_0xb387('0xa9')][_0xb387('0xb0')])){if(!_0x3bff12[_0xb387('0x1f')]){_0x3bff12[_0xb387('0x95')]=!![];_0x3bff12[_0xb387('0x96')]=moment()['format'](_0xb387('0x84'));_0x3bff12[_0xb387('0x85')]='EXITWITHKEY';_0x3bff12[_0xb387('0x88')]=moment()[_0xb387('0x4e')](_0xb387('0x84'));this[_0xb387('0x13')][_0x55f90a[_0xb387('0x4d')]]=_0x3bff12;}}logger['info'](_0xb387('0xb1'),_0x55f90a[_0xb387('0x4d')],_0x3bff12[_0xb387('0x4f')],_0x3bff12[_0xb387('0x76')],_[_0xb387('0x7c')](_0x55f90a[_0xb387('0xa9')])[0x0],_0x55f90a[_0xb387('0xaa')]);_0x3bff12[_0xb387('0x18')]=this[_0xb387('0x18')][_0x55f90a[_0xb387('0x4d')]];}}}}catch(_0x1b28d2){logger[_0xb387('0x41')]('[%s][voiceQueueReport][varset]',_0x55f90a[_0xb387('0x4d')],util[_0xb387('0x42')](_0x1b28d2,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xb387('0xd')][_0xb387('0xa8')]=function(_0x2e9a0e,_0x4dce5a,_0x43a016){var _0x1e03df=['rtpaudioqos',_0xb387('0xb2'),'rtpaudioqosjitter',_0xb387('0xb3'),_0xb387('0xb4'),_0xb387('0xb5'),_0xb387('0xb6'),_0xb387('0xb7'),_0xb387('0xb8'),'sipuri',_0xb387('0xb9'),_0xb387('0xba'),_0xb387('0xbb'),'memberdynamic','memberinterface',_0xb387('0xbc'),_0xb387('0x93'),_0xb387('0xbd'),'memberrealtime'];if(!_['isNil'](_0x4dce5a)&&!_[_0xb387('0xbe')](_0x1e03df,_0x4dce5a)){if(_[_0xb387('0x75')](this[_0xb387('0x18')][_0x2e9a0e])){this[_0xb387('0x18')][_0x2e9a0e]={};}this[_0xb387('0x18')][_0x2e9a0e][_0x4dce5a]=_0x43a016;}};VoiceQueueReport[_0xb387('0xd')][_0xb387('0x27')]=function(_0x5b3275){try{if(this[_0xb387('0x65')](_0x5b3275)){logger['debug']('[%s][voiceQueueReport][hangup]',_0x5b3275[_0xb387('0x4d')],util[_0xb387('0x42')](_0x5b3275,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x5b3275['uniqueid']]){for(var _0x523a0a=0x0,_0x30ddf7={};_0x523a0a<this[_0xb387('0x11')][_0x5b3275[_0xb387('0x4d')]][_0xb387('0xbf')];_0x523a0a+=0x1){_0x30ddf7=this['queueReports'][_0x5b3275[_0xb387('0x4d')]][_0x523a0a];if(this[_0xb387('0x15')][_0x30ddf7[_0xb387('0x69')]]){if(_0x30ddf7[_0xb387('0x95')]&&_0x30ddf7[_0xb387('0x97')]!=!![]){this[_0xb387('0x15')][_0x30ddf7['queue']][_0xb387('0x5d')]+=0x1;}if(_0x30ddf7[_0xb387('0x1f')]){this[_0xb387('0x15')][_0x30ddf7[_0xb387('0x69')]][_0xb387('0xc0')]+=0x1;}this[_0xb387('0x15')][_0x30ddf7[_0xb387('0x69')]][_0xb387('0x5b')]+=moment(_0x30ddf7[_0xb387('0x88')])[_0xb387('0xc1')](_0x30ddf7[_0xb387('0x77')],_0xb387('0x9e'))||0x0;if(_0x523a0a===this[_0xb387('0x11')][_0x5b3275['uniqueid']][_0xb387('0xbf')]-0x1){this[_0xb387('0x15')][_0x30ddf7[_0xb387('0x69')]][_0xb387('0xc2')]+=moment()[_0xb387('0xc3')](0x0)[_0xb387('0xc1')](_0x30ddf7[_0xb387('0x77')],_0xb387('0x9e'));this[_0xb387('0x15')][_0x30ddf7[_0xb387('0x69')]][_0xb387('0x5c')]+=0x1;if(_0x30ddf7[_0xb387('0x80')]){this[_0xb387('0x15')][_0x30ddf7[_0xb387('0x69')]][_0xb387('0xc4')]+=0x1;this[_0xb387('0x15')][_0x30ddf7['queue']][_0xb387('0x5a')]+=moment()[_0xb387('0xc3')](0x0)[_0xb387('0xc1')](_0x30ddf7[_0xb387('0x88')],_0xb387('0x9e'));_0x30ddf7[_0xb387('0x81')]=moment()[_0xb387('0x4e')](_0xb387('0x84'));_0x30ddf7['queuecallerexit']=![];_0x30ddf7[_0xb387('0x96')]=null;}if(_0x30ddf7[_0xb387('0x95')]&&_0x30ddf7[_0xb387('0x97')]!=!![]){_0x30ddf7[_0xb387('0xad')]=_0xb387('0x5d');logger[_0xb387('0x4b')](_0xb387('0xc5'),_0x5b3275[_0xb387('0x4d')],util[_0xb387('0x42')](_0x30ddf7,{'showHidden':![],'depth':null}));ami[_0xb387('0x49')](_0xb387('0xc6'),_0x30ddf7);}if(_0x30ddf7[_0xb387('0x1f')]){_0x30ddf7['lastevent']=_0xb387('0xc0');logger[_0xb387('0x4b')](_0xb387('0xc7'),_0x5b3275[_0xb387('0x4d')],util[_0xb387('0x42')](_0x30ddf7,{'showHidden':![],'depth':null}));ami[_0xb387('0x49')](_0xb387('0xc8'),_0x30ddf7);}}else{this[_0xb387('0x15')][_0x30ddf7['queue']][_0xb387('0xc2')]+=this[_0xb387('0x15')][_0x30ddf7[_0xb387('0x69')]][_0xb387('0x5b')];}logger[_0xb387('0x6a')](_0xb387('0xc9'),_0x5b3275[_0xb387('0x4d')],_0x30ddf7['name'],_0x30ddf7['type'],_0x5b3275['cause-txt']);this[_0xb387('0x13')][_0x5b3275['uniqueid']]=_0x30ddf7;this['emitVoiceQueueChannelRemove'](_0x30ddf7,_0xb387('0x26'));this[_0xb387('0x70')](this['voiceQueues'][_0x30ddf7[_0xb387('0x69')]],_0xb387('0x26'));}}logger['debug']('[%s][voiceQueueReport][hangup]\x20sending\x20voiceQueueReport\x20event:',_0x5b3275[_0xb387('0x4d')],util[_0xb387('0x42')](this[_0xb387('0x11')][_0x5b3275[_0xb387('0x4d')]],{'showHidden':![],'depth':null}));ami[_0xb387('0x49')]('custom:voiceQueueReport',this[_0xb387('0x11')][_0x5b3275[_0xb387('0x4d')]]);delete this[_0xb387('0x11')][_0x5b3275[_0xb387('0x4d')]];delete this[_0xb387('0x13')][_0x5b3275[_0xb387('0x4d')]];}if(this[_0xb387('0x18')][_0x5b3275[_0xb387('0x4d')]]){delete this[_0xb387('0x18')][_0x5b3275[_0xb387('0x4d')]];}}}catch(_0x244ad3){logger[_0xb387('0x41')]('[%s][voiceQueueReport][hangup]',_0x5b3275[_0xb387('0x4d')],util['inspect'](_0x244ad3,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xb387('0xd')][_0xb387('0x2f')]=function(_0x5861a7){try{if(this[_0xb387('0x65')](_0x5861a7)){logger[_0xb387('0x4b')](_0xb387('0xca'),_0x5861a7[_0xb387('0x4d')],util['inspect'](_0x5861a7,{'showHidden':![],'depth':null}));var _0x2d4e36;if(this[_0xb387('0x11')][_0x5861a7[_0xb387('0xcb')]]){_0x2d4e36=_[_0xb387('0x7f')](this[_0xb387('0x11')][_0x5861a7[_0xb387('0xcb')]]);_0x2d4e36[_0xb387('0xa1')]=_0x5861a7[_0xb387('0xcc')];_0x2d4e36['transferuniqueid']=_0x5861a7['secondtransfereruniqueid'];_0x2d4e36[_0xb387('0x85')]=_0xb387('0xcd');_0x2d4e36[_0xb387('0x97')]=!![];_0x2d4e36[_0xb387('0x9f')]=_0xb387('0xce');if(this['queueReports'][_0x5861a7[_0xb387('0xcf')]]){var _0xd1d013=this['queueReports'][_0x5861a7[_0xb387('0xcf')]];this[_0xb387('0x11')][_0x5861a7[_0xb387('0xcf')]]=this['queueReports'][_0x5861a7[_0xb387('0xcb')]];this[_0xb387('0x11')][_0x5861a7[_0xb387('0xcb')]]=_0xd1d013;var _0x4afb46=_[_0xb387('0x7f')](this[_0xb387('0x11')][_0x5861a7[_0xb387('0xcb')]]);_0x4afb46[_0xb387('0x3a')]=!![];}logger[_0xb387('0x6a')](_0xb387('0xd0'),_0x5861a7[_0xb387('0x4d')],_0x2d4e36[_0xb387('0x4f')],_0x2d4e36[_0xb387('0x76')],_0x2d4e36[_0xb387('0xa1')],_0x2d4e36[_0xb387('0xa3')]);}else if(this['queueReports'][_0x5861a7[_0xb387('0xd1')]]){_0x2d4e36=_[_0xb387('0x7f')](this[_0xb387('0x11')][_0x5861a7['transfertargetuniqueid']]);_0x2d4e36[_0xb387('0xa1')]=_0x5861a7['origtransfererexten'];_0x2d4e36[_0xb387('0xa3')]=_0x5861a7[_0xb387('0xd2')];_0x2d4e36[_0xb387('0x85')]=_0xb387('0xcd');_0x2d4e36[_0xb387('0x97')]=!![];_0x2d4e36['transfertype']=_0xb387('0xce');if(this[_0xb387('0x11')][_0x5861a7[_0xb387('0xd2')]]){var _0xd1d013=this[_0xb387('0x11')][_0x5861a7['origtransfereruniqueid']];this[_0xb387('0x11')][_0x5861a7[_0xb387('0xd2')]]=this['queueReports'][_0x5861a7[_0xb387('0xd1')]];this['queueReports'][_0x5861a7[_0xb387('0xd1')]]=_0xd1d013;var _0x4afb46=_[_0xb387('0x7f')](this['queueReports'][_0x5861a7['transfertargetuniqueid']]);_0x4afb46[_0xb387('0x3a')]=!![];}logger['info'](_0xb387('0xd0'),_0x5861a7[_0xb387('0x4d')],_0x2d4e36[_0xb387('0x4f')],_0x2d4e36[_0xb387('0x76')],_0x2d4e36[_0xb387('0xa1')],_0x2d4e36['transferuniqueid']);}}}catch(_0x5c6b3c){logger[_0xb387('0x41')]('[%s][voiceQueueReport][attendedtransfer]',_0x5861a7[_0xb387('0x4d')],util[_0xb387('0x42')](_0x5c6b3c,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xb387('0xd')][_0xb387('0xd3')]=function(_0x3572a7){try{if(this['isNotNull'](_0x3572a7)){logger[_0xb387('0x4b')](_0xb387('0xd4'),_0x3572a7[_0xb387('0x4d')],util[_0xb387('0x42')](_0x3572a7,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x3572a7[_0xb387('0xcb')]]){var _0x16f35e=_['last'](this[_0xb387('0x11')][_0x3572a7[_0xb387('0xcb')]]);_0x16f35e['queuecallerexitreason']='BLINDTRANSFER';_0x16f35e[_0xb387('0x97')]=!![];_0x16f35e[_0xb387('0x9f')]='BLIND';_0x16f35e[_0xb387('0xa1')]=_0x3572a7['extension'];_0x16f35e[_0xb387('0xa3')]=_0x3572a7[_0xb387('0xcb')];logger[_0xb387('0x6a')](_0xb387('0xd5'),_0x3572a7[_0xb387('0x4d')],_0x16f35e[_0xb387('0x4f')],_0x16f35e[_0xb387('0x76')],_0x16f35e[_0xb387('0xa1')],_0x16f35e['transferuniqueid']);this[_0xb387('0x27')]({'event':_0xb387('0xd6'),'uniqueid':_0x3572a7[_0xb387('0xcb')],'context':_0x3572a7[_0xb387('0xd7')],'channel':_0x3572a7[_0xb387('0xd8')]});}}}catch(_0x3cda40){logger['error']('[%s][voiceQueueReport][blindtransfer]',_0x3572a7[_0xb387('0x4d')],util[_0xb387('0x42')](_0x3cda40,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xb387('0xd')][_0xb387('0x2b')]=function(_0x576783){try{if(this[_0xb387('0x65')](_0x576783)){logger[_0xb387('0x4b')](_0xb387('0xd9'),_0x576783[_0xb387('0x4d')],util[_0xb387('0x42')](_0x576783,{'showHidden':![],'depth':null}));if(this[_0xb387('0x11')][_0x576783['uniqueid']]){var _0x232303=_[_0xb387('0x7f')](this[_0xb387('0x11')][_0x576783[_0xb387('0x4d')]]);if(!_[_0xb387('0x3b')](_0x232303[_0xb387('0x88')])){_0x232303[_0xb387('0xda')]=moment()['format'](_0xb387('0x84'));logger[_0xb387('0x6a')](_0xb387('0xdb'),_0x576783[_0xb387('0x4d')],_0x232303[_0xb387('0xda')]);}}}}catch(_0x2118be){logger[_0xb387('0x41')]('[%s][voiceQueueReport][musiconholdstart]',_0x576783[_0xb387('0x4d')],util[_0xb387('0x42')](_0x2118be,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xb387('0xd')][_0xb387('0x2d')]=function(_0x433faf){try{if(this[_0xb387('0x65')](_0x433faf)){logger[_0xb387('0x4b')](_0xb387('0xdc'),_0x433faf[_0xb387('0x4d')],util[_0xb387('0x42')](_0x433faf,{'showHidden':![],'depth':null}));if(this[_0xb387('0x11')][_0x433faf[_0xb387('0x4d')]]){var _0x16bfcb=_[_0xb387('0x7f')](this['queueReports'][_0x433faf['uniqueid']]);if(!_['isNil'](_0x16bfcb[_0xb387('0xda')])){_0x16bfcb[_0xb387('0xdd')]+=moment()[_0xb387('0xc3')](0x0)[_0xb387('0xc1')](_0x16bfcb[_0xb387('0xda')],_0xb387('0x9e'));logger['info'](_0xb387('0xde'),_0x433faf[_0xb387('0x4d')],_0x16bfcb['mohtime']);delete _0x16bfcb[_0xb387('0xda')];}}}}catch(_0x3ff4da){logger[_0xb387('0x41')]('[%s][voiceQueueReport][musiconholdstop]',_0x433faf[_0xb387('0x4d')],util[_0xb387('0x42')](_0x3ff4da,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xb387('0xd')]['syncNewExten']=function(_0x3b98b3){try{if(this[_0xb387('0x65')](_0x3b98b3)){logger[_0xb387('0x4b')](_0xb387('0xdf'),_0x3b98b3['uniqueid'],util[_0xb387('0x42')](_0x3b98b3,{'showHidden':![],'depth':null}));if(_0x3b98b3[_0xb387('0xe0')][_0xb387('0xe1')]()===_0xb387('0xe2')){_0x3b98b3[_0xb387('0xe3')]=_0x3b98b3[_0xb387('0xe4')]&&_0x3b98b3['appdata']['startsWith'](_0xb387('0xe5'))?_0x3b98b3[_0xb387('0xe4')]:(_0x3b98b3[_0xb387('0xe4')]||_0x3b98b3[_0xb387('0xe3')])[_0xb387('0xe1')]();if(_[_0xb387('0x9b')](_0x3b98b3['applicationdata'][_0xb387('0xe1')](),_0xb387('0xe6'))){logger[_0xb387('0x6a')](_0xb387('0xe7'),_0x3b98b3[_0xb387('0x4d')],_0x3b98b3[_0xb387('0xe0')],_0x3b98b3[_0xb387('0xe3')]);if(_[_0xb387('0x75')](this[_0xb387('0x13')][_0x3b98b3[_0xb387('0x4d')]]))this['channels'][_0x3b98b3[_0xb387('0x4d')]]={};var _0x276679=_0x3b98b3['applicationdata'][_0xb387('0xe8')]('=');var _0x3af069=_0x276679[0x0][_0xb387('0xe1')]()[_0xb387('0xe9')](/cdr\((.*)\)/);if(_0x3af069)this[_0xb387('0x13')][_0x3b98b3[_0xb387('0x4d')]][_0x3af069[0x1]]=_0x276679[0x1];}}}}catch(_0x3acd94){logger[_0xb387('0x41')](_0xb387('0xea'),_0x3b98b3[_0xb387('0x4d')],util[_0xb387('0x42')](_0x3acd94,{'showHidden':![],'depth':null}));}};module[_0xb387('0xeb')]=VoiceQueueReport;
\ No newline at end of file
index 277dd0e..1a5126b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x072f=['createHistory','queue','CreateReportAgentPreview','../client'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x072f,0x1db));var _0xf072=function(_0x11f790,_0x50fe56){_0x11f790=_0x11f790-0x0;var _0x2593a2=_0x072f[_0x11f790];return _0x2593a2;};'use strict';var client=require(_0xf072('0x0'));exports[_0xf072('0x1')]=function(_0x486dfa){return function(){_0x486dfa['campaign']=_0x486dfa[_0xf072('0x2')];return client['Request'](_0xf072('0x3'),{'body':_0x486dfa,'log':_0xf072('0x3')});};};
\ No newline at end of file
+var _0x1011=['../client','createHistory','campaign','queue','Request','CreateReportAgentPreview'];(function(_0x565ed7,_0x398228){var _0x183ad7=function(_0x5a43d7){while(--_0x5a43d7){_0x565ed7['push'](_0x565ed7['shift']());}};_0x183ad7(++_0x398228);}(_0x1011,0x132));var _0x1101=function(_0x581e01,_0x241cbd){_0x581e01=_0x581e01-0x0;var _0x558b54=_0x1011[_0x581e01];return _0x558b54;};'use strict';var client=require(_0x1101('0x0'));exports[_0x1101('0x1')]=function(_0x2ea062){return function(){_0x2ea062[_0x1101('0x2')]=_0x2ea062[_0x1101('0x3')];return client[_0x1101('0x4')](_0x1101('0x5'),{'body':_0x2ea062,'log':'CreateReportAgentPreview'});};};
\ No newline at end of file
index 64ede5e..04b6a7e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4808=['../client','create','Request','CreateAttachment'];(function(_0x20b5f4,_0x4b9afb){var _0x17be69=function(_0xe86d70){while(--_0xe86d70){_0x20b5f4['push'](_0x20b5f4['shift']());}};_0x17be69(++_0x4b9afb);}(_0x4808,0x1cc));var _0x8480=function(_0x5d2803,_0xf375bd){_0x5d2803=_0x5d2803-0x0;var _0xdcad2c=_0x4808[_0x5d2803];return _0xdcad2c;};'use strict';var client=require(_0x8480('0x0'));exports[_0x8480('0x1')]=function(_0x119b86){return client[_0x8480('0x2')](_0x8480('0x3'),{'body':_0x119b86,'log':_0x8480('0x3')});};
\ No newline at end of file
+var _0xcebc=['CreateAttachment','../client','Request'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0xcebc,0x76));var _0xcceb=function(_0x93268f,_0x30aa6f){_0x93268f=_0x93268f-0x0;var _0x32ab6d=_0xcebc[_0x93268f];return _0x32ab6d;};'use strict';var client=require(_0xcceb('0x0'));exports['create']=function(_0x3ea428){return client[_0xcceb('0x1')](_0xcceb('0x2'),{'body':_0x3ea428,'log':'CreateAttachment'});};
\ No newline at end of file
index c31c504..965f91e 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(_0x440e9b,_0x3d7a75){var _0x29b431=function(_0x8665f7){while(--_0x8665f7){_0x440e9b['push'](_0x440e9b['shift']());}};_0x29b431(++_0x3d7a75);}(_0x1261,0x144));var _0x1126=function(_0x62c958,_0x2bfdbc){_0x62c958=_0x62c958-0x0;var _0x57ec61=_0x1261[_0x62c958];return _0x57ec61;};'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 _0x5f2f=['dialOriginateTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineRetryFrequency','dialTimezone','dialGlobalInterval','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDSilenceThreshold','dialAMDMaximumWordLength','dialOrderByScheduledAt','dialPrefix','dialRandomLastDigitCallerIdNumber','Trunk','callerid','TrunkBackup','Interval','Intervals','interval','SquareProject','../client','getCampaigns','Request','GetCampaign','name','type','active','limitCalls'];(function(_0x134c2e,_0x3573c4){var _0x2825db=function(_0x2a574d){while(--_0x2a574d){_0x134c2e['push'](_0x134c2e['shift']());}};_0x2825db(++_0x3573c4);}(_0x5f2f,0x73));var _0xf5f2=function(_0x539ae4,_0x3a8360){_0x539ae4=_0x539ae4-0x0;var _0x191711=_0x5f2f[_0x539ae4];return _0x191711;};'use strict';var client=require(_0xf5f2('0x0'));exports[_0xf5f2('0x1')]=function(){return function(){return client[_0xf5f2('0x2')](_0xf5f2('0x3'),{'options':{'raw':![],'attributes':['id',_0xf5f2('0x4'),_0xf5f2('0x5'),_0xf5f2('0x6'),_0xf5f2('0x7'),'dialOriginateCallerIdName','dialOriginateCallerIdNumber',_0xf5f2('0x8'),_0xf5f2('0x9'),_0xf5f2('0xa'),_0xf5f2('0xb'),_0xf5f2('0xc'),_0xf5f2('0xd'),'dialNoAnswerRetryFrequency',_0xf5f2('0xe'),_0xf5f2('0xf'),_0xf5f2('0x10'),'dialDropMaxRetry',_0xf5f2('0x11'),_0xf5f2('0x12'),_0xf5f2('0x13'),'dialMachineMaxRetry',_0xf5f2('0x14'),'dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency',_0xf5f2('0x15'),_0xf5f2('0x16'),'dialAMDActive',_0xf5f2('0x17'),_0xf5f2('0x18'),_0xf5f2('0x19'),_0xf5f2('0x1a'),_0xf5f2('0x1b'),_0xf5f2('0x1c'),'dialAMDMaximumNumberOfWords',_0xf5f2('0x1d'),_0xf5f2('0x1e'),_0xf5f2('0x1f'),_0xf5f2('0x20'),_0xf5f2('0x21'),'dialCutDigit'],'include':[{'model':_0xf5f2('0x22'),'as':_0xf5f2('0x22'),'attributes':['id',_0xf5f2('0x4'),_0xf5f2('0x23'),_0xf5f2('0x6')]},{'model':_0xf5f2('0x22'),'as':_0xf5f2('0x24'),'attributes':['id',_0xf5f2('0x4'),_0xf5f2('0x23'),_0xf5f2('0x6')]},{'model':_0xf5f2('0x25'),'as':_0xf5f2('0x25'),'attributes':['id',_0xf5f2('0x4')],'include':[{'model':_0xf5f2('0x25'),'as':_0xf5f2('0x26'),'attributes':['id',_0xf5f2('0x4'),_0xf5f2('0x27')]}]},{'model':'SquareProject','as':_0xf5f2('0x28'),'attributes':['id',_0xf5f2('0x4')]}]},'log':'getCampaign'});};};
\ No newline at end of file
index 9bfedb7..20e5a73 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xddf6=['GetCmContact','createContact','CreateCmContact','getContacts'];(function(_0x5cc51f,_0x22c480){var _0x315a2f=function(_0x4f93bd){while(--_0x4f93bd){_0x5cc51f['push'](_0x5cc51f['shift']());}};_0x315a2f(++_0x22c480);}(_0xddf6,0x1a9));var _0x6ddf=function(_0x363f7c,_0x1eadd9){_0x363f7c=_0x363f7c-0x0;var _0x248bb2=_0xddf6[_0x363f7c];return _0x248bb2;};'use strict';var client=require('../client');exports[_0x6ddf('0x0')]=function(_0x221b8b){return function(){return client['Request'](_0x6ddf('0x1'),{'body':_0x221b8b,'log':_0x6ddf('0x1')});};};exports[_0x6ddf('0x2')]=function(_0xcdce2b){return function(){return client['Request'](_0x6ddf('0x3'),{'options':_0xcdce2b,'log':_0x6ddf('0x3')});};};
\ No newline at end of file
+var _0xc92b=['CreateCmContact','getContacts','Request','GetCmContact','../client','createContact'];(function(_0x518ccd,_0x21c5f8){var _0x629c34=function(_0x3716c7){while(--_0x3716c7){_0x518ccd['push'](_0x518ccd['shift']());}};_0x629c34(++_0x21c5f8);}(_0xc92b,0x17e));var _0xbc92=function(_0x469e13,_0x4f7213){_0x469e13=_0x469e13-0x0;var _0x1f1ed7=_0xc92b[_0x469e13];return _0x1f1ed7;};'use strict';var client=require(_0xbc92('0x0'));exports[_0xbc92('0x1')]=function(_0x1dabbb){return function(){return client['Request'](_0xbc92('0x2'),{'body':_0x1dabbb,'log':_0xbc92('0x2')});};};exports[_0xbc92('0x3')]=function(_0x2c8ac5){return function(){return client[_0xbc92('0x4')](_0xbc92('0x5'),{'options':_0x2c8ac5,'log':_0xbc92('0x5')});};};
\ No newline at end of file
index 4234c09..2c05ad9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x28e0=['format','priority','DESC','scheduledat','getContactDialerIvr','ASC','GetContactDialerIvr','moveContactManagedDialer','queue','MoveContactManagedDialer','countReScheduled','CountReScheduled','getContactPreview','User','Agent','name','VoiceQueue','Queue','unlockContact','GetContactRecallMe','db.CmHopper.UserId','lodash','getContacts','Request','GetCmHopper','CmContact','Contact','getCmHopper','UpdateCmHopper','YYYY-MM-DD\x20HH:mm:ss','rescheduleContact','ContactId','ListId','VoiceQueueId','CampaignId','getContactDialer','GetContactDialer'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0x28e0,0x1d1));var _0x028e=function(_0x1d80f4,_0x3f0f89){_0x1d80f4=_0x1d80f4-0x0;var _0x539207=_0x28e0[_0x1d80f4];return _0x539207;};'use strict';var client=require('../client');var moment=require('moment');var _=require(_0x028e('0x0'));exports[_0x028e('0x1')]=function(_0x242d7d,_0x37ea32){return function(){return client[_0x028e('0x2')](_0x028e('0x3'),{'options':{'where':{'VoiceQueueId':_0x242d7d},'include':[{'model':_0x028e('0x4'),'as':_0x028e('0x5')}],'limit':_0x37ea32,'raw':![]},'log':_0x028e('0x6')});};};exports['updateContacts']=function(_0x35b399,_0x492320,_0x3b5801){return function(){return client[_0x028e('0x2')](_0x028e('0x7'),{'body':_0x35b399,'options':{'where':{'VoiceQueueId':_0x492320,'scheduledat':{'$lte':moment()['format'](_0x028e('0x8'))}},'limit':_0x3b5801},'log':_0x028e('0x7')});};};exports[_0x028e('0x9')]=function(_0x2117fb){return function(){return client[_0x028e('0x2')]('UpdateCmHopper',{'body':_0x2117fb,'options':{'where':{'ContactId':_0x2117fb[_0x028e('0xa')],'ListId':_0x2117fb[_0x028e('0xb')],'VoiceQueueId':_0x2117fb[_0x028e('0xc')],'CampaignId':_0x2117fb[_0x028e('0xd')]}},'log':_0x028e('0x9')});};};exports['destroyContact']=function(_0x446f9e,_0xdab51,_0x428a43){return function(){return client['Request']('DestroyCmHopper',{'options':{'where':{'VoiceQueueId':_0x446f9e,'ListId':_0xdab51,'ContactId':_0x428a43}},'log':'DestroyCmHopper'});};};exports[_0x028e('0xe')]=function(_0x730bd0,_0x5be6f3,_0x16a020,_0x447fd2){return function(){return client[_0x028e('0x2')](_0x028e('0xf'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x730bd0,'active':![],'scheduledat':{'$lte':moment()[_0x028e('0x10')](_0x028e('0x8'))},'$or':[{'UserId':null},{'UserId':{'$in':_0x5be6f3}}]},'order':[[_0x028e('0x11'),_0x028e('0x12')],[_0x028e('0x13'),_0x447fd2],['id','ASC']],'raw':!![],'limit':_0x16a020},'log':'GetContactDialer'});};};exports[_0x028e('0x14')]=function(_0x2722f0,_0x676b67,_0xd4e7ae){return function(){return client[_0x028e('0x2')](_0x028e('0xf'),{'body':{'active':!![]},'options':{'where':{'CampaignId':_0x2722f0,'active':![],'scheduledat':{'$lte':moment()[_0x028e('0x10')](_0x028e('0x8'))}},'include':[{'model':_0x028e('0x4'),'as':_0x028e('0x5')}],'order':[[_0x028e('0x11'),_0x028e('0x12')],[_0x028e('0x13'),_0xd4e7ae],['id',_0x028e('0x15')]],'raw':!![],'limit':_0x676b67},'log':_0x028e('0x16')});};};exports[_0x028e('0x17')]=function(_0x52e049,_0x2a2d5c){return function(){_0x52e049['campaign']=_0x52e049[_0x028e('0x18')];return client[_0x028e('0x2')](_0x028e('0x19'),{'body':_0x52e049,'options':{'where':{'ContactId':_0x52e049[_0x028e('0xa')],'ListId':_0x52e049['ListId'],'VoiceQueueId':_0x52e049[_0x028e('0xc')],'CampaignId':_0x52e049[_0x028e('0xd')],'active':_0x2a2d5c?undefined:!![]}},'log':_0x028e('0x19')});};};exports[_0x028e('0x1a')]=function(_0x2eb731){return function(){return client[_0x028e('0x2')](_0x028e('0x1b'),{'options':{'where':{'VoiceQueueId':_0x2eb731['id']?_0x2eb731['id']||null:null}},'log':'countReScheduled'});};};exports[_0x028e('0x1c')]=function(_0x5aeef7){return function(){return client[_0x028e('0x2')]('GetCmHopperPreview',{'options':{'where':{'id':_0x5aeef7},'include':[{'model':_0x028e('0x4'),'as':'Contact'},{'model':_0x028e('0x1d'),'as':_0x028e('0x1e'),'attributes':['id',_0x028e('0x1f')]},{'model':_0x028e('0x20'),'as':_0x028e('0x21'),'attributes':['id',_0x028e('0x1f')]}],'raw':!![]},'log':_0x028e('0x6')});};};exports[_0x028e('0x22')]=function(_0x2f91d5,_0x3b3c98,_0x3dd381){return function(){return client[_0x028e('0x2')](_0x028e('0x7'),{'body':_0x2f91d5,'options':{'where':{'id':_0x3b3c98},'limit':_0x3dd381},'log':_0x028e('0x7')});};};exports['getContactRecallMe']=function(_0x29ceb2,_0x1e8f63){return function(){return client[_0x028e('0x2')](_0x028e('0x23'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x29ceb2,'active':![],'recallme':!![],'scheduledat':{'$lte':moment()[_0x028e('0x10')](_0x028e('0x8'))},'UserId':{'$in':_0x1e8f63}},'order':[[_0x028e('0x11'),_0x028e('0x12')],[_0x028e('0x13'),_0x028e('0x12')],['id','ASC']],'include':[{'model':_0x028e('0x4'),'as':_0x028e('0x5')},{'model':_0x028e('0x1d'),'as':'Agent','attributes':['id',_0x028e('0x1f'),'voicePause']}],'group':_0x028e('0x24'),'raw':!![]},'log':_0x028e('0xf')});};};
\ No newline at end of file
+var _0x1053=['DESC','ASC','GetContactDialerIvr','moveContactManagedDialer','campaign','queue','ListId','VoiceQueueId','MoveContactManagedDialer','countReScheduled','getContactPreview','GetCmHopperPreview','Agent','VoiceQueue','Queue','name','getCmHopper','unlockContact','getContactRecallMe','GetContactRecallMe','User','voicePause','db.CmHopper.UserId','moment','lodash','getContacts','GetCmHopper','CmContact','Contact','Request','UpdateCmHopper','format','rescheduleContact','ContactId','CampaignId','DestroyCmHopper','GetContactDialer','scheduledat','getContactDialerIvr','YYYY-MM-DD\x20HH:mm:ss','priority'];(function(_0x4c2a65,_0x354657){var _0x5b2253=function(_0x387de9){while(--_0x387de9){_0x4c2a65['push'](_0x4c2a65['shift']());}};_0x5b2253(++_0x354657);}(_0x1053,0x1b1));var _0x3105=function(_0x28d231,_0x55888a){_0x28d231=_0x28d231-0x0;var _0x3814c5=_0x1053[_0x28d231];return _0x3814c5;};'use strict';var client=require('../client');var moment=require(_0x3105('0x0'));var _=require(_0x3105('0x1'));exports[_0x3105('0x2')]=function(_0x34152c,_0xccda86){return function(){return client['Request'](_0x3105('0x3'),{'options':{'where':{'VoiceQueueId':_0x34152c},'include':[{'model':_0x3105('0x4'),'as':_0x3105('0x5')}],'limit':_0xccda86,'raw':![]},'log':'getCmHopper'});};};exports['updateContacts']=function(_0x19f1a2,_0x54ce09,_0x3424e4){return function(){return client[_0x3105('0x6')](_0x3105('0x7'),{'body':_0x19f1a2,'options':{'where':{'VoiceQueueId':_0x54ce09,'scheduledat':{'$lte':moment()[_0x3105('0x8')]('YYYY-MM-DD\x20HH:mm:ss')}},'limit':_0x3424e4},'log':_0x3105('0x7')});};};exports[_0x3105('0x9')]=function(_0x58442a){return function(){return client[_0x3105('0x6')](_0x3105('0x7'),{'body':_0x58442a,'options':{'where':{'ContactId':_0x58442a[_0x3105('0xa')],'ListId':_0x58442a['ListId'],'VoiceQueueId':_0x58442a['VoiceQueueId'],'CampaignId':_0x58442a[_0x3105('0xb')]}},'log':_0x3105('0x9')});};};exports['destroyContact']=function(_0x53ad59,_0x1c2d66,_0x3f13ca){return function(){return client[_0x3105('0x6')](_0x3105('0xc'),{'options':{'where':{'VoiceQueueId':_0x53ad59,'ListId':_0x1c2d66,'ContactId':_0x3f13ca}},'log':_0x3105('0xc')});};};exports['getContactDialer']=function(_0x366893,_0x1309f3,_0x1e5c9c,_0x27ab4d){return function(){return client[_0x3105('0x6')](_0x3105('0xd'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x366893,'active':![],'scheduledat':{'$lte':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')},'$or':[{'UserId':null},{'UserId':{'$in':_0x1309f3}}]},'order':[['priority','DESC'],[_0x3105('0xe'),_0x27ab4d],['id','ASC']],'raw':!![],'limit':_0x1e5c9c},'log':_0x3105('0xd')});};};exports[_0x3105('0xf')]=function(_0x2d087f,_0x204dbc,_0x274ce9){return function(){return client[_0x3105('0x6')](_0x3105('0xd'),{'body':{'active':!![]},'options':{'where':{'CampaignId':_0x2d087f,'active':![],'scheduledat':{'$lte':moment()[_0x3105('0x8')](_0x3105('0x10'))}},'include':[{'model':_0x3105('0x4'),'as':'Contact'}],'order':[[_0x3105('0x11'),_0x3105('0x12')],[_0x3105('0xe'),_0x274ce9],['id',_0x3105('0x13')]],'raw':!![],'limit':_0x204dbc},'log':_0x3105('0x14')});};};exports[_0x3105('0x15')]=function(_0x396617,_0x569fce){return function(){_0x396617[_0x3105('0x16')]=_0x396617[_0x3105('0x17')];return client[_0x3105('0x6')]('MoveContactManagedDialer',{'body':_0x396617,'options':{'where':{'ContactId':_0x396617[_0x3105('0xa')],'ListId':_0x396617[_0x3105('0x18')],'VoiceQueueId':_0x396617[_0x3105('0x19')],'CampaignId':_0x396617[_0x3105('0xb')],'active':_0x569fce?undefined:!![]}},'log':_0x3105('0x1a')});};};exports[_0x3105('0x1b')]=function(_0x1d0b1e){return function(){return client['Request']('CountReScheduled',{'options':{'where':{'VoiceQueueId':_0x1d0b1e['id']?_0x1d0b1e['id']||null:null}},'log':'countReScheduled'});};};exports[_0x3105('0x1c')]=function(_0x265a57){return function(){return client['Request'](_0x3105('0x1d'),{'options':{'where':{'id':_0x265a57},'include':[{'model':_0x3105('0x4'),'as':'Contact'},{'model':'User','as':_0x3105('0x1e'),'attributes':['id','name']},{'model':_0x3105('0x1f'),'as':_0x3105('0x20'),'attributes':['id',_0x3105('0x21')]}],'raw':!![]},'log':_0x3105('0x22')});};};exports[_0x3105('0x23')]=function(_0x300578,_0x36e683,_0x13416b){return function(){return client['Request']('UpdateCmHopper',{'body':_0x300578,'options':{'where':{'id':_0x36e683},'limit':_0x13416b},'log':_0x3105('0x7')});};};exports[_0x3105('0x24')]=function(_0x48a65c,_0x1f6611){return function(){return client[_0x3105('0x6')](_0x3105('0x25'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x48a65c,'active':![],'recallme':!![],'scheduledat':{'$lte':moment()[_0x3105('0x8')]('YYYY-MM-DD\x20HH:mm:ss')},'UserId':{'$in':_0x1f6611}},'order':[[_0x3105('0x11'),'DESC'],[_0x3105('0xe'),_0x3105('0x12')],['id',_0x3105('0x13')]],'include':[{'model':_0x3105('0x4'),'as':_0x3105('0x5')},{'model':_0x3105('0x26'),'as':'Agent','attributes':['id','name',_0x3105('0x27')]}],'group':_0x3105('0x28'),'raw':!![]},'log':'GetContactDialer'});};};
\ No newline at end of file
index bf7e8d8..977dad9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x69d3=['phone','GetCmHopperBlackIvr','../client','checkIsBlackList','GetCmHopperBlack','VoiceQueueId','Request','CampaignId','Contact'];(function(_0x4c12ec,_0x2e9103){var _0x3ae42c=function(_0x5a728f){while(--_0x5a728f){_0x4c12ec['push'](_0x4c12ec['shift']());}};_0x3ae42c(++_0x2e9103);}(_0x69d3,0xda));var _0x369d=function(_0x18df9b,_0x52fa72){_0x18df9b=_0x18df9b-0x0;var _0x824abc=_0x69d3[_0x18df9b];return _0x824abc;};'use strict';var client=require(_0x369d('0x0'));exports[_0x369d('0x1')]=function(_0xf1a301){return function(){return client['Request'](_0x369d('0x2'),{'options':{'where':{'VoiceQueueId':_0xf1a301[_0x369d('0x3')],'phone':_0xf1a301['Contact']['phone']},'raw':![]},'log':_0x369d('0x2')});};};exports['checkIsBlackListIvr']=function(_0x56c175){return function(){return client[_0x369d('0x4')](_0x369d('0x2'),{'options':{'where':{'CampaignId':_0x56c175[_0x369d('0x5')],'phone':_0x56c175[_0x369d('0x6')][_0x369d('0x7')]},'raw':![]},'log':_0x369d('0x8')});};};
\ No newline at end of file
+var _0x0565=['checkIsBlackList','Request','GetCmHopperBlack','VoiceQueueId','Contact','phone','checkIsBlackListIvr','CampaignId','../client'];(function(_0x2f04ed,_0x585dc4){var _0x27b04d=function(_0x4519b2){while(--_0x4519b2){_0x2f04ed['push'](_0x2f04ed['shift']());}};_0x27b04d(++_0x585dc4);}(_0x0565,0xf2));var _0x5056=function(_0x39e84d,_0x11931d){_0x39e84d=_0x39e84d-0x0;var _0x1991bc=_0x0565[_0x39e84d];return _0x1991bc;};'use strict';var client=require(_0x5056('0x0'));exports[_0x5056('0x1')]=function(_0x2790a7){return function(){return client[_0x5056('0x2')](_0x5056('0x3'),{'options':{'where':{'VoiceQueueId':_0x2790a7[_0x5056('0x4')],'phone':_0x2790a7[_0x5056('0x5')][_0x5056('0x6')]},'raw':![]},'log':_0x5056('0x3')});};};exports[_0x5056('0x7')]=function(_0x554040){return function(){return client[_0x5056('0x2')](_0x5056('0x3'),{'options':{'where':{'CampaignId':_0x554040[_0x5056('0x8')],'phone':_0x554040[_0x5056('0x5')]['phone']},'raw':![]},'log':'GetCmHopperBlackIvr'});};};
\ No newline at end of file
index 037900b..7edf34b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x602e=['CreateCmHopperFinal','campaign'];(function(_0x376b45,_0x5964fb){var _0x2341b3=function(_0x5a7f01){while(--_0x5a7f01){_0x376b45['push'](_0x376b45['shift']());}};_0x2341b3(++_0x5964fb);}(_0x602e,0xc7));var _0xe602=function(_0x23b85e,_0x39b209){_0x23b85e=_0x23b85e-0x0;var _0x329756=_0x602e[_0x23b85e];return _0x329756;};'use strict';var client=require('../client');exports['createContact']=function(_0x14ce5a){return function(){_0x14ce5a[_0xe602('0x0')]=_0x14ce5a['queue'];return client['Request']('CreateCmHopperFinal',{'body':_0x14ce5a,'log':_0xe602('0x1')});};};
\ No newline at end of file
+var _0x8266=['queue','Request','../client'];(function(_0x54ff21,_0x949d1f){var _0x4362d0=function(_0x4e4f79){while(--_0x4e4f79){_0x54ff21['push'](_0x54ff21['shift']());}};_0x4362d0(++_0x949d1f);}(_0x8266,0xb9));var _0x6826=function(_0x28c5db,_0x5d9092){_0x28c5db=_0x28c5db-0x0;var _0x4ba19b=_0x8266[_0x28c5db];return _0x4ba19b;};'use strict';var client=require(_0x6826('0x0'));exports['createContact']=function(_0x276711){return function(){_0x276711['campaign']=_0x276711[_0x6826('0x1')];return client[_0x6826('0x2')]('CreateCmHopperFinal',{'body':_0x276711,'log':'CreateCmHopperFinal'});};};
\ No newline at end of file
index bf8d087..f0b283a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfc5b=['minutes','format','YYYY-MM-DD\x20HH:mm:ss','GetCmHopperHistory','getVoiceQueueHopperHistory','GetVoiceQueueHopperHistory','startOf','day','endOf','getCampaignHopperHistory','GetCampaignHopperHistory','../client','createHistory','campaign','queue','CreateCmHopperHistory','Request'];(function(_0x7c5834,_0xa96cfb){var _0x40becf=function(_0x579649){while(--_0x579649){_0x7c5834['push'](_0x7c5834['shift']());}};_0x40becf(++_0xa96cfb);}(_0xfc5b,0x12c));var _0xbfc5=function(_0x5040e3,_0x444f7f){_0x5040e3=_0x5040e3-0x0;var _0x7620=_0xfc5b[_0x5040e3];return _0x7620;};'use strict';var client=require(_0xbfc5('0x0'));var moment=require('moment');exports[_0xbfc5('0x1')]=function(_0x49843d){return function(){_0x49843d[_0xbfc5('0x2')]=_0x49843d[_0xbfc5('0x3')];return client['Request'](_0xbfc5('0x4'),{'body':_0x49843d,'log':_0xbfc5('0x4')});};};exports['avgHandleTime']=function(_0x32270b){return function(){return client[_0xbfc5('0x5')]('AvgHandleTime',{'options':{'where':{'endtime':{'$between':[moment()['subtract'](_0x32270b,_0xbfc5('0x6'))[_0xbfc5('0x7')](_0xbfc5('0x8')),moment()[_0xbfc5('0x7')](_0xbfc5('0x8'))]}},'raw':![]},'log':_0xbfc5('0x9')});};};exports[_0xbfc5('0xa')]=function(_0x5283d5){return function(){return client[_0xbfc5('0x5')](_0xbfc5('0xb'),{'options':{'where':{'createdAt':{'$between':[moment()[_0xbfc5('0xc')](_0xbfc5('0xd'))[_0xbfc5('0x7')](_0xbfc5('0x8')),moment()[_0xbfc5('0xe')](_0xbfc5('0xd'))[_0xbfc5('0x7')](_0xbfc5('0x8'))]},'campaigntype':_0xbfc5('0x3')},'raw':![]},'log':_0xbfc5('0xb')});};};exports[_0xbfc5('0xf')]=function(_0x18a700){return function(){return client[_0xbfc5('0x5')](_0xbfc5('0x10'),{'options':{'where':{'createdAt':{'$between':[moment()[_0xbfc5('0xc')](_0xbfc5('0xd'))[_0xbfc5('0x7')]('YYYY-MM-DD\x20HH:mm:ss'),moment()[_0xbfc5('0xe')](_0xbfc5('0xd'))[_0xbfc5('0x7')](_0xbfc5('0x8'))]},'campaigntype':'ivr'},'raw':![]},'log':'GetCampaignHopperHistory'});};};
\ No newline at end of file
+var _0x57b5=['CreateCmHopperHistory','avgHandleTime','AvgHandleTime','subtract','minutes','YYYY-MM-DD\x20HH:mm:ss','format','GetCmHopperHistory','getVoiceQueueHopperHistory','startOf','endOf','queue','GetVoiceQueueHopperHistory','getCampaignHopperHistory','GetCampaignHopperHistory','day','ivr','../client','moment','createHistory','Request'];(function(_0x435ea8,_0x25bd2d){var _0x277cf1=function(_0x4da767){while(--_0x4da767){_0x435ea8['push'](_0x435ea8['shift']());}};_0x277cf1(++_0x25bd2d);}(_0x57b5,0x122));var _0x557b=function(_0x58f363,_0x135c64){_0x58f363=_0x58f363-0x0;var _0xcb2c83=_0x57b5[_0x58f363];return _0xcb2c83;};'use strict';var client=require(_0x557b('0x0'));var moment=require(_0x557b('0x1'));exports[_0x557b('0x2')]=function(_0x3bf543){return function(){_0x3bf543['campaign']=_0x3bf543['queue'];return client[_0x557b('0x3')](_0x557b('0x4'),{'body':_0x3bf543,'log':_0x557b('0x4')});};};exports[_0x557b('0x5')]=function(_0x22def8){return function(){return client[_0x557b('0x3')](_0x557b('0x6'),{'options':{'where':{'endtime':{'$between':[moment()[_0x557b('0x7')](_0x22def8,_0x557b('0x8'))['format'](_0x557b('0x9')),moment()[_0x557b('0xa')](_0x557b('0x9'))]}},'raw':![]},'log':_0x557b('0xb')});};};exports[_0x557b('0xc')]=function(_0x1c4638){return function(){return client[_0x557b('0x3')]('GetVoiceQueueHopperHistory',{'options':{'where':{'createdAt':{'$between':[moment()[_0x557b('0xd')]('day')[_0x557b('0xa')](_0x557b('0x9')),moment()[_0x557b('0xe')]('day')[_0x557b('0xa')](_0x557b('0x9'))]},'campaigntype':_0x557b('0xf')},'raw':![]},'log':_0x557b('0x10')});};};exports[_0x557b('0x11')]=function(_0x11a7ec){return function(){return client[_0x557b('0x3')](_0x557b('0x12'),{'options':{'where':{'createdAt':{'$between':[moment()[_0x557b('0xd')]('day')[_0x557b('0xa')](_0x557b('0x9')),moment()[_0x557b('0xe')](_0x557b('0x13'))[_0x557b('0xa')](_0x557b('0x9'))]},'campaigntype':_0x557b('0x14')},'raw':![]},'log':_0x557b('0x12')});};};
\ No newline at end of file
index d01be3d..838e51f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a58=['Request','NotifyFaxAccount','../client','getFaxAccounts','GetFaxAccount','description','headerinfo','localstationid','minrate','maxrate','modem','faxdetect','t38timeout','TrunkId','ListId','key','Trunk','name','callerid','active','getFaxAccount','notify'];(function(_0x303ad2,_0x168464){var _0x26fa05=function(_0x22f47f){while(--_0x22f47f){_0x303ad2['push'](_0x303ad2['shift']());}};_0x26fa05(++_0x168464);}(_0x6a58,0x120));var _0x86a5=function(_0xbc346f,_0x3db5c0){_0xbc346f=_0xbc346f-0x0;var _0x9f9260=_0x6a58[_0xbc346f];return _0x9f9260;};'use strict';var client=require(_0x86a5('0x0'));exports[_0x86a5('0x1')]=function(){return function(){return client['Request'](_0x86a5('0x2'),{'options':{'raw':![],'attributes':['id','name',_0x86a5('0x3'),'ecm',_0x86a5('0x4'),_0x86a5('0x5'),_0x86a5('0x6'),_0x86a5('0x7'),_0x86a5('0x8'),'gateway',_0x86a5('0x9'),_0x86a5('0xa'),'tech',_0x86a5('0xb'),_0x86a5('0xc'),_0x86a5('0xd')],'include':[{'model':_0x86a5('0xe'),'as':_0x86a5('0xe'),'attributes':['id',_0x86a5('0xf'),_0x86a5('0x10'),_0x86a5('0x11')]}]},'log':_0x86a5('0x12')});};};exports[_0x86a5('0x13')]=function(_0x4ab550,_0x50d7e6){return client[_0x86a5('0x14')]('NotifyFaxAccount',{'account':{'id':_0x4ab550},'body':_0x50d7e6,'log':_0x86a5('0x15')});};
\ No newline at end of file
+var _0x63ef=['notify','NotifyFaxAccount','../client','getFaxAccounts','Request','name','description','localstationid','minrate','modem','gateway','t38timeout','tech','TrunkId','ListId','key','Trunk','callerid','active','getFaxAccount'];(function(_0x2ddfd9,_0x5877d0){var _0x2668f0=function(_0x70ad6f){while(--_0x70ad6f){_0x2ddfd9['push'](_0x2ddfd9['shift']());}};_0x2668f0(++_0x5877d0);}(_0x63ef,0x11a));var _0xf63e=function(_0x10df18,_0x13338c){_0x10df18=_0x10df18-0x0;var _0x1f9a1d=_0x63ef[_0x10df18];return _0x1f9a1d;};'use strict';var client=require(_0xf63e('0x0'));exports[_0xf63e('0x1')]=function(){return function(){return client[_0xf63e('0x2')]('GetFaxAccount',{'options':{'raw':![],'attributes':['id',_0xf63e('0x3'),_0xf63e('0x4'),'ecm','headerinfo',_0xf63e('0x5'),_0xf63e('0x6'),'maxrate',_0xf63e('0x7'),_0xf63e('0x8'),'faxdetect',_0xf63e('0x9'),_0xf63e('0xa'),_0xf63e('0xb'),_0xf63e('0xc'),_0xf63e('0xd')],'include':[{'model':_0xf63e('0xe'),'as':_0xf63e('0xe'),'attributes':['id',_0xf63e('0x3'),_0xf63e('0xf'),_0xf63e('0x10')]}]},'log':_0xf63e('0x11')});};};exports[_0xf63e('0x12')]=function(_0x2dac2d,_0x2a263a){return client[_0xf63e('0x2')]('NotifyFaxAccount',{'account':{'id':_0x2dac2d},'body':_0x2a263a,'log':_0xf63e('0x13')});};
\ No newline at end of file
index f0bbe63..317df98 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x64ac=['update','Request','UpdateFaxMessage','../client'];(function(_0x51b5c7,_0x57370d){var _0x34a58f=function(_0x125752){while(--_0x125752){_0x51b5c7['push'](_0x51b5c7['shift']());}};_0x34a58f(++_0x57370d);}(_0x64ac,0x83));var _0xc64a=function(_0x180c95,_0x2b08d7){_0x180c95=_0x180c95-0x0;var _0x5d0d4b=_0x64ac[_0x180c95];return _0x5d0d4b;};'use strict';var client=require(_0xc64a('0x0'));exports[_0xc64a('0x1')]=function(_0x365706,_0x2e3f66){return client[_0xc64a('0x2')](_0xc64a('0x3'),{'body':_0x2e3f66,'options':{'where':{'AttachmentId':_0x365706}},'log':'UpdateFaxMessage'});};
\ No newline at end of file
+var _0xc10b=['Request'];(function(_0x3eb2c2,_0x20be69){var _0xeb8cee=function(_0x23cc41){while(--_0x23cc41){_0x3eb2c2['push'](_0x3eb2c2['shift']());}};_0xeb8cee(++_0x20be69);}(_0xc10b,0xc7));var _0xbc10=function(_0x3e44fa,_0x75ed2a){_0x3e44fa=_0x3e44fa-0x0;var _0x2a0aba=_0xc10b[_0x3e44fa];return _0x2a0aba;};'use strict';var client=require('../client');exports['update']=function(_0x4ad22a,_0x431fba){return client[_0xbc10('0x0')]('UpdateFaxMessage',{'body':_0x431fba,'options':{'where':{'AttachmentId':_0x4ad22a}},'log':'UpdateFaxMessage'});};
\ No newline at end of file
index cf63798..0ef76f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac27=['key','Fields','idField','nameField','customField','variableName','Tags','GetDeskAccount','../../client','getDeskAccounts','Request','name','description','username','password','remoteUri','authType','serverUrl','DeskConfiguration','type','content','Variable','DeskField'];(function(_0x1220fc,_0xea6ff4){var _0x1fd0b8=function(_0x3b39b9){while(--_0x3b39b9){_0x1220fc['push'](_0x1220fc['shift']());}};_0x1fd0b8(++_0xea6ff4);}(_0xac27,0x161));var _0x7ac2=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0xac27[_0x17d9e3];return _0x14192d;};'use strict';var client=require(_0x7ac2('0x0'));exports[_0x7ac2('0x1')]=function(){return function(_0x234f72){return client[_0x7ac2('0x2')]('GetDeskAccount',{'options':{'raw':![],'attributes':['id',_0x7ac2('0x3'),_0x7ac2('0x4'),_0x7ac2('0x5'),_0x7ac2('0x6'),_0x7ac2('0x7'),_0x7ac2('0x8'),'type',_0x7ac2('0x9')],'include':[{'model':_0x7ac2('0xa'),'as':'Configurations','attributes':['id',_0x7ac2('0x3')],'include':[{'model':'DeskField','as':'Subjects','attributes':['id',_0x7ac2('0xb'),_0x7ac2('0xc'),'variableName'],'include':[{'model':_0x7ac2('0xd'),'as':'Variable','attributes':['id',_0x7ac2('0x3')]}]},{'model':_0x7ac2('0xe'),'as':'Descriptions','attributes':['id',_0x7ac2('0xb'),'content',_0x7ac2('0xf'),'keyType','keyContent','variableName'],'include':[{'model':_0x7ac2('0xd'),'as':_0x7ac2('0xd'),'attributes':['id',_0x7ac2('0x3')]}]},{'model':_0x7ac2('0xe'),'as':_0x7ac2('0x10'),'attributes':['id',_0x7ac2('0xb'),_0x7ac2('0xc'),_0x7ac2('0x11'),_0x7ac2('0x12'),_0x7ac2('0x13'),_0x7ac2('0x14')],'include':[{'model':_0x7ac2('0xd'),'as':_0x7ac2('0xd'),'attributes':['id','name']}]},{'model':'Tag','as':_0x7ac2('0x15'),'attributes':['id',_0x7ac2('0x3')]}]}]},'log':_0x7ac2('0x16')});};};
\ No newline at end of file
+var _0x79ca=['Fields','idField','nameField','customField','Tags','GetDeskAccount','../../client','getDeskAccounts','Request','description','password','serverUrl','DeskConfiguration','Configurations','name','DeskField','type','Variable','Descriptions','content','variableName'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0x79ca,0x102));var _0xa79c=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x79ca[_0x321bb2];return _0x9c12ed;};'use strict';var client=require(_0xa79c('0x0'));exports[_0xa79c('0x1')]=function(){return function(_0x2652d1){return client[_0xa79c('0x2')]('GetDeskAccount',{'options':{'raw':![],'attributes':['id','name',_0xa79c('0x3'),'username',_0xa79c('0x4'),'remoteUri','authType','type',_0xa79c('0x5')],'include':[{'model':_0xa79c('0x6'),'as':_0xa79c('0x7'),'attributes':['id',_0xa79c('0x8')],'include':[{'model':_0xa79c('0x9'),'as':'Subjects','attributes':['id',_0xa79c('0xa'),'content','variableName'],'include':[{'model':'Variable','as':_0xa79c('0xb'),'attributes':['id','name']}]},{'model':_0xa79c('0x9'),'as':_0xa79c('0xc'),'attributes':['id',_0xa79c('0xa'),_0xa79c('0xd'),'key','keyType','keyContent',_0xa79c('0xe')],'include':[{'model':_0xa79c('0xb'),'as':_0xa79c('0xb'),'attributes':['id',_0xa79c('0x8')]}]},{'model':_0xa79c('0x9'),'as':_0xa79c('0xf'),'attributes':['id',_0xa79c('0xa'),_0xa79c('0xd'),_0xa79c('0x10'),_0xa79c('0x11'),_0xa79c('0x12'),_0xa79c('0xe')],'include':[{'model':_0xa79c('0xb'),'as':_0xa79c('0xb'),'attributes':['id',_0xa79c('0x8')]}]},{'model':'Tag','as':_0xa79c('0x13'),'attributes':['id','name']}]}]},'log':_0xa79c('0x14')});};};
\ No newline at end of file
index b13acba..113cd32 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5aa3=['clientId','serverUrl','description','Dynamics365Configuration','Configurations','ticketType','Dynamics365Field','Subjects','content','variableName','Variable','Descriptions','type','key','keyContent','Fields','idField','nameField','../../client','getDynamics365Accounts','Request','GetDynamics365Account','name','remoteUri','tenantId'];(function(_0x79b6f6,_0x5f15c7){var _0x4d19e8=function(_0x4359f9){while(--_0x4359f9){_0x79b6f6['push'](_0x79b6f6['shift']());}};_0x4d19e8(++_0x5f15c7);}(_0x5aa3,0x1d4));var _0x35aa=function(_0x5f3f88,_0x562baf){_0x5f3f88=_0x5f3f88-0x0;var _0xd08119=_0x5aa3[_0x5f3f88];return _0xd08119;};'use strict';var client=require(_0x35aa('0x0'));exports[_0x35aa('0x1')]=function(){return function(_0x1243de){return client[_0x35aa('0x2')](_0x35aa('0x3'),{'options':{'raw':![],'attributes':['id',_0x35aa('0x4'),'username','password',_0x35aa('0x5'),_0x35aa('0x6'),_0x35aa('0x7'),'clientSecret',_0x35aa('0x8'),_0x35aa('0x9')],'include':[{'model':_0x35aa('0xa'),'as':_0x35aa('0xb'),'attributes':['id','name',_0x35aa('0xc')],'include':[{'model':_0x35aa('0xd'),'as':_0x35aa('0xe'),'attributes':['id','type',_0x35aa('0xf'),_0x35aa('0x10')],'include':[{'model':_0x35aa('0x11'),'as':'Variable','attributes':['id',_0x35aa('0x4')]}]},{'model':'Dynamics365Field','as':_0x35aa('0x12'),'attributes':['id',_0x35aa('0x13'),_0x35aa('0xf'),_0x35aa('0x14'),'keyType',_0x35aa('0x15'),'variableName'],'include':[{'model':_0x35aa('0x11'),'as':'Variable','attributes':['id',_0x35aa('0x4')]}]},{'model':_0x35aa('0xd'),'as':_0x35aa('0x16'),'attributes':['id',_0x35aa('0x13'),_0x35aa('0xf'),_0x35aa('0x17'),_0x35aa('0x18'),'customField',_0x35aa('0x10')],'include':[{'model':_0x35aa('0x11'),'as':'Variable','attributes':['id',_0x35aa('0x4')]}]}]}]},'log':_0x35aa('0x3')});};};
\ No newline at end of file
+var _0x1898=['name','username','password','remoteUri','tenantId','clientId','clientSecret','serverUrl','description','Dynamics365Configuration','Configurations','ticketType','Dynamics365Field','Subjects','type','variableName','Variable','key','keyType','keyContent','Fields','idField','nameField','customField','../../client','Request','GetDynamics365Account'];(function(_0x514260,_0x1891e1){var _0x4ac81b=function(_0x53cab1){while(--_0x53cab1){_0x514260['push'](_0x514260['shift']());}};_0x4ac81b(++_0x1891e1);}(_0x1898,0x126));var _0x8189=function(_0x15b1e6,_0x1b6232){_0x15b1e6=_0x15b1e6-0x0;var _0x3a0a36=_0x1898[_0x15b1e6];return _0x3a0a36;};'use strict';var client=require(_0x8189('0x0'));exports['getDynamics365Accounts']=function(){return function(_0xda8205){return client[_0x8189('0x1')](_0x8189('0x2'),{'options':{'raw':![],'attributes':['id',_0x8189('0x3'),_0x8189('0x4'),_0x8189('0x5'),_0x8189('0x6'),_0x8189('0x7'),_0x8189('0x8'),_0x8189('0x9'),_0x8189('0xa'),_0x8189('0xb')],'include':[{'model':_0x8189('0xc'),'as':_0x8189('0xd'),'attributes':['id',_0x8189('0x3'),_0x8189('0xe')],'include':[{'model':_0x8189('0xf'),'as':_0x8189('0x10'),'attributes':['id',_0x8189('0x11'),'content',_0x8189('0x12')],'include':[{'model':_0x8189('0x13'),'as':_0x8189('0x13'),'attributes':['id',_0x8189('0x3')]}]},{'model':_0x8189('0xf'),'as':'Descriptions','attributes':['id',_0x8189('0x11'),'content',_0x8189('0x14'),_0x8189('0x15'),_0x8189('0x16'),_0x8189('0x12')],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0x8189('0x3')]}]},{'model':_0x8189('0xf'),'as':_0x8189('0x17'),'attributes':['id',_0x8189('0x11'),'content',_0x8189('0x18'),_0x8189('0x19'),_0x8189('0x1a'),'variableName'],'include':[{'model':_0x8189('0x13'),'as':_0x8189('0x13'),'attributes':['id',_0x8189('0x3')]}]}]}]},'log':_0x8189('0x2')});};};
\ No newline at end of file
index 6b6a3aa..89692e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa2d=['nameField','customField','variableName','GetFreshdeskAccount','getFreshdeskAccounts','name','username','apiKey','serverUrl','FreshdeskConfiguration','Configurations','Subjects','type','content','Variable','FreshdeskField','Descriptions','keyType','Fields','idField'];(function(_0x221fd1,_0x12be62){var _0x3e158e=function(_0x2a7c71){while(--_0x2a7c71){_0x221fd1['push'](_0x221fd1['shift']());}};_0x3e158e(++_0x12be62);}(_0xaa2d,0x11c));var _0xdaa2=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xaa2d[_0x3dd15e];return _0x231fd0;};'use strict';var client=require('../../client');exports[_0xdaa2('0x0')]=function(){return function(_0x488321){return client['Request']('GetFreshdeskAccount',{'options':{'raw':![],'attributes':['id',_0xdaa2('0x1'),_0xdaa2('0x2'),_0xdaa2('0x3'),'remoteUri',_0xdaa2('0x4')],'include':[{'model':_0xdaa2('0x5'),'as':_0xdaa2('0x6'),'attributes':['id','name'],'include':[{'model':'Tag','attributes':['id',_0xdaa2('0x1')]},{'model':'FreshdeskField','as':_0xdaa2('0x7'),'attributes':['id',_0xdaa2('0x8'),_0xdaa2('0x9'),'variableName'],'include':[{'model':_0xdaa2('0xa'),'as':_0xdaa2('0xa'),'attributes':['id',_0xdaa2('0x1')]}]},{'model':_0xdaa2('0xb'),'as':_0xdaa2('0xc'),'attributes':['id',_0xdaa2('0x8'),'content','key',_0xdaa2('0xd'),'keyContent','variableName'],'include':[{'model':'Variable','as':_0xdaa2('0xa'),'attributes':['id',_0xdaa2('0x1')]}]},{'model':'FreshdeskField','as':_0xdaa2('0xe'),'attributes':['id',_0xdaa2('0x8'),_0xdaa2('0x9'),_0xdaa2('0xf'),_0xdaa2('0x10'),_0xdaa2('0x11'),_0xdaa2('0x12')],'include':[{'model':_0xdaa2('0xa'),'as':_0xdaa2('0xa'),'attributes':['id',_0xdaa2('0x1')]}]}]}]},'log':_0xdaa2('0x13')});};};
\ No newline at end of file
+var _0xb7e7=['idField','../../client','GetFreshdeskAccount','username','remoteUri','serverUrl','FreshdeskConfiguration','Tag','name','FreshdeskField','type','content','variableName','Variable','key','keyType','keyContent','Fields'];(function(_0x8c8176,_0x5360a1){var _0x4dc47b=function(_0x1a7f65){while(--_0x1a7f65){_0x8c8176['push'](_0x8c8176['shift']());}};_0x4dc47b(++_0x5360a1);}(_0xb7e7,0x121));var _0x7b7e=function(_0x1a36a5,_0x746928){_0x1a36a5=_0x1a36a5-0x0;var _0x746243=_0xb7e7[_0x1a36a5];return _0x746243;};'use strict';var client=require(_0x7b7e('0x0'));exports['getFreshdeskAccounts']=function(){return function(_0x40e269){return client['Request'](_0x7b7e('0x1'),{'options':{'raw':![],'attributes':['id','name',_0x7b7e('0x2'),'apiKey',_0x7b7e('0x3'),_0x7b7e('0x4')],'include':[{'model':_0x7b7e('0x5'),'as':'Configurations','attributes':['id','name'],'include':[{'model':_0x7b7e('0x6'),'attributes':['id',_0x7b7e('0x7')]},{'model':_0x7b7e('0x8'),'as':'Subjects','attributes':['id',_0x7b7e('0x9'),_0x7b7e('0xa'),_0x7b7e('0xb')],'include':[{'model':_0x7b7e('0xc'),'as':_0x7b7e('0xc'),'attributes':['id',_0x7b7e('0x7')]}]},{'model':_0x7b7e('0x8'),'as':'Descriptions','attributes':['id',_0x7b7e('0x9'),_0x7b7e('0xa'),_0x7b7e('0xd'),_0x7b7e('0xe'),_0x7b7e('0xf'),_0x7b7e('0xb')],'include':[{'model':_0x7b7e('0xc'),'as':_0x7b7e('0xc'),'attributes':['id',_0x7b7e('0x7')]}]},{'model':'FreshdeskField','as':_0x7b7e('0x10'),'attributes':['id',_0x7b7e('0x9'),'content',_0x7b7e('0x11'),'nameField','customField',_0x7b7e('0xb')],'include':[{'model':_0x7b7e('0xc'),'as':_0x7b7e('0xc'),'attributes':['id',_0x7b7e('0x7')]}]}]}]},'log':_0x7b7e('0x1')});};};
\ No newline at end of file
index e81d314..f91136d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x71ab=['Variable','Descriptions','keyType','keyContent','GetFreshsalesccount','getFreshsalesAccounts','Request','name','username','apiKey','remoteUri','serverUrl','FreshsalesConfiguration','Configurations','FreshsalesField','Subjects','type','content','variableName'];(function(_0x37592d,_0x250e40){var _0xe3face=function(_0x53bfc2){while(--_0x53bfc2){_0x37592d['push'](_0x37592d['shift']());}};_0xe3face(++_0x250e40);}(_0x71ab,0x64));var _0xb71a=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0x71ab[_0x2f5ac5];return _0x37c9a8;};'use strict';var client=require('../../client');exports[_0xb71a('0x0')]=function(){return function(_0x4d5607){return client[_0xb71a('0x1')]('GetFreshsalesAccount',{'options':{'raw':![],'attributes':['id',_0xb71a('0x2'),_0xb71a('0x3'),_0xb71a('0x4'),_0xb71a('0x5'),_0xb71a('0x6')],'include':[{'model':_0xb71a('0x7'),'as':_0xb71a('0x8'),'attributes':['id',_0xb71a('0x2')],'include':[{'model':_0xb71a('0x9'),'as':_0xb71a('0xa'),'attributes':['id',_0xb71a('0xb'),_0xb71a('0xc'),_0xb71a('0xd')],'include':[{'model':_0xb71a('0xe'),'as':_0xb71a('0xe'),'attributes':['id',_0xb71a('0x2')]}]},{'model':_0xb71a('0x9'),'as':_0xb71a('0xf'),'attributes':['id','type',_0xb71a('0xc'),'key',_0xb71a('0x10'),_0xb71a('0x11'),_0xb71a('0xd')],'include':[{'model':'Variable','as':_0xb71a('0xe'),'attributes':['id','name']}]}]}]},'log':_0xb71a('0x12')});};};
\ No newline at end of file
+var _0x41fe=['remoteUri','serverUrl','FreshsalesConfiguration','Configurations','FreshsalesField','Subjects','type','content','Variable','key','GetFreshsalesccount','../../client','getFreshsalesAccounts','Request','GetFreshsalesAccount','name','username','apiKey'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x41fe,0xd1));var _0xe41f=function(_0x2a7b8e,_0x50ffce){_0x2a7b8e=_0x2a7b8e-0x0;var _0x29b5c8=_0x41fe[_0x2a7b8e];return _0x29b5c8;};'use strict';var client=require(_0xe41f('0x0'));exports[_0xe41f('0x1')]=function(){return function(_0x38cf9f){return client[_0xe41f('0x2')](_0xe41f('0x3'),{'options':{'raw':![],'attributes':['id',_0xe41f('0x4'),_0xe41f('0x5'),_0xe41f('0x6'),_0xe41f('0x7'),_0xe41f('0x8')],'include':[{'model':_0xe41f('0x9'),'as':_0xe41f('0xa'),'attributes':['id',_0xe41f('0x4')],'include':[{'model':_0xe41f('0xb'),'as':_0xe41f('0xc'),'attributes':['id',_0xe41f('0xd'),_0xe41f('0xe'),'variableName'],'include':[{'model':_0xe41f('0xf'),'as':_0xe41f('0xf'),'attributes':['id','name']}]},{'model':_0xe41f('0xb'),'as':'Descriptions','attributes':['id','type','content',_0xe41f('0x10'),'keyType','keyContent','variableName'],'include':[{'model':_0xe41f('0xf'),'as':_0xe41f('0xf'),'attributes':['id',_0xe41f('0x4')]}]}]}]},'log':_0xe41f('0x11')});};};
\ No newline at end of file
index 1a1f422..9549de3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e5a=['leadId','additionalSearchAccount','additionalSearchContact','additionalSearchLead','Subjects','Variable','SalesforceField','../../client','getSalesforceAccounts','GetSalesforceAccount','name','username','password','clientId','clientSecret','securityToken','SalesforceConfiguration','Configurations','moduleSearch','moduleCreate','ticketType'];(function(_0x1d89d1,_0x6f434d){var _0x53a5cd=function(_0x3e7db4){while(--_0x3e7db4){_0x1d89d1['push'](_0x1d89d1['shift']());}};_0x53a5cd(++_0x6f434d);}(_0x0e5a,0x70));var _0xa0e5=function(_0xe1b92,_0x3694cd){_0xe1b92=_0xe1b92-0x0;var _0xa1a217=_0x0e5a[_0xe1b92];return _0xa1a217;};'use strict';var client=require(_0xa0e5('0x0'));exports[_0xa0e5('0x1')]=function(){return function(_0x497505){return client['Request'](_0xa0e5('0x2'),{'options':{'raw':![],'attributes':['id',_0xa0e5('0x3'),_0xa0e5('0x4'),_0xa0e5('0x5'),'remoteUri',_0xa0e5('0x6'),_0xa0e5('0x7'),_0xa0e5('0x8'),'serverUrl','type'],'include':[{'model':_0xa0e5('0x9'),'as':_0xa0e5('0xa'),'attributes':['id',_0xa0e5('0x3'),_0xa0e5('0xb'),_0xa0e5('0xc'),_0xa0e5('0xd'),_0xa0e5('0xe'),_0xa0e5('0xf'),_0xa0e5('0x10'),_0xa0e5('0x11')],'include':[{'model':'SalesforceField','as':_0xa0e5('0x12'),'include':[{'model':_0xa0e5('0x13'),'as':_0xa0e5('0x13'),'attributes':['id','name']}]},{'model':'SalesforceField','as':'Descriptions','include':[{'model':_0xa0e5('0x13'),'as':_0xa0e5('0x13'),'attributes':['id',_0xa0e5('0x3')]}]},{'model':_0xa0e5('0x14'),'as':'Fields','include':[{'model':_0xa0e5('0x13'),'as':'Variable','attributes':['id',_0xa0e5('0x3')]}]}]}]},'log':_0xa0e5('0x2')});};};
\ No newline at end of file
+var _0x1a4d=['moduleCreate','ticketType','leadId','additionalSearchAccount','additionalSearchLead','Subjects','Variable','SalesforceField','Descriptions','../../client','getSalesforceAccounts','Request','GetSalesforceAccount','name','username','password','remoteUri','clientId','clientSecret','serverUrl','type','SalesforceConfiguration','Configurations','moduleSearch'];(function(_0x3ac6a0,_0x26fa83){var _0x1f325c=function(_0x7b6a26){while(--_0x7b6a26){_0x3ac6a0['push'](_0x3ac6a0['shift']());}};_0x1f325c(++_0x26fa83);}(_0x1a4d,0x189));var _0xd1a4=function(_0x15eced,_0x5a2a15){_0x15eced=_0x15eced-0x0;var _0x263229=_0x1a4d[_0x15eced];return _0x263229;};'use strict';var client=require(_0xd1a4('0x0'));exports[_0xd1a4('0x1')]=function(){return function(_0x48f013){return client[_0xd1a4('0x2')](_0xd1a4('0x3'),{'options':{'raw':![],'attributes':['id',_0xd1a4('0x4'),_0xd1a4('0x5'),_0xd1a4('0x6'),_0xd1a4('0x7'),_0xd1a4('0x8'),_0xd1a4('0x9'),'securityToken',_0xd1a4('0xa'),_0xd1a4('0xb')],'include':[{'model':_0xd1a4('0xc'),'as':_0xd1a4('0xd'),'attributes':['id',_0xd1a4('0x4'),_0xd1a4('0xe'),_0xd1a4('0xf'),_0xd1a4('0x10'),_0xd1a4('0x11'),_0xd1a4('0x12'),'additionalSearchContact',_0xd1a4('0x13')],'include':[{'model':'SalesforceField','as':_0xd1a4('0x14'),'include':[{'model':_0xd1a4('0x15'),'as':_0xd1a4('0x15'),'attributes':['id',_0xd1a4('0x4')]}]},{'model':_0xd1a4('0x16'),'as':_0xd1a4('0x17'),'include':[{'model':_0xd1a4('0x15'),'as':_0xd1a4('0x15'),'attributes':['id',_0xd1a4('0x4')]}]},{'model':_0xd1a4('0x16'),'as':'Fields','include':[{'model':_0xd1a4('0x15'),'as':'Variable','attributes':['id',_0xd1a4('0x4')]}]}]}]},'log':_0xd1a4('0x3')});};};
\ No newline at end of file
index a4b87c1..341a188 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x326f=['variableName','GetServicenowkAccount','../../client','Request','GetServicenowAccount','name','description','username','password','email','remoteUri','serverUrl','ServicenowConfiguration','ServicenowField','Subjects','type','Variable','Descriptions','key','keyContent','content','idField','nameField'];(function(_0x29b4d5,_0x5b94c7){var _0x241d61=function(_0x127991){while(--_0x127991){_0x29b4d5['push'](_0x29b4d5['shift']());}};_0x241d61(++_0x5b94c7);}(_0x326f,0xd1));var _0xf326=function(_0x224fd7,_0x4ee070){_0x224fd7=_0x224fd7-0x0;var _0x58b927=_0x326f[_0x224fd7];return _0x58b927;};'use strict';var client=require(_0xf326('0x0'));exports['getServicenowAccounts']=function(){return function(_0x5452cc){return client[_0xf326('0x1')](_0xf326('0x2'),{'options':{'raw':![],'attributes':['id',_0xf326('0x3'),_0xf326('0x4'),_0xf326('0x5'),_0xf326('0x6'),_0xf326('0x7'),_0xf326('0x8'),_0xf326('0x9')],'include':[{'model':_0xf326('0xa'),'as':'Configurations','attributes':['id',_0xf326('0x3')],'include':[{'model':_0xf326('0xb'),'as':_0xf326('0xc'),'attributes':['id',_0xf326('0xd'),'content','variableName'],'include':[{'model':'Variable','as':_0xf326('0xe'),'attributes':['id',_0xf326('0x3')]}]},{'model':_0xf326('0xb'),'as':_0xf326('0xf'),'attributes':['id',_0xf326('0xd'),'content',_0xf326('0x10'),'keyType',_0xf326('0x11'),'variableName'],'include':[{'model':_0xf326('0xe'),'as':'Variable','attributes':['id',_0xf326('0x3')]}]},{'model':_0xf326('0xb'),'as':'Fields','attributes':['id',_0xf326('0xd'),_0xf326('0x12'),_0xf326('0x13'),_0xf326('0x14'),'customField',_0xf326('0x15')],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0xf326('0x3')]}]}]}]},'log':_0xf326('0x16')});};};
\ No newline at end of file
+var _0xba34=['keyContent','Fields','idField','nameField','customField','GetServicenowkAccount','../../client','getServicenowAccounts','Request','GetServicenowAccount','password','email','remoteUri','serverUrl','ServicenowConfiguration','Configurations','name','Subjects','type','content','variableName','Variable','ServicenowField','Descriptions','keyType'];(function(_0xa6d8db,_0x570588){var _0x6befb1=function(_0xc04ba5){while(--_0xc04ba5){_0xa6d8db['push'](_0xa6d8db['shift']());}};_0x6befb1(++_0x570588);}(_0xba34,0x119));var _0x4ba3=function(_0x13ef8d,_0x2b79f1){_0x13ef8d=_0x13ef8d-0x0;var _0x267086=_0xba34[_0x13ef8d];return _0x267086;};'use strict';var client=require(_0x4ba3('0x0'));exports[_0x4ba3('0x1')]=function(){return function(_0xb04f7b){return client[_0x4ba3('0x2')](_0x4ba3('0x3'),{'options':{'raw':![],'attributes':['id','name','description','username',_0x4ba3('0x4'),_0x4ba3('0x5'),_0x4ba3('0x6'),_0x4ba3('0x7')],'include':[{'model':_0x4ba3('0x8'),'as':_0x4ba3('0x9'),'attributes':['id',_0x4ba3('0xa')],'include':[{'model':'ServicenowField','as':_0x4ba3('0xb'),'attributes':['id',_0x4ba3('0xc'),_0x4ba3('0xd'),_0x4ba3('0xe')],'include':[{'model':_0x4ba3('0xf'),'as':_0x4ba3('0xf'),'attributes':['id',_0x4ba3('0xa')]}]},{'model':_0x4ba3('0x10'),'as':_0x4ba3('0x11'),'attributes':['id',_0x4ba3('0xc'),_0x4ba3('0xd'),'key',_0x4ba3('0x12'),_0x4ba3('0x13'),'variableName'],'include':[{'model':_0x4ba3('0xf'),'as':'Variable','attributes':['id',_0x4ba3('0xa')]}]},{'model':'ServicenowField','as':_0x4ba3('0x14'),'attributes':['id',_0x4ba3('0xc'),_0x4ba3('0xd'),_0x4ba3('0x15'),_0x4ba3('0x16'),_0x4ba3('0x17'),_0x4ba3('0xe')],'include':[{'model':_0x4ba3('0xf'),'as':_0x4ba3('0xf'),'attributes':['id',_0x4ba3('0xa')]}]}]}]},'log':_0x4ba3('0x18')});};};
\ No newline at end of file
index ae3a074..ab3caae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f66=['nameField','customField','getSugarcrmAccounts','Request','GetSugarcrmAccount','name','username','password','serverUrl','Configurations','type','content','variableName','Variable','key','keyType','Fields','idField'];(function(_0x445b7d,_0x2d48ac){var _0x577af9=function(_0x21e6e2){while(--_0x21e6e2){_0x445b7d['push'](_0x445b7d['shift']());}};_0x577af9(++_0x2d48ac);}(_0x5f66,0x1a0));var _0x65f6=function(_0x297fd3,_0x115406){_0x297fd3=_0x297fd3-0x0;var _0x2af381=_0x5f66[_0x297fd3];return _0x2af381;};'use strict';var client=require('../../client');exports[_0x65f6('0x0')]=function(){return function(_0x4a3887){return client[_0x65f6('0x1')](_0x65f6('0x2'),{'options':{'raw':![],'attributes':['id',_0x65f6('0x3'),_0x65f6('0x4'),_0x65f6('0x5'),'remoteUri',_0x65f6('0x6')],'include':[{'model':'SugarcrmConfiguration','as':_0x65f6('0x7'),'attributes':['id',_0x65f6('0x3')],'include':[{'model':'SugarcrmField','as':'Subjects','attributes':['id',_0x65f6('0x8'),_0x65f6('0x9'),_0x65f6('0xa')],'include':[{'model':_0x65f6('0xb'),'as':_0x65f6('0xb'),'attributes':['id',_0x65f6('0x3')]}]},{'model':'SugarcrmField','as':'Descriptions','attributes':['id',_0x65f6('0x8'),_0x65f6('0x9'),_0x65f6('0xc'),_0x65f6('0xd'),'keyContent',_0x65f6('0xa')],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0x65f6('0x3')]}]},{'model':'SugarcrmField','as':_0x65f6('0xe'),'attributes':['id','type',_0x65f6('0x9'),_0x65f6('0xf'),_0x65f6('0x10'),_0x65f6('0x11'),_0x65f6('0xa')],'include':[{'model':_0x65f6('0xb'),'as':_0x65f6('0xb'),'attributes':['id',_0x65f6('0x3')]}]}]}]},'log':_0x65f6('0x2')});};};
\ No newline at end of file
+var _0x0295=['remoteUri','serverUrl','SugarcrmConfiguration','Configurations','name','SugarcrmField','Subjects','Variable','Descriptions','content','key','keyType','variableName','Fields','customField','GetSugarcrmAccount','../../client','Request','username','password'];(function(_0x4662c1,_0x5f5d1a){var _0x5e780f=function(_0x2b4a02){while(--_0x2b4a02){_0x4662c1['push'](_0x4662c1['shift']());}};_0x5e780f(++_0x5f5d1a);}(_0x0295,0x1f0));var _0x5029=function(_0x2724e5,_0x229d74){_0x2724e5=_0x2724e5-0x0;var _0x4b6621=_0x0295[_0x2724e5];return _0x4b6621;};'use strict';var client=require(_0x5029('0x0'));exports['getSugarcrmAccounts']=function(){return function(_0x5e71d0){return client[_0x5029('0x1')]('GetSugarcrmAccount',{'options':{'raw':![],'attributes':['id','name',_0x5029('0x2'),_0x5029('0x3'),_0x5029('0x4'),_0x5029('0x5')],'include':[{'model':_0x5029('0x6'),'as':_0x5029('0x7'),'attributes':['id',_0x5029('0x8')],'include':[{'model':_0x5029('0x9'),'as':_0x5029('0xa'),'attributes':['id','type','content','variableName'],'include':[{'model':_0x5029('0xb'),'as':'Variable','attributes':['id',_0x5029('0x8')]}]},{'model':'SugarcrmField','as':_0x5029('0xc'),'attributes':['id','type',_0x5029('0xd'),_0x5029('0xe'),_0x5029('0xf'),'keyContent',_0x5029('0x10')],'include':[{'model':_0x5029('0xb'),'as':_0x5029('0xb'),'attributes':['id','name']}]},{'model':_0x5029('0x9'),'as':_0x5029('0x11'),'attributes':['id','type','content','idField','nameField',_0x5029('0x12'),_0x5029('0x10')],'include':[{'model':_0x5029('0xb'),'as':_0x5029('0xb'),'attributes':['id',_0x5029('0x8')]}]}]}]},'log':_0x5029('0x13')});};};
\ No newline at end of file
index 1ed7cef..ef77b2b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x302e=['serverUrl','VtigerConfiguration','Configurations','name','Subjects','type','content','Variable','VtigerField','Descriptions','key','keyType','keyContent','variableName','Fields','idField','nameField','customField','../../client','getVtigerAccounts','Request','GetVtigerAccount','username','accessKey'];(function(_0x2208d6,_0x2d49d3){var _0x3fa7e4=function(_0x1d5226){while(--_0x1d5226){_0x2208d6['push'](_0x2208d6['shift']());}};_0x3fa7e4(++_0x2d49d3);}(_0x302e,0xea));var _0xe302=function(_0x3d39d5,_0x1bb391){_0x3d39d5=_0x3d39d5-0x0;var _0x2e56b4=_0x302e[_0x3d39d5];return _0x2e56b4;};'use strict';var client=require(_0xe302('0x0'));exports[_0xe302('0x1')]=function(){return function(_0x1fbdae){return client[_0xe302('0x2')](_0xe302('0x3'),{'options':{'raw':![],'attributes':['id','name','description',_0xe302('0x4'),_0xe302('0x5'),'remoteUri',_0xe302('0x6')],'include':[{'model':_0xe302('0x7'),'as':_0xe302('0x8'),'attributes':['id',_0xe302('0x9')],'include':[{'model':'VtigerField','as':_0xe302('0xa'),'attributes':['id',_0xe302('0xb'),_0xe302('0xc'),'variableName'],'include':[{'model':_0xe302('0xd'),'as':_0xe302('0xd'),'attributes':['id',_0xe302('0x9')]}]},{'model':_0xe302('0xe'),'as':_0xe302('0xf'),'attributes':['id','type',_0xe302('0xc'),_0xe302('0x10'),_0xe302('0x11'),_0xe302('0x12'),_0xe302('0x13')],'include':[{'model':_0xe302('0xd'),'as':_0xe302('0xd'),'attributes':['id',_0xe302('0x9')]}]},{'model':_0xe302('0xe'),'as':_0xe302('0x14'),'attributes':['id','type','content',_0xe302('0x15'),_0xe302('0x16'),_0xe302('0x17'),_0xe302('0x13')],'include':[{'model':_0xe302('0xd'),'as':_0xe302('0xd'),'attributes':['id','name']}]}]}]},'log':_0xe302('0x3')});};};
\ No newline at end of file
+var _0x4eda=['key','Fields','idField','nameField','Request','GetVtigerAccount','name','username','accessKey','remoteUri','serverUrl','Configurations','VtigerField','Subjects','content','variableName','Variable','type'];(function(_0x49f0f0,_0x14bd42){var _0x194069=function(_0x3f755c){while(--_0x3f755c){_0x49f0f0['push'](_0x49f0f0['shift']());}};_0x194069(++_0x14bd42);}(_0x4eda,0x100));var _0xa4ed=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x4eda[_0x321bb2];return _0x9c12ed;};'use strict';var client=require('../../client');exports['getVtigerAccounts']=function(){return function(_0x12a289){return client[_0xa4ed('0x0')](_0xa4ed('0x1'),{'options':{'raw':![],'attributes':['id',_0xa4ed('0x2'),'description',_0xa4ed('0x3'),_0xa4ed('0x4'),_0xa4ed('0x5'),_0xa4ed('0x6')],'include':[{'model':'VtigerConfiguration','as':_0xa4ed('0x7'),'attributes':['id',_0xa4ed('0x2')],'include':[{'model':_0xa4ed('0x8'),'as':_0xa4ed('0x9'),'attributes':['id','type',_0xa4ed('0xa'),_0xa4ed('0xb')],'include':[{'model':_0xa4ed('0xc'),'as':_0xa4ed('0xc'),'attributes':['id',_0xa4ed('0x2')]}]},{'model':_0xa4ed('0x8'),'as':'Descriptions','attributes':['id',_0xa4ed('0xd'),'content',_0xa4ed('0xe'),'keyType','keyContent','variableName'],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0xa4ed('0x2')]}]},{'model':_0xa4ed('0x8'),'as':_0xa4ed('0xf'),'attributes':['id',_0xa4ed('0xd'),_0xa4ed('0xa'),_0xa4ed('0x10'),_0xa4ed('0x11'),'customField','variableName'],'include':[{'model':_0xa4ed('0xc'),'as':_0xa4ed('0xc'),'attributes':['id','name']}]}]}]},'log':_0xa4ed('0x1')});};};
\ No newline at end of file
index 1ee7653..182872c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f71=['Variable','key','keyType','keyContent','Fields','idField','nameField','customField','GetZendeskAccount','../../client','getZendeskAccounts','Request','name','username','token','authType','serverUrl','type','Configurations','Tag','ZendeskField','Subjects','content','variableName'];(function(_0x3fc5ca,_0x575782){var _0x33b644=function(_0x200045){while(--_0x200045){_0x3fc5ca['push'](_0x3fc5ca['shift']());}};_0x33b644(++_0x575782);}(_0x4f71,0x171));var _0x14f7=function(_0x45e98e,_0x169b60){_0x45e98e=_0x45e98e-0x0;var _0x374dba=_0x4f71[_0x45e98e];return _0x374dba;};'use strict';var client=require(_0x14f7('0x0'));exports[_0x14f7('0x1')]=function(){return function(_0x15d6d7){return client[_0x14f7('0x2')]('GetZendeskAccount',{'options':{'raw':![],'attributes':['id',_0x14f7('0x3'),_0x14f7('0x4'),'password',_0x14f7('0x5'),'remoteUri',_0x14f7('0x6'),_0x14f7('0x7'),_0x14f7('0x8')],'include':[{'model':'ZendeskConfiguration','as':_0x14f7('0x9'),'attributes':['id','name'],'include':[{'model':_0x14f7('0xa'),'attributes':['id',_0x14f7('0x3')]},{'model':_0x14f7('0xb'),'as':_0x14f7('0xc'),'attributes':['id',_0x14f7('0x8'),_0x14f7('0xd'),_0x14f7('0xe')],'include':[{'model':_0x14f7('0xf'),'as':'Variable','attributes':['id',_0x14f7('0x3')]}]},{'model':_0x14f7('0xb'),'as':'Descriptions','attributes':['id','type',_0x14f7('0xd'),_0x14f7('0x10'),_0x14f7('0x11'),_0x14f7('0x12'),_0x14f7('0xe')],'include':[{'model':_0x14f7('0xf'),'as':_0x14f7('0xf'),'attributes':['id',_0x14f7('0x3')]}]},{'model':_0x14f7('0xb'),'as':_0x14f7('0x13'),'attributes':['id',_0x14f7('0x8'),_0x14f7('0xd'),_0x14f7('0x14'),_0x14f7('0x15'),_0x14f7('0x16'),_0x14f7('0xe')],'include':[{'model':_0x14f7('0xf'),'as':'Variable','attributes':['id',_0x14f7('0x3')]}]}]}]},'log':_0x14f7('0x17')});};};
\ No newline at end of file
+var _0x0f9c=['Descriptions','key','keyType','keyContent','idField','nameField','customField','../../client','getZendeskAccounts','Request','GetZendeskAccount','name','username','password','remoteUri','authType','serverUrl','type','ZendeskConfiguration','Configurations','ZendeskField','content','variableName','Variable'];(function(_0xa6180a,_0x508ff9){var _0x10f626=function(_0x1bf882){while(--_0x1bf882){_0xa6180a['push'](_0xa6180a['shift']());}};_0x10f626(++_0x508ff9);}(_0x0f9c,0x19f));var _0xc0f9=function(_0x1247b8,_0x2d15f3){_0x1247b8=_0x1247b8-0x0;var _0x3c4d3c=_0x0f9c[_0x1247b8];return _0x3c4d3c;};'use strict';var client=require(_0xc0f9('0x0'));exports[_0xc0f9('0x1')]=function(){return function(_0x23209b){return client[_0xc0f9('0x2')](_0xc0f9('0x3'),{'options':{'raw':![],'attributes':['id',_0xc0f9('0x4'),_0xc0f9('0x5'),_0xc0f9('0x6'),'token',_0xc0f9('0x7'),_0xc0f9('0x8'),_0xc0f9('0x9'),_0xc0f9('0xa')],'include':[{'model':_0xc0f9('0xb'),'as':_0xc0f9('0xc'),'attributes':['id','name'],'include':[{'model':'Tag','attributes':['id',_0xc0f9('0x4')]},{'model':_0xc0f9('0xd'),'as':'Subjects','attributes':['id','type',_0xc0f9('0xe'),_0xc0f9('0xf')],'include':[{'model':_0xc0f9('0x10'),'as':_0xc0f9('0x10'),'attributes':['id',_0xc0f9('0x4')]}]},{'model':_0xc0f9('0xd'),'as':_0xc0f9('0x11'),'attributes':['id',_0xc0f9('0xa'),_0xc0f9('0xe'),_0xc0f9('0x12'),_0xc0f9('0x13'),_0xc0f9('0x14'),_0xc0f9('0xf')],'include':[{'model':_0xc0f9('0x10'),'as':_0xc0f9('0x10'),'attributes':['id',_0xc0f9('0x4')]}]},{'model':_0xc0f9('0xd'),'as':'Fields','attributes':['id',_0xc0f9('0xa'),_0xc0f9('0xe'),_0xc0f9('0x15'),_0xc0f9('0x16'),_0xc0f9('0x17'),_0xc0f9('0xf')],'include':[{'model':_0xc0f9('0x10'),'as':'Variable','attributes':['id','name']}]}]}]},'log':_0xc0f9('0x3')});};};
\ No newline at end of file
index 2c4d4ba..0343da5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ef6=['GetZohoAccount','name','description','clientId','clientSecret','serverUrl','refreshToken','ZohoConfiguration','Configurations','moduleCreate','moduleSearch','ZohoField','Subjects','type','content','variableName','key','keyContent','Variable','Fields','nameField','../../client','Request'];(function(_0x203de6,_0xc503c8){var _0x24fa29=function(_0xe1709){while(--_0xe1709){_0x203de6['push'](_0x203de6['shift']());}};_0x24fa29(++_0xc503c8);}(_0x5ef6,0x1b3));var _0x65ef=function(_0x37597b,_0x46e807){_0x37597b=_0x37597b-0x0;var _0x1b10a4=_0x5ef6[_0x37597b];return _0x1b10a4;};'use strict';var client=require(_0x65ef('0x0'));exports['getZohoAccounts']=function(){return function(_0x1d0746){return client[_0x65ef('0x1')](_0x65ef('0x2'),{'options':{'raw':![],'attributes':['id',_0x65ef('0x3'),_0x65ef('0x4'),'host','zone',_0x65ef('0x5'),_0x65ef('0x6'),_0x65ef('0x7'),'code',_0x65ef('0x8')],'include':[{'model':_0x65ef('0x9'),'as':_0x65ef('0xa'),'attributes':['id',_0x65ef('0x3'),_0x65ef('0xb'),_0x65ef('0xc'),_0x65ef('0x4')],'include':[{'model':_0x65ef('0xd'),'as':_0x65ef('0xe'),'attributes':['id',_0x65ef('0xf'),_0x65ef('0x10'),_0x65ef('0x11')],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0x65ef('0x3')]}]},{'model':'ZohoField','as':'Descriptions','attributes':['id',_0x65ef('0xf'),_0x65ef('0x10'),_0x65ef('0x12'),'keyType',_0x65ef('0x13'),_0x65ef('0x11')],'include':[{'model':_0x65ef('0x14'),'as':_0x65ef('0x14'),'attributes':['id',_0x65ef('0x3')]}]},{'model':'ZohoField','as':_0x65ef('0x15'),'attributes':['id','type',_0x65ef('0x10'),'idField',_0x65ef('0x16'),'customField',_0x65ef('0x11')],'include':[{'model':_0x65ef('0x14'),'as':_0x65ef('0x14'),'attributes':['id',_0x65ef('0x3')]}]}]}]},'log':_0x65ef('0x2')});};};
\ No newline at end of file
+var _0x4fce=['refreshToken','ZohoConfiguration','Configurations','moduleCreate','moduleSearch','ZohoField','type','variableName','Variable','content','key','keyContent','Fields','idField','customField','GetZohoAccount','name','description','zone','clientId','serverUrl','code'];(function(_0x3f453f,_0x3ff7bf){var _0x4b6e18=function(_0x1266f8){while(--_0x1266f8){_0x3f453f['push'](_0x3f453f['shift']());}};_0x4b6e18(++_0x3ff7bf);}(_0x4fce,0xbf));var _0xe4fc=function(_0xe8b4fb,_0x228203){_0xe8b4fb=_0xe8b4fb-0x0;var _0x5d8af6=_0x4fce[_0xe8b4fb];return _0x5d8af6;};'use strict';var client=require('../../client');exports['getZohoAccounts']=function(){return function(_0xa1c809){return client['Request'](_0xe4fc('0x0'),{'options':{'raw':![],'attributes':['id',_0xe4fc('0x1'),_0xe4fc('0x2'),'host',_0xe4fc('0x3'),_0xe4fc('0x4'),'clientSecret',_0xe4fc('0x5'),_0xe4fc('0x6'),_0xe4fc('0x7')],'include':[{'model':_0xe4fc('0x8'),'as':_0xe4fc('0x9'),'attributes':['id','name',_0xe4fc('0xa'),_0xe4fc('0xb'),_0xe4fc('0x2')],'include':[{'model':_0xe4fc('0xc'),'as':'Subjects','attributes':['id',_0xe4fc('0xd'),'content',_0xe4fc('0xe')],'include':[{'model':_0xe4fc('0xf'),'as':'Variable','attributes':['id','name']}]},{'model':'ZohoField','as':'Descriptions','attributes':['id',_0xe4fc('0xd'),_0xe4fc('0x10'),_0xe4fc('0x11'),'keyType',_0xe4fc('0x12'),_0xe4fc('0xe')],'include':[{'model':_0xe4fc('0xf'),'as':_0xe4fc('0xf'),'attributes':['id',_0xe4fc('0x1')]}]},{'model':_0xe4fc('0xc'),'as':_0xe4fc('0x13'),'attributes':['id','type','content',_0xe4fc('0x14'),'nameField',_0xe4fc('0x15'),_0xe4fc('0xe')],'include':[{'model':_0xe4fc('0xf'),'as':_0xe4fc('0xf'),'attributes':['id',_0xe4fc('0x1')]}]}]}]},'log':_0xe4fc('0x0')});};};
\ No newline at end of file
index bbfd82b..e2e100f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x25fb=['queue','agent','accountcode','uniqueid','voiceDialReport','voice','membername','starttime','endtime','outbound','dialstring','toNumber','moment','util','queuecallercompleteAt','queuecallerexitAt','Request','CreateMemberReport','lastAssignedTo','isNil','interface','format','TALKING','queuecallerleaveAt','diff','seconds','inbound','calleridnum','exten'];(function(_0xc2d4d6,_0x31b6e0){var _0x5b4541=function(_0x4fed9d){while(--_0x4fed9d){_0xc2d4d6['push'](_0xc2d4d6['shift']());}};_0x5b4541(++_0x31b6e0);}(_0x25fb,0x168));var _0xb25f=function(_0x5d2b38,_0xcb6d13){_0x5d2b38=_0x5d2b38-0x0;var _0x1f1bee=_0x25fb[_0x5d2b38];return _0x1f1bee;};'use strict';var moment=require(_0xb25f('0x0'));var _=require('lodash');var util=require(_0xb25f('0x1'));var client=require('../client');exports['voiceQueueReport']=function(_0xe5760d){var _0x1a8d67=_0xe5760d[_0xb25f('0x2')]||_0xe5760d[_0xb25f('0x3')];return client[_0xb25f('0x4')](_0xb25f('0x5'),{'body':{'channel':'voice','membername':_0xe5760d[_0xb25f('0x6')],'interface':_[_0xb25f('0x7')](_0xe5760d[_0xb25f('0x8')])?util[_0xb25f('0x9')]('SIP/%s',_0xe5760d['lastAssignedTo']):_0xe5760d[_0xb25f('0x8')],'type':_0xb25f('0xa'),'enterAt':_0xe5760d[_0xb25f('0xb')],'exitAt':_0x1a8d67,'duration':moment(_0x1a8d67)[_0xb25f('0xc')](_0xe5760d['queuecallerleaveAt'],_0xb25f('0xd')),'data1':_0xb25f('0xe'),'data2':_0xe5760d[_0xb25f('0xf')],'data3':_0xe5760d[_0xb25f('0x10')],'data4':null,'data5':_0xe5760d[_0xb25f('0x11')],'role':_0xb25f('0x12'),'internal':_0xe5760d[_0xb25f('0x13')]?_['toNumber'](_0xe5760d['accountcode']):undefined,'uniqueid':_0xe5760d[_0xb25f('0x14')]},'log':_0xb25f('0x5')});};exports[_0xb25f('0x15')]=function(_0x38eca7){return client[_0xb25f('0x4')](_0xb25f('0x5'),{'body':{'channel':_0xb25f('0x16'),'membername':_0x38eca7[_0xb25f('0x17')],'interface':_0x38eca7['interface'],'type':_0xb25f('0xa'),'enterAt':_0x38eca7[_0xb25f('0x18')],'exitAt':_0x38eca7[_0xb25f('0x19')],'duration':moment(_0x38eca7[_0xb25f('0x19')])[_0xb25f('0xc')](_0x38eca7[_0xb25f('0x18')],_0xb25f('0xd'))>=0x0?moment(_0x38eca7[_0xb25f('0x19')])[_0xb25f('0xc')](_0x38eca7[_0xb25f('0x18')],_0xb25f('0xd')):null,'data1':_0xb25f('0x1a'),'data2':_0x38eca7['accountcode'],'data3':_0x38eca7[_0xb25f('0x10')],'data4':_0x38eca7[_0xb25f('0x1b')]||null,'role':_0xb25f('0x12'),'internal':_0x38eca7[_0xb25f('0x13')]?_[_0xb25f('0x1c')](_0x38eca7['accountcode']):undefined,'uniqueid':_0x38eca7[_0xb25f('0x14')]},'log':_0xb25f('0x5')});};
\ No newline at end of file
+var _0xdff6=['queuecallerleaveAt','seconds','inbound','calleridnum','exten','queue','agent','accountcode','toNumber','uniqueid','voiceDialReport','membername','starttime','endtime','diff','moment','util','voiceQueueReport','Request','CreateMemberReport','voice','lastAssignedTo','isNil','interface','format','SIP/%s','TALKING'];(function(_0x199572,_0x33e667){var _0x13cfa3=function(_0x53c075){while(--_0x53c075){_0x199572['push'](_0x199572['shift']());}};_0x13cfa3(++_0x33e667);}(_0xdff6,0x1da));var _0x6dff=function(_0x45fd6b,_0x2135b9){_0x45fd6b=_0x45fd6b-0x0;var _0x21f4ec=_0xdff6[_0x45fd6b];return _0x21f4ec;};'use strict';var moment=require(_0x6dff('0x0'));var _=require('lodash');var util=require(_0x6dff('0x1'));var client=require('../client');exports[_0x6dff('0x2')]=function(_0x27bb28){var _0x33a561=_0x27bb28['queuecallercompleteAt']||_0x27bb28['queuecallerexitAt'];return client[_0x6dff('0x3')](_0x6dff('0x4'),{'body':{'channel':_0x6dff('0x5'),'membername':_0x27bb28[_0x6dff('0x6')],'interface':_[_0x6dff('0x7')](_0x27bb28[_0x6dff('0x8')])?util[_0x6dff('0x9')](_0x6dff('0xa'),_0x27bb28[_0x6dff('0x6')]):_0x27bb28[_0x6dff('0x8')],'type':_0x6dff('0xb'),'enterAt':_0x27bb28[_0x6dff('0xc')],'exitAt':_0x33a561,'duration':moment(_0x33a561)['diff'](_0x27bb28['queuecallerleaveAt'],_0x6dff('0xd')),'data1':_0x6dff('0xe'),'data2':_0x27bb28[_0x6dff('0xf')],'data3':_0x27bb28[_0x6dff('0x10')],'data4':null,'data5':_0x27bb28[_0x6dff('0x11')],'role':_0x6dff('0x12'),'internal':_0x27bb28[_0x6dff('0x13')]?_[_0x6dff('0x14')](_0x27bb28[_0x6dff('0x13')]):undefined,'uniqueid':_0x27bb28[_0x6dff('0x15')]},'log':'CreateMemberReport'});};exports[_0x6dff('0x16')]=function(_0x4474f4){return client['Request']('CreateMemberReport',{'body':{'channel':_0x6dff('0x5'),'membername':_0x4474f4[_0x6dff('0x17')],'interface':_0x4474f4[_0x6dff('0x8')],'type':_0x6dff('0xb'),'enterAt':_0x4474f4[_0x6dff('0x18')],'exitAt':_0x4474f4[_0x6dff('0x19')],'duration':moment(_0x4474f4[_0x6dff('0x19')])[_0x6dff('0x1a')](_0x4474f4[_0x6dff('0x18')],'seconds')>=0x0?moment(_0x4474f4[_0x6dff('0x19')])[_0x6dff('0x1a')](_0x4474f4[_0x6dff('0x18')],_0x6dff('0xd')):null,'data1':'outbound','data2':_0x4474f4[_0x6dff('0x13')],'data3':_0x4474f4['exten'],'data4':_0x4474f4['dialstring']||null,'role':_0x6dff('0x12'),'internal':_0x4474f4[_0x6dff('0x13')]?_[_0x6dff('0x14')](_0x4474f4['accountcode']):undefined,'uniqueid':_0x4474f4['uniqueid']},'log':_0x6dff('0x4')});};
\ No newline at end of file
index daa6371..2f8d8fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x56dc=['ShowSetting','stopRecordingOnTransfer','GetSettings','../client','Request'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x56dc,0xfd));var _0xc56d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x56dc[_0x3dd15e];return _0x231fd0;};'use strict';var client=require(_0xc56d('0x0'));exports['getSettings']=function(){return client[_0xc56d('0x1')](_0xc56d('0x2'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0xc56d('0x3')]},'log':_0xc56d('0x4')});};
\ No newline at end of file
+var _0x3ef0=['Request','stopRecordingOnTransfer','../client'];(function(_0x38c8a3,_0x4c270c){var _0x2c4380=function(_0x3ed961){while(--_0x3ed961){_0x38c8a3['push'](_0x38c8a3['shift']());}};_0x2c4380(++_0x4c270c);}(_0x3ef0,0x19a));var _0x03ef=function(_0xf74aa7,_0x469e6f){_0xf74aa7=_0xf74aa7-0x0;var _0x37abbe=_0x3ef0[_0xf74aa7];return _0x37abbe;};'use strict';var client=require(_0x03ef('0x0'));exports['getSettings']=function(){return client[_0x03ef('0x1')]('ShowSetting',{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0x03ef('0x2')]},'log':'GetSettings'});};
\ No newline at end of file
index 98427a8..c53f922 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c9b=['getTemplates','Request','GetTemplate','html'];(function(_0x439cea,_0xdc0a3f){var _0x26e33d=function(_0x4a1330){while(--_0x4a1330){_0x439cea['push'](_0x439cea['shift']());}};_0x26e33d(++_0xdc0a3f);}(_0x9c9b,0x194));var _0xb9c9=function(_0x35136a,_0xc88bab){_0x35136a=_0x35136a-0x0;var _0x3096c5=_0x9c9b[_0x35136a];return _0x3096c5;};'use strict';var client=require('../client');exports[_0xb9c9('0x0')]=function(_0xe1be75){return function(_0x3d06a3){return client[_0xb9c9('0x1')](_0xb9c9('0x2'),{'options':{'raw':!![],'attributes':['id','name',_0xb9c9('0x3')]},'log':_0xb9c9('0x2')});};};
\ No newline at end of file
+var _0x7497=['Request','GetTemplate','name','html','../client','getTemplates'];(function(_0x3a72e4,_0x556adf){var _0xbf6a40=function(_0x1241b2){while(--_0x1241b2){_0x3a72e4['push'](_0x3a72e4['shift']());}};_0xbf6a40(++_0x556adf);}(_0x7497,0x13c));var _0x7749=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7497[_0x3dd15e];return _0x231fd0;};'use strict';var client=require(_0x7749('0x0'));exports[_0x7749('0x1')]=function(_0x212225){return function(_0x74dc6d){return client[_0x7749('0x2')](_0x7749('0x3'),{'options':{'raw':!![],'attributes':['id',_0x7749('0x4'),_0x7749('0x5')]},'log':_0x7749('0x3')});};};
\ No newline at end of file
index b74066f..9244ba0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x13d8=['Request','GetTrigger','name','channel','Condition','AllConditions','operator','value','AnyConditions','field','Action','Actions','data1','data2','data4','data7','../client'];(function(_0x11fc48,_0x4a9a37){var _0x5ec8ba=function(_0x3fb7d1){while(--_0x3fb7d1){_0x11fc48['push'](_0x11fc48['shift']());}};_0x5ec8ba(++_0x4a9a37);}(_0x13d8,0x120));var _0x813d=function(_0x8977b4,_0x357193){_0x8977b4=_0x8977b4-0x0;var _0x164fc1=_0x13d8[_0x8977b4];return _0x164fc1;};'use strict';var client=require(_0x813d('0x0'));exports['getTriggers']=function(_0x36a9f6){return function(_0x2f62c1){return client[_0x813d('0x1')](_0x813d('0x2'),{'options':{'raw':![],'attributes':['id',_0x813d('0x3'),_0x813d('0x4'),'status'],'include':[{'model':_0x813d('0x5'),'as':_0x813d('0x6'),'attributes':['id','field',_0x813d('0x7'),_0x813d('0x8')]},{'model':_0x813d('0x5'),'as':_0x813d('0x9'),'attributes':['id',_0x813d('0xa'),'operator',_0x813d('0x8')]},{'model':_0x813d('0xb'),'as':_0x813d('0xc'),'attributes':['id','action',_0x813d('0xd'),_0x813d('0xe'),'data3',_0x813d('0xf'),'data5','data6',_0x813d('0x10')]}]},'log':_0x813d('0x2')});};};
\ No newline at end of file
+var _0xa4a1=['data2','data5','data7','../client','getTriggers','Request','GetTrigger','channel','Condition','operator','value','field','Action','Actions','action','data1'];(function(_0x26c053,_0x17f454){var _0x4d0ad5=function(_0x39080c){while(--_0x39080c){_0x26c053['push'](_0x26c053['shift']());}};_0x4d0ad5(++_0x17f454);}(_0xa4a1,0x153));var _0x1a4a=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa4a1[_0x3dd15e];return _0x231fd0;};'use strict';var client=require(_0x1a4a('0x0'));exports[_0x1a4a('0x1')]=function(_0x2deac8){return function(_0xa68385){return client[_0x1a4a('0x2')](_0x1a4a('0x3'),{'options':{'raw':![],'attributes':['id','name',_0x1a4a('0x4'),'status'],'include':[{'model':_0x1a4a('0x5'),'as':'AllConditions','attributes':['id','field',_0x1a4a('0x6'),_0x1a4a('0x7')]},{'model':_0x1a4a('0x5'),'as':'AnyConditions','attributes':['id',_0x1a4a('0x8'),'operator',_0x1a4a('0x7')]},{'model':_0x1a4a('0x9'),'as':_0x1a4a('0xa'),'attributes':['id',_0x1a4a('0xb'),_0x1a4a('0xc'),_0x1a4a('0xd'),'data3','data4',_0x1a4a('0xe'),'data6',_0x1a4a('0xf')]}]},'log':_0x1a4a('0x3')});};};
\ No newline at end of file
index da461c7..3cb9a10 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d69=['../client','getTrunks','Request','GetTrunk','name','registry','defaultuser'];(function(_0x1028f3,_0x523089){var _0x1d0732=function(_0x232513){while(--_0x232513){_0x1028f3['push'](_0x1028f3['shift']());}};_0x1d0732(++_0x523089);}(_0x7d69,0x149));var _0x97d6=function(_0x1641d6,_0x21e705){_0x1641d6=_0x1641d6-0x0;var _0x338f38=_0x7d69[_0x1641d6];return _0x338f38;};'use strict';var client=require(_0x97d6('0x0'));exports[_0x97d6('0x1')]=function(_0x59f0ba){return function(_0x462fa1){return client[_0x97d6('0x2')](_0x97d6('0x3'),{'options':{'raw':!![],'where':{'active':0x1},'attributes':['id',_0x97d6('0x4'),_0x97d6('0x5'),_0x97d6('0x6')]},'log':_0x97d6('0x3')});};};
\ No newline at end of file
+var _0xf12f=['registry','defaultuser','../client','getTrunks','Request','GetTrunk','name'];(function(_0x462ee9,_0x52d1f6){var _0x2a0d7b=function(_0x5f0ff6){while(--_0x5f0ff6){_0x462ee9['push'](_0x462ee9['shift']());}};_0x2a0d7b(++_0x52d1f6);}(_0xf12f,0x1bb));var _0xff12=function(_0x5ef8a6,_0x3891b1){_0x5ef8a6=_0x5ef8a6-0x0;var _0x363a82=_0xf12f[_0x5ef8a6];return _0x363a82;};'use strict';var client=require(_0xff12('0x0'));exports[_0xff12('0x1')]=function(_0x2273cb){return function(_0x29ef5c){return client[_0xff12('0x2')](_0xff12('0x3'),{'options':{'raw':!![],'where':{'active':0x1},'attributes':['id',_0xff12('0x4'),_0xff12('0x5'),_0xff12('0x6')]},'log':'GetTrunk'});};};
\ No newline at end of file
index 5dec7bd..7f1869f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['getAgent','Request','GetUser','agent','name','email','fullname','online','lastLoginAt','pauseType','lastPauseAt','voicePause','phone','mobile','interface','getAgents','getTelephones','accountcode','internal','savePause','PauseUser'];(function(_0x4fc166,_0x2974d6){var _0x2328f9=function(_0x4401a9){while(--_0x4401a9){_0x4fc166['push'](_0x4fc166['shift']());}};_0x2328f9(++_0x2974d6);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var client=require('../client');exports['getAgents']=function(){return function(){return client[_0x3071('0x0')](_0x3071('0x1'),{'options':{'raw':![],'where':{'role':_0x3071('0x2')},'attributes':['id',_0x3071('0x3'),_0x3071('0x4'),'accountcode',_0x3071('0x5'),_0x3071('0x6'),_0x3071('0x7'),_0x3071('0x8'),_0x3071('0x9'),_0x3071('0xa'),_0x3071('0xb'),_0x3071('0xc'),_0x3071('0xd')]},'log':_0x3071('0xe')});};};exports[_0x3071('0xf')]=function(){return function(){return client[_0x3071('0x0')](_0x3071('0x1'),{'options':{'raw':!![],'where':{'role':'telephone'},'attributes':['id',_0x3071('0x3'),_0x3071('0x10'),_0x3071('0x11')]},'log':_0x3071('0xf')});};};exports[_0x3071('0x12')]=function(_0x4a470a,_0x2ace21,_0x11a7ee){return client[_0x3071('0x0')](_0x3071('0x13'),{'body':{'type':_0x2ace21,'uniqueid':_0x11a7ee},'options':{'where':{'id':_0x4a470a['id']}},'log':_0x3071('0x12')});};exports['saveUnpause']=function(_0x5330a8){return client[_0x3071('0x0')]('UnpauseUser',{'body':{},'options':{'where':{'id':_0x5330a8['id']}},'log':_0x3071('0x12')});};exports[_0x3071('0x14')]=function(_0x5d4883){return client[_0x3071('0x0')]('ShowUser',{'options':{'raw':![],'where':{'role':_0x3071('0x2'),'id':_0x5d4883},'attributes':['id',_0x3071('0x3'),_0x3071('0x4'),_0x3071('0x10'),_0x3071('0x5'),_0x3071('0x6'),_0x3071('0x7'),_0x3071('0x8'),_0x3071('0x9'),_0x3071('0xa'),'interface']},'log':_0x3071('0x14')});};
\ No newline at end of file
+var _0xcb91=['UnpauseUser','getAgent','ShowUser','email','lastPauseAt','Request','GetUser','agent','name','accountcode','fullname','lastLoginAt','pauseType','voicePause','phone','interface','getAgents','internal','getTelephones','savePause','PauseUser'];(function(_0xe6a25b,_0x4174c1){var _0x68a234=function(_0x286619){while(--_0x286619){_0xe6a25b['push'](_0xe6a25b['shift']());}};_0x68a234(++_0x4174c1);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x28014d,_0x383e2f){_0x28014d=_0x28014d-0x0;var _0x2572cc=_0xcb91[_0x28014d];return _0x2572cc;};'use strict';var client=require('../client');exports['getAgents']=function(){return function(){return client[_0x1cb9('0x0')](_0x1cb9('0x1'),{'options':{'raw':![],'where':{'role':_0x1cb9('0x2')},'attributes':['id',_0x1cb9('0x3'),'email',_0x1cb9('0x4'),_0x1cb9('0x5'),'online',_0x1cb9('0x6'),_0x1cb9('0x7'),'lastPauseAt',_0x1cb9('0x8'),_0x1cb9('0x9'),'mobile',_0x1cb9('0xa')]},'log':_0x1cb9('0xb')});};};exports['getTelephones']=function(){return function(){return client[_0x1cb9('0x0')]('GetUser',{'options':{'raw':!![],'where':{'role':'telephone'},'attributes':['id',_0x1cb9('0x3'),_0x1cb9('0x4'),_0x1cb9('0xc')]},'log':_0x1cb9('0xd')});};};exports[_0x1cb9('0xe')]=function(_0x50ce71,_0x9b58f1,_0x44a6b4){return client[_0x1cb9('0x0')](_0x1cb9('0xf'),{'body':{'type':_0x9b58f1,'uniqueid':_0x44a6b4},'options':{'where':{'id':_0x50ce71['id']}},'log':_0x1cb9('0xe')});};exports['saveUnpause']=function(_0x5e3c19){return client['Request'](_0x1cb9('0x10'),{'body':{},'options':{'where':{'id':_0x5e3c19['id']}},'log':_0x1cb9('0xe')});};exports[_0x1cb9('0x11')]=function(_0x1c714f){return client['Request'](_0x1cb9('0x12'),{'options':{'raw':![],'where':{'role':_0x1cb9('0x2'),'id':_0x1c714f},'attributes':['id',_0x1cb9('0x3'),_0x1cb9('0x13'),_0x1cb9('0x4'),'fullname','online',_0x1cb9('0x6'),_0x1cb9('0x7'),_0x1cb9('0x14'),_0x1cb9('0x8'),_0x1cb9('0xa')]},'log':_0x1cb9('0x11')});};
\ No newline at end of file
index ce138af..2af63f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x79f1=['update','UpdateVoiceAgentReport','../client','Request','CreateVoiceAgentReport'];(function(_0x435be3,_0x5b3896){var _0x512379=function(_0x2bdf50){while(--_0x2bdf50){_0x435be3['push'](_0x435be3['shift']());}};_0x512379(++_0x5b3896);}(_0x79f1,0x1d8));var _0x179f=function(_0x541ea6,_0x51cab6){_0x541ea6=_0x541ea6-0x0;var _0x3c3e84=_0x79f1[_0x541ea6];return _0x3c3e84;};'use strict';var client=require(_0x179f('0x0'));exports['create']=function(_0x45b314){return client[_0x179f('0x1')](_0x179f('0x2'),{'body':_0x45b314,'log':_0x179f('0x2')});};exports[_0x179f('0x3')]=function(_0x4ba28d,_0x207e3f,_0x3af1a6){return client[_0x179f('0x1')](_0x179f('0x4'),{'body':_0x4ba28d,'options':{'where':{'uniqueid':_0x207e3f,'interface':_0x3af1a6,'agentcomplete':!![]}},'log':'UpdateVoiceAgentReport'});};
\ No newline at end of file
+var _0xc0d3=['Request','CreateVoiceAgentReport','update','UpdateVoiceAgentReport','../client','create'];(function(_0x13b8f3,_0x442821){var _0x1a6d06=function(_0x5126f2){while(--_0x5126f2){_0x13b8f3['push'](_0x13b8f3['shift']());}};_0x1a6d06(++_0x442821);}(_0xc0d3,0x88));var _0x3c0d=function(_0x1c8158,_0xb53103){_0x1c8158=_0x1c8158-0x0;var _0x5a9d47=_0xc0d3[_0x1c8158];return _0x5a9d47;};'use strict';var client=require(_0x3c0d('0x0'));exports[_0x3c0d('0x1')]=function(_0x1bc826){return client[_0x3c0d('0x2')](_0x3c0d('0x3'),{'body':_0x1bc826,'log':_0x3c0d('0x3')});};exports[_0x3c0d('0x4')]=function(_0xe67527,_0x3b9162,_0xb5dcb0){return client[_0x3c0d('0x2')](_0x3c0d('0x5'),{'body':_0xe67527,'options':{'where':{'uniqueid':_0x3b9162,'interface':_0xb5dcb0,'agentcomplete':!![]}},'log':_0x3c0d('0x5')});};
\ No newline at end of file
index 2fcfe90..14938a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x488b=['duration','billableseconds','../client','create','Request','CreateVoiceCallReport','merge','calleridnum','context','callerid','DOCUMENTATION','GetVoiceCallReport','startOf','day','YYYY-MM-DD\x20HH:mm:ss','endOf','format','type','disposition'];(function(_0x2e2f0e,_0xbf4901){var _0x5a5e9c=function(_0x632462){while(--_0x632462){_0x2e2f0e['push'](_0x2e2f0e['shift']());}};_0x5a5e9c(++_0xbf4901);}(_0x488b,0x1b7));var _0xb488=function(_0x5b980c,_0x1f631f){_0x5b980c=_0x5b980c-0x0;var _0x57b235=_0x488b[_0x5b980c];return _0x57b235;};'use strict';var moment=require('moment');var util=require('util');var _=require('lodash');var client=require(_0xb488('0x0'));exports[_0xb488('0x1')]=function(_0xc799e4){return client[_0xb488('0x2')](_0xb488('0x3'),{'body':_[_0xb488('0x4')](_0xc799e4,{'source':_0xc799e4[_0xb488('0x5')],'destinationcontext':_0xc799e4[_0xb488('0x6')],'callerid':_0xc799e4[_0xb488('0x7')],'amaflags':_0xb488('0x8')}),'log':_0xb488('0x3')});};exports['getVoiceCallReports']=function(){return function(){return client[_0xb488('0x2')](_0xb488('0x9'),{'options':{'where':{'type':['outbound'],'createdAt':{'$between':[moment()[_0xb488('0xa')](_0xb488('0xb'))['format'](_0xb488('0xc')),moment()[_0xb488('0xd')](_0xb488('0xb'))[_0xb488('0xe')]('YYYY-MM-DD\x20HH:mm:ss')]}},'attributes':[_0xb488('0xf'),_0xb488('0x10'),_0xb488('0x11'),_0xb488('0x12')]},'log':'GetVoiceCallReports'});};};
\ No newline at end of file
+var _0xbe71=['GetVoiceCallReport','outbound','day','YYYY-MM-DD\x20HH:mm:ss','endOf','format','disposition','duration','GetVoiceCallReports','moment','lodash','../client','create','Request','CreateVoiceCallReport','merge','calleridnum','context','callerid','DOCUMENTATION','getVoiceCallReports'];(function(_0x1eb0c7,_0x303ebd){var _0x168fb5=function(_0x5f0136){while(--_0x5f0136){_0x1eb0c7['push'](_0x1eb0c7['shift']());}};_0x168fb5(++_0x303ebd);}(_0xbe71,0x198));var _0x1be7=function(_0xda13e,_0x25436a){_0xda13e=_0xda13e-0x0;var _0x4a721d=_0xbe71[_0xda13e];return _0x4a721d;};'use strict';var moment=require(_0x1be7('0x0'));var util=require('util');var _=require(_0x1be7('0x1'));var client=require(_0x1be7('0x2'));exports[_0x1be7('0x3')]=function(_0x2dccbe){return client[_0x1be7('0x4')](_0x1be7('0x5'),{'body':_[_0x1be7('0x6')](_0x2dccbe,{'source':_0x2dccbe[_0x1be7('0x7')],'destinationcontext':_0x2dccbe[_0x1be7('0x8')],'callerid':_0x2dccbe[_0x1be7('0x9')],'amaflags':_0x1be7('0xa')}),'log':'CreateVoiceCallReport'});};exports[_0x1be7('0xb')]=function(){return function(){return client[_0x1be7('0x4')](_0x1be7('0xc'),{'options':{'where':{'type':[_0x1be7('0xd')],'createdAt':{'$between':[moment()['startOf'](_0x1be7('0xe'))['format'](_0x1be7('0xf')),moment()[_0x1be7('0x10')](_0x1be7('0xe'))[_0x1be7('0x11')](_0x1be7('0xf'))]}},'attributes':['type',_0x1be7('0x12'),_0x1be7('0x13'),'billableseconds']},'log':_0x1be7('0x14')});};};
\ No newline at end of file
index 2a83cbe..eacc34e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ed6=['create','Request','CreateVoiceDialReport','../client'];(function(_0x5ce160,_0x26f016){var _0x3c2f88=function(_0x2e2178){while(--_0x2e2178){_0x5ce160['push'](_0x5ce160['shift']());}};_0x3c2f88(++_0x26f016);}(_0x8ed6,0x9f));var _0x68ed=function(_0x379555,_0x1ee2f4){_0x379555=_0x379555-0x0;var _0x560bab=_0x8ed6[_0x379555];return _0x560bab;};'use strict';var client=require(_0x68ed('0x0'));exports[_0x68ed('0x1')]=function(_0x41f107){return client[_0x68ed('0x2')](_0x68ed('0x3'),{'body':_0x41f107,'log':_0x68ed('0x3')});};
\ No newline at end of file
+var _0x9897=['CreateVoiceDialReport','../client','create','Request'];(function(_0xa1e3e3,_0x29fe0e){var _0xc980e9=function(_0x1f5adc){while(--_0x1f5adc){_0xa1e3e3['push'](_0xa1e3e3['shift']());}};_0xc980e9(++_0x29fe0e);}(_0x9897,0x15d));var _0x7989=function(_0xf50820,_0x56f041){_0xf50820=_0xf50820-0x0;var _0x2a9b10=_0x9897[_0xf50820];return _0x2a9b10;};'use strict';var client=require(_0x7989('0x0'));exports[_0x7989('0x1')]=function(_0x2ae251){return client[_0x7989('0x2')](_0x7989('0x3'),{'body':_0x2ae251,'log':_0x7989('0x3')});};
\ No newline at end of file
index 7a27b52..3f2f7ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa4db=['getVoiceExtensions','GetVoiceExtension','exten','recordingFormat'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0xa4db,0x139));var _0xba4d=function(_0x444852,_0x31e5c8){_0x444852=_0x444852-0x0;var _0x59a49c=_0xa4db[_0x444852];return _0x59a49c;};'use strict';var client=require('../client');exports['getVoiceExtensions']=function(){return function(){return client['Request'](_0xba4d('0x0'),{'options':{'raw':!![],'attributes':['id',_0xba4d('0x1'),_0xba4d('0x2')],'where':{'VoiceExtensionId':null}},'log':_0xba4d('0x3')});};};
\ No newline at end of file
+var _0x39c4=['getVoiceExtensions','exten','recordingFormat'];(function(_0x5c91f6,_0x3515ce){var _0x5b1144=function(_0x1fa681){while(--_0x1fa681){_0x5c91f6['push'](_0x5c91f6['shift']());}};_0x5b1144(++_0x3515ce);}(_0x39c4,0x174));var _0x439c=function(_0x247b98,_0x513df5){_0x247b98=_0x247b98-0x0;var _0xf5f93=_0x39c4[_0x247b98];return _0xf5f93;};'use strict';var client=require('../client');exports[_0x439c('0x0')]=function(){return function(){return client['Request']('GetVoiceExtension',{'options':{'raw':!![],'attributes':['id',_0x439c('0x1'),_0x439c('0x2')],'where':{'VoiceExtensionId':null}},'log':'getVoiceExtensions'});};};
\ No newline at end of file
index 40b689d..6e4abcc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x22a4=['dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDMaximumWordLength','dialRecallMeTimeout','dialRecallInQueue','dialOrderByScheduledAt','dialAgiAfterHangupAgent','dialAgiAfterHangupClient','dialQueueProject2','monitor_format','strategy','dialRandomLastDigitCallerIdNumber','dialCutDigit','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedRetryFrequency','dialMachineRetryFrequency','dialAgentRejectRetryFrequency','mandatoryDisposition','dialPredictiveIntervalMaxThreshold','Trunk','callerid','Pause','name','Interval','Intervals','interval','../client','getVoiceQueues','Request','GetVoiceQueue','acw','autopause','type','dialActive','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateTimeout','dialQueueOptions','dialQueueTimeout','dialQueueProject','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialGlobalMaxRetry','dialTimezone','dialPrefix','dialCheckDuplicateType','dialAMDActive'];(function(_0x42c6f1,_0x338d7b){var _0x3c7398=function(_0x151494){while(--_0x151494){_0x42c6f1['push'](_0x42c6f1['shift']());}};_0x3c7398(++_0x338d7b);}(_0x22a4,0x93));var _0x422a=function(_0xc729b,_0xeccb29){_0xc729b=_0xc729b-0x0;var _0x367241=_0x22a4[_0xc729b];return _0x367241;};'use strict';var client=require(_0x422a('0x0'));exports[_0x422a('0x1')]=function(){return function(){return client[_0x422a('0x2')](_0x422a('0x3'),{'options':{'raw':![],'attributes':['id','name',_0x422a('0x4'),'acwTimeout',_0x422a('0x5'),'monitor_format',_0x422a('0x6'),_0x422a('0x7'),'dialMethod',_0x422a('0x8'),_0x422a('0x9'),_0x422a('0xa'),_0x422a('0xb'),_0x422a('0xc'),_0x422a('0xd'),'dialOriginateCallerIdName','dialOriginateCallerIdNumber',_0x422a('0xe'),_0x422a('0xf'),_0x422a('0x10'),_0x422a('0x11'),'dialCongestionMaxRetry',_0x422a('0x12'),_0x422a('0x13'),_0x422a('0x14'),_0x422a('0x15'),'dialNoAnswerRetryFrequency',_0x422a('0x16'),_0x422a('0x17'),'dialGlobalInterval',_0x422a('0x18'),_0x422a('0x19'),_0x422a('0x1a'),_0x422a('0x1b'),_0x422a('0x1c'),_0x422a('0x1d'),'dialAMDTotalAnalysisTime',_0x422a('0x1e'),_0x422a('0x1f'),_0x422a('0x20'),'dialAMDSilenceThreshold',_0x422a('0x21'),'timeout',_0x422a('0x22'),_0x422a('0x23'),_0x422a('0x24'),_0x422a('0x25'),_0x422a('0x26'),_0x422a('0x27'),_0x422a('0x28'),_0x422a('0x29'),_0x422a('0x2a'),_0x422a('0x2b'),'dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency',_0x422a('0x2c'),_0x422a('0x2d'),'dialAbandonedMaxRetry',_0x422a('0x2e'),'dialMachineMaxRetry',_0x422a('0x2f'),'dialAgentRejectMaxRetry',_0x422a('0x30'),_0x422a('0x31'),_0x422a('0x32'),'dialPredictiveIntervalMinThreshold'],'include':[{'model':_0x422a('0x33'),'as':_0x422a('0x33'),'attributes':['id','name',_0x422a('0x34'),'active']},{'model':_0x422a('0x35'),'as':'mandatoryDispositionPause','attributes':['id',_0x422a('0x36')]},{'model':_0x422a('0x33'),'as':'TrunkBackup','attributes':['id',_0x422a('0x36'),_0x422a('0x34'),'active']},{'model':_0x422a('0x37'),'as':_0x422a('0x37'),'attributes':['id',_0x422a('0x36')],'include':[{'model':_0x422a('0x37'),'as':_0x422a('0x38'),'attributes':['id',_0x422a('0x36'),_0x422a('0x39')]}]}]},'log':_0x422a('0x1')});};};
\ No newline at end of file
+var _0x87d8=['dialCutDigit','dialNoSuchNumberRetryFrequency','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','mandatoryDisposition','dialPredictiveIntervalMaxThreshold','Trunk','callerid','active','Pause','mandatoryDispositionPause','TrunkBackup','Interval','interval','getVoiceQueues','Request','GetVoiceQueue','name','acw','acwTimeout','autopause','monitor_format','type','dialActive','dialMethod','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dialPredictiveInterval','dialOriginateCallerIdName','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialTimezone','dialGlobalInterval','dialPrefix','dialCheckDuplicateType','dialAMDActive','dialAMDInitialSilence','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialRecallInQueue','dialOrderByScheduledAt','dialAgiAfterHangupClient','dialQueueProject2','dialRandomLastDigitCallerIdNumber'];(function(_0x4706af,_0x24b450){var _0x2f75c4=function(_0x415a9a){while(--_0x415a9a){_0x4706af['push'](_0x4706af['shift']());}};_0x2f75c4(++_0x24b450);}(_0x87d8,0x1a9));var _0x887d=function(_0x106466,_0xe55a0){_0x106466=_0x106466-0x0;var _0x4ae2aa=_0x87d8[_0x106466];return _0x4ae2aa;};'use strict';var client=require('../client');exports[_0x887d('0x0')]=function(){return function(){return client[_0x887d('0x1')](_0x887d('0x2'),{'options':{'raw':![],'attributes':['id',_0x887d('0x3'),_0x887d('0x4'),_0x887d('0x5'),_0x887d('0x6'),_0x887d('0x7'),_0x887d('0x8'),_0x887d('0x9'),_0x887d('0xa'),_0x887d('0xb'),_0x887d('0xc'),_0x887d('0xd'),_0x887d('0xe'),'dialPredictiveOptimizationPercentage',_0x887d('0xf'),_0x887d('0x10'),'dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueOptions','dialQueueTimeout',_0x887d('0x11'),_0x887d('0x12'),_0x887d('0x13'),_0x887d('0x14'),'dialBusyRetryFrequency','dialNoAnswerMaxRetry',_0x887d('0x15'),_0x887d('0x16'),_0x887d('0x17'),_0x887d('0x18'),_0x887d('0x19'),_0x887d('0x1a'),_0x887d('0x1b'),_0x887d('0x1c'),'dialAMDGreeting',_0x887d('0x1d'),_0x887d('0x1e'),_0x887d('0x1f'),'dialAMDBetweenWordsSilence',_0x887d('0x20'),_0x887d('0x21'),'dialAMDMaximumWordLength','timeout','dialRecallMeTimeout',_0x887d('0x22'),_0x887d('0x23'),'dialAgiAfterHangupAgent',_0x887d('0x24'),_0x887d('0x25'),_0x887d('0x7'),'strategy',_0x887d('0x26'),_0x887d('0x27'),'dialNoSuchNumberMaxRetry',_0x887d('0x28'),'dialDropMaxRetry',_0x887d('0x29'),_0x887d('0x2a'),_0x887d('0x2b'),_0x887d('0x2c'),_0x887d('0x2d'),_0x887d('0x2e'),_0x887d('0x2f'),_0x887d('0x30'),_0x887d('0x31'),'dialPredictiveIntervalMinThreshold','dialPreviewAutoRecallMe'],'include':[{'model':_0x887d('0x32'),'as':'Trunk','attributes':['id',_0x887d('0x3'),_0x887d('0x33'),_0x887d('0x34')]},{'model':_0x887d('0x35'),'as':_0x887d('0x36'),'attributes':['id',_0x887d('0x3')]},{'model':'Trunk','as':_0x887d('0x37'),'attributes':['id',_0x887d('0x3'),'callerid','active']},{'model':_0x887d('0x38'),'as':_0x887d('0x38'),'attributes':['id',_0x887d('0x3')],'include':[{'model':_0x887d('0x38'),'as':'Intervals','attributes':['id',_0x887d('0x3'),_0x887d('0x39')]}]}]},'log':_0x887d('0x0')});};};
\ No newline at end of file
index f16eb87..5c3a848 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(_0xeddf40,_0x12a6d6){var _0x455c83=function(_0x1636c9){while(--_0x1636c9){_0xeddf40['push'](_0xeddf40['shift']());}};_0x455c83(++_0x12a6d6);}(_0xa9e0,0x123));var _0x0a9e=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0xa9e0[_0x6c993a];return _0x27f547;};'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(_0x2ef792,_0x41eaf1){var _0x1debd9=function(_0x2e7f28){while(--_0x2e7f28){_0x2ef792['push'](_0x2ef792['shift']());}};_0x1debd9(++_0x41eaf1);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0xa9e0[_0x3947c9];return _0x2e7871;};'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 704edee..b6137e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3275=['GetVoiceQueueRtPauses','../client','getVoiceQueueRtPauses','Request'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0x3275,0xf9));var _0x5327=function(_0x5a778b,_0x717daa){_0x5a778b=_0x5a778b-0x0;var _0x32f0da=_0x3275[_0x5a778b];return _0x32f0da;};'use strict';var client=require(_0x5327('0x0'));exports[_0x5327('0x1')]=function(_0x514e50){return function(){return client[_0x5327('0x2')](_0x5327('0x3'),{'options':{'where':{'VoiceQueueId':_0x514e50,'paused':!![]},'raw':!![]},'log':'getVoiceQueueRtPauses'});};};
\ No newline at end of file
+var _0x19ab=['Request','GetVoiceQueueRtPauses','../client','getVoiceQueueRtPauses'];(function(_0xc22405,_0x6cfe72){var _0x7a32c6=function(_0x1166c0){while(--_0x1166c0){_0xc22405['push'](_0xc22405['shift']());}};_0x7a32c6(++_0x6cfe72);}(_0x19ab,0x182));var _0xb19a=function(_0x204f41,_0x1023a8){_0x204f41=_0x204f41-0x0;var _0x105635=_0x19ab[_0x204f41];return _0x105635;};'use strict';var client=require(_0xb19a('0x0'));exports[_0xb19a('0x1')]=function(_0x325e6c){return function(){return client[_0xb19a('0x2')](_0xb19a('0x3'),{'options':{'where':{'VoiceQueueId':_0x325e6c,'paused':!![]},'raw':!![]},'log':_0xb19a('0x1')});};};
\ No newline at end of file
index 29feeb3..3f4c0da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['CreateVoiceRecording','merge','monitorFilename','lodash','../client','create'];(function(_0x26c7f5,_0x587db7){var _0x1a81b3=function(_0x3f6b3b){while(--_0x3f6b3b){_0x26c7f5['push'](_0x26c7f5['shift']());}};_0x1a81b3(++_0x587db7);}(_0x9957,0x93));var _0x7995=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0x9957[_0x2f5ac5];return _0x37c9a8;};'use strict';var _=require(_0x7995('0x0'));var client=require(_0x7995('0x1'));exports[_0x7995('0x2')]=function(_0x10a05d){return client['Request'](_0x7995('0x3'),{'body':_[_0x7995('0x4')](_0x10a05d,{'value':_0x10a05d[_0x7995('0x5')]}),'log':_0x7995('0x3')});};
\ No newline at end of file
+var _0x9957=['CreateVoiceRecording','merge','monitorFilename','lodash','../client','create'];(function(_0x5c2bd5,_0x1f7294){var _0x461460=function(_0x58b172){while(--_0x58b172){_0x5c2bd5['push'](_0x5c2bd5['shift']());}};_0x461460(++_0x1f7294);}(_0x9957,0x93));var _0x7995=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0x9957[_0x6131cd];return _0x47e916;};'use strict';var _=require(_0x7995('0x0'));var client=require(_0x7995('0x1'));exports[_0x7995('0x2')]=function(_0x10a05d){return client['Request'](_0x7995('0x3'),{'body':_[_0x7995('0x4')](_0x10a05d,{'value':_0x10a05d[_0x7995('0x5')]}),'log':_0x7995('0x3')});};
\ No newline at end of file
index 43df786..43564ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x943b=['transfers','blindTransfer','CreateVoiceTransferReport','result','transfererchannel','transferercalleridnum','transferercalleridname','transfererconnectedlinename','transfererexten','transfererlinkedid','transfereechannel','transfereecalleridnum','transfereeconnectedlinenum','transfereeconnectedlinename','transfereeaccountcode','transfereecontext','transfereeexten','transfereelinkedid','isexternal','context','extension','blind','origtransfererchannel','origtransferercalleridnum','origtransferercalleridname','secondtransfererconnectedlinenum','secondtransfererconnectedlinename','origtransfereraccountcode','secondtransferercontext','secondtransfererexten','origtransfererlinkedid','transfertargetchannel','transfertargetcalleridname','transfertargetconnectedlinenum','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetcontext','transfertargetexten','transfertargetlinkedid','origtransferercontext','../client'];(function(_0x440f7a,_0x4368eb){var _0x5325e1=function(_0x1324a7){while(--_0x1324a7){_0x440f7a['push'](_0x440f7a['shift']());}};_0x5325e1(++_0x4368eb);}(_0x943b,0x170));var _0xb943=function(_0x244af5,_0x3acee3){_0x244af5=_0x244af5-0x0;var _0x4c9459=_0x943b[_0x244af5];return _0x4c9459;};'use strict';var client=require(_0xb943('0x0'));exports[_0xb943('0x1')]={};exports[_0xb943('0x2')]=function(_0x204ff7){return client['Request'](_0xb943('0x3'),{'body':{'result':_0x204ff7[_0xb943('0x4')],'transfererchannel':_0x204ff7[_0xb943('0x5')],'transferercalleridnum':_0x204ff7[_0xb943('0x6')],'transferercalleridname':_0x204ff7[_0xb943('0x7')],'transfererconnectedlinenum':_0x204ff7['transfererconnectedlinenum'],'transfererconnectedlinename':_0x204ff7[_0xb943('0x8')],'transfereraccountcode':_0x204ff7['transfereraccountcode'],'transferercontext':_0x204ff7['transferercontext'],'transfererexten':_0x204ff7[_0xb943('0x9')],'transfererlinkedid':_0x204ff7[_0xb943('0xa')],'transfereechannel':_0x204ff7[_0xb943('0xb')],'transfereecalleridnum':_0x204ff7[_0xb943('0xc')],'transfereecalleridname':_0x204ff7['transfereecalleridname'],'transfereeconnectedlinenum':_0x204ff7[_0xb943('0xd')],'transfereeconnectedlinename':_0x204ff7[_0xb943('0xe')],'transfereeaccountcode':_0x204ff7[_0xb943('0xf')],'transfereecontext':_0x204ff7[_0xb943('0x10')],'transfereeexten':_0x204ff7[_0xb943('0x11')],'transfereelinkedid':_0x204ff7[_0xb943('0x12')],'isexternal':_0x204ff7[_0xb943('0x13')],'context':_0x204ff7[_0xb943('0x14')],'extension':_0x204ff7[_0xb943('0x15')],'type':_0xb943('0x16')},'log':_0xb943('0x3')});};exports['attendedTransfer']=function(_0x380c92){return client['Request'](_0xb943('0x3'),{'body':{'result':_0x380c92[_0xb943('0x4')],'transfererchannel':_0x380c92[_0xb943('0x17')],'transferercalleridnum':_0x380c92[_0xb943('0x18')],'transferercalleridname':_0x380c92[_0xb943('0x19')],'transfererconnectedlinenum':_0x380c92[_0xb943('0x1a')],'transfererconnectedlinename':_0x380c92[_0xb943('0x1b')],'transfereraccountcode':_0x380c92[_0xb943('0x1c')],'transferercontext':_0x380c92[_0xb943('0x1d')],'transfererexten':_0x380c92[_0xb943('0x1e')],'transfererlinkedid':_0x380c92[_0xb943('0x1f')],'transfereechannel':_0x380c92[_0xb943('0x20')],'transfereecalleridnum':_0x380c92['transfertargetcalleridnum'],'transfereecalleridname':_0x380c92[_0xb943('0x21')],'transfereeconnectedlinenum':_0x380c92[_0xb943('0x22')],'transfereeconnectedlinename':_0x380c92[_0xb943('0x23')],'transfereeaccountcode':_0x380c92[_0xb943('0x24')],'transfereecontext':_0x380c92[_0xb943('0x25')],'transfereeexten':_0x380c92[_0xb943('0x26')],'transfereelinkedid':_0x380c92[_0xb943('0x27')],'isexternal':_0x380c92[_0xb943('0x13')],'context':_0x380c92[_0xb943('0x28')],'extension':_0x380c92['origtransfererexten'],'type':'attended'},'log':_0xb943('0x3')});};
\ No newline at end of file
+var _0x6d78=['transferercontext','transfererexten','transfererlinkedid','transfereecalleridnum','transfereecalleridname','transfereeconnectedlinenum','transfereeconnectedlinename','transfereeaccountcode','transfereecontext','transfereeexten','transfereelinkedid','isexternal','extension','blind','origtransfererchannel','origtransferercalleridnum','origtransferercalleridname','secondtransfererconnectedlinenum','secondtransfererconnectedlinename','origtransfereraccountcode','secondtransferercontext','origtransfererlinkedid','transfertargetchannel','transfertargetcalleridnum','transfertargetcalleridname','transfertargetconnectedlinename','transfertargetaccountcode','origtransferercontext','origtransfererexten','attended','../client','Request','CreateVoiceTransferReport','result','transfererchannel','transferercalleridnum','transferercalleridname','transfererconnectedlinenum','transfererconnectedlinename'];(function(_0x21cf80,_0x1fb0a1){var _0x5c6bed=function(_0x3492c3){while(--_0x3492c3){_0x21cf80['push'](_0x21cf80['shift']());}};_0x5c6bed(++_0x1fb0a1);}(_0x6d78,0x1cb));var _0x86d7=function(_0x19977c,_0x42c3df){_0x19977c=_0x19977c-0x0;var _0x28ef04=_0x6d78[_0x19977c];return _0x28ef04;};'use strict';var client=require(_0x86d7('0x0'));exports['transfers']={};exports['blindTransfer']=function(_0x45a267){return client[_0x86d7('0x1')](_0x86d7('0x2'),{'body':{'result':_0x45a267[_0x86d7('0x3')],'transfererchannel':_0x45a267[_0x86d7('0x4')],'transferercalleridnum':_0x45a267[_0x86d7('0x5')],'transferercalleridname':_0x45a267[_0x86d7('0x6')],'transfererconnectedlinenum':_0x45a267[_0x86d7('0x7')],'transfererconnectedlinename':_0x45a267[_0x86d7('0x8')],'transfereraccountcode':_0x45a267['transfereraccountcode'],'transferercontext':_0x45a267[_0x86d7('0x9')],'transfererexten':_0x45a267[_0x86d7('0xa')],'transfererlinkedid':_0x45a267[_0x86d7('0xb')],'transfereechannel':_0x45a267['transfereechannel'],'transfereecalleridnum':_0x45a267[_0x86d7('0xc')],'transfereecalleridname':_0x45a267[_0x86d7('0xd')],'transfereeconnectedlinenum':_0x45a267[_0x86d7('0xe')],'transfereeconnectedlinename':_0x45a267[_0x86d7('0xf')],'transfereeaccountcode':_0x45a267[_0x86d7('0x10')],'transfereecontext':_0x45a267[_0x86d7('0x11')],'transfereeexten':_0x45a267[_0x86d7('0x12')],'transfereelinkedid':_0x45a267[_0x86d7('0x13')],'isexternal':_0x45a267[_0x86d7('0x14')],'context':_0x45a267['context'],'extension':_0x45a267[_0x86d7('0x15')],'type':_0x86d7('0x16')},'log':_0x86d7('0x2')});};exports['attendedTransfer']=function(_0x5bcadc){return client[_0x86d7('0x1')](_0x86d7('0x2'),{'body':{'result':_0x5bcadc['result'],'transfererchannel':_0x5bcadc[_0x86d7('0x17')],'transferercalleridnum':_0x5bcadc[_0x86d7('0x18')],'transferercalleridname':_0x5bcadc[_0x86d7('0x19')],'transfererconnectedlinenum':_0x5bcadc[_0x86d7('0x1a')],'transfererconnectedlinename':_0x5bcadc[_0x86d7('0x1b')],'transfereraccountcode':_0x5bcadc[_0x86d7('0x1c')],'transferercontext':_0x5bcadc[_0x86d7('0x1d')],'transfererexten':_0x5bcadc['secondtransfererexten'],'transfererlinkedid':_0x5bcadc[_0x86d7('0x1e')],'transfereechannel':_0x5bcadc[_0x86d7('0x1f')],'transfereecalleridnum':_0x5bcadc[_0x86d7('0x20')],'transfereecalleridname':_0x5bcadc[_0x86d7('0x21')],'transfereeconnectedlinenum':_0x5bcadc['transfertargetconnectedlinenum'],'transfereeconnectedlinename':_0x5bcadc[_0x86d7('0x22')],'transfereeaccountcode':_0x5bcadc[_0x86d7('0x23')],'transfereecontext':_0x5bcadc['transfertargetcontext'],'transfereeexten':_0x5bcadc['transfertargetexten'],'transfereelinkedid':_0x5bcadc['transfertargetlinkedid'],'isexternal':_0x5bcadc[_0x86d7('0x14')],'context':_0x5bcadc[_0x86d7('0x24')],'extension':_0x5bcadc[_0x86d7('0x25')],'type':_0x86d7('0x26')},'log':_0x86d7('0x2')});};
\ No newline at end of file
index c6104cd..2e63e5e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x11e5=['../properties','listen','format','%s/%s','SIP','name','timers','timer','updateAcw','updateStatusRealtime','pause','QueuePause','isConnected','error','asterisk','username','join','pick','keys','module','Reload','Action','then','message','ami\x20disconnected','command','action','Command','content','catch','voiceQueues','hasOwnProperty','strategy','answered','loggedIn','pTalking','sumBillable','sumDuration','sumHoldTime','total','abandoned','waiting','loggedInDb','type','outbound','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','temp','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','originated','erlangCalls','erlangCallToSecond','erlangBusyFactor','startPredictive','startProgressive','Trunk','active','callerid','Interval','push','length','find','omit','undefined','values','channels','voicechannel','map','channel','%s.%s','uniqueid','wav','MixMonitor','ai(mixmonitorid)','monitors','/var/spool/asterisk/monitor/','isNil','toLowerCase','YYYY-MM-DD\x20HH:mm:ss','mixmonitorid','rec','MixMonitor\x20Success','resolve','StopMixMonitor','destinationchannel','status','filename','stop','StopMixMonitor\x20Success','Channel\x20doesn\x27t\x20exist','voicequeuechannel','queueChannels','Hangup','voicequeuechannelredirect','Redirect','exten','context','agents','telephones','trunks','campaigns','run','event','Event\x20name\x20mandatory','emit','custom:','send','server','http','log','AMI\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','lodash','jayson/promise','validate','moment','../../../config/environment'];(function(_0x1ad0b5,_0x5a28c2){var _0x4552b2=function(_0x19b3d5){while(--_0x19b3d5){_0x1ad0b5['push'](_0x1ad0b5['shift']());}};_0x4552b2(++_0x5a28c2);}(_0x11e5,0x8b));var _0x511e=function(_0x134b10,_0x282cf6){_0x134b10=_0x134b10-0x0;var _0x204d24=_0x11e5[_0x134b10];return _0x204d24;};'use strict';var _=require(_0x511e('0x0'));var util=require('util');var jayson=require(_0x511e('0x1'));var schema=require(_0x511e('0x2'));var BPromise=require('bluebird');var moment=require(_0x511e('0x3'));var config=require(_0x511e('0x4'));var properties=require(_0x511e('0x5'));var ami=require('../ami');exports[_0x511e('0x6')]=function(_0x4fbd4f,_0x5923a7,_0x342539){return new BPromise(function(_0x323f8c,_0x466dec){var _0x57cac3={'QueuePause':function(_0x47cf56){return new Promise(function(_0x3ebc4b,_0xf0ba86){var _0x25deeb=util[_0x511e('0x7')](_0x511e('0x8'),_0x511e('0x9'),_0x47cf56[_0x511e('0xa')]);if(_0x4fbd4f[_0x511e('0xb')]&&_0x4fbd4f[_0x511e('0xb')][_0x25deeb]&&_0x4fbd4f[_0x511e('0xb')][_0x25deeb][_0x511e('0xc')]){_0x4fbd4f['timers'][_0x25deeb][_0x511e('0xd')]();}if(_0x4fbd4f['agents'][_0x25deeb]){_0x4fbd4f['agents'][_0x25deeb][_0x511e('0xe')]({'statePause':_0x47cf56[_0x511e('0xf')]?!![]:![]});}_0x3ebc4b({'code':0xc8,'message':_0x511e('0x10')});});},'Reload':function(_0x258e2f){var _0x464576=this;return new Promise(function(_0x7dc1bc,_0x4e72fd){if(ami[_0x511e('0x11')]()==![]){return _0x4e72fd(_0x464576[_0x511e('0x12')](0x1f4,[config['asterisk']['ip'],config[_0x511e('0x13')][_0x511e('0x14')],'ami\x20disconnected'][_0x511e('0x15')]('\x20')));}_0x258e2f=_[_0x511e('0x16')](_0x258e2f,_[_0x511e('0x17')](properties[_0x511e('0x18')]));_0x258e2f['action']=_0x511e('0x19');return ami[_0x511e('0x1a')](_0x258e2f)[_0x511e('0x1b')](function(_0x577616){_0x7dc1bc({'code':0xc8,'message':_0x577616[_0x511e('0x1c')]});})['catch'](function(_0x34e6cd){_0x4e72fd(_0x464576['error'](0x1f5,_0x34e6cd['message']));});});},'Command':function(_0x37ae92){var _0x5c4fb9=this;return new Promise(function(_0x33bef5,_0x325278){if(ami[_0x511e('0x11')]()==![]){return _0x325278(_0x5c4fb9[_0x511e('0x12')](0x1f4,[config[_0x511e('0x13')]['ip'],config[_0x511e('0x13')][_0x511e('0x14')],_0x511e('0x1d')]['join']('\x20')));}_0x37ae92=_[_0x511e('0x16')](_0x37ae92,_0x511e('0x1e'));_0x37ae92[_0x511e('0x1f')]=_0x511e('0x20');return ami[_0x511e('0x1a')](_0x37ae92)[_0x511e('0x1b')](function(_0x886b6){_0x33bef5({'code':0xc8,'message':_0x886b6[_0x511e('0x21')]});})[_0x511e('0x22')](function(_0x26618d){_0x325278(_0x5c4fb9['error'](0x1f5,_0x26618d['message']));});});},'VoiceQueues':function(_0x3e1711){return new Promise(function(_0x4d94a1,_0x1ff5c4){var _0x53017d=[];for(var _0x3fbd19 in _0x4fbd4f[_0x511e('0x23')]){if(_0x4fbd4f[_0x511e('0x23')][_0x511e('0x24')](_0x3fbd19)){var _0x1bb7f9=_0x4fbd4f[_0x511e('0x23')][_0x3fbd19];var _0x3c057c={'id':_0x1bb7f9['id'],'name':_0x1bb7f9[_0x511e('0xa')],'strategy':_0x1bb7f9[_0x511e('0x25')],'answered':_0x1bb7f9[_0x511e('0x26')],'available':_0x1bb7f9['available'],'loggedIn':_0x1bb7f9[_0x511e('0x27')],'pTalking':_0x1bb7f9[_0x511e('0x28')],'sumBillable':_0x1bb7f9[_0x511e('0x29')],'sumDuration':_0x1bb7f9[_0x511e('0x2a')],'sumHoldTime':_0x1bb7f9[_0x511e('0x2b')]||0x0,'talking':_0x1bb7f9['talking'],'total':_0x1bb7f9[_0x511e('0x2c')],'type':_0x1bb7f9['type'],'unmanaged':_0x1bb7f9['unmanaged'],'abandoned':_0x1bb7f9[_0x511e('0x2d')],'waiting':_0x1bb7f9[_0x511e('0x2e')],'loggedInDb':_0x1bb7f9[_0x511e('0x2f')]};if(_0x1bb7f9[_0x511e('0x30')]===_0x511e('0x31')){_0x3c057c['dialActive']=_0x1bb7f9[_0x511e('0x32')];_0x3c057c[_0x511e('0x33')]=_0x1bb7f9[_0x511e('0x33')];_0x3c057c[_0x511e('0x34')]=_0x1bb7f9[_0x511e('0x34')];_0x3c057c['dialOriginateCallerIdNumber']=_0x1bb7f9[_0x511e('0x35')];_0x3c057c[_0x511e('0x36')]=_0x1bb7f9[_0x511e('0x36')];_0x3c057c[_0x511e('0x37')]=_0x1bb7f9[_0x511e('0x37')];_0x3c057c[_0x511e('0x38')]=_0x1bb7f9[_0x511e('0x38')];_0x3c057c[_0x511e('0x39')]=_0x1bb7f9['outboundAnswerAgiCallsDay'];_0x3c057c[_0x511e('0x3a')]=_0x1bb7f9[_0x511e('0x3a')];_0x3c057c[_0x511e('0x3b')]=_0x1bb7f9[_0x511e('0x3b')];_0x3c057c['outboundBusyCallsDay']=_0x1bb7f9['outboundBusyCallsDay'];_0x3c057c[_0x511e('0x3c')]=_0x1bb7f9['outboundCongestionCallsDay'];_0x3c057c['outboundDropCallsDayACS']=_0x1bb7f9[_0x511e('0x3d')];_0x3c057c[_0x511e('0x3e')]=_0x1bb7f9[_0x511e('0x3e')];_0x3c057c[_0x511e('0x3f')]=_0x1bb7f9[_0x511e('0x3f')];_0x3c057c['outboundNoAnswerCallsDay']=_0x1bb7f9[_0x511e('0x40')];_0x3c057c[_0x511e('0x41')]=_0x1bb7f9[_0x511e('0x41')];_0x3c057c['outboundOriginateFailureCallsDay']=_0x1bb7f9[_0x511e('0x42')];_0x3c057c[_0x511e('0x43')]=_0x1bb7f9[_0x511e('0x43')];_0x3c057c['outboundRejectCallsDay']=_0x1bb7f9[_0x511e('0x44')];_0x3c057c[_0x511e('0x45')]=_0x1bb7f9['outboundUnknownCallsDay'];_0x3c057c[_0x511e('0x46')]=_0x1bb7f9[_0x511e('0x46')];_0x3c057c[_0x511e('0x47')]=_0x1bb7f9[_0x511e('0x47')];_0x3c057c[_0x511e('0x48')]=_0x1bb7f9[_0x511e('0x48')];_0x3c057c[_0x511e('0x49')]=_0x1bb7f9[_0x511e('0x49')];_0x3c057c[_0x511e('0x4a')]=_0x1bb7f9[_0x511e('0x4a')];_0x3c057c[_0x511e('0x4b')]=_0x1bb7f9['predictiveIntervalErlangCalls'];_0x3c057c[_0x511e('0x4c')]=_0x1bb7f9['predictiveIntervalErlangCallsDroppedCalls'];_0x3c057c['predictiveIntervalHitRate']=_0x1bb7f9[_0x511e('0x4d')];_0x3c057c['predictiveIntervalMultiplicativeFactor']=_0x1bb7f9['predictiveIntervalMultiplicativeFactor'];_0x3c057c[_0x511e('0x4e')]=_0x1bb7f9[_0x511e('0x4e')];_0x3c057c[_0x511e('0x4f')]=_0x1bb7f9[_0x511e('0x4f')];_0x3c057c[_0x511e('0x50')]=_0x1bb7f9[_0x511e('0x50')];_0x3c057c[_0x511e('0x1c')]=_0x1bb7f9[_0x511e('0x1c')];_0x3c057c[_0x511e('0x51')]=_0x1bb7f9[_0x511e('0x51')];_0x3c057c[_0x511e('0x52')]=_0x1bb7f9[_0x511e('0x52')];_0x3c057c[_0x511e('0x53')]=_0x1bb7f9[_0x511e('0x53')];_0x3c057c['erlangAbandonmentRate']=_0x1bb7f9['erlangAbandonmentRate'];_0x3c057c[_0x511e('0x54')]=_0x1bb7f9[_0x511e('0x54')];_0x3c057c[_0x511e('0x55')]=_0x1bb7f9[_0x511e('0x55')];_0x3c057c[_0x511e('0x56')]=_0x1bb7f9['startProgressive'];}if(_0x1bb7f9[_0x511e('0x57')]){_0x3c057c[_0x511e('0x57')]={'id':_0x1bb7f9[_0x511e('0x57')]['id'],'name':_0x1bb7f9['Trunk']['name'],'active':_0x1bb7f9['Trunk'][_0x511e('0x58')],'callerid':_0x1bb7f9[_0x511e('0x57')][_0x511e('0x59')]};}if(_0x1bb7f9['Interval']){_0x3c057c['Interval']={'id':_0x1bb7f9['Interval']['id'],'name':_0x1bb7f9[_0x511e('0x5a')][_0x511e('0xa')]};}_0x53017d[_0x511e('0x5b')](_0x3c057c);}}_0x4d94a1({'count':_0x53017d[_0x511e('0x5c')],'rows':_0x53017d});});},'UpdateVoiceQueue':function(_0x40e017){return new Promise(function(_0x393e36,_0x1d494f){var _0x1faf19=_[_0x511e('0x5d')](_0x4fbd4f[_0x511e('0x23')],{'id':parseInt(_0x40e017['id'])});var _0x1a2e4=_[_0x511e('0x5e')](_0x40e017,['id']);if(_0x1faf19){for(var _0x19a6c8 in _0x1a2e4){if(typeof _0x1a2e4[_0x19a6c8]!==_0x511e('0x5f')&&typeof _0x1faf19[_0x19a6c8]!==_0x511e('0x5f')){_0x1faf19[_0x19a6c8]=_0x1a2e4[_0x19a6c8];}}_0x393e36(_0x1faf19);}else{_0x1d494f();}});},'VoiceChannels':function(_0x17568d){return new Promise(function(_0x15e6e8,_0x30769b){var _0x3a8395=_[_0x511e('0x60')](_0x4fbd4f[_0x511e('0x61')]);_0x15e6e8({'count':_0x3a8395[_0x511e('0x5c')],'rows':_0x3a8395});});},'VoiceChannelMixMonitor':function(_0x204783){var _0x1cb4ba=this;return new Promise(function(_0x37bfdb,_0x4096c0){if(ami[_0x511e('0x11')]()==![]){return _0x4096c0(_0x1cb4ba[_0x511e('0x12')](0x1f4,[config[_0x511e('0x13')]['ip'],config[_0x511e('0x13')][_0x511e('0x14')],'ami\x20disconnected'][_0x511e('0x15')]('\x20')));}var _0x56bfd4=schema(properties[_0x511e('0x62')])[_0x511e('0x2')](_0x204783);if(_0x56bfd4[_0x511e('0x5c')]>0x0){return _0x4096c0(_0x1cb4ba['error'](0x1f4,_[_0x511e('0x63')](_0x56bfd4,_0x511e('0x1c'))[_0x511e('0x15')](',\x20')));}var _0x5cc04d=_[_0x511e('0x5d')](_0x4fbd4f[_0x511e('0x61')],{'uniqueid':_0x204783['uniqueid']});if(_0x5cc04d&&_0x5cc04d[_0x511e('0x64')]){var _0x4609dc=util[_0x511e('0x7')](_0x511e('0x65'),_0x204783['filename']||_0x204783[_0x511e('0x66')],_0x204783['format']||_0x511e('0x67'));return ami[_0x511e('0x1a')]({'action':_0x511e('0x68'),'channel':_0x5cc04d['channel'],'file':_0x4609dc,'options':_0x511e('0x69')})['then'](function(_0x4705e3){var _0x586449=_[_0x511e('0x5d')](_0x5cc04d[_0x511e('0x6a')],{'filename':_0x511e('0x6b')+_0x4609dc['toLowerCase']()});if(_[_0x511e('0x6c')](_0x586449)){_0x5cc04d[_0x511e('0x6a')][_0x511e('0x5b')]({'filename':_0x511e('0x6b')+_0x4609dc[_0x511e('0x6d')](),'createdAt':moment()[_0x511e('0x7')](_0x511e('0x6e')),'mixmonitorid':_0x4705e3[_0x511e('0x6f')],'status':'rec'});}else{_0x586449[_0x511e('0x6f')]=_0x4705e3[_0x511e('0x6f')];_0x586449['status']=_0x511e('0x70');}_0x37bfdb({'code':0xc8,'message':[_0x204783[_0x511e('0x66')],_0x511e('0x71'),_0x4705e3[_0x511e('0x6f')]][_0x511e('0x15')]('\x20'),'mixmonitorid':_0x4705e3[_0x511e('0x6f')]});})['catch'](function(_0x31777b){_0x4096c0(_0x1cb4ba[_0x511e('0x12')](0x1f5,[_0x204783['uniqueid'],_0x31777b[_0x511e('0x1c')]['toLowerCase']()][_0x511e('0x15')]('\x20')));});}else{return _0x4096c0(_0x1cb4ba[_0x511e('0x12')](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'VoiceChannelStopMixMonitor':function(_0x58f1e4){var _0x586931=this;return new Promise(function(_0x5a1511,_0x37c145){if(ami['isConnected']()==![]){return _0x37c145(_0x586931['error'](0x1f4,[config[_0x511e('0x13')]['ip'],config[_0x511e('0x13')]['username'],_0x511e('0x1d')]['join']('\x20')));}var _0x3a3744=schema(properties['voicechannel'])['validate'](_0x58f1e4);if(_0x3a3744['length']>0x0){return _0x37c145(_0x586931[_0x511e('0x12')](0x1f4,_[_0x511e('0x63')](_0x3a3744,'message')['join'](',\x20')));}var _0x51940a=_['find'](_0x4fbd4f[_0x511e('0x61')],{'uniqueid':_0x58f1e4['uniqueid']});if(_0x51940a){return BPromise[_0x511e('0x72')]()['then'](function(){if(_0x51940a[_0x511e('0x64')]){return ami[_0x511e('0x1a')]({'action':_0x511e('0x73'),'channel':_0x51940a[_0x511e('0x64')],'mixmonitorid':_0x58f1e4['mixmonitorid']})[_0x511e('0x22')](function(_0xc154b2){});}})[_0x511e('0x1b')](function(){if(_0x51940a[_0x511e('0x74')]){return ami[_0x511e('0x1a')]({'action':'StopMixMonitor','channel':_0x51940a['destinationchannel'],'mixmonitorid':_0x58f1e4[_0x511e('0x6f')]})[_0x511e('0x22')](function(_0x42cb48){});}})[_0x511e('0x1b')](function(_0x3d0a10){var _0x329aee=_[_0x511e('0x5d')](_0x51940a[_0x511e('0x6a')],{'mixmonitorid':_0x58f1e4[_0x511e('0x6f')]});if(_0x329aee){_0x329aee[_0x511e('0x75')]='stop';}})['then'](function(){var _0x55fcc9=util[_0x511e('0x7')]('%s.%s',_0x58f1e4[_0x511e('0x76')]||_0x58f1e4['uniqueid'],_0x58f1e4[_0x511e('0x7')]||'wav');var _0x434269=_[_0x511e('0x5d')](_0x51940a[_0x511e('0x6a')],{'filename':_0x511e('0x6b')+_0x55fcc9[_0x511e('0x6d')]()});if(_0x434269){_0x434269['status']=_0x511e('0x77');}})['then'](function(){_0x5a1511({'code':0xc8,'message':[_0x58f1e4[_0x511e('0x66')],_0x511e('0x78')][_0x511e('0x15')]('\x20')});})['catch'](function(_0x76b6b0){_0x37c145(_0x586931[_0x511e('0x12')](0x1f5,[_0x58f1e4[_0x511e('0x66')],_0x76b6b0[_0x511e('0x1c')]['toLowerCase']()]['join']('\x20')));});}else{return _0x37c145(_0x586931[_0x511e('0x12')](0x1f5,_0x511e('0x79')));}});},'VoiceQueuesChannels':function(_0x5b1ba8){return new Promise(function(_0x2545d2,_0x5cb3ea){var _0x45693d=_[_0x511e('0x60')](_0x4fbd4f['queueChannels']);_0x2545d2({'count':_0x45693d['length'],'rows':_0x45693d});});},'VoiceQueuesChannel':function(_0x317766){var _0x2b9aee=this;return new Promise(function(_0x2061d8,_0x5c2817){var _0xb7e7e4=schema(properties[_0x511e('0x7a')])[_0x511e('0x2')](_0x317766);if(_0xb7e7e4[_0x511e('0x5c')]>0x0){return _0x5c2817(_0x2b9aee[_0x511e('0x12')](0x1f4,_[_0x511e('0x63')](_0xb7e7e4,_0x511e('0x1c'))['join'](',\x20')));}var _0x23833a=_[_0x511e('0x5d')](_0x4fbd4f['queueChannels'],{'uniqueid':_0x317766['uniqueid']});if(_0x23833a){_0x2061d8(_0x23833a);}else{return _0x5c2817(_0x2b9aee[_0x511e('0x12')](0x1f5,_0x511e('0x79')));}});},'VoiceQueuesChannelHangup':function(_0x55c45d){var _0x36d05f=this;return new Promise(function(_0x5e65a2,_0x21cb81){if(ami['isConnected']()==![]){return _0x21cb81(_0x36d05f['error'](0x1f4,[config[_0x511e('0x13')]['ip'],config[_0x511e('0x13')][_0x511e('0x14')],_0x511e('0x1d')][_0x511e('0x15')]('\x20')));}var _0x4f16f5=schema(properties['voicequeuechannelhangup'])[_0x511e('0x2')](_0x55c45d);if(_0x4f16f5[_0x511e('0x5c')]>0x0){return _0x21cb81(_0x36d05f[_0x511e('0x12')](0x1f4,_['map'](_0x4f16f5,_0x511e('0x1c'))[_0x511e('0x15')](',\x20')));}var _0x493188=_['find'](_0x4fbd4f[_0x511e('0x7b')],{'uniqueid':_0x55c45d[_0x511e('0x66')]});if(_0x493188&&_0x493188[_0x511e('0x64')]){return ami[_0x511e('0x1a')]({'action':_0x511e('0x7c'),'channel':_0x493188[_0x511e('0x64')]})['then'](function(_0x33fd85){_0x5e65a2({'code':0xc8,'message':[_0x55c45d[_0x511e('0x66')],_0x33fd85['message']['toLowerCase']()][_0x511e('0x15')]('\x20')});})['catch'](function(_0x3341a0){_0x21cb81(_0x36d05f['error'](0x1f5,[_0x55c45d['uniqueid'],_0x3341a0[_0x511e('0x1c')][_0x511e('0x6d')]()][_0x511e('0x15')]('\x20')));});}else{return _0x21cb81(_0x36d05f[_0x511e('0x12')](0x1f5,_0x511e('0x79')));}});},'VoiceQueuesChannelRedirect':function(_0x1876d2){var _0x143277=this;return new Promise(function(_0x431d94,_0x325df2){if(ami[_0x511e('0x11')]()==![]){return _0x325df2(_0x143277[_0x511e('0x12')](0x1f4,[config[_0x511e('0x13')]['ip'],config[_0x511e('0x13')][_0x511e('0x14')],_0x511e('0x1d')][_0x511e('0x15')]('\x20')));}var _0x4a07b7=schema(properties[_0x511e('0x7d')])[_0x511e('0x2')](_0x1876d2);if(_0x4a07b7[_0x511e('0x5c')]>0x0){return _0x325df2(_0x143277[_0x511e('0x12')](0x1f4,_[_0x511e('0x63')](_0x4a07b7,_0x511e('0x1c'))[_0x511e('0x15')](',\x20')));}var _0x3e2e1d=_[_0x511e('0x5d')](_0x4fbd4f[_0x511e('0x7b')],{'uniqueid':_0x1876d2[_0x511e('0x66')]});if(_0x3e2e1d&&_0x3e2e1d['channel']){return ami[_0x511e('0x1a')]({'action':_0x511e('0x7e'),'channel':_0x3e2e1d[_0x511e('0x64')],'exten':_0x1876d2[_0x511e('0x7f')],'context':_0x1876d2['context']||_0x3e2e1d[_0x511e('0x80')],'priority':0x1})[_0x511e('0x1b')](function(_0x3a4db6){_0x431d94({'code':0xc8,'message':[_0x1876d2[_0x511e('0x66')],_0x3a4db6[_0x511e('0x1c')][_0x511e('0x6d')]()][_0x511e('0x15')]('\x20')});})[_0x511e('0x22')](function(_0x25e8cb){_0x325df2(_0x143277[_0x511e('0x12')](0x1f5,[_0x1876d2['uniqueid'],_0x25e8cb[_0x511e('0x1c')][_0x511e('0x6d')]()][_0x511e('0x15')]('\x20')));});}else{return _0x325df2(_0x143277[_0x511e('0x12')](0x1f5,_0x511e('0x79')));}});},'Agents':function(_0x3d807a){return new Promise(function(_0x436e65,_0x47c07d){var _0x4a43bf=_[_0x511e('0x60')](_0x4fbd4f[_0x511e('0x81')]);_0x436e65({'count':_0x4a43bf[_0x511e('0x5c')],'rows':_0x4a43bf});});},'Telephones':function(_0x32fd22){return new Promise(function(_0x11d601,_0x4316de){var _0x122d49=_[_0x511e('0x60')](_0x4fbd4f[_0x511e('0x82')]);_0x11d601({'count':_0x122d49[_0x511e('0x5c')],'rows':_0x122d49});});},'Trunks':function(_0x55e8cc){return new Promise(function(_0x15a553,_0x255aac){var _0x19671c=_[_0x511e('0x60')](_0x4fbd4f[_0x511e('0x83')]);_0x15a553({'count':_0x19671c['length'],'rows':_0x19671c});});},'OutboundChannels':function(_0x561a26){return new Promise(function(_0x1d408d,_0x26a9f0){var _0x588f24=_[_0x511e('0x60')](_0x4fbd4f['outboundChannels']);_0x1d408d({'count':_0x588f24[_0x511e('0x5c')],'rows':_0x588f24});});},'Outbound':function(_0x2ff676){return new Promise(function(_0x5c9f54,_0x68d14e){_0x5c9f54(_0x4fbd4f['outbound']);});},'Campaigns':function(_0xd74673){return new Promise(function(_0x2455da,_0x19a7ba){var _0x473867=_[_0x511e('0x60')](_0x4fbd4f[_0x511e('0x84')]);_0x2455da({'count':_0x473867[_0x511e('0x5c')],'rows':_0x473867});});},'VoiceQueuesPreview':function(_0x27004c){var _0x3289a9=this;return new Promise(function(_0x12e381,_0x37bb80){_0x5923a7[_0x511e('0x85')](_0x27004c['id'])[_0x511e('0x1b')](function(_0x28907e){_0x12e381({'code':0xc8,'message':_0x28907e[_0x511e('0x1c')]});})[_0x511e('0x22')](function(_0x45d846){_0x37bb80(_0x3289a9[_0x511e('0x12')](0x1f4,_0x45d846['message']));});});},'EventManager':function(_0x26065a){var _0x4377b4=this;return new Promise(function(_0x1e08dc,_0x4727b0){if(!_0x26065a[_0x511e('0x86')]){return _0x4727b0(_0x4377b4['error'](0x1f4,_0x511e('0x87')));}ami[_0x511e('0x88')](_0x511e('0x89')+_0x26065a['event'],_0x26065a[_0x511e('0x1c')]);_0x1e08dc({'code':0xc8,'message':_0x26065a});});},'FaxAccounts':function(_0x470f1e){return new Promise(function(_0x176941,_0x334374){var _0x513c38=_['values'](_0x4fbd4f['faxAccounts']);_0x176941({'count':_0x513c38[_0x511e('0x5c')],'rows':_0x513c38});});},'SendFax':function(_0x148871){var _0x48a735=this;return new Promise(function(_0x137568,_0x49e3c7){_0x342539[_0x511e('0x8a')](_0x148871)['then'](function(_0x19abb4){_0x137568({'code':0xc8,'message':_0x19abb4[_0x511e('0x1c')]});})['catch'](function(_0x222547){_0x49e3c7(_0x48a735[_0x511e('0x12')](0x1f4,_0x222547[_0x511e('0x1c')]));});});},'CheckAfterSend':function(_0x40d891){var _0x3debb7=this;return new Promise(function(_0x500557,_0x4a8843){_0x342539['checkAfterSend'](_0x40d891)['then'](function(_0x4adf6b){_0x500557({'code':0xc8,'message':_0x4adf6b[_0x511e('0x1c')]});})[_0x511e('0x22')](function(_0x43301c){_0x4a8843(_0x3debb7['error'](0x1f4,_0x43301c[_0x511e('0x1c')]));});});}};var _0x1eb2ce=jayson[_0x511e('0x8b')](_0x57cac3)[_0x511e('0x8c')]();_0x1eb2ce['on'](_0x511e('0x12'),function(_0x31cdb3){return _0x466dec(_0x31cdb3);});_0x1eb2ce[_0x511e('0x6')](0x232a,'127.0.0.1',function(){console[_0x511e('0x8d')](_0x511e('0x8e'),0x232a);return _0x323f8c(_0x511e('0x8f')+0x232a);});});};
\ No newline at end of file
+var _0x36c3=['checkAfterSend','server','127.0.0.1','log','AMI\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','lodash','util','validate','bluebird','moment','../../../config/environment','../properties','../ami','listen','format','%s/%s','SIP','name','timers','timer','updateAcw','agents','updateStatusRealtime','pause','isConnected','error','asterisk','username','ami\x20disconnected','pick','module','Reload','then','message','command','action','Command','content','voiceQueues','hasOwnProperty','strategy','available','loggedIn','sumHoldTime','talking','abandoned','waiting','loggedInDb','type','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','active','callerid','Interval','push','length','find','omit','undefined','values','channels','voicechannel','join','channel','%s.%s','uniqueid','/var/spool/asterisk/monitor/','toLowerCase','isNil','monitors','YYYY-MM-DD\x20HH:mm:ss','mixmonitorid','rec','MixMonitor\x20Success','catch','Channel\x20doesn\x27t\x20exist','map','resolve','Action','StopMixMonitor','destinationchannel','status','stop','queueChannels','voicequeuechannel','Hangup','voicequeuechannelredirect','Redirect','exten','context','telephones','trunks','outboundChannels','campaigns','event','Event\x20name\x20mandatory','custom:','faxAccounts','send'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x36c3,0x1a6));var _0x336c=function(_0xacd405,_0x2217bb){_0xacd405=_0xacd405-0x0;var _0x57611c=_0x36c3[_0xacd405];return _0x57611c;};'use strict';var _=require(_0x336c('0x0'));var util=require(_0x336c('0x1'));var jayson=require('jayson/promise');var schema=require(_0x336c('0x2'));var BPromise=require(_0x336c('0x3'));var moment=require(_0x336c('0x4'));var config=require(_0x336c('0x5'));var properties=require(_0x336c('0x6'));var ami=require(_0x336c('0x7'));exports[_0x336c('0x8')]=function(_0x4e4c07,_0x3b27e0,_0x2e0016){return new BPromise(function(_0x2097a8,_0x29a202){var _0x295b22={'QueuePause':function(_0x4d1e4f){return new Promise(function(_0x108bb0,_0x1e6f42){var _0x3b4f93=util[_0x336c('0x9')](_0x336c('0xa'),_0x336c('0xb'),_0x4d1e4f[_0x336c('0xc')]);if(_0x4e4c07[_0x336c('0xd')]&&_0x4e4c07[_0x336c('0xd')][_0x3b4f93]&&_0x4e4c07[_0x336c('0xd')][_0x3b4f93][_0x336c('0xe')]){_0x4e4c07[_0x336c('0xd')][_0x3b4f93][_0x336c('0xf')]();}if(_0x4e4c07[_0x336c('0x10')][_0x3b4f93]){_0x4e4c07[_0x336c('0x10')][_0x3b4f93][_0x336c('0x11')]({'statePause':_0x4d1e4f[_0x336c('0x12')]?!![]:![]});}_0x108bb0({'code':0xc8,'message':'QueuePause'});});},'Reload':function(_0x592a5b){var _0x1c3961=this;return new Promise(function(_0x577bd6,_0x10dba2){if(ami[_0x336c('0x13')]()==![]){return _0x10dba2(_0x1c3961[_0x336c('0x14')](0x1f4,[config[_0x336c('0x15')]['ip'],config['asterisk'][_0x336c('0x16')],_0x336c('0x17')]['join']('\x20')));}_0x592a5b=_[_0x336c('0x18')](_0x592a5b,_['keys'](properties[_0x336c('0x19')]));_0x592a5b['action']=_0x336c('0x1a');return ami['Action'](_0x592a5b)[_0x336c('0x1b')](function(_0x2c2b16){_0x577bd6({'code':0xc8,'message':_0x2c2b16['message']});})['catch'](function(_0x13db87){_0x10dba2(_0x1c3961[_0x336c('0x14')](0x1f5,_0x13db87[_0x336c('0x1c')]));});});},'Command':function(_0x221408){var _0x366182=this;return new Promise(function(_0x4fde93,_0x327e10){if(ami['isConnected']()==![]){return _0x327e10(_0x366182['error'](0x1f4,[config['asterisk']['ip'],config[_0x336c('0x15')][_0x336c('0x16')],_0x336c('0x17')]['join']('\x20')));}_0x221408=_['pick'](_0x221408,_0x336c('0x1d'));_0x221408[_0x336c('0x1e')]=_0x336c('0x1f');return ami['Action'](_0x221408)[_0x336c('0x1b')](function(_0x421929){_0x4fde93({'code':0xc8,'message':_0x421929[_0x336c('0x20')]});})['catch'](function(_0x473164){_0x327e10(_0x366182[_0x336c('0x14')](0x1f5,_0x473164[_0x336c('0x1c')]));});});},'VoiceQueues':function(_0xc46031){return new Promise(function(_0x4bd54c,_0x401660){var _0x9dc9bc=[];for(var _0x412a00 in _0x4e4c07[_0x336c('0x21')]){if(_0x4e4c07[_0x336c('0x21')][_0x336c('0x22')](_0x412a00)){var _0x567bfa=_0x4e4c07[_0x336c('0x21')][_0x412a00];var _0x3d2442={'id':_0x567bfa['id'],'name':_0x567bfa[_0x336c('0xc')],'strategy':_0x567bfa[_0x336c('0x23')],'answered':_0x567bfa['answered'],'available':_0x567bfa[_0x336c('0x24')],'loggedIn':_0x567bfa[_0x336c('0x25')],'pTalking':_0x567bfa['pTalking'],'sumBillable':_0x567bfa['sumBillable'],'sumDuration':_0x567bfa['sumDuration'],'sumHoldTime':_0x567bfa[_0x336c('0x26')]||0x0,'talking':_0x567bfa[_0x336c('0x27')],'total':_0x567bfa['total'],'type':_0x567bfa['type'],'unmanaged':_0x567bfa['unmanaged'],'abandoned':_0x567bfa[_0x336c('0x28')],'waiting':_0x567bfa[_0x336c('0x29')],'loggedInDb':_0x567bfa[_0x336c('0x2a')]};if(_0x567bfa[_0x336c('0x2b')]===_0x336c('0x2c')){_0x3d2442[_0x336c('0x2d')]=_0x567bfa[_0x336c('0x2d')];_0x3d2442['dialMethod']=_0x567bfa[_0x336c('0x2e')];_0x3d2442[_0x336c('0x2f')]=_0x567bfa[_0x336c('0x2f')];_0x3d2442[_0x336c('0x30')]=_0x567bfa['dialOriginateCallerIdNumber'];_0x3d2442[_0x336c('0x31')]=_0x567bfa[_0x336c('0x31')];_0x3d2442['dialPrefix']=_0x567bfa[_0x336c('0x32')];_0x3d2442[_0x336c('0x33')]=_0x567bfa['temp'];_0x3d2442[_0x336c('0x34')]=_0x567bfa[_0x336c('0x34')];_0x3d2442[_0x336c('0x35')]=_0x567bfa[_0x336c('0x35')];_0x3d2442[_0x336c('0x36')]=_0x567bfa[_0x336c('0x36')];_0x3d2442[_0x336c('0x37')]=_0x567bfa[_0x336c('0x37')];_0x3d2442['outboundCongestionCallsDay']=_0x567bfa[_0x336c('0x38')];_0x3d2442[_0x336c('0x39')]=_0x567bfa[_0x336c('0x39')];_0x3d2442[_0x336c('0x3a')]=_0x567bfa[_0x336c('0x3a')];_0x3d2442[_0x336c('0x3b')]=_0x567bfa[_0x336c('0x3b')];_0x3d2442[_0x336c('0x3c')]=_0x567bfa[_0x336c('0x3c')];_0x3d2442[_0x336c('0x3d')]=_0x567bfa['outboundNoSuchCallsDay'];_0x3d2442[_0x336c('0x3e')]=_0x567bfa[_0x336c('0x3e')];_0x3d2442[_0x336c('0x3f')]=_0x567bfa[_0x336c('0x3f')];_0x3d2442[_0x336c('0x40')]=_0x567bfa[_0x336c('0x40')];_0x3d2442[_0x336c('0x41')]=_0x567bfa[_0x336c('0x41')];_0x3d2442[_0x336c('0x42')]=_0x567bfa[_0x336c('0x42')];_0x3d2442['predictiveIntervalAvgHoldtime']=_0x567bfa[_0x336c('0x43')];_0x3d2442[_0x336c('0x44')]=_0x567bfa[_0x336c('0x44')];_0x3d2442['predictiveIntervalDroppedCallsCallersExit']=_0x567bfa[_0x336c('0x45')];_0x3d2442[_0x336c('0x46')]=_0x567bfa[_0x336c('0x46')];_0x3d2442[_0x336c('0x47')]=_0x567bfa['predictiveIntervalErlangCalls'];_0x3d2442[_0x336c('0x48')]=_0x567bfa[_0x336c('0x48')];_0x3d2442['predictiveIntervalHitRate']=_0x567bfa[_0x336c('0x49')];_0x3d2442[_0x336c('0x4a')]=_0x567bfa[_0x336c('0x4a')];_0x3d2442['predictiveIntervalPauses']=_0x567bfa[_0x336c('0x4b')];_0x3d2442[_0x336c('0x4c')]=_0x567bfa[_0x336c('0x4c')];_0x3d2442[_0x336c('0x4d')]=_0x567bfa[_0x336c('0x4d')];_0x3d2442[_0x336c('0x1c')]=_0x567bfa[_0x336c('0x1c')];_0x3d2442[_0x336c('0x4e')]=_0x567bfa[_0x336c('0x4e')];_0x3d2442[_0x336c('0x4f')]=_0x567bfa['erlangCalls'];_0x3d2442[_0x336c('0x50')]=_0x567bfa[_0x336c('0x50')];_0x3d2442[_0x336c('0x51')]=_0x567bfa['erlangAbandonmentRate'];_0x3d2442[_0x336c('0x52')]=_0x567bfa[_0x336c('0x52')];_0x3d2442['startPredictive']=_0x567bfa[_0x336c('0x53')];_0x3d2442[_0x336c('0x54')]=_0x567bfa[_0x336c('0x54')];}if(_0x567bfa[_0x336c('0x55')]){_0x3d2442['Trunk']={'id':_0x567bfa[_0x336c('0x55')]['id'],'name':_0x567bfa[_0x336c('0x55')]['name'],'active':_0x567bfa[_0x336c('0x55')][_0x336c('0x56')],'callerid':_0x567bfa['Trunk'][_0x336c('0x57')]};}if(_0x567bfa[_0x336c('0x58')]){_0x3d2442[_0x336c('0x58')]={'id':_0x567bfa[_0x336c('0x58')]['id'],'name':_0x567bfa['Interval'][_0x336c('0xc')]};}_0x9dc9bc[_0x336c('0x59')](_0x3d2442);}}_0x4bd54c({'count':_0x9dc9bc[_0x336c('0x5a')],'rows':_0x9dc9bc});});},'UpdateVoiceQueue':function(_0x222804){return new Promise(function(_0x1c2359,_0x3b68c4){var _0x11ff51=_[_0x336c('0x5b')](_0x4e4c07[_0x336c('0x21')],{'id':parseInt(_0x222804['id'])});var _0x4c27c6=_[_0x336c('0x5c')](_0x222804,['id']);if(_0x11ff51){for(var _0x46b61b in _0x4c27c6){if(typeof _0x4c27c6[_0x46b61b]!==_0x336c('0x5d')&&typeof _0x11ff51[_0x46b61b]!==_0x336c('0x5d')){_0x11ff51[_0x46b61b]=_0x4c27c6[_0x46b61b];}}_0x1c2359(_0x11ff51);}else{_0x3b68c4();}});},'VoiceChannels':function(_0x107b6f){return new Promise(function(_0x1f2f8f,_0x41e794){var _0xbfac47=_[_0x336c('0x5e')](_0x4e4c07[_0x336c('0x5f')]);_0x1f2f8f({'count':_0xbfac47[_0x336c('0x5a')],'rows':_0xbfac47});});},'VoiceChannelMixMonitor':function(_0x1aee22){var _0x3b5965=this;return new Promise(function(_0x58d26c,_0x26ea9e){if(ami['isConnected']()==![]){return _0x26ea9e(_0x3b5965['error'](0x1f4,[config[_0x336c('0x15')]['ip'],config['asterisk']['username'],_0x336c('0x17')]['join']('\x20')));}var _0x31f2bd=schema(properties[_0x336c('0x60')])[_0x336c('0x2')](_0x1aee22);if(_0x31f2bd[_0x336c('0x5a')]>0x0){return _0x26ea9e(_0x3b5965['error'](0x1f4,_['map'](_0x31f2bd,_0x336c('0x1c'))[_0x336c('0x61')](',\x20')));}var _0x4b70ba=_[_0x336c('0x5b')](_0x4e4c07[_0x336c('0x5f')],{'uniqueid':_0x1aee22['uniqueid']});if(_0x4b70ba&&_0x4b70ba[_0x336c('0x62')]){var _0x337ae7=util[_0x336c('0x9')](_0x336c('0x63'),_0x1aee22['filename']||_0x1aee22[_0x336c('0x64')],_0x1aee22[_0x336c('0x9')]||'wav');return ami['Action']({'action':'MixMonitor','channel':_0x4b70ba['channel'],'file':_0x337ae7,'options':'ai(mixmonitorid)'})[_0x336c('0x1b')](function(_0x31683b){var _0x265784=_[_0x336c('0x5b')](_0x4b70ba['monitors'],{'filename':_0x336c('0x65')+_0x337ae7[_0x336c('0x66')]()});if(_[_0x336c('0x67')](_0x265784)){_0x4b70ba[_0x336c('0x68')]['push']({'filename':_0x336c('0x65')+_0x337ae7['toLowerCase'](),'createdAt':moment()[_0x336c('0x9')](_0x336c('0x69')),'mixmonitorid':_0x31683b[_0x336c('0x6a')],'status':_0x336c('0x6b')});}else{_0x265784[_0x336c('0x6a')]=_0x31683b[_0x336c('0x6a')];_0x265784['status']='rec';}_0x58d26c({'code':0xc8,'message':[_0x1aee22[_0x336c('0x64')],_0x336c('0x6c'),_0x31683b['mixmonitorid']][_0x336c('0x61')]('\x20'),'mixmonitorid':_0x31683b[_0x336c('0x6a')]});})[_0x336c('0x6d')](function(_0x534f82){_0x26ea9e(_0x3b5965['error'](0x1f5,[_0x1aee22[_0x336c('0x64')],_0x534f82[_0x336c('0x1c')][_0x336c('0x66')]()][_0x336c('0x61')]('\x20')));});}else{return _0x26ea9e(_0x3b5965[_0x336c('0x14')](0x1f5,_0x336c('0x6e')));}});},'VoiceChannelStopMixMonitor':function(_0x4dae78){var _0xd1a98b=this;return new Promise(function(_0x442bfb,_0x45d69d){if(ami['isConnected']()==![]){return _0x45d69d(_0xd1a98b['error'](0x1f4,[config[_0x336c('0x15')]['ip'],config[_0x336c('0x15')][_0x336c('0x16')],_0x336c('0x17')][_0x336c('0x61')]('\x20')));}var _0x2842c3=schema(properties[_0x336c('0x60')])[_0x336c('0x2')](_0x4dae78);if(_0x2842c3[_0x336c('0x5a')]>0x0){return _0x45d69d(_0xd1a98b[_0x336c('0x14')](0x1f4,_[_0x336c('0x6f')](_0x2842c3,_0x336c('0x1c'))[_0x336c('0x61')](',\x20')));}var _0x54643d=_['find'](_0x4e4c07['channels'],{'uniqueid':_0x4dae78['uniqueid']});if(_0x54643d){return BPromise[_0x336c('0x70')]()[_0x336c('0x1b')](function(){if(_0x54643d['channel']){return ami[_0x336c('0x71')]({'action':_0x336c('0x72'),'channel':_0x54643d[_0x336c('0x62')],'mixmonitorid':_0x4dae78[_0x336c('0x6a')]})[_0x336c('0x6d')](function(_0x16b975){});}})['then'](function(){if(_0x54643d[_0x336c('0x73')]){return ami['Action']({'action':_0x336c('0x72'),'channel':_0x54643d[_0x336c('0x73')],'mixmonitorid':_0x4dae78[_0x336c('0x6a')]})['catch'](function(_0x145b5c){});}})[_0x336c('0x1b')](function(_0x579607){var _0x22ad33=_['find'](_0x54643d[_0x336c('0x68')],{'mixmonitorid':_0x4dae78[_0x336c('0x6a')]});if(_0x22ad33){_0x22ad33[_0x336c('0x74')]=_0x336c('0x75');}})[_0x336c('0x1b')](function(){var _0x147c47=util['format'](_0x336c('0x63'),_0x4dae78['filename']||_0x4dae78['uniqueid'],_0x4dae78['format']||'wav');var _0x49ec12=_['find'](_0x54643d[_0x336c('0x68')],{'filename':_0x336c('0x65')+_0x147c47[_0x336c('0x66')]()});if(_0x49ec12){_0x49ec12[_0x336c('0x74')]=_0x336c('0x75');}})[_0x336c('0x1b')](function(){_0x442bfb({'code':0xc8,'message':[_0x4dae78[_0x336c('0x64')],'StopMixMonitor\x20Success'][_0x336c('0x61')]('\x20')});})[_0x336c('0x6d')](function(_0x45428d){_0x45d69d(_0xd1a98b[_0x336c('0x14')](0x1f5,[_0x4dae78['uniqueid'],_0x45428d[_0x336c('0x1c')][_0x336c('0x66')]()][_0x336c('0x61')]('\x20')));});}else{return _0x45d69d(_0xd1a98b['error'](0x1f5,_0x336c('0x6e')));}});},'VoiceQueuesChannels':function(_0x23ca9d){return new Promise(function(_0x134d6f,_0x13f919){var _0x2332c6=_[_0x336c('0x5e')](_0x4e4c07[_0x336c('0x76')]);_0x134d6f({'count':_0x2332c6['length'],'rows':_0x2332c6});});},'VoiceQueuesChannel':function(_0x5908b9){var _0x1d3ab9=this;return new Promise(function(_0x413412,_0x35f7f2){var _0x8e1b7=schema(properties[_0x336c('0x77')])[_0x336c('0x2')](_0x5908b9);if(_0x8e1b7[_0x336c('0x5a')]>0x0){return _0x35f7f2(_0x1d3ab9[_0x336c('0x14')](0x1f4,_['map'](_0x8e1b7,_0x336c('0x1c'))[_0x336c('0x61')](',\x20')));}var _0x58eb23=_[_0x336c('0x5b')](_0x4e4c07[_0x336c('0x76')],{'uniqueid':_0x5908b9['uniqueid']});if(_0x58eb23){_0x413412(_0x58eb23);}else{return _0x35f7f2(_0x1d3ab9['error'](0x1f5,_0x336c('0x6e')));}});},'VoiceQueuesChannelHangup':function(_0x548c39){var _0x21241d=this;return new Promise(function(_0x10436f,_0x4e2776){if(ami[_0x336c('0x13')]()==![]){return _0x4e2776(_0x21241d[_0x336c('0x14')](0x1f4,[config[_0x336c('0x15')]['ip'],config[_0x336c('0x15')]['username'],_0x336c('0x17')][_0x336c('0x61')]('\x20')));}var _0x2e4785=schema(properties['voicequeuechannelhangup'])['validate'](_0x548c39);if(_0x2e4785['length']>0x0){return _0x4e2776(_0x21241d['error'](0x1f4,_['map'](_0x2e4785,_0x336c('0x1c'))['join'](',\x20')));}var _0x67330a=_['find'](_0x4e4c07['queueChannels'],{'uniqueid':_0x548c39[_0x336c('0x64')]});if(_0x67330a&&_0x67330a[_0x336c('0x62')]){return ami['Action']({'action':_0x336c('0x78'),'channel':_0x67330a['channel']})[_0x336c('0x1b')](function(_0x3e0fdf){_0x10436f({'code':0xc8,'message':[_0x548c39[_0x336c('0x64')],_0x3e0fdf[_0x336c('0x1c')][_0x336c('0x66')]()]['join']('\x20')});})[_0x336c('0x6d')](function(_0x45ec3a){_0x4e2776(_0x21241d[_0x336c('0x14')](0x1f5,[_0x548c39['uniqueid'],_0x45ec3a[_0x336c('0x1c')][_0x336c('0x66')]()][_0x336c('0x61')]('\x20')));});}else{return _0x4e2776(_0x21241d[_0x336c('0x14')](0x1f5,_0x336c('0x6e')));}});},'VoiceQueuesChannelRedirect':function(_0x3090a9){var _0x309604=this;return new Promise(function(_0x912ff4,_0x573512){if(ami[_0x336c('0x13')]()==![]){return _0x573512(_0x309604[_0x336c('0x14')](0x1f4,[config[_0x336c('0x15')]['ip'],config[_0x336c('0x15')]['username'],_0x336c('0x17')]['join']('\x20')));}var _0x752a4d=schema(properties[_0x336c('0x79')])[_0x336c('0x2')](_0x3090a9);if(_0x752a4d[_0x336c('0x5a')]>0x0){return _0x573512(_0x309604[_0x336c('0x14')](0x1f4,_[_0x336c('0x6f')](_0x752a4d,'message')[_0x336c('0x61')](',\x20')));}var _0x5221ce=_['find'](_0x4e4c07[_0x336c('0x76')],{'uniqueid':_0x3090a9[_0x336c('0x64')]});if(_0x5221ce&&_0x5221ce[_0x336c('0x62')]){return ami[_0x336c('0x71')]({'action':_0x336c('0x7a'),'channel':_0x5221ce[_0x336c('0x62')],'exten':_0x3090a9[_0x336c('0x7b')],'context':_0x3090a9[_0x336c('0x7c')]||_0x5221ce[_0x336c('0x7c')],'priority':0x1})[_0x336c('0x1b')](function(_0x4d930d){_0x912ff4({'code':0xc8,'message':[_0x3090a9[_0x336c('0x64')],_0x4d930d[_0x336c('0x1c')][_0x336c('0x66')]()][_0x336c('0x61')]('\x20')});})[_0x336c('0x6d')](function(_0xb158ca){_0x573512(_0x309604[_0x336c('0x14')](0x1f5,[_0x3090a9[_0x336c('0x64')],_0xb158ca[_0x336c('0x1c')]['toLowerCase']()][_0x336c('0x61')]('\x20')));});}else{return _0x573512(_0x309604[_0x336c('0x14')](0x1f5,_0x336c('0x6e')));}});},'Agents':function(_0x25ba0e){return new Promise(function(_0x3a85fd,_0x5f08a9){var _0xf82a02=_['values'](_0x4e4c07[_0x336c('0x10')]);_0x3a85fd({'count':_0xf82a02[_0x336c('0x5a')],'rows':_0xf82a02});});},'Telephones':function(_0x24c878){return new Promise(function(_0x49ebc7,_0x28e708){var _0x314fa0=_[_0x336c('0x5e')](_0x4e4c07[_0x336c('0x7d')]);_0x49ebc7({'count':_0x314fa0['length'],'rows':_0x314fa0});});},'Trunks':function(_0x1a47ba){return new Promise(function(_0x5b4540,_0x533c90){var _0x50ae9c=_['values'](_0x4e4c07[_0x336c('0x7e')]);_0x5b4540({'count':_0x50ae9c['length'],'rows':_0x50ae9c});});},'OutboundChannels':function(_0x52a554){return new Promise(function(_0xf46d71,_0x518e58){var _0x1280d5=_['values'](_0x4e4c07[_0x336c('0x7f')]);_0xf46d71({'count':_0x1280d5[_0x336c('0x5a')],'rows':_0x1280d5});});},'Outbound':function(_0x27a6fd){return new Promise(function(_0x17e944,_0x51d6e2){_0x17e944(_0x4e4c07[_0x336c('0x2c')]);});},'Campaigns':function(_0x57b686){return new Promise(function(_0x446702,_0x2c6a8f){var _0x3f33f=_[_0x336c('0x5e')](_0x4e4c07[_0x336c('0x80')]);_0x446702({'count':_0x3f33f['length'],'rows':_0x3f33f});});},'VoiceQueuesPreview':function(_0x336311){var _0x3fef9c=this;return new Promise(function(_0x33ce7d,_0xfa9158){_0x3b27e0['run'](_0x336311['id'])[_0x336c('0x1b')](function(_0x3024ad){_0x33ce7d({'code':0xc8,'message':_0x3024ad[_0x336c('0x1c')]});})[_0x336c('0x6d')](function(_0x533db0){_0xfa9158(_0x3fef9c[_0x336c('0x14')](0x1f4,_0x533db0[_0x336c('0x1c')]));});});},'EventManager':function(_0x3b4484){var _0xf247c5=this;return new Promise(function(_0x1ab058,_0x7aed56){if(!_0x3b4484[_0x336c('0x81')]){return _0x7aed56(_0xf247c5[_0x336c('0x14')](0x1f4,_0x336c('0x82')));}ami['emit'](_0x336c('0x83')+_0x3b4484[_0x336c('0x81')],_0x3b4484['message']);_0x1ab058({'code':0xc8,'message':_0x3b4484});});},'FaxAccounts':function(_0x25a1aa){return new Promise(function(_0x21ac11,_0xabd53f){var _0x22eae7=_[_0x336c('0x5e')](_0x4e4c07[_0x336c('0x84')]);_0x21ac11({'count':_0x22eae7[_0x336c('0x5a')],'rows':_0x22eae7});});},'SendFax':function(_0x31f9de){var _0x25b6c1=this;return new Promise(function(_0x469fae,_0x18b96d){_0x2e0016[_0x336c('0x85')](_0x31f9de)[_0x336c('0x1b')](function(_0xb21d9e){_0x469fae({'code':0xc8,'message':_0xb21d9e['message']});})[_0x336c('0x6d')](function(_0x142c3c){_0x18b96d(_0x25b6c1['error'](0x1f4,_0x142c3c[_0x336c('0x1c')]));});});},'CheckAfterSend':function(_0x2cce98){var _0x100188=this;return new Promise(function(_0x44e759,_0x16762a){_0x2e0016[_0x336c('0x86')](_0x2cce98)['then'](function(_0x1b150e){_0x44e759({'code':0xc8,'message':_0x1b150e[_0x336c('0x1c')]});})[_0x336c('0x6d')](function(_0x4a686f){_0x16762a(_0x100188['error'](0x1f4,_0x4a686f['message']));});});}};var _0x534cd3=jayson[_0x336c('0x87')](_0x295b22)['http']();_0x534cd3['on'](_0x336c('0x14'),function(_0x1c8a04){return _0x29a202(_0x1c8a04);});_0x534cd3[_0x336c('0x8')](0x232a,_0x336c('0x88'),function(){console[_0x336c('0x89')](_0x336c('0x8a'),0x232a);return _0x2097a8('RPC\x20listening\x20on\x20port:'+0x232a);});});};
\ No newline at end of file
index a91ca10..6856bed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x69b7=['createdAt','scheduledAt','then','getContacts','isEmpty','[CM][%s][%s]\x20Contact\x20found:%s','uniqueid','[CM][%s][%s]\x20Contact\x20not\x20found','data4','isNil','calleridname','<unknown>','Unknown','destcalleridname','resolve','push','firstName','format','user:%s','name','trigger:%s','action','toLowerCase','merge','length','bluebird','ioredis','util','../../../../config/environment','../../../../config/logger','trigger','../../rpc/cmContact','defaults','localhost','redis','info','[CM][%s][%s]','stringify','exec','data1','data2','xmd-contactid','ListId','data3','map','routeId','destcalleridnum','calleridnum','phone','mobile','fax'];(function(_0x14c973,_0x266b3a){var _0x3e09d6=function(_0xd4d15b){while(--_0xd4d15b){_0x14c973['push'](_0x14c973['shift']());}};_0x3e09d6(++_0x266b3a);}(_0x69b7,0x17e));var _0x769b=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x69b7[_0x3947c9];return _0x2e7871;};'use strict';var _=require('lodash');var BPromise=require(_0x769b('0x0'));var Redis=require(_0x769b('0x1'));var util=require(_0x769b('0x2'));var config=require(_0x769b('0x3'));var logger=require(_0x769b('0x4'))(_0x769b('0x5'));var cmContactRpc=require(_0x769b('0x6'));config['redis']=_[_0x769b('0x7')](config['redis'],{'host':_0x769b('0x8'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x769b('0x9')]));function emit(_0x381d5d,_0x3bacf5,_0x40b624,_0x479c0c,_0x543c13){logger[_0x769b('0xa')](_0x769b('0xb'),_0x381d5d,_0x3bacf5['id'],_0x40b624,_0x479c0c,JSON[_0x769b('0xc')](_0x543c13));io['to'](_0x40b624)['emit'](_0x479c0c,_0x543c13);}exports[_0x769b('0xd')]=function(_0x14e78d,_0xac4b14,_0x402185,_0x5f6476){var _0x3f24d7,_0x6091ac;var _0x217285={};var _0x3437dd=Number(_0x402185[_0x769b('0xe')]);var _0x417585=_0x402185['data2']?Boolean(Number(_0x402185[_0x769b('0xf')])):![];var _0x560f5b;if(_0x5f6476['xmd-contactid']){_0x217285['id']=_0x5f6476[_0x769b('0x10')];}if(!_0x217285['id']){_0x217285[_0x769b('0x11')]=_0x3437dd;_0x560f5b=_0x402185['data3']&&_0x402185[_0x769b('0x12')]!=='0'?_0x402185['data3']['split'](','):['phone'];_0x217285['$or']=_[_0x769b('0x13')](_0x560f5b,function(_0x80ea8e){var _0x5b0d25={};_0x5b0d25[_0x80ea8e]=_0x5f6476[_0x769b('0x14')]?_0x5f6476[_0x769b('0x15')]:_0x5f6476[_0x769b('0x16')];return _0x5b0d25;});}var _0x40ae4a=['id','firstName','lastName',_0x769b('0x17'),_0x769b('0x18'),_0x769b('0x19'),_0x769b('0x11'),_0x769b('0x1a'),_0x769b('0x1b'),'updatedAt'];var _0x245482=_['union'](_0x40ae4a,_0x560f5b);BPromise['resolve']()[_0x769b('0x1c')](cmContactRpc[_0x769b('0x1d')]({'attributes':_0x245482,'where':_0x217285}))[_0x769b('0x1c')](function(_0x11de22){_0x6091ac=_0x11de22;if(!_[_0x769b('0x1e')](_0x6091ac)){if(_0x6091ac['length']===0x1){_0x3f24d7=_0x6091ac[0x0];logger[_0x769b('0xa')](_0x769b('0x1f'),_0x5f6476[_0x769b('0x20')],_0xac4b14['id'],_0x3f24d7['id']);}else{logger['info']('[CM][%s][%s]\x20Multiple\x20contacts\x20found:[%s]',_0x5f6476[_0x769b('0x20')],_0xac4b14['id'],_[_0x769b('0x13')](_0x6091ac,'id')['join'](','));}return;}else{logger[_0x769b('0xa')](_0x769b('0x21'),_0x5f6476[_0x769b('0x20')],_0xac4b14['id']);var _0x22eaf0={'ListId':_0x3437dd};var _0x46365c=_0x402185[_0x769b('0x22')]&&_0x402185[_0x769b('0x22')]!=='0'?_0x402185[_0x769b('0x22')]:_0x769b('0x17');if(_0x417585){logger[_0x769b('0xa')]('[CM][%s][%s]\x20Autocreate\x20enabled',_0x5f6476[_0x769b('0x20')],_0xac4b14['id']);_0x22eaf0[_0x46365c]=_[_0x769b('0x23')](_0x5f6476['routeId'])?_0x5f6476[_0x769b('0x16')]:_0x5f6476[_0x769b('0x15')];if(_['isNil'](_0x5f6476[_0x769b('0x14')])){_0x22eaf0['firstName']=_0x5f6476[_0x769b('0x24')]&&_0x5f6476[_0x769b('0x24')]!==_0x769b('0x25')?_0x5f6476[_0x769b('0x24')]:_0x769b('0x26');}else{_0x22eaf0['firstName']=_0x5f6476[_0x769b('0x27')]&&_0x5f6476[_0x769b('0x27')]!==_0x769b('0x25')?_0x5f6476[_0x769b('0x27')]:'Unknown';}return BPromise[_0x769b('0x28')]()[_0x769b('0x1c')](cmContactRpc['createContact'](_0x22eaf0))[_0x769b('0x1c')](function(_0x415523){_0x3f24d7=_0x415523;_0x6091ac[_0x769b('0x29')](_0x415523);if(_0x3f24d7){logger[_0x769b('0xa')]('[CM][%s][%s]\x20Contact\x20created:%s',_0x5f6476[_0x769b('0x20')],_0xac4b14['id'],_0x3f24d7['id']);}return;});}else{logger[_0x769b('0xa')]('[CM][%s][%s]\x20Autocreate\x20disabled',_0x5f6476['uniqueid'],_0xac4b14['id']);_0x22eaf0[_0x46365c]=_[_0x769b('0x23')](_0x5f6476[_0x769b('0x14')])?_0x5f6476[_0x769b('0x16')]:_0x5f6476[_0x769b('0x15')];if(_['isNil'](_0x5f6476[_0x769b('0x14')])){_0x22eaf0[_0x769b('0x2a')]=_0x5f6476[_0x769b('0x24')]&&_0x5f6476[_0x769b('0x24')]!==_0x769b('0x25')?_0x5f6476['calleridname']:_0x769b('0x26');}else{_0x22eaf0['firstName']=_0x5f6476[_0x769b('0x27')]&&_0x5f6476[_0x769b('0x27')]!=='<unknown>'?_0x5f6476['destcalleridname']:_0x769b('0x26');}_0x3f24d7=_0x22eaf0;_0x6091ac[_0x769b('0x29')](_0x22eaf0);return;}}})[_0x769b('0x1c')](function(){if(_0x14e78d){emit(_0x5f6476[_0x769b('0x20')],_0xac4b14,util[_0x769b('0x2b')](_0x769b('0x2c'),_0x14e78d[_0x769b('0x2d')]),util['format'](_0x769b('0x2e'),_0x402185[_0x769b('0x2f')][_0x769b('0x30')]()),{'evt':_[_0x769b('0x31')](_0x5f6476,{'autoCreate':_0x417585}),'contact':_0x3f24d7===undefined?{}:_0x3f24d7,'contacts':_0x6091ac[_0x769b('0x32')]===0x0?undefined:_0x6091ac});}});};
\ No newline at end of file
+var _0x5636=['data3','split','phone','$or','calleridnum','lastName','mobile','fax','createdAt','scheduledAt','updatedAt','resolve','then','getContacts','length','uniqueid','map','join','[CM][%s][%s]\x20Contact\x20not\x20found','data4','destcalleridnum','isNil','routeId','firstName','calleridname','Unknown','destcalleridname','<unknown>','createContact','push','[CM][%s][%s]\x20Contact\x20created:%s','[CM][%s][%s]\x20Autocreate\x20disabled','user:%s','name','format','trigger:%s','toLowerCase','merge','lodash','bluebird','../../../../config/logger','trigger','../../rpc/cmContact','defaults','redis','localhost','socket.io-emitter','info','[CM][%s][%s]','stringify','data1','data2','data5','xmd-contactid','ListId'];(function(_0x11efc5,_0x28e307){var _0x1fe163=function(_0x5d4a74){while(--_0x5d4a74){_0x11efc5['push'](_0x11efc5['shift']());}};_0x1fe163(++_0x28e307);}(_0x5636,0x102));var _0x6563=function(_0x26574d,_0x13ba75){_0x26574d=_0x26574d-0x0;var _0x2e18de=_0x5636[_0x26574d];return _0x2e18de;};'use strict';var _=require(_0x6563('0x0'));var BPromise=require(_0x6563('0x1'));var Redis=require('ioredis');var util=require('util');var config=require('../../../../config/environment');var logger=require(_0x6563('0x2'))(_0x6563('0x3'));var cmContactRpc=require(_0x6563('0x4'));config['redis']=_[_0x6563('0x5')](config[_0x6563('0x6')],{'host':_0x6563('0x7'),'port':0x18eb});var io=require(_0x6563('0x8'))(new Redis(config[_0x6563('0x6')]));function emit(_0x193942,_0x9884a9,_0x2d57d5,_0x2d0d5b,_0x98fcd4){logger[_0x6563('0x9')](_0x6563('0xa'),_0x193942,_0x9884a9['id'],_0x2d57d5,_0x2d0d5b,JSON[_0x6563('0xb')](_0x98fcd4));io['to'](_0x2d57d5)['emit'](_0x2d0d5b,_0x98fcd4);}exports['exec']=function(_0x2946f3,_0x129fa3,_0x490a56,_0x506ee9){var _0x5da960,_0x1ef002;var _0x111d38={};var _0x35936d=Number(_0x490a56[_0x6563('0xc')]);var _0x33816e=_0x490a56[_0x6563('0xd')]?Boolean(Number(_0x490a56[_0x6563('0xd')])):![];var _0xbbae72;var _0x447f9a=![];if(!_['isNil'](_0x490a56[_0x6563('0xe')])){if(_0x490a56['data5']=='1')_0x447f9a=!![];}if(!_0x447f9a){if(_0x506ee9[_0x6563('0xf')]){_0x111d38['id']=_0x506ee9[_0x6563('0xf')];}}if(!_0x111d38['id']){_0x111d38[_0x6563('0x10')]=_0x35936d;_0xbbae72=_0x490a56[_0x6563('0x11')]&&_0x490a56['data3']!=='0'?_0x490a56[_0x6563('0x11')][_0x6563('0x12')](','):[_0x6563('0x13')];_0x111d38[_0x6563('0x14')]=_['map'](_0xbbae72,function(_0x3563fd){var _0x589632={};_0x589632[_0x3563fd]=_0x506ee9['routeId']?_0x506ee9['destcalleridnum']:_0x506ee9[_0x6563('0x15')];return _0x589632;});}var _0x4f5609=['id','firstName',_0x6563('0x16'),_0x6563('0x13'),_0x6563('0x17'),_0x6563('0x18'),_0x6563('0x10'),_0x6563('0x19'),_0x6563('0x1a'),_0x6563('0x1b')];var _0x2a70f0=_['union'](_0x4f5609,_0xbbae72);BPromise[_0x6563('0x1c')]()[_0x6563('0x1d')](cmContactRpc[_0x6563('0x1e')]({'attributes':_0x2a70f0,'where':_0x111d38}))['then'](function(_0x293db2){_0x1ef002=_0x293db2;if(!_['isEmpty'](_0x1ef002)){if(_0x1ef002[_0x6563('0x1f')]===0x1){_0x5da960=_0x1ef002[0x0];logger[_0x6563('0x9')]('[CM][%s][%s]\x20Contact\x20found:%s',_0x506ee9['uniqueid'],_0x129fa3['id'],_0x5da960['id']);}else{logger[_0x6563('0x9')]('[CM][%s][%s]\x20Multiple\x20contacts\x20found:[%s]',_0x506ee9[_0x6563('0x20')],_0x129fa3['id'],_[_0x6563('0x21')](_0x1ef002,'id')[_0x6563('0x22')](','));}return;}else{logger['info'](_0x6563('0x23'),_0x506ee9['uniqueid'],_0x129fa3['id']);var _0x7ea857={'ListId':_0x35936d};var _0x1590e6=_0x490a56['data4']&&_0x490a56[_0x6563('0x24')]!=='0'?_0x490a56[_0x6563('0x24')]:'phone';if(_0x33816e){logger[_0x6563('0x9')]('[CM][%s][%s]\x20Autocreate\x20enabled',_0x506ee9[_0x6563('0x20')],_0x129fa3['id']);_0x7ea857[_0x1590e6]=_['isNil'](_0x506ee9['routeId'])?_0x506ee9[_0x6563('0x15')]:_0x506ee9[_0x6563('0x25')];if(_[_0x6563('0x26')](_0x506ee9[_0x6563('0x27')])){_0x7ea857[_0x6563('0x28')]=_0x506ee9['calleridname']&&_0x506ee9[_0x6563('0x29')]!=='<unknown>'?_0x506ee9['calleridname']:_0x6563('0x2a');}else{_0x7ea857[_0x6563('0x28')]=_0x506ee9[_0x6563('0x2b')]&&_0x506ee9[_0x6563('0x2b')]!==_0x6563('0x2c')?_0x506ee9[_0x6563('0x2b')]:_0x6563('0x2a');}return BPromise[_0x6563('0x1c')]()[_0x6563('0x1d')](cmContactRpc[_0x6563('0x2d')](_0x7ea857))['then'](function(_0x9b3d86){_0x5da960=_0x9b3d86;_0x1ef002[_0x6563('0x2e')](_0x9b3d86);if(_0x5da960){logger[_0x6563('0x9')](_0x6563('0x2f'),_0x506ee9[_0x6563('0x20')],_0x129fa3['id'],_0x5da960['id']);}return;});}else{logger[_0x6563('0x9')](_0x6563('0x30'),_0x506ee9['uniqueid'],_0x129fa3['id']);_0x7ea857[_0x1590e6]=_[_0x6563('0x26')](_0x506ee9[_0x6563('0x27')])?_0x506ee9[_0x6563('0x15')]:_0x506ee9[_0x6563('0x25')];if(_[_0x6563('0x26')](_0x506ee9[_0x6563('0x27')])){_0x7ea857['firstName']=_0x506ee9[_0x6563('0x29')]&&_0x506ee9[_0x6563('0x29')]!==_0x6563('0x2c')?_0x506ee9[_0x6563('0x29')]:_0x6563('0x2a');}else{_0x7ea857[_0x6563('0x28')]=_0x506ee9[_0x6563('0x2b')]&&_0x506ee9['destcalleridname']!==_0x6563('0x2c')?_0x506ee9[_0x6563('0x2b')]:'Unknown';}_0x5da960=_0x7ea857;_0x1ef002[_0x6563('0x2e')](_0x7ea857);return;}}})[_0x6563('0x1d')](function(){if(_0x2946f3){emit(_0x506ee9['uniqueid'],_0x129fa3,util['format'](_0x6563('0x31'),_0x2946f3[_0x6563('0x32')]),util[_0x6563('0x33')](_0x6563('0x34'),_0x490a56['action'][_0x6563('0x35')]()),{'evt':_[_0x6563('0x36')](_0x506ee9,{'autoCreate':_0x33816e}),'contact':_0x5da960===undefined?{}:_0x5da960,'contacts':_0x1ef002['length']===0x0?undefined:_0x1ef002});}});};
\ No newline at end of file
index 6b89249..fa87bd3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c43=['freshdeskAccounts','salesforceAccounts','sugarcrmAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','accounts','syncCustomEvent','bind','custom:agentconnect','custom:agentringnoanswer','custom:agentnosuchnumber','custom:agentcongestion','custom:amd','custom:queuecallerabandon','custom:timeout','custom:dialbegin','custom:dialconnect','syncAgentDial','custom:dialend','custom:closedinteraction','custom:outgoingmessage','custom:acceptmessage','custom:rejectmessage','emit','info','prototype','clone','checkTriggers','interface','triggers','hasOwnProperty','status','merge','variables','Actions','length','action','toLowerCase','contactmanager','data1','TemplateId','data2','render','html','template\x20not\x20found','buildUri','isNil','data3','data4','uriLocation','windowWidth','data5','800','windowHeight','data6','600','winApplication','format','user:%s','trigger:%s:%s','name','trigger:%s','exec','integration','routeId','urlforward','parse','query','search','replace','checkTrigger','every','AllConditions','channel','AnyConditions','some','checkConditions','field','account','chat','ChatWebsiteId','operator','value','upperFirst','AccountId','event','queue','membername','lastevent','exports','util','mustache','ioredis','./integration','./script','../../../config/environment','../../../config/logger','trigger','../ami','redis','defaults','localhost','socket.io-emitter','popup','winapp','agents','voiceQueues','templates','voiceExtensions','zendeskAccounts'];(function(_0x118ad1,_0x10ce0b){var _0x30d413=function(_0x16ac56){while(--_0x16ac56){_0x118ad1['push'](_0x118ad1['shift']());}};_0x30d413(++_0x10ce0b);}(_0x5c43,0x142));var _0x35c4=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x5c43[_0x20a584];return _0x4b41a8;};'use strict';var util=require(_0x35c4('0x0'));var _=require('lodash');var url=require('url');var Mustache=require(_0x35c4('0x1'));var Redis=require(_0x35c4('0x2'));var urlforward=require('./urlforward');var integration=require(_0x35c4('0x3'));var cmContact=require('./cmContact');var script=require(_0x35c4('0x4'));var config=require(_0x35c4('0x5'));var logger=require(_0x35c4('0x6'))(_0x35c4('0x7'));var ami=require(_0x35c4('0x8'));config[_0x35c4('0x9')]=_[_0x35c4('0xa')](config['redis'],{'host':_0x35c4('0xb'),'port':0x18eb});var io=require(_0x35c4('0xc'))(new Redis(config[_0x35c4('0x9')]));var operators={'equals':function(_0x68e6b6,_0x1cacd1){return _0x68e6b6==_0x1cacd1;},'not_equals':function(_0x53c1a3,_0x17b52f){return _0x53c1a3!=_0x17b52f;}};var barAndWebActions=[_0x35c4('0xd'),'url',_0x35c4('0xe')];function Trigger(_0x559f6e){this['triggers']=_0x559f6e['triggers'];this[_0x35c4('0xf')]=_0x559f6e[_0x35c4('0xf')];this[_0x35c4('0x10')]=_0x559f6e['voiceQueues'];this[_0x35c4('0x11')]=_0x559f6e[_0x35c4('0x11')];this[_0x35c4('0x12')]=_0x559f6e[_0x35c4('0x12')];this['zendeskAccounts']=_0x559f6e[_0x35c4('0x13')];this[_0x35c4('0x14')]=_0x559f6e[_0x35c4('0x14')];this[_0x35c4('0x15')]=_0x559f6e['salesforceAccounts'];this[_0x35c4('0x16')]=_0x559f6e[_0x35c4('0x16')];this[_0x35c4('0x17')]=_0x559f6e['zohoAccounts'];this[_0x35c4('0x18')]=_0x559f6e['deskAccounts'];this[_0x35c4('0x19')]=_0x559f6e['vtigerAccounts'];this[_0x35c4('0x1a')]=_0x559f6e['servicenowAccounts'];this[_0x35c4('0x1b')]=_0x559f6e['dynamics365Accounts'];this[_0x35c4('0x1c')]=_0x559f6e[_0x35c4('0x1c')];this[_0x35c4('0x1d')]={'zendesk':this['zendeskAccounts'],'salesforce':this['salesforceAccounts'],'freshdesk':this[_0x35c4('0x14')],'sugarcrm':this[_0x35c4('0x16')],'zoho':this[_0x35c4('0x17')],'desk':this[_0x35c4('0x18')],'vtiger':this[_0x35c4('0x19')],'dynamics365':this[_0x35c4('0x1b')],'freshsales':this['freshsalesAccounts'],'servicenow':this[_0x35c4('0x1a')]};ami['on']('custom:agentcalled',this[_0x35c4('0x1e')][_0x35c4('0x1f')](this));ami['on'](_0x35c4('0x20'),this[_0x35c4('0x1e')][_0x35c4('0x1f')](this));ami['on'](_0x35c4('0x21'),this[_0x35c4('0x1e')][_0x35c4('0x1f')](this));ami['on']('custom:agentcomplete',this[_0x35c4('0x1e')][_0x35c4('0x1f')](this));ami['on'](_0x35c4('0x22'),this[_0x35c4('0x1e')][_0x35c4('0x1f')](this));ami['on']('custom:agentnoanswer',this[_0x35c4('0x1e')][_0x35c4('0x1f')](this));ami['on']('custom:agentbusy',this[_0x35c4('0x1e')][_0x35c4('0x1f')](this));ami['on'](_0x35c4('0x23'),this[_0x35c4('0x1e')][_0x35c4('0x1f')](this));ami['on']('custom:agentreject',this[_0x35c4('0x1e')][_0x35c4('0x1f')](this));ami['on'](_0x35c4('0x24'),this[_0x35c4('0x1e')][_0x35c4('0x1f')](this));ami['on'](_0x35c4('0x25'),this[_0x35c4('0x1e')][_0x35c4('0x1f')](this));ami['on'](_0x35c4('0x26'),this['syncCustomEvent'][_0x35c4('0x1f')](this));ami['on'](_0x35c4('0x27'),this['syncAgentDial'][_0x35c4('0x1f')](this));ami['on'](_0x35c4('0x28'),this[_0x35c4('0x29')][_0x35c4('0x1f')](this));ami['on'](_0x35c4('0x2a'),this['syncAgentDial'][_0x35c4('0x1f')](this));ami['on']('custom:newinteraction',this[_0x35c4('0x1e')][_0x35c4('0x1f')](this));ami['on'](_0x35c4('0x2b'),this['syncCustomEvent'][_0x35c4('0x1f')](this));ami['on']('custom:incomingmessage',this[_0x35c4('0x1e')][_0x35c4('0x1f')](this));ami['on'](_0x35c4('0x2c'),this[_0x35c4('0x1e')][_0x35c4('0x1f')](this));ami['on'](_0x35c4('0x2d'),this[_0x35c4('0x1e')][_0x35c4('0x1f')](this));ami['on'](_0x35c4('0x2e'),this[_0x35c4('0x1e')][_0x35c4('0x1f')](this));}Trigger['prototype'][_0x35c4('0x2f')]=function(_0x45fb24,_0x2810a3,_0x1c93cd){logger[_0x35c4('0x30')](_0x45fb24,_0x2810a3,JSON['stringify'](_0x1c93cd));io['to'](_0x45fb24)[_0x35c4('0x2f')](_0x2810a3,_0x1c93cd);};Trigger[_0x35c4('0x31')][_0x35c4('0x1e')]=function(_0x3fb057){var _0x1cc930=_[_0x35c4('0x32')](_0x3fb057);this[_0x35c4('0x33')](_0x1cc930);};Trigger[_0x35c4('0x31')][_0x35c4('0x29')]=function(_0x2aef7e){if(this[_0x35c4('0xf')][_0x2aef7e[_0x35c4('0x34')]]){this[_0x35c4('0x1e')](_0x2aef7e);}};Trigger[_0x35c4('0x31')][_0x35c4('0x33')]=function(_0x3f61cc){var _0x25b838;for(var _0x1ec021 in this[_0x35c4('0x35')]){if(this['triggers'][_0x35c4('0x36')](_0x1ec021)){if(this['triggers'][_0x1ec021][_0x35c4('0x37')]){_0x25b838=this['checkTrigger'](this[_0x35c4('0x35')][_0x1ec021],_0x3f61cc);if(_0x25b838){_[_0x35c4('0x38')](_0x3f61cc,_0x3f61cc[_0x35c4('0x39')]);for(var _0x4e0e56=0x0,_0x69722e,_0x14e42d,_0x5eee31;_0x4e0e56<this[_0x35c4('0x35')][_0x1ec021][_0x35c4('0x3a')][_0x35c4('0x3b')];_0x4e0e56+=0x1){_0x69722e=this[_0x35c4('0x35')][_0x1ec021][_0x35c4('0x3a')][_0x4e0e56];if(this[_0x35c4('0xf')][_0x3f61cc[_0x35c4('0x34')]]){switch(_0x69722e[_0x35c4('0x3c')][_0x35c4('0x3d')]()){case _0x35c4('0x3e'):break;case'motionbar':case'browser':var _0x32056a={};switch(barAndWebActions[_0x69722e[_0x35c4('0x3f')]]){case _0x35c4('0xd'):_0x32056a[_0x35c4('0x40')]=_0x69722e[_0x35c4('0x41')];_0x32056a['html']=this[_0x35c4('0x11')][_0x69722e['data2']]?Mustache[_0x35c4('0x42')](this[_0x35c4('0x11')][_0x69722e['data2']][_0x35c4('0x43')],_0x3f61cc):_0x35c4('0x44');break;case'url':_0x32056a['uri']=this[_0x35c4('0x45')](_0x69722e[_0x35c4('0x41')],_0x3f61cc,_[_0x35c4('0x46')](_0x69722e['data3'])?!![]:parseInt(_0x69722e[_0x35c4('0x47')],0xa));if(_[_0x35c4('0x46')](_0x69722e[_0x35c4('0x48')])){_0x32056a['location']='0';}else{_0x32056a[_0x35c4('0x49')]=_0x69722e['data4'];_0x32056a[_0x35c4('0x4a')]=_[_0x35c4('0x46')](_0x69722e[_0x35c4('0x4b')])?_0x35c4('0x4c'):_0x69722e[_0x35c4('0x4b')];_0x32056a[_0x35c4('0x4d')]=_[_0x35c4('0x46')](_0x69722e[_0x35c4('0x4e')])?_0x35c4('0x4f'):_0x69722e[_0x35c4('0x4e')];}break;case _0x35c4('0xe'):_0x32056a[_0x35c4('0x50')]=_0x69722e[_0x35c4('0x41')]?Mustache[_0x35c4('0x42')](_0x69722e[_0x35c4('0x41')],_0x3f61cc):'';_0x32056a['winArguments']=_0x69722e[_0x35c4('0x47')]?Mustache[_0x35c4('0x42')](_0x69722e[_0x35c4('0x47')],_0x3f61cc):'';break;}this['emit'](util[_0x35c4('0x51')](_0x35c4('0x52'),this[_0x35c4('0xf')][_0x3f61cc[_0x35c4('0x34')]]['name']),util[_0x35c4('0x51')](_0x35c4('0x53'),_0x69722e[_0x35c4('0x3c')][_0x35c4('0x3d')](),barAndWebActions[_0x69722e[_0x35c4('0x3f')]]),_['merge'](_0x32056a,_0x3f61cc));break;case'jscripty':this[_0x35c4('0x2f')](util[_0x35c4('0x51')]('user:%s',this[_0x35c4('0xf')][_0x3f61cc[_0x35c4('0x34')]]['name']),util[_0x35c4('0x51')]('trigger:%s',_0x69722e[_0x35c4('0x3c')][_0x35c4('0x3d')]()),_['merge']({'ProjectId':parseInt(_0x69722e[_0x35c4('0x3f')],0xa)},_0x3f61cc));break;default:this[_0x35c4('0x2f')](util[_0x35c4('0x51')](_0x35c4('0x52'),this[_0x35c4('0xf')][_0x3f61cc['interface']][_0x35c4('0x54')]),util[_0x35c4('0x51')](_0x35c4('0x55'),_0x69722e[_0x35c4('0x3c')][_0x35c4('0x3d')]()),_['merge']({},_0x69722e,_0x3f61cc));}}switch(_0x69722e[_0x35c4('0x3c')][_0x35c4('0x3d')]()){case _0x35c4('0x3e'):cmContact[_0x35c4('0x56')](this['agents'][_0x3f61cc[_0x35c4('0x34')]],this['triggers'][_0x1ec021],_0x69722e,_0x3f61cc);break;case _0x35c4('0x57'):integration[_0x35c4('0x56')](_0x69722e,_0x3f61cc,this[_0x35c4('0x1d')],this['agents'][_0x3f61cc[_0x35c4('0x34')]],this['voiceQueues'][_0x3f61cc['queue']],this['voiceExtensions'][_0x3f61cc[_0x35c4('0x58')]]);break;case _0x35c4('0x59'):urlforward[_0x35c4('0x56')](_0x69722e,_0x3f61cc);break;case'script':script[_0x35c4('0x56')](_0x69722e,_0x3f61cc);break;}}}}}}};Trigger[_0x35c4('0x31')][_0x35c4('0x45')]=function(_0x233e5b,_0x8d0b26,_0x77cf8a){var _0x776513=url[_0x35c4('0x5a')](Mustache[_0x35c4('0x42')](_0x233e5b,_0x8d0b26),!![]);if(_0x77cf8a){_[_0x35c4('0x38')](_0x776513[_0x35c4('0x5b')],_0x8d0b26);}delete _0x776513[_0x35c4('0x5c')];var _0x12eed6=url[_0x35c4('0x51')](_0x776513);_0x12eed6=_0x12eed6[_0x35c4('0x5d')](/\/\?/g,'?');return _0x12eed6;};Trigger[_0x35c4('0x31')][_0x35c4('0x5e')]=function(_0x4fcd51,_0x48cc25){var _0x1df88a=!![],_0x1248a9=!![];if(_0x4fcd51['AllConditions']['length']){_0x1df88a=_[_0x35c4('0x5f')](_0x4fcd51[_0x35c4('0x60')],this['checkConditions'](_0x48cc25,_0x4fcd51[_0x35c4('0x61')]));}if(_0x4fcd51[_0x35c4('0x62')][_0x35c4('0x3b')]){_0x1248a9=_[_0x35c4('0x63')](_0x4fcd51[_0x35c4('0x62')],this['checkConditions'](_0x48cc25,_0x4fcd51[_0x35c4('0x61')]));}return _0x1df88a&&_0x1248a9;};Trigger['prototype'][_0x35c4('0x64')]=function(_0x4a8b82,_0x1280a3){return function(_0x2da83e){switch(_0x2da83e[_0x35c4('0x65')]){case _0x35c4('0x66'):if(_0x4a8b82['channel']===_0x1280a3){if(_0x1280a3===_0x35c4('0x67')){return _0x4a8b82[_0x35c4('0x68')]?operators[_0x2da83e[_0x35c4('0x69')]](Number(_0x2da83e[_0x35c4('0x6a')]),_0x4a8b82[_0x35c4('0x68')]):![];}else{return _0x4a8b82[_[_0x35c4('0x6b')](_0x1280a3)+_0x35c4('0x6c')]?operators[_0x2da83e['operator']](Number(_0x2da83e['value']),_0x4a8b82[_['upperFirst'](_0x1280a3)+'AccountId']):![];}}break;case'interaction':case'message':if(_0x4a8b82[_0x35c4('0x61')]===_0x1280a3){return _0x4a8b82[_0x35c4('0x6d')]?operators[_0x2da83e[_0x35c4('0x69')]](_0x2da83e[_0x35c4('0x6a')],_0x4a8b82[_0x35c4('0x6d')]):![];}break;case _0x35c4('0x6e'):return _0x4a8b82[_0x35c4('0x6e')]?operators[_0x2da83e['operator']](_0x2da83e[_0x35c4('0x6a')],_0x4a8b82[_0x35c4('0x6e')]):![];case'agent':return _0x4a8b82[_0x35c4('0x6f')]?operators[_0x2da83e[_0x35c4('0x69')]](_0x2da83e[_0x35c4('0x6a')],_0x4a8b82[_0x35c4('0x6f')]):![];case _0x35c4('0x70'):return _0x4a8b82['lastevent']?operators[_0x2da83e[_0x35c4('0x69')]](_0x2da83e[_0x35c4('0x6a')],_0x4a8b82[_0x35c4('0x70')]):![];case _0x35c4('0x58'):return _0x4a8b82[_0x35c4('0x58')]?operators[_0x2da83e[_0x35c4('0x69')]](_0x2da83e['value'],_0x4a8b82[_0x35c4('0x58')]):![];}return![];};};module[_0x35c4('0x71')]=Trigger;
\ No newline at end of file
+var _0xde56=['custom:timeout','custom:dialbegin','syncAgentDial','custom:newinteraction','custom:closedinteraction','custom:substatus','custom:incomingmessage','custom:outgoingmessage','custom:acceptmessage','custom:rejectmessage','emit','prototype','motionChannel','checkTriggers','interface','hasOwnProperty','status','checkTrigger','merge','variables','Actions','action','contactmanager','motionbar','browser','data1','TemplateId','html','data2','render','template\x20not\x20found','uri','buildUri','data3','isNil','location','uriLocation','data4','windowWidth','data5','800','windowHeight','data6','600','winApplication','format','user:%s','name','jscripty','trigger:%s','toLowerCase','integration','exec','queue','routeId','urlforward','script','parse','query','search','replace','channel','length','every','AllConditions','checkConditions','AnyConditions','some','field','account','ChatWebsiteId','operator','value','AccountId','message','event','agent','membername','lastevent','exports','util','url','mustache','ioredis','./urlforward','./integration','./cmContact','./script','../../../config/environment','../../../config/logger','trigger','redis','defaults','localhost','socket.io-emitter','popup','triggers','agents','voiceQueues','templates','voiceExtensions','zendeskAccounts','freshdeskAccounts','salesforceAccounts','sugarcrmAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','accounts','syncCustomEvent','custom:agentringnoanswer','bind','custom:agentcomplete','custom:agentnosuchnumber','custom:agentnoanswer','custom:agentbusy','custom:agentreject','custom:amd','custom:queuecallerabandon'];(function(_0x5b47ef,_0x345169){var _0x460919=function(_0x4d5e4c){while(--_0x4d5e4c){_0x5b47ef['push'](_0x5b47ef['shift']());}};_0x460919(++_0x345169);}(_0xde56,0x144));var _0x6de5=function(_0x193ddf,_0x6f30bb){_0x193ddf=_0x193ddf-0x0;var _0x5bc6df=_0xde56[_0x193ddf];return _0x5bc6df;};'use strict';var util=require(_0x6de5('0x0'));var _=require('lodash');var url=require(_0x6de5('0x1'));var Mustache=require(_0x6de5('0x2'));var Redis=require(_0x6de5('0x3'));var urlforward=require(_0x6de5('0x4'));var integration=require(_0x6de5('0x5'));var cmContact=require(_0x6de5('0x6'));var script=require(_0x6de5('0x7'));var config=require(_0x6de5('0x8'));var logger=require(_0x6de5('0x9'))(_0x6de5('0xa'));var ami=require('../ami');config[_0x6de5('0xb')]=_[_0x6de5('0xc')](config[_0x6de5('0xb')],{'host':_0x6de5('0xd'),'port':0x18eb});var io=require(_0x6de5('0xe'))(new Redis(config[_0x6de5('0xb')]));var operators={'equals':function(_0x570f37,_0x4a75ed){return _0x570f37==_0x4a75ed;},'not_equals':function(_0x1769af,_0x3c7292){return _0x1769af!=_0x3c7292;}};var barAndWebActions=[_0x6de5('0xf'),_0x6de5('0x1'),'winapp'];function Trigger(_0x4364b9){this[_0x6de5('0x10')]=_0x4364b9[_0x6de5('0x10')];this[_0x6de5('0x11')]=_0x4364b9['agents'];this[_0x6de5('0x12')]=_0x4364b9[_0x6de5('0x12')];this['templates']=_0x4364b9[_0x6de5('0x13')];this[_0x6de5('0x14')]=_0x4364b9[_0x6de5('0x14')];this[_0x6de5('0x15')]=_0x4364b9['zendeskAccounts'];this[_0x6de5('0x16')]=_0x4364b9[_0x6de5('0x16')];this[_0x6de5('0x17')]=_0x4364b9[_0x6de5('0x17')];this['sugarcrmAccounts']=_0x4364b9[_0x6de5('0x18')];this[_0x6de5('0x19')]=_0x4364b9[_0x6de5('0x19')];this[_0x6de5('0x1a')]=_0x4364b9['deskAccounts'];this[_0x6de5('0x1b')]=_0x4364b9[_0x6de5('0x1b')];this[_0x6de5('0x1c')]=_0x4364b9[_0x6de5('0x1c')];this['dynamics365Accounts']=_0x4364b9[_0x6de5('0x1d')];this[_0x6de5('0x1e')]=_0x4364b9[_0x6de5('0x1e')];this[_0x6de5('0x1f')]={'zendesk':this['zendeskAccounts'],'salesforce':this['salesforceAccounts'],'freshdesk':this[_0x6de5('0x16')],'sugarcrm':this['sugarcrmAccounts'],'zoho':this['zohoAccounts'],'desk':this[_0x6de5('0x1a')],'vtiger':this['vtigerAccounts'],'dynamics365':this[_0x6de5('0x1d')],'freshsales':this[_0x6de5('0x1e')],'servicenow':this[_0x6de5('0x1c')]};ami['on']('custom:agentcalled',this[_0x6de5('0x20')]['bind'](this));ami['on']('custom:agentconnect',this['syncCustomEvent']['bind'](this));ami['on'](_0x6de5('0x21'),this[_0x6de5('0x20')][_0x6de5('0x22')](this));ami['on'](_0x6de5('0x23'),this[_0x6de5('0x20')][_0x6de5('0x22')](this));ami['on'](_0x6de5('0x24'),this['syncCustomEvent']['bind'](this));ami['on'](_0x6de5('0x25'),this[_0x6de5('0x20')]['bind'](this));ami['on'](_0x6de5('0x26'),this[_0x6de5('0x20')][_0x6de5('0x22')](this));ami['on']('custom:agentcongestion',this[_0x6de5('0x20')][_0x6de5('0x22')](this));ami['on'](_0x6de5('0x27'),this[_0x6de5('0x20')][_0x6de5('0x22')](this));ami['on'](_0x6de5('0x28'),this[_0x6de5('0x20')][_0x6de5('0x22')](this));ami['on'](_0x6de5('0x29'),this['syncCustomEvent'][_0x6de5('0x22')](this));ami['on'](_0x6de5('0x2a'),this[_0x6de5('0x20')][_0x6de5('0x22')](this));ami['on'](_0x6de5('0x2b'),this['syncAgentDial']['bind'](this));ami['on']('custom:dialconnect',this[_0x6de5('0x2c')][_0x6de5('0x22')](this));ami['on']('custom:dialend',this[_0x6de5('0x2c')][_0x6de5('0x22')](this));ami['on'](_0x6de5('0x2d'),this[_0x6de5('0x20')][_0x6de5('0x22')](this));ami['on'](_0x6de5('0x2e'),this[_0x6de5('0x20')]['bind'](this));ami['on'](_0x6de5('0x2f'),this[_0x6de5('0x20')]['bind'](this));ami['on'](_0x6de5('0x30'),this[_0x6de5('0x20')][_0x6de5('0x22')](this));ami['on'](_0x6de5('0x31'),this[_0x6de5('0x20')][_0x6de5('0x22')](this));ami['on'](_0x6de5('0x32'),this[_0x6de5('0x20')][_0x6de5('0x22')](this));ami['on'](_0x6de5('0x33'),this[_0x6de5('0x20')][_0x6de5('0x22')](this));}Trigger['prototype'][_0x6de5('0x34')]=function(_0x3e9f9a,_0x28777c,_0x3472cf){logger['info'](_0x3e9f9a,_0x28777c,JSON['stringify'](_0x3472cf));io['to'](_0x3e9f9a)['emit'](_0x28777c,_0x3472cf);};Trigger[_0x6de5('0x35')][_0x6de5('0x20')]=function(_0x2247b0){var _0x8259f8=_['clone'](_0x2247b0);if(typeof _0x8259f8[_0x6de5('0x36')]==='undefined'){_0x8259f8['motionChannel']='voice';}this[_0x6de5('0x37')](_0x8259f8);};Trigger[_0x6de5('0x35')]['syncAgentDial']=function(_0x5cb989){if(this[_0x6de5('0x11')][_0x5cb989[_0x6de5('0x38')]]){this[_0x6de5('0x20')](_0x5cb989);}};Trigger[_0x6de5('0x35')]['checkTriggers']=function(_0x3c7bd0){var _0x4ca3c5;for(var _0x44b145 in this['triggers']){if(this[_0x6de5('0x10')][_0x6de5('0x39')](_0x44b145)){if(this['triggers'][_0x44b145][_0x6de5('0x3a')]){_0x4ca3c5=this[_0x6de5('0x3b')](this['triggers'][_0x44b145],_0x3c7bd0);if(_0x4ca3c5){_[_0x6de5('0x3c')](_0x3c7bd0,_0x3c7bd0[_0x6de5('0x3d')]);for(var _0x1840e4=0x0,_0x43c508,_0x39421f,_0x1783d0;_0x1840e4<this['triggers'][_0x44b145][_0x6de5('0x3e')]['length'];_0x1840e4+=0x1){_0x43c508=this['triggers'][_0x44b145]['Actions'][_0x1840e4];if(this[_0x6de5('0x11')][_0x3c7bd0['interface']]){switch(_0x43c508[_0x6de5('0x3f')]['toLowerCase']()){case _0x6de5('0x40'):break;case _0x6de5('0x41'):case _0x6de5('0x42'):var _0x3bc554={};switch(barAndWebActions[_0x43c508[_0x6de5('0x43')]]){case _0x6de5('0xf'):_0x3bc554[_0x6de5('0x44')]=_0x43c508['data2'];_0x3bc554[_0x6de5('0x45')]=this[_0x6de5('0x13')][_0x43c508[_0x6de5('0x46')]]?Mustache[_0x6de5('0x47')](this[_0x6de5('0x13')][_0x43c508[_0x6de5('0x46')]]['html'],_0x3c7bd0):_0x6de5('0x48');break;case _0x6de5('0x1'):_0x3bc554[_0x6de5('0x49')]=this[_0x6de5('0x4a')](_0x43c508['data2'],_0x3c7bd0,_['isNil'](_0x43c508[_0x6de5('0x4b')])?!![]:parseInt(_0x43c508[_0x6de5('0x4b')],0xa));if(_[_0x6de5('0x4c')](_0x43c508['data4'])){_0x3bc554[_0x6de5('0x4d')]='0';}else{_0x3bc554[_0x6de5('0x4e')]=_0x43c508[_0x6de5('0x4f')];_0x3bc554[_0x6de5('0x50')]=_[_0x6de5('0x4c')](_0x43c508[_0x6de5('0x51')])?_0x6de5('0x52'):_0x43c508[_0x6de5('0x51')];_0x3bc554[_0x6de5('0x53')]=_['isNil'](_0x43c508[_0x6de5('0x54')])?_0x6de5('0x55'):_0x43c508[_0x6de5('0x54')];}break;case'winapp':_0x3bc554[_0x6de5('0x56')]=_0x43c508['data2']?Mustache['render'](_0x43c508[_0x6de5('0x46')],_0x3c7bd0):'';_0x3bc554['winArguments']=_0x43c508[_0x6de5('0x4b')]?Mustache[_0x6de5('0x47')](_0x43c508[_0x6de5('0x4b')],_0x3c7bd0):'';break;}this[_0x6de5('0x34')](util[_0x6de5('0x57')](_0x6de5('0x58'),this[_0x6de5('0x11')][_0x3c7bd0[_0x6de5('0x38')]][_0x6de5('0x59')]),util[_0x6de5('0x57')]('trigger:%s:%s',_0x43c508['action']['toLowerCase'](),barAndWebActions[_0x43c508[_0x6de5('0x43')]]),_[_0x6de5('0x3c')](_0x3bc554,_0x3c7bd0));break;case _0x6de5('0x5a'):this['emit'](util['format'](_0x6de5('0x58'),this[_0x6de5('0x11')][_0x3c7bd0[_0x6de5('0x38')]][_0x6de5('0x59')]),util[_0x6de5('0x57')](_0x6de5('0x5b'),_0x43c508[_0x6de5('0x3f')][_0x6de5('0x5c')]()),_[_0x6de5('0x3c')]({'ProjectId':parseInt(_0x43c508[_0x6de5('0x43')],0xa)},_0x3c7bd0));break;default:this['emit'](util[_0x6de5('0x57')](_0x6de5('0x58'),this[_0x6de5('0x11')][_0x3c7bd0[_0x6de5('0x38')]][_0x6de5('0x59')]),util[_0x6de5('0x57')](_0x6de5('0x5b'),_0x43c508[_0x6de5('0x3f')][_0x6de5('0x5c')]()),_[_0x6de5('0x3c')]({},_0x43c508,_0x3c7bd0));}}switch(_0x43c508['action'][_0x6de5('0x5c')]()){case'contactmanager':cmContact['exec'](this['agents'][_0x3c7bd0[_0x6de5('0x38')]],this[_0x6de5('0x10')][_0x44b145],_0x43c508,_0x3c7bd0);break;case _0x6de5('0x5d'):integration[_0x6de5('0x5e')](_0x43c508,_0x3c7bd0,this[_0x6de5('0x1f')],this[_0x6de5('0x11')][_0x3c7bd0[_0x6de5('0x38')]],this['voiceQueues'][_0x3c7bd0[_0x6de5('0x5f')]],this['voiceExtensions'][_0x3c7bd0[_0x6de5('0x60')]]);break;case _0x6de5('0x61'):urlforward['exec'](_0x43c508,_0x3c7bd0);break;case _0x6de5('0x62'):script[_0x6de5('0x5e')](_0x43c508,_0x3c7bd0);break;}}}}}}};Trigger[_0x6de5('0x35')][_0x6de5('0x4a')]=function(_0x3cbc81,_0x480de9,_0x5c28a1){var _0x4acdac=url[_0x6de5('0x63')](Mustache['render'](_0x3cbc81,_0x480de9),!![]);if(_0x5c28a1){_[_0x6de5('0x3c')](_0x4acdac[_0x6de5('0x64')],_0x480de9);}delete _0x4acdac[_0x6de5('0x65')];var _0x29041f=url['format'](_0x4acdac);_0x29041f=_0x29041f[_0x6de5('0x66')](/\/\?/g,'?');return _0x29041f;};Trigger[_0x6de5('0x35')][_0x6de5('0x3b')]=function(_0x3d2b4e,_0x16cca7){var _0x1cb78b=!![];var _0x325b1a=!![];var _0x76c63f=![];if(_0x3d2b4e[_0x6de5('0x67')]===_0x16cca7[_0x6de5('0x36')]){_0x76c63f=!![];}if(_0x3d2b4e['AllConditions'][_0x6de5('0x68')]){_0x1cb78b=_[_0x6de5('0x69')](_0x3d2b4e[_0x6de5('0x6a')],this[_0x6de5('0x6b')](_0x16cca7,_0x3d2b4e[_0x6de5('0x67')]));}if(_0x3d2b4e[_0x6de5('0x6c')]['length']){_0x325b1a=_[_0x6de5('0x6d')](_0x3d2b4e['AnyConditions'],this['checkConditions'](_0x16cca7,_0x3d2b4e[_0x6de5('0x67')]));}return _0x76c63f&&_0x1cb78b&&_0x325b1a;};Trigger[_0x6de5('0x35')]['checkConditions']=function(_0x4e7e4e,_0xbeb38b){return function(_0x4eca57){switch(_0x4eca57[_0x6de5('0x6e')]){case _0x6de5('0x6f'):if(_0x4e7e4e['channel']===_0xbeb38b){if(_0xbeb38b==='chat'){return _0x4e7e4e[_0x6de5('0x70')]?operators[_0x4eca57[_0x6de5('0x71')]](Number(_0x4eca57[_0x6de5('0x72')]),_0x4e7e4e[_0x6de5('0x70')]):![];}else{return _0x4e7e4e[_['upperFirst'](_0xbeb38b)+_0x6de5('0x73')]?operators[_0x4eca57[_0x6de5('0x71')]](Number(_0x4eca57[_0x6de5('0x72')]),_0x4e7e4e[_['upperFirst'](_0xbeb38b)+_0x6de5('0x73')]):![];}}break;case'interaction':case _0x6de5('0x74'):if(_0x4e7e4e[_0x6de5('0x67')]===_0xbeb38b){return _0x4e7e4e[_0x6de5('0x75')]?operators[_0x4eca57['operator']](_0x4eca57[_0x6de5('0x72')],_0x4e7e4e[_0x6de5('0x75')]):![];}break;case _0x6de5('0x5f'):return _0x4e7e4e[_0x6de5('0x5f')]?operators[_0x4eca57[_0x6de5('0x71')]](_0x4eca57['value'],_0x4e7e4e[_0x6de5('0x5f')]):![];case _0x6de5('0x76'):return _0x4e7e4e[_0x6de5('0x77')]?operators[_0x4eca57['operator']](_0x4eca57[_0x6de5('0x72')],_0x4e7e4e[_0x6de5('0x77')]):![];case'lastevent':return _0x4e7e4e[_0x6de5('0x78')]?operators[_0x4eca57[_0x6de5('0x71')]](_0x4eca57['value'],_0x4e7e4e[_0x6de5('0x78')]):![];case'routeId':return _0x4e7e4e[_0x6de5('0x60')]?operators[_0x4eca57[_0x6de5('0x71')]](_0x4eca57[_0x6de5('0x72')],_0x4e7e4e[_0x6de5('0x60')]):![];}return![];};};module[_0x6de5('0x79')]=Trigger;
\ No newline at end of file
index 56f71e3..624d869 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x326f=['catch','stringify','unmanaged','lastevent','toUpperCase','lodash','util','ioredis','./util','../../../../config/environment','../../../../config/logger','desk','redis','defaults','localhost','validateEmail','info','Getting\x20agent\x20with\x20email','%s/users','then','total_entries','_embedded','entries','Agent\x20found!','format','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','%s/users/me','remoteUri','debug','[HTTP]','GET','authType','basic','password','%s/token:%s','Basic\x20%s','Searching\x20enduser\x20with\x20phone','%s/customers/search','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','POST','work','map','length','includes','string','picklist','type','nameField','customField','toLowerCase','content','idField','custom_fields','toString','variable','variableName','customVariable','Variable','name','priority','Creating\x20new\x20ticket...','getString','Subjects','xCALLY','concat','Descriptions','user','Fields','%s/customers/%d/cases','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','uniqueid','Authorization','email','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent...','trigger:desk:display','newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','error','Desk\x20account\x20type\x20not\x20recognized','outbound','recordingFormat','none','[OUTBOUND]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','destcalleridname','integrationTab','%s/agent/tickets/%s'];(function(_0x1694f5,_0x49b7c3){var _0x5b4321=function(_0x58c183){while(--_0x58c183){_0x1694f5['push'](_0x1694f5['shift']());}};_0x5b4321(++_0x49b7c3);}(_0x326f,0xd1));var _0xf326=function(_0xbe621e,_0x212c13){_0xbe621e=_0xbe621e-0x0;var _0x1a44a5=_0x326f[_0xbe621e];return _0x1a44a5;};'use strict';var _=require(_0xf326('0x0'));var rp=require('request-promise');var md5=require('md5');var util=require(_0xf326('0x1'));var Redis=require(_0xf326('0x2'));var intUtil=require(_0xf326('0x3'));var config=require(_0xf326('0x4'));var logger=require(_0xf326('0x5'))(_0xf326('0x6'));config[_0xf326('0x7')]=_[_0xf326('0x8')](config[_0xf326('0x7')],{'host':_0xf326('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xf326('0x7')]));function emit(_0x3851eb,_0x165f95,_0x1e7b8a){io['to'](_0x3851eb)['emit'](_0x165f95,_0x1e7b8a);}var headers={'Content-Type':'application/json','Accept':'application/json'};function getUser(_0x3bacf2,_0x1fc80e){if(intUtil[_0xf326('0xa')](_0x1fc80e)===!![]){logger[_0xf326('0xb')](_0xf326('0xc'),_0x1fc80e);return request({'uri':util['format'](_0xf326('0xd'),_0x3bacf2['remoteUri'])})[_0xf326('0xe')](function(_0x4aaf3a){if(_0x4aaf3a[_0xf326('0xf')]){return _['find'](_0x4aaf3a[_0xf326('0x10')][_0xf326('0x11')],{'email':_0x1fc80e});}})['then'](function(_0x342fe5){if(_0x342fe5){logger[_0xf326('0xb')](_0xf326('0x12'));return _0x342fe5;}else{logger[_0xf326('0xb')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0xf326('0x13')]('%s/users/me',_0x3bacf2['remoteUri'])});}});}else{logger[_0xf326('0xb')](_0xf326('0x14'));return request({'uri':util[_0xf326('0x13')](_0xf326('0x15'),_0x3bacf2[_0xf326('0x16')])});}}function request(_0x287a2a){logger[_0xf326('0x17')](_0xf326('0x18'),JSON['stringify'](_0x287a2a));return rp(_[_0xf326('0x8')](_0x287a2a,{'method':_0xf326('0x19'),'headers':headers,'json':!![]}));}function getAuth(_0x18bee3){var _0x31ffb9;if(_0x18bee3[_0xf326('0x1a')]===_0xf326('0x1b')){_0x31ffb9=util['format']('%s:%s',_0x18bee3['username'],_0x18bee3[_0xf326('0x1c')]);}else if(_0x18bee3[_0xf326('0x1a')]==='token'){_0x31ffb9=util['format'](_0xf326('0x1d'),_0x18bee3['username'],_0x18bee3['token']);}return util[_0xf326('0x13')](_0xf326('0x1e'),new Buffer(_0x31ffb9)['toString']('base64'));}function getEndUser(_0x19b8ba,_0xb1efcf,_0x5f21a2){logger[_0xf326('0xb')](_0xf326('0x1f'),_0x5f21a2);return request({'uri':util[_0xf326('0x13')](_0xf326('0x20'),_0x19b8ba[_0xf326('0x16')]),'qs':{'phone':_0x5f21a2}})[_0xf326('0xe')](function(_0x5ce532){if(_0x5ce532['total_entries']){logger['info'](_0xf326('0x21'));return _0x5ce532[_0xf326('0x10')][_0xf326('0x11')][0x0];}else{logger[_0xf326('0xb')](_0xf326('0x22'));return request({'uri':util[_0xf326('0x13')]('%s/customers',_0x19b8ba[_0xf326('0x16')]),'method':_0xf326('0x23'),'body':{'first_name':_0xb1efcf,'title':_0xb1efcf,'phone_numbers':[{'type':_0xf326('0x24'),'value':_0x5f21a2}]}});}});}function getTags(_0x581531,_0x1617d2){var _0x55ad0f=[];if(_0x581531&&_0x581531['length']>0x0){_0x55ad0f=_[_0xf326('0x25')](_0x581531,_0x1617d2);}return _0x55ad0f;}function getCustomFields(_0x1ae23a,_0x2fa28e){var _0x5dbe63=[];var _0xc115d9={'custom_fields':{}};if(_0x1ae23a[_0xf326('0x26')]>0x0){_['forEach'](_0x1ae23a,function(_0x225776){if(_[_0xf326('0x27')]([_0xf326('0x28'),_0xf326('0x29')],_0x225776[_0xf326('0x2a')])&&_0x225776[_0xf326('0x2b')]&&!_0x225776[_0xf326('0x2c')]){_0xc115d9[_0x225776[_0xf326('0x2b')][_0xf326('0x2d')]()]=_0x225776[_0xf326('0x2e')]['toString']();}else if(_[_0xf326('0x27')]([_0xf326('0x28'),_0xf326('0x29')],_0x225776['type'])&&_0x225776[_0xf326('0x2f')]&&_0x225776[_0xf326('0x2c')]){_0xc115d9[_0xf326('0x30')][_0x225776['idField']]=_0x225776['content'][_0xf326('0x31')]();}else if(_0x225776[_0xf326('0x2a')]===_0xf326('0x32')&&_0x225776[_0xf326('0x33')]&&_0x225776[_0xf326('0x2f')]&&_0x225776[_0xf326('0x2c')]){_0x2fa28e[_0x225776[_0xf326('0x33')]]&&(_0xc115d9[_0xf326('0x30')][_0x225776['idField']]=_0x2fa28e[_0x225776[_0xf326('0x33')]][_0xf326('0x31')]());}else if(_0x225776['type']===_0xf326('0x34')&&_0x225776['Variable']&&_0x225776[_0xf326('0x35')]['name']&&_0x225776['idField']&&_0x225776[_0xf326('0x2c')]){_0x2fa28e[_0x225776['Variable'][_0xf326('0x36')]['toLowerCase']()]&&(_0xc115d9[_0xf326('0x30')][_0x225776[_0xf326('0x2f')]]=_0x2fa28e[_0x225776[_0xf326('0x35')]['name'][_0xf326('0x2d')]()][_0xf326('0x31')]());}});}if(_0xc115d9['priority']){_0xc115d9[_0xf326('0x37')]=Number(_0xc115d9[_0xf326('0x37')]);}return _0xc115d9;}function getTicket(_0x40fa7a,_0xaf65e0,_0x51076c,_0x2c4416,_0xb1ef35){logger[_0xf326('0xb')](_0xf326('0x38'));var _0x1d88ed=_['merge']({'subject':intUtil[_0xf326('0x39')](_0x2c4416[_0xf326('0x3a')],_0xb1ef35,'\x20'),'type':'phone','status':'new','labels':[_0xf326('0x3b'),'Motion','CTI'][_0xf326('0x3c')](getTags(_0x2c4416['Tags'],_0xf326('0x36'))),'description':intUtil[_0xf326('0x39')](_0x2c4416[_0xf326('0x3d')],_0xb1ef35,'\x0a'),'_links':{'assigned_user':{'href':util[_0xf326('0x13')]('/api/v2/users/%d',_0xaf65e0['id']),'class':_0xf326('0x3e')}},'message':{'direction':'in','body':intUtil[_0xf326('0x39')](_0x2c4416[_0xf326('0x3d')],_0xb1ef35,'\x0a')}},getCustomFields(_0x2c4416[_0xf326('0x3f')],_0xb1ef35));return request({'uri':util[_0xf326('0x13')](_0xf326('0x40'),_0x40fa7a[_0xf326('0x16')],_0x51076c['id']),'method':_0xf326('0x23'),'body':_0x1d88ed});}exports[_0xf326('0x41')]=function(_0x1227d3,_0x361776,_0x2bab13,_0x50d63f,_0x1b6126,_0x1637dc){var _0x2ed1a7,_0x270288;_0x1637dc[_0xf326('0x16')]=intUtil[_0xf326('0x42')](_0x1637dc['remoteUri']);_0x1637dc[_0xf326('0x43')]=intUtil[_0xf326('0x42')](_0x1637dc['serverUrl']);if(_0x1b6126&&_0x1b6126[_0xf326('0x44')]){logger[_0xf326('0xb')](_0xf326('0x45'),_0xf326('0x46'));_0x361776[_0xf326('0x47')]=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x1637dc[_0xf326('0x43')],_0x361776[_0xf326('0x48')],md5(_0x361776['uniqueid']));}else{_0x361776['recordingURL']='';}headers[_0xf326('0x49')]=getAuth(_0x1637dc);return getUser(_0x1637dc,_0x50d63f[_0xf326('0x4a')])[_0xf326('0xe')](function(_0x5b3705){_0x2ed1a7=_0x5b3705;logger[_0xf326('0xb')](_0xf326('0x4b'),_0x2ed1a7['id']);return getEndUser(_0x1637dc,_0x361776[_0xf326('0x4c')],_0x361776[_0xf326('0x4d')]);})[_0xf326('0xe')](function(_0x2d9bba){_0x270288=_0x2d9bba;logger[_0xf326('0xb')](_0xf326('0x4e'),_0x270288['id']);return getTicket(_0x1637dc,_0x2ed1a7,_0x270288,_0x2bab13,_0x361776);})[_0xf326('0xe')](function(_0x27ced1){if(_0x27ced1){logger[_0xf326('0xb')](_0xf326('0x4f'));logger[_0xf326('0xb')](_0xf326('0x50'),_0x27ced1['id']);switch(_0x1637dc[_0xf326('0x2a')]){case'integrationTab':logger[_0xf326('0xb')](_0xf326('0x45'),_0xf326('0x51'));emit(util[_0xf326('0x13')]('user:%s',_0x50d63f[_0xf326('0x36')]),_0xf326('0x52'),{'recordId':_0x27ced1['id']});break;case _0xf326('0x53'):logger[_0xf326('0xb')]('[QUEUE]',_0xf326('0x54'));emit(util[_0xf326('0x13')](_0xf326('0x55'),_0x50d63f[_0xf326('0x36')]),_0xf326('0x56'),{'uri':util['format']('https://xcally.desk.com/web/agent/case/%d',_0x27ced1['id'])});break;default:logger[_0xf326('0x57')](_0xf326('0x45'),_0xf326('0x58'));}}})['catch'](function(_0x102fba){console[_0xf326('0x57')](_0x102fba);logger[_0xf326('0x57')]('[QUEUE]',JSON['stringify'](_0x102fba));});};exports[_0xf326('0x59')]=function(_0x5b4832,_0x1cf58f,_0x554277,_0x458e5f,_0x7ee57,_0x28c959,_0x25e091){var _0x212594,_0x35d3c8;_0x28c959[_0xf326('0x16')]=intUtil['stripTrailingSlash'](_0x28c959[_0xf326('0x16')]);_0x28c959[_0xf326('0x43')]=intUtil[_0xf326('0x42')](_0x28c959['serverUrl']);if(_0x25e091&&_0x25e091[_0xf326('0x5a')]&&_0x25e091[_0xf326('0x5a')]!==_0xf326('0x5b')){logger[_0xf326('0xb')](_0xf326('0x5c'),'Recording\x20is\x20enabled!');_0x1cf58f[_0xf326('0x47')]=util[_0xf326('0x13')](_0xf326('0x5d'),_0x28c959[_0xf326('0x43')],_0x1cf58f['uniqueid'],md5(_0x1cf58f[_0xf326('0x48')]));}headers[_0xf326('0x49')]=getAuth(_0x28c959);return getUser(_0x28c959,_0x458e5f[_0xf326('0x4a')])[_0xf326('0xe')](function(_0x4d3b9e){_0x212594=_0x4d3b9e;logger['info'](_0xf326('0x4b'),_0x212594['id']);return getEndUser(_0x28c959,_0x1cf58f[_0xf326('0x5e')],_0x1cf58f['destcalleridnum']);})[_0xf326('0xe')](function(_0x29de71){_0x35d3c8=_0x29de71;logger[_0xf326('0xb')](_0xf326('0x4e'),_0x35d3c8['id']);return getTicket(_0x28c959,_0x212594,_0x35d3c8,_0x554277,_0x1cf58f);})['then'](function(_0xb1c18c){if(_0xb1c18c){logger['info']('Ticket\x20created!');logger[_0xf326('0xb')]('The\x20Ticket\x20ID\x20is:',_0xb1c18c['id']);switch(_0x28c959[_0xf326('0x2a')]){case _0xf326('0x5f'):logger[_0xf326('0xb')]('[QUEUE]','Displaying\x20ticket\x20to\x20agent...');emit(util[_0xf326('0x13')](_0xf326('0x55'),_0x458e5f[_0xf326('0x36')]),'trigger:desk:display',{'recordId':_0xb1c18c['id']});break;case _0xf326('0x53'):logger['info'](_0xf326('0x45'),_0xf326('0x54'));emit(util[_0xf326('0x13')](_0xf326('0x55'),_0x458e5f[_0xf326('0x36')]),_0xf326('0x56'),{'uri':util[_0xf326('0x13')](_0xf326('0x60'),_0x28c959[_0xf326('0x16')],_0xb1c18c['id'])});break;default:logger[_0xf326('0x57')](_0xf326('0x5c'),_0xf326('0x58'));}}})[_0xf326('0x61')](function(_0x4ca1b8){logger[_0xf326('0x57')]('[OUTBOUND]',JSON[_0xf326('0x62')](_0x4ca1b8));});};exports[_0xf326('0x63')]=function(_0x5e858d,_0x2b770c,_0x5283da,_0x3255b2,_0xd55246,_0x28f3cb){var _0x2d45c9,_0x31b6dd;_0x28f3cb['remoteUri']=intUtil['stripTrailingSlash'](_0x28f3cb[_0xf326('0x16')]);_0x28f3cb[_0xf326('0x43')]=intUtil[_0xf326('0x42')](_0x28f3cb[_0xf326('0x43')]);if(_0xd55246&&_0xd55246[_0xf326('0x44')]){logger['info']('['+_0x2b770c[_0xf326('0x64')][_0xf326('0x65')]()+']','Recording\x20is\x20enabled!');_0x2b770c['recordingURL']=util['format'](_0xf326('0x5d'),_0x28f3cb[_0xf326('0x43')],_0x2b770c[_0xf326('0x48')],md5(_0x2b770c[_0xf326('0x48')]));}else{_0x2b770c[_0xf326('0x47')]='';}headers[_0xf326('0x49')]=getAuth(_0x28f3cb);return getUser(_0x28f3cb)[_0xf326('0xe')](function(_0x4b9013){_0x2d45c9=_0x4b9013;logger[_0xf326('0xb')](_0xf326('0x4b'),_0x2d45c9['id']);return getEndUser(_0x28f3cb,_0x2b770c[_0xf326('0x4c')],_0x2b770c[_0xf326('0x4d')]);})['then'](function(_0x3717fe){_0x31b6dd=_0x3717fe;logger['info']('The\x20Enduser\x20ID\x20is:',_0x31b6dd['id']);return getTicket(_0x28f3cb,_0x2d45c9,_0x31b6dd,_0x5283da,_0x2b770c);})[_0xf326('0xe')](function(_0x540fa0){if(_0x540fa0){logger[_0xf326('0xb')](_0xf326('0x4f'));logger[_0xf326('0xb')](_0xf326('0x50'),_0x540fa0['id']);}})[_0xf326('0x61')](function(_0x541491){logger['error']('['+_0x2b770c['lastevent'][_0xf326('0x65')]()+']',JSON[_0xf326('0x62')](_0x541491));});};
\ 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(_0xfcb6bb,_0x5a997b){var _0x43e7e0=function(_0x3a740c){while(--_0x3a740c){_0xfcb6bb['push'](_0xfcb6bb['shift']());}};_0x43e7e0(++_0x5a997b);}(_0x3e74,0x175));var _0x43e7=function(_0x347297,_0x10027b){_0x347297=_0x347297-0x0;var _0x3a8ec6=_0x3e74[_0x347297];return _0x3a8ec6;};'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 6e36f6b..dbbdcf2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x750b=['uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]',']\x20The\x20User\x20ID\x20is:',']\x20The\x20User\x20email\x20is:',']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20Enduser\x20phone\x20is:',']\x20The\x20%s\x20ID\x20is:\x20%s',']\x20Call\x20direction:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...','name','lodash','request-promise','util','./util','ioredis','../../../../config/logger','dynamics365','../../../../config/environment','socket.io-emitter','redis','clientId','username','password','clientSecret','then','access_token','catch','error',']\x20Wrong\x20credentials!','GET','systemusers?$select=internalemailaddress,isdisabled,systemuserid','Bearer\x20','4.0','value','isNil','validateEmail','email','userEmail','length','isdisabled','info','toUpperCase',']\x20Agent\x20found\x20','systemuserid',']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','internalemailaddress','userId','message','outbound','destcalleridnum','calleridnum','POST','contacts','headers','lastIndexOf','toLowerCase','contacts?$select=telephone1&$filter=telephone1\x20eq\x20\x27','%2b','telephone1','enduserId','contactid',']\x20Enduser\x20created!',']\x20Enduser\x20Created!','forEach','string','picklist','type','nameField','customField','substring','indexOf','content','ticketType','incident','incidents','assign','getString','Subjects','Descriptions','/contacts(','/systemusers(','Fields','phonecall','callDirection','queue','odata-entityid','ticketId','format','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','emit','trigger:browser:url','remoteUri','stripTrailingSlash','serverUrl','%s/api/data/v9.0/','https://login.microsoftonline.com/%s/oauth2/token','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s'];(function(_0x3e6625,_0xa78a0a){var _0x22751b=function(_0x38e25e){while(--_0x38e25e){_0x3e6625['push'](_0x3e6625['shift']());}};_0x22751b(++_0xa78a0a);}(_0x750b,0x1ac));var _0xb750=function(_0xfa0c74,_0x1a934b){_0xfa0c74=_0xfa0c74-0x0;var _0x57bb17=_0x750b[_0xfa0c74];return _0x57bb17;};'use strict';var _=require(_0xb750('0x0'));var BPromise=require('bluebird');var rp=require(_0xb750('0x1'));var util=require(_0xb750('0x2'));var intUtil=require(_0xb750('0x3'));var md5=require('md5');var Redis=require(_0xb750('0x4'));var logger=require(_0xb750('0x5'))(_0xb750('0x6'));var config=require(_0xb750('0x7'));config['redis']=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0xb750('0x8'))(new Redis(config[_0xb750('0x9')]));function getAuthToken(_0x3b5ad4,_0x194511,_0x2e54fe){var _0x4ba995={'method':'POST','uri':_0x194511,'form':{'client_id':_0x3b5ad4[_0xb750('0xa')],'resource':_0x3b5ad4['remoteUri'],'username':_0x3b5ad4[_0xb750('0xb')],'password':_0x3b5ad4[_0xb750('0xc')],'grant_type':'password','client_secret':_0x3b5ad4[_0xb750('0xd')]},'json':!![]};return rp(_0x4ba995)[_0xb750('0xe')](function(_0x5c7037){return _0x5c7037[_0xb750('0xf')];})[_0xb750('0x10')](function(_0x420db1){logger[_0xb750('0x11')]('['+[_0x2e54fe['toUpperCase']()]+_0xb750('0x12'));return _0x420db1['message'];});}function getUser(_0x5bb122,_0x21ba71,_0x40700,_0x1b97b6,_0x24cfc9,_0x384026){return new BPromise(function(_0xee2c22,_0x5d16fb){return getAuthToken(_0x21ba71,_0x1b97b6,_0x384026)[_0xb750('0xe')](function(_0x12df01){var _0x1aada9={'method':_0xb750('0x13'),'uri':_0x24cfc9+_0xb750('0x14'),'headers':{'Authorization':_0xb750('0x15')+_0x12df01,'OData-Version':_0xb750('0x16')},'json':!![]};return rp(_0x1aada9);})['then'](function(_0xb20aae){var _0x53f3a0=_0xb20aae[_0xb750('0x17')];var _0x87de5d=![];var _0x44d794=null;if(!_[_0xb750('0x18')](_0x40700)){if(intUtil[_0xb750('0x19')](_0x40700[_0xb750('0x1a')])){_0x5bb122[_0xb750('0x1b')]=_0x40700[_0xb750('0x1a')];for(_0x44d794=0x0;_0x44d794<_0x53f3a0[_0xb750('0x1c')];_0x44d794++){if(_0x53f3a0[_0x44d794]['internalemailaddress']===_0x40700[_0xb750('0x1a')]&&!_0x53f3a0[_0x44d794][_0xb750('0x1d')]){_0x87de5d=!![];logger[_0xb750('0x1e')]('['+[_0x384026[_0xb750('0x1f')]()]+_0xb750('0x20')+_0x53f3a0[_0x44d794][_0xb750('0x21')]+'!');_0x5bb122['userId']=_0x53f3a0[_0x44d794]['systemuserid'];}}}}if(!_0x87de5d){logger[_0xb750('0x1e')]('['+[_0x384026[_0xb750('0x1f')]()]+_0xb750('0x22'));_0x5bb122[_0xb750('0x1b')]=_0x21ba71[_0xb750('0xb')];for(_0x44d794=0x0;_0x44d794<_0x53f3a0[_0xb750('0x1c')];_0x44d794++){if(_0x53f3a0[_0x44d794][_0xb750('0x23')]===_0x21ba71[_0xb750('0xb')]){_0x5bb122[_0xb750('0x24')]=_0x53f3a0[_0x44d794][_0xb750('0x21')];}}}_0xee2c22(_0x5bb122);})['catch'](function(_0x5895e5){_0x5d16fb(_0x5895e5[_0xb750('0x25')]);});});}function createEndUser(_0x128352,_0x37f5d3,_0x27e136,_0x65e3f7,_0x5c33dd,_0x2e95fd){return new BPromise(function(_0x202c82,_0x5b9713){return getAuthToken(_0x37f5d3,_0x27e136,_0x2e95fd)[_0xb750('0xe')](function(_0x4bde71){var _0x4a9b32=_0x2e95fd['toLowerCase']()===_0xb750('0x26')?_0x5c33dd[_0xb750('0x27')]:_0x5c33dd[_0xb750('0x28')];var _0x722f66={'method':_0xb750('0x29'),'uri':_0x65e3f7+_0xb750('0x2a'),'body':{'telephone1':_0x4a9b32,'fullname':_0x4a9b32,'firstname':_0x4a9b32,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':'/systemusers('+_0x128352[_0xb750('0x24')]+')'},'headers':{'Authorization':_0xb750('0x15')+_0x4bde71,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};return rp(_0x722f66);})['then'](function(_0x16b923){var _0x3d3f9d=_0x16b923[_0xb750('0x2b')]['odata-entityid'];var _0x1cbfa9=_0x3d3f9d['substring'](_0x3d3f9d['lastIndexOf']('(')+0x1,_0x3d3f9d[_0xb750('0x2c')](')'));_0x128352['enduserId']=_0x1cbfa9;_0x202c82(_0x128352);})['catch'](function(_0x5bd28d){_0x5b9713(_0x5bd28d[_0xb750('0x25')]);});});}function getEndUser(_0x56021e,_0x588760,_0x207a5a,_0x20dd00,_0x539ec6,_0x14e59b){return new BPromise(function(_0x5ab6f2,_0x107485){var _0x106dda=_0x14e59b[_0xb750('0x2d')]()==='outbound'?_0x539ec6[_0xb750('0x27')]:_0x539ec6[_0xb750('0x28')];return getAuthToken(_0x588760,_0x207a5a,_0x14e59b)[_0xb750('0xe')](function(_0x24af10){var _0x42ce05={'method':_0xb750('0x13'),'uri':_0x20dd00+_0xb750('0x2e')+_0x106dda['replace']('+',_0xb750('0x2f'))+'\x27','headers':{'Authorization':_0xb750('0x15')+_0x24af10,'If-None-Match':null,'OData-Version':_0xb750('0x16')},'json':!![]};return rp(_0x42ce05);})['then'](function(_0x4155c0){var _0x12e75b=null;if(_0x4155c0){var _0x5bde60=_0x4155c0[_0xb750('0x17')];var _0x594246=![];for(_0x12e75b=0x0;_0x12e75b<_0x5bde60[_0xb750('0x1c')];_0x12e75b++){if(_0x5bde60[_0x12e75b][_0xb750('0x30')]===_0x106dda){_0x594246=!![];_0x56021e[_0xb750('0x31')]=_0x5bde60[_0x12e75b][_0xb750('0x32')];}}if(_0x594246){_0x5ab6f2(_0x56021e);}else{return createEndUser(_0x56021e,_0x588760,_0x207a5a,_0x20dd00,_0x539ec6,_0x14e59b)[_0xb750('0xe')](function(_0x21e6ae){logger[_0xb750('0x1e')]('['+[_0x14e59b['toUpperCase']()]+_0xb750('0x33'),_0x21e6ae[_0xb750('0x31')]);_0x5ab6f2(_0x21e6ae);});}}else{return createEndUser(_0x56021e,_0x588760,_0x207a5a,_0x20dd00,_0x539ec6,_0x14e59b)['then'](function(_0x560409){logger[_0xb750('0x1e')]('['+[_0x14e59b[_0xb750('0x1f')]()]+_0xb750('0x34'),_0x560409['enduserId']);_0x5ab6f2(_0x560409);});}});});}function getCustomFields(_0x3f7427,_0x56872b,_0x3b0ed7){var _0x16926f={};if(_0x3f7427[_0xb750('0x1c')]>0x0){_[_0xb750('0x35')](_0x3f7427,function(_0x42f8b9){if(_['includes']([_0xb750('0x36'),_0xb750('0x37')],_0x42f8b9[_0xb750('0x38')])&&_0x42f8b9[_0xb750('0x39')]&&!_0x42f8b9[_0xb750('0x3a')]){var _0x141332=_0x42f8b9['idField'][_0xb750('0x2d')]();var _0x4f7711=_0x141332[_0xb750('0x3b')](0x0,_0x141332[_0xb750('0x3c')]('_'));var _0x3d9900=_0x141332[_0xb750('0x3b')](_0x141332['indexOf']('_')+0x1);if(_0x4f7711===_0x3b0ed7){_0x16926f[_0x3d9900]=_0x42f8b9[_0xb750('0x3d')];}}});}return _0x16926f;}function getTicket(_0x2de5af,_0x473122,_0x331d54,_0x515b1b,_0x3fc467,_0x161ac8,_0x463219){return new BPromise(function(_0x5264e4,_0x40589b){var _0x7cafce;return getAuthToken(_0x473122,_0x331d54,_0x463219)[_0xb750('0xe')](function(_0x6b1c24){if(_0x161ac8[_0xb750('0x3e')]===_0xb750('0x3f')){_0x7cafce={'method':_0xb750('0x29'),'uri':_0x515b1b+_0xb750('0x40'),'body':Object[_0xb750('0x41')]({},{'title':intUtil[_0xb750('0x42')](_0x161ac8[_0xb750('0x43')],_0x3fc467,'\x20'),'description':intUtil[_0xb750('0x42')](_0x161ac8[_0xb750('0x44')],_0x3fc467,'\x0a'),'customerid_contact@odata.bind':_0xb750('0x45')+_0x2de5af[_0xb750('0x31')]+')','ownerid@odata.bind':_0xb750('0x46')+_0x2de5af[_0xb750('0x24')]+')','caseorigincode':'1'},getCustomFields(_0x161ac8[_0xb750('0x47')],_0x3fc467,_0x161ac8[_0xb750('0x3e')])),'headers':{'Authorization':_0xb750('0x15')+_0x6b1c24,'OData-Version':_0xb750('0x16')},'json':!![],'resolveWithFullResponse':!![]};}if(_0x161ac8['ticketType']===_0xb750('0x48')){_0x7cafce={'method':_0xb750('0x29'),'uri':_0x515b1b+'phonecalls','body':Object[_0xb750('0x41')]({},{'subject':intUtil[_0xb750('0x42')](_0x161ac8[_0xb750('0x43')],_0x3fc467,'\x20'),'phonenumber':String(_0x3fc467['calleridnum']),'description':intUtil[_0xb750('0x42')](_0x161ac8['Descriptions'],_0x3fc467,'\x0a'),'regardingobjectid_contact@odata.bind':_0xb750('0x45')+_0x2de5af[_0xb750('0x31')]+')','ownerid@odata.bind':_0xb750('0x46')+_0x2de5af[_0xb750('0x24')]+')','directioncode':_0x2de5af[_0xb750('0x49')]===_0xb750('0x4a')?![]:!![],'phonecall_activity_parties':[{'partyid_systemuser@odata.bind':'/systemusers('+_0x2de5af[_0xb750('0x24')]+')','participationtypemask':_0x2de5af[_0xb750('0x49')]===_0xb750('0x4a')?0x2:0x1},{'partyid_contact@odata.bind':_0xb750('0x45')+_0x2de5af['enduserId']+')','participationtypemask':_0x2de5af['callDirection']===_0xb750('0x4a')?0x1:0x2}]},getCustomFields(_0x161ac8[_0xb750('0x47')],_0x3fc467,_0x161ac8[_0xb750('0x3e')])),'headers':{'Authorization':_0xb750('0x15')+_0x6b1c24,'OData-Version':_0xb750('0x16')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x7cafce);})['then'](function(_0x595dab){var _0x3dc727=_0x595dab[_0xb750('0x2b')][_0xb750('0x4b')];var _0x53ba27=_0x3dc727[_0xb750('0x3b')](_0x3dc727[_0xb750('0x2c')]('(')+0x1,_0x3dc727[_0xb750('0x2c')](')'));_0x2de5af[_0xb750('0x4c')]=_0x53ba27;_0x5264e4(_0x2de5af);})[_0xb750('0x10')](function(_0x5b7051){_0x40589b(_0x5b7051[_0xb750('0x25')]);});});}function emit(_0x3e37ea,_0x34eadd,_0x5e4dea,_0xae5903){var _0x144c37={'uri':util[_0xb750('0x4d')](_0xb750('0x4e'),_0x3e37ea,_0x5e4dea,_0xae5903)};io['to'](util[_0xb750('0x4d')]('user:%s',_0x34eadd))[_0xb750('0x4f')](_0xb750('0x50'),_0x144c37);}exports['cs']=function(_0x3504c8,_0x4d3d7c,_0x2915aa,_0x5036e1,_0x5cd198,_0x59accc,_0x553c80,_0x25b854){var _0x1838d3={};_0x59accc[_0xb750('0x51')]=intUtil[_0xb750('0x52')](_0x59accc[_0xb750('0x51')]);_0x59accc[_0xb750('0x53')]=intUtil[_0xb750('0x52')](_0x59accc[_0xb750('0x53')]);_0x1838d3[_0xb750('0x49')]=_0x25b854===_0xb750('0x4a')||_0x25b854==='unmanaged'?_0xb750('0x4a'):_0xb750('0x26');var _0x447331=util[_0xb750('0x4d')](_0xb750('0x54'),_0x59accc[_0xb750('0x51')]);var _0x212310=util[_0xb750('0x4d')](_0xb750('0x55'),_0x59accc['tenantId']);var _0x40b4d2=util[_0xb750('0x4d')](_0xb750('0x56'),_0x59accc[_0xb750('0x53')],_0x4d3d7c[_0xb750('0x57')],md5(_0x4d3d7c[_0xb750('0x57')]));if(_0x5cd198&&_0x5cd198[_0xb750('0x58')]){logger['info'](_0xb750('0x59'),_0xb750('0x5a'));_0x4d3d7c[_0xb750('0x5b')]=_0x40b4d2;}else if(_0x553c80&&_0x553c80['recordingFormat']&&_0x553c80[_0xb750('0x5c')]!==_0xb750('0x5d')){logger[_0xb750('0x1e')](_0xb750('0x5e'),_0xb750('0x5a'));_0x4d3d7c[_0xb750('0x5b')]=_0x40b4d2;}else{_0x4d3d7c[_0xb750('0x5b')]='';}return getUser(_0x1838d3,_0x59accc,_0x5036e1,_0x212310,_0x447331,_0x25b854)[_0xb750('0xe')](function(_0x1b4f1c){logger[_0xb750('0x1e')]('['+_0x25b854[_0xb750('0x1f')]()+_0xb750('0x5f'),_0x1b4f1c[_0xb750('0x24')]);logger[_0xb750('0x1e')]('['+_0x25b854[_0xb750('0x1f')]()+_0xb750('0x60'),_0x1b4f1c[_0xb750('0x1b')]);return getEndUser(_0x1b4f1c,_0x59accc,_0x212310,_0x447331,_0x4d3d7c,_0x25b854);})[_0xb750('0xe')](function(_0x527605){logger[_0xb750('0x1e')]('['+_0x25b854['toUpperCase']()+_0xb750('0x61'),_0x527605['enduserId']);logger[_0xb750('0x1e')]('['+_0x25b854[_0xb750('0x1f')]()+_0xb750('0x62'),_0x4d3d7c[_0xb750('0x28')]);return getTicket(_0x527605,_0x59accc,_0x212310,_0x447331,_0x4d3d7c,_0x2915aa,_0x25b854);})[_0xb750('0xe')](function(_0x400a86){logger['info'](util[_0xb750('0x4d')]('['+_0x25b854[_0xb750('0x1f')]()+_0xb750('0x63'),_0x2915aa[_0xb750('0x3e')],_0x400a86[_0xb750('0x4c')]));logger[_0xb750('0x1e')](util['format']('['+_0x25b854[_0xb750('0x1f')]()+_0xb750('0x64'),_0x25b854));if(_0x25b854!=='unmanaged'){logger['info']('['+_0x25b854[_0xb750('0x1f')]()+']',_0xb750('0x65'));emit(_0x59accc[_0xb750('0x51')],_0x5036e1[_0xb750('0x66')],_0x2915aa['ticketType'],_0x400a86[_0xb750('0x4c')]);}})[_0xb750('0x10')](function(_0x45d171){logger['error']('['+_0x25b854[_0xb750('0x1f')]()+']\x20Error\x20running\x20Dynamics365\x20integration',util['inspect'](_0x45d171,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0x7ad8=['clientId','remoteUri','username','password','clientSecret','then','access_token','catch','error','toUpperCase',']\x20Wrong\x20credentials!','message','GET','4.0','value','isNil','email','length','isdisabled','info',']\x20Agent\x20found\x20','systemuserid','userId','userEmail','internalemailaddress','toLowerCase','contacts','/systemusers(','headers','odata-entityid','substring','enduserId','outbound','destcalleridnum','calleridnum','contacts?$select=telephone1&$filter=telephone1\x20eq\x20\x27','replace','%2b','Bearer\x20','telephone1','contactid',']\x20Enduser\x20created!',']\x20Enduser\x20Created!','forEach','includes','picklist','type','nameField','customField','idField','indexOf','content','ticketType','incident','incidents','assign','getString','Subjects','Descriptions','/contacts(','Fields','phonecall','phonecalls','callDirection','queue','lastIndexOf','format','user:%s','emit','trigger:browser:url','stripTrailingSlash','serverUrl','unmanaged','https://login.microsoftonline.com/%s/oauth2/token','tenantId','uniqueid','monitor_format','Recording\x20is\x20enabled!','recordingFormat','none','recordingURL',']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20%s\x20ID\x20is:\x20%s','ticketId',']\x20Call\x20direction:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...','name',']\x20Error\x20running\x20Dynamics365\x20integration','bluebird','request-promise','util','./util','md5','ioredis','dynamics365','../../../../config/environment','redis','localhost','POST'];(function(_0xb1cf84,_0x813740){var _0x4bad2e=function(_0x53e6f2){while(--_0x53e6f2){_0xb1cf84['push'](_0xb1cf84['shift']());}};_0x4bad2e(++_0x813740);}(_0x7ad8,0x181));var _0x87ad=function(_0x1bb812,_0x23eacc){_0x1bb812=_0x1bb812-0x0;var _0x372adb=_0x7ad8[_0x1bb812];return _0x372adb;};'use strict';var _=require('lodash');var BPromise=require(_0x87ad('0x0'));var rp=require(_0x87ad('0x1'));var util=require(_0x87ad('0x2'));var intUtil=require(_0x87ad('0x3'));var md5=require(_0x87ad('0x4'));var Redis=require(_0x87ad('0x5'));var logger=require('../../../../config/logger')(_0x87ad('0x6'));var config=require(_0x87ad('0x7'));config[_0x87ad('0x8')]=_['defaults'](config[_0x87ad('0x8')],{'host':_0x87ad('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x87ad('0x8')]));function getAuthToken(_0x9e20c1,_0x28299f,_0x7d5241){var _0x212d45={'method':_0x87ad('0xa'),'uri':_0x28299f,'form':{'client_id':_0x9e20c1[_0x87ad('0xb')],'resource':_0x9e20c1[_0x87ad('0xc')],'username':_0x9e20c1[_0x87ad('0xd')],'password':_0x9e20c1[_0x87ad('0xe')],'grant_type':_0x87ad('0xe'),'client_secret':_0x9e20c1[_0x87ad('0xf')]},'json':!![]};return rp(_0x212d45)[_0x87ad('0x10')](function(_0x35bfb3){return _0x35bfb3[_0x87ad('0x11')];})[_0x87ad('0x12')](function(_0x2a5ebc){logger[_0x87ad('0x13')]('['+[_0x7d5241[_0x87ad('0x14')]()]+_0x87ad('0x15'));return _0x2a5ebc[_0x87ad('0x16')];});}function getUser(_0x50f8d4,_0x9c3611,_0x41d024,_0x548d29,_0x5a2be6,_0x2f0c87){return new BPromise(function(_0x56b8bd,_0x3afc04){return getAuthToken(_0x9c3611,_0x548d29,_0x2f0c87)[_0x87ad('0x10')](function(_0x4f8027){var _0x5f58a1={'method':_0x87ad('0x17'),'uri':_0x5a2be6+'systemusers?$select=internalemailaddress,isdisabled,systemuserid','headers':{'Authorization':'Bearer\x20'+_0x4f8027,'OData-Version':_0x87ad('0x18')},'json':!![]};return rp(_0x5f58a1);})[_0x87ad('0x10')](function(_0x2b6dfb){var _0x2c0a00=_0x2b6dfb[_0x87ad('0x19')];var _0x47651d=![];var _0x1ca7cc=null;if(!_[_0x87ad('0x1a')](_0x41d024)){if(intUtil['validateEmail'](_0x41d024[_0x87ad('0x1b')])){_0x50f8d4['userEmail']=_0x41d024['email'];for(_0x1ca7cc=0x0;_0x1ca7cc<_0x2c0a00[_0x87ad('0x1c')];_0x1ca7cc++){if(_0x2c0a00[_0x1ca7cc]['internalemailaddress']===_0x41d024[_0x87ad('0x1b')]&&!_0x2c0a00[_0x1ca7cc][_0x87ad('0x1d')]){_0x47651d=!![];logger[_0x87ad('0x1e')]('['+[_0x2f0c87[_0x87ad('0x14')]()]+_0x87ad('0x1f')+_0x2c0a00[_0x1ca7cc][_0x87ad('0x20')]+'!');_0x50f8d4[_0x87ad('0x21')]=_0x2c0a00[_0x1ca7cc][_0x87ad('0x20')];}}}}if(!_0x47651d){logger['info']('['+[_0x2f0c87[_0x87ad('0x14')]()]+']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');_0x50f8d4[_0x87ad('0x22')]=_0x9c3611['username'];for(_0x1ca7cc=0x0;_0x1ca7cc<_0x2c0a00['length'];_0x1ca7cc++){if(_0x2c0a00[_0x1ca7cc][_0x87ad('0x23')]===_0x9c3611[_0x87ad('0xd')]){_0x50f8d4[_0x87ad('0x21')]=_0x2c0a00[_0x1ca7cc][_0x87ad('0x20')];}}}_0x56b8bd(_0x50f8d4);})[_0x87ad('0x12')](function(_0x1f98e9){_0x3afc04(_0x1f98e9[_0x87ad('0x16')]);});});}function createEndUser(_0x1f734d,_0x7d583,_0x100d3c,_0x21dc9f,_0x16aadc,_0x58109a){return new BPromise(function(_0xd34ef4,_0x459e0c){return getAuthToken(_0x7d583,_0x100d3c,_0x58109a)['then'](function(_0x1ca491){var _0x1efacf=_0x58109a[_0x87ad('0x24')]()==='outbound'?_0x16aadc['destcalleridnum']:_0x16aadc['calleridnum'];var _0x3c6d33={'method':_0x87ad('0xa'),'uri':_0x21dc9f+_0x87ad('0x25'),'body':{'telephone1':_0x1efacf,'fullname':_0x1efacf,'firstname':_0x1efacf,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0x87ad('0x26')+_0x1f734d['userId']+')'},'headers':{'Authorization':'Bearer\x20'+_0x1ca491,'OData-Version':_0x87ad('0x18')},'json':!![],'resolveWithFullResponse':!![]};return rp(_0x3c6d33);})[_0x87ad('0x10')](function(_0x1ce0e3){var _0x45ae28=_0x1ce0e3[_0x87ad('0x27')][_0x87ad('0x28')];var _0x6ac21a=_0x45ae28[_0x87ad('0x29')](_0x45ae28['lastIndexOf']('(')+0x1,_0x45ae28['lastIndexOf'](')'));_0x1f734d[_0x87ad('0x2a')]=_0x6ac21a;_0xd34ef4(_0x1f734d);})['catch'](function(_0x296588){_0x459e0c(_0x296588[_0x87ad('0x16')]);});});}function getEndUser(_0x4f7a2e,_0x437e9a,_0x3406ee,_0x5af2be,_0x5cf134,_0x4b5e75){return new BPromise(function(_0x1806c1,_0x260146){var _0xca9932=_0x4b5e75[_0x87ad('0x24')]()===_0x87ad('0x2b')?_0x5cf134[_0x87ad('0x2c')]:_0x5cf134[_0x87ad('0x2d')];return getAuthToken(_0x437e9a,_0x3406ee,_0x4b5e75)[_0x87ad('0x10')](function(_0x90cd4a){var _0x549574={'method':'GET','uri':_0x5af2be+_0x87ad('0x2e')+_0xca9932[_0x87ad('0x2f')]('+',_0x87ad('0x30'))+'\x27','headers':{'Authorization':_0x87ad('0x31')+_0x90cd4a,'If-None-Match':null,'OData-Version':_0x87ad('0x18')},'json':!![]};return rp(_0x549574);})[_0x87ad('0x10')](function(_0x3ea6f8){var _0x187af5=null;if(_0x3ea6f8){var _0x2cab3e=_0x3ea6f8['value'];var _0x510c7d=![];for(_0x187af5=0x0;_0x187af5<_0x2cab3e[_0x87ad('0x1c')];_0x187af5++){if(_0x2cab3e[_0x187af5][_0x87ad('0x32')]===_0xca9932){_0x510c7d=!![];_0x4f7a2e[_0x87ad('0x2a')]=_0x2cab3e[_0x187af5][_0x87ad('0x33')];}}if(_0x510c7d){_0x1806c1(_0x4f7a2e);}else{return createEndUser(_0x4f7a2e,_0x437e9a,_0x3406ee,_0x5af2be,_0x5cf134,_0x4b5e75)['then'](function(_0x47f401){logger[_0x87ad('0x1e')]('['+[_0x4b5e75['toUpperCase']()]+_0x87ad('0x34'),_0x47f401[_0x87ad('0x2a')]);_0x1806c1(_0x47f401);});}}else{return createEndUser(_0x4f7a2e,_0x437e9a,_0x3406ee,_0x5af2be,_0x5cf134,_0x4b5e75)[_0x87ad('0x10')](function(_0x1732d4){logger[_0x87ad('0x1e')]('['+[_0x4b5e75[_0x87ad('0x14')]()]+_0x87ad('0x35'),_0x1732d4['enduserId']);_0x1806c1(_0x1732d4);});}});});}function getCustomFields(_0x46e920,_0x3af306,_0x4be615){var _0xea558a={};if(_0x46e920[_0x87ad('0x1c')]>0x0){_[_0x87ad('0x36')](_0x46e920,function(_0x27b9e4){if(_[_0x87ad('0x37')](['string',_0x87ad('0x38')],_0x27b9e4[_0x87ad('0x39')])&&_0x27b9e4[_0x87ad('0x3a')]&&!_0x27b9e4[_0x87ad('0x3b')]){var _0x4827eb=_0x27b9e4[_0x87ad('0x3c')][_0x87ad('0x24')]();var _0x3f4aff=_0x4827eb[_0x87ad('0x29')](0x0,_0x4827eb[_0x87ad('0x3d')]('_'));var _0x2d31c2=_0x4827eb[_0x87ad('0x29')](_0x4827eb[_0x87ad('0x3d')]('_')+0x1);if(_0x3f4aff===_0x4be615){_0xea558a[_0x2d31c2]=_0x27b9e4[_0x87ad('0x3e')];}}});}return _0xea558a;}function getTicket(_0x205948,_0x4d5d7f,_0x35eb4b,_0x2e40c9,_0x5a45e4,_0x285cca,_0x2efb41){return new BPromise(function(_0x4524fb,_0x480a92){var _0x21754f;return getAuthToken(_0x4d5d7f,_0x35eb4b,_0x2efb41)[_0x87ad('0x10')](function(_0x3a7523){if(_0x285cca[_0x87ad('0x3f')]===_0x87ad('0x40')){_0x21754f={'method':_0x87ad('0xa'),'uri':_0x2e40c9+_0x87ad('0x41'),'body':Object[_0x87ad('0x42')]({},{'title':intUtil[_0x87ad('0x43')](_0x285cca[_0x87ad('0x44')],_0x5a45e4,'\x20'),'description':intUtil['getString'](_0x285cca[_0x87ad('0x45')],_0x5a45e4,'\x0a'),'customerid_contact@odata.bind':_0x87ad('0x46')+_0x205948[_0x87ad('0x2a')]+')','ownerid@odata.bind':_0x87ad('0x26')+_0x205948[_0x87ad('0x21')]+')','caseorigincode':'1'},getCustomFields(_0x285cca[_0x87ad('0x47')],_0x5a45e4,_0x285cca[_0x87ad('0x3f')])),'headers':{'Authorization':_0x87ad('0x31')+_0x3a7523,'OData-Version':_0x87ad('0x18')},'json':!![],'resolveWithFullResponse':!![]};}if(_0x285cca['ticketType']===_0x87ad('0x48')){_0x21754f={'method':'POST','uri':_0x2e40c9+_0x87ad('0x49'),'body':Object[_0x87ad('0x42')]({},{'subject':intUtil[_0x87ad('0x43')](_0x285cca[_0x87ad('0x44')],_0x5a45e4,'\x20'),'phonenumber':String(_0x5a45e4[_0x87ad('0x2d')]),'description':intUtil[_0x87ad('0x43')](_0x285cca[_0x87ad('0x45')],_0x5a45e4,'\x0a'),'regardingobjectid_contact@odata.bind':_0x87ad('0x46')+_0x205948['enduserId']+')','ownerid@odata.bind':'/systemusers('+_0x205948[_0x87ad('0x21')]+')','directioncode':_0x205948[_0x87ad('0x4a')]===_0x87ad('0x4b')?![]:!![],'phonecall_activity_parties':[{'partyid_systemuser@odata.bind':_0x87ad('0x26')+_0x205948[_0x87ad('0x21')]+')','participationtypemask':_0x205948['callDirection']===_0x87ad('0x4b')?0x2:0x1},{'partyid_contact@odata.bind':_0x87ad('0x46')+_0x205948[_0x87ad('0x2a')]+')','participationtypemask':_0x205948[_0x87ad('0x4a')]==='queue'?0x1:0x2}]},getCustomFields(_0x285cca['Fields'],_0x5a45e4,_0x285cca[_0x87ad('0x3f')])),'headers':{'Authorization':_0x87ad('0x31')+_0x3a7523,'OData-Version':_0x87ad('0x18')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x21754f);})[_0x87ad('0x10')](function(_0x47cb8e){var _0x3ea353=_0x47cb8e[_0x87ad('0x27')][_0x87ad('0x28')];var _0x2ae87f=_0x3ea353['substring'](_0x3ea353[_0x87ad('0x4c')]('(')+0x1,_0x3ea353[_0x87ad('0x4c')](')'));_0x205948['ticketId']=_0x2ae87f;_0x4524fb(_0x205948);})[_0x87ad('0x12')](function(_0x27f5b2){_0x480a92(_0x27f5b2['message']);});});}function emit(_0x3ec554,_0x27cf9e,_0x3bc9b3,_0x3ee1e4){var _0xf9f0e={'uri':util[_0x87ad('0x4d')]('%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s',_0x3ec554,_0x3bc9b3,_0x3ee1e4)};io['to'](util['format'](_0x87ad('0x4e'),_0x27cf9e))[_0x87ad('0x4f')](_0x87ad('0x50'),_0xf9f0e);}exports['cs']=function(_0x39802d,_0x153e79,_0xdd0871,_0x36bb9a,_0x1559bc,_0x30dc34,_0x31c547,_0x2ac5b7){var _0x18d13b={};_0x30dc34['remoteUri']=intUtil[_0x87ad('0x51')](_0x30dc34['remoteUri']);_0x30dc34[_0x87ad('0x52')]=intUtil['stripTrailingSlash'](_0x30dc34[_0x87ad('0x52')]);_0x18d13b[_0x87ad('0x4a')]=_0x2ac5b7===_0x87ad('0x4b')||_0x2ac5b7===_0x87ad('0x53')?_0x87ad('0x4b'):_0x87ad('0x2b');var _0x95e795=util['format']('%s/api/data/v9.0/',_0x30dc34[_0x87ad('0xc')]);var _0x2f5cee=util[_0x87ad('0x4d')](_0x87ad('0x54'),_0x30dc34[_0x87ad('0x55')]);var _0x1f3b4a=util[_0x87ad('0x4d')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x30dc34['serverUrl'],_0x153e79[_0x87ad('0x56')],md5(_0x153e79[_0x87ad('0x56')]));if(_0x1559bc&&_0x1559bc[_0x87ad('0x57')]){logger['info']('[QUEUE]',_0x87ad('0x58'));_0x153e79['recordingURL']=_0x1f3b4a;}else if(_0x31c547&&_0x31c547[_0x87ad('0x59')]&&_0x31c547[_0x87ad('0x59')]!==_0x87ad('0x5a')){logger[_0x87ad('0x1e')]('[OUTBOUND]',_0x87ad('0x58'));_0x153e79[_0x87ad('0x5b')]=_0x1f3b4a;}else{_0x153e79['recordingURL']='';}return getUser(_0x18d13b,_0x30dc34,_0x36bb9a,_0x2f5cee,_0x95e795,_0x2ac5b7)[_0x87ad('0x10')](function(_0x461e8d){logger[_0x87ad('0x1e')]('['+_0x2ac5b7[_0x87ad('0x14')]()+']\x20The\x20User\x20ID\x20is:',_0x461e8d[_0x87ad('0x21')]);logger[_0x87ad('0x1e')]('['+_0x2ac5b7[_0x87ad('0x14')]()+']\x20The\x20User\x20email\x20is:',_0x461e8d[_0x87ad('0x22')]);return getEndUser(_0x461e8d,_0x30dc34,_0x2f5cee,_0x95e795,_0x153e79,_0x2ac5b7);})[_0x87ad('0x10')](function(_0x203d6d){logger[_0x87ad('0x1e')]('['+_0x2ac5b7[_0x87ad('0x14')]()+_0x87ad('0x5c'),_0x203d6d[_0x87ad('0x2a')]);logger['info']('['+_0x2ac5b7[_0x87ad('0x14')]()+']\x20The\x20Enduser\x20phone\x20is:',_0x153e79[_0x87ad('0x2d')]);return getTicket(_0x203d6d,_0x30dc34,_0x2f5cee,_0x95e795,_0x153e79,_0xdd0871,_0x2ac5b7);})[_0x87ad('0x10')](function(_0x32dbc5){logger['info'](util['format']('['+_0x2ac5b7[_0x87ad('0x14')]()+_0x87ad('0x5d'),_0xdd0871[_0x87ad('0x3f')],_0x32dbc5[_0x87ad('0x5e')]));logger[_0x87ad('0x1e')](util['format']('['+_0x2ac5b7['toUpperCase']()+_0x87ad('0x5f'),_0x2ac5b7));if(_0x2ac5b7!=='unmanaged'){logger['info']('['+_0x2ac5b7[_0x87ad('0x14')]()+']',_0x87ad('0x60'));emit(_0x30dc34[_0x87ad('0xc')],_0x36bb9a[_0x87ad('0x61')],_0xdd0871['ticketType'],_0x32dbc5[_0x87ad('0x5e')]);}})[_0x87ad('0x12')](function(_0x19b53d){logger[_0x87ad('0x13')]('['+_0x2ac5b7['toUpperCase']()+_0x87ad('0x62'),util['inspect'](_0x19b53d,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 860456a..785cbc5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf428=['catch','error','outbound','recordingFormat','none','[OUTBOUND]','destcalleridname','destcalleridnum','%s/helpdesk/tickets/%d','lastevent','toUpperCase','lodash','request-promise','ioredis','./util','../../../../config/environment','../../../../config/logger','freshdesk','redis','defaults','localhost','socket.io-emitter','application/json','emit','info','Creating\x20new\x20ticket...','merge','calleridname','calleridnum','getString','Subjects','Descriptions','<br>','Tags','name','Fields','custom_fields','mapValues','value','format','%s/api/v2/tickets','POST','then','Ticket\x20created!','validateEmail','%s/api/v2/agents','remoteUri','Agent\x20found!','find','email','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Admin\x20account\x20selected.','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','%s/api/v2/contacts','length','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Enduser\x20created.','Basic\x20%s','apiKey','toString','base64','stringify','GET','map','forEach','string','picklist','type','nameField','customField','toLowerCase','content','includes','idField','push','variableName','customVariable','Variable','queue','serverUrl','stripTrailingSlash','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','The\x20User\x20ID\x20is:','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url'];(function(_0x4f64c8,_0x1659c5){var _0x27e2c9=function(_0x2d1dfc){while(--_0x2d1dfc){_0x4f64c8['push'](_0x4f64c8['shift']());}};_0x27e2c9(++_0x1659c5);}(_0xf428,0xc9));var _0x8f42=function(_0x463b0e,_0x533cf2){_0x463b0e=_0x463b0e-0x0;var _0x496e20=_0xf428[_0x463b0e];return _0x496e20;};'use strict';var _=require(_0x8f42('0x0'));var rp=require(_0x8f42('0x1'));var md5=require('md5');var util=require('util');var Redis=require(_0x8f42('0x2'));var intUtil=require(_0x8f42('0x3'));var config=require(_0x8f42('0x4'));var logger=require(_0x8f42('0x5'))(_0x8f42('0x6'));config[_0x8f42('0x7')]=_[_0x8f42('0x8')](config[_0x8f42('0x7')],{'host':_0x8f42('0x9'),'port':0x18eb});var io=require(_0x8f42('0xa'))(new Redis(config[_0x8f42('0x7')]));var headers={'Content-Type':'application/json','Accept':_0x8f42('0xb')};function emit(_0xd80675,_0x16af69,_0x3b8f3a){io['to'](_0xd80675)[_0x8f42('0xc')](_0x16af69,_0x3b8f3a);}function getTicket(_0x13e447,_0x312ce7,_0x44d2cc,_0x3cec9a,_0x1997d4){logger[_0x8f42('0xd')](_0x8f42('0xe'));var _0x5ed5da=_[_0x8f42('0xf')]({'responder_id':_0x312ce7['id'],'requester_id':_0x44d2cc['id'],'name':util['format']('Caller\x20-\x20%s',_0x1997d4[_0x8f42('0x10')]),'phone':_0x1997d4[_0x8f42('0x11')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0x8f42('0x12')](_0x3cec9a[_0x8f42('0x13')],_0x1997d4,'\x20'),'description':intUtil['getString'](_0x3cec9a[_0x8f42('0x14')],_0x1997d4,_0x8f42('0x15')),'tags':getTags(_0x3cec9a[_0x8f42('0x16')],_0x8f42('0x17'))},getCustomFields(_0x3cec9a[_0x8f42('0x18')],_0x1997d4));_0x5ed5da[_0x8f42('0x19')]=_[_0x8f42('0x1a')](_['keyBy'](_0x5ed5da['custom_fields'],'id'),_0x8f42('0x1b'));return request({'uri':util[_0x8f42('0x1c')](_0x8f42('0x1d'),_0x13e447['remoteUri']),'method':_0x8f42('0x1e'),'body':_0x5ed5da})[_0x8f42('0x1f')](function(_0x453ab1){logger[_0x8f42('0xd')](_0x8f42('0x20'));return _0x453ab1;});}function getUser(_0x2e3073,_0x4e196b){if(intUtil[_0x8f42('0x21')](_0x4e196b)){return request({'uri':util[_0x8f42('0x1c')](_0x8f42('0x22'),_0x2e3073[_0x8f42('0x23')]),'qs':{'email':_0x4e196b}})[_0x8f42('0x1f')](function(_0x1d81da){if(_0x1d81da['length']){logger['info'](_0x8f42('0x24'));return _[_0x8f42('0x25')](_0x1d81da,function(_0x5c1bec){return _0x5c1bec['contact'][_0x8f42('0x26')]===_0x4e196b;});}else{logger[_0x8f42('0xd')](_0x8f42('0x27'));return request({'uri':util[_0x8f42('0x1c')]('%s/api/v2/agents/me',_0x2e3073[_0x8f42('0x23')])})['then'](function(_0x1fc32f){logger[_0x8f42('0xd')](_0x8f42('0x28'));return _0x1fc32f;});}});}else{logger['info'](_0x8f42('0x29'));return request({'uri':util[_0x8f42('0x1c')](_0x8f42('0x2a'),_0x2e3073['remoteUri'])})[_0x8f42('0x1f')](function(_0x307f1c){logger[_0x8f42('0xd')](_0x8f42('0x28'));return _0x307f1c;});}}function getEndUser(_0x4ae3fb,_0x17c81d,_0x48786d){logger[_0x8f42('0xd')]('Searching\x20enduser\x20with\x20phone',_0x48786d);return request({'uri':util[_0x8f42('0x1c')](_0x8f42('0x2b'),_0x4ae3fb[_0x8f42('0x23')]),'qs':{'phone':_0x48786d}})[_0x8f42('0x1f')](function(_0x401229){if(_0x401229[_0x8f42('0x2c')]){logger[_0x8f42('0xd')]('Enduser\x20found!');return _[_0x8f42('0x25')](_0x401229,{'phone':_0x48786d});}else{logger[_0x8f42('0xd')](_0x8f42('0x2d'));return request({'uri':util['format'](_0x8f42('0x2b'),_0x4ae3fb[_0x8f42('0x23')]),'method':_0x8f42('0x1e'),'body':{'name':_0x17c81d,'phone':_0x48786d}})[_0x8f42('0x1f')](function(_0x4ec534){logger['info'](_0x8f42('0x2e'));return _0x4ec534;});}});}function getAuth(_0x1717aa){return util[_0x8f42('0x1c')](_0x8f42('0x2f'),new Buffer(_0x1717aa[_0x8f42('0x30')]+':X')[_0x8f42('0x31')](_0x8f42('0x32')));}function request(_0x4b4048){logger['debug']('[HTTP]',JSON[_0x8f42('0x33')](_0x4b4048));return rp(_[_0x8f42('0x8')](_0x4b4048,{'method':_0x8f42('0x34'),'headers':headers,'json':!![]}));}function getTags(_0x414f1c,_0x46a9c1){var _0x5d1b81=[];if(_0x414f1c&&_0x414f1c[_0x8f42('0x2c')]>0x0){_0x5d1b81=_[_0x8f42('0x35')](_0x414f1c,_0x46a9c1);}return _0x5d1b81;}function getCustomFields(_0x1e339d,_0xf8346f){var _0x53330b=[];var _0x1d614b={'custom_fields':[]};if(_0x1e339d[_0x8f42('0x2c')]>0x0){_[_0x8f42('0x36')](_0x1e339d,function(_0x4787ee){if(_['includes']([_0x8f42('0x37'),_0x8f42('0x38')],_0x4787ee[_0x8f42('0x39')])&&_0x4787ee[_0x8f42('0x3a')]&&!_0x4787ee[_0x8f42('0x3b')]){_0x1d614b[_0x4787ee[_0x8f42('0x3a')][_0x8f42('0x3c')]()]=_0x4787ee[_0x8f42('0x3d')][_0x8f42('0x31')]();}else if(_[_0x8f42('0x3e')]([_0x8f42('0x37'),_0x8f42('0x38')],_0x4787ee[_0x8f42('0x39')])&&_0x4787ee[_0x8f42('0x3f')]&&_0x4787ee[_0x8f42('0x3b')]){_0x1d614b[_0x8f42('0x19')][_0x8f42('0x40')]({'id':_0x4787ee[_0x8f42('0x3f')],'value':_0x4787ee[_0x8f42('0x3d')][_0x8f42('0x31')]()});}else if(_0x4787ee['type']==='variable'&&_0x4787ee['variableName']&&_0x4787ee['idField']&&_0x4787ee['customField']){_0xf8346f[_0x4787ee[_0x8f42('0x41')]]&&_0x1d614b[_0x8f42('0x19')]['push']({'id':_0x4787ee[_0x8f42('0x3f')],'value':_0xf8346f[_0x4787ee[_0x8f42('0x41')]][_0x8f42('0x31')]()});}else if(_0x4787ee[_0x8f42('0x39')]===_0x8f42('0x42')&&_0x4787ee[_0x8f42('0x43')]&&_0x4787ee['Variable']['name']&&_0x4787ee[_0x8f42('0x3f')]&&_0x4787ee[_0x8f42('0x3b')]){_0xf8346f[_0x4787ee[_0x8f42('0x43')][_0x8f42('0x17')][_0x8f42('0x3c')]()]&&_0x1d614b[_0x8f42('0x19')]['push']({'id':_0x4787ee['idField'],'value':_0xf8346f[_0x4787ee['Variable']['name'][_0x8f42('0x3c')]()][_0x8f42('0x31')]()});}});}return _0x1d614b;}exports[_0x8f42('0x44')]=function(_0x3d12f7,_0xc2d62,_0x3cf8b2,_0x4e3736,_0x2819bb,_0x4c805b){var _0x2501cf,_0x581f59;_0x4c805b[_0x8f42('0x23')]=intUtil['stripTrailingSlash'](_0x4c805b[_0x8f42('0x23')]);_0x4c805b[_0x8f42('0x45')]=intUtil[_0x8f42('0x46')](_0x4c805b['serverUrl']);if(_0x2819bb&&_0x2819bb[_0x8f42('0x47')]){logger[_0x8f42('0xd')](_0x8f42('0x48'),_0x8f42('0x49'));_0xc2d62[_0x8f42('0x4a')]=util[_0x8f42('0x1c')](_0x8f42('0x4b'),_0x4c805b[_0x8f42('0x45')],_0xc2d62[_0x8f42('0x4c')],md5(_0xc2d62[_0x8f42('0x4c')]));}else{_0xc2d62[_0x8f42('0x4a')]='';}headers[_0x8f42('0x4d')]=getAuth(_0x4c805b);return getUser(_0x4c805b,_0x4e3736[_0x8f42('0x26')])['then'](function(_0xdc67b7){_0x2501cf=_0xdc67b7;logger[_0x8f42('0xd')](_0x8f42('0x4e'),_0x2501cf['id']);return getEndUser(_0x4c805b,_0xc2d62[_0x8f42('0x10')],_0xc2d62['calleridnum']);})['then'](function(_0x270236){_0x581f59=_0x270236;logger[_0x8f42('0xd')](_0x8f42('0x4f'),_0x581f59['id']);return getTicket(_0x4c805b,_0x2501cf,_0x581f59,_0x3cf8b2,_0xc2d62);})['then'](function(_0x8bd225){if(_0x8bd225&&_0x8bd225['id']){logger[_0x8f42('0xd')](_0x8f42('0x20'));logger['info'](_0x8f42('0x50'),_0x8bd225['id']);logger[_0x8f42('0xd')](_0x8f42('0x48'),_0x8f42('0x51'));emit(util[_0x8f42('0x1c')](_0x8f42('0x52'),_0x4e3736[_0x8f42('0x17')]),_0x8f42('0x53'),{'uri':util[_0x8f42('0x1c')]('%s/helpdesk/tickets/%d',_0x4c805b[_0x8f42('0x23')],_0x8bd225['id'])});}})[_0x8f42('0x54')](function(_0x399a46){logger[_0x8f42('0x55')](_0x8f42('0x48'),JSON['stringify'](_0x399a46));});};exports[_0x8f42('0x56')]=function(_0x14cf30,_0x481195,_0x3cb73d,_0x37f829,_0x404d11,_0x26a1ef,_0x16d117){var _0x531fa5,_0x1622a1;_0x26a1ef[_0x8f42('0x23')]=intUtil[_0x8f42('0x46')](_0x26a1ef[_0x8f42('0x23')]);_0x26a1ef[_0x8f42('0x45')]=intUtil[_0x8f42('0x46')](_0x26a1ef['serverUrl']);if(_0x16d117&&_0x16d117['recordingFormat']&&_0x16d117[_0x8f42('0x57')]!==_0x8f42('0x58')){logger[_0x8f42('0xd')](_0x8f42('0x59'),_0x8f42('0x49'));_0x481195['recordingURL']=util[_0x8f42('0x1c')](_0x8f42('0x4b'),_0x26a1ef[_0x8f42('0x45')],_0x481195[_0x8f42('0x4c')],md5(_0x481195[_0x8f42('0x4c')]));}headers['Authorization']=getAuth(_0x26a1ef);return getUser(_0x26a1ef,_0x37f829[_0x8f42('0x26')])['then'](function(_0xa09688){_0x531fa5=_0xa09688;logger[_0x8f42('0xd')]('The\x20User\x20ID\x20is:',_0x531fa5['id']);return getEndUser(_0x26a1ef,_0x481195[_0x8f42('0x5a')],_0x481195[_0x8f42('0x5b')]);})['then'](function(_0x1e8fee){_0x1622a1=_0x1e8fee;logger['info'](_0x8f42('0x4f'),_0x1622a1['id']);return getTicket(_0x26a1ef,_0x531fa5,_0x1622a1,_0x3cb73d,_0x481195);})[_0x8f42('0x1f')](function(_0x2250ff){if(_0x2250ff&&_0x2250ff['id']){logger[_0x8f42('0xd')](_0x8f42('0x20'));logger[_0x8f42('0xd')](_0x8f42('0x50'),_0x2250ff['id']);logger[_0x8f42('0xd')](_0x8f42('0x59'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x8f42('0x1c')](_0x8f42('0x52'),_0x37f829[_0x8f42('0x17')]),_0x8f42('0x53'),{'uri':util['format'](_0x8f42('0x5c'),_0x26a1ef[_0x8f42('0x23')],_0x2250ff['id'])});}})[_0x8f42('0x54')](function(_0x18e3c3){logger[_0x8f42('0x55')](_0x8f42('0x59'),JSON[_0x8f42('0x33')](_0x18e3c3));});};exports['unmanaged']=function(_0x2010ed,_0x160d0f,_0x2cabad,_0x1a00c7,_0x351f0c,_0x38ab68){var _0x1aa202,_0x2497ae;_0x38ab68['remoteUri']=intUtil[_0x8f42('0x46')](_0x38ab68[_0x8f42('0x23')]);_0x38ab68['serverUrl']=intUtil[_0x8f42('0x46')](_0x38ab68['serverUrl']);if(_0x351f0c&&_0x351f0c['monitor_format']){logger[_0x8f42('0xd')]('['+_0x160d0f[_0x8f42('0x5d')][_0x8f42('0x5e')]()+']','Recording\x20is\x20enabled!');_0x160d0f['recordingURL']=util[_0x8f42('0x1c')](_0x8f42('0x4b'),_0x38ab68[_0x8f42('0x45')],_0x160d0f[_0x8f42('0x4c')],md5(_0x160d0f[_0x8f42('0x4c')]));}else{_0x160d0f[_0x8f42('0x4a')]='';}headers[_0x8f42('0x4d')]=getAuth(_0x38ab68);return getUser(_0x38ab68,'')[_0x8f42('0x1f')](function(_0x177f53){_0x1aa202=_0x177f53;logger[_0x8f42('0xd')]('The\x20User\x20ID\x20is:',_0x1aa202['id']);return getEndUser(_0x38ab68,_0x160d0f[_0x8f42('0x10')],_0x160d0f['calleridnum']);})[_0x8f42('0x1f')](function(_0x507bed){_0x2497ae=_0x507bed;logger[_0x8f42('0xd')](_0x8f42('0x4f'),_0x2497ae['id']);return getTicket(_0x38ab68,_0x1aa202,_0x2497ae,_0x2cabad,_0x160d0f);})[_0x8f42('0x1f')](function(_0xed5b22){if(_0xed5b22){logger[_0x8f42('0xd')](_0x8f42('0x20'));logger[_0x8f42('0xd')]('The\x20Ticket\x20ID\x20is:',_0xed5b22['id']);}})[_0x8f42('0x54')](function(_0x2998d1){logger[_0x8f42('0x55')]('['+_0x160d0f[_0x8f42('0x5d')][_0x8f42('0x5e')]()+']',JSON[_0x8f42('0x33')](_0x2998d1));});};
\ No newline at end of file
+var _0xc1d7=['forEach','string','picklist','type','nameField','customField','content','includes','idField','push','variable','variableName','customVariable','Variable','toLowerCase','stripTrailingSlash','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','serverUrl','uniqueid','Authorization','The\x20User\x20ID\x20is:','calleridnum','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','%s/helpdesk/tickets/%d','catch','error','recordingFormat','[OUTBOUND]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','destcalleridnum','stringify','unmanaged','monitor_format','lastevent','toUpperCase','request-promise','util','ioredis','./util','../../../../config/environment','freshdesk','redis','defaults','socket.io-emitter','application/json','emit','info','Creating\x20new\x20ticket...','format','Caller\x20-\x20%s','calleridname','getString','Subjects','Descriptions','Tags','name','Fields','custom_fields','mapValues','keyBy','%s/api/v2/tickets','remoteUri','POST','then','Ticket\x20created!','validateEmail','%s/api/v2/agents','length','Agent\x20found!','find','contact','email','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','Admin\x20account\x20selected.','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','Searching\x20enduser\x20with\x20phone','%s/api/v2/contacts','Enduser\x20found!','Enduser\x20created.','Basic\x20%s','apiKey','toString','base64','debug','GET','map'];(function(_0xbf3254,_0x3d3424){var _0x49986c=function(_0xe1c3c6){while(--_0xe1c3c6){_0xbf3254['push'](_0xbf3254['shift']());}};_0x49986c(++_0x3d3424);}(_0xc1d7,0xe3));var _0x7c1d=function(_0x34c027,_0x123688){_0x34c027=_0x34c027-0x0;var _0x47bff0=_0xc1d7[_0x34c027];return _0x47bff0;};'use strict';var _=require('lodash');var rp=require(_0x7c1d('0x0'));var md5=require('md5');var util=require(_0x7c1d('0x1'));var Redis=require(_0x7c1d('0x2'));var intUtil=require(_0x7c1d('0x3'));var config=require(_0x7c1d('0x4'));var logger=require('../../../../config/logger')(_0x7c1d('0x5'));config[_0x7c1d('0x6')]=_[_0x7c1d('0x7')](config[_0x7c1d('0x6')],{'host':'localhost','port':0x18eb});var io=require(_0x7c1d('0x8'))(new Redis(config[_0x7c1d('0x6')]));var headers={'Content-Type':_0x7c1d('0x9'),'Accept':_0x7c1d('0x9')};function emit(_0x516f13,_0x41237c,_0x11c580){io['to'](_0x516f13)[_0x7c1d('0xa')](_0x41237c,_0x11c580);}function getTicket(_0x5a7f05,_0x31a862,_0x56c341,_0x12cc87,_0x1a2442){logger[_0x7c1d('0xb')](_0x7c1d('0xc'));var _0x560e70=_['merge']({'responder_id':_0x31a862['id'],'requester_id':_0x56c341['id'],'name':util[_0x7c1d('0xd')](_0x7c1d('0xe'),_0x1a2442[_0x7c1d('0xf')]),'phone':_0x1a2442['calleridnum'],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0x7c1d('0x10')](_0x12cc87[_0x7c1d('0x11')],_0x1a2442,'\x20'),'description':intUtil[_0x7c1d('0x10')](_0x12cc87[_0x7c1d('0x12')],_0x1a2442,'<br>'),'tags':getTags(_0x12cc87[_0x7c1d('0x13')],_0x7c1d('0x14'))},getCustomFields(_0x12cc87[_0x7c1d('0x15')],_0x1a2442));_0x560e70[_0x7c1d('0x16')]=_[_0x7c1d('0x17')](_[_0x7c1d('0x18')](_0x560e70[_0x7c1d('0x16')],'id'),'value');return request({'uri':util['format'](_0x7c1d('0x19'),_0x5a7f05[_0x7c1d('0x1a')]),'method':_0x7c1d('0x1b'),'body':_0x560e70})[_0x7c1d('0x1c')](function(_0x212d24){logger[_0x7c1d('0xb')](_0x7c1d('0x1d'));return _0x212d24;});}function getUser(_0x4c4347,_0x8c672c){if(intUtil[_0x7c1d('0x1e')](_0x8c672c)){return request({'uri':util[_0x7c1d('0xd')](_0x7c1d('0x1f'),_0x4c4347[_0x7c1d('0x1a')]),'qs':{'email':_0x8c672c}})['then'](function(_0x10807f){if(_0x10807f[_0x7c1d('0x20')]){logger[_0x7c1d('0xb')](_0x7c1d('0x21'));return _[_0x7c1d('0x22')](_0x10807f,function(_0x127daf){return _0x127daf[_0x7c1d('0x23')][_0x7c1d('0x24')]===_0x8c672c;});}else{logger[_0x7c1d('0xb')](_0x7c1d('0x25'));return request({'uri':util[_0x7c1d('0xd')](_0x7c1d('0x26'),_0x4c4347[_0x7c1d('0x1a')])})[_0x7c1d('0x1c')](function(_0x3ebc78){logger[_0x7c1d('0xb')](_0x7c1d('0x27'));return _0x3ebc78;});}});}else{logger[_0x7c1d('0xb')](_0x7c1d('0x28'));return request({'uri':util['format'](_0x7c1d('0x26'),_0x4c4347['remoteUri'])})[_0x7c1d('0x1c')](function(_0x48e212){logger['info'](_0x7c1d('0x27'));return _0x48e212;});}}function getEndUser(_0x2caefb,_0x349462,_0x49cb3e){logger[_0x7c1d('0xb')](_0x7c1d('0x29'),_0x49cb3e);return request({'uri':util[_0x7c1d('0xd')](_0x7c1d('0x2a'),_0x2caefb[_0x7c1d('0x1a')]),'qs':{'phone':_0x49cb3e}})[_0x7c1d('0x1c')](function(_0x12cbfa){if(_0x12cbfa[_0x7c1d('0x20')]){logger[_0x7c1d('0xb')](_0x7c1d('0x2b'));return _[_0x7c1d('0x22')](_0x12cbfa,{'phone':_0x49cb3e});}else{logger[_0x7c1d('0xb')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util[_0x7c1d('0xd')]('%s/api/v2/contacts',_0x2caefb['remoteUri']),'method':_0x7c1d('0x1b'),'body':{'name':_0x349462,'phone':_0x49cb3e}})[_0x7c1d('0x1c')](function(_0x3f18a5){logger['info'](_0x7c1d('0x2c'));return _0x3f18a5;});}});}function getAuth(_0x34402c){return util[_0x7c1d('0xd')](_0x7c1d('0x2d'),new Buffer(_0x34402c[_0x7c1d('0x2e')]+':X')[_0x7c1d('0x2f')](_0x7c1d('0x30')));}function request(_0x559b4f){logger[_0x7c1d('0x31')]('[HTTP]',JSON['stringify'](_0x559b4f));return rp(_[_0x7c1d('0x7')](_0x559b4f,{'method':_0x7c1d('0x32'),'headers':headers,'json':!![]}));}function getTags(_0x4cc5f4,_0x4526c7){var _0xb60ea5=[];if(_0x4cc5f4&&_0x4cc5f4[_0x7c1d('0x20')]>0x0){_0xb60ea5=_[_0x7c1d('0x33')](_0x4cc5f4,_0x4526c7);}return _0xb60ea5;}function getCustomFields(_0x4dd80e,_0x24a535){var _0x2d3d01=[];var _0x20e5c0={'custom_fields':[]};if(_0x4dd80e['length']>0x0){_[_0x7c1d('0x34')](_0x4dd80e,function(_0x2f5d3e){if(_['includes']([_0x7c1d('0x35'),_0x7c1d('0x36')],_0x2f5d3e[_0x7c1d('0x37')])&&_0x2f5d3e[_0x7c1d('0x38')]&&!_0x2f5d3e[_0x7c1d('0x39')]){_0x20e5c0[_0x2f5d3e[_0x7c1d('0x38')]['toLowerCase']()]=_0x2f5d3e[_0x7c1d('0x3a')][_0x7c1d('0x2f')]();}else if(_[_0x7c1d('0x3b')]([_0x7c1d('0x35'),_0x7c1d('0x36')],_0x2f5d3e[_0x7c1d('0x37')])&&_0x2f5d3e[_0x7c1d('0x3c')]&&_0x2f5d3e[_0x7c1d('0x39')]){_0x20e5c0[_0x7c1d('0x16')][_0x7c1d('0x3d')]({'id':_0x2f5d3e['idField'],'value':_0x2f5d3e['content'][_0x7c1d('0x2f')]()});}else if(_0x2f5d3e[_0x7c1d('0x37')]===_0x7c1d('0x3e')&&_0x2f5d3e[_0x7c1d('0x3f')]&&_0x2f5d3e[_0x7c1d('0x3c')]&&_0x2f5d3e['customField']){_0x24a535[_0x2f5d3e[_0x7c1d('0x3f')]]&&_0x20e5c0['custom_fields'][_0x7c1d('0x3d')]({'id':_0x2f5d3e['idField'],'value':_0x24a535[_0x2f5d3e[_0x7c1d('0x3f')]][_0x7c1d('0x2f')]()});}else if(_0x2f5d3e[_0x7c1d('0x37')]===_0x7c1d('0x40')&&_0x2f5d3e[_0x7c1d('0x41')]&&_0x2f5d3e[_0x7c1d('0x41')][_0x7c1d('0x14')]&&_0x2f5d3e['idField']&&_0x2f5d3e[_0x7c1d('0x39')]){_0x24a535[_0x2f5d3e[_0x7c1d('0x41')][_0x7c1d('0x14')][_0x7c1d('0x42')]()]&&_0x20e5c0['custom_fields'][_0x7c1d('0x3d')]({'id':_0x2f5d3e[_0x7c1d('0x3c')],'value':_0x24a535[_0x2f5d3e[_0x7c1d('0x41')][_0x7c1d('0x14')][_0x7c1d('0x42')]()][_0x7c1d('0x2f')]()});}});}return _0x20e5c0;}exports['queue']=function(_0x300d0c,_0x2d5caa,_0x29d02a,_0x15714d,_0x2ae6ff,_0x1b1425){var _0x5cd2b7,_0x107093;_0x1b1425[_0x7c1d('0x1a')]=intUtil[_0x7c1d('0x43')](_0x1b1425['remoteUri']);_0x1b1425['serverUrl']=intUtil[_0x7c1d('0x43')](_0x1b1425['serverUrl']);if(_0x2ae6ff&&_0x2ae6ff['monitor_format']){logger['info'](_0x7c1d('0x44'),_0x7c1d('0x45'));_0x2d5caa[_0x7c1d('0x46')]=util[_0x7c1d('0xd')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x1b1425[_0x7c1d('0x47')],_0x2d5caa[_0x7c1d('0x48')],md5(_0x2d5caa['uniqueid']));}else{_0x2d5caa[_0x7c1d('0x46')]='';}headers[_0x7c1d('0x49')]=getAuth(_0x1b1425);return getUser(_0x1b1425,_0x15714d['email'])[_0x7c1d('0x1c')](function(_0x584132){_0x5cd2b7=_0x584132;logger[_0x7c1d('0xb')](_0x7c1d('0x4a'),_0x5cd2b7['id']);return getEndUser(_0x1b1425,_0x2d5caa[_0x7c1d('0xf')],_0x2d5caa[_0x7c1d('0x4b')]);})[_0x7c1d('0x1c')](function(_0x5966b4){_0x107093=_0x5966b4;logger[_0x7c1d('0xb')](_0x7c1d('0x4c'),_0x107093['id']);return getTicket(_0x1b1425,_0x5cd2b7,_0x107093,_0x29d02a,_0x2d5caa);})['then'](function(_0x416991){if(_0x416991&&_0x416991['id']){logger['info']('Ticket\x20created!');logger[_0x7c1d('0xb')](_0x7c1d('0x4d'),_0x416991['id']);logger[_0x7c1d('0xb')]('[QUEUE]',_0x7c1d('0x4e'));emit(util[_0x7c1d('0xd')](_0x7c1d('0x4f'),_0x15714d[_0x7c1d('0x14')]),_0x7c1d('0x50'),{'uri':util[_0x7c1d('0xd')](_0x7c1d('0x51'),_0x1b1425['remoteUri'],_0x416991['id'])});}})[_0x7c1d('0x52')](function(_0x1f25c8){logger[_0x7c1d('0x53')](_0x7c1d('0x44'),JSON['stringify'](_0x1f25c8));});};exports['outbound']=function(_0x4afc13,_0x2132f9,_0x245817,_0x31c0c4,_0x4a5430,_0x2ad0eb,_0x33069a){var _0x50e2cd,_0x5683fb;_0x2ad0eb[_0x7c1d('0x1a')]=intUtil[_0x7c1d('0x43')](_0x2ad0eb[_0x7c1d('0x1a')]);_0x2ad0eb[_0x7c1d('0x47')]=intUtil[_0x7c1d('0x43')](_0x2ad0eb[_0x7c1d('0x47')]);if(_0x33069a&&_0x33069a[_0x7c1d('0x54')]&&_0x33069a[_0x7c1d('0x54')]!=='none'){logger['info'](_0x7c1d('0x55'),_0x7c1d('0x45'));_0x2132f9[_0x7c1d('0x46')]=util[_0x7c1d('0xd')](_0x7c1d('0x56'),_0x2ad0eb[_0x7c1d('0x47')],_0x2132f9[_0x7c1d('0x48')],md5(_0x2132f9[_0x7c1d('0x48')]));}headers[_0x7c1d('0x49')]=getAuth(_0x2ad0eb);return getUser(_0x2ad0eb,_0x31c0c4[_0x7c1d('0x24')])['then'](function(_0x4d45d4){_0x50e2cd=_0x4d45d4;logger[_0x7c1d('0xb')]('The\x20User\x20ID\x20is:',_0x50e2cd['id']);return getEndUser(_0x2ad0eb,_0x2132f9['destcalleridname'],_0x2132f9[_0x7c1d('0x57')]);})['then'](function(_0x51d267){_0x5683fb=_0x51d267;logger['info'](_0x7c1d('0x4c'),_0x5683fb['id']);return getTicket(_0x2ad0eb,_0x50e2cd,_0x5683fb,_0x245817,_0x2132f9);})[_0x7c1d('0x1c')](function(_0x5b7213){if(_0x5b7213&&_0x5b7213['id']){logger[_0x7c1d('0xb')](_0x7c1d('0x1d'));logger[_0x7c1d('0xb')](_0x7c1d('0x4d'),_0x5b7213['id']);logger[_0x7c1d('0xb')](_0x7c1d('0x55'),_0x7c1d('0x4e'));emit(util[_0x7c1d('0xd')](_0x7c1d('0x4f'),_0x31c0c4[_0x7c1d('0x14')]),_0x7c1d('0x50'),{'uri':util[_0x7c1d('0xd')](_0x7c1d('0x51'),_0x2ad0eb[_0x7c1d('0x1a')],_0x5b7213['id'])});}})['catch'](function(_0x114075){logger[_0x7c1d('0x53')]('[OUTBOUND]',JSON[_0x7c1d('0x58')](_0x114075));});};exports[_0x7c1d('0x59')]=function(_0x5ddcb3,_0xb905a5,_0x3b6718,_0x748eec,_0x4e6b81,_0x11f57a){var _0x1443dc,_0x248f4b;_0x11f57a['remoteUri']=intUtil[_0x7c1d('0x43')](_0x11f57a[_0x7c1d('0x1a')]);_0x11f57a[_0x7c1d('0x47')]=intUtil[_0x7c1d('0x43')](_0x11f57a[_0x7c1d('0x47')]);if(_0x4e6b81&&_0x4e6b81[_0x7c1d('0x5a')]){logger['info']('['+_0xb905a5[_0x7c1d('0x5b')][_0x7c1d('0x5c')]()+']','Recording\x20is\x20enabled!');_0xb905a5[_0x7c1d('0x46')]=util[_0x7c1d('0xd')](_0x7c1d('0x56'),_0x11f57a[_0x7c1d('0x47')],_0xb905a5[_0x7c1d('0x48')],md5(_0xb905a5[_0x7c1d('0x48')]));}else{_0xb905a5[_0x7c1d('0x46')]='';}headers[_0x7c1d('0x49')]=getAuth(_0x11f57a);return getUser(_0x11f57a,'')[_0x7c1d('0x1c')](function(_0x396be5){_0x1443dc=_0x396be5;logger[_0x7c1d('0xb')](_0x7c1d('0x4a'),_0x1443dc['id']);return getEndUser(_0x11f57a,_0xb905a5[_0x7c1d('0xf')],_0xb905a5[_0x7c1d('0x4b')]);})[_0x7c1d('0x1c')](function(_0x3d4d4c){_0x248f4b=_0x3d4d4c;logger[_0x7c1d('0xb')](_0x7c1d('0x4c'),_0x248f4b['id']);return getTicket(_0x11f57a,_0x1443dc,_0x248f4b,_0x3b6718,_0xb905a5);})[_0x7c1d('0x1c')](function(_0x40b555){if(_0x40b555){logger[_0x7c1d('0xb')](_0x7c1d('0x1d'));logger[_0x7c1d('0xb')](_0x7c1d('0x4d'),_0x40b555['id']);}})['catch'](function(_0xdc1897){logger['error']('['+_0xb905a5['lastevent'][_0x7c1d('0x5c')]()+']',JSON[_0x7c1d('0x58')](_0xdc1897));});};
\ No newline at end of file
index 71af3a2..eef9ca7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a54=['agentEmail','userEmail','User\x20found:','userId','Admin\x20selected','/api/lookup?q=','find','contacts','format','Searching\x20contact\x20with\x20phone\x20%s','contactNumber','endUserId','Contact\x20found\x20mobile_number:','work_number','Contact\x20created:','POST','YYYY-MM-DDTHH:mm:ss','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','Creating\x20new\x20task','/api/tasks','Subjects','Descriptions','Contact','add','task','/contacts/','emit','Token\x20token=','apiKey','remoteUri','stripTrailingSlash','username','toLowerCase','outbound','calleridnum','callDirection','queue','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','[QUEUE]','recordingURL','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','The\x20ticket\x20ID\x20is:\x20%s','ticketId','name',']\x20Error\x20running\x20Freshsales\x20integration','inspect','lodash','request-promise','md5','util','moment','bluebird','ioredis','../../../../config/environment','../../../../config/logger','freshsales','redis','localhost','socket.io-emitter','/api/selector/owners','info','Getting\x20admin\x20information','then','users','length','email','adminEmail','adminId','Admin\x20found:','Requested\x20Resource\x20not\x20Found','catch','error','toUpperCase','message','headers'];(function(_0x264122,_0x42467e){var _0x3b67fc=function(_0xcfb7c3){while(--_0xcfb7c3){_0x264122['push'](_0x264122['shift']());}};_0x3b67fc(++_0x42467e);}(_0x1a54,0x83));var _0x41a5=function(_0x2578a2,_0x3133cf){_0x2578a2=_0x2578a2-0x0;var _0x19d291=_0x1a54[_0x2578a2];return _0x19d291;};'use strict';var _=require(_0x41a5('0x0'));var rp=require(_0x41a5('0x1'));var md5=require(_0x41a5('0x2'));var util=require(_0x41a5('0x3'));var moment=require(_0x41a5('0x4'));var Promise=require(_0x41a5('0x5'));var Redis=require(_0x41a5('0x6'));var intUtil=require('./util');var config=require(_0x41a5('0x7'));var logger=require(_0x41a5('0x8'))(_0x41a5('0x9'));config[_0x41a5('0xa')]=_['defaults'](config[_0x41a5('0xa')],{'host':_0x41a5('0xb'),'port':0x18eb});var io=require(_0x41a5('0xc'))(new Redis(config[_0x41a5('0xa')]));function getAdminId(_0x59e73a,_0x27cca0,_0xd296bd,_0xf1c813){return new Promise(function(_0x2f0c83,_0x196c14){var _0x50e6fc=![];var _0x96f1d1={'method':'GET','uri':_0xf1c813+_0x41a5('0xd'),'json':!![]};_0x96f1d1['headers']=_0xd296bd;logger[_0x41a5('0xe')](_0x41a5('0xf'));return rp(_0x96f1d1)[_0x41a5('0x10')](function(_0xa76280){if(_0xa76280){var _0x7dbf03=_0xa76280[_0x41a5('0x11')];var _0x3c681d=null;for(_0x3c681d=0x0;_0x3c681d<_0x7dbf03[_0x41a5('0x12')];_0x3c681d++){if(_0x7dbf03[_0x3c681d][_0x41a5('0x13')]===_0x59e73a[_0x41a5('0x14')]){_0x59e73a[_0x41a5('0x15')]=_0x7dbf03[_0x3c681d]['id'];_0x50e6fc=!![];}}if(_0x50e6fc){logger['info'](_0x41a5('0x16'),_0x59e73a[_0x41a5('0x15')]);_0x2f0c83(_0x59e73a);}else{_0x196c14({'statusCode':0x194,'message':_0x41a5('0x17')});}}else{_0x196c14({'statusCode':0x194,'message':_0x41a5('0x17')});}})[_0x41a5('0x18')](function(_0xeb2fe0){logger[_0x41a5('0x19')]('['+[_0x27cca0[_0x41a5('0x1a')]()]+']',_0xeb2fe0[_0x41a5('0x1b')]);_0x196c14(_0xeb2fe0);});});}function getUser(_0x20fcd4,_0x302c40,_0x23a3dd){return function(_0x1c9608){return new Promise(function(_0x494dcc,_0x54dd7d){var _0x2bb872={'method':'GET','uri':_0x23a3dd+_0x41a5('0xd'),'json':!![]};_0x2bb872[_0x41a5('0x1c')]=_0x302c40;logger[_0x41a5('0xe')]('Getting\x20user\x20list');return rp(_0x2bb872)[_0x41a5('0x10')](function(_0x4828c0){if(_0x4828c0){var _0x297adf=_0x4828c0[_0x41a5('0x11')];var _0x3d4927=![];var _0x1ae91b=null;if(_0x1c9608[_0x41a5('0x1d')]!==null){logger['info']('Getting\x20user\x20with\x20email',_0x1c9608[_0x41a5('0x1d')]);_0x1c9608[_0x41a5('0x1e')]=_0x1c9608[_0x41a5('0x1d')];for(_0x1ae91b=0x0;_0x1ae91b<_0x297adf[_0x41a5('0x12')];_0x1ae91b++){if(_0x297adf[_0x1ae91b][_0x41a5('0x13')]===_0x1c9608['agentEmail']){_0x3d4927=!![];_0x1c9608['userId']=_0x297adf[_0x1ae91b]['id'];logger[_0x41a5('0xe')](_0x41a5('0x1f'),_0x1c9608[_0x41a5('0x20')]);}}}if(!_0x3d4927){logger['info'](_0x41a5('0x21'));_0x1c9608[_0x41a5('0x1e')]=_0x1c9608[_0x41a5('0x14')];_0x1c9608['userId']=_0x1c9608['adminId'];_0x3d4927=!![];}if(_0x3d4927){_0x494dcc(_0x1c9608);}else{_0x54dd7d({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}else{_0x54dd7d({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}})[_0x41a5('0x18')](function(_0x5749db){logger[_0x41a5('0x19')]('['+[_0x20fcd4[_0x41a5('0x1a')]()]+']',_0x5749db[_0x41a5('0x1b')]);_0x54dd7d(_0x5749db);});});};}function searchContact(_0x42027b,_0xdb4bc6,_0x1cd09c,_0x21c96e){return new Promise(function(_0x17a907,_0x1f0975){var _0x184b3c={'method':'GET','headers':_0xdb4bc6,'uri':_0x42027b+_0x41a5('0x22')+_0x21c96e+'&f='+_0x1cd09c+'&entities=contact','json':!![]};rp(_0x184b3c)['then'](function(_0x177404){var _0x5533a5=_[_0x41a5('0x23')](_0x177404[_0x41a5('0x24')][_0x41a5('0x24')],[_0x1cd09c,_0x21c96e]);_0x17a907(_0x5533a5);})[_0x41a5('0x18')](function(_0x1093af){_0x1f0975(_0x1093af);});});}function getEndUser(_0x4a3775,_0x3e04d2,_0x37030b){return function(_0x10cac2){return new Promise(function(_0x1fa9b7,_0x35c4c9){logger['info'](util[_0x41a5('0x25')](_0x41a5('0x26'),_0x10cac2[_0x41a5('0x27')]));searchContact(_0x37030b,_0x3e04d2,'mobile_number',_0x10cac2[_0x41a5('0x27')])[_0x41a5('0x10')](function(_0xeba75){if(_0xeba75){_0x10cac2[_0x41a5('0x28')]=_0xeba75['id'];logger['info'](_0x41a5('0x29'),_0x10cac2['endUserId']);return _0x1fa9b7(_0x10cac2);}searchContact(_0x37030b,_0x3e04d2,_0x41a5('0x2a'),_0x10cac2[_0x41a5('0x27')])[_0x41a5('0x10')](function(_0x28757a){if(_0x28757a){_0x10cac2[_0x41a5('0x28')]=_0x28757a['id'];logger[_0x41a5('0xe')]('Contact\x20found\x20work_number:',_0x10cac2['endUserId']);return _0x1fa9b7(_0x10cac2);}createEndUser(_0x10cac2,_0x4a3775,_0x3e04d2,_0x37030b)[_0x41a5('0x10')](function(_0x41d05c){logger[_0x41a5('0xe')](_0x41a5('0x2b'),_0x41d05c[_0x41a5('0x28')]);return _0x1fa9b7(_0x41d05c);});});})[_0x41a5('0x18')](function(_0x3864dd){_0x35c4c9(_0x3864dd);});});};}function createEndUser(_0x32da98,_0x5e4ea8,_0x195aba,_0x5483df){return new Promise(function(_0x5dcb98,_0xeb4d87){var _0xb9b17d=moment();var _0x2635c6={'method':_0x41a5('0x2c'),'uri':_0x5483df+'/api/contacts','body':{'contact':{'last_name':_0x32da98[_0x41a5('0x27')],'work_number':_0x32da98[_0x41a5('0x27')],'mobile_number':_0x32da98[_0x41a5('0x27')],'owner_id':_0x32da98[_0x41a5('0x20')],'created_at':_0xb9b17d['format'](_0x41a5('0x2d'))}},'json':!![]};_0x2635c6[_0x41a5('0x1c')]=_0x195aba;logger['info'](_0x41a5('0x2e'));return rp(_0x2635c6)['then'](function(_0x53fae2){_0x32da98['endUserId']=_0x53fae2['contact']['id'];_0x5dcb98(_0x32da98);})[_0x41a5('0x18')](function(_0x1f71e7){logger['error']('['+[_0x5e4ea8['toUpperCase']()]+']',_0x1f71e7[_0x41a5('0x1b')]);_0xeb4d87(_0x1f71e7[_0x41a5('0x1b')]);});});}function getTicket(_0x4fc5ac,_0x2a4a39,_0x4282a0,_0x25beb2,_0x14624c){return function(_0x2aa433){logger[_0x41a5('0xe')](_0x41a5('0x2f'));return new Promise(function(_0x4b372e,_0x455b06){var _0x149afc=moment();var _0x4dcac0={'method':'POST','uri':_0x4282a0+_0x41a5('0x30'),'body':{'title':intUtil['getString'](_0x25beb2[_0x41a5('0x31')],_0x14624c,'\x20'),'description':intUtil['getString'](_0x25beb2[_0x41a5('0x32')],_0x14624c,'\x0a'),'owner_id':_0x2aa433[_0x41a5('0x20')],'creater_id':_0x2aa433[_0x41a5('0x15')],'targetable_id':_0x2aa433[_0x41a5('0x28')],'targetable_type':_0x41a5('0x33'),'created_at':_0x149afc['format'](_0x41a5('0x2d')),'due_date':_0x149afc[_0x41a5('0x34')](0x1e,'m')[_0x41a5('0x25')](_0x41a5('0x2d'))},'json':!![]};_0x4dcac0['headers']=_0x2a4a39;return rp(_0x4dcac0)[_0x41a5('0x10')](function(_0x578460){_0x2aa433['ticketId']=_0x578460[_0x41a5('0x35')]['id'];logger[_0x41a5('0xe')]('Task\x20created:',_0x2aa433['ticketId']);_0x4b372e(_0x2aa433);})[_0x41a5('0x18')](function(_0x3f7d51){logger['error']('['+[_0x4fc5ac[_0x41a5('0x1a')]()]+']',_0x3f7d51['message']);_0x455b06(_0x3f7d51['message']);});});};}function emit(_0x36508d,_0x23ec8c,_0x1e7ff7){var _0x5017af={'uri':_0x36508d+_0x41a5('0x36')+_0x1e7ff7};io['to'](util[_0x41a5('0x25')]('user:%s',_0x23ec8c))[_0x41a5('0x37')]('trigger:browser:url',_0x5017af);}exports['cs']=function(_0x593e3f,_0x8801dd,_0x183087,_0x5f5719,_0x14b25e,_0x33a362,_0x25d29a,_0x389acd){var _0x141ece={};var _0x3a93a3={'Authorization':_0x41a5('0x38')+_0x33a362[_0x41a5('0x39')]};_0x33a362[_0x41a5('0x3a')]=intUtil[_0x41a5('0x3b')](_0x33a362[_0x41a5('0x3a')]);_0x33a362['serverUrl']=intUtil[_0x41a5('0x3b')](_0x33a362['serverUrl']);var _0x3a53fa=_0x33a362[_0x41a5('0x3a')];_0x141ece[_0x41a5('0x14')]=_0x33a362[_0x41a5('0x3c')];_0x141ece['contactNumber']=_0x389acd[_0x41a5('0x3d')]()===_0x41a5('0x3e')?_0x8801dd['destcalleridnum']:_0x8801dd[_0x41a5('0x3f')];_0x141ece[_0x41a5('0x40')]=_0x389acd===_0x41a5('0x41')||_0x389acd===_0x41a5('0x42')?_0x41a5('0x41'):'outbound';if(_0x5f5719){_0x141ece[_0x41a5('0x1d')]=_0x5f5719[_0x41a5('0x13')];}var _0x1966b=util[_0x41a5('0x25')](_0x41a5('0x43'),_0x33a362['serverUrl'],_0x8801dd[_0x41a5('0x44')],md5(_0x8801dd[_0x41a5('0x44')]));if(_0x14b25e&&_0x14b25e['monitor_format']){logger[_0x41a5('0xe')](_0x41a5('0x45'),'Recording\x20is\x20enabled!');_0x8801dd[_0x41a5('0x46')]=_0x1966b;}else if(_0x25d29a&&_0x25d29a[_0x41a5('0x47')]&&_0x25d29a[_0x41a5('0x47')]!==_0x41a5('0x48')){logger[_0x41a5('0xe')](_0x41a5('0x49'),_0x41a5('0x4a'));_0x8801dd[_0x41a5('0x46')]=_0x1966b;}else{_0x8801dd[_0x41a5('0x46')]='';}return getAdminId(_0x141ece,_0x389acd,_0x3a93a3,_0x3a53fa)[_0x41a5('0x10')](getUser(_0x389acd,_0x3a93a3,_0x3a53fa))[_0x41a5('0x10')](getEndUser(_0x389acd,_0x3a93a3,_0x3a53fa))[_0x41a5('0x10')](getTicket(_0x389acd,_0x3a93a3,_0x3a53fa,_0x183087,_0x8801dd))[_0x41a5('0x10')](function(_0x233b08){logger[_0x41a5('0xe')](util[_0x41a5('0x25')](_0x41a5('0x4b'),_0x233b08[_0x41a5('0x4c')]));if(_0x389acd!==_0x41a5('0x42')){logger[_0x41a5('0xe')]('['+[_0x389acd['toUpperCase']()]+']','Displaying\x20task\x20in\x20a\x20new\x20tab...');emit(_0x3a53fa,_0x5f5719[_0x41a5('0x4d')],_0x233b08[_0x41a5('0x28')]);}})['catch'](function(_0x25295a){logger['error']('['+[_0x389acd['toUpperCase']()]+_0x41a5('0x4e'),util[_0x41a5('0x4f')](_0x25295a,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0x239f=['queue','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]','The\x20ticket\x20ID\x20is:\x20%s','Displaying\x20task\x20in\x20a\x20new\x20tab...','name',']\x20Error\x20running\x20Freshsales\x20integration','inspect','lodash','request-promise','md5','util','bluebird','ioredis','./util','../../../../config/logger','freshsales','redis','localhost','GET','/api/selector/owners','headers','info','Getting\x20admin\x20information','then','users','length','email','adminId','Admin\x20found:','Requested\x20Resource\x20not\x20Found','catch','error','toUpperCase','message','Getting\x20user\x20list','agentEmail','Getting\x20user\x20with\x20email','userEmail','User\x20found:','userId','Admin\x20selected','adminEmail','&entities=contact','find','contacts','format','Searching\x20contact\x20with\x20phone\x20%s','contactNumber','mobile_number','Contact\x20found\x20mobile_number:','work_number','endUserId','Contact\x20found\x20work_number:','Contact\x20created:','/api/contacts','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','Creating\x20new\x20task','POST','/api/tasks','getString','Subjects','Descriptions','Contact','YYYY-MM-DDTHH:mm:ss','ticketId','Task\x20created:','/contacts/','user:%s','emit','trigger:browser:url','Token\x20token=','apiKey','remoteUri','stripTrailingSlash','username','outbound','calleridnum','callDirection'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x239f,0x11c));var _0xf239=function(_0x28ff3a,_0x535aa3){_0x28ff3a=_0x28ff3a-0x0;var _0xc69cb6=_0x239f[_0x28ff3a];return _0xc69cb6;};'use strict';var _=require(_0xf239('0x0'));var rp=require(_0xf239('0x1'));var md5=require(_0xf239('0x2'));var util=require(_0xf239('0x3'));var moment=require('moment');var Promise=require(_0xf239('0x4'));var Redis=require(_0xf239('0x5'));var intUtil=require(_0xf239('0x6'));var config=require('../../../../config/environment');var logger=require(_0xf239('0x7'))(_0xf239('0x8'));config[_0xf239('0x9')]=_['defaults'](config['redis'],{'host':_0xf239('0xa'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xf239('0x9')]));function getAdminId(_0x259083,_0x16362b,_0x32ebe5,_0x8a7e61){return new Promise(function(_0x366810,_0x55f43f){var _0x5bb868=![];var _0x3057b6={'method':_0xf239('0xb'),'uri':_0x8a7e61+_0xf239('0xc'),'json':!![]};_0x3057b6[_0xf239('0xd')]=_0x32ebe5;logger[_0xf239('0xe')](_0xf239('0xf'));return rp(_0x3057b6)[_0xf239('0x10')](function(_0x1e5973){if(_0x1e5973){var _0x576d48=_0x1e5973[_0xf239('0x11')];var _0x55aae9=null;for(_0x55aae9=0x0;_0x55aae9<_0x576d48[_0xf239('0x12')];_0x55aae9++){if(_0x576d48[_0x55aae9][_0xf239('0x13')]===_0x259083['adminEmail']){_0x259083[_0xf239('0x14')]=_0x576d48[_0x55aae9]['id'];_0x5bb868=!![];}}if(_0x5bb868){logger['info'](_0xf239('0x15'),_0x259083[_0xf239('0x14')]);_0x366810(_0x259083);}else{_0x55f43f({'statusCode':0x194,'message':_0xf239('0x16')});}}else{_0x55f43f({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}})[_0xf239('0x17')](function(_0x3e13fa){logger[_0xf239('0x18')]('['+[_0x16362b[_0xf239('0x19')]()]+']',_0x3e13fa[_0xf239('0x1a')]);_0x55f43f(_0x3e13fa);});});}function getUser(_0x20f143,_0x422f15,_0x61c44){return function(_0xf8416e){return new Promise(function(_0x434952,_0xc01bf0){var _0x2d51fc={'method':_0xf239('0xb'),'uri':_0x61c44+_0xf239('0xc'),'json':!![]};_0x2d51fc[_0xf239('0xd')]=_0x422f15;logger[_0xf239('0xe')](_0xf239('0x1b'));return rp(_0x2d51fc)[_0xf239('0x10')](function(_0x334a32){if(_0x334a32){var _0x40f1a1=_0x334a32[_0xf239('0x11')];var _0x32a26a=![];var _0x2504d1=null;if(_0xf8416e[_0xf239('0x1c')]!==null){logger[_0xf239('0xe')](_0xf239('0x1d'),_0xf8416e[_0xf239('0x1c')]);_0xf8416e[_0xf239('0x1e')]=_0xf8416e['agentEmail'];for(_0x2504d1=0x0;_0x2504d1<_0x40f1a1[_0xf239('0x12')];_0x2504d1++){if(_0x40f1a1[_0x2504d1][_0xf239('0x13')]===_0xf8416e[_0xf239('0x1c')]){_0x32a26a=!![];_0xf8416e['userId']=_0x40f1a1[_0x2504d1]['id'];logger['info'](_0xf239('0x1f'),_0xf8416e[_0xf239('0x20')]);}}}if(!_0x32a26a){logger[_0xf239('0xe')](_0xf239('0x21'));_0xf8416e[_0xf239('0x1e')]=_0xf8416e[_0xf239('0x22')];_0xf8416e[_0xf239('0x20')]=_0xf8416e['adminId'];_0x32a26a=!![];}if(_0x32a26a){_0x434952(_0xf8416e);}else{_0xc01bf0({'statusCode':0x194,'message':_0xf239('0x16')});}}else{_0xc01bf0({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}})['catch'](function(_0x24ce14){logger[_0xf239('0x18')]('['+[_0x20f143[_0xf239('0x19')]()]+']',_0x24ce14['message']);_0xc01bf0(_0x24ce14);});});};}function searchContact(_0x3de93a,_0x673f2a,_0xdcd09,_0x26f84f){return new Promise(function(_0xe4bae7,_0x57b8b7){var _0x479d77={'method':_0xf239('0xb'),'headers':_0x673f2a,'uri':_0x3de93a+'/api/lookup?q='+_0x26f84f+'&f='+_0xdcd09+_0xf239('0x23'),'json':!![]};rp(_0x479d77)[_0xf239('0x10')](function(_0x523177){var _0x151381=_[_0xf239('0x24')](_0x523177['contacts'][_0xf239('0x25')],[_0xdcd09,_0x26f84f]);_0xe4bae7(_0x151381);})[_0xf239('0x17')](function(_0x1c1a4f){_0x57b8b7(_0x1c1a4f);});});}function getEndUser(_0x3c567c,_0x39d88a,_0x5394a3){return function(_0xc41d63){return new Promise(function(_0x21add0,_0xecf8b6){logger[_0xf239('0xe')](util[_0xf239('0x26')](_0xf239('0x27'),_0xc41d63[_0xf239('0x28')]));searchContact(_0x5394a3,_0x39d88a,_0xf239('0x29'),_0xc41d63[_0xf239('0x28')])['then'](function(_0x33d14d){if(_0x33d14d){_0xc41d63['endUserId']=_0x33d14d['id'];logger[_0xf239('0xe')](_0xf239('0x2a'),_0xc41d63['endUserId']);return _0x21add0(_0xc41d63);}searchContact(_0x5394a3,_0x39d88a,_0xf239('0x2b'),_0xc41d63[_0xf239('0x28')])[_0xf239('0x10')](function(_0x51c36f){if(_0x51c36f){_0xc41d63[_0xf239('0x2c')]=_0x51c36f['id'];logger['info'](_0xf239('0x2d'),_0xc41d63[_0xf239('0x2c')]);return _0x21add0(_0xc41d63);}createEndUser(_0xc41d63,_0x3c567c,_0x39d88a,_0x5394a3)['then'](function(_0x2c6e7c){logger[_0xf239('0xe')](_0xf239('0x2e'),_0x2c6e7c[_0xf239('0x2c')]);return _0x21add0(_0x2c6e7c);});});})[_0xf239('0x17')](function(_0x30b02b){_0xecf8b6(_0x30b02b);});});};}function createEndUser(_0xfd3526,_0x313f16,_0x3ae490,_0x2240b8){return new Promise(function(_0x5d28e2,_0x255454){var _0x578dbd=moment();var _0x425b82={'method':'POST','uri':_0x2240b8+_0xf239('0x2f'),'body':{'contact':{'last_name':_0xfd3526[_0xf239('0x28')],'work_number':_0xfd3526['contactNumber'],'mobile_number':_0xfd3526[_0xf239('0x28')],'owner_id':_0xfd3526['userId'],'created_at':_0x578dbd['format']('YYYY-MM-DDTHH:mm:ss')}},'json':!![]};_0x425b82['headers']=_0x3ae490;logger[_0xf239('0xe')](_0xf239('0x30'));return rp(_0x425b82)[_0xf239('0x10')](function(_0x2a3574){_0xfd3526[_0xf239('0x2c')]=_0x2a3574[_0xf239('0x31')]['id'];_0x5d28e2(_0xfd3526);})[_0xf239('0x17')](function(_0x5da65a){logger[_0xf239('0x18')]('['+[_0x313f16[_0xf239('0x19')]()]+']',_0x5da65a[_0xf239('0x1a')]);_0x255454(_0x5da65a[_0xf239('0x1a')]);});});}function getTicket(_0x4234b1,_0x3ccde9,_0x2618c9,_0x228ef4,_0x29f355){return function(_0x229370){logger[_0xf239('0xe')](_0xf239('0x32'));return new Promise(function(_0x5b66d6,_0x54e49d){var _0x119a8e=moment();var _0x5e7411={'method':_0xf239('0x33'),'uri':_0x2618c9+_0xf239('0x34'),'body':{'title':intUtil[_0xf239('0x35')](_0x228ef4[_0xf239('0x36')],_0x29f355,'\x20'),'description':intUtil[_0xf239('0x35')](_0x228ef4[_0xf239('0x37')],_0x29f355,'\x0a'),'owner_id':_0x229370[_0xf239('0x20')],'creater_id':_0x229370[_0xf239('0x14')],'targetable_id':_0x229370[_0xf239('0x2c')],'targetable_type':_0xf239('0x38'),'created_at':_0x119a8e[_0xf239('0x26')]('YYYY-MM-DDTHH:mm:ss'),'due_date':_0x119a8e['add'](0x1e,'m')[_0xf239('0x26')](_0xf239('0x39'))},'json':!![]};_0x5e7411[_0xf239('0xd')]=_0x3ccde9;return rp(_0x5e7411)['then'](function(_0x532d50){_0x229370[_0xf239('0x3a')]=_0x532d50['task']['id'];logger['info'](_0xf239('0x3b'),_0x229370['ticketId']);_0x5b66d6(_0x229370);})[_0xf239('0x17')](function(_0x333a58){logger['error']('['+[_0x4234b1[_0xf239('0x19')]()]+']',_0x333a58['message']);_0x54e49d(_0x333a58[_0xf239('0x1a')]);});});};}function emit(_0x1e2104,_0x1fbef1,_0x1ea60e){var _0x44a3a4={'uri':_0x1e2104+_0xf239('0x3c')+_0x1ea60e};io['to'](util[_0xf239('0x26')](_0xf239('0x3d'),_0x1fbef1))[_0xf239('0x3e')](_0xf239('0x3f'),_0x44a3a4);}exports['cs']=function(_0x5783fd,_0x287bc7,_0x52e8ef,_0x1f4880,_0x14a040,_0x3e8f3a,_0x440020,_0x1378a4){var _0xbe3334={};var _0x3dfe8e={'Authorization':_0xf239('0x40')+_0x3e8f3a[_0xf239('0x41')]};_0x3e8f3a[_0xf239('0x42')]=intUtil['stripTrailingSlash'](_0x3e8f3a[_0xf239('0x42')]);_0x3e8f3a['serverUrl']=intUtil[_0xf239('0x43')](_0x3e8f3a['serverUrl']);var _0x1956ee=_0x3e8f3a['remoteUri'];_0xbe3334[_0xf239('0x22')]=_0x3e8f3a[_0xf239('0x44')];_0xbe3334[_0xf239('0x28')]=_0x1378a4['toLowerCase']()===_0xf239('0x45')?_0x287bc7['destcalleridnum']:_0x287bc7[_0xf239('0x46')];_0xbe3334[_0xf239('0x47')]=_0x1378a4===_0xf239('0x48')||_0x1378a4===_0xf239('0x49')?_0xf239('0x48'):_0xf239('0x45');if(_0x1f4880){_0xbe3334[_0xf239('0x1c')]=_0x1f4880[_0xf239('0x13')];}var _0x5c53d0=util[_0xf239('0x26')](_0xf239('0x4a'),_0x3e8f3a[_0xf239('0x4b')],_0x287bc7[_0xf239('0x4c')],md5(_0x287bc7[_0xf239('0x4c')]));if(_0x14a040&&_0x14a040[_0xf239('0x4d')]){logger[_0xf239('0xe')](_0xf239('0x4e'),_0xf239('0x4f'));_0x287bc7[_0xf239('0x50')]=_0x5c53d0;}else if(_0x440020&&_0x440020[_0xf239('0x51')]&&_0x440020[_0xf239('0x51')]!==_0xf239('0x52')){logger[_0xf239('0xe')](_0xf239('0x53'),_0xf239('0x4f'));_0x287bc7[_0xf239('0x50')]=_0x5c53d0;}else{_0x287bc7[_0xf239('0x50')]='';}return getAdminId(_0xbe3334,_0x1378a4,_0x3dfe8e,_0x1956ee)['then'](getUser(_0x1378a4,_0x3dfe8e,_0x1956ee))[_0xf239('0x10')](getEndUser(_0x1378a4,_0x3dfe8e,_0x1956ee))[_0xf239('0x10')](getTicket(_0x1378a4,_0x3dfe8e,_0x1956ee,_0x52e8ef,_0x287bc7))['then'](function(_0xb425a3){logger[_0xf239('0xe')](util['format'](_0xf239('0x54'),_0xb425a3[_0xf239('0x3a')]));if(_0x1378a4!==_0xf239('0x49')){logger[_0xf239('0xe')]('['+[_0x1378a4[_0xf239('0x19')]()]+']',_0xf239('0x55'));emit(_0x1956ee,_0x1f4880[_0xf239('0x56')],_0xb425a3[_0xf239('0x2c')]);}})['catch'](function(_0x4655f7){logger[_0xf239('0x18')]('['+[_0x1378a4[_0xf239('0x19')]()]+_0xf239('0x57'),util[_0xf239('0x58')](_0x4655f7,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index b27b968..8a88681 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf6fe=['error','util','./zendesk','./sugarcrm','./freshdesk','./zoho','./desk','./vtiger','./servicenow','./freshsales','zendesk','salesforce','sugarcrm','desk','dynamics365','freshsales','servicenow','exec','includes','toLowerCase','data1','Configurations','data3','queue','routeId','outbound','log','EVENT\x20UNKNOWN','unmanaged','freshdesk','vtiger','unknown\x20integration','format','%s\x20configuration\x20#%s\x20not\x20found','../../../../config/logger','%s\x20account\x20#%s\x20not\x20found'];(function(_0x102977,_0x3a99a6){var _0x15c466=function(_0x1a6a12){while(--_0x1a6a12){_0x102977['push'](_0x102977['shift']());}};_0x15c466(++_0x3a99a6);}(_0xf6fe,0x18d));var _0xef6f=function(_0x275e30,_0x353fba){_0x275e30=_0x275e30-0x0;var _0x4b4111=_0xf6fe[_0x275e30];return _0x4b4111;};'use strict';var _=require('lodash');var util=require(_0xef6f('0x0'));var zendesk=require(_0xef6f('0x1'));var salesforce=require('./salesforce');var sugarcrm=require(_0xef6f('0x2'));var freshdesk=require(_0xef6f('0x3'));var zoho=require(_0xef6f('0x4'));var desk=require(_0xef6f('0x5'));var vtiger=require(_0xef6f('0x6'));var servicenow=require(_0xef6f('0x7'));var dynamics365=require('./dynamics365');var freshsales=require(_0xef6f('0x8'));var integrations=[_0xef6f('0x9'),_0xef6f('0xa'),_0xef6f('0xb'),'freshdesk','zoho',_0xef6f('0xc'),'vtiger',_0xef6f('0xd'),_0xef6f('0xe'),_0xef6f('0xf')];exports[_0xef6f('0x10')]=function(_0x1ee917,_0x364eba,_0x572e16,_0x438091,_0xef3e71,_0x9051d5){if(_0x572e16){if(_[_0xef6f('0x11')](integrations,_0x1ee917['data1'][_0xef6f('0x12')]())){try{var _0x3a4e5f=null;var _0x1e8fe5='';var _0x99883e=_0x572e16[_0x1ee917[_0xef6f('0x13')]['toLowerCase']()];if(_0x99883e){var _0x176109=_0x99883e[_0x1ee917['data2']];if(_0x176109){var _0x788bf3=_['find'](_0x176109[_0xef6f('0x14')],{'id':parseInt(_0x1ee917[_0xef6f('0x15')],0xa)});if(_0x788bf3){if(_0x438091){if(_0xef3e71&&_0x364eba['queue']){_0x1e8fe5=_0xef6f('0x16');}else if(_0x364eba[_0xef6f('0x17')]){_0x1e8fe5=_0xef6f('0x18');}else{console[_0xef6f('0x19')](_0xef6f('0x1a'),_0x364eba);}}else{_0x1e8fe5=_0xef6f('0x1b');}switch(_0x1ee917['data1'][_0xef6f('0x12')]()){case _0xef6f('0x9'):zendesk[_0x1e8fe5](_0x1ee917,_0x364eba,_0x788bf3,_0x438091,_0xef3e71,_0x176109,_0x9051d5);break;case _0xef6f('0xa'):salesforce[_0x1e8fe5](_0x1ee917,_0x364eba,_0x788bf3,_0x438091,_0xef3e71,_0x176109,_0x9051d5);break;case _0xef6f('0xb'):sugarcrm[_0x1e8fe5](_0x1ee917,_0x364eba,_0x788bf3,_0x438091,_0xef3e71,_0x176109,_0x9051d5);break;case _0xef6f('0x1c'):freshdesk[_0x1e8fe5](_0x1ee917,_0x364eba,_0x788bf3,_0x438091,_0xef3e71,_0x176109,_0x9051d5);break;case'zoho':zoho[_0x1e8fe5](_0x1ee917,_0x364eba,_0x788bf3,_0x438091,_0xef3e71,_0x176109,_0x9051d5);break;case _0xef6f('0xc'):desk[_0x1e8fe5](_0x1ee917,_0x364eba,_0x788bf3,_0x438091,_0xef3e71,_0x176109,_0x9051d5);break;case _0xef6f('0x1d'):vtiger[_0x1e8fe5](_0x1ee917,_0x364eba,_0x788bf3,_0x438091,_0xef3e71,_0x176109,_0x9051d5);break;case _0xef6f('0xe'):freshsales['cs'](_0x1ee917,_0x364eba,_0x788bf3,_0x438091,_0xef3e71,_0x176109,_0x9051d5,_0x1e8fe5);break;case'servicenow':servicenow['cs'](_0x1ee917,_0x364eba,_0x788bf3,_0x438091,_0xef3e71,_0x176109,_0x9051d5,_0x1e8fe5);break;case _0xef6f('0xd'):dynamics365['cs'](_0x1ee917,_0x364eba,_0x788bf3,_0x438091,_0xef3e71,_0x176109,_0x9051d5,_0x1e8fe5);break;default:console[_0xef6f('0x19')](_0xef6f('0x1e'));}}else{_0x3a4e5f=require('../../../../config/logger')(_0x1ee917[_0xef6f('0x13')][_0xef6f('0x12')]());_0x3a4e5f['error']('[EXEC]',util[_0xef6f('0x1f')](_0xef6f('0x20'),_0x1ee917[_0xef6f('0x13')]['toLowerCase'](),_0x1ee917[_0xef6f('0x15')]));}}else{_0x3a4e5f=require(_0xef6f('0x21'))(_0x1ee917[_0xef6f('0x13')][_0xef6f('0x12')]());_0x3a4e5f['error']('[EXEC]',util[_0xef6f('0x1f')](_0xef6f('0x22'),_0x1ee917[_0xef6f('0x13')]['toLowerCase'](),_0x1ee917['data2']));}}else{}}catch(_0x5da924){console[_0xef6f('0x23')](_0x5da924);}}}};
\ No newline at end of file
+var _0xa098=['../../../../config/logger','error','[EXEC]','format','%s\x20configuration\x20#%s\x20not\x20found','%s\x20account\x20#%s\x20not\x20found','data2','lodash','util','./zendesk','./salesforce','./freshdesk','./zoho','./vtiger','./dynamics365','zendesk','salesforce','freshdesk','zoho','desk','dynamics365','freshsales','servicenow','exec','data1','toLowerCase','find','Configurations','data3','queue','routeId','outbound','log','unmanaged','unknown\x20integration'];(function(_0xb02d55,_0x3128b2){var _0x76928a=function(_0x1fe225){while(--_0x1fe225){_0xb02d55['push'](_0xb02d55['shift']());}};_0x76928a(++_0x3128b2);}(_0xa098,0xb6));var _0x8a09=function(_0x34689a,_0x2afc5f){_0x34689a=_0x34689a-0x0;var _0x551f04=_0xa098[_0x34689a];return _0x551f04;};'use strict';var _=require(_0x8a09('0x0'));var util=require(_0x8a09('0x1'));var zendesk=require(_0x8a09('0x2'));var salesforce=require(_0x8a09('0x3'));var sugarcrm=require('./sugarcrm');var freshdesk=require(_0x8a09('0x4'));var zoho=require(_0x8a09('0x5'));var desk=require('./desk');var vtiger=require(_0x8a09('0x6'));var servicenow=require('./servicenow');var dynamics365=require(_0x8a09('0x7'));var freshsales=require('./freshsales');var integrations=[_0x8a09('0x8'),_0x8a09('0x9'),'sugarcrm',_0x8a09('0xa'),_0x8a09('0xb'),_0x8a09('0xc'),'vtiger',_0x8a09('0xd'),_0x8a09('0xe'),_0x8a09('0xf')];exports[_0x8a09('0x10')]=function(_0x115c7f,_0x169c17,_0x5dbac1,_0x325861,_0x4e374d,_0xfb3f3e){if(_0x5dbac1){if(_['includes'](integrations,_0x115c7f[_0x8a09('0x11')]['toLowerCase']())){try{var _0xa812e4=null;var _0x32dc9f='';var _0x245e0b=_0x5dbac1[_0x115c7f[_0x8a09('0x11')][_0x8a09('0x12')]()];if(_0x245e0b){var _0x47630a=_0x245e0b[_0x115c7f['data2']];if(_0x47630a){var _0x303383=_[_0x8a09('0x13')](_0x47630a[_0x8a09('0x14')],{'id':parseInt(_0x115c7f[_0x8a09('0x15')],0xa)});if(_0x303383){if(_0x325861){if(_0x4e374d&&_0x169c17[_0x8a09('0x16')]){_0x32dc9f=_0x8a09('0x16');}else if(_0x169c17[_0x8a09('0x17')]){_0x32dc9f=_0x8a09('0x18');}else{console[_0x8a09('0x19')]('EVENT\x20UNKNOWN',_0x169c17);}}else{_0x32dc9f=_0x8a09('0x1a');}switch(_0x115c7f[_0x8a09('0x11')][_0x8a09('0x12')]()){case _0x8a09('0x8'):zendesk[_0x32dc9f](_0x115c7f,_0x169c17,_0x303383,_0x325861,_0x4e374d,_0x47630a,_0xfb3f3e);break;case'salesforce':salesforce[_0x32dc9f](_0x115c7f,_0x169c17,_0x303383,_0x325861,_0x4e374d,_0x47630a,_0xfb3f3e);break;case'sugarcrm':sugarcrm[_0x32dc9f](_0x115c7f,_0x169c17,_0x303383,_0x325861,_0x4e374d,_0x47630a,_0xfb3f3e);break;case _0x8a09('0xa'):freshdesk[_0x32dc9f](_0x115c7f,_0x169c17,_0x303383,_0x325861,_0x4e374d,_0x47630a,_0xfb3f3e);break;case _0x8a09('0xb'):zoho[_0x32dc9f](_0x115c7f,_0x169c17,_0x303383,_0x325861,_0x4e374d,_0x47630a,_0xfb3f3e);break;case _0x8a09('0xc'):desk[_0x32dc9f](_0x115c7f,_0x169c17,_0x303383,_0x325861,_0x4e374d,_0x47630a,_0xfb3f3e);break;case'vtiger':vtiger[_0x32dc9f](_0x115c7f,_0x169c17,_0x303383,_0x325861,_0x4e374d,_0x47630a,_0xfb3f3e);break;case _0x8a09('0xe'):freshsales['cs'](_0x115c7f,_0x169c17,_0x303383,_0x325861,_0x4e374d,_0x47630a,_0xfb3f3e,_0x32dc9f);break;case _0x8a09('0xf'):servicenow['cs'](_0x115c7f,_0x169c17,_0x303383,_0x325861,_0x4e374d,_0x47630a,_0xfb3f3e,_0x32dc9f);break;case _0x8a09('0xd'):dynamics365['cs'](_0x115c7f,_0x169c17,_0x303383,_0x325861,_0x4e374d,_0x47630a,_0xfb3f3e,_0x32dc9f);break;default:console['log'](_0x8a09('0x1b'));}}else{_0xa812e4=require(_0x8a09('0x1c'))(_0x115c7f[_0x8a09('0x11')][_0x8a09('0x12')]());_0xa812e4[_0x8a09('0x1d')](_0x8a09('0x1e'),util[_0x8a09('0x1f')](_0x8a09('0x20'),_0x115c7f['data1']['toLowerCase'](),_0x115c7f[_0x8a09('0x15')]));}}else{_0xa812e4=require(_0x8a09('0x1c'))(_0x115c7f[_0x8a09('0x11')]['toLowerCase']());_0xa812e4['error'](_0x8a09('0x1e'),util[_0x8a09('0x1f')](_0x8a09('0x21'),_0x115c7f[_0x8a09('0x11')][_0x8a09('0x12')](),_0x115c7f[_0x8a09('0x22')]));}}else{}}catch(_0x1feed7){console[_0x8a09('0x1d')](_0x1feed7);}}}};
\ No newline at end of file
index 3a79389..6cf06aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x573e=['recordingFormat','[OUTBOUND]','email','destcalleridname','destcalleridnum','Fields','[OUTBOUND]\x20Ticket\x20%s\x20created.','integrationTab','Salesforce\x20account\x20type\x20not\x20recognized','catch','lastevent','toUpperCase','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',']\x20Ticket\x20%s\x20created.',']\x20Integration\x20account\x20type\x20%s.','lodash','request-promise','moment','bluebird','md5','jsforce','util','ioredis','./util','../../../../config/logger','salesforce','redis','socket.io-emitter','emit','getString','Subjects','Descriptions','ActivityDate','utc','IsReminderSet','IsRecurrence','contact','endUserType','lead','WhoId','account','ticketType','Case','ContactId','AccountId','leadId','info','Association\x20between\x20Case\x20and\x20Lead\x20skipped','isNil','validateEmail','sobject','User','execute','then','length','find','Agent\x20%s\x20found.','resolve','Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.','identity','user_id','Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.','moduleSearch','contact_lead','cloneDeep','$or','Contact','additionalSearchLead','Lead','account_contact_lead','additionalSearchAccount','merge','Account','additionalSearchContact','first','Name','Phone','attributes','type','toLowerCase','Enduser\x20(%s)\x20with\x20phone\x20%s\x20found','moduleCreate','Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.','LastName','<unknown>','format','Caller\x20-\x20%s','Company','upperFirst','create','forEach','includes','string','picklist','variable','idField','variableName','toString','customVariable','Variable','name','concat','remoteUri','https://login.salesforce.com','clientId','clientSecret','login','Connection\x20established.','serverUrl','stripTrailingSlash','monitor_format','Recording\x20is\x20enabled!','recordingURL','uniqueid','calleridnum','queue','[QUEUE]\x20Ticket\x20%s\x20created','[QUEUE]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','trigger:salesforce:display','user:%s','trigger:browser:url','%s/%s/e','instanceUrl','error','[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.','[QUEUE]','outbound'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x573e,0x8e));var _0xe573=function(_0x2b4b49,_0x35bac6){_0x2b4b49=_0x2b4b49-0x0;var _0x1f41c4=_0x573e[_0x2b4b49];return _0x1f41c4;};'use strict';var _=require(_0xe573('0x0'));var rp=require(_0xe573('0x1'));var moment=require(_0xe573('0x2'));var BPromise=require(_0xe573('0x3'));var md5=require(_0xe573('0x4'));var jsforce=require(_0xe573('0x5'));var util=require(_0xe573('0x6'));var Redis=require(_0xe573('0x7'));var intUtil=require(_0xe573('0x8'));var config=require('../../../../config/environment');var logger=require(_0xe573('0x9'))(_0xe573('0xa'));config[_0xe573('0xb')]=_['defaults'](config[_0xe573('0xb')],{'host':'localhost','port':0x18eb});var io=require(_0xe573('0xc'))(new Redis(config[_0xe573('0xb')]));function emit(_0x4117fe,_0x50dd16,_0x46070a){io['to'](_0x4117fe)[_0xe573('0xd')](_0x50dd16,_0x46070a);}function getTicket(_0x5dade0,_0xc1a57d,_0x417789,_0x368088,_0xbfc97c,_0x59ee7c,_0x20f225,_0x45cf64){var _0x268644=Object['assign']({},{'OwnerId':_0xc1a57d['id'],'Subject':intUtil[_0xe573('0xe')](_0x368088[_0xe573('0xf')],_0xbfc97c,'\x20'),'Description':intUtil[_0xe573('0xe')](_0x368088[_0xe573('0x10')],_0xbfc97c,'\x0a')},getCustomFields(_0x59ee7c,_0xbfc97c));if(_0x417789){if(_0x368088['ticketType']==='Task'){_0x268644[_0xe573('0x11')]=moment[_0xe573('0x12')]();_0x268644[_0xe573('0x13')]=![];_0x268644[_0xe573('0x14')]=![];if(_0x417789['endUserType']===_0xe573('0x15')||_0x417789[_0xe573('0x16')]===_0xe573('0x17')){_0x268644[_0xe573('0x18')]=_0x417789['id'];}else if(_0x417789[_0xe573('0x16')]===_0xe573('0x19')){_0x268644['WhatId']=_0x417789['id'];}}else if(_0x368088[_0xe573('0x1a')]===_0xe573('0x1b')){if(_0x417789['endUserType']===_0xe573('0x15')){_0x268644[_0xe573('0x1c')]=_0x417789['id'];}else if(_0x417789[_0xe573('0x16')]===_0xe573('0x19')){_0x268644[_0xe573('0x1d')]=_0x417789['id'];}else if(_0x417789['endUserType']===_0xe573('0x17')&&_0x368088[_0xe573('0x1e')]){_0x268644[_0x368088[_0xe573('0x1e')]]=_0x417789['id'];}else{logger[_0xe573('0x1f')](_0xe573('0x20'));}}}return _0x20f225['sobject'](_0x368088['ticketType'])['create'](_0x268644);}function getUser(_0x2c5065,_0x592254,_0x200a3d){if(!_[_0xe573('0x21')](_0x592254)&&intUtil[_0xe573('0x22')](_0x592254)){var _0x2a9f1d={'Email':_0x592254};var _0x5c9252={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0x200a3d[_0xe573('0x23')](_0xe573('0x24'))['find'](_0x2a9f1d,_0x5c9252)[_0xe573('0x25')]()[_0xe573('0x26')](function(_0x361c4b){if(_0x361c4b[_0xe573('0x27')]){var _0xad306b=_[_0xe573('0x28')](_0x361c4b,function(_0x4c96c9){return _0x4c96c9['Email']===_0x592254;});if(_0xad306b){logger[_0xe573('0x1f')](_0xe573('0x29'),_0x592254);return BPromise[_0xe573('0x2a')]({'id':_0xad306b['Id'],'name':_0xad306b['Name']});}}else{logger[_0xe573('0x1f')](_0xe573('0x2b'),_0x592254);return _0x200a3d[_0xe573('0x2c')]()[_0xe573('0x26')](function(_0x50d6f0){return BPromise[_0xe573('0x2a')]({'id':_0x50d6f0[_0xe573('0x2d')],'name':_0x50d6f0['display_name']});});}});}else{logger[_0xe573('0x1f')](_0xe573('0x2b'),_0x592254);return _0x200a3d[_0xe573('0x2c')]()['then'](function(_0x3df370){return BPromise[_0xe573('0x2a')]({'id':_0x3df370[_0xe573('0x2d')],'name':_0x3df370['display_name']});});}}function getEndUser(_0xd2f08d,_0x2f4444,_0x1a8e3f,_0x5dbcbe,_0x40f51a){var _0x696d86={'$or':{'Phone':_0x5dbcbe}};var _0x17ef68={'Id':!![],'Name':!![],'Phone':!![]};return BPromise[_0xe573('0x2a')]()[_0xe573('0x26')](function(){logger[_0xe573('0x1f')](_0xe573('0x2e'),_0x5dbcbe,_0x2f4444[_0xe573('0x2f')]);switch(_0x2f4444[_0xe573('0x2f')]){case _0xe573('0x30'):var _0xd3be90=_[_0xe573('0x31')](_0x696d86);if(_0x2f4444['additionalSearchContact']){var _0x3c5d48={};_0x3c5d48[_0x2f4444['additionalSearchContact']]=_0x5dbcbe;_['merge'](_0xd3be90[_0xe573('0x32')],_0x3c5d48);}return _0x40f51a[_0xe573('0x23')](_0xe573('0x33'))['find'](_0xd3be90,_0x17ef68)[_0xe573('0x25')]()[_0xe573('0x26')](function(_0x24bf4a){if(_0x24bf4a&&_0x24bf4a[_0xe573('0x27')]){return _0x24bf4a;}else{var _0x2c9d70=_[_0xe573('0x31')](_0x696d86);if(_0x2f4444[_0xe573('0x34')]){var _0x20bedc={};_0x20bedc[_0x2f4444[_0xe573('0x34')]]=_0x5dbcbe;_['merge'](_0x2c9d70[_0xe573('0x32')],_0x20bedc);}return _0x40f51a[_0xe573('0x23')](_0xe573('0x35'))[_0xe573('0x28')](_0x2c9d70,_0x17ef68);}});case _0xe573('0x36'):var _0x4c2ac5=_[_0xe573('0x31')](_0x696d86);if(_0x2f4444[_0xe573('0x37')]){var _0x3c5d48={};_0x3c5d48[_0x2f4444[_0xe573('0x37')]]=_0x5dbcbe;_[_0xe573('0x38')](_0x4c2ac5[_0xe573('0x32')],_0x3c5d48);}return _0x40f51a['sobject'](_0xe573('0x39'))[_0xe573('0x28')](_0x4c2ac5,_0x17ef68)['execute']()[_0xe573('0x26')](function(_0x17b58e){if(_0x17b58e&&_0x17b58e[_0xe573('0x27')]){return _0x17b58e;}else{var _0x50f442=_['cloneDeep'](_0x696d86);if(_0x2f4444[_0xe573('0x3a')]){var _0x3a83f0={};_0x3a83f0[_0x2f4444[_0xe573('0x3a')]]=_0x5dbcbe;_['merge'](_0x50f442[_0xe573('0x32')],_0x3a83f0);}return _0x40f51a[_0xe573('0x23')]('Contact')[_0xe573('0x28')](_0x50f442,_0x17ef68)[_0xe573('0x26')](function(_0x3c9f5b){if(_0x3c9f5b&&_0x3c9f5b[_0xe573('0x27')]){return _0x3c9f5b;}else{var _0x560b7f=_['cloneDeep'](_0x696d86);if(_0x2f4444[_0xe573('0x34')]){var _0x457896={};_0x457896[_0x2f4444['additionalSearchLead']]=_0x5dbcbe;_[_0xe573('0x38')](_0x560b7f[_0xe573('0x32')],_0x457896);}return _0x40f51a[_0xe573('0x23')](_0xe573('0x35'))[_0xe573('0x28')](_0x560b7f,_0x17ef68);}});}});case _0xe573('0x15'):var _0xd3be90=_[_0xe573('0x31')](_0x696d86);if(_0x2f4444['additionalSearchContact']){var _0x3c5d48={};_0x3c5d48[_0x2f4444[_0xe573('0x3a')]]=_0x5dbcbe;_['merge'](_0xd3be90['$or'],_0x3c5d48);}return _0x40f51a[_0xe573('0x23')]('Contact')[_0xe573('0x28')](_0xd3be90,_0x17ef68)[_0xe573('0x25')]();case'lead':var _0xb76374=_[_0xe573('0x31')](_0x696d86);if(_0x2f4444['additionalSearchLead']){var _0x3c5d48={};_0x3c5d48[_0x2f4444[_0xe573('0x34')]]=_0x5dbcbe;_['merge'](_0xb76374[_0xe573('0x32')],_0x3c5d48);}return _0x40f51a[_0xe573('0x23')](_0xe573('0x35'))[_0xe573('0x28')](_0xb76374,_0x17ef68);case _0xe573('0x19'):var _0x4c2ac5=_[_0xe573('0x31')](_0x696d86);if(_0x2f4444[_0xe573('0x37')]){var _0x3c5d48={};_0x3c5d48[_0x2f4444[_0xe573('0x37')]]=_0x5dbcbe;_[_0xe573('0x38')](_0x4c2ac5[_0xe573('0x32')],_0x3c5d48);}return _0x40f51a[_0xe573('0x23')](_0xe573('0x39'))['find'](_0x4c2ac5,_0x17ef68);default:return null;}})[_0xe573('0x26')](function(_0x568b8d){if(_0x568b8d&&_0x568b8d[_0xe573('0x27')]){var _0x392a6b=_[_0xe573('0x3b')](_0x568b8d);if(_0x392a6b){return BPromise[_0xe573('0x2a')]({'id':_0x392a6b['Id'],'name':_0x392a6b[_0xe573('0x3c')],'phone':_0x392a6b[_0xe573('0x3d')],'endUserType':_0x392a6b[_0xe573('0x3e')][_0xe573('0x3f')][_0xe573('0x40')]()});}}})[_0xe573('0x26')](function(_0x11007a){if(_0x11007a){logger[_0xe573('0x1f')](_0xe573('0x41'),_0x11007a[_0xe573('0x16')],_0x5dbcbe);return BPromise[_0xe573('0x2a')](_0x11007a);}else{logger[_0xe573('0x1f')]('Enduser\x20with\x20phone\x20%s\x20not\x20found',_0x5dbcbe);var _0x35e7c8={'Phone':_0x5dbcbe};if(_0x2f4444[_0xe573('0x42')]){if(_0x2f4444['moduleCreate']===_0xe573('0x15')){logger[_0xe573('0x1f')](_0xe573('0x43'),_0x5dbcbe,_0x2f4444[_0xe573('0x42')]);_0x35e7c8[_0xe573('0x44')]=_0x1a8e3f!==_0xe573('0x45')?_0x1a8e3f:util['format']('Caller\x20-\x20%s',_0x5dbcbe);}else if(_0x2f4444['moduleCreate']==='lead'){logger[_0xe573('0x1f')](_0xe573('0x43'),_0x5dbcbe,_0x2f4444[_0xe573('0x42')]);_0x35e7c8[_0xe573('0x44')]=_0x1a8e3f!==_0xe573('0x45')?_0x1a8e3f:util[_0xe573('0x46')](_0xe573('0x47'),_0x5dbcbe);_0x35e7c8[_0xe573('0x48')]='No\x20Company';}else if(_0x2f4444['moduleCreate']===_0xe573('0x19')){logger[_0xe573('0x1f')]('Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.',_0x5dbcbe,_0x2f4444[_0xe573('0x42')]);_0x35e7c8[_0xe573('0x3c')]=_0x1a8e3f!==_0xe573('0x45')?_0x1a8e3f:util[_0xe573('0x46')](_0xe573('0x47'),_0x5dbcbe);}else{return null;}}return _0x40f51a[_0xe573('0x23')](_[_0xe573('0x49')](_0x2f4444[_0xe573('0x42')]))[_0xe573('0x4a')](_0x35e7c8)[_0xe573('0x26')](function(_0x467171){return BPromise[_0xe573('0x2a')]({'id':_0x467171['id'],'endUserType':_0x2f4444[_0xe573('0x42')]});});}});}function getCustomFields(_0x5bd19b,_0x1fd613){var _0x1261b2={};if(_0x5bd19b[_0xe573('0x27')]>0x0){_[_0xe573('0x4b')](_0x5bd19b,function(_0x4a4b47){if(_[_0xe573('0x4c')]([_0xe573('0x4d'),_0xe573('0x4e')],_0x4a4b47['type'])&&_0x4a4b47['idField']){_0x1261b2[_0x4a4b47['idField']]=_0x4a4b47['content']['toString']();}else if(_0x4a4b47[_0xe573('0x3f')]===_0xe573('0x4f')&&_0x4a4b47['variableName']&&_0x4a4b47[_0xe573('0x50')]){_0x1fd613[_0x4a4b47[_0xe573('0x51')]]&&(_0x1261b2[_0x4a4b47[_0xe573('0x50')]]=_0x1fd613[_0x4a4b47[_0xe573('0x51')]][_0xe573('0x52')]());}else if(_0x4a4b47['type']===_0xe573('0x53')&&_0x4a4b47[_0xe573('0x54')]&&_0x4a4b47[_0xe573('0x54')][_0xe573('0x55')]&&_0x4a4b47[_0xe573('0x50')]){_0x1fd613[_0x4a4b47[_0xe573('0x54')][_0xe573('0x55')][_0xe573('0x40')]()]&&(_0x1261b2[_0x4a4b47[_0xe573('0x50')]]=_0x1fd613[_0x4a4b47['Variable'][_0xe573('0x55')][_0xe573('0x40')]()][_0xe573('0x52')]());}});}return _0x1261b2;}function getConnection(_0x3d9510){var _0x45bf66=_0x3d9510['password'][_0xe573('0x56')](_0x3d9510['securityToken']);var _0x2d1852=new jsforce['Connection']({'oauth2':{'loginUrl':_0x3d9510[_0xe573('0x57')]||_0xe573('0x58'),'clientId':_0x3d9510[_0xe573('0x59')],'clientSecret':_0x3d9510[_0xe573('0x5a')]}});return _0x2d1852[_0xe573('0x5b')](_0x3d9510['username'],_0x45bf66)['then'](function(){logger['info'](_0xe573('0x5c'));return _0x2d1852;});}exports['queue']=function(_0x2013da,_0x1bb7f7,_0x5c2561,_0xa9542c,_0xe635c,_0x5ea361){var _0x4c595a,_0x441b5e,_0x55f6d0,_0x2c525d;_0x5ea361[_0xe573('0x5d')]=intUtil[_0xe573('0x5e')](_0x5ea361['serverUrl']);_0x5ea361['remoteUri']=intUtil[_0xe573('0x5e')](_0x5ea361[_0xe573('0x57')]);if(_0xe635c&&_0xe635c[_0xe573('0x5f')]){logger[_0xe573('0x1f')]('[QUEUE]',_0xe573('0x60'));_0x1bb7f7[_0xe573('0x61')]=util[_0xe573('0x46')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x5ea361[_0xe573('0x5d')],_0x1bb7f7['uniqueid'],md5(_0x1bb7f7[_0xe573('0x62')]));}else{_0x1bb7f7[_0xe573('0x61')]='';}return getConnection(_0x5ea361)[_0xe573('0x26')](function(_0x1f3f93){_0x2c525d=_0x1f3f93;return getUser(_0x5ea361,_0xa9542c['email'],_0x2c525d);})[_0xe573('0x26')](function(_0x978b21){_0x4c595a=_0x978b21;return getEndUser(_0x5ea361,_0x5c2561,_0x1bb7f7['calleridname'],_0x1bb7f7[_0xe573('0x63')],_0x2c525d);})[_0xe573('0x26')](function(_0x3ba04d){_0x441b5e=_0x3ba04d;return getTicket(_0x5ea361,_0x4c595a,_0x441b5e,_0x5c2561,_0x1bb7f7,_0x5c2561['Fields'],_0x2c525d,_0xe573('0x64'));})[_0xe573('0x26')](function(_0x398d33){_0x55f6d0=_0x398d33;logger['info'](_0xe573('0x65'),_0x55f6d0['id']);logger[_0xe573('0x1f')](_0xe573('0x66'),_0x55f6d0['id'],_0xa9542c[_0xe573('0x55')],_0x5ea361['type']);switch(_0x5ea361['type']){case'integrationTab':emit(util[_0xe573('0x46')]('user:%s',_0xa9542c[_0xe573('0x55')]),_0xe573('0x67'),{'recordId':_0x55f6d0['id']});break;case'newTab':emit(util[_0xe573('0x46')](_0xe573('0x68'),_0xa9542c[_0xe573('0x55')]),_0xe573('0x69'),{'uri':util['format'](_0xe573('0x6a'),_0x2c525d[_0xe573('0x6b')],_0x55f6d0['id'])});break;default:logger[_0xe573('0x6c')](_0xe573('0x6d'));}})['catch'](function(_0x4b01ce){logger[_0xe573('0x6c')](_0xe573('0x6e'),_0x4b01ce);});};exports[_0xe573('0x6f')]=function(_0x151bb0,_0x4a9076,_0x57229c,_0x306d57,_0x21f752,_0x505ff0,_0x2b3eaa){var _0x4ff6cf,_0x24156d,_0x282d81,_0x3cff70;_0x505ff0['serverUrl']=intUtil['stripTrailingSlash'](_0x505ff0['serverUrl']);_0x505ff0[_0xe573('0x57')]=intUtil[_0xe573('0x5e')](_0x505ff0['remoteUri']);if(_0x2b3eaa&&_0x2b3eaa['recordingFormat']&&_0x2b3eaa[_0xe573('0x70')]!=='none'){logger[_0xe573('0x1f')](_0xe573('0x71'),_0xe573('0x60'));_0x4a9076[_0xe573('0x61')]=util[_0xe573('0x46')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x505ff0[_0xe573('0x5d')],_0x4a9076[_0xe573('0x62')],md5(_0x4a9076['uniqueid']));}return getConnection(_0x505ff0)[_0xe573('0x26')](function(_0x47fa1d){_0x3cff70=_0x47fa1d;return getUser(_0x505ff0,_0x306d57[_0xe573('0x72')],_0x3cff70);})['then'](function(_0x268dc8){_0x4ff6cf=_0x268dc8;return getEndUser(_0x505ff0,_0x57229c,_0x4a9076[_0xe573('0x73')],_0x4a9076[_0xe573('0x74')],_0x3cff70);})[_0xe573('0x26')](function(_0x2409eb){_0x24156d=_0x2409eb;return getTicket(_0x505ff0,_0x4ff6cf,_0x24156d,_0x57229c,_0x4a9076,_0x57229c[_0xe573('0x75')],_0x3cff70,_0xe573('0x6f'));})[_0xe573('0x26')](function(_0x445afa){_0x282d81=_0x445afa;logger['info'](_0xe573('0x76'),_0x282d81['id']);logger[_0xe573('0x1f')]('[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.',_0x282d81['id'],_0x306d57['name'],_0x505ff0[_0xe573('0x3f')]);switch(_0x505ff0[_0xe573('0x3f')]){case _0xe573('0x77'):emit(util['format'](_0xe573('0x68'),_0x306d57[_0xe573('0x55')]),'trigger:salesforce:display',{'recordId':_0x282d81['id']});break;case'newTab':emit(util[_0xe573('0x46')](_0xe573('0x68'),_0x306d57[_0xe573('0x55')]),_0xe573('0x69'),{'uri':util[_0xe573('0x46')](_0xe573('0x6a'),_0x3cff70['instanceUrl'],_0x282d81['id'])});break;default:logger[_0xe573('0x6c')](_0xe573('0x71'),_0xe573('0x78'));}})[_0xe573('0x79')](function(_0x180096){logger[_0xe573('0x6c')](_0xe573('0x71'),_0x180096);});};exports['unmanaged']=function(_0x3bf3b1,_0x52d701,_0x2cd2f6,_0x2b4a5e,_0x45e1f3,_0x506d6b){var _0x5a3039,_0x35b618,_0x44d582,_0x45df88;_0x506d6b[_0xe573('0x5d')]=intUtil['stripTrailingSlash'](_0x506d6b[_0xe573('0x5d')]);_0x506d6b[_0xe573('0x57')]=intUtil[_0xe573('0x5e')](_0x506d6b[_0xe573('0x57')]);if(_0x45e1f3&&_0x45e1f3['monitor_format']){logger[_0xe573('0x1f')]('['+_0x52d701[_0xe573('0x7a')][_0xe573('0x7b')]()+']','Recording\x20is\x20enabled!');_0x52d701[_0xe573('0x61')]=util[_0xe573('0x46')](_0xe573('0x7c'),_0x506d6b[_0xe573('0x5d')],_0x52d701[_0xe573('0x62')],md5(_0x52d701[_0xe573('0x62')]));}else{_0x52d701['recordingURL']='';}return getConnection(_0x506d6b)[_0xe573('0x26')](function(_0x5475ca){_0x45df88=_0x5475ca;if(!_[_0xe573('0x21')](_0x2b4a5e)){return getUser(_0x506d6b,_0x2b4a5e['name'],_0x45df88);}else{return getUser(_0x506d6b,null,_0x45df88);}})[_0xe573('0x26')](function(_0x2c7504){_0x5a3039=_0x2c7504;return getEndUser(_0x506d6b,_0x2cd2f6,_0x52d701['calleridname'],_0x52d701[_0xe573('0x63')],_0x45df88);})[_0xe573('0x26')](function(_0x58e62c){_0x35b618=_0x58e62c;return getTicket(_0x506d6b,_0x5a3039,_0x35b618,_0x2cd2f6,_0x52d701,_0x2cd2f6[_0xe573('0x75')],_0x45df88);})[_0xe573('0x26')](function(_0xee8ece){_0x44d582=_0xee8ece;logger[_0xe573('0x1f')]('['+_0x52d701[_0xe573('0x7a')]['toUpperCase']()+_0xe573('0x7d'),_0x44d582['id']);logger[_0xe573('0x1f')]('['+_0x52d701['lastevent'][_0xe573('0x7b')]()+_0xe573('0x7e'),_0x506d6b[_0xe573('0x3f')]);})[_0xe573('0x79')](function(_0x16043a){logger[_0xe573('0x6c')]('['+_0x52d701[_0xe573('0x7a')][_0xe573('0x7b')]()+']',_0x16043a);});};
\ No newline at end of file
+var _0x4248=['error','[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.','catch','outbound','recordingFormat','[OUTBOUND]','destcalleridname','destcalleridnum','Fields','[OUTBOUND]\x20Ticket\x20%s\x20created.','[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','Salesforce\x20account\x20type\x20not\x20recognized','unmanaged','lastevent','toUpperCase',']\x20Ticket\x20%s\x20created.','lodash','request-promise','bluebird','md5','jsforce','ioredis','./util','salesforce','redis','defaults','localhost','socket.io-emitter','emit','getString','Descriptions','ticketType','ActivityDate','utc','IsReminderSet','endUserType','contact','lead','WhoId','account','WhatId','Case','ContactId','AccountId','leadId','Association\x20between\x20Case\x20and\x20Lead\x20skipped','sobject','create','isNil','validateEmail','find','then','length','Email','Agent\x20%s\x20found.','resolve','info','Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.','identity','user_id','display_name','Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.','moduleSearch','additionalSearchContact','merge','Contact','execute','cloneDeep','additionalSearchLead','$or','Lead','additionalSearchAccount','Account','first','Name','Phone','attributes','type','moduleCreate','Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.','LastName','<unknown>','format','Caller\x20-\x20%s','Company','No\x20Company','forEach','includes','string','picklist','idField','content','variable','variableName','toString','Variable','name','toLowerCase','password','Connection','remoteUri','https://login.salesforce.com','clientId','clientSecret','login','username','Connection\x20established.','queue','serverUrl','stripTrailingSlash','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','email','calleridnum','[QUEUE]\x20Ticket\x20%s\x20created','[QUEUE]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','user:%s','trigger:salesforce:display','newTab','trigger:browser:url','%s/%s/e','instanceUrl'];(function(_0xb52c77,_0x59bb40){var _0x53dd09=function(_0x816b1a){while(--_0x816b1a){_0xb52c77['push'](_0xb52c77['shift']());}};_0x53dd09(++_0x59bb40);}(_0x4248,0x8e));var _0x8424=function(_0x58321f,_0x5730b9){_0x58321f=_0x58321f-0x0;var _0x3728ea=_0x4248[_0x58321f];return _0x3728ea;};'use strict';var _=require(_0x8424('0x0'));var rp=require(_0x8424('0x1'));var moment=require('moment');var BPromise=require(_0x8424('0x2'));var md5=require(_0x8424('0x3'));var jsforce=require(_0x8424('0x4'));var util=require('util');var Redis=require(_0x8424('0x5'));var intUtil=require(_0x8424('0x6'));var config=require('../../../../config/environment');var logger=require('../../../../config/logger')(_0x8424('0x7'));config[_0x8424('0x8')]=_[_0x8424('0x9')](config['redis'],{'host':_0x8424('0xa'),'port':0x18eb});var io=require(_0x8424('0xb'))(new Redis(config[_0x8424('0x8')]));function emit(_0x4af963,_0x48b673,_0x165496){io['to'](_0x4af963)[_0x8424('0xc')](_0x48b673,_0x165496);}function getTicket(_0xfe8b21,_0x40754a,_0x236ce1,_0x181ce2,_0x4d0a2a,_0x48e6ee,_0x3f135f,_0x448891){var _0x2c75fd=Object['assign']({},{'OwnerId':_0x40754a['id'],'Subject':intUtil[_0x8424('0xd')](_0x181ce2['Subjects'],_0x4d0a2a,'\x20'),'Description':intUtil['getString'](_0x181ce2[_0x8424('0xe')],_0x4d0a2a,'\x0a')},getCustomFields(_0x48e6ee,_0x4d0a2a));if(_0x236ce1){if(_0x181ce2[_0x8424('0xf')]==='Task'){_0x2c75fd[_0x8424('0x10')]=moment[_0x8424('0x11')]();_0x2c75fd[_0x8424('0x12')]=![];_0x2c75fd['IsRecurrence']=![];if(_0x236ce1[_0x8424('0x13')]===_0x8424('0x14')||_0x236ce1[_0x8424('0x13')]===_0x8424('0x15')){_0x2c75fd[_0x8424('0x16')]=_0x236ce1['id'];}else if(_0x236ce1['endUserType']===_0x8424('0x17')){_0x2c75fd[_0x8424('0x18')]=_0x236ce1['id'];}}else if(_0x181ce2[_0x8424('0xf')]===_0x8424('0x19')){if(_0x236ce1[_0x8424('0x13')]==='contact'){_0x2c75fd[_0x8424('0x1a')]=_0x236ce1['id'];}else if(_0x236ce1['endUserType']===_0x8424('0x17')){_0x2c75fd[_0x8424('0x1b')]=_0x236ce1['id'];}else if(_0x236ce1['endUserType']==='lead'&&_0x181ce2[_0x8424('0x1c')]){_0x2c75fd[_0x181ce2[_0x8424('0x1c')]]=_0x236ce1['id'];}else{logger['info'](_0x8424('0x1d'));}}}return _0x3f135f[_0x8424('0x1e')](_0x181ce2[_0x8424('0xf')])[_0x8424('0x1f')](_0x2c75fd);}function getUser(_0x18400d,_0x14f503,_0x3fef0e){if(!_[_0x8424('0x20')](_0x14f503)&&intUtil[_0x8424('0x21')](_0x14f503)){var _0x704903={'Email':_0x14f503};var _0x210f92={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0x3fef0e['sobject']('User')[_0x8424('0x22')](_0x704903,_0x210f92)['execute']()[_0x8424('0x23')](function(_0x5b0912){if(_0x5b0912[_0x8424('0x24')]){var _0x59f5f1=_[_0x8424('0x22')](_0x5b0912,function(_0x1b3bc9){return _0x1b3bc9[_0x8424('0x25')]===_0x14f503;});if(_0x59f5f1){logger['info'](_0x8424('0x26'),_0x14f503);return BPromise[_0x8424('0x27')]({'id':_0x59f5f1['Id'],'name':_0x59f5f1['Name']});}}else{logger[_0x8424('0x28')](_0x8424('0x29'),_0x14f503);return _0x3fef0e[_0x8424('0x2a')]()[_0x8424('0x23')](function(_0x4ebe74){return BPromise[_0x8424('0x27')]({'id':_0x4ebe74[_0x8424('0x2b')],'name':_0x4ebe74['display_name']});});}});}else{logger[_0x8424('0x28')](_0x8424('0x29'),_0x14f503);return _0x3fef0e[_0x8424('0x2a')]()['then'](function(_0x40eac2){return BPromise[_0x8424('0x27')]({'id':_0x40eac2[_0x8424('0x2b')],'name':_0x40eac2[_0x8424('0x2c')]});});}}function getEndUser(_0x2c14b3,_0x541dab,_0x1497cc,_0x41b2b3,_0xb85f03){var _0x528c29={'$or':{'Phone':_0x41b2b3}};var _0x434040={'Id':!![],'Name':!![],'Phone':!![]};return BPromise[_0x8424('0x27')]()[_0x8424('0x23')](function(){logger[_0x8424('0x28')](_0x8424('0x2d'),_0x41b2b3,_0x541dab[_0x8424('0x2e')]);switch(_0x541dab[_0x8424('0x2e')]){case'contact_lead':var _0x12a884=_['cloneDeep'](_0x528c29);if(_0x541dab[_0x8424('0x2f')]){var _0x14fff8={};_0x14fff8[_0x541dab[_0x8424('0x2f')]]=_0x41b2b3;_[_0x8424('0x30')](_0x12a884['$or'],_0x14fff8);}return _0xb85f03[_0x8424('0x1e')](_0x8424('0x31'))['find'](_0x12a884,_0x434040)[_0x8424('0x32')]()[_0x8424('0x23')](function(_0x2e6ee8){if(_0x2e6ee8&&_0x2e6ee8['length']){return _0x2e6ee8;}else{var _0x359fa0=_[_0x8424('0x33')](_0x528c29);if(_0x541dab[_0x8424('0x34')]){var _0x494805={};_0x494805[_0x541dab['additionalSearchLead']]=_0x41b2b3;_[_0x8424('0x30')](_0x359fa0[_0x8424('0x35')],_0x494805);}return _0xb85f03[_0x8424('0x1e')](_0x8424('0x36'))[_0x8424('0x22')](_0x359fa0,_0x434040);}});case'account_contact_lead':var _0xea5e1e=_[_0x8424('0x33')](_0x528c29);if(_0x541dab[_0x8424('0x37')]){var _0x14fff8={};_0x14fff8[_0x541dab[_0x8424('0x37')]]=_0x41b2b3;_[_0x8424('0x30')](_0xea5e1e[_0x8424('0x35')],_0x14fff8);}return _0xb85f03[_0x8424('0x1e')]('Account')['find'](_0xea5e1e,_0x434040)[_0x8424('0x32')]()[_0x8424('0x23')](function(_0x143274){if(_0x143274&&_0x143274[_0x8424('0x24')]){return _0x143274;}else{var _0xc6eb28=_[_0x8424('0x33')](_0x528c29);if(_0x541dab[_0x8424('0x2f')]){var _0x20eb84={};_0x20eb84[_0x541dab[_0x8424('0x2f')]]=_0x41b2b3;_[_0x8424('0x30')](_0xc6eb28[_0x8424('0x35')],_0x20eb84);}return _0xb85f03['sobject'](_0x8424('0x31'))['find'](_0xc6eb28,_0x434040)[_0x8424('0x23')](function(_0x16e14e){if(_0x16e14e&&_0x16e14e[_0x8424('0x24')]){return _0x16e14e;}else{var _0x43278c=_['cloneDeep'](_0x528c29);if(_0x541dab[_0x8424('0x34')]){var _0x4fd3ba={};_0x4fd3ba[_0x541dab[_0x8424('0x34')]]=_0x41b2b3;_[_0x8424('0x30')](_0x43278c[_0x8424('0x35')],_0x4fd3ba);}return _0xb85f03['sobject']('Lead')[_0x8424('0x22')](_0x43278c,_0x434040);}});}});case'contact':var _0x12a884=_[_0x8424('0x33')](_0x528c29);if(_0x541dab[_0x8424('0x2f')]){var _0x14fff8={};_0x14fff8[_0x541dab[_0x8424('0x2f')]]=_0x41b2b3;_[_0x8424('0x30')](_0x12a884['$or'],_0x14fff8);}return _0xb85f03[_0x8424('0x1e')](_0x8424('0x31'))[_0x8424('0x22')](_0x12a884,_0x434040)[_0x8424('0x32')]();case'lead':var _0xef408b=_['cloneDeep'](_0x528c29);if(_0x541dab['additionalSearchLead']){var _0x14fff8={};_0x14fff8[_0x541dab[_0x8424('0x34')]]=_0x41b2b3;_['merge'](_0xef408b[_0x8424('0x35')],_0x14fff8);}return _0xb85f03[_0x8424('0x1e')]('Lead')['find'](_0xef408b,_0x434040);case'account':var _0xea5e1e=_[_0x8424('0x33')](_0x528c29);if(_0x541dab[_0x8424('0x37')]){var _0x14fff8={};_0x14fff8[_0x541dab[_0x8424('0x37')]]=_0x41b2b3;_[_0x8424('0x30')](_0xea5e1e[_0x8424('0x35')],_0x14fff8);}return _0xb85f03[_0x8424('0x1e')](_0x8424('0x38'))[_0x8424('0x22')](_0xea5e1e,_0x434040);default:return null;}})['then'](function(_0x38b2aa){if(_0x38b2aa&&_0x38b2aa[_0x8424('0x24')]){var _0x464230=_[_0x8424('0x39')](_0x38b2aa);if(_0x464230){return BPromise['resolve']({'id':_0x464230['Id'],'name':_0x464230[_0x8424('0x3a')],'phone':_0x464230[_0x8424('0x3b')],'endUserType':_0x464230[_0x8424('0x3c')][_0x8424('0x3d')]['toLowerCase']()});}}})[_0x8424('0x23')](function(_0x5dc4bb){if(_0x5dc4bb){logger[_0x8424('0x28')]('Enduser\x20(%s)\x20with\x20phone\x20%s\x20found',_0x5dc4bb[_0x8424('0x13')],_0x41b2b3);return BPromise[_0x8424('0x27')](_0x5dc4bb);}else{logger[_0x8424('0x28')]('Enduser\x20with\x20phone\x20%s\x20not\x20found',_0x41b2b3);var _0x34bcaa={'Phone':_0x41b2b3};if(_0x541dab['moduleCreate']){if(_0x541dab[_0x8424('0x3e')]===_0x8424('0x14')){logger[_0x8424('0x28')](_0x8424('0x3f'),_0x41b2b3,_0x541dab[_0x8424('0x3e')]);_0x34bcaa[_0x8424('0x40')]=_0x1497cc!==_0x8424('0x41')?_0x1497cc:util[_0x8424('0x42')](_0x8424('0x43'),_0x41b2b3);}else if(_0x541dab[_0x8424('0x3e')]==='lead'){logger['info'](_0x8424('0x3f'),_0x41b2b3,_0x541dab['moduleCreate']);_0x34bcaa[_0x8424('0x40')]=_0x1497cc!=='<unknown>'?_0x1497cc:util[_0x8424('0x42')](_0x8424('0x43'),_0x41b2b3);_0x34bcaa[_0x8424('0x44')]=_0x8424('0x45');}else if(_0x541dab[_0x8424('0x3e')]===_0x8424('0x17')){logger['info']('Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.',_0x41b2b3,_0x541dab['moduleCreate']);_0x34bcaa[_0x8424('0x3a')]=_0x1497cc!==_0x8424('0x41')?_0x1497cc:util[_0x8424('0x42')]('Caller\x20-\x20%s',_0x41b2b3);}else{return null;}}return _0xb85f03[_0x8424('0x1e')](_['upperFirst'](_0x541dab['moduleCreate']))[_0x8424('0x1f')](_0x34bcaa)['then'](function(_0x443d0a){return BPromise[_0x8424('0x27')]({'id':_0x443d0a['id'],'endUserType':_0x541dab['moduleCreate']});});}});}function getCustomFields(_0x53f606,_0xf9875c){var _0x3da894={};if(_0x53f606[_0x8424('0x24')]>0x0){_[_0x8424('0x46')](_0x53f606,function(_0x44c812){if(_[_0x8424('0x47')]([_0x8424('0x48'),_0x8424('0x49')],_0x44c812[_0x8424('0x3d')])&&_0x44c812[_0x8424('0x4a')]){_0x3da894[_0x44c812[_0x8424('0x4a')]]=_0x44c812[_0x8424('0x4b')]['toString']();}else if(_0x44c812[_0x8424('0x3d')]===_0x8424('0x4c')&&_0x44c812[_0x8424('0x4d')]&&_0x44c812['idField']){_0xf9875c[_0x44c812[_0x8424('0x4d')]]&&(_0x3da894[_0x44c812[_0x8424('0x4a')]]=_0xf9875c[_0x44c812[_0x8424('0x4d')]][_0x8424('0x4e')]());}else if(_0x44c812[_0x8424('0x3d')]==='customVariable'&&_0x44c812[_0x8424('0x4f')]&&_0x44c812['Variable'][_0x8424('0x50')]&&_0x44c812[_0x8424('0x4a')]){_0xf9875c[_0x44c812[_0x8424('0x4f')][_0x8424('0x50')][_0x8424('0x51')]()]&&(_0x3da894[_0x44c812['idField']]=_0xf9875c[_0x44c812['Variable']['name'][_0x8424('0x51')]()]['toString']());}});}return _0x3da894;}function getConnection(_0x462fc9){var _0x51759c=_0x462fc9[_0x8424('0x52')]['concat'](_0x462fc9['securityToken']);var _0x5ae930=new jsforce[(_0x8424('0x53'))]({'oauth2':{'loginUrl':_0x462fc9[_0x8424('0x54')]||_0x8424('0x55'),'clientId':_0x462fc9[_0x8424('0x56')],'clientSecret':_0x462fc9[_0x8424('0x57')]}});return _0x5ae930[_0x8424('0x58')](_0x462fc9[_0x8424('0x59')],_0x51759c)[_0x8424('0x23')](function(){logger[_0x8424('0x28')](_0x8424('0x5a'));return _0x5ae930;});}exports[_0x8424('0x5b')]=function(_0xbb4db9,_0x53223b,_0x368784,_0x12b9e4,_0x3104b8,_0x137269){var _0x48a493,_0x546914,_0xd42bd1,_0x1a6e66;_0x137269[_0x8424('0x5c')]=intUtil[_0x8424('0x5d')](_0x137269[_0x8424('0x5c')]);_0x137269[_0x8424('0x54')]=intUtil['stripTrailingSlash'](_0x137269[_0x8424('0x54')]);if(_0x3104b8&&_0x3104b8[_0x8424('0x5e')]){logger[_0x8424('0x28')](_0x8424('0x5f'),_0x8424('0x60'));_0x53223b[_0x8424('0x61')]=util[_0x8424('0x42')](_0x8424('0x62'),_0x137269[_0x8424('0x5c')],_0x53223b[_0x8424('0x63')],md5(_0x53223b['uniqueid']));}else{_0x53223b[_0x8424('0x61')]='';}return getConnection(_0x137269)[_0x8424('0x23')](function(_0x2fe1f4){_0x1a6e66=_0x2fe1f4;return getUser(_0x137269,_0x12b9e4[_0x8424('0x64')],_0x1a6e66);})[_0x8424('0x23')](function(_0x135250){_0x48a493=_0x135250;return getEndUser(_0x137269,_0x368784,_0x53223b['calleridname'],_0x53223b[_0x8424('0x65')],_0x1a6e66);})[_0x8424('0x23')](function(_0x5fb264){_0x546914=_0x5fb264;return getTicket(_0x137269,_0x48a493,_0x546914,_0x368784,_0x53223b,_0x368784['Fields'],_0x1a6e66,_0x8424('0x5b'));})[_0x8424('0x23')](function(_0x310853){_0xd42bd1=_0x310853;logger['info'](_0x8424('0x66'),_0xd42bd1['id']);logger['info'](_0x8424('0x67'),_0xd42bd1['id'],_0x12b9e4['name'],_0x137269['type']);switch(_0x137269[_0x8424('0x3d')]){case'integrationTab':emit(util[_0x8424('0x42')](_0x8424('0x68'),_0x12b9e4[_0x8424('0x50')]),_0x8424('0x69'),{'recordId':_0xd42bd1['id']});break;case _0x8424('0x6a'):emit(util[_0x8424('0x42')](_0x8424('0x68'),_0x12b9e4[_0x8424('0x50')]),_0x8424('0x6b'),{'uri':util['format'](_0x8424('0x6c'),_0x1a6e66[_0x8424('0x6d')],_0xd42bd1['id'])});break;default:logger[_0x8424('0x6e')](_0x8424('0x6f'));}})[_0x8424('0x70')](function(_0x42b1f0){logger['error']('[QUEUE]',_0x42b1f0);});};exports[_0x8424('0x71')]=function(_0x5997e2,_0x520a07,_0x14f593,_0x506956,_0x5b6866,_0x3aee2d,_0x1bdf1a){var _0x30daf4,_0x4efb2e,_0x59e37b,_0x36460a;_0x3aee2d['serverUrl']=intUtil[_0x8424('0x5d')](_0x3aee2d['serverUrl']);_0x3aee2d['remoteUri']=intUtil[_0x8424('0x5d')](_0x3aee2d['remoteUri']);if(_0x1bdf1a&&_0x1bdf1a[_0x8424('0x72')]&&_0x1bdf1a['recordingFormat']!=='none'){logger[_0x8424('0x28')](_0x8424('0x73'),_0x8424('0x60'));_0x520a07[_0x8424('0x61')]=util[_0x8424('0x42')](_0x8424('0x62'),_0x3aee2d['serverUrl'],_0x520a07[_0x8424('0x63')],md5(_0x520a07[_0x8424('0x63')]));}return getConnection(_0x3aee2d)['then'](function(_0x23835f){_0x36460a=_0x23835f;return getUser(_0x3aee2d,_0x506956['email'],_0x36460a);})['then'](function(_0x5b1a03){_0x30daf4=_0x5b1a03;return getEndUser(_0x3aee2d,_0x14f593,_0x520a07[_0x8424('0x74')],_0x520a07[_0x8424('0x75')],_0x36460a);})[_0x8424('0x23')](function(_0x45a945){_0x4efb2e=_0x45a945;return getTicket(_0x3aee2d,_0x30daf4,_0x4efb2e,_0x14f593,_0x520a07,_0x14f593[_0x8424('0x76')],_0x36460a,_0x8424('0x71'));})[_0x8424('0x23')](function(_0x1ef396){_0x59e37b=_0x1ef396;logger[_0x8424('0x28')](_0x8424('0x77'),_0x59e37b['id']);logger[_0x8424('0x28')](_0x8424('0x78'),_0x59e37b['id'],_0x506956[_0x8424('0x50')],_0x3aee2d[_0x8424('0x3d')]);switch(_0x3aee2d['type']){case'integrationTab':emit(util['format']('user:%s',_0x506956[_0x8424('0x50')]),_0x8424('0x69'),{'recordId':_0x59e37b['id']});break;case _0x8424('0x6a'):emit(util[_0x8424('0x42')](_0x8424('0x68'),_0x506956['name']),'trigger:browser:url',{'uri':util[_0x8424('0x42')](_0x8424('0x6c'),_0x36460a[_0x8424('0x6d')],_0x59e37b['id'])});break;default:logger[_0x8424('0x6e')](_0x8424('0x73'),_0x8424('0x79'));}})['catch'](function(_0x1b2a70){logger[_0x8424('0x6e')]('[OUTBOUND]',_0x1b2a70);});};exports[_0x8424('0x7a')]=function(_0x287af4,_0x4a6079,_0x579a3a,_0x145ead,_0x41a5e5,_0x572b90){var _0x3f7665,_0x387fc0,_0x5bb0b6,_0x78bd30;_0x572b90[_0x8424('0x5c')]=intUtil['stripTrailingSlash'](_0x572b90['serverUrl']);_0x572b90[_0x8424('0x54')]=intUtil[_0x8424('0x5d')](_0x572b90[_0x8424('0x54')]);if(_0x41a5e5&&_0x41a5e5[_0x8424('0x5e')]){logger[_0x8424('0x28')]('['+_0x4a6079[_0x8424('0x7b')][_0x8424('0x7c')]()+']','Recording\x20is\x20enabled!');_0x4a6079[_0x8424('0x61')]=util[_0x8424('0x42')](_0x8424('0x62'),_0x572b90[_0x8424('0x5c')],_0x4a6079[_0x8424('0x63')],md5(_0x4a6079[_0x8424('0x63')]));}else{_0x4a6079['recordingURL']='';}return getConnection(_0x572b90)['then'](function(_0x3d26c9){_0x78bd30=_0x3d26c9;if(!_[_0x8424('0x20')](_0x145ead)){return getUser(_0x572b90,_0x145ead[_0x8424('0x50')],_0x78bd30);}else{return getUser(_0x572b90,null,_0x78bd30);}})[_0x8424('0x23')](function(_0xff5fee){_0x3f7665=_0xff5fee;return getEndUser(_0x572b90,_0x579a3a,_0x4a6079['calleridname'],_0x4a6079[_0x8424('0x65')],_0x78bd30);})[_0x8424('0x23')](function(_0x1b016a){_0x387fc0=_0x1b016a;return getTicket(_0x572b90,_0x3f7665,_0x387fc0,_0x579a3a,_0x4a6079,_0x579a3a[_0x8424('0x76')],_0x78bd30);})[_0x8424('0x23')](function(_0x431eff){_0x5bb0b6=_0x431eff;logger[_0x8424('0x28')]('['+_0x4a6079['lastevent'][_0x8424('0x7c')]()+_0x8424('0x7d'),_0x5bb0b6['id']);logger[_0x8424('0x28')]('['+_0x4a6079[_0x8424('0x7b')][_0x8424('0x7c')]()+']\x20Integration\x20account\x20type\x20%s.',_0x572b90[_0x8424('0x3d')]);})[_0x8424('0x70')](function(_0x1c7d8b){logger[_0x8424('0x6e')]('['+_0x4a6079['lastevent'][_0x8424('0x7c')]()+']',_0x1c7d8b);});};
\ No newline at end of file
index ea52fe8..8732cf1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x840a=['GET','then','result','length','adminId','sys_id','info','],\x20getAdminUser\x20crm','catch','error','toUpperCase','message','],\x20getUser\x20input\x20crm','validateEmail','sys_user?sysparm_query=email%3D','],\x20getUser\x20rp\x20obj','active','userEmail','adminEmail','],\x20getUser\x20crm','],\x20createEndUser\x20input\x20crm','sys_user?','endUserNumber','user','true','],\x20EndUser\x20schema','endUserId','],\x20getEndUser\x20input\x20crm','],\x20getEndUser\x20crm','forEach','string','picklist','type','nameField','toLowerCase','content','toString','includes','idField','customField','variableName','customVariable','Variable','name',']\x20getTicket\x20input\x20crm','outbound','userId','incident','assign','Subjects','Descriptions','Fields',']\x20POST\x20incident\x20entity\x20schema','ticketId','ticketNumber','number','POST','label','?sysparm_query=name%3D','label_entry','Incident','Incident\x20-\x20','all',']\x20arrayPromises:\x20IDs\x20in\x20table\x20label','push','Tags','map','%26sysparm_record_target%3Dincident','%26sysparm_record_row%3D1%26sysparm_record_rows%3D39','%26sysparm_record_list%3Dactive%253Dtrue','%255EORDERBYDESCnumber','/nav_to.do?uri=incident.do?sys_id%3D','format','user:%s','emit','trigger:browser:url','sysparm_display_value=true','remoteUri','stripTrailingSlash','serverUrl','%s/api/now/table/','isNil','email','destcalleridnum','calleridnum','callDirection','unmanaged','queue','monitor_format','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]','The\x20ticket\x20ID\x20is:\x20%s','call\x20direction:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20ServiceNow\x20integration','inspect','lodash','bluebird','request-promise','md5','ioredis','../../../../config/environment','../../../../config/logger','servicenow','defaults','redis','localhost','socket.io-emitter'];(function(_0x2235bf,_0x3a06a7){var _0x4c3a64=function(_0x3b3bb6){while(--_0x3b3bb6){_0x2235bf['push'](_0x2235bf['shift']());}};_0x4c3a64(++_0x3a06a7);}(_0x840a,0x141));var _0xa840=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x840a[_0x2641f9];return _0x585741;};'use strict';var _=require(_0xa840('0x0'));var Promise=require(_0xa840('0x1'));var rp=require(_0xa840('0x2'));var util=require('util');var md5=require(_0xa840('0x3'));var Redis=require(_0xa840('0x4'));var intUtil=require('./util');var config=require(_0xa840('0x5'));var logger=require(_0xa840('0x6'))(_0xa840('0x7'));config['redis']=_[_0xa840('0x8')](config[_0xa840('0x9')],{'host':_0xa840('0xa'),'port':0x18eb});var io=require(_0xa840('0xb'))(new Redis(config[_0xa840('0x9')]));function getAdminUser(_0x44d9c6,_0x4d4ae6,_0x2e226d,_0x59a39,_0x1f2686,_0x401c7e){return new Promise(function(_0x548c08,_0x24b623){var _0x35c47a={'method':_0xa840('0xc'),'uri':_0x59a39+'sys_user?sysparm_query=user_name%3Dadmin'+'&'+_0x1f2686+'&'+_0x401c7e,'auth':_0x4d4ae6,'json':!![]};return rp(_0x35c47a)[_0xa840('0xd')](function(_0x4a2dc6){if(_0x4a2dc6[_0xa840('0xe')][_0xa840('0xf')]>0x0){_0x2e226d[_0xa840('0x10')]=_0x4a2dc6[_0xa840('0xe')][0x0][_0xa840('0x11')];}logger[_0xa840('0x12')]('['+[_0x44d9c6['toUpperCase']()]+_0xa840('0x13'),_0x2e226d);_0x548c08(_0x2e226d);})[_0xa840('0x14')](function(_0x316360){logger[_0xa840('0x15')]('['+[_0x44d9c6[_0xa840('0x16')]()]+']',_0x316360[_0xa840('0x17')]);_0x24b623(_0x316360['message']);});});}function getUser(_0x4dc5d1,_0x9c0958,_0x18cbea,_0x2c3162,_0x37d154){return function(_0x240ae8){logger[_0xa840('0x12')]('['+[_0x4dc5d1[_0xa840('0x16')]()]+_0xa840('0x18'),_0x240ae8);return new Promise(function(_0x5cf7ba,_0x4fe490){if(intUtil[_0xa840('0x19')](_0x240ae8['userEmail'])){var _0xa7594e={'method':_0xa840('0xc'),'uri':_0x18cbea+_0xa840('0x1a')+_0x240ae8['userEmail']+'&'+_0x2c3162+'&'+_0x37d154,'auth':_0x9c0958,'json':!![]};logger[_0xa840('0x12')]('['+[_0x4dc5d1['toUpperCase']()]+_0xa840('0x1b'),_0xa7594e);return rp(_0xa7594e)[_0xa840('0xd')](function(_0x4c0717){logger[_0xa840('0x12')]('['+[_0x4dc5d1[_0xa840('0x16')]()]+'],\x20getUser\x20entity',_0x4c0717);if(_0x4c0717[_0xa840('0xe')][_0xa840('0xf')]>0x0&&String(_0x4c0717[_0xa840('0xe')][0x0][_0xa840('0x1c')])==='true'){_0x240ae8['userId']=_0x4c0717['result'][0x0]['sys_id'];}else{_0x240ae8['userId']=_0x240ae8[_0xa840('0x10')];_0x240ae8[_0xa840('0x1d')]=_0x240ae8[_0xa840('0x1e')];}logger['info']('['+[_0x4dc5d1['toUpperCase']()]+_0xa840('0x1f'),_0x240ae8);_0x5cf7ba(_0x240ae8);})[_0xa840('0x14')](function(_0x22339e){logger['error']('['+[_0x4dc5d1[_0xa840('0x16')]()]+']',_0x22339e[_0xa840('0x17')]);_0x4fe490(_0x22339e['message']);});}else{logger[_0xa840('0x12')]('['+[_0x4dc5d1['toUpperCase']()]+']\x20using\x20admin\x20profile');_0x240ae8['userId']=_0x240ae8[_0xa840('0x10')];_0x240ae8[_0xa840('0x1d')]=_0x240ae8[_0xa840('0x1e')];_0x5cf7ba(_0x240ae8);}});};}function createEndUser(_0x157de0,_0x3c7dc3,_0xd534d8,_0x5dadf8,_0x15c419){logger[_0xa840('0x12')]('['+[_0x157de0[_0xa840('0x16')]()]+_0xa840('0x20'),_0xd534d8);return new Promise(function(_0x51a6e7,_0x2ed02b){var _0x1e96bc={'method':'POST','uri':_0x5dadf8+_0xa840('0x21')+_0x15c419,'body':{'user_name':_0xd534d8[_0xa840('0x22')],'roles':_0xa840('0x23'),'first_name':_0xd534d8[_0xa840('0x22')],'active':_0xa840('0x24'),'date_format':'System','phone':_0xd534d8[_0xa840('0x22')]},'auth':_0x3c7dc3,'json':!![]};return rp(_0x1e96bc)[_0xa840('0xd')](function(_0x41dd80){logger[_0xa840('0x12')]('['+[_0x157de0[_0xa840('0x16')]()]+_0xa840('0x25'),_0x41dd80['result']);_0xd534d8[_0xa840('0x26')]=_0x41dd80['result'][_0xa840('0x11')];_0x51a6e7(_0xd534d8);})[_0xa840('0x14')](function(_0x82d399){logger['error']('['+[_0x157de0[_0xa840('0x16')]()]+']',_0x82d399[_0xa840('0x17')]);_0x2ed02b(_0x82d399[_0xa840('0x17')]);});});}function getEndUser(_0x3f06be,_0x193912,_0x4ba3f5,_0x642ae3,_0x1f99f2){return function(_0x5282e3){logger[_0xa840('0x12')]('['+[_0x3f06be['toUpperCase']()]+_0xa840('0x27'),_0x5282e3);return new Promise(function(_0x1eed73,_0x40c612){var _0x5e5448={'method':_0xa840('0xc'),'uri':_0x4ba3f5+'sys_user?sysparm_query=phone%3D'+_0x5282e3[_0xa840('0x22')]+'&'+_0x642ae3+'&'+_0x1f99f2,'auth':_0x193912,'json':!![]};return rp(_0x5e5448)[_0xa840('0xd')](function(_0x3c702b){if(_0x3c702b[_0xa840('0xe')][_0xa840('0xf')]>0x0){_0x5282e3['endUserId']=_0x3c702b['result'][0x0][_0xa840('0x11')];logger[_0xa840('0x12')]('['+[_0x3f06be[_0xa840('0x16')]()]+_0xa840('0x28'),_0x5282e3);_0x1eed73(_0x5282e3);}else{return createEndUser(_0x3f06be,_0x193912,_0x5282e3,_0x4ba3f5,_0x642ae3)[_0xa840('0xd')](function(_0x59947f){logger[_0xa840('0x12')]('['+[_0x3f06be['toUpperCase']()]+'],\x20createEndUser\x20crm',_0x59947f);_0x1eed73(_0x59947f);});}})[_0xa840('0x14')](function(_0xca039b){logger['error']('['+[_0x3f06be[_0xa840('0x16')]()]+']',_0xca039b['message']);_0x40c612(_0xca039b[_0xa840('0x17')]);});});};}function getCustomFields(_0x30fd4f,_0x2df86e){var _0x46f57a={};if(_0x30fd4f[_0xa840('0xf')]>0x0){_[_0xa840('0x29')](_0x30fd4f,function(_0x14dc99){if(_['includes']([_0xa840('0x2a'),_0xa840('0x2b')],_0x14dc99[_0xa840('0x2c')])&&_0x14dc99[_0xa840('0x2d')]&&!_0x14dc99['customField']){_0x46f57a[_0x14dc99[_0xa840('0x2d')][_0xa840('0x2e')]()]=_0x14dc99[_0xa840('0x2f')][_0xa840('0x30')]();}else if(_[_0xa840('0x31')]([_0xa840('0x2a'),_0xa840('0x2b')],_0x14dc99[_0xa840('0x2c')])&&_0x14dc99[_0xa840('0x32')]&&_0x14dc99[_0xa840('0x33')]){_0x46f57a[_0x14dc99[_0xa840('0x32')][_0xa840('0x2e')]()]=_0x14dc99[_0xa840('0x2f')][_0xa840('0x30')]();}else if(_0x14dc99['type']==='variable'&&_0x14dc99['variableName']&&_0x14dc99[_0xa840('0x32')]&&_0x14dc99[_0xa840('0x33')]){_0x46f57a[_0x14dc99[_0xa840('0x32')][_0xa840('0x2e')]()]=_0x2df86e[_0x14dc99[_0xa840('0x34')]][_0xa840('0x30')]();}else if(_0x14dc99[_0xa840('0x2c')]===_0xa840('0x35')&&_0x14dc99[_0xa840('0x36')]&&_0x14dc99[_0xa840('0x36')][_0xa840('0x37')]&&_0x14dc99[_0xa840('0x32')]&&_0x14dc99['customField']){_0x46f57a[_0x14dc99['idField']['toLowerCase']()]=_0x2df86e[_0x14dc99[_0xa840('0x36')][_0xa840('0x37')][_0xa840('0x2e')]()][_0xa840('0x30')]();}});}return _0x46f57a;}function getTicket(_0x3b0639,_0x35c666,_0x574d79,_0x4622ab,_0x15d887,_0x4b162c){return function(_0x199580){logger[_0xa840('0x12')]('['+[_0x3b0639[_0xa840('0x16')]()]+_0xa840('0x38'),_0x199580);return new Promise(function(_0x319afc,_0xed1ec6){var _0x16c810=_0x3b0639[_0xa840('0x2e')]()===_0xa840('0x39')?_0x199580[_0xa840('0x3a')]:_0x199580[_0xa840('0x26')];var _0x4e7e4a={'method':'POST','uri':_0x574d79+_0xa840('0x3b')+'?'+_0x4b162c,'body':Object[_0xa840('0x3c')]({},{'active':_0xa840('0x24'),'caller_id':_0x16c810,'assigned_to':_0x199580['userId'],'short_description':intUtil['getString'](_0x4622ab[_0xa840('0x3d')],_0x15d887,'\x20'),'description':intUtil['getString'](_0x4622ab[_0xa840('0x3e')],_0x15d887,'\x0a')},getCustomFields(_0x4622ab[_0xa840('0x3f')],_0x15d887)),'auth':_0x35c666,'json':!![]};return rp(_0x4e7e4a)[_0xa840('0xd')](function(_0x3a4db5){logger[_0xa840('0x12')]('['+[_0x3b0639[_0xa840('0x16')]()]+_0xa840('0x40'),_0x3a4db5['result']);_0x199580[_0xa840('0x41')]=_0x3a4db5[_0xa840('0xe')][_0xa840('0x11')];_0x199580[_0xa840('0x42')]=_0x3a4db5['result'][_0xa840('0x43')];logger[_0xa840('0x12')]('['+[_0x3b0639[_0xa840('0x16')]()]+']\x20getTicket\x20crm',_0x199580);_0x319afc(_0x199580);})['catch'](function(_0x52d4f6){logger['error']('['+[_0x3b0639[_0xa840('0x16')]()]+']',_0x52d4f6['message']);_0xed1ec6(_0x52d4f6[_0xa840('0x17')]);});});};}function createRemoteTag(_0x2c4323,_0x135feb,_0x11a0dd,_0x2455c6){return new Promise(function(_0x26742e,_0x457077){var _0x1c0a60={'method':_0xa840('0x44'),'uri':_0x11a0dd+_0xa840('0x45')+'?'+_0x2455c6,'body':{'short_description':_0x2c4323,'global':!![],'active':!![],'name':_0x2c4323},'auth':_0x135feb,'json':!![]};return rp(_0x1c0a60)['then'](function(_0x5d85c0){var _0x3df32f=_0x5d85c0[_0xa840('0xe')][_0xa840('0x11')];_0x26742e(_0x3df32f);});});}function getRemoteTag(_0x451577,_0xc3c148,_0xe1cd3e,_0xb89a67,_0x456bef){return new Promise(function(_0x251877,_0x35785){var _0x4d18bf={'method':_0xa840('0xc'),'uri':_0xe1cd3e+_0xa840('0x45')+_0xa840('0x46')+_0x451577+'&'+_0xb89a67,'auth':_0xc3c148,'json':!![]};return rp(_0x4d18bf)[_0xa840('0xd')](function(_0xdfb12c){if(_0xdfb12c['result'][_0xa840('0xf')]>0x0){var _0x10250d=_0xdfb12c[_0xa840('0xe')][0x0][_0xa840('0x11')];_0x251877(_0x10250d);}else{return createRemoteTag(_0x451577,_0xc3c148,_0xe1cd3e,_0xb89a67)[_0xa840('0xd')](function(_0x1a33ef){_0x251877(_0x1a33ef);});}});});}function assignTagToIncident(_0x19c4cd,_0x3db624,_0x33def7,_0x208f68,_0x41c985){return new Promise(function(_0x208064,_0x2ccbca){var _0x17b2eb={'method':'POST','uri':_0x33def7+_0xa840('0x47')+'?'+_0x41c985,'body':{'label':_0x19c4cd,'table':_0xa840('0x3b'),'id_type':_0xa840('0x48'),'table_key':_0x208f68['ticketId'],'title':_0xa840('0x49')+_0x208f68['ticketNumber'],'id_display':_0x208f68['ticketNumber']},'auth':_0x3db624,'json':!![]};return rp(_0x17b2eb)[_0xa840('0xd')](function(_0x487e9d){_0x208064();})[_0xa840('0x14')](function(){_0x208064();});});}function manageTags(_0x2f0c4a,_0x10a7a9,_0xb388aa,_0x49ff57,_0x3ce541,_0x2a2c62,_0x1e80a3){return new Promise(function(_0x15a122,_0x4233de){var _0x563a87=[];_0x10a7a9[_0xa840('0x29')](function(_0x13675b){_0x563a87['push'](getRemoteTag(_0x13675b,_0xb388aa,_0x49ff57,_0x2a2c62,_0x1e80a3));});return Promise[_0xa840('0x4a')](_0x563a87)[_0xa840('0xd')](function(_0x5a9574){if(_0x5a9574['length']){logger[_0xa840('0x12')]('['+[_0x2f0c4a[_0xa840('0x16')]()]+_0xa840('0x4b'),_0x5a9574);var _0x865557=[];_0x5a9574[_0xa840('0x29')](function(_0x3d197c){_0x865557[_0xa840('0x4c')](assignTagToIncident(_0x3d197c,_0xb388aa,_0x49ff57,_0x3ce541,_0x2a2c62));});return Promise[_0xa840('0x4a')](_0x865557)['then'](function(){_0x15a122();})['catch'](function(){_0x15a122();});}else{_0x15a122();}});});}function getTags(_0x45c598,_0x32ed7e,_0x4b6c1a,_0x405268,_0x51c66b,_0x351d8c){return function(_0x221058){return new Promise(function(_0x1b1e2e,_0x355602){var _0x33528b=[];var _0x5e1b1a=_0x405268[_0xa840('0x4d')];if(_0x5e1b1a&&_0x5e1b1a[_0xa840('0xf')]>0x0){_0x33528b=_[_0xa840('0x4e')](_0x5e1b1a,'name');}if(_0x33528b['length']>0x0){return manageTags(_0x45c598,_0x33528b,_0x32ed7e,_0x4b6c1a,_0x221058,_0x51c66b,_0x351d8c)[_0xa840('0xd')](function(){_0x1b1e2e(_0x221058);});}else{_0x1b1e2e(_0x221058);}});};}function emit(_0x2fa0b7,_0x49905e,_0x17ca86){var _0x3ce876=_0xa840('0x4f')+_0xa840('0x50')+_0xa840('0x51')+_0xa840('0x52');var _0x2ba8a5={'uri':_0x2fa0b7+_0xa840('0x53')+_0x17ca86+_0x3ce876};io['to'](util[_0xa840('0x54')](_0xa840('0x55'),_0x49905e))[_0xa840('0x56')](_0xa840('0x57'),_0x2ba8a5);}exports['cs']=function(_0xb2d028,_0x477136,_0x166515,_0x438309,_0x2d2250,_0x61399b,_0x2e3776,_0x357e6b){var _0x51aaa8={};var _0x5fb2fa={'user':_0x61399b['username'],'pass':_0x61399b['password']};var _0x59e0d3='sysparm_limit=1';var _0x99b058=_0xa840('0x58');_0x61399b[_0xa840('0x59')]=intUtil[_0xa840('0x5a')](_0x61399b[_0xa840('0x59')]);_0x61399b[_0xa840('0x5b')]=intUtil[_0xa840('0x5a')](_0x61399b[_0xa840('0x5b')]);var _0x35d8f8=util[_0xa840('0x54')](_0xa840('0x5c'),_0x61399b['remoteUri']);_0x51aaa8[_0xa840('0x1d')]=!_[_0xa840('0x5d')](_0x438309)?_0x438309['email']:null;_0x51aaa8[_0xa840('0x1e')]=_0x61399b[_0xa840('0x5e')];_0x51aaa8[_0xa840('0x22')]=_0x357e6b['toLowerCase']()===_0xa840('0x39')?_0x477136[_0xa840('0x5f')]:_0x477136[_0xa840('0x60')];_0x51aaa8[_0xa840('0x61')]=_0x357e6b==='queue'||_0x357e6b===_0xa840('0x62')?_0xa840('0x63'):'outbound';var _0x26cc2b=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x61399b[_0xa840('0x5b')],_0x477136['uniqueid'],md5(_0x477136['uniqueid']));if(_0x2d2250&&_0x2d2250[_0xa840('0x64')]){logger[_0xa840('0x12')]('[QUEUE]',_0xa840('0x65'));_0x477136[_0xa840('0x66')]=_0x26cc2b;}else if(_0x2e3776&&_0x2e3776['recordingFormat']&&_0x2e3776[_0xa840('0x67')]!==_0xa840('0x68')){logger[_0xa840('0x12')](_0xa840('0x69'),_0xa840('0x65'));_0x477136[_0xa840('0x66')]=_0x26cc2b;}else{_0x477136['recordingURL']='';}return getAdminUser(_0x357e6b,_0x5fb2fa,_0x51aaa8,_0x35d8f8,_0x99b058,_0x59e0d3)[_0xa840('0xd')](getUser(_0x357e6b,_0x5fb2fa,_0x35d8f8,_0x99b058,_0x59e0d3))['then'](getEndUser(_0x357e6b,_0x5fb2fa,_0x35d8f8,_0x99b058,_0x59e0d3))[_0xa840('0xd')](getTicket(_0x357e6b,_0x5fb2fa,_0x35d8f8,_0x166515,_0x477136,_0x99b058))['then'](function(_0xf0e910){logger[_0xa840('0x12')](util[_0xa840('0x54')](_0xa840('0x6a'),_0xf0e910[_0xa840('0x41')]));logger[_0xa840('0x12')](util['format'](_0xa840('0x6b'),_0x357e6b));if(_0x357e6b!==_0xa840('0x62')){logger['info']('['+[_0x357e6b['toUpperCase']()]+']',_0xa840('0x6c'));emit(_0x61399b[_0xa840('0x59')],_0x438309[_0xa840('0x37')],_0xf0e910[_0xa840('0x41')]);}})[_0xa840('0x14')](function(_0x40e1b5){logger['error']('['+[_0x357e6b[_0xa840('0x16')]()]+_0xa840('0x6d'),util[_0xa840('0x6e')](_0x40e1b5,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0xb3dc=['unmanaged','queue','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','Recording\x20is\x20enabled!','recordingFormat','[OUTBOUND]','recordingURL','The\x20ticket\x20ID\x20is:\x20%s','call\x20direction:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...','lodash','bluebird','request-promise','util','md5','./util','../../../../config/logger','defaults','redis','localhost','sys_user?sysparm_query=user_name%3Dadmin','then','result','],\x20getAdminUser\x20crm','catch','error','toUpperCase','message','info','],\x20getUser\x20input\x20crm','validateEmail','GET','sys_user?sysparm_query=email%3D','userEmail','],\x20getUser\x20rp\x20obj','length','active','userId','sys_id','adminId','adminEmail','],\x20getUser\x20crm','sys_user?','endUserNumber','user','true','],\x20EndUser\x20schema','endUserId','sys_user?sysparm_query=phone%3D','forEach','includes','picklist','type','nameField','customField','toLowerCase','content','toString','string','idField','variable','variableName','customVariable','Variable','name',']\x20getTicket\x20input\x20crm','POST','incident','Subjects',']\x20POST\x20incident\x20entity\x20schema','ticketId','ticketNumber',']\x20getTicket\x20crm','Incident\x20-\x20','push',']\x20arrayPromises:\x20IDs\x20in\x20table\x20label','Tags','map','%26sysparm_record_target%3Dincident','%26sysparm_record_row%3D1%26sysparm_record_rows%3D39','%26sysparm_record_list%3Dactive%253Dtrue','/nav_to.do?uri=incident.do?sys_id%3D','format','user:%s','emit','username','password','sysparm_limit=1','sysparm_display_value=true','remoteUri','serverUrl','stripTrailingSlash','%s/api/now/table/','isNil','email','outbound','calleridnum'];(function(_0x2402e3,_0x2c6bc6){var _0x4cfd61=function(_0x51f9ec){while(--_0x51f9ec){_0x2402e3['push'](_0x2402e3['shift']());}};_0x4cfd61(++_0x2c6bc6);}(_0xb3dc,0xd2));var _0xcb3d=function(_0x1310fa,_0x5bb756){_0x1310fa=_0x1310fa-0x0;var _0x107fef=_0xb3dc[_0x1310fa];return _0x107fef;};'use strict';var _=require(_0xcb3d('0x0'));var Promise=require(_0xcb3d('0x1'));var rp=require(_0xcb3d('0x2'));var util=require(_0xcb3d('0x3'));var md5=require(_0xcb3d('0x4'));var Redis=require('ioredis');var intUtil=require(_0xcb3d('0x5'));var config=require('../../../../config/environment');var logger=require(_0xcb3d('0x6'))('servicenow');config['redis']=_[_0xcb3d('0x7')](config[_0xcb3d('0x8')],{'host':_0xcb3d('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xcb3d('0x8')]));function getAdminUser(_0x47276f,_0x9c7229,_0x10aad0,_0x2aa7af,_0x10957b,_0x2335f9){return new Promise(function(_0x3c90e1,_0x2766bc){var _0x3e01fe={'method':'GET','uri':_0x2aa7af+_0xcb3d('0xa')+'&'+_0x10957b+'&'+_0x2335f9,'auth':_0x9c7229,'json':!![]};return rp(_0x3e01fe)[_0xcb3d('0xb')](function(_0x5397aa){if(_0x5397aa[_0xcb3d('0xc')]['length']>0x0){_0x10aad0['adminId']=_0x5397aa[_0xcb3d('0xc')][0x0]['sys_id'];}logger['info']('['+[_0x47276f['toUpperCase']()]+_0xcb3d('0xd'),_0x10aad0);_0x3c90e1(_0x10aad0);})[_0xcb3d('0xe')](function(_0x2809ce){logger[_0xcb3d('0xf')]('['+[_0x47276f[_0xcb3d('0x10')]()]+']',_0x2809ce[_0xcb3d('0x11')]);_0x2766bc(_0x2809ce['message']);});});}function getUser(_0x431c65,_0x1c10b0,_0x7ea855,_0x63dbf3,_0x127e9b){return function(_0x19c6f6){logger[_0xcb3d('0x12')]('['+[_0x431c65[_0xcb3d('0x10')]()]+_0xcb3d('0x13'),_0x19c6f6);return new Promise(function(_0x5d5f85,_0x5ce3c4){if(intUtil[_0xcb3d('0x14')](_0x19c6f6['userEmail'])){var _0x590dd2={'method':_0xcb3d('0x15'),'uri':_0x7ea855+_0xcb3d('0x16')+_0x19c6f6[_0xcb3d('0x17')]+'&'+_0x63dbf3+'&'+_0x127e9b,'auth':_0x1c10b0,'json':!![]};logger[_0xcb3d('0x12')]('['+[_0x431c65[_0xcb3d('0x10')]()]+_0xcb3d('0x18'),_0x590dd2);return rp(_0x590dd2)['then'](function(_0x2eaf3e){logger[_0xcb3d('0x12')]('['+[_0x431c65[_0xcb3d('0x10')]()]+'],\x20getUser\x20entity',_0x2eaf3e);if(_0x2eaf3e[_0xcb3d('0xc')][_0xcb3d('0x19')]>0x0&&String(_0x2eaf3e[_0xcb3d('0xc')][0x0][_0xcb3d('0x1a')])==='true'){_0x19c6f6[_0xcb3d('0x1b')]=_0x2eaf3e[_0xcb3d('0xc')][0x0][_0xcb3d('0x1c')];}else{_0x19c6f6['userId']=_0x19c6f6[_0xcb3d('0x1d')];_0x19c6f6[_0xcb3d('0x17')]=_0x19c6f6[_0xcb3d('0x1e')];}logger[_0xcb3d('0x12')]('['+[_0x431c65['toUpperCase']()]+_0xcb3d('0x1f'),_0x19c6f6);_0x5d5f85(_0x19c6f6);})[_0xcb3d('0xe')](function(_0x3302b3){logger[_0xcb3d('0xf')]('['+[_0x431c65['toUpperCase']()]+']',_0x3302b3[_0xcb3d('0x11')]);_0x5ce3c4(_0x3302b3[_0xcb3d('0x11')]);});}else{logger[_0xcb3d('0x12')]('['+[_0x431c65['toUpperCase']()]+']\x20using\x20admin\x20profile');_0x19c6f6[_0xcb3d('0x1b')]=_0x19c6f6[_0xcb3d('0x1d')];_0x19c6f6['userEmail']=_0x19c6f6[_0xcb3d('0x1e')];_0x5d5f85(_0x19c6f6);}});};}function createEndUser(_0x1beb0b,_0xb7c87e,_0x3d67ac,_0x22c44f,_0x454d6d){logger[_0xcb3d('0x12')]('['+[_0x1beb0b[_0xcb3d('0x10')]()]+'],\x20createEndUser\x20input\x20crm',_0x3d67ac);return new Promise(function(_0x4c44f0,_0x3a5c2d){var _0x16b941={'method':'POST','uri':_0x22c44f+_0xcb3d('0x20')+_0x454d6d,'body':{'user_name':_0x3d67ac[_0xcb3d('0x21')],'roles':_0xcb3d('0x22'),'first_name':_0x3d67ac[_0xcb3d('0x21')],'active':_0xcb3d('0x23'),'date_format':'System','phone':_0x3d67ac[_0xcb3d('0x21')]},'auth':_0xb7c87e,'json':!![]};return rp(_0x16b941)[_0xcb3d('0xb')](function(_0x379f02){logger[_0xcb3d('0x12')]('['+[_0x1beb0b[_0xcb3d('0x10')]()]+_0xcb3d('0x24'),_0x379f02[_0xcb3d('0xc')]);_0x3d67ac[_0xcb3d('0x25')]=_0x379f02[_0xcb3d('0xc')][_0xcb3d('0x1c')];_0x4c44f0(_0x3d67ac);})[_0xcb3d('0xe')](function(_0x285911){logger[_0xcb3d('0xf')]('['+[_0x1beb0b['toUpperCase']()]+']',_0x285911[_0xcb3d('0x11')]);_0x3a5c2d(_0x285911[_0xcb3d('0x11')]);});});}function getEndUser(_0x3061d3,_0xa34a51,_0xb72be9,_0xa8765,_0x54544c){return function(_0x45ee7f){logger[_0xcb3d('0x12')]('['+[_0x3061d3[_0xcb3d('0x10')]()]+'],\x20getEndUser\x20input\x20crm',_0x45ee7f);return new Promise(function(_0x21ec56,_0x74efdb){var _0xd2caa0={'method':'GET','uri':_0xb72be9+_0xcb3d('0x26')+_0x45ee7f[_0xcb3d('0x21')]+'&'+_0xa8765+'&'+_0x54544c,'auth':_0xa34a51,'json':!![]};return rp(_0xd2caa0)['then'](function(_0xaa90b8){if(_0xaa90b8[_0xcb3d('0xc')]['length']>0x0){_0x45ee7f[_0xcb3d('0x25')]=_0xaa90b8['result'][0x0][_0xcb3d('0x1c')];logger['info']('['+[_0x3061d3[_0xcb3d('0x10')]()]+'],\x20getEndUser\x20crm',_0x45ee7f);_0x21ec56(_0x45ee7f);}else{return createEndUser(_0x3061d3,_0xa34a51,_0x45ee7f,_0xb72be9,_0xa8765)[_0xcb3d('0xb')](function(_0x1f870){logger[_0xcb3d('0x12')]('['+[_0x3061d3['toUpperCase']()]+'],\x20createEndUser\x20crm',_0x1f870);_0x21ec56(_0x1f870);});}})[_0xcb3d('0xe')](function(_0x33d2f3){logger[_0xcb3d('0xf')]('['+[_0x3061d3[_0xcb3d('0x10')]()]+']',_0x33d2f3['message']);_0x74efdb(_0x33d2f3['message']);});});};}function getCustomFields(_0x4aac16,_0x5c035c){var _0xd18c29={};if(_0x4aac16[_0xcb3d('0x19')]>0x0){_[_0xcb3d('0x27')](_0x4aac16,function(_0x266d2d){if(_[_0xcb3d('0x28')](['string',_0xcb3d('0x29')],_0x266d2d[_0xcb3d('0x2a')])&&_0x266d2d[_0xcb3d('0x2b')]&&!_0x266d2d[_0xcb3d('0x2c')]){_0xd18c29[_0x266d2d['nameField'][_0xcb3d('0x2d')]()]=_0x266d2d[_0xcb3d('0x2e')][_0xcb3d('0x2f')]();}else if(_['includes']([_0xcb3d('0x30'),_0xcb3d('0x29')],_0x266d2d[_0xcb3d('0x2a')])&&_0x266d2d[_0xcb3d('0x31')]&&_0x266d2d[_0xcb3d('0x2c')]){_0xd18c29[_0x266d2d['idField'][_0xcb3d('0x2d')]()]=_0x266d2d[_0xcb3d('0x2e')][_0xcb3d('0x2f')]();}else if(_0x266d2d['type']===_0xcb3d('0x32')&&_0x266d2d[_0xcb3d('0x33')]&&_0x266d2d[_0xcb3d('0x31')]&&_0x266d2d[_0xcb3d('0x2c')]){_0xd18c29[_0x266d2d[_0xcb3d('0x31')][_0xcb3d('0x2d')]()]=_0x5c035c[_0x266d2d[_0xcb3d('0x33')]][_0xcb3d('0x2f')]();}else if(_0x266d2d[_0xcb3d('0x2a')]===_0xcb3d('0x34')&&_0x266d2d[_0xcb3d('0x35')]&&_0x266d2d['Variable'][_0xcb3d('0x36')]&&_0x266d2d[_0xcb3d('0x31')]&&_0x266d2d[_0xcb3d('0x2c')]){_0xd18c29[_0x266d2d[_0xcb3d('0x31')][_0xcb3d('0x2d')]()]=_0x5c035c[_0x266d2d['Variable'][_0xcb3d('0x36')][_0xcb3d('0x2d')]()][_0xcb3d('0x2f')]();}});}return _0xd18c29;}function getTicket(_0x291887,_0x462f7e,_0x52bb6e,_0x44090a,_0x5db190,_0x39fc47){return function(_0x1b3516){logger[_0xcb3d('0x12')]('['+[_0x291887[_0xcb3d('0x10')]()]+_0xcb3d('0x37'),_0x1b3516);return new Promise(function(_0x21256c,_0x57d6ea){var _0x5101c7=_0x291887[_0xcb3d('0x2d')]()==='outbound'?_0x1b3516['userId']:_0x1b3516['endUserId'];var _0x41010a={'method':_0xcb3d('0x38'),'uri':_0x52bb6e+_0xcb3d('0x39')+'?'+_0x39fc47,'body':Object['assign']({},{'active':_0xcb3d('0x23'),'caller_id':_0x5101c7,'assigned_to':_0x1b3516[_0xcb3d('0x1b')],'short_description':intUtil['getString'](_0x44090a[_0xcb3d('0x3a')],_0x5db190,'\x20'),'description':intUtil['getString'](_0x44090a['Descriptions'],_0x5db190,'\x0a')},getCustomFields(_0x44090a['Fields'],_0x5db190)),'auth':_0x462f7e,'json':!![]};return rp(_0x41010a)[_0xcb3d('0xb')](function(_0x207189){logger[_0xcb3d('0x12')]('['+[_0x291887[_0xcb3d('0x10')]()]+_0xcb3d('0x3b'),_0x207189[_0xcb3d('0xc')]);_0x1b3516[_0xcb3d('0x3c')]=_0x207189[_0xcb3d('0xc')][_0xcb3d('0x1c')];_0x1b3516[_0xcb3d('0x3d')]=_0x207189[_0xcb3d('0xc')]['number'];logger[_0xcb3d('0x12')]('['+[_0x291887[_0xcb3d('0x10')]()]+_0xcb3d('0x3e'),_0x1b3516);_0x21256c(_0x1b3516);})[_0xcb3d('0xe')](function(_0x56a6d2){logger[_0xcb3d('0xf')]('['+[_0x291887[_0xcb3d('0x10')]()]+']',_0x56a6d2[_0xcb3d('0x11')]);_0x57d6ea(_0x56a6d2[_0xcb3d('0x11')]);});});};}function createRemoteTag(_0x2b9d49,_0x4ce543,_0x6c9b9f,_0x1c9312){return new Promise(function(_0x2a1411,_0x35f293){var _0x2a679a={'method':_0xcb3d('0x38'),'uri':_0x6c9b9f+'label'+'?'+_0x1c9312,'body':{'short_description':_0x2b9d49,'global':!![],'active':!![],'name':_0x2b9d49},'auth':_0x4ce543,'json':!![]};return rp(_0x2a679a)[_0xcb3d('0xb')](function(_0x50fe43){var _0x30e160=_0x50fe43[_0xcb3d('0xc')]['sys_id'];_0x2a1411(_0x30e160);});});}function getRemoteTag(_0x1d6b18,_0x3b1608,_0x4226af,_0x1826eb,_0x803e82){return new Promise(function(_0x2a71c7,_0x12a2de){var _0x13bab3={'method':_0xcb3d('0x15'),'uri':_0x4226af+'label'+'?sysparm_query=name%3D'+_0x1d6b18+'&'+_0x1826eb,'auth':_0x3b1608,'json':!![]};return rp(_0x13bab3)[_0xcb3d('0xb')](function(_0x3d276e){if(_0x3d276e[_0xcb3d('0xc')][_0xcb3d('0x19')]>0x0){var _0x2301f4=_0x3d276e[_0xcb3d('0xc')][0x0]['sys_id'];_0x2a71c7(_0x2301f4);}else{return createRemoteTag(_0x1d6b18,_0x3b1608,_0x4226af,_0x1826eb)[_0xcb3d('0xb')](function(_0x4f9705){_0x2a71c7(_0x4f9705);});}});});}function assignTagToIncident(_0x4ce10a,_0x1813fd,_0x52ba2f,_0x506140,_0x21ff1f){return new Promise(function(_0xf74ae3,_0x57e3d8){var _0x4e9fa5={'method':'POST','uri':_0x52ba2f+'label_entry'+'?'+_0x21ff1f,'body':{'label':_0x4ce10a,'table':_0xcb3d('0x39'),'id_type':'Incident','table_key':_0x506140[_0xcb3d('0x3c')],'title':_0xcb3d('0x3f')+_0x506140[_0xcb3d('0x3d')],'id_display':_0x506140[_0xcb3d('0x3d')]},'auth':_0x1813fd,'json':!![]};return rp(_0x4e9fa5)['then'](function(_0x344ba7){_0xf74ae3();})[_0xcb3d('0xe')](function(){_0xf74ae3();});});}function manageTags(_0xc10bb4,_0x2fd286,_0x35a4c1,_0x57ff74,_0x26f4a1,_0x374a72,_0x32393c){return new Promise(function(_0x29fbb1,_0x198211){var _0x44c15f=[];_0x2fd286[_0xcb3d('0x27')](function(_0xb464b1){_0x44c15f[_0xcb3d('0x40')](getRemoteTag(_0xb464b1,_0x35a4c1,_0x57ff74,_0x374a72,_0x32393c));});return Promise['all'](_0x44c15f)[_0xcb3d('0xb')](function(_0x4b7301){if(_0x4b7301[_0xcb3d('0x19')]){logger['info']('['+[_0xc10bb4[_0xcb3d('0x10')]()]+_0xcb3d('0x41'),_0x4b7301);var _0x456d97=[];_0x4b7301['forEach'](function(_0x1c280f){_0x456d97[_0xcb3d('0x40')](assignTagToIncident(_0x1c280f,_0x35a4c1,_0x57ff74,_0x26f4a1,_0x374a72));});return Promise['all'](_0x456d97)[_0xcb3d('0xb')](function(){_0x29fbb1();})[_0xcb3d('0xe')](function(){_0x29fbb1();});}else{_0x29fbb1();}});});}function getTags(_0x17fcfe,_0x358c74,_0x31222a,_0x4185ea,_0x553bfc,_0x5097f8){return function(_0x986471){return new Promise(function(_0x219a0f,_0x845ea6){var _0x5d1f07=[];var _0x185bee=_0x4185ea[_0xcb3d('0x42')];if(_0x185bee&&_0x185bee[_0xcb3d('0x19')]>0x0){_0x5d1f07=_[_0xcb3d('0x43')](_0x185bee,_0xcb3d('0x36'));}if(_0x5d1f07[_0xcb3d('0x19')]>0x0){return manageTags(_0x17fcfe,_0x5d1f07,_0x358c74,_0x31222a,_0x986471,_0x553bfc,_0x5097f8)['then'](function(){_0x219a0f(_0x986471);});}else{_0x219a0f(_0x986471);}});};}function emit(_0x5ac7f1,_0x3619f8,_0x194968){var _0x302ec1=_0xcb3d('0x44')+_0xcb3d('0x45')+_0xcb3d('0x46')+'%255EORDERBYDESCnumber';var _0x58d0f6={'uri':_0x5ac7f1+_0xcb3d('0x47')+_0x194968+_0x302ec1};io['to'](util[_0xcb3d('0x48')](_0xcb3d('0x49'),_0x3619f8))[_0xcb3d('0x4a')]('trigger:browser:url',_0x58d0f6);}exports['cs']=function(_0x30c7c4,_0x1634b1,_0x182a69,_0x52335a,_0x34ac06,_0x4cf9ab,_0x2bf97d,_0x5ef7e){var _0x28fc9b={};var _0x38b356={'user':_0x4cf9ab[_0xcb3d('0x4b')],'pass':_0x4cf9ab[_0xcb3d('0x4c')]};var _0x2e8e72=_0xcb3d('0x4d');var _0x3d68b7=_0xcb3d('0x4e');_0x4cf9ab[_0xcb3d('0x4f')]=intUtil['stripTrailingSlash'](_0x4cf9ab['remoteUri']);_0x4cf9ab[_0xcb3d('0x50')]=intUtil[_0xcb3d('0x51')](_0x4cf9ab[_0xcb3d('0x50')]);var _0x480812=util[_0xcb3d('0x48')](_0xcb3d('0x52'),_0x4cf9ab[_0xcb3d('0x4f')]);_0x28fc9b[_0xcb3d('0x17')]=!_[_0xcb3d('0x53')](_0x52335a)?_0x52335a[_0xcb3d('0x54')]:null;_0x28fc9b[_0xcb3d('0x1e')]=_0x4cf9ab[_0xcb3d('0x54')];_0x28fc9b['endUserNumber']=_0x5ef7e[_0xcb3d('0x2d')]()===_0xcb3d('0x55')?_0x1634b1['destcalleridnum']:_0x1634b1[_0xcb3d('0x56')];_0x28fc9b['callDirection']=_0x5ef7e==='queue'||_0x5ef7e===_0xcb3d('0x57')?_0xcb3d('0x58'):_0xcb3d('0x55');var _0x4ffab9=util[_0xcb3d('0x48')](_0xcb3d('0x59'),_0x4cf9ab[_0xcb3d('0x50')],_0x1634b1[_0xcb3d('0x5a')],md5(_0x1634b1[_0xcb3d('0x5a')]));if(_0x34ac06&&_0x34ac06[_0xcb3d('0x5b')]){logger['info']('[QUEUE]',_0xcb3d('0x5c'));_0x1634b1['recordingURL']=_0x4ffab9;}else if(_0x2bf97d&&_0x2bf97d[_0xcb3d('0x5d')]&&_0x2bf97d['recordingFormat']!=='none'){logger[_0xcb3d('0x12')](_0xcb3d('0x5e'),_0xcb3d('0x5c'));_0x1634b1[_0xcb3d('0x5f')]=_0x4ffab9;}else{_0x1634b1[_0xcb3d('0x5f')]='';}return getAdminUser(_0x5ef7e,_0x38b356,_0x28fc9b,_0x480812,_0x3d68b7,_0x2e8e72)['then'](getUser(_0x5ef7e,_0x38b356,_0x480812,_0x3d68b7,_0x2e8e72))['then'](getEndUser(_0x5ef7e,_0x38b356,_0x480812,_0x3d68b7,_0x2e8e72))['then'](getTicket(_0x5ef7e,_0x38b356,_0x480812,_0x182a69,_0x1634b1,_0x3d68b7))[_0xcb3d('0xb')](function(_0x53234e){logger[_0xcb3d('0x12')](util['format'](_0xcb3d('0x60'),_0x53234e[_0xcb3d('0x3c')]));logger[_0xcb3d('0x12')](util['format'](_0xcb3d('0x61'),_0x5ef7e));if(_0x5ef7e!=='unmanaged'){logger[_0xcb3d('0x12')]('['+[_0x5ef7e['toUpperCase']()]+']',_0xcb3d('0x62'));emit(_0x4cf9ab[_0xcb3d('0x4f')],_0x52335a['name'],_0x53234e['ticketId']);}})[_0xcb3d('0xe')](function(_0x3558f5){logger[_0xcb3d('0xf')]('['+[_0x5ef7e[_0xcb3d('0x10')]()]+']\x20Error\x20running\x20ServiceNow\x20integration',util['inspect'](_0x3558f5,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index be73ba8..6a8db65 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff6f=['Variable','toLowerCase','POST','login','username','password','xCALLY\x20Motion\x20integration','Account\x20%d\x20is\x20not\x20valid','set_relationship','queue','remoteUri','serverUrl','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','calleridnum','The\x20Enduser\x20ID\x20is:','Fields','Inbound','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','users','contacts','charAt','%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s','%s/#bwc/index.php?module=Calls&action=EditView&record=%s','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','error','stripTrailingSlash','recordingFormat','none','destcalleridnum','Outbound','version','[OUTBOUND]','catch','lastevent','toUpperCase','lodash','request-promise','md5','ioredis','../../../../config/logger','sugarcrm','redis','localhost','socket.io-emitter','emit','info','name','Subjects','assigned_user_id','created_by','getString','Descriptions','date_start','toISOString','replace','duration_hours','duration_minutes','parent_id','parent_name','length','forEach','push','variableName','set_entry','JSON','Calls','format','apiKey','base64','get_server_info','stringify','isNil','Getting\x20agent\x20with\x20name','get_entry_list','Employees','INSTR\x20(\x20users.user_name,\x20\x22%s\x22)\x20>\x200','user_name','then','entry_list','value','Agent\x20found!','resolve','name_value_list','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','user_id','Agent\x20not\x20available,\x20using\x20the\x20admin\x20account!','Searching\x20enduser\x20with\x20phone','find','phone_home','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Contacts','first_name','<unknown>','Caller\x20-\x20%s','Enduser\x20created.','debug','[HTTP]','merge','type','string','nameField','customField','content','toString','idField','custom_fields','variable','customVariable'];(function(_0x52f427,_0x46e88e){var _0x2bea3e=function(_0x287a20){while(--_0x287a20){_0x52f427['push'](_0x52f427['shift']());}};_0x2bea3e(++_0x46e88e);}(_0xff6f,0xa8));var _0xfff6=function(_0x487a2e,_0xbea254){_0x487a2e=_0x487a2e-0x0;var _0x6df506=_0xff6f[_0x487a2e];return _0x6df506;};'use strict';var _=require(_0xfff6('0x0'));var rp=require(_0xfff6('0x1'));var BPromise=require('bluebird');var md5=require(_0xfff6('0x2'));var util=require('util');var Redis=require(_0xfff6('0x3'));var intUtil=require('./util');var config=require('../../../../config/environment');var logger=require(_0xfff6('0x4'))(_0xfff6('0x5'));config[_0xfff6('0x6')]=_['defaults'](config[_0xfff6('0x6')],{'host':_0xfff6('0x7'),'port':0x18eb});var io=require(_0xfff6('0x8'))(new Redis(config[_0xfff6('0x6')]));var def={'method':'POST','json':!![]};function emit(_0x4e190d,_0x2a111c,_0x26f0ca){io['to'](_0x4e190d)[_0xfff6('0x9')](_0x2a111c,_0x26f0ca);}function getTicket(_0xe6b89d,_0x4cd31c,_0x1f2541,_0x154479,_0x32c2a8,_0x3ca2b8,_0xf74894,_0x2ccb78){logger[_0xfff6('0xa')]('Creating\x20new\x20ticket...');var _0x3444ca=new Date();var _0x25e231=[{'name':_0xfff6('0xb'),'value':intUtil['getString'](_0x154479[_0xfff6('0xc')],_0x32c2a8,'\x20')},{'name':_0xfff6('0xd'),'value':_0x4cd31c['id']},{'name':_0xfff6('0xe'),'value':_0x4cd31c['id']},{'name':'description','value':intUtil[_0xfff6('0xf')](_0x154479[_0xfff6('0x10')],_0x32c2a8,'\x0a')},{'name':_0xfff6('0x11'),'value':_0x3444ca[_0xfff6('0x12')]()['slice'](0x0,0x13)[_0xfff6('0x13')]('T','\x20')},{'name':_0xfff6('0x14'),'value':'0'},{'name':_0xfff6('0x15'),'value':'15'},{'name':_0xfff6('0x16'),'value':_0x1f2541['id']},{'name':'parent_type','value':'Contacts'},{'name':_0xfff6('0x17'),'value':_0x1f2541[_0xfff6('0xb')]},{'name':'direction','value':_0x2ccb78}];if(_0x3ca2b8[_0xfff6('0x18')]){_[_0xfff6('0x19')](_0x3ca2b8,function(_0x2b37af){if(_0x32c2a8[_0x2b37af['variableName']]){_0x25e231[_0xfff6('0x1a')]({'name':_0x2b37af['idField'],'value':_0x32c2a8[_0x2b37af[_0xfff6('0x1b')]]});}});}return request({'form':{'method':_0xfff6('0x1c'),'input_type':_0xfff6('0x1d'),'response_type':'JSON','rest_data':JSON['stringify']({'session':_0xf74894['id'],'module_name':_0xfff6('0x1e'),'name_value_list':_0x25e231})}});}function getAuth(_0x3afe4c){return util[_0xfff6('0x1f')]('Basic\x20%s',new Buffer(_0x3afe4c[_0xfff6('0x20')]+':X')['toString'](_0xfff6('0x21')));}function getServerInfo(_0x3e509f){return request({'form':{'method':_0xfff6('0x22'),'input_type':_0xfff6('0x1d'),'response_type':'JSON','rest_data':JSON[_0xfff6('0x23')]({'session':_0x3e509f['id']})}});}function getUser(_0x367e95,_0x1f0e59,_0xdb7d78){if(!_[_0xfff6('0x24')](_0x1f0e59)){logger[_0xfff6('0xa')](_0xfff6('0x25'),_0x1f0e59);return request({'form':{'method':_0xfff6('0x26'),'input_type':'JSON','response_type':_0xfff6('0x1d'),'rest_data':JSON[_0xfff6('0x23')]({'session':_0xdb7d78['id'],'module_name':_0xfff6('0x27'),'query':util[_0xfff6('0x1f')](_0xfff6('0x28'),_0x1f0e59),'order_by':'','offset':'0','select_fields':['id',_0xfff6('0xb'),_0xfff6('0x29')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0xfff6('0x2a')](function(_0x291d6e){if(_0x291d6e['entry_list']['length']){var _0x41fe14=_['find'](_0x291d6e[_0xfff6('0x2b')],function(_0x327cc1){return _0x327cc1['name_value_list'][_0xfff6('0x29')][_0xfff6('0x2c')]===_0x1f0e59;});if(_0x41fe14){logger['info'](_0xfff6('0x2d'));return BPromise[_0xfff6('0x2e')]({'id':_0x41fe14['name_value_list']['id'][_0xfff6('0x2c')],'name':_0x41fe14[_0xfff6('0x2f')][_0xfff6('0xb')][_0xfff6('0x2c')]});}}logger[_0xfff6('0xa')](_0xfff6('0x30'));return BPromise[_0xfff6('0x2e')]({'id':_0xdb7d78[_0xfff6('0x2f')][_0xfff6('0x31')][_0xfff6('0x2c')],'name':_0xdb7d78['name_value_list'][_0xfff6('0x29')][_0xfff6('0x2c')]});});}else{logger[_0xfff6('0xa')](_0xfff6('0x32'));return BPromise['resolve']({'id':_0xdb7d78[_0xfff6('0x2f')][_0xfff6('0x31')][_0xfff6('0x2c')],'name':_0xdb7d78[_0xfff6('0x2f')][_0xfff6('0x29')][_0xfff6('0x2c')]});}}function getEndUser(_0x2573e3,_0x16a0a2,_0x39c609,_0x2593a7){logger[_0xfff6('0xa')](_0xfff6('0x33'),_0x39c609);return request({'form':{'method':_0xfff6('0x26'),'input_type':_0xfff6('0x1d'),'response_type':_0xfff6('0x1d'),'rest_data':JSON[_0xfff6('0x23')]({'session':_0x2593a7['id'],'module_name':'Contacts','query':util[_0xfff6('0x1f')]('contacts.phone_home\x20=\x20\x22%s\x22',_0x39c609),'order_by':'','offset':'0','select_fields':['id','name','phone_home'],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0xfff6('0x2a')](function(_0xee1164){if(_0xee1164[_0xfff6('0x2b')][_0xfff6('0x18')]){var _0x2c61ff=_[_0xfff6('0x34')](_0xee1164[_0xfff6('0x2b')],function(_0x4fb779){return _0x4fb779[_0xfff6('0x2f')][_0xfff6('0x35')]['value']===_0x39c609;});if(_0x2c61ff){logger[_0xfff6('0xa')](_0xfff6('0x36'));return BPromise[_0xfff6('0x2e')]({'id':_0x2c61ff[_0xfff6('0x2f')]['id'][_0xfff6('0x2c')],'name':_0x2c61ff[_0xfff6('0x2f')]['name']['value'],'phone':_0x2c61ff[_0xfff6('0x2f')][_0xfff6('0x35')][_0xfff6('0x2c')]});}}else{logger[_0xfff6('0xa')](_0xfff6('0x37'));return request({'form':{'method':_0xfff6('0x1c'),'input_type':'JSON','response_type':_0xfff6('0x1d'),'rest_data':JSON['stringify']({'session':_0x2593a7['id'],'module_name':_0xfff6('0x38'),'name_value_list':[{'name':_0xfff6('0x39'),'value':_0x16a0a2!==_0xfff6('0x3a')?_0x16a0a2:util[_0xfff6('0x1f')](_0xfff6('0x3b'),_0x39c609)},{'name':_0xfff6('0x35'),'value':_0x39c609}]})}})[_0xfff6('0x2a')](function(_0x2109ef){logger[_0xfff6('0xa')](_0xfff6('0x3c'));return BPromise[_0xfff6('0x2e')]({'id':_0x2109ef['id'],'name':_0x2109ef[_0xfff6('0x2b')]['first_name'][_0xfff6('0x2c')],'phone':_0x2109ef[_0xfff6('0x2b')][_0xfff6('0x35')]['value']});});}});}function request(_0x474c02){logger[_0xfff6('0x3d')](_0xfff6('0x3e'),JSON['stringify'](_0x474c02));return rp(_[_0xfff6('0x3f')](def,_0x474c02));}function getTags(_0x2b7de8,_0x4ce209){var _0x14c575=[];if(_0x2b7de8&&_0x2b7de8[_0xfff6('0x18')]>0x0){_0x14c575=_['map'](_0x2b7de8,_0x4ce209);}return _0x14c575;}function getCustomFields(_0xe29abe,_0x2a7810){var _0x2f3a0b=[];var _0x3a1359={'custom_fields':[]};if(_0xe29abe[_0xfff6('0x18')]>0x0){_[_0xfff6('0x19')](_0xe29abe,function(_0x513250){if(_0x513250[_0xfff6('0x40')]===_0xfff6('0x41')&&_0x513250[_0xfff6('0x42')]&&!_0x513250[_0xfff6('0x43')]){_0x3a1359[_0x513250['nameField']['toLowerCase']()]=_0x513250[_0xfff6('0x44')][_0xfff6('0x45')]();}else if(_0x513250[_0xfff6('0x40')]===_0xfff6('0x41')&&_0x513250[_0xfff6('0x46')]&&_0x513250['customField']){_0x3a1359[_0xfff6('0x47')][_0xfff6('0x1a')]({'id':_0x513250[_0xfff6('0x46')],'value':_0x513250[_0xfff6('0x44')][_0xfff6('0x45')]()});}else if(_0x513250['type']===_0xfff6('0x48')&&_0x513250[_0xfff6('0x1b')]&&_0x513250[_0xfff6('0x46')]&&_0x513250[_0xfff6('0x43')]){_0x2a7810[_0x513250[_0xfff6('0x1b')]]&&_0x3a1359[_0xfff6('0x47')][_0xfff6('0x1a')]({'id':_0x513250[_0xfff6('0x46')],'value':_0x2a7810[_0x513250[_0xfff6('0x1b')]][_0xfff6('0x45')]()});}else if(_0x513250[_0xfff6('0x40')]===_0xfff6('0x49')&&_0x513250[_0xfff6('0x4a')]&&_0x513250[_0xfff6('0x4a')][_0xfff6('0xb')]&&_0x513250['idField']&&_0x513250[_0xfff6('0x43')]){_0x2a7810[_0x513250[_0xfff6('0x4a')][_0xfff6('0xb')]['toLowerCase']()]&&_0x3a1359[_0xfff6('0x47')][_0xfff6('0x1a')]({'id':_0x513250[_0xfff6('0x46')],'value':_0x2a7810[_0x513250[_0xfff6('0x4a')][_0xfff6('0xb')][_0xfff6('0x4b')]()]['toString']()});}});}return _0x3a1359;}function getConnection(_0xab3bba){return request({'method':_0xfff6('0x4c'),'form':{'method':_0xfff6('0x4d'),'input_type':_0xfff6('0x1d'),'response_type':_0xfff6('0x1d'),'rest_data':JSON['stringify']({'user_auth':{'user_name':_0xab3bba[_0xfff6('0x4e')],'password':_0xab3bba[_0xfff6('0x4f')],'encryption':'PLAIN'},'application':_0xfff6('0x50')})}})[_0xfff6('0x2a')](function(_0x5ee793){var _0x442af3=_0x5ee793;if(_0x442af3['id']){def['sessionID']=_0x442af3['id'];return BPromise[_0xfff6('0x2e')](_0x442af3);}else{throw new Error(util[_0xfff6('0x1f')](_0xfff6('0x51'),_0xab3bba['id']));}});}function setRelationship(_0xd35b26,_0x344cd3,_0x48958c,_0x3497ee){return request({'form':{'method':_0xfff6('0x52'),'input_type':_0xfff6('0x1d'),'response_type':_0xfff6('0x1d'),'rest_data':JSON[_0xfff6('0x23')]({'session':_0xd35b26['id'],'module_name':_0xfff6('0x1e'),'module_id':_0x48958c['id'],'link_field_name':_0x3497ee,'related_ids':[_0x344cd3['id']],'name_value_list':[],'delete':0x0})}});}exports[_0xfff6('0x53')]=function(_0x3740bc,_0x20bac6,_0x2b3631,_0x45ae8a,_0x18c781,_0xe6875b){var _0x927ec5,_0x5e200f,_0x30c93a,_0x5aa2ed;_0xe6875b[_0xfff6('0x54')]=intUtil['stripTrailingSlash'](_0xe6875b['remoteUri']);_0xe6875b[_0xfff6('0x55')]=intUtil['stripTrailingSlash'](_0xe6875b[_0xfff6('0x55')]);def[_0xfff6('0x56')]=util[_0xfff6('0x1f')](_0xfff6('0x57'),_0xe6875b[_0xfff6('0x54')]);if(_0x18c781&&_0x18c781[_0xfff6('0x58')]){logger[_0xfff6('0xa')](_0xfff6('0x59'),_0xfff6('0x5a'));_0x20bac6[_0xfff6('0x5b')]=util[_0xfff6('0x1f')](_0xfff6('0x5c'),_0xe6875b['serverUrl'],_0x20bac6['uniqueid'],md5(_0x20bac6[_0xfff6('0x5d')]));}else{_0x20bac6['recordingURL']='';}return getConnection(_0xe6875b)[_0xfff6('0x2a')](function(_0x1896d6){_0x5aa2ed=_0x1896d6;return getUser(_0xe6875b,_0x45ae8a[_0xfff6('0xb')],_0x5aa2ed);})[_0xfff6('0x2a')](function(_0x15722a){_0x927ec5=_0x15722a;logger[_0xfff6('0xa')](_0xfff6('0x5e'),_0x927ec5['id']);return getEndUser(_0xe6875b,_0x20bac6[_0xfff6('0x5f')],_0x20bac6[_0xfff6('0x60')],_0x5aa2ed);})[_0xfff6('0x2a')](function(_0x19f8e8){_0x5e200f=_0x19f8e8;logger['info'](_0xfff6('0x61'),_0x5e200f['id']);return getTicket(_0xe6875b,_0x927ec5,_0x5e200f,_0x2b3631,_0x20bac6,_0x2b3631[_0xfff6('0x62')],_0x5aa2ed,_0xfff6('0x63'));})['then'](function(_0x4a1720){_0x30c93a=_0x4a1720;logger[_0xfff6('0xa')](_0xfff6('0x64'));logger[_0xfff6('0xa')](_0xfff6('0x65'),_0x30c93a['id']);return setRelationship(_0x5aa2ed,_0x927ec5,_0x30c93a,_0xfff6('0x66'));})[_0xfff6('0x2a')](function(){return setRelationship(_0x5aa2ed,_0x5e200f,_0x30c93a,_0xfff6('0x67'));})[_0xfff6('0x2a')](function(){return getServerInfo(_0x5aa2ed);})['then'](function(_0x12667d){var _0x3f1c39=parseInt(_0x12667d['version'][_0xfff6('0x68')](0x0));var _0xf71697=util[_0xfff6('0x1f')](_0xfff6('0x69'),_0xe6875b[_0xfff6('0x54')],_0x30c93a['id']);if(_0x3f1c39>0x6){_0xf71697=util['format'](_0xfff6('0x6a'),_0xe6875b['remoteUri'],_0x30c93a['id']);}logger[_0xfff6('0xa')]('[QUEUE]',_0xfff6('0x6b'));emit(util[_0xfff6('0x1f')](_0xfff6('0x6c'),_0x45ae8a['name']),_0xfff6('0x6d'),{'uri':_0xf71697});})['catch'](function(_0x4c7f5c){logger[_0xfff6('0x6e')](_0xfff6('0x59'),JSON['stringify'](_0x4c7f5c));});};exports['outbound']=function(_0x4e5467,_0x5e7ce5,_0x189981,_0x36dc3a,_0x4692b0,_0x9fb0ef,_0x2ad3b5){var _0x2887af,_0x59f823,_0x4d91d6,_0x1e0fb2;_0x9fb0ef[_0xfff6('0x54')]=intUtil[_0xfff6('0x6f')](_0x9fb0ef[_0xfff6('0x54')]);_0x9fb0ef[_0xfff6('0x55')]=intUtil[_0xfff6('0x6f')](_0x9fb0ef[_0xfff6('0x55')]);def[_0xfff6('0x56')]=util['format'](_0xfff6('0x57'),_0x9fb0ef['remoteUri']);if(_0x2ad3b5&&_0x2ad3b5[_0xfff6('0x70')]&&_0x2ad3b5[_0xfff6('0x70')]!==_0xfff6('0x71')){logger['info']('[OUTBOUND]',_0xfff6('0x5a'));_0x5e7ce5[_0xfff6('0x5b')]=util[_0xfff6('0x1f')](_0xfff6('0x5c'),_0x9fb0ef[_0xfff6('0x55')],_0x5e7ce5[_0xfff6('0x5d')],md5(_0x5e7ce5[_0xfff6('0x5d')]));}return getConnection(_0x9fb0ef)[_0xfff6('0x2a')](function(_0x8bb7e0){_0x1e0fb2=_0x8bb7e0;return getUser(_0x9fb0ef,_0x36dc3a[_0xfff6('0xb')],_0x1e0fb2);})['then'](function(_0x5b49d3){_0x2887af=_0x5b49d3;logger['info'](_0xfff6('0x5e'),_0x2887af['id']);return getEndUser(_0x9fb0ef,_0x5e7ce5['destcalleridname'],_0x5e7ce5[_0xfff6('0x72')],_0x1e0fb2);})['then'](function(_0x5b3ea4){_0x59f823=_0x5b3ea4;logger[_0xfff6('0xa')](_0xfff6('0x61'),_0x59f823['id']);return getTicket(_0x9fb0ef,_0x2887af,_0x59f823,_0x189981,_0x5e7ce5,_0x189981['Fields'],_0x1e0fb2,_0xfff6('0x73'));})[_0xfff6('0x2a')](function(_0x518996){_0x4d91d6=_0x518996;logger[_0xfff6('0xa')](_0xfff6('0x64'));logger['info'](_0xfff6('0x65'),_0x4d91d6['id']);return setRelationship(_0x1e0fb2,_0x2887af,_0x4d91d6,'users');})[_0xfff6('0x2a')](function(){return setRelationship(_0x1e0fb2,_0x59f823,_0x4d91d6,_0xfff6('0x67'));})[_0xfff6('0x2a')](function(){return getServerInfo(_0x1e0fb2);})[_0xfff6('0x2a')](function(_0x4f156d){var _0xd0c4f0=parseInt(_0x4f156d[_0xfff6('0x74')]['charAt'](0x0));var _0x2766dc=util['format'](_0xfff6('0x69'),_0x9fb0ef[_0xfff6('0x54')],_0x4d91d6['id']);if(_0xd0c4f0>0x6){_0x2766dc=util[_0xfff6('0x1f')](_0xfff6('0x6a'),_0x9fb0ef[_0xfff6('0x54')],_0x4d91d6['id']);}logger[_0xfff6('0xa')](_0xfff6('0x75'),_0xfff6('0x6b'));emit(util[_0xfff6('0x1f')](_0xfff6('0x6c'),_0x36dc3a[_0xfff6('0xb')]),_0xfff6('0x6d'),{'uri':_0x2766dc});})[_0xfff6('0x76')](function(_0x1f14b7){logger[_0xfff6('0x6e')]('[OUTBOUND]',JSON[_0xfff6('0x23')](_0x1f14b7));});};exports['unmanaged']=function(_0x1da4ca,_0x552caa,_0x3643e7,_0x164309,_0x3b01d7,_0x130379){var _0xc69c6a,_0x45b911,_0x356ef9,_0x5f0ea1;_0x130379[_0xfff6('0x54')]=intUtil[_0xfff6('0x6f')](_0x130379['remoteUri']);_0x130379[_0xfff6('0x55')]=intUtil['stripTrailingSlash'](_0x130379[_0xfff6('0x55')]);def[_0xfff6('0x56')]=util[_0xfff6('0x1f')](_0xfff6('0x57'),_0x130379['remoteUri']);if(_0x3b01d7&&_0x3b01d7['monitor_format']){logger['info']('['+_0x552caa[_0xfff6('0x77')]['toUpperCase']()+']',_0xfff6('0x5a'));_0x552caa[_0xfff6('0x5b')]=util[_0xfff6('0x1f')](_0xfff6('0x5c'),_0x130379[_0xfff6('0x55')],_0x552caa[_0xfff6('0x5d')],md5(_0x552caa[_0xfff6('0x5d')]));}else{_0x552caa[_0xfff6('0x5b')]='';}return getConnection(_0x130379)[_0xfff6('0x2a')](function(_0x4fc797){_0x5f0ea1=_0x4fc797;if(!_['isNil'](_0x164309)){return getUser(_0x130379,_0x164309[_0xfff6('0xb')],_0x5f0ea1);}else{return getUser(_0x130379,null,_0x5f0ea1);}})['then'](function(_0x5152be){_0xc69c6a=_0x5152be;logger[_0xfff6('0xa')](_0xfff6('0x5e'),_0xc69c6a['id']);return getEndUser(_0x130379,_0x552caa['calleridname'],_0x552caa[_0xfff6('0x60')],_0x5f0ea1);})[_0xfff6('0x2a')](function(_0x4cdaa0){_0x45b911=_0x4cdaa0;logger[_0xfff6('0xa')]('The\x20Enduser\x20ID\x20is:',_0x45b911['id']);return getTicket(_0x130379,_0xc69c6a,_0x45b911,_0x3643e7,_0x552caa,_0x3643e7[_0xfff6('0x62')],_0x5f0ea1,_0xfff6('0x63'));})[_0xfff6('0x2a')](function(_0x345654){_0x356ef9=_0x345654;logger[_0xfff6('0xa')](_0xfff6('0x64'));logger[_0xfff6('0xa')](_0xfff6('0x65'),_0x356ef9['id']);return setRelationship(_0x5f0ea1,_0xc69c6a,_0x356ef9,_0xfff6('0x66'));})[_0xfff6('0x2a')](function(){return setRelationship(_0x5f0ea1,_0x45b911,_0x356ef9,_0xfff6('0x67'));})[_0xfff6('0x2a')](function(){return getServerInfo(_0x5f0ea1);})['catch'](function(_0x3a9092){logger[_0xfff6('0x6e')]('['+_0x552caa[_0xfff6('0x77')][_0xfff6('0x78')]()+']',JSON['stringify'](_0x3a9092));});};
\ No newline at end of file
+var _0xfc3f=['login','username','password','PLAIN','Account\x20%d\x20is\x20not\x20valid','set_relationship','Calls','remoteUri','stripTrailingSlash','serverUrl','%s/service/v4_1/rest.php','monitor_format','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','Inbound','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','users','charAt','%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s','[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','catch','error','uri','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','The\x20User\x20ID\x20is:','destcalleridname','destcalleridnum','Fields','contacts','version','%s/#bwc/index.php?module=Calls&action=EditView&record=%s','user:%s','unmanaged','lastevent','toUpperCase','lodash','request-promise','util','ioredis','./util','../../../../config/environment','../../../../config/logger','sugarcrm','defaults','localhost','socket.io-emitter','redis','info','Creating\x20new\x20ticket...','Subjects','assigned_user_id','description','getString','Descriptions','date_start','toISOString','replace','duration_hours','duration_minutes','parent_type','Contacts','parent_name','name','direction','forEach','variableName','push','idField','set_entry','JSON','stringify','apiKey','base64','get_server_info','isNil','Employees','format','INSTR\x20(\x20users.user_name,\x20\x22%s\x22)\x20>\x200','then','length','find','entry_list','user_name','Agent\x20found!','value','name_value_list','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','resolve','user_id','Agent\x20not\x20available,\x20using\x20the\x20admin\x20account!','get_entry_list','phone_home','Enduser\x20found!','first_name','<unknown>','Caller\x20-\x20%s','Enduser\x20created.','debug','[HTTP]','merge','map','type','nameField','customField','toLowerCase','content','string','custom_fields','variable','toString','Variable'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xfc3f,0x11f));var _0xffc3=function(_0x220dbb,_0x99328d){_0x220dbb=_0x220dbb-0x0;var _0x2b77de=_0xfc3f[_0x220dbb];return _0x2b77de;};'use strict';var _=require(_0xffc3('0x0'));var rp=require(_0xffc3('0x1'));var BPromise=require('bluebird');var md5=require('md5');var util=require(_0xffc3('0x2'));var Redis=require(_0xffc3('0x3'));var intUtil=require(_0xffc3('0x4'));var config=require(_0xffc3('0x5'));var logger=require(_0xffc3('0x6'))(_0xffc3('0x7'));config['redis']=_[_0xffc3('0x8')](config['redis'],{'host':_0xffc3('0x9'),'port':0x18eb});var io=require(_0xffc3('0xa'))(new Redis(config[_0xffc3('0xb')]));var def={'method':'POST','json':!![]};function emit(_0x328c3b,_0x49483b,_0x4d5181){io['to'](_0x328c3b)['emit'](_0x49483b,_0x4d5181);}function getTicket(_0x5781c2,_0x1e9a60,_0x393af8,_0xd1eb04,_0x3e92bb,_0x1d2f7f,_0x55432c,_0xc3930d){logger[_0xffc3('0xc')](_0xffc3('0xd'));var _0x89aa88=new Date();var _0x2e3196=[{'name':'name','value':intUtil['getString'](_0xd1eb04[_0xffc3('0xe')],_0x3e92bb,'\x20')},{'name':_0xffc3('0xf'),'value':_0x1e9a60['id']},{'name':'created_by','value':_0x1e9a60['id']},{'name':_0xffc3('0x10'),'value':intUtil[_0xffc3('0x11')](_0xd1eb04[_0xffc3('0x12')],_0x3e92bb,'\x0a')},{'name':_0xffc3('0x13'),'value':_0x89aa88[_0xffc3('0x14')]()['slice'](0x0,0x13)[_0xffc3('0x15')]('T','\x20')},{'name':_0xffc3('0x16'),'value':'0'},{'name':_0xffc3('0x17'),'value':'15'},{'name':'parent_id','value':_0x393af8['id']},{'name':_0xffc3('0x18'),'value':_0xffc3('0x19')},{'name':_0xffc3('0x1a'),'value':_0x393af8[_0xffc3('0x1b')]},{'name':_0xffc3('0x1c'),'value':_0xc3930d}];if(_0x1d2f7f['length']){_[_0xffc3('0x1d')](_0x1d2f7f,function(_0x166543){if(_0x3e92bb[_0x166543[_0xffc3('0x1e')]]){_0x2e3196[_0xffc3('0x1f')]({'name':_0x166543[_0xffc3('0x20')],'value':_0x3e92bb[_0x166543[_0xffc3('0x1e')]]});}});}return request({'form':{'method':_0xffc3('0x21'),'input_type':_0xffc3('0x22'),'response_type':_0xffc3('0x22'),'rest_data':JSON[_0xffc3('0x23')]({'session':_0x55432c['id'],'module_name':'Calls','name_value_list':_0x2e3196})}});}function getAuth(_0x5b37b8){return util['format']('Basic\x20%s',new Buffer(_0x5b37b8[_0xffc3('0x24')]+':X')['toString'](_0xffc3('0x25')));}function getServerInfo(_0x4236c4){return request({'form':{'method':_0xffc3('0x26'),'input_type':'JSON','response_type':'JSON','rest_data':JSON[_0xffc3('0x23')]({'session':_0x4236c4['id']})}});}function getUser(_0x1bbf28,_0x405785,_0x3e5af5){if(!_[_0xffc3('0x27')](_0x405785)){logger[_0xffc3('0xc')]('Getting\x20agent\x20with\x20name',_0x405785);return request({'form':{'method':'get_entry_list','input_type':_0xffc3('0x22'),'response_type':_0xffc3('0x22'),'rest_data':JSON[_0xffc3('0x23')]({'session':_0x3e5af5['id'],'module_name':_0xffc3('0x28'),'query':util[_0xffc3('0x29')](_0xffc3('0x2a'),_0x405785),'order_by':'','offset':'0','select_fields':['id','name','user_name'],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0xffc3('0x2b')](function(_0xe33c4a){if(_0xe33c4a['entry_list'][_0xffc3('0x2c')]){var _0x52e70c=_[_0xffc3('0x2d')](_0xe33c4a[_0xffc3('0x2e')],function(_0x23bc2d){return _0x23bc2d['name_value_list'][_0xffc3('0x2f')]['value']===_0x405785;});if(_0x52e70c){logger[_0xffc3('0xc')](_0xffc3('0x30'));return BPromise['resolve']({'id':_0x52e70c['name_value_list']['id'][_0xffc3('0x31')],'name':_0x52e70c[_0xffc3('0x32')][_0xffc3('0x1b')][_0xffc3('0x31')]});}}logger[_0xffc3('0xc')](_0xffc3('0x33'));return BPromise[_0xffc3('0x34')]({'id':_0x3e5af5[_0xffc3('0x32')][_0xffc3('0x35')][_0xffc3('0x31')],'name':_0x3e5af5[_0xffc3('0x32')][_0xffc3('0x2f')]['value']});});}else{logger[_0xffc3('0xc')](_0xffc3('0x36'));return BPromise[_0xffc3('0x34')]({'id':_0x3e5af5['name_value_list'][_0xffc3('0x35')]['value'],'name':_0x3e5af5[_0xffc3('0x32')][_0xffc3('0x2f')][_0xffc3('0x31')]});}}function getEndUser(_0x3d5b57,_0x408175,_0x5b5e9f,_0x1b85f4){logger[_0xffc3('0xc')]('Searching\x20enduser\x20with\x20phone',_0x5b5e9f);return request({'form':{'method':_0xffc3('0x37'),'input_type':_0xffc3('0x22'),'response_type':_0xffc3('0x22'),'rest_data':JSON[_0xffc3('0x23')]({'session':_0x1b85f4['id'],'module_name':'Contacts','query':util[_0xffc3('0x29')]('contacts.phone_home\x20=\x20\x22%s\x22',_0x5b5e9f),'order_by':'','offset':'0','select_fields':['id',_0xffc3('0x1b'),_0xffc3('0x38')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0xffc3('0x2b')](function(_0x1e3ed9){if(_0x1e3ed9['entry_list'][_0xffc3('0x2c')]){var _0x1c4cf1=_['find'](_0x1e3ed9[_0xffc3('0x2e')],function(_0x2b4440){return _0x2b4440[_0xffc3('0x32')][_0xffc3('0x38')][_0xffc3('0x31')]===_0x5b5e9f;});if(_0x1c4cf1){logger[_0xffc3('0xc')](_0xffc3('0x39'));return BPromise['resolve']({'id':_0x1c4cf1[_0xffc3('0x32')]['id'][_0xffc3('0x31')],'name':_0x1c4cf1[_0xffc3('0x32')]['name']['value'],'phone':_0x1c4cf1[_0xffc3('0x32')]['phone_home']['value']});}}else{logger[_0xffc3('0xc')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'form':{'method':_0xffc3('0x21'),'input_type':_0xffc3('0x22'),'response_type':'JSON','rest_data':JSON[_0xffc3('0x23')]({'session':_0x1b85f4['id'],'module_name':'Contacts','name_value_list':[{'name':_0xffc3('0x3a'),'value':_0x408175!==_0xffc3('0x3b')?_0x408175:util[_0xffc3('0x29')](_0xffc3('0x3c'),_0x5b5e9f)},{'name':_0xffc3('0x38'),'value':_0x5b5e9f}]})}})['then'](function(_0x87404a){logger[_0xffc3('0xc')](_0xffc3('0x3d'));return BPromise[_0xffc3('0x34')]({'id':_0x87404a['id'],'name':_0x87404a[_0xffc3('0x2e')]['first_name']['value'],'phone':_0x87404a['entry_list']['phone_home']['value']});});}});}function request(_0x4922fd){logger[_0xffc3('0x3e')](_0xffc3('0x3f'),JSON['stringify'](_0x4922fd));return rp(_[_0xffc3('0x40')](def,_0x4922fd));}function getTags(_0x2dd7fa,_0x5c22f4){var _0x2a8e0d=[];if(_0x2dd7fa&&_0x2dd7fa[_0xffc3('0x2c')]>0x0){_0x2a8e0d=_[_0xffc3('0x41')](_0x2dd7fa,_0x5c22f4);}return _0x2a8e0d;}function getCustomFields(_0x42bec4,_0x3ce3a4){var _0x23fbc2=[];var _0x38a40c={'custom_fields':[]};if(_0x42bec4[_0xffc3('0x2c')]>0x0){_[_0xffc3('0x1d')](_0x42bec4,function(_0x56caa7){if(_0x56caa7[_0xffc3('0x42')]==='string'&&_0x56caa7[_0xffc3('0x43')]&&!_0x56caa7[_0xffc3('0x44')]){_0x38a40c[_0x56caa7[_0xffc3('0x43')][_0xffc3('0x45')]()]=_0x56caa7[_0xffc3('0x46')]['toString']();}else if(_0x56caa7['type']===_0xffc3('0x47')&&_0x56caa7['idField']&&_0x56caa7[_0xffc3('0x44')]){_0x38a40c[_0xffc3('0x48')][_0xffc3('0x1f')]({'id':_0x56caa7[_0xffc3('0x20')],'value':_0x56caa7['content']['toString']()});}else if(_0x56caa7['type']===_0xffc3('0x49')&&_0x56caa7['variableName']&&_0x56caa7[_0xffc3('0x20')]&&_0x56caa7[_0xffc3('0x44')]){_0x3ce3a4[_0x56caa7[_0xffc3('0x1e')]]&&_0x38a40c[_0xffc3('0x48')][_0xffc3('0x1f')]({'id':_0x56caa7[_0xffc3('0x20')],'value':_0x3ce3a4[_0x56caa7[_0xffc3('0x1e')]][_0xffc3('0x4a')]()});}else if(_0x56caa7['type']==='customVariable'&&_0x56caa7[_0xffc3('0x4b')]&&_0x56caa7[_0xffc3('0x4b')]['name']&&_0x56caa7[_0xffc3('0x20')]&&_0x56caa7[_0xffc3('0x44')]){_0x3ce3a4[_0x56caa7[_0xffc3('0x4b')]['name'][_0xffc3('0x45')]()]&&_0x38a40c['custom_fields'][_0xffc3('0x1f')]({'id':_0x56caa7[_0xffc3('0x20')],'value':_0x3ce3a4[_0x56caa7[_0xffc3('0x4b')][_0xffc3('0x1b')][_0xffc3('0x45')]()][_0xffc3('0x4a')]()});}});}return _0x38a40c;}function getConnection(_0x5af78c){return request({'method':'POST','form':{'method':_0xffc3('0x4c'),'input_type':'JSON','response_type':_0xffc3('0x22'),'rest_data':JSON[_0xffc3('0x23')]({'user_auth':{'user_name':_0x5af78c[_0xffc3('0x4d')],'password':_0x5af78c[_0xffc3('0x4e')],'encryption':_0xffc3('0x4f')},'application':'xCALLY\x20Motion\x20integration'})}})[_0xffc3('0x2b')](function(_0x52b807){var _0xbf2dca=_0x52b807;if(_0xbf2dca['id']){def['sessionID']=_0xbf2dca['id'];return BPromise[_0xffc3('0x34')](_0xbf2dca);}else{throw new Error(util['format'](_0xffc3('0x50'),_0x5af78c['id']));}});}function setRelationship(_0x5a665d,_0x3650bd,_0x470375,_0x3ae922){return request({'form':{'method':_0xffc3('0x51'),'input_type':_0xffc3('0x22'),'response_type':'JSON','rest_data':JSON[_0xffc3('0x23')]({'session':_0x5a665d['id'],'module_name':_0xffc3('0x52'),'module_id':_0x470375['id'],'link_field_name':_0x3ae922,'related_ids':[_0x3650bd['id']],'name_value_list':[],'delete':0x0})}});}exports['queue']=function(_0x2b5c9b,_0x10f510,_0x73b921,_0x22c401,_0x4bcd8f,_0x4669fa){var _0x536471,_0x808420,_0x50f9cd,_0x2b969f;_0x4669fa[_0xffc3('0x53')]=intUtil[_0xffc3('0x54')](_0x4669fa[_0xffc3('0x53')]);_0x4669fa[_0xffc3('0x55')]=intUtil[_0xffc3('0x54')](_0x4669fa[_0xffc3('0x55')]);def['uri']=util[_0xffc3('0x29')](_0xffc3('0x56'),_0x4669fa['remoteUri']);if(_0x4bcd8f&&_0x4bcd8f[_0xffc3('0x57')]){logger[_0xffc3('0xc')]('[QUEUE]','Recording\x20is\x20enabled!');_0x10f510[_0xffc3('0x58')]=util[_0xffc3('0x29')](_0xffc3('0x59'),_0x4669fa['serverUrl'],_0x10f510['uniqueid'],md5(_0x10f510[_0xffc3('0x5a')]));}else{_0x10f510['recordingURL']='';}return getConnection(_0x4669fa)[_0xffc3('0x2b')](function(_0x4ac9de){_0x2b969f=_0x4ac9de;return getUser(_0x4669fa,_0x22c401['name'],_0x2b969f);})[_0xffc3('0x2b')](function(_0x10bb2f){_0x536471=_0x10bb2f;logger[_0xffc3('0xc')]('The\x20User\x20ID\x20is:',_0x536471['id']);return getEndUser(_0x4669fa,_0x10f510[_0xffc3('0x5b')],_0x10f510[_0xffc3('0x5c')],_0x2b969f);})[_0xffc3('0x2b')](function(_0x56f2de){_0x808420=_0x56f2de;logger[_0xffc3('0xc')](_0xffc3('0x5d'),_0x808420['id']);return getTicket(_0x4669fa,_0x536471,_0x808420,_0x73b921,_0x10f510,_0x73b921['Fields'],_0x2b969f,_0xffc3('0x5e'));})[_0xffc3('0x2b')](function(_0x85af8d){_0x50f9cd=_0x85af8d;logger['info'](_0xffc3('0x5f'));logger[_0xffc3('0xc')](_0xffc3('0x60'),_0x50f9cd['id']);return setRelationship(_0x2b969f,_0x536471,_0x50f9cd,_0xffc3('0x61'));})['then'](function(){return setRelationship(_0x2b969f,_0x808420,_0x50f9cd,'contacts');})['then'](function(){return getServerInfo(_0x2b969f);})[_0xffc3('0x2b')](function(_0x58e5f3){var _0x3ff6da=parseInt(_0x58e5f3['version'][_0xffc3('0x62')](0x0));var _0x5b86bc=util[_0xffc3('0x29')](_0xffc3('0x63'),_0x4669fa[_0xffc3('0x53')],_0x50f9cd['id']);if(_0x3ff6da>0x6){_0x5b86bc=util[_0xffc3('0x29')]('%s/#bwc/index.php?module=Calls&action=EditView&record=%s',_0x4669fa[_0xffc3('0x53')],_0x50f9cd['id']);}logger[_0xffc3('0xc')](_0xffc3('0x64'),_0xffc3('0x65'));emit(util[_0xffc3('0x29')]('user:%s',_0x22c401[_0xffc3('0x1b')]),_0xffc3('0x66'),{'uri':_0x5b86bc});})[_0xffc3('0x67')](function(_0x3e5d3a){logger[_0xffc3('0x68')](_0xffc3('0x64'),JSON[_0xffc3('0x23')](_0x3e5d3a));});};exports['outbound']=function(_0xa07311,_0x5af1f6,_0x293d22,_0x2ddd36,_0x519fb9,_0x561938,_0x7843c2){var _0x232a88,_0x19829f,_0x4367e8,_0x10e83b;_0x561938[_0xffc3('0x53')]=intUtil[_0xffc3('0x54')](_0x561938[_0xffc3('0x53')]);_0x561938[_0xffc3('0x55')]=intUtil[_0xffc3('0x54')](_0x561938[_0xffc3('0x55')]);def[_0xffc3('0x69')]=util['format']('%s/service/v4_1/rest.php',_0x561938[_0xffc3('0x53')]);if(_0x7843c2&&_0x7843c2[_0xffc3('0x6a')]&&_0x7843c2[_0xffc3('0x6a')]!==_0xffc3('0x6b')){logger[_0xffc3('0xc')](_0xffc3('0x6c'),_0xffc3('0x6d'));_0x5af1f6[_0xffc3('0x58')]=util[_0xffc3('0x29')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x561938[_0xffc3('0x55')],_0x5af1f6['uniqueid'],md5(_0x5af1f6[_0xffc3('0x5a')]));}return getConnection(_0x561938)[_0xffc3('0x2b')](function(_0x1b350e){_0x10e83b=_0x1b350e;return getUser(_0x561938,_0x2ddd36['name'],_0x10e83b);})[_0xffc3('0x2b')](function(_0x31f940){_0x232a88=_0x31f940;logger[_0xffc3('0xc')](_0xffc3('0x6e'),_0x232a88['id']);return getEndUser(_0x561938,_0x5af1f6[_0xffc3('0x6f')],_0x5af1f6[_0xffc3('0x70')],_0x10e83b);})[_0xffc3('0x2b')](function(_0xb71e94){_0x19829f=_0xb71e94;logger[_0xffc3('0xc')](_0xffc3('0x5d'),_0x19829f['id']);return getTicket(_0x561938,_0x232a88,_0x19829f,_0x293d22,_0x5af1f6,_0x293d22[_0xffc3('0x71')],_0x10e83b,'Outbound');})['then'](function(_0x9146ad){_0x4367e8=_0x9146ad;logger[_0xffc3('0xc')]('Ticket\x20created!');logger[_0xffc3('0xc')](_0xffc3('0x60'),_0x4367e8['id']);return setRelationship(_0x10e83b,_0x232a88,_0x4367e8,_0xffc3('0x61'));})[_0xffc3('0x2b')](function(){return setRelationship(_0x10e83b,_0x19829f,_0x4367e8,_0xffc3('0x72'));})[_0xffc3('0x2b')](function(){return getServerInfo(_0x10e83b);})[_0xffc3('0x2b')](function(_0x1a16a3){var _0x17c24f=parseInt(_0x1a16a3[_0xffc3('0x73')][_0xffc3('0x62')](0x0));var _0xdd78f9=util['format'](_0xffc3('0x63'),_0x561938['remoteUri'],_0x4367e8['id']);if(_0x17c24f>0x6){_0xdd78f9=util['format'](_0xffc3('0x74'),_0x561938[_0xffc3('0x53')],_0x4367e8['id']);}logger['info']('[OUTBOUND]',_0xffc3('0x65'));emit(util[_0xffc3('0x29')](_0xffc3('0x75'),_0x2ddd36[_0xffc3('0x1b')]),_0xffc3('0x66'),{'uri':_0xdd78f9});})['catch'](function(_0x810781){logger[_0xffc3('0x68')](_0xffc3('0x6c'),JSON['stringify'](_0x810781));});};exports[_0xffc3('0x76')]=function(_0x25d9d3,_0x201d20,_0x5dd4d6,_0x4f4509,_0x1ee1e3,_0x3dabae){var _0xad60cb,_0x3ae81a,_0x1b4d53,_0x223244;_0x3dabae['remoteUri']=intUtil['stripTrailingSlash'](_0x3dabae[_0xffc3('0x53')]);_0x3dabae['serverUrl']=intUtil[_0xffc3('0x54')](_0x3dabae[_0xffc3('0x55')]);def[_0xffc3('0x69')]=util[_0xffc3('0x29')](_0xffc3('0x56'),_0x3dabae[_0xffc3('0x53')]);if(_0x1ee1e3&&_0x1ee1e3[_0xffc3('0x57')]){logger['info']('['+_0x201d20[_0xffc3('0x77')][_0xffc3('0x78')]()+']',_0xffc3('0x6d'));_0x201d20[_0xffc3('0x58')]=util[_0xffc3('0x29')](_0xffc3('0x59'),_0x3dabae[_0xffc3('0x55')],_0x201d20[_0xffc3('0x5a')],md5(_0x201d20[_0xffc3('0x5a')]));}else{_0x201d20['recordingURL']='';}return getConnection(_0x3dabae)[_0xffc3('0x2b')](function(_0x89bbc1){_0x223244=_0x89bbc1;if(!_[_0xffc3('0x27')](_0x4f4509)){return getUser(_0x3dabae,_0x4f4509['name'],_0x223244);}else{return getUser(_0x3dabae,null,_0x223244);}})['then'](function(_0x22a7ac){_0xad60cb=_0x22a7ac;logger[_0xffc3('0xc')]('The\x20User\x20ID\x20is:',_0xad60cb['id']);return getEndUser(_0x3dabae,_0x201d20[_0xffc3('0x5b')],_0x201d20[_0xffc3('0x5c')],_0x223244);})[_0xffc3('0x2b')](function(_0x53d584){_0x3ae81a=_0x53d584;logger[_0xffc3('0xc')]('The\x20Enduser\x20ID\x20is:',_0x3ae81a['id']);return getTicket(_0x3dabae,_0xad60cb,_0x3ae81a,_0x5dd4d6,_0x201d20,_0x5dd4d6[_0xffc3('0x71')],_0x223244,'Inbound');})[_0xffc3('0x2b')](function(_0x2755d0){_0x1b4d53=_0x2755d0;logger['info']('Ticket\x20created!');logger['info'](_0xffc3('0x60'),_0x1b4d53['id']);return setRelationship(_0x223244,_0xad60cb,_0x1b4d53,_0xffc3('0x61'));})['then'](function(){return setRelationship(_0x223244,_0x3ae81a,_0x1b4d53,_0xffc3('0x72'));})[_0xffc3('0x2b')](function(){return getServerInfo(_0x223244);})[_0xffc3('0x67')](function(_0x23907c){logger[_0xffc3('0x68')]('['+_0x201d20[_0xffc3('0x77')][_0xffc3('0x78')]()+']',JSON[_0xffc3('0x23')](_0x23907c));});};
\ No newline at end of file
index be92adc..3cf93aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e1f=['validateEmail','isNil','test','lodash','util','getString','length','sortBy','type','string','push','content','variable','variableName','toString','customVariable','Variable','name','toLowerCase','keyValue','key','%s:\x20%s','keyContent','format','keyType','join','stripTrailingSlash','slice','substring'];(function(_0x1087cf,_0x54a191){var _0x30cad0=function(_0x232ae8){while(--_0x232ae8){_0x1087cf['push'](_0x1087cf['shift']());}};_0x30cad0(++_0x54a191);}(_0x4e1f,0xeb));var _0xf4e1=function(_0x270546,_0x5dc863){_0x270546=_0x270546-0x0;var _0x1c7ffc=_0x4e1f[_0x270546];return _0x1c7ffc;};'use strict';var _=require(_0xf4e1('0x0'));var util=require(_0xf4e1('0x1'));exports[_0xf4e1('0x2')]=function(_0x223f3d,_0x3be64f,_0x4742e8){var _0x201cd7=[];if(_0x223f3d[_0xf4e1('0x3')]>0x0){var _0x441357=_[_0xf4e1('0x4')](_0x223f3d,['id']);for(var _0x59d002=0x0;_0x59d002<_0x441357[_0xf4e1('0x3')];_0x59d002++){var _0x5590ab=_0x441357[_0x59d002];if(_0x5590ab[_0xf4e1('0x5')]===_0xf4e1('0x6')){_0x201cd7[_0xf4e1('0x7')](_0x5590ab[_0xf4e1('0x8')]);}else if(_0x5590ab['type']===_0xf4e1('0x9')&&_0x5590ab[_0xf4e1('0xa')]){_0x3be64f[_0x5590ab[_0xf4e1('0xa')]]&&_0x201cd7[_0xf4e1('0x7')](_0x3be64f[_0x5590ab[_0xf4e1('0xa')]][_0xf4e1('0xb')]());}else if(_0x5590ab['type']===_0xf4e1('0xc')&&_0x5590ab[_0xf4e1('0xd')]&&_0x5590ab[_0xf4e1('0xd')][_0xf4e1('0xe')]){_0x3be64f[_0x5590ab['Variable'][_0xf4e1('0xe')][_0xf4e1('0xf')]()]&&_0x201cd7['push'](_0x3be64f[_0x5590ab['Variable'][_0xf4e1('0xe')][_0xf4e1('0xf')]()][_0xf4e1('0xb')]());}else if(_0x5590ab[_0xf4e1('0x5')]===_0xf4e1('0x10')){if(_0x5590ab['keyType']===_0xf4e1('0x6')&&_0x5590ab[_0xf4e1('0x11')]){_0x201cd7[_0xf4e1('0x7')](util['format'](_0xf4e1('0x12'),_0x5590ab[_0xf4e1('0x11')],_0x5590ab[_0xf4e1('0x13')]));}else if(_0x5590ab['keyType']===_0xf4e1('0x9')&&_0x5590ab[_0xf4e1('0xa')]&&_0x5590ab[_0xf4e1('0x11')]){_0x3be64f[_0x5590ab[_0xf4e1('0xa')]]&&_0x201cd7[_0xf4e1('0x7')](util[_0xf4e1('0x14')](_0xf4e1('0x12'),_0x5590ab['key'],_0x3be64f[_0x5590ab['variableName']]));}else if(_0x5590ab[_0xf4e1('0x15')]==='customVariable'&&_0x5590ab[_0xf4e1('0xd')]&&_0x5590ab[_0xf4e1('0xd')][_0xf4e1('0xe')]&&_0x5590ab['key']){_0x3be64f[_0x5590ab[_0xf4e1('0xd')][_0xf4e1('0xe')]['toLowerCase']()]&&_0x201cd7[_0xf4e1('0x7')](util['format']('%s:\x20%s',_0x5590ab[_0xf4e1('0x11')],_0x3be64f[_0x5590ab[_0xf4e1('0xd')]['name'][_0xf4e1('0xf')]()]));}}}}return _0x201cd7[_0xf4e1('0x16')](_0x4742e8);};exports[_0xf4e1('0x17')]=function(_0x5f3102){var _0x679137=_0x5f3102[_0xf4e1('0x18')](-0x1);if(_0x679137==='/'){_0x5f3102=_0x5f3102[_0xf4e1('0x19')](0x0,_0x5f3102['lastIndexOf'](_0x679137));}return _0x5f3102;};exports[_0xf4e1('0x1a')]=function(_0x32f497){if(!_[_0xf4e1('0x1b')](_0x32f497)&&_0x32f497!==''){var _0x1372ff=/^(([^<>()\[\]\\.,;:\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 _0x1372ff[_0xf4e1('0x1c')](String(_0x32f497)['toLowerCase']());}else{return![];}};
\ No newline at end of file
+var _0x245b=['toLowerCase','keyValue','keyType','key','format','%s:\x20%s','keyContent','join','stripTrailingSlash','slice','substring','lastIndexOf','validateEmail','isNil','test','lodash','util','getString','length','sortBy','type','string','push','content','variable','variableName','toString','customVariable','Variable','name'];(function(_0x3c30e4,_0x380837){var _0x2152c0=function(_0x30ccc9){while(--_0x30ccc9){_0x3c30e4['push'](_0x3c30e4['shift']());}};_0x2152c0(++_0x380837);}(_0x245b,0x177));var _0xb245=function(_0x9c6575,_0x36c372){_0x9c6575=_0x9c6575-0x0;var _0x575b35=_0x245b[_0x9c6575];return _0x575b35;};'use strict';var _=require(_0xb245('0x0'));var util=require(_0xb245('0x1'));exports[_0xb245('0x2')]=function(_0x3e21f0,_0x4e9dbb,_0x2a4a63){var _0x2c2700=[];if(_0x3e21f0[_0xb245('0x3')]>0x0){var _0x52f397=_[_0xb245('0x4')](_0x3e21f0,['id']);for(var _0x45b655=0x0;_0x45b655<_0x52f397[_0xb245('0x3')];_0x45b655++){var _0xdf030c=_0x52f397[_0x45b655];if(_0xdf030c[_0xb245('0x5')]===_0xb245('0x6')){_0x2c2700[_0xb245('0x7')](_0xdf030c[_0xb245('0x8')]);}else if(_0xdf030c['type']===_0xb245('0x9')&&_0xdf030c[_0xb245('0xa')]){_0x4e9dbb[_0xdf030c[_0xb245('0xa')]]&&_0x2c2700['push'](_0x4e9dbb[_0xdf030c[_0xb245('0xa')]][_0xb245('0xb')]());}else if(_0xdf030c[_0xb245('0x5')]===_0xb245('0xc')&&_0xdf030c[_0xb245('0xd')]&&_0xdf030c[_0xb245('0xd')]['name']){_0x4e9dbb[_0xdf030c[_0xb245('0xd')][_0xb245('0xe')][_0xb245('0xf')]()]&&_0x2c2700[_0xb245('0x7')](_0x4e9dbb[_0xdf030c['Variable'][_0xb245('0xe')]['toLowerCase']()][_0xb245('0xb')]());}else if(_0xdf030c[_0xb245('0x5')]===_0xb245('0x10')){if(_0xdf030c[_0xb245('0x11')]===_0xb245('0x6')&&_0xdf030c[_0xb245('0x12')]){_0x2c2700[_0xb245('0x7')](util[_0xb245('0x13')](_0xb245('0x14'),_0xdf030c[_0xb245('0x12')],_0xdf030c[_0xb245('0x15')]));}else if(_0xdf030c[_0xb245('0x11')]==='variable'&&_0xdf030c['variableName']&&_0xdf030c[_0xb245('0x12')]){_0x4e9dbb[_0xdf030c[_0xb245('0xa')]]&&_0x2c2700['push'](util[_0xb245('0x13')]('%s:\x20%s',_0xdf030c[_0xb245('0x12')],_0x4e9dbb[_0xdf030c[_0xb245('0xa')]]));}else if(_0xdf030c[_0xb245('0x11')]===_0xb245('0xc')&&_0xdf030c[_0xb245('0xd')]&&_0xdf030c[_0xb245('0xd')]['name']&&_0xdf030c['key']){_0x4e9dbb[_0xdf030c['Variable'][_0xb245('0xe')][_0xb245('0xf')]()]&&_0x2c2700[_0xb245('0x7')](util[_0xb245('0x13')](_0xb245('0x14'),_0xdf030c['key'],_0x4e9dbb[_0xdf030c['Variable'][_0xb245('0xe')][_0xb245('0xf')]()]));}}}}return _0x2c2700[_0xb245('0x16')](_0x2a4a63);};exports[_0xb245('0x17')]=function(_0x46aaf4){var _0x4c6112=_0x46aaf4[_0xb245('0x18')](-0x1);if(_0x4c6112==='/'){_0x46aaf4=_0x46aaf4[_0xb245('0x19')](0x0,_0x46aaf4[_0xb245('0x1a')](_0x4c6112));}return _0x46aaf4;};exports[_0xb245('0x1b')]=function(_0x167b5c){if(!_[_0xb245('0x1c')](_0x167b5c)&&_0x167b5c!==''){var _0xd16ed3=/^(([^<>()\[\]\\.,;:\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 _0xd16ed3[_0xb245('0x1d')](String(_0x167b5c)['toLowerCase']());}else{return![];}};
\ No newline at end of file
index d9d1c4a..864188e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x45efab,_0x4fa050){var _0x214bb7=function(_0x11c55f){while(--_0x11c55f){_0x45efab['push'](_0x45efab['shift']());}};_0x214bb7(++_0x4fa050);}(_0x9c44,0x178));var _0x49c4=function(_0x24061a,_0x1c9f4d){_0x24061a=_0x24061a-0x0;var _0x82054e=_0x9c44[_0x24061a];return _0x82054e;};'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
+var _0x34e8=['redis','defaults','localhost','emit','length','forEach','includes','string','picklist','type','idField','toString','variableName','Variable','name','toLowerCase','info','Creating\x20new\x20ticket...','merge','Normal','getString','Subjects','POST','format','remoteUri','create','sessionName','HelpDesk','stringify','success','error','catch','statusCode','Getting\x20agent\x20with\x20email','GET','%s/webservice.php','query','username','SELECT\x20first_name,\x20last_name,\x20email1\x20FROM\x20Users\x20WHERE\x20email1=\x27%s\x27;','result','Agent\x20found!','resolve','email1','first_name','last_name','userId','[vTiger],\x20%s,\x20%s,\x20%s','getUser','admin','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!','phone','getEndUser','accessKey','getchallenge','then','login','token','Account\x20%d\x20is\x20not\x20valid','getConnection','[HTTP]','queue','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','recordingURL','email','The\x20User\x20ID\x20is:','calleridnum','Fields','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT','[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','outbound','stripTrailingSlash','recordingFormat','none','[OUTBOUND]','uniqueid','destcalleridname','destcalleridnum','The\x20Enduser\x20ID\x20is:','split','unmanaged','lastevent','toUpperCase','calleridname','lodash','request-promise','bluebird','md5','ioredis','./util','../../../../config/environment','../../../../config/logger','vTiger'];(function(_0xdd533e,_0x121eed){var _0x5e5b56=function(_0x1dff4b){while(--_0x1dff4b){_0xdd533e['push'](_0xdd533e['shift']());}};_0x5e5b56(++_0x121eed);}(_0x34e8,0x12c));var _0x834e=function(_0x953e6e,_0x46ca31){_0x953e6e=_0x953e6e-0x0;var _0xf133b8=_0x34e8[_0x953e6e];return _0xf133b8;};'use strict';var _=require(_0x834e('0x0'));var rp=require(_0x834e('0x1'));var BPromise=require(_0x834e('0x2'));var md5=require(_0x834e('0x3'));var util=require('util');var Redis=require(_0x834e('0x4'));var intUtil=require(_0x834e('0x5'));var config=require(_0x834e('0x6'));var logger=require(_0x834e('0x7'))(_0x834e('0x8'));config[_0x834e('0x9')]=_[_0x834e('0xa')](config['redis'],{'host':_0x834e('0xb'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x834e('0x9')]));function emit(_0x3cc2e3,_0x3a3ef6,_0x2e69e2){io['to'](_0x3cc2e3)[_0x834e('0xc')](_0x3a3ef6,_0x2e69e2);}function getCustomFields(_0x23501c,_0x363786){var _0x1af45a={};if(_0x23501c[_0x834e('0xd')]>0x0){_[_0x834e('0xe')](_0x23501c,function(_0x1e41fe){if(_[_0x834e('0xf')]([_0x834e('0x10'),_0x834e('0x11')],_0x1e41fe[_0x834e('0x12')])&&_0x1e41fe[_0x834e('0x13')]){_0x1af45a[_0x1e41fe[_0x834e('0x13')]]=_0x1e41fe['content'][_0x834e('0x14')]();}else if(_0x1e41fe[_0x834e('0x12')]==='variable'&&_0x1e41fe[_0x834e('0x15')]&&_0x1e41fe[_0x834e('0x13')]&&_0x363786[_0x1e41fe[_0x834e('0x15')]]){_0x1af45a[_0x1e41fe[_0x834e('0x13')]]=_0x363786[_0x1e41fe['variableName']][_0x834e('0x14')]();}else if(_0x1e41fe[_0x834e('0x12')]==='customVariable'&&_0x1e41fe[_0x834e('0x16')]&&_0x1e41fe['Variable'][_0x834e('0x17')]&&_0x1e41fe[_0x834e('0x13')]&&_0x363786[_0x1e41fe['Variable'][_0x834e('0x17')][_0x834e('0x18')]()]){_0x1af45a[_0x1e41fe[_0x834e('0x13')]]=_0x363786[_0x1e41fe['Variable'][_0x834e('0x17')][_0x834e('0x18')]()][_0x834e('0x14')]();}});}return _0x1af45a;}function createTicket(_0xb993a1,_0x237947,_0x254677,_0x1dd214,_0x595515,_0x2545b4,_0x1fd2c6){logger[_0x834e('0x19')](_0x834e('0x1a'));var _0x4ab05d=_[_0x834e('0x1b')]({'parent_id':'','assigned_user_id':_0x237947['id'],'ticketpriorities':_0x834e('0x1c'),'ticketstatus':'Open','ticket_title':intUtil[_0x834e('0x1d')](_0x1dd214[_0x834e('0x1e')],_0x595515,'\x20'),'description':intUtil[_0x834e('0x1d')](_0x1dd214['Descriptions'],_0x595515,'\x0a'),'contact_id':_0x254677['id']},getCustomFields(_0x2545b4,_0x595515));var _0x4e3f48={'method':_0x834e('0x1f'),'uri':util[_0x834e('0x20')]('%s/webservice.php',_0xb993a1[_0x834e('0x21')]),'form':{'operation':_0x834e('0x22'),'username':_0xb993a1['username'],'sessionName':_0x1fd2c6[_0x834e('0x23')],'elementType':_0x834e('0x24'),'element':JSON[_0x834e('0x25')](_0x4ab05d)},'json':!![]};return request(_0x4e3f48)['then'](function(_0x24fcf7){if(_0x24fcf7[_0x834e('0x26')]){return BPromise['resolve']({'id':_0x24fcf7['result']['id']});}else{throw new Error(util[_0x834e('0x20')]('Ticket\x20could\x20not\x20be\x20created\x20due\x20to:\x20%s',JSON[_0x834e('0x25')](_0x24fcf7[_0x834e('0x27')])));}})[_0x834e('0x28')](function(_0x2cc2eb){var _0x3cd928=_0x2cc2eb[_0x834e('0x29')]||0x1f4;logger['error']('[vTiger],\x20%s,\x20%s,\x20%s','createTicket',_0x3cd928,JSON['stringify'](_0x2cc2eb));});}function getUser(_0x2c7a8d,_0x567cea,_0x106d6a){if(intUtil['validateEmail'](_0x567cea)){logger[_0x834e('0x19')](_0x834e('0x2a'),_0x567cea);return request({'method':_0x834e('0x2b'),'uri':util[_0x834e('0x20')](_0x834e('0x2c'),_0x2c7a8d[_0x834e('0x21')]),'qs':{'operation':_0x834e('0x2d'),'username':_0x2c7a8d[_0x834e('0x2e')],'sessionName':_0x106d6a[_0x834e('0x23')],'query':util['format'](_0x834e('0x2f'),_0x567cea)},'json':!![]})['then'](function(_0x2c75c2){if(_0x2c75c2[_0x834e('0x26')]&&_0x2c75c2[_0x834e('0x30')][_0x834e('0xd')]){logger[_0x834e('0x19')](_0x834e('0x31'));return BPromise[_0x834e('0x32')]({'id':_0x2c75c2[_0x834e('0x30')][0x0]['id'],'email':_0x2c75c2[_0x834e('0x30')][0x0][_0x834e('0x33')],'name':_0x2c75c2['result'][0x0][_0x834e('0x34')]+'\x20'+_0x2c75c2[_0x834e('0x30')][_0x834e('0x35')]});}else{logger[_0x834e('0x19')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return BPromise[_0x834e('0x32')]({'id':_0x106d6a[_0x834e('0x36')],'email':_0x2c7a8d['username'],'name':'admin'});}})['catch'](function(_0x3e58fa){var _0x41bf4d=_0x3e58fa[_0x834e('0x29')]||0x1f4;logger[_0x834e('0x27')](_0x834e('0x37'),_0x834e('0x38'),_0x41bf4d,JSON['stringify'](_0x3e58fa));});}else{logger[_0x834e('0x19')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return BPromise[_0x834e('0x32')]({'id':_0x106d6a[_0x834e('0x36')],'email':_0x2c7a8d['username'],'name':_0x834e('0x39')})[_0x834e('0x28')](function(_0x491c28){var _0x481f70=_0x491c28[_0x834e('0x29')]||0x1f4;logger[_0x834e('0x27')](_0x834e('0x37'),_0x834e('0x38'),_0x481f70,JSON[_0x834e('0x25')](_0x491c28));});}}function getEndUser(_0x4ca43c,_0x1c5ed6,_0x548d1d,_0x50c243){logger[_0x834e('0x19')]('Searching\x20end\x20user\x20with\x20phone',_0x548d1d);return request({'method':_0x834e('0x2b'),'uri':util[_0x834e('0x20')](_0x834e('0x2c'),_0x4ca43c[_0x834e('0x21')]),'qs':{'operation':_0x834e('0x2d'),'username':_0x4ca43c['username'],'sessionName':_0x50c243[_0x834e('0x23')],'query':util[_0x834e('0x20')](_0x834e('0x3a'),_0x548d1d,_0x548d1d,_0x548d1d,_0x548d1d,_0x548d1d)},'json':!![]})['then'](function(_0x35380e){if(_0x35380e[_0x834e('0x26')]&&_0x35380e['result'][_0x834e('0xd')]){logger['info'](_0x834e('0x3b'));return BPromise[_0x834e('0x32')]({'id':_0x35380e['result'][0x0]['id'],'name':_0x35380e['result'][0x0][_0x834e('0x3c')]+'\x20'+_0x35380e[_0x834e('0x30')][0x0][_0x834e('0x3d')],'phone':_0x548d1d});}else{logger[_0x834e('0x19')](_0x834e('0x3e'));return request({'method':_0x834e('0x1f'),'uri':util[_0x834e('0x20')]('%s/webservice.php',_0x4ca43c[_0x834e('0x21')]),'form':{'operation':'create','sessionName':_0x50c243[_0x834e('0x23')],'elementType':'Contacts','element':JSON[_0x834e('0x25')]({'lastname':_0x1c5ed6,'phone':_0x548d1d,'assigned_user_id':'\x20'})},'json':!![]})['then'](function(_0x361f60){logger[_0x834e('0x19')]('Enduser\x20created.');return BPromise[_0x834e('0x32')]({'id':_0x361f60[_0x834e('0x30')]['id'],'name':_0x361f60[_0x834e('0x30')][_0x834e('0x3d')],'phone':_0x361f60[_0x834e('0x30')][_0x834e('0x3f')]});})[_0x834e('0x28')](function(_0x3ccd8e){var _0x5dc63b=_0x3ccd8e[_0x834e('0x29')]||0x1f4;logger['error'](_0x834e('0x37'),_0x834e('0x40'),_0x5dc63b,JSON['stringify'](_0x3ccd8e));});}});}function getConnection(_0x112306){var _0x42fd90=_0x112306[_0x834e('0x2e')];var _0x2112d5=_0x112306[_0x834e('0x41')];return request({'method':_0x834e('0x2b'),'uri':util['format']('%s/webservice.php',_0x112306[_0x834e('0x21')]),'qs':{'operation':_0x834e('0x42'),'username':_0x42fd90},'json':!![]})[_0x834e('0x43')](function(_0x40ff5a){if(_0x40ff5a[_0x834e('0x26')]){return request({'method':_0x834e('0x1f'),'uri':util[_0x834e('0x20')](_0x834e('0x2c'),_0x112306[_0x834e('0x21')]),'form':{'operation':_0x834e('0x44'),'username':_0x42fd90,'accessKey':md5(_0x40ff5a[_0x834e('0x30')][_0x834e('0x45')]+_0x2112d5)},'json':!![]});}})[_0x834e('0x43')](function(_0x1a3237){if(_0x1a3237[_0x834e('0x26')]){return BPromise[_0x834e('0x32')](_0x1a3237[_0x834e('0x30')]);}else{throw new Error(util[_0x834e('0x20')](_0x834e('0x46'),_0x112306['id']));}})[_0x834e('0x28')](function(_0x4cfacd){var _0x1cc0b8=_0x4cfacd[_0x834e('0x29')]||0x1f4;logger['error'](_0x834e('0x37'),_0x834e('0x47'),_0x1cc0b8,JSON['stringify'](_0x4cfacd));});}function request(_0x3dcca3){logger[_0x834e('0x19')](_0x834e('0x48'),JSON[_0x834e('0x25')](_0x3dcca3));return rp(_0x3dcca3);}exports[_0x834e('0x49')]=function(_0xb77aab,_0x4549ba,_0x4a8b32,_0x1ad7fe,_0x8bc6c6,_0x3e0550){var _0x363675,_0x86ad2b,_0x396bbe,_0x344b51;_0x3e0550[_0x834e('0x21')]=intUtil['stripTrailingSlash'](_0x3e0550[_0x834e('0x21')]);if(_0x8bc6c6&&_0x8bc6c6['monitor_format']){logger[_0x834e('0x19')]('[QUEUE]',_0x834e('0x4a'));_0x4549ba['recordingURL']=util['format'](_0x834e('0x4b'),_0x3e0550[_0x834e('0x4c')],_0x4549ba['uniqueid'],md5(_0x4549ba['uniqueid']));}else{_0x4549ba[_0x834e('0x4d')]='';}return getConnection(_0x3e0550)[_0x834e('0x43')](function(_0x138ed2){_0x344b51=_0x138ed2;return getUser(_0x3e0550,_0x1ad7fe[_0x834e('0x4e')],_0x344b51);})[_0x834e('0x43')](function(_0x315858){_0x363675=_0x315858;logger[_0x834e('0x19')](_0x834e('0x4f'),_0x363675['id']);return getEndUser(_0x3e0550,_0x4549ba['calleridname'],_0x4549ba[_0x834e('0x50')],_0x344b51);})[_0x834e('0x43')](function(_0x5d5ac2){_0x86ad2b=_0x5d5ac2;logger[_0x834e('0x19')]('The\x20Enduser\x20ID\x20is:',_0x86ad2b['id']);return createTicket(_0x3e0550,_0x363675,_0x86ad2b,_0x4a8b32,_0x4549ba,_0x4a8b32[_0x834e('0x51')],_0x344b51);})[_0x834e('0x43')](function(_0x5160c4){_0x396bbe=_0x5160c4;logger[_0x834e('0x19')](_0x834e('0x52'));logger[_0x834e('0x19')](_0x834e('0x53'),_0x396bbe['id']);var _0x5a2924=util[_0x834e('0x20')](_0x834e('0x54'),_0x3e0550[_0x834e('0x21')],_['split'](_0x396bbe['id'],'x')[0x1]);logger[_0x834e('0x19')](_0x834e('0x55'),_0x834e('0x56'));emit(util[_0x834e('0x20')](_0x834e('0x57'),_0x1ad7fe[_0x834e('0x17')]),_0x834e('0x58'),{'uri':_0x5a2924});})[_0x834e('0x28')](function(_0x208c21){logger[_0x834e('0x27')](_0x834e('0x55'),JSON[_0x834e('0x25')](_0x208c21));});};exports[_0x834e('0x59')]=function(_0x1659c8,_0x460a7a,_0x17b8e3,_0x297cce,_0x14ed83,_0x193a15,_0x3e3467){var _0xed4081,_0x2cb233,_0x5c83eb,_0x2145cf;_0x193a15[_0x834e('0x21')]=intUtil[_0x834e('0x5a')](_0x193a15[_0x834e('0x21')]);_0x193a15['serverUrl']=intUtil[_0x834e('0x5a')](_0x193a15['serverUrl']);if(_0x3e3467&&_0x3e3467['recordingFormat']&&_0x3e3467[_0x834e('0x5b')]!==_0x834e('0x5c')){logger[_0x834e('0x19')](_0x834e('0x5d'),_0x834e('0x4a'));_0x460a7a[_0x834e('0x4d')]=util[_0x834e('0x20')](_0x834e('0x4b'),_0x193a15['serverUrl'],_0x460a7a[_0x834e('0x5e')],md5(_0x460a7a['uniqueid']));}return getConnection(_0x193a15)[_0x834e('0x43')](function(_0xd35dda){_0x2145cf=_0xd35dda;return getUser(_0x193a15,_0x297cce['email'],_0x2145cf);})['then'](function(_0x4a4def){_0xed4081=_0x4a4def;logger[_0x834e('0x19')](_0x834e('0x4f'),_0xed4081['id']);return getEndUser(_0x193a15,_0x460a7a[_0x834e('0x5f')],_0x460a7a[_0x834e('0x60')],_0x2145cf);})['then'](function(_0x2b0d93){_0x2cb233=_0x2b0d93;logger[_0x834e('0x19')](_0x834e('0x61'),_0x2cb233['id']);return createTicket(_0x193a15,_0xed4081,_0x2cb233,_0x17b8e3,_0x460a7a,_0x17b8e3[_0x834e('0x51')],_0x2145cf);})[_0x834e('0x43')](function(_0x28b5c9){_0x5c83eb=_0x28b5c9;logger[_0x834e('0x19')](_0x834e('0x52'));logger[_0x834e('0x19')](_0x834e('0x53'),_0x5c83eb['id']);var _0x5b2bf6=util[_0x834e('0x20')](_0x834e('0x54'),_0x193a15[_0x834e('0x21')],_[_0x834e('0x62')](_0x5c83eb['id'],'x')[0x1]);logger['info'](_0x834e('0x5d'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util['format']('user:%s',_0x297cce[_0x834e('0x17')]),_0x834e('0x58'),{'uri':_0x5b2bf6});})['catch'](function(_0x2645df){logger[_0x834e('0x27')]('[OUTBOUND]',JSON[_0x834e('0x25')](_0x2645df));});};exports[_0x834e('0x63')]=function(_0x4b88e7,_0x5df169,_0x346be5,_0x2a42a3,_0x8bc7d9,_0x44c909){var _0x1d8e7,_0x493239,_0x264a6f,_0x520367;_0x44c909[_0x834e('0x21')]=intUtil[_0x834e('0x5a')](_0x44c909[_0x834e('0x21')]);_0x44c909['serverUrl']=intUtil[_0x834e('0x5a')](_0x44c909[_0x834e('0x4c')]);if(_0x8bc7d9&&_0x8bc7d9['monitor_format']){logger[_0x834e('0x19')]('['+_0x5df169[_0x834e('0x64')][_0x834e('0x65')]()+']','Recording\x20is\x20enabled!');_0x5df169[_0x834e('0x4d')]=util[_0x834e('0x20')](_0x834e('0x4b'),_0x44c909[_0x834e('0x4c')],_0x5df169[_0x834e('0x5e')],md5(_0x5df169[_0x834e('0x5e')]));}else{_0x5df169[_0x834e('0x4d')]='';}return getConnection(_0x44c909)[_0x834e('0x43')](function(_0xd49002){_0x520367=_0xd49002;return getUser(_0x44c909,'',_0x520367);})[_0x834e('0x43')](function(_0x57d898){_0x1d8e7=_0x57d898;logger['info']('The\x20User\x20ID\x20is:',_0x1d8e7['id']);return getEndUser(_0x44c909,_0x5df169[_0x834e('0x66')],_0x5df169[_0x834e('0x50')],_0x520367);})[_0x834e('0x43')](function(_0x37fa2c){_0x493239=_0x37fa2c;logger[_0x834e('0x19')]('The\x20Enduser\x20ID\x20is:',_0x493239['id']);return createTicket(_0x44c909,_0x1d8e7,_0x493239,_0x346be5,_0x5df169,_0x346be5['Fields'],_0x520367);})[_0x834e('0x43')](function(_0x1ad428){_0x264a6f=_0x1ad428;logger[_0x834e('0x19')](_0x834e('0x52'));logger[_0x834e('0x19')]('The\x20Ticket\x20ID\x20is:',_0x264a6f['id']);})[_0x834e('0x28')](function(_0x2b162a){logger[_0x834e('0x27')]('['+_0x5df169['lastevent'][_0x834e('0x65')]()+']',JSON[_0x834e('0x25')](_0x2b162a));});};
\ No newline at end of file
index adc0830..6cded40 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf2c6=['format','%s/tickets.json','remoteUri','POST','merge','Tags','name','getString','Subjects','Descriptions','Fields','then','Ticket\x20created!','ticket','validateEmail','Getting\x20agent\x20with\x20email','count','Agent\x20found!','results','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Admin\x20account\x20selected.','user','%s/users/me.json','Searching\x20enduser\x20with\x20phone','%s/search.json','length','end-user','first','%s/users.json','Enduser\x20created.','authType','password','%s:%s','username','token','%s/token:%s','Basic\x20%s','map','string','type','nameField','toLowerCase','content','toString','includes','idField','customField','push','variable','variableName','custom_fields','customVariable','Variable','queue','stripTrailingSlash','serverUrl','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','email','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','[QUEUE]','Displaying\x20ticket\x20to\x20agent...','%s/channels/voice/agents/%d/tickets/%d/display.json','newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','%s/agent/tickets/%s','replace','/api/v2','error','catch','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','outbound','recordingFormat','none','[OUTBOUND]','Authorization','The\x20User\x20ID\x20is:','destcalleridnum','integrationTab','Zendesk\x20account\x20type\x20not\x20recognized','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','inspect','unmanaged','toUpperCase','lastevent','\x20Error\x20running\x20Zendesk\x20integration','lodash','util','ioredis','./util','../../../../config/logger','zendesk','defaults','redis','socket.io-emitter','emit','application/json','info','Creating\x20new\x20ticket...'];(function(_0x21d9f7,_0x48c0f8){var _0xc45499=function(_0x115327){while(--_0x115327){_0x21d9f7['push'](_0x21d9f7['shift']());}};_0xc45499(++_0x48c0f8);}(_0xf2c6,0xc7));var _0x6f2c=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0xf2c6[_0x5ddb1c];return _0x354adc;};'use strict';var _=require(_0x6f2c('0x0'));var rp=require('request-promise');var md5=require('md5');var util=require(_0x6f2c('0x1'));var Redis=require(_0x6f2c('0x2'));var intUtil=require(_0x6f2c('0x3'));var config=require('../../../../config/environment');var logger=require(_0x6f2c('0x4'))(_0x6f2c('0x5'));config['redis']=_[_0x6f2c('0x6')](config[_0x6f2c('0x7')],{'host':'localhost','port':0x18eb});var io=require(_0x6f2c('0x8'))(new Redis(config['redis']));function emit(_0x1f47e8,_0x1e442d,_0xefb7f){io['to'](_0x1f47e8)[_0x6f2c('0x9')](_0x1e442d,_0xefb7f);}var headers={'Content-Type':_0x6f2c('0xa'),'Accept':_0x6f2c('0xa')};function getTicket(_0x3dc8aa,_0x2ab324,_0xc19a20,_0x22ad65,_0x5c85fd){logger[_0x6f2c('0xb')](_0x6f2c('0xc'));return request({'uri':util[_0x6f2c('0xd')](_0x6f2c('0xe'),_0x3dc8aa[_0x6f2c('0xf')]),'method':_0x6f2c('0x10'),'body':{'ticket':_[_0x6f2c('0x11')]({'requester_id':_0xc19a20['id'],'submitter_id':_0x2ab324?_0x2ab324['id']:undefined,'assignee_id':_0x2ab324?_0x2ab324['id']:undefined,'tags':getTags(_0x22ad65[_0x6f2c('0x12')],_0x6f2c('0x13')),'subject':intUtil[_0x6f2c('0x14')](_0x22ad65[_0x6f2c('0x15')],_0x5c85fd,'\x20'),'description':intUtil[_0x6f2c('0x14')](_0x22ad65[_0x6f2c('0x16')],_0x5c85fd,'\x0a'),'comment':{'public':![],'body':intUtil[_0x6f2c('0x14')](_0x22ad65[_0x6f2c('0x16')],_0x5c85fd,'\x0a')}},getCustomFields(_0x22ad65[_0x6f2c('0x17')],_0x5c85fd))}})[_0x6f2c('0x18')](function(_0x4f0b76){logger[_0x6f2c('0xb')](_0x6f2c('0x19'));return _0x4f0b76[_0x6f2c('0x1a')];});}function getUser(_0x2e5722,_0xfdec23){if(intUtil[_0x6f2c('0x1b')](_0xfdec23)){logger[_0x6f2c('0xb')](_0x6f2c('0x1c'),_0xfdec23);return request({'uri':util[_0x6f2c('0xd')]('%s/search.json',_0x2e5722[_0x6f2c('0xf')]),'qs':{'query':util[_0x6f2c('0xd')]('type:user\x20role:agent\x20email:%s',_0xfdec23)}})[_0x6f2c('0x18')](function(_0x4239b9){if(_0x4239b9[_0x6f2c('0x1d')]){logger[_0x6f2c('0xb')](_0x6f2c('0x1e'));return _['find'](_0x4239b9[_0x6f2c('0x1f')],{'email':_0xfdec23,'role':'agent'});}else{logger[_0x6f2c('0xb')](_0x6f2c('0x20'));return request({'uri':util[_0x6f2c('0xd')]('%s/users/me.json',_0x2e5722[_0x6f2c('0xf')])})[_0x6f2c('0x18')](function(_0x5bb089){logger[_0x6f2c('0xb')](_0x6f2c('0x21'));return _0x5bb089[_0x6f2c('0x22')];});}});}else{logger[_0x6f2c('0xb')](_0x6f2c('0x20'));return request({'uri':util[_0x6f2c('0xd')](_0x6f2c('0x23'),_0x2e5722[_0x6f2c('0xf')])})[_0x6f2c('0x18')](function(_0x45ef8f){logger[_0x6f2c('0xb')](_0x6f2c('0x21'));return _0x45ef8f[_0x6f2c('0x22')];});}}function getEndUser(_0x14bffc,_0x17aa99,_0xf01a19){logger[_0x6f2c('0xb')](_0x6f2c('0x24'),_0xf01a19);return request({'uri':util[_0x6f2c('0xd')](_0x6f2c('0x25'),_0x14bffc[_0x6f2c('0xf')]),'qs':{'query':util['format']('type:user\x20role:end-user\x20phone:%s',_0xf01a19)}})['then'](function(_0x357790){var _0x2bf8be;if(_0x357790['results'][_0x6f2c('0x26')]){_0x357790[_0x6f2c('0x1f')]=_['filter'](_0x357790[_0x6f2c('0x1f')],{'suspended':![],'role':_0x6f2c('0x27')});if(_0x357790[_0x6f2c('0x1f')][_0x6f2c('0x26')]){_0x2bf8be=_[_0x6f2c('0x28')](_0x357790[_0x6f2c('0x1f')]);}}if(_0x2bf8be){logger[_0x6f2c('0xb')]('Enduser\x20found!');return _0x2bf8be;}else{logger['info']('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util[_0x6f2c('0xd')](_0x6f2c('0x29'),_0x14bffc['remoteUri']),'method':'POST','body':{'user':{'role':_0x6f2c('0x27'),'name':util[_0x6f2c('0xd')]('Caller\x20-\x20%s',_0x17aa99||_0xf01a19),'phone':_0xf01a19}}})[_0x6f2c('0x18')](function(_0x26e22a){logger[_0x6f2c('0xb')](_0x6f2c('0x2a'));return _0x26e22a[_0x6f2c('0x22')];});}});}function getAuth(_0x34f16b){var _0x119ccb;if(_0x34f16b[_0x6f2c('0x2b')]===_0x6f2c('0x2c')){_0x119ccb=util[_0x6f2c('0xd')](_0x6f2c('0x2d'),_0x34f16b[_0x6f2c('0x2e')],_0x34f16b['password']);}else if(_0x34f16b[_0x6f2c('0x2b')]===_0x6f2c('0x2f')){_0x119ccb=util[_0x6f2c('0xd')](_0x6f2c('0x30'),_0x34f16b[_0x6f2c('0x2e')],_0x34f16b[_0x6f2c('0x2f')]);}return util[_0x6f2c('0xd')](_0x6f2c('0x31'),new Buffer(_0x119ccb)['toString']('base64'));}function request(_0x4fa789){logger['debug']('[HTTP]',JSON['stringify'](_0x4fa789));return rp(_[_0x6f2c('0x6')](_0x4fa789,{'method':'GET','headers':headers,'json':!![]}));}function getTags(_0x410e9d,_0x1eb9d8){var _0x2fce67=[];if(_0x410e9d&&_0x410e9d['length']>0x0){_0x2fce67=_[_0x6f2c('0x32')](_0x410e9d,_0x1eb9d8);}return _0x2fce67;}function getCustomFields(_0x104170,_0x534299){var _0x431774=[];var _0x265328={'custom_fields':[]};if(_0x104170[_0x6f2c('0x26')]>0x0){_['forEach'](_0x104170,function(_0x41ef42){if(_['includes']([_0x6f2c('0x33'),'picklist'],_0x41ef42[_0x6f2c('0x34')])&&_0x41ef42[_0x6f2c('0x35')]&&!_0x41ef42['customField']){_0x265328[_0x41ef42[_0x6f2c('0x35')][_0x6f2c('0x36')]()]=_0x41ef42[_0x6f2c('0x37')][_0x6f2c('0x38')]();}else if(_[_0x6f2c('0x39')]([_0x6f2c('0x33'),'picklist'],_0x41ef42[_0x6f2c('0x34')])&&_0x41ef42[_0x6f2c('0x3a')]&&_0x41ef42[_0x6f2c('0x3b')]){_0x265328['custom_fields'][_0x6f2c('0x3c')]({'id':_0x41ef42['idField'],'value':_0x41ef42[_0x6f2c('0x37')][_0x6f2c('0x38')]()});}else if(_0x41ef42[_0x6f2c('0x34')]===_0x6f2c('0x3d')&&_0x41ef42['variableName']&&_0x41ef42[_0x6f2c('0x3a')]&&_0x41ef42[_0x6f2c('0x3b')]){_0x534299[_0x41ef42[_0x6f2c('0x3e')]]&&_0x265328[_0x6f2c('0x3f')]['push']({'id':_0x41ef42['idField'],'value':_0x534299[_0x41ef42[_0x6f2c('0x3e')]][_0x6f2c('0x38')]()});}else if(_0x41ef42[_0x6f2c('0x34')]===_0x6f2c('0x40')&&_0x41ef42[_0x6f2c('0x41')]&&_0x41ef42[_0x6f2c('0x41')][_0x6f2c('0x13')]&&_0x41ef42[_0x6f2c('0x3a')]&&_0x41ef42[_0x6f2c('0x3b')]){_0x534299[_0x41ef42[_0x6f2c('0x41')][_0x6f2c('0x13')][_0x6f2c('0x36')]()]&&_0x265328[_0x6f2c('0x3f')][_0x6f2c('0x3c')]({'id':_0x41ef42[_0x6f2c('0x3a')],'value':_0x534299[_0x41ef42[_0x6f2c('0x41')][_0x6f2c('0x13')][_0x6f2c('0x36')]()]['toString']()});}});}return _0x265328;}exports[_0x6f2c('0x42')]=function(_0x582179,_0x25a5e1,_0x5992c7,_0x35c966,_0x580886,_0x41c3d0){var _0x2f65e7,_0x1c693c;_0x41c3d0[_0x6f2c('0xf')]=intUtil[_0x6f2c('0x43')](_0x41c3d0[_0x6f2c('0xf')]);_0x41c3d0['serverUrl']=intUtil[_0x6f2c('0x43')](_0x41c3d0[_0x6f2c('0x44')]);if(_0x580886&&_0x580886['monitor_format']){logger[_0x6f2c('0xb')]('[QUEUE]',_0x6f2c('0x45'));_0x25a5e1['recordingURL']=util[_0x6f2c('0xd')](_0x6f2c('0x46'),_0x41c3d0[_0x6f2c('0x44')],_0x25a5e1[_0x6f2c('0x47')],md5(_0x25a5e1['uniqueid']));}else{_0x25a5e1[_0x6f2c('0x48')]='';}headers['Authorization']=getAuth(_0x41c3d0);return getUser(_0x41c3d0,_0x35c966[_0x6f2c('0x49')])['then'](function(_0x4a6a28){_0x2f65e7=_0x4a6a28;logger[_0x6f2c('0xb')]('The\x20User\x20ID\x20is:',_0x2f65e7['id']);return getEndUser(_0x41c3d0,_0x25a5e1[_0x6f2c('0x4a')],_0x25a5e1[_0x6f2c('0x4b')]);})[_0x6f2c('0x18')](function(_0x54c9d9){_0x1c693c=_0x54c9d9;logger[_0x6f2c('0xb')](_0x6f2c('0x4c'),_0x1c693c['id']);return getTicket(_0x41c3d0,_0x2f65e7,_0x1c693c,_0x5992c7,_0x25a5e1);})[_0x6f2c('0x18')](function(_0x49db28){if(_0x49db28){logger[_0x6f2c('0xb')](_0x6f2c('0x4d'),_0x49db28['id']);switch(_0x41c3d0[_0x6f2c('0x34')]){case'integrationTab':logger[_0x6f2c('0xb')](_0x6f2c('0x4e'),_0x6f2c('0x4f'));return request({'uri':util[_0x6f2c('0xd')](_0x6f2c('0x50'),_0x41c3d0[_0x6f2c('0xf')],_0x2f65e7['id'],_0x49db28['id']),'method':'POST'});case _0x6f2c('0x51'):logger[_0x6f2c('0xb')](_0x6f2c('0x4e'),_0x6f2c('0x52'));emit(util[_0x6f2c('0xd')](_0x6f2c('0x53'),_0x35c966['name']),_0x6f2c('0x54'),{'uri':util['format'](_0x6f2c('0x55'),_0x41c3d0[_0x6f2c('0xf')][_0x6f2c('0x56')](_0x6f2c('0x57'),''),_0x49db28['id'])});break;default:logger[_0x6f2c('0x58')](_0x6f2c('0x4e'),'Zendesk\x20account\x20type\x20not\x20recognized');}}})[_0x6f2c('0x59')](function(_0x3fdf6b){logger[_0x6f2c('0x58')](_0x6f2c('0x5a'),util['inspect'](_0x3fdf6b,{'showHidden':!![],'depth':null}));});};exports[_0x6f2c('0x5b')]=function(_0x427505,_0x41bc99,_0x405c0f,_0x1171cf,_0x2eda8c,_0x46e89a,_0x33a686){var _0x4ed1e4,_0x3baf87;_0x46e89a[_0x6f2c('0xf')]=intUtil[_0x6f2c('0x43')](_0x46e89a['remoteUri']);_0x46e89a[_0x6f2c('0x44')]=intUtil['stripTrailingSlash'](_0x46e89a[_0x6f2c('0x44')]);if(_0x33a686&&_0x33a686[_0x6f2c('0x5c')]&&_0x33a686[_0x6f2c('0x5c')]!==_0x6f2c('0x5d')){logger[_0x6f2c('0xb')](_0x6f2c('0x5e'),'Recording\x20is\x20enabled!');_0x41bc99[_0x6f2c('0x48')]=util[_0x6f2c('0xd')](_0x6f2c('0x46'),_0x46e89a[_0x6f2c('0x44')],_0x41bc99['uniqueid'],md5(_0x41bc99[_0x6f2c('0x47')]));}headers[_0x6f2c('0x5f')]=getAuth(_0x46e89a);return getUser(_0x46e89a,_0x1171cf[_0x6f2c('0x49')])[_0x6f2c('0x18')](function(_0x4f9484){_0x4ed1e4=_0x4f9484;logger['info'](_0x6f2c('0x60'),_0x4ed1e4['id']);return getEndUser(_0x46e89a,_0x41bc99['destcalleridname'],_0x41bc99[_0x6f2c('0x61')]);})['then'](function(_0x323168){_0x3baf87=_0x323168;logger['info']('The\x20Enduser\x20ID\x20is:',_0x3baf87['id']);return getTicket(_0x46e89a,_0x4ed1e4,_0x3baf87,_0x405c0f,_0x41bc99);})['then'](function(_0x11469a){if(_0x11469a){logger[_0x6f2c('0xb')](_0x6f2c('0x4d'),_0x11469a['id']);switch(_0x46e89a[_0x6f2c('0x34')]){case _0x6f2c('0x62'):logger['info'](_0x6f2c('0x5e'),'Displaying\x20ticket\x20to\x20agent...');return request({'uri':util[_0x6f2c('0xd')](_0x6f2c('0x50'),_0x46e89a['remoteUri'],_0x4ed1e4['id'],_0x11469a['id']),'method':_0x6f2c('0x10')});case _0x6f2c('0x51'):logger['info']('[OUTBOUND]',_0x6f2c('0x52'));emit(util[_0x6f2c('0xd')](_0x6f2c('0x53'),_0x1171cf['name']),'trigger:browser:url',{'uri':util['format']('%s/agent/tickets/%s',_0x46e89a['remoteUri'][_0x6f2c('0x56')](_0x6f2c('0x57'),''),_0x11469a['id'])});break;default:logger[_0x6f2c('0x58')](_0x6f2c('0x5e'),_0x6f2c('0x63'));}}})[_0x6f2c('0x59')](function(_0x43c8cc){logger[_0x6f2c('0x58')](_0x6f2c('0x64'),util[_0x6f2c('0x65')](_0x43c8cc,{'showHidden':!![],'depth':null}));});};exports[_0x6f2c('0x66')]=function(_0xaecebc,_0x2a2741,_0x228f0a,_0x47dea5,_0x57e7a1,_0x19aa3c){var _0x1c7135,_0x53ef26;_0x19aa3c[_0x6f2c('0xf')]=intUtil[_0x6f2c('0x43')](_0x19aa3c['remoteUri']);_0x19aa3c[_0x6f2c('0x44')]=intUtil[_0x6f2c('0x43')](_0x19aa3c['serverUrl']);if(_0x57e7a1&&_0x57e7a1['monitor_format']){logger[_0x6f2c('0xb')]('['+_0x2a2741['lastevent'][_0x6f2c('0x67')]()+']','Recording\x20is\x20enabled!');_0x2a2741['recordingURL']=util[_0x6f2c('0xd')](_0x6f2c('0x46'),_0x19aa3c['serverUrl'],_0x2a2741[_0x6f2c('0x47')],md5(_0x2a2741[_0x6f2c('0x47')]));}else{_0x2a2741['recordingURL']='';}headers['Authorization']=getAuth(_0x19aa3c);return getUser(_0x19aa3c)[_0x6f2c('0x18')](function(_0x5ddd6b){_0x1c7135=_0x5ddd6b;logger[_0x6f2c('0xb')](_0x6f2c('0x60'),_0x1c7135['id']);return getEndUser(_0x19aa3c,_0x2a2741[_0x6f2c('0x4a')],_0x2a2741['calleridnum']);})[_0x6f2c('0x18')](function(_0x509178){_0x53ef26=_0x509178;logger['info']('The\x20Enduser\x20ID\x20is:',_0x53ef26['id']);return getTicket(_0x19aa3c,_0x1c7135,_0x53ef26,_0x228f0a,_0x2a2741);})[_0x6f2c('0x18')](function(_0x17f554){if(_0x17f554){logger[_0x6f2c('0xb')](_0x6f2c('0x4d'),_0x17f554['id']);}})[_0x6f2c('0x59')](function(_0x5b4be3){logger[_0x6f2c('0x58')]('['+_0x2a2741[_0x6f2c('0x68')]['toUpperCase']()+']'+_0x6f2c('0x69'),util[_0x6f2c('0x65')](_0x5b4be3,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0xd9a4=['base64','debug','map','length','forEach','nameField','customField','content','toString','picklist','push','idField','type','variableName','custom_fields','customVariable','Variable','queue','stripTrailingSlash','serverUrl','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','The\x20User\x20ID\x20is:','calleridnum','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','integrationTab','Displaying\x20ticket\x20to\x20agent...','%s/channels/voice/agents/%d/tickets/%d/display.json','newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','replace','/api/v2','error','Zendesk\x20account\x20type\x20not\x20recognized','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','outbound','recordingFormat','none','recordingURL','destcalleridname','destcalleridnum','%s/agent/tickets/%s','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','inspect','monitor_format','lastevent','toUpperCase','catch','\x20Error\x20running\x20Zendesk\x20integration','lodash','request-promise','md5','util','ioredis','../../../../config/environment','../../../../config/logger','redis','defaults','localhost','socket.io-emitter','application/json','info','Creating\x20new\x20ticket...','format','remoteUri','POST','merge','name','getString','Subjects','Descriptions','Ticket\x20created!','validateEmail','Getting\x20agent\x20with\x20email','%s/search.json','type:user\x20role:agent\x20email:%s','then','count','Agent\x20found!','find','agent','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me.json','Admin\x20account\x20selected.','user','Searching\x20enduser\x20with\x20phone','type:user\x20role:end-user\x20phone:%s','results','filter','end-user','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/users.json','Enduser\x20created.','%s:%s','username','authType','token','%s/token:%s'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xd9a4,0x1e0));var _0x4d9a=function(_0x403c20,_0x4a7b99){_0x403c20=_0x403c20-0x0;var _0x2b271a=_0xd9a4[_0x403c20];return _0x2b271a;};'use strict';var _=require(_0x4d9a('0x0'));var rp=require(_0x4d9a('0x1'));var md5=require(_0x4d9a('0x2'));var util=require(_0x4d9a('0x3'));var Redis=require(_0x4d9a('0x4'));var intUtil=require('./util');var config=require(_0x4d9a('0x5'));var logger=require(_0x4d9a('0x6'))('zendesk');config[_0x4d9a('0x7')]=_[_0x4d9a('0x8')](config[_0x4d9a('0x7')],{'host':_0x4d9a('0x9'),'port':0x18eb});var io=require(_0x4d9a('0xa'))(new Redis(config['redis']));function emit(_0x2262c0,_0xd733aa,_0x3a2a37){io['to'](_0x2262c0)['emit'](_0xd733aa,_0x3a2a37);}var headers={'Content-Type':_0x4d9a('0xb'),'Accept':_0x4d9a('0xb')};function getTicket(_0x41aa9a,_0x458daa,_0x326dd4,_0x150aef,_0x12482e){logger[_0x4d9a('0xc')](_0x4d9a('0xd'));return request({'uri':util[_0x4d9a('0xe')]('%s/tickets.json',_0x41aa9a[_0x4d9a('0xf')]),'method':_0x4d9a('0x10'),'body':{'ticket':_[_0x4d9a('0x11')]({'requester_id':_0x326dd4['id'],'submitter_id':_0x458daa?_0x458daa['id']:undefined,'assignee_id':_0x458daa?_0x458daa['id']:undefined,'tags':getTags(_0x150aef['Tags'],_0x4d9a('0x12')),'subject':intUtil[_0x4d9a('0x13')](_0x150aef[_0x4d9a('0x14')],_0x12482e,'\x20'),'description':intUtil[_0x4d9a('0x13')](_0x150aef[_0x4d9a('0x15')],_0x12482e,'\x0a'),'comment':{'public':![],'body':intUtil[_0x4d9a('0x13')](_0x150aef[_0x4d9a('0x15')],_0x12482e,'\x0a')}},getCustomFields(_0x150aef['Fields'],_0x12482e))}})['then'](function(_0x3ed817){logger[_0x4d9a('0xc')](_0x4d9a('0x16'));return _0x3ed817['ticket'];});}function getUser(_0x335006,_0x142222){if(intUtil[_0x4d9a('0x17')](_0x142222)){logger['info'](_0x4d9a('0x18'),_0x142222);return request({'uri':util[_0x4d9a('0xe')](_0x4d9a('0x19'),_0x335006['remoteUri']),'qs':{'query':util[_0x4d9a('0xe')](_0x4d9a('0x1a'),_0x142222)}})[_0x4d9a('0x1b')](function(_0x3778ef){if(_0x3778ef[_0x4d9a('0x1c')]){logger['info'](_0x4d9a('0x1d'));return _[_0x4d9a('0x1e')](_0x3778ef['results'],{'email':_0x142222,'role':_0x4d9a('0x1f')});}else{logger[_0x4d9a('0xc')](_0x4d9a('0x20'));return request({'uri':util[_0x4d9a('0xe')](_0x4d9a('0x21'),_0x335006['remoteUri'])})[_0x4d9a('0x1b')](function(_0x26ffa4){logger[_0x4d9a('0xc')](_0x4d9a('0x22'));return _0x26ffa4[_0x4d9a('0x23')];});}});}else{logger[_0x4d9a('0xc')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0x4d9a('0xe')]('%s/users/me.json',_0x335006[_0x4d9a('0xf')])})['then'](function(_0x499ebe){logger[_0x4d9a('0xc')](_0x4d9a('0x22'));return _0x499ebe[_0x4d9a('0x23')];});}}function getEndUser(_0x59fbac,_0x4c8ff8,_0x3fc8cd){logger[_0x4d9a('0xc')](_0x4d9a('0x24'),_0x3fc8cd);return request({'uri':util[_0x4d9a('0xe')](_0x4d9a('0x19'),_0x59fbac[_0x4d9a('0xf')]),'qs':{'query':util[_0x4d9a('0xe')](_0x4d9a('0x25'),_0x3fc8cd)}})[_0x4d9a('0x1b')](function(_0x549edb){var _0x47844b;if(_0x549edb[_0x4d9a('0x26')]['length']){_0x549edb[_0x4d9a('0x26')]=_[_0x4d9a('0x27')](_0x549edb[_0x4d9a('0x26')],{'suspended':![],'role':_0x4d9a('0x28')});if(_0x549edb['results']['length']){_0x47844b=_['first'](_0x549edb['results']);}}if(_0x47844b){logger[_0x4d9a('0xc')](_0x4d9a('0x29'));return _0x47844b;}else{logger[_0x4d9a('0xc')](_0x4d9a('0x2a'));return request({'uri':util[_0x4d9a('0xe')](_0x4d9a('0x2b'),_0x59fbac['remoteUri']),'method':_0x4d9a('0x10'),'body':{'user':{'role':_0x4d9a('0x28'),'name':util[_0x4d9a('0xe')]('Caller\x20-\x20%s',_0x4c8ff8||_0x3fc8cd),'phone':_0x3fc8cd}}})['then'](function(_0x425c7f){logger['info'](_0x4d9a('0x2c'));return _0x425c7f[_0x4d9a('0x23')];});}});}function getAuth(_0x12aee7){var _0x3808f1;if(_0x12aee7['authType']==='password'){_0x3808f1=util['format'](_0x4d9a('0x2d'),_0x12aee7[_0x4d9a('0x2e')],_0x12aee7['password']);}else if(_0x12aee7[_0x4d9a('0x2f')]===_0x4d9a('0x30')){_0x3808f1=util[_0x4d9a('0xe')](_0x4d9a('0x31'),_0x12aee7[_0x4d9a('0x2e')],_0x12aee7['token']);}return util[_0x4d9a('0xe')]('Basic\x20%s',new Buffer(_0x3808f1)['toString'](_0x4d9a('0x32')));}function request(_0x5dea45){logger[_0x4d9a('0x33')]('[HTTP]',JSON['stringify'](_0x5dea45));return rp(_[_0x4d9a('0x8')](_0x5dea45,{'method':'GET','headers':headers,'json':!![]}));}function getTags(_0x839b72,_0x70bf98){var _0x285fd9=[];if(_0x839b72&&_0x839b72['length']>0x0){_0x285fd9=_[_0x4d9a('0x34')](_0x839b72,_0x70bf98);}return _0x285fd9;}function getCustomFields(_0xe5051b,_0x49ee64){var _0x3fdd44=[];var _0x3f68bf={'custom_fields':[]};if(_0xe5051b[_0x4d9a('0x35')]>0x0){_[_0x4d9a('0x36')](_0xe5051b,function(_0x519247){if(_['includes'](['string','picklist'],_0x519247['type'])&&_0x519247[_0x4d9a('0x37')]&&!_0x519247[_0x4d9a('0x38')]){_0x3f68bf[_0x519247[_0x4d9a('0x37')]['toLowerCase']()]=_0x519247[_0x4d9a('0x39')][_0x4d9a('0x3a')]();}else if(_['includes'](['string',_0x4d9a('0x3b')],_0x519247['type'])&&_0x519247['idField']&&_0x519247[_0x4d9a('0x38')]){_0x3f68bf['custom_fields'][_0x4d9a('0x3c')]({'id':_0x519247[_0x4d9a('0x3d')],'value':_0x519247[_0x4d9a('0x39')][_0x4d9a('0x3a')]()});}else if(_0x519247[_0x4d9a('0x3e')]==='variable'&&_0x519247[_0x4d9a('0x3f')]&&_0x519247[_0x4d9a('0x3d')]&&_0x519247[_0x4d9a('0x38')]){_0x49ee64[_0x519247['variableName']]&&_0x3f68bf[_0x4d9a('0x40')][_0x4d9a('0x3c')]({'id':_0x519247['idField'],'value':_0x49ee64[_0x519247[_0x4d9a('0x3f')]][_0x4d9a('0x3a')]()});}else if(_0x519247[_0x4d9a('0x3e')]===_0x4d9a('0x41')&&_0x519247[_0x4d9a('0x42')]&&_0x519247[_0x4d9a('0x42')]['name']&&_0x519247[_0x4d9a('0x3d')]&&_0x519247['customField']){_0x49ee64[_0x519247[_0x4d9a('0x42')][_0x4d9a('0x12')]['toLowerCase']()]&&_0x3f68bf[_0x4d9a('0x40')]['push']({'id':_0x519247['idField'],'value':_0x49ee64[_0x519247[_0x4d9a('0x42')]['name']['toLowerCase']()][_0x4d9a('0x3a')]()});}});}return _0x3f68bf;}exports[_0x4d9a('0x43')]=function(_0x58287a,_0x4edc32,_0x4e8f3d,_0x45d691,_0x560076,_0xc88237){var _0x19162a,_0x1703e7;_0xc88237['remoteUri']=intUtil[_0x4d9a('0x44')](_0xc88237[_0x4d9a('0xf')]);_0xc88237[_0x4d9a('0x45')]=intUtil[_0x4d9a('0x44')](_0xc88237[_0x4d9a('0x45')]);if(_0x560076&&_0x560076['monitor_format']){logger[_0x4d9a('0xc')](_0x4d9a('0x46'),_0x4d9a('0x47'));_0x4edc32['recordingURL']=util['format'](_0x4d9a('0x48'),_0xc88237[_0x4d9a('0x45')],_0x4edc32[_0x4d9a('0x49')],md5(_0x4edc32['uniqueid']));}else{_0x4edc32['recordingURL']='';}headers[_0x4d9a('0x4a')]=getAuth(_0xc88237);return getUser(_0xc88237,_0x45d691[_0x4d9a('0x4b')])['then'](function(_0x377d03){_0x19162a=_0x377d03;logger[_0x4d9a('0xc')](_0x4d9a('0x4c'),_0x19162a['id']);return getEndUser(_0xc88237,_0x4edc32['calleridname'],_0x4edc32[_0x4d9a('0x4d')]);})[_0x4d9a('0x1b')](function(_0x4c31f1){_0x1703e7=_0x4c31f1;logger[_0x4d9a('0xc')](_0x4d9a('0x4e'),_0x1703e7['id']);return getTicket(_0xc88237,_0x19162a,_0x1703e7,_0x4e8f3d,_0x4edc32);})['then'](function(_0x4e06ef){if(_0x4e06ef){logger[_0x4d9a('0xc')](_0x4d9a('0x4f'),_0x4e06ef['id']);switch(_0xc88237[_0x4d9a('0x3e')]){case _0x4d9a('0x50'):logger[_0x4d9a('0xc')](_0x4d9a('0x46'),_0x4d9a('0x51'));return request({'uri':util[_0x4d9a('0xe')](_0x4d9a('0x52'),_0xc88237[_0x4d9a('0xf')],_0x19162a['id'],_0x4e06ef['id']),'method':_0x4d9a('0x10')});case _0x4d9a('0x53'):logger['info'](_0x4d9a('0x46'),_0x4d9a('0x54'));emit(util[_0x4d9a('0xe')](_0x4d9a('0x55'),_0x45d691['name']),_0x4d9a('0x56'),{'uri':util['format']('%s/agent/tickets/%s',_0xc88237[_0x4d9a('0xf')][_0x4d9a('0x57')](_0x4d9a('0x58'),''),_0x4e06ef['id'])});break;default:logger[_0x4d9a('0x59')](_0x4d9a('0x46'),_0x4d9a('0x5a'));}}})['catch'](function(_0x328f92){logger[_0x4d9a('0x59')](_0x4d9a('0x5b'),util['inspect'](_0x328f92,{'showHidden':!![],'depth':null}));});};exports[_0x4d9a('0x5c')]=function(_0x3b18ad,_0x599725,_0x60337d,_0x1ee81f,_0xaecbec,_0x475917,_0x30e0e1){var _0x2736b4,_0x53e0e7;_0x475917['remoteUri']=intUtil[_0x4d9a('0x44')](_0x475917[_0x4d9a('0xf')]);_0x475917['serverUrl']=intUtil[_0x4d9a('0x44')](_0x475917[_0x4d9a('0x45')]);if(_0x30e0e1&&_0x30e0e1[_0x4d9a('0x5d')]&&_0x30e0e1[_0x4d9a('0x5d')]!==_0x4d9a('0x5e')){logger[_0x4d9a('0xc')]('[OUTBOUND]',_0x4d9a('0x47'));_0x599725[_0x4d9a('0x5f')]=util[_0x4d9a('0xe')](_0x4d9a('0x48'),_0x475917['serverUrl'],_0x599725[_0x4d9a('0x49')],md5(_0x599725[_0x4d9a('0x49')]));}headers[_0x4d9a('0x4a')]=getAuth(_0x475917);return getUser(_0x475917,_0x1ee81f[_0x4d9a('0x4b')])[_0x4d9a('0x1b')](function(_0x5d2ad9){_0x2736b4=_0x5d2ad9;logger[_0x4d9a('0xc')](_0x4d9a('0x4c'),_0x2736b4['id']);return getEndUser(_0x475917,_0x599725[_0x4d9a('0x60')],_0x599725[_0x4d9a('0x61')]);})[_0x4d9a('0x1b')](function(_0x38b8ce){_0x53e0e7=_0x38b8ce;logger[_0x4d9a('0xc')](_0x4d9a('0x4e'),_0x53e0e7['id']);return getTicket(_0x475917,_0x2736b4,_0x53e0e7,_0x60337d,_0x599725);})[_0x4d9a('0x1b')](function(_0x1ad273){if(_0x1ad273){logger[_0x4d9a('0xc')](_0x4d9a('0x4f'),_0x1ad273['id']);switch(_0x475917[_0x4d9a('0x3e')]){case _0x4d9a('0x50'):logger[_0x4d9a('0xc')]('[OUTBOUND]',_0x4d9a('0x51'));return request({'uri':util[_0x4d9a('0xe')]('%s/channels/voice/agents/%d/tickets/%d/display.json',_0x475917[_0x4d9a('0xf')],_0x2736b4['id'],_0x1ad273['id']),'method':_0x4d9a('0x10')});case _0x4d9a('0x53'):logger[_0x4d9a('0xc')]('[OUTBOUND]',_0x4d9a('0x54'));emit(util['format'](_0x4d9a('0x55'),_0x1ee81f[_0x4d9a('0x12')]),_0x4d9a('0x56'),{'uri':util[_0x4d9a('0xe')](_0x4d9a('0x62'),_0x475917[_0x4d9a('0xf')][_0x4d9a('0x57')](_0x4d9a('0x58'),''),_0x1ad273['id'])});break;default:logger['error']('[OUTBOUND]',_0x4d9a('0x5a'));}}})['catch'](function(_0x451cfb){logger[_0x4d9a('0x59')](_0x4d9a('0x63'),util[_0x4d9a('0x64')](_0x451cfb,{'showHidden':!![],'depth':null}));});};exports['unmanaged']=function(_0x5adb34,_0x1e705f,_0xd7277,_0x421b45,_0x448ec0,_0x55dd3f){var _0x3ab098,_0x85306e;_0x55dd3f[_0x4d9a('0xf')]=intUtil[_0x4d9a('0x44')](_0x55dd3f['remoteUri']);_0x55dd3f[_0x4d9a('0x45')]=intUtil['stripTrailingSlash'](_0x55dd3f[_0x4d9a('0x45')]);if(_0x448ec0&&_0x448ec0[_0x4d9a('0x65')]){logger[_0x4d9a('0xc')]('['+_0x1e705f[_0x4d9a('0x66')][_0x4d9a('0x67')]()+']',_0x4d9a('0x47'));_0x1e705f[_0x4d9a('0x5f')]=util[_0x4d9a('0xe')](_0x4d9a('0x48'),_0x55dd3f[_0x4d9a('0x45')],_0x1e705f[_0x4d9a('0x49')],md5(_0x1e705f[_0x4d9a('0x49')]));}else{_0x1e705f[_0x4d9a('0x5f')]='';}headers[_0x4d9a('0x4a')]=getAuth(_0x55dd3f);return getUser(_0x55dd3f)[_0x4d9a('0x1b')](function(_0x59a916){_0x3ab098=_0x59a916;logger[_0x4d9a('0xc')]('The\x20User\x20ID\x20is:',_0x3ab098['id']);return getEndUser(_0x55dd3f,_0x1e705f['calleridname'],_0x1e705f['calleridnum']);})['then'](function(_0x48eaef){_0x85306e=_0x48eaef;logger[_0x4d9a('0xc')]('The\x20Enduser\x20ID\x20is:',_0x85306e['id']);return getTicket(_0x55dd3f,_0x3ab098,_0x85306e,_0xd7277,_0x1e705f);})['then'](function(_0x3d8a03){if(_0x3d8a03){logger[_0x4d9a('0xc')]('The\x20Ticket\x20ID\x20is:',_0x3d8a03['id']);}})[_0x4d9a('0x68')](function(_0x19b52d){logger[_0x4d9a('0x59')]('['+_0x1e705f['lastevent'][_0x4d9a('0x67')]()+']'+_0x4d9a('0x69'),util[_0x4d9a('0x64')](_0x19b52d,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index f6f21f6..002015c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7872=['users','isNil','findIndex','Agent\x20found!','info','Using\x20the\x20admin\x20account!','profile','Administrator','user','The\x20failing\x20result\x20is','stringify','Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20','enduserType','https://www.zohoapis.','/crm/v2/','startCase','role','first_name','last_name','Zoho-oauthtoken\x20','code','data','details','moduleCreate','Error:\x20','CREATE\x20ERROR','contact_lead','uri','/crm/v2/Contacts/search?criteria=((Phone:equals:','Contacts','/crm/v2/Leads/search?criteria=((Phone:equals:','contact','nothing','lead','Creating\x20new\x20call...','Subjects','Description','getString','Who_Id','Full_Name','First_Name','Last_Name','Leads','Call_Duration','utc','talktime','answertime','endtime','diff','starttime','YYYY-MM-DDTHH:mm:ss','mm:ss','lastevent','called','Call_Result','Called','complete','connect','rejected','Rejected','abandoned','timeout','Call_Start_Time','outbound','agentcalledAt','Inbound','merge','/crm/v2/Calls','Call\x20created!','err','log','host','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','recordingURL','/api/voice/recordings/','uniqueid','/downloads?type=uniqueid&token=','email','calleridname','The\x20Call\x20ID\x20is:','Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','https://crm.','recordingFormat','none','Recording\x20is\x20enabled!','zoho.eu','com','The\x20User\x20ID\x20is:','destcalleridnum','Outbound','[OUTBOUND]','/crm/EntityInfo.do?module=Calls&id=','unmanaged','toUpperCase','lodash','request-promise','md5','./util','ioredis','bluebird','../../../../config/logger','zoho','defaults','redis','localhost','emit','debug','length','forEach','includes','string','picklist','idField','content','type','variable','variableName','toString','Variable','name','toLowerCase','indexOf','split','access_token','isBefore','zone','https://accounts.zoho.com','https://accounts.zoho.eu','https://accounts.zoho.in','https://accounts.zoho.com.cn','POST','/oauth/v2/token','refreshToken','clientId','clientSecret','refresh_token','then','add','seconds','catch','error','Failing\x20creating\x20the\x20access_token','stack','Search\x20user','format','https://www.zohoapis.%s/crm/v2/users','ActiveUsers'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0x7872,0x193));var _0x2787=function(_0x4a1e3c,_0x556d2d){_0x4a1e3c=_0x4a1e3c-0x0;var _0x434e08=_0x7872[_0x4a1e3c];return _0x434e08;};'use strict';var _=require(_0x2787('0x0'));var rp=require(_0x2787('0x1'));var md5=require(_0x2787('0x2'));var util=require('util');var intUtil=require(_0x2787('0x3'));var moment=require('moment');var Redis=require(_0x2787('0x4'));var BPromise=require(_0x2787('0x5'));var config=require('../../../../config/environment');var logger=require(_0x2787('0x6'))(_0x2787('0x7'));config['redis']=_[_0x2787('0x8')](config[_0x2787('0x9')],{'host':_0x2787('0xa'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function emit(_0x5ba648,_0x2f2058,_0x4bc325){io['to'](_0x5ba648)[_0x2787('0xb')](_0x2f2058,_0x4bc325);}function request(_0x2e3abe){logger[_0x2787('0xc')]('[HTTP]',JSON['stringify'](_0x2e3abe));return rp(_0x2e3abe);}function getCustomFields(_0xac89da,_0x4b8c30){var _0x41d417={};if(_0xac89da[_0x2787('0xd')]>0x0){_[_0x2787('0xe')](_0xac89da,function(_0x2f081e){if(_[_0x2787('0xf')]([_0x2787('0x10'),_0x2787('0x11')],_0x2f081e['type'])&&_0x2f081e['idField']){_0x41d417[_0x2f081e[_0x2787('0x12')]]=_0x2f081e[_0x2787('0x13')]['toString']();}else if(_0x2f081e[_0x2787('0x14')]===_0x2787('0x15')&&_0x2f081e[_0x2787('0x16')]&&_0x2f081e['idField']&&_0x4b8c30[_0x2f081e[_0x2787('0x16')]]){_0x41d417[_0x2f081e[_0x2787('0x12')]]=_0x4b8c30[_0x2f081e[_0x2787('0x16')]][_0x2787('0x17')]();}else if(_0x2f081e[_0x2787('0x14')]==='customVariable'&&_0x2f081e[_0x2787('0x18')]&&_0x2f081e[_0x2787('0x18')][_0x2787('0x19')]&&_0x2f081e[_0x2787('0x12')]&&_0x4b8c30[_0x2f081e[_0x2787('0x18')][_0x2787('0x19')][_0x2787('0x1a')]()]){_0x41d417[_0x2f081e[_0x2787('0x12')]]=_0x4b8c30[_0x2f081e[_0x2787('0x18')][_0x2787('0x19')][_0x2787('0x1a')]()][_0x2787('0x17')]();}});}return _0x41d417;}function getName(_0x61120a){if(_0x61120a[_0x2787('0x1b')]('\x20')>0x0){var _0x21e8ff=_0x61120a[_0x2787('0x1c')](/ (.+)/);if(_0x21e8ff[0x1]){return _0x21e8ff;}}return[_0x61120a,_0x61120a];}var accountsTokens={};function getAccessToken(_0x4c436f){return new Promise(function(_0x90be64,_0x52d6e6){if(!_['isNil'](accountsTokens[_0x4c436f['id']])&&!_['isNil'](accountsTokens[_0x4c436f['id']][_0x2787('0x1d')])){if(moment()[_0x2787('0x1e')](accountsTokens[_0x4c436f['id']]['expires_in'])){_0x90be64(accountsTokens[_0x4c436f['id']][_0x2787('0x1d')]);}}var _0x519269;switch(_0x4c436f[_0x2787('0x1f')]){case'US':_0x519269=_0x2787('0x20');break;case'AU':_0x519269='https://accounts.zoho.com.au';break;case'EU':_0x519269=_0x2787('0x21');break;case'IN':_0x519269=_0x2787('0x22');break;case'CN':_0x519269=_0x2787('0x23');break;default:_0x519269=_0x2787('0x21');break;}var _0x23ea04={'method':_0x2787('0x24'),'uri':_0x519269+_0x2787('0x25'),'qs':{'refresh_token':_0x4c436f[_0x2787('0x26')],'client_id':_0x4c436f[_0x2787('0x27')],'client_secret':_0x4c436f[_0x2787('0x28')],'grant_type':_0x2787('0x29')},'json':!![]};return rp(_0x23ea04)[_0x2787('0x2a')](function(_0x529afd){accountsTokens[_0x4c436f['id']]={'access_token':_0x529afd['access_token'],'expires_in':moment()[_0x2787('0x2b')](_0x529afd['expires_in'],_0x2787('0x2c'))};_0x90be64(_0x529afd[_0x2787('0x1d')]);})[_0x2787('0x2d')](function(_0x1b89ff){logger[_0x2787('0x2e')](_0x2787('0x2f'),_0x1b89ff[_0x2787('0x30')]);_0x52d6e6(_0x1b89ff);});});}function getUser(_0x34377c,_0x24a1f2,_0x4d87c2,_0x211c54){logger['info'](_0x2787('0x31'));return request({'method':'GET','uri':util[_0x2787('0x32')](_0x2787('0x33'),_0x24a1f2),'qs':{'type':_0x2787('0x34')},'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x34377c},'json':!![]})[_0x2787('0x2a')](function(_0x4d4428){if(_0x4d4428[_0x2787('0x35')]){var _0x17ffbd=-0x1;if(_['isArrayLikeObject'](_0x4d4428[_0x2787('0x35')])){if(!_[_0x2787('0x36')](_0x211c54)){_0x17ffbd=_[_0x2787('0x37')](_0x4d4428['users'],function(_0x476507){return _0x476507['email']===_0x211c54;});}if(_0x17ffbd>=0x0){logger['info'](_0x2787('0x38'));}else{logger[_0x2787('0x39')](_0x2787('0x3a'));_0x17ffbd=_[_0x2787('0x37')](_0x4d4428[_0x2787('0x35')],function(_0x51aaea){return _0x51aaea[_0x2787('0x3b')]['name']===_0x2787('0x3c');});}return _0x4d4428[_0x2787('0x35')][_0x17ffbd];}else{if(_0x4d4428[_0x2787('0x3d')][_0x2787('0x3b')][_0x2787('0x19')]===_0x2787('0x3c')){logger['info'](_0x2787('0x3a'));user=_0x4d4428[_0x2787('0x3d')];return user;}else{logger[_0x2787('0x2e')](_0x2787('0x3e'),JSON[_0x2787('0x3f')](_0x4d4428));throw new Error(_0x2787('0x40')+JSON['stringify'](_0x4d4428));}}}else{logger[_0x2787('0x2e')]('The\x20failing\x20result\x20is',JSON['stringify'](_0x4d4428));throw new Error('Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20'+JSON[_0x2787('0x3f')](_0x4d4428));}})['catch'](function(_0x38c20a){console['error'](_0x38c20a);});}function getZohoUser(_0x1de904,_0x53bc19){return new BPromise(function(_0xc7416d,_0x4db82b){request(_0x1de904)[_0x2787('0x2a')](function(_0x3d71de){var _0x20f076=null;if(_0x3d71de){_0x20f076=_0x3d71de['data'][0x0];_0x20f076[_0x2787('0x41')]=_0x53bc19;}_0xc7416d(_0x20f076);})['catch'](function(_0x23c73f){_0x4db82b(_0x23c73f);});});}function createEndUser(_0x5948d8,_0x4733fd,_0x28074b,_0x48ea6b,_0x302db8,_0x3ad7f9){var _0x28074b=getName(_0x28074b);return request({'method':_0x2787('0x24'),'uri':_0x2787('0x42')+_0x4733fd+_0x2787('0x43')+_[_0x2787('0x44')](_0x3ad7f9['moduleCreate'])+'s','body':{'data':[{'Last_Name':_0x28074b[0x1],'First_Name':_0x28074b[0x0],'Phone':_0x48ea6b,'Owner':{'name':!_[_0x2787('0x36')](_0x302db8[_0x2787('0x45')][_0x2787('0x19')])?_0x302db8[_0x2787('0x45')][_0x2787('0x19')]:!_[_0x2787('0x36')](_0x302db8[_0x2787('0x46')])?_0x302db8[_0x2787('0x46')]+'\x20'+_0x302db8[_0x2787('0x47')]:_0x302db8[_0x2787('0x47')],'id':_0x302db8['id']}}]},'headers':{'Authorization':_0x2787('0x48')+_0x5948d8},'json':!![]})[_0x2787('0x2a')](function(_0x359a19){if(_0x359a19&&_0x359a19['data'][0x0][_0x2787('0x49')]==='SUCCESS'){var _0x59f020=_0x359a19[_0x2787('0x4a')][0x0][_0x2787('0x4b')];_0x59f020[_0x2787('0x41')]=_['startCase'](_0x3ad7f9[_0x2787('0x4c')])+'s';return _0x59f020;}logger['error'](_0x2787('0x3e'),JSON['stringify'](data));throw new Error(_0x2787('0x4d')+JSON[_0x2787('0x3f')](data));})[_0x2787('0x2d')](function(_0x466988){console['log'](_0x2787('0x4e'),_0x466988);});}function getEndUser(_0x177722,_0x275632,_0x1d0ca7,_0x3ab6a7,_0x5264b6,_0xde9ebb,_0x3dc3e2){var _0x3cdd2f={'method':'GET','uri':'','headers':{'Authorization':_0x2787('0x48')+_0x177722},'json':!![]};switch(_0x3dc3e2['moduleSearch']){case _0x2787('0x4f'):_0x3cdd2f[_0x2787('0x50')]=_0x2787('0x42')+_0x275632+_0x2787('0x51')+_0x5264b6+'))';return getZohoUser(_0x3cdd2f,_0x2787('0x52'))[_0x2787('0x2a')](function(_0x19c4c9){if(_0x19c4c9)return _0x19c4c9;_0x3cdd2f[_0x2787('0x50')]='https://www.zohoapis.'+_0x275632+_0x2787('0x53')+_0x5264b6+'))';return getZohoUser(_0x3cdd2f,'Leads')['then'](function(_0x458c6a){if(_0x458c6a)return _0x458c6a;if(_0x3dc3e2[_0x2787('0x4c')]!='nothing'){return createEndUser(_0x177722,_0x275632,_0x3ab6a7,_0x5264b6,_0xde9ebb,_0x3dc3e2);}else{return{};}});});break;case _0x2787('0x54'):_0x3cdd2f[_0x2787('0x50')]=_0x2787('0x42')+_0x275632+_0x2787('0x51')+_0x5264b6+'))';return getZohoUser(_0x3cdd2f,_0x2787('0x52'))[_0x2787('0x2a')](function(_0x57f117){if(_0x57f117)return _0x57f117;if(_0x3dc3e2[_0x2787('0x4c')]!=_0x2787('0x55')){return createEndUser(_0x177722,_0x275632,_0x3ab6a7,_0x5264b6,_0xde9ebb,_0x3dc3e2);}else{return{};}});break;case _0x2787('0x56'):_0x3cdd2f[_0x2787('0x50')]=_0x2787('0x42')+_0x275632+_0x2787('0x53')+_0x5264b6+'))';return getZohoUser(_0x3cdd2f,'Leads')[_0x2787('0x2a')](function(_0x20ca76){if(_0x20ca76)return _0x20ca76;if(_0x3dc3e2[_0x2787('0x4c')]!='nothing'){return createEndUser(_0x177722,_0x275632,_0x3ab6a7,_0x5264b6,_0xde9ebb,_0x3dc3e2);}else{return{};}});break;}}function getCall(_0x3d6daf,_0x4d445c,_0x40c347,_0x286eda,_0xfb97ea,_0x941f3e,_0x17d49c,_0x3050ae){logger[_0x2787('0x39')](_0x2787('0x57'));var _0x3d20a4={};_0x3d20a4['Owner']={'name':!_['isNil'](_0x286eda[_0x2787('0x45')][_0x2787('0x19')])&&!_[_0x2787('0x36')](_0x286eda[_0x2787('0x3b')][_0x2787('0x19')])&&_0x286eda['profile'][_0x2787('0x19')]==='administrator'?_0x286eda['role'][_0x2787('0x19')]:!_[_0x2787('0x36')](_0x286eda[_0x2787('0x46')])?_0x286eda[_0x2787('0x46')]+'\x20'+_0x286eda['last_name']:_0x286eda[_0x2787('0x47')],'id':_0x286eda['id']};_0x3d20a4['Subject']=intUtil['getString'](_0x941f3e[_0x2787('0x58')],_0x17d49c,'\x20');_0x3d20a4[_0x2787('0x59')]=intUtil[_0x2787('0x5a')](_0x941f3e['Descriptions'],_0x17d49c,'\x0a');if(_0xfb97ea[_0x2787('0x41')]===_0x2787('0x52')){_0x3d20a4[_0x2787('0x5b')]={'name':!_['isNil'](_0xfb97ea['Full_Name'])?_0xfb97ea[_0x2787('0x5c')]:!_[_0x2787('0x36')](_0xfb97ea['First_Name'])?_0xfb97ea[_0x2787('0x5d')]+'\x20'+_0xfb97ea['Last_Name']:_0xfb97ea[_0x2787('0x5e')],'id':_0xfb97ea['id']};}if(_0xfb97ea['enduserType']===_0x2787('0x5f')){_0x3d20a4['What_Id']={'name':!_[_0x2787('0x36')](_0xfb97ea[_0x2787('0x5c')])?_0xfb97ea[_0x2787('0x5c')]:!_[_0x2787('0x36')](_0xfb97ea[_0x2787('0x5d')])?_0xfb97ea[_0x2787('0x5d')]+'\x20'+_0xfb97ea['Last_Name']:_0xfb97ea[_0x2787('0x5e')],'id':_0xfb97ea['id']};_0x3d20a4['$se_module']=_[_0x2787('0x44')](_0xfb97ea['enduserType']);}if(_0x17d49c['talktime']){_0x3d20a4[_0x2787('0x60')]=moment[_0x2787('0x61')](parseInt(_0x17d49c[_0x2787('0x62')])*0x3e8)[_0x2787('0x32')]('mm:ss');}else if(_0x17d49c[_0x2787('0x63')]&&_0x17d49c[_0x2787('0x64')]){_0x3d20a4[_0x2787('0x60')]=moment[_0x2787('0x61')](moment(_0x17d49c[_0x2787('0x64')],'YYYY-MM-DDTHH:mm:ss')[_0x2787('0x65')](moment(_0x17d49c[_0x2787('0x66')],_0x2787('0x67'))))[_0x2787('0x32')](_0x2787('0x68'));}switch(_0x17d49c[_0x2787('0x69')]){case _0x2787('0x6a'):_0x3d20a4[_0x2787('0x6b')]=_0x2787('0x6c');break;case _0x2787('0x6d'):case _0x2787('0x6e'):_0x3d20a4['Call_Result']='Answered';break;case _0x2787('0x6f'):_0x3d20a4['Call_Result']=_0x2787('0x70');break;case _0x2787('0x71'):_0x3d20a4['Call_Result']='Abandoned';break;case _0x2787('0x72'):_0x3d20a4[_0x2787('0x6b')]='Timeout';default:}_0x3d20a4[_0x2787('0x73')]=(_0x3050ae===_0x2787('0x74')?moment(_0x17d49c[_0x2787('0x66')])[_0x2787('0x32')]('YYYY-MM-DDTHH:mm:ss'):moment(_0x17d49c[_0x2787('0x75')])[_0x2787('0x32')]('YYYY-MM-DDTHH:mm:ss'))||moment()[_0x2787('0x32')](_0x2787('0x67'));_0x3d20a4['Call_Type']=_0x3050ae||_0x2787('0x76');_0x3d20a4=_[_0x2787('0x77')](_0x3d20a4,getCustomFields(_0x941f3e['Fields'],_0x17d49c));return request({'method':_0x2787('0x24'),'uri':_0x2787('0x42')+_0x4d445c+_0x2787('0x78'),'headers':{'Authorization':_0x2787('0x48')+_0x3d6daf},'body':{'data':[_0x3d20a4]},'json':!![]})[_0x2787('0x2a')](function(_0x3d0664){if(_0x3d0664&&_0x3d0664[_0x2787('0x4a')][0x0]['code']==='SUCCESS'){logger['info'](_0x2787('0x79'));return{'id':_0x3d0664['data'][0x0][_0x2787('0x4b')]['id']};}})['catch'](function(_0x17e8c6){logger['info'](_0x2787('0x7a'),_0x17e8c6[_0x2787('0x30')]);console[_0x2787('0x7b')](_0x2787('0x7a'),_0x17e8c6);});}exports['queue']=function(_0x5954c9,_0x14906e,_0x2623f8,_0x2c6d20,_0xf9d77e,_0x517bde){var _0x2349e9,_0xfb0e5c,_0x92c4ba;_0x517bde[_0x2787('0x7c')]=intUtil[_0x2787('0x7d')](_0x517bde[_0x2787('0x7c')]);_0x517bde[_0x2787('0x7e')]=intUtil[_0x2787('0x7d')](_0x517bde[_0x2787('0x7e')]);if(_0xf9d77e&&_0xf9d77e[_0x2787('0x7f')]){logger[_0x2787('0x39')](_0x2787('0x80'),'Recording\x20is\x20enabled!');_0x14906e[_0x2787('0x81')]=_0x517bde[_0x2787('0x7e')]+_0x2787('0x82')+_0x14906e[_0x2787('0x83')]+_0x2787('0x84')+md5(_0x14906e[_0x2787('0x83')]);}else{_0x14906e[_0x2787('0x81')]='';}var _0x30b134=_0x517bde['host']==='zoho.eu'?'eu':'com';return getAccessToken(_0x517bde)[_0x2787('0x2a')](function(_0x4de279){_0x92c4ba=_0x4de279;return getUser(_0x92c4ba,_0x30b134,_0x517bde,_0x2c6d20[_0x2787('0x85')]);})['then'](function(_0x575c4f){_0x2349e9=_0x575c4f;logger[_0x2787('0x39')]('The\x20User\x20ID\x20is:',_0x2349e9['id']);return getEndUser(_0x92c4ba,_0x30b134,_0x517bde,_0x14906e[_0x2787('0x86')],_0x14906e['calleridnum'],_0x2349e9,_0x2623f8);})[_0x2787('0x2a')](function(_0x23b4a5){_0xfb0e5c=_0x23b4a5;return getCall(_0x92c4ba,_0x30b134,_0x517bde,_0x2349e9,_0xfb0e5c,_0x2623f8,_0x14906e,_0x2787('0x76'));})['then'](function(_0x3d785c){if(_0x3d785c){logger['info'](_0x2787('0x87'),_0x3d785c['id']);logger[_0x2787('0x39')](_0x2787('0x80'),_0x2787('0x88'));emit(util['format'](_0x2787('0x89'),_0x2c6d20[_0x2787('0x19')]),_0x2787('0x8a'),{'uri':_0x2787('0x8b')+_0x517bde[_0x2787('0x7c')]+'/crm/EntityInfo.do?module=Calls&id='+_0x3d785c['id']});}})[_0x2787('0x2d')](function(_0x2ebdad){logger[_0x2787('0x2e')](_0x2787('0x80'),JSON[_0x2787('0x3f')](_0x2ebdad));});};exports['outbound']=function(_0x367649,_0x3dc5cc,_0x3d793b,_0x304c21,_0x32ff0a,_0x33626e,_0x53dcbe){var _0xd085ba,_0x2de723,_0x33e32a;_0x33626e[_0x2787('0x7c')]=intUtil[_0x2787('0x7d')](_0x33626e[_0x2787('0x7c')]);_0x33626e[_0x2787('0x7e')]=intUtil[_0x2787('0x7d')](_0x33626e[_0x2787('0x7e')]);if(_0x53dcbe&&_0x53dcbe[_0x2787('0x8c')]&&_0x53dcbe[_0x2787('0x8c')]!==_0x2787('0x8d')){logger[_0x2787('0x39')]('[OUTBOUND]',_0x2787('0x8e'));_0x3dc5cc[_0x2787('0x81')]=_0x33626e[_0x2787('0x7e')]+_0x2787('0x82')+_0x3dc5cc[_0x2787('0x83')]+_0x2787('0x84')+md5(_0x3dc5cc[_0x2787('0x83')]);}var _0x369c62=_0x33626e['host']===_0x2787('0x8f')?'eu':_0x2787('0x90');return getAccessToken(_0x33626e)[_0x2787('0x2a')](function(_0x554d87){_0x33e32a=_0x554d87;return getUser(_0x33e32a,_0x369c62,_0x33626e,_0x304c21['email']);})['then'](function(_0x514128){_0xd085ba=_0x514128;logger[_0x2787('0x39')](_0x2787('0x91'),_0xd085ba['id']);return getEndUser(_0x33e32a,_0x369c62,_0x33626e,_0x3dc5cc['destcalleridname'],_0x3dc5cc[_0x2787('0x92')],_0xd085ba,_0x3d793b);})['then'](function(_0x4ad8a6){_0x2de723=_0x4ad8a6;return getCall(_0x33e32a,_0x369c62,_0x33626e,_0xd085ba,_0x2de723,_0x3d793b,_0x3dc5cc,_0x2787('0x93'));})['then'](function(_0x3aead9){if(_0x3aead9){logger[_0x2787('0x39')](_0x2787('0x87'),_0x3aead9['id']);logger[_0x2787('0x39')](_0x2787('0x94'),_0x2787('0x88'));emit(util[_0x2787('0x32')](_0x2787('0x89'),_0x304c21[_0x2787('0x19')]),'trigger:browser:url',{'uri':'https://crm.'+_0x33626e[_0x2787('0x7c')]+_0x2787('0x95')+_0x3aead9['id']});}})[_0x2787('0x2d')](function(_0x25de9e){logger[_0x2787('0x2e')]('[OUTBOUND]',JSON['stringify'](_0x25de9e));});};exports[_0x2787('0x96')]=function(_0x5338b9,_0x5b751d,_0x2a8eab,_0x4eb557,_0x3b2840,_0x7d5013){var _0x1907a3,_0x37d6db,_0x5a1af6;_0x7d5013['host']=intUtil['stripTrailingSlash'](_0x7d5013[_0x2787('0x7c')]);_0x7d5013['serverUrl']=intUtil[_0x2787('0x7d')](_0x7d5013[_0x2787('0x7e')]);if(_0x3b2840&&_0x3b2840[_0x2787('0x7f')]){logger['info']('['+_0x5b751d[_0x2787('0x69')][_0x2787('0x97')]()+']',_0x2787('0x8e'));_0x5b751d['recordingURL']=_0x7d5013[_0x2787('0x7e')]+_0x2787('0x82')+_0x5b751d[_0x2787('0x83')]+_0x2787('0x84')+md5(_0x5b751d[_0x2787('0x83')]);}else{_0x5b751d[_0x2787('0x81')]='';}var _0x5c8cee=_0x7d5013['host']===_0x2787('0x8f')?'eu':_0x2787('0x90');return getAccessToken(_0x7d5013)[_0x2787('0x2a')](function(_0xa1bbaf){_0x5a1af6=_0xa1bbaf;return getUser(_0x5a1af6,_0x5c8cee,_0x7d5013);})[_0x2787('0x2a')](function(_0x2b4960){_0x1907a3=_0x2b4960;logger['info'](_0x2787('0x91'),_0x1907a3['id']);return getEndUser(_0x5a1af6,_0x5c8cee,_0x7d5013,_0x5b751d[_0x2787('0x86')],_0x5b751d['calleridnum'],_0x1907a3,_0x2a8eab);})[_0x2787('0x2a')](function(_0x5e26bb){_0x37d6db=_0x5e26bb;return getCall(_0x5a1af6,_0x5c8cee,_0x7d5013,_0x1907a3,_0x37d6db,_0x2a8eab,_0x5b751d,_0x2787('0x76'));})[_0x2787('0x2a')](function(_0x5b585b){if(_0x5b585b){logger[_0x2787('0x39')](_0x2787('0x87'),_0x5b585b['id']);}})['catch'](function(_0x2b014e){logger[_0x2787('0x2e')]('['+_0x5b751d[_0x2787('0x69')][_0x2787('0x97')]()+']',JSON[_0x2787('0x3f')](_0x2b014e));});};
\ No newline at end of file
+var _0x44f7=['toString','customVariable','Variable','name','toLowerCase','indexOf','split','isNil','access_token','expires_in','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.eu','https://accounts.zoho.in','https://accounts.zoho.com.cn','POST','clientId','refresh_token','then','add','seconds','catch','error','Failing\x20creating\x20the\x20access_token','stack','info','Search\x20user','GET','format','ActiveUsers','Zoho-oauthtoken\x20','isArrayLikeObject','users','findIndex','Using\x20the\x20admin\x20account!','Administrator','user','profile','The\x20failing\x20result\x20is','Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20','data','https://www.zohoapis.','/crm/v2/','startCase','moduleCreate','role','first_name','code','SUCCESS','details','enduserType','Error:\x20','log','CREATE\x20ERROR','moduleSearch','/crm/v2/Contacts/search?criteria=((Phone:equals:','uri','/crm/v2/Leads/search?criteria=((Phone:equals:','Leads','nothing','contact','lead','Creating\x20new\x20call...','last_name','getString','Subjects','Description','Descriptions','Contacts','Full_Name','First_Name','Last_Name','What_Id','$se_module','Call_Duration','talktime','mm:ss','answertime','endtime','utc','YYYY-MM-DDTHH:mm:ss','starttime','called','Call_Result','Called','complete','connect','rejected','Rejected','abandoned','Abandoned','timeout','Call_Start_Time','outbound','agentcalledAt','Call_Type','Fields','err','queue','host','stripTrailingSlash','serverUrl','recordingURL','uniqueid','/downloads?type=uniqueid&token=','email','The\x20User\x20ID\x20is:','calleridname','The\x20Call\x20ID\x20is:','[QUEUE]','Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','https://crm.','/crm/EntityInfo.do?module=Calls&id=','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','/api/voice/recordings/','zoho.eu','com','destcalleridname','destcalleridnum','Outbound','unmanaged','lastevent','toUpperCase','calleridnum','Inbound','lodash','request-promise','md5','util','./util','moment','ioredis','../../../../config/environment','zoho','redis','defaults','localhost','socket.io-emitter','emit','debug','[HTTP]','stringify','length','string','type','idField','variable','variableName'];(function(_0x2505d7,_0x1847ea){var _0xdf84fb=function(_0x26aea8){while(--_0x26aea8){_0x2505d7['push'](_0x2505d7['shift']());}};_0xdf84fb(++_0x1847ea);}(_0x44f7,0x11b));var _0x744f=function(_0x1035c1,_0x2d8583){_0x1035c1=_0x1035c1-0x0;var _0x308d67=_0x44f7[_0x1035c1];return _0x308d67;};'use strict';var _=require(_0x744f('0x0'));var rp=require(_0x744f('0x1'));var md5=require(_0x744f('0x2'));var util=require(_0x744f('0x3'));var intUtil=require(_0x744f('0x4'));var moment=require(_0x744f('0x5'));var Redis=require(_0x744f('0x6'));var BPromise=require('bluebird');var config=require(_0x744f('0x7'));var logger=require('../../../../config/logger')(_0x744f('0x8'));config[_0x744f('0x9')]=_[_0x744f('0xa')](config['redis'],{'host':_0x744f('0xb'),'port':0x18eb});var io=require(_0x744f('0xc'))(new Redis(config['redis']));function emit(_0x29cd76,_0x196013,_0x12790){io['to'](_0x29cd76)[_0x744f('0xd')](_0x196013,_0x12790);}function request(_0x1459fa){logger[_0x744f('0xe')](_0x744f('0xf'),JSON[_0x744f('0x10')](_0x1459fa));return rp(_0x1459fa);}function getCustomFields(_0x2deded,_0x256bd4){var _0x56205f={};if(_0x2deded[_0x744f('0x11')]>0x0){_['forEach'](_0x2deded,function(_0x196144){if(_['includes']([_0x744f('0x12'),'picklist'],_0x196144[_0x744f('0x13')])&&_0x196144[_0x744f('0x14')]){_0x56205f[_0x196144[_0x744f('0x14')]]=_0x196144['content']['toString']();}else if(_0x196144[_0x744f('0x13')]===_0x744f('0x15')&&_0x196144['variableName']&&_0x196144[_0x744f('0x14')]&&_0x256bd4[_0x196144['variableName']]){_0x56205f[_0x196144[_0x744f('0x14')]]=_0x256bd4[_0x196144[_0x744f('0x16')]][_0x744f('0x17')]();}else if(_0x196144[_0x744f('0x13')]===_0x744f('0x18')&&_0x196144[_0x744f('0x19')]&&_0x196144[_0x744f('0x19')][_0x744f('0x1a')]&&_0x196144[_0x744f('0x14')]&&_0x256bd4[_0x196144[_0x744f('0x19')][_0x744f('0x1a')][_0x744f('0x1b')]()]){_0x56205f[_0x196144[_0x744f('0x14')]]=_0x256bd4[_0x196144['Variable']['name'][_0x744f('0x1b')]()]['toString']();}});}return _0x56205f;}function getName(_0x1163e7){if(_0x1163e7[_0x744f('0x1c')]('\x20')>0x0){var _0x2a6541=_0x1163e7[_0x744f('0x1d')](/ (.+)/);if(_0x2a6541[0x1]){return _0x2a6541;}}return[_0x1163e7,_0x1163e7];}var accountsTokens={};function getAccessToken(_0x3017cb){return new Promise(function(_0x1401e0,_0x22b3d1){if(!_[_0x744f('0x1e')](accountsTokens[_0x3017cb['id']])&&!_[_0x744f('0x1e')](accountsTokens[_0x3017cb['id']][_0x744f('0x1f')])){if(moment()['isBefore'](accountsTokens[_0x3017cb['id']][_0x744f('0x20')])){_0x1401e0(accountsTokens[_0x3017cb['id']][_0x744f('0x1f')]);}}var _0x2e39d6;switch(_0x3017cb['zone']){case'US':_0x2e39d6=_0x744f('0x21');break;case'AU':_0x2e39d6=_0x744f('0x22');break;case'EU':_0x2e39d6=_0x744f('0x23');break;case'IN':_0x2e39d6=_0x744f('0x24');break;case'CN':_0x2e39d6=_0x744f('0x25');break;default:_0x2e39d6=_0x744f('0x23');break;}var _0x4d9332={'method':_0x744f('0x26'),'uri':_0x2e39d6+'/oauth/v2/token','qs':{'refresh_token':_0x3017cb['refreshToken'],'client_id':_0x3017cb[_0x744f('0x27')],'client_secret':_0x3017cb['clientSecret'],'grant_type':_0x744f('0x28')},'json':!![]};return rp(_0x4d9332)[_0x744f('0x29')](function(_0x1fcaa3){accountsTokens[_0x3017cb['id']]={'access_token':_0x1fcaa3[_0x744f('0x1f')],'expires_in':moment()[_0x744f('0x2a')](_0x1fcaa3[_0x744f('0x20')],_0x744f('0x2b'))};_0x1401e0(_0x1fcaa3[_0x744f('0x1f')]);})[_0x744f('0x2c')](function(_0x2d8060){logger[_0x744f('0x2d')](_0x744f('0x2e'),_0x2d8060[_0x744f('0x2f')]);_0x22b3d1(_0x2d8060);});});}function getUser(_0xb6eb07,_0x4b436b,_0x442638,_0x2c1cbb){logger[_0x744f('0x30')](_0x744f('0x31'));return request({'method':_0x744f('0x32'),'uri':util[_0x744f('0x33')]('https://www.zohoapis.%s/crm/v2/users',_0x4b436b),'qs':{'type':_0x744f('0x34')},'headers':{'Authorization':_0x744f('0x35')+_0xb6eb07},'json':!![]})[_0x744f('0x29')](function(_0x276308){if(_0x276308['users']){var _0x1cccf4=-0x1;if(_[_0x744f('0x36')](_0x276308[_0x744f('0x37')])){if(!_[_0x744f('0x1e')](_0x2c1cbb)){_0x1cccf4=_[_0x744f('0x38')](_0x276308[_0x744f('0x37')],function(_0x19342c){return _0x19342c['email']===_0x2c1cbb;});}if(_0x1cccf4>=0x0){logger[_0x744f('0x30')]('Agent\x20found!');}else{logger['info'](_0x744f('0x39'));_0x1cccf4=_[_0x744f('0x38')](_0x276308['users'],function(_0x52253d){return _0x52253d['profile']['name']===_0x744f('0x3a');});}return _0x276308['users'][_0x1cccf4];}else{if(_0x276308[_0x744f('0x3b')][_0x744f('0x3c')][_0x744f('0x1a')]===_0x744f('0x3a')){logger[_0x744f('0x30')]('Using\x20the\x20admin\x20account!');user=_0x276308[_0x744f('0x3b')];return user;}else{logger['error'](_0x744f('0x3d'),JSON[_0x744f('0x10')](_0x276308));throw new Error(_0x744f('0x3e')+JSON[_0x744f('0x10')](_0x276308));}}}else{logger['error'](_0x744f('0x3d'),JSON['stringify'](_0x276308));throw new Error(_0x744f('0x3e')+JSON[_0x744f('0x10')](_0x276308));}})[_0x744f('0x2c')](function(_0x545cbe){console[_0x744f('0x2d')](_0x545cbe);});}function getZohoUser(_0x48b198,_0x114d6a){return new BPromise(function(_0x2024dc,_0xa70e14){request(_0x48b198)[_0x744f('0x29')](function(_0x21ab7c){var _0x56c06d=null;if(_0x21ab7c){_0x56c06d=_0x21ab7c[_0x744f('0x3f')][0x0];_0x56c06d['enduserType']=_0x114d6a;}_0x2024dc(_0x56c06d);})['catch'](function(_0x14c394){_0xa70e14(_0x14c394);});});}function createEndUser(_0x32adc0,_0x178672,_0x7f90bb,_0x557d3b,_0x24c72d,_0x2fc98b){var _0x7f90bb=getName(_0x7f90bb);return request({'method':_0x744f('0x26'),'uri':_0x744f('0x40')+_0x178672+_0x744f('0x41')+_[_0x744f('0x42')](_0x2fc98b[_0x744f('0x43')])+'s','body':{'data':[{'Last_Name':_0x7f90bb[0x1],'First_Name':_0x7f90bb[0x0],'Phone':_0x557d3b,'Owner':{'name':!_['isNil'](_0x24c72d[_0x744f('0x44')][_0x744f('0x1a')])?_0x24c72d[_0x744f('0x44')]['name']:!_['isNil'](_0x24c72d[_0x744f('0x45')])?_0x24c72d[_0x744f('0x45')]+'\x20'+_0x24c72d['last_name']:_0x24c72d['last_name'],'id':_0x24c72d['id']}}]},'headers':{'Authorization':_0x744f('0x35')+_0x32adc0},'json':!![]})[_0x744f('0x29')](function(_0x118bcf){if(_0x118bcf&&_0x118bcf[_0x744f('0x3f')][0x0][_0x744f('0x46')]===_0x744f('0x47')){var _0x7e0e=_0x118bcf['data'][0x0][_0x744f('0x48')];_0x7e0e[_0x744f('0x49')]=_[_0x744f('0x42')](_0x2fc98b[_0x744f('0x43')])+'s';return _0x7e0e;}logger[_0x744f('0x2d')](_0x744f('0x3d'),JSON[_0x744f('0x10')](data));throw new Error(_0x744f('0x4a')+JSON['stringify'](data));})[_0x744f('0x2c')](function(_0x1be392){console[_0x744f('0x4b')](_0x744f('0x4c'),_0x1be392);});}function getEndUser(_0x293297,_0x592271,_0x1895c3,_0x358a74,_0x189cab,_0x126000,_0x27a642){var _0x4061c7={'method':'GET','uri':'','headers':{'Authorization':_0x744f('0x35')+_0x293297},'json':!![]};switch(_0x27a642[_0x744f('0x4d')]){case'contact_lead':_0x4061c7['uri']=_0x744f('0x40')+_0x592271+_0x744f('0x4e')+_0x189cab+'))';return getZohoUser(_0x4061c7,'Contacts')[_0x744f('0x29')](function(_0x214fb8){if(_0x214fb8)return _0x214fb8;_0x4061c7[_0x744f('0x4f')]=_0x744f('0x40')+_0x592271+_0x744f('0x50')+_0x189cab+'))';return getZohoUser(_0x4061c7,_0x744f('0x51'))['then'](function(_0x36d3b2){if(_0x36d3b2)return _0x36d3b2;if(_0x27a642[_0x744f('0x43')]!=_0x744f('0x52')){return createEndUser(_0x293297,_0x592271,_0x358a74,_0x189cab,_0x126000,_0x27a642);}else{return{};}});});break;case _0x744f('0x53'):_0x4061c7[_0x744f('0x4f')]=_0x744f('0x40')+_0x592271+_0x744f('0x4e')+_0x189cab+'))';return getZohoUser(_0x4061c7,'Contacts')['then'](function(_0x481555){if(_0x481555)return _0x481555;if(_0x27a642['moduleCreate']!=_0x744f('0x52')){return createEndUser(_0x293297,_0x592271,_0x358a74,_0x189cab,_0x126000,_0x27a642);}else{return{};}});break;case _0x744f('0x54'):_0x4061c7[_0x744f('0x4f')]='https://www.zohoapis.'+_0x592271+_0x744f('0x50')+_0x189cab+'))';return getZohoUser(_0x4061c7,_0x744f('0x51'))[_0x744f('0x29')](function(_0x5e6566){if(_0x5e6566)return _0x5e6566;if(_0x27a642[_0x744f('0x43')]!=_0x744f('0x52')){return createEndUser(_0x293297,_0x592271,_0x358a74,_0x189cab,_0x126000,_0x27a642);}else{return{};}});break;}}function getCall(_0x43e3e4,_0x4235d3,_0x4fea9c,_0x5d14d3,_0x6e718d,_0x5e2f48,_0x11d4b5,_0x4eb804){logger['info'](_0x744f('0x55'));var _0x15430e={};_0x15430e['Owner']={'name':!_[_0x744f('0x1e')](_0x5d14d3[_0x744f('0x44')]['name'])&&!_[_0x744f('0x1e')](_0x5d14d3[_0x744f('0x3c')]['name'])&&_0x5d14d3[_0x744f('0x3c')]['name']==='administrator'?_0x5d14d3[_0x744f('0x44')][_0x744f('0x1a')]:!_[_0x744f('0x1e')](_0x5d14d3[_0x744f('0x45')])?_0x5d14d3['first_name']+'\x20'+_0x5d14d3[_0x744f('0x56')]:_0x5d14d3[_0x744f('0x56')],'id':_0x5d14d3['id']};_0x15430e['Subject']=intUtil[_0x744f('0x57')](_0x5e2f48[_0x744f('0x58')],_0x11d4b5,'\x20');_0x15430e[_0x744f('0x59')]=intUtil['getString'](_0x5e2f48[_0x744f('0x5a')],_0x11d4b5,'\x0a');if(_0x6e718d[_0x744f('0x49')]===_0x744f('0x5b')){_0x15430e['Who_Id']={'name':!_[_0x744f('0x1e')](_0x6e718d[_0x744f('0x5c')])?_0x6e718d[_0x744f('0x5c')]:!_[_0x744f('0x1e')](_0x6e718d[_0x744f('0x5d')])?_0x6e718d[_0x744f('0x5d')]+'\x20'+_0x6e718d[_0x744f('0x5e')]:_0x6e718d[_0x744f('0x5e')],'id':_0x6e718d['id']};}if(_0x6e718d[_0x744f('0x49')]===_0x744f('0x51')){_0x15430e[_0x744f('0x5f')]={'name':!_['isNil'](_0x6e718d[_0x744f('0x5c')])?_0x6e718d[_0x744f('0x5c')]:!_[_0x744f('0x1e')](_0x6e718d['First_Name'])?_0x6e718d['First_Name']+'\x20'+_0x6e718d[_0x744f('0x5e')]:_0x6e718d['Last_Name'],'id':_0x6e718d['id']};_0x15430e[_0x744f('0x60')]=_[_0x744f('0x42')](_0x6e718d[_0x744f('0x49')]);}if(_0x11d4b5['talktime']){_0x15430e[_0x744f('0x61')]=moment['utc'](parseInt(_0x11d4b5[_0x744f('0x62')])*0x3e8)[_0x744f('0x33')](_0x744f('0x63'));}else if(_0x11d4b5[_0x744f('0x64')]&&_0x11d4b5[_0x744f('0x65')]){_0x15430e[_0x744f('0x61')]=moment[_0x744f('0x66')](moment(_0x11d4b5[_0x744f('0x65')],_0x744f('0x67'))['diff'](moment(_0x11d4b5[_0x744f('0x68')],_0x744f('0x67'))))[_0x744f('0x33')]('mm:ss');}switch(_0x11d4b5['lastevent']){case _0x744f('0x69'):_0x15430e[_0x744f('0x6a')]=_0x744f('0x6b');break;case _0x744f('0x6c'):case _0x744f('0x6d'):_0x15430e['Call_Result']='Answered';break;case _0x744f('0x6e'):_0x15430e[_0x744f('0x6a')]=_0x744f('0x6f');break;case _0x744f('0x70'):_0x15430e['Call_Result']=_0x744f('0x71');break;case _0x744f('0x72'):_0x15430e[_0x744f('0x6a')]='Timeout';default:}_0x15430e[_0x744f('0x73')]=(_0x4eb804===_0x744f('0x74')?moment(_0x11d4b5[_0x744f('0x68')])['format'](_0x744f('0x67')):moment(_0x11d4b5[_0x744f('0x75')])['format']('YYYY-MM-DDTHH:mm:ss'))||moment()[_0x744f('0x33')]('YYYY-MM-DDTHH:mm:ss');_0x15430e[_0x744f('0x76')]=_0x4eb804||'Inbound';_0x15430e=_['merge'](_0x15430e,getCustomFields(_0x5e2f48[_0x744f('0x77')],_0x11d4b5));return request({'method':'POST','uri':'https://www.zohoapis.'+_0x4235d3+'/crm/v2/Calls','headers':{'Authorization':_0x744f('0x35')+_0x43e3e4},'body':{'data':[_0x15430e]},'json':!![]})['then'](function(_0xc58f2f){if(_0xc58f2f&&_0xc58f2f[_0x744f('0x3f')][0x0][_0x744f('0x46')]===_0x744f('0x47')){logger[_0x744f('0x30')]('Call\x20created!');return{'id':_0xc58f2f[_0x744f('0x3f')][0x0][_0x744f('0x48')]['id']};}})[_0x744f('0x2c')](function(_0xcfec2){logger[_0x744f('0x30')](_0x744f('0x78'),_0xcfec2[_0x744f('0x2f')]);console[_0x744f('0x4b')](_0x744f('0x78'),_0xcfec2);});}exports[_0x744f('0x79')]=function(_0x1b9aa1,_0x5402a1,_0x5c483b,_0x5bd0a9,_0x52a96e,_0x43819e){var _0x5453f1,_0x5a59b5,_0x56b6cf;_0x43819e[_0x744f('0x7a')]=intUtil[_0x744f('0x7b')](_0x43819e['host']);_0x43819e[_0x744f('0x7c')]=intUtil[_0x744f('0x7b')](_0x43819e[_0x744f('0x7c')]);if(_0x52a96e&&_0x52a96e['monitor_format']){logger[_0x744f('0x30')]('[QUEUE]','Recording\x20is\x20enabled!');_0x5402a1[_0x744f('0x7d')]=_0x43819e[_0x744f('0x7c')]+'/api/voice/recordings/'+_0x5402a1[_0x744f('0x7e')]+_0x744f('0x7f')+md5(_0x5402a1['uniqueid']);}else{_0x5402a1['recordingURL']='';}var _0x5745c0=_0x43819e[_0x744f('0x7a')]==='zoho.eu'?'eu':'com';return getAccessToken(_0x43819e)[_0x744f('0x29')](function(_0x2236dc){_0x56b6cf=_0x2236dc;return getUser(_0x56b6cf,_0x5745c0,_0x43819e,_0x5bd0a9[_0x744f('0x80')]);})[_0x744f('0x29')](function(_0x4c341d){_0x5453f1=_0x4c341d;logger[_0x744f('0x30')](_0x744f('0x81'),_0x5453f1['id']);return getEndUser(_0x56b6cf,_0x5745c0,_0x43819e,_0x5402a1[_0x744f('0x82')],_0x5402a1['calleridnum'],_0x5453f1,_0x5c483b);})[_0x744f('0x29')](function(_0x174d7d){_0x5a59b5=_0x174d7d;return getCall(_0x56b6cf,_0x5745c0,_0x43819e,_0x5453f1,_0x5a59b5,_0x5c483b,_0x5402a1,'Inbound');})[_0x744f('0x29')](function(_0x1f7af7){if(_0x1f7af7){logger[_0x744f('0x30')](_0x744f('0x83'),_0x1f7af7['id']);logger[_0x744f('0x30')](_0x744f('0x84'),_0x744f('0x85'));emit(util[_0x744f('0x33')](_0x744f('0x86'),_0x5bd0a9[_0x744f('0x1a')]),_0x744f('0x87'),{'uri':_0x744f('0x88')+_0x43819e['host']+_0x744f('0x89')+_0x1f7af7['id']});}})['catch'](function(_0x237170){logger['error'](_0x744f('0x84'),JSON[_0x744f('0x10')](_0x237170));});};exports[_0x744f('0x74')]=function(_0x2c3fbf,_0x739f3d,_0x51ebf9,_0x50238d,_0x25e233,_0x4c3211,_0xe15115){var _0x44b939,_0x381128,_0xb5419a;_0x4c3211[_0x744f('0x7a')]=intUtil[_0x744f('0x7b')](_0x4c3211[_0x744f('0x7a')]);_0x4c3211[_0x744f('0x7c')]=intUtil[_0x744f('0x7b')](_0x4c3211[_0x744f('0x7c')]);if(_0xe15115&&_0xe15115[_0x744f('0x8a')]&&_0xe15115[_0x744f('0x8a')]!==_0x744f('0x8b')){logger[_0x744f('0x30')](_0x744f('0x8c'),_0x744f('0x8d'));_0x739f3d[_0x744f('0x7d')]=_0x4c3211[_0x744f('0x7c')]+_0x744f('0x8e')+_0x739f3d[_0x744f('0x7e')]+_0x744f('0x7f')+md5(_0x739f3d[_0x744f('0x7e')]);}var _0x14716c=_0x4c3211[_0x744f('0x7a')]===_0x744f('0x8f')?'eu':_0x744f('0x90');return getAccessToken(_0x4c3211)[_0x744f('0x29')](function(_0x4bfc75){_0xb5419a=_0x4bfc75;return getUser(_0xb5419a,_0x14716c,_0x4c3211,_0x50238d[_0x744f('0x80')]);})[_0x744f('0x29')](function(_0x37928c){_0x44b939=_0x37928c;logger[_0x744f('0x30')]('The\x20User\x20ID\x20is:',_0x44b939['id']);return getEndUser(_0xb5419a,_0x14716c,_0x4c3211,_0x739f3d[_0x744f('0x91')],_0x739f3d[_0x744f('0x92')],_0x44b939,_0x51ebf9);})[_0x744f('0x29')](function(_0x4e492e){_0x381128=_0x4e492e;return getCall(_0xb5419a,_0x14716c,_0x4c3211,_0x44b939,_0x381128,_0x51ebf9,_0x739f3d,_0x744f('0x93'));})[_0x744f('0x29')](function(_0x4f5431){if(_0x4f5431){logger[_0x744f('0x30')](_0x744f('0x83'),_0x4f5431['id']);logger[_0x744f('0x30')](_0x744f('0x8c'),_0x744f('0x85'));emit(util[_0x744f('0x33')](_0x744f('0x86'),_0x50238d[_0x744f('0x1a')]),'trigger:browser:url',{'uri':_0x744f('0x88')+_0x4c3211[_0x744f('0x7a')]+_0x744f('0x89')+_0x4f5431['id']});}})[_0x744f('0x2c')](function(_0x382228){logger[_0x744f('0x2d')]('[OUTBOUND]',JSON[_0x744f('0x10')](_0x382228));});};exports[_0x744f('0x94')]=function(_0xa16558,_0x545077,_0x41a1db,_0x291d4a,_0x1b5bde,_0x249f19){var _0x4db775,_0x3d2f9b,_0x23b359;_0x249f19[_0x744f('0x7a')]=intUtil[_0x744f('0x7b')](_0x249f19[_0x744f('0x7a')]);_0x249f19['serverUrl']=intUtil['stripTrailingSlash'](_0x249f19[_0x744f('0x7c')]);if(_0x1b5bde&&_0x1b5bde['monitor_format']){logger[_0x744f('0x30')]('['+_0x545077[_0x744f('0x95')][_0x744f('0x96')]()+']',_0x744f('0x8d'));_0x545077[_0x744f('0x7d')]=_0x249f19[_0x744f('0x7c')]+_0x744f('0x8e')+_0x545077[_0x744f('0x7e')]+_0x744f('0x7f')+md5(_0x545077[_0x744f('0x7e')]);}else{_0x545077[_0x744f('0x7d')]='';}var _0x3f398d=_0x249f19[_0x744f('0x7a')]===_0x744f('0x8f')?'eu':_0x744f('0x90');return getAccessToken(_0x249f19)[_0x744f('0x29')](function(_0x132e4d){_0x23b359=_0x132e4d;return getUser(_0x23b359,_0x3f398d,_0x249f19);})[_0x744f('0x29')](function(_0x36c04d){_0x4db775=_0x36c04d;logger[_0x744f('0x30')](_0x744f('0x81'),_0x4db775['id']);return getEndUser(_0x23b359,_0x3f398d,_0x249f19,_0x545077[_0x744f('0x82')],_0x545077[_0x744f('0x97')],_0x4db775,_0x41a1db);})[_0x744f('0x29')](function(_0x527182){_0x3d2f9b=_0x527182;return getCall(_0x23b359,_0x3f398d,_0x249f19,_0x4db775,_0x3d2f9b,_0x41a1db,_0x545077,_0x744f('0x98'));})['then'](function(_0x3636ac){if(_0x3636ac){logger[_0x744f('0x30')](_0x744f('0x83'),_0x3636ac['id']);}})[_0x744f('0x2c')](function(_0x12cc8e){logger[_0x744f('0x2d')]('['+_0x545077[_0x744f('0x95')][_0x744f('0x96')]()+']',JSON[_0x744f('0x10')](_0x12cc8e));});};
\ No newline at end of file
index 1a9b8d5..6a29bf1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ffa=['data2','Script','data3','render','error','format','info','%s\x20\x27%s\x27\x20succeeded\x20with\x20output:\x20%s','util','shelljs','mustache','../../../../config/logger','trigger','exec'];(function(_0x593fef,_0x579fcf){var _0x1729d0=function(_0x3ecdad){while(--_0x3ecdad){_0x593fef['push'](_0x593fef['shift']());}};_0x1729d0(++_0x579fcf);}(_0x5ffa,0x1e4));var _0xa5ff=function(_0x567b93,_0x4ea50f){_0x567b93=_0x567b93-0x0;var _0x495636=_0x5ffa[_0x567b93];return _0x495636;};'use strict';var util=require(_0xa5ff('0x0'));var sh=require(_0xa5ff('0x1'));var Mustache=require(_0xa5ff('0x2'));var logger=require(_0xa5ff('0x3'))(_0xa5ff('0x4'));exports[_0xa5ff('0x5')]=function(_0x68eb09,_0x1c3ffc){var _0x263b67=_0x68eb09[_0xa5ff('0x6')]?_0x68eb09[_0xa5ff('0x6')]:_0xa5ff('0x7');var _0x29c0d1=_0x68eb09[_0xa5ff('0x8')]?Mustache[_0xa5ff('0x9')](_0x68eb09[_0xa5ff('0x8')],_0x1c3ffc):_0x1c3ffc;sh['exec'](_0x29c0d1,function(_0x16f23e,_0x5cf9dd,_0x1494a6){if(_0x16f23e!==0x0){logger[_0xa5ff('0xa')](util[_0xa5ff('0xb')]('%s\x20\x27%s\x27\x20failed\x20with\x20code\x20%d\x20and\x20error:\x20%s',_0x263b67,_0x29c0d1,_0x16f23e,_0x1494a6));}else{logger[_0xa5ff('0xc')](util[_0xa5ff('0xb')](_0xa5ff('0xd'),_0x263b67,_0x29c0d1,_0x5cf9dd));}});};
\ No newline at end of file
+var _0x5090=['data3','render','error','format','%s\x20\x27%s\x27\x20failed\x20with\x20code\x20%d\x20and\x20error:\x20%s','info','%s\x20\x27%s\x27\x20succeeded\x20with\x20output:\x20%s','../../../../config/logger','trigger','exec','data2','Script'];(function(_0x8fae2a,_0x109b53){var _0x4df1ad=function(_0x36be80){while(--_0x36be80){_0x8fae2a['push'](_0x8fae2a['shift']());}};_0x4df1ad(++_0x109b53);}(_0x5090,0x1ab));var _0x0509=function(_0x1024c4,_0x564629){_0x1024c4=_0x1024c4-0x0;var _0x25048d=_0x5090[_0x1024c4];return _0x25048d;};'use strict';var util=require('util');var sh=require('shelljs');var Mustache=require('mustache');var logger=require(_0x0509('0x0'))(_0x0509('0x1'));exports[_0x0509('0x2')]=function(_0x2bcf8f,_0x2acbf4){var _0x4a2161=_0x2bcf8f[_0x0509('0x3')]?_0x2bcf8f[_0x0509('0x3')]:_0x0509('0x4');var _0x4e9a28=_0x2bcf8f[_0x0509('0x5')]?Mustache[_0x0509('0x6')](_0x2bcf8f[_0x0509('0x5')],_0x2acbf4):_0x2acbf4;sh['exec'](_0x4e9a28,function(_0x595634,_0x102f62,_0x49d302){if(_0x595634!==0x0){logger[_0x0509('0x7')](util[_0x0509('0x8')](_0x0509('0x9'),_0x4a2161,_0x4e9a28,_0x595634,_0x49d302));}else{logger[_0x0509('0xa')](util[_0x0509('0x8')](_0x0509('0xb'),_0x4a2161,_0x4e9a28,_0x102f62));}});};
\ No newline at end of file
index 1a22715..fe3304c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa58=['POST','data7','parse','body','info','%s\x20%s\x20sending\x20request\x20with\x20following\x20options:\x20%s','data2','stringify','then',',\x20request\x20body:\x20','object','format','statusCode','%s\x20%s\x20failed\x20with\x20status:\x20%d\x20and\x20error:\x20%s\x20%s','name','message','request-promise','util','lodash','mustache','../../../../config/logger','trigger','exec','data1','toUpperCase','render','number','data5','headers','data6','error','stack','GET','DELETE'];(function(_0x14c0f5,_0x170edc){var _0x1cc3b8=function(_0x10505c){while(--_0x10505c){_0x14c0f5['push'](_0x14c0f5['shift']());}};_0x1cc3b8(++_0x170edc);}(_0xaa58,0x186));var _0x8aa5=function(_0x533276,_0x59e9ee){_0x533276=_0x533276-0x0;var _0x18b65b=_0xaa58[_0x533276];return _0x18b65b;};'use strict';var rp=require(_0x8aa5('0x0'));var util=require(_0x8aa5('0x1'));var _=require(_0x8aa5('0x2'));var Mustache=require(_0x8aa5('0x3'));var logger=require(_0x8aa5('0x4'))(_0x8aa5('0x5'));exports[_0x8aa5('0x6')]=function(_0x326e3a,_0x2a5de5){var _0x95b3fa,_0x427555;var _0x24ee29={'method':_0x326e3a[_0x8aa5('0x7')][_0x8aa5('0x8')](),'uri':Mustache[_0x8aa5('0x9')](_0x326e3a['data2'],_0x2a5de5),'json':!![],'resolveWithFullResponse':!![],'timeout':typeof parseInt(_0x326e3a['data5'])===_0x8aa5('0xa')&&parseInt(_0x326e3a[_0x8aa5('0xb')])>=0x1&&parseInt(_0x326e3a['data5'])<=0xa?parseInt(_0x326e3a[_0x8aa5('0xb')])*0x3e8:0x5*0x3e8};try{_0x24ee29[_0x8aa5('0xc')]=_0x326e3a[_0x8aa5('0xd')]?JSON['parse'](Mustache[_0x8aa5('0x9')](_0x326e3a['data6'],_0x2a5de5)):{};}catch(_0x5e3c50){logger[_0x8aa5('0xe')](_0x5e3c50[_0x8aa5('0xf')]);}switch(_0x326e3a[_0x8aa5('0x7')]['toUpperCase']()){case _0x8aa5('0x10'):case _0x8aa5('0x11'):_0x95b3fa=null;_0x24ee29['qs']=_0x2a5de5;break;case _0x8aa5('0x12'):case'PUT':if(_0x326e3a[_0x8aa5('0x13')]){try{_0x95b3fa=JSON[_0x8aa5('0x14')](Mustache[_0x8aa5('0x9')](_0x326e3a[_0x8aa5('0x13')],_0x2a5de5));_0x24ee29[_0x8aa5('0x15')]=_0x95b3fa;}catch(_0x34896f){logger[_0x8aa5('0xe')](_0x34896f['stack']);logger['error']('body\x20has\x20been\x20passed\x20to\x20URLforward\x20in\x20a\x20wrong\x20format');}}else{_0x95b3fa=_0x2a5de5;_0x24ee29['body']=_0x95b3fa;}break;}logger[_0x8aa5('0x16')](util['format'](_0x8aa5('0x17'),_0x326e3a[_0x8aa5('0x7')],_0x326e3a[_0x8aa5('0x18')],JSON[_0x8aa5('0x19')](_0x24ee29)));rp(_0x24ee29)[_0x8aa5('0x1a')](function(_0x3ecc0c){_0x95b3fa=!_['isNil'](_0x95b3fa)?_0x8aa5('0x1b')+_0x95b3fa:'';_0x427555=typeof _0x3ecc0c['body']===_0x8aa5('0x1c')?JSON[_0x8aa5('0x19')](_0x3ecc0c[_0x8aa5('0x15')]):_0x3ecc0c[_0x8aa5('0x15')];logger[_0x8aa5('0x16')](util[_0x8aa5('0x1d')]('%s\x20%s\x20succeeded\x20with\x20status:\x20%d\x20and\x20response:\x20%s',_0x326e3a[_0x8aa5('0x7')],_0x326e3a[_0x8aa5('0x18')],_0x3ecc0c[_0x8aa5('0x1e')],_0x427555));})['catch'](function(_0x5a6441){logger['error'](util[_0x8aa5('0x1d')](_0x8aa5('0x1f'),_0x326e3a[_0x8aa5('0x7')],_0x326e3a[_0x8aa5('0x18')],_0x5a6441[_0x8aa5('0x1e')],_0x5a6441[_0x8aa5('0x20')],_0x5a6441[_0x8aa5('0x21')]));});};
\ No newline at end of file
+var _0xecaa=['parse','render','error','stack','GET','DELETE','POST','PUT','data7','body','body\x20has\x20been\x20passed\x20to\x20URLforward\x20in\x20a\x20wrong\x20format','format','%s\x20%s\x20sending\x20request\x20with\x20following\x20options:\x20%s','data2','then','isNil',',\x20request\x20body:\x20','stringify','info','%s\x20%s\x20succeeded\x20with\x20status:\x20%d\x20and\x20response:\x20%s','statusCode','catch','%s\x20%s\x20failed\x20with\x20status:\x20%d\x20and\x20error:\x20%s\x20%s','name','message','request-promise','util','lodash','mustache','../../../../config/logger','trigger','data1','toUpperCase','data5','number','headers','data6'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xecaa,0x1b0));var _0xaeca=function(_0x55d0fb,_0x5ee255){_0x55d0fb=_0x55d0fb-0x0;var _0x2388b0=_0xecaa[_0x55d0fb];return _0x2388b0;};'use strict';var rp=require(_0xaeca('0x0'));var util=require(_0xaeca('0x1'));var _=require(_0xaeca('0x2'));var Mustache=require(_0xaeca('0x3'));var logger=require(_0xaeca('0x4'))(_0xaeca('0x5'));exports['exec']=function(_0x2cbf11,_0x148ee6){var _0x3aa3f9,_0x4f7aef;var _0xfa2e97={'method':_0x2cbf11[_0xaeca('0x6')][_0xaeca('0x7')](),'uri':Mustache['render'](_0x2cbf11['data2'],_0x148ee6),'json':!![],'resolveWithFullResponse':!![],'timeout':typeof parseInt(_0x2cbf11[_0xaeca('0x8')])===_0xaeca('0x9')&&parseInt(_0x2cbf11[_0xaeca('0x8')])>=0x1&&parseInt(_0x2cbf11[_0xaeca('0x8')])<=0xa?parseInt(_0x2cbf11[_0xaeca('0x8')])*0x3e8:0x5*0x3e8};try{_0xfa2e97[_0xaeca('0xa')]=_0x2cbf11[_0xaeca('0xb')]?JSON[_0xaeca('0xc')](Mustache[_0xaeca('0xd')](_0x2cbf11[_0xaeca('0xb')],_0x148ee6)):{};}catch(_0x2890c0){logger[_0xaeca('0xe')](_0x2890c0[_0xaeca('0xf')]);}switch(_0x2cbf11[_0xaeca('0x6')][_0xaeca('0x7')]()){case _0xaeca('0x10'):case _0xaeca('0x11'):_0x3aa3f9=null;_0xfa2e97['qs']=_0x148ee6;break;case _0xaeca('0x12'):case _0xaeca('0x13'):if(_0x2cbf11[_0xaeca('0x14')]){try{_0x3aa3f9=JSON[_0xaeca('0xc')](Mustache[_0xaeca('0xd')](_0x2cbf11['data7'],_0x148ee6));_0xfa2e97[_0xaeca('0x15')]=_0x3aa3f9;}catch(_0x25a910){logger[_0xaeca('0xe')](_0x25a910[_0xaeca('0xf')]);logger['error'](_0xaeca('0x16'));}}else{_0x3aa3f9=_0x148ee6;_0xfa2e97[_0xaeca('0x15')]=_0x3aa3f9;}break;}logger['info'](util[_0xaeca('0x17')](_0xaeca('0x18'),_0x2cbf11[_0xaeca('0x6')],_0x2cbf11[_0xaeca('0x19')],JSON['stringify'](_0xfa2e97)));rp(_0xfa2e97)[_0xaeca('0x1a')](function(_0x1813ba){_0x3aa3f9=!_[_0xaeca('0x1b')](_0x3aa3f9)?_0xaeca('0x1c')+_0x3aa3f9:'';_0x4f7aef=typeof _0x1813ba[_0xaeca('0x15')]==='object'?JSON[_0xaeca('0x1d')](_0x1813ba[_0xaeca('0x15')]):_0x1813ba[_0xaeca('0x15')];logger[_0xaeca('0x1e')](util[_0xaeca('0x17')](_0xaeca('0x1f'),_0x2cbf11['data1'],_0x2cbf11[_0xaeca('0x19')],_0x1813ba[_0xaeca('0x20')],_0x4f7aef));})[_0xaeca('0x21')](function(_0x22ce5a){logger[_0xaeca('0xe')](util[_0xaeca('0x17')](_0xaeca('0x22'),_0x2cbf11['data1'],_0x2cbf11['data2'],_0x22ce5a[_0xaeca('0x20')],_0x22ce5a[_0xaeca('0x23')],_0x22ce5a[_0xaeca('0x24')]));});};
\ No newline at end of file
index 6a54f5b..c8726d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6daf=['routing','client','http','Request','then','rpc','error','message','result','catch','exports','jayson/promise','../../config/logger'];(function(_0xf9d9be,_0x1e8fc7){var _0x377b29=function(_0x20c6e0){while(--_0x20c6e0){_0xf9d9be['push'](_0xf9d9be['shift']());}};_0x377b29(++_0x1e8fc7);}(_0x6daf,0xa7));var _0xf6da=function(_0x148771,_0x32bc2e){_0x148771=_0x148771-0x0;var _0x3dbc43=_0x6daf[_0x148771];return _0x3dbc43;};'use strict';var jayson=require(_0xf6da('0x0'));var BPromise=require('bluebird');var logger=require(_0xf6da('0x1'))(_0xf6da('0x2'));var client=jayson[_0xf6da('0x3')][_0xf6da('0x4')]({'port':0x2329});client[_0xf6da('0x5')]=function(_0x47dabc,_0x191b9e){return new BPromise(function(_0x38b3d5,_0x1ecbdb){return client['request'](_0x47dabc,_0x191b9e)[_0xf6da('0x6')](function(_0x3301f3){logger['debug'](_0xf6da('0x7'),_0xf6da('0x2'),_0x47dabc,_0x191b9e,_0x3301f3);if(_0x3301f3[_0xf6da('0x8')]){logger[_0xf6da('0x8')](_0xf6da('0x7'),_0xf6da('0x2'),_0x47dabc,_0x3301f3[_0xf6da('0x8')][_0xf6da('0x9')],_0x191b9e);return _0x1ecbdb(_0x3301f3[_0xf6da('0x8')]['message']);}else{return _0x38b3d5(_0x3301f3[_0xf6da('0xa')]);}})[_0xf6da('0xb')](function(_0x5058cc){logger['error'](_0xf6da('0x7'),_0xf6da('0x2'),_0x47dabc,_0x5058cc,_0x191b9e);return _0x1ecbdb(_0x5058cc);});});};module[_0xf6da('0xc')]=client;
\ No newline at end of file
+var _0xef6a=['http','Request','request','debug','rpc','error','message','result','jayson/promise','../../config/logger','routing','client'];(function(_0x4482af,_0x2df282){var _0x1874e5=function(_0x27aecc){while(--_0x27aecc){_0x4482af['push'](_0x4482af['shift']());}};_0x1874e5(++_0x2df282);}(_0xef6a,0x170));var _0xaef6=function(_0x209941,_0x5c9988){_0x209941=_0x209941-0x0;var _0x1e8729=_0xef6a[_0x209941];return _0x1e8729;};'use strict';var jayson=require(_0xaef6('0x0'));var BPromise=require('bluebird');var logger=require(_0xaef6('0x1'))(_0xaef6('0x2'));var client=jayson[_0xaef6('0x3')][_0xaef6('0x4')]({'port':0x2329});client[_0xaef6('0x5')]=function(_0x1e7ab4,_0x7ddbd1){return new BPromise(function(_0x4def0c,_0x2d9b5f){return client[_0xaef6('0x6')](_0x1e7ab4,_0x7ddbd1)['then'](function(_0x537b24){logger[_0xaef6('0x7')](_0xaef6('0x8'),'routing',_0x1e7ab4,_0x7ddbd1,_0x537b24);if(_0x537b24[_0xaef6('0x9')]){logger[_0xaef6('0x9')](_0xaef6('0x8'),'routing',_0x1e7ab4,_0x537b24[_0xaef6('0x9')][_0xaef6('0xa')],_0x7ddbd1);return _0x2d9b5f(_0x537b24[_0xaef6('0x9')][_0xaef6('0xa')]);}else{return _0x4def0c(_0x537b24[_0xaef6('0xb')]);}})['catch'](function(_0x15ac57){logger[_0xaef6('0x9')](_0xaef6('0x8'),_0xaef6('0x2'),_0x1e7ab4,_0x15ac57,_0x7ddbd1);return _0x2d9b5f(_0x15ac57);});});};module['exports']=client;
\ No newline at end of file
index fd7c917..a162b0e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe0b3=['./rpc/mailAccount','./rpc/setting','resolve','then','getMailAccounts','initMailAccounts','mailAccounts','listen','getSettings','catch','bluebird','./server','./realtime','./lib/email'];(function(_0xe534ac,_0x19b9f8){var _0x2d7da0=function(_0x268895){while(--_0x268895){_0xe534ac['push'](_0xe534ac['shift']());}};_0x2d7da0(++_0x19b9f8);}(_0xe0b3,0x1e6));var _0x3e0b=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xe0b3[_0x122ef9];return _0x42fba0;};'use strict';var BPromise=require(_0x3e0b('0x0'));var server=require(_0x3e0b('0x1'));var Realtime=require(_0x3e0b('0x2'));var EmailChannel=require(_0x3e0b('0x3'));var mailAccount=require(_0x3e0b('0x4'));var setting=require(_0x3e0b('0x5'));var realtime=new Realtime();var email=new EmailChannel(realtime);function initRealtime(){return BPromise[_0x3e0b('0x6')]()[_0x3e0b('0x7')](mailAccount[_0x3e0b('0x8')]())[_0x3e0b('0x7')](realtime[_0x3e0b('0x9')]())[_0x3e0b('0x7')](function(){email['refresh'](realtime[_0x3e0b('0xa')]);return realtime;});}function main(){return server[_0x3e0b('0xb')](realtime,email)[_0x3e0b('0x7')](function(){return initRealtime();})[_0x3e0b('0x7')](function(){return setting[_0x3e0b('0xc')]();})['then'](function(_0x4e3800){return setInterval(initRealtime,_0x4e3800['loginMailFrequency']*0x3e8);})[_0x3e0b('0xd')](function(_0x5b313b){console['log'](_0x5b313b);});}main();
\ No newline at end of file
+var _0x041e=['./rpc/setting','resolve','then','getMailAccounts','refresh','mailAccounts','getSettings','loginMailFrequency','catch','log','bluebird','./server','./realtime','./lib/email','./rpc/mailAccount'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0x041e,0x73));var _0xe041=function(_0x40c6ba,_0x15c15a){_0x40c6ba=_0x40c6ba-0x0;var _0x1706c1=_0x041e[_0x40c6ba];return _0x1706c1;};'use strict';var BPromise=require(_0xe041('0x0'));var server=require(_0xe041('0x1'));var Realtime=require(_0xe041('0x2'));var EmailChannel=require(_0xe041('0x3'));var mailAccount=require(_0xe041('0x4'));var setting=require(_0xe041('0x5'));var realtime=new Realtime();var email=new EmailChannel(realtime);function initRealtime(){return BPromise[_0xe041('0x6')]()[_0xe041('0x7')](mailAccount[_0xe041('0x8')]())[_0xe041('0x7')](realtime['initMailAccounts']())[_0xe041('0x7')](function(){email[_0xe041('0x9')](realtime[_0xe041('0xa')]);return realtime;});}function main(){return server['listen'](realtime,email)[_0xe041('0x7')](function(){return initRealtime();})[_0xe041('0x7')](function(){return setting[_0xe041('0xb')]();})['then'](function(_0x23a7b1){return setInterval(initRealtime,_0x23a7b1[_0xe041('0xc')]*0x3e8);})[_0xe041('0xd')](function(_0x1aeff8){console[_0xe041('0xe')](_0x1aeff8);});}main();
\ No newline at end of file
index 63876eb..fc90ca0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a4b=['handleImapBox','bind','handleImapEmail','error','handleImapError','isNil','messages','total','lastName','from','notify','then','Mail\x20accepted\x20from\x20routing','catch','Mail\x20not\x20accepted\x20from\x20routing\x20%s','verifySmtp','Smtp','verify','lodash','moment','md5','ioredis','../../../config/environment','../../../config/logger','email','redis','localhost','socket.io-emitter','./imap','./smtp','info','start\x20email\x20channel','mailAccounts','imapAccounts','smtp','prototype','emit','name','key','active','Imap','status','messageStatus','stringify','mailAccount:update','refresh','hasOwnProperty','box'];(function(_0x8a217e,_0x450bfc){var _0x3fc350=function(_0x55ed99){while(--_0x55ed99){_0x8a217e['push'](_0x8a217e['shift']());}};_0x3fc350(++_0x450bfc);}(_0x9a4b,0x162));var _0xb9a4=function(_0x5e6ebe,_0x373752){_0x5e6ebe=_0x5e6ebe-0x0;var _0x5d80a0=_0x9a4b[_0x5e6ebe];return _0x5d80a0;};'use strict';var _=require(_0xb9a4('0x0'));var moment=require(_0xb9a4('0x1'));var BPromise=require('bluebird');var md5=require(_0xb9a4('0x2'));var Redis=require(_0xb9a4('0x3'));var config=require(_0xb9a4('0x4'));var logger=require(_0xb9a4('0x5'))(_0xb9a4('0x6'));config['redis']=_['defaults'](config[_0xb9a4('0x7')],{'host':_0xb9a4('0x8'),'port':0x18eb});var io=require(_0xb9a4('0x9'))(new Redis(config[_0xb9a4('0x7')]));var EmailImap=require(_0xb9a4('0xa'));var EmailSmtp=require(_0xb9a4('0xb'));var mailAccount=require('../rpc/mailAccount');var md5Accounts={};function EmailChannel(_0x3dc33a){logger[_0xb9a4('0xc')](_0xb9a4('0xd'));this[_0xb9a4('0xe')]=_0x3dc33a[_0xb9a4('0xe')];this[_0xb9a4('0xf')]={};this[_0xb9a4('0x10')]=new EmailSmtp();}EmailChannel[_0xb9a4('0x11')][_0xb9a4('0x12')]=function(_0x18d336){var _0x279937=this[_0xb9a4('0xe')][_0x18d336];var _0x501052={'id':_0x279937['id'],'name':_0x279937[_0xb9a4('0x13')],'key':_0x279937[_0xb9a4('0x14')],'active':_0x279937[_0xb9a4('0x15')],'Imap':{'status':_0x279937[_0xb9a4('0x16')][_0xb9a4('0x17')],'messageStatus':_0x279937[_0xb9a4('0x16')][_0xb9a4('0x18')],'total':_0x279937[_0xb9a4('0x16')]['total']}};if(_['isNil'](md5Accounts[_0x18d336])){md5Accounts[_0x18d336]={};}var _0x5a70c4=md5(JSON[_0xb9a4('0x19')](_0x501052));if(md5Accounts[_0x18d336]['md5']!==_0x5a70c4){md5Accounts[_0x18d336][_0xb9a4('0x2')]=_0x5a70c4;io['emit'](_0xb9a4('0x1a'),_0x501052);}};EmailChannel[_0xb9a4('0x11')][_0xb9a4('0x1b')]=function(_0x2adaa1){for(var _0x5e9f6b in _0x2adaa1){if(_0x2adaa1[_0xb9a4('0x1c')](_0x5e9f6b)){if(_0x2adaa1[_0x5e9f6b][_0xb9a4('0x16')]&&_0x2adaa1[_0x5e9f6b]['active']){var _0x5b18de=_0x2adaa1[_0x5e9f6b][_0xb9a4('0x16')];if(!this[_0xb9a4('0xf')][_0xb9a4('0x1c')](_0x5b18de['id'])){this[_0xb9a4('0xf')][_0x5b18de['id']]=new EmailImap(_0x5b18de,_0x2adaa1[_0x5e9f6b][_0xb9a4('0x6')]);this[_0xb9a4('0xf')][_0x5b18de['id']]['on'](_0xb9a4('0x1d'),this[_0xb9a4('0x1e')][_0xb9a4('0x1f')](this,_0x5e9f6b));this[_0xb9a4('0xf')][_0x5b18de['id']]['on'](_0xb9a4('0x6'),this[_0xb9a4('0x20')][_0xb9a4('0x1f')](this,_0x5e9f6b));this[_0xb9a4('0xf')][_0x5b18de['id']]['on']('end',this['handleImapEnd']['bind'](this,_0x5e9f6b));this['imapAccounts'][_0x5b18de['id']]['on'](_0xb9a4('0x21'),this[_0xb9a4('0x22')][_0xb9a4('0x1f')](this,_0x5e9f6b));}}else{if(_[_0xb9a4('0x23')](this[_0xb9a4('0xe')][_0x5e9f6b][_0xb9a4('0x16')])){this[_0xb9a4('0xe')][_0x5e9f6b]['Imap']={};}this[_0xb9a4('0xe')][_0x5e9f6b][_0xb9a4('0x16')][_0xb9a4('0x17')]='disabled';this[_0xb9a4('0xe')][_0x5e9f6b][_0xb9a4('0x16')]['messageStatus']='';this['emit'](_0x5e9f6b);}}}};EmailChannel[_0xb9a4('0x11')][_0xb9a4('0x1e')]=function(_0x353b78,_0x2d360b){if(this[_0xb9a4('0xe')][_0x353b78]){this[_0xb9a4('0xe')][_0x353b78][_0xb9a4('0x16')][_0xb9a4('0x17')]='connected';this[_0xb9a4('0xe')][_0x353b78][_0xb9a4('0x16')]['messageStatus']=_0x2d360b[_0xb9a4('0x13')];if(_0x2d360b['messages']){this[_0xb9a4('0xe')][_0x353b78][_0xb9a4('0x16')]['total']=_0x2d360b[_0xb9a4('0x24')][_0xb9a4('0x25')];}return this[_0xb9a4('0x12')](_0x353b78);}};EmailChannel[_0xb9a4('0x11')][_0xb9a4('0x20')]=function(_0x258e12,_0x3896ab){logger[_0xb9a4('0xc')]('New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s',_0x3896ab['firstName'],_0x3896ab[_0xb9a4('0x26')],_0x3896ab[_0xb9a4('0x27')],_0x258e12);if(this['mailAccounts'][_0x258e12]){return mailAccount[_0xb9a4('0x28')](_0x258e12,_0x3896ab)[_0xb9a4('0x29')](function(_0x581f19){if(_0x581f19){logger[_0xb9a4('0xc')](_0xb9a4('0x2a'));}})[_0xb9a4('0x2b')](function(_0x329522){logger[_0xb9a4('0x21')](_0xb9a4('0x2c'),JSON[_0xb9a4('0x19')](_0x329522));});}};EmailChannel[_0xb9a4('0x11')]['handleImapEnd']=function(_0x6b7629){if(this[_0xb9a4('0xe')][_0x6b7629]&&this['mailAccounts'][_0x6b7629][_0xb9a4('0x16')]){if(this[_0xb9a4('0xf')][this[_0xb9a4('0xe')][_0x6b7629][_0xb9a4('0x16')]['id']]){delete this[_0xb9a4('0xf')][this[_0xb9a4('0xe')][_0x6b7629][_0xb9a4('0x16')]['id']];}this[_0xb9a4('0xe')][_0x6b7629]['Imap']['lastSync']=moment();this[_0xb9a4('0x12')](_0x6b7629);}};EmailChannel[_0xb9a4('0x11')][_0xb9a4('0x22')]=function(_0x5175f8,_0x3c4b8b){if(this[_0xb9a4('0xe')][_0x5175f8]){this[_0xb9a4('0xe')][_0x5175f8][_0xb9a4('0x16')][_0xb9a4('0x17')]=_0xb9a4('0x21');this[_0xb9a4('0xe')][_0x5175f8][_0xb9a4('0x16')][_0xb9a4('0x18')]=_0x3c4b8b;return this['emit'](_0x5175f8);}};EmailChannel[_0xb9a4('0x11')]['sendMail']=function(_0xadacde,_0x962dc){return this[_0xb9a4('0x10')]['send'](_0xadacde,_0x962dc);};EmailChannel[_0xb9a4('0x11')][_0xb9a4('0x2d')]=function(_0x117c37){var _0x27862e=this;if(this[_0xb9a4('0xe')][_0x117c37['id']]){if(_[_0xb9a4('0x23')](this[_0xb9a4('0xe')][_0x117c37['id']]['Smtp'])){this['mailAccounts'][_0x117c37['id']]['Smtp']={};}this[_0xb9a4('0xe')][_0x117c37['id']][_0xb9a4('0x2e')]['lastSync']=moment();return new BPromise(function(_0x7569eb,_0x4f90a5){return _0x27862e[_0xb9a4('0x10')]['verify'](_0x117c37)[_0xb9a4('0x29')](function(_0x2e3f97){_0x27862e['mailAccounts'][_0x117c37['id']][_0xb9a4('0x2e')][_0xb9a4('0x17')]='verified';_0x27862e[_0xb9a4('0xe')][_0x117c37['id']][_0xb9a4('0x2e')][_0xb9a4('0x18')]='';_0x27862e[_0xb9a4('0x12')](_0x117c37['id']);_0x7569eb(_0x2e3f97);})['catch'](function(_0xfe8042){_0x27862e[_0xb9a4('0xe')][_0x117c37['id']][_0xb9a4('0x2e')][_0xb9a4('0x17')]=_0xb9a4('0x21');_0x27862e[_0xb9a4('0xe')][_0x117c37['id']]['Smtp'][_0xb9a4('0x18')]=_0xfe8042;_0x27862e[_0xb9a4('0x12')](_0x117c37['id']);_0x4f90a5(_0xfe8042);});});}return this[_0xb9a4('0x10')][_0xb9a4('0x2f')](_0x117c37);};module['exports']=EmailChannel;
\ No newline at end of file
+var _0x5a1c=['handleImapBox','connected','messages','firstName','notify','info','Mail\x20accepted\x20from\x20routing','catch','Mail\x20not\x20accepted\x20from\x20routing\x20%s','lastSync','handleImapError','sendMail','send','verifySmtp','Smtp','verified','verify','exports','lodash','moment','bluebird','md5','../../../config/environment','../../../config/logger','email','redis','defaults','localhost','socket.io-emitter','./imap','./smtp','../rpc/mailAccount','mailAccounts','imapAccounts','smtp','prototype','name','key','status','messageStatus','Imap','total','isNil','stringify','emit','refresh','hasOwnProperty','active','box','bind','handleImapEmail','end','handleImapEnd','error','disabled'];(function(_0x5b433f,_0x16fc0f){var _0x545a6a=function(_0x504a47){while(--_0x504a47){_0x5b433f['push'](_0x5b433f['shift']());}};_0x545a6a(++_0x16fc0f);}(_0x5a1c,0x193));var _0xc5a1=function(_0x44a386,_0x59061b){_0x44a386=_0x44a386-0x0;var _0x293dbe=_0x5a1c[_0x44a386];return _0x293dbe;};'use strict';var _=require(_0xc5a1('0x0'));var moment=require(_0xc5a1('0x1'));var BPromise=require(_0xc5a1('0x2'));var md5=require(_0xc5a1('0x3'));var Redis=require('ioredis');var config=require(_0xc5a1('0x4'));var logger=require(_0xc5a1('0x5'))(_0xc5a1('0x6'));config[_0xc5a1('0x7')]=_[_0xc5a1('0x8')](config[_0xc5a1('0x7')],{'host':_0xc5a1('0x9'),'port':0x18eb});var io=require(_0xc5a1('0xa'))(new Redis(config[_0xc5a1('0x7')]));var EmailImap=require(_0xc5a1('0xb'));var EmailSmtp=require(_0xc5a1('0xc'));var mailAccount=require(_0xc5a1('0xd'));var md5Accounts={};function EmailChannel(_0xa01aae){logger['info']('start\x20email\x20channel');this[_0xc5a1('0xe')]=_0xa01aae[_0xc5a1('0xe')];this[_0xc5a1('0xf')]={};this[_0xc5a1('0x10')]=new EmailSmtp();}EmailChannel[_0xc5a1('0x11')]['emit']=function(_0x35657c){var _0xcfd33b=this[_0xc5a1('0xe')][_0x35657c];var _0x41e848={'id':_0xcfd33b['id'],'name':_0xcfd33b[_0xc5a1('0x12')],'key':_0xcfd33b[_0xc5a1('0x13')],'active':_0xcfd33b['active'],'Imap':{'status':_0xcfd33b['Imap'][_0xc5a1('0x14')],'messageStatus':_0xcfd33b['Imap'][_0xc5a1('0x15')],'total':_0xcfd33b[_0xc5a1('0x16')][_0xc5a1('0x17')]}};if(_[_0xc5a1('0x18')](md5Accounts[_0x35657c])){md5Accounts[_0x35657c]={};}var _0xb051e0=md5(JSON[_0xc5a1('0x19')](_0x41e848));if(md5Accounts[_0x35657c][_0xc5a1('0x3')]!==_0xb051e0){md5Accounts[_0x35657c][_0xc5a1('0x3')]=_0xb051e0;io[_0xc5a1('0x1a')]('mailAccount:update',_0x41e848);}};EmailChannel['prototype'][_0xc5a1('0x1b')]=function(_0x253935){for(var _0x14dbc2 in _0x253935){if(_0x253935[_0xc5a1('0x1c')](_0x14dbc2)){if(_0x253935[_0x14dbc2][_0xc5a1('0x16')]&&_0x253935[_0x14dbc2][_0xc5a1('0x1d')]){var _0x56fe7c=_0x253935[_0x14dbc2][_0xc5a1('0x16')];if(!this[_0xc5a1('0xf')][_0xc5a1('0x1c')](_0x56fe7c['id'])){this[_0xc5a1('0xf')][_0x56fe7c['id']]=new EmailImap(_0x56fe7c,_0x253935[_0x14dbc2][_0xc5a1('0x6')]);this['imapAccounts'][_0x56fe7c['id']]['on'](_0xc5a1('0x1e'),this['handleImapBox'][_0xc5a1('0x1f')](this,_0x14dbc2));this[_0xc5a1('0xf')][_0x56fe7c['id']]['on'](_0xc5a1('0x6'),this[_0xc5a1('0x20')][_0xc5a1('0x1f')](this,_0x14dbc2));this['imapAccounts'][_0x56fe7c['id']]['on'](_0xc5a1('0x21'),this[_0xc5a1('0x22')]['bind'](this,_0x14dbc2));this['imapAccounts'][_0x56fe7c['id']]['on'](_0xc5a1('0x23'),this['handleImapError'][_0xc5a1('0x1f')](this,_0x14dbc2));}}else{if(_[_0xc5a1('0x18')](this[_0xc5a1('0xe')][_0x14dbc2][_0xc5a1('0x16')])){this[_0xc5a1('0xe')][_0x14dbc2]['Imap']={};}this[_0xc5a1('0xe')][_0x14dbc2][_0xc5a1('0x16')][_0xc5a1('0x14')]=_0xc5a1('0x24');this['mailAccounts'][_0x14dbc2][_0xc5a1('0x16')][_0xc5a1('0x15')]='';this[_0xc5a1('0x1a')](_0x14dbc2);}}}};EmailChannel[_0xc5a1('0x11')][_0xc5a1('0x25')]=function(_0x49c34a,_0x1ef5c7){if(this[_0xc5a1('0xe')][_0x49c34a]){this[_0xc5a1('0xe')][_0x49c34a][_0xc5a1('0x16')][_0xc5a1('0x14')]=_0xc5a1('0x26');this[_0xc5a1('0xe')][_0x49c34a][_0xc5a1('0x16')]['messageStatus']=_0x1ef5c7[_0xc5a1('0x12')];if(_0x1ef5c7[_0xc5a1('0x27')]){this[_0xc5a1('0xe')][_0x49c34a][_0xc5a1('0x16')]['total']=_0x1ef5c7[_0xc5a1('0x27')][_0xc5a1('0x17')];}return this[_0xc5a1('0x1a')](_0x49c34a);}};EmailChannel[_0xc5a1('0x11')]['handleImapEmail']=function(_0x3a34a9,_0xc3b5e7){logger['info']('New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s',_0xc3b5e7[_0xc5a1('0x28')],_0xc3b5e7['lastName'],_0xc3b5e7['from'],_0x3a34a9);if(this[_0xc5a1('0xe')][_0x3a34a9]){return mailAccount[_0xc5a1('0x29')](_0x3a34a9,_0xc3b5e7)['then'](function(_0x468885){if(_0x468885){logger[_0xc5a1('0x2a')](_0xc5a1('0x2b'));}})[_0xc5a1('0x2c')](function(_0x1565d7){logger[_0xc5a1('0x23')](_0xc5a1('0x2d'),JSON['stringify'](_0x1565d7));});}};EmailChannel[_0xc5a1('0x11')]['handleImapEnd']=function(_0x183ec4){if(this[_0xc5a1('0xe')][_0x183ec4]&&this['mailAccounts'][_0x183ec4]['Imap']){if(this[_0xc5a1('0xf')][this[_0xc5a1('0xe')][_0x183ec4][_0xc5a1('0x16')]['id']]){delete this[_0xc5a1('0xf')][this[_0xc5a1('0xe')][_0x183ec4][_0xc5a1('0x16')]['id']];}this[_0xc5a1('0xe')][_0x183ec4][_0xc5a1('0x16')][_0xc5a1('0x2e')]=moment();this[_0xc5a1('0x1a')](_0x183ec4);}};EmailChannel[_0xc5a1('0x11')][_0xc5a1('0x2f')]=function(_0x4f0887,_0x293edf){if(this[_0xc5a1('0xe')][_0x4f0887]){this[_0xc5a1('0xe')][_0x4f0887][_0xc5a1('0x16')]['status']=_0xc5a1('0x23');this[_0xc5a1('0xe')][_0x4f0887][_0xc5a1('0x16')]['messageStatus']=_0x293edf;return this[_0xc5a1('0x1a')](_0x4f0887);}};EmailChannel[_0xc5a1('0x11')][_0xc5a1('0x30')]=function(_0x11a7d3,_0x25dcfd){return this[_0xc5a1('0x10')][_0xc5a1('0x31')](_0x11a7d3,_0x25dcfd);};EmailChannel['prototype'][_0xc5a1('0x32')]=function(_0x3c8ccc){var _0x32799e=this;if(this['mailAccounts'][_0x3c8ccc['id']]){if(_['isNil'](this[_0xc5a1('0xe')][_0x3c8ccc['id']][_0xc5a1('0x33')])){this['mailAccounts'][_0x3c8ccc['id']][_0xc5a1('0x33')]={};}this['mailAccounts'][_0x3c8ccc['id']][_0xc5a1('0x33')][_0xc5a1('0x2e')]=moment();return new BPromise(function(_0x54150a,_0x2a388d){return _0x32799e['smtp']['verify'](_0x3c8ccc)['then'](function(_0x17fe59){_0x32799e[_0xc5a1('0xe')][_0x3c8ccc['id']][_0xc5a1('0x33')][_0xc5a1('0x14')]=_0xc5a1('0x34');_0x32799e[_0xc5a1('0xe')][_0x3c8ccc['id']]['Smtp'][_0xc5a1('0x15')]='';_0x32799e[_0xc5a1('0x1a')](_0x3c8ccc['id']);_0x54150a(_0x17fe59);})['catch'](function(_0x5cf587){_0x32799e['mailAccounts'][_0x3c8ccc['id']][_0xc5a1('0x33')][_0xc5a1('0x14')]='error';_0x32799e[_0xc5a1('0xe')][_0x3c8ccc['id']][_0xc5a1('0x33')][_0xc5a1('0x15')]=_0x5cf587;_0x32799e['emit'](_0x3c8ccc['id']);_0x2a388d(_0x5cf587);});});}return this['smtp'][_0xc5a1('0x35')](_0x3c8ccc);};module[_0xc5a1('0x36')]=EmailChannel;
\ No newline at end of file
index 6470394..18f3c9e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x695f=['connect','inherits','connTimeout','authTimeout','service','user','password','host','port','tls','autotls','required','prototype','openBox','handleOpenBox','emit','box','readUnseen','end','search','UNSEEN','handleReadUnseen','handleFetchMessage','handleFetchEnd','closeBox','body','handleMessageBody','attributes','handleMessageAttributes','handleMessageEnd','handleCloseBox','stringify','textCode','hasOwnProperty','upperFirst','path','util','imap','lodash','randomstring','mailparser','iconv','Iconv','./utils','email','mailbox','account','handleReady','bind','once','handleEnd','error','handleError'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0x695f,0x1cb));var _0xf695=function(_0x1b7c1f,_0x2f5cf2){_0x1b7c1f=_0x1b7c1f-0x0;var _0x76cb38=_0x695f[_0x1b7c1f];return _0x76cb38;};'use strict';var fs=require('fs');var path=require(_0xf695('0x0'));var util=require(_0xf695('0x1'));var Imap=require(_0xf695('0x2'));var _=require(_0xf695('0x3'));var rs=require(_0xf695('0x4'));var simpleParser=require(_0xf695('0x5'))['simpleParser'];var Iconv=require(_0xf695('0x6'))[_0xf695('0x7')];var EventEmitter=require('events')['EventEmitter'];var utils=require(_0xf695('0x8'));var logger=require('../../../config/logger')(_0xf695('0x9'));function EmailImap(_0x61ef8b,_0x7e7263){this[_0xf695('0xa')]='INBOX';this[_0xf695('0xb')]=this['getAccount'](_0x61ef8b,_0x7e7263);this[_0xf695('0x2')]=new Imap(this[_0xf695('0xb')]);this[_0xf695('0x2')]['once']('ready',this[_0xf695('0xc')][_0xf695('0xd')](this));this[_0xf695('0x2')][_0xf695('0xe')]('end',this[_0xf695('0xf')][_0xf695('0xd')](this));this[_0xf695('0x2')]['on'](_0xf695('0x10'),this[_0xf695('0x11')][_0xf695('0xd')](this));this[_0xf695('0x2')][_0xf695('0x12')]();}util[_0xf695('0x13')](EmailImap,EventEmitter);EmailImap['prototype']['getAccount']=function(_0x202aee,_0xde4a1c){var _0x4d794a={'connTimeout':_0x202aee[_0xf695('0x14')]?_0x202aee['connTimeout']*0x3e8:0x2710,'authTimeout':_0x202aee[_0xf695('0x15')]?_0x202aee[_0xf695('0x15')]*0x3e8:0x1388};if(_['isNil'](_0x202aee[_0xf695('0x16')])){if(_0x202aee['authentication']){_0x4d794a[_0xf695('0x17')]=_0x202aee[_0xf695('0x17')];_0x4d794a[_0xf695('0x18')]=_0x202aee[_0xf695('0x18')];}_0x4d794a[_0xf695('0x19')]=_0x202aee[_0xf695('0x19')];_0x4d794a[_0xf695('0x1a')]=_0x202aee[_0xf695('0x1a')]||0x3e1;if(_0x202aee[_0xf695('0x1b')]){_0x4d794a[_0xf695('0x1b')]=!![];}else{_0x4d794a[_0xf695('0x1b')]=![];_0x4d794a[_0xf695('0x1c')]=_0xf695('0x1d');}}else{_0x4d794a['user']=_0x202aee[_0xf695('0x17')];_0x4d794a[_0xf695('0x18')]=_0x202aee['password'];_0x4d794a[_0xf695('0x19')]=utils['getHost'](_0x202aee['service']);_0x4d794a[_0xf695('0x1a')]=0x3e1;_0x4d794a[_0xf695('0x1b')]=!![];}_0x4d794a[_0xf695('0x9')]=_0xde4a1c||_0x202aee[_0xf695('0x17')]||'anonymous@xcally.com';return _0x4d794a;};EmailImap[_0xf695('0x1e')]['handleReady']=function(){this[_0xf695('0x2')][_0xf695('0x1f')](this[_0xf695('0xa')],![],this[_0xf695('0x20')]['bind'](this));};EmailImap['prototype'][_0xf695('0x20')]=function(_0x6dc9a3,_0x1b5728){if(_0x6dc9a3){this['handleError'](_0x6dc9a3,!![]);}else{this[_0xf695('0x21')](_0xf695('0x22'),_0x1b5728);this[_0xf695('0x23')]();}};EmailImap[_0xf695('0x1e')]['handleCloseBox']=function(_0x4e0543){if(_0x4e0543){this[_0xf695('0x11')](_0x4e0543,!![]);}else{this['imap'][_0xf695('0x24')]();}};EmailImap['prototype'][_0xf695('0x23')]=function(){this[_0xf695('0x2')][_0xf695('0x25')]([_0xf695('0x26')],this['handleReadUnseen'][_0xf695('0xd')](this));};EmailImap[_0xf695('0x1e')][_0xf695('0x27')]=function(_0x5329c6,_0x4de986){if(_0x5329c6){this[_0xf695('0x11')](_0x5329c6,!![]);}else{if(_0x4de986['length']){try{var _0x1c8aab=this[_0xf695('0x2')]['fetch'](_0x4de986,{'bodies':'','markSeen':!![]});_0x1c8aab['on']('message',this[_0xf695('0x28')]['bind'](this));_0x1c8aab[_0xf695('0xe')](_0xf695('0x10'),this['handleFetchError'][_0xf695('0xd')](this));_0x1c8aab[_0xf695('0xe')](_0xf695('0x24'),this[_0xf695('0x29')][_0xf695('0xd')](this));}catch(_0x3092f7){logger['error'](_0x3092f7);}}else{this[_0xf695('0x2')][_0xf695('0x2a')](!![],this['handleCloseBox'][_0xf695('0xd')](this));}}};EmailImap[_0xf695('0x1e')]['handleFetchMessage']=function(_0x2a2fd,_0x1add39){_0x2a2fd['on'](_0xf695('0x2b'),this[_0xf695('0x2c')][_0xf695('0xd')](this));_0x2a2fd['once'](_0xf695('0x2d'),this[_0xf695('0x2e')][_0xf695('0xd')](this));_0x2a2fd['once'](_0xf695('0x24'),this[_0xf695('0x2f')][_0xf695('0xd')](this));};EmailImap[_0xf695('0x1e')]['handleMessageBody']=function(_0x21335f,_0x4d16f7){simpleParser(_0x21335f,{'Iconv':Iconv},this['handleSimpleParser'][_0xf695('0xd')](this));};EmailImap[_0xf695('0x1e')][_0xf695('0x2e')]=function(_0x22ce41){};EmailImap[_0xf695('0x1e')]['handleMessageEnd']=function(){};EmailImap['prototype']['handleSimpleParser']=function(_0x3ba31c,_0x209e00){if(_0x3ba31c){logger[_0xf695('0x10')](_0x3ba31c);}else{var _0x1b4b1e=this;utils['parser'](this[_0xf695('0xb')],_0x209e00,function(_0x3503ec){_0x1b4b1e[_0xf695('0x21')](_0xf695('0x9'),_0x3503ec);});}};EmailImap[_0xf695('0x1e')]['handleFetchEnd']=function(){this[_0xf695('0x2')]['closeBox'](!![],this[_0xf695('0x30')][_0xf695('0xd')](this));};EmailImap[_0xf695('0x1e')]['handleFetchError']=function(_0xc17226){this['handleError'](_0xc17226);this[_0xf695('0x2')]['closeBox'](!![],this[_0xf695('0x30')][_0xf695('0xd')](this));};EmailImap[_0xf695('0x1e')][_0xf695('0xf')]=function(){this[_0xf695('0x21')](_0xf695('0x24'));};EmailImap['prototype'][_0xf695('0x11')]=function(_0x59e09f,_0x71bd63){logger['error']('handleError',this[_0xf695('0xb')][_0xf695('0x9')],JSON[_0xf695('0x31')](_0x59e09f));var _0x34d274='';if(_0x59e09f){if(_0x59e09f['textCode']){_0x34d274=_0x59e09f[_0xf695('0x32')];}else{for(var _0x4b49d8 in _0x59e09f){if(_0x59e09f[_0xf695('0x33')](_0x4b49d8)){_0x34d274+=_[_0xf695('0x34')](_0x4b49d8)+':\x20'+_0x59e09f[_0x4b49d8]+'\x0a';}}}}if(_0x71bd63){this[_0xf695('0x2')][_0xf695('0x24')]();}else{this['emit'](_0xf695('0x10'),_0x34d274);this[_0xf695('0x21')](_0xf695('0x24'));}};module['exports']=EmailImap;
\ No newline at end of file
+var _0xffdf=['handleFetchEnd','stringify','textCode','hasOwnProperty','upperFirst','exports','path','util','imap','randomstring','mailparser','events','EventEmitter','../../../config/logger','email','mailbox','INBOX','account','once','bind','handleEnd','error','connect','inherits','prototype','getAccount','connTimeout','authTimeout','authentication','user','password','host','port','tls','autotls','anonymous@xcally.com','handleReady','openBox','handleOpenBox','handleError','emit','box','readUnseen','end','search','UNSEEN','handleReadUnseen','length','fetch','message','handleFetchMessage','handleFetchError','closeBox','handleCloseBox','body','handleMessageBody','attributes','handleMessageAttributes','handleMessageEnd','handleSimpleParser'];(function(_0x1a569b,_0xe4e8ba){var _0x122d9f=function(_0x1a44ea){while(--_0x1a44ea){_0x1a569b['push'](_0x1a569b['shift']());}};_0x122d9f(++_0xe4e8ba);}(_0xffdf,0x7e));var _0xfffd=function(_0x229f0b,_0x343580){_0x229f0b=_0x229f0b-0x0;var _0xdc8e14=_0xffdf[_0x229f0b];return _0xdc8e14;};'use strict';var fs=require('fs');var path=require(_0xfffd('0x0'));var util=require(_0xfffd('0x1'));var Imap=require(_0xfffd('0x2'));var _=require('lodash');var rs=require(_0xfffd('0x3'));var simpleParser=require(_0xfffd('0x4'))['simpleParser'];var Iconv=require('iconv')['Iconv'];var EventEmitter=require(_0xfffd('0x5'))[_0xfffd('0x6')];var utils=require('./utils');var logger=require(_0xfffd('0x7'))(_0xfffd('0x8'));function EmailImap(_0x4d417b,_0x401903){this[_0xfffd('0x9')]=_0xfffd('0xa');this[_0xfffd('0xb')]=this['getAccount'](_0x4d417b,_0x401903);this[_0xfffd('0x2')]=new Imap(this[_0xfffd('0xb')]);this[_0xfffd('0x2')][_0xfffd('0xc')]('ready',this['handleReady'][_0xfffd('0xd')](this));this[_0xfffd('0x2')][_0xfffd('0xc')]('end',this[_0xfffd('0xe')]['bind'](this));this[_0xfffd('0x2')]['on'](_0xfffd('0xf'),this['handleError'][_0xfffd('0xd')](this));this[_0xfffd('0x2')][_0xfffd('0x10')]();}util[_0xfffd('0x11')](EmailImap,EventEmitter);EmailImap[_0xfffd('0x12')][_0xfffd('0x13')]=function(_0x54e33d,_0x3939fc){var _0x45a41e={'connTimeout':_0x54e33d[_0xfffd('0x14')]?_0x54e33d[_0xfffd('0x14')]*0x3e8:0x2710,'authTimeout':_0x54e33d[_0xfffd('0x15')]?_0x54e33d[_0xfffd('0x15')]*0x3e8:0x1388};if(_['isNil'](_0x54e33d['service'])){if(_0x54e33d[_0xfffd('0x16')]){_0x45a41e[_0xfffd('0x17')]=_0x54e33d[_0xfffd('0x17')];_0x45a41e['password']=_0x54e33d[_0xfffd('0x18')];}_0x45a41e[_0xfffd('0x19')]=_0x54e33d['host'];_0x45a41e[_0xfffd('0x1a')]=_0x54e33d[_0xfffd('0x1a')]||0x3e1;if(_0x54e33d[_0xfffd('0x1b')]){_0x45a41e['tls']=!![];}else{_0x45a41e[_0xfffd('0x1b')]=![];_0x45a41e[_0xfffd('0x1c')]='required';}}else{_0x45a41e[_0xfffd('0x17')]=_0x54e33d[_0xfffd('0x17')];_0x45a41e['password']=_0x54e33d[_0xfffd('0x18')];_0x45a41e[_0xfffd('0x19')]=utils['getHost'](_0x54e33d['service']);_0x45a41e[_0xfffd('0x1a')]=0x3e1;_0x45a41e['tls']=!![];}_0x45a41e[_0xfffd('0x8')]=_0x3939fc||_0x54e33d[_0xfffd('0x17')]||_0xfffd('0x1d');return _0x45a41e;};EmailImap['prototype'][_0xfffd('0x1e')]=function(){this[_0xfffd('0x2')][_0xfffd('0x1f')](this[_0xfffd('0x9')],![],this[_0xfffd('0x20')][_0xfffd('0xd')](this));};EmailImap[_0xfffd('0x12')]['handleOpenBox']=function(_0x4dd9b1,_0x364760){if(_0x4dd9b1){this[_0xfffd('0x21')](_0x4dd9b1,!![]);}else{this[_0xfffd('0x22')](_0xfffd('0x23'),_0x364760);this[_0xfffd('0x24')]();}};EmailImap[_0xfffd('0x12')]['handleCloseBox']=function(_0x4b5096){if(_0x4b5096){this[_0xfffd('0x21')](_0x4b5096,!![]);}else{this[_0xfffd('0x2')][_0xfffd('0x25')]();}};EmailImap[_0xfffd('0x12')]['readUnseen']=function(){this['imap'][_0xfffd('0x26')]([_0xfffd('0x27')],this[_0xfffd('0x28')]['bind'](this));};EmailImap[_0xfffd('0x12')][_0xfffd('0x28')]=function(_0x106097,_0x12acdd){if(_0x106097){this['handleError'](_0x106097,!![]);}else{if(_0x12acdd[_0xfffd('0x29')]){try{var _0x3d0a8c=this[_0xfffd('0x2')][_0xfffd('0x2a')](_0x12acdd,{'bodies':'','markSeen':!![]});_0x3d0a8c['on'](_0xfffd('0x2b'),this[_0xfffd('0x2c')][_0xfffd('0xd')](this));_0x3d0a8c[_0xfffd('0xc')](_0xfffd('0xf'),this[_0xfffd('0x2d')]['bind'](this));_0x3d0a8c[_0xfffd('0xc')](_0xfffd('0x25'),this['handleFetchEnd'][_0xfffd('0xd')](this));}catch(_0x65d90a){logger['error'](_0x65d90a);}}else{this[_0xfffd('0x2')][_0xfffd('0x2e')](!![],this[_0xfffd('0x2f')][_0xfffd('0xd')](this));}}};EmailImap[_0xfffd('0x12')][_0xfffd('0x2c')]=function(_0x1771dc,_0x263f36){_0x1771dc['on'](_0xfffd('0x30'),this[_0xfffd('0x31')][_0xfffd('0xd')](this));_0x1771dc[_0xfffd('0xc')](_0xfffd('0x32'),this[_0xfffd('0x33')][_0xfffd('0xd')](this));_0x1771dc[_0xfffd('0xc')](_0xfffd('0x25'),this['handleMessageEnd'][_0xfffd('0xd')](this));};EmailImap['prototype'][_0xfffd('0x31')]=function(_0x4294a2,_0x450f35){simpleParser(_0x4294a2,{'Iconv':Iconv},this['handleSimpleParser'][_0xfffd('0xd')](this));};EmailImap[_0xfffd('0x12')][_0xfffd('0x33')]=function(_0x1c7da4){};EmailImap['prototype'][_0xfffd('0x34')]=function(){};EmailImap[_0xfffd('0x12')][_0xfffd('0x35')]=function(_0x150b6e,_0x21ba42){if(_0x150b6e){logger[_0xfffd('0xf')](_0x150b6e);}else{var _0x15de60=this;utils['parser'](this[_0xfffd('0xb')],_0x21ba42,function(_0x439d7d){_0x15de60[_0xfffd('0x22')]('email',_0x439d7d);});}};EmailImap['prototype'][_0xfffd('0x36')]=function(){this[_0xfffd('0x2')]['closeBox'](!![],this[_0xfffd('0x2f')][_0xfffd('0xd')](this));};EmailImap[_0xfffd('0x12')][_0xfffd('0x2d')]=function(_0xde8bbc){this[_0xfffd('0x21')](_0xde8bbc);this[_0xfffd('0x2')][_0xfffd('0x2e')](!![],this[_0xfffd('0x2f')][_0xfffd('0xd')](this));};EmailImap[_0xfffd('0x12')][_0xfffd('0xe')]=function(){this[_0xfffd('0x22')](_0xfffd('0x25'));};EmailImap[_0xfffd('0x12')]['handleError']=function(_0x5b7169,_0x2d9fb5){logger[_0xfffd('0xf')](_0xfffd('0x21'),this[_0xfffd('0xb')]['email'],JSON[_0xfffd('0x37')](_0x5b7169));var _0x12b99d='';if(_0x5b7169){if(_0x5b7169[_0xfffd('0x38')]){_0x12b99d=_0x5b7169[_0xfffd('0x38')];}else{for(var _0x4b6daf in _0x5b7169){if(_0x5b7169[_0xfffd('0x39')](_0x4b6daf)){_0x12b99d+=_[_0xfffd('0x3a')](_0x4b6daf)+':\x20'+_0x5b7169[_0x4b6daf]+'\x0a';}}}}if(_0x2d9fb5){this[_0xfffd('0x2')][_0xfffd('0x25')]();}else{this[_0xfffd('0x22')](_0xfffd('0xf'),_0x12b99d);this[_0xfffd('0x22')](_0xfffd('0x25'));}};module[_0xfffd('0x3b')]=EmailImap;
\ No newline at end of file
index 2e35cf7..f4954d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x550e=['Not\x20verifired','exports','nodemailer','bluebird','nodemailer-plugin-inline-base64','send','createTransport','use','compile','sendMail','prototype','verify'];(function(_0x24237f,_0x4cf32c){var _0x48298e=function(_0x3f7511){while(--_0x3f7511){_0x24237f['push'](_0x24237f['shift']());}};_0x48298e(++_0x4cf32c);}(_0x550e,0x16a));var _0xe550=function(_0x5d21fc,_0x399714){_0x5d21fc=_0x5d21fc-0x0;var _0x9d872c=_0x550e[_0x5d21fc];return _0x9d872c;};'use strict';var nodemailer=require(_0xe550('0x0'));var BPromise=require(_0xe550('0x1'));var inlineBase64=require(_0xe550('0x2'));function EmailSmtp(){}EmailSmtp['prototype'][_0xe550('0x3')]=function(_0x3918ca,_0x41652f){return new BPromise(function(_0x57525d,_0xc348e){var _0x41157b=nodemailer[_0xe550('0x4')](_0x3918ca);_0x41157b[_0xe550('0x5')](_0xe550('0x6'),inlineBase64());_0x41157b[_0xe550('0x7')](_0x41652f,function(_0x2649aa,_0x251252){if(_0x2649aa){_0xc348e(_0x2649aa['toString']());}else{_0x57525d(_0x251252);}});});};EmailSmtp[_0xe550('0x8')][_0xe550('0x9')]=function(_0x1e6c40){return new BPromise(function(_0x27a973,_0x3ab955){var _0x36db5b=nodemailer[_0xe550('0x4')](_0x1e6c40);_0x36db5b[_0xe550('0x9')](function(_0x57d44b,_0xc3a85e){if(_0x57d44b){_0x3ab955(_0x57d44b['toString']());}else{if(_0xc3a85e){_0x27a973(_0xc3a85e);}else{_0x3ab955(_0xe550('0xa'));}}});});};module[_0xe550('0xb')]=EmailSmtp;
\ No newline at end of file
+var _0x27e7=['prototype','send','createTransport','use','compile','sendMail','verify','exports','nodemailer','bluebird'];(function(_0x39a757,_0x51e36d){var _0x3df2f=function(_0x1e5083){while(--_0x1e5083){_0x39a757['push'](_0x39a757['shift']());}};_0x3df2f(++_0x51e36d);}(_0x27e7,0x12a));var _0x727e=function(_0x4140f9,_0x3f3d7b){_0x4140f9=_0x4140f9-0x0;var _0x29bc7f=_0x27e7[_0x4140f9];return _0x29bc7f;};'use strict';var nodemailer=require(_0x727e('0x0'));var BPromise=require(_0x727e('0x1'));var inlineBase64=require('nodemailer-plugin-inline-base64');function EmailSmtp(){}EmailSmtp[_0x727e('0x2')][_0x727e('0x3')]=function(_0x274bea,_0x458acd){return new BPromise(function(_0x29fde2,_0x3610d5){var _0x348d0d=nodemailer[_0x727e('0x4')](_0x274bea);_0x348d0d[_0x727e('0x5')](_0x727e('0x6'),inlineBase64());_0x348d0d[_0x727e('0x7')](_0x458acd,function(_0x3c4b72,_0x535026){if(_0x3c4b72){_0x3610d5(_0x3c4b72['toString']());}else{_0x29fde2(_0x535026);}});});};EmailSmtp[_0x727e('0x2')][_0x727e('0x8')]=function(_0xd25309){return new BPromise(function(_0x50e354,_0xac6723){var _0x4db386=nodemailer[_0x727e('0x4')](_0xd25309);_0x4db386[_0x727e('0x8')](function(_0x518ec9,_0x372870){if(_0x518ec9){_0xac6723(_0x518ec9['toString']());}else{if(_0x372870){_0x50e354(_0x372870);}else{_0xac6723('Not\x20verifired');}}});});};module[_0x727e('0x9')]=EmailSmtp;
\ No newline at end of file
index 2ac20ce..3ddfad3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ae0=['join','root','writeFileSync','content','push','headerLines','Auto-Submitted:\x20auto-replied','X-Auto-Response-Suppress:\x20All','line','isAutoreply','from','subject','messageId','inReplyTo','date','filter','application/ms-tnef','info','Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system','parseBuffer','first','BodyHTML','<p>Empty\x20message</p>','Attachments','Title','Data','getHost','gmail','imap.gmail.com','hotmail','imap-mail.outlook.com','127.0.0.1','moment','randomstring','util','node-tnef','email','../../../config/environment','head','value','address','anonymous','generate','@xcally.com','name','substring','indexOf','split','length','slice','pop','isEmpty','html','test','includes','attachments','forEach','filename','_SRC','replace','_IMG','\x20]</span>','body','textAsHtml','<a\x20target=\x22_blank\x22\x20','message','originTo','originCc','type','attachment-','format','now'];(function(_0x24365b,_0x42866a){var _0x35f24a=function(_0x725947){while(--_0x725947){_0x24365b['push'](_0x24365b['shift']());}};_0x35f24a(++_0x42866a);}(_0x5ae0,0xf8));var _0x05ae=function(_0x3c5fa8,_0x32b387){_0x3c5fa8=_0x3c5fa8-0x0;var _0x4bf28d=_0x5ae0[_0x3c5fa8];return _0x4bf28d;};'use strict';var _=require('lodash');var moment=require(_0x05ae('0x0'));var random=require(_0x05ae('0x1'));var fs=require('fs');var path=require('path');var util=require(_0x05ae('0x2'));var tnef=require(_0x05ae('0x3'));var logger=require('../../../config/logger')(_0x05ae('0x4'));var config=require(_0x05ae('0x5'));function getAddress(_0x4aac85){var _0x554b43=_[_0x05ae('0x6')](_0x4aac85[_0x05ae('0x7')]);return _0x554b43&&_0x554b43[_0x05ae('0x8')]?_0x554b43['address']:_0x05ae('0x9')+random[_0x05ae('0xa')](0x6)+_0x05ae('0xb');}function getFirstName(_0xd050af){var _0x315dd9=_[_0x05ae('0x6')](_0xd050af[_0x05ae('0x7')]);if(_0x315dd9&&_0x315dd9[_0x05ae('0xc')]){if(_0x315dd9[_0x05ae('0xc')]==_0x315dd9[_0x05ae('0x8')]){return _0x315dd9[_0x05ae('0xc')][_0x05ae('0xd')](0x0,_0x315dd9[_0x05ae('0xc')][_0x05ae('0xe')]('@'));}var _0xb5944b=_0x315dd9[_0x05ae('0xc')][_0x05ae('0xf')](/\s+/);return _0xb5944b[_0x05ae('0x10')]>0x1?_0xb5944b[_0x05ae('0x11')](0x0,-0x1)['join']('\x20'):_0x315dd9['name'];}return'Anonymous';}function getLastName(_0x5c577f){var _0x135a4a=_[_0x05ae('0x6')](_0x5c577f[_0x05ae('0x7')]);if(_0x135a4a&&_0x135a4a[_0x05ae('0xc')]){var _0x417064=_0x135a4a[_0x05ae('0xc')][_0x05ae('0xf')](/\s+/);return _0x417064[_0x05ae('0x10')]>0x1?_0x417064[_0x05ae('0x12')]():'';}return'';}function getMails(_0x566f4d,_0x237a99){var _0x38edee='';for(var _0xc1eb63=0x0;_0xc1eb63<_0x237a99[_0x05ae('0x7')][_0x05ae('0x10')];_0xc1eb63+=0x1){if(_0x237a99[_0x05ae('0x7')][_0xc1eb63][_0x05ae('0x8')]!==_0x566f4d){if(!_[_0x05ae('0x13')](_0x38edee)){_0x38edee+=',';}_0x38edee+=_0x237a99[_0x05ae('0x7')][_0xc1eb63]['name']||_0x237a99[_0x05ae('0x7')][_0xc1eb63][_0x05ae('0x8')]||'';_0x38edee+='\x20<';_0x38edee+=_0x237a99['value'][_0xc1eb63][_0x05ae('0x8')]?_0x237a99[_0x05ae('0x7')][_0xc1eb63][_0x05ae('0x8')]:'anonymous'+random[_0x05ae('0xa')](0x6)+_0x05ae('0xb');_0x38edee+='>';}}return _0x38edee;}function parseEmail(_0x4a2a42,_0x84b684,_0x5154be){if(_0x84b684[_0x05ae('0x14')]){var _0x1241da=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x1241da[_0x05ae('0x15')](_0x84b684['html'])){_0x84b684[_0x05ae('0x14')]=_0x84b684[_0x05ae('0x14')]['replace'](_0x1241da,'');}if(_0x84b684['html'][_0x05ae('0x16')]('<img')){var _0x20df1e=[];_0x84b684[_0x05ae('0x17')][_0x05ae('0x18')](_0x5b78f3=>{_0x20df1e['push'](_0x5b78f3[_0x05ae('0x19')]);});var _0x40478c=/<img.*? _SRC(.*?)[^>]+>/g;var _0xb590ed=/src="data:image\/([a-zA-Z]*);base64,([^"]*)"/g;var _0xb497b2=_0x84b684[_0x05ae('0x14')]['replace'](_0xb590ed,_0x05ae('0x1a'));var _0x547253=_0xb497b2[_0x05ae('0x1b')](_0x40478c,_0x05ae('0x1c'));for(let _0x5bd730=0x0;_0x5bd730<_0x20df1e[_0x05ae('0x10')];_0x5bd730++){var _0x3b7f2f=_0x547253[_0x05ae('0x1b')](_0x05ae('0x1c'),'<span\x20style=font-weight:bold>\x20[Attachment:\x20'+_0x20df1e[_0x5bd730]+_0x05ae('0x1d'));_0x547253=_0x3b7f2f;}_0x84b684[_0x05ae('0x14')]=_0x547253;}_0x5154be[_0x05ae('0x1e')]=_0x84b684['html'];}else{_0x5154be[_0x05ae('0x1e')]=_0x84b684[_0x05ae('0x1f')];}if(_0x5154be[_0x05ae('0x1e')]){_0x5154be[_0x05ae('0x1e')]=_0x5154be[_0x05ae('0x1e')][_0x05ae('0x1b')](/<a\s+/gi,_0x05ae('0x20'));}if(_0x84b684['to']){_0x5154be[_0x05ae('0x21')][_0x05ae('0x22')]=getMails(null,_0x84b684['to']);var _0x3f0a5d=getMails(_0x4a2a42[_0x05ae('0x4')],_0x84b684['to']);if(!_[_0x05ae('0x13')](_0x3f0a5d)){_0x5154be[_0x05ae('0x21')]['cc']+=_0x3f0a5d;}}if(_0x84b684['cc']){_0x5154be['message'][_0x05ae('0x23')]=getMails(null,_0x84b684['cc']);var _0x22bc27=getMails(_0x4a2a42['email'],_0x84b684['cc']);if(!_[_0x05ae('0x13')](_0x22bc27)){if(!_[_0x05ae('0x13')](_0x5154be[_0x05ae('0x21')]['cc'])){_0x5154be[_0x05ae('0x21')]['cc']+=',';}_0x5154be['message']['cc']+=_0x22bc27;}}if(!_[_0x05ae('0x16')](_0x5154be[_0x05ae('0x21')][_0x05ae('0x22')],_0x4a2a42[_0x05ae('0x4')])&&!_[_0x05ae('0x16')](_0x5154be[_0x05ae('0x21')]['originCc'],_0x4a2a42[_0x05ae('0x4')])){_0x5154be[_0x05ae('0x21')]['bcc']=_0x4a2a42[_0x05ae('0x4')];}if(_0x84b684[_0x05ae('0x17')]&&_0x84b684[_0x05ae('0x17')][_0x05ae('0x10')]){_0x5154be[_0x05ae('0x21')]['attach']=_0x84b684[_0x05ae('0x17')]['length'];for(var _0x53d121=0x0,_0x191aa7,_0x3cdbb8,_0x136c5a;_0x53d121<_0x84b684['attachments'][_0x05ae('0x10')];_0x53d121+=0x1){if(_0x84b684[_0x05ae('0x17')][_0x53d121][_0x05ae('0x24')]==='attachment'){_0x136c5a=_0x84b684[_0x05ae('0x17')][_0x53d121][_0x05ae('0x19')]||_0x05ae('0x25')+_0x53d121;_0x191aa7=util[_0x05ae('0x26')]('%s-%s',Date[_0x05ae('0x27')](),_0x136c5a);_0x3cdbb8=path[_0x05ae('0x28')](config[_0x05ae('0x29')],'server/files/attachments/',_0x191aa7);fs[_0x05ae('0x2a')](_0x3cdbb8,_0x84b684[_0x05ae('0x17')][_0x53d121][_0x05ae('0x2b')]);_0x5154be['message'][_0x05ae('0x17')][_0x05ae('0x2c')]({'name':_0x136c5a,'basename':_0x191aa7,'type':_0x84b684['attachments'][_0x53d121]['contentType'],'filepath':_0x3cdbb8});}}}if(_0x84b684[_0x05ae('0x2d')]&&_0x84b684['headerLines'][_0x05ae('0x10')]>0x0){var _0x3f2f7a=[_0x05ae('0x2e'),_0x05ae('0x2f'),'Precedence:\x20auto_reply'];for(var _0x44ec6d=0x0;_0x44ec6d<_0x84b684[_0x05ae('0x2d')]['length'];_0x44ec6d++){var _0x5c354d=_[_0x05ae('0xe')](_0x3f2f7a,_0x84b684[_0x05ae('0x2d')][_0x44ec6d][_0x05ae('0x30')]);if(_0x5c354d>=0x0){_0x5154be[_0x05ae('0x31')]=!![];}}}return _0x5154be;}exports['parser']=function(_0x308257,_0x3b85f9,_0x28e74e){var _0x5aefaa={'from':getAddress(_0x3b85f9['from']),'firstName':getFirstName(_0x3b85f9[_0x05ae('0x32')]),'lastName':getLastName(_0x3b85f9[_0x05ae('0x32')]),'mapKey':_0x05ae('0x4'),'message':{'from':getMails(_0x308257[_0x05ae('0x4')],_0x3b85f9[_0x05ae('0x32')]),'to':_0x308257[_0x05ae('0x4')],'cc':'','subject':_0x3b85f9[_0x05ae('0x33')]||'','messageId':_0x3b85f9[_0x05ae('0x34')],'inReplyTo':_0x3b85f9[_0x05ae('0x35')],'sentAt':moment(_0x3b85f9[_0x05ae('0x36')])[_0x05ae('0x26')]('YYYY-MM-DD\x20HH:mm:ss'),'attach':![],'attachments':[]}};if(!_0x3b85f9[_0x05ae('0x14')]&&!_0x3b85f9[_0x05ae('0x1f')]){var _0x4905f7=_[_0x05ae('0x37')](_0x3b85f9['attachments'],{'contentType':_0x05ae('0x38')});if(_0x4905f7['length']){logger[_0x05ae('0x39')](util['format'](_0x05ae('0x3a'),_0x3b85f9[_0x05ae('0x34')]));tnef[_0x05ae('0x3b')](_[_0x05ae('0x3c')](_0x4905f7)[_0x05ae('0x2b')],function(_0x42f294,_0x16a840){if(_0x16a840){_0x3b85f9[_0x05ae('0x14')]=_0x16a840[_0x05ae('0x3d')]||_0x05ae('0x3e');if(_0x16a840[_0x05ae('0x3f')]){for(var _0x3c6bc9=0x0;_0x3c6bc9<_0x16a840[_0x05ae('0x3f')][_0x05ae('0x10')];_0x3c6bc9++){var _0x20bce4=_0x16a840[_0x05ae('0x3f')][_0x3c6bc9];_0x5aefaa['message']['attachments']['push']({'filename':_0x20bce4[_0x05ae('0x40')],'content':Buffer[_0x05ae('0x32')](_0x20bce4[_0x05ae('0x41')])});}}}_0x28e74e(parseEmail(_0x308257,_0x3b85f9,_0x5aefaa));});}else{_0x3b85f9['html']=_0x05ae('0x3e');_0x28e74e(parseEmail(_0x308257,_0x3b85f9,_0x5aefaa));}}else{_0x28e74e(parseEmail(_0x308257,_0x3b85f9,_0x5aefaa));}};exports[_0x05ae('0x42')]=function(_0x3846b7){switch(_0x3846b7){case _0x05ae('0x43'):return _0x05ae('0x44');case'yahoo':return'imap.mail.yahoo.com';case _0x05ae('0x45'):return _0x05ae('0x46');case'outlook365':return'outlook.office365.com';}return _0x05ae('0x47');};
\ No newline at end of file
+var _0x720b=['filename','attachment-','format','%s-%s','now','root','server/files/attachments/','writeFileSync','content','push','contentType','headerLines','Auto-Submitted:\x20auto-replied','X-Auto-Response-Suppress:\x20All','Precedence:\x20auto_reply','isAutoreply','from','subject','messageId','inReplyTo','date','YYYY-MM-DD\x20HH:mm:ss','info','Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system','parseBuffer','first','<p>Empty\x20message</p>','Attachments','Data','gmail','yahoo','imap.mail.yahoo.com','imap-mail.outlook.com','127.0.0.1','lodash','moment','randomstring','util','node-tnef','email','../../../config/environment','head','value','address','anonymous','name','indexOf','length','join','Anonymous','split','isEmpty','generate','@xcally.com','html','includes','<img','attachments','forEach','replace','_IMG','<span\x20style=font-weight:bold>\x20[Attachment:\x20','\x20]</span>','textAsHtml','body','<a\x20target=\x22_blank\x22\x20','message','originTo','originCc','bcc','attach','type','attachment'];(function(_0x55f793,_0x5ed4ee){var _0x2f1dc8=function(_0x44cc8a){while(--_0x44cc8a){_0x55f793['push'](_0x55f793['shift']());}};_0x2f1dc8(++_0x5ed4ee);}(_0x720b,0x1d8));var _0xb720=function(_0x4b8a6a,_0x2f120b){_0x4b8a6a=_0x4b8a6a-0x0;var _0x397b45=_0x720b[_0x4b8a6a];return _0x397b45;};'use strict';var _=require(_0xb720('0x0'));var moment=require(_0xb720('0x1'));var random=require(_0xb720('0x2'));var fs=require('fs');var path=require('path');var util=require(_0xb720('0x3'));var tnef=require(_0xb720('0x4'));var logger=require('../../../config/logger')(_0xb720('0x5'));var config=require(_0xb720('0x6'));function getAddress(_0x33f308){var _0x4ddff9=_[_0xb720('0x7')](_0x33f308[_0xb720('0x8')]);return _0x4ddff9&&_0x4ddff9[_0xb720('0x9')]?_0x4ddff9[_0xb720('0x9')]:_0xb720('0xa')+random['generate'](0x6)+'@xcally.com';}function getFirstName(_0x259266){var _0x41ca08=_[_0xb720('0x7')](_0x259266[_0xb720('0x8')]);if(_0x41ca08&&_0x41ca08[_0xb720('0xb')]){if(_0x41ca08[_0xb720('0xb')]==_0x41ca08[_0xb720('0x9')]){return _0x41ca08[_0xb720('0xb')]['substring'](0x0,_0x41ca08[_0xb720('0xb')][_0xb720('0xc')]('@'));}var _0x5384e6=_0x41ca08[_0xb720('0xb')]['split'](/\s+/);return _0x5384e6[_0xb720('0xd')]>0x1?_0x5384e6['slice'](0x0,-0x1)[_0xb720('0xe')]('\x20'):_0x41ca08[_0xb720('0xb')];}return _0xb720('0xf');}function getLastName(_0x2c754e){var _0x8f9b65=_[_0xb720('0x7')](_0x2c754e[_0xb720('0x8')]);if(_0x8f9b65&&_0x8f9b65[_0xb720('0xb')]){var _0x4988df=_0x8f9b65[_0xb720('0xb')][_0xb720('0x10')](/\s+/);return _0x4988df[_0xb720('0xd')]>0x1?_0x4988df['pop']():'';}return'';}function getMails(_0x4edde2,_0xc890b){var _0x39df81='';for(var _0x373303=0x0;_0x373303<_0xc890b['value'][_0xb720('0xd')];_0x373303+=0x1){if(_0xc890b[_0xb720('0x8')][_0x373303][_0xb720('0x9')]!==_0x4edde2){if(!_[_0xb720('0x11')](_0x39df81)){_0x39df81+=',';}_0x39df81+=_0xc890b[_0xb720('0x8')][_0x373303][_0xb720('0xb')]||_0xc890b[_0xb720('0x8')][_0x373303][_0xb720('0x9')]||'';_0x39df81+='\x20<';_0x39df81+=_0xc890b[_0xb720('0x8')][_0x373303][_0xb720('0x9')]?_0xc890b[_0xb720('0x8')][_0x373303][_0xb720('0x9')]:_0xb720('0xa')+random[_0xb720('0x12')](0x6)+_0xb720('0x13');_0x39df81+='>';}}return _0x39df81;}function parseEmail(_0x141dd5,_0x25acb4,_0x1f1b20){if(_0x25acb4[_0xb720('0x14')]){var _0x8b19ea=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x8b19ea['test'](_0x25acb4['html'])){_0x25acb4['html']=_0x25acb4[_0xb720('0x14')]['replace'](_0x8b19ea,'');}if(_0x25acb4[_0xb720('0x14')][_0xb720('0x15')](_0xb720('0x16'))){var _0x2ad9b5=[];_0x25acb4[_0xb720('0x17')][_0xb720('0x18')](_0x56513a=>{_0x2ad9b5['push'](_0x56513a['filename']);});var _0x298cce=/<img.*? _SRC(.*?)[^>]+>/g;var _0x408256=/src="data:image\/([a-zA-Z]*);base64,([^"]*)"/g;var _0x5f1e03=_0x25acb4['html'][_0xb720('0x19')](_0x408256,'_SRC');var _0x396bc0=_0x5f1e03['replace'](_0x298cce,'_IMG');for(let _0x215548=0x0;_0x215548<_0x2ad9b5[_0xb720('0xd')];_0x215548++){var _0x46b05a=_0x396bc0[_0xb720('0x19')](_0xb720('0x1a'),_0xb720('0x1b')+_0x2ad9b5[_0x215548]+_0xb720('0x1c'));_0x396bc0=_0x46b05a;}_0x25acb4[_0xb720('0x14')]=_0x396bc0;}_0x1f1b20['body']=_0x25acb4['html'];}else{_0x1f1b20['body']=_0x25acb4[_0xb720('0x1d')];}if(_0x1f1b20[_0xb720('0x1e')]){_0x1f1b20['body']=_0x1f1b20[_0xb720('0x1e')]['replace'](/<a\s+/gi,_0xb720('0x1f'));}if(_0x25acb4['to']){_0x1f1b20[_0xb720('0x20')][_0xb720('0x21')]=getMails(null,_0x25acb4['to']);var _0x31927d=getMails(_0x141dd5[_0xb720('0x5')],_0x25acb4['to']);if(!_[_0xb720('0x11')](_0x31927d)){_0x1f1b20['message']['cc']+=_0x31927d;}}if(_0x25acb4['cc']){_0x1f1b20[_0xb720('0x20')][_0xb720('0x22')]=getMails(null,_0x25acb4['cc']);var _0x26d0fb=getMails(_0x141dd5['email'],_0x25acb4['cc']);if(!_[_0xb720('0x11')](_0x26d0fb)){if(!_[_0xb720('0x11')](_0x1f1b20['message']['cc'])){_0x1f1b20['message']['cc']+=',';}_0x1f1b20[_0xb720('0x20')]['cc']+=_0x26d0fb;}}if(!_['includes'](_0x1f1b20[_0xb720('0x20')][_0xb720('0x21')],_0x141dd5[_0xb720('0x5')])&&!_[_0xb720('0x15')](_0x1f1b20['message']['originCc'],_0x141dd5[_0xb720('0x5')])){_0x1f1b20[_0xb720('0x20')][_0xb720('0x23')]=_0x141dd5[_0xb720('0x5')];}if(_0x25acb4[_0xb720('0x17')]&&_0x25acb4['attachments']['length']){_0x1f1b20[_0xb720('0x20')][_0xb720('0x24')]=_0x25acb4[_0xb720('0x17')][_0xb720('0xd')];for(var _0x17f939=0x0,_0x210fc6,_0x36c53d,_0x3fe6ce;_0x17f939<_0x25acb4[_0xb720('0x17')]['length'];_0x17f939+=0x1){if(_0x25acb4['attachments'][_0x17f939][_0xb720('0x25')]===_0xb720('0x26')){_0x3fe6ce=_0x25acb4[_0xb720('0x17')][_0x17f939][_0xb720('0x27')]||_0xb720('0x28')+_0x17f939;_0x210fc6=util[_0xb720('0x29')](_0xb720('0x2a'),Date[_0xb720('0x2b')](),_0x3fe6ce);_0x36c53d=path[_0xb720('0xe')](config[_0xb720('0x2c')],_0xb720('0x2d'),_0x210fc6);fs[_0xb720('0x2e')](_0x36c53d,_0x25acb4[_0xb720('0x17')][_0x17f939][_0xb720('0x2f')]);_0x1f1b20['message'][_0xb720('0x17')][_0xb720('0x30')]({'name':_0x3fe6ce,'basename':_0x210fc6,'type':_0x25acb4[_0xb720('0x17')][_0x17f939][_0xb720('0x31')],'filepath':_0x36c53d});}}}if(_0x25acb4[_0xb720('0x32')]&&_0x25acb4[_0xb720('0x32')][_0xb720('0xd')]>0x0){var _0x5cf8b1=[_0xb720('0x33'),_0xb720('0x34'),_0xb720('0x35')];for(var _0x41423b=0x0;_0x41423b<_0x25acb4[_0xb720('0x32')]['length'];_0x41423b++){var _0x3c1c4e=_[_0xb720('0xc')](_0x5cf8b1,_0x25acb4[_0xb720('0x32')][_0x41423b]['line']);if(_0x3c1c4e>=0x0){_0x1f1b20[_0xb720('0x36')]=!![];}}}return _0x1f1b20;}exports['parser']=function(_0x4d0201,_0x466a98,_0x4088ee){var _0x137e9d={'from':getAddress(_0x466a98[_0xb720('0x37')]),'firstName':getFirstName(_0x466a98['from']),'lastName':getLastName(_0x466a98[_0xb720('0x37')]),'mapKey':_0xb720('0x5'),'message':{'from':getMails(_0x4d0201['email'],_0x466a98[_0xb720('0x37')]),'to':_0x4d0201[_0xb720('0x5')],'cc':'','subject':_0x466a98[_0xb720('0x38')]||'','messageId':_0x466a98[_0xb720('0x39')],'inReplyTo':_0x466a98[_0xb720('0x3a')],'sentAt':moment(_0x466a98[_0xb720('0x3b')])[_0xb720('0x29')](_0xb720('0x3c')),'attach':![],'attachments':[]}};if(!_0x466a98['html']&&!_0x466a98[_0xb720('0x1d')]){var _0x1c4b8c=_['filter'](_0x466a98[_0xb720('0x17')],{'contentType':'application/ms-tnef'});if(_0x1c4b8c[_0xb720('0xd')]){logger[_0xb720('0x3d')](util[_0xb720('0x29')](_0xb720('0x3e'),_0x466a98[_0xb720('0x39')]));tnef[_0xb720('0x3f')](_[_0xb720('0x40')](_0x1c4b8c)['content'],function(_0x43c83c,_0x4f0254){if(_0x4f0254){_0x466a98[_0xb720('0x14')]=_0x4f0254['BodyHTML']||_0xb720('0x41');if(_0x4f0254[_0xb720('0x42')]){for(var _0x428f40=0x0;_0x428f40<_0x4f0254[_0xb720('0x42')][_0xb720('0xd')];_0x428f40++){var _0x203f0d=_0x4f0254[_0xb720('0x42')][_0x428f40];_0x137e9d[_0xb720('0x20')][_0xb720('0x17')]['push']({'filename':_0x203f0d['Title'],'content':Buffer[_0xb720('0x37')](_0x203f0d[_0xb720('0x43')])});}}}_0x4088ee(parseEmail(_0x4d0201,_0x466a98,_0x137e9d));});}else{_0x466a98[_0xb720('0x14')]=_0xb720('0x41');_0x4088ee(parseEmail(_0x4d0201,_0x466a98,_0x137e9d));}}else{_0x4088ee(parseEmail(_0x4d0201,_0x466a98,_0x137e9d));}};exports['getHost']=function(_0x22e97d){switch(_0x22e97d){case _0xb720('0x44'):return'imap.gmail.com';case _0xb720('0x45'):return _0xb720('0x46');case'hotmail':return _0xb720('0x47');case'outlook365':return'outlook.office365.com';}return _0xb720('0x48');};
\ No newline at end of file
index b5b377f..c8182d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x47f8=['lodash','name','Service','key','SERV','active','Imap','Smtp'];(function(_0x183b97,_0x2d297c){var _0x629cf7=function(_0x4ffd24){while(--_0x4ffd24){_0x183b97['push'](_0x183b97['shift']());}};_0x629cf7(++_0x2d297c);}(_0x47f8,0x80));var _0x847f=function(_0x298863,_0x57b3cc){_0x298863=_0x298863-0x0;var _0xb4d1e8=_0x47f8[_0x298863];return _0xb4d1e8;};'use strict';var _=require(_0x847f('0x0'));function MailAccount(_0x1149fc){this['id']=_0x1149fc['id']||0x0;this[_0x847f('0x1')]=_0x1149fc[_0x847f('0x1')]||_0x847f('0x2');this[_0x847f('0x3')]=_0x1149fc['key']||_0x847f('0x4');this[_0x847f('0x5')]=_0x1149fc[_0x847f('0x5')]||![];this[_0x847f('0x6')]=_0x1149fc[_0x847f('0x6')]||[];this[_0x847f('0x7')]=_0x1149fc['Smtp']||[];}module['exports']=MailAccount;
\ No newline at end of file
+var _0x95e8=['SERV','active','Imap','Smtp','exports','lodash','name','Service','key'];(function(_0x3e3490,_0x207c54){var _0x156b0d=function(_0x35b46a){while(--_0x35b46a){_0x3e3490['push'](_0x3e3490['shift']());}};_0x156b0d(++_0x207c54);}(_0x95e8,0x10a));var _0x895e=function(_0x201d62,_0xc138ba){_0x201d62=_0x201d62-0x0;var _0x1891ce=_0x95e8[_0x201d62];return _0x1891ce;};'use strict';var _=require(_0x895e('0x0'));function MailAccount(_0xd8b05c){this['id']=_0xd8b05c['id']||0x0;this[_0x895e('0x1')]=_0xd8b05c['name']||_0x895e('0x2');this[_0x895e('0x3')]=_0xd8b05c['key']||_0x895e('0x4');this[_0x895e('0x5')]=_0xd8b05c['active']||![];this[_0x895e('0x6')]=_0xd8b05c[_0x895e('0x6')]||[];this[_0x895e('0x7')]=_0xd8b05c[_0x895e('0x7')]||[];}module[_0x895e('0x8')]=MailAccount;
\ No newline at end of file
index 7888438..08e1ac1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd0c1=['lodash','../model/mailAccount','mapKeys','hasOwnProperty','mergeFromDatabase','prototype','initMailAccounts','length','isUndefined','mailAccounts','merge','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xd0c1,0x1e0));var _0x1d0c=function(_0xd711db,_0xa334fe){_0xd711db=_0xd711db-0x0;var _0x3a12c0=_0xd0c1[_0xd711db];return _0x3a12c0;};'use strict';var _=require(_0x1d0c('0x0'));var MailAccount=require(_0x1d0c('0x1'));var Realtime=function(){this['mailAccounts']={};};function freeIsNotKey(_0x386b7e,_0x3d7321,_0x4a54a2){var _0xdcc52c=_[_0x1d0c('0x2')](_0x386b7e,function(_0x98c16d,_0xe768fb){return _0x98c16d[_0x4a54a2];});for(var _0x573d02 in _0x3d7321){if(_0x3d7321[_0x1d0c('0x3')](_0x573d02)){if(!_0xdcc52c[_0x573d02]){delete _0x3d7321[_0x573d02];}}}}Realtime['prototype'][_0x1d0c('0x4')]=function(_0x519b6d,_0x4f52ab){for(var _0x18f547 in _0x4f52ab){if(_0x519b6d['hasOwnProperty'](_0x18f547)){_0x519b6d[_0x18f547]=_0x4f52ab[_0x18f547];}}};Realtime[_0x1d0c('0x5')][_0x1d0c('0x6')]=function(){var _0x5f024a=this;return function(_0x593bf9){if(_0x593bf9){freeIsNotKey(_0x593bf9,_0x5f024a['mailAccounts'],'id');for(var _0x297278=0x0,_0x136c1b={},_0x558c45={};_0x297278<_0x593bf9[_0x1d0c('0x7')];_0x297278+=0x1){_0x136c1b=_0x593bf9[_0x297278];if(_[_0x1d0c('0x8')](_0x5f024a[_0x1d0c('0x9')][_0x136c1b['id']])){_0x5f024a[_0x1d0c('0x9')][_0x136c1b['id']]=new MailAccount(_0x136c1b);}else{_[_0x1d0c('0xa')](_0x5f024a[_0x1d0c('0x9')][_0x136c1b['id']],_0x136c1b);}}}return _0x5f024a[_0x1d0c('0x9')];};};module[_0x1d0c('0xb')]=Realtime;
\ No newline at end of file
+var _0xe012=['lodash','../model/mailAccount','mailAccounts','hasOwnProperty','prototype','mergeFromDatabase','length','isUndefined','merge'];(function(_0x5be14b,_0x443c81){var _0x54317c=function(_0x1ae338){while(--_0x1ae338){_0x5be14b['push'](_0x5be14b['shift']());}};_0x54317c(++_0x443c81);}(_0xe012,0x14d));var _0x2e01=function(_0x508823,_0x316707){_0x508823=_0x508823-0x0;var _0x13523b=_0xe012[_0x508823];return _0x13523b;};'use strict';var _=require(_0x2e01('0x0'));var MailAccount=require(_0x2e01('0x1'));var Realtime=function(){this[_0x2e01('0x2')]={};};function freeIsNotKey(_0x4250e7,_0x31fbef,_0x5799ad){var _0x1bfa28=_['mapKeys'](_0x4250e7,function(_0x405db8,_0x25f464){return _0x405db8[_0x5799ad];});for(var _0x1a913e in _0x31fbef){if(_0x31fbef[_0x2e01('0x3')](_0x1a913e)){if(!_0x1bfa28[_0x1a913e]){delete _0x31fbef[_0x1a913e];}}}}Realtime[_0x2e01('0x4')][_0x2e01('0x5')]=function(_0x405f10,_0x28b39f){for(var _0x35dcaf in _0x28b39f){if(_0x405f10[_0x2e01('0x3')](_0x35dcaf)){_0x405f10[_0x35dcaf]=_0x28b39f[_0x35dcaf];}}};Realtime[_0x2e01('0x4')]['initMailAccounts']=function(){var _0x1ab35d=this;return function(_0x4ce99f){if(_0x4ce99f){freeIsNotKey(_0x4ce99f,_0x1ab35d['mailAccounts'],'id');for(var _0x2ef6b5=0x0,_0x3d31ce={},_0x599465={};_0x2ef6b5<_0x4ce99f[_0x2e01('0x6')];_0x2ef6b5+=0x1){_0x3d31ce=_0x4ce99f[_0x2ef6b5];if(_[_0x2e01('0x7')](_0x1ab35d[_0x2e01('0x2')][_0x3d31ce['id']])){_0x1ab35d[_0x2e01('0x2')][_0x3d31ce['id']]=new MailAccount(_0x3d31ce);}else{_[_0x2e01('0x8')](_0x1ab35d[_0x2e01('0x2')][_0x3d31ce['id']],_0x3d31ce);}}}return _0x1ab35d[_0x2e01('0x2')];};};module['exports']=Realtime;
\ No newline at end of file
index 7662624..d13da6d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc3ed=['NotifyMailAccount','../client','getMailAccounts','GetMailAccount','name','service','email','active','ListId','MailServerIn','Imap','MailServerOut','Smtp','getMailAccount','notify','Request'];(function(_0x484073,_0x404be9){var _0x3fafa4=function(_0x1ec247){while(--_0x1ec247){_0x484073['push'](_0x484073['shift']());}};_0x3fafa4(++_0x404be9);}(_0xc3ed,0x111));var _0xdc3e=function(_0x2ec689,_0x4ec0e4){_0x2ec689=_0x2ec689-0x0;var _0x8d3ea5=_0xc3ed[_0x2ec689];return _0x8d3ea5;};'use strict';var client=require(_0xdc3e('0x0'));exports[_0xdc3e('0x1')]=function(){return function(){return client['Request'](_0xdc3e('0x2'),{'options':{'attributes':['id',_0xdc3e('0x3'),_0xdc3e('0x4'),_0xdc3e('0x5'),_0xdc3e('0x6'),'key',_0xdc3e('0x7'),'TemplateId'],'raw':![],'include':[{'model':_0xdc3e('0x8'),'as':_0xdc3e('0x9')},{'model':_0xdc3e('0xa'),'as':_0xdc3e('0xb')}]},'log':_0xdc3e('0xc')});};};exports[_0xdc3e('0xd')]=function(_0x358cb8,_0x4f8345){return client[_0xdc3e('0xe')](_0xdc3e('0xf'),{'account':{'id':_0x358cb8},'body':_0x4f8345,'log':_0xdc3e('0xf')});};
\ No newline at end of file
+var _0x27a0=['Request','GetMailAccount','name','service','TemplateId','MailServerIn','Imap','MailServerOut','Smtp','getMailAccount','NotifyMailAccount','getMailAccounts'];(function(_0x3dc836,_0xb500f9){var _0x2d6d65=function(_0x4b0019){while(--_0x4b0019){_0x3dc836['push'](_0x3dc836['shift']());}};_0x2d6d65(++_0xb500f9);}(_0x27a0,0xbf));var _0x027a=function(_0x37cb11,_0x2eccc1){_0x37cb11=_0x37cb11-0x0;var _0x372d12=_0x27a0[_0x37cb11];return _0x372d12;};'use strict';var client=require('../client');exports[_0x027a('0x0')]=function(){return function(){return client[_0x027a('0x1')](_0x027a('0x2'),{'options':{'attributes':['id',_0x027a('0x3'),_0x027a('0x4'),'email','active','key','ListId',_0x027a('0x5')],'raw':![],'include':[{'model':_0x027a('0x6'),'as':_0x027a('0x7')},{'model':_0x027a('0x8'),'as':_0x027a('0x9')}]},'log':_0x027a('0xa')});};};exports['notify']=function(_0x3d1429,_0x271dfe){return client[_0x027a('0x1')]('NotifyMailAccount',{'account':{'id':_0x3d1429},'body':_0x271dfe,'log':_0x027a('0xb')});};
\ No newline at end of file
index ba9a349..52a8221 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbfea=['ShowSetting','GetSettings','../client','getSettings'];(function(_0x2482f6,_0x284aeb){var _0xc0273e=function(_0x63b097){while(--_0x63b097){_0x2482f6['push'](_0x2482f6['shift']());}};_0xc0273e(++_0x284aeb);}(_0xbfea,0x76));var _0xabfe=function(_0x5362a7,_0xedec10){_0x5362a7=_0x5362a7-0x0;var _0x177e92=_0xbfea[_0x5362a7];return _0x177e92;};'use strict';var client=require(_0xabfe('0x0'));exports[_0xabfe('0x1')]=function(){return client['Request'](_0xabfe('0x2'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':['loginMailFrequency']},'log':_0xabfe('0x3')});};
\ No newline at end of file
+var _0x7206=['ShowSetting','loginMailFrequency','../client','Request'];(function(_0x1b5ef4,_0x56bc76){var _0x52feff=function(_0x44a3dc){while(--_0x44a3dc){_0x1b5ef4['push'](_0x1b5ef4['shift']());}};_0x52feff(++_0x56bc76);}(_0x7206,0x16a));var _0x6720=function(_0xddf33e,_0x2d694f){_0xddf33e=_0xddf33e-0x0;var _0x38036a=_0x7206[_0xddf33e];return _0x38036a;};'use strict';var client=require(_0x6720('0x0'));exports['getSettings']=function(){return client[_0x6720('0x1')](_0x6720('0x2'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0x6720('0x3')]},'log':'GetSettings'});};
\ No newline at end of file
index 8a66abb..b708175 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(_0x433a86,_0x175b5c){_0x433a86=_0x433a86-0x0;var _0x23000c=_0xa9e0[_0x433a86];return _0x23000c;};'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(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0xa9e0,0x123));var _0x0a9e=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xa9e0[_0x14add3];return _0x4a174f;};'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 97ba043..1327e01 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d80=['polling','redis','localhost','adapter','socket.io-redis','../../config/triggers','../../config/socketio','default','../../config/express','../../routes','listening','log','Express\x20server\x20listening\x20on\x20port\x20%d!','exports','lodash','http','../../config/environment','port','websocket'];(function(_0x25ca44,_0x111633){var _0x4897c1=function(_0xf344b9){while(--_0xf344b9){_0x25ca44['push'](_0x25ca44['shift']());}};_0x4897c1(++_0x111633);}(_0x1d80,0xb9));var _0x01d8=function(_0x1f51b5,_0x52af32){_0x1f51b5=_0x1f51b5-0x0;var _0xa2d77b=_0x1d80[_0x1f51b5];return _0xa2d77b;};'use strict';var _=require(_0x01d8('0x0'));var http=require(_0x01d8('0x1'));var express=require('express');var sticky=require('sticky-session');var Redis=require('ioredis');var config=require(_0x01d8('0x2'));var app=express();var server=http['createServer'](app);server['timeout']=0xdbba0;if(sticky['listen'](server,config[_0x01d8('0x3')])){var socketio=require('socket.io')(server,{'transports':[_0x01d8('0x4'),_0x01d8('0x5')]});config[_0x01d8('0x6')]=_['defaults'](config[_0x01d8('0x6')],{'host':_0x01d8('0x7'),'port':0x18eb});socketio[_0x01d8('0x8')](require(_0x01d8('0x9'))({'pubClient':new Redis(config[_0x01d8('0x6')]),'subClient':new Redis(config[_0x01d8('0x6')])}));require(_0x01d8('0xa'))['default']();require(_0x01d8('0xb'))[_0x01d8('0xc')](socketio);require(_0x01d8('0xd'))[_0x01d8('0xc')](app);require(_0x01d8('0xe'))['default'](app);}else{server['once'](_0x01d8('0xf'),function(){console[_0x01d8('0x10')](_0x01d8('0x11'),config[_0x01d8('0x3')]);});}exports=module[_0x01d8('0x12')]=app;
\ No newline at end of file
+var _0xb455=['socket.io','polling','redis','defaults','localhost','adapter','socket.io-redis','../../config/triggers','default','../../config/socketio','../../config/express','../../routes','once','listening','log','Express\x20server\x20listening\x20on\x20port\x20%d!','exports','http','../../config/environment','createServer','timeout','listen','port'];(function(_0x28aeb2,_0x319b38){var _0x1d33e1=function(_0x651b59){while(--_0x651b59){_0x28aeb2['push'](_0x28aeb2['shift']());}};_0x1d33e1(++_0x319b38);}(_0xb455,0x198));var _0x5b45=function(_0x30da2a,_0x13e505){_0x30da2a=_0x30da2a-0x0;var _0xbaffa8=_0xb455[_0x30da2a];return _0xbaffa8;};'use strict';var _=require('lodash');var http=require(_0x5b45('0x0'));var express=require('express');var sticky=require('sticky-session');var Redis=require('ioredis');var config=require(_0x5b45('0x1'));var app=express();var server=http[_0x5b45('0x2')](app);server[_0x5b45('0x3')]=0xdbba0;if(sticky[_0x5b45('0x4')](server,config[_0x5b45('0x5')])){var socketio=require(_0x5b45('0x6'))(server,{'transports':['websocket',_0x5b45('0x7')]});config[_0x5b45('0x8')]=_[_0x5b45('0x9')](config[_0x5b45('0x8')],{'host':_0x5b45('0xa'),'port':0x18eb});socketio[_0x5b45('0xb')](require(_0x5b45('0xc'))({'pubClient':new Redis(config[_0x5b45('0x8')]),'subClient':new Redis(config[_0x5b45('0x8')])}));require(_0x5b45('0xd'))[_0x5b45('0xe')]();require(_0x5b45('0xf'))['default'](socketio);require(_0x5b45('0x10'))[_0x5b45('0xe')](app);require(_0x5b45('0x11'))[_0x5b45('0xe')](app);}else{server[_0x5b45('0x12')](_0x5b45('0x13'),function(){console[_0x5b45('0x14')](_0x5b45('0x15'),config['port']);});}exports=module[_0x5b45('0x16')]=app;
\ No newline at end of file
index d71d33b..ff20c16 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x902a=['Request','then','rpc','error','message','result','catch','exports','bluebird','../../config/logger','routing','client','http'];(function(_0x1e1e37,_0xa00323){var _0x4e5cbf=function(_0xeae311){while(--_0xeae311){_0x1e1e37['push'](_0x1e1e37['shift']());}};_0x4e5cbf(++_0xa00323);}(_0x902a,0x10c));var _0xa902=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x902a[_0x3dd15e];return _0x231fd0;};'use strict';var jayson=require('jayson/promise');var BPromise=require(_0xa902('0x0'));var logger=require(_0xa902('0x1'))(_0xa902('0x2'));var client=jayson[_0xa902('0x3')][_0xa902('0x4')]({'port':0x2329});client[_0xa902('0x5')]=function(_0x2dd3e7,_0x255d61){return new BPromise(function(_0x55e131,_0x8364b1){return client['request'](_0x2dd3e7,_0x255d61)[_0xa902('0x6')](function(_0x351cf8){logger['debug'](_0xa902('0x7'),_0xa902('0x2'),_0x2dd3e7,_0x255d61,_0x351cf8);if(_0x351cf8[_0xa902('0x8')]){logger[_0xa902('0x8')](_0xa902('0x7'),'routing',_0x2dd3e7,_0x351cf8[_0xa902('0x8')][_0xa902('0x9')],_0x255d61);return _0x8364b1(_0x351cf8[_0xa902('0x8')][_0xa902('0x9')]);}else{return _0x55e131(_0x351cf8[_0xa902('0xa')]);}})[_0xa902('0xb')](function(_0x1e4c1c){logger[_0xa902('0x8')]('rpc',_0xa902('0x2'),_0x2dd3e7,_0x1e4c1c,_0x255d61);return _0x8364b1(_0x1e4c1c);});});};module[_0xa902('0xc')]=client;
\ No newline at end of file
+var _0x8570=['then','debug','rpc','error','message','result','exports','bluebird','../../config/logger','routing','http','Request'];(function(_0x402c51,_0xd57baa){var _0x25adaa=function(_0x20e1b6){while(--_0x20e1b6){_0x402c51['push'](_0x402c51['shift']());}};_0x25adaa(++_0xd57baa);}(_0x8570,0x8b));var _0x0857=function(_0x29c7f0,_0x1f0550){_0x29c7f0=_0x29c7f0-0x0;var _0x3d9164=_0x8570[_0x29c7f0];return _0x3d9164;};'use strict';var jayson=require('jayson/promise');var BPromise=require(_0x0857('0x0'));var logger=require(_0x0857('0x1'))(_0x0857('0x2'));var client=jayson['client'][_0x0857('0x3')]({'port':0x2329});client[_0x0857('0x4')]=function(_0x59784b,_0x48e968){return new BPromise(function(_0x5de6fd,_0x1f6540){return client['request'](_0x59784b,_0x48e968)[_0x0857('0x5')](function(_0x1afa9f){logger[_0x0857('0x6')](_0x0857('0x7'),_0x0857('0x2'),_0x59784b,_0x48e968,_0x1afa9f);if(_0x1afa9f[_0x0857('0x8')]){logger[_0x0857('0x8')](_0x0857('0x7'),_0x0857('0x2'),_0x59784b,_0x1afa9f[_0x0857('0x8')]['message'],_0x48e968);return _0x1f6540(_0x1afa9f[_0x0857('0x8')][_0x0857('0x9')]);}else{return _0x5de6fd(_0x1afa9f[_0x0857('0xa')]);}})['catch'](function(_0x39cfe){logger['error']('rpc',_0x0857('0x2'),_0x59784b,_0x39cfe,_0x48e968);return _0x1f6540(_0x39cfe);});});};module[_0x0857('0xb')]=client;
\ No newline at end of file
index ab9d0a7..ea7d513 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe59c=['then','getAgents','getIntervals','initIntervals','getOpenchannelQueues','initOpenchannelQueues','getSmsQueues','initSmsQueues','getMailQueues','initMailQueues','getFaxQueues','initFaxQueues','getWhatsappQueues','listen','bluebird','./realtime','./rpc/user','./rpc/interval','./rpc/openchannelQueue','./rpc/chatQueue','./rpc/smsQueue','./rpc/mailQueue','./rpc/faxQueue','./rpc/whatsappQueue','resolve'];(function(_0x5a7f6e,_0x432d73){var _0x499100=function(_0x4dea0e){while(--_0x4dea0e){_0x5a7f6e['push'](_0x5a7f6e['shift']());}};_0x499100(++_0x432d73);}(_0xe59c,0xa4));var _0xce59=function(_0x474943,_0x12caab){_0x474943=_0x474943-0x0;var _0x5863a4=_0xe59c[_0x474943];return _0x5863a4;};'use strict';var BPromise=require(_0xce59('0x0'));var server=require('./server');var Realtime=require(_0xce59('0x1'));var user=require(_0xce59('0x2'));var interval=require(_0xce59('0x3'));var openchannelQueue=require(_0xce59('0x4'));var chatQueue=require(_0xce59('0x5'));var smsQueue=require(_0xce59('0x6'));var mailQueue=require(_0xce59('0x7'));var faxQueue=require(_0xce59('0x8'));var whatsappQueue=require(_0xce59('0x9'));var realtime=new Realtime();function initRealtime(){return BPromise[_0xce59('0xa')]()[_0xce59('0xb')](user[_0xce59('0xc')]())[_0xce59('0xb')](realtime['initAgents']())[_0xce59('0xb')](interval[_0xce59('0xd')]())[_0xce59('0xb')](realtime[_0xce59('0xe')]())[_0xce59('0xb')](openchannelQueue[_0xce59('0xf')]())[_0xce59('0xb')](realtime[_0xce59('0x10')]())['then'](chatQueue['getChatQueues']())[_0xce59('0xb')](realtime['initChatQueues']())[_0xce59('0xb')](smsQueue[_0xce59('0x11')]())[_0xce59('0xb')](realtime[_0xce59('0x12')]())[_0xce59('0xb')](mailQueue[_0xce59('0x13')]())[_0xce59('0xb')](realtime[_0xce59('0x14')]())[_0xce59('0xb')](faxQueue[_0xce59('0x15')]())[_0xce59('0xb')](realtime[_0xce59('0x16')]())['then'](whatsappQueue[_0xce59('0x17')]())[_0xce59('0xb')](realtime['initWhatsappQueues']())['then'](function(){return realtime;});}function main(){return server[_0xce59('0x18')](realtime)[_0xce59('0xb')](function(_0x1cd396){return initRealtime();})['then'](function(_0x558acb){return setInterval(initRealtime,0x1388);})['catch'](function(_0x5adb38){console['log'](_0x5adb38);});}main();
\ No newline at end of file
+var _0x73ba=['initWhatsappQueues','listen','catch','log','./server','./realtime','./rpc/interval','./rpc/openchannelQueue','./rpc/chatQueue','./rpc/mailQueue','./rpc/faxQueue','./rpc/whatsappQueue','then','initAgents','initIntervals','getOpenchannelQueues','getChatQueues','initChatQueues','getSmsQueues','initSmsQueues','getMailQueues','initMailQueues','getFaxQueues','initFaxQueues'];(function(_0x50eeab,_0x438fa0){var _0x47b7be=function(_0x29ac90){while(--_0x29ac90){_0x50eeab['push'](_0x50eeab['shift']());}};_0x47b7be(++_0x438fa0);}(_0x73ba,0xc4));var _0xa73b=function(_0x5dc97f,_0x15fb2f){_0x5dc97f=_0x5dc97f-0x0;var _0x336b7a=_0x73ba[_0x5dc97f];return _0x336b7a;};'use strict';var BPromise=require('bluebird');var server=require(_0xa73b('0x0'));var Realtime=require(_0xa73b('0x1'));var user=require('./rpc/user');var interval=require(_0xa73b('0x2'));var openchannelQueue=require(_0xa73b('0x3'));var chatQueue=require(_0xa73b('0x4'));var smsQueue=require('./rpc/smsQueue');var mailQueue=require(_0xa73b('0x5'));var faxQueue=require(_0xa73b('0x6'));var whatsappQueue=require(_0xa73b('0x7'));var realtime=new Realtime();function initRealtime(){return BPromise['resolve']()['then'](user['getAgents']())[_0xa73b('0x8')](realtime[_0xa73b('0x9')]())[_0xa73b('0x8')](interval['getIntervals']())[_0xa73b('0x8')](realtime[_0xa73b('0xa')]())[_0xa73b('0x8')](openchannelQueue[_0xa73b('0xb')]())[_0xa73b('0x8')](realtime['initOpenchannelQueues']())[_0xa73b('0x8')](chatQueue[_0xa73b('0xc')]())[_0xa73b('0x8')](realtime[_0xa73b('0xd')]())['then'](smsQueue[_0xa73b('0xe')]())[_0xa73b('0x8')](realtime[_0xa73b('0xf')]())[_0xa73b('0x8')](mailQueue[_0xa73b('0x10')]())[_0xa73b('0x8')](realtime[_0xa73b('0x11')]())['then'](faxQueue[_0xa73b('0x12')]())[_0xa73b('0x8')](realtime[_0xa73b('0x13')]())[_0xa73b('0x8')](whatsappQueue['getWhatsappQueues']())[_0xa73b('0x8')](realtime[_0xa73b('0x14')]())[_0xa73b('0x8')](function(){return realtime;});}function main(){return server[_0xa73b('0x15')](realtime)[_0xa73b('0x8')](function(_0x2d7741){return initRealtime();})[_0xa73b('0x8')](function(_0x1ec728){return setInterval(initRealtime,0x1388);})[_0xa73b('0x16')](function(_0x24015e){console[_0xa73b('0x17')](_0x24015e);});}main();
\ No newline at end of file
index 1fab593..177be92 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe14b=['next','restart','condition','noop','findRules','matches','turn','length','prioritize','priority','toJSON','map','toString','fromJSON','isString','object','register','exports','lodash','util','isNil','ignoreFactChanges','inherits','prototype','init','rules','activeRules','isArray','concat','push','sync','filter','orderBy','asc','execute','result','clone','consequence','ruleRef','name','index_','nextTick','call'];(function(_0x22db70,_0x54b5a2){var _0x31027d=function(_0x559e7f){while(--_0x559e7f){_0x22db70['push'](_0x22db70['shift']());}};_0x31027d(++_0x54b5a2);}(_0xe14b,0x93));var _0xbe14=function(_0x1e263f,_0x573116){_0x1e263f=_0x1e263f-0x0;var _0xb4e8b6=_0xe14b[_0x1e263f];return _0xb4e8b6;};'use strict';var _=require(_0xbe14('0x0'));var util=require(_0xbe14('0x1'));var EventEmitter=require('events')['EventEmitter'];function RuleEngine(_0x11c3a0,_0x36393a){this['init']();if(!_[_0xbe14('0x2')](_0x11c3a0)){this['register'](_0x11c3a0);}if(_0x36393a){this['ignoreFactChanges']=_0x36393a[_0xbe14('0x3')];}return this;}util[_0xbe14('0x4')](RuleEngine,EventEmitter);RuleEngine[_0xbe14('0x5')][_0xbe14('0x6')]=function(_0x1d9ade){this[_0xbe14('0x7')]=[];this[_0xbe14('0x8')]=[];};RuleEngine['prototype']['register']=function(_0x496063){if(Array[_0xbe14('0x9')](_0x496063)){this[_0xbe14('0x7')]=this[_0xbe14('0x7')][_0xbe14('0xa')](_0x496063);}else if(_0x496063!==null&&_['isObject'](_0x496063)){this['rules'][_0xbe14('0xb')](_0x496063);}this[_0xbe14('0xc')]();};RuleEngine['prototype'][_0xbe14('0xc')]=function(){this[_0xbe14('0x8')]=this[_0xbe14('0x7')][_0xbe14('0xd')](function(_0x27792f){if(_[_0xbe14('0x2')](_0x27792f['on'])){_0x27792f['on']=!![];}if(_0x27792f['on']===!![]){return _0x27792f;}});this[_0xbe14('0x8')]=_[_0xbe14('0xe')](this[_0xbe14('0x8')],['p'],[_0xbe14('0xf')]);};RuleEngine[_0xbe14('0x5')][_0xbe14('0x10')]=function(_0x813399,_0x530538){var _0x55b3a7=![];_0x813399[_0xbe14('0x11')]=!![];var _0x3dc4a9=_[_0xbe14('0x12')](_0x813399);var _0x37ce4e=_['clone'](_0x813399);var _0x21c789=this[_0xbe14('0x8')];var _0xfd7b8f=[];var _0x123ede=this[_0xbe14('0x3')];(function FnRuleLoop(_0x29ab73){var _0x17ae86={'rules':function(){return _0x21c789;},'rule':function(){return _0x21c789[_0x29ab73];},'when':function(_0x5ea1f8){if(_0x5ea1f8){var _0x137ee5=_0x21c789[_0x29ab73][_0xbe14('0x13')];_0x137ee5[_0xbe14('0x14')]=_0x21c789[_0x29ab73]['id']||_0x21c789[_0x29ab73][_0xbe14('0x15')]||_0xbe14('0x16')+_0x29ab73;process[_0xbe14('0x17')](function(){_0xfd7b8f['push'](_0x137ee5[_0xbe14('0x14')]);_0x137ee5[_0xbe14('0x18')](_0x3dc4a9,_0x17ae86);});}else{process[_0xbe14('0x17')](function(){_0x17ae86[_0xbe14('0x19')]();});}},'restart':function(){return FnRuleLoop(0x0);},'stop':function(){_0x55b3a7=!![];return FnRuleLoop(0x0);},'next':function(_0x188ec4){if(!_0x123ede&&!_['isEqual'](_0x37ce4e,_0x3dc4a9)){_0x37ce4e=_[_0xbe14('0x12')](_0x3dc4a9);process['nextTick'](function(){_0x17ae86[_0xbe14('0x1a')]();});}else{process['nextTick'](function(){if(_[_0xbe14('0x2')](_0x188ec4)){return FnRuleLoop(_0x29ab73+0x1);}else{return FnRuleLoop(_0x188ec4);}});}}};if(_0x29ab73<_0x21c789['length']&&_0x55b3a7===![]){var _0x274018=_0x21c789[_0x29ab73][_0xbe14('0x1b')];_0x274018['call'](_0x3dc4a9,_0x17ae86);}else{process[_0xbe14('0x17')](function(){_0x3dc4a9['matchPath']=_0xfd7b8f;return _0x530538?_0x530538(_0x3dc4a9):_[_0xbe14('0x1c')]();});}}(0x0));};RuleEngine['prototype'][_0xbe14('0x1d')]=function(_0x5fa043){if(_[_0xbe14('0x2')](_0x5fa043)){return this[_0xbe14('0x7')];}else{var _0x15ef02=_[_0xbe14('0x1e')](_0x5fa043);return _['filter'](this[_0xbe14('0x7')],_0x15ef02);}};RuleEngine[_0xbe14('0x5')][_0xbe14('0x1f')]=function(_0x169369,_0x5dd475){var _0x16f884=_0x169369==='on'||_0x169369==='ON'?!![]:![];var _0x29fc64=this['findRules'](_0x5dd475);for(var _0x3c3613=0x0,_0x3b3e84=_0x29fc64[_0xbe14('0x20')];_0x3c3613<_0x3b3e84;_0x3c3613+=0x1){_0x29fc64[_0x3c3613]['on']=_0x16f884;}this[_0xbe14('0xc')]();};RuleEngine[_0xbe14('0x5')][_0xbe14('0x21')]=function(_0x31a664,_0x2b05cb){_0x31a664=parseInt(_0x31a664,0xa);var _0x4168c8=this[_0xbe14('0x1d')](_0x2b05cb);for(var _0x40538f=0x0,_0x3bf43c=_0x4168c8[_0xbe14('0x20')];_0x40538f<_0x3bf43c;_0x40538f+=0x1){_0x4168c8[_0x40538f][_0xbe14('0x22')]=_0x31a664;}this[_0xbe14('0xc')]();};RuleEngine[_0xbe14('0x5')][_0xbe14('0x23')]=function(){var _0x2ff48e=this[_0xbe14('0x7')];if(_0x2ff48e instanceof Array){_0x2ff48e=_0x2ff48e[_0xbe14('0x24')](function(_0x581e86){_0x581e86[_0xbe14('0x1b')]=_0x581e86['condition']['toString']();_0x581e86[_0xbe14('0x13')]=_0x581e86['consequence'][_0xbe14('0x25')]();return _0x581e86;});}else if(!_[_0xbe14('0x2')](_0x2ff48e)){_0x2ff48e['condition']=_0x2ff48e['condition']['toString']();_0x2ff48e[_0xbe14('0x13')]=_0x2ff48e[_0xbe14('0x13')]['toString']();}return _0x2ff48e;};RuleEngine[_0xbe14('0x5')][_0xbe14('0x26')]=function(_0x452635){this[_0xbe14('0x6')]();if(_[_0xbe14('0x27')](_0x452635)){_0x452635=JSON['parse'](_0x452635);}if(_0x452635 instanceof Array){_0x452635=_0x452635['map'](function(_0x15a997){_0x15a997['condition']=eval('('+_0x15a997['condition']+')');_0x15a997['consequence']=eval('('+_0x15a997[_0xbe14('0x13')]+')');return _0x15a997;});}else if(_0x452635!==null&&typeof _0x452635==_0xbe14('0x28')){_0x452635[_0xbe14('0x1b')]=eval('('+_0x452635[_0xbe14('0x1b')]+')');_0x452635[_0xbe14('0x13')]=eval('('+_0x452635[_0xbe14('0x13')]+')');}this[_0xbe14('0x29')](_0x452635);};module[_0xbe14('0x2a')]=RuleEngine;
\ No newline at end of file
+var _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(_0x36fa54,_0x546adc){var _0x54e896=function(_0x1de4c3){while(--_0x1de4c3){_0x36fa54['push'](_0x36fa54['shift']());}};_0x54e896(++_0x546adc);}(_0x7a54,0x106));var _0x47a5=function(_0x50a4a5,_0x2e1050){_0x50a4a5=_0x50a4a5-0x0;var _0x448164=_0x7a54[_0x50a4a5];return _0x448164;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var EventEmitter=require(_0x47a5('0x2'))['EventEmitter'];function RuleEngine(_0x1d33e,_0x4086cd){this['init']();if(!_[_0x47a5('0x3')](_0x1d33e)){this[_0x47a5('0x4')](_0x1d33e);}if(_0x4086cd){this[_0x47a5('0x5')]=_0x4086cd[_0x47a5('0x5')];}return this;}util[_0x47a5('0x6')](RuleEngine,EventEmitter);RuleEngine['prototype'][_0x47a5('0x7')]=function(_0x59199c){this[_0x47a5('0x8')]=[];this[_0x47a5('0x9')]=[];};RuleEngine['prototype'][_0x47a5('0x4')]=function(_0x5077f3){if(Array['isArray'](_0x5077f3)){this['rules']=this[_0x47a5('0x8')][_0x47a5('0xa')](_0x5077f3);}else if(_0x5077f3!==null&&_['isObject'](_0x5077f3)){this[_0x47a5('0x8')]['push'](_0x5077f3);}this['sync']();};RuleEngine[_0x47a5('0xb')][_0x47a5('0xc')]=function(){this[_0x47a5('0x9')]=this[_0x47a5('0x8')][_0x47a5('0xd')](function(_0xd308b8){if(_[_0x47a5('0x3')](_0xd308b8['on'])){_0xd308b8['on']=!![];}if(_0xd308b8['on']===!![]){return _0xd308b8;}});this['activeRules']=_[_0x47a5('0xe')](this[_0x47a5('0x9')],['p'],[_0x47a5('0xf')]);};RuleEngine[_0x47a5('0xb')][_0x47a5('0x10')]=function(_0x620ee9,_0x3c6c46){var _0x190faa=![];_0x620ee9['result']=!![];var _0x362359=_[_0x47a5('0x11')](_0x620ee9);var _0x3b001e=_[_0x47a5('0x11')](_0x620ee9);var _0x1ef44c=this['activeRules'];var _0x549de3=[];var _0x138bc0=this['ignoreFactChanges'];(function FnRuleLoop(_0x5247fd){var _0x423a81={'rules':function(){return _0x1ef44c;},'rule':function(){return _0x1ef44c[_0x5247fd];},'when':function(_0xaf70a6){if(_0xaf70a6){var _0x2ce454=_0x1ef44c[_0x5247fd][_0x47a5('0x12')];_0x2ce454[_0x47a5('0x13')]=_0x1ef44c[_0x5247fd]['id']||_0x1ef44c[_0x5247fd][_0x47a5('0x14')]||_0x47a5('0x15')+_0x5247fd;process[_0x47a5('0x16')](function(){_0x549de3[_0x47a5('0x17')](_0x2ce454['ruleRef']);_0x2ce454[_0x47a5('0x18')](_0x362359,_0x423a81);});}else{process[_0x47a5('0x16')](function(){_0x423a81['next']();});}},'restart':function(){return FnRuleLoop(0x0);},'stop':function(){_0x190faa=!![];return FnRuleLoop(0x0);},'next':function(_0x2b0360){if(!_0x138bc0&&!_[_0x47a5('0x19')](_0x3b001e,_0x362359)){_0x3b001e=_[_0x47a5('0x11')](_0x362359);process['nextTick'](function(){_0x423a81[_0x47a5('0x1a')]();});}else{process[_0x47a5('0x16')](function(){if(_[_0x47a5('0x3')](_0x2b0360)){return FnRuleLoop(_0x5247fd+0x1);}else{return FnRuleLoop(_0x2b0360);}});}}};if(_0x5247fd<_0x1ef44c[_0x47a5('0x1b')]&&_0x190faa===![]){var _0x5ef1b1=_0x1ef44c[_0x5247fd][_0x47a5('0x1c')];_0x5ef1b1[_0x47a5('0x18')](_0x362359,_0x423a81);}else{process['nextTick'](function(){_0x362359[_0x47a5('0x1d')]=_0x549de3;return _0x3c6c46?_0x3c6c46(_0x362359):_[_0x47a5('0x1e')]();});}}(0x0));};RuleEngine[_0x47a5('0xb')][_0x47a5('0x1f')]=function(_0x3abd6a){if(_['isNil'](_0x3abd6a)){return this['rules'];}else{var _0x136745=_['matches'](_0x3abd6a);return _[_0x47a5('0xd')](this['rules'],_0x136745);}};RuleEngine[_0x47a5('0xb')][_0x47a5('0x20')]=function(_0x36ad34,_0x1dac65){var _0x21f296=_0x36ad34==='on'||_0x36ad34==='ON'?!![]:![];var _0x3ba0b7=this[_0x47a5('0x1f')](_0x1dac65);for(var _0x136b14=0x0,_0x16631f=_0x3ba0b7[_0x47a5('0x1b')];_0x136b14<_0x16631f;_0x136b14+=0x1){_0x3ba0b7[_0x136b14]['on']=_0x21f296;}this[_0x47a5('0xc')]();};RuleEngine[_0x47a5('0xb')][_0x47a5('0x21')]=function(_0x528582,_0x243210){_0x528582=parseInt(_0x528582,0xa);var _0x51833b=this[_0x47a5('0x1f')](_0x243210);for(var _0x9ac908=0x0,_0x16901f=_0x51833b['length'];_0x9ac908<_0x16901f;_0x9ac908+=0x1){_0x51833b[_0x9ac908][_0x47a5('0x22')]=_0x528582;}this[_0x47a5('0xc')]();};RuleEngine[_0x47a5('0xb')][_0x47a5('0x23')]=function(){var _0x51cc81=this['rules'];if(_0x51cc81 instanceof Array){_0x51cc81=_0x51cc81[_0x47a5('0x24')](function(_0xfb5ddb){_0xfb5ddb['condition']=_0xfb5ddb['condition'][_0x47a5('0x25')]();_0xfb5ddb[_0x47a5('0x12')]=_0xfb5ddb['consequence'][_0x47a5('0x25')]();return _0xfb5ddb;});}else if(!_['isNil'](_0x51cc81)){_0x51cc81[_0x47a5('0x1c')]=_0x51cc81[_0x47a5('0x1c')]['toString']();_0x51cc81['consequence']=_0x51cc81[_0x47a5('0x12')]['toString']();}return _0x51cc81;};RuleEngine[_0x47a5('0xb')][_0x47a5('0x26')]=function(_0xf269a8){this['init']();if(_[_0x47a5('0x27')](_0xf269a8)){_0xf269a8=JSON['parse'](_0xf269a8);}if(_0xf269a8 instanceof Array){_0xf269a8=_0xf269a8['map'](function(_0x65542e){_0x65542e['condition']=eval('('+_0x65542e[_0x47a5('0x1c')]+')');_0x65542e['consequence']=eval('('+_0x65542e[_0x47a5('0x12')]+')');return _0x65542e;});}else if(_0xf269a8!==null&&typeof _0xf269a8==_0x47a5('0x28')){_0xf269a8[_0x47a5('0x1c')]=eval('('+_0xf269a8[_0x47a5('0x1c')]+')');_0xf269a8[_0x47a5('0x12')]=eval('('+_0xf269a8[_0x47a5('0x12')]+')');}this[_0x47a5('0x4')](_0xf269a8);};module[_0x47a5('0x29')]=RuleEngine;
\ No newline at end of file
index ca29f99..744c194 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1e44=['error','message','result','catch','SendMail','jayson/promise','then'];(function(_0x46f249,_0x5ec765){var _0x3a623c=function(_0x2fafdf){while(--_0x2fafdf){_0x46f249['push'](_0x46f249['shift']());}};_0x3a623c(++_0x5ec765);}(_0x1e44,0xc2));var _0x41e4=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1e44[_0x3dd15e];return _0x231fd0;};'use strict';var BPromise=require('bluebird');var jayson=require(_0x41e4('0x0'));var client=jayson['client']['http']({'port':0x232b});function request(_0x345bd0,_0x201ca4){return new BPromise(function(_0x2f1c7f,_0x435430){return client['request'](_0x345bd0,_0x201ca4)[_0x41e4('0x1')](function(_0x19db69){if(_0x19db69[_0x41e4('0x2')]){return _0x435430(_0x19db69[_0x41e4('0x2')][_0x41e4('0x3')]);}else{return _0x2f1c7f(_0x19db69[_0x41e4('0x4')]);}})[_0x41e4('0x5')](function(_0x4efb27){return _0x435430(_0x4efb27);});});}exports['sendMailMessage']=function(_0x37f60f,_0x1b676d){return request(_0x41e4('0x6'),{'account':_0x37f60f,'message':_0x1b676d});};
\ No newline at end of file
+var _0x0852=['error','SendMail','bluebird','client','http','then'];(function(_0x4d316c,_0x101b2e){var _0x5898e2=function(_0x113f8f){while(--_0x113f8f){_0x4d316c['push'](_0x4d316c['shift']());}};_0x5898e2(++_0x101b2e);}(_0x0852,0xd4));var _0x2085=function(_0x500419,_0x549162){_0x500419=_0x500419-0x0;var _0x241c1a=_0x0852[_0x500419];return _0x241c1a;};'use strict';var BPromise=require(_0x2085('0x0'));var jayson=require('jayson/promise');var client=jayson[_0x2085('0x1')][_0x2085('0x2')]({'port':0x232b});function request(_0x45715b,_0x152f55){return new BPromise(function(_0x13cd11,_0x471f07){return client['request'](_0x45715b,_0x152f55)[_0x2085('0x3')](function(_0x9c9c83){if(_0x9c9c83[_0x2085('0x4')]){return _0x471f07(_0x9c9c83[_0x2085('0x4')]['message']);}else{return _0x13cd11(_0x9c9c83['result']);}})['catch'](function(_0x2453b5){return _0x471f07(_0x2453b5);});});}exports['sendMailMessage']=function(_0x3c00db,_0x2d11cb){return request(_0x2085('0x5'),{'account':_0x3c00db,'message':_0x2d11cb});};
\ No newline at end of file
index 6a82a4e..8264cd5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x33a5=['lodash','moment','md5','ioredis','../../../config/environment','defaults','redis','localhost','socket.io-emitter','name','online','voicePause','chatPause','faxPause','smsPause','openchannelPause','chatStatus','unknown','chatStatusTime','chatCapacity','chatCurrentCapacity','mailStatus','mailStatusTime','mailCurrentCapacity','faxStatus','faxStatusTime','faxCapacity','faxCurrentCapacity','smsStatus','smsStatusTime','smsCurrentCapacity','whatsappStatus','whatsappCapacity','whatsappCurrentCapacity','openchannelStatus','openchannelStatusTime','openchannelCurrentCapacity','busy','updateRealtime','prototype','CurrentCapacity','Capacity','maxcapacity','working','idle','mail','openchannel','fax','sms','whatsapp','length','getChannelStatus','StatusTime','toNumber','format','Status','mailCapacity','whatsappStatusTime','openchannelCapacity','busyQueue','stringify','emit','user:save','exports'];(function(_0x819464,_0x46fc91){var _0x49dcc0=function(_0x36b2b2){while(--_0x36b2b2){_0x819464['push'](_0x819464['shift']());}};_0x49dcc0(++_0x46fc91);}(_0x33a5,0x180));var _0x533a=function(_0x4212e8,_0x3a9611){_0x4212e8=_0x4212e8-0x0;var _0x5c35d0=_0x33a5[_0x4212e8];return _0x5c35d0;};'use strict';var _=require(_0x533a('0x0'));var moment=require(_0x533a('0x1'));var md5=require(_0x533a('0x2'));var Redis=require(_0x533a('0x3'));var config=require(_0x533a('0x4'));config['redis']=_[_0x533a('0x5')](config[_0x533a('0x6')],{'host':_0x533a('0x7'),'port':0x18eb});var io=require(_0x533a('0x8'))(new Redis(config[_0x533a('0x6')]));function Agent(_0x159f83){this['id']=_0x159f83['id']||0x0;this[_0x533a('0x9')]=_0x159f83['name']||'';this[_0x533a('0xa')]=_0x159f83[_0x533a('0xa')]||!![];this['voicePause']=_0x159f83[_0x533a('0xb')]||![];this[_0x533a('0xc')]=_0x159f83[_0x533a('0xc')]||![];this['mailPause']=_0x159f83['mailPause']||![];this['faxPause']=_0x159f83[_0x533a('0xd')]||![];this[_0x533a('0xe')]=_0x159f83[_0x533a('0xe')]||![];this[_0x533a('0xf')]=_0x159f83[_0x533a('0xf')]||![];this[_0x533a('0x10')]=_0x533a('0x11');this[_0x533a('0x12')]=0x0;this[_0x533a('0x13')]=_0x159f83['chatCapacity']||0x0;this[_0x533a('0x14')]=0x0;this[_0x533a('0x15')]=_0x533a('0x11');this[_0x533a('0x16')]=0x0;this['mailCapacity']=_0x159f83['mailCapacity']||0x0;this[_0x533a('0x17')]=0x0;this[_0x533a('0x18')]=_0x533a('0x11');this[_0x533a('0x19')]=0x0;this[_0x533a('0x1a')]=_0x159f83[_0x533a('0x1a')]||0x0;this[_0x533a('0x1b')]=0x0;this[_0x533a('0x1c')]='unknown';this[_0x533a('0x1d')]=0x0;this['smsCapacity']=_0x159f83['smsCapacity']||0x0;this[_0x533a('0x1e')]=0x0;this[_0x533a('0x1f')]='unknown';this['whatsappStatusTime']=0x0;this['whatsappCapacity']=_0x159f83[_0x533a('0x20')]||0x0;this[_0x533a('0x21')]=0x0;this[_0x533a('0x22')]=_0x533a('0x11');this[_0x533a('0x23')]=0x0;this['openchannelCapacity']=_0x159f83['openchannelCapacity']||0x0;this[_0x533a('0x24')]=0x0;this[_0x533a('0x25')]=![];this['busyQueue']=undefined;this['md5']='';this[_0x533a('0x26')]();}Agent[_0x533a('0x27')]['getChannelStatus']=function(_0x114adc){if(this[_0x114adc+_0x533a('0x28')]>0x0){if(this[_0x114adc+_0x533a('0x29')]>0x0&&this[_0x114adc+_0x533a('0x28')]>=this[_0x114adc+_0x533a('0x29')]){return _0x533a('0x2a');}else{return _0x533a('0x2b');}}else{return _0x533a('0x2c');}};Agent[_0x533a('0x27')][_0x533a('0x26')]=function(){var _0x49400a=[_0x533a('0x2d'),'chat',_0x533a('0x2e'),_0x533a('0x2f'),_0x533a('0x30'),_0x533a('0x31')];for(var _0x3f9796=0x0;_0x3f9796<_0x49400a[_0x533a('0x32')];_0x3f9796+=0x1){var _0x1efb49=this[_0x533a('0x33')](_0x49400a[_0x3f9796]);if(this[_0x49400a[_0x3f9796]+'Status']!==_0x1efb49){this[_0x49400a[_0x3f9796]+_0x533a('0x34')]=_[_0x533a('0x35')](moment()[_0x533a('0x36')]('x'));}this[_0x49400a[_0x3f9796]+_0x533a('0x37')]=_0x1efb49;}var _0x3a1843={'id':this['id'],'name':this[_0x533a('0x9')],'online':this[_0x533a('0xa')],'voicePause':this[_0x533a('0xb')],'chatPause':this[_0x533a('0xc')],'mailPause':this['mailPause'],'smsPause':this[_0x533a('0xe')],'faxPause':this[_0x533a('0xd')],'openchannelPause':this[_0x533a('0xf')],'chatStatus':this[_0x533a('0x10')],'chatStatusTime':this[_0x533a('0x12')],'chatCapacity':this['chatCapacity'],'chatCurrentCapacity':this['chatCurrentCapacity'],'mailStatus':this[_0x533a('0x15')],'mailStatusTime':this['mailStatusTime'],'mailCapacity':this[_0x533a('0x38')],'mailCurrentCapacity':this[_0x533a('0x17')],'faxStatus':this['faxStatus'],'faxStatusTime':this['faxStatusTime'],'faxCapacity':this[_0x533a('0x1a')],'faxCurrentCapacity':this['faxCurrentCapacity'],'smsStatus':this[_0x533a('0x1c')],'smsStatusTime':this[_0x533a('0x1d')],'smsCapacity':this['smsCapacity'],'smsCurrentCapacity':this['smsCurrentCapacity'],'whatsappStatus':this[_0x533a('0x1f')],'whatsappStatusTime':this[_0x533a('0x39')],'whatsappCapacity':this[_0x533a('0x20')],'whatsappCurrentCapacity':this[_0x533a('0x21')],'openchannelStatus':this[_0x533a('0x22')],'openchannelStatusTime':this['openchannelStatusTime'],'openchannelCapacity':this[_0x533a('0x3a')],'openchannelCurrentCapacity':this[_0x533a('0x24')],'busy':this['busy'],'busyQueue':this[_0x533a('0x3b')]};var _0x7d7f4e=md5(JSON[_0x533a('0x3c')](_0x3a1843));if(this[_0x533a('0x2')]!==_0x7d7f4e){this[_0x533a('0x2')]=_0x7d7f4e;io[_0x533a('0x3d')](_0x533a('0x3e'),_0x3a1843);}};module[_0x533a('0x3f')]=Agent;
\ No newline at end of file
+var _0x9551=['mailStatus','mailStatusTime','mailCapacity','faxStatus','faxStatusTime','faxCapacity','faxCurrentCapacity','smsCapacity','smsCurrentCapacity','whatsappStatus','whatsappStatusTime','whatsappCapacity','whatsappCurrentCapacity','openchannelStatus','openchannelCapacity','openchannelCurrentCapacity','busy','updateRealtime','prototype','Capacity','CurrentCapacity','maxcapacity','idle','mail','chat','openchannel','fax','whatsapp','length','Status','toNumber','format','faxPause','chatStatus','mailCurrentCapacity','smsStatus','smsStatusTime','openchannelStatusTime','busyQueue','emit','user:save','exports','lodash','md5','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','online','voicePause','chatPause','mailPause','smsPause','openchannelPause','unknown','chatStatusTime','chatCapacity','chatCurrentCapacity'];(function(_0x56faa5,_0x322475){var _0x36012d=function(_0xbe22a7){while(--_0xbe22a7){_0x56faa5['push'](_0x56faa5['shift']());}};_0x36012d(++_0x322475);}(_0x9551,0x11e));var _0x1955=function(_0x34cbea,_0x5f0505){_0x34cbea=_0x34cbea-0x0;var _0x1874e5=_0x9551[_0x34cbea];return _0x1874e5;};'use strict';var _=require(_0x1955('0x0'));var moment=require('moment');var md5=require(_0x1955('0x1'));var Redis=require(_0x1955('0x2'));var config=require(_0x1955('0x3'));config[_0x1955('0x4')]=_[_0x1955('0x5')](config[_0x1955('0x4')],{'host':_0x1955('0x6'),'port':0x18eb});var io=require(_0x1955('0x7'))(new Redis(config['redis']));function Agent(_0x3529b9){this['id']=_0x3529b9['id']||0x0;this[_0x1955('0x8')]=_0x3529b9['name']||'';this[_0x1955('0x9')]=_0x3529b9[_0x1955('0x9')]||!![];this[_0x1955('0xa')]=_0x3529b9[_0x1955('0xa')]||![];this[_0x1955('0xb')]=_0x3529b9['chatPause']||![];this[_0x1955('0xc')]=_0x3529b9['mailPause']||![];this['faxPause']=_0x3529b9['faxPause']||![];this[_0x1955('0xd')]=_0x3529b9[_0x1955('0xd')]||![];this[_0x1955('0xe')]=_0x3529b9['openchannelPause']||![];this['chatStatus']=_0x1955('0xf');this[_0x1955('0x10')]=0x0;this[_0x1955('0x11')]=_0x3529b9['chatCapacity']||0x0;this[_0x1955('0x12')]=0x0;this[_0x1955('0x13')]=_0x1955('0xf');this[_0x1955('0x14')]=0x0;this['mailCapacity']=_0x3529b9[_0x1955('0x15')]||0x0;this['mailCurrentCapacity']=0x0;this[_0x1955('0x16')]=_0x1955('0xf');this[_0x1955('0x17')]=0x0;this[_0x1955('0x18')]=_0x3529b9[_0x1955('0x18')]||0x0;this[_0x1955('0x19')]=0x0;this['smsStatus']=_0x1955('0xf');this['smsStatusTime']=0x0;this[_0x1955('0x1a')]=_0x3529b9[_0x1955('0x1a')]||0x0;this[_0x1955('0x1b')]=0x0;this[_0x1955('0x1c')]=_0x1955('0xf');this[_0x1955('0x1d')]=0x0;this[_0x1955('0x1e')]=_0x3529b9[_0x1955('0x1e')]||0x0;this[_0x1955('0x1f')]=0x0;this[_0x1955('0x20')]=_0x1955('0xf');this['openchannelStatusTime']=0x0;this['openchannelCapacity']=_0x3529b9[_0x1955('0x21')]||0x0;this[_0x1955('0x22')]=0x0;this[_0x1955('0x23')]=![];this['busyQueue']=undefined;this[_0x1955('0x1')]='';this[_0x1955('0x24')]();}Agent[_0x1955('0x25')]['getChannelStatus']=function(_0x3bc6f1){if(this[_0x3bc6f1+'CurrentCapacity']>0x0){if(this[_0x3bc6f1+_0x1955('0x26')]>0x0&&this[_0x3bc6f1+_0x1955('0x27')]>=this[_0x3bc6f1+_0x1955('0x26')]){return _0x1955('0x28');}else{return'working';}}else{return _0x1955('0x29');}};Agent[_0x1955('0x25')]['updateRealtime']=function(){var _0x581ac0=[_0x1955('0x2a'),_0x1955('0x2b'),_0x1955('0x2c'),_0x1955('0x2d'),'sms',_0x1955('0x2e')];for(var _0x344886=0x0;_0x344886<_0x581ac0[_0x1955('0x2f')];_0x344886+=0x1){var _0x166e49=this['getChannelStatus'](_0x581ac0[_0x344886]);if(this[_0x581ac0[_0x344886]+_0x1955('0x30')]!==_0x166e49){this[_0x581ac0[_0x344886]+'StatusTime']=_[_0x1955('0x31')](moment()[_0x1955('0x32')]('x'));}this[_0x581ac0[_0x344886]+_0x1955('0x30')]=_0x166e49;}var _0x3ea35d={'id':this['id'],'name':this['name'],'online':this['online'],'voicePause':this[_0x1955('0xa')],'chatPause':this[_0x1955('0xb')],'mailPause':this[_0x1955('0xc')],'smsPause':this[_0x1955('0xd')],'faxPause':this[_0x1955('0x33')],'openchannelPause':this[_0x1955('0xe')],'chatStatus':this[_0x1955('0x34')],'chatStatusTime':this['chatStatusTime'],'chatCapacity':this['chatCapacity'],'chatCurrentCapacity':this[_0x1955('0x12')],'mailStatus':this[_0x1955('0x13')],'mailStatusTime':this['mailStatusTime'],'mailCapacity':this[_0x1955('0x15')],'mailCurrentCapacity':this[_0x1955('0x35')],'faxStatus':this[_0x1955('0x16')],'faxStatusTime':this[_0x1955('0x17')],'faxCapacity':this[_0x1955('0x18')],'faxCurrentCapacity':this['faxCurrentCapacity'],'smsStatus':this[_0x1955('0x36')],'smsStatusTime':this[_0x1955('0x37')],'smsCapacity':this[_0x1955('0x1a')],'smsCurrentCapacity':this[_0x1955('0x1b')],'whatsappStatus':this[_0x1955('0x1c')],'whatsappStatusTime':this['whatsappStatusTime'],'whatsappCapacity':this[_0x1955('0x1e')],'whatsappCurrentCapacity':this[_0x1955('0x1f')],'openchannelStatus':this[_0x1955('0x20')],'openchannelStatusTime':this[_0x1955('0x38')],'openchannelCapacity':this['openchannelCapacity'],'openchannelCurrentCapacity':this[_0x1955('0x22')],'busy':this[_0x1955('0x23')],'busyQueue':this[_0x1955('0x39')]};var _0x33be0b=md5(JSON['stringify'](_0x3ea35d));if(this[_0x1955('0x1')]!==_0x33be0b){this['md5']=_0x33be0b;io[_0x1955('0x3a')](_0x1955('0x3b'),_0x3ea35d);}};module[_0x1955('0x3c')]=Agent;
\ No newline at end of file
index 0a9ee0d..1029e1b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6852=['defaults','localhost','socket.io-emitter','name','timeout','strategy','Agents','mapAgentsId','waiting','updateRouting','updateRealtime','prototype','_rr','map','loggedIn','paused','length','online','chatPause','available','stringify','format','chat:queue:%s','exports','md5','util','ioredis','../../../config/environment','redis'];(function(_0x569e70,_0xdd9b42){var _0x534a3a=function(_0x5c5d1a){while(--_0x5c5d1a){_0x569e70['push'](_0x569e70['shift']());}};_0x534a3a(++_0xdd9b42);}(_0x6852,0x1e8));var _0x2685=function(_0x3fc007,_0xaea838){_0x3fc007=_0x3fc007-0x0;var _0x130762=_0x6852[_0x3fc007];return _0x130762;};'use strict';var _=require('lodash');var md5=require(_0x2685('0x0'));var util=require(_0x2685('0x1'));var Redis=require(_0x2685('0x2'));var config=require(_0x2685('0x3'));config[_0x2685('0x4')]=_[_0x2685('0x5')](config[_0x2685('0x4')],{'host':_0x2685('0x6'),'port':0x18eb});var io=require(_0x2685('0x7'))(new Redis(config['redis']));function ChatQueue(_0x7bfd8d){this['id']=_0x7bfd8d['id']||0x0;this[_0x2685('0x8')]=_0x7bfd8d[_0x2685('0x8')]||'';this[_0x2685('0x9')]=_0x7bfd8d[_0x2685('0x9')]||0xa;this[_0x2685('0xa')]=_0x7bfd8d['strategy']||'beepall';this[_0x2685('0xb')]=_0x7bfd8d[_0x2685('0xb')];this[_0x2685('0xc')]={};this[_0x2685('0xd')]=0x0;this[_0x2685('0x0')]='';this[_0x2685('0xe')]();this[_0x2685('0xf')]();}ChatQueue[_0x2685('0x10')]['updateRouting']=function(){var _0x375502=this[_0x2685('0xc')][_0x2685('0x11')];this['mapAgentsId']=_[_0x2685('0x12')](this[_0x2685('0xb')],'id');this[_0x2685('0xc')][_0x2685('0x11')]=_0x375502;};ChatQueue['prototype'][_0x2685('0xf')]=function(){this[_0x2685('0x13')]=0x0;this[_0x2685('0x14')]=0x0;for(var _0x1d0909=0x0;_0x1d0909<this[_0x2685('0xb')][_0x2685('0x15')];_0x1d0909+=0x1){if(this[_0x2685('0xb')][_0x1d0909][_0x2685('0x16')]){this[_0x2685('0x13')]+=0x1;}if(this[_0x2685('0xb')][_0x1d0909][_0x2685('0x17')]){this['paused']+=0x1;}}this[_0x2685('0x18')]=this['loggedIn']-this[_0x2685('0x14')];this[_0x2685('0x18')]=this[_0x2685('0x18')]>=0x0?this[_0x2685('0x18')]:0x0;var _0x55eb0e={'id':this['id'],'available':this[_0x2685('0x18')],'loggedIn':this[_0x2685('0x13')],'name':this[_0x2685('0x8')],'paused':this[_0x2685('0x14')],'waiting':this[_0x2685('0xd')]};var _0x25a33f=md5(JSON[_0x2685('0x19')](_0x55eb0e));if(this['md5']!==_0x25a33f){this['md5']=_0x25a33f;io['to'](util[_0x2685('0x1a')](_0x2685('0x1b'),_0x55eb0e['name']))['emit']('chat_queue:save',_0x55eb0e);}};module[_0x2685('0x1c')]=ChatQueue;
\ No newline at end of file
+var _0x1d21=['localhost','socket.io-emitter','timeout','strategy','beepall','Agents','mapAgentsId','waiting','md5','updateRouting','prototype','_rr','map','updateRealtime','loggedIn','length','online','chatPause','paused','available','name','chat:queue:%s','emit','chat_queue:save','lodash','util','ioredis','../../../config/environment','redis'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0x1d21,0x100));var _0x11d2=function(_0xd46333,_0x1b05c1){_0xd46333=_0xd46333-0x0;var _0x336108=_0x1d21[_0xd46333];return _0x336108;};'use strict';var _=require(_0x11d2('0x0'));var md5=require('md5');var util=require(_0x11d2('0x1'));var Redis=require(_0x11d2('0x2'));var config=require(_0x11d2('0x3'));config[_0x11d2('0x4')]=_['defaults'](config['redis'],{'host':_0x11d2('0x5'),'port':0x18eb});var io=require(_0x11d2('0x6'))(new Redis(config[_0x11d2('0x4')]));function ChatQueue(_0x16855a){this['id']=_0x16855a['id']||0x0;this['name']=_0x16855a['name']||'';this[_0x11d2('0x7')]=_0x16855a['timeout']||0xa;this['strategy']=_0x16855a[_0x11d2('0x8')]||_0x11d2('0x9');this[_0x11d2('0xa')]=_0x16855a[_0x11d2('0xa')];this[_0x11d2('0xb')]={};this[_0x11d2('0xc')]=0x0;this[_0x11d2('0xd')]='';this[_0x11d2('0xe')]();this['updateRealtime']();}ChatQueue[_0x11d2('0xf')][_0x11d2('0xe')]=function(){var _0x131852=this['mapAgentsId'][_0x11d2('0x10')];this['mapAgentsId']=_[_0x11d2('0x11')](this[_0x11d2('0xa')],'id');this['mapAgentsId'][_0x11d2('0x10')]=_0x131852;};ChatQueue[_0x11d2('0xf')][_0x11d2('0x12')]=function(){this[_0x11d2('0x13')]=0x0;this['paused']=0x0;for(var _0x44c247=0x0;_0x44c247<this[_0x11d2('0xa')][_0x11d2('0x14')];_0x44c247+=0x1){if(this[_0x11d2('0xa')][_0x44c247][_0x11d2('0x15')]){this['loggedIn']+=0x1;}if(this[_0x11d2('0xa')][_0x44c247][_0x11d2('0x16')]){this[_0x11d2('0x17')]+=0x1;}}this[_0x11d2('0x18')]=this[_0x11d2('0x13')]-this['paused'];this[_0x11d2('0x18')]=this['available']>=0x0?this[_0x11d2('0x18')]:0x0;var _0x288b2c={'id':this['id'],'available':this[_0x11d2('0x18')],'loggedIn':this[_0x11d2('0x13')],'name':this[_0x11d2('0x19')],'paused':this[_0x11d2('0x17')],'waiting':this[_0x11d2('0xc')]};var _0x536dd9=md5(JSON['stringify'](_0x288b2c));if(this[_0x11d2('0xd')]!==_0x536dd9){this[_0x11d2('0xd')]=_0x536dd9;io['to'](util['format'](_0x11d2('0x1a'),_0x288b2c[_0x11d2('0x19')]))[_0x11d2('0x1b')](_0x11d2('0x1c'),_0x288b2c);}};module['exports']=ChatQueue;
\ No newline at end of file
index 38dc466..f454930 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f15=['stringify','format','fax:queue:%s','emit','fax_queue:save','exports','lodash','md5','redis','defaults','localhost','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRouting','updateRealtime','prototype','map','_rr','loggedIn','paused','length','online','faxPause','available'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x3f15,0x145));var _0x53f1=function(_0x167792,_0x43f937){_0x167792=_0x167792-0x0;var _0x45293c=_0x3f15[_0x167792];return _0x45293c;};'use strict';var _=require(_0x53f1('0x0'));var md5=require(_0x53f1('0x1'));var util=require('util');var Redis=require('ioredis');var config=require('../../../config/environment');config[_0x53f1('0x2')]=_[_0x53f1('0x3')](config['redis'],{'host':_0x53f1('0x4'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x53f1('0x2')]));function FaxQueue(_0x3febf3){this['id']=_0x3febf3['id']||0x0;this[_0x53f1('0x5')]=_0x3febf3[_0x53f1('0x5')]||'';this[_0x53f1('0x6')]=_0x3febf3[_0x53f1('0x6')]||0xa;this[_0x53f1('0x7')]=_0x3febf3[_0x53f1('0x7')]||_0x53f1('0x8');this[_0x53f1('0x9')]=_0x3febf3['Agents'];this[_0x53f1('0xa')]={};this[_0x53f1('0xb')]=0x0;this['md5']='';this[_0x53f1('0xc')]();this[_0x53f1('0xd')]();}FaxQueue[_0x53f1('0xe')][_0x53f1('0xc')]=function(){var _0x101167=this[_0x53f1('0xa')]['_rr'];this[_0x53f1('0xa')]=_[_0x53f1('0xf')](this[_0x53f1('0x9')],'id');this[_0x53f1('0xa')][_0x53f1('0x10')]=_0x101167;};FaxQueue[_0x53f1('0xe')][_0x53f1('0xd')]=function(){this[_0x53f1('0x11')]=0x0;this[_0x53f1('0x12')]=0x0;for(var _0x2ac2b5=0x0;_0x2ac2b5<this['Agents'][_0x53f1('0x13')];_0x2ac2b5+=0x1){if(this[_0x53f1('0x9')][_0x2ac2b5][_0x53f1('0x14')]){this['loggedIn']+=0x1;}if(this[_0x53f1('0x9')][_0x2ac2b5][_0x53f1('0x15')]){this['paused']+=0x1;}}this[_0x53f1('0x16')]=this[_0x53f1('0x11')]-this[_0x53f1('0x12')];this[_0x53f1('0x16')]=this[_0x53f1('0x16')]>=0x0?this['available']:0x0;var _0x180298={'id':this['id'],'available':this[_0x53f1('0x16')],'loggedIn':this[_0x53f1('0x11')],'name':this[_0x53f1('0x5')],'paused':this['paused'],'waiting':this['waiting']};var _0x58412f=md5(JSON[_0x53f1('0x17')](_0x180298));if(this[_0x53f1('0x1')]!==_0x58412f){this[_0x53f1('0x1')]=_0x58412f;io['to'](util[_0x53f1('0x18')](_0x53f1('0x19'),_0x180298['name']))[_0x53f1('0x1a')](_0x53f1('0x1b'),_0x180298);}};module[_0x53f1('0x1c')]=FaxQueue;
\ No newline at end of file
+var _0x551a=['redis','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','waiting','updateRouting','updateRealtime','prototype','mapAgentsId','map','_rr','loggedIn','paused','length','online','faxPause','available','format','fax:queue:%s','emit','fax_queue:save','exports','lodash','md5','util','../../../config/environment'];(function(_0x394d73,_0x1cf9d4){var _0x17fe6e=function(_0x158028){while(--_0x158028){_0x394d73['push'](_0x394d73['shift']());}};_0x17fe6e(++_0x1cf9d4);}(_0x551a,0xce));var _0xa551=function(_0x1829fd,_0x33b470){_0x1829fd=_0x1829fd-0x0;var _0x177d22=_0x551a[_0x1829fd];return _0x177d22;};'use strict';var _=require(_0xa551('0x0'));var md5=require(_0xa551('0x1'));var util=require(_0xa551('0x2'));var Redis=require('ioredis');var config=require(_0xa551('0x3'));config[_0xa551('0x4')]=_['defaults'](config[_0xa551('0x4')],{'host':_0xa551('0x5'),'port':0x18eb});var io=require(_0xa551('0x6'))(new Redis(config['redis']));function FaxQueue(_0x40d467){this['id']=_0x40d467['id']||0x0;this[_0xa551('0x7')]=_0x40d467[_0xa551('0x7')]||'';this[_0xa551('0x8')]=_0x40d467[_0xa551('0x8')]||0xa;this['strategy']=_0x40d467[_0xa551('0x9')]||_0xa551('0xa');this[_0xa551('0xb')]=_0x40d467[_0xa551('0xb')];this['mapAgentsId']={};this[_0xa551('0xc')]=0x0;this[_0xa551('0x1')]='';this[_0xa551('0xd')]();this[_0xa551('0xe')]();}FaxQueue[_0xa551('0xf')]['updateRouting']=function(){var _0x481919=this[_0xa551('0x10')]['_rr'];this[_0xa551('0x10')]=_[_0xa551('0x11')](this['Agents'],'id');this[_0xa551('0x10')][_0xa551('0x12')]=_0x481919;};FaxQueue[_0xa551('0xf')][_0xa551('0xe')]=function(){this[_0xa551('0x13')]=0x0;this[_0xa551('0x14')]=0x0;for(var _0x270a1a=0x0;_0x270a1a<this[_0xa551('0xb')][_0xa551('0x15')];_0x270a1a+=0x1){if(this[_0xa551('0xb')][_0x270a1a][_0xa551('0x16')]){this[_0xa551('0x13')]+=0x1;}if(this[_0xa551('0xb')][_0x270a1a][_0xa551('0x17')]){this[_0xa551('0x14')]+=0x1;}}this[_0xa551('0x18')]=this[_0xa551('0x13')]-this['paused'];this[_0xa551('0x18')]=this[_0xa551('0x18')]>=0x0?this[_0xa551('0x18')]:0x0;var _0x1405b4={'id':this['id'],'available':this[_0xa551('0x18')],'loggedIn':this[_0xa551('0x13')],'name':this['name'],'paused':this[_0xa551('0x14')],'waiting':this[_0xa551('0xc')]};var _0x1402e3=md5(JSON['stringify'](_0x1405b4));if(this[_0xa551('0x1')]!==_0x1402e3){this[_0xa551('0x1')]=_0x1402e3;io['to'](util[_0xa551('0x19')](_0xa551('0x1a'),_0x1405b4['name']))[_0xa551('0x1b')](_0xa551('0x1c'),_0x1405b4);}};module[_0xa551('0x1d')]=FaxQueue;
\ No newline at end of file
index ca31b45..77df94a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b6a=['name','exports'];(function(_0xad2d77,_0xbf3e5c){var _0x5b50f4=function(_0x526d7f){while(--_0x526d7f){_0xad2d77['push'](_0xad2d77['shift']());}};_0x5b50f4(++_0xbf3e5c);}(_0x1b6a,0x116));var _0xa1b6=function(_0x298291,_0x140ada){_0x298291=_0x298291-0x0;var _0x563d83=_0x1b6a[_0x298291];return _0x563d83;};'use strict';function Interval(_0x2564aa){this['id']=_0x2564aa['id']||0x0;this['name']=_0x2564aa[_0xa1b6('0x0')]||'';this['Intervals']=_0x2564aa['Intervals']||{};}module[_0xa1b6('0x1')]=Interval;
\ No newline at end of file
+var _0xaa7c=['Intervals','exports','name'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xaa7c,0x155));var _0xcaa7=function(_0x3c87a0,_0x5b0c1f){_0x3c87a0=_0x3c87a0-0x0;var _0x3213f6=_0xaa7c[_0x3c87a0];return _0x3213f6;};'use strict';function Interval(_0x35441f){this['id']=_0x35441f['id']||0x0;this[_0xcaa7('0x0')]=_0x35441f[_0xcaa7('0x0')]||'';this[_0xcaa7('0x1')]=_0x35441f['Intervals']||{};}module[_0xcaa7('0x2')]=Interval;
\ No newline at end of file
index 532add5..7169199 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee80=['../../../config/environment','redis','defaults','localhost','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRouting','updateRealtime','prototype','_rr','map','loggedIn','length','online','paused','available','stringify','format','mail:queue:%s','emit','mail_queue:save','exports','lodash','md5','util','ioredis'];(function(_0x8b631b,_0x386724){var _0x3e6832=function(_0x17a132){while(--_0x17a132){_0x8b631b['push'](_0x8b631b['shift']());}};_0x3e6832(++_0x386724);}(_0xee80,0x1ec));var _0x0ee8=function(_0x2aea9e,_0x1f587f){_0x2aea9e=_0x2aea9e-0x0;var _0x430b92=_0xee80[_0x2aea9e];return _0x430b92;};'use strict';var _=require(_0x0ee8('0x0'));var md5=require(_0x0ee8('0x1'));var util=require(_0x0ee8('0x2'));var Redis=require(_0x0ee8('0x3'));var config=require(_0x0ee8('0x4'));config[_0x0ee8('0x5')]=_[_0x0ee8('0x6')](config[_0x0ee8('0x5')],{'host':_0x0ee8('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x0ee8('0x5')]));function MailQueue(_0x1b9a3f){this['id']=_0x1b9a3f['id']||0x0;this[_0x0ee8('0x8')]=_0x1b9a3f[_0x0ee8('0x8')]||'';this['timeout']=_0x1b9a3f[_0x0ee8('0x9')]||0xa;this['strategy']=_0x1b9a3f[_0x0ee8('0xa')]||_0x0ee8('0xb');this[_0x0ee8('0xc')]=_0x1b9a3f['Agents'];this[_0x0ee8('0xd')]={};this[_0x0ee8('0xe')]=0x0;this['md5']='';this[_0x0ee8('0xf')]();this[_0x0ee8('0x10')]();}MailQueue[_0x0ee8('0x11')][_0x0ee8('0xf')]=function(){var _0x28f34e=this[_0x0ee8('0xd')][_0x0ee8('0x12')];this[_0x0ee8('0xd')]=_[_0x0ee8('0x13')](this[_0x0ee8('0xc')],'id');this[_0x0ee8('0xd')][_0x0ee8('0x12')]=_0x28f34e;};MailQueue['prototype'][_0x0ee8('0x10')]=function(){this[_0x0ee8('0x14')]=0x0;this['paused']=0x0;for(var _0x31a484=0x0;_0x31a484<this[_0x0ee8('0xc')][_0x0ee8('0x15')];_0x31a484+=0x1){if(this[_0x0ee8('0xc')][_0x31a484][_0x0ee8('0x16')]){this[_0x0ee8('0x14')]+=0x1;}if(this['Agents'][_0x31a484]['mailPause']){this[_0x0ee8('0x17')]+=0x1;}}this[_0x0ee8('0x18')]=this[_0x0ee8('0x14')]-this[_0x0ee8('0x17')];this['available']=this['available']>=0x0?this[_0x0ee8('0x18')]:0x0;var _0x20a490={'id':this['id'],'available':this[_0x0ee8('0x18')],'loggedIn':this[_0x0ee8('0x14')],'name':this[_0x0ee8('0x8')],'paused':this[_0x0ee8('0x17')],'waiting':this[_0x0ee8('0xe')]};var _0xb34f10=md5(JSON[_0x0ee8('0x19')](_0x20a490));if(this['md5']!==_0xb34f10){this[_0x0ee8('0x1')]=_0xb34f10;io['to'](util[_0x0ee8('0x1a')](_0x0ee8('0x1b'),_0x20a490[_0x0ee8('0x8')]))[_0x0ee8('0x1c')](_0x0ee8('0x1d'),_0x20a490);}};module[_0x0ee8('0x1e')]=MailQueue;
\ No newline at end of file
+var _0x09cd=['online','mailPause','paused','available','waiting','format','mail:queue:%s','emit','mail_queue:save','exports','md5','util','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','updateRouting','updateRealtime','prototype','_rr','mapAgentsId','loggedIn','length'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x09cd,0xdc));var _0xd09c=function(_0x7df6ca,_0x4cc7b1){_0x7df6ca=_0x7df6ca-0x0;var _0x44d025=_0x09cd[_0x7df6ca];return _0x44d025;};'use strict';var _=require('lodash');var md5=require(_0xd09c('0x0'));var util=require(_0xd09c('0x1'));var Redis=require(_0xd09c('0x2'));var config=require(_0xd09c('0x3'));config[_0xd09c('0x4')]=_[_0xd09c('0x5')](config[_0xd09c('0x4')],{'host':_0xd09c('0x6'),'port':0x18eb});var io=require(_0xd09c('0x7'))(new Redis(config[_0xd09c('0x4')]));function MailQueue(_0xfc4f5f){this['id']=_0xfc4f5f['id']||0x0;this[_0xd09c('0x8')]=_0xfc4f5f[_0xd09c('0x8')]||'';this[_0xd09c('0x9')]=_0xfc4f5f['timeout']||0xa;this['strategy']=_0xfc4f5f[_0xd09c('0xa')]||_0xd09c('0xb');this[_0xd09c('0xc')]=_0xfc4f5f[_0xd09c('0xc')];this['mapAgentsId']={};this['waiting']=0x0;this['md5']='';this[_0xd09c('0xd')]();this[_0xd09c('0xe')]();}MailQueue[_0xd09c('0xf')][_0xd09c('0xd')]=function(){var _0x371fea=this['mapAgentsId'][_0xd09c('0x10')];this[_0xd09c('0x11')]=_['map'](this[_0xd09c('0xc')],'id');this['mapAgentsId'][_0xd09c('0x10')]=_0x371fea;};MailQueue[_0xd09c('0xf')]['updateRealtime']=function(){this[_0xd09c('0x12')]=0x0;this['paused']=0x0;for(var _0x2e75f5=0x0;_0x2e75f5<this[_0xd09c('0xc')][_0xd09c('0x13')];_0x2e75f5+=0x1){if(this[_0xd09c('0xc')][_0x2e75f5][_0xd09c('0x14')]){this['loggedIn']+=0x1;}if(this[_0xd09c('0xc')][_0x2e75f5][_0xd09c('0x15')]){this[_0xd09c('0x16')]+=0x1;}}this[_0xd09c('0x17')]=this[_0xd09c('0x12')]-this[_0xd09c('0x16')];this[_0xd09c('0x17')]=this[_0xd09c('0x17')]>=0x0?this['available']:0x0;var _0x43cd18={'id':this['id'],'available':this[_0xd09c('0x17')],'loggedIn':this[_0xd09c('0x12')],'name':this[_0xd09c('0x8')],'paused':this[_0xd09c('0x16')],'waiting':this[_0xd09c('0x18')]};var _0x5e21ee=md5(JSON['stringify'](_0x43cd18));if(this[_0xd09c('0x0')]!==_0x5e21ee){this[_0xd09c('0x0')]=_0x5e21ee;io['to'](util[_0xd09c('0x19')](_0xd09c('0x1a'),_0x43cd18[_0xd09c('0x8')]))[_0xd09c('0x1b')](_0xd09c('0x1c'),_0x43cd18);}};module[_0xd09c('0x1d')]=MailQueue;
\ No newline at end of file
index ec7e810..e39da92 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x326f=['exports','lodash','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','mapAgentsId','waiting','md5','updateRouting','updateRealtime','Agents','prototype','loggedIn','paused','online','openchannelPause','available','stringify','openchannel:queue:%s','openchannel_queue:save'];(function(_0x5d4607,_0x6b5e7b){var _0x5e4a86=function(_0x46891a){while(--_0x46891a){_0x5d4607['push'](_0x5d4607['shift']());}};_0x5e4a86(++_0x6b5e7b);}(_0x326f,0xd1));var _0xf326=function(_0x5cd838,_0x3a1977){_0x5cd838=_0x5cd838-0x0;var _0x153dd4=_0x326f[_0x5cd838];return _0x153dd4;};'use strict';var _=require(_0xf326('0x0'));var md5=require('md5');var util=require('util');var Redis=require(_0xf326('0x1'));var config=require(_0xf326('0x2'));config[_0xf326('0x3')]=_[_0xf326('0x4')](config[_0xf326('0x3')],{'host':_0xf326('0x5'),'port':0x18eb});var io=require(_0xf326('0x6'))(new Redis(config[_0xf326('0x3')]));function OpenchannelQueue(_0x1b5a56){this['id']=_0x1b5a56['id']||0x0;this[_0xf326('0x7')]=_0x1b5a56['name']||'';this[_0xf326('0x8')]=_0x1b5a56[_0xf326('0x8')]||0xa;this[_0xf326('0x9')]=_0x1b5a56[_0xf326('0x9')]||'beepall';this['Agents']=_0x1b5a56['Agents'];this[_0xf326('0xa')]={};this[_0xf326('0xb')]=0x0;this[_0xf326('0xc')]='';this[_0xf326('0xd')]();this[_0xf326('0xe')]();}OpenchannelQueue['prototype'][_0xf326('0xd')]=function(){var _0x53cbcd=this[_0xf326('0xa')]['_rr'];this[_0xf326('0xa')]=_['map'](this[_0xf326('0xf')],'id');this[_0xf326('0xa')]['_rr']=_0x53cbcd;};OpenchannelQueue[_0xf326('0x10')][_0xf326('0xe')]=function(){this[_0xf326('0x11')]=0x0;this[_0xf326('0x12')]=0x0;for(var _0x5c8483=0x0;_0x5c8483<this[_0xf326('0xf')]['length'];_0x5c8483+=0x1){if(this['Agents'][_0x5c8483][_0xf326('0x13')]){this[_0xf326('0x11')]+=0x1;}if(this[_0xf326('0xf')][_0x5c8483][_0xf326('0x14')]){this[_0xf326('0x12')]+=0x1;}}this[_0xf326('0x15')]=this[_0xf326('0x11')]-this[_0xf326('0x12')];this['available']=this[_0xf326('0x15')]>=0x0?this[_0xf326('0x15')]:0x0;var _0x18bee3={'id':this['id'],'available':this[_0xf326('0x15')],'loggedIn':this[_0xf326('0x11')],'name':this[_0xf326('0x7')],'paused':this['paused'],'waiting':this['waiting']};var _0x56ad41=md5(JSON[_0xf326('0x16')](_0x18bee3));if(this[_0xf326('0xc')]!==_0x56ad41){this['md5']=_0x56ad41;io['to'](util['format'](_0xf326('0x17'),_0x18bee3['name']))['emit'](_0xf326('0x18'),_0x18bee3);}};module[_0xf326('0x19')]=OpenchannelQueue;
\ No newline at end of file
+var _0x1261=['available','stringify','openchannel:queue:%s','openchannel_queue:save','exports','md5','util','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','waiting','updateRouting','prototype','mapAgentsId','map','_rr','updateRealtime','loggedIn','paused','length','online'];(function(_0x465a0c,_0x19d4d5){var _0x1e202e=function(_0x27bd8a){while(--_0x27bd8a){_0x465a0c['push'](_0x465a0c['shift']());}};_0x1e202e(++_0x19d4d5);}(_0x1261,0x144));var _0x1126=function(_0x4d40dd,_0x39592b){_0x4d40dd=_0x4d40dd-0x0;var _0x1c51f2=_0x1261[_0x4d40dd];return _0x1c51f2;};'use strict';var _=require('lodash');var md5=require(_0x1126('0x0'));var util=require(_0x1126('0x1'));var Redis=require(_0x1126('0x2'));var config=require(_0x1126('0x3'));config[_0x1126('0x4')]=_[_0x1126('0x5')](config[_0x1126('0x4')],{'host':_0x1126('0x6'),'port':0x18eb});var io=require(_0x1126('0x7'))(new Redis(config[_0x1126('0x4')]));function OpenchannelQueue(_0x5a2189){this['id']=_0x5a2189['id']||0x0;this['name']=_0x5a2189[_0x1126('0x8')]||'';this[_0x1126('0x9')]=_0x5a2189['timeout']||0xa;this[_0x1126('0xa')]=_0x5a2189[_0x1126('0xa')]||_0x1126('0xb');this[_0x1126('0xc')]=_0x5a2189[_0x1126('0xc')];this['mapAgentsId']={};this[_0x1126('0xd')]=0x0;this[_0x1126('0x0')]='';this[_0x1126('0xe')]();this['updateRealtime']();}OpenchannelQueue[_0x1126('0xf')]['updateRouting']=function(){var _0x52ef15=this[_0x1126('0x10')]['_rr'];this[_0x1126('0x10')]=_[_0x1126('0x11')](this[_0x1126('0xc')],'id');this[_0x1126('0x10')][_0x1126('0x12')]=_0x52ef15;};OpenchannelQueue[_0x1126('0xf')][_0x1126('0x13')]=function(){this[_0x1126('0x14')]=0x0;this[_0x1126('0x15')]=0x0;for(var _0x53a8f0=0x0;_0x53a8f0<this['Agents'][_0x1126('0x16')];_0x53a8f0+=0x1){if(this[_0x1126('0xc')][_0x53a8f0][_0x1126('0x17')]){this['loggedIn']+=0x1;}if(this[_0x1126('0xc')][_0x53a8f0]['openchannelPause']){this[_0x1126('0x15')]+=0x1;}}this[_0x1126('0x18')]=this[_0x1126('0x14')]-this['paused'];this[_0x1126('0x18')]=this[_0x1126('0x18')]>=0x0?this['available']:0x0;var _0x4d2b38={'id':this['id'],'available':this[_0x1126('0x18')],'loggedIn':this[_0x1126('0x14')],'name':this['name'],'paused':this['paused'],'waiting':this[_0x1126('0xd')]};var _0x58b109=md5(JSON[_0x1126('0x19')](_0x4d2b38));if(this[_0x1126('0x0')]!==_0x58b109){this[_0x1126('0x0')]=_0x58b109;io['to'](util['format'](_0x1126('0x1a'),_0x4d2b38['name']))['emit'](_0x1126('0x1b'),_0x4d2b38);}};module[_0x1126('0x1c')]=OpenchannelQueue;
\ No newline at end of file
index 2e67dbb..ec2511a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe64a=['stringify','format','sms_queue:save','exports','lodash','md5','util','ioredis','../../../config/environment','redis','defaults','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRouting','_rr','map','prototype','updateRealtime','paused','length','loggedIn','smsPause','available'];(function(_0x468e16,_0x4b4c73){var _0x45b624=function(_0x9cb20){while(--_0x9cb20){_0x468e16['push'](_0x468e16['shift']());}};_0x45b624(++_0x4b4c73);}(_0xe64a,0x1e0));var _0xae64=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0xe64a[_0x40a045];return _0x1a687c;};'use strict';var _=require(_0xae64('0x0'));var md5=require(_0xae64('0x1'));var util=require(_0xae64('0x2'));var Redis=require(_0xae64('0x3'));var config=require(_0xae64('0x4'));config[_0xae64('0x5')]=_[_0xae64('0x6')](config[_0xae64('0x5')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function SmsQueue(_0x527d9c){this['id']=_0x527d9c['id']||0x0;this[_0xae64('0x7')]=_0x527d9c[_0xae64('0x7')]||'';this[_0xae64('0x8')]=_0x527d9c[_0xae64('0x8')]||0xa;this[_0xae64('0x9')]=_0x527d9c[_0xae64('0x9')]||_0xae64('0xa');this[_0xae64('0xb')]=_0x527d9c[_0xae64('0xb')];this[_0xae64('0xc')]={};this[_0xae64('0xd')]=0x0;this['md5']='';this[_0xae64('0xe')]();this['updateRealtime']();}SmsQueue['prototype'][_0xae64('0xe')]=function(){var _0x32fca7=this[_0xae64('0xc')][_0xae64('0xf')];this['mapAgentsId']=_[_0xae64('0x10')](this['Agents'],'id');this['mapAgentsId'][_0xae64('0xf')]=_0x32fca7;};SmsQueue[_0xae64('0x11')][_0xae64('0x12')]=function(){this['loggedIn']=0x0;this[_0xae64('0x13')]=0x0;for(var _0x760b31=0x0;_0x760b31<this[_0xae64('0xb')][_0xae64('0x14')];_0x760b31+=0x1){if(this[_0xae64('0xb')][_0x760b31]['online']){this[_0xae64('0x15')]+=0x1;}if(this[_0xae64('0xb')][_0x760b31][_0xae64('0x16')]){this[_0xae64('0x13')]+=0x1;}}this[_0xae64('0x17')]=this['loggedIn']-this[_0xae64('0x13')];this[_0xae64('0x17')]=this[_0xae64('0x17')]>=0x0?this[_0xae64('0x17')]:0x0;var _0x2500f1={'id':this['id'],'available':this[_0xae64('0x17')],'loggedIn':this[_0xae64('0x15')],'name':this[_0xae64('0x7')],'paused':this['paused'],'waiting':this[_0xae64('0xd')]};var _0x3528c2=md5(JSON[_0xae64('0x18')](_0x2500f1));if(this[_0xae64('0x1')]!==_0x3528c2){this[_0xae64('0x1')]=_0x3528c2;io['to'](util[_0xae64('0x19')]('sms:queue:%s',_0x2500f1[_0xae64('0x7')]))['emit'](_0xae64('0x1a'),_0x2500f1);}};module[_0xae64('0x1b')]=SmsQueue;
\ No newline at end of file
+var _0x3645=['mapAgentsId','waiting','updateRouting','updateRealtime','prototype','_rr','loggedIn','length','online','available','paused','stringify','format','sms:queue:%s','emit','sms_queue:save','md5','util','ioredis','../../../config/environment','redis','defaults','socket.io-emitter','name','timeout','strategy','Agents'];(function(_0x195a25,_0x270e7b){var _0x5d9257=function(_0x3f2da9){while(--_0x3f2da9){_0x195a25['push'](_0x195a25['shift']());}};_0x5d9257(++_0x270e7b);}(_0x3645,0x154));var _0x5364=function(_0x3f6bcf,_0x531e79){_0x3f6bcf=_0x3f6bcf-0x0;var _0x1c5350=_0x3645[_0x3f6bcf];return _0x1c5350;};'use strict';var _=require('lodash');var md5=require(_0x5364('0x0'));var util=require(_0x5364('0x1'));var Redis=require(_0x5364('0x2'));var config=require(_0x5364('0x3'));config[_0x5364('0x4')]=_[_0x5364('0x5')](config[_0x5364('0x4')],{'host':'localhost','port':0x18eb});var io=require(_0x5364('0x6'))(new Redis(config[_0x5364('0x4')]));function SmsQueue(_0x11722c){this['id']=_0x11722c['id']||0x0;this[_0x5364('0x7')]=_0x11722c[_0x5364('0x7')]||'';this[_0x5364('0x8')]=_0x11722c[_0x5364('0x8')]||0xa;this[_0x5364('0x9')]=_0x11722c[_0x5364('0x9')]||'beepall';this[_0x5364('0xa')]=_0x11722c[_0x5364('0xa')];this[_0x5364('0xb')]={};this[_0x5364('0xc')]=0x0;this[_0x5364('0x0')]='';this[_0x5364('0xd')]();this[_0x5364('0xe')]();}SmsQueue[_0x5364('0xf')][_0x5364('0xd')]=function(){var _0x11a64d=this[_0x5364('0xb')][_0x5364('0x10')];this[_0x5364('0xb')]=_['map'](this[_0x5364('0xa')],'id');this[_0x5364('0xb')][_0x5364('0x10')]=_0x11a64d;};SmsQueue[_0x5364('0xf')]['updateRealtime']=function(){this[_0x5364('0x11')]=0x0;this['paused']=0x0;for(var _0x3aa29e=0x0;_0x3aa29e<this['Agents'][_0x5364('0x12')];_0x3aa29e+=0x1){if(this[_0x5364('0xa')][_0x3aa29e][_0x5364('0x13')]){this[_0x5364('0x11')]+=0x1;}if(this[_0x5364('0xa')][_0x3aa29e]['smsPause']){this['paused']+=0x1;}}this[_0x5364('0x14')]=this[_0x5364('0x11')]-this[_0x5364('0x15')];this[_0x5364('0x14')]=this[_0x5364('0x14')]>=0x0?this[_0x5364('0x14')]:0x0;var _0x20c22c={'id':this['id'],'available':this[_0x5364('0x14')],'loggedIn':this[_0x5364('0x11')],'name':this['name'],'paused':this[_0x5364('0x15')],'waiting':this[_0x5364('0xc')]};var _0x3705d0=md5(JSON[_0x5364('0x16')](_0x20c22c));if(this[_0x5364('0x0')]!==_0x3705d0){this[_0x5364('0x0')]=_0x3705d0;io['to'](util[_0x5364('0x17')](_0x5364('0x18'),_0x20c22c[_0x5364('0x7')]))[_0x5364('0x19')](_0x5364('0x1a'),_0x20c22c);}};module['exports']=SmsQueue;
\ No newline at end of file
index a2f9731..38a9116 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3321=['length','available','stringify','format','whatsapp:queue:%s','exports','lodash','md5','util','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','waiting','updateRealtime','prototype','updateRouting','_rr','mapAgentsId','map','loggedIn','paused'];(function(_0x456c80,_0x2f5583){var _0x504daf=function(_0x22894e){while(--_0x22894e){_0x456c80['push'](_0x456c80['shift']());}};_0x504daf(++_0x2f5583);}(_0x3321,0x8d));var _0x1332=function(_0x337f80,_0x54c51f){_0x337f80=_0x337f80-0x0;var _0xa7b3c9=_0x3321[_0x337f80];return _0xa7b3c9;};'use strict';var _=require(_0x1332('0x0'));var md5=require(_0x1332('0x1'));var util=require(_0x1332('0x2'));var Redis=require('ioredis');var config=require('../../../config/environment');config[_0x1332('0x3')]=_[_0x1332('0x4')](config[_0x1332('0x3')],{'host':_0x1332('0x5'),'port':0x18eb});var io=require(_0x1332('0x6'))(new Redis(config['redis']));function WhatsappQueue(_0x1066ff){this['id']=_0x1066ff['id']||0x0;this[_0x1332('0x7')]=_0x1066ff['name']||'';this['timeout']=_0x1066ff[_0x1332('0x8')]||0xa;this[_0x1332('0x9')]=_0x1066ff[_0x1332('0x9')]||_0x1332('0xa');this[_0x1332('0xb')]=_0x1066ff[_0x1332('0xb')];this['mapAgentsId']={};this[_0x1332('0xc')]=0x0;this[_0x1332('0x1')]='';this['updateRouting']();this[_0x1332('0xd')]();}WhatsappQueue[_0x1332('0xe')][_0x1332('0xf')]=function(){var _0x291cd4=this['mapAgentsId'][_0x1332('0x10')];this[_0x1332('0x11')]=_[_0x1332('0x12')](this['Agents'],'id');this[_0x1332('0x11')][_0x1332('0x10')]=_0x291cd4;};WhatsappQueue['prototype']['updateRealtime']=function(){this[_0x1332('0x13')]=0x0;this[_0x1332('0x14')]=0x0;for(var _0x41fbe0=0x0;_0x41fbe0<this[_0x1332('0xb')][_0x1332('0x15')];_0x41fbe0+=0x1){if(this[_0x1332('0xb')][_0x41fbe0]['online']){this[_0x1332('0x13')]+=0x1;}if(this[_0x1332('0xb')][_0x41fbe0]['whatsappPause']){this[_0x1332('0x14')]+=0x1;}}this[_0x1332('0x16')]=this[_0x1332('0x13')]-this[_0x1332('0x14')];this[_0x1332('0x16')]=this[_0x1332('0x16')]>=0x0?this[_0x1332('0x16')]:0x0;var _0x49579d={'id':this['id'],'available':this[_0x1332('0x16')],'loggedIn':this[_0x1332('0x13')],'name':this[_0x1332('0x7')],'paused':this['paused'],'waiting':this[_0x1332('0xc')]};var _0x28428f=md5(JSON[_0x1332('0x17')](_0x49579d));if(this['md5']!==_0x28428f){this[_0x1332('0x1')]=_0x28428f;io['to'](util[_0x1332('0x18')](_0x1332('0x19'),_0x49579d[_0x1332('0x7')]))['emit']('whatsapp_queue:save',_0x49579d);}};module[_0x1332('0x1a')]=WhatsappQueue;
\ No newline at end of file
+var _0x5e09=['name','timeout','strategy','beepall','Agents','waiting','updateRouting','updateRealtime','prototype','mapAgentsId','_rr','map','loggedIn','paused','online','whatsappPause','available','stringify','format','whatsapp:queue:%s','whatsapp_queue:save','exports','lodash','md5','util','ioredis','../../../config/environment','socket.io-emitter','redis'];(function(_0xfa512f,_0x5ca928){var _0x42bfad=function(_0x31a883){while(--_0x31a883){_0xfa512f['push'](_0xfa512f['shift']());}};_0x42bfad(++_0x5ca928);}(_0x5e09,0xe1));var _0x95e0=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x5e09[_0x122ef9];return _0x42fba0;};'use strict';var _=require(_0x95e0('0x0'));var md5=require(_0x95e0('0x1'));var util=require(_0x95e0('0x2'));var Redis=require(_0x95e0('0x3'));var config=require(_0x95e0('0x4'));config['redis']=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x95e0('0x5'))(new Redis(config[_0x95e0('0x6')]));function WhatsappQueue(_0x1e68dd){this['id']=_0x1e68dd['id']||0x0;this[_0x95e0('0x7')]=_0x1e68dd[_0x95e0('0x7')]||'';this[_0x95e0('0x8')]=_0x1e68dd['timeout']||0xa;this[_0x95e0('0x9')]=_0x1e68dd[_0x95e0('0x9')]||_0x95e0('0xa');this['Agents']=_0x1e68dd[_0x95e0('0xb')];this['mapAgentsId']={};this[_0x95e0('0xc')]=0x0;this[_0x95e0('0x1')]='';this[_0x95e0('0xd')]();this[_0x95e0('0xe')]();}WhatsappQueue[_0x95e0('0xf')][_0x95e0('0xd')]=function(){var _0x28482a=this[_0x95e0('0x10')][_0x95e0('0x11')];this['mapAgentsId']=_[_0x95e0('0x12')](this[_0x95e0('0xb')],'id');this[_0x95e0('0x10')][_0x95e0('0x11')]=_0x28482a;};WhatsappQueue['prototype'][_0x95e0('0xe')]=function(){this[_0x95e0('0x13')]=0x0;this[_0x95e0('0x14')]=0x0;for(var _0x589f7f=0x0;_0x589f7f<this[_0x95e0('0xb')]['length'];_0x589f7f+=0x1){if(this[_0x95e0('0xb')][_0x589f7f][_0x95e0('0x15')]){this['loggedIn']+=0x1;}if(this[_0x95e0('0xb')][_0x589f7f][_0x95e0('0x16')]){this[_0x95e0('0x14')]+=0x1;}}this['available']=this[_0x95e0('0x13')]-this[_0x95e0('0x14')];this['available']=this[_0x95e0('0x17')]>=0x0?this[_0x95e0('0x17')]:0x0;var _0x2687fa={'id':this['id'],'available':this[_0x95e0('0x17')],'loggedIn':this[_0x95e0('0x13')],'name':this[_0x95e0('0x7')],'paused':this[_0x95e0('0x14')],'waiting':this[_0x95e0('0xc')]};var _0x54c5cd=md5(JSON[_0x95e0('0x18')](_0x2687fa));if(this[_0x95e0('0x1')]!==_0x54c5cd){this[_0x95e0('0x1')]=_0x54c5cd;io['to'](util[_0x95e0('0x19')](_0x95e0('0x1a'),_0x2687fa[_0x95e0('0x7')]))['emit'](_0x95e0('0x1b'),_0x2687fa);}};module[_0x95e0('0x1c')]=WhatsappQueue;
\ No newline at end of file
index 2ea2627..39142f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['isUndefined','initIntervals','updateRealtime','updateRouting','initSmsQueues','smsQueues','initMailQueues','mailQueues','initWhatsappQueues','whatsappQueues','exports','bluebird','util','lodash','../model/interval','../model/chatQueue','../model/smsQueue','../model/mailQueue','../model/faxQueue','../model/whatsappQueue','intervals','openchannelQueues','chatQueues','faxQueues','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','hasOwnProperty','prototype','mergeFromDatabase','initAgents','agents','length'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5447fd,_0x52a6b5){_0x5447fd=_0x5447fd-0x0;var _0x15b28a=_0xa9e0[_0x5447fd];return _0x15b28a;};'use strict';var BPromise=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var _=require(_0x0a9e('0x2'));var moment=require('moment');var Agent=require('../model/agent');var Interval=require(_0x0a9e('0x3'));var OpenchannelQueue=require('../model/openchannelQueue');var ChatQueue=require(_0x0a9e('0x4'));var SmsQueue=require(_0x0a9e('0x5'));var MailQueue=require(_0x0a9e('0x6'));var FaxQueue=require(_0x0a9e('0x7'));var WhatsappQueue=require(_0x0a9e('0x8'));var Realtime=function(){this['agents']={};this[_0x0a9e('0x9')]={};this[_0x0a9e('0xa')]={};this[_0x0a9e('0xb')]={};this['smsQueues']={};this['mailQueues']={};this[_0x0a9e('0xc')]={};this['whatsappQueues']={};this['chatQueuesWaitingInteractions']={};this[_0x0a9e('0xd')]={};this[_0x0a9e('0xe')]={};this[_0x0a9e('0xf')]={};this[_0x0a9e('0x10')]={};this[_0x0a9e('0x11')]={};};function freeIsNotKey(_0xbd1168,_0x4a4c56,_0x50dfb2){var _0x527cdd=_['mapKeys'](_0xbd1168,function(_0x273d4d,_0x36471c){return _0x273d4d[_0x50dfb2];});for(var _0xd5b662 in _0x4a4c56){if(_0x4a4c56[_0x0a9e('0x12')](_0xd5b662)){if(!_0x527cdd[_0xd5b662]){delete _0x4a4c56[_0xd5b662];}}}}Realtime[_0x0a9e('0x13')][_0x0a9e('0x14')]=function(_0x5db4b0,_0x4283ce){for(var _0x239b12 in _0x4283ce){if(_0x5db4b0[_0x0a9e('0x12')](_0x239b12)){_0x5db4b0[_0x239b12]=_0x4283ce[_0x239b12];}}};Realtime[_0x0a9e('0x13')][_0x0a9e('0x15')]=function(){var _0x4d5611=this;return function(_0x52a03d){if(_0x52a03d){freeIsNotKey(_0x52a03d,_0x4d5611[_0x0a9e('0x16')],'id');for(var _0x5d0880=0x0,_0x1985b6={},_0x519dfd={};_0x5d0880<_0x52a03d[_0x0a9e('0x17')];_0x5d0880+=0x1){_0x1985b6=_0x52a03d[_0x5d0880];if(_[_0x0a9e('0x18')](_0x4d5611['agents'][_0x1985b6['id']])){_0x4d5611[_0x0a9e('0x16')][_0x1985b6['id']]=new Agent(_0x1985b6);}else{_0x4d5611['mergeFromDatabase'](_0x4d5611[_0x0a9e('0x16')][_0x1985b6['id']],_0x1985b6);}}}return _0x4d5611[_0x0a9e('0x16')];};};Realtime[_0x0a9e('0x13')][_0x0a9e('0x19')]=function(){var _0x31b1ca=this;return function(_0x2eb11f){if(_0x2eb11f){freeIsNotKey(_0x2eb11f,_0x31b1ca[_0x0a9e('0x9')],'id');for(var _0x20559e=0x0,_0x1314ae={},_0x112016={};_0x20559e<_0x2eb11f[_0x0a9e('0x17')];_0x20559e+=0x1){_0x1314ae=_0x2eb11f[_0x20559e];if(_[_0x0a9e('0x18')](_0x31b1ca['intervals'][_0x1314ae['id']])){_0x31b1ca[_0x0a9e('0x9')][_0x1314ae['id']]=new Interval(_0x1314ae);}else{_0x31b1ca[_0x0a9e('0x14')](_0x31b1ca['intervals'][_0x1314ae['id']],_0x1314ae);}}}return _0x31b1ca[_0x0a9e('0x9')];};};Realtime['prototype']['initOpenchannelQueues']=function(){var _0x3a02e1=this;return function(_0x432e56){if(_0x432e56){freeIsNotKey(_0x432e56,_0x3a02e1[_0x0a9e('0xa')],'id');for(var _0x30bae6=0x0,_0x4abc77={},_0xfb6e48={};_0x30bae6<_0x432e56[_0x0a9e('0x17')];_0x30bae6+=0x1){_0x4abc77=_0x432e56[_0x30bae6];if(_[_0x0a9e('0x18')](_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']])){_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']]=new OpenchannelQueue(_0x4abc77);}else{_0x3a02e1[_0x0a9e('0x14')](_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']],_0x4abc77);}_0x3a02e1['openchannelQueues'][_0x4abc77['id']]['updateRouting']();_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']][_0x0a9e('0x1a')]();}}return _0x3a02e1[_0x0a9e('0xa')];};};Realtime[_0x0a9e('0x13')]['initChatQueues']=function(){var _0x384319=this;return function(_0x479bc4){if(_0x479bc4){freeIsNotKey(_0x479bc4,_0x384319[_0x0a9e('0xb')],'id');for(var _0x5bfb33=0x0,_0x1dc186={},_0x34dc65={};_0x5bfb33<_0x479bc4[_0x0a9e('0x17')];_0x5bfb33+=0x1){_0x1dc186=_0x479bc4[_0x5bfb33];if(_[_0x0a9e('0x18')](_0x384319[_0x0a9e('0xb')][_0x1dc186['id']])){_0x384319[_0x0a9e('0xb')][_0x1dc186['id']]=new ChatQueue(_0x1dc186);}else{_0x384319[_0x0a9e('0x14')](_0x384319[_0x0a9e('0xb')][_0x1dc186['id']],_0x1dc186);}_0x384319['chatQueues'][_0x1dc186['id']][_0x0a9e('0x1b')]();_0x384319[_0x0a9e('0xb')][_0x1dc186['id']][_0x0a9e('0x1a')]();}}return _0x384319[_0x0a9e('0xb')];};};Realtime['prototype'][_0x0a9e('0x1c')]=function(){var _0x40e7a3=this;return function(_0x1843b2){if(_0x1843b2){freeIsNotKey(_0x1843b2,_0x40e7a3[_0x0a9e('0x1d')],'id');for(var _0x58b06f=0x0,_0x563b45={},_0x296f41={};_0x58b06f<_0x1843b2[_0x0a9e('0x17')];_0x58b06f+=0x1){_0x563b45=_0x1843b2[_0x58b06f];if(_[_0x0a9e('0x18')](_0x40e7a3['smsQueues'][_0x563b45['id']])){_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']]=new SmsQueue(_0x563b45);}else{_0x40e7a3['mergeFromDatabase'](_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']],_0x563b45);}_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']][_0x0a9e('0x1b')]();_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']][_0x0a9e('0x1a')]();}}return _0x40e7a3['smsQueues'];};};Realtime[_0x0a9e('0x13')][_0x0a9e('0x1e')]=function(){var _0x40cb85=this;return function(_0x2da5c0){if(_0x2da5c0){freeIsNotKey(_0x2da5c0,_0x40cb85[_0x0a9e('0x1f')],'id');for(var _0x409319=0x0,_0x332d35={},_0x39e565={};_0x409319<_0x2da5c0['length'];_0x409319+=0x1){_0x332d35=_0x2da5c0[_0x409319];if(_[_0x0a9e('0x18')](_0x40cb85['mailQueues'][_0x332d35['id']])){_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']]=new MailQueue(_0x332d35);}else{_0x40cb85[_0x0a9e('0x14')](_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']],_0x332d35);}_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']]['updateRouting']();_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']][_0x0a9e('0x1a')]();}}return _0x40cb85[_0x0a9e('0x1f')];};};Realtime[_0x0a9e('0x13')]['initFaxQueues']=function(){var _0x54135e=this;return function(_0x1e8694){if(_0x1e8694){freeIsNotKey(_0x1e8694,_0x54135e['faxQueues'],'id');for(var _0x24936a=0x0,_0x3d9717={},_0x381c37={};_0x24936a<_0x1e8694[_0x0a9e('0x17')];_0x24936a+=0x1){_0x3d9717=_0x1e8694[_0x24936a];if(_['isUndefined'](_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']])){_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']]=new FaxQueue(_0x3d9717);}else{_0x54135e[_0x0a9e('0x14')](_0x54135e['faxQueues'][_0x3d9717['id']],_0x3d9717);}_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']][_0x0a9e('0x1b')]();_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']]['updateRealtime']();}}return _0x54135e['faxQueues'];};};Realtime[_0x0a9e('0x13')][_0x0a9e('0x20')]=function(){var _0x5adda1=this;return function(_0x2b814e){if(_0x2b814e){freeIsNotKey(_0x2b814e,_0x5adda1[_0x0a9e('0x21')],'id');for(var _0x2e1b3a=0x0,_0x148f55={},_0x4b38d9={};_0x2e1b3a<_0x2b814e['length'];_0x2e1b3a+=0x1){_0x148f55=_0x2b814e[_0x2e1b3a];if(_[_0x0a9e('0x18')](_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']])){_0x5adda1['whatsappQueues'][_0x148f55['id']]=new WhatsappQueue(_0x148f55);}else{_0x5adda1[_0x0a9e('0x14')](_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']],_0x148f55);}_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']]['updateRouting']();_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']][_0x0a9e('0x1a')]();}}return _0x5adda1[_0x0a9e('0x21')];};};module[_0x0a9e('0x22')]=Realtime;
\ No newline at end of file
+var _0xa9e0=['isUndefined','initIntervals','updateRealtime','updateRouting','initSmsQueues','smsQueues','initMailQueues','mailQueues','initWhatsappQueues','whatsappQueues','exports','bluebird','util','lodash','../model/interval','../model/chatQueue','../model/smsQueue','../model/mailQueue','../model/faxQueue','../model/whatsappQueue','intervals','openchannelQueues','chatQueues','faxQueues','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','hasOwnProperty','prototype','mergeFromDatabase','initAgents','agents','length'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3c4737,_0x2329ec){_0x3c4737=_0x3c4737-0x0;var _0x2bb926=_0xa9e0[_0x3c4737];return _0x2bb926;};'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 d9ce400..7f2914c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x10d6=['addTags','Request','AddTagsToChatInteraction','addTagsToChatInteraction','update','updateChatInteraction'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x10d6,0x154));var _0x610d=function(_0x1d3e3a,_0x131fd2){_0x1d3e3a=_0x1d3e3a-0x0;var _0x522f54=_0x10d6[_0x1d3e3a];return _0x522f54;};'use strict';var client=require('../client');exports[_0x610d('0x0')]=function(_0x2fed0f,_0x10dd2c){return client['Request']('UpdateChatInteraction',{'body':_0x10dd2c,'options':{'where':{'id':_0x2fed0f}},'log':_0x610d('0x1')});};exports[_0x610d('0x2')]=function(_0x2d8e7a,_0xb824b7){return client[_0x610d('0x3')](_0x610d('0x4'),{'body':_0xb824b7,'options':{'where':{'id':_0x2d8e7a}},'log':_0x610d('0x5')});};
\ No newline at end of file
+var _0xfea4=['addTags','../client','update','Request','UpdateChatInteraction'];(function(_0x8988af,_0x5b57b1){var _0x43e4d6=function(_0xbaead4){while(--_0xbaead4){_0x8988af['push'](_0x8988af['shift']());}};_0x43e4d6(++_0x5b57b1);}(_0xfea4,0xe2));var _0x4fea=function(_0x254b22,_0x27159f){_0x254b22=_0x254b22-0x0;var _0x1279db=_0xfea4[_0x254b22];return _0x1279db;};'use strict';var client=require(_0x4fea('0x0'));exports[_0x4fea('0x1')]=function(_0x3cad5c,_0xe33e6a){return client[_0x4fea('0x2')](_0x4fea('0x3'),{'body':_0xe33e6a,'options':{'where':{'id':_0x3cad5c}},'log':'updateChatInteraction'});};exports[_0x4fea('0x4')]=function(_0x26701e,_0x5e0869){return client[_0x4fea('0x2')]('AddTagsToChatInteraction',{'body':_0x5e0869,'options':{'where':{'id':_0x26701e}},'log':'addTagsToChatInteraction'});};
\ No newline at end of file
index ac032ff..8cbc88b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc51b=['../client','CreateChatMessage','createChatMessage'];(function(_0x31a10d,_0x29b092){var _0x5911ab=function(_0x69a1ca){while(--_0x69a1ca){_0x31a10d['push'](_0x31a10d['shift']());}};_0x5911ab(++_0x29b092);}(_0xc51b,0xc6));var _0xbc51=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xc51b[_0x3dd15e];return _0x231fd0;};'use strict';var client=require(_0xbc51('0x0'));exports['create']=function(_0x26c9ec){return client['Request'](_0xbc51('0x1'),{'body':_0x26c9ec,'log':_0xbc51('0x2')});};
\ No newline at end of file
+var _0xb2d5=['create','Request','CreateChatMessage','createChatMessage'];(function(_0x4a310d,_0x33322d){var _0x5eaf36=function(_0x233014){while(--_0x233014){_0x4a310d['push'](_0x4a310d['shift']());}};_0x5eaf36(++_0x33322d);}(_0xb2d5,0x144));var _0x5b2d=function(_0x47ca9b,_0xbd2b7a){_0x47ca9b=_0x47ca9b-0x0;var _0x38eead=_0xb2d5[_0x47ca9b];return _0x38eead;};'use strict';var client=require('../client');exports[_0x5b2d('0x0')]=function(_0x509e14){return client[_0x5b2d('0x1')](_0x5b2d('0x2'),{'body':_0x509e14,'log':_0x5b2d('0x3')});};
\ No newline at end of file
index 0d8fb14..42a51a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7dfd=['getChatQueues','Request','GetChatQueue','name','timeout','strategy','User','Agents','online','chatPause','../client'];(function(_0x37c5f7,_0x1d7bd6){var _0x239ffc=function(_0x55d097){while(--_0x55d097){_0x37c5f7['push'](_0x37c5f7['shift']());}};_0x239ffc(++_0x1d7bd6);}(_0x7dfd,0x1c2));var _0xd7df=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7dfd[_0x3dd15e];return _0x231fd0;};'use strict';var client=require(_0xd7df('0x0'));exports[_0xd7df('0x1')]=function(){return function(){return client[_0xd7df('0x2')](_0xd7df('0x3'),{'options':{'raw':![],'attributes':['id',_0xd7df('0x4'),_0xd7df('0x5'),_0xd7df('0x6')],'include':[{'model':_0xd7df('0x7'),'as':_0xd7df('0x8'),'attributes':['id',_0xd7df('0x4'),_0xd7df('0x9'),_0xd7df('0xa')]}]},'log':_0xd7df('0x1')});};};
\ No newline at end of file
+var _0x27a8=['name','timeout','strategy','User','Agents','online','chatPause','getChatQueues','Request','GetChatQueue'];(function(_0x15fc3c,_0x35665b){var _0x94c5c8=function(_0xbab268){while(--_0xbab268){_0x15fc3c['push'](_0x15fc3c['shift']());}};_0x94c5c8(++_0x35665b);}(_0x27a8,0x170));var _0x827a=function(_0x266881,_0x27d9fa){_0x266881=_0x266881-0x0;var _0x51dde3=_0x27a8[_0x266881];return _0x51dde3;};'use strict';var client=require('../client');exports['getChatQueues']=function(){return function(){return client[_0x827a('0x0')](_0x827a('0x1'),{'options':{'raw':![],'attributes':['id',_0x827a('0x2'),_0x827a('0x3'),_0x827a('0x4')],'include':[{'model':_0x827a('0x5'),'as':_0x827a('0x6'),'attributes':['id',_0x827a('0x2'),_0x827a('0x7'),_0x827a('0x8')]}]},'log':_0x827a('0x9')});};};
\ No newline at end of file
index a686561..07b3590 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2830=['create','Request','CreateChatQueueReport','update','UpdateChatQueueReport','DESC','../client'];(function(_0x10ef02,_0x14de7d){var _0x5c624e=function(_0x1a9b31){while(--_0x1a9b31){_0x10ef02['push'](_0x10ef02['shift']());}};_0x5c624e(++_0x14de7d);}(_0x2830,0x117));var _0x0283=function(_0x1ea439,_0x13bac7){_0x1ea439=_0x1ea439-0x0;var _0x8943d9=_0x2830[_0x1ea439];return _0x8943d9;};'use strict';var client=require(_0x0283('0x0'));exports[_0x0283('0x1')]=function(_0x4ee0cd){return client[_0x0283('0x2')](_0x0283('0x3'),{'body':_0x4ee0cd,'log':_0x0283('0x3')});};exports[_0x0283('0x4')]=function(_0x56984a,_0x414c89){return client['Request'](_0x0283('0x5'),{'body':_0x414c89,'options':{'where':{'uniqueid':_0x56984a},'order':[['id',_0x0283('0x6')]],'limit':0x1},'log':_0x0283('0x5')});};
\ No newline at end of file
+var _0x5455=['Request','CreateChatQueueReport','update','UpdateChatQueueReport','DESC','create'];(function(_0x59df2c,_0x471d13){var _0x537dc0=function(_0x6d1e1){while(--_0x6d1e1){_0x59df2c['push'](_0x59df2c['shift']());}};_0x537dc0(++_0x471d13);}(_0x5455,0x197));var _0x5545=function(_0x160c73,_0x2ee678){_0x160c73=_0x160c73-0x0;var _0xd9302=_0x5455[_0x160c73];return _0xd9302;};'use strict';var client=require('../client');exports[_0x5545('0x0')]=function(_0x29df31){return client[_0x5545('0x1')](_0x5545('0x2'),{'body':_0x29df31,'log':_0x5545('0x2')});};exports[_0x5545('0x3')]=function(_0x39db57,_0x4cd466){return client['Request'](_0x5545('0x4'),{'body':_0x4cd466,'options':{'where':{'uniqueid':_0x39db57},'order':[['id',_0x5545('0x5')]],'limit':0x1},'log':'UpdateChatQueueReport'});};
\ No newline at end of file
index 1faddc9..45b5bb4 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(_0x5e3bda,_0x108667){var _0x3f02cf=function(_0x1faab9){while(--_0x1faab9){_0x5e3bda['push'](_0x5e3bda['shift']());}};_0x3f02cf(++_0x108667);}(_0x9957,0x93));var _0x7995=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x9957[_0x1facfa];return _0x9ec701;};'use strict';var client=require(_0x7995('0x0'));exports[_0x7995('0x1')]=function(_0x2722a3,_0x10a05d){return client['Request'](_0x7995('0x2'),{'body':_0x10a05d,'options':{'where':{'id':_0x2722a3}},'log':_0x7995('0x3')});};exports[_0x7995('0x4')]=function(_0x462a03,_0x576d89){return client[_0x7995('0x5')](_0x7995('0x6'),{'body':_0x576d89,'options':{'where':{'id':_0x462a03}},'log':_0x7995('0x7')});};
\ No newline at end of file
+var _0x7a54=['Request','UpdateFaxInteraction','addTags','AddTagsToFaxInteraction','../client','update'];(function(_0x57d370,_0x3ed0f6){var _0x550fd2=function(_0x59634f){while(--_0x59634f){_0x57d370['push'](_0x57d370['shift']());}};_0x550fd2(++_0x3ed0f6);}(_0x7a54,0x106));var _0x47a5=function(_0x13fecb,_0x2d1936){_0x13fecb=_0x13fecb-0x0;var _0x17189d=_0x7a54[_0x13fecb];return _0x17189d;};'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 6e66c4a..9584474 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xebb6=['../client','create','createFaxMessage'];(function(_0x2dcdb3,_0x5adc3f){var _0x35db38=function(_0x2fd230){while(--_0x2fd230){_0x2dcdb3['push'](_0x2dcdb3['shift']());}};_0x35db38(++_0x5adc3f);}(_0xebb6,0x114));var _0x6ebb=function(_0x9df060,_0x253d33){_0x9df060=_0x9df060-0x0;var _0x338dfe=_0xebb6[_0x9df060];return _0x338dfe;};'use strict';var client=require(_0x6ebb('0x0'));exports[_0x6ebb('0x1')]=function(_0x94241d){return client['Request']('CreateFaxMessage',{'body':_0x94241d,'log':_0x6ebb('0x2')});};
\ No newline at end of file
+var _0x3eda=['../client','create','Request','CreateFaxMessage','createFaxMessage'];(function(_0x493df0,_0x3808fe){var _0x4b6a03=function(_0x4a4228){while(--_0x4a4228){_0x493df0['push'](_0x493df0['shift']());}};_0x4b6a03(++_0x3808fe);}(_0x3eda,0x1ea));var _0xa3ed=function(_0x5dea89,_0x184aa5){_0x5dea89=_0x5dea89-0x0;var _0x58f3eb=_0x3eda[_0x5dea89];return _0x58f3eb;};'use strict';var client=require(_0xa3ed('0x0'));exports[_0xa3ed('0x1')]=function(_0x44622c){return client[_0xa3ed('0x2')](_0xa3ed('0x3'),{'body':_0x44622c,'log':_0xa3ed('0x4')});};
\ No newline at end of file
index 85de866..3ad6f06 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4816=['faxPause','getFaxQueues','Request','GetFaxQueue','name','timeout','strategy','User','Agents','online'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x4816,0xd3));var _0x6481=function(_0x2d4fee,_0xc38b94){_0x2d4fee=_0x2d4fee-0x0;var _0x265b33=_0x4816[_0x2d4fee];return _0x265b33;};'use strict';var client=require('../client');exports[_0x6481('0x0')]=function(){return function(){return client[_0x6481('0x1')](_0x6481('0x2'),{'options':{'raw':![],'attributes':['id',_0x6481('0x3'),_0x6481('0x4'),_0x6481('0x5')],'include':[{'model':_0x6481('0x6'),'as':_0x6481('0x7'),'attributes':['id',_0x6481('0x3'),_0x6481('0x8'),_0x6481('0x9')]}]},'log':'getFaxQueues'});};};
\ No newline at end of file
+var _0x8684=['online','faxPause','../client','getFaxQueues','GetFaxQueue','name','Agents'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x8684,0x159));var _0x4868=function(_0x1e152a,_0x32d0a9){_0x1e152a=_0x1e152a-0x0;var _0x1ecc0e=_0x8684[_0x1e152a];return _0x1ecc0e;};'use strict';var client=require(_0x4868('0x0'));exports[_0x4868('0x1')]=function(){return function(){return client['Request'](_0x4868('0x2'),{'options':{'raw':![],'attributes':['id',_0x4868('0x3'),'timeout','strategy'],'include':[{'model':'User','as':_0x4868('0x4'),'attributes':['id','name',_0x4868('0x5'),_0x4868('0x6')]}]},'log':_0x4868('0x1')});};};
\ No newline at end of file
index ac34f9d..2c32bab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9669=['create','Request','CreateFaxQueueReport','update','UpdateFaxQueueReport'];(function(_0x11005e,_0x20c3d2){var _0x29338f=function(_0x3384e9){while(--_0x3384e9){_0x11005e['push'](_0x11005e['shift']());}};_0x29338f(++_0x20c3d2);}(_0x9669,0x6e));var _0x9966=function(_0x5598ae,_0x323337){_0x5598ae=_0x5598ae-0x0;var _0x1fba4d=_0x9669[_0x5598ae];return _0x1fba4d;};'use strict';var client=require('../client');exports[_0x9966('0x0')]=function(_0x4c9b89){return client[_0x9966('0x1')](_0x9966('0x2'),{'body':_0x4c9b89,'log':_0x9966('0x2')});};exports[_0x9966('0x3')]=function(_0x395f26,_0x50fded){return client[_0x9966('0x1')](_0x9966('0x4'),{'body':_0x50fded,'options':{'where':{'uniqueid':_0x395f26},'order':[['id','DESC']],'limit':0x1},'log':_0x9966('0x4')});};
\ No newline at end of file
+var _0xa700=['Request','CreateFaxQueueReport','update','UpdateFaxQueueReport','DESC','../client','create'];(function(_0x4fd5bc,_0x267830){var _0x5b8138=function(_0x1796dd){while(--_0x1796dd){_0x4fd5bc['push'](_0x4fd5bc['shift']());}};_0x5b8138(++_0x267830);}(_0xa700,0xec));var _0x0a70=function(_0x5d0113,_0x138456){_0x5d0113=_0x5d0113-0x0;var _0x453199=_0xa700[_0x5d0113];return _0x453199;};'use strict';var client=require(_0x0a70('0x0'));exports[_0x0a70('0x1')]=function(_0x19b6ef){return client[_0x0a70('0x2')](_0x0a70('0x3'),{'body':_0x19b6ef,'log':_0x0a70('0x3')});};exports[_0x0a70('0x4')]=function(_0x4e7787,_0x31090c){return client[_0x0a70('0x2')](_0x0a70('0x5'),{'body':_0x31090c,'options':{'where':{'uniqueid':_0x4e7787},'order':[['id',_0x0a70('0x6')]],'limit':0x1},'log':'UpdateFaxQueueReport'});};
\ No newline at end of file
index 73058b3..d829c3b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc568=['name','Intervals','interval','../client','getIntervals','Request','GetInterval'];(function(_0x4098ff,_0x3d0d62){var _0x468799=function(_0x3dd5d2){while(--_0x3dd5d2){_0x4098ff['push'](_0x4098ff['shift']());}};_0x468799(++_0x3d0d62);}(_0xc568,0x1d1));var _0x8c56=function(_0x4bc732,_0x57d27f){_0x4bc732=_0x4bc732-0x0;var _0x4e2302=_0xc568[_0x4bc732];return _0x4e2302;};'use strict';var client=require(_0x8c56('0x0'));exports[_0x8c56('0x1')]=function(){return function(){return client[_0x8c56('0x2')](_0x8c56('0x3'),{'options':{'raw':![],'where':{'IntervalId':null},'attributes':['id',_0x8c56('0x4')],'include':[{'model':'Interval','as':_0x8c56('0x5'),'attributes':['id',_0x8c56('0x4'),_0x8c56('0x6')]}]},'log':'getIntervals'});};};
\ No newline at end of file
+var _0x204d=['../client','getIntervals','GetInterval','name','Interval'];(function(_0x35812d,_0x443017){var _0x149880=function(_0x1a124c){while(--_0x1a124c){_0x35812d['push'](_0x35812d['shift']());}};_0x149880(++_0x443017);}(_0x204d,0x7d));var _0xd204=function(_0x5ec453,_0x30b0ba){_0x5ec453=_0x5ec453-0x0;var _0x25548f=_0x204d[_0x5ec453];return _0x25548f;};'use strict';var client=require(_0xd204('0x0'));exports[_0xd204('0x1')]=function(){return function(){return client['Request'](_0xd204('0x2'),{'options':{'raw':![],'where':{'IntervalId':null},'attributes':['id',_0xd204('0x3')],'include':[{'model':_0xd204('0x4'),'as':'Intervals','attributes':['id',_0xd204('0x3'),'interval']}]},'log':_0xd204('0x1')});};};
\ No newline at end of file
index 4f78a2e..daef647 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd824=['Request','UpdateMailInteraction','updateMailInteraction','addTags','addTagsToChatInteraction','../client','update'];(function(_0x4b03c9,_0x17ce03){var _0x161ba2=function(_0xb952db){while(--_0xb952db){_0x4b03c9['push'](_0x4b03c9['shift']());}};_0x161ba2(++_0x17ce03);}(_0xd824,0xc2));var _0x4d82=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0xd824[_0x40a045];return _0x1a687c;};'use strict';var client=require(_0x4d82('0x0'));exports[_0x4d82('0x1')]=function(_0x572eea,_0x53fe9a){return client[_0x4d82('0x2')](_0x4d82('0x3'),{'body':_0x53fe9a,'options':{'where':{'id':_0x572eea}},'log':_0x4d82('0x4')});};exports[_0x4d82('0x5')]=function(_0x287fbf,_0x1c8ad9){return client['Request']('AddTagsToMailInteraction',{'body':_0x1c8ad9,'options':{'where':{'id':_0x287fbf}},'log':_0x4d82('0x6')});};
\ No newline at end of file
+var _0xfff0=['addTagsToChatInteraction','update','UpdateMailInteraction','updateMailInteraction','addTags','Request'];(function(_0x2d41e7,_0x543ff5){var _0x1f00c6=function(_0x345465){while(--_0x345465){_0x2d41e7['push'](_0x2d41e7['shift']());}};_0x1f00c6(++_0x543ff5);}(_0xfff0,0x139));var _0x0fff=function(_0x21de57,_0x1da5b0){_0x21de57=_0x21de57-0x0;var _0x94868a=_0xfff0[_0x21de57];return _0x94868a;};'use strict';var client=require('../client');exports[_0x0fff('0x0')]=function(_0x2b95e0,_0x148db8){return client['Request'](_0x0fff('0x1'),{'body':_0x148db8,'options':{'where':{'id':_0x2b95e0}},'log':_0x0fff('0x2')});};exports[_0x0fff('0x3')]=function(_0x4bec60,_0x2cd3d5){return client[_0x0fff('0x4')]('AddTagsToMailInteraction',{'body':_0x2cd3d5,'options':{'where':{'id':_0x4bec60}},'log':_0x0fff('0x5')});};
\ No newline at end of file
index cc4bfb9..686476f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf571=['CreateMailMessage','createMailMessage','../client','create','Request'];(function(_0x3d1022,_0x49e2d5){var _0xf93f9d=function(_0x4d7b35){while(--_0x4d7b35){_0x3d1022['push'](_0x3d1022['shift']());}};_0xf93f9d(++_0x49e2d5);}(_0xf571,0xe3));var _0x1f57=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xf571[_0x14add3];return _0x4a174f;};'use strict';var client=require(_0x1f57('0x0'));exports[_0x1f57('0x1')]=function(_0x517ef3){return client[_0x1f57('0x2')](_0x1f57('0x3'),{'body':_0x517ef3,'log':_0x1f57('0x4')});};
\ No newline at end of file
+var _0xc3b0=['createMailMessage','../client','create','CreateMailMessage'];(function(_0x54eab6,_0x5e262f){var _0x1e7435=function(_0x468c91){while(--_0x468c91){_0x54eab6['push'](_0x54eab6['shift']());}};_0x1e7435(++_0x5e262f);}(_0xc3b0,0x169));var _0x0c3b=function(_0x3423d0,_0x440ccd){_0x3423d0=_0x3423d0-0x0;var _0x3ed08f=_0xc3b0[_0x3423d0];return _0x3ed08f;};'use strict';var client=require(_0x0c3b('0x0'));exports[_0x0c3b('0x1')]=function(_0x1922f1){return client['Request'](_0x0c3b('0x2'),{'body':_0x1922f1,'log':_0x0c3b('0x3')});};
\ No newline at end of file
index 7aefb45..d581b06 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa135=['GetMailQueue','name','timeout','strategy','online','mailPause','getMailQueues','Request'];(function(_0xe45305,_0x2f0b33){var _0x3f64b1=function(_0xeccbb0){while(--_0xeccbb0){_0xe45305['push'](_0xe45305['shift']());}};_0x3f64b1(++_0x2f0b33);}(_0xa135,0x12e));var _0x5a13=function(_0x1c5e08,_0x98c8f6){_0x1c5e08=_0x1c5e08-0x0;var _0x27202a=_0xa135[_0x1c5e08];return _0x27202a;};'use strict';var client=require('../client');exports[_0x5a13('0x0')]=function(){return function(){return client[_0x5a13('0x1')](_0x5a13('0x2'),{'options':{'raw':![],'attributes':['id',_0x5a13('0x3'),_0x5a13('0x4'),_0x5a13('0x5')],'include':[{'model':'User','as':'Agents','attributes':['id',_0x5a13('0x3'),_0x5a13('0x6'),_0x5a13('0x7')]}]},'log':_0x5a13('0x0')});};};
\ No newline at end of file
+var _0xb4b6=['strategy','User','Agents','getMailQueues','Request','name'];(function(_0x533437,_0x4d59d1){var _0x53f4ce=function(_0x483f6b){while(--_0x483f6b){_0x533437['push'](_0x533437['shift']());}};_0x53f4ce(++_0x4d59d1);}(_0xb4b6,0x1ae));var _0x6b4b=function(_0x59698e,_0x35930d){_0x59698e=_0x59698e-0x0;var _0x25f161=_0xb4b6[_0x59698e];return _0x25f161;};'use strict';var client=require('../client');exports['getMailQueues']=function(){return function(){return client[_0x6b4b('0x0')]('GetMailQueue',{'options':{'raw':![],'attributes':['id',_0x6b4b('0x1'),'timeout',_0x6b4b('0x2')],'include':[{'model':_0x6b4b('0x3'),'as':_0x6b4b('0x4'),'attributes':['id',_0x6b4b('0x1'),'online','mailPause']}]},'log':_0x6b4b('0x5')});};};
\ No newline at end of file
index afc12db..2014fe0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ae1=['update','UpdateMailQueueReport','../client','create','Request'];(function(_0x1502a6,_0x2d8498){var _0x4eab47=function(_0x356e9d){while(--_0x356e9d){_0x1502a6['push'](_0x1502a6['shift']());}};_0x4eab47(++_0x2d8498);}(_0x5ae1,0x70));var _0x15ae=function(_0x4605a2,_0xeb462f){_0x4605a2=_0x4605a2-0x0;var _0x5bb122=_0x5ae1[_0x4605a2];return _0x5bb122;};'use strict';var client=require(_0x15ae('0x0'));exports[_0x15ae('0x1')]=function(_0x267b72){return client[_0x15ae('0x2')]('CreateMailQueueReport',{'body':_0x267b72,'log':'CreateMailQueueReport'});};exports[_0x15ae('0x3')]=function(_0x5bf831,_0x26c3bd){return client[_0x15ae('0x2')]('UpdateMailQueueReport',{'body':_0x26c3bd,'options':{'where':{'uniqueid':_0x5bf831},'order':[['id','DESC']],'limit':0x1},'log':_0x15ae('0x4')});};
\ No newline at end of file
+var _0x68ec=['UpdateMailQueueReport','DESC','create','Request','CreateMailQueueReport','update'];(function(_0x6879f0,_0x2f8d9f){var _0x228989=function(_0x2a9467){while(--_0x2a9467){_0x6879f0['push'](_0x6879f0['shift']());}};_0x228989(++_0x2f8d9f);}(_0x68ec,0xe6));var _0xc68e=function(_0x200ced,_0x503efa){_0x200ced=_0x200ced-0x0;var _0x28e175=_0x68ec[_0x200ced];return _0x28e175;};'use strict';var client=require('../client');exports[_0xc68e('0x0')]=function(_0x4b2fee){return client[_0xc68e('0x1')](_0xc68e('0x2'),{'body':_0x4b2fee,'log':_0xc68e('0x2')});};exports[_0xc68e('0x3')]=function(_0x5723b3,_0x3ef99d){return client[_0xc68e('0x1')](_0xc68e('0x4'),{'body':_0x3ef99d,'options':{'where':{'uniqueid':_0x5723b3},'order':[['id',_0xc68e('0x5')]],'limit':0x1},'log':_0xc68e('0x4')});};
\ No newline at end of file
index e707205..4e58477 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb1c5=['addTags','AddTagsToOpenchannelInteraction','addTagsToChatInteraction','../client'];(function(_0x3e5086,_0x48f4a2){var _0xfeb102=function(_0x5a945f){while(--_0x5a945f){_0x3e5086['push'](_0x3e5086['shift']());}};_0xfeb102(++_0x48f4a2);}(_0xb1c5,0x1a7));var _0x5b1c=function(_0x1928c9,_0x13a6d1){_0x1928c9=_0x1928c9-0x0;var _0x51b5fb=_0xb1c5[_0x1928c9];return _0x51b5fb;};'use strict';var client=require(_0x5b1c('0x0'));exports['update']=function(_0x1bb3bd,_0x492f61){return client['Request']('UpdateOpenchannelInteraction',{'body':_0x492f61,'options':{'where':{'id':_0x1bb3bd}},'log':'updateOpenchannelInteraction'});};exports[_0x5b1c('0x1')]=function(_0x24f472,_0x5a34d7){return client['Request'](_0x5b1c('0x2'),{'body':_0x5a34d7,'options':{'where':{'id':_0x24f472}},'log':_0x5b1c('0x3')});};
\ No newline at end of file
+var _0xe35f=['../client','update','Request','UpdateOpenchannelInteraction','updateOpenchannelInteraction','addTags','addTagsToChatInteraction'];(function(_0x2dce10,_0x17e6b7){var _0x514775=function(_0x1fa7af){while(--_0x1fa7af){_0x2dce10['push'](_0x2dce10['shift']());}};_0x514775(++_0x17e6b7);}(_0xe35f,0x1ce));var _0xfe35=function(_0x20323b,_0x917657){_0x20323b=_0x20323b-0x0;var _0x880411=_0xe35f[_0x20323b];return _0x880411;};'use strict';var client=require(_0xfe35('0x0'));exports[_0xfe35('0x1')]=function(_0x89d877,_0x2fded6){return client[_0xfe35('0x2')](_0xfe35('0x3'),{'body':_0x2fded6,'options':{'where':{'id':_0x89d877}},'log':_0xfe35('0x4')});};exports[_0xfe35('0x5')]=function(_0x33f56b,_0x27a4ed){return client['Request']('AddTagsToOpenchannelInteraction',{'body':_0x27a4ed,'options':{'where':{'id':_0x33f56b}},'log':_0xfe35('0x6')});};
\ No newline at end of file
index 3e538db..7357ac0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7787=['CreateOpenchannelMessage','createOpenchannelMessage','Request'];(function(_0x4ff670,_0xd1eeb3){var _0x163f2f=function(_0x10efae){while(--_0x10efae){_0x4ff670['push'](_0x4ff670['shift']());}};_0x163f2f(++_0xd1eeb3);}(_0x7787,0x1d3));var _0x7778=function(_0x37edd4,_0x3329be){_0x37edd4=_0x37edd4-0x0;var _0x851272=_0x7787[_0x37edd4];return _0x851272;};'use strict';var client=require('../client');exports['create']=function(_0x1fe4f9){return client[_0x7778('0x0')](_0x7778('0x1'),{'body':_0x1fe4f9,'log':_0x7778('0x2')});};
\ No newline at end of file
+var _0xb5f9=['../client','Request','CreateOpenchannelMessage'];(function(_0x8bf76a,_0x532b7d){var _0x1551e9=function(_0x23fe58){while(--_0x23fe58){_0x8bf76a['push'](_0x8bf76a['shift']());}};_0x1551e9(++_0x532b7d);}(_0xb5f9,0xea));var _0x9b5f=function(_0x4a434c,_0x359e1d){_0x4a434c=_0x4a434c-0x0;var _0x2ea474=_0xb5f9[_0x4a434c];return _0x2ea474;};'use strict';var client=require(_0x9b5f('0x0'));exports['create']=function(_0x434fec){return client[_0x9b5f('0x1')](_0x9b5f('0x2'),{'body':_0x434fec,'log':'createOpenchannelMessage'});};
\ No newline at end of file
index 1126ec3..f93118e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x964b=['Request','GetOpenchannelQueue','name','timeout','strategy','User','Agents','openchannelPause','../client','getOpenchannelQueues'];(function(_0x5bd3f2,_0x49f10b){var _0x444bfb=function(_0xae7210){while(--_0xae7210){_0x5bd3f2['push'](_0x5bd3f2['shift']());}};_0x444bfb(++_0x49f10b);}(_0x964b,0x1ac));var _0xb964=function(_0x4fc6e4,_0x8f54c8){_0x4fc6e4=_0x4fc6e4-0x0;var _0x5236ca=_0x964b[_0x4fc6e4];return _0x5236ca;};'use strict';var client=require(_0xb964('0x0'));exports[_0xb964('0x1')]=function(){return function(){return client[_0xb964('0x2')](_0xb964('0x3'),{'options':{'raw':![],'attributes':['id',_0xb964('0x4'),_0xb964('0x5'),_0xb964('0x6')],'include':[{'model':_0xb964('0x7'),'as':_0xb964('0x8'),'attributes':['id',_0xb964('0x4'),'online',_0xb964('0x9')]}]},'log':'getOpenchannelQueues'});};};
\ No newline at end of file
+var _0x55be=['Agents','online','openchannelPause','../client','getOpenchannelQueues','Request','name','timeout','User'];(function(_0x49c119,_0xcb9c67){var _0xc7c0c9=function(_0x5dfd09){while(--_0x5dfd09){_0x49c119['push'](_0x49c119['shift']());}};_0xc7c0c9(++_0xcb9c67);}(_0x55be,0x1ce));var _0xe55b=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0x55be[_0x167cc1];return _0x10bc4b;};'use strict';var client=require(_0xe55b('0x0'));exports[_0xe55b('0x1')]=function(){return function(){return client[_0xe55b('0x2')]('GetOpenchannelQueue',{'options':{'raw':![],'attributes':['id',_0xe55b('0x3'),_0xe55b('0x4'),'strategy'],'include':[{'model':_0xe55b('0x5'),'as':_0xe55b('0x6'),'attributes':['id',_0xe55b('0x3'),_0xe55b('0x7'),_0xe55b('0x8')]}]},'log':_0xe55b('0x1')});};};
\ No newline at end of file
index 893829d..ec579f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd206=['DESC','../client','CreateOpenchannelQueueReport','UpdateOpenchannelQueueReport'];(function(_0x5d6456,_0x58ecc7){var _0x4d66c1=function(_0x4335e3){while(--_0x4335e3){_0x5d6456['push'](_0x5d6456['shift']());}};_0x4d66c1(++_0x58ecc7);}(_0xd206,0x89));var _0x6d20=function(_0x2dadb9,_0x42cfe6){_0x2dadb9=_0x2dadb9-0x0;var _0x2f0097=_0xd206[_0x2dadb9];return _0x2f0097;};'use strict';var client=require(_0x6d20('0x0'));exports['create']=function(_0x586370){return client['Request'](_0x6d20('0x1'),{'body':_0x586370,'log':_0x6d20('0x1')});};exports['update']=function(_0xb6c7de,_0x5bc029){return client['Request'](_0x6d20('0x2'),{'body':_0x5bc029,'options':{'where':{'uniqueid':_0xb6c7de},'order':[['id',_0x6d20('0x3')]],'limit':0x1},'log':'UpdateOpenchannelQueueReport'});};
\ No newline at end of file
+var _0x299e=['Request','update','UpdateOpenchannelQueueReport','create'];(function(_0x53ccf2,_0x13cb67){var _0x5a2964=function(_0x3b0514){while(--_0x3b0514){_0x53ccf2['push'](_0x53ccf2['shift']());}};_0x5a2964(++_0x13cb67);}(_0x299e,0x1e7));var _0xe299=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x299e[_0x3b380d];return _0x54502b;};'use strict';var client=require('../client');exports[_0xe299('0x0')]=function(_0x3132a7){return client[_0xe299('0x1')]('CreateOpenchannelQueueReport',{'body':_0x3132a7,'log':'CreateOpenchannelQueueReport'});};exports[_0xe299('0x2')]=function(_0x2ccfe2,_0x4aaa65){return client['Request'](_0xe299('0x3'),{'body':_0x4aaa65,'options':{'where':{'uniqueid':_0x2ccfe2},'order':[['id','DESC']],'limit':0x1},'log':_0xe299('0x3')});};
\ No newline at end of file
index 6da4521..4a130de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xecd5=['Request','addTagsToSmsInteraction','update','UpdateSmsInteraction','updateSmsInteraction','addTags'];(function(_0x1139d0,_0x41e5f8){var _0xcc01a6=function(_0x504ffa){while(--_0x504ffa){_0x1139d0['push'](_0x1139d0['shift']());}};_0xcc01a6(++_0x41e5f8);}(_0xecd5,0x110));var _0x5ecd=function(_0x12bc24,_0x3c7365){_0x12bc24=_0x12bc24-0x0;var _0x23301a=_0xecd5[_0x12bc24];return _0x23301a;};'use strict';var client=require('../client');exports[_0x5ecd('0x0')]=function(_0x2baced,_0x1aa184){return client['Request'](_0x5ecd('0x1'),{'body':_0x1aa184,'options':{'where':{'id':_0x2baced}},'log':_0x5ecd('0x2')});};exports[_0x5ecd('0x3')]=function(_0x458bb3,_0x516d8e){return client[_0x5ecd('0x4')]('AddTagsToSmsInteraction',{'body':_0x516d8e,'options':{'where':{'id':_0x458bb3}},'log':_0x5ecd('0x5')});};
\ No newline at end of file
+var _0x4e00=['update','Request','addTags','AddTagsToSmsInteraction','addTagsToSmsInteraction'];(function(_0x4bd9ea,_0xf8c84b){var _0x3a353a=function(_0x11b7d3){while(--_0x11b7d3){_0x4bd9ea['push'](_0x4bd9ea['shift']());}};_0x3a353a(++_0xf8c84b);}(_0x4e00,0xa0));var _0x04e0=function(_0xc4e921,_0x5cd3ed){_0xc4e921=_0xc4e921-0x0;var _0x3f6419=_0x4e00[_0xc4e921];return _0x3f6419;};'use strict';var client=require('../client');exports[_0x04e0('0x0')]=function(_0x53eedb,_0x45bc29){return client[_0x04e0('0x1')]('UpdateSmsInteraction',{'body':_0x45bc29,'options':{'where':{'id':_0x53eedb}},'log':'updateSmsInteraction'});};exports[_0x04e0('0x2')]=function(_0x55d507,_0x129c93){return client[_0x04e0('0x1')](_0x04e0('0x3'),{'body':_0x129c93,'options':{'where':{'id':_0x55d507}},'log':_0x04e0('0x4')});};
\ No newline at end of file
index 44c099b..767ec26 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x36ee=['create','createSmsMessage','../client'];(function(_0x13634e,_0x5de6a9){var _0x4b27c0=function(_0xf703a1){while(--_0xf703a1){_0x13634e['push'](_0x13634e['shift']());}};_0x4b27c0(++_0x5de6a9);}(_0x36ee,0x1f4));var _0xe36e=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x36ee[_0x2dafbe];return _0x58a45a;};'use strict';var client=require(_0xe36e('0x0'));exports[_0xe36e('0x1')]=function(_0x1a82da){return client['Request']('CreateSmsMessage',{'body':_0x1a82da,'log':_0xe36e('0x2')});};
\ No newline at end of file
+var _0x1ef7=['create','Request','CreateSmsMessage','createSmsMessage'];(function(_0xb197f0,_0x1b3c72){var _0x4a94d4=function(_0x48a9c3){while(--_0x48a9c3){_0xb197f0['push'](_0xb197f0['shift']());}};_0x4a94d4(++_0x1b3c72);}(_0x1ef7,0x168));var _0x71ef=function(_0x1a014b,_0x48acae){_0x1a014b=_0x1a014b-0x0;var _0x462258=_0x1ef7[_0x1a014b];return _0x462258;};'use strict';var client=require('../client');exports[_0x71ef('0x0')]=function(_0xbff12e){return client[_0x71ef('0x1')](_0x71ef('0x2'),{'body':_0xbff12e,'log':_0x71ef('0x3')});};
\ No newline at end of file
index 95374c1..408ea40 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['Agents','online','smsPause','../client','getSmsQueues','Request','name','timeout','strategy','User'];(function(_0x101e1a,_0xbb8492){var _0x25ea7a=function(_0x56efd7){while(--_0x56efd7){_0x101e1a['push'](_0x101e1a['shift']());}};_0x25ea7a(++_0xbb8492);}(_0xe706,0xa3));var _0x6e70=function(_0x2318b2,_0x5737ed){_0x2318b2=_0x2318b2-0x0;var _0x56634a=_0xe706[_0x2318b2];return _0x56634a;};'use strict';var client=require(_0x6e70('0x0'));exports[_0x6e70('0x1')]=function(){return function(){return client[_0x6e70('0x2')]('GetSmsQueue',{'options':{'raw':![],'attributes':['id',_0x6e70('0x3'),_0x6e70('0x4'),_0x6e70('0x5')],'include':[{'model':_0x6e70('0x6'),'as':_0x6e70('0x7'),'attributes':['id',_0x6e70('0x3'),_0x6e70('0x8'),_0x6e70('0x9')]}]},'log':_0x6e70('0x1')});};};
\ No newline at end of file
+var _0x70e0=['User','Agents','online','../client','getSmsQueues','Request','timeout','strategy'];(function(_0x2e3e9b,_0x5dd55d){var _0x10373c=function(_0x208398){while(--_0x208398){_0x2e3e9b['push'](_0x2e3e9b['shift']());}};_0x10373c(++_0x5dd55d);}(_0x70e0,0x17b));var _0x070e=function(_0x27f323,_0x159f9d){_0x27f323=_0x27f323-0x0;var _0x1b0109=_0x70e0[_0x27f323];return _0x1b0109;};'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 48c3159..65d8b2d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34e8=['create','Request','CreateSmsQueueReport','update','UpdateSmsQueueReport','DESC','../client'];(function(_0xc70629,_0xefdc2d){var _0x70a61=function(_0x1db30d){while(--_0x1db30d){_0xc70629['push'](_0xc70629['shift']());}};_0x70a61(++_0xefdc2d);}(_0x34e8,0x12c));var _0x834e=function(_0x30d693,_0x3bcf1e){_0x30d693=_0x30d693-0x0;var _0x19a068=_0x34e8[_0x30d693];return _0x19a068;};'use strict';var client=require(_0x834e('0x0'));exports[_0x834e('0x1')]=function(_0x8b339){return client[_0x834e('0x2')]('CreateSmsQueueReport',{'body':_0x8b339,'log':_0x834e('0x3')});};exports[_0x834e('0x4')]=function(_0x472111,_0x31bf20){return client[_0x834e('0x2')](_0x834e('0x5'),{'body':_0x31bf20,'options':{'where':{'uniqueid':_0x472111},'order':[['id',_0x834e('0x6')]],'limit':0x1},'log':'UpdateSmsQueueReport'});};
\ No newline at end of file
+var _0x9957=['../client','create','Request','CreateSmsQueueReport','update','UpdateSmsQueueReport','DESC'];(function(_0x9ca21f,_0x437553){var _0x9ef54b=function(_0x1aafff){while(--_0x1aafff){_0x9ca21f['push'](_0x9ca21f['shift']());}};_0x9ef54b(++_0x437553);}(_0x9957,0x93));var _0x7995=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0x9957[_0x5ddb1c];return _0x354adc;};'use strict';var client=require(_0x7995('0x0'));exports[_0x7995('0x1')]=function(_0x2722a3){return client[_0x7995('0x2')]('CreateSmsQueueReport',{'body':_0x2722a3,'log':_0x7995('0x3')});};exports[_0x7995('0x4')]=function(_0x1902b4,_0x462a03){return client['Request'](_0x7995('0x5'),{'body':_0x462a03,'options':{'where':{'uniqueid':_0x1902b4},'order':[['id',_0x7995('0x6')]],'limit':0x1},'log':_0x7995('0x5')});};
\ No newline at end of file
index bbac614..cc0dff8 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(_0xe09e3a,_0x43eeed){var _0x1aaddd=function(_0x2676fd){while(--_0x2676fd){_0xe09e3a['push'](_0xe09e3a['shift']());}};_0x1aaddd(++_0x43eeed);}(_0xa9e0,0x123));var _0x0a9e=function(_0x47a7d0,_0x4e182d){_0x47a7d0=_0x47a7d0-0x0;var _0xb9bd08=_0xa9e0[_0x47a7d0];return _0xb9bd08;};'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(_0x131962,_0x4e1516){var _0x3a6d40=function(_0x20383c){while(--_0x20383c){_0x131962['push'](_0x131962['shift']());}};_0x3a6d40(++_0x4e1516);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0xa9e0[_0x2dafbe];return _0x58a45a;};'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 d2b1d43..af0bbbb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeda8=['updateWhatsappInteraction','addTags','AddTagsToWhatsappInteraction','addTagsToWhatsappInteraction','../client','update','Request','UpdateWhatsappInteraction'];(function(_0x34bdce,_0x5473dd){var _0x1c5cef=function(_0xb2939e){while(--_0xb2939e){_0x34bdce['push'](_0x34bdce['shift']());}};_0x1c5cef(++_0x5473dd);}(_0xeda8,0x104));var _0x8eda=function(_0x362e91,_0x189560){_0x362e91=_0x362e91-0x0;var _0x48ce84=_0xeda8[_0x362e91];return _0x48ce84;};'use strict';var client=require(_0x8eda('0x0'));exports[_0x8eda('0x1')]=function(_0x539019,_0x12899a){return client[_0x8eda('0x2')](_0x8eda('0x3'),{'body':_0x12899a,'options':{'where':{'id':_0x539019}},'log':_0x8eda('0x4')});};exports[_0x8eda('0x5')]=function(_0x94b83f,_0x25b19a){return client[_0x8eda('0x2')](_0x8eda('0x6'),{'body':_0x25b19a,'options':{'where':{'id':_0x94b83f}},'log':_0x8eda('0x7')});};
\ No newline at end of file
+var _0x038b=['AddTagsToWhatsappInteraction','update','UpdateWhatsappInteraction','addTags','Request'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0x038b,0x114));var _0xb038=function(_0x332a38,_0x33b0b9){_0x332a38=_0x332a38-0x0;var _0x64044a=_0x038b[_0x332a38];return _0x64044a;};'use strict';var client=require('../client');exports[_0xb038('0x0')]=function(_0x43b6f9,_0x449fef){return client['Request'](_0xb038('0x1'),{'body':_0x449fef,'options':{'where':{'id':_0x43b6f9}},'log':'updateWhatsappInteraction'});};exports[_0xb038('0x2')]=function(_0x3d090b,_0x4a8a30){return client[_0xb038('0x3')](_0xb038('0x4'),{'body':_0x4a8a30,'options':{'where':{'id':_0x3d090b}},'log':'addTagsToWhatsappInteraction'});};
\ No newline at end of file
index 494fbab..33d6303 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdbd0=['createWhatsappMessage','create','CreateWhatsappMessage'];(function(_0x42d4a8,_0x4b1c9d){var _0x3fe989=function(_0x580a51){while(--_0x580a51){_0x42d4a8['push'](_0x42d4a8['shift']());}};_0x3fe989(++_0x4b1c9d);}(_0xdbd0,0x70));var _0x0dbd=function(_0x7d3d86,_0x46605a){_0x7d3d86=_0x7d3d86-0x0;var _0x4fa3ac=_0xdbd0[_0x7d3d86];return _0x4fa3ac;};'use strict';var client=require('../client');exports[_0x0dbd('0x0')]=function(_0x151294){return client['Request'](_0x0dbd('0x1'),{'body':_0x151294,'log':_0x0dbd('0x2')});};
\ No newline at end of file
+var _0xeb81=['createWhatsappMessage','../client','Request','CreateWhatsappMessage'];(function(_0x3ec594,_0x448834){var _0x21f286=function(_0x537497){while(--_0x537497){_0x3ec594['push'](_0x3ec594['shift']());}};_0x21f286(++_0x448834);}(_0xeb81,0x141));var _0x1eb8=function(_0x413727,_0x17adb1){_0x413727=_0x413727-0x0;var _0x5f46d7=_0xeb81[_0x413727];return _0x5f46d7;};'use strict';var client=require(_0x1eb8('0x0'));exports['create']=function(_0x21285d){return client[_0x1eb8('0x1')](_0x1eb8('0x2'),{'body':_0x21285d,'log':_0x1eb8('0x3')});};
\ No newline at end of file
index 6ecd34e..7809a34 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xecc4=['strategy','Agents','name','../client','getWhatsappQueues','Request'];(function(_0x34cda7,_0x8d3def){var _0xf7ed13=function(_0x4eae0e){while(--_0x4eae0e){_0x34cda7['push'](_0x34cda7['shift']());}};_0xf7ed13(++_0x8d3def);}(_0xecc4,0x8d));var _0x4ecc=function(_0x494699,_0xfcd936){_0x494699=_0x494699-0x0;var _0xf1b54c=_0xecc4[_0x494699];return _0xf1b54c;};'use strict';var client=require(_0x4ecc('0x0'));exports[_0x4ecc('0x1')]=function(){return function(){return client[_0x4ecc('0x2')]('GetWhatsappQueue',{'options':{'raw':![],'attributes':['id','name','timeout',_0x4ecc('0x3')],'include':[{'model':'User','as':_0x4ecc('0x4'),'attributes':['id',_0x4ecc('0x5'),'online','whatsappPause']}]},'log':_0x4ecc('0x1')});};};
\ No newline at end of file
+var _0x1b72=['name','User','Agents','online','whatsappPause','../client','getWhatsappQueues','Request'];(function(_0x1aee2a,_0x38f7d3){var _0x42a860=function(_0x31f515){while(--_0x31f515){_0x1aee2a['push'](_0x1aee2a['shift']());}};_0x42a860(++_0x38f7d3);}(_0x1b72,0x1d5));var _0x21b7=function(_0x5d4607,_0x6b5e7b){_0x5d4607=_0x5d4607-0x0;var _0x5e4a86=_0x1b72[_0x5d4607];return _0x5e4a86;};'use strict';var client=require(_0x21b7('0x0'));exports[_0x21b7('0x1')]=function(){return function(){return client[_0x21b7('0x2')]('GetWhatsappQueue',{'options':{'raw':![],'attributes':['id',_0x21b7('0x3'),'timeout','strategy'],'include':[{'model':_0x21b7('0x4'),'as':_0x21b7('0x5'),'attributes':['id',_0x21b7('0x3'),_0x21b7('0x6'),_0x21b7('0x7')]}]},'log':'getWhatsappQueues'});};};
\ No newline at end of file
index 23842a0..d26c5b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b00=['UpdateWhatsappQueueReport','DESC','../client','create','Request','CreateWhatsappQueueReport','update'];(function(_0x74a716,_0x4e01bb){var _0x53d740=function(_0x114bb6){while(--_0x114bb6){_0x74a716['push'](_0x74a716['shift']());}};_0x53d740(++_0x4e01bb);}(_0x6b00,0x87));var _0x06b0=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0x6b00[_0x502c7d];return _0x30b7ed;};'use strict';var client=require(_0x06b0('0x0'));exports[_0x06b0('0x1')]=function(_0x58d26b){return client[_0x06b0('0x2')]('CreateWhatsappQueueReport',{'body':_0x58d26b,'log':_0x06b0('0x3')});};exports[_0x06b0('0x4')]=function(_0x1b61b0,_0x518cb6){return client[_0x06b0('0x2')](_0x06b0('0x5'),{'body':_0x518cb6,'options':{'where':{'uniqueid':_0x1b61b0},'order':[['id',_0x06b0('0x6')]],'limit':0x1},'log':_0x06b0('0x5')});};
\ No newline at end of file
+var _0x9621=['DESC','../client','create','Request','CreateWhatsappQueueReport','UpdateWhatsappQueueReport'];(function(_0x255000,_0x567c94){var _0x1a1fd8=function(_0x14b187){while(--_0x14b187){_0x255000['push'](_0x255000['shift']());}};_0x1a1fd8(++_0x567c94);}(_0x9621,0x9d));var _0x1962=function(_0x4d24a0,_0x4b63fa){_0x4d24a0=_0x4d24a0-0x0;var _0x26f0dc=_0x9621[_0x4d24a0];return _0x26f0dc;};'use strict';var client=require(_0x1962('0x0'));exports[_0x1962('0x1')]=function(_0x2b4830){return client[_0x1962('0x2')](_0x1962('0x3'),{'body':_0x2b4830,'log':_0x1962('0x3')});};exports['update']=function(_0x5a3034,_0x5d0350){return client[_0x1962('0x2')](_0x1962('0x4'),{'body':_0x5d0350,'options':{'where':{'uniqueid':_0x5a3034},'order':[['id',_0x1962('0x5')]],'limit':0x1},'log':_0x1962('0x4')});};
\ No newline at end of file
index a7f6917..8768769 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd303=['[%s][AGENT]\x20agent\x20not\x20found\x20%s','stop','log','[%s][QUEUE]\x20%s','stack','validate','lodash','seq-queue','../../../../config/logger','routing','./strategy','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','timeout\x20is\x20a\x20number','info','[%s][AGENT][NAME:%s][STATUS:%s]','name','toLowerCase','consequence','length','error','[%s][AGENT]\x20%s','map','join','find','agents','timeout','atimeout','channel','format','rules','end','[%s][AGENT]\x20ROUTING\x20STOPPED','close','complete','[%s][AGENT]\x20ROUTING\x20END','next','agent'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xd303,0x181));var _0x3d30=function(_0x254b35,_0x9f3a12){_0x254b35=_0x254b35-0x0;var _0x59124b=_0xd303[_0x254b35];return _0x59124b;};'use strict';var schema=require(_0x3d30('0x0'));var _=require(_0x3d30('0x1'));var util=require('util');var seqqueue=require(_0x3d30('0x2'));var logger=require(_0x3d30('0x3'))(_0x3d30('0x4'));var strategy=require(_0x3d30('0x5'));var queue=schema({'name':{'type':'string','required':!![],'message':_0x3d30('0x6')},'timeout':{'type':_0x3d30('0x7'),'message':_0x3d30('0x8')}});function writeLog(_0xc6363d,_0x1329a5,_0x221e6e){return logger[_0x3d30('0x9')](util['format'](_0x3d30('0xa'),_0xc6363d,_0x1329a5[_0x3d30('0xb')],_0x221e6e));}function handleFindAgent(_0x11cc89){return function(_0x2f1416){return _0x2f1416['name'][_0x3d30('0xc')]()===_0x11cc89['toLowerCase']();};}exports[_0x3d30('0xd')]=function(_0x1dcdcc,_0x240988,_0xa397e3,_0x5f23ca){return function(_0x272bcf){try{var _0x166b1c={'name':_0x240988[0x0],'timeout':_0x240988[0x1]};var _0x33eafb=queue['validate'](_0x166b1c,{'typecast':!![]});if(_0x33eafb[_0x3d30('0xe')]){logger[_0x3d30('0xf')](_0x3d30('0x10'),_0x1dcdcc,_[_0x3d30('0x11')](_0x33eafb,'message')[_0x3d30('0x12')](',\x20'));_0x272bcf['stop']();}else{var _0x21edd2=_[_0x3d30('0x13')](_0xa397e3[_0x3d30('0x14')],handleFindAgent(_0x166b1c[_0x3d30('0xb')]));if(_0x21edd2){var _0x36cc6d=(_0x166b1c[_0x3d30('0x15')]||0xa)*0x3e8;var _0x5aca34,_0x24a293;var _0x1d7fb1=seqqueue['createQueue'](_0x36cc6d);_0x1d7fb1['id']=_0x1dcdcc;_0x1d7fb1[_0x3d30('0x16')]=_0x36cc6d;_0x1d7fb1[_0x3d30('0x17')]=_0x5f23ca['channel'];writeLog(_0x1dcdcc,_0x21edd2,util[_0x3d30('0x18')]('START:%s',_0x36cc6d));_0xa397e3[_0x3d30('0x19')][_0x1dcdcc]['on'](_0x3d30('0x1a'),function(){logger[_0x3d30('0x9')](_0x3d30('0x1b'),_0x1dcdcc);clearTimeout(_0x24a293);_0x24a293=undefined;_0x1d7fb1[_0x3d30('0x1c')]();if(_0xa397e3[_0x3d30('0x19')][_0x1dcdcc]){delete _0xa397e3[_0x3d30('0x19')][_0x1dcdcc];}_0x272bcf['stop']();});_0xa397e3['rules'][_0x1dcdcc]['on'](_0x3d30('0x1d'),function(){if(_0xa397e3[_0x3d30('0x19')][_0x1dcdcc]){delete _0xa397e3[_0x3d30('0x19')][_0x1dcdcc];}});_0x24a293=setTimeout(function(){logger['info'](_0x3d30('0x1e'),_0x1dcdcc);clearTimeout(_0x24a293);_0x1d7fb1[_0x3d30('0x1c')]();_0x272bcf[_0x3d30('0x1f')]();},_0x36cc6d);strategy[_0x3d30('0x20')](_0x1d7fb1,_0x21edd2,_0xa397e3,_0x5f23ca);}else{logger[_0x3d30('0xf')](_0x3d30('0x21'),_0x1dcdcc,_0x166b1c[_0x3d30('0xb')]);_0x272bcf[_0x3d30('0x22')]();}}}catch(_0x575707){console[_0x3d30('0x23')](_0x575707);logger[_0x3d30('0xf')](_0x3d30('0x24'),_0x1dcdcc,_0x575707[_0x3d30('0x25')]);_0x272bcf[_0x3d30('0x22')]();}};};
\ No newline at end of file
+var _0x36e2=['rules','stop','next','agent','error','[%s][AGENT]\x20agent\x20not\x20found\x20%s','log','[%s][QUEUE]\x20%s','validate','seq-queue','../../../../config/logger','routing','./strategy','string','number','timeout\x20is\x20a\x20number','info','format','name','toLowerCase','consequence','[%s][AGENT]\x20%s','map','join','find','agents','createQueue','channel','START:%s','[%s][AGENT]\x20ROUTING\x20STOPPED','close'];(function(_0xfb354c,_0x2a54bb){var _0xd6ecd2=function(_0x3a3b7d){while(--_0x3a3b7d){_0xfb354c['push'](_0xfb354c['shift']());}};_0xd6ecd2(++_0x2a54bb);}(_0x36e2,0xc2));var _0x236e=function(_0x5e970c,_0x800fcc){_0x5e970c=_0x5e970c-0x0;var _0x2b4768=_0x36e2[_0x5e970c];return _0x2b4768;};'use strict';var schema=require(_0x236e('0x0'));var _=require('lodash');var util=require('util');var seqqueue=require(_0x236e('0x1'));var logger=require(_0x236e('0x2'))(_0x236e('0x3'));var strategy=require(_0x236e('0x4'));var queue=schema({'name':{'type':_0x236e('0x5'),'required':!![],'message':'name\x20is\x20a\x20string\x20and\x20it\x20is\x20required'},'timeout':{'type':_0x236e('0x6'),'message':_0x236e('0x7')}});function writeLog(_0x40bd8b,_0x51c7c4,_0x5703a3){return logger[_0x236e('0x8')](util[_0x236e('0x9')]('[%s][AGENT][NAME:%s][STATUS:%s]',_0x40bd8b,_0x51c7c4[_0x236e('0xa')],_0x5703a3));}function handleFindAgent(_0x244553){return function(_0x1abf54){return _0x1abf54[_0x236e('0xa')][_0x236e('0xb')]()===_0x244553[_0x236e('0xb')]();};}exports[_0x236e('0xc')]=function(_0x44d885,_0x468948,_0x2134e4,_0x37b920){return function(_0x520099){try{var _0x4b74b3={'name':_0x468948[0x0],'timeout':_0x468948[0x1]};var _0xd185a1=queue[_0x236e('0x0')](_0x4b74b3,{'typecast':!![]});if(_0xd185a1['length']){logger['error'](_0x236e('0xd'),_0x44d885,_[_0x236e('0xe')](_0xd185a1,'message')[_0x236e('0xf')](',\x20'));_0x520099['stop']();}else{var _0x91b9c1=_[_0x236e('0x10')](_0x2134e4[_0x236e('0x11')],handleFindAgent(_0x4b74b3[_0x236e('0xa')]));if(_0x91b9c1){var _0x1538e8=(_0x4b74b3['timeout']||0xa)*0x3e8;var _0x140725,_0xf2c423;var _0x1128ac=seqqueue[_0x236e('0x12')](_0x1538e8);_0x1128ac['id']=_0x44d885;_0x1128ac['atimeout']=_0x1538e8;_0x1128ac[_0x236e('0x13')]=_0x37b920[_0x236e('0x13')];writeLog(_0x44d885,_0x91b9c1,util[_0x236e('0x9')](_0x236e('0x14'),_0x1538e8));_0x2134e4['rules'][_0x44d885]['on']('end',function(){logger[_0x236e('0x8')](_0x236e('0x15'),_0x44d885);clearTimeout(_0xf2c423);_0xf2c423=undefined;_0x1128ac[_0x236e('0x16')]();if(_0x2134e4[_0x236e('0x17')][_0x44d885]){delete _0x2134e4['rules'][_0x44d885];}_0x520099[_0x236e('0x18')]();});_0x2134e4[_0x236e('0x17')][_0x44d885]['on']('complete',function(){if(_0x2134e4['rules'][_0x44d885]){delete _0x2134e4['rules'][_0x44d885];}});_0xf2c423=setTimeout(function(){logger[_0x236e('0x8')]('[%s][AGENT]\x20ROUTING\x20END',_0x44d885);clearTimeout(_0xf2c423);_0x1128ac[_0x236e('0x16')]();_0x520099[_0x236e('0x19')]();},_0x1538e8);strategy[_0x236e('0x1a')](_0x1128ac,_0x91b9c1,_0x2134e4,_0x37b920);}else{logger[_0x236e('0x1b')](_0x236e('0x1c'),_0x44d885,_0x4b74b3['name']);_0x520099[_0x236e('0x18')]();}}}catch(_0x3b315c){console[_0x236e('0x1d')](_0x3b315c);logger[_0x236e('0x1b')](_0x236e('0x1e'),_0x44d885,_0x3b315c['stack']);_0x520099['stop']();}};};
\ No newline at end of file
index be79eef..e616f33 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x410d=['lodash','moment','aws-sdk','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','consequence','isNil','interaction','UserId','info','[%s][AMAZONLEX]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','sms','whatsapp','phone','chat','ChatWebsiteId','account','AccountId','upperFirst','InteractionId','created','body','getMustacheRender','then','error','stringify','[%s][AMAZONLEX]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','[%s][AMAZONLEX]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','$LATEST','message','postText','amazonlex','providerName','Message','create','dialogState'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x410d,0x64));var _0xd410=function(_0x41bdd4,_0x3d5c76){_0x41bdd4=_0x41bdd4-0x0;var _0x5c03a6=_0x410d[_0x41bdd4];return _0x5c03a6;};'use strict';var _=require(_0xd410('0x0'));var moment=require(_0xd410('0x1'));var AWS=require(_0xd410('0x2'));var utils=require(_0xd410('0x3'));var logger=require(_0xd410('0x4'))(_0xd410('0x5'));var rpc={'chatMessage':require(_0xd410('0x6')),'openchannelMessage':require(_0xd410('0x7')),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require(_0xd410('0x8')),'faxMessage':require(_0xd410('0x9')),'whatsappMessage':require(_0xd410('0xa'))};exports[_0xd410('0xb')]=function(_0x4e14e4,_0x1be978){return function(_0x152a02){try{if(!_[_0xd410('0xc')](this[_0xd410('0xd')][_0xd410('0xe')])){logger[_0xd410('0xf')](_0xd410('0x10'),_0x4e14e4,_0xd410('0x11'));return _0x152a02[_0xd410('0x12')]();}var _0x3211b7={'ContactId':this[_0xd410('0x13')]['id'],'sentAt':moment()[_0xd410('0x14')](_0xd410('0x15')),'direction':_0xd410('0x16')};if(this[_0xd410('0x17')]===_0xd410('0x18')||this['channel']===_0xd410('0x19')){_0x3211b7[_0xd410('0x1a')]=this[_0xd410('0xd')]['phone'];}var _0x4c29d3=this['channel'];if(_0x4c29d3===_0xd410('0x1b')){_0x3211b7[_0xd410('0x1c')]=this[_0xd410('0x1d')]['id'];}else{_0x3211b7[_['upperFirst'](_0x4c29d3)+_0xd410('0x1e')]=this[_0xd410('0x1d')]['id'];}_0x3211b7[_[_0xd410('0x1f')](_0x4c29d3)+_0xd410('0x20')]=this[_0xd410('0xd')]['id'];if(this[_0xd410('0xd')][_0xd410('0x21')]){var _0x14bdfa=_0x1be978[0x4];if(!_['isEmpty'](_0x14bdfa)){_0x3211b7[_0xd410('0x22')]=utils[_0xd410('0x23')](_0x14bdfa,this);return rpc[_0x4c29d3+'Message']['create'](_0x3211b7)[_0xd410('0x24')](function(_0x503c03){logger[_0xd410('0xf')](_0xd410('0x10'),_0x4e14e4,_0x3211b7[_0xd410('0x22')]);})['catch'](function(_0x52d330){logger[_0xd410('0x25')](_0xd410('0x10'),_0x4e14e4,JSON[_0xd410('0x26')](_0x52d330));})['finally'](function(){logger[_0xd410('0xf')](_0xd410('0x27'),_0x4e14e4);_0x152a02[_0xd410('0x28')]();});}else{logger['info'](_0xd410('0x29'),_0x4e14e4);_0x152a02[_0xd410('0x28')]();}}else{var _0x44109b=this;var _0x172d89=new AWS['LexRuntime']({'accessKeyId':_0x1be978[0x0],'secretAccessKey':_0x1be978[0x1],'region':_0x1be978[0x2]});var _0x3ae6f6={'botAlias':_0xd410('0x2a'),'botName':_0x1be978[0x3],'inputText':this[_0xd410('0x2b')][_0xd410('0x22')],'userId':this[_0xd410('0x17')]+':'+this[_0xd410('0xd')]['id']['toString']()};_0x172d89[_0xd410('0x2c')](_0x3ae6f6,function(_0x5d7faa,_0x1126c6){if(_0x5d7faa){logger[_0xd410('0x25')]('[%s][AMAZONLEX]\x20%s',_0x4e14e4,_0x5d7faa[_0xd410('0x2b')]);_0x152a02['next']();}else if(_0x1126c6&&_0x1126c6[_0xd410('0x2b')]){_0x44109b[_0xd410('0x22')][_0xd410('0x2d')]=_0x1126c6;_0x3211b7[_0xd410('0x22')]=_0x1126c6['message'];_0x3211b7[_0xd410('0x2e')]=_0xd410('0x2d');_0x3211b7['providerResponse']=JSON['stringify'](_0x1126c6);return rpc[_0x4c29d3+_0xd410('0x2f')][_0xd410('0x30')](_0x3211b7)['then'](function(_0x39688c){logger['info'](_0xd410('0x10'),_0x4e14e4,_0x3211b7[_0xd410('0x22')]);if(_0x1126c6[_0xd410('0x31')]=='Failed'){_0x152a02[_0xd410('0x12')]();}else{_0x152a02[_0xd410('0x28')]();}})['catch'](function(_0x3942bf){logger['error'](_0xd410('0x10'),_0x4e14e4,JSON[_0xd410('0x26')](_0x3942bf));_0x152a02['next']();});}else{_0x152a02[_0xd410('0x12')]();}});}}catch(_0x5b9181){logger['error'](_0xd410('0x10'),_0x4e14e4,JSON[_0xd410('0x26')](_0x5b9181));_0x152a02[_0xd410('0x28')]();}};};
\ No newline at end of file
+var _0xa361=['moment','aws-sdk','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','consequence','isNil','interaction','UserId','info','[%s][AMAZONLEX]\x20%s','contact','format','YYYY-MM-DD\x20HH:mm:ss','channel','phone','chat','account','upperFirst','InteractionId','created','isEmpty','body','getMustacheRender','Message','create','catch','stringify','stop','[%s][AMAZONLEX]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','LexRuntime','$LATEST','message','toString','postText','error','next','providerName','amazonlex','providerResponse','then','dialogState'];(function(_0x14ad2f,_0x4bc696){var _0x121449=function(_0x30b85c){while(--_0x30b85c){_0x14ad2f['push'](_0x14ad2f['shift']());}};_0x121449(++_0x4bc696);}(_0xa361,0x90));var _0x1a36=function(_0x22bf04,_0x119eea){_0x22bf04=_0x22bf04-0x0;var _0x1e9c8a=_0xa361[_0x22bf04];return _0x1e9c8a;};'use strict';var _=require('lodash');var moment=require(_0x1a36('0x0'));var AWS=require(_0x1a36('0x1'));var utils=require(_0x1a36('0x2'));var logger=require(_0x1a36('0x3'))(_0x1a36('0x4'));var rpc={'chatMessage':require(_0x1a36('0x5')),'openchannelMessage':require(_0x1a36('0x6')),'mailMessage':require(_0x1a36('0x7')),'smsMessage':require(_0x1a36('0x8')),'faxMessage':require(_0x1a36('0x9')),'whatsappMessage':require(_0x1a36('0xa'))};exports[_0x1a36('0xb')]=function(_0x56f43a,_0x1a8546){return function(_0x28a32e){try{if(!_[_0x1a36('0xc')](this[_0x1a36('0xd')][_0x1a36('0xe')])){logger[_0x1a36('0xf')](_0x1a36('0x10'),_0x56f43a,'Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.');return _0x28a32e['next']();}var _0x1efe31={'ContactId':this[_0x1a36('0x11')]['id'],'sentAt':moment()[_0x1a36('0x12')](_0x1a36('0x13')),'direction':'out'};if(this['channel']==='sms'||this[_0x1a36('0x14')]==='whatsapp'){_0x1efe31[_0x1a36('0x15')]=this[_0x1a36('0xd')][_0x1a36('0x15')];}var _0x3b9af1=this[_0x1a36('0x14')];if(_0x3b9af1===_0x1a36('0x16')){_0x1efe31['ChatWebsiteId']=this['account']['id'];}else{_0x1efe31[_['upperFirst'](_0x3b9af1)+'AccountId']=this[_0x1a36('0x17')]['id'];}_0x1efe31[_[_0x1a36('0x18')](_0x3b9af1)+_0x1a36('0x19')]=this[_0x1a36('0xd')]['id'];if(this[_0x1a36('0xd')][_0x1a36('0x1a')]){var _0x1d7c19=_0x1a8546[0x4];if(!_[_0x1a36('0x1b')](_0x1d7c19)){_0x1efe31[_0x1a36('0x1c')]=utils[_0x1a36('0x1d')](_0x1d7c19,this);return rpc[_0x3b9af1+_0x1a36('0x1e')][_0x1a36('0x1f')](_0x1efe31)['then'](function(_0x10e62e){logger['info'](_0x1a36('0x10'),_0x56f43a,_0x1efe31[_0x1a36('0x1c')]);})[_0x1a36('0x20')](function(_0x132e5d){logger['error'](_0x1a36('0x10'),_0x56f43a,JSON[_0x1a36('0x21')](_0x132e5d));})['finally'](function(){logger[_0x1a36('0xf')]('[%s][AMAZONLEX]\x20Welcome\x20Message\x20has\x20been\x20sent!',_0x56f43a);_0x28a32e[_0x1a36('0x22')]();});}else{logger[_0x1a36('0xf')](_0x1a36('0x23'),_0x56f43a);_0x28a32e[_0x1a36('0x22')]();}}else{var _0x402d6a=this;var _0x393187=new AWS[(_0x1a36('0x24'))]({'accessKeyId':_0x1a8546[0x0],'secretAccessKey':_0x1a8546[0x1],'region':_0x1a8546[0x2]});var _0x4cbfca={'botAlias':_0x1a36('0x25'),'botName':_0x1a8546[0x3],'inputText':this[_0x1a36('0x26')][_0x1a36('0x1c')],'userId':this[_0x1a36('0x14')]+':'+this[_0x1a36('0xd')]['id'][_0x1a36('0x27')]()};_0x393187[_0x1a36('0x28')](_0x4cbfca,function(_0x3bb47f,_0x327569){if(_0x3bb47f){logger[_0x1a36('0x29')](_0x1a36('0x10'),_0x56f43a,_0x3bb47f[_0x1a36('0x26')]);_0x28a32e[_0x1a36('0x2a')]();}else if(_0x327569&&_0x327569['message']){_0x402d6a[_0x1a36('0x1c')]['amazonlex']=_0x327569;_0x1efe31[_0x1a36('0x1c')]=_0x327569[_0x1a36('0x26')];_0x1efe31[_0x1a36('0x2b')]=_0x1a36('0x2c');_0x1efe31[_0x1a36('0x2d')]=JSON[_0x1a36('0x21')](_0x327569);return rpc[_0x3b9af1+_0x1a36('0x1e')][_0x1a36('0x1f')](_0x1efe31)[_0x1a36('0x2e')](function(_0xb174a4){logger[_0x1a36('0xf')](_0x1a36('0x10'),_0x56f43a,_0x1efe31[_0x1a36('0x1c')]);if(_0x327569[_0x1a36('0x2f')]=='Failed'){_0x28a32e[_0x1a36('0x2a')]();}else{_0x28a32e[_0x1a36('0x22')]();}})[_0x1a36('0x20')](function(_0x55e3f9){logger[_0x1a36('0x29')](_0x1a36('0x10'),_0x56f43a,JSON[_0x1a36('0x21')](_0x55e3f9));_0x28a32e[_0x1a36('0x2a')]();});}else{_0x28a32e[_0x1a36('0x2a')]();}});}}catch(_0x1184f0){logger[_0x1a36('0x29')](_0x1a36('0x10'),_0x56f43a,JSON[_0x1a36('0x21')](_0x1184f0));_0x28a32e[_0x1a36('0x22')]();}};};
\ No newline at end of file
index a39c362..dd2a417 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f8a=['</div>','headers','All','auto_reply','create','then','error','[RPC][%s][AUTOREPLY]\x20%s','stringify','finally','resolve','autoreplyExecuted','Interaction','catch','[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s','stop','lodash','moment','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/whatsappMessage','../../rpc/chatInteraction','../../rpc/smsInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','../../mailRpc','consequence','channel','body','isAutoreply','info','isNil','interaction','created','[%s][AUTOREPLY]\x20%s','Autoreply\x20already\x20sent','[%s][AUTOREPLY][autoreplyExecuted]\x20%s','One\x20Time\x20already\x20sent','next','contact','format','YYYY-MM-DD\x20HH:mm:ss','mail','getMustacheRender','from','message','phone','subject','startsWith','Re:','Re:\x20','chat','ChatWebsiteId','upperFirst','AccountId','account','Message','Smtp','service','host','port','secure','user','pass','messageId','html','<div\x20id=\x22xm-mail-content\x22>','replace','<div\x20id=\x22xm-mail-content\x22','<div'];(function(_0x575c35,_0x50f38d){var _0x4e7eeb=function(_0x323558){while(--_0x323558){_0x575c35['push'](_0x575c35['shift']());}};_0x4e7eeb(++_0x50f38d);}(_0x4f8a,0x1cc));var _0xa4f8=function(_0x1cadb1,_0x50801a){_0x1cadb1=_0x1cadb1-0x0;var _0x4565a6=_0x4f8a[_0x1cadb1];return _0x4565a6;};'use strict';var _=require(_0xa4f8('0x0'));var moment=require(_0xa4f8('0x1'));var utils=require('./utils');var logger=require(_0xa4f8('0x2'))(_0xa4f8('0x3'));var rpc={'chatMessage':require(_0xa4f8('0x4')),'openchannelMessage':require(_0xa4f8('0x5')),'mailMessage':require(_0xa4f8('0x6')),'smsMessage':require(_0xa4f8('0x7')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0xa4f8('0x8')),'chatInteraction':require(_0xa4f8('0x9')),'openchannelInteraction':require('../../rpc/openchannelInteraction'),'mailInteraction':require('../../rpc/mailInteraction'),'smsInteraction':require(_0xa4f8('0xa')),'faxInteraction':require(_0xa4f8('0xb')),'whatsappInteraction':require(_0xa4f8('0xc'))};var mailRpc=require(_0xa4f8('0xd'));exports[_0xa4f8('0xe')]=function(_0x12b1bc,_0x1e7dfe,_0x1bfda4,_0x343bb1){return function(_0x24be3f){try{var _0xf34a37=this[_0xa4f8('0xf')];if(_0xf34a37==='mail'&&_0x343bb1[_0xa4f8('0x10')][_0xa4f8('0x11')]){logger[_0xa4f8('0x12')]('[%s][AUTOREPLY]\x20%s',_0x12b1bc,'Autoreply\x20not\x20executed\x20(message\x20is\x20autoreply)');return _0x24be3f['next']();}if(_0x1e7dfe[0x0]==='1'&&(_[_0xa4f8('0x13')](this[_0xa4f8('0x14')][_0xa4f8('0x15')])||!this[_0xa4f8('0x14')][_0xa4f8('0x15')])){logger['info'](_0xa4f8('0x16'),_0x12b1bc,_0xa4f8('0x17'));return _0x24be3f['next']();}if(_0x1e7dfe[0x0]==='2'&&this[_0xa4f8('0x14')]['autoreplyExecuted']){logger[_0xa4f8('0x12')](_0xa4f8('0x18'),_0x12b1bc,_0xa4f8('0x19'));return _0x24be3f[_0xa4f8('0x1a')]();}var _0x2c6bb9={'ContactId':this[_0xa4f8('0x1b')]['id'],'sentAt':moment()[_0xa4f8('0x1c')](_0xa4f8('0x1d')),'direction':'out'};if(this[_0xa4f8('0xf')]===_0xa4f8('0x1e')){_0x2c6bb9['body']=utils[_0xa4f8('0x1f')](_0x1e7dfe[0x2],this);}else{_0x2c6bb9[_0xa4f8('0x10')]=utils[_0xa4f8('0x1f')](_0x1e7dfe[0x1],this);}if(this['message']){_0x2c6bb9['to']=this['message'][_0xa4f8('0x20')]||'';if(this[_0xa4f8('0xf')]===_0xa4f8('0x1e')&&_0x1e7dfe[0x1]==='1'){_0x2c6bb9['cc']=this['message']['cc']||'';}_0x2c6bb9[_0xa4f8('0x20')]=this[_0xa4f8('0x21')]['to']||'';_0x2c6bb9['phone']=this[_0xa4f8('0x21')][_0xa4f8('0x22')]||'';_0x2c6bb9['read']=!![];if(this[_0xa4f8('0x21')][_0xa4f8('0x23')]){_0x2c6bb9[_0xa4f8('0x23')]='';_0x2c6bb9[_0xa4f8('0x23')]+=_[_0xa4f8('0x24')](this[_0xa4f8('0x21')]['subject'],_0xa4f8('0x25'))?'':_0xa4f8('0x26');_0x2c6bb9[_0xa4f8('0x23')]+=this[_0xa4f8('0x21')][_0xa4f8('0x23')];}}if(this[_0xa4f8('0xf')]===_0xa4f8('0x27')){_0x2c6bb9[_0xa4f8('0x28')]=this['account']['id'];}else{_0x2c6bb9[_[_0xa4f8('0x29')](this['channel'])+_0xa4f8('0x2a')]=this[_0xa4f8('0x2b')]['id'];}_0x2c6bb9[_['upperFirst'](this['channel'])+'InteractionId']=this[_0xa4f8('0x14')]['id'];var _0x236111=this[_0xa4f8('0x14')];if(rpc[this['channel']+_0xa4f8('0x2c')]){if(this['channel']===_0xa4f8('0x1e')){var _0x3980d3={'tls':{'rejectUnauthorized':![]}};if(this[_0xa4f8('0x2b')][_0xa4f8('0x2d')][_0xa4f8('0x2e')]){_0x3980d3[_0xa4f8('0x2e')]=this[_0xa4f8('0x2b')][_0xa4f8('0x2d')]['service'];}else{_0x3980d3[_0xa4f8('0x2f')]=this['account'][_0xa4f8('0x2d')][_0xa4f8('0x2f')];_0x3980d3[_0xa4f8('0x30')]=this[_0xa4f8('0x2b')]['Smtp']['port'];_0x3980d3[_0xa4f8('0x31')]=this[_0xa4f8('0x2b')]['Smtp'][_0xa4f8('0x31')];}if(this[_0xa4f8('0x2b')]['Smtp']['authentication']){_0x3980d3['auth']={'user':this['account'][_0xa4f8('0x2d')][_0xa4f8('0x32')],'pass':this['account'][_0xa4f8('0x2d')][_0xa4f8('0x33')]};}_0x2c6bb9['inReplyTo']=this[_0xa4f8('0x21')][_0xa4f8('0x34')];_0x2c6bb9[_0xa4f8('0x35')]=_0xa4f8('0x36')+_[_0xa4f8('0x37')](_0x2c6bb9[_0xa4f8('0x10')],_0xa4f8('0x38'),_0xa4f8('0x39'))+_0xa4f8('0x3a');_0x2c6bb9[_0xa4f8('0x3b')]={'Auto-Submitted':'auto-replied','X-Auto-Response-Suppress':_0xa4f8('0x3c'),'Precedence':_0xa4f8('0x3d')};return mailRpc['sendMailMessage'](_0x3980d3,_0x2c6bb9)['then'](function(_0x5f3fad){logger[_0xa4f8('0x12')]('[%s][AUTOREPLY]\x20SMTP\x20SENT',_0x12b1bc);_0x2c6bb9[_0xa4f8('0x34')]=_0x5f3fad['message'][_0xa4f8('0x34')];return rpc[_0xf34a37+_0xa4f8('0x2c')][_0xa4f8('0x3e')](_0x2c6bb9);})[_0xa4f8('0x3f')](function(_0x586ff7){logger[_0xa4f8('0x12')](_0xa4f8('0x16'),_0x12b1bc,JSON['stringify'](_0x586ff7));})['catch'](function(_0x34c409){logger[_0xa4f8('0x40')](_0xa4f8('0x41'),_0x12b1bc,JSON[_0xa4f8('0x42')](_0x34c409));})[_0xa4f8('0x43')](function(){Promise[_0xa4f8('0x44')]()[_0xa4f8('0x3f')](function(){if(_0x1e7dfe[0x0]!=='2'||_0x236111[_0xa4f8('0x45')])return;return rpc[_0xf34a37+_0xa4f8('0x46')]['update'](_0x236111['id'],{'autoreplyExecuted':!![]})[_0xa4f8('0x3f')](function(_0x34c07d){logger[_0xa4f8('0x12')]('[%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x12b1bc,JSON[_0xa4f8('0x42')](_0x34c07d));})[_0xa4f8('0x47')](function(_0x3a27d2){logger[_0xa4f8('0x40')](_0xa4f8('0x48'),_0x12b1bc,JSON[_0xa4f8('0x42')](_0x3a27d2));});})['then'](function(){_0x24be3f[_0xa4f8('0x1a')]();});});}else{return rpc[this[_0xa4f8('0xf')]+_0xa4f8('0x2c')]['create'](_0x2c6bb9)[_0xa4f8('0x3f')](function(_0x4afe9b){logger['info'](_0xa4f8('0x16'),_0x12b1bc,_0x2c6bb9['body']);})[_0xa4f8('0x47')](function(_0x29bfc8){logger['error'](_0xa4f8('0x16'),_0x12b1bc,JSON[_0xa4f8('0x42')](_0x29bfc8));})[_0xa4f8('0x43')](function(){Promise[_0xa4f8('0x44')]()[_0xa4f8('0x3f')](function(){if(_0x1e7dfe[0x0]!=='2'||_0x236111['autoreplyExecuted'])return;return rpc[_0xf34a37+'Interaction']['update'](_0x236111['id'],{'autoreplyExecuted':!![]})[_0xa4f8('0x3f')](function(_0x9b3eed){logger['info']('[%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x12b1bc,JSON['stringify'](_0x9b3eed));})[_0xa4f8('0x47')](function(_0x16f5d3){logger[_0xa4f8('0x40')]('[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x12b1bc,JSON[_0xa4f8('0x42')](_0x16f5d3));});})[_0xa4f8('0x3f')](function(){_0x24be3f[_0xa4f8('0x1a')]();});});}}}catch(_0x453919){logger[_0xa4f8('0x40')]('[%s][AUTOREPLY]\x20%s',_0x12b1bc,JSON[_0xa4f8('0x42')](_0x453919));_0x24be3f[_0xa4f8('0x49')]();}};};
\ No newline at end of file
+var _0x6e1f=['One\x20Time\x20already\x20sent','next','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','getMustacheRender','message','read','subject','startsWith','Re:\x20','chat','ChatWebsiteId','account','upperFirst','AccountId','Message','Smtp','service','host','port','secure','authentication','inReplyTo','html','replace','<div','</div>','headers','auto-replied','All','auto_reply','sendMailMessage','then','messageId','create','stringify','catch','finally','Interaction','update','error','[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s','resolve','stop','lodash','moment','./utils','../../../../config/logger','routing','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/whatsappMessage','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','../../mailRpc','consequence','channel','mail','body','[%s][AUTOREPLY]\x20%s','Autoreply\x20not\x20executed\x20(message\x20is\x20autoreply)','isNil','interaction','created','info','Autoreply\x20already\x20sent','autoreplyExecuted','[%s][AUTOREPLY][autoreplyExecuted]\x20%s'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x6e1f,0x1ea));var _0xf6e1=function(_0x216be7,_0x4ce317){_0x216be7=_0x216be7-0x0;var _0x50853f=_0x6e1f[_0x216be7];return _0x50853f;};'use strict';var _=require(_0xf6e1('0x0'));var moment=require(_0xf6e1('0x1'));var utils=require(_0xf6e1('0x2'));var logger=require(_0xf6e1('0x3'))(_0xf6e1('0x4'));var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require(_0xf6e1('0x5')),'mailMessage':require(_0xf6e1('0x6')),'smsMessage':require(_0xf6e1('0x7')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0xf6e1('0x8')),'chatInteraction':require(_0xf6e1('0x9')),'openchannelInteraction':require(_0xf6e1('0xa')),'mailInteraction':require(_0xf6e1('0xb')),'smsInteraction':require('../../rpc/smsInteraction'),'faxInteraction':require(_0xf6e1('0xc')),'whatsappInteraction':require(_0xf6e1('0xd'))};var mailRpc=require(_0xf6e1('0xe'));exports[_0xf6e1('0xf')]=function(_0x8657d9,_0x4a14e7,_0x48f9a4,_0x29fad1){return function(_0x404206){try{var _0x4ec592=this[_0xf6e1('0x10')];if(_0x4ec592===_0xf6e1('0x11')&&_0x29fad1[_0xf6e1('0x12')]['isAutoreply']){logger['info'](_0xf6e1('0x13'),_0x8657d9,_0xf6e1('0x14'));return _0x404206['next']();}if(_0x4a14e7[0x0]==='1'&&(_[_0xf6e1('0x15')](this[_0xf6e1('0x16')][_0xf6e1('0x17')])||!this['interaction'][_0xf6e1('0x17')])){logger[_0xf6e1('0x18')](_0xf6e1('0x13'),_0x8657d9,_0xf6e1('0x19'));return _0x404206['next']();}if(_0x4a14e7[0x0]==='2'&&this[_0xf6e1('0x16')][_0xf6e1('0x1a')]){logger[_0xf6e1('0x18')](_0xf6e1('0x1b'),_0x8657d9,_0xf6e1('0x1c'));return _0x404206[_0xf6e1('0x1d')]();}var _0x6088b6={'ContactId':this[_0xf6e1('0x1e')]['id'],'sentAt':moment()[_0xf6e1('0x1f')](_0xf6e1('0x20')),'direction':_0xf6e1('0x21')};if(this[_0xf6e1('0x10')]===_0xf6e1('0x11')){_0x6088b6[_0xf6e1('0x12')]=utils['getMustacheRender'](_0x4a14e7[0x2],this);}else{_0x6088b6[_0xf6e1('0x12')]=utils[_0xf6e1('0x22')](_0x4a14e7[0x1],this);}if(this[_0xf6e1('0x23')]){_0x6088b6['to']=this['message']['from']||'';if(this[_0xf6e1('0x10')]===_0xf6e1('0x11')&&_0x4a14e7[0x1]==='1'){_0x6088b6['cc']=this[_0xf6e1('0x23')]['cc']||'';}_0x6088b6['from']=this[_0xf6e1('0x23')]['to']||'';_0x6088b6['phone']=this['message']['phone']||'';_0x6088b6[_0xf6e1('0x24')]=!![];if(this[_0xf6e1('0x23')][_0xf6e1('0x25')]){_0x6088b6['subject']='';_0x6088b6[_0xf6e1('0x25')]+=_[_0xf6e1('0x26')](this[_0xf6e1('0x23')][_0xf6e1('0x25')],'Re:')?'':_0xf6e1('0x27');_0x6088b6[_0xf6e1('0x25')]+=this[_0xf6e1('0x23')][_0xf6e1('0x25')];}}if(this['channel']===_0xf6e1('0x28')){_0x6088b6[_0xf6e1('0x29')]=this[_0xf6e1('0x2a')]['id'];}else{_0x6088b6[_[_0xf6e1('0x2b')](this[_0xf6e1('0x10')])+_0xf6e1('0x2c')]=this['account']['id'];}_0x6088b6[_[_0xf6e1('0x2b')](this['channel'])+'InteractionId']=this[_0xf6e1('0x16')]['id'];var _0x196167=this[_0xf6e1('0x16')];if(rpc[this[_0xf6e1('0x10')]+_0xf6e1('0x2d')]){if(this[_0xf6e1('0x10')]===_0xf6e1('0x11')){var _0x2cfc16={'tls':{'rejectUnauthorized':![]}};if(this['account'][_0xf6e1('0x2e')][_0xf6e1('0x2f')]){_0x2cfc16['service']=this['account'][_0xf6e1('0x2e')][_0xf6e1('0x2f')];}else{_0x2cfc16[_0xf6e1('0x30')]=this[_0xf6e1('0x2a')][_0xf6e1('0x2e')][_0xf6e1('0x30')];_0x2cfc16[_0xf6e1('0x31')]=this[_0xf6e1('0x2a')][_0xf6e1('0x2e')][_0xf6e1('0x31')];_0x2cfc16[_0xf6e1('0x32')]=this['account'][_0xf6e1('0x2e')][_0xf6e1('0x32')];}if(this[_0xf6e1('0x2a')][_0xf6e1('0x2e')][_0xf6e1('0x33')]){_0x2cfc16['auth']={'user':this['account'][_0xf6e1('0x2e')]['user'],'pass':this[_0xf6e1('0x2a')][_0xf6e1('0x2e')]['pass']};}_0x6088b6[_0xf6e1('0x34')]=this[_0xf6e1('0x23')]['messageId'];_0x6088b6[_0xf6e1('0x35')]='<div\x20id=\x22xm-mail-content\x22>'+_[_0xf6e1('0x36')](_0x6088b6['body'],'<div\x20id=\x22xm-mail-content\x22',_0xf6e1('0x37'))+_0xf6e1('0x38');_0x6088b6[_0xf6e1('0x39')]={'Auto-Submitted':_0xf6e1('0x3a'),'X-Auto-Response-Suppress':_0xf6e1('0x3b'),'Precedence':_0xf6e1('0x3c')};return mailRpc[_0xf6e1('0x3d')](_0x2cfc16,_0x6088b6)[_0xf6e1('0x3e')](function(_0x1ea914){logger[_0xf6e1('0x18')]('[%s][AUTOREPLY]\x20SMTP\x20SENT',_0x8657d9);_0x6088b6[_0xf6e1('0x3f')]=_0x1ea914[_0xf6e1('0x23')]['messageId'];return rpc[_0x4ec592+_0xf6e1('0x2d')][_0xf6e1('0x40')](_0x6088b6);})[_0xf6e1('0x3e')](function(_0x2a0d9e){logger['info'](_0xf6e1('0x13'),_0x8657d9,JSON[_0xf6e1('0x41')](_0x2a0d9e));})[_0xf6e1('0x42')](function(_0xe3385d){logger['error']('[RPC][%s][AUTOREPLY]\x20%s',_0x8657d9,JSON[_0xf6e1('0x41')](_0xe3385d));})[_0xf6e1('0x43')](function(){Promise['resolve']()['then'](function(){if(_0x4a14e7[0x0]!=='2'||_0x196167[_0xf6e1('0x1a')])return;return rpc[_0x4ec592+_0xf6e1('0x44')][_0xf6e1('0x45')](_0x196167['id'],{'autoreplyExecuted':!![]})[_0xf6e1('0x3e')](function(_0x4d86e9){logger[_0xf6e1('0x18')](_0xf6e1('0x1b'),_0x8657d9,JSON['stringify'](_0x4d86e9));})[_0xf6e1('0x42')](function(_0x2388c8){logger[_0xf6e1('0x46')](_0xf6e1('0x47'),_0x8657d9,JSON[_0xf6e1('0x41')](_0x2388c8));});})[_0xf6e1('0x3e')](function(){_0x404206[_0xf6e1('0x1d')]();});});}else{return rpc[this[_0xf6e1('0x10')]+_0xf6e1('0x2d')][_0xf6e1('0x40')](_0x6088b6)[_0xf6e1('0x3e')](function(_0x31a836){logger['info'](_0xf6e1('0x13'),_0x8657d9,_0x6088b6[_0xf6e1('0x12')]);})[_0xf6e1('0x42')](function(_0x52a97c){logger[_0xf6e1('0x46')]('[%s][AUTOREPLY]\x20%s',_0x8657d9,JSON[_0xf6e1('0x41')](_0x52a97c));})[_0xf6e1('0x43')](function(){Promise[_0xf6e1('0x48')]()['then'](function(){if(_0x4a14e7[0x0]!=='2'||_0x196167['autoreplyExecuted'])return;return rpc[_0x4ec592+_0xf6e1('0x44')][_0xf6e1('0x45')](_0x196167['id'],{'autoreplyExecuted':!![]})[_0xf6e1('0x3e')](function(_0x10da0b){logger['info'](_0xf6e1('0x1b'),_0x8657d9,JSON[_0xf6e1('0x41')](_0x10da0b));})[_0xf6e1('0x42')](function(_0x520d79){logger['error'](_0xf6e1('0x47'),_0x8657d9,JSON[_0xf6e1('0x41')](_0x520d79));});})['then'](function(){_0x404206['next']();});});}}}catch(_0x445eab){logger['error']('[%s][AUTOREPLY]\x20%s',_0x8657d9,JSON['stringify'](_0x445eab));_0x404206[_0xf6e1('0x49')]();}};};
\ No newline at end of file
index 66b9cfd..faac598 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb647=['stop','moment','routing','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/mailInteraction','../../rpc/whatsappInteraction','consequence','info','YYYY-MM-DD\x20HH:mm:ss','channel','Interaction','update','interaction','then','error','[%s][CLOSE]\x20%s','stringify','finally'];(function(_0x3f79b0,_0x26c934){var _0xb7416b=function(_0x5c3a9e){while(--_0x5c3a9e){_0x3f79b0['push'](_0x3f79b0['shift']());}};_0xb7416b(++_0x26c934);}(_0xb647,0x1b9));var _0x7b64=function(_0x1f974e,_0x5b6773){_0x1f974e=_0x1f974e-0x0;var _0x59a550=_0xb647[_0x1f974e];return _0x59a550;};'use strict';var moment=require(_0x7b64('0x0'));var logger=require('../../../../config/logger')(_0x7b64('0x1'));var rpc={'chatInteraction':require(_0x7b64('0x2')),'openchannelInteraction':require(_0x7b64('0x3')),'smsInteraction':require(_0x7b64('0x4')),'mailInteraction':require(_0x7b64('0x5')),'faxInteraction':require('../../rpc/faxInteraction'),'whatsappInteraction':require(_0x7b64('0x6'))};exports[_0x7b64('0x7')]=function(_0x13db3d,_0x55515f,_0x5b8dd5,_0x8fb8fb){return function(_0x49a223){try{logger[_0x7b64('0x8')]('[%s][CLOSE]\x20reason\x20%s',_0x13db3d,_0x55515f[0x0]);var _0x1d46bd={'closed':0x1,'closedAt':moment()['format'](_0x7b64('0x9')),'closeReason':'system','disposition':_0x55515f[0x0]};if(rpc[_0x8fb8fb[_0x7b64('0xa')]+'Interaction']){rpc[_0x8fb8fb[_0x7b64('0xa')]+_0x7b64('0xb')][_0x7b64('0xc')](_0x8fb8fb[_0x7b64('0xd')]['id'],_0x1d46bd)[_0x7b64('0xe')](function(_0x33fd08){logger[_0x7b64('0x8')]('[%s][CLOSE]\x20interaction\x20%s\x20has\x20been\x20closed!',_0x13db3d,_0x8fb8fb['interaction']['id']);})['catch'](function(_0x2c6855){logger[_0x7b64('0xf')](_0x7b64('0x10'),_0x13db3d,JSON[_0x7b64('0x11')](_0x2c6855));})[_0x7b64('0x12')](function(){_0x49a223[_0x7b64('0x13')]();});}}catch(_0x16f195){logger[_0x7b64('0xf')](_0x7b64('0x10'),_0x13db3d,JSON['stringify'](_0x16f195));_0x49a223[_0x7b64('0x13')]();}};};
\ No newline at end of file
+var _0xb20e=['catch','stringify','finally','stop','[%s][CLOSE]\x20%s','../../../../config/logger','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','consequence','info','[%s][CLOSE]\x20reason\x20%s','system','channel','update','interaction','[%s][CLOSE]\x20interaction\x20%s\x20has\x20been\x20closed!'];(function(_0x29a894,_0x5f2d6f){var _0x588f68=function(_0x3a19cf){while(--_0x3a19cf){_0x29a894['push'](_0x29a894['shift']());}};_0x588f68(++_0x5f2d6f);}(_0xb20e,0xcd));var _0xeb20=function(_0x39084a,_0x2ec7af){_0x39084a=_0x39084a-0x0;var _0x57b74b=_0xb20e[_0x39084a];return _0x57b74b;};'use strict';var moment=require('moment');var logger=require(_0xeb20('0x0'))('routing');var rpc={'chatInteraction':require(_0xeb20('0x1')),'openchannelInteraction':require(_0xeb20('0x2')),'smsInteraction':require(_0xeb20('0x3')),'mailInteraction':require(_0xeb20('0x4')),'faxInteraction':require(_0xeb20('0x5')),'whatsappInteraction':require(_0xeb20('0x6'))};exports[_0xeb20('0x7')]=function(_0x24bce4,_0x1c6f4c,_0x4030c6,_0x1fbb04){return function(_0x513bd2){try{logger[_0xeb20('0x8')](_0xeb20('0x9'),_0x24bce4,_0x1c6f4c[0x0]);var _0x4bf60b={'closed':0x1,'closedAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'closeReason':_0xeb20('0xa'),'disposition':_0x1c6f4c[0x0]};if(rpc[_0x1fbb04[_0xeb20('0xb')]+'Interaction']){rpc[_0x1fbb04[_0xeb20('0xb')]+'Interaction'][_0xeb20('0xc')](_0x1fbb04[_0xeb20('0xd')]['id'],_0x4bf60b)['then'](function(_0x19710f){logger[_0xeb20('0x8')](_0xeb20('0xe'),_0x24bce4,_0x1fbb04[_0xeb20('0xd')]['id']);})[_0xeb20('0xf')](function(_0x37264e){logger['error']('[%s][CLOSE]\x20%s',_0x24bce4,JSON[_0xeb20('0x10')](_0x37264e));})[_0xeb20('0x11')](function(){_0x513bd2[_0xeb20('0x12')]();});}}catch(_0x4f324f){logger['error'](_0xeb20('0x13'),_0x24bce4,JSON[_0xeb20('0x10')](_0x4f324f));_0x513bd2['stop']();}};};
\ No newline at end of file
index 10237c3..5258e19 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c6c=['create','then','catch','error','[%s][DIALOGFLOW]\x20%s','stringify','finally','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','textRequest','dialogflow','result','fulfillment','speech','providerName','providerResponse','metadata','endConversation','lodash','apiai-promise','md5','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/faxMessage','consequence','UserId','info','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','YYYY-MM-DD\x20HH:mm:ss','out','channel','whatsapp','phone','interaction','chat','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','created','isEmpty','body','getMustacheRender','Message'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x3c6c,0x7b));var _0xc3c6=function(_0x17c14a,_0x4a6402){_0x17c14a=_0x17c14a-0x0;var _0x270c4c=_0x3c6c[_0x17c14a];return _0x270c4c;};'use strict';var _=require(_0xc3c6('0x0'));var moment=require('moment');var apiai=require(_0xc3c6('0x1'));var md5=require(_0xc3c6('0x2'));var utils=require(_0xc3c6('0x3'));var logger=require(_0xc3c6('0x4'))(_0xc3c6('0x5'));var rpc={'chatMessage':require(_0xc3c6('0x6')),'openchannelMessage':require(_0xc3c6('0x7')),'mailMessage':require(_0xc3c6('0x8')),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require(_0xc3c6('0x9')),'whatsappMessage':require('../../rpc/whatsappMessage')};exports[_0xc3c6('0xa')]=function(_0x4d7ae6,_0x50cd05){return function(_0x4aed87){try{if(!_['isNil'](this['interaction'][_0xc3c6('0xb')])){logger[_0xc3c6('0xc')]('[%s][DIALOGFLOW]\x20%s',_0x4d7ae6,_0xc3c6('0xd'));return _0x4aed87[_0xc3c6('0xe')]();}var _0x44b9c9={'ContactId':this[_0xc3c6('0xf')]['id'],'sentAt':moment()['format'](_0xc3c6('0x10')),'direction':_0xc3c6('0x11')};if(this[_0xc3c6('0x12')]==='sms'||this['channel']===_0xc3c6('0x13')){_0x44b9c9[_0xc3c6('0x14')]=this[_0xc3c6('0x15')][_0xc3c6('0x14')];}var _0x406fea=this[_0xc3c6('0x12')];if(_0x406fea===_0xc3c6('0x16')){_0x44b9c9[_0xc3c6('0x17')]=this[_0xc3c6('0x18')]['id'];}else{_0x44b9c9[_[_0xc3c6('0x19')](_0x406fea)+_0xc3c6('0x1a')]=this[_0xc3c6('0x18')]['id'];}_0x44b9c9[_[_0xc3c6('0x19')](_0x406fea)+_0xc3c6('0x1b')]=this[_0xc3c6('0x15')]['id'];if(this[_0xc3c6('0x15')][_0xc3c6('0x1c')]){var _0x181b3b=_0x50cd05[0x2];if(!_[_0xc3c6('0x1d')](_0x181b3b)){_0x44b9c9[_0xc3c6('0x1e')]=utils[_0xc3c6('0x1f')](_0x181b3b,this);return rpc[_0x406fea+_0xc3c6('0x20')][_0xc3c6('0x21')](_0x44b9c9)[_0xc3c6('0x22')](function(_0x3003e1){logger[_0xc3c6('0xc')]('[%s][DIALOGFLOW]\x20%s',_0x4d7ae6,_0x44b9c9[_0xc3c6('0x1e')]);})[_0xc3c6('0x23')](function(_0x2150e0){logger[_0xc3c6('0x24')](_0xc3c6('0x25'),_0x4d7ae6,JSON[_0xc3c6('0x26')](_0x2150e0));})[_0xc3c6('0x27')](function(){logger[_0xc3c6('0xc')](_0xc3c6('0x28'),_0x4d7ae6);_0x4aed87[_0xc3c6('0x29')]();});}else{logger[_0xc3c6('0xc')](_0xc3c6('0x2a'),_0x4d7ae6);_0x4aed87[_0xc3c6('0x29')]();}}else{var _0x392d20=this;var _0x3d03b0=apiai(_0x50cd05[0x0],{'language':_0x50cd05[0x1]||'en'});return _0x3d03b0[_0xc3c6('0x2b')](this['message'][_0xc3c6('0x1e')],{'sessionId':md5(this[_0xc3c6('0x15')]['id'])})[_0xc3c6('0x22')](function(_0x565a86){_0x392d20[_0xc3c6('0x1e')][_0xc3c6('0x2c')]=_0x565a86;_0x44b9c9[_0xc3c6('0x1e')]=_0x565a86[_0xc3c6('0x2d')][_0xc3c6('0x2e')][_0xc3c6('0x2f')];_0x44b9c9[_0xc3c6('0x30')]='dialogflow';_0x44b9c9[_0xc3c6('0x31')]=JSON[_0xc3c6('0x26')](_0x565a86);return rpc[_0x406fea+'Message'][_0xc3c6('0x21')](_0x44b9c9)[_0xc3c6('0x22')](function(_0x1457f7){logger[_0xc3c6('0xc')](_0xc3c6('0x25'),_0x4d7ae6,_0x44b9c9[_0xc3c6('0x1e')]);if(_0x565a86[_0xc3c6('0x2d')][_0xc3c6('0x32')][_0xc3c6('0x33')]){_0x4aed87['next']();}else{_0x4aed87[_0xc3c6('0x29')]();}})[_0xc3c6('0x23')](function(_0x31975e){logger[_0xc3c6('0x24')]('[%s][DIALOGFLOW]\x20%s',_0x4d7ae6,JSON[_0xc3c6('0x26')](_0x31975e));_0x4aed87[_0xc3c6('0xe')]();});})[_0xc3c6('0x23')](function(_0x75066f){logger[_0xc3c6('0x24')](_0xc3c6('0x25'),_0x4d7ae6,_0x75066f['message']);_0x4aed87[_0xc3c6('0xe')]();});}}catch(_0x249bad){logger[_0xc3c6('0x24')](_0xc3c6('0x25'),_0x4d7ae6,JSON[_0xc3c6('0x26')](_0x249bad));_0x4aed87['stop']();}};};
\ No newline at end of file
+var _0x46e1=['../../rpc/mailMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','consequence','isNil','UserId','[%s][DIALOGFLOW]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','format','channel','sms','whatsapp','phone','interaction','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','created','body','getMustacheRender','Message','create','then','info','error','finally','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20has\x20been\x20sent!','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','dialogflow','result','fulfillment','speech','stringify','metadata','stop','catch','message','lodash','moment','apiai-promise','md5','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0x46e1,0x155));var _0x146e=function(_0x5e23b8,_0x2a8da5){_0x5e23b8=_0x5e23b8-0x0;var _0x2307d5=_0x46e1[_0x5e23b8];return _0x2307d5;};'use strict';var _=require(_0x146e('0x0'));var moment=require(_0x146e('0x1'));var apiai=require(_0x146e('0x2'));var md5=require(_0x146e('0x3'));var utils=require(_0x146e('0x4'));var logger=require(_0x146e('0x5'))(_0x146e('0x6'));var rpc={'chatMessage':require(_0x146e('0x7')),'openchannelMessage':require(_0x146e('0x8')),'mailMessage':require(_0x146e('0x9')),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require(_0x146e('0xa')),'whatsappMessage':require(_0x146e('0xb'))};exports[_0x146e('0xc')]=function(_0x228fe7,_0x70ce4){return function(_0x35e40e){try{if(!_[_0x146e('0xd')](this['interaction'][_0x146e('0xe')])){logger['info'](_0x146e('0xf'),_0x228fe7,_0x146e('0x10'));return _0x35e40e[_0x146e('0x11')]();}var _0x453b5a={'ContactId':this[_0x146e('0x12')]['id'],'sentAt':moment()[_0x146e('0x13')]('YYYY-MM-DD\x20HH:mm:ss'),'direction':'out'};if(this[_0x146e('0x14')]===_0x146e('0x15')||this[_0x146e('0x14')]===_0x146e('0x16')){_0x453b5a[_0x146e('0x17')]=this[_0x146e('0x18')][_0x146e('0x17')];}var _0x2d0443=this['channel'];if(_0x2d0443==='chat'){_0x453b5a[_0x146e('0x19')]=this[_0x146e('0x1a')]['id'];}else{_0x453b5a[_[_0x146e('0x1b')](_0x2d0443)+_0x146e('0x1c')]=this[_0x146e('0x1a')]['id'];}_0x453b5a[_[_0x146e('0x1b')](_0x2d0443)+_0x146e('0x1d')]=this[_0x146e('0x18')]['id'];if(this[_0x146e('0x18')][_0x146e('0x1e')]){var _0x39e41f=_0x70ce4[0x2];if(!_['isEmpty'](_0x39e41f)){_0x453b5a[_0x146e('0x1f')]=utils[_0x146e('0x20')](_0x39e41f,this);return rpc[_0x2d0443+_0x146e('0x21')][_0x146e('0x22')](_0x453b5a)[_0x146e('0x23')](function(_0x431a60){logger[_0x146e('0x24')]('[%s][DIALOGFLOW]\x20%s',_0x228fe7,_0x453b5a[_0x146e('0x1f')]);})['catch'](function(_0x109cfe){logger[_0x146e('0x25')](_0x146e('0xf'),_0x228fe7,JSON['stringify'](_0x109cfe));})[_0x146e('0x26')](function(){logger['info'](_0x146e('0x27'),_0x228fe7);_0x35e40e['stop']();});}else{logger[_0x146e('0x24')](_0x146e('0x28'),_0x228fe7);_0x35e40e['stop']();}}else{var _0x47c6d1=this;var _0x4eca1a=apiai(_0x70ce4[0x0],{'language':_0x70ce4[0x1]||'en'});return _0x4eca1a['textRequest'](this['message']['body'],{'sessionId':md5(this[_0x146e('0x18')]['id'])})['then'](function(_0x301126){_0x47c6d1[_0x146e('0x1f')][_0x146e('0x29')]=_0x301126;_0x453b5a[_0x146e('0x1f')]=_0x301126[_0x146e('0x2a')][_0x146e('0x2b')][_0x146e('0x2c')];_0x453b5a['providerName']=_0x146e('0x29');_0x453b5a['providerResponse']=JSON[_0x146e('0x2d')](_0x301126);return rpc[_0x2d0443+'Message']['create'](_0x453b5a)[_0x146e('0x23')](function(_0x486c6a){logger[_0x146e('0x24')](_0x146e('0xf'),_0x228fe7,_0x453b5a[_0x146e('0x1f')]);if(_0x301126[_0x146e('0x2a')][_0x146e('0x2e')]['endConversation']){_0x35e40e[_0x146e('0x11')]();}else{_0x35e40e[_0x146e('0x2f')]();}})[_0x146e('0x30')](function(_0x1f7362){logger[_0x146e('0x25')](_0x146e('0xf'),_0x228fe7,JSON[_0x146e('0x2d')](_0x1f7362));_0x35e40e[_0x146e('0x11')]();});})['catch'](function(_0x500120){logger[_0x146e('0x25')]('[%s][DIALOGFLOW]\x20%s',_0x228fe7,_0x500120[_0x146e('0x31')]);_0x35e40e['next']();});}}catch(_0x52b279){logger[_0x146e('0x25')](_0x146e('0xf'),_0x228fe7,JSON[_0x146e('0x2d')](_0x52b279));_0x35e40e[_0x146e('0x2f')]();}};};
\ No newline at end of file
index 916dd25..4a001fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xddf6=['channel','sms','whatsapp','phone','chat','ChatWebsiteId','account','upperFirst','InteractionId','created','isEmpty','getMustacheRender','Message','finally','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','replace','SessionsClient','message','detectIntent','dialogflowV2','queryResult','diagnosticInfo','fields','end_conversation','boolValue','DIALOGFLOWV2_ACTION','allRequiredParamsPresent','DIALOGFLOWV2_ENDCONVERSATION','DIALOGFLOWV2_INTENTNAME','intent','name','DIALOGFLOWV2_INTENTDISPLAYNAME','displayName','DIALOGFLOWV2_LANGUAGECODE','DIALOGFLOWV2_QUERYTEXT','queryText','DIALOGFLOWV2_SCORE','intentDetectionConfidence','providerName','providerResponse','stringify','length','push','fulfillmentText','error','dialogflow','md5','moment','bluebird','../../../../config/logger','routing','../../rpc/mailMessage','../../rpc/faxMessage','clone','body','create','then','catch','[%s][DIALOGFLOWV2]\x20%s','consequence','isNil','interaction','UserId','info','next','YYYY-MM-DD\x20HH:mm:ss'];(function(_0x2c0c84,_0x5ab679){var _0x313014=function(_0x1c5658){while(--_0x1c5658){_0x2c0c84['push'](_0x2c0c84['shift']());}};_0x313014(++_0x5ab679);}(_0xddf6,0xf7));var _0x6ddf=function(_0x5cf68a,_0x5c9763){_0x5cf68a=_0x5cf68a-0x0;var _0x26682e=_0xddf6[_0x5cf68a];return _0x26682e;};'use strict';var _=require('lodash');var dialogflow=require(_0x6ddf('0x0'));var md5=require(_0x6ddf('0x1'));var moment=require(_0x6ddf('0x2'));var Promise=require(_0x6ddf('0x3'));var logger=require(_0x6ddf('0x4'))(_0x6ddf('0x5'));var utils=require('./utils');var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require(_0x6ddf('0x6')),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require(_0x6ddf('0x7')),'whatsappMessage':require('../../rpc/whatsappMessage')};function createMessage(_0x2e4a6a,_0x38cfb6,_0x4d9469,_0x1636a0){return new Promise(function(_0x5efe0e,_0x49ab78){var _0x48ca78=_[_0x6ddf('0x8')](_0x4d9469);_0x48ca78[_0x6ddf('0x9')]=_0x1636a0;return rpc[_0x38cfb6+'Message'][_0x6ddf('0xa')](_0x48ca78)[_0x6ddf('0xb')](function(){logger['info']('[%s][DIALOGFLOWV2]\x20%s',_0x2e4a6a,_0x48ca78[_0x6ddf('0x9')]);_0x5efe0e();})[_0x6ddf('0xc')](function(_0x5c9d01){logger['error'](_0x6ddf('0xd'),_0x2e4a6a,JSON['stringify'](_0x5c9d01));_0x49ab78(_0x5c9d01);});});}exports[_0x6ddf('0xe')]=function(_0xb2ffc8,_0x461bdf){return function(_0x309a21){try{if(!_[_0x6ddf('0xf')](this[_0x6ddf('0x10')][_0x6ddf('0x11')])){logger[_0x6ddf('0x12')]('[%s][DIALOGFLOWV2]\x20%s',_0xb2ffc8,'Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.');return _0x309a21[_0x6ddf('0x13')]();}var _0x3652e8={'ContactId':this['contact']['id'],'sentAt':moment()['format'](_0x6ddf('0x14')),'direction':'out'};if(this[_0x6ddf('0x15')]===_0x6ddf('0x16')||this['channel']===_0x6ddf('0x17')){_0x3652e8[_0x6ddf('0x18')]=this[_0x6ddf('0x10')][_0x6ddf('0x18')];}var _0x675c9f=this[_0x6ddf('0x15')];if(_0x675c9f===_0x6ddf('0x19')){_0x3652e8[_0x6ddf('0x1a')]=this[_0x6ddf('0x1b')]['id'];}else{_0x3652e8[_[_0x6ddf('0x1c')](_0x675c9f)+'AccountId']=this[_0x6ddf('0x1b')]['id'];}_0x3652e8[_[_0x6ddf('0x1c')](_0x675c9f)+_0x6ddf('0x1d')]=this['interaction']['id'];if(this['interaction'][_0x6ddf('0x1e')]){var _0x920ba4=_0x461bdf[0x4];if(!_[_0x6ddf('0x1f')](_0x920ba4)){_0x3652e8[_0x6ddf('0x9')]=utils[_0x6ddf('0x20')](_0x920ba4,this);return rpc[_0x675c9f+_0x6ddf('0x21')][_0x6ddf('0xa')](_0x3652e8)['then'](function(_0x478bd9){logger['info'](_0x6ddf('0xd'),_0xb2ffc8,_0x3652e8[_0x6ddf('0x9')]);})[_0x6ddf('0xc')](function(_0x412c4b){logger['error'](_0x6ddf('0xd'),_0xb2ffc8,JSON['stringify'](_0x412c4b));})[_0x6ddf('0x22')](function(){logger[_0x6ddf('0x12')](_0x6ddf('0x23'),_0xb2ffc8);_0x309a21['stop']();});}else{logger[_0x6ddf('0x12')]('[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!',_0xb2ffc8);_0x309a21[_0x6ddf('0x24')]();}}else{var _0x48146a=this;var _0x3064b7=_0x461bdf[0x2][_0x6ddf('0x25')](/\\n/g,'\x0a');var _0x1fc093={'credentials':{'private_key':_0x3064b7,'client_email':_0x461bdf[0x1]}};var _0x33e110=new dialogflow[(_0x6ddf('0x26'))](_0x1fc093);var _0x42da2f=_0x33e110['sessionPath'](_0x461bdf[0x0],md5(_0x48146a[_0x6ddf('0x10')]['id']));var _0x54cefe={'session':_0x42da2f,'queryInput':{'text':{'text':_0x48146a[_0x6ddf('0x27')][_0x6ddf('0x9')],'languageCode':_0x461bdf[0x3]||'en'}}};return _0x33e110[_0x6ddf('0x28')](_0x54cefe)[_0x6ddf('0xb')](function(_0x1c0059){if(_0x1c0059&&_0x1c0059['length']){_0x48146a[_0x6ddf('0x9')][_0x6ddf('0x29')]=_0x1c0059;var _0x1922e9=_0x1c0059[0x0];var _0x10097e=_0x1922e9[_0x6ddf('0x2a')][_0x6ddf('0x2b')]&&_0x1922e9[_0x6ddf('0x2a')][_0x6ddf('0x2b')][_0x6ddf('0x2c')]?_0x1922e9['queryResult']['diagnosticInfo']['fields'][_0x6ddf('0x2d')][_0x6ddf('0x2e')]:![];_0x48146a[_0x6ddf('0x9')][_0x6ddf('0x2f')]=_0x1922e9['queryResult']['action'];_0x48146a[_0x6ddf('0x9')]['DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT']=_0x1922e9[_0x6ddf('0x2a')][_0x6ddf('0x30')];_0x48146a[_0x6ddf('0x9')][_0x6ddf('0x31')]=_0x1922e9['queryResult'][_0x6ddf('0x2b')]&&_0x1922e9[_0x6ddf('0x2a')]['diagnosticInfo'][_0x6ddf('0x2c')]?_0x1922e9['queryResult']['diagnosticInfo'][_0x6ddf('0x2c')][_0x6ddf('0x2d')][_0x6ddf('0x2e')]:![];_0x48146a[_0x6ddf('0x9')][_0x6ddf('0x32')]=_0x1922e9[_0x6ddf('0x2a')][_0x6ddf('0x33')][_0x6ddf('0x34')];_0x48146a[_0x6ddf('0x9')][_0x6ddf('0x35')]=_0x1922e9[_0x6ddf('0x2a')][_0x6ddf('0x33')][_0x6ddf('0x36')];_0x48146a['body']['DIALOGFLOWV2_ISFALLBACKINTENT']=_0x1922e9['queryResult'][_0x6ddf('0x33')]['isFallback'];_0x48146a[_0x6ddf('0x9')][_0x6ddf('0x37')]=_0x1922e9[_0x6ddf('0x2a')]['languageCode'];_0x48146a[_0x6ddf('0x9')][_0x6ddf('0x38')]=_0x1922e9['queryResult'][_0x6ddf('0x39')];_0x48146a[_0x6ddf('0x9')][_0x6ddf('0x3a')]=_0x1922e9[_0x6ddf('0x2a')][_0x6ddf('0x3b')];_0x3652e8[_0x6ddf('0x3c')]=_0x6ddf('0x29');_0x3652e8[_0x6ddf('0x3d')]=JSON[_0x6ddf('0x3e')](_0x1c0059);var _0x5c96c4=[];for(var _0x46d8e2=0x0;_0x46d8e2<_0x1c0059[_0x6ddf('0x3f')];_0x46d8e2++){var _0x1c85b5=_0x1c0059[_0x46d8e2];if(_0x1c85b5&&_0x1c85b5[_0x6ddf('0x2a')]&&_0x1c85b5[_0x6ddf('0x2a')]['fulfillmentText']){_0x5c96c4[_0x6ddf('0x40')](createMessage(_0xb2ffc8,_0x675c9f,_0x3652e8,_0x1c85b5[_0x6ddf('0x2a')][_0x6ddf('0x41')]));}}return Promise['all'](_0x5c96c4)[_0x6ddf('0xb')](function(){if(_0x10097e){_0x309a21[_0x6ddf('0x13')]();}else{_0x309a21[_0x6ddf('0x24')]();}})[_0x6ddf('0xc')](function(_0x27bf56){logger[_0x6ddf('0x42')](_0x6ddf('0xd'),_0xb2ffc8,JSON['stringify'](_0x27bf56));_0x309a21[_0x6ddf('0x13')]();});}})[_0x6ddf('0xc')](function(_0x15493e){logger['error'](_0x6ddf('0xd'),_0xb2ffc8,_0x15493e[_0x6ddf('0x27')]);_0x309a21[_0x6ddf('0x13')]();});}}catch(_0x20df4d){logger['error']('[%s][DIALOGFLOWV2]\x20%s',_0xb2ffc8,JSON[_0x6ddf('0x3e')](_0x20df4d));_0x309a21[_0x6ddf('0x24')]();}};};
\ No newline at end of file
+var _0x0f50=['AccountId','account','InteractionId','created','isEmpty','getMustacheRender','catch','finally','[%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','detectIntent','then','queryResult','diagnosticInfo','fields','end_conversation','boolValue','action','DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT','allRequiredParamsPresent','DIALOGFLOWV2_ENDCONVERSATION','DIALOGFLOWV2_INTENTNAME','intent','name','displayName','DIALOGFLOWV2_ISFALLBACKINTENT','isFallback','DIALOGFLOWV2_LANGUAGECODE','languageCode','DIALOGFLOWV2_QUERYTEXT','length','push','fulfillmentText','message','dialogflow','md5','moment','bluebird','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/whatsappMessage','clone','body','Message','create','info','[%s][DIALOGFLOWV2]\x20%s','error','stringify','consequence','isNil','interaction','UserId','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','YYYY-MM-DD\x20HH:mm:ss','out','sms','channel','whatsapp','phone','chat','ChatWebsiteId','upperFirst'];(function(_0x2aec52,_0x59d962){var _0x3b8835=function(_0x3e2604){while(--_0x3e2604){_0x2aec52['push'](_0x2aec52['shift']());}};_0x3b8835(++_0x59d962);}(_0x0f50,0x6f));var _0x00f5=function(_0x376b7d,_0x26780f){_0x376b7d=_0x376b7d-0x0;var _0x2caf25=_0x0f50[_0x376b7d];return _0x2caf25;};'use strict';var _=require('lodash');var dialogflow=require(_0x00f5('0x0'));var md5=require(_0x00f5('0x1'));var moment=require(_0x00f5('0x2'));var Promise=require(_0x00f5('0x3'));var logger=require(_0x00f5('0x4'))(_0x00f5('0x5'));var utils=require('./utils');var rpc={'chatMessage':require(_0x00f5('0x6')),'openchannelMessage':require(_0x00f5('0x7')),'mailMessage':require(_0x00f5('0x8')),'smsMessage':require(_0x00f5('0x9')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0x00f5('0xa'))};function createMessage(_0x3f7344,_0x3dbce2,_0x3bef29,_0x11100b){return new Promise(function(_0x3ca2f3,_0xeffe8){var _0x4e2a09=_[_0x00f5('0xb')](_0x3bef29);_0x4e2a09[_0x00f5('0xc')]=_0x11100b;return rpc[_0x3dbce2+_0x00f5('0xd')][_0x00f5('0xe')](_0x4e2a09)['then'](function(){logger[_0x00f5('0xf')](_0x00f5('0x10'),_0x3f7344,_0x4e2a09[_0x00f5('0xc')]);_0x3ca2f3();})['catch'](function(_0x52202d){logger[_0x00f5('0x11')](_0x00f5('0x10'),_0x3f7344,JSON[_0x00f5('0x12')](_0x52202d));_0xeffe8(_0x52202d);});});}exports[_0x00f5('0x13')]=function(_0x113858,_0x247e87){return function(_0x26137c){try{if(!_[_0x00f5('0x14')](this[_0x00f5('0x15')][_0x00f5('0x16')])){logger[_0x00f5('0xf')](_0x00f5('0x10'),_0x113858,_0x00f5('0x17'));return _0x26137c[_0x00f5('0x18')]();}var _0x33be4a={'ContactId':this[_0x00f5('0x19')]['id'],'sentAt':moment()['format'](_0x00f5('0x1a')),'direction':_0x00f5('0x1b')};if(this['channel']===_0x00f5('0x1c')||this[_0x00f5('0x1d')]===_0x00f5('0x1e')){_0x33be4a[_0x00f5('0x1f')]=this[_0x00f5('0x15')][_0x00f5('0x1f')];}var _0x3ba0bb=this[_0x00f5('0x1d')];if(_0x3ba0bb===_0x00f5('0x20')){_0x33be4a[_0x00f5('0x21')]=this['account']['id'];}else{_0x33be4a[_[_0x00f5('0x22')](_0x3ba0bb)+_0x00f5('0x23')]=this[_0x00f5('0x24')]['id'];}_0x33be4a[_[_0x00f5('0x22')](_0x3ba0bb)+_0x00f5('0x25')]=this[_0x00f5('0x15')]['id'];if(this['interaction'][_0x00f5('0x26')]){var _0x126907=_0x247e87[0x4];if(!_[_0x00f5('0x27')](_0x126907)){_0x33be4a[_0x00f5('0xc')]=utils[_0x00f5('0x28')](_0x126907,this);return rpc[_0x3ba0bb+'Message']['create'](_0x33be4a)['then'](function(_0x293c14){logger['info'](_0x00f5('0x10'),_0x113858,_0x33be4a[_0x00f5('0xc')]);})[_0x00f5('0x29')](function(_0x3ab5d8){logger[_0x00f5('0x11')](_0x00f5('0x10'),_0x113858,JSON[_0x00f5('0x12')](_0x3ab5d8));})[_0x00f5('0x2a')](function(){logger['info'](_0x00f5('0x2b'),_0x113858);_0x26137c[_0x00f5('0x2c')]();});}else{logger[_0x00f5('0xf')](_0x00f5('0x2d'),_0x113858);_0x26137c[_0x00f5('0x2c')]();}}else{var _0x2d2605=this;var _0x56948c=_0x247e87[0x2][_0x00f5('0x2e')](/\\n/g,'\x0a');var _0x14c01f={'credentials':{'private_key':_0x56948c,'client_email':_0x247e87[0x1]}};var _0x417de2=new dialogflow[(_0x00f5('0x2f'))](_0x14c01f);var _0x18e554=_0x417de2[_0x00f5('0x30')](_0x247e87[0x0],md5(_0x2d2605[_0x00f5('0x15')]['id']));var _0xd90b87={'session':_0x18e554,'queryInput':{'text':{'text':_0x2d2605['message'][_0x00f5('0xc')],'languageCode':_0x247e87[0x3]||'en'}}};return _0x417de2[_0x00f5('0x31')](_0xd90b87)[_0x00f5('0x32')](function(_0x3aab64){if(_0x3aab64&&_0x3aab64['length']){_0x2d2605[_0x00f5('0xc')]['dialogflowV2']=_0x3aab64;var _0xd0d7d2=_0x3aab64[0x0];var _0x3cfeb2=_0xd0d7d2[_0x00f5('0x33')][_0x00f5('0x34')]&&_0xd0d7d2[_0x00f5('0x33')][_0x00f5('0x34')]['fields']?_0xd0d7d2[_0x00f5('0x33')][_0x00f5('0x34')][_0x00f5('0x35')][_0x00f5('0x36')][_0x00f5('0x37')]:![];_0x2d2605[_0x00f5('0xc')]['DIALOGFLOWV2_ACTION']=_0xd0d7d2[_0x00f5('0x33')][_0x00f5('0x38')];_0x2d2605['body'][_0x00f5('0x39')]=_0xd0d7d2[_0x00f5('0x33')][_0x00f5('0x3a')];_0x2d2605[_0x00f5('0xc')][_0x00f5('0x3b')]=_0xd0d7d2['queryResult'][_0x00f5('0x34')]&&_0xd0d7d2[_0x00f5('0x33')][_0x00f5('0x34')][_0x00f5('0x35')]?_0xd0d7d2[_0x00f5('0x33')][_0x00f5('0x34')][_0x00f5('0x35')][_0x00f5('0x36')]['boolValue']:![];_0x2d2605[_0x00f5('0xc')][_0x00f5('0x3c')]=_0xd0d7d2[_0x00f5('0x33')][_0x00f5('0x3d')][_0x00f5('0x3e')];_0x2d2605[_0x00f5('0xc')]['DIALOGFLOWV2_INTENTDISPLAYNAME']=_0xd0d7d2[_0x00f5('0x33')]['intent'][_0x00f5('0x3f')];_0x2d2605[_0x00f5('0xc')][_0x00f5('0x40')]=_0xd0d7d2['queryResult']['intent'][_0x00f5('0x41')];_0x2d2605[_0x00f5('0xc')][_0x00f5('0x42')]=_0xd0d7d2['queryResult'][_0x00f5('0x43')];_0x2d2605[_0x00f5('0xc')][_0x00f5('0x44')]=_0xd0d7d2[_0x00f5('0x33')]['queryText'];_0x2d2605[_0x00f5('0xc')]['DIALOGFLOWV2_SCORE']=_0xd0d7d2[_0x00f5('0x33')]['intentDetectionConfidence'];_0x33be4a['providerName']='dialogflowV2';_0x33be4a['providerResponse']=JSON['stringify'](_0x3aab64);var _0x162002=[];for(var _0x549068=0x0;_0x549068<_0x3aab64[_0x00f5('0x45')];_0x549068++){var _0x2b8baf=_0x3aab64[_0x549068];if(_0x2b8baf&&_0x2b8baf[_0x00f5('0x33')]&&_0x2b8baf[_0x00f5('0x33')]['fulfillmentText']){_0x162002[_0x00f5('0x46')](createMessage(_0x113858,_0x3ba0bb,_0x33be4a,_0x2b8baf[_0x00f5('0x33')][_0x00f5('0x47')]));}}return Promise['all'](_0x162002)[_0x00f5('0x32')](function(){if(_0x3cfeb2){_0x26137c[_0x00f5('0x18')]();}else{_0x26137c[_0x00f5('0x2c')]();}})['catch'](function(_0x5acb7d){logger[_0x00f5('0x11')](_0x00f5('0x10'),_0x113858,JSON[_0x00f5('0x12')](_0x5acb7d));_0x26137c[_0x00f5('0x18')]();});}})[_0x00f5('0x29')](function(_0x36aecf){logger['error'](_0x00f5('0x10'),_0x113858,_0x36aecf[_0x00f5('0x48')]);_0x26137c[_0x00f5('0x18')]();});}}catch(_0x450edd){logger['error'](_0x00f5('0x10'),_0x113858,JSON['stringify'](_0x450edd));_0x26137c[_0x00f5('0x2c')]();}};};
\ No newline at end of file
index f182214..1db6019 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3159=['string','condition\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','priority\x20false\x20is\x20a\x20number','consequence','fromString','replace','validate','length','error','[%s][GOTOIF]\x20%s','map','message','join','stop','condition','priorityTrue','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','[%s][GOTOIF]\x20eval\x20error:\x20%s','stringify','lodash','./utils','routing'];(function(_0x59dd83,_0x573f1b){var _0x5dd0de=function(_0x1c805d){while(--_0x1c805d){_0x59dd83['push'](_0x59dd83['shift']());}};_0x5dd0de(++_0x573f1b);}(_0x3159,0x75));var _0x9315=function(_0x17c63d,_0x5600b5){_0x17c63d=_0x17c63d-0x0;var _0x233fe0=_0x3159[_0x17c63d];return _0x233fe0;};'use strict';var schema=require('validate');var _=require(_0x9315('0x0'));var htmlToText=require('html-to-text');var utils=require(_0x9315('0x1'));var logger=require('../../../../config/logger')(_0x9315('0x2'));var gotoif=schema({'condition':{'type':_0x9315('0x3'),'required':!![],'message':_0x9315('0x4')},'priorityTrue':{'type':_0x9315('0x5'),'message':'priority\x20true\x20is\x20a\x20number'},'priorityFalse':{'type':_0x9315('0x5'),'message':_0x9315('0x6')}});exports[_0x9315('0x7')]=function(_0x400aff,_0x1b6ba6){return function(_0x4f9b43){try{var _0x5c9569={'condition':htmlToText[_0x9315('0x8')](utils['getMustacheRender'](_0x1b6ba6[0x0],this),{'wordwrap':![]})[_0x9315('0x9')](/<\/?[^>]+(>|$)/g,''),'priorityTrue':_0x1b6ba6[0x1],'priorityFalse':_0x1b6ba6[0x2]};var _0x20bbcd=gotoif[_0x9315('0xa')](_0x5c9569,{'typecast':!![]});if(_0x20bbcd[_0x9315('0xb')]){logger[_0x9315('0xc')](_0x9315('0xd'),_0x400aff,_[_0x9315('0xe')](_0x20bbcd,_0x9315('0xf'))[_0x9315('0x10')](',\x20'));_0x4f9b43[_0x9315('0x11')]();}else{try{var _0x37931b=eval('('+_0x5c9569[_0x9315('0x12')]+')');var _0x33a6c8=_0x37931b?_0x5c9569[_0x9315('0x13')]:_0x5c9569[_0x9315('0x14')];logger[_0x9315('0x15')](_0x9315('0x16'),_0x400aff,_0x5c9569[_0x9315('0x12')],_0x37931b,_0x33a6c8||_0x9315('0x17'));if(_0x33a6c8){var _0x2d18bd=_[_0x9315('0x18')](_0x4f9b43[_0x9315('0x19')](),{'p':_0x33a6c8});if(_0x2d18bd>=0x0){logger[_0x9315('0x15')](_0x9315('0x1a'),_0x400aff,_0x33a6c8||_0x9315('0x17'),_0x2d18bd);_0x4f9b43[_0x9315('0x17')](_0x2d18bd);}else{logger['info'](_0x9315('0x1b'),_0x400aff,_0x33a6c8||_0x9315('0x17'));_0x4f9b43[_0x9315('0x11')]();}}else{_0x4f9b43[_0x9315('0x17')]();}}catch(_0x340705){logger['error'](_0x9315('0x1c'),_0x400aff,_0x340705['message']);_0x4f9b43[_0x9315('0x11')]();}}}catch(_0x3dbbf4){logger[_0x9315('0xc')]('[%s][GOTOIF]\x20%s',_0x400aff,JSON[_0x9315('0x1d')](_0x3dbbf4));_0x4f9b43[_0x9315('0x11')]();}};};
\ No newline at end of file
+var _0x57d4=['fromString','getMustacheRender','replace','validate','[%s][GOTOIF]\x20%s','map','message','join','stop','condition','priorityTrue','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','error','[%s][GOTOIF]\x20eval\x20error:\x20%s','lodash','html-to-text','./utils','../../../../config/logger','routing','condition\x20is\x20a\x20string\x20and\x20it\x20is\x20required','priority\x20true\x20is\x20a\x20number','priority\x20false\x20is\x20a\x20number','consequence'];(function(_0x4e57a3,_0x49600d){var _0x30d278=function(_0x14a917){while(--_0x14a917){_0x4e57a3['push'](_0x4e57a3['shift']());}};_0x30d278(++_0x49600d);}(_0x57d4,0xe7));var _0x457d=function(_0x15e82a,_0x4aac50){_0x15e82a=_0x15e82a-0x0;var _0x3b171b=_0x57d4[_0x15e82a];return _0x3b171b;};'use strict';var schema=require('validate');var _=require(_0x457d('0x0'));var htmlToText=require(_0x457d('0x1'));var utils=require(_0x457d('0x2'));var logger=require(_0x457d('0x3'))(_0x457d('0x4'));var gotoif=schema({'condition':{'type':'string','required':!![],'message':_0x457d('0x5')},'priorityTrue':{'type':'number','message':_0x457d('0x6')},'priorityFalse':{'type':'number','message':_0x457d('0x7')}});exports[_0x457d('0x8')]=function(_0x52a51f,_0x1872c4){return function(_0x2f5bf8){try{var _0x23473c={'condition':htmlToText[_0x457d('0x9')](utils[_0x457d('0xa')](_0x1872c4[0x0],this),{'wordwrap':![]})[_0x457d('0xb')](/<\/?[^>]+(>|$)/g,''),'priorityTrue':_0x1872c4[0x1],'priorityFalse':_0x1872c4[0x2]};var _0x194c1f=gotoif[_0x457d('0xc')](_0x23473c,{'typecast':!![]});if(_0x194c1f['length']){logger['error'](_0x457d('0xd'),_0x52a51f,_[_0x457d('0xe')](_0x194c1f,_0x457d('0xf'))[_0x457d('0x10')](',\x20'));_0x2f5bf8[_0x457d('0x11')]();}else{try{var _0x24d86a=eval('('+_0x23473c[_0x457d('0x12')]+')');var _0x17b494=_0x24d86a?_0x23473c[_0x457d('0x13')]:_0x23473c[_0x457d('0x14')];logger[_0x457d('0x15')](_0x457d('0x16'),_0x52a51f,_0x23473c[_0x457d('0x12')],_0x24d86a,_0x17b494||_0x457d('0x17'));if(_0x17b494){var _0x48c77a=_[_0x457d('0x18')](_0x2f5bf8[_0x457d('0x19')](),{'p':_0x17b494});if(_0x48c77a>=0x0){logger[_0x457d('0x15')](_0x457d('0x1a'),_0x52a51f,_0x17b494||_0x457d('0x17'),_0x48c77a);_0x2f5bf8['next'](_0x48c77a);}else{logger[_0x457d('0x15')](_0x457d('0x1b'),_0x52a51f,_0x17b494||_0x457d('0x17'));_0x2f5bf8[_0x457d('0x11')]();}}else{_0x2f5bf8[_0x457d('0x17')]();}}catch(_0x16f4ed){logger[_0x457d('0x1c')](_0x457d('0x1d'),_0x52a51f,_0x16f4ed[_0x457d('0xf')]);_0x2f5bf8[_0x457d('0x11')]();}}}catch(_0xc7f62d){logger['error'](_0x457d('0xd'),_0x52a51f,JSON['stringify'](_0xc7f62d));_0x2f5bf8['stop']();}};};
\ No newline at end of file
index ada9820..f02936c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9d66=['info','[%s][GOTOP]\x20priority\x20%s','rules','[%s][GOTOP]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','priority','next','[%s][GOTOP]\x20priority\x20%s\x20not\x20found','stop','stringify','lodash','../../../../config/logger','number','consequence','validate','length','error','[%s][GOTOP]\x20%s','map','join'];(function(_0x484c03,_0x13c1d2){var _0x294127=function(_0x45a834){while(--_0x45a834){_0x484c03['push'](_0x484c03['shift']());}};_0x294127(++_0x13c1d2);}(_0x9d66,0x7b));var _0x69d6=function(_0x26340,_0x3d0c98){_0x26340=_0x26340-0x0;var _0x1fbdb5=_0x9d66[_0x26340];return _0x1fbdb5;};'use strict';var schema=require('validate');var _=require(_0x69d6('0x0'));var logger=require(_0x69d6('0x1'))('routing');var gotop=schema({'priority':{'type':_0x69d6('0x2'),'required':!![],'message':'priority\x20is\x20a\x20number\x20and\x20it\x20is\x20required'}});exports[_0x69d6('0x3')]=function(_0x18fd33,_0x27021d){return function(_0x5e840d){try{var _0x63b1b1={'priority':_0x27021d[0x0]};var _0x418167=gotop[_0x69d6('0x4')](_0x63b1b1,{'typecast':!![]});if(_0x418167[_0x69d6('0x5')]){logger[_0x69d6('0x6')](_0x69d6('0x7'),_0x18fd33,_[_0x69d6('0x8')](_0x418167,'message')[_0x69d6('0x9')](',\x20'));_0x5e840d['stop']();}else{logger[_0x69d6('0xa')](_0x69d6('0xb'),_0x18fd33,_0x63b1b1['priority']);if(_0x63b1b1['priority']){var _0x396094=_['findIndex'](_0x5e840d[_0x69d6('0xc')](),{'p':_0x63b1b1['priority']});if(_0x396094>=0x0){logger[_0x69d6('0xa')](_0x69d6('0xd'),_0x18fd33,_0x63b1b1[_0x69d6('0xe')]||_0x69d6('0xf'),_0x396094);_0x5e840d[_0x69d6('0xf')](_0x396094);}else{logger[_0x69d6('0xa')](_0x69d6('0x10'),_0x18fd33,_0x63b1b1[_0x69d6('0xe')]||_0x69d6('0xf'));_0x5e840d[_0x69d6('0x11')]();}}else{_0x5e840d['next']();}}}catch(_0xddf73f){logger[_0x69d6('0x6')](_0x69d6('0x7'),_0x18fd33,JSON[_0x69d6('0x12')](_0xddf73f));_0x5e840d[_0x69d6('0x11')]();}};};
\ No newline at end of file
+var _0x8a3a=['routing','number','consequence','error','[%s][GOTOP]\x20%s','map','info','priority','findIndex','rules','next','stringify','stop','validate','lodash'];(function(_0x147445,_0x91a83b){var _0x12becb=function(_0xf68061){while(--_0xf68061){_0x147445['push'](_0x147445['shift']());}};_0x12becb(++_0x91a83b);}(_0x8a3a,0x1a2));var _0xa8a3=function(_0x2f6eb0,_0x4868fd){_0x2f6eb0=_0x2f6eb0-0x0;var _0x2b9200=_0x8a3a[_0x2f6eb0];return _0x2b9200;};'use strict';var schema=require(_0xa8a3('0x0'));var _=require(_0xa8a3('0x1'));var logger=require('../../../../config/logger')(_0xa8a3('0x2'));var gotop=schema({'priority':{'type':_0xa8a3('0x3'),'required':!![],'message':'priority\x20is\x20a\x20number\x20and\x20it\x20is\x20required'}});exports[_0xa8a3('0x4')]=function(_0x12204e,_0x5176a8){return function(_0x5bf96f){try{var _0x11f72b={'priority':_0x5176a8[0x0]};var _0x2fb3ef=gotop[_0xa8a3('0x0')](_0x11f72b,{'typecast':!![]});if(_0x2fb3ef['length']){logger[_0xa8a3('0x5')](_0xa8a3('0x6'),_0x12204e,_[_0xa8a3('0x7')](_0x2fb3ef,'message')['join'](',\x20'));_0x5bf96f['stop']();}else{logger[_0xa8a3('0x8')]('[%s][GOTOP]\x20priority\x20%s',_0x12204e,_0x11f72b[_0xa8a3('0x9')]);if(_0x11f72b['priority']){var _0x16a86c=_[_0xa8a3('0xa')](_0x5bf96f[_0xa8a3('0xb')](),{'p':_0x11f72b[_0xa8a3('0x9')]});if(_0x16a86c>=0x0){logger['info']('[%s][GOTOP]\x20priority\x20%s\x20found\x20at\x20index:\x20%s',_0x12204e,_0x11f72b['priority']||_0xa8a3('0xc'),_0x16a86c);_0x5bf96f[_0xa8a3('0xc')](_0x16a86c);}else{logger[_0xa8a3('0x8')]('[%s][GOTOP]\x20priority\x20%s\x20not\x20found',_0x12204e,_0x11f72b['priority']||'next');_0x5bf96f['stop']();}}else{_0x5bf96f['next']();}}}catch(_0x2681ce){logger[_0xa8a3('0x5')]('[%s][GOTOP]\x20%s',_0x12204e,JSON[_0xa8a3('0xd')](_0x2681ce));_0x5bf96f[_0xa8a3('0xe')]();}};};
\ No newline at end of file
index dc2f2cc..f854d8f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9d11=['create','info','next','catch','error','[%s][MESSAGE]\x20%s','stringify','stop','lodash','./utils','../../../../config/logger','routing','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','consequence','getMustacheRender','contact','channel','chat','upperFirst','account','Message'];(function(_0x3cfacf,_0x4c5390){var _0x2c1a66=function(_0x2ab145){while(--_0x2ab145){_0x3cfacf['push'](_0x3cfacf['shift']());}};_0x2c1a66(++_0x4c5390);}(_0x9d11,0xb7));var _0x19d1=function(_0x602ca8,_0x568e82){_0x602ca8=_0x602ca8-0x0;var _0x26e8ab=_0x9d11[_0x602ca8];return _0x26e8ab;};'use strict';var _=require(_0x19d1('0x0'));var utils=require(_0x19d1('0x1'));var logger=require(_0x19d1('0x2'))(_0x19d1('0x3'));var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require(_0x19d1('0x4')),'mailMessage':require(_0x19d1('0x5')),'smsMessage':require(_0x19d1('0x6')),'faxMessage':require(_0x19d1('0x7')),'whatsappMessage':require(_0x19d1('0x8'))};exports[_0x19d1('0x9')]=function(_0x4dcf38,_0x2a1c16){return function(_0x396c3a){try{var _0x4b624c={'body':utils[_0x19d1('0xa')](_0x2a1c16[0x0],this),'ContactId':this[_0x19d1('0xb')]['id']};if(this[_0x19d1('0xc')]===_0x19d1('0xd')){_0x4b624c['ChatWebsiteId']=this['account']['id'];}else{_0x4b624c[_[_0x19d1('0xe')](this[_0x19d1('0xc')])+'AccountId']=this[_0x19d1('0xf')]['id'];}_0x4b624c[_[_0x19d1('0xe')](this[_0x19d1('0xc')])+'InteractionId']=this['interaction']['id'];if(rpc[this['channel']+_0x19d1('0x10')]){return rpc[this[_0x19d1('0xc')]+_0x19d1('0x10')][_0x19d1('0x11')](_0x4b624c)['then'](function(_0x4aed3e){logger[_0x19d1('0x12')]('[%s][MESSAGE]\x20%s',_0x4dcf38,_0x4b624c['body']);_0x396c3a[_0x19d1('0x13')]();})[_0x19d1('0x14')](function(_0x116b36){logger[_0x19d1('0x15')](_0x19d1('0x16'),_0x4dcf38,JSON[_0x19d1('0x17')](_0x116b36));_0x396c3a[_0x19d1('0x18')]();});}}catch(_0x578764){logger[_0x19d1('0x15')](_0x19d1('0x16'),_0x4dcf38,JSON[_0x19d1('0x17')](_0x578764));_0x396c3a['stop']();}};};
\ No newline at end of file
+var _0xcc40=['../../rpc/mailMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','contact','channel','chat','upperFirst','InteractionId','interaction','Message','create','then','info','[%s][MESSAGE]\x20%s','body','next','error','stringify','stop','lodash','routing','../../rpc/chatMessage'];(function(_0x485b00,_0x3eaf8d){var _0x2a6f83=function(_0x1dce2f){while(--_0x1dce2f){_0x485b00['push'](_0x485b00['shift']());}};_0x2a6f83(++_0x3eaf8d);}(_0xcc40,0x97));var _0x0cc4=function(_0xb27327,_0x3a689b){_0xb27327=_0xb27327-0x0;var _0x1a2c2a=_0xcc40[_0xb27327];return _0x1a2c2a;};'use strict';var _=require(_0x0cc4('0x0'));var utils=require('./utils');var logger=require('../../../../config/logger')(_0x0cc4('0x1'));var rpc={'chatMessage':require(_0x0cc4('0x2')),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require(_0x0cc4('0x3')),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require(_0x0cc4('0x4')),'whatsappMessage':require(_0x0cc4('0x5'))};exports['consequence']=function(_0x45f69b,_0x5bbfa7){return function(_0xbe15f4){try{var _0x58f080={'body':utils['getMustacheRender'](_0x5bbfa7[0x0],this),'ContactId':this[_0x0cc4('0x6')]['id']};if(this[_0x0cc4('0x7')]===_0x0cc4('0x8')){_0x58f080['ChatWebsiteId']=this['account']['id'];}else{_0x58f080[_[_0x0cc4('0x9')](this[_0x0cc4('0x7')])+'AccountId']=this['account']['id'];}_0x58f080[_[_0x0cc4('0x9')](this[_0x0cc4('0x7')])+_0x0cc4('0xa')]=this[_0x0cc4('0xb')]['id'];if(rpc[this[_0x0cc4('0x7')]+_0x0cc4('0xc')]){return rpc[this[_0x0cc4('0x7')]+_0x0cc4('0xc')][_0x0cc4('0xd')](_0x58f080)[_0x0cc4('0xe')](function(_0x101ea8){logger[_0x0cc4('0xf')](_0x0cc4('0x10'),_0x45f69b,_0x58f080[_0x0cc4('0x11')]);_0xbe15f4[_0x0cc4('0x12')]();})['catch'](function(_0x2c9fde){logger[_0x0cc4('0x13')](_0x0cc4('0x10'),_0x45f69b,JSON[_0x0cc4('0x14')](_0x2c9fde));_0xbe15f4[_0x0cc4('0x15')]();});}}catch(_0x498947){logger[_0x0cc4('0x13')](_0x0cc4('0x10'),_0x45f69b,JSON[_0x0cc4('0x14')](_0x498947));_0xbe15f4[_0x0cc4('0x15')]();}};};
\ No newline at end of file
index ef724d9..4cdc0c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8161=['../../../../config/logger','consequence','[%s][NOOP]\x20%s','getMustacheRender','next','error','stringify','stop','./utils'];(function(_0x38132a,_0x2fc7e8){var _0x482b95=function(_0x4966d0){while(--_0x4966d0){_0x38132a['push'](_0x38132a['shift']());}};_0x482b95(++_0x2fc7e8);}(_0x8161,0x104));var _0x1816=function(_0x1848e1,_0x581900){_0x1848e1=_0x1848e1-0x0;var _0x20e3d5=_0x8161[_0x1848e1];return _0x20e3d5;};'use strict';var utils=require(_0x1816('0x0'));var logger=require(_0x1816('0x1'))('routing');exports[_0x1816('0x2')]=function(_0x48318e,_0x30de5a){return function(_0xd22a7b){try{logger['info'](_0x1816('0x3'),_0x48318e,utils[_0x1816('0x4')](_0x30de5a[0x0],this));_0xd22a7b[_0x1816('0x5')]();}catch(_0x1c28ea){logger[_0x1816('0x6')](_0x1816('0x3'),_0x48318e,JSON[_0x1816('0x7')](_0x1c28ea));_0xd22a7b[_0x1816('0x8')]();}};};
\ No newline at end of file
+var _0x8910=['[%s][NOOP]\x20%s','getMustacheRender','next','error','stop','./utils','../../../../config/logger','routing','consequence','info'];(function(_0xf7618,_0x34b5d1){var _0x4b4b90=function(_0x5505f7){while(--_0x5505f7){_0xf7618['push'](_0xf7618['shift']());}};_0x4b4b90(++_0x34b5d1);}(_0x8910,0x1ef));var _0x0891=function(_0x54fdd8,_0x2e81ae){_0x54fdd8=_0x54fdd8-0x0;var _0x4f6f8a=_0x8910[_0x54fdd8];return _0x4f6f8a;};'use strict';var utils=require(_0x0891('0x0'));var logger=require(_0x0891('0x1'))(_0x0891('0x2'));exports[_0x0891('0x3')]=function(_0x4f4387,_0x32cf5f){return function(_0x3984de){try{logger[_0x0891('0x4')](_0x0891('0x5'),_0x4f4387,utils[_0x0891('0x6')](_0x32cf5f[0x0],this));_0x3984de[_0x0891('0x7')]();}catch(_0x4d3e9c){logger[_0x0891('0x8')]('[%s][NOOP]\x20%s',_0x4f4387,JSON['stringify'](_0x4d3e9c));_0x3984de[_0x0891('0x9')]();}};};
\ No newline at end of file
index ab52af2..462a028 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3cde=['map','join','stop','Queues','createQueue','atimeout','qtimeout','rules','end','[%s][QUEUE]\x20ROUTING\x20STOPPED','[%s][QUEUE]\x20APPLICATION\x20END','close','next','strategy','rrmemory','beepall','[%s][QUEUE]\x20queue\x20not\x20found\x20%s','log','stack','validate','lodash','util','seq-queue','ioredis','../../../../config/environment','../../../../config/logger','routing','./strategy','redis','localhost','socket.io-emitter','queue_id','account','from','joinAt','emit','queue','format','%s_queue_waiting_interaction:%s','pick','../../rpc/openchannelQueueReport','../../rpc/mailQueueReport','../../rpc/chatQueueReport','../../rpc/smsQueueReport','../../rpc/whatsappQueueReport','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','timeout\x20is\x20a\x20number','waiting','body','contact','list','upperFirst','channel','interaction','MessageId','message','WebsiteId','[%s][START:QUEUE][NAME:%s]','name','QueueReport','create','catch','error','create\x20queue\x20report','YYYY-MM-DD\x20HH:mm:ss','accepted','info','[%s][STOP:QUEUE][NAME:%s]','update','timeout','[%s][END:QUEUE][NAME:%s]','toLowerCase','length','[%s][QUEUE]\x20%s'];(function(_0x895a85,_0x2de447){var _0x3c24ae=function(_0x31072e){while(--_0x31072e){_0x895a85['push'](_0x895a85['shift']());}};_0x3c24ae(++_0x2de447);}(_0x3cde,0x1d5));var _0xe3cd=function(_0x3b300c,_0x356a10){_0x3b300c=_0x3b300c-0x0;var _0x2f6b52=_0x3cde[_0x3b300c];return _0x2f6b52;};'use strict';var schema=require(_0xe3cd('0x0'));var _=require(_0xe3cd('0x1'));var util=require(_0xe3cd('0x2'));var seqqueue=require(_0xe3cd('0x3'));var moment=require('moment');var Redis=require(_0xe3cd('0x4'));var config=require(_0xe3cd('0x5'));var logger=require(_0xe3cd('0x6'))(_0xe3cd('0x7'));var strategy=require(_0xe3cd('0x8'));config[_0xe3cd('0x9')]=_['defaults'](config['redis'],{'host':_0xe3cd('0xa'),'port':0x18eb});var io=require(_0xe3cd('0xb'))(new Redis(config[_0xe3cd('0x9')]));var attributes=['id',_0xe3cd('0xc'),_0xe3cd('0xd'),'queue',_0xe3cd('0xe'),_0xe3cd('0xf')];function emit(_0x1df718,_0x1a5231,_0x115051){io['to'](_0x1df718)[_0xe3cd('0x10')](_0x1a5231,_0x115051);}function emitChannelQueueInteraction(_0x2ca24c,_0x5e053c,_0x326f79,_0x508c1c,_0x1a0600,_0x5b8bd4,_0xa2b772,_0x24348c){var _0x5b33ba=_['clone'](_0x326f79);_0x5b33ba['queue_id']=_0x24348c;_0x5b33ba[_0xe3cd('0x11')]=_0x5e053c;_0x5b33ba[_0xe3cd('0xd')]=_0x508c1c;_0x5b33ba['id']=_0x1a0600;if(_0x5b8bd4){_0xa2b772[util[_0xe3cd('0x12')]('%sQueuesWaitingInteractions',_0x2ca24c)][_0x1a0600]=_['pick'](_0x5b33ba,attributes);}else{delete _0xa2b772[util[_0xe3cd('0x12')]('%sQueuesWaitingInteractions',_0x2ca24c)][_0x1a0600];}emit(util[_0xe3cd('0x12')]('%s:queue:%s',_0x2ca24c,_0x5e053c),util['format'](_0xe3cd('0x13'),_0x2ca24c,_0x5b8bd4?'save':'remove'),_[_0xe3cd('0x14')](_0x5b33ba,attributes));}var rpc={'openchannelQueueReport':require(_0xe3cd('0x15')),'mailQueueReport':require(_0xe3cd('0x16')),'chatQueueReport':require(_0xe3cd('0x17')),'smsQueueReport':require(_0xe3cd('0x18')),'faxQueueReport':require('../../rpc/faxQueueReport'),'whatsappQueueReport':require(_0xe3cd('0x19'))};var queue=schema({'name':{'type':'string','required':!![],'message':_0xe3cd('0x1a')},'timeout':{'type':_0xe3cd('0x1b'),'message':_0xe3cd('0x1c')}});function startRouting(_0x5a8f5a,_0x236a98,_0x2549e9,_0x3da79e){if(_0x5a8f5a&&_0x236a98&&_0x2549e9){_0x236a98[_0xe3cd('0x1d')]+=0x1;var _0x312569={'uniqueid':_0x5a8f5a,'from':_0x2549e9[_0xe3cd('0x1e')]?_0x2549e9[_0xe3cd('0x1e')][_0xe3cd('0xe')]:'','joinAt':moment()[_0xe3cd('0x12')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x2549e9['contact']?_0x2549e9[_0xe3cd('0x1f')]['id']:null,'ListId':_0x2549e9[_0xe3cd('0x20')]?_0x2549e9[_0xe3cd('0x20')]['id']:null};_0x312569[_[_0xe3cd('0x21')](_0x2549e9[_0xe3cd('0x22')])+'QueueId']=_0x236a98['id']||null;_0x312569[_[_0xe3cd('0x21')](_0x2549e9[_0xe3cd('0x22')])+'InteractionId']=_0x2549e9[_0xe3cd('0x23')]?_0x2549e9['interaction']['id']:null;_0x312569[_[_0xe3cd('0x21')](_0x2549e9[_0xe3cd('0x22')])+_0xe3cd('0x24')]=_0x2549e9[_0xe3cd('0x25')]?_0x2549e9[_0xe3cd('0x25')]['id']:null;_0x312569[_[_0xe3cd('0x21')](_0x2549e9[_0xe3cd('0x22')])+(_0x2549e9[_0xe3cd('0x22')]!=='chat'?'AccountId':_0xe3cd('0x26'))]=_0x2549e9[_0xe3cd('0xd')]?_0x2549e9[_0xe3cd('0xd')]['id']:null;logger['info'](util[_0xe3cd('0x12')](_0xe3cd('0x27'),_0x5a8f5a,_0x236a98[_0xe3cd('0x28')]));emitChannelQueueInteraction(_0x2549e9[_0xe3cd('0x22')],_0x236a98['name'],_0x312569,_0x2549e9[_0xe3cd('0xd')]['name'],_0x2549e9[_0xe3cd('0x25')]['id'],!![],_0x3da79e,_0x236a98['id']);if(rpc[_0x2549e9[_0xe3cd('0x22')]+_0xe3cd('0x29')]){return rpc[_0x2549e9[_0xe3cd('0x22')]+_0xe3cd('0x29')][_0xe3cd('0x2a')](_0x312569)[_0xe3cd('0x2b')](function(_0x959e48){logger[_0xe3cd('0x2c')](_0xe3cd('0x2d'));});}}}function stopRouting(_0x12f668,_0x11b7d3,_0x294018,_0x59d585){if(_0x12f668&&_0x11b7d3){_0x11b7d3[_0xe3cd('0x1d')]-=0x1;var _0x2689e3={'leaveAt':moment()[_0xe3cd('0x12')]('YYYY-MM-DD\x20HH:mm:ss'),'acceptAt':moment()[_0xe3cd('0x12')](_0xe3cd('0x2e')),'reason':_0xe3cd('0x2f')};logger[_0xe3cd('0x30')](util[_0xe3cd('0x12')](_0xe3cd('0x31'),_0x12f668,_0x11b7d3[_0xe3cd('0x28')]));emitChannelQueueInteraction(_0x294018['channel'],_0x11b7d3[_0xe3cd('0x28')],_0x294018['body'],_0x294018['account']['name'],_0x294018[_0xe3cd('0x25')]['id'],![],_0x59d585,_0x11b7d3['id']);if(rpc[_0x294018['channel']+'QueueReport']){return rpc[_0x294018['channel']+_0xe3cd('0x29')][_0xe3cd('0x32')](_0x12f668,_0x2689e3)[_0xe3cd('0x2b')](function(_0x25f1b2){logger[_0xe3cd('0x2c')]('update\x20queue\x20report');});}}}function endRouting(_0x1bbc82,_0x16fc19,_0x40533b,_0x3e5a5c){if(_0x1bbc82&&_0x16fc19){_0x16fc19[_0xe3cd('0x1d')]-=0x1;var _0x181a60={'leaveAt':moment()[_0xe3cd('0x12')](_0xe3cd('0x2e')),'exitAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'reason':_0xe3cd('0x33')};logger[_0xe3cd('0x30')](util[_0xe3cd('0x12')](_0xe3cd('0x34'),_0x1bbc82,_0x16fc19[_0xe3cd('0x28')]));emitChannelQueueInteraction(_0x40533b[_0xe3cd('0x22')],_0x16fc19[_0xe3cd('0x28')],_0x40533b[_0xe3cd('0x1e')],_0x40533b[_0xe3cd('0xd')][_0xe3cd('0x28')],_0x40533b[_0xe3cd('0x25')]['id'],![],_0x3e5a5c);if(rpc[_0x40533b[_0xe3cd('0x22')]+'QueueReport']){return rpc[_0x40533b['channel']+_0xe3cd('0x29')][_0xe3cd('0x32')](_0x1bbc82,_0x181a60)[_0xe3cd('0x2b')](function(_0x58fd08){logger['error']('update\x20queue\x20report');});}}}function handleFindQueue(_0xf58da2){return function(_0xee8880){return _0xee8880[_0xe3cd('0x28')][_0xe3cd('0x35')]()===_0xf58da2['toLowerCase']();};}exports['consequence']=function(_0x31f5a7,_0x174b7f,_0x41effd,_0x2ac044){return function(_0xa0bdbb){try{var _0x5e2a54={'name':_0x174b7f[0x0],'timeout':_0x174b7f[0x1]};var _0x5bf718=queue[_0xe3cd('0x0')](_0x5e2a54,{'typecast':!![]});if(_0x5bf718[_0xe3cd('0x36')]){logger[_0xe3cd('0x2c')](_0xe3cd('0x37'),_0x31f5a7,_[_0xe3cd('0x38')](_0x5bf718,_0xe3cd('0x25'))[_0xe3cd('0x39')](',\x20'));_0xa0bdbb[_0xe3cd('0x3a')]();}else{var _0xf14f41=_['find'](_0x41effd[_0x2ac044[_0xe3cd('0x22')]+_0xe3cd('0x3b')],handleFindQueue(_0x5e2a54[_0xe3cd('0x28')]));if(_0xf14f41){startRouting(_0x31f5a7,_0xf14f41,_0x2ac044,_0x41effd);var _0x1e78b6=(_0xf14f41['timeout']||0xa)*0x3e8;var _0x321e05=(_0x5e2a54[_0xe3cd('0x33')]||0x14)*0x3e8;var _0x27e418,_0x312521;if(_0x1e78b6>_0x321e05){_0x321e05=_0x1e78b6;}var _0x3061e4=seqqueue[_0xe3cd('0x3c')](_0x1e78b6);_0x3061e4['id']=_0x31f5a7;_0x3061e4[_0xe3cd('0x3d')]=_0x1e78b6;_0x3061e4[_0xe3cd('0x3e')]=_0x321e05;_0x3061e4[_0xe3cd('0x22')]=_0x2ac044[_0xe3cd('0x22')];_0x41effd[_0xe3cd('0x3f')][_0x31f5a7]['on'](_0xe3cd('0x40'),function(){logger[_0xe3cd('0x30')](_0xe3cd('0x41'),_0x31f5a7);stopRouting(_0x31f5a7,_0xf14f41,_0x2ac044,_0x41effd);clearTimeout(_0x27e418);_0x27e418=undefined;_0x3061e4['close'](!![]);if(_0x41effd['rules'][_0x31f5a7]){delete _0x41effd['rules'][_0x31f5a7];}_0xa0bdbb[_0xe3cd('0x3a')]();});_0x41effd['rules'][_0x31f5a7]['on']('complete',function(){if(_0x41effd[_0xe3cd('0x3f')][_0x31f5a7]){delete _0x41effd[_0xe3cd('0x3f')][_0x31f5a7];}});_0x27e418=setTimeout(function(){logger[_0xe3cd('0x30')](_0xe3cd('0x42'),_0x31f5a7);endRouting(_0x31f5a7,_0xf14f41,_0x2ac044,_0x41effd);clearTimeout(_0x27e418);_0x3061e4[_0xe3cd('0x43')](!![]);_0xa0bdbb[_0xe3cd('0x44')]();},_0x321e05);switch(_0xf14f41[_0xe3cd('0x45')]){case _0xe3cd('0x46'):strategy['rrmemory'](_0x3061e4,_0xf14f41,_0x41effd,_0x2ac044);break;default:strategy[_0xe3cd('0x47')](_0x3061e4,_0xf14f41,_0x41effd,_0x2ac044);}}else{logger['error'](_0xe3cd('0x48'),_0x31f5a7,_0x5e2a54[_0xe3cd('0x28')]);_0xa0bdbb[_0xe3cd('0x3a')]();}}}catch(_0x4f4bcb){console[_0xe3cd('0x49')](_0x4f4bcb);logger[_0xe3cd('0x2c')](_0xe3cd('0x37'),_0x31f5a7,_0x4f4bcb[_0xe3cd('0x4a')]);_0xa0bdbb['stop']();}};};
\ No newline at end of file
+var _0x0ffa=['message','chat','AccountId','[%s][START:QUEUE][NAME:%s]','name','QueueReport','create','error','create\x20queue\x20report','accepted','info','[%s][STOP:QUEUE][NAME:%s]','update','catch','timeout','[%s][END:QUEUE][NAME:%s]','update\x20queue\x20report','toLowerCase','consequence','[%s][QUEUE]\x20%s','map','stop','find','Queues','createQueue','atimeout','qtimeout','rules','[%s][QUEUE]\x20ROUTING\x20STOPPED','close','complete','[%s][QUEUE]\x20APPLICATION\x20END','next','strategy','rrmemory','[%s][QUEUE]\x20queue\x20not\x20found\x20%s','log','stack','validate','lodash','seq-queue','moment','../../../../config/environment','routing','redis','defaults','queue_id','account','queue','from','joinAt','emit','%sQueuesWaitingInteractions','pick','format','%s_queue_waiting_interaction:%s','remove','../../rpc/openchannelQueueReport','../../rpc/mailQueueReport','../../rpc/chatQueueReport','../../rpc/faxQueueReport','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','timeout\x20is\x20a\x20number','waiting','body','YYYY-MM-DD\x20HH:mm:ss','contact','list','upperFirst','channel','QueueId','InteractionId','interaction','MessageId'];(function(_0x4410f5,_0x454850){var _0x49bffd=function(_0x496170){while(--_0x496170){_0x4410f5['push'](_0x4410f5['shift']());}};_0x49bffd(++_0x454850);}(_0x0ffa,0x107));var _0xa0ff=function(_0x532845,_0x4786ed){_0x532845=_0x532845-0x0;var _0x3952e4=_0x0ffa[_0x532845];return _0x3952e4;};'use strict';var schema=require(_0xa0ff('0x0'));var _=require(_0xa0ff('0x1'));var util=require('util');var seqqueue=require(_0xa0ff('0x2'));var moment=require(_0xa0ff('0x3'));var Redis=require('ioredis');var config=require(_0xa0ff('0x4'));var logger=require('../../../../config/logger')(_0xa0ff('0x5'));var strategy=require('./strategy');config[_0xa0ff('0x6')]=_[_0xa0ff('0x7')](config[_0xa0ff('0x6')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xa0ff('0x6')]));var attributes=['id',_0xa0ff('0x8'),_0xa0ff('0x9'),_0xa0ff('0xa'),_0xa0ff('0xb'),_0xa0ff('0xc')];function emit(_0x14d8a1,_0x2138de,_0x52d1c8){io['to'](_0x14d8a1)[_0xa0ff('0xd')](_0x2138de,_0x52d1c8);}function emitChannelQueueInteraction(_0x395f01,_0x4a2149,_0x2c0f2b,_0x200da7,_0x5813b4,_0x24fab6,_0x57cc45,_0x2c6d6c){var _0xa5febb=_['clone'](_0x2c0f2b);_0xa5febb[_0xa0ff('0x8')]=_0x2c6d6c;_0xa5febb[_0xa0ff('0xa')]=_0x4a2149;_0xa5febb['account']=_0x200da7;_0xa5febb['id']=_0x5813b4;if(_0x24fab6){_0x57cc45[util['format'](_0xa0ff('0xe'),_0x395f01)][_0x5813b4]=_[_0xa0ff('0xf')](_0xa5febb,attributes);}else{delete _0x57cc45[util[_0xa0ff('0x10')](_0xa0ff('0xe'),_0x395f01)][_0x5813b4];}emit(util[_0xa0ff('0x10')]('%s:queue:%s',_0x395f01,_0x4a2149),util[_0xa0ff('0x10')](_0xa0ff('0x11'),_0x395f01,_0x24fab6?'save':_0xa0ff('0x12')),_[_0xa0ff('0xf')](_0xa5febb,attributes));}var rpc={'openchannelQueueReport':require(_0xa0ff('0x13')),'mailQueueReport':require(_0xa0ff('0x14')),'chatQueueReport':require(_0xa0ff('0x15')),'smsQueueReport':require('../../rpc/smsQueueReport'),'faxQueueReport':require(_0xa0ff('0x16')),'whatsappQueueReport':require('../../rpc/whatsappQueueReport')};var queue=schema({'name':{'type':'string','required':!![],'message':_0xa0ff('0x17')},'timeout':{'type':_0xa0ff('0x18'),'message':_0xa0ff('0x19')}});function startRouting(_0x5d8b3d,_0x2c4978,_0xaaa591,_0x1c87ae){if(_0x5d8b3d&&_0x2c4978&&_0xaaa591){_0x2c4978[_0xa0ff('0x1a')]+=0x1;var _0x2c3a49={'uniqueid':_0x5d8b3d,'from':_0xaaa591[_0xa0ff('0x1b')]?_0xaaa591[_0xa0ff('0x1b')][_0xa0ff('0xb')]:'','joinAt':moment()[_0xa0ff('0x10')](_0xa0ff('0x1c')),'ContactId':_0xaaa591[_0xa0ff('0x1d')]?_0xaaa591['contact']['id']:null,'ListId':_0xaaa591[_0xa0ff('0x1e')]?_0xaaa591[_0xa0ff('0x1e')]['id']:null};_0x2c3a49[_[_0xa0ff('0x1f')](_0xaaa591[_0xa0ff('0x20')])+_0xa0ff('0x21')]=_0x2c4978['id']||null;_0x2c3a49[_[_0xa0ff('0x1f')](_0xaaa591[_0xa0ff('0x20')])+_0xa0ff('0x22')]=_0xaaa591[_0xa0ff('0x23')]?_0xaaa591['interaction']['id']:null;_0x2c3a49[_['upperFirst'](_0xaaa591[_0xa0ff('0x20')])+_0xa0ff('0x24')]=_0xaaa591['message']?_0xaaa591[_0xa0ff('0x25')]['id']:null;_0x2c3a49[_['upperFirst'](_0xaaa591['channel'])+(_0xaaa591['channel']!==_0xa0ff('0x26')?_0xa0ff('0x27'):'WebsiteId')]=_0xaaa591[_0xa0ff('0x9')]?_0xaaa591[_0xa0ff('0x9')]['id']:null;logger['info'](util[_0xa0ff('0x10')](_0xa0ff('0x28'),_0x5d8b3d,_0x2c4978[_0xa0ff('0x29')]));emitChannelQueueInteraction(_0xaaa591[_0xa0ff('0x20')],_0x2c4978[_0xa0ff('0x29')],_0x2c3a49,_0xaaa591['account']['name'],_0xaaa591['message']['id'],!![],_0x1c87ae,_0x2c4978['id']);if(rpc[_0xaaa591[_0xa0ff('0x20')]+_0xa0ff('0x2a')]){return rpc[_0xaaa591['channel']+_0xa0ff('0x2a')][_0xa0ff('0x2b')](_0x2c3a49)['catch'](function(_0x13fc2d){logger[_0xa0ff('0x2c')](_0xa0ff('0x2d'));});}}}function stopRouting(_0x51672b,_0x5bf54a,_0x38d67c,_0x44c24f){if(_0x51672b&&_0x5bf54a){_0x5bf54a[_0xa0ff('0x1a')]-=0x1;var _0x862a={'leaveAt':moment()['format'](_0xa0ff('0x1c')),'acceptAt':moment()['format'](_0xa0ff('0x1c')),'reason':_0xa0ff('0x2e')};logger[_0xa0ff('0x2f')](util[_0xa0ff('0x10')](_0xa0ff('0x30'),_0x51672b,_0x5bf54a[_0xa0ff('0x29')]));emitChannelQueueInteraction(_0x38d67c['channel'],_0x5bf54a[_0xa0ff('0x29')],_0x38d67c[_0xa0ff('0x1b')],_0x38d67c[_0xa0ff('0x9')][_0xa0ff('0x29')],_0x38d67c[_0xa0ff('0x25')]['id'],![],_0x44c24f,_0x5bf54a['id']);if(rpc[_0x38d67c[_0xa0ff('0x20')]+_0xa0ff('0x2a')]){return rpc[_0x38d67c[_0xa0ff('0x20')]+_0xa0ff('0x2a')][_0xa0ff('0x31')](_0x51672b,_0x862a)[_0xa0ff('0x32')](function(_0x20c464){logger['error']('update\x20queue\x20report');});}}}function endRouting(_0xe1555f,_0x1878cc,_0x1dab42,_0x185175){if(_0xe1555f&&_0x1878cc){_0x1878cc[_0xa0ff('0x1a')]-=0x1;var _0x1b5d7f={'leaveAt':moment()['format'](_0xa0ff('0x1c')),'exitAt':moment()[_0xa0ff('0x10')](_0xa0ff('0x1c')),'reason':_0xa0ff('0x33')};logger[_0xa0ff('0x2f')](util[_0xa0ff('0x10')](_0xa0ff('0x34'),_0xe1555f,_0x1878cc[_0xa0ff('0x29')]));emitChannelQueueInteraction(_0x1dab42[_0xa0ff('0x20')],_0x1878cc['name'],_0x1dab42[_0xa0ff('0x1b')],_0x1dab42[_0xa0ff('0x9')]['name'],_0x1dab42[_0xa0ff('0x25')]['id'],![],_0x185175);if(rpc[_0x1dab42['channel']+_0xa0ff('0x2a')]){return rpc[_0x1dab42[_0xa0ff('0x20')]+_0xa0ff('0x2a')][_0xa0ff('0x31')](_0xe1555f,_0x1b5d7f)[_0xa0ff('0x32')](function(_0x21da9d){logger[_0xa0ff('0x2c')](_0xa0ff('0x35'));});}}}function handleFindQueue(_0x435661){return function(_0x58773e){return _0x58773e[_0xa0ff('0x29')][_0xa0ff('0x36')]()===_0x435661[_0xa0ff('0x36')]();};}exports[_0xa0ff('0x37')]=function(_0x4d12bd,_0x5a5ba4,_0x2e182f,_0x1bb340){return function(_0x17a48d){try{var _0x167d35={'name':_0x5a5ba4[0x0],'timeout':_0x5a5ba4[0x1]};var _0xfdc19a=queue['validate'](_0x167d35,{'typecast':!![]});if(_0xfdc19a['length']){logger[_0xa0ff('0x2c')](_0xa0ff('0x38'),_0x4d12bd,_[_0xa0ff('0x39')](_0xfdc19a,_0xa0ff('0x25'))['join'](',\x20'));_0x17a48d[_0xa0ff('0x3a')]();}else{var _0xef6ad1=_[_0xa0ff('0x3b')](_0x2e182f[_0x1bb340[_0xa0ff('0x20')]+_0xa0ff('0x3c')],handleFindQueue(_0x167d35[_0xa0ff('0x29')]));if(_0xef6ad1){startRouting(_0x4d12bd,_0xef6ad1,_0x1bb340,_0x2e182f);var _0x37a271=(_0xef6ad1[_0xa0ff('0x33')]||0xa)*0x3e8;var _0x354923=(_0x167d35[_0xa0ff('0x33')]||0x14)*0x3e8;var _0x28096d,_0xeedbae;if(_0x37a271>_0x354923){_0x354923=_0x37a271;}var _0x24b156=seqqueue[_0xa0ff('0x3d')](_0x37a271);_0x24b156['id']=_0x4d12bd;_0x24b156[_0xa0ff('0x3e')]=_0x37a271;_0x24b156[_0xa0ff('0x3f')]=_0x354923;_0x24b156[_0xa0ff('0x20')]=_0x1bb340[_0xa0ff('0x20')];_0x2e182f[_0xa0ff('0x40')][_0x4d12bd]['on']('end',function(){logger[_0xa0ff('0x2f')](_0xa0ff('0x41'),_0x4d12bd);stopRouting(_0x4d12bd,_0xef6ad1,_0x1bb340,_0x2e182f);clearTimeout(_0x28096d);_0x28096d=undefined;_0x24b156[_0xa0ff('0x42')](!![]);if(_0x2e182f[_0xa0ff('0x40')][_0x4d12bd]){delete _0x2e182f[_0xa0ff('0x40')][_0x4d12bd];}_0x17a48d['stop']();});_0x2e182f[_0xa0ff('0x40')][_0x4d12bd]['on'](_0xa0ff('0x43'),function(){if(_0x2e182f[_0xa0ff('0x40')][_0x4d12bd]){delete _0x2e182f['rules'][_0x4d12bd];}});_0x28096d=setTimeout(function(){logger[_0xa0ff('0x2f')](_0xa0ff('0x44'),_0x4d12bd);endRouting(_0x4d12bd,_0xef6ad1,_0x1bb340,_0x2e182f);clearTimeout(_0x28096d);_0x24b156['close'](!![]);_0x17a48d[_0xa0ff('0x45')]();},_0x354923);switch(_0xef6ad1[_0xa0ff('0x46')]){case _0xa0ff('0x47'):strategy[_0xa0ff('0x47')](_0x24b156,_0xef6ad1,_0x2e182f,_0x1bb340);break;default:strategy['beepall'](_0x24b156,_0xef6ad1,_0x2e182f,_0x1bb340);}}else{logger[_0xa0ff('0x2c')](_0xa0ff('0x48'),_0x4d12bd,_0x167d35[_0xa0ff('0x29')]);_0x17a48d[_0xa0ff('0x3a')]();}}}catch(_0x2ec329){console[_0xa0ff('0x49')](_0x2ec329);logger[_0xa0ff('0x2c')](_0xa0ff('0x38'),_0x4d12bd,_0x2ec329[_0xa0ff('0x4a')]);_0x17a48d[_0xa0ff('0x3a')]();}};};
\ No newline at end of file
index 7814630..581f00e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8029=['lodash','uuid','../../../../../config/logger','routing','notificationId','squeue','agent','push','handleRun','bind','handleTimeout','timeout','prototype','handleDrained','info','[%s][AGENT]\x20try\x20with\x20%s','isNil','[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s','forcedOwnership','realtime','agents','channel','busy','busyQueue','showNotification','RINGING',':FORCED','[%s][AGENT]\x20timeout\x20with\x20%s','hideNotification','TIMEOUT','exports'];(function(_0x18e26b,_0x2d9bb8){var _0x50bb2c=function(_0x348676){while(--_0x348676){_0x18e26b['push'](_0x18e26b['shift']());}};_0x50bb2c(++_0x2d9bb8);}(_0x8029,0xf8));var _0x9802=function(_0x51304b,_0x44f551){_0x51304b=_0x51304b-0x0;var _0x4a0f87=_0x8029[_0x51304b];return _0x4a0f87;};'use strict';var _=require(_0x9802('0x0'));var uuid=require(_0x9802('0x1'));var util=require('./util');var logger=require(_0x9802('0x2'))(_0x9802('0x3'));var Agent=function(_0x3a9cfb,_0x33e627,_0x4def7c,_0x55ab08){this[_0x9802('0x4')]=uuid['v4']();this[_0x9802('0x5')]=_0x3a9cfb;this[_0x9802('0x6')]=_0x33e627;this['realtime']=_0x4def7c;this['routing']=_0x55ab08;this['squeue'][_0x9802('0x7')](this[_0x9802('0x8')][_0x9802('0x9')](this),this[_0x9802('0xa')]['bind'](this));this[_0x9802('0x5')]['on'](_0x9802('0xb'),this['handleTimeout'][_0x9802('0x9')](this));this[_0x9802('0x5')]['on']('drained',this['handleDrained']['bind'](this));};Agent[_0x9802('0xc')][_0x9802('0x7')]=function(){this[_0x9802('0x5')][_0x9802('0x7')](this['handleRun']['bind'](this),this[_0x9802('0xa')][_0x9802('0x9')](this));};Agent[_0x9802('0xc')][_0x9802('0xd')]=function(){this[_0x9802('0xa')](!![]);};Agent[_0x9802('0xc')][_0x9802('0x8')]=function(_0x302581){logger[_0x9802('0xe')](_0x9802('0xf'),this[_0x9802('0x5')]['id'],this[_0x9802('0x6')]['id']);if(_[_0x9802('0x10')](this['realtime']['agents'][this[_0x9802('0x6')]['id']])){logger[_0x9802('0xe')](_0x9802('0x11'),this['squeue']['id'],this[_0x9802('0x6')]['id']);setTimeout(this[_0x9802('0x7')][_0x9802('0x9')](this),0x3e8);}else{if(this[_0x9802('0x3')][_0x9802('0x12')]||util['isAgentAvailable'](this['squeue']['id'],this[_0x9802('0x13')][_0x9802('0x14')][this[_0x9802('0x6')]['id']],this[_0x9802('0x5')][_0x9802('0x15')],![])){this['realtime'][_0x9802('0x14')][this[_0x9802('0x6')]['id']][_0x9802('0x16')]=!![];this[_0x9802('0x13')][_0x9802('0x14')][this[_0x9802('0x6')]['id']][_0x9802('0x17')]=undefined;util[_0x9802('0x18')](this[_0x9802('0x4')],this[_0x9802('0x5')]['id'],this[_0x9802('0x13')]['agents'][this['agent']['id']],null,this[_0x9802('0x3')]);util['writeLog'](this[_0x9802('0x5')]['id'],this['realtime'][_0x9802('0x14')][this['agent']['id']],_0x9802('0x19')+(this[_0x9802('0x3')][_0x9802('0x12')]?_0x9802('0x1a'):''));}else{logger[_0x9802('0xe')]('[%s][AGENT]\x20agent\x20%s\x20is\x20not\x20available',this[_0x9802('0x5')]['id'],this[_0x9802('0x6')]['id']);setTimeout(this['push'][_0x9802('0x9')](this),0x3e8);}}};Agent['prototype']['handleTimeout']=function(_0x574790){if(_[_0x9802('0x10')](this[_0x9802('0x13')][_0x9802('0x14')][this['agent']['id']])){return logger['info'](_0x9802('0x11'),this['squeue']['id'],this[_0x9802('0x6')]['id']);}else{logger['info'](_0x9802('0x1b'),this[_0x9802('0x5')]['id'],this[_0x9802('0x6')]['id']);util[_0x9802('0x1c')](this[_0x9802('0x4')],this['squeue']['id'],this[_0x9802('0x13')][_0x9802('0x14')][this[_0x9802('0x6')]['id']],null,this[_0x9802('0x3')]);this[_0x9802('0x13')][_0x9802('0x14')][this[_0x9802('0x6')]['id']][_0x9802('0x16')]=![];this[_0x9802('0x13')]['agents'][this['agent']['id']][_0x9802('0x17')]=undefined;util['writeLog'](this[_0x9802('0x5')]['id'],this['realtime'][_0x9802('0x14')][this[_0x9802('0x6')]['id']],_0x574790?'STOP':_0x9802('0x1d'));}if(!_0x574790){setTimeout(this['push']['bind'](this),0x3e8);}};function agent(_0x54a4bc,_0xf4fcc7,_0x4ac13a,_0xb796c){return new Agent(_0x54a4bc,_0xf4fcc7,_0x4ac13a,_0xb796c);}module[_0x9802('0x1e')]=agent;
\ No newline at end of file
+var _0x92cf=['busy','busyQueue','showNotification','info','[%s][AGENT]\x20agent\x20%s\x20is\x20not\x20available','[%s][AGENT]\x20timeout\x20with\x20%s','hideNotification','writeLog','STOP','TIMEOUT','exports','uuid','./util','../../../../../config/logger','routing','notificationId','agent','squeue','push','handleRun','bind','timeout','handleDrained','prototype','[%s][AGENT]\x20try\x20with\x20%s','isNil','realtime','[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s','forcedOwnership','isAgentAvailable','agents','channel'];(function(_0x58da88,_0x1ba553){var _0x21f145=function(_0x47326b){while(--_0x47326b){_0x58da88['push'](_0x58da88['shift']());}};_0x21f145(++_0x1ba553);}(_0x92cf,0x10b));var _0xf92c=function(_0x6f9e6c,_0x5ef730){_0x6f9e6c=_0x6f9e6c-0x0;var _0x20a1a0=_0x92cf[_0x6f9e6c];return _0x20a1a0;};'use strict';var _=require('lodash');var uuid=require(_0xf92c('0x0'));var util=require(_0xf92c('0x1'));var logger=require(_0xf92c('0x2'))(_0xf92c('0x3'));var Agent=function(_0x2f09d7,_0x2726c3,_0x1fd2c3,_0x295327){this[_0xf92c('0x4')]=uuid['v4']();this['squeue']=_0x2f09d7;this[_0xf92c('0x5')]=_0x2726c3;this['realtime']=_0x1fd2c3;this[_0xf92c('0x3')]=_0x295327;this[_0xf92c('0x6')][_0xf92c('0x7')](this[_0xf92c('0x8')]['bind'](this),this['handleTimeout'][_0xf92c('0x9')](this));this[_0xf92c('0x6')]['on'](_0xf92c('0xa'),this['handleTimeout']['bind'](this));this['squeue']['on']('drained',this[_0xf92c('0xb')][_0xf92c('0x9')](this));};Agent['prototype'][_0xf92c('0x7')]=function(){this['squeue']['push'](this[_0xf92c('0x8')][_0xf92c('0x9')](this),this['handleTimeout']['bind'](this));};Agent[_0xf92c('0xc')][_0xf92c('0xb')]=function(){this['handleTimeout'](!![]);};Agent[_0xf92c('0xc')][_0xf92c('0x8')]=function(_0x3c5fdc){logger['info'](_0xf92c('0xd'),this[_0xf92c('0x6')]['id'],this[_0xf92c('0x5')]['id']);if(_[_0xf92c('0xe')](this[_0xf92c('0xf')]['agents'][this['agent']['id']])){logger['info'](_0xf92c('0x10'),this[_0xf92c('0x6')]['id'],this[_0xf92c('0x5')]['id']);setTimeout(this[_0xf92c('0x7')][_0xf92c('0x9')](this),0x3e8);}else{if(this[_0xf92c('0x3')][_0xf92c('0x11')]||util[_0xf92c('0x12')](this[_0xf92c('0x6')]['id'],this[_0xf92c('0xf')][_0xf92c('0x13')][this[_0xf92c('0x5')]['id']],this[_0xf92c('0x6')][_0xf92c('0x14')],![])){this[_0xf92c('0xf')][_0xf92c('0x13')][this[_0xf92c('0x5')]['id']][_0xf92c('0x15')]=!![];this[_0xf92c('0xf')][_0xf92c('0x13')][this[_0xf92c('0x5')]['id']][_0xf92c('0x16')]=undefined;util[_0xf92c('0x17')](this['notificationId'],this[_0xf92c('0x6')]['id'],this[_0xf92c('0xf')][_0xf92c('0x13')][this[_0xf92c('0x5')]['id']],null,this['routing']);util['writeLog'](this['squeue']['id'],this['realtime']['agents'][this[_0xf92c('0x5')]['id']],'RINGING'+(this['routing']['forcedOwnership']?':FORCED':''));}else{logger[_0xf92c('0x18')](_0xf92c('0x19'),this[_0xf92c('0x6')]['id'],this[_0xf92c('0x5')]['id']);setTimeout(this['push'][_0xf92c('0x9')](this),0x3e8);}}};Agent[_0xf92c('0xc')]['handleTimeout']=function(_0x1daa48){if(_[_0xf92c('0xe')](this[_0xf92c('0xf')][_0xf92c('0x13')][this[_0xf92c('0x5')]['id']])){return logger['info']('[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0xf92c('0x6')]['id'],this[_0xf92c('0x5')]['id']);}else{logger['info'](_0xf92c('0x1a'),this[_0xf92c('0x6')]['id'],this['agent']['id']);util[_0xf92c('0x1b')](this['notificationId'],this['squeue']['id'],this[_0xf92c('0xf')][_0xf92c('0x13')][this[_0xf92c('0x5')]['id']],null,this[_0xf92c('0x3')]);this[_0xf92c('0xf')]['agents'][this['agent']['id']]['busy']=![];this[_0xf92c('0xf')][_0xf92c('0x13')][this[_0xf92c('0x5')]['id']][_0xf92c('0x16')]=undefined;util[_0xf92c('0x1c')](this[_0xf92c('0x6')]['id'],this['realtime'][_0xf92c('0x13')][this[_0xf92c('0x5')]['id']],_0x1daa48?_0xf92c('0x1d'):_0xf92c('0x1e'));}if(!_0x1daa48){setTimeout(this[_0xf92c('0x7')][_0xf92c('0x9')](this),0x3e8);}};function agent(_0x52c18d,_0x400565,_0x36e749,_0x1cf995){return new Agent(_0x52c18d,_0x400565,_0x36e749,_0x1cf995);}module[_0xf92c('0x1f')]=agent;
\ No newline at end of file
index c0b1188..1818adb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x812d=['[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','isAgentAvailable','RINGING','busy','agents','busyQueue','name','showNotification','info','[%s][QUEUE]\x20ALL\x20AGENTS\x20ARE\x20BUSY','[%s][QUEUE]\x20EMPTY','notificationId','writeLog','STOP','uuid','./util','../../../../../config/logger','routing','squeue','queue','realtime','push','handleRun','handleTimeout','bind','timeout','drained','prototype','handleDrained','isNil','Agents','length'];(function(_0x5687d4,_0x206b2d){var _0x4403f0=function(_0x3fbb9f){while(--_0x3fbb9f){_0x5687d4['push'](_0x5687d4['shift']());}};_0x4403f0(++_0x206b2d);}(_0x812d,0x6e));var _0xd812=function(_0x26f68c,_0x3509e1){_0x26f68c=_0x26f68c-0x0;var _0x321844=_0x812d[_0x26f68c];return _0x321844;};'use strict';var _=require('lodash');var uuid=require(_0xd812('0x0'));var util=require(_0xd812('0x1'));var logger=require(_0xd812('0x2'))(_0xd812('0x3'));var Beepall=function(_0x510c9d,_0x263692,_0x15181f,_0x2fba72){this['notificationId']=uuid['v4']();this[_0xd812('0x4')]=_0x510c9d;this[_0xd812('0x5')]=_0x263692;this[_0xd812('0x6')]=_0x15181f;this['routing']=_0x2fba72;this['squeue'][_0xd812('0x7')](this[_0xd812('0x8')]['bind'](this),this[_0xd812('0x9')][_0xd812('0xa')](this));this['squeue']['on'](_0xd812('0xb'),this[_0xd812('0x9')][_0xd812('0xa')](this));this['squeue']['on'](_0xd812('0xc'),this['handleDrained']['bind'](this));};Beepall[_0xd812('0xd')]['push']=function(){this['squeue'][_0xd812('0x7')](this[_0xd812('0x8')][_0xd812('0xa')](this),this['handleTimeout'][_0xd812('0xa')](this));};Beepall[_0xd812('0xd')][_0xd812('0xe')]=function(_0x188cd5){this[_0xd812('0x9')](!![]);};Beepall[_0xd812('0xd')][_0xd812('0x8')]=function(_0x30feb1){var _0x529bf0=!![];if(!_['isNil'](this['queue'])&&!_[_0xd812('0xf')](this['queue']['Agents'])&&this[_0xd812('0x5')][_0xd812('0x10')][_0xd812('0x11')]>0x0){for(var _0x24c4e4=0x0,_0x16200a;_0x24c4e4<this[_0xd812('0x5')][_0xd812('0x10')]['length'];_0x24c4e4+=0x1){_0x16200a=this['queue'][_0xd812('0x10')][_0x24c4e4]['id'];if(_['isNil'](this[_0xd812('0x6')]['agents'][_0x16200a])){logger['info'](_0xd812('0x12'),this[_0xd812('0x4')]['id'],_0x16200a);}else{if(util[_0xd812('0x13')](this[_0xd812('0x4')]['id'],this[_0xd812('0x6')]['agents'][_0x16200a],this['squeue']['channel'],!![])){_0x529bf0=![];util['writeLog'](this[_0xd812('0x4')]['id'],this[_0xd812('0x6')]['agents'][_0x16200a],_0xd812('0x14'));this['realtime']['agents'][_0x16200a][_0xd812('0x15')]=!![];this[_0xd812('0x6')][_0xd812('0x16')][_0x16200a][_0xd812('0x17')]=this['queue'][_0xd812('0x18')];util[_0xd812('0x19')](this['notificationId'],this[_0xd812('0x4')]['id'],this[_0xd812('0x6')][_0xd812('0x16')][_0x16200a],this[_0xd812('0x5')],this['routing']);}}}if(_0x529bf0){logger[_0xd812('0x1a')](_0xd812('0x1b'),this[_0xd812('0x4')]['id']);setTimeout(this[_0xd812('0x7')]['bind'](this),0x3e8);}}else{logger['info'](_0xd812('0x1c'),this[_0xd812('0x4')]['id']);setTimeout(this[_0xd812('0x7')][_0xd812('0xa')](this),0x3e8);}};Beepall['prototype'][_0xd812('0x9')]=function(_0x3331e0){if(!_[_0xd812('0xf')](this['queue'])&&!_[_0xd812('0xf')](this[_0xd812('0x5')][_0xd812('0x10')])){for(var _0x5e114e=0x0,_0x1caaea;_0x5e114e<this['queue'][_0xd812('0x10')]['length'];_0x5e114e+=0x1){_0x1caaea=this['queue']['Agents'][_0x5e114e]['id'];if(_[_0xd812('0xf')](this[_0xd812('0x6')][_0xd812('0x16')][_0x1caaea])){logger[_0xd812('0x1a')]('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0xd812('0x4')]['id'],_0x1caaea);}else{util['hideNotification'](this[_0xd812('0x1d')],this[_0xd812('0x4')]['id'],this[_0xd812('0x6')]['agents'][_0x1caaea],this[_0xd812('0x5')],this[_0xd812('0x3')]);util[_0xd812('0x1e')](this[_0xd812('0x4')]['id'],this[_0xd812('0x6')][_0xd812('0x16')][_0x1caaea],_0x3331e0?_0xd812('0x1f'):'TIMEOUT');this[_0xd812('0x6')][_0xd812('0x16')][_0x1caaea][_0xd812('0x15')]=![];this['realtime'][_0xd812('0x16')][_0x1caaea][_0xd812('0x17')]=undefined;}}}if(!_0x3331e0){setTimeout(this['push'][_0xd812('0xa')](this),0x3e8);}};function beepall(_0x4a7208,_0x437114,_0x2a8c52,_0x4d67a0){return new Beepall(_0x4a7208,_0x437114,_0x2a8c52,_0x4d67a0);}module['exports']=beepall;
\ No newline at end of file
+var _0x55a5=['handleRun','handleTimeout','bind','timeout','drained','prototype','handleDrained','Agents','length','isNil','agents','info','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','channel','writeLog','RINGING','busy','name','showNotification','[%s][QUEUE]\x20ALL\x20AGENTS\x20ARE\x20BUSY','hideNotification','STOP','busyQueue','lodash','./util','../../../../../config/logger','routing','notificationId','squeue','queue','realtime','push'];(function(_0x190b71,_0x41053a){var _0x2ce8d0=function(_0x2eb539){while(--_0x2eb539){_0x190b71['push'](_0x190b71['shift']());}};_0x2ce8d0(++_0x41053a);}(_0x55a5,0xf7));var _0x555a=function(_0x10e653,_0x59f1cc){_0x10e653=_0x10e653-0x0;var _0x328dfd=_0x55a5[_0x10e653];return _0x328dfd;};'use strict';var _=require(_0x555a('0x0'));var uuid=require('uuid');var util=require(_0x555a('0x1'));var logger=require(_0x555a('0x2'))(_0x555a('0x3'));var Beepall=function(_0x287b84,_0x428212,_0x2a2bf2,_0x4456c7){this[_0x555a('0x4')]=uuid['v4']();this[_0x555a('0x5')]=_0x287b84;this[_0x555a('0x6')]=_0x428212;this[_0x555a('0x7')]=_0x2a2bf2;this[_0x555a('0x3')]=_0x4456c7;this[_0x555a('0x5')][_0x555a('0x8')](this[_0x555a('0x9')]['bind'](this),this[_0x555a('0xa')][_0x555a('0xb')](this));this[_0x555a('0x5')]['on'](_0x555a('0xc'),this[_0x555a('0xa')][_0x555a('0xb')](this));this[_0x555a('0x5')]['on'](_0x555a('0xd'),this['handleDrained'][_0x555a('0xb')](this));};Beepall[_0x555a('0xe')][_0x555a('0x8')]=function(){this[_0x555a('0x5')][_0x555a('0x8')](this['handleRun']['bind'](this),this['handleTimeout']['bind'](this));};Beepall[_0x555a('0xe')][_0x555a('0xf')]=function(_0xdf5d6f){this[_0x555a('0xa')](!![]);};Beepall[_0x555a('0xe')][_0x555a('0x9')]=function(_0x3fe691){var _0x29ad45=!![];if(!_['isNil'](this['queue'])&&!_['isNil'](this[_0x555a('0x6')][_0x555a('0x10')])&&this[_0x555a('0x6')]['Agents'][_0x555a('0x11')]>0x0){for(var _0x350b7a=0x0,_0x1add3b;_0x350b7a<this['queue'][_0x555a('0x10')]['length'];_0x350b7a+=0x1){_0x1add3b=this[_0x555a('0x6')][_0x555a('0x10')][_0x350b7a]['id'];if(_[_0x555a('0x12')](this[_0x555a('0x7')][_0x555a('0x13')][_0x1add3b])){logger[_0x555a('0x14')](_0x555a('0x15'),this[_0x555a('0x5')]['id'],_0x1add3b);}else{if(util['isAgentAvailable'](this[_0x555a('0x5')]['id'],this[_0x555a('0x7')][_0x555a('0x13')][_0x1add3b],this['squeue'][_0x555a('0x16')],!![])){_0x29ad45=![];util[_0x555a('0x17')](this['squeue']['id'],this[_0x555a('0x7')][_0x555a('0x13')][_0x1add3b],_0x555a('0x18'));this[_0x555a('0x7')][_0x555a('0x13')][_0x1add3b][_0x555a('0x19')]=!![];this[_0x555a('0x7')][_0x555a('0x13')][_0x1add3b]['busyQueue']=this[_0x555a('0x6')][_0x555a('0x1a')];util[_0x555a('0x1b')](this[_0x555a('0x4')],this[_0x555a('0x5')]['id'],this[_0x555a('0x7')]['agents'][_0x1add3b],this['queue'],this[_0x555a('0x3')]);}}}if(_0x29ad45){logger[_0x555a('0x14')](_0x555a('0x1c'),this[_0x555a('0x5')]['id']);setTimeout(this[_0x555a('0x8')][_0x555a('0xb')](this),0x3e8);}}else{logger['info']('[%s][QUEUE]\x20EMPTY',this[_0x555a('0x5')]['id']);setTimeout(this[_0x555a('0x8')][_0x555a('0xb')](this),0x3e8);}};Beepall[_0x555a('0xe')][_0x555a('0xa')]=function(_0x4418ff){if(!_[_0x555a('0x12')](this[_0x555a('0x6')])&&!_[_0x555a('0x12')](this[_0x555a('0x6')][_0x555a('0x10')])){for(var _0x4ae051=0x0,_0x55be89;_0x4ae051<this['queue'][_0x555a('0x10')][_0x555a('0x11')];_0x4ae051+=0x1){_0x55be89=this['queue']['Agents'][_0x4ae051]['id'];if(_[_0x555a('0x12')](this[_0x555a('0x7')][_0x555a('0x13')][_0x55be89])){logger[_0x555a('0x14')]('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0x555a('0x5')]['id'],_0x55be89);}else{util[_0x555a('0x1d')](this[_0x555a('0x4')],this['squeue']['id'],this[_0x555a('0x7')][_0x555a('0x13')][_0x55be89],this[_0x555a('0x6')],this[_0x555a('0x3')]);util[_0x555a('0x17')](this[_0x555a('0x5')]['id'],this[_0x555a('0x7')][_0x555a('0x13')][_0x55be89],_0x4418ff?_0x555a('0x1e'):'TIMEOUT');this[_0x555a('0x7')][_0x555a('0x13')][_0x55be89]['busy']=![];this['realtime']['agents'][_0x55be89][_0x555a('0x1f')]=undefined;}}}if(!_0x4418ff){setTimeout(this[_0x555a('0x8')][_0x555a('0xb')](this),0x3e8);}};function beepall(_0x1f868c,_0xcdd0c3,_0x39710c,_0x59c4cc){return new Beepall(_0x1f868c,_0xcdd0c3,_0x39710c,_0x59c4cc);}module['exports']=beepall;
\ No newline at end of file
index 3f1d10f..baacb98 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb8ef=['./beepall'];(function(_0x1f57bc,_0x24c0f4){var _0x51cb22=function(_0x479944){while(--_0x479944){_0x1f57bc['push'](_0x1f57bc['shift']());}};_0x51cb22(++_0x24c0f4);}(_0xb8ef,0xf6));var _0xfb8e=function(_0x1665e4,_0x50d8bc){_0x1665e4=_0x1665e4-0x0;var _0x4f585c=_0xb8ef[_0x1665e4];return _0x4f585c;};'use strict';module['exports']={'rrmemory':require('./rrmemory'),'beepall':require(_0xfb8e('0x0')),'agent':require('./agent')};
\ No newline at end of file
+var _0xeca9=['./beepall','./agent','exports','./rrmemory'];(function(_0xb8a2e6,_0x3ca53b){var _0x1d35b9=function(_0x33d721){while(--_0x33d721){_0xb8a2e6['push'](_0xb8a2e6['shift']());}};_0x1d35b9(++_0x3ca53b);}(_0xeca9,0x196));var _0x9eca=function(_0x1c325e,_0x3013b){_0x1c325e=_0x1c325e-0x0;var _0x219d1b=_0xeca9[_0x1c325e];return _0x219d1b;};'use strict';module[_0x9eca('0x0')]={'rrmemory':require(_0x9eca('0x1')),'beepall':require(_0x9eca('0x2')),'agent':require(_0x9eca('0x3'))};
\ No newline at end of file
index 981a608..3fb3362 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd246=['module','timeout','drained','handleDrained','prototype','realtime','agents','agentId','channel','info','done','mapAgentsId','[%s][QUEUE]\x20try\x20with\x20%s','isNil','busy','busyQueue','writeLog','RINGING','intervals','handleCheckReject','[%s][QUEUE]\x20agent\x20skipped,\x20not\x20available\x20id\x20%s','[%s][QUEUE]\x20timeout\x20with\x20%s','hideNotification','exports','lodash','uuid','./util','../../../../../config/logger','routing','notificationId','queue','squeue','push','handleRun','bind','handleTimeout'];(function(_0x572637,_0x216d95){var _0xb6748=function(_0x3eeb8c){while(--_0x3eeb8c){_0x572637['push'](_0x572637['shift']());}};_0xb6748(++_0x216d95);}(_0xd246,0xf0));var _0x6d24=function(_0x123450,_0x491c01){_0x123450=_0x123450-0x0;var _0x23b29d=_0xd246[_0x123450];return _0x23b29d;};'use strict';var rr=require('rr');var _=require(_0x6d24('0x0'));var uuid=require(_0x6d24('0x1'));var util=require(_0x6d24('0x2'));var logger=require(_0x6d24('0x3'))(_0x6d24('0x4'));var RRMemory=function(_0x316325,_0x4925ab,_0x2d8d83,_0x390f4b){this[_0x6d24('0x5')]=uuid['v4']();this['squeue']=_0x316325;this[_0x6d24('0x6')]=_0x4925ab;this['realtime']=_0x2d8d83;this[_0x6d24('0x4')]=_0x390f4b;this['intervals']={};this[_0x6d24('0x7')][_0x6d24('0x8')](this[_0x6d24('0x9')][_0x6d24('0xa')](this),this[_0x6d24('0xb')][_0x6d24('0xa')](this),this[_0x6d24('0xc')]);this[_0x6d24('0x7')]['on'](_0x6d24('0xd'),this['handleTimeout'][_0x6d24('0xa')](this));this[_0x6d24('0x7')]['on'](_0x6d24('0xe'),this[_0x6d24('0xf')]['bind'](this));};RRMemory[_0x6d24('0x10')][_0x6d24('0x8')]=function(){this[_0x6d24('0x7')]['push'](this[_0x6d24('0x9')]['bind'](this),this[_0x6d24('0xb')]['bind'](this));};RRMemory['prototype'][_0x6d24('0xf')]=function(_0x443e8c){this[_0x6d24('0xb')](!![]);};RRMemory[_0x6d24('0x10')]['handleCheckReject']=function(_0x1fe4ec){if(util['isAgentAvailable'](this[_0x6d24('0x7')]['id'],this[_0x6d24('0x11')][_0x6d24('0x12')][this[_0x6d24('0x13')]],this[_0x6d24('0x7')][_0x6d24('0x14')],!![])){logger[_0x6d24('0x15')]('[%s][QUEUE]\x20available\x20again\x20%s',this[_0x6d24('0x7')]['id'],this['agentId']);clearInterval(this['intervals'][this[_0x6d24('0x13')]]);_0x1fe4ec[_0x6d24('0x16')]();setTimeout(this[_0x6d24('0x8')]['bind'](this),0x3e8);}};RRMemory[_0x6d24('0x10')][_0x6d24('0x9')]=function(_0x433f8a){this[_0x6d24('0x13')]=rr(this['queue'][_0x6d24('0x17')]);logger[_0x6d24('0x15')](_0x6d24('0x18'),this[_0x6d24('0x7')]['id'],this[_0x6d24('0x13')]);if(_[_0x6d24('0x19')](this[_0x6d24('0x11')][_0x6d24('0x12')][this[_0x6d24('0x13')]])){logger['info']('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this['squeue']['id'],this['agentId']);_0x433f8a[_0x6d24('0x16')]();setTimeout(this[_0x6d24('0x8')][_0x6d24('0xa')](this),0x3e8);}else{if(util['isAgentAvailable'](this[_0x6d24('0x7')]['id'],this[_0x6d24('0x11')][_0x6d24('0x12')][this['agentId']],this['squeue'][_0x6d24('0x14')],!![])){this[_0x6d24('0x11')][_0x6d24('0x12')][this[_0x6d24('0x13')]][_0x6d24('0x1a')]=!![];this['realtime'][_0x6d24('0x12')][this[_0x6d24('0x13')]][_0x6d24('0x1b')]=this[_0x6d24('0x6')]['name'];util['showNotification'](this[_0x6d24('0x5')],this[_0x6d24('0x7')]['id'],this['realtime'][_0x6d24('0x12')][this[_0x6d24('0x13')]],this[_0x6d24('0x6')],this['routing']);util[_0x6d24('0x1c')](this[_0x6d24('0x7')]['id'],this[_0x6d24('0x11')]['agents'][this[_0x6d24('0x13')]],_0x6d24('0x1d'));this[_0x6d24('0x1e')][this[_0x6d24('0x13')]]=setInterval(this[_0x6d24('0x1f')][_0x6d24('0xa')](this,_0x433f8a),0x3e8);}else{logger[_0x6d24('0x15')](_0x6d24('0x20'),this['squeue']['id'],this[_0x6d24('0x13')]);_0x433f8a[_0x6d24('0x16')]();setTimeout(this[_0x6d24('0x8')][_0x6d24('0xa')](this),0x3e8);}}};RRMemory[_0x6d24('0x10')][_0x6d24('0xb')]=function(_0x2f5b61){logger[_0x6d24('0x15')](_0x6d24('0x21'),this[_0x6d24('0x7')]['id'],this[_0x6d24('0x13')]);if(_[_0x6d24('0x19')](this['realtime'][_0x6d24('0x12')][this[_0x6d24('0x13')]])){logger[_0x6d24('0x15')]('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this['squeue']['id'],this[_0x6d24('0x13')]);}else{clearInterval(this['intervals'][this[_0x6d24('0x13')]]);util[_0x6d24('0x22')](this[_0x6d24('0x5')],this[_0x6d24('0x7')]['id'],this[_0x6d24('0x11')][_0x6d24('0x12')][this['agentId']],this[_0x6d24('0x6')],this[_0x6d24('0x4')]);util[_0x6d24('0x1c')](this[_0x6d24('0x7')]['id'],this['realtime'][_0x6d24('0x12')][this[_0x6d24('0x13')]],'TIMEOUT');this[_0x6d24('0x11')][_0x6d24('0x12')][this[_0x6d24('0x13')]][_0x6d24('0x1a')]=![];this[_0x6d24('0x11')][_0x6d24('0x12')][this[_0x6d24('0x13')]]['busyQueue']=undefined;}if(!_0x2f5b61){setTimeout(this['push']['bind'](this),0x3e8);}};function rrmemory(_0x16e5a0,_0x40b2dd,_0x35ec2e,_0x4cf7e2){return new RRMemory(_0x16e5a0,_0x40b2dd,_0x35ec2e,_0x4cf7e2);}module[_0x6d24('0x23')]=rrmemory;
\ No newline at end of file
+var _0x7477=['channel','[%s][QUEUE]\x20available\x20again\x20%s','done','info','[%s][QUEUE]\x20try\x20with\x20%s','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','name','showNotification','notificationId','writeLog','[%s][QUEUE]\x20agent\x20skipped,\x20not\x20available\x20id\x20%s','isNil','hideNotification','TIMEOUT','busy','exports','lodash','uuid','./util','../../../../../config/logger','routing','queue','realtime','intervals','squeue','handleRun','bind','handleTimeout','module','timeout','handleDrained','prototype','push','handleCheckReject','isAgentAvailable','agents','agentId'];(function(_0x2ad1ff,_0x4db712){var _0x4c3592=function(_0x25c5dd){while(--_0x25c5dd){_0x2ad1ff['push'](_0x2ad1ff['shift']());}};_0x4c3592(++_0x4db712);}(_0x7477,0xc9));var _0x7747=function(_0x546895,_0xb414da){_0x546895=_0x546895-0x0;var _0x3b5a09=_0x7477[_0x546895];return _0x3b5a09;};'use strict';var rr=require('rr');var _=require(_0x7747('0x0'));var uuid=require(_0x7747('0x1'));var util=require(_0x7747('0x2'));var logger=require(_0x7747('0x3'))(_0x7747('0x4'));var RRMemory=function(_0x1f3401,_0x123b56,_0x260c84,_0xa2979d){this['notificationId']=uuid['v4']();this['squeue']=_0x1f3401;this[_0x7747('0x5')]=_0x123b56;this[_0x7747('0x6')]=_0x260c84;this['routing']=_0xa2979d;this[_0x7747('0x7')]={};this[_0x7747('0x8')]['push'](this[_0x7747('0x9')][_0x7747('0xa')](this),this[_0x7747('0xb')][_0x7747('0xa')](this),this[_0x7747('0xc')]);this[_0x7747('0x8')]['on'](_0x7747('0xd'),this[_0x7747('0xb')][_0x7747('0xa')](this));this['squeue']['on']('drained',this[_0x7747('0xe')][_0x7747('0xa')](this));};RRMemory[_0x7747('0xf')]['push']=function(){this[_0x7747('0x8')][_0x7747('0x10')](this[_0x7747('0x9')][_0x7747('0xa')](this),this[_0x7747('0xb')][_0x7747('0xa')](this));};RRMemory['prototype'][_0x7747('0xe')]=function(_0x587c65){this[_0x7747('0xb')](!![]);};RRMemory[_0x7747('0xf')][_0x7747('0x11')]=function(_0x1a20e2){if(util[_0x7747('0x12')](this[_0x7747('0x8')]['id'],this[_0x7747('0x6')][_0x7747('0x13')][this[_0x7747('0x14')]],this['squeue'][_0x7747('0x15')],!![])){logger['info'](_0x7747('0x16'),this[_0x7747('0x8')]['id'],this[_0x7747('0x14')]);clearInterval(this['intervals'][this['agentId']]);_0x1a20e2[_0x7747('0x17')]();setTimeout(this[_0x7747('0x10')][_0x7747('0xa')](this),0x3e8);}};RRMemory[_0x7747('0xf')]['handleRun']=function(_0x3eec9e){this[_0x7747('0x14')]=rr(this[_0x7747('0x5')]['mapAgentsId']);logger[_0x7747('0x18')](_0x7747('0x19'),this['squeue']['id'],this[_0x7747('0x14')]);if(_['isNil'](this[_0x7747('0x6')][_0x7747('0x13')][this[_0x7747('0x14')]])){logger[_0x7747('0x18')](_0x7747('0x1a'),this[_0x7747('0x8')]['id'],this[_0x7747('0x14')]);_0x3eec9e[_0x7747('0x17')]();setTimeout(this[_0x7747('0x10')][_0x7747('0xa')](this),0x3e8);}else{if(util[_0x7747('0x12')](this[_0x7747('0x8')]['id'],this['realtime']['agents'][this[_0x7747('0x14')]],this[_0x7747('0x8')][_0x7747('0x15')],!![])){this[_0x7747('0x6')]['agents'][this[_0x7747('0x14')]]['busy']=!![];this[_0x7747('0x6')]['agents'][this[_0x7747('0x14')]]['busyQueue']=this[_0x7747('0x5')][_0x7747('0x1b')];util[_0x7747('0x1c')](this[_0x7747('0x1d')],this[_0x7747('0x8')]['id'],this[_0x7747('0x6')][_0x7747('0x13')][this['agentId']],this['queue'],this[_0x7747('0x4')]);util[_0x7747('0x1e')](this[_0x7747('0x8')]['id'],this[_0x7747('0x6')][_0x7747('0x13')][this[_0x7747('0x14')]],'RINGING');this[_0x7747('0x7')][this[_0x7747('0x14')]]=setInterval(this[_0x7747('0x11')][_0x7747('0xa')](this,_0x3eec9e),0x3e8);}else{logger[_0x7747('0x18')](_0x7747('0x1f'),this['squeue']['id'],this[_0x7747('0x14')]);_0x3eec9e[_0x7747('0x17')]();setTimeout(this[_0x7747('0x10')][_0x7747('0xa')](this),0x3e8);}}};RRMemory[_0x7747('0xf')][_0x7747('0xb')]=function(_0x429731){logger[_0x7747('0x18')]('[%s][QUEUE]\x20timeout\x20with\x20%s',this[_0x7747('0x8')]['id'],this['agentId']);if(_[_0x7747('0x20')](this[_0x7747('0x6')][_0x7747('0x13')][this['agentId']])){logger[_0x7747('0x18')](_0x7747('0x1a'),this[_0x7747('0x8')]['id'],this[_0x7747('0x14')]);}else{clearInterval(this[_0x7747('0x7')][this[_0x7747('0x14')]]);util[_0x7747('0x21')](this[_0x7747('0x1d')],this[_0x7747('0x8')]['id'],this[_0x7747('0x6')][_0x7747('0x13')][this['agentId']],this[_0x7747('0x5')],this[_0x7747('0x4')]);util[_0x7747('0x1e')](this[_0x7747('0x8')]['id'],this[_0x7747('0x6')][_0x7747('0x13')][this[_0x7747('0x14')]],_0x7747('0x22'));this[_0x7747('0x6')][_0x7747('0x13')][this[_0x7747('0x14')]][_0x7747('0x23')]=![];this[_0x7747('0x6')][_0x7747('0x13')][this[_0x7747('0x14')]]['busyQueue']=undefined;}if(!_0x429731){setTimeout(this['push'][_0x7747('0xa')](this),0x3e8);}};function rrmemory(_0x13f58d,_0xd85936,_0x297ea5,_0x40be4c){return new RRMemory(_0x13f58d,_0xd85936,_0x297ea5,_0x40be4c);}module[_0x7747('0x24')]=rrmemory;
\ No newline at end of file
index a254834..d8d990c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4975=['notificationShake','body','queue','msg','getMustacheRender','notificationTemplate','error','[%s][QUEUE]\x20%s','notification:%s','save','remove','isAgentAvailable','online','OFFLINE','Pause','PAUSE','Capacity','CurrentCapacity','toUpperCase','\x20MAXCAPACITY','lodash','../utils','mustache','ioredis','../../../../../config/environment','../../../../../config/logger','routing','redis','defaults','localhost','emit','format','user:%s','name','user:save','\x20interaction','account','notificationSound'];(function(_0x5987e1,_0x1fc5c2){var _0x15df39=function(_0x12f2db){while(--_0x12f2db){_0x5987e1['push'](_0x5987e1['shift']());}};_0x15df39(++_0x1fc5c2);}(_0x4975,0x86));var _0x5497=function(_0x2bfbef,_0x10dfa4){_0x2bfbef=_0x2bfbef-0x0;var _0x52808a=_0x4975[_0x2bfbef];return _0x52808a;};'use strict';var _=require(_0x5497('0x0'));var util=require('util');var utils=require(_0x5497('0x1'));var Mustache=require(_0x5497('0x2'));var Redis=require(_0x5497('0x3'));var config=require(_0x5497('0x4'));var logger=require(_0x5497('0x5'))(_0x5497('0x6'));config[_0x5497('0x7')]=_[_0x5497('0x8')](config[_0x5497('0x7')],{'host':_0x5497('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x5497('0x7')]));function emit(_0x4f563d,_0x1d0019,_0x674a2a){io['to'](_0x4f563d)[_0x5497('0xa')](_0x1d0019,_0x674a2a);}function sendNotification(_0x57f930,_0x42af11,_0x49d94b,_0x1f63d8,_0x29c93f,_0x2ec5a4){io['to'](util[_0x5497('0xb')](_0x5497('0xc'),_0x1f63d8[_0x5497('0xd')]))[_0x5497('0xa')](_0x5497('0xe'),_0x1f63d8);var _0x50d716=_0x2ec5a4||{};var _0x5874ef=_0x49d94b['split']('.');var _0xc250bb={'uniqueid':_0x42af11,'channel':_0x5874ef[0x0],'id':_0x5874ef[0x1],'title':_0x5874ef[0x0]+_0x5497('0xf'),'interactionId':_0x5874ef[0x2],'queue':_0x29c93f?_0x29c93f[_0x5497('0xd')]:null,'sound':_0x50d716[_0x5497('0x10')][_0x5497('0x11')],'shake':_0x50d716[_0x5497('0x10')][_0x5497('0x12')]};try{if(!_0x50d716[_0x5497('0x13')]){_0x50d716[_0x5497('0x13')]={};}if(_0x29c93f){_0x50d716[_0x5497('0x13')]['queue']=_0x29c93f;}else if(_0x50d716[_0x5497('0x13')]['queue']){delete _0x50d716[_0x5497('0x13')][_0x5497('0x14')];}_0xc250bb[_0x5497('0x15')]=utils[_0x5497('0x16')](_0x50d716[_0x5497('0x10')][_0x5497('0x17')],_0x50d716);}catch(_0x2f2997){_0xc250bb['msg']='I\x20can\x27t\x20render\x20your\x20template';logger[_0x5497('0x18')](util[_0x5497('0xb')](_0x5497('0x19'),_0x42af11,_0x2f2997['message']));}io['to'](util[_0x5497('0xb')](_0x5497('0xc'),_0x1f63d8[_0x5497('0xd')]))[_0x5497('0xa')](util[_0x5497('0xb')](_0x5497('0x1a'),_0x57f930?_0x5497('0x1b'):_0x5497('0x1c')),_0xc250bb);}function writeLog(_0x2e3960,_0x3f54ef,_0x186065){return logger['info'](util[_0x5497('0xb')]('[%s][QUEUE][AGENT:%s][STATUS:%s]',_0x2e3960,_0x3f54ef[_0x5497('0xd')],_0x186065));}exports[_0x5497('0x1d')]=function(_0x44265c,_0x2f587d,_0x35ecd9,_0x3b2fbc){if(_0x2f587d['busy']){writeLog(_0x44265c,_0x2f587d,'BUSY');return![];}if(!_0x2f587d[_0x5497('0x1e')]){writeLog(_0x44265c,_0x2f587d,_0x5497('0x1f'));return![];}if(_0x2f587d[_0x35ecd9+_0x5497('0x20')]){writeLog(_0x44265c,_0x2f587d,_0x5497('0x21'));return![];}if(_0x3b2fbc&&_0x2f587d['hasOwnProperty'](_0x35ecd9+_0x5497('0x22'))&&_0x2f587d['hasOwnProperty'](_0x35ecd9+_0x5497('0x23'))){if(_0x2f587d[_0x35ecd9+_0x5497('0x22')]>0x0&&_0x2f587d[_0x35ecd9+_0x5497('0x23')]>=_0x2f587d[_0x35ecd9+_0x5497('0x22')]){writeLog(_0x44265c,_0x2f587d,_0x35ecd9[_0x5497('0x24')]()+_0x5497('0x25'));return![];}}return!![];};exports['showNotification']=function(_0x4af5f4,_0x5406e2,_0x583d06,_0x498f15,_0x39a2b7){return sendNotification(!![],_0x4af5f4,_0x5406e2,_0x583d06,_0x498f15,_0x39a2b7);};exports['hideNotification']=function(_0x5e9356,_0xc3465,_0xb14593,_0x1cf908,_0x4c442a){return sendNotification(![],_0x5e9356,_0xc3465,_0xb14593,_0x1cf908,_0x4c442a);};exports['writeLog']=writeLog;
\ No newline at end of file
+var _0x2675=['\x20interaction','account','notificationSound','notificationShake','body','queue','msg','getMustacheRender','notificationTemplate','I\x20can\x27t\x20render\x20your\x20template','error','[%s][QUEUE]\x20%s','user:%s','notification:%s','save','remove','info','[%s][QUEUE][AGENT:%s][STATUS:%s]','isAgentAvailable','BUSY','online','OFFLINE','Pause','PAUSE','hasOwnProperty','Capacity','CurrentCapacity','toUpperCase','showNotification','hideNotification','writeLog','lodash','ioredis','../../../../../config/environment','routing','redis','localhost','socket.io-emitter','emit','format','name','user:save','split'];(function(_0x4afa16,_0x12ecd0){var _0x1214c7=function(_0xa027e3){while(--_0xa027e3){_0x4afa16['push'](_0x4afa16['shift']());}};_0x1214c7(++_0x12ecd0);}(_0x2675,0x75));var _0x5267=function(_0x5d5c67,_0x1245b5){_0x5d5c67=_0x5d5c67-0x0;var _0x1aac49=_0x2675[_0x5d5c67];return _0x1aac49;};'use strict';var _=require(_0x5267('0x0'));var util=require('util');var utils=require('../utils');var Mustache=require('mustache');var Redis=require(_0x5267('0x1'));var config=require(_0x5267('0x2'));var logger=require('../../../../../config/logger')(_0x5267('0x3'));config[_0x5267('0x4')]=_['defaults'](config[_0x5267('0x4')],{'host':_0x5267('0x5'),'port':0x18eb});var io=require(_0x5267('0x6'))(new Redis(config[_0x5267('0x4')]));function emit(_0x20f065,_0xc56cd5,_0x527c16){io['to'](_0x20f065)[_0x5267('0x7')](_0xc56cd5,_0x527c16);}function sendNotification(_0x46bfdf,_0x506fd7,_0x799fcc,_0x5d6645,_0x3ff4e9,_0x207d47){io['to'](util[_0x5267('0x8')]('user:%s',_0x5d6645[_0x5267('0x9')]))['emit'](_0x5267('0xa'),_0x5d6645);var _0x5bbf00=_0x207d47||{};var _0x31ea34=_0x799fcc[_0x5267('0xb')]('.');var _0x268a8a={'uniqueid':_0x506fd7,'channel':_0x31ea34[0x0],'id':_0x31ea34[0x1],'title':_0x31ea34[0x0]+_0x5267('0xc'),'interactionId':_0x31ea34[0x2],'queue':_0x3ff4e9?_0x3ff4e9[_0x5267('0x9')]:null,'sound':_0x5bbf00[_0x5267('0xd')][_0x5267('0xe')],'shake':_0x5bbf00[_0x5267('0xd')][_0x5267('0xf')]};try{if(!_0x5bbf00[_0x5267('0x10')]){_0x5bbf00[_0x5267('0x10')]={};}if(_0x3ff4e9){_0x5bbf00[_0x5267('0x10')][_0x5267('0x11')]=_0x3ff4e9;}else if(_0x5bbf00['body']['queue']){delete _0x5bbf00[_0x5267('0x10')][_0x5267('0x11')];}_0x268a8a[_0x5267('0x12')]=utils[_0x5267('0x13')](_0x5bbf00[_0x5267('0xd')][_0x5267('0x14')],_0x5bbf00);}catch(_0x5cc58b){_0x268a8a[_0x5267('0x12')]=_0x5267('0x15');logger[_0x5267('0x16')](util[_0x5267('0x8')](_0x5267('0x17'),_0x506fd7,_0x5cc58b['message']));}io['to'](util[_0x5267('0x8')](_0x5267('0x18'),_0x5d6645['name']))[_0x5267('0x7')](util['format'](_0x5267('0x19'),_0x46bfdf?_0x5267('0x1a'):_0x5267('0x1b')),_0x268a8a);}function writeLog(_0x2a9f99,_0x5ca9c6,_0x4dd637){return logger[_0x5267('0x1c')](util['format'](_0x5267('0x1d'),_0x2a9f99,_0x5ca9c6[_0x5267('0x9')],_0x4dd637));}exports[_0x5267('0x1e')]=function(_0x56dd95,_0x499f19,_0x5546e2,_0x4a17c7){if(_0x499f19['busy']){writeLog(_0x56dd95,_0x499f19,_0x5267('0x1f'));return![];}if(!_0x499f19[_0x5267('0x20')]){writeLog(_0x56dd95,_0x499f19,_0x5267('0x21'));return![];}if(_0x499f19[_0x5546e2+_0x5267('0x22')]){writeLog(_0x56dd95,_0x499f19,_0x5267('0x23'));return![];}if(_0x4a17c7&&_0x499f19[_0x5267('0x24')](_0x5546e2+_0x5267('0x25'))&&_0x499f19[_0x5267('0x24')](_0x5546e2+_0x5267('0x26'))){if(_0x499f19[_0x5546e2+'Capacity']>0x0&&_0x499f19[_0x5546e2+'CurrentCapacity']>=_0x499f19[_0x5546e2+_0x5267('0x25')]){writeLog(_0x56dd95,_0x499f19,_0x5546e2[_0x5267('0x27')]()+'\x20MAXCAPACITY');return![];}}return!![];};exports[_0x5267('0x28')]=function(_0x52504e,_0x4d7c2a,_0x43e7e7,_0x273769,_0x1f33b7){return sendNotification(!![],_0x52504e,_0x4d7c2a,_0x43e7e7,_0x273769,_0x1f33b7);};exports[_0x5267('0x29')]=function(_0x33c431,_0x4f3d4d,_0x5e87eb,_0x18020c,_0x10a68c){return sendNotification(![],_0x33c431,_0x4f3d4d,_0x5e87eb,_0x18020c,_0x10a68c);};exports[_0x5267('0x2a')]=writeLog;
\ No newline at end of file
index 3cb8fa2..0f69ada 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5e0e=['[%s][SYSTEM]\x20%s','message','join','[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next','next','getMustacheRender','[%s][SYSTEM]\x20commnad:\x20%s','exec','trim','[%s][SYSTEM]\x20result\x20code:\x20%s','isEmpty','info','body','[%s][SYSTEM]\x20set\x20variable\x20%s:\x20%s','stringify','validate','lodash','./utils','../../../../config/logger','routing','string','consequence','length','error'];(function(_0x4404ff,_0x13d7a9){var _0x5e7b19=function(_0x13847a){while(--_0x13847a){_0x4404ff['push'](_0x4404ff['shift']());}};_0x5e7b19(++_0x13d7a9);}(_0x5e0e,0x147));var _0xe5e0=function(_0x34eb31,_0x8f0f70){_0x34eb31=_0x34eb31-0x0;var _0x254994=_0x5e0e[_0x34eb31];return _0x254994;};'use strict';var schema=require(_0xe5e0('0x0'));var sh=require('shelljs');var _=require(_0xe5e0('0x1'));var utils=require(_0xe5e0('0x2'));var logger=require(_0xe5e0('0x3'))(_0xe5e0('0x4'));var system=schema({'command':{'type':_0xe5e0('0x5'),'required':!![],'message':'command\x20is\x20a\x20string\x20and\x20it\x20is\x20required'}});exports[_0xe5e0('0x6')]=function(_0x534b75,_0x4cf181){return function(_0x3f04b7){try{var _0x3cf200={'command':_0x4cf181[0x0]};var _0x9ed712=system[_0xe5e0('0x0')](_0x3cf200,{'typecast':!![]});if(_0x9ed712[_0xe5e0('0x7')]){logger[_0xe5e0('0x8')](_0xe5e0('0x9'),_0x534b75,_['map'](_0x9ed712,_0xe5e0('0xa'))[_0xe5e0('0xb')](',\x20'));logger['info'](_0xe5e0('0xc'),_0x534b75);_0x3f04b7[_0xe5e0('0xd')]();}else{var _0x3068f1=this;var _0x6d2398=utils[_0xe5e0('0xe')](_0x4cf181[0x0],this);logger['info'](_0xe5e0('0xf'),_0x534b75,_0x6d2398);sh[_0xe5e0('0x10')](_[_0xe5e0('0x11')](_0x6d2398),function(_0x25ecad,_0x90b9a0){logger['info'](_0xe5e0('0x12'),_0x534b75,_0x25ecad);if(_0x25ecad==0x0){var _0x51a0d2=_0x90b9a0['replace'](/(\r\n|\n|\r)/gm,'');if(_['isNil'](_0x4cf181[0x1])||_[_0xe5e0('0x13')](_0x4cf181[0x1])){logger[_0xe5e0('0x14')]('[%s][SYSTEM]\x20no\x20variable',_0x534b75);_0x3068f1[_0xe5e0('0x15')][_0x4cf181[0x1]]=_0x51a0d2;}else{logger['info'](_0xe5e0('0x16'),_0x534b75,_0x4cf181[0x1],_0x51a0d2);_0x3068f1['body'][_0x4cf181[0x1]]=_0x51a0d2;}}_0x3f04b7['next']();});}}catch(_0x221c64){logger[_0xe5e0('0x8')](_0xe5e0('0x9'),_0x534b75,_['isObject'](_0x221c64)?JSON[_0xe5e0('0x17')](_0x221c64):_0x221c64);logger[_0xe5e0('0x14')](_0xe5e0('0xc'),_0x534b75);_0x3f04b7['next']();}};};
\ No newline at end of file
+var _0x38c3=['[%s][SYSTEM]\x20no\x20variable','body','[%s][SYSTEM]\x20set\x20variable\x20%s:\x20%s','isObject','stringify','validate','shelljs','./utils','../../../../config/logger','routing','string','command\x20is\x20a\x20string\x20and\x20it\x20is\x20required','consequence','length','error','[%s][SYSTEM]\x20%s','message','join','info','[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next','next','[%s][SYSTEM]\x20commnad:\x20%s','trim','replace','isNil','isEmpty'];(function(_0x39de7c,_0x901414){var _0x553525=function(_0x15a1ad){while(--_0x15a1ad){_0x39de7c['push'](_0x39de7c['shift']());}};_0x553525(++_0x901414);}(_0x38c3,0x13d));var _0x338c=function(_0xf7f60a,_0x15f736){_0xf7f60a=_0xf7f60a-0x0;var _0x2567ad=_0x38c3[_0xf7f60a];return _0x2567ad;};'use strict';var schema=require(_0x338c('0x0'));var sh=require(_0x338c('0x1'));var _=require('lodash');var utils=require(_0x338c('0x2'));var logger=require(_0x338c('0x3'))(_0x338c('0x4'));var system=schema({'command':{'type':_0x338c('0x5'),'required':!![],'message':_0x338c('0x6')}});exports[_0x338c('0x7')]=function(_0x4acb1a,_0x236c87){return function(_0x581e00){try{var _0x41c16d={'command':_0x236c87[0x0]};var _0x28eeb3=system['validate'](_0x41c16d,{'typecast':!![]});if(_0x28eeb3[_0x338c('0x8')]){logger[_0x338c('0x9')](_0x338c('0xa'),_0x4acb1a,_['map'](_0x28eeb3,_0x338c('0xb'))[_0x338c('0xc')](',\x20'));logger[_0x338c('0xd')](_0x338c('0xe'),_0x4acb1a);_0x581e00[_0x338c('0xf')]();}else{var _0x2861b0=this;var _0x12cebe=utils['getMustacheRender'](_0x236c87[0x0],this);logger[_0x338c('0xd')](_0x338c('0x10'),_0x4acb1a,_0x12cebe);sh['exec'](_[_0x338c('0x11')](_0x12cebe),function(_0x4d6cc7,_0x38ff0d){logger[_0x338c('0xd')]('[%s][SYSTEM]\x20result\x20code:\x20%s',_0x4acb1a,_0x4d6cc7);if(_0x4d6cc7==0x0){var _0x1734d4=_0x38ff0d[_0x338c('0x12')](/(\r\n|\n|\r)/gm,'');if(_[_0x338c('0x13')](_0x236c87[0x1])||_[_0x338c('0x14')](_0x236c87[0x1])){logger[_0x338c('0xd')](_0x338c('0x15'),_0x4acb1a);_0x2861b0[_0x338c('0x16')][_0x236c87[0x1]]=_0x1734d4;}else{logger[_0x338c('0xd')](_0x338c('0x17'),_0x4acb1a,_0x236c87[0x1],_0x1734d4);_0x2861b0[_0x338c('0x16')][_0x236c87[0x1]]=_0x1734d4;}}_0x581e00['next']();});}}catch(_0x5afbd4){logger[_0x338c('0x9')](_0x338c('0xa'),_0x4acb1a,_[_0x338c('0x18')](_0x5afbd4)?JSON[_0x338c('0x19')](_0x5afbd4):_0x5afbd4);logger['info'](_0x338c('0xe'),_0x4acb1a);_0x581e00[_0x338c('0xf')]();}};};
\ No newline at end of file
index e69e252..b2d807e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed49=['Interaction','channel','addTags','then','[%s][TAG]\x20tag\x20\x22%s\x22\x20added\x20to\x20%s\x20interaction\x20%s','interaction','catch','stringify','finally','isObject','validate','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/whatsappInteraction','routing','consequence','length','error','[%s][TAG]\x20%s','map','message','info','[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next','next'];(function(_0x229b6e,_0xcb561a){var _0x39e7de=function(_0x95f29c){while(--_0x95f29c){_0x229b6e['push'](_0x229b6e['shift']());}};_0x39e7de(++_0xcb561a);}(_0xed49,0x19a));var _0x9ed4=function(_0x3ccaf7,_0x44b50e){_0x3ccaf7=_0x3ccaf7-0x0;var _0x440549=_0xed49[_0x3ccaf7];return _0x440549;};'use strict';var schema=require(_0x9ed4('0x0'));var _=require('lodash');var rpc={'chatInteraction':require(_0x9ed4('0x1')),'openchannelInteraction':require(_0x9ed4('0x2')),'smsInteraction':require(_0x9ed4('0x3')),'mailInteraction':require('../../rpc/mailInteraction'),'faxInteraction':require('../../rpc/faxInteraction'),'whatsappInteraction':require(_0x9ed4('0x4'))};var logger=require('../../../../config/logger')(_0x9ed4('0x5'));var tag=schema({'tag':{'type':'number','required':!![],'message':'TagId\x20is\x20a\x20string\x20and\x20it\x20is\x20required'}});exports[_0x9ed4('0x6')]=function(_0x130f56,_0x21ebd7,_0x47ed8d,_0x406813){return function(_0x3e9066){try{var _0x454433={'tag':_0x21ebd7[0x0]};var _0x5a8fef=tag[_0x9ed4('0x0')](_0x454433,{'typecast':!![]});if(_0x5a8fef[_0x9ed4('0x7')]){logger[_0x9ed4('0x8')](_0x9ed4('0x9'),_0x130f56,_[_0x9ed4('0xa')](_0x5a8fef,_0x9ed4('0xb'))['join'](',\x20'));logger[_0x9ed4('0xc')](_0x9ed4('0xd'),_0x130f56);_0x3e9066[_0x9ed4('0xe')]();}else{var _0x3b471d={'ids':[_0x21ebd7[0x0]]};if(rpc[_0x406813['channel']+_0x9ed4('0xf')]){rpc[_0x406813[_0x9ed4('0x10')]+_0x9ed4('0xf')][_0x9ed4('0x11')](_0x406813['interaction']['id'],_0x3b471d)[_0x9ed4('0x12')](function(_0x2826ee){logger['info'](_0x9ed4('0x13'),_0x130f56,_0x21ebd7[0x1],_0x406813[_0x9ed4('0x10')],_0x406813[_0x9ed4('0x14')]['id']);})[_0x9ed4('0x15')](function(_0x1afee0){logger[_0x9ed4('0x8')](_0x9ed4('0x9'),_0x130f56,JSON[_0x9ed4('0x16')](_0x1afee0));logger[_0x9ed4('0xc')](_0x9ed4('0xd'),_0x130f56);})[_0x9ed4('0x17')](function(){_0x3e9066['next']();});}}}catch(_0x2ad444){logger['error'](_0x9ed4('0x9'),_0x130f56,_[_0x9ed4('0x18')](_0x2ad444)?JSON[_0x9ed4('0x16')](_0x2ad444):_0x2ad444);logger[_0x9ed4('0xc')]('[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next',_0x130f56);_0x3e9066[_0x9ed4('0xe')]();}};};
\ No newline at end of file
+var _0x03dc=['stringify','finally','validate','../../rpc/chatInteraction','../../rpc/smsInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','../../../../config/logger','routing','number','consequence','length','error','[%s][TAG]\x20%s','map','message','join','info','[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next','next','channel','addTags','interaction','[%s][TAG]\x20tag\x20\x22%s\x22\x20added\x20to\x20%s\x20interaction\x20%s','catch'];(function(_0x445508,_0x1f668b){var _0x2d25e3=function(_0x2a96cc){while(--_0x2a96cc){_0x445508['push'](_0x445508['shift']());}};_0x2d25e3(++_0x1f668b);}(_0x03dc,0xb1));var _0xc03d=function(_0x1eb032,_0xa159a3){_0x1eb032=_0x1eb032-0x0;var _0x1d9ed1=_0x03dc[_0x1eb032];return _0x1d9ed1;};'use strict';var schema=require(_0xc03d('0x0'));var _=require('lodash');var rpc={'chatInteraction':require(_0xc03d('0x1')),'openchannelInteraction':require('../../rpc/openchannelInteraction'),'smsInteraction':require(_0xc03d('0x2')),'mailInteraction':require('../../rpc/mailInteraction'),'faxInteraction':require(_0xc03d('0x3')),'whatsappInteraction':require(_0xc03d('0x4'))};var logger=require(_0xc03d('0x5'))(_0xc03d('0x6'));var tag=schema({'tag':{'type':_0xc03d('0x7'),'required':!![],'message':'TagId\x20is\x20a\x20string\x20and\x20it\x20is\x20required'}});exports[_0xc03d('0x8')]=function(_0x2540d2,_0x53d7e0,_0x37bd97,_0x26cdc9){return function(_0x105583){try{var _0x1d3a0e={'tag':_0x53d7e0[0x0]};var _0x4f9d8d=tag[_0xc03d('0x0')](_0x1d3a0e,{'typecast':!![]});if(_0x4f9d8d[_0xc03d('0x9')]){logger[_0xc03d('0xa')](_0xc03d('0xb'),_0x2540d2,_[_0xc03d('0xc')](_0x4f9d8d,_0xc03d('0xd'))[_0xc03d('0xe')](',\x20'));logger[_0xc03d('0xf')](_0xc03d('0x10'),_0x2540d2);_0x105583[_0xc03d('0x11')]();}else{var _0xc77dea={'ids':[_0x53d7e0[0x0]]};if(rpc[_0x26cdc9[_0xc03d('0x12')]+'Interaction']){rpc[_0x26cdc9[_0xc03d('0x12')]+'Interaction'][_0xc03d('0x13')](_0x26cdc9[_0xc03d('0x14')]['id'],_0xc77dea)['then'](function(_0x5c3c5a){logger['info'](_0xc03d('0x15'),_0x2540d2,_0x53d7e0[0x1],_0x26cdc9[_0xc03d('0x12')],_0x26cdc9['interaction']['id']);})[_0xc03d('0x16')](function(_0x40fc27){logger[_0xc03d('0xa')](_0xc03d('0xb'),_0x2540d2,JSON[_0xc03d('0x17')](_0x40fc27));logger[_0xc03d('0xf')]('[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next',_0x2540d2);})[_0xc03d('0x18')](function(){_0x105583[_0xc03d('0x11')]();});}}}catch(_0x18e5df){logger[_0xc03d('0xa')](_0xc03d('0xb'),_0x2540d2,_['isObject'](_0x18e5df)?JSON['stringify'](_0x18e5df):_0x18e5df);logger[_0xc03d('0xf')]('[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next',_0x2540d2);_0x105583[_0xc03d('0x11')]();}};};
\ No newline at end of file
index 811b406..e2d0c82 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['message','account','interaction','mustache','lodash','exports','render','body','contact'];(function(_0x3fae86,_0x3981a8){var _0x2aa0e2=function(_0x294c68){while(--_0x294c68){_0x3fae86['push'](_0x3fae86['shift']());}};_0x2aa0e2(++_0x3981a8);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0xa9e0[_0x1ac595];return _0x455fff;};'use strict';var Mustache=require(_0x0a9e('0x0'));var _=require(_0x0a9e('0x1'));module[_0x0a9e('0x2')]={'getMustacheRender':function(_0x5dd881,_0x550fbc){return Mustache[_0x0a9e('0x3')](_0x5dd881,_['merge'](_0x550fbc[_0x0a9e('0x4')],{'contact':_0x550fbc[_0x0a9e('0x5')],'message':_0x550fbc[_0x0a9e('0x6')],'account':_0x550fbc[_0x0a9e('0x7')],'interaction':_0x550fbc[_0x0a9e('0x8')],'list':_0x550fbc['list']}))||'';}};
\ No newline at end of file
+var _0x9c44=['merge','body','account','list','exports','render'];(function(_0x56e8e1,_0x1042f9){var _0x1bdbfd=function(_0x3fb803){while(--_0x3fb803){_0x56e8e1['push'](_0x56e8e1['shift']());}};_0x1bdbfd(++_0x1042f9);}(_0x9c44,0x178));var _0x49c4=function(_0x13e741,_0x5d3c24){_0x13e741=_0x13e741-0x0;var _0x3f8bb3=_0x9c44[_0x13e741];return _0x3f8bb3;};'use strict';var Mustache=require('mustache');var _=require('lodash');module[_0x49c4('0x0')]={'getMustacheRender':function(_0x18bf2d,_0x26844b){return Mustache[_0x49c4('0x1')](_0x18bf2d,_[_0x49c4('0x2')](_0x26844b[_0x49c4('0x3')],{'contact':_0x26844b['contact'],'message':_0x26844b['message'],'account':_0x26844b[_0x49c4('0x4')],'interaction':_0x26844b['interaction'],'list':_0x26844b[_0x49c4('0x5')]}))||'';}};
\ No newline at end of file
index dc39ce1..2700216 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x756b=['autoreply','appdata','split','channel','push','slice','dialogflow','dialogflowv2','amazonlex','tag','TagId','./interval','./applications/','consequence','priority','info','Push\x20new\x20rule','on\x20interval','\x20|\x20','Please\x20create\x20a\x20new\x20file\x20under','rules','Applications\x20executed','matchPath','emit','complete','error','stack','routing\x20is\x20empty','agent','agents','busy','busyQueue','QueueReport','update','UserId','error\x20update\x20queue\x20report','message\x20is\x20empty','end','capacity','hasOwnProperty','CurrentCapacity','updateRealtime','chatQueues','loggedIn','name','paused','mailQueues','available','waiting','openchannelQueues','smsQueues','faxQueues','whatsappQueues','values','chatQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','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','bluebird','uuid','../../../config/environment','../../../config/logger','../rpc/openchannelQueueReport','../rpc/chatQueueReport','../rpc/smsQueueReport','../rpc/faxQueueReport','../rpc/whatsappQueueReport','../lib/rule-engine','format','%s.%s.%s','IntervalId','Intervals','map','interval','isNil','listen','message','interaction','applications','isArray','length','join','app','.js'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x756b,0xa0));var _0xb756=function(_0x8f7a95,_0x5d3c63){_0x8f7a95=_0x8f7a95-0x0;var _0x19f92d=_0x756b[_0x8f7a95];return _0x19f92d;};'use strict';var _=require(_0xb756('0x0'));var util=require(_0xb756('0x1'));var path=require('path');var fs=require('fs');var jayson=require('jayson/promise');var BPromise=require(_0xb756('0x2'));var uuid=require(_0xb756('0x3'));var config=require(_0xb756('0x4'));var logger=require(_0xb756('0x5'))('routing');var rpc={'openchannelQueueReport':require(_0xb756('0x6')),'mailQueueReport':require('../rpc/mailQueueReport'),'chatQueueReport':require(_0xb756('0x7')),'smsQueueReport':require(_0xb756('0x8')),'faxQueueReport':require(_0xb756('0x9')),'whatsappQueueReport':require(_0xb756('0xa'))};var RuleEngine=require(_0xb756('0xb'));function getId(_0x752aa7,_0x23f129,_0x22ffaf){return util[_0xb756('0xc')](_0xb756('0xd'),_0x752aa7,_0x23f129||0x0,_0x22ffaf||0x0);}function getIntervals(_0x3147d7,_0x354b4d){var _0x5409cd=[];if(!_['isNil'](_0x354b4d[_0xb756('0xe')])&&!_['isNil'](_0x3147d7[_0x354b4d[_0xb756('0xe')]])&&!_['isNil'](_0x3147d7[_0x354b4d[_0xb756('0xe')]][_0xb756('0xf')])){_0x5409cd=_[_0xb756('0x10')](_0x3147d7[_0x354b4d[_0xb756('0xe')]]['Intervals'],_0xb756('0x11'));}else if(!_[_0xb756('0x12')](_0x354b4d['interval'])){_0x5409cd=[_0x354b4d[_0xb756('0x11')]];}return _0x5409cd;}exports[_0xb756('0x13')]=function(_0x9202c3){_0x9202c3['rules']={};return new BPromise(function(_0xfc0e96,_0x28a8c7){var _0x304cb5={'Start':function(_0x3be0d1){var _0x27fbae=this;return new Promise(function(_0x2bd0d5,_0x3bba62){if(_0x3be0d1){try{var _0xa0a5ed=[];var _0x1eb7b0=getId(_0x3be0d1['channel'],_0x3be0d1['message']?_0x3be0d1[_0xb756('0x14')]['id']:0x0,_0x3be0d1[_0xb756('0x15')]?_0x3be0d1['interaction']['id']:0x0);if(_0x3be0d1[_0xb756('0x16')]&&_[_0xb756('0x17')](_0x3be0d1[_0xb756('0x16')])&&_0x3be0d1[_0xb756('0x16')][_0xb756('0x18')]){for(var _0x446c58=0x0;_0x446c58<_0x3be0d1['applications']['length'];_0x446c58+=0x1){var _0x12ca18=_0x3be0d1[_0xb756('0x16')][_0x446c58];if(fs['existsSync'](path[_0xb756('0x19')](__dirname,_0xb756('0x16'),_0x12ca18[_0xb756('0x1a')]+_0xb756('0x1b')))){var _0x5a72a3=[];switch(_0x12ca18[_0xb756('0x1a')]['toLowerCase']()){case _0xb756('0x1c'):var _0x456b50=_0x12ca18[_0xb756('0x1d')][_0xb756('0x1e')](',');if(_0x3be0d1[_0xb756('0x1f')]==='mail'){_0x5a72a3[_0xb756('0x20')](_0x456b50[0x0]);_0x5a72a3['push'](_0x456b50[0x1]);_0x5a72a3[_0xb756('0x20')](_0x456b50[_0xb756('0x21')](0x2,_0x456b50[_0xb756('0x18')])['join'](','));}else{_0x5a72a3[_0xb756('0x20')](_0x456b50[0x0]);_0x5a72a3[_0xb756('0x20')](_0x456b50['slice'](0x1,_0x456b50['length'])[_0xb756('0x19')](','));}break;case _0xb756('0x22'):var _0x1c201b=_0x12ca18[_0xb756('0x1d')][_0xb756('0x1e')](',');_0x5a72a3[_0xb756('0x20')](_0x1c201b[0x0]);_0x5a72a3[_0xb756('0x20')](_0x1c201b[0x1]);_0x5a72a3[_0xb756('0x20')](_0x1c201b[_0xb756('0x21')](0x2,_0x1c201b[_0xb756('0x18')])['join'](','));break;case _0xb756('0x23'):var _0x2edcd1=_0x12ca18[_0xb756('0x1d')]['split'](',');_0x5a72a3['push'](_0x2edcd1[0x0]);_0x5a72a3[_0xb756('0x20')](_0x2edcd1[0x1]);_0x5a72a3[_0xb756('0x20')](_0x2edcd1[0x2]);_0x5a72a3[_0xb756('0x20')](_0x2edcd1[0x3]);_0x5a72a3['push'](_0x2edcd1[_0xb756('0x21')](0x4,_0x2edcd1[_0xb756('0x18')])[_0xb756('0x19')](','));break;case _0xb756('0x24'):var _0x5ab197=_0x12ca18[_0xb756('0x1d')][_0xb756('0x1e')](',');_0x5a72a3[_0xb756('0x20')](_0x5ab197[0x0]);_0x5a72a3[_0xb756('0x20')](_0x5ab197[0x1]);_0x5a72a3['push'](_0x5ab197[0x2]);_0x5a72a3[_0xb756('0x20')](_0x5ab197[0x3]);_0x5a72a3['push'](_0x5ab197['slice'](0x4,_0x5ab197[_0xb756('0x18')])[_0xb756('0x19')](','));break;case'message':_0x5a72a3[_0xb756('0x20')](_0x12ca18['appdata']);break;case _0xb756('0x25'):_0x5a72a3[_0xb756('0x20')](_0x12ca18[_0xb756('0x26')]);_0x5a72a3[_0xb756('0x20')](_0x12ca18[_0xb756('0x1d')]);break;default:_0x5a72a3=_[_0xb756('0x12')](_0x12ca18['appdata'])?[]:_0x12ca18[_0xb756('0x1d')][_0xb756('0x1e')](',');}var _0x50c9b5={'id':util[_0xb756('0xc')]('%s:%s:%s',_0x1eb7b0,_0x12ca18['id'],_0x12ca18[_0xb756('0x1a')]),'condition':require(_0xb756('0x27'))['condition'](_0x1eb7b0,getIntervals(_0x9202c3['intervals'],_0x12ca18),_0x9202c3),'consequence':require(_0xb756('0x28')+_0x12ca18[_0xb756('0x1a')])[_0xb756('0x29')](_0x1eb7b0,_0x5a72a3,_0x9202c3,_0x3be0d1),'p':_0x12ca18[_0xb756('0x2a')]||0x0};logger[_0xb756('0x2b')](_0xb756('0x2c'),_0x50c9b5['id'],_0xb756('0x2d'),getIntervals(_0x9202c3['intervals'],_0x12ca18)['join'](_0xb756('0x2e')));_0xa0a5ed[_0xb756('0x20')](_0x50c9b5);}else{logger['error'](_0xb756('0x2f'),path[_0xb756('0x19')](__dirname,_0xb756('0x16'),_0x12ca18[_0xb756('0x1a')]+'.js'));}}_0x9202c3[_0xb756('0x30')][_0x1eb7b0]=new RuleEngine(_0xa0a5ed);_0x9202c3[_0xb756('0x30')][_0x1eb7b0]['execute'](_0x3be0d1,function(_0x58af8c){logger[_0xb756('0x2b')](_0xb756('0x31'),JSON['stringify'](_0x58af8c[_0xb756('0x32')]));if(_0x9202c3[_0xb756('0x30')][_0x1eb7b0]){_0x9202c3[_0xb756('0x30')][_0x1eb7b0][_0xb756('0x33')](_0xb756('0x34'));}});return _0x2bd0d5({'code':0xc8,'message':_0x3be0d1});}else{logger[_0xb756('0x2b')]('No\x20applications\x20to\x20execute');return _0x2bd0d5({'code':0xc8,'message':_0x3be0d1});}}catch(_0x3345e1){logger[_0xb756('0x35')](_0x3345e1[_0xb756('0x36')]);return _0x3bba62(_0x27fbae[_0xb756('0x35')](0x1f4,_0x3345e1));}}return _0x3bba62(_0xb756('0x37'));});},'AcceptMessage':function(_0x268c5a){var _0x1419f7=this;return new Promise(function(_0x573686,_0x410c1b){if(_0x268c5a['agent']&&_0x268c5a[_0xb756('0x38')]['id']){if(_0x9202c3[_0xb756('0x39')][_0x268c5a[_0xb756('0x38')]['id']]){_0x9202c3[_0xb756('0x39')][_0x268c5a[_0xb756('0x38')]['id']][_0xb756('0x3a')]=![];_0x9202c3[_0xb756('0x39')][_0x268c5a[_0xb756('0x38')]['id']][_0xb756('0x3b')]=undefined;}}if(_0x268c5a[_0xb756('0x14')]&&_0x268c5a[_0xb756('0x14')]['id']){try{var _0x395126=getId(_0x268c5a[_0xb756('0x1f')],_0x268c5a[_0xb756('0x14')]?_0x268c5a[_0xb756('0x14')]['id']:0x0,_0x268c5a[_0xb756('0x15')]?_0x268c5a[_0xb756('0x15')]['id']:0x0);if(_0x9202c3[_0xb756('0x30')][_0x395126]){_0x9202c3[_0xb756('0x30')][_0x395126][_0xb756('0x33')]('end');if(rpc[_0x268c5a[_0xb756('0x1f')]+_0xb756('0x3c')]){rpc[_0x268c5a[_0xb756('0x1f')]+_0xb756('0x3c')][_0xb756('0x3d')](_0x395126,{'UserId':_0x268c5a['message'][_0xb756('0x3e')]})['catch'](function(_0x1cbb88){logger['error'](_0xb756('0x3f'));});}}return _0x573686({'code':0xc8,'message':_0x268c5a});}catch(_0x4e35d6){logger[_0xb756('0x35')](_0x4e35d6['stack']);return _0x410c1b(_0x1419f7['error'](0x1f4,_0x4e35d6));}}logger[_0xb756('0x35')]('message\x20is\x20empty');return _0x410c1b(_0x1419f7[_0xb756('0x35')](0x1f4,_0xb756('0x40')));});},'RejectMessage':function(_0xc1d432){var _0x1e7175=this;return new Promise(function(_0x48b877,_0x1defae){if(_0xc1d432[_0xb756('0x38')]&&_0xc1d432['agent']['id']){try{if(_0x9202c3['agents'][_0xc1d432[_0xb756('0x38')]['id']]){_0x9202c3[_0xb756('0x39')][_0xc1d432[_0xb756('0x38')]['id']][_0xb756('0x3a')]=![];_0x9202c3['agents'][_0xc1d432[_0xb756('0x38')]['id']]['busyQueue']=undefined;}return _0x48b877({'code':0xc8,'message':_0xc1d432});}catch(_0x588d78){logger[_0xb756('0x35')](_0x588d78[_0xb756('0x36')]);return _0x1defae(_0x1e7175['error'](0x1f4,_0x588d78));}}logger[_0xb756('0x35')](_0xb756('0x40'));return _0x1defae(_0x1e7175[_0xb756('0x35')](0x1f4,_0xb756('0x40')));});},'AbandonInteraction':function(_0x1e33ab){var _0x4a8a0c=this;return new Promise(function(_0x1af6aa,_0x44bff6){if(_0x1e33ab[_0xb756('0x1f')]&&_0x1e33ab[_0xb756('0x15')]&&_0x1e33ab[_0xb756('0x15')]['id']){try{var _0x40b37d=getId(_0x1e33ab[_0xb756('0x1f')],_0x1e33ab[_0xb756('0x14')]?_0x1e33ab[_0xb756('0x14')]['id']:0x0,_0x1e33ab[_0xb756('0x15')]?_0x1e33ab[_0xb756('0x15')]['id']:0x0);if(_0x9202c3['rules'][_0x40b37d]){_0x9202c3[_0xb756('0x30')][_0x40b37d][_0xb756('0x33')](_0xb756('0x41'));}return _0x1af6aa({'code':0xc8,'message':_0x1e33ab});}catch(_0x61cd64){logger[_0xb756('0x35')](_0x61cd64[_0xb756('0x36')]);return _0x44bff6(_0x4a8a0c['error'](0x1f4,_0x61cd64));}}logger['error'](_0xb756('0x40'));return _0x44bff6(_0x4a8a0c[_0xb756('0x35')](0x1f4,_0xb756('0x40')));});},'AgentCapacity':function(_0x46a7d9){var _0x52dd4c=this;return new Promise(function(_0x3605bf,_0xab8454){if(_0x9202c3[_0xb756('0x39')]['hasOwnProperty'](_0x46a7d9['id'])){for(var _0x5683c2 in _0x46a7d9[_0xb756('0x42')]){if(_0x46a7d9[_0xb756('0x42')][_0xb756('0x43')](_0x5683c2)){if(_0x9202c3[_0xb756('0x39')][_0x46a7d9['id']]['hasOwnProperty'](_0x5683c2+'CurrentCapacity')){_0x9202c3[_0xb756('0x39')][_0x46a7d9['id']][_0x5683c2+_0xb756('0x44')]=parseInt(_0x46a7d9['capacity'][_0x5683c2],0xa);}}}_0x9202c3['agents'][_0x46a7d9['id']][_0xb756('0x45')]();return _0x3605bf({'code':0xc8,'message':_0x9202c3[_0xb756('0x39')][_0x46a7d9['id']]});}else{return _0xab8454(_0x52dd4c[_0xb756('0x35')](0x1f4,'agent\x20not\x20found'));}});},'Agents':function(_0x5e015d){return new Promise(function(_0x50acc4,_0x3732ad){var _0x43fe5a=_['values'](_0x9202c3[_0xb756('0x39')]);_0x50acc4({'count':_0x43fe5a[_0xb756('0x18')],'rows':_0x43fe5a});});},'ChatQueues':function(_0x38fb5c){return new Promise(function(_0x4a19f1,_0x2e24ff){var _0x3f360b=[];for(var _0x16059c in _0x9202c3['chatQueues']){if(_0x9202c3[_0xb756('0x46')]['hasOwnProperty'](_0x16059c)){var _0x7cc1e3=_0x9202c3['chatQueues'][_0x16059c];var _0x3f97d0={'id':_0x7cc1e3['id'],'available':_0x7cc1e3['available'],'loggedIn':_0x7cc1e3[_0xb756('0x47')],'name':_0x7cc1e3[_0xb756('0x48')],'paused':_0x7cc1e3[_0xb756('0x49')],'waiting':_0x7cc1e3['waiting']};_0x3f360b[_0xb756('0x20')](_0x3f97d0);}}_0x4a19f1({'count':_0x3f360b['length'],'rows':_0x3f360b});});},'MailQueues':function(_0x4455fc){return new Promise(function(_0x295abd,_0xe468d){var _0xd54ffa=[];for(var _0x5566fb in _0x9202c3['mailQueues']){if(_0x9202c3['mailQueues'][_0xb756('0x43')](_0x5566fb)){var _0xe3371e=_0x9202c3[_0xb756('0x4a')][_0x5566fb];var _0x58ca92={'id':_0xe3371e['id'],'available':_0xe3371e[_0xb756('0x4b')],'loggedIn':_0xe3371e[_0xb756('0x47')],'name':_0xe3371e[_0xb756('0x48')],'paused':_0xe3371e['paused'],'waiting':_0xe3371e[_0xb756('0x4c')]};_0xd54ffa[_0xb756('0x20')](_0x58ca92);}}_0x295abd({'count':_0xd54ffa['length'],'rows':_0xd54ffa});});},'OpenchannelQueues':function(_0x5bef67){return new Promise(function(_0x36d7fe,_0x4ac01e){var _0x43424f=[];for(var _0x510498 in _0x9202c3[_0xb756('0x4d')]){if(_0x9202c3['openchannelQueues']['hasOwnProperty'](_0x510498)){var _0x28b2ce=_0x9202c3[_0xb756('0x4d')][_0x510498];var _0x5a7376={'id':_0x28b2ce['id'],'available':_0x28b2ce[_0xb756('0x4b')],'loggedIn':_0x28b2ce['loggedIn'],'name':_0x28b2ce[_0xb756('0x48')],'paused':_0x28b2ce[_0xb756('0x49')],'waiting':_0x28b2ce['waiting']};_0x43424f[_0xb756('0x20')](_0x5a7376);}}_0x36d7fe({'count':_0x43424f[_0xb756('0x18')],'rows':_0x43424f});});},'SmsQueues':function(_0x496a2d){return new Promise(function(_0x2dc57e,_0x33aeed){var _0x4bf030=[];for(var _0x296437 in _0x9202c3[_0xb756('0x4e')]){if(_0x9202c3[_0xb756('0x4e')]['hasOwnProperty'](_0x296437)){var _0x25cf63=_0x9202c3[_0xb756('0x4e')][_0x296437];var _0x13bf21={'id':_0x25cf63['id'],'available':_0x25cf63['available'],'loggedIn':_0x25cf63['loggedIn'],'name':_0x25cf63[_0xb756('0x48')],'paused':_0x25cf63[_0xb756('0x49')],'waiting':_0x25cf63[_0xb756('0x4c')]};_0x4bf030[_0xb756('0x20')](_0x13bf21);}}_0x2dc57e({'count':_0x4bf030['length'],'rows':_0x4bf030});});},'FaxQueues':function(_0x963f8a){return new Promise(function(_0x201598,_0x4cf4e2){var _0x17c072=[];for(var _0x5165de in _0x9202c3['faxQueues']){if(_0x9202c3[_0xb756('0x4f')]['hasOwnProperty'](_0x5165de)){var _0x598e2a=_0x9202c3[_0xb756('0x4f')][_0x5165de];var _0x503d8d={'id':_0x598e2a['id'],'available':_0x598e2a[_0xb756('0x4b')],'loggedIn':_0x598e2a[_0xb756('0x47')],'name':_0x598e2a[_0xb756('0x48')],'paused':_0x598e2a[_0xb756('0x49')],'waiting':_0x598e2a[_0xb756('0x4c')]};_0x17c072[_0xb756('0x20')](_0x503d8d);}}_0x201598({'count':_0x17c072[_0xb756('0x18')],'rows':_0x17c072});});},'WhatsappQueues':function(_0x44f5c0){return new Promise(function(_0x39e555,_0x1e30ce){var _0x5c98be=[];for(var _0x299999 in _0x9202c3['whatsappQueues']){if(_0x9202c3[_0xb756('0x50')][_0xb756('0x43')](_0x299999)){var _0x93c1b5=_0x9202c3['whatsappQueues'][_0x299999];var _0x345245={'id':_0x93c1b5['id'],'available':_0x93c1b5[_0xb756('0x4b')],'loggedIn':_0x93c1b5[_0xb756('0x47')],'name':_0x93c1b5[_0xb756('0x48')],'paused':_0x93c1b5[_0xb756('0x49')],'waiting':_0x93c1b5[_0xb756('0x4c')]};_0x5c98be[_0xb756('0x20')](_0x345245);}}_0x39e555({'count':_0x5c98be[_0xb756('0x18')],'rows':_0x5c98be});});},'ChatQueuesWaitingInteractions':function(_0x6f1dd7){return new Promise(function(_0x35d6b3,_0x3ef859){var _0x1af7c1=_[_0xb756('0x51')](_0x9202c3[_0xb756('0x52')]);_0x35d6b3({'count':_0x1af7c1[_0xb756('0x18')],'rows':_0x1af7c1});});},'MailQueuesWaitingInteractions':function(_0x3eaf02){return new Promise(function(_0x31d926,_0x350765){var _0x48a31b=_[_0xb756('0x51')](_0x9202c3['mailQueuesWaitingInteractions']);_0x31d926({'count':_0x48a31b['length'],'rows':_0x48a31b});});},'OpenchannelQueuesWaitingInteractions':function(_0x5f4d55){return new Promise(function(_0xf7bfd6,_0x2751f6){var _0x2ecb64=_[_0xb756('0x51')](_0x9202c3[_0xb756('0x53')]);_0xf7bfd6({'count':_0x2ecb64[_0xb756('0x18')],'rows':_0x2ecb64});});},'SmsQueuesWaitingInteractions':function(_0x4b5292){return new Promise(function(_0x263fca,_0x1cf2b8){var _0x261808=_[_0xb756('0x51')](_0x9202c3[_0xb756('0x54')]);_0x263fca({'count':_0x261808[_0xb756('0x18')],'rows':_0x261808});});},'FaxQueuesWaitingInteractions':function(_0x3be5fe){return new Promise(function(_0x175a81,_0x286aa1){var _0x28d56e=_[_0xb756('0x51')](_0x9202c3[_0xb756('0x55')]);_0x175a81({'count':_0x28d56e[_0xb756('0x18')],'rows':_0x28d56e});});},'WhatsappQueuesWaitingInteractions':function(_0x535ab1){return new Promise(function(_0xf9be78,_0x48d85d){var _0x3b51e3=_[_0xb756('0x51')](_0x9202c3[_0xb756('0x56')]);_0xf9be78({'count':_0x3b51e3[_0xb756('0x18')],'rows':_0x3b51e3});});}};var _0x2f383b=jayson[_0xb756('0x57')](_0x304cb5)[_0xb756('0x58')]();_0x2f383b['on']('error',function(_0x43a10f){logger[_0xb756('0x35')](JSON[_0xb756('0x59')](_0x43a10f));return _0x28a8c7(_0x43a10f);});_0x2f383b[_0xb756('0x13')](0x232c,_0xb756('0x5a'),function(){console[_0xb756('0x5b')](_0xb756('0x5c'),0x232c);return _0xfc0e96(_0xb756('0x5d')+0x232c);});});};
\ No newline at end of file
+var _0x8af4=['complete','No\x20applications\x20to\x20execute','stack','routing\x20is\x20empty','agent','agents','busyQueue','end','QueueReport','update','UserId','message\x20is\x20empty','busy','hasOwnProperty','capacity','CurrentCapacity','updateRealtime','agent\x20not\x20found','chatQueues','available','loggedIn','name','mailQueues','paused','waiting','openchannelQueues','smsQueues','faxQueues','whatsappQueues','chatQueuesWaitingInteractions','values','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','faxQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','server','http','listen','log','Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','lodash','util','path','jayson/promise','bluebird','uuid','../../../config/logger','routing','../rpc/openchannelQueueReport','../rpc/mailQueueReport','../rpc/chatQueueReport','../rpc/faxQueueReport','../rpc/whatsappQueueReport','../lib/rule-engine','%s.%s.%s','isNil','IntervalId','Intervals','map','interval','rules','message','interaction','isArray','applications','join','app','.js','toLowerCase','autoreply','appdata','split','channel','mail','push','slice','length','dialogflowv2','amazonlex','TagId','format','%s:%s:%s','./interval','condition','intervals','consequence','priority','on\x20interval','\x20|\x20','error','Please\x20create\x20a\x20new\x20file\x20under','execute','info','Applications\x20executed','stringify','emit'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0x8af4,0x88));var _0x48af=function(_0xdfd552,_0x5f39a0){_0xdfd552=_0xdfd552-0x0;var _0x598335=_0x8af4[_0xdfd552];return _0x598335;};'use strict';var _=require(_0x48af('0x0'));var util=require(_0x48af('0x1'));var path=require(_0x48af('0x2'));var fs=require('fs');var jayson=require(_0x48af('0x3'));var BPromise=require(_0x48af('0x4'));var uuid=require(_0x48af('0x5'));var config=require('../../../config/environment');var logger=require(_0x48af('0x6'))(_0x48af('0x7'));var rpc={'openchannelQueueReport':require(_0x48af('0x8')),'mailQueueReport':require(_0x48af('0x9')),'chatQueueReport':require(_0x48af('0xa')),'smsQueueReport':require('../rpc/smsQueueReport'),'faxQueueReport':require(_0x48af('0xb')),'whatsappQueueReport':require(_0x48af('0xc'))};var RuleEngine=require(_0x48af('0xd'));function getId(_0x16981c,_0x55f074,_0x4fd41a){return util['format'](_0x48af('0xe'),_0x16981c,_0x55f074||0x0,_0x4fd41a||0x0);}function getIntervals(_0x18d6af,_0x5432e5){var _0x4fd924=[];if(!_[_0x48af('0xf')](_0x5432e5['IntervalId'])&&!_[_0x48af('0xf')](_0x18d6af[_0x5432e5[_0x48af('0x10')]])&&!_[_0x48af('0xf')](_0x18d6af[_0x5432e5['IntervalId']][_0x48af('0x11')])){_0x4fd924=_[_0x48af('0x12')](_0x18d6af[_0x5432e5[_0x48af('0x10')]]['Intervals'],'interval');}else if(!_['isNil'](_0x5432e5[_0x48af('0x13')])){_0x4fd924=[_0x5432e5[_0x48af('0x13')]];}return _0x4fd924;}exports['listen']=function(_0x3a1ff6){_0x3a1ff6[_0x48af('0x14')]={};return new BPromise(function(_0x10622a,_0x46f79d){var _0x596b69={'Start':function(_0x26d97e){var _0x14040c=this;return new Promise(function(_0x2af2f1,_0x65a2ef){if(_0x26d97e){try{var _0xf28b2d=[];var _0x4e8cd3=getId(_0x26d97e['channel'],_0x26d97e[_0x48af('0x15')]?_0x26d97e['message']['id']:0x0,_0x26d97e['interaction']?_0x26d97e[_0x48af('0x16')]['id']:0x0);if(_0x26d97e['applications']&&_[_0x48af('0x17')](_0x26d97e[_0x48af('0x18')])&&_0x26d97e[_0x48af('0x18')]['length']){for(var _0x4d12ec=0x0;_0x4d12ec<_0x26d97e[_0x48af('0x18')]['length'];_0x4d12ec+=0x1){var _0x234773=_0x26d97e[_0x48af('0x18')][_0x4d12ec];if(fs['existsSync'](path[_0x48af('0x19')](__dirname,_0x48af('0x18'),_0x234773[_0x48af('0x1a')]+_0x48af('0x1b')))){var _0x31256b=[];switch(_0x234773[_0x48af('0x1a')][_0x48af('0x1c')]()){case _0x48af('0x1d'):var _0x20d328=_0x234773[_0x48af('0x1e')][_0x48af('0x1f')](',');if(_0x26d97e[_0x48af('0x20')]===_0x48af('0x21')){_0x31256b[_0x48af('0x22')](_0x20d328[0x0]);_0x31256b[_0x48af('0x22')](_0x20d328[0x1]);_0x31256b[_0x48af('0x22')](_0x20d328[_0x48af('0x23')](0x2,_0x20d328[_0x48af('0x24')])[_0x48af('0x19')](','));}else{_0x31256b[_0x48af('0x22')](_0x20d328[0x0]);_0x31256b[_0x48af('0x22')](_0x20d328[_0x48af('0x23')](0x1,_0x20d328[_0x48af('0x24')])[_0x48af('0x19')](','));}break;case'dialogflow':var _0x399aac=_0x234773[_0x48af('0x1e')][_0x48af('0x1f')](',');_0x31256b[_0x48af('0x22')](_0x399aac[0x0]);_0x31256b['push'](_0x399aac[0x1]);_0x31256b[_0x48af('0x22')](_0x399aac[_0x48af('0x23')](0x2,_0x399aac[_0x48af('0x24')])[_0x48af('0x19')](','));break;case _0x48af('0x25'):var _0xc0227=_0x234773['appdata'][_0x48af('0x1f')](',');_0x31256b[_0x48af('0x22')](_0xc0227[0x0]);_0x31256b[_0x48af('0x22')](_0xc0227[0x1]);_0x31256b['push'](_0xc0227[0x2]);_0x31256b[_0x48af('0x22')](_0xc0227[0x3]);_0x31256b[_0x48af('0x22')](_0xc0227['slice'](0x4,_0xc0227['length'])['join'](','));break;case _0x48af('0x26'):var _0x2dd83f=_0x234773[_0x48af('0x1e')][_0x48af('0x1f')](',');_0x31256b[_0x48af('0x22')](_0x2dd83f[0x0]);_0x31256b['push'](_0x2dd83f[0x1]);_0x31256b[_0x48af('0x22')](_0x2dd83f[0x2]);_0x31256b['push'](_0x2dd83f[0x3]);_0x31256b['push'](_0x2dd83f[_0x48af('0x23')](0x4,_0x2dd83f[_0x48af('0x24')])['join'](','));break;case _0x48af('0x15'):_0x31256b[_0x48af('0x22')](_0x234773[_0x48af('0x1e')]);break;case'tag':_0x31256b['push'](_0x234773[_0x48af('0x27')]);_0x31256b[_0x48af('0x22')](_0x234773['appdata']);break;default:_0x31256b=_[_0x48af('0xf')](_0x234773[_0x48af('0x1e')])?[]:_0x234773[_0x48af('0x1e')][_0x48af('0x1f')](',');}var _0x1cf1f8={'id':util[_0x48af('0x28')](_0x48af('0x29'),_0x4e8cd3,_0x234773['id'],_0x234773[_0x48af('0x1a')]),'condition':require(_0x48af('0x2a'))[_0x48af('0x2b')](_0x4e8cd3,getIntervals(_0x3a1ff6[_0x48af('0x2c')],_0x234773),_0x3a1ff6),'consequence':require('./applications/'+_0x234773['app'])[_0x48af('0x2d')](_0x4e8cd3,_0x31256b,_0x3a1ff6,_0x26d97e),'p':_0x234773[_0x48af('0x2e')]||0x0};logger['info']('Push\x20new\x20rule',_0x1cf1f8['id'],_0x48af('0x2f'),getIntervals(_0x3a1ff6[_0x48af('0x2c')],_0x234773)[_0x48af('0x19')](_0x48af('0x30')));_0xf28b2d[_0x48af('0x22')](_0x1cf1f8);}else{logger[_0x48af('0x31')](_0x48af('0x32'),path[_0x48af('0x19')](__dirname,_0x48af('0x18'),_0x234773[_0x48af('0x1a')]+_0x48af('0x1b')));}}_0x3a1ff6[_0x48af('0x14')][_0x4e8cd3]=new RuleEngine(_0xf28b2d);_0x3a1ff6[_0x48af('0x14')][_0x4e8cd3][_0x48af('0x33')](_0x26d97e,function(_0x487bd0){logger[_0x48af('0x34')](_0x48af('0x35'),JSON[_0x48af('0x36')](_0x487bd0['matchPath']));if(_0x3a1ff6[_0x48af('0x14')][_0x4e8cd3]){_0x3a1ff6[_0x48af('0x14')][_0x4e8cd3][_0x48af('0x37')](_0x48af('0x38'));}});return _0x2af2f1({'code':0xc8,'message':_0x26d97e});}else{logger[_0x48af('0x34')](_0x48af('0x39'));return _0x2af2f1({'code':0xc8,'message':_0x26d97e});}}catch(_0x293495){logger['error'](_0x293495[_0x48af('0x3a')]);return _0x65a2ef(_0x14040c[_0x48af('0x31')](0x1f4,_0x293495));}}return _0x65a2ef(_0x48af('0x3b'));});},'AcceptMessage':function(_0x12724f){var _0x2f3518=this;return new Promise(function(_0xf794b2,_0x3562ac){if(_0x12724f[_0x48af('0x3c')]&&_0x12724f[_0x48af('0x3c')]['id']){if(_0x3a1ff6['agents'][_0x12724f[_0x48af('0x3c')]['id']]){_0x3a1ff6[_0x48af('0x3d')][_0x12724f[_0x48af('0x3c')]['id']]['busy']=![];_0x3a1ff6['agents'][_0x12724f[_0x48af('0x3c')]['id']][_0x48af('0x3e')]=undefined;}}if(_0x12724f[_0x48af('0x15')]&&_0x12724f[_0x48af('0x15')]['id']){try{var _0xf599f9=getId(_0x12724f[_0x48af('0x20')],_0x12724f[_0x48af('0x15')]?_0x12724f[_0x48af('0x15')]['id']:0x0,_0x12724f[_0x48af('0x16')]?_0x12724f[_0x48af('0x16')]['id']:0x0);if(_0x3a1ff6['rules'][_0xf599f9]){_0x3a1ff6['rules'][_0xf599f9][_0x48af('0x37')](_0x48af('0x3f'));if(rpc[_0x12724f['channel']+_0x48af('0x40')]){rpc[_0x12724f[_0x48af('0x20')]+_0x48af('0x40')][_0x48af('0x41')](_0xf599f9,{'UserId':_0x12724f[_0x48af('0x15')][_0x48af('0x42')]})['catch'](function(_0x23e31c){logger[_0x48af('0x31')]('error\x20update\x20queue\x20report');});}}return _0xf794b2({'code':0xc8,'message':_0x12724f});}catch(_0x25acb7){logger[_0x48af('0x31')](_0x25acb7[_0x48af('0x3a')]);return _0x3562ac(_0x2f3518['error'](0x1f4,_0x25acb7));}}logger[_0x48af('0x31')](_0x48af('0x43'));return _0x3562ac(_0x2f3518[_0x48af('0x31')](0x1f4,_0x48af('0x43')));});},'RejectMessage':function(_0x157319){var _0x219aa6=this;return new Promise(function(_0xd28512,_0x1a7a75){if(_0x157319['agent']&&_0x157319[_0x48af('0x3c')]['id']){try{if(_0x3a1ff6[_0x48af('0x3d')][_0x157319[_0x48af('0x3c')]['id']]){_0x3a1ff6[_0x48af('0x3d')][_0x157319[_0x48af('0x3c')]['id']][_0x48af('0x44')]=![];_0x3a1ff6['agents'][_0x157319[_0x48af('0x3c')]['id']][_0x48af('0x3e')]=undefined;}return _0xd28512({'code':0xc8,'message':_0x157319});}catch(_0x24446f){logger[_0x48af('0x31')](_0x24446f[_0x48af('0x3a')]);return _0x1a7a75(_0x219aa6['error'](0x1f4,_0x24446f));}}logger[_0x48af('0x31')]('message\x20is\x20empty');return _0x1a7a75(_0x219aa6['error'](0x1f4,'message\x20is\x20empty'));});},'AbandonInteraction':function(_0x2fcacb){var _0x44f445=this;return new Promise(function(_0x4b122b,_0x4fe9b4){if(_0x2fcacb[_0x48af('0x20')]&&_0x2fcacb['interaction']&&_0x2fcacb['interaction']['id']){try{var _0x1ab2c8=getId(_0x2fcacb[_0x48af('0x20')],_0x2fcacb['message']?_0x2fcacb[_0x48af('0x15')]['id']:0x0,_0x2fcacb[_0x48af('0x16')]?_0x2fcacb[_0x48af('0x16')]['id']:0x0);if(_0x3a1ff6[_0x48af('0x14')][_0x1ab2c8]){_0x3a1ff6[_0x48af('0x14')][_0x1ab2c8]['emit'](_0x48af('0x3f'));}return _0x4b122b({'code':0xc8,'message':_0x2fcacb});}catch(_0xd86941){logger[_0x48af('0x31')](_0xd86941['stack']);return _0x4fe9b4(_0x44f445[_0x48af('0x31')](0x1f4,_0xd86941));}}logger[_0x48af('0x31')]('message\x20is\x20empty');return _0x4fe9b4(_0x44f445[_0x48af('0x31')](0x1f4,_0x48af('0x43')));});},'AgentCapacity':function(_0x1cb273){var _0x6c860e=this;return new Promise(function(_0xc40be,_0x36bc96){if(_0x3a1ff6[_0x48af('0x3d')][_0x48af('0x45')](_0x1cb273['id'])){for(var _0x436cc3 in _0x1cb273[_0x48af('0x46')]){if(_0x1cb273[_0x48af('0x46')][_0x48af('0x45')](_0x436cc3)){if(_0x3a1ff6[_0x48af('0x3d')][_0x1cb273['id']][_0x48af('0x45')](_0x436cc3+_0x48af('0x47'))){_0x3a1ff6[_0x48af('0x3d')][_0x1cb273['id']][_0x436cc3+'CurrentCapacity']=parseInt(_0x1cb273[_0x48af('0x46')][_0x436cc3],0xa);}}}_0x3a1ff6[_0x48af('0x3d')][_0x1cb273['id']][_0x48af('0x48')]();return _0xc40be({'code':0xc8,'message':_0x3a1ff6[_0x48af('0x3d')][_0x1cb273['id']]});}else{return _0x36bc96(_0x6c860e[_0x48af('0x31')](0x1f4,_0x48af('0x49')));}});},'Agents':function(_0x5a3562){return new Promise(function(_0x52995c,_0xae721d){var _0x47bd98=_['values'](_0x3a1ff6['agents']);_0x52995c({'count':_0x47bd98[_0x48af('0x24')],'rows':_0x47bd98});});},'ChatQueues':function(_0x2a3d94){return new Promise(function(_0x41f6fc,_0x51b4e5){var _0x4ed2c2=[];for(var _0x2ef2c8 in _0x3a1ff6[_0x48af('0x4a')]){if(_0x3a1ff6[_0x48af('0x4a')][_0x48af('0x45')](_0x2ef2c8)){var _0x31635f=_0x3a1ff6['chatQueues'][_0x2ef2c8];var _0x4faaee={'id':_0x31635f['id'],'available':_0x31635f[_0x48af('0x4b')],'loggedIn':_0x31635f[_0x48af('0x4c')],'name':_0x31635f[_0x48af('0x4d')],'paused':_0x31635f['paused'],'waiting':_0x31635f['waiting']};_0x4ed2c2[_0x48af('0x22')](_0x4faaee);}}_0x41f6fc({'count':_0x4ed2c2[_0x48af('0x24')],'rows':_0x4ed2c2});});},'MailQueues':function(_0x4667ba){return new Promise(function(_0x55786f,_0xa54ceb){var _0xeeeb70=[];for(var _0x5c5ddb in _0x3a1ff6[_0x48af('0x4e')]){if(_0x3a1ff6['mailQueues'][_0x48af('0x45')](_0x5c5ddb)){var _0xd5a3c3=_0x3a1ff6[_0x48af('0x4e')][_0x5c5ddb];var _0x3ed3c2={'id':_0xd5a3c3['id'],'available':_0xd5a3c3['available'],'loggedIn':_0xd5a3c3['loggedIn'],'name':_0xd5a3c3[_0x48af('0x4d')],'paused':_0xd5a3c3[_0x48af('0x4f')],'waiting':_0xd5a3c3[_0x48af('0x50')]};_0xeeeb70[_0x48af('0x22')](_0x3ed3c2);}}_0x55786f({'count':_0xeeeb70[_0x48af('0x24')],'rows':_0xeeeb70});});},'OpenchannelQueues':function(_0x868811){return new Promise(function(_0x1eedb0,_0x26d973){var _0x31acc6=[];for(var _0x353d74 in _0x3a1ff6[_0x48af('0x51')]){if(_0x3a1ff6[_0x48af('0x51')][_0x48af('0x45')](_0x353d74)){var _0xc82992=_0x3a1ff6['openchannelQueues'][_0x353d74];var _0x128d41={'id':_0xc82992['id'],'available':_0xc82992[_0x48af('0x4b')],'loggedIn':_0xc82992['loggedIn'],'name':_0xc82992['name'],'paused':_0xc82992['paused'],'waiting':_0xc82992[_0x48af('0x50')]};_0x31acc6[_0x48af('0x22')](_0x128d41);}}_0x1eedb0({'count':_0x31acc6[_0x48af('0x24')],'rows':_0x31acc6});});},'SmsQueues':function(_0xe8060d){return new Promise(function(_0x53cd90,_0xc57201){var _0x5b43df=[];for(var _0x5bdf00 in _0x3a1ff6['smsQueues']){if(_0x3a1ff6[_0x48af('0x52')][_0x48af('0x45')](_0x5bdf00)){var _0x4df38c=_0x3a1ff6[_0x48af('0x52')][_0x5bdf00];var _0x527a14={'id':_0x4df38c['id'],'available':_0x4df38c[_0x48af('0x4b')],'loggedIn':_0x4df38c[_0x48af('0x4c')],'name':_0x4df38c['name'],'paused':_0x4df38c[_0x48af('0x4f')],'waiting':_0x4df38c[_0x48af('0x50')]};_0x5b43df[_0x48af('0x22')](_0x527a14);}}_0x53cd90({'count':_0x5b43df[_0x48af('0x24')],'rows':_0x5b43df});});},'FaxQueues':function(_0x429ee8){return new Promise(function(_0x1e0994,_0x364dc3){var _0x4a1f24=[];for(var _0x24cf84 in _0x3a1ff6[_0x48af('0x53')]){if(_0x3a1ff6[_0x48af('0x53')][_0x48af('0x45')](_0x24cf84)){var _0x124aff=_0x3a1ff6[_0x48af('0x53')][_0x24cf84];var _0x1b5752={'id':_0x124aff['id'],'available':_0x124aff[_0x48af('0x4b')],'loggedIn':_0x124aff['loggedIn'],'name':_0x124aff[_0x48af('0x4d')],'paused':_0x124aff[_0x48af('0x4f')],'waiting':_0x124aff['waiting']};_0x4a1f24['push'](_0x1b5752);}}_0x1e0994({'count':_0x4a1f24['length'],'rows':_0x4a1f24});});},'WhatsappQueues':function(_0x5024dc){return new Promise(function(_0x531430,_0x28255b){var _0x220aab=[];for(var _0x51ff25 in _0x3a1ff6[_0x48af('0x54')]){if(_0x3a1ff6[_0x48af('0x54')]['hasOwnProperty'](_0x51ff25)){var _0x717e12=_0x3a1ff6[_0x48af('0x54')][_0x51ff25];var _0x3005d2={'id':_0x717e12['id'],'available':_0x717e12[_0x48af('0x4b')],'loggedIn':_0x717e12[_0x48af('0x4c')],'name':_0x717e12[_0x48af('0x4d')],'paused':_0x717e12[_0x48af('0x4f')],'waiting':_0x717e12[_0x48af('0x50')]};_0x220aab[_0x48af('0x22')](_0x3005d2);}}_0x531430({'count':_0x220aab[_0x48af('0x24')],'rows':_0x220aab});});},'ChatQueuesWaitingInteractions':function(_0x4867d5){return new Promise(function(_0x573f8e,_0x3ea20a){var _0x14f96d=_['values'](_0x3a1ff6[_0x48af('0x55')]);_0x573f8e({'count':_0x14f96d[_0x48af('0x24')],'rows':_0x14f96d});});},'MailQueuesWaitingInteractions':function(_0x326a80){return new Promise(function(_0x1da25d,_0xbea3d8){var _0x44724e=_[_0x48af('0x56')](_0x3a1ff6[_0x48af('0x57')]);_0x1da25d({'count':_0x44724e[_0x48af('0x24')],'rows':_0x44724e});});},'OpenchannelQueuesWaitingInteractions':function(_0x29f6ca){return new Promise(function(_0x18760b,_0x440ad9){var _0x4ae7ff=_['values'](_0x3a1ff6[_0x48af('0x58')]);_0x18760b({'count':_0x4ae7ff[_0x48af('0x24')],'rows':_0x4ae7ff});});},'SmsQueuesWaitingInteractions':function(_0x36db38){return new Promise(function(_0x1780df,_0x5c68e2){var _0x43c3db=_[_0x48af('0x56')](_0x3a1ff6['smsQueuesWaitingInteractions']);_0x1780df({'count':_0x43c3db[_0x48af('0x24')],'rows':_0x43c3db});});},'FaxQueuesWaitingInteractions':function(_0x5b1ad9){return new Promise(function(_0x988f8b,_0x5d8ab2){var _0x204a61=_[_0x48af('0x56')](_0x3a1ff6[_0x48af('0x59')]);_0x988f8b({'count':_0x204a61[_0x48af('0x24')],'rows':_0x204a61});});},'WhatsappQueuesWaitingInteractions':function(_0x57675c){return new Promise(function(_0x45a751,_0x117d6d){var _0x26cbd6=_['values'](_0x3a1ff6[_0x48af('0x5a')]);_0x45a751({'count':_0x26cbd6[_0x48af('0x24')],'rows':_0x26cbd6});});}};var _0x4bcbe1=jayson[_0x48af('0x5b')](_0x596b69)[_0x48af('0x5c')]();_0x4bcbe1['on']('error',function(_0x2f90d7){logger[_0x48af('0x31')](JSON[_0x48af('0x36')](_0x2f90d7));return _0x46f79d(_0x2f90d7);});_0x4bcbe1[_0x48af('0x5d')](0x232c,'127.0.0.1',function(){console[_0x48af('0x5e')](_0x48af('0x5f'),0x232c);return _0x10622a('RPC\x20listening\x20on\x20port:'+0x232c);});});};
\ No newline at end of file
index 6fbfd29..dfa9654 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa5cc=['result','catch','condition','rules','info','[%s][INTERVAL]\x20ROUTING\x20STOPPED','stop','length','Command','iftime\x20%s','indexOf','true','[%s][INTERVAL]\x20%s','all','then','some','[%s][INTERVAL]\x20%s\x20%s','join','\x20|\x20','when','jayson/promise','lodash','../../../config/logger','routing','client','http','request','error','message'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa5cc,0xa5));var _0xca5c=function(_0x36ed48,_0x1ee0d4){_0x36ed48=_0x36ed48-0x0;var _0x51c63a=_0xa5cc[_0x36ed48];return _0x51c63a;};'use strict';var util=require('util');var BPromise=require('bluebird');var jayson=require(_0xca5c('0x0'));var _=require(_0xca5c('0x1'));var logger=require(_0xca5c('0x2'))(_0xca5c('0x3'));var client=jayson[_0xca5c('0x4')][_0xca5c('0x5')]({'port':0x232a});function request(_0x37c0be,_0x1ba8d3){return new BPromise(function(_0x358861,_0x3e0d86){return client[_0xca5c('0x6')](_0x37c0be,_0x1ba8d3)['then'](function(_0x38b1bb){if(_0x38b1bb[_0xca5c('0x7')]){return _0x3e0d86(_0x38b1bb[_0xca5c('0x7')][_0xca5c('0x8')]);}else{return _0x358861(_0x38b1bb[_0xca5c('0x9')]);}})[_0xca5c('0xa')](function(_0x1264c9){return _0x3e0d86(_0x1264c9);});});}exports[_0xca5c('0xb')]=function(_0x27d02b,_0x490bef,_0x2d02c6){return function(_0xfea44d){if(_0x2d02c6[_0xca5c('0xc')]&&!_0x2d02c6[_0xca5c('0xc')][_0x27d02b]){logger[_0xca5c('0xd')](_0xca5c('0xe'),_0x27d02b);return _0xfea44d[_0xca5c('0xf')]();}var _0x545a28=[];for(var _0x1459fd=0x0;_0x1459fd<_0x490bef[_0xca5c('0x10')];_0x1459fd+=0x1){_0x545a28['push'](request(_0xca5c('0x11'),{'command':util['format'](_0xca5c('0x12'),_0x490bef[_0x1459fd])})['then'](function(_0x2b0d33){return _0x2b0d33&&_0x2b0d33[_0xca5c('0x8')]&&_0x2b0d33[_0xca5c('0x8')][_0xca5c('0x13')](_0xca5c('0x14'))>=0x0?!![]:![];})['catch'](function(_0x710563){logger['error'](_0xca5c('0x15'),_0x27d02b,_0x490bef[_0x1459fd]);}));}BPromise[_0xca5c('0x16')](_0x545a28)[_0xca5c('0x17')](function(_0x3e6988){var _0x285d68=_[_0xca5c('0x18')](_0x3e6988);logger[_0xca5c('0xd')](_0xca5c('0x19'),_0x27d02b,_0x490bef[_0xca5c('0x1a')](_0xca5c('0x1b')),_0x285d68);_0xfea44d[_0xca5c('0x1c')](_0x285d68);})['catch'](function(_0x986fa0){console['log'](_0x986fa0);logger['error']('[%s][INTERVAL]\x20%s\x20%s',_0x27d02b,_0x490bef[_0xca5c('0x1a')](_0xca5c('0x1b')),_0x986fa0['stack']);_0xfea44d[_0xca5c('0xf')]();});};};
\ No newline at end of file
+var _0xe999=['join','\x20|\x20','when','log','stack','util','bluebird','../../../config/logger','routing','http','request','error','message','result','condition','rules','info','[%s][INTERVAL]\x20ROUTING\x20STOPPED','stop','length','push','iftime\x20%s','then','indexOf','catch','all','some','[%s][INTERVAL]\x20%s\x20%s'];(function(_0x27206e,_0x12017c){var _0x1ccd4b=function(_0x8e800d){while(--_0x8e800d){_0x27206e['push'](_0x27206e['shift']());}};_0x1ccd4b(++_0x12017c);}(_0xe999,0xad));var _0x9e99=function(_0x51bd36,_0x119a49){_0x51bd36=_0x51bd36-0x0;var _0x464680=_0xe999[_0x51bd36];return _0x464680;};'use strict';var util=require(_0x9e99('0x0'));var BPromise=require(_0x9e99('0x1'));var jayson=require('jayson/promise');var _=require('lodash');var logger=require(_0x9e99('0x2'))(_0x9e99('0x3'));var client=jayson['client'][_0x9e99('0x4')]({'port':0x232a});function request(_0x371262,_0x1070fa){return new BPromise(function(_0x569fab,_0x25df9d){return client[_0x9e99('0x5')](_0x371262,_0x1070fa)['then'](function(_0x1462a5){if(_0x1462a5[_0x9e99('0x6')]){return _0x25df9d(_0x1462a5[_0x9e99('0x6')][_0x9e99('0x7')]);}else{return _0x569fab(_0x1462a5[_0x9e99('0x8')]);}})['catch'](function(_0x444ab3){return _0x25df9d(_0x444ab3);});});}exports[_0x9e99('0x9')]=function(_0x962bac,_0x47b4af,_0x5bc359){return function(_0x3bdfe0){if(_0x5bc359[_0x9e99('0xa')]&&!_0x5bc359[_0x9e99('0xa')][_0x962bac]){logger[_0x9e99('0xb')](_0x9e99('0xc'),_0x962bac);return _0x3bdfe0[_0x9e99('0xd')]();}var _0x5cc08d=[];for(var _0x5d3751=0x0;_0x5d3751<_0x47b4af[_0x9e99('0xe')];_0x5d3751+=0x1){_0x5cc08d[_0x9e99('0xf')](request('Command',{'command':util['format'](_0x9e99('0x10'),_0x47b4af[_0x5d3751])})[_0x9e99('0x11')](function(_0x31d8ed){return _0x31d8ed&&_0x31d8ed['message']&&_0x31d8ed[_0x9e99('0x7')][_0x9e99('0x12')]('true')>=0x0?!![]:![];})[_0x9e99('0x13')](function(_0x408e0a){logger[_0x9e99('0x6')]('[%s][INTERVAL]\x20%s',_0x962bac,_0x47b4af[_0x5d3751]);}));}BPromise[_0x9e99('0x14')](_0x5cc08d)['then'](function(_0x544d19){var _0x82e1ef=_[_0x9e99('0x15')](_0x544d19);logger[_0x9e99('0xb')](_0x9e99('0x16'),_0x962bac,_0x47b4af[_0x9e99('0x17')](_0x9e99('0x18')),_0x82e1ef);_0x3bdfe0[_0x9e99('0x19')](_0x82e1ef);})[_0x9e99('0x13')](function(_0x4efca1){console[_0x9e99('0x1a')](_0x4efca1);logger[_0x9e99('0x6')](_0x9e99('0x16'),_0x962bac,_0x47b4af[_0x9e99('0x17')](_0x9e99('0x18')),_0x4efca1[_0x9e99('0x1b')]);_0x3bdfe0[_0x9e99('0xd')]();});};};
\ No newline at end of file
index ce8340b..7ae85aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['complete','[%s][agents][agentcomplete]','blindtransfer','[%s][agents][blindtransfer]','[%s][agents][blindtransfer]\x20agent:%s\x20transferuniqueid:%s','transfereruniqueid','transfertype','blind','transferexten','extension','transferuniqueid','origtransfereruniqueid','origtransfererlinkedid','secondtransfereruniqueid','transfer','ATTENDED','transfereeuniqueid','agententerreason','clone','calleridname','[%s][agents][attendedtransfer]\x20agent:%s','transfertargetuniqueid','[%s][agents][attendedtransfer]','hangup','[%s][agents][hangup]','rejected','indexOf','splice','agent','[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s','lodash','util','./utils','info','[%s][agents][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','uniqueid','channel','queue','membername','calleridnum','connectedlinenum','lastevent','type','agentacw','agentcomplete','acw','acwtime','request','CreateVoiceAgentReport','destuniqueid','agentcalled','format','[%s][agents][agentcalled]','agentcalledAt','called','[%s][agents][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','error','agentringnoanswer','debug','[%s][agents][agentringnoanswer]','[%s][agents][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:timeout','agentringnoanswerAt','now','reason','timeout','ringtime','push','queuecallerabandon','forIn','includes','[%s][agents][queuecallerabandon]','[%s][agents][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','abandoned','holdtime','talktime','agentconnect','[%s][agents][agentconnect]','[%s][agents][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','connectedlinename','answered_elsewhere','answeredelsewheredestinationuniqueid','answeredelsewheremembername','isNil','[%s][agents][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','agentcompleteAt','diffTime'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4154a6,_0x2c0b8e){_0x4154a6=_0x4154a6-0x0;var _0x3b2786=_0xa9e0[_0x4154a6];return _0x3b2786;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var utils=require(_0x0a9e('0x2'));var agents={};var transfers={};var unanswered=[];function writeDB(_0x5dd881,_0x550fbc){utils[_0x0a9e('0x3')](util['format'](_0x0a9e('0x4'),_0x5dd881[_0x0a9e('0x5')],_0x5dd881[_0x0a9e('0x6')],_0x5dd881[_0x0a9e('0x7')],_0x5dd881[_0x0a9e('0x8')],_0x5dd881['interface'],_0x5dd881[_0x0a9e('0x9')],_0x5dd881[_0x0a9e('0xa')],_0x5dd881[_0x0a9e('0xb')]));if(_0x5dd881['queue']){utils['getVoiceQueueByName'](_0x5dd881[_0x0a9e('0x7')])['then'](function(_0x52cace){if(_0x52cace){_0x5dd881[_0x0a9e('0xc')]=_0x52cace[_0x0a9e('0xc')];_0x5dd881[_0x0a9e('0xd')]=_0x5dd881[_0x0a9e('0xe')]?_0x52cace[_0x0a9e('0xf')]:![];_0x5dd881[_0x0a9e('0x10')]=_0x5dd881['agentacw']?_0x52cace['acwTimeout']:0x0;}utils['request']('CreateVoiceAgentReport',_0x5dd881);});}else{utils[_0x0a9e('0x11')](_0x0a9e('0x12'),_0x5dd881);}if(_0x550fbc){delete transfers[_0x5dd881[_0x0a9e('0x5')]];}else{delete agents[_0x5dd881[_0x0a9e('0x13')]];}}exports[_0x0a9e('0x14')]=function(_0x69aeb7){try{utils['debug'](util[_0x0a9e('0x15')](_0x0a9e('0x16'),_0x69aeb7[_0x0a9e('0x5')]),_0x69aeb7);agents[_0x69aeb7[_0x0a9e('0x13')]]=_0x69aeb7;agents[_0x69aeb7[_0x0a9e('0x13')]][_0x0a9e('0x17')]=utils['now']();agents[_0x69aeb7[_0x0a9e('0x13')]]['lastevent']=_0x0a9e('0x18');agents[_0x69aeb7['destuniqueid']][_0x0a9e('0xa')]=null;agents[_0x69aeb7[_0x0a9e('0x13')]]['connectedlinename']=null;utils[_0x0a9e('0x3')](util['format'](_0x0a9e('0x19'),_0x69aeb7[_0x0a9e('0x5')],agents[_0x69aeb7[_0x0a9e('0x13')]][_0x0a9e('0x8')],_0x69aeb7[_0x0a9e('0x13')]));}catch(_0x2eb11f){utils[_0x0a9e('0x1a')](util[_0x0a9e('0x15')](_0x0a9e('0x16'),_0x69aeb7[_0x0a9e('0x5')]),_0x2eb11f);}};exports[_0x0a9e('0x1b')]=function(_0x105080){try{if(!_['isNil'](agents[_0x105080[_0x0a9e('0x13')]])){utils[_0x0a9e('0x1c')](util['format'](_0x0a9e('0x1d'),_0x105080['uniqueid']),_0x105080);utils['info'](util[_0x0a9e('0x15')](_0x0a9e('0x1e'),_0x105080[_0x0a9e('0x5')],agents[_0x105080[_0x0a9e('0x13')]]['membername'],_0x105080[_0x0a9e('0x13')]));agents[_0x105080[_0x0a9e('0x13')]][_0x0a9e('0x1b')]=!![];agents[_0x105080[_0x0a9e('0x13')]][_0x0a9e('0x1f')]=utils[_0x0a9e('0x20')]();agents[_0x105080[_0x0a9e('0x13')]]['lastevent']='timeout';agents[_0x105080[_0x0a9e('0x13')]][_0x0a9e('0x21')]=_0x0a9e('0x22');agents[_0x105080[_0x0a9e('0x13')]]['holdtime']=_0x105080[_0x0a9e('0x23')]?parseInt(_0x105080['ringtime'])/0x3e8:0x0;agents[_0x105080[_0x0a9e('0x13')]]['talktime']=0x0;unanswered[_0x0a9e('0x24')](_0x105080[_0x0a9e('0x13')]);}}catch(_0x25fba9){utils[_0x0a9e('0x1a')](util[_0x0a9e('0x15')](_0x0a9e('0x1d'),_0x105080[_0x0a9e('0x5')]),_0x25fba9);}};exports[_0x0a9e('0x25')]=function(_0x5a101a){try{_[_0x0a9e('0x26')](agents,function(_0x468813,_0x2b1f27){if(_0x468813[_0x0a9e('0x5')]==_0x5a101a['uniqueid']&&!_[_0x0a9e('0x27')](unanswered,_0x468813[_0x0a9e('0x13')])){utils[_0x0a9e('0x1c')](util[_0x0a9e('0x15')](_0x0a9e('0x28'),_0x5a101a[_0x0a9e('0x5')]),_0x5a101a);utils[_0x0a9e('0x3')](util[_0x0a9e('0x15')](_0x0a9e('0x29'),_0x5a101a['uniqueid'],_0x468813[_0x0a9e('0x8')],_0x468813['destuniqueid']));_0x468813[_0x0a9e('0x1b')]=!![];_0x468813[_0x0a9e('0x1f')]=utils[_0x0a9e('0x20')]();_0x468813[_0x0a9e('0xb')]=_0x0a9e('0x2a');_0x468813['reason']=_0x0a9e('0x2a');_0x468813[_0x0a9e('0x2b')]=_0x5a101a[_0x0a9e('0x2b')];_0x468813[_0x0a9e('0x2c')]=0x0;writeDB(_0x468813);}});}catch(_0x2b45ea){utils[_0x0a9e('0x1a')](util[_0x0a9e('0x15')](_0x0a9e('0x28'),_0x5a101a['uniqueid']),_0x2b45ea);}};exports[_0x0a9e('0x2d')]=function(_0x5e7238){try{if(agents[_0x5e7238[_0x0a9e('0x13')]]){utils[_0x0a9e('0x1c')](util[_0x0a9e('0x15')](_0x0a9e('0x2e'),_0x5e7238['uniqueid']),_0x5e7238);utils[_0x0a9e('0x3')](util[_0x0a9e('0x15')](_0x0a9e('0x2f'),_0x5e7238[_0x0a9e('0x5')],agents[_0x5e7238['destuniqueid']]['membername'],_0x5e7238[_0x0a9e('0x13')]));agents[_0x5e7238['destuniqueid']][_0x0a9e('0x30')]=utils[_0x0a9e('0x20')]();agents[_0x5e7238[_0x0a9e('0x13')]][_0x0a9e('0xa')]=_0x5e7238['connectedlinenum'];agents[_0x5e7238[_0x0a9e('0x13')]][_0x0a9e('0x31')]=_0x5e7238[_0x0a9e('0x31')];agents[_0x5e7238['destuniqueid']][_0x0a9e('0x2b')]=_0x5e7238[_0x0a9e('0x23')];agents[_0x5e7238[_0x0a9e('0x13')]]['lastevent']='connect';_[_0x0a9e('0x26')](agents,function(_0x40d766,_0x5adda1){if(_0x40d766[_0x0a9e('0x13')]!=_0x5e7238[_0x0a9e('0x13')]&&_0x40d766[_0x0a9e('0x5')]==_0x5e7238[_0x0a9e('0x5')]){_0x40d766['talktime']=0x0;_0x40d766['holdtime']=_0x5e7238[_0x0a9e('0x23')];_0x40d766[_0x0a9e('0x1b')]=!![];_0x40d766['agentringnoanswerAt']=utils[_0x0a9e('0x20')]();_0x40d766[_0x0a9e('0xb')]=_0x0a9e('0x32');_0x40d766['reason']=_0x0a9e('0x32');_0x40d766[_0x0a9e('0x33')]=_0x5e7238[_0x0a9e('0x13')];_0x40d766[_0x0a9e('0x34')]=_0x5e7238[_0x0a9e('0x8')];writeDB(_0x40d766);}});}}catch(_0xeaa5e5){utils[_0x0a9e('0x1a')](util[_0x0a9e('0x15')](_0x0a9e('0x2e'),_0x5e7238[_0x0a9e('0x5')]),_0xeaa5e5);}};exports[_0x0a9e('0xe')]=function(_0x148007){try{if(!_[_0x0a9e('0x35')](agents[_0x148007[_0x0a9e('0x13')]])){utils[_0x0a9e('0x1c')](util['format']('[%s][agents][agentcomplete]',_0x148007[_0x0a9e('0x5')]),_0x148007);utils[_0x0a9e('0x3')](util[_0x0a9e('0x15')](_0x0a9e('0x36'),_0x148007[_0x0a9e('0x5')],agents[_0x148007[_0x0a9e('0x13')]][_0x0a9e('0x8')],_0x148007[_0x0a9e('0x13')]));agents[_0x148007[_0x0a9e('0x13')]][_0x0a9e('0xe')]=!![];agents[_0x148007[_0x0a9e('0x13')]][_0x0a9e('0x37')]=utils['now']();agents[_0x148007[_0x0a9e('0x13')]][_0x0a9e('0x2c')]=utils[_0x0a9e('0x38')](agents[_0x148007[_0x0a9e('0x13')]][_0x0a9e('0x37')],agents[_0x148007[_0x0a9e('0x13')]][_0x0a9e('0x30')]);agents[_0x148007[_0x0a9e('0x13')]]['reason']=_0x148007[_0x0a9e('0x21')];agents[_0x148007['destuniqueid']][_0x0a9e('0xb')]=_0x0a9e('0x39');writeDB(agents[_0x148007[_0x0a9e('0x13')]]);}}catch(_0x562fb4){utils[_0x0a9e('0x1a')](util[_0x0a9e('0x15')](_0x0a9e('0x3a'),_0x148007[_0x0a9e('0x5')]),_0x562fb4);}};exports[_0x0a9e('0x3b')]=function(_0x37be73){try{if(!_[_0x0a9e('0x35')](agents[_0x37be73['transfereruniqueid']])){utils[_0x0a9e('0x1c')](util[_0x0a9e('0x15')](_0x0a9e('0x3c'),_0x37be73[_0x0a9e('0x5')]),_0x37be73);utils[_0x0a9e('0x3')](util[_0x0a9e('0x15')](_0x0a9e('0x3d'),_0x37be73[_0x0a9e('0x5')],agents[_0x37be73[_0x0a9e('0x3e')]]['membername'],agents[_0x37be73[_0x0a9e('0x3e')]][_0x0a9e('0x5')]));agents[_0x37be73['transfereruniqueid']]['transfer']=!![];agents[_0x37be73['transfereruniqueid']][_0x0a9e('0x3f')]=_0x0a9e('0x40');agents[_0x37be73[_0x0a9e('0x3e')]][_0x0a9e('0x41')]=_0x37be73[_0x0a9e('0x42')];agents[_0x37be73[_0x0a9e('0x3e')]][_0x0a9e('0x43')]=agents[_0x37be73[_0x0a9e('0x3e')]]['uniqueid'];}}catch(_0x4b1b9f){utils['error'](util[_0x0a9e('0x15')](_0x0a9e('0x3c'),_0x37be73[_0x0a9e('0x5')]),_0x4b1b9f);}};exports['attendedtransfer']=function(_0x2b69d9){try{utils[_0x0a9e('0x1c')](util['format']('[%s][agents][attendedtransfer]',_0x2b69d9[_0x0a9e('0x44')]),_0x2b69d9);if(_0x2b69d9['origtransfereruniqueid']==_0x2b69d9[_0x0a9e('0x45')]){if(!_['isNil'](agents[_0x2b69d9[_0x0a9e('0x46')]])){utils[_0x0a9e('0x3')](util[_0x0a9e('0x15')]('[%s][agents][attendedtransfer]\x20agent:%s',_0x2b69d9[_0x0a9e('0x44')],agents[_0x2b69d9[_0x0a9e('0x46')]]['membername']));agents[_0x2b69d9['secondtransfereruniqueid']][_0x0a9e('0x47')]=!![];agents[_0x2b69d9[_0x0a9e('0x46')]]['transfertype']=_0x0a9e('0x48');agents[_0x2b69d9['secondtransfereruniqueid']][_0x0a9e('0x41')]=_0x2b69d9['origtransfererexten'];agents[_0x2b69d9[_0x0a9e('0x46')]]['transferuniqueid']=_0x2b69d9['origtransfereruniqueid'];}if(_0x2b69d9['transfereeuniqueid']&&agents[_0x2b69d9[_0x0a9e('0x49')]]){agents[_0x2b69d9['transfereeuniqueid']][_0x0a9e('0x4a')]=0x1;transfers[_0x2b69d9[_0x0a9e('0x49')]]=_[_0x0a9e('0x4b')](agents[_0x2b69d9[_0x0a9e('0x49')]]);transfers[_0x2b69d9[_0x0a9e('0x49')]][_0x0a9e('0x9')]=agents[_0x2b69d9[_0x0a9e('0x46')]][_0x0a9e('0x9')];transfers[_0x2b69d9['transfereeuniqueid']][_0x0a9e('0x4c')]=agents[_0x2b69d9[_0x0a9e('0x46')]][_0x0a9e('0x4c')];transfers[_0x2b69d9[_0x0a9e('0x49')]][_0x0a9e('0x17')]=utils[_0x0a9e('0x20')]();transfers[_0x2b69d9['transfereeuniqueid']][_0x0a9e('0x30')]=utils[_0x0a9e('0x20')]();transfers[_0x2b69d9['transfereeuniqueid']][_0x0a9e('0x2b')]=0x0;transfers[_0x2b69d9['transfereeuniqueid']][_0x0a9e('0x4a')]=0x2;}}else if(_0x2b69d9['secondtransfereruniqueid']==_0x2b69d9['secondtransfererlinkedid']){if(!_['isNil'](agents[_0x2b69d9[_0x0a9e('0x44')]])){utils['info'](util[_0x0a9e('0x15')](_0x0a9e('0x4d'),_0x2b69d9[_0x0a9e('0x44')],agents[_0x2b69d9[_0x0a9e('0x44')]][_0x0a9e('0x8')]));agents[_0x2b69d9[_0x0a9e('0x44')]]['transfer']=!![];agents[_0x2b69d9[_0x0a9e('0x44')]]['transfertype']=_0x0a9e('0x48');agents[_0x2b69d9[_0x0a9e('0x44')]][_0x0a9e('0x41')]=_0x2b69d9['secondtransfererexten'];agents[_0x2b69d9[_0x0a9e('0x44')]][_0x0a9e('0x43')]=_0x2b69d9[_0x0a9e('0x46')];}if(_0x2b69d9[_0x0a9e('0x4e')]&&agents[_0x2b69d9['transfertargetuniqueid']]){agents[_0x2b69d9[_0x0a9e('0x4e')]][_0x0a9e('0x4a')]=0x1;transfers[_0x2b69d9['transfertargetuniqueid']]=_[_0x0a9e('0x4b')](agents[_0x2b69d9[_0x0a9e('0x4e')]]);transfers[_0x2b69d9[_0x0a9e('0x4e')]][_0x0a9e('0x9')]=agents[_0x2b69d9[_0x0a9e('0x44')]]['calleridnum'];transfers[_0x2b69d9[_0x0a9e('0x4e')]][_0x0a9e('0x4c')]=agents[_0x2b69d9[_0x0a9e('0x44')]]['calleridname'];transfers[_0x2b69d9[_0x0a9e('0x4e')]]['agentcalledAt']=utils['now']();transfers[_0x2b69d9[_0x0a9e('0x4e')]][_0x0a9e('0x30')]=utils[_0x0a9e('0x20')]();transfers[_0x2b69d9[_0x0a9e('0x4e')]][_0x0a9e('0x2b')]=0x0;transfers[_0x2b69d9[_0x0a9e('0x4e')]][_0x0a9e('0x4a')]=0x2;}}}catch(_0x54a37d){utils[_0x0a9e('0x1a')](util[_0x0a9e('0x15')](_0x0a9e('0x4f'),_0x2b69d9[_0x0a9e('0x44')]),_0x54a37d);}};exports[_0x0a9e('0x50')]=function(_0x2b8192){try{utils[_0x0a9e('0x1c')](util[_0x0a9e('0x15')](_0x0a9e('0x51'),_0x2b8192[_0x0a9e('0x5')]),_0x2b8192);if(agents[_0x2b8192['uniqueid']]&&agents[_0x2b8192[_0x0a9e('0x5')]][_0x0a9e('0x21')]===_0x0a9e('0x22')){if(_0x2b8192['cause']==='21'){agents[_0x2b8192[_0x0a9e('0x5')]][_0x0a9e('0x21')]='rejected';agents[_0x2b8192[_0x0a9e('0x5')]][_0x0a9e('0xb')]=_0x0a9e('0x52');}utils[_0x0a9e('0x3')](util[_0x0a9e('0x15')]('[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s',_0x2b8192['uniqueid'],agents[_0x2b8192['uniqueid']][_0x0a9e('0x8')],agents[_0x2b8192[_0x0a9e('0x5')]][_0x0a9e('0x21')],agents[_0x2b8192[_0x0a9e('0x5')]][_0x0a9e('0xb')]));writeDB(agents[_0x2b8192[_0x0a9e('0x5')]]);var _0xeef20=unanswered[_0x0a9e('0x53')](_0x2b8192['uniqueid']);if(_0xeef20>-0x1){unanswered[_0x0a9e('0x54')](_0xeef20,0x1);}}if(transfers[_0x2b8192[_0x0a9e('0x5')]]){transfers[_0x2b8192[_0x0a9e('0x5')]]['agentcomplete']=!![];transfers[_0x2b8192[_0x0a9e('0x5')]]['agentcompleteAt']=utils[_0x0a9e('0x20')]();transfers[_0x2b8192[_0x0a9e('0x5')]]['talktime']=utils[_0x0a9e('0x38')](transfers[_0x2b8192[_0x0a9e('0x5')]][_0x0a9e('0x37')],transfers[_0x2b8192[_0x0a9e('0x5')]]['agentconnectAt']);transfers[_0x2b8192[_0x0a9e('0x5')]][_0x0a9e('0x21')]=_0x0a9e('0x55');transfers[_0x2b8192[_0x0a9e('0x5')]]['lastevent']=_0x0a9e('0x39');utils[_0x0a9e('0x3')](util[_0x0a9e('0x15')](_0x0a9e('0x56'),_0x2b8192['uniqueid'],transfers[_0x2b8192[_0x0a9e('0x5')]][_0x0a9e('0x8')],transfers[_0x2b8192[_0x0a9e('0x5')]][_0x0a9e('0x21')],transfers[_0x2b8192[_0x0a9e('0x5')]][_0x0a9e('0xb')]));writeDB(transfers[_0x2b8192[_0x0a9e('0x5')]],!![]);}if(agents[_0x2b8192[_0x0a9e('0x5')]]&&agents[_0x2b8192[_0x0a9e('0x5')]][_0x0a9e('0x30')]){agents[_0x2b8192[_0x0a9e('0x5')]][_0x0a9e('0xe')]=!![];agents[_0x2b8192[_0x0a9e('0x5')]][_0x0a9e('0x37')]=utils['now']();agents[_0x2b8192[_0x0a9e('0x5')]][_0x0a9e('0x2c')]=utils[_0x0a9e('0x38')](agents[_0x2b8192['uniqueid']][_0x0a9e('0x37')],agents[_0x2b8192[_0x0a9e('0x5')]][_0x0a9e('0x30')]);agents[_0x2b8192[_0x0a9e('0x5')]]['reason']=agents[_0x2b8192['uniqueid']][_0x0a9e('0x47')]?_0x0a9e('0x47'):'agent';agents[_0x2b8192[_0x0a9e('0x5')]]['lastevent']=_0x0a9e('0x39');utils[_0x0a9e('0x3')](util['format'](_0x0a9e('0x56'),_0x2b8192[_0x0a9e('0x5')],agents[_0x2b8192[_0x0a9e('0x5')]][_0x0a9e('0x8')],agents[_0x2b8192[_0x0a9e('0x5')]][_0x0a9e('0x21')],agents[_0x2b8192[_0x0a9e('0x5')]]['lastevent']));writeDB(agents[_0x2b8192[_0x0a9e('0x5')]]);}}catch(_0x3ca9b9){utils[_0x0a9e('0x1a')](util[_0x0a9e('0x15')]('[%s][agents][hangup]',_0x2b8192[_0x0a9e('0x5')]),_0x3ca9b9);}};
\ No newline at end of file
+var _0xcb91=['blind','transferexten','extension','transferuniqueid','[%s][agents][attendedtransfer]','origtransfereruniqueid','secondtransfereruniqueid','[%s][agents][attendedtransfer]\x20agent:%s','transfer','ATTENDED','transfereeuniqueid','clone','calleridname','agententerreason','secondtransfererlinkedid','secondtransfererexten','transfertargetuniqueid','hangup','cause','rejected','[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s','indexOf','splice','agent','[%s][agents][hangup]','./utils','info','[%s][agents][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','uniqueid','queue','membername','calleridnum','connectedlinenum','getVoiceQueueByName','then','type','agentacw','agentcomplete','acw','acwtime','acwTimeout','request','CreateVoiceAgentReport','debug','format','[%s][agents][agentcalled]','destuniqueid','agentcalledAt','now','connectedlinename','[%s][agents][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','error','isNil','[%s][agents][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:timeout','agentringnoanswer','agentringnoanswerAt','lastevent','timeout','reason','holdtime','ringtime','talktime','push','[%s][agents][queuecallerabandon]','abandoned','agentconnect','[%s][agents][agentconnect]','[%s][agents][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','answered_elsewhere','answeredelsewheredestinationuniqueid','answeredelsewheremembername','[%s][agents][agentcomplete]','agentcompleteAt','diffTime','complete','blindtransfer','transfereruniqueid','[%s][agents][blindtransfer]\x20agent:%s\x20transferuniqueid:%s','transfertype'];(function(_0xc5cd18,_0x251c74){var _0x37a5cb=function(_0x40474b){while(--_0x40474b){_0xc5cd18['push'](_0xc5cd18['shift']());}};_0x37a5cb(++_0x251c74);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x4599b6,_0x40c254){_0x4599b6=_0x4599b6-0x0;var _0x2e014c=_0xcb91[_0x4599b6];return _0x2e014c;};'use strict';var _=require('lodash');var util=require('util');var utils=require(_0x1cb9('0x0'));var agents={};var transfers={};var unanswered=[];function writeDB(_0xe4a5bf,_0x17d4ec){utils[_0x1cb9('0x1')](util['format'](_0x1cb9('0x2'),_0xe4a5bf[_0x1cb9('0x3')],_0xe4a5bf['channel'],_0xe4a5bf[_0x1cb9('0x4')],_0xe4a5bf[_0x1cb9('0x5')],_0xe4a5bf['interface'],_0xe4a5bf[_0x1cb9('0x6')],_0xe4a5bf[_0x1cb9('0x7')],_0xe4a5bf['lastevent']));if(_0xe4a5bf[_0x1cb9('0x4')]){utils[_0x1cb9('0x8')](_0xe4a5bf['queue'])[_0x1cb9('0x9')](function(_0x5a0e99){if(_0x5a0e99){_0xe4a5bf['type']=_0x5a0e99[_0x1cb9('0xa')];_0xe4a5bf[_0x1cb9('0xb')]=_0xe4a5bf[_0x1cb9('0xc')]?_0x5a0e99[_0x1cb9('0xd')]:![];_0xe4a5bf[_0x1cb9('0xe')]=_0xe4a5bf['agentacw']?_0x5a0e99[_0x1cb9('0xf')]:0x0;}utils[_0x1cb9('0x10')](_0x1cb9('0x11'),_0xe4a5bf);});}else{utils[_0x1cb9('0x10')](_0x1cb9('0x11'),_0xe4a5bf);}if(_0x17d4ec){delete transfers[_0xe4a5bf['uniqueid']];}else{delete agents[_0xe4a5bf['destuniqueid']];}}exports['agentcalled']=function(_0x358866){try{utils[_0x1cb9('0x12')](util[_0x1cb9('0x13')](_0x1cb9('0x14'),_0x358866['uniqueid']),_0x358866);agents[_0x358866[_0x1cb9('0x15')]]=_0x358866;agents[_0x358866[_0x1cb9('0x15')]][_0x1cb9('0x16')]=utils[_0x1cb9('0x17')]();agents[_0x358866[_0x1cb9('0x15')]]['lastevent']='called';agents[_0x358866[_0x1cb9('0x15')]][_0x1cb9('0x7')]=null;agents[_0x358866[_0x1cb9('0x15')]][_0x1cb9('0x18')]=null;utils[_0x1cb9('0x1')](util[_0x1cb9('0x13')](_0x1cb9('0x19'),_0x358866['uniqueid'],agents[_0x358866['destuniqueid']][_0x1cb9('0x5')],_0x358866[_0x1cb9('0x15')]));}catch(_0x2b2669){utils[_0x1cb9('0x1a')](util[_0x1cb9('0x13')](_0x1cb9('0x14'),_0x358866[_0x1cb9('0x3')]),_0x2b2669);}};exports['agentringnoanswer']=function(_0x559bcc){try{if(!_[_0x1cb9('0x1b')](agents[_0x559bcc['destuniqueid']])){utils[_0x1cb9('0x12')](util[_0x1cb9('0x13')]('[%s][agents][agentringnoanswer]',_0x559bcc['uniqueid']),_0x559bcc);utils[_0x1cb9('0x1')](util[_0x1cb9('0x13')](_0x1cb9('0x1c'),_0x559bcc[_0x1cb9('0x3')],agents[_0x559bcc[_0x1cb9('0x15')]][_0x1cb9('0x5')],_0x559bcc['destuniqueid']));agents[_0x559bcc['destuniqueid']][_0x1cb9('0x1d')]=!![];agents[_0x559bcc['destuniqueid']][_0x1cb9('0x1e')]=utils[_0x1cb9('0x17')]();agents[_0x559bcc[_0x1cb9('0x15')]][_0x1cb9('0x1f')]=_0x1cb9('0x20');agents[_0x559bcc['destuniqueid']][_0x1cb9('0x21')]=_0x1cb9('0x20');agents[_0x559bcc['destuniqueid']][_0x1cb9('0x22')]=_0x559bcc[_0x1cb9('0x23')]?parseInt(_0x559bcc[_0x1cb9('0x23')])/0x3e8:0x0;agents[_0x559bcc[_0x1cb9('0x15')]][_0x1cb9('0x24')]=0x0;unanswered[_0x1cb9('0x25')](_0x559bcc[_0x1cb9('0x15')]);}}catch(_0xb644b3){utils[_0x1cb9('0x1a')](util[_0x1cb9('0x13')]('[%s][agents][agentringnoanswer]',_0x559bcc[_0x1cb9('0x3')]),_0xb644b3);}};exports['queuecallerabandon']=function(_0x110282){try{_['forIn'](agents,function(_0x278327,_0x41011c){if(_0x278327[_0x1cb9('0x3')]==_0x110282[_0x1cb9('0x3')]&&!_['includes'](unanswered,_0x278327[_0x1cb9('0x15')])){utils['debug'](util[_0x1cb9('0x13')](_0x1cb9('0x26'),_0x110282[_0x1cb9('0x3')]),_0x110282);utils['info'](util[_0x1cb9('0x13')]('[%s][agents][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned',_0x110282[_0x1cb9('0x3')],_0x278327['membername'],_0x278327[_0x1cb9('0x15')]));_0x278327[_0x1cb9('0x1d')]=!![];_0x278327[_0x1cb9('0x1e')]=utils[_0x1cb9('0x17')]();_0x278327['lastevent']=_0x1cb9('0x27');_0x278327[_0x1cb9('0x21')]=_0x1cb9('0x27');_0x278327[_0x1cb9('0x22')]=_0x110282[_0x1cb9('0x22')];_0x278327[_0x1cb9('0x24')]=0x0;writeDB(_0x278327);}});}catch(_0xc6d5fd){utils[_0x1cb9('0x1a')](util[_0x1cb9('0x13')](_0x1cb9('0x26'),_0x110282[_0x1cb9('0x3')]),_0xc6d5fd);}};exports[_0x1cb9('0x28')]=function(_0x29f149){try{if(agents[_0x29f149['destuniqueid']]){utils['debug'](util[_0x1cb9('0x13')](_0x1cb9('0x29'),_0x29f149[_0x1cb9('0x3')]),_0x29f149);utils[_0x1cb9('0x1')](util[_0x1cb9('0x13')](_0x1cb9('0x2a'),_0x29f149[_0x1cb9('0x3')],agents[_0x29f149[_0x1cb9('0x15')]]['membername'],_0x29f149[_0x1cb9('0x15')]));agents[_0x29f149[_0x1cb9('0x15')]][_0x1cb9('0x2b')]=utils['now']();agents[_0x29f149[_0x1cb9('0x15')]]['connectedlinenum']=_0x29f149[_0x1cb9('0x7')];agents[_0x29f149['destuniqueid']][_0x1cb9('0x18')]=_0x29f149[_0x1cb9('0x18')];agents[_0x29f149[_0x1cb9('0x15')]][_0x1cb9('0x22')]=_0x29f149[_0x1cb9('0x23')];agents[_0x29f149[_0x1cb9('0x15')]][_0x1cb9('0x1f')]='connect';_['forIn'](agents,function(_0x4111b8,_0x1d2723){if(_0x4111b8[_0x1cb9('0x15')]!=_0x29f149[_0x1cb9('0x15')]&&_0x4111b8[_0x1cb9('0x3')]==_0x29f149[_0x1cb9('0x3')]){_0x4111b8[_0x1cb9('0x24')]=0x0;_0x4111b8['holdtime']=_0x29f149[_0x1cb9('0x23')];_0x4111b8['agentringnoanswer']=!![];_0x4111b8['agentringnoanswerAt']=utils['now']();_0x4111b8[_0x1cb9('0x1f')]=_0x1cb9('0x2c');_0x4111b8[_0x1cb9('0x21')]=_0x1cb9('0x2c');_0x4111b8[_0x1cb9('0x2d')]=_0x29f149['destuniqueid'];_0x4111b8[_0x1cb9('0x2e')]=_0x29f149['membername'];writeDB(_0x4111b8);}});}}catch(_0x91121){utils[_0x1cb9('0x1a')](util[_0x1cb9('0x13')]('[%s][agents][agentconnect]',_0x29f149[_0x1cb9('0x3')]),_0x91121);}};exports['agentcomplete']=function(_0xda1a44){try{if(!_[_0x1cb9('0x1b')](agents[_0xda1a44['destuniqueid']])){utils['debug'](util[_0x1cb9('0x13')](_0x1cb9('0x2f'),_0xda1a44[_0x1cb9('0x3')]),_0xda1a44);utils[_0x1cb9('0x1')](util[_0x1cb9('0x13')]('[%s][agents][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete',_0xda1a44[_0x1cb9('0x3')],agents[_0xda1a44['destuniqueid']]['membername'],_0xda1a44['destuniqueid']));agents[_0xda1a44[_0x1cb9('0x15')]][_0x1cb9('0xc')]=!![];agents[_0xda1a44[_0x1cb9('0x15')]][_0x1cb9('0x30')]=utils[_0x1cb9('0x17')]();agents[_0xda1a44[_0x1cb9('0x15')]][_0x1cb9('0x24')]=utils[_0x1cb9('0x31')](agents[_0xda1a44[_0x1cb9('0x15')]][_0x1cb9('0x30')],agents[_0xda1a44[_0x1cb9('0x15')]]['agentconnectAt']);agents[_0xda1a44[_0x1cb9('0x15')]][_0x1cb9('0x21')]=_0xda1a44[_0x1cb9('0x21')];agents[_0xda1a44['destuniqueid']][_0x1cb9('0x1f')]=_0x1cb9('0x32');writeDB(agents[_0xda1a44[_0x1cb9('0x15')]]);}}catch(_0x2efdbb){utils[_0x1cb9('0x1a')](util['format'](_0x1cb9('0x2f'),_0xda1a44['uniqueid']),_0x2efdbb);}};exports[_0x1cb9('0x33')]=function(_0x4ac483){try{if(!_[_0x1cb9('0x1b')](agents[_0x4ac483[_0x1cb9('0x34')]])){utils[_0x1cb9('0x12')](util[_0x1cb9('0x13')]('[%s][agents][blindtransfer]',_0x4ac483[_0x1cb9('0x3')]),_0x4ac483);utils[_0x1cb9('0x1')](util[_0x1cb9('0x13')](_0x1cb9('0x35'),_0x4ac483[_0x1cb9('0x3')],agents[_0x4ac483[_0x1cb9('0x34')]][_0x1cb9('0x5')],agents[_0x4ac483[_0x1cb9('0x34')]][_0x1cb9('0x3')]));agents[_0x4ac483[_0x1cb9('0x34')]]['transfer']=!![];agents[_0x4ac483['transfereruniqueid']][_0x1cb9('0x36')]=_0x1cb9('0x37');agents[_0x4ac483[_0x1cb9('0x34')]][_0x1cb9('0x38')]=_0x4ac483[_0x1cb9('0x39')];agents[_0x4ac483[_0x1cb9('0x34')]][_0x1cb9('0x3a')]=agents[_0x4ac483[_0x1cb9('0x34')]][_0x1cb9('0x3')];}}catch(_0x166ca2){utils['error'](util[_0x1cb9('0x13')]('[%s][agents][blindtransfer]',_0x4ac483[_0x1cb9('0x3')]),_0x166ca2);}};exports['attendedtransfer']=function(_0x135795){try{utils['debug'](util['format'](_0x1cb9('0x3b'),_0x135795[_0x1cb9('0x3c')]),_0x135795);if(_0x135795[_0x1cb9('0x3c')]==_0x135795['origtransfererlinkedid']){if(!_[_0x1cb9('0x1b')](agents[_0x135795[_0x1cb9('0x3d')]])){utils['info'](util['format'](_0x1cb9('0x3e'),_0x135795[_0x1cb9('0x3c')],agents[_0x135795[_0x1cb9('0x3d')]][_0x1cb9('0x5')]));agents[_0x135795[_0x1cb9('0x3d')]][_0x1cb9('0x3f')]=!![];agents[_0x135795[_0x1cb9('0x3d')]]['transfertype']=_0x1cb9('0x40');agents[_0x135795[_0x1cb9('0x3d')]][_0x1cb9('0x38')]=_0x135795['origtransfererexten'];agents[_0x135795[_0x1cb9('0x3d')]][_0x1cb9('0x3a')]=_0x135795[_0x1cb9('0x3c')];}if(_0x135795[_0x1cb9('0x41')]&&agents[_0x135795[_0x1cb9('0x41')]]){agents[_0x135795[_0x1cb9('0x41')]]['agententerreason']=0x1;transfers[_0x135795[_0x1cb9('0x41')]]=_[_0x1cb9('0x42')](agents[_0x135795[_0x1cb9('0x41')]]);transfers[_0x135795[_0x1cb9('0x41')]][_0x1cb9('0x6')]=agents[_0x135795[_0x1cb9('0x3d')]][_0x1cb9('0x6')];transfers[_0x135795[_0x1cb9('0x41')]][_0x1cb9('0x43')]=agents[_0x135795[_0x1cb9('0x3d')]][_0x1cb9('0x43')];transfers[_0x135795['transfereeuniqueid']][_0x1cb9('0x16')]=utils[_0x1cb9('0x17')]();transfers[_0x135795[_0x1cb9('0x41')]][_0x1cb9('0x2b')]=utils['now']();transfers[_0x135795['transfereeuniqueid']][_0x1cb9('0x22')]=0x0;transfers[_0x135795[_0x1cb9('0x41')]][_0x1cb9('0x44')]=0x2;}}else if(_0x135795[_0x1cb9('0x3d')]==_0x135795[_0x1cb9('0x45')]){if(!_[_0x1cb9('0x1b')](agents[_0x135795[_0x1cb9('0x3c')]])){utils[_0x1cb9('0x1')](util['format']('[%s][agents][attendedtransfer]\x20agent:%s',_0x135795[_0x1cb9('0x3c')],agents[_0x135795['origtransfereruniqueid']]['membername']));agents[_0x135795['origtransfereruniqueid']]['transfer']=!![];agents[_0x135795['origtransfereruniqueid']][_0x1cb9('0x36')]=_0x1cb9('0x40');agents[_0x135795[_0x1cb9('0x3c')]][_0x1cb9('0x38')]=_0x135795[_0x1cb9('0x46')];agents[_0x135795[_0x1cb9('0x3c')]]['transferuniqueid']=_0x135795[_0x1cb9('0x3d')];}if(_0x135795[_0x1cb9('0x47')]&&agents[_0x135795['transfertargetuniqueid']]){agents[_0x135795['transfertargetuniqueid']][_0x1cb9('0x44')]=0x1;transfers[_0x135795[_0x1cb9('0x47')]]=_[_0x1cb9('0x42')](agents[_0x135795[_0x1cb9('0x47')]]);transfers[_0x135795[_0x1cb9('0x47')]]['calleridnum']=agents[_0x135795['origtransfereruniqueid']]['calleridnum'];transfers[_0x135795[_0x1cb9('0x47')]][_0x1cb9('0x43')]=agents[_0x135795[_0x1cb9('0x3c')]][_0x1cb9('0x43')];transfers[_0x135795[_0x1cb9('0x47')]]['agentcalledAt']=utils[_0x1cb9('0x17')]();transfers[_0x135795[_0x1cb9('0x47')]]['agentconnectAt']=utils['now']();transfers[_0x135795[_0x1cb9('0x47')]]['holdtime']=0x0;transfers[_0x135795[_0x1cb9('0x47')]][_0x1cb9('0x44')]=0x2;}}}catch(_0x2c54ea){utils[_0x1cb9('0x1a')](util[_0x1cb9('0x13')](_0x1cb9('0x3b'),_0x135795['origtransfereruniqueid']),_0x2c54ea);}};exports[_0x1cb9('0x48')]=function(_0x15fc04){try{utils[_0x1cb9('0x12')](util[_0x1cb9('0x13')]('[%s][agents][hangup]',_0x15fc04['uniqueid']),_0x15fc04);if(agents[_0x15fc04[_0x1cb9('0x3')]]&&agents[_0x15fc04[_0x1cb9('0x3')]][_0x1cb9('0x21')]===_0x1cb9('0x20')){if(_0x15fc04[_0x1cb9('0x49')]==='21'){agents[_0x15fc04[_0x1cb9('0x3')]]['reason']=_0x1cb9('0x4a');agents[_0x15fc04['uniqueid']][_0x1cb9('0x1f')]=_0x1cb9('0x4a');}utils['info'](util[_0x1cb9('0x13')](_0x1cb9('0x4b'),_0x15fc04[_0x1cb9('0x3')],agents[_0x15fc04['uniqueid']][_0x1cb9('0x5')],agents[_0x15fc04[_0x1cb9('0x3')]][_0x1cb9('0x21')],agents[_0x15fc04[_0x1cb9('0x3')]][_0x1cb9('0x1f')]));writeDB(agents[_0x15fc04[_0x1cb9('0x3')]]);var _0x5a3f1d=unanswered[_0x1cb9('0x4c')](_0x15fc04[_0x1cb9('0x3')]);if(_0x5a3f1d>-0x1){unanswered[_0x1cb9('0x4d')](_0x5a3f1d,0x1);}}if(transfers[_0x15fc04[_0x1cb9('0x3')]]){transfers[_0x15fc04[_0x1cb9('0x3')]][_0x1cb9('0xc')]=!![];transfers[_0x15fc04[_0x1cb9('0x3')]][_0x1cb9('0x30')]=utils['now']();transfers[_0x15fc04[_0x1cb9('0x3')]][_0x1cb9('0x24')]=utils['diffTime'](transfers[_0x15fc04[_0x1cb9('0x3')]]['agentcompleteAt'],transfers[_0x15fc04[_0x1cb9('0x3')]]['agentconnectAt']);transfers[_0x15fc04['uniqueid']][_0x1cb9('0x21')]=_0x1cb9('0x4e');transfers[_0x15fc04['uniqueid']][_0x1cb9('0x1f')]='complete';utils[_0x1cb9('0x1')](util[_0x1cb9('0x13')](_0x1cb9('0x4b'),_0x15fc04[_0x1cb9('0x3')],transfers[_0x15fc04['uniqueid']][_0x1cb9('0x5')],transfers[_0x15fc04[_0x1cb9('0x3')]][_0x1cb9('0x21')],transfers[_0x15fc04[_0x1cb9('0x3')]][_0x1cb9('0x1f')]));writeDB(transfers[_0x15fc04[_0x1cb9('0x3')]],!![]);}if(agents[_0x15fc04['uniqueid']]&&agents[_0x15fc04[_0x1cb9('0x3')]][_0x1cb9('0x2b')]){agents[_0x15fc04[_0x1cb9('0x3')]][_0x1cb9('0xc')]=!![];agents[_0x15fc04[_0x1cb9('0x3')]][_0x1cb9('0x30')]=utils['now']();agents[_0x15fc04[_0x1cb9('0x3')]][_0x1cb9('0x24')]=utils['diffTime'](agents[_0x15fc04[_0x1cb9('0x3')]][_0x1cb9('0x30')],agents[_0x15fc04[_0x1cb9('0x3')]][_0x1cb9('0x2b')]);agents[_0x15fc04[_0x1cb9('0x3')]][_0x1cb9('0x21')]=agents[_0x15fc04[_0x1cb9('0x3')]]['transfer']?_0x1cb9('0x3f'):'agent';agents[_0x15fc04[_0x1cb9('0x3')]][_0x1cb9('0x1f')]='complete';utils[_0x1cb9('0x1')](util[_0x1cb9('0x13')](_0x1cb9('0x4b'),_0x15fc04[_0x1cb9('0x3')],agents[_0x15fc04['uniqueid']][_0x1cb9('0x5')],agents[_0x15fc04[_0x1cb9('0x3')]][_0x1cb9('0x21')],agents[_0x15fc04['uniqueid']][_0x1cb9('0x1f')]));writeDB(agents[_0x15fc04[_0x1cb9('0x3')]]);}}catch(_0x3b456a){utils[_0x1cb9('0x1a')](util[_0x1cb9('0x13')](_0x1cb9('0x4f'),_0x15fc04[_0x1cb9('0x3')]),_0x3b456a);}};
\ No newline at end of file
index 1346b33..8afed25 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xce8e=['debug','[%s][calls][hangup]','callerid','[%s][calls][hangup]\x20callerid:%s\x20reason:%s','cause-txt','endtime','duration','diffTime','billableseconds','attendedtransfer','[%s][calls][attendedtransfer]','origtransfereruniqueid','localtwolinkedid','transfereechannel','secondtransfererchannel','userfield','_attended','[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s','musiconholdstart','[%s][calls][musiconholdstart]','musiconholdstartAt','[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s','musiconholdstop','[%s][calls][musiconholdstop]','mohtime','[%s][calls][musiconholdstop]\x20mohtime:%s','varset','[%s][calls][varset]','variable','xmd-originatecalleridnum','value','source','xmd-phone','[%s][calls][varset]\x20variable:xmd-phone\x20value:%s','xmd-callerid-preview','[%s][calls][varset]\x20variable:%s\x20value:%s','xmd-callerid','xmd-queue','xmcs-queue','lastapplication','Queue','[%s][calls][varset]\x20variable:xmd-contactid\x20value:%s','ContactId','xmd-cdrtype','[%s][calls][varset]\x20variable:xmd-cdrtype\x20value:%s','type','outboundrouteid','[%s][calls][varset]\x20variable:outboundrouteid\x20value:%s','routeid','sipcallid','[%s][calls][varset]\x20variable:sipcallid\x20value:%s','[%s][calls][newexten]','application','appdata','toLowerCase','set','startsWith','split','substring','lastIndexOf','includes','execif','gotoif','lastdata','lodash','util','./utils','./transfers.controller','NO\x20ANSWER','FAILED','BUSY','blinds','uniqueid','format','[%s][calls][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','channel','queue','membername','calleridnum','connectedlinenum','lastevent','accountcode','then','request','CreateVoiceCallReport','newchannel','[%s][calls][newchannel]','linkedid','OutgoingSpoolFailed','info','[%s][calls][newchannel]\x20context:%s\x20exten:%s','exten','DOCUMENTATION','error','[%s][calls][newstate]','isNil','channelstate','[%s][calls][newstate]\x20context:%s\x20channel:%s','context','systemanswertime','now','transfer','[%s][calls][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','destinationchannel','answertime','ANSWERED'];(function(_0x209941,_0x5c9988){var _0x1e8729=function(_0x51a9b8){while(--_0x51a9b8){_0x209941['push'](_0x209941['shift']());}};_0x1e8729(++_0x5c9988);}(_0xce8e,0x1e8));var _0xece8=function(_0x2a7095,_0x2cc687){_0x2a7095=_0x2a7095-0x0;var _0x51d692=_0xce8e[_0x2a7095];return _0x51d692;};'use strict';var _=require(_0xece8('0x0'));var util=require(_0xece8('0x1'));var utils=require(_0xece8('0x2'));var transfers=require(_0xece8('0x3'));var dispositions=[_0xece8('0x4'),_0xece8('0x5'),_0xece8('0x5'),_0xece8('0x4'),_0xece8('0x4'),_0xece8('0x4'),'ANSWERED',_0xece8('0x6'),_0xece8('0x5'),'FAILED',_0xece8('0x5')];var channels={};function writeDB(_0xd783b9){var _0x239f2e;if(transfers['blinds'][_0xd783b9['uniqueid']]){_0x239f2e=_0xd783b9['uniqueid'];_0xd783b9['uniqueid']=transfers[_0xece8('0x7')][_0xd783b9[_0xece8('0x8')]]['transfereeuniqueid'];}utils['info'](util[_0xece8('0x9')](_0xece8('0xa'),_0xd783b9[_0xece8('0x8')],_0xd783b9[_0xece8('0xb')],_0xd783b9[_0xece8('0xc')],_0xd783b9[_0xece8('0xd')],_0xd783b9['interface'],_0xd783b9[_0xece8('0xe')],_0xd783b9[_0xece8('0xf')],_0xd783b9[_0xece8('0x10')]));if(_0xd783b9[_0xece8('0x11')]){utils['getUserByInternal'](_0xd783b9[_0xece8('0x11')])[_0xece8('0x12')](function(_0x1beef3){if(_0x1beef3){_0xd783b9['UserId']=_0x1beef3['id'];}utils[_0xece8('0x13')](_0xece8('0x14'),_0xd783b9);});}else{utils[_0xece8('0x13')](_0xece8('0x14'),_0xd783b9);}if(channels[_0xd783b9[_0xece8('0x8')]]){delete channels[_0xd783b9[_0xece8('0x8')]];}else if(_0x239f2e&&channels[_0x239f2e]){delete transfers[_0xece8('0x7')][_0x239f2e];delete channels[_0x239f2e];}}exports[_0xece8('0x15')]=function(_0x19f38f){try{utils['debug'](util[_0xece8('0x9')](_0xece8('0x16'),_0x19f38f['uniqueid']),_0x19f38f);if(_0x19f38f[_0xece8('0x8')]==_0x19f38f[_0xece8('0x17')]&&_0x19f38f[_0xece8('0xb')]!=_0xece8('0x18')){utils[_0xece8('0x19')](util[_0xece8('0x9')](_0xece8('0x1a'),_0x19f38f[_0xece8('0x8')],_0x19f38f['context'],_0x19f38f[_0xece8('0x1b')]));channels[_0x19f38f[_0xece8('0x8')]]={'uniqueid':_0x19f38f[_0xece8('0x8')],'accountcode':_0x19f38f[_0xece8('0x11')],'source':_0x19f38f[_0xece8('0xe')],'destination':_0x19f38f[_0xece8('0x1b')],'destinationcontext':_0x19f38f['context'],'channel':_0x19f38f['channel'],'starttime':utils['now'](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':_0xece8('0x4'),'amaflags':_0xece8('0x1c')};}}catch(_0x5eba42){utils[_0xece8('0x1d')](util[_0xece8('0x9')](_0xece8('0x16'),_0x19f38f[_0xece8('0x8')]),_0x5eba42);}};exports['newstate']=function(_0x2a1881){try{utils['debug'](util[_0xece8('0x9')](_0xece8('0x1e'),_0x2a1881[_0xece8('0x8')]),_0x2a1881);if(!_[_0xece8('0x1f')](channels[_0x2a1881[_0xece8('0x8')]])&&_0x2a1881[_0xece8('0x20')]==0x6){utils['info'](util['format'](_0xece8('0x21'),_0x2a1881[_0xece8('0x8')],_0x2a1881[_0xece8('0x22')],_0x2a1881[_0xece8('0xb')]));if(_[_0xece8('0x1f')](channels[_0x2a1881['uniqueid']]['systemanswertime'])){channels[_0x2a1881['uniqueid']][_0xece8('0x23')]=utils[_0xece8('0x24')]();}}else if(!_[_0xece8('0x1f')](channels[_0x2a1881[_0xece8('0x17')]])&&_0x2a1881['channelstate']==0x6&&_0x2a1881[_0xece8('0x22')]!=_0xece8('0x25')){utils[_0xece8('0x19')](util[_0xece8('0x9')](_0xece8('0x26'),_0x2a1881[_0xece8('0x8')],_0x2a1881['linkedid'],_0x2a1881[_0xece8('0x22')],_0x2a1881[_0xece8('0xb')]));channels[_0x2a1881[_0xece8('0x17')]]['accountcode']=_0x2a1881['accountcode'];channels[_0x2a1881['linkedid']][_0xece8('0x27')]=_0x2a1881['channel'];if(_[_0xece8('0x1f')](channels[_0x2a1881[_0xece8('0x17')]][_0xece8('0x28')])){channels[_0x2a1881[_0xece8('0x17')]][_0xece8('0x28')]=utils['now']();}channels[_0x2a1881[_0xece8('0x17')]]['disposition']=dispositions[_['toNumber'](_0x2a1881[_0xece8('0x20')])]||_0xece8('0x29');}}catch(_0x46b686){utils[_0xece8('0x1d')](util[_0xece8('0x9')](_0xece8('0x1e'),_0x2a1881[_0xece8('0x8')]),_0x46b686);}};exports['hangup']=function(_0x600292){try{if(!_[_0xece8('0x1f')](channels[_0x600292[_0xece8('0x8')]])){utils[_0xece8('0x2a')](util[_0xece8('0x9')](_0xece8('0x2b'),_0x600292[_0xece8('0x8')]),_0x600292);if(_[_0xece8('0x1f')](channels[_0x600292[_0xece8('0x8')]][_0xece8('0x2c')])){channels[_0x600292[_0xece8('0x8')]][_0xece8('0x2c')]=_0x600292['calleridname']+'\x20<'+_0x600292[_0xece8('0xe')]+'>';}utils[_0xece8('0x19')](util[_0xece8('0x9')](_0xece8('0x2d'),_0x600292[_0xece8('0x8')],channels[_0x600292['uniqueid']][_0xece8('0x2c')],_0x600292[_0xece8('0x2e')]));channels[_0x600292[_0xece8('0x8')]][_0xece8('0x2f')]=utils[_0xece8('0x24')]();channels[_0x600292['uniqueid']][_0xece8('0x30')]=utils[_0xece8('0x31')](channels[_0x600292[_0xece8('0x8')]][_0xece8('0x2f')],channels[_0x600292[_0xece8('0x8')]]['starttime']);channels[_0x600292[_0xece8('0x8')]][_0xece8('0x32')]=channels[_0x600292[_0xece8('0x8')]][_0xece8('0x28')]?utils['diffTime'](channels[_0x600292[_0xece8('0x8')]][_0xece8('0x2f')],channels[_0x600292[_0xece8('0x8')]][_0xece8('0x28')]):0x0;writeDB(channels[_0x600292['uniqueid']]);}}catch(_0x56b5a6){utils[_0xece8('0x1d')](util[_0xece8('0x9')](_0xece8('0x2b'),_0x600292[_0xece8('0x8')]),_0x56b5a6);}};exports[_0xece8('0x33')]=function(_0x6dc339){try{if(!_[_0xece8('0x1f')](channels[_0x6dc339['localtwolinkedid']])){utils[_0xece8('0x2a')](util['format'](_0xece8('0x34'),_0x6dc339[_0xece8('0x35')]),_0x6dc339);if(channels[_0x6dc339[_0xece8('0x36')]][_0xece8('0xb')]==_0x6dc339[_0xece8('0x37')]){utils['info'](util[_0xece8('0x9')]('[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s',_0x6dc339[_0xece8('0x35')],_0x6dc339['localtwolinkedid'],_0x6dc339['secondtransfererchannel']));channels[_0x6dc339[_0xece8('0x36')]][_0xece8('0x27')]=_0x6dc339[_0xece8('0x38')];channels[_0x6dc339['localtwolinkedid']][_0xece8('0x39')]=_0xece8('0x3a');}else if(channels[_0x6dc339[_0xece8('0x36')]]['channel']=_0x6dc339['transfertargetchannel']){utils[_0xece8('0x19')](util[_0xece8('0x9')](_0xece8('0x3b'),_0x6dc339[_0xece8('0x35')],_0x6dc339[_0xece8('0x36')],_0x6dc339['origtransfererchannel']));channels[_0x6dc339[_0xece8('0x36')]]['destinationchannel']=_0x6dc339['origtransfererchannel'];channels[_0x6dc339[_0xece8('0x36')]][_0xece8('0x39')]='_attended';}}}catch(_0x504088){utils[_0xece8('0x1d')](util[_0xece8('0x9')](_0xece8('0x34'),_0x6dc339['origtransfereruniqueid']),_0x504088);}};exports[_0xece8('0x3c')]=function(_0x931eb6){try{if(!_[_0xece8('0x1f')](channels[_0x931eb6[_0xece8('0x8')]])){utils[_0xece8('0x2a')](util[_0xece8('0x9')](_0xece8('0x3d'),_0x931eb6['uniqueid']),_0x931eb6);channels[_0x931eb6[_0xece8('0x8')]][_0xece8('0x3e')]=utils['now']();utils[_0xece8('0x19')](util[_0xece8('0x9')](_0xece8('0x3f'),_0x931eb6['uniqueid'],channels[_0x931eb6[_0xece8('0x8')]][_0xece8('0x3e')]));}}catch(_0x3f2382){utils[_0xece8('0x1d')](util['format'](_0xece8('0x3d'),_0x931eb6['uniqueid']),_0x3f2382);}};exports[_0xece8('0x40')]=function(_0x1f0fd5){try{if(!_[_0xece8('0x1f')](channels[_0x1f0fd5[_0xece8('0x8')]])){utils['debug'](util['format'](_0xece8('0x41'),_0x1f0fd5[_0xece8('0x8')]),_0x1f0fd5);if(!_['isNil'](channels[_0x1f0fd5[_0xece8('0x8')]][_0xece8('0x3e')])){channels[_0x1f0fd5[_0xece8('0x8')]][_0xece8('0x42')]+=utils[_0xece8('0x31')](utils[_0xece8('0x24')](),channels[_0x1f0fd5[_0xece8('0x8')]][_0xece8('0x3e')]);utils['info'](util[_0xece8('0x9')](_0xece8('0x43'),_0x1f0fd5[_0xece8('0x8')],channels[_0x1f0fd5[_0xece8('0x8')]][_0xece8('0x42')]));delete channels[_0x1f0fd5[_0xece8('0x8')]]['musiconholdstartAt'];}}}catch(_0x5013f9){utils['error'](util[_0xece8('0x9')](_0xece8('0x41'),_0x1f0fd5[_0xece8('0x8')]),_0x5013f9);}};exports[_0xece8('0x44')]=function(_0x1313a7){try{if(!_[_0xece8('0x1f')](channels[_0x1313a7[_0xece8('0x8')]])){utils[_0xece8('0x2a')](util[_0xece8('0x9')](_0xece8('0x45'),_0x1313a7[_0xece8('0x8')]),_0x1313a7);if(!_[_0xece8('0x1f')](_0x1313a7[_0xece8('0x46')][_0xece8('0x47')])){utils['info'](util[_0xece8('0x9')]('[%s][calls][varset]\x20variable:xmd-originatecalleridnum\x20value:%s',_0x1313a7[_0xece8('0x8')],_0x1313a7[_0xece8('0x48')]));channels[_0x1313a7['uniqueid']][_0xece8('0x49')]=_0x1313a7['value'];}if(!_['isNil'](_0x1313a7[_0xece8('0x46')][_0xece8('0x4a')])){utils[_0xece8('0x19')](util['format'](_0xece8('0x4b'),_0x1313a7['uniqueid'],_0x1313a7[_0xece8('0x48')]));channels[_0x1313a7[_0xece8('0x8')]]['destination']=_0x1313a7[_0xece8('0x48')];channels[_0x1313a7[_0xece8('0x8')]][_0xece8('0x2c')]='\x22'+_0x1313a7['value']+'\x22\x20<'+_0x1313a7[_0xece8('0x48')]+'>';}if(!_[_0xece8('0x1f')](_0x1313a7['variable'][_0xece8('0x4c')])||!_[_0xece8('0x1f')](_0x1313a7[_0xece8('0x46')]['xmd-callerid'])){utils[_0xece8('0x19')](util['format'](_0xece8('0x4d'),_0x1313a7[_0xece8('0x8')],!_[_0xece8('0x1f')](_0x1313a7['variable'][_0xece8('0x4c')])?_0xece8('0x4c'):_0xece8('0x4e'),_0x1313a7[_0xece8('0x48')]));channels[_0x1313a7['uniqueid']][_0xece8('0x2c')]=_0x1313a7[_0xece8('0x48')];}if(!_[_0xece8('0x1f')](_0x1313a7[_0xece8('0x46')][_0xece8('0x4f')])||!_[_0xece8('0x1f')](_0x1313a7[_0xece8('0x46')][_0xece8('0x50')])){utils['info'](util[_0xece8('0x9')]('[%s][calls][varset]\x20variable:%s\x20value:%s',_0x1313a7[_0xece8('0x8')],!_['isNil'](_0x1313a7[_0xece8('0x46')][_0xece8('0x4f')])?'xmd-queue':'xmcs-queue',_0x1313a7[_0xece8('0x48')]));channels[_0x1313a7[_0xece8('0x8')]][_0xece8('0x51')]=_0xece8('0x52');channels[_0x1313a7['uniqueid']]['lastdata']=_0x1313a7[_0xece8('0x48')];channels[_0x1313a7[_0xece8('0x8')]][_0xece8('0xc')]=!![];}if(!_['isNil'](_0x1313a7['variable']['xmd-contactid'])){utils[_0xece8('0x19')](util['format'](_0xece8('0x53'),_0x1313a7[_0xece8('0x8')],_0x1313a7[_0xece8('0x48')]));channels[_0x1313a7[_0xece8('0x8')]][_0xece8('0x54')]=_0x1313a7['value'];}if(!_[_0xece8('0x1f')](_0x1313a7[_0xece8('0x46')][_0xece8('0x55')])){utils[_0xece8('0x19')](util[_0xece8('0x9')](_0xece8('0x56'),_0x1313a7[_0xece8('0x8')],_0x1313a7[_0xece8('0x48')]));channels[_0x1313a7[_0xece8('0x8')]][_0xece8('0x57')]=_0x1313a7[_0xece8('0x48')];}if(!_[_0xece8('0x1f')](_0x1313a7['variable'][_0xece8('0x58')])){utils[_0xece8('0x19')](util['format'](_0xece8('0x59'),_0x1313a7[_0xece8('0x8')],_0x1313a7['value']));channels[_0x1313a7['uniqueid']][_0xece8('0x5a')]=_0x1313a7['value'];}if(!_[_0xece8('0x1f')](_0x1313a7[_0xece8('0x46')][_0xece8('0x5b')])){utils['info'](util[_0xece8('0x9')](_0xece8('0x5c'),_0x1313a7[_0xece8('0x8')],_0x1313a7['value']));channels[_0x1313a7[_0xece8('0x8')]][_0xece8('0x5b')]=_0x1313a7[_0xece8('0x48')];}}}catch(_0x4f43e0){utils[_0xece8('0x1d')](util[_0xece8('0x9')](_0xece8('0x45'),_0x1313a7[_0xece8('0x8')]),_0x4f43e0);}};exports['newexten']=function(_0x575e89){try{if(!_[_0xece8('0x1f')](channels[_0x575e89[_0xece8('0x8')]])){utils[_0xece8('0x2a')](util[_0xece8('0x9')](_0xece8('0x5d'),_0x575e89['uniqueid']),_0x575e89);utils[_0xece8('0x19')](util[_0xece8('0x9')]('[%s][calls][newexten]\x20application:%s\x20appdata:%s',_0x575e89[_0xece8('0x8')],_0x575e89[_0xece8('0x5e')],_0x575e89[_0xece8('0x5f')]));if(_0x575e89[_0xece8('0x5e')][_0xece8('0x60')]()==_0xece8('0x61')&&_[_0xece8('0x62')](_0x575e89['appdata']['toLowerCase'](),'cdr')){var _0x8fa89e=_0x575e89[_0xece8('0x5f')][_0xece8('0x63')]('=');var _0x58a391=_0x8fa89e[0x0][_0xece8('0x64')](_0x8fa89e[0x0][_0xece8('0x65')]('(')+0x1,_0x8fa89e[0x0][_0xece8('0x65')](')'));var _0x238cc1=_0x8fa89e[0x1];channels[_0x575e89[_0xece8('0x8')]][_0x58a391]=_0x238cc1;}if(!_[_0xece8('0x66')](['hangup','noop',_0xece8('0x67'),_0xece8('0x61'),_0xece8('0x68')],_0x575e89[_0xece8('0x5e')][_0xece8('0x60')]())){channels[_0x575e89[_0xece8('0x8')]]['lastapplication']=_0x575e89[_0xece8('0x5e')];channels[_0x575e89[_0xece8('0x8')]][_0xece8('0x69')]=_0x575e89[_0xece8('0x5f')];}}}catch(_0xd4a71b){utils['error'](util['format'](_0xece8('0x5d'),_0x575e89[_0xece8('0x8')]),_0xd4a71b);}};
\ No newline at end of file
+var _0xef34=['mohtime','[%s][calls][musiconholdstop]\x20mohtime:%s','varset','xmd-originatecalleridnum','value','source','variable','xmd-phone','[%s][calls][varset]\x20variable:xmd-phone\x20value:%s','destination','\x22\x20<','xmd-callerid-preview','xmd-callerid','[%s][calls][varset]\x20variable:%s\x20value:%s','xmd-queue','xmcs-queue','lastapplication','Queue','queue','xmd-contactid','[%s][calls][varset]\x20variable:xmd-contactid\x20value:%s','ContactId','xmd-cdrtype','[%s][calls][varset]\x20variable:xmd-cdrtype\x20value:%s','type','outboundrouteid','[%s][calls][varset]\x20variable:outboundrouteid\x20value:%s','sipcallid','newexten','[%s][calls][newexten]','[%s][calls][newexten]\x20application:%s\x20appdata:%s','application','toLowerCase','cdr','appdata','substring','lastIndexOf','includes','noop','execif','set','gotoif','lastdata','lodash','./utils','./transfers.controller','NO\x20ANSWER','FAILED','ANSWERED','BUSY','blinds','uniqueid','transfereeuniqueid','format','[%s][calls][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','channel','membername','interface','calleridnum','lastevent','accountcode','getUserByInternal','UserId','request','CreateVoiceCallReport','newchannel','OutgoingSpoolFailed','info','[%s][calls][newchannel]\x20context:%s\x20exten:%s','exten','context','now','DOCUMENTATION','[%s][calls][newchannel]','newstate','debug','[%s][calls][newstate]\x20context:%s\x20channel:%s','isNil','systemanswertime','linkedid','channelstate','transfer','[%s][calls][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','destinationchannel','answertime','disposition','toNumber','error','[%s][calls][newstate]','hangup','[%s][calls][hangup]','callerid','calleridname','cause-txt','endtime','diffTime','starttime','localtwolinkedid','[%s][calls][attendedtransfer]','transfereechannel','secondtransfererchannel','userfield','_attended','transfertargetchannel','[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s','origtransfereruniqueid','origtransfererchannel','musiconholdstart','[%s][calls][musiconholdstart]','musiconholdstartAt','musiconholdstop','[%s][calls][musiconholdstop]'];(function(_0x5ae7ba,_0x168d47){var _0x1bbbff=function(_0x29c6b9){while(--_0x29c6b9){_0x5ae7ba['push'](_0x5ae7ba['shift']());}};_0x1bbbff(++_0x168d47);}(_0xef34,0x10b));var _0x4ef3=function(_0x5f1506,_0x5a574b){_0x5f1506=_0x5f1506-0x0;var _0xaae387=_0xef34[_0x5f1506];return _0xaae387;};'use strict';var _=require(_0x4ef3('0x0'));var util=require('util');var utils=require(_0x4ef3('0x1'));var transfers=require(_0x4ef3('0x2'));var dispositions=[_0x4ef3('0x3'),_0x4ef3('0x4'),_0x4ef3('0x4'),_0x4ef3('0x3'),_0x4ef3('0x3'),_0x4ef3('0x3'),_0x4ef3('0x5'),_0x4ef3('0x6'),_0x4ef3('0x4'),_0x4ef3('0x4'),_0x4ef3('0x4')];var channels={};function writeDB(_0x1278fd){var _0x395405;if(transfers[_0x4ef3('0x7')][_0x1278fd[_0x4ef3('0x8')]]){_0x395405=_0x1278fd[_0x4ef3('0x8')];_0x1278fd[_0x4ef3('0x8')]=transfers[_0x4ef3('0x7')][_0x1278fd['uniqueid']][_0x4ef3('0x9')];}utils['info'](util[_0x4ef3('0xa')](_0x4ef3('0xb'),_0x1278fd[_0x4ef3('0x8')],_0x1278fd[_0x4ef3('0xc')],_0x1278fd['queue'],_0x1278fd[_0x4ef3('0xd')],_0x1278fd[_0x4ef3('0xe')],_0x1278fd[_0x4ef3('0xf')],_0x1278fd['connectedlinenum'],_0x1278fd[_0x4ef3('0x10')]));if(_0x1278fd[_0x4ef3('0x11')]){utils[_0x4ef3('0x12')](_0x1278fd[_0x4ef3('0x11')])['then'](function(_0x46640e){if(_0x46640e){_0x1278fd[_0x4ef3('0x13')]=_0x46640e['id'];}utils[_0x4ef3('0x14')](_0x4ef3('0x15'),_0x1278fd);});}else{utils[_0x4ef3('0x14')](_0x4ef3('0x15'),_0x1278fd);}if(channels[_0x1278fd[_0x4ef3('0x8')]]){delete channels[_0x1278fd[_0x4ef3('0x8')]];}else if(_0x395405&&channels[_0x395405]){delete transfers['blinds'][_0x395405];delete channels[_0x395405];}}exports[_0x4ef3('0x16')]=function(_0x318c85){try{utils['debug'](util[_0x4ef3('0xa')]('[%s][calls][newchannel]',_0x318c85[_0x4ef3('0x8')]),_0x318c85);if(_0x318c85[_0x4ef3('0x8')]==_0x318c85['linkedid']&&_0x318c85[_0x4ef3('0xc')]!=_0x4ef3('0x17')){utils[_0x4ef3('0x18')](util['format'](_0x4ef3('0x19'),_0x318c85[_0x4ef3('0x8')],_0x318c85['context'],_0x318c85[_0x4ef3('0x1a')]));channels[_0x318c85[_0x4ef3('0x8')]]={'uniqueid':_0x318c85[_0x4ef3('0x8')],'accountcode':_0x318c85[_0x4ef3('0x11')],'source':_0x318c85[_0x4ef3('0xf')],'destination':_0x318c85['exten'],'destinationcontext':_0x318c85[_0x4ef3('0x1b')],'channel':_0x318c85[_0x4ef3('0xc')],'starttime':utils[_0x4ef3('0x1c')](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':_0x4ef3('0x3'),'amaflags':_0x4ef3('0x1d')};}}catch(_0x505cc9){utils['error'](util[_0x4ef3('0xa')](_0x4ef3('0x1e'),_0x318c85['uniqueid']),_0x505cc9);}};exports[_0x4ef3('0x1f')]=function(_0x286c7d){try{utils[_0x4ef3('0x20')](util[_0x4ef3('0xa')]('[%s][calls][newstate]',_0x286c7d[_0x4ef3('0x8')]),_0x286c7d);if(!_['isNil'](channels[_0x286c7d[_0x4ef3('0x8')]])&&_0x286c7d['channelstate']==0x6){utils[_0x4ef3('0x18')](util[_0x4ef3('0xa')](_0x4ef3('0x21'),_0x286c7d[_0x4ef3('0x8')],_0x286c7d[_0x4ef3('0x1b')],_0x286c7d[_0x4ef3('0xc')]));if(_[_0x4ef3('0x22')](channels[_0x286c7d[_0x4ef3('0x8')]]['systemanswertime'])){channels[_0x286c7d[_0x4ef3('0x8')]][_0x4ef3('0x23')]=utils['now']();}}else if(!_['isNil'](channels[_0x286c7d[_0x4ef3('0x24')]])&&_0x286c7d[_0x4ef3('0x25')]==0x6&&_0x286c7d['context']!=_0x4ef3('0x26')){utils[_0x4ef3('0x18')](util[_0x4ef3('0xa')](_0x4ef3('0x27'),_0x286c7d[_0x4ef3('0x8')],_0x286c7d['linkedid'],_0x286c7d[_0x4ef3('0x1b')],_0x286c7d[_0x4ef3('0xc')]));channels[_0x286c7d[_0x4ef3('0x24')]]['accountcode']=_0x286c7d['accountcode'];channels[_0x286c7d[_0x4ef3('0x24')]][_0x4ef3('0x28')]=_0x286c7d[_0x4ef3('0xc')];if(_['isNil'](channels[_0x286c7d[_0x4ef3('0x24')]][_0x4ef3('0x29')])){channels[_0x286c7d[_0x4ef3('0x24')]][_0x4ef3('0x29')]=utils[_0x4ef3('0x1c')]();}channels[_0x286c7d[_0x4ef3('0x24')]][_0x4ef3('0x2a')]=dispositions[_[_0x4ef3('0x2b')](_0x286c7d[_0x4ef3('0x25')])]||_0x4ef3('0x5');}}catch(_0x54644f){utils[_0x4ef3('0x2c')](util['format'](_0x4ef3('0x2d'),_0x286c7d['uniqueid']),_0x54644f);}};exports[_0x4ef3('0x2e')]=function(_0x1ecc6c){try{if(!_['isNil'](channels[_0x1ecc6c[_0x4ef3('0x8')]])){utils[_0x4ef3('0x20')](util['format'](_0x4ef3('0x2f'),_0x1ecc6c['uniqueid']),_0x1ecc6c);if(_[_0x4ef3('0x22')](channels[_0x1ecc6c[_0x4ef3('0x8')]][_0x4ef3('0x30')])){channels[_0x1ecc6c[_0x4ef3('0x8')]]['callerid']=_0x1ecc6c[_0x4ef3('0x31')]+'\x20<'+_0x1ecc6c[_0x4ef3('0xf')]+'>';}utils[_0x4ef3('0x18')](util[_0x4ef3('0xa')]('[%s][calls][hangup]\x20callerid:%s\x20reason:%s',_0x1ecc6c[_0x4ef3('0x8')],channels[_0x1ecc6c[_0x4ef3('0x8')]][_0x4ef3('0x30')],_0x1ecc6c[_0x4ef3('0x32')]));channels[_0x1ecc6c['uniqueid']][_0x4ef3('0x33')]=utils[_0x4ef3('0x1c')]();channels[_0x1ecc6c['uniqueid']]['duration']=utils[_0x4ef3('0x34')](channels[_0x1ecc6c['uniqueid']][_0x4ef3('0x33')],channels[_0x1ecc6c[_0x4ef3('0x8')]][_0x4ef3('0x35')]);channels[_0x1ecc6c[_0x4ef3('0x8')]]['billableseconds']=channels[_0x1ecc6c[_0x4ef3('0x8')]][_0x4ef3('0x29')]?utils['diffTime'](channels[_0x1ecc6c[_0x4ef3('0x8')]][_0x4ef3('0x33')],channels[_0x1ecc6c[_0x4ef3('0x8')]][_0x4ef3('0x29')]):0x0;writeDB(channels[_0x1ecc6c['uniqueid']]);}}catch(_0x20e382){utils['error'](util[_0x4ef3('0xa')](_0x4ef3('0x2f'),_0x1ecc6c['uniqueid']),_0x20e382);}};exports['attendedtransfer']=function(_0x145bfa){try{if(!_[_0x4ef3('0x22')](channels[_0x145bfa[_0x4ef3('0x36')]])){utils[_0x4ef3('0x20')](util[_0x4ef3('0xa')](_0x4ef3('0x37'),_0x145bfa['origtransfereruniqueid']),_0x145bfa);if(channels[_0x145bfa[_0x4ef3('0x36')]][_0x4ef3('0xc')]==_0x145bfa[_0x4ef3('0x38')]){utils[_0x4ef3('0x18')](util[_0x4ef3('0xa')]('[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s',_0x145bfa['origtransfereruniqueid'],_0x145bfa[_0x4ef3('0x36')],_0x145bfa[_0x4ef3('0x39')]));channels[_0x145bfa[_0x4ef3('0x36')]][_0x4ef3('0x28')]=_0x145bfa['secondtransfererchannel'];channels[_0x145bfa[_0x4ef3('0x36')]][_0x4ef3('0x3a')]=_0x4ef3('0x3b');}else if(channels[_0x145bfa[_0x4ef3('0x36')]]['channel']=_0x145bfa[_0x4ef3('0x3c')]){utils[_0x4ef3('0x18')](util[_0x4ef3('0xa')](_0x4ef3('0x3d'),_0x145bfa[_0x4ef3('0x3e')],_0x145bfa[_0x4ef3('0x36')],_0x145bfa[_0x4ef3('0x3f')]));channels[_0x145bfa[_0x4ef3('0x36')]][_0x4ef3('0x28')]=_0x145bfa[_0x4ef3('0x3f')];channels[_0x145bfa[_0x4ef3('0x36')]]['userfield']=_0x4ef3('0x3b');}}}catch(_0x554ccf){utils[_0x4ef3('0x2c')](util[_0x4ef3('0xa')](_0x4ef3('0x37'),_0x145bfa[_0x4ef3('0x3e')]),_0x554ccf);}};exports[_0x4ef3('0x40')]=function(_0xdb7f88){try{if(!_[_0x4ef3('0x22')](channels[_0xdb7f88[_0x4ef3('0x8')]])){utils['debug'](util[_0x4ef3('0xa')](_0x4ef3('0x41'),_0xdb7f88[_0x4ef3('0x8')]),_0xdb7f88);channels[_0xdb7f88[_0x4ef3('0x8')]]['musiconholdstartAt']=utils['now']();utils['info'](util[_0x4ef3('0xa')]('[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s',_0xdb7f88['uniqueid'],channels[_0xdb7f88[_0x4ef3('0x8')]][_0x4ef3('0x42')]));}}catch(_0x33f9fb){utils[_0x4ef3('0x2c')](util[_0x4ef3('0xa')](_0x4ef3('0x41'),_0xdb7f88[_0x4ef3('0x8')]),_0x33f9fb);}};exports[_0x4ef3('0x43')]=function(_0x1d4d7f){try{if(!_[_0x4ef3('0x22')](channels[_0x1d4d7f[_0x4ef3('0x8')]])){utils[_0x4ef3('0x20')](util[_0x4ef3('0xa')](_0x4ef3('0x44'),_0x1d4d7f[_0x4ef3('0x8')]),_0x1d4d7f);if(!_[_0x4ef3('0x22')](channels[_0x1d4d7f['uniqueid']]['musiconholdstartAt'])){channels[_0x1d4d7f['uniqueid']][_0x4ef3('0x45')]+=utils['diffTime'](utils[_0x4ef3('0x1c')](),channels[_0x1d4d7f[_0x4ef3('0x8')]][_0x4ef3('0x42')]);utils[_0x4ef3('0x18')](util['format'](_0x4ef3('0x46'),_0x1d4d7f[_0x4ef3('0x8')],channels[_0x1d4d7f[_0x4ef3('0x8')]][_0x4ef3('0x45')]));delete channels[_0x1d4d7f['uniqueid']]['musiconholdstartAt'];}}}catch(_0x2d79e4){utils['error'](util['format']('[%s][calls][musiconholdstop]',_0x1d4d7f['uniqueid']),_0x2d79e4);}};exports[_0x4ef3('0x47')]=function(_0x240fd2){try{if(!_['isNil'](channels[_0x240fd2[_0x4ef3('0x8')]])){utils[_0x4ef3('0x20')](util[_0x4ef3('0xa')]('[%s][calls][varset]',_0x240fd2[_0x4ef3('0x8')]),_0x240fd2);if(!_[_0x4ef3('0x22')](_0x240fd2['variable'][_0x4ef3('0x48')])){utils['info'](util['format']('[%s][calls][varset]\x20variable:xmd-originatecalleridnum\x20value:%s',_0x240fd2[_0x4ef3('0x8')],_0x240fd2[_0x4ef3('0x49')]));channels[_0x240fd2[_0x4ef3('0x8')]][_0x4ef3('0x4a')]=_0x240fd2[_0x4ef3('0x49')];}if(!_[_0x4ef3('0x22')](_0x240fd2[_0x4ef3('0x4b')][_0x4ef3('0x4c')])){utils[_0x4ef3('0x18')](util[_0x4ef3('0xa')](_0x4ef3('0x4d'),_0x240fd2[_0x4ef3('0x8')],_0x240fd2[_0x4ef3('0x49')]));channels[_0x240fd2[_0x4ef3('0x8')]][_0x4ef3('0x4e')]=_0x240fd2[_0x4ef3('0x49')];channels[_0x240fd2[_0x4ef3('0x8')]][_0x4ef3('0x30')]='\x22'+_0x240fd2[_0x4ef3('0x49')]+_0x4ef3('0x4f')+_0x240fd2['value']+'>';}if(!_[_0x4ef3('0x22')](_0x240fd2[_0x4ef3('0x4b')][_0x4ef3('0x50')])||!_[_0x4ef3('0x22')](_0x240fd2[_0x4ef3('0x4b')][_0x4ef3('0x51')])){utils[_0x4ef3('0x18')](util[_0x4ef3('0xa')](_0x4ef3('0x52'),_0x240fd2['uniqueid'],!_['isNil'](_0x240fd2[_0x4ef3('0x4b')][_0x4ef3('0x50')])?_0x4ef3('0x50'):_0x4ef3('0x51'),_0x240fd2[_0x4ef3('0x49')]));channels[_0x240fd2[_0x4ef3('0x8')]][_0x4ef3('0x30')]=_0x240fd2[_0x4ef3('0x49')];}if(!_[_0x4ef3('0x22')](_0x240fd2[_0x4ef3('0x4b')][_0x4ef3('0x53')])||!_[_0x4ef3('0x22')](_0x240fd2['variable']['xmcs-queue'])){utils[_0x4ef3('0x18')](util[_0x4ef3('0xa')](_0x4ef3('0x52'),_0x240fd2[_0x4ef3('0x8')],!_[_0x4ef3('0x22')](_0x240fd2['variable'][_0x4ef3('0x53')])?'xmd-queue':_0x4ef3('0x54'),_0x240fd2[_0x4ef3('0x49')]));channels[_0x240fd2[_0x4ef3('0x8')]][_0x4ef3('0x55')]=_0x4ef3('0x56');channels[_0x240fd2[_0x4ef3('0x8')]]['lastdata']=_0x240fd2[_0x4ef3('0x49')];channels[_0x240fd2[_0x4ef3('0x8')]][_0x4ef3('0x57')]=!![];}if(!_[_0x4ef3('0x22')](_0x240fd2[_0x4ef3('0x4b')][_0x4ef3('0x58')])){utils[_0x4ef3('0x18')](util[_0x4ef3('0xa')](_0x4ef3('0x59'),_0x240fd2['uniqueid'],_0x240fd2[_0x4ef3('0x49')]));channels[_0x240fd2[_0x4ef3('0x8')]][_0x4ef3('0x5a')]=_0x240fd2[_0x4ef3('0x49')];}if(!_[_0x4ef3('0x22')](_0x240fd2[_0x4ef3('0x4b')][_0x4ef3('0x5b')])){utils['info'](util[_0x4ef3('0xa')](_0x4ef3('0x5c'),_0x240fd2[_0x4ef3('0x8')],_0x240fd2[_0x4ef3('0x49')]));channels[_0x240fd2['uniqueid']][_0x4ef3('0x5d')]=_0x240fd2[_0x4ef3('0x49')];}if(!_[_0x4ef3('0x22')](_0x240fd2['variable'][_0x4ef3('0x5e')])){utils['info'](util[_0x4ef3('0xa')](_0x4ef3('0x5f'),_0x240fd2[_0x4ef3('0x8')],_0x240fd2[_0x4ef3('0x49')]));channels[_0x240fd2['uniqueid']]['routeid']=_0x240fd2[_0x4ef3('0x49')];}if(!_['isNil'](_0x240fd2['variable'][_0x4ef3('0x60')])){utils['info'](util[_0x4ef3('0xa')]('[%s][calls][varset]\x20variable:sipcallid\x20value:%s',_0x240fd2[_0x4ef3('0x8')],_0x240fd2[_0x4ef3('0x49')]));channels[_0x240fd2[_0x4ef3('0x8')]]['sipcallid']=_0x240fd2[_0x4ef3('0x49')];}}}catch(_0x56f664){utils[_0x4ef3('0x2c')](util[_0x4ef3('0xa')]('[%s][calls][varset]',_0x240fd2[_0x4ef3('0x8')]),_0x56f664);}};exports[_0x4ef3('0x61')]=function(_0x168ab5){try{if(!_['isNil'](channels[_0x168ab5[_0x4ef3('0x8')]])){utils[_0x4ef3('0x20')](util[_0x4ef3('0xa')](_0x4ef3('0x62'),_0x168ab5[_0x4ef3('0x8')]),_0x168ab5);utils[_0x4ef3('0x18')](util[_0x4ef3('0xa')](_0x4ef3('0x63'),_0x168ab5[_0x4ef3('0x8')],_0x168ab5['application'],_0x168ab5['appdata']));if(_0x168ab5[_0x4ef3('0x64')]['toLowerCase']()=='set'&&_['startsWith'](_0x168ab5['appdata'][_0x4ef3('0x65')](),_0x4ef3('0x66'))){var _0xff61c1=_0x168ab5[_0x4ef3('0x67')]['split']('=');var _0x10615f=_0xff61c1[0x0][_0x4ef3('0x68')](_0xff61c1[0x0][_0x4ef3('0x69')]('(')+0x1,_0xff61c1[0x0]['lastIndexOf'](')'));var _0x6ebfc1=_0xff61c1[0x1];channels[_0x168ab5[_0x4ef3('0x8')]][_0x10615f]=_0x6ebfc1;}if(!_[_0x4ef3('0x6a')]([_0x4ef3('0x2e'),_0x4ef3('0x6b'),_0x4ef3('0x6c'),_0x4ef3('0x6d'),_0x4ef3('0x6e')],_0x168ab5[_0x4ef3('0x64')][_0x4ef3('0x65')]())){channels[_0x168ab5[_0x4ef3('0x8')]][_0x4ef3('0x55')]=_0x168ab5[_0x4ef3('0x64')];channels[_0x168ab5['uniqueid']][_0x4ef3('0x6f')]=_0x168ab5[_0x4ef3('0x67')];}}}catch(_0x2cc71e){utils[_0x4ef3('0x2c')](util[_0x4ef3('0xa')](_0x4ef3('0x62'),_0x168ab5[_0x4ef3('0x8')]),_0x2cc71e);}};
\ No newline at end of file
index 5e8f3b8..8a13ec0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6087=['close','./utils','info','[core]\x20connected','shutdown','[core]\x20shutdown','fullybooted','error','[core]\x20error'];(function(_0x2b38a1,_0x3682a1){var _0x1f7990=function(_0x3f6695){while(--_0x3f6695){_0x2b38a1['push'](_0x2b38a1['shift']());}};_0x1f7990(++_0x3682a1);}(_0x6087,0x1cc));var _0x7608=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x6087[_0x3dd15e];return _0x231fd0;};'use strict';var utils=require(_0x7608('0x0'));exports['connect']=function(){utils[_0x7608('0x1')](_0x7608('0x2'));};exports[_0x7608('0x3')]=function(){utils[_0x7608('0x1')](_0x7608('0x4'));};exports[_0x7608('0x5')]=function(){utils[_0x7608('0x1')]('[core]\x20fullybooted');};exports[_0x7608('0x6')]=function(_0x4746c3){utils[_0x7608('0x6')](_0x7608('0x7'),_0x4746c3);};exports[_0x7608('0x8')]=function(){utils[_0x7608('0x1')]('[core]\x20close');};exports['managerevent']=function(_0x18e34f){};
\ No newline at end of file
+var _0x49d6=['error','[core]\x20error','close','./utils','connect','info','[core]\x20shutdown','fullybooted','[core]\x20fullybooted'];(function(_0x5f3fa5,_0x1ba1c5){var _0x486861=function(_0x21a635){while(--_0x21a635){_0x5f3fa5['push'](_0x5f3fa5['shift']());}};_0x486861(++_0x1ba1c5);}(_0x49d6,0x108));var _0x649d=function(_0x5692b9,_0x2a63ee){_0x5692b9=_0x5692b9-0x0;var _0x659540=_0x49d6[_0x5692b9];return _0x659540;};'use strict';var utils=require(_0x649d('0x0'));exports[_0x649d('0x1')]=function(){utils[_0x649d('0x2')]('[core]\x20connected');};exports['shutdown']=function(){utils[_0x649d('0x2')](_0x649d('0x3'));};exports[_0x649d('0x4')]=function(){utils['info'](_0x649d('0x5'));};exports[_0x649d('0x6')]=function(_0x3e8599){utils[_0x649d('0x6')](_0x649d('0x7'),_0x3e8599);};exports[_0x649d('0x8')]=function(){utils['info']('[core]\x20close');};exports['managerevent']=function(_0x25461b){};
\ No newline at end of file
index c034cd4..58b4fd7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab9d=['variable','value','error','dialbegin','[%s][dials][dialbegin]','assign','starttime','now','lastevent','[%s][dials][hangup]\x20starttime:%s\x20lastevent:called','dialend','[%s][dials][dialend]','ANSWER','connect','answertime','[%s][dials][dialend]\x20dialstatus:%s','hangup','cause-txt','complete','endtime','diffTime','billableseconds','lodash','info','format','uniqueid','channel','calleridnum','connectedlinenum','dialstatus','request','CreateVoiceDialReport','newexten','[%s][dials][newexten]\x20application:%s\x20appdata:%s','application','startsWith','appdata','toLowerCase','cdr(routeid)','split','varset','debug','[%s][dials][varset]','isNil'];(function(_0x57f500,_0x13cd92){var _0x21d097=function(_0xc4ffc8){while(--_0xc4ffc8){_0x57f500['push'](_0x57f500['shift']());}};_0x21d097(++_0x13cd92);}(_0xab9d,0xf2));var _0xdab9=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0xab9d[_0x57b54c];return _0x59cc19;};'use strict';var _=require(_0xdab9('0x0'));var util=require('util');var utils=require('./utils');var dials={};function writeDB(_0x48d886){utils[_0xdab9('0x1')](util[_0xdab9('0x2')]('[%s][dials][writeDB]\x20channel:%s\x20dialstring:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20dialstatus:%s',_0x48d886[_0xdab9('0x3')],_0x48d886[_0xdab9('0x4')],_0x48d886['dialstring'],_0x48d886[_0xdab9('0x5')],_0x48d886[_0xdab9('0x6')],_0x48d886[_0xdab9('0x7')]));utils[_0xdab9('0x8')](_0xdab9('0x9'),_0x48d886);delete dials[_0x48d886[_0xdab9('0x3')]];}exports[_0xdab9('0xa')]=function(_0x485bae){try{utils['debug'](util[_0xdab9('0x2')]('[%s][dials][newexten]',_0x485bae[_0xdab9('0x3')]),_0x485bae);utils[_0xdab9('0x1')](util[_0xdab9('0x2')](_0xdab9('0xb'),_0x485bae[_0xdab9('0x3')],_0x485bae[_0xdab9('0xc')],_0x485bae['appdata']));if(_0x485bae['application']['toLowerCase']()=='set'&&_[_0xdab9('0xd')](_0x485bae[_0xdab9('0xe')][_0xdab9('0xf')](),_0xdab9('0x10'))){var _0x1c4c2b=_0x485bae[_0xdab9('0xe')][_0xdab9('0x11')]('=');dials[_0x485bae[_0xdab9('0x3')]]={'routeId':_0x1c4c2b[0x1]};}}catch(_0x1b82a1){utils['error'](util[_0xdab9('0x2')]('[%s][dials][newexten]',_0x485bae['uniqueid']),_0x1b82a1);}};exports[_0xdab9('0x12')]=function(_0x5ba5f5){try{utils[_0xdab9('0x13')](util[_0xdab9('0x2')](_0xdab9('0x14'),_0x5ba5f5['uniqueid']),_0x5ba5f5);if(!_[_0xdab9('0x15')](_0x5ba5f5[_0xdab9('0x16')]['outboundrouteid'])){utils[_0xdab9('0x1')](util[_0xdab9('0x2')]('[%s][dials][varset]\x20variable:outboundrouteid\x20value:%s',_0x5ba5f5[_0xdab9('0x3')],_0x5ba5f5[_0xdab9('0x17')]));dials[_0x5ba5f5[_0xdab9('0x3')]]={'routeId':_0x5ba5f5['value']};}}catch(_0x1ff605){utils[_0xdab9('0x18')](util[_0xdab9('0x2')]('[%s][dials][varset]',_0x5ba5f5[_0xdab9('0x3')]),_0x1ff605);}};exports[_0xdab9('0x19')]=function(_0x30046a){try{if(!_[_0xdab9('0x15')](dials[_0x30046a[_0xdab9('0x3')]])){utils[_0xdab9('0x13')](util['format'](_0xdab9('0x1a'),_0x30046a[_0xdab9('0x3')]),_0x30046a);dials[_0x30046a[_0xdab9('0x3')]]=_[_0xdab9('0x1b')](dials[_0x30046a[_0xdab9('0x3')]],_0x30046a);dials[_0x30046a[_0xdab9('0x3')]][_0xdab9('0x1c')]=utils[_0xdab9('0x1d')]();dials[_0x30046a[_0xdab9('0x3')]][_0xdab9('0x1e')]='called';utils[_0xdab9('0x1')](util['format'](_0xdab9('0x1f'),_0x30046a[_0xdab9('0x3')],dials[_0x30046a[_0xdab9('0x3')]][_0xdab9('0x1c')]));}}catch(_0x5ce3f5){utils[_0xdab9('0x18')](util[_0xdab9('0x2')](_0xdab9('0x1a'),_0x30046a[_0xdab9('0x3')]),_0x5ce3f5);}};exports[_0xdab9('0x20')]=function(_0x25ac79){try{if(!_[_0xdab9('0x15')](dials[_0x25ac79['uniqueid']])){utils['debug'](util[_0xdab9('0x2')](_0xdab9('0x21'),_0x25ac79[_0xdab9('0x3')]),_0x25ac79);dials[_0x25ac79[_0xdab9('0x3')]][_0xdab9('0x7')]=_0x25ac79[_0xdab9('0x7')];if(_0x25ac79['dialstatus']==_0xdab9('0x22')){dials[_0x25ac79[_0xdab9('0x3')]]=_[_0xdab9('0x1b')](dials[_0x25ac79[_0xdab9('0x3')]],_0x25ac79);dials[_0x25ac79[_0xdab9('0x3')]]['answertime']=utils[_0xdab9('0x1d')]();dials[_0x25ac79['uniqueid']][_0xdab9('0x1e')]=_0xdab9('0x23');utils['info'](util[_0xdab9('0x2')]('[%s][dials][dialend]\x20dialstatus:%s\x20answertime:%s\x20lastevent:connect',_0x25ac79['uniqueid'],_0x25ac79[_0xdab9('0x7')],dials[_0x25ac79[_0xdab9('0x3')]][_0xdab9('0x24')]));}else{utils['info'](util[_0xdab9('0x2')](_0xdab9('0x25'),_0x25ac79[_0xdab9('0x3')],_0x25ac79[_0xdab9('0x7')]));}}}catch(_0x1995f9){utils[_0xdab9('0x18')](util[_0xdab9('0x2')]('[%s][dials][dialend]',_0x25ac79[_0xdab9('0x3')]),_0x1995f9);}};exports[_0xdab9('0x26')]=function(_0x506247){try{if(!_[_0xdab9('0x15')](dials[_0x506247[_0xdab9('0x3')]])){utils['debug'](util[_0xdab9('0x2')]('[%s][dials][hangup]',_0x506247['uniqueid']),_0x506247);utils[_0xdab9('0x1')](util[_0xdab9('0x2')]('[%s][dials][hangup]\x20calleridnum:%s\x20calleridname:%s\x20lastevent:complete\x20reason:%s',_0x506247['uniqueid'],_0x506247[_0xdab9('0x5')],_0x506247['calleridname'],_0x506247[_0xdab9('0x27')]));dials[_0x506247[_0xdab9('0x3')]]=_[_0xdab9('0x1b')](dials[_0x506247['uniqueid']],{'endtime':utils[_0xdab9('0x1d')](),'lastevent':_0xdab9('0x28')});dials[_0x506247[_0xdab9('0x3')]]['duration']=utils['diffTime'](dials[_0x506247[_0xdab9('0x3')]][_0xdab9('0x29')],dials[_0x506247[_0xdab9('0x3')]][_0xdab9('0x1c')]);dials[_0x506247[_0xdab9('0x3')]]['holdtime']=utils[_0xdab9('0x2a')](dials[_0x506247[_0xdab9('0x3')]][_0xdab9('0x24')]||dials[_0x506247[_0xdab9('0x3')]][_0xdab9('0x29')],dials[_0x506247[_0xdab9('0x3')]][_0xdab9('0x1c')]);dials[_0x506247[_0xdab9('0x3')]][_0xdab9('0x2b')]=dials[_0x506247[_0xdab9('0x3')]][_0xdab9('0x24')]?utils[_0xdab9('0x2a')](dials[_0x506247[_0xdab9('0x3')]][_0xdab9('0x29')],dials[_0x506247[_0xdab9('0x3')]][_0xdab9('0x24')]):0x0;writeDB(dials[_0x506247[_0xdab9('0x3')]]);}}catch(_0x436c48){utils[_0xdab9('0x18')](util[_0xdab9('0x2')]('[%s][dials][hangup]',_0x506247[_0xdab9('0x3')]),_0x436c48);}};
\ No newline at end of file
+var _0x9005=['application','appdata','toLowerCase','set','startsWith','cdr(routeid)','split','varset','debug','isNil','variable','value','error','dialbegin','[%s][dials][dialbegin]','assign','starttime','now','[%s][dials][dialend]','ANSWER','lastevent','connect','[%s][dials][dialend]\x20dialstatus:%s\x20answertime:%s\x20lastevent:connect','answertime','[%s][dials][dialend]\x20dialstatus:%s','hangup','[%s][dials][hangup]','[%s][dials][hangup]\x20calleridnum:%s\x20calleridname:%s\x20lastevent:complete\x20reason:%s','calleridnum','calleridname','complete','endtime','holdtime','diffTime','billableseconds','lodash','util','./utils','format','[%s][dials][writeDB]\x20channel:%s\x20dialstring:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20dialstatus:%s','uniqueid','dialstring','connectedlinenum','dialstatus','CreateVoiceDialReport','newexten','[%s][dials][newexten]','info','[%s][dials][newexten]\x20application:%s\x20appdata:%s'];(function(_0x3eb2af,_0x132d68){var _0x9d36cf=function(_0x2a1318){while(--_0x2a1318){_0x3eb2af['push'](_0x3eb2af['shift']());}};_0x9d36cf(++_0x132d68);}(_0x9005,0x1ab));var _0x5900=function(_0x25e509,_0x246456){_0x25e509=_0x25e509-0x0;var _0x342ab7=_0x9005[_0x25e509];return _0x342ab7;};'use strict';var _=require(_0x5900('0x0'));var util=require(_0x5900('0x1'));var utils=require(_0x5900('0x2'));var dials={};function writeDB(_0x60c5ae){utils['info'](util[_0x5900('0x3')](_0x5900('0x4'),_0x60c5ae[_0x5900('0x5')],_0x60c5ae['channel'],_0x60c5ae[_0x5900('0x6')],_0x60c5ae['calleridnum'],_0x60c5ae[_0x5900('0x7')],_0x60c5ae[_0x5900('0x8')]));utils['request'](_0x5900('0x9'),_0x60c5ae);delete dials[_0x60c5ae['uniqueid']];}exports[_0x5900('0xa')]=function(_0x5ce2ce){try{utils['debug'](util['format'](_0x5900('0xb'),_0x5ce2ce['uniqueid']),_0x5ce2ce);utils[_0x5900('0xc')](util[_0x5900('0x3')](_0x5900('0xd'),_0x5ce2ce[_0x5900('0x5')],_0x5ce2ce[_0x5900('0xe')],_0x5ce2ce[_0x5900('0xf')]));if(_0x5ce2ce['application'][_0x5900('0x10')]()==_0x5900('0x11')&&_[_0x5900('0x12')](_0x5ce2ce['appdata'][_0x5900('0x10')](),_0x5900('0x13'))){var _0x596309=_0x5ce2ce['appdata'][_0x5900('0x14')]('=');dials[_0x5ce2ce[_0x5900('0x5')]]={'routeId':_0x596309[0x1]};}}catch(_0x3f7111){utils['error'](util[_0x5900('0x3')](_0x5900('0xb'),_0x5ce2ce[_0x5900('0x5')]),_0x3f7111);}};exports[_0x5900('0x15')]=function(_0x301af7){try{utils[_0x5900('0x16')](util[_0x5900('0x3')]('[%s][dials][varset]',_0x301af7[_0x5900('0x5')]),_0x301af7);if(!_[_0x5900('0x17')](_0x301af7[_0x5900('0x18')]['outboundrouteid'])){utils[_0x5900('0xc')](util[_0x5900('0x3')]('[%s][dials][varset]\x20variable:outboundrouteid\x20value:%s',_0x301af7[_0x5900('0x5')],_0x301af7[_0x5900('0x19')]));dials[_0x301af7['uniqueid']]={'routeId':_0x301af7['value']};}}catch(_0x4ba7fe){utils[_0x5900('0x1a')](util[_0x5900('0x3')]('[%s][dials][varset]',_0x301af7[_0x5900('0x5')]),_0x4ba7fe);}};exports[_0x5900('0x1b')]=function(_0x3e6014){try{if(!_['isNil'](dials[_0x3e6014[_0x5900('0x5')]])){utils[_0x5900('0x16')](util[_0x5900('0x3')](_0x5900('0x1c'),_0x3e6014[_0x5900('0x5')]),_0x3e6014);dials[_0x3e6014[_0x5900('0x5')]]=_[_0x5900('0x1d')](dials[_0x3e6014['uniqueid']],_0x3e6014);dials[_0x3e6014['uniqueid']][_0x5900('0x1e')]=utils[_0x5900('0x1f')]();dials[_0x3e6014[_0x5900('0x5')]]['lastevent']='called';utils[_0x5900('0xc')](util['format']('[%s][dials][hangup]\x20starttime:%s\x20lastevent:called',_0x3e6014[_0x5900('0x5')],dials[_0x3e6014[_0x5900('0x5')]]['starttime']));}}catch(_0x17098b){utils[_0x5900('0x1a')](util[_0x5900('0x3')](_0x5900('0x1c'),_0x3e6014['uniqueid']),_0x17098b);}};exports['dialend']=function(_0x4e8998){try{if(!_[_0x5900('0x17')](dials[_0x4e8998[_0x5900('0x5')]])){utils[_0x5900('0x16')](util[_0x5900('0x3')](_0x5900('0x20'),_0x4e8998[_0x5900('0x5')]),_0x4e8998);dials[_0x4e8998[_0x5900('0x5')]][_0x5900('0x8')]=_0x4e8998[_0x5900('0x8')];if(_0x4e8998['dialstatus']==_0x5900('0x21')){dials[_0x4e8998[_0x5900('0x5')]]=_['assign'](dials[_0x4e8998[_0x5900('0x5')]],_0x4e8998);dials[_0x4e8998[_0x5900('0x5')]]['answertime']=utils['now']();dials[_0x4e8998[_0x5900('0x5')]][_0x5900('0x22')]=_0x5900('0x23');utils[_0x5900('0xc')](util[_0x5900('0x3')](_0x5900('0x24'),_0x4e8998[_0x5900('0x5')],_0x4e8998['dialstatus'],dials[_0x4e8998[_0x5900('0x5')]][_0x5900('0x25')]));}else{utils[_0x5900('0xc')](util[_0x5900('0x3')](_0x5900('0x26'),_0x4e8998[_0x5900('0x5')],_0x4e8998[_0x5900('0x8')]));}}}catch(_0x4197e0){utils[_0x5900('0x1a')](util['format'](_0x5900('0x20'),_0x4e8998[_0x5900('0x5')]),_0x4197e0);}};exports[_0x5900('0x27')]=function(_0x8ff545){try{if(!_[_0x5900('0x17')](dials[_0x8ff545[_0x5900('0x5')]])){utils['debug'](util['format'](_0x5900('0x28'),_0x8ff545[_0x5900('0x5')]),_0x8ff545);utils[_0x5900('0xc')](util[_0x5900('0x3')](_0x5900('0x29'),_0x8ff545[_0x5900('0x5')],_0x8ff545[_0x5900('0x2a')],_0x8ff545[_0x5900('0x2b')],_0x8ff545['cause-txt']));dials[_0x8ff545[_0x5900('0x5')]]=_[_0x5900('0x1d')](dials[_0x8ff545[_0x5900('0x5')]],{'endtime':utils['now'](),'lastevent':_0x5900('0x2c')});dials[_0x8ff545[_0x5900('0x5')]]['duration']=utils['diffTime'](dials[_0x8ff545[_0x5900('0x5')]][_0x5900('0x2d')],dials[_0x8ff545[_0x5900('0x5')]]['starttime']);dials[_0x8ff545[_0x5900('0x5')]][_0x5900('0x2e')]=utils[_0x5900('0x2f')](dials[_0x8ff545[_0x5900('0x5')]][_0x5900('0x25')]||dials[_0x8ff545[_0x5900('0x5')]][_0x5900('0x2d')],dials[_0x8ff545[_0x5900('0x5')]][_0x5900('0x1e')]);dials[_0x8ff545[_0x5900('0x5')]][_0x5900('0x30')]=dials[_0x8ff545['uniqueid']]['answertime']?utils[_0x5900('0x2f')](dials[_0x8ff545[_0x5900('0x5')]][_0x5900('0x2d')],dials[_0x8ff545[_0x5900('0x5')]][_0x5900('0x25')]):0x0;writeDB(dials[_0x8ff545[_0x5900('0x5')]]);}}catch(_0x46497b){utils[_0x5900('0x1a')](util[_0x5900('0x3')]('[%s][dials][hangup]',_0x8ff545[_0x5900('0x5')]),_0x46497b);}};
\ No newline at end of file
index ad4e19f..683bdab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9896=['shutdown','fullybooted','error','close','managerevent','debug','format','[%s][index][devicestatechange]','device','devicestatechange','agentcalled','[%s][index][agentcalled]','uniqueid','agentringnoanswer','[%s][index][agentringnoanswer]','agentconnect','[%s][index][agentconnect]','agentcomplete','[%s][index][agentcomplete]','queuecallerabandon','[%s][index][queuecallerabandon]','queuecallerjoin','queuecallerleave','[%s][index][queuecallerleave]','musiconholdstart','[%s][index][musiconholdstart]','[%s][index][musiconholdstop]','musiconholdstop','[%s][index][newstate]','newstate','hangup','[%s][index][hangup]','cdr','[%s][index][cdr]','blindtransfer','[%s][index][attendedtransfer]','origtransfereruniqueid','attendedtransfer','[%s][index][varset]','varset','newexten','[%s][index][newexten]','newchannel','[%s][index][newchannel]','dialbegin','[%s][index][dialbegin]','[%s]dialbegin','[%s][index][dialend]','asterisk-manager','../../config/environment','./utils','asterisk','port','password','keepConnected','xdr','XDR\x20DISABLED','./agents.controller','./calls.controller','./queues.controller','./recordings.controller','./dials.controller','./transfers.controller','./core.controller','connect'];(function(_0x3d89ce,_0x5d5e4b){var _0x494a2e=function(_0x1222b8){while(--_0x1222b8){_0x3d89ce['push'](_0x3d89ce['shift']());}};_0x494a2e(++_0x5d5e4b);}(_0x9896,0x71));var _0x6989=function(_0x695660,_0x16e421){_0x695660=_0x695660-0x0;var _0x9d1efb=_0x9896[_0x695660];return _0x9d1efb;};var AsteriskManager=require(_0x6989('0x0'));var config=require(_0x6989('0x1'));var utils=require(_0x6989('0x2'));var util=require('util');var ami=new AsteriskManager(config[_0x6989('0x3')][_0x6989('0x4')],config['asterisk']['ip'],config[_0x6989('0x3')]['username'],config[_0x6989('0x3')][_0x6989('0x5')],!![]);ami[_0x6989('0x6')]();if(config[_0x6989('0x7')]&&config[_0x6989('0x7')]['disabled']){utils['info'](_0x6989('0x8'));}else{var agents=require(_0x6989('0x9'));var calls=require(_0x6989('0xa'));var queues=require(_0x6989('0xb'));var recordings=require(_0x6989('0xc'));var members=require('./members.controller');var dials=require(_0x6989('0xd'));var transfers=require(_0x6989('0xe'));var core=require(_0x6989('0xf'));ami['on'](_0x6989('0x10'),core[_0x6989('0x10')]);ami['on'](_0x6989('0x11'),core['shutdown']);ami['on']('fullybooted',core[_0x6989('0x12')]);ami['on'](_0x6989('0x13'),core[_0x6989('0x13')]);ami['on'](_0x6989('0x14'),core[_0x6989('0x14')]);ami['on'](_0x6989('0x15'),core[_0x6989('0x15')]);ami['on']('devicestatechange',function(_0x3b6f4a){try{utils[_0x6989('0x16')](util[_0x6989('0x17')](_0x6989('0x18'),_0x3b6f4a[_0x6989('0x19')]),_0x3b6f4a);members[_0x6989('0x1a')](_0x3b6f4a);}catch(_0x28d2f6){utils[_0x6989('0x13')](util[_0x6989('0x17')](_0x6989('0x18'),_0x3b6f4a[_0x6989('0x19')]),_0x28d2f6);}});ami['on'](_0x6989('0x1b'),function(_0x739fa8){try{utils[_0x6989('0x16')](util[_0x6989('0x17')](_0x6989('0x1c'),_0x739fa8[_0x6989('0x1d')]),_0x739fa8);agents[_0x6989('0x1b')](_0x739fa8);}catch(_0x1fb97e){utils['error'](util[_0x6989('0x17')](_0x6989('0x1c'),_0x739fa8[_0x6989('0x1d')]),_0x1fb97e);}});ami['on'](_0x6989('0x1e'),function(_0x55d598){try{utils['debug'](util[_0x6989('0x17')](_0x6989('0x1f'),_0x55d598[_0x6989('0x1d')]),_0x55d598);agents[_0x6989('0x1e')](_0x55d598);}catch(_0x278636){utils[_0x6989('0x13')](util['format'](_0x6989('0x1f'),_0x55d598[_0x6989('0x1d')]),_0x278636);}});ami['on'](_0x6989('0x20'),function(_0x22808b){try{utils[_0x6989('0x16')](util['format'](_0x6989('0x21'),_0x22808b['uniqueid']),_0x22808b);agents[_0x6989('0x20')](_0x22808b);queues['agentconnect'](_0x22808b);}catch(_0x18c173){utils[_0x6989('0x13')](util['format'](_0x6989('0x21'),_0x22808b[_0x6989('0x1d')]),_0x18c173);}});ami['on'](_0x6989('0x22'),function(_0x1235ea){try{utils['debug'](util[_0x6989('0x17')]('[%s][index][agentcomplete]',_0x1235ea[_0x6989('0x1d')]),_0x1235ea);agents[_0x6989('0x22')](_0x1235ea);queues[_0x6989('0x22')](_0x1235ea);members['agentcomplete'](_0x1235ea);}catch(_0x593742){utils['error'](util[_0x6989('0x17')](_0x6989('0x23'),_0x1235ea[_0x6989('0x1d')]),_0x593742);}});ami['on'](_0x6989('0x24'),function(_0x57a60b){try{utils[_0x6989('0x16')](util[_0x6989('0x17')](_0x6989('0x25'),_0x57a60b[_0x6989('0x1d')]),_0x57a60b);agents['queuecallerabandon'](_0x57a60b);queues[_0x6989('0x24')](_0x57a60b);}catch(_0x4398b9){utils[_0x6989('0x13')](util[_0x6989('0x17')](_0x6989('0x25'),_0x57a60b['uniqueid']),_0x4398b9);}});ami['on']('queuecallerjoin',function(_0x5e43d9){try{utils['debug'](util[_0x6989('0x17')]('[%s][index][queuecallerjoin]',_0x5e43d9[_0x6989('0x1d')]),_0x5e43d9);queues['queuecallerjoin'](_0x5e43d9);recordings[_0x6989('0x26')](_0x5e43d9);}catch(_0x4f0a42){utils[_0x6989('0x13')](util[_0x6989('0x17')]('[%s][index][queuecallerjoin]',_0x5e43d9['uniqueid']),_0x4f0a42);}});ami['on'](_0x6989('0x27'),function(_0x45517d){try{utils['debug'](util[_0x6989('0x17')](_0x6989('0x28'),_0x45517d[_0x6989('0x1d')]),_0x45517d);queues[_0x6989('0x27')](_0x45517d);}catch(_0x450586){utils[_0x6989('0x13')](util[_0x6989('0x17')](_0x6989('0x28'),_0x45517d[_0x6989('0x1d')]),_0x450586);}});ami['on'](_0x6989('0x29'),function(_0x2cd8d3){try{utils['debug'](util[_0x6989('0x17')]('[%s][index][musiconholdstart]',_0x2cd8d3[_0x6989('0x1d')]),_0x2cd8d3);queues[_0x6989('0x29')](_0x2cd8d3);calls['musiconholdstart'](_0x2cd8d3);}catch(_0x273e21){utils['error'](util[_0x6989('0x17')](_0x6989('0x2a'),_0x2cd8d3[_0x6989('0x1d')]),_0x273e21);}});ami['on']('musiconholdstop',function(_0x4c4793){try{utils[_0x6989('0x16')](util[_0x6989('0x17')](_0x6989('0x2b'),_0x4c4793[_0x6989('0x1d')]),_0x4c4793);queues[_0x6989('0x2c')](_0x4c4793);calls['musiconholdstop'](_0x4c4793);}catch(_0x408b46){utils[_0x6989('0x13')](util[_0x6989('0x17')](_0x6989('0x2b'),_0x4c4793[_0x6989('0x1d')]),_0x408b46);}});ami['on']('newstate',function(_0x449f88){try{utils[_0x6989('0x16')](util[_0x6989('0x17')](_0x6989('0x2d'),_0x449f88[_0x6989('0x1d')]),_0x449f88);calls[_0x6989('0x2e')](_0x449f88);recordings[_0x6989('0x2e')](_0x449f88);}catch(_0x18b46a){utils[_0x6989('0x13')](util[_0x6989('0x17')](_0x6989('0x2d'),_0x449f88[_0x6989('0x1d')]),_0x18b46a);}});ami['on'](_0x6989('0x2f'),function(_0x5ff2b4){try{utils['debug'](util[_0x6989('0x17')](_0x6989('0x30'),_0x5ff2b4['uniqueid']),_0x5ff2b4);calls[_0x6989('0x2f')](_0x5ff2b4);recordings[_0x6989('0x2f')](_0x5ff2b4);dials['hangup'](_0x5ff2b4);agents[_0x6989('0x2f')](_0x5ff2b4);queues['hangup'](_0x5ff2b4);}catch(_0x1a7855){utils[_0x6989('0x13')](util['format'](_0x6989('0x30'),_0x5ff2b4[_0x6989('0x1d')]),_0x1a7855);}});ami['on'](_0x6989('0x31'),function(_0x3af86e){try{utils[_0x6989('0x16')](util['format'](_0x6989('0x32'),_0x3af86e[_0x6989('0x1d')]),_0x3af86e);members[_0x6989('0x31')](_0x3af86e);}catch(_0x43f4c5){utils[_0x6989('0x13')](util[_0x6989('0x17')](_0x6989('0x32'),_0x3af86e[_0x6989('0x1d')]),_0x43f4c5);}});ami['on'](_0x6989('0x33'),function(_0x5585c8){try{utils[_0x6989('0x16')](util[_0x6989('0x17')]('[%s][index][blindtransfer]',_0x5585c8[_0x6989('0x1d')]),_0x5585c8);queues[_0x6989('0x33')](_0x5585c8);agents[_0x6989('0x33')](_0x5585c8);transfers['blindtransfer'](_0x5585c8);}catch(_0x17f67c){utils[_0x6989('0x13')](util[_0x6989('0x17')]('[%s][index][blindtransfer]',_0x5585c8[_0x6989('0x1d')]),_0x17f67c);}});ami['on']('attendedtransfer',function(_0x364f2d){try{utils[_0x6989('0x16')](util[_0x6989('0x17')](_0x6989('0x34'),_0x364f2d[_0x6989('0x35')]),_0x364f2d);queues[_0x6989('0x36')](_0x364f2d);transfers[_0x6989('0x36')](_0x364f2d);agents[_0x6989('0x36')](_0x364f2d);calls['attendedtransfer'](_0x364f2d);}catch(_0x2752f6){utils[_0x6989('0x13')](util[_0x6989('0x17')]('[%s][index][attendedtransfer]',_0x364f2d[_0x6989('0x35')]),_0x2752f6);}});ami['on']('varset',function(_0x4f3051){try{utils[_0x6989('0x16')](util[_0x6989('0x17')](_0x6989('0x37'),_0x4f3051['uniqueid']),_0x4f3051);queues[_0x6989('0x38')](_0x4f3051);recordings['varset'](_0x4f3051);calls[_0x6989('0x38')](_0x4f3051);dials[_0x6989('0x38')](_0x4f3051);}catch(_0x1b15a0){utils['error'](util[_0x6989('0x17')](_0x6989('0x37'),_0x4f3051[_0x6989('0x1d')]),_0x1b15a0);}});ami['on'](_0x6989('0x39'),function(_0x55090c){try{utils['debug'](util['format'](_0x6989('0x3a'),_0x55090c[_0x6989('0x1d')]),_0x55090c);calls[_0x6989('0x39')](_0x55090c);recordings[_0x6989('0x39')](_0x55090c);dials[_0x6989('0x39')](_0x55090c);}catch(_0x3d950e){utils[_0x6989('0x13')](util['format'](_0x6989('0x3a'),_0x55090c['uniqueid']),_0x3d950e);}});ami['on'](_0x6989('0x3b'),function(_0x445b97){try{utils[_0x6989('0x16')](util[_0x6989('0x17')](_0x6989('0x3c'),_0x445b97[_0x6989('0x1d')]),_0x445b97);calls[_0x6989('0x3b')](_0x445b97);recordings[_0x6989('0x3b')](_0x445b97);}catch(_0x1b2d74){utils[_0x6989('0x13')](util[_0x6989('0x17')]('[%s][index][newchannel]',_0x445b97['uniqueid']),_0x1b2d74);}});ami['on'](_0x6989('0x3d'),function(_0x466512){try{utils[_0x6989('0x16')](util[_0x6989('0x17')](_0x6989('0x3e'),_0x466512[_0x6989('0x1d')]),_0x466512);dials[_0x6989('0x3d')](_0x466512);}catch(_0x545e34){utils[_0x6989('0x13')](util[_0x6989('0x17')](_0x6989('0x3f'),_0x466512[_0x6989('0x1d')]),_0x545e34);}});ami['on']('dialend',function(_0x55b06c){try{utils[_0x6989('0x16')](util['format'](_0x6989('0x40'),_0x55b06c[_0x6989('0x1d')]),_0x55b06c);dials['dialend'](_0x55b06c);}catch(_0x47afe0){utils[_0x6989('0x13')](util[_0x6989('0x17')]('[%s][index][dialend]',_0x55b06c[_0x6989('0x1d')]),_0x47afe0);}});}
\ No newline at end of file
+var _0xcc20=['device','[%s][index][agentcalled]','uniqueid','agentringnoanswer','[%s][index][agentringnoanswer]','agentconnect','[%s][index][agentconnect]','[%s][index][agentcomplete]','agentcomplete','queuecallerabandon','[%s][index][queuecallerabandon]','queuecallerjoin','[%s][index][queuecallerjoin]','[%s][index][queuecallerleave]','queuecallerleave','musiconholdstart','[%s][index][musiconholdstart]','musiconholdstop','[%s][index][musiconholdstop]','newstate','[%s][index][newstate]','hangup','[%s][index][hangup]','cdr','[%s][index][cdr]','[%s][index][blindtransfer]','blindtransfer','attendedtransfer','[%s][index][attendedtransfer]','origtransfereruniqueid','varset','[%s][index][varset]','newexten','[%s][index][newexten]','newchannel','[%s][index][newchannel]','dialbegin','[%s][index][dialbegin]','dialend','[%s][index][dialend]','asterisk-manager','../../config/environment','./utils','asterisk','port','username','keepConnected','xdr','disabled','info','XDR\x20DISABLED','./agents.controller','./calls.controller','./queues.controller','./recordings.controller','./transfers.controller','./core.controller','connect','fullybooted','error','close','devicestatechange','debug','format','[%s][index][devicestatechange]'];(function(_0x39b51c,_0x40010d){var _0x146312=function(_0x4ea93b){while(--_0x4ea93b){_0x39b51c['push'](_0x39b51c['shift']());}};_0x146312(++_0x40010d);}(_0xcc20,0x1ae));var _0x0cc2=function(_0x17c292,_0x16d83a){_0x17c292=_0x17c292-0x0;var _0x407705=_0xcc20[_0x17c292];return _0x407705;};var AsteriskManager=require(_0x0cc2('0x0'));var config=require(_0x0cc2('0x1'));var utils=require(_0x0cc2('0x2'));var util=require('util');var ami=new AsteriskManager(config[_0x0cc2('0x3')][_0x0cc2('0x4')],config[_0x0cc2('0x3')]['ip'],config[_0x0cc2('0x3')][_0x0cc2('0x5')],config[_0x0cc2('0x3')]['password'],!![]);ami[_0x0cc2('0x6')]();if(config[_0x0cc2('0x7')]&&config[_0x0cc2('0x7')][_0x0cc2('0x8')]){utils[_0x0cc2('0x9')](_0x0cc2('0xa'));}else{var agents=require(_0x0cc2('0xb'));var calls=require(_0x0cc2('0xc'));var queues=require(_0x0cc2('0xd'));var recordings=require(_0x0cc2('0xe'));var members=require('./members.controller');var dials=require('./dials.controller');var transfers=require(_0x0cc2('0xf'));var core=require(_0x0cc2('0x10'));ami['on'](_0x0cc2('0x11'),core['connect']);ami['on']('shutdown',core['shutdown']);ami['on'](_0x0cc2('0x12'),core[_0x0cc2('0x12')]);ami['on'](_0x0cc2('0x13'),core['error']);ami['on'](_0x0cc2('0x14'),core[_0x0cc2('0x14')]);ami['on']('managerevent',core['managerevent']);ami['on'](_0x0cc2('0x15'),function(_0x3f360e){try{utils[_0x0cc2('0x16')](util[_0x0cc2('0x17')](_0x0cc2('0x18'),_0x3f360e[_0x0cc2('0x19')]),_0x3f360e);members[_0x0cc2('0x15')](_0x3f360e);}catch(_0x5aeaee){utils[_0x0cc2('0x13')](util[_0x0cc2('0x17')](_0x0cc2('0x18'),_0x3f360e[_0x0cc2('0x19')]),_0x5aeaee);}});ami['on']('agentcalled',function(_0x14ef50){try{utils[_0x0cc2('0x16')](util[_0x0cc2('0x17')](_0x0cc2('0x1a'),_0x14ef50[_0x0cc2('0x1b')]),_0x14ef50);agents['agentcalled'](_0x14ef50);}catch(_0x3fa73e){utils['error'](util[_0x0cc2('0x17')]('[%s][index][agentcalled]',_0x14ef50[_0x0cc2('0x1b')]),_0x3fa73e);}});ami['on'](_0x0cc2('0x1c'),function(_0x15d653){try{utils[_0x0cc2('0x16')](util[_0x0cc2('0x17')](_0x0cc2('0x1d'),_0x15d653[_0x0cc2('0x1b')]),_0x15d653);agents[_0x0cc2('0x1c')](_0x15d653);}catch(_0x27960a){utils['error'](util[_0x0cc2('0x17')](_0x0cc2('0x1d'),_0x15d653[_0x0cc2('0x1b')]),_0x27960a);}});ami['on'](_0x0cc2('0x1e'),function(_0x1b1fea){try{utils[_0x0cc2('0x16')](util[_0x0cc2('0x17')](_0x0cc2('0x1f'),_0x1b1fea[_0x0cc2('0x1b')]),_0x1b1fea);agents[_0x0cc2('0x1e')](_0x1b1fea);queues[_0x0cc2('0x1e')](_0x1b1fea);}catch(_0x37bd4b){utils[_0x0cc2('0x13')](util[_0x0cc2('0x17')]('[%s][index][agentconnect]',_0x1b1fea[_0x0cc2('0x1b')]),_0x37bd4b);}});ami['on']('agentcomplete',function(_0x58e8a5){try{utils[_0x0cc2('0x16')](util[_0x0cc2('0x17')](_0x0cc2('0x20'),_0x58e8a5[_0x0cc2('0x1b')]),_0x58e8a5);agents[_0x0cc2('0x21')](_0x58e8a5);queues[_0x0cc2('0x21')](_0x58e8a5);members[_0x0cc2('0x21')](_0x58e8a5);}catch(_0x4d7330){utils[_0x0cc2('0x13')](util[_0x0cc2('0x17')](_0x0cc2('0x20'),_0x58e8a5[_0x0cc2('0x1b')]),_0x4d7330);}});ami['on'](_0x0cc2('0x22'),function(_0x1692ab){try{utils['debug'](util[_0x0cc2('0x17')](_0x0cc2('0x23'),_0x1692ab['uniqueid']),_0x1692ab);agents[_0x0cc2('0x22')](_0x1692ab);queues[_0x0cc2('0x22')](_0x1692ab);}catch(_0x68dce9){utils['error'](util[_0x0cc2('0x17')](_0x0cc2('0x23'),_0x1692ab[_0x0cc2('0x1b')]),_0x68dce9);}});ami['on'](_0x0cc2('0x24'),function(_0x201abd){try{utils['debug'](util[_0x0cc2('0x17')](_0x0cc2('0x25'),_0x201abd[_0x0cc2('0x1b')]),_0x201abd);queues[_0x0cc2('0x24')](_0x201abd);recordings[_0x0cc2('0x24')](_0x201abd);}catch(_0x282cf9){utils[_0x0cc2('0x13')](util[_0x0cc2('0x17')]('[%s][index][queuecallerjoin]',_0x201abd[_0x0cc2('0x1b')]),_0x282cf9);}});ami['on']('queuecallerleave',function(_0x14ffb0){try{utils[_0x0cc2('0x16')](util[_0x0cc2('0x17')](_0x0cc2('0x26'),_0x14ffb0[_0x0cc2('0x1b')]),_0x14ffb0);queues[_0x0cc2('0x27')](_0x14ffb0);}catch(_0x378fe1){utils[_0x0cc2('0x13')](util[_0x0cc2('0x17')](_0x0cc2('0x26'),_0x14ffb0['uniqueid']),_0x378fe1);}});ami['on'](_0x0cc2('0x28'),function(_0xb039da){try{utils[_0x0cc2('0x16')](util[_0x0cc2('0x17')](_0x0cc2('0x29'),_0xb039da[_0x0cc2('0x1b')]),_0xb039da);queues[_0x0cc2('0x28')](_0xb039da);calls['musiconholdstart'](_0xb039da);}catch(_0x3c881c){utils['error'](util[_0x0cc2('0x17')](_0x0cc2('0x29'),_0xb039da['uniqueid']),_0x3c881c);}});ami['on'](_0x0cc2('0x2a'),function(_0x5b1246){try{utils[_0x0cc2('0x16')](util[_0x0cc2('0x17')](_0x0cc2('0x2b'),_0x5b1246[_0x0cc2('0x1b')]),_0x5b1246);queues[_0x0cc2('0x2a')](_0x5b1246);calls[_0x0cc2('0x2a')](_0x5b1246);}catch(_0x2d4d45){utils[_0x0cc2('0x13')](util[_0x0cc2('0x17')](_0x0cc2('0x2b'),_0x5b1246[_0x0cc2('0x1b')]),_0x2d4d45);}});ami['on'](_0x0cc2('0x2c'),function(_0x5f1f2e){try{utils[_0x0cc2('0x16')](util[_0x0cc2('0x17')](_0x0cc2('0x2d'),_0x5f1f2e['uniqueid']),_0x5f1f2e);calls['newstate'](_0x5f1f2e);recordings[_0x0cc2('0x2c')](_0x5f1f2e);}catch(_0x396121){utils[_0x0cc2('0x13')](util[_0x0cc2('0x17')](_0x0cc2('0x2d'),_0x5f1f2e[_0x0cc2('0x1b')]),_0x396121);}});ami['on'](_0x0cc2('0x2e'),function(_0x166907){try{utils[_0x0cc2('0x16')](util[_0x0cc2('0x17')](_0x0cc2('0x2f'),_0x166907[_0x0cc2('0x1b')]),_0x166907);calls[_0x0cc2('0x2e')](_0x166907);recordings[_0x0cc2('0x2e')](_0x166907);dials['hangup'](_0x166907);agents['hangup'](_0x166907);queues[_0x0cc2('0x2e')](_0x166907);}catch(_0x2cba00){utils[_0x0cc2('0x13')](util[_0x0cc2('0x17')](_0x0cc2('0x2f'),_0x166907[_0x0cc2('0x1b')]),_0x2cba00);}});ami['on'](_0x0cc2('0x30'),function(_0x2dc474){try{utils[_0x0cc2('0x16')](util[_0x0cc2('0x17')](_0x0cc2('0x31'),_0x2dc474[_0x0cc2('0x1b')]),_0x2dc474);members[_0x0cc2('0x30')](_0x2dc474);}catch(_0x399daa){utils[_0x0cc2('0x13')](util[_0x0cc2('0x17')](_0x0cc2('0x31'),_0x2dc474['uniqueid']),_0x399daa);}});ami['on']('blindtransfer',function(_0x20ab63){try{utils[_0x0cc2('0x16')](util[_0x0cc2('0x17')](_0x0cc2('0x32'),_0x20ab63['uniqueid']),_0x20ab63);queues[_0x0cc2('0x33')](_0x20ab63);agents[_0x0cc2('0x33')](_0x20ab63);transfers[_0x0cc2('0x33')](_0x20ab63);}catch(_0x48f0ec){utils[_0x0cc2('0x13')](util[_0x0cc2('0x17')](_0x0cc2('0x32'),_0x20ab63[_0x0cc2('0x1b')]),_0x48f0ec);}});ami['on'](_0x0cc2('0x34'),function(_0xecab50){try{utils['debug'](util[_0x0cc2('0x17')](_0x0cc2('0x35'),_0xecab50[_0x0cc2('0x36')]),_0xecab50);queues[_0x0cc2('0x34')](_0xecab50);transfers[_0x0cc2('0x34')](_0xecab50);agents[_0x0cc2('0x34')](_0xecab50);calls[_0x0cc2('0x34')](_0xecab50);}catch(_0x14e1d9){utils[_0x0cc2('0x13')](util[_0x0cc2('0x17')](_0x0cc2('0x35'),_0xecab50[_0x0cc2('0x36')]),_0x14e1d9);}});ami['on'](_0x0cc2('0x37'),function(_0x2931eb){try{utils[_0x0cc2('0x16')](util[_0x0cc2('0x17')]('[%s][index][varset]',_0x2931eb[_0x0cc2('0x1b')]),_0x2931eb);queues['varset'](_0x2931eb);recordings['varset'](_0x2931eb);calls['varset'](_0x2931eb);dials[_0x0cc2('0x37')](_0x2931eb);}catch(_0x56ab33){utils[_0x0cc2('0x13')](util['format'](_0x0cc2('0x38'),_0x2931eb[_0x0cc2('0x1b')]),_0x56ab33);}});ami['on'](_0x0cc2('0x39'),function(_0x5b27ec){try{utils['debug'](util['format'](_0x0cc2('0x3a'),_0x5b27ec[_0x0cc2('0x1b')]),_0x5b27ec);calls[_0x0cc2('0x39')](_0x5b27ec);recordings[_0x0cc2('0x39')](_0x5b27ec);dials[_0x0cc2('0x39')](_0x5b27ec);}catch(_0x67127a){utils[_0x0cc2('0x13')](util[_0x0cc2('0x17')](_0x0cc2('0x3a'),_0x5b27ec[_0x0cc2('0x1b')]),_0x67127a);}});ami['on'](_0x0cc2('0x3b'),function(_0x1ed914){try{utils['debug'](util[_0x0cc2('0x17')](_0x0cc2('0x3c'),_0x1ed914[_0x0cc2('0x1b')]),_0x1ed914);calls[_0x0cc2('0x3b')](_0x1ed914);recordings[_0x0cc2('0x3b')](_0x1ed914);}catch(_0x145d68){utils[_0x0cc2('0x13')](util[_0x0cc2('0x17')](_0x0cc2('0x3c'),_0x1ed914['uniqueid']),_0x145d68);}});ami['on'](_0x0cc2('0x3d'),function(_0xe0aa06){try{utils['debug'](util[_0x0cc2('0x17')](_0x0cc2('0x3e'),_0xe0aa06[_0x0cc2('0x1b')]),_0xe0aa06);dials[_0x0cc2('0x3d')](_0xe0aa06);}catch(_0x299da1){utils['error'](util['format']('[%s]dialbegin',_0xe0aa06[_0x0cc2('0x1b')]),_0x299da1);}});ami['on'](_0x0cc2('0x3f'),function(_0xe6f07){try{utils[_0x0cc2('0x16')](util[_0x0cc2('0x17')](_0x0cc2('0x40'),_0xe6f07['uniqueid']),_0xe6f07);dials[_0x0cc2('0x3f')](_0xe6f07);}catch(_0x4036c4){utils[_0x0cc2('0x13')](util['format'](_0x0cc2('0x40'),_0xe6f07[_0x0cc2('0x1b')]),_0x4036c4);}});}
\ No newline at end of file
index 2c3d19d..ee43d86 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c2c=['./utils','Local/_attended@transfer','Queue:','info','format','[%s][members][writeDB]\x20interface:%s\x20channel:%s\x20data2:%s\x20agent:%s\x20type:%s','channel','data2','membername','type','interface','then','name','internal','CreateMemberReport','split','request','catch','error','uniqueid','debug','[%s][members][devicestatechange]','device','[%s][members][devicestatechange]\x20state:%s\x20interface:%s','state','INUSE','BUSY','voice','TALKING','now','agent','NOT_INUSE','isNil','exitAt','enterAt','agentcomplete','[%s][members][agentcomplete]','[%s][members][agentcomplete]\x20interface:%s\x20queue:%s','queue','assign','cdr','[%s][members][cdr]','data1','source','data3','destination','[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s','destinationchannel','util'];(function(_0x105ada,_0xba1364){var _0x12e3ad=function(_0x212694){while(--_0x212694){_0x105ada['push'](_0x105ada['shift']());}};_0x12e3ad(++_0xba1364);}(_0x8c2c,0x92));var _0xc8c2=function(_0x27a98e,_0x3391e5){_0x27a98e=_0x27a98e-0x0;var _0x55c91c=_0x8c2c[_0x27a98e];return _0x55c91c;};'use strict';var _=require('lodash');var util=require(_0xc8c2('0x0'));var utils=require(_0xc8c2('0x1'));var members={};var exclude=[_0xc8c2('0x2'),_0xc8c2('0x3')];function writeDB(_0x149d48){utils[_0xc8c2('0x4')](util[_0xc8c2('0x5')](_0xc8c2('0x6'),_0x149d48['uniqueid'],_0x149d48['interface'],_0x149d48[_0xc8c2('0x7')],_0x149d48[_0xc8c2('0x8')],_0x149d48[_0xc8c2('0x9')],_0x149d48[_0xc8c2('0xa')]));if(_0x149d48[_0xc8c2('0xb')]){utils['getUserByInterface'](_0x149d48['interface'])[_0xc8c2('0xc')](function(_0x49c6b6){if(_0x49c6b6){_0x149d48[_0xc8c2('0x9')]=_0x49c6b6[_0xc8c2('0xd')];_0x149d48['internal']=_0x49c6b6[_0xc8c2('0xe')];utils['request'](_0xc8c2('0xf'),_0x149d48);}else{utils['getUserByName'](_0x149d48[_0xc8c2('0xb')][_0xc8c2('0x10')]('/')[0x1])[_0xc8c2('0xc')](function(_0x13384b){if(_0x13384b){_0x149d48[_0xc8c2('0x9')]=_0x13384b[_0xc8c2('0xd')];_0x149d48[_0xc8c2('0xe')]=_0x13384b[_0xc8c2('0xe')];utils[_0xc8c2('0x11')]('CreateMemberReport',_0x149d48);}});}})[_0xc8c2('0x12')](function(_0x37a3a1){utils[_0xc8c2('0x13')](util['format']('[%s][members][writeDB]',_0x149d48[_0xc8c2('0x14')]),_0x37a3a1);});}delete members[_0x149d48[_0xc8c2('0xb')]];}function startsWith(_0x5f24a2,_0x39de29){return _['some'](_0x5f24a2,function(_0x383910){return _['startsWith'](_0x39de29,_0x383910);});}exports['devicestatechange']=function(_0x529c57){try{utils[_0xc8c2('0x15')](util[_0xc8c2('0x5')](_0xc8c2('0x16'),members[_0x529c57[_0xc8c2('0x17')]]?members[_0x529c57[_0xc8c2('0x17')]][_0xc8c2('0x14')]:_0x529c57[_0xc8c2('0x17')]),_0x529c57);utils[_0xc8c2('0x4')](util['format'](_0xc8c2('0x18'),members[_0x529c57[_0xc8c2('0x17')]]?members[_0x529c57['device']][_0xc8c2('0x14')]:_0x529c57[_0xc8c2('0x17')],_0x529c57[_0xc8c2('0x19')],_0x529c57[_0xc8c2('0x17')]));switch(_0x529c57[_0xc8c2('0x19')]){case _0xc8c2('0x1a'):case _0xc8c2('0x1b'):if(!startsWith(exclude,_0x529c57[_0xc8c2('0x17')])){members[_0x529c57[_0xc8c2('0x17')]]={'channel':_0xc8c2('0x1c'),'interface':_0x529c57['device'],'type':_0xc8c2('0x1d'),'enterAt':utils[_0xc8c2('0x1e')](),'role':_0xc8c2('0x1f')};}break;case _0xc8c2('0x20'):if(!_[_0xc8c2('0x21')](members[_0x529c57[_0xc8c2('0x17')]])){members[_0x529c57[_0xc8c2('0x17')]][_0xc8c2('0x22')]=utils[_0xc8c2('0x1e')]();members[_0x529c57[_0xc8c2('0x17')]]['duration']=utils['diffTime'](members[_0x529c57[_0xc8c2('0x17')]][_0xc8c2('0x22')],members[_0x529c57[_0xc8c2('0x17')]][_0xc8c2('0x23')]);if(members[_0x529c57['device']][_0xc8c2('0x14')]){writeDB(members[_0x529c57['device']]);}}break;default:break;}}catch(_0xfbd6a6){utils[_0xc8c2('0x13')](util['format']('[%s][members][devicestatechange]',members[_0x529c57['device']]?members[_0x529c57[_0xc8c2('0x17')]][_0xc8c2('0x14')]:_0x529c57['device']),_0xfbd6a6);}};exports[_0xc8c2('0x24')]=function(_0x1413ce){try{if(!_[_0xc8c2('0x21')](members[_0x1413ce[_0xc8c2('0xb')]])){utils[_0xc8c2('0x15')](util[_0xc8c2('0x5')](_0xc8c2('0x25'),_0x1413ce[_0xc8c2('0x14')]),_0x1413ce);utils[_0xc8c2('0x4')](util[_0xc8c2('0x5')](_0xc8c2('0x26'),_0x1413ce[_0xc8c2('0x14')],_0x1413ce[_0xc8c2('0xb')],_0x1413ce[_0xc8c2('0x27')]));members[_0x1413ce['interface']]=_[_0xc8c2('0x28')](members[_0x1413ce[_0xc8c2('0xb')]],{'data4':_0x1413ce[_0xc8c2('0x27')],'uniqueid':_0x1413ce[_0xc8c2('0x14')]});}}catch(_0x43e126){utils[_0xc8c2('0x13')](util[_0xc8c2('0x5')](_0xc8c2('0x25'),_0x1413ce[_0xc8c2('0x14')]),_0x43e126);}};exports[_0xc8c2('0x29')]=function(_0x274670){try{utils[_0xc8c2('0x15')](util[_0xc8c2('0x5')](_0xc8c2('0x2a'),_0x274670[_0xc8c2('0x14')]),_0x274670);if(_0x274670[_0xc8c2('0x7')]){var _0x2b3cc5=_0x274670[_0xc8c2('0x7')]['split']('-')[0x0];if(!_[_0xc8c2('0x21')](members[_0x2b3cc5])){members[_0x2b3cc5]=_['assign'](members[_0x2b3cc5],{'data1':members[_0x2b3cc5][_0xc8c2('0x2b')]||_0x274670[_0xc8c2('0xa')],'data2':members[_0x2b3cc5][_0xc8c2('0x8')]||_0x274670[_0xc8c2('0x2c')],'data3':members[_0x2b3cc5][_0xc8c2('0x2d')]||_0x274670[_0xc8c2('0x2e')],'uniqueid':members[_0x2b3cc5][_0xc8c2('0x14')]||_0x274670[_0xc8c2('0x14')]});utils[_0xc8c2('0x4')](util[_0xc8c2('0x5')](_0xc8c2('0x2f'),_0x274670[_0xc8c2('0x14')],members[_0x2b3cc5][_0xc8c2('0x2b')],members[_0x2b3cc5][_0xc8c2('0x8')],members[_0x2b3cc5][_0xc8c2('0x2d')]));if(members[_0x2b3cc5][_0xc8c2('0x22')]){writeDB(members[_0x2b3cc5]);}}}if(_0x274670[_0xc8c2('0x30')]){var _0x2d67ef=_0x274670['destinationchannel'][_0xc8c2('0x10')]('-')[0x0];if(!_[_0xc8c2('0x21')](members[_0x2d67ef])){members[_0x2d67ef]=_[_0xc8c2('0x28')](members[_0x2d67ef],{'data1':members[_0x2d67ef][_0xc8c2('0x2b')]||_0x274670['type'],'data2':members[_0x2d67ef][_0xc8c2('0x8')]||_0x274670[_0xc8c2('0x2c')],'data3':members[_0x2d67ef][_0xc8c2('0x2d')]||_0x274670[_0xc8c2('0x2e')],'uniqueid':members[_0x2d67ef][_0xc8c2('0x14')]||_0x274670[_0xc8c2('0x14')]});utils[_0xc8c2('0x4')](util[_0xc8c2('0x5')]('[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s',_0x274670[_0xc8c2('0x14')],members[_0x2d67ef][_0xc8c2('0x2b')],members[_0x2d67ef][_0xc8c2('0x8')],members[_0x2d67ef][_0xc8c2('0x2d')]));if(members[_0x2d67ef][_0xc8c2('0x22')]){writeDB(members[_0x2d67ef]);}}}}catch(_0x1e4a8b){utils[_0xc8c2('0x13')](util[_0xc8c2('0x5')](_0xc8c2('0x2a'),_0x274670[_0xc8c2('0x14')]),_0x1e4a8b);}};
\ No newline at end of file
+var _0x20a9=['[%s][members][devicestatechange]\x20state:%s\x20interface:%s','state','INUSE','BUSY','voice','TALKING','now','agent','NOT_INUSE','isNil','exitAt','duration','agentcomplete','[%s][members][agentcomplete]','[%s][members][agentcomplete]\x20interface:%s\x20queue:%s','queue','assign','cdr','[%s][members][cdr]','source','data3','destination','[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s','data1','destinationchannel','./utils','Local/_attended@transfer','Queue:','info','format','[%s][members][writeDB]\x20interface:%s\x20channel:%s\x20data2:%s\x20agent:%s\x20type:%s','uniqueid','interface','channel','data2','type','name','internal','request','CreateMemberReport','getUserByName','split','then','catch','error','[%s][members][writeDB]','startsWith','debug','[%s][members][devicestatechange]','device'];(function(_0x125582,_0x5950df){var _0x1fb6dc=function(_0x4a84f0){while(--_0x4a84f0){_0x125582['push'](_0x125582['shift']());}};_0x1fb6dc(++_0x5950df);}(_0x20a9,0x113));var _0x920a=function(_0x3cb30b,_0x504b3e){_0x3cb30b=_0x3cb30b-0x0;var _0x2ca717=_0x20a9[_0x3cb30b];return _0x2ca717;};'use strict';var _=require('lodash');var util=require('util');var utils=require(_0x920a('0x0'));var members={};var exclude=[_0x920a('0x1'),_0x920a('0x2')];function writeDB(_0xe055be){utils[_0x920a('0x3')](util[_0x920a('0x4')](_0x920a('0x5'),_0xe055be[_0x920a('0x6')],_0xe055be[_0x920a('0x7')],_0xe055be[_0x920a('0x8')],_0xe055be[_0x920a('0x9')],_0xe055be['membername'],_0xe055be[_0x920a('0xa')]));if(_0xe055be[_0x920a('0x7')]){utils['getUserByInterface'](_0xe055be[_0x920a('0x7')])['then'](function(_0x1eab7c){if(_0x1eab7c){_0xe055be['membername']=_0x1eab7c[_0x920a('0xb')];_0xe055be[_0x920a('0xc')]=_0x1eab7c[_0x920a('0xc')];utils[_0x920a('0xd')](_0x920a('0xe'),_0xe055be);}else{utils[_0x920a('0xf')](_0xe055be[_0x920a('0x7')][_0x920a('0x10')]('/')[0x1])[_0x920a('0x11')](function(_0x3ceb11){if(_0x3ceb11){_0xe055be['membername']=_0x3ceb11[_0x920a('0xb')];_0xe055be[_0x920a('0xc')]=_0x3ceb11[_0x920a('0xc')];utils[_0x920a('0xd')](_0x920a('0xe'),_0xe055be);}});}})[_0x920a('0x12')](function(_0x2f9d87){utils[_0x920a('0x13')](util[_0x920a('0x4')](_0x920a('0x14'),_0xe055be[_0x920a('0x6')]),_0x2f9d87);});}delete members[_0xe055be[_0x920a('0x7')]];}function startsWith(_0x2bf252,_0x375e64){return _['some'](_0x2bf252,function(_0x5e5605){return _[_0x920a('0x15')](_0x375e64,_0x5e5605);});}exports['devicestatechange']=function(_0x290152){try{utils[_0x920a('0x16')](util[_0x920a('0x4')](_0x920a('0x17'),members[_0x290152[_0x920a('0x18')]]?members[_0x290152[_0x920a('0x18')]][_0x920a('0x6')]:_0x290152[_0x920a('0x18')]),_0x290152);utils[_0x920a('0x3')](util[_0x920a('0x4')](_0x920a('0x19'),members[_0x290152[_0x920a('0x18')]]?members[_0x290152['device']][_0x920a('0x6')]:_0x290152[_0x920a('0x18')],_0x290152[_0x920a('0x1a')],_0x290152['device']));switch(_0x290152['state']){case _0x920a('0x1b'):case _0x920a('0x1c'):if(!startsWith(exclude,_0x290152[_0x920a('0x18')])){members[_0x290152[_0x920a('0x18')]]={'channel':_0x920a('0x1d'),'interface':_0x290152['device'],'type':_0x920a('0x1e'),'enterAt':utils[_0x920a('0x1f')](),'role':_0x920a('0x20')};}break;case _0x920a('0x21'):if(!_[_0x920a('0x22')](members[_0x290152[_0x920a('0x18')]])){members[_0x290152[_0x920a('0x18')]][_0x920a('0x23')]=utils['now']();members[_0x290152['device']][_0x920a('0x24')]=utils['diffTime'](members[_0x290152[_0x920a('0x18')]][_0x920a('0x23')],members[_0x290152['device']]['enterAt']);if(members[_0x290152[_0x920a('0x18')]]['uniqueid']){writeDB(members[_0x290152[_0x920a('0x18')]]);}}break;default:break;}}catch(_0x20347b){utils[_0x920a('0x13')](util[_0x920a('0x4')]('[%s][members][devicestatechange]',members[_0x290152[_0x920a('0x18')]]?members[_0x290152['device']][_0x920a('0x6')]:_0x290152[_0x920a('0x18')]),_0x20347b);}};exports[_0x920a('0x25')]=function(_0x357cda){try{if(!_[_0x920a('0x22')](members[_0x357cda[_0x920a('0x7')]])){utils['debug'](util[_0x920a('0x4')](_0x920a('0x26'),_0x357cda['uniqueid']),_0x357cda);utils['info'](util[_0x920a('0x4')](_0x920a('0x27'),_0x357cda[_0x920a('0x6')],_0x357cda[_0x920a('0x7')],_0x357cda[_0x920a('0x28')]));members[_0x357cda['interface']]=_[_0x920a('0x29')](members[_0x357cda[_0x920a('0x7')]],{'data4':_0x357cda[_0x920a('0x28')],'uniqueid':_0x357cda[_0x920a('0x6')]});}}catch(_0x483171){utils['error'](util['format'](_0x920a('0x26'),_0x357cda['uniqueid']),_0x483171);}};exports[_0x920a('0x2a')]=function(_0x29214e){try{utils[_0x920a('0x16')](util['format'](_0x920a('0x2b'),_0x29214e['uniqueid']),_0x29214e);if(_0x29214e[_0x920a('0x8')]){var _0x30c6bc=_0x29214e[_0x920a('0x8')]['split']('-')[0x0];if(!_[_0x920a('0x22')](members[_0x30c6bc])){members[_0x30c6bc]=_['assign'](members[_0x30c6bc],{'data1':members[_0x30c6bc]['data1']||_0x29214e[_0x920a('0xa')],'data2':members[_0x30c6bc][_0x920a('0x9')]||_0x29214e[_0x920a('0x2c')],'data3':members[_0x30c6bc][_0x920a('0x2d')]||_0x29214e[_0x920a('0x2e')],'uniqueid':members[_0x30c6bc][_0x920a('0x6')]||_0x29214e[_0x920a('0x6')]});utils['info'](util[_0x920a('0x4')](_0x920a('0x2f'),_0x29214e[_0x920a('0x6')],members[_0x30c6bc][_0x920a('0x30')],members[_0x30c6bc][_0x920a('0x9')],members[_0x30c6bc][_0x920a('0x2d')]));if(members[_0x30c6bc][_0x920a('0x23')]){writeDB(members[_0x30c6bc]);}}}if(_0x29214e[_0x920a('0x31')]){var _0x2e511e=_0x29214e['destinationchannel'][_0x920a('0x10')]('-')[0x0];if(!_[_0x920a('0x22')](members[_0x2e511e])){members[_0x2e511e]=_[_0x920a('0x29')](members[_0x2e511e],{'data1':members[_0x2e511e][_0x920a('0x30')]||_0x29214e[_0x920a('0xa')],'data2':members[_0x2e511e]['data2']||_0x29214e['source'],'data3':members[_0x2e511e][_0x920a('0x2d')]||_0x29214e[_0x920a('0x2e')],'uniqueid':members[_0x2e511e][_0x920a('0x6')]||_0x29214e[_0x920a('0x6')]});utils[_0x920a('0x3')](util[_0x920a('0x4')]('[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s',_0x29214e[_0x920a('0x6')],members[_0x2e511e][_0x920a('0x30')],members[_0x2e511e]['data2'],members[_0x2e511e][_0x920a('0x2d')]));if(members[_0x2e511e]['exitAt']){writeDB(members[_0x2e511e]);}}}}catch(_0x5112db){utils['error'](util[_0x920a('0x4')](_0x920a('0x2b'),_0x29214e['uniqueid']),_0x5112db);}};
\ No newline at end of file
index 26854b8..512ae00 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5026=['ATTENDEDTRANSFER','transfereelinkedid','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','clone','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s\x20calleridnum:%s\x20calleridname:%s','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s','[%s][queues][musiconholdstart]','[%s][queues][musiconholdstop]\x20name:%s\x20musiconholdstartAt:%s','musiconholdstartAt','[%s][queues][musiconholdstop]','[%s][queues][musiconholdstop]\x20name:%s\x20mohtime:%s','lodash','util','info','format','[%s][queues][writeDB]\x20channel:%s\x20queue:%s\x20lastAssignedTo:%s\x20calleridnum:%s\x20accountcode:%s\x20queuecallerexitreason:%s','uniqueid','channel','lastAssignedTo','calleridnum','accountcode','queuecallerexitreason','queue','getVoiceQueueByName','then','type','request','CreateVoiceQueueReport','transfereduniqueid','queuecallerjoin','debug','[%s][queues][queuecallerjoin]','[%s][queues][queuecallerjoin]\x20name:%s\x20position:%s','position','error','hangup','isNil','queuecallerexit','queuecallercompleteAt','[%s][queues][hangup]\x20name:%s\x20queuecallerexitreason:%s','name','queuecallerenterreason','[%s][queues][varset]','variable','toUpperCase','CONTINUE','queuecallerabandon','queuecallerexitAt','value','[%s][queues][varset]\x20name:%s\x20variable:queuestatus\x20value:%s\x20queuecallerexitreason:%s','queueposition','queuecallerabandonAt','now','EXITWITHKEY','[%s][queues][varset]\x20name:%s\x20variable:queueposition\x20value:%s\x20queuecallerexitreason:%s','[%s][queues][queuecallerabandon]','[%s][queues][queuecallerabandon]\x20name:%s\x20queuecallerexitreason:%s','queuecallerleave','[%s][queues][queuecallerleave]','[%s][queues][queuecallerleave]\x20name:%s\x20connectedlinenum:%s\x20connectedlinename:%s','connectedlinenum','queuecallerleaveAt','holdtime','diffTime','queuecallerjoinAt','count','connectedlinename','agentconnect','[%s][queues][agentconnect]\x20name:%s\x20agent:%s\x20accountcode:%s','membername','assigned','destaccountcode','[%s][queues][agentcomplete]','queuecallercomplete','reason','transfer','TRANSFER','COMPLETEDBY','[%s][queues][agentcomplete]\x20name:%s\x20agent:%s\x20queuecallerexitreason:%s','blindtransfer','[%s][queues][blindtransfer]','transfereeuniqueid','transfertype','BLIND','transferexten','extension','transferuniqueid','BLINDTRANSFER','[%s][queues][blindtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:BLINDTRANSFER','attendedtransfer','[%s][queues][attendedtransfer]','origtransfereruniqueid','origtransfererlinkedid','secondtransfererlinkedid','[%s][queues][attendedtransfer]\x20name:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','origtransfererexten','ATTENDED'];(function(_0x4a683e,_0x535436){var _0x1a9446=function(_0x25253f){while(--_0x25253f){_0x4a683e['push'](_0x4a683e['shift']());}};_0x1a9446(++_0x535436);}(_0x5026,0x14a));var _0x6502=function(_0x1cd4d5,_0x5df664){_0x1cd4d5=_0x1cd4d5-0x0;var _0x2a5e0a=_0x5026[_0x1cd4d5];return _0x2a5e0a;};'use strict';var _=require(_0x6502('0x0'));var util=require(_0x6502('0x1'));var utils=require('./utils');var queues={};function writeDB(_0x2b4be4){utils[_0x6502('0x2')](util[_0x6502('0x3')](_0x6502('0x4'),_0x2b4be4[_0x6502('0x5')],_0x2b4be4[_0x6502('0x6')],_0x2b4be4['queue'],_0x2b4be4[_0x6502('0x7')],_0x2b4be4[_0x6502('0x8')],_0x2b4be4[_0x6502('0x9')],_0x2b4be4[_0x6502('0xa')]));if(_0x2b4be4[_0x6502('0xb')]){utils[_0x6502('0xc')](_0x2b4be4[_0x6502('0xb')])[_0x6502('0xd')](function(_0x41d7ce){if(_0x41d7ce){_0x2b4be4[_0x6502('0xe')]=_0x41d7ce[_0x6502('0xe')];}utils[_0x6502('0xf')](_0x6502('0x10'),_0x2b4be4);});}else{utils[_0x6502('0xf')](_0x6502('0x10'),_0x2b4be4);}if(_0x2b4be4[_0x6502('0x11')]){delete queues[_0x2b4be4['transfereduniqueid']];}else{delete queues[_0x2b4be4[_0x6502('0x5')]];}}exports[_0x6502('0x12')]=function(_0x3ba6bc){try{utils[_0x6502('0x13')](util[_0x6502('0x3')](_0x6502('0x14'),_0x3ba6bc[_0x6502('0x5')]),_0x3ba6bc);utils[_0x6502('0x2')](util[_0x6502('0x3')](_0x6502('0x15'),_0x3ba6bc['uniqueid'],_0x3ba6bc[_0x6502('0xb')],_0x3ba6bc[_0x6502('0x16')]));queues[_0x3ba6bc[_0x6502('0x5')]]=_['assign'](_0x3ba6bc,{'originalposition':_0x3ba6bc['position'],'queuecallerjoinAt':utils['now'](),'mohtime':0x0});}catch(_0x161040){utils[_0x6502('0x17')](util[_0x6502('0x3')](_0x6502('0x14'),_0x3ba6bc[_0x6502('0x5')]),_0x161040);}};exports[_0x6502('0x18')]=function(_0x10560e){try{if(!_[_0x6502('0x19')](queues[_0x10560e['uniqueid']])){utils[_0x6502('0x13')](util['format']('[%s][queues][hangup]',_0x10560e[_0x6502('0x5')]),_0x10560e);if(queues[_0x10560e[_0x6502('0x5')]]['queuecallerleaveAt']){if(!queues[_0x10560e[_0x6502('0x5')]]['queuecallerabandon']&&!queues[_0x10560e[_0x6502('0x5')]][_0x6502('0x1a')]){queues[_0x10560e[_0x6502('0x5')]]['queuecallercomplete']=!![];queues[_0x10560e['uniqueid']][_0x6502('0x1b')]=utils['now']();queues[_0x10560e[_0x6502('0x5')]]['queuecallerexitreason']='COMPLETEDBYAGENT';}utils[_0x6502('0x2')](util[_0x6502('0x3')](_0x6502('0x1c'),_0x10560e[_0x6502('0x5')],queues[_0x10560e[_0x6502('0x5')]]['name'],queues[_0x10560e[_0x6502('0x5')]]['queuecallerexitreason']));writeDB(queues[_0x10560e[_0x6502('0x5')]]);}else if(queues[_0x10560e['uniqueid']][_0x6502('0x11')]){utils[_0x6502('0x2')](util[_0x6502('0x3')]('[%s][queues][hangup]\x20name:%s\x20transfereduniqueid:%s',_0x10560e['uniqueid'],queues[_0x10560e['uniqueid']][_0x6502('0x1d')],queues[_0x10560e['uniqueid']][_0x6502('0x11')]));queues[queues[_0x10560e[_0x6502('0x5')]]['transfereduniqueid']]=queues[_0x10560e[_0x6502('0x5')]];queues[queues[_0x10560e[_0x6502('0x5')]][_0x6502('0x11')]][_0x6502('0x1e')]=0x2;delete queues[_0x10560e[_0x6502('0x5')]];}}}catch(_0x5b020b){utils[_0x6502('0x17')](util[_0x6502('0x3')]('[%s][queues][hangup]',_0x10560e[_0x6502('0x5')]),_0x5b020b);}};exports['varset']=function(_0x277493){try{utils['debug'](util[_0x6502('0x3')](_0x6502('0x1f'),_0x277493[_0x6502('0x5')]),_0x277493);if(!_[_0x6502('0x19')](_0x277493[_0x6502('0x20')]['queuestatus'])&&_0x277493['value'][_0x6502('0x21')]()!==_0x6502('0x22')){if(!_[_0x6502('0x19')](queues[_0x277493[_0x6502('0x5')]])){queues[_0x277493[_0x6502('0x5')]][_0x6502('0x23')]=![];queues[_0x277493['uniqueid']]['queuecallerabandonAt']=null;queues[_0x277493[_0x6502('0x5')]][_0x6502('0x1a')]=!![];queues[_0x277493['uniqueid']][_0x6502('0x24')]=utils['now']();queues[_0x277493[_0x6502('0x5')]]['queuecallerexitreason']=_0x277493[_0x6502('0x25')][_0x6502('0x21')]();utils['info'](util['format'](_0x6502('0x26'),_0x277493[_0x6502('0x5')],queues[_0x277493['uniqueid']][_0x6502('0x1d')],_0x277493['value'],queues[_0x277493[_0x6502('0x5')]][_0x6502('0xa')]));writeDB(queues[_0x277493[_0x6502('0x5')]]);}}else if(!_[_0x6502('0x19')](_0x277493[_0x6502('0x20')][_0x6502('0x27')])){if(!_['isNil'](queues[_0x277493[_0x6502('0x5')]])&&!queues[_0x277493['uniqueid']][_0x6502('0x23')]){queues[_0x277493[_0x6502('0x5')]][_0x6502('0x23')]=![];queues[_0x277493[_0x6502('0x5')]][_0x6502('0x28')]=null;queues[_0x277493[_0x6502('0x5')]][_0x6502('0x1a')]=!![];queues[_0x277493[_0x6502('0x5')]]['queuecallerexitAt']=utils[_0x6502('0x29')]();queues[_0x277493['uniqueid']][_0x6502('0xa')]=_0x6502('0x2a');utils[_0x6502('0x2')](util[_0x6502('0x3')](_0x6502('0x2b'),_0x277493['uniqueid'],queues[_0x277493[_0x6502('0x5')]][_0x6502('0x1d')],_0x277493[_0x6502('0x25')],queues[_0x277493[_0x6502('0x5')]][_0x6502('0xa')]));}}}catch(_0x21650b){utils[_0x6502('0x17')](util[_0x6502('0x3')]('[%s][queues][varset]',_0x277493[_0x6502('0x5')]),_0x21650b);}};exports['queuecallerabandon']=function(_0x14fb63){try{if(!_[_0x6502('0x19')](queues[_0x14fb63['uniqueid']])){utils[_0x6502('0x13')](util['format'](_0x6502('0x2c'),_0x14fb63[_0x6502('0x5')]),_0x14fb63);queues[_0x14fb63[_0x6502('0x5')]][_0x6502('0x1a')]=![];queues[_0x14fb63[_0x6502('0x5')]]['queuecallerexitAt']=null;queues[_0x14fb63[_0x6502('0x5')]][_0x6502('0x23')]=!![];queues[_0x14fb63['uniqueid']][_0x6502('0x28')]=utils[_0x6502('0x29')]();queues[_0x14fb63['uniqueid']][_0x6502('0xa')]='ABANDONED';utils['info'](util['format'](_0x6502('0x2d'),_0x14fb63[_0x6502('0x5')],queues[_0x14fb63[_0x6502('0x5')]][_0x6502('0x1d')],queues[_0x14fb63[_0x6502('0x5')]]['queuecallerexitreason']));}}catch(_0x359cab){utils[_0x6502('0x17')](util[_0x6502('0x3')](_0x6502('0x2c'),_0x14fb63[_0x6502('0x5')]),_0x359cab);}};exports[_0x6502('0x2e')]=function(_0x3fa3db){try{if(!_['isNil'](queues[_0x3fa3db[_0x6502('0x5')]])){utils[_0x6502('0x13')](util[_0x6502('0x3')](_0x6502('0x2f'),_0x3fa3db[_0x6502('0x5')]),_0x3fa3db);utils[_0x6502('0x2')](util[_0x6502('0x3')](_0x6502('0x30'),_0x3fa3db[_0x6502('0x5')],queues[_0x3fa3db['uniqueid']][_0x6502('0x1d')],_0x3fa3db[_0x6502('0x31')],_0x3fa3db['connectedlinename']));queues[_0x3fa3db[_0x6502('0x5')]][_0x6502('0x2e')]=!![];queues[_0x3fa3db[_0x6502('0x5')]][_0x6502('0x32')]=utils[_0x6502('0x29')]();queues[_0x3fa3db['uniqueid']][_0x6502('0x33')]=utils[_0x6502('0x34')](queues[_0x3fa3db[_0x6502('0x5')]]['queuecallerleaveAt'],queues[_0x3fa3db[_0x6502('0x5')]][_0x6502('0x35')]);queues[_0x3fa3db[_0x6502('0x5')]][_0x6502('0x16')]=_0x3fa3db[_0x6502('0x16')];queues[_0x3fa3db[_0x6502('0x5')]][_0x6502('0x36')]=_0x3fa3db[_0x6502('0x36')];queues[_0x3fa3db[_0x6502('0x5')]][_0x6502('0x31')]=_0x3fa3db['connectedlinenum'];queues[_0x3fa3db[_0x6502('0x5')]][_0x6502('0x37')]=_0x3fa3db[_0x6502('0x37')];}}catch(_0x22cc7b){utils[_0x6502('0x17')](util[_0x6502('0x3')](_0x6502('0x2f'),_0x3fa3db[_0x6502('0x5')]),_0x22cc7b);}};exports[_0x6502('0x38')]=function(_0x3711f0){try{if(!_[_0x6502('0x19')](queues[_0x3711f0[_0x6502('0x5')]])){utils[_0x6502('0x13')](util[_0x6502('0x3')]('[%s][queues][agentconnect]',_0x3711f0[_0x6502('0x5')]),_0x3711f0);utils['info'](util[_0x6502('0x3')](_0x6502('0x39'),_0x3711f0[_0x6502('0x5')],queues[_0x3711f0[_0x6502('0x5')]]['name'],_0x3711f0[_0x6502('0x3a')],_0x3711f0['destaccountcode']));queues[_0x3711f0[_0x6502('0x5')]][_0x6502('0x23')]=![];queues[_0x3711f0[_0x6502('0x5')]][_0x6502('0x23')]=![];queues[_0x3711f0['uniqueid']][_0x6502('0x28')]=null;queues[_0x3711f0['uniqueid']][_0x6502('0x1a')]=![];queues[_0x3711f0[_0x6502('0x5')]][_0x6502('0xa')]=null;queues[_0x3711f0[_0x6502('0x5')]][_0x6502('0x24')]=null;queues[_0x3711f0[_0x6502('0x5')]][_0x6502('0x3b')]=!![];queues[_0x3711f0[_0x6502('0x5')]][_0x6502('0x9')]=_0x3711f0[_0x6502('0x3c')];queues[_0x3711f0[_0x6502('0x5')]][_0x6502('0x7')]=_0x3711f0[_0x6502('0x3a')];}}catch(_0x5b742e){utils[_0x6502('0x17')](util['format']('[%s][queues][agentconnect]',_0x3711f0[_0x6502('0x5')]),_0x5b742e);}};exports['agentcomplete']=function(_0x5c7fe1){try{if(!_['isNil'](queues[_0x5c7fe1[_0x6502('0x5')]])){if(queues[_0x5c7fe1['uniqueid']][_0x6502('0x32')]){utils[_0x6502('0x13')](util[_0x6502('0x3')](_0x6502('0x3d'),_0x5c7fe1[_0x6502('0x5')]),_0x5c7fe1);queues[_0x5c7fe1[_0x6502('0x5')]][_0x6502('0x23')]=![];queues[_0x5c7fe1['uniqueid']][_0x6502('0x23')]=![];queues[_0x5c7fe1['uniqueid']]['queuecallerabandonAt']=null;queues[_0x5c7fe1[_0x6502('0x5')]][_0x6502('0x1a')]=![];queues[_0x5c7fe1[_0x6502('0x5')]][_0x6502('0x24')]=null;queues[_0x5c7fe1[_0x6502('0x5')]][_0x6502('0x3b')]=!![];queues[_0x5c7fe1[_0x6502('0x5')]]['lastAssignedTo']=_0x5c7fe1[_0x6502('0x3a')];queues[_0x5c7fe1['uniqueid']][_0x6502('0x3e')]=!![];queues[_0x5c7fe1[_0x6502('0x5')]][_0x6502('0x1b')]=utils['now']();if(_0x5c7fe1[_0x6502('0x3f')]==_0x6502('0x40')){if(!queues[_0x5c7fe1[_0x6502('0x5')]][_0x6502('0x40')]){queues[_0x5c7fe1[_0x6502('0x5')]]['queuecallerexitreason']=_0x6502('0x41');}}else{queues[_0x5c7fe1['uniqueid']][_0x6502('0xa')]=_0x6502('0x42')+_0x5c7fe1['reason'][_0x6502('0x21')]();}utils[_0x6502('0x2')](util[_0x6502('0x3')](_0x6502('0x43'),_0x5c7fe1[_0x6502('0x5')],queues[_0x5c7fe1[_0x6502('0x5')]][_0x6502('0x1d')],_0x5c7fe1[_0x6502('0x3a')],queues[_0x5c7fe1[_0x6502('0x5')]][_0x6502('0xa')]));writeDB(queues[_0x5c7fe1[_0x6502('0x5')]]);}}}catch(_0x5632c2){utils[_0x6502('0x17')](util[_0x6502('0x3')](_0x6502('0x3d'),_0x5c7fe1[_0x6502('0x5')]),_0x5632c2);}};exports[_0x6502('0x44')]=function(_0x277c70){try{if(!_[_0x6502('0x19')](queues[_0x277c70['transfereeuniqueid']])){utils['debug'](util[_0x6502('0x3')](_0x6502('0x45'),_0x277c70[_0x6502('0x5')]),_0x277c70);queues[_0x277c70[_0x6502('0x46')]][_0x6502('0x40')]=!![];queues[_0x277c70[_0x6502('0x46')]][_0x6502('0x47')]=_0x6502('0x48');queues[_0x277c70[_0x6502('0x46')]][_0x6502('0x49')]=_0x277c70[_0x6502('0x4a')];queues[_0x277c70[_0x6502('0x46')]][_0x6502('0x4b')]=_0x277c70[_0x6502('0x46')];queues[_0x277c70['transfereeuniqueid']]['queuecallerexitreason']=_0x6502('0x4c');utils[_0x6502('0x2')](util[_0x6502('0x3')](_0x6502('0x4d'),_0x277c70['uniqueid'],queues[_0x277c70[_0x6502('0x46')]]['name'],_0x277c70[_0x6502('0x46')],_0x277c70[_0x6502('0x4a')]));}}catch(_0x264059){utils['error'](util[_0x6502('0x3')](_0x6502('0x45'),_0x277c70['uniqueid']),_0x264059);}};exports[_0x6502('0x4e')]=function(_0x24d6af){try{utils[_0x6502('0x13')](util[_0x6502('0x3')](_0x6502('0x4f'),_0x24d6af[_0x6502('0x50')]),_0x24d6af);if(_0x24d6af[_0x6502('0x50')]==_0x24d6af[_0x6502('0x51')]){if(!_['isNil'](queues[_0x24d6af[_0x6502('0x52')]])){utils[_0x6502('0x2')](util[_0x6502('0x3')](_0x6502('0x53'),_0x24d6af[_0x6502('0x50')],queues[_0x24d6af[_0x6502('0x52')]][_0x6502('0x1d')],_0x24d6af[_0x6502('0x54')]));queues[_0x24d6af[_0x6502('0x52')]][_0x6502('0x40')]=!![];queues[_0x24d6af[_0x6502('0x52')]]['transfertype']=_0x6502('0x55');queues[_0x24d6af[_0x6502('0x52')]][_0x6502('0x49')]=_0x24d6af['origtransfererexten'];queues[_0x24d6af[_0x6502('0x52')]][_0x6502('0x4b')]=_0x24d6af[_0x6502('0x50')];queues[_0x24d6af[_0x6502('0x52')]]['queuecallerexitreason']=_0x6502('0x56');}if(!_[_0x6502('0x19')](queues[_0x24d6af[_0x6502('0x51')]])){if(_0x24d6af[_0x6502('0x57')]&&queues[_0x24d6af[_0x6502('0x57')]]){queues[_0x24d6af['transfereelinkedid']][_0x6502('0x1e')]=0x1;queues[_0x24d6af[_0x6502('0x46')]]=_['clone'](queues[_0x24d6af[_0x6502('0x57')]]);queues[_0x24d6af[_0x6502('0x46')]]['transfereduniqueid']=_0x24d6af['transfertargetuniqueid'];queues[_0x24d6af[_0x6502('0x46')]][_0x6502('0x1e')]=0x2;queues[_0x24d6af[_0x6502('0x46')]][_0x6502('0x8')]=queues[_0x24d6af[_0x6502('0x52')]][_0x6502('0x8')];queues[_0x24d6af[_0x6502('0x46')]][_0x6502('0x58')]=queues[_0x24d6af['secondtransfererlinkedid']]['calleridname'];queues[_0x24d6af['transfereeuniqueid']]['queuecallerjoinAt']=utils[_0x6502('0x29')]();queues[_0x24d6af[_0x6502('0x46')]]['queuecallerleaveAt']=utils['now']();queues[_0x24d6af['transfereeuniqueid']][_0x6502('0x33')]=0x0;queues[_0x24d6af[_0x6502('0x46')]][_0x6502('0x59')]=0x0;utils[_0x6502('0x2')](util['format'](_0x6502('0x5a'),_0x24d6af[_0x6502('0x50')],queues[_0x24d6af[_0x6502('0x46')]][_0x6502('0x1d')],queues[_0x24d6af[_0x6502('0x46')]][_0x6502('0x8')],queues[_0x24d6af[_0x6502('0x46')]][_0x6502('0x58')]));}else{utils[_0x6502('0x2')](util['format']('[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s',_0x24d6af[_0x6502('0x50')],queues[_0x24d6af[_0x6502('0x51')]]['name'],_0x24d6af['secondtransfererlinkedid']));queues[_0x24d6af[_0x6502('0x51')]][_0x6502('0x11')]=_0x24d6af['secondtransfererlinkedid'];}}}else if(_0x24d6af['secondtransfereruniqueid']==_0x24d6af[_0x6502('0x52')]){if(!_[_0x6502('0x19')](queues[_0x24d6af[_0x6502('0x51')]])){utils[_0x6502('0x2')](util['format'](_0x6502('0x5b'),_0x24d6af[_0x6502('0x50')],queues[_0x24d6af[_0x6502('0x51')]][_0x6502('0x1d')],_0x24d6af[_0x6502('0x5c')],_0x24d6af[_0x6502('0x5d')]));queues[_0x24d6af['origtransfererlinkedid']][_0x6502('0x40')]=!![];queues[_0x24d6af['origtransfererlinkedid']][_0x6502('0x47')]=_0x6502('0x55');queues[_0x24d6af[_0x6502('0x51')]]['transferexten']=_0x24d6af[_0x6502('0x5d')];queues[_0x24d6af[_0x6502('0x51')]][_0x6502('0x4b')]=_0x24d6af[_0x6502('0x5c')];queues[_0x24d6af[_0x6502('0x51')]][_0x6502('0xa')]=_0x6502('0x56');}if(!_['isNil'](queues[_0x24d6af[_0x6502('0x52')]])){if(_0x24d6af[_0x6502('0x5e')]&&queues[_0x24d6af[_0x6502('0x5e')]]){queues[_0x24d6af['transfertargetlinkedid']][_0x6502('0x1e')]=0x1;queues[_0x24d6af[_0x6502('0x5f')]]=_[_0x6502('0x60')](queues[_0x24d6af[_0x6502('0x5e')]]);queues[_0x24d6af[_0x6502('0x5f')]]['transfereduniqueid']=_0x24d6af['transfertargetuniqueid'];queues[_0x24d6af[_0x6502('0x5f')]]['queuecallerenterreason']=0x2;queues[_0x24d6af[_0x6502('0x5f')]]['calleridnum']=queues[_0x24d6af[_0x6502('0x51')]][_0x6502('0x8')];queues[_0x24d6af[_0x6502('0x5f')]][_0x6502('0x58')]=queues[_0x24d6af['origtransfererlinkedid']][_0x6502('0x58')];queues[_0x24d6af[_0x6502('0x5f')]][_0x6502('0x35')]=utils[_0x6502('0x29')]();queues[_0x24d6af['transfertargetuniqueid']]['queuecallerleaveAt']=utils[_0x6502('0x29')]();queues[_0x24d6af['transfertargetuniqueid']][_0x6502('0x33')]=0x0;queues[_0x24d6af[_0x6502('0x5f')]][_0x6502('0x59')]=0x0;utils[_0x6502('0x2')](util['format'](_0x6502('0x61'),_0x24d6af[_0x6502('0x50')],queues[_0x24d6af[_0x6502('0x5f')]][_0x6502('0x1d')],queues[_0x24d6af[_0x6502('0x5f')]][_0x6502('0x11')],queues[_0x24d6af[_0x6502('0x5f')]]['calleridnum'],queues[_0x24d6af['transfertargetuniqueid']]['calleridname']));}else{utils[_0x6502('0x2')](util[_0x6502('0x3')](_0x6502('0x62'),_0x24d6af['origtransfereruniqueid'],queues[_0x24d6af[_0x6502('0x52')]][_0x6502('0x1d')],_0x24d6af[_0x6502('0x51')]));queues[_0x24d6af['secondtransfererlinkedid']][_0x6502('0x11')]=_0x24d6af['origtransfererlinkedid'];}}}}catch(_0x1993e8){utils[_0x6502('0x17')](util[_0x6502('0x3')](_0x6502('0x4f'),_0x24d6af['origtransfereruniqueid']),_0x1993e8);}};exports['musiconholdstart']=function(_0x7494c9){try{if(!_[_0x6502('0x19')](queues[_0x7494c9[_0x6502('0x5')]])){utils[_0x6502('0x13')](util[_0x6502('0x3')](_0x6502('0x63'),_0x7494c9[_0x6502('0x5')]),_0x7494c9);queues[_0x7494c9[_0x6502('0x5')]]['musiconholdstartAt']=utils[_0x6502('0x29')]();utils['info'](util['format'](_0x6502('0x64'),_0x7494c9[_0x6502('0x5')],queues[_0x7494c9[_0x6502('0x5')]][_0x6502('0x1d')],queues[_0x7494c9[_0x6502('0x5')]][_0x6502('0x65')]));}}catch(_0x41c89a){utils[_0x6502('0x17')](util[_0x6502('0x3')](_0x6502('0x63'),_0x7494c9[_0x6502('0x5')]),_0x41c89a);}};exports['musiconholdstop']=function(_0x4f0ab7){try{if(!_[_0x6502('0x19')](queues[_0x4f0ab7[_0x6502('0x5')]])){if(!_['isNil'](queues[_0x4f0ab7[_0x6502('0x5')]][_0x6502('0x65')])){utils['debug'](util['format'](_0x6502('0x66'),_0x4f0ab7[_0x6502('0x5')]),_0x4f0ab7);queues[_0x4f0ab7[_0x6502('0x5')]][_0x6502('0x59')]+=utils[_0x6502('0x34')](utils[_0x6502('0x29')](),queues[_0x4f0ab7[_0x6502('0x5')]][_0x6502('0x65')]);utils[_0x6502('0x2')](util['format'](_0x6502('0x67'),_0x4f0ab7['uniqueid'],queues[_0x4f0ab7['uniqueid']][_0x6502('0x1d')],queues[_0x4f0ab7[_0x6502('0x5')]][_0x6502('0x59')]));delete queues[_0x4f0ab7[_0x6502('0x5')]][_0x6502('0x65')];}}}catch(_0xc0dd2d){utils['error'](util[_0x6502('0x3')](_0x6502('0x66'),_0x4f0ab7[_0x6502('0x5')]),_0xc0dd2d);}};
\ No newline at end of file
+var _0x1419=['isNil','variable','queuestatus','value','CONTINUE','queuecallerabandonAt','toUpperCase','[%s][queues][varset]\x20name:%s\x20variable:queuestatus\x20value:%s\x20queuecallerexitreason:%s','queueposition','EXITWITHKEY','[%s][queues][varset]\x20name:%s\x20variable:queueposition\x20value:%s\x20queuecallerexitreason:%s','debug','queuecallerexitAt','ABANDONED','[%s][queues][queuecallerabandon]\x20name:%s\x20queuecallerexitreason:%s','[%s][queues][queuecallerabandon]','queuecallerleave','[%s][queues][queuecallerleave]','connectedlinename','holdtime','diffTime','queuecallerjoinAt','count','connectedlinenum','[%s][queues][agentconnect]\x20name:%s\x20agent:%s\x20accountcode:%s','membername','destaccountcode','assigned','[%s][queues][agentconnect]','[%s][queues][agentcomplete]','reason','transfer','TRANSFER','COMPLETEDBY','[%s][queues][agentcomplete]\x20name:%s\x20agent:%s\x20queuecallerexitreason:%s','blindtransfer','transfereeuniqueid','transfertype','BLIND','transferexten','extension','transferuniqueid','[%s][queues][blindtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:BLINDTRANSFER','[%s][queues][blindtransfer]','[%s][queues][attendedtransfer]','origtransfereruniqueid','origtransfererlinkedid','secondtransfererlinkedid','[%s][queues][attendedtransfer]\x20name:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','origtransfererexten','ATTENDED','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','secondtransfererexten','transfertargetlinkedid','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s\x20calleridnum:%s\x20calleridname:%s','musiconholdstart','[%s][queues][musiconholdstart]','musiconholdstartAt','[%s][queues][musiconholdstop]\x20name:%s\x20musiconholdstartAt:%s','musiconholdstop','[%s][queues][musiconholdstop]','[%s][queues][musiconholdstop]\x20name:%s\x20mohtime:%s','lodash','./utils','info','format','uniqueid','channel','lastAssignedTo','calleridnum','accountcode','queuecallerexitreason','getVoiceQueueByName','queue','then','type','request','CreateVoiceQueueReport','transfereduniqueid','queuecallerjoin','position','now','error','hangup','[%s][queues][hangup]','queuecallerleaveAt','queuecallerabandon','queuecallerexit','queuecallercomplete','queuecallercompleteAt','[%s][queues][hangup]\x20name:%s\x20queuecallerexitreason:%s','name','[%s][queues][hangup]\x20name:%s\x20transfereduniqueid:%s','queuecallerenterreason','varset','[%s][queues][varset]'];(function(_0x2be8c2,_0x14a4b5){var _0x97f531=function(_0xcee58d){while(--_0xcee58d){_0x2be8c2['push'](_0x2be8c2['shift']());}};_0x97f531(++_0x14a4b5);}(_0x1419,0x116));var _0x9141=function(_0x540254,_0x3a1a75){_0x540254=_0x540254-0x0;var _0x4c5b60=_0x1419[_0x540254];return _0x4c5b60;};'use strict';var _=require(_0x9141('0x0'));var util=require('util');var utils=require(_0x9141('0x1'));var queues={};function writeDB(_0x46acc8){utils[_0x9141('0x2')](util[_0x9141('0x3')]('[%s][queues][writeDB]\x20channel:%s\x20queue:%s\x20lastAssignedTo:%s\x20calleridnum:%s\x20accountcode:%s\x20queuecallerexitreason:%s',_0x46acc8[_0x9141('0x4')],_0x46acc8[_0x9141('0x5')],_0x46acc8['queue'],_0x46acc8[_0x9141('0x6')],_0x46acc8[_0x9141('0x7')],_0x46acc8[_0x9141('0x8')],_0x46acc8[_0x9141('0x9')]));if(_0x46acc8['queue']){utils[_0x9141('0xa')](_0x46acc8[_0x9141('0xb')])[_0x9141('0xc')](function(_0x36f7a2){if(_0x36f7a2){_0x46acc8[_0x9141('0xd')]=_0x36f7a2['type'];}utils[_0x9141('0xe')](_0x9141('0xf'),_0x46acc8);});}else{utils['request']('CreateVoiceQueueReport',_0x46acc8);}if(_0x46acc8[_0x9141('0x10')]){delete queues[_0x46acc8[_0x9141('0x10')]];}else{delete queues[_0x46acc8[_0x9141('0x4')]];}}exports[_0x9141('0x11')]=function(_0x1aba15){try{utils['debug'](util[_0x9141('0x3')]('[%s][queues][queuecallerjoin]',_0x1aba15[_0x9141('0x4')]),_0x1aba15);utils[_0x9141('0x2')](util[_0x9141('0x3')]('[%s][queues][queuecallerjoin]\x20name:%s\x20position:%s',_0x1aba15[_0x9141('0x4')],_0x1aba15[_0x9141('0xb')],_0x1aba15[_0x9141('0x12')]));queues[_0x1aba15[_0x9141('0x4')]]=_['assign'](_0x1aba15,{'originalposition':_0x1aba15['position'],'queuecallerjoinAt':utils[_0x9141('0x13')](),'mohtime':0x0});}catch(_0x265c28){utils[_0x9141('0x14')](util[_0x9141('0x3')]('[%s][queues][queuecallerjoin]',_0x1aba15[_0x9141('0x4')]),_0x265c28);}};exports[_0x9141('0x15')]=function(_0x3212b0){try{if(!_['isNil'](queues[_0x3212b0[_0x9141('0x4')]])){utils['debug'](util[_0x9141('0x3')](_0x9141('0x16'),_0x3212b0[_0x9141('0x4')]),_0x3212b0);if(queues[_0x3212b0[_0x9141('0x4')]][_0x9141('0x17')]){if(!queues[_0x3212b0[_0x9141('0x4')]][_0x9141('0x18')]&&!queues[_0x3212b0[_0x9141('0x4')]][_0x9141('0x19')]){queues[_0x3212b0[_0x9141('0x4')]][_0x9141('0x1a')]=!![];queues[_0x3212b0['uniqueid']][_0x9141('0x1b')]=utils[_0x9141('0x13')]();queues[_0x3212b0[_0x9141('0x4')]][_0x9141('0x9')]='COMPLETEDBYAGENT';}utils['info'](util[_0x9141('0x3')](_0x9141('0x1c'),_0x3212b0['uniqueid'],queues[_0x3212b0[_0x9141('0x4')]][_0x9141('0x1d')],queues[_0x3212b0[_0x9141('0x4')]][_0x9141('0x9')]));writeDB(queues[_0x3212b0['uniqueid']]);}else if(queues[_0x3212b0[_0x9141('0x4')]][_0x9141('0x10')]){utils[_0x9141('0x2')](util['format'](_0x9141('0x1e'),_0x3212b0[_0x9141('0x4')],queues[_0x3212b0[_0x9141('0x4')]][_0x9141('0x1d')],queues[_0x3212b0['uniqueid']][_0x9141('0x10')]));queues[queues[_0x3212b0[_0x9141('0x4')]][_0x9141('0x10')]]=queues[_0x3212b0[_0x9141('0x4')]];queues[queues[_0x3212b0['uniqueid']]['transfereduniqueid']][_0x9141('0x1f')]=0x2;delete queues[_0x3212b0[_0x9141('0x4')]];}}}catch(_0x325cd9){utils[_0x9141('0x14')](util[_0x9141('0x3')](_0x9141('0x16'),_0x3212b0[_0x9141('0x4')]),_0x325cd9);}};exports[_0x9141('0x20')]=function(_0x30bf5f){try{utils['debug'](util[_0x9141('0x3')](_0x9141('0x21'),_0x30bf5f[_0x9141('0x4')]),_0x30bf5f);if(!_[_0x9141('0x22')](_0x30bf5f[_0x9141('0x23')][_0x9141('0x24')])&&_0x30bf5f[_0x9141('0x25')]['toUpperCase']()!==_0x9141('0x26')){if(!_[_0x9141('0x22')](queues[_0x30bf5f[_0x9141('0x4')]])){queues[_0x30bf5f[_0x9141('0x4')]][_0x9141('0x18')]=![];queues[_0x30bf5f[_0x9141('0x4')]][_0x9141('0x27')]=null;queues[_0x30bf5f[_0x9141('0x4')]][_0x9141('0x19')]=!![];queues[_0x30bf5f[_0x9141('0x4')]]['queuecallerexitAt']=utils['now']();queues[_0x30bf5f['uniqueid']][_0x9141('0x9')]=_0x30bf5f[_0x9141('0x25')][_0x9141('0x28')]();utils[_0x9141('0x2')](util[_0x9141('0x3')](_0x9141('0x29'),_0x30bf5f[_0x9141('0x4')],queues[_0x30bf5f[_0x9141('0x4')]][_0x9141('0x1d')],_0x30bf5f[_0x9141('0x25')],queues[_0x30bf5f[_0x9141('0x4')]]['queuecallerexitreason']));writeDB(queues[_0x30bf5f[_0x9141('0x4')]]);}}else if(!_[_0x9141('0x22')](_0x30bf5f[_0x9141('0x23')][_0x9141('0x2a')])){if(!_[_0x9141('0x22')](queues[_0x30bf5f[_0x9141('0x4')]])&&!queues[_0x30bf5f[_0x9141('0x4')]][_0x9141('0x18')]){queues[_0x30bf5f[_0x9141('0x4')]][_0x9141('0x18')]=![];queues[_0x30bf5f[_0x9141('0x4')]][_0x9141('0x27')]=null;queues[_0x30bf5f[_0x9141('0x4')]][_0x9141('0x19')]=!![];queues[_0x30bf5f[_0x9141('0x4')]]['queuecallerexitAt']=utils[_0x9141('0x13')]();queues[_0x30bf5f['uniqueid']]['queuecallerexitreason']=_0x9141('0x2b');utils[_0x9141('0x2')](util[_0x9141('0x3')](_0x9141('0x2c'),_0x30bf5f[_0x9141('0x4')],queues[_0x30bf5f['uniqueid']][_0x9141('0x1d')],_0x30bf5f[_0x9141('0x25')],queues[_0x30bf5f['uniqueid']][_0x9141('0x9')]));}}}catch(_0x5ab9d6){utils[_0x9141('0x14')](util[_0x9141('0x3')](_0x9141('0x21'),_0x30bf5f['uniqueid']),_0x5ab9d6);}};exports[_0x9141('0x18')]=function(_0x42410f){try{if(!_[_0x9141('0x22')](queues[_0x42410f['uniqueid']])){utils[_0x9141('0x2d')](util[_0x9141('0x3')]('[%s][queues][queuecallerabandon]',_0x42410f[_0x9141('0x4')]),_0x42410f);queues[_0x42410f[_0x9141('0x4')]][_0x9141('0x19')]=![];queues[_0x42410f[_0x9141('0x4')]][_0x9141('0x2e')]=null;queues[_0x42410f['uniqueid']]['queuecallerabandon']=!![];queues[_0x42410f[_0x9141('0x4')]][_0x9141('0x27')]=utils[_0x9141('0x13')]();queues[_0x42410f['uniqueid']][_0x9141('0x9')]=_0x9141('0x2f');utils['info'](util['format'](_0x9141('0x30'),_0x42410f['uniqueid'],queues[_0x42410f[_0x9141('0x4')]]['name'],queues[_0x42410f[_0x9141('0x4')]][_0x9141('0x9')]));}}catch(_0x954702){utils['error'](util[_0x9141('0x3')](_0x9141('0x31'),_0x42410f[_0x9141('0x4')]),_0x954702);}};exports[_0x9141('0x32')]=function(_0x434a6a){try{if(!_['isNil'](queues[_0x434a6a[_0x9141('0x4')]])){utils['debug'](util['format'](_0x9141('0x33'),_0x434a6a[_0x9141('0x4')]),_0x434a6a);utils[_0x9141('0x2')](util[_0x9141('0x3')]('[%s][queues][queuecallerleave]\x20name:%s\x20connectedlinenum:%s\x20connectedlinename:%s',_0x434a6a[_0x9141('0x4')],queues[_0x434a6a['uniqueid']][_0x9141('0x1d')],_0x434a6a['connectedlinenum'],_0x434a6a[_0x9141('0x34')]));queues[_0x434a6a[_0x9141('0x4')]]['queuecallerleave']=!![];queues[_0x434a6a[_0x9141('0x4')]][_0x9141('0x17')]=utils['now']();queues[_0x434a6a[_0x9141('0x4')]][_0x9141('0x35')]=utils[_0x9141('0x36')](queues[_0x434a6a[_0x9141('0x4')]]['queuecallerleaveAt'],queues[_0x434a6a[_0x9141('0x4')]][_0x9141('0x37')]);queues[_0x434a6a[_0x9141('0x4')]][_0x9141('0x12')]=_0x434a6a[_0x9141('0x12')];queues[_0x434a6a[_0x9141('0x4')]][_0x9141('0x38')]=_0x434a6a[_0x9141('0x38')];queues[_0x434a6a[_0x9141('0x4')]][_0x9141('0x39')]=_0x434a6a[_0x9141('0x39')];queues[_0x434a6a['uniqueid']]['connectedlinename']=_0x434a6a[_0x9141('0x34')];}}catch(_0x35205a){utils[_0x9141('0x14')](util[_0x9141('0x3')](_0x9141('0x33'),_0x434a6a[_0x9141('0x4')]),_0x35205a);}};exports['agentconnect']=function(_0x5cfb52){try{if(!_[_0x9141('0x22')](queues[_0x5cfb52[_0x9141('0x4')]])){utils[_0x9141('0x2d')](util[_0x9141('0x3')]('[%s][queues][agentconnect]',_0x5cfb52[_0x9141('0x4')]),_0x5cfb52);utils[_0x9141('0x2')](util[_0x9141('0x3')](_0x9141('0x3a'),_0x5cfb52[_0x9141('0x4')],queues[_0x5cfb52['uniqueid']][_0x9141('0x1d')],_0x5cfb52[_0x9141('0x3b')],_0x5cfb52[_0x9141('0x3c')]));queues[_0x5cfb52[_0x9141('0x4')]][_0x9141('0x18')]=![];queues[_0x5cfb52[_0x9141('0x4')]][_0x9141('0x18')]=![];queues[_0x5cfb52[_0x9141('0x4')]][_0x9141('0x27')]=null;queues[_0x5cfb52[_0x9141('0x4')]][_0x9141('0x19')]=![];queues[_0x5cfb52['uniqueid']][_0x9141('0x9')]=null;queues[_0x5cfb52[_0x9141('0x4')]][_0x9141('0x2e')]=null;queues[_0x5cfb52['uniqueid']][_0x9141('0x3d')]=!![];queues[_0x5cfb52[_0x9141('0x4')]][_0x9141('0x8')]=_0x5cfb52['destaccountcode'];queues[_0x5cfb52[_0x9141('0x4')]][_0x9141('0x6')]=_0x5cfb52['membername'];}}catch(_0x257329){utils['error'](util['format'](_0x9141('0x3e'),_0x5cfb52[_0x9141('0x4')]),_0x257329);}};exports['agentcomplete']=function(_0x733784){try{if(!_['isNil'](queues[_0x733784[_0x9141('0x4')]])){if(queues[_0x733784[_0x9141('0x4')]][_0x9141('0x17')]){utils['debug'](util[_0x9141('0x3')](_0x9141('0x3f'),_0x733784[_0x9141('0x4')]),_0x733784);queues[_0x733784['uniqueid']][_0x9141('0x18')]=![];queues[_0x733784[_0x9141('0x4')]][_0x9141('0x18')]=![];queues[_0x733784['uniqueid']][_0x9141('0x27')]=null;queues[_0x733784[_0x9141('0x4')]][_0x9141('0x19')]=![];queues[_0x733784[_0x9141('0x4')]][_0x9141('0x2e')]=null;queues[_0x733784[_0x9141('0x4')]][_0x9141('0x3d')]=!![];queues[_0x733784[_0x9141('0x4')]][_0x9141('0x6')]=_0x733784['membername'];queues[_0x733784[_0x9141('0x4')]]['queuecallercomplete']=!![];queues[_0x733784[_0x9141('0x4')]][_0x9141('0x1b')]=utils['now']();if(_0x733784[_0x9141('0x40')]==_0x9141('0x41')){if(!queues[_0x733784[_0x9141('0x4')]]['transfer']){queues[_0x733784['uniqueid']][_0x9141('0x9')]=_0x9141('0x42');}}else{queues[_0x733784['uniqueid']]['queuecallerexitreason']=_0x9141('0x43')+_0x733784[_0x9141('0x40')]['toUpperCase']();}utils[_0x9141('0x2')](util[_0x9141('0x3')](_0x9141('0x44'),_0x733784[_0x9141('0x4')],queues[_0x733784[_0x9141('0x4')]]['name'],_0x733784[_0x9141('0x3b')],queues[_0x733784[_0x9141('0x4')]][_0x9141('0x9')]));writeDB(queues[_0x733784[_0x9141('0x4')]]);}}}catch(_0x4c3aa0){utils[_0x9141('0x14')](util[_0x9141('0x3')](_0x9141('0x3f'),_0x733784[_0x9141('0x4')]),_0x4c3aa0);}};exports[_0x9141('0x45')]=function(_0x230a1f){try{if(!_[_0x9141('0x22')](queues[_0x230a1f[_0x9141('0x46')]])){utils[_0x9141('0x2d')](util['format']('[%s][queues][blindtransfer]',_0x230a1f[_0x9141('0x4')]),_0x230a1f);queues[_0x230a1f[_0x9141('0x46')]]['transfer']=!![];queues[_0x230a1f[_0x9141('0x46')]][_0x9141('0x47')]=_0x9141('0x48');queues[_0x230a1f[_0x9141('0x46')]][_0x9141('0x49')]=_0x230a1f[_0x9141('0x4a')];queues[_0x230a1f[_0x9141('0x46')]][_0x9141('0x4b')]=_0x230a1f[_0x9141('0x46')];queues[_0x230a1f['transfereeuniqueid']]['queuecallerexitreason']='BLINDTRANSFER';utils[_0x9141('0x2')](util[_0x9141('0x3')](_0x9141('0x4c'),_0x230a1f[_0x9141('0x4')],queues[_0x230a1f['transfereeuniqueid']][_0x9141('0x1d')],_0x230a1f[_0x9141('0x46')],_0x230a1f['extension']));}}catch(_0x3e4996){utils[_0x9141('0x14')](util[_0x9141('0x3')](_0x9141('0x4d'),_0x230a1f['uniqueid']),_0x3e4996);}};exports['attendedtransfer']=function(_0x240e7b){try{utils[_0x9141('0x2d')](util[_0x9141('0x3')](_0x9141('0x4e'),_0x240e7b[_0x9141('0x4f')]),_0x240e7b);if(_0x240e7b['origtransfereruniqueid']==_0x240e7b[_0x9141('0x50')]){if(!_[_0x9141('0x22')](queues[_0x240e7b[_0x9141('0x51')]])){utils['info'](util[_0x9141('0x3')](_0x9141('0x52'),_0x240e7b['origtransfereruniqueid'],queues[_0x240e7b[_0x9141('0x51')]]['name'],_0x240e7b[_0x9141('0x53')]));queues[_0x240e7b['secondtransfererlinkedid']][_0x9141('0x41')]=!![];queues[_0x240e7b['secondtransfererlinkedid']]['transfertype']=_0x9141('0x54');queues[_0x240e7b['secondtransfererlinkedid']][_0x9141('0x49')]=_0x240e7b[_0x9141('0x53')];queues[_0x240e7b[_0x9141('0x51')]]['transferuniqueid']=_0x240e7b['origtransfereruniqueid'];queues[_0x240e7b[_0x9141('0x51')]][_0x9141('0x9')]='ATTENDEDTRANSFER';}if(!_[_0x9141('0x22')](queues[_0x240e7b['origtransfererlinkedid']])){if(_0x240e7b[_0x9141('0x55')]&&queues[_0x240e7b['transfereelinkedid']]){queues[_0x240e7b['transfereelinkedid']][_0x9141('0x1f')]=0x1;queues[_0x240e7b[_0x9141('0x46')]]=_[_0x9141('0x56')](queues[_0x240e7b[_0x9141('0x55')]]);queues[_0x240e7b[_0x9141('0x46')]][_0x9141('0x10')]=_0x240e7b[_0x9141('0x57')];queues[_0x240e7b['transfereeuniqueid']][_0x9141('0x1f')]=0x2;queues[_0x240e7b[_0x9141('0x46')]]['calleridnum']=queues[_0x240e7b['secondtransfererlinkedid']][_0x9141('0x7')];queues[_0x240e7b[_0x9141('0x46')]][_0x9141('0x58')]=queues[_0x240e7b[_0x9141('0x51')]][_0x9141('0x58')];queues[_0x240e7b[_0x9141('0x46')]][_0x9141('0x37')]=utils[_0x9141('0x13')]();queues[_0x240e7b[_0x9141('0x46')]]['queuecallerleaveAt']=utils[_0x9141('0x13')]();queues[_0x240e7b[_0x9141('0x46')]][_0x9141('0x35')]=0x0;queues[_0x240e7b[_0x9141('0x46')]][_0x9141('0x59')]=0x0;utils[_0x9141('0x2')](util[_0x9141('0x3')](_0x9141('0x5a'),_0x240e7b[_0x9141('0x4f')],queues[_0x240e7b[_0x9141('0x46')]][_0x9141('0x1d')],queues[_0x240e7b[_0x9141('0x46')]][_0x9141('0x7')],queues[_0x240e7b[_0x9141('0x46')]][_0x9141('0x58')]));}else{utils[_0x9141('0x2')](util[_0x9141('0x3')](_0x9141('0x5b'),_0x240e7b[_0x9141('0x4f')],queues[_0x240e7b['origtransfererlinkedid']]['name'],_0x240e7b[_0x9141('0x51')]));queues[_0x240e7b['origtransfererlinkedid']][_0x9141('0x10')]=_0x240e7b[_0x9141('0x51')];}}}else if(_0x240e7b[_0x9141('0x5c')]==_0x240e7b[_0x9141('0x51')]){if(!_[_0x9141('0x22')](queues[_0x240e7b['origtransfererlinkedid']])){utils[_0x9141('0x2')](util['format'](_0x9141('0x5d'),_0x240e7b[_0x9141('0x4f')],queues[_0x240e7b[_0x9141('0x50')]]['name'],_0x240e7b['secondtransfereruniqueid'],_0x240e7b[_0x9141('0x5e')]));queues[_0x240e7b[_0x9141('0x50')]][_0x9141('0x41')]=!![];queues[_0x240e7b[_0x9141('0x50')]][_0x9141('0x47')]=_0x9141('0x54');queues[_0x240e7b[_0x9141('0x50')]][_0x9141('0x49')]=_0x240e7b[_0x9141('0x5e')];queues[_0x240e7b['origtransfererlinkedid']][_0x9141('0x4b')]=_0x240e7b[_0x9141('0x5c')];queues[_0x240e7b[_0x9141('0x50')]][_0x9141('0x9')]='ATTENDEDTRANSFER';}if(!_[_0x9141('0x22')](queues[_0x240e7b[_0x9141('0x51')]])){if(_0x240e7b[_0x9141('0x5f')]&&queues[_0x240e7b['transfertargetlinkedid']]){queues[_0x240e7b[_0x9141('0x5f')]][_0x9141('0x1f')]=0x1;queues[_0x240e7b[_0x9141('0x57')]]=_[_0x9141('0x56')](queues[_0x240e7b[_0x9141('0x5f')]]);queues[_0x240e7b[_0x9141('0x57')]][_0x9141('0x10')]=_0x240e7b[_0x9141('0x57')];queues[_0x240e7b[_0x9141('0x57')]][_0x9141('0x1f')]=0x2;queues[_0x240e7b[_0x9141('0x57')]]['calleridnum']=queues[_0x240e7b[_0x9141('0x50')]][_0x9141('0x7')];queues[_0x240e7b[_0x9141('0x57')]][_0x9141('0x58')]=queues[_0x240e7b[_0x9141('0x50')]][_0x9141('0x58')];queues[_0x240e7b[_0x9141('0x57')]][_0x9141('0x37')]=utils[_0x9141('0x13')]();queues[_0x240e7b['transfertargetuniqueid']][_0x9141('0x17')]=utils['now']();queues[_0x240e7b[_0x9141('0x57')]]['holdtime']=0x0;queues[_0x240e7b[_0x9141('0x57')]][_0x9141('0x59')]=0x0;utils[_0x9141('0x2')](util[_0x9141('0x3')](_0x9141('0x60'),_0x240e7b[_0x9141('0x4f')],queues[_0x240e7b['transfertargetuniqueid']][_0x9141('0x1d')],queues[_0x240e7b[_0x9141('0x57')]][_0x9141('0x10')],queues[_0x240e7b[_0x9141('0x57')]][_0x9141('0x7')],queues[_0x240e7b[_0x9141('0x57')]][_0x9141('0x58')]));}else{utils['info'](util[_0x9141('0x3')](_0x9141('0x5b'),_0x240e7b[_0x9141('0x4f')],queues[_0x240e7b[_0x9141('0x51')]][_0x9141('0x1d')],_0x240e7b[_0x9141('0x50')]));queues[_0x240e7b[_0x9141('0x51')]][_0x9141('0x10')]=_0x240e7b[_0x9141('0x50')];}}}}catch(_0x325d99){utils[_0x9141('0x14')](util[_0x9141('0x3')]('[%s][queues][attendedtransfer]',_0x240e7b[_0x9141('0x4f')]),_0x325d99);}};exports[_0x9141('0x61')]=function(_0x1d473c){try{if(!_[_0x9141('0x22')](queues[_0x1d473c[_0x9141('0x4')]])){utils[_0x9141('0x2d')](util[_0x9141('0x3')](_0x9141('0x62'),_0x1d473c[_0x9141('0x4')]),_0x1d473c);queues[_0x1d473c[_0x9141('0x4')]][_0x9141('0x63')]=utils[_0x9141('0x13')]();utils[_0x9141('0x2')](util['format'](_0x9141('0x64'),_0x1d473c[_0x9141('0x4')],queues[_0x1d473c[_0x9141('0x4')]]['name'],queues[_0x1d473c[_0x9141('0x4')]]['musiconholdstartAt']));}}catch(_0x57a145){utils['error'](util[_0x9141('0x3')](_0x9141('0x62'),_0x1d473c['uniqueid']),_0x57a145);}};exports[_0x9141('0x65')]=function(_0x22e389){try{if(!_[_0x9141('0x22')](queues[_0x22e389[_0x9141('0x4')]])){if(!_[_0x9141('0x22')](queues[_0x22e389[_0x9141('0x4')]][_0x9141('0x63')])){utils['debug'](util[_0x9141('0x3')](_0x9141('0x66'),_0x22e389[_0x9141('0x4')]),_0x22e389);queues[_0x22e389['uniqueid']]['mohtime']+=utils[_0x9141('0x36')](utils['now'](),queues[_0x22e389['uniqueid']]['musiconholdstartAt']);utils['info'](util[_0x9141('0x3')](_0x9141('0x67'),_0x22e389[_0x9141('0x4')],queues[_0x22e389['uniqueid']][_0x9141('0x1d')],queues[_0x22e389[_0x9141('0x4')]]['mohtime']));delete queues[_0x22e389[_0x9141('0x4')]][_0x9141('0x63')];}}}catch(_0x3eb437){utils[_0x9141('0x14')](util[_0x9141('0x3')](_0x9141('0x66'),_0x22e389[_0x9141('0x4')]),_0x3eb437);}};
\ No newline at end of file
index af9c763..1511c5f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3645=['value','.WAV','find','monitors','[%s][recordings][varset]','hangup','[%s][recordings][hangup]','calleridnum','calleridname','cause-txt','connectedlinenum','connectedlinename','type','outbound','clone','newexten','[%s][recordings][newexten]','[%s][recordings][newexten]\x20application:%s\x20appdata:%s','application','appdata','toLowerCase','set','startsWith','cdr','split','substring','lastIndexOf','queuecallerjoin','[%s][recordings][queuecallerjoin]','queue','lodash','util','./utils','info','[%s][recordings][writeDB]','accountcode','membername','name','UserId','CreateVoiceRecording','request','newchannel','debug','format','[%s][recordings][newchannel]','uniqueid','linkedid','context','exten','channel','newstate','[%s][recordings][newstate]','isNil','channelstate','[%s][recordings][newstate]\x20context:%s\x20channel:%s','transfer','[%s][recordings][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','error','varset','variable','mixmonitor_filename','[%s][recordings][varset]\x20variable:%s\x20value:%s','endsWith'];(function(_0x57d582,_0x2a786f){var _0x19224f=function(_0x22ab38){while(--_0x22ab38){_0x57d582['push'](_0x57d582['shift']());}};_0x19224f(++_0x2a786f);}(_0x3645,0x198));var _0x5364=function(_0xae1a83,_0x1980d4){_0xae1a83=_0xae1a83-0x0;var _0xdb9da8=_0x3645[_0xae1a83];return _0xdb9da8;};'use strict';var _=require(_0x5364('0x0'));var util=require(_0x5364('0x1'));var utils=require(_0x5364('0x2'));var recordings={};function writeDB(_0x2eedac){utils[_0x5364('0x3')](util['format'](_0x5364('0x4'),_0x2eedac['uniqueid']));if(_0x2eedac[_0x5364('0x5')]){utils['getUserByInternal'](_0x2eedac[_0x5364('0x5')])['then'](function(_0x8fe885){if(_0x8fe885){_0x2eedac[_0x5364('0x6')]=_0x8fe885[_0x5364('0x7')];_0x2eedac[_0x5364('0x8')]=_0x8fe885['id'];}utils['request'](_0x5364('0x9'),_0x2eedac);});}else{utils[_0x5364('0xa')](_0x5364('0x9'),_0x2eedac);}}exports[_0x5364('0xb')]=function(_0x4ff309){try{utils[_0x5364('0xc')](util[_0x5364('0xd')](_0x5364('0xe'),_0x4ff309[_0x5364('0xf')]),_0x4ff309);if(_0x4ff309[_0x5364('0xf')]==_0x4ff309[_0x5364('0x10')]){utils['info'](util[_0x5364('0xd')]('[%s][recordings][newchannel]\x20context:%s\x20exten:%s',_0x4ff309['uniqueid'],_0x4ff309[_0x5364('0x11')],_0x4ff309['exten']));recordings[_0x4ff309[_0x5364('0xf')]]={'uniqueid':_0x4ff309[_0x5364('0xf')],'accountcode':_0x4ff309[_0x5364('0x5')],'exten':_0x4ff309[_0x5364('0x12')],'context':_0x4ff309[_0x5364('0x11')],'channel':_0x4ff309[_0x5364('0x13')],'monitors':[]};}}catch(_0x25fd98){utils['error'](util[_0x5364('0xd')](_0x5364('0xe'),_0x4ff309[_0x5364('0xf')]),_0x25fd98);}};exports[_0x5364('0x14')]=function(_0x37c224){try{utils[_0x5364('0xc')](util['format'](_0x5364('0x15'),_0x37c224[_0x5364('0xf')]),_0x37c224);if(!_[_0x5364('0x16')](recordings[_0x37c224[_0x5364('0xf')]])&&_0x37c224[_0x5364('0x17')]==0x6){utils[_0x5364('0x3')](util[_0x5364('0xd')](_0x5364('0x18'),_0x37c224[_0x5364('0xf')],_0x37c224[_0x5364('0x11')],_0x37c224['channel']));}else if(!_[_0x5364('0x16')](recordings[_0x37c224[_0x5364('0x10')]])&&_0x37c224['channelstate']==0x6&&_0x37c224[_0x5364('0x11')]!=_0x5364('0x19')){utils[_0x5364('0x3')](util[_0x5364('0xd')](_0x5364('0x1a'),_0x37c224[_0x5364('0xf')],_0x37c224[_0x5364('0x10')],_0x37c224[_0x5364('0x11')],_0x37c224[_0x5364('0x13')]));recordings[_0x37c224[_0x5364('0x10')]][_0x5364('0x5')]=_0x37c224[_0x5364('0x5')];}}catch(_0x3e187d){utils[_0x5364('0x1b')](util[_0x5364('0xd')](_0x5364('0x15'),_0x37c224[_0x5364('0xf')]),_0x3e187d);}};exports[_0x5364('0x1c')]=function(_0x2dd883){try{if(!_[_0x5364('0x16')](_0x2dd883[_0x5364('0x1d')])&&!_[_0x5364('0x16')](_0x2dd883[_0x5364('0x1d')][_0x5364('0x1e')])){utils['debug'](util[_0x5364('0xd')]('[%s][recordings][varset]',_0x2dd883[_0x5364('0xf')]),_0x2dd883);utils[_0x5364('0x3')](util[_0x5364('0xd')](_0x5364('0x1f'),_0x2dd883[_0x5364('0xf')],_0x2dd883[_0x5364('0x1d')],_0x2dd883['value']));if(_[_0x5364('0x20')](_0x2dd883[_0x5364('0x21')],'.wav49')){_0x2dd883[_0x5364('0x21')]=_0x2dd883[_0x5364('0x21')]['replace']('.wav49',_0x5364('0x22'));}if(recordings[_0x2dd883[_0x5364('0x10')]]){var _0x521250=_[_0x5364('0x23')](recordings[_0x2dd883[_0x5364('0x10')]][_0x5364('0x24')],{'value':_0x2dd883[_0x5364('0x21')]});if(_[_0x5364('0x16')](_0x521250)){recordings[_0x2dd883['linkedid']]['monitors']['push']({'value':_0x2dd883[_0x5364('0x21')]});}}}}catch(_0x472734){utils[_0x5364('0x1b')](util['format'](_0x5364('0x25'),_0x2dd883['uniqueid']),_0x472734);}};exports[_0x5364('0x26')]=function(_0x7a90f1){try{if(!_[_0x5364('0x16')](recordings[_0x7a90f1[_0x5364('0xf')]])){utils[_0x5364('0xc')](util[_0x5364('0xd')](_0x5364('0x27'),_0x7a90f1[_0x5364('0xf')]),_0x7a90f1);utils[_0x5364('0x3')](util[_0x5364('0xd')]('[%s][recordings][hangup]\x20calleridnum:%s\x20calleridname:%s\x20reason:%s',_0x7a90f1[_0x5364('0xf')],_0x7a90f1[_0x5364('0x28')],_0x7a90f1[_0x5364('0x29')],_0x7a90f1[_0x5364('0x2a')]));recordings[_0x7a90f1[_0x5364('0xf')]]['calleridnum']=_0x7a90f1['calleridnum'];recordings[_0x7a90f1[_0x5364('0xf')]]['calleridname']=_0x7a90f1[_0x5364('0x29')];recordings[_0x7a90f1[_0x5364('0xf')]]['connectedlinenum']=_0x7a90f1[_0x5364('0x2b')];recordings[_0x7a90f1[_0x5364('0xf')]][_0x5364('0x2c')]=_0x7a90f1['connectedlinename'];if(recordings[_0x7a90f1[_0x5364('0xf')]][_0x5364('0x2d')]==_0x5364('0x2e')&&recordings[_0x7a90f1[_0x5364('0xf')]]['accountcode']){recordings[_0x7a90f1[_0x5364('0xf')]][_0x5364('0x2b')]=recordings[_0x7a90f1[_0x5364('0xf')]][_0x5364('0x5')];recordings[_0x7a90f1['uniqueid']][_0x5364('0x2c')]='';}recordings[_0x7a90f1[_0x5364('0xf')]]['monitors']['forEach'](function(_0x374674){var _0x1687cb=_[_0x5364('0x2f')](recordings[_0x7a90f1[_0x5364('0xf')]]);_0x1687cb[_0x5364('0x21')]=_0x374674[_0x5364('0x21')];writeDB(_0x1687cb);});delete recordings[_0x7a90f1['uniqueid']];}}catch(_0x132d76){utils[_0x5364('0x1b')](util[_0x5364('0xd')](_0x5364('0x27'),_0x7a90f1['uniqueid']),_0x132d76);}};exports[_0x5364('0x30')]=function(_0x56c0be){try{if(!_[_0x5364('0x16')](recordings[_0x56c0be[_0x5364('0xf')]])){utils[_0x5364('0xc')](util['format'](_0x5364('0x31'),_0x56c0be[_0x5364('0xf')]),_0x56c0be);utils[_0x5364('0x3')](util[_0x5364('0xd')](_0x5364('0x32'),_0x56c0be[_0x5364('0xf')],_0x56c0be[_0x5364('0x33')],_0x56c0be[_0x5364('0x34')]));if(_0x56c0be[_0x5364('0x33')][_0x5364('0x35')]()==_0x5364('0x36')&&_[_0x5364('0x37')](_0x56c0be['appdata'][_0x5364('0x35')](),_0x5364('0x38'))){var _0x5d3755=_0x56c0be[_0x5364('0x34')][_0x5364('0x39')]('=');var _0x22b6d8=_0x5d3755[0x0][_0x5364('0x3a')](_0x5d3755[0x0]['lastIndexOf']('(')+0x1,_0x5d3755[0x0][_0x5364('0x3b')](')'));var _0x5d262d=_0x5d3755[0x1];recordings[_0x56c0be['uniqueid']][_0x22b6d8]=_0x5d262d;}}}catch(_0x464a0a){utils['error'](util[_0x5364('0xd')](_0x5364('0x31'),_0x56c0be['uniqueid']),_0x464a0a);}};exports[_0x5364('0x3c')]=function(_0x58976a){try{if(!_[_0x5364('0x16')](recordings[_0x58976a[_0x5364('0xf')]])){utils['debug'](util['format'](_0x5364('0x3d'),_0x58976a[_0x5364('0xf')]),_0x58976a);utils[_0x5364('0x3')](util[_0x5364('0xd')]('[%s][recordings][queuecallerjoin]\x20queue:%s',_0x58976a[_0x5364('0xf')],_0x58976a[_0x5364('0x3e')]));recordings[_0x58976a[_0x5364('0xf')]][_0x5364('0x3e')]=_0x58976a[_0x5364('0x3e')];}}catch(_0x5a7e24){utils['error'](util['format']('[%s][recordings][queuecallerjoin]',_0x58976a[_0x5364('0xf')]),_0x5a7e24);}};
\ No newline at end of file
+var _0x93da=['[%s][recordings][hangup]','[%s][recordings][hangup]\x20calleridnum:%s\x20calleridname:%s\x20reason:%s','calleridnum','calleridname','cause-txt','connectedlinenum','connectedlinename','type','forEach','clone','newexten','[%s][recordings][newexten]','application','toLowerCase','set','startsWith','appdata','substring','lastIndexOf','[%s][recordings][queuecallerjoin]','[%s][recordings][queuecallerjoin]\x20queue:%s','queue','util','info','format','uniqueid','accountcode','getUserByInternal','then','membername','UserId','request','CreateVoiceRecording','debug','[%s][recordings][newchannel]','[%s][recordings][newchannel]\x20context:%s\x20exten:%s','context','channel','error','newstate','[%s][recordings][newstate]','isNil','channelstate','transfer','variable','mixmonitor_filename','[%s][recordings][varset]','value','endsWith','.wav49','replace','.WAV','linkedid','find','monitors','hangup'];(function(_0x101e7b,_0x4ef05b){var _0x4995c0=function(_0x1a6488){while(--_0x1a6488){_0x101e7b['push'](_0x101e7b['shift']());}};_0x4995c0(++_0x4ef05b);}(_0x93da,0xf6));var _0xa93d=function(_0x34e9c8,_0x1d2f14){_0x34e9c8=_0x34e9c8-0x0;var _0x570baa=_0x93da[_0x34e9c8];return _0x570baa;};'use strict';var _=require('lodash');var util=require(_0xa93d('0x0'));var utils=require('./utils');var recordings={};function writeDB(_0x37dea2){utils[_0xa93d('0x1')](util[_0xa93d('0x2')]('[%s][recordings][writeDB]',_0x37dea2[_0xa93d('0x3')]));if(_0x37dea2[_0xa93d('0x4')]){utils[_0xa93d('0x5')](_0x37dea2[_0xa93d('0x4')])[_0xa93d('0x6')](function(_0x559a1b){if(_0x559a1b){_0x37dea2[_0xa93d('0x7')]=_0x559a1b['name'];_0x37dea2[_0xa93d('0x8')]=_0x559a1b['id'];}utils[_0xa93d('0x9')](_0xa93d('0xa'),_0x37dea2);});}else{utils['request'](_0xa93d('0xa'),_0x37dea2);}}exports['newchannel']=function(_0x33cbae){try{utils[_0xa93d('0xb')](util[_0xa93d('0x2')](_0xa93d('0xc'),_0x33cbae[_0xa93d('0x3')]),_0x33cbae);if(_0x33cbae[_0xa93d('0x3')]==_0x33cbae['linkedid']){utils[_0xa93d('0x1')](util['format'](_0xa93d('0xd'),_0x33cbae[_0xa93d('0x3')],_0x33cbae[_0xa93d('0xe')],_0x33cbae['exten']));recordings[_0x33cbae[_0xa93d('0x3')]]={'uniqueid':_0x33cbae[_0xa93d('0x3')],'accountcode':_0x33cbae['accountcode'],'exten':_0x33cbae['exten'],'context':_0x33cbae[_0xa93d('0xe')],'channel':_0x33cbae[_0xa93d('0xf')],'monitors':[]};}}catch(_0x1e9706){utils[_0xa93d('0x10')](util[_0xa93d('0x2')](_0xa93d('0xc'),_0x33cbae[_0xa93d('0x3')]),_0x1e9706);}};exports[_0xa93d('0x11')]=function(_0x68c03b){try{utils['debug'](util[_0xa93d('0x2')](_0xa93d('0x12'),_0x68c03b[_0xa93d('0x3')]),_0x68c03b);if(!_[_0xa93d('0x13')](recordings[_0x68c03b['uniqueid']])&&_0x68c03b[_0xa93d('0x14')]==0x6){utils[_0xa93d('0x1')](util[_0xa93d('0x2')]('[%s][recordings][newstate]\x20context:%s\x20channel:%s',_0x68c03b[_0xa93d('0x3')],_0x68c03b[_0xa93d('0xe')],_0x68c03b['channel']));}else if(!_[_0xa93d('0x13')](recordings[_0x68c03b['linkedid']])&&_0x68c03b['channelstate']==0x6&&_0x68c03b[_0xa93d('0xe')]!=_0xa93d('0x15')){utils[_0xa93d('0x1')](util['format']('[%s][recordings][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s',_0x68c03b[_0xa93d('0x3')],_0x68c03b['linkedid'],_0x68c03b[_0xa93d('0xe')],_0x68c03b[_0xa93d('0xf')]));recordings[_0x68c03b['linkedid']]['accountcode']=_0x68c03b['accountcode'];}}catch(_0x58cb67){utils[_0xa93d('0x10')](util[_0xa93d('0x2')](_0xa93d('0x12'),_0x68c03b[_0xa93d('0x3')]),_0x58cb67);}};exports['varset']=function(_0x1d923d){try{if(!_[_0xa93d('0x13')](_0x1d923d[_0xa93d('0x16')])&&!_[_0xa93d('0x13')](_0x1d923d[_0xa93d('0x16')][_0xa93d('0x17')])){utils['debug'](util[_0xa93d('0x2')](_0xa93d('0x18'),_0x1d923d['uniqueid']),_0x1d923d);utils[_0xa93d('0x1')](util['format']('[%s][recordings][varset]\x20variable:%s\x20value:%s',_0x1d923d['uniqueid'],_0x1d923d[_0xa93d('0x16')],_0x1d923d[_0xa93d('0x19')]));if(_[_0xa93d('0x1a')](_0x1d923d[_0xa93d('0x19')],_0xa93d('0x1b'))){_0x1d923d[_0xa93d('0x19')]=_0x1d923d[_0xa93d('0x19')][_0xa93d('0x1c')](_0xa93d('0x1b'),_0xa93d('0x1d'));}if(recordings[_0x1d923d[_0xa93d('0x1e')]]){var _0x34d219=_[_0xa93d('0x1f')](recordings[_0x1d923d[_0xa93d('0x1e')]]['monitors'],{'value':_0x1d923d[_0xa93d('0x19')]});if(_[_0xa93d('0x13')](_0x34d219)){recordings[_0x1d923d[_0xa93d('0x1e')]][_0xa93d('0x20')]['push']({'value':_0x1d923d['value']});}}}}catch(_0x39bc01){utils['error'](util[_0xa93d('0x2')](_0xa93d('0x18'),_0x1d923d[_0xa93d('0x3')]),_0x39bc01);}};exports[_0xa93d('0x21')]=function(_0x419802){try{if(!_[_0xa93d('0x13')](recordings[_0x419802[_0xa93d('0x3')]])){utils[_0xa93d('0xb')](util[_0xa93d('0x2')](_0xa93d('0x22'),_0x419802['uniqueid']),_0x419802);utils[_0xa93d('0x1')](util['format'](_0xa93d('0x23'),_0x419802[_0xa93d('0x3')],_0x419802[_0xa93d('0x24')],_0x419802[_0xa93d('0x25')],_0x419802[_0xa93d('0x26')]));recordings[_0x419802[_0xa93d('0x3')]]['calleridnum']=_0x419802[_0xa93d('0x24')];recordings[_0x419802[_0xa93d('0x3')]]['calleridname']=_0x419802['calleridname'];recordings[_0x419802['uniqueid']]['connectedlinenum']=_0x419802[_0xa93d('0x27')];recordings[_0x419802['uniqueid']]['connectedlinename']=_0x419802[_0xa93d('0x28')];if(recordings[_0x419802[_0xa93d('0x3')]][_0xa93d('0x29')]=='outbound'&&recordings[_0x419802[_0xa93d('0x3')]][_0xa93d('0x4')]){recordings[_0x419802['uniqueid']][_0xa93d('0x27')]=recordings[_0x419802['uniqueid']][_0xa93d('0x4')];recordings[_0x419802[_0xa93d('0x3')]][_0xa93d('0x28')]='';}recordings[_0x419802[_0xa93d('0x3')]][_0xa93d('0x20')][_0xa93d('0x2a')](function(_0x4b6eae){var _0x16bc8d=_[_0xa93d('0x2b')](recordings[_0x419802['uniqueid']]);_0x16bc8d[_0xa93d('0x19')]=_0x4b6eae[_0xa93d('0x19')];writeDB(_0x16bc8d);});delete recordings[_0x419802['uniqueid']];}}catch(_0x5493a6){utils[_0xa93d('0x10')](util[_0xa93d('0x2')](_0xa93d('0x22'),_0x419802[_0xa93d('0x3')]),_0x5493a6);}};exports[_0xa93d('0x2c')]=function(_0x5b5709){try{if(!_['isNil'](recordings[_0x5b5709['uniqueid']])){utils[_0xa93d('0xb')](util[_0xa93d('0x2')](_0xa93d('0x2d'),_0x5b5709[_0xa93d('0x3')]),_0x5b5709);utils[_0xa93d('0x1')](util[_0xa93d('0x2')]('[%s][recordings][newexten]\x20application:%s\x20appdata:%s',_0x5b5709[_0xa93d('0x3')],_0x5b5709['application'],_0x5b5709['appdata']));if(_0x5b5709[_0xa93d('0x2e')][_0xa93d('0x2f')]()==_0xa93d('0x30')&&_[_0xa93d('0x31')](_0x5b5709[_0xa93d('0x32')]['toLowerCase'](),'cdr')){var _0x2cf819=_0x5b5709[_0xa93d('0x32')]['split']('=');var _0x49c4e7=_0x2cf819[0x0][_0xa93d('0x33')](_0x2cf819[0x0]['lastIndexOf']('(')+0x1,_0x2cf819[0x0][_0xa93d('0x34')](')'));var _0x4d2ac5=_0x2cf819[0x1];recordings[_0x5b5709[_0xa93d('0x3')]][_0x49c4e7]=_0x4d2ac5;}}}catch(_0x5df330){utils['error'](util[_0xa93d('0x2')](_0xa93d('0x2d'),_0x5b5709[_0xa93d('0x3')]),_0x5df330);}};exports['queuecallerjoin']=function(_0x111444){try{if(!_[_0xa93d('0x13')](recordings[_0x111444[_0xa93d('0x3')]])){utils['debug'](util[_0xa93d('0x2')](_0xa93d('0x35'),_0x111444[_0xa93d('0x3')]),_0x111444);utils['info'](util[_0xa93d('0x2')](_0xa93d('0x36'),_0x111444[_0xa93d('0x3')],_0x111444[_0xa93d('0x37')]));recordings[_0x111444[_0xa93d('0x3')]][_0xa93d('0x37')]=_0x111444['queue'];}}catch(_0x2532db){utils['error'](util[_0xa93d('0x2')](_0xa93d('0x35'),_0x111444[_0xa93d('0x3')]),_0x2532db);}};
\ No newline at end of file
index bc222d3..5f66b66 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3709=['blind','transfereruniqueid','error','origtransfereruniqueid','origtransferercalleridnum','origtransferercalleridname','transfertargetcalleridname','assign','origtransfererchannel','secondtransfererconnectedlinenum','secondtransfererconnectedlinename','origtransfereraccountcode','secondtransferercontext','origtransfererlinkedid','origtransferercontext','attended','isNil','transfereechannel','transfertargetcalleridnum','transfertargetconnectedlinenum','transfertargetcontext','transfertargetlinkedid','[%s][transfers][attendedtransfer]','lodash','util','./utils','format','[%s][transfers][writeDB]\x20type:%s','type','uniqueid','request','CreateVoiceTransferReport','blinds','blindtransfer','debug','[%s][transfers][blindtransfer]','info','[%s][transfers][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transferercalleridnum','transfereecalleridnum','transfereecalleridname'];(function(_0x48e411,_0x4f2e52){var _0x402594=function(_0x5ee087){while(--_0x5ee087){_0x48e411['push'](_0x48e411['shift']());}};_0x402594(++_0x4f2e52);}(_0x3709,0x15f));var _0x9370=function(_0x37bd26,_0x5ad346){_0x37bd26=_0x37bd26-0x0;var _0xe83dc4=_0x3709[_0x37bd26];return _0xe83dc4;};'use strict';var _=require(_0x9370('0x0'));var util=require(_0x9370('0x1'));var utils=require(_0x9370('0x2'));function writeDB(_0x1616bb){utils['info'](util[_0x9370('0x3')](_0x9370('0x4'),_0x1616bb[_0x9370('0x5')]==='attended'?_0x1616bb['origtransfereruniqueid']:_0x1616bb[_0x9370('0x6')],_0x1616bb[_0x9370('0x5')]));utils[_0x9370('0x7')](_0x9370('0x8'),_0x1616bb);}exports[_0x9370('0x9')]={};exports[_0x9370('0xa')]=function(_0x5cdaa2){try{utils[_0x9370('0xb')](util[_0x9370('0x3')](_0x9370('0xc'),_0x5cdaa2['uniqueid']),_0x5cdaa2);utils[_0x9370('0xd')](util[_0x9370('0x3')](_0x9370('0xe'),_0x5cdaa2[_0x9370('0x6')],_0x5cdaa2[_0x9370('0xf')],_0x5cdaa2['transferercalleridname'],_0x5cdaa2[_0x9370('0x10')],_0x5cdaa2[_0x9370('0x11')]));_0x5cdaa2['type']=_0x9370('0x12');exports[_0x9370('0x9')][_0x5cdaa2[_0x9370('0x13')]]=_0x5cdaa2;writeDB(_0x5cdaa2);}catch(_0x9b67b){utils[_0x9370('0x14')](util['format'](_0x9370('0xc'),_0x5cdaa2[_0x9370('0x6')]),_0x9b67b);}};exports['attendedtransfer']=function(_0x386dd7){try{utils[_0x9370('0xb')](util[_0x9370('0x3')]('[%s][transfers][attendedtransfer]',_0x386dd7[_0x9370('0x15')]),_0x386dd7);utils['info'](util['format']('[%s][transfers][attendedtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s',_0x386dd7['origtransfereruniqueid'],_0x386dd7[_0x9370('0x16')],_0x386dd7[_0x9370('0x17')],_0x386dd7['transfertargetcalleridnum'],_0x386dd7[_0x9370('0x18')]));_0x386dd7=_[_0x9370('0x19')](_0x386dd7,{'transfererchannel':_0x386dd7[_0x9370('0x1a')],'transferercalleridnum':_0x386dd7[_0x9370('0x16')],'transferercalleridname':_0x386dd7[_0x9370('0x17')],'transfererconnectedlinenum':_0x386dd7[_0x9370('0x1b')],'transfererconnectedlinename':_0x386dd7[_0x9370('0x1c')],'transfereraccountcode':_0x386dd7[_0x9370('0x1d')],'transferercontext':_0x386dd7[_0x9370('0x1e')],'transfererexten':_0x386dd7['secondtransfererexten'],'transfererlinkedid':_0x386dd7[_0x9370('0x1f')],'context':_0x386dd7[_0x9370('0x20')],'extension':_0x386dd7['origtransfererexten'],'type':_0x9370('0x21')});if(_[_0x9370('0x22')](_0x386dd7[_0x9370('0x23')])){_0x386dd7=_[_0x9370('0x19')](_0x386dd7,{'transfereechannel':_0x386dd7['transfertargetchannel'],'transfereecalleridnum':_0x386dd7[_0x9370('0x24')],'transfereecalleridname':_0x386dd7[_0x9370('0x18')],'transfereeconnectedlinenum':_0x386dd7[_0x9370('0x25')],'transfereeconnectedlinename':_0x386dd7['transfertargetconnectedlinename'],'transfereeaccountcode':_0x386dd7['transfertargetaccountcode'],'transfereecontext':_0x386dd7[_0x9370('0x26')],'transfereeexten':_0x386dd7['transfertargetexten'],'transfereelinkedid':_0x386dd7[_0x9370('0x27')]});}writeDB(_0x386dd7);}catch(_0x3b8053){utils[_0x9370('0x14')](util[_0x9370('0x3')](_0x9370('0x28'),_0x386dd7['origtransfereruniqueid']),_0x3b8053);}};
\ No newline at end of file
+var _0x6166=['isNil','transfereechannel','transfertargetchannel','transfertargetconnectedlinenum','transfertargetaccountcode','transfertargetcontext','transfertargetexten','transfertargetlinkedid','error','lodash','./utils','info','format','type','attended','uniqueid','request','CreateVoiceTransferReport','blinds','blindtransfer','debug','[%s][transfers][blindtransfer]','[%s][transfers][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transferercalleridname','transfereecalleridnum','transfereecalleridname','blind','transfereruniqueid','attendedtransfer','[%s][transfers][attendedtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','origtransfereruniqueid','origtransferercalleridnum','origtransferercalleridname','transfertargetcalleridnum','transfertargetcalleridname','assign','origtransfererchannel','secondtransfererconnectedlinenum','origtransfereraccountcode','secondtransferercontext','secondtransfererexten','origtransfererlinkedid','origtransferercontext','origtransfererexten'];(function(_0x29cd0e,_0x5203fe){var _0x280ff2=function(_0x591922){while(--_0x591922){_0x29cd0e['push'](_0x29cd0e['shift']());}};_0x280ff2(++_0x5203fe);}(_0x6166,0x111));var _0x6616=function(_0x599e60,_0x5b6519){_0x599e60=_0x599e60-0x0;var _0x468e19=_0x6166[_0x599e60];return _0x468e19;};'use strict';var _=require(_0x6616('0x0'));var util=require('util');var utils=require(_0x6616('0x1'));function writeDB(_0xa37a50){utils[_0x6616('0x2')](util[_0x6616('0x3')]('[%s][transfers][writeDB]\x20type:%s',_0xa37a50[_0x6616('0x4')]===_0x6616('0x5')?_0xa37a50['origtransfereruniqueid']:_0xa37a50[_0x6616('0x6')],_0xa37a50[_0x6616('0x4')]));utils[_0x6616('0x7')](_0x6616('0x8'),_0xa37a50);}exports[_0x6616('0x9')]={};exports[_0x6616('0xa')]=function(_0x4ff1ad){try{utils[_0x6616('0xb')](util[_0x6616('0x3')](_0x6616('0xc'),_0x4ff1ad['uniqueid']),_0x4ff1ad);utils[_0x6616('0x2')](util[_0x6616('0x3')](_0x6616('0xd'),_0x4ff1ad['uniqueid'],_0x4ff1ad['transferercalleridnum'],_0x4ff1ad[_0x6616('0xe')],_0x4ff1ad[_0x6616('0xf')],_0x4ff1ad[_0x6616('0x10')]));_0x4ff1ad[_0x6616('0x4')]=_0x6616('0x11');exports[_0x6616('0x9')][_0x4ff1ad[_0x6616('0x12')]]=_0x4ff1ad;writeDB(_0x4ff1ad);}catch(_0x4e3822){utils['error'](util[_0x6616('0x3')]('[%s][transfers][blindtransfer]',_0x4ff1ad['uniqueid']),_0x4e3822);}};exports[_0x6616('0x13')]=function(_0xfbe64f){try{utils[_0x6616('0xb')](util[_0x6616('0x3')]('[%s][transfers][attendedtransfer]',_0xfbe64f['origtransfereruniqueid']),_0xfbe64f);utils[_0x6616('0x2')](util[_0x6616('0x3')](_0x6616('0x14'),_0xfbe64f[_0x6616('0x15')],_0xfbe64f[_0x6616('0x16')],_0xfbe64f[_0x6616('0x17')],_0xfbe64f[_0x6616('0x18')],_0xfbe64f[_0x6616('0x19')]));_0xfbe64f=_[_0x6616('0x1a')](_0xfbe64f,{'transfererchannel':_0xfbe64f[_0x6616('0x1b')],'transferercalleridnum':_0xfbe64f[_0x6616('0x16')],'transferercalleridname':_0xfbe64f[_0x6616('0x17')],'transfererconnectedlinenum':_0xfbe64f[_0x6616('0x1c')],'transfererconnectedlinename':_0xfbe64f['secondtransfererconnectedlinename'],'transfereraccountcode':_0xfbe64f[_0x6616('0x1d')],'transferercontext':_0xfbe64f[_0x6616('0x1e')],'transfererexten':_0xfbe64f[_0x6616('0x1f')],'transfererlinkedid':_0xfbe64f[_0x6616('0x20')],'context':_0xfbe64f[_0x6616('0x21')],'extension':_0xfbe64f[_0x6616('0x22')],'type':_0x6616('0x5')});if(_[_0x6616('0x23')](_0xfbe64f[_0x6616('0x24')])){_0xfbe64f=_[_0x6616('0x1a')](_0xfbe64f,{'transfereechannel':_0xfbe64f[_0x6616('0x25')],'transfereecalleridnum':_0xfbe64f[_0x6616('0x18')],'transfereecalleridname':_0xfbe64f[_0x6616('0x19')],'transfereeconnectedlinenum':_0xfbe64f[_0x6616('0x26')],'transfereeconnectedlinename':_0xfbe64f['transfertargetconnectedlinename'],'transfereeaccountcode':_0xfbe64f[_0x6616('0x27')],'transfereecontext':_0xfbe64f[_0x6616('0x28')],'transfereeexten':_0xfbe64f[_0x6616('0x29')],'transfereelinkedid':_0xfbe64f[_0x6616('0x2a')]});}writeDB(_0xfbe64f);}catch(_0x4c0ec0){utils[_0x6616('0x2b')](util[_0x6616('0x3')]('[%s][transfers][attendedtransfer]',_0xfbe64f[_0x6616('0x15')]),_0x4c0ec0);}};
\ No newline at end of file
index be4de44..55c9682 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf7ee=['error','request','then','[utils][request]\x20name:%s','catch','internal','name','interface','[utils][getUser]\x20where:%s','stringify','result','length','getUserByInternal','found','notfound','[utils][getUserByInternal]','getUserByInterface','[utils][getUserByInterface]\x20interface:%s\x20%s','[utils][getUserByInterface]','getUserByName','[utils][getUserByName]\x20name:%s\x20%s','getVoiceQueueByName','type','acw','acwTimeout','[utils][getVoiceQueueByName]\x20name:%s','[utils][getVoiceQueueByName]\x20name:%s\x20%s','add','YYYY-MM-DD\x20HH:mm:ss','seconds','diffTime','diff','sumTime','now','format','isAfter','isBefore','bluebird','moment','util','client','http','../../config/logger','xdr','info','inspect','debug'];(function(_0x3be0c4,_0x5b7eff){var _0x11af9f=function(_0x3f5113){while(--_0x3f5113){_0x3be0c4['push'](_0x3be0c4['shift']());}};_0x11af9f(++_0x5b7eff);}(_0xf7ee,0x83));var _0xef7e=function(_0x497f4b,_0x1870ec){_0x497f4b=_0x497f4b-0x0;var _0x55314e=_0xf7ee[_0x497f4b];return _0x55314e;};'use strict';var BPromise=require(_0xef7e('0x0'));var jayson=require('jayson/promise');var moment=require(_0xef7e('0x1'));var util=require(_0xef7e('0x2'));var client=jayson[_0xef7e('0x3')][_0xef7e('0x4')]({'port':0x2329});var logger=require(_0xef7e('0x5'))(_0xef7e('0x6'));exports[_0xef7e('0x7')]=function(_0x5e4e8f,_0x4d06a4){logger[_0xef7e('0x7')](_0x5e4e8f,_0x4d06a4?util[_0xef7e('0x8')](_0x4d06a4,{'showHidden':![],'depth':null}):'');};exports[_0xef7e('0x9')]=function(_0x48d2ce,_0x142dbe){logger['debug'](_0x48d2ce,_0x142dbe?util['inspect'](_0x142dbe,{'showHidden':![],'depth':null}):'');};exports[_0xef7e('0xa')]=function(_0x583c28,_0x213ae2){logger[_0xef7e('0xa')](_0x583c28,_0x213ae2?util['inspect'](_0x213ae2,{'showHidden':![],'depth':null}):'');};exports[_0xef7e('0xb')]=function(_0x66fb16,_0x5b3a29){return client['request'](_0x66fb16,{'body':_0x5b3a29})[_0xef7e('0xc')](function(_0x49b26){logger['debug'](_0xef7e('0xd'),_0x66fb16,_0x49b26?util[_0xef7e('0x8')](_0x49b26,{'showHidden':![],'depth':null}):'');})[_0xef7e('0xe')](function(_0x42fc3b){logger[_0xef7e('0xa')](_0xef7e('0xd'),_0x66fb16,_0x42fc3b?util['inspect'](_0x42fc3b,{'showHidden':![],'depth':null}):'');});};function getUser(_0x362398){return client[_0xef7e('0xb')]('GetUser',{'options':{'raw':!![],'attributes':['id',_0xef7e('0xf'),_0xef7e('0x10'),_0xef7e('0x11')],'where':_0x362398,'limit':0x1}})[_0xef7e('0xc')](function(_0x5a7e3e){logger[_0xef7e('0x9')](_0xef7e('0x12'),JSON[_0xef7e('0x13')](_0x362398),_0x5a7e3e?util['inspect'](_0x5a7e3e,{'showHidden':![],'depth':null}):'');return _0x5a7e3e[_0xef7e('0x14')][_0xef7e('0x15')]?_0x5a7e3e['result'][0x0]:null;});}exports[_0xef7e('0x16')]=function(_0x1a15e3){return new BPromise(function(_0x8db1cd,_0x3c9d37){if(_0x1a15e3){return getUser({'internal':_0x1a15e3})[_0xef7e('0xc')](function(_0x114e5d){logger[_0xef7e('0x7')]('[utils][getUserByInternal]\x20internal:%s\x20%s',_0x1a15e3,_0x114e5d?_0xef7e('0x17'):_0xef7e('0x18'));return _0x8db1cd(_0x114e5d);})[_0xef7e('0xe')](function(_0x136d6d){logger['error'](_0xef7e('0x19'),_0x136d6d?util[_0xef7e('0x8')](_0x136d6d,{'showHidden':![],'depth':null}):'');return _0x8db1cd(null);});}return _0x8db1cd(null);});};exports[_0xef7e('0x1a')]=function(_0x27a0a8){return new BPromise(function(_0xc8efc8,_0x31aa0b){if(_0x27a0a8){return getUser({'interface':_0x27a0a8})['then'](function(_0x40c9ff){logger[_0xef7e('0x7')](_0xef7e('0x1b'),_0x27a0a8,_0x40c9ff?_0xef7e('0x17'):_0xef7e('0x18'));return _0xc8efc8(_0x40c9ff);})[_0xef7e('0xe')](function(_0x222f51){logger[_0xef7e('0xa')](_0xef7e('0x1c'),_0x222f51?util[_0xef7e('0x8')](_0x222f51,{'showHidden':![],'depth':null}):'');return _0xc8efc8(null);});}return _0xc8efc8(null);});};exports[_0xef7e('0x1d')]=function(_0x5380c0){return new BPromise(function(_0x54e3a3,_0x264d0b){if(_0x5380c0){return getUser({'name':_0x5380c0})[_0xef7e('0xc')](function(_0x3c92a5){logger['info'](_0xef7e('0x1e'),_0x5380c0,_0x3c92a5?_0xef7e('0x17'):_0xef7e('0x18'));return _0x54e3a3(_0x3c92a5);})[_0xef7e('0xe')](function(_0x464976){logger['error']('[utils][getUserByName]',_0x464976?util[_0xef7e('0x8')](_0x464976,{'showHidden':![],'depth':null}):'');return _0x54e3a3(null);});}return _0x54e3a3(null);});};exports[_0xef7e('0x1f')]=function(_0x1f928f){return new BPromise(function(_0x5ebece,_0x303889){if(_0x1f928f){return client[_0xef7e('0xb')]('GetVoiceQueue',{'options':{'raw':!![],'attributes':['id','name',_0xef7e('0x20'),_0xef7e('0x21'),_0xef7e('0x22')],'where':{'name':_0x1f928f},'limit':0x1}})[_0xef7e('0xc')](function(_0x5ede28){logger[_0xef7e('0x9')](_0xef7e('0x23'),_0x1f928f,_0x5ede28?util['inspect'](_0x5ede28,{'showHidden':![],'depth':null}):'');logger[_0xef7e('0x7')](_0xef7e('0x24'),_0x1f928f,_0x5ede28?_0xef7e('0x17'):_0xef7e('0x18'));return _0x5ebece(_0x5ede28[_0xef7e('0x14')][_0xef7e('0x15')]?_0x5ede28[_0xef7e('0x14')][0x0]:null);})[_0xef7e('0xe')](function(_0x1e5855){logger[_0xef7e('0xa')]('[utils][getVoiceQueueByName]',_0x1e5855?util[_0xef7e('0x8')](_0x1e5855,{'showHidden':![],'depth':null}):'');return _0x5ebece(null);});}return _0x5ebece(null);});};exports['addTime']=function(_0x2e8648,_0x5e893a){return moment(_0x2e8648)[_0xef7e('0x25')](_0x5e893a,'seconds')['format'](_0xef7e('0x26'));};exports['subtractTime']=function(_0x44c20b,_0x509f0a){return moment(_0x44c20b)['subtract'](_0x509f0a,_0xef7e('0x27'))['format']('YYYY-MM-DD\x20HH:mm:ss');};exports[_0xef7e('0x28')]=function(_0x5763ba,_0xbab8de){return moment(_0x5763ba)[_0xef7e('0x29')](moment(_0xbab8de),_0xef7e('0x27'));};exports[_0xef7e('0x2a')]=function(_0x3d99a0,_0x582607){return parseInt(_0x3d99a0,0xa)+parseInt(_0x582607,0xa);};exports[_0xef7e('0x2b')]=function(){return moment()[_0xef7e('0x2c')]('YYYY-MM-DD\x20HH:mm:ss');};exports[_0xef7e('0x2d')]=function(_0x28e572,_0x25990a){if(_0x25990a){return moment(_0x28e572)[_0xef7e('0x2d')](_0x25990a);}return!![];};exports[_0xef7e('0x2e')]=function(_0x76b983,_0x2d2427){if(_0x2d2427){return moment(_0x76b983)[_0xef7e('0x2e')](_0x2d2427);}else if(_0x76b983){return!![];}return![];};
\ No newline at end of file
+var _0x22dd=['[utils][getUserByInternal]','[utils][getUserByInterface]','getUserByName','GetVoiceQueue','type','acwTimeout','[utils][getVoiceQueueByName]\x20name:%s','[utils][getVoiceQueueByName]\x20name:%s\x20%s','[utils][getVoiceQueueByName]','addTime','seconds','format','YYYY-MM-DD\x20HH:mm:ss','subtractTime','subtract','diff','sumTime','now','isAfter','isBefore','bluebird','jayson/promise','moment','util','client','../../config/logger','info','inspect','error','request','then','debug','[utils][request]\x20name:%s','catch','internal','name','interface','[utils][getUser]\x20where:%s','result','length','getUserByInternal','[utils][getUserByInternal]\x20internal:%s\x20%s','found','notfound'];(function(_0x326f02,_0x4e47ce){var _0x14cde5=function(_0x562e71){while(--_0x562e71){_0x326f02['push'](_0x326f02['shift']());}};_0x14cde5(++_0x4e47ce);}(_0x22dd,0x98));var _0xd22d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x22dd[_0x3dd15e];return _0x231fd0;};'use strict';var BPromise=require(_0xd22d('0x0'));var jayson=require(_0xd22d('0x1'));var moment=require(_0xd22d('0x2'));var util=require(_0xd22d('0x3'));var client=jayson[_0xd22d('0x4')]['http']({'port':0x2329});var logger=require(_0xd22d('0x5'))('xdr');exports[_0xd22d('0x6')]=function(_0x1b38af,_0x3d6c6f){logger['info'](_0x1b38af,_0x3d6c6f?util['inspect'](_0x3d6c6f,{'showHidden':![],'depth':null}):'');};exports['debug']=function(_0x158b68,_0xdc40fb){logger['debug'](_0x158b68,_0xdc40fb?util[_0xd22d('0x7')](_0xdc40fb,{'showHidden':![],'depth':null}):'');};exports[_0xd22d('0x8')]=function(_0xd6c64b,_0x1bcf34){logger[_0xd22d('0x8')](_0xd6c64b,_0x1bcf34?util['inspect'](_0x1bcf34,{'showHidden':![],'depth':null}):'');};exports[_0xd22d('0x9')]=function(_0x58ccaf,_0x45dd73){return client[_0xd22d('0x9')](_0x58ccaf,{'body':_0x45dd73})[_0xd22d('0xa')](function(_0x1e68fd){logger[_0xd22d('0xb')](_0xd22d('0xc'),_0x58ccaf,_0x1e68fd?util[_0xd22d('0x7')](_0x1e68fd,{'showHidden':![],'depth':null}):'');})[_0xd22d('0xd')](function(_0x5cc7aa){logger[_0xd22d('0x8')](_0xd22d('0xc'),_0x58ccaf,_0x5cc7aa?util[_0xd22d('0x7')](_0x5cc7aa,{'showHidden':![],'depth':null}):'');});};function getUser(_0x46b9a2){return client[_0xd22d('0x9')]('GetUser',{'options':{'raw':!![],'attributes':['id',_0xd22d('0xe'),_0xd22d('0xf'),_0xd22d('0x10')],'where':_0x46b9a2,'limit':0x1}})[_0xd22d('0xa')](function(_0x944593){logger[_0xd22d('0xb')](_0xd22d('0x11'),JSON['stringify'](_0x46b9a2),_0x944593?util['inspect'](_0x944593,{'showHidden':![],'depth':null}):'');return _0x944593[_0xd22d('0x12')][_0xd22d('0x13')]?_0x944593[_0xd22d('0x12')][0x0]:null;});}exports[_0xd22d('0x14')]=function(_0x9d5923){return new BPromise(function(_0x5319b0,_0x38af0f){if(_0x9d5923){return getUser({'internal':_0x9d5923})[_0xd22d('0xa')](function(_0x57de77){logger[_0xd22d('0x6')](_0xd22d('0x15'),_0x9d5923,_0x57de77?_0xd22d('0x16'):_0xd22d('0x17'));return _0x5319b0(_0x57de77);})[_0xd22d('0xd')](function(_0x518243){logger[_0xd22d('0x8')](_0xd22d('0x18'),_0x518243?util[_0xd22d('0x7')](_0x518243,{'showHidden':![],'depth':null}):'');return _0x5319b0(null);});}return _0x5319b0(null);});};exports['getUserByInterface']=function(_0x39c84c){return new BPromise(function(_0x3c2972,_0x43ebff){if(_0x39c84c){return getUser({'interface':_0x39c84c})[_0xd22d('0xa')](function(_0x441181){logger[_0xd22d('0x6')]('[utils][getUserByInterface]\x20interface:%s\x20%s',_0x39c84c,_0x441181?'found':'notfound');return _0x3c2972(_0x441181);})[_0xd22d('0xd')](function(_0x2037c7){logger[_0xd22d('0x8')](_0xd22d('0x19'),_0x2037c7?util['inspect'](_0x2037c7,{'showHidden':![],'depth':null}):'');return _0x3c2972(null);});}return _0x3c2972(null);});};exports[_0xd22d('0x1a')]=function(_0x3820d2){return new BPromise(function(_0x5e8234,_0x47206f){if(_0x3820d2){return getUser({'name':_0x3820d2})[_0xd22d('0xa')](function(_0x28e5da){logger[_0xd22d('0x6')]('[utils][getUserByName]\x20name:%s\x20%s',_0x3820d2,_0x28e5da?_0xd22d('0x16'):'notfound');return _0x5e8234(_0x28e5da);})[_0xd22d('0xd')](function(_0x28bafa){logger[_0xd22d('0x8')]('[utils][getUserByName]',_0x28bafa?util[_0xd22d('0x7')](_0x28bafa,{'showHidden':![],'depth':null}):'');return _0x5e8234(null);});}return _0x5e8234(null);});};exports['getVoiceQueueByName']=function(_0x3fcbfc){return new BPromise(function(_0x384977,_0x126784){if(_0x3fcbfc){return client[_0xd22d('0x9')](_0xd22d('0x1b'),{'options':{'raw':!![],'attributes':['id',_0xd22d('0xf'),_0xd22d('0x1c'),'acw',_0xd22d('0x1d')],'where':{'name':_0x3fcbfc},'limit':0x1}})[_0xd22d('0xa')](function(_0x4e4d43){logger[_0xd22d('0xb')](_0xd22d('0x1e'),_0x3fcbfc,_0x4e4d43?util[_0xd22d('0x7')](_0x4e4d43,{'showHidden':![],'depth':null}):'');logger[_0xd22d('0x6')](_0xd22d('0x1f'),_0x3fcbfc,_0x4e4d43?'found':_0xd22d('0x17'));return _0x384977(_0x4e4d43[_0xd22d('0x12')][_0xd22d('0x13')]?_0x4e4d43[_0xd22d('0x12')][0x0]:null);})[_0xd22d('0xd')](function(_0x2bfc5c){logger[_0xd22d('0x8')](_0xd22d('0x20'),_0x2bfc5c?util[_0xd22d('0x7')](_0x2bfc5c,{'showHidden':![],'depth':null}):'');return _0x384977(null);});}return _0x384977(null);});};exports[_0xd22d('0x21')]=function(_0x28f47f,_0x1da09b){return moment(_0x28f47f)['add'](_0x1da09b,_0xd22d('0x22'))[_0xd22d('0x23')](_0xd22d('0x24'));};exports[_0xd22d('0x25')]=function(_0xdbefda,_0x7c2926){return moment(_0xdbefda)[_0xd22d('0x26')](_0x7c2926,'seconds')['format'](_0xd22d('0x24'));};exports['diffTime']=function(_0x50da78,_0x519fbf){return moment(_0x50da78)[_0xd22d('0x27')](moment(_0x519fbf),_0xd22d('0x22'));};exports[_0xd22d('0x28')]=function(_0x5583b9,_0x19b95e){return parseInt(_0x5583b9,0xa)+parseInt(_0x19b95e,0xa);};exports[_0xd22d('0x29')]=function(){return moment()[_0xd22d('0x23')](_0xd22d('0x24'));};exports[_0xd22d('0x2a')]=function(_0x12e6ab,_0x50d779){if(_0x50d779){return moment(_0x12e6ab)[_0xd22d('0x2a')](_0x50d779);}return!![];};exports[_0xd22d('0x2b')]=function(_0x126110,_0x533bbb){if(_0x533bbb){return moment(_0x126110)['isBefore'](_0x533bbb);}else if(_0x126110){return!![];}return![];};
\ No newline at end of file